From 84895302fd919be4fb87e5ab67f7268a4c6189a9 Mon Sep 17 00:00:00 2001 From: Ren Juan Date: Sat, 12 Oct 2024 09:38:51 +0000 Subject: [PATCH] create repo --- etc/wyatt8740/ABOUT-NLS | 1 + etc/wyatt8740/AUTHORS | 0 etc/wyatt8740/COMPILE_NOTES.txt | 2 + etc/wyatt8740/COPYING | 340 + etc/wyatt8740/ChangeLog | 2238 ++ etc/wyatt8740/HACKING | 51 + etc/wyatt8740/INSTALL | 49 + etc/wyatt8740/INSTALL.w32 | 117 + etc/wyatt8740/Makefile.am | 15 + etc/wyatt8740/Makefile.in | 966 + etc/wyatt8740/NEWS | 0 etc/wyatt8740/README | 133 + etc/wyatt8740/acinclude.m4 | 40 + etc/wyatt8740/aclocal.m4 | 14330 ++++++++++ etc/wyatt8740/autogen.sh | 112 + etc/wyatt8740/config.guess | 1501 ++ etc/wyatt8740/config.h.in | 182 + etc/wyatt8740/config.h.w32 | 12 + etc/wyatt8740/config.log | 360 + etc/wyatt8740/config.rpath | 684 + etc/wyatt8740/config.sub | 1705 ++ etc/wyatt8740/configure | 21583 +++++++++++++++ etc/wyatt8740/configure.ac | 829 + etc/wyatt8740/faq.html | 537 + etc/wyatt8740/install-sh | 520 + etc/wyatt8740/intl/ChangeLog | 4 + etc/wyatt8740/intl/Makefile.in | 590 + etc/wyatt8740/intl/VERSION | 1 + etc/wyatt8740/intl/bindtextdom.c | 340 + etc/wyatt8740/intl/config.charset | 640 + etc/wyatt8740/intl/dcgettext.c | 56 + etc/wyatt8740/intl/dcigettext.c | 1689 ++ etc/wyatt8740/intl/dcngettext.c | 57 + etc/wyatt8740/intl/dgettext.c | 58 + etc/wyatt8740/intl/dngettext.c | 59 + etc/wyatt8740/intl/eval-plural.h | 108 + etc/wyatt8740/intl/explodename.c | 135 + etc/wyatt8740/intl/export.h | 6 + etc/wyatt8740/intl/finddomain.c | 212 + etc/wyatt8740/intl/gettext.c | 63 + etc/wyatt8740/intl/gettextP.h | 297 + etc/wyatt8740/intl/gmo.h | 152 + etc/wyatt8740/intl/hash-string.c | 51 + etc/wyatt8740/intl/hash-string.h | 36 + etc/wyatt8740/intl/intl-compat.c | 133 + etc/wyatt8740/intl/intl-exports.c | 36 + etc/wyatt8740/intl/l10nflist.c | 400 + etc/wyatt8740/intl/langprefs.c | 130 + etc/wyatt8740/intl/libgnuintl.h.in | 419 + etc/wyatt8740/intl/libintl.rc | 38 + etc/wyatt8740/intl/loadinfo.h | 132 + etc/wyatt8740/intl/loadmsgcat.c | 1336 + etc/wyatt8740/intl/localcharset.c | 461 + etc/wyatt8740/intl/localcharset.h | 42 + etc/wyatt8740/intl/locale.alias | 77 + etc/wyatt8740/intl/localealias.c | 439 + etc/wyatt8740/intl/localename.c | 1507 ++ etc/wyatt8740/intl/lock.c | 922 + etc/wyatt8740/intl/lock.h | 1105 + etc/wyatt8740/intl/log.c | 116 + etc/wyatt8740/intl/ngettext.c | 65 + etc/wyatt8740/intl/os2compat.c | 98 + etc/wyatt8740/intl/os2compat.h | 46 + etc/wyatt8740/intl/osdep.c | 26 + etc/wyatt8740/intl/plural-exp.c | 155 + etc/wyatt8740/intl/plural-exp.h | 129 + etc/wyatt8740/intl/plural.c | 1961 ++ etc/wyatt8740/intl/plural.y | 385 + etc/wyatt8740/intl/printf-args.c | 188 + etc/wyatt8740/intl/printf-args.h | 155 + etc/wyatt8740/intl/printf-parse.c | 590 + etc/wyatt8740/intl/printf-parse.h | 75 + etc/wyatt8740/intl/printf.c | 427 + etc/wyatt8740/intl/ref-add.sin | 31 + etc/wyatt8740/intl/ref-del.sin | 26 + etc/wyatt8740/intl/relocatable.c | 468 + etc/wyatt8740/intl/relocatable.h | 79 + etc/wyatt8740/intl/textdomain.c | 127 + etc/wyatt8740/intl/tsearch.c | 684 + etc/wyatt8740/intl/tsearch.h | 83 + etc/wyatt8740/intl/vasnprintf.c | 4677 ++++ etc/wyatt8740/intl/vasnprintf.h | 78 + etc/wyatt8740/intl/vasnwprintf.h | 46 + etc/wyatt8740/intl/version.c | 26 + etc/wyatt8740/intl/wprintf-parse.h | 75 + etc/wyatt8740/intl/xsize.h | 109 + etc/wyatt8740/plugins/Make.plugin | 38 + etc/wyatt8740/plugins/Makefile.am | 21 + etc/wyatt8740/plugins/Makefile.in | 694 + etc/wyatt8740/plugins/perl/IRC.pm | 256 + etc/wyatt8740/plugins/perl/Makefile.am | 15 + etc/wyatt8740/plugins/perl/Makefile.in | 730 + etc/wyatt8740/plugins/perl/Pod/Pod/Html.pm | 2364 ++ etc/wyatt8740/plugins/perl/Xchat.pm | 963 + etc/wyatt8740/plugins/perl/alt_completion.pl | 463 + etc/wyatt8740/plugins/perl/generate_header | 36 + etc/wyatt8740/plugins/perl/perl.c | 1518 ++ etc/wyatt8740/plugins/perl/xchat2-perl.html | 958 + .../plugins/perl/xchat2-perldocs.html | 475 + etc/wyatt8740/plugins/plugin-conf.in | 20 + etc/wyatt8740/plugins/plugin20.html | 999 + etc/wyatt8740/plugins/python/Makefile.am | 10 + etc/wyatt8740/plugins/python/Makefile.in | 719 + etc/wyatt8740/plugins/python/python.c | 2242 ++ etc/wyatt8740/plugins/tcl/Makefile.am | 10 + etc/wyatt8740/plugins/tcl/Makefile.in | 719 + etc/wyatt8740/plugins/tcl/README | 55 + etc/wyatt8740/plugins/tcl/printevents.h | 319 + etc/wyatt8740/plugins/tcl/tclplugin.c | 2290 ++ etc/wyatt8740/plugins/tcl/tclplugin.h | 98 + etc/wyatt8740/plugins/xchat-plugin.h | 334 + etc/wyatt8740/plugins/xdcc/Makefile.am | 7 + etc/wyatt8740/plugins/xdcc/xdcc.c | 327 + etc/wyatt8740/plugins_extra/README.md | 5 + etc/wyatt8740/plugins_extra/cap_sasl_xchat.pl | 472 + etc/wyatt8740/plugins_extra/cap_sasl_xchat.py | 162 + .../plugins_extra/cap_sasl_xchat_old.pl | 431 + etc/wyatt8740/po/Makefile.in | 510 + etc/wyatt8740/po/Makefile.in.in | 510 + etc/wyatt8740/po/Makevars | 23 + etc/wyatt8740/po/POTFILES.in | 37 + etc/wyatt8740/po/be.po | 5682 ++++ etc/wyatt8740/po/ca.po | 7053 +++++ etc/wyatt8740/po/cs.po | 5845 +++++ etc/wyatt8740/po/de.po | 5686 ++++ etc/wyatt8740/po/el.po | 5920 +++++ etc/wyatt8740/po/es.po | 5946 +++++ etc/wyatt8740/po/fi.po | 5699 ++++ etc/wyatt8740/po/fr.po | 6098 +++++ etc/wyatt8740/po/gl.po | 5701 ++++ etc/wyatt8740/po/hu.po | 5706 ++++ etc/wyatt8740/po/it.po | 5886 +++++ etc/wyatt8740/po/ja.po | 7118 +++++ etc/wyatt8740/po/kn.po | 5542 ++++ etc/wyatt8740/po/ko.po | 5636 ++++ etc/wyatt8740/po/lt.po | 6566 +++++ etc/wyatt8740/po/mk.po | 5659 ++++ etc/wyatt8740/po/nl.po | 6058 +++++ etc/wyatt8740/po/pa.po | 5646 ++++ etc/wyatt8740/po/pl.po | 5901 +++++ etc/wyatt8740/po/pt.po | 5778 ++++ etc/wyatt8740/po/remove-potcdate.sin | 25 + etc/wyatt8740/po/ru.po | 5928 +++++ etc/wyatt8740/po/sq.po | 5943 +++++ etc/wyatt8740/po/sr.po | 6024 +++++ etc/wyatt8740/po/sv.po | 5600 ++++ etc/wyatt8740/po/th.po | 5603 ++++ etc/wyatt8740/po/uk.po | 5875 +++++ etc/wyatt8740/po/vi.po | 5822 +++++ etc/wyatt8740/po/xchat.pot | 5265 ++++ etc/wyatt8740/po/zh_CN.po | 5827 +++++ etc/wyatt8740/po/zh_TW.po | 5826 +++++ etc/wyatt8740/src/Makefile.am | 14 + etc/wyatt8740/src/Makefile.in | 684 + etc/wyatt8740/src/common/Makefile.am | 60 + etc/wyatt8740/src/common/Makefile.in | 914 + etc/wyatt8740/src/common/cfgfiles.c | 1120 + etc/wyatt8740/src/common/cfgfiles.h | 56 + etc/wyatt8740/src/common/chanopt.c | 465 + etc/wyatt8740/src/common/chanopt.h | 6 + etc/wyatt8740/src/common/ctcp.c | 191 + etc/wyatt8740/src/common/ctcp.h | 6 + etc/wyatt8740/src/common/dbus/Makefile.am | 56 + etc/wyatt8740/src/common/dbus/Makefile.in | 815 + etc/wyatt8740/src/common/dbus/README | 198 + .../dbus/apps_xchat_url_handler.schemas | 37 + etc/wyatt8740/src/common/dbus/dbus-client.c | 118 + etc/wyatt8740/src/common/dbus/dbus-client.h | 27 + etc/wyatt8740/src/common/dbus/dbus-plugin.c | 1087 + etc/wyatt8740/src/common/dbus/dbus-plugin.h | 31 + etc/wyatt8740/src/common/dbus/example.c | 201 + etc/wyatt8740/src/common/dbus/example.py | 28 + .../src/common/dbus/marshallers.list | 1 + .../common/dbus/org.xchat.service.service.in | 3 + .../src/common/dbus/remote-object.xml | 142 + etc/wyatt8740/src/common/dcc.c | 2587 ++ etc/wyatt8740/src/common/dcc.h | 117 + etc/wyatt8740/src/common/fe.h | 162 + etc/wyatt8740/src/common/history.c | 121 + etc/wyatt8740/src/common/history.h | 18 + etc/wyatt8740/src/common/identd.c | 89 + etc/wyatt8740/src/common/ignore.c | 442 + etc/wyatt8740/src/common/ignore.h | 38 + etc/wyatt8740/src/common/inbound.c | 1336 + etc/wyatt8740/src/common/inbound.h | 39 + etc/wyatt8740/src/common/inet.h | 43 + etc/wyatt8740/src/common/make-te.c | 58 + etc/wyatt8740/src/common/modes.c | 836 + etc/wyatt8740/src/common/modes.h | 12 + etc/wyatt8740/src/common/msproxy.c | 467 + etc/wyatt8740/src/common/msproxy.h | 257 + etc/wyatt8740/src/common/network.c | 383 + etc/wyatt8740/src/common/network.h | 34 + etc/wyatt8740/src/common/notify.c | 656 + etc/wyatt8740/src/common/notify.h | 44 + etc/wyatt8740/src/common/outbound.c | 4403 ++++ etc/wyatt8740/src/common/outbound.h | 20 + etc/wyatt8740/src/common/plugin-timer.c | 208 + etc/wyatt8740/src/common/plugin-timer.h | 7 + etc/wyatt8740/src/common/plugin.c | 1562 ++ etc/wyatt8740/src/common/plugin.h | 132 + etc/wyatt8740/src/common/proto-irc.c | 1293 + etc/wyatt8740/src/common/proto-irc.h | 6 + etc/wyatt8740/src/common/server.c | 2010 ++ etc/wyatt8740/src/common/server.h | 26 + etc/wyatt8740/src/common/servlist.c | 1331 + etc/wyatt8740/src/common/servlist.h | 62 + etc/wyatt8740/src/common/ssl.c | 344 + etc/wyatt8740/src/common/ssl.h | 65 + etc/wyatt8740/src/common/text.c | 2374 ++ etc/wyatt8740/src/common/text.h | 42 + etc/wyatt8740/src/common/textenums.h | 76 + etc/wyatt8740/src/common/textevents.h | 424 + etc/wyatt8740/src/common/textevents.in | 840 + etc/wyatt8740/src/common/tree.c | 223 + etc/wyatt8740/src/common/tree.h | 17 + etc/wyatt8740/src/common/url.c | 289 + etc/wyatt8740/src/common/url.h | 19 + etc/wyatt8740/src/common/userlist.c | 454 + etc/wyatt8740/src/common/userlist.h | 41 + etc/wyatt8740/src/common/util.c | 1748 ++ etc/wyatt8740/src/common/util.h | 55 + etc/wyatt8740/src/common/xchat-plugin.h | 334 + etc/wyatt8740/src/common/xchat.c | 938 + etc/wyatt8740/src/common/xchat.h | 570 + etc/wyatt8740/src/common/xchatc.h | 39 + etc/wyatt8740/src/fe-gtk/Makefile.am | 32 + etc/wyatt8740/src/fe-gtk/Makefile.in | 869 + etc/wyatt8740/src/fe-gtk/about.c | 161 + etc/wyatt8740/src/fe-gtk/about.h | 1 + etc/wyatt8740/src/fe-gtk/ascii.c | 177 + etc/wyatt8740/src/fe-gtk/ascii.h | 1 + etc/wyatt8740/src/fe-gtk/banlist.c | 418 + etc/wyatt8740/src/fe-gtk/banlist.h | 1 + etc/wyatt8740/src/fe-gtk/chanlist.c | 977 + etc/wyatt8740/src/fe-gtk/chanlist.h | 1 + etc/wyatt8740/src/fe-gtk/chanview-tabs.c | 779 + etc/wyatt8740/src/fe-gtk/chanview-tree.c | 364 + etc/wyatt8740/src/fe-gtk/chanview.c | 643 + etc/wyatt8740/src/fe-gtk/chanview.h | 31 + etc/wyatt8740/src/fe-gtk/custom-list.c | 753 + etc/wyatt8740/src/fe-gtk/custom-list.h | 85 + etc/wyatt8740/src/fe-gtk/dccgui.c | 1098 + etc/wyatt8740/src/fe-gtk/editlist.c | 435 + etc/wyatt8740/src/fe-gtk/editlist.h | 1 + etc/wyatt8740/src/fe-gtk/fe-gtk.c | 1070 + etc/wyatt8740/src/fe-gtk/fe-gtk.h | 197 + etc/wyatt8740/src/fe-gtk/fkeys.c | 1863 ++ etc/wyatt8740/src/fe-gtk/fkeys.h | 5 + etc/wyatt8740/src/fe-gtk/gtkutil.c | 675 + etc/wyatt8740/src/fe-gtk/gtkutil.h | 39 + etc/wyatt8740/src/fe-gtk/ignoregui.c | 450 + etc/wyatt8740/src/fe-gtk/joind.c | 257 + etc/wyatt8740/src/fe-gtk/joind.h | 2 + etc/wyatt8740/src/fe-gtk/maingui.c | 3796 +++ etc/wyatt8740/src/fe-gtk/maingui.h | 33 + etc/wyatt8740/src/fe-gtk/menu.c | 2270 ++ etc/wyatt8740/src/fe-gtk/menu.h | 41 + etc/wyatt8740/src/fe-gtk/mmx_cmod.S | 530 + etc/wyatt8740/src/fe-gtk/mmx_cmod.h | 4 + etc/wyatt8740/src/fe-gtk/notifygui.c | 442 + etc/wyatt8740/src/fe-gtk/notifygui.h | 2 + etc/wyatt8740/src/fe-gtk/palette.c | 246 + etc/wyatt8740/src/fe-gtk/palette.h | 15 + etc/wyatt8740/src/fe-gtk/pixmaps.c | 123 + etc/wyatt8740/src/fe-gtk/pixmaps.h | 19 + etc/wyatt8740/src/fe-gtk/plugin-tray.c | 848 + etc/wyatt8740/src/fe-gtk/plugin-tray.h | 4 + etc/wyatt8740/src/fe-gtk/plugingui.c | 239 + etc/wyatt8740/src/fe-gtk/plugingui.h | 2 + etc/wyatt8740/src/fe-gtk/rawlog.c | 152 + etc/wyatt8740/src/fe-gtk/rawlog.h | 1 + etc/wyatt8740/src/fe-gtk/search.c | 159 + etc/wyatt8740/src/fe-gtk/search.h | 1 + etc/wyatt8740/src/fe-gtk/servlistgui.c | 1889 ++ etc/wyatt8740/src/fe-gtk/setup.c | 2134 ++ etc/wyatt8740/src/fe-gtk/sexy-spell-entry.c | 1329 + etc/wyatt8740/src/fe-gtk/sexy-spell-entry.h | 87 + etc/wyatt8740/src/fe-gtk/textgui.c | 456 + etc/wyatt8740/src/fe-gtk/textgui.h | 2 + etc/wyatt8740/src/fe-gtk/urlgrab.c | 231 + etc/wyatt8740/src/fe-gtk/urlgrab.h | 2 + etc/wyatt8740/src/fe-gtk/userlistgui.c | 718 + etc/wyatt8740/src/fe-gtk/userlistgui.h | 8 + etc/wyatt8740/src/fe-gtk/xtext.c | 5454 ++++ etc/wyatt8740/src/fe-gtk/xtext.h | 275 + etc/wyatt8740/src/fe-text/Makefile.am | 9 + etc/wyatt8740/src/fe-text/Makefile.in | 703 + etc/wyatt8740/src/fe-text/README | 5 + etc/wyatt8740/src/fe-text/fe-text.c | 862 + etc/wyatt8740/src/fe-text/fe-text.h | 29 + etc/wyatt8740/src/pixmaps/Makefile.am | 20 + etc/wyatt8740/src/pixmaps/Makefile.in | 585 + etc/wyatt8740/src/pixmaps/book.png | Bin 0 -> 841 bytes etc/wyatt8740/src/pixmaps/fileoffer.png | Bin 0 -> 5637 bytes etc/wyatt8740/src/pixmaps/highlight.png | Bin 0 -> 5544 bytes etc/wyatt8740/src/pixmaps/hop.png | Bin 0 -> 262 bytes etc/wyatt8740/src/pixmaps/message.png | Bin 0 -> 5152 bytes etc/wyatt8740/src/pixmaps/op.png | Bin 0 -> 246 bytes etc/wyatt8740/src/pixmaps/purple.png | Bin 0 -> 240 bytes etc/wyatt8740/src/pixmaps/red.png | Bin 0 -> 212 bytes etc/wyatt8740/src/pixmaps/voice.png | Bin 0 -> 267 bytes etc/wyatt8740/src/version-script | 34 + etc/wyatt8740/xchat.desktop | 23 + etc/wyatt8740/xchat.ico | Bin 0 -> 26694 bytes etc/wyatt8740/xchat.png | Bin 0 -> 3144 bytes etc/wyatt8740/xchat.spec | 141 + hexchat/.editorconfig | 19 + hexchat/.gitignore | 29 + hexchat/.lgtm.yml | 5 + hexchat/.mailmap | 10 + hexchat/.tx/config | 8 + hexchat/.tx/howto.md | 65 + hexchat/COPYING | 340 + hexchat/data/hexchat.gresource.xml | 24 + hexchat/data/icons/book.png | Bin 0 -> 841 bytes hexchat/data/icons/hexchat-b.svg | 610 + hexchat/data/icons/hexchat-shadowless.svg | 63 + hexchat/data/icons/hexchat.ico | Bin 0 -> 128609 bytes hexchat/data/icons/hexchat.png | Bin 0 -> 2443 bytes hexchat/data/icons/hexchat.svg | 58 + hexchat/data/icons/meson.build | 11 + hexchat/data/icons/tray_fileoffer.png | Bin 0 -> 2453 bytes hexchat/data/icons/tray_highlight.png | Bin 0 -> 2821 bytes hexchat/data/icons/tray_message.png | Bin 0 -> 2170 bytes hexchat/data/icons/tree_channel.png | Bin 0 -> 422 bytes hexchat/data/icons/tree_dialog.png | Bin 0 -> 911 bytes hexchat/data/icons/tree_server.png | Bin 0 -> 568 bytes hexchat/data/icons/tree_util.png | Bin 0 -> 611 bytes hexchat/data/icons/ulist_founder.png | Bin 0 -> 660 bytes hexchat/data/icons/ulist_halfop.png | Bin 0 -> 668 bytes hexchat/data/icons/ulist_netop.png | Bin 0 -> 593 bytes hexchat/data/icons/ulist_op.png | Bin 0 -> 691 bytes hexchat/data/icons/ulist_owner.png | Bin 0 -> 678 bytes hexchat/data/icons/ulist_voice.png | Bin 0 -> 670 bytes hexchat/data/man/hexchat.1.in | 55 + hexchat/data/man/meson.build | 10 + hexchat/data/meson.build | 11 + .../io.github.Hexchat.Plugin.metainfo.xml.in | 11 + .../io.github.Hexchat.ThemeManager.desktop.in | 8 + .../misc/io.github.Hexchat.ThemeManager.xml | 8 + .../misc/io.github.Hexchat.appdata.xml.in | 163 + .../data/misc/io.github.Hexchat.desktop.in.in | 19 + hexchat/data/misc/meson.build | 127 + hexchat/data/pkgconfig/hexchat-plugin.pc.in | 9 + hexchat/data/pkgconfig/meson.build | 14 + hexchat/plugins/checksum/checksum.c | 204 + hexchat/plugins/checksum/checksum.def | 3 + hexchat/plugins/checksum/checksum.vcxproj | 59 + .../plugins/checksum/checksum.vcxproj.filters | 23 + hexchat/plugins/checksum/meson.build | 7 + hexchat/plugins/exec/exec.c | 160 + hexchat/plugins/exec/exec.def | 3 + hexchat/plugins/exec/exec.vcxproj | 55 + hexchat/plugins/exec/exec.vcxproj.filters | 23 + hexchat/plugins/exec/meson.build | 6 + hexchat/plugins/fishlim/LICENSE | 21 + hexchat/plugins/fishlim/dh1080.c | 238 + hexchat/plugins/fishlim/dh1080.h | 24 + hexchat/plugins/fishlim/fish.c | 563 + hexchat/plugins/fishlim/fish.h | 51 + hexchat/plugins/fishlim/fishlim.def | 4 + hexchat/plugins/fishlim/fishlim.vcxproj | 72 + .../plugins/fishlim/fishlim.vcxproj.filters | 65 + hexchat/plugins/fishlim/irc.c | 82 + hexchat/plugins/fishlim/irc.h | 38 + hexchat/plugins/fishlim/keystore.c | 278 + hexchat/plugins/fishlim/keystore.h | 38 + hexchat/plugins/fishlim/meson.build | 23 + hexchat/plugins/fishlim/plugin_hexchat.c | 839 + hexchat/plugins/fishlim/plugin_hexchat.h | 32 + hexchat/plugins/fishlim/tests/meson.build | 16 + hexchat/plugins/fishlim/tests/mock-keystore.c | 51 + hexchat/plugins/fishlim/tests/tests.c | 285 + hexchat/plugins/fishlim/utils.c | 151 + hexchat/plugins/fishlim/utils.h | 39 + hexchat/plugins/lua/lua.c | 1771 ++ hexchat/plugins/lua/lua.vcxproj | 54 + hexchat/plugins/lua/lua.vcxproj.filters | 14 + hexchat/plugins/lua/meson.build | 12 + hexchat/plugins/perl/generate_header | 58 + hexchat/plugins/perl/generate_header.py | 29 + hexchat/plugins/perl/lib/HexChat.pm | 556 + hexchat/plugins/perl/lib/HexChat/Embed.pm | 348 + .../plugins/perl/lib/HexChat/List/Network.pm | 33 + .../perl/lib/HexChat/List/Network/AutoJoin.pm | 80 + .../perl/lib/HexChat/List/Network/Entry.pm | 106 + hexchat/plugins/perl/lib/IRC.pm | 257 + hexchat/plugins/perl/lib/Xchat.pm | 1 + hexchat/plugins/perl/meson.build | 92 + hexchat/plugins/perl/perl.c | 1647 ++ hexchat/plugins/perl/perl.def | 4 + hexchat/plugins/perl/perl.vcxproj | 77 + hexchat/plugins/perl/perl.vcxproj.filters | 23 + hexchat/plugins/python/_hexchat.py | 386 + hexchat/plugins/python/generate_plugin.py | 89 + hexchat/plugins/python/hexchat.py | 1 + hexchat/plugins/python/meson.build | 32 + hexchat/plugins/python/python.def | 3 + hexchat/plugins/python/python.py | 566 + hexchat/plugins/python/python3.vcxproj | 70 + .../plugins/python/python3.vcxproj.filters | 34 + hexchat/plugins/python/python_style_guide.md | 26 + hexchat/plugins/python/xchat.py | 1 + hexchat/plugins/sysinfo/format.c | 90 + hexchat/plugins/sysinfo/format.h | 28 + hexchat/plugins/sysinfo/meson.build | 61 + hexchat/plugins/sysinfo/osx/backend.m | 275 + hexchat/plugins/sysinfo/shared/df.c | 53 + hexchat/plugins/sysinfo/shared/df.h | 23 + hexchat/plugins/sysinfo/sysinfo-backend.h | 33 + hexchat/plugins/sysinfo/sysinfo.c | 249 + hexchat/plugins/sysinfo/sysinfo.def | 3 + hexchat/plugins/sysinfo/sysinfo.h | 26 + hexchat/plugins/sysinfo/sysinfo.vcxproj | 71 + .../plugins/sysinfo/sysinfo.vcxproj.filters | 43 + hexchat/plugins/sysinfo/unix/backend.c | 170 + hexchat/plugins/sysinfo/unix/match.c | 98 + hexchat/plugins/sysinfo/unix/match.h | 29 + hexchat/plugins/sysinfo/unix/parse.c | 357 + hexchat/plugins/sysinfo/unix/parse.h | 35 + hexchat/plugins/sysinfo/unix/pci.c | 171 + hexchat/plugins/sysinfo/unix/pci.h | 28 + hexchat/plugins/sysinfo/win32/backend.c | 105 + hexchat/plugins/upd/meson.build | 9 + hexchat/plugins/upd/upd.c | 70 + hexchat/plugins/upd/upd.def | 3 + hexchat/plugins/upd/upd.vcxproj | 59 + hexchat/plugins/upd/upd.vcxproj.filters | 23 + hexchat/po/LINGUAS | 53 + hexchat/po/POTFILES | 46 + hexchat/po/POTFILES.skip | 1 + hexchat/po/af.po | 6254 +++++ hexchat/po/am.po | 6254 +++++ hexchat/po/ast.po | 6255 +++++ hexchat/po/az.po | 6254 +++++ hexchat/po/be.po | 6253 +++++ hexchat/po/bg.po | 6256 +++++ hexchat/po/ca.po | 6260 +++++ hexchat/po/cs.po | 6260 +++++ hexchat/po/da.po | 6265 +++++ hexchat/po/de.po | 6290 +++++ hexchat/po/el.po | 6261 +++++ hexchat/po/en_GB.po | 6269 +++++ hexchat/po/es.po | 6267 +++++ hexchat/po/et.po | 6257 +++++ hexchat/po/eu.po | 6256 +++++ hexchat/po/fi.po | 6256 +++++ hexchat/po/fr.po | 6264 +++++ hexchat/po/gl.po | 6254 +++++ hexchat/po/gu.po | 6253 +++++ hexchat/po/hi.po | 6255 +++++ hexchat/po/hu.po | 6260 +++++ hexchat/po/id.po | 6257 +++++ hexchat/po/it.po | 6266 +++++ hexchat/po/ja_JP.po | 6260 +++++ hexchat/po/kn.po | 6255 +++++ hexchat/po/ko.po | 6257 +++++ hexchat/po/lt.po | 6260 +++++ hexchat/po/lv.po | 6255 +++++ hexchat/po/meson.build | 9 + hexchat/po/mk.po | 6254 +++++ hexchat/po/ml.po | 6258 +++++ hexchat/po/ms.po | 6254 +++++ hexchat/po/nb.po | 6263 +++++ hexchat/po/nl.po | 6259 +++++ hexchat/po/no.po | 6254 +++++ hexchat/po/pa.po | 6255 +++++ hexchat/po/pl.po | 6269 +++++ hexchat/po/pt.po | 6259 +++++ hexchat/po/pt_BR.po | 6265 +++++ hexchat/po/remove-potcdate.sin | 19 + hexchat/po/ru.po | 6268 +++++ hexchat/po/rw.po | 6262 +++++ hexchat/po/sk.po | 6256 +++++ hexchat/po/sl.po | 6259 +++++ hexchat/po/sq.po | 6257 +++++ hexchat/po/sr.po | 6256 +++++ hexchat/po/sr@latin.po | 6258 +++++ hexchat/po/sv.po | 6264 +++++ hexchat/po/th.po | 6255 +++++ hexchat/po/tr.po | 6275 +++++ hexchat/po/uk.po | 6257 +++++ hexchat/po/validate-textevent-translations | 69 + hexchat/po/vi.po | 6253 +++++ hexchat/po/wa.po | 6254 +++++ hexchat/po/zh_CN.po | 6271 +++++ hexchat/po/zh_TW.po | 6263 +++++ hexchat/src/common/cfgfiles.c | 1373 + hexchat/src/common/cfgfiles.h | 87 + hexchat/src/common/chanopt.c | 462 + hexchat/src/common/chanopt.h | 29 + hexchat/src/common/common.vcxproj | 123 + hexchat/src/common/common.vcxproj.filters | 206 + hexchat/src/common/ctcp.c | 202 + hexchat/src/common/ctcp.h | 27 + hexchat/src/common/dbus/dbus-client.c | 179 + hexchat/src/common/dbus/dbus-client.h | 27 + hexchat/src/common/dbus/dbus-plugin.c | 1089 + hexchat/src/common/dbus/dbus-plugin.h | 31 + hexchat/src/common/dbus/example.c | 203 + hexchat/src/common/dbus/example.py | 51 + hexchat/src/common/dbus/meson.build | 56 + .../dbus/org.hexchat.service.service.in | 3 + hexchat/src/common/dbus/remote-object.xml | 142 + hexchat/src/common/dcc.c | 2705 ++ hexchat/src/common/dcc.h | 130 + hexchat/src/common/fe.h | 194 + hexchat/src/common/hexchat-plugin.h | 459 + hexchat/src/common/hexchat.c | 1144 + hexchat/src/common/hexchat.h | 628 + hexchat/src/common/hexchatc.h | 62 + hexchat/src/common/history.c | 121 + hexchat/src/common/history.h | 37 + hexchat/src/common/ignore.c | 416 + hexchat/src/common/ignore.h | 57 + hexchat/src/common/inbound.c | 2083 ++ hexchat/src/common/inbound.h | 107 + hexchat/src/common/inet.h | 67 + hexchat/src/common/make-te.py | 55 + hexchat/src/common/marshalers.list | 8 + hexchat/src/common/meson.build | 112 + hexchat/src/common/modes.c | 948 + hexchat/src/common/modes.h | 34 + hexchat/src/common/network.c | 190 + hexchat/src/common/network.h | 42 + hexchat/src/common/notify.c | 717 + hexchat/src/common/notify.h | 73 + hexchat/src/common/outbound.c | 4983 ++++ hexchat/src/common/outbound.h | 42 + hexchat/src/common/plugin-identd.c | 281 + hexchat/src/common/plugin-identd.h | 28 + hexchat/src/common/plugin-timer.c | 231 + hexchat/src/common/plugin-timer.h | 26 + hexchat/src/common/plugin.c | 2050 ++ hexchat/src/common/plugin.h | 192 + hexchat/src/common/proto-irc.c | 1702 ++ hexchat/src/common/proto-irc.h | 50 + hexchat/src/common/scram.c | 333 + hexchat/src/common/scram.h | 51 + hexchat/src/common/server.c | 1951 ++ hexchat/src/common/server.h | 44 + hexchat/src/common/servlist.c | 1244 + hexchat/src/common/servlist.h | 132 + hexchat/src/common/ssl.c | 566 + hexchat/src/common/ssl.h | 85 + hexchat/src/common/sysinfo/sysinfo.h | 13 + hexchat/src/common/sysinfo/win32/backend.c | 483 + hexchat/src/common/text.c | 2370 ++ hexchat/src/common/text.h | 75 + hexchat/src/common/textevents.in | 954 + hexchat/src/common/tree.c | 254 + hexchat/src/common/tree.h | 40 + hexchat/src/common/typedef.h | 44 + hexchat/src/common/url.c | 685 + hexchat/src/common/url.h | 41 + hexchat/src/common/userlist.c | 471 + hexchat/src/common/userlist.h | 67 + hexchat/src/common/util.c | 1557 ++ hexchat/src/common/util.h | 83 + hexchat/src/dirent/dirent-win32.h | 867 + hexchat/src/fe-gtk/ascii.c | 171 + hexchat/src/fe-gtk/ascii.h | 25 + hexchat/src/fe-gtk/banlist.c | 854 + hexchat/src/fe-gtk/banlist.h | 75 + hexchat/src/fe-gtk/chanlist.c | 954 + hexchat/src/fe-gtk/chanlist.h | 25 + hexchat/src/fe-gtk/chanview-tabs.c | 821 + hexchat/src/fe-gtk/chanview-tree.c | 396 + hexchat/src/fe-gtk/chanview.c | 661 + hexchat/src/fe-gtk/chanview.h | 55 + hexchat/src/fe-gtk/custom-list.c | 769 + hexchat/src/fe-gtk/custom-list.h | 106 + hexchat/src/fe-gtk/dccgui.c | 1164 + hexchat/src/fe-gtk/editlist.c | 370 + hexchat/src/fe-gtk/editlist.h | 25 + hexchat/src/fe-gtk/fe-gtk.c | 1242 + hexchat/src/fe-gtk/fe-gtk.h | 191 + hexchat/src/fe-gtk/fe-gtk.vcxproj | 143 + hexchat/src/fe-gtk/fe-gtk.vcxproj.filters | 214 + hexchat/src/fe-gtk/fkeys.c | 1843 ++ hexchat/src/fe-gtk/fkeys.h | 38 + hexchat/src/fe-gtk/gtkutil.c | 807 + hexchat/src/fe-gtk/gtkutil.h | 52 + hexchat/src/fe-gtk/hexchat.rc.tt | 28 + hexchat/src/fe-gtk/ignoregui.c | 449 + hexchat/src/fe-gtk/joind.c | 274 + hexchat/src/fe-gtk/joind.h | 26 + hexchat/src/fe-gtk/maingui.c | 3920 +++ hexchat/src/fe-gtk/maingui.h | 61 + hexchat/src/fe-gtk/menu.c | 2514 ++ hexchat/src/fe-gtk/menu.h | 71 + hexchat/src/fe-gtk/meson.build | 91 + .../notifications/notification-backend.h | 27 + .../fe-gtk/notifications/notification-dummy.c | 39 + .../notifications/notification-freedesktop.c | 148 + .../fe-gtk/notifications/notification-osx.m | 54 + .../notifications/notification-windows.c | 87 + .../notifications/notification-winrt.cpp | 130 + .../notifications/notifications-winrt.vcxproj | 64 + .../notifications-winrt.vcxproj.filters | 22 + hexchat/src/fe-gtk/notifygui.c | 441 + hexchat/src/fe-gtk/notifygui.h | 26 + hexchat/src/fe-gtk/palette.c | 171 + hexchat/src/fe-gtk/palette.h | 41 + hexchat/src/fe-gtk/pixmaps.c | 157 + hexchat/src/fe-gtk/pixmaps.h | 46 + hexchat/src/fe-gtk/plugin-notification.c | 253 + hexchat/src/fe-gtk/plugin-notification.h | 25 + hexchat/src/fe-gtk/plugin-tray.c | 816 + hexchat/src/fe-gtk/plugin-tray.h | 28 + hexchat/src/fe-gtk/plugingui.c | 267 + hexchat/src/fe-gtk/plugingui.h | 26 + hexchat/src/fe-gtk/rawlog.c | 172 + hexchat/src/fe-gtk/rawlog.h | 25 + hexchat/src/fe-gtk/servlistgui.c | 2262 ++ hexchat/src/fe-gtk/servlistgui.h | 25 + hexchat/src/fe-gtk/setup.c | 2359 ++ hexchat/src/fe-gtk/setup.h | 25 + hexchat/src/fe-gtk/sexy-iso-codes.c | 226 + hexchat/src/fe-gtk/sexy-iso-codes.h | 37 + hexchat/src/fe-gtk/sexy-spell-entry.c | 1683 ++ hexchat/src/fe-gtk/sexy-spell-entry.h | 85 + hexchat/src/fe-gtk/textgui.c | 484 + hexchat/src/fe-gtk/textgui.h | 26 + hexchat/src/fe-gtk/urlgrab.c | 229 + hexchat/src/fe-gtk/urlgrab.h | 25 + hexchat/src/fe-gtk/userlistgui.c | 753 + hexchat/src/fe-gtk/userlistgui.h | 32 + hexchat/src/fe-gtk/xtext.c | 5077 ++++ hexchat/src/fe-gtk/xtext.h | 295 + hexchat/src/fe-text/fe-text.c | 920 + hexchat/src/fe-text/fe-text.h | 20 + hexchat/src/fe-text/fe-text.vcxproj | 65 + hexchat/src/fe-text/fe-text.vcxproj.filters | 23 + hexchat/src/fe-text/meson.build | 7 + hexchat/src/htm/Main.Designer.cs | 337 + hexchat/src/htm/Main.cs | 381 + hexchat/src/htm/Main.resx | 287 + hexchat/src/htm/Program.cs | 42 + hexchat/src/htm/Properties/AssemblyInfo.cs | 59 + .../src/htm/Properties/Resources.Designer.cs | 63 + .../src/htm/Properties/Resources.resources | Bin 0 -> 180 bytes hexchat/src/htm/Properties/Resources.resx | 120 + .../src/htm/Properties/Settings.Designer.cs | 26 + hexchat/src/htm/Properties/Settings.settings | 7 + hexchat/src/htm/README.md | 7 + hexchat/src/htm/Resources/htm.ico | Bin 0 -> 9662 bytes hexchat/src/htm/app.config | 3 + hexchat/src/htm/htm.csproj | 155 + hexchat/src/htm/meson.build | 33 + hexchat/src/htm/thememan.HTM.resources | Bin 0 -> 10228 bytes hexchat/src/htm/thememan.in | 3 + .../src/libenchant_win8/libenchant_win8.def | 2 + .../libenchant_win8/libenchant_win8.vcxproj | 47 + .../libenchant_win8.vcxproj.filters | 22 + hexchat/src/libenchant_win8/win8_provider.cpp | 293 + hexchat/src/meson.build | 13 + hexchat/src/version-script | 45 + readme.md | 30 + xchat-2.8.8/AUTHORS | 0 xchat-2.8.8/COPYING | 340 + xchat-2.8.8/ChangeLog | 2238 ++ xchat-2.8.8/HACKING | 51 + xchat-2.8.8/INSTALL | 49 + xchat-2.8.8/INSTALL.w32 | 117 + xchat-2.8.8/Makefile | 881 + xchat-2.8.8/Makefile.am | 12 + xchat-2.8.8/Makefile.in | 881 + xchat-2.8.8/README | 103 + xchat-2.8.8/acinclude.m4 | 40 + xchat-2.8.8/aclocal.m4 | 13060 ++++++++++ xchat-2.8.8/autogen.sh | 113 + xchat-2.8.8/buildAttemp1.txt | 581 + xchat-2.8.8/compile | 143 + xchat-2.8.8/config.guess | 1501 ++ xchat-2.8.8/config.h | 485 + xchat-2.8.8/config.h.in | 484 + xchat-2.8.8/config.h.w32 | 12 + xchat-2.8.8/config.log | 2657 ++ xchat-2.8.8/config.rpath | 571 + xchat-2.8.8/config.status | 2374 ++ xchat-2.8.8/config.sub | 1705 ++ xchat-2.8.8/configure | 21693 ++++++++++++++++ xchat-2.8.8/configure.in | 830 + xchat-2.8.8/depcomp | 630 + xchat-2.8.8/faq.html | 537 + xchat-2.8.8/install-sh | 520 + xchat-2.8.8/intl/ChangeLog | 4 + xchat-2.8.8/intl/Makefile | 587 + xchat-2.8.8/intl/Makefile.in | 587 + xchat-2.8.8/intl/VERSION | 1 + xchat-2.8.8/intl/bindtextdom.c | 340 + xchat-2.8.8/intl/config.charset | 640 + xchat-2.8.8/intl/dcgettext.c | 56 + xchat-2.8.8/intl/dcigettext.c | 1689 ++ xchat-2.8.8/intl/dcngettext.c | 57 + xchat-2.8.8/intl/dgettext.c | 58 + xchat-2.8.8/intl/dngettext.c | 59 + xchat-2.8.8/intl/eval-plural.h | 108 + xchat-2.8.8/intl/explodename.c | 135 + xchat-2.8.8/intl/export.h | 6 + xchat-2.8.8/intl/finddomain.c | 212 + xchat-2.8.8/intl/gettext.c | 63 + xchat-2.8.8/intl/gettextP.h | 297 + xchat-2.8.8/intl/gmo.h | 152 + xchat-2.8.8/intl/hash-string.c | 51 + xchat-2.8.8/intl/hash-string.h | 36 + xchat-2.8.8/intl/intl-compat.c | 133 + xchat-2.8.8/intl/intl-exports.c | 36 + xchat-2.8.8/intl/l10nflist.c | 400 + xchat-2.8.8/intl/langprefs.c | 130 + xchat-2.8.8/intl/libgnuintl.h.in | 419 + xchat-2.8.8/intl/libintl.rc | 38 + xchat-2.8.8/intl/loadinfo.h | 132 + xchat-2.8.8/intl/loadmsgcat.c | 1336 + xchat-2.8.8/intl/localcharset.c | 461 + xchat-2.8.8/intl/localcharset.h | 42 + xchat-2.8.8/intl/locale.alias | 77 + xchat-2.8.8/intl/localealias.c | 439 + xchat-2.8.8/intl/localename.c | 1507 ++ xchat-2.8.8/intl/lock.c | 922 + xchat-2.8.8/intl/lock.h | 1105 + xchat-2.8.8/intl/log.c | 116 + xchat-2.8.8/intl/ngettext.c | 65 + xchat-2.8.8/intl/os2compat.c | 98 + xchat-2.8.8/intl/os2compat.h | 46 + xchat-2.8.8/intl/osdep.c | 26 + xchat-2.8.8/intl/plural-exp.c | 155 + xchat-2.8.8/intl/plural-exp.h | 129 + xchat-2.8.8/intl/plural.c | 1961 ++ xchat-2.8.8/intl/plural.y | 385 + xchat-2.8.8/intl/printf-args.c | 188 + xchat-2.8.8/intl/printf-args.h | 155 + xchat-2.8.8/intl/printf-parse.c | 590 + xchat-2.8.8/intl/printf-parse.h | 75 + xchat-2.8.8/intl/printf.c | 427 + xchat-2.8.8/intl/ref-add.sin | 31 + xchat-2.8.8/intl/ref-del.sin | 26 + xchat-2.8.8/intl/relocatable.c | 468 + xchat-2.8.8/intl/relocatable.h | 79 + xchat-2.8.8/intl/textdomain.c | 127 + xchat-2.8.8/intl/tsearch.c | 684 + xchat-2.8.8/intl/tsearch.h | 83 + xchat-2.8.8/intl/vasnprintf.c | 4677 ++++ xchat-2.8.8/intl/vasnprintf.h | 78 + xchat-2.8.8/intl/vasnwprintf.h | 46 + xchat-2.8.8/intl/version.c | 26 + xchat-2.8.8/intl/wprintf-parse.h | 75 + xchat-2.8.8/intl/xsize.h | 109 + xchat-2.8.8/libtool | 8893 +++++++ xchat-2.8.8/ltmain.sh | 8406 ++++++ xchat-2.8.8/missing | 376 + xchat-2.8.8/plugins/Make.plugin | 38 + xchat-2.8.8/plugins/Makefile | 654 + xchat-2.8.8/plugins/Makefile.am | 21 + xchat-2.8.8/plugins/Makefile.in | 654 + xchat-2.8.8/plugins/perl/.deps/perl.Plo | 1 + xchat-2.8.8/plugins/perl/IRC.pm | 256 + xchat-2.8.8/plugins/perl/Makefile | 621 + xchat-2.8.8/plugins/perl/Makefile.am | 15 + xchat-2.8.8/plugins/perl/Makefile.in | 621 + xchat-2.8.8/plugins/perl/Pod/Pod/Html.pm | 2364 ++ xchat-2.8.8/plugins/perl/Xchat.pm | 963 + xchat-2.8.8/plugins/perl/alt_completion.pl | 463 + xchat-2.8.8/plugins/perl/generate_header | 36 + xchat-2.8.8/plugins/perl/perl.c | 1518 ++ xchat-2.8.8/plugins/perl/xchat2-perl.html | 958 + xchat-2.8.8/plugins/perl/xchat2-perldocs.html | 475 + xchat-2.8.8/plugins/plugin-conf.in | 20 + xchat-2.8.8/plugins/plugin20.html | 999 + xchat-2.8.8/plugins/python/.deps/python.Plo | 1 + xchat-2.8.8/plugins/python/Makefile | 611 + xchat-2.8.8/plugins/python/Makefile.am | 10 + xchat-2.8.8/plugins/python/Makefile.in | 611 + xchat-2.8.8/plugins/python/python.c | 2240 ++ xchat-2.8.8/plugins/tcl/.deps/tclplugin.Plo | 1 + xchat-2.8.8/plugins/tcl/Makefile | 611 + xchat-2.8.8/plugins/tcl/Makefile.am | 10 + xchat-2.8.8/plugins/tcl/Makefile.in | 611 + xchat-2.8.8/plugins/tcl/README | 55 + xchat-2.8.8/plugins/tcl/printevents.h | 319 + xchat-2.8.8/plugins/tcl/tclplugin.c | 2290 ++ xchat-2.8.8/plugins/tcl/tclplugin.h | 98 + xchat-2.8.8/plugins/xchat-plugin.h | 334 + xchat-2.8.8/plugins/xdcc/Makefile.am | 7 + xchat-2.8.8/plugins/xdcc/xdcc.c | 327 + xchat-2.8.8/po/Makefile | 473 + xchat-2.8.8/po/Makefile.in | 429 + xchat-2.8.8/po/Makefile.in.in | 429 + xchat-2.8.8/po/Makevars | 7 + xchat-2.8.8/po/POTFILES | 37 + xchat-2.8.8/po/POTFILES.in | 37 + xchat-2.8.8/po/be.gmo | Bin 0 -> 114859 bytes xchat-2.8.8/po/be.po | 5681 ++++ xchat-2.8.8/po/ca.gmo | Bin 0 -> 76924 bytes xchat-2.8.8/po/ca.po | 7050 +++++ xchat-2.8.8/po/cs.gmo | Bin 0 -> 94322 bytes xchat-2.8.8/po/cs.po | 5844 +++++ xchat-2.8.8/po/de.gmo | Bin 0 -> 94657 bytes xchat-2.8.8/po/de.po | 5685 ++++ xchat-2.8.8/po/el.gmo | Bin 0 -> 116492 bytes xchat-2.8.8/po/el.po | 5919 +++++ xchat-2.8.8/po/es.gmo | Bin 0 -> 84761 bytes xchat-2.8.8/po/es.po | 5960 +++++ xchat-2.8.8/po/fi.gmo | Bin 0 -> 95749 bytes xchat-2.8.8/po/fi.po | 5698 ++++ xchat-2.8.8/po/fr.gmo | Bin 0 -> 99923 bytes xchat-2.8.8/po/fr.po | 6097 +++++ xchat-2.8.8/po/gl.gmo | Bin 0 -> 93097 bytes xchat-2.8.8/po/gl.po | 5707 ++++ xchat-2.8.8/po/hu.gmo | Bin 0 -> 100903 bytes xchat-2.8.8/po/hu.po | 5705 ++++ xchat-2.8.8/po/it.gmo | Bin 0 -> 88450 bytes xchat-2.8.8/po/it.po | 5885 +++++ xchat-2.8.8/po/ja.gmo | Bin 0 -> 78583 bytes xchat-2.8.8/po/ja.po | 7117 +++++ xchat-2.8.8/po/kn.gmo | Bin 0 -> 157179 bytes xchat-2.8.8/po/kn.po | 5541 ++++ xchat-2.8.8/po/ko.gmo | Bin 0 -> 103992 bytes xchat-2.8.8/po/ko.po | 5635 ++++ xchat-2.8.8/po/lt.gmo | Bin 0 -> 38231 bytes xchat-2.8.8/po/lt.po | 6565 +++++ xchat-2.8.8/po/mk.gmo | Bin 0 -> 116780 bytes xchat-2.8.8/po/mk.po | 5658 ++++ xchat-2.8.8/po/nl.gmo | Bin 0 -> 84818 bytes xchat-2.8.8/po/nl.po | 6057 +++++ xchat-2.8.8/po/pa.gmo | Bin 0 -> 99680 bytes xchat-2.8.8/po/pa.po | 5645 ++++ xchat-2.8.8/po/pl.gmo | Bin 0 -> 100539 bytes xchat-2.8.8/po/pl.po | 5900 +++++ xchat-2.8.8/po/pt.gmo | Bin 0 -> 80727 bytes xchat-2.8.8/po/pt.po | 5777 ++++ xchat-2.8.8/po/remove-potcdate.sin | 19 + xchat-2.8.8/po/ru.gmo | Bin 0 -> 118989 bytes xchat-2.8.8/po/ru.po | 5927 +++++ xchat-2.8.8/po/sq.gmo | Bin 0 -> 80217 bytes xchat-2.8.8/po/sq.po | 5923 +++++ xchat-2.8.8/po/sr.gmo | Bin 0 -> 101711 bytes xchat-2.8.8/po/sr.po | 6023 +++++ xchat-2.8.8/po/stamp-po | 1 + xchat-2.8.8/po/sv.gmo | Bin 0 -> 97489 bytes xchat-2.8.8/po/sv.po | 5599 ++++ xchat-2.8.8/po/th.gmo | Bin 0 -> 126806 bytes xchat-2.8.8/po/th.po | 5602 ++++ xchat-2.8.8/po/uk.gmo | Bin 0 -> 121923 bytes xchat-2.8.8/po/uk.po | 5874 +++++ xchat-2.8.8/po/vi.gmo | Bin 0 -> 106192 bytes xchat-2.8.8/po/vi.po | 5820 +++++ xchat-2.8.8/po/xchat.pot | 5264 ++++ xchat-2.8.8/po/zh_CN.gmo | Bin 0 -> 94512 bytes xchat-2.8.8/po/zh_CN.po | 5827 +++++ xchat-2.8.8/po/zh_TW.gmo | Bin 0 -> 81944 bytes xchat-2.8.8/po/zh_TW.po | 5826 +++++ xchat-2.8.8/src/Makefile | 644 + xchat-2.8.8/src/Makefile.am | 14 + xchat-2.8.8/src/Makefile.in | 644 + xchat-2.8.8/src/common/.deps/cfgfiles.Po | 1 + xchat-2.8.8/src/common/.deps/cfgfiles.Tpo | 497 + xchat-2.8.8/src/common/.deps/chanopt.Po | 1 + xchat-2.8.8/src/common/.deps/ctcp.Po | 1 + xchat-2.8.8/src/common/.deps/dcc.Po | 1 + xchat-2.8.8/src/common/.deps/history.Po | 1 + xchat-2.8.8/src/common/.deps/ignore.Po | 1 + xchat-2.8.8/src/common/.deps/inbound.Po | 1 + xchat-2.8.8/src/common/.deps/modes.Po | 1 + xchat-2.8.8/src/common/.deps/msproxy.Po | 1 + xchat-2.8.8/src/common/.deps/network.Po | 1 + xchat-2.8.8/src/common/.deps/notify.Po | 1 + xchat-2.8.8/src/common/.deps/outbound.Po | 1 + xchat-2.8.8/src/common/.deps/plugin-timer.Po | 1 + xchat-2.8.8/src/common/.deps/plugin.Po | 1 + xchat-2.8.8/src/common/.deps/proto-irc.Po | 1 + xchat-2.8.8/src/common/.deps/server.Po | 1 + xchat-2.8.8/src/common/.deps/servlist.Po | 1 + xchat-2.8.8/src/common/.deps/ssl.Po | 1 + xchat-2.8.8/src/common/.deps/text.Po | 1 + xchat-2.8.8/src/common/.deps/tree.Po | 1 + xchat-2.8.8/src/common/.deps/url.Po | 1 + xchat-2.8.8/src/common/.deps/userlist.Po | 1 + xchat-2.8.8/src/common/.deps/util.Po | 1 + xchat-2.8.8/src/common/.deps/xchat.Po | 1 + xchat-2.8.8/src/common/Makefile | 792 + xchat-2.8.8/src/common/Makefile.am | 60 + xchat-2.8.8/src/common/Makefile.in | 792 + xchat-2.8.8/src/common/cfgfiles.c | 1104 + xchat-2.8.8/src/common/cfgfiles.h | 55 + xchat-2.8.8/src/common/chanopt.c | 431 + xchat-2.8.8/src/common/chanopt.h | 6 + xchat-2.8.8/src/common/ctcp.c | 191 + xchat-2.8.8/src/common/ctcp.h | 6 + .../src/common/dbus/.deps/dbus-client.Po | 737 + .../src/common/dbus/.deps/dbus-plugin.Po | 628 + xchat-2.8.8/src/common/dbus/.deps/example.Po | 559 + xchat-2.8.8/src/common/dbus/Makefile | 697 + xchat-2.8.8/src/common/dbus/Makefile.am | 56 + xchat-2.8.8/src/common/dbus/Makefile.in | 697 + xchat-2.8.8/src/common/dbus/README | 198 + .../dbus/apps_xchat_url_handler.schemas | 37 + xchat-2.8.8/src/common/dbus/dbus-client.c | 118 + xchat-2.8.8/src/common/dbus/dbus-client.h | 27 + xchat-2.8.8/src/common/dbus/dbus-client.o | Bin 0 -> 47096 bytes xchat-2.8.8/src/common/dbus/dbus-plugin.c | 1087 + xchat-2.8.8/src/common/dbus/dbus-plugin.h | 31 + xchat-2.8.8/src/common/dbus/dbus-plugin.o | Bin 0 -> 186712 bytes xchat-2.8.8/src/common/dbus/example | Bin 0 -> 30296 bytes xchat-2.8.8/src/common/dbus/example.c | 201 + xchat-2.8.8/src/common/dbus/example.o | Bin 0 -> 45016 bytes xchat-2.8.8/src/common/dbus/example.py | 28 + xchat-2.8.8/src/common/dbus/libxchatdbus.a | Bin 0 -> 235096 bytes xchat-2.8.8/src/common/dbus/marshallers.h | 100 + xchat-2.8.8/src/common/dbus/marshallers.list | 1 + .../src/common/dbus/org.xchat.service.service | 3 + .../common/dbus/org.xchat.service.service.in | 3 + .../src/common/dbus/remote-object-glue.h | 787 + xchat-2.8.8/src/common/dbus/remote-object.xml | 142 + xchat-2.8.8/src/common/dcc.c | 2587 ++ xchat-2.8.8/src/common/dcc.h | 117 + xchat-2.8.8/src/common/fe.h | 162 + xchat-2.8.8/src/common/history.c | 121 + xchat-2.8.8/src/common/history.h | 18 + xchat-2.8.8/src/common/identd.c | 89 + xchat-2.8.8/src/common/ignore.c | 424 + xchat-2.8.8/src/common/ignore.h | 38 + xchat-2.8.8/src/common/inbound.c | 1336 + xchat-2.8.8/src/common/inbound.h | 39 + xchat-2.8.8/src/common/inet.h | 43 + xchat-2.8.8/src/common/make-te.c | 58 + xchat-2.8.8/src/common/modes.c | 836 + xchat-2.8.8/src/common/modes.h | 12 + xchat-2.8.8/src/common/msproxy.c | 467 + xchat-2.8.8/src/common/msproxy.h | 257 + xchat-2.8.8/src/common/network.c | 383 + xchat-2.8.8/src/common/network.h | 34 + xchat-2.8.8/src/common/notify.c | 634 + xchat-2.8.8/src/common/notify.h | 44 + xchat-2.8.8/src/common/outbound.c | 4403 ++++ xchat-2.8.8/src/common/outbound.h | 20 + xchat-2.8.8/src/common/plugin-timer.c | 208 + xchat-2.8.8/src/common/plugin-timer.h | 7 + xchat-2.8.8/src/common/plugin.c | 1562 ++ xchat-2.8.8/src/common/plugin.h | 132 + xchat-2.8.8/src/common/proto-irc.c | 1260 + xchat-2.8.8/src/common/proto-irc.h | 6 + xchat-2.8.8/src/common/server.c | 1990 ++ xchat-2.8.8/src/common/server.h | 26 + xchat-2.8.8/src/common/servlist.c | 1308 + xchat-2.8.8/src/common/servlist.h | 62 + xchat-2.8.8/src/common/ssl.c | 323 + xchat-2.8.8/src/common/ssl.h | 65 + xchat-2.8.8/src/common/text.c | 2309 ++ xchat-2.8.8/src/common/text.h | 42 + xchat-2.8.8/src/common/textenums.h | 76 + xchat-2.8.8/src/common/textevents.h | 424 + xchat-2.8.8/src/common/textevents.in | 840 + xchat-2.8.8/src/common/tree.c | 215 + xchat-2.8.8/src/common/tree.h | 16 + xchat-2.8.8/src/common/url.c | 280 + xchat-2.8.8/src/common/url.h | 19 + xchat-2.8.8/src/common/userlist.c | 454 + xchat-2.8.8/src/common/userlist.h | 41 + xchat-2.8.8/src/common/util.c | 1729 ++ xchat-2.8.8/src/common/util.h | 54 + xchat-2.8.8/src/common/xchat-plugin.h | 334 + xchat-2.8.8/src/common/xchat.c | 936 + xchat-2.8.8/src/common/xchat.h | 573 + xchat-2.8.8/src/common/xchatc.h | 39 + xchat-2.8.8/src/fe-gtk/.deps/about.Po | 1 + xchat-2.8.8/src/fe-gtk/.deps/ascii.Po | 1 + xchat-2.8.8/src/fe-gtk/.deps/banlist.Po | 1 + xchat-2.8.8/src/fe-gtk/.deps/chanlist.Po | 1 + xchat-2.8.8/src/fe-gtk/.deps/chanview.Po | 1 + xchat-2.8.8/src/fe-gtk/.deps/custom-list.Po | 1 + xchat-2.8.8/src/fe-gtk/.deps/dccgui.Po | 1 + xchat-2.8.8/src/fe-gtk/.deps/editlist.Po | 1 + xchat-2.8.8/src/fe-gtk/.deps/fe-gtk.Po | 1 + xchat-2.8.8/src/fe-gtk/.deps/fkeys.Po | 1 + xchat-2.8.8/src/fe-gtk/.deps/gtkutil.Po | 1 + xchat-2.8.8/src/fe-gtk/.deps/ignoregui.Po | 1 + xchat-2.8.8/src/fe-gtk/.deps/joind.Po | 1 + xchat-2.8.8/src/fe-gtk/.deps/maingui.Po | 1 + xchat-2.8.8/src/fe-gtk/.deps/menu.Po | 1 + xchat-2.8.8/src/fe-gtk/.deps/mmx_cmod.Po | 1 + xchat-2.8.8/src/fe-gtk/.deps/notifygui.Po | 1 + xchat-2.8.8/src/fe-gtk/.deps/palette.Po | 1 + xchat-2.8.8/src/fe-gtk/.deps/pixmaps.Po | 1 + xchat-2.8.8/src/fe-gtk/.deps/plugin-tray.Po | 1 + xchat-2.8.8/src/fe-gtk/.deps/plugingui.Po | 1 + xchat-2.8.8/src/fe-gtk/.deps/rawlog.Po | 1 + xchat-2.8.8/src/fe-gtk/.deps/search.Po | 1 + xchat-2.8.8/src/fe-gtk/.deps/servlistgui.Po | 1 + xchat-2.8.8/src/fe-gtk/.deps/setup.Po | 1 + .../src/fe-gtk/.deps/sexy-spell-entry.Po | 1 + xchat-2.8.8/src/fe-gtk/.deps/textgui.Po | 1 + xchat-2.8.8/src/fe-gtk/.deps/urlgrab.Po | 1 + xchat-2.8.8/src/fe-gtk/.deps/userlistgui.Po | 1 + xchat-2.8.8/src/fe-gtk/.deps/xtext.Po | 1 + xchat-2.8.8/src/fe-gtk/Makefile | 688 + xchat-2.8.8/src/fe-gtk/Makefile.am | 32 + xchat-2.8.8/src/fe-gtk/Makefile.in | 688 + xchat-2.8.8/src/fe-gtk/about.c | 161 + xchat-2.8.8/src/fe-gtk/about.h | 1 + xchat-2.8.8/src/fe-gtk/ascii.c | 177 + xchat-2.8.8/src/fe-gtk/ascii.h | 1 + xchat-2.8.8/src/fe-gtk/banlist.c | 418 + xchat-2.8.8/src/fe-gtk/banlist.h | 1 + xchat-2.8.8/src/fe-gtk/chanlist.c | 943 + xchat-2.8.8/src/fe-gtk/chanlist.h | 1 + xchat-2.8.8/src/fe-gtk/chanview-tabs.c | 779 + xchat-2.8.8/src/fe-gtk/chanview-tree.c | 364 + xchat-2.8.8/src/fe-gtk/chanview.c | 643 + xchat-2.8.8/src/fe-gtk/chanview.h | 31 + xchat-2.8.8/src/fe-gtk/custom-list.c | 753 + xchat-2.8.8/src/fe-gtk/custom-list.h | 85 + xchat-2.8.8/src/fe-gtk/dccgui.c | 1098 + xchat-2.8.8/src/fe-gtk/editlist.c | 409 + xchat-2.8.8/src/fe-gtk/editlist.h | 1 + xchat-2.8.8/src/fe-gtk/fe-gtk.c | 1059 + xchat-2.8.8/src/fe-gtk/fe-gtk.h | 197 + xchat-2.8.8/src/fe-gtk/fkeys.c | 1814 ++ xchat-2.8.8/src/fe-gtk/fkeys.h | 5 + xchat-2.8.8/src/fe-gtk/gtkutil.c | 675 + xchat-2.8.8/src/fe-gtk/gtkutil.h | 39 + xchat-2.8.8/src/fe-gtk/ignoregui.c | 449 + xchat-2.8.8/src/fe-gtk/joind.c | 257 + xchat-2.8.8/src/fe-gtk/joind.h | 2 + xchat-2.8.8/src/fe-gtk/maingui.c | 3796 +++ xchat-2.8.8/src/fe-gtk/maingui.h | 33 + xchat-2.8.8/src/fe-gtk/menu.c | 2270 ++ xchat-2.8.8/src/fe-gtk/menu.h | 41 + xchat-2.8.8/src/fe-gtk/mmx_cmod.S | 530 + xchat-2.8.8/src/fe-gtk/mmx_cmod.h | 4 + xchat-2.8.8/src/fe-gtk/notifygui.c | 442 + xchat-2.8.8/src/fe-gtk/notifygui.h | 2 + xchat-2.8.8/src/fe-gtk/palette.c | 226 + xchat-2.8.8/src/fe-gtk/palette.h | 15 + xchat-2.8.8/src/fe-gtk/pixmaps.c | 123 + xchat-2.8.8/src/fe-gtk/pixmaps.h | 19 + xchat-2.8.8/src/fe-gtk/plugin-tray.c | 853 + xchat-2.8.8/src/fe-gtk/plugin-tray.h | 4 + xchat-2.8.8/src/fe-gtk/plugingui.c | 239 + xchat-2.8.8/src/fe-gtk/plugingui.h | 2 + xchat-2.8.8/src/fe-gtk/rawlog.c | 152 + xchat-2.8.8/src/fe-gtk/rawlog.h | 1 + xchat-2.8.8/src/fe-gtk/search.c | 159 + xchat-2.8.8/src/fe-gtk/search.h | 1 + xchat-2.8.8/src/fe-gtk/servlistgui.c | 1889 ++ xchat-2.8.8/src/fe-gtk/setup.c | 2134 ++ xchat-2.8.8/src/fe-gtk/sexy-spell-entry.c | 1329 + xchat-2.8.8/src/fe-gtk/sexy-spell-entry.h | 87 + xchat-2.8.8/src/fe-gtk/textgui.c | 456 + xchat-2.8.8/src/fe-gtk/textgui.h | 2 + xchat-2.8.8/src/fe-gtk/urlgrab.c | 208 + xchat-2.8.8/src/fe-gtk/urlgrab.h | 2 + xchat-2.8.8/src/fe-gtk/userlistgui.c | 718 + xchat-2.8.8/src/fe-gtk/userlistgui.h | 8 + xchat-2.8.8/src/fe-gtk/xtext.c | 5452 ++++ xchat-2.8.8/src/fe-gtk/xtext.h | 275 + xchat-2.8.8/src/fe-text/.deps/fe-text.Po | 1 + xchat-2.8.8/src/fe-text/Makefile | 599 + xchat-2.8.8/src/fe-text/Makefile.am | 9 + xchat-2.8.8/src/fe-text/Makefile.in | 599 + xchat-2.8.8/src/fe-text/README | 5 + xchat-2.8.8/src/fe-text/fe-text.c | 862 + xchat-2.8.8/src/fe-text/fe-text.h | 29 + xchat-2.8.8/src/pixmaps/Makefile | 508 + xchat-2.8.8/src/pixmaps/Makefile.am | 20 + xchat-2.8.8/src/pixmaps/Makefile.in | 508 + xchat-2.8.8/src/pixmaps/book.png | Bin 0 -> 841 bytes xchat-2.8.8/src/pixmaps/fileoffer.png | Bin 0 -> 5637 bytes xchat-2.8.8/src/pixmaps/highlight.png | Bin 0 -> 5544 bytes xchat-2.8.8/src/pixmaps/hop.png | Bin 0 -> 262 bytes xchat-2.8.8/src/pixmaps/inline_pngs.h | 1939 ++ xchat-2.8.8/src/pixmaps/message.png | Bin 0 -> 5152 bytes xchat-2.8.8/src/pixmaps/op.png | Bin 0 -> 246 bytes xchat-2.8.8/src/pixmaps/purple.png | Bin 0 -> 240 bytes xchat-2.8.8/src/pixmaps/red.png | Bin 0 -> 212 bytes xchat-2.8.8/src/pixmaps/voice.png | Bin 0 -> 267 bytes xchat-2.8.8/src/version-script | 34 + xchat-2.8.8/stamp-h1 | 1 + xchat-2.8.8/xchat.desktop | 23 + xchat-2.8.8/xchat.ico | Bin 0 -> 26694 bytes xchat-2.8.8/xchat.png | Bin 0 -> 3144 bytes xchat-2.8.8/xchat.spec | 141 + 1084 files changed, 1122272 insertions(+) create mode 100644 etc/wyatt8740/ABOUT-NLS create mode 100644 etc/wyatt8740/AUTHORS create mode 100644 etc/wyatt8740/COMPILE_NOTES.txt create mode 100644 etc/wyatt8740/COPYING create mode 100644 etc/wyatt8740/ChangeLog create mode 100644 etc/wyatt8740/HACKING create mode 100644 etc/wyatt8740/INSTALL create mode 100644 etc/wyatt8740/INSTALL.w32 create mode 100644 etc/wyatt8740/Makefile.am create mode 100644 etc/wyatt8740/Makefile.in create mode 100644 etc/wyatt8740/NEWS create mode 100644 etc/wyatt8740/README create mode 100644 etc/wyatt8740/acinclude.m4 create mode 100644 etc/wyatt8740/aclocal.m4 create mode 100755 etc/wyatt8740/autogen.sh create mode 100755 etc/wyatt8740/config.guess create mode 100644 etc/wyatt8740/config.h.in create mode 100644 etc/wyatt8740/config.h.w32 create mode 100644 etc/wyatt8740/config.log create mode 100755 etc/wyatt8740/config.rpath create mode 100755 etc/wyatt8740/config.sub create mode 100755 etc/wyatt8740/configure create mode 100644 etc/wyatt8740/configure.ac create mode 100644 etc/wyatt8740/faq.html create mode 100755 etc/wyatt8740/install-sh create mode 100644 etc/wyatt8740/intl/ChangeLog create mode 100644 etc/wyatt8740/intl/Makefile.in create mode 100644 etc/wyatt8740/intl/VERSION create mode 100644 etc/wyatt8740/intl/bindtextdom.c create mode 100755 etc/wyatt8740/intl/config.charset create mode 100644 etc/wyatt8740/intl/dcgettext.c create mode 100644 etc/wyatt8740/intl/dcigettext.c create mode 100644 etc/wyatt8740/intl/dcngettext.c create mode 100644 etc/wyatt8740/intl/dgettext.c create mode 100644 etc/wyatt8740/intl/dngettext.c create mode 100644 etc/wyatt8740/intl/eval-plural.h create mode 100644 etc/wyatt8740/intl/explodename.c create mode 100644 etc/wyatt8740/intl/export.h create mode 100644 etc/wyatt8740/intl/finddomain.c create mode 100644 etc/wyatt8740/intl/gettext.c create mode 100644 etc/wyatt8740/intl/gettextP.h create mode 100644 etc/wyatt8740/intl/gmo.h create mode 100644 etc/wyatt8740/intl/hash-string.c create mode 100644 etc/wyatt8740/intl/hash-string.h create mode 100644 etc/wyatt8740/intl/intl-compat.c create mode 100644 etc/wyatt8740/intl/intl-exports.c create mode 100644 etc/wyatt8740/intl/l10nflist.c create mode 100644 etc/wyatt8740/intl/langprefs.c create mode 100644 etc/wyatt8740/intl/libgnuintl.h.in create mode 100644 etc/wyatt8740/intl/libintl.rc create mode 100644 etc/wyatt8740/intl/loadinfo.h create mode 100644 etc/wyatt8740/intl/loadmsgcat.c create mode 100644 etc/wyatt8740/intl/localcharset.c create mode 100644 etc/wyatt8740/intl/localcharset.h create mode 100644 etc/wyatt8740/intl/locale.alias create mode 100644 etc/wyatt8740/intl/localealias.c create mode 100644 etc/wyatt8740/intl/localename.c create mode 100644 etc/wyatt8740/intl/lock.c create mode 100644 etc/wyatt8740/intl/lock.h create mode 100644 etc/wyatt8740/intl/log.c create mode 100644 etc/wyatt8740/intl/ngettext.c create mode 100644 etc/wyatt8740/intl/os2compat.c create mode 100644 etc/wyatt8740/intl/os2compat.h create mode 100644 etc/wyatt8740/intl/osdep.c create mode 100644 etc/wyatt8740/intl/plural-exp.c create mode 100644 etc/wyatt8740/intl/plural-exp.h create mode 100644 etc/wyatt8740/intl/plural.c create mode 100644 etc/wyatt8740/intl/plural.y create mode 100644 etc/wyatt8740/intl/printf-args.c create mode 100644 etc/wyatt8740/intl/printf-args.h create mode 100644 etc/wyatt8740/intl/printf-parse.c create mode 100644 etc/wyatt8740/intl/printf-parse.h create mode 100644 etc/wyatt8740/intl/printf.c create mode 100644 etc/wyatt8740/intl/ref-add.sin create mode 100644 etc/wyatt8740/intl/ref-del.sin create mode 100644 etc/wyatt8740/intl/relocatable.c create mode 100644 etc/wyatt8740/intl/relocatable.h create mode 100644 etc/wyatt8740/intl/textdomain.c create mode 100644 etc/wyatt8740/intl/tsearch.c create mode 100644 etc/wyatt8740/intl/tsearch.h create mode 100644 etc/wyatt8740/intl/vasnprintf.c create mode 100644 etc/wyatt8740/intl/vasnprintf.h create mode 100644 etc/wyatt8740/intl/vasnwprintf.h create mode 100644 etc/wyatt8740/intl/version.c create mode 100644 etc/wyatt8740/intl/wprintf-parse.h create mode 100644 etc/wyatt8740/intl/xsize.h create mode 100644 etc/wyatt8740/plugins/Make.plugin create mode 100644 etc/wyatt8740/plugins/Makefile.am create mode 100644 etc/wyatt8740/plugins/Makefile.in create mode 100644 etc/wyatt8740/plugins/perl/IRC.pm create mode 100644 etc/wyatt8740/plugins/perl/Makefile.am create mode 100644 etc/wyatt8740/plugins/perl/Makefile.in create mode 100644 etc/wyatt8740/plugins/perl/Pod/Pod/Html.pm create mode 100644 etc/wyatt8740/plugins/perl/Xchat.pm create mode 100644 etc/wyatt8740/plugins/perl/alt_completion.pl create mode 100755 etc/wyatt8740/plugins/perl/generate_header create mode 100644 etc/wyatt8740/plugins/perl/perl.c create mode 100644 etc/wyatt8740/plugins/perl/xchat2-perl.html create mode 100644 etc/wyatt8740/plugins/perl/xchat2-perldocs.html create mode 100644 etc/wyatt8740/plugins/plugin-conf.in create mode 100644 etc/wyatt8740/plugins/plugin20.html create mode 100644 etc/wyatt8740/plugins/python/Makefile.am create mode 100644 etc/wyatt8740/plugins/python/Makefile.in create mode 100644 etc/wyatt8740/plugins/python/python.c create mode 100644 etc/wyatt8740/plugins/tcl/Makefile.am create mode 100644 etc/wyatt8740/plugins/tcl/Makefile.in create mode 100644 etc/wyatt8740/plugins/tcl/README create mode 100755 etc/wyatt8740/plugins/tcl/printevents.h create mode 100755 etc/wyatt8740/plugins/tcl/tclplugin.c create mode 100755 etc/wyatt8740/plugins/tcl/tclplugin.h create mode 100644 etc/wyatt8740/plugins/xchat-plugin.h create mode 100644 etc/wyatt8740/plugins/xdcc/Makefile.am create mode 100644 etc/wyatt8740/plugins/xdcc/xdcc.c create mode 100644 etc/wyatt8740/plugins_extra/README.md create mode 100755 etc/wyatt8740/plugins_extra/cap_sasl_xchat.pl create mode 100755 etc/wyatt8740/plugins_extra/cap_sasl_xchat.py create mode 100644 etc/wyatt8740/plugins_extra/cap_sasl_xchat_old.pl create mode 100644 etc/wyatt8740/po/Makefile.in create mode 100644 etc/wyatt8740/po/Makefile.in.in create mode 100644 etc/wyatt8740/po/Makevars create mode 100644 etc/wyatt8740/po/POTFILES.in create mode 100644 etc/wyatt8740/po/be.po create mode 100644 etc/wyatt8740/po/ca.po create mode 100644 etc/wyatt8740/po/cs.po create mode 100644 etc/wyatt8740/po/de.po create mode 100644 etc/wyatt8740/po/el.po create mode 100644 etc/wyatt8740/po/es.po create mode 100644 etc/wyatt8740/po/fi.po create mode 100644 etc/wyatt8740/po/fr.po create mode 100644 etc/wyatt8740/po/gl.po create mode 100644 etc/wyatt8740/po/hu.po create mode 100644 etc/wyatt8740/po/it.po create mode 100644 etc/wyatt8740/po/ja.po create mode 100644 etc/wyatt8740/po/kn.po create mode 100644 etc/wyatt8740/po/ko.po create mode 100644 etc/wyatt8740/po/lt.po create mode 100644 etc/wyatt8740/po/mk.po create mode 100644 etc/wyatt8740/po/nl.po create mode 100644 etc/wyatt8740/po/pa.po create mode 100644 etc/wyatt8740/po/pl.po create mode 100644 etc/wyatt8740/po/pt.po create mode 100644 etc/wyatt8740/po/remove-potcdate.sin create mode 100644 etc/wyatt8740/po/ru.po create mode 100644 etc/wyatt8740/po/sq.po create mode 100644 etc/wyatt8740/po/sr.po create mode 100644 etc/wyatt8740/po/sv.po create mode 100644 etc/wyatt8740/po/th.po create mode 100644 etc/wyatt8740/po/uk.po create mode 100644 etc/wyatt8740/po/vi.po create mode 100644 etc/wyatt8740/po/xchat.pot create mode 100644 etc/wyatt8740/po/zh_CN.po create mode 100644 etc/wyatt8740/po/zh_TW.po create mode 100644 etc/wyatt8740/src/Makefile.am create mode 100644 etc/wyatt8740/src/Makefile.in create mode 100644 etc/wyatt8740/src/common/Makefile.am create mode 100644 etc/wyatt8740/src/common/Makefile.in create mode 100644 etc/wyatt8740/src/common/cfgfiles.c create mode 100644 etc/wyatt8740/src/common/cfgfiles.h create mode 100644 etc/wyatt8740/src/common/chanopt.c create mode 100644 etc/wyatt8740/src/common/chanopt.h create mode 100644 etc/wyatt8740/src/common/ctcp.c create mode 100644 etc/wyatt8740/src/common/ctcp.h create mode 100644 etc/wyatt8740/src/common/dbus/Makefile.am create mode 100644 etc/wyatt8740/src/common/dbus/Makefile.in create mode 100644 etc/wyatt8740/src/common/dbus/README create mode 100644 etc/wyatt8740/src/common/dbus/apps_xchat_url_handler.schemas create mode 100644 etc/wyatt8740/src/common/dbus/dbus-client.c create mode 100644 etc/wyatt8740/src/common/dbus/dbus-client.h create mode 100644 etc/wyatt8740/src/common/dbus/dbus-plugin.c create mode 100644 etc/wyatt8740/src/common/dbus/dbus-plugin.h create mode 100644 etc/wyatt8740/src/common/dbus/example.c create mode 100755 etc/wyatt8740/src/common/dbus/example.py create mode 100644 etc/wyatt8740/src/common/dbus/marshallers.list create mode 100644 etc/wyatt8740/src/common/dbus/org.xchat.service.service.in create mode 100644 etc/wyatt8740/src/common/dbus/remote-object.xml create mode 100644 etc/wyatt8740/src/common/dcc.c create mode 100644 etc/wyatt8740/src/common/dcc.h create mode 100644 etc/wyatt8740/src/common/fe.h create mode 100644 etc/wyatt8740/src/common/history.c create mode 100644 etc/wyatt8740/src/common/history.h create mode 100644 etc/wyatt8740/src/common/identd.c create mode 100644 etc/wyatt8740/src/common/ignore.c create mode 100644 etc/wyatt8740/src/common/ignore.h create mode 100644 etc/wyatt8740/src/common/inbound.c create mode 100644 etc/wyatt8740/src/common/inbound.h create mode 100644 etc/wyatt8740/src/common/inet.h create mode 100644 etc/wyatt8740/src/common/make-te.c create mode 100644 etc/wyatt8740/src/common/modes.c create mode 100644 etc/wyatt8740/src/common/modes.h create mode 100644 etc/wyatt8740/src/common/msproxy.c create mode 100644 etc/wyatt8740/src/common/msproxy.h create mode 100644 etc/wyatt8740/src/common/network.c create mode 100644 etc/wyatt8740/src/common/network.h create mode 100644 etc/wyatt8740/src/common/notify.c create mode 100644 etc/wyatt8740/src/common/notify.h create mode 100644 etc/wyatt8740/src/common/outbound.c create mode 100644 etc/wyatt8740/src/common/outbound.h create mode 100644 etc/wyatt8740/src/common/plugin-timer.c create mode 100644 etc/wyatt8740/src/common/plugin-timer.h create mode 100644 etc/wyatt8740/src/common/plugin.c create mode 100644 etc/wyatt8740/src/common/plugin.h create mode 100644 etc/wyatt8740/src/common/proto-irc.c create mode 100644 etc/wyatt8740/src/common/proto-irc.h create mode 100644 etc/wyatt8740/src/common/server.c create mode 100644 etc/wyatt8740/src/common/server.h create mode 100644 etc/wyatt8740/src/common/servlist.c create mode 100644 etc/wyatt8740/src/common/servlist.h create mode 100644 etc/wyatt8740/src/common/ssl.c create mode 100644 etc/wyatt8740/src/common/ssl.h create mode 100644 etc/wyatt8740/src/common/text.c create mode 100644 etc/wyatt8740/src/common/text.h create mode 100644 etc/wyatt8740/src/common/textenums.h create mode 100644 etc/wyatt8740/src/common/textevents.h create mode 100644 etc/wyatt8740/src/common/textevents.in create mode 100644 etc/wyatt8740/src/common/tree.c create mode 100644 etc/wyatt8740/src/common/tree.h create mode 100644 etc/wyatt8740/src/common/url.c create mode 100644 etc/wyatt8740/src/common/url.h create mode 100644 etc/wyatt8740/src/common/userlist.c create mode 100644 etc/wyatt8740/src/common/userlist.h create mode 100644 etc/wyatt8740/src/common/util.c create mode 100644 etc/wyatt8740/src/common/util.h create mode 100644 etc/wyatt8740/src/common/xchat-plugin.h create mode 100644 etc/wyatt8740/src/common/xchat.c create mode 100644 etc/wyatt8740/src/common/xchat.h create mode 100644 etc/wyatt8740/src/common/xchatc.h create mode 100644 etc/wyatt8740/src/fe-gtk/Makefile.am create mode 100644 etc/wyatt8740/src/fe-gtk/Makefile.in create mode 100644 etc/wyatt8740/src/fe-gtk/about.c create mode 100644 etc/wyatt8740/src/fe-gtk/about.h create mode 100644 etc/wyatt8740/src/fe-gtk/ascii.c create mode 100644 etc/wyatt8740/src/fe-gtk/ascii.h create mode 100644 etc/wyatt8740/src/fe-gtk/banlist.c create mode 100644 etc/wyatt8740/src/fe-gtk/banlist.h create mode 100644 etc/wyatt8740/src/fe-gtk/chanlist.c create mode 100644 etc/wyatt8740/src/fe-gtk/chanlist.h create mode 100644 etc/wyatt8740/src/fe-gtk/chanview-tabs.c create mode 100644 etc/wyatt8740/src/fe-gtk/chanview-tree.c create mode 100644 etc/wyatt8740/src/fe-gtk/chanview.c create mode 100644 etc/wyatt8740/src/fe-gtk/chanview.h create mode 100644 etc/wyatt8740/src/fe-gtk/custom-list.c create mode 100644 etc/wyatt8740/src/fe-gtk/custom-list.h create mode 100644 etc/wyatt8740/src/fe-gtk/dccgui.c create mode 100644 etc/wyatt8740/src/fe-gtk/editlist.c create mode 100644 etc/wyatt8740/src/fe-gtk/editlist.h create mode 100644 etc/wyatt8740/src/fe-gtk/fe-gtk.c create mode 100644 etc/wyatt8740/src/fe-gtk/fe-gtk.h create mode 100644 etc/wyatt8740/src/fe-gtk/fkeys.c create mode 100644 etc/wyatt8740/src/fe-gtk/fkeys.h create mode 100644 etc/wyatt8740/src/fe-gtk/gtkutil.c create mode 100644 etc/wyatt8740/src/fe-gtk/gtkutil.h create mode 100644 etc/wyatt8740/src/fe-gtk/ignoregui.c create mode 100644 etc/wyatt8740/src/fe-gtk/joind.c create mode 100644 etc/wyatt8740/src/fe-gtk/joind.h create mode 100644 etc/wyatt8740/src/fe-gtk/maingui.c create mode 100644 etc/wyatt8740/src/fe-gtk/maingui.h create mode 100644 etc/wyatt8740/src/fe-gtk/menu.c create mode 100644 etc/wyatt8740/src/fe-gtk/menu.h create mode 100644 etc/wyatt8740/src/fe-gtk/mmx_cmod.S create mode 100644 etc/wyatt8740/src/fe-gtk/mmx_cmod.h create mode 100644 etc/wyatt8740/src/fe-gtk/notifygui.c create mode 100644 etc/wyatt8740/src/fe-gtk/notifygui.h create mode 100644 etc/wyatt8740/src/fe-gtk/palette.c create mode 100644 etc/wyatt8740/src/fe-gtk/palette.h create mode 100644 etc/wyatt8740/src/fe-gtk/pixmaps.c create mode 100644 etc/wyatt8740/src/fe-gtk/pixmaps.h create mode 100644 etc/wyatt8740/src/fe-gtk/plugin-tray.c create mode 100644 etc/wyatt8740/src/fe-gtk/plugin-tray.h create mode 100644 etc/wyatt8740/src/fe-gtk/plugingui.c create mode 100644 etc/wyatt8740/src/fe-gtk/plugingui.h create mode 100644 etc/wyatt8740/src/fe-gtk/rawlog.c create mode 100644 etc/wyatt8740/src/fe-gtk/rawlog.h create mode 100644 etc/wyatt8740/src/fe-gtk/search.c create mode 100644 etc/wyatt8740/src/fe-gtk/search.h create mode 100644 etc/wyatt8740/src/fe-gtk/servlistgui.c create mode 100644 etc/wyatt8740/src/fe-gtk/setup.c create mode 100644 etc/wyatt8740/src/fe-gtk/sexy-spell-entry.c create mode 100644 etc/wyatt8740/src/fe-gtk/sexy-spell-entry.h create mode 100644 etc/wyatt8740/src/fe-gtk/textgui.c create mode 100644 etc/wyatt8740/src/fe-gtk/textgui.h create mode 100644 etc/wyatt8740/src/fe-gtk/urlgrab.c create mode 100644 etc/wyatt8740/src/fe-gtk/urlgrab.h create mode 100644 etc/wyatt8740/src/fe-gtk/userlistgui.c create mode 100644 etc/wyatt8740/src/fe-gtk/userlistgui.h create mode 100644 etc/wyatt8740/src/fe-gtk/xtext.c create mode 100644 etc/wyatt8740/src/fe-gtk/xtext.h create mode 100644 etc/wyatt8740/src/fe-text/Makefile.am create mode 100644 etc/wyatt8740/src/fe-text/Makefile.in create mode 100644 etc/wyatt8740/src/fe-text/README create mode 100644 etc/wyatt8740/src/fe-text/fe-text.c create mode 100644 etc/wyatt8740/src/fe-text/fe-text.h create mode 100644 etc/wyatt8740/src/pixmaps/Makefile.am create mode 100644 etc/wyatt8740/src/pixmaps/Makefile.in create mode 100644 etc/wyatt8740/src/pixmaps/book.png create mode 100644 etc/wyatt8740/src/pixmaps/fileoffer.png create mode 100644 etc/wyatt8740/src/pixmaps/highlight.png create mode 100644 etc/wyatt8740/src/pixmaps/hop.png create mode 100644 etc/wyatt8740/src/pixmaps/message.png create mode 100644 etc/wyatt8740/src/pixmaps/op.png create mode 100644 etc/wyatt8740/src/pixmaps/purple.png create mode 100644 etc/wyatt8740/src/pixmaps/red.png create mode 100644 etc/wyatt8740/src/pixmaps/voice.png create mode 100644 etc/wyatt8740/src/version-script create mode 100644 etc/wyatt8740/xchat.desktop create mode 100644 etc/wyatt8740/xchat.ico create mode 100644 etc/wyatt8740/xchat.png create mode 100644 etc/wyatt8740/xchat.spec create mode 100644 hexchat/.editorconfig create mode 100644 hexchat/.gitignore create mode 100644 hexchat/.lgtm.yml create mode 100644 hexchat/.mailmap create mode 100644 hexchat/.tx/config create mode 100644 hexchat/.tx/howto.md create mode 100644 hexchat/COPYING create mode 100644 hexchat/data/hexchat.gresource.xml create mode 100644 hexchat/data/icons/book.png create mode 100644 hexchat/data/icons/hexchat-b.svg create mode 100644 hexchat/data/icons/hexchat-shadowless.svg create mode 100644 hexchat/data/icons/hexchat.ico create mode 100644 hexchat/data/icons/hexchat.png create mode 100644 hexchat/data/icons/hexchat.svg create mode 100644 hexchat/data/icons/meson.build create mode 100644 hexchat/data/icons/tray_fileoffer.png create mode 100644 hexchat/data/icons/tray_highlight.png create mode 100644 hexchat/data/icons/tray_message.png create mode 100644 hexchat/data/icons/tree_channel.png create mode 100644 hexchat/data/icons/tree_dialog.png create mode 100644 hexchat/data/icons/tree_server.png create mode 100644 hexchat/data/icons/tree_util.png create mode 100644 hexchat/data/icons/ulist_founder.png create mode 100644 hexchat/data/icons/ulist_halfop.png create mode 100644 hexchat/data/icons/ulist_netop.png create mode 100644 hexchat/data/icons/ulist_op.png create mode 100644 hexchat/data/icons/ulist_owner.png create mode 100644 hexchat/data/icons/ulist_voice.png create mode 100644 hexchat/data/man/hexchat.1.in create mode 100644 hexchat/data/man/meson.build create mode 100644 hexchat/data/meson.build create mode 100644 hexchat/data/misc/io.github.Hexchat.Plugin.metainfo.xml.in create mode 100644 hexchat/data/misc/io.github.Hexchat.ThemeManager.desktop.in create mode 100644 hexchat/data/misc/io.github.Hexchat.ThemeManager.xml create mode 100644 hexchat/data/misc/io.github.Hexchat.appdata.xml.in create mode 100644 hexchat/data/misc/io.github.Hexchat.desktop.in.in create mode 100644 hexchat/data/misc/meson.build create mode 100644 hexchat/data/pkgconfig/hexchat-plugin.pc.in create mode 100644 hexchat/data/pkgconfig/meson.build create mode 100644 hexchat/plugins/checksum/checksum.c create mode 100644 hexchat/plugins/checksum/checksum.def create mode 100644 hexchat/plugins/checksum/checksum.vcxproj create mode 100644 hexchat/plugins/checksum/checksum.vcxproj.filters create mode 100644 hexchat/plugins/checksum/meson.build create mode 100644 hexchat/plugins/exec/exec.c create mode 100644 hexchat/plugins/exec/exec.def create mode 100644 hexchat/plugins/exec/exec.vcxproj create mode 100644 hexchat/plugins/exec/exec.vcxproj.filters create mode 100644 hexchat/plugins/exec/meson.build create mode 100644 hexchat/plugins/fishlim/LICENSE create mode 100644 hexchat/plugins/fishlim/dh1080.c create mode 100644 hexchat/plugins/fishlim/dh1080.h create mode 100644 hexchat/plugins/fishlim/fish.c create mode 100644 hexchat/plugins/fishlim/fish.h create mode 100644 hexchat/plugins/fishlim/fishlim.def create mode 100644 hexchat/plugins/fishlim/fishlim.vcxproj create mode 100644 hexchat/plugins/fishlim/fishlim.vcxproj.filters create mode 100644 hexchat/plugins/fishlim/irc.c create mode 100644 hexchat/plugins/fishlim/irc.h create mode 100644 hexchat/plugins/fishlim/keystore.c create mode 100644 hexchat/plugins/fishlim/keystore.h create mode 100644 hexchat/plugins/fishlim/meson.build create mode 100644 hexchat/plugins/fishlim/plugin_hexchat.c create mode 100644 hexchat/plugins/fishlim/plugin_hexchat.h create mode 100644 hexchat/plugins/fishlim/tests/meson.build create mode 100644 hexchat/plugins/fishlim/tests/mock-keystore.c create mode 100644 hexchat/plugins/fishlim/tests/tests.c create mode 100644 hexchat/plugins/fishlim/utils.c create mode 100644 hexchat/plugins/fishlim/utils.h create mode 100644 hexchat/plugins/lua/lua.c create mode 100644 hexchat/plugins/lua/lua.vcxproj create mode 100644 hexchat/plugins/lua/lua.vcxproj.filters create mode 100644 hexchat/plugins/lua/meson.build create mode 100644 hexchat/plugins/perl/generate_header create mode 100755 hexchat/plugins/perl/generate_header.py create mode 100644 hexchat/plugins/perl/lib/HexChat.pm create mode 100644 hexchat/plugins/perl/lib/HexChat/Embed.pm create mode 100644 hexchat/plugins/perl/lib/HexChat/List/Network.pm create mode 100644 hexchat/plugins/perl/lib/HexChat/List/Network/AutoJoin.pm create mode 100644 hexchat/plugins/perl/lib/HexChat/List/Network/Entry.pm create mode 100644 hexchat/plugins/perl/lib/IRC.pm create mode 100644 hexchat/plugins/perl/lib/Xchat.pm create mode 100644 hexchat/plugins/perl/meson.build create mode 100644 hexchat/plugins/perl/perl.c create mode 100644 hexchat/plugins/perl/perl.def create mode 100644 hexchat/plugins/perl/perl.vcxproj create mode 100644 hexchat/plugins/perl/perl.vcxproj.filters create mode 100644 hexchat/plugins/python/_hexchat.py create mode 100755 hexchat/plugins/python/generate_plugin.py create mode 100644 hexchat/plugins/python/hexchat.py create mode 100644 hexchat/plugins/python/meson.build create mode 100644 hexchat/plugins/python/python.def create mode 100644 hexchat/plugins/python/python.py create mode 100644 hexchat/plugins/python/python3.vcxproj create mode 100644 hexchat/plugins/python/python3.vcxproj.filters create mode 100644 hexchat/plugins/python/python_style_guide.md create mode 100644 hexchat/plugins/python/xchat.py create mode 100644 hexchat/plugins/sysinfo/format.c create mode 100644 hexchat/plugins/sysinfo/format.h create mode 100644 hexchat/plugins/sysinfo/meson.build create mode 100644 hexchat/plugins/sysinfo/osx/backend.m create mode 100644 hexchat/plugins/sysinfo/shared/df.c create mode 100644 hexchat/plugins/sysinfo/shared/df.h create mode 100644 hexchat/plugins/sysinfo/sysinfo-backend.h create mode 100644 hexchat/plugins/sysinfo/sysinfo.c create mode 100644 hexchat/plugins/sysinfo/sysinfo.def create mode 100644 hexchat/plugins/sysinfo/sysinfo.h create mode 100644 hexchat/plugins/sysinfo/sysinfo.vcxproj create mode 100644 hexchat/plugins/sysinfo/sysinfo.vcxproj.filters create mode 100644 hexchat/plugins/sysinfo/unix/backend.c create mode 100644 hexchat/plugins/sysinfo/unix/match.c create mode 100644 hexchat/plugins/sysinfo/unix/match.h create mode 100644 hexchat/plugins/sysinfo/unix/parse.c create mode 100644 hexchat/plugins/sysinfo/unix/parse.h create mode 100644 hexchat/plugins/sysinfo/unix/pci.c create mode 100644 hexchat/plugins/sysinfo/unix/pci.h create mode 100644 hexchat/plugins/sysinfo/win32/backend.c create mode 100644 hexchat/plugins/upd/meson.build create mode 100644 hexchat/plugins/upd/upd.c create mode 100644 hexchat/plugins/upd/upd.def create mode 100644 hexchat/plugins/upd/upd.vcxproj create mode 100644 hexchat/plugins/upd/upd.vcxproj.filters create mode 100644 hexchat/po/LINGUAS create mode 100644 hexchat/po/POTFILES create mode 100644 hexchat/po/POTFILES.skip create mode 100644 hexchat/po/af.po create mode 100644 hexchat/po/am.po create mode 100644 hexchat/po/ast.po create mode 100644 hexchat/po/az.po create mode 100644 hexchat/po/be.po create mode 100644 hexchat/po/bg.po create mode 100644 hexchat/po/ca.po create mode 100644 hexchat/po/cs.po create mode 100644 hexchat/po/da.po create mode 100644 hexchat/po/de.po create mode 100644 hexchat/po/el.po create mode 100644 hexchat/po/en_GB.po create mode 100644 hexchat/po/es.po create mode 100644 hexchat/po/et.po create mode 100644 hexchat/po/eu.po create mode 100644 hexchat/po/fi.po create mode 100644 hexchat/po/fr.po create mode 100644 hexchat/po/gl.po create mode 100644 hexchat/po/gu.po create mode 100644 hexchat/po/hi.po create mode 100644 hexchat/po/hu.po create mode 100644 hexchat/po/id.po create mode 100644 hexchat/po/it.po create mode 100644 hexchat/po/ja_JP.po create mode 100644 hexchat/po/kn.po create mode 100644 hexchat/po/ko.po create mode 100644 hexchat/po/lt.po create mode 100644 hexchat/po/lv.po create mode 100644 hexchat/po/meson.build create mode 100644 hexchat/po/mk.po create mode 100644 hexchat/po/ml.po create mode 100644 hexchat/po/ms.po create mode 100644 hexchat/po/nb.po create mode 100644 hexchat/po/nl.po create mode 100644 hexchat/po/no.po create mode 100644 hexchat/po/pa.po create mode 100644 hexchat/po/pl.po create mode 100644 hexchat/po/pt.po create mode 100644 hexchat/po/pt_BR.po create mode 100644 hexchat/po/remove-potcdate.sin create mode 100644 hexchat/po/ru.po create mode 100644 hexchat/po/rw.po create mode 100644 hexchat/po/sk.po create mode 100644 hexchat/po/sl.po create mode 100644 hexchat/po/sq.po create mode 100644 hexchat/po/sr.po create mode 100644 hexchat/po/sr@latin.po create mode 100644 hexchat/po/sv.po create mode 100644 hexchat/po/th.po create mode 100644 hexchat/po/tr.po create mode 100644 hexchat/po/uk.po create mode 100755 hexchat/po/validate-textevent-translations create mode 100644 hexchat/po/vi.po create mode 100644 hexchat/po/wa.po create mode 100644 hexchat/po/zh_CN.po create mode 100644 hexchat/po/zh_TW.po create mode 100644 hexchat/src/common/cfgfiles.c create mode 100644 hexchat/src/common/cfgfiles.h create mode 100644 hexchat/src/common/chanopt.c create mode 100644 hexchat/src/common/chanopt.h create mode 100644 hexchat/src/common/common.vcxproj create mode 100644 hexchat/src/common/common.vcxproj.filters create mode 100644 hexchat/src/common/ctcp.c create mode 100644 hexchat/src/common/ctcp.h create mode 100644 hexchat/src/common/dbus/dbus-client.c create mode 100644 hexchat/src/common/dbus/dbus-client.h create mode 100644 hexchat/src/common/dbus/dbus-plugin.c create mode 100644 hexchat/src/common/dbus/dbus-plugin.h create mode 100644 hexchat/src/common/dbus/example.c create mode 100644 hexchat/src/common/dbus/example.py create mode 100644 hexchat/src/common/dbus/meson.build create mode 100644 hexchat/src/common/dbus/org.hexchat.service.service.in create mode 100644 hexchat/src/common/dbus/remote-object.xml create mode 100644 hexchat/src/common/dcc.c create mode 100644 hexchat/src/common/dcc.h create mode 100644 hexchat/src/common/fe.h create mode 100644 hexchat/src/common/hexchat-plugin.h create mode 100644 hexchat/src/common/hexchat.c create mode 100644 hexchat/src/common/hexchat.h create mode 100644 hexchat/src/common/hexchatc.h create mode 100644 hexchat/src/common/history.c create mode 100644 hexchat/src/common/history.h create mode 100644 hexchat/src/common/ignore.c create mode 100644 hexchat/src/common/ignore.h create mode 100644 hexchat/src/common/inbound.c create mode 100644 hexchat/src/common/inbound.h create mode 100644 hexchat/src/common/inet.h create mode 100755 hexchat/src/common/make-te.py create mode 100644 hexchat/src/common/marshalers.list create mode 100644 hexchat/src/common/meson.build create mode 100644 hexchat/src/common/modes.c create mode 100644 hexchat/src/common/modes.h create mode 100644 hexchat/src/common/network.c create mode 100644 hexchat/src/common/network.h create mode 100644 hexchat/src/common/notify.c create mode 100644 hexchat/src/common/notify.h create mode 100644 hexchat/src/common/outbound.c create mode 100644 hexchat/src/common/outbound.h create mode 100644 hexchat/src/common/plugin-identd.c create mode 100644 hexchat/src/common/plugin-identd.h create mode 100644 hexchat/src/common/plugin-timer.c create mode 100644 hexchat/src/common/plugin-timer.h create mode 100644 hexchat/src/common/plugin.c create mode 100644 hexchat/src/common/plugin.h create mode 100644 hexchat/src/common/proto-irc.c create mode 100644 hexchat/src/common/proto-irc.h create mode 100644 hexchat/src/common/scram.c create mode 100644 hexchat/src/common/scram.h create mode 100644 hexchat/src/common/server.c create mode 100644 hexchat/src/common/server.h create mode 100644 hexchat/src/common/servlist.c create mode 100644 hexchat/src/common/servlist.h create mode 100644 hexchat/src/common/ssl.c create mode 100644 hexchat/src/common/ssl.h create mode 100644 hexchat/src/common/sysinfo/sysinfo.h create mode 100644 hexchat/src/common/sysinfo/win32/backend.c create mode 100644 hexchat/src/common/text.c create mode 100644 hexchat/src/common/text.h create mode 100644 hexchat/src/common/textevents.in create mode 100644 hexchat/src/common/tree.c create mode 100644 hexchat/src/common/tree.h create mode 100644 hexchat/src/common/typedef.h create mode 100644 hexchat/src/common/url.c create mode 100644 hexchat/src/common/url.h create mode 100644 hexchat/src/common/userlist.c create mode 100644 hexchat/src/common/userlist.h create mode 100644 hexchat/src/common/util.c create mode 100644 hexchat/src/common/util.h create mode 100644 hexchat/src/dirent/dirent-win32.h create mode 100644 hexchat/src/fe-gtk/ascii.c create mode 100644 hexchat/src/fe-gtk/ascii.h create mode 100644 hexchat/src/fe-gtk/banlist.c create mode 100644 hexchat/src/fe-gtk/banlist.h create mode 100644 hexchat/src/fe-gtk/chanlist.c create mode 100644 hexchat/src/fe-gtk/chanlist.h create mode 100644 hexchat/src/fe-gtk/chanview-tabs.c create mode 100644 hexchat/src/fe-gtk/chanview-tree.c create mode 100644 hexchat/src/fe-gtk/chanview.c create mode 100644 hexchat/src/fe-gtk/chanview.h create mode 100644 hexchat/src/fe-gtk/custom-list.c create mode 100644 hexchat/src/fe-gtk/custom-list.h create mode 100644 hexchat/src/fe-gtk/dccgui.c create mode 100644 hexchat/src/fe-gtk/editlist.c create mode 100644 hexchat/src/fe-gtk/editlist.h create mode 100644 hexchat/src/fe-gtk/fe-gtk.c create mode 100644 hexchat/src/fe-gtk/fe-gtk.h create mode 100644 hexchat/src/fe-gtk/fe-gtk.vcxproj create mode 100644 hexchat/src/fe-gtk/fe-gtk.vcxproj.filters create mode 100644 hexchat/src/fe-gtk/fkeys.c create mode 100644 hexchat/src/fe-gtk/fkeys.h create mode 100644 hexchat/src/fe-gtk/gtkutil.c create mode 100644 hexchat/src/fe-gtk/gtkutil.h create mode 100644 hexchat/src/fe-gtk/hexchat.rc.tt create mode 100644 hexchat/src/fe-gtk/ignoregui.c create mode 100644 hexchat/src/fe-gtk/joind.c create mode 100644 hexchat/src/fe-gtk/joind.h create mode 100644 hexchat/src/fe-gtk/maingui.c create mode 100644 hexchat/src/fe-gtk/maingui.h create mode 100644 hexchat/src/fe-gtk/menu.c create mode 100644 hexchat/src/fe-gtk/menu.h create mode 100644 hexchat/src/fe-gtk/meson.build create mode 100644 hexchat/src/fe-gtk/notifications/notification-backend.h create mode 100644 hexchat/src/fe-gtk/notifications/notification-dummy.c create mode 100644 hexchat/src/fe-gtk/notifications/notification-freedesktop.c create mode 100644 hexchat/src/fe-gtk/notifications/notification-osx.m create mode 100644 hexchat/src/fe-gtk/notifications/notification-windows.c create mode 100644 hexchat/src/fe-gtk/notifications/notification-winrt.cpp create mode 100644 hexchat/src/fe-gtk/notifications/notifications-winrt.vcxproj create mode 100644 hexchat/src/fe-gtk/notifications/notifications-winrt.vcxproj.filters create mode 100644 hexchat/src/fe-gtk/notifygui.c create mode 100644 hexchat/src/fe-gtk/notifygui.h create mode 100644 hexchat/src/fe-gtk/palette.c create mode 100644 hexchat/src/fe-gtk/palette.h create mode 100644 hexchat/src/fe-gtk/pixmaps.c create mode 100644 hexchat/src/fe-gtk/pixmaps.h create mode 100644 hexchat/src/fe-gtk/plugin-notification.c create mode 100644 hexchat/src/fe-gtk/plugin-notification.h create mode 100644 hexchat/src/fe-gtk/plugin-tray.c create mode 100644 hexchat/src/fe-gtk/plugin-tray.h create mode 100644 hexchat/src/fe-gtk/plugingui.c create mode 100644 hexchat/src/fe-gtk/plugingui.h create mode 100644 hexchat/src/fe-gtk/rawlog.c create mode 100644 hexchat/src/fe-gtk/rawlog.h create mode 100644 hexchat/src/fe-gtk/servlistgui.c create mode 100644 hexchat/src/fe-gtk/servlistgui.h create mode 100644 hexchat/src/fe-gtk/setup.c create mode 100644 hexchat/src/fe-gtk/setup.h create mode 100644 hexchat/src/fe-gtk/sexy-iso-codes.c create mode 100644 hexchat/src/fe-gtk/sexy-iso-codes.h create mode 100644 hexchat/src/fe-gtk/sexy-spell-entry.c create mode 100644 hexchat/src/fe-gtk/sexy-spell-entry.h create mode 100644 hexchat/src/fe-gtk/textgui.c create mode 100644 hexchat/src/fe-gtk/textgui.h create mode 100644 hexchat/src/fe-gtk/urlgrab.c create mode 100644 hexchat/src/fe-gtk/urlgrab.h create mode 100644 hexchat/src/fe-gtk/userlistgui.c create mode 100644 hexchat/src/fe-gtk/userlistgui.h create mode 100644 hexchat/src/fe-gtk/xtext.c create mode 100644 hexchat/src/fe-gtk/xtext.h create mode 100644 hexchat/src/fe-text/fe-text.c create mode 100644 hexchat/src/fe-text/fe-text.h create mode 100644 hexchat/src/fe-text/fe-text.vcxproj create mode 100644 hexchat/src/fe-text/fe-text.vcxproj.filters create mode 100644 hexchat/src/fe-text/meson.build create mode 100644 hexchat/src/htm/Main.Designer.cs create mode 100644 hexchat/src/htm/Main.cs create mode 100644 hexchat/src/htm/Main.resx create mode 100644 hexchat/src/htm/Program.cs create mode 100644 hexchat/src/htm/Properties/AssemblyInfo.cs create mode 100644 hexchat/src/htm/Properties/Resources.Designer.cs create mode 100644 hexchat/src/htm/Properties/Resources.resources create mode 100644 hexchat/src/htm/Properties/Resources.resx create mode 100644 hexchat/src/htm/Properties/Settings.Designer.cs create mode 100644 hexchat/src/htm/Properties/Settings.settings create mode 100644 hexchat/src/htm/README.md create mode 100644 hexchat/src/htm/Resources/htm.ico create mode 100644 hexchat/src/htm/app.config create mode 100644 hexchat/src/htm/htm.csproj create mode 100644 hexchat/src/htm/meson.build create mode 100644 hexchat/src/htm/thememan.HTM.resources create mode 100755 hexchat/src/htm/thememan.in create mode 100644 hexchat/src/libenchant_win8/libenchant_win8.def create mode 100644 hexchat/src/libenchant_win8/libenchant_win8.vcxproj create mode 100644 hexchat/src/libenchant_win8/libenchant_win8.vcxproj.filters create mode 100644 hexchat/src/libenchant_win8/win8_provider.cpp create mode 100644 hexchat/src/meson.build create mode 100644 hexchat/src/version-script create mode 100644 readme.md create mode 100644 xchat-2.8.8/AUTHORS create mode 100644 xchat-2.8.8/COPYING create mode 100644 xchat-2.8.8/ChangeLog create mode 100644 xchat-2.8.8/HACKING create mode 100644 xchat-2.8.8/INSTALL create mode 100644 xchat-2.8.8/INSTALL.w32 create mode 100644 xchat-2.8.8/Makefile create mode 100644 xchat-2.8.8/Makefile.am create mode 100644 xchat-2.8.8/Makefile.in create mode 100644 xchat-2.8.8/README create mode 100644 xchat-2.8.8/acinclude.m4 create mode 100644 xchat-2.8.8/aclocal.m4 create mode 100755 xchat-2.8.8/autogen.sh create mode 100644 xchat-2.8.8/buildAttemp1.txt create mode 100755 xchat-2.8.8/compile create mode 100755 xchat-2.8.8/config.guess create mode 100644 xchat-2.8.8/config.h create mode 100644 xchat-2.8.8/config.h.in create mode 100644 xchat-2.8.8/config.h.w32 create mode 100644 xchat-2.8.8/config.log create mode 100755 xchat-2.8.8/config.rpath create mode 100755 xchat-2.8.8/config.status create mode 100755 xchat-2.8.8/config.sub create mode 100755 xchat-2.8.8/configure create mode 100644 xchat-2.8.8/configure.in create mode 100755 xchat-2.8.8/depcomp create mode 100644 xchat-2.8.8/faq.html create mode 100755 xchat-2.8.8/install-sh create mode 100644 xchat-2.8.8/intl/ChangeLog create mode 100644 xchat-2.8.8/intl/Makefile create mode 100644 xchat-2.8.8/intl/Makefile.in create mode 100644 xchat-2.8.8/intl/VERSION create mode 100644 xchat-2.8.8/intl/bindtextdom.c create mode 100755 xchat-2.8.8/intl/config.charset create mode 100644 xchat-2.8.8/intl/dcgettext.c create mode 100644 xchat-2.8.8/intl/dcigettext.c create mode 100644 xchat-2.8.8/intl/dcngettext.c create mode 100644 xchat-2.8.8/intl/dgettext.c create mode 100644 xchat-2.8.8/intl/dngettext.c create mode 100644 xchat-2.8.8/intl/eval-plural.h create mode 100644 xchat-2.8.8/intl/explodename.c create mode 100644 xchat-2.8.8/intl/export.h create mode 100644 xchat-2.8.8/intl/finddomain.c create mode 100644 xchat-2.8.8/intl/gettext.c create mode 100644 xchat-2.8.8/intl/gettextP.h create mode 100644 xchat-2.8.8/intl/gmo.h create mode 100644 xchat-2.8.8/intl/hash-string.c create mode 100644 xchat-2.8.8/intl/hash-string.h create mode 100644 xchat-2.8.8/intl/intl-compat.c create mode 100644 xchat-2.8.8/intl/intl-exports.c create mode 100644 xchat-2.8.8/intl/l10nflist.c create mode 100644 xchat-2.8.8/intl/langprefs.c create mode 100644 xchat-2.8.8/intl/libgnuintl.h.in create mode 100644 xchat-2.8.8/intl/libintl.rc create mode 100644 xchat-2.8.8/intl/loadinfo.h create mode 100644 xchat-2.8.8/intl/loadmsgcat.c create mode 100644 xchat-2.8.8/intl/localcharset.c create mode 100644 xchat-2.8.8/intl/localcharset.h create mode 100644 xchat-2.8.8/intl/locale.alias create mode 100644 xchat-2.8.8/intl/localealias.c create mode 100644 xchat-2.8.8/intl/localename.c create mode 100644 xchat-2.8.8/intl/lock.c create mode 100644 xchat-2.8.8/intl/lock.h create mode 100644 xchat-2.8.8/intl/log.c create mode 100644 xchat-2.8.8/intl/ngettext.c create mode 100644 xchat-2.8.8/intl/os2compat.c create mode 100644 xchat-2.8.8/intl/os2compat.h create mode 100644 xchat-2.8.8/intl/osdep.c create mode 100644 xchat-2.8.8/intl/plural-exp.c create mode 100644 xchat-2.8.8/intl/plural-exp.h create mode 100644 xchat-2.8.8/intl/plural.c create mode 100644 xchat-2.8.8/intl/plural.y create mode 100644 xchat-2.8.8/intl/printf-args.c create mode 100644 xchat-2.8.8/intl/printf-args.h create mode 100644 xchat-2.8.8/intl/printf-parse.c create mode 100644 xchat-2.8.8/intl/printf-parse.h create mode 100644 xchat-2.8.8/intl/printf.c create mode 100644 xchat-2.8.8/intl/ref-add.sin create mode 100644 xchat-2.8.8/intl/ref-del.sin create mode 100644 xchat-2.8.8/intl/relocatable.c create mode 100644 xchat-2.8.8/intl/relocatable.h create mode 100644 xchat-2.8.8/intl/textdomain.c create mode 100644 xchat-2.8.8/intl/tsearch.c create mode 100644 xchat-2.8.8/intl/tsearch.h create mode 100644 xchat-2.8.8/intl/vasnprintf.c create mode 100644 xchat-2.8.8/intl/vasnprintf.h create mode 100644 xchat-2.8.8/intl/vasnwprintf.h create mode 100644 xchat-2.8.8/intl/version.c create mode 100644 xchat-2.8.8/intl/wprintf-parse.h create mode 100644 xchat-2.8.8/intl/xsize.h create mode 100755 xchat-2.8.8/libtool create mode 100755 xchat-2.8.8/ltmain.sh create mode 100755 xchat-2.8.8/missing create mode 100644 xchat-2.8.8/plugins/Make.plugin create mode 100644 xchat-2.8.8/plugins/Makefile create mode 100644 xchat-2.8.8/plugins/Makefile.am create mode 100644 xchat-2.8.8/plugins/Makefile.in create mode 100644 xchat-2.8.8/plugins/perl/.deps/perl.Plo create mode 100644 xchat-2.8.8/plugins/perl/IRC.pm create mode 100644 xchat-2.8.8/plugins/perl/Makefile create mode 100644 xchat-2.8.8/plugins/perl/Makefile.am create mode 100644 xchat-2.8.8/plugins/perl/Makefile.in create mode 100644 xchat-2.8.8/plugins/perl/Pod/Pod/Html.pm create mode 100644 xchat-2.8.8/plugins/perl/Xchat.pm create mode 100644 xchat-2.8.8/plugins/perl/alt_completion.pl create mode 100755 xchat-2.8.8/plugins/perl/generate_header create mode 100644 xchat-2.8.8/plugins/perl/perl.c create mode 100644 xchat-2.8.8/plugins/perl/xchat2-perl.html create mode 100644 xchat-2.8.8/plugins/perl/xchat2-perldocs.html create mode 100644 xchat-2.8.8/plugins/plugin-conf.in create mode 100644 xchat-2.8.8/plugins/plugin20.html create mode 100644 xchat-2.8.8/plugins/python/.deps/python.Plo create mode 100644 xchat-2.8.8/plugins/python/Makefile create mode 100644 xchat-2.8.8/plugins/python/Makefile.am create mode 100644 xchat-2.8.8/plugins/python/Makefile.in create mode 100644 xchat-2.8.8/plugins/python/python.c create mode 100644 xchat-2.8.8/plugins/tcl/.deps/tclplugin.Plo create mode 100644 xchat-2.8.8/plugins/tcl/Makefile create mode 100644 xchat-2.8.8/plugins/tcl/Makefile.am create mode 100644 xchat-2.8.8/plugins/tcl/Makefile.in create mode 100644 xchat-2.8.8/plugins/tcl/README create mode 100755 xchat-2.8.8/plugins/tcl/printevents.h create mode 100755 xchat-2.8.8/plugins/tcl/tclplugin.c create mode 100755 xchat-2.8.8/plugins/tcl/tclplugin.h create mode 100644 xchat-2.8.8/plugins/xchat-plugin.h create mode 100644 xchat-2.8.8/plugins/xdcc/Makefile.am create mode 100644 xchat-2.8.8/plugins/xdcc/xdcc.c create mode 100644 xchat-2.8.8/po/Makefile create mode 100644 xchat-2.8.8/po/Makefile.in create mode 100644 xchat-2.8.8/po/Makefile.in.in create mode 100644 xchat-2.8.8/po/Makevars create mode 100644 xchat-2.8.8/po/POTFILES create mode 100644 xchat-2.8.8/po/POTFILES.in create mode 100644 xchat-2.8.8/po/be.gmo create mode 100644 xchat-2.8.8/po/be.po create mode 100644 xchat-2.8.8/po/ca.gmo create mode 100644 xchat-2.8.8/po/ca.po create mode 100644 xchat-2.8.8/po/cs.gmo create mode 100644 xchat-2.8.8/po/cs.po create mode 100644 xchat-2.8.8/po/de.gmo create mode 100644 xchat-2.8.8/po/de.po create mode 100644 xchat-2.8.8/po/el.gmo create mode 100644 xchat-2.8.8/po/el.po create mode 100644 xchat-2.8.8/po/es.gmo create mode 100644 xchat-2.8.8/po/es.po create mode 100644 xchat-2.8.8/po/fi.gmo create mode 100644 xchat-2.8.8/po/fi.po create mode 100644 xchat-2.8.8/po/fr.gmo create mode 100644 xchat-2.8.8/po/fr.po create mode 100644 xchat-2.8.8/po/gl.gmo create mode 100644 xchat-2.8.8/po/gl.po create mode 100644 xchat-2.8.8/po/hu.gmo create mode 100644 xchat-2.8.8/po/hu.po create mode 100644 xchat-2.8.8/po/it.gmo create mode 100644 xchat-2.8.8/po/it.po create mode 100644 xchat-2.8.8/po/ja.gmo create mode 100644 xchat-2.8.8/po/ja.po create mode 100644 xchat-2.8.8/po/kn.gmo create mode 100644 xchat-2.8.8/po/kn.po create mode 100644 xchat-2.8.8/po/ko.gmo create mode 100644 xchat-2.8.8/po/ko.po create mode 100644 xchat-2.8.8/po/lt.gmo create mode 100644 xchat-2.8.8/po/lt.po create mode 100644 xchat-2.8.8/po/mk.gmo create mode 100644 xchat-2.8.8/po/mk.po create mode 100644 xchat-2.8.8/po/nl.gmo create mode 100644 xchat-2.8.8/po/nl.po create mode 100644 xchat-2.8.8/po/pa.gmo create mode 100644 xchat-2.8.8/po/pa.po create mode 100644 xchat-2.8.8/po/pl.gmo create mode 100644 xchat-2.8.8/po/pl.po create mode 100644 xchat-2.8.8/po/pt.gmo create mode 100644 xchat-2.8.8/po/pt.po create mode 100644 xchat-2.8.8/po/remove-potcdate.sin create mode 100644 xchat-2.8.8/po/ru.gmo create mode 100644 xchat-2.8.8/po/ru.po create mode 100644 xchat-2.8.8/po/sq.gmo create mode 100644 xchat-2.8.8/po/sq.po create mode 100644 xchat-2.8.8/po/sr.gmo create mode 100644 xchat-2.8.8/po/sr.po create mode 100644 xchat-2.8.8/po/stamp-po create mode 100644 xchat-2.8.8/po/sv.gmo create mode 100644 xchat-2.8.8/po/sv.po create mode 100644 xchat-2.8.8/po/th.gmo create mode 100644 xchat-2.8.8/po/th.po create mode 100644 xchat-2.8.8/po/uk.gmo create mode 100644 xchat-2.8.8/po/uk.po create mode 100644 xchat-2.8.8/po/vi.gmo create mode 100644 xchat-2.8.8/po/vi.po create mode 100644 xchat-2.8.8/po/xchat.pot create mode 100644 xchat-2.8.8/po/zh_CN.gmo create mode 100644 xchat-2.8.8/po/zh_CN.po create mode 100644 xchat-2.8.8/po/zh_TW.gmo create mode 100644 xchat-2.8.8/po/zh_TW.po create mode 100644 xchat-2.8.8/src/Makefile create mode 100644 xchat-2.8.8/src/Makefile.am create mode 100644 xchat-2.8.8/src/Makefile.in create mode 100644 xchat-2.8.8/src/common/.deps/cfgfiles.Po create mode 100644 xchat-2.8.8/src/common/.deps/cfgfiles.Tpo create mode 100644 xchat-2.8.8/src/common/.deps/chanopt.Po create mode 100644 xchat-2.8.8/src/common/.deps/ctcp.Po create mode 100644 xchat-2.8.8/src/common/.deps/dcc.Po create mode 100644 xchat-2.8.8/src/common/.deps/history.Po create mode 100644 xchat-2.8.8/src/common/.deps/ignore.Po create mode 100644 xchat-2.8.8/src/common/.deps/inbound.Po create mode 100644 xchat-2.8.8/src/common/.deps/modes.Po create mode 100644 xchat-2.8.8/src/common/.deps/msproxy.Po create mode 100644 xchat-2.8.8/src/common/.deps/network.Po create mode 100644 xchat-2.8.8/src/common/.deps/notify.Po create mode 100644 xchat-2.8.8/src/common/.deps/outbound.Po create mode 100644 xchat-2.8.8/src/common/.deps/plugin-timer.Po create mode 100644 xchat-2.8.8/src/common/.deps/plugin.Po create mode 100644 xchat-2.8.8/src/common/.deps/proto-irc.Po create mode 100644 xchat-2.8.8/src/common/.deps/server.Po create mode 100644 xchat-2.8.8/src/common/.deps/servlist.Po create mode 100644 xchat-2.8.8/src/common/.deps/ssl.Po create mode 100644 xchat-2.8.8/src/common/.deps/text.Po create mode 100644 xchat-2.8.8/src/common/.deps/tree.Po create mode 100644 xchat-2.8.8/src/common/.deps/url.Po create mode 100644 xchat-2.8.8/src/common/.deps/userlist.Po create mode 100644 xchat-2.8.8/src/common/.deps/util.Po create mode 100644 xchat-2.8.8/src/common/.deps/xchat.Po create mode 100644 xchat-2.8.8/src/common/Makefile create mode 100644 xchat-2.8.8/src/common/Makefile.am create mode 100644 xchat-2.8.8/src/common/Makefile.in create mode 100644 xchat-2.8.8/src/common/cfgfiles.c create mode 100644 xchat-2.8.8/src/common/cfgfiles.h create mode 100644 xchat-2.8.8/src/common/chanopt.c create mode 100644 xchat-2.8.8/src/common/chanopt.h create mode 100644 xchat-2.8.8/src/common/ctcp.c create mode 100644 xchat-2.8.8/src/common/ctcp.h create mode 100644 xchat-2.8.8/src/common/dbus/.deps/dbus-client.Po create mode 100644 xchat-2.8.8/src/common/dbus/.deps/dbus-plugin.Po create mode 100644 xchat-2.8.8/src/common/dbus/.deps/example.Po create mode 100644 xchat-2.8.8/src/common/dbus/Makefile create mode 100644 xchat-2.8.8/src/common/dbus/Makefile.am create mode 100644 xchat-2.8.8/src/common/dbus/Makefile.in create mode 100644 xchat-2.8.8/src/common/dbus/README create mode 100644 xchat-2.8.8/src/common/dbus/apps_xchat_url_handler.schemas create mode 100644 xchat-2.8.8/src/common/dbus/dbus-client.c create mode 100644 xchat-2.8.8/src/common/dbus/dbus-client.h create mode 100644 xchat-2.8.8/src/common/dbus/dbus-client.o create mode 100644 xchat-2.8.8/src/common/dbus/dbus-plugin.c create mode 100644 xchat-2.8.8/src/common/dbus/dbus-plugin.h create mode 100644 xchat-2.8.8/src/common/dbus/dbus-plugin.o create mode 100755 xchat-2.8.8/src/common/dbus/example create mode 100644 xchat-2.8.8/src/common/dbus/example.c create mode 100644 xchat-2.8.8/src/common/dbus/example.o create mode 100755 xchat-2.8.8/src/common/dbus/example.py create mode 100644 xchat-2.8.8/src/common/dbus/libxchatdbus.a create mode 100644 xchat-2.8.8/src/common/dbus/marshallers.h create mode 100644 xchat-2.8.8/src/common/dbus/marshallers.list create mode 100644 xchat-2.8.8/src/common/dbus/org.xchat.service.service create mode 100644 xchat-2.8.8/src/common/dbus/org.xchat.service.service.in create mode 100644 xchat-2.8.8/src/common/dbus/remote-object-glue.h create mode 100644 xchat-2.8.8/src/common/dbus/remote-object.xml create mode 100644 xchat-2.8.8/src/common/dcc.c create mode 100644 xchat-2.8.8/src/common/dcc.h create mode 100644 xchat-2.8.8/src/common/fe.h create mode 100644 xchat-2.8.8/src/common/history.c create mode 100644 xchat-2.8.8/src/common/history.h create mode 100644 xchat-2.8.8/src/common/identd.c create mode 100644 xchat-2.8.8/src/common/ignore.c create mode 100644 xchat-2.8.8/src/common/ignore.h create mode 100644 xchat-2.8.8/src/common/inbound.c create mode 100644 xchat-2.8.8/src/common/inbound.h create mode 100644 xchat-2.8.8/src/common/inet.h create mode 100644 xchat-2.8.8/src/common/make-te.c create mode 100644 xchat-2.8.8/src/common/modes.c create mode 100644 xchat-2.8.8/src/common/modes.h create mode 100644 xchat-2.8.8/src/common/msproxy.c create mode 100644 xchat-2.8.8/src/common/msproxy.h create mode 100644 xchat-2.8.8/src/common/network.c create mode 100644 xchat-2.8.8/src/common/network.h create mode 100644 xchat-2.8.8/src/common/notify.c create mode 100644 xchat-2.8.8/src/common/notify.h create mode 100644 xchat-2.8.8/src/common/outbound.c create mode 100644 xchat-2.8.8/src/common/outbound.h create mode 100644 xchat-2.8.8/src/common/plugin-timer.c create mode 100644 xchat-2.8.8/src/common/plugin-timer.h create mode 100644 xchat-2.8.8/src/common/plugin.c create mode 100644 xchat-2.8.8/src/common/plugin.h create mode 100644 xchat-2.8.8/src/common/proto-irc.c create mode 100644 xchat-2.8.8/src/common/proto-irc.h create mode 100644 xchat-2.8.8/src/common/server.c create mode 100644 xchat-2.8.8/src/common/server.h create mode 100644 xchat-2.8.8/src/common/servlist.c create mode 100644 xchat-2.8.8/src/common/servlist.h create mode 100644 xchat-2.8.8/src/common/ssl.c create mode 100644 xchat-2.8.8/src/common/ssl.h create mode 100644 xchat-2.8.8/src/common/text.c create mode 100644 xchat-2.8.8/src/common/text.h create mode 100644 xchat-2.8.8/src/common/textenums.h create mode 100644 xchat-2.8.8/src/common/textevents.h create mode 100644 xchat-2.8.8/src/common/textevents.in create mode 100644 xchat-2.8.8/src/common/tree.c create mode 100644 xchat-2.8.8/src/common/tree.h create mode 100644 xchat-2.8.8/src/common/url.c create mode 100644 xchat-2.8.8/src/common/url.h create mode 100644 xchat-2.8.8/src/common/userlist.c create mode 100644 xchat-2.8.8/src/common/userlist.h create mode 100644 xchat-2.8.8/src/common/util.c create mode 100644 xchat-2.8.8/src/common/util.h create mode 100644 xchat-2.8.8/src/common/xchat-plugin.h create mode 100644 xchat-2.8.8/src/common/xchat.c create mode 100644 xchat-2.8.8/src/common/xchat.h create mode 100644 xchat-2.8.8/src/common/xchatc.h create mode 100644 xchat-2.8.8/src/fe-gtk/.deps/about.Po create mode 100644 xchat-2.8.8/src/fe-gtk/.deps/ascii.Po create mode 100644 xchat-2.8.8/src/fe-gtk/.deps/banlist.Po create mode 100644 xchat-2.8.8/src/fe-gtk/.deps/chanlist.Po create mode 100644 xchat-2.8.8/src/fe-gtk/.deps/chanview.Po create mode 100644 xchat-2.8.8/src/fe-gtk/.deps/custom-list.Po create mode 100644 xchat-2.8.8/src/fe-gtk/.deps/dccgui.Po create mode 100644 xchat-2.8.8/src/fe-gtk/.deps/editlist.Po create mode 100644 xchat-2.8.8/src/fe-gtk/.deps/fe-gtk.Po create mode 100644 xchat-2.8.8/src/fe-gtk/.deps/fkeys.Po create mode 100644 xchat-2.8.8/src/fe-gtk/.deps/gtkutil.Po create mode 100644 xchat-2.8.8/src/fe-gtk/.deps/ignoregui.Po create mode 100644 xchat-2.8.8/src/fe-gtk/.deps/joind.Po create mode 100644 xchat-2.8.8/src/fe-gtk/.deps/maingui.Po create mode 100644 xchat-2.8.8/src/fe-gtk/.deps/menu.Po create mode 100644 xchat-2.8.8/src/fe-gtk/.deps/mmx_cmod.Po create mode 100644 xchat-2.8.8/src/fe-gtk/.deps/notifygui.Po create mode 100644 xchat-2.8.8/src/fe-gtk/.deps/palette.Po create mode 100644 xchat-2.8.8/src/fe-gtk/.deps/pixmaps.Po create mode 100644 xchat-2.8.8/src/fe-gtk/.deps/plugin-tray.Po create mode 100644 xchat-2.8.8/src/fe-gtk/.deps/plugingui.Po create mode 100644 xchat-2.8.8/src/fe-gtk/.deps/rawlog.Po create mode 100644 xchat-2.8.8/src/fe-gtk/.deps/search.Po create mode 100644 xchat-2.8.8/src/fe-gtk/.deps/servlistgui.Po create mode 100644 xchat-2.8.8/src/fe-gtk/.deps/setup.Po create mode 100644 xchat-2.8.8/src/fe-gtk/.deps/sexy-spell-entry.Po create mode 100644 xchat-2.8.8/src/fe-gtk/.deps/textgui.Po create mode 100644 xchat-2.8.8/src/fe-gtk/.deps/urlgrab.Po create mode 100644 xchat-2.8.8/src/fe-gtk/.deps/userlistgui.Po create mode 100644 xchat-2.8.8/src/fe-gtk/.deps/xtext.Po create mode 100644 xchat-2.8.8/src/fe-gtk/Makefile create mode 100644 xchat-2.8.8/src/fe-gtk/Makefile.am create mode 100644 xchat-2.8.8/src/fe-gtk/Makefile.in create mode 100644 xchat-2.8.8/src/fe-gtk/about.c create mode 100644 xchat-2.8.8/src/fe-gtk/about.h create mode 100644 xchat-2.8.8/src/fe-gtk/ascii.c create mode 100644 xchat-2.8.8/src/fe-gtk/ascii.h create mode 100644 xchat-2.8.8/src/fe-gtk/banlist.c create mode 100644 xchat-2.8.8/src/fe-gtk/banlist.h create mode 100644 xchat-2.8.8/src/fe-gtk/chanlist.c create mode 100644 xchat-2.8.8/src/fe-gtk/chanlist.h create mode 100644 xchat-2.8.8/src/fe-gtk/chanview-tabs.c create mode 100644 xchat-2.8.8/src/fe-gtk/chanview-tree.c create mode 100644 xchat-2.8.8/src/fe-gtk/chanview.c create mode 100644 xchat-2.8.8/src/fe-gtk/chanview.h create mode 100644 xchat-2.8.8/src/fe-gtk/custom-list.c create mode 100644 xchat-2.8.8/src/fe-gtk/custom-list.h create mode 100644 xchat-2.8.8/src/fe-gtk/dccgui.c create mode 100644 xchat-2.8.8/src/fe-gtk/editlist.c create mode 100644 xchat-2.8.8/src/fe-gtk/editlist.h create mode 100644 xchat-2.8.8/src/fe-gtk/fe-gtk.c create mode 100644 xchat-2.8.8/src/fe-gtk/fe-gtk.h create mode 100644 xchat-2.8.8/src/fe-gtk/fkeys.c create mode 100644 xchat-2.8.8/src/fe-gtk/fkeys.h create mode 100644 xchat-2.8.8/src/fe-gtk/gtkutil.c create mode 100644 xchat-2.8.8/src/fe-gtk/gtkutil.h create mode 100644 xchat-2.8.8/src/fe-gtk/ignoregui.c create mode 100644 xchat-2.8.8/src/fe-gtk/joind.c create mode 100644 xchat-2.8.8/src/fe-gtk/joind.h create mode 100644 xchat-2.8.8/src/fe-gtk/maingui.c create mode 100644 xchat-2.8.8/src/fe-gtk/maingui.h create mode 100644 xchat-2.8.8/src/fe-gtk/menu.c create mode 100644 xchat-2.8.8/src/fe-gtk/menu.h create mode 100644 xchat-2.8.8/src/fe-gtk/mmx_cmod.S create mode 100644 xchat-2.8.8/src/fe-gtk/mmx_cmod.h create mode 100644 xchat-2.8.8/src/fe-gtk/notifygui.c create mode 100644 xchat-2.8.8/src/fe-gtk/notifygui.h create mode 100644 xchat-2.8.8/src/fe-gtk/palette.c create mode 100644 xchat-2.8.8/src/fe-gtk/palette.h create mode 100644 xchat-2.8.8/src/fe-gtk/pixmaps.c create mode 100644 xchat-2.8.8/src/fe-gtk/pixmaps.h create mode 100644 xchat-2.8.8/src/fe-gtk/plugin-tray.c create mode 100644 xchat-2.8.8/src/fe-gtk/plugin-tray.h create mode 100644 xchat-2.8.8/src/fe-gtk/plugingui.c create mode 100644 xchat-2.8.8/src/fe-gtk/plugingui.h create mode 100644 xchat-2.8.8/src/fe-gtk/rawlog.c create mode 100644 xchat-2.8.8/src/fe-gtk/rawlog.h create mode 100644 xchat-2.8.8/src/fe-gtk/search.c create mode 100644 xchat-2.8.8/src/fe-gtk/search.h create mode 100644 xchat-2.8.8/src/fe-gtk/servlistgui.c create mode 100644 xchat-2.8.8/src/fe-gtk/setup.c create mode 100644 xchat-2.8.8/src/fe-gtk/sexy-spell-entry.c create mode 100644 xchat-2.8.8/src/fe-gtk/sexy-spell-entry.h create mode 100644 xchat-2.8.8/src/fe-gtk/textgui.c create mode 100644 xchat-2.8.8/src/fe-gtk/textgui.h create mode 100644 xchat-2.8.8/src/fe-gtk/urlgrab.c create mode 100644 xchat-2.8.8/src/fe-gtk/urlgrab.h create mode 100644 xchat-2.8.8/src/fe-gtk/userlistgui.c create mode 100644 xchat-2.8.8/src/fe-gtk/userlistgui.h create mode 100644 xchat-2.8.8/src/fe-gtk/xtext.c create mode 100644 xchat-2.8.8/src/fe-gtk/xtext.h create mode 100644 xchat-2.8.8/src/fe-text/.deps/fe-text.Po create mode 100644 xchat-2.8.8/src/fe-text/Makefile create mode 100644 xchat-2.8.8/src/fe-text/Makefile.am create mode 100644 xchat-2.8.8/src/fe-text/Makefile.in create mode 100644 xchat-2.8.8/src/fe-text/README create mode 100644 xchat-2.8.8/src/fe-text/fe-text.c create mode 100644 xchat-2.8.8/src/fe-text/fe-text.h create mode 100644 xchat-2.8.8/src/pixmaps/Makefile create mode 100644 xchat-2.8.8/src/pixmaps/Makefile.am create mode 100644 xchat-2.8.8/src/pixmaps/Makefile.in create mode 100644 xchat-2.8.8/src/pixmaps/book.png create mode 100644 xchat-2.8.8/src/pixmaps/fileoffer.png create mode 100644 xchat-2.8.8/src/pixmaps/highlight.png create mode 100644 xchat-2.8.8/src/pixmaps/hop.png create mode 100644 xchat-2.8.8/src/pixmaps/inline_pngs.h create mode 100644 xchat-2.8.8/src/pixmaps/message.png create mode 100644 xchat-2.8.8/src/pixmaps/op.png create mode 100644 xchat-2.8.8/src/pixmaps/purple.png create mode 100644 xchat-2.8.8/src/pixmaps/red.png create mode 100644 xchat-2.8.8/src/pixmaps/voice.png create mode 100644 xchat-2.8.8/src/version-script create mode 100644 xchat-2.8.8/stamp-h1 create mode 100644 xchat-2.8.8/xchat.desktop create mode 100644 xchat-2.8.8/xchat.ico create mode 100644 xchat-2.8.8/xchat.png create mode 100644 xchat-2.8.8/xchat.spec diff --git a/etc/wyatt8740/ABOUT-NLS b/etc/wyatt8740/ABOUT-NLS new file mode 100644 index 0000000..0a9d56d --- /dev/null +++ b/etc/wyatt8740/ABOUT-NLS @@ -0,0 +1 @@ + diff --git a/etc/wyatt8740/AUTHORS b/etc/wyatt8740/AUTHORS new file mode 100644 index 0000000..e69de29 diff --git a/etc/wyatt8740/COMPILE_NOTES.txt b/etc/wyatt8740/COMPILE_NOTES.txt new file mode 100644 index 0000000..ac179f7 --- /dev/null +++ b/etc/wyatt8740/COMPILE_NOTES.txt @@ -0,0 +1,2 @@ +This builds in debian sid as of 19 January 2017. +You might need to add '-lgmodule-2.0' to your link flags (LDFLAGS) to make this compile properly. diff --git a/etc/wyatt8740/COPYING b/etc/wyatt8740/COPYING new file mode 100644 index 0000000..eeb586b --- /dev/null +++ b/etc/wyatt8740/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/etc/wyatt8740/ChangeLog b/etc/wyatt8740/ChangeLog new file mode 100644 index 0000000..963e777 --- /dev/null +++ b/etc/wyatt8740/ChangeLog @@ -0,0 +1,2238 @@ + .----------------------. +--| X-Chat ChangeLog |-------------------------------------------- + `----------------------' + +To see more details of bugs, go to this URL: +http://sf.net/tracker/?func=detail&atid=100239&group_id=239&aid=NUMBER +Where "NUMBER" is the bug number. + +This log DOES NOT apply to XChat for Windows. + +There are always more changes than listed here, these are just the +highlights. The full CVS log is available at www.xchat.org/cvslog/ + +------------------------------------------------------------------------------ + 2.8.8 - 30/May/2010 +------------------------------------------------------------------------------ + + - Made balloon time adjustable via /set input_balloon_time (Nicoleau Fabien). + - Fixed a crash in the /SET command if a boolean value was loaded from config + file that isn't set to 0 or 1. + - Added -on and -off parameters to the /SET command. This can be used to set + bits, for example gui_tweaks. + - Made scrolling backwards for the search window act better (Richard Hitt). + - [2045483] Made ESC key close the search window (Richard Rowell). + - Improved the reconnect logic. If a network is already open but disconnected, + it'll now get re-used if you use the Network List and connect to that same + network. + - Improved scrollback reloading speed significantly (Soeren Sandmann Pedersen). + - [2957047] Handle CTCPs when IDmsg is used correctly (Lian Wan Situ). + - [2987626] Allow /GHOST's password arg to be optional (Ori Avtalion). + - Added networks: 7-indonesia, ChattingAway, GeekShed, TURLINet. + - When switching tabs, make the treeview only scroll if the selected item + isn't visible [treeview-less-jumping.diff] (Brian Evans). + - Selecting an item in the nickmenu will now copy it to clipboard (Alex + Kutepow). + - New icons for notification area (systray): file offer, message and highlight + (Brian Evans). + - Defined a comparison routine for contexts in Python (Brian Evans). + - For the auto-join command, added an 'x' filler for empty keys. This works + around a bug in ircd-seven. + - When a single channel MODE changes, xchat will no longer re-issue a MODE + request for the titlebar display, but figure the new modes intelligently + (Brian Evans). + - Various text event changes (Brian Evans): + 1. Added "Private Action", "Private Action to Dialog", "SSL Message". + 2. Added "Identified text" parameter all the 'action' events. + 3. Added a $3 parameter to "Server Text". + - Perl (Lian Wan Situ) + * Fixed a bug that resulted in timer hooks being leaked because + "return REMOVE" from a timer callback was not unhooking like it was + supposed to + * Reverted the unintentional change to how the server argument of print() + and command() is interepreted when it is undef + * Add hook_fd to the 'hooks' export tag + * Fixed a leak in XS_Xchat_get_list(Vincent Pit) + * Change Xchat::register so that scripts calling it without a name or + version will still show up in the plugins and scripts window. + * Added calls to PERL_SYS_INIT3 and PERL_SYS_TERM which are required on + some platforms + * Added some additional guards to prevents bits of scripts from spilling + into each other + * Added "modes", "win_ptr" and "xchatdirfs" to the list of keys that are + returned by context_info() + * Changed the information displayed in the "Plugins & Scripts" for scripts + that do not call register() to show up as "" for the name and description + and "unknown" for the version + * /reloadall will now reload scripts in the same order they were loaded + * Make xchat_send_modes available as Xchat::send_modes + * Add support for getting the network list using Xchat::get_list( "networks" ) + * Xchat::strip_code will now strip off ANSI escape codes as well + + +------------------------------------------------------------------------------ + 2.8.6 - 11/Jun/2008 +------------------------------------------------------------------------------ + + - Updated translations (de, fi, fr, hu, lt, nb, ru, th, zh_CN). + - Fixed creation of ~/.xchat2/scrollback/ paths (xc284-scrollbmkdir.diff). + - Fixed a leak of file descriptors related to the scrollback feature + (resource leak) (xc284-fix-scrollbfdleak.diff). + - Stopped scrollback files growing too large by fixing the file-shrink code. + - Put a "Display scrollback from previous session" into the Setup GUI + (logging section) so people can turn this off without typing commands. + - Made /away work even when the reason setting is empty. + - Using /part on a channel that contains a quotation mark now works [1800855]. + - Changed the default encoding to "IRC" (CP1252/Unicode Hybrid) for both Unix + and Windows. + - Fixed a possible Channel List crash if you searched many times while the + download was still going. + - Fixed alert balloons failing if the text contained "<" characters [1827629]. + - The Drag&Drop files to userlist feature has been enabled again. + - Removed the /set tab_icons setting and made it automatic (see FAQ for more + info about icons). + - Fixed a bug in creating files (save channel list, rawlog etc) that would set + the wrong permissions. + - Added command line argument --command=COMMAND which can be used in + conjuction with --existing (E.K.L.). This sends any xchat command to an + existing (running) client. + - A private SSL key/certificate can now be loaded from ~/.xchat2/client.pem. + - The Alerts settings now accept wildcards, instead of partitial string match + [1807563]. + - Changing away status during reconnect/disconnect will now remember it. + - You can now change your Away/Back status (all networks) in the tray menu. + - Favorite Channels / Auto-Join-List management: + * Network List window now has a "..." button to edit the auto-join-list in + a more friendly way. + * Channel(text area), Tree/Tab and Channel-List right-click menus now have a + "Add to Favorites" function. + * Previous limit of 300 bytes has been overcome. Now up to 2 KB worth of + channels/keys can be joined and it will be automatically split into + multiple lines, if necessary. + * Per-Channel settings now save to disk, including Logging and Scrollback + settings. + * /ChanOpt has been re-worked to be more like /Set. + - 'hostname:port' syntax is now accepted, if it's not an IPv6 address. + - The Userlist right-click menu now has icons and an option to add to friends + list. If you've edited this menu before you'll still get the old one. To get + the new one delete ~/.xchat2/popup.conf while XChat isn't running. + - ~/.xchat2/startup.txt is now loaded on launch (like /LOAD -e). Put any + commands you want executed at startup here. + - The lag-o-meter now has a full scale of 1.0 seconds. + - libnotify is now opened directly instead of using 'notify-send' to open + tray/balloon alerts. + - Added support for QuakeNet's /AUTH for nick password, when numeric 005 + NETWORK=QuakeNet is detected. + - You can now copy with IRC attributes and mIRC colors if CTRL key is down + when a selection is finished (on mouse release). This replaces the old + "Color paste" feature. + - Added a 'compact' flag to gui_tweaks. This'll make the userlist and tree + spacing smaller. E.g. type /set -or gui_tweaks 32 and restart to turn it on. + - The /CLEAR command takes a number as paramater (how many lines to clear). + - When there's missing information in the Userlist right-click menu, it'll + issue a silent /WHOIS and fill it in. This includes retrieving a person's + away-reason. + - Perl (Lian Wan Situ) + * /reloadall will now reload all the scripts that are currently load instead + of simply reruning the autoload routine + * gtk/glib/gdk errors and warnings have been redirected back to stderr so + they will no longer show up in the text box as a result of having the Perl + plugin loaded + * Check if the user has perl 5.6 instead of 5.8 and give an warning dialog + if they do (Peter Zelezny) + * Changed timer callbacks so that they are executed in the context that they + were created in + * Modified Xchat::print and Xchat::command to accept array references in + addition to strings for the channel and server parameters + - Plugin API: + * xchat_emit_print() will now trigger Sound, Blink, Icon etc type events, + depending on user's settings. + * Fixed a bug where not all 32 elements were available in word[]/word_eol[]. + + +------------------------------------------------------------------------------ + 2.8.4 - 01/Jul/2007 +------------------------------------------------------------------------------ + + - Updated translations (cs, de, ko, mk, sv, vi). + - System-Tray balloons now get the xchat icon instead of a generic one. + - Fixed the notify-send zombies (released as xc282-fixtrayzombies.diff). + - Fixed underscore ('_') in real names in the nick-name right-click menu being + drawn as a underline. + - ut2004:// URLs are now underlined too. + - /set gui_tray_flags 4 will now enable a "Minimize to tray" feature. Clicking + the window minimize button will minimize to tray instead of the task-bar. + - Fixed bug: [1680762] Notify fails if network name contains spaces. + - Extended tclConfig.sh search paths so it hopefully works on Ubuntu now. + - Added a feature that reloads conversations from last time you used XChat + (type /set text_replay 0 to disable it). + - Fixed /LASTLOG printing everything twice if you had Indented Nicks off. + - The CTRL-F keybinding (Find) is now disabled when using Emacs keys. + - Added /SET gui_tweaks. See http://forum.xchat.org/viewtopic.php?p=13766 + - Fixed opening URLs on KDE that didn't begin with http:// or other protocol. + - A better quit dialog which warns you if you're connected to IRC or have + active file transfers. + - Fixed: [1741525] Cycle selected channel (Luca Falavigna). + - Fixed: [1737249] Doesn't recognize nicks with halfop mode on hovering. + - The userlist and treeview can now be placed on the same side, with a resize + handle in between them. They can also be dragged and dropped into place. + - When you hide the userlist using the View menu, the resize handle now + disappears too. It also disappears when you have a server tab in focus. + - If you have a tree on one side and userlist on the other, they'll both now + have a resize handle, previously the tree's size was fixed. + - The userlist can be hidden and shown with CTRL+F7. + - [1735116] Channel List's minimum users spin-button can now be set downward + even on networks that sent a list of channels of only a larger size. In this + case the Download button will flash to indicate you need to download a new + list. + - Changing the channel switcher type (Tree or Tabs) is also possible in the + setup dialog. + - The Ban List window now lists exceptions too (mode +e). + - Script and Plugin related changes: + * /SETTEXT with no argument now clears the input box. + * Python: Added a xchat.strip method for stripping IRC attributes and mIRC + color codes. + * C-API and Perl: Returning 0 from a FD hook will now remove the hook and + free all associated memory. + * /MENU now supports a $CHAN root aswell (see plugin20.html). + * Fixed GDK warning when using /MENU to add a key binding to a popup menu. + + +------------------------------------------------------------------------------ + 2.8.2 - 01/Apr/2007 +------------------------------------------------------------------------------ + + - Updated translations (be, ca, cs, el, hu, sv, uk, zh_CN). + - Fixed the "Save As" function saving to the wrong folder in the URL Grabber. + - Fixed a bug in the "Copy Selected Link" URL right-click on non-ASCII chars. + - Fixed small bug: #100239 buffer overflow in setup dialog. + - Overhauled the Alerts section of the settings and added support for opening + system-tray balloons (libnotify required). + - Implemented /TRAY -b command on unix. + - Nick serv authentication is now sent without the ":" when using the + /NICKSERV or /NS method. #1655733. + - Added command line argument: + --minimize=level Begin minimized. Level 0=Normal 1=Iconified 2=Tray + - Plugin API: + * Added "modes" to xchat_get_info(). Returns the current channel modes, if + they are known. + * Fixed "event_event name" for xchat_get_info() to match the docs exactly, + but 2.8.0 (mis)behaviour works too. + - Perl (Lian Wan Situ) + * Execute the shutdown callback before removing the hooks so commands + created by the script can be used in the callback. + + +------------------------------------------------------------------------------ + 2.8.0 - 03/Jan/2007 +------------------------------------------------------------------------------ + + - Updated translations (cs, de, gl, hu). + - XChat now requires at least GTK+ 2.10. + - Added a system tray icon (aka Notification Area). This is probably the + biggest feature addition in this series. Also added a /TRAY command so + scripts can manipulate the icon. + - Added partial support for numeric 005 token ELIST (min users only). + - Brand new channel list window: GtkTreeView, nicer layout, less CPU power + when downloading very large list, uses less memory, supports regexp/ + patternmatch/substring search and supports downloading LIST with minusers to + save time (only on some networks that support ELIST). + - Overhauled URL opening on Unix, it now tries xdg-open first, then auto- + detects Gnome or KDE to run gnome-open or kfmclient. URLs with quotes + should also work now (changed to execv()). + - Settings: Warn the user when trying to put the tree on the top/bottom. + - Fixed DCC ack reading so it doesn't use MSG_PEEK. + - Channel modes are no longer shown in the titlebar if they contain a key. + - Added /GUI APPLY command, which does that same as pressing OK in the + settings window (e.g use it after /set). Mainly for scripters. + - Allow changing the logging folder if the log filename is set to a full path + in the settings window (starts with a '/'). + - Added 'Your Action' text event. + - Separated out /away and /back commands so it's obvious what they'll do. + - Changes to /MENU command (See plugin20.html for details): + * Now works for popup menus too. + * Allows creation of radio menu items. + * -p arg can now to be negative to give a position offset from right/bottom. + * -i arg to specify an icon file. + - Plugin API: + * Added event_text to xchat_get_info(). + - Perl (Lian Wan Situ) + * Fixed hook_command so that it won't override the help message for builtin + commands unless a help message was specified. + * Perl Win32: Warn the user about trying to load 64-bit ActivePerl. + + +------------------------------------------------------------------------------ + 2.6.8 - 16/Oct/2006 +------------------------------------------------------------------------------ + + - Updated translations (be, de, el, es, fi, hu, it, ja, lt, pt, ru, sv, vi). + - Removed "xchat-remote" and "dbus.so", it's now apart of the "xchat" binary. + There is now a new dbus interface, see src/common/dbus/README for details. + (Claessens Xavier). + - Python: Fixed "restricted mode" errors on win32 [1512076]. + - Special-cased BRASnet for nickserv. + - Fixed using the /MENU args -p and -e at the same time. + - Fixed /reconnect and auto-reconnect issue [1525383]. + - Plugin API: + * Added fields: lag, queue to the "channels" list. + * Added fields: sizehigh to the "dcc" list. + * Added fields: networks to the "notify" list. + * Handle gracefully plugins that try to execute commands with invalid UTF-8. + * Added /GETFILE command, to open a file dialog. + * Command hooks that start with a period ('.') will now be hidden from /HELP + and /HELP -l. + - Fixed: [1544960] quitting via tabs behaves bad on bncs. + - Fixed: [1551620] --version flag needs display. + - Fixed: [1539236] problem with the /url command (irc:// handling). + - Fixed: [1568931] treeview problem: closing tabs by holding shift and + clicking. + - "Clear" button in Ban List window now has a 'Are you sure?' dialog for + safety. + - The notify list can now contain entries specific to only one or more IRC + networks. + - Userlist popup menu and buttons: added %e for 'current network name'. + - Added option: 'Flash taskbar on any private messages'. + - Added a new encoding choice: "IRC (Latin-1/UTF-8 hybrid)". + How it works is described at: http://forum.xchat.org/viewtopic.php?t=3180 + - Added /LastLog -r . + - The DCC windows have been remodeled and are much nicer now. Ported to + GtkTreeView, the buttons are context sensitive, the window remembers its + size and uploads and downloads are combined in one window. + - Perl (Lian Wan Situ) + * Changed Xchat::print and Xchat::command to return false if they are called + with either no arguments or undef + * Changed Xchat::user_info so that it works even if the nick parameter + contains color codes + + +---------------------------------------------------------------------- + 2.6.6 - 18/Jul/2006 +---------------------------------------------------------------------- + + - Updated translations (es, fr, sr). + - Fixed connecting to a IRC server via proxy (bug in 2.6.4 only). + - Fixed the invisible cursor color when using GTKSpell and a black + input box (when "Use the text box font & colors" is ON). + - Allow loading a cert/privatekey file from ~/.xchat2/.pem + - Improved the fallback routine when you receive non-UTF8 messages. It + can now handle CP1252 from mIRC users and the ISO-8859-15 Euro symbol. + - Added CHANOPT command for setting channel specific options such as showing + of joins and part, beep on message and color paste (Lian Wan Situ). + - /CLEAR HISTORY will clear your command history. + - Fixed a crash if you left a Ban-List window open after closing the + associated channel and then clicking Refresh. + - Added an option of using 'Last-Spoke' nick completion order in Settings > + Input Box. + - The /QUERY command now has -nofocus arg, which scripts might find useful. + - You can now /set gui_url_mod 0, to allow left-clicking URLs (default is + 4, for CTRL). + - XChat will now respect gtk-button-images=0 set in ~/.gtkrc-2.0. + - Added a ./configure option to use your preferred spelling library: + --enable-spell=type. Where type can be: none static libsexy gtkspell. + Note that using gtkspell will force the inputbox to become a GtkTextView. + - Advanced users can /set tab_small 2, to get _extra_ small tabs. + - Added /SPLAY . + - Plugin API: + * The second args to xchat_list_int and xchat_list_str can now be NULL as + a shortcut to "channels" list for current context only. + * Added bits 6-8 to the field "flags" in the "channels" list. + * /GUI MSGBOX can now contain Pango markup. + * Added -m arg to /MENU. See plugin20.html for more. + - Perl (Lian Wan Situ) + * Fixed a bug with Xchat::print that prevents printing out a + single 0(Lian Wan Situ) + * Fixed a bug in Xchat::get_prefs that was clobbering the stack(Sergio Luis) + * Allow scripts that use a non-existent function for the shutdown callback + to be unloaded(Lian Wan Situ) + * Added check in set_context for undef + * Added the fields from get_list "channels" for the current context to the + result of context_info + + +---------------------------------------------------------------------- + 2.6.4 - 08/Jun/2006 +---------------------------------------------------------------------- + + - Updated translations (de, el, es, gl, hu, nl, sv, vi, zh_TW). + - Fixed opening a irc:// URL via "xchat -a --url=abc123" command while + "Skip serverlist on startup" is off. This fix is only relevant when + opening an initial instance of xchat (i.e not via dbus). + - Fixed the tree layout "flashing" (redrawing slowly) after you + switched to tabs and back to tree. + - Fixed plugin/script get_list("users") causing a critical GDK warning + when not executed from the front-most tab. + - Added spelling support in the input-box via GTKSpell. + - Improved the error reporting when connecting through a Socks proxy. + - DCC file transfers via http/socks45/wingate proxy is now supported + (Damjan Jovanovic & me). + - Fixed Socks 5 failing on 64-bit CPUs. + - Added support for connecting through a Microsoft ISA Proxy, requires + libntlm at build time (Pavel Fedin). + - You can now mark and copy timestamps if you hold down SHIFT. + - Timestamps are now preserved in the /lastlog command. Also fixed a + bug where the separator line disappeared during /lastlog. + - Added a Browse button to the DCC download folder setting. + - Made the setup window a little neater and Gnome-like. + - Improved the notify window a little and fixed a small memory leak. + - Fixed CTCPs being truncated in the RawLog window. + - Added an option to open a "Save As..." dialog when receiving a + DCC file offer. + - Fixed a crash if you try to remove a network from the list while + it's in a auto-reconnect delay [debian bug #364858]. + - Python: Fixed some memory usage bugs. + - Perl: Turned on utf8 flag for things that should have it on. + + +---------------------------------------------------------------------- + 2.6.2 - 27/Mar/2006 +---------------------------------------------------------------------- + + - Updated translations (de, fr, ja, sv). + - Made "/server freenode" send auto-join channels but not + "/server irc://freenode". + - Fixed building of xchat-text (although not recommended!). + - Fixed using Strip mIRC colors & Color nicks at the same time. + - Fixed a bug in timestamp drawing using non-fixed-width font [1404341]. + - Fixed display of realname in the nick-name right-click menu when it + contains a '<' or '&' character [1403069]. + - Added support for UniBG's nickserv (ongeboren). + - The move-to-complete-dir routine now treats encoding/UTF8 correctly. + - Show help when using wrong args for /DCC, instead of silence. + - Support receiving 2048 bytes per line from server and dcc-chat, so we + can support 512 UTF-8 characters that some servers now send. + - Added /gui detach and /gui attach commands for scripters. + - The server list window now remembers its size. + - TCL: Added 'selected' flag to users list. + - Perl: + * Fixed strip_code so that it no longer takes off extra commas (LifeIsPain) + * Fixed filename checks so that '/load "filenameWithoutSpaces.pl"' + will also work (Lian Wan Situ). + * Fixed hook_fd to work with sockets on Windows (Vince Pit). + + +---------------------------------------------------------------------- + 2.6.1 - 06/Jan/2006 +---------------------------------------------------------------------- + + - Updated translations (de, el, fi, fr, gl, hu, ko, nl, pa, sq, vi). + - Added support for log rotation based on time or date. + - Double-click in tree layout will now expand/collapse (Lian Wan Situ). + - Keys to move tabs around now work in Tree layout too (Lian Wan Situ/Me). + - Largely re-written "Search Text" function with much better + behaviour and match case on/off and search backwards options + (Richard Hitt and Me). + - The parent row in the tree layout now changes color if you have + that group collapsed (Lian Wan Situ). + - Fixed crash when trying to Detach or Close a utility tab via + right-click, when it's not the currently focused tab. + - Made DCC resume handle case-insensitive file systems properly. + - Fixed the flashing when you click on a colored treeview row. + - Fixed auto-completion during /exec -o [1375530]. + - Added "Join Channel" menu item to the Server menu. + - Unshade the Disconnect menu item when a connection is in progress. + - Fixed a possible crash in changing color settings before changing + to/from the tree layout (SF bug #1349088). + - Added "Auto accept file offers" to the File Transfer settings. + - Added support for brackets "<>" around nicknames in cut and paste, + without displaying them (hidden text) (Camillo Lugaresi). + - Fixed opening URL irc://NetWork/#channel not joining the channel + [1362155]. + - Fixed the nickname label becoming small when you're marked Back + if you have "Small tabs" turned on. + - The textevents GUI has been re-written to use GtkTreeView. + - Randomized DNS lookups on Mac OS X on hostnames that return + multiple IP numbers (SG / CL). + - Added a dialog window to help newbies join a channel. + - Opening irc:// URLs will now JOIN only if you are already connected + to the network. + - Plugin API (Lian Wan Situ): + * Added selected flag to "users" list. + * Added "id" to xchat_get_prefs. + * Changed xchat_find_context (ph, channel, NULL) to return results + from the same server group as the current context when possible. + - Perl (Lian Wan Situ): + * using emit_print/command/recv will no longer trigger their own + callbacks. + * Fix compiling issues with versions older than 5.8.2. + * Make all scripts appear in the "Plugins and Scripts" window, even + those that do not call register(). + + +---------------------------------------------------------------------- + 2.6.0 - 03/Nov/2005 +---------------------------------------------------------------------- + + - Updated translations (nl, zh_TW). + - Message boxes are now warning, error or info with appropriate icon. + - Red marker line feature enabled by default. + - Added /SEND [file] which will automatically switch to PSEND + when detecting a private net address. + - Simplified default nick-right-click menu. + - Show "Last Talk" in nick-right-click menu as "minutes ago". + - Strip mIRC colour from away message in right-click menu. + - Warn when opening banlist in non-channel. + - Reorganised and simplified IRC/Server menus and new View menu. + - The editable Server menu is no more, if you want it type + /set gui_usermenu 1 and restart. + - Option to view channels in tabs or tree structure. + - Shorter titlebar text for better viewing in taskbar. + - Disabled key-search in server list, as GTK's auto-find does this + better. + - Removed "Connect in new tab" button in server list, it now does it + intelligently. Use stock Connect icon. + - Removed "Tint (shade) transparency" item from settings and figure + it out based on tint values. + - When closing a tab, re-focus the one near by, instead of always the + last. + - Firefox style close button. + - The lag and throttle metres now have tooltips that give you real + information (hover the pointer over them). + - Added workaround to show on-join ChanServ notices in the right tab. + - Tab scroll buttons are now side-by-side when in vertical mode. + - Automatically change key shortcut of "Marked Away" if the + translation already uses ALT-A for the Help menu (e.g _Aide in + French). + - Your nickname in the bottom-left corner now turns gray when you are + marked away, just like the userlist. + - Introduced a delay before joining channels, to allow for FreeNode's + short comings. If a umode +e is received it'll send auto-join + channels immediately. + - Plugin API: Added win_ptr to xchat_get_info. + - Non-irc (utility) tabs can now be detached aswell. + - Fixed behaviour problems of the userlist pane, which might be set + incorrectly if the window was resized while a server-tab is focued. + - Added a confirm-dialog when trying to close a server-tab with + children. + - Server list's edit window now gives you an option of a network + specific "Second choice" nickname. + - Auto detect RusNet and use /NICKSERV to identify instead of /MSG. + - Added /Ghost command. + - Fixed: The WHOIS away-line ignored irc_whois_front setting. + - Scroll-wheel now works while hovering over a tab (Lian Wan Situ). + - The input box right-click menu now has bold, underline and italic. + - Added xchat-remote for launching irc:// URLs in existing xchat + and other functions (Claessens Xavier). + - WIN32: Auto-loading perl scripts now also works from: + C:\Program Files\XChat\Plugins\ + - Better command-line parameter parsing via GOption. + - Tab completion order can now be in "last talk" order if you + /set completion_sort 1. + - "Channel Action" and "Channel Action Hilight" now have a 3rd + argument of "Mode char", just like normal message events. The last + talk time is also now updated on actions. + - Reworked the Character Chart window so you can find your char. + - Perl: + - fixed so that printf and commandf are exported + - print and printf can also be called as prnt and prntf, this is to + avoid clashing with the builtins. + - Deprioritized MODE/WHO to reduce join lag. + - WIN32: Mask out more invalid filename characters when writing to + log files. + + +---------------------------------------------------------------------- + 2.4.5 - 10/Sep/2005 +---------------------------------------------------------------------- + + - Updated translations (cs, el, fr, gl, it, nl, sl, sr, vi, zh_TW). + - Fixed incorrect information displayed in Plugins & scripts window + under unix (xc244-fixpluginns.diff). + - Added "/set irc_whois_front 1" option to show WHOIS in front tab. + - Lots of speed ups under the hood, mainly in handling of URL + highlighting during mouse motion. Also now allows underlining + .name and .info domains [1230265]. + - Moved the "Insert color code" menu into the input box's right- + click menu. + - Fixed "Your Message" messing up when starting with a comma + [1230269]. + - Added /id command to identify yourself to nickserv. + - Added /gui MSGBOX for scripters. + - Added /menu command which lets plugins/scripts add their own + menu items. + - Added support for passive DCC chat via /DCC PCHAT . + - Added support for DCC sending and receiving very large files + (above 4 GB). + - Improved layout of "Info" button in the DCC windows. + - Improved layout of the nick-name right-click menu. + - Improved /help command's display of plugins/script commands. + - Fixed two bugs in detaching tabs (or CTRL-I) [1228926]. + - Added /uselect command for scripters to select nick names in the + channel userlist (Daniel P. Stasinski). + - Fixed possible crashes while using the SJIS (Japanese) charset. + - Fixed various memory leaks in right-click menus. + + +---------------------------------------------------------------------- + 2.4.4 - 20/Jun/2005 +---------------------------------------------------------------------- + + - Updated translations (hi, ko, lt, pa, ru, vi, zh_TW). + - People's away message is now shown in the right-click menu, if + known (Christopher Aillon). + - The "Bind to:" setting can now be set to 0.0.0.0 [1176256]. + - Plugin API: Don't crash if a print-event closes the current context + and doesn't eat the event [1175674]. + - Disabled parsing of quotation marks for /JOIN, so you can join + channels with a quote in them (Dan Fruehauf). + - Fixed truncation of the URL in the right-click menu. Now handles + UTF-8 properly [1188229]. + - Fixed use of CP1255 charset, which would chop the last char when + receiving messages [1122089]. + - The DCC windows now allow multiple selection and the columns auto + resize (Dan Fruehauf). + - Added "CTCP Sound to Channel" event [1159445]. + - You can now drag and drop files into dialog windows to start file + transfers. + - Perl: + - Fix to allow fully qualified variable names to work as well. + - Enabled individual script unloading. + - Enabled reloading scripts using XS modules. + - Fixed handling of filenames with spaces in them. + - Added /reload which works like /load but it will do an unload first + it is not necessary to use the full path with this command, just + the file name is enough. + - Fix print callbacks for cases where there are NULL elements between + non-NULL elements. + - Fixed: "XChat can't ban users with long idents" (Dan Fruehauf) + [1159447]. + - Implemented taskbar flashing on unix. Requires a window manager + or taskbar that supports XUrgency flag (Adil). + + +---------------------------------------------------------------------- + 2.4.3 - 31/Mar/2005 +---------------------------------------------------------------------- + + - Updated translations (de, sq, zh_CN). + - Fixed crash of server list connect button when no network is + selected while using GTK's auto-find feature [1166669]. + - Fixed handling of WhoIs Special event on some networks where it + could chop off the first character [1164315]. + - Plugin API changes: Added "nickserv" field to xchat_get_info. + - Python: Fixed get_list() incorrectly failing when the list + contained a time field [1171525]. + - Perl: Make scripts using calls with fully qualified subs work again + [1170139] (Lian Wan Situ). + - Fixed input-box input-method (GTK I.M.) problem [1168239]. + - Fixed: Ignore and Notify windows incorrectly used the stock CLOSE + button instead of DELETE [1170655]. + - Placed Close/Connect buttons in correct position in server list + [1165474]. + + +---------------------------------------------------------------------- + 2.4.2 +---------------------------------------------------------------------- + + - Updated translations (ca, de, lt, nl, ru, sk, sr, vi). + - Added command line args -u and -p. + - Fixed handling of "MODE -o+o nick nick" (#1094026). + - Plugin API changes: + * Added "Key Press" print event. + * Added "state_cursor" for xchat_get_prefs. + * Added xchat_strip and xchat_free functions. + * Added "lasttalk" field to "users" list. + * Added "charset" field to xchat_get_info. + - Perl plugin changes (Lian Wan Situ): + * Move each script into their own unique package/namespace. Scripts + containing multiple packages will not be loaded. + * When warning messages are emitted you will now be told which + script it came from. + * Xchat::set_context will now accept Xchat::set_context( $channel ) + and Xchat::set_context( $channel, $server ) in addition to + Xchat::set_context( $context ). + * Fix display of loaded scripts in the Plugins and Scripts window. + - TCL: Fixed crash with invalidated TCL timer (#1110306) (Daniel P. + Stasinski). + - /TIMER now supports timeouts to one decimal place. + - Fixed possible crash of open-file dialog on 64-bit machines. + - Pressing CTRL-O in the DCC Receive window will now open your + downloads folder. + - Win32: Default download folder changed to "My Documents\Downloads". + - Added -quiet arg to the /charset command. + - The /country command now supports a wildcard search. + - The user is now warned when real/user name is left blank in the + server list window. + - Added the /URL command. + - Added a text event for all unknown WHOIS reply lines. + - Added /ALLCHANL which sends to the current server only. + - Actions (/ME) are now treated like PRIV/CHAN for purposes of the + ignore list. + + +---------------------------------------------------------------------- + 2.4.1 +---------------------------------------------------------------------- + + - Updated translations (ca, de, eu, it, ko, mk, nb, nl, pt, ru, sl, + sq, uk, zh_TW). + - Fixed custom marker-line color not reloading. + - Brought back the "Connect to selected server only" option in the + Serverlist edit window (it's like the reverse of "Cycle until + connected" in 2.0.x). + - You can now move networks and servers via Shift+Up/Down (in the + ServerList window). + - Small efficiency improvements in receiving dcc. It will now not + send ACKs while the input buffer is non-empty. + - Python: Fixed crash when a timer callback routine executes + xchat.unhook() and returns false. + - Fixed playing sound files with spaces in them. + - Added support for NickServ on DalNet and FreeNode. + - Plugin API: Added xchat_get_info(ph,"inputbox");. + - Added /settext and /setcursor commands for scripters. + - You can now scroll tabs with the mouse-wheel while hovering over + the arrow buttons. + - Fixed connecting to a SSL server via http proxy (#1054152). + - Fixed: Opened server tab doesn't count as "requested" (#1044227). + + +---------------------------------------------------------------------- + 2.4.0 +---------------------------------------------------------------------- + + - Updated translations (ca, de, eu, it, ko, lt, nl, sk, sr, zh_CN). + - Fixed a possible crash in loading pevents.conf. + - Made default URL handlers work with Firefox 0.9.x by adding the + "-a firefox" argument. + - Plugin API: Added xchat_get_info field "libdirfs". + - Fixed crash when trying to dcc send a filename which has encoding + that doesn't match G_FILENAME_ENCODING. + + +---------------------------------------------------------------------- + 2.1.1 +---------------------------------------------------------------------- + + - Updated translations (de, kr, lt, sk, sr, zh_CN). + - Added some rudimentary support for the IDENTIFY-MSG feature. + - Perl: Added Xchat::context_info (Lian Situ). + - TCL: Added support for time fields in getlist (Daniel P.Stasinski). + - Added "Open Dialog" event, so you can add a sound-file to it. + - The standard beep can now be overridden with a sound-file. + - Fixed tab-nick-completion's cycling behaviour. + - New keyboard shortcut for line up and down (shift-arrow up/down). + - Fixed: [986958] tab completion with GTK Input-Methods. + + +---------------------------------------------------------------------- + 2.1.0 +---------------------------------------------------------------------- + + - Updated translations (eu). + - Tab nick completion fixes: Crash with space-tab and glib critical + warning (Ian Kumlien). + - Heavily reworked the Preferences window. It should be alot clearer + now, and more gnome-like. + - 'Pop new tabs to front' setting now has three options (Kyoshiro). + - New colors and text-events, using a white background. + - Config files are not saved to disk unless you edit the defaults. + This makes it easier to change language (for print events, popup + menu etc). + - Brand new Server List window. Now much simpler and intuitive. Also + includes an entry box for NickServ password. + - The vertical separator line now has its own pointer when you hover + over it (Richard Gobeille). + - Alphabetical tab sorting now works and is enabled by default. + - Added "Small Tabs" option (reduces the font size). + - Brand new Sound-Events editor in the Preferences window. + - Added socks5 authentication support (Benjamin Foster). + - Win32: fixed auto-loading of TCL scripts. + + +---------------------------------------------------------------------- + 2.0.10 +---------------------------------------------------------------------- + + - Updated translations (ru, sr). + - Fixed compiling on systems other than linux/freebsd [969643]. + (Samuel Mimram). + - Fixed compiling with an old version of GTK (2.0.x). + - Further BiDi fixes in xtext (Ilya Konstantinov). + - Brand-new tab completion code (Ian Kumlien). This also fixes: + Tab expansion not working behind umlauts [956127]. + Plugin commands can now be tab-completed too (Frank Thieme). + - Fixed parsing URIs on userlist drag-n-drop (Jonas Heylen). + - Added Sort button to the server list window (David Oftedal and + Tim-Philipp Mueller). + - Tab button selection fix (Guillaume Knispel). + - Added marker-line feature. Shows a red-line to indicate the place + where you last read up to (Thomas Kockerbauer). + - The "Get my IP from Server" feature now works on networks that + hide your hostname too (by using the USERHOST command). + - Win32: Fixed CPS calculation for file transfers [824934]. + - Fixed: Ping timeout when the system clock changes [789140]. + - Fixed: Private messages delivered to status window when nickname + is the same as the network [977550]. + - Maximised window-state is now saved. + - Double middle-clicking a nickname in the text area will now select + it in the userlist. + - Included a work-around to stop X-Sys plugin crashing with GTK 2.4. + - Fixed: /list output going to the current tab [970746]. + - Fixed: Serverlist crash while editing a port-number, and switching + to another network before pressing enter [968652]. + - Made it possible to execute multiple "Connect Command:"s in the + ServerList window, when they're separated by ctrl-shift-a. + + +---------------------------------------------------------------------- + 2.0.9 +---------------------------------------------------------------------- + + - Updated translations (bg, cs, de, en_GB, eu, fi, lt, nl, ru, sk, + uk, wa). + - Fixed the Socks5 overflow security bug. + - DCC IP address setting can now be a hostname too (Flavio + Chierichetti) [773229]. + - Don't try random DCC ports when a range is set (mib) [889987]. + - Fix: Spurious nick completion (mib) [916944]. + - Serverlist passwd box is now masked (Cristian Peraferrer) [920113]. + - Fix: Sometimes messes up the tab order on reconnect (Gabor Szeder) + [941773]. + - Fix: Crashes when setting $CHARSET to nonexistant charset [945855]. + - Plugin API: Added some fields to the "channels" list. + - Plugin API: Added "win_status" and "xchatdirfs" fields to + xchat_get_info. + - Plugin API: Added xchat_send_modes() function. + - Fix: Unload, then reload a plugin on FreeBSD fails (Kevin Leung). + - Plugins should now work on HPUX too. + - Perl-plugin: Fixes for 3 arg version of emit_print, unhooking the + same hook multiple times and get_list returning correct values for + address32 field and some memory leaks (Lian Situ). + - Made menu keybindings work when the menubar is hidden on GTK 2.4. + - Added support for the new GTK 2.4 file chooser dialog. + - Fix for BiDi in xtext (Ilya Konstantinov). + - Smaller bug fixes [962211] [958599] [950353] and + [945617] (Frederic Krueger). + + +---------------------------------------------------------------------- + 2.0.8 +---------------------------------------------------------------------- + + - Updated translations (az, es, fi, lt, mk, nl, ru, sk, sl, sr, sv, + zh_CN). + - Added color, flash and iconify args to /GUI command (this is for + use in scripts and plugins only). + - Plugin API: Added "notify" list. + - Plugin API: Added id, users, flags fields for "channels" list. + - Win32: Better error messages for file i/o and winsock errors. + - New Perl interface (with backward compatibility)! (Lian Situ). + - Fixed command-character buglet [873541]. + - Win32: Improved incorrect CPS display for file transfers. + - Added "Copy Selected URL" option to URL popupmenu (Mike Battersby). + - Added work-around for "Get my IP from server" not working on PTNet + (Mario Freitas). + - Fixed: Alt+numbers do not work with X Input Method [896968] (Marius + Gedminas). + - Added support for "+port" to indicate SSL connections. + - Fixed non-ASCII chars in time-stamp bug [918445]. + - Smaller bug fixes: [870073] [890891]. + + +---------------------------------------------------------------------- + 2.0.7 +---------------------------------------------------------------------- + + - Updated translations (fi, nl). + - Fixed dcc psend crash [858539]. + - Fixed bug where an error message was erroneously displayed while + transfering files with fast-send turned off. Also, allow fastsend + to be used with psend (Daniel Dubois). + - Print more informative messages when Perl scripts fail to load + (Andy). + - Win32: Added native sound playing support. + - Win32: Fixed possible crash upon exit while still connected. + - Fixed notify's Lastseen column for offline users [864185]. + - Report more informative error when DCC write to disk fails. + - Fixed crash when xchat.conf contains oversized strings [750403]. + + +---------------------------------------------------------------------- + 2.0.6 +---------------------------------------------------------------------- + + - Updated translations (de, lt, sl, sr). + - Fixed detection of Python on amd64 (Mads Martin Joergensen). + - Don't loose editbox contents when pressing up, then down arrow + (Ricky Clarkson). + - Fixed missing dcc flag on new ignores via gui. + - Fixed missing separator bar on PseudoColor displays. + - Fixed some 64-bit issues (xc205-fix64bit.diff). + - Apply tint changes instantly. + - Fixed DCC resume with mirc >= 6.1. + - Python plugin changes: + * Fixed the reentrancy problem which made xchat freeze when some + python code made xchat trigger a python callback somewhere. + * Implemented xchat_emit_print() and xchat_get_prefs() support. + * Fixed softspace support for python 2.3. This problem was making + print statements yield an extra space at the next line start. + * Other minor changes. + (Gustavo Niemeyer, Gustavo J. A. M. Carneiro, Marko Kreen). + - Fixed request of a MODE on a channel you're not in changing the + current titlebar [820998]. + - Restored compatibility with older Perl that lacks call_pv(). + - Use sigaction inplace of signal() for better compatibility. + - Win32: Don't try to open logfiles with a "\" in them, windows wont + allow it. Instead, the "\" is replaced by a "_". + - Backported HTTP authentication code from 1.8.11 (you can now + specify a username and password for HTTP proxies). + - When beep on highlight is on, beep on channel actions too + (Christopher A. Aillon) + - Added active dcc send feature (/dcc PSEND). More info here: + http://mail.nl.linux.org/xchat-discuss/2003-10/msg00124.html + (Daniel Dubois and Emmanuel Jeandel). + - URL Handlers menu now removes programs that arn't in PATH. + - Added "away" users field for plugin API. + - Smaller bug fixes: 822199, 786267, 783172, 811971, 756048, 844919. + + +---------------------------------------------------------------------- + 2.0.5 +---------------------------------------------------------------------- + + - Updated translations (ca, fi, lt, nl, sk, sv, zh_CN). + - Fixed detection of Python 2.3 in configure script (anonymous). + - DCC Send file-selection dialog now supports multi-select. + - Reset away status after auto-reconnect from a ping timeout. + - Perl: Fixed IRC::user_info always matching the first entry. + - More C89 fixes for non-gcc compilers (Albert Chin). [781809]. + - xtext: now double buffered and flicker free. Also some efficiency + tweaks for exposure events and multi-wrapped lines. + - Removed buggy numeric 338 support [783945]. + - Nick completion in dialogs and channel completion (Jay Cornwall). + - Print informative error messages when dcc resume isn't possible. + - Fixed performance of dcc recv, send and chat windows. + - Fixed tab-arrow buttons show/hide (Lloyd Williams) [783681]. + - Fixed lastlog bugs [791220]. + - win32: Faster tinting, and uses MMX when in 16 or 32bit color. + - Execute /sigusr2 on receiving SIGUSR2 signal (Michael Guidero). + - /IGNORE command and window now have an extra "DCC" category. + - Alert user when logfiles fail to open (Jay Cornwall). + - Fixed missing underlining of IP numbers (2.0.4 only). + - Allow accepting DCC sends from ports below 1024. + - Connect to URL given on commandline even if 'No Serverlist on + Startup' is off [804648]. + - Fixed problem in allocating colors while in 8bit PseudoColor. + - xtext: tinting now shades towards your background color, making it + usable with white backgrounds. Tints can also use XShm for extra + speed with --enable-shm at ./configure time (experimental). + - Perl: IRC::add_print_handler callbacks now get parameters in + $_[1...x], with $_[0] left for compatibility (Lian wan Situ). + - Perl: added command_with_channel command (Alexander Werth) + [801711]. + - Smaller bug fixes: [798655]. + + +---------------------------------------------------------------------- + 2.0.4 +---------------------------------------------------------------------- + + - Updated translations (lt, sv, zh_CN). + - Fixed crash on tinted transparency (xc203-fixtint.diff). + - Fixed incorrect dcc cps calculation (xc203-fix-cps.diff). + - Allow fullpath and relative filenames for Text Events sound files + (Anthony Dragunov). + - Added /GUI command (mainly for use by scripts). + - Solaris build fixes for ipv6. + - Added -n, --no-plugins command-line arg. + - Added a feature to change the color of away users. + - Moved default dcc and sound dirs inside ~/.xchat2/ (SilvereX). + - Fixed bug [753742] When server tab and query had the same name, + private messages could go to the wrong tab. + - Support others users too, when expanding ~ in filenames (Neox). + [767514]. + - Underline "ipnumber:port" style urls too (Alex & dobler). + - Added support for ircu numerics 330 and 338 (phaseburn). + - C89 fixes, should now compile with HP UX and Sun C Compilers + (Albert Chin). [777106]. + - Smaller bug fixes: [773245] [779166]. + - Close tabs on shift-leftclick (Jay Cornwall). + + +---------------------------------------------------------------------- + 2.0.3 +---------------------------------------------------------------------- + + - Updated translations (ca, fr, ja, sv). + - Fixed URL grabber not filling up (xc202-fixurlg.diff). + - Fixed crash when holding down Ctrl-I (xc202-fixdetach.diff). + - Use Shift-Ctrl-W for Close only when Emacs key theme is enabled. + - Fixed corrupt left margin with indent-nicks off and timestamp on. + - Remove invalid chars from inbound text when conversion fails. Fall + back to ISO-8859-1 when using UTF-8 only (Ilya Konstantinov). + - Fixed perl IRC::get_info(3) crash when not connected [732496]. + - Fixed crash on long output lines for /exec -o [731187]. + - Made "Move completed files to:" and "Save nickname in filenames" + work at the same time (Matthew Gabeler-Lee). + - xtext: fix redraw when new additions not on current page. + - win32: Added /set identd 0 switch to turn off built-in identd. + - Added 6-8 for perl's IRC::get_info to retreive network, host and + topic (Ryan). + - Iterate in alpha order instead of op-alpha for nickcompletion + (Gauss_Z88). + - Fixed ChannelList crash on invalid regex match string. + - Added hide join/parts setting to gui (Jason Wies). + - Added Delete All button to ignore window (Mohammed Sameer). + - Don't allow adding empty names to notify list [741589]. + - Made message fragmentation code utf8 friendly so it always splits + on a multibyte char boundary [748653]. + - Support 2 to 4 GB files in DCC (contrary to 1.9.4 changelog, it + didn't work until now). + - Python: Fixed crash when returning 0 from a timer (Steve Green). + - Multihead fixes for popup menus. + - Added support for numeric 307 and 320 "is an identified user". + - Allow setting a blank topic via the GUI [720407]. + + +---------------------------------------------------------------------- + 2.0.2 +---------------------------------------------------------------------- + + - Updated translations (lt, ms, nl, pt, sv, zh_CN). + - Fixed a few minor mem leaks in the server and user list. + - Changes to: UrlGrabber, Notify, Plugins, Ignore and Banlist GUIs. + Changed GtkCList to GtkTreeview, and general enhancement to these + guis (Vincent Ho). + - win32: made it possible to compile with ipv6. + - Added /MOP. + - Fixed pageup/pagedown wrong window bug [710784]. + - Fixed no timestamps in top-level windows bug [710787]. + - Fixed first word being skipped in perl add_command_handler("", cb); + [711802]. + - Fixed WHOIS away line appearing in different tab [695932]. + - win32: fixed transparency [699425]. + - win32: fixed ssl "Error 2" connection bug. + - Made all toplevel dialog windows transients of the main window. + - Show filesize/pos in DCC window as KB and MB (Aaron Chernosky). + - Added /set tab_dnd 0/1 option. + - Fixed userlist insertion/deletion GUI performance problem [704233]. + - Each toplevel window now has a "role". + - Smaller bugs fixed: [698449] [718851]. + - TCL plugin fixes for context lookups (Daniel P. Stasinski). + - Changed Close Tab keybinding to Shift-Ctrl-W to avoid conflict with + emacs editing. + - Used a new algorithm for Userlist and UrlGrabber. This one does + insertion, lookup and deletion in O(log n). + + +---------------------------------------------------------------------- + 2.0.1 +---------------------------------------------------------------------- + + - Updated translations (am, ca, lt). + - Save serverlist before connecting (Joe Drew). + - OpenBSD compile fixes. + - (Encoding) Fallback outgoing text to "?" for unconvertable chars. + [674798]. + - Hide tab scrolling buttons when they're not needed. + - Fixed --disable-xlib compiles. + - Fixed use of %h in dialog-tab buttons [688937]. + - Fixed printing/logging timestamps that contain invalid utf8 + [688548]. + - Added "Resizable userlist" option (default ON). + - Strip colors on topic change. + - Fixed (snotice) and (notice) tabs being swapped [687437]. + - Made more strings translatable. + - Allow loading empty text events [691191]. + - Fixed xtext race condition [678874]. + - Added ability to show/hide the channel-mode buttons (default OFF). + - Use the network name in server-tab rather than full hostname. + - Added keybindings for moving tab-families, default is ctrl-shift + PageUp and PageDown (Vincent Ho). + - Added 'Beep on highlighted messages' option (Jirka Kosina). + - Use DND to detach tabs. + - Interpret %C, %B etc in quit reasons. + - Added more items to the right-click tab menu. + - Some misc UI cleanups. + + +---------------------------------------------------------------------- + 2.0.0 +---------------------------------------------------------------------- + + - Updated translations (de, es, lt, nl, sk, sl). + - Fixed half cut off dates in notify window. + - Fixed tabs loosing red/blue color when being renamed. + - Fixed initial query tabs not being truncated. + - Make tabs red on channel actions too. + - Configure script python detection fixes (Johan Dahlin). + - Added /charset command. + - Don't auto remove stalled DCCs unless dcc_remove setting is on. + - Avoid recursive UserCommand buffer overflow. + - Added xchat_emit_print() to plugin interface. + - Left and Right positioned tabs are possible again (Lloyd Williams). + - Added /timer -repeat and -quiet args. + - Possible tcl plugin crash fixes (Daniel P. Stasinski). + - Group multiple op/voice in one print event. + - Fixed plugin loading on solaris. + - Python fixes (Gustavo Niemeyer): + * Fixed bug which made Python plugins crash randomly. + * Introduced a new xchat.hook_unload() function, as requested by + many people. This will call a given callback at module unload + time. + * Now /py load will succeed if filename is the name of a + file inside "xchatdir" (~/.xchat2). + * Fixed some leakings. + + +---------------------------------------------------------------------- + 2.0.0pre1 +---------------------------------------------------------------------- + + - Updated translations (sv, es, am, el, lv, no). + - Fixed possible blank userlist after another tab was detached. + - Changed default keybinding for next/prev-tab to ctrl-pageup/down, + as per standard. + - Added IPAddress field to "DCC SEND Offer" text event. + - Fixed perl IRC::print_with_channel 1.8.x incompatibility. + - xtext: Fixed bugs in new scrolling code. + - Use filesystem encoding for log filenames. + - Focus the inputbox when left-clicking in xtext. + - Focus the inputbox when typing while the userlist is in focus. + - Fixed bug where text typed could be sent to the wrong window after + a detach. + - New default icon again, this one scales better (Dagmar d'Surreal). + - Send /LIST args on galaxynet. + - Added settings to change inputbox and userlist styles to the same + as the main text area. + - Don't allow the Perl plugin to be loaded twice (Ian Kumlien). + - Fixed servlist crash on 'use global' off and empty nick field. + - Added missing address field to Perl's IRC::dcc_list. + - Added irc_conf_mode setting (via /set only). + - Save xchat.conf safely (Michael Witrant). + - Added support for numeric 005 token NAMESX. + - Added TCL Plugin (Daniel P. Stasinski). + - Added 'Add' button to serverlist, due to popular demand. + - Update intl/ to 0.11.4. + - Win32 fixes/makefile for python plugin (James Potts). + - Win32: fixed clipboard bugs and dcc receive. + - Plugin iface: Added dcc-list fields "address32" and "port". + - Try to use pkg-config to find openssl. + - Report errno/strerror on dcc failures. + - Python print buffering fixes (Gustavo Niemeyer). + - Treat NOTICE +#channel correctly. + - Check for common unix paths and don't treat them as commands. + + +---------------------------------------------------------------------- + 1.9.8 +---------------------------------------------------------------------- + + - Added Amharic translation (Daniel Yacob). + - Updated Spanish translation (Pablo del Campo). + - Updated Lithuanian translation (Rimas Kudelis). + - Updated Latvian translation (Artis Trops). + - Fixed serverlist entry box text corruption (xc197-fixservlist.diff) + - Fixed the non-mmx tinted-tranparency code crashing. + - Fixed interpretation of mIRC color 99 [653094]. + - Use Pango renderer by default, for better i18n. + - Scroll 1/10 of a page with the mouse wheel (Soeren Sandmann). + - Reimplemented -a, --no-auto argument. + - Fixed a bug in entering text with GTK2 IMs [653751]. + - Final fix for filenames' encoding in DCC. + - New unicode character chart window. + - xtext: properly recalculate text widths after a font change. + - Fixed perl IRC::dcc_list 1.8.x incompatibility (Charles Lopes). + - xtext: Implemented scrolling instead of full redraws when not using + a background image or transparency. This improves scrolling on + machines that draw AA text very slowly. + - Reimplemented 'Move front tab left/right' keybinding. + - Provide default usermenu and buttons for translation. + - New default icon (Dagmar d'Surreal). + - Report the average KBs when a transfer is finished. + - Attempt to create dcc-download dir when changed in the setup gui. + - Apply character set conversions to DCC Chat aswell (Steve Green). + - xtext: Fixed hilight-text in scrollback after new addition bug. + - Channellist gui cleanup. + - Renamed a few defines in xchat-plugin.h to avoid namespace + pollution. + - Fixed loading background image crash (from 1.9.7). + - Fixed broken drawing of mIRC color 0. + + +---------------------------------------------------------------------- + 1.9.7 +---------------------------------------------------------------------- + + - Updated Swedish translation (Christian Rose). + - Updated Spanish translation (Pablo del Campo). + - Updated Dutch translation (Bart Coppens). + - Added /GETSTR and /GETINT. + - Misc. serverlist bug fixes (Shaun Guth). + - Plugin changes/fixes: + * Added xchat_get_info("network"). + * Added new function: xchat_hook_fd(). + * Fixed "DCC Chat Text" event (Daniel P. Stasinski). + * Added "Open Context" print event. + * Fixed implementation of EAT_ return codes. + * Keep the leading ":" in server events passed to plugins. + * Added hack to make plugins possible on win32. + * Fixed /unload crash. + - Fixed changing tabs via keyboard. + - Added a few keyboard accelerators to the menubar. + - Fixed close-tab-0 crash. + - Fixed userlist popup menu disappearing on button-release. + - Fixed color paste. + - Added a character set selector to the serverlist. + - Send DCC filenames in system encoding (gets converted if a charset + is chosen in the serverlist). + - Fixed possible Search Text crash. + - Removed --enable-japanese-conv configure option (isn't this + superseded by the new charset selector?). + - Use --enable-openssl by default. + - Fixed your nick not changing in dialog windows. + - xtext: deal better with invalid utf8. + - Made it possible to do /server . + - win32: backported tint/transparency code from 1.8.10. + + +---------------------------------------------------------------------- + 1.9.6 +---------------------------------------------------------------------- + + - Updated Spanish translation (Pablo del Campo). + - Added Estonian translation (Ilmar Kerm). + - Made switching to dialog tabs faster: + * Draw xtext only once when switching to a dialog tab. + * Do not recalculate the tinted-transparency. + - Fixed another text-off-the-bottom bug. + - Fixed background color other than black not working. + - Fixed dialog windows not being logged (Joanne Hunter). + - Fixed topic entry box going blank bug. + - Added Insert-color-code and encoding submenu in the bottom-right + button. + - Apply more settings without needing a restart: + * Background image. + * Time stamp text on/off. + * Palette changes. + - Implemented %n for log-filename-mask. + - Reconfigured the menubar a bit. + - Validate inbound utf8 text to avoid reading beyond buffer and + fall back to iso-8859-1. + - win32 compile fixes. + - Don't convert commas to %2c in urls. + - Auto open dialog when dcc chat offer connects (Steve Green). + - Make setting "Open Utilities in: Windows" work. + - Added a way to reorder networks in the serverlist window (still + want to add DND later). + + +---------------------------------------------------------------------- + 1.9.5 +---------------------------------------------------------------------- + + - Fixed the PL_perl_destruct_level crash (Bernard Blackham). + - Fixed the perl readdir crash. + - Added tab scrolling buttons (Lloyd Williams). + - Added DCC throttle and better CPS calculation (Richard Fuchs). + - Added three configurable tab-highlight colors (Nehal Mistry and + Joanne Hunter). + - Added dynamic support for two levels above Op (red & purple icons). + - Changed the op/voice icons, now more macosx like. + - Serverlist progress: + * Now remembers your last network selection. + * Non-global User/real/nick are now implemented. + * Added all 1.8.x default servers. + - Added Clear Rawlog button. + - Throttle and Lag meter settings implemented. + - Fixed /lastlog. + - xtext: Fixed exposure-before-print crash. + - xtext: Fixed providing UTF8 selection data. + - xtext: Fixed text scrolling past the bottom bug. + - Added DCC-completed-dir setting, which can move completed DCC files + to a different directory (Chris Morgan). + - Update build environment to autoconf 2.53. + - Cleanup various configure.in/Makefile.am scripts. Use libtool to + build perl and python plugins (John). + - Added support for numeric 005 options: CHARSET=UTF-8 and + CASEMAPPING=ascii. + - Delinking/Relinking IRC windows re-implemented. + - Dialog window buttons re-implemented. + - Gnome2-ify the desktop file. Install to $(datadir)/applications. + + +---------------------------------------------------------------------- + 1.9.4 +---------------------------------------------------------------------- + + - Make DCC support up to 4GB files (previously 2GB). + - Fixed possible crash when receiving a message from a channel that + was already parted. + - Fixed random /part reasons not working. + - Fixed compile on RHL 8.0. + - Fixed xchat-text connect crash. + - Updated included intl/ to 0.10.38. + - Update transparency when background image changes. + - Fixed the progress-connecting-bar appearing in all tabs. + - More IRC protocol abstractions; tcpsend2 (James D. Taylor). + - New server list GUI almost complete. + - Merged some small 1.8.11 fixes. + - Reopen logfiles on SIGUSR1. + - Added Tint RGB settings (foser). + + +---------------------------------------------------------------------- + 1.9.3 +---------------------------------------------------------------------- + + - Updated Spanish translation (Pablo Gonzalo del Campo). + - Updated Swedish translation (Christian Rose). + - Added mIRC's passive dcc support, receiving only (Richard Fuchs). + - Added InputBox settings to settings GUI. + - Make DCC support up to 4GB files (previously 2GB). untested. + - Fix checks for Xft.h in configure script. + - Fix perl add_message_handler() xchat 1.8.x incompatability. + - Fix default DCCRECV text event using bad $ variable and crashing. + - Fix /query #foo, /join #foo crash. + - Fix utf8-conversion-fail sending truncated text. + - Use $datadir/locale for LOCALEDIR (Albert Chin-A-Young). + - More work done on Serverlist 2, but not fully functional yet. + - Pasting from one tab to another now works. + + +---------------------------------------------------------------------- + 1.9.2 +---------------------------------------------------------------------- + + - Fixed DCC Chat offer crash (1.9.1 bug only). + - xtext: Xft tweaks. Included Pango backend for when Xft can't be + used directly. + - xtext: improved rendering selections (less unnecessary redrawing). + - xtext: fixed marking multibyte utf8 chars. + - Included brand new Python interface plugin (Gustavo Niemeyer). + - Perl is now a plugin. + - Plugin API: Changed xchat_unhook() return value and type. + - Plugin API: Added "ignore" list. + - Plugin gui window can now load/unload scripts aswell. + - Plugins are now autoloaded from $libdir/xchat/plugins. + - Double-click userlist works again. + - Strip spaces from join-channel in serverlist (Mathias Hasselmann). + - The menu in the bottom right corner now works. + + +---------------------------------------------------------------------- + 1.9.1 +---------------------------------------------------------------------- + + - Fixed serverlist and rawlog crashes. + - Fixed some 64-bit issues (Elliot Lee). + - Fixed unrealized xtext crashes and warnings (Elliot Lee). + - Removed --disable-glib configure option. + - Added Save rawlog button. + - Auto detect socklen_t. + - All new plugin interface. See plugins/plugin20.html. + - Made perl.c use the new plugin interface. + - Made the whole system use the cmdchar setting. This means all + usercommands, popup commands etc mustn't start with a "/" char. + - Removed the mail checker, it's now a plugin. + - Cleaned up some text events code. Added/Changed/Removed some + events too. TextEvents window now lists them alphabetically. + - Convert inputbox from utf8 to locale before sending (xLoneStar). + - Use ~/.xchat2/ for all configs (may change to ~/.xchat-2.0 + when stable). + - Made DCC GUI display KB/s instead of cps. + - Ignore code cleanups; ignore.conf no longer compatible. + - Created the start of an IRC protocol abstraction layer. + - Plugged JCode memory leak. + - Ask before quiting when some DCCs still active. + - Rewrote most of the maingui code. Now there's only one virtual + tab that is re-filled with new information when switching tabs. + - Added right-click tab menu. + - Plugged potential /dns security hole. + - Converted userlist to GtkTreeView. + - Right-click userlist menu now works with a multi-selection. + - Drag and drop to userlist no longer requires libgnome. + - Included an ircII style /timer plugin. + - Now accepts irc:// URLs on the command line. + - Tabs are now ordered in server groups. + - Make gettext use utf8 (teuf). + - Whole new setup window. + - Notify gui has an add dialog window. + - Nickname on the bottom left is clickable. + - Cleaned up /set variable names. + - Made scrollwheel work with GTK+ 2.0 (Lloyd Williams). + - xtext: Added XFT support. + - xtext: Added UTF8 selection support. + + +---------------------------------------------------------------------- + 1.9.0 +---------------------------------------------------------------------- + + - Ported to GTK+ 2.0 (BIG!). + + +---------------------------------------------------------------------- + 1.8.7 +---------------------------------------------------------------------- + + - Updated Swedish translation (Christian Rose). + - Updated Russian translation (Anton Farygin). + - Added Latvian translation (Artis Trops). + - Made a work-around for a refresh glitch when delinking a tab under + gnome (the topic bar was overlapped). + - Fixed the need for signed chars (e.g. on PPC and s390). + - Fixed background garbage being drawn when using hidden tabs. + - Cleaned up alot of the nick completion code. Fixed some behaviour + too (Mukund, dinkles, me). + - Connect Cmd is executed again if you get auto-reconnected. + - Added safe-gaurd to stop duplicate nicks in userlist. + - Added an option to automatically remove finished/failed dccs + from the list. Use /set dcc_remove ON to enable it. + - Added an option to truncate long channel tabs. Use: + /set truncchans xx, where xx is the max chars (Jyrki Muukkonen). + - Made the default popup menu, dialog buttons, userlist buttons, + usermenu and urlhandlers translatable (via gettext). + - MMX tinting is now built on any x86 machine (it's checked at + runtime anyway). + - Added "Automatic Unmark Away" option in setup->away (Mads Martin). + - Immediately abort file transfers when out of space. + - Fixed a serious CTCP reply vulnerability. + + +---------------------------------------------------------------------- + 1.8.6 +---------------------------------------------------------------------- + + - Updated Danish translation (Morten Brix Pedersen). + - Updated Spanish translation (Antonio de la Torre). + - Updated French translation (Olivier Berger). + - The server "Connect cmd" is now executed before auto-join-channels, + so you can use it to authenticate to nickserv etc. + - Fixed autoresume again, for the last time... no, really. + - Fixed sending parts for all channels instead of one quit when you + exit the whole program (helps bncs). + - Autocomplete in the middle of a sentence won't jump to the end of + the textbox (Darell Tan). + - Fixed the buggy 1.8.5 outbound queue. It now sends privmsg/notice + with a lower priority, but never out-of-order. + + +---------------------------------------------------------------------- + 1.8.5 +---------------------------------------------------------------------- + + - Updated Slovak translation (Stano Visnovsky). + - Updated Swedish translation (Christian Rose). + - Updated Spanish translation (Antonio de la Torre). + - Updated Hebrew translation (Dan Fruehauf). + - Some fixes to the MODE parser. + - Added ability to customize dialog tab buttons (Oskar Liljeblad). + - Added an extra field in the EditServer window to enter a command + to execute after logging in. + - /load -e can now load a file of commands to execute. + - Added ability to change the log timestamp format (Jyrki Muukkonen). + - Fixed default keybinding for Shift-PageUp (Mukund). + - Changed the outbound throttle behaviour. Now only privmsgs and + notices go to the back of the queue, everything else goes to the + front. + - Made it possible to compile with older than 5.6 perl again. + - The main window's size and position is now saved on exit. Use + /set mainwindow_save OFF to revert to the old behaviour. + - Avoid auto-resuming the same file from two different people + (without breaking autoresume this time). + - Removed /sslserver and added a -ssl arg to /server, /reconnect, + /servchan and /newserver. + - Added support for /server irc://host:port/channel. + - Added some mmx asm code written by Willem Monsuwe for tinting + transparency. Use --disable-mmx to revert to gdk-pixbuf method. + - Fixed resetting your away status after an auto-reconnect. + + +---------------------------------------------------------------------- + 1.8.4 +---------------------------------------------------------------------- + + - Updated Spanish translation (Antonio de la Torre and Manuel + Garca Aguilar). + - Updated Russian translation (Valek Filippov). + - Fixed lockup when a file being offered is shortened before being + accepted. + - Fixed ** ERROR **: file python.c: line 743 (pysH_Eget_users): + assertion failed: (cur->hostname). + - /kickban now deops and bans in one line (-o+b) (Felix Nawothnig). + - Auto-nickcompletion now uses the nicksuffix setting (Mukund). + - win32: change log-filenames with a | character to _. + - When binding to a set hostname/ip, it would try to bind to port + 65535 - fixed. + - Fixed crash when closing a dcc chat in a perl-dcc-chat-callback. + - Added option "Beep on Channel Messages" and a Beep button to the + toolbox ("<" button in the botton right) (Jason Wies). + - Avoid auto-resuming the same file from two different people. + - /close -m now closes all dialog/query windows. + + +---------------------------------------------------------------------- + 1.8.3 +---------------------------------------------------------------------- + + - xtext: marked text goes to clipboard aswell as primary selection. + - xtext: some speedup optimizations. + - xtext: fixed a problem when rendering a fixed-width font with + missing chars. + - Fixed hints for "You're kicked" text event, which showed the $ vars + incorrectly. + - When a user is seen to quit or join a channel you're in, your + notify list will be modified instantly. No notify textevent is + shown if it happened in the front-most tab (Alexander Hvostov). + - Fixed binding server connects to different interface/address + (ipv4 only) (Claus Riemann). + - Avoid negative ping timeout when system clock changes. + - Updated Italian translation (Stefano Fava). + - Updated Spanish translation (Antonio de la Torre). + - Added text event "Channel Notice" so you can differentiate between + private and channel notices (Fuentes Xavier). + - Added ability to dcc send filenames with spaces. See "Fill Spaces" + setting in Setup->File Transfer (Fuentes Xavier). + - Included some makefiles for ms visual c. + + +---------------------------------------------------------------------- + 1.8.2 +---------------------------------------------------------------------- + + - Fixed kick messages showing only the first word of the reason. + - Fixed GTK warnings thrown up when closing a dialog window. + - Fixed a bug in sending quit reasons. + - Fixed a problem with handling op/voice modes that caused halfops to + appear in the userlist when using bahamut. + - Kanji conversion is now turned ON when locale is ja (Akira TAGOH). + - Saved some memory when loading .conf files (about 40k). + - When changing fonts, it now changes in the inputbox without having + to restart. + - Added safeguard to stop recursive user commands. + - Added two /set variables dialog_width and dialog_height. Use these + to set the default size of dialog windows. + - Win32: fixed crash of 'Auto Accept DCC Send' menu item. + + +---------------------------------------------------------------------- + 1.8.1 +---------------------------------------------------------------------- + + - Fixed crash in having server tabs ON and channel tabs OFF. + - Fixed crash when closing the channel list window AFTER all its + server windows were closed. + - Fixed potential crash of the font dialog in settings. + - Made /exec read data line-by-line (Richard Fuchs). + - Disabled the menubar while in shelltabs (it was dangerous to use it + anyway). + - Fixed the banlist window's Unban, which selected the wrong rows + sometimes. + - The Perl interpreter is now started only when loading the first + script, to save memory when not using scripts. + - Fixed lag/throttle meters not updating when set to text-only. + - Fixed two small memory leaks. + - Directories in your logmask are now created, so you can use masks + like "%c/%y.log" in Setup->Logging (Tobias v. Koch). + - xtext: FontSet rendering speedups. + - Win32: made word and line selection work in xtext. + - Win32: added url handler that sends to windows' shell. + - Win32: rendering 8bit characters should now work. + + +---------------------------------------------------------------------- + 1.8.0 +---------------------------------------------------------------------- + + - Fixed a memory leak in popup menus. + - Fixed crash in receiving private actions. + - Added /set variable 'perccolor'. Options effect input box are now: + perccolor: parse %C,%B,%U etc (default ON). + percascii: parse %XXX (where XXX is an ascii value) (default OFF). + Note: if perccolor is OFF, percascii will not work. + - Win32: Fixed incorrect calculation of ping time. + - Win32: Server lookup and connect is now threaded. + - Win32: Server connection error now reported correctly. + - Win32: A simple identd server is now builtin. + - Win32: Copying text from xtext to clipboard now works. + - Updated Swedish translation (Christian Rose). + - Updated Spanish translation (Antonio de la Torre). + + +---------------------------------------------------------------------- + 1.7.8 +---------------------------------------------------------------------- + + - xtext: Fixed parsing of "%C2, " to match mIRC, i.e. bg color is not + reset, fg changes to 2 and the comma is printed (Fuentes Xavier). + - xtext: a fix for multibyte text wrapping (Tetsuo YAMAMOTO). + - Made notify NOT announce everyone offline when you first login. + - Multiple WATCHes are sent on one line for notifies, to reduce lag. + - Added an internal /unban command which takes multiple masks. You + might want to remove the old usercommand (Tobias v. Koch). + - Banlist window now sends multiple modes per line. + - Fixed a memory leak in perl (Martin Persson). + - Removed the tooltip for userlistinfo, it seemed to cause corruption + on some gtk+ themes. + - Made xchat not interpret %C,%B etc when percascii is OFF, .e.g: + /set percascii OFF + - Fixed ops/voice counts when networks allow you to voice/op people + that are already voiced/oped (like EFnet). + - Fixed building with --disable-glib. + - IPv6 reverted to off by default, use --enable-ipv6 to enable. + - Win32 fixes: dcc send/recv now works and fixed a bug in loading + some .conf files by using the O_BINARY flag. + - Changed the xchat icon - old one was a bit too dark. + - Updated Greek translation (Fanis Dokianakis). + + +---------------------------------------------------------------------- + 1.7.7 +---------------------------------------------------------------------- + + - Re-added support for '+' channels when there's no 005 numeric. + - Made the new $3 null terminated (works better that way). + - Fixed Doubleclick-user when disabling userlist icons. + - Fixed SSL build. + - Win32 port (some code from Alex Badea's 1.5.11win32 port used). + - More code cleanups, removed all extern prototypes from fe-gtk/. + - Titlebar text now shows unknown channel modes too. + - Made persist chans work with /reconnect aswell. + - Avoid pastes of common unix directories being treated as irc + commands (Chema Celorio). + - Removed the Delete word forward/backward functions from + KeyBindings. GTK handles these already, why were they ever there? + - Made %h work for dialog windows' popup menu too. + - Fixed treeview not setting channels red and blue. + - The info above the userlist now gets a tooltip which gives you + some extra info. + - The nickgad (to the left of your nickname) now gets a text prefix + char if userlist icons are disabled. + - Timestamp format is now configurable in Setup->IRC Input/Output. + + +---------------------------------------------------------------------- + 1.7.6 +---------------------------------------------------------------------- + + - xtext: tweaks to make url highlights less flickery. + - Added some support for ircd numeric 005. MODES>=6, CHANTYPES, + CHANMODES, WATCH and PREFIX are supported. This means dynamic + support of different channel and user modes. The userlist icons + only support *@%+ though (admin, op, half op, voice), will have to + find a way to make these dynamic in the future. Also, made a new + file modes.c and rewrote mode handling in general to support this, + so what did I break? + - Added option 'Userlist icons' (default ON). Lets you turn off + userlist icons for ops, voice etc and get the plain text @+ (in + Setup->Interface). Might be useful for ircd's that have weird + and wacky access levels. + - Added support for WATCH command for use in notify list. Numeric 005 + must list WATCH for this to work. + - Added an extra arg $3 for channel message printevents. This is the + prefix char of the person talking, e.g. '@' for Ops. + - Resolve irc-server name only if using a non-socks4 proxy. This + allows you to connect even with a non-working dns. Also made the + socks5 code more "correct" (Richard Fuchs). + - Some code cleanups, got rid of most of the extern functions in c + files and moved them to h files. + - Perl has a valid context at startup again (broken in 1.7.4). + - Fixed leak of awaymessages for "Show away once" feature. + + +---------------------------------------------------------------------- + 1.7.5 +---------------------------------------------------------------------- + + - Fixed some buggy catalogs for gettext 0.10.37 (OpenBSD users). + Compiling with 0.10.35 will now break, there's always + ./configure disable-nls. + - Fixed python autoloading due to new serverlistcode (Richard Fuchs). + - Made perl/python/plugins autoload when first irc window is open + (rather than when serverlist opens), incase they need to print. + - Changed serverlist opening behaviour. It now obays the + 'No ServerList on startup' setting regardless of auto-connects. + - Fixed buggy Quit menu item (1.7.4 bug). + - DCC cleanups, including some endian fixes. + - DCC windows don't go to front when new xfers appear (1.7.3 bug). + - Rewrites to a few vital xtext functions. This seems to have speed + up rendering with a FontSet and fix the -/+1 line bug. + - Fixed Shelltab not opening sometimes (actually a 1.7.4 ipv6 bug). + - Added ability to change font for Shelltabs only: + /set font_shell + + +---------------------------------------------------------------------- + 1.7.4 +---------------------------------------------------------------------- + + - On startup, serverlist now opens without any other windows, looks + neater, less confusing for newbies. If you disable serverlist at + startup, a normal irc will open instead. + - Made a few things more userfriendly, "DCC Send" -> "File Send". No + need to refer to the protocol in the GUI! + - Fixed a xtext bug rendering a background color of 1 incorrectly. + - Unprintable characters used to cause problems to xtext (who would + have thought gdk_char_width returns a different value to + gdk_text_width?) - fixed. + - xtext renders only once when switching tabs (used to render twice + because gtk gives us 2 expose signals, why?). + - When you change your nick it changes in the titlebar now too. + Server name is now reported in dialog windows' titlebar. + - Having Strip mIRC Color ON will now strip it from dcc chats too. + - Added (really this time) perl functions add_user_list, + sub_user_list, clear_user_list for manipulating the userlist of a + channel (Lloyd Williams). + - Various code cleanups, including a rewrite of the IPv6 code. + Removed /6server and 'Use IPv6' check-box in the serverlist. It + automatically handles IPv6/IPv4 addresses now. + - Added a check-box in the serverlist edit window for "Use Proxy". + + +---------------------------------------------------------------------- + 1.7.3 +---------------------------------------------------------------------- + + - Added server hostname as $3 for quit print event (Bjorn Olievier). + - Some fixes to the gnomepanel code. Panel no longer asks to restart + applet on quit, removing the applet doesn't exit xchat (George). + - Fixed fd leaks in /exec and python (Richard Fuchs). + - user@host gets logged in query windows (Richard Fuchs). + - Fixed the 'Marked Away' & 'Save Settings on exit' check menu items + (when using --disable-gnome). + - Workaround for ipv6 build failing on some glibcs (Tobias von Koch). + - DCC won't try to resume if local file is bigger than remote offer. + - Fixed xtext drawing/wordwrap and textmarking bugs. + - Horizontal scrollbar appears in channellist window when needed. + - Fixed color paste. Does this affect multibyte pasting? Please + report (Darell Tan). + - Fixed titlebar text for notices/snotices tabs. + - The topic box gets a tooltip of the current topic. + + +---------------------------------------------------------------------- + 1.7.2 +---------------------------------------------------------------------- + + - Fixed some Python mem leaks and signal/event handlers can now + return non-null integer to tell xchat to stop processing the event + (like perl handling functions) (Richard Fuchs). + - Got rid of the Linger timeout. This was a lame solution to stop the + loss of QUIT messages when closing the socket too early. Now xchat + just delays closing sockets by 5 seconds (even on quiting the app). + No more 1 second delay when you close a tab or the whole app! + - Fixed some memory leaks in the banlist window. + - Added 'B' channel-mode button to access the banlist. + - Added Turkish translation (Ozgur Dogan GUNES). + - Updated Spanish translation (Antonio de la Torre). + - Fixed the throttle setting (which was reversed! who did that?). + - Added IRC::notify_list. (Matthew Gabeler-Lee). + - Don't crash when bind fails for dcc send. + - Don't send garbage to server when ban_type is invalid. + - Rewrote a whole heap of bad code in maingui.c. When opening a new + tab/window it always uses the same functions instead of having the + code repeated a few times. This is pretty big so expect some things + to break. This also means dcc/chanlist etc tabs get the < > buttons + too. + - /KICKBAN now deops users first (Tobias von Koch). + + +---------------------------------------------------------------------- + 1.7.1 +---------------------------------------------------------------------- + + - Turning off server tabs should work again (1.7.0 bug). + - Some ipv6 fixes. + - Added a few TextEvents that used to be hardcoded. + - Updated jcode (Takuo Kitame). + - Fixed possible crash in palette window (1.7.0 bug). + - Rewrote the EscapeCode->mIRC color conversion for /exec. + - Added option to explicitly set your dcc IP (Jim Seymour). + - Added Opera and w3m to default URL Handlers. + - New serverlist/window icon - just for a change. + - Updated Korean translation (Kim SeungBaeck). + - Added hook_timeout to the XChat.XChat() python class so you can + XChat.XChat().hook_timeout(delay, handler). It is a one time + function like the perl version (Donald Kjer). + - /RECONNECT can now takes args like /SERVER, the difference + being that it'll rejoin all your channels (Angel). + + +---------------------------------------------------------------------- + 1.7.0 +---------------------------------------------------------------------- + + - Updated German translation (Benedikt Roth). + - Updated Spanish translation (Antonio de la Torre). + - Updated Japanese translation (Takuo Kitame). + - Added Norwegian translation (Kjartan Maraas). + - Fix for bug in 1.4.x serverlist.conf loading. + - Away status and reason is re-send to the server if you get + disconnected (Daniel Rall). + - Added option to have one tab for notices, configurable under + Inferface/Window layout (Alex Badea). + - Added another meter component that measures the server send queue + from the throttle system (pref: throttlemeter), added UI support + for showing the lag and throttle as either progress bars, info + boxes, both, or none (Alex Badea). + - Added a command to flush the send queue (/FLUSHQ) and one for + forcing a new lag check (/LAGCHECK) (Alex Badea). + - Added option 'persist_chans', when ON once a session is created + for a channel, no other channel will be assigned to that session, + regardless of any parts or kicks (Alex Badea). + - Compile errors while loading a perl script are printed on the main + window. Warnings issued by perl scripts are also printed on the + main window. This allows script writers to use the perl command + 'warn' to point out strange things. Perl errors no longer make + xchat crash. The error message is written on the main window and + the command execution is stopped (Frodo Baggins). + - Added IPv6 support for making server connections. See + ./configure --enable-ipv6 and /6SERVER command (\\bonxo\\@IRCnet). + - Added Banlist window (Salvatore Insalaco). + - You can now specify which dir ssl is in, e.g.: ./configure + --enable-openssl=/usr/local/ssl (Richard Fuchs). + - Added InterScan proxy traversal support (is this the correct name + for this proxy? Looks like a httpd proxy to me) (Alex Riesen). + - Added Japanese code conversion support, see ./configure + --enable-japanese-conv (Takuo Kitame). + - xtext: smooth (pixel-based) scrolling. + + +---------------------------------------------------------------------- + 1.6.4 +---------------------------------------------------------------------- + + - Fix for using a DCC port range (Lawrence Gold). + - Fix for building on UnixWare 7 (Ronald Joe Record). + - Added Chinese translations - zh_TW.Big5 and zh_CN (Kevin Peng and + Anthony Fok Tung-Ling). + - Added Finnish translation (Jarkko Ranta). + - Revamped the default URLHandlers to add Galeon and Mozilla. + - Clicking Accept on a DCC chat that you offered would loop - fixed. + - Fixed percentage display for DCC receive (Matthew Gabeler-Lee). + - Fixed bug in indent and timestamps (Dmitriy Zavin). + - Fixed crash bug in xchat-text and DCC send being aborted remotely. + - Made /lastlog more efficient for very large scrollback buffers. + - Beep on private actions too (Richard Fuchs). + - /MSG'ing a channel or nick will show up in the destination tab + instead (Richard Fuchs). + + +---------------------------------------------------------------------- + 1.6.3 +---------------------------------------------------------------------- + + - Updated Swedish translation (Christian Rose). + - Updated Spanish translation (Antonio de la Torre). + - Right-click toggle menu items used to crash under gnome (bug in + gnome-libs?) - work around. + - xtext: Efficiency improvements: text mark, word and line select. + - xtext: fixes for multibyte characters (UNO Takeshi). + - Fixed bug in resizing a tinted-transparent window (deb bug #79674). + - Some OS2 compilation fixes (pla). + - Fixed PONG parsing (Stefano Barbato). + - Fixed a leak of file descriptors. + - Fixed /ALLSERV. + - Fixed /BAN to replace ~ with * in username (Stefan Scholl). + - Fixed /ME through DCC CHAT while not connected to server (#81031). + - Work-around for UnrealIRCd's duplicate /NAMES bug. + - Fixed DCC receiving filenames with spaces. + + +---------------------------------------------------------------------- + 1.6.2 +---------------------------------------------------------------------- + + - xtext: Fixed the mark-clear bug (gnome bug #34584). + - Updated German translation (Tamer Fahmy). + - Commas are replaced with %2c in URLs, as to not confuse poor old + Netscape (deb bug #70905). + - Bluestring to 300 chars (deb bug #79138). + - Added option /SET percascii, which can disable/enable translation + of %XXX into an ascii value while typing (deb bug #76122). + - New hotkey hook: key_action_put_history. Only inserts line into + history, but doesn't send it to the server (DaP). + - Lots of SSL updates: + * Make accept_invalid_cert optional on /sslserver (DaP). + * Print verbose information of SSL session on connect (DaP). + * Clean up code at X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT checking + (DaP). + + +---------------------------------------------------------------------- + 1.6.1 +---------------------------------------------------------------------- + + - xtext: Fixed lockup with certain sized fonts. + - xtext: Made some changes to improve efficiency when using really + large scrollback buffers (only noticable when doublebuffer off). + - Fixed a bug in /help crashing on longer than 10 char UserCommands. + - Fixed autoreconnect while using a proxy server. + - Never-give-up ReConnect does just that (even more so than before :) + - Fixed the channelmode buttons mouse-over problem. + - Fixed percentage display for large files in dcc recv/send gui. + - StartTime in dcc chat gui no longer Jan 1 1970. + - Fixed DCC send behind IP-Nat (Bernhard Valenti) + . + - Added Lithuanian translation (Gediminas Paulauskas). + - The < > buttons arn't shown for non-tab windows (Aaron Lehmann). + - Fixed the (-1,-1) transparency problem for non-tab windows. + + +---------------------------------------------------------------------- + 1.6.0 +---------------------------------------------------------------------- + + - xtext: More efficient handling of expose events, text marking and + url highlighting when double buffer is OFF. + - xtext: Fixed a very rare bug that could cause BadGC errors or the + separator bar not to be drawn. + - Fixed crash in right-clicking URLs in the URL Grabber window. + - If Check-For-Replace is in the keybindings for Return, it'll + actually work again. + - USER login command now sends your nodename instead of 'localhost' + to please some IRCNet servers. + - Updated Swedish translation (Christian Rose). + + +---------------------------------------------------------------------- + 1.5.11 +---------------------------------------------------------------------- + + - Updated Slovak translation (Stano Visnovsky). + - Updated Swedish translation (Christian Rose). + - Updated Greek translation (Fanis Dokianakis). + - Updated Spanish translation (Antonio de la Torre). + - If Never-Give-Up Reconnect is ON, it won't give up on DNS failer. + - '/me is back' is sent again when Announce Away Messages is ON. + - If channelmode buttons were OFF and you joined a channel with a + userlimit xchat would crash - fixed. + - /sslserver's password arg. is now optional (Daniel Richards). + - SSL accepts self signed certs (Daniel Richards). + - Fixed the unnecessary window resizes when opening a new tab. + - Changed the tinting code a bit (thanks gnapster :). + - Transparent shell tabs update too when they are moved. + + +---------------------------------------------------------------------- + 1.5.10 +---------------------------------------------------------------------- + + - Added "Enable double buffer" toggle in Setup->Channel windows. + - Double buffer is now OFF by default (seems to use less CPU). + - Timestamps didn't turn ON while indent was OFF - fixed. + - Updated Swedish translation (Christian Rose). + - Added some extra text events: Channel Msg hilight, Channel + Action hilight (near top of the list). No more cardcoded color + codes! Also hilighting in actions works, and you can make the whole + message hilighted if you change the event text. + - Initial window size is actually set to your settings (this will + never be perfect I guess, sometimes to the window still resizes + itself without warning). + - Hidemenubar setting didn't work properly for non-tabs and when + delinking windows - fixed. + - Notices appear in front tab even when server tabs are enabled. + - Changed Away behaviour again. No more /back, /away with no args + brings you back. The menu-item's state is what the server tells + it, it even changes when you switch tabs to another server. Xchat + assumes you are not away when you first connect. irc::get_info(5) + returns the away state. One day the other UserModes menu items will + show correct states. Is everyone happy now? + - Translation tables didn't work for outgoing text - fixed. + - Cleaned up a few xchat.conf names, a few settings may not load up + from 1.5.9 - just set them again. + + +---------------------------------------------------------------------- + 1.5.9 +---------------------------------------------------------------------- + + - Updated Spanish translation (Antonio de la Torre). + - Added Hebrew translation (Dan Fruehauf). + - Fixed crash bug when partreason was not set. + - Dialog tabs obay the hidetopicbar setting now too (the one in the + right-click menu). + - Cleaned up the settings gui: the whole window is more compact now, + some toggles in two columns, numbers use a spin-button, entry boxes + are larger and option-menus are more consistant. + - The "o=xx v=xx t=xx" display is finally changed. + - Changed most of xtext.c to use gdk instead of Xlib. + - Added configure option: + --disable-xlib disable use of xlib (for non X11 systems) + This might help compile xchat on other GTK supported systems like + BeOS and Win32 (havn't tried it though). + - Neater /set list. + - You can now set a nickname per server (see serverlist edit window). + - Changed the behaviour of /away and added /back (James Crawford). + - Away reason can now be a text file of random reasons too. + + +---------------------------------------------------------------------- + 1.5.7 -> 1.5.8 +---------------------------------------------------------------------- + + - Updated Spanish translation (Antonio de la Torre). + - Updated Swedish translation (Christian Rose). + - Updated Greek translation (Dokianakis Fanis). + - Updated German translation (Tamer Fahmy). + - Added Catalan translation (Pablo Saratxaga). + - Added option "Always timestamp logs" which timestamps log files + even if on-screen timestamps are off (Mike Guidero). + - Added entry "Part Reason: ". Also part and quit reasons can be + a filename of random reasons (filename relative to ~/.xchat/). + - Took out /unban as a internal command, add it as a usercommand + /quote MODE %c -b &2 instead. + - Added a text event for banlist. Try /banlist and it'll be a bit + more readable now. + - Changed output throttle system (undernet style) (Alex Badea). + - Added 1 second linger socket option to stop QUIT msgs from being + lost (they still get lost sometimes, why?). + + +---------------------------------------------------------------------- + 1.5.6 -> 1.5.7 +---------------------------------------------------------------------- + + - Fixed transparency-leak problems in 1.5.6 + - New code to create shaded transparency, taken from latest zvt. + (is it better?) + - URL handlers are now executed without a shell. + (http://www.securityfocus.com/vdb/bottom.html?vid=1601) + - Fixed a bug in xchat.conf and serverlist.conf loading. + - When spliting msgs (longer than the IRC 512 limit), it used to + loose some chars - fixed. + - Added feature to choose DCC port range (Lars Sundqvist). + - Fixed perl-stack overflow probs in irc::userlist() and others. + Added perl functions user_list_short() and perl_script_list() + (Mike Guidero). + - MHz is now detected on FreeBSD 4.x/5.x (Jonathan Perkin). + - It's now possible to "/dcc close chat nick" within a DCC perl + input handler without crashing xchat. (Geoffrey Higginson). + - Fixed a problem with the usermenu not updating sometimes. + + +---------------------------------------------------------------------- + 1.5.5 -> 1.5.6 +---------------------------------------------------------------------- + + - Added option pingtimeout, which pings the server instead. + /set pingtimeout 90 is default (small values will malfunction). + You also need the lagometer enabled for this to work. + - No longer using fnmatch() for ignore etc (because the way it + handles [ and ]). Using function from ircu2.10.08. + - Some fixes to code & configure.in to make it compile using + Solaris C (Albert Chin). + - New Spanish translation (Antonio de la Torre). + - New Russian translation (Alex Samorukov). + - New Hungarian translation (Horvath Szabolcs). + - Added Portuguese translation (Vitor Antunes). + - Added Slovak translation (Martin Pekar). + - Added /allserv and /allchan . They send a command to + all currently connected servers and joined channels. Also added + usercommands /ame and /amsg which make use of this. + - Added sock5 traversal, see Setup->Proxy Server (Alex Badea). + (The numbers for proxy_type are now 0=disabled, 1=wingate, + 2=socks4, 3=socks5). + - A few more buffer overflow checks (nick & channel length). + - Mapped mIRC color 99 to "no background" (mIRC lame!). + - Some efficiency tweaks to xtext. + - Added SSL support (see --enable-openssl and /help server) (DaP). + This seems to be highly experimental, as I don't know of any IRC + servers that can do SSL yet. + - Changed history behaviour, more like GNU (DaP). + i.e. Doesn't wrap and the bottom line is blank. + - Added option "InputBox Always In Focus" (DaP). + - Added option "Show Nickgad" (DaP). + - Added option "Show invites in the active Window" (DaP). + - Added option "Send /Whois" in notifies section, which sends a + /whois when someone comes online (DaP). + - Added an event for numeric 341, you inivited someone (DaP). + - Title bar text changed/improved a bit (DaP). + - Added actions for EditKeyBindings: MoveFrontTabLeft and + MoveFrontTabRight, like the <> buttons, but for keyboard (DaP). + - Implemented timeout events in the text frontend (Alex Badea and + fixed by me :). + - Dcc Recv/Send tabs won't resize the window when open. + - Added configure option --disable-glib. + - Transparent windows update when background changes (Aaron Lehmann). + - serverlist.conf is slightly changed! You WILL be able to load your + old 1.5.5 or 1.4.x server list, but older versions WON'T load lists + from 1.5.6, so backup your serverlist.conf if you need to. + + +---------------------------------------------------------------------- + 1.5.4 -> 1.5.5 +---------------------------------------------------------------------- + + - Fix for show/hide menu under gnome. + - Added -a and --noauto arg (don't auto connect to any servers). + - Added internal /list command, which sends the correct args according + to ircd type (it detects undernet and dalnet to send >0,<10000). + Remove any old /list usercommands you might have. + - /op /deop ... etc send up to six modes per line if using undernet. + - As discussed in the mailinglist, changed DCC resume to send and + expect to receive ACKs as an absolute, rather than an offset from + the resume point. It *should* work with mIRC now, but break with + old versions of xchat and probably BitchX. + - Added option "Limited Tab Highlighting" (Francis Litterio). + + +---------------------------------------------------------------------- + 1.5.3 -> 1.5.4 +---------------------------------------------------------------------- + + - Lack of gdk_pixbuf is detected correctly now (configure script). + - textmarking is no longer a timeout event, is this better or worse? + - Added Turkish translation (Fatih Demir). + - Added Russian translation (Valek Filippov). + - Added Ukrainian translation (Yuri Syrota). + - Added configure option --disable-zvt. Also, zvt shell tab can be + compiled in even without gnome (and is by default, if gnome-config + can be found to provide the LDFLAGS). + - Added "Delete Word Forward" function in Edit Key Bindings. Bind + this to Alt-d for that emacs feel (Francis Litterio). + - Ping times show one extra decimal place. + - You can now hide the menubar too, click left mouse in the text area + to get a popup version of the menu (middle mouse in dialogs). + - Added the proxy settings to the GUI, Setup->IRC->Proxy Server. + - Added a keyword TOGGLE for usermenu. Delete your old usermenu.conf + to see the new default one. + - Configure script now cleans up the CFLAGS & LDFLAGS (removes + duplicate words), let's hope this doesn't break on some boxses. + + +---------------------------------------------------------------------- + 1.5.2 -> 1.5.3 +---------------------------------------------------------------------- + + - Fixed a rare overflow bug in auto_insert(). + - Pressing OK in the settings window on slow machines (p233?) was + pretty slow, maybe it's faster now. + - Corrected some inputgad behaviour (Aaron Lehmann). + - Fix for 64bit machines (alpha) in xtext (word clicks). + - Updated German translation (Benedikt Roth). + - Updated Danish translation (Birger Langkjer). + - If you disconnect (/discon, /quit...) a server during the reconnect + delay, it is actually removed now. + - Added option "Give the userlist style" (DaP). + - Translation tables support can be turned off (--disable-trans), for + you minimalist freaks. + - Added Hebrew support, compile time: --enable-hebrew, run time: + /set hebrew 0/1 (Dan Aloni). + - Added new setting, "nick completion character" (Francis Litterio). + - Added new setting, "Old-style Nickname Completion", which makes it + act much like 1.4.x (Francis Litterio). + - Added "Delete Word" function to EditKeyBindings (Francis Litterio). + - Now using gdk-pixbuf for decoding pictures and tinted transparency. + (Tints don't seem to work 100% yet). (Andreas Persenius). + - Added halfop support (mode +h). This includes support in the + userlist, /hop, /dehop, /mdehop and new textevents (Elizandro G. Roos). + + +---------------------------------------------------------------------- + 1.5.1 -> 1.5.2 +---------------------------------------------------------------------- + + - --disable-gnome should work again. + - Fixed a bug in right-click nick menu. + - Should compile with glibc 2.1.3 (no more 'struct user' errors). + - Added Romanian translation (Dan Damian). + - CTCP flood protection won't kick in for ACTIONs. + - Removed the theme code. + - Made pixmaps.c, all code to decode/free/etc pixmaps is in here. + - WM_HINTS icon is set for the app. + - Removed the "-c" flag (it's automatic now). + + +---------------------------------------------------------------------- + 1.5.0 -> 1.5.1 +---------------------------------------------------------------------- + + - Shell tabs are now delinkable. + - Added a "show/hide topic bar" button (bottom right), I didn't know + where else to put this. + - Hidding the userlist is saved and any new tabs/windows open will + have the userlist hidden. + - You can now turn off/on perl warnings with /set perlwarnings 0/1. + - Tab-key nick completion even more like GNU readline (Gerard Daubar). + - Rewrote the function that handles %variables in userlist buttons, + user commands and ctcp replies (all use the same function now), + please report any bugs (especially if someone can overflow you from + remote ;) - as a consequence, you can use % and & (word/word_eol) + for ctcp replies now. Also added %m for machine info. + - Nickname-popup-menu, URLmenu and Usermenu all use the same code now + (it means you can make submenus in all 3). + - Double eval back in perl.c + - Dialogs/querys also have a toolbox button (just for consistancy). + - Added lagometer (/set lagometer 0 to turn it off), this isn't quiet + finished yet (and doesn't work on IRCNet because it refuses to + reply to pings correctly). + + +---------------------------------------------------------------------- + 1.4.2 -> 1.5.0 +---------------------------------------------------------------------- + + - Some changes & cleanups to the parser code (inbound/outbound). + - Ran all source through indent, using: + indent -bli0 -bls -ce -ts3 -i3 + (please use this in your patches, I used GNU indent 2.2.4). + - If you send a message (channel or query window) longer than 512 + bytes (maximum allowed by the ircd) it will be split into two + smaller messages instead of being truncated. + - Some gui touchups and changes. + - You can now enable/disable the output throttle with /set throttle. + - Added /timer. + - Overhauled the ChannelList window (Joshua Gough). + - Added proxy traversal support for socks and wingate, no gui yet so + use /set proxy_host, proxy_port, proxy_type (1=socks, 2=wingate). + - Added /userlist. + - Opaque-window-move used to be slow on some windowmanagers even + with transparency turned off - fixed. + - Tab-key completion is more like GNU readline (Wes Peters). + - Now possible to use modules in perl scripts (Andreas Scherbaum). + - irc::get_info(4) returns the current xchat dir (Mike Guidero). + - Added irc::get_prefs() (returns a /set variable) (Leo Cacciari). + - /set is now possible. + - Added Show-Userhost-in-Userlist option (Nicolas Dimitrijevic). + - Build tree cleaned up so 'make dist' can work. + - Added flood protection from CTCP and mass-dialogs-opening (Bruj0) + rdiazleven@ubp.edu.ar. (see variables *_limit). + + +---------------------------------------------------------------------- + 1.4.1 -> 1.4.2 +---------------------------------------------------------------------- + + - Compilation fixes for IRIX (David Kaelbling). + - Compilation fixes for AIX (Rodrigo Barbosa). + - Compilation fixes for OpenBSD. + - Should now compile with certain beta/alpha versions of Perl. + - "Scrollbar snapping to top" bug fixed. + - Corrected some text marking behaviour. + - Made use of fnmatch(), if available (for chanlist, ignore etc). + - Configure script is now generated with a sane version of autoconf. + - Alt-minus and Alt-plus now wrap around (AGL). + + +---------------------------------------------------------------------- + 1.4.0 -> 1.4.1 +---------------------------------------------------------------------- + + - Fixed a bug that could make new text not appear while marking text. + - xtext: Further improved performance when double buffering is turned + off (marking text & URL hilights are almost flicker free). + - xtext: Double buffer is now freed at each render operation, this + should reduce memory usage if you have many tabs open. + - If you closed a server while it was in the reconnect-delay, xchat + would crash - fixed. + - No more zombies when doing /discon while connection in progress. + - Added "/clear all" command (Paul de Regt). + - Hilights only work on full word matches now (Brendan O'Dea). + - Some Solaris compilation fixes (David Morgan). + - Danish translation updated (Birger Langkjer). + - Italian translation updated (Stefano Fava). + - Greek translation added (Fanis Dokianakis). + - Dutch translation upated (Arjan Scherpenisse). + - Removed some very old translations: fr_CA, no, pl, ru and sv. + (If someone wants to update these, you're welcome to). + - Channel mode "+h nick" (half Op) is now reported correctly (still + not supported in the userlist though). + - Having indent nicks OFF in channel windows and ON in dialog windows + didn't work - fixed. + - Sometimes ignores wouldn't save - fixed. + + +http://www.xchat.org diff --git a/etc/wyatt8740/HACKING b/etc/wyatt8740/HACKING new file mode 100644 index 0000000..8f45aff --- /dev/null +++ b/etc/wyatt8740/HACKING @@ -0,0 +1,51 @@ +Just some tips if you're going to help with xchat code (patches etc): + +* Use tabs, not spaces, to indent code. + +* Use a tab size of 3 (most editors will let you choose this). + Type :set ts=3 in vim/gvim. + +* Try to stick to the same consistant coding style: + +void +routine (void) +{ + if (function (a, b, c)) + { + x = a + 1; + } +} + + (vertically aligned braces, a space after if, while, functions etc). + +* Don't use "//" C++ style comments, some compilers don't like them. + +* When opening a file with unix level functions (open, read/write, close) + as opposed to the C-level functions (fopen, fwrite/fread, fclose), use + the OFLAGS macro. This makes sure it'll work on Win32 aswell as unix e.g: + + fh = open ("file", OFLAGS | O_RDONLY); + +* Use closesocket() for sockets, and close() for normal files. + +* Don't read() from sockets, instead use recv(). + +* Please provide unified format diffs (run diff -u). + +* Call your patch something more meaningfull than xchat.diff (I get a + million of these files!). + +* To make a really nice and clean patch, do something like this: + +Have two directories, unpacked from the original archive: +xchat-2.0.0/ +xchat-2.0.0p1/ +Then edit/compile the xchat-2.0.0p1 directory. When you're done, make +a patch with: + +cd xchat-2.0.0p1 +make distclean +cd .. +diff -urN xchat-2.0.0 xchat-2.0.0p1 > xchat-something.diff + +If using nmake (Windows) replace "make distclean" with "nmake -f makefile.msc clean" \ No newline at end of file diff --git a/etc/wyatt8740/INSTALL b/etc/wyatt8740/INSTALL new file mode 100644 index 0000000..2773a1c --- /dev/null +++ b/etc/wyatt8740/INSTALL @@ -0,0 +1,49 @@ +X-Chat Requirements: +~~~~~~~~~~~~~~~~~~~~ + + - GTK 2.6+ (it comes with your Linux) + + Optional: + + - Perl (http://www.perl.org) + - Python (http://www.python.org) + - TCL (http://tcl.activestate.com) + - OpenSSL (http://www.openssl.org) + + + +X-Chat Compiling and Installation: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Type this: + + ./configure + make + +Become root and type: + + make install + + +Other Options +~~~~~~~~~~~~~ + +To get a full list of compile options, type: + + ./configure --help + + +If you do not have GNU Gettext installed, instead use: + + ./configure --disable-nls + + +If you want to disable Perl you can do: + + ./configure --disable-perl + + +If you want to install a smaller stripped binary (without debug) do: + + make install-strip + diff --git a/etc/wyatt8740/INSTALL.w32 b/etc/wyatt8740/INSTALL.w32 new file mode 100644 index 0000000..846741a --- /dev/null +++ b/etc/wyatt8740/INSTALL.w32 @@ -0,0 +1,117 @@ +COMPILING ON WIN32 +~~~~~~~~~~~~~~~~~~ +It is not easy! Be warned! You need either one of these compilers: + + * Mingw (http://www.mingw.org) + * MS Visual C + +Note: This source code is meant for Linux/Unix like systems. Compiling this for +Windows will produce a below-par quality product. The official XChat for Windows +is not built with this unix source code. + + +Getting GTK +~~~~~~~~~~~ + +You also need GTK+ 2.10 for win32. Altough the GTK packages from the GIMP +website are larger and harder to install they work very well. + + 1) Get the following packages from: + http://www.gimp.org/~tml/gimp/win32/downloads.html + + - gtk+-2.4.3.tar.gz + - gtk+-dev-2.4.3.tar.gz + - dirent.zip + - gettext-runtime-0.13.1.zip + - gettext-tools-0.13.1.zip + - atk-1.6.0.zip + - atk-dev-1.6.0.zip + - pango-1.4.0.zip + - pango-dev-1.4.0.zip + - libpng (http://gnuwin32.sourceforge.net/packages/libpng.htm) Binaries & Developer files. + - GNU libiconv (Not source files) + - glib-2.4.2.zip + - glib-dev-2.4.2.zip + - pkgconfig-0.15.zip + - Zlib121-dll.zip + + 2) Extract all files to a suitable place such as c:\devtools + + 3) Windows 2000, XP & 2003 users: + - Start->(Settings->)Control Panel->System Applet + - Advanced Tab->Environment Variables + - Under "User variables for " append ";C:\devtools" to the end of the PATH Variable + - Click Ok twice and close the Control Panel + + For Windows 9x users your basicly on your own for now. + + +Mingw +~~~~~ + + I havn't tried this yet, but ./configure --disable-xlib would be a start. + + +MS Visual C +~~~~~~~~~~~ + + + 1) Edit src\makeinc.msc + + You need to change the variables GLIB, GTK and LIBS to point + the correct paths for your harddrive. Use the program pkg-config + to find this information. + + a) paste the output of `pkg-config glib-2.0 --msvc-syntax --cflags` + to the GLIB = ... line. + + b) paste the output of `pkg-config gtk+-2.0 --msvc-syntax --cflags` + to the GTK = ... line. + + c) paste the output of `pkg-config gtk+-2.0 --msvc-syntax --libs` + to the LIBS = ... line. + + 2) In MSVC's includes directory, copy io.h to unistd.h. + + MS VC++ 6 + ~~~~~~~~~ + + 3) Download Platform SDK from http://www.microsoft.com/msdownload/platformsdk/sdkupdate/ + (you only need Core SDK) - ~200 MB Download (Be warned). + 4) Open the build enviroment. + + a) If your planning on developing modifications to the xchat code go: + Start->Programs->Microsoft Platform SDK...->Open Build Enviroment...->(Choose OS)->... (Debug) + + b) If your compiling just to use xchat and wish to no recieve debug messages: + Start->Programs->Microsoft Platform SDK...->Open Build Enviroment...->(Choose OS)->... (Retail) + 5) Change directory into where you have download the xchat source to and type this: + cd src + nmake -f makefile.msc clean + nmake -f makefile.msc + 6) Copy fe-gtk\xchat.exe to another place. + MS VC++ 7 (.NET) + ~~~~~~~~~~~~~~~~ + + 3) Open the Visual Studio .NET Command Prompt + + 4) Change directory into where you have download the xchat source to and type this: + cd src + nmake -f makefile.msc clean + nmake -f makefile.msc + 5) Copy fe-gtk\xchat.exe to another place. + + +Common problems: +~~~~~~~~~~~~~~~~ + + * gdk-pixbuf-csource must be in PATH. + FIX: See step 3 for setting up GTK + + * You might need to install dirent.zip manually. + FIX: Copy C:\devtools\include\dirent.h to C:\devtools\include\glib-2.0\dirent.h + + * Include path to libintl.h should be in GLIB= (makeinc.msc). + FIX: Copy C:\devtools\include\libintl.h to C:\devtools\include\glib-2.0\libintl.h + + diff --git a/etc/wyatt8740/Makefile.am b/etc/wyatt8740/Makefile.am new file mode 100644 index 0000000..4b3c7ed --- /dev/null +++ b/etc/wyatt8740/Makefile.am @@ -0,0 +1,15 @@ +## Process this file with automake to produce Makefile.in + +#SUBDIRS = po po intl src plugins +SUBDIRS = po po src plugins + +EXTRA_DIST = m4/ChangeLog autogen.sh HACKING INSTALL.w32 faq.html xchat.png \ + xchat.desktop xchat.spec config.h.w32 xchat.ico + +icon_DATA = xchat.png +icondir = $(datadir)/pixmaps + +util_DATA = xchat.desktop +utildir = $(datadir)/applications + +ACLOCAL_AMFLAGS = -I m4 diff --git a/etc/wyatt8740/Makefile.in b/etc/wyatt8740/Makefile.in new file mode 100644 index 0000000..2129bb4 --- /dev/null +++ b/etc/wyatt8740/Makefile.in @@ -0,0 +1,966 @@ +# Makefile.in generated by automake 1.16.5 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2021 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ + $(am__configure_deps) $(am__DIST_COMMON) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(icondir)" "$(DESTDIR)$(utildir)" +DATA = $(icon_DATA) $(util_DATA) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + cscope distdir distdir-am dist dist-all distcheck +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) \ + config.h.in +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ + ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL NEWS README \ + compile config.guess config.rpath config.sub install-sh \ + ltmain.sh missing +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__post_remove_distdir = $(am__remove_distdir) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 +GZIP_ENV = --best +DIST_TARGETS = dist-bzip2 dist-gzip +# Exists only to be overridden by the user if desired. +AM_DISTCHECK_DVI_TARGET = dvi +distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COMMON_CFLAGS = @COMMON_CFLAGS@ +COMMON_LIBS = @COMMON_LIBS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DBUS_BINDING_TOOL = @DBUS_BINDING_TOOL@ +DBUS_CFLAGS = @DBUS_CFLAGS@ +DBUS_LIBS = @DBUS_LIBS@ +DBUS_SERVICES_DIR = @DBUS_SERVICES_DIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ETAGS = @ETAGS@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FILECMD = @FILECMD@ +GCONFTOOL = @GCONFTOOL@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLIB_CFLAGS = @GLIB_CFLAGS@ +GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GLIB_LIBS = @GLIB_LIBS@ +GLIB_MKENUMS = @GLIB_MKENUMS@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GOBJECT_QUERY = @GOBJECT_QUERY@ +GREP = @GREP@ +GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ +GTKSPELL_LIBS = @GTKSPELL_LIBS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_LIBS = @GTK_LIBS@ +GUI_CFLAGS = @GUI_CFLAGS@ +GUI_LIBS = @GUI_LIBS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSEXY_CFLAGS = @LIBSEXY_CFLAGS@ +LIBSEXY_LIBS = @LIBSEXY_LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL_CFLAGS = @PERL_CFLAGS@ +PERL_LDFLAGS = @PERL_LDFLAGS@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLUGIN_INCLUDES = @PLUGIN_INCLUDES@ +POSUB = @POSUB@ +PY_CFLAGS = @PY_CFLAGS@ +PY_LIBS = @PY_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TCL_CFLAGS = @TCL_CFLAGS@ +TCL_LIBS = @TCL_LIBS@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gdkpixbufcsourcepath = @gdkpixbufcsourcepath@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +perlpath = @perlpath@ +pkgconfigpath = @pkgconfigpath@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pythonpath = @pythonpath@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sedpath = @sedpath@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +unamepath = @unamepath@ +xchatlibdir = @xchatlibdir@ + +#SUBDIRS = po po intl src plugins +SUBDIRS = po po src plugins +EXTRA_DIST = m4/ChangeLog autogen.sh HACKING INSTALL.w32 faq.html xchat.png \ + xchat.desktop xchat.spec config.h.w32 xchat.ico + +icon_DATA = xchat.png +icondir = $(datadir)/pixmaps +util_DATA = xchat.desktop +utildir = $(datadir)/applications +ACLOCAL_AMFLAGS = -I m4 +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +am--refresh: Makefile + @: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): + +config.h: stamp-h1 + @test -f $@ || rm -f stamp-h1 + @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h +$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool config.lt +install-iconDATA: $(icon_DATA) + @$(NORMAL_INSTALL) + @list='$(icon_DATA)'; test -n "$(icondir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(icondir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(icondir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(icondir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(icondir)" || exit $$?; \ + done + +uninstall-iconDATA: + @$(NORMAL_UNINSTALL) + @list='$(icon_DATA)'; test -n "$(icondir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(icondir)'; $(am__uninstall_files_from_dir) +install-utilDATA: $(util_DATA) + @$(NORMAL_INSTALL) + @list='$(util_DATA)'; test -n "$(utildir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(utildir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(utildir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(utildir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(utildir)" || exit $$?; \ + done + +uninstall-utilDATA: + @$(NORMAL_UNINSTALL) + @list='$(util_DATA)'; test -n "$(utildir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(utildir)'; $(am__uninstall_files_from_dir) + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + $(am__remove_distdir) + test -d "$(distdir)" || mkdir "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz + $(am__post_remove_distdir) +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__post_remove_distdir) + +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__post_remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__post_remove_distdir) + +dist-zstd: distdir + tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst + $(am__post_remove_distdir) + +dist-tarZ: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__post_remove_distdir) + +dist-shar: distdir + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz + $(am__post_remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__post_remove_distdir) + +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + *.tar.zst*) \ + zstd -dc $(distdir).tar.zst | $(am__untar) ;;\ + esac + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build/sub \ + && ../../configure \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + --srcdir=../.. --prefix="$$dc_install_base" \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__post_remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile $(DATA) config.h +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(icondir)" "$(DESTDIR)$(utildir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr \ + distclean-libtool distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-iconDATA install-utilDATA + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-iconDATA uninstall-utilDATA + +.MAKE: $(am__recursive_targets) all install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ + am--refresh check check-am clean clean-cscope clean-generic \ + clean-libtool cscope cscopelist-am ctags ctags-am dist \ + dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \ + dist-xz dist-zip dist-zstd distcheck distclean \ + distclean-generic distclean-hdr distclean-libtool \ + distclean-tags distcleancheck distdir distuninstallcheck dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-iconDATA install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip install-utilDATA installcheck installcheck-am \ + installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am uninstall-iconDATA uninstall-utilDATA + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/etc/wyatt8740/NEWS b/etc/wyatt8740/NEWS new file mode 100644 index 0000000..e69de29 diff --git a/etc/wyatt8740/README b/etc/wyatt8740/README new file mode 100644 index 0000000..f47e4d4 --- /dev/null +++ b/etc/wyatt8740/README @@ -0,0 +1,133 @@ +What is this repo? +~~~~~~~~~~~~~~~~~~ +This is Xchat 2.8.8, with all the Debian Jessie patches applied, as well +as some fixes manually pulled from hexchat for building against OpenSSL +1.1.0. The goal of my version of XChat is to keep it buildable on newer +Linux/Unix/Cygwin systems than the last release of XChat is compatible +with. + +I do not just use Hexchat because I don't like some of the UI changes +that it introduced. + +As of the last update to this readme (21 January 2017), the final link +of the xchat binary fails due to it needing '-lgmodule-2.0' added to its +linking flags. Until this gets fixed in source (I'll need to learn about +autoconf for that to happen, I think), it can be done manually by adding +that flag to the Makefile or running the configure script with +`LDFLAGS=-lgmodule-2.0` set as an environment variable. + +With that caveat, it currently builds and runs in Debian Sid as of +21 January 2017. + +As of 26 May 2019, it still builds in FreeBSD stable with: + +MAKE="gmake" LDFLAGS='-L/usr/local/lib -lgmodule-2.0' ./configure \ + --prefix=/usr/local --disable-dbus + +...so we may still have some time ahead of us. + +Original README contents are below. + +X-Chat README +~~~~~~~~~~~~~ + X-Chat ("xchat") Copyright (c) 1998-2010 By Peter Zelezny. + + This program is released under the GPL v2 with the additional exemption + that compiling, linking, and/or using OpenSSL is allowed. You may + provide binary packages linked to the OpenSSL libraries, provided that + all other requirements of the GPL are met. + See file COPYING for details. + + +What is it? +~~~~~~~~~~~ + X-Chat is an IRC client for UNIX operating systems. I.R.C. is Internet + Relay Chat, see http://irchelp.org for more information about IRC in + general. Xchat runs on most BSD and POSIX compliant operating systems. + + +Requirements: +~~~~~~~~~~~~~ + * GTK+ 2.10 (this is available at http://www.gtk.org). + + X-Chat is known to work on, at least: + + * Linux + * FreeBSD + * OpenBSD + * NetBSD + * Solaris + * AIX + * IRIX + * DEC/Compaq Tru64 UNIX + * HP-UX 10.20 and 11 + * MacOS X + * Windows XP/2000/Vista/7 + + +Notes for packagers: +~~~~~~~~~~~~~~~~~~~~ + + If you need your packages to work on i386, you don't need to compile with + --disable-mmx, because it's also checked at run-time. + + +Python Scripts: +~~~~~~~~~~~~~~~ + Scripts for 1.8.x are not compatible, and a brand new interface has be + written. Documentation can be found here: http://xchat.org/docs/. + Consider using the Python interface for your scripts, it's a very nice + API, allows for loading/unloading individual scripts, and gives you + almost all the features of the C-Plugin API. + + +Perl Scripts: +~~~~~~~~~~~~~ + Scripts for 1.8.x are compatible with the following exceptions: + +* IRC::command will not interpret %C, %B, %U etc. + +* user_list and user_list_short: + If a user has both op and voice, only the op flag will be 1. + +* add_user_list/sub_user_list/clear_user_list + These functions do nothing. + +* notify_list + Not implemented. Always returns an empty list. + +* server_list + Lists servers that are not connected aswell. + +* Some print events may have new names and some were added. + +* Text printed by scripts must now be UTF8. + +* Text passed to scripts (via add_message_handler) will be encoded in UTF8. + + +Autoloading Perl Scripts and Plugins +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + * X-Chat automatically loads, at startup: + ~/.xchat2/*.pl Perl scripts + ~/.xchat2/*.py Python scripts + ~/.xchat2/*.so Plugins + $(libdir)/xchat/plugins/*.so plugins + (this usually translates to /usr/lib/xchat/plugins/*.so) + + +Control Codes: +~~~~~~~~~~~~~~ + %% - A single percentage sign + %C - Control-C (mIRC color code) + %B - Bold Text + %U - Underline Text + %R - Reverse Text + %O - Reset all Text attributes + %XXX - ASCII XXX (where XXX is a decimal 3 digit number) + (Eg: %007 sends a BEEP) + + %Cforeground,background will produce a color code, eg: %C03,10 + + These are now disabled by default (see Settings > Prefs > Input Box). + Instead you can insert the real codes via ctrl-k, ctrl-b and ctrl-o. diff --git a/etc/wyatt8740/acinclude.m4 b/etc/wyatt8740/acinclude.m4 new file mode 100644 index 0000000..0c71173 --- /dev/null +++ b/etc/wyatt8740/acinclude.m4 @@ -0,0 +1,40 @@ +dnl AS_AC_EXPAND(VAR, CONFIGURE_VAR) +dnl +dnl example +dnl AS_AC_EXPAND(SYSCONFDIR, $sysconfdir) +dnl will set SYSCONFDIR to /usr/local/etc if prefix=/usr/local + +AC_DEFUN([AS_AC_EXPAND], +[ + EXP_VAR=[$1] + FROM_VAR=[$2] + + dnl first expand prefix and exec_prefix if necessary + prefix_save=$prefix + exec_prefix_save=$exec_prefix + + dnl if no prefix given, then use /usr/local, the default prefix + if test "x$prefix" = "xNONE"; then + prefix=$ac_default_prefix + fi + dnl if no exec_prefix given, then use prefix + if test "x$exec_prefix" = "xNONE"; then + exec_prefix=$prefix + fi + + full_var="$FROM_VAR" + dnl loop until it doesn't change anymore + while true; do + new_full_var="`eval echo $full_var`" + if test "x$new_full_var"="x$full_var"; then break; fi + full_var=$new_full_var + done + + dnl clean up + full_var=$new_full_var + AC_SUBST([$1], "$full_var") + + dnl restore prefix and exec_prefix + prefix=$prefix_save + exec_prefix=$exec_prefix_save +]) diff --git a/etc/wyatt8740/aclocal.m4 b/etc/wyatt8740/aclocal.m4 new file mode 100644 index 0000000..8170872 --- /dev/null +++ b/etc/wyatt8740/aclocal.m4 @@ -0,0 +1,14330 @@ +# generated automatically by aclocal 1.16.5 -*- Autoconf -*- + +# Copyright (C) 1996-2021 Free Software Foundation, Inc. + +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.71],, +[m4_warning([this file was generated for autoconf 2.71. +You have another version of autoconf. It may work, but is not guaranteed to. +If you have problems, you may need to regenerate the build system entirely. +To do so, use the procedure documented by the package, typically 'autoreconf'.])]) + +# gettext.m4 serial 71 (gettext-0.20.2) +dnl Copyright (C) 1995-2014, 2016, 2018-2020 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can be used in projects which are not available under +dnl the GNU General Public License or the GNU Lesser General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Lesser General Public License, and the rest of the GNU +dnl gettext package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2006, 2008-2010. + +dnl Macro to add for using GNU gettext. + +dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). +dnl INTLSYMBOL must be one of 'external', 'use-libtool'. +dnl INTLSYMBOL should be 'external' for packages other than GNU gettext, and +dnl 'use-libtool' for the packages 'gettext-runtime' and 'gettext-tools'. +dnl If INTLSYMBOL is 'use-libtool', then a libtool library +dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, +dnl depending on --{enable,disable}-{shared,static} and on the presence of +dnl AM-DISABLE-SHARED). +dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext +dnl implementations (in libc or libintl) without the ngettext() function +dnl will be ignored. If NEEDSYMBOL is specified and is +dnl 'need-formatstring-macros', then GNU gettext implementations that don't +dnl support the ISO C 99 formatstring macros will be ignored. +dnl INTLDIR is used to find the intl libraries. If empty, +dnl the value '$(top_builddir)/intl/' is used. +dnl +dnl The result of the configuration is one of three cases: +dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled +dnl and used. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 2) GNU gettext has been found in the system's C library. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 3) No internationalization, always use English msgid. +dnl Catalog format: none +dnl Catalog extension: none +dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. +dnl The use of .gmo is historical (it was needed to avoid overwriting the +dnl GNU format catalogs when building on a platform with an X/Open gettext), +dnl but we keep it in order not to force irrelevant filename changes on the +dnl maintainers. +dnl +AC_DEFUN([AM_GNU_GETTEXT], +[ + dnl Argument checking. + ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [use-libtool], , + [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT +])])])]) + ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old], + [errprint([ERROR: Use of AM_GNU_GETTEXT without [external] argument is no longer supported. +])]) + ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , + [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT +])])])]) + define([gt_included_intl], + ifelse([$1], [external], [no], [yes])) + gt_NEEDS_INIT + AM_GNU_GETTEXT_NEED([$2]) + + AC_REQUIRE([AM_PO_SUBDIRS])dnl + ifelse(gt_included_intl, yes, [ + AC_REQUIRE([AM_INTL_SUBDIR])dnl + ]) + + dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + + dnl Sometimes libintl requires libiconv, so first search for libiconv. + dnl Ideally we would do this search only after the + dnl if test "$USE_NLS" = "yes"; then + dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT + dnl the configure script would need to contain the same shell code + dnl again, outside any 'if'. There are two solutions: + dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. + dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. + dnl Since AC_PROVIDE_IFELSE is not documented, we avoid it. + ifelse(gt_included_intl, yes, , [ + AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) + ]) + + dnl Sometimes, on Mac OS X, libintl requires linking with CoreFoundation. + gt_INTL_MACOSX + + dnl Set USE_NLS. + AC_REQUIRE([AM_NLS]) + + ifelse(gt_included_intl, yes, [ + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + ]) + LIBINTL= + LTLIBINTL= + POSUB= + + dnl Add a version number to the cache macros. + case " $gt_needs " in + *" need-formatstring-macros "*) gt_api_version=3 ;; + *" need-ngettext "*) gt_api_version=2 ;; + *) gt_api_version=1 ;; + esac + gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" + gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" + + dnl If we use NLS figure out what method + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + ifelse(gt_included_intl, yes, [ + AC_MSG_CHECKING([whether included gettext is requested]) + AC_ARG_WITH([included-gettext], + [ --with-included-gettext use the GNU gettext library included here], + nls_cv_force_use_gnu_gettext=$withval, + nls_cv_force_use_gnu_gettext=no) + AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext]) + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + ]) + dnl User does not insist on using GNU NLS library. Figure out what + dnl to use. If GNU gettext is available we use this. Else we have + dnl to fall back to GNU NLS library. + + if test $gt_api_version -ge 3; then + gt_revision_test_code=' +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +changequote(,)dnl +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +changequote([,])dnl +' + else + gt_revision_test_code= + fi + if test $gt_api_version -ge 2; then + gt_expression_test_code=' + * ngettext ("", "", 0)' + else + gt_expression_test_code= + fi + + AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc], + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; +#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_domain_bindings) +#else +#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 +#endif +$gt_revision_test_code + ]], + [[ +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION + ]])], + [eval "$gt_func_gnugettext_libc=yes"], + [eval "$gt_func_gnugettext_libc=no"])]) + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + dnl Sometimes libintl requires libiconv, so first search for libiconv. + ifelse(gt_included_intl, yes, , [ + AM_ICONV_LINK + ]) + dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL + dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) + dnl because that would add "-liconv" to LIBINTL and LTLIBINTL + dnl even if libiconv doesn't exist. + AC_LIB_LINKFLAGS_BODY([intl]) + AC_CACHE_CHECK([for GNU gettext in libintl], + [$gt_func_gnugettext_libintl], + [gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + dnl Now see whether libintl exists and does not depend on libiconv. + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); +#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) +#else +#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 +#endif +$gt_revision_test_code + ]], + [[ +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION + ]])], + [eval "$gt_func_gnugettext_libintl=yes"], + [eval "$gt_func_gnugettext_libintl=no"]) + dnl Now see whether libintl exists and depends on libiconv. + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); +#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) +#else +#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 +#endif +$gt_revision_test_code + ]], + [[ +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION + ]])], + [LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + eval "$gt_func_gnugettext_libintl=yes" + ]) + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS"]) + fi + + dnl If an already present or preinstalled GNU gettext() is found, + dnl use it. But if this macro is used in GNU gettext, and GNU + dnl gettext is already preinstalled in libintl, we update this + dnl libintl. (Cf. the install rule in intl/Makefile.in.) + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ + || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ + && test "$PACKAGE" != gettext-runtime \ + && test "$PACKAGE" != gettext-tools; }; then + gt_use_preinstalled_gnugettext=yes + else + dnl Reset the values set by searching for libintl. + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + ifelse(gt_included_intl, yes, [ + if test "$gt_use_preinstalled_gnugettext" != "yes"; then + dnl GNU gettext is not found in the C library. + dnl Fall back on included GNU gettext library. + nls_cv_use_gnu_gettext=yes + fi + fi + + if test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Mark actions used to generate GNU NLS library. + BUILD_INCLUDED_LIBINTL=yes + USE_INCLUDED_LIBINTL=yes + LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.la $LIBICONV $LIBTHREAD" + LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.la $LTLIBICONV $LTLIBTHREAD" + LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` + fi + + CATOBJEXT= + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Mark actions to use GNU gettext tools. + CATOBJEXT=.gmo + fi + ]) + + if test -n "$INTL_MACOSX_LIBS"; then + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Some extra flags are needed during linking. + LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" + LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" + fi + fi + + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + AC_DEFINE([ENABLE_NLS], [1], + [Define to 1 if translation of program messages to the user's native language + is requested.]) + else + USE_NLS=no + fi + fi + + AC_MSG_CHECKING([whether to use NLS]) + AC_MSG_RESULT([$USE_NLS]) + if test "$USE_NLS" = "yes"; then + AC_MSG_CHECKING([where the gettext function comes from]) + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + AC_MSG_RESULT([$gt_source]) + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + AC_MSG_CHECKING([how to link with libintl]) + AC_MSG_RESULT([$LIBINTL]) + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) + fi + + dnl For backward compatibility. Some packages may be using this. + AC_DEFINE([HAVE_GETTEXT], [1], + [Define if the GNU gettext() function is already present or preinstalled.]) + AC_DEFINE([HAVE_DCGETTEXT], [1], + [Define if the GNU dcgettext() function is already present or preinstalled.]) + fi + + dnl We need to process the po/ directory. + POSUB=po + fi + + ifelse(gt_included_intl, yes, [ + dnl In GNU gettext we have to set BUILD_INCLUDED_LIBINTL to 'yes' + dnl because some of the testsuite requires it. + BUILD_INCLUDED_LIBINTL=yes + + dnl Make all variables we use known to autoconf. + AC_SUBST([BUILD_INCLUDED_LIBINTL]) + AC_SUBST([USE_INCLUDED_LIBINTL]) + AC_SUBST([CATOBJEXT]) + ]) + + dnl For backward compatibility. Some Makefiles may be using this. + INTLLIBS="$LIBINTL" + AC_SUBST([INTLLIBS]) + + dnl Make all documented variables known to autoconf. + AC_SUBST([LIBINTL]) + AC_SUBST([LTLIBINTL]) + AC_SUBST([POSUB]) +]) + + +dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized. +m4_define([gt_NEEDS_INIT], +[ + m4_divert_text([DEFAULTS], [gt_needs=]) + m4_define([gt_NEEDS_INIT], []) +]) + + +dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL]) +AC_DEFUN([AM_GNU_GETTEXT_NEED], +[ + m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"]) +]) + + +dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) +AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) + + +dnl Usage: AM_GNU_GETTEXT_REQUIRE_VERSION([gettext-version]) +AC_DEFUN([AM_GNU_GETTEXT_REQUIRE_VERSION], []) + +# Configure paths for GLIB +# Owen Taylor 1997-2001 + +# Increment this whenever this file is changed. +#serial 4 + +dnl AM_PATH_GLIB_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]]) +dnl Test for GLIB, and define GLIB_CFLAGS and GLIB_LIBS, if gmodule, gobject, +dnl gthread, or gio is specified in MODULES, pass to pkg-config +dnl +AC_DEFUN([AM_PATH_GLIB_2_0], +[dnl +dnl Get the cflags and libraries from pkg-config +dnl + +dnl We can't use PKG_PREREQ because that needs 0.29. +m4_ifndef([PKG_PROG_PKG_CONFIG], + [pkg.m4 version 0.28 or later is required]) + +AC_ARG_ENABLE(glibtest, [ --disable-glibtest do not try to compile and run a test GLIB program], + , enable_glibtest=yes) + + min_glib_version=ifelse([$1], [], [2.0.0], [$1]) + pkg_config_args="glib-2.0 >= $min_glib_version" + for module in . $4 + do + case "$module" in + gmodule) + pkg_config_args="$pkg_config_args gmodule-2.0" + ;; + gmodule-no-export) + pkg_config_args="$pkg_config_args gmodule-no-export-2.0" + ;; + gobject) + pkg_config_args="$pkg_config_args gobject-2.0" + ;; + gthread) + pkg_config_args="$pkg_config_args gthread-2.0" + ;; + gio*) + pkg_config_args="$pkg_config_args $module-2.0" + ;; + esac + done + + PKG_PROG_PKG_CONFIG([0.16]) + + no_glib="" + + if test "x$PKG_CONFIG" = x ; then + no_glib=yes + PKG_CONFIG=no + fi + + dnl For GLIB_CFLAGS and GLIB_LIBS + PKG_CHECK_MODULES([GLIB], [$pkg_config_args], [:], [:]) + + dnl For the tools + PKG_CHECK_VAR([GLIB_GENMARSHAL], [glib-2.0], [glib_genmarshal]) + PKG_CHECK_VAR([GOBJECT_QUERY], [glib-2.0], [gobject_query]) + PKG_CHECK_VAR([GLIB_MKENUMS], [glib-2.0], [glib_mkenums]) + PKG_CHECK_VAR([GLIB_COMPILE_RESOURCES], [gio-2.0], [glib_compile_resources]) + + AC_MSG_CHECKING(for GLIB - version >= $min_glib_version) + + if test x$PKG_CONFIG != xno ; then + ## don't try to run the test against uninstalled libtool libs + if $PKG_CONFIG --uninstalled $pkg_config_args; then + echo "Will use uninstalled version of GLib found in PKG_CONFIG_PATH" + enable_glibtest=no + fi + + if $PKG_CONFIG --atleast-version $min_glib_version $pkg_config_args; then + : + else + no_glib=yes + fi + fi + + if test x"$no_glib" = x ; then + glib_config_major_version=`$PKG_CONFIG --modversion glib-2.0 | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + glib_config_minor_version=`$PKG_CONFIG --modversion glib-2.0 | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + glib_config_micro_version=`$PKG_CONFIG --modversion glib-2.0 | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + if test "x$enable_glibtest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GLIB_CFLAGS" + LIBS="$GLIB_LIBS $LIBS" +dnl +dnl Now check if the installed GLib is sufficiently new. (Also sanity +dnl checks the results of pkg-config to some extent) +dnl + rm -f conf.glibtest + AC_RUN_IFELSE([AC_LANG_SOURCE([[ +#include +#include +#include + +int +main (void) +{ + unsigned int major, minor, micro; + + fclose (fopen ("conf.glibtest", "w")); + + if (sscanf("$min_glib_version", "%u.%u.%u", &major, &minor, µ) != 3) { + printf("%s, bad version string\n", "$min_glib_version"); + exit(1); + } + + if ((glib_major_version != $glib_config_major_version) || + (glib_minor_version != $glib_config_minor_version) || + (glib_micro_version != $glib_config_micro_version)) + { + printf("\n*** 'pkg-config --modversion glib-2.0' returned %d.%d.%d, but GLIB (%d.%d.%d)\n", + $glib_config_major_version, $glib_config_minor_version, $glib_config_micro_version, + glib_major_version, glib_minor_version, glib_micro_version); + printf ("*** was found! If pkg-config was correct, then it is best\n"); + printf ("*** to remove the old version of GLib. You may also be able to fix the error\n"); + printf("*** by modifying your LD_LIBRARY_PATH environment variable, or by editing\n"); + printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); + printf("*** required on your system.\n"); + printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n"); + printf("*** to point to the correct configuration files\n"); + } + else if ((glib_major_version != GLIB_MAJOR_VERSION) || + (glib_minor_version != GLIB_MINOR_VERSION) || + (glib_micro_version != GLIB_MICRO_VERSION)) + { + printf("*** GLib header files (version %d.%d.%d) do not match\n", + GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION); + printf("*** library (version %d.%d.%d)\n", + glib_major_version, glib_minor_version, glib_micro_version); + } + else + { + if ((glib_major_version > major) || + ((glib_major_version == major) && (glib_minor_version > minor)) || + ((glib_major_version == major) && (glib_minor_version == minor) && (glib_micro_version >= micro))) + { + return 0; + } + else + { + printf("\n*** An old version of GLib (%u.%u.%u) was found.\n", + glib_major_version, glib_minor_version, glib_micro_version); + printf("*** You need a version of GLib newer than %u.%u.%u. The latest version of\n", + major, minor, micro); + printf("*** GLib is always available from ftp://ftp.gtk.org.\n"); + printf("***\n"); + printf("*** If you have already installed a sufficiently new version, this error\n"); + printf("*** probably means that the wrong copy of the pkg-config shell script is\n"); + printf("*** being found. The easiest way to fix this is to remove the old version\n"); + printf("*** of GLib, but you can also set the PKG_CONFIG environment to point to the\n"); + printf("*** correct copy of pkg-config. (In this case, you will have to\n"); + printf("*** modify your LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf\n"); + printf("*** so that the correct libraries are found at run-time))\n"); + } + } + return 1; +} +]])],[],[no_glib=yes],[echo $ac_n "cross compiling; assumed OK... $ac_c"]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + if test "x$no_glib" = x ; then + AC_MSG_RESULT(yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version)) + ifelse([$2], , :, [$2]) + else + AC_MSG_RESULT(no) + if test "$PKG_CONFIG" = "no" ; then + echo "*** A new enough version of pkg-config was not found." + echo "*** See http://www.freedesktop.org/software/pkgconfig/" + else + if test -f conf.glibtest ; then + : + else + echo "*** Could not run GLib test program, checking why..." + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GLIB_CFLAGS" + LIBS="$LIBS $GLIB_LIBS" + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#include +#include +]], [[ return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); ]])], + [ echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding GLib or finding the wrong" + echo "*** version of GLib. If it is not finding GLib, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ], + [ echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occurred. This usually means GLib is incorrectly installed."]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + GLIB_CFLAGS="" + GLIB_LIBS="" + GLIB_GENMARSHAL="" + GOBJECT_QUERY="" + GLIB_MKENUMS="" + GLIB_COMPILE_RESOURCES="" + ifelse([$3], , :, [$3]) + fi + rm -f conf.glibtest +]) + +# Configure paths for GTK+ +# Owen Taylor 1997-2001 + +# Version number used by aclocal, see `info automake Serials`. +# Increment on every change. +#serial 1 + +dnl AM_PATH_GTK_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]]) +dnl Test for GTK+, and define GTK_CFLAGS and GTK_LIBS, if gthread is specified in MODULES, +dnl pass to pkg-config +dnl +AC_DEFUN([AM_PATH_GTK_2_0], +[dnl +dnl Get the cflags and libraries from pkg-config +dnl +AC_ARG_ENABLE(gtktest, [ --disable-gtktest do not try to compile and run a test GTK+ program], + , enable_gtktest=yes) + + pkg_config_args=gtk+-2.0 + for module in . $4 + do + case "$module" in + gthread) + pkg_config_args="$pkg_config_args gthread-2.0" + ;; + esac + done + + no_gtk="" + + AC_REQUIRE([PKG_PROG_PKG_CONFIG]) + PKG_PROG_PKG_CONFIG([0.7]) + + min_gtk_version=ifelse([$1], ,2.0.0,$1) + AC_MSG_CHECKING(for GTK+ - version >= $min_gtk_version) + + if test x$PKG_CONFIG != xno ; then + ## don't try to run the test against uninstalled libtool libs + if $PKG_CONFIG --uninstalled $pkg_config_args; then + echo "Will use uninstalled version of GTK+ found in PKG_CONFIG_PATH" + enable_gtktest=no + fi + + if $PKG_CONFIG --atleast-version $min_gtk_version $pkg_config_args; then + : + else + no_gtk=yes + fi + fi + + if test x"$no_gtk" = x ; then + GTK_CFLAGS=`$PKG_CONFIG $pkg_config_args --cflags` + GTK_LIBS=`$PKG_CONFIG $pkg_config_args --libs` + gtk_config_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + gtk_config_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + gtk_config_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + if test "x$enable_gtktest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$GTK_LIBS $LIBS" +dnl +dnl Now check if the installed GTK+ is sufficiently new. (Also sanity +dnl checks the results of pkg-config to some extent) +dnl + rm -f conf.gtktest + AC_TRY_RUN([ +#include +#include +#include + +int +main () +{ + int major, minor, micro; + char *tmp_version; + + fclose (fopen ("conf.gtktest", "w")); + + /* HP/UX 9 (%@#!) writes to sscanf strings */ + tmp_version = g_strdup("$min_gtk_version"); + if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { + printf("%s, bad version string\n", "$min_gtk_version"); + exit(1); + } + + if ((gtk_major_version != $gtk_config_major_version) || + (gtk_minor_version != $gtk_config_minor_version) || + (gtk_micro_version != $gtk_config_micro_version)) + { + printf("\n*** 'pkg-config --modversion gtk+-2.0' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", + $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version, + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf ("*** was found! If pkg-config was correct, then it is best\n"); + printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n"); + printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); + printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); + printf("*** required on your system.\n"); + printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n"); + printf("*** to point to the correct configuration files\n"); + } + else if ((gtk_major_version != GTK_MAJOR_VERSION) || + (gtk_minor_version != GTK_MINOR_VERSION) || + (gtk_micro_version != GTK_MICRO_VERSION)) + { + printf("*** GTK+ header files (version %d.%d.%d) do not match\n", + GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); + printf("*** library (version %d.%d.%d)\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + } + else + { + if ((gtk_major_version > major) || + ((gtk_major_version == major) && (gtk_minor_version > minor)) || + ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))) + { + return 0; + } + else + { + printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n", + major, minor, micro); + printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n"); + printf("***\n"); + printf("*** If you have already installed a sufficiently new version, this error\n"); + printf("*** probably means that the wrong copy of the pkg-config shell script is\n"); + printf("*** being found. The easiest way to fix this is to remove the old version\n"); + printf("*** of GTK+, but you can also set the PKG_CONFIG environment to point to the\n"); + printf("*** correct copy of pkg-config. (In this case, you will have to\n"); + printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); + printf("*** so that the correct libraries are found at run-time))\n"); + } + } + return 1; +} +],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + if test "x$no_gtk" = x ; then + AC_MSG_RESULT(yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version)) + ifelse([$2], , :, [$2]) + else + AC_MSG_RESULT(no) + if test "$PKG_CONFIG" = "no" ; then + echo "*** A new enough version of pkg-config was not found." + echo "*** See http://pkgconfig.sourceforge.net" + else + if test -f conf.gtktest ; then + : + else + echo "*** Could not run GTK+ test program, checking why..." + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$LIBS $GTK_LIBS" + AC_TRY_LINK([ +#include +#include +], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ], + [ echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding GTK+ or finding the wrong" + echo "*** version of GTK+. If it is not finding GTK+, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ], + [ echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occured. This usually means GTK+ is incorrectly installed."]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + GTK_CFLAGS="" + GTK_LIBS="" + ifelse([$3], , :, [$3]) + fi + AC_SUBST(GTK_CFLAGS) + AC_SUBST(GTK_LIBS) + rm -f conf.gtktest +]) + +# host-cpu-c-abi.m4 serial 13 +dnl Copyright (C) 2002-2020 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible and Sam Steingold. + +dnl Sets the HOST_CPU variable to the canonical name of the CPU. +dnl Sets the HOST_CPU_C_ABI variable to the canonical name of the CPU with its +dnl C language ABI (application binary interface). +dnl Also defines __${HOST_CPU}__ and __${HOST_CPU_C_ABI}__ as C macros in +dnl config.h. +dnl +dnl This canonical name can be used to select a particular assembly language +dnl source file that will interoperate with C code on the given host. +dnl +dnl For example: +dnl * 'i386' and 'sparc' are different canonical names, because code for i386 +dnl will not run on SPARC CPUs and vice versa. They have different +dnl instruction sets. +dnl * 'sparc' and 'sparc64' are different canonical names, because code for +dnl 'sparc' and code for 'sparc64' cannot be linked together: 'sparc' code +dnl contains 32-bit instructions, whereas 'sparc64' code contains 64-bit +dnl instructions. A process on a SPARC CPU can be in 32-bit mode or in 64-bit +dnl mode, but not both. +dnl * 'mips' and 'mipsn32' are different canonical names, because they use +dnl different argument passing and return conventions for C functions, and +dnl although the instruction set of 'mips' is a large subset of the +dnl instruction set of 'mipsn32'. +dnl * 'mipsn32' and 'mips64' are different canonical names, because they use +dnl different sizes for the C types like 'int' and 'void *', and although +dnl the instruction sets of 'mipsn32' and 'mips64' are the same. +dnl * The same canonical name is used for different endiannesses. You can +dnl determine the endianness through preprocessor symbols: +dnl - 'arm': test __ARMEL__. +dnl - 'mips', 'mipsn32', 'mips64': test _MIPSEB vs. _MIPSEL. +dnl - 'powerpc64': test _BIG_ENDIAN vs. _LITTLE_ENDIAN. +dnl * The same name 'i386' is used for CPUs of type i386, i486, i586 +dnl (Pentium), AMD K7, Pentium II, Pentium IV, etc., because +dnl - Instructions that do not exist on all of these CPUs (cmpxchg, +dnl MMX, SSE, SSE2, 3DNow! etc.) are not frequently used. If your +dnl assembly language source files use such instructions, you will +dnl need to make the distinction. +dnl - Speed of execution of the common instruction set is reasonable across +dnl the entire family of CPUs. If you have assembly language source files +dnl that are optimized for particular CPU types (like GNU gmp has), you +dnl will need to make the distinction. +dnl See . +AC_DEFUN([gl_HOST_CPU_C_ABI], +[ + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([gl_C_ASM]) + AC_CACHE_CHECK([host CPU and C ABI], [gl_cv_host_cpu_c_abi], + [case "$host_cpu" in + +changequote(,)dnl + i[34567]86 ) +changequote([,])dnl + gl_cv_host_cpu_c_abi=i386 + ;; + + x86_64 ) + # On x86_64 systems, the C compiler may be generating code in one of + # these ABIs: + # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64. + # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64 + # with native Windows (mingw, MSVC). + # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if (defined __x86_64__ || defined __amd64__ \ + || defined _M_X64 || defined _M_AMD64) + int ok; + #else + error fail + #endif + ]])], + [AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=x86_64-x32], + [gl_cv_host_cpu_c_abi=x86_64])], + [gl_cv_host_cpu_c_abi=i386]) + ;; + +changequote(,)dnl + alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] ) +changequote([,])dnl + gl_cv_host_cpu_c_abi=alpha + ;; + + arm* | aarch64 ) + # Assume arm with EABI. + # On arm64 systems, the C compiler may be generating code in one of + # these ABIs: + # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64. + # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#ifdef __aarch64__ + int ok; + #else + error fail + #endif + ]])], + [AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=arm64-ilp32], + [gl_cv_host_cpu_c_abi=arm64])], + [# Don't distinguish little-endian and big-endian arm, since they + # don't require different machine code for simple operations and + # since the user can distinguish them through the preprocessor + # defines __ARMEL__ vs. __ARMEB__. + # But distinguish arm which passes floating-point arguments and + # return values in integer registers (r0, r1, ...) - this is + # gcc -mfloat-abi=soft or gcc -mfloat-abi=softfp - from arm which + # passes them in float registers (s0, s1, ...) and double registers + # (d0, d1, ...) - this is gcc -mfloat-abi=hard. GCC 4.6 or newer + # sets the preprocessor defines __ARM_PCS (for the first case) and + # __ARM_PCS_VFP (for the second case), but older GCC does not. + echo 'double ddd; void func (double dd) { ddd = dd; }' > conftest.c + # Look for a reference to the register d0 in the .s file. + AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c) >/dev/null 2>&1 + if LC_ALL=C grep 'd0,' conftest.$gl_asmext >/dev/null; then + gl_cv_host_cpu_c_abi=armhf + else + gl_cv_host_cpu_c_abi=arm + fi + rm -f conftest* + ]) + ;; + + hppa1.0 | hppa1.1 | hppa2.0* | hppa64 ) + # On hppa, the C compiler may be generating 32-bit code or 64-bit + # code. In the latter case, it defines _LP64 and __LP64__. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#ifdef __LP64__ + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=hppa64], + [gl_cv_host_cpu_c_abi=hppa]) + ;; + + ia64* ) + # On ia64 on HP-UX, the C compiler may be generating 64-bit code or + # 32-bit code. In the latter case, it defines _ILP32. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#ifdef _ILP32 + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=ia64-ilp32], + [gl_cv_host_cpu_c_abi=ia64]) + ;; + + mips* ) + # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this + # at 32. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64) + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=mips64], + [# In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIN32. + # In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIO32. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if (_MIPS_SIM == _ABIN32) + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=mipsn32], + [gl_cv_host_cpu_c_abi=mips])]) + ;; + + powerpc* ) + # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD. + # No need to distinguish them here; the caller may distinguish + # them based on the OS. + # On powerpc64 systems, the C compiler may still be generating + # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may + # be generating 64-bit code. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __powerpc64__ || defined _ARCH_PPC64 + int ok; + #else + error fail + #endif + ]])], + [# On powerpc64, there are two ABIs on Linux: The AIX compatible + # one and the ELFv2 one. The latter defines _CALL_ELF=2. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined _CALL_ELF && _CALL_ELF == 2 + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=powerpc64-elfv2], + [gl_cv_host_cpu_c_abi=powerpc64]) + ], + [gl_cv_host_cpu_c_abi=powerpc]) + ;; + + rs6000 ) + gl_cv_host_cpu_c_abi=powerpc + ;; + + riscv32 | riscv64 ) + # There are 2 architectures (with variants): rv32* and rv64*. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if __riscv_xlen == 64 + int ok; + #else + error fail + #endif + ]])], + [cpu=riscv64], + [cpu=riscv32]) + # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d. + # Size of 'long' and 'void *': + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __LP64__ + int ok; + #else + error fail + #endif + ]])], + [main_abi=lp64], + [main_abi=ilp32]) + # Float ABIs: + # __riscv_float_abi_double: + # 'float' and 'double' are passed in floating-point registers. + # __riscv_float_abi_single: + # 'float' are passed in floating-point registers. + # __riscv_float_abi_soft: + # No values are passed in floating-point registers. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __riscv_float_abi_double + int ok; + #else + error fail + #endif + ]])], + [float_abi=d], + [AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __riscv_float_abi_single + int ok; + #else + error fail + #endif + ]])], + [float_abi=f], + [float_abi='']) + ]) + gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}" + ;; + + s390* ) + # On s390x, the C compiler may be generating 64-bit (= s390x) code + # or 31-bit (= s390) code. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __LP64__ || defined __s390x__ + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=s390x], + [gl_cv_host_cpu_c_abi=s390]) + ;; + + sparc | sparc64 ) + # UltraSPARCs running Linux have `uname -m` = "sparc64", but the + # C compiler still generates 32-bit code. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __sparcv9 || defined __arch64__ + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=sparc64], + [gl_cv_host_cpu_c_abi=sparc]) + ;; + + *) + gl_cv_host_cpu_c_abi="$host_cpu" + ;; + esac + ]) + + dnl In most cases, $HOST_CPU and $HOST_CPU_C_ABI are the same. + HOST_CPU=`echo "$gl_cv_host_cpu_c_abi" | sed -e 's/-.*//'` + HOST_CPU_C_ABI="$gl_cv_host_cpu_c_abi" + AC_SUBST([HOST_CPU]) + AC_SUBST([HOST_CPU_C_ABI]) + + # This was + # AC_DEFINE_UNQUOTED([__${HOST_CPU}__]) + # AC_DEFINE_UNQUOTED([__${HOST_CPU_C_ABI}__]) + # earlier, but KAI C++ 3.2d doesn't like this. + sed -e 's/-/_/g' >> confdefs.h < +#include + ]], + [[iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);]])], + [am_cv_func_iconv=yes]) + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include + ]], + [[iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);]])], + [am_cv_lib_iconv=yes] + [am_cv_func_iconv=yes]) + LIBS="$am_save_LIBS" + fi + ]) + if test "$am_cv_func_iconv" = yes; then + AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [ + dnl This tests against bugs in AIX 5.1, AIX 6.1..7.1, HP-UX 11.11, + dnl Solaris 10. + am_save_LIBS="$LIBS" + if test $am_cv_lib_iconv = yes; then + LIBS="$LIBS $LIBICONV" + fi + am_cv_func_iconv_works=no + for ac_iconv_const in '' 'const'; do + AC_RUN_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include + +#ifndef ICONV_CONST +# define ICONV_CONST $ac_iconv_const +#endif + ]], + [[int result = 0; + /* Test against AIX 5.1 bug: Failures are not distinguishable from successful + returns. */ + { + iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); + if (cd_utf8_to_88591 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ + char buf[10]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_utf8_to_88591, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 1; + iconv_close (cd_utf8_to_88591); + } + } + /* Test against Solaris 10 bug: Failures are not distinguishable from + successful returns. */ + { + iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); + if (cd_ascii_to_88591 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\263"; + char buf[10]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_ascii_to_88591, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 2; + iconv_close (cd_ascii_to_88591); + } + } + /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\304"; + static char buf[2] = { (char)0xDE, (char)0xAD }; + ICONV_CONST char *inptr = input; + size_t inbytesleft = 1; + char *outptr = buf; + size_t outbytesleft = 1; + size_t res = iconv (cd_88591_to_utf8, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) + result |= 4; + iconv_close (cd_88591_to_utf8); + } + } +#if 0 /* This bug could be worked around by the caller. */ + /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char buf[50]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_88591_to_utf8, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if ((int)res > 0) + result |= 8; + iconv_close (cd_88591_to_utf8); + } + } +#endif + /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is + provided. */ + { + /* Try standardized names. */ + iconv_t cd1 = iconv_open ("UTF-8", "EUC-JP"); + /* Try IRIX, OSF/1 names. */ + iconv_t cd2 = iconv_open ("UTF-8", "eucJP"); + /* Try AIX names. */ + iconv_t cd3 = iconv_open ("UTF-8", "IBM-eucJP"); + /* Try HP-UX names. */ + iconv_t cd4 = iconv_open ("utf8", "eucJP"); + if (cd1 == (iconv_t)(-1) && cd2 == (iconv_t)(-1) + && cd3 == (iconv_t)(-1) && cd4 == (iconv_t)(-1)) + result |= 16; + if (cd1 != (iconv_t)(-1)) + iconv_close (cd1); + if (cd2 != (iconv_t)(-1)) + iconv_close (cd2); + if (cd3 != (iconv_t)(-1)) + iconv_close (cd3); + if (cd4 != (iconv_t)(-1)) + iconv_close (cd4); + } + return result; +]])], + [am_cv_func_iconv_works=yes], , + [case "$host_os" in + aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; + *) am_cv_func_iconv_works="guessing yes" ;; + esac]) + test "$am_cv_func_iconv_works" = no || break + done + LIBS="$am_save_LIBS" + ]) + case "$am_cv_func_iconv_works" in + *no) am_func_iconv=no am_cv_lib_iconv=no ;; + *) am_func_iconv=yes ;; + esac + else + am_func_iconv=no am_cv_lib_iconv=no + fi + if test "$am_func_iconv" = yes; then + AC_DEFINE([HAVE_ICONV], [1], + [Define if you have the iconv() function and it works.]) + fi + if test "$am_cv_lib_iconv" = yes; then + AC_MSG_CHECKING([how to link with libiconv]) + AC_MSG_RESULT([$LIBICONV]) + else + dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV + dnl either. + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + AC_SUBST([LIBICONV]) + AC_SUBST([LTLIBICONV]) +]) + +dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to +dnl avoid warnings like +dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required". +dnl This is tricky because of the way 'aclocal' is implemented: +dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN. +dnl Otherwise aclocal's initial scan pass would miss the macro definition. +dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions. +dnl Otherwise aclocal would emit many "Use of uninitialized value $1" +dnl warnings. +m4_define([gl_iconv_AC_DEFUN], + m4_version_prereq([2.64], + [[AC_DEFUN_ONCE( + [$1], [$2])]], + [m4_ifdef([gl_00GNULIB], + [[AC_DEFUN_ONCE( + [$1], [$2])]], + [[AC_DEFUN( + [$1], [$2])]])])) +gl_iconv_AC_DEFUN([AM_ICONV], +[ + AM_ICONV_LINK + if test "$am_cv_func_iconv" = yes; then + AC_MSG_CHECKING([for iconv declaration]) + AC_CACHE_VAL([am_cv_proto_iconv], [ + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif + ]], + [[]])], + [am_cv_proto_iconv_arg1=""], + [am_cv_proto_iconv_arg1="const"]) + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) + am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + AC_MSG_RESULT([ + $am_cv_proto_iconv]) + else + dnl When compiling GNU libiconv on a system that does not have iconv yet, + dnl pick the POSIX compliant declaration without 'const'. + am_cv_proto_iconv_arg1="" + fi + AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1], + [Define as const if the declaration of iconv() needs const.]) + dnl Also substitute ICONV_CONST in the gnulib generated . + m4_ifdef([gl_ICONV_H_DEFAULTS], + [AC_REQUIRE([gl_ICONV_H_DEFAULTS]) + if test -n "$am_cv_proto_iconv_arg1"; then + ICONV_CONST="const" + fi + ]) +]) + +# intlmacosx.m4 serial 8 (gettext-0.20.2) +dnl Copyright (C) 2004-2014, 2016, 2019-2020 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can be used in projects which are not available under +dnl the GNU General Public License or the GNU Lesser General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Lesser General Public License, and the rest of the GNU +dnl gettext package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Checks for special options needed on Mac OS X. +dnl Defines INTL_MACOSX_LIBS. +AC_DEFUN([gt_INTL_MACOSX], +[ + dnl Check for API introduced in Mac OS X 10.4. + AC_CACHE_CHECK([for CFPreferencesCopyAppValue], + [gt_cv_func_CFPreferencesCopyAppValue], + [gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[CFPreferencesCopyAppValue(NULL, NULL)]])], + [gt_cv_func_CFPreferencesCopyAppValue=yes], + [gt_cv_func_CFPreferencesCopyAppValue=no]) + LIBS="$gt_save_LIBS"]) + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1], + [Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) + fi + dnl Don't check for the API introduced in Mac OS X 10.5, CFLocaleCopyCurrent, + dnl because in macOS 10.13.4 it has the following behaviour: + dnl When two or more languages are specified in the + dnl "System Preferences > Language & Region > Preferred Languages" panel, + dnl it returns en_CC where CC is the territory (even when English is not among + dnl the preferred languages!). What we want instead is what + dnl CFLocaleCopyCurrent returned in earlier macOS releases and what + dnl CFPreferencesCopyAppValue still returns, namely ll_CC where ll is the + dnl first among the preferred languages and CC is the territory. + AC_CACHE_CHECK([for CFLocaleCopyPreferredLanguages], [gt_cv_func_CFLocaleCopyPreferredLanguages], + [gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[CFLocaleCopyPreferredLanguages();]])], + [gt_cv_func_CFLocaleCopyPreferredLanguages=yes], + [gt_cv_func_CFLocaleCopyPreferredLanguages=no]) + LIBS="$gt_save_LIBS"]) + if test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then + AC_DEFINE([HAVE_CFLOCALECOPYPREFERREDLANGUAGES], [1], + [Define to 1 if you have the Mac OS X function CFLocaleCopyPreferredLanguages in the CoreFoundation framework.]) + fi + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes \ + || test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + AC_SUBST([INTL_MACOSX_LIBS]) +]) + +# lib-ld.m4 serial 9 +dnl Copyright (C) 1996-2003, 2009-2020 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl Subroutines of libtool.m4, +dnl with replacements s/_*LT_PATH/AC_LIB_PROG/ and s/lt_/acl_/ to avoid +dnl collision with libtool.m4. + +dnl From libtool-2.4. Sets the variable with_gnu_ld to yes or no. +AC_DEFUN([AC_LIB_PROG_LD_GNU], +[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld], +[# I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 /dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +if test -n "$LD"; then + AC_MSG_CHECKING([for ld]) +elif test "$GCC" = yes; then + AC_MSG_CHECKING([for ld used by $CC]) +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +if test -n "$LD"; then + # Let the user override the test with a path. + : +else + AC_CACHE_VAL([acl_cv_path_LD], + [ + acl_cv_path_LD= # Final result of this test + ac_prog=ld # Program to search in $PATH + if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + acl_output=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + acl_output=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $acl_output in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + acl_output=`echo "$acl_output" | sed 's%\\\\%/%g'` + while echo "$acl_output" | grep "$re_direlt" > /dev/null 2>&1; do + acl_output=`echo $acl_output | sed "s%$re_direlt%/%"` + done + # Got the pathname. No search in PATH is needed. + acl_cv_path_LD="$acl_output" + ac_prog= + ;; + "") + # If it fails, then pretend we aren't using GCC. + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac + fi + if test -n "$ac_prog"; then + # Search for $ac_prog in $PATH. + acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$acl_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + ]) + wl="$acl_cv_wl" + acl_libext="$acl_cv_libext" + acl_shlibext="$acl_cv_shlibext" + acl_libname_spec="$acl_cv_libname_spec" + acl_library_names_spec="$acl_cv_library_names_spec" + acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + acl_hardcode_direct="$acl_cv_hardcode_direct" + acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" + dnl Determine whether the user wants rpath handling at all. + AC_ARG_ENABLE([rpath], + [ --disable-rpath do not hardcode runtime library paths], + :, enable_rpath=yes) +]) + +dnl AC_LIB_FROMPACKAGE(name, package) +dnl declares that libname comes from the given package. The configure file +dnl will then not have a --with-libname-prefix option but a +dnl --with-package-prefix option. Several libraries can come from the same +dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar +dnl macro call that searches for libname. +AC_DEFUN([AC_LIB_FROMPACKAGE], +[ + pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) + define([acl_frompackage_]NAME, [$2]) + popdef([NAME]) + pushdef([PACK],[$2]) + pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) + define([acl_libsinpackage_]PACKUP, + m4_ifdef([acl_libsinpackage_]PACKUP, [m4_defn([acl_libsinpackage_]PACKUP)[, ]],)[lib$1]) + popdef([PACKUP]) + popdef([PACK]) +]) + +dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and +dnl the libraries corresponding to explicit and implicit dependencies. +dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. +dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found +dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem. +AC_DEFUN([AC_LIB_LINKFLAGS_BODY], +[ + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) + pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])]) + pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) + pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" + eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" + ]) + AC_ARG_WITH(PACK[-prefix], +[[ --with-]]PACK[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib + --without-]]PACK[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" + eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + additional_libdir2="$withval/$acl_libdirstem2" + additional_libdir3="$withval/$acl_libdirstem3" + fi + fi +]) + if test "X$additional_libdir2" = "X$additional_libdir"; then + additional_libdir2= + fi + if test "X$additional_libdir3" = "X$additional_libdir"; then + additional_libdir3= + fi + dnl Search the library and its dependencies in $additional_libdir and + dnl $LDFLAGS. Using breadth-first-seach. + LIB[]NAME= + LTLIB[]NAME= + INC[]NAME= + LIB[]NAME[]_PREFIX= + dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been + dnl computed. So it has to be reset here. + HAVE_LIB[]NAME= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='$1 $2' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + dnl See if it was already located by an earlier AC_LIB_LINKFLAGS + dnl or AC_LIB_HAVE_LINKFLAGS call. + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" + else + dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined + dnl that this library doesn't exist. So just drop it. + : + fi + else + dnl Search the library lib$name in $additional_libdir and $LDFLAGS + dnl and the already constructed $LIBNAME/$LTLIBNAME. + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + for additional_libdir_variable in additional_libdir additional_libdir2 additional_libdir3; do + if test "X$found_dir" = "X"; then + eval dir=\$$additional_libdir_variable + if test -n "$dir"; then + dnl The same code as in the loop below: + dnl First look for a shared library. + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + dnl Then look for a static library. + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + fi + done + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + dnl First look for a shared library. + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + dnl Then look for a static library. + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + dnl Found the library. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + dnl Linking with a shared library. We attempt to hardcode its + dnl directory into the executable's runpath, unless it's the + dnl standard /usr/lib. + if test "$enable_rpath" = no \ + || test "X$found_dir" = "X/usr/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem3"; then + dnl No hardcoding is needed. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + dnl The hardcoding into $LIBNAME is system dependent. + if test "$acl_hardcode_direct" = yes; then + dnl Using DIR/libNAME.so during linking hardcodes DIR into the + dnl resulting binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + dnl Rely on "-L$found_dir". + dnl But don't add it if it's already contained in the LDFLAGS + dnl or the already constructed $LIBNAME + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH + dnl here, because this doesn't fit in flags passed to the + dnl compiler. So give up. No hardcoding. This affects only + dnl very old systems. + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + dnl Linking with a static library. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" + else + dnl We shouldn't come here, but anyway it's good to have a + dnl fallback. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" + fi + fi + dnl Assume the include files are nearby. + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + if test "$name" = '$1'; then + LIB[]NAME[]_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem2 | */$acl_libdirstem2/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` + if test "$name" = '$1'; then + LIB[]NAME[]_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem3 | */$acl_libdirstem3/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem3/"'*$,,'` + if test "$name" = '$1'; then + LIB[]NAME[]_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + dnl Potentially add $additional_includedir to $INCNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's /usr/local/include and we are using GCC on Linux, + dnl 3. if it's already present in $CPPFLAGS or the already + dnl constructed $INCNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INC[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $INCNAME. + INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + dnl Look for dependencies. + if test -n "$found_la"; then + dnl Read the .la file. It defines the variables + dnl dlname, library_names, old_library, dependency_libs, current, + dnl age, revision, installed, dlopen, dlpreopen, libdir. + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + dnl We use only dependency_libs. + for dep in $dependency_libs; do + case "$dep" in + -L*) + dependency_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + dnl Potentially add $dependency_libdir to $LIBNAME and $LTLIBNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's /usr/local/lib and we are using GCC on Linux, + dnl 3. if it's already present in $LDFLAGS or the already + dnl constructed $LIBNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$dependency_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$dependency_libdir" != "X/usr/$acl_libdirstem2" \ + && test "X$dependency_libdir" != "X/usr/$acl_libdirstem3"; then + haveit= + if test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem2" \ + || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem3"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$dependency_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$dependency_libdir"; then + dnl Really add $dependency_libdir to $LIBNAME. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$dependency_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$dependency_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$dependency_libdir"; then + dnl Really add $dependency_libdir to $LTLIBNAME. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$dependency_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + dnl Handle this in the next round. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + dnl Handle this in the next round. Throw away the .la's + dnl directory; it is already contained in a preceding -L + dnl option. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + dnl Most likely an immediate library name. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" + ;; + esac + done + fi + else + dnl Didn't find the library; assume it is in the system directories + dnl known to the linker and runtime loader. (All the system + dnl directories known to the linker should also be known to the + dnl runtime loader, otherwise the system is severely misconfigured.) + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + dnl Weird platform: only the last -rpath option counts, the user must + dnl pass all path elements in one option. We can arrange that for a + dnl single library, but not when more than one $LIBNAMEs are used. + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl. + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + else + dnl The -rpath options are cumulative. + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + dnl When using libtool, the option that works for both libraries and + dnl executables is -R. The -R options are cumulative. + for found_dir in $ltrpathdirs; do + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" + done + fi + popdef([PACKLIBS]) + popdef([PACKUP]) + popdef([PACK]) + popdef([NAME]) +]) + +dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, +dnl unless already present in VAR. +dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes +dnl contains two or three consecutive elements that belong together. +AC_DEFUN([AC_LIB_APPENDTOVAR], +[ + for element in [$2]; do + haveit= + for x in $[$1]; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + [$1]="${[$1]}${[$1]:+ }$element" + fi + done +]) + +dnl For those cases where a variable contains several -L and -l options +dnl referring to unknown libraries and directories, this macro determines the +dnl necessary additional linker options for the runtime path. +dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL]) +dnl sets LDADDVAR to linker options needed together with LIBSVALUE. +dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed, +dnl otherwise linking without libtool is assumed. +AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], +[ + AC_REQUIRE([AC_LIB_RPATH]) + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + $1= + if test "$enable_rpath" != no; then + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + dnl Use an explicit option to hardcode directories into the resulting + dnl binary. + rpathdirs= + next= + for opt in $2; do + if test -n "$next"; then + dir="$next" + dnl No need to hardcode the standard /usr/lib. + if test "X$dir" != "X/usr/$acl_libdirstem" \ + && test "X$dir" != "X/usr/$acl_libdirstem2" \ + && test "X$dir" != "X/usr/$acl_libdirstem3"; then + rpathdirs="$rpathdirs $dir" + fi + next= + else + case $opt in + -L) next=yes ;; + -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` + dnl No need to hardcode the standard /usr/lib. + if test "X$dir" != "X/usr/$acl_libdirstem" \ + && test "X$dir" != "X/usr/$acl_libdirstem2" \ + && test "X$dir" != "X/usr/$acl_libdirstem3"; then + rpathdirs="$rpathdirs $dir" + fi + next= ;; + *) next= ;; + esac + fi + done + if test "X$rpathdirs" != "X"; then + if test -n ""$3""; then + dnl libtool is used for linking. Use -R options. + for dir in $rpathdirs; do + $1="${$1}${$1:+ }-R$dir" + done + else + dnl The linker is used for linking directly. + if test -n "$acl_hardcode_libdir_separator"; then + dnl Weird platform: only the last -rpath option counts, the user + dnl must pass all path elements in one option. + alldirs= + for dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + $1="$flag" + else + dnl The -rpath options are cumulative. + for dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + $1="${$1}${$1:+ }$flag" + done + fi + fi + fi + fi + fi + AC_SUBST([$1]) +]) + +# lib-prefix.m4 serial 17 +dnl Copyright (C) 2001-2005, 2008-2020 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed +dnl to access previously installed libraries. The basic assumption is that +dnl a user will want packages to use other packages he previously installed +dnl with the same --prefix option. +dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate +dnl libraries, but is otherwise very convenient. +AC_DEFUN([AC_LIB_PREFIX], +[ + AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_ARG_WITH([lib-prefix], +[[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib + --without-lib-prefix don't search for libraries in includedir and libdir]], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + fi + fi +]) + if test $use_additional = yes; then + dnl Potentially add $additional_includedir to $CPPFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's already present in $CPPFLAGS, + dnl 3. if it's /usr/local/include and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + for x in $CPPFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $CPPFLAGS. + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" + fi + fi + fi + fi + dnl Potentially add $additional_libdir to $LDFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's already present in $LDFLAGS, + dnl 3. if it's /usr/local/lib and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then + haveit= + for x in $LDFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LDFLAGS. + LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" + fi + fi + fi + fi + fi +]) + +dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, +dnl acl_final_exec_prefix, containing the values to which $prefix and +dnl $exec_prefix will expand at the end of the configure script. +AC_DEFUN([AC_LIB_PREPARE_PREFIX], +[ + dnl Unfortunately, prefix and exec_prefix get only finally determined + dnl at the end of configure. + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" +]) + +dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the +dnl variables prefix and exec_prefix bound to the values they will have +dnl at the end of the configure script. +AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], +[ + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + $1 + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" +]) + +dnl AC_LIB_PREPARE_MULTILIB creates +dnl - a function acl_is_expected_elfclass, that tests whether standard input +dn; has a 32-bit or 64-bit ELF header, depending on the host CPU ABI, +dnl - 3 variables acl_libdirstem, acl_libdirstem2, acl_libdirstem3, containing +dnl the basename of the libdir to try in turn, either "lib" or "lib64" or +dnl "lib/64" or "lib32" or "lib/sparcv9" or "lib/amd64" or similar. +AC_DEFUN([AC_LIB_PREPARE_MULTILIB], +[ + dnl There is no formal standard regarding lib, lib32, and lib64. + dnl On most glibc systems, the current practice is that on a system supporting + dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under + dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. However, on + dnl Arch Linux based distributions, it's the opposite: 32-bit libraries go + dnl under $prefix/lib32 and 64-bit libraries go under $prefix/lib. + dnl We determine the compiler's default mode by looking at the compiler's + dnl library search path. If at least one of its elements ends in /lib64 or + dnl points to a directory whose absolute pathname ends in /lib64, we use that + dnl for 64-bit ABIs. Similarly for 32-bit ABIs. Otherwise we use the default, + dnl namely "lib". + dnl On Solaris systems, the current practice is that on a system supporting + dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under + dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or + dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib. + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([gl_HOST_CPU_C_ABI_32BIT]) + + AC_CACHE_CHECK([for ELF binary format], [gl_cv_elf], + [AC_EGREP_CPP([Extensible Linking Format], + [#ifdef __ELF__ + Extensible Linking Format + #endif + ], + [gl_cv_elf=yes], + [gl_cv_elf=no]) + ]) + if test $gl_cv_elf; then + # Extract the ELF class of a file (5th byte) in decimal. + # Cf. https://en.wikipedia.org/wiki/Executable_and_Linkable_Format#File_header + if od -A x < /dev/null >/dev/null 2>/dev/null; then + # Use POSIX od. + func_elfclass () + { + od -A n -t d1 -j 4 -N 1 + } + else + # Use BSD hexdump. + func_elfclass () + { + dd bs=1 count=1 skip=4 2>/dev/null | hexdump -e '1/1 "%3d "' + echo + } + fi +changequote(,)dnl + case $HOST_CPU_C_ABI_32BIT in + yes) + # 32-bit ABI. + acl_is_expected_elfclass () + { + test "`func_elfclass | sed -e 's/[ ]//g'`" = 1 + } + ;; + no) + # 64-bit ABI. + acl_is_expected_elfclass () + { + test "`func_elfclass | sed -e 's/[ ]//g'`" = 2 + } + ;; + *) + # Unknown. + acl_is_expected_elfclass () + { + : + } + ;; + esac +changequote([,])dnl + else + acl_is_expected_elfclass () + { + : + } + fi + + dnl Allow the user to override the result by setting acl_cv_libdirstems. + AC_CACHE_CHECK([for the common suffixes of directories in the library search path], + [acl_cv_libdirstems], + [dnl Try 'lib' first, because that's the default for libdir in GNU, see + dnl . + acl_libdirstem=lib + acl_libdirstem2= + acl_libdirstem3= + case "$host_os" in + solaris*) + dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment + dnl . + dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link." + dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the + dnl symlink is missing, so we set acl_libdirstem2 too. + if test $HOST_CPU_C_ABI_32BIT = no; then + acl_libdirstem2=lib/64 + case "$host_cpu" in + sparc*) acl_libdirstem3=lib/sparcv9 ;; + i*86 | x86_64) acl_libdirstem3=lib/amd64 ;; + esac + fi + ;; + *) + dnl If $CC generates code for a 32-bit ABI, the libraries are + dnl surely under $prefix/lib or $prefix/lib32, not $prefix/lib64. + dnl Similarly, if $CC generates code for a 64-bit ABI, the libraries + dnl are surely under $prefix/lib or $prefix/lib64, not $prefix/lib32. + dnl Find the compiler's search path. However, non-system compilers + dnl sometimes have odd library search paths. But we can't simply invoke + dnl '/usr/bin/gcc -print-search-dirs' because that would not take into + dnl account the -m32/-m31 or -m64 options from the $CC or $CFLAGS. + searchpath=`(LC_ALL=C $CC $CPPFLAGS $CFLAGS -print-search-dirs) 2>/dev/null \ + | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` + if test $HOST_CPU_C_ABI_32BIT != no; then + # 32-bit or unknown ABI. + if test -d /usr/lib32; then + acl_libdirstem2=lib32 + fi + fi + if test $HOST_CPU_C_ABI_32BIT != yes; then + # 64-bit or unknown ABI. + if test -d /usr/lib64; then + acl_libdirstem3=lib64 + fi + fi + if test -n "$searchpath"; then + acl_save_IFS="${IFS= }"; IFS=":" + for searchdir in $searchpath; do + if test -d "$searchdir"; then + case "$searchdir" in + */lib32/ | */lib32 ) acl_libdirstem2=lib32 ;; + */lib64/ | */lib64 ) acl_libdirstem3=lib64 ;; + */../ | */.. ) + # Better ignore directories of this form. They are misleading. + ;; + *) searchdir=`cd "$searchdir" && pwd` + case "$searchdir" in + */lib32 ) acl_libdirstem2=lib32 ;; + */lib64 ) acl_libdirstem3=lib64 ;; + esac ;; + esac + fi + done + IFS="$acl_save_IFS" + if test $HOST_CPU_C_ABI_32BIT = yes; then + # 32-bit ABI. + acl_libdirstem3= + fi + if test $HOST_CPU_C_ABI_32BIT = no; then + # 64-bit ABI. + acl_libdirstem2= + fi + fi + ;; + esac + test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" + test -n "$acl_libdirstem3" || acl_libdirstem3="$acl_libdirstem" + acl_cv_libdirstems="$acl_libdirstem,$acl_libdirstem2,$acl_libdirstem3" + ]) + dnl Decompose acl_cv_libdirstems into acl_libdirstem, acl_libdirstem2, and + dnl acl_libdirstem3. +changequote(,)dnl + acl_libdirstem=`echo "$acl_cv_libdirstems" | sed -e 's/,.*//'` + acl_libdirstem2=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,//' -e 's/,.*//'` + acl_libdirstem3=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,[^,]*,//' -e 's/,.*//'` +changequote([,])dnl +]) + +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +# +# Copyright (C) 1996-2001, 2003-2019, 2021-2022 Free Software +# Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +m4_define([_LT_COPYING], [dnl +# Copyright (C) 2014 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. +# +# GNU Libtool 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +]) + +# serial 59 LT_INIT + + +# LT_PREREQ(VERSION) +# ------------------ +# Complain and exit if this libtool version is less that VERSION. +m4_defun([LT_PREREQ], +[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, + [m4_default([$3], + [m4_fatal([Libtool version $1 or higher is required], + 63)])], + [$2])]) + + +# _LT_CHECK_BUILDDIR +# ------------------ +# Complain if the absolute build directory name contains unusual characters +m4_defun([_LT_CHECK_BUILDDIR], +[case `pwd` in + *\ * | *\ *) + AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; +esac +]) + + +# LT_INIT([OPTIONS]) +# ------------------ +AC_DEFUN([LT_INIT], +[AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK +AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +AC_BEFORE([$0], [LT_LANG])dnl +AC_BEFORE([$0], [LT_OUTPUT])dnl +AC_BEFORE([$0], [LTDL_INIT])dnl +m4_require([_LT_CHECK_BUILDDIR])dnl + +dnl Autoconf doesn't catch unexpanded LT_ macros by default: +m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl +m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl +dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 +dnl unless we require an AC_DEFUNed macro: +AC_REQUIRE([LTOPTIONS_VERSION])dnl +AC_REQUIRE([LTSUGAR_VERSION])dnl +AC_REQUIRE([LTVERSION_VERSION])dnl +AC_REQUIRE([LTOBSOLETE_VERSION])dnl +m4_require([_LT_PROG_LTMAIN])dnl + +_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) + +dnl Parse OPTIONS +_LT_SET_OPTIONS([$0], [$1]) + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS=$ltmain + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +_LT_SETUP + +# Only expand once: +m4_define([LT_INIT]) +])# LT_INIT + +# Old names: +AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) +AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PROG_LIBTOOL], []) +dnl AC_DEFUN([AM_PROG_LIBTOOL], []) + + +# _LT_PREPARE_CC_BASENAME +# ----------------------- +m4_defun([_LT_PREPARE_CC_BASENAME], [ +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in @S|@*""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} +])# _LT_PREPARE_CC_BASENAME + + +# _LT_CC_BASENAME(CC) +# ------------------- +# It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, +# but that macro is also expanded into generated libtool script, which +# arranges for $SED and $ECHO to be set by different means. +m4_defun([_LT_CC_BASENAME], +[m4_require([_LT_PREPARE_CC_BASENAME])dnl +AC_REQUIRE([_LT_DECL_SED])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl +func_cc_basename $1 +cc_basename=$func_cc_basename_result +]) + + +# _LT_FILEUTILS_DEFAULTS +# ---------------------- +# It is okay to use these file commands and assume they have been set +# sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. +m4_defun([_LT_FILEUTILS_DEFAULTS], +[: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} +])# _LT_FILEUTILS_DEFAULTS + + +# _LT_SETUP +# --------- +m4_defun([_LT_SETUP], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl + +_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl +dnl +_LT_DECL([], [host_alias], [0], [The host system])dnl +_LT_DECL([], [host], [0])dnl +_LT_DECL([], [host_os], [0])dnl +dnl +_LT_DECL([], [build_alias], [0], [The build system])dnl +_LT_DECL([], [build], [0])dnl +_LT_DECL([], [build_os], [0])dnl +dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +dnl +AC_REQUIRE([AC_PROG_LN_S])dnl +test -z "$LN_S" && LN_S="ln -s" +_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl +dnl +AC_REQUIRE([LT_CMD_MAX_LEN])dnl +_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl +_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl +dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl +m4_require([_LT_CMD_RELOAD])dnl +m4_require([_LT_DECL_FILECMD])dnl +m4_require([_LT_CHECK_MAGIC_METHOD])dnl +m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl +m4_require([_LT_CMD_OLD_ARCHIVE])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_WITH_SYSROOT])dnl +m4_require([_LT_CMD_TRUNCATE])dnl + +_LT_CONFIG_LIBTOOL_INIT([ +# See if we are running on zsh, and set the options that allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi +]) +if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + +_LT_CHECK_OBJDIR + +m4_require([_LT_TAG_COMPILER])dnl + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a '.a' archive for static linking (except MSVC and +# ICC, which need '.lib'). +libext=a + +with_gnu_ld=$lt_cv_prog_gnu_ld + +old_CC=$CC +old_CFLAGS=$CFLAGS + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + _LT_PATH_MAGIC + fi + ;; +esac + +# Use C for the default configuration in the libtool script +LT_SUPPORTED_TAG([CC]) +_LT_LANG_C_CONFIG +_LT_LANG_DEFAULT_CONFIG +_LT_CONFIG_COMMANDS +])# _LT_SETUP + + +# _LT_PREPARE_SED_QUOTE_VARS +# -------------------------- +# Define a few sed substitution that help us do robust quoting. +m4_defun([_LT_PREPARE_SED_QUOTE_VARS], +[# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([["`\\]]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' +]) + +# _LT_PROG_LTMAIN +# --------------- +# Note that this code is called both from 'configure', and 'config.status' +# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, +# 'config.status' has no value for ac_aux_dir unless we are using Automake, +# so we pass a copy along to make sure it has a sensible value anyway. +m4_defun([_LT_PROG_LTMAIN], +[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl +_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) +ltmain=$ac_aux_dir/ltmain.sh +])# _LT_PROG_LTMAIN + + + +# So that we can recreate a full libtool script including additional +# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS +# in macros and then make a single call at the end using the 'libtool' +# label. + + +# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) +# ---------------------------------------- +# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL_INIT], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_INIT], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_INIT]) + + +# _LT_CONFIG_LIBTOOL([COMMANDS]) +# ------------------------------ +# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) + + +# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) +# ----------------------------------------------------- +m4_defun([_LT_CONFIG_SAVE_COMMANDS], +[_LT_CONFIG_LIBTOOL([$1]) +_LT_CONFIG_LIBTOOL_INIT([$2]) +]) + + +# _LT_FORMAT_COMMENT([COMMENT]) +# ----------------------------- +# Add leading comment marks to the start of each line, and a trailing +# full-stop to the whole comment if one is not present already. +m4_define([_LT_FORMAT_COMMENT], +[m4_ifval([$1], [ +m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], + [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) +)]) + + + + + +# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) +# ------------------------------------------------------------------- +# CONFIGNAME is the name given to the value in the libtool script. +# VARNAME is the (base) name used in the configure script. +# VALUE may be 0, 1 or 2 for a computed quote escaped value based on +# VARNAME. Any other value will be used directly. +m4_define([_LT_DECL], +[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], + [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], + [m4_ifval([$1], [$1], [$2])]) + lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) + m4_ifval([$4], + [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) + lt_dict_add_subkey([lt_decl_dict], [$2], + [tagged?], [m4_ifval([$5], [yes], [no])])]) +]) + + +# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) +# -------------------------------------------------------- +m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) + + +# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_tag_varnames], +[_lt_decl_filter([tagged?], [yes], $@)]) + + +# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) +# --------------------------------------------------------- +m4_define([_lt_decl_filter], +[m4_case([$#], + [0], [m4_fatal([$0: too few arguments: $#])], + [1], [m4_fatal([$0: too few arguments: $#: $1])], + [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], + [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], + [lt_dict_filter([lt_decl_dict], $@)])[]dnl +]) + + +# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) +# -------------------------------------------------- +m4_define([lt_decl_quote_varnames], +[_lt_decl_filter([value], [1], $@)]) + + +# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_dquote_varnames], +[_lt_decl_filter([value], [2], $@)]) + + +# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_varnames_tagged], +[m4_assert([$# <= 2])dnl +_$0(m4_quote(m4_default([$1], [[, ]])), + m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), + m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) +m4_define([_lt_decl_varnames_tagged], +[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) + + +# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_all_varnames], +[_$0(m4_quote(m4_default([$1], [[, ]])), + m4_if([$2], [], + m4_quote(lt_decl_varnames), + m4_quote(m4_shift($@))))[]dnl +]) +m4_define([_lt_decl_all_varnames], +[lt_join($@, lt_decl_varnames_tagged([$1], + lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl +]) + + +# _LT_CONFIG_STATUS_DECLARE([VARNAME]) +# ------------------------------------ +# Quote a variable value, and forward it to 'config.status' so that its +# declaration there will have the same value as in 'configure'. VARNAME +# must have a single quote delimited value for this to work. +m4_define([_LT_CONFIG_STATUS_DECLARE], +[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) + + +# _LT_CONFIG_STATUS_DECLARATIONS +# ------------------------------ +# We delimit libtool config variables with single quotes, so when +# we write them to config.status, we have to be sure to quote all +# embedded single quotes properly. In configure, this macro expands +# each variable declared with _LT_DECL (and _LT_TAGDECL) into: +# +# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' +m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], +[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), + [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAGS +# ---------------- +# Output comment and list of tags supported by the script +m4_defun([_LT_LIBTOOL_TAGS], +[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl +available_tags='_LT_TAGS'dnl +]) + + +# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) +# ----------------------------------- +# Extract the dictionary values for VARNAME (optionally with TAG) and +# expand to a commented shell variable setting: +# +# # Some comment about what VAR is for. +# visible_name=$lt_internal_name +m4_define([_LT_LIBTOOL_DECLARE], +[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], + [description])))[]dnl +m4_pushdef([_libtool_name], + m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl +m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), + [0], [_libtool_name=[$]$1], + [1], [_libtool_name=$lt_[]$1], + [2], [_libtool_name=$lt_[]$1], + [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl +m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl +]) + + +# _LT_LIBTOOL_CONFIG_VARS +# ----------------------- +# Produce commented declarations of non-tagged libtool config variables +# suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' +# script. Tagged libtool config variables (even for the LIBTOOL CONFIG +# section) are produced by _LT_LIBTOOL_TAG_VARS. +m4_defun([_LT_LIBTOOL_CONFIG_VARS], +[m4_foreach([_lt_var], + m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAG_VARS(TAG) +# ------------------------- +m4_define([_LT_LIBTOOL_TAG_VARS], +[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) + + +# _LT_TAGVAR(VARNAME, [TAGNAME]) +# ------------------------------ +m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) + + +# _LT_CONFIG_COMMANDS +# ------------------- +# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of +# variables for single and double quote escaping we saved from calls +# to _LT_DECL, we can put quote escaped variables declarations +# into 'config.status', and then the shell code to quote escape them in +# for loops in 'config.status'. Finally, any additional code accumulated +# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. +m4_defun([_LT_CONFIG_COMMANDS], +[AC_PROVIDE_IFELSE([LT_OUTPUT], + dnl If the libtool generation code has been placed in $CONFIG_LT, + dnl instead of duplicating it all over again into config.status, + dnl then we will have config.status run $CONFIG_LT later, so it + dnl needs to know what name is stored there: + [AC_CONFIG_COMMANDS([libtool], + [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], + dnl If the libtool generation code is destined for config.status, + dnl expand the accumulated commands and init code now: + [AC_CONFIG_COMMANDS([libtool], + [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) +])#_LT_CONFIG_COMMANDS + + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], +[ + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +_LT_CONFIG_STATUS_DECLARATIONS +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$[]1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_quote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_dquote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +_LT_OUTPUT_LIBTOOL_INIT +]) + +# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) +# ------------------------------------ +# Generate a child script FILE with all initialization necessary to +# reuse the environment learned by the parent script, and make the +# file executable. If COMMENT is supplied, it is inserted after the +# '#!' sequence but before initialization text begins. After this +# macro, additional text can be appended to FILE to form the body of +# the child script. The macro ends with non-zero status if the +# file could not be fully written (such as if the disk is full). +m4_ifdef([AS_INIT_GENERATED], +[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], +[m4_defun([_LT_GENERATED_FILE_INIT], +[m4_require([AS_PREPARE])]dnl +[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl +[lt_write_fail=0 +cat >$1 <<_ASEOF || lt_write_fail=1 +#! $SHELL +# Generated by $as_me. +$2 +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$1 <<\_ASEOF || lt_write_fail=1 +AS_SHELL_SANITIZE +_AS_PREPARE +exec AS_MESSAGE_FD>&1 +_ASEOF +test 0 = "$lt_write_fail" && chmod +x $1[]dnl +m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT + +# LT_OUTPUT +# --------- +# This macro allows early generation of the libtool script (before +# AC_OUTPUT is called), incase it is used in configure for compilation +# tests. +AC_DEFUN([LT_OUTPUT], +[: ${CONFIG_LT=./config.lt} +AC_MSG_NOTICE([creating $CONFIG_LT]) +_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], +[# Run this file to recreate a libtool stub with the current configuration.]) + +cat >>"$CONFIG_LT" <<\_LTEOF +lt_cl_silent=false +exec AS_MESSAGE_LOG_FD>>config.log +{ + echo + AS_BOX([Running $as_me.]) +} >&AS_MESSAGE_LOG_FD + +lt_cl_help="\ +'$as_me' creates a local libtool stub from the current configuration, +for use in further configure time tests before the real libtool is +generated. + +Usage: $[0] [[OPTIONS]] + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + +Report bugs to ." + +lt_cl_version="\ +m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl +m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) +configured by $[0], generated by m4_PACKAGE_STRING. + +Copyright (C) 2011 Free Software Foundation, Inc. +This config.lt script is free software; the Free Software Foundation +gives unlimited permision to copy, distribute and modify it." + +while test 0 != $[#] +do + case $[1] in + --version | --v* | -V ) + echo "$lt_cl_version"; exit 0 ;; + --help | --h* | -h ) + echo "$lt_cl_help"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --quiet | --q* | --silent | --s* | -q ) + lt_cl_silent=: ;; + + -*) AC_MSG_ERROR([unrecognized option: $[1] +Try '$[0] --help' for more information.]) ;; + + *) AC_MSG_ERROR([unrecognized argument: $[1] +Try '$[0] --help' for more information.]) ;; + esac + shift +done + +if $lt_cl_silent; then + exec AS_MESSAGE_FD>/dev/null +fi +_LTEOF + +cat >>"$CONFIG_LT" <<_LTEOF +_LT_OUTPUT_LIBTOOL_COMMANDS_INIT +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AC_MSG_NOTICE([creating $ofile]) +_LT_OUTPUT_LIBTOOL_COMMANDS +AS_EXIT(0) +_LTEOF +chmod +x "$CONFIG_LT" + +# configure is writing to config.log, but config.lt does its own redirection, +# appending to config.log, which fails on DOS, as config.log is still kept +# open by configure. Here we exec the FD to /dev/null, effectively closing +# config.log, so it can be properly (re)opened and appended to by config.lt. +lt_cl_success=: +test yes = "$silent" && + lt_config_lt_args="$lt_config_lt_args --quiet" +exec AS_MESSAGE_LOG_FD>/dev/null +$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +exec AS_MESSAGE_LOG_FD>>config.log +$lt_cl_success || AS_EXIT(1) +])# LT_OUTPUT + + +# _LT_CONFIG(TAG) +# --------------- +# If TAG is the built-in tag, create an initial libtool script with a +# default configuration from the untagged config vars. Otherwise add code +# to config.status for appending the configuration named by TAG from the +# matching tagged config vars. +m4_defun([_LT_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_CONFIG_SAVE_COMMANDS([ + m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl + m4_if(_LT_TAG, [C], [ + # See if we are running on zsh, and set the options that allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST + fi + + cfgfile=${ofile}T + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL +# Generated automatically by $as_me ($PACKAGE) $VERSION +# NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +_LT_COPYING +_LT_LIBTOOL_TAGS + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + +# ### BEGIN LIBTOOL CONFIG +_LT_LIBTOOL_CONFIG_VARS +_LT_LIBTOOL_TAG_VARS +# ### END LIBTOOL CONFIG + +_LT_EOF + + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +_LT_PREPARE_MUNGE_PATH_LIST +_LT_PREPARE_CC_BASENAME + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + _LT_PROG_LTMAIN + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + $SED '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +], +[cat <<_LT_EOF >> "$ofile" + +dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded +dnl in a comment (ie after a #). +# ### BEGIN LIBTOOL TAG CONFIG: $1 +_LT_LIBTOOL_TAG_VARS(_LT_TAG) +# ### END LIBTOOL TAG CONFIG: $1 +_LT_EOF +])dnl /m4_if +], +[m4_if([$1], [], [ + PACKAGE='$PACKAGE' + VERSION='$VERSION' + RM='$RM' + ofile='$ofile'], []) +])dnl /_LT_CONFIG_SAVE_COMMANDS +])# _LT_CONFIG + + +# LT_SUPPORTED_TAG(TAG) +# --------------------- +# Trace this macro to discover what tags are supported by the libtool +# --tag option, using: +# autoconf --trace 'LT_SUPPORTED_TAG:$1' +AC_DEFUN([LT_SUPPORTED_TAG], []) + + +# C support is built-in for now +m4_define([_LT_LANG_C_enabled], []) +m4_define([_LT_TAGS], []) + + +# LT_LANG(LANG) +# ------------- +# Enable libtool support for the given language if not already enabled. +AC_DEFUN([LT_LANG], +[AC_BEFORE([$0], [LT_OUTPUT])dnl +m4_case([$1], + [C], [_LT_LANG(C)], + [C++], [_LT_LANG(CXX)], + [Go], [_LT_LANG(GO)], + [Java], [_LT_LANG(GCJ)], + [Fortran 77], [_LT_LANG(F77)], + [Fortran], [_LT_LANG(FC)], + [Windows Resource], [_LT_LANG(RC)], + [m4_ifdef([_LT_LANG_]$1[_CONFIG], + [_LT_LANG($1)], + [m4_fatal([$0: unsupported language: "$1"])])])dnl +])# LT_LANG + + +# _LT_LANG(LANGNAME) +# ------------------ +m4_defun([_LT_LANG], +[m4_ifdef([_LT_LANG_]$1[_enabled], [], + [LT_SUPPORTED_TAG([$1])dnl + m4_append([_LT_TAGS], [$1 ])dnl + m4_define([_LT_LANG_]$1[_enabled], [])dnl + _LT_LANG_$1_CONFIG($1)])dnl +])# _LT_LANG + + +m4_ifndef([AC_PROG_GO], [ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_GO. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +m4_defun([AC_PROG_GO], +[AC_LANG_PUSH(Go)dnl +AC_ARG_VAR([GOC], [Go compiler command])dnl +AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl +_AC_ARG_VAR_LDFLAGS()dnl +AC_CHECK_TOOL(GOC, gccgo) +if test -z "$GOC"; then + if test -n "$ac_tool_prefix"; then + AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) + fi +fi +if test -z "$GOC"; then + AC_CHECK_PROG(GOC, gccgo, gccgo, false) +fi +])#m4_defun +])#m4_ifndef + + +# _LT_LANG_DEFAULT_CONFIG +# ----------------------- +m4_defun([_LT_LANG_DEFAULT_CONFIG], +[AC_PROVIDE_IFELSE([AC_PROG_CXX], + [LT_LANG(CXX)], + [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) + +AC_PROVIDE_IFELSE([AC_PROG_F77], + [LT_LANG(F77)], + [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) + +AC_PROVIDE_IFELSE([AC_PROG_FC], + [LT_LANG(FC)], + [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) + +dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal +dnl pulling things in needlessly. +AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([LT_PROG_GCJ], + [LT_LANG(GCJ)], + [m4_ifdef([AC_PROG_GCJ], + [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([A][M_PROG_GCJ], + [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([LT_PROG_GCJ], + [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) + +AC_PROVIDE_IFELSE([AC_PROG_GO], + [LT_LANG(GO)], + [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) + +AC_PROVIDE_IFELSE([LT_PROG_RC], + [LT_LANG(RC)], + [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) +])# _LT_LANG_DEFAULT_CONFIG + +# Obsolete macros: +AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) +AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) +AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) +AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_CXX], []) +dnl AC_DEFUN([AC_LIBTOOL_F77], []) +dnl AC_DEFUN([AC_LIBTOOL_FC], []) +dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) +dnl AC_DEFUN([AC_LIBTOOL_RC], []) + + +# _LT_TAG_COMPILER +# ---------------- +m4_defun([_LT_TAG_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl +_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl +_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl +_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_TAG_COMPILER + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +m4_defun([_LT_COMPILER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +m4_defun([_LT_LINKER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* +])# _LT_LINKER_BOILERPLATE + +# _LT_REQUIRED_DARWIN_CHECKS +# ------------------------- +m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ + case $host_os in + rhapsody* | darwin*) + AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) + AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) + AC_CHECK_TOOL([LIPO], [lipo], [:]) + AC_CHECK_TOOL([OTOOL], [otool], [:]) + AC_CHECK_TOOL([OTOOL64], [otool64], [:]) + _LT_DECL([], [DSYMUTIL], [1], + [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) + _LT_DECL([], [NMEDIT], [1], + [Tool to change global to local symbols on Mac OS X]) + _LT_DECL([], [LIPO], [1], + [Tool to manipulate fat objects and archives on Mac OS X]) + _LT_DECL([], [OTOOL], [1], + [ldd/readelf like tool for Mach-O binaries on Mac OS X]) + _LT_DECL([], [OTOOL64], [1], + [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) + + AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], + [lt_cv_apple_cc_single_mod=no + if test -z "$LT_MULTI_MODULE"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test 0 = "$_lt_result"; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi]) + + AC_CACHE_CHECK([for -exported_symbols_list linker flag], + [lt_cv_ld_exported_symbols_list], + [lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [lt_cv_ld_exported_symbols_list=yes], + [lt_cv_ld_exported_symbols_list=no]) + LDFLAGS=$save_LDFLAGS + ]) + + AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], + [lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD + echo "$AR $AR_FLAGS libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD + $AR $AR_FLAGS libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD + $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + ]) + case $host_os in + rhapsody* | darwin1.[[012]]) + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + darwin*) + case $MACOSX_DEPLOYMENT_TARGET,$host in + 10.[[012]],*|,*powerpc*-darwin[[5-8]]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + *) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test yes = "$lt_cv_apple_cc_single_mod"; then + _lt_dar_single_mod='$single_module' + fi + if test yes = "$lt_cv_ld_exported_symbols_list"; then + _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' + fi + if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac +]) + + +# _LT_DARWIN_LINKER_FEATURES([TAG]) +# --------------------------------- +# Checks for linker and compiler features on darwin +m4_defun([_LT_DARWIN_LINKER_FEATURES], +[ + m4_require([_LT_REQUIRED_DARWIN_CHECKS]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_automatic, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + if test yes = "$lt_cv_ld_force_load"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], + [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='' + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + _LT_TAGVAR(module_expsym_cmds, $1)="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + m4_if([$1], [CXX], +[ if test yes != "$lt_cv_apple_cc_single_mod"; then + _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" + fi +],[]) + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi +]) + +# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) +# ---------------------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +# Store the results from the different compilers for each TAGNAME. +# Allow to override them for all tags through lt_cv_aix_libpath. +m4_defun([_LT_SYS_MODULE_PATH_AIX], +[m4_require([_LT_DECL_SED])dnl +if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], + [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ + lt_aix_libpath_sed='[ + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }]' + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi],[]) + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib + fi + ]) + aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) +fi +])# _LT_SYS_MODULE_PATH_AIX + + +# _LT_SHELL_INIT(ARG) +# ------------------- +m4_define([_LT_SHELL_INIT], +[m4_divert_text([M4SH-INIT], [$1 +])])# _LT_SHELL_INIT + + + +# _LT_PROG_ECHO_BACKSLASH +# ----------------------- +# Find how we can fake an echo command that does not interpret backslash. +# In particular, with Autoconf 2.60 or later we add some code to the start +# of the generated configure script that will find a shell with a builtin +# printf (that we can use as an echo command). +m4_defun([_LT_PROG_ECHO_BACKSLASH], +[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +AC_MSG_CHECKING([how to print strings]) +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$[]1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + +case $ECHO in + printf*) AC_MSG_RESULT([printf]) ;; + print*) AC_MSG_RESULT([print -r]) ;; + *) AC_MSG_RESULT([cat]) ;; +esac + +m4_ifdef([_AS_DETECT_SUGGESTED], +[_AS_DETECT_SUGGESTED([ + test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test "X`printf %s $ECHO`" = "X$ECHO" \ + || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) + +_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) +_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) +])# _LT_PROG_ECHO_BACKSLASH + + +# _LT_WITH_SYSROOT +# ---------------- +AC_DEFUN([_LT_WITH_SYSROOT], +[m4_require([_LT_DECL_SED])dnl +AC_MSG_CHECKING([for sysroot]) +AC_ARG_WITH([sysroot], +[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], + [Search for dependent libraries within DIR (or the compiler's sysroot + if not specified).])], +[], [with_sysroot=no]) + +dnl lt_sysroot will always be passed unquoted. We quote it here +dnl in case the user passed a directory name. +lt_sysroot= +case $with_sysroot in #( + yes) + if test yes = "$GCC"; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | $SED -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + AC_MSG_RESULT([$with_sysroot]) + AC_MSG_ERROR([The sysroot must be an absolute path.]) + ;; +esac + + AC_MSG_RESULT([${lt_sysroot:-no}]) +_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl +[dependent libraries, and where our libraries should be installed.])]) + +# _LT_ENABLE_LOCK +# --------------- +m4_defun([_LT_ENABLE_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AS_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test no = "$enable_libtool_lock" || enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out what ABI is being produced by ac_compile, and set mode + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `$FILECMD conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE=32 + ;; + *ELF-64*) + HPUX_IA64_MODE=64 + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test yes = "$lt_cv_prog_gnu_ld"; then + case `$FILECMD conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `$FILECMD conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +mips64*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + emul=elf + case `$FILECMD conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; + *64-bit*) + emul="${emul}64" + ;; + esac + case `$FILECMD conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; + *LSB*) + emul="${emul}ltsmip" + ;; + esac + case `$FILECMD conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; + esac + LD="${LD-ld} -m $emul" + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. Note that the listed cases only cover the + # situations where additional linker options are needed (such as when + # doing 32-bit compilation for a host where ld defaults to 64-bit, or + # vice versa); the common cases where no linker options are needed do + # not appear in the list. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `$FILECMD conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + case `$FILECMD conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac + ;; + powerpc64le-*linux*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*linux*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test yes != "$lt_cv_cc_needs_belf"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS=$SAVE_CFLAGS + fi + ;; +*-*solaris*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `$FILECMD conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*|x86_64-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD=${LD-ld}_sol2 + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks=$enable_libtool_lock +])# _LT_ENABLE_LOCK + + +# _LT_PROG_AR +# ----------- +m4_defun([_LT_PROG_AR], +[AC_CHECK_TOOLS(AR, [ar], false) +: ${AR=ar} +_LT_DECL([], [AR], [1], [The archiver]) + +# Use ARFLAGS variable as AR's operation code to sync the variable naming with +# Automake. If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have +# higher priority because thats what people were doing historically (setting +# ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS +# variable obsoleted/removed. + +test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr} +lt_ar_flags=$AR_FLAGS +_LT_DECL([], [lt_ar_flags], [0], [Flags to create an archive (by configure)]) + +# Make AR_FLAGS overridable by 'make ARFLAGS='. Don't try to run-time override +# by AR_FLAGS because that was never working and AR_FLAGS is about to die. +_LT_DECL([], [AR_FLAGS], [\@S|@{ARFLAGS-"\@S|@lt_ar_flags"}], + [Flags to create an archive]) + +AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], + [lt_cv_ar_at_file=no + AC_COMPILE_IFELSE([AC_LANG_PROGRAM], + [echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([lt_ar_try]) + if test 0 -eq "$ac_status"; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + AC_TRY_EVAL([lt_ar_try]) + if test 0 -ne "$ac_status"; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + ]) + ]) + +if test no = "$lt_cv_ar_at_file"; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi +_LT_DECL([], [archiver_list_spec], [1], + [How to feed a file listing to the archiver]) +])# _LT_PROG_AR + + +# _LT_CMD_OLD_ARCHIVE +# ------------------- +m4_defun([_LT_CMD_OLD_ARCHIVE], +[_LT_PROG_AR + +AC_CHECK_TOOL(STRIP, strip, :) +test -z "$STRIP" && STRIP=: +_LT_DECL([], [STRIP], [1], [A symbol stripping program]) + +AC_CHECK_TOOL(RANLIB, ranlib, :) +test -z "$RANLIB" && RANLIB=: +_LT_DECL([], [RANLIB], [1], + [Commands used to install an old-style archive]) + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + bitrig* | openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac +_LT_DECL([], [old_postinstall_cmds], [2]) +_LT_DECL([], [old_postuninstall_cmds], [2]) +_LT_TAGDECL([], [old_archive_cmds], [2], + [Commands used to build an old-style archive]) +_LT_DECL([], [lock_old_archive_extraction], [0], + [Whether to use a lock for old archive extraction]) +])# _LT_CMD_OLD_ARCHIVE + + +# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([_LT_COMPILER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $RM conftest* +]) + +if test yes = "[$]$2"; then + m4_if([$5], , :, [$5]) +else + m4_if([$6], , :, [$6]) +fi +])# _LT_COMPILER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) + + +# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------- +# Check whether the given linker option works +AC_DEFUN([_LT_LINKER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $3" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS +]) + +if test yes = "[$]$2"; then + m4_if([$4], , :, [$4]) +else + m4_if([$5], , :, [$5]) +fi +])# _LT_LINKER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) + + +# LT_CMD_MAX_LEN +#--------------- +AC_DEFUN([LT_CMD_MAX_LEN], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring=ABCD + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + bitrig* | darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | $SED 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test X`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test 17 != "$i" # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac +]) +if test -n "$lt_cv_sys_max_cmd_len"; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +max_cmd_len=$lt_cv_sys_max_cmd_len +_LT_DECL([], [max_cmd_len], [0], + [What is the maximum length of a command?]) +])# LT_CMD_MAX_LEN + +# Old name: +AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) + + +# _LT_HEADER_DLFCN +# ---------------- +m4_defun([_LT_HEADER_DLFCN], +[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl +])# _LT_HEADER_DLFCN + + +# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ---------------------------------------------------------------- +m4_defun([_LT_TRY_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test yes = "$cross_compiling"; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +[#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +}] +_LT_EOF + if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_TRY_DLOPEN_SELF + + +# LT_SYS_DLOPEN_SELF +# ------------------ +AC_DEFUN([LT_SYS_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test yes != "$enable_dlopen"; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen=load_add_on + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen=LoadLibrary + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ + lt_cv_dlopen=dyld + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + tpf*) + # Don't try to run any link tests for TPF. We know it's impossible + # because TPF is a cross-compiler, and we know how we open DSOs. + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + lt_cv_dlopen_self=no + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen=shl_load], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen=dlopen], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test no = "$lt_cv_dlopen"; then + enable_dlopen=no + else + enable_dlopen=yes + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS=$CPPFLAGS + test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS=$LDFLAGS + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS=$LIBS + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test yes = "$lt_cv_dlopen_self"; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +_LT_DECL([dlopen_support], [enable_dlopen], [0], + [Whether dlopen is supported]) +_LT_DECL([dlopen_self], [enable_dlopen_self], [0], + [Whether dlopen of programs is supported]) +_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], + [Whether dlopen of statically linked programs is supported]) +])# LT_SYS_DLOPEN_SELF + +# Old name: +AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) + + +# _LT_COMPILER_C_O([TAGNAME]) +# --------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler. +# This macro does not hard code the compiler like AC_PROG_CC_C_O. +m4_defun([_LT_COMPILER_C_O], +[m4_require([_LT_DECL_SED])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* +]) +_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], + [Does compiler simultaneously support -c and -o options?]) +])# _LT_COMPILER_C_O + + +# _LT_COMPILER_FILE_LOCKS([TAGNAME]) +# ---------------------------------- +# Check to see if we can do hard links to lock some files if needed +m4_defun([_LT_COMPILER_FILE_LOCKS], +[m4_require([_LT_ENABLE_LOCK])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_COMPILER_C_O([$1]) + +hard_links=nottested +if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test no = "$hard_links"; then + AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) +])# _LT_COMPILER_FILE_LOCKS + + +# _LT_CHECK_OBJDIR +# ---------------- +m4_defun([_LT_CHECK_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +_LT_DECL([], [objdir], [0], + [The name of the directory that contains temporary libtool files])dnl +m4_pattern_allow([LT_OBJDIR])dnl +AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/", + [Define to the sub-directory where libtool stores uninstalled libraries.]) +])# _LT_CHECK_OBJDIR + + +# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) +# -------------------------------------- +# Check hardcoding attributes. +m4_defun([_LT_LINKER_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || + test -n "$_LT_TAGVAR(runpath_var, $1)" || + test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then + + # We can hardcode non-existent directories. + if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" && + test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then + # Linking always hardcodes the temporary library directory. + _LT_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) + +if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || + test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi +_LT_TAGDECL([], [hardcode_action], [0], + [How to hardcode a shared library path into an executable]) +])# _LT_LINKER_HARDCODE_LIBPATH + + +# _LT_CMD_STRIPLIB +# ---------------- +m4_defun([_LT_CMD_STRIPLIB], +[m4_require([_LT_DECL_EGREP]) +striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -z "$STRIP"; then + AC_MSG_RESULT([no]) +else + if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + old_striplib="$STRIP --strip-debug" + striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) + else + case $host_os in + darwin*) + # FIXME - insert some real tests, host_os isn't really good enough + striplib="$STRIP -x" + old_striplib="$STRIP -S" + AC_MSG_RESULT([yes]) + ;; + freebsd*) + if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then + old_striplib="$STRIP --strip-debug" + striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac + fi +fi +_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) +_LT_DECL([], [striplib], [1]) +])# _LT_CMD_STRIPLIB + + +# _LT_PREPARE_MUNGE_PATH_LIST +# --------------------------- +# Make sure func_munge_path_list() is defined correctly. +m4_defun([_LT_PREPARE_MUNGE_PATH_LIST], +[[# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x@S|@2 in + x) + ;; + *:) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" + ;; + x:*) + eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" + ;; + *) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + esac +} +]])# _LT_PREPARE_PATH_LIST + + +# _LT_SYS_DYNAMIC_LINKER([TAG]) +# ----------------------------- +# PORTME Fill in your ld.so characteristics +m4_defun([_LT_SYS_DYNAMIC_LINKER], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_OBJDUMP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl +AC_MSG_CHECKING([dynamic linker characteristics]) +m4_if([$1], + [], [ +if test yes = "$GCC"; then + case $host_os in + darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; + *) lt_awk_arg='/^libraries:/' ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; + *) lt_sed_strip_eq='s|=/|/|g' ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary... + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + # ...but if some path component already ends with the multilib dir we assume + # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). + case "$lt_multi_os_dir; $lt_search_path_spec " in + "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) + lt_multi_os_dir= + ;; + esac + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" + elif test -n "$lt_multi_os_dir"; then + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS = " "; FS = "/|\n";} { + lt_foo = ""; + lt_count = 0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo = "/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[[lt_foo]]++; } + if (lt_freq[[lt_foo]] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +AC_ARG_VAR([LT_SYS_LIBRARY_PATH], +[User-defined run-time library search path.]) + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[[4-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a[(]lib.so.V[)]' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | $SED -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | $SED -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl* | *,icl*) + # Native MSVC or ICC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC and ICC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly* | midnightbsd*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[23]].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[[3-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], + [lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ + LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], + [lt_cv_shlibpath_overrides_runpath=yes])]) + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + ]) + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd* | bitrig*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + +_LT_DECL([], [variables_saved_for_relink], [1], + [Variables whose values should be saved in libtool wrapper scripts and + restored at link time]) +_LT_DECL([], [need_lib_prefix], [0], + [Do we need the "lib" prefix for modules?]) +_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) +_LT_DECL([], [version_type], [0], [Library versioning type]) +_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) +_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) +_LT_DECL([], [shlibpath_overrides_runpath], [0], + [Is shlibpath searched before the hard-coded library search path?]) +_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) +_LT_DECL([], [library_names_spec], [1], + [[List of archive names. First name is the real one, the rest are links. + The last name is the one that the linker finds with -lNAME]]) +_LT_DECL([], [soname_spec], [1], + [[The coded name of the library, if different from the real name]]) +_LT_DECL([], [install_override_mode], [1], + [Permission mode override for installation of shared libraries]) +_LT_DECL([], [postinstall_cmds], [2], + [Command to use after installation of a shared archive]) +_LT_DECL([], [postuninstall_cmds], [2], + [Command to use after uninstallation of a shared archive]) +_LT_DECL([], [finish_cmds], [2], + [Commands used to finish a libtool library installation in a directory]) +_LT_DECL([], [finish_eval], [1], + [[As "finish_cmds", except a single script fragment to be evaled but + not shown]]) +_LT_DECL([], [hardcode_into_libs], [0], + [Whether we should hardcode library paths into libraries]) +_LT_DECL([], [sys_lib_search_path_spec], [2], + [Compile-time system search path for libraries]) +_LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2], + [Detected run-time system search path for libraries]) +_LT_DECL([], [configure_time_lt_sys_library_path], [2], + [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) +])# _LT_SYS_DYNAMIC_LINKER + + +# _LT_PATH_TOOL_PREFIX(TOOL) +# -------------------------- +# find a file program that can recognize shared library +AC_DEFUN([_LT_PATH_TOOL_PREFIX], +[m4_require([_LT_DECL_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="m4_if([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$1"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac]) +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +_LT_DECL([], [MAGIC_CMD], [0], + [Used to examine libraries when file_magic_cmd begins with "file"])dnl +])# _LT_PATH_TOOL_PREFIX + +# Old name: +AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) + + +# _LT_PATH_MAGIC +# -------------- +# find a file program that can recognize a shared library +m4_defun([_LT_PATH_MAGIC], +[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# _LT_PATH_MAGIC + + +# LT_PATH_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([LT_PATH_LD], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PROG_ECHO_BACKSLASH])dnl + +AC_ARG_WITH([gnu-ld], + [AS_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test no = "$withval" || with_gnu_ld=yes], + [with_gnu_ld=no])dnl + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd], +[if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi]) +rm -f conftest.i conftest2.i conftest.out]) +])# _LT_PATH_DD + + +# _LT_CMD_TRUNCATE +# ---------------- +# find command to truncate a binary pipe +m4_defun([_LT_CMD_TRUNCATE], +[m4_require([_LT_PATH_DD]) +AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin], +[printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"]) +_LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1], + [Command to truncate a binary pipe]) +])# _LT_CMD_TRUNCATE + + +# _LT_CHECK_MAGIC_METHOD +# ---------------------- +# how to check for library dependencies +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_MAGIC_METHOD], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +AC_CACHE_CHECK([how to recognize dependent libraries], +lt_cv_deplibs_check_method, +[lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# 'unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# that responds to the $file_magic_cmd with a given extended regex. +# If you have 'file' or equivalent on your system and you're not sure +# whether 'pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[[4-9]]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[[45]]*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='$FILECMD -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly* | midnightbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=$FILECMD + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=$FILECMD + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[[3-9]]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=$FILECMD + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd* | bitrig*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +_LT_DECL([], [deplibs_check_method], [1], + [Method to check whether dependent libraries are shared objects]) +_LT_DECL([], [file_magic_cmd], [1], + [Command to use when deplibs_check_method = "file_magic"]) +_LT_DECL([], [file_magic_glob], [1], + [How to find potential files when deplibs_check_method = "file_magic"]) +_LT_DECL([], [want_nocaseglob], [1], + [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) +])# _LT_CHECK_MAGIC_METHOD + + +# LT_PATH_NM +# ---------- +# find the pathname to a BSD- or MS-compatible name lister +AC_DEFUN([LT_PATH_NM], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM=$NM +else + lt_nm_to_check=${ac_tool_prefix}nm + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/$lt_tmp_nm + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the 'sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | $SED '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break 2 + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | $SED '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break 2 + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS=$lt_save_ifs + done + : ${lt_cv_path_NM=no} +fi]) +if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | $SED '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols -headers" + ;; + *) + DUMPBIN=: + ;; + esac + fi + AC_SUBST([DUMPBIN]) + if test : != "$DUMPBIN"; then + NM=$DUMPBIN + fi +fi +test -z "$NM" && NM=nm +AC_SUBST([NM]) +_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl + +AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], + [lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) + cat conftest.out >&AS_MESSAGE_LOG_FD + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest*]) +])# LT_PATH_NM + +# Old names: +AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) +AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_PROG_NM], []) +dnl AC_DEFUN([AC_PROG_NM], []) + +# _LT_CHECK_SHAREDLIB_FROM_LINKLIB +# -------------------------------- +# how to determine the name of the shared library +# associated with a specific link library. +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +m4_require([_LT_DECL_DLLTOOL]) +AC_CACHE_CHECK([how to associate runtime and link libraries], +lt_cv_sharedlib_from_linklib_cmd, +[lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh; + # decide which one to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd=$ECHO + ;; +esac +]) +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + +_LT_DECL([], [sharedlib_from_linklib_cmd], [1], + [Command to associate shared and link libraries]) +])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB + + +# _LT_PATH_MANIFEST_TOOL +# ---------------------- +# locate the manifest tool +m4_defun([_LT_PATH_MANIFEST_TOOL], +[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], + [lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&AS_MESSAGE_LOG_FD + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest*]) +if test yes != "$lt_cv_path_mainfest_tool"; then + MANIFEST_TOOL=: +fi +_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl +])# _LT_PATH_MANIFEST_TOOL + + +# _LT_DLL_DEF_P([FILE]) +# --------------------- +# True iff FILE is a Windows DLL '.def' file. +# Keep in sync with func_dll_def_p in the libtool script +AC_DEFUN([_LT_DLL_DEF_P], +[dnl + test DEF = "`$SED -n dnl + -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace + -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments + -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl + -e q dnl Only consider the first "real" line + $1`" dnl +])# _LT_DLL_DEF_P + + +# LT_LIB_M +# -------- +# check for math library +AC_DEFUN([LT_LIB_M], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM=-lm) + ;; +esac +AC_SUBST([LIBM]) +])# LT_LIB_M + +# Old name: +AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_CHECK_LIBM], []) + + +# _LT_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------- +m4_defun([_LT_COMPILER_NO_RTTI], +[m4_require([_LT_TAG_COMPILER])dnl + +_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test yes = "$GCC"; then + case $cc_basename in + nvcc*) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; + *) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; + esac + + _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], + [Compiler flag to turn off builtin functions]) +])# _LT_COMPILER_NO_RTTI + + +# _LT_CMD_GLOBAL_SYMBOLS +# ---------------------- +m4_defun([_LT_CMD_GLOBAL_SYMBOLS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([LT_PATH_NM])dnl +AC_REQUIRE([LT_PATH_LD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_TAG_COMPILER])dnl + +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) + if test ia64 = "$host_cpu"; then + symcode='[[ABCDEGRST]]' + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. + lt_cv_sys_global_symbol_to_import="$SED -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" + lt_c_name_lib_hook="\ + -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ + -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" +else + # Disable hooks by default. + lt_cv_sys_global_symbol_to_import= + lt_cdecl_hook= + lt_c_name_hook= + lt_c_name_lib_hook= +fi + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="$SED -n"\ +$lt_cdecl_hook\ +" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="$SED -n"\ +$lt_c_name_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + +# Transform an extracted symbol line into symbol name with lib prefix and +# symbol address. +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="$SED -n"\ +$lt_c_name_lib_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function, + # D for any global variable and I for any imported variable. + # Also find C++ and __fastcall symbols from MSVC++ or ICC, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK ['"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ +" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ +" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ +" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ +" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx]" + else + lt_cv_sys_global_symbol_pipe="$SED -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | $SED '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + nlist=conftest.nm + $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&AS_MESSAGE_LOG_FD + if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&AS_MESSAGE_LOG_FD && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT@&t@_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT@&t@_DLSYM_CONST +#else +# define LT@&t@_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT@&t@_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[[]] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS=conftstm.$ac_objext + CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test yes = "$pipe_works"; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + +_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], + [Take the output of nm and produce a listing of raw symbols and C names]) +_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], + [Transform the output of nm in a proper C declaration]) +_LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1], + [Transform the output of nm into a list of symbols to manually relocate]) +_LT_DECL([global_symbol_to_c_name_address], + [lt_cv_sys_global_symbol_to_c_name_address], [1], + [Transform the output of nm in a C name address pair]) +_LT_DECL([global_symbol_to_c_name_address_lib_prefix], + [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], + [Transform the output of nm in a C name address pair when lib prefix is needed]) +_LT_DECL([nm_interface], [lt_cv_nm_interface], [1], + [The name lister interface]) +_LT_DECL([], [nm_file_list_spec], [1], + [Specify filename containing input files for $NM]) +]) # _LT_CMD_GLOBAL_SYMBOLS + + +# _LT_COMPILER_PIC([TAGNAME]) +# --------------------------- +m4_defun([_LT_COMPILER_PIC], +[m4_require([_LT_TAG_COMPILER])dnl +_LT_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_TAGVAR(lt_prog_compiler_static, $1)= + +m4_if([$1], [CXX], [ + # C++ specific cases for pic, static, wl, etc. + if test yes = "$GXX"; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix[[4-9]]*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly* | midnightbsd*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + if test ia64 != "$host_cpu"; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64, which still supported -KPIC. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | $SED 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test yes = "$GCC"; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' + if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + + hpux9* | hpux10* | hpux11*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + # old Intel for x86_64, which still supported -KPIC. + ecc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # flang / f18. f95 an alias for gfortran or flang on Debian + flang* | f18* | f95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' + _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' + ;; + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | $SED 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='' + ;; + *Sun\ F* | *Sun*Fortran*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + *Intel*\ [[CF]]*Compiler*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + *Portland\ Group*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + rdos*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + solaris*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" + ;; +esac + +AC_CACHE_CHECK([for $compiler option to produce PIC], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) +_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], + [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], + [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], + [Additional compiler flags for building library objects]) + +_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], + [How to pass a linker flag through the compiler]) +# +# Check to make sure the static flag actually works. +# +wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" +_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) +_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], + [Compiler flag to prevent dynamic linking]) +])# _LT_COMPILER_PIC + + +# _LT_LINKER_SHLIBS([TAGNAME]) +# ---------------------------- +# See if the linker supports building shared libraries. +m4_defun([_LT_LINKER_SHLIBS], +[AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +m4_if([$1], [CXX], [ + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + case $host_os in + aix[[4-9]]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl* | icl*) + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + ;; + esac + ;; + linux* | k*bsd*-gnu | gnu*) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +], [ + runpath_var= + _LT_TAGVAR(allow_undefined_flag, $1)= + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(archive_cmds, $1)= + _LT_TAGVAR(archive_expsym_cmds, $1)= + _LT_TAGVAR(compiler_needs_object, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(hardcode_automatic, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_separator, $1)= + _LT_TAGVAR(hardcode_minus_L, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_TAGVAR(inherit_rpath, $1)=no + _LT_TAGVAR(link_all_deplibs, $1)=unknown + _LT_TAGVAR(module_cmds, $1)= + _LT_TAGVAR(module_expsym_cmds, $1)= + _LT_TAGVAR(old_archive_from_new_cmds, $1)= + _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_TAGVAR(thread_safe_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ' (' and ')$', so one must not match beginning or + # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', + # as well as any symbol that contains 'd'. + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. +dnl Note also adjust exclude_expsyms for C++ above. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++ or Intel C++ Compiler. + if test yes != "$GCC"; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++ or ICC) + with_gnu_ld=yes + ;; + openbsd* | bitrig*) + with_gnu_ld=no + ;; + linux* | k*bsd*-gnu | gnu*) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; + esac + + _LT_TAGVAR(ld_shlibs, $1)=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test yes = "$with_gnu_ld"; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; + *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test yes = "$lt_use_gnu_ld_interface"; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='$wl' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v | $SED -e 's/([[^)]]\+)\s\+//' 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[[3-9]]*) + # On AIX/PPC, the GNU linker is very broken + if test ia64 != "$host_cpu"; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test linux-dietlibc = "$host_os"; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test no = "$tmp_diet" + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + _LT_TAGVAR(whole_archive_flag_spec, $1)= + tmp_sharedflag='--shared' ;; + nagfor*) # NAGFOR 5.3 + tmp_sharedflag='-Wl,-shared' ;; + xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + ;; + esac + case `$CC -V 2>&1 | $SED 5q` in + *Sun\ C*) # Sun C 5.9 + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + tcc*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' + ;; + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then + runpath_var= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix[[4-9]]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then + aix_use_runtimelinking=yes + break + fi + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + ;; + esac + + if test yes = "$GCC"; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag="$shared_flag "'$wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + bsdi[[45]]*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++ or Intel C++ Compiler. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl* | icl*) + # Native MSVC or ICC + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC and ICC wrapper + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + esac + ;; + + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly* | midnightbsd*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + ;; + + hpux10*) + if test yes,no = "$GCC,$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test yes,no = "$GCC,$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + m4_if($1, [], [ + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + _LT_LINKER_OPTION([if $CC understands -b], + _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], + [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) + ;; + esac + fi + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], + [lt_cv_irix_exported_symbol], + [save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" + AC_LINK_IFELSE( + [AC_LANG_SOURCE( + [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], + [C++], [[int foo (void) { return 0; }]], + [Fortran 77], [[ + subroutine foo + end]], + [Fortran], [[ + subroutine foo + end]])])], + [lt_cv_irix_exported_symbol=yes], + [lt_cv_irix_exported_symbol=no]) + LDFLAGS=$save_LDFLAGS]) + if test yes = "$lt_cv_irix_exported_symbol"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' + fi + _LT_TAGVAR(link_all_deplibs, $1)=no + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + _LT_TAGVAR(ld_shlibs, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + ;; + esac + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *nto* | *qnx*) + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + fi + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + ;; + + osf3*) + if test yes = "$GCC"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test yes = "$GCC"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + solaris*) + _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' + if test yes = "$GCC"; then + wlarc='$wl' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='$wl' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. GCC discards it without '$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test yes = "$GCC"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + fi + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test sequent = "$host_vendor"; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + if test sni = "$host_vendor"; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym' + ;; + esac + fi + fi +]) +AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) +test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no + +_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld + +_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl +_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl +_LT_DECL([], [extract_expsyms_cmds], [2], + [The commands to extract the exported symbol list from a shared archive]) + +# +# Do we need to explicitly link libc? +# +case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $_LT_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_CACHE_CHECK([whether -lc should be explicitly linked in], + [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), + [$RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) + _LT_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) + then + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no + else + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + ]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) + ;; + esac + fi + ;; +esac + +_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], + [Whether or not to add -lc for building shared libraries]) +_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], + [enable_shared_with_static_runtimes], [0], + [Whether or not to disallow shared libs when runtime libs are static]) +_LT_TAGDECL([], [export_dynamic_flag_spec], [1], + [Compiler flag to allow reflexive dlopens]) +_LT_TAGDECL([], [whole_archive_flag_spec], [1], + [Compiler flag to generate shared objects directly from archives]) +_LT_TAGDECL([], [compiler_needs_object], [1], + [Whether the compiler copes with passing no objects directly]) +_LT_TAGDECL([], [old_archive_from_new_cmds], [2], + [Create an old-style archive from a shared archive]) +_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], + [Create a temporary old-style archive to link instead of a shared archive]) +_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) +_LT_TAGDECL([], [archive_expsym_cmds], [2]) +_LT_TAGDECL([], [module_cmds], [2], + [Commands used to build a loadable module if different from building + a shared archive.]) +_LT_TAGDECL([], [module_expsym_cmds], [2]) +_LT_TAGDECL([], [with_gnu_ld], [1], + [Whether we are building with GNU ld or not]) +_LT_TAGDECL([], [allow_undefined_flag], [1], + [Flag that allows shared libraries with undefined symbols to be built]) +_LT_TAGDECL([], [no_undefined_flag], [1], + [Flag that enforces no undefined symbols]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], + [Flag to hardcode $libdir into a binary during linking. + This must work even if $libdir does not exist]) +_LT_TAGDECL([], [hardcode_libdir_separator], [1], + [Whether we need a single "-rpath" flag with a separated argument]) +_LT_TAGDECL([], [hardcode_direct], [0], + [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes + DIR into the resulting binary]) +_LT_TAGDECL([], [hardcode_direct_absolute], [0], + [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes + DIR into the resulting binary and the resulting library dependency is + "absolute", i.e impossible to change by setting $shlibpath_var if the + library is relocated]) +_LT_TAGDECL([], [hardcode_minus_L], [0], + [Set to "yes" if using the -LDIR flag during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_shlibpath_var], [0], + [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_automatic], [0], + [Set to "yes" if building a shared library automatically hardcodes DIR + into the library and all subsequent libraries and executables linked + against it]) +_LT_TAGDECL([], [inherit_rpath], [0], + [Set to yes if linker adds runtime paths of dependent libraries + to runtime path list]) +_LT_TAGDECL([], [link_all_deplibs], [0], + [Whether libtool must link a program against all its dependency libraries]) +_LT_TAGDECL([], [always_export_symbols], [0], + [Set to "yes" if exported symbols are required]) +_LT_TAGDECL([], [export_symbols_cmds], [2], + [The commands to list exported symbols]) +_LT_TAGDECL([], [exclude_expsyms], [1], + [Symbols that should not be listed in the preloaded symbols]) +_LT_TAGDECL([], [include_expsyms], [1], + [Symbols that must always be exported]) +_LT_TAGDECL([], [prelink_cmds], [2], + [Commands necessary for linking programs (against libraries) with templates]) +_LT_TAGDECL([], [postlink_cmds], [2], + [Commands necessary for finishing linking programs]) +_LT_TAGDECL([], [file_list_spec], [1], + [Specify filename containing input files]) +dnl FIXME: Not yet implemented +dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], +dnl [Compiler flag to generate thread safe objects]) +])# _LT_LINKER_SHLIBS + + +# _LT_LANG_C_CONFIG([TAG]) +# ------------------------ +# Ensure that the configuration variables for a C compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_C_CONFIG], +[m4_require([_LT_DECL_EGREP])dnl +lt_save_CC=$CC +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + +_LT_TAG_COMPILER +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + LT_SYS_DLOPEN_SELF + _LT_CMD_STRIPLIB + + # Report what library types will actually be built + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_CONFIG($1) +fi +AC_LANG_POP +CC=$lt_save_CC +])# _LT_LANG_C_CONFIG + + +# _LT_LANG_CXX_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a C++ compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_CXX_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +if test -n "$CXX" && ( test no != "$CXX" && + ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || + (test g++ != "$CXX"))); then + AC_PROG_CXXCPP +else + _lt_caught_CXX_error=yes +fi + +AC_LANG_PUSH(C++) +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(compiler_needs_object, $1)=no +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_caught_CXX_error"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test yes = "$GXX"; then + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + else + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + fi + + if test yes = "$GXX"; then + # Set up default GNU C++ configuration + + LT_PATH_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test yes = "$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='$wl' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) + _LT_TAGVAR(ld_shlibs, $1)=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aix[[4-9]]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + ;; + esac + + if test yes = "$GXX"; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag=$shared_flag' $wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + # The "-G" linker flag allows undefined symbols. + _LT_TAGVAR(no_undefined_flag, $1)='-bernotok' + # Determine the default libpath from the value encoded in an empty + # executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared + # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl* | ,icl* | no,icl*) + # Native MSVC or ICC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + freebsd2.*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + freebsd-elf*) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + + freebsd* | dragonfly* | midnightbsd*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + hpux9*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' + fi + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) + _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | $SED 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + case $host in + osf3*) + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + ;; + *) + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ + $RM $lib.exp' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes,no = "$GXX,$with_gnu_ld"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + case $host in + osf3*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' + + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test yes,no = "$GXX,$with_gnu_ld"; then + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' + else + # g++ 2.7 appears to require '-G' NOT '-shared' on this + # platform. + _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' + fi + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ + '"$_LT_TAGVAR(old_archive_cmds, $1)" + _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ + '"$_LT_TAGVAR(reload_cmds, $1)" + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) + test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no + + _LT_TAGVAR(GCC, $1)=$GXX + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test yes != "$_lt_caught_CXX_error" + +AC_LANG_POP +])# _LT_LANG_CXX_CONFIG + + +# _LT_FUNC_STRIPNAME_CNF +# ---------------------- +# func_stripname_cnf prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# +# This function is identical to the (non-XSI) version of func_stripname, +# except this one can be used by m4 code that may be executed by configure, +# rather than the libtool script. +m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl +AC_REQUIRE([_LT_DECL_SED]) +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) +func_stripname_cnf () +{ + case @S|@2 in + .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; + *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; + esac +} # func_stripname_cnf +])# _LT_FUNC_STRIPNAME_CNF + + +# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) +# --------------------------------- +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +m4_defun([_LT_SYS_HIDDEN_LIBDEPS], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl +# Dependencies to place before and after the object being linked: +_LT_TAGVAR(predep_objects, $1)= +_LT_TAGVAR(postdep_objects, $1)= +_LT_TAGVAR(predeps, $1)= +_LT_TAGVAR(postdeps, $1)= +_LT_TAGVAR(compiler_lib_search_path, $1)= + +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF +int a; +void foo (void) { a = 0; } +_LT_EOF +], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF +], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer*4 a + a=0 + return + end +_LT_EOF +], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer a + a=0 + return + end +_LT_EOF +], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF +public class foo { + private int a; + public void bar (void) { + a = 0; + } +}; +_LT_EOF +], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF +package foo +func foo() { +} +_LT_EOF +]) + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; +esac + +dnl Parse the compiler output and extract the necessary +dnl objects, libraries and library flags. +if AC_TRY_EVAL(ac_compile); then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case $prev$p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test x-L = "$p" || + test x-R = "$p"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test no = "$pre_test_object_deps_done"; then + case $prev in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then + _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p + else + _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$_LT_TAGVAR(postdeps, $1)"; then + _LT_TAGVAR(postdeps, $1)=$prev$p + else + _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test no = "$pre_test_object_deps_done"; then + if test -z "$_LT_TAGVAR(predep_objects, $1)"; then + _LT_TAGVAR(predep_objects, $1)=$p + else + _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" + fi + else + if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then + _LT_TAGVAR(postdep_objects, $1)=$p + else + _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling $1 test program" +fi + +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS + +# PORTME: override above test on systems where it is broken +m4_if([$1], [CXX], +[case $host_os in +interix[[3-9]]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + _LT_TAGVAR(predep_objects,$1)= + _LT_TAGVAR(postdep_objects,$1)= + _LT_TAGVAR(postdeps,$1)= + ;; +esac +]) + +case " $_LT_TAGVAR(postdeps, $1) " in +*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; +esac + _LT_TAGVAR(compiler_lib_search_dirs, $1)= +if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then + _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'` +fi +_LT_TAGDECL([], [compiler_lib_search_dirs], [1], + [The directories searched by this compiler when creating a shared library]) +_LT_TAGDECL([], [predep_objects], [1], + [Dependencies to place before and after the objects being linked to + create a shared library]) +_LT_TAGDECL([], [postdep_objects], [1]) +_LT_TAGDECL([], [predeps], [1]) +_LT_TAGDECL([], [postdeps], [1]) +_LT_TAGDECL([], [compiler_lib_search_path], [1], + [The library search path used internally by the compiler when linking + a shared library]) +])# _LT_SYS_HIDDEN_LIBDEPS + + +# _LT_LANG_F77_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a Fortran 77 compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_F77_CONFIG], +[AC_LANG_PUSH(Fortran 77) +if test -z "$F77" || test no = "$F77"; then + _lt_disable_F77=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the F77 compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_disable_F77"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${F77-"f77"} + CFLAGS=$FFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + GCC=$G77 + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)=$G77 + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test yes != "$_lt_disable_F77" + +AC_LANG_POP +])# _LT_LANG_F77_CONFIG + + +# _LT_LANG_FC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for a Fortran compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_FC_CONFIG], +[AC_LANG_PUSH(Fortran) + +if test -z "$FC" || test no = "$FC"; then + _lt_disable_FC=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for fc test sources. +ac_ext=${ac_fc_srcext-f} + +# Object file extension for compiled fc test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the FC compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_disable_FC"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${FC-"f95"} + CFLAGS=$FCFLAGS + compiler=$CC + GCC=$ac_cv_fc_compiler_gnu + + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test yes != "$_lt_disable_FC" + +AC_LANG_POP +])# _LT_LANG_FC_CONFIG + + +# _LT_LANG_GCJ_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Java Compiler compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_GCJ_CONFIG], +[AC_REQUIRE([LT_PROG_GCJ])dnl +AC_LANG_SAVE + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GCJ-"gcj"} +CFLAGS=$GCJFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)=$LD +_LT_CC_BASENAME([$compiler]) + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GCJ_CONFIG + + +# _LT_LANG_GO_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Go compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_GO_CONFIG], +[AC_REQUIRE([LT_PROG_GO])dnl +AC_LANG_SAVE + +# Source file extension for Go test sources. +ac_ext=go + +# Object file extension for compiled Go test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="package main; func main() { }" + +# Code to be used in simple link tests +lt_simple_link_test_code='package main; func main() { }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GOC-"gccgo"} +CFLAGS=$GOFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)=$LD +_LT_CC_BASENAME([$compiler]) + +# Go did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GO_CONFIG + + +# _LT_LANG_RC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for the Windows resource compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_RC_CONFIG], +[AC_REQUIRE([LT_PROG_RC])dnl +AC_LANG_SAVE + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code=$lt_simple_compile_test_code + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC= +CC=${RC-"windres"} +CFLAGS= +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) +_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + +if test -n "$compiler"; then + : + _LT_CONFIG($1) +fi + +GCC=$lt_save_GCC +AC_LANG_RESTORE +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_RC_CONFIG + + +# LT_PROG_GCJ +# ----------- +AC_DEFUN([LT_PROG_GCJ], +[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], + [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], + [AC_CHECK_TOOL(GCJ, gcj,) + test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS)])])[]dnl +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_GCJ], []) + + +# LT_PROG_GO +# ---------- +AC_DEFUN([LT_PROG_GO], +[AC_CHECK_TOOL(GOC, gccgo,) +]) + + +# LT_PROG_RC +# ---------- +AC_DEFUN([LT_PROG_RC], +[AC_CHECK_TOOL(RC, windres,) +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_RC], []) + + +# _LT_DECL_EGREP +# -------------- +# If we don't have a new enough Autoconf to choose the best grep +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_EGREP], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_REQUIRE([AC_PROG_FGREP])dnl +test -z "$GREP" && GREP=grep +_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) +_LT_DECL([], [EGREP], [1], [An ERE matcher]) +_LT_DECL([], [FGREP], [1], [A literal string matcher]) +dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too +AC_SUBST([GREP]) +]) + + +# _LT_DECL_OBJDUMP +# -------------- +# If we don't have a new enough Autoconf to choose the best objdump +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_OBJDUMP], +[AC_CHECK_TOOL(OBJDUMP, objdump, false) +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) +AC_SUBST([OBJDUMP]) +]) + +# _LT_DECL_DLLTOOL +# ---------------- +# Ensure DLLTOOL variable is set. +m4_defun([_LT_DECL_DLLTOOL], +[AC_CHECK_TOOL(DLLTOOL, dlltool, false) +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) +AC_SUBST([DLLTOOL]) +]) + +# _LT_DECL_FILECMD +# ---------------- +# Check for a file(cmd) program that can be used to detect file type and magic +m4_defun([_LT_DECL_FILECMD], +[AC_CHECK_TOOL([FILECMD], [file], [:]) +_LT_DECL([], [FILECMD], [1], [A file(cmd) program that detects file types]) +])# _LD_DECL_FILECMD + +# _LT_DECL_SED +# ------------ +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +m4_defun([_LT_DECL_SED], +[AC_PROG_SED +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" +_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) +_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], + [Sed that helps us avoid accidentally triggering echo(1) options like -n]) +])# _LT_DECL_SED + +m4_ifndef([AC_PROG_SED], [ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # + +m4_defun([AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f "$lt_ac_sed" && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test 10 -lt "$lt_ac_count" && break + lt_ac_count=`expr $lt_ac_count + 1` + if test "$lt_ac_count" -gt "$lt_ac_max"; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_SUBST([SED]) +AC_MSG_RESULT([$SED]) +])#AC_PROG_SED +])#m4_ifndef + +# Old name: +AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_SED], []) + + +# _LT_CHECK_SHELL_FEATURES +# ------------------------ +# Find out whether the shell is Bourne or XSI compatible, +# or has some other useful features. +m4_defun([_LT_CHECK_SHELL_FEATURES], +[if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi +_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac +_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl +_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl +])# _LT_CHECK_SHELL_FEATURES + + +# _LT_PATH_CONVERSION_FUNCTIONS +# ----------------------------- +# Determine what file name conversion functions should be used by +# func_to_host_file (and, implicitly, by func_to_host_path). These are needed +# for certain cross-compile configurations and native mingw. +m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_MSG_CHECKING([how to convert $build file names to $host format]) +AC_CACHE_VAL(lt_cv_to_host_file_cmd, +[case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac +]) +to_host_file_cmd=$lt_cv_to_host_file_cmd +AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) +_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], + [0], [convert $build file names to $host format])dnl + +AC_MSG_CHECKING([how to convert $build file names to toolchain format]) +AC_CACHE_VAL(lt_cv_to_tool_file_cmd, +[#assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac +]) +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) +_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], + [0], [convert $build files to toolchain format])dnl +])# _LT_PATH_CONVERSION_FUNCTIONS + +# Helper functions for option handling. -*- Autoconf -*- +# +# Copyright (C) 2004-2005, 2007-2009, 2011-2019, 2021-2022 Free +# Software Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 8 ltoptions.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) + + +# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) +# ------------------------------------------ +m4_define([_LT_MANGLE_OPTION], +[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) + + +# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) +# --------------------------------------- +# Set option OPTION-NAME for macro MACRO-NAME, and if there is a +# matching handler defined, dispatch to it. Other OPTION-NAMEs are +# saved as a flag. +m4_define([_LT_SET_OPTION], +[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl +m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), + _LT_MANGLE_DEFUN([$1], [$2]), + [m4_warning([Unknown $1 option '$2'])])[]dnl +]) + + +# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) +# ------------------------------------------------------------ +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +m4_define([_LT_IF_OPTION], +[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) + + +# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) +# ------------------------------------------------------- +# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME +# are set. +m4_define([_LT_UNLESS_OPTIONS], +[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), + [m4_define([$0_found])])])[]dnl +m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 +])[]dnl +]) + + +# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) +# ---------------------------------------- +# OPTION-LIST is a space-separated list of Libtool options associated +# with MACRO-NAME. If any OPTION has a matching handler declared with +# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about +# the unknown option and exit. +m4_defun([_LT_SET_OPTIONS], +[# Set options +m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [_LT_SET_OPTION([$1], _LT_Option)]) + +m4_if([$1],[LT_INIT],[ + dnl + dnl Simply set some default values (i.e off) if boolean options were not + dnl specified: + _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no + ]) + _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no + ]) + dnl + dnl If no reference was made to various pairs of opposing options, then + dnl we run the default mode handler for the pair. For example, if neither + dnl 'shared' nor 'disable-shared' was passed, we enable building of shared + dnl archives by default: + _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) + _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], + [_LT_ENABLE_FAST_INSTALL]) + _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], + [_LT_WITH_AIX_SONAME([aix])]) + ]) +])# _LT_SET_OPTIONS + + + +# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) +# ----------------------------------------- +m4_define([_LT_MANGLE_DEFUN], +[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) + + +# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) +# ----------------------------------------------- +m4_define([LT_OPTION_DEFINE], +[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl +])# LT_OPTION_DEFINE + + +# dlopen +# ------ +LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes +]) + +AU_DEFUN([AC_LIBTOOL_DLOPEN], +[_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'dlopen' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) + + +# win32-dll +# --------- +# Declare package support for building win32 dll's. +LT_OPTION_DEFINE([LT_INIT], [win32-dll], +[enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; +esac + +test -z "$AS" && AS=as +_LT_DECL([], [AS], [1], [Assembler program])dnl + +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl + +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl +])# win32-dll + +AU_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'win32-dll' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) + + +# _LT_ENABLE_SHARED([DEFAULT]) +# ---------------------------- +# implement the --enable-shared flag, and supports the 'shared' and +# 'disable-shared' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_SHARED], +[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([shared], + [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) + + _LT_DECL([build_libtool_libs], [enable_shared], [0], + [Whether or not to build shared libraries]) +])# _LT_ENABLE_SHARED + +LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) +]) + +AC_DEFUN([AC_DISABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], [disable-shared]) +]) + +AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_SHARED], []) +dnl AC_DEFUN([AM_DISABLE_SHARED], []) + + + +# _LT_ENABLE_STATIC([DEFAULT]) +# ---------------------------- +# implement the --enable-static flag, and support the 'static' and +# 'disable-static' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_STATIC], +[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([static], + [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_static=]_LT_ENABLE_STATIC_DEFAULT) + + _LT_DECL([build_old_libs], [enable_static], [0], + [Whether or not to build static libraries]) +])# _LT_ENABLE_STATIC + +LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) +]) + +AC_DEFUN([AC_DISABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], [disable-static]) +]) + +AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_STATIC], []) +dnl AC_DEFUN([AM_DISABLE_STATIC], []) + + + +# _LT_ENABLE_FAST_INSTALL([DEFAULT]) +# ---------------------------------- +# implement the --enable-fast-install flag, and support the 'fast-install' +# and 'disable-fast-install' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_FAST_INSTALL], +[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([fast-install], + [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) + +_LT_DECL([fast_install], [enable_fast_install], [0], + [Whether or not to optimize for fast installation])dnl +])# _LT_ENABLE_FAST_INSTALL + +LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) + +# Old names: +AU_DEFUN([AC_ENABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the 'fast-install' option into LT_INIT's first parameter.]) +]) + +AU_DEFUN([AC_DISABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the 'disable-fast-install' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) +dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) + + +# _LT_WITH_AIX_SONAME([DEFAULT]) +# ---------------------------------- +# implement the --with-aix-soname flag, and support the `aix-soname=aix' +# and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT +# is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'. +m4_define([_LT_WITH_AIX_SONAME], +[m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl +shared_archive_member_spec= +case $host,$enable_shared in +power*-*-aix[[5-9]]*,yes) + AC_MSG_CHECKING([which variant of shared library versioning to provide]) + AC_ARG_WITH([aix-soname], + [AS_HELP_STRING([--with-aix-soname=aix|svr4|both], + [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])], + [case $withval in + aix|svr4|both) + ;; + *) + AC_MSG_ERROR([Unknown argument to --with-aix-soname]) + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname], + [AC_CACHE_VAL([lt_cv_with_aix_soname], + [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT) + with_aix_soname=$lt_cv_with_aix_soname]) + AC_MSG_RESULT([$with_aix_soname]) + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + +_LT_DECL([], [shared_archive_member_spec], [0], + [Shared archive member basename, for filename based shared library versioning on AIX])dnl +])# _LT_WITH_AIX_SONAME + +LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])]) +LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])]) +LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) + + +# _LT_WITH_PIC([MODE]) +# -------------------- +# implement the --with-pic flag, and support the 'pic-only' and 'no-pic' +# LT_INIT options. +# MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'. +m4_define([_LT_WITH_PIC], +[AC_ARG_WITH([pic], + [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for lt_pkg in $withval; do + IFS=$lt_save_ifs + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [pic_mode=m4_default([$1], [default])]) + +_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl +])# _LT_WITH_PIC + +LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) + +# Old name: +AU_DEFUN([AC_LIBTOOL_PICMODE], +[_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'pic-only' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) + + +m4_define([_LTDL_MODE], []) +LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], + [m4_define([_LTDL_MODE], [nonrecursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [recursive], + [m4_define([_LTDL_MODE], [recursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [subproject], + [m4_define([_LTDL_MODE], [subproject])]) + +m4_define([_LTDL_TYPE], []) +LT_OPTION_DEFINE([LTDL_INIT], [installable], + [m4_define([_LTDL_TYPE], [installable])]) +LT_OPTION_DEFINE([LTDL_INIT], [convenience], + [m4_define([_LTDL_TYPE], [convenience])]) + +# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- +# +# Copyright (C) 2004-2005, 2007-2008, 2011-2019, 2021-2022 Free Software +# Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 6 ltsugar.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) + + +# lt_join(SEP, ARG1, [ARG2...]) +# ----------------------------- +# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their +# associated separator. +# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier +# versions in m4sugar had bugs. +m4_define([lt_join], +[m4_if([$#], [1], [], + [$#], [2], [[$2]], + [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) +m4_define([_lt_join], +[m4_if([$#$2], [2], [], + [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) + + +# lt_car(LIST) +# lt_cdr(LIST) +# ------------ +# Manipulate m4 lists. +# These macros are necessary as long as will still need to support +# Autoconf-2.59, which quotes differently. +m4_define([lt_car], [[$1]]) +m4_define([lt_cdr], +[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], + [$#], 1, [], + [m4_dquote(m4_shift($@))])]) +m4_define([lt_unquote], $1) + + +# lt_append(MACRO-NAME, STRING, [SEPARATOR]) +# ------------------------------------------ +# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. +# Note that neither SEPARATOR nor STRING are expanded; they are appended +# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). +# No SEPARATOR is output if MACRO-NAME was previously undefined (different +# than defined and empty). +# +# This macro is needed until we can rely on Autoconf 2.62, since earlier +# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. +m4_define([lt_append], +[m4_define([$1], + m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) + + + +# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) +# ---------------------------------------------------------- +# Produce a SEP delimited list of all paired combinations of elements of +# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list +# has the form PREFIXmINFIXSUFFIXn. +# Needed until we can rely on m4_combine added in Autoconf 2.62. +m4_define([lt_combine], +[m4_if(m4_eval([$# > 3]), [1], + [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl +[[m4_foreach([_Lt_prefix], [$2], + [m4_foreach([_Lt_suffix], + ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, + [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) + + +# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) +# ----------------------------------------------------------------------- +# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited +# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. +m4_define([lt_if_append_uniq], +[m4_ifdef([$1], + [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], + [lt_append([$1], [$2], [$3])$4], + [$5])], + [lt_append([$1], [$2], [$3])$4])]) + + +# lt_dict_add(DICT, KEY, VALUE) +# ----------------------------- +m4_define([lt_dict_add], +[m4_define([$1($2)], [$3])]) + + +# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) +# -------------------------------------------- +m4_define([lt_dict_add_subkey], +[m4_define([$1($2:$3)], [$4])]) + + +# lt_dict_fetch(DICT, KEY, [SUBKEY]) +# ---------------------------------- +m4_define([lt_dict_fetch], +[m4_ifval([$3], + m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), + m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) + + +# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) +# ----------------------------------------------------------------- +m4_define([lt_if_dict_fetch], +[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], + [$5], + [$6])]) + + +# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) +# -------------------------------------------------------------- +m4_define([lt_dict_filter], +[m4_if([$5], [], [], + [lt_join(m4_quote(m4_default([$4], [[, ]])), + lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), + [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl +]) + +# ltversion.m4 -- version numbers -*- Autoconf -*- +# +# Copyright (C) 2004, 2011-2019, 2021-2022 Free Software Foundation, +# Inc. +# Written by Scott James Remnant, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# @configure_input@ + +# serial 4245 ltversion.m4 +# This file is part of GNU Libtool + +m4_define([LT_PACKAGE_VERSION], [2.4.7]) +m4_define([LT_PACKAGE_REVISION], [2.4.7]) + +AC_DEFUN([LTVERSION_VERSION], +[macro_version='2.4.7' +macro_revision='2.4.7' +_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) +_LT_DECL(, macro_revision, 0) +]) + +# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- +# +# Copyright (C) 2004-2005, 2007, 2009, 2011-2019, 2021-2022 Free +# Software Foundation, Inc. +# Written by Scott James Remnant, 2004. +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 5 lt~obsolete.m4 + +# These exist entirely to fool aclocal when bootstrapping libtool. +# +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), +# which have later been changed to m4_define as they aren't part of the +# exported API, or moved to Autoconf or Automake where they belong. +# +# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN +# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us +# using a macro with the same name in our local m4/libtool.m4 it'll +# pull the old libtool.m4 in (it doesn't see our shiny new m4_define +# and doesn't know about Autoconf macros at all.) +# +# So we provide this file, which has a silly filename so it's always +# included after everything else. This provides aclocal with the +# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything +# because those macros already exist, or will be overwritten later. +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# +# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. +# Yes, that means every name once taken will need to remain here until +# we give up compatibility with versions before 1.7, at which point +# we need to keep only those names which we still refer to. + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) + +m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) +m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) +m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) +m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) +m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) +m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) +m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) +m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) +m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) +m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) +m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) +m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) +m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) +m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) +m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) +m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) +m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) +m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) +m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) +m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) +m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) +m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) +m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) +m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) +m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) +m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) +m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) +m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) +m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) +m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) +m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) +m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) +m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) +m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) +m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) +m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) +m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) +m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) +m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) +m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) +m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) +m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) +m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) +m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) +m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) +m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) +m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) +m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) +m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) +m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) + +# nls.m4 serial 6 (gettext-0.20.2) +dnl Copyright (C) 1995-2003, 2005-2006, 2008-2014, 2016, 2019-2020 Free +dnl Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can be used in projects which are not available under +dnl the GNU General Public License or the GNU Lesser General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Lesser General Public License, and the rest of the GNU +dnl gettext package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2003. + +AC_PREREQ([2.50]) + +AC_DEFUN([AM_NLS], +[ + AC_MSG_CHECKING([whether NLS is requested]) + dnl Default is enabled NLS + AC_ARG_ENABLE([nls], + [ --disable-nls do not use Native Language Support], + USE_NLS=$enableval, USE_NLS=yes) + AC_MSG_RESULT([$USE_NLS]) + AC_SUBST([USE_NLS]) +]) + +# pkg.m4 - Macros to locate and use pkg-config. -*- Autoconf -*- +# serial 12 (pkg-config-0.29.2) + +dnl Copyright © 2004 Scott James Remnant . +dnl Copyright © 2012-2015 Dan Nicholson +dnl +dnl This program is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2 of the License, or +dnl (at your option) any later version. +dnl +dnl This program is distributed in the hope that it will be useful, but +dnl WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +dnl 02111-1307, USA. +dnl +dnl As a special exception to the GNU General Public License, if you +dnl distribute this file as part of a program that contains a +dnl configuration script generated by Autoconf, you may include it under +dnl the same distribution terms that you use for the rest of that +dnl program. + +dnl PKG_PREREQ(MIN-VERSION) +dnl ----------------------- +dnl Since: 0.29 +dnl +dnl Verify that the version of the pkg-config macros are at least +dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's +dnl installed version of pkg-config, this checks the developer's version +dnl of pkg.m4 when generating configure. +dnl +dnl To ensure that this macro is defined, also add: +dnl m4_ifndef([PKG_PREREQ], +dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) +dnl +dnl See the "Since" comment for each macro you use to see what version +dnl of the macros you require. +m4_defun([PKG_PREREQ], +[m4_define([PKG_MACROS_VERSION], [0.29.2]) +m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, + [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) +])dnl PKG_PREREQ + +dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) +dnl ---------------------------------- +dnl Since: 0.16 +dnl +dnl Search for the pkg-config tool and set the PKG_CONFIG variable to +dnl first found in the path. Checks that the version of pkg-config found +dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is +dnl used since that's the first version where most current features of +dnl pkg-config existed. +AC_DEFUN([PKG_PROG_PKG_CONFIG], +[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) +AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) +AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=m4_default([$1], [0.9.0]) + AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + PKG_CONFIG="" + fi +fi[]dnl +])dnl PKG_PROG_PKG_CONFIG + +dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------------------------------- +dnl Since: 0.18 +dnl +dnl Check to see whether a particular set of modules exists. Similar to +dnl PKG_CHECK_MODULES(), but does not set variables or print errors. +dnl +dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +dnl only at the first occurrence in configure.ac, so if the first place +dnl it's called might be skipped (such as if it is within an "if", you +dnl have to call PKG_CHECK_EXISTS manually +AC_DEFUN([PKG_CHECK_EXISTS], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +if test -n "$PKG_CONFIG" && \ + AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then + m4_default([$2], [:]) +m4_ifvaln([$3], [else + $3])dnl +fi]) + +dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +dnl --------------------------------------------- +dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting +dnl pkg_failed based on the result. +m4_define([_PKG_CONFIG], +[if test -n "$$1"; then + pkg_cv_[]$1="$$1" + elif test -n "$PKG_CONFIG"; then + PKG_CHECK_EXISTS([$3], + [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes ], + [pkg_failed=yes]) + else + pkg_failed=untried +fi[]dnl +])dnl _PKG_CONFIG + +dnl _PKG_SHORT_ERRORS_SUPPORTED +dnl --------------------------- +dnl Internal check to see if pkg-config supports short errors. +AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi[]dnl +])dnl _PKG_SHORT_ERRORS_SUPPORTED + + +dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl -------------------------------------------------------------- +dnl Since: 0.4.0 +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES might not happen, you should be sure to include an +dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac +AC_DEFUN([PKG_CHECK_MODULES], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl +AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl + +pkg_failed=no +AC_MSG_CHECKING([for $2]) + +_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) +_PKG_CONFIG([$1][_LIBS], [libs], [$2]) + +m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS +and $1[]_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details.]) + +if test $pkg_failed = yes; then + AC_MSG_RESULT([no]) + _PKG_SHORT_ERRORS_SUPPORTED + if test $_pkg_short_errors_supported = yes; then + $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` + else + $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD + + m4_default([$4], [AC_MSG_ERROR( +[Package requirements ($2) were not met: + +$$1_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +_PKG_TEXT])[]dnl + ]) +elif test $pkg_failed = untried; then + AC_MSG_RESULT([no]) + m4_default([$4], [AC_MSG_FAILURE( +[The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +_PKG_TEXT + +To get pkg-config, see .])[]dnl + ]) +else + $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS + $1[]_LIBS=$pkg_cv_[]$1[]_LIBS + AC_MSG_RESULT([yes]) + $3 +fi[]dnl +])dnl PKG_CHECK_MODULES + + +dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl --------------------------------------------------------------------- +dnl Since: 0.29 +dnl +dnl Checks for existence of MODULES and gathers its build flags with +dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags +dnl and VARIABLE-PREFIX_LIBS from --libs. +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to +dnl include an explicit call to PKG_PROG_PKG_CONFIG in your +dnl configure.ac. +AC_DEFUN([PKG_CHECK_MODULES_STATIC], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +_save_PKG_CONFIG=$PKG_CONFIG +PKG_CONFIG="$PKG_CONFIG --static" +PKG_CHECK_MODULES($@) +PKG_CONFIG=$_save_PKG_CONFIG[]dnl +])dnl PKG_CHECK_MODULES_STATIC + + +dnl PKG_INSTALLDIR([DIRECTORY]) +dnl ------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable pkgconfigdir as the location where a module +dnl should install pkg-config .pc files. By default the directory is +dnl $libdir/pkgconfig, but the default can be changed by passing +dnl DIRECTORY. The user can override through the --with-pkgconfigdir +dnl parameter. +AC_DEFUN([PKG_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([pkgconfigdir], + [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, + [with_pkgconfigdir=]pkg_default) +AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +])dnl PKG_INSTALLDIR + + +dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) +dnl -------------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable noarch_pkgconfigdir as the location where a +dnl module should install arch-independent pkg-config .pc files. By +dnl default the directory is $datadir/pkgconfig, but the default can be +dnl changed by passing DIRECTORY. The user can override through the +dnl --with-noarch-pkgconfigdir parameter. +AC_DEFUN([PKG_NOARCH_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([noarch-pkgconfigdir], + [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, + [with_noarch_pkgconfigdir=]pkg_default) +AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +])dnl PKG_NOARCH_INSTALLDIR + + +dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, +dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------- +dnl Since: 0.28 +dnl +dnl Retrieves the value of the pkg-config variable for the given module. +AC_DEFUN([PKG_CHECK_VAR], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl + +_PKG_CONFIG([$1], [variable="][$3]["], [$2]) +AS_VAR_COPY([$1], [pkg_cv_][$1]) + +AS_VAR_IF([$1], [""], [$5], [$4])dnl +])dnl PKG_CHECK_VAR + +dnl PKG_WITH_MODULES(VARIABLE-PREFIX, MODULES, +dnl [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND], +dnl [DESCRIPTION], [DEFAULT]) +dnl ------------------------------------------ +dnl +dnl Prepare a "--with-" configure option using the lowercase +dnl [VARIABLE-PREFIX] name, merging the behaviour of AC_ARG_WITH and +dnl PKG_CHECK_MODULES in a single macro. +AC_DEFUN([PKG_WITH_MODULES], +[ +m4_pushdef([with_arg], m4_tolower([$1])) + +m4_pushdef([description], + [m4_default([$5], [build with ]with_arg[ support])]) + +m4_pushdef([def_arg], [m4_default([$6], [auto])]) +m4_pushdef([def_action_if_found], [AS_TR_SH([with_]with_arg)=yes]) +m4_pushdef([def_action_if_not_found], [AS_TR_SH([with_]with_arg)=no]) + +m4_case(def_arg, + [yes],[m4_pushdef([with_without], [--without-]with_arg)], + [m4_pushdef([with_without],[--with-]with_arg)]) + +AC_ARG_WITH(with_arg, + AS_HELP_STRING(with_without, description[ @<:@default=]def_arg[@:>@]),, + [AS_TR_SH([with_]with_arg)=def_arg]) + +AS_CASE([$AS_TR_SH([with_]with_arg)], + [yes],[PKG_CHECK_MODULES([$1],[$2],$3,$4)], + [auto],[PKG_CHECK_MODULES([$1],[$2], + [m4_n([def_action_if_found]) $3], + [m4_n([def_action_if_not_found]) $4])]) + +m4_popdef([with_arg]) +m4_popdef([description]) +m4_popdef([def_arg]) + +])dnl PKG_WITH_MODULES + +dnl PKG_HAVE_WITH_MODULES(VARIABLE-PREFIX, MODULES, +dnl [DESCRIPTION], [DEFAULT]) +dnl ----------------------------------------------- +dnl +dnl Convenience macro to trigger AM_CONDITIONAL after PKG_WITH_MODULES +dnl check._[VARIABLE-PREFIX] is exported as make variable. +AC_DEFUN([PKG_HAVE_WITH_MODULES], +[ +PKG_WITH_MODULES([$1],[$2],,,[$3],[$4]) + +AM_CONDITIONAL([HAVE_][$1], + [test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"]) +])dnl PKG_HAVE_WITH_MODULES + +dnl PKG_HAVE_DEFINE_WITH_MODULES(VARIABLE-PREFIX, MODULES, +dnl [DESCRIPTION], [DEFAULT]) +dnl ------------------------------------------------------ +dnl +dnl Convenience macro to run AM_CONDITIONAL and AC_DEFINE after +dnl PKG_WITH_MODULES check. HAVE_[VARIABLE-PREFIX] is exported as make +dnl and preprocessor variable. +AC_DEFUN([PKG_HAVE_DEFINE_WITH_MODULES], +[ +PKG_HAVE_WITH_MODULES([$1],[$2],[$3],[$4]) + +AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"], + [AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])]) +])dnl PKG_HAVE_DEFINE_WITH_MODULES + +# po.m4 serial 31 (gettext-0.20.2) +dnl Copyright (C) 1995-2014, 2016, 2018-2020 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can be used in projects which are not available under +dnl the GNU General Public License or the GNU Lesser General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Lesser General Public License, and the rest of the GNU +dnl gettext package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2003. + +AC_PREREQ([2.60]) + +dnl Checks for all prerequisites of the po subdirectory. +AC_DEFUN([AM_PO_SUBDIRS], +[ + AC_REQUIRE([AC_PROG_MAKE_SET])dnl + AC_REQUIRE([AC_PROG_INSTALL])dnl + AC_REQUIRE([AC_PROG_MKDIR_P])dnl + AC_REQUIRE([AC_PROG_SED])dnl + AC_REQUIRE([AM_NLS])dnl + + dnl Release version of the gettext macros. This is used to ensure that + dnl the gettext macros and po/Makefile.in.in are in sync. + AC_SUBST([GETTEXT_MACRO_VERSION], [0.20]) + + dnl Perform the following tests also if --disable-nls has been given, + dnl because they are needed for "make dist" to work. + + dnl Search for GNU msgfmt in the PATH. + dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. + dnl The second test excludes FreeBSD msgfmt. + AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, + [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && + (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], + :) + AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT]) + + dnl Test whether it is GNU msgfmt >= 0.15. +changequote(,)dnl + case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; + *) GMSGFMT_015=$GMSGFMT ;; + esac +changequote([,])dnl + AC_SUBST([GMSGFMT_015]) + + dnl Search for GNU xgettext 0.12 or newer in the PATH. + dnl The first test excludes Solaris xgettext and early GNU xgettext versions. + dnl The second test excludes FreeBSD xgettext. + AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, + [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], + :) + dnl Remove leftover from FreeBSD xgettext call. + rm -f messages.po + + dnl Test whether it is GNU xgettext >= 0.15. +changequote(,)dnl + case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; + *) XGETTEXT_015=$XGETTEXT ;; + esac +changequote([,])dnl + AC_SUBST([XGETTEXT_015]) + + dnl Search for GNU msgmerge 0.11 or newer in the PATH. + AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, + [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) + + dnl Test whether it is GNU msgmerge >= 0.20. + if LC_ALL=C $MSGMERGE --help | grep ' --for-msgfmt ' >/dev/null; then + MSGMERGE_FOR_MSGFMT_OPTION='--for-msgfmt' + else + dnl Test whether it is GNU msgmerge >= 0.12. + if LC_ALL=C $MSGMERGE --help | grep ' --no-fuzzy-matching ' >/dev/null; then + MSGMERGE_FOR_MSGFMT_OPTION='--no-fuzzy-matching --no-location --quiet' + else + dnl With these old versions, $(MSGMERGE) $(MSGMERGE_FOR_MSGFMT_OPTION) is + dnl slow. But this is not a big problem, as such old gettext versions are + dnl hardly in use any more. + MSGMERGE_FOR_MSGFMT_OPTION='--no-location --quiet' + fi + fi + AC_SUBST([MSGMERGE_FOR_MSGFMT_OPTION]) + + dnl Support for AM_XGETTEXT_OPTION. + test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= + AC_SUBST([XGETTEXT_EXTRA_OPTIONS]) + + AC_CONFIG_COMMANDS([po-directories], [[ + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + # Treat a directory as a PO directory if and only if it has a + # POTFILES.in file. This allows packages to have multiple PO + # directories under different names or in different locations. + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + gt_tab=`printf '\t'` + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + ALL_LINGUAS=$OBSOLETE_ALL_LINGUAS + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done]], + [# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. + OBSOLETE_ALL_LINGUAS="$ALL_LINGUAS" + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + ]) +]) + +dnl Postprocesses a Makefile in a directory containing PO files. +AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], +[ + # When this code is run, in config.status, two variables have already been + # set: + # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, + # - LINGUAS is the value of the environment variable LINGUAS at configure + # time. + +changequote(,)dnl + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + # Find a way to echo strings without interpreting backslash. + if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then + gt_echo='echo' + else + if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then + gt_echo='printf %s\n' + else + echo_func () { + cat < "$ac_file.tmp" + tab=`printf '\t'` + if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then + # Add dependencies that cannot be formulated as a simple suffix rule. + for lang in $ALL_LINGUAS; do + frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` + cat >> "$ac_file.tmp" < /dev/null; then + # Add dependencies that cannot be formulated as a simple suffix rule. + for lang in $ALL_LINGUAS; do + frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` + cat >> "$ac_file.tmp" <> "$ac_file.tmp" <, 1996. + +AC_PREREQ([2.50]) + +# Search path for a program which passes the given test. + +dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, +dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) +AC_DEFUN([AM_PATH_PROG_WITH_TEST], +[ +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "$2", so it can be a program name with args. +set dummy $2; ac_word=[$]2 +AC_MSG_CHECKING([for $ac_word]) +AC_CACHE_VAL([ac_cv_path_$1], +[case "[$]$1" in + [[\\/]]* | ?:[[\\/]]*) + ac_cv_path_$1="[$]$1" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in ifelse([$5], , $PATH, [$5]); do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD + if [$3]; then + ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" +dnl If no 4th arg is given, leave the cache variable unset, +dnl so AC_PATH_PROGS will keep looking. +ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" +])dnl + ;; +esac])dnl +$1="$ac_cv_path_$1" +if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then + AC_MSG_RESULT([$][$1]) +else + AC_MSG_RESULT([no]) +fi +AC_SUBST([$1])dnl +]) + +# Copyright (C) 2002-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.16' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.16.5], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.16.5])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) + +# Figure out how to run the assembler. -*- Autoconf -*- + +# Copyright (C) 2001-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_AS +# ---------- +AC_DEFUN([AM_PROG_AS], +[# By default we simply use the C compiler to build assembly code. +AC_REQUIRE([AC_PROG_CC]) +test "${CCAS+set}" = set || CCAS=$CC +test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS +AC_ARG_VAR([CCAS], [assembler compiler command (defaults to CC)]) +AC_ARG_VAR([CCASFLAGS], [assembler compiler flags (defaults to CFLAGS)]) +_AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl +]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to +# '$srcdir', '$srcdir/..', or '$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is '.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# Copyright (C) 1999-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + +# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES. +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +AC_SUBST([am__nodep])dnl +_AM_SUBST_NOTMAKE([am__nodep])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[{ + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + AS_CASE([$CONFIG_FILES], + [*\'*], [eval set x "$CONFIG_FILES"], + [*], [set x $CONFIG_FILES]) + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`AS_DIRNAME(["$am_mf"])` + am_filepart=`AS_BASENAME(["$am_mf"])` + AM_RUN_LOG([cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles]) || am_rc=$? + done + if test $am_rc -ne 0; then + AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. If GNU make was not used, consider + re-running the configure script with MAKE="gmake" (or whatever is + necessary). You can also try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking).]) + fi + AS_UNSET([am_dirpart]) + AS_UNSET([am_filepart]) + AS_UNSET([am_mf]) + AS_UNSET([am_rc]) + rm -f conftest-deps.mk +} +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking is enabled. +# This creates each '.Po' and '.Plo' makefile fragment that we'll need in +# order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. +m4_define([AC_PROG_CC], +m4_defn([AC_PROG_CC]) +[_AM_PROG_CC_C_O +]) + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.65])dnl +m4_ifdef([_$0_ALREADY_INIT], + [m4_fatal([$0 expanded multiple times +]m4_defn([_$0_ALREADY_INIT]))], + [m4_define([_$0_ALREADY_INIT], m4_expansion_stack)])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if( + m4_ifset([AC_PACKAGE_NAME], [ok]):m4_ifset([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl +]) +# Variables for tags utilities; see am/tags.am +if test -z "$CTAGS"; then + CTAGS=ctags +fi +AC_SUBST([CTAGS]) +if test -z "$ETAGS"; then + ETAGS=etags +fi +AC_SUBST([ETAGS]) +if test -z "$CSCOPE"; then + CSCOPE=cscope +fi +AC_SUBST([CSCOPE]) + +AC_REQUIRE([AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) + fi +fi +dnl The trailing newline in this macro's definition is deliberate, for +dnl backward compatibility and to allow trailing 'dnl'-style comments +dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. +]) + +dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST([install_sh])]) + +# Copyright (C) 2003-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- +# From Jim Meyering + +# Copyright (C) 1996-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MAINTAINER_MODE([DEFAULT-MODE]) +# ---------------------------------- +# Control maintainer-specific portions of Makefiles. +# Default is to disable them, unless 'enable' is passed literally. +# For symmetry, 'disable' may be passed as well. Anyway, the user +# can override the default with the --enable/--disable switch. +AC_DEFUN([AM_MAINTAINER_MODE], +[m4_case(m4_default([$1], [disable]), + [enable], [m4_define([am_maintainer_other], [disable])], + [disable], [m4_define([am_maintainer_other], [enable])], + [m4_define([am_maintainer_other], [enable]) + m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) +AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) + dnl maintainer-mode's default is 'disable' unless 'enable' is passed + AC_ARG_ENABLE([maintainer-mode], + [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode], + am_maintainer_other[ make rules and dependencies not useful + (and sometimes confusing) to the casual installer])], + [USE_MAINTAINER_MODE=$enableval], + [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) + AC_MSG_RESULT([$USE_MAINTAINER_MODE]) + AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) + MAINT=$MAINTAINER_MODE_TRUE + AC_SUBST([MAINT])dnl +] +) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MAKE_INCLUDE() +# ----------------- +# Check whether make has an 'include' directive that can support all +# the idioms we need for our automatic dependency tracking code. +AC_DEFUN([AM_MAKE_INCLUDE], +[AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive]) +cat > confinc.mk << 'END' +am__doit: + @echo this is the am__doit target >confinc.out +.PHONY: am__doit +END +am__include="#" +am__quote= +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out]) + AS_CASE([$?:`cat confinc.out 2>/dev/null`], + ['0:this is the am__doit target'], + [AS_CASE([$s], + [BSD], [am__include='.include' am__quote='"'], + [am__include='include' am__quote=''])]) + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +AC_MSG_RESULT([${_am_result}]) +AC_SUBST([am__include])]) +AC_SUBST([am__quote])]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it is modern enough. +# If it is, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + MISSING="\${SHELL} '$am_aux_dir/missing'" +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + AC_MSG_WARN(['missing' script is too old or missing]) +fi +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# -------------------- +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) + +# _AM_SET_OPTIONS(OPTIONS) +# ------------------------ +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Copyright (C) 1999-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_CC_C_O +# --------------- +# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC +# to automatically call this. +AC_DEFUN([_AM_PROG_CC_C_O], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) + +# For backward compatibility. +AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) + +# Copyright (C) 2001-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_RUN_LOG(COMMAND) +# ------------------- +# Run COMMAND, save the exit status in ac_status, and log it. +# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) +AC_DEFUN([AM_RUN_LOG], +[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken + alias in your environment]) + fi + if test "$[2]" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT([yes]) +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) + +# Copyright (C) 2009-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SILENT_RULES([DEFAULT]) +# -------------------------- +# Enable less verbose build rules; with the default set to DEFAULT +# ("yes" being less verbose, "no" or empty being verbose). +AC_DEFUN([AM_SILENT_RULES], +[AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; +esac +dnl +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +AM_BACKSLASH='\' +AC_SUBST([AM_BACKSLASH])dnl +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +]) + +# Copyright (C) 2001-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor 'install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in "make install-strip", and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# AM_SUBST_NOTMAKE(VARIABLE) +# -------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004-2021 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of 'v7', 'ustar', or 'pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +# +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' + +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + +m4_include([acinclude.m4]) diff --git a/etc/wyatt8740/autogen.sh b/etc/wyatt8740/autogen.sh new file mode 100755 index 0000000..e7f0588 --- /dev/null +++ b/etc/wyatt8740/autogen.sh @@ -0,0 +1,112 @@ +#!/bin/bash +have_automake=false + +if automake --version < /dev/null > /dev/null 2>&1 ; then + automake_version=`automake --version | grep 'automake (GNU automake)' | sed 's/^[^0-9]*\(.*\)/\1/'` + case $automake_version in + 1.2*|1.3*|1.4|1.4*|1.5*|1.6*|1.7*|1.8*) + ;; + *) + have_automake=true + ;; + esac +fi +if $have_automake ; then + AUTOMAKE="automake" + ACLOCAL="aclocal" +else + if automake-1.9 --version < /dev/null > /dev/null 2>&1 ; then + AUTOMAKE="automake-1.9" + ACLOCAL="aclocal-1.9" + else + echo "automake missing or too old. This requires atleast automake 1.9" + exit 1 + fi +fi + +# ------ START GETTEXT ------ + +echo searching for GNU gettext intl directory... + +dirs="/usr/share /usr/local/share /opt/share /usr /usr/local /opt /usr/gnu/share /opt/local /opt/local/share" +found=0 +for try in $dirs; do + echo -n " -> $try/gettext/po... " + if test -d $try/gettext/po; then + echo found it + found=1 + break + fi + echo no +done +if test "$found" != 1; then + echo ERROR: Cannot find gettext/po directory. + echo ERROR: Install GNU gettext in /usr or /usr/local prefix. + exit 7 +fi; + +echo copying gettext files... +if test -f $try/gettext/mkinstalldirs; then + ln -s $try/gettext/mkinstalldirs mkinstalldirs +fi +#intldir="$try/gettext/intl" +#if test ! -d intl; then +# mkdir intl +#fi +olddir=`pwd` +#cd $intldir +#for file in *; do +# if test $file != COPYING.LIB-2.0 && test $file != COPYING.LIB-2.1; then +# rm -f $olddir/intl/$file +# cp $intldir/$file $olddir/intl/ +# fi +#done +cp -f $try/gettext/po/Makefile.in.in ./po/ +#if test -f intl/plural.c; then +# sleep 2 +# touch intl/plural.c +#fi + +# ------ END GETTEXT ------ + + +echo running $ACLOCAL... +$ACLOCAL $ACLOCAL_FLAGS +if test "$?" != "0"; then + echo aclocal failed, stopping. + exit 2 +fi +echo running libtoolize... +libtoolize --force +if test "$?" != "0"; then + echo libtoolize failed, stopping. + exit 3 +fi +echo running autoheader... +autoheader +if test "$?" != "0"; then + echo autoheader failed, stopping. + exit 4 +fi +echo running $AUTOMAKE... +$AUTOMAKE -a --foreign +if test "$?" != "0"; then + echo automake failed, stopping. + exit 5 +fi +echo running autoconf... +autoconf +if test "$?" != "0"; then + echo autoconf failed, stopping. + exit 6 +fi + +echo if no errors occured, run ./configure --enable-maintainer-mode +exit 0 + +#autogen.sh generates: +# aclocal.m4 Makefile.in config.guess config.sub ltmain.sh +# configure install-sh missing mkinstalldirs depcomp +# +#configure generates: +# config.status libtool Makefile.in diff --git a/etc/wyatt8740/config.guess b/etc/wyatt8740/config.guess new file mode 100755 index 0000000..dc84c68 --- /dev/null +++ b/etc/wyatt8740/config.guess @@ -0,0 +1,1501 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 +# Free Software Foundation, Inc. + +timestamp='2009-11-20' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program 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 +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Originally written by Per Bothner. Please send patches (context +# diff format) to and include a ChangeLog +# entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm:riscos:*:*|arm:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + s390x:SunOS:*:*) + echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux${UNAME_RELEASE} + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + eval $set_cc_for_build + SUN_ARCH="i386" + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH="x86_64" + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[456]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + case ${UNAME_MACHINE} in + pc98) + echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + *:Interix*:*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + 8664:Windows_NT:*) + echo x86_64-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit ;; + arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-unknown-linux-gnu + else + echo ${UNAME_MACHINE}-unknown-linux-gnueabi + fi + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit ;; + crisv32:Linux:*:*) + echo crisv32-axis-linux-gnu + exit ;; + frv:Linux:*:*) + echo frv-unknown-linux-gnu + exit ;; + i*86:Linux:*:*) + LIBC=gnu + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` + echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=${UNAME_MACHINE}el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=${UNAME_MACHINE} + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; + or32:Linux:*:*) + echo or32-unknown-linux-gnu + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-gnu + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-gnu + exit ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configury will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + case $UNAME_PROCESSOR in + i386) + eval $set_cc_for_build + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + UNAME_PROCESSOR="x86_64" + fi + fi ;; + unknown) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NSE-?:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix\n"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + c34*) + echo c34-convex-bsd + exit ;; + c38*) + echo c38-convex-bsd + exit ;; + c4*) + echo c4-convex-bsd + exit ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/etc/wyatt8740/config.h.in b/etc/wyatt8740/config.h.in new file mode 100644 index 0000000..1792a6a --- /dev/null +++ b/etc/wyatt8740/config.h.in @@ -0,0 +1,182 @@ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Where services dir for DBUS is */ +#undef DBUS_SERVICES_DIR + +/* Define to 1 if translation of program messages to the user's native + language is requested. */ +#undef ENABLE_NLS + +/* Gettext package name */ +#undef GETTEXT_PACKAGE + +/* Define to 1 if you have the Mac OS X function + CFLocaleCopyPreferredLanguages in the CoreFoundation framework. */ +#undef HAVE_CFLOCALECOPYPREFERREDLANGUAGES + +/* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in + the CoreFoundation framework. */ +#undef HAVE_CFPREFERENCESCOPYAPPVALUE + +/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +#undef HAVE_DCGETTEXT + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define to 1 if you have the `dlopen' function. */ +#undef HAVE_DLOPEN + +/* Define to 1 if you have the `getaddrinfo' function. */ +#undef HAVE_GETADDRINFO + +/* Define if the GNU gettext() function is already present or preinstalled. */ +#undef HAVE_GETTEXT + +/* Define if you have the iconv() function and it works. */ +#undef HAVE_ICONV + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the `cposix' library (-lcposix). */ +#undef HAVE_LIBCPOSIX + +/* Define to 1 if you have the `inet' library (-linet). */ +#undef HAVE_LIBINET + +/* Define to 1 if you have the `net' library (-lnet). */ +#undef HAVE_LIBNET + +/* Define to 1 if you have the `nsl' library (-lnsl). */ +#undef HAVE_LIBNSL + +/* Define to 1 if you have the `resolv' library (-lresolv). */ +#undef HAVE_LIBRESOLV + +/* Define to 1 if you have the `socket' library (-lsocket). */ +#undef HAVE_LIBSOCKET + +/* Define to 1 if you have the `X11' library (-lX11). */ +#undef HAVE_LIBX11 + +/* Define to 1 if you have the `memrchr' function. */ +#undef HAVE_MEMRCHR + +/* Define to 1 if you have the header file. */ +#undef HAVE_OPENSSL_SSL_H + +/* Define to 1 if you have the `snprintf' function. */ +#undef HAVE_SNPRINTF + +/* Define to 1 if you have the header file. */ +#undef HAVE_SOCKS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDIO_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the `strtoull' function. */ +#undef HAVE_STRTOULL + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_IPC_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SHM_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if you have the `vsnprintf' function. */ +#undef HAVE_VSNPRINTF + +/* Define to 1 if you have the header file. */ +#undef HAVE_X11_XFT_XFT_H + +/* Define to 1 if the system uses lookupd */ +#undef LOOKUPD + +/* Define to the sub-directory where libtool stores uninstalled libraries. */ +#undef LT_OBJDIR + +#undef OLD_PERL + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +#undef PREFIX + +#undef SOCKS + +/* Define to 1 if all of the C90 standard headers exist (not just the ones + required in a freestanding environment). This macro is provided for + backward compatibility; new code need not use it. */ +#undef STDC_HEADERS + +#undef USE_DBUS + +#undef USE_GTKSPELL + +#undef USE_IPV6 + +#undef USE_LIBSEXY + +#undef USE_MMX + +#undef USE_MSPROXY + +#undef USE_OPENSSL + +#undef USE_PLUGIN + +#undef USE_SHM + +#undef USE_SIGACTION + +#undef USE_XFT + +#undef USE_XLIB + +#undef USING_FREEBSD + +#undef USING_LINUX + +#undef XCHATLIBDIR + +#undef XCHATSHAREDIR + +#undef socklen_t diff --git a/etc/wyatt8740/config.h.w32 b/etc/wyatt8740/config.h.w32 new file mode 100644 index 0000000..24bd394 --- /dev/null +++ b/etc/wyatt8740/config.h.w32 @@ -0,0 +1,12 @@ +#define LOCALEDIR "./locale" +#define ENABLE_NLS +#define USE_GMODULE +#define USE_PLUGIN +#define PACKAGE_NAME "xchat" +#define PACKAGE_VERSION "2.8.8-Unofficial" +#define XCHATLIBDIR "." +#define XCHATSHAREDIR "." +#define OLD_PERL +#ifndef USE_IPV6 +#define socklen_t int +#endif diff --git a/etc/wyatt8740/config.log b/etc/wyatt8740/config.log new file mode 100644 index 0000000..ab1ad00 --- /dev/null +++ b/etc/wyatt8740/config.log @@ -0,0 +1,360 @@ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by XChat configure 2.8.8, which was +generated by GNU Autoconf 2.71. Invocation command line was + + $ ./configure + +## --------- ## +## Platform. ## +## --------- ## + +hostname = somejuan +uname -m = x86_64 +uname -r = 4.15.0-112-generic +uname -s = Linux +uname -v = #113-Ubuntu SMP Thu Jul 9 23:41:39 UTC 2020 + +/usr/bin/uname -p = unknown +/bin/uname -X = unknown + +/bin/arch = unknown +/usr/bin/arch -k = unknown +/usr/convex/getsysinfo = unknown +/usr/bin/hostinfo = unknown +/bin/machine = unknown +/usr/bin/oslevel = unknown +/bin/universe = unknown + +PATH: /home/jdaugherty/.ciao/build/bin/ +PATH: /home/jdaugherty/.ciaoroot/master/build/bin/ +PATH: /home/jdaugherty/.autojump/bin/ +PATH: /home/jdaugherty/bin/ +PATH: /home/jdaugherty/perl5/bin/ +PATH: /home/jdaugherty/perl5/bin/ +PATH: /home/jdaugherty/.local/bin/ +PATH: /home/jdaugherty/bin/ +PATH: /home/jdaugherty/.cabal/bin/ +PATH: /home/jdaugherty/.ghcup/bin/ +PATH: /home/jdaugherty/.nvm/versions/node/v16.2.0/bin/ +PATH: /home/jdaugherty/perl5/bin/ +PATH: /usr/local/sbin/ +PATH: /usr/local/bin/ +PATH: /usr/sbin/ +PATH: /usr/bin/ +PATH: /sbin/ +PATH: /bin/ +PATH: /usr/games/ +PATH: /usr/local/games/ +PATH: /snap/bin/ +PATH: /home/jdaugherty/.dotnet/tools/ +PATH: /home/jdaugherty/work/pl/logtalk/tools/lgtdoc/xml/ +PATH: /home/jdaugherty/work/pl/logtalk/scripts/ +PATH: /home/jdaugherty/work/pl/logtalk/integration/ +PATH: /home/jdaugherty/Android/Sdk/emulator/ +PATH: /home/jdaugherty/Android/Sdk/tools/ +PATH: /home/jdaugherty/Android/Sdk/tools/bin/ +PATH: /home/jdaugherty/Android/Sdk/platform-tools/ + + +## ----------- ## +## Core tests. ## +## ----------- ## + +configure:2630: looking for aux files: config.rpath config.guess config.sub ltmain.sh compile missing install-sh +configure:2643: trying ./ +configure:2672: ./config.rpath found +configure:2672: ./config.guess found +configure:2672: ./config.sub found +configure:2654: ./install-sh found +configure:2643: trying ./../ +configure:2643: trying ./../../ +configure:2696: error: cannot find required auxiliary files: ltmain.sh compile missing + +## ---------------- ## +## Cache variables. ## +## ---------------- ## + +ac_cv_env_CCASFLAGS_set= +ac_cv_env_CCASFLAGS_value= +ac_cv_env_CCAS_set= +ac_cv_env_CCAS_value= +ac_cv_env_CC_set= +ac_cv_env_CC_value= +ac_cv_env_CFLAGS_set= +ac_cv_env_CFLAGS_value= +ac_cv_env_CPPFLAGS_set= +ac_cv_env_CPPFLAGS_value= +ac_cv_env_CPP_set= +ac_cv_env_CPP_value= +ac_cv_env_DBUS_CFLAGS_set= +ac_cv_env_DBUS_CFLAGS_value= +ac_cv_env_DBUS_LIBS_set= +ac_cv_env_DBUS_LIBS_value= +ac_cv_env_GLIB_CFLAGS_set= +ac_cv_env_GLIB_CFLAGS_value= +ac_cv_env_GLIB_COMPILE_RESOURCES_set= +ac_cv_env_GLIB_COMPILE_RESOURCES_value= +ac_cv_env_GLIB_GENMARSHAL_set= +ac_cv_env_GLIB_GENMARSHAL_value= +ac_cv_env_GLIB_LIBS_set= +ac_cv_env_GLIB_LIBS_value= +ac_cv_env_GLIB_MKENUMS_set= +ac_cv_env_GLIB_MKENUMS_value= +ac_cv_env_GOBJECT_QUERY_set= +ac_cv_env_GOBJECT_QUERY_value= +ac_cv_env_GTKSPELL_CFLAGS_set= +ac_cv_env_GTKSPELL_CFLAGS_value= +ac_cv_env_GTKSPELL_LIBS_set= +ac_cv_env_GTKSPELL_LIBS_value= +ac_cv_env_LDFLAGS_set=set +ac_cv_env_LDFLAGS_value=-lgmodule-2.0 +ac_cv_env_LIBSEXY_CFLAGS_set= +ac_cv_env_LIBSEXY_CFLAGS_value= +ac_cv_env_LIBSEXY_LIBS_set= +ac_cv_env_LIBSEXY_LIBS_value= +ac_cv_env_LIBS_set= +ac_cv_env_LIBS_value= +ac_cv_env_LT_SYS_LIBRARY_PATH_set= +ac_cv_env_LT_SYS_LIBRARY_PATH_value= +ac_cv_env_PKG_CONFIG_LIBDIR_set= +ac_cv_env_PKG_CONFIG_LIBDIR_value= +ac_cv_env_PKG_CONFIG_PATH_set= +ac_cv_env_PKG_CONFIG_PATH_value= +ac_cv_env_PKG_CONFIG_set= +ac_cv_env_PKG_CONFIG_value= +ac_cv_env_build_alias_set= +ac_cv_env_build_alias_value= +ac_cv_env_host_alias_set= +ac_cv_env_host_alias_value= +ac_cv_env_target_alias_set= +ac_cv_env_target_alias_value= + +## ----------------- ## +## Output variables. ## +## ----------------- ## + +ACLOCAL='' +AMDEPBACKSLASH='' +AMDEP_FALSE='' +AMDEP_TRUE='' +AMTAR='' +AM_BACKSLASH='' +AM_DEFAULT_V='' +AM_DEFAULT_VERBOSITY='' +AM_V='' +AR='' +AUTOCONF='' +AUTOHEADER='' +AUTOMAKE='' +AWK='' +CC='' +CCAS='' +CCASDEPMODE='' +CCASFLAGS='' +CCDEPMODE='' +CFLAGS='' +COMMON_CFLAGS='' +COMMON_LIBS='' +CPP='' +CPPFLAGS='' +CSCOPE='' +CTAGS='' +CYGPATH_W='' +DATADIR='' +DBUS_BINDING_TOOL='' +DBUS_CFLAGS='' +DBUS_LIBS='' +DBUS_SERVICES_DIR='' +DEFS='' +DEPDIR='' +DLLTOOL='' +DO_GCONF_FALSE='' +DO_GCONF_TRUE='' +DO_GTK_FALSE='' +DO_GTK_TRUE='' +DO_PERL_FALSE='' +DO_PERL_TRUE='' +DO_PLUGIN_FALSE='' +DO_PLUGIN_TRUE='' +DO_PYTHON_FALSE='' +DO_PYTHON_TRUE='' +DO_TCL_FALSE='' +DO_TCL_TRUE='' +DO_TEXT_FALSE='' +DO_TEXT_TRUE='' +DSYMUTIL='' +DUMPBIN='' +ECHO_C='' +ECHO_N='-n' +ECHO_T='' +EGREP='' +ETAGS='' +EXEEXT='' +FGREP='' +FILECMD='' +GCONFTOOL='' +GETTEXT_MACRO_VERSION='' +GETTEXT_PACKAGE='' +GLIB_CFLAGS='' +GLIB_COMPILE_RESOURCES='' +GLIB_GENMARSHAL='' +GLIB_LIBS='' +GLIB_MKENUMS='' +GMSGFMT='' +GMSGFMT_015='' +GOBJECT_QUERY='' +GREP='' +GTKSPELL_CFLAGS='' +GTKSPELL_LIBS='' +GTK_CFLAGS='' +GTK_LIBS='' +GUI_CFLAGS='' +GUI_LIBS='' +INSTALL_DATA='' +INSTALL_PROGRAM='' +INSTALL_SCRIPT='' +INSTALL_STRIP_PROGRAM='' +INTLLIBS='' +INTL_MACOSX_LIBS='' +LD='' +LDFLAGS='-lgmodule-2.0' +LIBICONV='' +LIBINTL='' +LIBOBJS='' +LIBS='' +LIBSEXY_CFLAGS='' +LIBSEXY_LIBS='' +LIBTOOL='' +LIPO='' +LN_S='' +LTLIBICONV='' +LTLIBINTL='' +LTLIBOBJS='' +LT_SYS_LIBRARY_PATH='' +MAINT='' +MAINTAINER_MODE_FALSE='' +MAINTAINER_MODE_TRUE='' +MAKEINFO='' +MANIFEST_TOOL='' +MKDIR_P='' +MSGFMT='' +MSGMERGE='' +MSGMERGE_FOR_MSGFMT_OPTION='' +NM='' +NMEDIT='' +OBJDUMP='' +OBJEXT='' +OTOOL64='' +OTOOL='' +PACKAGE='' +PACKAGE_BUGREPORT='http://www.xchat.org/' +PACKAGE_NAME='XChat' +PACKAGE_STRING='XChat 2.8.8' +PACKAGE_TARNAME='xchat' +PACKAGE_URL='' +PACKAGE_VERSION='2.8.8' +PATH_SEPARATOR=':' +PERL_CFLAGS='' +PERL_LDFLAGS='' +PKG_CONFIG='' +PKG_CONFIG_LIBDIR='' +PKG_CONFIG_PATH='' +PLUGIN_INCLUDES='' +POSUB='' +PY_CFLAGS='' +PY_LIBS='' +RANLIB='' +SED='' +SET_MAKE='' +SHELL='/bin/bash' +STRIP='' +TCL_CFLAGS='' +TCL_LIBS='' +USE_DBUS_FALSE='' +USE_DBUS_TRUE='' +USE_LIBSEXY_FALSE='' +USE_LIBSEXY_TRUE='' +USE_MMX_FALSE='' +USE_MMX_TRUE='' +USE_NLS='' +USE_OPENSSL_FALSE='' +USE_OPENSSL_TRUE='' +VERSION='' +XGETTEXT='' +XGETTEXT_015='' +XGETTEXT_EXTRA_OPTIONS='' +ac_ct_AR='' +ac_ct_CC='' +ac_ct_DUMPBIN='' +am__EXEEXT_FALSE='' +am__EXEEXT_TRUE='' +am__fastdepCCAS_FALSE='' +am__fastdepCCAS_TRUE='' +am__fastdepCC_FALSE='' +am__fastdepCC_TRUE='' +am__include='' +am__isrc='' +am__leading_dot='' +am__nodep='' +am__quote='' +am__tar='' +am__untar='' +bindir='${exec_prefix}/bin' +build='' +build_alias='' +build_cpu='' +build_os='' +build_vendor='' +datadir='${datarootdir}' +datarootdir='${prefix}/share' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +dvidir='${docdir}' +exec_prefix='NONE' +gdkpixbufcsourcepath='' +host='' +host_alias='' +host_cpu='' +host_os='' +host_vendor='' +htmldir='${docdir}' +includedir='${prefix}/include' +infodir='${datarootdir}/info' +install_sh='' +libdir='${exec_prefix}/lib' +libexecdir='${exec_prefix}/libexec' +localedir='${datarootdir}/locale' +localstatedir='${prefix}/var' +mandir='${datarootdir}/man' +mkdir_p='' +oldincludedir='/usr/include' +pdfdir='${docdir}' +perlpath='' +pkgconfigpath='' +prefix='NONE' +program_transform_name='s,x,x,' +psdir='${docdir}' +pythonpath='' +runstatedir='${localstatedir}/run' +sbindir='${exec_prefix}/sbin' +sedpath='' +sharedstatedir='${prefix}/com' +sysconfdir='${prefix}/etc' +target_alias='' +unamepath='' +xchatlibdir='' + +## ----------- ## +## confdefs.h. ## +## ----------- ## + +/* confdefs.h */ +#define PACKAGE_NAME "XChat" +#define PACKAGE_TARNAME "xchat" +#define PACKAGE_VERSION "2.8.8" +#define PACKAGE_STRING "XChat 2.8.8" +#define PACKAGE_BUGREPORT "http://www.xchat.org/" +#define PACKAGE_URL "" + +configure: exit 1 diff --git a/etc/wyatt8740/config.rpath b/etc/wyatt8740/config.rpath new file mode 100755 index 0000000..24be79c --- /dev/null +++ b/etc/wyatt8740/config.rpath @@ -0,0 +1,684 @@ +#! /bin/sh +# Output a system dependent set of variables, describing how to set the +# run time search path of shared libraries in an executable. +# +# Copyright 1996-2020 Free Software Foundation, Inc. +# Taken from GNU libtool, 2001 +# Originally by Gordon Matzigkeit , 1996 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. +# +# The first argument passed to this file is the canonical host specification, +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld +# should be set by the caller. +# +# The set of defined variables is at the end of this script. + +# Known limitations: +# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer +# than 256 bytes, otherwise the compiler driver will dump core. The only +# known workaround is to choose shorter directory names for the build +# directory and/or the installation directory. + +# All known linkers require a '.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a +shrext=.so + +host="$1" +host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + +# Code taken from libtool.m4's _LT_CC_BASENAME. + +for cc_temp in $CC""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'` + +# Code taken from libtool.m4's _LT_COMPILER_PIC. + +wl= +if test "$GCC" = yes; then + wl='-Wl,' +else + case "$host_os" in + aix*) + wl='-Wl,' + ;; + mingw* | cygwin* | pw32* | os2* | cegcc*) + ;; + hpux9* | hpux10* | hpux11*) + wl='-Wl,' + ;; + irix5* | irix6* | nonstopux*) + wl='-Wl,' + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + ecc*) + wl='-Wl,' + ;; + icc* | ifort*) + wl='-Wl,' + ;; + lf95*) + wl='-Wl,' + ;; + nagfor*) + wl='-Wl,-Wl,,' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + wl='-Wl,' + ;; + ccc*) + wl='-Wl,' + ;; + xl* | bgxl* | bgf* | mpixl*) + wl='-Wl,' + ;; + como) + wl='-lopt=' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ F* | *Sun*Fortran*) + wl= + ;; + *Sun\ C*) + wl='-Wl,' + ;; + esac + ;; + esac + ;; + newsos6) + ;; + *nto* | *qnx*) + ;; + osf3* | osf4* | osf5*) + wl='-Wl,' + ;; + rdos*) + ;; + solaris*) + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + wl='-Qoption ld ' + ;; + *) + wl='-Wl,' + ;; + esac + ;; + sunos4*) + wl='-Qoption ld ' + ;; + sysv4 | sysv4.2uw2* | sysv4.3*) + wl='-Wl,' + ;; + sysv4*MP*) + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + wl='-Wl,' + ;; + unicos*) + wl='-Wl,' + ;; + uts4*) + ;; + esac +fi + +# Code taken from libtool.m4's _LT_LINKER_SHLIBS. + +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no + +case "$host_os" in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; +esac + +ld_shlibs=yes +if test "$with_gnu_ld" = yes; then + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + # Unlike libtool, we use -rpath here, not --rpath, since the documented + # option of GNU ld is called -rpath, not --rpath. + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + case "$host_os" in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + fi + ;; + amigaos*) + case "$host_cpu" in + powerpc) + ;; + m68k) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + cygwin* | mingw* | pw32* | cegcc*) + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + haiku*) + ;; + interix[3-9]*) + hardcode_direct=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + netbsd*) + ;; + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + else + ld_shlibs=no + fi + ;; + esac + ;; + sunos4*) + hardcode_direct=yes + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + esac + if test "$ld_shlibs" = no; then + hardcode_libdir_flag_spec= + fi +else + case "$host_os" in + aix3*) + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + else + aix_use_runtimelinking=no + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + fi + hardcode_direct=yes + hardcode_libdir_separator=':' + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + fi + # Begin _LT_AC_SYS_LIBPATH_AIX. + echo 'int main () { return 0; }' > conftest.c + ${CC} ${LDFLAGS} conftest.c -o conftest + aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` + if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` + fi + if test -z "$aix_libpath"; then + aix_libpath="/usr/lib:/lib" + fi + rm -f conftest.c conftest + # End _LT_AC_SYS_LIBPATH_AIX. + if test "$aix_use_runtimelinking" = yes; then + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + else + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + fi + fi + ;; + amigaos*) + case "$host_cpu" in + powerpc) + ;; + m68k) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + bsdi[45]*) + ;; + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + libext=lib + ;; + darwin* | rhapsody*) + hardcode_direct=no + if { case $cc_basename in ifort*) true;; *) test "$GCC" = yes;; esac; }; then + : + else + ld_shlibs=no + fi + ;; + dgux*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + freebsd2.[01]*) + hardcode_direct=yes + hardcode_minus_L=yes + ;; + freebsd* | dragonfly*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + hpux9*) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + hpux10*) + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + hpux11*) + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + ;; + *) + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + irix5* | irix6* | nonstopux*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + netbsd*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + newsos6) + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + *nto* | *qnx*) + ;; + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + else + case "$host_os" in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs=no + fi + ;; + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + osf3*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + osf4* | osf5*) + if test "$GCC" = yes; then + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + # Both cc and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + solaris*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + sunos4*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + ;; + sysv4) + case $host_vendor in + sni) + hardcode_direct=yes # is this really true??? + ;; + siemens) + hardcode_direct=no + ;; + motorola) + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + ;; + sysv4.3*) + ;; + sysv4*MP*) + if test -d /usr/nec; then + ld_shlibs=yes + fi + ;; + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + ;; + sysv5* | sco3.2v5* | sco5v6*) + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator=':' + ;; + uts4*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + *) + ld_shlibs=no + ;; + esac +fi + +# Check dynamic linker characteristics +# Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER. +# Unlike libtool.m4, here we don't care about _all_ names of the library, but +# only about the one the linker finds when passed -lNAME. This is the last +# element of library_names_spec in libtool.m4, or possibly two of them if the +# linker has special search rules. +library_names_spec= # the last element of library_names_spec in libtool.m4 +libname_spec='lib$name' +case "$host_os" in + aix3*) + library_names_spec='$libname.a' + ;; + aix[4-9]*) + library_names_spec='$libname$shrext' + ;; + amigaos*) + case "$host_cpu" in + powerpc*) + library_names_spec='$libname$shrext' ;; + m68k) + library_names_spec='$libname.a' ;; + esac + ;; + beos*) + library_names_spec='$libname$shrext' + ;; + bsdi[45]*) + library_names_spec='$libname$shrext' + ;; + cygwin* | mingw* | pw32* | cegcc*) + shrext=.dll + library_names_spec='$libname.dll.a $libname.lib' + ;; + darwin* | rhapsody*) + shrext=.dylib + library_names_spec='$libname$shrext' + ;; + dgux*) + library_names_spec='$libname$shrext' + ;; + freebsd[23].*) + library_names_spec='$libname$shrext$versuffix' + ;; + freebsd* | dragonfly*) + library_names_spec='$libname$shrext' + ;; + gnu*) + library_names_spec='$libname$shrext' + ;; + haiku*) + library_names_spec='$libname$shrext' + ;; + hpux9* | hpux10* | hpux11*) + case $host_cpu in + ia64*) + shrext=.so + ;; + hppa*64*) + shrext=.sl + ;; + *) + shrext=.sl + ;; + esac + library_names_spec='$libname$shrext' + ;; + interix[3-9]*) + library_names_spec='$libname$shrext' + ;; + irix5* | irix6* | nonstopux*) + library_names_spec='$libname$shrext' + case "$host_os" in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; + *) libsuff= shlibsuff= ;; + esac + ;; + esac + ;; + linux*oldld* | linux*aout* | linux*coff*) + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu) + library_names_spec='$libname$shrext' + ;; + knetbsd*-gnu) + library_names_spec='$libname$shrext' + ;; + netbsd*) + library_names_spec='$libname$shrext' + ;; + newsos6) + library_names_spec='$libname$shrext' + ;; + *nto* | *qnx*) + library_names_spec='$libname$shrext' + ;; + openbsd*) + library_names_spec='$libname$shrext$versuffix' + ;; + os2*) + libname_spec='$name' + shrext=.dll + library_names_spec='$libname.a' + ;; + osf3* | osf4* | osf5*) + library_names_spec='$libname$shrext' + ;; + rdos*) + ;; + solaris*) + library_names_spec='$libname$shrext' + ;; + sunos4*) + library_names_spec='$libname$shrext$versuffix' + ;; + sysv4 | sysv4.3*) + library_names_spec='$libname$shrext' + ;; + sysv4*MP*) + library_names_spec='$libname$shrext' + ;; + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + library_names_spec='$libname$shrext' + ;; + tpf*) + library_names_spec='$libname$shrext' + ;; + uts4*) + library_names_spec='$libname$shrext' + ;; +esac + +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' +escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` +shlibext=`echo "$shrext" | sed -e 's,^\.,,'` +escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` +escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` +escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` + +LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <. Submit a context +# diff and a properly formatted GNU ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ + uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ + kopensolaris*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray | -microblaze) + os= + basic_machine=$1 + ;; + -bluegene*) + os=-cnk + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | bfin \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fido | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nios | nios2 \ + | ns16k | ns32k \ + | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e \ + | we32k \ + | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12 | picochip) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nios-* | nios2-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ + | tron-* \ + | ubicom32-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aros) + basic_machine=i386-pc + os=-aros + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + microblaze) + basic_machine=microblaze-xilinx + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-unknown + os=-coff + ;; + tile*) + basic_machine=tile-unknown + os=-linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + z80-*-coff) + basic_machine=z80-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -auroraux) + os=-auroraux + ;; + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -zvmoe) + os=-zvmoe + ;; + -dicos*) + os=-dicos + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mep-*) + os=-elf + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -cnk*|-aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/etc/wyatt8740/configure b/etc/wyatt8740/configure new file mode 100755 index 0000000..0747324 --- /dev/null +++ b/etc/wyatt8740/configure @@ -0,0 +1,21583 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.71 for XChat 2.8.8. +# +# Report bugs to . +# +# +# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, +# Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +# +# Copyright (C) 1998-2010 Peter Zelezny +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else $as_nop + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="as_nop=: +if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else \$as_nop + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : + +else \$as_nop + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 + + test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ + || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null +then : + as_have_required=yes +else $as_nop + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : + +else $as_nop + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$as_shell as_have_required=yes + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : + break 2 +fi +fi + done;; + esac + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi +fi + + + if test "x$CONFIG_SHELL" != x +then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno +then : + printf "%s\n" "$0: This script requires a shell more modern than all" + printf "%s\n" "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." + else + printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and +$0: http://www.xchat.org/ about your system, including any +$0: error possibly output before this message. Then install +$0: a modern shell, or manually run the script under such a +$0: shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else $as_nop + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else $as_nop + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + +SHELL=${CONFIG_SHELL-/bin/sh} + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='XChat' +PACKAGE_TARNAME='xchat' +PACKAGE_VERSION='2.8.8' +PACKAGE_STRING='XChat 2.8.8' +PACKAGE_BUGREPORT='http://www.xchat.org/' +PACKAGE_URL='' + +ac_unique_file="configure.ac" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_STDIO_H +# include +#endif +#ifdef HAVE_STDLIB_H +# include +#endif +#ifdef HAVE_STRING_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_header_c_list= +gt_needs= +ac_subst_vars='am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +LIBOBJS +xchatlibdir +PLUGIN_INCLUDES +TCL_CFLAGS +TCL_LIBS +PY_LIBS +PY_CFLAGS +PERL_LDFLAGS +PERL_CFLAGS +COMMON_CFLAGS +COMMON_LIBS +GUI_CFLAGS +GUI_LIBS +gdkpixbufcsourcepath +USE_MMX_FALSE +USE_MMX_TRUE +DO_GCONF_FALSE +DO_GCONF_TRUE +USE_DBUS_FALSE +USE_DBUS_TRUE +DO_PLUGIN_FALSE +DO_PLUGIN_TRUE +DO_TCL_FALSE +DO_TCL_TRUE +DO_PYTHON_FALSE +DO_PYTHON_TRUE +DO_PERL_FALSE +DO_PERL_TRUE +DO_GTK_FALSE +DO_GTK_TRUE +DO_TEXT_FALSE +DO_TEXT_TRUE +USE_LIBSEXY_FALSE +USE_LIBSEXY_TRUE +USE_OPENSSL_FALSE +USE_OPENSSL_TRUE +LIBSEXY_LIBS +LIBSEXY_CFLAGS +GTKSPELL_LIBS +GTKSPELL_CFLAGS +DBUS_SERVICES_DIR +DATADIR +DBUS_BINDING_TOOL +DBUS_LIBS +DBUS_CFLAGS +pythonpath +perlpath +pkgconfigpath +GCONFTOOL +GTK_LIBS +GTK_CFLAGS +GLIB_COMPILE_RESOURCES +GLIB_MKENUMS +GOBJECT_QUERY +GLIB_GENMARSHAL +GLIB_LIBS +GLIB_CFLAGS +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH +PKG_CONFIG +unamepath +sedpath +POSUB +LTLIBINTL +LIBINTL +INTLLIBS +LTLIBICONV +LIBICONV +INTL_MACOSX_LIBS +XGETTEXT_EXTRA_OPTIONS +MSGMERGE_FOR_MSGFMT_OPTION +MSGMERGE +XGETTEXT_015 +XGETTEXT +GMSGFMT_015 +GMSGFMT +MSGFMT +GETTEXT_MACRO_VERSION +USE_NLS +GETTEXT_PACKAGE +LT_SYS_LIBRARY_PATH +OTOOL64 +OTOOL +LIPO +NMEDIT +DSYMUTIL +MANIFEST_TOOL +RANLIB +ac_ct_AR +AR +DLLTOOL +OBJDUMP +FILECMD +LN_S +NM +ac_ct_DUMPBIN +DUMPBIN +LD +FGREP +EGREP +GREP +SED +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +LIBTOOL +am__fastdepCCAS_FALSE +am__fastdepCCAS_TRUE +CCASDEPMODE +CCASFLAGS +CCAS +CPP +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +MAINT +MAINTAINER_MODE_FALSE +MAINTAINER_MODE_TRUE +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +CSCOPE +ETAGS +CTAGS +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL +am__quote' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_silent_rules +enable_maintainer_mode +enable_dependency_tracking +enable_static +enable_shared +with_pic +enable_fast_install +with_aix_soname +with_gnu_ld +with_sysroot +enable_libtool_lock +enable_nls +enable_rpath +with_libiconv_prefix +with_libintl_prefix +enable_socks +enable_ipv6 +enable_xft +enable_openssl +enable_gtkfe +enable_textfe +enable_xlib +enable_python +enable_perl +enable_perl_old +enable_tcl +enable_plugin +enable_dbus +enable_mmx +enable_shm +enable_spell +enable_ntlm +enable_glibtest +enable_gtktest +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +CCAS +CCASFLAGS +LT_SYS_LIBRARY_PATH +PKG_CONFIG +PKG_CONFIG_PATH +PKG_CONFIG_LIBDIR +GLIB_CFLAGS +GLIB_LIBS +GLIB_GENMARSHAL +GOBJECT_QUERY +GLIB_MKENUMS +GLIB_COMPILE_RESOURCES +DBUS_CFLAGS +DBUS_LIBS +GTKSPELL_CFLAGS +GTKSPELL_LIBS +LIBSEXY_CFLAGS +LIBSEXY_LIBS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir runstatedir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures XChat 2.8.8 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/xchat] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of XChat 2.8.8:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-maintainer-mode + enable make rules and dependencies not useful (and + sometimes confusing) to the casual installer + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --enable-static[=PKGS] build static libraries [default=no] + --enable-shared[=PKGS] build shared libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) + --disable-nls do not use Native Language Support + --disable-rpath do not hardcode runtime library paths + --enable-socks link with SOCKS5 library (default: no) + --enable-ipv6 enable IPv6 (default: no) + --enable-xft enable use of Xft directly (default: no) + --enable-openssl=PATH enable use of openSSL + --disable-gtkfe disable building gtk frontend + --enable-textfe build the text frontend (default: no) + --disable-xlib disable use of xlib (for non X11 systems) + --disable-python don't build the python plugin + --disable-perl don't build the perl plugin + --disable-perl_old no backwards compatibility for perl plugin + --enable-tcl=PATH directory with Tcl config file: tclConfig.sh + --disable-plugin disable plugin support + --disable-dbus disable DBUS support + --disable-mmx disable MMX assembly routines + --enable-shm enable use of XShm for fast tinting (default: no) + --enable-spell=type enable spelling type: none static libsexy gtkspell + --enable-ntlm enable Microsoft's NTLM auth (libntlm) library support (default: no) + --disable-glibtest do not try to compile and run a test GLIB program + --disable-gtktest do not try to compile and run a test GTK+ program + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use + both] + --with-aix-soname=aix|svr4|both + shared library versioning (aka "SONAME") variant to + provide on AIX, [default=aix]. + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-sysroot[=DIR] Search for dependent libraries within DIR (or the + compiler's sysroot if not specified). + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib + --without-libiconv-prefix don't search for libiconv in includedir and libdir + --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib + --without-libintl-prefix don't search for libintl in includedir and libdir + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + CCAS assembler compiler command (defaults to CC) + CCASFLAGS assembler compiler flags (defaults to CFLAGS) + LT_SYS_LIBRARY_PATH + User-defined run-time library search path. + PKG_CONFIG path to pkg-config utility + PKG_CONFIG_PATH + directories to add to pkg-config's search path + PKG_CONFIG_LIBDIR + path overriding pkg-config's built-in search path + GLIB_CFLAGS C compiler flags for GLIB, overriding pkg-config + GLIB_LIBS linker flags for GLIB, overriding pkg-config + GLIB_GENMARSHAL + value of glib_genmarshal for glib-2.0, overriding pkg-config + GOBJECT_QUERY + value of gobject_query for glib-2.0, overriding pkg-config + GLIB_MKENUMS + value of glib_mkenums for glib-2.0, overriding pkg-config + GLIB_COMPILE_RESOURCES + value of glib_compile_resources for gio-2.0, overriding + pkg-config + DBUS_CFLAGS C compiler flags for DBUS, overriding pkg-config + DBUS_LIBS linker flags for DBUS, overriding pkg-config + GTKSPELL_CFLAGS + C compiler flags for GTKSPELL, overriding pkg-config + GTKSPELL_LIBS + linker flags for GTKSPELL, overriding pkg-config + LIBSEXY_CFLAGS + C compiler flags for LIBSEXY, overriding pkg-config + LIBSEXY_LIBS + linker flags for LIBSEXY, overriding pkg-config + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +XChat configure 2.8.8 +generated by GNU Autoconf 2.71 + +Copyright (C) 2021 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. + +Copyright (C) 1998-2010 Peter Zelezny +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext +then : + ac_retval=0 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + } +then : + ac_retval=0 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + } +then : + ac_retval=0 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else $as_nop + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +eval ac_res=\$$3 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. */ + +#include +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main (void) +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$3=yes" +else $as_nop + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that +# executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } +then : + ac_retval=0 +else $as_nop + printf "%s\n" "$as_me: program exited with status $ac_status" >&5 + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run +ac_configure_args_raw= +for ac_arg +do + case $ac_arg in + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_configure_args_raw " '$ac_arg'" +done + +case $ac_configure_args_raw in + *$as_nl*) + ac_safe_unquote= ;; + *) + ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. + ac_unsafe_a="$ac_unsafe_z#~" + ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" + ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; +esac + +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by XChat $as_me 2.8.8, which was +generated by GNU Autoconf 2.71. Invocation command line was + + $ $0$ac_configure_args_raw + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf "%s\n" "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Sanitize IFS. + IFS=" "" $as_nl" + # Save into config.log some information that might help in debugging. + { + echo + + printf "%s\n" "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + printf "%s\n" "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + printf "%s\n" "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + printf "%s\n" "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + printf "%s\n" "$as_me: caught signal $ac_signal" + printf "%s\n" "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +printf "%s\n" "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +if test -n "$CONFIG_SITE"; then + ac_site_files="$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" +else + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +fi + +for ac_site_file in $ac_site_files +do + case $ac_site_file in #( + */*) : + ;; #( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf "%s\n" "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf "%s\n" "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Test code for whether the C compiler supports C89 (global declarations) +ac_c_conftest_c89_globals=' +/* Does the compiler advertise C89 conformance? + Do not test the value of __STDC__, because some compilers set it to 0 + while being otherwise adequately conformant. */ +#if !defined __STDC__ +# error "Compiler does not advertise C89 conformance" +#endif + +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ +struct buf { int x; }; +struct buf * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not \xHH hex character constants. + These do not provoke an error unfortunately, instead are silently treated + as an "x". The following induces an error, until -std is added to get + proper ANSI mode. Curiously \x00 != x always comes out true, for an + array size at least. It is necessary to write \x00 == 0 to get something + that is true only with -std. */ +int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) '\''x'\'' +int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), + int, int);' + +# Test code for whether the C compiler supports C89 (body of main). +ac_c_conftest_c89_main=' +ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); +' + +# Test code for whether the C compiler supports C99 (global declarations) +ac_c_conftest_c99_globals=' +// Does the compiler advertise C99 conformance? +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L +# error "Compiler does not advertise C99 conformance" +#endif + +#include +extern int puts (const char *); +extern int printf (const char *, ...); +extern int dprintf (int, const char *, ...); +extern void *malloc (size_t); + +// Check varargs macros. These examples are taken from C99 6.10.3.5. +// dprintf is used instead of fprintf to avoid needing to declare +// FILE and stderr. +#define debug(...) dprintf (2, __VA_ARGS__) +#define showlist(...) puts (#__VA_ARGS__) +#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) +static void +test_varargs_macros (void) +{ + int x = 1234; + int y = 5678; + debug ("Flag"); + debug ("X = %d\n", x); + showlist (The first, second, and third items.); + report (x>y, "x is %d but y is %d", x, y); +} + +// Check long long types. +#define BIG64 18446744073709551615ull +#define BIG32 4294967295ul +#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) +#if !BIG_OK + #error "your preprocessor is broken" +#endif +#if BIG_OK +#else + #error "your preprocessor is broken" +#endif +static long long int bignum = -9223372036854775807LL; +static unsigned long long int ubignum = BIG64; + +struct incomplete_array +{ + int datasize; + double data[]; +}; + +struct named_init { + int number; + const wchar_t *name; + double average; +}; + +typedef const char *ccp; + +static inline int +test_restrict (ccp restrict text) +{ + // See if C++-style comments work. + // Iterate through items via the restricted pointer. + // Also check for declarations in for loops. + for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) + continue; + return 0; +} + +// Check varargs and va_copy. +static bool +test_varargs (const char *format, ...) +{ + va_list args; + va_start (args, format); + va_list args_copy; + va_copy (args_copy, args); + + const char *str = ""; + int number = 0; + float fnumber = 0; + + while (*format) + { + switch (*format++) + { + case '\''s'\'': // string + str = va_arg (args_copy, const char *); + break; + case '\''d'\'': // int + number = va_arg (args_copy, int); + break; + case '\''f'\'': // float + fnumber = va_arg (args_copy, double); + break; + default: + break; + } + } + va_end (args_copy); + va_end (args); + + return *str && number && fnumber; +} +' + +# Test code for whether the C compiler supports C99 (body of main). +ac_c_conftest_c99_main=' + // Check bool. + _Bool success = false; + success |= (argc != 0); + + // Check restrict. + if (test_restrict ("String literal") == 0) + success = true; + char *restrict newvar = "Another string"; + + // Check varargs. + success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + struct incomplete_array *ia = + malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + int dynamic_array[ni.number]; + dynamic_array[0] = argv[0][0]; + dynamic_array[ni.number - 1] = 543; + + // work around unused variable warnings + ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' + || dynamic_array[ni.number - 1] != 543); +' + +# Test code for whether the C compiler supports C11 (global declarations) +ac_c_conftest_c11_globals=' +// Does the compiler advertise C11 conformance? +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L +# error "Compiler does not advertise C11 conformance" +#endif + +// Check _Alignas. +char _Alignas (double) aligned_as_double; +char _Alignas (0) no_special_alignment; +extern char aligned_as_int; +char _Alignas (0) _Alignas (int) aligned_as_int; + +// Check _Alignof. +enum +{ + int_alignment = _Alignof (int), + int_array_alignment = _Alignof (int[100]), + char_alignment = _Alignof (char) +}; +_Static_assert (0 < -_Alignof (int), "_Alignof is signed"); + +// Check _Noreturn. +int _Noreturn does_not_return (void) { for (;;) continue; } + +// Check _Static_assert. +struct test_static_assert +{ + int x; + _Static_assert (sizeof (int) <= sizeof (long int), + "_Static_assert does not work in struct"); + long int y; +}; + +// Check UTF-8 literals. +#define u8 syntax error! +char const utf8_literal[] = u8"happens to be ASCII" "another string"; + +// Check duplicate typedefs. +typedef long *long_ptr; +typedef long int *long_ptr; +typedef long_ptr long_ptr; + +// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. +struct anonymous +{ + union { + struct { int i; int j; }; + struct { int k; long int l; } w; + }; + int m; +} v1; +' + +# Test code for whether the C compiler supports C11 (body of main). +ac_c_conftest_c11_main=' + _Static_assert ((offsetof (struct anonymous, i) + == offsetof (struct anonymous, w.k)), + "Anonymous union alignment botch"); + v1.i = 2; + v1.w.k = 5; + ok |= v1.i != 5; +' + +# Test code for whether the C compiler supports C11 (complete). +ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} +${ac_c_conftest_c11_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + ${ac_c_conftest_c11_main} + return ok; +} +" + +# Test code for whether the C compiler supports C99 (complete). +ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + return ok; +} +" + +# Test code for whether the C compiler supports C89 (complete). +ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + return ok; +} +" + +as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" +as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" +as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" +as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" +as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" +as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" +as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" +as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" +as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" +gt_needs="$gt_needs " + +# Auxiliary files required by this configure script. +ac_aux_files="config.rpath config.guess config.sub ltmain.sh compile missing install-sh" + +# Locations in which to look for auxiliary files. +ac_aux_dir_candidates="${srcdir}${PATH_SEPARATOR}${srcdir}/..${PATH_SEPARATOR}${srcdir}/../.." + +# Search for a directory containing all of the required auxiliary files, +# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. +# If we don't find one directory that contains all the files we need, +# we report the set of missing files from the *first* directory in +# $ac_aux_dir_candidates and give up. +ac_missing_aux_files="" +ac_first_candidate=: +printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in $ac_aux_dir_candidates +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + + printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 + ac_aux_dir_found=yes + ac_install_sh= + for ac_aux in $ac_aux_files + do + # As a special case, if "install-sh" is required, that requirement + # can be satisfied by any of "install-sh", "install.sh", or "shtool", + # and $ac_install_sh is set appropriately for whichever one is found. + if test x"$ac_aux" = x"install-sh" + then + if test -f "${as_dir}install-sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 + ac_install_sh="${as_dir}install-sh -c" + elif test -f "${as_dir}install.sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 + ac_install_sh="${as_dir}install.sh -c" + elif test -f "${as_dir}shtool"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 + ac_install_sh="${as_dir}shtool install -c" + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} install-sh" + else + break + fi + fi + else + if test -f "${as_dir}${ac_aux}"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" + else + break + fi + fi + fi + done + if test "$ac_aux_dir_found" = yes; then + ac_aux_dir="$as_dir" + break + fi + ac_first_candidate=false + + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 +fi + + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +if test -f "${ac_aux_dir}config.guess"; then + ac_config_guess="$SHELL ${ac_aux_dir}config.guess" +fi +if test -f "${ac_aux_dir}config.sub"; then + ac_config_sub="$SHELL ${ac_aux_dir}config.sub" +fi +if test -f "$ac_aux_dir/configure"; then + ac_configure="$SHELL ${ac_aux_dir}configure" +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' + and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + +ac_config_headers="$ac_config_headers config.h" + + + +am__api_version='1.16' + + + + # Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +printf %s "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if test ${ac_cv_path_install+y} +then : + printf %s "(cached) " >&6 +else $as_nop + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + # Account for fact that we put trailing slashes in our PATH walk. +case $as_dir in #(( + ./ | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test ${ac_cv_path_install+y}; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +printf "%s\n" "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +printf %s "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken + alias in your environment" "$LINENO" 5 + fi + if test "$2" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$2" = conftest.file + ) +then + # Ok. + : +else + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was `s,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"` + + +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + + + if test x"${MISSING+set}" != xset; then + MISSING="\${SHELL} '$am_aux_dir/missing'" +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +printf "%s\n" "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_STRIP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +printf "%s\n" "$STRIP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_STRIP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +printf "%s\n" "$ac_ct_STRIP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 +printf %s "checking for a race-free mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if test ${ac_cv_path_mkdir+y} +then : + printf %s "(cached) " >&6 +else $as_nop + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue + case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir ('*'coreutils) '* | \ + 'BusyBox '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test ${ac_cv_path_mkdir+y}; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +printf "%s\n" "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AWK+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +printf "%s\n" "$AWK" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval test \${ac_cv_prog_make_${ac_make}_set+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + SET_MAKE= +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +# Check whether --enable-silent-rules was given. +if test ${enable_silent_rules+y} +then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=1;; +esac +am_make=${MAKE-make} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +printf %s "checking whether $am_make supports nested variables... " >&6; } +if test ${am_cv_make_support_nested_variables+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if printf "%s\n" 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='xchat' + VERSION='2.8.8' + + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar pax cpio none' + +am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' + + + + + +# Variables for tags utilities; see am/tags.am +if test -z "$CTAGS"; then + CTAGS=ctags +fi + +if test -z "$ETAGS"; then + ETAGS=etags +fi + +if test -z "$CSCOPE"; then + CSCOPE=cscope +fi + + + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 + fi +fi + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 +printf %s "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } + # Check whether --enable-maintainer-mode was given. +if test ${enable_maintainer_mode+y} +then : + enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval +else $as_nop + USE_MAINTAINER_MODE=no +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 +printf "%s\n" "$USE_MAINTAINER_MODE" >&6; } + if test $USE_MAINTAINER_MODE = yes; then + MAINTAINER_MODE_TRUE= + MAINTAINER_MODE_FALSE='#' +else + MAINTAINER_MODE_TRUE='#' + MAINTAINER_MODE_FALSE= +fi + + MAINT=$MAINTAINER_MODE_TRUE + + + + + + + + + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +printf %s "checking whether the C compiler works... " >&6; } +ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else $as_nop + ac_file='' +fi +if test -z "$ac_file" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +printf %s "checking for C compiler default output file name... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +printf "%s\n" "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +printf %s "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else $as_nop + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +printf "%s\n" "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +printf %s "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +printf "%s\n" "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +printf %s "checking for suffix of object files... " >&6; } +if test ${ac_cv_objext+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +printf "%s\n" "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else $as_nop + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+y} +ac_save_CFLAGS=$CFLAGS +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +else $as_nop + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf "%s\n" "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi + +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c11" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } + CC="$CC $ac_cv_prog_cc_c11" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi + +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c99" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } + CC="$CC $ac_cv_prog_cc_c99" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi + +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c89" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } + CC="$CC $ac_cv_prog_cc_c89" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 +printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; } +cat > confinc.mk << 'END' +am__doit: + @echo this is the am__doit target >confinc.out +.PHONY: am__doit +END +am__include="#" +am__quote= +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 + (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + case $?:`cat confinc.out 2>/dev/null` in #( + '0:this is the am__doit target') : + case $s in #( + BSD) : + am__include='.include' am__quote='"' ;; #( + *) : + am__include='include' am__quote='' ;; +esac ;; #( + *) : + ;; +esac + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 +printf "%s\n" "${_am_result}" >&6; } + +# Check whether --enable-dependency-tracking was given. +if test ${enable_dependency_tracking+y} +then : + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + +depcc="$CC" am_compiler_list= + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CC_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +printf %s "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test ${ac_cv_prog_CPP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else $as_nop + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else $as_nop + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf "%s\n" "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else $as_nop + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else $as_nop + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + +else $as_nop + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +# By default we simply use the C compiler to build assembly code. + +test "${CCAS+set}" = set || CCAS=$CC +test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS + + + +depcc="$CCAS" am_compiler_list= + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CCAS_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CCAS_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CCAS_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CCAS_dependencies_compiler_type=none +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CCAS_dependencies_compiler_type" >&5 +printf "%s\n" "$am_cv_CCAS_dependencies_compiler_type" >&6; } +CCASDEPMODE=depmode=$am_cv_CCAS_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CCAS_dependencies_compiler_type" = gcc3; then + am__fastdepCCAS_TRUE= + am__fastdepCCAS_FALSE='#' +else + am__fastdepCCAS_TRUE='#' + am__fastdepCCAS_FALSE= +fi + + +# Check whether --enable-static was given. +if test ${enable_static+y} +then : + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else $as_nop + enable_static=no +fi + + + + + + + + + +case `pwd` in + *\ * | *\ *) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +printf "%s\n" "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; +esac + + + +macro_version='2.4.7' +macro_revision='2.4.7' + + + + + + + + + + + + + + +ltmain=$ac_aux_dir/ltmain.sh + + + + # Make sure we can run config.sub. +$SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +printf %s "checking build system type... " >&6; } +if test ${ac_cv_build+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +printf "%s\n" "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +printf %s "checking host system type... " >&6; } +if test ${ac_cv_host+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +printf "%s\n" "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 +printf %s "checking how to print strings... " >&6; } +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "" +} + +case $ECHO in + printf*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: printf" >&5 +printf "%s\n" "printf" >&6; } ;; + print*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 +printf "%s\n" "print -r" >&6; } ;; + *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cat" >&5 +printf "%s\n" "cat" >&6; } ;; +esac + + + + + + + + + + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +printf %s "checking for a sed that does not truncate output... " >&6; } +if test ${ac_cv_path_SED+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in sed gsed + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +printf "%s\n" "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" + + + + + + + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +printf %s "checking for grep that handles long lines and -e... " >&6; } +if test ${ac_cv_path_GREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in grep ggrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +printf "%s\n" "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +printf %s "checking for egrep... " >&6; } +if test ${ac_cv_path_EGREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in egrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +printf "%s\n" "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +printf %s "checking for fgrep... " >&6; } +if test ${ac_cv_path_FGREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 + then ac_cv_path_FGREP="$GREP -F" + else + if test -z "$FGREP"; then + ac_path_FGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in fgrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_FGREP="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_FGREP" || continue +# Check for GNU ac_path_FGREP and select it if it is found. + # Check for GNU $ac_path_FGREP +case `"$ac_path_FGREP" --version 2>&1` in +*GNU*) + ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" 'FGREP' >> "conftest.nl" + "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_FGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_FGREP="$ac_path_FGREP" + ac_path_FGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_FGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_FGREP"; then + as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_FGREP=$FGREP +fi + + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +printf "%s\n" "$ac_cv_path_FGREP" >&6; } + FGREP="$ac_cv_path_FGREP" + + +test -z "$GREP" && GREP=grep + + + + + + + + + + + + + + + + + + + +# Check whether --with-gnu-ld was given. +if test ${with_gnu_ld+y} +then : + withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes +else $as_nop + with_gnu_ld=no +fi + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +printf %s "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +printf %s "checking for GNU ld... " >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +printf %s "checking for non-GNU ld... " >&6; } +fi +if test ${lt_cv_path_LD+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +printf "%s\n" "$LD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +printf %s "checking if the linker ($LD) is GNU ld... " >&6; } +if test ${lt_cv_prog_gnu_ld+y} +then : + printf %s "(cached) " >&6 +else $as_nop + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +printf "%s\n" "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +printf %s "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if test ${lt_cv_path_NM+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM=$NM +else + lt_nm_to_check=${ac_tool_prefix}nm + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/$lt_tmp_nm + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the 'sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | $SED '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break 2 + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | $SED '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break 2 + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS=$lt_save_ifs + done + : ${lt_cv_path_NM=no} +fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +printf "%s\n" "$lt_cv_path_NM" >&6; } +if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + if test -n "$ac_tool_prefix"; then + for ac_prog in dumpbin "link -dump" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_DUMPBIN+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$DUMPBIN"; then + ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DUMPBIN=$ac_cv_prog_DUMPBIN +if test -n "$DUMPBIN"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +printf "%s\n" "$DUMPBIN" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$DUMPBIN" && break + done +fi +if test -z "$DUMPBIN"; then + ac_ct_DUMPBIN=$DUMPBIN + for ac_prog in dumpbin "link -dump" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_DUMPBIN+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_DUMPBIN"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN +if test -n "$ac_ct_DUMPBIN"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +printf "%s\n" "$ac_ct_DUMPBIN" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$ac_ct_DUMPBIN" && break +done + + if test "x$ac_ct_DUMPBIN" = x; then + DUMPBIN=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DUMPBIN=$ac_ct_DUMPBIN + fi +fi + + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | $SED '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols -headers" + ;; + *) + DUMPBIN=: + ;; + esac + fi + + if test : != "$DUMPBIN"; then + NM=$DUMPBIN + fi +fi +test -z "$NM" && NM=nm + + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +printf %s "checking the name lister ($NM) interface... " >&6; } +if test ${lt_cv_nm_interface+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: output\"" >&5) + cat conftest.out >&5 + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest* +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +printf "%s\n" "$lt_cv_nm_interface" >&6; } + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +printf %s "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +printf "%s\n" "no, using $LN_S" >&6; } +fi + +# find the maximum length of command line arguments +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +printf %s "checking the maximum length of command line arguments... " >&6; } +if test ${lt_cv_sys_max_cmd_len+y} +then : + printf %s "(cached) " >&6 +else $as_nop + i=0 + teststring=ABCD + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + bitrig* | darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | $SED 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test X`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test 17 != "$i" # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac + +fi + +if test -n "$lt_cv_sys_max_cmd_len"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +printf "%s\n" "$lt_cv_sys_max_cmd_len" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5 +printf "%s\n" "none" >&6; } +fi +max_cmd_len=$lt_cv_sys_max_cmd_len + + + + + + +: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi + + + + + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac + + + + + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 +printf %s "checking how to convert $build file names to $host format... " >&6; } +if test ${lt_cv_to_host_file_cmd+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac + +fi + +to_host_file_cmd=$lt_cv_to_host_file_cmd +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 +printf "%s\n" "$lt_cv_to_host_file_cmd" >&6; } + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 +printf %s "checking how to convert $build file names to toolchain format... " >&6; } +if test ${lt_cv_to_tool_file_cmd+y} +then : + printf %s "(cached) " >&6 +else $as_nop + #assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac + +fi + +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 +printf "%s\n" "$lt_cv_to_tool_file_cmd" >&6; } + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +printf %s "checking for $LD option to reload object files... " >&6; } +if test ${lt_cv_ld_reload_flag+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_ld_reload_flag='-r' +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +printf "%s\n" "$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + if test yes != "$GCC"; then + reload_cmds=false + fi + ;; + darwin*) + if test yes = "$GCC"; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}file", so it can be a program name with args. +set dummy ${ac_tool_prefix}file; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_FILECMD+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$FILECMD"; then + ac_cv_prog_FILECMD="$FILECMD" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_FILECMD="${ac_tool_prefix}file" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +FILECMD=$ac_cv_prog_FILECMD +if test -n "$FILECMD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $FILECMD" >&5 +printf "%s\n" "$FILECMD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_FILECMD"; then + ac_ct_FILECMD=$FILECMD + # Extract the first word of "file", so it can be a program name with args. +set dummy file; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_FILECMD+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_FILECMD"; then + ac_cv_prog_ac_ct_FILECMD="$ac_ct_FILECMD" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_FILECMD="file" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_FILECMD=$ac_cv_prog_ac_ct_FILECMD +if test -n "$ac_ct_FILECMD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_FILECMD" >&5 +printf "%s\n" "$ac_ct_FILECMD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_FILECMD" = x; then + FILECMD=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + FILECMD=$ac_ct_FILECMD + fi +else + FILECMD="$ac_cv_prog_FILECMD" +fi + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_OBJDUMP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +printf "%s\n" "$OBJDUMP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_OBJDUMP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +printf "%s\n" "$ac_ct_OBJDUMP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +printf %s "checking how to recognize dependent libraries... " >&6; } +if test ${lt_cv_deplibs_check_method+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# 'unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# that responds to the $file_magic_cmd with a given extended regex. +# If you have 'file' or equivalent on your system and you're not sure +# whether 'pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[4-9]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='$FILECMD -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly* | midnightbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=$FILECMD + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=$FILECMD + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=$FILECMD + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd* | bitrig*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +printf "%s\n" "$lt_cv_deplibs_check_method" >&6; } + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + + + + + + + + + + + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_DLLTOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +printf "%s\n" "$DLLTOOL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_DLLTOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +printf "%s\n" "$ac_ct_DLLTOOL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 +printf %s "checking how to associate runtime and link libraries... " >&6; } +if test ${lt_cv_sharedlib_from_linklib_cmd+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh; + # decide which one to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd=$ECHO + ;; +esac + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 +printf "%s\n" "$lt_cv_sharedlib_from_linklib_cmd" >&6; } +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + + + + + + + + +if test -n "$ac_tool_prefix"; then + for ac_prog in ar + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf "%s\n" "$AR" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_AR+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +printf "%s\n" "$ac_ct_AR" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +fi + +: ${AR=ar} + + + + + + +# Use ARFLAGS variable as AR's operation code to sync the variable naming with +# Automake. If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have +# higher priority because thats what people were doing historically (setting +# ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS +# variable obsoleted/removed. + +test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr} +lt_ar_flags=$AR_FLAGS + + + + + + +# Make AR_FLAGS overridable by 'make ARFLAGS='. Don't try to run-time override +# by AR_FLAGS because that was never working and AR_FLAGS is about to die. + + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 +printf %s "checking for archiver @FILE support... " >&6; } +if test ${lt_cv_ar_at_file+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_ar_at_file=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test 0 -eq "$ac_status"; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test 0 -ne "$ac_status"; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 +printf "%s\n" "$lt_cv_ar_at_file" >&6; } + +if test no = "$lt_cv_ar_at_file"; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_STRIP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +printf "%s\n" "$STRIP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_STRIP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +printf "%s\n" "$ac_ct_STRIP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +test -z "$STRIP" && STRIP=: + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf "%s\n" "$RANLIB" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf "%s\n" "$ac_ct_RANLIB" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +test -z "$RANLIB" && RANLIB=: + + + + + + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + bitrig* | openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +printf %s "checking command to parse $NM output from $compiler object... " >&6; } +if test ${lt_cv_sys_global_symbol_pipe+y} +then : + printf %s "(cached) " >&6 +else $as_nop + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[ABCDGISTW]' + ;; +hpux*) + if test ia64 = "$host_cpu"; then + symcode='[ABCDEGRST]' + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. + lt_cv_sys_global_symbol_to_import="$SED -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" + lt_c_name_lib_hook="\ + -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ + -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" +else + # Disable hooks by default. + lt_cv_sys_global_symbol_to_import= + lt_cdecl_hook= + lt_c_name_hook= + lt_c_name_lib_hook= +fi + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="$SED -n"\ +$lt_cdecl_hook\ +" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="$SED -n"\ +$lt_c_name_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + +# Transform an extracted symbol line into symbol name with lib prefix and +# symbol address. +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="$SED -n"\ +$lt_c_name_lib_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function, + # D for any global variable and I for any imported variable. + # Also find C++ and __fastcall symbols from MSVC++ or ICC, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK '"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ +" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ +" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ +" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ +" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx" + else + lt_cv_sys_global_symbol_pipe="$SED -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | $SED '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Now try to grab the symbols. + nlist=conftest.nm + $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&5 + if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&5 && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS=conftstm.$ac_objext + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest$ac_exeext; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test yes = "$pipe_works"; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +printf "%s\n" "failed" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +printf "%s\n" "ok" >&6; } +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 +printf %s "checking for sysroot... " >&6; } + +# Check whether --with-sysroot was given. +if test ${with_sysroot+y} +then : + withval=$with_sysroot; +else $as_nop + with_sysroot=no +fi + + +lt_sysroot= +case $with_sysroot in #( + yes) + if test yes = "$GCC"; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | $SED -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 +printf "%s\n" "$with_sysroot" >&6; } + as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 + ;; +esac + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 +printf "%s\n" "${lt_sysroot:-no}" >&6; } + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 +printf %s "checking for a working dd... " >&6; } +if test ${ac_cv_path_lt_DD+y} +then : + printf %s "(cached) " >&6 +else $as_nop + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +if test -z "$lt_DD"; then + ac_path_lt_DD_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in dd + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_lt_DD="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_lt_DD" || continue +if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi + $ac_path_lt_DD_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_lt_DD"; then + : + fi +else + ac_cv_path_lt_DD=$lt_DD +fi + +rm -f conftest.i conftest2.i conftest.out +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 +printf "%s\n" "$ac_cv_path_lt_DD" >&6; } + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 +printf %s "checking how to truncate binary pipes... " >&6; } +if test ${lt_cv_truncate_bin+y} +then : + printf %s "(cached) " >&6 +else $as_nop + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 +printf "%s\n" "$lt_cv_truncate_bin" >&6; } + + + + + + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + +# Check whether --enable-libtool-lock was given. +if test ${enable_libtool_lock+y} +then : + enableval=$enable_libtool_lock; +fi + +test no = "$enable_libtool_lock" || enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out what ABI is being produced by ac_compile, and set mode + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `$FILECMD conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE=32 + ;; + *ELF-64*) + HPUX_IA64_MODE=64 + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + if test yes = "$lt_cv_prog_gnu_ld"; then + case `$FILECMD conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `$FILECMD conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +mips64*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + emul=elf + case `$FILECMD conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; + *64-bit*) + emul="${emul}64" + ;; + esac + case `$FILECMD conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; + *LSB*) + emul="${emul}ltsmip" + ;; + esac + case `$FILECMD conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; + esac + LD="${LD-ld} -m $emul" + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. Note that the listed cases only cover the + # situations where additional linker options are needed (such as when + # doing 32-bit compilation for a host where ld defaults to 64-bit, or + # vice versa); the common cases where no linker options are needed do + # not appear in the list. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `$FILECMD conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + case `$FILECMD conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac + ;; + powerpc64le-*linux*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*linux*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -belf" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +printf %s "checking whether the C compiler needs -belf... " >&6; } +if test ${lt_cv_cc_needs_belf+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + lt_cv_cc_needs_belf=yes +else $as_nop + lt_cv_cc_needs_belf=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +printf "%s\n" "$lt_cv_cc_needs_belf" >&6; } + if test yes != "$lt_cv_cc_needs_belf"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS=$SAVE_CFLAGS + fi + ;; +*-*solaris*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `$FILECMD conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*|x86_64-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD=${LD-ld}_sol2 + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks=$enable_libtool_lock + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. +set dummy ${ac_tool_prefix}mt; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_MANIFEST_TOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$MANIFEST_TOOL"; then + ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL +if test -n "$MANIFEST_TOOL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 +printf "%s\n" "$MANIFEST_TOOL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_MANIFEST_TOOL"; then + ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL + # Extract the first word of "mt", so it can be a program name with args. +set dummy mt; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_MANIFEST_TOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_MANIFEST_TOOL"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL +if test -n "$ac_ct_MANIFEST_TOOL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 +printf "%s\n" "$ac_ct_MANIFEST_TOOL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_MANIFEST_TOOL" = x; then + MANIFEST_TOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL + fi +else + MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" +fi + +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 +printf %s "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } +if test ${lt_cv_path_mainfest_tool+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&5 + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest* +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 +printf "%s\n" "$lt_cv_path_mainfest_tool" >&6; } +if test yes != "$lt_cv_path_mainfest_tool"; then + MANIFEST_TOOL=: +fi + + + + + + + case $host_os in + rhapsody* | darwin*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_DSYMUTIL+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +printf "%s\n" "$DSYMUTIL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_DSYMUTIL+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +printf "%s\n" "$ac_ct_DSYMUTIL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_DSYMUTIL" = x; then + DSYMUTIL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DSYMUTIL=$ac_ct_DSYMUTIL + fi +else + DSYMUTIL="$ac_cv_prog_DSYMUTIL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_NMEDIT+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +printf "%s\n" "$NMEDIT" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_NMEDIT+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +printf "%s\n" "$ac_ct_NMEDIT" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_NMEDIT" = x; then + NMEDIT=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + NMEDIT=$ac_ct_NMEDIT + fi +else + NMEDIT="$ac_cv_prog_NMEDIT" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. +set dummy ${ac_tool_prefix}lipo; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_LIPO+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$LIPO"; then + ac_cv_prog_LIPO="$LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_LIPO="${ac_tool_prefix}lipo" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +LIPO=$ac_cv_prog_LIPO +if test -n "$LIPO"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +printf "%s\n" "$LIPO" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_LIPO"; then + ac_ct_LIPO=$LIPO + # Extract the first word of "lipo", so it can be a program name with args. +set dummy lipo; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_LIPO+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_LIPO"; then + ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_LIPO="lipo" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO +if test -n "$ac_ct_LIPO"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +printf "%s\n" "$ac_ct_LIPO" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_LIPO" = x; then + LIPO=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + LIPO=$ac_ct_LIPO + fi +else + LIPO="$ac_cv_prog_LIPO" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_OTOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$OTOOL"; then + ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL="${ac_tool_prefix}otool" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL=$ac_cv_prog_OTOOL +if test -n "$OTOOL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +printf "%s\n" "$OTOOL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL"; then + ac_ct_OTOOL=$OTOOL + # Extract the first word of "otool", so it can be a program name with args. +set dummy otool; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_OTOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_OTOOL"; then + ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL="otool" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL +if test -n "$ac_ct_OTOOL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +printf "%s\n" "$ac_ct_OTOOL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_OTOOL" = x; then + OTOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL=$ac_ct_OTOOL + fi +else + OTOOL="$ac_cv_prog_OTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool64; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_OTOOL64+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$OTOOL64"; then + ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL64=$ac_cv_prog_OTOOL64 +if test -n "$OTOOL64"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +printf "%s\n" "$OTOOL64" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL64"; then + ac_ct_OTOOL64=$OTOOL64 + # Extract the first word of "otool64", so it can be a program name with args. +set dummy otool64; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_OTOOL64+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_OTOOL64"; then + ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL64="otool64" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 +if test -n "$ac_ct_OTOOL64"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +printf "%s\n" "$ac_ct_OTOOL64" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_OTOOL64" = x; then + OTOOL64=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL64=$ac_ct_OTOOL64 + fi +else + OTOOL64="$ac_cv_prog_OTOOL64" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +printf %s "checking for -single_module linker flag... " >&6; } +if test ${lt_cv_apple_cc_single_mod+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_apple_cc_single_mod=no + if test -z "$LT_MULTI_MODULE"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&5 + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test 0 = "$_lt_result"; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&5 + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +printf "%s\n" "$lt_cv_apple_cc_single_mod" >&6; } + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +printf %s "checking for -exported_symbols_list linker flag... " >&6; } +if test ${lt_cv_ld_exported_symbols_list+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + lt_cv_ld_exported_symbols_list=yes +else $as_nop + lt_cv_ld_exported_symbols_list=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +printf "%s\n" "$lt_cv_ld_exported_symbols_list" >&6; } + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 +printf %s "checking for -force_load linker flag... " >&6; } +if test ${lt_cv_ld_force_load+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 + echo "$AR $AR_FLAGS libconftest.a conftest.o" >&5 + $AR $AR_FLAGS libconftest.a conftest.o 2>&5 + echo "$RANLIB libconftest.a" >&5 + $RANLIB libconftest.a 2>&5 + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&5 + elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&5 + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 +printf "%s\n" "$lt_cv_ld_force_load" >&6; } + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + darwin*) + case $MACOSX_DEPLOYMENT_TARGET,$host in + 10.[012],*|,*powerpc*-darwin[5-8]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + *) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test yes = "$lt_cv_apple_cc_single_mod"; then + _lt_dar_single_mod='$single_module' + fi + if test yes = "$lt_cv_ld_exported_symbols_list"; then + _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' + fi + if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + +ac_header= ac_cache= +for ac_item in $ac_header_c_list +do + if test $ac_cache; then + ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" + if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then + printf "%s\n" "#define $ac_item 1" >> confdefs.h + fi + ac_header= ac_cache= + elif test $ac_header; then + ac_cache=$ac_item + else + ac_header=$ac_item + fi +done + + + + + + + + +if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes +then : + +printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +" +if test "x$ac_cv_header_dlfcn_h" = xyes +then : + printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h + +fi + + + + + +# Set options + + + + enable_dlopen=no + + + enable_win32_dll=no + + + # Check whether --enable-shared was given. +if test ${enable_shared+y} +then : + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else $as_nop + enable_shared=yes +fi + + + + + + + + + + + +# Check whether --with-pic was given. +if test ${with_pic+y} +then : + withval=$with_pic; lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for lt_pkg in $withval; do + IFS=$lt_save_ifs + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else $as_nop + pic_mode=default +fi + + + + + + + + + # Check whether --enable-fast-install was given. +if test ${enable_fast_install+y} +then : + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else $as_nop + enable_fast_install=yes +fi + + + + + + + + + shared_archive_member_spec= +case $host,$enable_shared in +power*-*-aix[5-9]*,yes) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 +printf %s "checking which variant of shared library versioning to provide... " >&6; } + +# Check whether --with-aix-soname was given. +if test ${with_aix_soname+y} +then : + withval=$with_aix_soname; case $withval in + aix|svr4|both) + ;; + *) + as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname +else $as_nop + if test ${lt_cv_with_aix_soname+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_with_aix_soname=aix +fi + + with_aix_soname=$lt_cv_with_aix_soname +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 +printf "%s\n" "$with_aix_soname" >&6; } + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + + + + + + + + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS=$ltmain + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +test -z "$LN_S" && LN_S="ln -s" + + + + + + + + + + + + + + +if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +printf %s "checking for objdir... " >&6; } +if test ${lt_cv_objdir+y} +then : + printf %s "(cached) " >&6 +else $as_nop + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +printf "%s\n" "$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +printf "%s\n" "#define LT_OBJDIR \"$lt_cv_objdir/\"" >>confdefs.h + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a '.a' archive for static linking (except MSVC and +# ICC, which need '.lib'). +libext=a + +with_gnu_ld=$lt_cv_prog_gnu_ld + +old_CC=$CC +old_CFLAGS=$CFLAGS + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +func_cc_basename $compiler +cc_basename=$func_cc_basename_result + + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +printf %s "checking for ${ac_tool_prefix}file... " >&6; } +if test ${lt_cv_path_MAGIC_CMD+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/${ac_tool_prefix}file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac +fi + +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +printf "%s\n" "$MAGIC_CMD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + + + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +printf %s "checking for file... " >&6; } +if test ${lt_cv_path_MAGIC_CMD+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac +fi + +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +printf "%s\n" "$MAGIC_CMD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +# Use C for the default configuration in the libtool script + +lt_save_CC=$CC +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + +if test -n "$compiler"; then + +lt_prog_compiler_no_builtin_flag= + +if test yes = "$GCC"; then + case $cc_basename in + nvcc*) + lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; + *) + lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; + esac + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +printf %s "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if test ${lt_cv_prog_compiler_rtti_exceptions+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $RM conftest* + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +printf "%s\n" "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + + + + + + + lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + + + if test yes = "$GCC"; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + lt_prog_compiler_pic='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + lt_prog_compiler_wl='-Xlinker ' + if test -n "$lt_prog_compiler_pic"; then + lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='$wl-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + # old Intel for x86_64, which still supported -KPIC. + ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + # flang / f18. f95 an alias for gfortran or flang on Debian + flang* | f18* | f95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-qpic' + lt_prog_compiler_static='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | $SED 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + *Sun\ F* | *Sun*Fortran*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + *Intel*\ [CF]*Compiler*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + *Portland\ Group*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +printf %s "checking for $compiler option to produce PIC... " >&6; } +if test ${lt_cv_prog_compiler_pic+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_prog_compiler_pic=$lt_prog_compiler_pic +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 +printf "%s\n" "$lt_cv_prog_compiler_pic" >&6; } +lt_prog_compiler_pic=$lt_cv_prog_compiler_pic + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if test ${lt_cv_prog_compiler_pic_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $RM conftest* + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +printf "%s\n" "$lt_cv_prog_compiler_pic_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_pic_works"; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi + + + + + + + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if test ${lt_cv_prog_compiler_static_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_prog_compiler_static_works=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +printf "%s\n" "$lt_cv_prog_compiler_static_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_static_works"; then + : +else + lt_prog_compiler_static= +fi + + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test ${lt_cv_prog_compiler_c_o+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test ${lt_cv_prog_compiler_c_o+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } + + + + +hard_links=nottested +if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +printf %s "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +printf "%s\n" "$hard_links" >&6; } + if test no = "$hard_links"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 +printf "%s\n" "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag= + always_export_symbols=no + archive_cmds= + archive_expsym_cmds= + compiler_needs_object=no + enable_shared_with_static_runtimes=no + export_dynamic_flag_spec= + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + hardcode_automatic=no + hardcode_direct=no + hardcode_direct_absolute=no + hardcode_libdir_flag_spec= + hardcode_libdir_separator= + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + inherit_rpath=no + link_all_deplibs=unknown + module_cmds= + module_expsym_cmds= + old_archive_from_new_cmds= + old_archive_from_expsyms_cmds= + thread_safe_flag_spec= + whole_archive_flag_spec= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ' (' and ')$', so one must not match beginning or + # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', + # as well as any symbol that contains 'd'. + exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++ or Intel C++ Compiler. + if test yes != "$GCC"; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++ or ICC) + with_gnu_ld=yes + ;; + openbsd* | bitrig*) + with_gnu_ld=no + ;; + linux* | k*bsd*-gnu | gnu*) + link_all_deplibs=no + ;; + esac + + ld_shlibs=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test yes = "$with_gnu_ld"; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; + *\ \(GNU\ Binutils\)\ [3-9]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test yes = "$lt_use_gnu_ld_interface"; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='$wl' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + export_dynamic_flag_spec='$wl--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test ia64 != "$host_cpu"; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + export_dynamic_flag_spec='$wl--export-all-symbols' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + haiku*) + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + link_all_deplibs=yes + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes + file_list_spec='@' + ;; + + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test linux-dietlibc = "$host_os"; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test no = "$tmp_diet" + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; + nagfor*) # NAGFOR 5.3 + tmp_sharedflag='-Wl,-shared' ;; + xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object=yes + ;; + esac + case `$CC -V 2>&1 | $SED 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + tcc*) + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + export_dynamic_flag_spec='-rdynamic' + ;; + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + ld_shlibs=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test no = "$ld_shlibs"; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix[4-9]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then + aix_use_runtimelinking=yes + break + fi + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_direct_absolute=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + file_list_spec='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + hardcode_direct=no + hardcode_direct_absolute=no + ;; + esac + + if test yes = "$GCC"; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag="$shared_flag "'$wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + export_dynamic_flag_spec='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if test ${lt_cv_aix_libpath_+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if test ${lt_cv_aix_libpath_+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' $wl-bernotok' + allow_undefined_flag=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + fi + archive_cmds_need_lc=yes + archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++ or Intel C++ Compiler. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl* | icl*) + # Native MSVC or ICC + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + always_export_symbols=yes + file_list_spec='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, )='true' + enable_shared_with_static_runtimes=yes + exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + old_postinstall_cmds='chmod 644 $oldlib' + postlink_cmds='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC and ICC wrapper + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + enable_shared_with_static_runtimes=yes + ;; + esac + ;; + + darwin* | rhapsody*) + + + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + if test yes = "$lt_cv_ld_force_load"; then + whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + + else + whole_archive_flag_spec='' + fi + link_all_deplibs=yes + allow_undefined_flag=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + archive_expsym_cmds="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + module_expsym_cmds="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + + else + ld_shlibs=no + fi + + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly* | midnightbsd*) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test yes = "$GCC"; then + archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='$wl-E' + ;; + + hpux10*) + if test yes,no = "$GCC,$with_gnu_ld"; then + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='$wl-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test yes,no = "$GCC,$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 +printf %s "checking if $CC understands -b... " >&6; } +if test ${lt_cv_prog_compiler__b+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_prog_compiler__b=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -b" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler__b=yes + fi + else + lt_cv_prog_compiler__b=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 +printf "%s\n" "$lt_cv_prog_compiler__b" >&6; } + +if test yes = "$lt_cv_prog_compiler__b"; then + archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +fi + + ;; + esac + fi + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='$wl-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test yes = "$GCC"; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 +printf %s "checking whether the $host_os linker accepts -exported_symbol... " >&6; } +if test ${lt_cv_irix_exported_symbol+y} +then : + printf %s "(cached) " >&6 +else $as_nop + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo (void) { return 0; } +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + lt_cv_irix_exported_symbol=yes +else $as_nop + lt_cv_irix_exported_symbol=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 +printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; } + if test yes = "$lt_cv_irix_exported_symbol"; then + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' + fi + link_all_deplibs=no + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + inherit_rpath=yes + link_all_deplibs=yes + ;; + + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + ld_shlibs=yes + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + ;; + esac + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + *nto* | *qnx*) + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + hardcode_direct_absolute=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' + else + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + fi + else + ld_shlibs=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes + file_list_spec='@' + ;; + + osf3*) + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + archive_cmds_need_lc='no' + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z defs' + if test yes = "$GCC"; then + wlarc='$wl' + archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='$wl' + archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. GCC discards it without '$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test yes = "$GCC"; then + whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + else + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test sequent = "$host_vendor"; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag='$wl-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='$wl-z,text' + allow_undefined_flag='$wl-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='$wl-R,$libdir' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + + if test sni = "$host_vendor"; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + export_dynamic_flag_spec='$wl-Blargedynsym' + ;; + esac + fi + fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +printf "%s\n" "$ld_shlibs" >&6; } +test no = "$ld_shlibs" && can_build_shared=no + +with_gnu_ld=$with_gnu_ld + + + + + + + + + + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +printf %s "checking whether -lc should be explicitly linked in... " >&6; } +if test ${lt_cv_archive_cmds_need_lc+y} +then : + printf %s "(cached) " >&6 +else $as_nop + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 +printf "%s\n" "$lt_cv_archive_cmds_need_lc" >&6; } + archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +printf %s "checking dynamic linker characteristics... " >&6; } + +if test yes = "$GCC"; then + case $host_os in + darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; + *) lt_awk_arg='/^libraries:/' ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; + *) lt_sed_strip_eq='s|=/|/|g' ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary... + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + # ...but if some path component already ends with the multilib dir we assume + # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). + case "$lt_multi_os_dir; $lt_search_path_spec " in + "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) + lt_multi_os_dir= + ;; + esac + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" + elif test -n "$lt_multi_os_dir"; then + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS = " "; FS = "/|\n";} { + lt_foo = ""; + lt_count = 0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo = "/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's|/\([A-Za-z]:\)|\1|g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + + + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[4-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a(lib.so.V)' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | $SED -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | $SED -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl* | *,icl*) + # Native MSVC or ICC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC and ICC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly* | midnightbsd*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[23].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + hardcode_libdir_flag_spec='-L$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if test ${lt_cv_shlibpath_overrides_runpath+y} +then : + printf %s "(cached) " >&6 +else $as_nop + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null +then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd* | bitrig*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +printf "%s\n" "$dynamic_linker" >&6; } +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +printf %s "checking how to hardcode library paths into programs... " >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || + test -n "$runpath_var" || + test yes = "$hardcode_automatic"; then + + # We can hardcode non-existent directories. + if test no != "$hardcode_direct" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && + test no != "$hardcode_minus_L"; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +printf "%s\n" "$hardcode_action" >&6; } + +if test relink = "$hardcode_action" || + test yes = "$inherit_rpath"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + if test yes != "$enable_dlopen"; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen=load_add_on + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen=LoadLibrary + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +printf %s "checking for dlopen in -ldl... " >&6; } +if test ${ac_cv_lib_dl_dlopen+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main (void) +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_dl_dlopen=yes +else $as_nop + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes +then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl +else $as_nop + + lt_cv_dlopen=dyld + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + tpf*) + # Don't try to run any link tests for TPF. We know it's impossible + # because TPF is a cross-compiler, and we know how we open DSOs. + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + lt_cv_dlopen_self=no + ;; + + *) + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = xyes +then : + lt_cv_dlopen=shl_load +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +printf %s "checking for shl_load in -ldld... " >&6; } +if test ${ac_cv_lib_dld_shl_load+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char shl_load (); +int +main (void) +{ +return shl_load (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_dld_shl_load=yes +else $as_nop + ac_cv_lib_dld_shl_load=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +printf "%s\n" "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes +then : + lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld +else $as_nop + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes +then : + lt_cv_dlopen=dlopen +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +printf %s "checking for dlopen in -ldl... " >&6; } +if test ${ac_cv_lib_dl_dlopen+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main (void) +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_dl_dlopen=yes +else $as_nop + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes +then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +printf %s "checking for dlopen in -lsvld... " >&6; } +if test ${ac_cv_lib_svld_dlopen+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main (void) +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_svld_dlopen=yes +else $as_nop + ac_cv_lib_svld_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +printf "%s\n" "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes +then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +printf %s "checking for dld_link in -ldld... " >&6; } +if test ${ac_cv_lib_dld_dld_link+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char dld_link (); +int +main (void) +{ +return dld_link (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_dld_dld_link=yes +else $as_nop + ac_cv_lib_dld_dld_link=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +printf "%s\n" "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes +then : + lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test no = "$lt_cv_dlopen"; then + enable_dlopen=no + else + enable_dlopen=yes + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS=$CPPFLAGS + test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS=$LDFLAGS + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS=$LIBS + LIBS="$lt_cv_dlopen_libs $LIBS" + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +printf %s "checking whether a program can dlopen itself... " >&6; } +if test ${lt_cv_dlopen_self+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test yes = "$cross_compiling"; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +printf "%s\n" "$lt_cv_dlopen_self" >&6; } + + if test yes = "$lt_cv_dlopen_self"; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +printf %s "checking whether a statically linked program can dlopen itself... " >&6; } +if test ${lt_cv_dlopen_self_static+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test yes = "$cross_compiling"; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +printf "%s\n" "$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + + + + + + + + + + + + + + + + +striplib= +old_striplib= +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +printf %s "checking whether stripping libraries is possible... " >&6; } +if test -z "$STRIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +else + if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + old_striplib="$STRIP --strip-debug" + striplib="$STRIP --strip-unneeded" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else + case $host_os in + darwin*) + # FIXME - insert some real tests, host_os isn't really good enough + striplib="$STRIP -x" + old_striplib="$STRIP -S" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + ;; + freebsd*) + if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then + old_striplib="$STRIP --strip-debug" + striplib="$STRIP --strip-unneeded" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + fi + ;; + *) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + ;; + esac + fi +fi + + + + + + + + + + + + + # Report what library types will actually be built + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +printf %s "checking if libtool supports shared libraries... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +printf "%s\n" "$can_build_shared" >&6; } + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +printf %s "checking whether to build shared libraries... " >&6; } + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[4-9]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +printf "%s\n" "$enable_shared" >&6; } + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +printf %s "checking whether to build static libraries... " >&6; } + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +printf "%s\n" "$enable_static" >&6; } + + + + +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC=$lt_save_CC + + + + + + + + + + + + + + + + ac_config_commands="$ac_config_commands libtool" + + + + +# Only expand once: + + + +GETTEXT_PACKAGE=xchat + + +printf "%s\n" "#define GETTEXT_PACKAGE \"$GETTEXT_PACKAGE\"" >>confdefs.h + + +ALL_LINGUAS="be ca cs de el es fi fr gl hu it ja kn ko lt mk nl pa pl pt ru sq sr sv th uk vi zh_CN zh_TW" + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 +printf %s "checking whether NLS is requested... " >&6; } + # Check whether --enable-nls was given. +if test ${enable_nls+y} +then : + enableval=$enable_nls; USE_NLS=$enableval +else $as_nop + USE_NLS=yes +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +printf "%s\n" "$USE_NLS" >&6; } + + + + + GETTEXT_MACRO_VERSION=0.20 + + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MSGFMT+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case "$MSGFMT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 && + (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" + ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test "$MSGFMT" != ":"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 +printf "%s\n" "$MSGFMT" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_GMSGFMT+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $GMSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_GMSGFMT="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac +fi +GMSGFMT=$ac_cv_path_GMSGFMT +if test -n "$GMSGFMT"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 +printf "%s\n" "$GMSGFMT" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + + case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; + *) GMSGFMT_015=$GMSGFMT ;; + esac + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_XGETTEXT+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case "$XGETTEXT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test "$XGETTEXT" != ":"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 +printf "%s\n" "$XGETTEXT" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + rm -f messages.po + + case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; + *) XGETTEXT_015=$XGETTEXT ;; + esac + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgmerge", so it can be a program name with args. +set dummy msgmerge; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MSGMERGE+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case "$MSGMERGE" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then + ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" + ;; +esac +fi +MSGMERGE="$ac_cv_path_MSGMERGE" +if test "$MSGMERGE" != ":"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 +printf "%s\n" "$MSGMERGE" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if LC_ALL=C $MSGMERGE --help | grep ' --for-msgfmt ' >/dev/null; then + MSGMERGE_FOR_MSGFMT_OPTION='--for-msgfmt' + else + if LC_ALL=C $MSGMERGE --help | grep ' --no-fuzzy-matching ' >/dev/null; then + MSGMERGE_FOR_MSGFMT_OPTION='--no-fuzzy-matching --no-location --quiet' + else + MSGMERGE_FOR_MSGFMT_OPTION='--no-location --quiet' + fi + fi + + + test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= + + + ac_config_commands="$ac_config_commands po-directories" + + + + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" + + + +# Check whether --with-gnu-ld was given. +if test ${with_gnu_ld+y} +then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else $as_nop + with_gnu_ld=no +fi + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +if test -n "$LD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld" >&5 +printf %s "checking for ld... " >&6; } +elif test "$GCC" = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +printf %s "checking for ld used by $CC... " >&6; } +elif test "$with_gnu_ld" = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +printf %s "checking for GNU ld... " >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +printf %s "checking for non-GNU ld... " >&6; } +fi +if test -n "$LD"; then + # Let the user override the test with a path. + : +else + if test ${acl_cv_path_LD+y} +then : + printf %s "(cached) " >&6 +else $as_nop + + acl_cv_path_LD= # Final result of this test + ac_prog=ld # Program to search in $PATH + if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + acl_output=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + acl_output=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $acl_output in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + acl_output=`echo "$acl_output" | sed 's%\\\\%/%g'` + while echo "$acl_output" | grep "$re_direlt" > /dev/null 2>&1; do + acl_output=`echo $acl_output | sed "s%$re_direlt%/%"` + done + # Got the pathname. No search in PATH is needed. + acl_cv_path_LD="$acl_output" + ac_prog= + ;; + "") + # If it fails, then pretend we aren't using GCC. + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac + fi + if test -n "$ac_prog"; then + # Search for $ac_prog in $PATH. + acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$acl_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 conftest.$ac_ext +/* end confdefs.h. */ +#if defined __powerpc64__ || defined _ARCH_PPC64 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # The compiler produces 64-bit code. Add option '-b64' so that the + # linker groks 64-bit object files. + case "$acl_cv_path_LD " in + *" -b64 "*) ;; + *) acl_cv_path_LD="$acl_cv_path_LD -b64" ;; + esac + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + sparc64-*-netbsd*) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __sparcv9 || defined __arch64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop + # The compiler produces 32-bit code. Add option '-m elf32_sparc' + # so that the linker groks 32-bit object files. + case "$acl_cv_path_LD " in + *" -m elf32_sparc "*) ;; + *) acl_cv_path_LD="$acl_cv_path_LD -m elf32_sparc" ;; + esac + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + esac + +fi + + LD="$acl_cv_path_LD" +fi +if test -n "$LD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 +printf "%s\n" "$LD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +printf %s "checking if the linker ($LD) is GNU ld... " >&6; } +if test ${acl_cv_prog_gnu_ld+y} +then : + printf %s "(cached) " >&6 +else $as_nop + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +printf "%s\n" "$acl_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$acl_cv_prog_gnu_ld + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 +printf %s "checking for shared library run path origin... " >&6; } +if test ${acl_cv_rpath+y} +then : + printf %s "(cached) " >&6 +else $as_nop + + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 +printf "%s\n" "$acl_cv_rpath" >&6; } + wl="$acl_cv_wl" + acl_libext="$acl_cv_libext" + acl_shlibext="$acl_cv_shlibext" + acl_libname_spec="$acl_cv_libname_spec" + acl_library_names_spec="$acl_cv_library_names_spec" + acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + acl_hardcode_direct="$acl_cv_hardcode_direct" + acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" + # Check whether --enable-rpath was given. +if test ${enable_rpath+y} +then : + enableval=$enable_rpath; : +else $as_nop + enable_rpath=yes +fi + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking 32-bit host C ABI" >&5 +printf %s "checking 32-bit host C ABI... " >&6; } +if test ${gl_cv_host_cpu_c_abi_32bit+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$gl_cv_host_cpu_c_abi"; then + case "$gl_cv_host_cpu_c_abi" in + i386 | x86_64-x32 | arm | armhf | arm64-ilp32 | hppa | ia64-ilp32 | mips | mipsn32 | powerpc | riscv*-ilp32* | s390 | sparc) + gl_cv_host_cpu_c_abi_32bit=yes ;; + x86_64 | alpha | arm64 | hppa64 | ia64 | mips64 | powerpc64 | powerpc64-elfv2 | riscv*-lp64* | s390x | sparc64 ) + gl_cv_host_cpu_c_abi_32bit=no ;; + *) + gl_cv_host_cpu_c_abi_32bit=unknown ;; + esac + else + case "$host_cpu" in + + # CPUs that only support a 32-bit ABI. + arc \ + | bfin \ + | cris* \ + | csky \ + | epiphany \ + | ft32 \ + | h8300 \ + | m68k \ + | microblaze | microblazeel \ + | nds32 | nds32le | nds32be \ + | nios2 | nios2eb | nios2el \ + | or1k* \ + | or32 \ + | sh | sh1234 | sh1234elb \ + | tic6x \ + | xtensa* ) + gl_cv_host_cpu_c_abi_32bit=yes + ;; + + # CPUs that only support a 64-bit ABI. + alpha | alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] \ + | mmix ) + gl_cv_host_cpu_c_abi_32bit=no + ;; + + i[34567]86 ) + gl_cv_host_cpu_c_abi_32bit=yes + ;; + + x86_64 ) + # On x86_64 systems, the C compiler may be generating code in one of + # these ABIs: + # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64. + # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64 + # with native Windows (mingw, MSVC). + # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if (defined __x86_64__ || defined __amd64__ \ + || defined _M_X64 || defined _M_AMD64) \ + && !(defined __ILP32__ || defined _ILP32) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi_32bit=no +else $as_nop + gl_cv_host_cpu_c_abi_32bit=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + arm* | aarch64 ) + # Assume arm with EABI. + # On arm64 systems, the C compiler may be generating code in one of + # these ABIs: + # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64. + # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __aarch64__ && !(defined __ILP32__ || defined _ILP32) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi_32bit=no +else $as_nop + gl_cv_host_cpu_c_abi_32bit=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + hppa1.0 | hppa1.1 | hppa2.0* | hppa64 ) + # On hppa, the C compiler may be generating 32-bit code or 64-bit + # code. In the latter case, it defines _LP64 and __LP64__. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi_32bit=no +else $as_nop + gl_cv_host_cpu_c_abi_32bit=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + ia64* ) + # On ia64 on HP-UX, the C compiler may be generating 64-bit code or + # 32-bit code. In the latter case, it defines _ILP32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi_32bit=yes +else $as_nop + gl_cv_host_cpu_c_abi_32bit=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + mips* ) + # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this + # at 32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi_32bit=no +else $as_nop + gl_cv_host_cpu_c_abi_32bit=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + powerpc* ) + # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD. + # No need to distinguish them here; the caller may distinguish + # them based on the OS. + # On powerpc64 systems, the C compiler may still be generating + # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may + # be generating 64-bit code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __powerpc64__ || defined _ARCH_PPC64 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi_32bit=no +else $as_nop + gl_cv_host_cpu_c_abi_32bit=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + rs6000 ) + gl_cv_host_cpu_c_abi_32bit=yes + ;; + + riscv32 | riscv64 ) + # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d. + # Size of 'long' and 'void *': + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi_32bit=no +else $as_nop + gl_cv_host_cpu_c_abi_32bit=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + s390* ) + # On s390x, the C compiler may be generating 64-bit (= s390x) code + # or 31-bit (= s390) code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __LP64__ || defined __s390x__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi_32bit=no +else $as_nop + gl_cv_host_cpu_c_abi_32bit=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + sparc | sparc64 ) + # UltraSPARCs running Linux have `uname -m` = "sparc64", but the + # C compiler still generates 32-bit code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __sparcv9 || defined __arch64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi_32bit=no +else $as_nop + gl_cv_host_cpu_c_abi_32bit=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + *) + gl_cv_host_cpu_c_abi_32bit=unknown + ;; + esac + fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_host_cpu_c_abi_32bit" >&5 +printf "%s\n" "$gl_cv_host_cpu_c_abi_32bit" >&6; } + + HOST_CPU_C_ABI_32BIT="$gl_cv_host_cpu_c_abi_32bit" + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ELF binary format" >&5 +printf %s "checking for ELF binary format... " >&6; } +if test ${gl_cv_elf+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __ELF__ + Extensible Linking Format + #endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "Extensible Linking Format" >/dev/null 2>&1 +then : + gl_cv_elf=yes +else $as_nop + gl_cv_elf=no +fi +rm -rf conftest* + + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_elf" >&5 +printf "%s\n" "$gl_cv_elf" >&6; } + if test $gl_cv_elf; then + # Extract the ELF class of a file (5th byte) in decimal. + # Cf. https://en.wikipedia.org/wiki/Executable_and_Linkable_Format#File_header + if od -A x < /dev/null >/dev/null 2>/dev/null; then + # Use POSIX od. + func_elfclass () + { + od -A n -t d1 -j 4 -N 1 + } + else + # Use BSD hexdump. + func_elfclass () + { + dd bs=1 count=1 skip=4 2>/dev/null | hexdump -e '1/1 "%3d "' + echo + } + fi + case $HOST_CPU_C_ABI_32BIT in + yes) + # 32-bit ABI. + acl_is_expected_elfclass () + { + test "`func_elfclass | sed -e 's/[ ]//g'`" = 1 + } + ;; + no) + # 64-bit ABI. + acl_is_expected_elfclass () + { + test "`func_elfclass | sed -e 's/[ ]//g'`" = 2 + } + ;; + *) + # Unknown. + acl_is_expected_elfclass () + { + : + } + ;; + esac + else + acl_is_expected_elfclass () + { + : + } + fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the common suffixes of directories in the library search path" >&5 +printf %s "checking for the common suffixes of directories in the library search path... " >&6; } +if test ${acl_cv_libdirstems+y} +then : + printf %s "(cached) " >&6 +else $as_nop + acl_libdirstem=lib + acl_libdirstem2= + acl_libdirstem3= + case "$host_os" in + solaris*) + if test $HOST_CPU_C_ABI_32BIT = no; then + acl_libdirstem2=lib/64 + case "$host_cpu" in + sparc*) acl_libdirstem3=lib/sparcv9 ;; + i*86 | x86_64) acl_libdirstem3=lib/amd64 ;; + esac + fi + ;; + *) + searchpath=`(LC_ALL=C $CC $CPPFLAGS $CFLAGS -print-search-dirs) 2>/dev/null \ + | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` + if test $HOST_CPU_C_ABI_32BIT != no; then + # 32-bit or unknown ABI. + if test -d /usr/lib32; then + acl_libdirstem2=lib32 + fi + fi + if test $HOST_CPU_C_ABI_32BIT != yes; then + # 64-bit or unknown ABI. + if test -d /usr/lib64; then + acl_libdirstem3=lib64 + fi + fi + if test -n "$searchpath"; then + acl_save_IFS="${IFS= }"; IFS=":" + for searchdir in $searchpath; do + if test -d "$searchdir"; then + case "$searchdir" in + */lib32/ | */lib32 ) acl_libdirstem2=lib32 ;; + */lib64/ | */lib64 ) acl_libdirstem3=lib64 ;; + */../ | */.. ) + # Better ignore directories of this form. They are misleading. + ;; + *) searchdir=`cd "$searchdir" && pwd` + case "$searchdir" in + */lib32 ) acl_libdirstem2=lib32 ;; + */lib64 ) acl_libdirstem3=lib64 ;; + esac ;; + esac + fi + done + IFS="$acl_save_IFS" + if test $HOST_CPU_C_ABI_32BIT = yes; then + # 32-bit ABI. + acl_libdirstem3= + fi + if test $HOST_CPU_C_ABI_32BIT = no; then + # 64-bit ABI. + acl_libdirstem2= + fi + fi + ;; + esac + test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" + test -n "$acl_libdirstem3" || acl_libdirstem3="$acl_libdirstem" + acl_cv_libdirstems="$acl_libdirstem,$acl_libdirstem2,$acl_libdirstem3" + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_libdirstems" >&5 +printf "%s\n" "$acl_cv_libdirstems" >&6; } + acl_libdirstem=`echo "$acl_cv_libdirstems" | sed -e 's/,.*//'` + acl_libdirstem2=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,//' -e 's/,.*//'` + acl_libdirstem3=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,[^,]*,//' -e 's/,.*//'` + + + + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" + eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libiconv-prefix was given. +if test ${with_libiconv_prefix+y} +then : + withval=$with_libiconv_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" + eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + additional_libdir2="$withval/$acl_libdirstem2" + additional_libdir3="$withval/$acl_libdirstem3" + fi + fi + +fi + + if test "X$additional_libdir2" = "X$additional_libdir"; then + additional_libdir2= + fi + if test "X$additional_libdir3" = "X$additional_libdir"; then + additional_libdir3= + fi + LIBICONV= + LTLIBICONV= + INCICONV= + LIBICONV_PREFIX= + HAVE_LIBICONV= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='iconv ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + for additional_libdir_variable in additional_libdir additional_libdir2 additional_libdir3; do + if test "X$found_dir" = "X"; then + eval dir=\$$additional_libdir_variable + if test -n "$dir"; then + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + fi + done + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no \ + || test "X$found_dir" = "X/usr/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem3"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + if test "$name" = 'iconv'; then + LIBICONV_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem2 | */$acl_libdirstem2/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` + if test "$name" = 'iconv'; then + LIBICONV_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem3 | */$acl_libdirstem3/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem3/"'*$,,'` + if test "$name" = 'iconv'; then + LIBICONV_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + dependency_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$dependency_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$dependency_libdir" != "X/usr/$acl_libdirstem2" \ + && test "X$dependency_libdir" != "X/usr/$acl_libdirstem3"; then + haveit= + if test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem2" \ + || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem3"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$dependency_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$dependency_libdir"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$dependency_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$dependency_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$dependency_libdir"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$dependency_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" + ;; + esac + done + fi + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" + done + fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 +printf %s "checking for CFPreferencesCopyAppValue... " >&6; } +if test ${gt_cv_func_CFPreferencesCopyAppValue+y} +then : + printf %s "(cached) " >&6 +else $as_nop + gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +CFPreferencesCopyAppValue(NULL, NULL) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + gt_cv_func_CFPreferencesCopyAppValue=yes +else $as_nop + gt_cv_func_CFPreferencesCopyAppValue=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 +printf "%s\n" "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + +printf "%s\n" "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h + + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyPreferredLanguages" >&5 +printf %s "checking for CFLocaleCopyPreferredLanguages... " >&6; } +if test ${gt_cv_func_CFLocaleCopyPreferredLanguages+y} +then : + printf %s "(cached) " >&6 +else $as_nop + gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +CFLocaleCopyPreferredLanguages(); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + gt_cv_func_CFLocaleCopyPreferredLanguages=yes +else $as_nop + gt_cv_func_CFLocaleCopyPreferredLanguages=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyPreferredLanguages" >&5 +printf "%s\n" "$gt_cv_func_CFLocaleCopyPreferredLanguages" >&6; } + if test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then + +printf "%s\n" "#define HAVE_CFLOCALECOPYPREFERREDLANGUAGES 1" >>confdefs.h + + fi + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes \ + || test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + + + + + + + LIBINTL= + LTLIBINTL= + POSUB= + + case " $gt_needs " in + *" need-formatstring-macros "*) gt_api_version=3 ;; + *" need-ngettext "*) gt_api_version=2 ;; + *) gt_api_version=1 ;; + esac + gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" + gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" + + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + + + if test $gt_api_version -ge 3; then + gt_revision_test_code=' +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +' + else + gt_revision_test_code= + fi + if test $gt_api_version -ge 2; then + gt_expression_test_code=' + * ngettext ("", "", 0)' + else + gt_expression_test_code= + fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 +printf %s "checking for GNU gettext in libc... " >&6; } +if eval test \${$gt_func_gnugettext_libc+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; +#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_domain_bindings) +#else +#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 +#endif +$gt_revision_test_code + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$gt_func_gnugettext_libc=yes" +else $as_nop + eval "$gt_func_gnugettext_libc=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$gt_func_gnugettext_libc + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + + + + + + am_save_CPPFLAGS="$CPPFLAGS" + + for element in $INCICONV; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 +printf %s "checking for iconv... " >&6; } +if test ${am_cv_func_iconv+y} +then : + printf %s "(cached) " >&6 +else $as_nop + + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main (void) +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main (void) +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + am_cv_lib_iconv=yes + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$am_save_LIBS" + fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 +printf "%s\n" "$am_cv_func_iconv" >&6; } + if test "$am_cv_func_iconv" = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 +printf %s "checking for working iconv... " >&6; } +if test ${am_cv_func_iconv_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop + + am_save_LIBS="$LIBS" + if test $am_cv_lib_iconv = yes; then + LIBS="$LIBS $LIBICONV" + fi + am_cv_func_iconv_works=no + for ac_iconv_const in '' 'const'; do + if test "$cross_compiling" = yes +then : + case "$host_os" in + aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; + *) am_cv_func_iconv_works="guessing yes" ;; + esac +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +#ifndef ICONV_CONST +# define ICONV_CONST $ac_iconv_const +#endif + +int +main (void) +{ +int result = 0; + /* Test against AIX 5.1 bug: Failures are not distinguishable from successful + returns. */ + { + iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); + if (cd_utf8_to_88591 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ + char buf[10]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_utf8_to_88591, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 1; + iconv_close (cd_utf8_to_88591); + } + } + /* Test against Solaris 10 bug: Failures are not distinguishable from + successful returns. */ + { + iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); + if (cd_ascii_to_88591 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\263"; + char buf[10]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_ascii_to_88591, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 2; + iconv_close (cd_ascii_to_88591); + } + } + /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\304"; + static char buf[2] = { (char)0xDE, (char)0xAD }; + ICONV_CONST char *inptr = input; + size_t inbytesleft = 1; + char *outptr = buf; + size_t outbytesleft = 1; + size_t res = iconv (cd_88591_to_utf8, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) + result |= 4; + iconv_close (cd_88591_to_utf8); + } + } +#if 0 /* This bug could be worked around by the caller. */ + /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char buf[50]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_88591_to_utf8, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if ((int)res > 0) + result |= 8; + iconv_close (cd_88591_to_utf8); + } + } +#endif + /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is + provided. */ + { + /* Try standardized names. */ + iconv_t cd1 = iconv_open ("UTF-8", "EUC-JP"); + /* Try IRIX, OSF/1 names. */ + iconv_t cd2 = iconv_open ("UTF-8", "eucJP"); + /* Try AIX names. */ + iconv_t cd3 = iconv_open ("UTF-8", "IBM-eucJP"); + /* Try HP-UX names. */ + iconv_t cd4 = iconv_open ("utf8", "eucJP"); + if (cd1 == (iconv_t)(-1) && cd2 == (iconv_t)(-1) + && cd3 == (iconv_t)(-1) && cd4 == (iconv_t)(-1)) + result |= 16; + if (cd1 != (iconv_t)(-1)) + iconv_close (cd1); + if (cd2 != (iconv_t)(-1)) + iconv_close (cd2); + if (cd3 != (iconv_t)(-1)) + iconv_close (cd3); + if (cd4 != (iconv_t)(-1)) + iconv_close (cd4); + } + return result; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + am_cv_func_iconv_works=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + test "$am_cv_func_iconv_works" = no || break + done + LIBS="$am_save_LIBS" + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 +printf "%s\n" "$am_cv_func_iconv_works" >&6; } + case "$am_cv_func_iconv_works" in + *no) am_func_iconv=no am_cv_lib_iconv=no ;; + *) am_func_iconv=yes ;; + esac + else + am_func_iconv=no am_cv_lib_iconv=no + fi + if test "$am_func_iconv" = yes; then + +printf "%s\n" "#define HAVE_ICONV 1" >>confdefs.h + + fi + if test "$am_cv_lib_iconv" = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 +printf %s "checking how to link with libiconv... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 +printf "%s\n" "$LIBICONV" >&6; } + else + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + + + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" + eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libintl-prefix was given. +if test ${with_libintl_prefix+y} +then : + withval=$with_libintl_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" + eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + additional_libdir2="$withval/$acl_libdirstem2" + additional_libdir3="$withval/$acl_libdirstem3" + fi + fi + +fi + + if test "X$additional_libdir2" = "X$additional_libdir"; then + additional_libdir2= + fi + if test "X$additional_libdir3" = "X$additional_libdir"; then + additional_libdir3= + fi + LIBINTL= + LTLIBINTL= + INCINTL= + LIBINTL_PREFIX= + HAVE_LIBINTL= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='intl ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + for additional_libdir_variable in additional_libdir additional_libdir2 additional_libdir3; do + if test "X$found_dir" = "X"; then + eval dir=\$$additional_libdir_variable + if test -n "$dir"; then + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + fi + done + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no \ + || test "X$found_dir" = "X/usr/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem3"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + if test "$name" = 'intl'; then + LIBINTL_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem2 | */$acl_libdirstem2/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` + if test "$name" = 'intl'; then + LIBINTL_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem3 | */$acl_libdirstem3/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem3/"'*$,,'` + if test "$name" = 'intl'; then + LIBINTL_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + dependency_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$dependency_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$dependency_libdir" != "X/usr/$acl_libdirstem2" \ + && test "X$dependency_libdir" != "X/usr/$acl_libdirstem3"; then + haveit= + if test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem2" \ + || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem3"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$dependency_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$dependency_libdir"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$dependency_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$dependency_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$dependency_libdir"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$dependency_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" + ;; + esac + done + fi + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" + done + fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 +printf %s "checking for GNU gettext in libintl... " >&6; } +if eval test \${$gt_func_gnugettext_libintl+y} +then : + printf %s "(cached) " >&6 +else $as_nop + gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); +#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) +#else +#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 +#endif +$gt_revision_test_code + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$gt_func_gnugettext_libintl=yes" +else $as_nop + eval "$gt_func_gnugettext_libintl=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); +#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) +#else +#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 +#endif +$gt_revision_test_code + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + eval "$gt_func_gnugettext_libintl=yes" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" +fi +eval ac_res=\$$gt_func_gnugettext_libintl + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + fi + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ + || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ + && test "$PACKAGE" != gettext-runtime \ + && test "$PACKAGE" != gettext-tools; }; then + gt_use_preinstalled_gnugettext=yes + else + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + + + if test -n "$INTL_MACOSX_LIBS"; then + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" + LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" + fi + fi + + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + +printf "%s\n" "#define ENABLE_NLS 1" >>confdefs.h + + else + USE_NLS=no + fi + fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 +printf %s "checking whether to use NLS... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +printf "%s\n" "$USE_NLS" >&6; } + if test "$USE_NLS" = "yes"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 +printf %s "checking where the gettext function comes from... " >&6; } + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 +printf "%s\n" "$gt_source" >&6; } + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 +printf %s "checking how to link with libintl... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 +printf "%s\n" "$LIBINTL" >&6; } + + for element in $INCINTL; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + fi + + +printf "%s\n" "#define HAVE_GETTEXT 1" >>confdefs.h + + +printf "%s\n" "#define HAVE_DCGETTEXT 1" >>confdefs.h + + fi + + POSUB=po + fi + + + + INTLLIBS="$LIBINTL" + + + + + + +#USE_INCLUDED_LIBINTL="no" +#AC_SUBST(USE_INCLUDED_LIBINTL) +#BUILD_INCLUDED_LIBINTL="no" +#AC_SUBST(BUILD_INCLUDED_LIBINTL) + + + + + + + + + + + + + + + + + + + + + + +# Extract the first word of "sed", so it can be a program name with args. +set dummy sed; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_sedpath+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $sedpath in + [\\/]* | ?:[\\/]*) + ac_cv_path_sedpath="$sedpath" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_sedpath="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +sedpath=$ac_cv_path_sedpath +if test -n "$sedpath"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sedpath" >&5 +printf "%s\n" "$sedpath" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +if test "_$sedpath" = _; then + as_fn_error $? "\"Cannot find sed: I need it\!\"" "$LINENO" 5 +fi + +# Extract the first word of "uname", so it can be a program name with args. +set dummy uname; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_unamepath+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $unamepath in + [\\/]* | ?:[\\/]*) + ac_cv_path_unamepath="$unamepath" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_unamepath="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +unamepath=$ac_cv_path_unamepath +if test -n "$unamepath"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $unamepath" >&5 +printf "%s\n" "$unamepath" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +if test "_$unamepath" = _; then + system="unknown" +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking system type" >&5 +printf %s "checking system type... " >&6; } + system=`$unamepath -s` + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $system" >&5 +printf "%s\n" "$system" >&6; } + if test "$system" = "Linux"; then + printf "%s\n" "#define USING_LINUX 1" >>confdefs.h + + fi + if test "$system" = "FreeBSD"; then + printf "%s\n" "#define USING_FREEBSD 1" >>confdefs.h + + fi +fi + + +# Check whether --enable-socks was given. +if test ${enable_socks+y} +then : + enableval=$enable_socks; socks=$enableval +else $as_nop + socks=no +fi + + +# Check whether --enable-ipv6 was given. +if test ${enable_ipv6+y} +then : + enableval=$enable_ipv6; ipv6=$enableval +else $as_nop + ipv6=no +fi + + +# Check whether --enable-xft was given. +if test ${enable_xft+y} +then : + enableval=$enable_xft; xft=$enableval +else $as_nop + xft=no +fi + + +# Check whether --enable-openssl was given. +if test ${enable_openssl+y} +then : + enableval=$enable_openssl; openssl=$enableval +else $as_nop + openssl=yes +fi + + +# Check whether --enable-gtkfe was given. +if test ${enable_gtkfe+y} +then : + enableval=$enable_gtkfe; gtkfe=$enableval +else $as_nop + gtkfe=yes +fi + + +# Check whether --enable-textfe was given. +if test ${enable_textfe+y} +then : + enableval=$enable_textfe; textfe=$enableval +else $as_nop + textfe=no +fi + + + +# Check whether --enable-xlib was given. +if test ${enable_xlib+y} +then : + enableval=$enable_xlib; xlib=$enableval +else $as_nop + xlib=yes +fi + + +# Check whether --enable-python was given. +if test ${enable_python+y} +then : + enableval=$enable_python; python=$enableval +else $as_nop + python=yes +fi + + +# Check whether --enable-perl was given. +if test ${enable_perl+y} +then : + enableval=$enable_perl; perl=$enableval +else $as_nop + perl=yes +fi + + +# Check whether --enable-perl_old was given. +if test ${enable_perl_old+y} +then : + enableval=$enable_perl_old; perl_old=$enableval +else $as_nop + perl_old=yes +fi + + +# Check whether --enable-tcl was given. +if test ${enable_tcl+y} +then : + enableval=$enable_tcl; tcl=$enableval +else $as_nop + tcl=yes +fi + + +# Check whether --enable-plugin was given. +if test ${enable_plugin+y} +then : + enableval=$enable_plugin; plugin=$enableval +else $as_nop + plugin=yes +fi + + +# Check whether --enable-dbus was given. +if test ${enable_dbus+y} +then : + enableval=$enable_dbus; dbus=$enableval +else $as_nop + dbus=yes +fi + + +# Check whether --enable-mmx was given. +if test ${enable_mmx+y} +then : + enableval=$enable_mmx; mmx=$enableval +else $as_nop + mmx=yes +fi + + +# Check whether --enable-shm was given. +if test ${enable_shm+y} +then : + enableval=$enable_shm; shm=$enableval +else $as_nop + shm=no +fi + + +# Check whether --enable-spell was given. +if test ${enable_spell+y} +then : + enableval=$enable_spell; spell=$enableval +else $as_nop + spell=libsexy +fi + + +# Check whether --enable-ntlm was given. +if test ${enable_ntlm+y} +then : + enableval=$enable_ntlm; ntlm=$enableval +else $as_nop + ntlm=no +fi + + + + + + +# Check whether --enable-glibtest was given. +if test ${enable_glibtest+y} +then : + enableval=$enable_glibtest; +else $as_nop + enable_glibtest=yes +fi + + + min_glib_version=2.0.3 + pkg_config_args="glib-2.0 >= $min_glib_version" + for module in . + do + case "$module" in + gmodule) + pkg_config_args="$pkg_config_args gmodule-2.0" + ;; + gmodule-no-export) + pkg_config_args="$pkg_config_args gmodule-no-export-2.0" + ;; + gobject) + pkg_config_args="$pkg_config_args gobject-2.0" + ;; + gthread) + pkg_config_args="$pkg_config_args gthread-2.0" + ;; + gio*) + pkg_config_args="$pkg_config_args $module-2.0" + ;; + esac + done + + + + + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +printf "%s\n" "$PKG_CONFIG" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.16 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + PKG_CONFIG="" + fi +fi + + no_glib="" + + if test "x$PKG_CONFIG" = x ; then + no_glib=yes + PKG_CONFIG=no + fi + + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $pkg_config_args" >&5 +printf %s "checking for $pkg_config_args... " >&6; } + +if test -n "$GLIB_CFLAGS"; then + pkg_cv_GLIB_CFLAGS="$GLIB_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$pkg_config_args\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$pkg_config_args") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GLIB_CFLAGS=`$PKG_CONFIG --cflags "$pkg_config_args" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$GLIB_LIBS"; then + pkg_cv_GLIB_LIBS="$GLIB_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$pkg_config_args\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$pkg_config_args") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GLIB_LIBS=`$PKG_CONFIG --libs "$pkg_config_args" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$pkg_config_args" 2>&1` + else + GLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$pkg_config_args" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$GLIB_PKG_ERRORS" >&5 + + : +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + : +else + GLIB_CFLAGS=$pkg_cv_GLIB_CFLAGS + GLIB_LIBS=$pkg_cv_GLIB_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + : +fi + + +if test -n "$GLIB_GENMARSHAL"; then + pkg_cv_GLIB_GENMARSHAL="$GLIB_GENMARSHAL" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "glib-2.0") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GLIB_GENMARSHAL=`$PKG_CONFIG --variable="glib_genmarshal" "glib-2.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +GLIB_GENMARSHAL=$pkg_cv_GLIB_GENMARSHAL + +if test "x$GLIB_GENMARSHAL" = x"" +then : + +fi + +if test -n "$GOBJECT_QUERY"; then + pkg_cv_GOBJECT_QUERY="$GOBJECT_QUERY" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "glib-2.0") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GOBJECT_QUERY=`$PKG_CONFIG --variable="gobject_query" "glib-2.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +GOBJECT_QUERY=$pkg_cv_GOBJECT_QUERY + +if test "x$GOBJECT_QUERY" = x"" +then : + +fi + +if test -n "$GLIB_MKENUMS"; then + pkg_cv_GLIB_MKENUMS="$GLIB_MKENUMS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "glib-2.0") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GLIB_MKENUMS=`$PKG_CONFIG --variable="glib_mkenums" "glib-2.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +GLIB_MKENUMS=$pkg_cv_GLIB_MKENUMS + +if test "x$GLIB_MKENUMS" = x"" +then : + +fi + +if test -n "$GLIB_COMPILE_RESOURCES"; then + pkg_cv_GLIB_COMPILE_RESOURCES="$GLIB_COMPILE_RESOURCES" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gio-2.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gio-2.0") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GLIB_COMPILE_RESOURCES=`$PKG_CONFIG --variable="glib_compile_resources" "gio-2.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +GLIB_COMPILE_RESOURCES=$pkg_cv_GLIB_COMPILE_RESOURCES + +if test "x$GLIB_COMPILE_RESOURCES" = x"" +then : + +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GLIB - version >= $min_glib_version" >&5 +printf %s "checking for GLIB - version >= $min_glib_version... " >&6; } + + if test x$PKG_CONFIG != xno ; then + ## don't try to run the test against uninstalled libtool libs + if $PKG_CONFIG --uninstalled $pkg_config_args; then + echo "Will use uninstalled version of GLib found in PKG_CONFIG_PATH" + enable_glibtest=no + fi + + if $PKG_CONFIG --atleast-version $min_glib_version $pkg_config_args; then + : + else + no_glib=yes + fi + fi + + if test x"$no_glib" = x ; then + glib_config_major_version=`$PKG_CONFIG --modversion glib-2.0 | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` + glib_config_minor_version=`$PKG_CONFIG --modversion glib-2.0 | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` + glib_config_micro_version=`$PKG_CONFIG --modversion glib-2.0 | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` + if test "x$enable_glibtest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GLIB_CFLAGS" + LIBS="$GLIB_LIBS $LIBS" + rm -f conf.glibtest + if test "$cross_compiling" = yes +then : + echo $ac_n "cross compiling; assumed OK... $ac_c" +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include + +int +main (void) +{ + unsigned int major, minor, micro; + + fclose (fopen ("conf.glibtest", "w")); + + if (sscanf("$min_glib_version", "%u.%u.%u", &major, &minor, µ) != 3) { + printf("%s, bad version string\n", "$min_glib_version"); + exit(1); + } + + if ((glib_major_version != $glib_config_major_version) || + (glib_minor_version != $glib_config_minor_version) || + (glib_micro_version != $glib_config_micro_version)) + { + printf("\n*** 'pkg-config --modversion glib-2.0' returned %d.%d.%d, but GLIB (%d.%d.%d)\n", + $glib_config_major_version, $glib_config_minor_version, $glib_config_micro_version, + glib_major_version, glib_minor_version, glib_micro_version); + printf ("*** was found! If pkg-config was correct, then it is best\n"); + printf ("*** to remove the old version of GLib. You may also be able to fix the error\n"); + printf("*** by modifying your LD_LIBRARY_PATH environment variable, or by editing\n"); + printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); + printf("*** required on your system.\n"); + printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n"); + printf("*** to point to the correct configuration files\n"); + } + else if ((glib_major_version != GLIB_MAJOR_VERSION) || + (glib_minor_version != GLIB_MINOR_VERSION) || + (glib_micro_version != GLIB_MICRO_VERSION)) + { + printf("*** GLib header files (version %d.%d.%d) do not match\n", + GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION); + printf("*** library (version %d.%d.%d)\n", + glib_major_version, glib_minor_version, glib_micro_version); + } + else + { + if ((glib_major_version > major) || + ((glib_major_version == major) && (glib_minor_version > minor)) || + ((glib_major_version == major) && (glib_minor_version == minor) && (glib_micro_version >= micro))) + { + return 0; + } + else + { + printf("\n*** An old version of GLib (%u.%u.%u) was found.\n", + glib_major_version, glib_minor_version, glib_micro_version); + printf("*** You need a version of GLib newer than %u.%u.%u. The latest version of\n", + major, minor, micro); + printf("*** GLib is always available from ftp://ftp.gtk.org.\n"); + printf("***\n"); + printf("*** If you have already installed a sufficiently new version, this error\n"); + printf("*** probably means that the wrong copy of the pkg-config shell script is\n"); + printf("*** being found. The easiest way to fix this is to remove the old version\n"); + printf("*** of GLib, but you can also set the PKG_CONFIG environment to point to the\n"); + printf("*** correct copy of pkg-config. (In this case, you will have to\n"); + printf("*** modify your LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf\n"); + printf("*** so that the correct libraries are found at run-time))\n"); + } + } + return 1; +} + +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + +else $as_nop + no_glib=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + if test "x$no_glib" = x ; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version)" >&5 +printf "%s\n" "yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version)" >&6; } + glib=yes + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + if test "$PKG_CONFIG" = "no" ; then + echo "*** A new enough version of pkg-config was not found." + echo "*** See http://www.freedesktop.org/software/pkgconfig/" + else + if test -f conf.glibtest ; then + : + else + echo "*** Could not run GLib test program, checking why..." + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GLIB_CFLAGS" + LIBS="$LIBS $GLIB_LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main (void) +{ + return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding GLib or finding the wrong" + echo "*** version of GLib. If it is not finding GLib, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" +else $as_nop + echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occurred. This usually means GLib is incorrectly installed." +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + GLIB_CFLAGS="" + GLIB_LIBS="" + GLIB_GENMARSHAL="" + GOBJECT_QUERY="" + GLIB_MKENUMS="" + GLIB_COMPILE_RESOURCES="" + glib=no + fi + rm -f conf.glibtest + +if test "$glib" = no; then + as_fn_error $? "\"Cannot find glib\"" "$LINENO" 5 +fi + +COMMON_CFLAGS="$GLIB_CFLAGS" +COMMON_LIBS="$GLIB_LIBS" + + +# Check whether --enable-gtktest was given. +if test ${enable_gtktest+y} +then : + enableval=$enable_gtktest; +else $as_nop + enable_gtktest=yes +fi + + + pkg_config_args=gtk+-2.0 + for module in . + do + case "$module" in + gthread) + pkg_config_args="$pkg_config_args gthread-2.0" + ;; + esac + done + + no_gtk="" + + + + + + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +printf "%s\n" "$PKG_CONFIG" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.7 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + PKG_CONFIG="" + fi +fi + + min_gtk_version=2.10.0 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GTK+ - version >= $min_gtk_version" >&5 +printf %s "checking for GTK+ - version >= $min_gtk_version... " >&6; } + + if test x$PKG_CONFIG != xno ; then + ## don't try to run the test against uninstalled libtool libs + if $PKG_CONFIG --uninstalled $pkg_config_args; then + echo "Will use uninstalled version of GTK+ found in PKG_CONFIG_PATH" + enable_gtktest=no + fi + + if $PKG_CONFIG --atleast-version $min_gtk_version $pkg_config_args; then + : + else + no_gtk=yes + fi + fi + + if test x"$no_gtk" = x ; then + GTK_CFLAGS=`$PKG_CONFIG $pkg_config_args --cflags` + GTK_LIBS=`$PKG_CONFIG $pkg_config_args --libs` + gtk_config_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` + gtk_config_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` + gtk_config_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` + if test "x$enable_gtktest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$GTK_LIBS $LIBS" + rm -f conf.gtktest + if test "$cross_compiling" = yes +then : + echo $ac_n "cross compiling; assumed OK... $ac_c" +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include + +int +main () +{ + int major, minor, micro; + char *tmp_version; + + fclose (fopen ("conf.gtktest", "w")); + + /* HP/UX 9 (%@#!) writes to sscanf strings */ + tmp_version = g_strdup("$min_gtk_version"); + if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { + printf("%s, bad version string\n", "$min_gtk_version"); + exit(1); + } + + if ((gtk_major_version != $gtk_config_major_version) || + (gtk_minor_version != $gtk_config_minor_version) || + (gtk_micro_version != $gtk_config_micro_version)) + { + printf("\n*** 'pkg-config --modversion gtk+-2.0' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", + $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version, + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf ("*** was found! If pkg-config was correct, then it is best\n"); + printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n"); + printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); + printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); + printf("*** required on your system.\n"); + printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n"); + printf("*** to point to the correct configuration files\n"); + } + else if ((gtk_major_version != GTK_MAJOR_VERSION) || + (gtk_minor_version != GTK_MINOR_VERSION) || + (gtk_micro_version != GTK_MICRO_VERSION)) + { + printf("*** GTK+ header files (version %d.%d.%d) do not match\n", + GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); + printf("*** library (version %d.%d.%d)\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + } + else + { + if ((gtk_major_version > major) || + ((gtk_major_version == major) && (gtk_minor_version > minor)) || + ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))) + { + return 0; + } + else + { + printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n", + major, minor, micro); + printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n"); + printf("***\n"); + printf("*** If you have already installed a sufficiently new version, this error\n"); + printf("*** probably means that the wrong copy of the pkg-config shell script is\n"); + printf("*** being found. The easiest way to fix this is to remove the old version\n"); + printf("*** of GTK+, but you can also set the PKG_CONFIG environment to point to the\n"); + printf("*** correct copy of pkg-config. (In this case, you will have to\n"); + printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); + printf("*** so that the correct libraries are found at run-time))\n"); + } + } + return 1; +} + +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + +else $as_nop + no_gtk=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + if test "x$no_gtk" = x ; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version)" >&5 +printf "%s\n" "yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version)" >&6; } + havegtk=yes + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + if test "$PKG_CONFIG" = "no" ; then + echo "*** A new enough version of pkg-config was not found." + echo "*** See http://pkgconfig.sourceforge.net" + else + if test -f conf.gtktest ; then + : + else + echo "*** Could not run GTK+ test program, checking why..." + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$LIBS $GTK_LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main (void) +{ + return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding GTK+ or finding the wrong" + echo "*** version of GTK+. If it is not finding GTK+, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" +else $as_nop + echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occured. This usually means GTK+ is incorrectly installed." +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + GTK_CFLAGS="" + GTK_LIBS="" + havegtk=no + fi + + + rm -f conf.gtktest + + +if test "$havegtk" = no; then + gtkfe=no + echo + echo Cannot find GTK\! Not building GTK FrontEnd. + echo +fi + +if test "$gtkfe" != yes; then + gnome=no + COMMON_LIBS="$GLIB_LIBS" + COMMON_CFLAGS="$GLIB_CFLAGS" +fi + + +GUI_LIBS="$GUI_LIBS $GTK_LIBS" +GUI_CFLAGS="$GUI_CFLAGS $GTK_CFLAGS" + +gnome=no +#if test "$gnome" = yes; then +# AC_PATH_PROG(pkgconfigpath, pkg-config) +# AC_MSG_CHECKING(Gnome2 compile flags) +# GNOME_CFLAGS="`$pkgconfigpath libgnome-2.0 --cflags 2>/dev/null`" +# if test "_$GNOME_CFLAGS" = _ ; then +# gnome=no +# AC_MSG_RESULT([Gnome not found, building without it.]) +# else +# GNOME_VER="`$pkgconfigpath libgnome-2.0 --modversion`" +# GUI_LIBS="$GUI_LIBS `$pkgconfigpath libgnome-2.0 --libs`" +# GUI_CFLAGS="$GUI_CFLAGS $GNOME_CFLAGS" +# AC_DEFINE(USE_GNOME) +# AC_MSG_RESULT(ok) +# fi +#fi + +# GConf +# Extract the first word of "gconftool-2", so it can be a program name with args. +set dummy gconftool-2; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_GCONFTOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $GCONFTOOL in + [\\/]* | ?:[\\/]*) + ac_cv_path_GCONFTOOL="$GCONFTOOL" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_GCONFTOOL="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_GCONFTOOL" && ac_cv_path_GCONFTOOL="no" + ;; +esac +fi +GCONFTOOL=$ac_cv_path_GCONFTOOL +if test -n "$GCONFTOOL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GCONFTOOL" >&5 +printf "%s\n" "$GCONFTOOL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + + +if test "$xft" = yes; then + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_pkgconfigpath+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $pkgconfigpath in + [\\/]* | ?:[\\/]*) + ac_cv_path_pkgconfigpath="$pkgconfigpath" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_pkgconfigpath="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +pkgconfigpath=$ac_cv_path_pkgconfigpath +if test -n "$pkgconfigpath"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $pkgconfigpath" >&5 +printf "%s\n" "$pkgconfigpath" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if $pkgconfigpath xft --exists; then + GUI_CFLAGS="$GUI_CFLAGS `$pkgconfigpath xft --cflags`" + GUI_LIBS="$GUI_LIBS `$pkgconfigpath xft --libs`" + else + xft=no + oldCPPFLAGS=$CPPFLAGS + CPPFLAGS="$CPPFLAGS $GTK_CFLAGS" + for ac_header in X11/Xft/Xft.h +do : + ac_fn_c_check_header_compile "$LINENO" "X11/Xft/Xft.h" "ac_cv_header_X11_Xft_Xft_h" "$ac_includes_default" +if test "x$ac_cv_header_X11_Xft_Xft_h" = xyes +then : + printf "%s\n" "#define HAVE_X11_XFT_XFT_H 1" >>confdefs.h + xft=yes +fi + +done + CPPFLAGS=$oldCPPFLAGS + fi + if test "$xft" = yes; then + printf "%s\n" "#define USE_XFT 1" >>confdefs.h + + fi +fi + + +if test "$xlib" = yes; then + printf "%s\n" "#define USE_XLIB 1" >>confdefs.h + + if test "$system" = "SunOS"; then + LIBS="$LIBS -L/usr/openwin/lib -lX11" + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for XSetWMHints in -lX11" >&5 +printf %s "checking for XSetWMHints in -lX11... " >&6; } +if test ${ac_cv_lib_X11_XSetWMHints+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lX11 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char XSetWMHints (); +int +main (void) +{ +return XSetWMHints (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_X11_XSetWMHints=yes +else $as_nop + ac_cv_lib_X11_XSetWMHints=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_X11_XSetWMHints" >&5 +printf "%s\n" "$ac_cv_lib_X11_XSetWMHints" >&6; } +if test "x$ac_cv_lib_X11_XSetWMHints" = xyes +then : + printf "%s\n" "#define HAVE_LIBX11 1" >>confdefs.h + + LIBS="-lX11 $LIBS" + +fi + + fi +else + shm=no +fi + + +if test "$perl" = yes; then + # Extract the first word of "perl", so it can be a program name with args. +set dummy perl; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_perlpath+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $perlpath in + [\\/]* | ?:[\\/]*) + ac_cv_path_perlpath="$perlpath" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_perlpath="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +perlpath=$ac_cv_path_perlpath +if test -n "$perlpath"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $perlpath" >&5 +printf "%s\n" "$perlpath" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Perl compile flags" >&5 +printf %s "checking for Perl compile flags... " >&6; } + PERL_CFLAGS=`$perlpath -MExtUtils::Embed -e ccopts 2>/dev/null` + if test "_$PERL_CFLAGS" = _ ; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found, building without perl." >&5 +printf "%s\n" "not found, building without perl." >&6; } + perl=no + else + PERL_LDFLAGS=`$perlpath -MExtUtils::Embed -e ldopts |$sedpath 's/-lgdbm //'` + PERL_LDFLAGS=`echo $PERL_LDFLAGS |$sedpath 's/-ldb //'` + PERL_LDFLAGS=`echo $PERL_LDFLAGS |$sedpath 's/-lndbm //'` + if test "$system" = "Linux"; then + PERL_LDFLAGS=`echo $PERL_LDFLAGS |$sedpath 's/-lnsl //'` + PERL_LDFLAGS=`echo $PERL_LDFLAGS |$sedpath 's/-lposix //'` + fi + PERL_LDFLAGS=`echo $PERL_LDFLAGS |$sedpath 's/-lc //'` + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +printf "%s\n" "ok" >&6; } + +# oldLIBS=$LIBS +# LIBS="$LIBS $PERL_LDFLAGS" +# AC_CHECK_FUNC(eval_pv) +# AC_CHECK_FUNC(call_pv) +# LIBS=$oldLIBS + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for perl >= 5.8.0" >&5 +printf %s "checking for perl >= 5.8.0... " >&6; } + PERL_VER=`$perlpath -e 'print $]>= 5.008?"yes":"no"'` + if test "$PERL_VER" = "yes"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if perl plugin will be backward compatible" >&5 +printf %s "checking if perl plugin will be backward compatible... " >&6; } + if test "$perl_old" = "yes"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + printf "%s\n" "#define OLD_PERL 1" >>confdefs.h + + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + fi + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + echo "perl version too old, building without perl." + perl=no + fi + fi +fi + + +if test "$python" = yes; then + # Extract the first word of "python2", so it can be a program name with args. +set dummy python2; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_pythonpath+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $pythonpath in + [\\/]* | ?:[\\/]*) + ac_cv_path_pythonpath="$pythonpath" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_pythonpath="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +pythonpath=$ac_cv_path_pythonpath +if test -n "$pythonpath"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $pythonpath" >&5 +printf "%s\n" "$pythonpath" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if test "_$pythonpath" = _ ; then + # Extract the first word of "python", so it can be a program name with args. +set dummy python; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_pythonpath+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $pythonpath in + [\\/]* | ?:[\\/]*) + ac_cv_path_pythonpath="$pythonpath" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_pythonpath="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +pythonpath=$ac_cv_path_pythonpath +if test -n "$pythonpath"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $pythonpath" >&5 +printf "%s\n" "$pythonpath" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + fi + if test "_$pythonpath" = _ ; then + python=no + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking Python version" >&5 +printf %s "checking Python version... " >&6; } + PY_VER=`$pythonpath -c 'import distutils.sysconfig; print(distutils.sysconfig.get_config_vars("VERSION")[0]);'` + PY_LIB=`$pythonpath -c 'import distutils.sysconfig; print(distutils.sysconfig.get_python_lib(standard_lib=1));'` + PY_INC=`$pythonpath -c 'import distutils.sysconfig; print(distutils.sysconfig.get_config_vars("INCLUDEPY")[0]);'` + $pythonpath -c "import sys; map(int,sys.version[:3].split('.')) >= [2,2] or sys.exit(1)" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PY_VER" >&5 +printf "%s\n" "$PY_VER" >&6; } + if test "$?" != "1"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking Python compile flags" >&5 +printf %s "checking Python compile flags... " >&6; } + PY_PREFIX=`$pythonpath -c 'import sys; print(sys.prefix)'` + PY_EXEC_PREFIX=`$pythonpath -c 'import sys; print(sys.exec_prefix)'` + if test -f $PY_INC/Python.h; then + PY_LIBS="-L$PY_LIB/config -lpython$PY_VER -lpthread -lutil" + PY_CFLAGS="-I$PY_INC" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +printf "%s\n" "ok" >&6; } + else + python=no + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Can't find Python.h" >&5 +printf "%s\n" "Can't find Python.h" >&6; } + fi + else + echo "Python too old. Only 2.2 or above is supported." + python=no + fi + fi +fi + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for location of tclConfig.sh" >&5 +printf %s "checking for location of tclConfig.sh... " >&6; } +dirs="$tcl /lib /usr/lib /usr/tcl/lib /usr/lib/tcl8.4 /usr/local/lib /usr/local/tcl-8.4/lib /usr/local/tcl/lib /opt/lib /usr/lib/tcl8.3" +found=0 +if test "$tcl" != "no"; then + tcl=no + for try in $dirs; do + if test -f $try/tclConfig.sh; then + found=1 + . $try/tclConfig.sh + TCL_LIBS="$TCL_LIB_SPEC $TCL_LIBS" + TCL_CFLAGS="-I${TCL_PREFIX}/include $TCL_INCLUDE_SPEC" + tcl=yes + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $try/tclConfig.sh" >&5 +printf "%s\n" "$try/tclConfig.sh" >&6; } + break + fi + done + if test "$found" -eq 0 ; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: tclConfig.sh not found - use the --enable-tcl option" >&5 +printf "%s\n" "tclConfig.sh not found - use the --enable-tcl option" >&6; } + fi +fi + + +ac_fn_c_check_func "$LINENO" "select" "ac_cv_func_select" +if test "x$ac_cv_func_select" = xyes +then : + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for select in -lsocket" >&5 +printf %s "checking for select in -lsocket... " >&6; } +if test ${ac_cv_lib_socket_select+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char select (); +int +main (void) +{ +return select (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_socket_select=yes +else $as_nop + ac_cv_lib_socket_select=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_select" >&5 +printf "%s\n" "$ac_cv_lib_socket_select" >&6; } +if test "x$ac_cv_lib_socket_select" = xyes +then : + printf "%s\n" "#define HAVE_LIBSOCKET 1" >>confdefs.h + + LIBS="-lsocket $LIBS" + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for select in -lnsl" >&5 +printf %s "checking for select in -lnsl... " >&6; } +if test ${ac_cv_lib_nsl_select+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char select (); +int +main (void) +{ +return select (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_nsl_select=yes +else $as_nop + ac_cv_lib_nsl_select=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_select" >&5 +printf "%s\n" "$ac_cv_lib_nsl_select" >&6; } +if test "x$ac_cv_lib_nsl_select" = xyes +then : + printf "%s\n" "#define HAVE_LIBNSL 1" >>confdefs.h + + LIBS="-lnsl $LIBS" + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for select in -linet" >&5 +printf %s "checking for select in -linet... " >&6; } +if test ${ac_cv_lib_inet_select+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-linet $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char select (); +int +main (void) +{ +return select (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_inet_select=yes +else $as_nop + ac_cv_lib_inet_select=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_inet_select" >&5 +printf "%s\n" "$ac_cv_lib_inet_select" >&6; } +if test "x$ac_cv_lib_inet_select" = xyes +then : + printf "%s\n" "#define HAVE_LIBINET 1" >>confdefs.h + + LIBS="-linet $LIBS" + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for select in -lcposix" >&5 +printf %s "checking for select in -lcposix... " >&6; } +if test ${ac_cv_lib_cposix_select+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcposix $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char select (); +int +main (void) +{ +return select (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_cposix_select=yes +else $as_nop + ac_cv_lib_cposix_select=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cposix_select" >&5 +printf "%s\n" "$ac_cv_lib_cposix_select" >&6; } +if test "x$ac_cv_lib_cposix_select" = xyes +then : + printf "%s\n" "#define HAVE_LIBCPOSIX 1" >>confdefs.h + + LIBS="-lcposix $LIBS" + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for select in -lnet" >&5 +printf %s "checking for select in -lnet... " >&6; } +if test ${ac_cv_lib_net_select+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnet $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char select (); +int +main (void) +{ +return select (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_net_select=yes +else $as_nop + ac_cv_lib_net_select=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_net_select" >&5 +printf "%s\n" "$ac_cv_lib_net_select" >&6; } +if test "x$ac_cv_lib_net_select" = xyes +then : + printf "%s\n" "#define HAVE_LIBNET 1" >>confdefs.h + + LIBS="-lnet $LIBS" + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: i can not find select. you might need to help me" >&5 +printf "%s\n" "$as_me: WARNING: i can not find select. you might need to help me" >&2;} +fi + +fi + +fi + +fi + +fi + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for select in -lsocket" >&5 +printf %s "checking for select in -lsocket... " >&6; } +if test ${ac_cv_lib_socket_select+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char select (); +int +main (void) +{ +return select (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_socket_select=yes +else $as_nop + ac_cv_lib_socket_select=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_select" >&5 +printf "%s\n" "$ac_cv_lib_socket_select" >&6; } +if test "x$ac_cv_lib_socket_select" = xyes +then : + printf "%s\n" "#define HAVE_LIBSOCKET 1" >>confdefs.h + + LIBS="-lsocket $LIBS" + +fi + + +if test "$ipv6" = yes; then + + for ac_func in getaddrinfo +do : + ac_fn_c_check_func "$LINENO" "getaddrinfo" "ac_cv_func_getaddrinfo" +if test "x$ac_cv_func_getaddrinfo" = xyes +then : + printf "%s\n" "#define HAVE_GETADDRINFO 1" >>confdefs.h + have_getaddrinfo=yes +fi + +done + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable IPv6 support" >&5 +printf %s "checking whether to enable IPv6 support... " >&6; } + if test "$have_getaddrinfo" = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + printf "%s\n" "#define USE_IPV6 1" >>confdefs.h + + else + ipv6=no + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + fi +fi + + +retry=no +if test "$openssl" != no; then + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_pkgconfigpath+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $pkgconfigpath in + [\\/]* | ?:[\\/]*) + ac_cv_path_pkgconfigpath="$pkgconfigpath" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_pkgconfigpath="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +pkgconfigpath=$ac_cv_path_pkgconfigpath +if test -n "$pkgconfigpath"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $pkgconfigpath" >&5 +printf "%s\n" "$pkgconfigpath" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for openssl through pkg-config" >&5 +printf %s "checking for openssl through pkg-config... " >&6; } + if $pkgconfigpath openssl --exists; then + CPPFLAGS="$CPPFLAGS `$pkgconfigpath openssl --cflags`" + LIBS="$LIBS `$pkgconfigpath openssl --libs`" + printf "%s\n" "#define USE_OPENSSL 1" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + openssl=yes + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + retry=yes + fi +fi + +if test "$retry" = "yes"; then + unset openssl_path ac_cv_lib_ssl_SSL_new ac_cv_header_openssl_ssl_h + if test "$openssl" != yes; then + openssl_path=$openssl + fi + openssl=no + SAVED_LIBS=$LIBS + LIBS="$LIBS -lcrypto" + if test -n "$openssl_path"; then + LIBS="-L$openssl_path/lib $LIBS" + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SSL_new in -lssl" >&5 +printf %s "checking for SSL_new in -lssl... " >&6; } +if test ${ac_cv_lib_ssl_SSL_new+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lssl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char SSL_new (); +int +main (void) +{ +return SSL_new (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_ssl_SSL_new=yes +else $as_nop + ac_cv_lib_ssl_SSL_new=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ssl_SSL_new" >&5 +printf "%s\n" "$ac_cv_lib_ssl_SSL_new" >&6; } +if test "x$ac_cv_lib_ssl_SSL_new" = xyes +then : + have_openssl=yes +fi + + LIBS=$SAVED_LIBS + if test "$have_openssl" = yes; then + SAVED_CPPFLAGS=$CPPFLAGS + if test -n "$openssl_path"; then + CPPFLAGS="-I$openssl_path/include $CPPFLAGS" + fi + for ac_header in openssl/ssl.h +do : + ac_fn_c_check_header_compile "$LINENO" "openssl/ssl.h" "ac_cv_header_openssl_ssl_h" "$ac_includes_default" +if test "x$ac_cv_header_openssl_ssl_h" = xyes +then : + printf "%s\n" "#define HAVE_OPENSSL_SSL_H 1" >>confdefs.h + have_openssl_h=yes +fi + +done + if test "$have_openssl_h" = yes; then + openssl=yes + printf "%s\n" "#define USE_OPENSSL 1" >>confdefs.h + + LIBS="$LIBS -lssl -lcrypto" + if test -n "$openssl_path"; then + LIBS="-L$openssl_path/lib $LIBS" + fi + else + CPPFLAGS=$SAVED_CPPFLAGS + fi + fi +fi + + +if test "$plugin" = yes; then + + for ac_func in dlopen +do : + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes +then : + printf "%s\n" "#define HAVE_DLOPEN 1" >>confdefs.h + have_dl=yes +fi + +done + if test "$have_dl" != yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +printf %s "checking for dlopen in -ldl... " >&6; } +if test ${ac_cv_lib_dl_dlopen+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main (void) +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_dl_dlopen=yes +else $as_nop + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes +then : + have_dl=yes +fi + + if test "$have_dl" = yes; then + LIBS="$LIBS -ldl" + fi + fi + if test "$have_dl" = yes; then + printf "%s\n" "#define USE_PLUGIN 1" >>confdefs.h + + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_pkgconfigpath+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $pkgconfigpath in + [\\/]* | ?:[\\/]*) + ac_cv_path_pkgconfigpath="$pkgconfigpath" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_pkgconfigpath="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +pkgconfigpath=$ac_cv_path_pkgconfigpath +if test -n "$pkgconfigpath"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $pkgconfigpath" >&5 +printf "%s\n" "$pkgconfigpath" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + RDYNAMIC_FLAGS="`$pkgconfigpath gmodule-2.0 --libs`" + LIBS="$LIBS $RDYNAMIC_FLAGS" + if test "$LD" = ""; then + VS="`ld --help | grep version-script 2> /dev/null`" + else + VS="`$LD --help | grep version-script 2> /dev/null`" + fi + if test "$VS" != ""; then + GUI_LIBS="$GUI_LIBS -Wl,--version-script,\$(srcdir)/../version-script" + fi + else + plugin=no + fi +fi + + +if test "x$dbus" = "xyes" ; then + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dbus-1 >= 0.60 dbus-glib-1 >= 0.60 gthread-2.0" >&5 +printf %s "checking for dbus-1 >= 0.60 dbus-glib-1 >= 0.60 gthread-2.0... " >&6; } + +if test -n "$DBUS_CFLAGS"; then + pkg_cv_DBUS_CFLAGS="$DBUS_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"dbus-1 >= 0.60 dbus-glib-1 >= 0.60 gthread-2.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "dbus-1 >= 0.60 dbus-glib-1 >= 0.60 gthread-2.0") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_DBUS_CFLAGS=`$PKG_CONFIG --cflags "dbus-1 >= 0.60 dbus-glib-1 >= 0.60 gthread-2.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$DBUS_LIBS"; then + pkg_cv_DBUS_LIBS="$DBUS_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"dbus-1 >= 0.60 dbus-glib-1 >= 0.60 gthread-2.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "dbus-1 >= 0.60 dbus-glib-1 >= 0.60 gthread-2.0") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_DBUS_LIBS=`$PKG_CONFIG --libs "dbus-1 >= 0.60 dbus-glib-1 >= 0.60 gthread-2.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + DBUS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "dbus-1 >= 0.60 dbus-glib-1 >= 0.60 gthread-2.0" 2>&1` + else + DBUS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "dbus-1 >= 0.60 dbus-glib-1 >= 0.60 gthread-2.0" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$DBUS_PKG_ERRORS" >&5 + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + dbus=no + +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + dbus=no + +else + DBUS_CFLAGS=$pkg_cv_DBUS_CFLAGS + DBUS_LIBS=$pkg_cv_DBUS_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + dbus=yes +fi + # Extract the first word of "dbus-binding-tool", so it can be a program name with args. +set dummy dbus-binding-tool; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_DBUS_BINDING_TOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $DBUS_BINDING_TOOL in + [\\/]* | ?:[\\/]*) + ac_cv_path_DBUS_BINDING_TOOL="$DBUS_BINDING_TOOL" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_DBUS_BINDING_TOOL="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_DBUS_BINDING_TOOL" && ac_cv_path_DBUS_BINDING_TOOL="no" + ;; +esac +fi +DBUS_BINDING_TOOL=$ac_cv_path_DBUS_BINDING_TOOL +if test -n "$DBUS_BINDING_TOOL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DBUS_BINDING_TOOL" >&5 +printf "%s\n" "$DBUS_BINDING_TOOL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + # Extract the first word of "glib-genmarshal", so it can be a program name with args. +set dummy glib-genmarshal; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_GLIB_GENMARSHAL+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $GLIB_GENMARSHAL in + [\\/]* | ?:[\\/]*) + ac_cv_path_GLIB_GENMARSHAL="$GLIB_GENMARSHAL" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_GLIB_GENMARSHAL="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_GLIB_GENMARSHAL" && ac_cv_path_GLIB_GENMARSHAL="no" + ;; +esac +fi +GLIB_GENMARSHAL=$ac_cv_path_GLIB_GENMARSHAL +if test -n "$GLIB_GENMARSHAL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GLIB_GENMARSHAL" >&5 +printf "%s\n" "$GLIB_GENMARSHAL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if test "x$DBUS_BINDING_TOOL" = "xno" || test "x$GLIB_GENMARSHAL" = "xno" || test "x$dbus" = "xno" ; then + dbus="no" + else + COMMON_LIBS="$COMMON_LIBS $DBUS_LIBS" + COMMON_CFLAGS="$COMMON_CFLAGS $DBUS_CFLAGS" + printf "%s\n" "#define USE_DBUS 1" >>confdefs.h + + + EXP_VAR=DATADIR + FROM_VAR=$datadir + + prefix_save=$prefix + exec_prefix_save=$exec_prefix + + if test "x$prefix" = "xNONE"; then + prefix=$ac_default_prefix + fi + if test "x$exec_prefix" = "xNONE"; then + exec_prefix=$prefix + fi + + full_var="$FROM_VAR" + while true; do + new_full_var="`eval echo $full_var`" + if test "x$new_full_var"="x$full_var"; then break; fi + full_var=$new_full_var + done + + full_var=$new_full_var + DATADIR="$full_var" + + + prefix=$prefix_save + exec_prefix=$exec_prefix_save + + + DBUS_SERVICES_DIR="$DATADIR/dbus-1/services" + + +printf "%s\n" "#define DBUS_SERVICES_DIR \"$DBUS_SERVICES_DIR\"" >>confdefs.h + + fi +fi + + +if test "$spell" = "gtkspell" ; then + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gtkspell-2.0 >= 2.0.2" >&5 +printf %s "checking for gtkspell-2.0 >= 2.0.2... " >&6; } + +if test -n "$GTKSPELL_CFLAGS"; then + pkg_cv_GTKSPELL_CFLAGS="$GTKSPELL_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtkspell-2.0 >= 2.0.2\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gtkspell-2.0 >= 2.0.2") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GTKSPELL_CFLAGS=`$PKG_CONFIG --cflags "gtkspell-2.0 >= 2.0.2" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$GTKSPELL_LIBS"; then + pkg_cv_GTKSPELL_LIBS="$GTKSPELL_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtkspell-2.0 >= 2.0.2\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gtkspell-2.0 >= 2.0.2") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GTKSPELL_LIBS=`$PKG_CONFIG --libs "gtkspell-2.0 >= 2.0.2" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + GTKSPELL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gtkspell-2.0 >= 2.0.2" 2>&1` + else + GTKSPELL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gtkspell-2.0 >= 2.0.2" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$GTKSPELL_PKG_ERRORS" >&5 + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + spell=no + +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + spell=no + +else + GTKSPELL_CFLAGS=$pkg_cv_GTKSPELL_CFLAGS + GTKSPELL_LIBS=$pkg_cv_GTKSPELL_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + +fi + if test "$spell" != "no" ; then + GUI_LIBS="$GUI_LIBS $GTKSPELL_LIBS" + GUI_CFLAGS="$GUI_CFLAGS $GTKSPELL_CFLAGS" + printf "%s\n" "#define USE_GTKSPELL 1" >>confdefs.h + + fi +fi + +if test "$spell" = "libsexy" ; then + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libsexy >= 0.1.8" >&5 +printf %s "checking for libsexy >= 0.1.8... " >&6; } + +if test -n "$LIBSEXY_CFLAGS"; then + pkg_cv_LIBSEXY_CFLAGS="$LIBSEXY_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsexy >= 0.1.8\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libsexy >= 0.1.8") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBSEXY_CFLAGS=`$PKG_CONFIG --cflags "libsexy >= 0.1.8" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$LIBSEXY_LIBS"; then + pkg_cv_LIBSEXY_LIBS="$LIBSEXY_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsexy >= 0.1.8\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libsexy >= 0.1.8") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBSEXY_LIBS=`$PKG_CONFIG --libs "libsexy >= 0.1.8" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + LIBSEXY_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libsexy >= 0.1.8" 2>&1` + else + LIBSEXY_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libsexy >= 0.1.8" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$LIBSEXY_PKG_ERRORS" >&5 + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +else + LIBSEXY_CFLAGS=$pkg_cv_LIBSEXY_CFLAGS + LIBSEXY_LIBS=$pkg_cv_LIBSEXY_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + libsexy=yes +fi + if test "$libsexy" = "yes" ; then + GUI_LIBS="$GUI_LIBS $LIBSEXY_LIBS" + GUI_CFLAGS="$GUI_CFLAGS $LIBSEXY_CFLAGS" + printf "%s\n" "#define USE_LIBSEXY 1" >>confdefs.h + + else + spell="static" + fi +fi + +if test "$spell" = "static" ; then + printf "%s\n" "#define USE_LIBSEXY 1" >>confdefs.h + +fi + + + if test "x$openssl" = "xyes"; then + USE_OPENSSL_TRUE= + USE_OPENSSL_FALSE='#' +else + USE_OPENSSL_TRUE='#' + USE_OPENSSL_FALSE= +fi + + if test "x$spell" = "xstatic"; then + USE_LIBSEXY_TRUE= + USE_LIBSEXY_FALSE='#' +else + USE_LIBSEXY_TRUE='#' + USE_LIBSEXY_FALSE= +fi + + if test "x$textfe" = "xyes"; then + DO_TEXT_TRUE= + DO_TEXT_FALSE='#' +else + DO_TEXT_TRUE='#' + DO_TEXT_FALSE= +fi + + if test "x$gtkfe" = "xyes"; then + DO_GTK_TRUE= + DO_GTK_FALSE='#' +else + DO_GTK_TRUE='#' + DO_GTK_FALSE= +fi + + if test "x$perl" = "xyes"; then + DO_PERL_TRUE= + DO_PERL_FALSE='#' +else + DO_PERL_TRUE='#' + DO_PERL_FALSE= +fi + + if test "x$python" = "xyes"; then + DO_PYTHON_TRUE= + DO_PYTHON_FALSE='#' +else + DO_PYTHON_TRUE='#' + DO_PYTHON_FALSE= +fi + + if test "x$tcl" = "xyes"; then + DO_TCL_TRUE= + DO_TCL_FALSE='#' +else + DO_TCL_TRUE='#' + DO_TCL_FALSE= +fi + + if test "x$plugin" = "xyes"; then + DO_PLUGIN_TRUE= + DO_PLUGIN_FALSE='#' +else + DO_PLUGIN_TRUE='#' + DO_PLUGIN_FALSE= +fi + + if test "x$dbus" = "xyes"; then + USE_DBUS_TRUE= + USE_DBUS_FALSE='#' +else + USE_DBUS_TRUE='#' + USE_DBUS_FALSE= +fi + + if test "x$GCONFTOOL" != "xno"; then + DO_GCONF_TRUE= + DO_GCONF_FALSE='#' +else + DO_GCONF_TRUE='#' + DO_GCONF_FALSE= +fi + + + +if test "$socks" = yes; then + socks=no + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SOCKSconnect in -lsocks5" >&5 +printf %s "checking for SOCKSconnect in -lsocks5... " >&6; } +if test ${ac_cv_lib_socks5_SOCKSconnect+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocks5 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char SOCKSconnect (); +int +main (void) +{ +return SOCKSconnect (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_socks5_SOCKSconnect=yes +else $as_nop + ac_cv_lib_socks5_SOCKSconnect=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socks5_SOCKSconnect" >&5 +printf "%s\n" "$ac_cv_lib_socks5_SOCKSconnect" >&6; } +if test "x$ac_cv_lib_socks5_SOCKSconnect" = xyes +then : + have_socks=yes +fi + + if test "$have_socks" = yes; then + for ac_header in socks.h +do : + ac_fn_c_check_header_compile "$LINENO" "socks.h" "ac_cv_header_socks_h" "$ac_includes_default" +if test "x$ac_cv_header_socks_h" = xyes +then : + printf "%s\n" "#define HAVE_SOCKS_H 1" >>confdefs.h + have_socks_h=yes +fi + +done + if test "$have_socks_h" = yes; then + socks=yes + printf "%s\n" "#define SOCKS 1" >>confdefs.h + + LIBS="$LIBS -lsocks5" + fi + fi +fi + + +have_ntlm="no" +if test "x$ntlm" = "xyes" ; then + have_ntlm="no" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ntlm_smb_encrypt in -lntlm" >&5 +printf %s "checking for ntlm_smb_encrypt in -lntlm... " >&6; } +if test ${ac_cv_lib_ntlm_ntlm_smb_encrypt+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lntlm $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char ntlm_smb_encrypt (); +int +main (void) +{ +return ntlm_smb_encrypt (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_ntlm_ntlm_smb_encrypt=yes +else $as_nop + ac_cv_lib_ntlm_ntlm_smb_encrypt=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ntlm_ntlm_smb_encrypt" >&5 +printf "%s\n" "$ac_cv_lib_ntlm_ntlm_smb_encrypt" >&6; } +if test "x$ac_cv_lib_ntlm_ntlm_smb_encrypt" = xyes +then : + have_ntlm=yes +fi + + if test "$have_ntlm" = yes; then + LIBS="$LIBS -lntlm" + printf "%s\n" "#define USE_MSPROXY 1" >>confdefs.h + + fi +fi + + +if test "$shm" = yes; then + oldl=$LIBS + oldc=$CPPFLAGS + LIBS="$LIBS `$pkgconfigpath --libs-only-L xft`" + CPPFLAGS="$CPPFLAGS `$pkgconfigpath --cflags-only-I xft`" + shm=no + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for XShmAttach in -lXext" >&5 +printf %s "checking for XShmAttach in -lXext... " >&6; } +if test ${ac_cv_lib_Xext_XShmAttach+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lXext $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char XShmAttach (); +int +main (void) +{ +return XShmAttach (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_Xext_XShmAttach=yes +else $as_nop + ac_cv_lib_Xext_XShmAttach=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xext_XShmAttach" >&5 +printf "%s\n" "$ac_cv_lib_Xext_XShmAttach" >&6; } +if test "x$ac_cv_lib_Xext_XShmAttach" = xyes +then : + shm=yes +fi + + if test "$shm" = yes; then + shm=no + for ac_header in sys/ipc.h +do : + ac_fn_c_check_header_compile "$LINENO" "sys/ipc.h" "ac_cv_header_sys_ipc_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_ipc_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_IPC_H 1" >>confdefs.h + shm=yes +fi + +done + if test "$shm" = yes; then + shm=no + for ac_header in sys/shm.h +do : + ac_fn_c_check_header_compile "$LINENO" "sys/shm.h" "ac_cv_header_sys_shm_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_shm_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_SHM_H 1" >>confdefs.h + shm=yes +fi + +done + fi + fi + + LIBS=$oldl + if test "$shm" = yes; then + GUI_LIBS="$GUI_LIBS `$pkgconfigpath --libs-only-L xft` -lX11 -lXext" + printf "%s\n" "#define USE_SHM 1" >>confdefs.h + + else + CPPFLAGS=$oldc + fi +fi + + +if test "$mmx" = "yes"; then + case $host_cpu in + i386|i486|i586|i686|i786|k6|k7) + mmx=yes + ;; + *) + mmx=no + esac + if test "$system" = "OpenBSD"; then + mmx=no + fi + if test "$mmx" = "yes"; then + printf "%s\n" "#define USE_MMX 1" >>confdefs.h + + fi +fi + + if test "$mmx" = "yes"; then + USE_MMX_TRUE= + USE_MMX_FALSE='#' +else + USE_MMX_TRUE='#' + USE_MMX_FALSE= +fi + + + +if test "x$GCC" = "xyes"; then + if test -z "`echo "$CFLAGS" | grep "\-Wall" 2> /dev/null`" ; then + CFLAGS="$CFLAGS -Wall" + fi + if test "$system" = "Linux" -o "$system" = "FreeBSD"; then + if test -z "`echo "$CFLAGS" | grep "\-pipe" 2> /dev/null`" ; then + CFLAGS="$CFLAGS -pipe" + fi + fi + if test -z "`echo "$CFLAGS" | grep "\-g " 2> /dev/null`" ; then + CFLAGS="$CFLAGS -g" + fi +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wno-pointer-sign " >&5 +printf %s "checking if gcc accepts -Wno-pointer-sign ... " >&6; } + +safe_CFLAGS=$CFLAGS +CFLAGS="-Wno-pointer-sign" + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + +int main () { return 0 ; } + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +no_pointer_sign=yes +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + +else $as_nop + +no_pointer_sign=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +CFLAGS=$safe_CFLAGS + +if test x$no_pointer_sign = xyes; then + CFLAGS="$CFLAGS -Wno-pointer-sign" +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -funsigned-char " >&5 +printf %s "checking if gcc accepts -funsigned-char ... " >&6; } + +safe_CFLAGS=$CFLAGS +CFLAGS="-funsigned-char" + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + +int main () { return 0 ; } + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +unsigned_char=yes +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + +else $as_nop + +unsigned_char=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +CFLAGS=$safe_CFLAGS + +if test x$unsigned_char = xyes; then + CFLAGS="$CFLAGS -funsigned-char" +fi + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for modern sigaction" >&5 +printf %s "checking for modern sigaction... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +struct sigaction act; + siginfo_t *si; + act.sa_sigaction = 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + printf "%s\n" "#define USE_SIGACTION 1" >>confdefs.h + + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +# Extract the first word of "gdk-pixbuf-csource", so it can be a program name with args. +set dummy gdk-pixbuf-csource; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_gdkpixbufcsourcepath+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $gdkpixbufcsourcepath in + [\\/]* | ?:[\\/]*) + ac_cv_path_gdkpixbufcsourcepath="$gdkpixbufcsourcepath" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_gdkpixbufcsourcepath="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +gdkpixbufcsourcepath=$ac_cv_path_gdkpixbufcsourcepath +if test -n "$gdkpixbufcsourcepath"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gdkpixbufcsourcepath" >&5 +printf "%s\n" "$gdkpixbufcsourcepath" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + +if test "$gtkfe" != no -a "_$gdkpixbufcsourcepath" = _; then + as_fn_error $? "\"Cannot find gdk-pixbuf-csource: Install GTK+ 2.0\!\"" "$LINENO" 5 +fi + +ac_fn_c_check_func "$LINENO" "snprintf" "ac_cv_func_snprintf" +if test "x$ac_cv_func_snprintf" = xyes +then : + printf "%s\n" "#define HAVE_SNPRINTF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "vsnprintf" "ac_cv_func_vsnprintf" +if test "x$ac_cv_func_vsnprintf" = xyes +then : + printf "%s\n" "#define HAVE_VSNPRINTF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "memrchr" "ac_cv_func_memrchr" +if test "x$ac_cv_func_memrchr" = xyes +then : + printf "%s\n" "#define HAVE_MEMRCHR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strtoull" "ac_cv_func_strtoull" +if test "x$ac_cv_func_strtoull" = xyes +then : + printf "%s\n" "#define HAVE_STRTOULL 1" >>confdefs.h + +fi + + +ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname" +if test "x$ac_cv_func_gethostbyname" = xyes +then : + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lresolv" >&5 +printf %s "checking for gethostbyname in -lresolv... " >&6; } +if test ${ac_cv_lib_resolv_gethostbyname+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lresolv $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char gethostbyname (); +int +main (void) +{ +return gethostbyname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_resolv_gethostbyname=yes +else $as_nop + ac_cv_lib_resolv_gethostbyname=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv_gethostbyname" >&5 +printf "%s\n" "$ac_cv_lib_resolv_gethostbyname" >&6; } +if test "x$ac_cv_lib_resolv_gethostbyname" = xyes +then : + printf "%s\n" "#define HAVE_LIBRESOLV 1" >>confdefs.h + + LIBS="-lresolv $LIBS" + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 +printf %s "checking for gethostbyname in -lnsl... " >&6; } +if test ${ac_cv_lib_nsl_gethostbyname+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char gethostbyname (); +int +main (void) +{ +return gethostbyname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_nsl_gethostbyname=yes +else $as_nop + ac_cv_lib_nsl_gethostbyname=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 +printf "%s\n" "$ac_cv_lib_nsl_gethostbyname" >&6; } +if test "x$ac_cv_lib_nsl_gethostbyname" = xyes +then : + printf "%s\n" "#define HAVE_LIBNSL 1" >>confdefs.h + + LIBS="-lnsl $LIBS" + +fi + +fi + +fi + + +ac_fn_c_check_func "$LINENO" "gethostname" "ac_cv_func_gethostname" +if test "x$ac_cv_func_gethostname" = xyes +then : + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostname in -lnsl" >&5 +printf %s "checking for gethostname in -lnsl... " >&6; } +if test ${ac_cv_lib_nsl_gethostname+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char gethostname (); +int +main (void) +{ +return gethostname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_nsl_gethostname=yes +else $as_nop + ac_cv_lib_nsl_gethostname=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostname" >&5 +printf "%s\n" "$ac_cv_lib_nsl_gethostname" >&6; } +if test "x$ac_cv_lib_nsl_gethostname" = xyes +then : + printf "%s\n" "#define HAVE_LIBNSL 1" >>confdefs.h + + LIBS="-lnsl $LIBS" + +fi + +fi + + +ac_fn_c_check_header_compile "$LINENO" "strings.h" "ac_cv_header_strings_h" "$ac_includes_default" +if test "x$ac_cv_header_strings_h" = xyes +then : + printf "%s\n" "#define HAVE_STRINGS_H 1" >>confdefs.h + +fi + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for socklen_t" >&5 +printf %s "checking for socklen_t... " >&6; } +if test ${ac_cv_type_socklen_t+y} +then : + printf %s "(cached) " >&6 +else $as_nop + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if STDC_HEADERS +#include +#include +#endif +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "socklen_t[^a-zA-Z_0-9]" >/dev/null 2>&1 +then : + ac_cv_type_socklen_t=yes +else $as_nop + ac_cv_type_socklen_t=no +fi +rm -rf conftest* + + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_socklen_t" >&5 +printf "%s\n" "$ac_cv_type_socklen_t" >&6; } +if test $ac_cv_type_socklen_t = no; then + printf "%s\n" "#define socklen_t int" >>confdefs.h + +fi + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if (defined(__APPLE__) && defined(__MACH__)) + lookupd +#endif +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "lookupd" >/dev/null 2>&1 +then : + +printf "%s\n" "#define LOOKUPD 1" >>confdefs.h + +fi +rm -rf conftest* + + +LIBS="$LIBS $INTLLIBS" +CFLAGS="$CFLAGS $CPPFLAGS" + +GUI_LIBS="$GUI_LIBS $COMMON_LIBS" + + + + + + + + + + + + + + + +PLUGIN_INCLUDES='-I$(top_srcdir)/plugins' + + +test "x$prefix" = xNONE && prefix="$ac_default_prefix" +test "x$exec_prefix" = xNONE && exec_prefix="$prefix" + +printf "%s\n" "#define PREFIX \"${prefix}\"" >>confdefs.h + + +XCHATLIBDIR=`eval echo ${libdir}/xchat` +printf "%s\n" "#define XCHATLIBDIR \"$XCHATLIBDIR\"" >>confdefs.h + + +XCHATSHAREDIR=`eval echo ${datadir}` +printf "%s\n" "#define XCHATSHAREDIR \"$XCHATSHAREDIR\"" >>confdefs.h + + +xchatlibdir=${libdir}/xchat + + +#AC_CONFIG_FILES([ po/Makefile.in +#intl/Makefile +ac_config_files="$ac_config_files Makefile src/Makefile src/common/Makefile src/common/dbus/Makefile src/fe-text/Makefile src/fe-gtk/Makefile src/pixmaps/Makefile plugins/Makefile plugins/python/Makefile plugins/perl/Makefile plugins/tcl/Makefile po/Makefile.in" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf "%s\n" "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +printf %s "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5 +printf "%s\n" "done" >&6; } + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then + as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCCAS_TRUE}" && test -z "${am__fastdepCCAS_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCCAS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${USE_OPENSSL_TRUE}" && test -z "${USE_OPENSSL_FALSE}"; then + as_fn_error $? "conditional \"USE_OPENSSL\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${USE_LIBSEXY_TRUE}" && test -z "${USE_LIBSEXY_FALSE}"; then + as_fn_error $? "conditional \"USE_LIBSEXY\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${DO_TEXT_TRUE}" && test -z "${DO_TEXT_FALSE}"; then + as_fn_error $? "conditional \"DO_TEXT\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${DO_GTK_TRUE}" && test -z "${DO_GTK_FALSE}"; then + as_fn_error $? "conditional \"DO_GTK\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${DO_PERL_TRUE}" && test -z "${DO_PERL_FALSE}"; then + as_fn_error $? "conditional \"DO_PERL\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${DO_PYTHON_TRUE}" && test -z "${DO_PYTHON_FALSE}"; then + as_fn_error $? "conditional \"DO_PYTHON\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${DO_TCL_TRUE}" && test -z "${DO_TCL_FALSE}"; then + as_fn_error $? "conditional \"DO_TCL\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${DO_PLUGIN_TRUE}" && test -z "${DO_PLUGIN_FALSE}"; then + as_fn_error $? "conditional \"DO_PLUGIN\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${USE_DBUS_TRUE}" && test -z "${USE_DBUS_FALSE}"; then + as_fn_error $? "conditional \"USE_DBUS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${DO_GCONF_TRUE}" && test -z "${DO_GCONF_FALSE}"; then + as_fn_error $? "conditional \"DO_GCONF\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${USE_MMX_TRUE}" && test -z "${USE_MMX_FALSE}"; then + as_fn_error $? "conditional \"USE_MMX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else $as_nop + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else $as_nop + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else $as_nop + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by XChat $as_me 2.8.8, which was +generated by GNU Autoconf 2.71. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." + +_ACEOF +ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config='$ac_cs_config_escaped' +ac_cs_version="\\ +XChat config.status 2.8.8 +configured by $0, generated by GNU Autoconf 2.71, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2021 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + printf "%s\n" "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + printf "%s\n" "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + printf "%s\n" "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + printf "%s\n" "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' +macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' +macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' +enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' +pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' +shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' +SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' +ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' +PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' +host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' +host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' +host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' +build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' +build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' +build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' +SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' +Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' +GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' +EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' +FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' +LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' +NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' +LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' +max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' +ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' +exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' +lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' +lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' +lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' +lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' +lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' +reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' +reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' +FILECMD='`$ECHO "$FILECMD" | $SED "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' +deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' +file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' +file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' +want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' +DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' +sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' +AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' +lt_ar_flags='`$ECHO "$lt_ar_flags" | $SED "$delay_single_quote_subst"`' +AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' +archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' +STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' +RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' +lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' +CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' +compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' +GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' +lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' +nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' +lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' +lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' +objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' +need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' +MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' +LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' +OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' +libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' +module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' +postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' +need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' +version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' +runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' +libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' +soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' +install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' +finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' +configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' +configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' +old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' +striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' + +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in SHELL \ +ECHO \ +PATH_SEPARATOR \ +SED \ +GREP \ +EGREP \ +FGREP \ +LD \ +NM \ +LN_S \ +lt_SP2NL \ +lt_NL2SP \ +reload_flag \ +FILECMD \ +OBJDUMP \ +deplibs_check_method \ +file_magic_cmd \ +file_magic_glob \ +want_nocaseglob \ +DLLTOOL \ +sharedlib_from_linklib_cmd \ +AR \ +archiver_list_spec \ +STRIP \ +RANLIB \ +CC \ +CFLAGS \ +compiler \ +lt_cv_sys_global_symbol_pipe \ +lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_import \ +lt_cv_sys_global_symbol_to_c_name_address \ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +lt_cv_nm_interface \ +nm_file_list_spec \ +lt_cv_truncate_bin \ +lt_prog_compiler_no_builtin_flag \ +lt_prog_compiler_pic \ +lt_prog_compiler_wl \ +lt_prog_compiler_static \ +lt_cv_prog_compiler_c_o \ +need_locks \ +MANIFEST_TOOL \ +DSYMUTIL \ +NMEDIT \ +LIPO \ +OTOOL \ +OTOOL64 \ +shrext_cmds \ +export_dynamic_flag_spec \ +whole_archive_flag_spec \ +compiler_needs_object \ +with_gnu_ld \ +allow_undefined_flag \ +no_undefined_flag \ +hardcode_libdir_flag_spec \ +hardcode_libdir_separator \ +exclude_expsyms \ +include_expsyms \ +file_list_spec \ +variables_saved_for_relink \ +libname_spec \ +library_names_spec \ +soname_spec \ +install_override_mode \ +finish_eval \ +old_striplib \ +striplib; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds \ +old_postinstall_cmds \ +old_postuninstall_cmds \ +old_archive_cmds \ +extract_expsyms_cmds \ +old_archive_from_new_cmds \ +old_archive_from_expsyms_cmds \ +archive_cmds \ +archive_expsym_cmds \ +module_cmds \ +module_expsym_cmds \ +export_symbols_cmds \ +prelink_cmds \ +postlink_cmds \ +postinstall_cmds \ +postuninstall_cmds \ +finish_cmds \ +sys_lib_search_path_spec \ +configure_time_dlsearch_path \ +configure_time_lt_sys_library_path; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +ac_aux_dir='$ac_aux_dir' + +# See if we are running on zsh, and set the options that allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='$PACKAGE' + VERSION='$VERSION' + RM='$RM' + ofile='$ofile' + + + +# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. + OBSOLETE_ALL_LINGUAS="$ALL_LINGUAS" + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + "src/common/Makefile") CONFIG_FILES="$CONFIG_FILES src/common/Makefile" ;; + "src/common/dbus/Makefile") CONFIG_FILES="$CONFIG_FILES src/common/dbus/Makefile" ;; + "src/fe-text/Makefile") CONFIG_FILES="$CONFIG_FILES src/fe-text/Makefile" ;; + "src/fe-gtk/Makefile") CONFIG_FILES="$CONFIG_FILES src/fe-gtk/Makefile" ;; + "src/pixmaps/Makefile") CONFIG_FILES="$CONFIG_FILES src/pixmaps/Makefile" ;; + "plugins/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/Makefile" ;; + "plugins/python/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/python/Makefile" ;; + "plugins/perl/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/perl/Makefile" ;; + "plugins/tcl/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/tcl/Makefile" ;; + "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files + test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers + test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf "%s\n" "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`printf "%s\n" "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + printf "%s\n" "/* $configure_input */" >&1 \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + printf "%s\n" "/* $configure_input */" >&1 \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +printf "%s\n" "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + case $CONFIG_FILES in #( + *\'*) : + eval set x "$CONFIG_FILES" ;; #( + *) : + set x $CONFIG_FILES ;; #( + *) : + ;; +esac + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`printf "%s\n" "$am_mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`$as_dirname -- "$am_mf" || +$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$am_mf" : 'X\(//\)[^/]' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$am_mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + am_filepart=`$as_basename -- "$am_mf" || +$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X/"$am_mf" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { echo "$as_me:$LINENO: cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles" >&5 + (cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } || am_rc=$? + done + if test $am_rc -ne 0; then + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. If GNU make was not used, consider + re-running the configure script with MAKE=\"gmake\" (or whatever is + necessary). You can also try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking). +See \`config.log' for more details" "$LINENO" 5; } + fi + { am_dirpart=; unset am_dirpart;} + { am_filepart=; unset am_filepart;} + { am_mf=; unset am_mf;} + { am_rc=; unset am_rc;} + rm -f conftest-deps.mk +} + ;; + "libtool":C) + + # See if we are running on zsh, and set the options that allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST + fi + + cfgfile=${ofile}T + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL +# Generated automatically by $as_me ($PACKAGE) $VERSION +# NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +# Copyright (C) 2014 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. +# +# GNU Libtool 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +# The names of the tagged configurations supported by this script. +available_tags='' + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + +# ### BEGIN LIBTOOL CONFIG + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# Shared archive member basename,for filename based shared library versioning on AIX. +shared_archive_member_spec=$shared_archive_member_spec + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that protects backslashes. +ECHO=$lt_ECHO + +# The PATH separator for the build system. +PATH_SEPARATOR=$lt_PATH_SEPARATOR + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# convert \$build file names to \$host format. +to_host_file_cmd=$lt_cv_to_host_file_cmd + +# convert \$build files to toolchain format. +to_tool_file_cmd=$lt_cv_to_tool_file_cmd + +# A file(cmd) program that detects file types. +FILECMD=$lt_FILECMD + +# An object symbol dumper. +OBJDUMP=$lt_OBJDUMP + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method = "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob=$lt_file_magic_glob + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob=$lt_want_nocaseglob + +# DLL creation program. +DLLTOOL=$lt_DLLTOOL + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd + +# The archiver. +AR=$lt_AR + +# Flags to create an archive (by configure). +lt_ar_flags=$lt_ar_flags + +# Flags to create an archive. +AR_FLAGS=\${ARFLAGS-"\$lt_ar_flags"} + +# How to feed a file listing to the archiver. +archiver_list_spec=$lt_archiver_list_spec + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=$lock_old_archive_extraction + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm into a list of symbols to manually relocate. +global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# The name lister interface. +nm_interface=$lt_lt_cv_nm_interface + +# Specify filename containing input files for \$NM. +nm_file_list_spec=$lt_nm_file_list_spec + +# The root where to search for dependent libraries,and where our libraries should be installed. +lt_sysroot=$lt_sysroot + +# Command to truncate a binary pipe. +lt_truncate_bin=$lt_lt_cv_truncate_bin + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Manifest tool. +MANIFEST_TOOL=$lt_MANIFEST_TOOL + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Permission mode override for installation of shared libraries. +install_override_mode=$lt_install_override_mode + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Detected run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path + +# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. +configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \$shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# ### END LIBTOOL CONFIG + +_LT_EOF + + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + + +ltmain=$ac_aux_dir/ltmain.sh + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + $SED '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + ;; + "po-directories":C) + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + # Treat a directory as a PO directory if and only if it has a + # POTFILES.in file. This allows packages to have multiple PO + # directories under different names or in different locations. + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + gt_tab=`printf '\t'` + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + ALL_LINGUAS=$OBSOLETE_ALL_LINGUAS + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + +echo +echo xchat $VERSION +echo +echo Building GTK+ Interface .... : $gtkfe +echo Building TEXT Interface .... : $textfe +echo +echo PLUGINS: Perl: $perl Python: $python TCL: $tcl +echo +echo mmx tinting ......... : $mmx\ spelling .............. : $spell +echo XShm tinting ........ : $shm\ plugin interface ...... : $plugin +if test "$xft" = no; then + echo text backend ........ : pango\ nls/gettext ........... : $USE_NLS +else + echo text backend ........ : xft\ nls/gettext ........... : $USE_NLS +fi +echo openssl support ..... : $openssl\ ipv6 support .......... : $ipv6 +echo dbus support ........ : $dbus\ msproxy ntlm \(ISA\) .... : $have_ntlm +echo +echo The binary will be installed in $prefix/bin +echo + +if test "$gtkfe" = no; then + echo Warning: The GTK \(GUI\) frontend will not be built. + echo +fi + +if test "$spell" = "gtkspell"; then + echo Warning: GTK SPELL is not the recommended spelling library. + echo +fi + +echo configure complete, now type \'make\' and pray. +echo + diff --git a/etc/wyatt8740/configure.ac b/etc/wyatt8740/configure.ac new file mode 100644 index 0000000..89487ec --- /dev/null +++ b/etc/wyatt8740/configure.ac @@ -0,0 +1,829 @@ +dnl Process this file with autoconf to produce a configure script. + +AC_INIT([XChat],[2.8.8],[http://www.xchat.org/],[xchat]) + +AC_PREREQ([2.71]) +AC_COPYRIGHT([Copyright (C) 1998-2010 Peter Zelezny]) + +AC_CONFIG_HEADERS([config.h]) +AC_CONFIG_SRCDIR([configure.ac]) + +AM_INIT_AUTOMAKE([1.9 dist-bzip2 subdir-objects no-define]) + +AM_MAINTAINER_MODE +AC_PROG_CC +AM_PROG_CC_C_O +AC_PROG_CPP +AM_PROG_AS +AC_DISABLE_STATIC([]) +LT_INIT + +dnl ----------------------------------------------------------- +dnl Language Support +dnl ----------------------------------------------------------- +GETTEXT_PACKAGE=xchat +AC_SUBST(GETTEXT_PACKAGE) +AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[Gettext package name]) + +ALL_LINGUAS="be ca cs de el es fi fr gl hu it ja kn ko lt mk nl pa pl pt ru sq sr sv th uk vi zh_CN zh_TW" +AM_GNU_GETTEXT_VERSION(0.20) +AM_GNU_GETTEXT([external]) +#USE_INCLUDED_LIBINTL="no" +#AC_SUBST(USE_INCLUDED_LIBINTL) +#BUILD_INCLUDED_LIBINTL="no" +#AC_SUBST(BUILD_INCLUDED_LIBINTL) + +dnl displaced from acconfig.h +AH_VERBATIM([OLD_PERL],[#undef OLD_PERL]) +AH_VERBATIM([PREFIX],[#undef PREFIX]) +AH_VERBATIM([XCHATLIBDIR],[#undef XCHATLIBDIR]) +AH_VERBATIM([XCHATSHAREDIR],[#undef XCHATSHAREDIR]) +AH_VERBATIM([SOCKS],[#undef SOCKS]) +AH_VERBATIM([USE_MSPROXY],[#undef USE_MSPROXY]) +dnl AH_VERBATIM([USE_GNOME],[#undef USE_GNOME]) +AH_VERBATIM([USE_SHM],[#undef USE_SHM]) +AH_VERBATIM([USE_GTKSPELL],[#undef USE_GTKSPELL]) +AH_VERBATIM([USE_LIBSEXY],[#undef USE_LIBSEXY]) +AH_VERBATIM([USE_IPV6],[#undef USE_IPV6]) +AH_VERBATIM([USE_MMX],[#undef USE_MMX]) +AH_VERBATIM([USE_OPENSSL],[#undef USE_OPENSSL]) +AH_VERBATIM([USE_PLUGIN],[#undef USE_PLUGIN]) +AH_VERBATIM([USE_XFT],[#undef USE_XFT]) +AH_VERBATIM([USE_XLIB],[#undef USE_XLIB]) +AH_VERBATIM([USE_SIGACTION],[#undef USE_SIGACTION]) +AH_VERBATIM([USING_FREEBSD],[#undef USING_FREEBSD]) +AH_VERBATIM([USING_LINUX],[#undef USING_LINUX]) +AH_VERBATIM([socklen_t],[#undef socklen_t]) +AH_VERBATIM([USE_DBUS],[#undef USE_DBUS]) + +AC_PATH_PROG(sedpath, sed) +if test "_$sedpath" = _; then + AC_MSG_ERROR("Cannot find sed: I need it\!") +fi + +AC_PATH_PROG(unamepath, uname) +if test "_$unamepath" = _; then + system="unknown" +else + AC_MSG_CHECKING(system type) + system=`$unamepath -s` + AC_MSG_RESULT($system) + if test "$system" = "Linux"; then + AC_DEFINE(USING_LINUX) + fi + if test "$system" = "FreeBSD"; then + AC_DEFINE(USING_FREEBSD) + fi +fi + +dnl ********************************************************************* +dnl ** configure switches *********************************************** +dnl ********************************************************************* + +AC_ARG_ENABLE(socks, +[ --enable-socks link with SOCKS5 library (default: no)], + socks=$enableval, socks=no) + +AC_ARG_ENABLE(ipv6, +[ --enable-ipv6 enable IPv6 (default: no)], + ipv6=$enableval, ipv6=no) + +AC_ARG_ENABLE(xft, +[ --enable-xft enable use of Xft directly (default: no)], + xft=$enableval, xft=no) + +AC_ARG_ENABLE(openssl, +[ --enable-openssl[=PATH] enable use of openSSL], + openssl=$enableval, openssl=yes) + +AC_ARG_ENABLE(gtkfe, +[ --disable-gtkfe disable building gtk frontend], + gtkfe=$enableval, gtkfe=yes) + +AC_ARG_ENABLE(textfe, +[ --enable-textfe build the text frontend (default: no)], + textfe=$enableval, textfe=no) + +dnl AC_ARG_ENABLE(gnome, +dnl [ --disable-gnome disable use of gnome], +dnl gnome=$enableval, gnome=yes) + +AC_ARG_ENABLE(xlib, +[ --disable-xlib disable use of xlib (for non X11 systems)], + xlib=$enableval, xlib=yes) + +AC_ARG_ENABLE(python, +[ --disable-python don't build the python plugin], + python=$enableval, python=yes) + +AC_ARG_ENABLE(perl, +[ --disable-perl don't build the perl plugin], + perl=$enableval, perl=yes) + +AC_ARG_ENABLE(perl_old, +[ --disable-perl_old no backwards compatibility for perl plugin], + perl_old=$enableval, perl_old=yes) + +AC_ARG_ENABLE(tcl, +[ --enable-tcl[=PATH] directory with Tcl config file: tclConfig.sh], + tcl=$enableval, tcl=yes) + +AC_ARG_ENABLE(plugin, +[ --disable-plugin disable plugin support], + plugin=$enableval, plugin=yes) + +AC_ARG_ENABLE(dbus, +[ --disable-dbus disable DBUS support], + dbus=$enableval, dbus=yes) + +AC_ARG_ENABLE(mmx, +[ --disable-mmx disable MMX assembly routines], + mmx=$enableval, mmx=yes) + +AC_ARG_ENABLE(shm, +[ --enable-shm enable use of XShm for fast tinting (default: no)], + shm=$enableval, shm=no) + +AC_ARG_ENABLE(spell, +[ --enable-spell=type enable spelling type: none static libsexy gtkspell], + spell=$enableval, spell=libsexy) + +AC_ARG_ENABLE(ntlm, +[ --enable-ntlm enable Microsoft's NTLM auth (libntlm) library support (default: no)], + ntlm=$enableval, ntlm=no) + +dnl ********************************************************************* +dnl ** GLIB ************************************************************* +dnl ********************************************************************* + +AM_PATH_GLIB_2_0(2.0.3, glib=yes, glib=no) +if test "$glib" = no; then + AC_MSG_ERROR("Cannot find glib") +fi + +COMMON_CFLAGS="$GLIB_CFLAGS" +COMMON_LIBS="$GLIB_LIBS" + +dnl ********************************************************************* +dnl ** GTK ************************************************************** +dnl ********************************************************************* + +AM_PATH_GTK_2_0(2.10.0, havegtk=yes, havegtk=no) + +if test "$havegtk" = no; then + gtkfe=no + echo + echo Cannot find GTK\! Not building GTK FrontEnd. + echo +fi + +if test "$gtkfe" != yes; then + gnome=no + COMMON_LIBS="$GLIB_LIBS" + COMMON_CFLAGS="$GLIB_CFLAGS" +fi + +dnl ********************************************************************* +dnl ** GNOME ************************************************************ +dnl ********************************************************************* + +GUI_LIBS="$GUI_LIBS $GTK_LIBS" +GUI_CFLAGS="$GUI_CFLAGS $GTK_CFLAGS" + +gnome=no +#if test "$gnome" = yes; then +# AC_PATH_PROG(pkgconfigpath, pkg-config) +# AC_MSG_CHECKING(Gnome2 compile flags) +# GNOME_CFLAGS="`$pkgconfigpath libgnome-2.0 --cflags 2>/dev/null`" +# if test "_$GNOME_CFLAGS" = _ ; then +# gnome=no +# AC_MSG_RESULT([Gnome not found, building without it.]) +# else +# GNOME_VER="`$pkgconfigpath libgnome-2.0 --modversion`" +# GUI_LIBS="$GUI_LIBS `$pkgconfigpath libgnome-2.0 --libs`" +# GUI_CFLAGS="$GUI_CFLAGS $GNOME_CFLAGS" +# AC_DEFINE(USE_GNOME) +# AC_MSG_RESULT(ok) +# fi +#fi + +# GConf +AC_PATH_PROG(GCONFTOOL, gconftool-2, no) + +dnl ********************************************************************* +dnl ** XFT ************************************************************** +dnl ********************************************************************* + +if test "$xft" = yes; then + AC_PATH_PROG(pkgconfigpath, pkg-config) + if $pkgconfigpath xft --exists; then + GUI_CFLAGS="$GUI_CFLAGS `$pkgconfigpath xft --cflags`" + GUI_LIBS="$GUI_LIBS `$pkgconfigpath xft --libs`" + else + xft=no + oldCPPFLAGS=$CPPFLAGS + CPPFLAGS="$CPPFLAGS $GTK_CFLAGS" + AC_CHECK_HEADERS(X11/Xft/Xft.h, xft=yes) + CPPFLAGS=$oldCPPFLAGS + fi + if test "$xft" = yes; then + AC_DEFINE(USE_XFT) + fi +fi + +dnl ********************************************************************* +dnl ** XLIB ************************************************************* +dnl ********************************************************************* + +if test "$xlib" = yes; then + AC_DEFINE(USE_XLIB) + if test "$system" = "SunOS"; then + LIBS="$LIBS -L/usr/openwin/lib -lX11" + else + AC_CHECK_LIB(X11, XSetWMHints) + fi +else + shm=no +fi + +dnl ********************************************************************* +dnl ** PERL ************************************************************* +dnl ********************************************************************* + +if test "$perl" = yes; then + AC_PATH_PROG(perlpath, perl) + AC_MSG_CHECKING(for Perl compile flags) + PERL_CFLAGS=`$perlpath -MExtUtils::Embed -e ccopts 2>/dev/null` + if test "_$PERL_CFLAGS" = _ ; then + AC_MSG_RESULT([not found, building without perl.]) + perl=no + else + PERL_LDFLAGS=`$perlpath -MExtUtils::Embed -e ldopts |$sedpath 's/-lgdbm //'` + PERL_LDFLAGS=`echo $PERL_LDFLAGS |$sedpath 's/-ldb //'` + PERL_LDFLAGS=`echo $PERL_LDFLAGS |$sedpath 's/-lndbm //'` + if test "$system" = "Linux"; then + PERL_LDFLAGS=`echo $PERL_LDFLAGS |$sedpath 's/-lnsl //'` + PERL_LDFLAGS=`echo $PERL_LDFLAGS |$sedpath 's/-lposix //'` + fi + PERL_LDFLAGS=`echo $PERL_LDFLAGS |$sedpath 's/-lc //'` + AC_MSG_RESULT(ok) + +# oldLIBS=$LIBS +# LIBS="$LIBS $PERL_LDFLAGS" +# AC_CHECK_FUNC(eval_pv) +# AC_CHECK_FUNC(call_pv) +# LIBS=$oldLIBS + + AC_MSG_CHECKING(for perl >= 5.8.0) + PERL_VER=`$perlpath -e 'print $]>= 5.008?"yes":"no"'` + if test "$PERL_VER" = "yes"; then + AC_MSG_RESULT(yes) + AC_MSG_CHECKING(if perl plugin will be backward compatible) + if test "$perl_old" = "yes"; then + AC_MSG_RESULT(yes) + AC_DEFINE(OLD_PERL) + else + AC_MSG_RESULT(no) + fi + else + AC_MSG_RESULT(no) + echo "perl version too old, building without perl." + perl=no + fi + fi +fi + +dnl ********************************************************************* +dnl ** PYTHON *********************************************************** +dnl ********************************************************************* + +if test "$python" = yes; then + AC_PATH_PROG(pythonpath, python2) + if test "_$pythonpath" = _ ; then + AC_PATH_PROG(pythonpath, python) + fi + if test "_$pythonpath" = _ ; then + python=no + else + AC_MSG_CHECKING(Python version) + changequote(<<, >>)dnl + PY_VER=`$pythonpath -c 'import distutils.sysconfig; print(distutils.sysconfig.get_config_vars("VERSION")[0]);'` + PY_LIB=`$pythonpath -c 'import distutils.sysconfig; print(distutils.sysconfig.get_python_lib(standard_lib=1));'` + PY_INC=`$pythonpath -c 'import distutils.sysconfig; print(distutils.sysconfig.get_config_vars("INCLUDEPY")[0]);'` + $pythonpath -c "import sys; map(int,sys.version[:3].split('.')) >= [2,2] or sys.exit(1)" + changequote([, ])dnl + AC_MSG_RESULT($PY_VER) + if test "$?" != "1"; then + AC_MSG_CHECKING(Python compile flags) + PY_PREFIX=`$pythonpath -c 'import sys; print(sys.prefix)'` + PY_EXEC_PREFIX=`$pythonpath -c 'import sys; print(sys.exec_prefix)'` + if test -f $PY_INC/Python.h; then + PY_LIBS="-L$PY_LIB/config -lpython$PY_VER -lpthread -lutil" + PY_CFLAGS="-I$PY_INC" + AC_MSG_RESULT(ok) + else + python=no + AC_MSG_RESULT([Can't find Python.h]) + fi + else + echo "Python too old. Only 2.2 or above is supported." + python=no + fi + fi +fi + +dnl ********************************************************************* +dnl ** TCL ************************************************************** +dnl ********************************************************************* + +AC_MSG_CHECKING(for location of tclConfig.sh) +dirs="$tcl /lib /usr/lib /usr/tcl/lib /usr/lib/tcl8.4 /usr/local/lib /usr/local/tcl-8.4/lib /usr/local/tcl/lib /opt/lib /usr/lib/tcl8.3" +found=0 +if test "$tcl" != "no"; then + tcl=no + for try in $dirs; do + if test -f $try/tclConfig.sh; then + found=1 + . $try/tclConfig.sh + TCL_LIBS="$TCL_LIB_SPEC $TCL_LIBS" + TCL_CFLAGS="-I${TCL_PREFIX}/include $TCL_INCLUDE_SPEC" + tcl=yes + AC_MSG_RESULT($try/tclConfig.sh) + break + fi + done + if test "$found" -eq 0 ; then + AC_MSG_RESULT([tclConfig.sh not found - use the --enable-tcl option]) + fi +fi + +dnl ********************************************************************* +dnl ** IPv6 ************************************************************* +dnl ********************************************************************* + +dnl purely for Solaris +AC_CHECK_FUNC(select, , + AC_CHECK_LIB(socket, select, , + AC_CHECK_LIB(nsl, select, , + AC_CHECK_LIB(inet, select, , + AC_CHECK_LIB(cposix, select, , + AC_CHECK_LIB(net, select, , + AC_MSG_WARN(i can not find select. you might need to help me))))))) +AC_CHECK_LIB(socket, select) + +if test "$ipv6" = yes; then + AC_CHECK_FUNCS(getaddrinfo, have_getaddrinfo=yes) + AC_MSG_CHECKING(whether to enable IPv6 support) + if test "$have_getaddrinfo" = yes; then + AC_MSG_RESULT(yes) + AC_DEFINE(USE_IPV6) + else + ipv6=no + AC_MSG_RESULT(no) + fi +fi + +dnl ********************************************************************* +dnl ** OPENSSL ********************************************************** +dnl ********************************************************************* + +retry=no +if test "$openssl" != no; then + AC_PATH_PROG(pkgconfigpath, pkg-config) + AC_MSG_CHECKING(for openssl through pkg-config) + if $pkgconfigpath openssl --exists; then + CPPFLAGS="$CPPFLAGS `$pkgconfigpath openssl --cflags`" + LIBS="$LIBS `$pkgconfigpath openssl --libs`" + AC_DEFINE(USE_OPENSSL) + AC_MSG_RESULT(yes) + openssl=yes + else + AC_MSG_RESULT(no) + retry=yes + fi +fi + +if test "$retry" = "yes"; then + unset openssl_path ac_cv_lib_ssl_SSL_new ac_cv_header_openssl_ssl_h + if test "$openssl" != yes; then + openssl_path=$openssl + fi + openssl=no + SAVED_LIBS=$LIBS + LIBS="$LIBS -lcrypto" + if test -n "$openssl_path"; then + LIBS="-L$openssl_path/lib $LIBS" + fi + AC_CHECK_LIB(ssl, SSL_new, have_openssl=yes) + LIBS=$SAVED_LIBS + if test "$have_openssl" = yes; then + SAVED_CPPFLAGS=$CPPFLAGS + if test -n "$openssl_path"; then + CPPFLAGS="-I$openssl_path/include $CPPFLAGS" + fi + AC_CHECK_HEADERS(openssl/ssl.h, have_openssl_h=yes) + if test "$have_openssl_h" = yes; then + openssl=yes + AC_DEFINE(USE_OPENSSL) + LIBS="$LIBS -lssl -lcrypto" + if test -n "$openssl_path"; then + LIBS="-L$openssl_path/lib $LIBS" + fi + else + CPPFLAGS=$SAVED_CPPFLAGS + fi + fi +fi + +dnl ********************************************************************* +dnl ** PLUGIN *********************************************************** +dnl ********************************************************************* + +if test "$plugin" = yes; then + AC_CHECK_FUNCS(dlopen, have_dl=yes) + if test "$have_dl" != yes; then + AC_CHECK_LIB(dl, dlopen, have_dl=yes) + if test "$have_dl" = yes; then + LIBS="$LIBS -ldl" + fi + fi + if test "$have_dl" = yes; then + AC_DEFINE(USE_PLUGIN) + AC_PATH_PROG(pkgconfigpath, pkg-config) + RDYNAMIC_FLAGS="`$pkgconfigpath gmodule-2.0 --libs`" + LIBS="$LIBS $RDYNAMIC_FLAGS" + if test "$LD" = ""; then + VS="`ld --help | grep version-script 2> /dev/null`" + else + VS="`$LD --help | grep version-script 2> /dev/null`" + fi + if test "$VS" != ""; then + GUI_LIBS="$GUI_LIBS -Wl,--version-script,\$(srcdir)/../version-script" + fi + else + plugin=no + fi +fi + +dnl ####################################################################### +dnl # Check for DBUS libraries +dnl ####################################################################### + +if test "x$dbus" = "xyes" ; then + PKG_CHECK_MODULES(DBUS, [dbus-1 >= 0.60 dbus-glib-1 >= 0.60 gthread-2.0], dbus=yes, [ + AC_MSG_RESULT(no) + dbus=no + ]) + AC_PATH_PROG(DBUS_BINDING_TOOL, dbus-binding-tool, no) + AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal, no) + if test "x$DBUS_BINDING_TOOL" = "xno" || test "x$GLIB_GENMARSHAL" = "xno" || test "x$dbus" = "xno" ; then + dbus="no" + else + COMMON_LIBS="$COMMON_LIBS $DBUS_LIBS" + COMMON_CFLAGS="$COMMON_CFLAGS $DBUS_CFLAGS" + AC_DEFINE(USE_DBUS) + AS_AC_EXPAND(DATADIR, $datadir) + + DBUS_SERVICES_DIR="$DATADIR/dbus-1/services" + AC_SUBST(DBUS_SERVICES_DIR) + AC_DEFINE_UNQUOTED(DBUS_SERVICES_DIR, "$DBUS_SERVICES_DIR", [Where services dir for DBUS is]) + fi +fi + +dnl ********************************************************************* +dnl ** SPELL ************************************************************ +dnl ********************************************************************* + +if test "$spell" = "gtkspell" ; then + PKG_CHECK_MODULES(GTKSPELL, gtkspell-2.0 >= 2.0.2, [], [ + AC_MSG_RESULT(no) + spell=no + ]) + if test "$spell" != "no" ; then + GUI_LIBS="$GUI_LIBS $GTKSPELL_LIBS" + GUI_CFLAGS="$GUI_CFLAGS $GTKSPELL_CFLAGS" + AC_DEFINE(USE_GTKSPELL) + fi +fi + +if test "$spell" = "libsexy" ; then + PKG_CHECK_MODULES([LIBSEXY], [libsexy >= 0.1.8], libsexy=yes, AC_MSG_RESULT(no)) + if test "$libsexy" = "yes" ; then + GUI_LIBS="$GUI_LIBS $LIBSEXY_LIBS" + GUI_CFLAGS="$GUI_CFLAGS $LIBSEXY_CFLAGS" + AC_DEFINE(USE_LIBSEXY) + else + dnl use builtin static one + spell="static" + fi +fi + +if test "$spell" = "static" ; then + AC_DEFINE(USE_LIBSEXY) +fi + +dnl ********************************************************************* +dnl ** CONDITIONALS ***************************************************** +dnl ********************************************************************* + +AM_CONDITIONAL(USE_OPENSSL, test "x$openssl" = "xyes") +AM_CONDITIONAL(USE_LIBSEXY, test "x$spell" = "xstatic") +AM_CONDITIONAL(DO_TEXT, test "x$textfe" = "xyes") +AM_CONDITIONAL(DO_GTK, test "x$gtkfe" = "xyes") +AM_CONDITIONAL(DO_PERL, test "x$perl" = "xyes") +AM_CONDITIONAL(DO_PYTHON, test "x$python" = "xyes") +AM_CONDITIONAL(DO_TCL, test "x$tcl" = "xyes") +AM_CONDITIONAL(DO_PLUGIN, test "x$plugin" = "xyes") +AM_CONDITIONAL(USE_DBUS, test "x$dbus" = "xyes") +AM_CONDITIONAL(DO_GCONF, test "x$GCONFTOOL" != "xno") + +dnl ********************************************************************* +dnl ** SOCKS5 *********************************************************** +dnl ********************************************************************* + +if test "$socks" = yes; then + socks=no + AC_CHECK_LIB(socks5, SOCKSconnect, have_socks=yes) + if test "$have_socks" = yes; then + AC_CHECK_HEADERS(socks.h, have_socks_h=yes) + if test "$have_socks_h" = yes; then + socks=yes + AC_DEFINE(SOCKS) + LIBS="$LIBS -lsocks5" + fi + fi +fi + +dnl ********************************************************************* +dnl ** MS PROXY ********************************************************* +dnl ********************************************************************* + +have_ntlm="no" +if test "x$ntlm" = "xyes" ; then + have_ntlm="no" + AC_CHECK_LIB(ntlm, ntlm_smb_encrypt, have_ntlm=yes) + if test "$have_ntlm" = yes; then + LIBS="$LIBS -lntlm" + AC_DEFINE(USE_MSPROXY) + fi +fi + +dnl ********************************************************************* +dnl ** XShm ************************************************************* +dnl ********************************************************************* + +if test "$shm" = yes; then + oldl=$LIBS + oldc=$CPPFLAGS + LIBS="$LIBS `$pkgconfigpath --libs-only-L xft`" + CPPFLAGS="$CPPFLAGS `$pkgconfigpath --cflags-only-I xft`" + shm=no + AC_CHECK_LIB(Xext, XShmAttach, shm=yes) + if test "$shm" = yes; then + shm=no + AC_CHECK_HEADERS(sys/ipc.h, shm=yes) + if test "$shm" = yes; then + shm=no + AC_CHECK_HEADERS(sys/shm.h, shm=yes) + fi + fi + + LIBS=$oldl + if test "$shm" = yes; then + GUI_LIBS="$GUI_LIBS `$pkgconfigpath --libs-only-L xft` -lX11 -lXext" + AC_DEFINE(USE_SHM) + else + CPPFLAGS=$oldc + fi +fi + +dnl ********************************************************************* +dnl ** MMX ************************************************************** +dnl ********************************************************************* + +dnl we don't need mmx on *this* machine, just i386, because +dnl it's checked at runtime. +if test "$mmx" = "yes"; then + case $host_cpu in + i386|i486|i586|i686|i786|k6|k7) + mmx=yes + ;; + *) + mmx=no + esac + if test "$system" = "OpenBSD"; then + dnl openbsd fails because mmx_cmod doesn't prefix its symbols with underscore. + dnl xtext.o: Undefined symbol `_shade_ximage_15_mmx' referenced from text segment + mmx=no + fi + if test "$mmx" = "yes"; then + AC_DEFINE(USE_MMX) + fi +fi + +AM_CONDITIONAL(USE_MMX, test "$mmx" = "yes") + +dnl ********************************************************************* +dnl ** GCC FLAGS ******************************************************** +dnl ********************************************************************* + +dnl Only use -Wall and -pipe if we have gcc +if test "x$GCC" = "xyes"; then + if test -z "`echo "$CFLAGS" | grep "\-Wall" 2> /dev/null`" ; then + CFLAGS="$CFLAGS -Wall" + fi + if test "$system" = "Linux" -o "$system" = "FreeBSD"; then + if test -z "`echo "$CFLAGS" | grep "\-pipe" 2> /dev/null`" ; then + CFLAGS="$CFLAGS -pipe" + fi + fi + if test -z "`echo "$CFLAGS" | grep "\-g " 2> /dev/null`" ; then + CFLAGS="$CFLAGS -g" + fi +fi + +dnl does this compiler support -Wno-pointer-sign ? +AC_MSG_CHECKING([if gcc accepts -Wno-pointer-sign ]) + +safe_CFLAGS=$CFLAGS +CFLAGS="-Wno-pointer-sign" + +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ +int main () { return 0 ; } +]])],[ +no_pointer_sign=yes +AC_MSG_RESULT([yes]) +],[ +no_pointer_sign=no +AC_MSG_RESULT([no]) +]) +CFLAGS=$safe_CFLAGS + +if test x$no_pointer_sign = xyes; then + CFLAGS="$CFLAGS -Wno-pointer-sign" +fi + +dnl does this compiler support -funsigned-char ? +AC_MSG_CHECKING([if gcc accepts -funsigned-char ]) + +safe_CFLAGS=$CFLAGS +CFLAGS="-funsigned-char" + +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ +int main () { return 0 ; } +]])],[ +unsigned_char=yes +AC_MSG_RESULT([yes]) +],[ +unsigned_char=no +AC_MSG_RESULT([no]) +]) +CFLAGS=$safe_CFLAGS + +if test x$unsigned_char = xyes; then + CFLAGS="$CFLAGS -funsigned-char" +fi + +dnl ********************************************************************* +dnl ** FUNCTIONS/LIBS/CFLAGS ******************************************** +dnl ********************************************************************* + +AC_MSG_CHECKING(for modern sigaction) +dnl libc5 on linux and FreeBSD 3.x doesn't have siginfo_t +dnl and the sa_sigation field. +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[struct sigaction act; + siginfo_t *si; + act.sa_sigaction = 0;]])],[ + AC_MSG_RESULT(yes) + AC_DEFINE(USE_SIGACTION) + ],[AC_MSG_RESULT(no)]) + +AC_PATH_PROG(gdkpixbufcsourcepath, gdk-pixbuf-csource) +AC_SUBST(gdkpixbufcsourcepath) +if test "$gtkfe" != no -a "_$gdkpixbufcsourcepath" = _; then + AC_MSG_ERROR("Cannot find gdk-pixbuf-csource: Install GTK+ 2.0\!") +fi + +dnl if we don't have this, use g_snprintf instead +AC_CHECK_FUNCS(snprintf vsnprintf memrchr strtoull) + +AC_CHECK_FUNC(gethostbyname, , + AC_CHECK_LIB(resolv, gethostbyname, , + AC_CHECK_LIB(nsl, gethostbyname))) + +AC_CHECK_FUNC(gethostname, , AC_CHECK_LIB(nsl, gethostname)) + +dnl necessary for IRIX +AC_CHECK_HEADERS(strings.h) + +dnl Check for type in sys/socket.h - from Squid source (GPL) +AC_CACHE_CHECK(for socklen_t, ac_cv_type_socklen_t, [ +AC_EGREP_CPP([socklen_t[^a-zA-Z_0-9]], [#include +#include +#if STDC_HEADERS +#include +#include +#endif], +ac_cv_type_socklen_t=yes, +ac_cv_type_socklen_t=no) +]) +if test $ac_cv_type_socklen_t = no; then + AC_DEFINE(socklen_t, int) +fi + +dnl Mac OS X and Darwin use lookupd, which caches DNS queries by default +AC_EGREP_CPP(lookupd, dnl +[#if (defined(__APPLE__) && defined(__MACH__)) + lookupd +#endif], AC_DEFINE([LOOKUPD],1,[Define to 1 if the system uses lookupd])) + +dnl freebsd needs this +LIBS="$LIBS $INTLLIBS" +CFLAGS="$CFLAGS $CPPFLAGS" + +GUI_LIBS="$GUI_LIBS $COMMON_LIBS" + +dnl make these visible to all Makefiles +AC_SUBST(GUI_LIBS) +AC_SUBST(GUI_CFLAGS) +AC_SUBST(COMMON_LIBS) +AC_SUBST(COMMON_CFLAGS) +AC_SUBST(PERL_CFLAGS) +AC_SUBST(PERL_LDFLAGS) +AC_SUBST(PY_CFLAGS) +AC_SUBST(PY_LIBS) +AC_SUBST(TCL_LIBS) +AC_SUBST(TCL_CFLAGS) +AC_SUBST(DBUS_CFLAGS) +AC_SUBST(DBUS_LIBS) + + +PLUGIN_INCLUDES='-I$(top_srcdir)/plugins' +AC_SUBST(PLUGIN_INCLUDES) + +dnl for plugin.c and pixmaps.c +test "x$prefix" = xNONE && prefix="$ac_default_prefix" +test "x$exec_prefix" = xNONE && exec_prefix="$prefix" + +AC_DEFINE_UNQUOTED(PREFIX, "${prefix}") + +XCHATLIBDIR=`eval echo ${libdir}/xchat` +AC_DEFINE_UNQUOTED(XCHATLIBDIR, "$XCHATLIBDIR") + +XCHATSHAREDIR=`eval echo ${datadir}` +AC_DEFINE_UNQUOTED(XCHATSHAREDIR, "$XCHATSHAREDIR") + +dnl for plugins/xxx/Makefile.am +xchatlibdir=${libdir}/xchat +AC_SUBST(xchatlibdir) + +#AC_CONFIG_FILES([ po/Makefile.in +#intl/Makefile +AC_CONFIG_FILES([ Makefile +src/Makefile +src/common/Makefile +src/common/dbus/Makefile +src/fe-text/Makefile +src/fe-gtk/Makefile +src/pixmaps/Makefile +plugins/Makefile +plugins/python/Makefile +plugins/perl/Makefile +plugins/tcl/Makefile +po/Makefile.in +]) +AC_OUTPUT + +echo +echo xchat $VERSION +echo +echo Building GTK+ Interface .... : $gtkfe +echo Building TEXT Interface .... : $textfe +echo +echo PLUGINS: Perl: $perl Python: $python TCL: $tcl +echo +echo mmx tinting ......... : $mmx\ spelling .............. : $spell +echo XShm tinting ........ : $shm\ plugin interface ...... : $plugin +if test "$xft" = no; then + echo text backend ........ : pango\ nls/gettext ........... : $USE_NLS +else + echo text backend ........ : xft\ nls/gettext ........... : $USE_NLS +fi +echo openssl support ..... : $openssl\ ipv6 support .......... : $ipv6 +echo dbus support ........ : $dbus\ msproxy ntlm \(ISA\) .... : $have_ntlm +echo +echo The binary will be installed in $prefix/bin +echo + +if test "$gtkfe" = no; then + echo Warning: The GTK \(GUI\) frontend will not be built. + echo +fi + +if test "$spell" = "gtkspell"; then + echo Warning: GTK SPELL is not the recommended spelling library. + echo +fi + +echo configure complete, now type \'make\' and pray. +echo diff --git a/etc/wyatt8740/faq.html b/etc/wyatt8740/faq.html new file mode 100644 index 0000000..4f4c1cd --- /dev/null +++ b/etc/wyatt8740/faq.html @@ -0,0 +1,537 @@ + + +XCHAT FAQ + + + + +

X-Chat 2.8 Frequently Asked Questions

+ +

1. Section One: Compiling and Installing.

+

+1. I get this error: /bin/sh: no: command not found +

+2. How do I compile X-Chat on my Sun OS system? +

+

+ +

2. Section Two: Using X-Chat.

+

+1. How do I enable identd in X-Chat? (How do I get rid of the ~ in front of my username?) +

+2. How do I auto join more than one channel with keys? +

+3. How do I autoconnect and join a channel when X-Chat loads? +

+4. How do I cut and paste in X-Chat? +

+5. How do I connect through a proxy? +

+6. How do I show @ and + in front of nicknames that are Op and Voice when they talk? +

+7. How do I change the Op and Voice userlist icons and Tree View icons? +

+8. How do I set different ban types? +

+9. Why can't I see accented-letters/umlauts/upper-ascii-chars in X-Chat? +

+10. Why does the timestamp overlap some nicknames? +

+11. How do I turn on Conference mode where I will not see join or part messages? +

+12. How can I run the /dccserver command? +

+13. Why doesn't DCC send work behind a router (IPNat/ADSL)? +

+14. How do I execute multiple commands in one line? +

+15. How do I enable Emacs key bindings in XChat? +

+16. I get this error: "Unknown file type abc.yz. Maybe you need to install the Perl or Python plugin?" +

+17. How do I play sound files on certain events? +

+18. How do I auto-load scripts at startup? +

+19. How do I minimize X-Chat to the System Tray (Notification Area)? +

+20. Can I select and copy text with the time stamps? +

+21. What's the deal with opening URLs in XChat on Linux/Unix? +

+22. Where are the log files saved to? +

+23. How do I rotate log files every so often? +

+24. How do I enable graphical smilies (emoticons)? +

+

+ +

3. Section Three: Contributions, Development and Bugs.

+

+1. Why does X-Chat leak so much memory? +

+2. My copy of X-Chat crashes, what can I do? +

+3. Can I write a new language translation for X-Chat? +

+ +

+ +

1. Section One: Compiling and Installing.

+ +

1. I get this error: /bin/sh: no: command not found

+

+If you get an error something like: +

+
+Making all in po
+make[2]: Entering directory `/home/zed/xchat/files/xchat-1.8.7/po'
+file=./`echo ca | sed 's,.*/,,'`.gmo \
+  && rm -f $file && PATH=../src:$PATH no -o $file ca.po
+/bin/sh: no: command not found
+make[2]: *** [ca.gmo] Error 127
+make[2]: Leaving directory `/home/zed/xchat/files/xchat-1.8.7/po'
+make[1]: *** [all-recursive] Error 1
+make[1]: Leaving directory `/home/zed/xchat/files/xchat-1.8.7'
+make: *** [all-recursive-am] Error 2
+
+

+It means you don't have GNU gettext installed. There are two solutions: +

+
    +
  • Install GNU gettext and try again.
  • +
  • Use ./configure --disable-nls. This will disable foreign +language support and all menus and GUI will be in English only.
  • +
+ +

2. How do I compile X-Chat on my Sun OS system?

+

+ X-Chat uses GNU gettext which in turn requires gmake, either install that + and or use ./configure --disable-nls with Sun's own make. +

+ +

2. Section Two: Using X-Chat.

+ +

1. How do I enable identd in X-Chat?

+

+UNIX:
+ Identd isn't actually apart of X-Chat. You will need to download and install + your own ident server. Most distributions, including Fedora, come with an + ident server program called oidentd. Make sure it is enabled in + /etc/xinetd.conf or read you distribution's documentation. + + As an alternative, you can try this experimental identd server: xchat_auth + +

WINDOWS:
+ The win32 version of X-Chat comes with a built-in identd server. It is + enabled by default, but can be disabled with /set identd 0. +

+ +

2. How do I auto join more than one channel with keys?

+

+ In the Server list's channel column enter multiple channels and separate + them by commas, eg: "#linux,#warez,#chat". Do not put spaces between the + channels. If the channels also have keys (passwords), then the syntax is: + "#channel1,#channel2,#channel3 key1,key2,key3" +

+

+ Example: If you want to join #abc and #talk without keys, but #linux with + a key of "secret", you would enter: "#linux,#abc,#talk secret". +

+ +

3. How do I autoconnect and join a channel when X-Chat loads?

+

+In the Server list, select the Network you want to auto-connect to, click Edit +and turn ON the "Auto connect to this network at startup" checkbox. +

+ +

4. How do I cut and paste in X-Chat?

+

+It's exactly the same as any other X application. You simply mark the text +you want, and then press middle mouse button to paste (if you only have a +2 button mouse, press left and right buttons at once). +

+ +

5. How do I connect through a proxy?

+

+Go to the menus, Settings -> Preferences -> Network Setup and fill in the requested +information there. Authentication (using a username and password) is +only supported for HTTP and Socks5. +

+ +

6. How do I show @ and + in front of nicknames that are Op and Voice when they talk?

+

+To display @ and + characters next to nicknames as they talk, do the following: +

+

+In the menus, open up Settings -> Advanced -> Text Events. Find the +Channel Message event in the list. The $3 code can be inserted to +print the user's mode-character (e.g. @ or +). For example, you might want +to change the default: + +

%C18%H<%H$4$1%H>%H%O$t$2

To: +

%C18%H<%H$4$3$1%H>%H%O$t$2 +

Don't forget to press Enter, so the changes take effect in the +list at the top of the window. +

+ +

7. How do I change the Op and Voice userlist icons and Tree View icons?

+

+Unix/Linux +
The default icons are hard coded (compiled) in. You can override them by creating +some PNG files in ${PREFIX}/share/xchat. ${PREFIX} is usually /usr, so that +would translate to /usr/share/xchat. If you compiled from source tarball without +specifying a prefix, it will be /usr/local instead. +
+
+Windows +
Your own custom icons can be placed in C:\Program Files\XChat\Icons. Image format +may be PNG or ICO. PNG support on Windows 2000 may require installing GDI+, but it's +standard on XP or newer. +

+ +
+ + + + + + + + + + + + + + + + + + +
NameDescription
op.pngUserlist: Op
hop.pngUserlist: Half-Op
voice.pngUserlist: Voice
red.pngUserlist: Owner
purple.pngUserlist: Founder
server.pngTree: Server
channel.pngTree: Channel
dialog.pngTree: Dialog/Query
util.pngTree: Utility (Channel List, DCC etc)
message.pngTray: Message
highlight.pngTray: Highlighted Message
fileoffer.pngTray: DCC
xchat.pngMain XChat icon
+
+ +
Tree View icons: Type /set tab_icons 1 to enable them and then restart XChat. +
+ +

8. How do I set different ban types?

+

+ Three ways: +

+
    +
  • + Right click the nickname in the userlist, and choose a ban type from the + "Kick/Ban" submenu. +
  • +
  • + You can also do it manually: + + /ban <nick> <ban type> + + where the <ban type> is a number from 0 to 3. +
  • + +
  • + /set irc_ban_type <ban type> + sets the default ban type to use for all bans. The different types are: + +
      +
    • 0 *!*@*.host
    • +
    • 1 *!*@domain
    • +
    • 2 *!*user@*.host
    • +
    • 3 *!*user@domain
    • +
    + +
  • +
+ +

9. Why can't I see accented-letters/umlauts/upper-ascii-chars in X-Chat?

+

+Refer to http://xchat.org/encoding/.
+Note: Log files are always written in UTF-8/Unicode. +

+ +

10. Why does the timestamp overlap some nicknames?

+

+Some networks allow very long nicknames (up to 32 letters). It can be annoying to have +the separator bar move too far to the right, just for one long nick. Therefore, it has +a set limit for the distance it will move to the right. If you use a large font, you +may need to adjust this distance. It is set in pixels, for example: +

+
+      /set text_max_indent 320
+
+ +

+Once you adjust this setting high enough, overlapping timestamps and nicknames should +not occur. The adjustment will not take effect immediately, a restart may be needed. +

+ +

11. How do I turn on Conference mode where I will not see join or part messages?

+

+Right-click on the tab you want to change. In the submenu of the channel +name, there's a toggle-item "Show join/part messages", simply turn this off. +

If you want to turn this option on globally, type:

+
/set irc_conf_mode 1
+

Then all channels you join after setting this will start with "Show join/part messages" turned off.

+ +

12. How can I run the /dccserver command?

+

+In short you can not do this (easily). This is a mIRC only proprietary feature +that is quite nonstandard. There is no code for doing this, mainly because +/dccserver runs on port 59 which in turn would require running X-Chat as +root. Why do you need this anyway? Just use normal DCC. +

+Unofficial unix patches are available here. +

Update: DCC Server feature has been added in the official Windows release 2.4.1b. +

+ +

13. Why doesn't DCC send work behind a router (IPNat/ADSL)?

+

+ If you are behind a IP-NAT or ADSL router, you will most likely have + an address like 192.168.0.1. This address is not usable on the Internet, and + must be translated. +

+ When offering a DCC file, xchat will tell the receiver your address. If it says + 192.168.0.1, the receiver will not be able to connect. One way to make it send + your "real" address is to enable the "Get my IP from IRC Server" option in xchat. + This option is available in Preferences -> File Transfers. When you turn it + ON, you will have to re-login to the server before it'll take effect. +

+ You will also need to forward some ports for use in DCC send. You may pick almost + any port range you wish, for example, in xchat set: +

+
		First DCC send port: 4990
+		 Last DCC send port: 5000
+
+

+ This will allow you to send up to ten files at the same time, which should be plenty + for most people. Lastly, configure your router/modem to forward ports 4990-5000 to + your PC's address. You'll have to consult your router/modem's manual on how to do this. +

+ +

14. How do I execute multiple commands in one line?

+

+ There are three ways to do this: +

+
    +
  • /LOAD -e <textfile>, where <textfile> is a full pathname to a file +containing commands on each line.
  • +
  • +Separate your commands with CTRL-SHIFT-u-a (CTRL-SHIFT-a on older GTK+ and Windows). This will appear as a little box with numbers on it.
  • +
  • You can create two UserCommands, with the same name, and then execute +the UserCommand. It will be executed in the same order as it's written +in the UserCommands GUI.
  • +
+ +

15. How do I enable Emacs key bindings in XChat?

+

+The standard Emacs key bindings, such as CTRL-w, CTRL-u etc, are supported by +GTK+ 2.0, but normally disabled. If you run Gnome 2, you can re-enable them in +your Gnome menu under: Preferences -> Keyboard Shortcuts. +

+

+Note: This doesn't work in the latest Gnome (2.8 and newer). In this case, you need +to run "gconf-editor", and directly change the key /desktop/gnome/interface/gtk_key_theme +from "Default" to "Emacs". Then you need to re-start XChat. +

+

+If you don't use Gnome 2, but still want Emacs key bindings, it's beyond the +scope of this document. You might find some hints here: +GTK+ 2.4.0 release notes. +

+ +

16. I get this error: "Unknown file type abc.yz. Maybe you need to install the Perl or Python plugin?"

+

+If you get this error when trying to load a Perl or Python script, it means +the plugin for running those scripts isn't loaded. +

+
    +
  • The Perl, Python and TCL plugins come with XChat in the same archive.
  • +
  • During ./configure, it will check for Perl, Python and TCL libs and headers, you should check if it failed there.
  • +
  • The plugins directory can be found by issuing the shell command +
    xchat -p
    +
  • +
  • All *.so files are auto-loaded at startup (*.dll on Windows).
  • +
  • If you downloaded a binary package, maybe the packager decided to exclude the Perl or Python plugins.
  • +
+ +

17. How do I play sound files on certain events?

+

+In the menus, go to: Settings > Preferences > Sound. +Select the event you want to make a sound on, then type in a +sound filename (or use the Browse button). +

+ +

18. How do I auto-load scripts at startup?

+

+You just have to place the scripts into XChat's data directory. XChat +will auto-load scripts if they have the right extension .e.g If a filename +ends in .pl, it will be loaded as a Perl script. +This data directory is different on each platform: +

+Windows +

+It depends on your version of Windows and where it stores the +Application Data folder. On Windows XP it is usually: +

+C:\Documents and Settings\username\Application Data\X-Chat 2\ +
or simply: +
+C:\Program Files\XChat\Plugins\ +


+UNIX +

+~/.xchat2/ +Where "~" represents your home directory i.e.: $HOME/.xchat2/ +

+ +

19. How do I minimize X-Chat to the System Tray (Notification Area)?

+

+There are two plugins available that allow this: +
Unix: SysTray Plugin +
Windows: xTray +

+

+Note that XChat 2.8.0+ has its own tray feature, but you can disable it +in Settings > Preferences > Alerts and still run these plugins, if you prefer. +

+ +

20. Can I select and copy text with the time stamps?

+

+Yes, but this requires at least XChat 2.6.3. Simply hold down SHIFT while marking +the text and the time stamps will be included. +

+ +

21. What's the deal with opening URLs in XChat on Unix/Linux?

+

+Right-clicking on a URL and selecting Open Link in Browser will open the link +in your "preferred browser". In Gnome, your preferred browser can be changed in System > Preferences > More Preferences > Preferred Applications. +

+Notes for 2.8.0 or newer: +

+Everything should just work automatically without any changes from you. Here's how the current +logic works: +

+ +
    +
  • First, it tries to run xdg-open, which is a universal URL handler from freedesktop.org. Most modern Linux desktops will have this now, or in the near future.
  • +
  • If xdg-open doesn't exist, it will try to detect a running Gnome or KDE desktop. This is done via the environment variables GNOME_DESKTOP_SESSION_ID and KDE_FULL_SESSION.
  • +
  • If Gnome is detected, it will execute: gnome-open <url>
  • +
  • If KDE is detected, it will execute: kfmclient exec <url>
  • +
+ +

+Notes for 2.6.8 or older: +

+If you're not using Gnome, e.g KDE or some other desktop environment, you're fresh out of luck! +
Note for Debian and Ubuntu: Integration with Gnome is broken on this distro! Please set +sensible-browser instead. We have no control over what the Debian packagers do, so complain +to them for this screw up. Example: +sudo update-alternatives --set x-www-browser /usr/bin/firefox + +

+More details +

+While holding down CTRL you can single left-click a URL to open it in your preferred browser. If you really want to change this to plain left-click you can type: /set gui_url_mod 0, provided you have XChat 2.6.6 or newer. +

+You can also add more items to the right-click menu in XChat: Settings > Advanced > URL Handlers. +
For example, you could add an entry like !firefox -a firefox -remote 'openURL(%s,new-tab)' +
But this kind of messing around shouldn't be necessary, it just works automatically in Gnome, KDE and Windows with 2.8.0+! +

+ +

22. Where are the log files saved to?

+

+UNIX +
+
~/.xchat2/xchatlogs/ +
where ~ represents your home directory. +
+
+
Windows +
+
Windows XP/2000: C:\Documents and Settings\username\Application Data\X-Chat 2\xchatlogs +
Windows Vista/7: C:\Users\username\AppData\Roaming\X-Chat 2\xchatlogs +

+ +

23. How do I rotate log files every so often?

+

+Requires: 2.6.1+ +

+By default settings, no rotation occurs, your log files will just keep getting larger. +

+Go to Settings > Preferences > Logging and change the log filename to any one of these: +

+
+ + + + + +
SettingExample filename that would be written
%Y-%m-%d/%n-%c.log 2006-12-30/FreeNode-#channel.log
%n/%Y-%m-%d/%c.logFreeNode/2006-12-30/#channel.log
%n/%c.logFreeNode/#channel.log (no rotation)
+
+

+%Y, %m and %d represents the current year, month and day respectively. %n is the +network name, e.g. "FreeNode" or "UnderNet", and finally, %c is the channel. In these +examples, a new log filename and folder would be created after midnight. +

+You can find more possibilities at http://xchat.org/docs/log/. +

+ +

24. How do I enable graphical smilies (emoticons)?

+

+This feature is only available in the official Windows XChat release. You have to +TICK this feature during installation. If you didn't do this, you can simply run +the installer again, and TICK the "Eye Candy Theme" when given the option. +

+If you want to use the graphical theme, but disable it just for smilies (i.e leave +it ON for things like Join/Part, Modes etc only), type this command and restart: +

+/set text_emoticons off +

+ +

3. Section Three: Contributions, Development and Bugs.

+ +

1. Why does X-Chat leak so much memory?

+

+The simple answer is, it doesn't! There are some GTK+ pixmap based themes around that +leak a lot of memory. Please try using a different theme and see if that resolves the +problem. X-Chat itself only allocates about 40kb of memory through malloc()! +

+ +

2. My copy of X-Chat crashes, what can I do?

+

+Firstly, make sure it's the latest stable version of X-Chat. Stable versions have +an EVEN middle number, e.g.: 2.8.0 or 2.8.1. Often late fixes are placed in this +directory: 2.8.x patches +

+ If you still experience crashes, you should consider running it through GDB. This + will help us find a fix quickly, and it's easy to do! See here. +

+ +

3. Can I write a new language translation for X-Chat?

+

+You sure can, but I don't accept translations directly. They must be done through the +Translation Project. +All the relevant information should be on that page. +

+ + + diff --git a/etc/wyatt8740/install-sh b/etc/wyatt8740/install-sh new file mode 100755 index 0000000..6781b98 --- /dev/null +++ b/etc/wyatt8740/install-sh @@ -0,0 +1,520 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2009-04-28.21; # UTC + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. + +nl=' +' +IFS=" "" $nl" + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit=${DOITPROG-} +if test -z "$doit"; then + doit_exec=exec +else + doit_exec=$doit +fi + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +posix_glob='?' +initialize_posix_glob=' + test "$posix_glob" != "?" || { + if (set -f) 2>/dev/null; then + posix_glob= + else + posix_glob=: + fi + } +' + +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +chgrpcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog +rmcmd="$rmprog -f" +stripcmd= + +src= +dst= +dir_arg= +dst_arg= + +copy_on_change=false +no_target_directory= + +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -C install only if different (preserve the last data modification time) + -d create directories instead of installing files. + -g GROUP $chgrpprog installed files to GROUP. + -m MODE $chmodprog installed files to MODE. + -o USER $chownprog installed files to USER. + -s $stripprog installed files. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG +" + +while test $# -ne 0; do + case $1 in + -c) ;; + + -C) copy_on_change=true;; + + -d) dir_arg=true;; + + -g) chgrpcmd="$chgrpprog $2" + shift;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + case $mode in + *' '* | *' '* | *' +'* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; + + -o) chowncmd="$chownprog $2" + shift;; + + -s) stripcmd=$stripprog;; + + -t) dst_arg=$2 + shift;; + + -T) no_target_directory=true;; + + --version) echo "$0 $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call `install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + trap '(exit $?); exit' 1 2 13 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names starting with `-'. + case $src in + -*) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + + dst=$dst_arg + # Protect names starting with `-'. + case $dst in + -*) dst=./$dst;; + esac + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test -n "$no_target_directory"; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dst=$dstdir/`basename "$src"` + dstdir_status=0 + else + # Prefer dirname, but fall back on a substitute if dirname fails. + dstdir=` + (dirname "$dst") 2>/dev/null || + expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$dst" : 'X\(//\)[^/]' \| \ + X"$dst" : 'X\(//\)$' \| \ + X"$dst" : 'X\(/\)' \| . 2>/dev/null || + echo X"$dst" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q' + ` + + test -d "$dstdir" + dstdir_status=$? + fi + fi + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + + if (umask $mkdir_umask && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writeable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + ls_ld_tmpdir=`ls -ld "$tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/d" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null + fi + trap '' 0;; + esac;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # The umask is ridiculous, or mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + -*) prefix='./';; + *) prefix='';; + esac + + eval "$initialize_posix_glob" + + oIFS=$IFS + IFS=/ + $posix_glob set -f + set fnord $dstdir + shift + $posix_glob set +f + IFS=$oIFS + + prefixes= + + for d + do + test -z "$d" && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + + eval "$initialize_posix_glob" && + $posix_glob set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + $posix_glob set +f && + + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || + + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/etc/wyatt8740/intl/ChangeLog b/etc/wyatt8740/intl/ChangeLog new file mode 100644 index 0000000..3ec9081 --- /dev/null +++ b/etc/wyatt8740/intl/ChangeLog @@ -0,0 +1,4 @@ +2007-11-07 GNU + + * Version 0.17 released. + diff --git a/etc/wyatt8740/intl/Makefile.in b/etc/wyatt8740/intl/Makefile.in new file mode 100644 index 0000000..8fa0a02 --- /dev/null +++ b/etc/wyatt8740/intl/Makefile.in @@ -0,0 +1,590 @@ +# Makefile for directory with message catalog handling library of GNU gettext +# Copyright (C) 1995-1998, 2000-2007 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU Library General Public License as published +# by the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program 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 +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +# USA. + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ + +SHELL = /bin/sh + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +top_builddir = .. + +# The VPATH variables allows builds with $builddir != $srcdir, assuming a +# 'make' program that supports VPATH (such as GNU make). This line is removed +# by autoconf automatically when "$(srcdir)" = ".". +# In this directory, the VPATH handling is particular: +# 1. If INTL_LIBTOOL_SUFFIX_PREFIX is 'l' (indicating a build with libtool), +# the .c -> .lo rules carefully use $(srcdir), so that VPATH can be omitted. +# 2. If PACKAGE = gettext-tools, VPATH _must_ be omitted, because otherwise +# 'make' does the wrong thing if GNU gettext was configured with +# "./configure --srcdir=`pwd`", namely it gets confused by the .lo and .la +# files it finds in srcdir = ../../gettext-runtime/intl. +VPATH = $(srcdir) + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +transform = @program_transform_name@ +libdir = @libdir@ +includedir = @includedir@ +datarootdir = @datarootdir@ +datadir = @datadir@ +localedir = $(datadir)/locale +gettextsrcdir = $(datadir)/gettext/intl +aliaspath = $(localedir) +subdir = intl + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ + +# We use $(mkdir_p). +# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as +# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions, +# @install_sh@ does not start with $(SHELL), so we add it. +# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined +# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake +# versions, $(mkinstalldirs) and $(install_sh) are unused. +mkinstalldirs = $(SHELL) @install_sh@ -d +install_sh = $(SHELL) @install_sh@ +MKDIR_P = @MKDIR_P@ +mkdir_p = @mkdir_p@ + +l = @INTL_LIBTOOL_SUFFIX_PREFIX@ + +AR = ar +CC = @CC@ +LIBTOOL = @LIBTOOL@ +RANLIB = @RANLIB@ +YACC = @INTLBISON@ -y -d +YFLAGS = --name-prefix=__gettext +WINDRES = @WINDRES@ + +# -DBUILDING_LIBINTL: Change expansion of LIBINTL_DLL_EXPORTED macro. +# -DBUILDING_DLL: Change expansion of RELOCATABLE_DLL_EXPORTED macro. +DEFS = -DLOCALEDIR=\"$(localedir)\" -DLOCALE_ALIAS_PATH=\"$(aliaspath)\" \ +-DLIBDIR=\"$(libdir)\" -DBUILDING_LIBINTL -DBUILDING_DLL -DIN_LIBINTL \ +-DENABLE_RELOCATABLE=1 -DIN_LIBRARY -DINSTALLDIR=\"$(libdir)\" -DNO_XMALLOC \ +-Dset_relocation_prefix=libintl_set_relocation_prefix \ +-Drelocate=libintl_relocate \ +-DDEPENDS_ON_LIBICONV=1 @DEFS@ +CPPFLAGS = @CPPFLAGS@ +CFLAGS = @CFLAGS@ @CFLAG_VISIBILITY@ +LDFLAGS = @LDFLAGS@ $(LDFLAGS_@WOE32DLL@) +LDFLAGS_yes = -Wl,--export-all-symbols +LDFLAGS_no = +LIBS = @LIBS@ + +COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) + +HEADERS = \ + gmo.h \ + gettextP.h \ + hash-string.h \ + loadinfo.h \ + plural-exp.h \ + eval-plural.h \ + localcharset.h \ + lock.h \ + relocatable.h \ + tsearch.h tsearch.c \ + xsize.h \ + printf-args.h printf-args.c \ + printf-parse.h wprintf-parse.h printf-parse.c \ + vasnprintf.h vasnwprintf.h vasnprintf.c \ + os2compat.h \ + libgnuintl.h.in +SOURCES = \ + bindtextdom.c \ + dcgettext.c \ + dgettext.c \ + gettext.c \ + finddomain.c \ + hash-string.c \ + loadmsgcat.c \ + localealias.c \ + textdomain.c \ + l10nflist.c \ + explodename.c \ + dcigettext.c \ + dcngettext.c \ + dngettext.c \ + ngettext.c \ + plural.y \ + plural-exp.c \ + localcharset.c \ + lock.c \ + relocatable.c \ + langprefs.c \ + localename.c \ + log.c \ + printf.c \ + version.c \ + osdep.c \ + os2compat.c \ + intl-exports.c \ + intl-compat.c +OBJECTS = \ + bindtextdom.$lo \ + dcgettext.$lo \ + dgettext.$lo \ + gettext.$lo \ + finddomain.$lo \ + hash-string.$lo \ + loadmsgcat.$lo \ + localealias.$lo \ + textdomain.$lo \ + l10nflist.$lo \ + explodename.$lo \ + dcigettext.$lo \ + dcngettext.$lo \ + dngettext.$lo \ + ngettext.$lo \ + plural.$lo \ + plural-exp.$lo \ + localcharset.$lo \ + lock.$lo \ + relocatable.$lo \ + langprefs.$lo \ + localename.$lo \ + log.$lo \ + printf.$lo \ + version.$lo \ + osdep.$lo \ + intl-compat.$lo +OBJECTS_RES_yes = libintl.res +OBJECTS_RES_no = +DISTFILES.common = Makefile.in \ +config.charset locale.alias ref-add.sin ref-del.sin export.h libintl.rc \ +$(HEADERS) $(SOURCES) +DISTFILES.generated = plural.c +DISTFILES.normal = VERSION +DISTFILES.gettext = COPYING.LIB-2.0 COPYING.LIB-2.1 libintl.glibc README.woe32 +DISTFILES.obsolete = xopen-msg.sed linux-msg.sed po2tbl.sed.in cat-compat.c \ +COPYING.LIB-2 gettext.h libgettext.h plural-eval.c libgnuintl.h \ +libgnuintl.h_vms Makefile.vms libgnuintl.h.msvc-static \ +libgnuintl.h.msvc-shared Makefile.msvc + +# gettext 0.22 removed this +# all: all-@USE_INCLUDED_LIBINTL@ +all: all-yes +all-yes: libintl.$la libintl.h charset.alias ref-add.sed ref-del.sed +all-no: all-no-yes +# all-no: all-no-@BUILD_INCLUDED_LIBINTL@ +all-no-yes: libgnuintl.$la +all-no-no: + +libintl.a libgnuintl.a: $(OBJECTS) + rm -f $@ + $(AR) cru $@ $(OBJECTS) + $(RANLIB) $@ + +libintl.la libgnuintl.la: $(OBJECTS) $(OBJECTS_RES_@WOE32@) + $(LIBTOOL) --mode=link \ + $(CC) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) $(LDFLAGS) -o $@ \ + $(OBJECTS) @LTLIBICONV@ @INTL_MACOSX_LIBS@ $(LIBS) @LTLIBTHREAD@ @LTLIBC@ \ + $(OBJECTS_RES_@WOE32@) \ + -version-info $(LTV_CURRENT):$(LTV_REVISION):$(LTV_AGE) \ + -rpath $(libdir) \ + -no-undefined + +# Libtool's library version information for libintl. +# Before making a gettext release, the gettext maintainer must change this +# according to the libtool documentation, section "Library interface versions". +# Maintainers of other packages that include the intl directory must *not* +# change these values. +LTV_CURRENT=8 +LTV_REVISION=2 +LTV_AGE=0 + +.SUFFIXES: +.SUFFIXES: .c .y .o .lo .sin .sed + +.c.o: + $(COMPILE) $< + +.y.c: + $(YACC) $(YFLAGS) --output $@ $< + rm -f $*.h + +bindtextdom.lo: $(srcdir)/bindtextdom.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/bindtextdom.c +dcgettext.lo: $(srcdir)/dcgettext.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcgettext.c +dgettext.lo: $(srcdir)/dgettext.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dgettext.c +gettext.lo: $(srcdir)/gettext.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/gettext.c +finddomain.lo: $(srcdir)/finddomain.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/finddomain.c +hash-string.lo: $(srcdir)/hash-string.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/hash-string.c +loadmsgcat.lo: $(srcdir)/loadmsgcat.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/loadmsgcat.c +localealias.lo: $(srcdir)/localealias.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localealias.c +textdomain.lo: $(srcdir)/textdomain.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/textdomain.c +l10nflist.lo: $(srcdir)/l10nflist.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/l10nflist.c +explodename.lo: $(srcdir)/explodename.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/explodename.c +dcigettext.lo: $(srcdir)/dcigettext.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcigettext.c +dcngettext.lo: $(srcdir)/dcngettext.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcngettext.c +dngettext.lo: $(srcdir)/dngettext.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dngettext.c +ngettext.lo: $(srcdir)/ngettext.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/ngettext.c +plural.lo: $(srcdir)/plural.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/plural.c +plural-exp.lo: $(srcdir)/plural-exp.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/plural-exp.c +localcharset.lo: $(srcdir)/localcharset.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localcharset.c +lock.lo: $(srcdir)/lock.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/lock.c +relocatable.lo: $(srcdir)/relocatable.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/relocatable.c +langprefs.lo: $(srcdir)/langprefs.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/langprefs.c +localename.lo: $(srcdir)/localename.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localename.c +log.lo: $(srcdir)/log.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/log.c +printf.lo: $(srcdir)/printf.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/printf.c +version.lo: $(srcdir)/version.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/version.c +osdep.lo: $(srcdir)/osdep.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/osdep.c +intl-compat.lo: $(srcdir)/intl-compat.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/intl-compat.c + +# This rule is executed only on Woe32 systems. +# The following sed expressions come from the windres-options script. They are +# inlined here, so that they can be written in a Makefile without requiring a +# temporary file. They must contain literal newlines rather than semicolons, +# so that they work with the sed-3.02 that is shipped with MSYS. We can use +# GNU bash's $'\n' syntax to obtain such a newline. +libintl.res: $(srcdir)/libintl.rc + nl=$$'\n'; \ + sed_extract_major='/^[0-9]/{'$${nl}'s/^\([0-9]*\).*/\1/p'$${nl}q$${nl}'}'$${nl}'c\'$${nl}0$${nl}q; \ + sed_extract_minor='/^[0-9][0-9]*[.][0-9]/{'$${nl}'s/^[0-9]*[.]\([0-9]*\).*/\1/p'$${nl}q$${nl}'}'$${nl}'c\'$${nl}0$${nl}q; \ + sed_extract_subminor='/^[0-9][0-9]*[.][0-9][0-9]*[.][0-9]/{'$${nl}'s/^[0-9]*[.][0-9]*[.]\([0-9]*\).*/\1/p'$${nl}q$${nl}'}'$${nl}'c\'$${nl}0$${nl}q; \ + $(WINDRES) \ + "-DPACKAGE_VERSION_STRING=\\\"$(VERSION)\\\"" \ + "-DPACKAGE_VERSION_MAJOR="`echo '$(VERSION)' | sed -n -e "$$sed_extract_major"` \ + "-DPACKAGE_VERSION_MINOR="`echo '$(VERSION)' | sed -n -e "$$sed_extract_minor"` \ + "-DPACKAGE_VERSION_SUBMINOR="`echo '$(VERSION)' | sed -n -e "$$sed_extract_subminor"` \ + -i $(srcdir)/libintl.rc -o libintl.res --output-format=coff + +ref-add.sed: $(srcdir)/ref-add.sin + sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $(srcdir)/ref-add.sin > t-ref-add.sed + mv t-ref-add.sed ref-add.sed +ref-del.sed: $(srcdir)/ref-del.sin + sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $(srcdir)/ref-del.sin > t-ref-del.sed + mv t-ref-del.sed ref-del.sed + +INCLUDES = -I. -I$(srcdir) -I.. + +libgnuintl.h: $(srcdir)/libgnuintl.h.in + sed -e '/IN_LIBGLOCALE/d' \ + -e 's,@''HAVE_POSIX_PRINTF''@,@HAVE_POSIX_PRINTF@,g' \ + -e 's,@''HAVE_ASPRINTF''@,@HAVE_ASPRINTF@,g' \ + -e 's,@''HAVE_SNPRINTF''@,@HAVE_SNPRINTF@,g' \ + -e 's,@''HAVE_WPRINTF''@,@HAVE_WPRINTF@,g' \ + < $(srcdir)/libgnuintl.h.in \ + | if test '@WOE32DLL@' = yes; then \ + sed -e 's/extern \([^()]*\);/extern __declspec (dllimport) \1;/'; \ + else \ + cat; \ + fi \ + | sed -e 's/extern \([^"]\)/extern LIBINTL_DLL_EXPORTED \1/' \ + -e "/#define _LIBINTL_H/r $(srcdir)/export.h" \ + | sed -e 's,@''HAVE_VISIBILITY''@,@HAVE_VISIBILITY@,g' \ + > libgnuintl.h + +libintl.h: $(srcdir)/libgnuintl.h.in + sed -e '/IN_LIBGLOCALE/d' \ + -e 's,@''HAVE_POSIX_PRINTF''@,@HAVE_POSIX_PRINTF@,g' \ + -e 's,@''HAVE_ASPRINTF''@,@HAVE_ASPRINTF@,g' \ + -e 's,@''HAVE_SNPRINTF''@,@HAVE_SNPRINTF@,g' \ + -e 's,@''HAVE_WPRINTF''@,@HAVE_WPRINTF@,g' \ + < $(srcdir)/libgnuintl.h.in > libintl.h + +charset.alias: $(srcdir)/config.charset + $(SHELL) $(srcdir)/config.charset '@host@' > t-$@ + mv t-$@ $@ + +check: all + +# We must not install the libintl.h/libintl.a files if we are on a +# system which has the GNU gettext() function in its C library or in a +# separate library. +# If you want to use the one which comes with this version of the +# package, you have to use `configure --with-included-gettext'. +install: install-exec install-data +install-exec: all + if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \ + && test '@USE_INCLUDED_LIBINTL@' = yes; then \ + $(mkdir_p) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \ + $(INSTALL_DATA) libintl.h $(DESTDIR)$(includedir)/libintl.h; \ + $(LIBTOOL) --mode=install \ + $(INSTALL_DATA) libintl.$la $(DESTDIR)$(libdir)/libintl.$la; \ + if test "@RELOCATABLE@" = yes; then \ + dependencies=`sed -n -e 's,^dependency_libs=\(.*\),\1,p' < $(DESTDIR)$(libdir)/libintl.la | sed -e "s,^',," -e "s,'\$$,,"`; \ + if test -n "$$dependencies"; then \ + rm -f $(DESTDIR)$(libdir)/libintl.la; \ + fi; \ + fi; \ + else \ + : ; \ + fi + if test "$(PACKAGE)" = "gettext-tools" \ + && test '@USE_INCLUDED_LIBINTL@' = no \ + && test @GLIBC2@ != no; then \ + $(mkdir_p) $(DESTDIR)$(libdir); \ + $(LIBTOOL) --mode=install \ + $(INSTALL_DATA) libgnuintl.$la $(DESTDIR)$(libdir)/libgnuintl.$la; \ + rm -f $(DESTDIR)$(libdir)/preloadable_libintl.so; \ + $(INSTALL_DATA) $(DESTDIR)$(libdir)/libgnuintl.so $(DESTDIR)$(libdir)/preloadable_libintl.so; \ + $(LIBTOOL) --mode=uninstall \ + rm -f $(DESTDIR)$(libdir)/libgnuintl.$la; \ + else \ + : ; \ + fi + if test '@USE_INCLUDED_LIBINTL@' = yes; then \ + test @GLIBC21@ != no || $(mkdir_p) $(DESTDIR)$(libdir); \ + temp=$(DESTDIR)$(libdir)/t-charset.alias; \ + dest=$(DESTDIR)$(libdir)/charset.alias; \ + if test -f $(DESTDIR)$(libdir)/charset.alias; then \ + orig=$(DESTDIR)$(libdir)/charset.alias; \ + sed -f ref-add.sed $$orig > $$temp; \ + $(INSTALL_DATA) $$temp $$dest; \ + rm -f $$temp; \ + else \ + if test @GLIBC21@ = no; then \ + orig=charset.alias; \ + sed -f ref-add.sed $$orig > $$temp; \ + $(INSTALL_DATA) $$temp $$dest; \ + rm -f $$temp; \ + fi; \ + fi; \ + $(mkdir_p) $(DESTDIR)$(localedir); \ + test -f $(DESTDIR)$(localedir)/locale.alias \ + && orig=$(DESTDIR)$(localedir)/locale.alias \ + || orig=$(srcdir)/locale.alias; \ + temp=$(DESTDIR)$(localedir)/t-locale.alias; \ + dest=$(DESTDIR)$(localedir)/locale.alias; \ + sed -f ref-add.sed $$orig > $$temp; \ + $(INSTALL_DATA) $$temp $$dest; \ + rm -f $$temp; \ + else \ + : ; \ + fi +install-data: all + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + $(INSTALL_DATA) VERSION $(DESTDIR)$(gettextsrcdir)/VERSION; \ + $(INSTALL_DATA) ChangeLog.inst $(DESTDIR)$(gettextsrcdir)/ChangeLog; \ + dists="COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common)"; \ + for file in $$dists; do \ + $(INSTALL_DATA) $(srcdir)/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + chmod a+x $(DESTDIR)$(gettextsrcdir)/config.charset; \ + dists="$(DISTFILES.generated)"; \ + for file in $$dists; do \ + if test -f $$file; then dir=.; else dir=$(srcdir); fi; \ + $(INSTALL_DATA) $$dir/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + dists="$(DISTFILES.obsolete)"; \ + for file in $$dists; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi + +install-strip: install + +install-dvi install-html install-info install-ps install-pdf: + +installdirs: + if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \ + && test '@USE_INCLUDED_LIBINTL@' = yes; then \ + $(mkdir_p) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \ + else \ + : ; \ + fi + if test "$(PACKAGE)" = "gettext-tools" \ + && test '@USE_INCLUDED_LIBINTL@' = no \ + && test @GLIBC2@ != no; then \ + $(mkdir_p) $(DESTDIR)$(libdir); \ + else \ + : ; \ + fi + if test '@USE_INCLUDED_LIBINTL@' = yes; then \ + test @GLIBC21@ != no || $(mkdir_p) $(DESTDIR)$(libdir); \ + $(mkdir_p) $(DESTDIR)$(localedir); \ + else \ + : ; \ + fi + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + else \ + : ; \ + fi + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: + if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \ + && test '@USE_INCLUDED_LIBINTL@' = yes; then \ + rm -f $(DESTDIR)$(includedir)/libintl.h; \ + $(LIBTOOL) --mode=uninstall \ + rm -f $(DESTDIR)$(libdir)/libintl.$la; \ + else \ + : ; \ + fi + if test "$(PACKAGE)" = "gettext-tools" \ + && test '@USE_INCLUDED_LIBINTL@' = no \ + && test @GLIBC2@ != no; then \ + rm -f $(DESTDIR)$(libdir)/preloadable_libintl.so; \ + else \ + : ; \ + fi + if test '@USE_INCLUDED_LIBINTL@' = yes; then \ + if test -f $(DESTDIR)$(libdir)/charset.alias; then \ + temp=$(DESTDIR)$(libdir)/t-charset.alias; \ + dest=$(DESTDIR)$(libdir)/charset.alias; \ + sed -f ref-del.sed $$dest > $$temp; \ + if grep '^# Packages using this file: $$' $$temp > /dev/null; then \ + rm -f $$dest; \ + else \ + $(INSTALL_DATA) $$temp $$dest; \ + fi; \ + rm -f $$temp; \ + fi; \ + if test -f $(DESTDIR)$(localedir)/locale.alias; then \ + temp=$(DESTDIR)$(localedir)/t-locale.alias; \ + dest=$(DESTDIR)$(localedir)/locale.alias; \ + sed -f ref-del.sed $$dest > $$temp; \ + if grep '^# Packages using this file: $$' $$temp > /dev/null; then \ + rm -f $$dest; \ + else \ + $(INSTALL_DATA) $$temp $$dest; \ + fi; \ + rm -f $$temp; \ + fi; \ + else \ + : ; \ + fi + if test "$(PACKAGE)" = "gettext-tools"; then \ + for file in VERSION ChangeLog COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common) $(DISTFILES.generated); do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi + +info dvi ps pdf html: + +$(OBJECTS): ../config.h libgnuintl.h +bindtextdom.$lo dcgettext.$lo dcigettext.$lo dcngettext.$lo dgettext.$lo dngettext.$lo finddomain.$lo gettext.$lo intl-compat.$lo loadmsgcat.$lo localealias.$lo ngettext.$lo textdomain.$lo: $(srcdir)/gettextP.h $(srcdir)/gmo.h $(srcdir)/loadinfo.h +hash-string.$lo dcigettext.$lo loadmsgcat.$lo: $(srcdir)/hash-string.h +explodename.$lo l10nflist.$lo: $(srcdir)/loadinfo.h +dcigettext.$lo loadmsgcat.$lo plural.$lo plural-exp.$lo: $(srcdir)/plural-exp.h +dcigettext.$lo: $(srcdir)/eval-plural.h +localcharset.$lo: $(srcdir)/localcharset.h +bindtextdom.$lo dcigettext.$lo finddomain.$lo loadmsgcat.$lo localealias.$lo lock.$lo log.$lo: $(srcdir)/lock.h +localealias.$lo localcharset.$lo relocatable.$lo: $(srcdir)/relocatable.h +printf.$lo: $(srcdir)/printf-args.h $(srcdir)/printf-args.c $(srcdir)/printf-parse.h $(srcdir)/wprintf-parse.h $(srcdir)/xsize.h $(srcdir)/printf-parse.c $(srcdir)/vasnprintf.h $(srcdir)/vasnwprintf.h $(srcdir)/vasnprintf.c + +# A bison-2.1 generated plural.c includes if ENABLE_NLS. +PLURAL_DEPS_yes = libintl.h +PLURAL_DEPS_no = +plural.$lo: $(PLURAL_DEPS_@USE_INCLUDED_LIBINTL@) + +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) + here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES) + +ctags: CTAGS + +CTAGS: $(HEADERS) $(SOURCES) + here=`pwd`; cd $(srcdir) && ctags -o $$here/CTAGS $(HEADERS) $(SOURCES) + +id: ID + +ID: $(HEADERS) $(SOURCES) + here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES) + + +mostlyclean: + rm -f *.a *.la *.o *.obj *.lo libintl.res core core.* + rm -f libgnuintl.h libintl.h charset.alias ref-add.sed ref-del.sed + rm -f -r .libs _libs + +clean: mostlyclean + +distclean: clean + rm -f Makefile ID TAGS + if test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; then \ + rm -f ChangeLog.inst $(DISTFILES.normal); \ + else \ + : ; \ + fi + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + + +# GNU gettext needs not contain the file `VERSION' but contains some +# other files which should not be distributed in other packages. +distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: Makefile + if test "$(PACKAGE)" = "gettext-tools"; then \ + : ; \ + else \ + if test "$(PACKAGE)" = "gettext-runtime"; then \ + additional="$(DISTFILES.gettext)"; \ + else \ + additional="$(DISTFILES.normal)"; \ + fi; \ + $(MAKE) $(DISTFILES.common) $(DISTFILES.generated) $$additional; \ + for file in ChangeLog $(DISTFILES.common) $(DISTFILES.generated) $$additional; do \ + if test -f $$file; then dir=.; else dir=$(srcdir); fi; \ + cp -p $$dir/$$file $(distdir) || test $$file = Makefile.in || exit 1; \ + done; \ + fi + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status +# This would be more efficient, but doesn't work any more with autoconf-2.57, +# when AC_CONFIG_FILES([intl/Makefile:somedir/Makefile.in]) is used. +# cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/etc/wyatt8740/intl/VERSION b/etc/wyatt8740/intl/VERSION new file mode 100644 index 0000000..889d4e9 --- /dev/null +++ b/etc/wyatt8740/intl/VERSION @@ -0,0 +1 @@ +GNU gettext library from gettext-0.17 diff --git a/etc/wyatt8740/intl/bindtextdom.c b/etc/wyatt8740/intl/bindtextdom.c new file mode 100644 index 0000000..dab5d4f --- /dev/null +++ b/etc/wyatt8740/intl/bindtextdom.c @@ -0,0 +1,340 @@ +/* Implementation of the bindtextdomain(3) function + Copyright (C) 1995-1998, 2000-2003, 2005-2006 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* Handle multi-threaded applications. */ +#ifdef _LIBC +# include +# define gl_rwlock_define __libc_rwlock_define +# define gl_rwlock_wrlock __libc_rwlock_wrlock +# define gl_rwlock_unlock __libc_rwlock_unlock +#else +# include "lock.h" +#endif + +/* Some compilers, like SunOS4 cc, don't have offsetof in . */ +#ifndef offsetof +# define offsetof(type,ident) ((size_t)&(((type*)0)->ident)) +#endif + +/* @@ end of prolog @@ */ + +/* Lock variable to protect the global data in the gettext implementation. */ +gl_rwlock_define (extern, _nl_state_lock attribute_hidden) + + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define BINDTEXTDOMAIN __bindtextdomain +# define BIND_TEXTDOMAIN_CODESET __bind_textdomain_codeset +# ifndef strdup +# define strdup(str) __strdup (str) +# endif +#else +# define BINDTEXTDOMAIN libintl_bindtextdomain +# define BIND_TEXTDOMAIN_CODESET libintl_bind_textdomain_codeset +#endif + +/* Specifies the directory name *DIRNAMEP and the output codeset *CODESETP + to be used for the DOMAINNAME message catalog. + If *DIRNAMEP or *CODESETP is NULL, the corresponding attribute is not + modified, only the current value is returned. + If DIRNAMEP or CODESETP is NULL, the corresponding attribute is neither + modified nor returned. */ +static void +set_binding_values (const char *domainname, + const char **dirnamep, const char **codesetp) +{ + struct binding *binding; + int modified; + + /* Some sanity checks. */ + if (domainname == NULL || domainname[0] == '\0') + { + if (dirnamep) + *dirnamep = NULL; + if (codesetp) + *codesetp = NULL; + return; + } + + gl_rwlock_wrlock (_nl_state_lock); + + modified = 0; + + for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next) + { + int compare = strcmp (domainname, binding->domainname); + if (compare == 0) + /* We found it! */ + break; + if (compare < 0) + { + /* It is not in the list. */ + binding = NULL; + break; + } + } + + if (binding != NULL) + { + if (dirnamep) + { + const char *dirname = *dirnamep; + + if (dirname == NULL) + /* The current binding has be to returned. */ + *dirnamep = binding->dirname; + else + { + /* The domain is already bound. If the new value and the old + one are equal we simply do nothing. Otherwise replace the + old binding. */ + char *result = binding->dirname; + if (strcmp (dirname, result) != 0) + { + if (strcmp (dirname, _nl_default_dirname) == 0) + result = (char *) _nl_default_dirname; + else + { +#if defined _LIBC || defined HAVE_STRDUP + result = strdup (dirname); +#else + size_t len = strlen (dirname) + 1; + result = (char *) malloc (len); + if (__builtin_expect (result != NULL, 1)) + memcpy (result, dirname, len); +#endif + } + + if (__builtin_expect (result != NULL, 1)) + { + if (binding->dirname != _nl_default_dirname) + free (binding->dirname); + + binding->dirname = result; + modified = 1; + } + } + *dirnamep = result; + } + } + + if (codesetp) + { + const char *codeset = *codesetp; + + if (codeset == NULL) + /* The current binding has be to returned. */ + *codesetp = binding->codeset; + else + { + /* The domain is already bound. If the new value and the old + one are equal we simply do nothing. Otherwise replace the + old binding. */ + char *result = binding->codeset; + if (result == NULL || strcmp (codeset, result) != 0) + { +#if defined _LIBC || defined HAVE_STRDUP + result = strdup (codeset); +#else + size_t len = strlen (codeset) + 1; + result = (char *) malloc (len); + if (__builtin_expect (result != NULL, 1)) + memcpy (result, codeset, len); +#endif + + if (__builtin_expect (result != NULL, 1)) + { + if (binding->codeset != NULL) + free (binding->codeset); + + binding->codeset = result; + modified = 1; + } + } + *codesetp = result; + } + } + } + else if ((dirnamep == NULL || *dirnamep == NULL) + && (codesetp == NULL || *codesetp == NULL)) + { + /* Simply return the default values. */ + if (dirnamep) + *dirnamep = _nl_default_dirname; + if (codesetp) + *codesetp = NULL; + } + else + { + /* We have to create a new binding. */ + size_t len = strlen (domainname) + 1; + struct binding *new_binding = + (struct binding *) malloc (offsetof (struct binding, domainname) + len); + + if (__builtin_expect (new_binding == NULL, 0)) + goto failed; + + memcpy (new_binding->domainname, domainname, len); + + if (dirnamep) + { + const char *dirname = *dirnamep; + + if (dirname == NULL) + /* The default value. */ + dirname = _nl_default_dirname; + else + { + if (strcmp (dirname, _nl_default_dirname) == 0) + dirname = _nl_default_dirname; + else + { + char *result; +#if defined _LIBC || defined HAVE_STRDUP + result = strdup (dirname); + if (__builtin_expect (result == NULL, 0)) + goto failed_dirname; +#else + size_t len = strlen (dirname) + 1; + result = (char *) malloc (len); + if (__builtin_expect (result == NULL, 0)) + goto failed_dirname; + memcpy (result, dirname, len); +#endif + dirname = result; + } + } + *dirnamep = dirname; + new_binding->dirname = (char *) dirname; + } + else + /* The default value. */ + new_binding->dirname = (char *) _nl_default_dirname; + + if (codesetp) + { + const char *codeset = *codesetp; + + if (codeset != NULL) + { + char *result; + +#if defined _LIBC || defined HAVE_STRDUP + result = strdup (codeset); + if (__builtin_expect (result == NULL, 0)) + goto failed_codeset; +#else + size_t len = strlen (codeset) + 1; + result = (char *) malloc (len); + if (__builtin_expect (result == NULL, 0)) + goto failed_codeset; + memcpy (result, codeset, len); +#endif + codeset = result; + } + *codesetp = codeset; + new_binding->codeset = (char *) codeset; + } + else + new_binding->codeset = NULL; + + /* Now enqueue it. */ + if (_nl_domain_bindings == NULL + || strcmp (domainname, _nl_domain_bindings->domainname) < 0) + { + new_binding->next = _nl_domain_bindings; + _nl_domain_bindings = new_binding; + } + else + { + binding = _nl_domain_bindings; + while (binding->next != NULL + && strcmp (domainname, binding->next->domainname) > 0) + binding = binding->next; + + new_binding->next = binding->next; + binding->next = new_binding; + } + + modified = 1; + + /* Here we deal with memory allocation failures. */ + if (0) + { + failed_codeset: + if (new_binding->dirname != _nl_default_dirname) + free (new_binding->dirname); + failed_dirname: + free (new_binding); + failed: + if (dirnamep) + *dirnamep = NULL; + if (codesetp) + *codesetp = NULL; + } + } + + /* If we modified any binding, we flush the caches. */ + if (modified) + ++_nl_msg_cat_cntr; + + gl_rwlock_unlock (_nl_state_lock); +} + +/* Specify that the DOMAINNAME message catalog will be found + in DIRNAME rather than in the system locale data base. */ +char * +BINDTEXTDOMAIN (const char *domainname, const char *dirname) +{ + set_binding_values (domainname, &dirname, NULL); + return (char *) dirname; +} + +/* Specify the character encoding in which the messages from the + DOMAINNAME message catalog will be returned. */ +char * +BIND_TEXTDOMAIN_CODESET (const char *domainname, const char *codeset) +{ + set_binding_values (domainname, NULL, &codeset); + return (char *) codeset; +} + +#ifdef _LIBC +/* Aliases for function names in GNU C Library. */ +weak_alias (__bindtextdomain, bindtextdomain); +weak_alias (__bind_textdomain_codeset, bind_textdomain_codeset); +#endif diff --git a/etc/wyatt8740/intl/config.charset b/etc/wyatt8740/intl/config.charset new file mode 100755 index 0000000..e8c258b --- /dev/null +++ b/etc/wyatt8740/intl/config.charset @@ -0,0 +1,640 @@ +#! /bin/sh +# Output a system dependent table of character encoding aliases. +# +# Copyright (C) 2000-2004, 2006 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU Library General Public License as published +# by the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program 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 +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +# USA. +# +# The table consists of lines of the form +# ALIAS CANONICAL +# +# ALIAS is the (system dependent) result of "nl_langinfo (CODESET)". +# ALIAS is compared in a case sensitive way. +# +# CANONICAL is the GNU canonical name for this character encoding. +# It must be an encoding supported by libiconv. Support by GNU libc is +# also desirable. CANONICAL is case insensitive. Usually an upper case +# MIME charset name is preferred. +# The current list of GNU canonical charset names is as follows. +# +# name MIME? used by which systems +# ASCII, ANSI_X3.4-1968 glibc solaris freebsd netbsd darwin +# ISO-8859-1 Y glibc aix hpux irix osf solaris freebsd netbsd darwin +# ISO-8859-2 Y glibc aix hpux irix osf solaris freebsd netbsd darwin +# ISO-8859-3 Y glibc solaris +# ISO-8859-4 Y osf solaris freebsd netbsd darwin +# ISO-8859-5 Y glibc aix hpux irix osf solaris freebsd netbsd darwin +# ISO-8859-6 Y glibc aix hpux solaris +# ISO-8859-7 Y glibc aix hpux irix osf solaris netbsd darwin +# ISO-8859-8 Y glibc aix hpux osf solaris +# ISO-8859-9 Y glibc aix hpux irix osf solaris darwin +# ISO-8859-13 glibc netbsd darwin +# ISO-8859-14 glibc +# ISO-8859-15 glibc aix osf solaris freebsd darwin +# KOI8-R Y glibc solaris freebsd netbsd darwin +# KOI8-U Y glibc freebsd netbsd darwin +# KOI8-T glibc +# CP437 dos +# CP775 dos +# CP850 aix osf dos +# CP852 dos +# CP855 dos +# CP856 aix +# CP857 dos +# CP861 dos +# CP862 dos +# CP864 dos +# CP865 dos +# CP866 freebsd netbsd darwin dos +# CP869 dos +# CP874 woe32 dos +# CP922 aix +# CP932 aix woe32 dos +# CP943 aix +# CP949 osf woe32 dos +# CP950 woe32 dos +# CP1046 aix +# CP1124 aix +# CP1125 dos +# CP1129 aix +# CP1250 woe32 +# CP1251 glibc solaris netbsd darwin woe32 +# CP1252 aix woe32 +# CP1253 woe32 +# CP1254 woe32 +# CP1255 glibc woe32 +# CP1256 woe32 +# CP1257 woe32 +# GB2312 Y glibc aix hpux irix solaris freebsd netbsd darwin +# EUC-JP Y glibc aix hpux irix osf solaris freebsd netbsd darwin +# EUC-KR Y glibc aix hpux irix osf solaris freebsd netbsd darwin +# EUC-TW glibc aix hpux irix osf solaris netbsd +# BIG5 Y glibc aix hpux osf solaris freebsd netbsd darwin +# BIG5-HKSCS glibc solaris +# GBK glibc aix osf solaris woe32 dos +# GB18030 glibc solaris netbsd +# SHIFT_JIS Y hpux osf solaris freebsd netbsd darwin +# JOHAB glibc solaris woe32 +# TIS-620 glibc aix hpux osf solaris +# VISCII Y glibc +# TCVN5712-1 glibc +# GEORGIAN-PS glibc +# HP-ROMAN8 hpux +# HP-ARABIC8 hpux +# HP-GREEK8 hpux +# HP-HEBREW8 hpux +# HP-TURKISH8 hpux +# HP-KANA8 hpux +# DEC-KANJI osf +# DEC-HANYU osf +# UTF-8 Y glibc aix hpux osf solaris netbsd darwin +# +# Note: Names which are not marked as being a MIME name should not be used in +# Internet protocols for information interchange (mail, news, etc.). +# +# Note: ASCII and ANSI_X3.4-1968 are synonymous canonical names. Applications +# must understand both names and treat them as equivalent. +# +# The first argument passed to this file is the canonical host specification, +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM + +host="$1" +os=`echo "$host" | sed -e 's/^[^-]*-[^-]*-\(.*\)$/\1/'` +echo "# This file contains a table of character encoding aliases," +echo "# suitable for operating system '${os}'." +echo "# It was automatically generated from config.charset." +# List of references, updated during installation: +echo "# Packages using this file: " +case "$os" in + linux-gnulibc1*) + # Linux libc5 doesn't have nl_langinfo(CODESET); therefore + # localcharset.c falls back to using the full locale name + # from the environment variables. + echo "C ASCII" + echo "POSIX ASCII" + for l in af af_ZA ca ca_ES da da_DK de de_AT de_BE de_CH de_DE de_LU \ + en en_AU en_BW en_CA en_DK en_GB en_IE en_NZ en_US en_ZA \ + en_ZW es es_AR es_BO es_CL es_CO es_DO es_EC es_ES es_GT \ + es_HN es_MX es_PA es_PE es_PY es_SV es_US es_UY es_VE et \ + et_EE eu eu_ES fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR \ + fr_LU ga ga_IE gl gl_ES id id_ID in in_ID is is_IS it it_CH \ + it_IT kl kl_GL nl nl_BE nl_NL no no_NO pt pt_BR pt_PT sv \ + sv_FI sv_SE; do + echo "$l ISO-8859-1" + echo "$l.iso-8859-1 ISO-8859-1" + echo "$l.iso-8859-15 ISO-8859-15" + echo "$l.iso-8859-15@euro ISO-8859-15" + echo "$l@euro ISO-8859-15" + echo "$l.cp-437 CP437" + echo "$l.cp-850 CP850" + echo "$l.cp-1252 CP1252" + echo "$l.cp-1252@euro CP1252" + #echo "$l.atari-st ATARI-ST" # not a commonly used encoding + echo "$l.utf-8 UTF-8" + echo "$l.utf-8@euro UTF-8" + done + for l in cs cs_CZ hr hr_HR hu hu_HU pl pl_PL ro ro_RO sk sk_SK sl \ + sl_SI sr sr_CS sr_YU; do + echo "$l ISO-8859-2" + echo "$l.iso-8859-2 ISO-8859-2" + echo "$l.cp-852 CP852" + echo "$l.cp-1250 CP1250" + echo "$l.utf-8 UTF-8" + done + for l in mk mk_MK ru ru_RU; do + echo "$l ISO-8859-5" + echo "$l.iso-8859-5 ISO-8859-5" + echo "$l.koi8-r KOI8-R" + echo "$l.cp-866 CP866" + echo "$l.cp-1251 CP1251" + echo "$l.utf-8 UTF-8" + done + for l in ar ar_SA; do + echo "$l ISO-8859-6" + echo "$l.iso-8859-6 ISO-8859-6" + echo "$l.cp-864 CP864" + #echo "$l.cp-868 CP868" # not a commonly used encoding + echo "$l.cp-1256 CP1256" + echo "$l.utf-8 UTF-8" + done + for l in el el_GR gr gr_GR; do + echo "$l ISO-8859-7" + echo "$l.iso-8859-7 ISO-8859-7" + echo "$l.cp-869 CP869" + echo "$l.cp-1253 CP1253" + echo "$l.cp-1253@euro CP1253" + echo "$l.utf-8 UTF-8" + echo "$l.utf-8@euro UTF-8" + done + for l in he he_IL iw iw_IL; do + echo "$l ISO-8859-8" + echo "$l.iso-8859-8 ISO-8859-8" + echo "$l.cp-862 CP862" + echo "$l.cp-1255 CP1255" + echo "$l.utf-8 UTF-8" + done + for l in tr tr_TR; do + echo "$l ISO-8859-9" + echo "$l.iso-8859-9 ISO-8859-9" + echo "$l.cp-857 CP857" + echo "$l.cp-1254 CP1254" + echo "$l.utf-8 UTF-8" + done + for l in lt lt_LT lv lv_LV; do + #echo "$l BALTIC" # not a commonly used encoding, wrong encoding name + echo "$l ISO-8859-13" + done + for l in ru_UA uk uk_UA; do + echo "$l KOI8-U" + done + for l in zh zh_CN; do + #echo "$l GB_2312-80" # not a commonly used encoding, wrong encoding name + echo "$l GB2312" + done + for l in ja ja_JP ja_JP.EUC; do + echo "$l EUC-JP" + done + for l in ko ko_KR; do + echo "$l EUC-KR" + done + for l in th th_TH; do + echo "$l TIS-620" + done + for l in fa fa_IR; do + #echo "$l ISIRI-3342" # a broken encoding + echo "$l.utf-8 UTF-8" + done + ;; + linux* | *-gnu*) + # With glibc-2.1 or newer, we don't need any canonicalization, + # because glibc has iconv and both glibc and libiconv support all + # GNU canonical names directly. Therefore, the Makefile does not + # need to install the alias file at all. + # The following applies only to glibc-2.0.x and older libcs. + echo "ISO_646.IRV:1983 ASCII" + ;; + aix*) + echo "ISO8859-1 ISO-8859-1" + echo "ISO8859-2 ISO-8859-2" + echo "ISO8859-5 ISO-8859-5" + echo "ISO8859-6 ISO-8859-6" + echo "ISO8859-7 ISO-8859-7" + echo "ISO8859-8 ISO-8859-8" + echo "ISO8859-9 ISO-8859-9" + echo "ISO8859-15 ISO-8859-15" + echo "IBM-850 CP850" + echo "IBM-856 CP856" + echo "IBM-921 ISO-8859-13" + echo "IBM-922 CP922" + echo "IBM-932 CP932" + echo "IBM-943 CP943" + echo "IBM-1046 CP1046" + echo "IBM-1124 CP1124" + echo "IBM-1129 CP1129" + echo "IBM-1252 CP1252" + echo "IBM-eucCN GB2312" + echo "IBM-eucJP EUC-JP" + echo "IBM-eucKR EUC-KR" + echo "IBM-eucTW EUC-TW" + echo "big5 BIG5" + echo "GBK GBK" + echo "TIS-620 TIS-620" + echo "UTF-8 UTF-8" + ;; + hpux*) + echo "iso88591 ISO-8859-1" + echo "iso88592 ISO-8859-2" + echo "iso88595 ISO-8859-5" + echo "iso88596 ISO-8859-6" + echo "iso88597 ISO-8859-7" + echo "iso88598 ISO-8859-8" + echo "iso88599 ISO-8859-9" + echo "iso885915 ISO-8859-15" + echo "roman8 HP-ROMAN8" + echo "arabic8 HP-ARABIC8" + echo "greek8 HP-GREEK8" + echo "hebrew8 HP-HEBREW8" + echo "turkish8 HP-TURKISH8" + echo "kana8 HP-KANA8" + echo "tis620 TIS-620" + echo "big5 BIG5" + echo "eucJP EUC-JP" + echo "eucKR EUC-KR" + echo "eucTW EUC-TW" + echo "hp15CN GB2312" + #echo "ccdc ?" # what is this? + echo "SJIS SHIFT_JIS" + echo "utf8 UTF-8" + ;; + irix*) + echo "ISO8859-1 ISO-8859-1" + echo "ISO8859-2 ISO-8859-2" + echo "ISO8859-5 ISO-8859-5" + echo "ISO8859-7 ISO-8859-7" + echo "ISO8859-9 ISO-8859-9" + echo "eucCN GB2312" + echo "eucJP EUC-JP" + echo "eucKR EUC-KR" + echo "eucTW EUC-TW" + ;; + osf*) + echo "ISO8859-1 ISO-8859-1" + echo "ISO8859-2 ISO-8859-2" + echo "ISO8859-4 ISO-8859-4" + echo "ISO8859-5 ISO-8859-5" + echo "ISO8859-7 ISO-8859-7" + echo "ISO8859-8 ISO-8859-8" + echo "ISO8859-9 ISO-8859-9" + echo "ISO8859-15 ISO-8859-15" + echo "cp850 CP850" + echo "big5 BIG5" + echo "dechanyu DEC-HANYU" + echo "dechanzi GB2312" + echo "deckanji DEC-KANJI" + echo "deckorean EUC-KR" + echo "eucJP EUC-JP" + echo "eucKR EUC-KR" + echo "eucTW EUC-TW" + echo "GBK GBK" + echo "KSC5601 CP949" + echo "sdeckanji EUC-JP" + echo "SJIS SHIFT_JIS" + echo "TACTIS TIS-620" + echo "UTF-8 UTF-8" + ;; + solaris*) + echo "646 ASCII" + echo "ISO8859-1 ISO-8859-1" + echo "ISO8859-2 ISO-8859-2" + echo "ISO8859-3 ISO-8859-3" + echo "ISO8859-4 ISO-8859-4" + echo "ISO8859-5 ISO-8859-5" + echo "ISO8859-6 ISO-8859-6" + echo "ISO8859-7 ISO-8859-7" + echo "ISO8859-8 ISO-8859-8" + echo "ISO8859-9 ISO-8859-9" + echo "ISO8859-15 ISO-8859-15" + echo "koi8-r KOI8-R" + echo "ansi-1251 CP1251" + echo "BIG5 BIG5" + echo "Big5-HKSCS BIG5-HKSCS" + echo "gb2312 GB2312" + echo "GBK GBK" + echo "GB18030 GB18030" + echo "cns11643 EUC-TW" + echo "5601 EUC-KR" + echo "ko_KR.johap92 JOHAB" + echo "eucJP EUC-JP" + echo "PCK SHIFT_JIS" + echo "TIS620.2533 TIS-620" + #echo "sun_eu_greek ?" # what is this? + echo "UTF-8 UTF-8" + ;; + freebsd* | os2*) + # FreeBSD 4.2 doesn't have nl_langinfo(CODESET); therefore + # localcharset.c falls back to using the full locale name + # from the environment variables. + # Likewise for OS/2. OS/2 has XFree86 just like FreeBSD. Just + # reuse FreeBSD's locale data for OS/2. + echo "C ASCII" + echo "US-ASCII ASCII" + for l in la_LN lt_LN; do + echo "$l.ASCII ASCII" + done + for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \ + fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT la_LN \ + lt_LN nl_BE nl_NL no_NO pt_PT sv_SE; do + echo "$l.ISO_8859-1 ISO-8859-1" + echo "$l.DIS_8859-15 ISO-8859-15" + done + for l in cs_CZ hr_HR hu_HU la_LN lt_LN pl_PL sl_SI; do + echo "$l.ISO_8859-2 ISO-8859-2" + done + for l in la_LN lt_LT; do + echo "$l.ISO_8859-4 ISO-8859-4" + done + for l in ru_RU ru_SU; do + echo "$l.KOI8-R KOI8-R" + echo "$l.ISO_8859-5 ISO-8859-5" + echo "$l.CP866 CP866" + done + echo "uk_UA.KOI8-U KOI8-U" + echo "zh_TW.BIG5 BIG5" + echo "zh_TW.Big5 BIG5" + echo "zh_CN.EUC GB2312" + echo "ja_JP.EUC EUC-JP" + echo "ja_JP.SJIS SHIFT_JIS" + echo "ja_JP.Shift_JIS SHIFT_JIS" + echo "ko_KR.EUC EUC-KR" + ;; + netbsd*) + echo "646 ASCII" + echo "ISO8859-1 ISO-8859-1" + echo "ISO8859-2 ISO-8859-2" + echo "ISO8859-4 ISO-8859-4" + echo "ISO8859-5 ISO-8859-5" + echo "ISO8859-7 ISO-8859-7" + echo "ISO8859-13 ISO-8859-13" + echo "ISO8859-15 ISO-8859-15" + echo "eucCN GB2312" + echo "eucJP EUC-JP" + echo "eucKR EUC-KR" + echo "eucTW EUC-TW" + echo "BIG5 BIG5" + echo "SJIS SHIFT_JIS" + ;; + darwin[56]*) + # Darwin 6.8 doesn't have nl_langinfo(CODESET); therefore + # localcharset.c falls back to using the full locale name + # from the environment variables. + echo "C ASCII" + for l in en_AU en_CA en_GB en_US la_LN; do + echo "$l.US-ASCII ASCII" + done + for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \ + fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT nl_BE \ + nl_NL no_NO pt_PT sv_SE; do + echo "$l ISO-8859-1" + echo "$l.ISO8859-1 ISO-8859-1" + echo "$l.ISO8859-15 ISO-8859-15" + done + for l in la_LN; do + echo "$l.ISO8859-1 ISO-8859-1" + echo "$l.ISO8859-15 ISO-8859-15" + done + for l in cs_CZ hr_HR hu_HU la_LN pl_PL sl_SI; do + echo "$l.ISO8859-2 ISO-8859-2" + done + for l in la_LN lt_LT; do + echo "$l.ISO8859-4 ISO-8859-4" + done + for l in ru_RU; do + echo "$l.KOI8-R KOI8-R" + echo "$l.ISO8859-5 ISO-8859-5" + echo "$l.CP866 CP866" + done + for l in bg_BG; do + echo "$l.CP1251 CP1251" + done + echo "uk_UA.KOI8-U KOI8-U" + echo "zh_TW.BIG5 BIG5" + echo "zh_TW.Big5 BIG5" + echo "zh_CN.EUC GB2312" + echo "ja_JP.EUC EUC-JP" + echo "ja_JP.SJIS SHIFT_JIS" + echo "ko_KR.EUC EUC-KR" + ;; + darwin*) + # Darwin 7.5 has nl_langinfo(CODESET), but it is useless: + # - It returns the empty string when LANG is set to a locale of the + # form ll_CC, although ll_CC/LC_CTYPE is a symlink to an UTF-8 + # LC_CTYPE file. + # - The environment variables LANG, LC_CTYPE, LC_ALL are not set by + # the system; nl_langinfo(CODESET) returns "US-ASCII" in this case. + # - The documentation says: + # "... all code that calls BSD system routines should ensure + # that the const *char parameters of these routines are in UTF-8 + # encoding. All BSD system functions expect their string + # parameters to be in UTF-8 encoding and nothing else." + # It also says + # "An additional caveat is that string parameters for files, + # paths, and other file-system entities must be in canonical + # UTF-8. In a canonical UTF-8 Unicode string, all decomposable + # characters are decomposed ..." + # but this is not true: You can pass non-decomposed UTF-8 strings + # to file system functions, and it is the OS which will convert + # them to decomposed UTF-8 before accessing the file system. + # - The Apple Terminal application displays UTF-8 by default. + # - However, other applications are free to use different encodings: + # - xterm uses ISO-8859-1 by default. + # - TextEdit uses MacRoman by default. + # We prefer UTF-8 over decomposed UTF-8-MAC because one should + # minimize the use of decomposed Unicode. Unfortunately, through the + # Darwin file system, decomposed UTF-8 strings are leaked into user + # space nevertheless. + echo "* UTF-8" + ;; + beos*) + # BeOS has a single locale, and it has UTF-8 encoding. + echo "* UTF-8" + ;; + msdosdjgpp*) + # DJGPP 2.03 doesn't have nl_langinfo(CODESET); therefore + # localcharset.c falls back to using the full locale name + # from the environment variables. + echo "#" + echo "# The encodings given here may not all be correct." + echo "# If you find that the encoding given for your language and" + echo "# country is not the one your DOS machine actually uses, just" + echo "# correct it in this file, and send a mail to" + echo "# Juan Manuel Guerrero " + echo "# and Bruno Haible ." + echo "#" + echo "C ASCII" + # ISO-8859-1 languages + echo "ca CP850" + echo "ca_ES CP850" + echo "da CP865" # not CP850 ?? + echo "da_DK CP865" # not CP850 ?? + echo "de CP850" + echo "de_AT CP850" + echo "de_CH CP850" + echo "de_DE CP850" + echo "en CP850" + echo "en_AU CP850" # not CP437 ?? + echo "en_CA CP850" + echo "en_GB CP850" + echo "en_NZ CP437" + echo "en_US CP437" + echo "en_ZA CP850" # not CP437 ?? + echo "es CP850" + echo "es_AR CP850" + echo "es_BO CP850" + echo "es_CL CP850" + echo "es_CO CP850" + echo "es_CR CP850" + echo "es_CU CP850" + echo "es_DO CP850" + echo "es_EC CP850" + echo "es_ES CP850" + echo "es_GT CP850" + echo "es_HN CP850" + echo "es_MX CP850" + echo "es_NI CP850" + echo "es_PA CP850" + echo "es_PY CP850" + echo "es_PE CP850" + echo "es_SV CP850" + echo "es_UY CP850" + echo "es_VE CP850" + echo "et CP850" + echo "et_EE CP850" + echo "eu CP850" + echo "eu_ES CP850" + echo "fi CP850" + echo "fi_FI CP850" + echo "fr CP850" + echo "fr_BE CP850" + echo "fr_CA CP850" + echo "fr_CH CP850" + echo "fr_FR CP850" + echo "ga CP850" + echo "ga_IE CP850" + echo "gd CP850" + echo "gd_GB CP850" + echo "gl CP850" + echo "gl_ES CP850" + echo "id CP850" # not CP437 ?? + echo "id_ID CP850" # not CP437 ?? + echo "is CP861" # not CP850 ?? + echo "is_IS CP861" # not CP850 ?? + echo "it CP850" + echo "it_CH CP850" + echo "it_IT CP850" + echo "lt CP775" + echo "lt_LT CP775" + echo "lv CP775" + echo "lv_LV CP775" + echo "nb CP865" # not CP850 ?? + echo "nb_NO CP865" # not CP850 ?? + echo "nl CP850" + echo "nl_BE CP850" + echo "nl_NL CP850" + echo "nn CP865" # not CP850 ?? + echo "nn_NO CP865" # not CP850 ?? + echo "no CP865" # not CP850 ?? + echo "no_NO CP865" # not CP850 ?? + echo "pt CP850" + echo "pt_BR CP850" + echo "pt_PT CP850" + echo "sv CP850" + echo "sv_SE CP850" + # ISO-8859-2 languages + echo "cs CP852" + echo "cs_CZ CP852" + echo "hr CP852" + echo "hr_HR CP852" + echo "hu CP852" + echo "hu_HU CP852" + echo "pl CP852" + echo "pl_PL CP852" + echo "ro CP852" + echo "ro_RO CP852" + echo "sk CP852" + echo "sk_SK CP852" + echo "sl CP852" + echo "sl_SI CP852" + echo "sq CP852" + echo "sq_AL CP852" + echo "sr CP852" # CP852 or CP866 or CP855 ?? + echo "sr_CS CP852" # CP852 or CP866 or CP855 ?? + echo "sr_YU CP852" # CP852 or CP866 or CP855 ?? + # ISO-8859-3 languages + echo "mt CP850" + echo "mt_MT CP850" + # ISO-8859-5 languages + echo "be CP866" + echo "be_BE CP866" + echo "bg CP866" # not CP855 ?? + echo "bg_BG CP866" # not CP855 ?? + echo "mk CP866" # not CP855 ?? + echo "mk_MK CP866" # not CP855 ?? + echo "ru CP866" + echo "ru_RU CP866" + echo "uk CP1125" + echo "uk_UA CP1125" + # ISO-8859-6 languages + echo "ar CP864" + echo "ar_AE CP864" + echo "ar_DZ CP864" + echo "ar_EG CP864" + echo "ar_IQ CP864" + echo "ar_IR CP864" + echo "ar_JO CP864" + echo "ar_KW CP864" + echo "ar_MA CP864" + echo "ar_OM CP864" + echo "ar_QA CP864" + echo "ar_SA CP864" + echo "ar_SY CP864" + # ISO-8859-7 languages + echo "el CP869" + echo "el_GR CP869" + # ISO-8859-8 languages + echo "he CP862" + echo "he_IL CP862" + # ISO-8859-9 languages + echo "tr CP857" + echo "tr_TR CP857" + # Japanese + echo "ja CP932" + echo "ja_JP CP932" + # Chinese + echo "zh_CN GBK" + echo "zh_TW CP950" # not CP938 ?? + # Korean + echo "kr CP949" # not CP934 ?? + echo "kr_KR CP949" # not CP934 ?? + # Thai + echo "th CP874" + echo "th_TH CP874" + # Other + echo "eo CP850" + echo "eo_EO CP850" + ;; +esac diff --git a/etc/wyatt8740/intl/dcgettext.c b/etc/wyatt8740/intl/dcgettext.c new file mode 100644 index 0000000..c2a63f0 --- /dev/null +++ b/etc/wyatt8740/intl/dcgettext.c @@ -0,0 +1,56 @@ +/* Implementation of the dcgettext(3) function. + Copyright (C) 1995-1999, 2000-2003 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DCGETTEXT __dcgettext +# define DCIGETTEXT __dcigettext +#else +# define DCGETTEXT libintl_dcgettext +# define DCIGETTEXT libintl_dcigettext +#endif + +/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY + locale. */ +char * +DCGETTEXT (const char *domainname, const char *msgid, int category) +{ + return DCIGETTEXT (domainname, msgid, NULL, 0, 0, category); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +INTDEF(__dcgettext) +weak_alias (__dcgettext, dcgettext); +#endif diff --git a/etc/wyatt8740/intl/dcigettext.c b/etc/wyatt8740/intl/dcigettext.c new file mode 100644 index 0000000..623e51d --- /dev/null +++ b/etc/wyatt8740/intl/dcigettext.c @@ -0,0 +1,1689 @@ +/* Implementation of the internal dcigettext function. + Copyright (C) 1995-1999, 2000-2007 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Tell glibc's to provide a prototype for mempcpy(). + This must come before because may include + , and once has been included, it's too late. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +/* NL_LOCALE_NAME does not work in glibc-2.4. Ignore it. */ +#undef HAVE_NL_LOCALE_NAME + +#include + +#ifdef __GNUC__ +# define alloca __builtin_alloca +# define HAVE_ALLOCA 1 +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# if defined HAVE_ALLOCA_H || defined _LIBC +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca +char *alloca (); +# endif +# endif +# endif +# endif +#endif + +#include +#ifndef errno +extern int errno; +#endif +#ifndef __set_errno +# define __set_errno(val) errno = (val) +#endif + +#include +#include +#include + +#if defined HAVE_UNISTD_H || defined _LIBC +# include +#endif + +#include + +#ifdef _LIBC + /* Guess whether integer division by zero raises signal SIGFPE. + Set to 1 only if you know for sure. In case of doubt, set to 0. */ +# if defined __alpha__ || defined __arm__ || defined __i386__ \ + || defined __m68k__ || defined __s390__ +# define INTDIV0_RAISES_SIGFPE 1 +# else +# define INTDIV0_RAISES_SIGFPE 0 +# endif +#endif +#if !INTDIV0_RAISES_SIGFPE +# include +#endif + +#if defined HAVE_SYS_PARAM_H || defined _LIBC +# include +#endif + +#if !defined _LIBC +# if HAVE_NL_LOCALE_NAME +# include +# endif +# include "localcharset.h" +#endif + +#include "gettextP.h" +#include "plural-exp.h" +#ifdef _LIBC +# include +#else +# ifdef IN_LIBGLOCALE +# include +# endif +# include "libgnuintl.h" +#endif +#include "hash-string.h" + +/* Handle multi-threaded applications. */ +#ifdef _LIBC +# include +# define gl_rwlock_define_initialized __libc_rwlock_define_initialized +# define gl_rwlock_rdlock __libc_rwlock_rdlock +# define gl_rwlock_wrlock __libc_rwlock_wrlock +# define gl_rwlock_unlock __libc_rwlock_unlock +#else +# include "lock.h" +#endif + +/* Alignment of types. */ +#if defined __GNUC__ && __GNUC__ >= 2 +# define alignof(TYPE) __alignof__ (TYPE) +#else +# define alignof(TYPE) \ + ((int) &((struct { char dummy1; TYPE dummy2; } *) 0)->dummy2) +#endif + +/* Some compilers, like SunOS4 cc, don't have offsetof in . */ +#ifndef offsetof +# define offsetof(type,ident) ((size_t)&(((type*)0)->ident)) +#endif + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ANSI C functions. This is required by the standard + because some ANSI C functions will require linking with this object + file and the name space must not be polluted. */ +# define getcwd __getcwd +# ifndef stpcpy +# define stpcpy __stpcpy +# endif +# define tfind __tfind +#else +# if !defined HAVE_GETCWD +char *getwd (); +# define getcwd(buf, max) getwd (buf) +# else +# if VMS +# define getcwd(buf, max) (getcwd) (buf, max, 0) +# else +char *getcwd (); +# endif +# endif +# ifndef HAVE_STPCPY +static char *stpcpy (char *dest, const char *src); +# endif +# ifndef HAVE_MEMPCPY +static void *mempcpy (void *dest, const void *src, size_t n); +# endif +#endif + +/* Use a replacement if the system does not provide the `tsearch' function + family. */ +#if HAVE_TSEARCH || defined _LIBC +# include +#else +# define tsearch libintl_tsearch +# define tfind libintl_tfind +# define tdelete libintl_tdelete +# define twalk libintl_twalk +# include "tsearch.h" +#endif + +#ifdef _LIBC +# define tsearch __tsearch +#endif + +/* Amount to increase buffer size by in each try. */ +#define PATH_INCR 32 + +/* The following is from pathmax.h. */ +/* Non-POSIX BSD systems might have gcc's limits.h, which doesn't define + PATH_MAX but might cause redefinition warnings when sys/param.h is + later included (as on MORE/BSD 4.3). */ +#if defined _POSIX_VERSION || (defined HAVE_LIMITS_H && !defined __GNUC__) +# include +#endif + +#ifndef _POSIX_PATH_MAX +# define _POSIX_PATH_MAX 255 +#endif + +#if !defined PATH_MAX && defined _PC_PATH_MAX +# define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 : pathconf ("/", _PC_PATH_MAX)) +#endif + +/* Don't include sys/param.h if it already has been. */ +#if defined HAVE_SYS_PARAM_H && !defined PATH_MAX && !defined MAXPATHLEN +# include +#endif + +#if !defined PATH_MAX && defined MAXPATHLEN +# define PATH_MAX MAXPATHLEN +#endif + +#ifndef PATH_MAX +# define PATH_MAX _POSIX_PATH_MAX +#endif + +/* Pathname support. + ISSLASH(C) tests whether C is a directory separator character. + IS_ABSOLUTE_PATH(P) tests whether P is an absolute path. If it is not, + it may be concatenated to a directory pathname. + IS_PATH_WITH_DIR(P) tests whether P contains a directory specification. + */ +#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__ + /* Win32, Cygwin, OS/2, DOS */ +# define ISSLASH(C) ((C) == '/' || (C) == '\\') +# define HAS_DEVICE(P) \ + ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \ + && (P)[1] == ':') +# define IS_ABSOLUTE_PATH(P) (ISSLASH ((P)[0]) || HAS_DEVICE (P)) +# define IS_PATH_WITH_DIR(P) \ + (strchr (P, '/') != NULL || strchr (P, '\\') != NULL || HAS_DEVICE (P)) +#else + /* Unix */ +# define ISSLASH(C) ((C) == '/') +# define IS_ABSOLUTE_PATH(P) ISSLASH ((P)[0]) +# define IS_PATH_WITH_DIR(P) (strchr (P, '/') != NULL) +#endif + +/* Whether to support different locales in different threads. */ +#if defined _LIBC || HAVE_NL_LOCALE_NAME || (HAVE_STRUCT___LOCALE_STRUCT___NAMES && defined USE_IN_GETTEXT_TESTS) || defined IN_LIBGLOCALE +# define HAVE_PER_THREAD_LOCALE +#endif + +/* This is the type used for the search tree where known translations + are stored. */ +struct known_translation_t +{ + /* Domain in which to search. */ + const char *domainname; + + /* The category. */ + int category; + +#ifdef HAVE_PER_THREAD_LOCALE + /* Name of the relevant locale category, or "" for the global locale. */ + const char *localename; +#endif + +#ifdef IN_LIBGLOCALE + /* The character encoding. */ + const char *encoding; +#endif + + /* State of the catalog counter at the point the string was found. */ + int counter; + + /* Catalog where the string was found. */ + struct loaded_l10nfile *domain; + + /* And finally the translation. */ + const char *translation; + size_t translation_length; + + /* Pointer to the string in question. */ + char msgid[ZERO]; +}; + +gl_rwlock_define_initialized (static, tree_lock) + +/* Root of the search tree with known translations. */ +static void *root; + +/* Function to compare two entries in the table of known translations. */ +static int +transcmp (const void *p1, const void *p2) +{ + const struct known_translation_t *s1; + const struct known_translation_t *s2; + int result; + + s1 = (const struct known_translation_t *) p1; + s2 = (const struct known_translation_t *) p2; + + result = strcmp (s1->msgid, s2->msgid); + if (result == 0) + { + result = strcmp (s1->domainname, s2->domainname); + if (result == 0) + { +#ifdef HAVE_PER_THREAD_LOCALE + result = strcmp (s1->localename, s2->localename); + if (result == 0) +#endif + { +#ifdef IN_LIBGLOCALE + result = strcmp (s1->encoding, s2->encoding); + if (result == 0) +#endif + /* We compare the category last (though this is the cheapest + operation) since it is hopefully always the same (namely + LC_MESSAGES). */ + result = s1->category - s2->category; + } + } + } + + return result; +} + +/* Name of the default domain used for gettext(3) prior any call to + textdomain(3). The default value for this is "messages". */ +const char _nl_default_default_domain[] attribute_hidden = "messages"; + +#ifndef IN_LIBGLOCALE +/* Value used as the default domain for gettext(3). */ +const char *_nl_current_default_domain attribute_hidden + = _nl_default_default_domain; +#endif + +/* Contains the default location of the message catalogs. */ +#if defined __EMX__ +extern const char _nl_default_dirname[]; +#else +# ifdef _LIBC +extern const char _nl_default_dirname[]; +libc_hidden_proto (_nl_default_dirname) +# endif +const char _nl_default_dirname[] = LOCALEDIR; +# ifdef _LIBC +libc_hidden_data_def (_nl_default_dirname) +# endif +#endif + +#ifndef IN_LIBGLOCALE +/* List with bindings of specific domains created by bindtextdomain() + calls. */ +struct binding *_nl_domain_bindings; +#endif + +/* Prototypes for local functions. */ +static char *plural_lookup (struct loaded_l10nfile *domain, + unsigned long int n, + const char *translation, size_t translation_len) + internal_function; + +#ifdef IN_LIBGLOCALE +static const char *guess_category_value (int category, + const char *categoryname, + const char *localename) + internal_function; +#else +static const char *guess_category_value (int category, + const char *categoryname) + internal_function; +#endif + +#ifdef _LIBC +# include "../locale/localeinfo.h" +# define category_to_name(category) \ + _nl_category_names.str + _nl_category_name_idxs[category] +#else +static const char *category_to_name (int category) internal_function; +#endif +#if (defined _LIBC || HAVE_ICONV) && !defined IN_LIBGLOCALE +static const char *get_output_charset (struct binding *domainbinding) + internal_function; +#endif + + +/* For those loosing systems which don't have `alloca' we have to add + some additional code emulating it. */ +#ifdef HAVE_ALLOCA +/* Nothing has to be done. */ +# define freea(p) /* nothing */ +# define ADD_BLOCK(list, address) /* nothing */ +# define FREE_BLOCKS(list) /* nothing */ +#else +struct block_list +{ + void *address; + struct block_list *next; +}; +# define ADD_BLOCK(list, addr) \ + do { \ + struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \ + /* If we cannot get a free block we cannot add the new element to \ + the list. */ \ + if (newp != NULL) { \ + newp->address = (addr); \ + newp->next = (list); \ + (list) = newp; \ + } \ + } while (0) +# define FREE_BLOCKS(list) \ + do { \ + while (list != NULL) { \ + struct block_list *old = list; \ + list = list->next; \ + free (old->address); \ + free (old); \ + } \ + } while (0) +# undef alloca +# define alloca(size) (malloc (size)) +# define freea(p) free (p) +#endif /* have alloca */ + + +#ifdef _LIBC +/* List of blocks allocated for translations. */ +typedef struct transmem_list +{ + struct transmem_list *next; + char data[ZERO]; +} transmem_block_t; +static struct transmem_list *transmem_list; +#else +typedef unsigned char transmem_block_t; +#endif + + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DCIGETTEXT __dcigettext +#else +# define DCIGETTEXT libintl_dcigettext +#endif + +/* Lock variable to protect the global data in the gettext implementation. */ +gl_rwlock_define_initialized (, _nl_state_lock attribute_hidden) + +/* Checking whether the binaries runs SUID must be done and glibc provides + easier methods therefore we make a difference here. */ +#ifdef _LIBC +# define ENABLE_SECURE __libc_enable_secure +# define DETERMINE_SECURE +#else +# ifndef HAVE_GETUID +# define getuid() 0 +# endif +# ifndef HAVE_GETGID +# define getgid() 0 +# endif +# ifndef HAVE_GETEUID +# define geteuid() getuid() +# endif +# ifndef HAVE_GETEGID +# define getegid() getgid() +# endif +static int enable_secure; +# define ENABLE_SECURE (enable_secure == 1) +# define DETERMINE_SECURE \ + if (enable_secure == 0) \ + { \ + if (getuid () != geteuid () || getgid () != getegid ()) \ + enable_secure = 1; \ + else \ + enable_secure = -1; \ + } +#endif + +/* Get the function to evaluate the plural expression. */ +#include "eval-plural.h" + +/* Look up MSGID in the DOMAINNAME message catalog for the current + CATEGORY locale and, if PLURAL is nonzero, search over string + depending on the plural form determined by N. */ +#ifdef IN_LIBGLOCALE +char * +gl_dcigettext (const char *domainname, + const char *msgid1, const char *msgid2, + int plural, unsigned long int n, + int category, + const char *localename, const char *encoding) +#else +char * +DCIGETTEXT (const char *domainname, const char *msgid1, const char *msgid2, + int plural, unsigned long int n, int category) +#endif +{ +#ifndef HAVE_ALLOCA + struct block_list *block_list = NULL; +#endif + struct loaded_l10nfile *domain; + struct binding *binding; + const char *categoryname; + const char *categoryvalue; + const char *dirname; + char *xdomainname; + char *single_locale; + char *retval; + size_t retlen; + int saved_errno; + struct known_translation_t *search; + struct known_translation_t **foundp = NULL; + size_t msgid_len; +#if defined HAVE_PER_THREAD_LOCALE && !defined IN_LIBGLOCALE + const char *localename; +#endif + size_t domainname_len; + + /* If no real MSGID is given return NULL. */ + if (msgid1 == NULL) + return NULL; + +#ifdef _LIBC + if (category < 0 || category >= __LC_LAST || category == LC_ALL) + /* Bogus. */ + return (plural == 0 + ? (char *) msgid1 + /* Use the Germanic plural rule. */ + : n == 1 ? (char *) msgid1 : (char *) msgid2); +#endif + + /* Preserve the `errno' value. */ + saved_errno = errno; + + gl_rwlock_rdlock (_nl_state_lock); + + /* If DOMAINNAME is NULL, we are interested in the default domain. If + CATEGORY is not LC_MESSAGES this might not make much sense but the + definition left this undefined. */ + if (domainname == NULL) + domainname = _nl_current_default_domain; + + /* OS/2 specific: backward compatibility with older libintl versions */ +#ifdef LC_MESSAGES_COMPAT + if (category == LC_MESSAGES_COMPAT) + category = LC_MESSAGES; +#endif + + msgid_len = strlen (msgid1) + 1; + + /* Try to find the translation among those which we found at + some time. */ + search = (struct known_translation_t *) + alloca (offsetof (struct known_translation_t, msgid) + msgid_len); + memcpy (search->msgid, msgid1, msgid_len); + search->domainname = domainname; + search->category = category; +#ifdef HAVE_PER_THREAD_LOCALE +# ifndef IN_LIBGLOCALE +# ifdef _LIBC + localename = __current_locale_name (category); +# else +# if HAVE_NL_LOCALE_NAME + /* NL_LOCALE_NAME is public glibc API introduced in glibc-2.4. */ + localename = nl_langinfo (NL_LOCALE_NAME (category)); +# else +# if HAVE_STRUCT___LOCALE_STRUCT___NAMES && defined USE_IN_GETTEXT_TESTS + /* The __names field is not public glibc API and must therefore not be used + in code that is installed in public locations. */ + { + locale_t thread_locale = uselocale (NULL); + if (thread_locale != LC_GLOBAL_LOCALE) + localename = thread_locale->__names[category]; + else + localename = ""; + } +# endif +# endif +# endif +# endif + search->localename = localename; +# ifdef IN_LIBGLOCALE + search->encoding = encoding; +# endif + + /* Since tfind/tsearch manage a balanced tree, concurrent tfind and + tsearch calls can be fatal. */ + gl_rwlock_rdlock (tree_lock); + + foundp = (struct known_translation_t **) tfind (search, &root, transcmp); + + gl_rwlock_unlock (tree_lock); + + freea (search); + if (foundp != NULL && (*foundp)->counter == _nl_msg_cat_cntr) + { + /* Now deal with plural. */ + if (plural) + retval = plural_lookup ((*foundp)->domain, n, (*foundp)->translation, + (*foundp)->translation_length); + else + retval = (char *) (*foundp)->translation; + + gl_rwlock_unlock (_nl_state_lock); + __set_errno (saved_errno); + return retval; + } +#endif + + /* See whether this is a SUID binary or not. */ + DETERMINE_SECURE; + + /* First find matching binding. */ +#ifdef IN_LIBGLOCALE + /* We can use a trivial binding, since _nl_find_msg will ignore it anyway, + and _nl_load_domain and _nl_find_domain just pass it through. */ + binding = NULL; + dirname = bindtextdomain (domainname, NULL); +#else + for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next) + { + int compare = strcmp (domainname, binding->domainname); + if (compare == 0) + /* We found it! */ + break; + if (compare < 0) + { + /* It is not in the list. */ + binding = NULL; + break; + } + } + + if (binding == NULL) + dirname = _nl_default_dirname; + else + { + dirname = binding->dirname; +#endif + if (!IS_ABSOLUTE_PATH (dirname)) + { + /* We have a relative path. Make it absolute now. */ + size_t dirname_len = strlen (dirname) + 1; + size_t path_max; + char *resolved_dirname; + char *ret; + + path_max = (unsigned int) PATH_MAX; + path_max += 2; /* The getcwd docs say to do this. */ + + for (;;) + { + resolved_dirname = (char *) alloca (path_max + dirname_len); + ADD_BLOCK (block_list, tmp_dirname); + + __set_errno (0); + ret = getcwd (resolved_dirname, path_max); + if (ret != NULL || errno != ERANGE) + break; + + path_max += path_max / 2; + path_max += PATH_INCR; + } + + if (ret == NULL) + /* We cannot get the current working directory. Don't signal an + error but simply return the default string. */ + goto return_untranslated; + + stpcpy (stpcpy (strchr (resolved_dirname, '\0'), "/"), dirname); + dirname = resolved_dirname; + } +#ifndef IN_LIBGLOCALE + } +#endif + + /* Now determine the symbolic name of CATEGORY and its value. */ + categoryname = category_to_name (category); +#ifdef IN_LIBGLOCALE + categoryvalue = guess_category_value (category, categoryname, localename); +#else + categoryvalue = guess_category_value (category, categoryname); +#endif + + domainname_len = strlen (domainname); + xdomainname = (char *) alloca (strlen (categoryname) + + domainname_len + 5); + ADD_BLOCK (block_list, xdomainname); + + stpcpy ((char *) mempcpy (stpcpy (stpcpy (xdomainname, categoryname), "/"), + domainname, domainname_len), + ".mo"); + + /* Creating working area. */ + single_locale = (char *) alloca (strlen (categoryvalue) + 1); + ADD_BLOCK (block_list, single_locale); + + + /* Search for the given string. This is a loop because we perhaps + got an ordered list of languages to consider for the translation. */ + while (1) + { + /* Make CATEGORYVALUE point to the next element of the list. */ + while (categoryvalue[0] != '\0' && categoryvalue[0] == ':') + ++categoryvalue; + if (categoryvalue[0] == '\0') + { + /* The whole contents of CATEGORYVALUE has been searched but + no valid entry has been found. We solve this situation + by implicitly appending a "C" entry, i.e. no translation + will take place. */ + single_locale[0] = 'C'; + single_locale[1] = '\0'; + } + else + { + char *cp = single_locale; + while (categoryvalue[0] != '\0' && categoryvalue[0] != ':') + *cp++ = *categoryvalue++; + *cp = '\0'; + + /* When this is a SUID binary we must not allow accessing files + outside the dedicated directories. */ + if (ENABLE_SECURE && IS_PATH_WITH_DIR (single_locale)) + /* Ingore this entry. */ + continue; + } + + /* If the current locale value is C (or POSIX) we don't load a + domain. Return the MSGID. */ + if (strcmp (single_locale, "C") == 0 + || strcmp (single_locale, "POSIX") == 0) + break; + + /* Find structure describing the message catalog matching the + DOMAINNAME and CATEGORY. */ + domain = _nl_find_domain (dirname, single_locale, xdomainname, binding); + + if (domain != NULL) + { +#if defined IN_LIBGLOCALE + retval = _nl_find_msg (domain, binding, encoding, msgid1, &retlen); +#else + retval = _nl_find_msg (domain, binding, msgid1, 1, &retlen); +#endif + + if (retval == NULL) + { + int cnt; + + for (cnt = 0; domain->successor[cnt] != NULL; ++cnt) + { +#if defined IN_LIBGLOCALE + retval = _nl_find_msg (domain->successor[cnt], binding, + encoding, msgid1, &retlen); +#else + retval = _nl_find_msg (domain->successor[cnt], binding, + msgid1, 1, &retlen); +#endif + + if (retval != NULL) + { + domain = domain->successor[cnt]; + break; + } + } + } + + /* Returning -1 means that some resource problem exists + (likely memory) and that the strings could not be + converted. Return the original strings. */ + if (__builtin_expect (retval == (char *) -1, 0)) + break; + + if (retval != NULL) + { + /* Found the translation of MSGID1 in domain DOMAIN: + starting at RETVAL, RETLEN bytes. */ + FREE_BLOCKS (block_list); + if (foundp == NULL) + { + /* Create a new entry and add it to the search tree. */ + size_t size; + struct known_translation_t *newp; + + size = offsetof (struct known_translation_t, msgid) + + msgid_len + domainname_len + 1; +#ifdef HAVE_PER_THREAD_LOCALE + size += strlen (localename) + 1; +#endif + newp = (struct known_translation_t *) malloc (size); + if (newp != NULL) + { + char *new_domainname; +#ifdef HAVE_PER_THREAD_LOCALE + char *new_localename; +#endif + + new_domainname = + (char *) mempcpy (newp->msgid, msgid1, msgid_len); + memcpy (new_domainname, domainname, domainname_len + 1); +#ifdef HAVE_PER_THREAD_LOCALE + new_localename = new_domainname + domainname_len + 1; + strcpy (new_localename, localename); +#endif + newp->domainname = new_domainname; + newp->category = category; +#ifdef HAVE_PER_THREAD_LOCALE + newp->localename = new_localename; +#endif +#ifdef IN_LIBGLOCALE + newp->encoding = encoding; +#endif + newp->counter = _nl_msg_cat_cntr; + newp->domain = domain; + newp->translation = retval; + newp->translation_length = retlen; + + gl_rwlock_wrlock (tree_lock); + + /* Insert the entry in the search tree. */ + foundp = (struct known_translation_t **) + tsearch (newp, &root, transcmp); + + gl_rwlock_unlock (tree_lock); + + if (foundp == NULL + || __builtin_expect (*foundp != newp, 0)) + /* The insert failed. */ + free (newp); + } + } + else + { + /* We can update the existing entry. */ + (*foundp)->counter = _nl_msg_cat_cntr; + (*foundp)->domain = domain; + (*foundp)->translation = retval; + (*foundp)->translation_length = retlen; + } + + __set_errno (saved_errno); + + /* Now deal with plural. */ + if (plural) + retval = plural_lookup (domain, n, retval, retlen); + + gl_rwlock_unlock (_nl_state_lock); + return retval; + } + } + } + + return_untranslated: + /* Return the untranslated MSGID. */ + FREE_BLOCKS (block_list); + gl_rwlock_unlock (_nl_state_lock); +#ifndef _LIBC + if (!ENABLE_SECURE) + { + extern void _nl_log_untranslated (const char *logfilename, + const char *domainname, + const char *msgid1, const char *msgid2, + int plural); + const char *logfilename = getenv ("GETTEXT_LOG_UNTRANSLATED"); + + if (logfilename != NULL && logfilename[0] != '\0') + _nl_log_untranslated (logfilename, domainname, msgid1, msgid2, plural); + } +#endif + __set_errno (saved_errno); + return (plural == 0 + ? (char *) msgid1 + /* Use the Germanic plural rule. */ + : n == 1 ? (char *) msgid1 : (char *) msgid2); +} + + +/* Look up the translation of msgid within DOMAIN_FILE and DOMAINBINDING. + Return it if found. Return NULL if not found or in case of a conversion + failure (problem in the particular message catalog). Return (char *) -1 + in case of a memory allocation failure during conversion (only if + ENCODING != NULL resp. CONVERT == true). */ +char * +internal_function +#ifdef IN_LIBGLOCALE +_nl_find_msg (struct loaded_l10nfile *domain_file, + struct binding *domainbinding, const char *encoding, + const char *msgid, + size_t *lengthp) +#else +_nl_find_msg (struct loaded_l10nfile *domain_file, + struct binding *domainbinding, + const char *msgid, int convert, + size_t *lengthp) +#endif +{ + struct loaded_domain *domain; + nls_uint32 nstrings; + size_t act; + char *result; + size_t resultlen; + + if (domain_file->decided <= 0) + _nl_load_domain (domain_file, domainbinding); + + if (domain_file->data == NULL) + return NULL; + + domain = (struct loaded_domain *) domain_file->data; + + nstrings = domain->nstrings; + + /* Locate the MSGID and its translation. */ + if (domain->hash_tab != NULL) + { + /* Use the hashing table. */ + nls_uint32 len = strlen (msgid); + nls_uint32 hash_val = __hash_string (msgid); + nls_uint32 idx = hash_val % domain->hash_size; + nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2)); + + while (1) + { + nls_uint32 nstr = + W (domain->must_swap_hash_tab, domain->hash_tab[idx]); + + if (nstr == 0) + /* Hash table entry is empty. */ + return NULL; + + nstr--; + + /* Compare msgid with the original string at index nstr. + We compare the lengths with >=, not ==, because plural entries + are represented by strings with an embedded NUL. */ + if (nstr < nstrings + ? W (domain->must_swap, domain->orig_tab[nstr].length) >= len + && (strcmp (msgid, + domain->data + W (domain->must_swap, + domain->orig_tab[nstr].offset)) + == 0) + : domain->orig_sysdep_tab[nstr - nstrings].length > len + && (strcmp (msgid, + domain->orig_sysdep_tab[nstr - nstrings].pointer) + == 0)) + { + act = nstr; + goto found; + } + + if (idx >= domain->hash_size - incr) + idx -= domain->hash_size - incr; + else + idx += incr; + } + /* NOTREACHED */ + } + else + { + /* Try the default method: binary search in the sorted array of + messages. */ + size_t top, bottom; + + bottom = 0; + top = nstrings; + while (bottom < top) + { + int cmp_val; + + act = (bottom + top) / 2; + cmp_val = strcmp (msgid, (domain->data + + W (domain->must_swap, + domain->orig_tab[act].offset))); + if (cmp_val < 0) + top = act; + else if (cmp_val > 0) + bottom = act + 1; + else + goto found; + } + /* No translation was found. */ + return NULL; + } + + found: + /* The translation was found at index ACT. If we have to convert the + string to use a different character set, this is the time. */ + if (act < nstrings) + { + result = (char *) + (domain->data + W (domain->must_swap, domain->trans_tab[act].offset)); + resultlen = W (domain->must_swap, domain->trans_tab[act].length) + 1; + } + else + { + result = (char *) domain->trans_sysdep_tab[act - nstrings].pointer; + resultlen = domain->trans_sysdep_tab[act - nstrings].length; + } + +#if defined _LIBC || HAVE_ICONV +# ifdef IN_LIBGLOCALE + if (encoding != NULL) +# else + if (convert) +# endif + { + /* We are supposed to do a conversion. */ +# ifndef IN_LIBGLOCALE + const char *encoding = get_output_charset (domainbinding); +# endif + size_t nconversions; + struct converted_domain *convd; + size_t i; + + /* Protect against reallocation of the table. */ + gl_rwlock_rdlock (domain->conversions_lock); + + /* Search whether a table with converted translations for this + encoding has already been allocated. */ + nconversions = domain->nconversions; + convd = NULL; + + for (i = nconversions; i > 0; ) + { + i--; + if (strcmp (domain->conversions[i].encoding, encoding) == 0) + { + convd = &domain->conversions[i]; + break; + } + } + + gl_rwlock_unlock (domain->conversions_lock); + + if (convd == NULL) + { + /* We have to allocate a new conversions table. */ + gl_rwlock_wrlock (domain->conversions_lock); + + /* Maybe in the meantime somebody added the translation. + Recheck. */ + for (i = nconversions; i > 0; ) + { + i--; + if (strcmp (domain->conversions[i].encoding, encoding) == 0) + { + convd = &domain->conversions[i]; + goto found_convd; + } + } + + { + /* Allocate a table for the converted translations for this + encoding. */ + struct converted_domain *new_conversions = + (struct converted_domain *) + (domain->conversions != NULL + ? realloc (domain->conversions, + (nconversions + 1) * sizeof (struct converted_domain)) + : malloc ((nconversions + 1) * sizeof (struct converted_domain))); + + if (__builtin_expect (new_conversions == NULL, 0)) + { + /* Nothing we can do, no more memory. We cannot use the + translation because it might be encoded incorrectly. */ + unlock_fail: + gl_rwlock_unlock (domain->conversions_lock); + return (char *) -1; + } + + domain->conversions = new_conversions; + + /* Copy the 'encoding' string to permanent storage. */ + encoding = strdup (encoding); + if (__builtin_expect (encoding == NULL, 0)) + /* Nothing we can do, no more memory. We cannot use the + translation because it might be encoded incorrectly. */ + goto unlock_fail; + + convd = &new_conversions[nconversions]; + convd->encoding = encoding; + + /* Find out about the character set the file is encoded with. + This can be found (in textual form) in the entry "". If this + entry does not exist or if this does not contain the 'charset=' + information, we will assume the charset matches the one the + current locale and we don't have to perform any conversion. */ +# ifdef _LIBC + convd->conv = (__gconv_t) -1; +# else +# if HAVE_ICONV + convd->conv = (iconv_t) -1; +# endif +# endif + { + char *nullentry; + size_t nullentrylen; + + /* Get the header entry. This is a recursion, but it doesn't + reallocate domain->conversions because we pass + encoding = NULL or convert = 0, respectively. */ + nullentry = +# ifdef IN_LIBGLOCALE + _nl_find_msg (domain_file, domainbinding, NULL, "", + &nullentrylen); +# else + _nl_find_msg (domain_file, domainbinding, "", 0, &nullentrylen); +# endif + + if (nullentry != NULL) + { + const char *charsetstr; + + charsetstr = strstr (nullentry, "charset="); + if (charsetstr != NULL) + { + size_t len; + char *charset; + const char *outcharset; + + charsetstr += strlen ("charset="); + len = strcspn (charsetstr, " \t\n"); + + charset = (char *) alloca (len + 1); +# if defined _LIBC || HAVE_MEMPCPY + *((char *) mempcpy (charset, charsetstr, len)) = '\0'; +# else + memcpy (charset, charsetstr, len); + charset[len] = '\0'; +# endif + + outcharset = encoding; + +# ifdef _LIBC + /* We always want to use transliteration. */ + outcharset = norm_add_slashes (outcharset, "TRANSLIT"); + charset = norm_add_slashes (charset, ""); + int r = __gconv_open (outcharset, charset, &convd->conv, + GCONV_AVOID_NOCONV); + if (__builtin_expect (r != __GCONV_OK, 0)) + { + /* If the output encoding is the same there is + nothing to do. Otherwise do not use the + translation at all. */ + if (__builtin_expect (r != __GCONV_NULCONV, 1)) + { + gl_rwlock_unlock (domain->conversions_lock); + free ((char *) encoding); + return NULL; + } + + convd->conv = (__gconv_t) -1; + } +# else +# if HAVE_ICONV + /* When using GNU libc >= 2.2 or GNU libiconv >= 1.5, + we want to use transliteration. */ +# if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || __GLIBC__ > 2 \ + || _LIBICONV_VERSION >= 0x0105 + if (strchr (outcharset, '/') == NULL) + { + char *tmp; + + len = strlen (outcharset); + tmp = (char *) alloca (len + 10 + 1); + memcpy (tmp, outcharset, len); + memcpy (tmp + len, "//TRANSLIT", 10 + 1); + outcharset = tmp; + + convd->conv = iconv_open (outcharset, charset); + + freea (outcharset); + } + else +# endif + convd->conv = iconv_open (outcharset, charset); +# endif +# endif + + freea (charset); + } + } + } + convd->conv_tab = NULL; + /* Here domain->conversions is still == new_conversions. */ + domain->nconversions++; + } + + found_convd: + gl_rwlock_unlock (domain->conversions_lock); + } + + if ( +# ifdef _LIBC + convd->conv != (__gconv_t) -1 +# else +# if HAVE_ICONV + convd->conv != (iconv_t) -1 +# endif +# endif + ) + { + /* We are supposed to do a conversion. First allocate an + appropriate table with the same structure as the table + of translations in the file, where we can put the pointers + to the converted strings in. + There is a slight complication with plural entries. They + are represented by consecutive NUL terminated strings. We + handle this case by converting RESULTLEN bytes, including + NULs. */ + + if (convd->conv_tab == NULL + && ((convd->conv_tab = + (char **) calloc (nstrings + domain->n_sysdep_strings, + sizeof (char *))) + == NULL)) + /* Mark that we didn't succeed allocating a table. */ + convd->conv_tab = (char **) -1; + + if (__builtin_expect (convd->conv_tab == (char **) -1, 0)) + /* Nothing we can do, no more memory. We cannot use the + translation because it might be encoded incorrectly. */ + return (char *) -1; + + if (convd->conv_tab[act] == NULL) + { + /* We haven't used this string so far, so it is not + translated yet. Do this now. */ + /* We use a bit more efficient memory handling. + We allocate always larger blocks which get used over + time. This is faster than many small allocations. */ + __libc_lock_define_initialized (static, lock) +# define INITIAL_BLOCK_SIZE 4080 + static unsigned char *freemem; + static size_t freemem_size; + + const unsigned char *inbuf; + unsigned char *outbuf; + int malloc_count; +# ifndef _LIBC + transmem_block_t *transmem_list = NULL; +# endif + + __libc_lock_lock (lock); + + inbuf = (const unsigned char *) result; + outbuf = freemem + sizeof (size_t); + + malloc_count = 0; + while (1) + { + transmem_block_t *newmem; +# ifdef _LIBC + size_t non_reversible; + int res; + + if (freemem_size < sizeof (size_t)) + goto resize_freemem; + + res = __gconv (convd->conv, + &inbuf, inbuf + resultlen, + &outbuf, + outbuf + freemem_size - sizeof (size_t), + &non_reversible); + + if (res == __GCONV_OK || res == __GCONV_EMPTY_INPUT) + break; + + if (res != __GCONV_FULL_OUTPUT) + { + /* We should not use the translation at all, it + is incorrectly encoded. */ + __libc_lock_unlock (lock); + return NULL; + } + + inbuf = (const unsigned char *) result; +# else +# if HAVE_ICONV + const char *inptr = (const char *) inbuf; + size_t inleft = resultlen; + char *outptr = (char *) outbuf; + size_t outleft; + + if (freemem_size < sizeof (size_t)) + goto resize_freemem; + + outleft = freemem_size - sizeof (size_t); + if (iconv (convd->conv, + (ICONV_CONST char **) &inptr, &inleft, + &outptr, &outleft) + != (size_t) (-1)) + { + outbuf = (unsigned char *) outptr; + break; + } + if (errno != E2BIG) + { + __libc_lock_unlock (lock); + return NULL; + } +# endif +# endif + + resize_freemem: + /* We must allocate a new buffer or resize the old one. */ + if (malloc_count > 0) + { + ++malloc_count; + freemem_size = malloc_count * INITIAL_BLOCK_SIZE; + newmem = (transmem_block_t *) realloc (transmem_list, + freemem_size); +# ifdef _LIBC + if (newmem != NULL) + transmem_list = transmem_list->next; + else + { + struct transmem_list *old = transmem_list; + + transmem_list = transmem_list->next; + free (old); + } +# endif + } + else + { + malloc_count = 1; + freemem_size = INITIAL_BLOCK_SIZE; + newmem = (transmem_block_t *) malloc (freemem_size); + } + if (__builtin_expect (newmem == NULL, 0)) + { + freemem = NULL; + freemem_size = 0; + __libc_lock_unlock (lock); + return (char *) -1; + } + +# ifdef _LIBC + /* Add the block to the list of blocks we have to free + at some point. */ + newmem->next = transmem_list; + transmem_list = newmem; + + freemem = (unsigned char *) newmem->data; + freemem_size -= offsetof (struct transmem_list, data); +# else + transmem_list = newmem; + freemem = newmem; +# endif + + outbuf = freemem + sizeof (size_t); + } + + /* We have now in our buffer a converted string. Put this + into the table of conversions. */ + *(size_t *) freemem = outbuf - freemem - sizeof (size_t); + convd->conv_tab[act] = (char *) freemem; + /* Shrink freemem, but keep it aligned. */ + freemem_size -= outbuf - freemem; + freemem = outbuf; + freemem += freemem_size & (alignof (size_t) - 1); + freemem_size = freemem_size & ~ (alignof (size_t) - 1); + + __libc_lock_unlock (lock); + } + + /* Now convd->conv_tab[act] contains the translation of all + the plural variants. */ + result = convd->conv_tab[act] + sizeof (size_t); + resultlen = *(size_t *) convd->conv_tab[act]; + } + } + + /* The result string is converted. */ + +#endif /* _LIBC || HAVE_ICONV */ + + *lengthp = resultlen; + return result; +} + + +/* Look up a plural variant. */ +static char * +internal_function +plural_lookup (struct loaded_l10nfile *domain, unsigned long int n, + const char *translation, size_t translation_len) +{ + struct loaded_domain *domaindata = (struct loaded_domain *) domain->data; + unsigned long int index; + const char *p; + + index = plural_eval (domaindata->plural, n); + if (index >= domaindata->nplurals) + /* This should never happen. It means the plural expression and the + given maximum value do not match. */ + index = 0; + + /* Skip INDEX strings at TRANSLATION. */ + p = translation; + while (index-- > 0) + { +#ifdef _LIBC + p = __rawmemchr (p, '\0'); +#else + p = strchr (p, '\0'); +#endif + /* And skip over the NUL byte. */ + p++; + + if (p >= translation + translation_len) + /* This should never happen. It means the plural expression + evaluated to a value larger than the number of variants + available for MSGID1. */ + return (char *) translation; + } + return (char *) p; +} + +#ifndef _LIBC +/* Return string representation of locale CATEGORY. */ +static const char * +internal_function +category_to_name (int category) +{ + const char *retval; + + switch (category) + { +#ifdef LC_COLLATE + case LC_COLLATE: + retval = "LC_COLLATE"; + break; +#endif +#ifdef LC_CTYPE + case LC_CTYPE: + retval = "LC_CTYPE"; + break; +#endif +#ifdef LC_MONETARY + case LC_MONETARY: + retval = "LC_MONETARY"; + break; +#endif +#ifdef LC_NUMERIC + case LC_NUMERIC: + retval = "LC_NUMERIC"; + break; +#endif +#ifdef LC_TIME + case LC_TIME: + retval = "LC_TIME"; + break; +#endif +#ifdef LC_MESSAGES + case LC_MESSAGES: + retval = "LC_MESSAGES"; + break; +#endif +#ifdef LC_RESPONSE + case LC_RESPONSE: + retval = "LC_RESPONSE"; + break; +#endif +#ifdef LC_ALL + case LC_ALL: + /* This might not make sense but is perhaps better than any other + value. */ + retval = "LC_ALL"; + break; +#endif + default: + /* If you have a better idea for a default value let me know. */ + retval = "LC_XXX"; + } + + return retval; +} +#endif + +/* Guess value of current locale from value of the environment variables + or system-dependent defaults. */ +static const char * +internal_function +#ifdef IN_LIBGLOCALE +guess_category_value (int category, const char *categoryname, + const char *locale) + +#else +guess_category_value (int category, const char *categoryname) +#endif +{ + const char *language; +#ifndef IN_LIBGLOCALE + const char *locale; +# ifndef _LIBC + const char *language_default; + int locale_defaulted; +# endif +#endif + + /* We use the settings in the following order: + 1. The value of the environment variable 'LANGUAGE'. This is a GNU + extension. Its value can be a colon-separated list of locale names. + 2. The value of the environment variable 'LC_ALL', 'LC_xxx', or 'LANG'. + More precisely, the first among these that is set to a non-empty value. + This is how POSIX specifies it. The value is a single locale name. + 3. A system-dependent preference list of languages. Its value can be a + colon-separated list of locale names. + 4. A system-dependent default locale name. + This way: + - System-dependent settings can be overridden by environment variables. + - If the system provides both a list of languages and a default locale, + the former is used. */ + +#ifndef IN_LIBGLOCALE + /* Fetch the locale name, through the POSIX method of looking to `LC_ALL', + `LC_xxx', and `LANG'. On some systems this can be done by the + `setlocale' function itself. */ +# ifdef _LIBC + locale = __current_locale_name (category); +# else +# if HAVE_STRUCT___LOCALE_STRUCT___NAMES && defined USE_IN_GETTEXT_TESTS + /* The __names field is not public glibc API and must therefore not be used + in code that is installed in public locations. */ + locale_t thread_locale = uselocale (NULL); + if (thread_locale != LC_GLOBAL_LOCALE) + { + locale = thread_locale->__names[category]; + locale_defaulted = 0; + } + else +# endif + { + locale = _nl_locale_name_posix (category, categoryname); + locale_defaulted = 0; + if (locale == NULL) + { + locale = _nl_locale_name_default (); + locale_defaulted = 1; + } + } +# endif +#endif + + /* Ignore LANGUAGE and its system-dependent analogon if the locale is set + to "C" because + 1. "C" locale usually uses the ASCII encoding, and most international + messages use non-ASCII characters. These characters get displayed + as question marks (if using glibc's iconv()) or as invalid 8-bit + characters (because other iconv()s refuse to convert most non-ASCII + characters to ASCII). In any case, the output is ugly. + 2. The precise output of some programs in the "C" locale is specified + by POSIX and should not depend on environment variables like + "LANGUAGE" or system-dependent information. We allow such programs + to use gettext(). */ + if (strcmp (locale, "C") == 0) + return locale; + + /* The highest priority value is the value of the 'LANGUAGE' environment + variable. */ + language = getenv ("LANGUAGE"); + if (language != NULL && language[0] != '\0') + return language; +#if !defined IN_LIBGLOCALE && !defined _LIBC + /* The next priority value is the locale name, if not defaulted. */ + if (locale_defaulted) + { + /* The next priority value is the default language preferences list. */ + language_default = _nl_language_preferences_default (); + if (language_default != NULL) + return language_default; + } + /* The least priority value is the locale name, if defaulted. */ +#endif + return locale; +} + +#if (defined _LIBC || HAVE_ICONV) && !defined IN_LIBGLOCALE +/* Returns the output charset. */ +static const char * +internal_function +get_output_charset (struct binding *domainbinding) +{ + /* The output charset should normally be determined by the locale. But + sometimes the locale is not used or not correctly set up, so we provide + a possibility for the user to override this: the OUTPUT_CHARSET + environment variable. Moreover, the value specified through + bind_textdomain_codeset overrides both. */ + if (domainbinding != NULL && domainbinding->codeset != NULL) + return domainbinding->codeset; + else + { + /* For speed reasons, we look at the value of OUTPUT_CHARSET only + once. This is a user variable that is not supposed to change + during a program run. */ + static char *output_charset_cache; + static int output_charset_cached; + + if (!output_charset_cached) + { + const char *value = getenv ("OUTPUT_CHARSET"); + + if (value != NULL && value[0] != '\0') + { + size_t len = strlen (value) + 1; + char *value_copy = (char *) malloc (len); + + if (value_copy != NULL) + memcpy (value_copy, value, len); + output_charset_cache = value_copy; + } + output_charset_cached = 1; + } + + if (output_charset_cache != NULL) + return output_charset_cache; + else + { +# ifdef _LIBC + return _NL_CURRENT (LC_CTYPE, CODESET); +# else +# if HAVE_ICONV + return locale_charset (); +# endif +# endif + } + } +} +#endif + +/* @@ begin of epilog @@ */ + +/* We don't want libintl.a to depend on any other library. So we + avoid the non-standard function stpcpy. In GNU C Library this + function is available, though. Also allow the symbol HAVE_STPCPY + to be defined. */ +#if !_LIBC && !HAVE_STPCPY +static char * +stpcpy (char *dest, const char *src) +{ + while ((*dest++ = *src++) != '\0') + /* Do nothing. */ ; + return dest - 1; +} +#endif + +#if !_LIBC && !HAVE_MEMPCPY +static void * +mempcpy (void *dest, const void *src, size_t n) +{ + return (void *) ((char *) memcpy (dest, src, n) + n); +} +#endif + +#if !_LIBC && !HAVE_TSEARCH +# include "tsearch.c" +#endif + + +#ifdef _LIBC +/* If we want to free all resources we have to do some work at + program's end. */ +libc_freeres_fn (free_mem) +{ + void *old; + + while (_nl_domain_bindings != NULL) + { + struct binding *oldp = _nl_domain_bindings; + _nl_domain_bindings = _nl_domain_bindings->next; + if (oldp->dirname != _nl_default_dirname) + /* Yes, this is a pointer comparison. */ + free (oldp->dirname); + free (oldp->codeset); + free (oldp); + } + + if (_nl_current_default_domain != _nl_default_default_domain) + /* Yes, again a pointer comparison. */ + free ((char *) _nl_current_default_domain); + + /* Remove the search tree with the known translations. */ + __tdestroy (root, free); + root = NULL; + + while (transmem_list != NULL) + { + old = transmem_list; + transmem_list = transmem_list->next; + free (old); + } +} +#endif diff --git a/etc/wyatt8740/intl/dcngettext.c b/etc/wyatt8740/intl/dcngettext.c new file mode 100644 index 0000000..eb36833 --- /dev/null +++ b/etc/wyatt8740/intl/dcngettext.c @@ -0,0 +1,57 @@ +/* Implementation of the dcngettext(3) function. + Copyright (C) 1995-1999, 2000-2003 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DCNGETTEXT __dcngettext +# define DCIGETTEXT __dcigettext +#else +# define DCNGETTEXT libintl_dcngettext +# define DCIGETTEXT libintl_dcigettext +#endif + +/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY + locale. */ +char * +DCNGETTEXT (const char *domainname, + const char *msgid1, const char *msgid2, unsigned long int n, + int category) +{ + return DCIGETTEXT (domainname, msgid1, msgid2, 1, n, category); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__dcngettext, dcngettext); +#endif diff --git a/etc/wyatt8740/intl/dgettext.c b/etc/wyatt8740/intl/dgettext.c new file mode 100644 index 0000000..9b0d0de --- /dev/null +++ b/etc/wyatt8740/intl/dgettext.c @@ -0,0 +1,58 @@ +/* Implementation of the dgettext(3) function. + Copyright (C) 1995-1997, 2000-2003 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "gettextP.h" + +#include + +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DGETTEXT __dgettext +# define DCGETTEXT INTUSE(__dcgettext) +#else +# define DGETTEXT libintl_dgettext +# define DCGETTEXT libintl_dcgettext +#endif + +/* Look up MSGID in the DOMAINNAME message catalog of the current + LC_MESSAGES locale. */ +char * +DGETTEXT (const char *domainname, const char *msgid) +{ + return DCGETTEXT (domainname, msgid, LC_MESSAGES); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__dgettext, dgettext); +#endif diff --git a/etc/wyatt8740/intl/dngettext.c b/etc/wyatt8740/intl/dngettext.c new file mode 100644 index 0000000..3278438 --- /dev/null +++ b/etc/wyatt8740/intl/dngettext.c @@ -0,0 +1,59 @@ +/* Implementation of the dngettext(3) function. + Copyright (C) 1995-1997, 2000-2003 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "gettextP.h" + +#include + +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DNGETTEXT __dngettext +# define DCNGETTEXT __dcngettext +#else +# define DNGETTEXT libintl_dngettext +# define DCNGETTEXT libintl_dcngettext +#endif + +/* Look up MSGID in the DOMAINNAME message catalog of the current + LC_MESSAGES locale and skip message according to the plural form. */ +char * +DNGETTEXT (const char *domainname, + const char *msgid1, const char *msgid2, unsigned long int n) +{ + return DCNGETTEXT (domainname, msgid1, msgid2, n, LC_MESSAGES); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__dngettext, dngettext); +#endif diff --git a/etc/wyatt8740/intl/eval-plural.h b/etc/wyatt8740/intl/eval-plural.h new file mode 100644 index 0000000..21eecb3 --- /dev/null +++ b/etc/wyatt8740/intl/eval-plural.h @@ -0,0 +1,108 @@ +/* Plural expression evaluation. + Copyright (C) 2000-2003, 2007 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef STATIC +#define STATIC static +#endif + +/* Evaluate the plural expression and return an index value. */ +STATIC +unsigned long int +internal_function +plural_eval (const struct expression *pexp, unsigned long int n) +{ + switch (pexp->nargs) + { + case 0: + switch (pexp->operation) + { + case var: + return n; + case num: + return pexp->val.num; + default: + break; + } + /* NOTREACHED */ + break; + case 1: + { + /* pexp->operation must be lnot. */ + unsigned long int arg = plural_eval (pexp->val.args[0], n); + return ! arg; + } + case 2: + { + unsigned long int leftarg = plural_eval (pexp->val.args[0], n); + if (pexp->operation == lor) + return leftarg || plural_eval (pexp->val.args[1], n); + else if (pexp->operation == land) + return leftarg && plural_eval (pexp->val.args[1], n); + else + { + unsigned long int rightarg = plural_eval (pexp->val.args[1], n); + + switch (pexp->operation) + { + case mult: + return leftarg * rightarg; + case divide: +#if !INTDIV0_RAISES_SIGFPE + if (rightarg == 0) + raise (SIGFPE); +#endif + return leftarg / rightarg; + case module: +#if !INTDIV0_RAISES_SIGFPE + if (rightarg == 0) + raise (SIGFPE); +#endif + return leftarg % rightarg; + case plus: + return leftarg + rightarg; + case minus: + return leftarg - rightarg; + case less_than: + return leftarg < rightarg; + case greater_than: + return leftarg > rightarg; + case less_or_equal: + return leftarg <= rightarg; + case greater_or_equal: + return leftarg >= rightarg; + case equal: + return leftarg == rightarg; + case not_equal: + return leftarg != rightarg; + default: + break; + } + } + /* NOTREACHED */ + break; + } + case 3: + { + /* pexp->operation must be qmop. */ + unsigned long int boolarg = plural_eval (pexp->val.args[0], n); + return plural_eval (pexp->val.args[boolarg ? 1 : 2], n); + } + } + /* NOTREACHED */ + return 0; +} diff --git a/etc/wyatt8740/intl/explodename.c b/etc/wyatt8740/intl/explodename.c new file mode 100644 index 0000000..eb5dd75 --- /dev/null +++ b/etc/wyatt8740/intl/explodename.c @@ -0,0 +1,135 @@ +/* Copyright (C) 1995-1998, 2000-2001, 2003, 2005, 2007 Free Software Foundation, Inc. + Contributed by Ulrich Drepper , 1995. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +#include "loadinfo.h" + +/* On some strange systems still no definition of NULL is found. Sigh! */ +#ifndef NULL +# if defined __STDC__ && __STDC__ +# define NULL ((void *) 0) +# else +# define NULL 0 +# endif +#endif + +/* @@ end of prolog @@ */ + +/* Split a locale name NAME into a leading language part and all the + rest. Return a pointer to the first character after the language, + i.e. to the first byte of the rest. */ +static char *_nl_find_language (const char *name); + +static char * +_nl_find_language (const char *name) +{ + while (name[0] != '\0' && name[0] != '_' && name[0] != '@' && name[0] != '.') + ++name; + + return (char *) name; +} + + +int +_nl_explode_name (char *name, + const char **language, const char **modifier, + const char **territory, const char **codeset, + const char **normalized_codeset) +{ + char *cp; + int mask; + + *modifier = NULL; + *territory = NULL; + *codeset = NULL; + *normalized_codeset = NULL; + + /* Now we determine the single parts of the locale name. First + look for the language. Termination symbols are `_', '.', and `@'. */ + mask = 0; + *language = cp = name; + cp = _nl_find_language (*language); + + if (*language == cp) + /* This does not make sense: language has to be specified. Use + this entry as it is without exploding. Perhaps it is an alias. */ + cp = strchr (*language, '\0'); + else + { + if (cp[0] == '_') + { + /* Next is the territory. */ + cp[0] = '\0'; + *territory = ++cp; + + while (cp[0] != '\0' && cp[0] != '.' && cp[0] != '@') + ++cp; + + mask |= XPG_TERRITORY; + } + + if (cp[0] == '.') + { + /* Next is the codeset. */ + cp[0] = '\0'; + *codeset = ++cp; + + while (cp[0] != '\0' && cp[0] != '@') + ++cp; + + mask |= XPG_CODESET; + + if (*codeset != cp && (*codeset)[0] != '\0') + { + *normalized_codeset = _nl_normalize_codeset (*codeset, + cp - *codeset); + if (*normalized_codeset == NULL) + return -1; + else if (strcmp (*codeset, *normalized_codeset) == 0) + free ((char *) *normalized_codeset); + else + mask |= XPG_NORM_CODESET; + } + } + } + + if (cp[0] == '@') + { + /* Next is the modifier. */ + cp[0] = '\0'; + *modifier = ++cp; + + if (cp[0] != '\0') + mask |= XPG_MODIFIER; + } + + if (*territory != NULL && (*territory)[0] == '\0') + mask &= ~XPG_TERRITORY; + + if (*codeset != NULL && (*codeset)[0] == '\0') + mask &= ~XPG_CODESET; + + return mask; +} diff --git a/etc/wyatt8740/intl/export.h b/etc/wyatt8740/intl/export.h new file mode 100644 index 0000000..b5c47ad --- /dev/null +++ b/etc/wyatt8740/intl/export.h @@ -0,0 +1,6 @@ + +#if @HAVE_VISIBILITY@ && BUILDING_LIBINTL +#define LIBINTL_DLL_EXPORTED __attribute__((__visibility__("default"))) +#else +#define LIBINTL_DLL_EXPORTED +#endif diff --git a/etc/wyatt8740/intl/finddomain.c b/etc/wyatt8740/intl/finddomain.c new file mode 100644 index 0000000..cab2c99 --- /dev/null +++ b/etc/wyatt8740/intl/finddomain.c @@ -0,0 +1,212 @@ +/* Handle list of needed message catalogs + Copyright (C) 1995-1999, 2000-2001, 2003-2007 Free Software Foundation, Inc. + Written by Ulrich Drepper , 1995. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include + +#if defined HAVE_UNISTD_H || defined _LIBC +# include +#endif + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* Handle multi-threaded applications. */ +#ifdef _LIBC +# include +# define gl_rwlock_define_initialized __libc_rwlock_define_initialized +# define gl_rwlock_rdlock __libc_rwlock_rdlock +# define gl_rwlock_wrlock __libc_rwlock_wrlock +# define gl_rwlock_unlock __libc_rwlock_unlock +#else +# include "lock.h" +#endif + +/* @@ end of prolog @@ */ +/* List of already loaded domains. */ +static struct loaded_l10nfile *_nl_loaded_domains; + + +/* Return a data structure describing the message catalog described by + the DOMAINNAME and CATEGORY parameters with respect to the currently + established bindings. */ +struct loaded_l10nfile * +internal_function +_nl_find_domain (const char *dirname, char *locale, + const char *domainname, struct binding *domainbinding) +{ + struct loaded_l10nfile *retval; + const char *language; + const char *modifier; + const char *territory; + const char *codeset; + const char *normalized_codeset; + const char *alias_value; + int mask; + + /* LOCALE can consist of up to four recognized parts for the XPG syntax: + + language[_territory][.codeset][@modifier] + + Beside the first part all of them are allowed to be missing. If + the full specified locale is not found, the less specific one are + looked for. The various parts will be stripped off according to + the following order: + (1) codeset + (2) normalized codeset + (3) territory + (4) modifier + */ + + /* We need to protect modifying the _NL_LOADED_DOMAINS data. */ + gl_rwlock_define_initialized (static, lock); + gl_rwlock_rdlock (lock); + + /* If we have already tested for this locale entry there has to + be one data set in the list of loaded domains. */ + retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname, + strlen (dirname) + 1, 0, locale, NULL, NULL, + NULL, NULL, domainname, 0); + + gl_rwlock_unlock (lock); + + if (retval != NULL) + { + /* We know something about this locale. */ + int cnt; + + if (retval->decided <= 0) + _nl_load_domain (retval, domainbinding); + + if (retval->data != NULL) + return retval; + + for (cnt = 0; retval->successor[cnt] != NULL; ++cnt) + { + if (retval->successor[cnt]->decided <= 0) + _nl_load_domain (retval->successor[cnt], domainbinding); + + if (retval->successor[cnt]->data != NULL) + break; + } + + return retval; + /* NOTREACHED */ + } + + /* See whether the locale value is an alias. If yes its value + *overwrites* the alias name. No test for the original value is + done. */ + alias_value = _nl_expand_alias (locale); + if (alias_value != NULL) + { +#if defined _LIBC || defined HAVE_STRDUP + locale = strdup (alias_value); + if (locale == NULL) + return NULL; +#else + size_t len = strlen (alias_value) + 1; + locale = (char *) malloc (len); + if (locale == NULL) + return NULL; + + memcpy (locale, alias_value, len); +#endif + } + + /* Now we determine the single parts of the locale name. First + look for the language. Termination symbols are `_', '.', and `@'. */ + mask = _nl_explode_name (locale, &language, &modifier, &territory, + &codeset, &normalized_codeset); + if (mask == -1) + /* This means we are out of core. */ + return NULL; + + /* We need to protect modifying the _NL_LOADED_DOMAINS data. */ + gl_rwlock_wrlock (lock); + + /* Create all possible locale entries which might be interested in + generalization. */ + retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname, + strlen (dirname) + 1, mask, language, territory, + codeset, normalized_codeset, modifier, + domainname, 1); + + gl_rwlock_unlock (lock); + + if (retval == NULL) + /* This means we are out of core. */ + goto out; + + if (retval->decided <= 0) + _nl_load_domain (retval, domainbinding); + if (retval->data == NULL) + { + int cnt; + for (cnt = 0; retval->successor[cnt] != NULL; ++cnt) + { + if (retval->successor[cnt]->decided <= 0) + _nl_load_domain (retval->successor[cnt], domainbinding); + if (retval->successor[cnt]->data != NULL) + break; + } + } + + /* The room for an alias was dynamically allocated. Free it now. */ + if (alias_value != NULL) + free (locale); + +out: + /* The space for normalized_codeset is dynamically allocated. Free it. */ + if (mask & XPG_NORM_CODESET) + free ((void *) normalized_codeset); + + return retval; +} + + +#ifdef _LIBC +/* This is called from iconv/gconv_db.c's free_mem, as locales must + be freed before freeing gconv steps arrays. */ +void __libc_freeres_fn_section +_nl_finddomain_subfreeres () +{ + struct loaded_l10nfile *runp = _nl_loaded_domains; + + while (runp != NULL) + { + struct loaded_l10nfile *here = runp; + if (runp->data != NULL) + _nl_unload_domain ((struct loaded_domain *) runp->data); + runp = runp->next; + free ((char *) here->filename); + free (here); + } +} +#endif diff --git a/etc/wyatt8740/intl/gettext.c b/etc/wyatt8740/intl/gettext.c new file mode 100644 index 0000000..d82d439 --- /dev/null +++ b/etc/wyatt8740/intl/gettext.c @@ -0,0 +1,63 @@ +/* Implementation of gettext(3) function. + Copyright (C) 1995, 1997, 2000-2003 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef _LIBC +# define __need_NULL +# include +#else +# include /* Just for NULL. */ +#endif + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define GETTEXT __gettext +# define DCGETTEXT INTUSE(__dcgettext) +#else +# define GETTEXT libintl_gettext +# define DCGETTEXT libintl_dcgettext +#endif + +/* Look up MSGID in the current default message catalog for the current + LC_MESSAGES locale. If not found, returns MSGID itself (the default + text). */ +char * +GETTEXT (const char *msgid) +{ + return DCGETTEXT (NULL, msgid, LC_MESSAGES); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__gettext, gettext); +#endif diff --git a/etc/wyatt8740/intl/gettextP.h b/etc/wyatt8740/intl/gettextP.h new file mode 100644 index 0000000..5706fb5 --- /dev/null +++ b/etc/wyatt8740/intl/gettextP.h @@ -0,0 +1,297 @@ +/* Header describing internals of libintl library. + Copyright (C) 1995-1999, 2000-2007 Free Software Foundation, Inc. + Written by Ulrich Drepper , 1995. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _GETTEXTP_H +#define _GETTEXTP_H + +#include /* Get size_t. */ + +#ifdef _LIBC +# include "../iconv/gconv_int.h" +#else +# if HAVE_ICONV +# include +# endif +#endif + +/* Handle multi-threaded applications. */ +#ifdef _LIBC +# include +# define gl_rwlock_define __libc_rwlock_define +#else +# include "lock.h" +#endif + +#ifdef _LIBC +extern char *__gettext (const char *__msgid); +extern char *__dgettext (const char *__domainname, const char *__msgid); +extern char *__dcgettext (const char *__domainname, const char *__msgid, + int __category); +extern char *__ngettext (const char *__msgid1, const char *__msgid2, + unsigned long int __n); +extern char *__dngettext (const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int n); +extern char *__dcngettext (const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int __n, int __category); +extern char *__dcigettext (const char *__domainname, + const char *__msgid1, const char *__msgid2, + int __plural, unsigned long int __n, + int __category); +extern char *__textdomain (const char *__domainname); +extern char *__bindtextdomain (const char *__domainname, + const char *__dirname); +extern char *__bind_textdomain_codeset (const char *__domainname, + const char *__codeset); +extern void _nl_finddomain_subfreeres (void) attribute_hidden; +extern void _nl_unload_domain (struct loaded_domain *__domain) + internal_function attribute_hidden; +#else +/* Declare the exported libintl_* functions, in a way that allows us to + call them under their real name. */ +# undef _INTL_REDIRECT_INLINE +# undef _INTL_REDIRECT_MACROS +# define _INTL_REDIRECT_MACROS +# include "libgnuintl.h" +# ifdef IN_LIBGLOCALE +extern char *gl_dcigettext (const char *__domainname, + const char *__msgid1, const char *__msgid2, + int __plural, unsigned long int __n, + int __category, + const char *__localename, const char *__encoding); +# else +extern char *libintl_dcigettext (const char *__domainname, + const char *__msgid1, const char *__msgid2, + int __plural, unsigned long int __n, + int __category); +# endif +#endif + +#include "loadinfo.h" + +#include "gmo.h" /* Get nls_uint32. */ + +/* @@ end of prolog @@ */ + +#ifndef internal_function +# define internal_function +#endif + +#ifndef attribute_hidden +# define attribute_hidden +#endif + +/* Tell the compiler when a conditional or integer expression is + almost always true or almost always false. */ +#ifndef HAVE_BUILTIN_EXPECT +# define __builtin_expect(expr, val) (expr) +#endif + +#ifndef W +# define W(flag, data) ((flag) ? SWAP (data) : (data)) +#endif + + +#ifdef _LIBC +# include +# define SWAP(i) bswap_32 (i) +#else +static inline nls_uint32 +# ifdef __cplusplus +SWAP (nls_uint32 i) +# else +SWAP (i) + nls_uint32 i; +# endif +{ + return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24); +} +#endif + + +/* In-memory representation of system dependent string. */ +struct sysdep_string_desc +{ + /* Length of addressed string, including the trailing NUL. */ + size_t length; + /* Pointer to addressed string. */ + const char *pointer; +}; + +/* Cache of translated strings after charset conversion. + Note: The strings are converted to the target encoding only on an as-needed + basis. */ +struct converted_domain +{ + /* The target encoding name. */ + const char *encoding; + /* The descriptor for conversion from the message catalog's encoding to + this target encoding. */ +#ifdef _LIBC + __gconv_t conv; +#else +# if HAVE_ICONV + iconv_t conv; +# endif +#endif + /* The table of translated strings after charset conversion. */ + char **conv_tab; +}; + +/* The representation of an opened message catalog. */ +struct loaded_domain +{ + /* Pointer to memory containing the .mo file. */ + const char *data; + /* 1 if the memory is mmap()ed, 0 if the memory is malloc()ed. */ + int use_mmap; + /* Size of mmap()ed memory. */ + size_t mmap_size; + /* 1 if the .mo file uses a different endianness than this machine. */ + int must_swap; + /* Pointer to additional malloc()ed memory. */ + void *malloced; + + /* Number of static strings pairs. */ + nls_uint32 nstrings; + /* Pointer to descriptors of original strings in the file. */ + const struct string_desc *orig_tab; + /* Pointer to descriptors of translated strings in the file. */ + const struct string_desc *trans_tab; + + /* Number of system dependent strings pairs. */ + nls_uint32 n_sysdep_strings; + /* Pointer to descriptors of original sysdep strings. */ + const struct sysdep_string_desc *orig_sysdep_tab; + /* Pointer to descriptors of translated sysdep strings. */ + const struct sysdep_string_desc *trans_sysdep_tab; + + /* Size of hash table. */ + nls_uint32 hash_size; + /* Pointer to hash table. */ + const nls_uint32 *hash_tab; + /* 1 if the hash table uses a different endianness than this machine. */ + int must_swap_hash_tab; + + /* Cache of charset conversions of the translated strings. */ + struct converted_domain *conversions; + size_t nconversions; + gl_rwlock_define (, conversions_lock) + + const struct expression *plural; + unsigned long int nplurals; +}; + +/* We want to allocate a string at the end of the struct. But ISO C + doesn't allow zero sized arrays. */ +#ifdef __GNUC__ +# define ZERO 0 +#else +# define ZERO 1 +#endif + +/* A set of settings bound to a message domain. Used to store settings + from bindtextdomain() and bind_textdomain_codeset(). */ +struct binding +{ + struct binding *next; + char *dirname; + char *codeset; + char domainname[ZERO]; +}; + +/* A counter which is incremented each time some previous translations + become invalid. + This variable is part of the external ABI of the GNU libintl. */ +#ifdef IN_LIBGLOCALE +# include +extern LIBGLOCALE_DLL_EXPORTED int _nl_msg_cat_cntr; +#else +extern LIBINTL_DLL_EXPORTED int _nl_msg_cat_cntr; +#endif + +#ifndef _LIBC +extern const char *_nl_language_preferences_default (void); +# define gl_locale_name_canonicalize _nl_locale_name_canonicalize +extern void _nl_locale_name_canonicalize (char *name); +# define gl_locale_name_posix _nl_locale_name_posix +extern const char *_nl_locale_name_posix (int category, + const char *categoryname); +# define gl_locale_name_default _nl_locale_name_default +extern const char *_nl_locale_name_default (void); +# define gl_locale_name _nl_locale_name +extern const char *_nl_locale_name (int category, const char *categoryname); +#endif + +struct loaded_l10nfile *_nl_find_domain (const char *__dirname, char *__locale, + const char *__domainname, + struct binding *__domainbinding) + internal_function; +void _nl_load_domain (struct loaded_l10nfile *__domain, + struct binding *__domainbinding) + internal_function; + +#ifdef IN_LIBGLOCALE +char *_nl_find_msg (struct loaded_l10nfile *domain_file, + struct binding *domainbinding, const char *encoding, + const char *msgid, + size_t *lengthp) + internal_function; +#else +char *_nl_find_msg (struct loaded_l10nfile *domain_file, + struct binding *domainbinding, const char *msgid, + int convert, size_t *lengthp) + internal_function; +#endif + +/* The internal variables in the standalone libintl.a must have different + names than the internal variables in GNU libc, otherwise programs + using libintl.a cannot be linked statically. */ +#if !defined _LIBC +# define _nl_default_dirname libintl_nl_default_dirname +# define _nl_domain_bindings libintl_nl_domain_bindings +#endif + +/* Contains the default location of the message catalogs. */ +extern const char _nl_default_dirname[]; +#ifdef _LIBC +libc_hidden_proto (_nl_default_dirname) +#endif + +/* List with bindings of specific domains. */ +extern struct binding *_nl_domain_bindings; + +/* The internal variables in the standalone libintl.a must have different + names than the internal variables in GNU libc, otherwise programs + using libintl.a cannot be linked statically. */ +#if !defined _LIBC +# define _nl_default_default_domain libintl_nl_default_default_domain +# define _nl_current_default_domain libintl_nl_current_default_domain +#endif + +/* Name of the default text domain. */ +extern const char _nl_default_default_domain[] attribute_hidden; + +/* Default text domain in which entries for gettext(3) are to be found. */ +extern const char *_nl_current_default_domain attribute_hidden; + +/* @@ begin of epilog @@ */ + +#endif /* gettextP.h */ diff --git a/etc/wyatt8740/intl/gmo.h b/etc/wyatt8740/intl/gmo.h new file mode 100644 index 0000000..da9dbaa --- /dev/null +++ b/etc/wyatt8740/intl/gmo.h @@ -0,0 +1,152 @@ +/* Description of GNU message catalog format: general file layout. + Copyright (C) 1995, 1997, 2000-2002, 2004, 2006 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _GETTEXT_H +#define _GETTEXT_H 1 + +#include + +/* @@ end of prolog @@ */ + +/* The magic number of the GNU message catalog format. */ +#define _MAGIC 0x950412de +#define _MAGIC_SWAPPED 0xde120495 + +/* Revision number of the currently used .mo (binary) file format. */ +#define MO_REVISION_NUMBER 0 +#define MO_REVISION_NUMBER_WITH_SYSDEP_I 1 + +/* The following contortions are an attempt to use the C preprocessor + to determine an unsigned integral type that is 32 bits wide. An + alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but + as of version autoconf-2.13, the AC_CHECK_SIZEOF macro doesn't work + when cross-compiling. */ + +#if __STDC__ +# define UINT_MAX_32_BITS 4294967295U +#else +# define UINT_MAX_32_BITS 0xFFFFFFFF +#endif + +/* If UINT_MAX isn't defined, assume it's a 32-bit type. + This should be valid for all systems GNU cares about because + that doesn't include 16-bit systems, and only modern systems + (that certainly have ) have 64+-bit integral types. */ + +#ifndef UINT_MAX +# define UINT_MAX UINT_MAX_32_BITS +#endif + +#if UINT_MAX == UINT_MAX_32_BITS +typedef unsigned nls_uint32; +#else +# if USHRT_MAX == UINT_MAX_32_BITS +typedef unsigned short nls_uint32; +# else +# if ULONG_MAX == UINT_MAX_32_BITS +typedef unsigned long nls_uint32; +# else + /* The following line is intended to throw an error. Using #error is + not portable enough. */ + "Cannot determine unsigned 32-bit data type." +# endif +# endif +#endif + + +/* Header for binary .mo file format. */ +struct mo_file_header +{ + /* The magic number. */ + nls_uint32 magic; + /* The revision number of the file format. */ + nls_uint32 revision; + + /* The following are only used in .mo files with major revision 0 or 1. */ + + /* The number of strings pairs. */ + nls_uint32 nstrings; + /* Offset of table with start offsets of original strings. */ + nls_uint32 orig_tab_offset; + /* Offset of table with start offsets of translated strings. */ + nls_uint32 trans_tab_offset; + /* Size of hash table. */ + nls_uint32 hash_tab_size; + /* Offset of first hash table entry. */ + nls_uint32 hash_tab_offset; + + /* The following are only used in .mo files with minor revision >= 1. */ + + /* The number of system dependent segments. */ + nls_uint32 n_sysdep_segments; + /* Offset of table describing system dependent segments. */ + nls_uint32 sysdep_segments_offset; + /* The number of system dependent strings pairs. */ + nls_uint32 n_sysdep_strings; + /* Offset of table with start offsets of original sysdep strings. */ + nls_uint32 orig_sysdep_tab_offset; + /* Offset of table with start offsets of translated sysdep strings. */ + nls_uint32 trans_sysdep_tab_offset; +}; + +/* Descriptor for static string contained in the binary .mo file. */ +struct string_desc +{ + /* Length of addressed string, not including the trailing NUL. */ + nls_uint32 length; + /* Offset of string in file. */ + nls_uint32 offset; +}; + +/* The following are only used in .mo files with minor revision >= 1. */ + +/* Descriptor for system dependent string segment. */ +struct sysdep_segment +{ + /* Length of addressed string, including the trailing NUL. */ + nls_uint32 length; + /* Offset of string in file. */ + nls_uint32 offset; +}; + +/* Pair of a static and a system dependent segment, in struct sysdep_string. */ +struct segment_pair +{ + /* Size of static segment. */ + nls_uint32 segsize; + /* Reference to system dependent string segment, or ~0 at the end. */ + nls_uint32 sysdepref; +}; + +/* Descriptor for system dependent string. */ +struct sysdep_string +{ + /* Offset of static string segments in file. */ + nls_uint32 offset; + /* Alternating sequence of static and system dependent segments. + The last segment is a static segment, including the trailing NUL. */ + struct segment_pair segments[1]; +}; + +/* Marker for the end of the segments[] array. This has the value 0xFFFFFFFF, + regardless whether 'int' is 16 bit, 32 bit, or 64 bit. */ +#define SEGMENTS_END ((nls_uint32) ~0) + +/* @@ begin of epilog @@ */ + +#endif /* gettext.h */ diff --git a/etc/wyatt8740/intl/hash-string.c b/etc/wyatt8740/intl/hash-string.c new file mode 100644 index 0000000..3c513f0 --- /dev/null +++ b/etc/wyatt8740/intl/hash-string.c @@ -0,0 +1,51 @@ +/* Implements a string hashing function. + Copyright (C) 1995, 1997, 1998, 2000, 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C 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. + + The GNU C 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 the GNU C Library; if not, write to the Free + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +/* Specification. */ +#include "hash-string.h" + + +/* Defines the so called `hashpjw' function by P.J. Weinberger + [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools, + 1986, 1987 Bell Telephone Laboratories, Inc.] */ +unsigned long int +__hash_string (const char *str_param) +{ + unsigned long int hval, g; + const char *str = str_param; + + /* Compute the hash value for the given string. */ + hval = 0; + while (*str != '\0') + { + hval <<= 4; + hval += (unsigned char) *str++; + g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4)); + if (g != 0) + { + hval ^= g >> (HASHWORDBITS - 8); + hval ^= g; + } + } + return hval; +} diff --git a/etc/wyatt8740/intl/hash-string.h b/etc/wyatt8740/intl/hash-string.h new file mode 100644 index 0000000..98c07e4 --- /dev/null +++ b/etc/wyatt8740/intl/hash-string.h @@ -0,0 +1,36 @@ +/* Description of GNU message catalog format: string hashing function. + Copyright (C) 1995, 1997-1998, 2000-2003, 2005 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* @@ end of prolog @@ */ + +/* We assume to have `unsigned long int' value with at least 32 bits. */ +#define HASHWORDBITS 32 + + +#ifndef _LIBC +# ifdef IN_LIBINTL +# define __hash_string libintl_hash_string +# else +# define __hash_string hash_string +# endif +#endif + +/* Defines the so called `hashpjw' function by P.J. Weinberger + [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools, + 1986, 1987 Bell Telephone Laboratories, Inc.] */ +extern unsigned long int __hash_string (const char *str_param); diff --git a/etc/wyatt8740/intl/intl-compat.c b/etc/wyatt8740/intl/intl-compat.c new file mode 100644 index 0000000..9b9ecbb --- /dev/null +++ b/etc/wyatt8740/intl/intl-compat.c @@ -0,0 +1,133 @@ +/* intl-compat.c - Stub functions to call gettext functions from GNU gettext + Library. + Copyright (C) 1995, 2000-2003, 2005 Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "gettextP.h" + +/* @@ end of prolog @@ */ + +/* This file redirects the gettext functions (without prefix) to those + defined in the included GNU libintl library (with "libintl_" prefix). + It is compiled into libintl in order to make the AM_GNU_GETTEXT test + of gettext <= 0.11.2 work with the libintl library >= 0.11.3 which + has the redirections primarily in the include file. + It is also compiled into libgnuintl so that libgnuintl.so can be used + as LD_PRELOADable library on glibc systems, to provide the extra + features that the functions in the libc don't have (namely, logging). */ + + +#undef gettext +#undef dgettext +#undef dcgettext +#undef ngettext +#undef dngettext +#undef dcngettext +#undef textdomain +#undef bindtextdomain +#undef bind_textdomain_codeset + + +/* When building a DLL, we must export some functions. Note that because + the functions are only defined for binary backward compatibility, we + don't need to use __declspec(dllimport) in any case. */ +#if HAVE_VISIBILITY && BUILDING_DLL +# define DLL_EXPORTED __attribute__((__visibility__("default"))) +#elif defined _MSC_VER && BUILDING_DLL +# define DLL_EXPORTED __declspec(dllexport) +#else +# define DLL_EXPORTED +#endif + + +DLL_EXPORTED +char * +gettext (const char *msgid) +{ + return libintl_gettext (msgid); +} + + +DLL_EXPORTED +char * +dgettext (const char *domainname, const char *msgid) +{ + return libintl_dgettext (domainname, msgid); +} + + +DLL_EXPORTED +char * +dcgettext (const char *domainname, const char *msgid, int category) +{ + return libintl_dcgettext (domainname, msgid, category); +} + + +DLL_EXPORTED +char * +ngettext (const char *msgid1, const char *msgid2, unsigned long int n) +{ + return libintl_ngettext (msgid1, msgid2, n); +} + + +DLL_EXPORTED +char * +dngettext (const char *domainname, + const char *msgid1, const char *msgid2, unsigned long int n) +{ + return libintl_dngettext (domainname, msgid1, msgid2, n); +} + + +DLL_EXPORTED +char * +dcngettext (const char *domainname, + const char *msgid1, const char *msgid2, unsigned long int n, + int category) +{ + return libintl_dcngettext (domainname, msgid1, msgid2, n, category); +} + + +DLL_EXPORTED +char * +textdomain (const char *domainname) +{ + return libintl_textdomain (domainname); +} + + +DLL_EXPORTED +char * +bindtextdomain (const char *domainname, const char *dirname) +{ + return libintl_bindtextdomain (domainname, dirname); +} + + +DLL_EXPORTED +char * +bind_textdomain_codeset (const char *domainname, const char *codeset) +{ + return libintl_bind_textdomain_codeset (domainname, codeset); +} diff --git a/etc/wyatt8740/intl/intl-exports.c b/etc/wyatt8740/intl/intl-exports.c new file mode 100644 index 0000000..7176589 --- /dev/null +++ b/etc/wyatt8740/intl/intl-exports.c @@ -0,0 +1,36 @@ +/* List of exported symbols of libintl on Cygwin. + Copyright (C) 2006 Free Software Foundation, Inc. + Written by Bruno Haible , 2006. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + + /* IMP(x) is a symbol that contains the address of x. */ +#define IMP(x) _imp__##x + + /* Ensure that the variable x is exported from the library, and that a + pseudo-variable IMP(x) is available. */ +#define VARIABLE(x) \ + /* Export x without redefining x. This code was found by compiling a \ + snippet: \ + extern __declspec(dllexport) int x; int x = 42; */ \ + asm (".section .drectve\n"); \ + asm (".ascii \" -export:" #x ",data\"\n"); \ + asm (".data\n"); \ + /* Allocate a pseudo-variable IMP(x). */ \ + extern int x; \ + void * IMP(x) = &x; + +VARIABLE(libintl_version) diff --git a/etc/wyatt8740/intl/l10nflist.c b/etc/wyatt8740/intl/l10nflist.c new file mode 100644 index 0000000..365aeb7 --- /dev/null +++ b/etc/wyatt8740/intl/l10nflist.c @@ -0,0 +1,400 @@ +/* Copyright (C) 1995-1999, 2000-2006 Free Software Foundation, Inc. + Contributed by Ulrich Drepper , 1995. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Tell glibc's to provide a prototype for stpcpy(). + This must come before because may include + , and once has been included, it's too late. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#if defined _LIBC || defined HAVE_ARGZ_H +# include +#endif +#include +#include +#include + +#include "loadinfo.h" + +/* On some strange systems still no definition of NULL is found. Sigh! */ +#ifndef NULL +# if defined __STDC__ && __STDC__ +# define NULL ((void *) 0) +# else +# define NULL 0 +# endif +#endif + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ANSI C functions. This is required by the standard + because some ANSI C functions will require linking with this object + file and the name space must not be polluted. */ +# ifndef stpcpy +# define stpcpy(dest, src) __stpcpy(dest, src) +# endif +#else +# ifndef HAVE_STPCPY +static char *stpcpy (char *dest, const char *src); +# endif +#endif + +/* Pathname support. + ISSLASH(C) tests whether C is a directory separator character. + IS_ABSOLUTE_PATH(P) tests whether P is an absolute path. If it is not, + it may be concatenated to a directory pathname. + */ +#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__ + /* Win32, Cygwin, OS/2, DOS */ +# define ISSLASH(C) ((C) == '/' || (C) == '\\') +# define HAS_DEVICE(P) \ + ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \ + && (P)[1] == ':') +# define IS_ABSOLUTE_PATH(P) (ISSLASH ((P)[0]) || HAS_DEVICE (P)) +#else + /* Unix */ +# define ISSLASH(C) ((C) == '/') +# define IS_ABSOLUTE_PATH(P) ISSLASH ((P)[0]) +#endif + +/* Define function which are usually not available. */ + +#ifdef _LIBC +# define __argz_count(argz, len) INTUSE(__argz_count) (argz, len) +#elif defined HAVE_ARGZ_COUNT +# undef __argz_count +# define __argz_count argz_count +#else +/* Returns the number of strings in ARGZ. */ +static size_t +argz_count__ (const char *argz, size_t len) +{ + size_t count = 0; + while (len > 0) + { + size_t part_len = strlen (argz); + argz += part_len + 1; + len -= part_len + 1; + count++; + } + return count; +} +# undef __argz_count +# define __argz_count(argz, len) argz_count__ (argz, len) +#endif /* !_LIBC && !HAVE_ARGZ_COUNT */ + +#ifdef _LIBC +# define __argz_stringify(argz, len, sep) \ + INTUSE(__argz_stringify) (argz, len, sep) +#elif defined HAVE_ARGZ_STRINGIFY +# undef __argz_stringify +# define __argz_stringify argz_stringify +#else +/* Make '\0' separated arg vector ARGZ printable by converting all the '\0's + except the last into the character SEP. */ +static void +argz_stringify__ (char *argz, size_t len, int sep) +{ + while (len > 0) + { + size_t part_len = strlen (argz); + argz += part_len; + len -= part_len + 1; + if (len > 0) + *argz++ = sep; + } +} +# undef __argz_stringify +# define __argz_stringify(argz, len, sep) argz_stringify__ (argz, len, sep) +#endif /* !_LIBC && !HAVE_ARGZ_STRINGIFY */ + +#ifdef _LIBC +#elif defined HAVE_ARGZ_NEXT +# undef __argz_next +# define __argz_next argz_next +#else +static char * +argz_next__ (char *argz, size_t argz_len, const char *entry) +{ + if (entry) + { + if (entry < argz + argz_len) + entry = strchr (entry, '\0') + 1; + + return entry >= argz + argz_len ? NULL : (char *) entry; + } + else + if (argz_len > 0) + return argz; + else + return 0; +} +# undef __argz_next +# define __argz_next(argz, len, entry) argz_next__ (argz, len, entry) +#endif /* !_LIBC && !HAVE_ARGZ_NEXT */ + + +/* Return number of bits set in X. */ +static inline int +pop (int x) +{ + /* We assume that no more than 16 bits are used. */ + x = ((x & ~0x5555) >> 1) + (x & 0x5555); + x = ((x & ~0x3333) >> 2) + (x & 0x3333); + x = ((x >> 4) + x) & 0x0f0f; + x = ((x >> 8) + x) & 0xff; + + return x; +} + + +struct loaded_l10nfile * +_nl_make_l10nflist (struct loaded_l10nfile **l10nfile_list, + const char *dirlist, size_t dirlist_len, + int mask, const char *language, const char *territory, + const char *codeset, const char *normalized_codeset, + const char *modifier, + const char *filename, int do_allocate) +{ + char *abs_filename; + struct loaded_l10nfile **lastp; + struct loaded_l10nfile *retval; + char *cp; + size_t dirlist_count; + size_t entries; + int cnt; + + /* If LANGUAGE contains an absolute directory specification, we ignore + DIRLIST. */ + if (IS_ABSOLUTE_PATH (language)) + dirlist_len = 0; + + /* Allocate room for the full file name. */ + abs_filename = (char *) malloc (dirlist_len + + strlen (language) + + ((mask & XPG_TERRITORY) != 0 + ? strlen (territory) + 1 : 0) + + ((mask & XPG_CODESET) != 0 + ? strlen (codeset) + 1 : 0) + + ((mask & XPG_NORM_CODESET) != 0 + ? strlen (normalized_codeset) + 1 : 0) + + ((mask & XPG_MODIFIER) != 0 + ? strlen (modifier) + 1 : 0) + + 1 + strlen (filename) + 1); + + if (abs_filename == NULL) + return NULL; + + /* Construct file name. */ + cp = abs_filename; + if (dirlist_len > 0) + { + memcpy (cp, dirlist, dirlist_len); + __argz_stringify (cp, dirlist_len, PATH_SEPARATOR); + cp += dirlist_len; + cp[-1] = '/'; + } + + cp = stpcpy (cp, language); + + if ((mask & XPG_TERRITORY) != 0) + { + *cp++ = '_'; + cp = stpcpy (cp, territory); + } + if ((mask & XPG_CODESET) != 0) + { + *cp++ = '.'; + cp = stpcpy (cp, codeset); + } + if ((mask & XPG_NORM_CODESET) != 0) + { + *cp++ = '.'; + cp = stpcpy (cp, normalized_codeset); + } + if ((mask & XPG_MODIFIER) != 0) + { + *cp++ = '@'; + cp = stpcpy (cp, modifier); + } + + *cp++ = '/'; + stpcpy (cp, filename); + + /* Look in list of already loaded domains whether it is already + available. */ + lastp = l10nfile_list; + for (retval = *l10nfile_list; retval != NULL; retval = retval->next) + if (retval->filename != NULL) + { + int compare = strcmp (retval->filename, abs_filename); + if (compare == 0) + /* We found it! */ + break; + if (compare < 0) + { + /* It's not in the list. */ + retval = NULL; + break; + } + + lastp = &retval->next; + } + + if (retval != NULL || do_allocate == 0) + { + free (abs_filename); + return retval; + } + + dirlist_count = (dirlist_len > 0 ? __argz_count (dirlist, dirlist_len) : 1); + + /* Allocate a new loaded_l10nfile. */ + retval = + (struct loaded_l10nfile *) + malloc (sizeof (*retval) + + (((dirlist_count << pop (mask)) + (dirlist_count > 1 ? 1 : 0)) + * sizeof (struct loaded_l10nfile *))); + if (retval == NULL) + { + free (abs_filename); + return NULL; + } + + retval->filename = abs_filename; + + /* We set retval->data to NULL here; it is filled in later. + Setting retval->decided to 1 here means that retval does not + correspond to a real file (dirlist_count > 1) or is not worth + looking up (if an unnormalized codeset was specified). */ + retval->decided = (dirlist_count > 1 + || ((mask & XPG_CODESET) != 0 + && (mask & XPG_NORM_CODESET) != 0)); + retval->data = NULL; + + retval->next = *lastp; + *lastp = retval; + + entries = 0; + /* Recurse to fill the inheritance list of RETVAL. + If the DIRLIST is a real list (i.e. DIRLIST_COUNT > 1), the RETVAL + entry does not correspond to a real file; retval->filename contains + colons. In this case we loop across all elements of DIRLIST and + across all bit patterns dominated by MASK. + If the DIRLIST is a single directory or entirely redundant (i.e. + DIRLIST_COUNT == 1), we loop across all bit patterns dominated by + MASK, excluding MASK itself. + In either case, we loop down from MASK to 0. This has the effect + that the extra bits in the locale name are dropped in this order: + first the modifier, then the territory, then the codeset, then the + normalized_codeset. */ + for (cnt = dirlist_count > 1 ? mask : mask - 1; cnt >= 0; --cnt) + if ((cnt & ~mask) == 0 + && !((cnt & XPG_CODESET) != 0 && (cnt & XPG_NORM_CODESET) != 0)) + { + if (dirlist_count > 1) + { + /* Iterate over all elements of the DIRLIST. */ + char *dir = NULL; + + while ((dir = __argz_next ((char *) dirlist, dirlist_len, dir)) + != NULL) + retval->successor[entries++] + = _nl_make_l10nflist (l10nfile_list, dir, strlen (dir) + 1, + cnt, language, territory, codeset, + normalized_codeset, modifier, filename, + 1); + } + else + retval->successor[entries++] + = _nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len, + cnt, language, territory, codeset, + normalized_codeset, modifier, filename, 1); + } + retval->successor[entries] = NULL; + + return retval; +} + +/* Normalize codeset name. There is no standard for the codeset + names. Normalization allows the user to use any of the common + names. The return value is dynamically allocated and has to be + freed by the caller. */ +const char * +_nl_normalize_codeset (const char *codeset, size_t name_len) +{ + int len = 0; + int only_digit = 1; + char *retval; + char *wp; + size_t cnt; + + for (cnt = 0; cnt < name_len; ++cnt) + if (isalnum ((unsigned char) codeset[cnt])) + { + ++len; + + if (isalpha ((unsigned char) codeset[cnt])) + only_digit = 0; + } + + retval = (char *) malloc ((only_digit ? 3 : 0) + len + 1); + + if (retval != NULL) + { + if (only_digit) + wp = stpcpy (retval, "iso"); + else + wp = retval; + + for (cnt = 0; cnt < name_len; ++cnt) + if (isalpha ((unsigned char) codeset[cnt])) + *wp++ = tolower ((unsigned char) codeset[cnt]); + else if (isdigit ((unsigned char) codeset[cnt])) + *wp++ = codeset[cnt]; + + *wp = '\0'; + } + + return (const char *) retval; +} + + +/* @@ begin of epilog @@ */ + +/* We don't want libintl.a to depend on any other library. So we + avoid the non-standard function stpcpy. In GNU C Library this + function is available, though. Also allow the symbol HAVE_STPCPY + to be defined. */ +#if !_LIBC && !HAVE_STPCPY +static char * +stpcpy (char *dest, const char *src) +{ + while ((*dest++ = *src++) != '\0') + /* Do nothing. */ ; + return dest - 1; +} +#endif diff --git a/etc/wyatt8740/intl/langprefs.c b/etc/wyatt8740/intl/langprefs.c new file mode 100644 index 0000000..59c8def --- /dev/null +++ b/etc/wyatt8740/intl/langprefs.c @@ -0,0 +1,130 @@ +/* Determine the user's language preferences. + Copyright (C) 2004-2006 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Written by Bruno Haible . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#if HAVE_CFPREFERENCESCOPYAPPVALUE +# include +# include +# include +# include +# include +extern void _nl_locale_name_canonicalize (char *name); +#endif + +/* Determine the user's language preferences, as a colon separated list of + locale names in XPG syntax + language[_territory][.codeset][@modifier] + The result must not be freed; it is statically allocated. + The LANGUAGE environment variable does not need to be considered; it is + already taken into account by the caller. */ + +const char * +_nl_language_preferences_default (void) +{ +#if HAVE_CFPREFERENCESCOPYAPPVALUE /* MacOS X 10.2 or newer */ + { + /* Cache the preferences list, since CoreFoundation calls are expensive. */ + static const char *cached_languages; + static int cache_initialized; + + if (!cache_initialized) + { + CFTypeRef preferences = + CFPreferencesCopyAppValue (CFSTR ("AppleLanguages"), + kCFPreferencesCurrentApplication); + if (preferences != NULL + && CFGetTypeID (preferences) == CFArrayGetTypeID ()) + { + CFArrayRef prefArray = (CFArrayRef)preferences; + int n = CFArrayGetCount (prefArray); + char buf[256]; + size_t size = 0; + int i; + + for (i = 0; i < n; i++) + { + CFTypeRef element = CFArrayGetValueAtIndex (prefArray, i); + if (element != NULL + && CFGetTypeID (element) == CFStringGetTypeID () + && CFStringGetCString ((CFStringRef)element, + buf, sizeof (buf), + kCFStringEncodingASCII)) + { + _nl_locale_name_canonicalize (buf); + size += strlen (buf) + 1; + /* Most GNU programs use msgids in English and don't ship + an en.mo message catalog. Therefore when we see "en" + in the preferences list, arrange for gettext() to + return the msgid, and ignore all further elements of + the preferences list. */ + if (strcmp (buf, "en") == 0) + break; + } + else + break; + } + if (size > 0) + { + char *languages = (char *) malloc (size); + + if (languages != NULL) + { + char *p = languages; + + for (i = 0; i < n; i++) + { + CFTypeRef element = + CFArrayGetValueAtIndex (prefArray, i); + if (element != NULL + && CFGetTypeID (element) == CFStringGetTypeID () + && CFStringGetCString ((CFStringRef)element, + buf, sizeof (buf), + kCFStringEncodingASCII)) + { + _nl_locale_name_canonicalize (buf); + strcpy (p, buf); + p += strlen (buf); + *p++ = ':'; + if (strcmp (buf, "en") == 0) + break; + } + else + break; + } + *--p = '\0'; + + cached_languages = languages; + } + } + } + cache_initialized = 1; + } + if (cached_languages != NULL) + return cached_languages; + } +#endif + + return NULL; +} diff --git a/etc/wyatt8740/intl/libgnuintl.h.in b/etc/wyatt8740/intl/libgnuintl.h.in new file mode 100644 index 0000000..c9da798 --- /dev/null +++ b/etc/wyatt8740/intl/libgnuintl.h.in @@ -0,0 +1,419 @@ +/* Message catalogs for internationalization. + Copyright (C) 1995-1997, 2000-2007 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _LIBINTL_H +#define _LIBINTL_H 1 + +#include + +/* The LC_MESSAGES locale category is the category used by the functions + gettext() and dgettext(). It is specified in POSIX, but not in ANSI C. + On systems that don't define it, use an arbitrary value instead. + On Solaris, defines __LOCALE_H (or _LOCALE_H in Solaris 2.5) + then includes (i.e. this file!) and then only defines + LC_MESSAGES. To avoid a redefinition warning, don't define LC_MESSAGES + in this case. */ +#if !defined LC_MESSAGES && !(defined __LOCALE_H || (defined _LOCALE_H && defined __sun)) +# define LC_MESSAGES 1729 +#endif + +/* We define an additional symbol to signal that we use the GNU + implementation of gettext. */ +#define __USE_GNU_GETTEXT 1 + +/* Provide information about the supported file formats. Returns the + maximum minor revision number supported for a given major revision. */ +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) \ + ((major) == 0 || (major) == 1 ? 1 : -1) + +/* Resolve a platform specific conflict on DJGPP. GNU gettext takes + precedence over _conio_gettext. */ +#ifdef __DJGPP__ +# undef gettext +#endif + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Version number: (major<<16) + (minor<<8) + subminor */ +#define LIBINTL_VERSION 0x001100 +extern int libintl_version; + + +/* We redirect the functions to those prefixed with "libintl_". This is + necessary, because some systems define gettext/textdomain/... in the C + library (namely, Solaris 2.4 and newer, and GNU libc 2.0 and newer). + If we used the unprefixed names, there would be cases where the + definition in the C library would override the one in the libintl.so + shared library. Recall that on ELF systems, the symbols are looked + up in the following order: + 1. in the executable, + 2. in the shared libraries specified on the link command line, in order, + 3. in the dependencies of the shared libraries specified on the link + command line, + 4. in the dlopen()ed shared libraries, in the order in which they were + dlopen()ed. + The definition in the C library would override the one in libintl.so if + either + * -lc is given on the link command line and -lintl isn't, or + * -lc is given on the link command line before -lintl, or + * libintl.so is a dependency of a dlopen()ed shared library but not + linked to the executable at link time. + Since Solaris gettext() behaves differently than GNU gettext(), this + would be unacceptable. + + The redirection happens by default through macros in C, so that &gettext + is independent of the compilation unit, but through inline functions in + C++, in order not to interfere with the name mangling of class fields or + class methods called 'gettext'. */ + +/* The user can define _INTL_REDIRECT_INLINE or _INTL_REDIRECT_MACROS. + If he doesn't, we choose the method. A third possible method is + _INTL_REDIRECT_ASM, supported only by GCC. */ +#if !(defined _INTL_REDIRECT_INLINE || defined _INTL_REDIRECT_MACROS) +# if __GNUC__ >= 2 && !(__APPLE_CC__ > 1) && !defined __MINGW32__ && !(__GNUC__ == 2 && defined _AIX) && (defined __STDC__ || defined __cplusplus) +# define _INTL_REDIRECT_ASM +# else +# ifdef __cplusplus +# define _INTL_REDIRECT_INLINE +# else +# define _INTL_REDIRECT_MACROS +# endif +# endif +#endif +/* Auxiliary macros. */ +#ifdef _INTL_REDIRECT_ASM +# define _INTL_ASM(cname) __asm__ (_INTL_ASMNAME (__USER_LABEL_PREFIX__, #cname)) +# define _INTL_ASMNAME(prefix,cnamestring) _INTL_STRINGIFY (prefix) cnamestring +# define _INTL_STRINGIFY(prefix) #prefix +#else +# define _INTL_ASM(cname) +#endif + +/* _INTL_MAY_RETURN_STRING_ARG(n) declares that the given function may return + its n-th argument literally. This enables GCC to warn for example about + printf (gettext ("foo %y")). */ +#if __GNUC__ >= 3 && !(__APPLE_CC__ > 1 && defined __cplusplus) +# define _INTL_MAY_RETURN_STRING_ARG(n) __attribute__ ((__format_arg__ (n))) +#else +# define _INTL_MAY_RETURN_STRING_ARG(n) +#endif + +/* Look up MSGID in the current default message catalog for the current + LC_MESSAGES locale. If not found, returns MSGID itself (the default + text). */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_gettext (const char *__msgid) + _INTL_MAY_RETURN_STRING_ARG (1); +static inline char *gettext (const char *__msgid) +{ + return libintl_gettext (__msgid); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define gettext libintl_gettext +#endif +extern char *gettext (const char *__msgid) + _INTL_ASM (libintl_gettext) + _INTL_MAY_RETURN_STRING_ARG (1); +#endif + +/* Look up MSGID in the DOMAINNAME message catalog for the current + LC_MESSAGES locale. */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_dgettext (const char *__domainname, const char *__msgid) + _INTL_MAY_RETURN_STRING_ARG (2); +static inline char *dgettext (const char *__domainname, const char *__msgid) +{ + return libintl_dgettext (__domainname, __msgid); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define dgettext libintl_dgettext +#endif +extern char *dgettext (const char *__domainname, const char *__msgid) + _INTL_ASM (libintl_dgettext) + _INTL_MAY_RETURN_STRING_ARG (2); +#endif + +/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY + locale. */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_dcgettext (const char *__domainname, const char *__msgid, + int __category) + _INTL_MAY_RETURN_STRING_ARG (2); +static inline char *dcgettext (const char *__domainname, const char *__msgid, + int __category) +{ + return libintl_dcgettext (__domainname, __msgid, __category); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define dcgettext libintl_dcgettext +#endif +extern char *dcgettext (const char *__domainname, const char *__msgid, + int __category) + _INTL_ASM (libintl_dcgettext) + _INTL_MAY_RETURN_STRING_ARG (2); +#endif + + +/* Similar to `gettext' but select the plural form corresponding to the + number N. */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_ngettext (const char *__msgid1, const char *__msgid2, + unsigned long int __n) + _INTL_MAY_RETURN_STRING_ARG (1) _INTL_MAY_RETURN_STRING_ARG (2); +static inline char *ngettext (const char *__msgid1, const char *__msgid2, + unsigned long int __n) +{ + return libintl_ngettext (__msgid1, __msgid2, __n); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define ngettext libintl_ngettext +#endif +extern char *ngettext (const char *__msgid1, const char *__msgid2, + unsigned long int __n) + _INTL_ASM (libintl_ngettext) + _INTL_MAY_RETURN_STRING_ARG (1) _INTL_MAY_RETURN_STRING_ARG (2); +#endif + +/* Similar to `dgettext' but select the plural form corresponding to the + number N. */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_dngettext (const char *__domainname, const char *__msgid1, + const char *__msgid2, unsigned long int __n) + _INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3); +static inline char *dngettext (const char *__domainname, const char *__msgid1, + const char *__msgid2, unsigned long int __n) +{ + return libintl_dngettext (__domainname, __msgid1, __msgid2, __n); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define dngettext libintl_dngettext +#endif +extern char *dngettext (const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int __n) + _INTL_ASM (libintl_dngettext) + _INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3); +#endif + +/* Similar to `dcgettext' but select the plural form corresponding to the + number N. */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_dcngettext (const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int __n, int __category) + _INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3); +static inline char *dcngettext (const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int __n, int __category) +{ + return libintl_dcngettext (__domainname, __msgid1, __msgid2, __n, __category); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define dcngettext libintl_dcngettext +#endif +extern char *dcngettext (const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int __n, int __category) + _INTL_ASM (libintl_dcngettext) + _INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3); +#endif + + +#ifndef IN_LIBGLOCALE + +/* Set the current default message catalog to DOMAINNAME. + If DOMAINNAME is null, return the current default. + If DOMAINNAME is "", reset to the default of "messages". */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_textdomain (const char *__domainname); +static inline char *textdomain (const char *__domainname) +{ + return libintl_textdomain (__domainname); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define textdomain libintl_textdomain +#endif +extern char *textdomain (const char *__domainname) + _INTL_ASM (libintl_textdomain); +#endif + +/* Specify that the DOMAINNAME message catalog will be found + in DIRNAME rather than in the system locale data base. */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_bindtextdomain (const char *__domainname, + const char *__dirname); +static inline char *bindtextdomain (const char *__domainname, + const char *__dirname) +{ + return libintl_bindtextdomain (__domainname, __dirname); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define bindtextdomain libintl_bindtextdomain +#endif +extern char *bindtextdomain (const char *__domainname, const char *__dirname) + _INTL_ASM (libintl_bindtextdomain); +#endif + +/* Specify the character encoding in which the messages from the + DOMAINNAME message catalog will be returned. */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_bind_textdomain_codeset (const char *__domainname, + const char *__codeset); +static inline char *bind_textdomain_codeset (const char *__domainname, + const char *__codeset) +{ + return libintl_bind_textdomain_codeset (__domainname, __codeset); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define bind_textdomain_codeset libintl_bind_textdomain_codeset +#endif +extern char *bind_textdomain_codeset (const char *__domainname, + const char *__codeset) + _INTL_ASM (libintl_bind_textdomain_codeset); +#endif + +#endif /* IN_LIBGLOCALE */ + + +/* Support for format strings with positions in *printf(), following the + POSIX/XSI specification. + Note: These replacements for the *printf() functions are visible only + in source files that #include or #include "gettext.h". + Packages that use *printf() in source files that don't refer to _() + or gettext() but for which the format string could be the return value + of _() or gettext() need to add this #include. Oh well. */ + +#if !@HAVE_POSIX_PRINTF@ + +#include +#include + +/* Get va_list. */ +#if __STDC__ || defined __cplusplus || defined _MSC_VER +# include +#else +# include +#endif + +#undef fprintf +#define fprintf libintl_fprintf +extern int fprintf (FILE *, const char *, ...); +#undef vfprintf +#define vfprintf libintl_vfprintf +extern int vfprintf (FILE *, const char *, va_list); + +#undef printf +#if defined __NetBSD__ || defined __BEOS__ || defined __CYGWIN__ || defined __MINGW32__ +/* Don't break __attribute__((format(printf,M,N))). + This redefinition is only possible because the libc in NetBSD, Cygwin, + mingw does not have a function __printf__. */ +# define libintl_printf __printf__ +#endif +#define printf libintl_printf +extern int printf (const char *, ...); +#undef vprintf +#define vprintf libintl_vprintf +extern int vprintf (const char *, va_list); + +#undef sprintf +#define sprintf libintl_sprintf +extern int sprintf (char *, const char *, ...); +#undef vsprintf +#define vsprintf libintl_vsprintf +extern int vsprintf (char *, const char *, va_list); + +#if @HAVE_SNPRINTF@ + +#undef snprintf +#define snprintf libintl_snprintf +extern int snprintf (char *, size_t, const char *, ...); +#undef vsnprintf +#define vsnprintf libintl_vsnprintf +extern int vsnprintf (char *, size_t, const char *, va_list); + +#endif + +#if @HAVE_ASPRINTF@ + +#undef asprintf +#define asprintf libintl_asprintf +extern int asprintf (char **, const char *, ...); +#undef vasprintf +#define vasprintf libintl_vasprintf +extern int vasprintf (char **, const char *, va_list); + +#endif + +#if @HAVE_WPRINTF@ + +#undef fwprintf +#define fwprintf libintl_fwprintf +extern int fwprintf (FILE *, const wchar_t *, ...); +#undef vfwprintf +#define vfwprintf libintl_vfwprintf +extern int vfwprintf (FILE *, const wchar_t *, va_list); + +#undef wprintf +#define wprintf libintl_wprintf +extern int wprintf (const wchar_t *, ...); +#undef vwprintf +#define vwprintf libintl_vwprintf +extern int vwprintf (const wchar_t *, va_list); + +#undef swprintf +#define swprintf libintl_swprintf +extern int swprintf (wchar_t *, size_t, const wchar_t *, ...); +#undef vswprintf +#define vswprintf libintl_vswprintf +extern int vswprintf (wchar_t *, size_t, const wchar_t *, va_list); + +#endif + +#endif + + +/* Support for relocatable packages. */ + +/* Sets the original and the current installation prefix of the package. + Relocation simply replaces a pathname starting with the original prefix + by the corresponding pathname with the current prefix instead. Both + prefixes should be directory names without trailing slash (i.e. use "" + instead of "/"). */ +#define libintl_set_relocation_prefix libintl_set_relocation_prefix +extern void + libintl_set_relocation_prefix (const char *orig_prefix, + const char *curr_prefix); + + +#ifdef __cplusplus +} +#endif + +#endif /* libintl.h */ diff --git a/etc/wyatt8740/intl/libintl.rc b/etc/wyatt8740/intl/libintl.rc new file mode 100644 index 0000000..f00f0b3 --- /dev/null +++ b/etc/wyatt8740/intl/libintl.rc @@ -0,0 +1,38 @@ +/* Resources for intl.dll */ + +#include + +VS_VERSION_INFO VERSIONINFO + FILEVERSION PACKAGE_VERSION_MAJOR,PACKAGE_VERSION_MINOR,PACKAGE_VERSION_SUBMINOR,0 + PRODUCTVERSION PACKAGE_VERSION_MAJOR,PACKAGE_VERSION_MINOR,PACKAGE_VERSION_SUBMINOR,0 + FILEFLAGSMASK 0x3fL /* VS_FFI_FILEFLAGSMASK */ +#ifdef _DEBUG + FILEFLAGS 0x1L /* VS_FF_DEBUG */ +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x10004L /* VOS_DOS_WINDOWS32 */ + FILETYPE 0x2L /* VFT_DLL */ + FILESUBTYPE 0x0L /* VFT2_UNKNOWN */ +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "04090000" /* Lang = US English, Charset = ASCII */ + BEGIN + VALUE "Comments", "This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA\0" + VALUE "CompanyName", "Free Software Foundation\0" + VALUE "FileDescription", "LGPLed libintl for Windows NT/2000/XP/Vista and Windows 95/98/ME\0" + VALUE "FileVersion", PACKAGE_VERSION_STRING "\0" + VALUE "InternalName", "intl.dll\0" + VALUE "LegalCopyright", "Copyright (C) 1995-2007\0" + VALUE "LegalTrademarks", "\0" + VALUE "OriginalFilename", "intl.dll\0" + VALUE "ProductName", "libintl: accessing NLS message catalogs\0" + VALUE "ProductVersion", PACKAGE_VERSION_STRING "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0409, 0 /* US English, ASCII */ + END +END diff --git a/etc/wyatt8740/intl/loadinfo.h b/etc/wyatt8740/intl/loadinfo.h new file mode 100644 index 0000000..a7a1970 --- /dev/null +++ b/etc/wyatt8740/intl/loadinfo.h @@ -0,0 +1,132 @@ +/* Copyright (C) 1996-1999, 2000-2003, 2005-2006 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1996. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _LOADINFO_H +#define _LOADINFO_H 1 + +/* Declarations of locale dependent catalog lookup functions. + Implemented in + + localealias.c Possibly replace a locale name by another. + explodename.c Split a locale name into its various fields. + l10nflist.c Generate a list of filenames of possible message catalogs. + finddomain.c Find and open the relevant message catalogs. + + The main function _nl_find_domain() in finddomain.c is declared + in gettextP.h. + */ + +#ifndef internal_function +# define internal_function +#endif + +#ifndef LIBINTL_DLL_EXPORTED +# define LIBINTL_DLL_EXPORTED +#endif + +/* Tell the compiler when a conditional or integer expression is + almost always true or almost always false. */ +#ifndef HAVE_BUILTIN_EXPECT +# define __builtin_expect(expr, val) (expr) +#endif + +/* Separator in PATH like lists of pathnames. */ +#if ((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__) || defined __EMX__ || defined __DJGPP__ + /* Win32, OS/2, DOS */ +# define PATH_SEPARATOR ';' +#else + /* Unix */ +# define PATH_SEPARATOR ':' +#endif + +/* Encoding of locale name parts. */ +#define XPG_NORM_CODESET 1 +#define XPG_CODESET 2 +#define XPG_TERRITORY 4 +#define XPG_MODIFIER 8 + + +struct loaded_l10nfile +{ + const char *filename; + int decided; + + const void *data; + + struct loaded_l10nfile *next; + struct loaded_l10nfile *successor[1]; +}; + + +/* Normalize codeset name. There is no standard for the codeset + names. Normalization allows the user to use any of the common + names. The return value is dynamically allocated and has to be + freed by the caller. */ +extern const char *_nl_normalize_codeset (const char *codeset, + size_t name_len); + +/* Lookup a locale dependent file. + *L10NFILE_LIST denotes a pool of lookup results of locale dependent + files of the same kind, sorted in decreasing order of ->filename. + DIRLIST and DIRLIST_LEN are an argz list of directories in which to + look, containing at least one directory (i.e. DIRLIST_LEN > 0). + MASK, LANGUAGE, TERRITORY, CODESET, NORMALIZED_CODESET, MODIFIER + are the pieces of the locale name, as produced by _nl_explode_name(). + FILENAME is the filename suffix. + The return value is the lookup result, either found in *L10NFILE_LIST, + or - if DO_ALLOCATE is nonzero - freshly allocated, or possibly NULL. + If the return value is non-NULL, it is added to *L10NFILE_LIST, and + its ->next field denotes the chaining inside *L10NFILE_LIST, and + furthermore its ->successor[] field contains a list of other lookup + results from which this lookup result inherits. */ +extern struct loaded_l10nfile * +_nl_make_l10nflist (struct loaded_l10nfile **l10nfile_list, + const char *dirlist, size_t dirlist_len, int mask, + const char *language, const char *territory, + const char *codeset, const char *normalized_codeset, + const char *modifier, + const char *filename, int do_allocate); + +/* Lookup the real locale name for a locale alias NAME, or NULL if + NAME is not a locale alias (but possibly a real locale name). + The return value is statically allocated and must not be freed. */ +/* Part of the libintl ABI only for the sake of the gettext.m4 macro. */ +extern LIBINTL_DLL_EXPORTED const char *_nl_expand_alias (const char *name); + +/* Split a locale name NAME into its pieces: language, modifier, + territory, codeset. + NAME gets destructively modified: NUL bytes are inserted here and + there. *LANGUAGE gets assigned NAME. Each of *MODIFIER, *TERRITORY, + *CODESET gets assigned either a pointer into the old NAME string, or + NULL. *NORMALIZED_CODESET gets assigned the expanded *CODESET, if it + is different from *CODESET; this one is dynamically allocated and has + to be freed by the caller. + The return value is a bitmask, where each bit corresponds to one + filled-in value: + XPG_MODIFIER for *MODIFIER, + XPG_TERRITORY for *TERRITORY, + XPG_CODESET for *CODESET, + XPG_NORM_CODESET for *NORMALIZED_CODESET. + */ +extern int _nl_explode_name (char *name, const char **language, + const char **modifier, const char **territory, + const char **codeset, + const char **normalized_codeset); + +#endif /* loadinfo.h */ diff --git a/etc/wyatt8740/intl/loadmsgcat.c b/etc/wyatt8740/intl/loadmsgcat.c new file mode 100644 index 0000000..3432a8c --- /dev/null +++ b/etc/wyatt8740/intl/loadmsgcat.c @@ -0,0 +1,1336 @@ +/* Load needed message catalogs. + Copyright (C) 1995-1999, 2000-2007 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Tell glibc's to provide a prototype for mempcpy(). + This must come before because may include + , and once has been included, it's too late. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include +#include + +#ifdef __GNUC__ +# undef alloca +# define alloca __builtin_alloca +# define HAVE_ALLOCA 1 +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# if defined HAVE_ALLOCA_H || defined _LIBC +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca +char *alloca (); +# endif +# endif +# endif +# endif +#endif + +#include +#include + +#if defined HAVE_UNISTD_H || defined _LIBC +# include +#endif + +#ifdef _LIBC +# include +# include +#endif + +#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ + || (defined _LIBC && defined _POSIX_MAPPED_FILES) +# include +# undef HAVE_MMAP +# define HAVE_MMAP 1 +#else +# undef HAVE_MMAP +#endif + +#if defined HAVE_STDINT_H_WITH_UINTMAX || defined _LIBC +# include +#endif +#if defined HAVE_INTTYPES_H || defined _LIBC +# include +#endif + +#include "gmo.h" +#include "gettextP.h" +#include "hash-string.h" +#include "plural-exp.h" + +#ifdef _LIBC +# include "../locale/localeinfo.h" +# include +#endif + +/* Handle multi-threaded applications. */ +#ifdef _LIBC +# include +#else +# include "lock.h" +#endif + +/* Provide fallback values for macros that ought to be defined in . + Note that our fallback values need not be literal strings, because we don't + use them with preprocessor string concatenation. */ +#if !defined PRId8 || PRI_MACROS_BROKEN +# undef PRId8 +# define PRId8 "d" +#endif +#if !defined PRIi8 || PRI_MACROS_BROKEN +# undef PRIi8 +# define PRIi8 "i" +#endif +#if !defined PRIo8 || PRI_MACROS_BROKEN +# undef PRIo8 +# define PRIo8 "o" +#endif +#if !defined PRIu8 || PRI_MACROS_BROKEN +# undef PRIu8 +# define PRIu8 "u" +#endif +#if !defined PRIx8 || PRI_MACROS_BROKEN +# undef PRIx8 +# define PRIx8 "x" +#endif +#if !defined PRIX8 || PRI_MACROS_BROKEN +# undef PRIX8 +# define PRIX8 "X" +#endif +#if !defined PRId16 || PRI_MACROS_BROKEN +# undef PRId16 +# define PRId16 "d" +#endif +#if !defined PRIi16 || PRI_MACROS_BROKEN +# undef PRIi16 +# define PRIi16 "i" +#endif +#if !defined PRIo16 || PRI_MACROS_BROKEN +# undef PRIo16 +# define PRIo16 "o" +#endif +#if !defined PRIu16 || PRI_MACROS_BROKEN +# undef PRIu16 +# define PRIu16 "u" +#endif +#if !defined PRIx16 || PRI_MACROS_BROKEN +# undef PRIx16 +# define PRIx16 "x" +#endif +#if !defined PRIX16 || PRI_MACROS_BROKEN +# undef PRIX16 +# define PRIX16 "X" +#endif +#if !defined PRId32 || PRI_MACROS_BROKEN +# undef PRId32 +# define PRId32 "d" +#endif +#if !defined PRIi32 || PRI_MACROS_BROKEN +# undef PRIi32 +# define PRIi32 "i" +#endif +#if !defined PRIo32 || PRI_MACROS_BROKEN +# undef PRIo32 +# define PRIo32 "o" +#endif +#if !defined PRIu32 || PRI_MACROS_BROKEN +# undef PRIu32 +# define PRIu32 "u" +#endif +#if !defined PRIx32 || PRI_MACROS_BROKEN +# undef PRIx32 +# define PRIx32 "x" +#endif +#if !defined PRIX32 || PRI_MACROS_BROKEN +# undef PRIX32 +# define PRIX32 "X" +#endif +#if !defined PRId64 || PRI_MACROS_BROKEN +# undef PRId64 +# define PRId64 (sizeof (long) == 8 ? "ld" : "lld") +#endif +#if !defined PRIi64 || PRI_MACROS_BROKEN +# undef PRIi64 +# define PRIi64 (sizeof (long) == 8 ? "li" : "lli") +#endif +#if !defined PRIo64 || PRI_MACROS_BROKEN +# undef PRIo64 +# define PRIo64 (sizeof (long) == 8 ? "lo" : "llo") +#endif +#if !defined PRIu64 || PRI_MACROS_BROKEN +# undef PRIu64 +# define PRIu64 (sizeof (long) == 8 ? "lu" : "llu") +#endif +#if !defined PRIx64 || PRI_MACROS_BROKEN +# undef PRIx64 +# define PRIx64 (sizeof (long) == 8 ? "lx" : "llx") +#endif +#if !defined PRIX64 || PRI_MACROS_BROKEN +# undef PRIX64 +# define PRIX64 (sizeof (long) == 8 ? "lX" : "llX") +#endif +#if !defined PRIdLEAST8 || PRI_MACROS_BROKEN +# undef PRIdLEAST8 +# define PRIdLEAST8 "d" +#endif +#if !defined PRIiLEAST8 || PRI_MACROS_BROKEN +# undef PRIiLEAST8 +# define PRIiLEAST8 "i" +#endif +#if !defined PRIoLEAST8 || PRI_MACROS_BROKEN +# undef PRIoLEAST8 +# define PRIoLEAST8 "o" +#endif +#if !defined PRIuLEAST8 || PRI_MACROS_BROKEN +# undef PRIuLEAST8 +# define PRIuLEAST8 "u" +#endif +#if !defined PRIxLEAST8 || PRI_MACROS_BROKEN +# undef PRIxLEAST8 +# define PRIxLEAST8 "x" +#endif +#if !defined PRIXLEAST8 || PRI_MACROS_BROKEN +# undef PRIXLEAST8 +# define PRIXLEAST8 "X" +#endif +#if !defined PRIdLEAST16 || PRI_MACROS_BROKEN +# undef PRIdLEAST16 +# define PRIdLEAST16 "d" +#endif +#if !defined PRIiLEAST16 || PRI_MACROS_BROKEN +# undef PRIiLEAST16 +# define PRIiLEAST16 "i" +#endif +#if !defined PRIoLEAST16 || PRI_MACROS_BROKEN +# undef PRIoLEAST16 +# define PRIoLEAST16 "o" +#endif +#if !defined PRIuLEAST16 || PRI_MACROS_BROKEN +# undef PRIuLEAST16 +# define PRIuLEAST16 "u" +#endif +#if !defined PRIxLEAST16 || PRI_MACROS_BROKEN +# undef PRIxLEAST16 +# define PRIxLEAST16 "x" +#endif +#if !defined PRIXLEAST16 || PRI_MACROS_BROKEN +# undef PRIXLEAST16 +# define PRIXLEAST16 "X" +#endif +#if !defined PRIdLEAST32 || PRI_MACROS_BROKEN +# undef PRIdLEAST32 +# define PRIdLEAST32 "d" +#endif +#if !defined PRIiLEAST32 || PRI_MACROS_BROKEN +# undef PRIiLEAST32 +# define PRIiLEAST32 "i" +#endif +#if !defined PRIoLEAST32 || PRI_MACROS_BROKEN +# undef PRIoLEAST32 +# define PRIoLEAST32 "o" +#endif +#if !defined PRIuLEAST32 || PRI_MACROS_BROKEN +# undef PRIuLEAST32 +# define PRIuLEAST32 "u" +#endif +#if !defined PRIxLEAST32 || PRI_MACROS_BROKEN +# undef PRIxLEAST32 +# define PRIxLEAST32 "x" +#endif +#if !defined PRIXLEAST32 || PRI_MACROS_BROKEN +# undef PRIXLEAST32 +# define PRIXLEAST32 "X" +#endif +#if !defined PRIdLEAST64 || PRI_MACROS_BROKEN +# undef PRIdLEAST64 +# define PRIdLEAST64 PRId64 +#endif +#if !defined PRIiLEAST64 || PRI_MACROS_BROKEN +# undef PRIiLEAST64 +# define PRIiLEAST64 PRIi64 +#endif +#if !defined PRIoLEAST64 || PRI_MACROS_BROKEN +# undef PRIoLEAST64 +# define PRIoLEAST64 PRIo64 +#endif +#if !defined PRIuLEAST64 || PRI_MACROS_BROKEN +# undef PRIuLEAST64 +# define PRIuLEAST64 PRIu64 +#endif +#if !defined PRIxLEAST64 || PRI_MACROS_BROKEN +# undef PRIxLEAST64 +# define PRIxLEAST64 PRIx64 +#endif +#if !defined PRIXLEAST64 || PRI_MACROS_BROKEN +# undef PRIXLEAST64 +# define PRIXLEAST64 PRIX64 +#endif +#if !defined PRIdFAST8 || PRI_MACROS_BROKEN +# undef PRIdFAST8 +# define PRIdFAST8 "d" +#endif +#if !defined PRIiFAST8 || PRI_MACROS_BROKEN +# undef PRIiFAST8 +# define PRIiFAST8 "i" +#endif +#if !defined PRIoFAST8 || PRI_MACROS_BROKEN +# undef PRIoFAST8 +# define PRIoFAST8 "o" +#endif +#if !defined PRIuFAST8 || PRI_MACROS_BROKEN +# undef PRIuFAST8 +# define PRIuFAST8 "u" +#endif +#if !defined PRIxFAST8 || PRI_MACROS_BROKEN +# undef PRIxFAST8 +# define PRIxFAST8 "x" +#endif +#if !defined PRIXFAST8 || PRI_MACROS_BROKEN +# undef PRIXFAST8 +# define PRIXFAST8 "X" +#endif +#if !defined PRIdFAST16 || PRI_MACROS_BROKEN +# undef PRIdFAST16 +# define PRIdFAST16 "d" +#endif +#if !defined PRIiFAST16 || PRI_MACROS_BROKEN +# undef PRIiFAST16 +# define PRIiFAST16 "i" +#endif +#if !defined PRIoFAST16 || PRI_MACROS_BROKEN +# undef PRIoFAST16 +# define PRIoFAST16 "o" +#endif +#if !defined PRIuFAST16 || PRI_MACROS_BROKEN +# undef PRIuFAST16 +# define PRIuFAST16 "u" +#endif +#if !defined PRIxFAST16 || PRI_MACROS_BROKEN +# undef PRIxFAST16 +# define PRIxFAST16 "x" +#endif +#if !defined PRIXFAST16 || PRI_MACROS_BROKEN +# undef PRIXFAST16 +# define PRIXFAST16 "X" +#endif +#if !defined PRIdFAST32 || PRI_MACROS_BROKEN +# undef PRIdFAST32 +# define PRIdFAST32 "d" +#endif +#if !defined PRIiFAST32 || PRI_MACROS_BROKEN +# undef PRIiFAST32 +# define PRIiFAST32 "i" +#endif +#if !defined PRIoFAST32 || PRI_MACROS_BROKEN +# undef PRIoFAST32 +# define PRIoFAST32 "o" +#endif +#if !defined PRIuFAST32 || PRI_MACROS_BROKEN +# undef PRIuFAST32 +# define PRIuFAST32 "u" +#endif +#if !defined PRIxFAST32 || PRI_MACROS_BROKEN +# undef PRIxFAST32 +# define PRIxFAST32 "x" +#endif +#if !defined PRIXFAST32 || PRI_MACROS_BROKEN +# undef PRIXFAST32 +# define PRIXFAST32 "X" +#endif +#if !defined PRIdFAST64 || PRI_MACROS_BROKEN +# undef PRIdFAST64 +# define PRIdFAST64 PRId64 +#endif +#if !defined PRIiFAST64 || PRI_MACROS_BROKEN +# undef PRIiFAST64 +# define PRIiFAST64 PRIi64 +#endif +#if !defined PRIoFAST64 || PRI_MACROS_BROKEN +# undef PRIoFAST64 +# define PRIoFAST64 PRIo64 +#endif +#if !defined PRIuFAST64 || PRI_MACROS_BROKEN +# undef PRIuFAST64 +# define PRIuFAST64 PRIu64 +#endif +#if !defined PRIxFAST64 || PRI_MACROS_BROKEN +# undef PRIxFAST64 +# define PRIxFAST64 PRIx64 +#endif +#if !defined PRIXFAST64 || PRI_MACROS_BROKEN +# undef PRIXFAST64 +# define PRIXFAST64 PRIX64 +#endif +#if !defined PRIdMAX || PRI_MACROS_BROKEN +# undef PRIdMAX +# define PRIdMAX (sizeof (uintmax_t) == sizeof (long) ? "ld" : "lld") +#endif +#if !defined PRIiMAX || PRI_MACROS_BROKEN +# undef PRIiMAX +# define PRIiMAX (sizeof (uintmax_t) == sizeof (long) ? "li" : "lli") +#endif +#if !defined PRIoMAX || PRI_MACROS_BROKEN +# undef PRIoMAX +# define PRIoMAX (sizeof (uintmax_t) == sizeof (long) ? "lo" : "llo") +#endif +#if !defined PRIuMAX || PRI_MACROS_BROKEN +# undef PRIuMAX +# define PRIuMAX (sizeof (uintmax_t) == sizeof (long) ? "lu" : "llu") +#endif +#if !defined PRIxMAX || PRI_MACROS_BROKEN +# undef PRIxMAX +# define PRIxMAX (sizeof (uintmax_t) == sizeof (long) ? "lx" : "llx") +#endif +#if !defined PRIXMAX || PRI_MACROS_BROKEN +# undef PRIXMAX +# define PRIXMAX (sizeof (uintmax_t) == sizeof (long) ? "lX" : "llX") +#endif +#if !defined PRIdPTR || PRI_MACROS_BROKEN +# undef PRIdPTR +# define PRIdPTR \ + (sizeof (void *) == sizeof (long) ? "ld" : \ + sizeof (void *) == sizeof (int) ? "d" : \ + "lld") +#endif +#if !defined PRIiPTR || PRI_MACROS_BROKEN +# undef PRIiPTR +# define PRIiPTR \ + (sizeof (void *) == sizeof (long) ? "li" : \ + sizeof (void *) == sizeof (int) ? "i" : \ + "lli") +#endif +#if !defined PRIoPTR || PRI_MACROS_BROKEN +# undef PRIoPTR +# define PRIoPTR \ + (sizeof (void *) == sizeof (long) ? "lo" : \ + sizeof (void *) == sizeof (int) ? "o" : \ + "llo") +#endif +#if !defined PRIuPTR || PRI_MACROS_BROKEN +# undef PRIuPTR +# define PRIuPTR \ + (sizeof (void *) == sizeof (long) ? "lu" : \ + sizeof (void *) == sizeof (int) ? "u" : \ + "llu") +#endif +#if !defined PRIxPTR || PRI_MACROS_BROKEN +# undef PRIxPTR +# define PRIxPTR \ + (sizeof (void *) == sizeof (long) ? "lx" : \ + sizeof (void *) == sizeof (int) ? "x" : \ + "llx") +#endif +#if !defined PRIXPTR || PRI_MACROS_BROKEN +# undef PRIXPTR +# define PRIXPTR \ + (sizeof (void *) == sizeof (long) ? "lX" : \ + sizeof (void *) == sizeof (int) ? "X" : \ + "llX") +#endif + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ISO C functions. This is required by the standard + because some ISO C functions will require linking with this object + file and the name space must not be polluted. */ +# define open(name, flags) open_not_cancel_2 (name, flags) +# define close(fd) close_not_cancel_no_status (fd) +# define read(fd, buf, n) read_not_cancel (fd, buf, n) +# define mmap(addr, len, prot, flags, fd, offset) \ + __mmap (addr, len, prot, flags, fd, offset) +# define munmap(addr, len) __munmap (addr, len) +#endif + +/* For those losing systems which don't have `alloca' we have to add + some additional code emulating it. */ +#ifdef HAVE_ALLOCA +# define freea(p) /* nothing */ +#else +# define alloca(n) malloc (n) +# define freea(p) free (p) +#endif + +/* For systems that distinguish between text and binary I/O. + O_BINARY is usually declared in . */ +#if !defined O_BINARY && defined _O_BINARY + /* For MSC-compatible compilers. */ +# define O_BINARY _O_BINARY +# define O_TEXT _O_TEXT +#endif +#ifdef __BEOS__ + /* BeOS 5 has O_BINARY and O_TEXT, but they have no effect. */ +# undef O_BINARY +# undef O_TEXT +#endif +/* On reasonable systems, binary I/O is the default. */ +#ifndef O_BINARY +# define O_BINARY 0 +#endif + + +/* We need a sign, whether a new catalog was loaded, which can be associated + with all translations. This is important if the translations are + cached by one of GCC's features. */ +int _nl_msg_cat_cntr; + + +/* Expand a system dependent string segment. Return NULL if unsupported. */ +static const char * +get_sysdep_segment_value (const char *name) +{ + /* Test for an ISO C 99 section 7.8.1 format string directive. + Syntax: + P R I { d | i | o | u | x | X } + { { | LEAST | FAST } { 8 | 16 | 32 | 64 } | MAX | PTR } */ + /* We don't use a table of 14 times 6 'const char *' strings here, because + data relocations cost startup time. */ + if (name[0] == 'P' && name[1] == 'R' && name[2] == 'I') + { + if (name[3] == 'd' || name[3] == 'i' || name[3] == 'o' || name[3] == 'u' + || name[3] == 'x' || name[3] == 'X') + { + if (name[4] == '8' && name[5] == '\0') + { + if (name[3] == 'd') + return PRId8; + if (name[3] == 'i') + return PRIi8; + if (name[3] == 'o') + return PRIo8; + if (name[3] == 'u') + return PRIu8; + if (name[3] == 'x') + return PRIx8; + if (name[3] == 'X') + return PRIX8; + abort (); + } + if (name[4] == '1' && name[5] == '6' && name[6] == '\0') + { + if (name[3] == 'd') + return PRId16; + if (name[3] == 'i') + return PRIi16; + if (name[3] == 'o') + return PRIo16; + if (name[3] == 'u') + return PRIu16; + if (name[3] == 'x') + return PRIx16; + if (name[3] == 'X') + return PRIX16; + abort (); + } + if (name[4] == '3' && name[5] == '2' && name[6] == '\0') + { + if (name[3] == 'd') + return PRId32; + if (name[3] == 'i') + return PRIi32; + if (name[3] == 'o') + return PRIo32; + if (name[3] == 'u') + return PRIu32; + if (name[3] == 'x') + return PRIx32; + if (name[3] == 'X') + return PRIX32; + abort (); + } + if (name[4] == '6' && name[5] == '4' && name[6] == '\0') + { + if (name[3] == 'd') + return PRId64; + if (name[3] == 'i') + return PRIi64; + if (name[3] == 'o') + return PRIo64; + if (name[3] == 'u') + return PRIu64; + if (name[3] == 'x') + return PRIx64; + if (name[3] == 'X') + return PRIX64; + abort (); + } + if (name[4] == 'L' && name[5] == 'E' && name[6] == 'A' + && name[7] == 'S' && name[8] == 'T') + { + if (name[9] == '8' && name[10] == '\0') + { + if (name[3] == 'd') + return PRIdLEAST8; + if (name[3] == 'i') + return PRIiLEAST8; + if (name[3] == 'o') + return PRIoLEAST8; + if (name[3] == 'u') + return PRIuLEAST8; + if (name[3] == 'x') + return PRIxLEAST8; + if (name[3] == 'X') + return PRIXLEAST8; + abort (); + } + if (name[9] == '1' && name[10] == '6' && name[11] == '\0') + { + if (name[3] == 'd') + return PRIdLEAST16; + if (name[3] == 'i') + return PRIiLEAST16; + if (name[3] == 'o') + return PRIoLEAST16; + if (name[3] == 'u') + return PRIuLEAST16; + if (name[3] == 'x') + return PRIxLEAST16; + if (name[3] == 'X') + return PRIXLEAST16; + abort (); + } + if (name[9] == '3' && name[10] == '2' && name[11] == '\0') + { + if (name[3] == 'd') + return PRIdLEAST32; + if (name[3] == 'i') + return PRIiLEAST32; + if (name[3] == 'o') + return PRIoLEAST32; + if (name[3] == 'u') + return PRIuLEAST32; + if (name[3] == 'x') + return PRIxLEAST32; + if (name[3] == 'X') + return PRIXLEAST32; + abort (); + } + if (name[9] == '6' && name[10] == '4' && name[11] == '\0') + { + if (name[3] == 'd') + return PRIdLEAST64; + if (name[3] == 'i') + return PRIiLEAST64; + if (name[3] == 'o') + return PRIoLEAST64; + if (name[3] == 'u') + return PRIuLEAST64; + if (name[3] == 'x') + return PRIxLEAST64; + if (name[3] == 'X') + return PRIXLEAST64; + abort (); + } + } + if (name[4] == 'F' && name[5] == 'A' && name[6] == 'S' + && name[7] == 'T') + { + if (name[8] == '8' && name[9] == '\0') + { + if (name[3] == 'd') + return PRIdFAST8; + if (name[3] == 'i') + return PRIiFAST8; + if (name[3] == 'o') + return PRIoFAST8; + if (name[3] == 'u') + return PRIuFAST8; + if (name[3] == 'x') + return PRIxFAST8; + if (name[3] == 'X') + return PRIXFAST8; + abort (); + } + if (name[8] == '1' && name[9] == '6' && name[10] == '\0') + { + if (name[3] == 'd') + return PRIdFAST16; + if (name[3] == 'i') + return PRIiFAST16; + if (name[3] == 'o') + return PRIoFAST16; + if (name[3] == 'u') + return PRIuFAST16; + if (name[3] == 'x') + return PRIxFAST16; + if (name[3] == 'X') + return PRIXFAST16; + abort (); + } + if (name[8] == '3' && name[9] == '2' && name[10] == '\0') + { + if (name[3] == 'd') + return PRIdFAST32; + if (name[3] == 'i') + return PRIiFAST32; + if (name[3] == 'o') + return PRIoFAST32; + if (name[3] == 'u') + return PRIuFAST32; + if (name[3] == 'x') + return PRIxFAST32; + if (name[3] == 'X') + return PRIXFAST32; + abort (); + } + if (name[8] == '6' && name[9] == '4' && name[10] == '\0') + { + if (name[3] == 'd') + return PRIdFAST64; + if (name[3] == 'i') + return PRIiFAST64; + if (name[3] == 'o') + return PRIoFAST64; + if (name[3] == 'u') + return PRIuFAST64; + if (name[3] == 'x') + return PRIxFAST64; + if (name[3] == 'X') + return PRIXFAST64; + abort (); + } + } + if (name[4] == 'M' && name[5] == 'A' && name[6] == 'X' + && name[7] == '\0') + { + if (name[3] == 'd') + return PRIdMAX; + if (name[3] == 'i') + return PRIiMAX; + if (name[3] == 'o') + return PRIoMAX; + if (name[3] == 'u') + return PRIuMAX; + if (name[3] == 'x') + return PRIxMAX; + if (name[3] == 'X') + return PRIXMAX; + abort (); + } + if (name[4] == 'P' && name[5] == 'T' && name[6] == 'R' + && name[7] == '\0') + { + if (name[3] == 'd') + return PRIdPTR; + if (name[3] == 'i') + return PRIiPTR; + if (name[3] == 'o') + return PRIoPTR; + if (name[3] == 'u') + return PRIuPTR; + if (name[3] == 'x') + return PRIxPTR; + if (name[3] == 'X') + return PRIXPTR; + abort (); + } + } + } + /* Test for a glibc specific printf() format directive flag. */ + if (name[0] == 'I' && name[1] == '\0') + { +#if defined _LIBC || __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) + /* The 'I' flag, in numeric format directives, replaces ASCII digits + with the 'outdigits' defined in the LC_CTYPE locale facet. This is + used for Farsi (Persian) and maybe Arabic. */ + return "I"; +#else + return ""; +#endif + } + /* Other system dependent strings are not valid. */ + return NULL; +} + +/* Load the message catalogs specified by FILENAME. If it is no valid + message catalog do nothing. */ +void +internal_function +_nl_load_domain (struct loaded_l10nfile *domain_file, + struct binding *domainbinding) +{ + __libc_lock_define_initialized_recursive (static, lock) + int fd = -1; + size_t size; +#ifdef _LIBC + struct stat64 st; +#else + struct stat st; +#endif + struct mo_file_header *data = (struct mo_file_header *) -1; + int use_mmap = 0; + struct loaded_domain *domain; + int revision; + const char *nullentry; + size_t nullentrylen; + + __libc_lock_lock_recursive (lock); + if (domain_file->decided != 0) + { + /* There are two possibilities: + + + this is the same thread calling again during this initialization + via _nl_find_msg. We have initialized everything this call needs. + + + this is another thread which tried to initialize this object. + Not necessary anymore since if the lock is available this + is finished. + */ + goto done; + } + + domain_file->decided = -1; + domain_file->data = NULL; + + /* Note that it would be useless to store domainbinding in domain_file + because domainbinding might be == NULL now but != NULL later (after + a call to bind_textdomain_codeset). */ + + /* If the record does not represent a valid locale the FILENAME + might be NULL. This can happen when according to the given + specification the locale file name is different for XPG and CEN + syntax. */ + if (domain_file->filename == NULL) + goto out; + + /* Try to open the addressed file. */ + fd = open (domain_file->filename, O_RDONLY | O_BINARY); + if (fd == -1) + goto out; + + /* We must know about the size of the file. */ + if ( +#ifdef _LIBC + __builtin_expect (fstat64 (fd, &st) != 0, 0) +#else + __builtin_expect (fstat (fd, &st) != 0, 0) +#endif + || __builtin_expect ((size = (size_t) st.st_size) != st.st_size, 0) + || __builtin_expect (size < sizeof (struct mo_file_header), 0)) + /* Something went wrong. */ + goto out; + +#ifdef HAVE_MMAP + /* Now we are ready to load the file. If mmap() is available we try + this first. If not available or it failed we try to load it. */ + data = (struct mo_file_header *) mmap (NULL, size, PROT_READ, + MAP_PRIVATE, fd, 0); + + if (__builtin_expect (data != (struct mo_file_header *) -1, 1)) + { + /* mmap() call was successful. */ + close (fd); + fd = -1; + use_mmap = 1; + } +#endif + + /* If the data is not yet available (i.e. mmap'ed) we try to load + it manually. */ + if (data == (struct mo_file_header *) -1) + { + size_t to_read; + char *read_ptr; + + data = (struct mo_file_header *) malloc (size); + if (data == NULL) + goto out; + + to_read = size; + read_ptr = (char *) data; + do + { + long int nb = (long int) read (fd, read_ptr, to_read); + if (nb <= 0) + { +#ifdef EINTR + if (nb == -1 && errno == EINTR) + continue; +#endif + goto out; + } + read_ptr += nb; + to_read -= nb; + } + while (to_read > 0); + + close (fd); + fd = -1; + } + + /* Using the magic number we can test whether it really is a message + catalog file. */ + if (__builtin_expect (data->magic != _MAGIC && data->magic != _MAGIC_SWAPPED, + 0)) + { + /* The magic number is wrong: not a message catalog file. */ +#ifdef HAVE_MMAP + if (use_mmap) + munmap ((caddr_t) data, size); + else +#endif + free (data); + goto out; + } + + domain = (struct loaded_domain *) malloc (sizeof (struct loaded_domain)); + if (domain == NULL) + goto out; + domain_file->data = domain; + + domain->data = (char *) data; + domain->use_mmap = use_mmap; + domain->mmap_size = size; + domain->must_swap = data->magic != _MAGIC; + domain->malloced = NULL; + + /* Fill in the information about the available tables. */ + revision = W (domain->must_swap, data->revision); + /* We support only the major revisions 0 and 1. */ + switch (revision >> 16) + { + case 0: + case 1: + domain->nstrings = W (domain->must_swap, data->nstrings); + domain->orig_tab = (const struct string_desc *) + ((char *) data + W (domain->must_swap, data->orig_tab_offset)); + domain->trans_tab = (const struct string_desc *) + ((char *) data + W (domain->must_swap, data->trans_tab_offset)); + domain->hash_size = W (domain->must_swap, data->hash_tab_size); + domain->hash_tab = + (domain->hash_size > 2 + ? (const nls_uint32 *) + ((char *) data + W (domain->must_swap, data->hash_tab_offset)) + : NULL); + domain->must_swap_hash_tab = domain->must_swap; + + /* Now dispatch on the minor revision. */ + switch (revision & 0xffff) + { + case 0: + domain->n_sysdep_strings = 0; + domain->orig_sysdep_tab = NULL; + domain->trans_sysdep_tab = NULL; + break; + case 1: + default: + { + nls_uint32 n_sysdep_strings; + + if (domain->hash_tab == NULL) + /* This is invalid. These minor revisions need a hash table. */ + goto invalid; + + n_sysdep_strings = + W (domain->must_swap, data->n_sysdep_strings); + if (n_sysdep_strings > 0) + { + nls_uint32 n_sysdep_segments; + const struct sysdep_segment *sysdep_segments; + const char **sysdep_segment_values; + const nls_uint32 *orig_sysdep_tab; + const nls_uint32 *trans_sysdep_tab; + nls_uint32 n_inmem_sysdep_strings; + size_t memneed; + char *mem; + struct sysdep_string_desc *inmem_orig_sysdep_tab; + struct sysdep_string_desc *inmem_trans_sysdep_tab; + nls_uint32 *inmem_hash_tab; + unsigned int i, j; + + /* Get the values of the system dependent segments. */ + n_sysdep_segments = + W (domain->must_swap, data->n_sysdep_segments); + sysdep_segments = (const struct sysdep_segment *) + ((char *) data + + W (domain->must_swap, data->sysdep_segments_offset)); + sysdep_segment_values = + (const char **) + alloca (n_sysdep_segments * sizeof (const char *)); + for (i = 0; i < n_sysdep_segments; i++) + { + const char *name = + (char *) data + + W (domain->must_swap, sysdep_segments[i].offset); + nls_uint32 namelen = + W (domain->must_swap, sysdep_segments[i].length); + + if (!(namelen > 0 && name[namelen - 1] == '\0')) + { + freea (sysdep_segment_values); + goto invalid; + } + + sysdep_segment_values[i] = get_sysdep_segment_value (name); + } + + orig_sysdep_tab = (const nls_uint32 *) + ((char *) data + + W (domain->must_swap, data->orig_sysdep_tab_offset)); + trans_sysdep_tab = (const nls_uint32 *) + ((char *) data + + W (domain->must_swap, data->trans_sysdep_tab_offset)); + + /* Compute the amount of additional memory needed for the + system dependent strings and the augmented hash table. + At the same time, also drop string pairs which refer to + an undefined system dependent segment. */ + n_inmem_sysdep_strings = 0; + memneed = domain->hash_size * sizeof (nls_uint32); + for (i = 0; i < n_sysdep_strings; i++) + { + int valid = 1; + size_t needs[2]; + + for (j = 0; j < 2; j++) + { + const struct sysdep_string *sysdep_string = + (const struct sysdep_string *) + ((char *) data + + W (domain->must_swap, + j == 0 + ? orig_sysdep_tab[i] + : trans_sysdep_tab[i])); + size_t need = 0; + const struct segment_pair *p = sysdep_string->segments; + + if (W (domain->must_swap, p->sysdepref) != SEGMENTS_END) + for (p = sysdep_string->segments;; p++) + { + nls_uint32 sysdepref; + + need += W (domain->must_swap, p->segsize); + + sysdepref = W (domain->must_swap, p->sysdepref); + if (sysdepref == SEGMENTS_END) + break; + + if (sysdepref >= n_sysdep_segments) + { + /* Invalid. */ + freea (sysdep_segment_values); + goto invalid; + } + + if (sysdep_segment_values[sysdepref] == NULL) + { + /* This particular string pair is invalid. */ + valid = 0; + break; + } + + need += strlen (sysdep_segment_values[sysdepref]); + } + + needs[j] = need; + if (!valid) + break; + } + + if (valid) + { + n_inmem_sysdep_strings++; + memneed += needs[0] + needs[1]; + } + } + memneed += 2 * n_inmem_sysdep_strings + * sizeof (struct sysdep_string_desc); + + if (n_inmem_sysdep_strings > 0) + { + unsigned int k; + + /* Allocate additional memory. */ + mem = (char *) malloc (memneed); + if (mem == NULL) + goto invalid; + + domain->malloced = mem; + inmem_orig_sysdep_tab = (struct sysdep_string_desc *) mem; + mem += n_inmem_sysdep_strings + * sizeof (struct sysdep_string_desc); + inmem_trans_sysdep_tab = (struct sysdep_string_desc *) mem; + mem += n_inmem_sysdep_strings + * sizeof (struct sysdep_string_desc); + inmem_hash_tab = (nls_uint32 *) mem; + mem += domain->hash_size * sizeof (nls_uint32); + + /* Compute the system dependent strings. */ + k = 0; + for (i = 0; i < n_sysdep_strings; i++) + { + int valid = 1; + + for (j = 0; j < 2; j++) + { + const struct sysdep_string *sysdep_string = + (const struct sysdep_string *) + ((char *) data + + W (domain->must_swap, + j == 0 + ? orig_sysdep_tab[i] + : trans_sysdep_tab[i])); + const struct segment_pair *p = + sysdep_string->segments; + + if (W (domain->must_swap, p->sysdepref) + != SEGMENTS_END) + for (p = sysdep_string->segments;; p++) + { + nls_uint32 sysdepref; + + sysdepref = + W (domain->must_swap, p->sysdepref); + if (sysdepref == SEGMENTS_END) + break; + + if (sysdep_segment_values[sysdepref] == NULL) + { + /* This particular string pair is + invalid. */ + valid = 0; + break; + } + } + + if (!valid) + break; + } + + if (valid) + { + for (j = 0; j < 2; j++) + { + const struct sysdep_string *sysdep_string = + (const struct sysdep_string *) + ((char *) data + + W (domain->must_swap, + j == 0 + ? orig_sysdep_tab[i] + : trans_sysdep_tab[i])); + const char *static_segments = + (char *) data + + W (domain->must_swap, sysdep_string->offset); + const struct segment_pair *p = + sysdep_string->segments; + + /* Concatenate the segments, and fill + inmem_orig_sysdep_tab[k] (for j == 0) and + inmem_trans_sysdep_tab[k] (for j == 1). */ + + struct sysdep_string_desc *inmem_tab_entry = + (j == 0 + ? inmem_orig_sysdep_tab + : inmem_trans_sysdep_tab) + + k; + + if (W (domain->must_swap, p->sysdepref) + == SEGMENTS_END) + { + /* Only one static segment. */ + inmem_tab_entry->length = + W (domain->must_swap, p->segsize); + inmem_tab_entry->pointer = static_segments; + } + else + { + inmem_tab_entry->pointer = mem; + + for (p = sysdep_string->segments;; p++) + { + nls_uint32 segsize = + W (domain->must_swap, p->segsize); + nls_uint32 sysdepref = + W (domain->must_swap, p->sysdepref); + size_t n; + + if (segsize > 0) + { + memcpy (mem, static_segments, segsize); + mem += segsize; + static_segments += segsize; + } + + if (sysdepref == SEGMENTS_END) + break; + + n = strlen (sysdep_segment_values[sysdepref]); + memcpy (mem, sysdep_segment_values[sysdepref], n); + mem += n; + } + + inmem_tab_entry->length = + mem - inmem_tab_entry->pointer; + } + } + + k++; + } + } + if (k != n_inmem_sysdep_strings) + abort (); + + /* Compute the augmented hash table. */ + for (i = 0; i < domain->hash_size; i++) + inmem_hash_tab[i] = + W (domain->must_swap_hash_tab, domain->hash_tab[i]); + for (i = 0; i < n_inmem_sysdep_strings; i++) + { + const char *msgid = inmem_orig_sysdep_tab[i].pointer; + nls_uint32 hash_val = __hash_string (msgid); + nls_uint32 idx = hash_val % domain->hash_size; + nls_uint32 incr = + 1 + (hash_val % (domain->hash_size - 2)); + + for (;;) + { + if (inmem_hash_tab[idx] == 0) + { + /* Hash table entry is empty. Use it. */ + inmem_hash_tab[idx] = 1 + domain->nstrings + i; + break; + } + + if (idx >= domain->hash_size - incr) + idx -= domain->hash_size - incr; + else + idx += incr; + } + } + + domain->n_sysdep_strings = n_inmem_sysdep_strings; + domain->orig_sysdep_tab = inmem_orig_sysdep_tab; + domain->trans_sysdep_tab = inmem_trans_sysdep_tab; + + domain->hash_tab = inmem_hash_tab; + domain->must_swap_hash_tab = 0; + } + else + { + domain->n_sysdep_strings = 0; + domain->orig_sysdep_tab = NULL; + domain->trans_sysdep_tab = NULL; + } + + freea (sysdep_segment_values); + } + else + { + domain->n_sysdep_strings = 0; + domain->orig_sysdep_tab = NULL; + domain->trans_sysdep_tab = NULL; + } + } + break; + } + break; + default: + /* This is an invalid revision. */ + invalid: + /* This is an invalid .mo file. */ + if (domain->malloced) + free (domain->malloced); +#ifdef HAVE_MMAP + if (use_mmap) + munmap ((caddr_t) data, size); + else +#endif + free (data); + free (domain); + domain_file->data = NULL; + goto out; + } + + /* No caches of converted translations so far. */ + domain->conversions = NULL; + domain->nconversions = 0; + gl_rwlock_init (domain->conversions_lock); + + /* Get the header entry and look for a plural specification. */ +#ifdef IN_LIBGLOCALE + nullentry = + _nl_find_msg (domain_file, domainbinding, NULL, "", &nullentrylen); +#else + nullentry = _nl_find_msg (domain_file, domainbinding, "", 0, &nullentrylen); +#endif + EXTRACT_PLURAL_EXPRESSION (nullentry, &domain->plural, &domain->nplurals); + + out: + if (fd != -1) + close (fd); + + domain_file->decided = 1; + + done: + __libc_lock_unlock_recursive (lock); +} + + +#ifdef _LIBC +void +internal_function __libc_freeres_fn_section +_nl_unload_domain (struct loaded_domain *domain) +{ + size_t i; + + if (domain->plural != &__gettext_germanic_plural) + __gettext_free_exp ((struct expression *) domain->plural); + + for (i = 0; i < domain->nconversions; i++) + { + struct converted_domain *convd = &domain->conversions[i]; + + free (convd->encoding); + if (convd->conv_tab != NULL && convd->conv_tab != (char **) -1) + free (convd->conv_tab); + if (convd->conv != (__gconv_t) -1) + __gconv_close (convd->conv); + } + if (domain->conversions != NULL) + free (domain->conversions); + __libc_rwlock_fini (domain->conversions_lock); + + if (domain->malloced) + free (domain->malloced); + +# ifdef _POSIX_MAPPED_FILES + if (domain->use_mmap) + munmap ((caddr_t) domain->data, domain->mmap_size); + else +# endif /* _POSIX_MAPPED_FILES */ + free ((void *) domain->data); + + free (domain); +} +#endif diff --git a/etc/wyatt8740/intl/localcharset.c b/etc/wyatt8740/intl/localcharset.c new file mode 100644 index 0000000..e796ae7 --- /dev/null +++ b/etc/wyatt8740/intl/localcharset.c @@ -0,0 +1,461 @@ +/* Determine a canonical name for the current locale's character encoding. + + Copyright (C) 2000-2006 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Written by Bruno Haible . */ + +#include + +/* Specification. */ +#include "localcharset.h" + +#include +#include +#include +#include + +#if defined _WIN32 || defined __WIN32__ +# define WIN32_NATIVE +#endif + +#if defined __EMX__ +/* Assume EMX program runs on OS/2, even if compiled under DOS. */ +# define OS2 +#endif + +#if !defined WIN32_NATIVE +# if HAVE_LANGINFO_CODESET +# include +# else +# if 0 /* see comment below */ +# include +# endif +# endif +# ifdef __CYGWIN__ +# define WIN32_LEAN_AND_MEAN +# include +# endif +#elif defined WIN32_NATIVE +# define WIN32_LEAN_AND_MEAN +# include +#endif +#if defined OS2 +# define INCL_DOS +# include +#endif + +#if ENABLE_RELOCATABLE +# include "relocatable.h" +#else +# define relocate(pathname) (pathname) +#endif + +/* Get LIBDIR. */ +#ifndef LIBDIR +# include "configmake.h" +#endif + +#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__ + /* Win32, Cygwin, OS/2, DOS */ +# define ISSLASH(C) ((C) == '/' || (C) == '\\') +#endif + +#ifndef DIRECTORY_SEPARATOR +# define DIRECTORY_SEPARATOR '/' +#endif + +#ifndef ISSLASH +# define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR) +#endif + +#if HAVE_DECL_GETC_UNLOCKED +# undef getc +# define getc getc_unlocked +#endif + +/* The following static variable is declared 'volatile' to avoid a + possible multithread problem in the function get_charset_aliases. If we + are running in a threaded environment, and if two threads initialize + 'charset_aliases' simultaneously, both will produce the same value, + and everything will be ok if the two assignments to 'charset_aliases' + are atomic. But I don't know what will happen if the two assignments mix. */ +#if __STDC__ != 1 +# define volatile /* empty */ +#endif +/* Pointer to the contents of the charset.alias file, if it has already been + read, else NULL. Its format is: + ALIAS_1 '\0' CANONICAL_1 '\0' ... ALIAS_n '\0' CANONICAL_n '\0' '\0' */ +static const char * volatile charset_aliases; + +/* Return a pointer to the contents of the charset.alias file. */ +static const char * +get_charset_aliases (void) +{ + const char *cp; + + cp = charset_aliases; + if (cp == NULL) + { +#if !(defined VMS || defined WIN32_NATIVE || defined __CYGWIN__) + FILE *fp; + const char *dir; + const char *base = "charset.alias"; + char *file_name; + + /* Make it possible to override the charset.alias location. This is + necessary for running the testsuite before "make install". */ + dir = getenv ("CHARSETALIASDIR"); + if (dir == NULL || dir[0] == '\0') + dir = relocate (LIBDIR); + + /* Concatenate dir and base into freshly allocated file_name. */ + { + size_t dir_len = strlen (dir); + size_t base_len = strlen (base); + int add_slash = (dir_len > 0 && !ISSLASH (dir[dir_len - 1])); + file_name = (char *) malloc (dir_len + add_slash + base_len + 1); + if (file_name != NULL) + { + memcpy (file_name, dir, dir_len); + if (add_slash) + file_name[dir_len] = DIRECTORY_SEPARATOR; + memcpy (file_name + dir_len + add_slash, base, base_len + 1); + } + } + + if (file_name == NULL || (fp = fopen (file_name, "r")) == NULL) + /* Out of memory or file not found, treat it as empty. */ + cp = ""; + else + { + /* Parse the file's contents. */ + char *res_ptr = NULL; + size_t res_size = 0; + + for (;;) + { + int c; + char buf1[50+1]; + char buf2[50+1]; + size_t l1, l2; + char *old_res_ptr; + + c = getc (fp); + if (c == EOF) + break; + if (c == '\n' || c == ' ' || c == '\t') + continue; + if (c == '#') + { + /* Skip comment, to end of line. */ + do + c = getc (fp); + while (!(c == EOF || c == '\n')); + if (c == EOF) + break; + continue; + } + ungetc (c, fp); + if (fscanf (fp, "%50s %50s", buf1, buf2) < 2) + break; + l1 = strlen (buf1); + l2 = strlen (buf2); + old_res_ptr = res_ptr; + if (res_size == 0) + { + res_size = l1 + 1 + l2 + 1; + res_ptr = (char *) malloc (res_size + 1); + } + else + { + res_size += l1 + 1 + l2 + 1; + res_ptr = (char *) realloc (res_ptr, res_size + 1); + } + if (res_ptr == NULL) + { + /* Out of memory. */ + res_size = 0; + if (old_res_ptr != NULL) + free (old_res_ptr); + break; + } + strcpy (res_ptr + res_size - (l2 + 1) - (l1 + 1), buf1); + strcpy (res_ptr + res_size - (l2 + 1), buf2); + } + fclose (fp); + if (res_size == 0) + cp = ""; + else + { + *(res_ptr + res_size) = '\0'; + cp = res_ptr; + } + } + + if (file_name != NULL) + free (file_name); + +#else + +# if defined VMS + /* To avoid the troubles of an extra file charset.alias_vms in the + sources of many GNU packages, simply inline the aliases here. */ + /* The list of encodings is taken from the OpenVMS 7.3-1 documentation + "Compaq C Run-Time Library Reference Manual for OpenVMS systems" + section 10.7 "Handling Different Character Sets". */ + cp = "ISO8859-1" "\0" "ISO-8859-1" "\0" + "ISO8859-2" "\0" "ISO-8859-2" "\0" + "ISO8859-5" "\0" "ISO-8859-5" "\0" + "ISO8859-7" "\0" "ISO-8859-7" "\0" + "ISO8859-8" "\0" "ISO-8859-8" "\0" + "ISO8859-9" "\0" "ISO-8859-9" "\0" + /* Japanese */ + "eucJP" "\0" "EUC-JP" "\0" + "SJIS" "\0" "SHIFT_JIS" "\0" + "DECKANJI" "\0" "DEC-KANJI" "\0" + "SDECKANJI" "\0" "EUC-JP" "\0" + /* Chinese */ + "eucTW" "\0" "EUC-TW" "\0" + "DECHANYU" "\0" "DEC-HANYU" "\0" + "DECHANZI" "\0" "GB2312" "\0" + /* Korean */ + "DECKOREAN" "\0" "EUC-KR" "\0"; +# endif + +# if defined WIN32_NATIVE || defined __CYGWIN__ + /* To avoid the troubles of installing a separate file in the same + directory as the DLL and of retrieving the DLL's directory at + runtime, simply inline the aliases here. */ + + cp = "CP936" "\0" "GBK" "\0" + "CP1361" "\0" "JOHAB" "\0" + "CP20127" "\0" "ASCII" "\0" + "CP20866" "\0" "KOI8-R" "\0" + "CP20936" "\0" "GB2312" "\0" + "CP21866" "\0" "KOI8-RU" "\0" + "CP28591" "\0" "ISO-8859-1" "\0" + "CP28592" "\0" "ISO-8859-2" "\0" + "CP28593" "\0" "ISO-8859-3" "\0" + "CP28594" "\0" "ISO-8859-4" "\0" + "CP28595" "\0" "ISO-8859-5" "\0" + "CP28596" "\0" "ISO-8859-6" "\0" + "CP28597" "\0" "ISO-8859-7" "\0" + "CP28598" "\0" "ISO-8859-8" "\0" + "CP28599" "\0" "ISO-8859-9" "\0" + "CP28605" "\0" "ISO-8859-15" "\0" + "CP38598" "\0" "ISO-8859-8" "\0" + "CP51932" "\0" "EUC-JP" "\0" + "CP51936" "\0" "GB2312" "\0" + "CP51949" "\0" "EUC-KR" "\0" + "CP51950" "\0" "EUC-TW" "\0" + "CP54936" "\0" "GB18030" "\0" + "CP65001" "\0" "UTF-8" "\0"; +# endif +#endif + + charset_aliases = cp; + } + + return cp; +} + +/* Determine the current locale's character encoding, and canonicalize it + into one of the canonical names listed in config.charset. + The result must not be freed; it is statically allocated. + If the canonical name cannot be determined, the result is a non-canonical + name. */ + +#ifdef STATIC +STATIC +#endif +const char * +locale_charset (void) +{ + const char *codeset; + const char *aliases; + +#if !(defined WIN32_NATIVE || defined OS2) + +# if HAVE_LANGINFO_CODESET + + /* Most systems support nl_langinfo (CODESET) nowadays. */ + codeset = nl_langinfo (CODESET); + +# ifdef __CYGWIN__ + /* Cygwin 2006 does not have locales. nl_langinfo (CODESET) always + returns "US-ASCII". As long as this is not fixed, return the suffix + of the locale name from the environment variables (if present) or + the codepage as a number. */ + if (codeset != NULL && strcmp (codeset, "US-ASCII") == 0) + { + const char *locale; + static char buf[2 + 10 + 1]; + + locale = getenv ("LC_ALL"); + if (locale == NULL || locale[0] == '\0') + { + locale = getenv ("LC_CTYPE"); + if (locale == NULL || locale[0] == '\0') + locale = getenv ("LANG"); + } + if (locale != NULL && locale[0] != '\0') + { + /* If the locale name contains an encoding after the dot, return + it. */ + const char *dot = strchr (locale, '.'); + + if (dot != NULL) + { + const char *modifier; + + dot++; + /* Look for the possible @... trailer and remove it, if any. */ + modifier = strchr (dot, '@'); + if (modifier == NULL) + return dot; + if (modifier - dot < sizeof (buf)) + { + memcpy (buf, dot, modifier - dot); + buf [modifier - dot] = '\0'; + return buf; + } + } + } + + /* Woe32 has a function returning the locale's codepage as a number. */ + sprintf (buf, "CP%u", GetACP ()); + codeset = buf; + } +# endif + +# else + + /* On old systems which lack it, use setlocale or getenv. */ + const char *locale = NULL; + + /* But most old systems don't have a complete set of locales. Some + (like SunOS 4 or DJGPP) have only the C locale. Therefore we don't + use setlocale here; it would return "C" when it doesn't support the + locale name the user has set. */ +# if 0 + locale = setlocale (LC_CTYPE, NULL); +# endif + if (locale == NULL || locale[0] == '\0') + { + locale = getenv ("LC_ALL"); + if (locale == NULL || locale[0] == '\0') + { + locale = getenv ("LC_CTYPE"); + if (locale == NULL || locale[0] == '\0') + locale = getenv ("LANG"); + } + } + + /* On some old systems, one used to set locale = "iso8859_1". On others, + you set it to "language_COUNTRY.charset". In any case, we resolve it + through the charset.alias file. */ + codeset = locale; + +# endif + +#elif defined WIN32_NATIVE + + static char buf[2 + 10 + 1]; + + /* Woe32 has a function returning the locale's codepage as a number. */ + sprintf (buf, "CP%u", GetACP ()); + codeset = buf; + +#elif defined OS2 + + const char *locale; + static char buf[2 + 10 + 1]; + ULONG cp[3]; + ULONG cplen; + + /* Allow user to override the codeset, as set in the operating system, + with standard language environment variables. */ + locale = getenv ("LC_ALL"); + if (locale == NULL || locale[0] == '\0') + { + locale = getenv ("LC_CTYPE"); + if (locale == NULL || locale[0] == '\0') + locale = getenv ("LANG"); + } + if (locale != NULL && locale[0] != '\0') + { + /* If the locale name contains an encoding after the dot, return it. */ + const char *dot = strchr (locale, '.'); + + if (dot != NULL) + { + const char *modifier; + + dot++; + /* Look for the possible @... trailer and remove it, if any. */ + modifier = strchr (dot, '@'); + if (modifier == NULL) + return dot; + if (modifier - dot < sizeof (buf)) + { + memcpy (buf, dot, modifier - dot); + buf [modifier - dot] = '\0'; + return buf; + } + } + + /* Resolve through the charset.alias file. */ + codeset = locale; + } + else + { + /* OS/2 has a function returning the locale's codepage as a number. */ + if (DosQueryCp (sizeof (cp), cp, &cplen)) + codeset = ""; + else + { + sprintf (buf, "CP%u", cp[0]); + codeset = buf; + } + } + +#endif + + if (codeset == NULL) + /* The canonical name cannot be determined. */ + codeset = ""; + + /* Resolve alias. */ + for (aliases = get_charset_aliases (); + *aliases != '\0'; + aliases += strlen (aliases) + 1, aliases += strlen (aliases) + 1) + if (strcmp (codeset, aliases) == 0 + || (aliases[0] == '*' && aliases[1] == '\0')) + { + codeset = aliases + strlen (aliases) + 1; + break; + } + + /* Don't return an empty string. GNU libc and GNU libiconv interpret + the empty string as denoting "the locale's character encoding", + thus GNU libiconv would call this function a second time. */ + if (codeset[0] == '\0') + codeset = "ASCII"; + + return codeset; +} diff --git a/etc/wyatt8740/intl/localcharset.h b/etc/wyatt8740/intl/localcharset.h new file mode 100644 index 0000000..129e4a4 --- /dev/null +++ b/etc/wyatt8740/intl/localcharset.h @@ -0,0 +1,42 @@ +/* Determine a canonical name for the current locale's character encoding. + Copyright (C) 2000-2003 Free Software Foundation, Inc. + This file is part of the GNU CHARSET Library. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _LOCALCHARSET_H +#define _LOCALCHARSET_H + + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Determine the current locale's character encoding, and canonicalize it + into one of the canonical names listed in config.charset. + The result must not be freed; it is statically allocated. + If the canonical name cannot be determined, the result is a non-canonical + name. */ +extern const char * locale_charset (void); + + +#ifdef __cplusplus +} +#endif + + +#endif /* _LOCALCHARSET_H */ diff --git a/etc/wyatt8740/intl/locale.alias b/etc/wyatt8740/intl/locale.alias new file mode 100644 index 0000000..1044a40 --- /dev/null +++ b/etc/wyatt8740/intl/locale.alias @@ -0,0 +1,77 @@ +# Locale name alias data base. +# Copyright (C) 1996-2001,2003,2007 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU Library General Public License as published +# by the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program 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 +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +# USA. + +# The format of this file is the same as for the corresponding file of +# the X Window System, which normally can be found in +# /usr/lib/X11/locale/locale.alias +# A single line contains two fields: an alias and a substitution value. +# All entries are case independent. + +# Note: This file is obsolete and is kept around for the time being for +# backward compatibility. Nobody should rely on the names defined here. +# Locales should always be specified by their full name. + +# Packages using this file: + +bokmal nb_NO.ISO-8859-1 +bokml nb_NO.ISO-8859-1 +catalan ca_ES.ISO-8859-1 +croatian hr_HR.ISO-8859-2 +czech cs_CZ.ISO-8859-2 +danish da_DK.ISO-8859-1 +dansk da_DK.ISO-8859-1 +deutsch de_DE.ISO-8859-1 +dutch nl_NL.ISO-8859-1 +eesti et_EE.ISO-8859-1 +estonian et_EE.ISO-8859-1 +finnish fi_FI.ISO-8859-1 +franais fr_FR.ISO-8859-1 +french fr_FR.ISO-8859-1 +galego gl_ES.ISO-8859-1 +galician gl_ES.ISO-8859-1 +german de_DE.ISO-8859-1 +greek el_GR.ISO-8859-7 +hebrew he_IL.ISO-8859-8 +hrvatski hr_HR.ISO-8859-2 +hungarian hu_HU.ISO-8859-2 +icelandic is_IS.ISO-8859-1 +italian it_IT.ISO-8859-1 +japanese ja_JP.eucJP +japanese.euc ja_JP.eucJP +ja_JP ja_JP.eucJP +ja_JP.ujis ja_JP.eucJP +japanese.sjis ja_JP.SJIS +korean ko_KR.eucKR +korean.euc ko_KR.eucKR +ko_KR ko_KR.eucKR +lithuanian lt_LT.ISO-8859-13 +no_NO nb_NO.ISO-8859-1 +no_NO.ISO-8859-1 nb_NO.ISO-8859-1 +norwegian nb_NO.ISO-8859-1 +nynorsk nn_NO.ISO-8859-1 +polish pl_PL.ISO-8859-2 +portuguese pt_PT.ISO-8859-1 +romanian ro_RO.ISO-8859-2 +russian ru_RU.ISO-8859-5 +slovak sk_SK.ISO-8859-2 +slovene sl_SI.ISO-8859-2 +slovenian sl_SI.ISO-8859-2 +spanish es_ES.ISO-8859-1 +swedish sv_SE.ISO-8859-1 +thai th_TH.TIS-620 +turkish tr_TR.ISO-8859-9 diff --git a/etc/wyatt8740/intl/localealias.c b/etc/wyatt8740/intl/localealias.c new file mode 100644 index 0000000..910db53 --- /dev/null +++ b/etc/wyatt8740/intl/localealias.c @@ -0,0 +1,439 @@ +/* Handle aliases for locale names. + Copyright (C) 1995-1999, 2000-2001, 2003, 2005-2006 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Tell glibc's to provide a prototype for mempcpy(). + This must come before because may include + , and once has been included, it's too late. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#if defined _LIBC || defined HAVE___FSETLOCKING +# include +#endif +#include + +#ifdef __GNUC__ +# undef alloca +# define alloca __builtin_alloca +# define HAVE_ALLOCA 1 +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# if defined HAVE_ALLOCA_H || defined _LIBC +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca +char *alloca (); +# endif +# endif +# endif +# endif +#endif + +#include +#include + +#include "gettextP.h" + +#if ENABLE_RELOCATABLE +# include "relocatable.h" +#else +# define relocate(pathname) (pathname) +#endif + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ANSI C functions. This is required by the standard + because some ANSI C functions will require linking with this object + file and the name space must not be polluted. */ +# define strcasecmp __strcasecmp + +# ifndef mempcpy +# define mempcpy __mempcpy +# endif +# define HAVE_MEMPCPY 1 +# define HAVE___FSETLOCKING 1 +#endif + +/* Handle multi-threaded applications. */ +#ifdef _LIBC +# include +#else +# include "lock.h" +#endif + +#ifndef internal_function +# define internal_function +#endif + +/* Some optimizations for glibc. */ +#ifdef _LIBC +# define FEOF(fp) feof_unlocked (fp) +# define FGETS(buf, n, fp) fgets_unlocked (buf, n, fp) +#else +# define FEOF(fp) feof (fp) +# define FGETS(buf, n, fp) fgets (buf, n, fp) +#endif + +/* For those losing systems which don't have `alloca' we have to add + some additional code emulating it. */ +#ifdef HAVE_ALLOCA +# define freea(p) /* nothing */ +#else +# define alloca(n) malloc (n) +# define freea(p) free (p) +#endif + +#if defined _LIBC_REENTRANT || HAVE_DECL_FGETS_UNLOCKED +# undef fgets +# define fgets(buf, len, s) fgets_unlocked (buf, len, s) +#endif +#if defined _LIBC_REENTRANT || HAVE_DECL_FEOF_UNLOCKED +# undef feof +# define feof(s) feof_unlocked (s) +#endif + + +__libc_lock_define_initialized (static, lock) + + +struct alias_map +{ + const char *alias; + const char *value; +}; + + +#ifndef _LIBC +# define libc_freeres_ptr(decl) decl +#endif + +libc_freeres_ptr (static char *string_space); +static size_t string_space_act; +static size_t string_space_max; +libc_freeres_ptr (static struct alias_map *map); +static size_t nmap; +static size_t maxmap; + + +/* Prototypes for local functions. */ +static size_t read_alias_file (const char *fname, int fname_len) + internal_function; +static int extend_alias_table (void); +static int alias_compare (const struct alias_map *map1, + const struct alias_map *map2); + + +const char * +_nl_expand_alias (const char *name) +{ + static const char *locale_alias_path; + struct alias_map *retval; + const char *result = NULL; + size_t added; + + __libc_lock_lock (lock); + + if (locale_alias_path == NULL) + locale_alias_path = LOCALE_ALIAS_PATH; + + do + { + struct alias_map item; + + item.alias = name; + + if (nmap > 0) + retval = (struct alias_map *) bsearch (&item, map, nmap, + sizeof (struct alias_map), + (int (*) (const void *, + const void *) + ) alias_compare); + else + retval = NULL; + + /* We really found an alias. Return the value. */ + if (retval != NULL) + { + result = retval->value; + break; + } + + /* Perhaps we can find another alias file. */ + added = 0; + while (added == 0 && locale_alias_path[0] != '\0') + { + const char *start; + + while (locale_alias_path[0] == PATH_SEPARATOR) + ++locale_alias_path; + start = locale_alias_path; + + while (locale_alias_path[0] != '\0' + && locale_alias_path[0] != PATH_SEPARATOR) + ++locale_alias_path; + + if (start < locale_alias_path) + added = read_alias_file (start, locale_alias_path - start); + } + } + while (added != 0); + + __libc_lock_unlock (lock); + + return result; +} + + +static size_t +internal_function +read_alias_file (const char *fname, int fname_len) +{ + FILE *fp; + char *full_fname; + size_t added; + static const char aliasfile[] = "/locale.alias"; + + full_fname = (char *) alloca (fname_len + sizeof aliasfile); +#ifdef HAVE_MEMPCPY + mempcpy (mempcpy (full_fname, fname, fname_len), + aliasfile, sizeof aliasfile); +#else + memcpy (full_fname, fname, fname_len); + memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile); +#endif + +#ifdef _LIBC + /* Note the file is opened with cancellation in the I/O functions + disabled. */ + fp = fopen (relocate (full_fname), "rc"); +#else + fp = fopen (relocate (full_fname), "r"); +#endif + freea (full_fname); + if (fp == NULL) + return 0; + +#ifdef HAVE___FSETLOCKING + /* No threads present. */ + __fsetlocking (fp, FSETLOCKING_BYCALLER); +#endif + + added = 0; + while (!FEOF (fp)) + { + /* It is a reasonable approach to use a fix buffer here because + a) we are only interested in the first two fields + b) these fields must be usable as file names and so must not + be that long + We avoid a multi-kilobyte buffer here since this would use up + stack space which we might not have if the program ran out of + memory. */ + char buf[400]; + char *alias; + char *value; + char *cp; + int complete_line; + + if (FGETS (buf, sizeof buf, fp) == NULL) + /* EOF reached. */ + break; + + /* Determine whether the line is complete. */ + complete_line = strchr (buf, '\n') != NULL; + + cp = buf; + /* Ignore leading white space. */ + while (isspace ((unsigned char) cp[0])) + ++cp; + + /* A leading '#' signals a comment line. */ + if (cp[0] != '\0' && cp[0] != '#') + { + alias = cp++; + while (cp[0] != '\0' && !isspace ((unsigned char) cp[0])) + ++cp; + /* Terminate alias name. */ + if (cp[0] != '\0') + *cp++ = '\0'; + + /* Now look for the beginning of the value. */ + while (isspace ((unsigned char) cp[0])) + ++cp; + + if (cp[0] != '\0') + { + value = cp++; + while (cp[0] != '\0' && !isspace ((unsigned char) cp[0])) + ++cp; + /* Terminate value. */ + if (cp[0] == '\n') + { + /* This has to be done to make the following test + for the end of line possible. We are looking for + the terminating '\n' which do not overwrite here. */ + *cp++ = '\0'; + *cp = '\n'; + } + else if (cp[0] != '\0') + *cp++ = '\0'; + +#ifdef IN_LIBGLOCALE + /* glibc's locale.alias contains entries for ja_JP and ko_KR + that make it impossible to use a Japanese or Korean UTF-8 + locale under the name "ja_JP" or "ko_KR". Ignore these + entries. */ + if (strchr (alias, '_') == NULL) +#endif + { + size_t alias_len; + size_t value_len; + + if (nmap >= maxmap) + if (__builtin_expect (extend_alias_table (), 0)) + goto out; + + alias_len = strlen (alias) + 1; + value_len = strlen (value) + 1; + + if (string_space_act + alias_len + value_len > string_space_max) + { + /* Increase size of memory pool. */ + size_t new_size = (string_space_max + + (alias_len + value_len > 1024 + ? alias_len + value_len : 1024)); + char *new_pool = (char *) realloc (string_space, new_size); + if (new_pool == NULL) + goto out; + + if (__builtin_expect (string_space != new_pool, 0)) + { + size_t i; + + for (i = 0; i < nmap; i++) + { + map[i].alias += new_pool - string_space; + map[i].value += new_pool - string_space; + } + } + + string_space = new_pool; + string_space_max = new_size; + } + + map[nmap].alias = + (const char *) memcpy (&string_space[string_space_act], + alias, alias_len); + string_space_act += alias_len; + + map[nmap].value = + (const char *) memcpy (&string_space[string_space_act], + value, value_len); + string_space_act += value_len; + + ++nmap; + ++added; + } + } + } + + /* Possibly not the whole line fits into the buffer. Ignore + the rest of the line. */ + if (! complete_line) + do + if (FGETS (buf, sizeof buf, fp) == NULL) + /* Make sure the inner loop will be left. The outer loop + will exit at the `feof' test. */ + break; + while (strchr (buf, '\n') == NULL); + } + + out: + /* Should we test for ferror()? I think we have to silently ignore + errors. --drepper */ + fclose (fp); + + if (added > 0) + qsort (map, nmap, sizeof (struct alias_map), + (int (*) (const void *, const void *)) alias_compare); + + return added; +} + + +static int +extend_alias_table () +{ + size_t new_size; + struct alias_map *new_map; + + new_size = maxmap == 0 ? 100 : 2 * maxmap; + new_map = (struct alias_map *) realloc (map, (new_size + * sizeof (struct alias_map))); + if (new_map == NULL) + /* Simply don't extend: we don't have any more core. */ + return -1; + + map = new_map; + maxmap = new_size; + return 0; +} + + +static int +alias_compare (const struct alias_map *map1, const struct alias_map *map2) +{ +#if defined _LIBC || defined HAVE_STRCASECMP + return strcasecmp (map1->alias, map2->alias); +#else + const unsigned char *p1 = (const unsigned char *) map1->alias; + const unsigned char *p2 = (const unsigned char *) map2->alias; + unsigned char c1, c2; + + if (p1 == p2) + return 0; + + do + { + /* I know this seems to be odd but the tolower() function in + some systems libc cannot handle nonalpha characters. */ + c1 = isupper (*p1) ? tolower (*p1) : *p1; + c2 = isupper (*p2) ? tolower (*p2) : *p2; + if (c1 == '\0') + break; + ++p1; + ++p2; + } + while (c1 == c2); + + return c1 - c2; +#endif +} diff --git a/etc/wyatt8740/intl/localename.c b/etc/wyatt8740/intl/localename.c new file mode 100644 index 0000000..af4c229 --- /dev/null +++ b/etc/wyatt8740/intl/localename.c @@ -0,0 +1,1507 @@ +/* Determine name of the currently selected locale. + Copyright (C) 1995-1999, 2000-2007 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Written by Ulrich Drepper , 1995. */ +/* Win32 code written by Tor Lillqvist . */ +/* MacOS X code written by Bruno Haible . */ + +#include + +/* Specification. */ +#ifdef IN_LIBINTL +# include "gettextP.h" +#else +# include "localename.h" +#endif + +#include +#include + +#if HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE +# include +# include +# if HAVE_CFLOCALECOPYCURRENT +# include +# elif HAVE_CFPREFERENCESCOPYAPPVALUE +# include +# endif +#endif + +#if defined _WIN32 || defined __WIN32__ +# define WIN32_NATIVE +#endif + +#ifdef WIN32_NATIVE +# define WIN32_LEAN_AND_MEAN +# include +/* List of language codes, sorted by value: + 0x01 LANG_ARABIC + 0x02 LANG_BULGARIAN + 0x03 LANG_CATALAN + 0x04 LANG_CHINESE + 0x05 LANG_CZECH + 0x06 LANG_DANISH + 0x07 LANG_GERMAN + 0x08 LANG_GREEK + 0x09 LANG_ENGLISH + 0x0a LANG_SPANISH + 0x0b LANG_FINNISH + 0x0c LANG_FRENCH + 0x0d LANG_HEBREW + 0x0e LANG_HUNGARIAN + 0x0f LANG_ICELANDIC + 0x10 LANG_ITALIAN + 0x11 LANG_JAPANESE + 0x12 LANG_KOREAN + 0x13 LANG_DUTCH + 0x14 LANG_NORWEGIAN + 0x15 LANG_POLISH + 0x16 LANG_PORTUGUESE + 0x17 LANG_RHAETO_ROMANCE + 0x18 LANG_ROMANIAN + 0x19 LANG_RUSSIAN + 0x1a LANG_CROATIAN == LANG_SERBIAN + 0x1b LANG_SLOVAK + 0x1c LANG_ALBANIAN + 0x1d LANG_SWEDISH + 0x1e LANG_THAI + 0x1f LANG_TURKISH + 0x20 LANG_URDU + 0x21 LANG_INDONESIAN + 0x22 LANG_UKRAINIAN + 0x23 LANG_BELARUSIAN + 0x24 LANG_SLOVENIAN + 0x25 LANG_ESTONIAN + 0x26 LANG_LATVIAN + 0x27 LANG_LITHUANIAN + 0x28 LANG_TAJIK + 0x29 LANG_FARSI + 0x2a LANG_VIETNAMESE + 0x2b LANG_ARMENIAN + 0x2c LANG_AZERI + 0x2d LANG_BASQUE + 0x2e LANG_SORBIAN + 0x2f LANG_MACEDONIAN + 0x30 LANG_SUTU + 0x31 LANG_TSONGA + 0x32 LANG_TSWANA + 0x33 LANG_VENDA + 0x34 LANG_XHOSA + 0x35 LANG_ZULU + 0x36 LANG_AFRIKAANS + 0x37 LANG_GEORGIAN + 0x38 LANG_FAEROESE + 0x39 LANG_HINDI + 0x3a LANG_MALTESE + 0x3b LANG_SAAMI + 0x3c LANG_GAELIC + 0x3d LANG_YIDDISH + 0x3e LANG_MALAY + 0x3f LANG_KAZAK + 0x40 LANG_KYRGYZ + 0x41 LANG_SWAHILI + 0x42 LANG_TURKMEN + 0x43 LANG_UZBEK + 0x44 LANG_TATAR + 0x45 LANG_BENGALI + 0x46 LANG_PUNJABI + 0x47 LANG_GUJARATI + 0x48 LANG_ORIYA + 0x49 LANG_TAMIL + 0x4a LANG_TELUGU + 0x4b LANG_KANNADA + 0x4c LANG_MALAYALAM + 0x4d LANG_ASSAMESE + 0x4e LANG_MARATHI + 0x4f LANG_SANSKRIT + 0x50 LANG_MONGOLIAN + 0x51 LANG_TIBETAN + 0x52 LANG_WELSH + 0x53 LANG_CAMBODIAN + 0x54 LANG_LAO + 0x55 LANG_BURMESE + 0x56 LANG_GALICIAN + 0x57 LANG_KONKANI + 0x58 LANG_MANIPURI + 0x59 LANG_SINDHI + 0x5a LANG_SYRIAC + 0x5b LANG_SINHALESE + 0x5c LANG_CHEROKEE + 0x5d LANG_INUKTITUT + 0x5e LANG_AMHARIC + 0x5f LANG_TAMAZIGHT + 0x60 LANG_KASHMIRI + 0x61 LANG_NEPALI + 0x62 LANG_FRISIAN + 0x63 LANG_PASHTO + 0x64 LANG_TAGALOG + 0x65 LANG_DIVEHI + 0x66 LANG_EDO + 0x67 LANG_FULFULDE + 0x68 LANG_HAUSA + 0x69 LANG_IBIBIO + 0x6a LANG_YORUBA + 0x70 LANG_IGBO + 0x71 LANG_KANURI + 0x72 LANG_OROMO + 0x73 LANG_TIGRINYA + 0x74 LANG_GUARANI + 0x75 LANG_HAWAIIAN + 0x76 LANG_LATIN + 0x77 LANG_SOMALI + 0x78 LANG_YI + 0x79 LANG_PAPIAMENTU +*/ +/* Mingw headers don't have latest language and sublanguage codes. */ +# ifndef LANG_AFRIKAANS +# define LANG_AFRIKAANS 0x36 +# endif +# ifndef LANG_ALBANIAN +# define LANG_ALBANIAN 0x1c +# endif +# ifndef LANG_AMHARIC +# define LANG_AMHARIC 0x5e +# endif +# ifndef LANG_ARABIC +# define LANG_ARABIC 0x01 +# endif +# ifndef LANG_ARMENIAN +# define LANG_ARMENIAN 0x2b +# endif +# ifndef LANG_ASSAMESE +# define LANG_ASSAMESE 0x4d +# endif +# ifndef LANG_AZERI +# define LANG_AZERI 0x2c +# endif +# ifndef LANG_BASQUE +# define LANG_BASQUE 0x2d +# endif +# ifndef LANG_BELARUSIAN +# define LANG_BELARUSIAN 0x23 +# endif +# ifndef LANG_BENGALI +# define LANG_BENGALI 0x45 +# endif +# ifndef LANG_BURMESE +# define LANG_BURMESE 0x55 +# endif +# ifndef LANG_CAMBODIAN +# define LANG_CAMBODIAN 0x53 +# endif +# ifndef LANG_CATALAN +# define LANG_CATALAN 0x03 +# endif +# ifndef LANG_CHEROKEE +# define LANG_CHEROKEE 0x5c +# endif +# ifndef LANG_DIVEHI +# define LANG_DIVEHI 0x65 +# endif +# ifndef LANG_EDO +# define LANG_EDO 0x66 +# endif +# ifndef LANG_ESTONIAN +# define LANG_ESTONIAN 0x25 +# endif +# ifndef LANG_FAEROESE +# define LANG_FAEROESE 0x38 +# endif +# ifndef LANG_FARSI +# define LANG_FARSI 0x29 +# endif +# ifndef LANG_FRISIAN +# define LANG_FRISIAN 0x62 +# endif +# ifndef LANG_FULFULDE +# define LANG_FULFULDE 0x67 +# endif +# ifndef LANG_GAELIC +# define LANG_GAELIC 0x3c +# endif +# ifndef LANG_GALICIAN +# define LANG_GALICIAN 0x56 +# endif +# ifndef LANG_GEORGIAN +# define LANG_GEORGIAN 0x37 +# endif +# ifndef LANG_GUARANI +# define LANG_GUARANI 0x74 +# endif +# ifndef LANG_GUJARATI +# define LANG_GUJARATI 0x47 +# endif +# ifndef LANG_HAUSA +# define LANG_HAUSA 0x68 +# endif +# ifndef LANG_HAWAIIAN +# define LANG_HAWAIIAN 0x75 +# endif +# ifndef LANG_HEBREW +# define LANG_HEBREW 0x0d +# endif +# ifndef LANG_HINDI +# define LANG_HINDI 0x39 +# endif +# ifndef LANG_IBIBIO +# define LANG_IBIBIO 0x69 +# endif +# ifndef LANG_IGBO +# define LANG_IGBO 0x70 +# endif +# ifndef LANG_INDONESIAN +# define LANG_INDONESIAN 0x21 +# endif +# ifndef LANG_INUKTITUT +# define LANG_INUKTITUT 0x5d +# endif +# ifndef LANG_KANNADA +# define LANG_KANNADA 0x4b +# endif +# ifndef LANG_KANURI +# define LANG_KANURI 0x71 +# endif +# ifndef LANG_KASHMIRI +# define LANG_KASHMIRI 0x60 +# endif +# ifndef LANG_KAZAK +# define LANG_KAZAK 0x3f +# endif +# ifndef LANG_KONKANI +# define LANG_KONKANI 0x57 +# endif +# ifndef LANG_KYRGYZ +# define LANG_KYRGYZ 0x40 +# endif +# ifndef LANG_LAO +# define LANG_LAO 0x54 +# endif +# ifndef LANG_LATIN +# define LANG_LATIN 0x76 +# endif +# ifndef LANG_LATVIAN +# define LANG_LATVIAN 0x26 +# endif +# ifndef LANG_LITHUANIAN +# define LANG_LITHUANIAN 0x27 +# endif +# ifndef LANG_MACEDONIAN +# define LANG_MACEDONIAN 0x2f +# endif +# ifndef LANG_MALAY +# define LANG_MALAY 0x3e +# endif +# ifndef LANG_MALAYALAM +# define LANG_MALAYALAM 0x4c +# endif +# ifndef LANG_MALTESE +# define LANG_MALTESE 0x3a +# endif +# ifndef LANG_MANIPURI +# define LANG_MANIPURI 0x58 +# endif +# ifndef LANG_MARATHI +# define LANG_MARATHI 0x4e +# endif +# ifndef LANG_MONGOLIAN +# define LANG_MONGOLIAN 0x50 +# endif +# ifndef LANG_NEPALI +# define LANG_NEPALI 0x61 +# endif +# ifndef LANG_ORIYA +# define LANG_ORIYA 0x48 +# endif +# ifndef LANG_OROMO +# define LANG_OROMO 0x72 +# endif +# ifndef LANG_PAPIAMENTU +# define LANG_PAPIAMENTU 0x79 +# endif +# ifndef LANG_PASHTO +# define LANG_PASHTO 0x63 +# endif +# ifndef LANG_PUNJABI +# define LANG_PUNJABI 0x46 +# endif +# ifndef LANG_RHAETO_ROMANCE +# define LANG_RHAETO_ROMANCE 0x17 +# endif +# ifndef LANG_SAAMI +# define LANG_SAAMI 0x3b +# endif +# ifndef LANG_SANSKRIT +# define LANG_SANSKRIT 0x4f +# endif +# ifndef LANG_SERBIAN +# define LANG_SERBIAN 0x1a +# endif +# ifndef LANG_SINDHI +# define LANG_SINDHI 0x59 +# endif +# ifndef LANG_SINHALESE +# define LANG_SINHALESE 0x5b +# endif +# ifndef LANG_SLOVAK +# define LANG_SLOVAK 0x1b +# endif +# ifndef LANG_SOMALI +# define LANG_SOMALI 0x77 +# endif +# ifndef LANG_SORBIAN +# define LANG_SORBIAN 0x2e +# endif +# ifndef LANG_SUTU +# define LANG_SUTU 0x30 +# endif +# ifndef LANG_SWAHILI +# define LANG_SWAHILI 0x41 +# endif +# ifndef LANG_SYRIAC +# define LANG_SYRIAC 0x5a +# endif +# ifndef LANG_TAGALOG +# define LANG_TAGALOG 0x64 +# endif +# ifndef LANG_TAJIK +# define LANG_TAJIK 0x28 +# endif +# ifndef LANG_TAMAZIGHT +# define LANG_TAMAZIGHT 0x5f +# endif +# ifndef LANG_TAMIL +# define LANG_TAMIL 0x49 +# endif +# ifndef LANG_TATAR +# define LANG_TATAR 0x44 +# endif +# ifndef LANG_TELUGU +# define LANG_TELUGU 0x4a +# endif +# ifndef LANG_THAI +# define LANG_THAI 0x1e +# endif +# ifndef LANG_TIBETAN +# define LANG_TIBETAN 0x51 +# endif +# ifndef LANG_TIGRINYA +# define LANG_TIGRINYA 0x73 +# endif +# ifndef LANG_TSONGA +# define LANG_TSONGA 0x31 +# endif +# ifndef LANG_TSWANA +# define LANG_TSWANA 0x32 +# endif +# ifndef LANG_TURKMEN +# define LANG_TURKMEN 0x42 +# endif +# ifndef LANG_UKRAINIAN +# define LANG_UKRAINIAN 0x22 +# endif +# ifndef LANG_URDU +# define LANG_URDU 0x20 +# endif +# ifndef LANG_UZBEK +# define LANG_UZBEK 0x43 +# endif +# ifndef LANG_VENDA +# define LANG_VENDA 0x33 +# endif +# ifndef LANG_VIETNAMESE +# define LANG_VIETNAMESE 0x2a +# endif +# ifndef LANG_WELSH +# define LANG_WELSH 0x52 +# endif +# ifndef LANG_XHOSA +# define LANG_XHOSA 0x34 +# endif +# ifndef LANG_YI +# define LANG_YI 0x78 +# endif +# ifndef LANG_YIDDISH +# define LANG_YIDDISH 0x3d +# endif +# ifndef LANG_YORUBA +# define LANG_YORUBA 0x6a +# endif +# ifndef LANG_ZULU +# define LANG_ZULU 0x35 +# endif +# ifndef SUBLANG_ARABIC_SAUDI_ARABIA +# define SUBLANG_ARABIC_SAUDI_ARABIA 0x01 +# endif +# ifndef SUBLANG_ARABIC_IRAQ +# define SUBLANG_ARABIC_IRAQ 0x02 +# endif +# ifndef SUBLANG_ARABIC_EGYPT +# define SUBLANG_ARABIC_EGYPT 0x03 +# endif +# ifndef SUBLANG_ARABIC_LIBYA +# define SUBLANG_ARABIC_LIBYA 0x04 +# endif +# ifndef SUBLANG_ARABIC_ALGERIA +# define SUBLANG_ARABIC_ALGERIA 0x05 +# endif +# ifndef SUBLANG_ARABIC_MOROCCO +# define SUBLANG_ARABIC_MOROCCO 0x06 +# endif +# ifndef SUBLANG_ARABIC_TUNISIA +# define SUBLANG_ARABIC_TUNISIA 0x07 +# endif +# ifndef SUBLANG_ARABIC_OMAN +# define SUBLANG_ARABIC_OMAN 0x08 +# endif +# ifndef SUBLANG_ARABIC_YEMEN +# define SUBLANG_ARABIC_YEMEN 0x09 +# endif +# ifndef SUBLANG_ARABIC_SYRIA +# define SUBLANG_ARABIC_SYRIA 0x0a +# endif +# ifndef SUBLANG_ARABIC_JORDAN +# define SUBLANG_ARABIC_JORDAN 0x0b +# endif +# ifndef SUBLANG_ARABIC_LEBANON +# define SUBLANG_ARABIC_LEBANON 0x0c +# endif +# ifndef SUBLANG_ARABIC_KUWAIT +# define SUBLANG_ARABIC_KUWAIT 0x0d +# endif +# ifndef SUBLANG_ARABIC_UAE +# define SUBLANG_ARABIC_UAE 0x0e +# endif +# ifndef SUBLANG_ARABIC_BAHRAIN +# define SUBLANG_ARABIC_BAHRAIN 0x0f +# endif +# ifndef SUBLANG_ARABIC_QATAR +# define SUBLANG_ARABIC_QATAR 0x10 +# endif +# ifndef SUBLANG_AZERI_LATIN +# define SUBLANG_AZERI_LATIN 0x01 +# endif +# ifndef SUBLANG_AZERI_CYRILLIC +# define SUBLANG_AZERI_CYRILLIC 0x02 +# endif +# ifndef SUBLANG_BENGALI_INDIA +# define SUBLANG_BENGALI_INDIA 0x01 +# endif +# ifndef SUBLANG_BENGALI_BANGLADESH +# define SUBLANG_BENGALI_BANGLADESH 0x02 +# endif +# ifndef SUBLANG_CHINESE_MACAU +# define SUBLANG_CHINESE_MACAU 0x05 +# endif +# ifndef SUBLANG_ENGLISH_SOUTH_AFRICA +# define SUBLANG_ENGLISH_SOUTH_AFRICA 0x07 +# endif +# ifndef SUBLANG_ENGLISH_JAMAICA +# define SUBLANG_ENGLISH_JAMAICA 0x08 +# endif +# ifndef SUBLANG_ENGLISH_CARIBBEAN +# define SUBLANG_ENGLISH_CARIBBEAN 0x09 +# endif +# ifndef SUBLANG_ENGLISH_BELIZE +# define SUBLANG_ENGLISH_BELIZE 0x0a +# endif +# ifndef SUBLANG_ENGLISH_TRINIDAD +# define SUBLANG_ENGLISH_TRINIDAD 0x0b +# endif +# ifndef SUBLANG_ENGLISH_ZIMBABWE +# define SUBLANG_ENGLISH_ZIMBABWE 0x0c +# endif +# ifndef SUBLANG_ENGLISH_PHILIPPINES +# define SUBLANG_ENGLISH_PHILIPPINES 0x0d +# endif +# ifndef SUBLANG_ENGLISH_INDONESIA +# define SUBLANG_ENGLISH_INDONESIA 0x0e +# endif +# ifndef SUBLANG_ENGLISH_HONGKONG +# define SUBLANG_ENGLISH_HONGKONG 0x0f +# endif +# ifndef SUBLANG_ENGLISH_INDIA +# define SUBLANG_ENGLISH_INDIA 0x10 +# endif +# ifndef SUBLANG_ENGLISH_MALAYSIA +# define SUBLANG_ENGLISH_MALAYSIA 0x11 +# endif +# ifndef SUBLANG_ENGLISH_SINGAPORE +# define SUBLANG_ENGLISH_SINGAPORE 0x12 +# endif +# ifndef SUBLANG_FRENCH_LUXEMBOURG +# define SUBLANG_FRENCH_LUXEMBOURG 0x05 +# endif +# ifndef SUBLANG_FRENCH_MONACO +# define SUBLANG_FRENCH_MONACO 0x06 +# endif +# ifndef SUBLANG_FRENCH_WESTINDIES +# define SUBLANG_FRENCH_WESTINDIES 0x07 +# endif +# ifndef SUBLANG_FRENCH_REUNION +# define SUBLANG_FRENCH_REUNION 0x08 +# endif +# ifndef SUBLANG_FRENCH_CONGO +# define SUBLANG_FRENCH_CONGO 0x09 +# endif +# ifndef SUBLANG_FRENCH_SENEGAL +# define SUBLANG_FRENCH_SENEGAL 0x0a +# endif +# ifndef SUBLANG_FRENCH_CAMEROON +# define SUBLANG_FRENCH_CAMEROON 0x0b +# endif +# ifndef SUBLANG_FRENCH_COTEDIVOIRE +# define SUBLANG_FRENCH_COTEDIVOIRE 0x0c +# endif +# ifndef SUBLANG_FRENCH_MALI +# define SUBLANG_FRENCH_MALI 0x0d +# endif +# ifndef SUBLANG_FRENCH_MOROCCO +# define SUBLANG_FRENCH_MOROCCO 0x0e +# endif +# ifndef SUBLANG_FRENCH_HAITI +# define SUBLANG_FRENCH_HAITI 0x0f +# endif +# ifndef SUBLANG_GERMAN_LUXEMBOURG +# define SUBLANG_GERMAN_LUXEMBOURG 0x04 +# endif +# ifndef SUBLANG_GERMAN_LIECHTENSTEIN +# define SUBLANG_GERMAN_LIECHTENSTEIN 0x05 +# endif +# ifndef SUBLANG_KASHMIRI_INDIA +# define SUBLANG_KASHMIRI_INDIA 0x02 +# endif +# ifndef SUBLANG_MALAY_MALAYSIA +# define SUBLANG_MALAY_MALAYSIA 0x01 +# endif +# ifndef SUBLANG_MALAY_BRUNEI_DARUSSALAM +# define SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02 +# endif +# ifndef SUBLANG_NEPALI_INDIA +# define SUBLANG_NEPALI_INDIA 0x02 +# endif +# ifndef SUBLANG_PUNJABI_INDIA +# define SUBLANG_PUNJABI_INDIA 0x01 +# endif +# ifndef SUBLANG_PUNJABI_PAKISTAN +# define SUBLANG_PUNJABI_PAKISTAN 0x02 +# endif +# ifndef SUBLANG_ROMANIAN_ROMANIA +# define SUBLANG_ROMANIAN_ROMANIA 0x01 +# endif +# ifndef SUBLANG_ROMANIAN_MOLDOVA +# define SUBLANG_ROMANIAN_MOLDOVA 0x02 +# endif +# ifndef SUBLANG_SERBIAN_LATIN +# define SUBLANG_SERBIAN_LATIN 0x02 +# endif +# ifndef SUBLANG_SERBIAN_CYRILLIC +# define SUBLANG_SERBIAN_CYRILLIC 0x03 +# endif +# ifndef SUBLANG_SINDHI_PAKISTAN +# define SUBLANG_SINDHI_PAKISTAN 0x01 +# endif +# ifndef SUBLANG_SINDHI_AFGHANISTAN +# define SUBLANG_SINDHI_AFGHANISTAN 0x02 +# endif +# ifndef SUBLANG_SPANISH_GUATEMALA +# define SUBLANG_SPANISH_GUATEMALA 0x04 +# endif +# ifndef SUBLANG_SPANISH_COSTA_RICA +# define SUBLANG_SPANISH_COSTA_RICA 0x05 +# endif +# ifndef SUBLANG_SPANISH_PANAMA +# define SUBLANG_SPANISH_PANAMA 0x06 +# endif +# ifndef SUBLANG_SPANISH_DOMINICAN_REPUBLIC +# define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07 +# endif +# ifndef SUBLANG_SPANISH_VENEZUELA +# define SUBLANG_SPANISH_VENEZUELA 0x08 +# endif +# ifndef SUBLANG_SPANISH_COLOMBIA +# define SUBLANG_SPANISH_COLOMBIA 0x09 +# endif +# ifndef SUBLANG_SPANISH_PERU +# define SUBLANG_SPANISH_PERU 0x0a +# endif +# ifndef SUBLANG_SPANISH_ARGENTINA +# define SUBLANG_SPANISH_ARGENTINA 0x0b +# endif +# ifndef SUBLANG_SPANISH_ECUADOR +# define SUBLANG_SPANISH_ECUADOR 0x0c +# endif +# ifndef SUBLANG_SPANISH_CHILE +# define SUBLANG_SPANISH_CHILE 0x0d +# endif +# ifndef SUBLANG_SPANISH_URUGUAY +# define SUBLANG_SPANISH_URUGUAY 0x0e +# endif +# ifndef SUBLANG_SPANISH_PARAGUAY +# define SUBLANG_SPANISH_PARAGUAY 0x0f +# endif +# ifndef SUBLANG_SPANISH_BOLIVIA +# define SUBLANG_SPANISH_BOLIVIA 0x10 +# endif +# ifndef SUBLANG_SPANISH_EL_SALVADOR +# define SUBLANG_SPANISH_EL_SALVADOR 0x11 +# endif +# ifndef SUBLANG_SPANISH_HONDURAS +# define SUBLANG_SPANISH_HONDURAS 0x12 +# endif +# ifndef SUBLANG_SPANISH_NICARAGUA +# define SUBLANG_SPANISH_NICARAGUA 0x13 +# endif +# ifndef SUBLANG_SPANISH_PUERTO_RICO +# define SUBLANG_SPANISH_PUERTO_RICO 0x14 +# endif +# ifndef SUBLANG_SWEDISH_FINLAND +# define SUBLANG_SWEDISH_FINLAND 0x02 +# endif +# ifndef SUBLANG_TAMAZIGHT_ARABIC +# define SUBLANG_TAMAZIGHT_ARABIC 0x01 +# endif +# ifndef SUBLANG_TAMAZIGHT_ALGERIA_LATIN +# define SUBLANG_TAMAZIGHT_ALGERIA_LATIN 0x02 +# endif +# ifndef SUBLANG_TIGRINYA_ETHIOPIA +# define SUBLANG_TIGRINYA_ETHIOPIA 0x01 +# endif +# ifndef SUBLANG_TIGRINYA_ERITREA +# define SUBLANG_TIGRINYA_ERITREA 0x02 +# endif +# ifndef SUBLANG_URDU_PAKISTAN +# define SUBLANG_URDU_PAKISTAN 0x01 +# endif +# ifndef SUBLANG_URDU_INDIA +# define SUBLANG_URDU_INDIA 0x02 +# endif +# ifndef SUBLANG_UZBEK_LATIN +# define SUBLANG_UZBEK_LATIN 0x01 +# endif +# ifndef SUBLANG_UZBEK_CYRILLIC +# define SUBLANG_UZBEK_CYRILLIC 0x02 +# endif +#endif + +# if HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE +/* MacOS X 10.2 or newer */ + +/* Canonicalize a MacOS X locale name to a Unix locale name. + NAME is a sufficiently large buffer. + On input, it contains the MacOS X locale name. + On output, it contains the Unix locale name. */ +# if !defined IN_LIBINTL +static +# endif +void +gl_locale_name_canonicalize (char *name) +{ + /* This conversion is based on a posting by + Deborah GoldSmith on 2005-03-08, + http://lists.apple.com/archives/carbon-dev/2005/Mar/msg00293.html */ + + /* Convert legacy (NeXTstep inherited) English names to Unix (ISO 639 and + ISO 3166) names. Prior to MacOS X 10.3, there is no API for doing this. + Therefore we do it ourselves, using a table based on the results of the + MacOS X 10.3.8 function + CFLocaleCreateCanonicalLocaleIdentifierFromString(). */ + typedef struct { const char legacy[21+1]; const char unixy[5+1]; } + legacy_entry; + static const legacy_entry legacy_table[] = { + { "Afrikaans", "af" }, + { "Albanian", "sq" }, + { "Amharic", "am" }, + { "Arabic", "ar" }, + { "Armenian", "hy" }, + { "Assamese", "as" }, + { "Aymara", "ay" }, + { "Azerbaijani", "az" }, + { "Basque", "eu" }, + { "Belarusian", "be" }, + { "Belorussian", "be" }, + { "Bengali", "bn" }, + { "Brazilian Portugese", "pt_BR" }, + { "Brazilian Portuguese", "pt_BR" }, + { "Breton", "br" }, + { "Bulgarian", "bg" }, + { "Burmese", "my" }, + { "Byelorussian", "be" }, + { "Catalan", "ca" }, + { "Chewa", "ny" }, + { "Chichewa", "ny" }, + { "Chinese", "zh" }, + { "Chinese, Simplified", "zh_CN" }, + { "Chinese, Traditional", "zh_TW" }, + { "Chinese, Tradtional", "zh_TW" }, + { "Croatian", "hr" }, + { "Czech", "cs" }, + { "Danish", "da" }, + { "Dutch", "nl" }, + { "Dzongkha", "dz" }, + { "English", "en" }, + { "Esperanto", "eo" }, + { "Estonian", "et" }, + { "Faroese", "fo" }, + { "Farsi", "fa" }, + { "Finnish", "fi" }, + { "Flemish", "nl_BE" }, + { "French", "fr" }, + { "Galician", "gl" }, + { "Gallegan", "gl" }, + { "Georgian", "ka" }, + { "German", "de" }, + { "Greek", "el" }, + { "Greenlandic", "kl" }, + { "Guarani", "gn" }, + { "Gujarati", "gu" }, + { "Hawaiian", "haw" }, /* Yes, "haw", not "cpe". */ + { "Hebrew", "he" }, + { "Hindi", "hi" }, + { "Hungarian", "hu" }, + { "Icelandic", "is" }, + { "Indonesian", "id" }, + { "Inuktitut", "iu" }, + { "Irish", "ga" }, + { "Italian", "it" }, + { "Japanese", "ja" }, + { "Javanese", "jv" }, + { "Kalaallisut", "kl" }, + { "Kannada", "kn" }, + { "Kashmiri", "ks" }, + { "Kazakh", "kk" }, + { "Khmer", "km" }, + { "Kinyarwanda", "rw" }, + { "Kirghiz", "ky" }, + { "Korean", "ko" }, + { "Kurdish", "ku" }, + { "Latin", "la" }, + { "Latvian", "lv" }, + { "Lithuanian", "lt" }, + { "Macedonian", "mk" }, + { "Malagasy", "mg" }, + { "Malay", "ms" }, + { "Malayalam", "ml" }, + { "Maltese", "mt" }, + { "Manx", "gv" }, + { "Marathi", "mr" }, + { "Moldavian", "mo" }, + { "Mongolian", "mn" }, + { "Nepali", "ne" }, + { "Norwegian", "nb" }, /* Yes, "nb", not the obsolete "no". */ + { "Nyanja", "ny" }, + { "Nynorsk", "nn" }, + { "Oriya", "or" }, + { "Oromo", "om" }, + { "Panjabi", "pa" }, + { "Pashto", "ps" }, + { "Persian", "fa" }, + { "Polish", "pl" }, + { "Portuguese", "pt" }, + { "Portuguese, Brazilian", "pt_BR" }, + { "Punjabi", "pa" }, + { "Pushto", "ps" }, + { "Quechua", "qu" }, + { "Romanian", "ro" }, + { "Ruanda", "rw" }, + { "Rundi", "rn" }, + { "Russian", "ru" }, + { "Sami", "se_NO" }, /* Not just "se". */ + { "Sanskrit", "sa" }, + { "Scottish", "gd" }, + { "Serbian", "sr" }, + { "Simplified Chinese", "zh_CN" }, + { "Sindhi", "sd" }, + { "Sinhalese", "si" }, + { "Slovak", "sk" }, + { "Slovenian", "sl" }, + { "Somali", "so" }, + { "Spanish", "es" }, + { "Sundanese", "su" }, + { "Swahili", "sw" }, + { "Swedish", "sv" }, + { "Tagalog", "tl" }, + { "Tajik", "tg" }, + { "Tajiki", "tg" }, + { "Tamil", "ta" }, + { "Tatar", "tt" }, + { "Telugu", "te" }, + { "Thai", "th" }, + { "Tibetan", "bo" }, + { "Tigrinya", "ti" }, + { "Tongan", "to" }, + { "Traditional Chinese", "zh_TW" }, + { "Turkish", "tr" }, + { "Turkmen", "tk" }, + { "Uighur", "ug" }, + { "Ukrainian", "uk" }, + { "Urdu", "ur" }, + { "Uzbek", "uz" }, + { "Vietnamese", "vi" }, + { "Welsh", "cy" }, + { "Yiddish", "yi" } + }; + + /* Convert new-style locale names with language tags (ISO 639 and ISO 15924) + to Unix (ISO 639 and ISO 3166) names. */ + typedef struct { const char langtag[7+1]; const char unixy[12+1]; } + langtag_entry; + static const langtag_entry langtag_table[] = { + /* MacOS X has "az-Arab", "az-Cyrl", "az-Latn". + The default script for az on Unix is Latin. */ + { "az-Latn", "az" }, + /* MacOS X has "ga-dots". Does not yet exist on Unix. */ + { "ga-dots", "ga" }, + /* MacOS X has "kk-Cyrl". Does not yet exist on Unix. */ + /* MacOS X has "mn-Cyrl", "mn-Mong". + The default script for mn on Unix is Cyrillic. */ + { "mn-Cyrl", "mn" }, + /* MacOS X has "ms-Arab", "ms-Latn". + The default script for ms on Unix is Latin. */ + { "ms-Latn", "ms" }, + /* MacOS X has "tg-Cyrl". + The default script for tg on Unix is Cyrillic. */ + { "tg-Cyrl", "tg" }, + /* MacOS X has "tk-Cyrl". Does not yet exist on Unix. */ + /* MacOS X has "tt-Cyrl". + The default script for tt on Unix is Cyrillic. */ + { "tt-Cyrl", "tt" }, + /* MacOS X has "zh-Hans", "zh-Hant". + Country codes are used to distinguish these on Unix. */ + { "zh-Hans", "zh_CN" }, + { "zh-Hant", "zh_TW" } + }; + + /* Convert script names (ISO 15924) to Unix conventions. + See http://www.unicode.org/iso15924/iso15924-codes.html */ + typedef struct { const char script[4+1]; const char unixy[9+1]; } + script_entry; + static const script_entry script_table[] = { + { "Arab", "arabic" }, + { "Cyrl", "cyrillic" }, + { "Mong", "mongolian" } + }; + + /* Step 1: Convert using legacy_table. */ + if (name[0] >= 'A' && name[0] <= 'Z') + { + unsigned int i1, i2; + i1 = 0; + i2 = sizeof (legacy_table) / sizeof (legacy_entry); + while (i2 - i1 > 1) + { + /* At this point we know that if name occurs in legacy_table, + its index must be >= i1 and < i2. */ + unsigned int i = (i1 + i2) >> 1; + const legacy_entry *p = &legacy_table[i]; + if (strcmp (name, p->legacy) < 0) + i2 = i; + else + i1 = i; + } + if (strcmp (name, legacy_table[i1].legacy) == 0) + { + strcpy (name, legacy_table[i1].unixy); + return; + } + } + + /* Step 2: Convert using langtag_table and script_table. */ + if (strlen (name) == 7 && name[2] == '-') + { + unsigned int i1, i2; + i1 = 0; + i2 = sizeof (langtag_table) / sizeof (langtag_entry); + while (i2 - i1 > 1) + { + /* At this point we know that if name occurs in langtag_table, + its index must be >= i1 and < i2. */ + unsigned int i = (i1 + i2) >> 1; + const langtag_entry *p = &langtag_table[i]; + if (strcmp (name, p->langtag) < 0) + i2 = i; + else + i1 = i; + } + if (strcmp (name, langtag_table[i1].langtag) == 0) + { + strcpy (name, langtag_table[i1].unixy); + return; + } + + i1 = 0; + i2 = sizeof (script_table) / sizeof (script_entry); + while (i2 - i1 > 1) + { + /* At this point we know that if (name + 3) occurs in script_table, + its index must be >= i1 and < i2. */ + unsigned int i = (i1 + i2) >> 1; + const script_entry *p = &script_table[i]; + if (strcmp (name + 3, p->script) < 0) + i2 = i; + else + i1 = i; + } + if (strcmp (name + 3, script_table[i1].script) == 0) + { + name[2] = '@'; + strcpy (name + 3, script_table[i1].unixy); + return; + } + } + + /* Step 3: Convert new-style dash to Unix underscore. */ + { + char *p; + for (p = name; *p != '\0'; p++) + if (*p == '-') + *p = '_'; + } +} + +#endif + +/* XPG3 defines the result of 'setlocale (category, NULL)' as: + "Directs 'setlocale()' to query 'category' and return the current + setting of 'local'." + However it does not specify the exact format. Neither do SUSV2 and + ISO C 99. So we can use this feature only on selected systems (e.g. + those using GNU C Library). */ +#if defined _LIBC || (defined __GLIBC__ && __GLIBC__ >= 2) +# define HAVE_LOCALE_NULL +#endif + +/* Determine the current locale's name, and canonicalize it into XPG syntax + language[_territory][.codeset][@modifier] + The codeset part in the result is not reliable; the locale_charset() + should be used for codeset information instead. + The result must not be freed; it is statically allocated. */ + +const char * +gl_locale_name_posix (int category, const char *categoryname) +{ + /* Use the POSIX methods of looking to 'LC_ALL', 'LC_xxx', and 'LANG'. + On some systems this can be done by the 'setlocale' function itself. */ +#if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL + return setlocale (category, NULL); +#else + const char *retval; + + /* Setting of LC_ALL overrides all other. */ + retval = getenv ("LC_ALL"); + if (retval != NULL && retval[0] != '\0') + return retval; + /* Next comes the name of the desired category. */ + retval = getenv (categoryname); + if (retval != NULL && retval[0] != '\0') + return retval; + /* Last possibility is the LANG environment variable. */ + retval = getenv ("LANG"); + if (retval != NULL && retval[0] != '\0') + return retval; + + return NULL; +#endif +} + +const char * +gl_locale_name_default (void) +{ + /* POSIX:2001 says: + "All implementations shall define a locale as the default locale, to be + invoked when no environment variables are set, or set to the empty + string. This default locale can be the POSIX locale or any other + implementation-defined locale. Some implementations may provide + facilities for local installation administrators to set the default + locale, customizing it for each location. POSIX:2001 does not require + such a facility. */ + +#if !(HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE || defined(WIN32_NATIVE)) + + /* The system does not have a way of setting the locale, other than the + POSIX specified environment variables. We use C as default locale. */ + return "C"; + +#else + + /* Return an XPG style locale name language[_territory][@modifier]. + Don't even bother determining the codeset; it's not useful in this + context, because message catalogs are not specific to a single + codeset. */ + +# if HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE + /* MacOS X 10.2 or newer */ + { + /* Cache the locale name, since CoreFoundation calls are expensive. */ + static const char *cached_localename; + + if (cached_localename == NULL) + { + char namebuf[256]; +# if HAVE_CFLOCALECOPYCURRENT /* MacOS X 10.3 or newer */ + CFLocaleRef locale = CFLocaleCopyCurrent (); + CFStringRef name = CFLocaleGetIdentifier (locale); + + if (CFStringGetCString (name, namebuf, sizeof(namebuf), + kCFStringEncodingASCII)) + { + gl_locale_name_canonicalize (namebuf); + cached_localename = strdup (namebuf); + } + CFRelease (locale); +# elif HAVE_CFPREFERENCESCOPYAPPVALUE /* MacOS X 10.2 or newer */ + CFTypeRef value = + CFPreferencesCopyAppValue (CFSTR ("AppleLocale"), + kCFPreferencesCurrentApplication); + if (value != NULL + && CFGetTypeID (value) == CFStringGetTypeID () + && CFStringGetCString ((CFStringRef)value, namebuf, sizeof(namebuf), + kCFStringEncodingASCII)) + { + gl_locale_name_canonicalize (namebuf); + cached_localename = strdup (namebuf); + } +# endif + if (cached_localename == NULL) + cached_localename = "C"; + } + return cached_localename; + } + +# endif + +# if defined(WIN32_NATIVE) /* WIN32, not Cygwin */ + { + LCID lcid; + LANGID langid; + int primary, sub; + + /* Use native Win32 API locale ID. */ + lcid = GetThreadLocale (); + + /* Strip off the sorting rules, keep only the language part. */ + langid = LANGIDFROMLCID (lcid); + + /* Split into language and territory part. */ + primary = PRIMARYLANGID (langid); + sub = SUBLANGID (langid); + + /* Dispatch on language. + See also http://www.unicode.org/unicode/onlinedat/languages.html . + For details about languages, see http://www.ethnologue.com/ . */ + switch (primary) + { + case LANG_AFRIKAANS: return "af_ZA"; + case LANG_ALBANIAN: return "sq_AL"; + case LANG_AMHARIC: return "am_ET"; + case LANG_ARABIC: + switch (sub) + { + case SUBLANG_ARABIC_SAUDI_ARABIA: return "ar_SA"; + case SUBLANG_ARABIC_IRAQ: return "ar_IQ"; + case SUBLANG_ARABIC_EGYPT: return "ar_EG"; + case SUBLANG_ARABIC_LIBYA: return "ar_LY"; + case SUBLANG_ARABIC_ALGERIA: return "ar_DZ"; + case SUBLANG_ARABIC_MOROCCO: return "ar_MA"; + case SUBLANG_ARABIC_TUNISIA: return "ar_TN"; + case SUBLANG_ARABIC_OMAN: return "ar_OM"; + case SUBLANG_ARABIC_YEMEN: return "ar_YE"; + case SUBLANG_ARABIC_SYRIA: return "ar_SY"; + case SUBLANG_ARABIC_JORDAN: return "ar_JO"; + case SUBLANG_ARABIC_LEBANON: return "ar_LB"; + case SUBLANG_ARABIC_KUWAIT: return "ar_KW"; + case SUBLANG_ARABIC_UAE: return "ar_AE"; + case SUBLANG_ARABIC_BAHRAIN: return "ar_BH"; + case SUBLANG_ARABIC_QATAR: return "ar_QA"; + } + return "ar"; + case LANG_ARMENIAN: return "hy_AM"; + case LANG_ASSAMESE: return "as_IN"; + case LANG_AZERI: + switch (sub) + { + /* FIXME: Adjust this when Azerbaijani locales appear on Unix. */ + case SUBLANG_AZERI_LATIN: return "az_AZ@latin"; + case SUBLANG_AZERI_CYRILLIC: return "az_AZ@cyrillic"; + } + return "az"; + case LANG_BASQUE: + switch (sub) + { + case SUBLANG_DEFAULT: return "eu_ES"; + } + return "eu"; /* Ambiguous: could be "eu_ES" or "eu_FR". */ + case LANG_BELARUSIAN: return "be_BY"; + case LANG_BENGALI: + switch (sub) + { + case SUBLANG_BENGALI_INDIA: return "bn_IN"; + case SUBLANG_BENGALI_BANGLADESH: return "bn_BD"; + } + return "bn"; + case LANG_BULGARIAN: return "bg_BG"; + case LANG_BURMESE: return "my_MM"; + case LANG_CAMBODIAN: return "km_KH"; + case LANG_CATALAN: return "ca_ES"; + case LANG_CHEROKEE: return "chr_US"; + case LANG_CHINESE: + switch (sub) + { + case SUBLANG_CHINESE_TRADITIONAL: return "zh_TW"; + case SUBLANG_CHINESE_SIMPLIFIED: return "zh_CN"; + case SUBLANG_CHINESE_HONGKONG: return "zh_HK"; + case SUBLANG_CHINESE_SINGAPORE: return "zh_SG"; + case SUBLANG_CHINESE_MACAU: return "zh_MO"; + } + return "zh"; + case LANG_CROATIAN: /* LANG_CROATIAN == LANG_SERBIAN + * What used to be called Serbo-Croatian + * should really now be two separate + * languages because of political reasons. + * (Says tml, who knows nothing about Serbian + * or Croatian.) + * (I can feel those flames coming already.) + */ + switch (sub) + { + case SUBLANG_DEFAULT: return "hr_HR"; + case SUBLANG_SERBIAN_LATIN: return "sr_CS"; + case SUBLANG_SERBIAN_CYRILLIC: return "sr_CS@cyrillic"; + } + return "hr"; + case LANG_CZECH: return "cs_CZ"; + case LANG_DANISH: return "da_DK"; + case LANG_DIVEHI: return "dv_MV"; + case LANG_DUTCH: + switch (sub) + { + case SUBLANG_DUTCH: return "nl_NL"; + case SUBLANG_DUTCH_BELGIAN: /* FLEMISH, VLAAMS */ return "nl_BE"; + } + return "nl"; + case LANG_EDO: return "bin_NG"; + case LANG_ENGLISH: + switch (sub) + { + /* SUBLANG_ENGLISH_US == SUBLANG_DEFAULT. Heh. I thought + * English was the language spoken in England. + * Oh well. + */ + case SUBLANG_ENGLISH_US: return "en_US"; + case SUBLANG_ENGLISH_UK: return "en_GB"; + case SUBLANG_ENGLISH_AUS: return "en_AU"; + case SUBLANG_ENGLISH_CAN: return "en_CA"; + case SUBLANG_ENGLISH_NZ: return "en_NZ"; + case SUBLANG_ENGLISH_EIRE: return "en_IE"; + case SUBLANG_ENGLISH_SOUTH_AFRICA: return "en_ZA"; + case SUBLANG_ENGLISH_JAMAICA: return "en_JM"; + case SUBLANG_ENGLISH_CARIBBEAN: return "en_GD"; /* Grenada? */ + case SUBLANG_ENGLISH_BELIZE: return "en_BZ"; + case SUBLANG_ENGLISH_TRINIDAD: return "en_TT"; + case SUBLANG_ENGLISH_ZIMBABWE: return "en_ZW"; + case SUBLANG_ENGLISH_PHILIPPINES: return "en_PH"; + case SUBLANG_ENGLISH_INDONESIA: return "en_ID"; + case SUBLANG_ENGLISH_HONGKONG: return "en_HK"; + case SUBLANG_ENGLISH_INDIA: return "en_IN"; + case SUBLANG_ENGLISH_MALAYSIA: return "en_MY"; + case SUBLANG_ENGLISH_SINGAPORE: return "en_SG"; + } + return "en"; + case LANG_ESTONIAN: return "et_EE"; + case LANG_FAEROESE: return "fo_FO"; + case LANG_FARSI: return "fa_IR"; + case LANG_FINNISH: return "fi_FI"; + case LANG_FRENCH: + switch (sub) + { + case SUBLANG_FRENCH: return "fr_FR"; + case SUBLANG_FRENCH_BELGIAN: /* WALLOON */ return "fr_BE"; + case SUBLANG_FRENCH_CANADIAN: return "fr_CA"; + case SUBLANG_FRENCH_SWISS: return "fr_CH"; + case SUBLANG_FRENCH_LUXEMBOURG: return "fr_LU"; + case SUBLANG_FRENCH_MONACO: return "fr_MC"; + case SUBLANG_FRENCH_WESTINDIES: return "fr"; /* Caribbean? */ + case SUBLANG_FRENCH_REUNION: return "fr_RE"; + case SUBLANG_FRENCH_CONGO: return "fr_CG"; + case SUBLANG_FRENCH_SENEGAL: return "fr_SN"; + case SUBLANG_FRENCH_CAMEROON: return "fr_CM"; + case SUBLANG_FRENCH_COTEDIVOIRE: return "fr_CI"; + case SUBLANG_FRENCH_MALI: return "fr_ML"; + case SUBLANG_FRENCH_MOROCCO: return "fr_MA"; + case SUBLANG_FRENCH_HAITI: return "fr_HT"; + } + return "fr"; + case LANG_FRISIAN: return "fy_NL"; + case LANG_FULFULDE: + /* Spoken in Nigeria, Guinea, Senegal, Mali, Niger, Cameroon, Benin. */ + return "ff_NG"; + case LANG_GAELIC: + switch (sub) + { + case 0x01: /* SCOTTISH */ return "gd_GB"; + case 0x02: /* IRISH */ return "ga_IE"; + } + return "C"; + case LANG_GALICIAN: return "gl_ES"; + case LANG_GEORGIAN: return "ka_GE"; + case LANG_GERMAN: + switch (sub) + { + case SUBLANG_GERMAN: return "de_DE"; + case SUBLANG_GERMAN_SWISS: return "de_CH"; + case SUBLANG_GERMAN_AUSTRIAN: return "de_AT"; + case SUBLANG_GERMAN_LUXEMBOURG: return "de_LU"; + case SUBLANG_GERMAN_LIECHTENSTEIN: return "de_LI"; + } + return "de"; + case LANG_GREEK: return "el_GR"; + case LANG_GUARANI: return "gn_PY"; + case LANG_GUJARATI: return "gu_IN"; + case LANG_HAUSA: return "ha_NG"; + case LANG_HAWAIIAN: + /* FIXME: Do they mean Hawaiian ("haw_US", 1000 speakers) + or Hawaii Creole English ("cpe_US", 600000 speakers)? */ + return "cpe_US"; + case LANG_HEBREW: return "he_IL"; + case LANG_HINDI: return "hi_IN"; + case LANG_HUNGARIAN: return "hu_HU"; + case LANG_IBIBIO: return "nic_NG"; + case LANG_ICELANDIC: return "is_IS"; + case LANG_IGBO: return "ig_NG"; + case LANG_INDONESIAN: return "id_ID"; + case LANG_INUKTITUT: return "iu_CA"; + case LANG_ITALIAN: + switch (sub) + { + case SUBLANG_ITALIAN: return "it_IT"; + case SUBLANG_ITALIAN_SWISS: return "it_CH"; + } + return "it"; + case LANG_JAPANESE: return "ja_JP"; + case LANG_KANNADA: return "kn_IN"; + case LANG_KANURI: return "kr_NG"; + case LANG_KASHMIRI: + switch (sub) + { + case SUBLANG_DEFAULT: return "ks_PK"; + case SUBLANG_KASHMIRI_INDIA: return "ks_IN"; + } + return "ks"; + case LANG_KAZAK: return "kk_KZ"; + case LANG_KONKANI: + /* FIXME: Adjust this when such locales appear on Unix. */ + return "kok_IN"; + case LANG_KOREAN: return "ko_KR"; + case LANG_KYRGYZ: return "ky_KG"; + case LANG_LAO: return "lo_LA"; + case LANG_LATIN: return "la_VA"; + case LANG_LATVIAN: return "lv_LV"; + case LANG_LITHUANIAN: return "lt_LT"; + case LANG_MACEDONIAN: return "mk_MK"; + case LANG_MALAY: + switch (sub) + { + case SUBLANG_MALAY_MALAYSIA: return "ms_MY"; + case SUBLANG_MALAY_BRUNEI_DARUSSALAM: return "ms_BN"; + } + return "ms"; + case LANG_MALAYALAM: return "ml_IN"; + case LANG_MALTESE: return "mt_MT"; + case LANG_MANIPURI: + /* FIXME: Adjust this when such locales appear on Unix. */ + return "mni_IN"; + case LANG_MARATHI: return "mr_IN"; + case LANG_MONGOLIAN: + switch (sub) + { + case SUBLANG_DEFAULT: return "mn_MN"; + } + return "mn"; /* Ambiguous: could be "mn_CN" or "mn_MN". */ + case LANG_NEPALI: + switch (sub) + { + case SUBLANG_DEFAULT: return "ne_NP"; + case SUBLANG_NEPALI_INDIA: return "ne_IN"; + } + return "ne"; + case LANG_NORWEGIAN: + switch (sub) + { + case SUBLANG_NORWEGIAN_BOKMAL: return "nb_NO"; + case SUBLANG_NORWEGIAN_NYNORSK: return "nn_NO"; + } + return "no"; + case LANG_ORIYA: return "or_IN"; + case LANG_OROMO: return "om_ET"; + case LANG_PAPIAMENTU: return "pap_AN"; + case LANG_PASHTO: + return "ps"; /* Ambiguous: could be "ps_PK" or "ps_AF". */ + case LANG_POLISH: return "pl_PL"; + case LANG_PORTUGUESE: + switch (sub) + { + case SUBLANG_PORTUGUESE: return "pt_PT"; + /* Hmm. SUBLANG_PORTUGUESE_BRAZILIAN == SUBLANG_DEFAULT. + Same phenomenon as SUBLANG_ENGLISH_US == SUBLANG_DEFAULT. */ + case SUBLANG_PORTUGUESE_BRAZILIAN: return "pt_BR"; + } + return "pt"; + case LANG_PUNJABI: + switch (sub) + { + case SUBLANG_PUNJABI_INDIA: return "pa_IN"; /* Gurmukhi script */ + case SUBLANG_PUNJABI_PAKISTAN: return "pa_PK"; /* Arabic script */ + } + return "pa"; + case LANG_RHAETO_ROMANCE: return "rm_CH"; + case LANG_ROMANIAN: + switch (sub) + { + case SUBLANG_ROMANIAN_ROMANIA: return "ro_RO"; + case SUBLANG_ROMANIAN_MOLDOVA: return "ro_MD"; + } + return "ro"; + case LANG_RUSSIAN: + switch (sub) + { + case SUBLANG_DEFAULT: return "ru_RU"; + } + return "ru"; /* Ambiguous: could be "ru_RU" or "ru_UA" or "ru_MD". */ + case LANG_SAAMI: /* actually Northern Sami */ return "se_NO"; + case LANG_SANSKRIT: return "sa_IN"; + case LANG_SINDHI: + switch (sub) + { + case SUBLANG_SINDHI_PAKISTAN: return "sd_PK"; + case SUBLANG_SINDHI_AFGHANISTAN: return "sd_AF"; + } + return "sd"; + case LANG_SINHALESE: return "si_LK"; + case LANG_SLOVAK: return "sk_SK"; + case LANG_SLOVENIAN: return "sl_SI"; + case LANG_SOMALI: return "so_SO"; + case LANG_SORBIAN: + /* FIXME: Adjust this when such locales appear on Unix. */ + return "wen_DE"; + case LANG_SPANISH: + switch (sub) + { + case SUBLANG_SPANISH: return "es_ES"; + case SUBLANG_SPANISH_MEXICAN: return "es_MX"; + case SUBLANG_SPANISH_MODERN: + return "es_ES@modern"; /* not seen on Unix */ + case SUBLANG_SPANISH_GUATEMALA: return "es_GT"; + case SUBLANG_SPANISH_COSTA_RICA: return "es_CR"; + case SUBLANG_SPANISH_PANAMA: return "es_PA"; + case SUBLANG_SPANISH_DOMINICAN_REPUBLIC: return "es_DO"; + case SUBLANG_SPANISH_VENEZUELA: return "es_VE"; + case SUBLANG_SPANISH_COLOMBIA: return "es_CO"; + case SUBLANG_SPANISH_PERU: return "es_PE"; + case SUBLANG_SPANISH_ARGENTINA: return "es_AR"; + case SUBLANG_SPANISH_ECUADOR: return "es_EC"; + case SUBLANG_SPANISH_CHILE: return "es_CL"; + case SUBLANG_SPANISH_URUGUAY: return "es_UY"; + case SUBLANG_SPANISH_PARAGUAY: return "es_PY"; + case SUBLANG_SPANISH_BOLIVIA: return "es_BO"; + case SUBLANG_SPANISH_EL_SALVADOR: return "es_SV"; + case SUBLANG_SPANISH_HONDURAS: return "es_HN"; + case SUBLANG_SPANISH_NICARAGUA: return "es_NI"; + case SUBLANG_SPANISH_PUERTO_RICO: return "es_PR"; + } + return "es"; + case LANG_SUTU: return "bnt_TZ"; /* or "st_LS" or "nso_ZA"? */ + case LANG_SWAHILI: return "sw_KE"; + case LANG_SWEDISH: + switch (sub) + { + case SUBLANG_DEFAULT: return "sv_SE"; + case SUBLANG_SWEDISH_FINLAND: return "sv_FI"; + } + return "sv"; + case LANG_SYRIAC: return "syr_TR"; /* An extinct language. */ + case LANG_TAGALOG: return "tl_PH"; + case LANG_TAJIK: return "tg_TJ"; + case LANG_TAMAZIGHT: + switch (sub) + { + /* FIXME: Adjust this when Tamazight locales appear on Unix. */ + case SUBLANG_TAMAZIGHT_ARABIC: return "ber_MA@arabic"; + case SUBLANG_TAMAZIGHT_ALGERIA_LATIN: return "ber_DZ@latin"; + } + return "ber_MA"; + case LANG_TAMIL: + switch (sub) + { + case SUBLANG_DEFAULT: return "ta_IN"; + } + return "ta"; /* Ambiguous: could be "ta_IN" or "ta_LK" or "ta_SG". */ + case LANG_TATAR: return "tt_RU"; + case LANG_TELUGU: return "te_IN"; + case LANG_THAI: return "th_TH"; + case LANG_TIBETAN: return "bo_CN"; + case LANG_TIGRINYA: + switch (sub) + { + case SUBLANG_TIGRINYA_ETHIOPIA: return "ti_ET"; + case SUBLANG_TIGRINYA_ERITREA: return "ti_ER"; + } + return "ti"; + case LANG_TSONGA: return "ts_ZA"; + case LANG_TSWANA: return "tn_BW"; + case LANG_TURKISH: return "tr_TR"; + case LANG_TURKMEN: return "tk_TM"; + case LANG_UKRAINIAN: return "uk_UA"; + case LANG_URDU: + switch (sub) + { + case SUBLANG_URDU_PAKISTAN: return "ur_PK"; + case SUBLANG_URDU_INDIA: return "ur_IN"; + } + return "ur"; + case LANG_UZBEK: + switch (sub) + { + case SUBLANG_UZBEK_LATIN: return "uz_UZ"; + case SUBLANG_UZBEK_CYRILLIC: return "uz_UZ@cyrillic"; + } + return "uz"; + case LANG_VENDA: return "ve_ZA"; + case LANG_VIETNAMESE: return "vi_VN"; + case LANG_WELSH: return "cy_GB"; + case LANG_XHOSA: return "xh_ZA"; + case LANG_YI: return "sit_CN"; + case LANG_YIDDISH: return "yi_IL"; + case LANG_YORUBA: return "yo_NG"; + case LANG_ZULU: return "zu_ZA"; + default: return "C"; + } + } +# endif +#endif +} + +const char * +gl_locale_name (int category, const char *categoryname) +{ + const char *retval; + + retval = gl_locale_name_posix (category, categoryname); + if (retval != NULL) + return retval; + + return gl_locale_name_default (); +} diff --git a/etc/wyatt8740/intl/lock.c b/etc/wyatt8740/intl/lock.c new file mode 100644 index 0000000..f60a8d9 --- /dev/null +++ b/etc/wyatt8740/intl/lock.c @@ -0,0 +1,922 @@ +/* Locking in multithreaded situations. + Copyright (C) 2005-2006 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Written by Bruno Haible , 2005. + Based on GCC's gthr-posix.h, gthr-posix95.h, gthr-solaris.h, + gthr-win32.h. */ + +#include + +#include "lock.h" + +/* ========================================================================= */ + +#if USE_POSIX_THREADS + +/* Use the POSIX threads library. */ + +# if PTHREAD_IN_USE_DETECTION_HARD + +/* The function to be executed by a dummy thread. */ +static void * +dummy_thread_func (void *arg) +{ + return arg; +} + +int +glthread_in_use (void) +{ + static int tested; + static int result; /* 1: linked with -lpthread, 0: only with libc */ + + if (!tested) + { + pthread_t thread; + + if (pthread_create (&thread, NULL, dummy_thread_func, NULL) != 0) + /* Thread creation failed. */ + result = 0; + else + { + /* Thread creation works. */ + void *retval; + if (pthread_join (thread, &retval) != 0) + abort (); + result = 1; + } + tested = 1; + } + return result; +} + +# endif + +/* -------------------------- gl_lock_t datatype -------------------------- */ + +/* ------------------------- gl_rwlock_t datatype ------------------------- */ + +# if HAVE_PTHREAD_RWLOCK + +# if !defined PTHREAD_RWLOCK_INITIALIZER + +void +glthread_rwlock_init (gl_rwlock_t *lock) +{ + if (pthread_rwlock_init (&lock->rwlock, NULL) != 0) + abort (); + lock->initialized = 1; +} + +void +glthread_rwlock_rdlock (gl_rwlock_t *lock) +{ + if (!lock->initialized) + { + if (pthread_mutex_lock (&lock->guard) != 0) + abort (); + if (!lock->initialized) + glthread_rwlock_init (lock); + if (pthread_mutex_unlock (&lock->guard) != 0) + abort (); + } + if (pthread_rwlock_rdlock (&lock->rwlock) != 0) + abort (); +} + +void +glthread_rwlock_wrlock (gl_rwlock_t *lock) +{ + if (!lock->initialized) + { + if (pthread_mutex_lock (&lock->guard) != 0) + abort (); + if (!lock->initialized) + glthread_rwlock_init (lock); + if (pthread_mutex_unlock (&lock->guard) != 0) + abort (); + } + if (pthread_rwlock_wrlock (&lock->rwlock) != 0) + abort (); +} + +void +glthread_rwlock_unlock (gl_rwlock_t *lock) +{ + if (!lock->initialized) + abort (); + if (pthread_rwlock_unlock (&lock->rwlock) != 0) + abort (); +} + +void +glthread_rwlock_destroy (gl_rwlock_t *lock) +{ + if (!lock->initialized) + abort (); + if (pthread_rwlock_destroy (&lock->rwlock) != 0) + abort (); + lock->initialized = 0; +} + +# endif + +# else + +void +glthread_rwlock_init (gl_rwlock_t *lock) +{ + if (pthread_mutex_init (&lock->lock, NULL) != 0) + abort (); + if (pthread_cond_init (&lock->waiting_readers, NULL) != 0) + abort (); + if (pthread_cond_init (&lock->waiting_writers, NULL) != 0) + abort (); + lock->waiting_writers_count = 0; + lock->runcount = 0; +} + +void +glthread_rwlock_rdlock (gl_rwlock_t *lock) +{ + if (pthread_mutex_lock (&lock->lock) != 0) + abort (); + /* Test whether only readers are currently running, and whether the runcount + field will not overflow. */ + /* POSIX says: "It is implementation-defined whether the calling thread + acquires the lock when a writer does not hold the lock and there are + writers blocked on the lock." Let's say, no: give the writers a higher + priority. */ + while (!(lock->runcount + 1 > 0 && lock->waiting_writers_count == 0)) + { + /* This thread has to wait for a while. Enqueue it among the + waiting_readers. */ + if (pthread_cond_wait (&lock->waiting_readers, &lock->lock) != 0) + abort (); + } + lock->runcount++; + if (pthread_mutex_unlock (&lock->lock) != 0) + abort (); +} + +void +glthread_rwlock_wrlock (gl_rwlock_t *lock) +{ + if (pthread_mutex_lock (&lock->lock) != 0) + abort (); + /* Test whether no readers or writers are currently running. */ + while (!(lock->runcount == 0)) + { + /* This thread has to wait for a while. Enqueue it among the + waiting_writers. */ + lock->waiting_writers_count++; + if (pthread_cond_wait (&lock->waiting_writers, &lock->lock) != 0) + abort (); + lock->waiting_writers_count--; + } + lock->runcount--; /* runcount becomes -1 */ + if (pthread_mutex_unlock (&lock->lock) != 0) + abort (); +} + +void +glthread_rwlock_unlock (gl_rwlock_t *lock) +{ + if (pthread_mutex_lock (&lock->lock) != 0) + abort (); + if (lock->runcount < 0) + { + /* Drop a writer lock. */ + if (!(lock->runcount == -1)) + abort (); + lock->runcount = 0; + } + else + { + /* Drop a reader lock. */ + if (!(lock->runcount > 0)) + abort (); + lock->runcount--; + } + if (lock->runcount == 0) + { + /* POSIX recommends that "write locks shall take precedence over read + locks", to avoid "writer starvation". */ + if (lock->waiting_writers_count > 0) + { + /* Wake up one of the waiting writers. */ + if (pthread_cond_signal (&lock->waiting_writers) != 0) + abort (); + } + else + { + /* Wake up all waiting readers. */ + if (pthread_cond_broadcast (&lock->waiting_readers) != 0) + abort (); + } + } + if (pthread_mutex_unlock (&lock->lock) != 0) + abort (); +} + +void +glthread_rwlock_destroy (gl_rwlock_t *lock) +{ + if (pthread_mutex_destroy (&lock->lock) != 0) + abort (); + if (pthread_cond_destroy (&lock->waiting_readers) != 0) + abort (); + if (pthread_cond_destroy (&lock->waiting_writers) != 0) + abort (); +} + +# endif + +/* --------------------- gl_recursive_lock_t datatype --------------------- */ + +# if HAVE_PTHREAD_MUTEX_RECURSIVE + +# if !(defined PTHREAD_RECURSIVE_MUTEX_INITIALIZER || defined PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) + +void +glthread_recursive_lock_init (gl_recursive_lock_t *lock) +{ + pthread_mutexattr_t attributes; + + if (pthread_mutexattr_init (&attributes) != 0) + abort (); + if (pthread_mutexattr_settype (&attributes, PTHREAD_MUTEX_RECURSIVE) != 0) + abort (); + if (pthread_mutex_init (&lock->recmutex, &attributes) != 0) + abort (); + if (pthread_mutexattr_destroy (&attributes) != 0) + abort (); + lock->initialized = 1; +} + +void +glthread_recursive_lock_lock (gl_recursive_lock_t *lock) +{ + if (!lock->initialized) + { + if (pthread_mutex_lock (&lock->guard) != 0) + abort (); + if (!lock->initialized) + glthread_recursive_lock_init (lock); + if (pthread_mutex_unlock (&lock->guard) != 0) + abort (); + } + if (pthread_mutex_lock (&lock->recmutex) != 0) + abort (); +} + +void +glthread_recursive_lock_unlock (gl_recursive_lock_t *lock) +{ + if (!lock->initialized) + abort (); + if (pthread_mutex_unlock (&lock->recmutex) != 0) + abort (); +} + +void +glthread_recursive_lock_destroy (gl_recursive_lock_t *lock) +{ + if (!lock->initialized) + abort (); + if (pthread_mutex_destroy (&lock->recmutex) != 0) + abort (); + lock->initialized = 0; +} + +# endif + +# else + +void +glthread_recursive_lock_init (gl_recursive_lock_t *lock) +{ + if (pthread_mutex_init (&lock->mutex, NULL) != 0) + abort (); + lock->owner = (pthread_t) 0; + lock->depth = 0; +} + +void +glthread_recursive_lock_lock (gl_recursive_lock_t *lock) +{ + pthread_t self = pthread_self (); + if (lock->owner != self) + { + if (pthread_mutex_lock (&lock->mutex) != 0) + abort (); + lock->owner = self; + } + if (++(lock->depth) == 0) /* wraparound? */ + abort (); +} + +void +glthread_recursive_lock_unlock (gl_recursive_lock_t *lock) +{ + if (lock->owner != pthread_self ()) + abort (); + if (lock->depth == 0) + abort (); + if (--(lock->depth) == 0) + { + lock->owner = (pthread_t) 0; + if (pthread_mutex_unlock (&lock->mutex) != 0) + abort (); + } +} + +void +glthread_recursive_lock_destroy (gl_recursive_lock_t *lock) +{ + if (lock->owner != (pthread_t) 0) + abort (); + if (pthread_mutex_destroy (&lock->mutex) != 0) + abort (); +} + +# endif + +/* -------------------------- gl_once_t datatype -------------------------- */ + +static const pthread_once_t fresh_once = PTHREAD_ONCE_INIT; + +int +glthread_once_singlethreaded (pthread_once_t *once_control) +{ + /* We don't know whether pthread_once_t is an integer type, a floating-point + type, a pointer type, or a structure type. */ + char *firstbyte = (char *)once_control; + if (*firstbyte == *(const char *)&fresh_once) + { + /* First time use of once_control. Invert the first byte. */ + *firstbyte = ~ *(const char *)&fresh_once; + return 1; + } + else + return 0; +} + +#endif + +/* ========================================================================= */ + +#if USE_PTH_THREADS + +/* Use the GNU Pth threads library. */ + +/* -------------------------- gl_lock_t datatype -------------------------- */ + +/* ------------------------- gl_rwlock_t datatype ------------------------- */ + +/* --------------------- gl_recursive_lock_t datatype --------------------- */ + +/* -------------------------- gl_once_t datatype -------------------------- */ + +void +glthread_once_call (void *arg) +{ + void (**gl_once_temp_addr) (void) = (void (**) (void)) arg; + void (*initfunction) (void) = *gl_once_temp_addr; + initfunction (); +} + +int +glthread_once_singlethreaded (pth_once_t *once_control) +{ + /* We know that pth_once_t is an integer type. */ + if (*once_control == PTH_ONCE_INIT) + { + /* First time use of once_control. Invert the marker. */ + *once_control = ~ PTH_ONCE_INIT; + return 1; + } + else + return 0; +} + +#endif + +/* ========================================================================= */ + +#if USE_SOLARIS_THREADS + +/* Use the old Solaris threads library. */ + +/* -------------------------- gl_lock_t datatype -------------------------- */ + +/* ------------------------- gl_rwlock_t datatype ------------------------- */ + +/* --------------------- gl_recursive_lock_t datatype --------------------- */ + +void +glthread_recursive_lock_init (gl_recursive_lock_t *lock) +{ + if (mutex_init (&lock->mutex, USYNC_THREAD, NULL) != 0) + abort (); + lock->owner = (thread_t) 0; + lock->depth = 0; +} + +void +glthread_recursive_lock_lock (gl_recursive_lock_t *lock) +{ + thread_t self = thr_self (); + if (lock->owner != self) + { + if (mutex_lock (&lock->mutex) != 0) + abort (); + lock->owner = self; + } + if (++(lock->depth) == 0) /* wraparound? */ + abort (); +} + +void +glthread_recursive_lock_unlock (gl_recursive_lock_t *lock) +{ + if (lock->owner != thr_self ()) + abort (); + if (lock->depth == 0) + abort (); + if (--(lock->depth) == 0) + { + lock->owner = (thread_t) 0; + if (mutex_unlock (&lock->mutex) != 0) + abort (); + } +} + +void +glthread_recursive_lock_destroy (gl_recursive_lock_t *lock) +{ + if (lock->owner != (thread_t) 0) + abort (); + if (mutex_destroy (&lock->mutex) != 0) + abort (); +} + +/* -------------------------- gl_once_t datatype -------------------------- */ + +void +glthread_once (gl_once_t *once_control, void (*initfunction) (void)) +{ + if (!once_control->inited) + { + /* Use the mutex to guarantee that if another thread is already calling + the initfunction, this thread waits until it's finished. */ + if (mutex_lock (&once_control->mutex) != 0) + abort (); + if (!once_control->inited) + { + once_control->inited = 1; + initfunction (); + } + if (mutex_unlock (&once_control->mutex) != 0) + abort (); + } +} + +int +glthread_once_singlethreaded (gl_once_t *once_control) +{ + /* We know that gl_once_t contains an integer type. */ + if (!once_control->inited) + { + /* First time use of once_control. Invert the marker. */ + once_control->inited = ~ 0; + return 1; + } + else + return 0; +} + +#endif + +/* ========================================================================= */ + +#if USE_WIN32_THREADS + +/* -------------------------- gl_lock_t datatype -------------------------- */ + +void +glthread_lock_init (gl_lock_t *lock) +{ + InitializeCriticalSection (&lock->lock); + lock->guard.done = 1; +} + +void +glthread_lock_lock (gl_lock_t *lock) +{ + if (!lock->guard.done) + { + if (InterlockedIncrement (&lock->guard.started) == 0) + /* This thread is the first one to need this lock. Initialize it. */ + glthread_lock_init (lock); + else + /* Yield the CPU while waiting for another thread to finish + initializing this lock. */ + while (!lock->guard.done) + Sleep (0); + } + EnterCriticalSection (&lock->lock); +} + +void +glthread_lock_unlock (gl_lock_t *lock) +{ + if (!lock->guard.done) + abort (); + LeaveCriticalSection (&lock->lock); +} + +void +glthread_lock_destroy (gl_lock_t *lock) +{ + if (!lock->guard.done) + abort (); + DeleteCriticalSection (&lock->lock); + lock->guard.done = 0; +} + +/* ------------------------- gl_rwlock_t datatype ------------------------- */ + +static inline void +gl_waitqueue_init (gl_waitqueue_t *wq) +{ + wq->array = NULL; + wq->count = 0; + wq->alloc = 0; + wq->offset = 0; +} + +/* Enqueues the current thread, represented by an event, in a wait queue. + Returns INVALID_HANDLE_VALUE if an allocation failure occurs. */ +static HANDLE +gl_waitqueue_add (gl_waitqueue_t *wq) +{ + HANDLE event; + unsigned int index; + + if (wq->count == wq->alloc) + { + unsigned int new_alloc = 2 * wq->alloc + 1; + HANDLE *new_array = + (HANDLE *) realloc (wq->array, new_alloc * sizeof (HANDLE)); + if (new_array == NULL) + /* No more memory. */ + return INVALID_HANDLE_VALUE; + /* Now is a good opportunity to rotate the array so that its contents + starts at offset 0. */ + if (wq->offset > 0) + { + unsigned int old_count = wq->count; + unsigned int old_alloc = wq->alloc; + unsigned int old_offset = wq->offset; + unsigned int i; + if (old_offset + old_count > old_alloc) + { + unsigned int limit = old_offset + old_count - old_alloc; + for (i = 0; i < limit; i++) + new_array[old_alloc + i] = new_array[i]; + } + for (i = 0; i < old_count; i++) + new_array[i] = new_array[old_offset + i]; + wq->offset = 0; + } + wq->array = new_array; + wq->alloc = new_alloc; + } + event = CreateEvent (NULL, TRUE, FALSE, NULL); + if (event == INVALID_HANDLE_VALUE) + /* No way to allocate an event. */ + return INVALID_HANDLE_VALUE; + index = wq->offset + wq->count; + if (index >= wq->alloc) + index -= wq->alloc; + wq->array[index] = event; + wq->count++; + return event; +} + +/* Notifies the first thread from a wait queue and dequeues it. */ +static inline void +gl_waitqueue_notify_first (gl_waitqueue_t *wq) +{ + SetEvent (wq->array[wq->offset + 0]); + wq->offset++; + wq->count--; + if (wq->count == 0 || wq->offset == wq->alloc) + wq->offset = 0; +} + +/* Notifies all threads from a wait queue and dequeues them all. */ +static inline void +gl_waitqueue_notify_all (gl_waitqueue_t *wq) +{ + unsigned int i; + + for (i = 0; i < wq->count; i++) + { + unsigned int index = wq->offset + i; + if (index >= wq->alloc) + index -= wq->alloc; + SetEvent (wq->array[index]); + } + wq->count = 0; + wq->offset = 0; +} + +void +glthread_rwlock_init (gl_rwlock_t *lock) +{ + InitializeCriticalSection (&lock->lock); + gl_waitqueue_init (&lock->waiting_readers); + gl_waitqueue_init (&lock->waiting_writers); + lock->runcount = 0; + lock->guard.done = 1; +} + +void +glthread_rwlock_rdlock (gl_rwlock_t *lock) +{ + if (!lock->guard.done) + { + if (InterlockedIncrement (&lock->guard.started) == 0) + /* This thread is the first one to need this lock. Initialize it. */ + glthread_rwlock_init (lock); + else + /* Yield the CPU while waiting for another thread to finish + initializing this lock. */ + while (!lock->guard.done) + Sleep (0); + } + EnterCriticalSection (&lock->lock); + /* Test whether only readers are currently running, and whether the runcount + field will not overflow. */ + if (!(lock->runcount + 1 > 0)) + { + /* This thread has to wait for a while. Enqueue it among the + waiting_readers. */ + HANDLE event = gl_waitqueue_add (&lock->waiting_readers); + if (event != INVALID_HANDLE_VALUE) + { + DWORD result; + LeaveCriticalSection (&lock->lock); + /* Wait until another thread signals this event. */ + result = WaitForSingleObject (event, INFINITE); + if (result == WAIT_FAILED || result == WAIT_TIMEOUT) + abort (); + CloseHandle (event); + /* The thread which signalled the event already did the bookkeeping: + removed us from the waiting_readers, incremented lock->runcount. */ + if (!(lock->runcount > 0)) + abort (); + return; + } + else + { + /* Allocation failure. Weird. */ + do + { + LeaveCriticalSection (&lock->lock); + Sleep (1); + EnterCriticalSection (&lock->lock); + } + while (!(lock->runcount + 1 > 0)); + } + } + lock->runcount++; + LeaveCriticalSection (&lock->lock); +} + +void +glthread_rwlock_wrlock (gl_rwlock_t *lock) +{ + if (!lock->guard.done) + { + if (InterlockedIncrement (&lock->guard.started) == 0) + /* This thread is the first one to need this lock. Initialize it. */ + glthread_rwlock_init (lock); + else + /* Yield the CPU while waiting for another thread to finish + initializing this lock. */ + while (!lock->guard.done) + Sleep (0); + } + EnterCriticalSection (&lock->lock); + /* Test whether no readers or writers are currently running. */ + if (!(lock->runcount == 0)) + { + /* This thread has to wait for a while. Enqueue it among the + waiting_writers. */ + HANDLE event = gl_waitqueue_add (&lock->waiting_writers); + if (event != INVALID_HANDLE_VALUE) + { + DWORD result; + LeaveCriticalSection (&lock->lock); + /* Wait until another thread signals this event. */ + result = WaitForSingleObject (event, INFINITE); + if (result == WAIT_FAILED || result == WAIT_TIMEOUT) + abort (); + CloseHandle (event); + /* The thread which signalled the event already did the bookkeeping: + removed us from the waiting_writers, set lock->runcount = -1. */ + if (!(lock->runcount == -1)) + abort (); + return; + } + else + { + /* Allocation failure. Weird. */ + do + { + LeaveCriticalSection (&lock->lock); + Sleep (1); + EnterCriticalSection (&lock->lock); + } + while (!(lock->runcount == 0)); + } + } + lock->runcount--; /* runcount becomes -1 */ + LeaveCriticalSection (&lock->lock); +} + +void +glthread_rwlock_unlock (gl_rwlock_t *lock) +{ + if (!lock->guard.done) + abort (); + EnterCriticalSection (&lock->lock); + if (lock->runcount < 0) + { + /* Drop a writer lock. */ + if (!(lock->runcount == -1)) + abort (); + lock->runcount = 0; + } + else + { + /* Drop a reader lock. */ + if (!(lock->runcount > 0)) + abort (); + lock->runcount--; + } + if (lock->runcount == 0) + { + /* POSIX recommends that "write locks shall take precedence over read + locks", to avoid "writer starvation". */ + if (lock->waiting_writers.count > 0) + { + /* Wake up one of the waiting writers. */ + lock->runcount--; + gl_waitqueue_notify_first (&lock->waiting_writers); + } + else + { + /* Wake up all waiting readers. */ + lock->runcount += lock->waiting_readers.count; + gl_waitqueue_notify_all (&lock->waiting_readers); + } + } + LeaveCriticalSection (&lock->lock); +} + +void +glthread_rwlock_destroy (gl_rwlock_t *lock) +{ + if (!lock->guard.done) + abort (); + if (lock->runcount != 0) + abort (); + DeleteCriticalSection (&lock->lock); + if (lock->waiting_readers.array != NULL) + free (lock->waiting_readers.array); + if (lock->waiting_writers.array != NULL) + free (lock->waiting_writers.array); + lock->guard.done = 0; +} + +/* --------------------- gl_recursive_lock_t datatype --------------------- */ + +void +glthread_recursive_lock_init (gl_recursive_lock_t *lock) +{ + lock->owner = 0; + lock->depth = 0; + InitializeCriticalSection (&lock->lock); + lock->guard.done = 1; +} + +void +glthread_recursive_lock_lock (gl_recursive_lock_t *lock) +{ + if (!lock->guard.done) + { + if (InterlockedIncrement (&lock->guard.started) == 0) + /* This thread is the first one to need this lock. Initialize it. */ + glthread_recursive_lock_init (lock); + else + /* Yield the CPU while waiting for another thread to finish + initializing this lock. */ + while (!lock->guard.done) + Sleep (0); + } + { + DWORD self = GetCurrentThreadId (); + if (lock->owner != self) + { + EnterCriticalSection (&lock->lock); + lock->owner = self; + } + if (++(lock->depth) == 0) /* wraparound? */ + abort (); + } +} + +void +glthread_recursive_lock_unlock (gl_recursive_lock_t *lock) +{ + if (lock->owner != GetCurrentThreadId ()) + abort (); + if (lock->depth == 0) + abort (); + if (--(lock->depth) == 0) + { + lock->owner = 0; + LeaveCriticalSection (&lock->lock); + } +} + +void +glthread_recursive_lock_destroy (gl_recursive_lock_t *lock) +{ + if (lock->owner != 0) + abort (); + DeleteCriticalSection (&lock->lock); + lock->guard.done = 0; +} + +/* -------------------------- gl_once_t datatype -------------------------- */ + +void +glthread_once (gl_once_t *once_control, void (*initfunction) (void)) +{ + if (once_control->inited <= 0) + { + if (InterlockedIncrement (&once_control->started) == 0) + { + /* This thread is the first one to come to this once_control. */ + InitializeCriticalSection (&once_control->lock); + EnterCriticalSection (&once_control->lock); + once_control->inited = 0; + initfunction (); + once_control->inited = 1; + LeaveCriticalSection (&once_control->lock); + } + else + { + /* Undo last operation. */ + InterlockedDecrement (&once_control->started); + /* Some other thread has already started the initialization. + Yield the CPU while waiting for the other thread to finish + initializing and taking the lock. */ + while (once_control->inited < 0) + Sleep (0); + if (once_control->inited <= 0) + { + /* Take the lock. This blocks until the other thread has + finished calling the initfunction. */ + EnterCriticalSection (&once_control->lock); + LeaveCriticalSection (&once_control->lock); + if (!(once_control->inited > 0)) + abort (); + } + } + } +} + +#endif + +/* ========================================================================= */ diff --git a/etc/wyatt8740/intl/lock.h b/etc/wyatt8740/intl/lock.h new file mode 100644 index 0000000..144531d --- /dev/null +++ b/etc/wyatt8740/intl/lock.h @@ -0,0 +1,1105 @@ +/* Locking in multithreaded situations. + Copyright (C) 2005-2007 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Written by Bruno Haible , 2005. + Based on GCC's gthr-posix.h, gthr-posix95.h, gthr-solaris.h, + gthr-win32.h. */ + +/* This file contains locking primitives for use with a given thread library. + It does not contain primitives for creating threads or for other + synchronization primitives. + + Normal (non-recursive) locks: + Type: gl_lock_t + Declaration: gl_lock_define(extern, name) + Initializer: gl_lock_define_initialized(, name) + Initialization: gl_lock_init (name); + Taking the lock: gl_lock_lock (name); + Releasing the lock: gl_lock_unlock (name); + De-initialization: gl_lock_destroy (name); + + Read-Write (non-recursive) locks: + Type: gl_rwlock_t + Declaration: gl_rwlock_define(extern, name) + Initializer: gl_rwlock_define_initialized(, name) + Initialization: gl_rwlock_init (name); + Taking the lock: gl_rwlock_rdlock (name); + gl_rwlock_wrlock (name); + Releasing the lock: gl_rwlock_unlock (name); + De-initialization: gl_rwlock_destroy (name); + + Recursive locks: + Type: gl_recursive_lock_t + Declaration: gl_recursive_lock_define(extern, name) + Initializer: gl_recursive_lock_define_initialized(, name) + Initialization: gl_recursive_lock_init (name); + Taking the lock: gl_recursive_lock_lock (name); + Releasing the lock: gl_recursive_lock_unlock (name); + De-initialization: gl_recursive_lock_destroy (name); + + Once-only execution: + Type: gl_once_t + Initializer: gl_once_define(extern, name) + Execution: gl_once (name, initfunction); +*/ + + +#ifndef _LOCK_H +#define _LOCK_H + +/* ========================================================================= */ + +#if USE_POSIX_THREADS + +/* Use the POSIX threads library. */ + +# include +# include + +# ifdef __cplusplus +extern "C" { +# endif + +# if PTHREAD_IN_USE_DETECTION_HARD + +/* The pthread_in_use() detection needs to be done at runtime. */ +# define pthread_in_use() \ + glthread_in_use () +extern int glthread_in_use (void); + +# endif + +# if USE_POSIX_THREADS_WEAK + +/* Use weak references to the POSIX threads library. */ + +/* Weak references avoid dragging in external libraries if the other parts + of the program don't use them. Here we use them, because we don't want + every program that uses libintl to depend on libpthread. This assumes + that libpthread would not be loaded after libintl; i.e. if libintl is + loaded first, by an executable that does not depend on libpthread, and + then a module is dynamically loaded that depends on libpthread, libintl + will not be multithread-safe. */ + +/* The way to test at runtime whether libpthread is present is to test + whether a function pointer's value, such as &pthread_mutex_init, is + non-NULL. However, some versions of GCC have a bug through which, in + PIC mode, &foo != NULL always evaluates to true if there is a direct + call to foo(...) in the same function. To avoid this, we test the + address of a function in libpthread that we don't use. */ + +# pragma weak pthread_mutex_init +# pragma weak pthread_mutex_lock +# pragma weak pthread_mutex_unlock +# pragma weak pthread_mutex_destroy +# pragma weak pthread_rwlock_init +# pragma weak pthread_rwlock_rdlock +# pragma weak pthread_rwlock_wrlock +# pragma weak pthread_rwlock_unlock +# pragma weak pthread_rwlock_destroy +# pragma weak pthread_once +# pragma weak pthread_cond_init +# pragma weak pthread_cond_wait +# pragma weak pthread_cond_signal +# pragma weak pthread_cond_broadcast +# pragma weak pthread_cond_destroy +# pragma weak pthread_mutexattr_init +# pragma weak pthread_mutexattr_settype +# pragma weak pthread_mutexattr_destroy +# ifndef pthread_self +# pragma weak pthread_self +# endif + +# if !PTHREAD_IN_USE_DETECTION_HARD +# pragma weak pthread_cancel +# define pthread_in_use() (pthread_cancel != NULL) +# endif + +# else + +# if !PTHREAD_IN_USE_DETECTION_HARD +# define pthread_in_use() 1 +# endif + +# endif + +/* -------------------------- gl_lock_t datatype -------------------------- */ + +typedef pthread_mutex_t gl_lock_t; +# define gl_lock_define(STORAGECLASS, NAME) \ + STORAGECLASS pthread_mutex_t NAME; +# define gl_lock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS pthread_mutex_t NAME = gl_lock_initializer; +# define gl_lock_initializer \ + PTHREAD_MUTEX_INITIALIZER +# define gl_lock_init(NAME) \ + do \ + { \ + if (pthread_in_use () && pthread_mutex_init (&NAME, NULL) != 0) \ + abort (); \ + } \ + while (0) +# define gl_lock_lock(NAME) \ + do \ + { \ + if (pthread_in_use () && pthread_mutex_lock (&NAME) != 0) \ + abort (); \ + } \ + while (0) +# define gl_lock_unlock(NAME) \ + do \ + { \ + if (pthread_in_use () && pthread_mutex_unlock (&NAME) != 0) \ + abort (); \ + } \ + while (0) +# define gl_lock_destroy(NAME) \ + do \ + { \ + if (pthread_in_use () && pthread_mutex_destroy (&NAME) != 0) \ + abort (); \ + } \ + while (0) + +/* ------------------------- gl_rwlock_t datatype ------------------------- */ + +# if HAVE_PTHREAD_RWLOCK + +# ifdef PTHREAD_RWLOCK_INITIALIZER + +typedef pthread_rwlock_t gl_rwlock_t; +# define gl_rwlock_define(STORAGECLASS, NAME) \ + STORAGECLASS pthread_rwlock_t NAME; +# define gl_rwlock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS pthread_rwlock_t NAME = gl_rwlock_initializer; +# define gl_rwlock_initializer \ + PTHREAD_RWLOCK_INITIALIZER +# define gl_rwlock_init(NAME) \ + do \ + { \ + if (pthread_in_use () && pthread_rwlock_init (&NAME, NULL) != 0) \ + abort (); \ + } \ + while (0) +# define gl_rwlock_rdlock(NAME) \ + do \ + { \ + if (pthread_in_use () && pthread_rwlock_rdlock (&NAME) != 0) \ + abort (); \ + } \ + while (0) +# define gl_rwlock_wrlock(NAME) \ + do \ + { \ + if (pthread_in_use () && pthread_rwlock_wrlock (&NAME) != 0) \ + abort (); \ + } \ + while (0) +# define gl_rwlock_unlock(NAME) \ + do \ + { \ + if (pthread_in_use () && pthread_rwlock_unlock (&NAME) != 0) \ + abort (); \ + } \ + while (0) +# define gl_rwlock_destroy(NAME) \ + do \ + { \ + if (pthread_in_use () && pthread_rwlock_destroy (&NAME) != 0) \ + abort (); \ + } \ + while (0) + +# else + +typedef struct + { + int initialized; + pthread_mutex_t guard; /* protects the initialization */ + pthread_rwlock_t rwlock; /* read-write lock */ + } + gl_rwlock_t; +# define gl_rwlock_define(STORAGECLASS, NAME) \ + STORAGECLASS gl_rwlock_t NAME; +# define gl_rwlock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS gl_rwlock_t NAME = gl_rwlock_initializer; +# define gl_rwlock_initializer \ + { 0, PTHREAD_MUTEX_INITIALIZER } +# define gl_rwlock_init(NAME) \ + do \ + { \ + if (pthread_in_use ()) \ + glthread_rwlock_init (&NAME); \ + } \ + while (0) +# define gl_rwlock_rdlock(NAME) \ + do \ + { \ + if (pthread_in_use ()) \ + glthread_rwlock_rdlock (&NAME); \ + } \ + while (0) +# define gl_rwlock_wrlock(NAME) \ + do \ + { \ + if (pthread_in_use ()) \ + glthread_rwlock_wrlock (&NAME); \ + } \ + while (0) +# define gl_rwlock_unlock(NAME) \ + do \ + { \ + if (pthread_in_use ()) \ + glthread_rwlock_unlock (&NAME); \ + } \ + while (0) +# define gl_rwlock_destroy(NAME) \ + do \ + { \ + if (pthread_in_use ()) \ + glthread_rwlock_destroy (&NAME); \ + } \ + while (0) +extern void glthread_rwlock_init (gl_rwlock_t *lock); +extern void glthread_rwlock_rdlock (gl_rwlock_t *lock); +extern void glthread_rwlock_wrlock (gl_rwlock_t *lock); +extern void glthread_rwlock_unlock (gl_rwlock_t *lock); +extern void glthread_rwlock_destroy (gl_rwlock_t *lock); + +# endif + +# else + +typedef struct + { + pthread_mutex_t lock; /* protects the remaining fields */ + pthread_cond_t waiting_readers; /* waiting readers */ + pthread_cond_t waiting_writers; /* waiting writers */ + unsigned int waiting_writers_count; /* number of waiting writers */ + int runcount; /* number of readers running, or -1 when a writer runs */ + } + gl_rwlock_t; +# define gl_rwlock_define(STORAGECLASS, NAME) \ + STORAGECLASS gl_rwlock_t NAME; +# define gl_rwlock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS gl_rwlock_t NAME = gl_rwlock_initializer; +# define gl_rwlock_initializer \ + { PTHREAD_MUTEX_INITIALIZER, PTHREAD_COND_INITIALIZER, PTHREAD_COND_INITIALIZER, 0, 0 } +# define gl_rwlock_init(NAME) \ + do \ + { \ + if (pthread_in_use ()) \ + glthread_rwlock_init (&NAME); \ + } \ + while (0) +# define gl_rwlock_rdlock(NAME) \ + do \ + { \ + if (pthread_in_use ()) \ + glthread_rwlock_rdlock (&NAME); \ + } \ + while (0) +# define gl_rwlock_wrlock(NAME) \ + do \ + { \ + if (pthread_in_use ()) \ + glthread_rwlock_wrlock (&NAME); \ + } \ + while (0) +# define gl_rwlock_unlock(NAME) \ + do \ + { \ + if (pthread_in_use ()) \ + glthread_rwlock_unlock (&NAME); \ + } \ + while (0) +# define gl_rwlock_destroy(NAME) \ + do \ + { \ + if (pthread_in_use ()) \ + glthread_rwlock_destroy (&NAME); \ + } \ + while (0) +extern void glthread_rwlock_init (gl_rwlock_t *lock); +extern void glthread_rwlock_rdlock (gl_rwlock_t *lock); +extern void glthread_rwlock_wrlock (gl_rwlock_t *lock); +extern void glthread_rwlock_unlock (gl_rwlock_t *lock); +extern void glthread_rwlock_destroy (gl_rwlock_t *lock); + +# endif + +/* --------------------- gl_recursive_lock_t datatype --------------------- */ + +# if HAVE_PTHREAD_MUTEX_RECURSIVE + +# if defined PTHREAD_RECURSIVE_MUTEX_INITIALIZER || defined PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP + +typedef pthread_mutex_t gl_recursive_lock_t; +# define gl_recursive_lock_define(STORAGECLASS, NAME) \ + STORAGECLASS pthread_mutex_t NAME; +# define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS pthread_mutex_t NAME = gl_recursive_lock_initializer; +# ifdef PTHREAD_RECURSIVE_MUTEX_INITIALIZER +# define gl_recursive_lock_initializer \ + PTHREAD_RECURSIVE_MUTEX_INITIALIZER +# else +# define gl_recursive_lock_initializer \ + PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +# endif +# define gl_recursive_lock_init(NAME) \ + do \ + { \ + if (pthread_in_use () && pthread_mutex_init (&NAME, NULL) != 0) \ + abort (); \ + } \ + while (0) +# define gl_recursive_lock_lock(NAME) \ + do \ + { \ + if (pthread_in_use () && pthread_mutex_lock (&NAME) != 0) \ + abort (); \ + } \ + while (0) +# define gl_recursive_lock_unlock(NAME) \ + do \ + { \ + if (pthread_in_use () && pthread_mutex_unlock (&NAME) != 0) \ + abort (); \ + } \ + while (0) +# define gl_recursive_lock_destroy(NAME) \ + do \ + { \ + if (pthread_in_use () && pthread_mutex_destroy (&NAME) != 0) \ + abort (); \ + } \ + while (0) + +# else + +typedef struct + { + pthread_mutex_t recmutex; /* recursive mutex */ + pthread_mutex_t guard; /* protects the initialization */ + int initialized; + } + gl_recursive_lock_t; +# define gl_recursive_lock_define(STORAGECLASS, NAME) \ + STORAGECLASS gl_recursive_lock_t NAME; +# define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS gl_recursive_lock_t NAME = gl_recursive_lock_initializer; +# define gl_recursive_lock_initializer \ + { PTHREAD_MUTEX_INITIALIZER, PTHREAD_MUTEX_INITIALIZER, 0 } +# define gl_recursive_lock_init(NAME) \ + do \ + { \ + if (pthread_in_use ()) \ + glthread_recursive_lock_init (&NAME); \ + } \ + while (0) +# define gl_recursive_lock_lock(NAME) \ + do \ + { \ + if (pthread_in_use ()) \ + glthread_recursive_lock_lock (&NAME); \ + } \ + while (0) +# define gl_recursive_lock_unlock(NAME) \ + do \ + { \ + if (pthread_in_use ()) \ + glthread_recursive_lock_unlock (&NAME); \ + } \ + while (0) +# define gl_recursive_lock_destroy(NAME) \ + do \ + { \ + if (pthread_in_use ()) \ + glthread_recursive_lock_destroy (&NAME); \ + } \ + while (0) +extern void glthread_recursive_lock_init (gl_recursive_lock_t *lock); +extern void glthread_recursive_lock_lock (gl_recursive_lock_t *lock); +extern void glthread_recursive_lock_unlock (gl_recursive_lock_t *lock); +extern void glthread_recursive_lock_destroy (gl_recursive_lock_t *lock); + +# endif + +# else + +/* Old versions of POSIX threads on Solaris did not have recursive locks. + We have to implement them ourselves. */ + +typedef struct + { + pthread_mutex_t mutex; + pthread_t owner; + unsigned long depth; + } + gl_recursive_lock_t; +# define gl_recursive_lock_define(STORAGECLASS, NAME) \ + STORAGECLASS gl_recursive_lock_t NAME; +# define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS gl_recursive_lock_t NAME = gl_recursive_lock_initializer; +# define gl_recursive_lock_initializer \ + { PTHREAD_MUTEX_INITIALIZER, (pthread_t) 0, 0 } +# define gl_recursive_lock_init(NAME) \ + do \ + { \ + if (pthread_in_use ()) \ + glthread_recursive_lock_init (&NAME); \ + } \ + while (0) +# define gl_recursive_lock_lock(NAME) \ + do \ + { \ + if (pthread_in_use ()) \ + glthread_recursive_lock_lock (&NAME); \ + } \ + while (0) +# define gl_recursive_lock_unlock(NAME) \ + do \ + { \ + if (pthread_in_use ()) \ + glthread_recursive_lock_unlock (&NAME); \ + } \ + while (0) +# define gl_recursive_lock_destroy(NAME) \ + do \ + { \ + if (pthread_in_use ()) \ + glthread_recursive_lock_destroy (&NAME); \ + } \ + while (0) +extern void glthread_recursive_lock_init (gl_recursive_lock_t *lock); +extern void glthread_recursive_lock_lock (gl_recursive_lock_t *lock); +extern void glthread_recursive_lock_unlock (gl_recursive_lock_t *lock); +extern void glthread_recursive_lock_destroy (gl_recursive_lock_t *lock); + +# endif + +/* -------------------------- gl_once_t datatype -------------------------- */ + +typedef pthread_once_t gl_once_t; +# define gl_once_define(STORAGECLASS, NAME) \ + STORAGECLASS pthread_once_t NAME = PTHREAD_ONCE_INIT; +# define gl_once(NAME, INITFUNCTION) \ + do \ + { \ + if (pthread_in_use ()) \ + { \ + if (pthread_once (&NAME, INITFUNCTION) != 0) \ + abort (); \ + } \ + else \ + { \ + if (glthread_once_singlethreaded (&NAME)) \ + INITFUNCTION (); \ + } \ + } \ + while (0) +extern int glthread_once_singlethreaded (pthread_once_t *once_control); + +# ifdef __cplusplus +} +# endif + +#endif + +/* ========================================================================= */ + +#if USE_PTH_THREADS + +/* Use the GNU Pth threads library. */ + +# include +# include + +# ifdef __cplusplus +extern "C" { +# endif + +# if USE_PTH_THREADS_WEAK + +/* Use weak references to the GNU Pth threads library. */ + +# pragma weak pth_mutex_init +# pragma weak pth_mutex_acquire +# pragma weak pth_mutex_release +# pragma weak pth_rwlock_init +# pragma weak pth_rwlock_acquire +# pragma weak pth_rwlock_release +# pragma weak pth_once + +# pragma weak pth_cancel +# define pth_in_use() (pth_cancel != NULL) + +# else + +# define pth_in_use() 1 + +# endif + +/* -------------------------- gl_lock_t datatype -------------------------- */ + +typedef pth_mutex_t gl_lock_t; +# define gl_lock_define(STORAGECLASS, NAME) \ + STORAGECLASS pth_mutex_t NAME; +# define gl_lock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS pth_mutex_t NAME = gl_lock_initializer; +# define gl_lock_initializer \ + PTH_MUTEX_INIT +# define gl_lock_init(NAME) \ + do \ + { \ + if (pth_in_use() && !pth_mutex_init (&NAME)) \ + abort (); \ + } \ + while (0) +# define gl_lock_lock(NAME) \ + do \ + { \ + if (pth_in_use() && !pth_mutex_acquire (&NAME, 0, NULL)) \ + abort (); \ + } \ + while (0) +# define gl_lock_unlock(NAME) \ + do \ + { \ + if (pth_in_use() && !pth_mutex_release (&NAME)) \ + abort (); \ + } \ + while (0) +# define gl_lock_destroy(NAME) \ + (void)(&NAME) + +/* ------------------------- gl_rwlock_t datatype ------------------------- */ + +typedef pth_rwlock_t gl_rwlock_t; +# define gl_rwlock_define(STORAGECLASS, NAME) \ + STORAGECLASS pth_rwlock_t NAME; +# define gl_rwlock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS pth_rwlock_t NAME = gl_rwlock_initializer; +# define gl_rwlock_initializer \ + PTH_RWLOCK_INIT +# define gl_rwlock_init(NAME) \ + do \ + { \ + if (pth_in_use() && !pth_rwlock_init (&NAME)) \ + abort (); \ + } \ + while (0) +# define gl_rwlock_rdlock(NAME) \ + do \ + { \ + if (pth_in_use() \ + && !pth_rwlock_acquire (&NAME, PTH_RWLOCK_RD, 0, NULL)) \ + abort (); \ + } \ + while (0) +# define gl_rwlock_wrlock(NAME) \ + do \ + { \ + if (pth_in_use() \ + && !pth_rwlock_acquire (&NAME, PTH_RWLOCK_RW, 0, NULL)) \ + abort (); \ + } \ + while (0) +# define gl_rwlock_unlock(NAME) \ + do \ + { \ + if (pth_in_use() && !pth_rwlock_release (&NAME)) \ + abort (); \ + } \ + while (0) +# define gl_rwlock_destroy(NAME) \ + (void)(&NAME) + +/* --------------------- gl_recursive_lock_t datatype --------------------- */ + +/* In Pth, mutexes are recursive by default. */ +typedef pth_mutex_t gl_recursive_lock_t; +# define gl_recursive_lock_define(STORAGECLASS, NAME) \ + STORAGECLASS pth_mutex_t NAME; +# define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS pth_mutex_t NAME = gl_recursive_lock_initializer; +# define gl_recursive_lock_initializer \ + PTH_MUTEX_INIT +# define gl_recursive_lock_init(NAME) \ + do \ + { \ + if (pth_in_use() && !pth_mutex_init (&NAME)) \ + abort (); \ + } \ + while (0) +# define gl_recursive_lock_lock(NAME) \ + do \ + { \ + if (pth_in_use() && !pth_mutex_acquire (&NAME, 0, NULL)) \ + abort (); \ + } \ + while (0) +# define gl_recursive_lock_unlock(NAME) \ + do \ + { \ + if (pth_in_use() && !pth_mutex_release (&NAME)) \ + abort (); \ + } \ + while (0) +# define gl_recursive_lock_destroy(NAME) \ + (void)(&NAME) + +/* -------------------------- gl_once_t datatype -------------------------- */ + +typedef pth_once_t gl_once_t; +# define gl_once_define(STORAGECLASS, NAME) \ + STORAGECLASS pth_once_t NAME = PTH_ONCE_INIT; +# define gl_once(NAME, INITFUNCTION) \ + do \ + { \ + if (pth_in_use ()) \ + { \ + void (*gl_once_temp) (void) = INITFUNCTION; \ + if (!pth_once (&NAME, glthread_once_call, &gl_once_temp)) \ + abort (); \ + } \ + else \ + { \ + if (glthread_once_singlethreaded (&NAME)) \ + INITFUNCTION (); \ + } \ + } \ + while (0) +extern void glthread_once_call (void *arg); +extern int glthread_once_singlethreaded (pth_once_t *once_control); + +# ifdef __cplusplus +} +# endif + +#endif + +/* ========================================================================= */ + +#if USE_SOLARIS_THREADS + +/* Use the old Solaris threads library. */ + +# include +# include +# include + +# ifdef __cplusplus +extern "C" { +# endif + +# if USE_SOLARIS_THREADS_WEAK + +/* Use weak references to the old Solaris threads library. */ + +# pragma weak mutex_init +# pragma weak mutex_lock +# pragma weak mutex_unlock +# pragma weak mutex_destroy +# pragma weak rwlock_init +# pragma weak rw_rdlock +# pragma weak rw_wrlock +# pragma weak rw_unlock +# pragma weak rwlock_destroy +# pragma weak thr_self + +# pragma weak thr_suspend +# define thread_in_use() (thr_suspend != NULL) + +# else + +# define thread_in_use() 1 + +# endif + +/* -------------------------- gl_lock_t datatype -------------------------- */ + +typedef mutex_t gl_lock_t; +# define gl_lock_define(STORAGECLASS, NAME) \ + STORAGECLASS mutex_t NAME; +# define gl_lock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS mutex_t NAME = gl_lock_initializer; +# define gl_lock_initializer \ + DEFAULTMUTEX +# define gl_lock_init(NAME) \ + do \ + { \ + if (thread_in_use () && mutex_init (&NAME, USYNC_THREAD, NULL) != 0) \ + abort (); \ + } \ + while (0) +# define gl_lock_lock(NAME) \ + do \ + { \ + if (thread_in_use () && mutex_lock (&NAME) != 0) \ + abort (); \ + } \ + while (0) +# define gl_lock_unlock(NAME) \ + do \ + { \ + if (thread_in_use () && mutex_unlock (&NAME) != 0) \ + abort (); \ + } \ + while (0) +# define gl_lock_destroy(NAME) \ + do \ + { \ + if (thread_in_use () && mutex_destroy (&NAME) != 0) \ + abort (); \ + } \ + while (0) + +/* ------------------------- gl_rwlock_t datatype ------------------------- */ + +typedef rwlock_t gl_rwlock_t; +# define gl_rwlock_define(STORAGECLASS, NAME) \ + STORAGECLASS rwlock_t NAME; +# define gl_rwlock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS rwlock_t NAME = gl_rwlock_initializer; +# define gl_rwlock_initializer \ + DEFAULTRWLOCK +# define gl_rwlock_init(NAME) \ + do \ + { \ + if (thread_in_use () && rwlock_init (&NAME, USYNC_THREAD, NULL) != 0) \ + abort (); \ + } \ + while (0) +# define gl_rwlock_rdlock(NAME) \ + do \ + { \ + if (thread_in_use () && rw_rdlock (&NAME) != 0) \ + abort (); \ + } \ + while (0) +# define gl_rwlock_wrlock(NAME) \ + do \ + { \ + if (thread_in_use () && rw_wrlock (&NAME) != 0) \ + abort (); \ + } \ + while (0) +# define gl_rwlock_unlock(NAME) \ + do \ + { \ + if (thread_in_use () && rw_unlock (&NAME) != 0) \ + abort (); \ + } \ + while (0) +# define gl_rwlock_destroy(NAME) \ + do \ + { \ + if (thread_in_use () && rwlock_destroy (&NAME) != 0) \ + abort (); \ + } \ + while (0) + +/* --------------------- gl_recursive_lock_t datatype --------------------- */ + +/* Old Solaris threads did not have recursive locks. + We have to implement them ourselves. */ + +typedef struct + { + mutex_t mutex; + thread_t owner; + unsigned long depth; + } + gl_recursive_lock_t; +# define gl_recursive_lock_define(STORAGECLASS, NAME) \ + STORAGECLASS gl_recursive_lock_t NAME; +# define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS gl_recursive_lock_t NAME = gl_recursive_lock_initializer; +# define gl_recursive_lock_initializer \ + { DEFAULTMUTEX, (thread_t) 0, 0 } +# define gl_recursive_lock_init(NAME) \ + do \ + { \ + if (thread_in_use ()) \ + glthread_recursive_lock_init (&NAME); \ + } \ + while (0) +# define gl_recursive_lock_lock(NAME) \ + do \ + { \ + if (thread_in_use ()) \ + glthread_recursive_lock_lock (&NAME); \ + } \ + while (0) +# define gl_recursive_lock_unlock(NAME) \ + do \ + { \ + if (thread_in_use ()) \ + glthread_recursive_lock_unlock (&NAME); \ + } \ + while (0) +# define gl_recursive_lock_destroy(NAME) \ + do \ + { \ + if (thread_in_use ()) \ + glthread_recursive_lock_destroy (&NAME); \ + } \ + while (0) +extern void glthread_recursive_lock_init (gl_recursive_lock_t *lock); +extern void glthread_recursive_lock_lock (gl_recursive_lock_t *lock); +extern void glthread_recursive_lock_unlock (gl_recursive_lock_t *lock); +extern void glthread_recursive_lock_destroy (gl_recursive_lock_t *lock); + +/* -------------------------- gl_once_t datatype -------------------------- */ + +typedef struct + { + volatile int inited; + mutex_t mutex; + } + gl_once_t; +# define gl_once_define(STORAGECLASS, NAME) \ + STORAGECLASS gl_once_t NAME = { 0, DEFAULTMUTEX }; +# define gl_once(NAME, INITFUNCTION) \ + do \ + { \ + if (thread_in_use ()) \ + { \ + glthread_once (&NAME, INITFUNCTION); \ + } \ + else \ + { \ + if (glthread_once_singlethreaded (&NAME)) \ + INITFUNCTION (); \ + } \ + } \ + while (0) +extern void glthread_once (gl_once_t *once_control, void (*initfunction) (void)); +extern int glthread_once_singlethreaded (gl_once_t *once_control); + +# ifdef __cplusplus +} +# endif + +#endif + +/* ========================================================================= */ + +#if USE_WIN32_THREADS + +# include + +# ifdef __cplusplus +extern "C" { +# endif + +/* We can use CRITICAL_SECTION directly, rather than the Win32 Event, Mutex, + Semaphore types, because + - we need only to synchronize inside a single process (address space), + not inter-process locking, + - we don't need to support trylock operations. (TryEnterCriticalSection + does not work on Windows 95/98/ME. Packages that need trylock usually + define their own mutex type.) */ + +/* There is no way to statically initialize a CRITICAL_SECTION. It needs + to be done lazily, once only. For this we need spinlocks. */ + +typedef struct { volatile int done; volatile long started; } gl_spinlock_t; + +/* -------------------------- gl_lock_t datatype -------------------------- */ + +typedef struct + { + gl_spinlock_t guard; /* protects the initialization */ + CRITICAL_SECTION lock; + } + gl_lock_t; +# define gl_lock_define(STORAGECLASS, NAME) \ + STORAGECLASS gl_lock_t NAME; +# define gl_lock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS gl_lock_t NAME = gl_lock_initializer; +# define gl_lock_initializer \ + { { 0, -1 } } +# define gl_lock_init(NAME) \ + glthread_lock_init (&NAME) +# define gl_lock_lock(NAME) \ + glthread_lock_lock (&NAME) +# define gl_lock_unlock(NAME) \ + glthread_lock_unlock (&NAME) +# define gl_lock_destroy(NAME) \ + glthread_lock_destroy (&NAME) +extern void glthread_lock_init (gl_lock_t *lock); +extern void glthread_lock_lock (gl_lock_t *lock); +extern void glthread_lock_unlock (gl_lock_t *lock); +extern void glthread_lock_destroy (gl_lock_t *lock); + +/* ------------------------- gl_rwlock_t datatype ------------------------- */ + +/* It is impossible to implement read-write locks using plain locks, without + introducing an extra thread dedicated to managing read-write locks. + Therefore here we need to use the low-level Event type. */ + +typedef struct + { + HANDLE *array; /* array of waiting threads, each represented by an event */ + unsigned int count; /* number of waiting threads */ + unsigned int alloc; /* length of allocated array */ + unsigned int offset; /* index of first waiting thread in array */ + } + gl_waitqueue_t; +typedef struct + { + gl_spinlock_t guard; /* protects the initialization */ + CRITICAL_SECTION lock; /* protects the remaining fields */ + gl_waitqueue_t waiting_readers; /* waiting readers */ + gl_waitqueue_t waiting_writers; /* waiting writers */ + int runcount; /* number of readers running, or -1 when a writer runs */ + } + gl_rwlock_t; +# define gl_rwlock_define(STORAGECLASS, NAME) \ + STORAGECLASS gl_rwlock_t NAME; +# define gl_rwlock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS gl_rwlock_t NAME = gl_rwlock_initializer; +# define gl_rwlock_initializer \ + { { 0, -1 } } +# define gl_rwlock_init(NAME) \ + glthread_rwlock_init (&NAME) +# define gl_rwlock_rdlock(NAME) \ + glthread_rwlock_rdlock (&NAME) +# define gl_rwlock_wrlock(NAME) \ + glthread_rwlock_wrlock (&NAME) +# define gl_rwlock_unlock(NAME) \ + glthread_rwlock_unlock (&NAME) +# define gl_rwlock_destroy(NAME) \ + glthread_rwlock_destroy (&NAME) +extern void glthread_rwlock_init (gl_rwlock_t *lock); +extern void glthread_rwlock_rdlock (gl_rwlock_t *lock); +extern void glthread_rwlock_wrlock (gl_rwlock_t *lock); +extern void glthread_rwlock_unlock (gl_rwlock_t *lock); +extern void glthread_rwlock_destroy (gl_rwlock_t *lock); + +/* --------------------- gl_recursive_lock_t datatype --------------------- */ + +/* The Win32 documentation says that CRITICAL_SECTION already implements a + recursive lock. But we need not rely on it: It's easy to implement a + recursive lock without this assumption. */ + +typedef struct + { + gl_spinlock_t guard; /* protects the initialization */ + DWORD owner; + unsigned long depth; + CRITICAL_SECTION lock; + } + gl_recursive_lock_t; +# define gl_recursive_lock_define(STORAGECLASS, NAME) \ + STORAGECLASS gl_recursive_lock_t NAME; +# define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS gl_recursive_lock_t NAME = gl_recursive_lock_initializer; +# define gl_recursive_lock_initializer \ + { { 0, -1 }, 0, 0 } +# define gl_recursive_lock_init(NAME) \ + glthread_recursive_lock_init (&NAME) +# define gl_recursive_lock_lock(NAME) \ + glthread_recursive_lock_lock (&NAME) +# define gl_recursive_lock_unlock(NAME) \ + glthread_recursive_lock_unlock (&NAME) +# define gl_recursive_lock_destroy(NAME) \ + glthread_recursive_lock_destroy (&NAME) +extern void glthread_recursive_lock_init (gl_recursive_lock_t *lock); +extern void glthread_recursive_lock_lock (gl_recursive_lock_t *lock); +extern void glthread_recursive_lock_unlock (gl_recursive_lock_t *lock); +extern void glthread_recursive_lock_destroy (gl_recursive_lock_t *lock); + +/* -------------------------- gl_once_t datatype -------------------------- */ + +typedef struct + { + volatile int inited; + volatile long started; + CRITICAL_SECTION lock; + } + gl_once_t; +# define gl_once_define(STORAGECLASS, NAME) \ + STORAGECLASS gl_once_t NAME = { -1, -1 }; +# define gl_once(NAME, INITFUNCTION) \ + glthread_once (&NAME, INITFUNCTION) +extern void glthread_once (gl_once_t *once_control, void (*initfunction) (void)); + +# ifdef __cplusplus +} +# endif + +#endif + +/* ========================================================================= */ + +#if !(USE_POSIX_THREADS || USE_PTH_THREADS || USE_SOLARIS_THREADS || USE_WIN32_THREADS) + +/* Provide dummy implementation if threads are not supported. */ + +/* -------------------------- gl_lock_t datatype -------------------------- */ + +typedef int gl_lock_t; +# define gl_lock_define(STORAGECLASS, NAME) +# define gl_lock_define_initialized(STORAGECLASS, NAME) +# define gl_lock_init(NAME) +# define gl_lock_lock(NAME) +# define gl_lock_unlock(NAME) + +/* ------------------------- gl_rwlock_t datatype ------------------------- */ + +typedef int gl_rwlock_t; +# define gl_rwlock_define(STORAGECLASS, NAME) +# define gl_rwlock_define_initialized(STORAGECLASS, NAME) +# define gl_rwlock_init(NAME) +# define gl_rwlock_rdlock(NAME) +# define gl_rwlock_wrlock(NAME) +# define gl_rwlock_unlock(NAME) + +/* --------------------- gl_recursive_lock_t datatype --------------------- */ + +typedef int gl_recursive_lock_t; +# define gl_recursive_lock_define(STORAGECLASS, NAME) +# define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) +# define gl_recursive_lock_init(NAME) +# define gl_recursive_lock_lock(NAME) +# define gl_recursive_lock_unlock(NAME) + +/* -------------------------- gl_once_t datatype -------------------------- */ + +typedef int gl_once_t; +# define gl_once_define(STORAGECLASS, NAME) \ + STORAGECLASS gl_once_t NAME = 0; +# define gl_once(NAME, INITFUNCTION) \ + do \ + { \ + if (NAME == 0) \ + { \ + NAME = ~ 0; \ + INITFUNCTION (); \ + } \ + } \ + while (0) + +#endif + +/* ========================================================================= */ + +#endif /* _LOCK_H */ diff --git a/etc/wyatt8740/intl/log.c b/etc/wyatt8740/intl/log.c new file mode 100644 index 0000000..e3ab5d0 --- /dev/null +++ b/etc/wyatt8740/intl/log.c @@ -0,0 +1,116 @@ +/* Log file output. + Copyright (C) 2003, 2005 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Written by Bruno Haible . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +/* Handle multi-threaded applications. */ +#ifdef _LIBC +# include +#else +# include "lock.h" +#endif + +/* Print an ASCII string with quotes and escape sequences where needed. */ +static void +print_escaped (FILE *stream, const char *str) +{ + putc ('"', stream); + for (; *str != '\0'; str++) + if (*str == '\n') + { + fputs ("\\n\"", stream); + if (str[1] == '\0') + return; + fputs ("\n\"", stream); + } + else + { + if (*str == '"' || *str == '\\') + putc ('\\', stream); + putc (*str, stream); + } + putc ('"', stream); +} + +static char *last_logfilename = NULL; +static FILE *last_logfile = NULL; +__libc_lock_define_initialized (static, lock) + +static inline void +_nl_log_untranslated_locked (const char *logfilename, const char *domainname, + const char *msgid1, const char *msgid2, int plural) +{ + FILE *logfile; + + /* Can we reuse the last opened logfile? */ + if (last_logfilename == NULL || strcmp (logfilename, last_logfilename) != 0) + { + /* Close the last used logfile. */ + if (last_logfilename != NULL) + { + if (last_logfile != NULL) + { + fclose (last_logfile); + last_logfile = NULL; + } + free (last_logfilename); + last_logfilename = NULL; + } + /* Open the logfile. */ + last_logfilename = (char *) malloc (strlen (logfilename) + 1); + if (last_logfilename == NULL) + return; + strcpy (last_logfilename, logfilename); + last_logfile = fopen (logfilename, "a"); + if (last_logfile == NULL) + return; + } + logfile = last_logfile; + + fprintf (logfile, "domain "); + print_escaped (logfile, domainname); + fprintf (logfile, "\nmsgid "); + print_escaped (logfile, msgid1); + if (plural) + { + fprintf (logfile, "\nmsgid_plural "); + print_escaped (logfile, msgid2); + fprintf (logfile, "\nmsgstr[0] \"\"\n"); + } + else + fprintf (logfile, "\nmsgstr \"\"\n"); + putc ('\n', logfile); +} + +/* Add to the log file an entry denoting a failed translation. */ +void +_nl_log_untranslated (const char *logfilename, const char *domainname, + const char *msgid1, const char *msgid2, int plural) +{ + __libc_lock_lock (lock); + _nl_log_untranslated_locked (logfilename, domainname, msgid1, msgid2, plural); + __libc_lock_unlock (lock); +} diff --git a/etc/wyatt8740/intl/ngettext.c b/etc/wyatt8740/intl/ngettext.c new file mode 100644 index 0000000..a33529c --- /dev/null +++ b/etc/wyatt8740/intl/ngettext.c @@ -0,0 +1,65 @@ +/* Implementation of ngettext(3) function. + Copyright (C) 1995, 1997, 2000-2003 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef _LIBC +# define __need_NULL +# include +#else +# include /* Just for NULL. */ +#endif + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +#include + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define NGETTEXT __ngettext +# define DCNGETTEXT __dcngettext +#else +# define NGETTEXT libintl_ngettext +# define DCNGETTEXT libintl_dcngettext +#endif + +/* Look up MSGID in the current default message catalog for the current + LC_MESSAGES locale. If not found, returns MSGID itself (the default + text). */ +char * +NGETTEXT (const char *msgid1, const char *msgid2, unsigned long int n) +{ + return DCNGETTEXT (NULL, msgid1, msgid2, n, LC_MESSAGES); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__ngettext, ngettext); +#endif diff --git a/etc/wyatt8740/intl/os2compat.c b/etc/wyatt8740/intl/os2compat.c new file mode 100644 index 0000000..d041de2 --- /dev/null +++ b/etc/wyatt8740/intl/os2compat.c @@ -0,0 +1,98 @@ +/* OS/2 compatibility functions. + Copyright (C) 2001-2002 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#define OS2_AWARE +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include + +/* A version of getenv() that works from DLLs */ +extern unsigned long DosScanEnv (const unsigned char *pszName, unsigned char **ppszValue); + +char * +_nl_getenv (const char *name) +{ + unsigned char *value; + if (DosScanEnv (name, &value)) + return NULL; + else + return value; +} + +/* A fixed size buffer. */ +char libintl_nl_default_dirname[MAXPATHLEN+1]; + +char *_nlos2_libdir = NULL; +char *_nlos2_localealiaspath = NULL; +char *_nlos2_localedir = NULL; + +static __attribute__((constructor)) void +nlos2_initialize () +{ + char *root = getenv ("UNIXROOT"); + char *gnulocaledir = getenv ("GNULOCALEDIR"); + + _nlos2_libdir = gnulocaledir; + if (!_nlos2_libdir) + { + if (root) + { + size_t sl = strlen (root); + _nlos2_libdir = (char *) malloc (sl + strlen (LIBDIR) + 1); + memcpy (_nlos2_libdir, root, sl); + memcpy (_nlos2_libdir + sl, LIBDIR, strlen (LIBDIR) + 1); + } + else + _nlos2_libdir = LIBDIR; + } + + _nlos2_localealiaspath = gnulocaledir; + if (!_nlos2_localealiaspath) + { + if (root) + { + size_t sl = strlen (root); + _nlos2_localealiaspath = (char *) malloc (sl + strlen (LOCALE_ALIAS_PATH) + 1); + memcpy (_nlos2_localealiaspath, root, sl); + memcpy (_nlos2_localealiaspath + sl, LOCALE_ALIAS_PATH, strlen (LOCALE_ALIAS_PATH) + 1); + } + else + _nlos2_localealiaspath = LOCALE_ALIAS_PATH; + } + + _nlos2_localedir = gnulocaledir; + if (!_nlos2_localedir) + { + if (root) + { + size_t sl = strlen (root); + _nlos2_localedir = (char *) malloc (sl + strlen (LOCALEDIR) + 1); + memcpy (_nlos2_localedir, root, sl); + memcpy (_nlos2_localedir + sl, LOCALEDIR, strlen (LOCALEDIR) + 1); + } + else + _nlos2_localedir = LOCALEDIR; + } + + if (strlen (_nlos2_localedir) <= MAXPATHLEN) + strcpy (libintl_nl_default_dirname, _nlos2_localedir); +} diff --git a/etc/wyatt8740/intl/os2compat.h b/etc/wyatt8740/intl/os2compat.h new file mode 100644 index 0000000..a18d582 --- /dev/null +++ b/etc/wyatt8740/intl/os2compat.h @@ -0,0 +1,46 @@ +/* OS/2 compatibility defines. + This file is intended to be included from config.h + Copyright (C) 2001-2002 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* When included from os2compat.h we need all the original definitions */ +#ifndef OS2_AWARE + +#undef LIBDIR +#define LIBDIR _nlos2_libdir +extern char *_nlos2_libdir; + +#undef LOCALEDIR +#define LOCALEDIR _nlos2_localedir +extern char *_nlos2_localedir; + +#undef LOCALE_ALIAS_PATH +#define LOCALE_ALIAS_PATH _nlos2_localealiaspath +extern char *_nlos2_localealiaspath; + +#endif + +#undef HAVE_STRCASECMP +#define HAVE_STRCASECMP 1 +#define strcasecmp stricmp +#define strncasecmp strnicmp + +/* We have our own getenv() which works even if library is compiled as DLL */ +#define getenv _nl_getenv + +/* Older versions of gettext used -1 as the value of LC_MESSAGES */ +#define LC_MESSAGES_COMPAT (-1) diff --git a/etc/wyatt8740/intl/osdep.c b/etc/wyatt8740/intl/osdep.c new file mode 100644 index 0000000..3cc35c0 --- /dev/null +++ b/etc/wyatt8740/intl/osdep.c @@ -0,0 +1,26 @@ +/* OS dependent parts of libintl. + Copyright (C) 2001-2002, 2006 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#if defined __CYGWIN__ +# include "intl-exports.c" +#elif defined __EMX__ +# include "os2compat.c" +#else +/* Avoid AIX compiler warning. */ +typedef int dummy; +#endif diff --git a/etc/wyatt8740/intl/plural-exp.c b/etc/wyatt8740/intl/plural-exp.c new file mode 100644 index 0000000..751a688 --- /dev/null +++ b/etc/wyatt8740/intl/plural-exp.c @@ -0,0 +1,155 @@ +/* Expression parsing for plural form selection. + Copyright (C) 2000-2001, 2003, 2005-2007 Free Software Foundation, Inc. + Written by Ulrich Drepper , 2000. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +#include "plural-exp.h" + +#if (defined __GNUC__ && !(__APPLE_CC__ > 1) && !defined __cplusplus) \ + || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L) + +/* These structs are the constant expression for the germanic plural + form determination. It represents the expression "n != 1". */ +static const struct expression plvar = +{ + .nargs = 0, + .operation = var, +}; +static const struct expression plone = +{ + .nargs = 0, + .operation = num, + .val = + { + .num = 1 + } +}; +struct expression GERMANIC_PLURAL = +{ + .nargs = 2, + .operation = not_equal, + .val = + { + .args = + { + [0] = (struct expression *) &plvar, + [1] = (struct expression *) &plone + } + } +}; + +# define INIT_GERMANIC_PLURAL() + +#else + +/* For compilers without support for ISO C 99 struct/union initializers: + Initialization at run-time. */ + +static struct expression plvar; +static struct expression plone; +struct expression GERMANIC_PLURAL; + +static void +init_germanic_plural () +{ + if (plone.val.num == 0) + { + plvar.nargs = 0; + plvar.operation = var; + + plone.nargs = 0; + plone.operation = num; + plone.val.num = 1; + + GERMANIC_PLURAL.nargs = 2; + GERMANIC_PLURAL.operation = not_equal; + GERMANIC_PLURAL.val.args[0] = &plvar; + GERMANIC_PLURAL.val.args[1] = &plone; + } +} + +# define INIT_GERMANIC_PLURAL() init_germanic_plural () + +#endif + +void +internal_function +EXTRACT_PLURAL_EXPRESSION (const char *nullentry, + const struct expression **pluralp, + unsigned long int *npluralsp) +{ + if (nullentry != NULL) + { + const char *plural; + const char *nplurals; + + plural = strstr (nullentry, "plural="); + nplurals = strstr (nullentry, "nplurals="); + if (plural == NULL || nplurals == NULL) + goto no_plural; + else + { + char *endp; + unsigned long int n; + struct parse_args args; + + /* First get the number. */ + nplurals += 9; + while (*nplurals != '\0' && isspace ((unsigned char) *nplurals)) + ++nplurals; + if (!(*nplurals >= '0' && *nplurals <= '9')) + goto no_plural; +#if defined HAVE_STRTOUL || defined _LIBC + n = strtoul (nplurals, &endp, 10); +#else + for (endp = nplurals, n = 0; *endp >= '0' && *endp <= '9'; endp++) + n = n * 10 + (*endp - '0'); +#endif + if (nplurals == endp) + goto no_plural; + *npluralsp = n; + + /* Due to the restrictions bison imposes onto the interface of the + scanner function we have to put the input string and the result + passed up from the parser into the same structure which address + is passed down to the parser. */ + plural += 7; + args.cp = plural; + if (PLURAL_PARSE (&args) != 0) + goto no_plural; + *pluralp = args.res; + } + } + else + { + /* By default we are using the Germanic form: singular form only + for `one', the plural form otherwise. Yes, this is also what + English is using since English is a Germanic language. */ + no_plural: + INIT_GERMANIC_PLURAL (); + *pluralp = &GERMANIC_PLURAL; + *npluralsp = 2; + } +} diff --git a/etc/wyatt8740/intl/plural-exp.h b/etc/wyatt8740/intl/plural-exp.h new file mode 100644 index 0000000..d6cb8c5 --- /dev/null +++ b/etc/wyatt8740/intl/plural-exp.h @@ -0,0 +1,129 @@ +/* Expression parsing and evaluation for plural form selection. + Copyright (C) 2000-2003, 2005-2007 Free Software Foundation, Inc. + Written by Ulrich Drepper , 2000. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _PLURAL_EXP_H +#define _PLURAL_EXP_H + +#ifndef internal_function +# define internal_function +#endif + +#ifndef attribute_hidden +# define attribute_hidden +#endif + +#ifdef __cplusplus +extern "C" { +#endif + + +enum expression_operator +{ + /* Without arguments: */ + var, /* The variable "n". */ + num, /* Decimal number. */ + /* Unary operators: */ + lnot, /* Logical NOT. */ + /* Binary operators: */ + mult, /* Multiplication. */ + divide, /* Division. */ + module, /* Modulo operation. */ + plus, /* Addition. */ + minus, /* Subtraction. */ + less_than, /* Comparison. */ + greater_than, /* Comparison. */ + less_or_equal, /* Comparison. */ + greater_or_equal, /* Comparison. */ + equal, /* Comparison for equality. */ + not_equal, /* Comparison for inequality. */ + land, /* Logical AND. */ + lor, /* Logical OR. */ + /* Ternary operators: */ + qmop /* Question mark operator. */ +}; + +/* This is the representation of the expressions to determine the + plural form. */ +struct expression +{ + int nargs; /* Number of arguments. */ + enum expression_operator operation; + union + { + unsigned long int num; /* Number value for `num'. */ + struct expression *args[3]; /* Up to three arguments. */ + } val; +}; + +/* This is the data structure to pass information to the parser and get + the result in a thread-safe way. */ +struct parse_args +{ + const char *cp; + struct expression *res; +}; + + +/* Names for the libintl functions are a problem. This source code is used + 1. in the GNU C Library library, + 2. in the GNU libintl library, + 3. in the GNU gettext tools. + The function names in each situation must be different, to allow for + binary incompatible changes in 'struct expression'. Furthermore, + 1. in the GNU C Library library, the names have a __ prefix, + 2.+3. in the GNU libintl library and in the GNU gettext tools, the names + must follow ANSI C and not start with __. + So we have to distinguish the three cases. */ +#ifdef _LIBC +# define FREE_EXPRESSION __gettext_free_exp +# define PLURAL_PARSE __gettextparse +# define GERMANIC_PLURAL __gettext_germanic_plural +# define EXTRACT_PLURAL_EXPRESSION __gettext_extract_plural +#elif defined (IN_LIBINTL) +# define FREE_EXPRESSION libintl_gettext_free_exp +# define PLURAL_PARSE libintl_gettextparse +# define GERMANIC_PLURAL libintl_gettext_germanic_plural +# define EXTRACT_PLURAL_EXPRESSION libintl_gettext_extract_plural +#else +# define FREE_EXPRESSION free_plural_expression +# define PLURAL_PARSE parse_plural_expression +# define GERMANIC_PLURAL germanic_plural +# define EXTRACT_PLURAL_EXPRESSION extract_plural_expression +#endif + +extern void FREE_EXPRESSION (struct expression *exp) + internal_function; +extern int PLURAL_PARSE (void *arg); +extern struct expression GERMANIC_PLURAL attribute_hidden; +extern void EXTRACT_PLURAL_EXPRESSION (const char *nullentry, + const struct expression **pluralp, + unsigned long int *npluralsp) + internal_function; + +#if !defined (_LIBC) && !defined (IN_LIBINTL) && !defined (IN_LIBGLOCALE) +extern unsigned long int plural_eval (const struct expression *pexp, + unsigned long int n); +#endif + + +#ifdef __cplusplus +} +#endif + +#endif /* _PLURAL_EXP_H */ diff --git a/etc/wyatt8740/intl/plural.c b/etc/wyatt8740/intl/plural.c new file mode 100644 index 0000000..7a4d947 --- /dev/null +++ b/etc/wyatt8740/intl/plural.c @@ -0,0 +1,1961 @@ +/* A Bison parser, made by GNU Bison 2.3a. */ + +/* Skeleton implementation for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "2.3a" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 1 + +/* Using locations. */ +#define YYLSP_NEEDED 0 + +/* Substitute the variable and function names. */ +#define yyparse __gettextparse +#define yylex __gettextlex +#define yyerror __gettexterror +#define yylval __gettextlval +#define yychar __gettextchar +#define yydebug __gettextdebug +#define yynerrs __gettextnerrs + + +/* Copy the first part of user declarations. */ +/* Line 164 of yacc.c. */ +#line 1 "plural.y" + +/* Expression parsing for plural form selection. + Copyright (C) 2000-2001, 2003, 2005-2006 Free Software Foundation, Inc. + Written by Ulrich Drepper , 2000. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* For bison < 2.0, the bison generated parser uses alloca. AIX 3 forces us + to put this declaration at the beginning of the file. The declaration in + bison's skeleton file comes too late. This must come before + because may include arbitrary system headers. + This can go away once the AM_INTL_SUBDIR macro requires bison >= 2.0. */ +#if defined _AIX && !defined __GNUC__ + #pragma alloca +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include "plural-exp.h" + +/* The main function generated by the parser is called __gettextparse, + but we want it to be called PLURAL_PARSE. */ +#ifndef _LIBC +# define __gettextparse PLURAL_PARSE +#endif + +#define YYLEX_PARAM &((struct parse_args *) arg)->cp +#define YYPARSE_PARAM arg + + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + EQUOP2 = 258, + CMPOP2 = 259, + ADDOP2 = 260, + MULOP2 = 261, + NUMBER = 262 + }; +#endif +/* Tokens. */ +#define EQUOP2 258 +#define CMPOP2 259 +#define ADDOP2 260 +#define MULOP2 261 +#define NUMBER 262 + + + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +{/* Line 191 of yacc.c. */ +#line 51 "plural.y" + + unsigned long int num; + enum expression_operator op; + struct expression *exp; +} +/* Line 191 of yacc.c. */ +#line 175 "plural.c" + YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +#endif + + + + +/* Copy the second part of user declarations. */ +/* Line 221 of yacc.c. */ +#line 57 "plural.y" + +/* Prototypes for local functions. */ +static int yylex (YYSTYPE *lval, const char **pexp); +static void yyerror (const char *str); + +/* Allocation of expressions. */ + +static struct expression * +new_exp (int nargs, enum expression_operator op, + struct expression * const *args) +{ + int i; + struct expression *newp; + + /* If any of the argument could not be malloc'ed, just return NULL. */ + for (i = nargs - 1; i >= 0; i--) + if (args[i] == NULL) + goto fail; + + /* Allocate a new expression. */ + newp = (struct expression *) malloc (sizeof (*newp)); + if (newp != NULL) + { + newp->nargs = nargs; + newp->operation = op; + for (i = nargs - 1; i >= 0; i--) + newp->val.args[i] = args[i]; + return newp; + } + + fail: + for (i = nargs - 1; i >= 0; i--) + FREE_EXPRESSION (args[i]); + + return NULL; +} + +static inline struct expression * +new_exp_0 (enum expression_operator op) +{ + return new_exp (0, op, NULL); +} + +static inline struct expression * +new_exp_1 (enum expression_operator op, struct expression *right) +{ + struct expression *args[1]; + + args[0] = right; + return new_exp (1, op, args); +} + +static struct expression * +new_exp_2 (enum expression_operator op, struct expression *left, + struct expression *right) +{ + struct expression *args[2]; + + args[0] = left; + args[1] = right; + return new_exp (2, op, args); +} + +static inline struct expression * +new_exp_3 (enum expression_operator op, struct expression *bexp, + struct expression *tbranch, struct expression *fbranch) +{ + struct expression *args[3]; + + args[0] = bexp; + args[1] = tbranch; + args[2] = fbranch; + return new_exp (3, op, args); +} + + +/* Line 221 of yacc.c. */ +#line 265 "plural.c" + +#ifdef short +# undef short +#endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; +#endif + +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +typedef signed char yytype_int8; +#else +typedef short int yytype_int8; +#endif + +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(e) ((void) (e)) +#else +# define YYUSE(e) /* empty */ +#endif + +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) +#else +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int yyi) +#else +static int +YYID (yyi) + int yyi; +#endif +{ + return yyi; +} +#endif + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined _STDLIB_H \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss; + YYSTYPE yyvs; + }; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) + +#endif + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 9 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 54 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 16 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 3 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 13 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 27 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 262 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const yytype_uint8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 10, 2, 2, 2, 2, 5, 2, + 14, 15, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 12, 2, + 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 13, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 6, 7, + 8, 9, 11 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint8 yyprhs[] = +{ + 0, 0, 3, 5, 11, 15, 19, 23, 27, 31, + 35, 38, 40, 42 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int8 yyrhs[] = +{ + 17, 0, -1, 18, -1, 18, 3, 18, 12, 18, + -1, 18, 4, 18, -1, 18, 5, 18, -1, 18, + 6, 18, -1, 18, 7, 18, -1, 18, 8, 18, + -1, 18, 9, 18, -1, 10, 18, -1, 13, -1, + 11, -1, 14, 18, 15, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint8 yyrline[] = +{ + 0, 154, 154, 162, 166, 170, 174, 178, 182, 186, + 190, 194, 198, 203 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "'?'", "'|'", "'&'", "EQUOP2", "CMPOP2", + "ADDOP2", "MULOP2", "'!'", "NUMBER", "':'", "'n'", "'('", "')'", + "$accept", "start", "exp", 0 +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 63, 124, 38, 258, 259, 260, 261, + 33, 262, 58, 110, 40, 41 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 16, 17, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 1, 5, 3, 3, 3, 3, 3, 3, + 2, 1, 1, 3 +}; + +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint8 yydefact[] = +{ + 0, 0, 12, 11, 0, 0, 2, 10, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 13, 0, 4, + 5, 6, 7, 8, 9, 0, 3 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int8 yydefgoto[] = +{ + -1, 5, 6 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -10 +static const yytype_int8 yypact[] = +{ + -9, -9, -10, -10, -9, 8, 36, -10, 13, -10, + -9, -9, -9, -9, -9, -9, -9, -10, 26, 41, + 45, 18, -2, 14, -10, -9, 36 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int8 yypgoto[] = +{ + -10, -10, -1 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -1 +static const yytype_uint8 yytable[] = +{ + 7, 1, 2, 8, 3, 4, 15, 16, 9, 18, + 19, 20, 21, 22, 23, 24, 10, 11, 12, 13, + 14, 15, 16, 16, 26, 14, 15, 16, 17, 10, + 11, 12, 13, 14, 15, 16, 0, 0, 25, 10, + 11, 12, 13, 14, 15, 16, 12, 13, 14, 15, + 16, 13, 14, 15, 16 +}; + +static const yytype_int8 yycheck[] = +{ + 1, 10, 11, 4, 13, 14, 8, 9, 0, 10, + 11, 12, 13, 14, 15, 16, 3, 4, 5, 6, + 7, 8, 9, 9, 25, 7, 8, 9, 15, 3, + 4, 5, 6, 7, 8, 9, -1, -1, 12, 3, + 4, 5, 6, 7, 8, 9, 5, 6, 7, 8, + 9, 6, 7, 8, 9 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint8 yystos[] = +{ + 0, 10, 11, 13, 14, 17, 18, 18, 18, 0, + 3, 4, 5, 6, 7, 8, 9, 15, 18, 18, + 18, 18, 18, 18, 18, 12, 18 +}; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ + +#define YYFAIL goto yyerrlab + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + + +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (YYID (0)) +#endif + + +/* YY_LOCATION_PRINT -- Print the location on the stream. + This macro was not mandated originally: define only if we know + we won't break user code: when these are the locations we know. */ + +#ifndef YY_LOCATION_PRINT +# if YYLTYPE_IS_TRIVIAL +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (&yylval, YYLEX_PARAM) +#else +# define YYLEX yylex (&yylval) +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); +# endif + switch (yytype) + { + default: + break; + } +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +#else +static void +yy_stack_print (yybottom, yytop) + yytype_int16 *yybottom; + yytype_int16 *yytop; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, int yyrule) +#else +static void +yy_reduce_print (yyvsp, yyrule) + YYSTYPE *yyvsp; + int yyrule; +#endif +{ + int yynrhs = yyr2[yyrule]; + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + fprintf (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + fprintf (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule); \ +} while (YYID (0)) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static YYSIZE_T +yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static char * +yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into YYRESULT an error message about the unexpected token + YYCHAR while in state YYSTATE. Return the number of bytes copied, + including the terminating null byte. If YYRESULT is null, do not + copy anything; just return the number of bytes that would be + copied. As a special case, return 0 if an ordinary "syntax error" + message will do. Return YYSIZE_MAXIMUM if overflow occurs during + size calculation. */ +static YYSIZE_T +yysyntax_error (char *yyresult, int yystate, int yychar) +{ + int yyn = yypact[yystate]; + + if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) + return 0; + else + { + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; + +# if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +# endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } + + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + + if (yysize_overflow) + return YYSIZE_MAXIMUM; + + if (yyresult) + { + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + char *yyp = yyresult; + int yyi = 0; + while ((*yyp = *yyf) != '\0') + { + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } + } + } + return yysize; + } +} +#endif /* YYERROR_VERBOSE */ + + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +#else +static void +yydestruct (yymsg, yytype, yyvaluep) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; +#endif +{ + YYUSE (yyvaluep); + + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + + default: + break; + } +} + + +/* Prevent warnings from -Wmissing-prototypes. */ + +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (void); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + + + + + + +/*----------. +| yyparse. | +`----------*/ + +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void) +#else +int +yyparse () + +#endif +#endif +{ + /* The lookahead symbol. */ +int yychar; + +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; + + int yystate; + int yyn; + int yyresult; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Lookahead token as an internal (translated) token number. */ + int yytoken = 0; +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss = yyssa; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp; + + + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + YYSIZE_T yystacksize = YYINITDEPTH; + + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + + yyssp = yyss; + yyvsp = yyvs; + + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); + +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + if (yystate == YYFINAL) + YYACCEPT; + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + lookahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to lookahead token. */ + yyn = yypact[yystate]; + if (yyn == YYPACT_NINF) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the lookahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token. */ + yychar = YYEMPTY; + + yystate = yyn; + *++yyvsp = yylval; + + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 2: +/* Line 1269 of yacc.c. */ +#line 155 "plural.y" + { + if ((yyvsp[(1) - (1)].exp) == NULL) + YYABORT; + ((struct parse_args *) arg)->res = (yyvsp[(1) - (1)].exp); + } + break; + + case 3: +/* Line 1269 of yacc.c. */ +#line 163 "plural.y" + { + (yyval.exp) = new_exp_3 (qmop, (yyvsp[(1) - (5)].exp), (yyvsp[(3) - (5)].exp), (yyvsp[(5) - (5)].exp)); + } + break; + + case 4: +/* Line 1269 of yacc.c. */ +#line 167 "plural.y" + { + (yyval.exp) = new_exp_2 (lor, (yyvsp[(1) - (3)].exp), (yyvsp[(3) - (3)].exp)); + } + break; + + case 5: +/* Line 1269 of yacc.c. */ +#line 171 "plural.y" + { + (yyval.exp) = new_exp_2 (land, (yyvsp[(1) - (3)].exp), (yyvsp[(3) - (3)].exp)); + } + break; + + case 6: +/* Line 1269 of yacc.c. */ +#line 175 "plural.y" + { + (yyval.exp) = new_exp_2 ((yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].exp), (yyvsp[(3) - (3)].exp)); + } + break; + + case 7: +/* Line 1269 of yacc.c. */ +#line 179 "plural.y" + { + (yyval.exp) = new_exp_2 ((yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].exp), (yyvsp[(3) - (3)].exp)); + } + break; + + case 8: +/* Line 1269 of yacc.c. */ +#line 183 "plural.y" + { + (yyval.exp) = new_exp_2 ((yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].exp), (yyvsp[(3) - (3)].exp)); + } + break; + + case 9: +/* Line 1269 of yacc.c. */ +#line 187 "plural.y" + { + (yyval.exp) = new_exp_2 ((yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].exp), (yyvsp[(3) - (3)].exp)); + } + break; + + case 10: +/* Line 1269 of yacc.c. */ +#line 191 "plural.y" + { + (yyval.exp) = new_exp_1 (lnot, (yyvsp[(2) - (2)].exp)); + } + break; + + case 11: +/* Line 1269 of yacc.c. */ +#line 195 "plural.y" + { + (yyval.exp) = new_exp_0 (var); + } + break; + + case 12: +/* Line 1269 of yacc.c. */ +#line 199 "plural.y" + { + if (((yyval.exp) = new_exp_0 (num)) != NULL) + (yyval.exp)->val.num = (yyvsp[(1) - (1)].num); + } + break; + + case 13: +/* Line 1269 of yacc.c. */ +#line 204 "plural.y" + { + (yyval.exp) = (yyvsp[(2) - (3)].exp); + } + break; + + +/* Line 1269 of yacc.c. */ +#line 1572 "plural.c" + default: break; + } + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else + { + YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); + if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) + { + YYSIZE_T yyalloc = 2 * yysize; + if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) + yyalloc = YYSTACK_ALLOC_MAXIMUM; + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yyalloc); + if (yymsg) + yymsg_alloc = yyalloc; + else + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + } + } + + if (0 < yysize && yysize <= yymsg_alloc) + { + (void) yysyntax_error (yymsg, yystate, yychar); + yyerror (yymsg); + } + else + { + yyerror (YY_("syntax error")); + if (yysize != 0) + goto yyexhaustedlab; + } + } +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse lookahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse lookahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + *++yyvsp = yylval; + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#ifndef yyoverflow +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); +} + + +/* Line 1486 of yacc.c. */ +#line 209 "plural.y" + + +void +internal_function +FREE_EXPRESSION (struct expression *exp) +{ + if (exp == NULL) + return; + + /* Handle the recursive case. */ + switch (exp->nargs) + { + case 3: + FREE_EXPRESSION (exp->val.args[2]); + /* FALLTHROUGH */ + case 2: + FREE_EXPRESSION (exp->val.args[1]); + /* FALLTHROUGH */ + case 1: + FREE_EXPRESSION (exp->val.args[0]); + /* FALLTHROUGH */ + default: + break; + } + + free (exp); +} + + +static int +yylex (YYSTYPE *lval, const char **pexp) +{ + const char *exp = *pexp; + int result; + + while (1) + { + if (exp[0] == '\0') + { + *pexp = exp; + return YYEOF; + } + + if (exp[0] != ' ' && exp[0] != '\t') + break; + + ++exp; + } + + result = *exp++; + switch (result) + { + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + { + unsigned long int n = result - '0'; + while (exp[0] >= '0' && exp[0] <= '9') + { + n *= 10; + n += exp[0] - '0'; + ++exp; + } + lval->num = n; + result = NUMBER; + } + break; + + case '=': + if (exp[0] == '=') + { + ++exp; + lval->op = equal; + result = EQUOP2; + } + else + result = YYERRCODE; + break; + + case '!': + if (exp[0] == '=') + { + ++exp; + lval->op = not_equal; + result = EQUOP2; + } + break; + + case '&': + case '|': + if (exp[0] == result) + ++exp; + else + result = YYERRCODE; + break; + + case '<': + if (exp[0] == '=') + { + ++exp; + lval->op = less_or_equal; + } + else + lval->op = less_than; + result = CMPOP2; + break; + + case '>': + if (exp[0] == '=') + { + ++exp; + lval->op = greater_or_equal; + } + else + lval->op = greater_than; + result = CMPOP2; + break; + + case '*': + lval->op = mult; + result = MULOP2; + break; + + case '/': + lval->op = divide; + result = MULOP2; + break; + + case '%': + lval->op = module; + result = MULOP2; + break; + + case '+': + lval->op = plus; + result = ADDOP2; + break; + + case '-': + lval->op = minus; + result = ADDOP2; + break; + + case 'n': + case '?': + case ':': + case '(': + case ')': + /* Nothing, just return the character. */ + break; + + case ';': + case '\n': + case '\0': + /* Be safe and let the user call this function again. */ + --exp; + result = YYEOF; + break; + + default: + result = YYERRCODE; +#if YYDEBUG != 0 + --exp; +#endif + break; + } + + *pexp = exp; + + return result; +} + + +static void +yyerror (const char *str) +{ + /* Do nothing. We don't print error messages here. */ +} + diff --git a/etc/wyatt8740/intl/plural.y b/etc/wyatt8740/intl/plural.y new file mode 100644 index 0000000..ec36a09 --- /dev/null +++ b/etc/wyatt8740/intl/plural.y @@ -0,0 +1,385 @@ +%{ +/* Expression parsing for plural form selection. + Copyright (C) 2000-2001, 2003, 2005-2006 Free Software Foundation, Inc. + Written by Ulrich Drepper , 2000. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* For bison < 2.0, the bison generated parser uses alloca. AIX 3 forces us + to put this declaration at the beginning of the file. The declaration in + bison's skeleton file comes too late. This must come before + because may include arbitrary system headers. + This can go away once the AM_INTL_SUBDIR macro requires bison >= 2.0. */ +#if defined _AIX && !defined __GNUC__ + #pragma alloca +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include "plural-exp.h" + +/* The main function generated by the parser is called __gettextparse, + but we want it to be called PLURAL_PARSE. */ +#ifndef _LIBC +# define __gettextparse PLURAL_PARSE +#endif + +#define YYLEX_PARAM &((struct parse_args *) arg)->cp +#define YYPARSE_PARAM arg +%} +%pure_parser +%expect 7 + +%union { + unsigned long int num; + enum expression_operator op; + struct expression *exp; +} + +%{ +/* Prototypes for local functions. */ +static int yylex (YYSTYPE *lval, const char **pexp); +static void yyerror (const char *str); + +/* Allocation of expressions. */ + +static struct expression * +new_exp (int nargs, enum expression_operator op, + struct expression * const *args) +{ + int i; + struct expression *newp; + + /* If any of the argument could not be malloc'ed, just return NULL. */ + for (i = nargs - 1; i >= 0; i--) + if (args[i] == NULL) + goto fail; + + /* Allocate a new expression. */ + newp = (struct expression *) malloc (sizeof (*newp)); + if (newp != NULL) + { + newp->nargs = nargs; + newp->operation = op; + for (i = nargs - 1; i >= 0; i--) + newp->val.args[i] = args[i]; + return newp; + } + + fail: + for (i = nargs - 1; i >= 0; i--) + FREE_EXPRESSION (args[i]); + + return NULL; +} + +static inline struct expression * +new_exp_0 (enum expression_operator op) +{ + return new_exp (0, op, NULL); +} + +static inline struct expression * +new_exp_1 (enum expression_operator op, struct expression *right) +{ + struct expression *args[1]; + + args[0] = right; + return new_exp (1, op, args); +} + +static struct expression * +new_exp_2 (enum expression_operator op, struct expression *left, + struct expression *right) +{ + struct expression *args[2]; + + args[0] = left; + args[1] = right; + return new_exp (2, op, args); +} + +static inline struct expression * +new_exp_3 (enum expression_operator op, struct expression *bexp, + struct expression *tbranch, struct expression *fbranch) +{ + struct expression *args[3]; + + args[0] = bexp; + args[1] = tbranch; + args[2] = fbranch; + return new_exp (3, op, args); +} + +%} + +/* This declares that all operators have the same associativity and the + precedence order as in C. See [Harbison, Steele: C, A Reference Manual]. + There is no unary minus and no bitwise operators. + Operators with the same syntactic behaviour have been merged into a single + token, to save space in the array generated by bison. */ +%right '?' /* ? */ +%left '|' /* || */ +%left '&' /* && */ +%left EQUOP2 /* == != */ +%left CMPOP2 /* < > <= >= */ +%left ADDOP2 /* + - */ +%left MULOP2 /* * / % */ +%right '!' /* ! */ + +%token EQUOP2 CMPOP2 ADDOP2 MULOP2 +%token NUMBER +%type exp + +%% + +start: exp + { + if ($1 == NULL) + YYABORT; + ((struct parse_args *) arg)->res = $1; + } + ; + +exp: exp '?' exp ':' exp + { + $$ = new_exp_3 (qmop, $1, $3, $5); + } + | exp '|' exp + { + $$ = new_exp_2 (lor, $1, $3); + } + | exp '&' exp + { + $$ = new_exp_2 (land, $1, $3); + } + | exp EQUOP2 exp + { + $$ = new_exp_2 ($2, $1, $3); + } + | exp CMPOP2 exp + { + $$ = new_exp_2 ($2, $1, $3); + } + | exp ADDOP2 exp + { + $$ = new_exp_2 ($2, $1, $3); + } + | exp MULOP2 exp + { + $$ = new_exp_2 ($2, $1, $3); + } + | '!' exp + { + $$ = new_exp_1 (lnot, $2); + } + | 'n' + { + $$ = new_exp_0 (var); + } + | NUMBER + { + if (($$ = new_exp_0 (num)) != NULL) + $$->val.num = $1; + } + | '(' exp ')' + { + $$ = $2; + } + ; + +%% + +void +internal_function +FREE_EXPRESSION (struct expression *exp) +{ + if (exp == NULL) + return; + + /* Handle the recursive case. */ + switch (exp->nargs) + { + case 3: + FREE_EXPRESSION (exp->val.args[2]); + /* FALLTHROUGH */ + case 2: + FREE_EXPRESSION (exp->val.args[1]); + /* FALLTHROUGH */ + case 1: + FREE_EXPRESSION (exp->val.args[0]); + /* FALLTHROUGH */ + default: + break; + } + + free (exp); +} + + +static int +yylex (YYSTYPE *lval, const char **pexp) +{ + const char *exp = *pexp; + int result; + + while (1) + { + if (exp[0] == '\0') + { + *pexp = exp; + return YYEOF; + } + + if (exp[0] != ' ' && exp[0] != '\t') + break; + + ++exp; + } + + result = *exp++; + switch (result) + { + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + { + unsigned long int n = result - '0'; + while (exp[0] >= '0' && exp[0] <= '9') + { + n *= 10; + n += exp[0] - '0'; + ++exp; + } + lval->num = n; + result = NUMBER; + } + break; + + case '=': + if (exp[0] == '=') + { + ++exp; + lval->op = equal; + result = EQUOP2; + } + else + result = YYERRCODE; + break; + + case '!': + if (exp[0] == '=') + { + ++exp; + lval->op = not_equal; + result = EQUOP2; + } + break; + + case '&': + case '|': + if (exp[0] == result) + ++exp; + else + result = YYERRCODE; + break; + + case '<': + if (exp[0] == '=') + { + ++exp; + lval->op = less_or_equal; + } + else + lval->op = less_than; + result = CMPOP2; + break; + + case '>': + if (exp[0] == '=') + { + ++exp; + lval->op = greater_or_equal; + } + else + lval->op = greater_than; + result = CMPOP2; + break; + + case '*': + lval->op = mult; + result = MULOP2; + break; + + case '/': + lval->op = divide; + result = MULOP2; + break; + + case '%': + lval->op = module; + result = MULOP2; + break; + + case '+': + lval->op = plus; + result = ADDOP2; + break; + + case '-': + lval->op = minus; + result = ADDOP2; + break; + + case 'n': + case '?': + case ':': + case '(': + case ')': + /* Nothing, just return the character. */ + break; + + case ';': + case '\n': + case '\0': + /* Be safe and let the user call this function again. */ + --exp; + result = YYEOF; + break; + + default: + result = YYERRCODE; +#if YYDEBUG != 0 + --exp; +#endif + break; + } + + *pexp = exp; + + return result; +} + + +static void +yyerror (const char *str) +{ + /* Do nothing. We don't print error messages here. */ +} diff --git a/etc/wyatt8740/intl/printf-args.c b/etc/wyatt8740/intl/printf-args.c new file mode 100644 index 0000000..cbd437d --- /dev/null +++ b/etc/wyatt8740/intl/printf-args.c @@ -0,0 +1,188 @@ +/* Decomposed printf argument list. + Copyright (C) 1999, 2002-2003, 2005-2007 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* This file can be parametrized with the following macros: + ENABLE_UNISTDIO Set to 1 to enable the unistdio extensions. + PRINTF_FETCHARGS Name of the function to be defined. + STATIC Set to 'static' to declare the function static. */ + +#ifndef PRINTF_FETCHARGS +# include +#endif + +/* Specification. */ +#ifndef PRINTF_FETCHARGS +# include "printf-args.h" +#endif + +#ifdef STATIC +STATIC +#endif +int +PRINTF_FETCHARGS (va_list args, arguments *a) +{ + size_t i; + argument *ap; + + for (i = 0, ap = &a->arg[0]; i < a->count; i++, ap++) + switch (ap->type) + { + case TYPE_SCHAR: + ap->a.a_schar = va_arg (args, /*signed char*/ int); + break; + case TYPE_UCHAR: + ap->a.a_uchar = va_arg (args, /*unsigned char*/ int); + break; + case TYPE_SHORT: + ap->a.a_short = va_arg (args, /*short*/ int); + break; + case TYPE_USHORT: + ap->a.a_ushort = va_arg (args, /*unsigned short*/ int); + break; + case TYPE_INT: + ap->a.a_int = va_arg (args, int); + break; + case TYPE_UINT: + ap->a.a_uint = va_arg (args, unsigned int); + break; + case TYPE_LONGINT: + ap->a.a_longint = va_arg (args, long int); + break; + case TYPE_ULONGINT: + ap->a.a_ulongint = va_arg (args, unsigned long int); + break; +#if HAVE_LONG_LONG_INT + case TYPE_LONGLONGINT: + ap->a.a_longlongint = va_arg (args, long long int); + break; + case TYPE_ULONGLONGINT: + ap->a.a_ulonglongint = va_arg (args, unsigned long long int); + break; +#endif + case TYPE_DOUBLE: + ap->a.a_double = va_arg (args, double); + break; + case TYPE_LONGDOUBLE: + ap->a.a_longdouble = va_arg (args, long double); + break; + case TYPE_CHAR: + ap->a.a_char = va_arg (args, int); + break; +#if HAVE_WINT_T + case TYPE_WIDE_CHAR: + /* Although ISO C 99 7.24.1.(2) says that wint_t is "unchanged by + default argument promotions", this is not the case in mingw32, + where wint_t is 'unsigned short'. */ + ap->a.a_wide_char = + (sizeof (wint_t) < sizeof (int) + ? va_arg (args, int) + : va_arg (args, wint_t)); + break; +#endif + case TYPE_STRING: + ap->a.a_string = va_arg (args, const char *); + /* A null pointer is an invalid argument for "%s", but in practice + it occurs quite frequently in printf statements that produce + debug output. Use a fallback in this case. */ + if (ap->a.a_string == NULL) + ap->a.a_string = "(NULL)"; + break; +#if HAVE_WCHAR_T + case TYPE_WIDE_STRING: + ap->a.a_wide_string = va_arg (args, const wchar_t *); + /* A null pointer is an invalid argument for "%ls", but in practice + it occurs quite frequently in printf statements that produce + debug output. Use a fallback in this case. */ + if (ap->a.a_wide_string == NULL) + { + static const wchar_t wide_null_string[] = + { + (wchar_t)'(', + (wchar_t)'N', (wchar_t)'U', (wchar_t)'L', (wchar_t)'L', + (wchar_t)')', + (wchar_t)0 + }; + ap->a.a_wide_string = wide_null_string; + } + break; +#endif + case TYPE_POINTER: + ap->a.a_pointer = va_arg (args, void *); + break; + case TYPE_COUNT_SCHAR_POINTER: + ap->a.a_count_schar_pointer = va_arg (args, signed char *); + break; + case TYPE_COUNT_SHORT_POINTER: + ap->a.a_count_short_pointer = va_arg (args, short *); + break; + case TYPE_COUNT_INT_POINTER: + ap->a.a_count_int_pointer = va_arg (args, int *); + break; + case TYPE_COUNT_LONGINT_POINTER: + ap->a.a_count_longint_pointer = va_arg (args, long int *); + break; +#if HAVE_LONG_LONG_INT + case TYPE_COUNT_LONGLONGINT_POINTER: + ap->a.a_count_longlongint_pointer = va_arg (args, long long int *); + break; +#endif +#if ENABLE_UNISTDIO + /* The unistdio extensions. */ + case TYPE_U8_STRING: + ap->a.a_u8_string = va_arg (args, const uint8_t *); + /* A null pointer is an invalid argument for "%U", but in practice + it occurs quite frequently in printf statements that produce + debug output. Use a fallback in this case. */ + if (ap->a.a_u8_string == NULL) + { + static const uint8_t u8_null_string[] = + { '(', 'N', 'U', 'L', 'L', ')', 0 }; + ap->a.a_u8_string = u8_null_string; + } + break; + case TYPE_U16_STRING: + ap->a.a_u16_string = va_arg (args, const uint16_t *); + /* A null pointer is an invalid argument for "%lU", but in practice + it occurs quite frequently in printf statements that produce + debug output. Use a fallback in this case. */ + if (ap->a.a_u16_string == NULL) + { + static const uint16_t u16_null_string[] = + { '(', 'N', 'U', 'L', 'L', ')', 0 }; + ap->a.a_u16_string = u16_null_string; + } + break; + case TYPE_U32_STRING: + ap->a.a_u32_string = va_arg (args, const uint32_t *); + /* A null pointer is an invalid argument for "%llU", but in practice + it occurs quite frequently in printf statements that produce + debug output. Use a fallback in this case. */ + if (ap->a.a_u32_string == NULL) + { + static const uint32_t u32_null_string[] = + { '(', 'N', 'U', 'L', 'L', ')', 0 }; + ap->a.a_u32_string = u32_null_string; + } + break; +#endif + default: + /* Unknown type. */ + return -1; + } + return 0; +} diff --git a/etc/wyatt8740/intl/printf-args.h b/etc/wyatt8740/intl/printf-args.h new file mode 100644 index 0000000..cf89c3e --- /dev/null +++ b/etc/wyatt8740/intl/printf-args.h @@ -0,0 +1,155 @@ +/* Decomposed printf argument list. + Copyright (C) 1999, 2002-2003, 2006-2007 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _PRINTF_ARGS_H +#define _PRINTF_ARGS_H + +/* This file can be parametrized with the following macros: + ENABLE_UNISTDIO Set to 1 to enable the unistdio extensions. + PRINTF_FETCHARGS Name of the function to be declared. + STATIC Set to 'static' to declare the function static. */ + +/* Default parameters. */ +#ifndef PRINTF_FETCHARGS +# define PRINTF_FETCHARGS printf_fetchargs +#endif + +/* Get size_t. */ +#include + +/* Get wchar_t. */ +#if HAVE_WCHAR_T +# include +#endif + +/* Get wint_t. */ +#if HAVE_WINT_T +# include +#endif + +/* Get va_list. */ +#include + + +/* Argument types */ +typedef enum +{ + TYPE_NONE, + TYPE_SCHAR, + TYPE_UCHAR, + TYPE_SHORT, + TYPE_USHORT, + TYPE_INT, + TYPE_UINT, + TYPE_LONGINT, + TYPE_ULONGINT, +#if HAVE_LONG_LONG_INT + TYPE_LONGLONGINT, + TYPE_ULONGLONGINT, +#endif + TYPE_DOUBLE, + TYPE_LONGDOUBLE, + TYPE_CHAR, +#if HAVE_WINT_T + TYPE_WIDE_CHAR, +#endif + TYPE_STRING, +#if HAVE_WCHAR_T + TYPE_WIDE_STRING, +#endif + TYPE_POINTER, + TYPE_COUNT_SCHAR_POINTER, + TYPE_COUNT_SHORT_POINTER, + TYPE_COUNT_INT_POINTER, + TYPE_COUNT_LONGINT_POINTER +#if HAVE_LONG_LONG_INT +, TYPE_COUNT_LONGLONGINT_POINTER +#endif +#if ENABLE_UNISTDIO + /* The unistdio extensions. */ +, TYPE_U8_STRING +, TYPE_U16_STRING +, TYPE_U32_STRING +#endif +} arg_type; + +/* Polymorphic argument */ +typedef struct +{ + arg_type type; + union + { + signed char a_schar; + unsigned char a_uchar; + short a_short; + unsigned short a_ushort; + int a_int; + unsigned int a_uint; + long int a_longint; + unsigned long int a_ulongint; +#if HAVE_LONG_LONG_INT + long long int a_longlongint; + unsigned long long int a_ulonglongint; +#endif + float a_float; + double a_double; + long double a_longdouble; + int a_char; +#if HAVE_WINT_T + wint_t a_wide_char; +#endif + const char* a_string; +#if HAVE_WCHAR_T + const wchar_t* a_wide_string; +#endif + void* a_pointer; + signed char * a_count_schar_pointer; + short * a_count_short_pointer; + int * a_count_int_pointer; + long int * a_count_longint_pointer; +#if HAVE_LONG_LONG_INT + long long int * a_count_longlongint_pointer; +#endif +#if ENABLE_UNISTDIO + /* The unistdio extensions. */ + const uint8_t * a_u8_string; + const uint16_t * a_u16_string; + const uint32_t * a_u32_string; +#endif + } + a; +} +argument; + +typedef struct +{ + size_t count; + argument *arg; +} +arguments; + + +/* Fetch the arguments, putting them into a. */ +#ifdef STATIC +STATIC +#else +extern +#endif +int PRINTF_FETCHARGS (va_list args, arguments *a); + +#endif /* _PRINTF_ARGS_H */ diff --git a/etc/wyatt8740/intl/printf-parse.c b/etc/wyatt8740/intl/printf-parse.c new file mode 100644 index 0000000..6ed1cc3 --- /dev/null +++ b/etc/wyatt8740/intl/printf-parse.c @@ -0,0 +1,590 @@ +/* Formatted output to strings. + Copyright (C) 1999-2000, 2002-2003, 2006-2007 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* This file can be parametrized with the following macros: + CHAR_T The element type of the format string. + CHAR_T_ONLY_ASCII Set to 1 to enable verification that all characters + in the format string are ASCII. + DIRECTIVE Structure denoting a format directive. + Depends on CHAR_T. + DIRECTIVES Structure denoting the set of format directives of a + format string. Depends on CHAR_T. + PRINTF_PARSE Function that parses a format string. + Depends on CHAR_T. + STATIC Set to 'static' to declare the function static. + ENABLE_UNISTDIO Set to 1 to enable the unistdio extensions. */ + +#ifndef PRINTF_PARSE +# include +#endif + +/* Specification. */ +#ifndef PRINTF_PARSE +# include "printf-parse.h" +#endif + +/* Default parameters. */ +#ifndef PRINTF_PARSE +# define PRINTF_PARSE printf_parse +# define CHAR_T char +# define DIRECTIVE char_directive +# define DIRECTIVES char_directives +#endif + +/* Get size_t, NULL. */ +#include + +/* Get intmax_t. */ +#if defined IN_LIBINTL || defined IN_LIBASPRINTF +# if HAVE_STDINT_H_WITH_UINTMAX +# include +# endif +# if HAVE_INTTYPES_H_WITH_UINTMAX +# include +# endif +#else +# include +#endif + +/* malloc(), realloc(), free(). */ +#include + +/* errno. */ +#include + +/* Checked size_t computations. */ +#include "xsize.h" + +#if CHAR_T_ONLY_ASCII +/* c_isascii(). */ +# include "c-ctype.h" +#endif + +#ifdef STATIC +STATIC +#endif +int +PRINTF_PARSE (const CHAR_T *format, DIRECTIVES *d, arguments *a) +{ + const CHAR_T *cp = format; /* pointer into format */ + size_t arg_posn = 0; /* number of regular arguments consumed */ + size_t d_allocated; /* allocated elements of d->dir */ + size_t a_allocated; /* allocated elements of a->arg */ + size_t max_width_length = 0; + size_t max_precision_length = 0; + + d->count = 0; + d_allocated = 1; + d->dir = (DIRECTIVE *) malloc (d_allocated * sizeof (DIRECTIVE)); + if (d->dir == NULL) + /* Out of memory. */ + goto out_of_memory_1; + + a->count = 0; + a_allocated = 0; + a->arg = NULL; + +#define REGISTER_ARG(_index_,_type_) \ + { \ + size_t n = (_index_); \ + if (n >= a_allocated) \ + { \ + size_t memory_size; \ + argument *memory; \ + \ + a_allocated = xtimes (a_allocated, 2); \ + if (a_allocated <= n) \ + a_allocated = xsum (n, 1); \ + memory_size = xtimes (a_allocated, sizeof (argument)); \ + if (size_overflow_p (memory_size)) \ + /* Overflow, would lead to out of memory. */ \ + goto out_of_memory; \ + memory = (argument *) (a->arg \ + ? realloc (a->arg, memory_size) \ + : malloc (memory_size)); \ + if (memory == NULL) \ + /* Out of memory. */ \ + goto out_of_memory; \ + a->arg = memory; \ + } \ + while (a->count <= n) \ + a->arg[a->count++].type = TYPE_NONE; \ + if (a->arg[n].type == TYPE_NONE) \ + a->arg[n].type = (_type_); \ + else if (a->arg[n].type != (_type_)) \ + /* Ambiguous type for positional argument. */ \ + goto error; \ + } + + while (*cp != '\0') + { + CHAR_T c = *cp++; + if (c == '%') + { + size_t arg_index = ARG_NONE; + DIRECTIVE *dp = &d->dir[d->count]; /* pointer to next directive */ + + /* Initialize the next directive. */ + dp->dir_start = cp - 1; + dp->flags = 0; + dp->width_start = NULL; + dp->width_end = NULL; + dp->width_arg_index = ARG_NONE; + dp->precision_start = NULL; + dp->precision_end = NULL; + dp->precision_arg_index = ARG_NONE; + dp->arg_index = ARG_NONE; + + /* Test for positional argument. */ + if (*cp >= '0' && *cp <= '9') + { + const CHAR_T *np; + + for (np = cp; *np >= '0' && *np <= '9'; np++) + ; + if (*np == '$') + { + size_t n = 0; + + for (np = cp; *np >= '0' && *np <= '9'; np++) + n = xsum (xtimes (n, 10), *np - '0'); + if (n == 0) + /* Positional argument 0. */ + goto error; + if (size_overflow_p (n)) + /* n too large, would lead to out of memory later. */ + goto error; + arg_index = n - 1; + cp = np + 1; + } + } + + /* Read the flags. */ + for (;;) + { + if (*cp == '\'') + { + dp->flags |= FLAG_GROUP; + cp++; + } + else if (*cp == '-') + { + dp->flags |= FLAG_LEFT; + cp++; + } + else if (*cp == '+') + { + dp->flags |= FLAG_SHOWSIGN; + cp++; + } + else if (*cp == ' ') + { + dp->flags |= FLAG_SPACE; + cp++; + } + else if (*cp == '#') + { + dp->flags |= FLAG_ALT; + cp++; + } + else if (*cp == '0') + { + dp->flags |= FLAG_ZERO; + cp++; + } + else + break; + } + + /* Parse the field width. */ + if (*cp == '*') + { + dp->width_start = cp; + cp++; + dp->width_end = cp; + if (max_width_length < 1) + max_width_length = 1; + + /* Test for positional argument. */ + if (*cp >= '0' && *cp <= '9') + { + const CHAR_T *np; + + for (np = cp; *np >= '0' && *np <= '9'; np++) + ; + if (*np == '$') + { + size_t n = 0; + + for (np = cp; *np >= '0' && *np <= '9'; np++) + n = xsum (xtimes (n, 10), *np - '0'); + if (n == 0) + /* Positional argument 0. */ + goto error; + if (size_overflow_p (n)) + /* n too large, would lead to out of memory later. */ + goto error; + dp->width_arg_index = n - 1; + cp = np + 1; + } + } + if (dp->width_arg_index == ARG_NONE) + { + dp->width_arg_index = arg_posn++; + if (dp->width_arg_index == ARG_NONE) + /* arg_posn wrapped around. */ + goto error; + } + REGISTER_ARG (dp->width_arg_index, TYPE_INT); + } + else if (*cp >= '0' && *cp <= '9') + { + size_t width_length; + + dp->width_start = cp; + for (; *cp >= '0' && *cp <= '9'; cp++) + ; + dp->width_end = cp; + width_length = dp->width_end - dp->width_start; + if (max_width_length < width_length) + max_width_length = width_length; + } + + /* Parse the precision. */ + if (*cp == '.') + { + cp++; + if (*cp == '*') + { + dp->precision_start = cp - 1; + cp++; + dp->precision_end = cp; + if (max_precision_length < 2) + max_precision_length = 2; + + /* Test for positional argument. */ + if (*cp >= '0' && *cp <= '9') + { + const CHAR_T *np; + + for (np = cp; *np >= '0' && *np <= '9'; np++) + ; + if (*np == '$') + { + size_t n = 0; + + for (np = cp; *np >= '0' && *np <= '9'; np++) + n = xsum (xtimes (n, 10), *np - '0'); + if (n == 0) + /* Positional argument 0. */ + goto error; + if (size_overflow_p (n)) + /* n too large, would lead to out of memory + later. */ + goto error; + dp->precision_arg_index = n - 1; + cp = np + 1; + } + } + if (dp->precision_arg_index == ARG_NONE) + { + dp->precision_arg_index = arg_posn++; + if (dp->precision_arg_index == ARG_NONE) + /* arg_posn wrapped around. */ + goto error; + } + REGISTER_ARG (dp->precision_arg_index, TYPE_INT); + } + else + { + size_t precision_length; + + dp->precision_start = cp - 1; + for (; *cp >= '0' && *cp <= '9'; cp++) + ; + dp->precision_end = cp; + precision_length = dp->precision_end - dp->precision_start; + if (max_precision_length < precision_length) + max_precision_length = precision_length; + } + } + + { + arg_type type; + + /* Parse argument type/size specifiers. */ + { + int flags = 0; + + for (;;) + { + if (*cp == 'h') + { + flags |= (1 << (flags & 1)); + cp++; + } + else if (*cp == 'L') + { + flags |= 4; + cp++; + } + else if (*cp == 'l') + { + flags += 8; + cp++; + } + else if (*cp == 'j') + { + if (sizeof (intmax_t) > sizeof (long)) + { + /* intmax_t = long long */ + flags += 16; + } + else if (sizeof (intmax_t) > sizeof (int)) + { + /* intmax_t = long */ + flags += 8; + } + cp++; + } + else if (*cp == 'z' || *cp == 'Z') + { + /* 'z' is standardized in ISO C 99, but glibc uses 'Z' + because the warning facility in gcc-2.95.2 understands + only 'Z' (see gcc-2.95.2/gcc/c-common.c:1784). */ + if (sizeof (size_t) > sizeof (long)) + { + /* size_t = long long */ + flags += 16; + } + else if (sizeof (size_t) > sizeof (int)) + { + /* size_t = long */ + flags += 8; + } + cp++; + } + else if (*cp == 't') + { + if (sizeof (ptrdiff_t) > sizeof (long)) + { + /* ptrdiff_t = long long */ + flags += 16; + } + else if (sizeof (ptrdiff_t) > sizeof (int)) + { + /* ptrdiff_t = long */ + flags += 8; + } + cp++; + } + else + break; + } + + /* Read the conversion character. */ + c = *cp++; + switch (c) + { + case 'd': case 'i': +#if HAVE_LONG_LONG_INT + /* If 'long long' exists and is larger than 'long': */ + if (flags >= 16 || (flags & 4)) + type = TYPE_LONGLONGINT; + else +#endif + /* If 'long long' exists and is the same as 'long', we parse + "lld" into TYPE_LONGINT. */ + if (flags >= 8) + type = TYPE_LONGINT; + else if (flags & 2) + type = TYPE_SCHAR; + else if (flags & 1) + type = TYPE_SHORT; + else + type = TYPE_INT; + break; + case 'o': case 'u': case 'x': case 'X': +#if HAVE_LONG_LONG_INT + /* If 'long long' exists and is larger than 'long': */ + if (flags >= 16 || (flags & 4)) + type = TYPE_ULONGLONGINT; + else +#endif + /* If 'unsigned long long' exists and is the same as + 'unsigned long', we parse "llu" into TYPE_ULONGINT. */ + if (flags >= 8) + type = TYPE_ULONGINT; + else if (flags & 2) + type = TYPE_UCHAR; + else if (flags & 1) + type = TYPE_USHORT; + else + type = TYPE_UINT; + break; + case 'f': case 'F': case 'e': case 'E': case 'g': case 'G': + case 'a': case 'A': + if (flags >= 16 || (flags & 4)) + type = TYPE_LONGDOUBLE; + else + type = TYPE_DOUBLE; + break; + case 'c': + if (flags >= 8) +#if HAVE_WINT_T + type = TYPE_WIDE_CHAR; +#else + goto error; +#endif + else + type = TYPE_CHAR; + break; +#if HAVE_WINT_T + case 'C': + type = TYPE_WIDE_CHAR; + c = 'c'; + break; +#endif + case 's': + if (flags >= 8) +#if HAVE_WCHAR_T + type = TYPE_WIDE_STRING; +#else + goto error; +#endif + else + type = TYPE_STRING; + break; +#if HAVE_WCHAR_T + case 'S': + type = TYPE_WIDE_STRING; + c = 's'; + break; +#endif + case 'p': + type = TYPE_POINTER; + break; + case 'n': +#if HAVE_LONG_LONG_INT + /* If 'long long' exists and is larger than 'long': */ + if (flags >= 16 || (flags & 4)) + type = TYPE_COUNT_LONGLONGINT_POINTER; + else +#endif + /* If 'long long' exists and is the same as 'long', we parse + "lln" into TYPE_COUNT_LONGINT_POINTER. */ + if (flags >= 8) + type = TYPE_COUNT_LONGINT_POINTER; + else if (flags & 2) + type = TYPE_COUNT_SCHAR_POINTER; + else if (flags & 1) + type = TYPE_COUNT_SHORT_POINTER; + else + type = TYPE_COUNT_INT_POINTER; + break; +#if ENABLE_UNISTDIO + /* The unistdio extensions. */ + case 'U': + if (flags >= 16) + type = TYPE_U32_STRING; + else if (flags >= 8) + type = TYPE_U16_STRING; + else + type = TYPE_U8_STRING; + break; +#endif + case '%': + type = TYPE_NONE; + break; + default: + /* Unknown conversion character. */ + goto error; + } + } + + if (type != TYPE_NONE) + { + dp->arg_index = arg_index; + if (dp->arg_index == ARG_NONE) + { + dp->arg_index = arg_posn++; + if (dp->arg_index == ARG_NONE) + /* arg_posn wrapped around. */ + goto error; + } + REGISTER_ARG (dp->arg_index, type); + } + dp->conversion = c; + dp->dir_end = cp; + } + + d->count++; + if (d->count >= d_allocated) + { + size_t memory_size; + DIRECTIVE *memory; + + d_allocated = xtimes (d_allocated, 2); + memory_size = xtimes (d_allocated, sizeof (DIRECTIVE)); + if (size_overflow_p (memory_size)) + /* Overflow, would lead to out of memory. */ + goto out_of_memory; + memory = (DIRECTIVE *) realloc (d->dir, memory_size); + if (memory == NULL) + /* Out of memory. */ + goto out_of_memory; + d->dir = memory; + } + } +#if CHAR_T_ONLY_ASCII + else if (!c_isascii (c)) + { + /* Non-ASCII character. Not supported. */ + goto error; + } +#endif + } + d->dir[d->count].dir_start = cp; + + d->max_width_length = max_width_length; + d->max_precision_length = max_precision_length; + return 0; + +error: + if (a->arg) + free (a->arg); + if (d->dir) + free (d->dir); + errno = EINVAL; + return -1; + +out_of_memory: + if (a->arg) + free (a->arg); + if (d->dir) + free (d->dir); +out_of_memory_1: + errno = ENOMEM; + return -1; +} + +#undef PRINTF_PARSE +#undef DIRECTIVES +#undef DIRECTIVE +#undef CHAR_T_ONLY_ASCII +#undef CHAR_T diff --git a/etc/wyatt8740/intl/printf-parse.h b/etc/wyatt8740/intl/printf-parse.h new file mode 100644 index 0000000..e785338 --- /dev/null +++ b/etc/wyatt8740/intl/printf-parse.h @@ -0,0 +1,75 @@ +/* Parse printf format string. + Copyright (C) 1999, 2002-2003 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _PRINTF_PARSE_H +#define _PRINTF_PARSE_H + +#include "printf-args.h" + + +/* Flags */ +#define FLAG_GROUP 1 /* ' flag */ +#define FLAG_LEFT 2 /* - flag */ +#define FLAG_SHOWSIGN 4 /* + flag */ +#define FLAG_SPACE 8 /* space flag */ +#define FLAG_ALT 16 /* # flag */ +#define FLAG_ZERO 32 + +/* arg_index value indicating that no argument is consumed. */ +#define ARG_NONE (~(size_t)0) + +/* A parsed directive. */ +typedef struct +{ + const char* dir_start; + const char* dir_end; + int flags; + const char* width_start; + const char* width_end; + size_t width_arg_index; + const char* precision_start; + const char* precision_end; + size_t precision_arg_index; + char conversion; /* d i o u x X f e E g G c s p n U % but not C S */ + size_t arg_index; +} +char_directive; + +/* A parsed format string. */ +typedef struct +{ + size_t count; + char_directive *dir; + size_t max_width_length; + size_t max_precision_length; +} +char_directives; + + +/* Parses the format string. Fills in the number N of directives, and fills + in directives[0], ..., directives[N-1], and sets directives[N].dir_start + to the end of the format string. Also fills in the arg_type fields of the + arguments and the needed count of arguments. */ +#ifdef STATIC +STATIC +#else +extern +#endif +int printf_parse (const char *format, char_directives *d, arguments *a); + +#endif /* _PRINTF_PARSE_H */ diff --git a/etc/wyatt8740/intl/printf.c b/etc/wyatt8740/intl/printf.c new file mode 100644 index 0000000..0088e51 --- /dev/null +++ b/etc/wyatt8740/intl/printf.c @@ -0,0 +1,427 @@ +/* Formatted output to strings, using POSIX/XSI format strings with positions. + Copyright (C) 2003, 2006-2007 Free Software Foundation, Inc. + Written by Bruno Haible , 2003. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef __GNUC__ +# define alloca __builtin_alloca +# define HAVE_ALLOCA 1 +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# if defined HAVE_ALLOCA_H || defined _LIBC +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca +char *alloca (); +# endif +# endif +# endif +# endif +#endif + +#include + +#if !HAVE_POSIX_PRINTF + +#include +#include +#include +#include + +/* Some systems, like OSF/1 4.0 and Woe32, don't have EOVERFLOW. */ +#ifndef EOVERFLOW +# define EOVERFLOW E2BIG +#endif + +/* When building a DLL, we must export some functions. Note that because + the functions are only defined for binary backward compatibility, we + don't need to use __declspec(dllimport) in any case. */ +#if defined _MSC_VER && BUILDING_DLL +# define DLL_EXPORTED __declspec(dllexport) +#else +# define DLL_EXPORTED +#endif + +#define STATIC static + +/* This needs to be consistent with libgnuintl.h.in. */ +#if defined __NetBSD__ || defined __BEOS__ || defined __CYGWIN__ || defined __MINGW32__ +/* Don't break __attribute__((format(printf,M,N))). + This redefinition is only possible because the libc in NetBSD, Cygwin, + mingw does not have a function __printf__. */ +# define libintl_printf __printf__ +#endif + +/* Define auxiliary functions declared in "printf-args.h". */ +#include "printf-args.c" + +/* Define auxiliary functions declared in "printf-parse.h". */ +#include "printf-parse.c" + +/* Define functions declared in "vasnprintf.h". */ +#define vasnprintf libintl_vasnprintf +#include "vasnprintf.c" +#if 0 /* not needed */ +#define asnprintf libintl_asnprintf +#include "asnprintf.c" +#endif + +DLL_EXPORTED +int +libintl_vfprintf (FILE *stream, const char *format, va_list args) +{ + if (strchr (format, '$') == NULL) + return vfprintf (stream, format, args); + else + { + size_t length; + char *result = libintl_vasnprintf (NULL, &length, format, args); + int retval = -1; + if (result != NULL) + { + size_t written = fwrite (result, 1, length, stream); + free (result); + if (written == length) + { + if (length > INT_MAX) + errno = EOVERFLOW; + else + retval = length; + } + } + return retval; + } +} + +DLL_EXPORTED +int +libintl_fprintf (FILE *stream, const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libintl_vfprintf (stream, format, args); + va_end (args); + return retval; +} + +DLL_EXPORTED +int +libintl_vprintf (const char *format, va_list args) +{ + return libintl_vfprintf (stdout, format, args); +} + +DLL_EXPORTED +int +libintl_printf (const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libintl_vprintf (format, args); + va_end (args); + return retval; +} + +DLL_EXPORTED +int +libintl_vsprintf (char *resultbuf, const char *format, va_list args) +{ + if (strchr (format, '$') == NULL) + return vsprintf (resultbuf, format, args); + else + { + size_t length = (size_t) ~0 / (4 * sizeof (char)); + char *result = libintl_vasnprintf (resultbuf, &length, format, args); + if (result != resultbuf) + { + free (result); + return -1; + } + if (length > INT_MAX) + { + errno = EOVERFLOW; + return -1; + } + else + return length; + } +} + +DLL_EXPORTED +int +libintl_sprintf (char *resultbuf, const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libintl_vsprintf (resultbuf, format, args); + va_end (args); + return retval; +} + +#if HAVE_SNPRINTF + +# if HAVE_DECL__SNPRINTF + /* Windows. */ +# define system_vsnprintf _vsnprintf +# else + /* Unix. */ +# define system_vsnprintf vsnprintf +# endif + +DLL_EXPORTED +int +libintl_vsnprintf (char *resultbuf, size_t length, const char *format, va_list args) +{ + if (strchr (format, '$') == NULL) + return system_vsnprintf (resultbuf, length, format, args); + else + { + size_t maxlength = length; + char *result = libintl_vasnprintf (resultbuf, &length, format, args); + if (result != resultbuf) + { + if (maxlength > 0) + { + size_t pruned_length = + (length < maxlength ? length : maxlength - 1); + memcpy (resultbuf, result, pruned_length); + resultbuf[pruned_length] = '\0'; + } + free (result); + } + if (length > INT_MAX) + { + errno = EOVERFLOW; + return -1; + } + else + return length; + } +} + +DLL_EXPORTED +int +libintl_snprintf (char *resultbuf, size_t length, const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libintl_vsnprintf (resultbuf, length, format, args); + va_end (args); + return retval; +} + +#endif + +#if HAVE_ASPRINTF + +DLL_EXPORTED +int +libintl_vasprintf (char **resultp, const char *format, va_list args) +{ + size_t length; + char *result = libintl_vasnprintf (NULL, &length, format, args); + if (result == NULL) + return -1; + if (length > INT_MAX) + { + free (result); + errno = EOVERFLOW; + return -1; + } + *resultp = result; + return length; +} + +DLL_EXPORTED +int +libintl_asprintf (char **resultp, const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libintl_vasprintf (resultp, format, args); + va_end (args); + return retval; +} + +#endif + +#if HAVE_FWPRINTF + +#include + +#define WIDE_CHAR_VERSION 1 + +#include "wprintf-parse.h" +/* Define auxiliary functions declared in "wprintf-parse.h". */ +#define CHAR_T wchar_t +#define DIRECTIVE wchar_t_directive +#define DIRECTIVES wchar_t_directives +#define PRINTF_PARSE wprintf_parse +#include "printf-parse.c" + +/* Define functions declared in "vasnprintf.h". */ +#define vasnwprintf libintl_vasnwprintf +#include "vasnprintf.c" +#if 0 /* not needed */ +#define asnwprintf libintl_asnwprintf +#include "asnprintf.c" +#endif + +# if HAVE_DECL__SNWPRINTF + /* Windows. */ +# define system_vswprintf _vsnwprintf +# else + /* Unix. */ +# define system_vswprintf vswprintf +# endif + +DLL_EXPORTED +int +libintl_vfwprintf (FILE *stream, const wchar_t *format, va_list args) +{ + if (wcschr (format, '$') == NULL) + return vfwprintf (stream, format, args); + else + { + size_t length; + wchar_t *result = libintl_vasnwprintf (NULL, &length, format, args); + int retval = -1; + if (result != NULL) + { + size_t i; + for (i = 0; i < length; i++) + if (fputwc (result[i], stream) == WEOF) + break; + free (result); + if (i == length) + { + if (length > INT_MAX) + errno = EOVERFLOW; + else + retval = length; + } + } + return retval; + } +} + +DLL_EXPORTED +int +libintl_fwprintf (FILE *stream, const wchar_t *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libintl_vfwprintf (stream, format, args); + va_end (args); + return retval; +} + +DLL_EXPORTED +int +libintl_vwprintf (const wchar_t *format, va_list args) +{ + return libintl_vfwprintf (stdout, format, args); +} + +DLL_EXPORTED +int +libintl_wprintf (const wchar_t *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libintl_vwprintf (format, args); + va_end (args); + return retval; +} + +DLL_EXPORTED +int +libintl_vswprintf (wchar_t *resultbuf, size_t length, const wchar_t *format, va_list args) +{ + if (wcschr (format, '$') == NULL) + return system_vswprintf (resultbuf, length, format, args); + else + { + size_t maxlength = length; + wchar_t *result = libintl_vasnwprintf (resultbuf, &length, format, args); + if (result != resultbuf) + { + if (maxlength > 0) + { + size_t pruned_length = + (length < maxlength ? length : maxlength - 1); + memcpy (resultbuf, result, pruned_length * sizeof (wchar_t)); + resultbuf[pruned_length] = 0; + } + free (result); + /* Unlike vsnprintf, which has to return the number of character that + would have been produced if the resultbuf had been sufficiently + large, the vswprintf function has to return a negative value if + the resultbuf was not sufficiently large. */ + if (length >= maxlength) + return -1; + } + if (length > INT_MAX) + { + errno = EOVERFLOW; + return -1; + } + else + return length; + } +} + +DLL_EXPORTED +int +libintl_swprintf (wchar_t *resultbuf, size_t length, const wchar_t *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libintl_vswprintf (resultbuf, length, format, args); + va_end (args); + return retval; +} + +#endif + +#endif diff --git a/etc/wyatt8740/intl/ref-add.sin b/etc/wyatt8740/intl/ref-add.sin new file mode 100644 index 0000000..3678c28 --- /dev/null +++ b/etc/wyatt8740/intl/ref-add.sin @@ -0,0 +1,31 @@ +# Add this package to a list of references stored in a text file. +# +# Copyright (C) 2000 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU Library General Public License as published +# by the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program 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 +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +# USA. +# +# Written by Bruno Haible . +# +/^# Packages using this file: / { + s/# Packages using this file:// + ta + :a + s/ @PACKAGE@ / @PACKAGE@ / + tb + s/ $/ @PACKAGE@ / + :b + s/^/# Packages using this file:/ +} diff --git a/etc/wyatt8740/intl/ref-del.sin b/etc/wyatt8740/intl/ref-del.sin new file mode 100644 index 0000000..0c12d8e --- /dev/null +++ b/etc/wyatt8740/intl/ref-del.sin @@ -0,0 +1,26 @@ +# Remove this package from a list of references stored in a text file. +# +# Copyright (C) 2000 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU Library General Public License as published +# by the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program 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 +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +# USA. +# +# Written by Bruno Haible . +# +/^# Packages using this file: / { + s/# Packages using this file:// + s/ @PACKAGE@ / / + s/^/# Packages using this file:/ +} diff --git a/etc/wyatt8740/intl/relocatable.c b/etc/wyatt8740/intl/relocatable.c new file mode 100644 index 0000000..5e1dde6 --- /dev/null +++ b/etc/wyatt8740/intl/relocatable.c @@ -0,0 +1,468 @@ +/* Provide relocatable packages. + Copyright (C) 2003-2006 Free Software Foundation, Inc. + Written by Bruno Haible , 2003. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + + +/* Tell glibc's to provide a prototype for getline(). + This must come before because may include + , and once has been included, it's too late. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#include + +/* Specification. */ +#include "relocatable.h" + +#if ENABLE_RELOCATABLE + +#include +#include +#include +#include + +#ifdef NO_XMALLOC +# define xmalloc malloc +#else +# include "xalloc.h" +#endif + +#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ +# define WIN32_LEAN_AND_MEAN +# include +#endif + +#if DEPENDS_ON_LIBCHARSET +# include +#endif +#if DEPENDS_ON_LIBICONV && HAVE_ICONV +# include +#endif +#if DEPENDS_ON_LIBINTL && ENABLE_NLS +# include +#endif + +/* Faked cheap 'bool'. */ +#undef bool +#undef false +#undef true +#define bool int +#define false 0 +#define true 1 + +/* Pathname support. + ISSLASH(C) tests whether C is a directory separator character. + IS_PATH_WITH_DIR(P) tests whether P contains a directory specification. + */ +#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__ + /* Win32, Cygwin, OS/2, DOS */ +# define ISSLASH(C) ((C) == '/' || (C) == '\\') +# define HAS_DEVICE(P) \ + ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \ + && (P)[1] == ':') +# define IS_PATH_WITH_DIR(P) \ + (strchr (P, '/') != NULL || strchr (P, '\\') != NULL || HAS_DEVICE (P)) +# define FILE_SYSTEM_PREFIX_LEN(P) (HAS_DEVICE (P) ? 2 : 0) +#else + /* Unix */ +# define ISSLASH(C) ((C) == '/') +# define IS_PATH_WITH_DIR(P) (strchr (P, '/') != NULL) +# define FILE_SYSTEM_PREFIX_LEN(P) 0 +#endif + +/* Original installation prefix. */ +static char *orig_prefix; +static size_t orig_prefix_len; +/* Current installation prefix. */ +static char *curr_prefix; +static size_t curr_prefix_len; +/* These prefixes do not end in a slash. Anything that will be concatenated + to them must start with a slash. */ + +/* Sets the original and the current installation prefix of this module. + Relocation simply replaces a pathname starting with the original prefix + by the corresponding pathname with the current prefix instead. Both + prefixes should be directory names without trailing slash (i.e. use "" + instead of "/"). */ +static void +set_this_relocation_prefix (const char *orig_prefix_arg, + const char *curr_prefix_arg) +{ + if (orig_prefix_arg != NULL && curr_prefix_arg != NULL + /* Optimization: if orig_prefix and curr_prefix are equal, the + relocation is a nop. */ + && strcmp (orig_prefix_arg, curr_prefix_arg) != 0) + { + /* Duplicate the argument strings. */ + char *memory; + + orig_prefix_len = strlen (orig_prefix_arg); + curr_prefix_len = strlen (curr_prefix_arg); + memory = (char *) xmalloc (orig_prefix_len + 1 + curr_prefix_len + 1); +#ifdef NO_XMALLOC + if (memory != NULL) +#endif + { + memcpy (memory, orig_prefix_arg, orig_prefix_len + 1); + orig_prefix = memory; + memory += orig_prefix_len + 1; + memcpy (memory, curr_prefix_arg, curr_prefix_len + 1); + curr_prefix = memory; + return; + } + } + orig_prefix = NULL; + curr_prefix = NULL; + /* Don't worry about wasted memory here - this function is usually only + called once. */ +} + +/* Sets the original and the current installation prefix of the package. + Relocation simply replaces a pathname starting with the original prefix + by the corresponding pathname with the current prefix instead. Both + prefixes should be directory names without trailing slash (i.e. use "" + instead of "/"). */ +void +set_relocation_prefix (const char *orig_prefix_arg, const char *curr_prefix_arg) +{ + set_this_relocation_prefix (orig_prefix_arg, curr_prefix_arg); + + /* Now notify all dependent libraries. */ +#if DEPENDS_ON_LIBCHARSET + libcharset_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg); +#endif +#if DEPENDS_ON_LIBICONV && HAVE_ICONV && _LIBICONV_VERSION >= 0x0109 + libiconv_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg); +#endif +#if DEPENDS_ON_LIBINTL && ENABLE_NLS && defined libintl_set_relocation_prefix + libintl_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg); +#endif +} + +#if !defined IN_LIBRARY || (defined PIC && defined INSTALLDIR) + +/* Convenience function: + Computes the current installation prefix, based on the original + installation prefix, the original installation directory of a particular + file, and the current pathname of this file. Returns NULL upon failure. */ +#ifdef IN_LIBRARY +#define compute_curr_prefix local_compute_curr_prefix +static +#endif +const char * +compute_curr_prefix (const char *orig_installprefix, + const char *orig_installdir, + const char *curr_pathname) +{ + const char *curr_installdir; + const char *rel_installdir; + + if (curr_pathname == NULL) + return NULL; + + /* Determine the relative installation directory, relative to the prefix. + This is simply the difference between orig_installprefix and + orig_installdir. */ + if (strncmp (orig_installprefix, orig_installdir, strlen (orig_installprefix)) + != 0) + /* Shouldn't happen - nothing should be installed outside $(prefix). */ + return NULL; + rel_installdir = orig_installdir + strlen (orig_installprefix); + + /* Determine the current installation directory. */ + { + const char *p_base = curr_pathname + FILE_SYSTEM_PREFIX_LEN (curr_pathname); + const char *p = curr_pathname + strlen (curr_pathname); + char *q; + + while (p > p_base) + { + p--; + if (ISSLASH (*p)) + break; + } + + q = (char *) xmalloc (p - curr_pathname + 1); +#ifdef NO_XMALLOC + if (q == NULL) + return NULL; +#endif + memcpy (q, curr_pathname, p - curr_pathname); + q[p - curr_pathname] = '\0'; + curr_installdir = q; + } + + /* Compute the current installation prefix by removing the trailing + rel_installdir from it. */ + { + const char *rp = rel_installdir + strlen (rel_installdir); + const char *cp = curr_installdir + strlen (curr_installdir); + const char *cp_base = + curr_installdir + FILE_SYSTEM_PREFIX_LEN (curr_installdir); + + while (rp > rel_installdir && cp > cp_base) + { + bool same = false; + const char *rpi = rp; + const char *cpi = cp; + + while (rpi > rel_installdir && cpi > cp_base) + { + rpi--; + cpi--; + if (ISSLASH (*rpi) || ISSLASH (*cpi)) + { + if (ISSLASH (*rpi) && ISSLASH (*cpi)) + same = true; + break; + } + /* Do case-insensitive comparison if the filesystem is always or + often case-insensitive. It's better to accept the comparison + if the difference is only in case, rather than to fail. */ +#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__ + /* Win32, Cygwin, OS/2, DOS - case insignificant filesystem */ + if ((*rpi >= 'a' && *rpi <= 'z' ? *rpi - 'a' + 'A' : *rpi) + != (*cpi >= 'a' && *cpi <= 'z' ? *cpi - 'a' + 'A' : *cpi)) + break; +#else + if (*rpi != *cpi) + break; +#endif + } + if (!same) + break; + /* The last pathname component was the same. opi and cpi now point + to the slash before it. */ + rp = rpi; + cp = cpi; + } + + if (rp > rel_installdir) + /* Unexpected: The curr_installdir does not end with rel_installdir. */ + return NULL; + + { + size_t curr_prefix_len = cp - curr_installdir; + char *curr_prefix; + + curr_prefix = (char *) xmalloc (curr_prefix_len + 1); +#ifdef NO_XMALLOC + if (curr_prefix == NULL) + return NULL; +#endif + memcpy (curr_prefix, curr_installdir, curr_prefix_len); + curr_prefix[curr_prefix_len] = '\0'; + + return curr_prefix; + } + } +} + +#endif /* !IN_LIBRARY || PIC */ + +#if defined PIC && defined INSTALLDIR + +/* Full pathname of shared library, or NULL. */ +static char *shared_library_fullname; + +#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ + +/* Determine the full pathname of the shared library when it is loaded. */ + +BOOL WINAPI +DllMain (HINSTANCE module_handle, DWORD event, LPVOID reserved) +{ + (void) reserved; + + if (event == DLL_PROCESS_ATTACH) + { + /* The DLL is being loaded into an application's address range. */ + static char location[MAX_PATH]; + + if (!GetModuleFileName (module_handle, location, sizeof (location))) + /* Shouldn't happen. */ + return FALSE; + + if (!IS_PATH_WITH_DIR (location)) + /* Shouldn't happen. */ + return FALSE; + + { +#if defined __CYGWIN__ + /* On Cygwin, we need to convert paths coming from Win32 system calls + to the Unix-like slashified notation. */ + static char location_as_posix_path[2 * MAX_PATH]; + /* There's no error return defined for cygwin_conv_to_posix_path. + See cygwin-api/func-cygwin-conv-to-posix-path.html. + Does it overflow the buffer of expected size MAX_PATH or does it + truncate the path? I don't know. Let's catch both. */ + cygwin_conv_to_posix_path (location, location_as_posix_path); + location_as_posix_path[MAX_PATH - 1] = '\0'; + if (strlen (location_as_posix_path) >= MAX_PATH - 1) + /* A sign of buffer overflow or path truncation. */ + return FALSE; + shared_library_fullname = strdup (location_as_posix_path); +#else + shared_library_fullname = strdup (location); +#endif + } + } + + return TRUE; +} + +#else /* Unix except Cygwin */ + +static void +find_shared_library_fullname () +{ +#if defined __linux__ && __GLIBC__ >= 2 + /* Linux has /proc/self/maps. glibc 2 has the getline() function. */ + FILE *fp; + + /* Open the current process' maps file. It describes one VMA per line. */ + fp = fopen ("/proc/self/maps", "r"); + if (fp) + { + unsigned long address = (unsigned long) &find_shared_library_fullname; + for (;;) + { + unsigned long start, end; + int c; + + if (fscanf (fp, "%lx-%lx", &start, &end) != 2) + break; + if (address >= start && address <= end - 1) + { + /* Found it. Now see if this line contains a filename. */ + while (c = getc (fp), c != EOF && c != '\n' && c != '/') + continue; + if (c == '/') + { + size_t size; + int len; + + ungetc (c, fp); + shared_library_fullname = NULL; size = 0; + len = getline (&shared_library_fullname, &size, fp); + if (len >= 0) + { + /* Success: filled shared_library_fullname. */ + if (len > 0 && shared_library_fullname[len - 1] == '\n') + shared_library_fullname[len - 1] = '\0'; + } + } + break; + } + while (c = getc (fp), c != EOF && c != '\n') + continue; + } + fclose (fp); + } +#endif +} + +#endif /* (WIN32 or Cygwin) / (Unix except Cygwin) */ + +/* Return the full pathname of the current shared library. + Return NULL if unknown. + Guaranteed to work only on Linux, Cygwin and Woe32. */ +static char * +get_shared_library_fullname () +{ +#if !(defined _WIN32 || defined __WIN32__ || defined __CYGWIN__) + static bool tried_find_shared_library_fullname; + if (!tried_find_shared_library_fullname) + { + find_shared_library_fullname (); + tried_find_shared_library_fullname = true; + } +#endif + return shared_library_fullname; +} + +#endif /* PIC */ + +/* Returns the pathname, relocated according to the current installation + directory. */ +const char * +relocate (const char *pathname) +{ +#if defined PIC && defined INSTALLDIR + static int initialized; + + /* Initialization code for a shared library. */ + if (!initialized) + { + /* At this point, orig_prefix and curr_prefix likely have already been + set through the main program's set_program_name_and_installdir + function. This is sufficient in the case that the library has + initially been installed in the same orig_prefix. But we can do + better, to also cover the cases that 1. it has been installed + in a different prefix before being moved to orig_prefix and (later) + to curr_prefix, 2. unlike the program, it has not moved away from + orig_prefix. */ + const char *orig_installprefix = INSTALLPREFIX; + const char *orig_installdir = INSTALLDIR; + const char *curr_prefix_better; + + curr_prefix_better = + compute_curr_prefix (orig_installprefix, orig_installdir, + get_shared_library_fullname ()); + if (curr_prefix_better == NULL) + curr_prefix_better = curr_prefix; + + set_relocation_prefix (orig_installprefix, curr_prefix_better); + + initialized = 1; + } +#endif + + /* Note: It is not necessary to perform case insensitive comparison here, + even for DOS-like filesystems, because the pathname argument was + typically created from the same Makefile variable as orig_prefix came + from. */ + if (orig_prefix != NULL && curr_prefix != NULL + && strncmp (pathname, orig_prefix, orig_prefix_len) == 0) + { + if (pathname[orig_prefix_len] == '\0') + /* pathname equals orig_prefix. */ + return curr_prefix; + if (ISSLASH (pathname[orig_prefix_len])) + { + /* pathname starts with orig_prefix. */ + const char *pathname_tail = &pathname[orig_prefix_len]; + char *result = + (char *) xmalloc (curr_prefix_len + strlen (pathname_tail) + 1); + +#ifdef NO_XMALLOC + if (result != NULL) +#endif + { + memcpy (result, curr_prefix, curr_prefix_len); + strcpy (result + curr_prefix_len, pathname_tail); + return result; + } + } + } + /* Nothing to relocate. */ + return pathname; +} + +#endif diff --git a/etc/wyatt8740/intl/relocatable.h b/etc/wyatt8740/intl/relocatable.h new file mode 100644 index 0000000..f6d3832 --- /dev/null +++ b/etc/wyatt8740/intl/relocatable.h @@ -0,0 +1,79 @@ +/* Provide relocatable packages. + Copyright (C) 2003, 2005 Free Software Foundation, Inc. + Written by Bruno Haible , 2003. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _RELOCATABLE_H +#define _RELOCATABLE_H + +#ifdef __cplusplus +extern "C" { +#endif + + +/* This can be enabled through the configure --enable-relocatable option. */ +#if ENABLE_RELOCATABLE + +/* When building a DLL, we must export some functions. Note that because + this is a private .h file, we don't need to use __declspec(dllimport) + in any case. */ +#if HAVE_VISIBILITY && BUILDING_DLL +# define RELOCATABLE_DLL_EXPORTED __attribute__((__visibility__("default"))) +#elif defined _MSC_VER && BUILDING_DLL +# define RELOCATABLE_DLL_EXPORTED __declspec(dllexport) +#else +# define RELOCATABLE_DLL_EXPORTED +#endif + +/* Sets the original and the current installation prefix of the package. + Relocation simply replaces a pathname starting with the original prefix + by the corresponding pathname with the current prefix instead. Both + prefixes should be directory names without trailing slash (i.e. use "" + instead of "/"). */ +extern RELOCATABLE_DLL_EXPORTED void + set_relocation_prefix (const char *orig_prefix, + const char *curr_prefix); + +/* Returns the pathname, relocated according to the current installation + directory. */ +extern const char * relocate (const char *pathname); + +/* Memory management: relocate() leaks memory, because it has to construct + a fresh pathname. If this is a problem because your program calls + relocate() frequently, think about caching the result. */ + +/* Convenience function: + Computes the current installation prefix, based on the original + installation prefix, the original installation directory of a particular + file, and the current pathname of this file. Returns NULL upon failure. */ +extern const char * compute_curr_prefix (const char *orig_installprefix, + const char *orig_installdir, + const char *curr_pathname); + +#else + +/* By default, we use the hardwired pathnames. */ +#define relocate(pathname) (pathname) + +#endif + + +#ifdef __cplusplus +} +#endif + +#endif /* _RELOCATABLE_H */ diff --git a/etc/wyatt8740/intl/textdomain.c b/etc/wyatt8740/intl/textdomain.c new file mode 100644 index 0000000..70131bc --- /dev/null +++ b/etc/wyatt8740/intl/textdomain.c @@ -0,0 +1,127 @@ +/* Implementation of the textdomain(3) function. + Copyright (C) 1995-1998, 2000-2003, 2005-2006 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* Handle multi-threaded applications. */ +#ifdef _LIBC +# include +# define gl_rwlock_define __libc_rwlock_define +# define gl_rwlock_wrlock __libc_rwlock_wrlock +# define gl_rwlock_unlock __libc_rwlock_unlock +#else +# include "lock.h" +#endif + +/* @@ end of prolog @@ */ + + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define TEXTDOMAIN __textdomain +# ifndef strdup +# define strdup(str) __strdup (str) +# endif +#else +# define TEXTDOMAIN libintl_textdomain +#endif + +/* Lock variable to protect the global data in the gettext implementation. */ +gl_rwlock_define (extern, _nl_state_lock attribute_hidden) + +/* Set the current default message catalog to DOMAINNAME. + If DOMAINNAME is null, return the current default. + If DOMAINNAME is "", reset to the default of "messages". */ +char * +TEXTDOMAIN (const char *domainname) +{ + char *new_domain; + char *old_domain; + + /* A NULL pointer requests the current setting. */ + if (domainname == NULL) + return (char *) _nl_current_default_domain; + + gl_rwlock_wrlock (_nl_state_lock); + + old_domain = (char *) _nl_current_default_domain; + + /* If domain name is the null string set to default domain "messages". */ + if (domainname[0] == '\0' + || strcmp (domainname, _nl_default_default_domain) == 0) + { + _nl_current_default_domain = _nl_default_default_domain; + new_domain = (char *) _nl_current_default_domain; + } + else if (strcmp (domainname, old_domain) == 0) + /* This can happen and people will use it to signal that some + environment variable changed. */ + new_domain = old_domain; + else + { + /* If the following malloc fails `_nl_current_default_domain' + will be NULL. This value will be returned and so signals we + are out of core. */ +#if defined _LIBC || defined HAVE_STRDUP + new_domain = strdup (domainname); +#else + size_t len = strlen (domainname) + 1; + new_domain = (char *) malloc (len); + if (new_domain != NULL) + memcpy (new_domain, domainname, len); +#endif + + if (new_domain != NULL) + _nl_current_default_domain = new_domain; + } + + /* We use this possibility to signal a change of the loaded catalogs + since this is most likely the case and there is no other easy we + to do it. Do it only when the call was successful. */ + if (new_domain != NULL) + { + ++_nl_msg_cat_cntr; + + if (old_domain != new_domain && old_domain != _nl_default_default_domain) + free (old_domain); + } + + gl_rwlock_unlock (_nl_state_lock); + + return new_domain; +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__textdomain, textdomain); +#endif diff --git a/etc/wyatt8740/intl/tsearch.c b/etc/wyatt8740/intl/tsearch.c new file mode 100644 index 0000000..d549dd4 --- /dev/null +++ b/etc/wyatt8740/intl/tsearch.c @@ -0,0 +1,684 @@ +/* Copyright (C) 1995, 1996, 1997, 2000, 2006 Free Software Foundation, Inc. + Contributed by Bernd Schmidt , 1997. + + NOTE: The canonical source of this file is maintained with the GNU C + Library. Bugs can be reported to bug-glibc@gnu.org. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Tree search for red/black trees. + The algorithm for adding nodes is taken from one of the many "Algorithms" + books by Robert Sedgewick, although the implementation differs. + The algorithm for deleting nodes can probably be found in a book named + "Introduction to Algorithms" by Cormen/Leiserson/Rivest. At least that's + the book that my professor took most algorithms from during the "Data + Structures" course... + + Totally public domain. */ + +/* Red/black trees are binary trees in which the edges are colored either red + or black. They have the following properties: + 1. The number of black edges on every path from the root to a leaf is + constant. + 2. No two red edges are adjacent. + Therefore there is an upper bound on the length of every path, it's + O(log n) where n is the number of nodes in the tree. No path can be longer + than 1+2*P where P is the length of the shortest path in the tree. + Useful for the implementation: + 3. If one of the children of a node is NULL, then the other one is red + (if it exists). + + In the implementation, not the edges are colored, but the nodes. The color + interpreted as the color of the edge leading to this node. The color is + meaningless for the root node, but we color the root node black for + convenience. All added nodes are red initially. + + Adding to a red/black tree is rather easy. The right place is searched + with a usual binary tree search. Additionally, whenever a node N is + reached that has two red successors, the successors are colored black and + the node itself colored red. This moves red edges up the tree where they + pose less of a problem once we get to really insert the new node. Changing + N's color to red may violate rule 2, however, so rotations may become + necessary to restore the invariants. Adding a new red leaf may violate + the same rule, so afterwards an additional check is run and the tree + possibly rotated. + + Deleting is hairy. There are mainly two nodes involved: the node to be + deleted (n1), and another node that is to be unchained from the tree (n2). + If n1 has a successor (the node with a smallest key that is larger than + n1), then the successor becomes n2 and its contents are copied into n1, + otherwise n1 becomes n2. + Unchaining a node may violate rule 1: if n2 is black, one subtree is + missing one black edge afterwards. The algorithm must try to move this + error upwards towards the root, so that the subtree that does not have + enough black edges becomes the whole tree. Once that happens, the error + has disappeared. It may not be necessary to go all the way up, since it + is possible that rotations and recoloring can fix the error before that. + + Although the deletion algorithm must walk upwards through the tree, we + do not store parent pointers in the nodes. Instead, delete allocates a + small array of parent pointers and fills it while descending the tree. + Since we know that the length of a path is O(log n), where n is the number + of nodes, this is likely to use less memory. */ + +/* Tree rotations look like this: + A C + / \ / \ + B C A G + / \ / \ --> / \ + D E F G B F + / \ + D E + + In this case, A has been rotated left. This preserves the ordering of the + binary tree. */ + +#include + +/* Specification. */ +#ifdef IN_LIBINTL +# include "tsearch.h" +#else +# include +#endif + +#include + +typedef int (*__compar_fn_t) (const void *, const void *); +typedef void (*__action_fn_t) (const void *, VISIT, int); + +#ifndef weak_alias +# define __tsearch tsearch +# define __tfind tfind +# define __tdelete tdelete +# define __twalk twalk +#endif + +#ifndef internal_function +/* Inside GNU libc we mark some function in a special way. In other + environments simply ignore the marking. */ +# define internal_function +#endif + +typedef struct node_t +{ + /* Callers expect this to be the first element in the structure - do not + move! */ + const void *key; + struct node_t *left; + struct node_t *right; + unsigned int red:1; +} *node; +typedef const struct node_t *const_node; + +#undef DEBUGGING + +#ifdef DEBUGGING + +/* Routines to check tree invariants. */ + +#include + +#define CHECK_TREE(a) check_tree(a) + +static void +check_tree_recurse (node p, int d_sofar, int d_total) +{ + if (p == NULL) + { + assert (d_sofar == d_total); + return; + } + + check_tree_recurse (p->left, d_sofar + (p->left && !p->left->red), d_total); + check_tree_recurse (p->right, d_sofar + (p->right && !p->right->red), d_total); + if (p->left) + assert (!(p->left->red && p->red)); + if (p->right) + assert (!(p->right->red && p->red)); +} + +static void +check_tree (node root) +{ + int cnt = 0; + node p; + if (root == NULL) + return; + root->red = 0; + for(p = root->left; p; p = p->left) + cnt += !p->red; + check_tree_recurse (root, 0, cnt); +} + + +#else + +#define CHECK_TREE(a) + +#endif + +/* Possibly "split" a node with two red successors, and/or fix up two red + edges in a row. ROOTP is a pointer to the lowest node we visited, PARENTP + and GPARENTP pointers to its parent/grandparent. P_R and GP_R contain the + comparison values that determined which way was taken in the tree to reach + ROOTP. MODE is 1 if we need not do the split, but must check for two red + edges between GPARENTP and ROOTP. */ +static void +maybe_split_for_insert (node *rootp, node *parentp, node *gparentp, + int p_r, int gp_r, int mode) +{ + node root = *rootp; + node *rp, *lp; + rp = &(*rootp)->right; + lp = &(*rootp)->left; + + /* See if we have to split this node (both successors red). */ + if (mode == 1 + || ((*rp) != NULL && (*lp) != NULL && (*rp)->red && (*lp)->red)) + { + /* This node becomes red, its successors black. */ + root->red = 1; + if (*rp) + (*rp)->red = 0; + if (*lp) + (*lp)->red = 0; + + /* If the parent of this node is also red, we have to do + rotations. */ + if (parentp != NULL && (*parentp)->red) + { + node gp = *gparentp; + node p = *parentp; + /* There are two main cases: + 1. The edge types (left or right) of the two red edges differ. + 2. Both red edges are of the same type. + There exist two symmetries of each case, so there is a total of + 4 cases. */ + if ((p_r > 0) != (gp_r > 0)) + { + /* Put the child at the top of the tree, with its parent + and grandparent as successors. */ + p->red = 1; + gp->red = 1; + root->red = 0; + if (p_r < 0) + { + /* Child is left of parent. */ + p->left = *rp; + *rp = p; + gp->right = *lp; + *lp = gp; + } + else + { + /* Child is right of parent. */ + p->right = *lp; + *lp = p; + gp->left = *rp; + *rp = gp; + } + *gparentp = root; + } + else + { + *gparentp = *parentp; + /* Parent becomes the top of the tree, grandparent and + child are its successors. */ + p->red = 0; + gp->red = 1; + if (p_r < 0) + { + /* Left edges. */ + gp->left = p->right; + p->right = gp; + } + else + { + /* Right edges. */ + gp->right = p->left; + p->left = gp; + } + } + } + } +} + +/* Find or insert datum into search tree. + KEY is the key to be located, ROOTP is the address of tree root, + COMPAR the ordering function. */ +void * +__tsearch (const void *key, void **vrootp, __compar_fn_t compar) +{ + node q; + node *parentp = NULL, *gparentp = NULL; + node *rootp = (node *) vrootp; + node *nextp; + int r = 0, p_r = 0, gp_r = 0; /* No they might not, Mr Compiler. */ + + if (rootp == NULL) + return NULL; + + /* This saves some additional tests below. */ + if (*rootp != NULL) + (*rootp)->red = 0; + + CHECK_TREE (*rootp); + + nextp = rootp; + while (*nextp != NULL) + { + node root = *rootp; + r = (*compar) (key, root->key); + if (r == 0) + return root; + + maybe_split_for_insert (rootp, parentp, gparentp, p_r, gp_r, 0); + /* If that did any rotations, parentp and gparentp are now garbage. + That doesn't matter, because the values they contain are never + used again in that case. */ + + nextp = r < 0 ? &root->left : &root->right; + if (*nextp == NULL) + break; + + gparentp = parentp; + parentp = rootp; + rootp = nextp; + + gp_r = p_r; + p_r = r; + } + + q = (struct node_t *) malloc (sizeof (struct node_t)); + if (q != NULL) + { + *nextp = q; /* link new node to old */ + q->key = key; /* initialize new node */ + q->red = 1; + q->left = q->right = NULL; + + if (nextp != rootp) + /* There may be two red edges in a row now, which we must avoid by + rotating the tree. */ + maybe_split_for_insert (nextp, rootp, parentp, r, p_r, 1); + } + + return q; +} +#ifdef weak_alias +weak_alias (__tsearch, tsearch) +#endif + + +/* Find datum in search tree. + KEY is the key to be located, ROOTP is the address of tree root, + COMPAR the ordering function. */ +void * +__tfind (key, vrootp, compar) + const void *key; + void *const *vrootp; + __compar_fn_t compar; +{ + node *rootp = (node *) vrootp; + + if (rootp == NULL) + return NULL; + + CHECK_TREE (*rootp); + + while (*rootp != NULL) + { + node root = *rootp; + int r; + + r = (*compar) (key, root->key); + if (r == 0) + return root; + + rootp = r < 0 ? &root->left : &root->right; + } + return NULL; +} +#ifdef weak_alias +weak_alias (__tfind, tfind) +#endif + + +/* Delete node with given key. + KEY is the key to be deleted, ROOTP is the address of the root of tree, + COMPAR the comparison function. */ +void * +__tdelete (const void *key, void **vrootp, __compar_fn_t compar) +{ + node p, q, r, retval; + int cmp; + node *rootp = (node *) vrootp; + node root, unchained; + /* Stack of nodes so we remember the parents without recursion. It's + _very_ unlikely that there are paths longer than 40 nodes. The tree + would need to have around 250.000 nodes. */ + int stacksize = 100; + int sp = 0; + node *nodestack[100]; + + if (rootp == NULL) + return NULL; + p = *rootp; + if (p == NULL) + return NULL; + + CHECK_TREE (p); + + while ((cmp = (*compar) (key, (*rootp)->key)) != 0) + { + if (sp == stacksize) + abort (); + + nodestack[sp++] = rootp; + p = *rootp; + rootp = ((cmp < 0) + ? &(*rootp)->left + : &(*rootp)->right); + if (*rootp == NULL) + return NULL; + } + + /* This is bogus if the node to be deleted is the root... this routine + really should return an integer with 0 for success, -1 for failure + and errno = ESRCH or something. */ + retval = p; + + /* We don't unchain the node we want to delete. Instead, we overwrite + it with its successor and unchain the successor. If there is no + successor, we really unchain the node to be deleted. */ + + root = *rootp; + + r = root->right; + q = root->left; + + if (q == NULL || r == NULL) + unchained = root; + else + { + node *parent = rootp, *up = &root->right; + for (;;) + { + if (sp == stacksize) + abort (); + nodestack[sp++] = parent; + parent = up; + if ((*up)->left == NULL) + break; + up = &(*up)->left; + } + unchained = *up; + } + + /* We know that either the left or right successor of UNCHAINED is NULL. + R becomes the other one, it is chained into the parent of UNCHAINED. */ + r = unchained->left; + if (r == NULL) + r = unchained->right; + if (sp == 0) + *rootp = r; + else + { + q = *nodestack[sp-1]; + if (unchained == q->right) + q->right = r; + else + q->left = r; + } + + if (unchained != root) + root->key = unchained->key; + if (!unchained->red) + { + /* Now we lost a black edge, which means that the number of black + edges on every path is no longer constant. We must balance the + tree. */ + /* NODESTACK now contains all parents of R. R is likely to be NULL + in the first iteration. */ + /* NULL nodes are considered black throughout - this is necessary for + correctness. */ + while (sp > 0 && (r == NULL || !r->red)) + { + node *pp = nodestack[sp - 1]; + p = *pp; + /* Two symmetric cases. */ + if (r == p->left) + { + /* Q is R's brother, P is R's parent. The subtree with root + R has one black edge less than the subtree with root Q. */ + q = p->right; + if (q->red) + { + /* If Q is red, we know that P is black. We rotate P left + so that Q becomes the top node in the tree, with P below + it. P is colored red, Q is colored black. + This action does not change the black edge count for any + leaf in the tree, but we will be able to recognize one + of the following situations, which all require that Q + is black. */ + q->red = 0; + p->red = 1; + /* Left rotate p. */ + p->right = q->left; + q->left = p; + *pp = q; + /* Make sure pp is right if the case below tries to use + it. */ + nodestack[sp++] = pp = &q->left; + q = p->right; + } + /* We know that Q can't be NULL here. We also know that Q is + black. */ + if ((q->left == NULL || !q->left->red) + && (q->right == NULL || !q->right->red)) + { + /* Q has two black successors. We can simply color Q red. + The whole subtree with root P is now missing one black + edge. Note that this action can temporarily make the + tree invalid (if P is red). But we will exit the loop + in that case and set P black, which both makes the tree + valid and also makes the black edge count come out + right. If P is black, we are at least one step closer + to the root and we'll try again the next iteration. */ + q->red = 1; + r = p; + } + else + { + /* Q is black, one of Q's successors is red. We can + repair the tree with one operation and will exit the + loop afterwards. */ + if (q->right == NULL || !q->right->red) + { + /* The left one is red. We perform the same action as + in maybe_split_for_insert where two red edges are + adjacent but point in different directions: + Q's left successor (let's call it Q2) becomes the + top of the subtree we are looking at, its parent (Q) + and grandparent (P) become its successors. The former + successors of Q2 are placed below P and Q. + P becomes black, and Q2 gets the color that P had. + This changes the black edge count only for node R and + its successors. */ + node q2 = q->left; + q2->red = p->red; + p->right = q2->left; + q->left = q2->right; + q2->right = q; + q2->left = p; + *pp = q2; + p->red = 0; + } + else + { + /* It's the right one. Rotate P left. P becomes black, + and Q gets the color that P had. Q's right successor + also becomes black. This changes the black edge + count only for node R and its successors. */ + q->red = p->red; + p->red = 0; + + q->right->red = 0; + + /* left rotate p */ + p->right = q->left; + q->left = p; + *pp = q; + } + + /* We're done. */ + sp = 1; + r = NULL; + } + } + else + { + /* Comments: see above. */ + q = p->left; + if (q->red) + { + q->red = 0; + p->red = 1; + p->left = q->right; + q->right = p; + *pp = q; + nodestack[sp++] = pp = &q->right; + q = p->left; + } + if ((q->right == NULL || !q->right->red) + && (q->left == NULL || !q->left->red)) + { + q->red = 1; + r = p; + } + else + { + if (q->left == NULL || !q->left->red) + { + node q2 = q->right; + q2->red = p->red; + p->left = q2->right; + q->right = q2->left; + q2->left = q; + q2->right = p; + *pp = q2; + p->red = 0; + } + else + { + q->red = p->red; + p->red = 0; + q->left->red = 0; + p->left = q->right; + q->right = p; + *pp = q; + } + sp = 1; + r = NULL; + } + } + --sp; + } + if (r != NULL) + r->red = 0; + } + + free (unchained); + return retval; +} +#ifdef weak_alias +weak_alias (__tdelete, tdelete) +#endif + + +/* Walk the nodes of a tree. + ROOT is the root of the tree to be walked, ACTION the function to be + called at each node. LEVEL is the level of ROOT in the whole tree. */ +static void +internal_function +trecurse (const void *vroot, __action_fn_t action, int level) +{ + const_node root = (const_node) vroot; + + if (root->left == NULL && root->right == NULL) + (*action) (root, leaf, level); + else + { + (*action) (root, preorder, level); + if (root->left != NULL) + trecurse (root->left, action, level + 1); + (*action) (root, postorder, level); + if (root->right != NULL) + trecurse (root->right, action, level + 1); + (*action) (root, endorder, level); + } +} + + +/* Walk the nodes of a tree. + ROOT is the root of the tree to be walked, ACTION the function to be + called at each node. */ +void +__twalk (const void *vroot, __action_fn_t action) +{ + const_node root = (const_node) vroot; + + CHECK_TREE (root); + + if (root != NULL && action != NULL) + trecurse (root, action, 0); +} +#ifdef weak_alias +weak_alias (__twalk, twalk) +#endif + + +#ifdef _LIBC + +/* The standardized functions miss an important functionality: the + tree cannot be removed easily. We provide a function to do this. */ +static void +internal_function +tdestroy_recurse (node root, __free_fn_t freefct) +{ + if (root->left != NULL) + tdestroy_recurse (root->left, freefct); + if (root->right != NULL) + tdestroy_recurse (root->right, freefct); + (*freefct) ((void *) root->key); + /* Free the node itself. */ + free (root); +} + +void +__tdestroy (void *vroot, __free_fn_t freefct) +{ + node root = (node) vroot; + + CHECK_TREE (root); + + if (root != NULL) + tdestroy_recurse (root, freefct); +} +weak_alias (__tdestroy, tdestroy) + +#endif /* _LIBC */ diff --git a/etc/wyatt8740/intl/tsearch.h b/etc/wyatt8740/intl/tsearch.h new file mode 100644 index 0000000..f08e4a9 --- /dev/null +++ b/etc/wyatt8740/intl/tsearch.h @@ -0,0 +1,83 @@ +/* Binary tree data structure. + Copyright (C) 2006 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _TSEARCH_H +#define _TSEARCH_H + +#if HAVE_TSEARCH + +/* Get tseach(), tfind(), tdelete(), twalk() declarations. */ +#include + +#else + +#ifdef __cplusplus +extern "C" { +#endif + +/* See , + + for details. */ + +typedef enum +{ + preorder, + postorder, + endorder, + leaf +} +VISIT; + +/* Searches an element in the tree *VROOTP that compares equal to KEY. + If one is found, it is returned. Otherwise, a new element equal to KEY + is inserted in the tree and is returned. */ +extern void * tsearch (const void *key, void **vrootp, + int (*compar) (const void *, const void *)); + +/* Searches an element in the tree *VROOTP that compares equal to KEY. + If one is found, it is returned. Otherwise, NULL is returned. */ +extern void * tfind (const void *key, void *const *vrootp, + int (*compar) (const void *, const void *)); + +/* Searches an element in the tree *VROOTP that compares equal to KEY. + If one is found, it is removed from the tree, and its parent node is + returned. Otherwise, NULL is returned. */ +extern void * tdelete (const void *key, void **vrootp, + int (*compar) (const void *, const void *)); + +/* Perform a depth-first, left-to-right traversal of the tree VROOT. + The ACTION function is called: + - for non-leaf nodes: 3 times, before the left subtree traversal, + after the left subtree traversal but before the right subtree traversal, + and after the right subtree traversal, + - for leaf nodes: once. + The arguments passed to ACTION are: + 1. the node; it can be casted to a 'const void * const *', i.e. into a + pointer to the key, + 2. an indicator which visit of the node this is, + 3. the level of the node in the tree (0 for the root). */ +extern void twalk (const void *vroot, + void (*action) (const void *, VISIT, int)); + +#ifdef __cplusplus +} +#endif + +#endif + +#endif /* _TSEARCH_H */ diff --git a/etc/wyatt8740/intl/vasnprintf.c b/etc/wyatt8740/intl/vasnprintf.c new file mode 100644 index 0000000..4a8e7f0 --- /dev/null +++ b/etc/wyatt8740/intl/vasnprintf.c @@ -0,0 +1,4677 @@ +/* vsprintf with automatic memory allocation. + Copyright (C) 1999, 2002-2007 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* This file can be parametrized with the following macros: + VASNPRINTF The name of the function being defined. + FCHAR_T The element type of the format string. + DCHAR_T The element type of the destination (result) string. + FCHAR_T_ONLY_ASCII Set to 1 to enable verification that all characters + in the format string are ASCII. MUST be set if + FCHAR_T and DCHAR_T are not the same type. + DIRECTIVE Structure denoting a format directive. + Depends on FCHAR_T. + DIRECTIVES Structure denoting the set of format directives of a + format string. Depends on FCHAR_T. + PRINTF_PARSE Function that parses a format string. + Depends on FCHAR_T. + DCHAR_CPY memcpy like function for DCHAR_T[] arrays. + DCHAR_SET memset like function for DCHAR_T[] arrays. + DCHAR_MBSNLEN mbsnlen like function for DCHAR_T[] arrays. + SNPRINTF The system's snprintf (or similar) function. + This may be either snprintf or swprintf. + TCHAR_T The element type of the argument and result string + of the said SNPRINTF function. This may be either + char or wchar_t. The code exploits that + sizeof (TCHAR_T) | sizeof (DCHAR_T) and + alignof (TCHAR_T) <= alignof (DCHAR_T). + DCHAR_IS_TCHAR Set to 1 if DCHAR_T and TCHAR_T are the same type. + DCHAR_CONV_FROM_ENCODING A function to convert from char[] to DCHAR[]. + DCHAR_IS_UINT8_T Set to 1 if DCHAR_T is uint8_t. + DCHAR_IS_UINT16_T Set to 1 if DCHAR_T is uint16_t. + DCHAR_IS_UINT32_T Set to 1 if DCHAR_T is uint32_t. */ + +/* Tell glibc's to provide a prototype for snprintf(). + This must come before because may include + , and once has been included, it's too late. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#ifndef VASNPRINTF +# include +#endif +#ifndef IN_LIBINTL +# include +#endif + +/* Specification. */ +#ifndef VASNPRINTF +# if WIDE_CHAR_VERSION +# include "vasnwprintf.h" +# else +# include "vasnprintf.h" +# endif +#endif + +#include /* localeconv() */ +#include /* snprintf(), sprintf() */ +#include /* abort(), malloc(), realloc(), free() */ +#include /* memcpy(), strlen() */ +#include /* errno */ +#include /* CHAR_BIT */ +#include /* DBL_MAX_EXP, LDBL_MAX_EXP */ +#if HAVE_NL_LANGINFO +# include +#endif +#ifndef VASNPRINTF +# if WIDE_CHAR_VERSION +# include "wprintf-parse.h" +# else +# include "printf-parse.h" +# endif +#endif + +/* Checked size_t computations. */ +#include "xsize.h" + +#if (NEED_PRINTF_DOUBLE || NEED_PRINTF_LONG_DOUBLE) && !defined IN_LIBINTL +# include +# include "float+.h" +#endif + +#if (NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE) && !defined IN_LIBINTL +# include +# include "isnan.h" +#endif + +#if (NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE) && !defined IN_LIBINTL +# include +# include "isnanl-nolibm.h" +# include "fpucw.h" +#endif + +#if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_DOUBLE) && !defined IN_LIBINTL +# include +# include "isnan.h" +# include "printf-frexp.h" +#endif + +#if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE) && !defined IN_LIBINTL +# include +# include "isnanl-nolibm.h" +# include "printf-frexpl.h" +# include "fpucw.h" +#endif + +/* Some systems, like OSF/1 4.0 and Woe32, don't have EOVERFLOW. */ +#ifndef EOVERFLOW +# define EOVERFLOW E2BIG +#endif + +#if HAVE_WCHAR_T +# if HAVE_WCSLEN +# define local_wcslen wcslen +# else + /* Solaris 2.5.1 has wcslen() in a separate library libw.so. To avoid + a dependency towards this library, here is a local substitute. + Define this substitute only once, even if this file is included + twice in the same compilation unit. */ +# ifndef local_wcslen_defined +# define local_wcslen_defined 1 +static size_t +local_wcslen (const wchar_t *s) +{ + const wchar_t *ptr; + + for (ptr = s; *ptr != (wchar_t) 0; ptr++) + ; + return ptr - s; +} +# endif +# endif +#endif + +/* Default parameters. */ +#ifndef VASNPRINTF +# if WIDE_CHAR_VERSION +# define VASNPRINTF vasnwprintf +# define FCHAR_T wchar_t +# define DCHAR_T wchar_t +# define TCHAR_T wchar_t +# define DCHAR_IS_TCHAR 1 +# define DIRECTIVE wchar_t_directive +# define DIRECTIVES wchar_t_directives +# define PRINTF_PARSE wprintf_parse +# define DCHAR_CPY wmemcpy +# else +# define VASNPRINTF vasnprintf +# define FCHAR_T char +# define DCHAR_T char +# define TCHAR_T char +# define DCHAR_IS_TCHAR 1 +# define DIRECTIVE char_directive +# define DIRECTIVES char_directives +# define PRINTF_PARSE printf_parse +# define DCHAR_CPY memcpy +# endif +#endif +#if WIDE_CHAR_VERSION + /* TCHAR_T is wchar_t. */ +# define USE_SNPRINTF 1 +# if HAVE_DECL__SNWPRINTF + /* On Windows, the function swprintf() has a different signature than + on Unix; we use the _snwprintf() function instead. */ +# define SNPRINTF _snwprintf +# else + /* Unix. */ +# define SNPRINTF swprintf +# endif +#else + /* TCHAR_T is char. */ +# /* Use snprintf if it exists under the name 'snprintf' or '_snprintf'. + But don't use it on BeOS, since BeOS snprintf produces no output if the + size argument is >= 0x3000000. */ +# if (HAVE_DECL__SNPRINTF || HAVE_SNPRINTF) && !defined __BEOS__ +# define USE_SNPRINTF 1 +# else +# define USE_SNPRINTF 0 +# endif +# if HAVE_DECL__SNPRINTF + /* Windows. */ +# define SNPRINTF _snprintf +# else + /* Unix. */ +# define SNPRINTF snprintf + /* Here we need to call the native snprintf, not rpl_snprintf. */ +# undef snprintf +# endif +#endif +/* Here we need to call the native sprintf, not rpl_sprintf. */ +#undef sprintf + +#if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE) && !defined IN_LIBINTL +/* Determine the decimal-point character according to the current locale. */ +# ifndef decimal_point_char_defined +# define decimal_point_char_defined 1 +static char +decimal_point_char () +{ + const char *point; + /* Determine it in a multithread-safe way. We know nl_langinfo is + multithread-safe on glibc systems, but is not required to be multithread- + safe by POSIX. sprintf(), however, is multithread-safe. localeconv() + is rarely multithread-safe. */ +# if HAVE_NL_LANGINFO && __GLIBC__ + point = nl_langinfo (RADIXCHAR); +# elif 1 + char pointbuf[5]; + sprintf (pointbuf, "%#.0f", 1.0); + point = &pointbuf[1]; +# else + point = localeconv () -> decimal_point; +# endif + /* The decimal point is always a single byte: either '.' or ','. */ + return (point[0] != '\0' ? point[0] : '.'); +} +# endif +#endif + +#if NEED_PRINTF_INFINITE_DOUBLE && !NEED_PRINTF_DOUBLE && !defined IN_LIBINTL + +/* Equivalent to !isfinite(x) || x == 0, but does not require libm. */ +static int +is_infinite_or_zero (double x) +{ + return isnan (x) || x + x == x; +} + +#endif + +#if NEED_PRINTF_INFINITE_LONG_DOUBLE && !NEED_PRINTF_LONG_DOUBLE && !defined IN_LIBINTL + +/* Equivalent to !isfinite(x), but does not require libm. */ +static int +is_infinitel (long double x) +{ + return isnanl (x) || (x + x == x && x != 0.0L); +} + +#endif + +#if (NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE) && !defined IN_LIBINTL + +/* Converting 'long double' to decimal without rare rounding bugs requires + real bignums. We use the naming conventions of GNU gmp, but vastly simpler + (and slower) algorithms. */ + +typedef unsigned int mp_limb_t; +# define GMP_LIMB_BITS 32 +typedef int mp_limb_verify[2 * (sizeof (mp_limb_t) * CHAR_BIT == GMP_LIMB_BITS) - 1]; + +typedef unsigned long long mp_twolimb_t; +# define GMP_TWOLIMB_BITS 64 +typedef int mp_twolimb_verify[2 * (sizeof (mp_twolimb_t) * CHAR_BIT == GMP_TWOLIMB_BITS) - 1]; + +/* Representation of a bignum >= 0. */ +typedef struct +{ + size_t nlimbs; + mp_limb_t *limbs; /* Bits in little-endian order, allocated with malloc(). */ +} mpn_t; + +/* Compute the product of two bignums >= 0. + Return the allocated memory in case of success, NULL in case of memory + allocation failure. */ +static void * +multiply (mpn_t src1, mpn_t src2, mpn_t *dest) +{ + const mp_limb_t *p1; + const mp_limb_t *p2; + size_t len1; + size_t len2; + + if (src1.nlimbs <= src2.nlimbs) + { + len1 = src1.nlimbs; + p1 = src1.limbs; + len2 = src2.nlimbs; + p2 = src2.limbs; + } + else + { + len1 = src2.nlimbs; + p1 = src2.limbs; + len2 = src1.nlimbs; + p2 = src1.limbs; + } + /* Now 0 <= len1 <= len2. */ + if (len1 == 0) + { + /* src1 or src2 is zero. */ + dest->nlimbs = 0; + dest->limbs = (mp_limb_t *) malloc (1); + } + else + { + /* Here 1 <= len1 <= len2. */ + size_t dlen; + mp_limb_t *dp; + size_t k, i, j; + + dlen = len1 + len2; + dp = (mp_limb_t *) malloc (dlen * sizeof (mp_limb_t)); + if (dp == NULL) + return NULL; + for (k = len2; k > 0; ) + dp[--k] = 0; + for (i = 0; i < len1; i++) + { + mp_limb_t digit1 = p1[i]; + mp_twolimb_t carry = 0; + for (j = 0; j < len2; j++) + { + mp_limb_t digit2 = p2[j]; + carry += (mp_twolimb_t) digit1 * (mp_twolimb_t) digit2; + carry += dp[i + j]; + dp[i + j] = (mp_limb_t) carry; + carry = carry >> GMP_LIMB_BITS; + } + dp[i + len2] = (mp_limb_t) carry; + } + /* Normalise. */ + while (dlen > 0 && dp[dlen - 1] == 0) + dlen--; + dest->nlimbs = dlen; + dest->limbs = dp; + } + return dest->limbs; +} + +/* Compute the quotient of a bignum a >= 0 and a bignum b > 0. + a is written as a = q * b + r with 0 <= r < b. q is the quotient, r + the remainder. + Finally, round-to-even is performed: If r > b/2 or if r = b/2 and q is odd, + q is incremented. + Return the allocated memory in case of success, NULL in case of memory + allocation failure. */ +static void * +divide (mpn_t a, mpn_t b, mpn_t *q) +{ + /* Algorithm: + First normalise a and b: a=[a[m-1],...,a[0]], b=[b[n-1],...,b[0]] + with m>=0 and n>0 (in base beta = 2^GMP_LIMB_BITS). + If m=n=1, perform a single-precision division: + r:=0, j:=m, + while j>0 do + {Here (q[m-1]*beta^(m-1)+...+q[j]*beta^j) * b[0] + r*beta^j = + = a[m-1]*beta^(m-1)+...+a[j]*beta^j und 0<=r=n>1, perform a multiple-precision division: + We have a/b < beta^(m-n+1). + s:=intDsize-1-(hightest bit in b[n-1]), 0<=s=beta/2. + For j=m-n,...,0: {Here 0 <= r < b*beta^(j+1).} + Compute q* : + q* := floor((r[j+n]*beta+r[j+n-1])/b[n-1]). + In case of overflow (q* >= beta) set q* := beta-1. + Compute c2 := ((r[j+n]*beta+r[j+n-1]) - q* * b[n-1])*beta + r[j+n-2] + and c3 := b[n-2] * q*. + {We have 0 <= c2 < 2*beta^2, even 0 <= c2 < beta^2 if no overflow + occurred. Furthermore 0 <= c3 < beta^2. + If there was overflow and + r[j+n]*beta+r[j+n-1] - q* * b[n-1] >= beta, i.e. c2 >= beta^2, + the next test can be skipped.} + While c3 > c2, {Here 0 <= c2 < c3 < beta^2} + Put q* := q* - 1, c2 := c2 + b[n-1]*beta, c3 := c3 - b[n-2]. + If q* > 0: + Put r := r - b * q* * beta^j. In detail: + [r[n+j],...,r[j]] := [r[n+j],...,r[j]] - q* * [b[n-1],...,b[0]]. + hence: u:=0, for i:=0 to n-1 do + u := u + q* * b[i], + r[j+i]:=r[j+i]-(u mod beta) (+ beta, if carry), + u:=u div beta (+ 1, if carry in subtraction) + r[n+j]:=r[n+j]-u. + {Since always u = (q* * [b[i-1],...,b[0]] div beta^i) + 1 + < q* + 1 <= beta, + the carry u does not overflow.} + If a negative carry occurs, put q* := q* - 1 + and [r[n+j],...,r[j]] := [r[n+j],...,r[j]] + [0,b[n-1],...,b[0]]. + Set q[j] := q*. + Normalise [q[m-n],..,q[0]]; this yields the quotient q. + Shift [r[n-1],...,r[0]] right by s bits and normalise; this yields the + rest r. + The room for q[j] can be allocated at the memory location of r[n+j]. + Finally, round-to-even: + Shift r left by 1 bit. + If r > b or if r = b and q[0] is odd, q := q+1. + */ + const mp_limb_t *a_ptr = a.limbs; + size_t a_len = a.nlimbs; + const mp_limb_t *b_ptr = b.limbs; + size_t b_len = b.nlimbs; + mp_limb_t *roomptr; + mp_limb_t *tmp_roomptr = NULL; + mp_limb_t *q_ptr; + size_t q_len; + mp_limb_t *r_ptr; + size_t r_len; + + /* Allocate room for a_len+2 digits. + (Need a_len+1 digits for the real division and 1 more digit for the + final rounding of q.) */ + roomptr = (mp_limb_t *) malloc ((a_len + 2) * sizeof (mp_limb_t)); + if (roomptr == NULL) + return NULL; + + /* Normalise a. */ + while (a_len > 0 && a_ptr[a_len - 1] == 0) + a_len--; + + /* Normalise b. */ + for (;;) + { + if (b_len == 0) + /* Division by zero. */ + abort (); + if (b_ptr[b_len - 1] == 0) + b_len--; + else + break; + } + + /* Here m = a_len >= 0 and n = b_len > 0. */ + + if (a_len < b_len) + { + /* m beta^(m-2) <= a/b < beta^m */ + r_ptr = roomptr; + q_ptr = roomptr + 1; + { + mp_limb_t den = b_ptr[0]; + mp_limb_t remainder = 0; + const mp_limb_t *sourceptr = a_ptr + a_len; + mp_limb_t *destptr = q_ptr + a_len; + size_t count; + for (count = a_len; count > 0; count--) + { + mp_twolimb_t num = + ((mp_twolimb_t) remainder << GMP_LIMB_BITS) | *--sourceptr; + *--destptr = num / den; + remainder = num % den; + } + /* Normalise and store r. */ + if (remainder > 0) + { + r_ptr[0] = remainder; + r_len = 1; + } + else + r_len = 0; + /* Normalise q. */ + q_len = a_len; + if (q_ptr[q_len - 1] == 0) + q_len--; + } + } + else + { + /* n>1: multiple precision division. + beta^(m-1) <= a < beta^m, beta^(n-1) <= b < beta^n ==> + beta^(m-n-1) <= a/b < beta^(m-n+1). */ + /* Determine s. */ + size_t s; + { + mp_limb_t msd = b_ptr[b_len - 1]; /* = b[n-1], > 0 */ + s = 31; + if (msd >= 0x10000) + { + msd = msd >> 16; + s -= 16; + } + if (msd >= 0x100) + { + msd = msd >> 8; + s -= 8; + } + if (msd >= 0x10) + { + msd = msd >> 4; + s -= 4; + } + if (msd >= 0x4) + { + msd = msd >> 2; + s -= 2; + } + if (msd >= 0x2) + { + msd = msd >> 1; + s -= 1; + } + } + /* 0 <= s < GMP_LIMB_BITS. + Copy b, shifting it left by s bits. */ + if (s > 0) + { + tmp_roomptr = (mp_limb_t *) malloc (b_len * sizeof (mp_limb_t)); + if (tmp_roomptr == NULL) + { + free (roomptr); + return NULL; + } + { + const mp_limb_t *sourceptr = b_ptr; + mp_limb_t *destptr = tmp_roomptr; + mp_twolimb_t accu = 0; + size_t count; + for (count = b_len; count > 0; count--) + { + accu += (mp_twolimb_t) *sourceptr++ << s; + *destptr++ = (mp_limb_t) accu; + accu = accu >> GMP_LIMB_BITS; + } + /* accu must be zero, since that was how s was determined. */ + if (accu != 0) + abort (); + } + b_ptr = tmp_roomptr; + } + /* Copy a, shifting it left by s bits, yields r. + Memory layout: + At the beginning: r = roomptr[0..a_len], + at the end: r = roomptr[0..b_len-1], q = roomptr[b_len..a_len] */ + r_ptr = roomptr; + if (s == 0) + { + memcpy (r_ptr, a_ptr, a_len * sizeof (mp_limb_t)); + r_ptr[a_len] = 0; + } + else + { + const mp_limb_t *sourceptr = a_ptr; + mp_limb_t *destptr = r_ptr; + mp_twolimb_t accu = 0; + size_t count; + for (count = a_len; count > 0; count--) + { + accu += (mp_twolimb_t) *sourceptr++ << s; + *destptr++ = (mp_limb_t) accu; + accu = accu >> GMP_LIMB_BITS; + } + *destptr++ = (mp_limb_t) accu; + } + q_ptr = roomptr + b_len; + q_len = a_len - b_len + 1; /* q will have m-n+1 limbs */ + { + size_t j = a_len - b_len; /* m-n */ + mp_limb_t b_msd = b_ptr[b_len - 1]; /* b[n-1] */ + mp_limb_t b_2msd = b_ptr[b_len - 2]; /* b[n-2] */ + mp_twolimb_t b_msdd = /* b[n-1]*beta+b[n-2] */ + ((mp_twolimb_t) b_msd << GMP_LIMB_BITS) | b_2msd; + /* Division loop, traversed m-n+1 times. + j counts down, b is unchanged, beta/2 <= b[n-1] < beta. */ + for (;;) + { + mp_limb_t q_star; + mp_limb_t c1; + if (r_ptr[j + b_len] < b_msd) /* r[j+n] < b[n-1] ? */ + { + /* Divide r[j+n]*beta+r[j+n-1] by b[n-1], no overflow. */ + mp_twolimb_t num = + ((mp_twolimb_t) r_ptr[j + b_len] << GMP_LIMB_BITS) + | r_ptr[j + b_len - 1]; + q_star = num / b_msd; + c1 = num % b_msd; + } + else + { + /* Overflow, hence r[j+n]*beta+r[j+n-1] >= beta*b[n-1]. */ + q_star = (mp_limb_t)~(mp_limb_t)0; /* q* = beta-1 */ + /* Test whether r[j+n]*beta+r[j+n-1] - (beta-1)*b[n-1] >= beta + <==> r[j+n]*beta+r[j+n-1] + b[n-1] >= beta*b[n-1]+beta + <==> b[n-1] < floor((r[j+n]*beta+r[j+n-1]+b[n-1])/beta) + {<= beta !}. + If yes, jump directly to the subtraction loop. + (Otherwise, r[j+n]*beta+r[j+n-1] - (beta-1)*b[n-1] < beta + <==> floor((r[j+n]*beta+r[j+n-1]+b[n-1])/beta) = b[n-1] ) */ + if (r_ptr[j + b_len] > b_msd + || (c1 = r_ptr[j + b_len - 1] + b_msd) < b_msd) + /* r[j+n] >= b[n-1]+1 or + r[j+n] = b[n-1] and the addition r[j+n-1]+b[n-1] gives a + carry. */ + goto subtract; + } + /* q_star = q*, + c1 = (r[j+n]*beta+r[j+n-1]) - q* * b[n-1] (>=0, 0, decrease it by + b[n-1]*beta+b[n-2]. Because of b[n-1]*beta+b[n-2] >= beta^2/2 + this can happen only twice. */ + if (c3 > c2) + { + q_star = q_star - 1; /* q* := q* - 1 */ + if (c3 - c2 > b_msdd) + q_star = q_star - 1; /* q* := q* - 1 */ + } + } + if (q_star > 0) + subtract: + { + /* Subtract r := r - b * q* * beta^j. */ + mp_limb_t cr; + { + const mp_limb_t *sourceptr = b_ptr; + mp_limb_t *destptr = r_ptr + j; + mp_twolimb_t carry = 0; + size_t count; + for (count = b_len; count > 0; count--) + { + /* Here 0 <= carry <= q*. */ + carry = + carry + + (mp_twolimb_t) q_star * (mp_twolimb_t) *sourceptr++ + + (mp_limb_t) ~(*destptr); + /* Here 0 <= carry <= beta*q* + beta-1. */ + *destptr++ = ~(mp_limb_t) carry; + carry = carry >> GMP_LIMB_BITS; /* <= q* */ + } + cr = (mp_limb_t) carry; + } + /* Subtract cr from r_ptr[j + b_len], then forget about + r_ptr[j + b_len]. */ + if (cr > r_ptr[j + b_len]) + { + /* Subtraction gave a carry. */ + q_star = q_star - 1; /* q* := q* - 1 */ + /* Add b back. */ + { + const mp_limb_t *sourceptr = b_ptr; + mp_limb_t *destptr = r_ptr + j; + mp_limb_t carry = 0; + size_t count; + for (count = b_len; count > 0; count--) + { + mp_limb_t source1 = *sourceptr++; + mp_limb_t source2 = *destptr; + *destptr++ = source1 + source2 + carry; + carry = + (carry + ? source1 >= (mp_limb_t) ~source2 + : source1 > (mp_limb_t) ~source2); + } + } + /* Forget about the carry and about r[j+n]. */ + } + } + /* q* is determined. Store it as q[j]. */ + q_ptr[j] = q_star; + if (j == 0) + break; + j--; + } + } + r_len = b_len; + /* Normalise q. */ + if (q_ptr[q_len - 1] == 0) + q_len--; +# if 0 /* Not needed here, since we need r only to compare it with b/2, and + b is shifted left by s bits. */ + /* Shift r right by s bits. */ + if (s > 0) + { + mp_limb_t ptr = r_ptr + r_len; + mp_twolimb_t accu = 0; + size_t count; + for (count = r_len; count > 0; count--) + { + accu = (mp_twolimb_t) (mp_limb_t) accu << GMP_LIMB_BITS; + accu += (mp_twolimb_t) *--ptr << (GMP_LIMB_BITS - s); + *ptr = (mp_limb_t) (accu >> GMP_LIMB_BITS); + } + } +# endif + /* Normalise r. */ + while (r_len > 0 && r_ptr[r_len - 1] == 0) + r_len--; + } + /* Compare r << 1 with b. */ + if (r_len > b_len) + goto increment_q; + { + size_t i; + for (i = b_len;;) + { + mp_limb_t r_i = + (i <= r_len && i > 0 ? r_ptr[i - 1] >> (GMP_LIMB_BITS - 1) : 0) + | (i < r_len ? r_ptr[i] << 1 : 0); + mp_limb_t b_i = (i < b_len ? b_ptr[i] : 0); + if (r_i > b_i) + goto increment_q; + if (r_i < b_i) + goto keep_q; + if (i == 0) + break; + i--; + } + } + if (q_len > 0 && ((q_ptr[0] & 1) != 0)) + /* q is odd. */ + increment_q: + { + size_t i; + for (i = 0; i < q_len; i++) + if (++(q_ptr[i]) != 0) + goto keep_q; + q_ptr[q_len++] = 1; + } + keep_q: + if (tmp_roomptr != NULL) + free (tmp_roomptr); + q->limbs = q_ptr; + q->nlimbs = q_len; + return roomptr; +} + +/* Convert a bignum a >= 0, multiplied with 10^extra_zeroes, to decimal + representation. + Destroys the contents of a. + Return the allocated memory - containing the decimal digits in low-to-high + order, terminated with a NUL character - in case of success, NULL in case + of memory allocation failure. */ +static char * +convert_to_decimal (mpn_t a, size_t extra_zeroes) +{ + mp_limb_t *a_ptr = a.limbs; + size_t a_len = a.nlimbs; + /* 0.03345 is slightly larger than log(2)/(9*log(10)). */ + size_t c_len = 9 * ((size_t)(a_len * (GMP_LIMB_BITS * 0.03345f)) + 1); + char *c_ptr = (char *) malloc (xsum (c_len, extra_zeroes)); + if (c_ptr != NULL) + { + char *d_ptr = c_ptr; + for (; extra_zeroes > 0; extra_zeroes--) + *d_ptr++ = '0'; + while (a_len > 0) + { + /* Divide a by 10^9, in-place. */ + mp_limb_t remainder = 0; + mp_limb_t *ptr = a_ptr + a_len; + size_t count; + for (count = a_len; count > 0; count--) + { + mp_twolimb_t num = + ((mp_twolimb_t) remainder << GMP_LIMB_BITS) | *--ptr; + *ptr = num / 1000000000; + remainder = num % 1000000000; + } + /* Store the remainder as 9 decimal digits. */ + for (count = 9; count > 0; count--) + { + *d_ptr++ = '0' + (remainder % 10); + remainder = remainder / 10; + } + /* Normalize a. */ + if (a_ptr[a_len - 1] == 0) + a_len--; + } + /* Remove leading zeroes. */ + while (d_ptr > c_ptr && d_ptr[-1] == '0') + d_ptr--; + /* But keep at least one zero. */ + if (d_ptr == c_ptr) + *d_ptr++ = '0'; + /* Terminate the string. */ + *d_ptr = '\0'; + } + return c_ptr; +} + +# if NEED_PRINTF_LONG_DOUBLE + +/* Assuming x is finite and >= 0: + write x as x = 2^e * m, where m is a bignum. + Return the allocated memory in case of success, NULL in case of memory + allocation failure. */ +static void * +decode_long_double (long double x, int *ep, mpn_t *mp) +{ + mpn_t m; + int exp; + long double y; + size_t i; + + /* Allocate memory for result. */ + m.nlimbs = (LDBL_MANT_BIT + GMP_LIMB_BITS - 1) / GMP_LIMB_BITS; + m.limbs = (mp_limb_t *) malloc (m.nlimbs * sizeof (mp_limb_t)); + if (m.limbs == NULL) + return NULL; + /* Split into exponential part and mantissa. */ + y = frexpl (x, &exp); + if (!(y >= 0.0L && y < 1.0L)) + abort (); + /* x = 2^exp * y = 2^(exp - LDBL_MANT_BIT) * (y * LDBL_MANT_BIT), and the + latter is an integer. */ + /* Convert the mantissa (y * LDBL_MANT_BIT) to a sequence of limbs. + I'm not sure whether it's safe to cast a 'long double' value between + 2^31 and 2^32 to 'unsigned int', therefore play safe and cast only + 'long double' values between 0 and 2^16 (to 'unsigned int' or 'int', + doesn't matter). */ +# if (LDBL_MANT_BIT % GMP_LIMB_BITS) != 0 +# if (LDBL_MANT_BIT % GMP_LIMB_BITS) > GMP_LIMB_BITS / 2 + { + mp_limb_t hi, lo; + y *= (mp_limb_t) 1 << (LDBL_MANT_BIT % (GMP_LIMB_BITS / 2)); + hi = (int) y; + y -= hi; + if (!(y >= 0.0L && y < 1.0L)) + abort (); + y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2); + lo = (int) y; + y -= lo; + if (!(y >= 0.0L && y < 1.0L)) + abort (); + m.limbs[LDBL_MANT_BIT / GMP_LIMB_BITS] = (hi << (GMP_LIMB_BITS / 2)) | lo; + } +# else + { + mp_limb_t d; + y *= (mp_limb_t) 1 << (LDBL_MANT_BIT % GMP_LIMB_BITS); + d = (int) y; + y -= d; + if (!(y >= 0.0L && y < 1.0L)) + abort (); + m.limbs[LDBL_MANT_BIT / GMP_LIMB_BITS] = d; + } +# endif +# endif + for (i = LDBL_MANT_BIT / GMP_LIMB_BITS; i > 0; ) + { + mp_limb_t hi, lo; + y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2); + hi = (int) y; + y -= hi; + if (!(y >= 0.0L && y < 1.0L)) + abort (); + y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2); + lo = (int) y; + y -= lo; + if (!(y >= 0.0L && y < 1.0L)) + abort (); + m.limbs[--i] = (hi << (GMP_LIMB_BITS / 2)) | lo; + } + if (!(y == 0.0L)) + abort (); + /* Normalise. */ + while (m.nlimbs > 0 && m.limbs[m.nlimbs - 1] == 0) + m.nlimbs--; + *mp = m; + *ep = exp - LDBL_MANT_BIT; + return m.limbs; +} + +# endif + +# if NEED_PRINTF_DOUBLE + +/* Assuming x is finite and >= 0: + write x as x = 2^e * m, where m is a bignum. + Return the allocated memory in case of success, NULL in case of memory + allocation failure. */ +static void * +decode_double (double x, int *ep, mpn_t *mp) +{ + mpn_t m; + int exp; + double y; + size_t i; + + /* Allocate memory for result. */ + m.nlimbs = (DBL_MANT_BIT + GMP_LIMB_BITS - 1) / GMP_LIMB_BITS; + m.limbs = (mp_limb_t *) malloc (m.nlimbs * sizeof (mp_limb_t)); + if (m.limbs == NULL) + return NULL; + /* Split into exponential part and mantissa. */ + y = frexp (x, &exp); + if (!(y >= 0.0 && y < 1.0)) + abort (); + /* x = 2^exp * y = 2^(exp - DBL_MANT_BIT) * (y * DBL_MANT_BIT), and the + latter is an integer. */ + /* Convert the mantissa (y * DBL_MANT_BIT) to a sequence of limbs. + I'm not sure whether it's safe to cast a 'double' value between + 2^31 and 2^32 to 'unsigned int', therefore play safe and cast only + 'double' values between 0 and 2^16 (to 'unsigned int' or 'int', + doesn't matter). */ +# if (DBL_MANT_BIT % GMP_LIMB_BITS) != 0 +# if (DBL_MANT_BIT % GMP_LIMB_BITS) > GMP_LIMB_BITS / 2 + { + mp_limb_t hi, lo; + y *= (mp_limb_t) 1 << (DBL_MANT_BIT % (GMP_LIMB_BITS / 2)); + hi = (int) y; + y -= hi; + if (!(y >= 0.0 && y < 1.0)) + abort (); + y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2); + lo = (int) y; + y -= lo; + if (!(y >= 0.0 && y < 1.0)) + abort (); + m.limbs[DBL_MANT_BIT / GMP_LIMB_BITS] = (hi << (GMP_LIMB_BITS / 2)) | lo; + } +# else + { + mp_limb_t d; + y *= (mp_limb_t) 1 << (DBL_MANT_BIT % GMP_LIMB_BITS); + d = (int) y; + y -= d; + if (!(y >= 0.0 && y < 1.0)) + abort (); + m.limbs[DBL_MANT_BIT / GMP_LIMB_BITS] = d; + } +# endif +# endif + for (i = DBL_MANT_BIT / GMP_LIMB_BITS; i > 0; ) + { + mp_limb_t hi, lo; + y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2); + hi = (int) y; + y -= hi; + if (!(y >= 0.0 && y < 1.0)) + abort (); + y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2); + lo = (int) y; + y -= lo; + if (!(y >= 0.0 && y < 1.0)) + abort (); + m.limbs[--i] = (hi << (GMP_LIMB_BITS / 2)) | lo; + } + if (!(y == 0.0)) + abort (); + /* Normalise. */ + while (m.nlimbs > 0 && m.limbs[m.nlimbs - 1] == 0) + m.nlimbs--; + *mp = m; + *ep = exp - DBL_MANT_BIT; + return m.limbs; +} + +# endif + +/* Assuming x = 2^e * m is finite and >= 0, and n is an integer: + Returns the decimal representation of round (x * 10^n). + Return the allocated memory - containing the decimal digits in low-to-high + order, terminated with a NUL character - in case of success, NULL in case + of memory allocation failure. */ +static char * +scale10_round_decimal_decoded (int e, mpn_t m, void *memory, int n) +{ + int s; + size_t extra_zeroes; + unsigned int abs_n; + unsigned int abs_s; + mp_limb_t *pow5_ptr; + size_t pow5_len; + unsigned int s_limbs; + unsigned int s_bits; + mpn_t pow5; + mpn_t z; + void *z_memory; + char *digits; + + if (memory == NULL) + return NULL; + /* x = 2^e * m, hence + y = round (2^e * 10^n * m) = round (2^(e+n) * 5^n * m) + = round (2^s * 5^n * m). */ + s = e + n; + extra_zeroes = 0; + /* Factor out a common power of 10 if possible. */ + if (s > 0 && n > 0) + { + extra_zeroes = (s < n ? s : n); + s -= extra_zeroes; + n -= extra_zeroes; + } + /* Here y = round (2^s * 5^n * m) * 10^extra_zeroes. + Before converting to decimal, we need to compute + z = round (2^s * 5^n * m). */ + /* Compute 5^|n|, possibly shifted by |s| bits if n and s have the same + sign. 2.322 is slightly larger than log(5)/log(2). */ + abs_n = (n >= 0 ? n : -n); + abs_s = (s >= 0 ? s : -s); + pow5_ptr = (mp_limb_t *) malloc (((int)(abs_n * (2.322f / GMP_LIMB_BITS)) + 1 + + abs_s / GMP_LIMB_BITS + 1) + * sizeof (mp_limb_t)); + if (pow5_ptr == NULL) + { + free (memory); + return NULL; + } + /* Initialize with 1. */ + pow5_ptr[0] = 1; + pow5_len = 1; + /* Multiply with 5^|n|. */ + if (abs_n > 0) + { + static mp_limb_t const small_pow5[13 + 1] = + { + 1, 5, 25, 125, 625, 3125, 15625, 78125, 390625, 1953125, 9765625, + 48828125, 244140625, 1220703125 + }; + unsigned int n13; + for (n13 = 0; n13 <= abs_n; n13 += 13) + { + mp_limb_t digit1 = small_pow5[n13 + 13 <= abs_n ? 13 : abs_n - n13]; + size_t j; + mp_twolimb_t carry = 0; + for (j = 0; j < pow5_len; j++) + { + mp_limb_t digit2 = pow5_ptr[j]; + carry += (mp_twolimb_t) digit1 * (mp_twolimb_t) digit2; + pow5_ptr[j] = (mp_limb_t) carry; + carry = carry >> GMP_LIMB_BITS; + } + if (carry > 0) + pow5_ptr[pow5_len++] = (mp_limb_t) carry; + } + } + s_limbs = abs_s / GMP_LIMB_BITS; + s_bits = abs_s % GMP_LIMB_BITS; + if (n >= 0 ? s >= 0 : s <= 0) + { + /* Multiply with 2^|s|. */ + if (s_bits > 0) + { + mp_limb_t *ptr = pow5_ptr; + mp_twolimb_t accu = 0; + size_t count; + for (count = pow5_len; count > 0; count--) + { + accu += (mp_twolimb_t) *ptr << s_bits; + *ptr++ = (mp_limb_t) accu; + accu = accu >> GMP_LIMB_BITS; + } + if (accu > 0) + { + *ptr = (mp_limb_t) accu; + pow5_len++; + } + } + if (s_limbs > 0) + { + size_t count; + for (count = pow5_len; count > 0;) + { + count--; + pow5_ptr[s_limbs + count] = pow5_ptr[count]; + } + for (count = s_limbs; count > 0;) + { + count--; + pow5_ptr[count] = 0; + } + pow5_len += s_limbs; + } + pow5.limbs = pow5_ptr; + pow5.nlimbs = pow5_len; + if (n >= 0) + { + /* Multiply m with pow5. No division needed. */ + z_memory = multiply (m, pow5, &z); + } + else + { + /* Divide m by pow5 and round. */ + z_memory = divide (m, pow5, &z); + } + } + else + { + pow5.limbs = pow5_ptr; + pow5.nlimbs = pow5_len; + if (n >= 0) + { + /* n >= 0, s < 0. + Multiply m with pow5, then divide by 2^|s|. */ + mpn_t numerator; + mpn_t denominator; + void *tmp_memory; + tmp_memory = multiply (m, pow5, &numerator); + if (tmp_memory == NULL) + { + free (pow5_ptr); + free (memory); + return NULL; + } + /* Construct 2^|s|. */ + { + mp_limb_t *ptr = pow5_ptr + pow5_len; + size_t i; + for (i = 0; i < s_limbs; i++) + ptr[i] = 0; + ptr[s_limbs] = (mp_limb_t) 1 << s_bits; + denominator.limbs = ptr; + denominator.nlimbs = s_limbs + 1; + } + z_memory = divide (numerator, denominator, &z); + free (tmp_memory); + } + else + { + /* n < 0, s > 0. + Multiply m with 2^s, then divide by pow5. */ + mpn_t numerator; + mp_limb_t *num_ptr; + num_ptr = (mp_limb_t *) malloc ((m.nlimbs + s_limbs + 1) + * sizeof (mp_limb_t)); + if (num_ptr == NULL) + { + free (pow5_ptr); + free (memory); + return NULL; + } + { + mp_limb_t *destptr = num_ptr; + { + size_t i; + for (i = 0; i < s_limbs; i++) + *destptr++ = 0; + } + if (s_bits > 0) + { + const mp_limb_t *sourceptr = m.limbs; + mp_twolimb_t accu = 0; + size_t count; + for (count = m.nlimbs; count > 0; count--) + { + accu += (mp_twolimb_t) *sourceptr++ << s_bits; + *destptr++ = (mp_limb_t) accu; + accu = accu >> GMP_LIMB_BITS; + } + if (accu > 0) + *destptr++ = (mp_limb_t) accu; + } + else + { + const mp_limb_t *sourceptr = m.limbs; + size_t count; + for (count = m.nlimbs; count > 0; count--) + *destptr++ = *sourceptr++; + } + numerator.limbs = num_ptr; + numerator.nlimbs = destptr - num_ptr; + } + z_memory = divide (numerator, pow5, &z); + free (num_ptr); + } + } + free (pow5_ptr); + free (memory); + + /* Here y = round (x * 10^n) = z * 10^extra_zeroes. */ + + if (z_memory == NULL) + return NULL; + digits = convert_to_decimal (z, extra_zeroes); + free (z_memory); + return digits; +} + +# if NEED_PRINTF_LONG_DOUBLE + +/* Assuming x is finite and >= 0, and n is an integer: + Returns the decimal representation of round (x * 10^n). + Return the allocated memory - containing the decimal digits in low-to-high + order, terminated with a NUL character - in case of success, NULL in case + of memory allocation failure. */ +static char * +scale10_round_decimal_long_double (long double x, int n) +{ + int e; + mpn_t m; + void *memory = decode_long_double (x, &e, &m); + return scale10_round_decimal_decoded (e, m, memory, n); +} + +# endif + +# if NEED_PRINTF_DOUBLE + +/* Assuming x is finite and >= 0, and n is an integer: + Returns the decimal representation of round (x * 10^n). + Return the allocated memory - containing the decimal digits in low-to-high + order, terminated with a NUL character - in case of success, NULL in case + of memory allocation failure. */ +static char * +scale10_round_decimal_double (double x, int n) +{ + int e; + mpn_t m; + void *memory = decode_double (x, &e, &m); + return scale10_round_decimal_decoded (e, m, memory, n); +} + +# endif + +# if NEED_PRINTF_LONG_DOUBLE + +/* Assuming x is finite and > 0: + Return an approximation for n with 10^n <= x < 10^(n+1). + The approximation is usually the right n, but may be off by 1 sometimes. */ +static int +floorlog10l (long double x) +{ + int exp; + long double y; + double z; + double l; + + /* Split into exponential part and mantissa. */ + y = frexpl (x, &exp); + if (!(y >= 0.0L && y < 1.0L)) + abort (); + if (y == 0.0L) + return INT_MIN; + if (y < 0.5L) + { + while (y < (1.0L / (1 << (GMP_LIMB_BITS / 2)) / (1 << (GMP_LIMB_BITS / 2)))) + { + y *= 1.0L * (1 << (GMP_LIMB_BITS / 2)) * (1 << (GMP_LIMB_BITS / 2)); + exp -= GMP_LIMB_BITS; + } + if (y < (1.0L / (1 << 16))) + { + y *= 1.0L * (1 << 16); + exp -= 16; + } + if (y < (1.0L / (1 << 8))) + { + y *= 1.0L * (1 << 8); + exp -= 8; + } + if (y < (1.0L / (1 << 4))) + { + y *= 1.0L * (1 << 4); + exp -= 4; + } + if (y < (1.0L / (1 << 2))) + { + y *= 1.0L * (1 << 2); + exp -= 2; + } + if (y < (1.0L / (1 << 1))) + { + y *= 1.0L * (1 << 1); + exp -= 1; + } + } + if (!(y >= 0.5L && y < 1.0L)) + abort (); + /* Compute an approximation for l = log2(x) = exp + log2(y). */ + l = exp; + z = y; + if (z < 0.70710678118654752444) + { + z *= 1.4142135623730950488; + l -= 0.5; + } + if (z < 0.8408964152537145431) + { + z *= 1.1892071150027210667; + l -= 0.25; + } + if (z < 0.91700404320467123175) + { + z *= 1.0905077326652576592; + l -= 0.125; + } + if (z < 0.9576032806985736469) + { + z *= 1.0442737824274138403; + l -= 0.0625; + } + /* Now 0.95 <= z <= 1.01. */ + z = 1 - z; + /* log(1-z) = - z - z^2/2 - z^3/3 - z^4/4 - ... + Four terms are enough to get an approximation with error < 10^-7. */ + l -= z * (1.0 + z * (0.5 + z * ((1.0 / 3) + z * 0.25))); + /* Finally multiply with log(2)/log(10), yields an approximation for + log10(x). */ + l *= 0.30102999566398119523; + /* Round down to the next integer. */ + return (int) l + (l < 0 ? -1 : 0); +} + +# endif + +# if NEED_PRINTF_DOUBLE + +/* Assuming x is finite and > 0: + Return an approximation for n with 10^n <= x < 10^(n+1). + The approximation is usually the right n, but may be off by 1 sometimes. */ +static int +floorlog10 (double x) +{ + int exp; + double y; + double z; + double l; + + /* Split into exponential part and mantissa. */ + y = frexp (x, &exp); + if (!(y >= 0.0 && y < 1.0)) + abort (); + if (y == 0.0) + return INT_MIN; + if (y < 0.5) + { + while (y < (1.0 / (1 << (GMP_LIMB_BITS / 2)) / (1 << (GMP_LIMB_BITS / 2)))) + { + y *= 1.0 * (1 << (GMP_LIMB_BITS / 2)) * (1 << (GMP_LIMB_BITS / 2)); + exp -= GMP_LIMB_BITS; + } + if (y < (1.0 / (1 << 16))) + { + y *= 1.0 * (1 << 16); + exp -= 16; + } + if (y < (1.0 / (1 << 8))) + { + y *= 1.0 * (1 << 8); + exp -= 8; + } + if (y < (1.0 / (1 << 4))) + { + y *= 1.0 * (1 << 4); + exp -= 4; + } + if (y < (1.0 / (1 << 2))) + { + y *= 1.0 * (1 << 2); + exp -= 2; + } + if (y < (1.0 / (1 << 1))) + { + y *= 1.0 * (1 << 1); + exp -= 1; + } + } + if (!(y >= 0.5 && y < 1.0)) + abort (); + /* Compute an approximation for l = log2(x) = exp + log2(y). */ + l = exp; + z = y; + if (z < 0.70710678118654752444) + { + z *= 1.4142135623730950488; + l -= 0.5; + } + if (z < 0.8408964152537145431) + { + z *= 1.1892071150027210667; + l -= 0.25; + } + if (z < 0.91700404320467123175) + { + z *= 1.0905077326652576592; + l -= 0.125; + } + if (z < 0.9576032806985736469) + { + z *= 1.0442737824274138403; + l -= 0.0625; + } + /* Now 0.95 <= z <= 1.01. */ + z = 1 - z; + /* log(1-z) = - z - z^2/2 - z^3/3 - z^4/4 - ... + Four terms are enough to get an approximation with error < 10^-7. */ + l -= z * (1.0 + z * (0.5 + z * ((1.0 / 3) + z * 0.25))); + /* Finally multiply with log(2)/log(10), yields an approximation for + log10(x). */ + l *= 0.30102999566398119523; + /* Round down to the next integer. */ + return (int) l + (l < 0 ? -1 : 0); +} + +# endif + +#endif + +DCHAR_T * +VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp, + const FCHAR_T *format, va_list args) +{ + DIRECTIVES d; + arguments a; + + if (PRINTF_PARSE (format, &d, &a) < 0) + /* errno is already set. */ + return NULL; + +#define CLEANUP() \ + free (d.dir); \ + if (a.arg) \ + free (a.arg); + + if (PRINTF_FETCHARGS (args, &a) < 0) + { + CLEANUP (); + errno = EINVAL; + return NULL; + } + + { + size_t buf_neededlength; + TCHAR_T *buf; + TCHAR_T *buf_malloced; + const FCHAR_T *cp; + size_t i; + DIRECTIVE *dp; + /* Output string accumulator. */ + DCHAR_T *result; + size_t allocated; + size_t length; + + /* Allocate a small buffer that will hold a directive passed to + sprintf or snprintf. */ + buf_neededlength = + xsum4 (7, d.max_width_length, d.max_precision_length, 6); +#if HAVE_ALLOCA + if (buf_neededlength < 4000 / sizeof (TCHAR_T)) + { + buf = (TCHAR_T *) alloca (buf_neededlength * sizeof (TCHAR_T)); + buf_malloced = NULL; + } + else +#endif + { + size_t buf_memsize = xtimes (buf_neededlength, sizeof (TCHAR_T)); + if (size_overflow_p (buf_memsize)) + goto out_of_memory_1; + buf = (TCHAR_T *) malloc (buf_memsize); + if (buf == NULL) + goto out_of_memory_1; + buf_malloced = buf; + } + + if (resultbuf != NULL) + { + result = resultbuf; + allocated = *lengthp; + } + else + { + result = NULL; + allocated = 0; + } + length = 0; + /* Invariants: + result is either == resultbuf or == NULL or malloc-allocated. + If length > 0, then result != NULL. */ + + /* Ensures that allocated >= needed. Aborts through a jump to + out_of_memory if needed is SIZE_MAX or otherwise too big. */ +#define ENSURE_ALLOCATION(needed) \ + if ((needed) > allocated) \ + { \ + size_t memory_size; \ + DCHAR_T *memory; \ + \ + allocated = (allocated > 0 ? xtimes (allocated, 2) : 12); \ + if ((needed) > allocated) \ + allocated = (needed); \ + memory_size = xtimes (allocated, sizeof (DCHAR_T)); \ + if (size_overflow_p (memory_size)) \ + goto out_of_memory; \ + if (result == resultbuf || result == NULL) \ + memory = (DCHAR_T *) malloc (memory_size); \ + else \ + memory = (DCHAR_T *) realloc (result, memory_size); \ + if (memory == NULL) \ + goto out_of_memory; \ + if (result == resultbuf && length > 0) \ + DCHAR_CPY (memory, result, length); \ + result = memory; \ + } + + for (cp = format, i = 0, dp = &d.dir[0]; ; cp = dp->dir_end, i++, dp++) + { + if (cp != dp->dir_start) + { + size_t n = dp->dir_start - cp; + size_t augmented_length = xsum (length, n); + + ENSURE_ALLOCATION (augmented_length); + /* This copies a piece of FCHAR_T[] into a DCHAR_T[]. Here we + need that the format string contains only ASCII characters + if FCHAR_T and DCHAR_T are not the same type. */ + if (sizeof (FCHAR_T) == sizeof (DCHAR_T)) + { + DCHAR_CPY (result + length, (const DCHAR_T *) cp, n); + length = augmented_length; + } + else + { + do + result[length++] = (unsigned char) *cp++; + while (--n > 0); + } + } + if (i == d.count) + break; + + /* Execute a single directive. */ + if (dp->conversion == '%') + { + size_t augmented_length; + + if (!(dp->arg_index == ARG_NONE)) + abort (); + augmented_length = xsum (length, 1); + ENSURE_ALLOCATION (augmented_length); + result[length] = '%'; + length = augmented_length; + } + else + { + if (!(dp->arg_index != ARG_NONE)) + abort (); + + if (dp->conversion == 'n') + { + switch (a.arg[dp->arg_index].type) + { + case TYPE_COUNT_SCHAR_POINTER: + *a.arg[dp->arg_index].a.a_count_schar_pointer = length; + break; + case TYPE_COUNT_SHORT_POINTER: + *a.arg[dp->arg_index].a.a_count_short_pointer = length; + break; + case TYPE_COUNT_INT_POINTER: + *a.arg[dp->arg_index].a.a_count_int_pointer = length; + break; + case TYPE_COUNT_LONGINT_POINTER: + *a.arg[dp->arg_index].a.a_count_longint_pointer = length; + break; +#if HAVE_LONG_LONG_INT + case TYPE_COUNT_LONGLONGINT_POINTER: + *a.arg[dp->arg_index].a.a_count_longlongint_pointer = length; + break; +#endif + default: + abort (); + } + } +#if ENABLE_UNISTDIO + /* The unistdio extensions. */ + else if (dp->conversion == 'U') + { + arg_type type = a.arg[dp->arg_index].type; + int flags = dp->flags; + int has_width; + size_t width; + int has_precision; + size_t precision; + + has_width = 0; + width = 0; + if (dp->width_start != dp->width_end) + { + if (dp->width_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->width_arg_index].a.a_int; + if (arg < 0) + { + /* "A negative field width is taken as a '-' flag + followed by a positive field width." */ + flags |= FLAG_LEFT; + width = (unsigned int) (-arg); + } + else + width = arg; + } + else + { + const FCHAR_T *digitp = dp->width_start; + + do + width = xsum (xtimes (width, 10), *digitp++ - '0'); + while (digitp != dp->width_end); + } + has_width = 1; + } + + has_precision = 0; + precision = 0; + if (dp->precision_start != dp->precision_end) + { + if (dp->precision_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->precision_arg_index].a.a_int; + /* "A negative precision is taken as if the precision + were omitted." */ + if (arg >= 0) + { + precision = arg; + has_precision = 1; + } + } + else + { + const FCHAR_T *digitp = dp->precision_start + 1; + + precision = 0; + while (digitp != dp->precision_end) + precision = xsum (xtimes (precision, 10), *digitp++ - '0'); + has_precision = 1; + } + } + + switch (type) + { + case TYPE_U8_STRING: + { + const uint8_t *arg = a.arg[dp->arg_index].a.a_u8_string; + const uint8_t *arg_end; + size_t characters; + + if (has_precision) + { + /* Use only PRECISION characters, from the left. */ + arg_end = arg; + characters = 0; + for (; precision > 0; precision--) + { + int count = u8_strmblen (arg_end); + if (count == 0) + break; + if (count < 0) + { + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EILSEQ; + return NULL; + } + arg_end += count; + characters++; + } + } + else if (has_width) + { + /* Use the entire string, and count the number of + characters. */ + arg_end = arg; + characters = 0; + for (;;) + { + int count = u8_strmblen (arg_end); + if (count == 0) + break; + if (count < 0) + { + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EILSEQ; + return NULL; + } + arg_end += count; + characters++; + } + } + else + { + /* Use the entire string. */ + arg_end = arg + u8_strlen (arg); + /* The number of characters doesn't matter. */ + characters = 0; + } + + if (has_width && width > characters + && !(dp->flags & FLAG_LEFT)) + { + size_t n = width - characters; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_SET (result + length, ' ', n); + length += n; + } + +# if DCHAR_IS_UINT8_T + { + size_t n = arg_end - arg; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_CPY (result + length, arg, n); + length += n; + } +# else + { /* Convert. */ + DCHAR_T *converted = result + length; + size_t converted_len = allocated - length; +# if DCHAR_IS_TCHAR + /* Convert from UTF-8 to locale encoding. */ + if (u8_conv_to_encoding (locale_charset (), + iconveh_question_mark, + arg, arg_end - arg, NULL, + &converted, &converted_len) + < 0) +# else + /* Convert from UTF-8 to UTF-16/UTF-32. */ + converted = + U8_TO_DCHAR (arg, arg_end - arg, + converted, &converted_len); + if (converted == NULL) +# endif + { + int saved_errno = errno; + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = saved_errno; + return NULL; + } + if (converted != result + length) + { + ENSURE_ALLOCATION (xsum (length, converted_len)); + DCHAR_CPY (result + length, converted, converted_len); + free (converted); + } + length += converted_len; + } +# endif + + if (has_width && width > characters + && (dp->flags & FLAG_LEFT)) + { + size_t n = width - characters; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_SET (result + length, ' ', n); + length += n; + } + } + break; + + case TYPE_U16_STRING: + { + const uint16_t *arg = a.arg[dp->arg_index].a.a_u16_string; + const uint16_t *arg_end; + size_t characters; + + if (has_precision) + { + /* Use only PRECISION characters, from the left. */ + arg_end = arg; + characters = 0; + for (; precision > 0; precision--) + { + int count = u16_strmblen (arg_end); + if (count == 0) + break; + if (count < 0) + { + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EILSEQ; + return NULL; + } + arg_end += count; + characters++; + } + } + else if (has_width) + { + /* Use the entire string, and count the number of + characters. */ + arg_end = arg; + characters = 0; + for (;;) + { + int count = u16_strmblen (arg_end); + if (count == 0) + break; + if (count < 0) + { + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EILSEQ; + return NULL; + } + arg_end += count; + characters++; + } + } + else + { + /* Use the entire string. */ + arg_end = arg + u16_strlen (arg); + /* The number of characters doesn't matter. */ + characters = 0; + } + + if (has_width && width > characters + && !(dp->flags & FLAG_LEFT)) + { + size_t n = width - characters; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_SET (result + length, ' ', n); + length += n; + } + +# if DCHAR_IS_UINT16_T + { + size_t n = arg_end - arg; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_CPY (result + length, arg, n); + length += n; + } +# else + { /* Convert. */ + DCHAR_T *converted = result + length; + size_t converted_len = allocated - length; +# if DCHAR_IS_TCHAR + /* Convert from UTF-16 to locale encoding. */ + if (u16_conv_to_encoding (locale_charset (), + iconveh_question_mark, + arg, arg_end - arg, NULL, + &converted, &converted_len) + < 0) +# else + /* Convert from UTF-16 to UTF-8/UTF-32. */ + converted = + U16_TO_DCHAR (arg, arg_end - arg, + converted, &converted_len); + if (converted == NULL) +# endif + { + int saved_errno = errno; + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = saved_errno; + return NULL; + } + if (converted != result + length) + { + ENSURE_ALLOCATION (xsum (length, converted_len)); + DCHAR_CPY (result + length, converted, converted_len); + free (converted); + } + length += converted_len; + } +# endif + + if (has_width && width > characters + && (dp->flags & FLAG_LEFT)) + { + size_t n = width - characters; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_SET (result + length, ' ', n); + length += n; + } + } + break; + + case TYPE_U32_STRING: + { + const uint32_t *arg = a.arg[dp->arg_index].a.a_u32_string; + const uint32_t *arg_end; + size_t characters; + + if (has_precision) + { + /* Use only PRECISION characters, from the left. */ + arg_end = arg; + characters = 0; + for (; precision > 0; precision--) + { + int count = u32_strmblen (arg_end); + if (count == 0) + break; + if (count < 0) + { + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EILSEQ; + return NULL; + } + arg_end += count; + characters++; + } + } + else if (has_width) + { + /* Use the entire string, and count the number of + characters. */ + arg_end = arg; + characters = 0; + for (;;) + { + int count = u32_strmblen (arg_end); + if (count == 0) + break; + if (count < 0) + { + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EILSEQ; + return NULL; + } + arg_end += count; + characters++; + } + } + else + { + /* Use the entire string. */ + arg_end = arg + u32_strlen (arg); + /* The number of characters doesn't matter. */ + characters = 0; + } + + if (has_width && width > characters + && !(dp->flags & FLAG_LEFT)) + { + size_t n = width - characters; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_SET (result + length, ' ', n); + length += n; + } + +# if DCHAR_IS_UINT32_T + { + size_t n = arg_end - arg; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_CPY (result + length, arg, n); + length += n; + } +# else + { /* Convert. */ + DCHAR_T *converted = result + length; + size_t converted_len = allocated - length; +# if DCHAR_IS_TCHAR + /* Convert from UTF-32 to locale encoding. */ + if (u32_conv_to_encoding (locale_charset (), + iconveh_question_mark, + arg, arg_end - arg, NULL, + &converted, &converted_len) + < 0) +# else + /* Convert from UTF-32 to UTF-8/UTF-16. */ + converted = + U32_TO_DCHAR (arg, arg_end - arg, + converted, &converted_len); + if (converted == NULL) +# endif + { + int saved_errno = errno; + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = saved_errno; + return NULL; + } + if (converted != result + length) + { + ENSURE_ALLOCATION (xsum (length, converted_len)); + DCHAR_CPY (result + length, converted, converted_len); + free (converted); + } + length += converted_len; + } +# endif + + if (has_width && width > characters + && (dp->flags & FLAG_LEFT)) + { + size_t n = width - characters; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_SET (result + length, ' ', n); + length += n; + } + } + break; + + default: + abort (); + } + } +#endif +#if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE) && !defined IN_LIBINTL + else if ((dp->conversion == 'a' || dp->conversion == 'A') +# if !(NEED_PRINTF_DIRECTIVE_A || (NEED_PRINTF_LONG_DOUBLE && NEED_PRINTF_DOUBLE)) + && (0 +# if NEED_PRINTF_DOUBLE + || a.arg[dp->arg_index].type == TYPE_DOUBLE +# endif +# if NEED_PRINTF_LONG_DOUBLE + || a.arg[dp->arg_index].type == TYPE_LONGDOUBLE +# endif + ) +# endif + ) + { + arg_type type = a.arg[dp->arg_index].type; + int flags = dp->flags; + int has_width; + size_t width; + int has_precision; + size_t precision; + size_t tmp_length; + DCHAR_T tmpbuf[700]; + DCHAR_T *tmp; + DCHAR_T *pad_ptr; + DCHAR_T *p; + + has_width = 0; + width = 0; + if (dp->width_start != dp->width_end) + { + if (dp->width_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->width_arg_index].a.a_int; + if (arg < 0) + { + /* "A negative field width is taken as a '-' flag + followed by a positive field width." */ + flags |= FLAG_LEFT; + width = (unsigned int) (-arg); + } + else + width = arg; + } + else + { + const FCHAR_T *digitp = dp->width_start; + + do + width = xsum (xtimes (width, 10), *digitp++ - '0'); + while (digitp != dp->width_end); + } + has_width = 1; + } + + has_precision = 0; + precision = 0; + if (dp->precision_start != dp->precision_end) + { + if (dp->precision_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->precision_arg_index].a.a_int; + /* "A negative precision is taken as if the precision + were omitted." */ + if (arg >= 0) + { + precision = arg; + has_precision = 1; + } + } + else + { + const FCHAR_T *digitp = dp->precision_start + 1; + + precision = 0; + while (digitp != dp->precision_end) + precision = xsum (xtimes (precision, 10), *digitp++ - '0'); + has_precision = 1; + } + } + + /* Allocate a temporary buffer of sufficient size. */ + if (type == TYPE_LONGDOUBLE) + tmp_length = + (unsigned int) ((LDBL_DIG + 1) + * 0.831 /* decimal -> hexadecimal */ + ) + + 1; /* turn floor into ceil */ + else + tmp_length = + (unsigned int) ((DBL_DIG + 1) + * 0.831 /* decimal -> hexadecimal */ + ) + + 1; /* turn floor into ceil */ + if (tmp_length < precision) + tmp_length = precision; + /* Account for sign, decimal point etc. */ + tmp_length = xsum (tmp_length, 12); + + if (tmp_length < width) + tmp_length = width; + + tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */ + + if (tmp_length <= sizeof (tmpbuf) / sizeof (DCHAR_T)) + tmp = tmpbuf; + else + { + size_t tmp_memsize = xtimes (tmp_length, sizeof (DCHAR_T)); + + if (size_overflow_p (tmp_memsize)) + /* Overflow, would lead to out of memory. */ + goto out_of_memory; + tmp = (DCHAR_T *) malloc (tmp_memsize); + if (tmp == NULL) + /* Out of memory. */ + goto out_of_memory; + } + + pad_ptr = NULL; + p = tmp; + if (type == TYPE_LONGDOUBLE) + { +# if NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE + long double arg = a.arg[dp->arg_index].a.a_longdouble; + + if (isnanl (arg)) + { + if (dp->conversion == 'A') + { + *p++ = 'N'; *p++ = 'A'; *p++ = 'N'; + } + else + { + *p++ = 'n'; *p++ = 'a'; *p++ = 'n'; + } + } + else + { + int sign = 0; + DECL_LONG_DOUBLE_ROUNDING + + BEGIN_LONG_DOUBLE_ROUNDING (); + + if (signbit (arg)) /* arg < 0.0L or negative zero */ + { + sign = -1; + arg = -arg; + } + + if (sign < 0) + *p++ = '-'; + else if (flags & FLAG_SHOWSIGN) + *p++ = '+'; + else if (flags & FLAG_SPACE) + *p++ = ' '; + + if (arg > 0.0L && arg + arg == arg) + { + if (dp->conversion == 'A') + { + *p++ = 'I'; *p++ = 'N'; *p++ = 'F'; + } + else + { + *p++ = 'i'; *p++ = 'n'; *p++ = 'f'; + } + } + else + { + int exponent; + long double mantissa; + + if (arg > 0.0L) + mantissa = printf_frexpl (arg, &exponent); + else + { + exponent = 0; + mantissa = 0.0L; + } + + if (has_precision + && precision < (unsigned int) ((LDBL_DIG + 1) * 0.831) + 1) + { + /* Round the mantissa. */ + long double tail = mantissa; + size_t q; + + for (q = precision; ; q--) + { + int digit = (int) tail; + tail -= digit; + if (q == 0) + { + if (digit & 1 ? tail >= 0.5L : tail > 0.5L) + tail = 1 - tail; + else + tail = - tail; + break; + } + tail *= 16.0L; + } + if (tail != 0.0L) + for (q = precision; q > 0; q--) + tail *= 0.0625L; + mantissa += tail; + } + + *p++ = '0'; + *p++ = dp->conversion - 'A' + 'X'; + pad_ptr = p; + { + int digit; + + digit = (int) mantissa; + mantissa -= digit; + *p++ = '0' + digit; + if ((flags & FLAG_ALT) + || mantissa > 0.0L || precision > 0) + { + *p++ = decimal_point_char (); + /* This loop terminates because we assume + that FLT_RADIX is a power of 2. */ + while (mantissa > 0.0L) + { + mantissa *= 16.0L; + digit = (int) mantissa; + mantissa -= digit; + *p++ = digit + + (digit < 10 + ? '0' + : dp->conversion - 10); + if (precision > 0) + precision--; + } + while (precision > 0) + { + *p++ = '0'; + precision--; + } + } + } + *p++ = dp->conversion - 'A' + 'P'; +# if WIDE_CHAR_VERSION + { + static const wchar_t decimal_format[] = + { '%', '+', 'd', '\0' }; + SNPRINTF (p, 6 + 1, decimal_format, exponent); + } + while (*p != '\0') + p++; +# else + if (sizeof (DCHAR_T) == 1) + { + sprintf ((char *) p, "%+d", exponent); + while (*p != '\0') + p++; + } + else + { + char expbuf[6 + 1]; + const char *ep; + sprintf (expbuf, "%+d", exponent); + for (ep = expbuf; (*p = *ep) != '\0'; ep++) + p++; + } +# endif + } + + END_LONG_DOUBLE_ROUNDING (); + } +# else + abort (); +# endif + } + else + { +# if NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_DOUBLE + double arg = a.arg[dp->arg_index].a.a_double; + + if (isnan (arg)) + { + if (dp->conversion == 'A') + { + *p++ = 'N'; *p++ = 'A'; *p++ = 'N'; + } + else + { + *p++ = 'n'; *p++ = 'a'; *p++ = 'n'; + } + } + else + { + int sign = 0; + + if (signbit (arg)) /* arg < 0.0 or negative zero */ + { + sign = -1; + arg = -arg; + } + + if (sign < 0) + *p++ = '-'; + else if (flags & FLAG_SHOWSIGN) + *p++ = '+'; + else if (flags & FLAG_SPACE) + *p++ = ' '; + + if (arg > 0.0 && arg + arg == arg) + { + if (dp->conversion == 'A') + { + *p++ = 'I'; *p++ = 'N'; *p++ = 'F'; + } + else + { + *p++ = 'i'; *p++ = 'n'; *p++ = 'f'; + } + } + else + { + int exponent; + double mantissa; + + if (arg > 0.0) + mantissa = printf_frexp (arg, &exponent); + else + { + exponent = 0; + mantissa = 0.0; + } + + if (has_precision + && precision < (unsigned int) ((DBL_DIG + 1) * 0.831) + 1) + { + /* Round the mantissa. */ + double tail = mantissa; + size_t q; + + for (q = precision; ; q--) + { + int digit = (int) tail; + tail -= digit; + if (q == 0) + { + if (digit & 1 ? tail >= 0.5 : tail > 0.5) + tail = 1 - tail; + else + tail = - tail; + break; + } + tail *= 16.0; + } + if (tail != 0.0) + for (q = precision; q > 0; q--) + tail *= 0.0625; + mantissa += tail; + } + + *p++ = '0'; + *p++ = dp->conversion - 'A' + 'X'; + pad_ptr = p; + { + int digit; + + digit = (int) mantissa; + mantissa -= digit; + *p++ = '0' + digit; + if ((flags & FLAG_ALT) + || mantissa > 0.0 || precision > 0) + { + *p++ = decimal_point_char (); + /* This loop terminates because we assume + that FLT_RADIX is a power of 2. */ + while (mantissa > 0.0) + { + mantissa *= 16.0; + digit = (int) mantissa; + mantissa -= digit; + *p++ = digit + + (digit < 10 + ? '0' + : dp->conversion - 10); + if (precision > 0) + precision--; + } + while (precision > 0) + { + *p++ = '0'; + precision--; + } + } + } + *p++ = dp->conversion - 'A' + 'P'; +# if WIDE_CHAR_VERSION + { + static const wchar_t decimal_format[] = + { '%', '+', 'd', '\0' }; + SNPRINTF (p, 6 + 1, decimal_format, exponent); + } + while (*p != '\0') + p++; +# else + if (sizeof (DCHAR_T) == 1) + { + sprintf ((char *) p, "%+d", exponent); + while (*p != '\0') + p++; + } + else + { + char expbuf[6 + 1]; + const char *ep; + sprintf (expbuf, "%+d", exponent); + for (ep = expbuf; (*p = *ep) != '\0'; ep++) + p++; + } +# endif + } + } +# else + abort (); +# endif + } + /* The generated string now extends from tmp to p, with the + zero padding insertion point being at pad_ptr. */ + if (has_width && p - tmp < width) + { + size_t pad = width - (p - tmp); + DCHAR_T *end = p + pad; + + if (flags & FLAG_LEFT) + { + /* Pad with spaces on the right. */ + for (; pad > 0; pad--) + *p++ = ' '; + } + else if ((flags & FLAG_ZERO) && pad_ptr != NULL) + { + /* Pad with zeroes. */ + DCHAR_T *q = end; + + while (p > pad_ptr) + *--q = *--p; + for (; pad > 0; pad--) + *p++ = '0'; + } + else + { + /* Pad with spaces on the left. */ + DCHAR_T *q = end; + + while (p > tmp) + *--q = *--p; + for (; pad > 0; pad--) + *p++ = ' '; + } + + p = end; + } + + { + size_t count = p - tmp; + + if (count >= tmp_length) + /* tmp_length was incorrectly calculated - fix the + code above! */ + abort (); + + /* Make room for the result. */ + if (count >= allocated - length) + { + size_t n = xsum (length, count); + + ENSURE_ALLOCATION (n); + } + + /* Append the result. */ + memcpy (result + length, tmp, count * sizeof (DCHAR_T)); + if (tmp != tmpbuf) + free (tmp); + length += count; + } + } +#endif +#if (NEED_PRINTF_INFINITE_DOUBLE || NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE || NEED_PRINTF_LONG_DOUBLE) && !defined IN_LIBINTL + else if ((dp->conversion == 'f' || dp->conversion == 'F' + || dp->conversion == 'e' || dp->conversion == 'E' + || dp->conversion == 'g' || dp->conversion == 'G' + || dp->conversion == 'a' || dp->conversion == 'A') + && (0 +# if NEED_PRINTF_DOUBLE + || a.arg[dp->arg_index].type == TYPE_DOUBLE +# elif NEED_PRINTF_INFINITE_DOUBLE + || (a.arg[dp->arg_index].type == TYPE_DOUBLE + /* The systems (mingw) which produce wrong output + for Inf, -Inf, and NaN also do so for -0.0. + Therefore we treat this case here as well. */ + && is_infinite_or_zero (a.arg[dp->arg_index].a.a_double)) +# endif +# if NEED_PRINTF_LONG_DOUBLE + || a.arg[dp->arg_index].type == TYPE_LONGDOUBLE +# elif NEED_PRINTF_INFINITE_LONG_DOUBLE + || (a.arg[dp->arg_index].type == TYPE_LONGDOUBLE + /* Some systems produce wrong output for Inf, + -Inf, and NaN. */ + && is_infinitel (a.arg[dp->arg_index].a.a_longdouble)) +# endif + )) + { +# if (NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE) && (NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE) + arg_type type = a.arg[dp->arg_index].type; +# endif + int flags = dp->flags; + int has_width; + size_t width; + int has_precision; + size_t precision; + size_t tmp_length; + DCHAR_T tmpbuf[700]; + DCHAR_T *tmp; + DCHAR_T *pad_ptr; + DCHAR_T *p; + + has_width = 0; + width = 0; + if (dp->width_start != dp->width_end) + { + if (dp->width_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->width_arg_index].a.a_int; + if (arg < 0) + { + /* "A negative field width is taken as a '-' flag + followed by a positive field width." */ + flags |= FLAG_LEFT; + width = (unsigned int) (-arg); + } + else + width = arg; + } + else + { + const FCHAR_T *digitp = dp->width_start; + + do + width = xsum (xtimes (width, 10), *digitp++ - '0'); + while (digitp != dp->width_end); + } + has_width = 1; + } + + has_precision = 0; + precision = 0; + if (dp->precision_start != dp->precision_end) + { + if (dp->precision_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->precision_arg_index].a.a_int; + /* "A negative precision is taken as if the precision + were omitted." */ + if (arg >= 0) + { + precision = arg; + has_precision = 1; + } + } + else + { + const FCHAR_T *digitp = dp->precision_start + 1; + + precision = 0; + while (digitp != dp->precision_end) + precision = xsum (xtimes (precision, 10), *digitp++ - '0'); + has_precision = 1; + } + } + + /* POSIX specifies the default precision to be 6 for %f, %F, + %e, %E, but not for %g, %G. Implementations appear to use + the same default precision also for %g, %G. */ + if (!has_precision) + precision = 6; + + /* Allocate a temporary buffer of sufficient size. */ +# if NEED_PRINTF_DOUBLE && NEED_PRINTF_LONG_DOUBLE + tmp_length = (type == TYPE_LONGDOUBLE ? LDBL_DIG + 1 : DBL_DIG + 1); +# elif NEED_PRINTF_INFINITE_DOUBLE && NEED_PRINTF_LONG_DOUBLE + tmp_length = (type == TYPE_LONGDOUBLE ? LDBL_DIG + 1 : 0); +# elif NEED_PRINTF_LONG_DOUBLE + tmp_length = LDBL_DIG + 1; +# elif NEED_PRINTF_DOUBLE + tmp_length = DBL_DIG + 1; +# else + tmp_length = 0; +# endif + if (tmp_length < precision) + tmp_length = precision; +# if NEED_PRINTF_LONG_DOUBLE +# if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE + if (type == TYPE_LONGDOUBLE) +# endif + if (dp->conversion == 'f' || dp->conversion == 'F') + { + long double arg = a.arg[dp->arg_index].a.a_longdouble; + if (!(isnanl (arg) || arg + arg == arg)) + { + /* arg is finite and nonzero. */ + int exponent = floorlog10l (arg < 0 ? -arg : arg); + if (exponent >= 0 && tmp_length < exponent + precision) + tmp_length = exponent + precision; + } + } +# endif +# if NEED_PRINTF_DOUBLE +# if NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE + if (type == TYPE_DOUBLE) +# endif + if (dp->conversion == 'f' || dp->conversion == 'F') + { + double arg = a.arg[dp->arg_index].a.a_double; + if (!(isnan (arg) || arg + arg == arg)) + { + /* arg is finite and nonzero. */ + int exponent = floorlog10 (arg < 0 ? -arg : arg); + if (exponent >= 0 && tmp_length < exponent + precision) + tmp_length = exponent + precision; + } + } +# endif + /* Account for sign, decimal point etc. */ + tmp_length = xsum (tmp_length, 12); + + if (tmp_length < width) + tmp_length = width; + + tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */ + + if (tmp_length <= sizeof (tmpbuf) / sizeof (DCHAR_T)) + tmp = tmpbuf; + else + { + size_t tmp_memsize = xtimes (tmp_length, sizeof (DCHAR_T)); + + if (size_overflow_p (tmp_memsize)) + /* Overflow, would lead to out of memory. */ + goto out_of_memory; + tmp = (DCHAR_T *) malloc (tmp_memsize); + if (tmp == NULL) + /* Out of memory. */ + goto out_of_memory; + } + + pad_ptr = NULL; + p = tmp; + +# if NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE +# if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE + if (type == TYPE_LONGDOUBLE) +# endif + { + long double arg = a.arg[dp->arg_index].a.a_longdouble; + + if (isnanl (arg)) + { + if (dp->conversion >= 'A' && dp->conversion <= 'Z') + { + *p++ = 'N'; *p++ = 'A'; *p++ = 'N'; + } + else + { + *p++ = 'n'; *p++ = 'a'; *p++ = 'n'; + } + } + else + { + int sign = 0; + DECL_LONG_DOUBLE_ROUNDING + + BEGIN_LONG_DOUBLE_ROUNDING (); + + if (signbit (arg)) /* arg < 0.0L or negative zero */ + { + sign = -1; + arg = -arg; + } + + if (sign < 0) + *p++ = '-'; + else if (flags & FLAG_SHOWSIGN) + *p++ = '+'; + else if (flags & FLAG_SPACE) + *p++ = ' '; + + if (arg > 0.0L && arg + arg == arg) + { + if (dp->conversion >= 'A' && dp->conversion <= 'Z') + { + *p++ = 'I'; *p++ = 'N'; *p++ = 'F'; + } + else + { + *p++ = 'i'; *p++ = 'n'; *p++ = 'f'; + } + } + else + { +# if NEED_PRINTF_LONG_DOUBLE + pad_ptr = p; + + if (dp->conversion == 'f' || dp->conversion == 'F') + { + char *digits; + size_t ndigits; + + digits = + scale10_round_decimal_long_double (arg, precision); + if (digits == NULL) + { + END_LONG_DOUBLE_ROUNDING (); + goto out_of_memory; + } + ndigits = strlen (digits); + + if (ndigits > precision) + do + { + --ndigits; + *p++ = digits[ndigits]; + } + while (ndigits > precision); + else + *p++ = '0'; + /* Here ndigits <= precision. */ + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + for (; precision > ndigits; precision--) + *p++ = '0'; + while (ndigits > 0) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + + free (digits); + } + else if (dp->conversion == 'e' || dp->conversion == 'E') + { + int exponent; + + if (arg == 0.0L) + { + exponent = 0; + *p++ = '0'; + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + for (; precision > 0; precision--) + *p++ = '0'; + } + } + else + { + /* arg > 0.0L. */ + int adjusted; + char *digits; + size_t ndigits; + + exponent = floorlog10l (arg); + adjusted = 0; + for (;;) + { + digits = + scale10_round_decimal_long_double (arg, + (int)precision - exponent); + if (digits == NULL) + { + END_LONG_DOUBLE_ROUNDING (); + goto out_of_memory; + } + ndigits = strlen (digits); + + if (ndigits == precision + 1) + break; + if (ndigits < precision + || ndigits > precision + 2) + /* The exponent was not guessed + precisely enough. */ + abort (); + if (adjusted) + /* None of two values of exponent is + the right one. Prevent an endless + loop. */ + abort (); + free (digits); + if (ndigits == precision) + exponent -= 1; + else + exponent += 1; + adjusted = 1; + } + + /* Here ndigits = precision+1. */ + *p++ = digits[--ndigits]; + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + while (ndigits > 0) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + + free (digits); + } + + *p++ = dp->conversion; /* 'e' or 'E' */ +# if WIDE_CHAR_VERSION + { + static const wchar_t decimal_format[] = + { '%', '+', '.', '2', 'd', '\0' }; + SNPRINTF (p, 6 + 1, decimal_format, exponent); + } + while (*p != '\0') + p++; +# else + if (sizeof (DCHAR_T) == 1) + { + sprintf ((char *) p, "%+.2d", exponent); + while (*p != '\0') + p++; + } + else + { + char expbuf[6 + 1]; + const char *ep; + sprintf (expbuf, "%+.2d", exponent); + for (ep = expbuf; (*p = *ep) != '\0'; ep++) + p++; + } +# endif + } + else if (dp->conversion == 'g' || dp->conversion == 'G') + { + if (precision == 0) + precision = 1; + /* precision >= 1. */ + + if (arg == 0.0L) + /* The exponent is 0, >= -4, < precision. + Use fixed-point notation. */ + { + size_t ndigits = precision; + /* Number of trailing zeroes that have to be + dropped. */ + size_t nzeroes = + (flags & FLAG_ALT ? 0 : precision - 1); + + --ndigits; + *p++ = '0'; + if ((flags & FLAG_ALT) || ndigits > nzeroes) + { + *p++ = decimal_point_char (); + while (ndigits > nzeroes) + { + --ndigits; + *p++ = '0'; + } + } + } + else + { + /* arg > 0.0L. */ + int exponent; + int adjusted; + char *digits; + size_t ndigits; + size_t nzeroes; + + exponent = floorlog10l (arg); + adjusted = 0; + for (;;) + { + digits = + scale10_round_decimal_long_double (arg, + (int)(precision - 1) - exponent); + if (digits == NULL) + { + END_LONG_DOUBLE_ROUNDING (); + goto out_of_memory; + } + ndigits = strlen (digits); + + if (ndigits == precision) + break; + if (ndigits < precision - 1 + || ndigits > precision + 1) + /* The exponent was not guessed + precisely enough. */ + abort (); + if (adjusted) + /* None of two values of exponent is + the right one. Prevent an endless + loop. */ + abort (); + free (digits); + if (ndigits < precision) + exponent -= 1; + else + exponent += 1; + adjusted = 1; + } + /* Here ndigits = precision. */ + + /* Determine the number of trailing zeroes + that have to be dropped. */ + nzeroes = 0; + if ((flags & FLAG_ALT) == 0) + while (nzeroes < ndigits + && digits[nzeroes] == '0') + nzeroes++; + + /* The exponent is now determined. */ + if (exponent >= -4 + && exponent < (long)precision) + { + /* Fixed-point notation: + max(exponent,0)+1 digits, then the + decimal point, then the remaining + digits without trailing zeroes. */ + if (exponent >= 0) + { + size_t count = exponent + 1; + /* Note: count <= precision = ndigits. */ + for (; count > 0; count--) + *p++ = digits[--ndigits]; + if ((flags & FLAG_ALT) || ndigits > nzeroes) + { + *p++ = decimal_point_char (); + while (ndigits > nzeroes) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + } + else + { + size_t count = -exponent - 1; + *p++ = '0'; + *p++ = decimal_point_char (); + for (; count > 0; count--) + *p++ = '0'; + while (ndigits > nzeroes) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + } + else + { + /* Exponential notation. */ + *p++ = digits[--ndigits]; + if ((flags & FLAG_ALT) || ndigits > nzeroes) + { + *p++ = decimal_point_char (); + while (ndigits > nzeroes) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + *p++ = dp->conversion - 'G' + 'E'; /* 'e' or 'E' */ +# if WIDE_CHAR_VERSION + { + static const wchar_t decimal_format[] = + { '%', '+', '.', '2', 'd', '\0' }; + SNPRINTF (p, 6 + 1, decimal_format, exponent); + } + while (*p != '\0') + p++; +# else + if (sizeof (DCHAR_T) == 1) + { + sprintf ((char *) p, "%+.2d", exponent); + while (*p != '\0') + p++; + } + else + { + char expbuf[6 + 1]; + const char *ep; + sprintf (expbuf, "%+.2d", exponent); + for (ep = expbuf; (*p = *ep) != '\0'; ep++) + p++; + } +# endif + } + + free (digits); + } + } + else + abort (); +# else + /* arg is finite. */ + abort (); +# endif + } + + END_LONG_DOUBLE_ROUNDING (); + } + } +# if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE + else +# endif +# endif +# if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE + { + double arg = a.arg[dp->arg_index].a.a_double; + + if (isnan (arg)) + { + if (dp->conversion >= 'A' && dp->conversion <= 'Z') + { + *p++ = 'N'; *p++ = 'A'; *p++ = 'N'; + } + else + { + *p++ = 'n'; *p++ = 'a'; *p++ = 'n'; + } + } + else + { + int sign = 0; + + if (signbit (arg)) /* arg < 0.0 or negative zero */ + { + sign = -1; + arg = -arg; + } + + if (sign < 0) + *p++ = '-'; + else if (flags & FLAG_SHOWSIGN) + *p++ = '+'; + else if (flags & FLAG_SPACE) + *p++ = ' '; + + if (arg > 0.0 && arg + arg == arg) + { + if (dp->conversion >= 'A' && dp->conversion <= 'Z') + { + *p++ = 'I'; *p++ = 'N'; *p++ = 'F'; + } + else + { + *p++ = 'i'; *p++ = 'n'; *p++ = 'f'; + } + } + else + { +# if NEED_PRINTF_DOUBLE + pad_ptr = p; + + if (dp->conversion == 'f' || dp->conversion == 'F') + { + char *digits; + size_t ndigits; + + digits = + scale10_round_decimal_double (arg, precision); + if (digits == NULL) + goto out_of_memory; + ndigits = strlen (digits); + + if (ndigits > precision) + do + { + --ndigits; + *p++ = digits[ndigits]; + } + while (ndigits > precision); + else + *p++ = '0'; + /* Here ndigits <= precision. */ + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + for (; precision > ndigits; precision--) + *p++ = '0'; + while (ndigits > 0) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + + free (digits); + } + else if (dp->conversion == 'e' || dp->conversion == 'E') + { + int exponent; + + if (arg == 0.0) + { + exponent = 0; + *p++ = '0'; + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + for (; precision > 0; precision--) + *p++ = '0'; + } + } + else + { + /* arg > 0.0. */ + int adjusted; + char *digits; + size_t ndigits; + + exponent = floorlog10 (arg); + adjusted = 0; + for (;;) + { + digits = + scale10_round_decimal_double (arg, + (int)precision - exponent); + if (digits == NULL) + goto out_of_memory; + ndigits = strlen (digits); + + if (ndigits == precision + 1) + break; + if (ndigits < precision + || ndigits > precision + 2) + /* The exponent was not guessed + precisely enough. */ + abort (); + if (adjusted) + /* None of two values of exponent is + the right one. Prevent an endless + loop. */ + abort (); + free (digits); + if (ndigits == precision) + exponent -= 1; + else + exponent += 1; + adjusted = 1; + } + + /* Here ndigits = precision+1. */ + *p++ = digits[--ndigits]; + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + while (ndigits > 0) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + + free (digits); + } + + *p++ = dp->conversion; /* 'e' or 'E' */ +# if WIDE_CHAR_VERSION + { + static const wchar_t decimal_format[] = + /* Produce the same number of exponent digits + as the native printf implementation. */ +# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + { '%', '+', '.', '3', 'd', '\0' }; +# else + { '%', '+', '.', '2', 'd', '\0' }; +# endif + SNPRINTF (p, 6 + 1, decimal_format, exponent); + } + while (*p != '\0') + p++; +# else + { + static const char decimal_format[] = + /* Produce the same number of exponent digits + as the native printf implementation. */ +# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + "%+.3d"; +# else + "%+.2d"; +# endif + if (sizeof (DCHAR_T) == 1) + { + sprintf ((char *) p, decimal_format, exponent); + while (*p != '\0') + p++; + } + else + { + char expbuf[6 + 1]; + const char *ep; + sprintf (expbuf, decimal_format, exponent); + for (ep = expbuf; (*p = *ep) != '\0'; ep++) + p++; + } + } +# endif + } + else if (dp->conversion == 'g' || dp->conversion == 'G') + { + if (precision == 0) + precision = 1; + /* precision >= 1. */ + + if (arg == 0.0) + /* The exponent is 0, >= -4, < precision. + Use fixed-point notation. */ + { + size_t ndigits = precision; + /* Number of trailing zeroes that have to be + dropped. */ + size_t nzeroes = + (flags & FLAG_ALT ? 0 : precision - 1); + + --ndigits; + *p++ = '0'; + if ((flags & FLAG_ALT) || ndigits > nzeroes) + { + *p++ = decimal_point_char (); + while (ndigits > nzeroes) + { + --ndigits; + *p++ = '0'; + } + } + } + else + { + /* arg > 0.0. */ + int exponent; + int adjusted; + char *digits; + size_t ndigits; + size_t nzeroes; + + exponent = floorlog10 (arg); + adjusted = 0; + for (;;) + { + digits = + scale10_round_decimal_double (arg, + (int)(precision - 1) - exponent); + if (digits == NULL) + goto out_of_memory; + ndigits = strlen (digits); + + if (ndigits == precision) + break; + if (ndigits < precision - 1 + || ndigits > precision + 1) + /* The exponent was not guessed + precisely enough. */ + abort (); + if (adjusted) + /* None of two values of exponent is + the right one. Prevent an endless + loop. */ + abort (); + free (digits); + if (ndigits < precision) + exponent -= 1; + else + exponent += 1; + adjusted = 1; + } + /* Here ndigits = precision. */ + + /* Determine the number of trailing zeroes + that have to be dropped. */ + nzeroes = 0; + if ((flags & FLAG_ALT) == 0) + while (nzeroes < ndigits + && digits[nzeroes] == '0') + nzeroes++; + + /* The exponent is now determined. */ + if (exponent >= -4 + && exponent < (long)precision) + { + /* Fixed-point notation: + max(exponent,0)+1 digits, then the + decimal point, then the remaining + digits without trailing zeroes. */ + if (exponent >= 0) + { + size_t count = exponent + 1; + /* Note: count <= precision = ndigits. */ + for (; count > 0; count--) + *p++ = digits[--ndigits]; + if ((flags & FLAG_ALT) || ndigits > nzeroes) + { + *p++ = decimal_point_char (); + while (ndigits > nzeroes) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + } + else + { + size_t count = -exponent - 1; + *p++ = '0'; + *p++ = decimal_point_char (); + for (; count > 0; count--) + *p++ = '0'; + while (ndigits > nzeroes) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + } + else + { + /* Exponential notation. */ + *p++ = digits[--ndigits]; + if ((flags & FLAG_ALT) || ndigits > nzeroes) + { + *p++ = decimal_point_char (); + while (ndigits > nzeroes) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + *p++ = dp->conversion - 'G' + 'E'; /* 'e' or 'E' */ +# if WIDE_CHAR_VERSION + { + static const wchar_t decimal_format[] = + /* Produce the same number of exponent digits + as the native printf implementation. */ +# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + { '%', '+', '.', '3', 'd', '\0' }; +# else + { '%', '+', '.', '2', 'd', '\0' }; +# endif + SNPRINTF (p, 6 + 1, decimal_format, exponent); + } + while (*p != '\0') + p++; +# else + { + static const char decimal_format[] = + /* Produce the same number of exponent digits + as the native printf implementation. */ +# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + "%+.3d"; +# else + "%+.2d"; +# endif + if (sizeof (DCHAR_T) == 1) + { + sprintf ((char *) p, decimal_format, exponent); + while (*p != '\0') + p++; + } + else + { + char expbuf[6 + 1]; + const char *ep; + sprintf (expbuf, decimal_format, exponent); + for (ep = expbuf; (*p = *ep) != '\0'; ep++) + p++; + } + } +# endif + } + + free (digits); + } + } + else + abort (); +# else + /* arg is finite. */ + if (!(arg == 0.0)) + abort (); + + pad_ptr = p; + + if (dp->conversion == 'f' || dp->conversion == 'F') + { + *p++ = '0'; + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + for (; precision > 0; precision--) + *p++ = '0'; + } + } + else if (dp->conversion == 'e' || dp->conversion == 'E') + { + *p++ = '0'; + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + for (; precision > 0; precision--) + *p++ = '0'; + } + *p++ = dp->conversion; /* 'e' or 'E' */ + *p++ = '+'; + /* Produce the same number of exponent digits as + the native printf implementation. */ +# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + *p++ = '0'; +# endif + *p++ = '0'; + *p++ = '0'; + } + else if (dp->conversion == 'g' || dp->conversion == 'G') + { + *p++ = '0'; + if (flags & FLAG_ALT) + { + size_t ndigits = + (precision > 0 ? precision - 1 : 0); + *p++ = decimal_point_char (); + for (; ndigits > 0; --ndigits) + *p++ = '0'; + } + } + else + abort (); +# endif + } + } + } +# endif + + /* The generated string now extends from tmp to p, with the + zero padding insertion point being at pad_ptr. */ + if (has_width && p - tmp < width) + { + size_t pad = width - (p - tmp); + DCHAR_T *end = p + pad; + + if (flags & FLAG_LEFT) + { + /* Pad with spaces on the right. */ + for (; pad > 0; pad--) + *p++ = ' '; + } + else if ((flags & FLAG_ZERO) && pad_ptr != NULL) + { + /* Pad with zeroes. */ + DCHAR_T *q = end; + + while (p > pad_ptr) + *--q = *--p; + for (; pad > 0; pad--) + *p++ = '0'; + } + else + { + /* Pad with spaces on the left. */ + DCHAR_T *q = end; + + while (p > tmp) + *--q = *--p; + for (; pad > 0; pad--) + *p++ = ' '; + } + + p = end; + } + + { + size_t count = p - tmp; + + if (count >= tmp_length) + /* tmp_length was incorrectly calculated - fix the + code above! */ + abort (); + + /* Make room for the result. */ + if (count >= allocated - length) + { + size_t n = xsum (length, count); + + ENSURE_ALLOCATION (n); + } + + /* Append the result. */ + memcpy (result + length, tmp, count * sizeof (DCHAR_T)); + if (tmp != tmpbuf) + free (tmp); + length += count; + } + } +#endif + else + { + arg_type type = a.arg[dp->arg_index].type; + int flags = dp->flags; +#if !USE_SNPRINTF || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION + int has_width; + size_t width; +#endif +#if !USE_SNPRINTF || NEED_PRINTF_UNBOUNDED_PRECISION + int has_precision; + size_t precision; +#endif +#if NEED_PRINTF_UNBOUNDED_PRECISION + int prec_ourselves; +#else +# define prec_ourselves 0 +#endif +#if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION + int pad_ourselves; +#else +# define pad_ourselves 0 +#endif + TCHAR_T *fbp; + unsigned int prefix_count; + int prefixes[2]; +#if !USE_SNPRINTF + size_t tmp_length; + TCHAR_T tmpbuf[700]; + TCHAR_T *tmp; +#endif + +#if !USE_SNPRINTF || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION + has_width = 0; + width = 0; + if (dp->width_start != dp->width_end) + { + if (dp->width_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->width_arg_index].a.a_int; + if (arg < 0) + { + /* "A negative field width is taken as a '-' flag + followed by a positive field width." */ + flags |= FLAG_LEFT; + width = (unsigned int) (-arg); + } + else + width = arg; + } + else + { + const FCHAR_T *digitp = dp->width_start; + + do + width = xsum (xtimes (width, 10), *digitp++ - '0'); + while (digitp != dp->width_end); + } + has_width = 1; + } +#endif + +#if !USE_SNPRINTF || NEED_PRINTF_UNBOUNDED_PRECISION + has_precision = 0; + precision = 6; + if (dp->precision_start != dp->precision_end) + { + if (dp->precision_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->precision_arg_index].a.a_int; + /* "A negative precision is taken as if the precision + were omitted." */ + if (arg >= 0) + { + precision = arg; + has_precision = 1; + } + } + else + { + const FCHAR_T *digitp = dp->precision_start + 1; + + precision = 0; + while (digitp != dp->precision_end) + precision = xsum (xtimes (precision, 10), *digitp++ - '0'); + has_precision = 1; + } + } +#endif + +#if !USE_SNPRINTF + /* Allocate a temporary buffer of sufficient size for calling + sprintf. */ + { + switch (dp->conversion) + { + + case 'd': case 'i': case 'u': +# if HAVE_LONG_LONG_INT + if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT) + tmp_length = + (unsigned int) (sizeof (unsigned long long) * CHAR_BIT + * 0.30103 /* binary -> decimal */ + ) + + 1; /* turn floor into ceil */ + else +# endif + if (type == TYPE_LONGINT || type == TYPE_ULONGINT) + tmp_length = + (unsigned int) (sizeof (unsigned long) * CHAR_BIT + * 0.30103 /* binary -> decimal */ + ) + + 1; /* turn floor into ceil */ + else + tmp_length = + (unsigned int) (sizeof (unsigned int) * CHAR_BIT + * 0.30103 /* binary -> decimal */ + ) + + 1; /* turn floor into ceil */ + if (tmp_length < precision) + tmp_length = precision; + /* Multiply by 2, as an estimate for FLAG_GROUP. */ + tmp_length = xsum (tmp_length, tmp_length); + /* Add 1, to account for a leading sign. */ + tmp_length = xsum (tmp_length, 1); + break; + + case 'o': +# if HAVE_LONG_LONG_INT + if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT) + tmp_length = + (unsigned int) (sizeof (unsigned long long) * CHAR_BIT + * 0.333334 /* binary -> octal */ + ) + + 1; /* turn floor into ceil */ + else +# endif + if (type == TYPE_LONGINT || type == TYPE_ULONGINT) + tmp_length = + (unsigned int) (sizeof (unsigned long) * CHAR_BIT + * 0.333334 /* binary -> octal */ + ) + + 1; /* turn floor into ceil */ + else + tmp_length = + (unsigned int) (sizeof (unsigned int) * CHAR_BIT + * 0.333334 /* binary -> octal */ + ) + + 1; /* turn floor into ceil */ + if (tmp_length < precision) + tmp_length = precision; + /* Add 1, to account for a leading sign. */ + tmp_length = xsum (tmp_length, 1); + break; + + case 'x': case 'X': +# if HAVE_LONG_LONG_INT + if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT) + tmp_length = + (unsigned int) (sizeof (unsigned long long) * CHAR_BIT + * 0.25 /* binary -> hexadecimal */ + ) + + 1; /* turn floor into ceil */ + else +# endif + if (type == TYPE_LONGINT || type == TYPE_ULONGINT) + tmp_length = + (unsigned int) (sizeof (unsigned long) * CHAR_BIT + * 0.25 /* binary -> hexadecimal */ + ) + + 1; /* turn floor into ceil */ + else + tmp_length = + (unsigned int) (sizeof (unsigned int) * CHAR_BIT + * 0.25 /* binary -> hexadecimal */ + ) + + 1; /* turn floor into ceil */ + if (tmp_length < precision) + tmp_length = precision; + /* Add 2, to account for a leading sign or alternate form. */ + tmp_length = xsum (tmp_length, 2); + break; + + case 'f': case 'F': + if (type == TYPE_LONGDOUBLE) + tmp_length = + (unsigned int) (LDBL_MAX_EXP + * 0.30103 /* binary -> decimal */ + * 2 /* estimate for FLAG_GROUP */ + ) + + 1 /* turn floor into ceil */ + + 10; /* sign, decimal point etc. */ + else + tmp_length = + (unsigned int) (DBL_MAX_EXP + * 0.30103 /* binary -> decimal */ + * 2 /* estimate for FLAG_GROUP */ + ) + + 1 /* turn floor into ceil */ + + 10; /* sign, decimal point etc. */ + tmp_length = xsum (tmp_length, precision); + break; + + case 'e': case 'E': case 'g': case 'G': + tmp_length = + 12; /* sign, decimal point, exponent etc. */ + tmp_length = xsum (tmp_length, precision); + break; + + case 'a': case 'A': + if (type == TYPE_LONGDOUBLE) + tmp_length = + (unsigned int) (LDBL_DIG + * 0.831 /* decimal -> hexadecimal */ + ) + + 1; /* turn floor into ceil */ + else + tmp_length = + (unsigned int) (DBL_DIG + * 0.831 /* decimal -> hexadecimal */ + ) + + 1; /* turn floor into ceil */ + if (tmp_length < precision) + tmp_length = precision; + /* Account for sign, decimal point etc. */ + tmp_length = xsum (tmp_length, 12); + break; + + case 'c': +# if HAVE_WINT_T && !WIDE_CHAR_VERSION + if (type == TYPE_WIDE_CHAR) + tmp_length = MB_CUR_MAX; + else +# endif + tmp_length = 1; + break; + + case 's': +# if HAVE_WCHAR_T + if (type == TYPE_WIDE_STRING) + { + tmp_length = + local_wcslen (a.arg[dp->arg_index].a.a_wide_string); + +# if !WIDE_CHAR_VERSION + tmp_length = xtimes (tmp_length, MB_CUR_MAX); +# endif + } + else +# endif + tmp_length = strlen (a.arg[dp->arg_index].a.a_string); + break; + + case 'p': + tmp_length = + (unsigned int) (sizeof (void *) * CHAR_BIT + * 0.25 /* binary -> hexadecimal */ + ) + + 1 /* turn floor into ceil */ + + 2; /* account for leading 0x */ + break; + + default: + abort (); + } + +# if ENABLE_UNISTDIO + /* Padding considers the number of characters, therefore the + number of elements after padding may be + > max (tmp_length, width) + but is certainly + <= tmp_length + width. */ + tmp_length = xsum (tmp_length, width); +# else + /* Padding considers the number of elements, says POSIX. */ + if (tmp_length < width) + tmp_length = width; +# endif + + tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */ + } + + if (tmp_length <= sizeof (tmpbuf) / sizeof (TCHAR_T)) + tmp = tmpbuf; + else + { + size_t tmp_memsize = xtimes (tmp_length, sizeof (TCHAR_T)); + + if (size_overflow_p (tmp_memsize)) + /* Overflow, would lead to out of memory. */ + goto out_of_memory; + tmp = (TCHAR_T *) malloc (tmp_memsize); + if (tmp == NULL) + /* Out of memory. */ + goto out_of_memory; + } +#endif + + /* Decide whether to handle the precision ourselves. */ +#if NEED_PRINTF_UNBOUNDED_PRECISION + switch (dp->conversion) + { + case 'd': case 'i': case 'u': + case 'o': + case 'x': case 'X': case 'p': + prec_ourselves = has_precision && (precision > 0); + break; + default: + prec_ourselves = 0; + break; + } +#endif + + /* Decide whether to perform the padding ourselves. */ +#if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION + switch (dp->conversion) + { +# if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO + /* If we need conversion from TCHAR_T[] to DCHAR_T[], we need + to perform the padding after this conversion. Functions + with unistdio extensions perform the padding based on + character count rather than element count. */ + case 'c': case 's': +# endif +# if NEED_PRINTF_FLAG_ZERO + case 'f': case 'F': case 'e': case 'E': case 'g': case 'G': + case 'a': case 'A': +# endif + pad_ourselves = 1; + break; + default: + pad_ourselves = prec_ourselves; + break; + } +#endif + + /* Construct the format string for calling snprintf or + sprintf. */ + fbp = buf; + *fbp++ = '%'; +#if NEED_PRINTF_FLAG_GROUPING + /* The underlying implementation doesn't support the ' flag. + Produce no grouping characters in this case; this is + acceptable because the grouping is locale dependent. */ +#else + if (flags & FLAG_GROUP) + *fbp++ = '\''; +#endif + if (flags & FLAG_LEFT) + *fbp++ = '-'; + if (flags & FLAG_SHOWSIGN) + *fbp++ = '+'; + if (flags & FLAG_SPACE) + *fbp++ = ' '; + if (flags & FLAG_ALT) + *fbp++ = '#'; + if (!pad_ourselves) + { + if (flags & FLAG_ZERO) + *fbp++ = '0'; + if (dp->width_start != dp->width_end) + { + size_t n = dp->width_end - dp->width_start; + /* The width specification is known to consist only + of standard ASCII characters. */ + if (sizeof (FCHAR_T) == sizeof (TCHAR_T)) + { + memcpy (fbp, dp->width_start, n * sizeof (TCHAR_T)); + fbp += n; + } + else + { + const FCHAR_T *mp = dp->width_start; + do + *fbp++ = (unsigned char) *mp++; + while (--n > 0); + } + } + } + if (!prec_ourselves) + { + if (dp->precision_start != dp->precision_end) + { + size_t n = dp->precision_end - dp->precision_start; + /* The precision specification is known to consist only + of standard ASCII characters. */ + if (sizeof (FCHAR_T) == sizeof (TCHAR_T)) + { + memcpy (fbp, dp->precision_start, n * sizeof (TCHAR_T)); + fbp += n; + } + else + { + const FCHAR_T *mp = dp->precision_start; + do + *fbp++ = (unsigned char) *mp++; + while (--n > 0); + } + } + } + + switch (type) + { +#if HAVE_LONG_LONG_INT + case TYPE_LONGLONGINT: + case TYPE_ULONGLONGINT: +# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + *fbp++ = 'I'; + *fbp++ = '6'; + *fbp++ = '4'; + break; +# else + *fbp++ = 'l'; + /*FALLTHROUGH*/ +# endif +#endif + case TYPE_LONGINT: + case TYPE_ULONGINT: +#if HAVE_WINT_T + case TYPE_WIDE_CHAR: +#endif +#if HAVE_WCHAR_T + case TYPE_WIDE_STRING: +#endif + *fbp++ = 'l'; + break; + case TYPE_LONGDOUBLE: + *fbp++ = 'L'; + break; + default: + break; + } +#if NEED_PRINTF_DIRECTIVE_F + if (dp->conversion == 'F') + *fbp = 'f'; + else +#endif + *fbp = dp->conversion; +#if USE_SNPRINTF +# if !(__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)) + fbp[1] = '%'; + fbp[2] = 'n'; + fbp[3] = '\0'; +# else + /* On glibc2 systems from glibc >= 2.3 - probably also older + ones - we know that snprintf's returns value conforms to + ISO C 99: the gl_SNPRINTF_DIRECTIVE_N test passes. + Therefore we can avoid using %n in this situation. + On glibc2 systems from 2004-10-18 or newer, the use of %n + in format strings in writable memory may crash the program + (if compiled with _FORTIFY_SOURCE=2), so we should avoid it + in this situation. */ + fbp[1] = '\0'; +# endif +#else + fbp[1] = '\0'; +#endif + + /* Construct the arguments for calling snprintf or sprintf. */ + prefix_count = 0; + if (!pad_ourselves && dp->width_arg_index != ARG_NONE) + { + if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) + abort (); + prefixes[prefix_count++] = a.arg[dp->width_arg_index].a.a_int; + } + if (dp->precision_arg_index != ARG_NONE) + { + if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) + abort (); + prefixes[prefix_count++] = a.arg[dp->precision_arg_index].a.a_int; + } + +#if USE_SNPRINTF + /* The SNPRINTF result is appended after result[0..length]. + The latter is an array of DCHAR_T; SNPRINTF appends an + array of TCHAR_T to it. This is possible because + sizeof (TCHAR_T) divides sizeof (DCHAR_T) and + alignof (TCHAR_T) <= alignof (DCHAR_T). */ +# define TCHARS_PER_DCHAR (sizeof (DCHAR_T) / sizeof (TCHAR_T)) + /* Prepare checking whether snprintf returns the count + via %n. */ + ENSURE_ALLOCATION (xsum (length, 1)); + *(TCHAR_T *) (result + length) = '\0'; +#endif + + for (;;) + { + int count = -1; + +#if USE_SNPRINTF + int retcount = 0; + size_t maxlen = allocated - length; + /* SNPRINTF can fail if its second argument is + > INT_MAX. */ + if (maxlen > INT_MAX / TCHARS_PER_DCHAR) + maxlen = INT_MAX / TCHARS_PER_DCHAR; + maxlen = maxlen * TCHARS_PER_DCHAR; +# define SNPRINTF_BUF(arg) \ + switch (prefix_count) \ + { \ + case 0: \ + retcount = SNPRINTF ((TCHAR_T *) (result + length), \ + maxlen, buf, \ + arg, &count); \ + break; \ + case 1: \ + retcount = SNPRINTF ((TCHAR_T *) (result + length), \ + maxlen, buf, \ + prefixes[0], arg, &count); \ + break; \ + case 2: \ + retcount = SNPRINTF ((TCHAR_T *) (result + length), \ + maxlen, buf, \ + prefixes[0], prefixes[1], arg, \ + &count); \ + break; \ + default: \ + abort (); \ + } +#else +# define SNPRINTF_BUF(arg) \ + switch (prefix_count) \ + { \ + case 0: \ + count = sprintf (tmp, buf, arg); \ + break; \ + case 1: \ + count = sprintf (tmp, buf, prefixes[0], arg); \ + break; \ + case 2: \ + count = sprintf (tmp, buf, prefixes[0], prefixes[1],\ + arg); \ + break; \ + default: \ + abort (); \ + } +#endif + + switch (type) + { + case TYPE_SCHAR: + { + int arg = a.arg[dp->arg_index].a.a_schar; + SNPRINTF_BUF (arg); + } + break; + case TYPE_UCHAR: + { + unsigned int arg = a.arg[dp->arg_index].a.a_uchar; + SNPRINTF_BUF (arg); + } + break; + case TYPE_SHORT: + { + int arg = a.arg[dp->arg_index].a.a_short; + SNPRINTF_BUF (arg); + } + break; + case TYPE_USHORT: + { + unsigned int arg = a.arg[dp->arg_index].a.a_ushort; + SNPRINTF_BUF (arg); + } + break; + case TYPE_INT: + { + int arg = a.arg[dp->arg_index].a.a_int; + SNPRINTF_BUF (arg); + } + break; + case TYPE_UINT: + { + unsigned int arg = a.arg[dp->arg_index].a.a_uint; + SNPRINTF_BUF (arg); + } + break; + case TYPE_LONGINT: + { + long int arg = a.arg[dp->arg_index].a.a_longint; + SNPRINTF_BUF (arg); + } + break; + case TYPE_ULONGINT: + { + unsigned long int arg = a.arg[dp->arg_index].a.a_ulongint; + SNPRINTF_BUF (arg); + } + break; +#if HAVE_LONG_LONG_INT + case TYPE_LONGLONGINT: + { + long long int arg = a.arg[dp->arg_index].a.a_longlongint; + SNPRINTF_BUF (arg); + } + break; + case TYPE_ULONGLONGINT: + { + unsigned long long int arg = a.arg[dp->arg_index].a.a_ulonglongint; + SNPRINTF_BUF (arg); + } + break; +#endif + case TYPE_DOUBLE: + { + double arg = a.arg[dp->arg_index].a.a_double; + SNPRINTF_BUF (arg); + } + break; + case TYPE_LONGDOUBLE: + { + long double arg = a.arg[dp->arg_index].a.a_longdouble; + SNPRINTF_BUF (arg); + } + break; + case TYPE_CHAR: + { + int arg = a.arg[dp->arg_index].a.a_char; + SNPRINTF_BUF (arg); + } + break; +#if HAVE_WINT_T + case TYPE_WIDE_CHAR: + { + wint_t arg = a.arg[dp->arg_index].a.a_wide_char; + SNPRINTF_BUF (arg); + } + break; +#endif + case TYPE_STRING: + { + const char *arg = a.arg[dp->arg_index].a.a_string; + SNPRINTF_BUF (arg); + } + break; +#if HAVE_WCHAR_T + case TYPE_WIDE_STRING: + { + const wchar_t *arg = a.arg[dp->arg_index].a.a_wide_string; + SNPRINTF_BUF (arg); + } + break; +#endif + case TYPE_POINTER: + { + void *arg = a.arg[dp->arg_index].a.a_pointer; + SNPRINTF_BUF (arg); + } + break; + default: + abort (); + } + +#if USE_SNPRINTF + /* Portability: Not all implementations of snprintf() + are ISO C 99 compliant. Determine the number of + bytes that snprintf() has produced or would have + produced. */ + if (count >= 0) + { + /* Verify that snprintf() has NUL-terminated its + result. */ + if (count < maxlen + && ((TCHAR_T *) (result + length)) [count] != '\0') + abort (); + /* Portability hack. */ + if (retcount > count) + count = retcount; + } + else + { + /* snprintf() doesn't understand the '%n' + directive. */ + if (fbp[1] != '\0') + { + /* Don't use the '%n' directive; instead, look + at the snprintf() return value. */ + fbp[1] = '\0'; + continue; + } + else + { + /* Look at the snprintf() return value. */ + if (retcount < 0) + { + /* HP-UX 10.20 snprintf() is doubly deficient: + It doesn't understand the '%n' directive, + *and* it returns -1 (rather than the length + that would have been required) when the + buffer is too small. */ + size_t bigger_need = + xsum (xtimes (allocated, 2), 12); + ENSURE_ALLOCATION (bigger_need); + continue; + } + else + count = retcount; + } + } +#endif + + /* Attempt to handle failure. */ + if (count < 0) + { + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EINVAL; + return NULL; + } + +#if USE_SNPRINTF + /* Handle overflow of the allocated buffer. + If such an overflow occurs, a C99 compliant snprintf() + returns a count >= maxlen. However, a non-compliant + snprintf() function returns only count = maxlen - 1. To + cover both cases, test whether count >= maxlen - 1. */ + if ((unsigned int) count + 1 >= maxlen) + { + /* If maxlen already has attained its allowed maximum, + allocating more memory will not increase maxlen. + Instead of looping, bail out. */ + if (maxlen == INT_MAX / TCHARS_PER_DCHAR) + goto overflow; + else + { + /* Need at least count * sizeof (TCHAR_T) bytes. + But allocate proportionally, to avoid looping + eternally if snprintf() reports a too small + count. */ + size_t n = + xmax (xsum (length, + (count + TCHARS_PER_DCHAR - 1) + / TCHARS_PER_DCHAR), + xtimes (allocated, 2)); + + ENSURE_ALLOCATION (n); + continue; + } + } +#endif + +#if NEED_PRINTF_UNBOUNDED_PRECISION + if (prec_ourselves) + { + /* Handle the precision. */ + TCHAR_T *prec_ptr = +# if USE_SNPRINTF + (TCHAR_T *) (result + length); +# else + tmp; +# endif + size_t prefix_count; + size_t move; + + prefix_count = 0; + /* Put the additional zeroes after the sign. */ + if (count >= 1 + && (*prec_ptr == '-' || *prec_ptr == '+' + || *prec_ptr == ' ')) + prefix_count = 1; + /* Put the additional zeroes after the 0x prefix if + (flags & FLAG_ALT) || (dp->conversion == 'p'). */ + else if (count >= 2 + && prec_ptr[0] == '0' + && (prec_ptr[1] == 'x' || prec_ptr[1] == 'X')) + prefix_count = 2; + + move = count - prefix_count; + if (precision > move) + { + /* Insert zeroes. */ + size_t insert = precision - move; + TCHAR_T *prec_end; + +# if USE_SNPRINTF + size_t n = + xsum (length, + (count + insert + TCHARS_PER_DCHAR - 1) + / TCHARS_PER_DCHAR); + length += (count + TCHARS_PER_DCHAR - 1) / TCHARS_PER_DCHAR; + ENSURE_ALLOCATION (n); + length -= (count + TCHARS_PER_DCHAR - 1) / TCHARS_PER_DCHAR; + prec_ptr = (TCHAR_T *) (result + length); +# endif + + prec_end = prec_ptr + count; + prec_ptr += prefix_count; + + while (prec_end > prec_ptr) + { + prec_end--; + prec_end[insert] = prec_end[0]; + } + + prec_end += insert; + do + *--prec_end = '0'; + while (prec_end > prec_ptr); + + count += insert; + } + } +#endif + +#if !DCHAR_IS_TCHAR +# if !USE_SNPRINTF + if (count >= tmp_length) + /* tmp_length was incorrectly calculated - fix the + code above! */ + abort (); +# endif + + /* Convert from TCHAR_T[] to DCHAR_T[]. */ + if (dp->conversion == 'c' || dp->conversion == 's') + { + /* type = TYPE_CHAR or TYPE_WIDE_CHAR or TYPE_STRING + TYPE_WIDE_STRING. + The result string is not certainly ASCII. */ + const TCHAR_T *tmpsrc; + DCHAR_T *tmpdst; + size_t tmpdst_len; + /* This code assumes that TCHAR_T is 'char'. */ + typedef int TCHAR_T_verify + [2 * (sizeof (TCHAR_T) == 1) - 1]; +# if USE_SNPRINTF + tmpsrc = (TCHAR_T *) (result + length); +# else + tmpsrc = tmp; +# endif + tmpdst = NULL; + tmpdst_len = 0; + if (DCHAR_CONV_FROM_ENCODING (locale_charset (), + iconveh_question_mark, + tmpsrc, count, + NULL, + &tmpdst, &tmpdst_len) + < 0) + { + int saved_errno = errno; + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = saved_errno; + return NULL; + } + ENSURE_ALLOCATION (xsum (length, tmpdst_len)); + DCHAR_CPY (result + length, tmpdst, tmpdst_len); + free (tmpdst); + count = tmpdst_len; + } + else + { + /* The result string is ASCII. + Simple 1:1 conversion. */ +# if USE_SNPRINTF + /* If sizeof (DCHAR_T) == sizeof (TCHAR_T), it's a + no-op conversion, in-place on the array starting + at (result + length). */ + if (sizeof (DCHAR_T) != sizeof (TCHAR_T)) +# endif + { + const TCHAR_T *tmpsrc; + DCHAR_T *tmpdst; + size_t n; + +# if USE_SNPRINTF + if (result == resultbuf) + { + tmpsrc = (TCHAR_T *) (result + length); + /* ENSURE_ALLOCATION will not move tmpsrc + (because it's part of resultbuf). */ + ENSURE_ALLOCATION (xsum (length, count)); + } + else + { + /* ENSURE_ALLOCATION will move the array + (because it uses realloc(). */ + ENSURE_ALLOCATION (xsum (length, count)); + tmpsrc = (TCHAR_T *) (result + length); + } +# else + tmpsrc = tmp; + ENSURE_ALLOCATION (xsum (length, count)); +# endif + tmpdst = result + length; + /* Copy backwards, because of overlapping. */ + tmpsrc += count; + tmpdst += count; + for (n = count; n > 0; n--) + *--tmpdst = (unsigned char) *--tmpsrc; + } + } +#endif + +#if DCHAR_IS_TCHAR && !USE_SNPRINTF + /* Make room for the result. */ + if (count > allocated - length) + { + /* Need at least count elements. But allocate + proportionally. */ + size_t n = + xmax (xsum (length, count), xtimes (allocated, 2)); + + ENSURE_ALLOCATION (n); + } +#endif + + /* Here count <= allocated - length. */ + + /* Perform padding. */ +#if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION + if (pad_ourselves && has_width) + { + size_t w; +# if ENABLE_UNISTDIO + /* Outside POSIX, it's preferrable to compare the width + against the number of _characters_ of the converted + value. */ + w = DCHAR_MBSNLEN (result + length, count); +# else + /* The width is compared against the number of _bytes_ + of the converted value, says POSIX. */ + w = count; +# endif + if (w < width) + { + size_t pad = width - w; +# if USE_SNPRINTF + /* Make room for the result. */ + if (xsum (count, pad) > allocated - length) + { + /* Need at least count + pad elements. But + allocate proportionally. */ + size_t n = + xmax (xsum3 (length, count, pad), + xtimes (allocated, 2)); + + length += count; + ENSURE_ALLOCATION (n); + length -= count; + } + /* Here count + pad <= allocated - length. */ +# endif + { +# if !DCHAR_IS_TCHAR || USE_SNPRINTF + DCHAR_T * const rp = result + length; +# else + DCHAR_T * const rp = tmp; +# endif + DCHAR_T *p = rp + count; + DCHAR_T *end = p + pad; +# if NEED_PRINTF_FLAG_ZERO + DCHAR_T *pad_ptr; +# if !DCHAR_IS_TCHAR + if (dp->conversion == 'c' + || dp->conversion == 's') + /* No zero-padding for string directives. */ + pad_ptr = NULL; + else +# endif + { + pad_ptr = (*rp == '-' ? rp + 1 : rp); + /* No zero-padding of "inf" and "nan". */ + if ((*pad_ptr >= 'A' && *pad_ptr <= 'Z') + || (*pad_ptr >= 'a' && *pad_ptr <= 'z')) + pad_ptr = NULL; + } +# endif + /* The generated string now extends from rp to p, + with the zero padding insertion point being at + pad_ptr. */ + + count = count + pad; /* = end - rp */ + + if (flags & FLAG_LEFT) + { + /* Pad with spaces on the right. */ + for (; pad > 0; pad--) + *p++ = ' '; + } +# if NEED_PRINTF_FLAG_ZERO + else if ((flags & FLAG_ZERO) && pad_ptr != NULL) + { + /* Pad with zeroes. */ + DCHAR_T *q = end; + + while (p > pad_ptr) + *--q = *--p; + for (; pad > 0; pad--) + *p++ = '0'; + } +# endif + else + { + /* Pad with spaces on the left. */ + DCHAR_T *q = end; + + while (p > rp) + *--q = *--p; + for (; pad > 0; pad--) + *p++ = ' '; + } + } + } + } +#endif + +#if DCHAR_IS_TCHAR && !USE_SNPRINTF + if (count >= tmp_length) + /* tmp_length was incorrectly calculated - fix the + code above! */ + abort (); +#endif + + /* Here still count <= allocated - length. */ + +#if !DCHAR_IS_TCHAR || USE_SNPRINTF + /* The snprintf() result did fit. */ +#else + /* Append the sprintf() result. */ + memcpy (result + length, tmp, count * sizeof (DCHAR_T)); +#endif +#if !USE_SNPRINTF + if (tmp != tmpbuf) + free (tmp); +#endif + +#if NEED_PRINTF_DIRECTIVE_F + if (dp->conversion == 'F') + { + /* Convert the %f result to upper case for %F. */ + DCHAR_T *rp = result + length; + size_t rc; + for (rc = count; rc > 0; rc--, rp++) + if (*rp >= 'a' && *rp <= 'z') + *rp = *rp - 'a' + 'A'; + } +#endif + + length += count; + break; + } + } + } + } + + /* Add the final NUL. */ + ENSURE_ALLOCATION (xsum (length, 1)); + result[length] = '\0'; + + if (result != resultbuf && length + 1 < allocated) + { + /* Shrink the allocated memory if possible. */ + DCHAR_T *memory; + + memory = (DCHAR_T *) realloc (result, (length + 1) * sizeof (DCHAR_T)); + if (memory != NULL) + result = memory; + } + + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + *lengthp = length; + /* Note that we can produce a big string of a length > INT_MAX. POSIX + says that snprintf() fails with errno = EOVERFLOW in this case, but + that's only because snprintf() returns an 'int'. This function does + not have this limitation. */ + return result; + + overflow: + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EOVERFLOW; + return NULL; + + out_of_memory: + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + out_of_memory_1: + CLEANUP (); + errno = ENOMEM; + return NULL; + } +} + +#undef TCHARS_PER_DCHAR +#undef SNPRINTF +#undef USE_SNPRINTF +#undef DCHAR_CPY +#undef PRINTF_PARSE +#undef DIRECTIVES +#undef DIRECTIVE +#undef DCHAR_IS_TCHAR +#undef TCHAR_T +#undef DCHAR_T +#undef FCHAR_T +#undef VASNPRINTF diff --git a/etc/wyatt8740/intl/vasnprintf.h b/etc/wyatt8740/intl/vasnprintf.h new file mode 100644 index 0000000..ff1d183 --- /dev/null +++ b/etc/wyatt8740/intl/vasnprintf.h @@ -0,0 +1,78 @@ +/* vsprintf with automatic memory allocation. + Copyright (C) 2002-2004 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _VASNPRINTF_H +#define _VASNPRINTF_H + +/* Get va_list. */ +#include + +/* Get size_t. */ +#include + +#ifndef __attribute__ +/* This feature is available in gcc versions 2.5 and later. */ +# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__ +# define __attribute__(Spec) /* empty */ +# endif +/* The __-protected variants of `format' and `printf' attributes + are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */ +# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) +# define __format__ format +# define __printf__ printf +# endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Write formatted output to a string dynamically allocated with malloc(). + You can pass a preallocated buffer for the result in RESULTBUF and its + size in *LENGTHP; otherwise you pass RESULTBUF = NULL. + If successful, return the address of the string (this may be = RESULTBUF + if no dynamic memory allocation was necessary) and set *LENGTHP to the + number of resulting bytes, excluding the trailing NUL. Upon error, set + errno and return NULL. + + When dynamic memory allocation occurs, the preallocated buffer is left + alone (with possibly modified contents). This makes it possible to use + a statically allocated or stack-allocated buffer, like this: + + char buf[100]; + size_t len = sizeof (buf); + char *output = vasnprintf (buf, &len, format, args); + if (output == NULL) + ... error handling ...; + else + { + ... use the output string ...; + if (output != buf) + free (output); + } + */ +extern char * asnprintf (char *resultbuf, size_t *lengthp, const char *format, ...) + __attribute__ ((__format__ (__printf__, 3, 4))); +extern char * vasnprintf (char *resultbuf, size_t *lengthp, const char *format, va_list args) + __attribute__ ((__format__ (__printf__, 3, 0))); + +#ifdef __cplusplus +} +#endif + +#endif /* _VASNPRINTF_H */ diff --git a/etc/wyatt8740/intl/vasnwprintf.h b/etc/wyatt8740/intl/vasnwprintf.h new file mode 100644 index 0000000..6ff03ce --- /dev/null +++ b/etc/wyatt8740/intl/vasnwprintf.h @@ -0,0 +1,46 @@ +/* vswprintf with automatic memory allocation. + Copyright (C) 2002-2003 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _VASNWPRINTF_H +#define _VASNWPRINTF_H + +/* Get va_list. */ +#include + +/* Get wchar_t, size_t. */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Write formatted output to a string dynamically allocated with malloc(). + You can pass a preallocated buffer for the result in RESULTBUF and its + size in *LENGTHP; otherwise you pass RESULTBUF = NULL. + If successful, return the address of the string (this may be = RESULTBUF + if no dynamic memory allocation was necessary) and set *LENGTHP to the + number of resulting bytes, excluding the trailing NUL. Upon error, set + errno and return NULL. */ +extern wchar_t * asnwprintf (wchar_t *resultbuf, size_t *lengthp, const wchar_t *format, ...); +extern wchar_t * vasnwprintf (wchar_t *resultbuf, size_t *lengthp, const wchar_t *format, va_list args); + +#ifdef __cplusplus +} +#endif + +#endif /* _VASNWPRINTF_H */ diff --git a/etc/wyatt8740/intl/version.c b/etc/wyatt8740/intl/version.c new file mode 100644 index 0000000..a968cf7 --- /dev/null +++ b/etc/wyatt8740/intl/version.c @@ -0,0 +1,26 @@ +/* libintl library version. + Copyright (C) 2005 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "libgnuintl.h" + +/* Version number: (major<<16) + (minor<<8) + subminor */ +int libintl_version = LIBINTL_VERSION; diff --git a/etc/wyatt8740/intl/wprintf-parse.h b/etc/wyatt8740/intl/wprintf-parse.h new file mode 100644 index 0000000..600b89a --- /dev/null +++ b/etc/wyatt8740/intl/wprintf-parse.h @@ -0,0 +1,75 @@ +/* Parse printf format string. + Copyright (C) 1999, 2002-2003 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _WPRINTF_PARSE_H +#define _WPRINTF_PARSE_H + +#include "printf-args.h" + + +/* Flags */ +#define FLAG_GROUP 1 /* ' flag */ +#define FLAG_LEFT 2 /* - flag */ +#define FLAG_SHOWSIGN 4 /* + flag */ +#define FLAG_SPACE 8 /* space flag */ +#define FLAG_ALT 16 /* # flag */ +#define FLAG_ZERO 32 + +/* arg_index value indicating that no argument is consumed. */ +#define ARG_NONE (~(size_t)0) + +/* A parsed directive. */ +typedef struct +{ + const wchar_t* dir_start; + const wchar_t* dir_end; + int flags; + const wchar_t* width_start; + const wchar_t* width_end; + size_t width_arg_index; + const wchar_t* precision_start; + const wchar_t* precision_end; + size_t precision_arg_index; + wchar_t conversion; /* d i o u x X f e E g G c s p n U % but not C S */ + size_t arg_index; +} +wchar_t_directive; + +/* A parsed format string. */ +typedef struct +{ + size_t count; + wchar_t_directive *dir; + size_t max_width_length; + size_t max_precision_length; +} +wchar_t_directives; + + +/* Parses the format string. Fills in the number N of directives, and fills + in directives[0], ..., directives[N-1], and sets directives[N].dir_start + to the end of the format string. Also fills in the arg_type fields of the + arguments and the needed count of arguments. */ +#ifdef STATIC +STATIC +#else +extern +#endif +int wprintf_parse (const wchar_t *format, wchar_t_directives *d, arguments *a); + +#endif /* _WPRINTF_PARSE_H */ diff --git a/etc/wyatt8740/intl/xsize.h b/etc/wyatt8740/intl/xsize.h new file mode 100644 index 0000000..b3023a7 --- /dev/null +++ b/etc/wyatt8740/intl/xsize.h @@ -0,0 +1,109 @@ +/* xsize.h -- Checked size_t computations. + + Copyright (C) 2003 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _XSIZE_H +#define _XSIZE_H + +/* Get size_t. */ +#include + +/* Get SIZE_MAX. */ +#include +#if HAVE_STDINT_H +# include +#endif + +/* The size of memory objects is often computed through expressions of + type size_t. Example: + void* p = malloc (header_size + n * element_size). + These computations can lead to overflow. When this happens, malloc() + returns a piece of memory that is way too small, and the program then + crashes while attempting to fill the memory. + To avoid this, the functions and macros in this file check for overflow. + The convention is that SIZE_MAX represents overflow. + malloc (SIZE_MAX) is not guaranteed to fail -- think of a malloc + implementation that uses mmap --, it's recommended to use size_overflow_p() + or size_in_bounds_p() before invoking malloc(). + The example thus becomes: + size_t size = xsum (header_size, xtimes (n, element_size)); + void *p = (size_in_bounds_p (size) ? malloc (size) : NULL); +*/ + +/* Convert an arbitrary value >= 0 to type size_t. */ +#define xcast_size_t(N) \ + ((N) <= SIZE_MAX ? (size_t) (N) : SIZE_MAX) + +/* Sum of two sizes, with overflow check. */ +static inline size_t +#if __GNUC__ >= 3 +__attribute__ ((__pure__)) +#endif +xsum (size_t size1, size_t size2) +{ + size_t sum = size1 + size2; + return (sum >= size1 ? sum : SIZE_MAX); +} + +/* Sum of three sizes, with overflow check. */ +static inline size_t +#if __GNUC__ >= 3 +__attribute__ ((__pure__)) +#endif +xsum3 (size_t size1, size_t size2, size_t size3) +{ + return xsum (xsum (size1, size2), size3); +} + +/* Sum of four sizes, with overflow check. */ +static inline size_t +#if __GNUC__ >= 3 +__attribute__ ((__pure__)) +#endif +xsum4 (size_t size1, size_t size2, size_t size3, size_t size4) +{ + return xsum (xsum (xsum (size1, size2), size3), size4); +} + +/* Maximum of two sizes, with overflow check. */ +static inline size_t +#if __GNUC__ >= 3 +__attribute__ ((__pure__)) +#endif +xmax (size_t size1, size_t size2) +{ + /* No explicit check is needed here, because for any n: + max (SIZE_MAX, n) == SIZE_MAX and max (n, SIZE_MAX) == SIZE_MAX. */ + return (size1 >= size2 ? size1 : size2); +} + +/* Multiplication of a count with an element size, with overflow check. + The count must be >= 0 and the element size must be > 0. + This is a macro, not an inline function, so that it works correctly even + when N is of a wider tupe and N > SIZE_MAX. */ +#define xtimes(N, ELSIZE) \ + ((N) <= SIZE_MAX / (ELSIZE) ? (size_t) (N) * (ELSIZE) : SIZE_MAX) + +/* Check for overflow. */ +#define size_overflow_p(SIZE) \ + ((SIZE) == SIZE_MAX) +/* Check against overflow. */ +#define size_in_bounds_p(SIZE) \ + ((SIZE) != SIZE_MAX) + +#endif /* _XSIZE_H */ diff --git a/etc/wyatt8740/plugins/Make.plugin b/etc/wyatt8740/plugins/Make.plugin new file mode 100644 index 0000000..4a4c56f --- /dev/null +++ b/etc/wyatt8740/plugins/Make.plugin @@ -0,0 +1,38 @@ +# Makefile stub for creating standalone plugin distributions. + +plugin_dist: pg_dist pg_dist/config.status + pgi=`cd $(srcdir)/.. && pwd`; cd pg_dist; \ + $(MAKE) $(AM_MAKEFLAGS) PLUGIN_INCLUDES=-I$$pgi distcheck dist + +pg_dist: pg_distdir pg_dist/configure.in pg_dist/install-sh + cd pg_dist \ + && libtoolize --copy --force --automake \ + && automake --copy --add-missing --foreign \ + && autoconf -l ../$(top_srcdir) + +pg_distdir: $(DISTFILES) + test -d pg_dist || mkdir pg_dist + for dfile in $(DISTFILES); do \ + test -f $$dfile && cp $$dfile pg_dist \ + || test -f $(srcdir)/$$dfile && cp $(srcdir)/$$dfile pg_dist; done + sed '/Make.plugin/d' < $(srcdir)/Makefile.am > pg_dist/Makefile.am + +pg_dist/configure.in: $(srcdir)/../plugin-conf.in + rm -f pg_dist/configure.in + test -f $(srcdir)/config.stub \ + && cat $(srcdir)/config.stub > pg_dist/configure.in || true + cat $(srcdir)/../plugin-conf.in | \ + sed 's%@PLUGIN_VERSION@%$(PLUGIN_VERSION)%; \ + s%@PLUGIN@%$(PLUGIN)%' >> pg_dist/configure.in + +pg_dist/install-sh: pg_distdir + cp $(top_srcdir)/install-sh pg_dist + +pg_dist/config.status: pg_dist/configure + cd pg_dist \ + && test -f config.status && $(SHELL) ./config.status --recheck \ + || $(SHELL) ./configure --enable-maintainer-mode + +DISTCLEANFILES = pg_dist/* pg_dist + +# diff --git a/etc/wyatt8740/plugins/Makefile.am b/etc/wyatt8740/plugins/Makefile.am new file mode 100644 index 0000000..d90f813 --- /dev/null +++ b/etc/wyatt8740/plugins/Makefile.am @@ -0,0 +1,21 @@ +# temp. solution while mailcheck & xdcc arn't in SUBDIRS +EXTRA_DIST = plugin20.html Make.plugin plugin-conf.in \ + xdcc/xdcc.c \ + xdcc/Makefile.am + +noinst_HEADERS = xchat-plugin.h + +if DO_PYTHON +pythondir = python +endif + +if DO_PERL +perldir = perl +endif + +if DO_TCL +tcldir = tcl +endif + +#SUBDIRS = . $(pythondir) $(perldir) mailcheck xdcc +SUBDIRS = . $(pythondir) $(perldir) $(tcldir) diff --git a/etc/wyatt8740/plugins/Makefile.in b/etc/wyatt8740/plugins/Makefile.in new file mode 100644 index 0000000..758f2ce --- /dev/null +++ b/etc/wyatt8740/plugins/Makefile.in @@ -0,0 +1,694 @@ +# Makefile.in generated by automake 1.16.5 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2021 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = plugins +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \ + $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +HEADERS = $(noinst_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir distdir-am +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +DIST_SUBDIRS = . python perl tcl +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COMMON_CFLAGS = @COMMON_CFLAGS@ +COMMON_LIBS = @COMMON_LIBS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DBUS_BINDING_TOOL = @DBUS_BINDING_TOOL@ +DBUS_CFLAGS = @DBUS_CFLAGS@ +DBUS_LIBS = @DBUS_LIBS@ +DBUS_SERVICES_DIR = @DBUS_SERVICES_DIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ETAGS = @ETAGS@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FILECMD = @FILECMD@ +GCONFTOOL = @GCONFTOOL@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLIB_CFLAGS = @GLIB_CFLAGS@ +GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GLIB_LIBS = @GLIB_LIBS@ +GLIB_MKENUMS = @GLIB_MKENUMS@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GOBJECT_QUERY = @GOBJECT_QUERY@ +GREP = @GREP@ +GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ +GTKSPELL_LIBS = @GTKSPELL_LIBS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_LIBS = @GTK_LIBS@ +GUI_CFLAGS = @GUI_CFLAGS@ +GUI_LIBS = @GUI_LIBS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSEXY_CFLAGS = @LIBSEXY_CFLAGS@ +LIBSEXY_LIBS = @LIBSEXY_LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL_CFLAGS = @PERL_CFLAGS@ +PERL_LDFLAGS = @PERL_LDFLAGS@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLUGIN_INCLUDES = @PLUGIN_INCLUDES@ +POSUB = @POSUB@ +PY_CFLAGS = @PY_CFLAGS@ +PY_LIBS = @PY_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TCL_CFLAGS = @TCL_CFLAGS@ +TCL_LIBS = @TCL_LIBS@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gdkpixbufcsourcepath = @gdkpixbufcsourcepath@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +perlpath = @perlpath@ +pkgconfigpath = @pkgconfigpath@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pythonpath = @pythonpath@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sedpath = @sedpath@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +unamepath = @unamepath@ +xchatlibdir = @xchatlibdir@ + +# temp. solution while mailcheck & xdcc arn't in SUBDIRS +EXTRA_DIST = plugin20.html Make.plugin plugin-conf.in \ + xdcc/xdcc.c \ + xdcc/Makefile.am + +noinst_HEADERS = xchat-plugin.h +@DO_PYTHON_TRUE@pythondir = python +@DO_PERL_TRUE@perldir = perl +@DO_TCL_TRUE@tcldir = tcl + +#SUBDIRS = . $(pythondir) $(perldir) mailcheck xdcc +SUBDIRS = . $(pythondir) $(perldir) $(tcldir) +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign plugins/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign plugins/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(HEADERS) +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool cscopelist-am ctags \ + ctags-am distclean distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/etc/wyatt8740/plugins/perl/IRC.pm b/etc/wyatt8740/plugins/perl/IRC.pm new file mode 100644 index 0000000..676f99e --- /dev/null +++ b/etc/wyatt8740/plugins/perl/IRC.pm @@ -0,0 +1,256 @@ +{ +package IRC; +sub IRC::register { + my ($script_name, $version, $callback) = @_; + my $package = caller; + $callback = Xchat::Embed::fix_callback( $package, $callback) if $callback; + Xchat::register( $script_name, $version, undef, $callback ); +} + + +sub IRC::add_command_handler { + my ($command, $callback) = @_; + my $package = caller; + + $callback = Xchat::Embed::fix_callback( $package, $callback ); + + # starting index for word_eol array + # this is for compatibility with '' as the command + my $start_index = $command ? 1 : 0; + + Xchat::hook_command( $command, + sub { + no strict 'refs'; + return &{$callback}($_[1][$start_index]); + } + ); + return; +} + +sub IRC::add_message_handler { + my ($message, $callback) = @_; + my $package = caller; + $callback = Xchat::Embed::fix_callback( $package, $callback ); + + Xchat::hook_server( $message, + sub { + no strict 'refs'; + return &{$callback}( $_[1][0] ); + } + ); + return; +} + +sub IRC::add_print_handler { + my ($event, $callback) = @_; + my $package = caller; + $callback = Xchat::Embed::fix_callback( $package, $callback ); + Xchat::hook_print( $event, + sub { + my @word = @{$_[0]}; + no strict 'refs'; + return &{$callback}( join( ' ', @word[0..3] ), @word ); + } + ); + return; +} + +sub IRC::add_timeout_handler { + my ($timeout, $callback) = @_; + my $package = caller; + $callback = Xchat::Embed::fix_callback( $package, $callback ); + Xchat::hook_timer( $timeout, + sub { + no strict 'refs'; + &{$callback}; + return 0; + } + ); + return; +} + +sub IRC::command { + my $command = shift; + if( $command =~ m{^/} ) { + $command =~ s{^/}{}; + Xchat::command( $command ); + } else { + Xchat::command( qq[say $command] ); + } +} + +sub IRC::command_with_channel { + my ($command, $channel, $server) = @_; + my $old_ctx = Xchat::get_context; + my $ctx = Xchat::find_context( $channel, $server ); + + if( $ctx ) { + Xchat::set_context( $ctx ); + IRC::command( $command ); + Xchat::set_context( $ctx ); + } +} + +sub IRC::command_with_server { + my ($command, $server) = @_; + my $old_ctx = Xchat::get_context; + my $ctx = Xchat::find_context( undef, $server ); + + if( $ctx ) { + Xchat::set_context( $ctx ); + IRC::command( $command ); + Xchat::set_context( $ctx ); + } +} + +sub IRC::dcc_list { + my @dccs; + for my $dcc ( Xchat::get_list( 'dcc' ) ) { + push @dccs, $dcc->{nick}; + push @dccs, $dcc->{file} ? $dcc->{file} : ''; + push @dccs, @{$dcc}{qw(type status cps size)}; + push @dccs, $dcc->{type} == 0 ? $dcc->{pos} : $dcc->{resume}; + push @dccs, $dcc->{address32}; + push @dccs, $dcc->{destfile} ? $dcc->{destfile} : ''; + } + return @dccs; +} + +sub IRC::channel_list { + my @channels; + for my $channel ( Xchat::get_list( 'channels' ) ) { + push @channels, @{$channel}{qw(channel server)}, + Xchat::context_info( $channel->{context} )->{nick}; + } + return @channels; +} + +sub IRC::get_info { + my $id = shift; + my @ids = qw(version nick channel server xchatdir away network host topic); + + if( $id >= 0 && $id <= 8 && $id != 5 ) { + my $info = Xchat::get_info($ids[$id]); + return defined $info ? $info : ''; + } else { + if( $id == 5 ) { + return Xchat::get_info( 'away' ) ? 1 : 0; + } else { + return 'Error2'; + } + } +} + +sub IRC::get_prefs { + return 'Unknown variable' unless defined $_[0]; + my $result = Xchat::get_prefs(shift); + return defined $result ? $result : 'Unknown variable'; +} + +sub IRC::ignore_list { + my @ignores; + for my $ignore ( Xchat::get_list( 'ignore' ) ) { + push @ignores, $ignore->{mask}; + my $flags = $ignore->{flags}; + push @ignores, $flags & 1, $flags & 2, $flags & 4, $flags & 8, $flags & 16, + $flags & 32, ':'; + } + return @ignores; +} + +sub IRC::print { + Xchat::print( $_ ) for @_; + return; +} + +sub IRC::print_with_channel { + Xchat::print( @_ ); +} + +sub IRC::send_raw { + Xchat::commandf( qq[quote %s], shift ); +} + +sub IRC::server_list { + my @servers; + for my $channel ( Xchat::get_list( 'channels' ) ) { + push @servers, $channel->{server} if $channel->{server}; + } + return @servers; +} + +sub IRC::user_info { + my $user; + if( @_ > 0 ) { + $user = Xchat::user_info( shift ); + } else { + $user = Xchat::user_info(); + } + + my @info; + if( $user ) { + push @info, $user->{nick}; + if( $user->{host} ) { + push @info, $user->{host}; + } else { + push @info, 'FETCHING'; + } + push @info, $user->{prefix} eq '@' ? 1 : 0; + push @info, $user->{prefix} eq '+' ? 1 : 0; + } + return @info; +} + +sub IRC::user_list { + my ($channel, $server) = @_; + my $ctx = Xchat::find_context( $channel, $server ); + my $old_ctx = Xchat::get_context; + + if( $ctx ) { + Xchat::set_context( $ctx ); + my @users; + for my $user ( Xchat::get_list( 'users' ) ) { + push @users, $user->{nick}; + if( $user->{host} ) { + push @users, $user->{host}; + } else { + push @users, 'FETCHING'; + } + push @users, $user->{prefix} eq '@' ? 1 : 0; + push @users, $user->{prefix} eq '+' ? 1 : 0; + push @users, ':'; + } + Xchat::set_context( $old_ctx ); + return @users; + } else { + return; + } +} + +sub IRC::user_list_short { + my ($channel, $server) = @_; + my $ctx = Xchat::find_context( $channel, $server ); + my $old_ctx = Xchat::get_context; + + if( $ctx ) { + Xchat::set_context( $ctx ); + my @users; + for my $user ( Xchat::get_list( 'users' ) ) { + my $nick = $user->{nick}; + my $host = $user->{host} || 'FETCHING'; + push @users, $nick, $host; + } + Xchat::set_context( $old_ctx ); + return @users; + } else { + return; + } + +} + +sub IRC::add_user_list {} +sub IRC::sub_user_list {} +sub IRC::clear_user_list {} +sub IRC::notify_list {} +sub IRC::perl_script_list {} +} diff --git a/etc/wyatt8740/plugins/perl/Makefile.am b/etc/wyatt8740/plugins/perl/Makefile.am new file mode 100644 index 0000000..bbf9714 --- /dev/null +++ b/etc/wyatt8740/plugins/perl/Makefile.am @@ -0,0 +1,15 @@ + +EXTRA_DIST=alt_completion.pl xchat2-perldocs.html xchat2-perl.html generate_header Xchat.pm IRC.pm Pod/ + +libdir = $(xchatlibdir)/plugins + +lib_LTLIBRARIES = perl.la +perl_la_SOURCES = perl.c +perl_la_LDFLAGS = -avoid-version -module +perl_la_LIBADD = $(PERL_LDFLAGS) +BUILT_SOURCES = xchat.pm.h irc.pm.h +#CFLAGS = @CFLAGS@ -Wno-unused +INCLUDES = $(PERL_CFLAGS) $(COMMON_CFLAGS) -I$(srcdir)/.. +CLEANFILES = xchat.pm.h irc.pm.h +xchat.pm.h irc.pm.h: Xchat.pm IRC.pm + perl generate_header diff --git a/etc/wyatt8740/plugins/perl/Makefile.in b/etc/wyatt8740/plugins/perl/Makefile.in new file mode 100644 index 0000000..dba6aa1 --- /dev/null +++ b/etc/wyatt8740/plugins/perl/Makefile.in @@ -0,0 +1,730 @@ +# Makefile.in generated by automake 1.16.5 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2021 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = plugins/perl +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(libdir)" +LTLIBRARIES = $(lib_LTLIBRARIES) +am__DEPENDENCIES_1 = +perl_la_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_perl_la_OBJECTS = perl.lo +perl_la_OBJECTS = $(am_perl_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +perl_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(perl_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = ./$(DEPDIR)/perl.Plo +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(perl_la_SOURCES) +DIST_SOURCES = $(perl_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COMMON_CFLAGS = @COMMON_CFLAGS@ +COMMON_LIBS = @COMMON_LIBS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DBUS_BINDING_TOOL = @DBUS_BINDING_TOOL@ +DBUS_CFLAGS = @DBUS_CFLAGS@ +DBUS_LIBS = @DBUS_LIBS@ +DBUS_SERVICES_DIR = @DBUS_SERVICES_DIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ETAGS = @ETAGS@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FILECMD = @FILECMD@ +GCONFTOOL = @GCONFTOOL@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLIB_CFLAGS = @GLIB_CFLAGS@ +GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GLIB_LIBS = @GLIB_LIBS@ +GLIB_MKENUMS = @GLIB_MKENUMS@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GOBJECT_QUERY = @GOBJECT_QUERY@ +GREP = @GREP@ +GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ +GTKSPELL_LIBS = @GTKSPELL_LIBS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_LIBS = @GTK_LIBS@ +GUI_CFLAGS = @GUI_CFLAGS@ +GUI_LIBS = @GUI_LIBS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSEXY_CFLAGS = @LIBSEXY_CFLAGS@ +LIBSEXY_LIBS = @LIBSEXY_LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL_CFLAGS = @PERL_CFLAGS@ +PERL_LDFLAGS = @PERL_LDFLAGS@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLUGIN_INCLUDES = @PLUGIN_INCLUDES@ +POSUB = @POSUB@ +PY_CFLAGS = @PY_CFLAGS@ +PY_LIBS = @PY_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TCL_CFLAGS = @TCL_CFLAGS@ +TCL_LIBS = @TCL_LIBS@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gdkpixbufcsourcepath = @gdkpixbufcsourcepath@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = $(xchatlibdir)/plugins +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +perlpath = @perlpath@ +pkgconfigpath = @pkgconfigpath@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pythonpath = @pythonpath@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sedpath = @sedpath@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +unamepath = @unamepath@ +xchatlibdir = @xchatlibdir@ +EXTRA_DIST = alt_completion.pl xchat2-perldocs.html xchat2-perl.html generate_header Xchat.pm IRC.pm Pod/ +lib_LTLIBRARIES = perl.la +perl_la_SOURCES = perl.c +perl_la_LDFLAGS = -avoid-version -module +perl_la_LIBADD = $(PERL_LDFLAGS) +BUILT_SOURCES = xchat.pm.h irc.pm.h +#CFLAGS = @CFLAGS@ -Wno-unused +INCLUDES = $(PERL_CFLAGS) $(COMMON_CFLAGS) -I$(srcdir)/.. +CLEANFILES = xchat.pm.h irc.pm.h +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign plugins/perl/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign plugins/perl/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +perl.la: $(perl_la_OBJECTS) $(perl_la_DEPENDENCIES) $(EXTRA_perl_la_DEPENDENCIES) + $(AM_V_CCLD)$(perl_la_LINK) -rpath $(libdir) $(perl_la_OBJECTS) $(perl_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/perl.Plo@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(LTLIBRARIES) +installdirs: + for dir in "$(DESTDIR)$(libdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +clean: clean-am + +clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -f ./$(DEPDIR)/perl.Plo + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-libLTLIBRARIES + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f ./$(DEPDIR)/perl.Plo + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-libLTLIBRARIES + +.MAKE: all check install install-am install-exec install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ + clean-generic clean-libLTLIBRARIES clean-libtool cscopelist-am \ + ctags ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-libLTLIBRARIES install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES + +.PRECIOUS: Makefile + +xchat.pm.h irc.pm.h: Xchat.pm IRC.pm + perl generate_header + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/etc/wyatt8740/plugins/perl/Pod/Pod/Html.pm b/etc/wyatt8740/plugins/perl/Pod/Pod/Html.pm new file mode 100644 index 0000000..92b392b --- /dev/null +++ b/etc/wyatt8740/plugins/perl/Pod/Pod/Html.pm @@ -0,0 +1,2364 @@ +package Pod::Html; +use strict; +require Exporter; + +use vars qw($VERSION @ISA @EXPORT @EXPORT_OK); +$VERSION = 1.08; +@ISA = qw(Exporter); +@EXPORT = qw(pod2html htmlify); +@EXPORT_OK = qw(anchorify); + +use Carp; +use Config; +use Cwd; +use File::Spec; +use File::Spec::Unix; +use Getopt::Long; + +use locale; # make \w work right in non-ASCII lands + +=head1 NAME + +Pod::Html - module to convert pod files to HTML + +=head1 SYNOPSIS + + use Pod::Html; + pod2html([options]); + +=head1 DESCRIPTION + +Converts files from pod format (see L) to HTML format. It +can automatically generate indexes and cross-references, and it keeps +a cache of things it knows how to cross-reference. + +=head1 FUNCTIONS + +=head2 pod2html + + pod2html("pod2html", + "--podpath=lib:ext:pod:vms", + "--podroot=/usr/src/perl", + "--htmlroot=/perl/nmanual", + "--libpods=perlfunc:perlguts:perlvar:perlrun:perlop", + "--recurse", + "--infile=foo.pod", + "--outfile=/perl/nmanual/foo.html"); + +pod2html takes the following arguments: + +=over 4 + +=item backlink + + --backlink="Back to Top" + +Adds "Back to Top" links in front of every C heading (except for +the first). By default, no backlinks are generated. + +=item cachedir + + --cachedir=name + +Creates the item and directory caches in the given directory. + +=item css + + --css=stylesheet + +Specify the URL of a cascading style sheet. Also disables all HTML/CSS +C + + + +$block +END_OF_HEAD + + # load/reload/validate/cache %Pages and %Items + get_cache( $Dircache, $Itemcache, \@Podpath, $Podroot, $Recurse ); + + # scan the pod for =item directives + scan_items( \%Local_Items, "", @poddata ); + + # put an index at the top of the file. note, if $Doindex is 0 we + # still generate an index, but surround it with an html comment. + # that way some other program can extract it if desired. + $index =~ s/--+/-/g; + + my $hr = ( $Doindex and $index ) ? qq(
) : ""; + + unless ($Doindex) { + $index = qq(\n); + } + + print HTML << "END_OF_INDEX"; + + +
+

+$index +$hr +
+ + +END_OF_INDEX + + # now convert this file + my $after_item; # set to true after an =item + my $need_dd = 0; + warn "Converting input file $Podfile\n" if $Verbose; + foreach my $i ( 0 .. $#poddata ) { + $_ = $poddata[$i]; + $Paragraph = $i + 1; + if (/^(=.*)/s) { # is it a pod directive? + $Ignore = 0; + $after_item = 0; + $need_dd = 0; + $_ = $1; + if (/^=begin\s+(\S+)\s*(.*)/si) { # =begin + process_begin( $1, $2 ); + } elsif (/^=end\s+(\S+)\s*(.*)/si) { # =end + process_end( $1, $2 ); + } elsif (/^=cut/) { # =cut + process_cut(); + } elsif (/^=pod/) { # =pod + process_pod(); + } else { + next if @Begin_Stack && $Begin_Stack[-1] ne 'html'; + + if (/^=(head[1-6])\s+(.*\S)/s) { # =head[1-6] heading + process_head( $1, $2, $Doindex && $index ); + } elsif (/^=item\s*(.*\S)?/sm) { # =item text + $need_dd = process_item($1); + $after_item = 1; + } elsif (/^=over\s*(.*)/) { # =over N + process_over(); + } elsif (/^=back/) { # =back + process_back($need_dd); + } elsif (/^=for\s+(\S+)\s*(.*)/si) { # =for + process_for( $1, $2 ); + } else { + /^=(\S*)\s*/; + warn "$0: $Podfile: unknown pod directive '$1' in " + . "paragraph $Paragraph. ignoring.\n" + unless $Quiet; + } + } + $Top = 0; + } else { + next if $Ignore; + next if @Begin_Stack && $Begin_Stack[-1] ne 'html'; + print HTML and next if @Begin_Stack && $Begin_Stack[-1] eq 'html'; + print HTML "
\n" if $need_dd; + my $text = $_; + if ( $text =~ /\A\s+/ ) { + process_pre( \$text ); + print HTML "
\n$text
\n"; + + } else { + process_text( \$text ); + + # experimental: check for a paragraph where all lines + # have some ...\t...\t...\n pattern + if ( $text =~ /\t/ ) { + my @lines = split( "\n", $text ); + if ( @lines > 1 ) { + my $all = 2; + foreach my $line (@lines) { + if ( $line =~ /\S/ && $line !~ /\t/ ) { + $all--; + last if $all == 0; + } + } + if ( $all > 0 ) { + $text =~ s/\t+//g; + $text =~ s/^//gm; + $text = + '' + . $text + . '
'; + } + } + } + ## end of experimental + + if ($after_item) { + $After_Lpar = 1; + } + print HTML "

$text

\n"; + } + print HTML "
\n" if $need_dd; + $after_item = 0; + } + } + + # finish off any pending directives + finish_list(); + + # link to page index + print HTML "

$Backlink

\n" + if $Doindex + and $index + and $Backlink; + + print HTML < + + +END_OF_TAIL + + # close the html file + close(HTML); + + warn "Finished\n" if $Verbose; +} + +############################################################################## + +sub usage { + my $podfile = shift; + warn "$0: $podfile: @_\n" if @_; + die < --infile= --outfile= + --podpath=:...: --podroot= + --libpods=:...: --recurse --verbose --index + --netscape --norecurse --noindex --cachedir= + + --backlink - set text for "back to top" links (default: none). + --cachedir - directory for the item and directory cache files. + --css - stylesheet URL + --flush - flushes the item and directory caches. + --[no]header - produce block header/footer (default is no headers). + --help - prints this message. + --hiddendirs - search hidden directories in podpath + --htmldir - directory for resulting HTML files. + --htmlroot - http-server base directory from which all relative paths + in podpath stem (default is /). + --[no]index - generate an index at the top of the resulting html + (default behaviour). + --infile - filename for the pod to convert (input taken from stdin + by default). + --libpods - colon-separated list of pages to search for =item pod + directives in as targets of C<> and implicit links (empty + by default). note, these are not filenames, but rather + page names like those that appear in L<> links. + --outfile - filename for the resulting html file (output sent to + stdout by default). + --podpath - colon-separated list of directories containing library + pods (empty by default). + --podroot - filesystem base directory from which all relative paths + in podpath stem (default is .). + --[no]quiet - suppress some benign warning messages (default is off). + --[no]recurse - recurse on those subdirectories listed in podpath + (default behaviour). + --title - title that will appear in resulting html file. + --[no]verbose - self-explanatory (off by default). + --[no]netscape - deprecated, has no effect. for backwards compatibility only. + +END_OF_USAGE + +} + +sub parse_command_line { + my ( + $opt_backlink, $opt_cachedir, $opt_css, $opt_flush, + $opt_header, $opt_help, $opt_htmldir, $opt_htmlroot, + $opt_index, $opt_infile, $opt_libpods, $opt_netscape, + $opt_outfile, $opt_podpath, $opt_podroot, $opt_quiet, + $opt_recurse, $opt_title, $opt_verbose, $opt_hiddendirs + ); + + unshift @ARGV, split ' ', $Config{pod2html} if $Config{pod2html}; + my $result = GetOptions( + 'backlink=s' => \$opt_backlink, + 'cachedir=s' => \$opt_cachedir, + 'css=s' => \$opt_css, + 'flush' => \$opt_flush, + 'header!' => \$opt_header, + 'help' => \$opt_help, + 'hiddendirs!' => \$opt_hiddendirs, + 'htmldir=s' => \$opt_htmldir, + 'htmlroot=s' => \$opt_htmlroot, + 'index!' => \$opt_index, + 'infile=s' => \$opt_infile, + 'libpods=s' => \$opt_libpods, + 'netscape!' => \$opt_netscape, + 'outfile=s' => \$opt_outfile, + 'podpath=s' => \$opt_podpath, + 'podroot=s' => \$opt_podroot, + 'quiet!' => \$opt_quiet, + 'recurse!' => \$opt_recurse, + 'title=s' => \$opt_title, + 'verbose!' => \$opt_verbose, + ); + usage( "-", "invalid parameters" ) if not $result; + + usage("-") if defined $opt_help; # see if the user asked for help + $opt_help = ""; # just to make -w shut-up. + + @Podpath = split( ":", $opt_podpath ) if defined $opt_podpath; + @Libpods = split( ":", $opt_libpods ) if defined $opt_libpods; + + $Backlink = $opt_backlink if defined $opt_backlink; + $Cachedir = $opt_cachedir if defined $opt_cachedir; + $Css = $opt_css if defined $opt_css; + $Header = $opt_header if defined $opt_header; + $Htmldir = $opt_htmldir if defined $opt_htmldir; + $Htmlroot = $opt_htmlroot if defined $opt_htmlroot; + $Doindex = $opt_index if defined $opt_index; + $Podfile = $opt_infile if defined $opt_infile; + $HiddenDirs = $opt_hiddendirs if defined $opt_hiddendirs; + $Htmlfile = $opt_outfile if defined $opt_outfile; + $Podroot = $opt_podroot if defined $opt_podroot; + $Quiet = $opt_quiet if defined $opt_quiet; + $Recurse = $opt_recurse if defined $opt_recurse; + $Title = $opt_title if defined $opt_title; + $Verbose = $opt_verbose if defined $opt_verbose; + + warn "Flushing item and directory caches\n" + if $opt_verbose && defined $opt_flush; + $Dircache = "$Cachedir/pod2htmd.tmp"; + $Itemcache = "$Cachedir/pod2htmi.tmp"; + if ( defined $opt_flush ) { + 1 while unlink( $Dircache, $Itemcache ); + } +} + +my $Saved_Cache_Key; + +sub get_cache { + my ( $dircache, $itemcache, $podpath, $podroot, $recurse ) = @_; + my @cache_key_args = @_; + + # A first-level cache: + # Don't bother reading the cache files if they still apply + # and haven't changed since we last read them. + + my $this_cache_key = cache_key(@cache_key_args); + + return if $Saved_Cache_Key and $this_cache_key eq $Saved_Cache_Key; + + # load the cache of %Pages and %Items if possible. $tests will be + # non-zero if successful. + my $tests = 0; + if ( -f $dircache && -f $itemcache ) { + warn "scanning for item cache\n" if $Verbose; + $tests = load_cache( $dircache, $itemcache, $podpath, $podroot ); + } + + # if we didn't succeed in loading the cache then we must (re)build + # %Pages and %Items. + if ( !$tests ) { + warn "scanning directories in pod-path\n" if $Verbose; + scan_podpath( $podroot, $recurse, 0 ); + } + $Saved_Cache_Key = cache_key(@cache_key_args); +} + +sub cache_key { + my ( $dircache, $itemcache, $podpath, $podroot, $recurse ) = @_; + return join( '!', + $dircache, $itemcache, $recurse, @$podpath, $podroot, stat($dircache), + stat($itemcache) ); +} + +# +# load_cache - tries to find if the caches stored in $dircache and $itemcache +# are valid caches of %Pages and %Items. if they are valid then it loads +# them and returns a non-zero value. +# +sub load_cache { + my ( $dircache, $itemcache, $podpath, $podroot ) = @_; + my ($tests); + local $_; + + $tests = 0; + + open( CACHE, "<$itemcache" ) + || die "$0: error opening $itemcache for reading: $!\n"; + $/ = "\n"; + + # is it the same podpath? + $_ = ; + chomp($_); + $tests++ if ( join( ":", @$podpath ) eq $_ ); + + # is it the same podroot? + $_ = ; + chomp($_); + $tests++ if ( $podroot eq $_ ); + + # load the cache if its good + if ( $tests != 2 ) { + close(CACHE); + return 0; + } + + warn "loading item cache\n" if $Verbose; + while () { + /(.*?) (.*)$/; + $Items{$1} = $2; + } + close(CACHE); + + warn "scanning for directory cache\n" if $Verbose; + open( CACHE, "<$dircache" ) + || die "$0: error opening $dircache for reading: $!\n"; + $/ = "\n"; + $tests = 0; + + # is it the same podpath? + $_ = ; + chomp($_); + $tests++ if ( join( ":", @$podpath ) eq $_ ); + + # is it the same podroot? + $_ = ; + chomp($_); + $tests++ if ( $podroot eq $_ ); + + # load the cache if its good + if ( $tests != 2 ) { + close(CACHE); + return 0; + } + + warn "loading directory cache\n" if $Verbose; + while () { + /(.*?) (.*)$/; + $Pages{$1} = $2; + } + + close(CACHE); + + return 1; +} + +# +# scan_podpath - scans the directories specified in @podpath for directories, +# .pod files, and .pm files. it also scans the pod files specified in +# @Libpods for =item directives. +# +sub scan_podpath { + my ( $podroot, $recurse, $append ) = @_; + my ( $pwd, $dir ); + my ( $libpod, $dirname, $pod, @files, @poddata ); + + unless ($append) { + %Items = (); + %Pages = (); + } + + # scan each directory listed in @Podpath + $pwd = getcwd(); + chdir($podroot) + || die "$0: error changing to directory $podroot: $!\n"; + foreach $dir (@Podpath) { + scan_dir( $dir, $recurse ); + } + + # scan the pods listed in @Libpods for =item directives + foreach $libpod (@Libpods) { + + # if the page isn't defined then we won't know where to find it + # on the system. + next unless defined $Pages{$libpod} && $Pages{$libpod}; + + # if there is a directory then use the .pod and .pm files within it. + # NOTE: Only finds the first so-named directory in the tree. + # if ($Pages{$libpod} =~ /([^:]*[^(\.pod|\.pm)]):/) { + if ( $Pages{$libpod} =~ /([^:]*(?; + close(POD); + clean_data( \@poddata ); + + scan_items( \%Items, "$dirname/$pod", @poddata ); + } + + # use the names of files as =item directives too. +### Don't think this should be done this way - confuses issues.(WL) +### foreach $pod (@files) { +### $pod =~ /^(.*)(\.pod|\.pm)$/; +### $Items{$1} = "$dirname/$1.html" if $1; +### } + } elsif ( $Pages{$libpod} =~ /([^:]*\.pod):/ + || $Pages{$libpod} =~ /([^:]*\.pm):/ ) + { + + # scan the .pod or .pm file for =item directives + $pod = $1; + open( POD, "<$pod" ) + || die "$0: error opening $pod for input: $!\n"; + @poddata = ; + close(POD); + clean_data( \@poddata ); + + scan_items( \%Items, "$pod", @poddata ); + } else { + warn "$0: shouldn't be here (line " . __LINE__ . "\n" unless $Quiet; + } + } + @poddata = (); # clean-up a bit + + chdir($pwd) + || die "$0: error changing to directory $pwd: $!\n"; + + # cache the item list for later use + warn "caching items for later use\n" if $Verbose; + open( CACHE, ">$Itemcache" ) + || die "$0: error open $Itemcache for writing: $!\n"; + + print CACHE join( ":", @Podpath ) . "\n$podroot\n"; + foreach my $key ( keys %Items ) { + print CACHE "$key $Items{$key}\n"; + } + + close(CACHE); + + # cache the directory list for later use + warn "caching directories for later use\n" if $Verbose; + open( CACHE, ">$Dircache" ) + || die "$0: error open $Dircache for writing: $!\n"; + + print CACHE join( ":", @Podpath ) . "\n$podroot\n"; + foreach my $key ( keys %Pages ) { + print CACHE "$key $Pages{$key}\n"; + } + + close(CACHE); +} + +# +# scan_dir - scans the directory specified in $dir for subdirectories, .pod +# files, and .pm files. notes those that it finds. this information will +# be used later in order to figure out where the pages specified in L<> +# links are on the filesystem. +# +sub scan_dir { + my ( $dir, $recurse ) = @_; + my ( $t, @subdirs, @pods, $pod, $dirname, @dirs ); + local $_; + + @subdirs = (); + @pods = (); + + opendir( DIR, $dir ) + || die "$0: error opening directory $dir: $!\n"; + while ( defined( $_ = readdir(DIR) ) ) { + if ( -d "$dir/$_" + && $_ ne "." + && $_ ne ".." + && ( $HiddenDirs || !/^\./ ) ) + { # directory + $Pages{$_} = "" unless defined $Pages{$_}; + $Pages{$_} .= "$dir/$_:"; + push( @subdirs, $_ ); + } elsif (/\.pod\z/) { # .pod + s/\.pod\z//; + $Pages{$_} = "" unless defined $Pages{$_}; + $Pages{$_} .= "$dir/$_.pod:"; + push( @pods, "$dir/$_.pod" ); + } elsif (/\.html\z/) { # .html + s/\.html\z//; + $Pages{$_} = "" unless defined $Pages{$_}; + $Pages{$_} .= "$dir/$_.pod:"; + } elsif (/\.pm\z/) { # .pm + s/\.pm\z//; + $Pages{$_} = "" unless defined $Pages{$_}; + $Pages{$_} .= "$dir/$_.pm:"; + push( @pods, "$dir/$_.pm" ); + } elsif ( -T "$dir/$_" ) { # script(?) + local *F; + if ( open( F, "$dir/$_" ) ) { + my $line; + while ( defined( $line = ) ) { + if ( $line =~ /^=(?:pod|head1)/ ) { + $Pages{$_} = "" unless defined $Pages{$_}; + $Pages{$_} .= "$dir/$_.pod:"; + last; + } + } + close(F); + } + } + } + closedir(DIR); + + # recurse on the subdirectories if necessary + if ($recurse) { + foreach my $subdir (@subdirs) { + scan_dir( "$dir/$subdir", $recurse ); + } + } +} + +# +# scan_headings - scan a pod file for head[1-6] tags, note the tags, and +# build an index. +# +sub scan_headings { + my ( $sections, @data ) = @_; + my ( $tag, $which_head, $otitle, $listdepth, $index ); + + local $Ignore = 0; + + $listdepth = 0; + $index = ""; + + # scan for =head directives, note their name, and build an index + # pointing to each of them. + foreach my $line (@data) { + if ( $line =~ /^=(head)([1-6])\s+(.*)/ ) { + ( $tag, $which_head, $otitle ) = ( $1, $2, $3 ); + + my $title = depod($otitle); + my $name = anchorify($title); + $$sections{$name} = 1; + $title = process_text( \$otitle ); + + while ( $which_head != $listdepth ) { + if ( $which_head > $listdepth ) { + $index .= "\n" + . ( "\t" x ($listdepth) ) + . ( $listdepth > 0 ? qq{
  • \n} + . "\t"x($listdepth + 1): "" ) + . "
      "; + $listdepth++; + } elsif ( $which_head < $listdepth ) { + $listdepth--; + $index .= "\n" + . ( "\t" x $listdepth ) + . ( $listdepth > 0 ? "\t" : "" ) + . "
    " + . ( $listdepth >= 0 ? "\n" . ("\t"x$listdepth) + . "
  • " : "" ) + . "\n"; + } + } + + $index .= "\n" + . ( "\t" x $listdepth ) . "
  • " + . "" + . $title + . "
  • "; + } + } + + # finish off the lists + while ( $listdepth-- ) { + $index .= "\n" . ( "\t" x $listdepth ) + . ($listdepth > 0 ? "\t" : "") + ."\n" + . ($listdepth > 0 ? ("\t" x $listdepth) . "" : "" ); + } + + # get rid of bogus lists + $index =~ s,\t*
      \s*
    \n,,g; + + return $index; +} + +# +# scan_items - scans the pod specified by $pod for =item directives. we +# will use this information later on in resolving C<> links. +# +sub scan_items { + my ( $itemref, $pod, @poddata ) = @_; + my ( $i, $item ); + local $_; + + $pod =~ s/\.pod\z//; + $pod .= ".html" if $pod; + + foreach $i ( 0 .. $#poddata ) { + my $txt = depod( $poddata[$i] ); + + # figure out what kind of item it is. + # Build string for referencing this item. + if ( $txt =~ /\A=item\s+\*\s*(.*)\Z/s ) { # bullet + next unless $1; + $item = $1; + } elsif ( $txt =~ /\A=item\s+(?>\d+\.?)\s*(.*)\Z/s ) { # numbered list + $item = $1; + } elsif ( $txt =~ /\A=item\s+(.*)\Z/s ) { # plain item + $item = $1; + } else { + next; + } + my $fid = fragment_id($item); + $$itemref{$fid} = "$pod" if $fid; + } +} + +# +# process_head - convert a pod head[1-6] tag and convert it to HTML format. +# +sub process_head { + my ( $tag, $heading, $hasindex ) = @_; + + # figure out the level of the =head + $tag =~ /head([1-6])/; + my $level = $1; + + if ($Listlevel) { + warn +"$0: $Podfile: unterminated list at =head in paragraph $Paragraph. ignoring.\n" + unless $Quiet; + while ($Listlevel) { + process_back(); + } + } + + print HTML "

    \n"; + if ( $level == 1 && !$Top ) { + print HTML "$Backlink\n" + if $hasindex and $Backlink; + print HTML "

    \n
    \n"; + } else { + print HTML "

    \n"; + } + + my $name = anchorify( depod($heading) ); + my $convert = process_text( \$heading ); + $convert =~ s{]+>}{}g; + print HTML "$convert\n"; +} + +# +# emit_item_tag - print an =item's text +# Note: The global $EmittedItem is used for inhibiting self-references. +# +my $EmittedItem; + +sub emit_item_tag($$$) { + my ( $otext, $text, $compact ) = @_; + my $item = fragment_id( depod($text), -generate ); + Carp::confess( "Undefined fragment '$text' (" + . depod($text) + . ") from fragment_id() in emit_item_tag() in $Podfile" ) + if !defined $item; + $EmittedItem = $item; + ### print STDERR "emit_item_tag=$item ($text)\n"; + + print HTML ''; + if ( $Items_Named{$item}++ ) { + print HTML process_text( \$otext ); + } else { + my $name = $item; + $name = anchorify($name); + print HTML +#qq{}, + process_text( \$otext ), + # '' + ; + } + print HTML "\n"; + undef($EmittedItem); +} + +sub emit_li { + my ($tag) = @_; + if ( $Items_Seen[$Listlevel]++ == 0 ) { + push( @Listend, "" ); + print HTML "<$tag>\n"; + } + my $emitted = $tag eq 'dl' ? 'dt' : 'li'; + print HTML "<$emitted>"; + return $emitted; +} + +# +# process_item - convert a pod item tag and convert it to HTML format. +# +sub process_item { + my ($otext) = @_; + my $need_dd = 0; # set to 1 if we need a
    after an item + + # lots of documents start a list without doing an =over. this is + # bad! but, the proper thing to do seems to be to just assume + # they did do an =over. so warn them once and then continue. + if ( $Listlevel == 0 ) { + warn +"$0: $Podfile: unexpected =item directive in paragraph $Paragraph. ignoring.\n" + unless $Quiet; + process_over(); + } + + # formatting: insert a paragraph if preceding item has >1 paragraph + if ($After_Lpar) { + print HTML $need_dd ? "\n" : "\n" if $After_Lpar; + $After_Lpar = 0; + } + + # remove formatting instructions from the text + my $text = depod($otext); + + my $emitted; # the tag actually emitted, used for closing + + # all the list variants: + if ( $text =~ /\A\*/ ) { # bullet + $emitted = emit_li('ul'); + if ( $text =~ /\A\*\s+(\S.*)\Z/s ) { # with additional text + my $tag = $1; + $otext =~ s/\A\*\s+//; + emit_item_tag( $otext, $tag, 1 ); + } + print HTML "" + } elsif ( $text =~ /\A\d+/ ) { # numbered list + $emitted = emit_li('ol'); + if ( $text =~ /\A(?>\d+\.?)\s*(\S.*)\Z/s ) { # with additional text + my $tag = $1; + $otext =~ s/\A\d+\.?\s*//; + emit_item_tag( $otext, $tag, 1 ); + } + print HTML ""; + } else { # definition list + $emitted = emit_li('dl'); + if ( $text =~ /\A(.+)\Z/s ) { # should have text + emit_item_tag( $otext, $text, 1 ); + } + $need_dd = 1; + } + print HTML "\n"; + return $need_dd; +} + +# +# process_over - process a pod over tag and start a corresponding HTML list. +# +sub process_over { + + # start a new list + $Listlevel++; + push( @Items_Seen, 0 ); + $After_Lpar = 0; +} + +# +# process_back - process a pod back tag and convert it to HTML format. +# +sub process_back { + my $need_dd = shift; + if ( $Listlevel == 0 ) { + warn +"$0: $Podfile: unexpected =back directive in paragraph $Paragraph. ignoring.\n" + unless $Quiet; + return; + } + + # close off the list. note, I check to see if $Listend[$Listlevel] is + # defined because an =item directive may have never appeared and thus + # $Listend[$Listlevel] may have never been initialized. + $Listlevel--; + if ( defined $Listend[$Listlevel] ) { + print HTML $need_dd ? "\n" : "\n" if $After_Lpar; + print HTML $Listend[$Listlevel]; + print HTML "\n"; + pop(@Listend); + } + $After_Lpar = 0; + + # clean up item count + pop(@Items_Seen); +} + +# +# process_cut - process a pod cut tag, thus start ignoring pod directives. +# +sub process_cut { + $Ignore = 1; +} + +# +# process_pod - process a pod tag, thus stop ignoring pod directives +# until we see a corresponding cut. +# +sub process_pod { + + # no need to set $Ignore to 0 cause the main loop did it +} + +# +# process_for - process a =for pod tag. if it's for html, spit +# it out verbatim, if illustration, center it, otherwise ignore it. +# +sub process_for { + my ( $whom, $text ) = @_; + if ( $whom =~ /^(pod2)?html$/i ) { + print HTML $text; + } elsif ( $whom =~ /^illustration$/i ) { + 1 while chomp $text; + for my $ext (qw[.png .gif .jpeg .jpg .tga .pcl .bmp]) { + $text .= $ext, last if -r "$text$ext"; + } + print HTML +qq{

    $text illustration

    }; + } +} + +# +# process_begin - process a =begin pod tag. this pushes +# whom we're beginning on the begin stack. if there's a +# begin stack, we only print if it us. +# +sub process_begin { + my ( $whom, $text ) = @_; + $whom = lc($whom); + push( @Begin_Stack, $whom ); + if ( $whom =~ /^(pod2)?html$/ ) { + print HTML $text if $text; + } +} + +# +# process_end - process a =end pod tag. pop the +# begin stack. die if we're mismatched. +# +sub process_end { + my ( $whom, $text ) = @_; + $whom = lc($whom); + if ( !defined $Begin_Stack[-1] or $Begin_Stack[-1] ne $whom ) { + Carp::confess( + "Unmatched begin/end at chunk $Paragraph in pod $Podfile\n"); + } + pop(@Begin_Stack); +} + +# +# process_pre - indented paragraph, made into
    
    +#
    +sub process_pre {
    +	my ($text) = @_;
    +	my ($rest);
    +	return if $Ignore;
    +
    +	$rest = $$text;
    +
    +	# insert spaces in place of tabs
    +	$rest =~ s#(.+)#
    +	    my $line = $1;
    +            1 while $line =~ s/(\t+)/' ' x ((length($1) * 8) - $-[0] % 8)/e;
    +	    $line;
    +	#eg;
    +
    +	# convert some special chars to HTML escapes
    +	$rest = html_escape($rest);
    +
    +	# try and create links for all occurrences of perl.* within
    +	# the preformatted text.
    +	$rest =~ s{
    +	         (\s*)(perl\w+)
    +	      }{
    +		 if ( defined $Pages{$2} ){	# is a link
    +		     qq($1$2);
    +		 } elsif (defined $Pages{dosify($2)}) {	# is a link
    +		     qq($1$2);
    +		 } else {
    +		     "$1$2";
    +		 }
    +	      }xeg;
    +	$rest =~ s{
    +		 ('
    +	|			# or:
    +	    [$punc]*		# 0 or more punctuation
    +	    (?:			#   followed
    +		[^$any]		#   by a non-url char
    +	    |			#   or
    +		$		#   end of the string
    +	    )			#
    +	|			# or else
    +	    $			#   then end of the string
    +        )
    +      }{$1}igox;
    +
    +	# text should be as it is (verbatim)
    +	$$text = $rest;
    +}
    +
    +#
    +# pure text processing
    +#
    +# pure_text/inIS_text: differ with respect to automatic C<> recognition.
    +# we don't want this to happen within IS
    +#
    +sub pure_text($) {
    +	my $text = shift();
    +	process_puretext( $text, 1 );
    +}
    +
    +sub inIS_text($) {
    +	my $text = shift();
    +	process_puretext( $text, 0 );
    +}
    +
    +#
    +# process_puretext - process pure text (without pod-escapes) converting
    +#  double-quotes and handling implicit C<> links.
    +#
    +sub process_puretext {
    +	my ( $text, $notinIS ) = @_;
    +
    +	## Guessing at func() or [\$\@%&]*var references in plain text is destined
    +	## to produce some strange looking ref's. uncomment to disable:
    +	## $notinIS = 0;
    +
    +	my ( @words, $lead, $trail );
    +
    +	# keep track of leading and trailing white-space
    +	$lead  = ( $text =~ s/\A(\s+)//s ? $1 : "" );
    +	$trail = ( $text =~ s/(\s+)\Z//s ? $1 : "" );
    +
    +	# split at space/non-space boundaries
    +	@words = split( /(?<=\s)(?=\S)|(?<=\S)(?=\s)/, $text );
    +
    +	# process each word individually
    +	foreach my $word (@words) {
    +
    +		# skip space runs
    +		next if $word =~ /^\s*$/;
    +
    +		# see if we can infer a link or a function call
    +		#
    +		# NOTE: This is a word based search, it won't automatically
    +		# mark "substr($var, 1, 2)" because the 1st word would be "substr($var"
    +		# User has to enclose those with proper C<>
    +
    +		if (
    +			   $notinIS
    +			&& $word =~ m/
    +		^([a-z_]{2,})                 # The function name
    +		\(
    +		    ([0-9][a-z]*              # Manual page(1) or page(1M)
    +		    |[^)]*[\$\@\%][^)]+       # ($foo), (1, @foo), (%hash)
    +		    |                         # ()
    +		    )
    +		\)
    +		([.,;]?)$                     # a possible punctuation follows
    +	    /xi
    +			)
    +		{
    +
    +			# has parenthesis so should have been a C<> ref
    +			## try for a pagename (perlXXX(1))?
    +			my ( $func, $args, $rest ) = ( $1, $2, $3 || '' );
    +			if ( $args =~ /^\d+$/ ) {
    +				my $url = page_sect( $word, '' );
    +				if ( defined $url ) {
    +					$word =
    +qq(the $word manpage$rest);
    +					next;
    +				}
    +			}
    +			## try function name for a link, append tt'ed argument list
    +			$word = emit_C( $func, '', "($args)" ) . $rest;
    +
    +#### disabled. either all (including $\W, $\w+{.*} etc.) or nothing.
    +##      } elsif( $notinIS && $word =~ /^[\$\@%&*]+\w+$/) {
    +##	    # perl variables, should be a C<> ref
    +##	    $word = emit_C( $word );
    +
    +		} elsif ( $word =~ m,^\w+://\w, ) {
    +
    +			# looks like a URL
    +			# Don't relativize it: leave it as the author intended
    +			$word = qq($word);
    +		} elsif ( $word =~ /[\w.-]+\@[\w-]+\.\w/ ) {
    +
    +			# looks like an e-mail address
    +			my ( $w1, $w2, $w3 ) = ( "", $word, "" );
    +			( $w1, $w2, $w3 ) = ( "(", $1, ")$2" ) if $word =~ /^\((.*?)\)(,?)/;
    +			( $w1, $w2, $w3 ) = ( "<", $1, ">$2" )
    +				if $word =~ /^<(.*?)>(,?)/;
    +			$word = qq($w1$w2$w3);
    +		} else {
    +			$word = html_escape($word) if $word =~ /["&<>]/;
    +		}
    +	}
    +
    +	# put everything back together
    +	return $lead . join( '', @words ) . $trail;
    +}
    +
    +#
    +# process_text - handles plaintext that appears in the input pod file.
    +# there may be pod commands embedded within the text so those must be
    +# converted to html commands.
    +#
    +
    +sub process_text1($$;$$);
    +sub pattern ($) { $_[0] ? '\s+' . ( '>' x ( $_[0] + 1 ) ) : '>' }
    +sub closing ($) { local ($_) = shift; ( defined && s/\s+\z// ) ? length : 0 }
    +
    +sub process_text {
    +	return if $Ignore;
    +	my ($tref) = @_;
    +	my $res = process_text1( 0, $tref );
    +	$res =~ s/\s+$//s;
    +	$$tref = $res;
    +}
    +
    +sub process_text_rfc_links {
    +	my $text = shift;
    +
    +	# For every "RFCnnnn" or "RFC nnn", link it to the authoritative
    +	# ource. Do not use the /i modifier here. Require "RFC" to be written in
    +	#  in capital letters.
    +
    +	$text =~ s{
    +	(?<=[^<>[:alpha:]])           # Make sure this is not an URL already
    +	(RFC\s*([0-9]{1,5}))(?![0-9]) # max 5 digits
    +    }
    +    {$1}gx;
    +
    +	$text;
    +}
    +
    +sub process_text1($$;$$) {
    +	my ( $lev, $rstr, $func, $closing ) = @_;
    +	my $res = '';
    +
    +	unless ( defined $func ) {
    +		$func = '';
    +		$lev++;
    +	}
    +
    +	if ( $func eq 'B' ) {
    +
    +		# B - boldface
    +		$res = '' . process_text1( $lev, $rstr ) . '';
    +
    +	} elsif ( $func eq 'C' ) {
    +
    +		# C - can be a ref or 
    +		# need to extract text
    +		my $par = go_ahead( $rstr, 'C', $closing );
    +
    +		## clean-up of the link target
    +		my $text = depod($par);
    +
    +		### my $x = $par =~ /[BI]call emit_C($par) lev=$lev, par with BI=$x\n";
    +
    +		$res = emit_C( $text, $lev > 1 || ( $par =~ /[BI] - convert to character
    +		$$rstr =~ s/^([^>]*)>//;
    +		my $escape = $1;
    +		$escape =~ s/^(\d+|X[\dA-F]+)$/#$1/i;
    +		$res = "&$escape;";
    +
    +	} elsif ( $func eq 'F' ) {
    +
    +		# F - italicize
    +		$res = '' . process_text1( $lev, $rstr ) . '';
    +
    +	} elsif ( $func eq 'I' ) {
    +
    +		# I - italicize
    +		$res = '' . process_text1( $lev, $rstr ) . '';
    +
    +	} elsif ( $func eq 'L' ) {
    +
    +		# L - link
    +		## L => produce text, use cross-ref for linking
    +		## L => make text from cross-ref
    +		## need to extract text
    +		my $par = go_ahead( $rstr, 'L', $closing );
    +
    +		# some L<>'s that shouldn't be:
    +		# a) full-blown URL's are emitted as-is
    +		if ( $par =~ m{^\w+://}s ) {
    +			return make_URL_href($par);
    +		}
    +
    +		# b) C<...> is stripped and treated as C<>
    +		if ( $par =~ /^C<(.*)>$/ ) {
    +			my $text = depod($1);
    +			return emit_C( $text, $lev > 1 || ( $par =~ /[BI] L<$par> to page $page, ident $ident\n";
    +
    +		} elsif ( $par =~ m{^(.*?)/"?(.*?)"?$} ) {    # [name]/"section"
    +			    # even though this should be a "section", we go for ident first
    +			( $page, $ident ) = ( $1, $2 );
    +			### print STDERR "--> L<$par> to page $page, section $section\n";
    +
    +		} elsif ( $par =~ /\s/ ) {  # this must be a section with missing quotes
    +			( $page, $section ) = ( '', $par );
    +			### print STDERR "--> L<$par> to void page, section $section\n";
    +
    +		} else {
    +			( $page, $section ) = ( $par, '' );
    +			### print STDERR "--> L<$par> to page $par, void section\n";
    +		}
    +
    +		# now, either $section or $ident is defined. the convoluted logic
    +		# below tries to resolve L<> according to what the user specified.
    +		# failing this, we try to find the next best thing...
    +		my ( $url, $ltext, $fid );
    +
    +	RESOLVE: {
    +			if ( defined $ident ) {
    +				## try to resolve $ident as an item
    +				( $url, $fid ) = coderef( $page, $ident );
    +				if ($url) {
    +					if ( !defined($linktext) ) {
    +						$linktext = $ident;
    +						$linktext .= " in " if $ident && $page;
    +						$linktext .= "the $page manpage" if $page;
    +					}
    +					###  print STDERR "got coderef url=$url\n";
    +					last RESOLVE;
    +				}
    +				## no luck: go for a section (auto-quoting!)
    +				$section = $ident;
    +			}
    +			## now go for a section
    +			my $htmlsection = htmlify($section);
    +			$url = page_sect( $page, $htmlsection );
    +			if ($url) {
    +				if ( !defined($linktext) ) {
    +					$linktext = $section;
    +					$linktext .= " in " if $section && $page;
    +					$linktext .= "the $page manpage" if $page;
    +				}
    +				### print STDERR "got page/section url=$url\n";
    +				last RESOLVE;
    +			}
    +			## no luck: go for an ident
    +			if ($section) {
    +				$ident = $section;
    +			} else {
    +				$ident = $page;
    +				$page  = undef();
    +			}
    +			( $url, $fid ) = coderef( $page, $ident );
    +			if ($url) {
    +				if ( !defined($linktext) ) {
    +					$linktext = $ident;
    +					$linktext .= " in " if $ident && $page;
    +					$linktext .= "the $page manpage" if $page;
    +				}
    +				### print STDERR "got section=>coderef url=$url\n";
    +				last RESOLVE;
    +			}
    +
    +			# warning; show some text.
    +			$linktext = $opar unless defined $linktext;
    +			warn
    +"$0: $Podfile: cannot resolve L<$opar> in paragraph $Paragraph.\n"
    +				unless $Quiet;
    +		}
    +
    +		# now we have a URL or just plain code
    +		$$rstr = $linktext . '>' . $$rstr;
    +		if ( defined($url) ) {
    +			$res = "" . process_text1( $lev, $rstr ) . '';
    +		} else {
    +			$res = '' . process_text1( $lev, $rstr ) . '';
    +		}
    +
    +	} elsif ( $func eq 'S' ) {
    +
    +		# S - non-breaking spaces
    +		$res = process_text1( $lev, $rstr );
    +		$res =~ s/ / /g;
    +
    +	} elsif ( $func eq 'X' ) {
    +
    +		# X<> - ignore
    +		warn "$0: $Podfile: invalid X<> in paragraph $Paragraph.\n"
    +			unless $$rstr =~ s/^[^>]*>//
    +				or $Quiet;
    +	} elsif ( $func eq 'Z' ) {
    +
    +		# Z<> - empty
    +		warn "$0: $Podfile: invalid Z<> in paragraph $Paragraph.\n"
    +			unless $$rstr =~ s/^>//
    +				or $Quiet;
    +
    +	} else {
    +		my $term = pattern $closing;
    +		while ( $$rstr =~ s/\A(.*?)(([BCEFILSXZ])<(<+[^\S\n]+)?|$term)//s ) {
    +
    +			# all others: either recurse into new function or
    +			# terminate at closing angle bracket(s)
    +			my $pt = $1;
    +			$pt .= $2 if !$3 && $lev == 1;
    +			$res .= $lev == 1 ? pure_text($pt) : inIS_text($pt);
    +			return $res if !$3 && $lev > 1;
    +			if ($3) {
    +				$res .= process_text1( $lev, $rstr, $3, closing $4 );
    +			}
    +		}
    +		if ( $lev == 1 ) {
    +			$res .= pure_text($$rstr);
    +		} elsif ( !$Quiet ) {
    +			my $snippet = substr( $$rstr, 0, 60 );
    +			warn
    +"$0: $Podfile: undelimited $func<> in paragraph $Paragraph: '$snippet'.\n"
    +
    +		}
    +		$res = process_text_rfc_links($res);
    +	}
    +	return $res;
    +}
    +
    +#
    +# go_ahead: extract text of an IS (can be nested)
    +#
    +sub go_ahead($$$) {
    +	my ( $rstr, $func, $closing ) = @_;
    +	my $res     = '';
    +	my @closing = ($closing);
    +	while ( $$rstr =~
    +		s/\A(.*?)(([BCEFILSXZ])<(<+\s+)?|@{[pattern $closing[0]]})//s )
    +	{
    +		$res .= $1;
    +		unless ($3) {
    +			shift @closing;
    +			return $res unless @closing;
    +		} else {
    +			unshift @closing, closing $4;
    +		}
    +		$res .= $2;
    +	}
    +	unless ($Quiet) {
    +		my $snippet = substr( $$rstr, 0, 60 );
    +		warn
    +"$0: $Podfile: undelimited $func<> in paragraph $Paragraph (go_ahead): '$snippet'.\n";
    +	}
    +	return $res;
    +}
    +
    +#
    +# emit_C - output result of C
    +#    $text is the depod-ed text
    +#
    +sub emit_C($;$$) {
    +	my ( $text, $nocode, $args ) = @_;
    +	$args = '' unless defined $args;
    +	my $res;
    +	my ( $url, $fid ) = coderef( undef(), $text );
    +
    +	# need HTML-safe text
    +	my $linktext = html_escape("$text$args");
    +
    +	if ( $text !~ /^[\$@%]/
    +		&& defined($url)
    +		&& ( !defined($EmittedItem) || $EmittedItem ne $fid ) )
    +	{
    +		$res = "$linktext";
    +	} elsif ( 0 && $nocode ) {
    +		$res = $linktext;
    +	} else {
    +		$res = "$linktext";
    +	}
    +	return $res;
    +}
    +
    +#
    +# html_escape: make text safe for HTML
    +#
    +sub html_escape {
    +	my $rest = $_[0];
    +	$rest =~ s/&/&/g;
    +	$rest =~ s//>/g;
    +	$rest =~ s/"/"/g;
    +
    +	# ' is only in XHTML, not HTML4.  Be conservative
    +	#$rest   =~ s/'/'/g;
    +	return $rest;
    +}
    +
    +#
    +# dosify - convert filenames to 8.3
    +#
    +sub dosify {
    +	my ($str) = @_;
    +	return lc($str) if $^O eq 'VMS';    # VMS just needs casing
    +	if ($Is83) {
    +		$str = lc $str;
    +		$str =~ s/(\.\w+)/substr ($1,0,4)/ge;
    +		$str =~ s/(\w+)/substr ($1,0,8)/ge;
    +	}
    +	return $str;
    +}
    +
    +#
    +# page_sect - make a URL from the text of a L<>
    +#
    +sub page_sect($$) {
    +	my ( $page, $section ) = @_;
    +	my ( $linktext, $page83, $link );    # work strings
    +
    +	# check if we know that this is a section in this page
    +	if ( !defined $Pages{$page} && defined $Sections{$page} ) {
    +		$section = $page;
    +		$page    = "";
    +		### print STDERR "reset page='', section=$section\n";
    +	}
    +
    +	$page83 = dosify($page);
    +	$page = $page83 if ( defined $Pages{$page83} );
    +	if ( $page eq "" ) {
    +		$link = "#" . anchorify($section);
    +	} elsif ( $page =~ /::/ ) {
    +		$page =~ s,::,/,g;
    +
    +		# Search page cache for an entry keyed under the html page name,
    +		# then look to see what directory that page might be in.  NOTE:
    +		# this will only find one page. A better solution might be to produce
    +		# an intermediate page that is an index to all such pages.
    +		my $page_name = $page;
    +		$page_name =~ s,^.*/,,s;
    +		if ( defined( $Pages{$page_name} )
    +			&& $Pages{$page_name} =~ /([^:]*$page)\.(?:pod|pm):/ )
    +		{
    +			$page = $1;
    +		} else {
    +
    +			# NOTE: This branch assumes that all A::B pages are located in
    +			# $Htmlroot/A/B.html . This is often incorrect, since they are
    +			# often in $Htmlroot/lib/A/B.html or such like. Perhaps we could
    +			# analyze the contents of %Pages and figure out where any
    +			# cousins of A::B are, then assume that.  So, if A::B isn't found,
    +			# but A::C is found in lib/A/C.pm, then A::B is assumed to be in
    +			# lib/A/B.pm. This is also limited, but it's an improvement.
    +			# Maybe a hints file so that the links point to the correct places
    +			# nonetheless?
    +
    +		}
    +		$link = "$Htmlroot/$page.html";
    +		$link .= "#" . anchorify($section) if ($section);
    +	} elsif ( !defined $Pages{$page} ) {
    +		$link = "";
    +	} else {
    +		$section = anchorify($section) if $section ne "";
    +		### print STDERR "...section=$section\n";
    +
    +		# if there is a directory by the name of the page, then assume that an
    +		# appropriate section will exist in the subdirectory
    +		#	if ($section ne "" && $Pages{$page} =~ /([^:]*[^(\.pod|\.pm)]):/) {
    +		if ( $section ne "" && $Pages{$page} =~ /([^:]*(?, Foo.(pod|pm) is preferred to A/Foo.(pod|pm)
    +			if ( $Pages{$page} =~ /([^:]*)\.(?:pod|pm):/ ) {
    +				$link = "$Htmlroot/$1.html$section";
    +			} else {
    +				$link = "";
    +			}
    +		}
    +	}
    +
    +	if ($link) {
    +
    +		# Here, we take advantage of the knowledge that $Htmlfileurl ne ''
    +		# implies $Htmlroot eq ''. This means that the link in question
    +		# needs a prefix of $Htmldir if it begins with '/'. The test for
    +		# the initial '/' is done to avoid '#'-only links, and to allow
    +		# for other kinds of links, like file:, ftp:, etc.
    +		my $url;
    +		if ( $Htmlfileurl ne '' ) {
    +			$link = "$Htmldir$link" if $link =~ m{^/}s;
    +			$url = relativize_url( $link, $Htmlfileurl );
    +
    +			# print( "  b: [$link,$Htmlfileurl,$url]\n" );
    +		} else {
    +			$url = $link;
    +		}
    +		return $url;
    +
    +	} else {
    +		return undef();
    +	}
    +}
    +
    +#
    +# relativize_url - convert an absolute URL to one relative to a base URL.
    +# Assumes both end in a filename.
    +#
    +sub relativize_url {
    +	my ( $dest, $source ) = @_;
    +
    +	my ( $dest_volume, $dest_directory, $dest_file ) =
    +		File::Spec::Unix->splitpath($dest);
    +	$dest = File::Spec::Unix->catpath( $dest_volume, $dest_directory, '' );
    +
    +	my ( $source_volume, $source_directory, $source_file ) =
    +		File::Spec::Unix->splitpath($source);
    +	$source =
    +		File::Spec::Unix->catpath( $source_volume, $source_directory, '' );
    +
    +	my $rel_path = '';
    +	if ( $dest ne '' ) {
    +		$rel_path = File::Spec::Unix->abs2rel( $dest, $source );
    +	}
    +
    +	if (   $rel_path ne ''
    +		&& substr( $rel_path, -1 ) ne '/'
    +		&& substr( $dest_file, 0, 1 ) ne '#' )
    +	{
    +		$rel_path .= "/$dest_file";
    +	} else {
    +		$rel_path .= "$dest_file";
    +	}
    +
    +	return $rel_path;
    +}
    +
    +#
    +# coderef - make URL from the text of a C<>
    +#
    +sub coderef($$) {
    +	my ( $page, $item ) = @_;
    +	my ($url);
    +
    +	my $fid = fragment_id($item);
    +
    +	if ( defined($page) && $page ne "" ) {
    +
    +		# we have been given a $page...
    +		$page =~ s{::}{/}g;
    +
    +		Carp::confess(
    +"Undefined fragment '$item' from fragment_id() in coderef() in $Podfile"
    +		) if !defined $fid;
    +
    +		# Do we take it? Item could be a section!
    +		my $base = $Items{$fid} || "";
    +		$base =~ s{[^/]*/}{};
    +		if ( $base ne "$page.html" ) {
    +			###   print STDERR "coderef( $page, $item ): items{$fid} = $Items{$fid} = $base => discard page!\n";
    +			$page = undef();
    +		}
    +
    +	} else {
    +
    +		# no page - local items precede cached items
    +		if ( defined($fid) ) {
    +			if ( exists $Local_Items{$fid} ) {
    +				$page = $Local_Items{$fid};
    +			} else {
    +				$page = $Items{$fid};
    +			}
    +		}
    +	}
    +
    +	# if there was a pod file that we found earlier with an appropriate
    +	# =item directive, then create a link to that page.
    +	if ( defined $page ) {
    +		if ($page) {
    +			if ( exists $Pages{$page} and $Pages{$page} =~ /([^:.]*)\.[^:]*:/ )
    +			{
    +				$page = $1 . '.html';
    +			}
    +			my $link = "$Htmlroot/$page#" . anchorify($fid);
    +
    +			# Here, we take advantage of the knowledge that $Htmlfileurl
    +			# ne '' implies $Htmlroot eq ''.
    +			if ( $Htmlfileurl ne '' ) {
    +				$link = "$Htmldir$link";
    +				$url = relativize_url( $link, $Htmlfileurl );
    +			} else {
    +				$url = $link;
    +			}
    +		} else {
    +			$url = "#" . anchorify($fid);
    +		}
    +
    +		confess "url has space: $url" if $url =~ /"[^"]*\s[^"]*"/;
    +	}
    +	return ( $url, $fid );
    +}
    +
    +#
    +# Adapted from Nick Ing-Simmons' PodToHtml package.
    +sub relative_url {
    +	my $source_file      = shift;
    +	my $destination_file = shift;
    +
    +	my $source = URI::file->new_abs($source_file);
    +	my $uo = URI::file->new( $destination_file, $source )->abs;
    +	return $uo->rel->as_string;
    +}
    +
    +#
    +# finish_list - finish off any pending HTML lists.  this should be called
    +# after the entire pod file has been read and converted.
    +#
    +sub finish_list {
    +	while ( $Listlevel > 0 ) {
    +		print HTML "\n";
    +		$Listlevel--;
    +	}
    +}
    +
    +#
    +# htmlify - converts a pod section specification to a suitable section
    +# specification for HTML. Note that we keep spaces and special characters
    +# except ", ? (Netscape problem) and the hyphen (writer's problem...).
    +#
    +sub htmlify {
    +	my ($heading) = @_;
    +	$heading =~ s/(\s+)/ /g;
    +	$heading =~ s/\s+\Z//;
    +	$heading =~ s/\A\s+//;
    +
    +	# The hyphen is a disgrace to the English language.
    +	# $heading =~ s/[-"?]//g;
    +	$heading =~ s/["?]//g;
    +	$heading = lc($heading);
    +	return $heading;
    +}
    +
    +#
    +# similar to htmlify, but turns non-alphanumerics into underscores
    +#
    +sub anchorify {
    +	my ($anchor) = @_;
    +	$anchor =~ s/\([^)]*\)//;
    +	$anchor = htmlify($anchor);
    +	$anchor =~ s/\W/_/g;
    +	$anchor =~ tr/_/_/s;
    +	return $anchor;
    +}
    +
    +#
    +# depod - convert text by eliminating all interior sequences
    +# Note: can be called with copy or modify semantics
    +#
    +my %E2c;
    +$E2c{lt}     = '<';
    +$E2c{gt}     = '>';
    +$E2c{sol}    = '/';
    +$E2c{verbar} = '|';
    +$E2c{amp}    = '&';    # in Tk's pods
    +
    +sub depod1($;$$);
    +
    +sub depod($) {
    +	my $string;
    +	if ( ref( $_[0] ) ) {
    +		$string = ${ $_[0] };
    +		${ $_[0] } = depod1( \$string );
    +	} else {
    +		$string = $_[0];
    +		depod1( \$string );
    +	}
    +}
    +
    +sub depod1($;$$) {
    +	my ( $rstr, $func, $closing ) = @_;
    +	my $res = '';
    +	return $res unless defined $$rstr;
    +	if ( !defined($func) ) {
    +
    +		# skip to next begin of an interior sequence
    +		while ( $$rstr =~ s/\A(.*?)([BCEFILSXZ])<(<+[^\S\n]+)?//s ) {
    +
    +			# recurse into its text
    +			$res .= $1 . depod1( $rstr, $2, closing $3);
    +		}
    +		$res .= $$rstr;
    +	} elsif ( $func eq 'E' ) {
    +
    +		# E - convert to character
    +		$$rstr =~ s/^([^>]*)>//;
    +		$res .= $E2c{$1} || "";
    +	} elsif ( $func eq 'X' ) {
    +
    +		# X<> - ignore
    +		$$rstr =~ s/^[^>]*>//;
    +	} elsif ( $func eq 'Z' ) {
    +
    +		# Z<> - empty
    +		$$rstr =~ s/^>//;
    +	} else {
    +
    +		# all others: either recurse into new function or
    +		# terminate at closing angle bracket
    +		my $term = pattern $closing;
    +		while ( $$rstr =~ s/\A(.*?)(([BCEFILSXZ])<(<+[^\S\n]+)?|$term)//s ) {
    +			$res .= $1;
    +			last unless $3;
    +			$res .= depod1( $rstr, $3, closing $4 );
    +		}
    +		## If we're here and $2 ne '>': undelimited interior sequence.
    +		## Ignored, as this is called without proper indication of where we are.
    +		## Rely on process_text to produce diagnostics.
    +	}
    +	return $res;
    +}
    +
    +{
    +	my %seen;    # static fragment record hash
    +
    +	sub fragment_id_readable {
    +		my $text     = shift;
    +		my $generate = shift;    # optional flag
    +
    +		my $orig = $text;
    +
    +		# leave the words for the fragment identifier,
    +		# change everything else to underbars.
    +		$text =~
    +			s/[^A-Za-z0-9_]+/_/g;    # do not use \W to avoid locale dependency.
    +		$text =~ s/_{2,}/_/g;
    +		$text =~ s/\A_//;
    +		$text =~ s/_\Z//;
    +
    +		unless ($text) {
    +
    +			# Nothing left after removing punctuation, so leave it as is
    +			# E.g. if option is named: "=item -#"
    +
    +			$text = $orig;
    +		}
    +
    +		if ($generate) {
    +			if ( exists $seen{$text} ) {
    +
    +				# This already exists, make it unique
    +				$seen{$text}++;
    +				$text = $text . $seen{$text};
    +			} else {
    +				$seen{$text} = 1;    # first time seen this fragment
    +			}
    +		}
    +
    +		$text;
    +	}
    +}
    +
    +my @HC;
    +
    +sub fragment_id_obfuscated {         # This was the old "_2d_2d__"
    +	my $text     = shift;
    +	my $generate = shift;            # optional flag
    +
    +	# text? Normalize by obfuscating the fragment id to make it unique
    +	$text =~ s/\s+/_/sg;
    +
    +	$text =~ s{(\W)}{
    +        defined( $HC[ord($1)] ) ? $HC[ord($1)]
    +        : ( $HC[ord($1)] = sprintf( "%%%02X", ord($1) ) ) }gxe;
    +	$text = substr( $text, 0, 50 );
    +
    +	$text;
    +}
    +
    +#
    +# fragment_id - construct a fragment identifier from:
    +#   a) =item text
    +#   b) contents of C<...>
    +#
    +
    +sub fragment_id {
    +	my $text     = shift;
    +	my $generate = shift;    # optional flag
    +
    +	$text =~ s/\s+\Z//s;
    +	if ($text) {
    +
    +		# a method or function?
    +		return $1 if $text =~ /(\w+)\s*\(/;
    +		return $1 if $text =~ /->\s*(\w+)\s*\(?/;
    +
    +		# a variable name?
    +		return $1 if $text =~ /^([\$\@%*]\S+)/;
    +
    +		# some pattern matching operator?
    +		return $1 if $text =~ m|^(\w+/).*/\w*$|;
    +
    +		# fancy stuff... like "do { }"
    +		return $1 if $text =~ m|^(\w+)\s*{.*}$|;
    +
    +		# honour the perlfunc manpage: func [PAR[,[ ]PAR]...]
    +		# and some funnies with ... Module ...
    +		return $1 if $text =~ m{^([a-z\d_]+)(\s+[A-Z,/& ][A-Z\d,/& ]*)?$};
    +		return $1 if $text =~ m{^([a-z\d]+)\s+Module(\s+[A-Z\d,/& ]+)?$};
    +
    +		return fragment_id_readable( $text, $generate );
    +	} else {
    +		return;
    +	}
    +}
    +
    +#
    +# make_URL_href - generate HTML href from URL
    +# Special treatment for CGI queries.
    +#
    +sub make_URL_href($) {
    +	my ($url) = @_;
    +	if ( $url !~ s{^(http:[-\w/#~:.+=&%@!]+)(\?.*)$}{$1}i ) {
    +		$url = "$url";
    +	}
    +	return $url;
    +}
    +
    +1;
    diff --git a/etc/wyatt8740/plugins/perl/Xchat.pm b/etc/wyatt8740/plugins/perl/Xchat.pm
    new file mode 100644
    index 0000000..70daffa
    --- /dev/null
    +++ b/etc/wyatt8740/plugins/perl/Xchat.pm
    @@ -0,0 +1,963 @@
    +# line 1 "Xchat.pm"
    +BEGIN {
    +	$INC{'Xchat.pm'} = 'DUMMY';
    +}
    +
    +$SIG{__WARN__} = sub {
    +	my $message = shift @_;
    +	my ($package) = caller;
    +	
    +	# redirect Gtk/Glib errors and warnings back to STDERR
    +	my $message_levels =	qr/ERROR|CRITICAL|WARNING|MESSAGE|INFO|DEBUG/;
    +	if( $message =~ /^(?:Gtk|GLib|Gdk)(?:-\w+)?-$message_levels/i ) {
    +		print STDERR $message;
    +	} else {
    +
    +		if( defined &Xchat::Internal::print ) {
    +			Xchat::print( $message );
    +		} else {
    +			warn $message;
    +		}
    +	}
    +};
    +
    +use File::Spec ();
    +use File::Basename ();
    +use File::Glob ();
    +use List::Util ();
    +use Symbol();
    +use Time::HiRes ();
    +use Carp ();
    +
    +{
    +package Xchat;
    +use base qw(Exporter);
    +use strict;
    +use warnings;
    +
    +sub PRI_HIGHEST ();
    +sub PRI_HIGH ();
    +sub PRI_NORM ();
    +sub PRI_LOW ();
    +sub PRI_LOWEST ();
    +
    +sub EAT_NONE ();
    +sub EAT_XCHAT ();
    +sub EAT_PLUIN ();
    +sub EAT_ALL ();
    +
    +sub KEEP ();
    +sub REMOVE ();
    +sub FD_READ ();
    +sub FD_WRITE ();
    +sub FD_EXCEPTION ();
    +sub FD_NOTSOCKET ();
    +
    +sub get_context;
    +sub Xchat::Internal::context_info;
    +sub Xchat::Internal::print;
    +
    +our %EXPORT_TAGS = (
    +	constants => [
    +		qw(PRI_HIGHEST PRI_HIGH PRI_NORM PRI_LOW PRI_LOWEST), # priorities
    +		qw(EAT_NONE EAT_XCHAT EAT_PLUGIN EAT_ALL), # callback return values
    +		qw(FD_READ FD_WRITE FD_EXCEPTION FD_NOTSOCKET), # fd flags
    +		qw(KEEP REMOVE), # timers
    +	],
    +	hooks => [
    +		qw(hook_server hook_command hook_print hook_timer hook_fd unhook),
    +	],
    +	util => [
    +		qw(register nickcmp strip_code send_modes), # misc
    +		qw(print prnt printf prntf command commandf emit_print), # output
    +		qw(find_context get_context set_context), # context
    +		qw(get_info get_prefs get_list context_info user_info), # input
    +	],
    +);
    +
    +$EXPORT_TAGS{all} = [ map { @{$_} } @EXPORT_TAGS{qw(constants hooks util)}];
    +our @EXPORT = @{$EXPORT_TAGS{constants}};
    +our @EXPORT_OK = @{$EXPORT_TAGS{all}};
    +
    +sub register {
    +	my $package = Xchat::Embed::find_pkg();
    +	my $pkg_info = Xchat::Embed::pkg_info( $package );
    +	my $filename = $pkg_info->{filename};
    +	my ($name, $version, $description, $callback) = @_;
    +	
    +	if( defined $pkg_info->{gui_entry} ) {
    +		Xchat::print( "Xchat::register called more than once in "
    +			. $pkg_info->{filename} );
    +		return ();
    +	}
    +	
    +	$description = "" unless defined $description;
    +	$pkg_info->{shutdown} = $callback;
    +	unless( $name && $name =~ /[[:print:]\w]/ ) {
    +		$name = "Not supplied";
    +	}
    +	unless( $version && $version =~ /\d+(?:\.\d+)?/ ) {
    +		$version = "NaN";
    +	}
    +	$pkg_info->{gui_entry} =
    +		Xchat::Internal::register( $name, $version, $description, $filename );
    +	# keep with old behavior
    +	return ();
    +}
    +
    +sub hook_server {
    +	return undef unless @_ >= 2;
    +	my $message = shift;
    +	my $callback = shift;
    +	my $options = shift;
    +	my $package = Xchat::Embed::find_pkg();
    +	
    +	$callback = Xchat::Embed::fix_callback( $package, $callback );
    +	
    +	my ($priority, $data) = ( Xchat::PRI_NORM, undef );
    +	
    +	if( ref( $options ) eq 'HASH' ) {
    +		if( exists( $options->{priority} ) && defined( $options->{priority} ) ) {
    +			$priority = $options->{priority};
    +		}
    +		
    +		if( exists( $options->{data} ) && defined( $options->{data} ) ) {
    +			$data = $options->{data};
    +		}
    +	}
    +	
    +	my $pkg_info = Xchat::Embed::pkg_info( $package );
    +	my $hook = Xchat::Internal::hook_server(
    +		$message, $priority, $callback, $data
    +	);
    +	push @{$pkg_info->{hooks}}, $hook if defined $hook;
    +	return $hook;
    +}
    +
    +sub hook_command {
    +	return undef unless @_ >= 2;
    +	my $command = shift;
    +	my $callback = shift;
    +	my $options = shift;
    +	my $package = Xchat::Embed::find_pkg();
    +
    +	$callback = Xchat::Embed::fix_callback( $package, $callback );
    +	
    +	my ($priority, $help_text, $data) = ( Xchat::PRI_NORM, undef, undef );
    +	
    +	if( ref( $options ) eq 'HASH' ) {
    +		if( exists( $options->{priority} ) && defined( $options->{priority} ) ) {
    +			$priority = $options->{priority};
    +		}
    +
    +		if(
    +			exists( $options->{help_text} )
    +			&& defined( $options->{help_text} )
    +		) {
    +			$help_text = $options->{help_text};
    +		}
    +
    +		if ( exists( $options->{data} ) && defined( $options->{data} ) ) {
    +			$data = $options->{data};
    +		}
    +	}
    +	
    +	my $pkg_info = Xchat::Embed::pkg_info( $package );
    +	my $hook = Xchat::Internal::hook_command(
    +		$command, $priority, $callback, $help_text, $data
    +	);
    +	push @{$pkg_info->{hooks}}, $hook if defined $hook;
    +	return $hook;
    +}
    +
    +sub hook_print {
    +	return undef unless @_ >= 2;
    +	my $event = shift;
    +	my $callback = shift;
    +	my $options = shift;
    +	my $package = Xchat::Embed::find_pkg();
    +
    +	$callback = Xchat::Embed::fix_callback( $package, $callback );
    +	
    +	my ($priority, $data) = ( Xchat::PRI_NORM, undef );
    +	
    +	if ( ref( $options ) eq 'HASH' ) {
    +		if ( exists( $options->{priority} ) && defined( $options->{priority} ) ) {
    +			$priority = $options->{priority};
    +		}
    +
    +		if ( exists( $options->{data} ) && defined( $options->{data} ) ) {
    +			$data = $options->{data};
    +		}
    +	}
    +	
    +	my $pkg_info = Xchat::Embed::pkg_info( $package );
    +	my $hook = Xchat::Internal::hook_print(
    +		$event, $priority, $callback, $data
    +	);
    +	push @{$pkg_info->{hooks}}, $hook if defined $hook;
    +	return $hook;
    +}
    +
    +sub hook_timer {
    +	return undef unless @_ >= 2;
    +	my ($timeout, $callback, $data) = @_;
    +	my $package = Xchat::Embed::find_pkg();
    +
    +	$callback = Xchat::Embed::fix_callback( $package, $callback );
    +
    +	if(
    +		ref( $data ) eq 'HASH' && exists( $data->{data} )
    +		&& defined( $data->{data} )
    +	) {
    +		$data = $data->{data};
    +	}
    +	
    +	my $pkg_info = Xchat::Embed::pkg_info( $package );
    +	my $hook = Xchat::Internal::hook_timer( $timeout, $callback, $data, $package );
    +	push @{$pkg_info->{hooks}}, $hook if defined $hook;
    +	return $hook;
    +}
    +
    +sub hook_fd {
    +	return undef unless @_ >= 2;
    +	my ($fd, $callback, $options) = @_;
    +	return undef unless defined $fd && defined $callback;
    +
    +	my $fileno = fileno $fd;
    +	return undef unless defined $fileno; # no underlying fd for this handle
    +	
    +	my ($package) = Xchat::Embed::find_pkg();
    +	$callback = Xchat::Embed::fix_callback( $package, $callback );
    +	
    +	my ($flags, $data) = (Xchat::FD_READ, undef);
    +
    +	if( ref( $options ) eq 'HASH' ) {
    +		if( exists( $options->{flags} ) && defined( $options->{flags} ) ) {
    +			$flags = $options->{flags};
    +		}
    +		
    +		if ( exists( $options->{data} ) && defined( $options->{data} ) ) {
    +			$data = $options->{data};
    +		}
    +	}
    +	
    +	my $cb = sub {
    +		my $userdata = shift;
    +		return $userdata->{CB}->(
    +			$userdata->{FD}, $userdata->{FLAGS}, $userdata->{DATA},
    +		);
    +	};
    +	
    +	my $pkg_info = Xchat::Embed::pkg_info( $package );
    +	my $hook = Xchat::Internal::hook_fd(
    +		$fileno, $cb, $flags, {
    +			DATA => $data, FD => $fd, CB => $callback, FLAGS => $flags,
    +		}
    +	);
    +	push @{$pkg_info->{hooks}}, $hook if defined $hook;
    +	return $hook;
    +}
    +
    +sub unhook {
    +	my $hook = shift @_;
    +	my $package = shift @_;
    +	($package) = caller unless $package;
    +	my $pkg_info = Xchat::Embed::pkg_info( $package );
    +
    +	if( defined( $hook )
    +		&& $hook =~ /^\d+$/
    +		&& grep { $_ == $hook } @{$pkg_info->{hooks}} ) {
    +		$pkg_info->{hooks} = [grep { $_ != $hook } @{$pkg_info->{hooks}}];
    +		return Xchat::Internal::unhook( $hook );
    +	}
    +	return ();
    +}
    +
    +sub _do_for_each {
    +	my ($cb, $channels, $servers) = @_;
    +
    +	# not specifying any channels or servers is not the same as specifying
    +	# undef for both
    +	# - not specifying either results in calling the callback inthe current ctx
    +	# - specifying undef for for both results in calling the callback in the
    +	#   front/currently selected tab
    +	if( @_ == 3 && !($channels || $servers) ) { 
    +		$channels = [ undef ];
    +		$servers = [ undef ];
    +	} elsif( !($channels || $servers) ) {
    +		$cb->();
    +		return 1;
    +	}
    +
    +	$channels = [ $channels ] unless ref( $channels ) eq 'ARRAY';
    +
    +	if( $servers ) {
    +		$servers = [ $servers ] unless ref( $servers ) eq 'ARRAY';
    +	} else {
    +		$servers = [ undef ];
    +	}
    +
    +	my $num_done;
    +	my $old_ctx = Xchat::get_context();
    +	for my $server ( @$servers ) {
    +		for my $channel ( @$channels ) {
    +			if( Xchat::set_context( $channel, $server ) ) {
    +				$cb->();
    +				$num_done++
    +			}
    +		}
    +	}
    +	Xchat::set_context( $old_ctx );
    +	return $num_done;
    +}
    +
    +sub print {
    +	my $text = shift @_;
    +	return "" unless defined $text;
    +	if( ref( $text ) eq 'ARRAY' ) {
    +		if( $, ) {
    +			$text = join $, , @$text;
    +		} else {
    +			$text = join "", @$text;
    +		}
    +	}
    +	
    +	return _do_for_each(
    +		sub { Xchat::Internal::print( $text ); },
    +		@_
    +	);
    +}
    +
    +sub printf {
    +	my $format = shift;
    +	Xchat::print( sprintf( $format, @_ ) );
    +}
    +
    +# make Xchat::prnt() and Xchat::prntf() as aliases for Xchat::print() and 
    +# Xchat::printf(), mainly useful when these functions are exported
    +sub prnt {
    +	goto &Xchat::print;
    +}
    +
    +sub prntf {
    +	goto &Xchat::printf;
    +}
    +
    +sub command {
    +	my $command = shift;
    +	return "" unless defined $command;
    +	my @commands;
    +	
    +	if( ref( $command ) eq 'ARRAY' ) {
    +		@commands = @$command;
    +	} else {
    +		@commands = ($command);
    +	}
    +	
    +	return _do_for_each(
    +		sub { Xchat::Internal::command( $_ ) foreach @commands },
    +		@_
    +	);
    +}
    +
    +sub commandf {
    +	my $format = shift;
    +	Xchat::command( sprintf( $format, @_ ) );
    +}
    +
    +sub set_context {
    +	my $context;
    +	if( @_ == 2 ) {
    +		my ($channel, $server) = @_;
    +		$context = Xchat::find_context( $channel, $server );
    +	} elsif( @_ == 1 ) {
    +		if( defined $_[0] && $_[0] =~ /^\d+$/ ) {
    +			$context = $_[0];
    +		} else {
    +			$context = Xchat::find_context( $_[0] );
    +		}
    +	} elsif( @_ == 0 ) {
    +		$context = Xchat::find_context();
    +	}
    +	return $context ? Xchat::Internal::set_context( $context ) : 0;
    +}
    +
    +sub get_info {
    +	my $id = shift;
    +	my $info;
    +	
    +	if( defined( $id ) ) {
    +		if( grep { $id eq $_ } qw(state_cursor id) ) {
    +			$info = Xchat::get_prefs( $id );
    +		} else {
    +			$info = Xchat::Internal::get_info( $id );
    +		}
    +	}
    +	return $info;
    +}
    +
    +sub user_info {
    +	my $nick = Xchat::strip_code(shift @_ || Xchat::get_info( "nick" ));
    +	my $user;
    +	for (Xchat::get_list( "users" ) ) {
    +		if ( Xchat::nickcmp( $_->{nick}, $nick ) == 0 ) {
    +			$user = $_;
    +			last;
    +		}
    +	}
    +	return $user;
    +}
    +
    +sub context_info {
    +	my $ctx = shift @_ || Xchat::get_context;
    +	my $old_ctx = Xchat::get_context;
    +	my @fields = (
    +		qw(away channel charset host id inputbox libdirfs modes network),
    +		qw(nick nickserv server topic version win_ptr win_status),
    +		qw(xchatdir xchatdirfs state_cursor),
    +	);
    +
    +	if( Xchat::set_context( $ctx ) ) {
    +		my %info;
    +		for my $field ( @fields ) {
    +			$info{$field} = Xchat::get_info( $field );
    +		}
    +		
    +		my $ctx_info = Xchat::Internal::context_info;
    +		@info{keys %$ctx_info} = values %$ctx_info;
    +		
    +		Xchat::set_context( $old_ctx );
    +		return %info if wantarray;
    +		return \%info;
    +	} else {
    +		return undef;
    +	}
    +}
    +
    +sub get_list {
    +	unless( grep { $_[0] eq $_ } qw(channels dcc ignore notify users networks) ) {
    +		Carp::carp( "'$_[0]' does not appear to be a valid list name" );
    +	}
    +	if( $_[0] eq 'networks' ) {
    +		return Xchat::List::Network->get();
    +	} else {
    +		return Xchat::Internal::get_list( $_[0] );
    +	}
    +}
    +
    +sub strip_code {
    +	my $pattern = qr<
    +		\cB| #Bold
    +		\cC\d{0,2}(?:,\d{1,2})?| #Color
    +		\e\[(?:\d{1,2}(?:;\d{1,2})*)?m| # ANSI color code
    +		\cG| #Beep
    +		\cO| #Reset
    +		\cV| #Reverse
    +		\c_  #Underline
    +	>x;
    +		
    +	if( defined wantarray ) {
    +		my $msg = shift;
    +		$msg =~ s/$pattern//g;
    +		return $msg;
    +	} else {
    +		$_[0] =~ s/$pattern//g if defined $_[0];
    +	}
    +}
    +
    +} # end of Xchat package
    +
    +{
    +package Xchat::Embed;
    +use strict;
    +use warnings;
    +# list of loaded scripts keyed by their package names
    +our %scripts;
    +
    +sub load {
    +	my $file = expand_homedir( shift @_ );
    +	my $package = file2pkg( $file );
    +	
    +	if( exists $scripts{$package} ) {
    +		my $pkg_info = pkg_info( $package );
    +		my $filename = File::Basename::basename( $pkg_info->{filename} );
    +		Xchat::printf(
    +			qq{'%s' already loaded from '%s'.\n},
    +			$filename, $pkg_info->{filename}
    +		);
    +		Xchat::print(
    +			'If this is a different script then it rename and try '.
    +			'loading it again.'
    +		);
    +		return 2;
    +	}
    +	
    +	if( open my $source_handle, $file ) {
    +		my $source = do {local $/; <$source_handle>};
    +		close $source_handle;
    +		# we shouldn't care about things after __END__
    +		$source =~ s/^__END__.*//ms;
    +		
    +		if(
    +			my @replacements = $source =~
    +				m/^\s*package ((?:[^\W:]+(?:::)?)+)\s*?;/mg
    +		) {
    +			
    +			if ( @replacements > 1 ) {
    +				Xchat::print(
    +					"Too many package defintions, only 1 is allowed\n"
    +				);
    +				return 1;
    +			}
    +			
    +			my $original_package = shift @replacements;
    +			
    +			# remove original package declaration
    +			$source =~ s/^(package $original_package\s*;)/#$1/m;
    +			
    +			# fixes things up for code calling subs with fully qualified names
    +			$source =~ s/${original_package}:://g;
    +		}
    +		
    +		# this must come before the eval or the filename will not be found in
    +		# Xchat::register
    +		$scripts{$package}{filename} = $file;
    +		$scripts{$package}{loaded_at} = Time::HiRes::time();
    +
    +		my $full_path = File::Spec->rel2abs( $file );
    +		$source =~ s/^/#line 1 "$full_path"\n\x7Bpackage $package;/;
    +
    +		# make sure we add the closing } even if the last line is a comment
    +		if( $source =~ /^#.*\Z/m ) {
    +			$source =~ s/^(?=#.*\Z)/\x7D/m;
    +		} else {
    +			$source =~ s/\Z/\x7D/;
    +		}
    +
    +		_do_eval( $source );
    +
    +		unless( exists $scripts{$package}{gui_entry} ) {
    +			$scripts{$package}{gui_entry} =
    +				Xchat::Internal::register(
    +					"", "unknown", "", $file
    +				);
    +		}
    +		
    +		if( $@ ) {
    +			# something went wrong
    +			$@ =~ s/\(eval \d+\)/$file/g;
    +			Xchat::print( "Error loading '$file':\n$@\n" );
    +			# make sure the script list doesn't contain false information
    +			unload( $scripts{$package}{filename} );
    +			return 1;
    +		}
    +	} else {
    +		Xchat::print( "Error opening '$file': $!\n" );
    +		return 2;
    +	}
    +
    +	return 0;
    +}
    +
    +sub _do_eval {
    +	no strict;
    +	no warnings;
    +	eval $_[0];
    +}
    +
    +sub unload {
    +	my $file = shift @_;
    +	my $package = file2pkg( $file );
    +	my $pkg_info = pkg_info( $package );
    +
    +	if( $pkg_info ) {	
    +		# take care of the shutdown callback
    +		if( exists $pkg_info->{shutdown} ) {
    +			# allow incorrectly written scripts to be unloaded
    +			eval {
    +				if( ref $pkg_info->{shutdown} eq 'CODE' ) {
    +					$pkg_info->{shutdown}->();
    +				} elsif ( $pkg_info->{shutdown} ) {
    +					no strict 'refs';
    +					&{$pkg_info->{shutdown}};
    +				}
    +			};
    +		}
    +
    +		if( exists $pkg_info->{hooks} ) {
    +			for my $hook ( @{$pkg_info->{hooks}} ) {
    +				Xchat::unhook( $hook, $package );
    +			}
    +		}
    +
    +
    +		if( exists $pkg_info->{gui_entry} ) {
    +			plugingui_remove( $pkg_info->{gui_entry} );
    +		}
    +		
    +		Symbol::delete_package( $package );
    +		delete $scripts{$package};
    +		return Xchat::EAT_ALL;
    +	} else {
    +		Xchat::print( qq{"$file" is not loaded.\n} );
    +		return Xchat::EAT_NONE;
    +	}
    +}
    +
    +sub unload_all {
    +	for my $package ( keys %scripts ) {
    +		unload( $scripts{$package}->{filename} );
    +	}
    +	
    +	return Xchat::EAT_ALL;
    +}
    +
    +sub reload {
    +	my $file = shift @_;
    +	my $package = file2pkg( $file );
    +	my $pkg_info = pkg_info( $package );
    +	my $fullpath = $file;
    +	
    +	if( $pkg_info ) {
    +		$fullpath = $pkg_info->{filename};
    +		unload( $file );
    +	}
    +	
    +	load( $fullpath );
    +	return Xchat::EAT_ALL;
    +}
    +
    +sub reload_all {
    +	my @dirs = Xchat::get_info( "xchatdirfs" ) || Xchat::get_info( "xchatdir" );
    +	push @dirs, File::Spec->catdir( $dirs[0], "plugins" );
    +	for my $dir ( @dirs ) {
    +		my $auto_load_glob = File::Spec->catfile( $dir, "*.pl" );
    +		my @scripts = map { $_->{filename} }
    +			sort { $a->{loaded_at} <=> $b->{loaded_at} } values %scripts;
    +		push @scripts, File::Glob::bsd_glob( $auto_load_glob );
    +
    +		my %seen;
    +		@scripts = grep { !$seen{ $_ }++ } @scripts;
    +
    +		unload_all();
    +		for my $script ( @scripts ) {
    +			if( !pkg_info( file2pkg( $script ) ) ) {
    +				load( $script );
    +			}
    +		}
    +	}
    +}
    +#sub auto_load {
    +#	my $dir = Xchat::get_info( "xchatdirfs" ) || Xchat::get_info( "xchatdir" );
    +#
    +#	if( opendir my $dir_handle, $dir ) {
    +#		my @files = readdir $dir_handle;
    +# 		
    +#		for( @files ) {
    +#			my $fullpath = File::Spec->catfile( $dir, $_ );
    +#			load( $fullpath ) if $fullpath =~ m/\.pl$/i;
    +#		}
    +#
    +#		closedir $dir_handle;
    +#	}
    +#}
    +
    +sub expand_homedir {
    +	my $file = shift @_;
    +
    +	if ( $^O eq "MSWin32" ) {
    +		$file =~ s/^~/$ENV{USERPROFILE}/;
    +	} else {
    +		$file =~ s{^~}{
    +			(getpwuid($>))[7] ||  $ENV{HOME} || $ENV{LOGDIR}
    +		}ex;
    +	}
    +	return $file;
    +}
    +
    +sub file2pkg {
    +	my $string = File::Basename::basename( shift @_ );
    +	$string =~ s/\.pl$//i;
    +	$string =~ s|([^A-Za-z0-9/])|'_'.unpack("H*",$1)|eg;
    +	return "Xchat::Script::" . $string;
    +}
    +
    +sub pkg_info {
    +	my $package = shift @_;
    +	return $scripts{$package};
    +}
    +
    +sub find_external_pkg {
    +	my $level = 1;
    +
    +	while( my @frame = caller( $level ) ) {
    +		return @frame if $frame[0] !~ /^Xchat/;
    +		$level++;
    +	}
    +
    +}
    +
    +sub find_pkg {
    +	my $level = 1;
    +
    +	while( my ($package, $file, $line) = caller( $level ) ) {
    +		return $package if $package =~ /^Xchat::Script::/;
    +		$level++;
    +	}
    +
    +	my @frame = find_external_pkg();
    +	my $location;
    +
    +	if( $frame[0] or $frame[1] ) {
    +		$location = $frame[1] ? $frame[1] : "package $frame[0]";
    +		$location .= " line $frame[2]";
    +	} else {
    +		$location = "unknown location";
    +	}
    +
    +	die "Unable to determine which script this hook belongs to. at $location\n";
    +
    +}
    +
    +sub fix_callback {
    +	my ($package, $callback) = @_;
    +	
    +	unless( ref $callback ) {
    +		# change the package to the correct one in case it was hardcoded
    +		$callback =~ s/^.*:://;
    +		$callback = qq[${package}::$callback];
    +
    +		no strict 'subs';
    +		$callback = \&{$callback};
    +	}
    +	
    +	return $callback;
    +}
    +} # end of Xchat::Embed package
    +
    +{
    +package Xchat::List::Network;
    +use strict;
    +use warnings;
    +use Storable qw(dclone);
    +my $last_modified;
    +my @servers;
    +
    +sub get {
    +	my $server_file = Xchat::get_info( "xchatdirfs" ) . "/servlist_.conf";
    +
    +	# recreate the list only if the server list file has changed
    +	if( -f $server_file && 
    +			(!defined $last_modified || $last_modified != -M $server_file ) ) {
    +		$last_modified = -M _;
    +
    +		if( open my $fh, "<", $server_file ) {
    +			local $/ = "\n\n";
    +			while( my $record = <$fh> ) {
    +				chomp $record;
    +				next if $record =~ /^v=/; # skip the version line
    +				push @servers, Xchat::List::Network::Entry::parse( $record );
    +			}
    +		} else {
    +			warn "Unable to open '$server_file': $!";
    +		}
    +	}
    +
    +	my $clone = dclone( \@servers );
    +	return @$clone;
    +}
    +} # end of Xchat::List::Network
    +
    +{
    +package Xchat::List::Network::Entry;
    +use strict;
    +use warnings;
    +
    +my %key_for = (
    +	I => "irc_nick1",
    +	i => "irc_nick2",
    +	U => "irc_user_name",
    +	R => "irc_real_name",
    +	P => "server_password",
    +	B => "nickserv_password",
    +	N => "network",
    +	D => "selected",
    +	E => "encoding",
    +);
    +my $letter_key_re = join "|", keys %key_for;
    +
    +sub parse {
    +	my $data  = shift;
    +	my $entry = {
    +		irc_nick1       => undef,
    +		irc_nick2       => undef,
    +		irc_user_name   => undef,
    +		irc_real_name   => undef,
    +		server_password => undef,
    +
    +		# the order of the channels need to be maintained
    +		# list of { channel => .., key => ... }
    +		autojoins         => Xchat::List::Network::AutoJoin->new( '' ),
    +		connect_commands   => [],
    +		flags             => {},
    +		selected          => undef,
    +		encoding          => undef,
    +		servers           => [],
    +		nickserv_password => undef,
    +		network           => undef,
    +	};
    +
    +	my @fields = split /\n/, $data;
    +	chomp @fields;
    +
    +	for my $field ( @fields ) {
    +	SWITCH: for ( $field ) {
    +			/^($letter_key_re)=(.*)/ && do {
    +				$entry->{ $key_for{ $1 } } = $2;
    +				last SWITCH;
    +			};
    +
    +			/^J.(.*)/ && do {
    +				$entry->{ autojoins } =
    +					Xchat::List::Network::AutoJoin->new( $1 );
    +			};
    +
    +			/^F.(.*)/ && do {
    +				$entry->{ flags } = parse_flags( $1 );
    +			};
    +
    +			/^S.(.+)/ && do {
    +				push @{$entry->{servers}}, parse_server( $1 );
    +			};
    +
    +			/^C.(.+)/ && do {
    +				push @{$entry->{connect_commands}}, $1;
    +			};
    +		}
    +	}
    +
    +#	$entry->{ autojoins } = $entry->{ autojoin_channels };
    +	return $entry;
    +}
    +
    +sub parse_flags {
    +	my $value = shift || 0;
    +	my %flags;
    +
    +	$flags{ "cycle" }         = $value & 1  ? 1 : 0;
    +	$flags{ "use_global" }    = $value & 2  ? 1 : 0;
    +	$flags{ "use_ssl" }       = $value & 4  ? 1 : 0;
    +	$flags{ "autoconnect" }   = $value & 8  ? 1 : 0;
    +	$flags{ "use_proxy" }     = $value & 16 ? 1 : 0;
    +	$flags{ "allow_invalid" } = $value & 32 ? 1 : 0;
    +
    +	return \%flags;
    +}
    +
    +sub parse_server {
    +	my $data = shift;
    +	if( $data ) {
    +		my ($host, $port) = split /\//, $data;
    +		unless( $port ) {
    +			my @parts = split /:/, $host;
    +
    +			# if more than 2 then we are probably dealing with a IPv6 address
    +			# if less than 2 then no port was specified
    +			if( @parts == 2 ) {
    +				$port = $parts[1];
    +			}
    +		}
    +
    +		$port ||= 6667;
    +		return { host => $host, port => $port };
    +	}
    +}
    +
    +} # end of Xchat::List::Network::Entry
    +
    +{
    +package Xchat::List::Network::AutoJoin;
    +use strict;
    +use warnings;
    +
    +use overload
    +#	'%{}' => \&as_hash,
    +#	'@{}' => \&as_array,
    +	'""'   => 'as_string',
    +	'0+'   => 'as_bool';
    +
    +sub new {
    +	my $class = shift;
    +	my $line = shift;
    +
    +	my @autojoins;
    +
    +	if ( $line ) {
    +		my ( $channels, $keys ) = split / /, $line, 2;
    +		my @channels = split /,/, $channels;
    +		my @keys     = split /,/, ($keys || '');
    +
    +		for my $channel ( @channels ) {
    +			my $key = shift @keys;
    +			$key = '' unless defined $key;
    +
    +			push @autojoins, {
    +				channel => $channel,
    +				key     => $key,
    +				};
    +		}
    +	}
    +	return bless \@autojoins, $class;
    +}
    +
    +sub channels {
    +	my $self = shift;
    +
    +	if( wantarray ) {
    +		return map { $_->{channel} } @$self;
    +	} else {
    +		return scalar @$self;
    +	}
    +}
    +
    +sub keys {
    +	my $self = shift;
    +	return map { $_->{key} } @$self  ;
    +
    +}
    +
    +sub pairs {
    +	my $self = shift;
    +
    +	my @channels = $self->channels;
    +	my @keys = $self->keys;
    +
    +	my @pairs = map { $_ => shift @keys } @channels;
    +}
    +
    +sub as_hash {
    +	my $self = shift;
    +	return +{ $self->pairs };
    +}
    +
    +sub as_string {
    +	my $self = shift;
    +	return join " ",
    +		join( ",", $self->channels ),
    +		join( ",", $self->keys );
    +}
    +
    +sub as_array {
    +	my $self = shift;
    +	return [ map { \%$_ } @$self ];
    +}
    +
    +sub as_bool {
    +	my $self = shift;
    +	return $self->channels ? 1 : "";
    +}
    +
    +} # end of Xchat::Server::AutoJoin
    +
    +1;
    diff --git a/etc/wyatt8740/plugins/perl/alt_completion.pl b/etc/wyatt8740/plugins/perl/alt_completion.pl
    new file mode 100644
    index 0000000..a21c24c
    --- /dev/null
    +++ b/etc/wyatt8740/plugins/perl/alt_completion.pl
    @@ -0,0 +1,463 @@
    +use strict;
    +use warnings;
    +use Xchat ();
    +use File::Spec ();
    +use File::Basename qw(fileparse);
    +
    +# if the last time you addressed someone was greater than this many minutes
    +# ago, ignore it
    +# this avoids having people you have talked to a long time ago coming up too
    +# early in the completion list
    +# Setting this to 0 will disable the check which is effectively the same as
    +# setting it to infinity
    +my $last_use_threshold = 10; # 10 minutes
    +
    +# added to the front of a completion the same way as a suffix, only if
    +# the word is at the beginning of the line
    +my $prefix = '';
    +
    +my $path_completion = 1;
    +my $base_path = '';
    +
    +Xchat::register(
    +	"Tab Completion", "1.0303_01", "Alternative tab completion behavior"
    +);
    +Xchat::hook_print( "Key Press", \&complete );
    +Xchat::hook_print( "Close Context", \&close_context );
    +Xchat::hook_print( "Focus Tab", \&focus_tab );
    +Xchat::hook_print( "Part", \&clean_selected );
    +Xchat::hook_print( "Part with Reason", \&clean_selected );
    +Xchat::hook_command( "", \&track_selected );
    +
    +sub SHIFT() { 1 }
    +sub CTRL() { 4 }
    +sub ALT() { 8 }
    +
    +my %completions;
    +my %last_visit;
    +my %selected;
    +my %escape_map = (
    +	'[' => qr![\[{]!,
    +	'{' => qr![\[{]!,
    +	'}' => qr![\]}]!,
    +	']' => qr![\]}]!,
    +	'\\' => qr![\\\|]!,
    +	'|' => qr![\\\|]!,
    +	'.' => qr!\.!,
    +	'^' => qr!\^!,
    +	'$' => qr!\$!,
    +	'*' => qr!\*!,
    +	'+' => qr!\+!,
    +	'?' => qr!\?!,
    +	'(' => qr!\(!,
    +	')' => qr!\)!,
    +	'-' => qr!\-!,
    +);
    +
    +my $escapes = join "", keys %escape_map;
    +$escapes = qr/[\Q$escapes\E]/;
    +
    +sub complete {
    +	# if $_[0][0] contains the value of the key pressed
    +	# $_[0][1] contains modifiers
    +	# the value for tab is 0xFF09
    +	# the value for shift-tab(Left Tab) is 0xFE20
    +	# we don't care about other keys
    +
    +	return Xchat::EAT_NONE unless $_[0][0] == 0xFF09 || $_[0][0] == 0xFE20;
    +	return Xchat::EAT_NONE if $_[0][0] == 0xFF09 && $_[0][1] & (CTRL|ALT|SHIFT);
    +	
    +	# we also don't care about other kinds of tabs besides channel tabs
    +#	return Xchat::EAT_NONE unless Xchat::context_info()->{type} == 2;
    +	
    +	# In case some other script decides to be stupid and alter the base index
    +	local $[ = 0;
    +	
    +	# loop backwards for shift+tab
    +	my $delta = $_[0][1] & SHIFT ? -1 : 1;
    +	my $context = Xchat::get_context;
    +	$completions{$context} ||= {};
    +	
    +	my $completions = $completions{$context};
    +	$completions->{pos} ||= -1;
    +
    +	my $suffix = Xchat::get_prefs( "completion_suffix" );
    +	$suffix =~ s/^\s+//;
    +	
    +	my $input = Xchat::get_info( "inputbox" );
    +	my $cursor_pos = Xchat::get_info( "state_cursor" );
    +	my $left = substr( $input, 0, $cursor_pos );
    +	my $right = substr( $input, $cursor_pos );
    +	my $length = length $left;
    +
    +	# trim spaces from the end of $left to avoid grabbing the wrong word
    +	# this is mainly needed for completion at the very beginning where a space
    +	# is added after the completion
    +	$left =~ s/\s+$//;
    +
    +	# always add one to the index because
    +	# 1) if a space is found we want the position after it
    +	# 2) if a space isn't found then we get back -1
    +	my $word_start = rindex( $left, " " ) + 1;
    +	my $word = substr( $left, $word_start );
    +	$left = substr( $left, 0, -length $word );
    +
    +	my $command_char = Xchat::get_prefs( "input_command_char" );
    +	# ignore commands
    +	if( ($word !~ m{^[${command_char}]})
    +		or ( $word =~ m{^[${command_char}]} and $word_start != 0 ) ) {
    +
    +		if( $cursor_pos == length $input # end of input box
    +			# not a valid nick char
    +			&& $input =~ /(?{pos} # not continuing a completion
    +			&& $word !~ m{^(?:[&#/~]|[[:alpha:]]:\\)} ) { # not a channel or path
    +			$word_start = $cursor_pos;
    +			$left = $input;
    +			$length = length $length;
    +			$right = "";
    +			$word = "";
    +		}
    +
    +		if( $word_start == 0 && $prefix && $word =~ /^\Q$prefix/ ) {
    +			$word =~ s/^\Q$prefix//;
    +		}
    +
    +		my $completed; # this is going to be the "completed" word
    +
    +		# for parital completions and channel names so a : isn't added
    +		my $skip_suffix = ($word =~ /^[&#]/) ? 1 : 0;
    +		
    +		# continuing from a previous completion
    +		if(
    +			exists $completions->{matches} && @{$completions->{matches}}
    +			&& $cursor_pos == $completions->{pos}
    +			&& $word =~ /^\Q$completions->{matches}[$completions->{index}]/
    +		) {
    +			$completions->{index} += $delta;
    +
    +			if( $completions->{index} < 0 ) {
    +				$completions->{index} += @{$completions->{matches}};
    +			} else {
    +				$completions->{index} %= @{$completions->{matches}};
    +			}
    +
    +			$completed = $completions->{matches}[ $completions->{index} ];
    +		} else {
    +
    +			if( $word =~ /^[&#]/ ) {
    +			# channel name completion
    +				$completions->{matches} = [ matching_channels( $word ) ];
    +			} elsif( $word =~ m{^(?:~|/|[[:alpha:]]:\\)} ) {
    +			# file name completion
    +				$completions->{matches} = [ matching_files( $word ) ];
    +				$skip_suffix = 1;
    +			} else {
    +			# nick completion
    +				# fix $word so { equals [, ] equals }, \ equals |
    +				# and escape regex metacharacters
    +				$word =~ s/($escapes)/$escape_map{$1}/g;
    +
    +				$completions->{matches} = [ matching_nicks( $word ) ];
    +			}
    +			$completions->{index} = 0;
    +
    +			$completed = $completions->{matches}[ $completions->{index} ];
    +		}
    +		
    +		my $completion_amount = Xchat::get_prefs( "completion_amount" );
    +		
    +		# don't cycle if the number of possible completions is greater than
    +		# completion_amount
    +		if(
    +			@{$completions->{matches}} > $completion_amount
    +			&& @{$completions->{matches}} != 1
    +		) {
    +			# don't print if we tabbed in the beginning and the list of possible
    +			# completions includes all nicks in the channel
    +			if( @{$completions->{matches}} < Xchat::get_list("users") ) {
    +				Xchat::print( join " ", @{$completions->{matches}}, "\n" );
    +			}
    +			
    +			$completed = lcs( $completions->{matches} );
    +			$skip_suffix = 1;
    +		}
    +		
    +		if( $completed ) {
    +			
    +			if( $word_start == 0 && !$skip_suffix ) {
    +				# at the start of the line append completion suffix
    +				Xchat::command( "settext $prefix$completed$suffix$right");
    +				$completions->{pos} = length( "$prefix$completed$suffix" );
    +			} else {
    +				Xchat::command( "settext $left$completed$right" );
    +				$completions->{pos} = length( "$left$completed" );
    +			}
    +			
    +			Xchat::command( "setcursor $completions->{pos}" );
    +		}
    +
    +=begin
    +# debugging stuff
    +		local $, = " ";
    +		my $input_length = length $input;
    +		Xchat::print [
    +			qq{input[$input]},
    +			qq{input_length[$input_length]},
    +			qq{cursor[$cursor_pos]},
    +			qq{start[$word_start]},
    +			qq{length[$length]},
    +			qq{left[$left]},
    +			qq{word[$word]}, qq{[right[$right]},
    +			qq{completed[$completed]},
    +			qq{pos[$completions->{pos}]},
    +		];
    +		use Data::Dumper;
    +		local $Data::Dumper::Indent = 0;
    +		Xchat::print Dumper $completions->{matches};
    +=cut
    +
    +		return Xchat::EAT_ALL;
    +	} else {
    +		return Xchat::EAT_NONE;
    +	}
    +}
    +
    +
    +# all channels starting with $word
    +sub matching_channels {
    +	my $word = shift;
    +
    +	# for use in compare_channels();
    +	our $current_chan;
    +	local $current_chan = Xchat::get_info( "channel" );
    +
    +	my $conn_id = Xchat::get_info( "id" );
    +	$word =~ s/^[&#]+//;
    +
    +	return
    +		map {	$_->[1]->{channel} }
    +		sort compare_channels map {
    +			my $chan = $_->{channel};
    +			$chan =~ s/^[#&]+//;
    +
    +			# comparisons will be done based only on the name
    +			# matching name, same connection, only channels
    +			$chan =~ /^$word/ && $_->{id} == $conn_id ?
    +			[ $chan, $_ ] :
    +			()
    +		} channels();
    +}
    +
    +sub channels {
    +	return grep { $_->{type} == 2 } Xchat::get_list( "channels" );
    +}
    +
    +sub compare_channels {
    +	# package variable, value set in matching_channels()
    +	our $current_chan;
    +
    +	# turn off warnings generated from channels that have not yet been visited
    +	# since the script was loaded
    +	no warnings "uninitialized";
    +
    +	# the current channel is always first, then ordered by most recently visited
    +	return
    +		$a->[1]{channel} eq $current_chan ? -1 :
    +		$b->[1]{channel} eq $current_chan ? 1 :
    +		$last_visit{ $b->[1]{context} } <=> $last_visit{ $a->[1]{context} }
    +		|| $a->[1]{channel} cmp $b->[1]{channel};
    +
    +}
    +
    +sub matching_nicks {
    +	my $word = shift;
    +
    +	# for use in compare_nicks()
    +	our ($my_nick, $selections, $now);
    +	local $my_nick = Xchat::get_info( "nick" );
    +	local $selections = $selected{ Xchat::get_context() };
    +	local $now = time;
    +
    +	return
    +		map { $_->{nick} }
    +		sort compare_nicks grep {
    +			$_->{nick} =~ /^$word/i
    +		} Xchat::get_list( "users" )
    +
    +}
    +
    +sub max {
    +	return unless @_;
    +	my $max = shift;
    +	for(@_) {
    +		$max = $_ if $_ > $max;
    +	}
    +	return $max;
    +}
    +
    +sub compare_times {
    +	# package variables set in matching_nicks()
    +	our $selections;
    +	our $now;
    +	
    +	for my $nick ( $a->{nick}, $b->{nick} ) {
    +		# turn off the warnings that get generated from users who have yet
    +		# to speak since the script was loaded
    +		no warnings "uninitialized";
    +
    +		if( $last_use_threshold
    +			&& (( $now - $selections->{$nick}) > ($last_use_threshold * 60)) ) {
    +			delete $selections->{ $nick }
    +		}
    +	}
    +	my $a_time = $selections->{ $a->{nick} } || 0 ;
    +	my $b_time = $selections->{ $b->{nick} } || 0 ;
    +	
    +	if( $a_time || $b_time ) {
    +		return $b_time <=> $a_time;
    +	} elsif( !$a_time && !$b_time ) {
    +		return $b->{lasttalk} <=> $a->{lasttalk};
    +	}
    +
    +}
    +
    +sub compare_nicks {
    +	# more package variables, value set in matching_nicks()
    +	our $my_nick;
    +
    +	# our own nick is always last, then ordered by the people we spoke to most
    +	# recently and the people who were speaking most recently
    +	return 
    +		$a->{nick} eq $my_nick ? 1 :
    +		$b->{nick} eq $my_nick ? -1 :
    +		compare_times()
    +		|| Xchat::nickcmp( $a->{nick}, $b->{nick} );
    +
    +#		$selections->{ $b->{nick} } <=> $selections->{ $a->{nick} }
    +#		||	$b->{lasttalk} <=> $a->{lasttalk}
    +
    +}
    +
    +sub matching_files {
    +	my $word = shift;
    +
    +	my $path = expand_tilde( $word );
    +	my ($file, $dir) = fileparse( $path );
    +
    +	if( opendir my $dir_handle, $dir ) {
    +		my @files;
    +
    +		if( $file ) {
    +			@files = grep { /^\Q$file/ } readdir $dir_handle;
    +		} else {
    +			@files = readdir $dir_handle;
    +		}
    +
    +		return sort map { File::Spec->catfile( $dir, $_ ) }
    +			grep { !/^\.{1,2}$/ } @files;
    +	} else {
    +		return ();
    +	}
    +}
    +
    +# Remove completion related data for tabs that are closed
    +sub close_context {
    +	my $context = Xchat::get_context;
    +	delete $completions{$context};
    +	delete $last_visit{$context};
    +	return Xchat::EAT_NONE;
    +}
    +
    +# track visit times
    +sub focus_tab {
    +	$last_visit{Xchat::get_context()} = time();
    +}
    +
    +# keep track of the last time a message was addressed to someone
    +# a message is considered addressed to someone if their nick is used followed
    +# by the completion suffix
    +sub track_selected {
    +	my $input = $_[1][0];
    +	return Xchat::EAT_NONE unless defined $input;
    +
    +	my $suffix = Xchat::get_prefs( "completion_suffix" );
    +	for( grep defined, $input =~ /^(.+)\Q$suffix/, $_[0][0] ) {
    +		if( in_channel( $_ ) ) {
    +			$selected{Xchat::get_context()}{$_} = time();
    +			last;
    +		}
    +	}
    +
    +	return Xchat::EAT_NONE;
    +}
    +
    +# if a user is in the current channel
    +# user_info() can also be used instead of the loop
    +sub in_channel {
    +	my $target = shift;
    +	for my $nick ( nicks() ) {
    +		if( $nick eq $target ) {
    +			return 1;
    +		}
    +	}
    +
    +	return 0;
    +}
    +
    +# list of nicks in the current channel
    +sub nicks {
    +	return map { $_->{nick} } Xchat::get_list( "users" );
    +}
    +
    +# remove people from the selected list when they leave the channel
    +sub clean_selected {
    +	delete $selected{ Xchat::get_context() }{$_[0][0]};
    +	return Xchat::EAT_NONE;
    +}
    +
    +# Longest common substring
    +# Used for partial completion when using non-cycling completion
    +sub lcs {
    +	my @nicks = @{+shift};
    +	return "" if @nicks == 0;
    +	return $nicks[0] if @nicks == 1;
    +
    +	my $substring = shift @nicks;
    +
    +	while(@nicks) {
    +		$substring = common_string( $substring, shift @nicks );
    +	}
    +	
    +	return $substring;
    +}
    +
    +sub common_string {
    +	my ($nick1, $nick2) = @_;
    +	my $index = 0;
    +
    +	$index++ while(
    +		($index < length $nick1) && ($index < length $nick2) &&
    +			lc(substr( $nick1, $index, 1 )) eq lc(substr( $nick2, $index, 1 ))
    +	);
    +	
    +	
    +	return substr( $nick1, 0, $index );
    +}
    +
    +sub expand_tilde {
    +	my $file = shift;
    +
    +	$file =~ s/^~/home_dir()/e;
    +	return $file;
    +}
    +
    +sub home_dir {
    +	return $base_path if $base_path;
    +
    +	if ( $^O eq "MSWin32" ) {
    +		return $ENV{USERPROFILE};
    +	} else {
    +		return ((getpwuid($>))[7] ||  $ENV{HOME} || $ENV{LOGDIR});
    +	}
    +}
    diff --git a/etc/wyatt8740/plugins/perl/generate_header b/etc/wyatt8740/plugins/perl/generate_header
    new file mode 100755
    index 0000000..05b12b7
    --- /dev/null
    +++ b/etc/wyatt8740/plugins/perl/generate_header
    @@ -0,0 +1,36 @@
    +#!/usr/bin/perl
    +
    +use strict;
    +use warnings;
    +
    +sub header {
    +  my $file = shift;
    +  open my $input, "<", $file or die "Couldn't open '$file':$!";
    +  my @file = <$input>;
    +  close $file;
    +  return qq{"#line 1 \\"$file\\"\\n"\n}, toc(@file);
    +}
    +
    +sub toc {
    +  my @lines = @_;
    +  for( @lines ) {
    +    if( /^\s*$/s ) { $_ = qq{"\\n"\n}; next; }
    +    if( /^\s*#/ ) { $_ = qq{"\\n"\n}; next; }
    +    s/\\/\\\\/g; # double the number of \'s
    +    s/"/\\"/g;
    +    s/^\s*/"/;
    +    s/\n/\\n"\n/;
    +  }
    +  return @lines;
    +}
    +
    +for my $files ( [ "Xchat.pm", "xchat.pm.h" ], [ "IRC.pm", "irc.pm.h" ] ) {
    +	my ($input, $output) = @$files;
    +
    +	open my $header, ">", $output or die "Couldn't open '$output': $!";
    +
    +	print $header qq{#line 1 "$input"\n};
    +	print $header header( $input );
    +
    +	close $header;
    +}
    diff --git a/etc/wyatt8740/plugins/perl/perl.c b/etc/wyatt8740/plugins/perl/perl.c
    new file mode 100644
    index 0000000..989deeb
    --- /dev/null
    +++ b/etc/wyatt8740/plugins/perl/perl.c
    @@ -0,0 +1,1518 @@
    +/* X-Chat 2.0 PERL Plugin
    + * Copyright (C) 1998-2002 Peter Zelezny.
    + *
    + * This program is free software; you can redistribute it and/or modify
    + * it under the terms of the GNU General Public License as published by
    + * the Free Software Foundation; either version 2 of the License, or
    + * (at your option) any later version.
    + *
    + * This program 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 General Public License for more details.
    + *
    + * You should have received a copy of the GNU General Public License
    + * along with this program; if not, write to the Free Software
    + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
    + */
    +
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#ifdef ENABLE_NLS
    +#include 
    +#endif
    +#ifdef WIN32
    +#include 
    +#endif
    +
    +#undef PACKAGE
    +#include "../../config.h"		  /* for #define OLD_PERL */
    +#include "xchat-plugin.h"
    +
    +static xchat_plugin *ph;		  /* plugin handle */
    +
    +static int perl_load_file (char *script_name);
    +
    +#ifdef WIN32
    +
    +static DWORD
    +child (char *str)
    +{
    +	MessageBoxA (0, str, "Perl DLL Error",
    +					 MB_OK | MB_ICONHAND | MB_SETFOREGROUND | MB_TASKMODAL);
    +	return 0;
    +}
    +
    +static void
    +thread_mbox (char *str)
    +{
    +	DWORD tid;
    +
    +	CloseHandle (CreateThread (NULL, 0, (LPTHREAD_START_ROUTINE) child,
    +										str, 0, &tid));
    +}
    +
    +#endif
    +
    +/* leave this before XSUB.h, to avoid readdir() being redefined */
    +
    +static void
    +perl_auto_load_from_path (const char *path)
    +{
    +	DIR *dir;
    +	struct dirent *ent;
    +
    +	dir = opendir (path);
    +	if (dir) {
    +		while ((ent = readdir (dir))) {
    +			int len = strlen (ent->d_name);
    +			if (len > 3 && strcasecmp (".pl", ent->d_name + len - 3) == 0) {
    +				char *file = malloc (len + strlen (path) + 2);
    +				sprintf (file, "%s/%s", path, ent->d_name);
    +				perl_load_file (file);
    +				free (file);
    +			}
    +		}
    +		closedir (dir);
    +	}
    +}
    +
    +static int
    +perl_auto_load (void *unused)
    +{
    +	const char *xdir;
    +	char *sub_dir;
    +#ifdef WIN32
    +	int copied = 0;
    +	char *slash = NULL;
    +#endif
    +
    +	/* get the dir in local filesystem encoding (what opendir() expects!) */
    +	xdir = xchat_get_info (ph, "xchatdirfs");
    +	if (!xdir)			/* xchatdirfs is new for 2.0.9, will fail on older */
    +		xdir = xchat_get_info (ph, "xchatdir");
    +
    +	/* autoload from ~/.xchat2/ or ${APPDATA}\X-Chat 2\ on win32 */
    +	perl_auto_load_from_path (xdir);
    +
    +	sub_dir = malloc (strlen (xdir) + 9);
    +	strcpy (sub_dir, xdir);
    +	strcat (sub_dir, "/plugins");
    +	perl_auto_load_from_path (sub_dir);
    +	free (sub_dir);
    +
    +#ifdef WIN32
    +	/* autoload from  C:\program files\xchat\plugins\ */
    +	sub_dir = malloc (1025 + 9);
    +	copied = GetModuleFileName( 0, sub_dir, 1024 );
    +	sub_dir[copied] = '\0';
    +	slash = strrchr( sub_dir, '\\' );
    +	if( slash != NULL ) {
    +		*slash = '\0';
    +	}
    +	perl_auto_load_from_path ( strncat (sub_dir, "\\plugins", 9));
    +	free (sub_dir);
    +#endif
    +	return 0;
    +}
    +
    +#include 
    +#define WIN32IOP_H
    +#include 
    +#include 
    +
    +typedef struct
    +{
    +	SV *callback;
    +	SV *userdata;
    +	xchat_hook *hook;   /* required for timers */
    +	xchat_context *ctx; /* allow timers to remember their context */
    +	SV *package;      /* need to track the package name when removing hooks
    +	                       by returning REMOVE
    +							   */
    +	unsigned int depth;
    +} HookData;
    +
    +static PerlInterpreter *my_perl = NULL;
    +extern void boot_DynaLoader (pTHX_ CV * cv);
    +
    +/*
    +  this is used for autoload and shutdown callbacks
    +*/
    +static int
    +execute_perl (SV * function, char *args)
    +{
    +
    +	int count, ret_value = 1;
    +
    +	dSP;
    +	ENTER;
    +	SAVETMPS;
    +
    +	PUSHMARK (SP);
    +	XPUSHs (sv_2mortal (newSVpv (args, 0)));
    +	PUTBACK;
    +
    +	count = call_sv (function, G_EVAL | G_SCALAR);
    +	SPAGAIN;
    +
    +	if (SvTRUE (ERRSV)) {
    +		/*STRLEN n_a;
    +		xchat_printf(ph, "Perl error: %s\n", SvPV(ERRSV, count)); */
    +		if (!SvOK (POPs)) {}		/* remove undef from the top of the stack */
    +	} else if (count != 1) {
    +		xchat_printf (ph, "Perl error: expected 1 value from %s, "
    +						  "got: %d\n", function, count);
    +	} else {
    +		ret_value = POPi;
    +	}
    +
    +	PUTBACK;
    +	FREETMPS;
    +	LEAVE;
    +
    +	return ret_value;
    +}
    +
    +static char *
    +get_filename (char *word[], char *word_eol[])
    +{
    +	int len;
    +	char *file;
    +
    +	len = strlen (word[2]);
    +
    +	/* if called as /load "filename.pl" the only difference between word and
    +	 * word_eol will be the two quotes
    +	 */
    +	
    +	if (strchr (word[2], ' ') != NULL
    +		|| (strlen (word_eol[2]) - strlen(word[2])) == 2 )
    +	{
    +		file = word[2];
    +	} else {
    +		file = word_eol[2];
    +	}
    +
    +	len = strlen (file);
    +
    +	if (len > 3 && strncasecmp (".pl", file + len - 3, 3) == 0) {
    +		return file;
    +	}
    +
    +	return NULL;
    +}
    +
    +static SV *
    +list_item_to_sv ( xchat_list *list, const char *const *fields )
    +{
    +	HV *hash = newHV();
    +	SV *field_value;
    +	const char *field;
    +	int field_index = 0;
    +	const char *field_name;
    +	int name_len;
    +
    +	while (fields[field_index] != NULL) {
    +		field_name = fields[field_index] + 1;
    +		name_len = strlen (field_name);
    +
    +		switch (fields[field_index][0]) {
    +		case 's':
    +			field = xchat_list_str (ph, list, field_name);
    +			if (field != NULL) {
    +				field_value = newSVpvn (field, strlen (field));
    +			} else {
    +				field_value = &PL_sv_undef;
    +			}
    +			break;
    +		case 'p':
    +			field_value = newSViv (PTR2IV (xchat_list_str (ph, list,
    +																	 field_name)));
    +			break;
    +		case 'i':
    +			field_value = newSVuv (xchat_list_int (ph, list, field_name));
    +			break;
    +		case 't':
    +			field_value = newSVnv (xchat_list_time (ph, list, field_name));
    +			break;
    +		default:
    +			field_value = &PL_sv_undef;
    +		}
    +		hv_store (hash, field_name, name_len, field_value, 0);
    +		field_index++;
    +	}
    +	return sv_2mortal (newRV_noinc ((SV *) hash));
    +}
    +
    +static AV *
    +array2av (char *array[])
    +{
    +	int count = 0;
    +	SV *temp = NULL;
    +	AV *av = newAV();
    +	sv_2mortal ((SV *)av);
    +
    +	for (
    +		count = 1;
    +		count < 32 && array[count] != NULL && array[count][0] != 0;
    +		count++
    +	) {
    +		temp = newSVpv (array[count], 0);
    +		SvUTF8_on (temp);
    +		av_push (av, temp);
    +	}
    +
    +	return av;
    +}
    +
    +static int
    +fd_cb (int fd, int flags, void *userdata)
    +{
    +	HookData *data = (HookData *) userdata;
    +	int retVal = 0;
    +	int count = 0;
    +
    +	dSP;
    +	ENTER;
    +	SAVETMPS;
    +
    +	PUSHMARK (SP);
    +	XPUSHs (data->userdata);
    +	PUTBACK;
    +
    +	count = call_sv (data->callback, G_EVAL);
    +	SPAGAIN;
    +
    +	if (SvTRUE (ERRSV)) {
    +		xchat_printf (ph, "Error in fd callback %s", SvPV_nolen (ERRSV));
    +		if (!SvOK (POPs)) {}		  /* remove undef from the top of the stack */
    +		retVal = XCHAT_EAT_ALL;
    +	} else {
    +		if (count != 1) {
    +			xchat_print (ph, "Fd handler should only return 1 value.");
    +			retVal = XCHAT_EAT_NONE;
    +		} else {
    +			retVal = POPi;
    +			if (retVal == 0) {
    +				/* if 0 is returned, the fd is going to get unhooked */
    +				PUSHMARK (SP);
    +				XPUSHs (sv_2mortal (newSViv (PTR2IV (data->hook))));
    +				PUTBACK;
    +
    +				call_pv ("Xchat::unhook", G_EVAL);
    +				SPAGAIN;
    +
    +				SvREFCNT_dec (data->callback);
    +
    +				if (data->userdata) {
    +					SvREFCNT_dec (data->userdata);
    +				}
    +				free (data);
    +			}
    +		}
    +
    +	}
    +
    +	PUTBACK;
    +	FREETMPS;
    +	LEAVE;
    +
    +	return retVal;
    +}
    +
    +static int
    +timer_cb (void *userdata)
    +{
    +	HookData *data = (HookData *) userdata;
    +	int retVal = 0;
    +	int count = 0;
    +
    +	dSP;
    +	ENTER;
    +	SAVETMPS;
    +
    +	PUSHMARK (SP);
    +	XPUSHs (data->userdata);
    +	PUTBACK;
    +
    +	if (data->ctx) {
    +		xchat_set_context (ph, data->ctx);
    +	}
    +	count = call_sv (data->callback, G_EVAL);
    +	SPAGAIN;
    +
    +	if (SvTRUE (ERRSV)) {
    +		xchat_printf (ph, "Error in timer callback %s", SvPV_nolen (ERRSV));
    +		if (!SvOK (POPs)) {}		  /* remove undef from the top of the stack */
    +		retVal = XCHAT_EAT_ALL;
    +	} else {
    +		if (count != 1) {
    +			xchat_print (ph, "Timer handler should only return 1 value.");
    +			retVal = XCHAT_EAT_NONE;
    +		} else {
    +			retVal = POPi;
    +			if (retVal == 0) {
    +				/* if 0 is return the timer is going to get unhooked */
    +				PUSHMARK (SP);
    +				XPUSHs (sv_2mortal (newSViv (PTR2IV (data->hook))));
    +				XPUSHs (sv_mortalcopy (data->package));
    +				PUTBACK;
    +
    +				call_pv ("Xchat::unhook", G_EVAL);
    +				SPAGAIN;
    +			}
    +		}
    +
    +	}
    +
    +	PUTBACK;
    +	FREETMPS;
    +	LEAVE;
    +
    +	return retVal;
    +}
    +
    +static int
    +server_cb (char *word[], char *word_eol[], void *userdata)
    +{
    +	HookData *data = (HookData *) userdata;
    +	int retVal = 0;
    +	int count = 0;
    +
    +	dSP;
    +	ENTER;
    +	SAVETMPS;
    +
    +	if (data->depth)
    +		return XCHAT_EAT_NONE;
    +
    +	/*               xchat_printf (ph, */
    +	/*                               "Recieved %d words in server callback", av_len (wd)); */
    +	PUSHMARK (SP);
    +	XPUSHs (newRV_noinc ((SV *) array2av (word)));
    +	XPUSHs (newRV_noinc ((SV *) array2av (word_eol)));
    +	XPUSHs (data->userdata);
    +	PUTBACK;
    +
    +	data->depth++;
    +	count = call_sv (data->callback, G_EVAL);
    +	data->depth--;
    +	SPAGAIN;
    +	if (SvTRUE (ERRSV)) {
    +		xchat_printf (ph, "Error in server callback %s", SvPV_nolen (ERRSV));
    +		if (!SvOK (POPs)) {}		  /* remove undef from the top of the stack */
    +		retVal = XCHAT_EAT_NONE;
    +	} else {
    +		if (count != 1) {
    +			xchat_print (ph, "Server handler should only return 1 value.");
    +			retVal = XCHAT_EAT_NONE;
    +		} else {
    +			retVal = POPi;
    +		}
    +
    +	}
    +
    +	PUTBACK;
    +	FREETMPS;
    +	LEAVE;
    +
    +	return retVal;
    +}
    +
    +static int
    +command_cb (char *word[], char *word_eol[], void *userdata)
    +{
    +	HookData *data = (HookData *) userdata;
    +	int retVal = 0;
    +	int count = 0;
    +
    +	dSP;
    +	ENTER;
    +	SAVETMPS;
    +	
    +	if (data->depth)
    +		return XCHAT_EAT_NONE;
    +
    +	/*               xchat_printf (ph, "Recieved %d words in command callback", */
    +	/*                               av_len (wd)); */
    +	PUSHMARK (SP);
    +	XPUSHs (newRV_noinc ((SV *) array2av (word)));
    +	XPUSHs (newRV_noinc ((SV *) array2av (word_eol)));
    +	XPUSHs (data->userdata);
    +	PUTBACK;
    +
    +	data->depth++;
    +	count = call_sv (data->callback, G_EVAL);
    +	data->depth--;
    +	SPAGAIN;
    +	if (SvTRUE (ERRSV)) {
    +		xchat_printf (ph, "Error in command callback %s", SvPV_nolen (ERRSV));
    +		if (!SvOK (POPs)) {}		  /* remove undef from the top of the stack */
    +		retVal = XCHAT_EAT_XCHAT;
    +	} else {
    +		if (count != 1) {
    +			xchat_print (ph, "Command handler should only return 1 value.");
    +			retVal = XCHAT_EAT_NONE;
    +		} else {
    +			retVal = POPi;
    +		}
    +
    +	}
    +
    +	PUTBACK;
    +	FREETMPS;
    +	LEAVE;
    +
    +	return retVal;
    +}
    +
    +static int
    +print_cb (char *word[], void *userdata)
    +{
    +
    +	HookData *data = (HookData *) userdata;
    +	SV *temp = NULL;
    +	int retVal = 0;
    +	int count = 1;
    +	int last_index = 31;
    +	/* must be initialized after SAVETMPS */
    +	AV *wd = NULL;
    +
    +	dSP;
    +	ENTER;
    +	SAVETMPS;
    +
    +	if (data->depth)
    +		return XCHAT_EAT_NONE;
    +
    +	wd = newAV ();
    +	sv_2mortal ((SV *) wd);
    +
    +	/* need to scan backwards to find the index of the last element since some
    +	   events such as "DCC Timeout" can have NULL elements in between non NULL
    +	   elements */
    +
    +	while (last_index >= 0
    +			 && (word[last_index] == NULL || word[last_index][0] == 0)) {
    +		last_index--;
    +	}
    +
    +	for (count = 1; count <= last_index; count++) {
    +		if (word[count] == NULL) {
    +			av_push (wd, &PL_sv_undef);
    +		} else if (word[count][0] == 0) {
    +			av_push (wd, newSVpvn ("",0));	
    +		} else {
    +			temp = newSVpv (word[count], 0);
    +			SvUTF8_on (temp);
    +			av_push (wd, temp);
    +		}
    +	}
    +
    +	/*xchat_printf (ph, "Recieved %d words in print callback", av_len (wd)+1); */
    +	PUSHMARK (SP);
    +	XPUSHs (newRV_noinc ((SV *) wd));
    +	XPUSHs (data->userdata);
    +	PUTBACK;
    +
    +	data->depth++;
    +	count = call_sv (data->callback, G_EVAL);
    +	data->depth--;
    +	SPAGAIN;
    +	if (SvTRUE (ERRSV)) {
    +		xchat_printf (ph, "Error in print callback %s", SvPV_nolen (ERRSV));
    +		if (!SvOK (POPs)) {}		  /* remove undef from the top of the stack */
    +		retVal = XCHAT_EAT_NONE;
    +	} else {
    +		if (count != 1) {
    +			xchat_print (ph, "Print handler should only return 1 value.");
    +			retVal = XCHAT_EAT_NONE;
    +		} else {
    +			retVal = POPi;
    +		}
    +
    +	}
    +
    +	PUTBACK;
    +	FREETMPS;
    +	LEAVE;
    +
    +	return retVal;
    +}
    +
    +/* custom IRC perl functions for scripting */
    +
    +/* Xchat::Internal::register (scriptname, version, desc, shutdowncallback, filename)
    + *
    + */
    +
    +static
    +XS (XS_Xchat_register)
    +{
    +	char *name, *version, *desc, *filename;
    +	void *gui_entry;
    +	dXSARGS;
    +	if (items != 4) {
    +		xchat_printf (ph,
    +						  "Usage: Xchat::Internal::register(scriptname, version, desc, filename)");
    +	} else {
    +		name = SvPV_nolen (ST (0));
    +		version = SvPV_nolen (ST (1));
    +		desc = SvPV_nolen (ST (2));
    +		filename = SvPV_nolen (ST (3));
    +
    +		gui_entry = xchat_plugingui_add (ph, filename, name,
    +													desc, version, NULL);
    +
    +		XSRETURN_IV (PTR2IV (gui_entry));
    +
    +	}
    +}
    +
    +
    +/* Xchat::print(output) */
    +static
    +XS (XS_Xchat_print)
    +{
    +
    +	char *text = NULL;
    +
    +	dXSARGS;
    +	if (items != 1) {
    +		xchat_print (ph, "Usage: Xchat::Internal::print(text)");
    +	} else {
    +		text = SvPV_nolen (ST (0));
    +		xchat_print (ph, text);
    +	}
    +	XSRETURN_EMPTY;
    +}
    +
    +static
    +XS (XS_Xchat_emit_print)
    +{
    +	char *event_name;
    +	int RETVAL;
    +	int count;
    +
    +	dXSARGS;
    +	if (items < 1) {
    +		xchat_print (ph, "Usage: Xchat::emit_print(event_name, ...)");
    +	} else {
    +		event_name = (char *) SvPV_nolen (ST (0));
    +		RETVAL = 0;
    +
    +		/* we need to figure out the number of defined values passed in */
    +		for (count = 0; count < items; count++) {
    +			if (!SvOK (ST (count))) {
    +				break;
    +			}
    +		}
    +
    +		switch (count) {
    +		case 1:
    +			RETVAL = xchat_emit_print (ph, event_name, NULL);
    +			break;
    +		case 2:
    +			RETVAL = xchat_emit_print (ph, event_name,
    +												SvPV_nolen (ST (1)), NULL);
    +			break;
    +		case 3:
    +			RETVAL = xchat_emit_print (ph, event_name,
    +												SvPV_nolen (ST (1)),
    +												SvPV_nolen (ST (2)), NULL);
    +			break;
    +		case 4:
    +			RETVAL = xchat_emit_print (ph, event_name,
    +												SvPV_nolen (ST (1)),
    +												SvPV_nolen (ST (2)),
    +												SvPV_nolen (ST (3)), NULL);
    +			break;
    +		case 5:
    +			RETVAL = xchat_emit_print (ph, event_name,
    +												SvPV_nolen (ST (1)),
    +												SvPV_nolen (ST (2)),
    +												SvPV_nolen (ST (3)),
    +												SvPV_nolen (ST (4)), NULL);
    +			break;
    +
    +		}
    +
    +		XSRETURN_IV (RETVAL);
    +	}
    +}
    +
    +static
    +XS (XS_Xchat_send_modes)
    +{
    +	AV *p_targets = NULL;
    +	int modes_per_line = 0;
    +	char sign;
    +	char mode;
    +	int i = 0;
    +	const char **targets;
    +	int target_count = 0;
    +	SV **elem;
    +
    +	dXSARGS;
    +	if (items < 3 || items > 4) {
    +		xchat_print (ph,
    +			"Usage: Xchat::send_modes( targets, sign, mode, modes_per_line)"
    +		);
    +	} else {
    +		if (SvROK (ST (0))) {
    +			p_targets = (AV*) SvRV (ST (0));
    +			target_count = av_len (p_targets) + 1;
    +			targets = malloc (target_count * sizeof (char *));
    +			for (i = 0; i < target_count; i++ ) {
    +				elem = av_fetch (p_targets, i, 0);
    +
    +				if (elem != NULL) {
    +					targets[i] = SvPV_nolen (*elem);
    +				} else {
    +					targets[i] = "";
    +				}
    +			}
    +		} else{
    +			targets = malloc (sizeof (char *));
    +			targets[0] = SvPV_nolen (ST (0));
    +			target_count = 1;
    +		}
    +		
    +		if (target_count == 0) {
    +			XSRETURN_EMPTY;
    +		}
    +
    +		sign = (SvPV_nolen (ST (1)))[0];
    +		mode = (SvPV_nolen (ST (2)))[0];
    +
    +		if (items == 4 ) {
    +			modes_per_line = (int) SvIV (ST (3)); 
    +		}
    +
    +		xchat_send_modes (ph, targets, target_count, modes_per_line, sign, mode);
    +		free (targets);
    +	}
    +}
    +static
    +XS (XS_Xchat_get_info)
    +{
    +	SV *temp = NULL;
    +	dXSARGS;
    +	if (items != 1) {
    +		xchat_print (ph, "Usage: Xchat::get_info(id)");
    +	} else {
    +		SV *id = ST (0);
    +		const char *RETVAL;
    +
    +		RETVAL = xchat_get_info (ph, SvPV_nolen (id));
    +		if (RETVAL == NULL) {
    +			XSRETURN_UNDEF;
    +		}
    +
    +		if (!strncmp ("win_ptr", SvPV_nolen (id), 7)) {
    +			XSRETURN_IV (PTR2IV (RETVAL));
    +		} else {
    +			
    +			if (
    +				!strncmp ("libdirfs", SvPV_nolen (id), 8) ||
    +				!strncmp ("xchatdirfs", SvPV_nolen (id), 10)
    +			) {
    +				XSRETURN_PV (RETVAL);
    +			} else {
    +				temp = newSVpv (RETVAL, 0);
    +				SvUTF8_on (temp);
    +				PUSHMARK (SP);
    +				XPUSHs (sv_2mortal (temp));
    +				PUTBACK;
    +			}
    +		}
    +	}
    +}
    +
    +static
    +XS (XS_Xchat_context_info)
    +{
    +	const char *const *fields;
    +	dXSARGS;
    +
    +	if (items > 0 ) {
    +		xchat_print (ph, "Usage: Xchat::Internal::context_info()");
    +	}
    +	fields = xchat_list_fields (ph, "channels" );
    +	XPUSHs (list_item_to_sv (NULL, fields));
    +	XSRETURN (1);
    +}
    +
    +static
    +XS (XS_Xchat_get_prefs)
    +{
    +	const char *str;
    +	int integer;
    +	SV *temp = NULL;
    +	dXSARGS;
    +	if (items != 1) {
    +		xchat_print (ph, "Usage: Xchat::get_prefs(name)");
    +	} else {
    +
    +
    +		switch (xchat_get_prefs (ph, SvPV_nolen (ST (0)), &str, &integer)) {
    +		case 0:
    +			XSRETURN_UNDEF;
    +			break;
    +		case 1:
    +			temp = newSVpv (str, 0);
    +			SvUTF8_on (temp);
    +			SP -= items;
    +			sp = mark;
    +			XPUSHs (sv_2mortal (temp));
    +			PUTBACK;
    +			break;
    +		case 2:
    +			XSRETURN_IV (integer);
    +			break;
    +		case 3:
    +			if (integer) {
    +				XSRETURN_YES;
    +			} else {
    +				XSRETURN_NO;
    +			}
    +		}
    +	}
    +}
    +
    +/* Xchat::Internal::hook_server(name, priority, callback, userdata) */
    +static
    +XS (XS_Xchat_hook_server)
    +{
    +
    +	char *name;
    +	int pri;
    +	SV *callback;
    +	SV *userdata;
    +	xchat_hook *hook;
    +	HookData *data;
    +
    +	dXSARGS;
    +
    +	if (items != 4) {
    +		xchat_print (ph,
    +						 "Usage: Xchat::Internal::hook_server(name, priority, callback, userdata)");
    +	} else {
    +		name = SvPV_nolen (ST (0));
    +		pri = (int) SvIV (ST (1));
    +		callback = ST (2);
    +		userdata = ST (3);
    +		data = NULL;
    +		data = malloc (sizeof (HookData));
    +		if (data == NULL) {
    +			XSRETURN_UNDEF;
    +		}
    +
    +		data->callback = sv_mortalcopy (callback);
    +		SvREFCNT_inc (data->callback);
    +		data->userdata = sv_mortalcopy (userdata);
    +		SvREFCNT_inc (data->userdata);
    +		data->depth = 0;
    +		data->package = NULL;
    +		hook = xchat_hook_server (ph, name, pri, server_cb, data);
    +
    +		XSRETURN_IV (PTR2IV (hook));
    +	}
    +}
    +
    +/* Xchat::Internal::hook_command(name, priority, callback, help_text, userdata) */
    +static
    +XS (XS_Xchat_hook_command)
    +{
    +	char *name;
    +	int pri;
    +	SV *callback;
    +	char *help_text = NULL;
    +	SV *userdata;
    +	xchat_hook *hook;
    +	HookData *data;
    +
    +	dXSARGS;
    +
    +	if (items != 5) {
    +		xchat_print (ph,
    +						 "Usage: Xchat::Internal::hook_command(name, priority, callback, help_text, userdata)");
    +	} else {
    +		name = SvPV_nolen (ST (0));
    +		pri = (int) SvIV (ST (1));
    +		callback = ST (2);
    +
    +		/* leave the help text has NULL if the help text is undefined to avoid
    +		 * overriding the default help message for builtin commands */
    +		if (SvOK(ST (3))) {
    +			help_text = SvPV_nolen (ST (3));
    +		}
    +
    +		userdata = ST (4);
    +		data = NULL;
    +
    +		data = malloc (sizeof (HookData));
    +		if (data == NULL) {
    +			XSRETURN_UNDEF;
    +		}
    +
    +		data->callback = sv_mortalcopy (callback);
    +		SvREFCNT_inc (data->callback);
    +		data->userdata = sv_mortalcopy (userdata);
    +		SvREFCNT_inc (data->userdata);
    +		data->depth = 0;
    +		data->package = NULL;
    +		hook = xchat_hook_command (ph, name, pri, command_cb, help_text, data);
    +
    +		XSRETURN_IV (PTR2IV (hook));
    +	}
    +
    +}
    +
    +/* Xchat::Internal::hook_print(name, priority, callback, [userdata]) */
    +static
    +XS (XS_Xchat_hook_print)
    +{
    +
    +	char *name;
    +	int pri;
    +	SV *callback;
    +	SV *userdata;
    +	xchat_hook *hook;
    +	HookData *data;
    +	dXSARGS;
    +	if (items != 4) {
    +		xchat_print (ph,
    +						 "Usage: Xchat::Internal::hook_print(name, priority, callback, userdata)");
    +	} else {
    +		name = SvPV_nolen (ST (0));
    +		pri = (int) SvIV (ST (1));
    +		callback = ST (2);
    +		data = NULL;
    +		userdata = ST (3);
    +
    +		data = malloc (sizeof (HookData));
    +		if (data == NULL) {
    +			XSRETURN_UNDEF;
    +		}
    +
    +		data->callback = sv_mortalcopy (callback);
    +		SvREFCNT_inc (data->callback);
    +		data->userdata = sv_mortalcopy (userdata);
    +		SvREFCNT_inc (data->userdata);
    +		data->depth = 0;
    +		data->package = NULL;
    +		hook = xchat_hook_print (ph, name, pri, print_cb, data);
    +
    +		XSRETURN_IV (PTR2IV (hook));
    +	}
    +}
    +
    +/* Xchat::Internal::hook_timer(timeout, callback, userdata) */
    +static
    +XS (XS_Xchat_hook_timer)
    +{
    +	int timeout;
    +	SV *callback;
    +	SV *userdata;
    +	xchat_hook *hook;
    +	SV *package;
    +	HookData *data;
    +
    +	dXSARGS;
    +
    +	if (items != 4) {
    +		xchat_print (ph,
    +						 "Usage: Xchat::Internal::hook_timer(timeout, callback, userdata, package)");
    +	} else {
    +		timeout = (int) SvIV (ST (0));
    +		callback = ST (1);
    +		data = NULL;
    +		userdata = ST (2);
    +		package = ST (3);
    +
    +		data = malloc (sizeof (HookData));
    +		if (data == NULL) {
    +			XSRETURN_UNDEF;
    +		}
    +
    +		data->callback = sv_mortalcopy (callback);
    +		SvREFCNT_inc (data->callback);
    +		data->userdata = sv_mortalcopy (userdata);
    +		SvREFCNT_inc (data->userdata);
    +		data->ctx = xchat_get_context (ph);
    +		data->package = sv_mortalcopy (package);
    +		SvREFCNT_inc (data->package);
    +		hook = xchat_hook_timer (ph, timeout, timer_cb, data);
    +		data->hook = hook;
    +
    +		XSRETURN_IV (PTR2IV (hook));
    +	}
    +}
    +
    +/* Xchat::Internal::hook_fd(fd, callback, flags, userdata) */
    +static
    +XS (XS_Xchat_hook_fd)
    +{
    +	int fd;
    +	SV *callback;
    +	int flags;
    +	SV *userdata;
    +	xchat_hook *hook;
    +	HookData *data;
    +
    +	dXSARGS;
    +
    +	if (items != 4) {
    +		xchat_print (ph,
    +						 "Usage: Xchat::Internal::hook_fd(fd, callback, flags, userdata)");
    +	} else {
    +		fd = (int) SvIV (ST (0));
    +		callback = ST (1);
    +		flags = (int) SvIV (ST (2));
    +		userdata = ST (3);
    +		data = NULL;
    +
    +#ifdef WIN32
    +		if ((flags & XCHAT_FD_NOTSOCKET) == 0) {
    +			/* this _get_osfhandle if from win32iop.h in the perl distribution,
    +			 *  not the one provided by Windows
    +			 */ 
    +			fd = _get_osfhandle(fd);
    +			if (fd < 0) {
    +				xchat_print(ph, "Invalid file descriptor");
    +				XSRETURN_UNDEF;
    +			}
    +		}
    +#endif
    +
    +		data = malloc (sizeof (HookData));
    +		if (data == NULL) {
    +			XSRETURN_UNDEF;
    +		}
    +
    +		data->callback = sv_mortalcopy (callback);
    +		SvREFCNT_inc (data->callback);
    +		data->userdata = sv_mortalcopy (userdata);
    +		SvREFCNT_inc (data->userdata);
    +		data->package = NULL;
    +		hook = xchat_hook_fd (ph, fd, flags, fd_cb, data);
    +		data->hook = hook;
    +
    +		XSRETURN_IV (PTR2IV (hook));
    +	}
    +}
    +
    +static
    +XS (XS_Xchat_unhook)
    +{
    +	xchat_hook *hook;
    +	HookData *userdata;
    +	int retCount = 0;
    +	dXSARGS;
    +	if (items != 1) {
    +		xchat_print (ph, "Usage: Xchat::unhook(hook)");
    +	} else {
    +		hook = INT2PTR (xchat_hook *, SvUV (ST (0)));
    +		userdata = (HookData *) xchat_unhook (ph, hook);
    +
    +		if (userdata != NULL) {
    +			if (userdata->callback != NULL) {
    +				SvREFCNT_dec (userdata->callback);
    +			}
    +
    +			if (userdata->userdata != NULL) {
    +				XPUSHs (sv_mortalcopy (userdata->userdata));
    +				SvREFCNT_dec (userdata->userdata);
    +				retCount = 1;
    +			}
    +
    +			if (userdata->package != NULL) {
    +				SvREFCNT_dec (userdata->package);
    +			}
    +			free (userdata);
    +		}
    +		XSRETURN (retCount);
    +	}
    +	XSRETURN_EMPTY;
    +}
    +
    +/* Xchat::Internal::command(command) */
    +static
    +XS (XS_Xchat_command)
    +{
    +	char *cmd = NULL;
    +
    +	dXSARGS;
    +	if (items != 1) {
    +		xchat_print (ph, "Usage: Xchat::Internal::command(command)");
    +	} else {
    +		cmd = SvPV_nolen (ST (0));
    +		xchat_command (ph, cmd);
    +
    +	}
    +	XSRETURN_EMPTY;
    +}
    +
    +static
    +XS (XS_Xchat_find_context)
    +{
    +	char *server = NULL;
    +	char *chan = NULL;
    +	xchat_context *RETVAL;
    +
    +	dXSARGS;
    +	if (items > 2)
    +		xchat_print (ph, "Usage: Xchat::find_context ([channel, [server]])");
    +	{
    +
    +		switch (items) {
    +		case 0:						  /* no server name and no channel name */
    +			/* nothing to do, server and chan are already NULL */
    +			break;
    +		case 1:						  /* channel name only */
    +			/* change channel value only if it is true or 0 */
    +			/* otherwise leave it as null */
    +			if (SvTRUE (ST (0)) || SvNIOK (ST (0))) {
    +				chan = SvPV_nolen (ST (0));
    +				/*                               xchat_printf( ph, "XSUB - find_context( %s, NULL )", chan ); */
    +			}
    +			/* else { xchat_print( ph, "XSUB - find_context( NULL, NULL )" ); } */
    +			/* chan is already NULL */
    +			break;
    +		case 2:						  /* server and channel */
    +			/* change channel value only if it is true or 0 */
    +			/* otherwise leave it as NULL */
    +			if (SvTRUE (ST (0)) || SvNIOK (ST (0))) {
    +				chan = SvPV_nolen (ST (0));
    +				/*                               xchat_printf( ph, "XSUB - find_context( %s, NULL )", SvPV_nolen(ST(0) )); */
    +			}
    +
    +			/* else { xchat_print( ph, "XSUB - 2 arg NULL chan" ); } */
    +			/* change server value only if it is true or 0 */
    +			/* otherwise leave it as NULL */
    +			if (SvTRUE (ST (1)) || SvNIOK (ST (1))) {
    +				server = SvPV_nolen (ST (1));
    +				/*                               xchat_printf( ph, "XSUB - find_context( NULL, %s )", SvPV_nolen(ST(1) )); */
    +			}
    +			/*  else { xchat_print( ph, "XSUB - 2 arg NULL server" ); } */
    +			break;
    +		}
    +
    +		RETVAL = xchat_find_context (ph, server, chan);
    +		if (RETVAL != NULL) {
    +			/*                      xchat_print (ph, "XSUB - context found"); */
    +			XSRETURN_IV (PTR2IV (RETVAL));
    +		} else {
    +			/*           xchat_print (ph, "XSUB - context not found"); */
    +			XSRETURN_UNDEF;
    +		}
    +	}
    +}
    +
    +static
    +XS (XS_Xchat_get_context)
    +{
    +	dXSARGS;
    +	if (items != 0) {
    +		xchat_print (ph, "Usage: Xchat::get_context()");
    +	} else {
    +		XSRETURN_IV (PTR2IV (xchat_get_context (ph)));
    +	}
    +}
    +
    +static
    +XS (XS_Xchat_set_context)
    +{
    +	xchat_context *ctx;
    +	dXSARGS;
    +	if (items != 1) {
    +		xchat_print (ph, "Usage: Xchat::set_context(ctx)");
    +	} else {
    +		ctx = INT2PTR (xchat_context *, SvUV (ST (0)));
    +		XSRETURN_IV ((IV) xchat_set_context (ph, ctx));
    +	}
    +}
    +
    +static
    +XS (XS_Xchat_nickcmp)
    +{
    +	dXSARGS;
    +	if (items != 2) {
    +		xchat_print (ph, "Usage: Xchat::nickcmp(s1, s2)");
    +	} else {
    +		XSRETURN_IV ((IV) xchat_nickcmp (ph, SvPV_nolen (ST (0)),
    +													SvPV_nolen (ST (1))));
    +	}
    +}
    +
    +static
    +XS (XS_Xchat_get_list)
    +{
    +	SV *name;
    +	xchat_list *list;
    +	const char *const *fields;
    +	int count = 0;					  /* return value for scalar context */
    +	dXSARGS;
    +
    +	if (items != 1) {
    +		xchat_print (ph, "Usage: Xchat::get_list(name)");
    +	} else {
    +		SP -= items;				  /*remove the argument list from the stack */
    +
    +		name = ST (0);
    +
    +		list = xchat_list_get (ph, SvPV_nolen (name));
    +
    +		if (list == NULL) {
    +			XSRETURN_EMPTY;
    +		}
    +
    +		if (GIMME_V == G_SCALAR) {
    +			while (xchat_list_next (ph, list)) {
    +				count++;
    +			}
    +			xchat_list_free (ph, list);
    +			XSRETURN_IV ((IV) count);
    +		}
    +
    +		fields = xchat_list_fields (ph, SvPV_nolen (name));
    +		while (xchat_list_next (ph, list)) {
    +			XPUSHs (list_item_to_sv (list, fields));
    +		}
    +		xchat_list_free (ph, list);
    +
    +		PUTBACK;
    +		return;
    +	}
    +}
    +
    +static
    +XS (XS_Xchat_Embed_plugingui_remove)
    +{
    +	void *gui_entry;
    +	dXSARGS;
    +	if (items != 1) {
    +		xchat_print (ph, "Usage: Xchat::Embed::plugingui_remove(handle)");
    +	} else {
    +		gui_entry = INT2PTR (void *, SvUV (ST (0)));
    +		xchat_plugingui_remove (ph, gui_entry);
    +	}
    +	XSRETURN_EMPTY;
    +}
    +
    +/* xs_init is the second argument perl_parse. As the name hints, it
    +   initializes XS subroutines (see the perlembed manpage) */
    +static void
    +xs_init (pTHX)
    +{
    +	HV *stash;
    +
    +	/* This one allows dynamic loading of perl modules in perl
    +	   scripts by the 'use perlmod;' construction */
    +	newXS ("DynaLoader::boot_DynaLoader", boot_DynaLoader, __FILE__);
    +	/* load up all the custom IRC perl functions */
    +	newXS ("Xchat::Internal::register", XS_Xchat_register, __FILE__);
    +	newXS ("Xchat::Internal::hook_server", XS_Xchat_hook_server, __FILE__);
    +	newXS ("Xchat::Internal::hook_command", XS_Xchat_hook_command, __FILE__);
    +	newXS ("Xchat::Internal::hook_print", XS_Xchat_hook_print, __FILE__);
    +	newXS ("Xchat::Internal::hook_timer", XS_Xchat_hook_timer, __FILE__);
    +	newXS ("Xchat::Internal::hook_fd", XS_Xchat_hook_fd, __FILE__);
    +	newXS ("Xchat::Internal::unhook", XS_Xchat_unhook, __FILE__);
    +	newXS ("Xchat::Internal::print", XS_Xchat_print, __FILE__);
    +	newXS ("Xchat::Internal::command", XS_Xchat_command, __FILE__);
    +	newXS ("Xchat::Internal::set_context", XS_Xchat_set_context, __FILE__);
    +	newXS ("Xchat::Internal::get_info", XS_Xchat_get_info, __FILE__);
    +	newXS ("Xchat::Internal::context_info", XS_Xchat_context_info, __FILE__);
    +	newXS ("Xchat::Internal::get_list", XS_Xchat_get_list, __FILE__);
    +	
    +	newXS ("Xchat::find_context", XS_Xchat_find_context, __FILE__);
    +	newXS ("Xchat::get_context", XS_Xchat_get_context, __FILE__);
    +	newXS ("Xchat::get_prefs", XS_Xchat_get_prefs, __FILE__);
    +	newXS ("Xchat::emit_print", XS_Xchat_emit_print, __FILE__);
    +	newXS ("Xchat::send_modes", XS_Xchat_send_modes, __FILE__);
    +	newXS ("Xchat::nickcmp", XS_Xchat_nickcmp, __FILE__);
    +
    +	newXS ("Xchat::Embed::plugingui_remove", XS_Xchat_Embed_plugingui_remove,
    +			 __FILE__);
    +
    +	stash = get_hv ("Xchat::", TRUE);
    +	if (stash == NULL) {
    +		exit (1);
    +	}
    +
    +	newCONSTSUB (stash, "PRI_HIGHEST", newSViv (XCHAT_PRI_HIGHEST));
    +	newCONSTSUB (stash, "PRI_HIGH", newSViv (XCHAT_PRI_HIGH));
    +	newCONSTSUB (stash, "PRI_NORM", newSViv (XCHAT_PRI_NORM));
    +	newCONSTSUB (stash, "PRI_LOW", newSViv (XCHAT_PRI_LOW));
    +	newCONSTSUB (stash, "PRI_LOWEST", newSViv (XCHAT_PRI_LOWEST));
    +
    +	newCONSTSUB (stash, "EAT_NONE", newSViv (XCHAT_EAT_NONE));
    +	newCONSTSUB (stash, "EAT_XCHAT", newSViv (XCHAT_EAT_XCHAT));
    +	newCONSTSUB (stash, "EAT_PLUGIN", newSViv (XCHAT_EAT_PLUGIN));
    +	newCONSTSUB (stash, "EAT_ALL", newSViv (XCHAT_EAT_ALL));
    +	newCONSTSUB (stash, "FD_READ", newSViv (XCHAT_FD_READ));
    +	newCONSTSUB (stash, "FD_WRITE", newSViv (XCHAT_FD_WRITE));
    +	newCONSTSUB (stash, "FD_EXCEPTION", newSViv (XCHAT_FD_EXCEPTION));
    +	newCONSTSUB (stash, "FD_NOTSOCKET", newSViv (XCHAT_FD_NOTSOCKET));
    +	newCONSTSUB (stash, "KEEP", newSViv (1));
    +	newCONSTSUB (stash, "REMOVE", newSViv (0));
    +}
    +
    +static void
    +perl_init (void)
    +{
    +	int warn;
    +	int arg_count;
    +	char *perl_args[] = { "", "-e", "0", "-w" };
    +	char *env[] = { "" };
    +	static const char xchat_definitions[] = {
    +		/* Redefine the $SIG{__WARN__} handler to have XChat
    +		   printing warnings in the main window. (TheHobbit) */
    +#include "xchat.pm.h"
    +	};
    +#ifdef OLD_PERL
    +	static const char irc_definitions[] = {
    +#include "irc.pm.h"
    +	};
    +#endif
    +#ifdef ENABLE_NLS
    +
    +	/* Problem is, dynamicaly loaded modules check out the $]
    +	   var. It appears that in the embedded interpreter we get
    +	   5,00503 as soon as the LC_NUMERIC locale calls for a comma
    +	   instead of a point in separating integer and decimal
    +	   parts. I realy can't understant why... The following
    +	   appears to be an awful workaround... But it'll do until I
    +	   (or someone else :)) found the "right way" to solve this
    +	   nasty problem. (TheHobbit ) */
    +
    +	setlocale (LC_NUMERIC, "C");
    +
    +#endif
    +
    +	warn = 0;
    +	xchat_get_prefs (ph, "perl_warnings", NULL, &warn);
    +	arg_count = warn ? 4 : 3;
    +
    +	PERL_SYS_INIT3 (&arg_count, (char ***)&perl_args, (char ***)&env);
    +	my_perl = perl_alloc ();
    +	perl_construct (my_perl);
    +	PL_exit_flags |= PERL_EXIT_DESTRUCT_END;
    +	perl_parse (my_perl, xs_init, arg_count, perl_args, (char **)NULL);
    +
    +	/*
    +	   Now initialising the perl interpreter by loading the
    +	   perl_definition array.
    +	 */
    +
    +	eval_pv (xchat_definitions, TRUE);
    +#ifdef OLD_PERL
    +	eval_pv (irc_definitions, TRUE);
    +#endif
    +
    +}
    +
    +
    +static int
    +perl_load_file (char *filename)
    +{
    +#ifdef WIN32
    +	static HMODULE lib = NULL;
    +
    +	if (!lib) {
    +		lib = LoadLibraryA (PERL_DLL);
    +		if (!lib) {
    +			if (GetLastError () == ERROR_BAD_EXE_FORMAT)
    +				/* http://forum.xchat.org/viewtopic.php?t=3277 */
    +				thread_mbox ("Cannot use this " PERL_DLL "\n\n"
    +								 "32-bit ActivePerl is required.");
    +			else {
    +				/* a lot of people install this old version */
    +				lib = LoadLibraryA ("perl56.dll");
    +				if (lib) {
    +					FreeLibrary (lib);
    +					lib = NULL;
    +					thread_mbox ("Cannot open " PERL_DLL "\n\n"
    +									 "You must have ActivePerl 5.8 installed in order to\n"
    +									 "run perl scripts.\n\n"
    +									 "I have found Perl 5.6, but that is too old.");
    +				} else {
    +					thread_mbox ("Cannot open " PERL_DLL "\n\n"
    +									 "You must have ActivePerl 5.8 installed in order to\n"
    +									 "run perl scripts.\n\n"
    +									 "http://www.activestate.com/ActivePerl/\n\n"
    +									 "Make sure perl's bin directory is in your PATH.");
    +				}
    +			}
    +			/* failure */
    +			return FALSE;
    +		}
    +
    +		/* success */
    +		FreeLibrary (lib);
    +	}
    +#endif
    +
    +	if (my_perl == NULL) {
    +		perl_init ();
    +	}
    +
    +	return execute_perl (sv_2mortal (newSVpv ("Xchat::Embed::load", 0)),
    +								filename);
    +
    +}
    +
    +static void
    +perl_end (void)
    +{
    +
    +	if (my_perl != NULL) {
    +		execute_perl (sv_2mortal (newSVpv ("Xchat::Embed::unload_all", 0)), "");
    +		PL_perl_destruct_level = 1;
    +		perl_destruct (my_perl);
    +		perl_free (my_perl);
    +		PERL_SYS_TERM();
    +		my_perl = NULL;
    +	}
    +
    +}
    +
    +static int
    +perl_command_unloadall (char *word[], char *word_eol[], void *userdata)
    +{
    +	if (my_perl != NULL) {
    +		execute_perl (sv_2mortal (newSVpv ("Xchat::Embed::unload_all", 0)), "");
    +		return XCHAT_EAT_XCHAT;
    +	}
    +
    +	return XCHAT_EAT_XCHAT;
    +}
    +
    +static int
    +perl_command_reloadall (char *word[], char *word_eol[], void *userdata)
    +{
    +	if (my_perl != NULL) {
    +		execute_perl (sv_2mortal (newSVpv ("Xchat::Embed::reload_all", 0)), "");
    +
    +		return XCHAT_EAT_XCHAT;
    +	} else {
    +		perl_auto_load( NULL );
    +	}
    +	return XCHAT_EAT_XCHAT;
    +}
    +
    +static int
    +perl_command_load (char *word[], char *word_eol[], void *userdata)
    +{
    +	char *file = get_filename (word, word_eol);
    +
    +	if (file != NULL )
    +	{
    +		perl_load_file (file);
    +		return XCHAT_EAT_XCHAT;
    +	}
    +
    +	return XCHAT_EAT_NONE;
    +}
    +
    +static int
    +perl_command_unload (char *word[], char *word_eol[], void *userdata)
    +{
    +	char *file = get_filename (word, word_eol);
    +	
    +	if (my_perl != NULL && file != NULL) {
    +		execute_perl (sv_2mortal (newSVpv ("Xchat::Embed::unload", 0)), file);
    +		return XCHAT_EAT_XCHAT;
    +	}
    +
    +	return XCHAT_EAT_NONE;
    +}
    +
    +static int
    +perl_command_reload (char *word[], char *word_eol[], void *userdata)
    +{
    +	char *file = get_filename (word, word_eol);
    +	
    +	if (my_perl != NULL && file != NULL) {
    +		execute_perl (sv_2mortal (newSVpv ("Xchat::Embed::reload", 0)), file);
    +		return XCHAT_EAT_XCHAT;
    +	}
    +	
    +	return XCHAT_EAT_XCHAT;
    +}
    +
    +void
    +xchat_plugin_get_info (char **name, char **desc, char **version,
    +							  void **reserved)
    +{
    +	*name = "Perl";
    +	*desc = "Perl scripting interface";
    +	*version = PACKAGE_VERSION;
    +	if (reserved)
    +		*reserved = NULL;
    +}
    +
    +
    +/* Reinit safeguard */
    +
    +static int initialized = 0;
    +static int reinit_tried = 0;
    +
    +int
    +xchat_plugin_init (xchat_plugin * plugin_handle, char **plugin_name,
    +						 char **plugin_desc, char **plugin_version, char *arg)
    +{
    +	ph = plugin_handle;
    +
    +	if (initialized != 0) {
    +		xchat_print (ph, "Perl interface already loaded\n");
    +		reinit_tried++;
    +		return 0;
    +	}
    +	initialized = 1;
    +
    +	*plugin_name = "Perl";
    +	*plugin_desc = "Perl scripting interface";
    +	*plugin_version = PACKAGE_VERSION;
    +
    +	xchat_hook_command (ph, "load", XCHAT_PRI_NORM, perl_command_load, 0, 0);
    +	xchat_hook_command (ph, "unload", XCHAT_PRI_NORM, perl_command_unload, 0,
    +							  0);
    +	xchat_hook_command (ph, "reload", XCHAT_PRI_NORM, perl_command_reload, 0,
    +							  0);
    +	xchat_hook_command (ph, "pl_reload", XCHAT_PRI_NORM, perl_command_reload, 0,
    +							  0);
    +	xchat_hook_command (ph, "unloadall", XCHAT_PRI_NORM,
    +							  perl_command_unloadall, 0, 0);
    +	xchat_hook_command (ph, "reloadall", XCHAT_PRI_NORM,
    +							  perl_command_reloadall, 0, 0);
    +
    +	/*perl_init (); */
    +	xchat_hook_timer (ph, 0, perl_auto_load, NULL );
    +
    +	xchat_print (ph, "Perl interface loaded\n");
    +
    +	return 1;
    +}
    +
    +int
    +xchat_plugin_deinit (xchat_plugin * plugin_handle)
    +{
    +	if (reinit_tried) {
    +		reinit_tried--;
    +		return 1;
    +	}
    +
    +	perl_end ();
    +
    +	xchat_print (plugin_handle, "Perl interface unloaded\n");
    +
    +	return 1;
    +}
    diff --git a/etc/wyatt8740/plugins/perl/xchat2-perl.html b/etc/wyatt8740/plugins/perl/xchat2-perl.html
    new file mode 100644
    index 0000000..07b3f7b
    --- /dev/null
    +++ b/etc/wyatt8740/plugins/perl/xchat2-perl.html
    @@ -0,0 +1,958 @@
    +
    +
    +
    +
    +X-Chat 2 Perl Interface
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + X-Chat 2 Perl Interface +
    + + + +
    +

    + + + +
    +
    + + +

    +

    +

    X-Chat 2 Perl Interface

    +

    +

    +

    Introduction

    +

    This is the new Perl interface for X-Chat 2. However, due to changes in +xchat's plugin code you will need xchat 2.0.8 or above to load this. Scripts +written using the old interface will continue to work. If there are any +problems, questions, comments or suggestions please email them to the address +on the bottom of this page.

    +

    +

    +

    Constants

    +

    +

    +

    Priorities

    +
      +
    • Xchat::PRI_HIGHEST +
    • +
    • Xchat::PRI_HIGH +
    • +
    • Xchat::PRI_NORM +
    • +
    • Xchat::PRI_LOW +
    • +
    • Xchat::PRI_LOWEST +
    • +
    +

    +

    +

    Return values

    +
      +
    • Xchat::EAT_NONE - pass the event along +
    • +
    • Xchat::EAT_XCHAT - don't let xchat see this event +
    • +
    • Xchat::EAT_PLUGIN - don't let other scripts and plugins see this event +
    • +
    • Xchat::EAT_ALL - don't let anything see this event +
    • +
    +

    +

    +

    Timer specific

    +
      +
    • Xchat::KEEP - keep the timer going +
    • +
    • Xchat::REMOVE - remove the timer +
    • +
    +

    +

    +

    Functions

    +

    +

    +

    Xchat::register( $name, $version, [$description,[$callback]] )

    +
      +
    • $name - The name of this script +
    • +
    • $version - This script's version +
    • +
    • $description - A description for this script +
    • +
    • $callback - This is a function that will be called when the is script + unloaded. This can be either a reference to a + function or an anonymous sub reference. +
    • +
    +

    This is the first thing to call in every script.

    +

    +

    +

    Xchat::hook_server( $message, $callback, [\%options] )

    +

    +

    +

    Xchat::hook_command( $command, $callback, [\%options] )

    +

    +

    +

    Xchat::hook_print( $event,$callback, [\%options] )

    +

    +

    +

    Xchat::hook_timer( $timeout,$callback, [\%options | $data] )

    +

    These functions can be to intercept various events. +hook_server can be used to intercept any incoming message from the IRC server. +hook_command can be used to intercept any command, if the command doesn't currently exist then a new one is created. +hook_print can be used to intercept any of the events listed in Setttings->Advanced->Text Events +hook_timer can be used to create a new timer

    +
      +
    • $message - server message to hook such as PRIVMSG +
    • +
    • $command - command to intercept, without the leading / +
    • +
    • $event - one of the events listed in Settings->Advanced->Text Events +
    • +
    • $timeout - timeout in milliseconds +
    • +
    • $callback - callback function, this is called whenever + the hooked event is trigged, the following are + the conditions that will trigger the different hooks. + This can be either a reference to a + function or an anonymous sub reference. +
    • +
    • \%options - a hash reference containing addional options for the hooks +
    • +
    +

    Valid keys for \%options:

    + + + + + + +
    data Additional data that is to be associated with the
    + hook. For timer hooks this value can be provided either as
    + Xchat::hook_timer( $timeout, $cb,{data=>$data})
    + or Xchat::hook_timer( $timeout, $cb, $data ).
    + However, this means that hook_timer cannot be provided
    + with a hash reference containing data as a key.
    example:
    + my $options = { data => [@arrayOfStuff] };
    + Xchat::hook_timer( $timeout, $cb, $options );
    +
    + In this example, the timer's data will be
    + [@arrayOfStuff] and not { data => [@arrayOfStuff] }
    +
    + This key is valid for all of the hook functions.
    +
    + Default is undef.
    +
    priority Sets the priority for the hook.
    + It can be set to one of the + Xchat::PRI_* constants.
    +
    + This key only applies to server, command + and print hooks.
    +
    + Default is Xchat::PRI_NORM. +
    help_text Text displayed for /help $command.
    +
    + This key only applies to command hooks.
    +
    + Default is "". +

    +

    +

    When callbacks are invoked

    +

    Each of the hooks will be triggered at different times depending on the type +of hook.

    + + + + + + + + + + + +
    Hook Type When the callback will be invoked
    server hooks a $message message is + received from the server +
    command hooks the $command command is + executed, either by the user or from a script +
    print hooks X-Chat is about to print the message for the + $event event +
    timer hooks called every $timeout milliseconds + (1000 millisecond is 1 second) +

    The value return from these hook functions can be passed to Xchat::unhook +to remove the hook.

    +

    +

    +

    Callback Arguments

    +

    All callback functions will receive their arguments in @_ like every +other Perl subroutine.

    +

    +Server and command callbacks
    +
    +$_[0] - array reference containing the IRC message or command and +arguments broken into words
    +example:
    +/command arg1 arg2 arg3
    +$_[0][0] - command
    +$_[0][1] - arg1
    +$_[0][2] - arg2
    +$_[0][3] - arg3
    +
    +$_[1] - array reference containing the Nth word to the last word
    +example:
    +/command arg1 arg2 arg3
    +$_[1][0] - command arg1 arg2 arg3
    +$_[1][1] - arg1 arg2 arg3
    +$_[1][2] - arg2 arg3
    +$_[1][3] - arg3
    +
    +$_[2] - the data that was passed to the hook function
    +
    +Print callbacks
    +
    +$_[0] - array reference containing the values for the + text event see Settings->Advanced->Text Events
    +$_[1] - the data that was passed to the hook function
    +
    +Timer callbacks
    +
    +$_[0] - the data that was passed to the hook function
    +
    +

    +

    +

    Callback return values

    +

    All server, command and print callbacks should return one of +the Xchat::EAT_* constants. +Timer callbacks can return Xchat::REMOVE to remove +the timer or Xchat::KEEP to keep it going

    +

    +

    +

    Miscellaneous Hook Related Information

    +

    For server hooks, if $message is "RAW LINE" then $cb will be called for +every IRC message than X-Chat receives.

    +

    For command hooks if $command is "" then $cb will be called for +messages entered by the user that is not a command.

    +

    For print hooks besides those events listed in +Settings->Advanced->Text Events, these additional events can be used.

    + + + + + + + + + + + + + + + +
    Event Description
    "Open Context" a new context is created
    "Close Context" a context has been close
    "Focus Tab" when a tab is brought to the front
    "Focus Window" when a top level window is focused or the + main tab window is focused by the window manager +
    "DCC Chat Text" when text from a DCC Chat arrives. + $_[0] will have these values
    +
    + $_[0][0] - Address
    + $_[0][1] - Port
    + $_[0][2] - Nick
    + $_[0][3] - Message
    +
    "Key Press" used for intercepting key presses, the key value is in $_[0][0]

    +

    +

    Xchat::unhook( $hook )

    +
      +
    • $hook - the hook that was previously returned by one of the Xchat::hook_* functions +
    • +
    +

    This function is used to removed a hook previously added with one of +the Xchat::hook_* functions

    +

    It returns the data that was passed to the Xchat::hook_* function when +the hook was added

    +

    +

    +

    Xchat::print( $text | \@lines, [$channel,[$server]] )

    +
      +
    • $text - the text to print +
    • +
    • \@lines - array reference containing lines of text to be printed + all the elements will be joined together before printing +
    • +
    • $channel - channel or tab with the given name where $text + will be printed +
    • +
    • $server - specifies that the text will be printed in a channel or tab + that is associated with $server +
    • +
    +

    The first argument can either be a string or an array reference of strings. +Either or both of $channel and $server can be undef.

    +

    If called as Xchat::print( $text ), it will always return true. +If called with either the channel or the channel and the server +specified then it will return true if a context is found and +false otherwise. The text will not be printed if the context +is not found. The meaning of setting $channel or $server to +undef is the same as +find_context.

    +

    +

    +

    Xchat::printf( $format, LIST )

    +
      +
    • $format - a format string, see "perldoc -f sprintf" for further detail +
    • +
    • LIST - list of values for the format fields +
    • +
    +

    +

    +

    Xchat::command( $command | \@commands, [$channel,[$server]] )

    +
      +
    • $command - the command to execute, without the leading / +
    • +
    • \@commands - array reference containing a list of commands to execute +
    • +
    • $channel - channel or tab with the given name where $command will be executed +
    • +
    • $server - specifies that the command will be executed in a channel or tab that is associated with $server +
    • +
    +

    The first argument can either be a string or an array reference of strings. +Either or both of $channel and $server can be undef.

    +

    If called as Xchat::command( $command ), it will always return true. +If called with either the channel or the channel and the server +specified then it will return true if a context is found and false +otherwise. The command will not be executed if the context is not found. +The meaning of setting $channel or $server to undef is the same +as find_context.

    +

    +

    +

    Xchat::commandf( $format, LIST )

    +
      +
    • $format - a format string, see "perldoc -f sprintf" for further detail +
    • +
    • LIST - list of values for the format fields +
    • +
    +

    +

    +

    Xchat::find_context( [$channel, [$server]] )

    +
      +
    • $channel - name of a channel +
    • +
    • $server - name of a server +
    • +
    +

    Either or both of $channel and $server can be undef. Calling +Xchat::find_context() is the same as calling +Xchat::find_context( undef, undef) and +Xchat::find_context( $channel ) is +the same as Xchat::find_context( $channel, undef ).

    +

    If $server is undef, find any channel named $channel. +If $channel is undef, find the front most window +or tab named $server.If both $channel and +$server are undef, find the currently focused tab or window.

    +

    Return the context found for one of the above situations or undef if such +a context cannot be found.

    +

    +

    +

    Xchat::get_context()

    +

    Returns the current context.

    +

    +

    +

    Xchat::set_context( $context | $channel,[$server] )

    + +

    See find_context for more details on $channel and $server.

    +

    Returns true on success, false on failure

    +

    +

    +

    Xchat::get_info( $id )

    +
      +
    • $id - one of the following case sensitive values +
    • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ID Return value
    away away reason or undef if you are not away
    channel current channel name
    charset character-set used in the current context
    event_text <Event Name> text event format string for <Event name>
    + Example: +

    + my $channel_msg_format = Xchat::get_info( "event_text Channel Message" ); +

    +
    host real hostname of the current server
    id connection id
    inputbox contents of the inputbox
    libdirfsthe system wide directory where xchat will look for plugins. + this string is in the same encoding as the local file system
    modes the current channels modes or undef if not known
    network current network name or undef
    nick current nick
    nickserv nickserv password for this network or undef
    server current server name
    + (what the server claims to be) undef if not connected +
    state_cursorcurrent inputbox cursor position in characters
    topic current channel topic
    version xchat version number
    win_statusstatus of the xchat window, possible values are "active", "hidden" + and "normal"
    win_ptr native window pointer, GtkWindow * on Unix, HWND on Win32.
    + On Unix if you have the Glib module installed you can use my $window = Glib::Object->new_from_pointer( Xchat::get_info( "win_ptr" ) ); to get a Gtk2::Window object.
    + Additionally when you have detached tabs, each of the windows will return a different win_ptr for the different Gtk2::Window objects.
    + See char_count.pl for a longer example of a script that uses this to show how many characters you currently have in your input box. +
    xchatdir xchat config directory encoded in UTF-8
    + examples:
    + /home/user/.xchat2
    + C:\Documents and Settings\user\Application Data\X-Chat 2 +
    xchatdirfs same as xchatdir except encoded in the locale file system encoding

    This function is used to retrieve certain information about the current +context.

    +

    +

    Xchat::get_prefs( $name )

    +
      +
    • $name - name of a X-Chat setting (available through the /set command) +
    • +
    +

    This function provides a way to retrieve X-Chat's setting information.

    +

    Returns undef if there is no setting called called $name.

    +

    +

    +

    Xchat::emit_print( $event, LIST )

    +
      +
    • $event - name from the Event column in Settings->Advanced->Text Events +
    • +
    • LIST - this depends on the Description column on the bottom of Settings->Advanced->Text Events +
    • +
    +

    This functions is used to generate one of the events listed under +Settings->Advanced->Text Events

    +

    Note: when using this function you MUST return Xchat::EAT_ALL otherwise you will end up with duplicate events. +One is the original and the second is the one you emit.

    +

    Returns true on success, false on failure

    +

    +

    +

    Xchat::send_modes( $target | \@targets, $sign, $mode, [ $modes_per_line ] )

    +
      +
    • $target - a single nick to set the mode on +
    • +
    • \@targets - an array reference of the nicks to set the mode on +
    • +
    • $sign - the mode sign, either '+' or '-' +
    • +
    • $mode - the mode character such as 'o' and 'v', this can only be one character long +
    • +
    • $modes_per_line - an optional argument maximum number of modes to send per at once, pass 0 use the current server's maximum (default) +
    • +
    +

    Send multiple mode changes for the current channel. It may send multiple MODE lines if the request doesn't fit on one.

    +

    Example:

    +

    + +use strict; +use warning; +use Xchat qw(:all);hook_command( "MODES", sub { + my (undef, $who, $sign, $mode) = @{$_[0]}; my @targets = split /,/, $who; + if( @targets > 1 ) { + send_modes( \@targets, $sign, $mode, 1 ); + } else { + send_modes( $who, $sign, $mode ); + } return EAT_XCHAT; +}); + +

    +

    +

    Xchat::nickcmp( $nick1, $nick2 )

    +
      +
    • $nick1, $nick2 - the two nicks or channel names that are to be compared +
    • +
    +

    The comparsion is based on the current server. Either a RFC1459 compliant +string compare or plain ascii will be using depending on the server. The +comparison is case insensitive.

    +

    Returns a number less than, equal to or greater than zero if +$nick1 is +found respectively, to be less than, to match, or be greater than +$nick2.

    +

    +

    +

    Xchat::get_list( $name )

    +
      +
    • $name - name of the list, one of the following: +"channels", "dcc", "ignore", "notify", "users" +
    • +
    +

    This function will return a list of hash references. The hash references +will have different keys depend on the list. An empty list is returned +if there is no such list.

    +

    "channels" - list of channels, querys and their server

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Key Description
    channel tab name
    chantypeschannel types supported by the server, typically "#&"
    context can be used with set_context
    flags Server Bits:
    + 0 - Connected
    + 1 - Connecting
    + 2 - Away
    + 3 - EndOfMotd(Login complete)
    + 4 - Has WHOX
    + 5 - Has IDMSG (FreeNode)
    +
    +

    The following correspond to the /chanopt command

    + 6 - Hide Join/Part Message (text_hidejoinpart)
    + 7 - unused (was for color paste)
    + 8 - Beep on message (alert_beep)
    + 9 - Blink Tray (alert_tray)
    + 10 - Blink Task Bar (alert_taskbar)
    +

    Example of checking if the current context has Hide Join/Part messages set:

    +

    + +if( Xchat::context_info->{flags} & (1 >> 6) ) { + Xchat::print( "Hide Join/Part messages is enabled" ); +} + +

    id Unique server ID
    maxmodes Maximum modes per line
    laglag in milliseconds
    network network name to which this channel belongs
    nickprefixes Nickname prefixes e.g. "+@"
    nickmodes Nickname mode chars e.g. "vo"
    queuenumber of bytes in the send queue
    server server name to which this channel belongs
    type the type of this context
    + 1 - server
    + 2 - channel
    + 3 - dialog
    +
    users Number of users in this channel

    "dcc" - list of DCC file transfers

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Key Value
    address32 address of the remote user(ipv4 address)
    cps bytes per second(speed)
    destfile destination full pathname
    file file name
    nicknick of the person this DCC connection is connected to
    port TCP port number
    pos bytes sent/received
    resume point at which this file was resumed
    + (zero if it was not resumed) +
    size file size in bytes
    status DCC Status:
    + 0 - queued
    + 1 - active
    + 2 - failed
    + 3 - done
    + 4 - connecting
    + 5 - aborted +
    type DCC Type:
    + 0 - send
    + 1 - receive
    + 2 - chatrecv
    + 3 - chatsend +

    "ignore" - current ignore list

    + + + + + + +
    Key Value
    mask ignore mask. e.g: *!*@*.aol.com
    flags Bit field of flags.
    + 0 - private
    + 1 - notice
    + 2 - channel
    + 3 - ctcp
    + 4 - invite
    + 5 - unignore
    + 6 - nosave
    + 7 - dcc
    +

    "notify" - list of people on notify

    + + + + + + + + + + + + + + + + + +
    Key Value
    networkscomma separated list of networks where you will be notfified about this user's online/offline status or undef if you will be notificed on every network you are connected to
    nick nickname
    flags 0 = is online
    on time when user came online
    off time when user went offline
    seen time when user was last verified still online

    the values indexed by on, off and seen can be passed to localtime +and gmtime, see perldoc -f localtime and perldoc -f gmtime for more +detail

    "users" - list of users in the current channel

    + + + + + + + + + + + + + + + + + + + + + +
    Key Value
    away away status(boolean)
    lasttalklast time a user was seen talking, this is the an epoch time(number of seconds since a certain date, that date depends on the OS)
    nick nick name
    hosthost name in the form: user@host or undef if not known
    prefix prefix character, .e.g: @ or +
    realnameReal name or undef
    selectedselected status in the user list, only works when retrieving the user list of the focused tab. You can use the /USELECT command to select the nicks

    "networks" - list of networks and the associated settings from network list

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Key Value
    autojoins An object with the following methods:
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    MethodDescription
    channels()returns a list of this networks' autojoin channels in list context, a count of the number autojoin channels in scalar context
    keys()returns a list of the keys to go with the channels, the order is the same as the channels, if a channel doesn't have a key, '' will be returned in it's place
    pairs()a combination of channels() and keys(), returns a list of (channels, keys) pairs. This can be assigned to a hash for a mapping from channel to key.
    as_hash()return the pairs as a hash reference
    as_string()the original string that was used to construct this autojoin object, this can be used with the JOIN command to join all the channels in the autojoin list
    as_array()return an array reference of hash references consisting of the keys "channel" and "key"
    as_bool()returns true if the network has autojoins and false otherwise
    +
    connect_commands An array reference containing the connect commands for a network. An empty array if there aren't any
    encoding the encoding for the network
    flags + a hash reference corresponding to the checkboxes in the network edit window + + + + + + + + + + + + + + + + + + + + +
    allow_invalidtrue if "Accept invalid SSL certificate" is checked
    autoconnecttrue if "Auto connect to this network at startup" is checked
    cycletrue if "Connect to selected server only" is NOT checked
    use_globaltrue if "Use global user information" is checked
    use_proxytrue if "Bypass proxy server" is NOT checked
    use_ssltrue if "Use SSL for all the servers on this network" is checked
    +
    irc_nick1Corresponds with the "Nick name" field in the network edit window
    irc_nick2Corresponds with the "Second choice" field in the network edit window
    irc_real_nameCorresponds with the "Real name" field in the network edit window
    irc_user_nameCorresponds with the "User name" field in the network edit window
    networkName of the network
    nickserv_passwordCorresponds with the "Nickserv password" field in the network edit window
    selectedIndex into the list of servers in the "servers" key, this is used if the "cycle" flag is false
    server_passwordCorresponds with the "Server password" field in the network edit window
    serversAn array reference of hash references with a "host" and "port" key. If a port is not specified then 6667 will be used.

    +

    +

    Xchat::user_info( [$nick] )

    +
      +
    • $nick - the nick to look for, if this is not given your own nick will be + used as default +
    • +
    +

    This function is mainly intended to be used as a shortcut for when you need +to retrieve some information about only one user in a channel. Otherwise it +is better to use get_list. +If $nick is found a hash reference containing the same keys as those in the +"users" list of get_list is returned otherwise undef is returned. +Since it relies on get_list this function can only be used in a +channel context.

    +

    +

    +

    Xchat::context_info( [$context] )

    + +

    This function will return the information normally retrieved with get_info, except this is for the context that is passed in. The information will be returned in the form of a hash. The keys of the hash are the $id you would normally supply to get_info as well as all the keys that are valid for the items in the "channels" list from get_list. Use of this function is more efficient than calling get_list( "channels" ) and searching through the result.

    +

    Example:

    +

    + +use strict; +use warnings; +use Xchat qw(:all); # imports all the functions documented on this page +register( "User Count", "0.1", + "Print out the number of users on the current channel" ); +hook_command( "UCOUNT", \&display_count ); +sub display_count { + prnt "There are " . context_info()->{users} . " users in this channel."; + return EAT_XCHAT; +} + +

    +

    +

    Xchat::strip_code( $string )

    +
      +
    • $string - string to remove codes from +
    • +
    +

    This function will remove bold, color, beep, reset, reverse and underline codes from $string. It will also remove ANSI escape codes which might get used by certain terminal based clients. If it is called in void context $string will be modified otherwise a modified copy of $string is returned.

    +

    +

    +

    Contact Information

    +

    Contact Lian Wan Situ at <atmcmnky [at] yahoo.com> for questions, comments and +corrections about this page or the Perl plugin itself. You can also find me +in #xchat on FreeNode under the nick Khisanth.

    + + +
    + X-Chat 2 Perl Interface +
    + + + + diff --git a/etc/wyatt8740/plugins/perl/xchat2-perldocs.html b/etc/wyatt8740/plugins/perl/xchat2-perldocs.html new file mode 100644 index 0000000..10d8f31 --- /dev/null +++ b/etc/wyatt8740/plugins/perl/xchat2-perldocs.html @@ -0,0 +1,475 @@ +XChat - IRC (chat) client for UNIX + + + +

    This interface is deprecated

    + + + + + +
    +
    +

    Xchat Perl Docs

    + + +
    + + +
    + +Introduction +
    +
    + +
    +

    Good Hello!

    +

    The purpose of this page is to give people some quick documentation on the +things that they will encounter when they try to code scripts for X-Chat. +It is not meant to be a comprehensive programming tutorial, +by any means. If that's what you're looking for, then you can just keep on +looking.

    +

    If you're going to do any scripting with X-Chat at all, you will +need to know perl. It also won't hurt to have had experience writing tcl for +eggdrops or ircII scripts. Otherwise you're going to have to be very careful +to avoid creating conditions which could flood you offline or do other +not-so-optimal things. ;) Thankfully, it shouldn't take most intelligent +people more than a week (month on the outside) enough perl to do some nice +things in it. +Perl is a very flexible language.

    +

    You should probably also go read (or at least skim over and then carefully +bookmark this copy of the thing that defines how IRC works: RFC 1459. +Other documents that scripters might find useful would be this +nice list of server +numerics, and this list of changes +for Hybrid 6 which is something everyone on EFNet should read. In fact, I +strongly suggest saving copies of these documents to your local +hard drive, because you will be back to look at them again soon.

    +

    One last thing... While you may hear that RFC 1459 isn't being followed very +well, and this is partly true, do your absolute best to stick with RFC-compliant +behaviours anyway because otherwise there's a good chance that your script will +never interoperate properly with others, or at least just piss off a lot of other +people. Pay special attention to section 2.2 of the RFC.

    +
    + + +
    +Standard Disclaimer + +
    +This documentation is provided on an "as-is" basis and comes with no warranty of accuracy or usefulness, either expressed or implied. It is subject to change without any notice, and may contain omissions or errors which could cause your genitalia to shrivel and fall off, or spontaneously combust. If you have any further questions,
    please feel free to seek professional help.
    +
    + + +
    + + +
    + +About Handlers +
    +
    + +
    +There are [currently] four basic ways to make things call the subroutines you write for X-Chat and they are: +
    • message handlers - Triggered by messagse sent from the IRC server to your client
    • +
    • command handlers - triggered by / commands typed in by the user at the keyboard
    • +
    • timeout handlers - triggered by gtk+
    • +
    • print handlers - triggered just before xchat calls its built in print handlers for events
    +
    + + +
    + + +
    + +About Exit Codes +
    +
    + +
    +These are very important. Every time you set up a handler, it takes precedent over the built-in functions and commands of X-Chat. That is, whatever thing which triggered your subroutine will go to your code before it goes to X-Chat to be dealt with. In this way you can replace almost every built-in function that the client has with your own routines. The thing to remember is that if your code exits by hitting the end of your subroutine, or by a plain 'return' statement, processing of the event will go on to whatever other things have set up hooks for the event, and then (provided nothing else exits with a return value of 1) to X-Chat itself. There is only one problem with this, (which is solved by the brokering handler that I'll explain that later) and that is that you cannot really control what order the custom routines get called. Normally they will execute in order of which ones were installed first, but a single script has no real way of knowing this. Beware. +
    + + +
    + + +
    + +About @_ +
    +
    + +
    +If you've never heard of @_ before, then you've obviously not coded in perl. When a message handler triggers, the raw line from the IRC server is passed to the subroutine you specify in @_. When a command handler is triggered, only the arguments are passed to the routine through @_ and they are not broken into a list, but left as one long string. You'll have to parse those yourself with split. (I advise using s/\s+/ /g to collapse the blank space to single space first.) When a timer handler is triggered, I *think* absolutely nothing is passed in @_, but it's not like anything terrifically important could be passed along anyway. Be especially careful when setting up message handlers for mode changes, since the modes are not broken up into individual events like they are with eggdrop. The upside of this is that X-Chat has no mode hooks of it's own, so you don't have to worry about it too much. (This is not the case with the brokering handler, however.) +
    + + +
    + + +
    + +About Context +
    +
    + +
    +There are some really nice things about coding for X-Chat, and the biggest one is that it's fairly good about determining the proper context for things. If a server sends something that triggers a message handler, then you can be sure that unless you specify otherwise, that your IRC::print or IRC::command function call will go back to that server and that server alone. If you really really need to know what the current context is, use the IRC::get_info function as detailed below. +
    + +
    + + +
    + + +
    + +script initialization commands +
    +
    + + +
    + + +
    + +IRC::register(scriptname, version, shutdownroutine, unused); +
    +
    + +
    +

    This is the first function your script should call, example:

    +

    IRC::register ("my script", "1.0", "", "");

    +

    The "shutdownroutine" arg is a function that will be called when X-Chat shuts down, so you get a chance to save config files etc. You can omit this arg, it is optional. The "unused" arg is reserved for future use, for now just provide "". This function also returns X-Chat's version number.

    +
    + + +
    + + +
    + +Handler initialization commands +
    +
    + + +
    + + +
    + +IRC::add_message_handler(message, subroutine_name); +
    +
    + +
    +

    This function allows you to set up hooks to subroutines so that when a particular message arrives from the IRC server that you are connected to, it can be passed to a subroutine to be dealt with appropriately. The message argument is essentially the second solid token from the raw line sent by the IRC server, and X-Chat doesn't know that some numeric messages have associated text messages, so for now set up a handler for both if you want to be sure odd servers don't screw up your expectations. (Read: fear IRCNet.) The entire line sent by the IRC server will be passed to your subroutine in @_. For the completely uninitiated, messages are things like 'PRIVMSG', 'NOTICE', '372', etc.

    +
    + + +
    + + +
    + +IRC::add_command_handler(command, subroutine_name); +
    +
    + +
    +

    This function allows you to set up hooks for actual commands that the user can type into the text window. The arguments are passed to the subroutine via @_, and arrive as a single string. @_ will be null if no arguments are supplied. It's recommended that you be sure and collapse the excess whitespace with s/\s+/ /g before attempting to chop the line up with split. As mentioned earlier, exiting with an undefined return value will allow the command to be parsed by other handlers, while using a return value of 1 will signal the program that no further parsing needs to be done with this command.

    +
    + + +
    + + +
    + +IRC::add_timeout_handler(interval, subroutine_name); +
    +
    + +
    +

    This function allows you to set up hooks for subroutines to be called at a particular interval. The interval is measured in milliseconds, so don't use a particularly small value unless you wish to drive the CPU load through the roof. 1000ms = 1 second. No values will be passed to the routine via @_ and return values don't affect anything either.

    +
    + + +
    + + +
    + +IRC::add_print_handler(message, subroutine_name); +
    +
    + +
    +

    This function allows you to catch the system messages (those who generally start by three stars) and to execute a function each time an event appear. The events are those you can see in "Settings->Edit Events Texts". message is the name of the event (you can find it in the Edit Events box, "Events" column) , subroutine_name is the name of the function that will get messages. Be carrful: all the arguments are sent to function in $_[0] separated by spaces.

    +
    + + +
    + + +
    + +Output commands +
    +
    + + +
    + + +
    + +IRC::print(text); +
    +
    + +
    +This is a very simple routine. All it does is put the contents of the text string to the current window. The current window will be whichever window a command was typed into when called from a command handler, or in whichever window the message command is appropriate to if it is called from within a message handler. As with any perl program, newlines are not assumed, so don't forget to end the line with \n if you don't want things to look screwey. +
    + + +
    + + +
    + +IRC::print_with_channel( text, channelname, servername ); +
    +
    + +
    +This routine does the same thing as IRC::Print does, except it allows you to direct the output to a specific window. It returns 1 on success, 0 on fail. +
    + + +
    + + +
    + +IRC::command(text); +
    +
    + +
    +This routine allows you to execute commands in the current context. The text string containing the command will be parsed by everything that would normally parse a command, including your own command handlers, so be careful. Newlines are assumed, thankfully. +
    + + +
    + + +
    + +IRC::command_with_server(text, servername); +
    +
    + +
    +This routine allows you to specify the context of the server for which the command will be executed. It's not particularly useful unless you're managing a connection manually, yet the command still exists for it's usefulness in doing things like managing a bnc connection, etc. Newlines are assumed here as well. +
    + + +
    + + +
    + +IRC::send_raw(text); +
    +
    + +
    +This routine is very useful in that it allows you to send a string directly to the IRC server you are connected to. It is assumed that the server will be the one you first connected to if there is no clear context for the command, otherwise it will go to whatever server triggered the message handler or command handler window. You must specify newlines here always or you can be guaranteed that strange things will happen. The text message you specify should be a proper RAW IRC message, so don't play with it if you don't know how to do these. Additionally, while newlines are also not assumed here as with the IRC::print function, the RFC specifies that newlines are a CR+LF pair, even if most servers will accept a mere newline. It's best to play it safe and use \r\n instead of just \n. +
    + + +
    + + +
    + +Information retrieval commands +
    +
    + + +
    + + +
    + +IRC::get_info(integer); +
    +
    + +
    +This function returns a bit of selected information depending on what the value of the integer is. +Here's a list of the currently supported values: +
    • 0 - xchat version
    • +
    • 1 - your nickname
    • +
    • 2 - channel
    • +
    • 3 - server
    • +
    • 4 - xchatdir
    • +
    • 5 - away status
    • +
    • 6 - network name
    • +
    • 7 - server hostname
    • +
    • 8 - channel topic
    +

    If you are requesting information that isn't available in the current context, then it will return null.

    +

    Any numbers other than the above will return an error message.

    +
    + + +
    + + +
    + +IRC::get_prefs(var); +
    +
    + +
    +This command lets you read the preferences that are set in the xchat configuration file. Just look at the xchat.conf dir to see what variables are available to use with this command. Returns the value of the variable requested or "Unknown Variable" if the variable isn't available. +
    + + +
    + + +
    + +IRC::user_info( nickname ); +
    +
    + +
    +Returns a flat list of information on the nickname specified consisting of... nickname, nick host, and whether they have op or voice in the current context. +
    + + +
    + + +
    + +IRC::channel_list( ); +
    +
    + +
    +This command returns a flat list which contains the current channel, server, and nickname for all channels the client is currently in. You'll have to break the list up into groups of three yourself. No arguments are necessary, or used [currently]. +
    + + +
    + + +
    + +IRC::server_list( ); +
    +
    + +
    +This command returns a flat list of servers. (Note, it is incompatible with xchat 1.8 in that it also returns a list of servers you are NOT connected to as well.) +
    + + +
    + + +
    + +IRC::user_list(channel, server); +
    +
    + +
    +

    Works very much like the dcc_list command below, except that is returns information about the users on the channel provided as first argument. The second argument is the server and is optional.

    +

    NOTE: If a user has both op and voice, only the op flag will be set to 1 by this command in xchat2.

    +
    + + +
    + + +
    + +IRC::user_list_short(channel, server); +
    +
    + +
    +

    A simpler version of IRC::user_list that returns pairs of nick & user@host suitable for assigning to a hash.

    +

    NOTE: If a user has both op and voice, only the op flag will be set to 1 by this command in xchat2.

    +
    + + +
    + + +
    + +IRC::dcc_list( ); +
    +
    + +
    +This command does essentially the same thing as channel_list, giving you the details of each DCC connection currently in progress. I have no idea exactly what is returned because I haven't had a chance to poke at this one much, but suffice it to say that it's a flat list, and the first time you play with it the meaning of the returned values should be pretty obvious. +
    + + +
    + + +
    + +IRC::ignore_list( ); +
    +
    + +
    +This command returns a flat list of the contents of your ignore list. You'll have to play with it a little as I have not had a chance to yet. Works basically the same as the other list commands. +
    + + +
    + + +
    + +Unimplemented commands that were available in xchat 1.8.x +
    +
    + +
    +add_user_list , sub_user_list , clear_user_list, notify_list were available in xchat 1.8.x but are not implemented in xchat 2 at this time. +
    + +
    +
    +

    +This document originally written by Dagmar d'Surreal on March 26th, 1998 for xchat 1.4
    +Updated on July 30th, 1999 by Peter Zelezny
    +Updated on May 16th, 2003 by DaNumber8 to comply with the perl plugin for xchat2 version 2.0.3
    + diff --git a/etc/wyatt8740/plugins/plugin-conf.in b/etc/wyatt8740/plugins/plugin-conf.in new file mode 100644 index 0000000..d05792b --- /dev/null +++ b/etc/wyatt8740/plugins/plugin-conf.in @@ -0,0 +1,20 @@ + +AC_INIT(@PLUGIN@-config.h.in) +AM_CONFIG_HEADER(@PLUGIN@-config.h) +AM_INIT_AUTOMAKE(xchat-@PLUGIN@, @PLUGIN_VERSION@) +AM_MAINTAINER_MODE +AM_DISABLE_STATIC +AM_PROG_LIBTOOL + +AC_ARG_WITH(plugin-includes, +[ --with-plugin-includes directory containing xchat-plugin.h], + PLUGIN_INCLUDES=$enableval) + +AC_SUBST(PLUGIN_INCLUDES) + +xchatlibdir=${libdir}/xchat +AC_SUBST(xchatlibdir) + +AC_OUTPUT( +Makefile +) diff --git a/etc/wyatt8740/plugins/plugin20.html b/etc/wyatt8740/plugins/plugin20.html new file mode 100644 index 0000000..f5140bb --- /dev/null +++ b/etc/wyatt8740/plugins/plugin20.html @@ -0,0 +1,999 @@ + + + +XChat 2.0 Plugin Interface + + + + +

    XChat 2.0 Plugin Interface

    + + +plugin20.html revision 2.86 +
    Latest version of this document is available at:
    http://xchat.org/docs/plugin20.html + +

    1. Documentation:

    +
    +1.0 Introduction +
    1.1 Sample plugin +
    1.2 What is word and word_eol? +
    1.3 Lists and fields +
    1.4 Plugins on Windows (Win32) +
    1.5 Controlling the GUI +
      1.5.1 Basic Control +
      1.5.2 Custom Menu Items +
      1.5.3 System Tray +
    1.6 Handling UTF-8/Unicode strings +
    + +

    2. Function reference:

    +
    +xchat_hook_command +
    xchat_hook_fd +
    xchat_hook_print +
    xchat_hook_server +
    xchat_hook_timer +
    xchat_unhook +
    +
    xchat_command +
    xchat_commandf +
    xchat_print +
    xchat_printf +
    xchat_emit_print +
    xchat_send_modes +
    +
    xchat_find_context +
    xchat_get_context +
    xchat_get_info +
    xchat_get_prefs +
    xchat_set_context +
    +
    xchat_nickcmp +
    xchat_strip +
    xchat_free +
    +
    xchat_list_get +
    xchat_list_free +
    xchat_list_fields (not documented yet) +
    xchat_list_next +
    xchat_list_str +
    xchat_list_int +
    xchat_list_time +
    +
    xchat_plugingui_add (not documented yet) +
    xchat_plugingui_remove (not documented yet) +

    + +

    Introduction

    +Plugins for XChat are written in C. The interface aims to keep 100% +binary compatability. This means that if you upgrade XChat, you will +not need to recompile your plugins, they'll continue to work. The +interface doesn't depend on any structures and offsets, so compiler +versions shouldn't have an impact either. The only real requirement of +an XChat plugin, is that it define a "xchat_plugin_init" symbol. This +is your entry point function, see the example below. You should make +all your global variables and functions static, so that a symbol +is not exported. There is no harm in exporting these symbols, but they +are not necessary and only pollute the name-space. Plugins are compiled as shared objects +(.so files), for example: +

    +Most UNIX systems:
    +	gcc -Wl,--export-dynamic -Wall -O1 -shared -fPIC myplugin.c -o myplugin.so
    +
    +MacOSX:
    +	gcc -no-cpp-precomp -g -O2 -Wall -bundle -flat_namespace -undefined suppress -o myplugin.so myplugin.c
    +
    + +See the Windows section on how to compile a plugin +using visual studio. +

    +All strings passed to and from plugins are encoded in UTF-8, regardless +of locale. What does this mean? +


    + +

    Sample plugin

    +This simple plugin autoOps anyone who joins a channel you're in. It also +adds a new command /AUTOOPTOGGLE, which can be used to turn the feature ON +or OFF. Every XChat plugin must define an xchat_plugin_init function, this +is the normal entry point. xchat_plugin_deinit is optional. +
    +
    +
    +
    +#include "xchat-plugin.h"
    +
    +#define PNAME "AutoOp"
    +#define PDESC "Auto Ops anyone that joins"
    +#define PVERSION "0.1"
    +
    +static xchat_plugin *ph;   /* plugin handle */
    +static int enable = 1;
    +
    +static int join_cb(char *word[], void *userdata)
    +{
    +   if (enable)
    +      /* Op ANYONE who joins */
    +      xchat_commandf(ph, "OP %s", word[1]);
    +   /* word[1] is the nickname, as in the Settings->Advanced->TextEvents window in xchat */
    +
    +   return XCHAT_EAT_NONE;  /* don't eat this event, xchat needs to see it! */
    +}
    +
    +static int autooptoggle_cb(char *word[], char *word_eol[], void *userdata)
    +{
    +   if (!enable)
    +   {
    +      enable = 1;
    +      xchat_print(ph, "AutoOping now enabled!\n");
    +   } else
    +   {
    +      enable = 0;
    +      xchat_print(ph, "AutoOping now disabled!\n");
    +   }
    +
    +   return XCHAT_EAT_ALL;   /* eat this command so xchat and other plugins can't process it */
    +}
    +
    +void xchat_plugin_get_info(char **name, char **desc, char **version, void **reserved)
    +{
    +   *name = PNAME;
    +   *desc = PDESC;
    +   *version = PVERSION;
    +}
    +
    +int xchat_plugin_init(xchat_plugin *plugin_handle,
    +                      char **plugin_name,
    +                      char **plugin_desc,
    +                      char **plugin_version,
    +                      char *arg)
    +{
    +   /* we need to save this for use with any xchat_* functions */
    +   ph = plugin_handle;
    +
    +   /* tell xchat our info */
    +   *plugin_name = PNAME;
    +   *plugin_desc = PDESC;
    +   *plugin_version = PVERSION;
    +
    +   xchat_hook_command(ph, "AutoOpToggle", XCHAT_PRI_NORM, autooptoggle_cb, "Usage: AUTOOPTOGGLE, Turns OFF/ON Auto Oping", 0);
    +   xchat_hook_print(ph, "Join", XCHAT_PRI_NORM, join_cb, 0);
    +
    +   xchat_print(ph, "AutoOpPlugin loaded successfully!\n");
    +
    +   return 1;       /* return 1 for success */
    +}
    +
    +
    +
    + +

    What's word and word_eol?

    + +They are arrays of strings. They contain the parameters the user entered +for the particular command. For example, if you executed: + +
    +/command NICK hi there
    +
    +word[1] is command
    +word[2] is NICK
    +word[3] is hi
    +word[4] is there
    +
    +word_eol[1] is command NICK hi there
    +word_eol[2] is NICK hi there
    +word_eol[3] is hi there
    +word_eol[4] is there
    +
    +These arrays are simply provided for your convenience. You are NOT allowed +to alter them. Both arrays are limited to 32 elements (index 31). word[0] and +word_eol[0] are reserved and should not be read. +


    +

    Lists and Fields

    +Lists of information (DCCs, Channels, Userlist etc) can be retreived +with xchat_list_get. All fields are READ ONLY and must be copied if +needed for a long time after calling xchat_list_str. The types of lists and fields available are: +
    + +"channels" - list of channels, querys and their servers. +
    + + + + + + + + + + + + + + + +
    NameDescriptionType
    channelChannel or query namestring
    chantypesChannel types e.g. "#!&"
    (Added in version 2.0.9. Older versions will return NULL)
    string
    context(xchat_context *) pointer. Can be used with xchat_set_contextstring
    flagsServer/Channel Bits:
    + + + + + + + + + + + + + +
    Bit #ValueDescription
    01Connected
    12Connecting in Progress
    24You are away
    38End of MOTD (Login complete)
    416Has WHOX (ircu)
    532Has IDMSG (FreeNode)
    664Hide Join/Part Messages
    7128unused (was Color Paste in old versions)
    8256Beep on Message
    9512Blink Tray
    101024Blink Task Bar
    +
    (Bits 0-5 added in 2.0.9. Bits 6-8 added in 2.6.6. Bit 9 added in 2.8.0. Bit 10 in 2.8.6)
    int
    idUnique server ID
    (Added in version 2.0.8. Older versions will return -1)
    int
    lagLag in milliseconds
    (Added in version 2.6.8. Older versions will return -1)
    int
    maxmodesMaximum modes per line
    (Added in version 2.0.9. Older versions will return -1)
    int
    networkNetwork name to which this channel belongs
    (Added in version 2.0.2. Older versions will return NULL)
    string
    nickprefixesNickname prefixes e.g. "@+"
    (Added in version 2.0.9. Older versions will return NULL)
    string
    nickmodesNickname mode chars e.g. "ov"
    (Added in version 2.0.9. Older versions will return NULL)
    string
    queueNumber of bytes in the send-queue
    (Added in version 2.6.8. Older versions will return -1)
    int
    serverServer name to which this channel belongsstring
    typeType of context this is: 1-Server 2-Channel 3-Dialog
    (Added in version 2.0.2. Older versions will return -1)
    int
    usersNumber of users in this channel
    (Added in version 2.0.8. Older versions will return -1)
    int
    +
    + +"dcc" - list of DCC file transfers. Fields: +
    + + + + + + + + + + + + + +
    NameDescriptionType
    address32Address of the remote user (ipv4 address)int
    cpsBytes per second (speed)int
    destfileDestination full pathnamestring
    fileFile namestring
    nickNickname of person who the file is from/tostring
    portTCP port numberint
    posBytes sent/receivedint
    resumePoint at which this file was resumed (or zero if it was not resumed)int
    sizeFile size in bytes, low order 32 bits (cast it to unsigned)int
    sizehighFile size in bytes, high order 32 bitsint
    statusDCC Status: 0-Queued 1-Active 2-Failed 3-Done 4-Connecting 5-Abortedint
    typeDCC Type: 0-Send 1-Receive 2-ChatRecv 3-ChatSendint
    +
    + +"ignore" - current ignore list. +
    + + + +
    NameDescriptionType
    maskIgnore mask. .e.g: *!*@*.aol.comstring
    flagsBit field of flags. 0=Private 1=Notice 2=Channel 3=Ctcp
    +4=Invite 5=UnIgnore 6=NoSave 7=DCC
    int
    +
    + +"notify" - list of people on notify. +
    + + + + + + + +
    NameDescriptionType
    networksNetworks to which this nick applies. Comma separated. May be NULL. +
    (Added in version 2.6.8)
    string
    nickNicknamestring
    flagsBit field of flags. 0=Is online.int
    onTime when user came online.time_t
    offTime when user went offline.time_t
    seenTime when user the user was last verified still online.time_t
    +The entire "notify" list was added in xchat 2.0.8. Fields are +only valid for the context when xchat_list_get() was called +(i.e. you get information about the user ON THAT ONE SERVER ONLY). You +may cycle through the "channels" list to find notify information for every +server. +
    + +"users" - list of users in the current channel. +
    + + + + + + + + +
    NameDescriptionType
    awayAway status (boolean)
    (Added in version 2.0.6. Older versions will return -1)
    int
    lasttalkLast time the user was seen talking
    (Added in version 2.4.2. Older versions will return -1)
    time_t
    nickNick namestring
    hostHost name in the form: user@host (or NULL if not known).string
    prefixPrefix character, .e.g: @ or +. Points to a single char.string
    realnameReal name or NULL
    (Added in version 2.8.6)
    string
    selectedSelected status in the user list, only works for retrieving the user list of the focused tab
    (Added in version 2.6.1. Older versions will return -1)
    int
    +
    + +
    + +Example: +
    +
    +   list = xchat_list_get(ph, "dcc");
    +   if(list)
    +   {
    +      xchat_print(ph, "--- DCC LIST ------------------\n"
    +                      "File  To/From   KB/s   Position\n");
    +
    +      while(xchat_list_next(ph, list))
    +      {
    +         xchat_printf(ph, "%6s %10s %.2f  %d\n",
    +             xchat_list_str(ph, list, "file"),
    +             xchat_list_str(ph, list, "nick"),
    +             xchat_list_int(ph, list, "cps") / 1024,
    +             xchat_list_int(ph, list, "pos"));
    +      }
    +
    +      xchat_list_free(ph, list);
    +   }
    +
    + +
    + +

    Plugins on Windows (Win32)

    +Yes, it can be done. All you need is either +MSVC (Visual Studio) or +MINGW, both these compilers are free to download. +Simply compile your plugin as a DLL. You should have the following files: + +
      +
    • xchat-plugin.h - Main Plugin header
    • +
    • plugin.c - Your plugin, you need to write this one :)
    • +
    • plugin.def - A simple text file containing the following:
    • +
    +
    +EXPORTS
    +  xchat_plugin_init
    +  xchat_plugin_deinit
    +  xchat_plugin_get_info
    +
    + +
    Leave out xchat_plugin_deinit if you don't intend to define that +function. Then, to compile, type this at your command prompt:

    +
    +MSVC +
     cl -O1 -MD -G5 -DWIN32 -c plugin.c
    +
     link /DLL /out:plugin.dll /SUBSYSTEM:WINDOWS plugin.obj /def:plugin.def /base:0x00d40000 +

    +GCC (MINGW) +
     gcc -Wall -Os -DWIN32 -c plugin.c
    +
     dllwrap --def plugin.def --dllname plugin.dll plugin.o

    +
    +
    For a complete example, have a look at the source code of the DNS Plugin, which also contains a Makefile. +

    +Caveat: Plugins compiled on Win32 MUST have a +global variable called ph, which is the plugin_handle, much like +in the sample plugin above. +

    + +

    Controlling the GUI

    +

    +A simple way to perform basic GUI functions is to use the /GUI command. +You can execute this command through the input-box, or by calling +xchat_command(ph, "GUI .....");. +

    +
    + + + + + + + + + + + +
    GUI ATTACHSame function as "Attach Window" in the XChat menu (new for 2.6.2).
    GUI DETACHSame function as "Detach Tab" in the XChat menu (new for 2.6.2).
    GUI APPLYSimilar to clicking OK in the settings window. Execute this after /SET to activate GUI changes (new for 2.8.0)
    GUI COLOR nChange the tab color of the current context, where n is a number from 0 to 3.
    GUI FOCUSFocus the current window or tab.
    GUI FLASHFlash the taskbar button. It will flash only if the window isn't focused and will stop when it is focused by the user.
    GUI HIDEHide the main xchat window completely (this is used by the Systray plugin).
    GUI ICONIFYIconify (minimize to taskbar) the current xchat window.
    GUI MSGBOX textDisplays a asynchronous message box with your text (new for 2.4.5).
    GUI SHOWShow the main xchat window (if currently hidden).
    +
    +

    +Note, the FLASH, ICONIFY and COLOR args were added in xchat 2.0.8, they +will not work with previous versions. +

    +Starting from 2.4.5 you can add your own items to the menu bar. The menu command has this syntax: +
    +	MENU [-eX] [-i<ICONFILE>] [-k<mod>,<key>] [-m] [-pX] [-rX,group] [-tX] {ADD|DEL} <path> [command] [unselect command]
    +For example: +
    +	MENU -p5 ADD FServe
    +	MENU ADD "FServe/Show File List" "fs list"
    +	MENU ADD FServe/-
    +	MENU -k4,101 -t1 ADD "FServe/Enabled" "fs on" "fs off"
    +	MENU -e0 ADD "FServe/Do Something" "fs action"
    +
    +In the example above, it would be recommended to execute "MENU DEL FServe" inside your xchat_plugin_deinit function. The special item with name "-" will add a separator line. +

    +Parameters and flags: +
    + + + + + + + + +
    -eXSet enable flag to X. -e0 for disable, -e1 for enable. This lets you create a disabled (shaded) item.
    -iFILEUse an icon filename FILE (new for 2.8.0). Not supported for toggles or radio items.
    -k<mod>,<key>Specify a keyboard shortcut. "mod" is the modifier which is a bitwise OR of: 1-SHIFT 4-CTRL 8-ALT in decimal. "key" is the key value in decimal, e.g. -k5,101 would specify SHIFT-CTRL-E.
    -mSpecify that this label should be treated as Pango Markup language. Since forward slash ("/") is already used in menu paths, you should replace closing tags with an ASCII 003 instead e.g.: xchat_command(ph, "MENU -m ADD \"<b>Bold Menu<\003b>\""); (new for 2.6.6).
    -pXSpecify a menu item's position number. e.g. -p5 will cause the item to be inserted in the 5th place. New for 2.8.0: If the position is a negative number, it will be used as an offset from the bottom/right-most item.
    -rX,groupSpecify a radio menu item, with initial state X and a group name (new for 2.8.0). The group name should be the exact label of another menu item (without the path) that this item will be grouped with. For radio items, only a select command will be executed (no unselect command).
    -tXSpecify a toggle menu item with an initial state. -t0 for an "unticked" item and -t1 for a "ticked" item.
    +
    + +If you want to change an item's toggle state or enabled flag, +just ADD an item with exactly the same name and command and specify the -tX -eX parameters you need. +

    It's also possible to add items to XChat's existing menus, for example:
    +
    	MENU ADD "Settings/Sub Menu"
    +	MENU -t0 ADD "Settings/Sub Menu/My Setting" myseton mysetoff
    +
    +However, internal names and layouts of XChat's menu may change in the future, so use at own risk. +

    +Here is an example of Radio items: +
    	MENU ADD "Language"
    +	MENU -r1,"English" ADD "Language/English" cmd1
    +	MENU -r0,"English" ADD "Language/Spanish" cmd2
    +	MENU -r0,"English" ADD "Language/German" cmd3
    +
    +From 2.8.0, you can also change menus other than the main one (i.e popup menus). Currently they are: +
    + + + + + + + + +
    Root NameMenu
    $TABTab menu (right click a channel/query tab or treeview row)
    $TRAYSystem Tray menu
    $URLURL link menu
    $NICKUserlist nick-name popup menu
    $CHANMenu when clicking a channel in the text area (since 2.8.4)
    +
    +
    +	Example: MENU -p0 ADD "$TAB/Cycle Channel" cycle
    +
    + +
    +Starting from 2.8.0 you can manipulate XChat's system tray icon using the /TRAY command: +
    + Usage: 
    + TRAY -f <timeout> <file1> [<file2>] Flash tray between two icons. Leave off file2 to use default xchat icon.
    + TRAY -f <filename>                  Set tray to a fixed icon.
    + TRAY -i <number>                    Flash tray with an internal icon.
    +                                     2=Message 5=Highlight 8=Private 11=File
    + TRAY -t <text>                      Set the tray tooltip.
    + TRAY -b <title> <text>              Set the tray balloon.
    +                                     Supported on Windows from 2.8.1 and 2.8.2 on Linux (libnotify required on Linux).
    +
    +Filenames can be ICO or PNG format. PNG format is supported on Linux/BSD and Windows XP (but requires installation of GDI+ on Windows 2000). Set a timeout of -1 to use XChat's default. +

    + +

    Handling UTF-8/Unicode strings

    +

    +The XChat plugin API specifies that strings passed to and from xchat must be encoded in UTF-8. +

    +What does this mean for the plugin programmer? You just have to be a little careful when +passing strings obtained from IRC to system calls. For example, if you're writing a file-server +bot, someone might message you a filename. Can you pass this filename directly to open()? Maybe! +If you're lazy... The correct thing to do is to convert the string to "system locale encoding", +otherwise your plugin will fail on non-ascii characters. +

    +Here are examples on how to do this conversion on Unix and Windows. In this example, someone will +CTCP you the message "SHOWFILE <filename>". +

    +

    +
    +static int ctcp_cb(char *word[], char *word_eol[], void *userdata)
    +{
    +	if(strcmp(word[1], "SHOWFILE") == 0)
    +	{
    +		get_file_name(nick, word[2]);
    +	}
    +
    +	return XCHAT_EAT_XCHAT;
    +}
    +
    +static void get_file_name(char *nick, char *fname)
    +{
    +	char buf[256];
    +	FILE *fp;
    +
    +	/* the fname is in UTF-8, because it came from the xchat API */
    +
    #ifdef _WIN32
    +	wchar_t wide_name[MAX_PATH];
    +
    +	/* convert UTF-8 to WIDECHARs (aka UTF-16LE) */
    +	if (MultiByteToWideChar(CP_UTF8, 0, fname, -1, wide_name, MAX_PATH) < 1)
    +		return;
    +
    +	/* now we have WIDECHARs, so we can _wopen() or CreateFileW(). */
    +	/* _wfopen actually requires NT4, Win2000, XP or newer. */
    +	fp = _wfopen(wide_name, "r");
    +
    #else
    +	char *loc_name;
    +
    +	/* convert UTF-8 to System Encoding */
    +	loc_name = g_filename_from_utf8(fname, -1, 0, 0, 0);
    +	if(!loc_name)
    +		return;
    +
    +	/* now open using the system's encoding */
    +	fp = fopen(loc_name, "r");
    +	g_free(loc_name);
    +
    #endif
    +	if (fp)
    +	{
    +		while (fgets (buf, sizeof(buf), fp))
    +		{
    +			/* send every line to the user that requested it */
    +			xchat_commandf (ph, "QUOTE NOTICE %s :%s", nick, buf);
    +		}
    +		fclose (fp);
    +	}
    +}
    +
    + + + +

    + +

    Functions

    + +

     xchat_hook_command() 

    +Prototype: xchat_hook *xchat_hook_command(xchat_plugin *ph, const char *name, int pri, xchat_cmd_cb *callb, const char *help_text, void *userdata); +
    +
    Description: Adds a new /command. This allows your program to +handle commands entered at the input box. To capture text without a "/" at +the start (non-commands), you may hook a special name of "". i.e xchat_hook_command(ph, "", ...);. +
    +Starting from version 2.6.8, commands hooked that begin with a period ('.') will be hidden in /HELP and /HELP -l. +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    name: Name of the command (without the forward slash). +
    pri: Priority of this command. Use XCHAT_PRI_NORM. +
    callb: Callback function. This will be called when the user executes the given command name. +
    help_text: String of text to display when the user executes /help for this command. May be NULL if you're lazy. +
    userdata: Pointer passed to the callback function.
    +Returns: Pointer to the hook. Can be passed to xchat_unhook. +
    +
    Example: +
    +
    +static int onotice_cb(char *word[], char *word_eol[], void *userdata)
    +{
    +	if(word_eol[2][0] == 0)
    +	{
    +		xchat_printf(ph, "Second arg must be the message!\n");
    +		return XCHAT_EAT_ALL;
    +	}
    +
    +	xchat_commandf(ph, "NOTICE @%s :%s", xchat_get_info(ph, "channel"), word_eol[2]);
    +	return XCHAT_EAT_ALL;
    +}
    +
    +xchat_hook_command(ph, "ONOTICE", XCHAT_PRI_NORM, onotice_cb,
    +                   "Usage: ONOTICE <message> Sends a notice to all ops", NULL);
    +
    +
    +
    + +

     xchat_hook_fd() 

    +Prototype: xchat_hook *xchat_hook_fd(xchat_plugin *ph, int fd, int flags, xchat_fd_cb *callb, void *userdata); +
    +
    Description: Hooks a socket or file descriptor. WIN32: Passing a pipe from MSVCR71, MSVCR80 or other variations is not supported at this time. +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    fd: The file descriptor or socket. +
    flags: One or more of XCHAT_FD_READ, XCHAT_FD_WRITE, XCHAT_FD_EXCEPTION, XCHAT_FD_NOTSOCKET. Use bitwise OR to combine them. +XCHAT_FD_NOTSOCKET tells xchat that the provided fd is not a socket, but a "MSVCRT.DLL" pipe. +
    callb: Callback function. This will be called when the socket is available for reading/writing or exception (depending on your chosen flags) +
    userdata: Pointer passed to the callback function.
    +Returns: Pointer to the hook. Can be passed to xchat_unhook. +


    + +

     xchat_hook_print() 

    +Prototype: xchat_hook *xchat_hook_print(xchat_plugin *ph, const char *name, int pri, xchat_print_cb *callb, void *userdata); +
    +
    Description: Registers a function to trap any print events. +The event names may be any available in the "Advanced > Text Events" window. +There are also some extra "special" events you may hook using this function. +Currently they are:
    +"Open Context" - Called when a new xchat_context is created. +
    "Close Context" - Called when a xchat_context pointer is closed. +
    "Focus Tab" - Called when a tab is brought to front. +
    "Focus Window" - Called a toplevel window is focused, or the main +tab-window is focused by the window manager. +
    "DCC Chat Text" - Called when some text from a DCC Chat arrives. It provides these elements in the word[] array:
    word[1] Address +
    word[2] Port +
    word[3] Nick +
    word[4] The Message +
    +"Key Press" - Called when some keys are pressed in the input-box (since 2.4.2). It provides these elements in the word[] array:
    word[1] Key Value +
    word[2] State Bitfield (shift, capslock, alt) +
    word[3] String version of the key +
    word[4] Length of the string (may be 0 for unprintable keys) +
    +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    name: Name of the print event (as in Edit Event Texts Window). +
    pri: Priority of this command. Use XCHAT_PRI_NORM. +
    callb: Callback function. This will be called when this event name is printed. +
    userdata: Pointer passed to the callback function.
    +Returns: Pointer to the hook. Can be passed to xchat_unhook. +
    +
    Example: +
    +
    +static int youpart_cb(char *word[], void *userdata)
    +{
    +	xchat_printf(ph, "You have left channel %s\n", word[3]);
    +	return XCHAT_EAT_XCHAT;	/* dont let xchat do its normal printing */
    +}
    +
    +xchat_hook_print(ph, "You Part", XCHAT_PRI_NORM, youpart_cb, NULL);
    +
    +
    +
    + +

     xchat_hook_server() 

    +Prototype: xchat_hook *xchat_hook_server(xchat_plugin *ph, const char *name, int pri, xchat_serv_cb *callb, void *userdata); +
    +
    Description: Registers a function to be called when a certain server event occurs. You can +use this to trap PRIVMSG, NOTICE, PART, a server numeric etc... If you want to +hook every line that comes from the IRC server, you may use the special name of "RAW LINE". +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    name: Name of the server event. +
    pri: Priority of this command. Use XCHAT_PRI_NORM. +
    callb: Callback function. This will be called when this event is received from the server. +
    userdata: Pointer passed to the callback function.
    +Returns: Pointer to the hook. Can be passed to xchat_unhook. +
    +
    Example: +
    +
    +static int kick_cb(char *word[], char *word_eol[], void *userdata)
    +{
    +	xchat_printf(ph, "%s was kicked from %s (reason=%s)\n", word[4], word[3], word_eol[5]);
    +	return XCHAT_EAT_NONE;	/* don't eat this event, let other plugins and xchat see it too */
    +}
    +
    +xchat_hook_server(ph, "KICK", XCHAT_PRI_NORM, kick_cb, NULL);
    +
    +
    +
    + +

     xchat_hook_timer() 

    +Prototype: xchat_hook *xchat_hook_timer(xchat_plugin *ph, int timeout, xchat_timer_cb *callb, void *userdata); +
    +
    Description: Registers a function to be called every "timeout" milliseconds. +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    timeout: Timeout in milliseconds (1000 is 1 second). +
    callb: Callback function. This will be called every "timeout" milliseconds. +
    userdata: Pointer passed to the callback function.
    +Returns: Pointer to the hook. Can be passed to xchat_unhook. +
    +
    Example: +
    +
    +static xchat_hook *myhook;
    +
    +static int stop_cb(char *word[], char *word_eol[], void *userdata)
    +{
    +	if(myhook != NULL)
    +	{
    +		xchat_unhook(ph, myhook);
    +		myhook = NULL;
    +		xchat_print(ph, "Timeout removed!\n");
    +	}
    +
    +	return XCHAT_EAT_ALL;
    +}
    +
    +static int timeout_cb(void *userdata)
    +{
    +	xchat_print(ph, "Annoying message every 5 seconds! Type /STOP to stop it.\n");
    +	return 1;	/* return 1 to keep the timeout going */
    +}
    +
    +myhook = xchat_hook_timer(ph, 5000, timeout_cb, NULL);
    +xchat_hook_command(ph, "STOP", XCHAT_PRI_NORM, stop_cb, NULL, NULL);
    +

    +
    + +

     xchat_unhook() 

    +Prototype: void *xchat_unhook(xchat_plugin *ph, xchat_hook *hook); +
    +
    Description: Unhooks any hook registered with xchat_hook_print/server/timer/command. When plugins are unloaded, all of its hooks are automatically +removed, so you don't need to call this within your xchat_plugin_deinit() function. +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    hook: Pointer to the hook, as returned by xchat_hook_*. +
    +Returns: The userdata you originally gave to xchat_hook_*. +

    + +

     xchat_command() 

    +Prototype: void xchat_command(xchat_plugin *ph, const char *command); +
    +
    Description: Executes a command as if it were typed in xchat's input box. +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    command: Command to execute, without the forward slash "/". +

    +
    + +

     xchat_commandf() 

    +Prototype: void xchat_commandf(xchat_plugin *ph, const char *format, ...); +
    +
    Description: Executes a command as if it were typed in xchat's input box and provides string formating like printf. +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    format: The format string. +

    +
    + +

     xchat_print() 

    +Prototype: void xchat_print(xchat_plugin *ph, const char *text); +
    +
    Description: Prints some text to the current tab/window. +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    text: Text to print. May contain mIRC color codes. +

    +
    + +

     xchat_printf() 

    +Prototype: void xchat_printf(xchat_plugin *ph, const char *format, ...); +
    +
    Description: Prints some text to the current tab/window and provides formating like printf. +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    format: The format string. +

    +
    + +

     xchat_emit_print() 

    +Prototype: int xchat_emit_print(xchat_plugin *ph, const char *event_name, ...); +
    +
    Description: Generates a print event. This can be any +event found in the Preferences > Advanced > Text Events window. The vararg parameter list +MUST always be NULL terminated. Special care should be taken when calling this function +inside a print callback (from xchat_hook_print), as not to cause endless recursion. +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    event_name: Text event to print. +

    +
    +Returns: 1-Success 0-Failure. +

    +Example: +
    +xchat_emit_print(ph, "Channel Message", "John", "Hi there", "@", NULL);
    +
    +

    + +

     xchat_send_modes() (new for 2.0.9)

    +Prototype: void xchat_send_modes (xchat_plugin *ph, const char *targets[], int ntargets, int modes_per_line, char sign, char mode) +
    +
    Description: Sends a number of channel mode changes to the current channel. For example, you can Op a whole +group of people in one go. It may send multiple MODE lines if the request doesn't fit on one. Pass 0 for +modes_per_line to use the current server's maximum possible. This function should only be called while +in a channel context. +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    targets: Array of targets (strings). The names of people whom the action will be performed on. +
    ntargets: Number of elements in the array given. +
    modes_per_line: Maximum modes to send per line. +
    sign: Mode sign, '-' or '+'. +
    mode: Mode char, e.g. 'o' for Ops.
    +
    +Example: (Ops the three names given) +
    +const char *names_to_Op[] = {"John", "Jack", "Jill"};
    +xchat_send_modes(ph, names_to_Op, 3, 0, '+', 'o');
    +
    +

    + +

     xchat_find_context() 

    +Prototype: xchat_context *xchat_find_context(xchat_plugin *ph, const char *servname, const char *channel); +
    +
    Description: Finds a context based on a channel and servername. If servname is NULL, it finds any channel (or query) by the given name. If channel is NULL, it finds the front-most tab/window of the given servname. If NULL is given for both arguments, the currently focused tab/window will be returned.
    +Changed in 2.6.1. If servname is NULL, it finds the channel (or query) by the given name in the same server group as the current context. If that doesn't exists then find any by the given name. +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    servname: Servername or NULL. +
    channel: Channelname or NULL. +
    +
    +Returns: Context pointer (for use with xchat_set_context) or NULL. +


    + +

     xchat_get_context() 

    +Prototype: xchat_context *xchat_get_context(xchat_plugin *ph); +
    +
    Description: Returns the current context for your plugin. You can use this later with xchat_set_context. +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    +
    +Returns: Context pointer (for use with xchat_set_context). +


    + +

     xchat_get_info() 

    +Prototype: const char *xchat_get_info(xchat_plugin *ph, const char *id); +
    +
    Description: Returns information based on your current context. +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    id: ID of the information you want. Currently supported IDs are (case sensitive): +
    + + + + + + + + + + + + + + + + + + + +
    awayaway reason or NULL if you are not away.
    channelcurrent channel name.
    charsetcharacter-set used in the current context (since 2.4.2).
    event_text <name>text event format string for name (since 2.8.2).
    hostreal hostname of the server you connected to.
    inputboxthe input-box contents, what the user has typed (since 2.4.1).
    libdirfslibrary directory. e.g. /usr/lib/xchat. The same directory used for auto-loading plugins (since 2.4.0).This string isn't necessarily UTF-8, but local file system encoding.
    modeschannel modes, if known, or NULL (since 2.8.1).
    networkcurrent network name or NULL.
    nickyour current nick name.
    nickservnickserv password for this network or NULL (since 2.4.3).
    servercurrent server name (what the server claims to be). NULL if you are not connected.
    topiccurrent channel topic.
    versionxchat version number.
    win_ptrnative window pointer. Unix: (GtkWindow *) Win32: HWND (since 2.6.0).
    win_statuswindow status: "active", "hidden" or "normal" (since 2.0.9).
    xchatdirxchat config directory, e.g.: /home/user/.xchat2 This string is encoded in UTF-8, which means you _should_ convert it to "locale" encoding before using functions like open() or OpenFile(). For best Unicode support on Linux, convert this string using g_filename_from_utf8 and on Windows convert this string to UTF-16LE (wide) and use OpenFileW() etc.
    xchatdirfsxchat config directory, e.g.: /home/user/.xchat2 (since 2.0.9).This string is encoded in local file system encoding, making it ideal for direct use with functions like open() or OpenFile(). For real Unicode support on Windows, it's best not to use xchatdirfs, but xchatdir instead.
    +
    +
    +Returns: A string of the requested information, or NULL. This string must +not be freed and must be copied if needed after the call to xchat_get_info. +


    + +

     xchat_get_prefs() 

    +Prototype: int xchat_get_prefs(xchat_plugin *ph, const char *name, const char **string, int *integer); +
    +
    Description: Provides xchat's setting information (that which is available through the /set command). +A few extra bits of information are available that don't appear in the /set list, currently they are: +
    +
    + + + +
    state_cursorCurrent input-box cursor position (characters, not bytes). Since 2.4.2.
    idUnique server id. Since 2.6.1.
    +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    name: Setting name required. +
    string: Pointer-pointer which to set. +
    integer: Pointer to an integer to set, if setting is a Boolean or Integer type. +
    +Returns: 0-Failed 1-Returned a string 2-Returned an Integer 3-Returned a Boolean. +

    Example: +
    +
    +{
    +	int i;
    +	const char *str;
    +
    +	if (xchat_get_prefs (ph, "irc_nick1", &str, &i) == 1)
    +	{
    +		xchat_printf (ph, "Current nickname setting: %s\n", str);
    +	}
    +}
    +
    +

    + + +

     xchat_set_context() 

    +Prototype: int xchat_set_context(xchat_plugin *ph, xchat_context *ctx); +
    +
    Description: Changes your current context to the one given. +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    ctx: Context to change to (obtained with xchat_get_context or xchat_find_context). +
    +
    +Returns: 1 for success, 0 for failure. +


    + +

     xchat_nickcmp() 

    +Prototype: int xchat_nickcmp(xchat_plugin *ph, const char *s1, const char *s2); +
    +
    Description: Performs a nick name comparision, based on the current server connection. This might be a RFC1459 compliant string compare, or +plain ascii (in the case of DALNet). Use this to compare channels and nicknames. The function works the same way as strcasecmp. +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    s1: String to compare. +
    s2: String to compare s1 to. +
    +
    +Quote from RFC1459: +
    + Because of IRC's scandanavian origin, the characters {}| are + considered to be the lower case equivalents of the characters []\, + respectively. This is a critical issue when determining the + equivalence of two nicknames. +
    +Returns: + An integer + less than, equal to, or greater than zero if s1 is found, + respectively, to be less than, to match, or be greater than s2. +


    + +

     xchat_strip() (new for 2.4.2)

    +Prototype: char *xchat_strip(xchat_plugin *ph, const char *str, int len, int flags); +
    +
    Description: Strips mIRC color codes and/or text attributes (bold, underlined etc) from the given string and returns a newly allocated string. +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    str: String to strip. +
    len: Length of the string (or -1 for NULL terminated). +
    flags: Bit-field of flags: 0-Strip mIRC colors, 1-Strip text attributes. +
    +
    +Returns: +A newly allocated string or NULL for failure. You must free this string with xchat_free. +

    Example: +
    +
    +{
    +	char *new_text;
    +
    +	/* strip both colors and attributes by using the 0 and 1 bits (1 BITWISE-OR 2) */
    +	new_text = xchat_strip(ph, "\00312Blue\003 \002Bold!\002", -1, 1 | 2);
    +
    +	if(new_text)
    +	{
    +		/* new_text should now contain only "Blue Bold!" */
    +		xchat_printf(ph, "%s\n", new_text);
    +		xchat_free(ph, new_text);
    +	}
    +}
    +
    + +

    + +

     xchat_free() (new for 2.4.2)

    +Prototype: void xchat_free(xchat_plugin *ph, void *ptr); +
    +
    Description: Frees a string returned by xchat_* functions. Currently only used to free strings from xchat_strip. +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    ptr: Pointer to free. +
    +
    + +

    + + + diff --git a/etc/wyatt8740/plugins/python/Makefile.am b/etc/wyatt8740/plugins/python/Makefile.am new file mode 100644 index 0000000..1e4adff --- /dev/null +++ b/etc/wyatt8740/plugins/python/Makefile.am @@ -0,0 +1,10 @@ +EXTRA_DIST = + +libdir = $(xchatlibdir)/plugins + +lib_LTLIBRARIES = python.la +python_la_SOURCES = python.c +python_la_LDFLAGS = -avoid-version -module +python_la_LIBADD = $(PY_LIBS) +INCLUDES = $(PY_CFLAGS) $(COMMON_CFLAGS) -I$(srcdir)/.. + diff --git a/etc/wyatt8740/plugins/python/Makefile.in b/etc/wyatt8740/plugins/python/Makefile.in new file mode 100644 index 0000000..f712ffa --- /dev/null +++ b/etc/wyatt8740/plugins/python/Makefile.in @@ -0,0 +1,719 @@ +# Makefile.in generated by automake 1.16.5 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2021 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = plugins/python +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(libdir)" +LTLIBRARIES = $(lib_LTLIBRARIES) +am__DEPENDENCIES_1 = +python_la_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_python_la_OBJECTS = python.lo +python_la_OBJECTS = $(am_python_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +python_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(python_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = ./$(DEPDIR)/python.Plo +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(python_la_SOURCES) +DIST_SOURCES = $(python_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COMMON_CFLAGS = @COMMON_CFLAGS@ +COMMON_LIBS = @COMMON_LIBS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DBUS_BINDING_TOOL = @DBUS_BINDING_TOOL@ +DBUS_CFLAGS = @DBUS_CFLAGS@ +DBUS_LIBS = @DBUS_LIBS@ +DBUS_SERVICES_DIR = @DBUS_SERVICES_DIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ETAGS = @ETAGS@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FILECMD = @FILECMD@ +GCONFTOOL = @GCONFTOOL@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLIB_CFLAGS = @GLIB_CFLAGS@ +GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GLIB_LIBS = @GLIB_LIBS@ +GLIB_MKENUMS = @GLIB_MKENUMS@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GOBJECT_QUERY = @GOBJECT_QUERY@ +GREP = @GREP@ +GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ +GTKSPELL_LIBS = @GTKSPELL_LIBS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_LIBS = @GTK_LIBS@ +GUI_CFLAGS = @GUI_CFLAGS@ +GUI_LIBS = @GUI_LIBS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSEXY_CFLAGS = @LIBSEXY_CFLAGS@ +LIBSEXY_LIBS = @LIBSEXY_LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL_CFLAGS = @PERL_CFLAGS@ +PERL_LDFLAGS = @PERL_LDFLAGS@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLUGIN_INCLUDES = @PLUGIN_INCLUDES@ +POSUB = @POSUB@ +PY_CFLAGS = @PY_CFLAGS@ +PY_LIBS = @PY_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TCL_CFLAGS = @TCL_CFLAGS@ +TCL_LIBS = @TCL_LIBS@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gdkpixbufcsourcepath = @gdkpixbufcsourcepath@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = $(xchatlibdir)/plugins +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +perlpath = @perlpath@ +pkgconfigpath = @pkgconfigpath@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pythonpath = @pythonpath@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sedpath = @sedpath@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +unamepath = @unamepath@ +xchatlibdir = @xchatlibdir@ +EXTRA_DIST = +lib_LTLIBRARIES = python.la +python_la_SOURCES = python.c +python_la_LDFLAGS = -avoid-version -module +python_la_LIBADD = $(PY_LIBS) +INCLUDES = $(PY_CFLAGS) $(COMMON_CFLAGS) -I$(srcdir)/.. +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign plugins/python/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign plugins/python/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +python.la: $(python_la_OBJECTS) $(python_la_DEPENDENCIES) $(EXTRA_python_la_DEPENDENCIES) + $(AM_V_CCLD)$(python_la_LINK) -rpath $(libdir) $(python_la_OBJECTS) $(python_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/python.Plo@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) +installdirs: + for dir in "$(DESTDIR)$(libdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -f ./$(DEPDIR)/python.Plo + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-libLTLIBRARIES + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f ./$(DEPDIR)/python.Plo + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-libLTLIBRARIES + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ + clean-generic clean-libLTLIBRARIES clean-libtool cscopelist-am \ + ctags ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-libLTLIBRARIES install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/etc/wyatt8740/plugins/python/python.c b/etc/wyatt8740/plugins/python/python.c new file mode 100644 index 0000000..9eedd1c --- /dev/null +++ b/etc/wyatt8740/plugins/python/python.c @@ -0,0 +1,2242 @@ +/* +* Copyright (c) 2002-2003 Gustavo Niemeyer +* +* XChat Python Plugin Interface +* +* Xchat Python Plugin Interface is free software; you can redistribute +* it and/or modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 of the +* License, or (at your option) any later version. +* +* pybot 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 General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this file; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +/* Thread support + * ============== + * + * The python interpreter has a global interpreter lock. Any thread + * executing must acquire it before working with data accessible from + * python code. Here we must also care about xchat not being + * thread-safe. We do this by using an xchat lock, which protects + * xchat instructions from being executed out of time (when this + * plugin is not "active"). + * + * When xchat calls python code: + * - Change the current_plugin for the executing plugin; + * - Release xchat lock + * - Acquire the global interpreter lock + * - Make the python call + * - Release the global interpreter lock + * - Acquire xchat lock + * + * When python code calls xchat: + * - Release the global interpreter lock + * - Acquire xchat lock + * - Restore context, if necessary + * - Make the xchat call + * - Release xchat lock + * - Acquire the global interpreter lock + * + * Inside a timer, so that individual threads have a chance to run: + * - Release xchat lock + * - Go ahead threads. Have a nice time! + * - Acquire xchat lock + * + */ + +#include +#include +#include +#include +#include +#include + +#include "xchat-plugin.h" +#include "Python.h" +#include "structmember.h" +#include "pythread.h" + +#define VERSION_MAJOR 0 +#define VERSION_MINOR 1 + +#ifdef WIN32 +#undef WITH_THREAD /* Thread support locks up xchat on Win32. */ +#define VERSION "0.8/2.4" /* Linked to python24.dll */ +#else +#define VERSION "0.8" +#endif + +#define NONE 0 +#define ALLOW_THREADS 1 +#define RESTORE_CONTEXT 2 + +#ifdef WITH_THREAD +#define ACQUIRE_XCHAT_LOCK() PyThread_acquire_lock(xchat_lock, 1) +#define RELEASE_XCHAT_LOCK() PyThread_release_lock(xchat_lock) +#define BEGIN_XCHAT_CALLS(x) \ + do { \ + PyObject *calls_plugin = NULL; \ + PyThreadState *calls_thread; \ + if ((x) & RESTORE_CONTEXT) \ + calls_plugin = Plugin_GetCurrent(); \ + calls_thread = PyEval_SaveThread(); \ + ACQUIRE_XCHAT_LOCK(); \ + if (!((x) & ALLOW_THREADS)) { \ + PyEval_RestoreThread(calls_thread); \ + calls_thread = NULL; \ + } \ + if (calls_plugin) \ + xchat_set_context(ph, \ + Plugin_GetContext(calls_plugin)); \ + while (0) +#define END_XCHAT_CALLS() \ + RELEASE_XCHAT_LOCK(); \ + if (calls_thread) \ + PyEval_RestoreThread(calls_thread); \ + } while(0) +#else +#define ACQUIRE_XCHAT_LOCK() +#define RELEASE_XCHAT_LOCK() +#define BEGIN_XCHAT_CALLS(x) +#define END_XCHAT_CALLS() +#endif + +#ifdef WITH_THREAD + +#define BEGIN_PLUGIN(plg) \ + do { \ + xchat_context *begin_plugin_ctx = xchat_get_context(ph); \ + RELEASE_XCHAT_LOCK(); \ + Plugin_AcquireThread(plg); \ + Plugin_SetContext(plg, begin_plugin_ctx); \ + } while (0) +#define END_PLUGIN(plg) \ + do { \ + Plugin_ReleaseThread(plg); \ + ACQUIRE_XCHAT_LOCK(); \ + } while (0) + +#else /* !WITH_THREAD (win32) */ + +static PyThreadState *pTempThread; + +#define BEGIN_PLUGIN(plg) \ + do { \ + xchat_context *begin_plugin_ctx = xchat_get_context(ph); \ + RELEASE_XCHAT_LOCK(); \ + PyEval_AcquireLock(); \ + pTempThread = PyThreadState_Swap(((PluginObject *)(plg))->tstate); \ + Plugin_SetContext(plg, begin_plugin_ctx); \ + } while (0) +#define END_PLUGIN(plg) \ + do { \ + ((PluginObject *)(plg))->tstate = PyThreadState_Swap(pTempThread); \ + PyEval_ReleaseLock(); \ + ACQUIRE_XCHAT_LOCK(); \ + } while (0) + +#endif /* !WITH_THREAD */ + +#define Plugin_Swap(x) \ + PyThreadState_Swap(((PluginObject *)(x))->tstate) +#define Plugin_AcquireThread(x) \ + PyEval_AcquireThread(((PluginObject *)(x))->tstate) +#define Plugin_ReleaseThread(x) \ + Util_ReleaseThread(((PluginObject *)(x))->tstate) +#define Plugin_GetFilename(x) \ + (((PluginObject *)(x))->filename) +#define Plugin_GetName(x) \ + (((PluginObject *)(x))->name) +#define Plugin_GetVersion(x) \ + (((PluginObject *)(x))->version) +#define Plugin_GetDesc(x) \ + (((PluginObject *)(x))->description) +#define Plugin_GetHooks(x) \ + (((PluginObject *)(x))->hooks) +#define Plugin_GetContext(x) \ + (((PluginObject *)(x))->context) +#define Plugin_SetFilename(x, y) \ + ((PluginObject *)(x))->filename = (y); +#define Plugin_SetName(x, y) \ + ((PluginObject *)(x))->name = (y); +#define Plugin_SetVersion(x, y) \ + ((PluginObject *)(x))->version = (y); +#define Plugin_SetDescription(x, y) \ + ((PluginObject *)(x))->description = (y); +#define Plugin_SetHooks(x, y) \ + ((PluginObject *)(x))->hooks = (y); +#define Plugin_SetContext(x, y) \ + ((PluginObject *)(x))->context = (y); + +#define HOOK_XCHAT 1 +#define HOOK_UNLOAD 2 + +/* ===================================================================== */ +/* Object definitions */ + +typedef struct { + PyObject_HEAD + int softspace; /* We need it for print support. */ +} XChatOutObject; + +typedef struct { + PyObject_HEAD + xchat_context *context; +} ContextObject; + +typedef struct { + PyObject_HEAD + const char *listname; + PyObject *dict; +} ListItemObject; + +typedef struct { + PyObject_HEAD + char *name; + char *version; + char *filename; + char *description; + GSList *hooks; + PyThreadState *tstate; + xchat_context *context; + void *gui; +} PluginObject; + +typedef struct { + int type; + PyObject *plugin; + PyObject *callback; + PyObject *userdata; + void *data; /* A handle, when type == HOOK_XCHAT */ +} Hook; + + +/* ===================================================================== */ +/* Function declarations */ + +static PyObject *Util_BuildList(char *word[]); +static void Util_Autoload(); +static char *Util_Expand(char *filename); + +static int Callback_Command(char *word[], char *word_eol[], void *userdata); +static int Callback_Print(char *word[], void *userdata); +static int Callback_Timer(void *userdata); +static int Callback_ThreadTimer(void *userdata); + +static PyObject *XChatOut_New(); +static PyObject *XChatOut_write(PyObject *self, PyObject *args); +static void XChatOut_dealloc(PyObject *self); + +static void Context_dealloc(PyObject *self); +static PyObject *Context_set(ContextObject *self, PyObject *args); +static PyObject *Context_command(ContextObject *self, PyObject *args); +static PyObject *Context_prnt(ContextObject *self, PyObject *args); +static PyObject *Context_get_info(ContextObject *self, PyObject *args); +static PyObject *Context_get_list(ContextObject *self, PyObject *args); +static PyObject *Context_compare(ContextObject *a, ContextObject *b, int op); +static PyObject *Context_FromContext(xchat_context *context); +static PyObject *Context_FromServerAndChannel(char *server, char *channel); + +static PyObject *Plugin_New(char *filename, PyMethodDef *xchat_methods, + PyObject *xcoobj); +static PyObject *Plugin_GetCurrent(); +static PluginObject *Plugin_ByString(char *str); +static Hook *Plugin_AddHook(int type, PyObject *plugin, PyObject *callback, + PyObject *userdata, void *data); +static void Plugin_RemoveHook(PyObject *plugin, Hook *hook); +static void Plugin_RemoveAllHooks(PyObject *plugin); + +static PyObject *Module_xchat_command(PyObject *self, PyObject *args); +static PyObject *Module_xchat_prnt(PyObject *self, PyObject *args); +static PyObject *Module_xchat_get_context(PyObject *self, PyObject *args); +static PyObject *Module_xchat_find_context(PyObject *self, PyObject *args, + PyObject *kwargs); +static PyObject *Module_xchat_get_info(PyObject *self, PyObject *args); +static PyObject *Module_xchat_hook_command(PyObject *self, PyObject *args, + PyObject *kwargs); +static PyObject *Module_xchat_hook_server(PyObject *self, PyObject *args, + PyObject *kwargs); +static PyObject *Module_xchat_hook_print(PyObject *self, PyObject *args, + PyObject *kwargs); +static PyObject *Module_xchat_hook_timer(PyObject *self, PyObject *args, + PyObject *kwargs); +static PyObject *Module_xchat_unhook(PyObject *self, PyObject *args); +static PyObject *Module_xchat_get_info(PyObject *self, PyObject *args); +static PyObject *Module_xchat_get_list(PyObject *self, PyObject *args); +static PyObject *Module_xchat_get_lists(PyObject *self, PyObject *args); +static PyObject *Module_xchat_nickcmp(PyObject *self, PyObject *args); +static PyObject *Module_xchat_strip(PyObject *self, PyObject *args); + +static void IInterp_Exec(char *command); +static int IInterp_Cmd(char *word[], char *word_eol[], void *userdata); + +static void Command_PyList(); +static void Command_PyLoad(char *filename); +static void Command_PyUnload(char *name); +static void Command_PyReload(char *name); +static void Command_PyAbout(); +static int Command_Py(char *word[], char *word_eol[], void *userdata); + +/* ===================================================================== */ +/* Static declarations and definitions */ + +staticforward PyTypeObject Plugin_Type; +staticforward PyTypeObject XChatOut_Type; +staticforward PyTypeObject Context_Type; +staticforward PyTypeObject ListItem_Type; + +static PyThreadState *main_tstate = NULL; +static void *thread_timer = NULL; + +static xchat_plugin *ph; +static GSList *plugin_list = NULL; + +static PyObject *interp_plugin = NULL; +static PyObject *xchatout = NULL; + +#ifdef WITH_THREAD +static PyThread_type_lock xchat_lock = NULL; +#endif + +static const char usage[] = "\ +Usage: /PY LOAD \n\ + UNLOAD \n\ + RELOAD \n\ + LIST\n\ + EXEC \n\ + CONSOLE\n\ + ABOUT\n\ +\n"; + +static const char about[] = "\ +\n\ +X-Chat Python Interface " VERSION "\n\ +\n\ +Copyright (c) 2002-2003 Gustavo Niemeyer \n\ +\n"; + + +/* ===================================================================== */ +/* Utility functions */ + +static PyObject * +Util_BuildList(char *word[]) +{ + PyObject *list; + int listsize = 0; + int i; + while (word[listsize] && word[listsize][0]) + listsize++; + list = PyList_New(listsize); + if (list == NULL) { + PyErr_Print(); + return NULL; + } + for (i = 0; i != listsize; i++) { + PyObject *o = PyString_FromString(word[i]); + if (o == NULL) { + Py_DECREF(list); + PyErr_Print(); + return NULL; + } + PyList_SetItem(list, i, o); + } + return list; +} + +static void +Util_Autoload_from (const char *dir_name) +{ +#ifndef PATH_MAX +#define PATH_MAX 1024 /* Hurd doesn't define it */ +#endif + char oldcwd[PATH_MAX]; + struct dirent *ent; + DIR *dir; + if (getcwd(oldcwd, PATH_MAX) == NULL) + return; + if (chdir(dir_name) != 0) + return; + dir = opendir("."); + if (dir == NULL) + return; + while ((ent = readdir(dir))) { + int len = strlen(ent->d_name); + if (len > 3 && strcmp(".py", ent->d_name+len-3) == 0) + Command_PyLoad(ent->d_name); + } + closedir(dir); + chdir(oldcwd); +} + +static void +Util_Autoload() +{ + /* we need local filesystem encoding for chdir, opendir etc */ + + /* auto-load from ~/.xchat2/ or %APPDATA%\X-Chat 2\ */ + Util_Autoload_from(xchat_get_info(ph, "xchatdirfs")); + +#ifdef WIN32 /* also auto-load C:\Program Files\XChat\Plugins\*.py */ + Util_Autoload_from(XCHATLIBDIR"/plugins"); +#endif +} + +static char * +Util_Expand(char *filename) +{ + char *expanded; + + /* Check if this is an absolute path. */ + if (g_path_is_absolute(filename)) { + if (g_file_test(filename, G_FILE_TEST_EXISTS)) + return g_strdup(filename); + else + return NULL; + } + + /* Check if it starts with ~/ and expand the home if positive. */ + if (*filename == '~' && *(filename+1) == '/') { + expanded = g_build_filename(g_get_home_dir(), + filename+2, NULL); + if (g_file_test(expanded, G_FILE_TEST_EXISTS)) + return expanded; + else { + g_free(expanded); + return NULL; + } + } + + /* Check if it's in the current directory. */ + expanded = g_build_filename(g_get_current_dir(), + filename, NULL); + if (g_file_test(expanded, G_FILE_TEST_EXISTS)) + return expanded; + g_free(expanded); + + /* Check if ~/.xchat2/ exists. */ + expanded = g_build_filename(xchat_get_info(ph, "xchatdir"), + filename, NULL); + if (g_file_test(expanded, G_FILE_TEST_EXISTS)) + return expanded; + g_free(expanded); + + return NULL; +} + +/* Similar to PyEval_ReleaseThread, but accepts NULL thread states. */ +static void +Util_ReleaseThread(PyThreadState *tstate) +{ + PyThreadState *old_tstate; + if (tstate == NULL) + Py_FatalError("PyEval_ReleaseThread: NULL thread state"); + old_tstate = PyThreadState_Swap(NULL); + if (old_tstate != tstate && old_tstate != NULL) + Py_FatalError("PyEval_ReleaseThread: wrong thread state"); + PyEval_ReleaseLock(); +} + +/* ===================================================================== */ +/* Hookable functions. These are the entry points to python code, besides + * the load function, and the hooks for interactive interpreter. */ + +static int +Callback_Command(char *word[], char *word_eol[], void *userdata) +{ + Hook *hook = (Hook *) userdata; + PyObject *retobj; + PyObject *word_list, *word_eol_list; + int ret = 0; + + BEGIN_PLUGIN(hook->plugin); + + word_list = Util_BuildList(word+1); + if (word_list == NULL) { + END_PLUGIN(hook->plugin); + return 0; + } + word_eol_list = Util_BuildList(word_eol+1); + if (word_eol_list == NULL) { + Py_DECREF(word_list); + END_PLUGIN(hook->plugin); + return 0; + } + + retobj = PyObject_CallFunction(hook->callback, "(OOO)", word_list, + word_eol_list, hook->userdata); + Py_DECREF(word_list); + Py_DECREF(word_eol_list); + + if (retobj == Py_None) { + ret = XCHAT_EAT_NONE; + Py_DECREF(retobj); + } else if (retobj) { + ret = PyInt_AsLong(retobj); + Py_DECREF(retobj); + } else { + PyErr_Print(); + } + + END_PLUGIN(hook->plugin); + + return ret; +} + +/* No Callback_Server() here. We use Callback_Command() as well. */ + +static int +Callback_Print(char *word[], void *userdata) +{ + Hook *hook = (Hook *) userdata; + PyObject *retobj; + PyObject *word_list; + PyObject *word_eol_list; + char **word_eol; + char *word_eol_raw; + int listsize = 0; + int next = 0; + int i; + int ret = 0; + + /* Cut off the message identifier. */ + word += 1; + + /* XChat doesn't provide a word_eol for print events, so we + * build our own here. */ + while (word[listsize] && word[listsize][0]) + listsize++; + word_eol = (char **) g_malloc(sizeof(char*)*(listsize+1)); + if (word_eol == NULL) { + xchat_print(ph, "Not enough memory to alloc word_eol " + "for python plugin callback."); + return 0; + } + /* First build a word clone, but NULL terminated. */ + memcpy(word_eol, word, listsize*sizeof(char*)); + word_eol[listsize] = NULL; + /* Then join it. */ + word_eol_raw = g_strjoinv(" ", word_eol); + if (word_eol_raw == NULL) { + xchat_print(ph, "Not enough memory to alloc word_eol_raw " + "for python plugin callback."); + return 0; + } + /* And rebuild the real word_eol. */ + for (i = 0; i != listsize; i++) { + word_eol[i] = word_eol_raw+next; + next += strlen(word[i])+1; + } + word_eol[i] = ""; + + BEGIN_PLUGIN(hook->plugin); + + word_list = Util_BuildList(word); + if (word_list == NULL) { + g_free(word_eol_raw); + g_free(word_eol); + END_PLUGIN(hook->plugin); + return 0; + } + word_eol_list = Util_BuildList(word_eol); + if (word_eol_list == NULL) { + g_free(word_eol_raw); + g_free(word_eol); + Py_DECREF(word_list); + END_PLUGIN(hook->plugin); + return 0; + } + + retobj = PyObject_CallFunction(hook->callback, "(OOO)", word_list, + word_eol_list, hook->userdata); + Py_DECREF(word_list); + Py_DECREF(word_eol_list); + + g_free(word_eol_raw); + g_free(word_eol); + if (retobj == Py_None) { + ret = XCHAT_EAT_NONE; + Py_DECREF(retobj); + } else if (retobj) { + ret = PyInt_AsLong(retobj); + Py_DECREF(retobj); + } else { + PyErr_Print(); + } + + END_PLUGIN(hook->plugin); + + return ret; +} + +static int +Callback_Timer(void *userdata) +{ + Hook *hook = (Hook *) userdata; + PyObject *retobj; + int ret = 0; + PyObject *plugin; + + plugin = hook->plugin; + + BEGIN_PLUGIN(hook->plugin); + + retobj = PyObject_CallFunction(hook->callback, "(O)", hook->userdata); + + if (retobj) { + ret = PyObject_IsTrue(retobj); + Py_DECREF(retobj); + } else { + PyErr_Print(); + } + + /* Returning 0 for this callback unhooks itself. */ + if (ret == 0) + Plugin_RemoveHook(plugin, hook); + + END_PLUGIN(plugin); + + return ret; +} + +#ifdef WITH_THREAD +static int +Callback_ThreadTimer(void *userdata) +{ + RELEASE_XCHAT_LOCK(); + usleep(1); + ACQUIRE_XCHAT_LOCK(); + return 1; +} +#endif + +/* ===================================================================== */ +/* XChatOut object */ + +/* We keep this information global, so we can reset it when the + * deinit function is called. */ +/* XXX This should be somehow bound to the printing context. */ +static char *xchatout_buffer = NULL; +static int xchatout_buffer_size = 0; +static int xchatout_buffer_pos = 0; + +static PyObject * +XChatOut_New() +{ + XChatOutObject *xcoobj; + xcoobj = PyObject_New(XChatOutObject, &XChatOut_Type); + if (xcoobj != NULL) + xcoobj->softspace = 0; + return (PyObject *) xcoobj; +} + +static void +XChatOut_dealloc(PyObject *self) +{ + self->ob_type->tp_free((PyObject *)self); +} + +/* This is a little bit complex because we have to buffer data + * until a \n is received, since xchat breaks the line automatically. + * We also crop the last \n for this reason. */ +static PyObject * +XChatOut_write(PyObject *self, PyObject *args) +{ + int new_buffer_pos, data_size, print_limit, add_space; + char *data, *pos; + if (!PyArg_ParseTuple(args, "s#:write", &data, &data_size)) + return NULL; + if (!data_size) { + Py_INCREF(Py_None); + return Py_None; + } + BEGIN_XCHAT_CALLS(RESTORE_CONTEXT|ALLOW_THREADS); + if (((XChatOutObject *)self)->softspace) { + add_space = 1; + ((XChatOutObject *)self)->softspace = 0; + } else { + add_space = 0; + } + if (xchatout_buffer_size-xchatout_buffer_pos < data_size+add_space) { + char *new_buffer; + /* This buffer grows whenever needed, and does not + * shrink. If we ever implement unloading of the + * python interface, we must find some way to free + * this buffer as well. */ + xchatout_buffer_size += data_size*2+16; + new_buffer = g_realloc(xchatout_buffer, xchatout_buffer_size); + if (new_buffer == NULL) { + xchat_print(ph, "Not enough memory to print"); + /* The system is out of resources. Let's help. */ + g_free(xchatout_buffer); + xchatout_buffer = NULL; + xchatout_buffer_size = 0; + xchatout_buffer_pos = 0; + /* Return something valid, since we have + * already warned the user, and he probably + * won't be able to notice this exception. */ + goto exit; + } + xchatout_buffer = new_buffer; + } + memcpy(xchatout_buffer+xchatout_buffer_pos, data, data_size); + print_limit = new_buffer_pos = xchatout_buffer_pos+data_size; + pos = xchatout_buffer+print_limit; + if (add_space && *(pos-1) != '\n') { + *pos = ' '; + *(pos+1) = 0; + new_buffer_pos++; + } + while (*pos != '\n' && print_limit > xchatout_buffer_pos) { + pos--; + print_limit--; + } + if (*pos == '\n') { + /* Crop it, inserting the string limiter there. */ + *pos = 0; + xchat_print(ph, xchatout_buffer); + if (print_limit < new_buffer_pos) { + /* There's still data to be printed. */ + print_limit += 1; /* Include the limiter. */ + xchatout_buffer_pos = new_buffer_pos-print_limit; + memmove(xchatout_buffer, xchatout_buffer+print_limit, + xchatout_buffer_pos); + } else { + xchatout_buffer_pos = 0; + } + } else { + xchatout_buffer_pos = new_buffer_pos; + } + +exit: + END_XCHAT_CALLS(); + Py_INCREF(Py_None); + return Py_None; +} + +#define OFF(x) offsetof(XChatOutObject, x) + +static PyMemberDef XChatOut_members[] = { + {"softspace", T_INT, OFF(softspace), 0}, + {0} +}; + +static PyMethodDef XChatOut_methods[] = { + {"write", XChatOut_write, METH_VARARGS}, + {NULL, NULL} +}; + +statichere PyTypeObject XChatOut_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "xchat.XChatOut", /*tp_name*/ + sizeof(XChatOutObject), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + XChatOut_dealloc, /*tp_dealloc*/ + 0, /*tp_print*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_compare*/ + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + PyObject_GenericGetAttr,/*tp_getattro*/ + PyObject_GenericSetAttr,/*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT, /*tp_flags*/ + 0, /*tp_doc*/ + 0, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + XChatOut_methods, /*tp_methods*/ + XChatOut_members, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + 0, /*tp_dictoffset*/ + 0, /*tp_init*/ + PyType_GenericAlloc, /*tp_alloc*/ + PyType_GenericNew, /*tp_new*/ + _PyObject_Del, /*tp_free*/ + 0, /*tp_is_gc*/ +}; + + +/* ===================================================================== */ +/* Context object */ + +static void +Context_dealloc(PyObject *self) +{ + self->ob_type->tp_free((PyObject *)self); +} + +static PyObject * +Context_set(ContextObject *self, PyObject *args) +{ + PyObject *plugin = Plugin_GetCurrent(); + Plugin_SetContext(plugin, self->context); + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject * +Context_command(ContextObject *self, PyObject *args) +{ + char *text; + if (!PyArg_ParseTuple(args, "s:command", &text)) + return NULL; + BEGIN_XCHAT_CALLS(ALLOW_THREADS); + xchat_set_context(ph, self->context); + xchat_command(ph, text); + END_XCHAT_CALLS(); + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject * +Context_prnt(ContextObject *self, PyObject *args) +{ + char *text; + if (!PyArg_ParseTuple(args, "s:prnt", &text)) + return NULL; + BEGIN_XCHAT_CALLS(ALLOW_THREADS); + xchat_set_context(ph, self->context); + xchat_print(ph, text); + END_XCHAT_CALLS(); + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject * +Context_emit_print(ContextObject *self, PyObject *args) +{ + char *argv[10]; + char *name; + int res; + memset(&argv, 0, sizeof(char*)*10); + if (!PyArg_ParseTuple(args, "s|ssssss:print_event", &name, + &argv[0], &argv[1], &argv[2], + &argv[3], &argv[4], &argv[5], + &argv[6], &argv[7], &argv[8])) + return NULL; + BEGIN_XCHAT_CALLS(ALLOW_THREADS); + xchat_set_context(ph, self->context); + res = xchat_emit_print(ph, name, argv[0], argv[1], argv[2], + argv[3], argv[4], argv[5], + argv[6], argv[7], argv[8]); + END_XCHAT_CALLS(); + return PyInt_FromLong(res); +} + +static PyObject * +Context_get_info(ContextObject *self, PyObject *args) +{ + const char *info; + char *name; + if (!PyArg_ParseTuple(args, "s:get_info", &name)) + return NULL; + BEGIN_XCHAT_CALLS(NONE); + xchat_set_context(ph, self->context); + info = xchat_get_info(ph, name); + END_XCHAT_CALLS(); + if (info == NULL) { + Py_INCREF(Py_None); + return Py_None; + } + return PyString_FromString(info); +} + +static PyObject * +Context_get_list(ContextObject *self, PyObject *args) +{ + PyObject *plugin = Plugin_GetCurrent(); + xchat_context *saved_context = Plugin_GetContext(plugin); + PyObject *ret; + Plugin_SetContext(plugin, self->context); + ret = Module_xchat_get_list((PyObject*)self, args); + Plugin_SetContext(plugin, saved_context); + return ret; +} + +/* needed to make context1 == context2 work */ +static PyObject * +Context_compare(ContextObject *a, ContextObject *b, int op) +{ + PyObject *ret; + /* check for == */ + if (op == Py_EQ) + ret = (a->context == b->context ? Py_True : Py_False); + /* check for != */ + else if (op == Py_NE) + ret = (a->context != b->context ? Py_True : Py_False); + /* only makes sense as == and != */ + else + { + PyErr_SetString(PyExc_TypeError, "contexts are either equal or not equal"); + ret = NULL; + } + + return ret; +} + +static PyMethodDef Context_methods[] = { + {"set", (PyCFunction) Context_set, METH_NOARGS}, + {"command", (PyCFunction) Context_command, METH_VARARGS}, + {"prnt", (PyCFunction) Context_prnt, METH_VARARGS}, + {"emit_print", (PyCFunction) Context_emit_print, METH_VARARGS}, + {"get_info", (PyCFunction) Context_get_info, METH_VARARGS}, + {"get_list", (PyCFunction) Context_get_list, METH_VARARGS}, + {NULL, NULL} +}; + +statichere PyTypeObject Context_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "xchat.Context", /*tp_name*/ + sizeof(ContextObject), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + Context_dealloc, /*tp_dealloc*/ + 0, /*tp_print*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_compare*/ + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + PyObject_GenericGetAttr,/*tp_getattro*/ + PyObject_GenericSetAttr,/*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT, /*tp_flags*/ + 0, /*tp_doc*/ + 0, /*tp_traverse*/ + 0, /*tp_clear*/ + (richcmpfunc)Context_compare, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + Context_methods, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + 0, /*tp_dictoffset*/ + 0, /*tp_init*/ + PyType_GenericAlloc, /*tp_alloc*/ + PyType_GenericNew, /*tp_new*/ + _PyObject_Del, /*tp_free*/ + 0, /*tp_is_gc*/ +}; + +static PyObject * +Context_FromContext(xchat_context *context) +{ + ContextObject *ctxobj = PyObject_New(ContextObject, &Context_Type); + if (ctxobj != NULL) + ctxobj->context = context; + return (PyObject *) ctxobj; +} + +static PyObject * +Context_FromServerAndChannel(char *server, char *channel) +{ + ContextObject *ctxobj; + xchat_context *context; + BEGIN_XCHAT_CALLS(NONE); + context = xchat_find_context(ph, server, channel); + END_XCHAT_CALLS(); + if (context == NULL) + return NULL; + ctxobj = PyObject_New(ContextObject, &Context_Type); + if (ctxobj == NULL) + return NULL; + ctxobj->context = context; + return (PyObject *) ctxobj; +} + + +/* ===================================================================== */ +/* ListItem object */ + +#undef OFF +#define OFF(x) offsetof(ListItemObject, x) + +static PyMemberDef ListItem_members[] = { + {"__dict__", T_OBJECT, OFF(dict), 0}, + {0} +}; + +static void +ListItem_dealloc(PyObject *self) +{ + Py_DECREF(((ListItemObject*)self)->dict); + self->ob_type->tp_free((PyObject *)self); +} + +static PyObject * +ListItem_repr(PyObject *self) +{ + return PyString_FromFormat("<%s list item at %p>", + ((ListItemObject*)self)->listname, self); +} + +statichere PyTypeObject ListItem_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "xchat.ListItem", /*tp_name*/ + sizeof(ListItemObject), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + ListItem_dealloc, /*tp_dealloc*/ + 0, /*tp_print*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_compare*/ + ListItem_repr, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + PyObject_GenericGetAttr,/*tp_getattro*/ + PyObject_GenericSetAttr,/*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT, /*tp_flags*/ + 0, /*tp_doc*/ + 0, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + ListItem_members, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + OFF(dict), /*tp_dictoffset*/ + 0, /*tp_init*/ + PyType_GenericAlloc, /*tp_alloc*/ + PyType_GenericNew, /*tp_new*/ + _PyObject_Del, /*tp_free*/ + 0, /*tp_is_gc*/ +}; + +static PyObject * +ListItem_New(const char *listname) +{ + ListItemObject *item; + item = PyObject_New(ListItemObject, &ListItem_Type); + if (item != NULL) { + /* listname parameter must be statically allocated. */ + item->listname = listname; + item->dict = PyDict_New(); + if (item->dict == NULL) { + Py_DECREF(item); + item = NULL; + } + } + return (PyObject *) item; +} + + +/* ===================================================================== */ +/* Plugin object */ + +#define GET_MODULE_DATA(x, force) \ + o = PyObject_GetAttrString(m, "__module_" #x "__"); \ + if (o == NULL) { \ + if (force) { \ + xchat_print(ph, "Module has no __module_" #x "__ " \ + "defined"); \ + goto error; \ + } \ + plugin->x = g_strdup(""); \ + } else {\ + if (!PyString_Check(o)) { \ + xchat_print(ph, "Variable __module_" #x "__ " \ + "must be a string"); \ + goto error; \ + } \ + plugin->x = g_strdup(PyString_AsString(o)); \ + if (plugin->x == NULL) { \ + xchat_print(ph, "Not enough memory to allocate " #x); \ + goto error; \ + } \ + } + +static PyObject * +Plugin_New(char *filename, PyMethodDef *xchat_methods, PyObject *xcoobj) +{ + PluginObject *plugin = NULL; + PyObject *m, *o; + char *argv[] = {"", 0}; + + if (filename) { + char *old_filename = filename; + filename = Util_Expand(filename); + if (filename == NULL) { + xchat_printf(ph, "File not found: %s", old_filename); + return NULL; + } + } + + /* Allocate plugin structure. */ + plugin = PyObject_New(PluginObject, &Plugin_Type); + if (plugin == NULL) { + xchat_print(ph, "Can't create plugin object"); + goto error; + } + + Plugin_SetName(plugin, NULL); + Plugin_SetVersion(plugin, NULL); + Plugin_SetFilename(plugin, NULL); + Plugin_SetDescription(plugin, NULL); + Plugin_SetHooks(plugin, NULL); + Plugin_SetContext(plugin, xchat_get_context(ph)); + + /* Start a new interpreter environment for this plugin. */ + PyEval_AcquireLock(); + plugin->tstate = Py_NewInterpreter(); + if (plugin->tstate == NULL) { + xchat_print(ph, "Can't create interpreter state"); + goto error; + } + + PySys_SetArgv(1, argv); + PyRun_SimpleString("import sys; sys.path = filter(None, sys.path)"); + PySys_SetObject("__plugin__", (PyObject *) plugin); + + /* Set stdout and stderr to xchatout. */ + Py_INCREF(xcoobj); + PySys_SetObject("stdout", xcoobj); + Py_INCREF(xcoobj); + PySys_SetObject("stderr", xcoobj); + + /* Add xchat module to the environment. */ + m = Py_InitModule("xchat", xchat_methods); + if (m == NULL) { + xchat_print(ph, "Can't create xchat module"); + goto error; + } + + PyModule_AddIntConstant(m, "EAT_NONE", XCHAT_EAT_NONE); + PyModule_AddIntConstant(m, "EAT_XCHAT", XCHAT_EAT_XCHAT); + PyModule_AddIntConstant(m, "EAT_PLUGIN", XCHAT_EAT_PLUGIN); + PyModule_AddIntConstant(m, "EAT_ALL", XCHAT_EAT_ALL); + PyModule_AddIntConstant(m, "PRI_HIGHEST", XCHAT_PRI_HIGHEST); + PyModule_AddIntConstant(m, "PRI_HIGH", XCHAT_PRI_HIGH); + PyModule_AddIntConstant(m, "PRI_NORM", XCHAT_PRI_NORM); + PyModule_AddIntConstant(m, "PRI_LOW", XCHAT_PRI_LOW); + PyModule_AddIntConstant(m, "PRI_LOWEST", XCHAT_PRI_LOWEST); + + o = Py_BuildValue("(ii)", VERSION_MAJOR, VERSION_MINOR); + if (o == NULL) { + xchat_print(ph, "Can't create version tuple"); + goto error; + } + PyObject_SetAttrString(m, "__version__", o); + + if (filename) { + FILE *fp; + + plugin->filename = filename; + + /* It's now owned by the plugin. */ + filename = NULL; + + /* Open the plugin file. */ + fp = fopen(plugin->filename, "r"); + if (fp == NULL) { + xchat_printf(ph, "Can't open file %s: %s\n", + plugin->filename, strerror(errno)); + goto error; + } + + /* Run the plugin. */ + if (PyRun_SimpleFile(fp, plugin->filename) != 0) { + xchat_printf(ph, "Error loading module %s\n", + plugin->filename); + fclose(fp); + goto error; + } + fclose(fp); + + m = PyDict_GetItemString(PyImport_GetModuleDict(), + "__main__"); + if (m == NULL) { + xchat_print(ph, "Can't get __main__ module"); + goto error; + } + GET_MODULE_DATA(name, 1); + GET_MODULE_DATA(version, 0); + GET_MODULE_DATA(description, 0); + plugin->gui = xchat_plugingui_add(ph, plugin->filename, + plugin->name, + plugin->description, + plugin->version, NULL); + } + + PyEval_ReleaseThread(plugin->tstate); + + return (PyObject *) plugin; + +error: + g_free(filename); + + if (plugin) { + if (plugin->tstate) + Py_EndInterpreter(plugin->tstate); + Py_DECREF(plugin); + } + PyEval_ReleaseLock(); + + return NULL; +} + +static PyObject * +Plugin_GetCurrent() +{ + PyObject *plugin; + plugin = PySys_GetObject("__plugin__"); + if (plugin == NULL) + PyErr_SetString(PyExc_RuntimeError, "lost sys.__plugin__"); + return plugin; +} + +static PluginObject * +Plugin_ByString(char *str) +{ + GSList *list; + PluginObject *plugin; + char *basename; + list = plugin_list; + while (list != NULL) { + plugin = (PluginObject *) list->data; + basename = g_path_get_basename(plugin->filename); + if (basename == NULL) + break; + if (strcasecmp(plugin->name, str) == 0 || + strcasecmp(plugin->filename, str) == 0 || + strcasecmp(basename, str) == 0) { + g_free(basename); + return plugin; + } + g_free(basename); + list = list->next; + } + return NULL; +} + +static Hook * +Plugin_AddHook(int type, PyObject *plugin, PyObject *callback, + PyObject *userdata, void *data) +{ + Hook *hook = (Hook *) g_malloc(sizeof(Hook)); + if (hook == NULL) { + PyErr_NoMemory(); + return NULL; + } + hook->type = type; + hook->plugin = plugin; + Py_INCREF(callback); + hook->callback = callback; + Py_INCREF(userdata); + hook->userdata = userdata; + hook->data = NULL; + Plugin_SetHooks(plugin, g_slist_append(Plugin_GetHooks(plugin), + hook)); + + return hook; +} + +static void +Plugin_RemoveHook(PyObject *plugin, Hook *hook) +{ + GSList *list; + /* Is this really a hook of the running plugin? */ + list = g_slist_find(Plugin_GetHooks(plugin), hook); + if (list) { + /* Ok, unhook it. */ + if (hook->type == HOOK_XCHAT) { + /* This is an xchat hook. Unregister it. */ + BEGIN_XCHAT_CALLS(NONE); + xchat_unhook(ph, (xchat_hook*)hook->data); + END_XCHAT_CALLS(); + } + Plugin_SetHooks(plugin, + g_slist_remove(Plugin_GetHooks(plugin), + hook)); + Py_DECREF(hook->callback); + Py_DECREF(hook->userdata); + g_free(hook); + } +} + +static void +Plugin_RemoveAllHooks(PyObject *plugin) +{ + GSList *list = Plugin_GetHooks(plugin); + while (list) { + Hook *hook = (Hook *) list->data; + if (hook->type == HOOK_XCHAT) { + /* This is an xchat hook. Unregister it. */ + BEGIN_XCHAT_CALLS(NONE); + xchat_unhook(ph, (xchat_hook*)hook->data); + END_XCHAT_CALLS(); + } + Py_DECREF(hook->callback); + Py_DECREF(hook->userdata); + g_free(hook); + list = list->next; + } + Plugin_SetHooks(plugin, NULL); +} + +static void +Plugin_Delete(PyObject *plugin) +{ + PyThreadState *tstate = ((PluginObject*)plugin)->tstate; + GSList *list = Plugin_GetHooks(plugin); + while (list) { + Hook *hook = (Hook *) list->data; + if (hook->type == HOOK_UNLOAD) { + PyObject *retobj; + retobj = PyObject_CallFunction(hook->callback, "(O)", + hook->userdata); + if (retobj) { + Py_DECREF(retobj); + } else { + PyErr_Print(); + PyErr_Clear(); + } + } + list = list->next; + } + Plugin_RemoveAllHooks(plugin); + xchat_plugingui_remove(ph, ((PluginObject *)plugin)->gui); + Py_DECREF(plugin); + /*PyThreadState_Swap(tstate); needed? */ + Py_EndInterpreter(tstate); +} + +static void +Plugin_dealloc(PluginObject *self) +{ + g_free(self->filename); + g_free(self->name); + g_free(self->version); + g_free(self->description); + self->ob_type->tp_free((PyObject *)self); +} + +statichere PyTypeObject Plugin_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "xchat.Plugin", /*tp_name*/ + sizeof(PluginObject), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + (destructor)Plugin_dealloc, /*tp_dealloc*/ + 0, /*tp_print*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_compare*/ + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + PyObject_GenericGetAttr,/*tp_getattro*/ + PyObject_GenericSetAttr,/*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT, /*tp_flags*/ + 0, /*tp_doc*/ + 0, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + 0, /*tp_dictoffset*/ + 0, /*tp_init*/ + PyType_GenericAlloc, /*tp_alloc*/ + PyType_GenericNew, /*tp_new*/ + _PyObject_Del, /*tp_free*/ + 0, /*tp_is_gc*/ +}; + + +/* ===================================================================== */ +/* XChat module */ + +static PyObject * +Module_xchat_command(PyObject *self, PyObject *args) +{ + char *text; + if (!PyArg_ParseTuple(args, "s:command", &text)) + return NULL; + BEGIN_XCHAT_CALLS(RESTORE_CONTEXT|ALLOW_THREADS); + xchat_command(ph, text); + END_XCHAT_CALLS(); + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject * +Module_xchat_prnt(PyObject *self, PyObject *args) +{ + char *text; + if (!PyArg_ParseTuple(args, "s:prnt", &text)) + return NULL; + BEGIN_XCHAT_CALLS(RESTORE_CONTEXT|ALLOW_THREADS); + xchat_print(ph, text); + END_XCHAT_CALLS(); + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject * +Module_xchat_emit_print(PyObject *self, PyObject *args) +{ + char *argv[10]; + char *name; + int res; + memset(&argv, 0, sizeof(char*)*10); + if (!PyArg_ParseTuple(args, "s|ssssss:print_event", &name, + &argv[0], &argv[1], &argv[2], + &argv[3], &argv[4], &argv[5], + &argv[6], &argv[7], &argv[8])) + return NULL; + BEGIN_XCHAT_CALLS(RESTORE_CONTEXT|ALLOW_THREADS); + res = xchat_emit_print(ph, name, argv[0], argv[1], argv[2], + argv[3], argv[4], argv[5], + argv[6], argv[7], argv[8]); + END_XCHAT_CALLS(); + return PyInt_FromLong(res); +} + +static PyObject * +Module_xchat_get_info(PyObject *self, PyObject *args) +{ + const char *info; + char *name; + if (!PyArg_ParseTuple(args, "s:get_info", &name)) + return NULL; + BEGIN_XCHAT_CALLS(RESTORE_CONTEXT); + info = xchat_get_info(ph, name); + END_XCHAT_CALLS(); + if (info == NULL) { + Py_INCREF(Py_None); + return Py_None; + } + return PyString_FromString(info); +} + +static PyObject * +Module_xchat_get_prefs(PyObject *self, PyObject *args) +{ + PyObject *res; + const char *info; + int integer; + char *name; + int type; + if (!PyArg_ParseTuple(args, "s:get_prefs", &name)) + return NULL; + BEGIN_XCHAT_CALLS(NONE); + type = xchat_get_prefs(ph, name, &info, &integer); + END_XCHAT_CALLS(); + switch (type) { + case 0: + Py_INCREF(Py_None); + res = Py_None; + break; + case 1: + res = PyString_FromString((char*)info); + break; + case 2: + case 3: + res = PyInt_FromLong(integer); + break; + default: + PyErr_Format(PyExc_RuntimeError, + "unknown get_prefs type (%d), " + "please report", type); + res = NULL; + break; + } + return res; +} + +static PyObject * +Module_xchat_get_context(PyObject *self, PyObject *args) +{ + PyObject *plugin; + PyObject *ctxobj; + plugin = Plugin_GetCurrent(); + if (plugin == NULL) + return NULL; + ctxobj = Context_FromContext(Plugin_GetContext(plugin)); + if (ctxobj == NULL) { + Py_INCREF(Py_None); + return Py_None; + } + return ctxobj; +} + +static PyObject * +Module_xchat_find_context(PyObject *self, PyObject *args, PyObject *kwargs) +{ + char *server = NULL; + char *channel = NULL; + PyObject *ctxobj; + char *kwlist[] = {"server", "channel", 0}; + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|zz:find_context", + kwlist, &server, &channel)) + return NULL; + ctxobj = Context_FromServerAndChannel(server, channel); + if (ctxobj == NULL) { + Py_INCREF(Py_None); + return Py_None; + } + return ctxobj; +} + +static PyObject * +Module_xchat_hook_command(PyObject *self, PyObject *args, PyObject *kwargs) +{ + char *name; + PyObject *callback; + PyObject *userdata = Py_None; + int priority = XCHAT_PRI_NORM; + char *help = NULL; + PyObject *plugin; + Hook *hook; + char *kwlist[] = {"name", "callback", "userdata", + "priority", "help", 0}; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "sO|Oiz:hook_command", + kwlist, &name, &callback, &userdata, + &priority, &help)) + return NULL; + + plugin = Plugin_GetCurrent(); + if (plugin == NULL) + return NULL; + if (!PyCallable_Check(callback)) { + PyErr_SetString(PyExc_TypeError, "callback is not callable"); + return NULL; + } + + hook = Plugin_AddHook(HOOK_XCHAT, plugin, callback, userdata, NULL); + if (hook == NULL) + return NULL; + + BEGIN_XCHAT_CALLS(NONE); + hook->data = (void*)xchat_hook_command(ph, name, priority, + Callback_Command, help, hook); + END_XCHAT_CALLS(); + + return PyInt_FromLong((long)hook); +} + +static PyObject * +Module_xchat_hook_server(PyObject *self, PyObject *args, PyObject *kwargs) +{ + char *name; + PyObject *callback; + PyObject *userdata = Py_None; + int priority = XCHAT_PRI_NORM; + PyObject *plugin; + Hook *hook; + char *kwlist[] = {"name", "callback", "userdata", "priority", 0}; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "sO|Oi:hook_server", + kwlist, &name, &callback, &userdata, + &priority)) + return NULL; + + plugin = Plugin_GetCurrent(); + if (plugin == NULL) + return NULL; + if (!PyCallable_Check(callback)) { + PyErr_SetString(PyExc_TypeError, "callback is not callable"); + return NULL; + } + + hook = Plugin_AddHook(HOOK_XCHAT, plugin, callback, userdata, NULL); + if (hook == NULL) + return NULL; + + BEGIN_XCHAT_CALLS(NONE); + hook->data = (void*)xchat_hook_server(ph, name, priority, + Callback_Command, hook); + END_XCHAT_CALLS(); + + return PyInt_FromLong((long)hook); +} + +static PyObject * +Module_xchat_hook_print(PyObject *self, PyObject *args, PyObject *kwargs) +{ + char *name; + PyObject *callback; + PyObject *userdata = Py_None; + int priority = XCHAT_PRI_NORM; + PyObject *plugin; + Hook *hook; + char *kwlist[] = {"name", "callback", "userdata", "priority", 0}; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "sO|Oi:hook_print", + kwlist, &name, &callback, &userdata, + &priority)) + return NULL; + + plugin = Plugin_GetCurrent(); + if (plugin == NULL) + return NULL; + if (!PyCallable_Check(callback)) { + PyErr_SetString(PyExc_TypeError, "callback is not callable"); + return NULL; + } + + hook = Plugin_AddHook(HOOK_XCHAT, plugin, callback, userdata, NULL); + if (hook == NULL) + return NULL; + + BEGIN_XCHAT_CALLS(NONE); + hook->data = (void*)xchat_hook_print(ph, name, priority, + Callback_Print, hook); + END_XCHAT_CALLS(); + + return PyInt_FromLong((long)hook); +} + + +static PyObject * +Module_xchat_hook_timer(PyObject *self, PyObject *args, PyObject *kwargs) +{ + int timeout; + PyObject *callback; + PyObject *userdata = Py_None; + PyObject *plugin; + Hook *hook; + char *kwlist[] = {"timeout", "callback", "userdata", 0}; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "iO|O:hook_timer", + kwlist, &timeout, &callback, + &userdata)) + return NULL; + + plugin = Plugin_GetCurrent(); + if (plugin == NULL) + return NULL; + if (!PyCallable_Check(callback)) { + PyErr_SetString(PyExc_TypeError, "callback is not callable"); + return NULL; + } + + hook = Plugin_AddHook(HOOK_XCHAT, plugin, callback, userdata, NULL); + if (hook == NULL) + return NULL; + + BEGIN_XCHAT_CALLS(NONE); + hook->data = (void*)xchat_hook_timer(ph, timeout, + Callback_Timer, hook); + END_XCHAT_CALLS(); + + return PyInt_FromLong((long)hook); +} + +static PyObject * +Module_xchat_hook_unload(PyObject *self, PyObject *args, PyObject *kwargs) +{ + PyObject *callback; + PyObject *userdata = Py_None; + PyObject *plugin; + Hook *hook; + char *kwlist[] = {"callback", "userdata", 0}; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|O:hook_unload", + kwlist, &callback, &userdata)) + return NULL; + + plugin = Plugin_GetCurrent(); + if (plugin == NULL) + return NULL; + if (!PyCallable_Check(callback)) { + PyErr_SetString(PyExc_TypeError, "callback is not callable"); + return NULL; + } + + hook = Plugin_AddHook(HOOK_UNLOAD, plugin, callback, userdata, NULL); + if (hook == NULL) + return NULL; + + return PyInt_FromLong((long)hook); +} + +static PyObject * +Module_xchat_unhook(PyObject *self, PyObject *args) +{ + PyObject *plugin; + Hook *hook; + if (!PyArg_ParseTuple(args, "l:unhook", &hook)) + return NULL; + plugin = Plugin_GetCurrent(); + if (plugin == NULL) + return NULL; + Plugin_RemoveHook(plugin, hook); + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject * +Module_xchat_get_list(PyObject *self, PyObject *args) +{ + xchat_list *list; + PyObject *l; + const char *name; + const char *const *fields; + int i; + + if (!PyArg_ParseTuple(args, "s:get_list", &name)) + return NULL; + /* This function is thread safe, and returns statically + * allocated data. */ + fields = xchat_list_fields(ph, "lists"); + for (i = 0; fields[i]; i++) { + if (strcmp(fields[i], name) == 0) { + /* Use the static allocated one. */ + name = fields[i]; + break; + } + } + if (fields[i] == NULL) { + PyErr_SetString(PyExc_KeyError, "list not available"); + return NULL; + } + l = PyList_New(0); + if (l == NULL) + return NULL; + BEGIN_XCHAT_CALLS(RESTORE_CONTEXT); + list = xchat_list_get(ph, (char*)name); + if (list == NULL) + goto error; + fields = xchat_list_fields(ph, (char*)name); + while (xchat_list_next(ph, list)) { + PyObject *o = ListItem_New(name); + if (o == NULL || PyList_Append(l, o) == -1) { + Py_XDECREF(o); + goto error; + } + Py_DECREF(o); /* l is holding a reference */ + for (i = 0; fields[i]; i++) { + const char *fld = fields[i]+1; + PyObject *attr = NULL; + const char *sattr; + int iattr; + switch(fields[i][0]) { + case 's': + sattr = xchat_list_str(ph, list, (char*)fld); + attr = PyString_FromString(sattr?sattr:""); + break; + case 'i': + iattr = xchat_list_int(ph, list, (char*)fld); + attr = PyInt_FromLong((long)iattr); + break; + case 'p': + sattr = xchat_list_str(ph, list, (char*)fld); + if (strcmp(fld, "context") == 0) { + attr = Context_FromContext( + (xchat_context*)sattr); + break; + } + default: /* ignore unknown (newly added?) types */ + continue; + } + if (attr == NULL) + goto error; + PyObject_SetAttrString(o, (char*)fld, attr); /* add reference on attr in o */ + Py_DECREF(attr); /* make o own attr */ + } + } + xchat_list_free(ph, list); + goto exit; +error: + if (list) + xchat_list_free(ph, list); + Py_DECREF(l); + l = NULL; + +exit: + END_XCHAT_CALLS(); + return l; +} + +static PyObject * +Module_xchat_get_lists(PyObject *self, PyObject *args) +{ + PyObject *l, *o; + const char *const *fields; + int i; + /* This function is thread safe, and returns statically + * allocated data. */ + fields = xchat_list_fields(ph, "lists"); + l = PyList_New(0); + if (l == NULL) + return NULL; + for (i = 0; fields[i]; i++) { + o = PyString_FromString(fields[i]); + if (o == NULL || PyList_Append(l, o) == -1) { + Py_DECREF(l); + Py_XDECREF(o); + return NULL; + } + Py_DECREF(o); /* l is holding a reference */ + } + return l; +} + +static PyObject * +Module_xchat_nickcmp(PyObject *self, PyObject *args) +{ + char *s1, *s2; + if (!PyArg_ParseTuple(args, "ss:nickcmp", &s1, &s2)) + return NULL; + return PyInt_FromLong((long) xchat_nickcmp(ph, s1, s2)); +} + +static PyObject * +Module_xchat_strip(PyObject *self, PyObject *args) +{ + PyObject *result; + char *str, *str2; + int len = -1, flags = 1 | 2; + if (!PyArg_ParseTuple(args, "s|ii:strip", &str, &len, &flags)) + return NULL; + str2 = xchat_strip(ph, str, len, flags); + result = PyString_FromString(str2); + xchat_free(ph, str2); + return result; +} + +static PyMethodDef Module_xchat_methods[] = { + {"command", Module_xchat_command, + METH_VARARGS}, + {"prnt", Module_xchat_prnt, + METH_VARARGS}, + {"emit_print", Module_xchat_emit_print, + METH_VARARGS}, + {"get_info", Module_xchat_get_info, + METH_VARARGS}, + {"get_prefs", Module_xchat_get_prefs, + METH_VARARGS}, + {"get_context", Module_xchat_get_context, + METH_NOARGS}, + {"find_context", (PyCFunction)Module_xchat_find_context, + METH_VARARGS|METH_KEYWORDS}, + {"hook_command", (PyCFunction)Module_xchat_hook_command, + METH_VARARGS|METH_KEYWORDS}, + {"hook_server", (PyCFunction)Module_xchat_hook_server, + METH_VARARGS|METH_KEYWORDS}, + {"hook_print", (PyCFunction)Module_xchat_hook_print, + METH_VARARGS|METH_KEYWORDS}, + {"hook_timer", (PyCFunction)Module_xchat_hook_timer, + METH_VARARGS|METH_KEYWORDS}, + {"hook_unload", (PyCFunction)Module_xchat_hook_unload, + METH_VARARGS|METH_KEYWORDS}, + {"unhook", Module_xchat_unhook, + METH_VARARGS}, + {"get_list", Module_xchat_get_list, + METH_VARARGS}, + {"get_lists", Module_xchat_get_lists, + METH_NOARGS}, + {"nickcmp", Module_xchat_nickcmp, + METH_VARARGS}, + {"strip", Module_xchat_strip, + METH_VARARGS}, + {NULL, NULL} +}; + + +/* ===================================================================== */ +/* Python interactive interpreter functions */ + +static void +IInterp_Exec(char *command) +{ + PyObject *m, *d, *o; + char *buffer; + int len; + + BEGIN_PLUGIN(interp_plugin); + + m = PyImport_AddModule("__main__"); + if (m == NULL) { + xchat_print(ph, "Can't get __main__ module"); + goto fail; + } + d = PyModule_GetDict(m); + len = strlen(command); + buffer = (char *) g_malloc(len+2); + if (buffer == NULL) { + xchat_print(ph, "Not enough memory for command buffer"); + goto fail; + } + memcpy(buffer, command, len); + buffer[len] = '\n'; + buffer[len+1] = 0; + o = PyRun_StringFlags(buffer, Py_single_input, d, d, NULL); + g_free(buffer); + if (o == NULL) { + PyErr_Print(); + goto fail; + } + Py_DECREF(o); + if (Py_FlushLine()) + PyErr_Clear(); + +fail: + END_PLUGIN(interp_plugin); + + return; +} + +static int +IInterp_Cmd(char *word[], char *word_eol[], void *userdata) +{ + char *channel = (char *) xchat_get_info(ph, "channel"); + if (channel && channel[0] == '>' && strcmp(channel, ">>python<<") == 0) { + xchat_printf(ph, ">>> %s\n", word_eol[1]); + IInterp_Exec(word_eol[1]); + return 1; + } + return 0; +} + + +/* ===================================================================== */ +/* Python command handling */ + +static void +Command_PyList() +{ + GSList *list; + list = plugin_list; + if (list == NULL) { + xchat_print(ph, "No python modules loaded"); + } else { + xchat_print(ph, + "Name Version Filename Description\n" + "---- ------- -------- -----------\n"); + while (list != NULL) { + PluginObject *plg = (PluginObject *) list->data; + char *basename = g_path_get_basename(plg->filename); + xchat_printf(ph, "%-12s %-8s %-20s %-10s\n", + plg->name, + *plg->version ? plg->version + : "", + basename, + *plg->description ? plg->description + : ""); + g_free(basename); + list = list->next; + } + xchat_print(ph, "\n"); + } +} + +static void +Command_PyLoad(char *filename) +{ + PyObject *plugin; + RELEASE_XCHAT_LOCK(); + plugin = Plugin_New(filename, Module_xchat_methods, xchatout); + ACQUIRE_XCHAT_LOCK(); + if (plugin) + plugin_list = g_slist_append(plugin_list, plugin); +} + +static void +Command_PyUnload(char *name) +{ + PluginObject *plugin = Plugin_ByString(name); + if (!plugin) { + xchat_print(ph, "Can't find a python plugin with that name"); + } else { + BEGIN_PLUGIN(plugin); + Plugin_Delete((PyObject*)plugin); + END_PLUGIN(plugin); + plugin_list = g_slist_remove(plugin_list, plugin); + } +} + +static void +Command_PyReload(char *name) +{ + PluginObject *plugin = Plugin_ByString(name); + if (!plugin) { + xchat_print(ph, "Can't find a python plugin with that name"); + } else { + char *filename = strdup(plugin->filename); + Command_PyUnload(filename); + Command_PyLoad(filename); + g_free(filename); + } +} + +static void +Command_PyAbout() +{ + xchat_print(ph, about); +} + +static int +Command_Py(char *word[], char *word_eol[], void *userdata) +{ + char *cmd = word[2]; + int ok = 0; + if (strcasecmp(cmd, "LIST") == 0) { + ok = 1; + Command_PyList(); + } else if (strcasecmp(cmd, "EXEC") == 0) { + if (word[3][0]) { + ok = 1; + IInterp_Exec(word_eol[3]); + } + } else if (strcasecmp(cmd, "LOAD") == 0) { + if (word[3][0]) { + ok = 1; + Command_PyLoad(word[3]); + } + } else if (strcasecmp(cmd, "UNLOAD") == 0) { + if (word[3][0]) { + ok = 1; + Command_PyUnload(word[3]); + } + } else if (strcasecmp(cmd, "RELOAD") == 0) { + if (word[3][0]) { + ok = 1; + Command_PyReload(word[3]); + } + } else if (strcasecmp(cmd, "CONSOLE") == 0) { + ok = 1; + xchat_command(ph, "QUERY >>python<<"); + } else if (strcasecmp(cmd, "ABOUT") == 0) { + ok = 1; + Command_PyAbout(); + } + if (!ok) + xchat_print(ph, usage); + return XCHAT_EAT_ALL; +} + +static int +Command_Load(char *word[], char *word_eol[], void *userdata) +{ + int len = strlen(word[2]); + if (len > 3 && strcasecmp(".py", word[2]+len-3) == 0) { + Command_PyLoad(word[2]); + return XCHAT_EAT_XCHAT; + } + return XCHAT_EAT_NONE; +} + +static int +Command_Unload(char *word[], char *word_eol[], void *userdata) +{ + int len = strlen(word[2]); + if (len > 3 && strcasecmp(".py", word[2]+len-3) == 0) { + Command_PyUnload(word[2]); + return XCHAT_EAT_XCHAT; + } + return XCHAT_EAT_NONE; +} + +/* ===================================================================== */ +/* Autoload function */ + +/* ===================================================================== */ +/* (De)initialization functions */ + +static int initialized = 0; +static int reinit_tried = 0; + +void +xchat_plugin_get_info(char **name, char **desc, char **version, void **reserved) +{ + *name = "Python"; + *version = VERSION; + *desc = "Python scripting interface"; + if (reserved) + *reserved = NULL; +} + +int +xchat_plugin_init(xchat_plugin *plugin_handle, + char **plugin_name, + char **plugin_desc, + char **plugin_version, + char *arg) +{ + char *argv[] = {"", 0}; + + ph = plugin_handle; + + /* Block double initalization. */ + if (initialized != 0) { + xchat_print(ph, "Python interface already loaded"); + /* deinit is called even when init fails, so keep track + * of a reinit failure. */ + reinit_tried++; + return 0; + } + initialized = 1; + + *plugin_name = "Python"; + *plugin_version = VERSION; + *plugin_desc = "Python scripting interface"; + + /* Initialize python. */ + Py_SetProgramName("xchat"); + Py_Initialize(); + PySys_SetArgv(1, argv); + PyRun_SimpleString("import sys; sys.path = filter(None, sys.path)"); + + Plugin_Type.ob_type = &PyType_Type; + Context_Type.ob_type = &PyType_Type; + XChatOut_Type.ob_type = &PyType_Type; + + xchatout = XChatOut_New(); + if (xchatout == NULL) { + xchat_print(ph, "Can't allocate xchatout object"); + return 0; + } + +#ifdef WITH_THREAD + PyEval_InitThreads(); + xchat_lock = PyThread_allocate_lock(); + if (xchat_lock == NULL) { + xchat_print(ph, "Can't allocate xchat lock"); + Py_DECREF(xchatout); + xchatout = NULL; + return 0; + } +#endif + + main_tstate = PyEval_SaveThread(); + + interp_plugin = Plugin_New(NULL, Module_xchat_methods, xchatout); + if (interp_plugin == NULL) { + xchat_print(ph, "Plugin_New() failed.\n"); +#ifdef WITH_THREAD + PyThread_free_lock(xchat_lock); +#endif + Py_DECREF(xchatout); + xchatout = NULL; + return 0; + } + + + xchat_hook_command(ph, "", XCHAT_PRI_NORM, IInterp_Cmd, 0, 0); + xchat_hook_command(ph, "PY", XCHAT_PRI_NORM, Command_Py, usage, 0); + xchat_hook_command(ph, "LOAD", XCHAT_PRI_NORM, Command_Load, 0, 0); + xchat_hook_command(ph, "UNLOAD", XCHAT_PRI_NORM, Command_Unload, 0, 0); +#ifdef WITH_THREAD + thread_timer = xchat_hook_timer(ph, 300, Callback_ThreadTimer, NULL); +#endif + + xchat_print(ph, "Python interface loaded\n"); + + Util_Autoload(); + return 1; +} + +int +xchat_plugin_deinit() +{ + GSList *list; + + /* A reinitialization was tried. Just give up and live the + * environment as is. We are still alive. */ + if (reinit_tried) { + reinit_tried--; + return 1; + } + + list = plugin_list; + while (list != NULL) { + PyObject *plugin = (PyObject *) list->data; + BEGIN_PLUGIN(plugin); + Plugin_Delete(plugin); + END_PLUGIN(plugin); + list = list->next; + } + g_slist_free(plugin_list); + plugin_list = NULL; + + /* Reset xchatout buffer. */ + g_free(xchatout_buffer); + xchatout_buffer = NULL; + xchatout_buffer_size = 0; + xchatout_buffer_pos = 0; + + if (interp_plugin) { + Py_DECREF(interp_plugin); + interp_plugin = NULL; + } + + /* Switch back to the main thread state. */ + if (main_tstate) { + PyThreadState_Swap(main_tstate); + main_tstate = NULL; + } + Py_Finalize(); + +#ifdef WITH_THREAD + if (thread_timer != NULL) { + xchat_unhook(ph, thread_timer); + thread_timer = NULL; + } + PyThread_free_lock(xchat_lock); +#endif + + xchat_print(ph, "Python interface unloaded\n"); + initialized = 0; + + return 1; +} + diff --git a/etc/wyatt8740/plugins/tcl/Makefile.am b/etc/wyatt8740/plugins/tcl/Makefile.am new file mode 100644 index 0000000..804fc83 --- /dev/null +++ b/etc/wyatt8740/plugins/tcl/Makefile.am @@ -0,0 +1,10 @@ + +EXTRA_DIST=printevents.h tclplugin.h README + +libdir = $(xchatlibdir)/plugins + +lib_LTLIBRARIES = tcl.la +tcl_la_SOURCES = tclplugin.c +tcl_la_LDFLAGS = -avoid-version -module +tcl_la_LIBADD = $(TCL_LIBS) +INCLUDES = $(TCL_CFLAGS) $(COMMON_CFLAGS) -I$(srcdir)/.. diff --git a/etc/wyatt8740/plugins/tcl/Makefile.in b/etc/wyatt8740/plugins/tcl/Makefile.in new file mode 100644 index 0000000..a79b70e --- /dev/null +++ b/etc/wyatt8740/plugins/tcl/Makefile.in @@ -0,0 +1,719 @@ +# Makefile.in generated by automake 1.16.5 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2021 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = plugins/tcl +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(libdir)" +LTLIBRARIES = $(lib_LTLIBRARIES) +am__DEPENDENCIES_1 = +tcl_la_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_tcl_la_OBJECTS = tclplugin.lo +tcl_la_OBJECTS = $(am_tcl_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +tcl_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(tcl_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = ./$(DEPDIR)/tclplugin.Plo +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(tcl_la_SOURCES) +DIST_SOURCES = $(tcl_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp README +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COMMON_CFLAGS = @COMMON_CFLAGS@ +COMMON_LIBS = @COMMON_LIBS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DBUS_BINDING_TOOL = @DBUS_BINDING_TOOL@ +DBUS_CFLAGS = @DBUS_CFLAGS@ +DBUS_LIBS = @DBUS_LIBS@ +DBUS_SERVICES_DIR = @DBUS_SERVICES_DIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ETAGS = @ETAGS@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FILECMD = @FILECMD@ +GCONFTOOL = @GCONFTOOL@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLIB_CFLAGS = @GLIB_CFLAGS@ +GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GLIB_LIBS = @GLIB_LIBS@ +GLIB_MKENUMS = @GLIB_MKENUMS@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GOBJECT_QUERY = @GOBJECT_QUERY@ +GREP = @GREP@ +GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ +GTKSPELL_LIBS = @GTKSPELL_LIBS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_LIBS = @GTK_LIBS@ +GUI_CFLAGS = @GUI_CFLAGS@ +GUI_LIBS = @GUI_LIBS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSEXY_CFLAGS = @LIBSEXY_CFLAGS@ +LIBSEXY_LIBS = @LIBSEXY_LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL_CFLAGS = @PERL_CFLAGS@ +PERL_LDFLAGS = @PERL_LDFLAGS@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLUGIN_INCLUDES = @PLUGIN_INCLUDES@ +POSUB = @POSUB@ +PY_CFLAGS = @PY_CFLAGS@ +PY_LIBS = @PY_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TCL_CFLAGS = @TCL_CFLAGS@ +TCL_LIBS = @TCL_LIBS@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gdkpixbufcsourcepath = @gdkpixbufcsourcepath@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = $(xchatlibdir)/plugins +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +perlpath = @perlpath@ +pkgconfigpath = @pkgconfigpath@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pythonpath = @pythonpath@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sedpath = @sedpath@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +unamepath = @unamepath@ +xchatlibdir = @xchatlibdir@ +EXTRA_DIST = printevents.h tclplugin.h README +lib_LTLIBRARIES = tcl.la +tcl_la_SOURCES = tclplugin.c +tcl_la_LDFLAGS = -avoid-version -module +tcl_la_LIBADD = $(TCL_LIBS) +INCLUDES = $(TCL_CFLAGS) $(COMMON_CFLAGS) -I$(srcdir)/.. +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign plugins/tcl/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign plugins/tcl/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +tcl.la: $(tcl_la_OBJECTS) $(tcl_la_DEPENDENCIES) $(EXTRA_tcl_la_DEPENDENCIES) + $(AM_V_CCLD)$(tcl_la_LINK) -rpath $(libdir) $(tcl_la_OBJECTS) $(tcl_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tclplugin.Plo@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) +installdirs: + for dir in "$(DESTDIR)$(libdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -f ./$(DEPDIR)/tclplugin.Plo + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-libLTLIBRARIES + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f ./$(DEPDIR)/tclplugin.Plo + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-libLTLIBRARIES + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ + clean-generic clean-libLTLIBRARIES clean-libtool cscopelist-am \ + ctags ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-libLTLIBRARIES install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/etc/wyatt8740/plugins/tcl/README b/etc/wyatt8740/plugins/tcl/README new file mode 100644 index 0000000..e46635e --- /dev/null +++ b/etc/wyatt8740/plugins/tcl/README @@ -0,0 +1,55 @@ +Please read this document before asking questions. + +(1) WHAT IS THE TCL PLUGIN? + + The XChat Tcl Plugin adds the complete Tcl scripting language to the + XChat 1.9.x and 2.x IRC client. The design philosophy behind the tcl + plugin was to give all the power of the C API. yet completely shield + the user from all the complexities of it. It is lightly modeled after + after Xircon; an old windows TCL enabled client with a little bit of + eggdrop functionality to it. + + Features: + * Uses the popular TCL scripting language. + * Familiar to eggdrop bot owners. + * Adds many new XChat specific commands to the Tcl language for + handling of events, user commands, timers, etc. + * It's actually documented! (Hey, what a concept!) + * Works with XChat 1.9.x and 2.x. + * Open source (GPL) + + The supplied documentation for Tcl Plugin commands can be + found in doc/tclplugin.html + + For a comprehensive list of IRC server tokens, see + doc/tokens.txt + + +(2) HOW TO GET TCL PLUGIN + + You can always find the latest version of the Tcl Plugin at: + + http://www.scriptkitties.com/tclplugin + + You must also have Tcl 8.3 or higher installed on your system. + + Tcl can be obtained from: + + http://sourceforge.net/projects/tcl + http://tcl.activestate.com (pre-compiled binaries) + + Tcl Man Pages + + http://tcl.activestate.com/man/ + + Tcl Tutorials: + + http://hegel.ittc.ukans.edu/topics/tcltk/tutorial-noplugin/ + http://jan.netcomp.monash.edu.au/ProgrammingUnix/tcl/tcl_tut.html + http://users.belgacom.net/bruno.champagne/tcl.html + + +(3) QUICK STARTUP + + SEE 'INSTALL' + diff --git a/etc/wyatt8740/plugins/tcl/printevents.h b/etc/wyatt8740/plugins/tcl/printevents.h new file mode 100755 index 0000000..dfea4ae --- /dev/null +++ b/etc/wyatt8740/plugins/tcl/printevents.h @@ -0,0 +1,319 @@ +/*************************************************************************** + printevents.h - TCL plugin header file + ------------------------------------------------- + begin : Sat Nov 9 17:31:20 MST 2002 + copyright : Copyright 2002-2007 Daniel P. Stasinski + email : mooooooo@avenues.org + generated : Mon May 21 06:03:00 PM MST 2007 + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +typedef struct { + char *event; + char *emit; + int argc; + xchat_hook *hook; +} print_event; + +enum +{ + CHAT, + XC_APPFOCUS, + XC_TABOPEN, + XC_TABCLOSE, + XC_TABFOCUS, + XC_KEYPRESS, + XC_ADDNOTIFY, + XC_BANLIST, + XC_BANNED, + XC_BEEP, + XC_CHANGENICK, + XC_CHANACTION, + XC_HCHANACTION, + XC_CHANBAN, + XC_CHANDATE, + XC_CHANDEHOP, + XC_CHANDEOP, + XC_CHANDEVOICE, + XC_CHANEXEMPT, + XC_CHANHOP, + XC_CHANINVITE, + XC_CHANLISTHEAD, + XC_CHANMSG, + XC_CHANMODEGEN, + XC_CHANMODES, + XC_HCHANMSG, + XC_CHANNOTICE, + XC_CHANOP, + XC_CHANRMEXEMPT, + XC_CHANRMINVITE, + XC_CHANRMKEY, + XC_CHANRMLIMIT, + XC_CHANSETKEY, + XC_CHANSETLIMIT, + XC_CHANUNBAN, + XC_CHANVOICE, + XC_CONNECTED, + XC_CONNECT, + XC_CONNFAIL, + XC_CTCPGEN, + XC_CTCPGENC, + XC_CTCPSEND, + XC_CTCPSND, + XC_CTCPSNDC, + XC_DCCCHATABORT, + XC_DCCCONCHAT, + XC_DCCCHATF, + XC_DCCCHATOFFER, + XC_DCCCHATOFFERING, + XC_DCCCHATREOFFER, + XC_DCCCONFAIL, + XC_DCCGENERICOFFER, + XC_DCCHEAD, + XC_MALFORMED, + XC_DCCOFFER, + XC_DCCIVAL, + XC_DCCRECVABORT, + XC_DCCRECVCOMP, + XC_DCCCONRECV, + XC_DCCRECVERR, + XC_DCCFILEERR, + XC_DCCRENAME, + XC_DCCRESUMEREQUEST, + XC_DCCSENDABORT, + XC_DCCSENDCOMP, + XC_DCCCONSEND, + XC_DCCSENDFAIL, + XC_DCCSENDOFFER, + XC_DCCSTALL, + XC_DCCTOUT, + XC_DELNOTIFY, + XC_DISCON, + XC_FOUNDIP, + XC_GENMSG, + XC_IGNOREADD, + XC_IGNORECHANGE, + XC_IGNOREFOOTER, + XC_IGNOREHEADER, + XC_IGNOREREMOVE, + XC_IGNOREEMPTY, + XC_INVITE, + XC_INVITED, + XC_JOIN, + XC_KEYWORD, + XC_KICK, + XC_KILL, + XC_MSGSEND, + XC_MOTD, + XC_MOTDSKIP, + XC_NICKCLASH, + XC_NICKFAIL, + XC_NODCC, + XC_NOCHILD, + XC_NOTICE, + XC_NOTICESEND, + XC_NOTIFYEMPTY, + XC_NOTIFYHEAD, + XC_NOTIFYNUMBER, + XC_NOTIFYOFFLINE, + XC_NOTIFYONLINE, + XC_OPENDIALOG, + XC_PART, + XC_PARTREASON, + XC_PINGREP, + XC_PINGTIMEOUT, + XC_PRIVMSG, + XC_DPRIVMSG, + XC_ALREADYPROCESS, + XC_QUIT, + XC_RAWMODES, + XC_WALLOPS, + XC_RESOLVINGUSER, + XC_SERVERCONNECTED, + XC_SERVERERROR, + XC_SERVERLOOKUP, + XC_SERVNOTICE, + XC_SERVTEXT, + XC_STOPCONNECT, + XC_TOPIC, + XC_NEWTOPIC, + XC_TOPICDATE, + XC_UKNHOST, + XC_USERLIMIT, + XC_USERSONCHAN, + XC_WHOIS_AUTH, + XC_WHOIS5, + XC_WHOIS2, + XC_WHOIS6, + XC_WHOIS_ID, + XC_WHOIS4, + XC_WHOIS4T, + XC_WHOIS1, + XC_WHOIS_REALHOST, + XC_WHOIS3, + XC_WHOIS_SPECIAL, + XC_UJOIN, + XC_UKICK, + XC_UPART, + XC_UPARTREASON, + XC_UACTION, + XC_UINVITE, + XC_UCHANMSG, + XC_UCHANGENICK, + XC_SIZE +}; + +static print_event xc[] = { + { "CHAT", "DCC Chat Text", -1, NULL }, + { "XC_APPFOCUS", "Focus Window", -3, NULL }, + { "XC_TABOPEN", "Open Context", -2, NULL }, + { "XC_TABCLOSE", "Close Context", -2, NULL }, + { "XC_TABFOCUS", "Focus Tab", -2, NULL }, + { "XC_KEYPRESS", "Key Press", 4, NULL }, + { "XC_ADDNOTIFY", "Add Notify", 1, NULL }, + { "XC_BANLIST", "Ban List", 4, NULL }, + { "XC_BANNED", "Banned", 1, NULL }, + { "XC_BEEP", "Beep", 0, NULL }, + { "XC_CHANGENICK", "Change Nick", 2, NULL }, + { "XC_CHANACTION", "Channel Action", 3, NULL }, + { "XC_HCHANACTION", "Channel Action Hilight", 3, NULL }, + { "XC_CHANBAN", "Channel Ban", 2, NULL }, + { "XC_CHANDATE", "Channel Creation", 2, NULL }, + { "XC_CHANDEHOP", "Channel DeHalfOp", 2, NULL }, + { "XC_CHANDEOP", "Channel DeOp", 2, NULL }, + { "XC_CHANDEVOICE", "Channel DeVoice", 2, NULL }, + { "XC_CHANEXEMPT", "Channel Exempt", 2, NULL }, + { "XC_CHANHOP", "Channel Half-Operator", 2, NULL }, + { "XC_CHANINVITE", "Channel INVITE", 2, NULL }, + { "XC_CHANLISTHEAD", "Channel List", 0, NULL }, + { "XC_CHANMSG", "Channel Message", 4, NULL }, + { "XC_CHANMODEGEN", "Channel Mode Generic", 4, NULL }, + { "XC_CHANMODES", "Channel Modes", 2, NULL }, + { "XC_HCHANMSG", "Channel Msg Hilight", 4, NULL }, + { "XC_CHANNOTICE", "Channel Notice", 3, NULL }, + { "XC_CHANOP", "Channel Operator", 2, NULL }, + { "XC_CHANRMEXEMPT", "Channel Remove Exempt", 2, NULL }, + { "XC_CHANRMINVITE", "Channel Remove Invite", 2, NULL }, + { "XC_CHANRMKEY", "Channel Remove Keyword", 1, NULL }, + { "XC_CHANRMLIMIT", "Channel Remove Limit", 1, NULL }, + { "XC_CHANSETKEY", "Channel Set Key", 2, NULL }, + { "XC_CHANSETLIMIT", "Channel Set Limit", 2, NULL }, + { "XC_CHANUNBAN", "Channel UnBan", 2, NULL }, + { "XC_CHANVOICE", "Channel Voice", 2, NULL }, + { "XC_CONNECTED", "Connected", 0, NULL }, + { "XC_CONNECT", "Connecting", 3, NULL }, + { "XC_CONNFAIL", "Connection Failed", 1, NULL }, + { "XC_CTCPGEN", "CTCP Generic", 2, NULL }, + { "XC_CTCPGENC", "CTCP Generic to Channel", 3, NULL }, + { "XC_CTCPSEND", "CTCP Send", 2, NULL }, + { "XC_CTCPSND", "CTCP Sound", 2, NULL }, + { "XC_CTCPSNDC", "CTCP Sound to Channel", 3, NULL }, + { "XC_DCCCHATABORT", "DCC CHAT Abort", 1, NULL }, + { "XC_DCCCONCHAT", "DCC CHAT Connect", 2, NULL }, + { "XC_DCCCHATF", "DCC CHAT Failed", 4, NULL }, + { "XC_DCCCHATOFFER", "DCC CHAT Offer", 1, NULL }, + { "XC_DCCCHATOFFERING", "DCC CHAT Offering", 1, NULL }, + { "XC_DCCCHATREOFFER", "DCC CHAT Reoffer", 1, NULL }, + { "XC_DCCCONFAIL", "DCC Conection Failed", 3, NULL }, + { "XC_DCCGENERICOFFER", "DCC Generic Offer", 2, NULL }, + { "XC_DCCHEAD", "DCC Header", 0, NULL }, + { "XC_MALFORMED", "DCC Malformed", 2, NULL }, + { "XC_DCCOFFER", "DCC Offer", 3, NULL }, + { "XC_DCCIVAL", "DCC Offer Not Valid", 0, NULL }, + { "XC_DCCRECVABORT", "DCC RECV Abort", 2, NULL }, + { "XC_DCCRECVCOMP", "DCC RECV Complete", 4, NULL }, + { "XC_DCCCONRECV", "DCC RECV Connect", 3, NULL }, + { "XC_DCCRECVERR", "DCC RECV Failed", 4, NULL }, + { "XC_DCCFILEERR", "DCC RECV File Open Error", 2, NULL }, + { "XC_DCCRENAME", "DCC Rename", 2, NULL }, + { "XC_DCCRESUMEREQUEST", "DCC RESUME Request", 3, NULL }, + { "XC_DCCSENDABORT", "DCC SEND Abort", 2, NULL }, + { "XC_DCCSENDCOMP", "DCC SEND Complete", 3, NULL }, + { "XC_DCCCONSEND", "DCC SEND Connect", 3, NULL }, + { "XC_DCCSENDFAIL", "DCC SEND Failed", 3, NULL }, + { "XC_DCCSENDOFFER", "DCC SEND Offer", 4, NULL }, + { "XC_DCCSTALL", "DCC Stall", 3, NULL }, + { "XC_DCCTOUT", "DCC Timeout", 3, NULL }, + { "XC_DELNOTIFY", "Delete Notify", 1, NULL }, + { "XC_DISCON", "Disconnected", 1, NULL }, + { "XC_FOUNDIP", "Found IP", 1, NULL }, + { "XC_GENMSG", "Generic Message", 2, NULL }, + { "XC_IGNOREADD", "Ignore Add", 1, NULL }, + { "XC_IGNORECHANGE", "Ignore Changed", 1, NULL }, + { "XC_IGNOREFOOTER", "Ignore Footer", 0, NULL }, + { "XC_IGNOREHEADER", "Ignore Header", 0, NULL }, + { "XC_IGNOREREMOVE", "Ignore Remove", 1, NULL }, + { "XC_IGNOREEMPTY", "Ignorelist Empty", 0, NULL }, + { "XC_INVITE", "Invite", 1, NULL }, + { "XC_INVITED", "Invited", 3, NULL }, + { "XC_JOIN", "Join", 3, NULL }, + { "XC_KEYWORD", "Keyword", 1, NULL }, + { "XC_KICK", "Kick", 4, NULL }, + { "XC_KILL", "Killed", 2, NULL }, + { "XC_MSGSEND", "Message Send", 2, NULL }, + { "XC_MOTD", "Motd", 1, NULL }, + { "XC_MOTDSKIP", "MOTD Skipped", 0, NULL }, + { "XC_NICKCLASH", "Nick Clash", 2, NULL }, + { "XC_NICKFAIL", "Nick Failed", 0, NULL }, + { "XC_NODCC", "No DCC", 0, NULL }, + { "XC_NOCHILD", "No Running Process", 0, NULL }, + { "XC_NOTICE", "Notice", 2, NULL }, + { "XC_NOTICESEND", "Notice Send", 2, NULL }, + { "XC_NOTIFYEMPTY", "Notify Empty", 0, NULL }, + { "XC_NOTIFYHEAD", "Notify Header", 0, NULL }, + { "XC_NOTIFYNUMBER", "Notify Number", 1, NULL }, + { "XC_NOTIFYOFFLINE", "Notify Offline", 3, NULL }, + { "XC_NOTIFYONLINE", "Notify Online", 3, NULL }, + { "XC_OPENDIALOG", "Open Dialog", 0, NULL }, + { "XC_PART", "Part", 3, NULL }, + { "XC_PARTREASON", "Part with Reason", 4, NULL }, + { "XC_PINGREP", "Ping Reply", 2, NULL }, + { "XC_PINGTIMEOUT", "Ping Timeout", 1, NULL }, + { "XC_PRIVMSG", "Private Message", 3, NULL }, + { "XC_DPRIVMSG", "Private Message to Dialog", 3, NULL }, + { "XC_ALREADYPROCESS", "Process Already Running", 0, NULL }, + { "XC_QUIT", "Quit", 3, NULL }, + { "XC_RAWMODES", "Raw Modes", 2, NULL }, + { "XC_WALLOPS", "Receive Wallops", 2, NULL }, + { "XC_RESOLVINGUSER", "Resolving User", 2, NULL }, + { "XC_SERVERCONNECTED", "Server Connected", 0, NULL }, + { "XC_SERVERERROR", "Server Error", 1, NULL }, + { "XC_SERVERLOOKUP", "Server Lookup", 1, NULL }, + { "XC_SERVNOTICE", "Server Notice", 2, NULL }, + { "XC_SERVTEXT", "Server Text", 2, NULL }, + { "XC_STOPCONNECT", "Stop Connection", 1, NULL }, + { "XC_TOPIC", "Topic", 2, NULL }, + { "XC_NEWTOPIC", "Topic Change", 3, NULL }, + { "XC_TOPICDATE", "Topic Creation", 3, NULL }, + { "XC_UKNHOST", "Unknown Host", 0, NULL }, + { "XC_USERLIMIT", "User Limit", 1, NULL }, + { "XC_USERSONCHAN", "Users On Channel", 2, NULL }, + { "XC_WHOIS_AUTH", "WhoIs Authenticated", 3, NULL }, + { "XC_WHOIS5", "WhoIs Away Line", 2, NULL }, + { "XC_WHOIS2", "WhoIs Channel/Oper Line", 2, NULL }, + { "XC_WHOIS6", "WhoIs End", 1, NULL }, + { "XC_WHOIS_ID", "WhoIs Identified", 2, NULL }, + { "XC_WHOIS4", "WhoIs Idle Line", 2, NULL }, + { "XC_WHOIS4T", "WhoIs Idle Line with Signon", 3, NULL }, + { "XC_WHOIS1", "WhoIs Name Line", 4, NULL }, + { "XC_WHOIS_REALHOST", "WhoIs Real Host", 4, NULL }, + { "XC_WHOIS3", "WhoIs Server Line", 2, NULL }, + { "XC_WHOIS_SPECIAL", "WhoIs Special", 3, NULL }, + { "XC_UJOIN", "You Join", 3, NULL }, + { "XC_UKICK", "You Kicked", 4, NULL }, + { "XC_UPART", "You Part", 3, NULL }, + { "XC_UPARTREASON", "You Part with Reason", 4, NULL }, + { "XC_UACTION", "Your Action", 3, NULL }, + { "XC_UINVITE", "Your Invitation", 3, NULL }, + { "XC_UCHANMSG", "Your Message", 4, NULL }, + { "XC_UCHANGENICK", "Your Nick Changing", 2, NULL } +}; + diff --git a/etc/wyatt8740/plugins/tcl/tclplugin.c b/etc/wyatt8740/plugins/tcl/tclplugin.c new file mode 100755 index 0000000..17dc755 --- /dev/null +++ b/etc/wyatt8740/plugins/tcl/tclplugin.c @@ -0,0 +1,2290 @@ +/*************************************************************************** + tclplugin.c - Tcl plugin for xchat 1.9.x / 2.x.x + -------------------------------------------------s + begin : Sat Nov 19 17:31:20 MST 2002 + copyright : Copyright 2002-2010 Daniel P. Stasinski + email : daniel@avenues.org + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +static char RCSID[] = "$Id: tclplugin.c,v 1.64 2010/03/10 04:24:16 mooooooo Exp $"; + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef WIN32 +#include +#define bzero(mem, sz) memset((mem), 0, (sz)) +#define bcopy(src, dest, count) memmove((dest), (src), (count)) +#else +#include +#endif + +#include "xchat-plugin.h" +#include "tclplugin.h" +#include "printevents.h" + +static int nexttimerid = 0; +static int nexttimerindex = 0; +static timer timers[MAX_TIMERS]; + +static char VERSION[16]; + +static int initialized = 0; +static int reinit_tried = 0; +static Tcl_Interp *interp = NULL; +static xchat_plugin *ph; +static xchat_hook *raw_line_hook; +static xchat_hook *Command_TCL_hook; +static xchat_hook *Command_Source_hook; +static xchat_hook *Command_Reload_hook; +static xchat_hook *Command_Load_hook; +static xchat_hook *Event_Handler_hook; +static xchat_hook *Null_Command_hook; + +static int complete_level = 0; +static t_complete complete[MAX_COMPLETES + 1]; +static Tcl_HashTable cmdTablePtr; +static Tcl_HashTable aliasTablePtr; + +static int nextprocid = 0x1000; +#define PROCPREFIX "__xctcl_" + +static char unknown[] = { +"rename unknown iunknown\n" +"proc ::unknown {args} {\n" +" global errorInfo errorCode\n" +" if { [string index [lindex $args 0] 0] == \"/\" } {\n" +" command \"[string range [join $args \" \"] 1 end]\"\n" +" } else {\n" +" set code [catch {uplevel iunknown $args} msg]\n" +" if {$code == 1} {\n" +" set new [split $errorInfo \\n]\n" +" set new [join [lrange $new 0 [expr {[llength $new] - 8}]] \\n]\n" +" return -code error -errorcode $errorCode -errorinfo $new $msg\n" +" } else {\n" +" return -code $code $msg\n" +" }\n" +" }\n" +"}\n" +"proc unsupported0 {from to {bytes \"\"}} {\n" +" set b [expr {$bytes == \"\" ? \"\" : \"-size [list $bytes]\"}]\n" +" eval [list fcopy $from $to] $b\n" +"}\n" +}; + +static char sourcedirs[] = { + "set files [lsort [glob -nocomplain -directory [xchatdir] \"*.tcl\"]]\n" + "set init [lsearch -glob $files \"*/init.tcl\"]\n" + "if { $init > 0 } {\n" + "set initfile [lindex $files $init]\n" + "set files [lreplace $files $init $init]\n" + "set files [linsert $files 0 $initfile]\n" "}\n" "foreach f $files {\n" "if { [catch { source $f } errMsg] } {\n" "puts \"Tcl plugin\\tError sourcing \\\"$f\\\" ($errMsg)\"\n" "} else {\n" "puts \"Tcl plugin\\tSourced \\\"$f\\\"\"\n" "}\n" "}\n" +}; + +static char inlinetcl[] = { +"proc splitsrc { } {\n" +"uplevel \"scan \\$_src \\\"%\\\\\\[^!\\\\\\]!%\\\\\\[^@\\\\\\]@%s\\\" _nick _ident _host\"\n" +"}\n" + +"proc ::exit { } {\n" +"puts \"Using 'exit' is bad\"\n" +"}\n" + +"proc ::away { args } { return [eval [join [list getinfo $args away]]] }\n" +"proc ::channel { args } { return [eval [join [list getinfo $args channel]]] }\n" +"proc ::tab { args } { return [eval [join [list getinfo $args channel]]] }\n" +"proc ::charset { args } { return [eval [join [list getinfo $args charset]]] }\n" +"proc ::host { args } { return [eval [join [list getinfo $args host]]] }\n" +"proc ::inputbox { args } { return [eval [join [list getinfo $args inputbox]]] }\n" +"proc ::libdirfs { args } { return [eval [join [list getinfo $args libdirfs]]] }\n" +"proc ::network { args } { return [eval [join [list getinfo $args network]]] }\n" +"proc ::nickserv { args } { return [eval [join [list getinfo $args nickserv]]] }\n" +"proc ::server { args } { return [eval [join [list getinfo $args server]]] }\n" +"proc ::version { args } { return [eval [join [list getinfo $args version]]] }\n" +"proc ::win_status { args } { return [eval [join [list getinfo $args win_status]]] }\n" +"proc ::xchatdir { args } { return [eval [join [list getinfo $args xchatdir]]] }\n" +"proc ::xchatdirfs { args } { return [eval [join [list getinfo $args xchatdirfs]]] }\n" + +"proc ::color { {arg {}} } { return \"\\003$arg\" }\n" +"proc ::bold { } { return \"\\002\" }\n" +"proc ::underline { } { return \"\\037\" }\n" +"proc ::reverse { } { return \"\\026\" }\n" +"proc ::reset { } { return \"\\017\" }\n" + +"proc ::__xctcl_errorInfo { } {\n" +" set text [split $::errorInfo \\n]\n" +" puts [string trim [join [lrange $text 0 [expr {[llength $text] - 4}]] \\n]]\n" +"}\n" + +"proc ::bgerror { message } {\n" +" set text [split $::errorInfo \\n]\n" +" puts [string trim [join [lrange $text 0 [expr {[llength $text] - 4}]] \\n]]\n" +"}\n" +}; + +static void NiceErrorInfo () +{ + Tcl_Eval(interp, "::__xctcl_errorInfo"); +} + +static void Tcl_MyDStringAppend(Tcl_DString * ds, char *string) +{ + Tcl_DStringAppend(ds, string, strlen(string)); +} + +static char *InternalProcName(int value) +{ + static char result[32]; + sprintf(result, "%s%08x", PROCPREFIX, value); + return result; +} + +static int SourceInternalProc(int id, const char *args, const char *source) +{ + Tcl_DString ds; + int result; + Tcl_DStringInit(&ds); + + Tcl_MyDStringAppend(&ds, "proc "); + Tcl_MyDStringAppend(&ds, InternalProcName(id)); + Tcl_MyDStringAppend(&ds, " { "); + Tcl_MyDStringAppend(&ds, args); + Tcl_MyDStringAppend(&ds, " } {\n"); + Tcl_MyDStringAppend(&ds, source); + Tcl_MyDStringAppend(&ds, "\n}\n\n"); + + result = Tcl_Eval(interp, ds.string); + + Tcl_DStringFree(&ds); + + return result; +} + +static int EvalInternalProc(const char *procname, int ct, ...) +{ + Tcl_DString ds; + int result; + va_list ap; + char *buf; + + Tcl_DStringInit(&ds); + + Tcl_MyDStringAppend(&ds, procname); + + if (ct) { + va_start(ap, ct); + while (ct--) { + if ((buf = va_arg(ap, char *)) != NULL) + Tcl_DStringAppendElement(&ds, buf); + else + Tcl_MyDStringAppend(&ds, " \"\""); + } + va_end(ap); + } + + result = Tcl_Eval(interp, ds.string); + + Tcl_DStringFree(&ds); + + return result; +} + + +static void DeleteInternalProc(const char *proc) +{ + Tcl_DString ds; + + Tcl_DStringInit(&ds); + Tcl_MyDStringAppend(&ds, "rename "); + Tcl_MyDStringAppend(&ds, proc); + Tcl_MyDStringAppend(&ds, " {}"); + Tcl_Eval(interp, ds.string); + Tcl_DStringFree(&ds); +} + +static char *StrDup(const char *string, int *length) +{ + char *result; + + if (string == NULL) + return NULL; + + *length = strlen(string); + result = Tcl_Alloc(*length + 1); + strncpy(result, string, *length); + result[*length] = 0; + + return result; +} + +static char *myitoa(long value) +{ + static char result[32]; + sprintf(result, "%ld", value); + return result; +} + +static xchat_context *atoctx(const char *nptr) +{ + int isnum = 1; + int x = 0; + + if (!nptr) + return NULL; + + while (isnum && nptr[x]) { + if (!isdigit(nptr[x++])) + isnum--; + } + + if (isnum && x) + return (xchat_context *) atol(nptr); + else + return NULL; +} + +static xchat_context *xchat_smart_context(const char *arg1, const char *arg2) +{ + const char *server, *s, *n; + xchat_context *result = NULL; + xchat_context *ctx = NULL; + xchat_context *actx = NULL; + xchat_list *list; + + if (arg1 == NULL) + return xchat_get_context(ph);; + + if (arg1 && arg2) { + result = xchat_find_context(ph, arg1, arg2); + if (result == NULL) + result = xchat_find_context(ph, arg2, arg1); + return result; + } else { + + actx = atoctx(arg1); + + server = xchat_get_info(ph, "server"); + + list = xchat_list_get(ph, "channels"); + + if (list != NULL) { + + while (xchat_list_next(ph, list)) { + + ctx = (xchat_context *)xchat_list_str(ph, list, "context"); + + if (actx) { + if (ctx == actx) { + result = ctx; + break; + } + } else { + + s = xchat_list_str(ph, list, "server"); + + if (xchat_list_int(ph, list, "type") == 1) { + if (strcasecmp(arg1, s) == 0) { + result = ctx; + break; + } + n = xchat_list_str(ph, list, "network"); + if (n) { + if (strcasecmp(arg1, n) == 0) { + result = ctx; + break; + } + } + } else { + if ((strcasecmp(server, s) == 0) && (strcasecmp(arg1, xchat_list_str(ph, list, "channel")) == 0)) { + result = ctx; + break; + } + } + } + } + + xchat_list_free(ph, list); + } + + } + + return result; +} + +static void queue_nexttimer() +{ + int x; + time_t then; + + nexttimerindex = 0; + then = (time_t) 0x7fffffff; + + for (x = 1; x < MAX_TIMERS; x++) { + if (timers[x].timerid) { + if (timers[x].timestamp < then) { + then = timers[x].timestamp; + nexttimerindex = x; + } + } + } +} + +static int insert_timer(int seconds, int count, const char *script) +{ + int x; + int dummy; + time_t now; + int id; + + if (script == NULL) + return (-1); + + id = (nextprocid++ % INT_MAX) + 1; + + now = time(NULL); + + for (x = 1; x < MAX_TIMERS; x++) { + if (timers[x].timerid == 0) { + if (SourceInternalProc(id, "", script) == TCL_ERROR) { + xchat_printf(ph, "\0039TCL plugin\003\tERROR (timer %d) ", timers[x].timerid); + NiceErrorInfo (); + return (-1); + } + timers[x].timerid = (nexttimerid++ % INT_MAX) + 1; + timers[x].timestamp = now + seconds; + timers[x].count = count; + timers[x].seconds = seconds; + timers[x].procPtr = StrDup(InternalProcName(id), &dummy); + queue_nexttimer(); + return (timers[x].timerid); + } + } + + return (-1); +} + +static void do_timer() +{ + xchat_context *origctx; + time_t now; + int index; + + if (!nexttimerindex) + return; + + now = time(NULL); + + if (now < timers[nexttimerindex].timestamp) + return; + + index = nexttimerindex; + origctx = xchat_get_context(ph); + if (EvalInternalProc(timers[index].procPtr, 0) == TCL_ERROR) { + xchat_printf(ph, "\0039TCL plugin\003\tERROR (timer %d) ", timers[index].timerid); + NiceErrorInfo (); + } + xchat_set_context(ph, origctx); + + if (timers[index].count != -1) + timers[index].count--; + + if (timers[index].count == 0) { + timers[index].timerid = 0; + if (timers[index].procPtr != NULL) { + DeleteInternalProc(timers[index].procPtr); + Tcl_Free(timers[index].procPtr); + } + timers[index].procPtr = NULL; + } else { + timers[index].timestamp += timers[index].seconds; + } + + queue_nexttimer(); + + return; + +} + +static int Server_raw_line(char *word[], char *word_eol[], void *userdata) +{ + char *src, *cmd, *dest, *rest; + char *chancmd = NULL; + char *procList; + Tcl_HashEntry *entry = NULL; + xchat_context *origctx; + int len; + int dummy; + char *string = NULL; + int ctcp = 0; + int count; + int list_argc, proc_argc; + const char **list_argv, **proc_argv; + int private = 0; + + if (word[0][0] == 0) + return XCHAT_EAT_NONE; + + if (complete_level == MAX_COMPLETES) + return XCHAT_EAT_NONE; + + complete_level++; + complete[complete_level].defresult = XCHAT_EAT_NONE; /* XCHAT_EAT_PLUGIN; */ + complete[complete_level].result = XCHAT_EAT_NONE; + complete[complete_level].word = word; + complete[complete_level].word_eol = word_eol; + + if (word[1][0] == ':') { + src = word[1]; + cmd = word[2]; + dest = word[3]; + rest = word_eol[4]; + } else { + src = ""; + cmd = word[1]; + if (word_eol[2][0] == ':') { + dest = ""; + rest = word_eol[2]; + } else { + dest = word[2]; + rest = word_eol[3]; + } + } + + if (src[0] == ':') + src++; + if (dest[0] == ':') + dest++; + if (rest[0] == ':') + rest++; + + if (rest[0] == 0x01) { + rest++; + if (strcasecmp("PRIVMSG", cmd) == 0) { + if (strncasecmp(rest, "ACTION ", 7) == 0) { + cmd = "ACTION"; + rest += 7; + } else + cmd = "CTCP"; + } else if (!strcasecmp("NOTICE", cmd)) + cmd = "CTCR"; + ctcp = 1; + } else if (!strcasecmp("NOTICE", cmd) && (strchr(src, '!') == NULL)) { + cmd = "SNOTICE"; + } else if (rest[0] == '!') { + chancmd = word[4] + 1; + } + + if (chancmd != NULL) { + string = StrDup(chancmd, &dummy); + Tcl_UtfToUpper(string); + if ((entry = Tcl_FindHashEntry(&cmdTablePtr, string)) == NULL) { + Tcl_Free(string); + } else { + cmd = chancmd; + rest = word_eol[5]; + } + } + + if (entry == NULL) { + string = StrDup(cmd, &dummy); + Tcl_UtfToUpper(string); + entry = Tcl_FindHashEntry(&cmdTablePtr, string); + } + + if (entry != NULL) { + + procList = Tcl_GetHashValue(entry); + + if (isalpha(dest[0])) + private = 1; + + rest = StrDup(rest, &len); + if (ctcp) { + if (rest != NULL) { + if ((len > 1) && (rest[len - 1] == 0x01)) + rest[len - 1] = 0; + } + } + + if (Tcl_SplitList(interp, procList, &list_argc, &list_argv) == TCL_OK) { + + for (count = 0; count < list_argc; count++) { + + if (Tcl_SplitList(interp, list_argv[count], &proc_argc, &proc_argv) != TCL_OK) + continue; + + origctx = xchat_get_context(ph); + if (EvalInternalProc(proc_argv[1], 7, src, dest, cmd, rest, word_eol[1], proc_argv[0], myitoa(private)) == TCL_ERROR) { + xchat_printf(ph, "\0039TCL plugin\003\tERROR (on %s %s) ", cmd, proc_argv[0]); + NiceErrorInfo (); + } + xchat_set_context(ph, origctx); + + Tcl_Free((char *) proc_argv); + + if ((complete[complete_level].result == XCHAT_EAT_PLUGIN) || (complete[complete_level].result == XCHAT_EAT_ALL)) + break; + + } + + Tcl_Free((char *) list_argv); + + } + + Tcl_Free(rest); + + } + + if (string) + Tcl_Free(string); + + return complete[complete_level--].result; + +} + +static int Print_Hook(char *word[], void *userdata) +{ + char *procList; + Tcl_HashEntry *entry; + xchat_context *origctx; + int count; + int list_argc, proc_argc; + const char **list_argv, **proc_argv; + Tcl_DString ds; + int x; + + if (complete_level == MAX_COMPLETES) + return XCHAT_EAT_NONE; + + complete_level++; + complete[complete_level].defresult = XCHAT_EAT_NONE; /* XCHAT_EAT_PLUGIN; */ + complete[complete_level].result = XCHAT_EAT_NONE; + complete[complete_level].word = word; + complete[complete_level].word_eol = word; + + if ((entry = Tcl_FindHashEntry(&cmdTablePtr, xc[(int) userdata].event)) != NULL) { + + procList = Tcl_GetHashValue(entry); + + if (Tcl_SplitList(interp, procList, &list_argc, &list_argv) == TCL_OK) { + + for (count = 0; count < list_argc; count++) { + + if (Tcl_SplitList(interp, list_argv[count], &proc_argc, &proc_argv) != TCL_OK) + continue; + + origctx = xchat_get_context(ph); + + Tcl_DStringInit(&ds); + + if ((int) userdata == CHAT) { + Tcl_DStringAppend(&ds, word[3], strlen(word[3])); + Tcl_DStringAppend(&ds, "!*@", 3); + Tcl_DStringAppend(&ds, word[1], strlen(word[1])); + if (EvalInternalProc(proc_argv[1], 7, ds.string, word[2], xc[(int) userdata].event, word[4], "", proc_argv[0], "0") == TCL_ERROR) { + xchat_printf(ph, "\0039TCL plugin\003\tERROR (on %s %s) ", xc[(int) userdata].event, proc_argv[0]); + NiceErrorInfo (); + } + } else { + if (xc[(int) userdata].argc > 0) { + for (x = 0; x <= xc[(int) userdata].argc; x++) + Tcl_DStringAppendElement(&ds, word[x]); + } + if (EvalInternalProc(proc_argv[1], 7, "", "", xc[(int) userdata].event, "", ds.string, proc_argv[0], "0") == TCL_ERROR) { + xchat_printf(ph, "\0039Tcl plugin\003\tERROR (on %s %s) ", xc[(int) userdata].event, proc_argv[0]); + NiceErrorInfo (); + } + } + + Tcl_DStringFree(&ds); + + xchat_set_context(ph, origctx); + + Tcl_Free((char *) proc_argv); + + if ((complete[complete_level].result == XCHAT_EAT_PLUGIN) || (complete[complete_level].result == XCHAT_EAT_ALL)) + break; + + } + + Tcl_Free((char *) list_argv); + + } + } + + return complete[complete_level--].result; +} + + +static int tcl_timerexists(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + int x; + int timerid; + + BADARGS(2, 2, " schedid"); + + if (Tcl_GetInt(irp, argv[1], &timerid) != TCL_OK) { + Tcl_AppendResult(irp, "Invalid timer id", NULL); + return TCL_ERROR; + } + + if (timerid) { + for (x = 1; x < MAX_TIMERS; x++) { + if (timers[x].timerid == timerid) { + Tcl_AppendResult(irp, "1", NULL); + return TCL_OK; + } + } + } + + Tcl_AppendResult(irp, "0", NULL); + + return TCL_OK; +} + +static int tcl_killtimer(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + int x; + int timerid; + + BADARGS(2, 2, " timerid"); + + if (Tcl_GetInt(irp, argv[1], &timerid) != TCL_OK) { + Tcl_AppendResult(irp, "Invalid timer id", NULL); + return TCL_ERROR; + } + + if (timerid) { + for (x = 1; x < MAX_TIMERS; x++) { + if (timers[x].timerid == timerid) { + timers[x].timerid = 0; + if (timers[x].procPtr != NULL) { + DeleteInternalProc(timers[x].procPtr); + Tcl_Free(timers[x].procPtr); + } + timers[x].procPtr = NULL; + break; + } + } + } + + queue_nexttimer(); + + return TCL_OK; +} + +static int tcl_timers(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + int x; + Tcl_DString ds; + time_t now; + + BADARGS(1, 1, ""); + + now = time(NULL); + + Tcl_DStringInit(&ds); + + for (x = 1; x < MAX_TIMERS; x++) { + if (timers[x].timerid) { + Tcl_DStringStartSublist(&ds); + Tcl_DStringAppendElement(&ds, myitoa((long)timers[x].timerid)); + Tcl_DStringAppendElement(&ds, myitoa((long)timers[x].timestamp - now)); + Tcl_DStringAppendElement(&ds, timers[x].procPtr); + Tcl_DStringAppendElement(&ds, myitoa((long)timers[x].seconds)); + Tcl_DStringAppendElement(&ds, myitoa((long)timers[x].count)); + Tcl_DStringEndSublist(&ds); + } + } + + Tcl_AppendResult(interp, ds.string, NULL); + Tcl_DStringFree(&ds); + + return TCL_OK; +} + +static int tcl_timer(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + int seconds; + int timerid; + int repeat = 0; + int count = 0; + int first = 1; + char reply[32]; + + BADARGS(3, 6, " ?-repeat? ?-count times? seconds {script | procname ?args?}"); + + while (argc--) { + if (strcasecmp(argv[first], "-repeat") == 0) { + repeat++; + } else if (strcasecmp(argv[first], "-count") == 0) { + if (Tcl_GetInt(irp, argv[++first], &count) != TCL_OK) + return TCL_ERROR; + } else { + break; + } + first++; + } + + if (repeat && !count) + count = -1; + + if (!count) + count = 1; + + if (Tcl_GetInt(irp, argv[first++], &seconds) != TCL_OK) + return TCL_ERROR; + + if ((timerid = insert_timer(seconds, count, argv[first++])) == -1) { + Tcl_AppendResult(irp, "0", NULL); + return TCL_ERROR; + } + + sprintf(reply, "%d", timerid); + + Tcl_AppendResult(irp, reply, NULL); + + queue_nexttimer(); + + return TCL_OK; +} + +static int tcl_on(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + int newentry; + char *procList; + Tcl_HashEntry *entry; + char *token; + int dummy; + Tcl_DString ds; + int index; + int count; + int list_argc, proc_argc; + int id; + const char **list_argv, **proc_argv; + + BADARGS(4, 4, " token label {script | procname ?args?}"); + + id = (nextprocid++ % INT_MAX) + 1; + + if (SourceInternalProc(id, "_src _dest _cmd _rest _raw _label _private", argv[3]) == TCL_ERROR) { + xchat_printf(ph, "\0039Tcl plugin\003\tERROR (on %s:%s) ", argv[1], argv[2]); + NiceErrorInfo (); + return TCL_OK; + } + + token = StrDup(argv[1], &dummy); + Tcl_UtfToUpper(token); + + Tcl_DStringInit(&ds); + + entry = Tcl_CreateHashEntry(&cmdTablePtr, token, &newentry); + if (!newentry) { + procList = Tcl_GetHashValue(entry); + if (Tcl_SplitList(interp, procList, &list_argc, &list_argv) == TCL_OK) { + for (count = 0; count < list_argc; count++) { + if (Tcl_SplitList(interp, list_argv[count], &proc_argc, &proc_argv) != TCL_OK) + continue; + if (strcmp(proc_argv[0], argv[2])) { + Tcl_DStringStartSublist(&ds); + Tcl_DStringAppendElement(&ds, proc_argv[0]); + Tcl_DStringAppendElement(&ds, proc_argv[1]); + Tcl_DStringEndSublist(&ds); + } else { + DeleteInternalProc(proc_argv[1]); + } + Tcl_Free((char *) proc_argv); + } + Tcl_Free((char *) list_argv); + } + Tcl_Free(procList); + } + + Tcl_DStringStartSublist(&ds); + Tcl_DStringAppendElement(&ds, argv[2]); + Tcl_DStringAppendElement(&ds, InternalProcName(id)); + Tcl_DStringEndSublist(&ds); + + procList = StrDup(ds.string, &dummy); + + Tcl_SetHashValue(entry, procList); + + if ((strncmp(token, "XC_", 3) == 0) || (strcmp(token, "CHAT") == 0)) { + for (index = 0; index < XC_SIZE; index++) { + if (strcmp(xc[index].event, token) == 0) { + if (xc[index].hook == NULL) { + xc[index].hook = xchat_hook_print(ph, xc[index].emit, XCHAT_PRI_NORM, Print_Hook, (void *) index); + break; + } + } + } + } + + Tcl_Free(token); + Tcl_DStringFree(&ds); + + return TCL_OK; +} + +static int tcl_off(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + char *procList; + Tcl_HashEntry *entry; + char *token; + int dummy; + Tcl_DString ds; + int index; + int count; + int list_argc, proc_argc; + const char **list_argv, **proc_argv; + + BADARGS(2, 3, " token ?label?"); + + token = StrDup(argv[1], &dummy); + Tcl_UtfToUpper(token); + + Tcl_DStringInit(&ds); + + if ((entry = Tcl_FindHashEntry(&cmdTablePtr, token)) != NULL) { + + procList = Tcl_GetHashValue(entry); + + if (argc == 3) { + if (Tcl_SplitList(interp, procList, &list_argc, &list_argv) == TCL_OK) { + for (count = 0; count < list_argc; count++) { + if (Tcl_SplitList(interp, list_argv[count], &proc_argc, &proc_argv) != TCL_OK) + continue; + if (strcmp(proc_argv[0], argv[2])) { + Tcl_DStringStartSublist(&ds); + Tcl_DStringAppendElement(&ds, proc_argv[0]); + Tcl_DStringAppendElement(&ds, proc_argv[1]); + Tcl_DStringEndSublist(&ds); + } else + DeleteInternalProc(proc_argv[1]); + Tcl_Free((char *) proc_argv); + } + Tcl_Free((char *) list_argv); + } + } + + Tcl_Free(procList); + + if (ds.length) { + procList = StrDup(ds.string, &dummy); + Tcl_SetHashValue(entry, procList); + } else { + Tcl_DeleteHashEntry(entry); + } + + if (!ds.length) { + if ((strncmp(token, "XC_", 3) == 0) || (strcmp(token, "CHAT") == 0)) { + for (index = 0; index < XC_SIZE; index++) { + if (strcmp(xc[index].event, token) == 0) { + if (xc[index].hook != NULL) { + xchat_unhook(ph, xc[index].hook); + xc[index].hook = NULL; + break; + } + } + } + } + } + } + + Tcl_Free(token); + Tcl_DStringFree(&ds); + + return TCL_OK; +} + +static int tcl_alias(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + int newentry; + alias *aliasPtr; + Tcl_HashEntry *entry; + char *string; + const char *help = NULL; + int dummy; + int id; + + BADARGS(3, 4, " name ?help? {script | procname ?args?}"); + + string = StrDup(argv[1], &dummy); + Tcl_UtfToUpper(string); + + if (strlen(argv[argc - 1])) { + + if (argc == 4) + help = argv[2]; + + id = (nextprocid++ % INT_MAX) + 1; + + if (SourceInternalProc(id, "_cmd _rest", argv[argc - 1]) == TCL_ERROR) { + xchat_printf(ph, "\0039Tcl plugin\003\tERROR (alias %s) ", argv[1]); + NiceErrorInfo (); + return TCL_OK; + } + + entry = Tcl_CreateHashEntry(&aliasTablePtr, string, &newentry); + if (newentry) { + aliasPtr = (alias *) Tcl_Alloc(sizeof(alias)); + if (string[0] == '@') + aliasPtr->hook = NULL; + else + aliasPtr->hook = xchat_hook_command(ph, string, XCHAT_PRI_NORM, Command_Alias, help, 0); + } else { + aliasPtr = Tcl_GetHashValue(entry); + DeleteInternalProc(aliasPtr->procPtr); + Tcl_Free(aliasPtr->procPtr); + } + + aliasPtr->procPtr = StrDup(InternalProcName(id), &dummy); + + Tcl_SetHashValue(entry, aliasPtr); + + } else { + + if ((entry = Tcl_FindHashEntry(&aliasTablePtr, string)) != NULL) { + aliasPtr = Tcl_GetHashValue(entry); + DeleteInternalProc(aliasPtr->procPtr); + Tcl_Free(aliasPtr->procPtr); + if (aliasPtr->hook) + xchat_unhook(ph, aliasPtr->hook); + Tcl_Free((char *) aliasPtr); + Tcl_DeleteHashEntry(entry); + } + } + + Tcl_Free(string); + + return TCL_OK; +} + +static int tcl_complete(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + BADARGS(1, 2, " ?EAT_NONE|EAT_XCHAT|EAT_PLUGIN|EAT_ALL?"); + + if (argc == 2) { + if (Tcl_GetInt(irp, argv[1], &complete[complete_level].result) != TCL_OK) { + if (strcasecmp("EAT_NONE", argv[1]) == 0) + complete[complete_level].result = XCHAT_EAT_NONE; + else if (strcasecmp("EAT_XCHAT", argv[1]) == 0) + complete[complete_level].result = XCHAT_EAT_XCHAT; + else if (strcasecmp("EAT_PLUGIN", argv[1]) == 0) + complete[complete_level].result = XCHAT_EAT_PLUGIN; + else if (strcasecmp("EAT_ALL", argv[1]) == 0) + complete[complete_level].result = XCHAT_EAT_ALL; + else + BADARGS(1, 2, " ?EAT_NONE|EAT_XCHAT|EAT_PLUGIN|EAT_ALL?"); + } + } else + complete[complete_level].result = complete[complete_level].defresult; + + return TCL_RETURN; +} + +static int tcl_command(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + xchat_context *origctx; + xchat_context *ctx = NULL; + const char *string = NULL; + + BADARGS(2, 4, " ?server|network|context? ?#channel|nick? text"); + + origctx = xchat_get_context(ph); + + switch (argc) { + case 2: + ctx = origctx; + break; + case 3: + ctx = xchat_smart_context(argv[1], NULL); + break; + case 4: + ctx = xchat_smart_context(argv[1], argv[2]); + break; + default:; + } + + CHECKCTX(ctx); + + string = argv[argc - 1]; + + if (string[0] == '/') + string++; + + xchat_set_context(ph, ctx); + xchat_command(ph, string); + xchat_set_context(ph, origctx); + + return TCL_OK; +} + +static int tcl_raw(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + xchat_context *origctx; + xchat_context *ctx = NULL; + const char *string = NULL; + + BADARGS(2, 4, " ?server|network|context? ?#channel|nick? text"); + + origctx = xchat_get_context(ph); + + switch (argc) { + case 2: + ctx = origctx; + break; + case 3: + ctx = xchat_smart_context(argv[1], NULL); + break; + case 4: + ctx = xchat_smart_context(argv[1], argv[2]); + break; + default:; + } + + CHECKCTX(ctx); + + string = argv[argc - 1]; + + xchat_set_context(ph, ctx); + xchat_commandf(ph, "RAW %s", string); + xchat_set_context(ph, origctx); + + return TCL_OK; +} + + +static int tcl_prefs(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + int i; + const char *str; + + BADARGS(2, 2, " name"); + + switch (xchat_get_prefs (ph, argv[1], &str, &i)) { + case 1: + Tcl_AppendResult(irp, str, NULL); + break; + case 2: + case 3: + Tcl_AppendResult(irp, myitoa(i), NULL); + break; + default: + Tcl_AppendResult(irp, NULL); + } + + return TCL_OK; +} + +static int tcl_info(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[], char *id) +{ + char *result; + int max_argc; + xchat_context *origctx, *ctx; + + if (id == NULL) { + BADARGS(2, 3, " ?server|network|context? id"); + max_argc = 3; + } else { + BADARGS(1, 2, " ?server|network|context?"); + max_argc = 2; + } + + origctx = xchat_get_context(ph); + + if (argc == max_argc) { + ctx = xchat_smart_context(argv[1], NULL); + CHECKCTX(ctx); + xchat_set_context(ph, ctx); + } + + if (id == NULL) + id = argv[argc-1]; + + if ((result = xchat_get_info(ph, id)) == NULL) + result = ""; + + Tcl_AppendResult(irp, result, NULL); + + xchat_set_context(ph, origctx); + + return TCL_OK; +} + +static int tcl_me(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + return tcl_info(cd, irp, argc, argv, "nick"); +} + +static int tcl_getinfo(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + return tcl_info(cd, irp, argc, argv, NULL); +} + +static int tcl_getlist(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + xchat_list *list = NULL; + const char *name = NULL; + const char * const *fields; + const char *field; + const char *sattr; + int iattr; + int i; + time_t t; + Tcl_DString ds; + xchat_context *origctx; + xchat_context *ctx = NULL; + + origctx = xchat_get_context(ph); + + BADARGS(1, 2, " list"); + + Tcl_DStringInit(&ds); + + fields = xchat_list_fields(ph, "lists"); + + if (argc == 1) { + for (i = 0; fields[i] != NULL; i++) { + Tcl_DStringAppendElement(&ds, fields[i]); + } + goto done; + } + + for (i = 0; fields[i] != NULL; i++) { + if (strcmp(fields[i], argv[1]) == 0) { + name = fields[i]; + break; + } + } + + if (name == NULL) + goto done; + + list = xchat_list_get(ph, name); + if (list == NULL) + goto done; + + fields = xchat_list_fields(ph, name); + + Tcl_DStringStartSublist(&ds); + for (i = 0; fields[i] != NULL; i++) { + field = fields[i] + 1; + Tcl_DStringAppendElement(&ds, field); + } + Tcl_DStringEndSublist(&ds); + + while (xchat_list_next(ph, list)) { + + Tcl_DStringStartSublist(&ds); + + for (i = 0; fields[i] != NULL; i++) { + + field = fields[i] + 1; + + switch (fields[i][0]) { + case 's': + sattr = xchat_list_str(ph, list, (char *) field); + Tcl_DStringAppendElement(&ds, sattr); + break; + case 'i': + iattr = xchat_list_int(ph, list, (char *) field); + Tcl_DStringAppendElement(&ds, myitoa((long)iattr)); + break; + case 't': + t = xchat_list_time(ph, list, (char *) field); + Tcl_DStringAppendElement(&ds, myitoa((long)t)); + break; + case 'p': + sattr = xchat_list_str(ph, list, (char *) field); + if (strcmp(field, "context") == 0) { + ctx = (xchat_context *) sattr; + Tcl_DStringAppendElement(&ds, myitoa((long)ctx)); + } else + Tcl_DStringAppendElement(&ds, "*"); + break; + default: + Tcl_DStringAppendElement(&ds, "*"); + break; + } + } + + Tcl_DStringEndSublist(&ds); + + } + + xchat_list_free(ph, list); + + done: + + xchat_set_context(ph, origctx); + + Tcl_AppendResult(irp, ds.string, NULL); + + Tcl_DStringFree(&ds); + + return TCL_OK; +} + +/* + * tcl_xchat_puts - stub for tcl puts command + * This is modified from the original internal "puts" command. It redirects + * stdout to the current context, while still allowing all normal puts features + */ + +static int tcl_xchat_puts(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + Tcl_Channel chan; + const char *string; + int newline; + const char *channelId = NULL; + int result; + int mode; + int trap_stdout = 0; + + switch (argc) { + + case 2: + string = argv[1]; + newline = 1; + trap_stdout = 1; + break; + + case 3: + if (strcmp(argv[1], "-nonewline") == 0) { + newline = 0; + trap_stdout = 1; + } else { + newline = 1; + channelId = argv[1]; + } + string = argv[2]; + break; + + case 4: + if (strcmp(argv[1], "-nonewline") == 0) { + channelId = argv[2]; + string = argv[3]; + } else { + if (strcmp(argv[3], "nonewline") != 0) { + Tcl_AppendResult(interp, "bad argument \"", argv[3], "\": should be \"nonewline\"", (char *) NULL); + return TCL_ERROR; + } + channelId = argv[1]; + string = argv[2]; + } + newline = 0; + break; + + default: + Tcl_AppendResult(interp, argv, "?-nonewline? ?channelId? string", NULL); + return TCL_ERROR; + } + + if (!trap_stdout && (strcmp(channelId, "stdout") == 0)) + trap_stdout = 1; + + if (trap_stdout) { + if (newline) + xchat_printf(ph, "%s\n", string); + else + xchat_print(ph, string); + return TCL_OK; + } + + chan = Tcl_GetChannel(interp, channelId, &mode); + if (chan == (Tcl_Channel) NULL) { + return TCL_ERROR; + } + if ((mode & TCL_WRITABLE) == 0) { + Tcl_AppendResult(interp, "channel \"", channelId, "\" wasn't opened for writing", (char *) NULL); + return TCL_ERROR; + } + + result = Tcl_Write(chan, string, strlen(string)); + if (result < 0) { + goto error; + } + if (newline != 0) { + result = Tcl_WriteChars(chan, "\n", 1); + if (result < 0) { + goto error; + } + } + return TCL_OK; + + error: + Tcl_AppendResult(interp, "error writing \"", channelId, "\": ", Tcl_PosixError(interp), (char *) NULL); + + return TCL_ERROR; +} + +static int tcl_print(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + xchat_context *origctx; + xchat_context *ctx = NULL; + const char *string = NULL; + + BADARGS(2, 4, " ?server|network|context? ?#channel|nick? text"); + + origctx = xchat_get_context(ph); + + switch (argc) { + case 2: + ctx = origctx; + break; + case 3: + ctx = xchat_smart_context(argv[1], NULL); + break; + case 4: + ctx = xchat_smart_context(argv[1], argv[2]); + break; + default:; + } + + CHECKCTX(ctx); + + string = argv[argc - 1]; + + xchat_set_context(ph, ctx); + xchat_print(ph, string); + xchat_set_context(ph, origctx); + + return TCL_OK; +} + +static int tcl_setcontext(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + xchat_context *ctx = NULL; + + BADARGS(2, 2, " context"); + + ctx = xchat_smart_context(argv[1], NULL); + + CHECKCTX(ctx); + + xchat_set_context(ph, ctx); + + return TCL_OK; +} + +static int tcl_findcontext(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + xchat_context *ctx = NULL; + + BADARGS(1, 3, " ?server|network|context? ?channel?"); + + switch (argc) { + case 1: + ctx = xchat_find_context(ph, NULL, NULL); + break; + case 2: + ctx = xchat_smart_context(argv[1], NULL); + break; + case 3: + ctx = xchat_smart_context(argv[1], argv[2]); + break; + default:; + } + + CHECKCTX(ctx); + + Tcl_AppendResult(irp, myitoa((long)ctx), NULL); + + return TCL_OK; +} + +static int tcl_getcontext(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + xchat_context *ctx = NULL; + + BADARGS(1, 1, ""); + + ctx = xchat_get_context(ph); + + Tcl_AppendResult(irp, myitoa((long)ctx), NULL); + + return TCL_OK; +} + +static int tcl_channels(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + const char *server, *channel; + xchat_list *list; + Tcl_DString ds; + xchat_context *origctx; + xchat_context *ctx; + + origctx = xchat_get_context(ph); + + BADARGS(1, 2, " ?server|network|context?"); + + if (argc == 2) { + ctx = xchat_smart_context(argv[1], NULL); + CHECKCTX(ctx); + xchat_set_context(ph, ctx); + } + + server = (char *) xchat_get_info(ph, "server"); + + Tcl_DStringInit(&ds); + + list = xchat_list_get(ph, "channels"); + + if (list != NULL) { + while (xchat_list_next(ph, list)) { + if (xchat_list_int(ph, list, "type") != 2) + continue; + if (strcasecmp(server, xchat_list_str(ph, list, "server")) != 0) + continue; + channel = xchat_list_str(ph, list, "channel"); + Tcl_DStringAppendElement(&ds, channel); + } + xchat_list_free(ph, list); + } + + Tcl_AppendResult(irp, ds.string, NULL); + + Tcl_DStringFree(&ds); + + xchat_set_context(ph, origctx); + + return TCL_OK; +} + +static int tcl_servers(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + const char *server; + xchat_list *list; + Tcl_DString ds; + + BADARGS(1, 1, ""); + + Tcl_DStringInit(&ds); + + list = xchat_list_get(ph, "channels"); + + if (list != NULL) { + while (xchat_list_next(ph, list)) { + if (xchat_list_int(ph, list, "type") == 1) { + server = xchat_list_str(ph, list, "server"); + Tcl_DStringAppendElement(&ds, server); + } + } + xchat_list_free(ph, list); + } + + Tcl_AppendResult(irp, ds.string, NULL); + + Tcl_DStringFree(&ds); + + return TCL_OK; +} + +static int tcl_queries(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + const char *server, *channel; + xchat_list *list; + Tcl_DString ds; + xchat_context *origctx; + xchat_context *ctx; + + origctx = xchat_get_context(ph); + + BADARGS(1, 2, " ?server|network|context?"); + + if (argc == 2) { + ctx = xchat_smart_context(argv[1], NULL); + CHECKCTX(ctx); + xchat_set_context(ph, ctx); + } + + server = (char *) xchat_get_info(ph, "server"); + + Tcl_DStringInit(&ds); + + list = xchat_list_get(ph, "channels"); + + if (list != NULL) { + while (xchat_list_next(ph, list)) { + if (xchat_list_int(ph, list, "type") != 3) + continue; + if (strcasecmp(server, xchat_list_str(ph, list, "server")) != 0) + continue; + channel = xchat_list_str(ph, list, "channel"); + Tcl_DStringAppendElement(&ds, channel); + } + xchat_list_free(ph, list); + } + + Tcl_AppendResult(irp, ds.string, NULL); + + Tcl_DStringFree(&ds); + + xchat_set_context(ph, origctx); + + return TCL_OK; +} + +static int tcl_users(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + xchat_context *origctx, *ctx = NULL; + xchat_list *list; + Tcl_DString ds; + + BADARGS(1, 3, " ?server|network|context? ?channel?"); + + origctx = xchat_get_context(ph); + + switch (argc) { + case 1: + ctx = origctx; + break; + case 2: + ctx = xchat_smart_context(argv[1], NULL); + break; + case 3: + ctx = xchat_smart_context(argv[1], argv[2]); + break; + default:; + } + + CHECKCTX(ctx); + + xchat_set_context(ph, ctx); + + Tcl_DStringInit(&ds); + + list = xchat_list_get(ph, "users"); + + if (list != NULL) { + + Tcl_DStringStartSublist(&ds); + Tcl_DStringAppendElement(&ds, "nick"); + Tcl_DStringAppendElement(&ds, "host"); + Tcl_DStringAppendElement(&ds, "prefix"); + Tcl_DStringAppendElement(&ds, "away"); + Tcl_DStringAppendElement(&ds, "lasttalk"); + Tcl_DStringAppendElement(&ds, "selected"); + Tcl_DStringEndSublist(&ds); + + while (xchat_list_next(ph, list)) { + Tcl_DStringStartSublist(&ds); + Tcl_DStringAppendElement(&ds, (const char *) xchat_list_str(ph, list, "nick")); + Tcl_DStringAppendElement(&ds, (const char *) xchat_list_str(ph, list, "host")); + Tcl_DStringAppendElement(&ds, (const char *) xchat_list_str(ph, list, "prefix")); + Tcl_DStringAppendElement(&ds, myitoa((long)xchat_list_int(ph, list, "away"))); + Tcl_DStringAppendElement(&ds, myitoa((long)xchat_list_time(ph, list, "lasttalk"))); + Tcl_DStringAppendElement(&ds, myitoa((long)xchat_list_int(ph, list, "selected"))); + Tcl_DStringEndSublist(&ds); + } + + xchat_list_free(ph, list); + } + + Tcl_AppendResult(irp, ds.string, NULL); + + Tcl_DStringFree(&ds); + + xchat_set_context(ph, origctx); + + return TCL_OK; +} + +static int tcl_notifylist(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + xchat_list *list; + Tcl_DString ds; + + BADARGS(1, 1, ""); + + Tcl_DStringInit(&ds); + + list = xchat_list_get(ph, "notify"); + + if (list != NULL) { + + Tcl_DStringStartSublist(&ds); + Tcl_DStringAppendElement(&ds, "nick"); + Tcl_DStringAppendElement(&ds, "flags"); + Tcl_DStringAppendElement(&ds, "on"); + Tcl_DStringAppendElement(&ds, "off"); + Tcl_DStringAppendElement(&ds, "seen"); + Tcl_DStringAppendElement(&ds, "networks"); + Tcl_DStringEndSublist(&ds); + + while (xchat_list_next(ph, list)) { + Tcl_DStringStartSublist(&ds); + Tcl_DStringAppendElement(&ds, (const char *) xchat_list_str(ph, list, "nick")); + Tcl_DStringAppendElement(&ds, (const char *) xchat_list_str(ph, list, "flags")); + Tcl_DStringAppendElement(&ds, myitoa((long)xchat_list_time(ph, list, "on"))); + Tcl_DStringAppendElement(&ds, myitoa((long)xchat_list_time(ph, list, "off"))); + Tcl_DStringAppendElement(&ds, myitoa((long)xchat_list_time(ph, list, "seen"))); + Tcl_DStringAppendElement(&ds, (const char *) xchat_list_str(ph, list, "networks")); + Tcl_DStringEndSublist(&ds); + } + + xchat_list_free(ph, list); + + } + + Tcl_AppendResult(irp, ds.string, NULL); + + Tcl_DStringFree(&ds); + + return TCL_OK; +} + +static int tcl_chats(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + xchat_list *list; + Tcl_DString ds; + + BADARGS(1, 1, ""); + + Tcl_DStringInit(&ds); + + list = xchat_list_get(ph, "dcc"); + + if (list != NULL) { + while (xchat_list_next(ph, list)) { + switch (xchat_list_int(ph, list, "type")) { + case 2: + case 3: + if (xchat_list_int(ph, list, "status") == 1) + Tcl_DStringAppendElement(&ds, (const char *) xchat_list_str(ph, list, "nick")); + break; + } + } + xchat_list_free(ph, list); + } + + Tcl_AppendResult(irp, ds.string, NULL); + + Tcl_DStringFree(&ds); + + return TCL_OK; +} + +static int tcl_ignores(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + xchat_list *list; + Tcl_DString ds; + int flags; + + BADARGS(1, 1, ""); + + Tcl_DStringInit(&ds); + + list = xchat_list_get(ph, "ignore"); + + if (list != NULL) { + + while (xchat_list_next(ph, list)) { + Tcl_DStringStartSublist(&ds); + Tcl_DStringAppendElement(&ds, (const char *) xchat_list_str(ph, list, "mask")); + Tcl_DStringStartSublist(&ds); + flags = xchat_list_int(ph, list, "flags"); + if (flags & 1) + Tcl_DStringAppendElement(&ds, "PRIVMSG"); + if (flags & 2) + Tcl_DStringAppendElement(&ds, "NOTICE"); + if (flags & 4) + Tcl_DStringAppendElement(&ds, "CHANNEL"); + if (flags & 8) + Tcl_DStringAppendElement(&ds, "CTCP"); + if (flags & 16) + Tcl_DStringAppendElement(&ds, "INVITE"); + if (flags & 32) + Tcl_DStringAppendElement(&ds, "UNIGNORE"); + if (flags & 64) + Tcl_DStringAppendElement(&ds, "NOSAVE"); + Tcl_DStringEndSublist(&ds); + Tcl_DStringEndSublist(&ds); + } + xchat_list_free(ph, list); + } + + Tcl_AppendResult(irp, ds.string, NULL); + + Tcl_DStringFree(&ds); + + return TCL_OK; +} + +static int tcl_dcclist(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + xchat_list *list; + Tcl_DString ds; + int dcctype; + + BADARGS(1, 1, ""); + + Tcl_DStringInit(&ds); + + list = xchat_list_get(ph, "dcc"); + + if (list != NULL) { + + while (xchat_list_next(ph, list)) { + Tcl_DStringStartSublist(&ds); + dcctype = xchat_list_int(ph, list, "type"); + switch (dcctype) { + case 0: + Tcl_DStringAppendElement(&ds, "filesend"); + break; + case 1: + Tcl_DStringAppendElement(&ds, "filerecv"); + break; + case 2: + Tcl_DStringAppendElement(&ds, "chatrecv"); + break; + case 3: + Tcl_DStringAppendElement(&ds, "chatsend"); + break; + } + switch (xchat_list_int(ph, list, "status")) { + case 0: + Tcl_DStringAppendElement(&ds, "queued"); + break; + case 1: + Tcl_DStringAppendElement(&ds, "active"); + break; + case 2: + Tcl_DStringAppendElement(&ds, "failed"); + break; + case 3: + Tcl_DStringAppendElement(&ds, "done"); + break; + case 4: + Tcl_DStringAppendElement(&ds, "connecting"); + break; + case 5: + Tcl_DStringAppendElement(&ds, "aborted"); + break; + } + + Tcl_DStringAppendElement(&ds, (const char *) xchat_list_str(ph, list, "nick")); + + switch (dcctype) { + case 0: + Tcl_DStringAppendElement(&ds, (const char *) xchat_list_str(ph, list, "file")); + break; + case 1: + Tcl_DStringAppendElement(&ds, (const char *) xchat_list_str(ph, list, "destfile")); + break; + } + + Tcl_DStringAppendElement(&ds, myitoa((long)xchat_list_int(ph, list, "size"))); + Tcl_DStringAppendElement(&ds, myitoa((long)xchat_list_int(ph, list, "resume"))); + Tcl_DStringAppendElement(&ds, myitoa((long)xchat_list_int(ph, list, "pos"))); + Tcl_DStringAppendElement(&ds, myitoa((long)xchat_list_int(ph, list, "cps"))); + Tcl_DStringAppendElement(&ds, myitoa((long)xchat_list_int(ph, list, "address32"))); + Tcl_DStringAppendElement(&ds, myitoa((long)xchat_list_int(ph, list, "port"))); + Tcl_DStringEndSublist(&ds); + } + xchat_list_free(ph, list); + } + + Tcl_AppendResult(irp, ds.string, NULL); + + Tcl_DStringFree(&ds); + + return TCL_OK; +} + + +static int tcl_strip(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + char *new_text; + int flags = 1 | 2; + + BADARGS(2, 3, " text ?flags?"); + + if (argc == 3) { + if (Tcl_GetInt(irp, argv[2], &flags) != TCL_OK) + return TCL_ERROR; + } + + new_text = xchat_strip(ph, argv[1], -1, flags); + + if(new_text) { + Tcl_AppendResult(irp, new_text, NULL); + xchat_free(ph, new_text); + } + + return TCL_OK; +} + +static int tcl_topic(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + xchat_context *origctx, *ctx = NULL; + BADARGS(1, 3, " ?server|network|context? ?channel?"); + + origctx = xchat_get_context(ph); + + switch (argc) { + case 1: + ctx = origctx; + break; + case 2: + ctx = xchat_smart_context(argv[1], NULL); + break; + case 3: + ctx = xchat_smart_context(argv[1], argv[2]); + break; + default:; + } + + CHECKCTX(ctx); + + xchat_set_context(ph, ctx); + Tcl_AppendResult(irp, xchat_get_info(ph, "topic"), NULL); + xchat_set_context(ph, origctx); + + return TCL_OK; +} + +static int tcl_xchat_nickcmp(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + BADARGS(3, 3, " string1 string2"); + Tcl_AppendResult(irp, myitoa((long)xchat_nickcmp(ph, argv[1], argv[2])), NULL); + return TCL_OK; +} + +static int tcl_word(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + int index; + + BADARGS(2, 2, " index"); + + if (Tcl_GetInt(irp, argv[1], &index) != TCL_OK) + return TCL_ERROR; + + if (!index || (index > 31)) + Tcl_AppendResult(interp, "", NULL); + else + Tcl_AppendResult(interp, complete[complete_level].word[index], NULL); + + return TCL_OK; +} + +static int tcl_word_eol(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + int index; + + BADARGS(2, 2, " index"); + + if (Tcl_GetInt(irp, argv[1], &index) != TCL_OK) + return TCL_ERROR; + + if (!index || (index > 31)) + Tcl_AppendResult(interp, "", NULL); + else + Tcl_AppendResult(interp, complete[complete_level].word_eol[index], NULL); + + return TCL_OK; +} + +static int Command_Alias(char *word[], char *word_eol[], void *userdata) +{ + alias *aliasPtr; + Tcl_HashEntry *entry; + xchat_context *origctx; + int dummy; + char *string; + + if (complete_level == MAX_COMPLETES) + return XCHAT_EAT_NONE; + + complete_level++; + complete[complete_level].defresult = XCHAT_EAT_ALL; + complete[complete_level].result = XCHAT_EAT_NONE; + complete[complete_level].word = word; + complete[complete_level].word_eol = word_eol; + + string = StrDup(word[1], &dummy); + + Tcl_UtfToUpper(string); + + if ((entry = Tcl_FindHashEntry(&aliasTablePtr, string)) != NULL) { + aliasPtr = Tcl_GetHashValue(entry); + origctx = xchat_get_context(ph); + if (EvalInternalProc(aliasPtr->procPtr, 2, string, word_eol[2]) == TCL_ERROR) { + xchat_printf(ph, "\0039Tcl plugin\003\tERROR (alias %s) ", string); + NiceErrorInfo (); + } + xchat_set_context(ph, origctx); + } + + Tcl_Free(string); + + return complete[complete_level--].result; +} + +static int Null_Command_Alias(char *word[], char *word_eol[], void *userdata) +{ + alias *aliasPtr; + Tcl_HashEntry *entry; + xchat_context *origctx; + int dummy; + const char *channel; + char *string; + Tcl_DString ds; + static int recurse = 0; + + if (recurse) + return XCHAT_EAT_NONE; + + if (complete_level == MAX_COMPLETES) + return XCHAT_EAT_NONE; + + complete_level++; + complete[complete_level].defresult = XCHAT_EAT_ALL; + complete[complete_level].result = XCHAT_EAT_NONE; + complete[complete_level].word = word; + complete[complete_level].word_eol = word_eol; + + recurse++; + + channel = xchat_get_info(ph, "channel"); + Tcl_DStringInit(&ds); + Tcl_DStringAppend(&ds, "@", 1); + Tcl_DStringAppend(&ds, channel, strlen(channel)); + string = StrDup(ds.string, &dummy); + Tcl_DStringFree(&ds); + + Tcl_UtfToUpper(string); + + if ((entry = Tcl_FindHashEntry(&aliasTablePtr, string)) != NULL) { + aliasPtr = Tcl_GetHashValue(entry); + origctx = xchat_get_context(ph); + if (EvalInternalProc(aliasPtr->procPtr, 2, string, word_eol[1]) == TCL_ERROR) { + xchat_printf(ph, "\0039Tcl plugin\003\tERROR (alias %s) ", string); + NiceErrorInfo (); + } + xchat_set_context(ph, origctx); + } + + Tcl_Free(string); + + recurse--; + + return complete[complete_level--].result; +} + +static int Command_TCL(char *word[], char *word_eol[], void *userdata) +{ + const char *errorInfo; + + complete_level++; + complete[complete_level].word = word; + complete[complete_level].word_eol = word_eol; + + if (Tcl_Eval(interp, word_eol[2]) == TCL_ERROR) { + errorInfo = Tcl_GetVar(interp, "errorInfo", TCL_GLOBAL_ONLY); + xchat_printf(ph, "\0039Tcl plugin\003\tERROR: %s ", errorInfo); + } else + xchat_printf(ph, "\0039Tcl plugin\003\tRESULT: %s ", Tcl_GetStringResult(interp)); + + complete_level--; + + return XCHAT_EAT_ALL; +} + +static int Command_Source(char *word[], char *word_eol[], void *userdata) +{ + const char *xchatdir; + Tcl_DString ds; + struct stat dummy; + int len; + const char *errorInfo; + + if (!strlen(word_eol[2])) + return XCHAT_EAT_NONE; + + complete_level++; + complete[complete_level].word = word; + complete[complete_level].word_eol = word_eol; + + len = strlen(word[2]); + + if (len > 4 && strcasecmp(".tcl", word[2] + len - 4) == 0) { + + xchatdir = xchat_get_info(ph, "xchatdir"); + + Tcl_DStringInit(&ds); + + if (stat(word_eol[2], &dummy) == 0) { + Tcl_DStringAppend(&ds, word_eol[2], strlen(word_eol[2])); + } else { + if (!strchr(word_eol[2], '/')) { + Tcl_DStringAppend(&ds, xchatdir, strlen(xchatdir)); + Tcl_DStringAppend(&ds, "/", 1); + Tcl_DStringAppend(&ds, word_eol[2], strlen(word_eol[2])); + } + } + + if (Tcl_EvalFile(interp, ds.string) == TCL_ERROR) { + errorInfo = Tcl_GetVar(interp, "errorInfo", TCL_GLOBAL_ONLY); + xchat_printf(ph, "\0039Tcl plugin\003\tERROR: %s ", errorInfo); + } else + xchat_printf(ph, "\0039Tcl plugin\003\tSourced %s\n", ds.string); + + Tcl_DStringFree(&ds); + + complete_level--; + + return XCHAT_EAT_XCHAT; + + } else { + complete_level--; + return XCHAT_EAT_NONE; + } + +} + +static int Command_Reloadall(char *word[], char *word_eol[], void *userdata) +{ + Tcl_Plugin_DeInit(); + Tcl_Plugin_Init(); + + xchat_print(ph, "\0039Tcl plugin\003\tRehashed\n"); + + return XCHAT_EAT_ALL; +} + +static int TCL_Event_Handler(void *userdata) +{ + Tcl_DoOneEvent(TCL_DONT_WAIT); + do_timer(); + return 1; +} + +static void Tcl_Plugin_Init() +{ + int x; + const char *xchatdir; + + interp = Tcl_CreateInterp(); + + Tcl_FindExecutable(NULL); + + Tcl_Init(interp); + + nextprocid = 0x1000; + + Tcl_CreateCommand(interp, "alias", tcl_alias, NULL, NULL); + Tcl_CreateCommand(interp, "channels", tcl_channels, NULL, NULL); + Tcl_CreateCommand(interp, "chats", tcl_chats, NULL, NULL); + Tcl_CreateCommand(interp, "command", tcl_command, NULL, NULL); + Tcl_CreateCommand(interp, "complete", tcl_complete, NULL, NULL); + Tcl_CreateCommand(interp, "dcclist", tcl_dcclist, NULL, NULL); + Tcl_CreateCommand(interp, "notifylist", tcl_notifylist, NULL, NULL); + Tcl_CreateCommand(interp, "findcontext", tcl_findcontext, NULL, NULL); + Tcl_CreateCommand(interp, "getcontext", tcl_getcontext, NULL, NULL); + Tcl_CreateCommand(interp, "getinfo", tcl_getinfo, NULL, NULL); + Tcl_CreateCommand(interp, "getlist", tcl_getlist, NULL, NULL); + Tcl_CreateCommand(interp, "ignores", tcl_ignores, NULL, NULL); + Tcl_CreateCommand(interp, "killtimer", tcl_killtimer, NULL, NULL); + Tcl_CreateCommand(interp, "me", tcl_me, NULL, NULL); + Tcl_CreateCommand(interp, "on", tcl_on, NULL, NULL); + Tcl_CreateCommand(interp, "off", tcl_off, NULL, NULL); + Tcl_CreateCommand(interp, "nickcmp", tcl_xchat_nickcmp, NULL, NULL); + Tcl_CreateCommand(interp, "print", tcl_print, NULL, NULL); + Tcl_CreateCommand(interp, "prefs", tcl_prefs, NULL, NULL); + Tcl_CreateCommand(interp, "::puts", tcl_xchat_puts, NULL, NULL); + Tcl_CreateCommand(interp, "queries", tcl_queries, NULL, NULL); + Tcl_CreateCommand(interp, "raw", tcl_raw, NULL, NULL); + Tcl_CreateCommand(interp, "servers", tcl_servers, NULL, NULL); + Tcl_CreateCommand(interp, "setcontext", tcl_setcontext, NULL, NULL); + Tcl_CreateCommand(interp, "strip", tcl_strip, NULL, NULL); + Tcl_CreateCommand(interp, "timer", tcl_timer, NULL, NULL); + Tcl_CreateCommand(interp, "timerexists", tcl_timerexists, NULL, NULL); + Tcl_CreateCommand(interp, "timers", tcl_timers, NULL, NULL); + Tcl_CreateCommand(interp, "topic", tcl_topic, NULL, NULL); + Tcl_CreateCommand(interp, "users", tcl_users, NULL, NULL); + Tcl_CreateCommand(interp, "word", tcl_word, NULL, NULL); + Tcl_CreateCommand(interp, "word_eol", tcl_word_eol, NULL, NULL); + + Tcl_InitHashTable(&cmdTablePtr, TCL_STRING_KEYS); + Tcl_InitHashTable(&aliasTablePtr, TCL_STRING_KEYS); + + bzero(timers, sizeof(timers)); + nexttimerid = 0; + nexttimerindex = 0; + + for (x = 0; x < XC_SIZE; x++) + xc[x].hook = NULL; + + xchatdir = xchat_get_info(ph, "xchatdir"); + + if (Tcl_Eval(interp, unknown) == TCL_ERROR) { + xchat_printf(ph, "Error sourcing internal 'unknown' (%s)\n", Tcl_GetStringResult(interp)); + } + + if (Tcl_Eval(interp, inlinetcl) == TCL_ERROR) { + xchat_printf(ph, "Error sourcing internal 'inlinetcl' (%s)\n", Tcl_GetStringResult(interp)); + } + + if (Tcl_Eval(interp, sourcedirs) == TCL_ERROR) { + xchat_printf(ph, "Error sourcing internal 'sourcedirs' (%s)\n", Tcl_GetStringResult(interp)); + } + +} + +static void Tcl_Plugin_DeInit() +{ + int x; + char *procPtr; + alias *aliasPtr; + Tcl_HashEntry *entry; + Tcl_HashSearch search; + + /* Be sure to free all the memory for ON and ALIAS entries */ + + entry = Tcl_FirstHashEntry(&cmdTablePtr, &search); + while (entry != NULL) { + procPtr = Tcl_GetHashValue(entry); + Tcl_Free(procPtr); + entry = Tcl_NextHashEntry(&search); + } + + Tcl_DeleteHashTable(&cmdTablePtr); + + entry = Tcl_FirstHashEntry(&aliasTablePtr, &search); + while (entry != NULL) { + aliasPtr = Tcl_GetHashValue(entry); + Tcl_Free(aliasPtr->procPtr); + if (aliasPtr->hook) + xchat_unhook(ph, aliasPtr->hook); + Tcl_Free((char *) aliasPtr); + entry = Tcl_NextHashEntry(&search); + } + + Tcl_DeleteHashTable(&aliasTablePtr); + + for (x = 1; x < MAX_TIMERS; x++) { + if (timers[x].timerid) { + timers[x].timerid = 0; + if (timers[x].procPtr != NULL) + Tcl_Free(timers[x].procPtr); + timers[x].procPtr = NULL; + break; + } + } + + for (x = 0; x < XC_SIZE; x++) { + if (xc[x].hook != NULL) { + xchat_unhook(ph, xc[x].hook); + xc[x].hook = NULL; + } + } + + Tcl_DeleteInterp(interp); +} + +static void banner() +{ + xchat_printf(ph, "Tcl plugin for XChat - Version %s\n", VERSION); + xchat_print(ph, "Copyright 2002-2005 Daniel P. Stasinski\n"); + xchat_print(ph, "http://www.scriptkitties.com/tclplugin/\n"); +} + +int xchat_plugin_init(xchat_plugin * plugin_handle, char **plugin_name, char **plugin_desc, char **plugin_version, char *arg) +{ +#ifdef WIN32 + HINSTANCE lib; +#endif + + strncpy(VERSION, &RCSID[19], 5); + + ph = plugin_handle; + +#ifdef WIN32 + lib = LoadLibraryA(TCL_DLL); + if (!lib) { + xchat_print(ph, "You must have ActiveTCL installed in order to run Tcl scripts.\n" "http://aspn.activestate.com/ASPN/Tcl/\n" "Make sure Tcl's bin directory is in your PATH.\n\n"); + return 0; + } + FreeLibrary(lib); +#endif + + if (initialized != 0) { + banner(); + xchat_print(ph, "Tcl plugin already loaded"); + reinit_tried++; + return 0; + } + initialized = 1; + + *plugin_name = "Tcl"; + *plugin_desc = "Tcl scripting interface"; + *plugin_version = VERSION; + + Tcl_Plugin_Init(); + + raw_line_hook = xchat_hook_server(ph, "RAW LINE", XCHAT_PRI_NORM, Server_raw_line, NULL); + Command_TCL_hook = xchat_hook_command(ph, "tcl", XCHAT_PRI_NORM, Command_TCL, 0, 0); + Command_Source_hook = xchat_hook_command(ph, "source", XCHAT_PRI_NORM, Command_Source, 0, 0); + Command_Reload_hook = xchat_hook_command(ph, "reloadall", XCHAT_PRI_NORM, Command_Reloadall, 0, 0); + Command_Load_hook = xchat_hook_command(ph, "LOAD", XCHAT_PRI_NORM, Command_Source, 0, 0); + Event_Handler_hook = xchat_hook_timer(ph, 100, TCL_Event_Handler, 0); + Null_Command_hook = xchat_hook_command(ph, "", XCHAT_PRI_NORM, Null_Command_Alias, "", 0); + + banner(); + xchat_print(ph, "Tcl interface loaded\n"); + + return 1; /* return 1 for success */ +} + +int xchat_plugin_deinit() +{ + if (reinit_tried) { + reinit_tried--; + return 1; + } + + xchat_unhook(ph, raw_line_hook); + xchat_unhook(ph, Command_TCL_hook); + xchat_unhook(ph, Command_Source_hook); + xchat_unhook(ph, Command_Reload_hook); + xchat_unhook(ph, Command_Load_hook); + xchat_unhook(ph, Event_Handler_hook); + xchat_unhook(ph, Null_Command_hook); + + Tcl_Plugin_DeInit(); + + xchat_print(ph, "Tcl interface unloaded\n"); + initialized = 0; + + return 1; +} + +void xchat_plugin_get_info(char **name, char **desc, char **version, void **reserved) +{ + strncpy(VERSION, &RCSID[19], 5); + *name = "tclplugin"; + *desc = "Tcl plugin for XChat"; + *version = VERSION; + if (reserved) + *reserved = NULL; +} + diff --git a/etc/wyatt8740/plugins/tcl/tclplugin.h b/etc/wyatt8740/plugins/tcl/tclplugin.h new file mode 100755 index 0000000..075c28f --- /dev/null +++ b/etc/wyatt8740/plugins/tcl/tclplugin.h @@ -0,0 +1,98 @@ +/*************************************************************************** + tclplugin.h - TCL plugin header file + ------------------------------------------------- + begin : Sat Nov 9 17:31:20 MST 2002 + copyright : Copyright 2002-2010 Daniel P. Stasinski + email : daniel@avenues.org + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#define BADARGS(nl,nh,example) \ + if ((argc<(nl)) || (argc>(nh))) { \ + Tcl_AppendResult(irp,"wrong # args: should be \"",argv[0], \ + (example),"\"",NULL); \ + return TCL_ERROR; \ + } + +#define CHECKCTX(ctx) \ + if (ctx == NULL) { \ + Tcl_AppendResult(irp, "No such server/channel/nick", NULL); \ + return TCL_ERROR; \ + } + +typedef struct { + char *procPtr; + xchat_hook *hook; +} alias; + +typedef struct { + int timerid; + time_t timestamp; + char *procPtr; + int count; + int seconds; +} timer; + +typedef struct { + int result; + int defresult; + char **word; + char **word_eol; +} t_complete; + +#define MAX_TIMERS 512 +#define MAX_COMPLETES 128 + +static char *StrDup(const char *string, int *length); +static char *myitoa(long value); +static xchat_context *xchat_smart_context(const char *arg1, const char *arg2); +static void queue_nexttimer(); +static int insert_timer(int seconds, int count, const char *script); +static void do_timer(); +static int Server_raw_line(char *word[], char *word_eol[], void *userdata); +static int Print_Hook(char *word[], void *userdata); +static int tcl_timerexists(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_killtimer(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_timers(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_timer(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_on(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_off(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_alias(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_complete(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_raw(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_command(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_xchat_puts(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_print(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_channels(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_servers(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_queries(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_users(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_chats(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_ignores(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_dcclist(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_me(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_xchat_nickcmp(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_strip(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_topic(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_word(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_word_eol(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_notifylist(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int Command_Alias(char *word[], char *word_eol[], void *userdata); +static int Null_Command_Alias(char *word[], char *word_eol[], void *userdata); +static int Command_TCL(char *word[], char *word_eol[], void *userdata); +static int Command_Source(char *word[], char *word_eol[], void *userdata); +static int Command_Reload(char *word[], char *word_eol[], void *userdata); +static int TCL_Event_Handler(void *userdata); +static void Tcl_Plugin_Init(); +static void Tcl_Plugin_DeInit(); +static void banner(); +int xchat_plugin_init(xchat_plugin * plugin_handle, char **plugin_name, char **plugin_desc, char **plugin_version, char *arg); +int xchat_plugin_deinit(); diff --git a/etc/wyatt8740/plugins/xchat-plugin.h b/etc/wyatt8740/plugins/xchat-plugin.h new file mode 100644 index 0000000..30b1929 --- /dev/null +++ b/etc/wyatt8740/plugins/xchat-plugin.h @@ -0,0 +1,334 @@ +/* You can distribute this header with your plugins for easy compilation */ +#ifndef XCHAT_PLUGIN_H +#define XCHAT_PLUGIN_H + +#include + +#define XCHAT_IFACE_MAJOR 1 +#define XCHAT_IFACE_MINOR 9 +#define XCHAT_IFACE_MICRO 11 +#define XCHAT_IFACE_VERSION ((XCHAT_IFACE_MAJOR * 10000) + \ + (XCHAT_IFACE_MINOR * 100) + \ + (XCHAT_IFACE_MICRO)) + +#define XCHAT_PRI_HIGHEST 127 +#define XCHAT_PRI_HIGH 64 +#define XCHAT_PRI_NORM 0 +#define XCHAT_PRI_LOW (-64) +#define XCHAT_PRI_LOWEST (-128) + +#define XCHAT_FD_READ 1 +#define XCHAT_FD_WRITE 2 +#define XCHAT_FD_EXCEPTION 4 +#define XCHAT_FD_NOTSOCKET 8 + +#define XCHAT_EAT_NONE 0 /* pass it on through! */ +#define XCHAT_EAT_XCHAT 1 /* don't let xchat see this event */ +#define XCHAT_EAT_PLUGIN 2 /* don't let other plugins see this event */ +#define XCHAT_EAT_ALL (XCHAT_EAT_XCHAT|XCHAT_EAT_PLUGIN) /* don't let anything see this event */ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct _xchat_plugin xchat_plugin; +typedef struct _xchat_list xchat_list; +typedef struct _xchat_hook xchat_hook; +#ifndef PLUGIN_C +typedef struct _xchat_context xchat_context; +#endif + +#ifndef PLUGIN_C +struct _xchat_plugin +{ + /* these are only used on win32 */ + xchat_hook *(*xchat_hook_command) (xchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], char *word_eol[], void *user_data), + const char *help_text, + void *userdata); + xchat_hook *(*xchat_hook_server) (xchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], char *word_eol[], void *user_data), + void *userdata); + xchat_hook *(*xchat_hook_print) (xchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], void *user_data), + void *userdata); + xchat_hook *(*xchat_hook_timer) (xchat_plugin *ph, + int timeout, + int (*callback) (void *user_data), + void *userdata); + xchat_hook *(*xchat_hook_fd) (xchat_plugin *ph, + int fd, + int flags, + int (*callback) (int fd, int flags, void *user_data), + void *userdata); + void *(*xchat_unhook) (xchat_plugin *ph, + xchat_hook *hook); + void (*xchat_print) (xchat_plugin *ph, + const char *text); + void (*xchat_printf) (xchat_plugin *ph, + const char *format, ...); + void (*xchat_command) (xchat_plugin *ph, + const char *command); + void (*xchat_commandf) (xchat_plugin *ph, + const char *format, ...); + int (*xchat_nickcmp) (xchat_plugin *ph, + const char *s1, + const char *s2); + int (*xchat_set_context) (xchat_plugin *ph, + xchat_context *ctx); + xchat_context *(*xchat_find_context) (xchat_plugin *ph, + const char *servname, + const char *channel); + xchat_context *(*xchat_get_context) (xchat_plugin *ph); + const char *(*xchat_get_info) (xchat_plugin *ph, + const char *id); + int (*xchat_get_prefs) (xchat_plugin *ph, + const char *name, + const char **string, + int *integer); + xchat_list * (*xchat_list_get) (xchat_plugin *ph, + const char *name); + void (*xchat_list_free) (xchat_plugin *ph, + xchat_list *xlist); + const char * const * (*xchat_list_fields) (xchat_plugin *ph, + const char *name); + int (*xchat_list_next) (xchat_plugin *ph, + xchat_list *xlist); + const char * (*xchat_list_str) (xchat_plugin *ph, + xchat_list *xlist, + const char *name); + int (*xchat_list_int) (xchat_plugin *ph, + xchat_list *xlist, + const char *name); + void * (*xchat_plugingui_add) (xchat_plugin *ph, + const char *filename, + const char *name, + const char *desc, + const char *version, + char *reserved); + void (*xchat_plugingui_remove) (xchat_plugin *ph, + void *handle); + int (*xchat_emit_print) (xchat_plugin *ph, + const char *event_name, ...); + int (*xchat_read_fd) (xchat_plugin *ph, + void *src, + char *buf, + int *len); + time_t (*xchat_list_time) (xchat_plugin *ph, + xchat_list *xlist, + const char *name); + char *(*xchat_gettext) (xchat_plugin *ph, + const char *msgid); + void (*xchat_send_modes) (xchat_plugin *ph, + const char **targets, + int ntargets, + int modes_per_line, + char sign, + char mode); + char *(*xchat_strip) (xchat_plugin *ph, + const char *str, + int len, + int flags); + void (*xchat_free) (xchat_plugin *ph, + void *ptr); +}; +#endif + + +xchat_hook * +xchat_hook_command (xchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], char *word_eol[], void *user_data), + const char *help_text, + void *userdata); + +xchat_hook * +xchat_hook_server (xchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], char *word_eol[], void *user_data), + void *userdata); + +xchat_hook * +xchat_hook_print (xchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], void *user_data), + void *userdata); + +xchat_hook * +xchat_hook_timer (xchat_plugin *ph, + int timeout, + int (*callback) (void *user_data), + void *userdata); + +xchat_hook * +xchat_hook_fd (xchat_plugin *ph, + int fd, + int flags, + int (*callback) (int fd, int flags, void *user_data), + void *userdata); + +void * +xchat_unhook (xchat_plugin *ph, + xchat_hook *hook); + +void +xchat_print (xchat_plugin *ph, + const char *text); + +void +xchat_printf (xchat_plugin *ph, + const char *format, ...); + +void +xchat_command (xchat_plugin *ph, + const char *command); + +void +xchat_commandf (xchat_plugin *ph, + const char *format, ...); + +int +xchat_nickcmp (xchat_plugin *ph, + const char *s1, + const char *s2); + +int +xchat_set_context (xchat_plugin *ph, + xchat_context *ctx); + +xchat_context * +xchat_find_context (xchat_plugin *ph, + const char *servname, + const char *channel); + +xchat_context * +xchat_get_context (xchat_plugin *ph); + +const char * +xchat_get_info (xchat_plugin *ph, + const char *id); + +int +xchat_get_prefs (xchat_plugin *ph, + const char *name, + const char **string, + int *integer); + +xchat_list * +xchat_list_get (xchat_plugin *ph, + const char *name); + +void +xchat_list_free (xchat_plugin *ph, + xchat_list *xlist); + +const char * const * +xchat_list_fields (xchat_plugin *ph, + const char *name); + +int +xchat_list_next (xchat_plugin *ph, + xchat_list *xlist); + +const char * +xchat_list_str (xchat_plugin *ph, + xchat_list *xlist, + const char *name); + +int +xchat_list_int (xchat_plugin *ph, + xchat_list *xlist, + const char *name); + +time_t +xchat_list_time (xchat_plugin *ph, + xchat_list *xlist, + const char *name); + +void * +xchat_plugingui_add (xchat_plugin *ph, + const char *filename, + const char *name, + const char *desc, + const char *version, + char *reserved); + +void +xchat_plugingui_remove (xchat_plugin *ph, + void *handle); + +int +xchat_emit_print (xchat_plugin *ph, + const char *event_name, ...); + +char * +xchat_gettext (xchat_plugin *ph, + const char *msgid); + +void +xchat_send_modes (xchat_plugin *ph, + const char **targets, + int ntargets, + int modes_per_line, + char sign, + char mode); + +char * +xchat_strip (xchat_plugin *ph, + const char *str, + int len, + int flags); + +void +xchat_free (xchat_plugin *ph, + void *ptr); + +#if !defined(PLUGIN_C) && defined(WIN32) +#ifndef XCHAT_PLUGIN_HANDLE +#define XCHAT_PLUGIN_HANDLE (ph) +#endif +#define xchat_hook_command ((XCHAT_PLUGIN_HANDLE)->xchat_hook_command) +#define xchat_hook_server ((XCHAT_PLUGIN_HANDLE)->xchat_hook_server) +#define xchat_hook_print ((XCHAT_PLUGIN_HANDLE)->xchat_hook_print) +#define xchat_hook_timer ((XCHAT_PLUGIN_HANDLE)->xchat_hook_timer) +#define xchat_hook_fd ((XCHAT_PLUGIN_HANDLE)->xchat_hook_fd) +#define xchat_unhook ((XCHAT_PLUGIN_HANDLE)->xchat_unhook) +#define xchat_print ((XCHAT_PLUGIN_HANDLE)->xchat_print) +#define xchat_printf ((XCHAT_PLUGIN_HANDLE)->xchat_printf) +#define xchat_command ((XCHAT_PLUGIN_HANDLE)->xchat_command) +#define xchat_commandf ((XCHAT_PLUGIN_HANDLE)->xchat_commandf) +#define xchat_nickcmp ((XCHAT_PLUGIN_HANDLE)->xchat_nickcmp) +#define xchat_set_context ((XCHAT_PLUGIN_HANDLE)->xchat_set_context) +#define xchat_find_context ((XCHAT_PLUGIN_HANDLE)->xchat_find_context) +#define xchat_get_context ((XCHAT_PLUGIN_HANDLE)->xchat_get_context) +#define xchat_get_info ((XCHAT_PLUGIN_HANDLE)->xchat_get_info) +#define xchat_get_prefs ((XCHAT_PLUGIN_HANDLE)->xchat_get_prefs) +#define xchat_list_get ((XCHAT_PLUGIN_HANDLE)->xchat_list_get) +#define xchat_list_free ((XCHAT_PLUGIN_HANDLE)->xchat_list_free) +#define xchat_list_fields ((XCHAT_PLUGIN_HANDLE)->xchat_list_fields) +#define xchat_list_str ((XCHAT_PLUGIN_HANDLE)->xchat_list_str) +#define xchat_list_int ((XCHAT_PLUGIN_HANDLE)->xchat_list_int) +#define xchat_list_time ((XCHAT_PLUGIN_HANDLE)->xchat_list_time) +#define xchat_list_next ((XCHAT_PLUGIN_HANDLE)->xchat_list_next) +#define xchat_plugingui_add ((XCHAT_PLUGIN_HANDLE)->xchat_plugingui_add) +#define xchat_plugingui_remove ((XCHAT_PLUGIN_HANDLE)->xchat_plugingui_remove) +#define xchat_emit_print ((XCHAT_PLUGIN_HANDLE)->xchat_emit_print) +#define xchat_gettext ((XCHAT_PLUGIN_HANDLE)->xchat_gettext) +#define xchat_send_modes ((XCHAT_PLUGIN_HANDLE)->xchat_send_modes) +#define xchat_strip ((XCHAT_PLUGIN_HANDLE)->xchat_strip) +#define xchat_free ((XCHAT_PLUGIN_HANDLE)->xchat_free) +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/etc/wyatt8740/plugins/xdcc/Makefile.am b/etc/wyatt8740/plugins/xdcc/Makefile.am new file mode 100644 index 0000000..24f93f1 --- /dev/null +++ b/etc/wyatt8740/plugins/xdcc/Makefile.am @@ -0,0 +1,7 @@ +libdir = $(xchatdir)/plugins + +lib_LTLIBRARIES = xdcc.la +xdcc_la_SOURCES = xdcc.c +xdcc_la_LDFLAGS = -avoid-version -module +INCLUDES = $(COMMON_CFLAGS) -I$(srcdir)/.. + diff --git a/etc/wyatt8740/plugins/xdcc/xdcc.c b/etc/wyatt8740/plugins/xdcc/xdcc.c new file mode 100644 index 0000000..147a3c3 --- /dev/null +++ b/etc/wyatt8740/plugins/xdcc/xdcc.c @@ -0,0 +1,327 @@ +/* xchat 2.0 plugin: simple xdcc server example */ + +#include +#include +#include +#include +#include + +#include "xchat-plugin.h" + +static xchat_plugin *ph; /* plugin handle */ + +static int xdcc_on = 1; +static int xdcc_slots = 3; +static GSList *file_list = 0; + +typedef struct fileoffer +{ + char *file; + char *fullpath; + char *desc; + int downloads; +} fileoffer; + + +/* find the number of open dccs */ + +static int num_open_dccs(void) +{ + xchat_list *list; + int num = 0; + + list = xchat_list_get(ph, "dcc"); + if(!list) + return 0; + + while(xchat_list_next(ph, list)) + { + /* check only ACTIVE dccs */ + if(xchat_list_int(ph, list, "status") == 1) + { + /* check only SEND dccs */ + if(xchat_list_int(ph, list, "type") == 0) + num++; + } + } + + xchat_list_free(ph, list); + + return num; +} + +static void xdcc_get(char *nick, char *host, char *arg) +{ + int num; + GSList *list; + fileoffer *offer; + + if(arg[0] == '#') + arg++; + + num = atoi(arg); + list = g_slist_nth(file_list, num - 1); + if(!list) + { + xchat_commandf(ph, "quote NOTICE %s :No such file number #%d!", nick, num); + return; + } + + if(num_open_dccs() >= xdcc_slots) + { + xchat_commandf(ph, "quote NOTICE %s :All slots full. Try again later.", nick); + return; + } + + offer = (fileoffer *) list->data; + offer->downloads++; + xchat_commandf(ph, "quote NOTICE %s :Sending offer #%d %s", nick, num, offer->file); + xchat_commandf(ph, "dcc send %s %s", nick, offer->fullpath); +} + +static void xdcc_del(char *name) +{ + GSList *list; + fileoffer *offer; + + list = file_list; + while(list) + { + offer = (fileoffer *) list->data; + if(strcasecmp(name, offer->file) == 0) + { + file_list = g_slist_remove(file_list, offer); + xchat_printf(ph, "%s [%s] removed.\n", offer->file, offer->fullpath); + free(offer->file); + free(offer->desc); + free(offer->fullpath); + free(offer); + return; + } + list = list->next; + } +} + +static void xdcc_add(char *name, char *fullpath, char *desc, int dl) +{ + fileoffer *offer; + + offer = (fileoffer *) malloc(sizeof(fileoffer)); + offer->file = strdup(name); + offer->desc = strdup(desc); + offer->fullpath = strdup(fullpath); + offer->downloads = dl; + + file_list = g_slist_append(file_list, offer); +} + +static void xdcc_list(char *nick, char *host, char *arg, char *cmd) +{ + GSList *list; + int i = 0; + fileoffer *offer; + + xchat_commandf(ph, "%s %s :XDCC List:", cmd, nick); + list = file_list; + while(list) + { + i++; + offer = (fileoffer *) list->data; + xchat_commandf(ph, "%s %s :[#%d] %s - %s [%d dl]", cmd, + nick, i, offer->file, offer->desc, offer->downloads); + list = list->next; + } + + if(i == 0) + xchat_commandf(ph, "%s %s :- list empty.", cmd, nick); + else + xchat_commandf(ph, "%s %s :%d files listed.", cmd, nick, i); +} + +static int xdcc_command(char *word[], char *word_eol[], void *userdata) +{ + if(strcasecmp(word[2], "ADD") == 0) + { + if(!word_eol[5][0]) + xchat_print(ph, "Syntax: /XDCC ADD \n"); + else + { + if(access(word[4], R_OK) == 0) + { + xdcc_add(word[3], word[4], word_eol[5], 0); + xchat_printf(ph, "%s [%s] added.\n", word[3], word[4]); + } + else + xchat_printf(ph, "Cannot read %s\n", word[4]); + } + return XCHAT_EAT_XCHAT; + } + + if(strcasecmp(word[2], "DEL") == 0) + { + xdcc_del(word[3]); + return XCHAT_EAT_XCHAT; + } + + if(strcasecmp(word[2], "SLOTS") == 0) + { + if(word[3][0]) + { + xdcc_slots = atoi(word[3]); + xchat_printf(ph, "XDCC slots set to %d\n", xdcc_slots); + } else + { + xchat_printf(ph, "XDCC slots: %d\n", xdcc_slots); + } + return XCHAT_EAT_XCHAT; + } + + if(strcasecmp(word[2], "ON") == 0) + { + xdcc_on = TRUE; + xchat_print(ph, "XDCC now ON\n"); + return XCHAT_EAT_XCHAT; + } + + if(strcasecmp(word[2], "LIST") == 0) + { + xdcc_list("", "", "", "echo"); + return XCHAT_EAT_XCHAT; + } + + if(strcasecmp(word[2], "OFF") == 0) + { + xdcc_on = FALSE; + xchat_print(ph, "XDCC now OFF\n"); + return XCHAT_EAT_XCHAT; + } + + xchat_print(ph, "Syntax: XDCC ADD \n" + " XDCC DEL \n" + " XDCC SLOTS \n" + " XDCC LIST\n" + " XDCC ON\n" + " XDCC OFF\n\n"); + + return XCHAT_EAT_XCHAT; +} + +static void xdcc_remote(char *from, char *msg) +{ + char *ex, *nick, *host; + + ex = strchr(from, '!'); + if(!ex) + return; + ex[0] = 0; + nick = from; + host = ex + 1; + + if(xdcc_on == 0) + { + xchat_commandf(ph, "notice %s XDCC is turned OFF!", from); + return; + } + + if(strncasecmp(msg, "LIST", 4) == 0) + xdcc_list(nick, host, msg + 4, "quote notice"); + else if(strncasecmp(msg, "GET ", 4) == 0) + xdcc_get(nick, host, msg + 4); + else + xchat_commandf(ph, "notice %s Unknown XDCC command!", from); +} + +static int ctcp_cb(char *word[], void *userdata) +{ + char *msg = word[1]; + char *from = word[2]; + + if(strncasecmp(msg, "XDCC ", 5) == 0) + xdcc_remote(from, msg + 5); + + return XCHAT_EAT_NONE; +} + +static void xdcc_save(void) +{ + char buf[512]; + FILE *fp; + GSList *list; + fileoffer *offer; + + snprintf(buf, sizeof(buf), "%s/xdcclist.conf", xchat_get_info(ph, "xchatdir")); + + fp = fopen(buf, "w"); + if(!fp) + return; + + list = file_list; + while(list) + { + offer = (fileoffer *) list->data; + fprintf(fp, "%s\n%s\n%s\n%d\n\n\n", offer->file, offer->fullpath, + offer->desc, offer->downloads); + list = list->next; + } + + fclose(fp); +} + +static void xdcc_load(void) +{ + char buf[512]; + char file[128]; + char path[128]; + char desc[128]; + char dl[128]; + FILE *fp; + + snprintf(buf, sizeof(buf), "%s/xdcclist.conf", xchat_get_info(ph, "xchatdir")); + + fp = fopen(buf, "r"); + if(!fp) + return; + + while(fgets(file, sizeof(file), fp)) + { + file[strlen(file)-1] = 0; + fgets(path, sizeof(path), fp); + path[strlen(path)-1] = 0; + fgets(desc, sizeof(desc), fp); + desc[strlen(desc)-1] = 0; + fgets(dl, sizeof(dl), fp); + dl[strlen(dl)-1] = 0; + fgets(buf, sizeof(buf), fp); + fgets(buf, sizeof(buf), fp); + xdcc_add(file, path, desc, atoi(dl)); + } + + fclose(fp); +} + +int xchat_plugin_deinit(void) +{ + xdcc_save(); + xchat_print(ph, "XDCC List saved\n"); + return 1; +} + +int xchat_plugin_init(xchat_plugin *plugin_handle, + char **plugin_name, char **plugin_desc, char **plugin_version, + char *arg) +{ + ph = plugin_handle; + + *plugin_name = "XDCC"; + *plugin_desc = "Very simple XDCC server"; + *plugin_version = "0.1"; + + xchat_hook_command(ph, "XDCC", XCHAT_PRI_NORM, xdcc_command, 0, 0); + xchat_hook_print(ph, "CTCP Generic", XCHAT_PRI_NORM, ctcp_cb, 0); + xchat_hook_print(ph, "CTCP Generic to Channel", XCHAT_PRI_NORM, ctcp_cb, 0); + + xdcc_load(); + xchat_print(ph, "XDCC loaded. Type /XDCC for help.\n"); + + return 1; +} diff --git a/etc/wyatt8740/plugins_extra/README.md b/etc/wyatt8740/plugins_extra/README.md new file mode 100644 index 0000000..3ba3635 --- /dev/null +++ b/etc/wyatt8740/plugins_extra/README.md @@ -0,0 +1,5 @@ +These are old plugins for xchat. + +Put them under ~/.xchat2 for them to work, apparently. + +I've only used the Perl version, myself. diff --git a/etc/wyatt8740/plugins_extra/cap_sasl_xchat.pl b/etc/wyatt8740/plugins_extra/cap_sasl_xchat.pl new file mode 100755 index 0000000..f0a55c8 --- /dev/null +++ b/etc/wyatt8740/plugins_extra/cap_sasl_xchat.pl @@ -0,0 +1,472 @@ +# based on cap_sasl.pl by Michael Tharp and Jilles Tjoelker +# ported to X-Chat 2 by Lian Wan Situ +# +# license: GNU General Public License +# Latest version at http://lwsitu.com/xchat/cap_sasl_xchat.pl + +### Configuration ####### +# How long to wait between authentication messages +my $AUTHENTICATION_TIMEOUT = 5; +### End Configuration ### + +use strict; +use warnings; +use Xchat qw(:all); + +use MIME::Base64; + +register( + "CAP SASL", + "1.0300", + "Implements PLAIN SASL authentication mechanism for use with charybdis ircds, and enables CAP MULTI-PREFIX IDENTIFY-MSG", + \&cmd_sasl_save, +); + + +my %timeouts; +my %processing_cap; +hook_print( "Connected", \&event_connected ); + +hook_server( 'CAP', \&event_cap); +hook_server( 'AUTHENTICATE', \&event_authenticate); +hook_server( '900', sub { + cap_out( substr( $_[1][5], 1, ) ); + timeout_remove(); + return EAT_XCHAT; +}); +hook_server( '903', \&event_saslsuccess); +hook_server( '904', \&event_saslend); +hook_server( '905', \&event_saslend); +hook_server( '906', \&event_saslend); +hook_server( '907', \&event_saslend); + +hook_command( 'SASL', \&cmd_sasl, { help_text => cmd_sasl_help_text() } ); + +my $AUTH_TIMEOUT; +if( $AUTHENTICATION_TIMEOUT ) { + $AUTH_TIMEOUT = $AUTHENTICATION_TIMEOUT * 1_000; +} else { + $AUTH_TIMEOUT = 5_000; +} + +my %sasl_auth = (); +my %mech = (); + +sub send_raw { + commandf( "QUOTE %s", $_[0] ); +} + +sub cap { + send_raw( "CAP " . $_[0] ); +} + +sub cap_end{ + delete $processing_cap{ get_info "id" }; + cap( "END" ); +} + +sub connected { + my $flags = context_info->{flags}; + return $flags & 1 || $flags & 2; +} + +sub get_config_file { + return get_info( "xchatdirfs" )."/sasl.auth"; +} + +sub network_name { + return lc get_info( "network" ); +} + +# switch to the server tab for the current connection +# return true if successful +sub switch_to_server { + my $connection_id = shift; + + for my $tab( get_list "channels") { + if( $tab->{id} == $connection_id && $tab->{type} == 1 ) { + return set_context( $tab->{context} ); + } + } + + return; +} + +sub cap_out { + my $output = shift; + switch_to_server( get_info "id" ); + + prnt( $output ); +} + +sub event_connected { + cap( "LS" ); + + # reset everything for new connection + timeout_remove(); + delete $processing_cap{ get_info( "id" ) }; + return EAT_NONE; +} + +sub event_cap { + my $tosend = ''; + my $subcmd = uc $_[0][3]; + my $caps = $_[1][4]; + $caps =~ s/^://; + + if ($subcmd eq 'LS') { + my $id = get_info "id"; + if( $processing_cap{ $id } ) { + return EAT_XCHAT; + } + $processing_cap{ $id } = 1; + $tosend .= ' multi-prefix' if $caps =~ /\bmulti-prefix\b/xi; + + if( $caps =~ /\bsasl\b/xi ) { + if( defined($sasl_auth{network_name()}) ) { + $tosend .= ' sasl'; + } else { + cap_out( "\cC05SASL is supported but there is no authentication information set for this network(\cC02".network_name()."\cC05)." ); + } + } + + $tosend .= ' identify-msg' if $caps =~ /\bidentify-msg\b/; + $tosend =~ s/^ //; + cap_out( "CLICAP: supported by server: $caps" ); + + if ( connected() ) { + if ($tosend eq '') { + cap_end(); + } else { + cap_out( "CLICAP: requesting: $tosend" ); + cap( "REQ :$tosend" ); + } + } + } elsif( $subcmd eq 'ACK' ) { + cap_out( "CLICAP: now enabled: $caps" ); + + if( $caps =~ /\bidentify-msg\b/i ) { + commandf( "RECV %s 290 %s :IDENTIFY-MSG", + $_[0][0], get_info( "nick" ) ); + } + + if( $caps =~ /\bsasl\b/i ) { + $sasl_auth{network_name()}{buffer} = ''; + if($mech{$sasl_auth{network_name()}{mech}}) { + send_raw( "AUTHENTICATE " + . $sasl_auth{network_name()}{mech} + ); + + timeout_start(); + } else { + cap_out( 'SASL: attempted to start unknown mechanism "%s"', + $sasl_auth{network_name()}{mech} + ); + } + } elsif( connected() ) { + cap_end; + } + } elsif( $subcmd eq 'NAK' ) { + cap_out( "CLICAP: refused:$caps" ); + if ( connected() ) { + cap_end; + } + } elsif( $subcmd eq 'LIST' ) { + cap_out( "CLICAP: currently enabled:$caps" ); + } + + return EAT_XCHAT; +} + +sub event_authenticate { + my $args = $_[1][1] || ""; + + my $sasl = $sasl_auth{network_name()}; + return EAT_XCHAT unless $sasl && $mech{$sasl->{mech}}; + + $sasl->{buffer} .= $args; + timeout_reset(); + return EAT_XCHAT if length($args) == 400; + + my $data = $sasl->{buffer} eq '+' ? '' : decode_base64($sasl->{buffer}); + my $out = $mech{$sasl->{mech}}($sasl, $data); + $out = '' unless defined $out; + $out = $out eq '' ? '+' : encode_base64($out, ''); + + while(length $out >= 400) { + my $subout = substr($out, 0, 400, ''); + send_raw("AUTHENTICATE $subout"); + } + if(length $out) { + send_raw("AUTHENTICATE $out"); + }else{ # Last piece was exactly 400 bytes, we have to send some padding to indicate we're done + send_raw("AUTHENTICATE +"); + } + + $sasl->{buffer} = ''; + return EAT_XCHAT; +} + +sub event_saslsuccess { + my $data = $_[1][3]; + $data =~ s/^://; + + cap_out( $data ); + if( connected() ) { + cap_end(); + } + + return EAT_XCHAT; +} +sub event_saslend { + my $data = $_[1][1]; + $data =~ s/^\S+ :?//; + + if (connected()) { + cap_end(); + } + + return EAT_XCHAT; +} + +sub timeout_start { + $timeouts{ context_info->{id} } + = hook_timer( $AUTH_TIMEOUT, sub { timeout(); return REMOVE; } ); +} + +sub timeout_remove { + unhook( $timeouts{ context_info->{id} } ) if $timeouts{ context_info->{id} }; +} + +sub timeout_reset { + timeout_remove(); + timeout_start(); +} + +sub timeout { + my $id = get_info "id"; + delete $processing_cap{ $id }; + + if( connected() ) { + cap_out( "SASL: authentication timed out" ); + cap_end(); + } +} + +my %sasl_actions = ( + load => \&cmd_sasl_load, + save => \&cmd_sasl_save, + set => \&cmd_sasl_set, + delete => \&cmd_sasl_delete, + show => \&cmd_sasl_show, + help => \&cmd_sasl_help, + mechanisms => \&cmd_sasl_mechanisms, +); + +sub cmd_sasl { + my $action = $_[0][1]; + + if( $action and my $action_code = $sasl_actions{ $action } ) { + $action_code->( @_ ); + } else { + $sasl_actions{ help }->( @_ ); + } + + return EAT_XCHAT; +} + +sub cmd_sasl_help_text { + return <<"HELP_TEXT"; +SASL [action] [action paramters] + actions: + load reload SASL information from disk + save save the current SASL information to disk + set set the SASL information for a particular network + set + you can also set to -n or -- to use the name of the network from currently focused tab + you can also set to -u or -- to use the current nick + delete delete the SASL information for a particular network + delete + + show display which networks have SASL information set + mechanisms display supported mechanisms + + help show help message +HELP_TEXT + +} + +sub cmd_sasl_set { + my $data = $_[ 1 ][ 2 ] || ""; + + if( my ($net, $u, $p, $m) = $data =~ /^(\S+)\s+(\S+)\s+(\S+)(?:\s+(\S+))?$/ ) { + $m = "plain" unless defined $m; + $m = uc $m; + + if( $mech{ $m } ) { + if( $net =~ /^-[-n]$/ ) { + $net = get_info( "network" ); + + unless ( defined $net ) { + prnt "SASL: Unable to get network name. Make sure the current tab is connected to a server."; + return; + } + } + $net = lc $net; + + if( $u =~ /^-[-u]$/ ) { + $u = get_info( "nick" ); + } + $sasl_auth{ $net }{ user } = $u; + $sasl_auth{ $net }{ password } = $p; + $sasl_auth{ $net }{ mech } = $m; + prnt( "SASL: added $net: [$m] $sasl_auth{$net}{user} *" ); + } else { + prnt( "SASL: unknown mechanism $m" ); + } + } elsif ( $data =~ /^(\S+)$/ ) { + $net = $1; + delete_net( $net ); + } else { + prnt( "SASL: usage: /sasl set " ); + } +} + +sub delete_net { + my $net = lc shift; + + if( $net =~ /^-[-n]$/ ) { + $net = lc get_info( "network" ); + + unless( defined $net ) { + prnt "SASL: Unable to get network name. Make sure the current tab is connected to a server."; + return; + } + } + + if (defined($sasl_auth{$net})) { + delete $sasl_auth{$net}; + prnt( "SASL: deleted $net" ); + } else { + prnt( "SASL: no entry for $net" ); + } + +} +sub cmd_sasl_delete { + my $net = $_[0][2]; + + delete_net( $net ); +} + +sub cmd_sasl_show { + foreach my $net (keys %sasl_auth) { + prnt( "SASL: $net: [$sasl_auth{$net}{mech}] $sasl_auth{$net}{user} *" ); + } + prnt("SASL: no networks defined") if !%sasl_auth; +} + +sub cmd_sasl_save { + my $file = get_config_file(); + + if( open my $fh, ">", $file ) { + + foreach my $net (keys %sasl_auth) { + printf $fh ("%s\t%s\t%s\t%s\n", lc $net, $sasl_auth{$net}{user}, $sasl_auth{$net}{password}, $sasl_auth{$net}{mech}); + } + + prnt( "SASL: auth saved to $file" ); + } else { + prnt qq{Couldn't open '$file' to save auth data: $!}; + } +} + +sub cmd_sasl_load { + #my ($data, $server, $item) = @_; + my $file = get_config_file(); + + open FILE, "< $file" or return; + %sasl_auth = (); + while () { + chomp; + my ($net, $u, $p, $m) = split (/\t/, $_, 4); + $m ||= "PLAIN"; + $net = lc $net; + if($mech{uc $m}) { + $sasl_auth{$net}{user} = $u; + $sasl_auth{$net}{password} = $p; + $sasl_auth{$net}{mech} = uc $m; + }else{ + prnt( "SASL: unknown mechanism $m" ); + } + } + close FILE; + prnt( "SASL: auth loaded from $file" ); +} + +sub cmd_sasl_mechanisms { + prnt( "SASL: mechanisms supported: " . join(" ", keys %mech) ); +} + +sub cmd_sasl_help { + prnt( cmd_sasl_help_text() ); +} + +$mech{PLAIN} = sub { + my($sasl, $data) = @_; + my $u = $sasl->{user}; + my $p = $sasl->{password}; + + join("\0", $u, $u, $p); +}; + +# binary to BigInt +sub bin2bi { + return Crypt::OpenSSL::Bignum + ->new_from_bin(shift) + ->to_decimal; +} + +# BigInt to binary +sub bi2bin { + return Crypt::OpenSSL::Bignum + ->new_from_decimal((shift)->bstr) + ->to_bin; +} + +eval { + require Crypt::OpenSSL::Bignum; + require Crypt::DH; + require Crypt::Blowfish; + require Math::BigInt; + + $mech{'DH-BLOWFISH'} = sub { + my($sasl, $data) = @_; + my $u = $sasl->{user}; + my $pass = $sasl->{password}; + + # Generate private key and compute secret key + my($p, $g, $y) = unpack("(n/a*)3", $data); + my $dh = Crypt::DH->new(p => bin2bi($p), g => bin2bi($g)); + $dh->generate_keys; + + my $secret = bi2bin($dh->compute_secret(bin2bi($y))); + my $pubkey = bi2bin($dh->pub_key); + + # Pad the password to the nearest multiple of blocksize and encrypt + $pass .= "\0"; + $pass .= chr(rand(256)) while length($pass) % 8; + + my $cipher = Crypt::Blowfish->new($secret); + my $crypted = ''; + while(length $pass) { + my $clear = substr($pass, 0, 8, ''); + $crypted .= $cipher->encrypt($clear); + } + + pack("n/a*Z*a*", $pubkey, $u, $crypted); + }; +}; + +cmd_sasl_load(); + +# vim: ts=4 diff --git a/etc/wyatt8740/plugins_extra/cap_sasl_xchat.py b/etc/wyatt8740/plugins_extra/cap_sasl_xchat.py new file mode 100755 index 0000000..779d78b --- /dev/null +++ b/etc/wyatt8740/plugins_extra/cap_sasl_xchat.py @@ -0,0 +1,162 @@ +# +# Copyright (C) 2010 Roberto Leandrini +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# + +__module_name__ = 'cap_sasl' +__module_version__ = '0.5' +__module_description__ = 'SASL authentication plugin' +__module_author__ = 'Roberto Leandrini ' + +import base64 +import ConfigParser +import os + +import xchat + +conf = ConfigParser.SafeConfigParser() +conffileName = xchat.get_info('xchatdir') + os.sep + 'sasl.conf' +# cwd is different for cb functions :/ +# conf.read([conffileName, 'sasl.conf']) +saslTimers = {} + +def connected_cb(word, word_eol, userdata): + # Ask the server for the list of supported capabilities + conf.read(conffileName) + if not conf.has_section(xchat.get_info('network')): + return + + xchat.command('CAP LS') + return xchat.EAT_NONE + +def sasl_timeout_cb(userdata): + # Tell the server we've finished playing with capabilities if SASL times out + xchat.command('CAP END') + return xchat.EAT_NONE + +def cap_cb(word, word_eol, userdata): + subcmd = word[3] + caps = word[4:] + caps[0] = caps[0][1:] + if subcmd == 'LS': + toSet = [] + # Parse the list of capabilities received from the server + if 'multi-prefix' in caps: + toSet.append('multi-prefix') + # Ask for the SASL capability only if there is a configuration for this network + if 'sasl' in caps and conf.has_section(xchat.get_info('network')): + toSet.append('sasl') + if toSet: + # Actually set capabilities + xchat.command('CAP REQ :%s' % ' '.join(toSet)) + else: + # Sorry, nothing useful found, or we don't support these + xchat.command('CAP END') + elif subcmd == 'ACK': + if 'sasl' in caps: + xchat.command('AUTHENTICATE PLAIN') + print("SASL authenticating") + saslTimers[xchat.get_info('network')] = xchat.hook_timer(5000, sasl_timeout_cb) # Timeout after 5 seconds + # In this case CAP END is delayed until authentication ends + else: + xchat.command('CAP END') + elif subcmd == 'NAK': + xchat.command('CAP END') + elif subcmd == 'LIST': + if not caps: + caps = 'none' + print('CAP(s) currently enabled: %s') % ', '.join(caps) + return xchat.EAT_XCHAT + +def authenticate_cb(word, word_eol, userdata): + nick = conf.get(xchat.get_info('network'), 'nick') + passwd = conf.get(xchat.get_info('network'), 'password') + authStr = base64.b64encode('\0'.join((nick, nick, passwd))) + if not len(authStr): + xchat.command('AUTHENTICATE +') + else: + while len(authStr) >= 400: + toSend = authStr[:400] + authStr = authStr[400:] + xchat.command('AUTHENTICATE %s' % toSend) + if len(authStr): + # Send last part + xchat.command('AUTHENTICATE %s' % authStr) + else: + # Last part was exactly 400 bytes, inform the server that there's nothing more + xchat.command('AUTHENTICATE +') + return xchat.EAT_XCHAT + +def sasl_90x_cb(word, word_eol, userdata): + # Remove timer + xchat.unhook(saslTimers[xchat.get_info('network')]) + xchat.command('CAP END') + return xchat.EAT_NONE + +def sasl_cb(word, word_eol, userdata): + if len(word) < 3: + print('Usage: /SASL <-set|-unset> [ ]') + else: + subcmd = word[1] + network = word[2] + if subcmd == '-set': + # -set needs also a nick and its password + if len(word) < 5: + print('Usage: /SASL -set ') + else: + nick = word[3] + passwd = word[4] + if not conf.has_section(network): + conf.add_section(network) + what = 'Added' + else: + what = 'Updated' + conf.set(network, 'nick', nick) + conf.set(network, 'password', passwd) + # This parameter is currently unused, but reserved for a future version. + # Currently, PLAIN is the only supported mechanism. + conf.set(network, 'mechanism', 'PLAIN') + # Save settings + conffile = open(conffileName, 'w') + print(os.getcwd()) + conf.write(conffile) + conffile.close() + print('%s SASL settings for network %s') % (what, network) + elif subcmd == '-unset': + if conf.remove_section(network): # Returns True if section existed + # Write on disk only if configuration is actually changed + conffile = open(conffileName, 'w') + conf.write(conffile) + conffile.close() + print('Successfully removed SASL settings for network ' + network) + else: + print('SASL authentication is not configured for network ' + network) + else: + print('Usage: /SASL <-set|-unset> [ ]') + return xchat.EAT_NONE + +xchat.hook_print('Connected', connected_cb) + +xchat.hook_server('AUTHENTICATE', authenticate_cb) +xchat.hook_server('CAP', cap_cb) +xchat.hook_server('903', sasl_90x_cb) # RPL_SASLSUCCESS +xchat.hook_server('904', sasl_90x_cb) # ERR_SASLFAIL +xchat.hook_server('905', sasl_90x_cb) # ERR_SASLTOOLONG +xchat.hook_server('906', sasl_90x_cb) # ERR_SASLABORTED +xchat.hook_server('907', sasl_90x_cb) # ERR_SASLALREADY + +xchat.hook_command('SASL', sasl_cb, help = 'Usage: /SASL <-set|-unset> [ ], ' + + 'set or unset SASL authentication for an IRC network. Arguments and are optional for -unset') diff --git a/etc/wyatt8740/plugins_extra/cap_sasl_xchat_old.pl b/etc/wyatt8740/plugins_extra/cap_sasl_xchat_old.pl new file mode 100644 index 0000000..cb4c3d3 --- /dev/null +++ b/etc/wyatt8740/plugins_extra/cap_sasl_xchat_old.pl @@ -0,0 +1,431 @@ +# based on cap_sasl.pl by Michael Tharp and Jilles Tjoelker +# ported to X-Chat 2 by Lian Wan Situ +# +# license: GNU General Public License +# Latest version at http://lwsitu.com/xchat/cap_sasl_xchat.pl + +### Configuration ####### +# How long to wait between authentication messages +my $AUTHENTICATION_TIMEOUT = 15; +### End Configuration ### + +use strict; +use warnings; +use Xchat qw(:all); + +use MIME::Base64; + +register( + "CAP SASL", + "1.0107", + "Implements PLAIN SASL authentication mechanism for use with charybdis ircds, and enables CAP MULTI-PREFIX IDENTIFY-MSG", + \&cmd_sasl_save, +); + + +my %timeouts; +my %processing_cap; +hook_print( "Connected", \&event_connected ); + +hook_server( 'CAP', \&event_cap); +hook_server( 'AUTHENTICATE', \&event_authenticate); +hook_server( '900', sub { + cap_out( substr( $_[1][5], 1, ) ); + timeout_remove(); + return EAT_XCHAT; +}); +hook_server( '903', \&event_saslend); +hook_server( '904', \&event_saslend); +hook_server( '905', \&event_saslend); +hook_server( '906', \&event_saslend); +hook_server( '907', \&event_saslend); + +hook_command( 'SASL', \&cmd_sasl, { help_text => cmd_sasl_help_text() } ); + +my $AUTH_TIMEOUT; +if( $AUTHENTICATION_TIMEOUT ) { + $AUTH_TIMEOUT = $AUTHENTICATION_TIMEOUT * 1_000; +} else { + $AUTH_TIMEOUT = 5_000; +} + +my %sasl_auth = (); +my %mech = (); + +sub send_raw { + commandf( "QUOTE %s", $_[0] ); +} + +sub cap { + send_raw( "CAP " . $_[0] ); +} + +sub cap_end{ + delete $processing_cap{ get_info "id" }; + cap( "END" ); +} + +sub connected { + my $flags = context_info->{flags}; + return $flags & 1 || $flags & 2; +} + +sub get_config_file { + return get_info( "xchatdirfs" )."/sasl.auth"; +} + +sub network_name { + return lc get_info( "network" ); +} + +# switch to the server tab for the current connection +# return true if successful +sub switch_to_server { + my $connection_id = shift; + + for my $tab( get_list "channels") { + if( $tab->{id} == $connection_id && $tab->{type} == 1 ) { + return set_context( $tab->{context} ); + } + } + + return; +} + +sub cap_out { + my $output = shift; + switch_to_server( get_info "id" ); + + prnt( $output ); +} + +sub event_connected { + cap( "LS" ); + + # reset everything for new connection + timeout_remove(); + delete $processing_cap{ get_info( "id" ) }; + return EAT_NONE; +} + +sub event_cap { + my $tosend = ''; + my $subcmd = uc $_[0][3]; + my $caps = $_[1][4]; + $caps =~ s/^://; + + if ($subcmd eq 'LS') { + my $id = get_info "id"; + if( $processing_cap{ $id } ) { + return EAT_XCHAT; + } + $processing_cap{ $id } = 1; + $tosend .= ' multi-prefix' if $caps =~ /\bmulti-prefix\b/xi; + + if( $caps =~ /\bsasl\b/xi ) { + if( defined($sasl_auth{network_name()}) ) { + $tosend .= ' sasl'; + } else { + cap_out( "\cC05SASL is supported but there is no authentication information set for this network(\cC02".network_name()."\cC05)." ); + } + } + + $tosend .= ' identify-msg' if $caps =~ /\bidentify-msg\b/; + $tosend =~ s/^ //; + cap_out( "CLICAP: supported by server: $caps" ); + + if ( connected() ) { + if ($tosend eq '') { + cap_end(); + } else { + cap_out( "CLICAP: requesting: $tosend" ); + cap( "REQ :$tosend" ); + } + } + } elsif( $subcmd eq 'ACK' ) { + cap_out( "CLICAP: now enabled: $caps" ); + + if( $caps =~ /\bidentify-msg\b/i ) { + commandf( "RECV %s 290 %s :IDENTIFY-MSG", + $_[0][0], get_info( "nick" ) ); + } + + if( $caps =~ /\bsasl\b/i ) { + $sasl_auth{network_name()}{buffer} = ''; + if($mech{$sasl_auth{network_name()}{mech}}) { + send_raw( "AUTHENTICATE " + . $sasl_auth{network_name()}{mech} + ); + + timeout_start(); + } else { + cap_out( 'SASL: attempted to start unknown mechanism "%s"', + $sasl_auth{network_name()}{mech} + ); + } + } elsif( connected() ) { + cap_end; + } + } elsif( $subcmd eq 'NAK' ) { + cap_out( "CLICAP: refused:$caps" ); + if ( connected() ) { + cap_end; + } + } elsif( $subcmd eq 'LIST' ) { + cap_out( "CLICAP: currently enabled:$caps" ); + } + + return EAT_XCHAT; +} + +sub event_authenticate { + my $args = $_[1][1] || ""; + + my $sasl = $sasl_auth{network_name()}; + return EAT_XCHAT unless $sasl && $mech{$sasl->{mech}}; + + $sasl->{buffer} .= $args; + timeout_reset(); + return EAT_XCHAT if length($args) == 400; + + my $data = $sasl->{buffer} eq '+' ? '' : decode_base64($sasl->{buffer}); + my $out = $mech{$sasl->{mech}}($sasl, $data); + $out = '' unless defined $out; + $out = $out eq '' ? '+' : encode_base64($out, ''); + + while(length $out >= 400) { + my $subout = substr($out, 0, 400, ''); + send_raw("AUTHENTICATE $subout"); + } + if(length $out) { + send_raw("AUTHENTICATE $out"); + }else{ # Last piece was exactly 400 bytes, we have to send some padding to indicate we're done + send_raw("AUTHENTICATE +"); + } + + $sasl->{buffer} = ''; + return EAT_XCHAT; +} + +sub event_saslend { + my $data = $_[1][1]; + $data =~ s/^\S+ :?//; + + if (connected()) { + cap_end(); + } + + return EAT_XCHAT; +} + +sub timeout_start { + $timeouts{ context_info->{id} } + = hook_timer( $AUTH_TIMEOUT, sub { timeout(); return REMOVE; } ); +} + +sub timeout_remove { + unhook( $timeouts{ context_info->{id} } ) if $timeouts{ context_info->{id} }; +} + +sub timeout_reset { + timeout_remove(); + timeout_start(); +} + +sub timeout { + my $id = get_info "id"; + delete $processing_cap{ $id }; + + if( connected() ) { + cap_out( "SASL: authentication timed out" ); + cap_end(); + } +} + +my %sasl_actions = ( + load => \&cmd_sasl_load, + save => \&cmd_sasl_save, + set => \&cmd_sasl_set, + delete => \&cmd_sasl_delete, + show => \&cmd_sasl_show, + help => \&cmd_sasl_help, + mechanisms => \&cmd_sasl_mechanisms, +); + +sub cmd_sasl { + my $action = $_[0][1]; + + if( $action and my $action_code = $sasl_actions{ $action } ) { + $action_code->( @_ ); + } else { + $sasl_actions{ help }->( @_ ); + } + + return EAT_XCHAT; +} + +sub cmd_sasl_help_text { + return <<"HELP_TEXT"; +SASL [action] [action paramters] + actions: + load reload SASL information from disk + save save the current SASL information to disk + set set the SASL information for a particular network + set + delete delete the SASL information for a particular network + delete + + show display which networks have SASL information set + mechanisms display supported mechanisms + + help show help message +HELP_TEXT + +} + +sub cmd_sasl_set { + my $data = $_[1][2] || ""; + + if (my($net, $u, $p, $m) = $data =~ /^(\S+) (\S+) (\S+) (\S+)$/) { + if($mech{uc $m}) { + $net = lc $net; + $sasl_auth{$net}{user} = $u; + $sasl_auth{$net}{password} = $p; + $sasl_auth{$net}{mech} = uc $m; + prnt( "SASL: added $net: [$m] $sasl_auth{$net}{user} *" ); + } else { + prnt( "SASL: unknown mechanism $m" ); + } + } elsif( $data =~ /^(\S+)$/) { + $net = lc $1; + if (defined($sasl_auth{$net})) { + delete $sasl_auth{$net}; + prnt( "SASL: deleted $net" ); + } else { + prnt( "SASL: no entry for $net" ); + } + } else { + prnt( "SASL: usage: /sasl set " ); + } +} + +sub cmd_sasl_delete { + my $net = $_[0][2]; + prnt "Net: $net"; + + delete $sasl_auth{$net}; +} + +sub cmd_sasl_show { + foreach my $net (keys %sasl_auth) { + prnt( "SASL: $net: [$sasl_auth{$net}{mech}] $sasl_auth{$net}{user} *" ); + } + prnt("SASL: no networks defined") if !%sasl_auth; +} + +sub cmd_sasl_save { + my $file = get_config_file(); + + if( open my $fh, ">", $file ) { + + foreach my $net (keys %sasl_auth) { + printf $fh ("%s\t%s\t%s\t%s\n", lc $net, $sasl_auth{$net}{user}, $sasl_auth{$net}{password}, $sasl_auth{$net}{mech}); + } + + prnt( "SASL: auth saved to $file" ); + } else { + prnt qq{Couldn't open '$file' to save auth data: $!}; + } +} + +sub cmd_sasl_load { + #my ($data, $server, $item) = @_; + my $file = get_config_file(); + + open FILE, "< $file" or return; + %sasl_auth = (); + while () { + chomp; + my ($net, $u, $p, $m) = split (/\t/, $_, 4); + $m ||= "PLAIN"; + $net = lc $net; + if($mech{uc $m}) { + $sasl_auth{$net}{user} = $u; + $sasl_auth{$net}{password} = $p; + $sasl_auth{$net}{mech} = uc $m; + }else{ + prnt( "SASL: unknown mechanism $m" ); + } + } + close FILE; + prnt( "SASL: auth loaded from $file" ); +} + +sub cmd_sasl_mechanisms { + prnt( "SASL: mechanisms supported: " . join(" ", keys %mech) ); +} + +sub cmd_sasl_help { + prnt( cmd_sasl_help_text() ); +} + +$mech{PLAIN} = sub { + my($sasl, $data) = @_; + my $u = $sasl->{user}; + my $p = $sasl->{password}; + + join("\0", $u, $u, $p); +}; + +# binary to BigInt +sub bin2bi { + return Crypt::OpenSSL::Bignum + ->new_from_bin(shift) + ->to_decimal; +} + +# BigInt to binary +sub bi2bin { + return Crypt::OpenSSL::Bignum + ->new_from_decimal((shift)->bstr) + ->to_bin; +} + +eval { + require Crypt::OpenSSL::Bignum; + require Crypt::DH; + require Crypt::Blowfish; + require Math::BigInt; + + $mech{'DH-BLOWFISH'} = sub { + my($sasl, $data) = @_; + my $u = $sasl->{user}; + my $pass = $sasl->{password}; + + # Generate private key and compute secret key + my($p, $g, $y) = unpack("(n/a*)3", $data); + my $dh = Crypt::DH->new(p => bin2bi($p), g => bin2bi($g)); + $dh->generate_keys; + + my $secret = bi2bin($dh->compute_secret(bin2bi($y))); + my $pubkey = bi2bin($dh->pub_key); + + # Pad the password to the nearest multiple of blocksize and encrypt + $pass .= "\0"; + $pass .= chr(rand(256)) while length($pass) % 8; + + my $cipher = Crypt::Blowfish->new($secret); + my $crypted = ''; + while(length $pass) { + my $clear = substr($pass, 0, 8, ''); + $crypted .= $cipher->encrypt($clear); + } + + pack("n/a*Z*a*", $pubkey, $u, $crypted); + }; +}; + +cmd_sasl_load(); + +# vim: ts=4 + diff --git a/etc/wyatt8740/po/Makefile.in b/etc/wyatt8740/po/Makefile.in new file mode 100644 index 0000000..1ff55a4 --- /dev/null +++ b/etc/wyatt8740/po/Makefile.in @@ -0,0 +1,510 @@ +# Makefile for PO directory in any package using GNU gettext. +# Copyright (C) 1995-2000 Ulrich Drepper +# Copyright (C) 2000-2020 Free Software Foundation, Inc. +# +# Copying and distribution of this file, with or without modification, +# are permitted in any medium without royalty provided the copyright +# notice and this notice are preserved. This file is offered as-is, +# without any warranty. +# +# Origin: gettext-0.21 +GETTEXT_MACRO_VERSION = 0.20 + +PACKAGE = xchat +VERSION = 2.8.8 +PACKAGE_BUGREPORT = http://www.xchat.org/ + +SED = /usr/bin/sed +SHELL = /bin/sh + + +srcdir = . +top_srcdir = .. + + +prefix = /usr +exec_prefix = /usr +datarootdir = ${prefix}/share +datadir = ${datarootdir} +localedir = ${datarootdir}/locale +gettextsrcdir = $(datadir)/gettext/po + +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 + +# We use $(mkdir_p). +# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as +# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions, +# ${SHELL} /home/wyatt/development/xchat-clean/install-sh does not start with $(SHELL), so we add it. +# In automake >= 1.10, $(MKDIR_P) is derived from ${MKDIR_P}, which is defined +# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake +# versions, $(mkinstalldirs) and $(install_sh) are unused. +mkinstalldirs = $(SHELL) ${SHELL} /home/wyatt/development/xchat-clean/install-sh -d +install_sh = $(SHELL) ${SHELL} /home/wyatt/development/xchat-clean/install-sh +MKDIR_P = /usr/bin/mkdir -p +mkdir_p = $(MKDIR_P) + +# When building gettext-tools, we prefer to use the built programs +# rather than installed programs. However, we can't do that when we +# are cross compiling. +CROSS_COMPILING = @CROSS_COMPILING@ + +GMSGFMT_ = /usr/bin/msgfmt +GMSGFMT_no = /usr/bin/msgfmt +GMSGFMT_yes = /usr/bin/msgfmt +GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT)) +XGETTEXT_ = /usr/bin/xgettext +XGETTEXT_no = /usr/bin/xgettext +XGETTEXT_yes = /usr/bin/xgettext +XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT)) +MSGMERGE = /usr/bin/msgmerge +MSGMERGE_UPDATE = /usr/bin/msgmerge --update +MSGMERGE_FOR_MSGFMT_OPTION = --for-msgfmt +MSGINIT = msginit +MSGCONV = msgconv +MSGFILTER = msgfilter + +POFILES = @POFILES@ +GMOFILES = @GMOFILES@ +UPDATEPOFILES = @UPDATEPOFILES@ +DUMMYPOFILES = @DUMMYPOFILES@ +DISTFILES.common = Makefile.in.in remove-potcdate.sin \ +$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) +DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \ +$(POFILES) $(GMOFILES) \ +$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) + +POTFILES = \ + +CATALOGS = @CATALOGS@ + +POFILESDEPS_ = $(srcdir)/$(DOMAIN).pot +POFILESDEPS_yes = $(POFILESDEPS_) +POFILESDEPS_no = +POFILESDEPS = $(POFILESDEPS_$(PO_DEPENDS_ON_POT)) + +DISTFILESDEPS_ = update-po +DISTFILESDEPS_yes = $(DISTFILESDEPS_) +DISTFILESDEPS_no = +DISTFILESDEPS = $(DISTFILESDEPS_$(DIST_DEPENDS_ON_UPDATE_PO)) + +# Makevars gets inserted here. (Don't remove this line!) + +all: all-yes + + +.SUFFIXES: +.SUFFIXES: .po .gmo .sed .sin .nop .po-create .po-update + +# The .pot file, stamp-po, .po files, and .gmo files appear in release tarballs. +# The GNU Coding Standards say in +# : +# "GNU distributions usually contain some files which are not source files +# ... . Since these files normally appear in the source directory, they +# should always appear in the source directory, not in the build directory. +# So Makefile rules to update them should put the updated files in the +# source directory." +# Therefore we put these files in the source directory, not the build directory. + +# During .po -> .gmo conversion, take into account the most recent changes to +# the .pot file. This eliminates the need to update the .po files when the +# .pot file has changed, which would be troublesome if the .po files are put +# under version control. +$(GMOFILES): $(srcdir)/$(DOMAIN).pot +.po.gmo: + @lang=`echo $* | sed -e 's,.*/,,'`; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}rm -f $${lang}.gmo && $(MSGMERGE) $(MSGMERGE_FOR_MSGFMT_OPTION) -o $${lang}.1po $${lang}.po $(DOMAIN).pot && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.1po && rm -f $${lang}.1po"; \ + cd $(srcdir) && \ + rm -f $${lang}.gmo && \ + $(MSGMERGE) $(MSGMERGE_FOR_MSGFMT_OPTION) -o $${lang}.1po $${lang}.po $(DOMAIN).pot && \ + $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.1po && \ + mv t-$${lang}.gmo $${lang}.gmo && \ + rm -f $${lang}.1po + +.sin.sed: + sed -e '/^#/d' $< > t-$@ + mv t-$@ $@ + + +all-yes: $(srcdir)/stamp-po +all-no: + +# Ensure that the gettext macros and this Makefile.in.in are in sync. +CHECK_MACRO_VERSION = \ + test "$(GETTEXT_MACRO_VERSION)" = "0.20" \ + || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version 0.20" 1>&2; \ + exit 1; \ + } + +# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no +# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because +# we don't want to bother translators with empty POT files). We assume that +# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty. +# In this case, $(srcdir)/stamp-po is a nop (i.e. a phony target). + +# $(srcdir)/stamp-po is a timestamp denoting the last time at which the CATALOGS +# have been loosely updated. Its purpose is that when a developer or translator +# checks out the package from a version control system, and the $(DOMAIN).pot +# file is not under version control, "make" will update the $(DOMAIN).pot and +# the $(CATALOGS), but subsequent invocations of "make" will do nothing. This +# timestamp would not be necessary if updating the $(CATALOGS) would always +# touch them; however, the rule for $(POFILES) has been designed to not touch +# files that don't need to be changed. +$(srcdir)/stamp-po: $(srcdir)/$(DOMAIN).pot + @$(CHECK_MACRO_VERSION) + test ! -f $(srcdir)/$(DOMAIN).pot || \ + test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) + @test ! -f $(srcdir)/$(DOMAIN).pot || { \ + echo "touch $(srcdir)/stamp-po" && \ + echo timestamp > $(srcdir)/stamp-poT && \ + mv $(srcdir)/stamp-poT $(srcdir)/stamp-po; \ + } + +# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', +# otherwise packages like GCC can not be built if only parts of the source +# have been downloaded. + +# This target rebuilds $(DOMAIN).pot; it is an expensive operation. +# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. +# The determination of whether the package xyz is a GNU one is based on the +# heuristic whether some file in the top level directory mentions "GNU xyz". +# If GNU 'find' is available, we avoid grepping through monster files. +$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed + package_gnu="$(PACKAGE_GNU)"; \ + test -n "$$package_gnu" || { \ + if { if (LC_ALL=C find --version) 2>/dev/null | grep GNU >/dev/null; then \ + LC_ALL=C find -L $(top_srcdir) -maxdepth 1 -type f -size -10000000c -exec grep -i 'GNU xchat' /dev/null '{}' ';' 2>/dev/null; \ + else \ + LC_ALL=C grep -i 'GNU xchat' $(top_srcdir)/* 2>/dev/null; \ + fi; \ + } | grep -v 'libtool:' >/dev/null; then \ + package_gnu=yes; \ + else \ + package_gnu=no; \ + fi; \ + }; \ + if test "$$package_gnu" = "yes"; then \ + package_prefix='GNU '; \ + else \ + package_prefix=''; \ + fi; \ + if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \ + msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \ + else \ + msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \ + fi; \ + case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \ + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' \ + --msgid-bugs-address="$$msgid_bugs_address" \ + $(XGETTEXT_OPTIONS) \ + ;; \ + *) \ + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' \ + --package-name="$${package_prefix}xchat" \ + --package-version='2.8.8' \ + --msgid-bugs-address="$$msgid_bugs_address" \ + $(XGETTEXT_OPTIONS) \ + ;; \ + esac + test ! -f $(DOMAIN).po || { \ + if test -f $(srcdir)/$(DOMAIN).pot-header; then \ + sed -e '1,/^#$$/d' < $(DOMAIN).po > $(DOMAIN).1po && \ + cat $(srcdir)/$(DOMAIN).pot-header $(DOMAIN).1po > $(DOMAIN).po && \ + rm -f $(DOMAIN).1po \ + || exit 1; \ + fi; \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ + sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ + if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ + else \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + else \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + } + +# This rule has no dependencies: we don't need to update $(DOMAIN).pot at +# every "make" invocation, only create it when it is missing. +# Only "make $(DOMAIN).pot-update" or "make dist" will force an update. +$(srcdir)/$(DOMAIN).pot: + $(MAKE) $(DOMAIN).pot-update + +# This target rebuilds a PO file if $(DOMAIN).pot has changed. +# Note that a PO file is not touched if it doesn't need to be changed. +$(POFILES): $(POFILESDEPS) + @test -f $(srcdir)/$(DOMAIN).pot || $(MAKE) $(srcdir)/$(DOMAIN).pot + @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ + if test -f "$(srcdir)/$${lang}.po"; then \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} --previous $${lang}.po $(DOMAIN).pot"; \ + cd $(srcdir) \ + && { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].*) \ + $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \ + 0.1[6-7] | 0.1[6-7].*) \ + $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --previous $${lang}.po $(DOMAIN).pot;; \ + *) \ + $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} --previous $${lang}.po $(DOMAIN).pot;; \ + esac; \ + }; \ + else \ + $(MAKE) $${lang}.po-create; \ + fi + + +install: install-exec install-data +install-exec: +install-data: install-data-yes + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + for file in $(DISTFILES.common) Makevars.template; do \ + $(INSTALL_DATA) $(srcdir)/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + for file in Makevars; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +install-data-no: all +install-data-yes: all + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkdir_p) $(DESTDIR)$$dir; \ + if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ + $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ + echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ + fi; \ + done; \ + done + +install-strip: install + +installdirs: installdirs-exec installdirs-data +installdirs-exec: +installdirs-data: installdirs-data-yes + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + else \ + : ; \ + fi +installdirs-data-no: +installdirs-data-yes: + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkdir_p) $(DESTDIR)$$dir; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + fi; \ + done; \ + done + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: uninstall-exec uninstall-data +uninstall-exec: +uninstall-data: uninstall-data-yes + if test "$(PACKAGE)" = "gettext-tools"; then \ + for file in $(DISTFILES.common) Makevars.template; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +uninstall-data-no: +uninstall-data-yes: + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + done; \ + done + +check: all + +info dvi ps pdf html tags TAGS ctags CTAGS ID: + +install-dvi install-ps install-pdf install-html: + +mostlyclean: + rm -f remove-potcdate.sed + rm -f $(srcdir)/stamp-poT + rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po + rm -fr *.o + +clean: mostlyclean + +distclean: clean + rm -f Makefile Makefile.in POTFILES + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + rm -f $(srcdir)/$(DOMAIN).pot $(srcdir)/stamp-po $(GMOFILES) + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: + test -z "$(DISTFILESDEPS)" || $(MAKE) $(DISTFILESDEPS) + @$(MAKE) dist2 +# This is a separate target because 'update-po' must be executed before. +dist2: $(srcdir)/stamp-po $(DISTFILES) + @dists="$(DISTFILES)"; \ + if test "$(PACKAGE)" = "gettext-tools"; then \ + dists="$$dists Makevars.template"; \ + fi; \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + dists="$$dists $(DOMAIN).pot stamp-po"; \ + else \ + case $(XGETTEXT) in \ + :) echo "Warning: Creating a tarball without '$(DOMAIN).pot', because a suitable 'xgettext' program was not found in PATH." 1>&2;; \ + *) echo "Warning: Creating a tarball without '$(DOMAIN).pot', because 'xgettext' found no strings to extract. Check the contents of the POTFILES.in file and the XGETTEXT_OPTIONS in the Makevars file." 1>&2;; \ + esac; \ + fi; \ + if test -f $(srcdir)/ChangeLog; then \ + dists="$$dists ChangeLog"; \ + fi; \ + for i in 0 1 2 3 4 5 6 7 8 9; do \ + if test -f $(srcdir)/ChangeLog.$$i; then \ + dists="$$dists ChangeLog.$$i"; \ + fi; \ + done; \ + if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ + for file in $$dists; do \ + if test -f $$file; then \ + cp -p $$file $(distdir) || exit 1; \ + else \ + cp -p $(srcdir)/$$file $(distdir) || exit 1; \ + fi; \ + done + +update-po: Makefile + $(MAKE) $(DOMAIN).pot-update + test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) + $(MAKE) update-gmo + +# General rule for creating PO files. + +.nop.po-create: + @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ + echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ + exit 1 + +# General rule for updating PO files. + +.nop.po-update: + @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ + if test "$(PACKAGE)" = "gettext-tools" && test "$(CROSS_COMPILING)" != "yes"; then PATH=`pwd`/../src:$$PATH; fi; \ + tmpdir=`pwd`; \ + echo "$$lang:"; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang --previous $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ + cd $(srcdir); \ + if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].*) \ + $(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ + 0.1[6-7] | 0.1[6-7].*) \ + $(MSGMERGE) $(MSGMERGE_OPTIONS) --previous -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ + *) \ + $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang --previous -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ + esac; \ + }; then \ + if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ + rm -f $$tmpdir/$$lang.new.po; \ + else \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "msgmerge for $$lang.po failed!" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi + +$(DUMMYPOFILES): + +update-gmo: Makefile $(GMOFILES) + @: + +# Recreate Makefile by invoking config.status. Explicitly invoke the shell, +# because execution permission bits may not work on the current file system. +# Use /bin/bash, which is the shell determined by autoconf for the use by its +# scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient. +Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@ + cd $(top_builddir) \ + && /bin/bash ./config.status $(subdir)/$@.in po-directories + +force: + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/etc/wyatt8740/po/Makefile.in.in b/etc/wyatt8740/po/Makefile.in.in new file mode 100644 index 0000000..6b25f0d --- /dev/null +++ b/etc/wyatt8740/po/Makefile.in.in @@ -0,0 +1,510 @@ +# Makefile for PO directory in any package using GNU gettext. +# Copyright (C) 1995-2000 Ulrich Drepper +# Copyright (C) 2000-2020 Free Software Foundation, Inc. +# +# Copying and distribution of this file, with or without modification, +# are permitted in any medium without royalty provided the copyright +# notice and this notice are preserved. This file is offered as-is, +# without any warranty. +# +# Origin: gettext-0.21 +GETTEXT_MACRO_VERSION = 0.20 + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + +SED = @SED@ +SHELL = /bin/sh +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +datarootdir = @datarootdir@ +datadir = @datadir@ +localedir = @localedir@ +gettextsrcdir = $(datadir)/gettext/po + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ + +# We use $(mkdir_p). +# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as +# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions, +# @install_sh@ does not start with $(SHELL), so we add it. +# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined +# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake +# versions, $(mkinstalldirs) and $(install_sh) are unused. +mkinstalldirs = $(SHELL) @install_sh@ -d +install_sh = $(SHELL) @install_sh@ +MKDIR_P = @MKDIR_P@ +mkdir_p = @mkdir_p@ + +# When building gettext-tools, we prefer to use the built programs +# rather than installed programs. However, we can't do that when we +# are cross compiling. +CROSS_COMPILING = @CROSS_COMPILING@ + +GMSGFMT_ = @GMSGFMT@ +GMSGFMT_no = @GMSGFMT@ +GMSGFMT_yes = @GMSGFMT_015@ +GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT)) +XGETTEXT_ = @XGETTEXT@ +XGETTEXT_no = @XGETTEXT@ +XGETTEXT_yes = @XGETTEXT_015@ +XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT)) +MSGMERGE = @MSGMERGE@ +MSGMERGE_UPDATE = @MSGMERGE@ --update +MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ +MSGINIT = msginit +MSGCONV = msgconv +MSGFILTER = msgfilter + +POFILES = @POFILES@ +GMOFILES = @GMOFILES@ +UPDATEPOFILES = @UPDATEPOFILES@ +DUMMYPOFILES = @DUMMYPOFILES@ +DISTFILES.common = Makefile.in.in remove-potcdate.sin \ +$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) +DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \ +$(POFILES) $(GMOFILES) \ +$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) + +POTFILES = \ + +CATALOGS = @CATALOGS@ + +POFILESDEPS_ = $(srcdir)/$(DOMAIN).pot +POFILESDEPS_yes = $(POFILESDEPS_) +POFILESDEPS_no = +POFILESDEPS = $(POFILESDEPS_$(PO_DEPENDS_ON_POT)) + +DISTFILESDEPS_ = update-po +DISTFILESDEPS_yes = $(DISTFILESDEPS_) +DISTFILESDEPS_no = +DISTFILESDEPS = $(DISTFILESDEPS_$(DIST_DEPENDS_ON_UPDATE_PO)) + +# Makevars gets inserted here. (Don't remove this line!) + +all: all-@USE_NLS@ + + +.SUFFIXES: +.SUFFIXES: .po .gmo .sed .sin .nop .po-create .po-update + +# The .pot file, stamp-po, .po files, and .gmo files appear in release tarballs. +# The GNU Coding Standards say in +# : +# "GNU distributions usually contain some files which are not source files +# ... . Since these files normally appear in the source directory, they +# should always appear in the source directory, not in the build directory. +# So Makefile rules to update them should put the updated files in the +# source directory." +# Therefore we put these files in the source directory, not the build directory. + +# During .po -> .gmo conversion, take into account the most recent changes to +# the .pot file. This eliminates the need to update the .po files when the +# .pot file has changed, which would be troublesome if the .po files are put +# under version control. +$(GMOFILES): $(srcdir)/$(DOMAIN).pot +.po.gmo: + @lang=`echo $* | sed -e 's,.*/,,'`; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}rm -f $${lang}.gmo && $(MSGMERGE) $(MSGMERGE_FOR_MSGFMT_OPTION) -o $${lang}.1po $${lang}.po $(DOMAIN).pot && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.1po && rm -f $${lang}.1po"; \ + cd $(srcdir) && \ + rm -f $${lang}.gmo && \ + $(MSGMERGE) $(MSGMERGE_FOR_MSGFMT_OPTION) -o $${lang}.1po $${lang}.po $(DOMAIN).pot && \ + $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.1po && \ + mv t-$${lang}.gmo $${lang}.gmo && \ + rm -f $${lang}.1po + +.sin.sed: + sed -e '/^#/d' $< > t-$@ + mv t-$@ $@ + + +all-yes: $(srcdir)/stamp-po +all-no: + +# Ensure that the gettext macros and this Makefile.in.in are in sync. +CHECK_MACRO_VERSION = \ + test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \ + || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \ + exit 1; \ + } + +# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no +# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because +# we don't want to bother translators with empty POT files). We assume that +# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty. +# In this case, $(srcdir)/stamp-po is a nop (i.e. a phony target). + +# $(srcdir)/stamp-po is a timestamp denoting the last time at which the CATALOGS +# have been loosely updated. Its purpose is that when a developer or translator +# checks out the package from a version control system, and the $(DOMAIN).pot +# file is not under version control, "make" will update the $(DOMAIN).pot and +# the $(CATALOGS), but subsequent invocations of "make" will do nothing. This +# timestamp would not be necessary if updating the $(CATALOGS) would always +# touch them; however, the rule for $(POFILES) has been designed to not touch +# files that don't need to be changed. +$(srcdir)/stamp-po: $(srcdir)/$(DOMAIN).pot + @$(CHECK_MACRO_VERSION) + test ! -f $(srcdir)/$(DOMAIN).pot || \ + test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) + @test ! -f $(srcdir)/$(DOMAIN).pot || { \ + echo "touch $(srcdir)/stamp-po" && \ + echo timestamp > $(srcdir)/stamp-poT && \ + mv $(srcdir)/stamp-poT $(srcdir)/stamp-po; \ + } + +# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', +# otherwise packages like GCC can not be built if only parts of the source +# have been downloaded. + +# This target rebuilds $(DOMAIN).pot; it is an expensive operation. +# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. +# The determination of whether the package xyz is a GNU one is based on the +# heuristic whether some file in the top level directory mentions "GNU xyz". +# If GNU 'find' is available, we avoid grepping through monster files. +$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed + package_gnu="$(PACKAGE_GNU)"; \ + test -n "$$package_gnu" || { \ + if { if (LC_ALL=C find --version) 2>/dev/null | grep GNU >/dev/null; then \ + LC_ALL=C find -L $(top_srcdir) -maxdepth 1 -type f -size -10000000c -exec grep -i 'GNU @PACKAGE@' /dev/null '{}' ';' 2>/dev/null; \ + else \ + LC_ALL=C grep -i 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null; \ + fi; \ + } | grep -v 'libtool:' >/dev/null; then \ + package_gnu=yes; \ + else \ + package_gnu=no; \ + fi; \ + }; \ + if test "$$package_gnu" = "yes"; then \ + package_prefix='GNU '; \ + else \ + package_prefix=''; \ + fi; \ + if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \ + msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \ + else \ + msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \ + fi; \ + case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \ + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' \ + --msgid-bugs-address="$$msgid_bugs_address" \ + $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ + ;; \ + *) \ + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' \ + --package-name="$${package_prefix}@PACKAGE@" \ + --package-version='@VERSION@' \ + --msgid-bugs-address="$$msgid_bugs_address" \ + $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ + ;; \ + esac + test ! -f $(DOMAIN).po || { \ + if test -f $(srcdir)/$(DOMAIN).pot-header; then \ + sed -e '1,/^#$$/d' < $(DOMAIN).po > $(DOMAIN).1po && \ + cat $(srcdir)/$(DOMAIN).pot-header $(DOMAIN).1po > $(DOMAIN).po && \ + rm -f $(DOMAIN).1po \ + || exit 1; \ + fi; \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ + sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ + if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ + else \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + else \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + } + +# This rule has no dependencies: we don't need to update $(DOMAIN).pot at +# every "make" invocation, only create it when it is missing. +# Only "make $(DOMAIN).pot-update" or "make dist" will force an update. +$(srcdir)/$(DOMAIN).pot: + $(MAKE) $(DOMAIN).pot-update + +# This target rebuilds a PO file if $(DOMAIN).pot has changed. +# Note that a PO file is not touched if it doesn't need to be changed. +$(POFILES): $(POFILESDEPS) + @test -f $(srcdir)/$(DOMAIN).pot || $(MAKE) $(srcdir)/$(DOMAIN).pot + @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ + if test -f "$(srcdir)/$${lang}.po"; then \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} --previous $${lang}.po $(DOMAIN).pot"; \ + cd $(srcdir) \ + && { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].*) \ + $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \ + 0.1[6-7] | 0.1[6-7].*) \ + $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --previous $${lang}.po $(DOMAIN).pot;; \ + *) \ + $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} --previous $${lang}.po $(DOMAIN).pot;; \ + esac; \ + }; \ + else \ + $(MAKE) $${lang}.po-create; \ + fi + + +install: install-exec install-data +install-exec: +install-data: install-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + for file in $(DISTFILES.common) Makevars.template; do \ + $(INSTALL_DATA) $(srcdir)/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + for file in Makevars; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +install-data-no: all +install-data-yes: all + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkdir_p) $(DESTDIR)$$dir; \ + if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ + $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ + echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ + fi; \ + done; \ + done + +install-strip: install + +installdirs: installdirs-exec installdirs-data +installdirs-exec: +installdirs-data: installdirs-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + else \ + : ; \ + fi +installdirs-data-no: +installdirs-data-yes: + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkdir_p) $(DESTDIR)$$dir; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + fi; \ + done; \ + done + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: uninstall-exec uninstall-data +uninstall-exec: +uninstall-data: uninstall-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + for file in $(DISTFILES.common) Makevars.template; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +uninstall-data-no: +uninstall-data-yes: + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + done; \ + done + +check: all + +info dvi ps pdf html tags TAGS ctags CTAGS ID: + +install-dvi install-ps install-pdf install-html: + +mostlyclean: + rm -f remove-potcdate.sed + rm -f $(srcdir)/stamp-poT + rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po + rm -fr *.o + +clean: mostlyclean + +distclean: clean + rm -f Makefile Makefile.in POTFILES + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + rm -f $(srcdir)/$(DOMAIN).pot $(srcdir)/stamp-po $(GMOFILES) + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: + test -z "$(DISTFILESDEPS)" || $(MAKE) $(DISTFILESDEPS) + @$(MAKE) dist2 +# This is a separate target because 'update-po' must be executed before. +dist2: $(srcdir)/stamp-po $(DISTFILES) + @dists="$(DISTFILES)"; \ + if test "$(PACKAGE)" = "gettext-tools"; then \ + dists="$$dists Makevars.template"; \ + fi; \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + dists="$$dists $(DOMAIN).pot stamp-po"; \ + else \ + case $(XGETTEXT) in \ + :) echo "Warning: Creating a tarball without '$(DOMAIN).pot', because a suitable 'xgettext' program was not found in PATH." 1>&2;; \ + *) echo "Warning: Creating a tarball without '$(DOMAIN).pot', because 'xgettext' found no strings to extract. Check the contents of the POTFILES.in file and the XGETTEXT_OPTIONS in the Makevars file." 1>&2;; \ + esac; \ + fi; \ + if test -f $(srcdir)/ChangeLog; then \ + dists="$$dists ChangeLog"; \ + fi; \ + for i in 0 1 2 3 4 5 6 7 8 9; do \ + if test -f $(srcdir)/ChangeLog.$$i; then \ + dists="$$dists ChangeLog.$$i"; \ + fi; \ + done; \ + if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ + for file in $$dists; do \ + if test -f $$file; then \ + cp -p $$file $(distdir) || exit 1; \ + else \ + cp -p $(srcdir)/$$file $(distdir) || exit 1; \ + fi; \ + done + +update-po: Makefile + $(MAKE) $(DOMAIN).pot-update + test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) + $(MAKE) update-gmo + +# General rule for creating PO files. + +.nop.po-create: + @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ + echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ + exit 1 + +# General rule for updating PO files. + +.nop.po-update: + @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ + if test "$(PACKAGE)" = "gettext-tools" && test "$(CROSS_COMPILING)" != "yes"; then PATH=`pwd`/../src:$$PATH; fi; \ + tmpdir=`pwd`; \ + echo "$$lang:"; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang --previous $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ + cd $(srcdir); \ + if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].*) \ + $(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ + 0.1[6-7] | 0.1[6-7].*) \ + $(MSGMERGE) $(MSGMERGE_OPTIONS) --previous -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ + *) \ + $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang --previous -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ + esac; \ + }; then \ + if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ + rm -f $$tmpdir/$$lang.new.po; \ + else \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "msgmerge for $$lang.po failed!" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi + +$(DUMMYPOFILES): + +update-gmo: Makefile $(GMOFILES) + @: + +# Recreate Makefile by invoking config.status. Explicitly invoke the shell, +# because execution permission bits may not work on the current file system. +# Use @SHELL@, which is the shell determined by autoconf for the use by its +# scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient. +Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@ + cd $(top_builddir) \ + && @SHELL@ ./config.status $(subdir)/$@.in po-directories + +force: + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/etc/wyatt8740/po/Makevars b/etc/wyatt8740/po/Makevars new file mode 100644 index 0000000..03841d0 --- /dev/null +++ b/etc/wyatt8740/po/Makevars @@ -0,0 +1,23 @@ +DOMAIN = $(PACKAGE) +subdir = po +top_builddir = .. +XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ +COPYRIGHT_HOLDER = +PACKAGE_GNU = no +MSGID_BUGS_ADDRESS = www.xchat.org +EXTRA_LOCALE_CATEGORIES = +USE_MSGCTXT = no +MSGMERGE_OPTIONS = +MSGINIT_OPTIONS = + +# This tells whether or not to regenerate a PO file when $(DOMAIN).pot +# has changed. Possible values are "yes" and "no". Set this to no if +# the POT file is checked in the repository and the version control +# program ignores timestamps. +PO_DEPENDS_ON_POT = no + +# This tells whether or not to forcibly update $(DOMAIN).pot and +# regenerate PO files on "make dist". Possible values are "yes" and +# "no". Set this to no if the POT file and PO files are maintained +# externally. +DIST_DEPENDS_ON_UPDATE_PO = yes diff --git a/etc/wyatt8740/po/POTFILES.in b/etc/wyatt8740/po/POTFILES.in new file mode 100644 index 0000000..f0f06df --- /dev/null +++ b/etc/wyatt8740/po/POTFILES.in @@ -0,0 +1,37 @@ +src/common/cfgfiles.c +src/common/dcc.c +src/common/ignore.c +src/common/notify.c +src/common/outbound.c +src/common/plugin.c +src/common/server.c +src/common/servlist.c +src/common/textevents.h +src/common/text.c +src/common/util.c +src/common/xchat.c +src/common/dbus/dbus-client.c +src/common/dbus/dbus-plugin.c +src/fe-gtk/about.c +src/fe-gtk/ascii.c +src/fe-gtk/banlist.c +src/fe-gtk/chanlist.c +src/fe-gtk/dccgui.c +src/fe-gtk/editlist.c +src/fe-gtk/fe-gtk.c +src/fe-gtk/fkeys.c +src/fe-gtk/gtkutil.c +src/fe-gtk/ignoregui.c +src/fe-gtk/joind.c +src/fe-gtk/maingui.c +src/fe-gtk/menu.c +src/fe-gtk/notifygui.c +src/fe-gtk/plugin-tray.c +src/fe-gtk/plugingui.c +src/fe-gtk/rawlog.c +src/fe-gtk/search.c +src/fe-gtk/servlistgui.c +src/fe-gtk/setup.c +src/fe-gtk/textgui.c +src/fe-gtk/urlgrab.c +src/fe-gtk/userlistgui.c diff --git a/etc/wyatt8740/po/be.po b/etc/wyatt8740/po/be.po new file mode 100644 index 0000000..6fb6ceb --- /dev/null +++ b/etc/wyatt8740/po/be.po @@ -0,0 +1,5682 @@ +# translation of xchat-2.8.1.po to Belarusian +# This file is put in the public domain. +# Pavel Piatruk , 2006, 2007. +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.8.1\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2007-05-23 12:27+0300\n" +"Last-Translator: Pavel Piatruk \n" +"Language-Team: Belarusian \n" +"Language: be\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.10.2\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Не магу стварыць ~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Я заняты" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Выходжу" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* Выконваць IRC з-пад root'a - глупства.\n" +" Вы павінны стварыць карыстальніцкі\n" +" рахунак у сістэме і ўжываць яго\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Чаканне" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Актыўны" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Памылка" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Выканана" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Злучэнне" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Перарвана" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "Няма доступу да %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Памылка" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s прапануе \"%s\". Вы згодны?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Няма актыўных каналаў данніх (DCC)\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "Так " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "Не " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Вас затапліваюць CTCP запытамі з %s, %s ігнаруецца\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "Вас затапліваюць паведамленнямі з %s, аўтадыялог адключаны\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s у сеціве\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s адключаны\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #\n" +msgstr "Не зайшлі на канал. Паспрабуйце /join #\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server []\n" +msgstr "Няма злучэння. Паспрабуйце /server <вузел> [<порт>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Ужо пазначаны адышэдшым: %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "Ужо пазначаны вярнуўшымся.\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "Для запуску патрэбна праграма /bin/sh !\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Даступныя каманды:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Вызначаныя карыстальнікам каманды:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Вызначаныя плагінам каманды:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP for more information, or /HELP -l" +msgstr "Набярыце /HELP <каманда> для даведкі ці /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Невядомы аргумент '%s' праігнараваны." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "Плагін не знойдзены.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Гэты плагін немагчыма выгрузіць.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON , adds a button under the user-list" +msgstr "ADDBUTTON <імя> <дзеянне>, дадае кнопку пад спісам карыстальнікаў" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN , sends a command to all channels you're in" +msgstr "ALLCHAN <каманда>, дасылае каманду на ўсе каналы, куды вы зайшлі" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL , sends a command to all channels you're in" +msgstr "ALLCHANL <каманда>, дасылае каманду на ўсе каналы, куды вы зайшлі" + +#: src/common/outbound.c:3501 +msgid "ALLSERV , sends a command to all servers you're in" +msgstr "ALLSERV <каманда>, дасылае каманду на ўсе серверы, з якімі вы злучаны" + +#: src/common/outbound.c:3502 +msgid "AWAY [], sets you away" +msgstr "AWAY [<прычына>], усталяваць статус \"адыйшоў\"" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "BACK, пазначае вас вярнуўшымся (не адышэдшым)" + +#: src/common/outbound.c:3505 +msgid "" +"BAN [], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <маска> [<тыпзабароны>], забараняе доступ да канала кожнаму, хто " +"адпавядае маске. Калі гэткія карыстальнікі ўжо на канале, яны не будуць " +"выпхнутыя. (Трэба правы аператара)" + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] []" +msgstr "SET [-e] [-quiet] <пераменная> [<значэнне>]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "CLEAR, Ачышчае бягучае тэкставае акно або гісторыю каманд" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, Закрывае бягучае акно ці ўкладку" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] , finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <код|маска>, шукае код краіны, напрыклад: au = australia" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP , send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <мянушка> <паведамленне>, дасылае мянушцы CTCP-паведамленне, напрыклад, " +"VERSION ці USERINFO" + +#: src/common/outbound.c:3516 +#, fuzzy +msgid "" +"CYCLE [], parts the current or given channel and immediately rejoins" +msgstr "CYCLE, выйсці з бягучага канала і адразу зайсці зноў" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET - accept an offered file\n" +"DCC SEND [-maxcps=#] [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT - offer DCC CHAT to someone\n" +"DCC PCHAT - offer DCC CHAT using passive mode\n" +"DCC CLOSE example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <мянушка> - дазволіць прапанаваны файл\n" +"DCC SEND [-maxcps=#] <мянушка> [файл] - даслаць файл камусьці\n" +"DCC PSEND [-maxcps=#] <мянушка> [файл] - даслаць файл у пасіўным рэжыме\n" +"DCC LIST - паказаць спіс DCC\n" +"DCC CHAT <мянушка> - прапанаваць DCC CHAT камусьці\n" +"DCC PCHAT <мянушка> - прапанаваць DCC CHAT у пасіўным " +"рэжыме\n" +"DCC CLOSE <тып> <мянушка> <файл> напрыклад:\n" +" /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP , removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <мянушка>, выдаляе статус паўаператара ў мянушкі на бягучым канале " +"(патрэбен статус аператара)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON , deletes a button from under the user-list" +msgstr "DELBUTTON <імя>, выдаляе кнопку пад спісам карыстальнікаў" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP , removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <мянушка>, выдаляе статус аператара ў мянушкі на бягучым канале " +"(патрэбен статус аператара)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE , removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <мянушка>, выдаляе права голасу ў мянушкі на бягучым канале " +"(патрэбен статус аператара)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, Адлучыцца ад сервера" + +#: src/common/outbound.c:3538 +msgid "DNS , Finds a users IP number" +msgstr "DNS <мянушка|вузел|ip>, Знайсці IP-адрас карыстальніка" + +#: src/common/outbound.c:3539 +msgid "ECHO , Prints text locally" +msgstr "ECHO <тэкст>, Выводзіць тэкст на лакальнай машыне" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] , runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <каманда>, запускае каманду. Калі ўжыты параметр -o, вывад будзе " +"дасланы ў бягучы канал, інакш у бягучае тэкставае акно" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, дасылае працэсу сігнал SIGCONT" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], забівае выконваючуюся каманду ў бягучай сесіі. Калі адзначаны " +"флаг -9, працэсу дасылается сігнал SIGKILL" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, дасылае працэсу сігнал SIGSTOP" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, дасылае данні на стандартны ўваход працэса (stdin)" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, скінуць чаргу дасылкі на бягучы сервер" + +#: src/common/outbound.c:3556 +msgid "GATE [], proxies through a host, port defaults to 23" +msgstr "GATE <вузел> [<порт>], далучыцца праз вузел, прадвызначаны порт 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST [password], Kills a ghosted nickname" +msgstr "GHOST <мянушка> <пароль>, Выпхнуць з канала карыстальніка-здань" + +#: src/common/outbound.c:3565 +msgid "HOP , gives chanhalf-op status to the nick (needs chanop)" +msgstr "" +"HOP <мянушка>, даць правы паў-аператара карыстальніку (патрэбна мець правы " +"аператара)" + +#: src/common/outbound.c:3566 +msgid "ID , identifies yourself to nickserv" +msgstr "ID <пароль>, ідэнтыфікаваць сябе nickserv" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE \n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <маска> <тыпы..> <уласцівасці..>\n" +" маска - маска для ігнаравання, напрыклад: *!*@*.aol.com\n" +" тыпы - тыпы дадзеных для ігнаравання:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" уласцівасці - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE [], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <мянушка> [<канал>], запрасіць кагосьці на канал, калі назва канала " +"не пазначана - на бягучы канал (патрэбен статус аператара)" + +#: src/common/outbound.c:3576 +msgid "JOIN , joins the channel" +msgstr "JOIN <канал>, увайсці на канал" + +#: src/common/outbound.c:3578 +msgid "KICK , kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <мянушка>, выпхнуць карыстальніка з бягучага канала (патрэбен статус " +"аператара)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN , bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <мянушка>, забараняе, а потым выпіхвае карыстальніка з бягучага " +"канала (патрэбен статус аператара)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, выканаць праверку сігнала" + +#: src/common/outbound.c:3585 +msgid "LASTLOG , searches for a string in the buffer" +msgstr "LASTLOG <радок>, знайсці радок у буферы" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] , loads a plugin or script" +msgstr "LOAD [-e] <файл>, загрузіць плагін ці скрыпт" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, Адабраць паў-аператара ва ўсіх карыстальнікаў бягучага канала " +"(патрэбен статус аператара)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, Адабраць аператара ва ўсіх карыстальнікаў бягучага канала (патрабуе " +"статус аператара)" + +#: src/common/outbound.c:3594 +msgid "" +"ME , sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <дзеянне>, дасылае дзеянне на бягучы канал (дзеянні пішуцца ад трэцяй " +"асобы, напрыклад, /me скача)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, Выпхнуць усіх карыстальнікаў з бягучага канала, акрамя вас (патрэбен " +"статус аператара)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, Надаць усім карыстальнікам бягучага канала статус аператара (патрэбен " +"статус аператара)" + +#: src/common/outbound.c:3602 +msgid "MSG , sends a private message" +msgstr "MSG <мянушка> <паведамленне>, дасылае асабістае паведамленне" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, Пералічыць мянушкі карыстальнікаў на бягучым канале" + +#: src/common/outbound.c:3607 +msgid "NCTCP , Sends a CTCP notice" +msgstr "NCTCP <мянушка> <паведамленне>, Дасылае CTCP-абвяшчэнне" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] []" +msgstr "NEWSERVER [-noconnect] []" + +#: src/common/outbound.c:3609 +msgid "NICK , sets your nick" +msgstr "NICK <мянушка>, змяняе вашую мянушку" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE , sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <мянушка/канал> <паведамленне>, дасылае абвяшчэнне. Абвяшчэнні гэта " +"тып паведамленняў, на якія трэба аўтаматычна рэагаваць" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n сеціва1[,сеціва2]] [<мянушка>], пералічвае ваш спіс абвяшчэнняў " +"ці дадае некага ў яго" + +#: src/common/outbound.c:3616 +msgid "OP , gives chanop status to the nick (needs chanop)" +msgstr "" +"OP , дае мянушцы статус аператара канала (патрэбен статус аператара)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [] [], leaves the channel, by default the current one" +msgstr "" +"PART [<канал>] [<прычына>], выйсці з канала, калі канал не вызначаны, то з " +"бягучага" + +#: src/common/outbound.c:3620 +msgid "PING , CTCP pings nick or channel" +msgstr "PING <мянушка | канал>, CTCP пінг мянушкі ці канала" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] , opens up a new privmsg window to someone" +msgstr "QUERY [-nofocus] <мянушка>, адкрывае дыялог для асабістай размовы" + +#: src/common/outbound.c:3624 +msgid "QUIT [], disconnects from the current server" +msgstr "QUIT [<прычына>], адлучыцца ад бягучага сервера" + +#: src/common/outbound.c:3626 +msgid "QUOTE , sends the text in raw form to the server" +msgstr "QUOTE <тэкст>, даслаць тэкст у неапрацованай форме да сервера" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [] [] [], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<вузел>] [<порт>] [<пароль>], Можа быць выклікана як /" +"RECONNECT для перадалучэння да бягучага сервера ці /RECONNECT ALL для " +"перадалучэння да ўсіх адкрытых сервераў" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [] [] [], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [-ssl] [<вузел>] [<порт>] [<пароль>], Можа быць выклікана як /" +"RECONNECT для перадалучэння да бягучага сервера ці /RECONNECT ALL для " +"перадалучэння да ўсіх адкрытых сервераў" + +#: src/common/outbound.c:3634 +msgid "" +"RECV , send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <>, дасылае неапрацованыя дадзеныя xchat, як яны былі атрыманы з IRC-" +"сервера" + +#: src/common/outbound.c:3637 +msgid "SAY , sends the text to the object in the current window" +msgstr "SAY <тэкст>, дасылае тэкст аб'екту ў бягучым акне" + +#: src/common/outbound.c:3638 +msgid "SEND []" +msgstr "SEND []" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] , connects and joins a channel" +msgstr "SERVCHAN [-ssl] <вузел> <порт> <канал>, злучыцца і ўвайсці на канал" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN , connects and joins a channel" +msgstr "SERVCHAN <вузел> <порт> <канал>, злучыцца і ўвайсці на канал" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] [] [], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <вузел> [<порт>] [<пароль>], злучыцца з серверам, " +"прадвызначаны порт 6667, для звычайнай сувязі і 9999 для ssl-злучэнняў" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER [] [], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <вузел> [<порт>] [<пароль>], злучыцца з серверам, прадвызначаны порт " +"6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] []" +msgstr "SET [-e] [-quiet] <пераменная> [<значэнне>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]" +msgstr "SETCURSOR [-|+]<пазіцыя>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<тэма>], усталяваць тэму, калі яна вызначана, інакш вывесці бягучую " +"тэму" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f [] Blink tray between two icons.\n" +"TRAY -f Set tray to a fixed icon.\n" +"TRAY -i Blink tray with an internal icon.\n" +"TRAY -t Set the tray tooltip.\n" +"TRAY -b <text> Set the tray balloon." +msgstr "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Мірганне ў сподку між двума значкамі.\n" +"TRAY -f <filename> Замацаваць значку ў сподкавым элеменце.\n" +"TRAY -i <number> Мірганне ў сподку ўнутранай значкай.\n" +"TRAY -t <text> Усталяваць тэкст сподкавага элемента.\n" +"TRAY -b <title> <text> Усталяваць выплыўны тэкст сподкавага " +"элемента." + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <маска> [<маска>...], зняць забарону з вызначаных масак." + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <mask> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <імя>, выгрузіць плагін ці скрыпт" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, адкрыць URL у вашым браўзеры" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <мянушка1> <мянушка2> і г.д., падсвечваць вызначаную(ыя) " +"мянушку(і) ў спісе карыстальнікаў" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "" +"VOICE <мянушка>, даць голас камусьці (патрэбен статус аператара канала)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <паведамленне>, напісаць паведамленне ва ўсіх каналах" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <паведамленне>, даслаць паведамленне ўсім аператарам бягучага канала" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Карыстанне: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"Ніякай даведкі не існуе для гэтай каманды.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Няма гэткай каманды.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Дрэнныя аргументы карыстальніцкай каманды.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Зашмат рэкурсіўных падкаманд, перарываюся." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Невядомая каманда. Паспрабуйце /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "Няма сімвала xchat_plugin_init; ці гэта сапраўды плагін Xchat?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Ці вы ўпэўнены, што гэта сумяшчальны з SSL сервер і порт?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Немагчыма знайсці імя %s\n" +"Праверце вашыя наладкі IP!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Не атрымліваецца злучыцца з проксі.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Спрабую іншы сервер %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Увага: \"%s\" знаказбор невядомы. Ніякага пераўтварэння знакаў для сеціва %s " +"не будзе." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 дададзены ў спіс абвяшчэнняў." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Спіс забароненых:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tНемагчыма ўвайсці на%C26 %B$1 %O(Вы пад забаронаю)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 вядомы як $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 выставіў забарону на $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tКанал $1 створаны на $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O адабраў статус паў-аператара канала ў%C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O адабраў статус аператара канала ў%C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O адабраў голас у%C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 усталяваў выключэнне на $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O даў статус паў-аператара канала%C26 $2" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 усталяваў запрашэнне на $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UКанал Карыст. Тэма" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 усталяваў рэжым $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Рэжымы канала $1: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O даў статус аператара канала %C26 $2" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 выдаліў выключэнне на $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 выдаліў запрашэнне на $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 выдаліў ключавое слова канала" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 выдаліў абмежаванне карыстальніка" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 усталяваў ключавое слова канала: $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 усталяваў абмежаванне канала ў $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 выдаліў забарону на $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O даў голас%C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Злучана. Уваход..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22Злучэнне з $1 ($2), порт $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "Злучэнне не атрымалася. Памылка: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tАтрымана CTCP $1 ад $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tАтрымана CTCP $1 ад $2 (да $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tАтрыманы CTCP-гук $1 ад $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tАтрыманы CTCP-гук $1 ад $2 (да $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tDCC CHAT з %C26$1%O перарвана." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC CHAT злучэнне ўсталявана з %C26$1 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tDCC CHAT з %C26$1%O страчана ($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tАтрымана прапанова DCC CHAT ад $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tПрапануецца DCC CHAT $1" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tУжо прапануецца CHAT to $1" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$tDCC $1 спроба злучэння з%C26 $2%O не ўдалася (err=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tАтрымана '$1%O' ад $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 Тып Да/Ад Статус Памер Паз Файл " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O." +"%010%C22*%O$tContents of packet: $2" +msgstr "" +"%C22*%O$tАтрыманы няправільны DCC запыт ад %C26$1%O.%010%C22*%O$tЗмест " +"пакета: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tПрапанова%C26 $1%O да%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tНяма гэткай прапановы DCC." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV%C26 $2%O да%C26 $1%O перарвана." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC RECV%C26 $1%O ад%C26 $3%O завершана %C30[%C26$4%O cps%C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC RECV злучэнне ўсталявана з%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV%C26 $1%O з%C26 $3%O не атрымалася ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV: Немагчыма адкрыць $1 для запісу ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "%C22*%O$tФайл%C26 $1%C ужо існуе, захоўваю як %C26 $2%O." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Oзапытаў працяг%C26 $2 %Cз%C26 $3%C." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC SEND%C26 $2%O да%C26 $1%O перарвана." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC SEND%C26 $1%O з%C26 $2%O завершана %C30[%C26$3%O cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC SEND злучэнне ўсталявана з %C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND%C26 $1%O да%C26 $2%O не атрымалася. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Oпрапанаваў%C26 $2 %O(%C26$3 %Oбайтаў)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oда%C26 $3 %C перарвана: страчана хуткасць." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oда%C26 $3 %O перарвана: выйшаў час." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 выдалены са спіса абвяшчэнняў" + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tЗлучэнне страчана ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tЗнойдзены ваш IP: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O дададзены ў спіс ігнараванняў." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "Ігнараванне %C26$1%O зменена." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 Маска вузла PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O выдалены са спісу ігнараванняў." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " Спіс ігнараванняў пусты." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "" +"%C22*%O$tНемагчыма ўвайсці на%C26 %B$1 %O(Уваход толькі па запрашэннях)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tВы былі запрошаны на%C26 $1%O by%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) увайшоў на $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$tНемагчыма увайсці на%C26 %B$1 %O(Патрэбна ключавое слова)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 выпхнуў $2 з $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$t $1 выпхнуў вас ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22\"Паведамленне дня\" прапушчана." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 ужо выкарыстоўваецца. Спрабую $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$tМянушка ўжо кімсьці выкарыстоўваецца. Паспрабуйце каманду /NICK для " +"выбару іншай." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tНяма гэткага DCC." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tЗараз няма працуючых працэсаў" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tСпіс абвяшчэнняў пусты." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Спіс абвяшчэнняў " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 карыстальнікаў у спісе абвяшчэнняў." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tАбвяшчэнне: $1 адключыўся ($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tАбвяшчэнне: $1 падключыўся ($3)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) выйшаў з $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) выйшаў з $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tАдказ на пінг ад $1: $2 сек" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tНе атрымана адказаў на пінг на працягу $1 сек, разлучаемся." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tПрацэс ужо запушчаны" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 зыйшоў (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 усталяваў рэжым%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tШукаецца нумар IP %C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22Злучана." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22Шукаецца $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tСпынена папярэдняя спроба злучэння (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29Тэма для $1%C %C29: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 змяніў тэму на: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29Тэма для $1%C %C29усталявана $2%C %C29у $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tНевядомы хост. Магчыма, вы памыліліся?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "" +"%C22*%O$tНемагчыма ўвасці на %C26 %B$1 %O(Дасягнута карыстальніцкае " +"абмежаванне)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Карыстальнікі на $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cадыйшоў %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OКанец спіса WHOIS." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O без дзеянняў%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O бяздзейны%C26 $2%O, увайшоў:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" +"%C22*%O$t%C28[%O$1%C28] %Oсапраўдны user@host%C27 $2%O, сапраўдны IP%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Размаўляем на $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$t$3 выпхнуў вас з $2 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tВы выйшлі з канала $3" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tВы выйшлі з канала $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tВы запрошаны %C26 $1%O на %C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tЦяпер вы вядомы як $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** КАНЕЦ УВАХОДУ НА %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** ПАЧАТАК УВАХОДУ НА %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Немагчыма адкрыць лог-файл(ы) для запісу. Праверце\n" +" правы на %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Левае паведамленне" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Правае паведамленне" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "Мянушка ўваходзячай асобы" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "Канал для ўваходу" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "Хост гэтай асобы" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Мянушка" + +#: src/common/text.c:973 +msgid "The action" +msgstr "Дзеянне" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Знак рэжыму" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Вылучаны тэкст" + +#: src/common/text.c:980 +msgid "The text" +msgstr "Тэкст" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Паведамленне" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Старая мянушка" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Новая мянушка" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Мянушка асобы, якая змяніла тэму" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Тэма" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Канал" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "Мянушка асобы, якая выпхнула вас" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "Асоба, якую выпхнулі" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "Канал" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "Прычына" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "Мянушка асобы, што выходзіць" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "Час" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "Стваральнік" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Мянушка" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Прычына" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Хост" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "Адкуль" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "Час у фармаце x.x (глядзі ніжэй)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "Спіс каналаў" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "Гук" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "Мянушка гэтай асобы" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "CTCP падзея" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "Мянушка асобы, якая ўсталявала ключ" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "Ключ" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "Мянушка асобы, якая ўсталявала абмежаванне" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "Абмежаванне" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "Мянушка асобы, якая дала статус аператара" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "Мянушка асобы, якая атрымала статус аператара" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "Мянушка асобы, якая атрымала статус паў-аператара" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "Мянушка асобы, якая дала статус паў-аператара" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "Мянушка асобы, якая дала голас" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "Мянушка асобы, якая атрымала голас" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "Мянушка асобы, якая ўсталявала забарону" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "Маска забароны" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "Мянушка, якая выдаліла ключ" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "Мянушка, якая выдаліла абмежаванне" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "Мянушка асобы, якая адабрала статус аператара" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "Мянушка асобы, у якой быў адабраны статус аператара" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "Мянушка асобы, якая адабрала статус паў-аператара" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Мянушка асобы, у якой быў адабраны статус паў-аператара" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "Мянушка асобы, якая адабрала голас" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "Мянушка асобы, у якой быў адабраны голас" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "Мянушка асобы, якая зняла забарону" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "Мянушка асобы, якая ўсталявала выключэнне" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "Маска выключэння" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "Мянушка асобы, якая выдаліла выключэнне" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "Мянушка асобы, якая зрабіла запрашэнне" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "Маска запрашэння" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "Мянушка асобы, якая выдаліла запрашэнне" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "Мянушка асобы, якая ўсталявала рэжым" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "Знак рэжыму (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "Сімвал рэжыму" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "Канал для ўжыцця" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Імя карыстальніка" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Поўнае імя" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Член канала /\"аператар IRC\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Інфармацыя аб серверы" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Час бяздзеяння" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Час з уваходу" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Прычына адыходу" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Паведамленне" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Рахунак" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "Сапраўдны user@host" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "Сапраўдны IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Назва канала" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Тэкст" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Назва сервера" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Мянушка асобы, якая запрасіла вас" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Карыстальнікі" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Мянушка выкарыстоўваецца" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Спрабуемая мянушка" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Порт" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Сеціва" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Радок рэжымаў" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "IP адрас" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "Тып DCC" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Імя файла" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Назва файла ў атрымальніка" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS(знакаў у секунду)" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Шлях" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Пазіцыя" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Памер" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "Радок DCC" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Колькасць абвяшчэнняў" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Старое імя файла" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Новае імя файла" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Атрымальнік" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Маска камп'ютэра" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Назва камп'ютэра" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "Пакет" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Секунды" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Мянушка запрошанай асобы" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Маска забароны" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Хто ўсталяваў забарону" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Час забароны" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Памылка апрацоўкі падзеі %s.\n" +"Ужываем стандартныя паводзіны." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"Немагчыма прачытаць гукавы файл:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "Аддалены вузел закрыў сокет" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "У злучэнні адмоўлена" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Няма шляху да вузла" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Час злучэння выйшаў" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Немагчыма ўжыць гэта адрас" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Злучэнне пераўсталяваны тым бокам" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Узнясення астравы" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Андора" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Злучаныя Арабскія Эміраты" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Аўганістан" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Антыгуа і Барбуда" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Ангілья" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Албанія" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Арменія" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Нідэрландскія Антылы" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Ангола" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Антарктыка" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Аргентына" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "Адваротны DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Амерыканскае Самоа" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Аўстрыя" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "НАТО Фэйл" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Аўстралія" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Аруба" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Аланавы астравы" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Азербайджан" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Боснія і Герцагавіна" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Барбадос" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Бангладэш" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Бельгія" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Буркіна Фасо" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Баўгарыя" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Бахрэйн" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Бурундзі" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Бізнесовыя" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Бенін" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Бэрмуды" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Брунэй" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Балівія" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Бразілія" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Багамы" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Бутан" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Востраў Бувет" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Батсвана" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Беларусь" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Белізе" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Канада" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Какос астравы" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "Дэмакратычная Рэспубліка Конга" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "Цэнтральна-Афрыканская Рэспубліка" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Конга" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Швейцарыя" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Кот д'Івуар" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Астравы Кука" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Чылі" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Камерун" + +#: src/common/util.c:898 +msgid "China" +msgstr "Кітай" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Калумбія" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Камерцыйныя Адрасы" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Коста Рыка" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Сербія і Чарнагорыя" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Куба" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Кабо Вердэ" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Востраў Каляд" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Кіпр" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "Чэхія" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Нямеччына" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Джыбуці" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Данія" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Дамініка" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "Дамініканская Рэспубліка" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Алжыр" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Эквадор" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Адукацыйныя" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Эстонія" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Егіпет" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Заходняя Сахара" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Эрытрэя" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Гішпанія" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Эфіёпія" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Еўразвяз" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Фінляндыя" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Фіджы" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Фалклендскія астравы (Мальвіны)" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Федэрацыя Мiкранэзіі" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Астравы Фароэ" + +#: src/common/util.c:928 +msgid "France" +msgstr "Францыя" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Габон" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Вялікая Брытанія" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Грэнада" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Грузія" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Французская Грэнада" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Брытанскія астравы Канала" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Гана" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Гібралтар" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Грынланд" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Гамбія" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Гвінея" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Урад" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Гвадэлупа" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Экватарыяльная Гвінэя" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Грэцыя" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Св.Георгія і Св.Сэндвіча астравы" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Гватэмала" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Гуам" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Гвінея-Бісаў" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Гвіяна" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Гонг-Конг" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Астравы Гэарда і МакДональда " + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Гандурас" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Харватыя" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Гаіці" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Вугоршчына" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Інданэзія" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Ірландыя" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Ізраіль" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Востраў Мэн" + +#: src/common/util.c:959 +msgid "India" +msgstr "Індыя" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Інфармацыйныя" + +#: src/common/util.c:961 +msgid "International" +msgstr "Міжнародныя" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Брытанская тэрыторыя Індыйскага акіяна" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Ірак" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Іран" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Ісландыя" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Італія" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Джэрсі" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Ямайка" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Ярданія" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Японія" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Кенія" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Кыргызстан" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Камбоджа" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Кiрыбацi" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Каморы" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "Сэнт-Кітс і Нэвіс" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Паўночная Карэя" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Паўднёвая Карэя" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Кувэйт" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Кайманавы астравы" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Казахстан" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Лаос" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Ліван" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Сэнт-Люсія" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Ліхтэнштэйн" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Шры-Ланка" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Лібэрыя" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Лесота" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Літва" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Люксэмбург" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Латвія" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Лівія" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Марока" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Манака" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Малдова" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "Злучаныя Штаты, медыцына" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Мадагаскар" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Маршалавы астравы" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Вайсковыя" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Македонія" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Малі" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "М'янма" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Манголія" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Макау" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Паўночныя Марыянскія астравы" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Мартыніка" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Маўрытанія" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Мантсэрат" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Мальта" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Маўрыцы" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Мальдывы" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Малаві" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Мэксыка" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Малайзыя" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Мазамбік" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Намібія" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Новая Каледонія" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Нігер" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Унутраныя сецівы" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Норфалк" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Нігерыя" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Нікарагуа" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Галяндыя" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Нарвэгія" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Нэпал" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Науру" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Ніўэ" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Новая Зеландыя" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Аман" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Унутраныя некамерцыйныя арганізацыі" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Панама" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Пэру" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Французская Палінэзія" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Папуа Новая Гвінея" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Філіпіны" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Пакістан" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Польшча" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "Сэн-П'ер і Мікелон" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Піткэрн" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Пуэрта Рыка" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Палестынская тэрыторыя" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Партугалія" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Палаў" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Парагвай" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Катар" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Рэюньён" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Румынія" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "Старое сеціва ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Расія" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Руанда" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Саўдаўская Арабія" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Саламонавы астравы" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Сэйшэлы" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Судан" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Швецыя" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Сінгапур" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "Востраў Сьвятой Алены" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Славенія" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Астравы Свальбард і Яна Майхема" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Славакія" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Сьера-Леонэ" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "Сан-Марына" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Сенегал" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Самалі" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Сурынам" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "Сан-Тамэ і Прынсіпі" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Былы СССР" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "Сальвадор" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Сырыя" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Свазылэнд" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Астравы Тэркс і Кайкас" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Чад" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Французскія паўднёвыя тэрыторыі" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Тога" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Тайланд" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Таджыкістан" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Такелаў" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Усходні Тымор" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Туркменістан" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Туніс" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Тонга" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Турцыя" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Трынідад і Табага" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Тувалу" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Тайвань" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Злучаная Рэспубліка Танзанія" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Украіна" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Уганда" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Аб'яднанае Каралеўства" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "Злучаныя Штаты Амерыкі" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Уругвай" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Узбекістан" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Ватыкан" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "Св.Вінсент і Грэнадзіны" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Венесуэла" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Брытанскія астравы Вірджын" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "ЗША астравы Вірджын" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "В'етнам" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Вануату" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Воліс і Футуна астравы" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Самоа" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Йемен" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Маёт" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Югаславія" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Паўдневая Афрыка" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Забмія" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Зімбабвэ" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Невядома" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "Пачаць дыялог" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "Даслаць файл" + +#: src/common/xchat.c:728 +#, fuzzy +msgid "_User Info (WhoIs)" +msgstr "Звесткі (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +#, fuzzy +msgid "O_perator Actions" +msgstr "Дзеянні аператара" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Даць аператара" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Забраць аператара" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Даць голас" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Забраць голас" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Выпхнуць/забараніць" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Выпхнуць" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Забараніць" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "Выпхнуць і забараніць" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Выйсці з канала" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Увайсці на канал..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Вызначце канал для ўваходу:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Спасылкі сервера" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Пінгаваць сервер" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Схаваць версію" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Аператар" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "Адабраць аператара" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "пакуль" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Увядзіце прычыну выпіхвання %s:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Даслаць файл" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Дыялог" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "Хто ёсць" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Даслаць" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Размова" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Ачысціць" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "Немагчыма злучыцца з шынай сесій (session bus)" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "Немагчыма скончыць NameHasOwner" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "Немагчыма скончыць Command" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "аддалены доступ" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "Плагін для аддаленага доступу (выкарыстоўвае DBUS)" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Немагчыма злучыцца з шынай сесій : %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Немагчыма дасягнуць %s : %s\n" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "Аб праграме" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Шматплатформенны кліент IRC" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Палітра літар" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "Не злучана." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Трэба выбраць некалькі забаронаў." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "Ці вы ўпэўнены, што хочаце выдаліць усе забароны у %s?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Маска" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "Адкуль" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Дата" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" +"Вы можаце адкрыць акно са спісам забаронаў толькі пры адкрытай укладцы " +"канала." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: спіс забаронаў (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Выдаліць" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Сціснуць" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Аднавіць" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Паказ %d/%d карыстальнікаў на %d/%d каналах." + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Абярыце імя файла для вываду" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "У_вайсці на канал" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "_Капіяваць назву канала" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "Капіяваць тэкст _тэмы" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: Спіс каналаў (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "_Пошук" + +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "Спіс спа_мповак" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "Захаваць _спіс як..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "Паказаць толькі:" + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "каналы з ад" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "да" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "карыстальнікамі" + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "Глядзець у" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "Назва канала" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "Тып пошуку:" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "Просты пошук" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "Узор адпавядае (Wildcards)" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "Рэгулярны выраз" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Знайсці:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Даслаць файл %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Працяг гэтага файла немагчымы." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"Немагчыма атрымаць доступ да файла: %s\n" +"%s.\n" +"Працяг немагчымы." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"Файл у тэчцы спампоўванняў большы за прапанаваны файл. Працяг немагчымы." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "Немагчыма працягнуць той жа самы файл з двух чалавек." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: запампоўкі і спампоўкі" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Статус" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Файл" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "Прайшло часу" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Абодва" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Запампоўкі" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "Спампоўкі" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Падрабязнасці" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Файл:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "Адрас:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Перарваць" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Прыняць" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Працягнуць" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Адкрыць тэчку..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: Спіс DCC Chat" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Прын" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Дасл" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "Час пачатку" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*НОВЫ" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "ЗМЯНІ МЯНЕ" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Імя" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Каманда" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Вышэй" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Ніжэй" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Адмяніць" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Захаваць" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Дадаць" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Выдаліць" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Сартаваць" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Дапамога" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "Не злучацца з серверамі аўтаматычна" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "Выкарыстоўваць іншую тэчку наладак" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "Не загружаць плагіны аўтаматычна" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "Паказаць тэчку аўтазагрузкі плагінаў" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "Паказаць тэчку карыстальніцкіх наладак" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Адкрыць URL, irc://server:port/channel" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Выканаць каманду:" + +#: src/fe-gtk/fe-gtk.c:132 +#, fuzzy +msgid "Open URL or execute command in an existing XChat" +msgstr "Адкрыць URL у існуючым XChat" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +#, fuzzy +msgid "level" +msgstr "Ніколі" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Паказаць звесткі аб версіі" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"Памылка адкрыцця шрыфту:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "Буфер пошуку пусты.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d байтаў" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Сеціўная чарга дасылкі: %d байтаў" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"Дзеянне Выканаць Каманду выконвае Данні 1 як каманду, быццам яна была " +"ўведзена ў полі ўводу, у якім была націснута паслядоўнасць клавішаў. Можа " +"змяшчаць тэкст (які будзе дасланы да канала ці асобы), каманды або каманды " +"карыстальніка. Падчас выканання ўсе знакі \\n у Данніх 1 будуць скарыставаны " +"для пазначэння падзелаў паміж камандамі, такім чынам, магчыма выканаць больш " +"за адну каманду. Калі вы жадаеце ўжыць \\ у тэксце каманды, пішыце замест " +"гэтага \\\\" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"Каманда Змяніць Старонку пераключае старонкі ў нататніку. Усталюйце Данні 1 " +"на старонку, куды трэба пераключыцца. Калі Данні 2 ўсталяваны, то будзе " +"лічыцца адносна бягучай пазіцыі." + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"Каманда Ўставіць у буфер уставіць змест Данніх 1 у поле, дзе была націснута " +"камбінацыя клавішаў, у бягучую пазіцыю курсора" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"Каманда Пракрутка Старонкі пракручвае тэкставае аздабленне ўніз ці ўверх на " +"адну старонку ці на адзін радок. Усталюйце Данні 1 як Up, Down, +1 ці -1." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"Каманда Усталяваць Буфер усталёўвае значэнне поля поля, дзе была націснута " +"камбінацыя клавішаў, у значэнне Данніх 1" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"Каманда Апошняя Каманда вяртае ў поле апошнюю каманду, гэтаксама ж, як у " +"каманднай абалонцы націсканне кнопкі Ўверх" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"Каманда Наступная Каманда вяртае ў поле наступную каманду, гэтаксама ж, як у " +"каманднай абалонцы націсканне кнопкі Ўніз" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Гэта каманда змяняе тэкст у полі для дапаўнення нескончанай мянушкі ці " +"каманы. Калі Данні 1 усталяваныя, двайны націск табуляцыі выбярэ не " +"наступную, а апошнюю мянушку" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Гэта каманда пракручвае ўніз і ўверх спіс карыстальнікаў. Калі Данні 1 " +"усталяваны, будзе пракрутка ўверх, інакш - уніз" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Гэта каманда правярае апошняе ўведзенае слова ў спіс заменаў і замяняе ў " +"выпадку знаходжання адпаведнасці" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Гэта каманда перамяшчае пярэднюю ўкладку на адну пазіцыю ўлева" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Гэта каманда перамяшчае пярэднюю ўкладку на адну пазіцыю ўправа" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Гэта каманда перамяшчае бягучую групу ўкладак на адну пазіцыю ўлева" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Гэта каманда перамяшчае бягучую групу ўкладак на адну пазіцыю ўправа" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "Запісаць радок у журнал, але не дасылаць да сервера" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "Памылка загрузкі наладак камбінацыяў клавішаў" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<ніякі>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Мад" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Клавіша" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Дзеянне" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: Камбінацыі клавішаў" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Данні 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Данні 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Памылка адкрыцця файла наладак клавішаў\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Невядомая назва клавішы %s у файле наладак клавішаў\n" +"Загрузка перарвана, выпраўце %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Невядомае дзеянне %s у файле наладак клавішаў\n" +"Загрузка перарвана, выпраўце %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Чакаўся радок данніх (пачатак Dx{:|!}) , але атрымана:\n" +"%s\n" +"\n" +"Загрузка перарвана, выпраўце %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"Файл наладак клавішаў пашкоджаны, загрузка перарвана\n" +"Выпраўце %s/keybindings\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "Немагчыма запісаць у гэты файл" + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Немагчыма прачытаць гэты файл" + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Гэта маска ўжо існуе" + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Асабісты" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Абвяшчэнне" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Запрашэнне" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Не ігнараваць" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Увядзіце маску для ігнаравання:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: Спіс ігнараванняў" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Статыстыка ігнараванняў:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Канал:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Асабісты:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Абвяшчэнне:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Запрашэнне:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "Дадаць..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "Імя канала занадта кароткае, паспрабуйце зноў." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: Злучэнне выканана" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "Злучэнне з %s выканана." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"У акне спіса сервераў ніводнага канала (пакоя размовы) не было ўведзена для " +"аўтаматычнага ўваходу для гэтага сеціва." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "Што вы маеце рабіць наступным?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "_Нічога, Я ўвайду на канал пазней." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "_Увайсці на канал:" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Калі вы ведаеце імя канала для ўваходу, увядзіце яго тут." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "_Адкрыць акно спісу каналаў." + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "Атрыманне спісу каналаў патрабуе хвіліну ці дзве." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "_Заўсёды паказваць гэты дыялог пасля злучэння." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Дыялог з" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Тэма для %s : %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Ніякай тэмы не ўсталявана" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "Гэты сервер мае %d адкрытых каналаў ці дыялогаў. Ці закрыць іх усе?" + +#: src/fe-gtk/maingui.c:1283 +#, fuzzy +msgid "Quit XChat?" +msgstr "Аб праграме" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1310 +#, fuzzy, c-format +msgid "You are connected to %i IRC networks." +msgstr "" +"Вы злучаны з <b>%u</b> сецівамі IRC.\n" +"Ці ўпэўнены, што хочаце выйсці?" + +#: src/fe-gtk/maingui.c:1312 +#, fuzzy +msgid "Are you sure you want to quit?" +msgstr "Ці вы ўпэўнены, што хочаце выдаліць усе забароны у %s?" + +#: src/fe-gtk/maingui.c:1314 +#, fuzzy +msgid "Some file transfers are still active." +msgstr "Некаторыя перадачы файлаў актыўныя, выйсці з xchat?" + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Пакіньце ўласцівасць ці код колеру" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Тлусты</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Падкрэслены</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Звычайны" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Колеры 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Колеры 8-15" + +#: src/fe-gtk/maingui.c:1612 +#, fuzzy +msgid "_Settings" +msgstr "Наладкі" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "Схаваць паведамленні аб уваходзе і адыходзе" + +#: src/fe-gtk/maingui.c:1625 +#, fuzzy +msgid "_Extra Alerts" +msgstr "Тэрміновыя паведамленні" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "Гукавы сігнал пры паведамлення" + +#: src/fe-gtk/maingui.c:1628 +#, fuzzy +msgid "Blink Tray _Icon" +msgstr "Міргаць сподкавай значкай пры:" + +#: src/fe-gtk/maingui.c:1629 +#, fuzzy +msgid "Blink Task _Bar" +msgstr "Міргаць сподкам пры:" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +#, fuzzy +msgid "_Detach" +msgstr "Адлучыць укладку" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "_Закрыць" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "Абмежаванне карыстальніка павінна быць лічбай!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Ахова тэмы" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Няма вонкавых паведамленняў" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Сакрэт" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Толькі па запрашэннях" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Мадэраваны" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Спіс забарон" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Ключавое слова" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Абмежаванне карыстальніка" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Паказаць/Схаваць спіс карыстальнікаў" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"Немагчыма ўсталяваць празрысты фон!\n" +"\n" +"Пэўна, выкарыстоўваецца несумяшчальны мэнэджэр акон\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Увядзіце новую мянушку:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Вузел невядомы" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Сапраўднае імя:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Карыстальнік:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "Краіна:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Сервер:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "%u хвілін таму" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Апошняе паведамленне:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Паведамленне адыходу:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"Меню зараз схована. Яно вернецца, калі націснеце F9 ці шчоўкнеце правай " +"кнопкай мышы на свабоднай прасторы тэкставага акна." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Адкрыць спасылку ў браўзеры" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Капіяваць пазначаную спасылку" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Увайсці на канал" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Выйсці з канала" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Каналы па кругу" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: Меню карыстальніка" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Рэдагаваць гэтае меню..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Атрымаць спіс каналаў..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Каманды карыстальніка - Спецыянальныя кады:\n" +"\n" +"%c = бягучы канал\n" +"%m = інфармацыя пра машыну\n" +"%n = ваша мянушка\n" +"%t = час/дата\n" +"%v = версія xchat\n" +"%2 = слова 2\n" +"%3 = слова 3\n" +"&2 = слова 2 ад канцу радка\n" +"&3 = слова 3 ад канцу радка\n" +"\n" +"напрыклад:\n" +"/cmd john hello\n" +"\n" +"%2 будзе \"john\"\n" +"&2 будзе \"john hello\"." + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Кнопкі спісу карыстальнікаў- Спецыяльныя кады:\n" +"\n" +"%a = усе пазначаныя мянушкі\n" +"%c = бягучы канал\n" +"%h = назва вузла пазначанай мянушкі\n" +"%e = назва бягучага сеціва\n" +"%m = інфармацыя пра машыну\n" +"%n = ваша мянушка\n" +"%s = пазначаная мянушка\n" +"%t = час/дата\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Кнопкі дыялогу - Спецыяльныя кады:\n" +"\n" +"%a = усе пазначаныя мянушкі\n" +"%c = бягучы канал\n" +"%e = назва бягучага сеціва\n" +"%h = назва вузла пазначанай мянушкі\n" +"%m = інфармацыя пра машыну\n" +"%n = ваша мянушка\n" +"%s = пазначаная мянушка\n" +"%t = час/дата\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"Адказы CTCP - Спецыянальныя кады::\n" +"\n" +"%d = данні (ctcp цалкам)\n" +"%e = назва бягучага сеціва\n" +"%m = інфармацыя пра машыну\n" +"%s = мянушка таго, хто даслаў ctcp\n" +"%t = час/дата\n" +"%2 = слова 2\n" +"%3 = слова 3\n" +"&2 = слова 2 ад канцу радка\n" +"&3 = слова 3 ад канцу радка\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"Апрацоўшчыкі URL - Спецыяльныя кады:\n" +"\n" +"%s = радок URL\n" +"\n" +"Змяшчэнне ! (клічніка) наперадзе каманды\n" +"азначае, што яе будзе апрацоўваць камандная\n" +"абалонка, а не XChat" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: Вызначаныя карыстальнікам каманды" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: Кантэкстнае меню спісу карыстальнікаў" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Замяніць" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: Замена" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: Апрацоўчыкі URL" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: Кнопкі спісу карыстальнікаў" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: Кнопкі дыялогу" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: Адказы CTCP" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "Спіс _сеціў..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "_Новы" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Укладка сервера..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Укладка канала..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Акно сервера..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Акно канала..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "Загрузіць плагін ці скрыпт..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "_Выйсці" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "Пра_гляд" + +#: src/fe-gtk/menu.c:1591 +#, fuzzy +msgid "_Menu Bar" +msgstr "Меню" + +#: src/fe-gtk/menu.c:1592 +#, fuzzy +msgid "_Topic Bar" +msgstr "Тэма" + +#: src/fe-gtk/menu.c:1593 +#, fuzzy +msgid "_User List" +msgstr "Спіс карыстальнікаў" + +#: src/fe-gtk/menu.c:1594 +#, fuzzy +msgid "U_serlist Buttons" +msgstr "Кнопкі спісу карыстальнікаў" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "Кнопкі рэжыму" + +#: src/fe-gtk/menu.c:1597 +#, fuzzy +msgid "_Channel Switcher" +msgstr "каналы з ад" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "Укладкі" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "Дрэва" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "Вымярэнне сеціва" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Выкл" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Графік" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "_Сервер" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "_Разлучыцца" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "_Перадалучыцца" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "Увайсці на канал..." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "Увайсці на канал..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Пазначыць як \"Адыйшоў\"" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "_Меню карыстальніка" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "Наладкі" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "_Асаблівасці" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Адмысловыя" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Аўтазамена..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "Адказы CTCP..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Кнопкі дыялогаў..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Камбінацыі клавішаў..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Тэксты падзеяў..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "Апрацоўшчыкі URL..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Каманды карыстальніка..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Кнопкі спісу карыстальнікаў..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Меню спісу карыстальнікаў..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "Акно" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Спіс забароненых..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Палітра літараў..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Прамыя размовы..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Абмен файламі..." + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "Спіс забароненых..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Спіс ігнараванняў.." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Плагіны і скрыпты..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Журнал падзеяў..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "Зборшчык URL..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Скінуць маркер" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "А_чысціць тэкст" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Шукаць тэкст..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Захаваць тэкст" + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_Дапамога" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "_Змест" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "Аб праграме" + +#: src/fe-gtk/menu.c:2147 +#, fuzzy +msgid "_Attach" +msgstr "_Далучыць акно" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Апошні прагляд" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Разлучаны" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Ніколі" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "%d хвілін таму" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Злучаны" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Увядзіце мянушку:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "Абвяшчаць у гэтых сецівах:" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "Прымаецца спіс сеціваў, падзеленых коскамі." + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "XChat: Спіс ігнараванняў" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "Пачаць дыялог" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" +"Адсутнічае 'notify-send' для адкрыцця балёнікавых выплыўных паведамленняў.\n" +"Калі ласка, устанавіце libnotify." + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "XChat: злучана з %u сецівамі і %u каналамі" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "_Вярнуць" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "С_хаваць" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "_Міргаць пры" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "Канальным паведамленні" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "Асабістым паведамленні" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "Падсвечаным паведамленні" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "Адыход" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, fuzzy, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat: Падсвечанае паведамленне ад: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat: %u падсвечаных паведамленняў, апошняе ад: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat: Новае агульнае паведамленне ад: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat: %u новых агульных паведамленняў." + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat: Асабістае паведамленне ад: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "XChat: %u асабістых паведамленняў, апошняе ад: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat: прапанова файла ад: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "XChat: %u прапаноў файлаў, апошняя ад: %s (%s)" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Версія" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Апісанне" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Выберыце плагін ці скрыпт для загрузкі" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: плагіны і скрыпты" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "_Загрузіць" + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "_Выгрузіць" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Захаваць як..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: Журнал (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Ачысціць журнал" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "Адкрытае вамі акно пошуку болей не існуе." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "Пошук дасягнуў канца, не знойдзена." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: Пошук" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "_Улічваць рэгістр" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "Пошук _назад" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "_Знайсці" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Новае сеціва" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Сапраўды выдаліць сеціва \"%s\" і ўсе яго серверы?" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "Канал" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: Спіс каналаў (%s)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "Пароль:" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "_Рэдагаваць" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "Імя карыстальніка і сапраўднае імя не могуць быць пустымі." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: Рэдагаваць %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Сервера для %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Злучацца толькі з абранымі серверамі" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Не зацыклівацца на серверах, калі злучэнні абрываюцца" + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Падрабязнасці" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Выкарыстоўваць глабальная звесткі" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "_Мянушка" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Другі выбар" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "_Імя карыстальніка" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "Сапраўднае _імя" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Злучэнне" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Аўтаматычна злучацца з гэтым серверам пры старце" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "Выкарыстоўваць проксі" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "Ужываць SSL для ўсіх сервераў у гэтым сеціве" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Прымаць несапраўдны SSL-сертыфікат" + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "Выйсці з канала: " + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "Каналы для ўваходу, падзеленыя коскамі, але не прагаламі!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Каманда злучэння" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Дадатковыя каманды для выканання пасля злучэння. Калі патрэбна больш за " +"адну, прапішыце LOAD -e <файл>, дзе <файл> гэта тэкставы файл з камандамі." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Пароль для Nickserv:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Калі ваша мянушка патрабуе пароль, вы можаце ўвесці яго тут. Не ўсе сецівы " +"IRC падтрымліваюць гэта" + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Пароль сервера:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Пароль для сервера, калі сумняваецеся, пакіньце пустым." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Знаказбор:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: спіс абвяшчэнняў" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Звесткі аб карыстальніку" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Трэці выбар" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Сецівы" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "Не паказваць спіс сервераў пры старце" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "_Змяніць..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "_Упарадкаваць" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" +"Упарадкоўвае спіс сеціў паводле алфавіту. Выкарыстоўвайце камбінацыі SHIFT-" +"UP ды SHIFT-DOWN, каб зрушваць слупок." + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "_Злучыцца" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Выгляд тэкставага акна" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Шрыфт:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Фонавая выява:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Лініі пракруткі:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Каляровыя мянушкі" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Пазначыць кожнай персоне розны колер" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Рабіць водступ перад мянушкамі" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Выраўняць мянушкі па правым краі" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Празрысты фон" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Паказваць маркер" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Устаўляць чырвоную лінію пасля апошняга прагледжанага тэксту" + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Параметры празрыстасці" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Чырвоны" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Зялёны" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Блакітны" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Адзнакі часу" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Ужываць адзнакі часу" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Фармат адзнакаў часу" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Глядзіце man strftime" + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "Апошнесказаны парадак " + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Акно ўводу" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Шрыфт і колер як у тэкставым акне" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Праверка правапісу" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Дапаўненне мянушак" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "Аўтаматычнае дапаўненне мянушак (без клавішы TAB)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Суфікс дапаўнення мянушак" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "Дапаўненне сартавана" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Коды ў полі ўводу" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Разумець %nnn як ASCII код" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Разумець %C, %B як Колер, Тлусты і г.д." + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, Аператары першыя" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "A-Z, Аператары апошнія" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Не сартаваць" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Верх" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Ніз" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Схаваць" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Спіс карыстальнікаў" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Паказваць імёны хастоў у спісе карыстальнікаў" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Сартаваць спіс карыстальнікаў па:" + +#: src/fe-gtk/setup.c:205 +#, fuzzy +msgid "Show user list at:" +msgstr "Паказаць/Схаваць спіс карыстальнікаў" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Сачыць за адышэдшымі" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "Сачыць за адышэдшымі і маляваць іх іншым колерам" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "На каналах менш за" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Рэакцыя на падвоены націск мышы" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Вокны" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Укладкі" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Заўсёды" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Толькі запрошаныя ўкладкі" + +#: src/fe-gtk/setup.c:242 +#, fuzzy +msgid "Tree" +msgstr "Дрэва" + +#: src/fe-gtk/setup.c:249 +#, fuzzy +msgid "Switcher type:" +msgstr "Тып пошуку:" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Адкрываць дадатковыя ўкладкі для паведамленняў сервера (message)" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Адкрываць дадатковыя ўкладкі для заўваг сервера (notice)" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "Адкрываць новую ўкладку для атрымання асабістага паведамлення" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Сартаваць укладкі ў алфавітным парадку" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "Маленькія ўкладкі" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Фокус на новыя ўкладкі:" + +#: src/fe-gtk/setup.c:258 +#, fuzzy +msgid "Show channel switcher at:" +msgstr "каналы з ад" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Скарачаць укладкі да:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "знакаў" + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Укладкі ці вокны:" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Адкрываць каналы ў:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Адкрываць дыялогі ў:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Адкрываць сродкі ў:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Адкрываць DCC, Ігнараванне, Абвяшчэнні і г.д. ва ўкладках ці вокнах?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "Не" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Так" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "Выбіраць тэчку для захоўвання кожны раз" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Файлы і тэчкі" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Аўтаматычна згаджацца з прапановамі файлаў" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Спампоўваць файлы ў:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Перамяшчаць завершаныя файлы ў:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Захоўваць мянушкі ў імёнах файлаў" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Сеціўныя наладкі" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Атрымаць мой адрас ад IRC-сервера" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Запытаць IRC-сервер аб вашым сапраўдным адрасе. Выкарыстоувайце, калі вы " +"маеце адрас кшталту 192.168.*.*!" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "DCC IP адрас:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Абвяшчаць аб гэтым адрасе пры прапанове файлаў." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Першы порт для дасылкі DCC:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Апошні порт для дасылкі DCC:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!Пакіньце парты нулявымі для поўнага дыяпазону." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Найвялікшая хуткасць перадачы файлаў (байтаў у секунду)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Адно запампоўванне:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Найвялікшая хуткасць для адной перадачы" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Адно спампоўванне:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Усе запампоўванні:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Найвялікшая хуткасць" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Усе спампоўванні:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Тэрміновыя паведамленні" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "Паказваць балёнікі ў сподку пры:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "Міргаць сподкавай значкай пры:" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "Міргаць сподкам пры:" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "Паведаміць піскам пры:" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "Задзейнічаць значку ў сістэмным сподку" + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "Падсвечаныя паведамленні" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Падсвечваць паведамленні, дзе згадана ваша мянушка і:" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "Дадатковыя словы для падсветкі:" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "Мянушкі, тэкст ад якіх не падсвечваць" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "Мянушкі, тэкст ад якіх заўжды падсвечваць" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Некалькі словаў, падзеленых коскамі." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Прадвызначаныя паведамленні" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Выхад:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Выйсці з канала: " + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Адыйсці:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Адыход" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Паведамляць аб адыходзе" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Паведамляць аб вашым адыходзе на ўсіх каналах" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Паказваць \"Адышэдшы\" толькі адзін раз" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Паказваць аднолькавыя паведамленні аб адыходзе толькі адзін раз" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Аўтаматычна здымаць статус \"Адышэдшы\"" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Здымаць статус \"Адышэдшы\" перад дасылкай паведамленняў" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Дадатковыя наладкі" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Затрымка паміж спробамі злучыцца" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Паказваць рэжымы ў чыстым выглядзе " + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Whois пры абвяшчэнні" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "Дасылать /WHOIS, калі карыстальнік са спісу абвяшчэнняў злучаецца" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Схаваць паведамленні аб уваходзе і адыходзе" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Схаваць паведамленні аб уваходзе/адыходзе" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Аўтаматычна адкрываць вокны DCC" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Акно дасылкі" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Акно атрымання" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Акно размовы" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Журнал" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "Дазволіць журналяванне дыялогаў" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Імя файла журналу:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "(%s=Сервер %c=Канал %n=Сеціва)." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Устаўляць адзнакі часу ў журнал" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Фармат адзнакаў часу:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Адключана)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Усе злучэнні" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "Толькі IRC-сервер" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "Толькі атрыманне DCC" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Ваш адрас" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Ужываць адрас:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "Карысна толькі для кампутараў з некалькімі адрасамі." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Проксі-сервер" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Хост:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Порт:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Тып:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Выкарыстоўваць проксі для:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Спраўжванне на проксі" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Спраўжванне на проксі-серверы (толькі MS Proxy, HTTP ці Socks5)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Праверка на проксі-серверы (толькі HTTP ці Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Імя карыстальніка:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Пароль:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Абярыце файл выявы" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "Абярыце тэчку для спамповак" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Абярыце шрыфт" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Агляд.." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Пазначаць ідэнтыфікаваных карыстальнікаў:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Пазначаць неідэнтыфікаваных карыстальнікаў:" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "Адкрыць тэчку данніх" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Вылучце колер" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Колеры тэксту" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "Колеры mIRC:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Лакальныя колеры:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Колер літар:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Фон:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Адзначэнне тэксту" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Колеры інтэрфейсу" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Новыя дадзеныя:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Лінія-адзнака:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Новае паведамленне:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Адышэдшы карыстальнік:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Падсветка:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Падзея" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Гукавы файл" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Абярыце гукавы файл" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Спосаб граць гук:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "Вонкавая праграма для _прайгравання гуку:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "_Вонкавая праграма" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_Аўтаматычна" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "Каталог з гукавымі файламі:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Гукавы файл:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "_Знайсці..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "_Граць" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Інтэрфейс" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Тэкставае акно" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Спіс карыстальнікаў" + +#: src/fe-gtk/setup.c:1703 +#, fuzzy +msgid "Channel switcher" +msgstr "каналы з ад" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Колеры" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Размовы" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Агульнае" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Гук" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Сеціўныя наладкі" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Абмен файламі" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Катэгорыі" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" +"Вы не можаце размясціць дрэва ўверсе ці ўнізе!\n" +"Спачатку змяніце Асяроддзе на <b>Ўкладкі</b> ў меню <b>Прагляд</b>." + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Некаторыя наладкі будуць зменены толькі пасля рэстарту." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*УВАГА*\n" +"Аўтапрыманне DCC у вашу хатнюю тэчку ёсць\n" +"небяспечным і можа быць выкарыставана, напрыклад,\n" +"нехта можа даслаць вам .bash_profile" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: Асаблівасці" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Узнікла памылка пры апрацоўцы радка" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Гэты сігнал прымае толькі %d аргументаў, $%d няправільны" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Друкаваць тэкставы файл" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Рэдагаваць падзеі" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ Лічба" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Загрузіць з..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Праверыць усё" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: Зборшчык URL" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Ачысціць спіс" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Капіяваць выбраны URL" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Капіяваць" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Захаваць спіс у файл" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d апер, %d усяго" + +#~ msgid "" +#~ "Set per channel options\n" +#~ "CHANOPT CONFMODE ON|OFF - Toggle conf mode/showing of join and part " +#~ "messages\n" +#~ "CHANOPT COLORPASTE ON|OFF - Toggle color paste\n" +#~ "CHANOPT BEEP ON|OFF - Toggle beep on message\n" +#~ "CHANOPT TRAY ON|OFF - Toggle tray blink on message" +#~ msgstr "" +#~ "Наладкі адносна канала\n" +#~ "CHANOPT CONFMODE ON|OFF - Пераключыцца паміж рэжымам канферэнцыі і " +#~ "паказам уваходных і выходзячых паведамленняў\n" +#~ "CHANOPT COLORPASTE ON|OFF - Пераключыць устаўку колераў\n" +#~ "CHANOPT BEEP ON|OFF - Пераключыць пішчанне пры паведамленнях \n" +#~ "CHANOPT TRAY ON|OFF - Пераключыць мірганне ў сподку пры паведамленнях" + +#~ msgid "Direct client-to-client" +#~ msgstr "Прамое дачыненне (DCC)" + +#~ msgid "Send File" +#~ msgstr "Даслаць файл" + +#~ msgid "Offer Chat" +#~ msgstr "Прапанаваць размову" + +#~ msgid "Abort Chat" +#~ msgstr "Перарваць размову" + +#~ msgid "Userinfo" +#~ msgstr "Звесткі аб карыстальніку" + +#~ msgid "Clientinfo" +#~ msgstr "Звесткі аб кліенце" + +#~ msgid "Time" +#~ msgstr "Час" + +#~ msgid "Finger" +#~ msgstr "Водціск" + +#~ msgid "Oper" +#~ msgstr "Аперацыя" + +#~ msgid "Kill this user" +#~ msgstr "Выпхнуць карыстальніка" + +#~ msgid "Mode" +#~ msgstr "Рэжым" + +#~ msgid "Give Half-Ops" +#~ msgstr "Даць паў-аператара" + +#~ msgid "Take Half-Ops" +#~ msgstr "Забраць паў-аператара" + +#~ msgid "Ignore" +#~ msgstr "Ігнараванне" + +#~ msgid "Ignore User" +#~ msgstr "Ігнараваць карыстальніка" + +#~ msgid "UnIgnore User" +#~ msgstr "Не ігнараваць карыстальніка" + +#~ msgid "Info" +#~ msgstr "Інфа" + +#~ msgid "Who" +#~ msgstr "Хто" + +#~ msgid "DNS Lookup" +#~ msgstr "Прагляд DNS" + +#~ msgid "Trace" +#~ msgstr "Trace" + +#~ msgid "UserHost" +#~ msgstr "Камп'ютэр карыстальніка" + +#~ msgid "External" +#~ msgstr "Вонкавы" + +#~ msgid "Traceroute" +#~ msgstr "Traceroute" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "Unban" +#~ msgstr "Дазволіць" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "Усе ўкладкі закрытыя, выйсці з xchat?" + +#~ msgid "Blink tray on message" +#~ msgstr "Мірганне ў сподку пры паведамленні" + +#~ msgid "Show join/part messages" +#~ msgstr "Паказваць паведамленні аб уваходзе/выхадзе" + +#~ msgid "Color paste" +#~ msgstr "Колер" + +#~ msgid "_Close Tab" +#~ msgstr "Закрыць укладку" + +#~ msgid "_Layout" +#~ msgstr "Асяроддзе" + +#~ msgid "Channel List..." +#~ msgstr "Спіс каналаў..." + +#~ msgid "Notify List..." +#~ msgstr "Спіс абвяшчэнняў..." + +#~ msgid "_Close Window" +#~ msgstr "_Закрыць акно" + +#~ msgid "User" +#~ msgstr "Карыстальнік" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: спіс абвяшчэнняў" + +#~ msgid "Quit..." +#~ msgstr "Выхад..." + +#~ msgid "C_hannels to join:" +#~ msgstr "Каналы для ўваходу:" + +#~ msgid "Resizable user list" +#~ msgstr "Змяняемая шырыня спіса карыстальнікаў" + +#~ msgid "Left" +#~ msgstr "Лева" + +#~ msgid "Right" +#~ msgstr "Права" + +#~ msgid "Show tabs at:" +#~ msgstr "Паказваць укладкі:" diff --git a/etc/wyatt8740/po/ca.po b/etc/wyatt8740/po/ca.po new file mode 100644 index 0000000..f6d5bc4 --- /dev/null +++ b/etc/wyatt8740/po/ca.po @@ -0,0 +1,7053 @@ +# Catalan messages for X-Chat +# Copyright (C) 2001-2007 +# Softcatalà <info@softcatala.org>, 2001. +# Yannick Garcia <ygp@tinet.fut.es>, 2001. +# Antoni Bella Perez <bella5@teleline.es>, 2002, 2003. +# Ernest Adrogué Calveras <eadrogue@gmx.net>, 2004, 2007. +# David Planella Molas <david.planella@gmail.com>, 2007. +# This file is distributed under the same license as the xchat package. +# +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.8.0\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2007-01-26 13:24+0100\n" +"Last-Translator: Ernest Adrogué <eadrogue@gmx.net>\n" +"Language-Team: Catalan <ca@dodds.net>\n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "No s'ha pogut crear el directori ~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Ara estic ocupat" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Me'n vaig" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* Connectar-se a l'IRC com a root és estúpid! Hauríeu\n" +" de crear un compte d'usuari i fer-ho des d'allí.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Esperant" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Actiu" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Ha fallat" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Fet" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Connecta" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Avortat" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "No es pot accedir a %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Error" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s us està oferint «%s». Voleu acceptar-lo?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "No hi ha connexions DCC actives\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "SÍ " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "NO " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Esteu sent bombardejat amb peticions CTCP des de %s, s'ignorarà %s\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "" +"Esteu sent atacat amb peticions MSG des de %s, s'ha desactivat l'opció " +"gui_auto_open_dialog.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s connectat\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s no connectat\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "No esteu a cap canal. Proveu amb /join #<canal>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "No connectat. Proveu amb /server <màquina> [<port>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "Es necessita /bin/sh per a executar-lo!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Ordres disponibles:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Ordres definides per l'usuari:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Ordres definides pels connectors:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Per a més informació feu /HELP <ordre>, o /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "S'ignorarà l'argument desconegut «%s»." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "No s'ha trobat tal connector.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Aquest connector refusa ser descarregat.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <nom> <acció>, afegeix un botó sota la llista d'usuaris" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <cmd>, envia una ordre a tots els canals on estigueu" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <cmd>, envia una ordre a tots els canals on estigueu" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <cmd>, envia una ordre a tots els servidors on estigueu" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<motiu>], marca el vostre sobrenom com a absent" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <màscara> [<tipus>], bandeja tots els usuaris que coincideixin amb la " +"màscara. Si ja es troben el canal amb això no els fareu fora (necessiteu ser " +"operador del canal)" + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "SET [-quiet] <variable> [<valor>]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "" +"CLEAR [ALL|HISTORY], Esborra la finestra de text actual o l'historial " +"d'ordres" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, Tanca la finestra o pestanya actual" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY <codi>, cerca un codi de país, p.ex: au = Austràlia" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <sobrenom> <missatge>, envia el missatge CTCP a l'usuari indicat, els " +"missatges més comuns són VERSION i USERINFO" + +#: src/common/outbound.c:3516 +#, fuzzy +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "CYCLE, surt i retorna immediatament al canal actual" + +#: src/common/outbound.c:3518 +#, fuzzy +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <sobrenom> - accepta un fitxer ofert\n" +"DCC SEND [-maxcps=#] <sobrenom> [fitxer] - envia un fitxer\n" +"DCC PSEND [-maxcps=#] <sobrenom> [fitxer] - envia un fitxer en mode passiu\n" +"DCC LIST - mostra la llista de connexions " +"DCC\n" +"DCC CHAT <sobrenom> - proposa un XAT DCC a algú\n" +"DCC CLOSE <tipus> <sobrenom> <fitxer> exemple:\n" +" /dcc close send albanoguer fitxer.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <sobrenom>, treu l'estatus de semi-operador del canal al sobrenom " +"indicat (necessiteu ser operador del canal)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <nom>, elimina un botó de sota la llista d'usuaris" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <sobrenom>, treu l'estatus d'operador del canal al sobrenom indicat " +"(necessiteu ser operador del canal)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <sobrenom>, treu l'estatus de veu al sobrenom indicat (necessiteu " +"ser operador del canal)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, Finalitza la connexió amb el servidor" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <sobrenom|màquina|ip>, Cerca l'adreça IP d'un usuari" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <text>, Escriu el text localment" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <ordre>, executa l'ordre. Si useu l'argument -o s'enviarà la " +"sortida cap al canal actual, si no es mostrarà a la finestra de text actual" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, envia un senyal SIGCONT al procés" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], mata un procés que s'estigui executant en la sessió actual. " +"Si s'empreu -9 el senyal serà SIGKILL" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, envia un senyal SIGSTOP al procés" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, envia dades als processos en stdin (entrada estàndard)" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, neteja la cua d'enviaments al servidor actual" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" +"GATE <màquina> [<port>], usa el servidor intermedi indicat, el port per " +"omissió és el 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" +"GHOST <sobrenom> <contrasenya>, termina una sessió fantasma per a aquest " +"sobrenom" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" +"HOP <sobrenom>, dóna l'estatus d'operador de canal a l'usuari indicat " +"(necessiteu ser operador del canal)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <contrasenya>, us identificarà al servidor de sobrenoms nickserv" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <màscara> <tipus..> <opcions..>\n" +" màscara - màscara de la màquina a ignorar, p.ex: *!*@*.pooles.rima-tde." +"net\n" +" tipus - tipus de les dades a ignorar, una de les següents o totes " +"(«ALL»):\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI\n" +" opcions - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <sobrenom> [<canal>], convida l'usuari indicat a un canal, per " +"omissió al canal actual (necessiteu ser operador del canal)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <canal>, entra al canal" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <sobrenom>, fa fora l'usuari indicat del canal actual (necessiteu ser " +"operador del canal)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <sobrenom>, bandeja l'usuari indicat després de fer-lo fora del " +"canal (necessiteu ser operador del canal)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, força una nova comprovació del retard" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <cadena>, cerca una cadena de text en el buffer" + +#: src/common/outbound.c:3587 +#, fuzzy +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD <fitxer>, carrega un connector o script" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, Treu l'estatus a tots els semi-operadors del canal en el canal " +"actual (necessiteu ser operador del canal)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, Treu l'estatus a tots els operadors del canal en el canal actual " +"(necessiteu ser operador del canal)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <acció>, anuncia una acció al canal actual (les accions s'escriuen en " +"tercera persona, com ara /me salta d'alegria)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, Fa fora tots els usuaris del canal actual (necessiteu ser operador " +"del canal)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, Dóna l'estatus d'operador a tots els usuaris en el canal actual " +"(necessiteu ser operador del canal)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <sobrenom> <missatge>, envia un missatge privat" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, Llista els usuaris que hi ha al canal actual" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <sobrenom> <missatge>, Envia un avís per CTCP" + +#: src/common/outbound.c:3608 +#, fuzzy +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER <nom_màquina> [<port>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <sobrenom>, canvia el vostre sobrenom" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <sobrenom/canal> <missatge>, envia una avís. Els avisos són uns tipus " +"de missatge que no haurien de generar respostes automàtiques" + +#: src/common/outbound.c:3614 +#, fuzzy +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [<sobrenom>], mostra la llista de notificacions o hi afegeix algú" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" +"OP <sobrenom>, dóna l'estatus d'operador del canal a l'usuari (necessiteu " +"ser operador del canal)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<canal>] [<motiu>], deixa el canal, per omissió l'actual" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <sobrenom | canal>, envia un ping CTCP a l'usuari o canal indicat" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "" +"QUERY [-nofocus] <sobrenom>, obre una finestra de xat privat amb <sobrenom>" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<motiu>], finalitza la connexió amb el servidor actual" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <text>, envia el text «en cru» cap al servidor" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONENCT [-ssl] [<sistema>] [<port>] [<contrasenya>], Pot invocar-se sols " +"amb /RECONNECT per així reconnectar-se al servidor actual o amb /RECONNECT " +"ALL per a reconnectar-se a tots els servidors oberts" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONENCT [<sistema>] [<port>] [<contrasenya>], Pot invocar-se sols amb /" +"RECONNECT per així reconnectar-se al servidor actual o amb /RECONNECT ALL " +"per a reconnectar-se a tots els servidors oberts" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <text>, envia dades «en brut» a l'X-Chat, com si foren rebudes des del " +"servidor IRC" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <text>, envia el text a l'objecte a la finestra actual" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <sobrenom> [<fitxer>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <màquina> <port> <canal>, connecta i entra en un canal" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <màquina> <port> <canal>, connecta i entra en un canal" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <màquina> [<port>] [<contrasenya>], connecta amb un servidor, " +"el port per omissió per a connexions normals és el 6667, i el 9999 per a " +"connexions ssl" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <màquina> [<port>] [<contrasenya>], connecta amb un servidor, el port " +"per omissió és el 6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-quiet] <variable> [<valor>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<posició>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "TOPIC [<tema>], estableix o mostra el tema del canal actual" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <màscara> [<màscara>...], readmet els usuaris indicats al canal." + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <màscara> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <fitxer>, desactiva un connector o script" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, obre una URL en el navegador" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <sobrenom1> <sobrenom2> etc, realça el(s) sobrenom(s) a la " +"llista d'usuaris del canal" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "" +"VOICE <sobrenom>, dóna l'estatus de veu a algú (necessiteu ser operador del " +"canal)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <missatge>, escriu un missatge a tots els canals" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <missatge>, envia un missatge a tots els operadors del canal actual" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Sintaxi: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"No hi ha ajuda disponible per a aquesta ordre.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "No existeix tal ordre.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Els arguments per a l'ordre d'usuari no són vàlids.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Massa ordres d'usuari recursives, s'avorta." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Ordre desconeguda. Proveu /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "" +"No hi ha cap símbol xchat_plugin_init; esteu segur que aquest és un " +"connector per a l'xchat?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "" +"Esteu segur que aquest servidor permet l'ús d'SSL i el port és correcte?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"No s'ha pogut resoldre el nom de la màquina %s\n" +"Comproveu la vostra configuració IP\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Ha fallat la connexió amb el servidor intermediari.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Passant al següent servidor de %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Atenció: El joc de caràcters «%s» és desconegut. No es farà cap conversió " +"per la xarxa %s." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 ha estat afegit a la llista de notificació." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Llista de bandejats: %C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tNo podeu entrar a%C26 %B$1 %O(heu estat bandejat)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 ara és conegut com a $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 ha bandejat $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tCanal $1 creat el $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O treu l'estatus de semi-operador del canal a%C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O treu l'estatus d'operador del canal a%C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O treu l'estatus de veu a%C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 dóna l'estatus d'exempt a $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O dóna l'estatus de semi-operador del canal a%C26 $2" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 dóna l'estatus de convidat a $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UCanal Usuaris Tema" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 assigna el mode $2$3 a $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Canal $1 modes: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O dóna l'estatus d'operador del canal%C26 a $2" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 treu l'estatus d'exempt a $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 treu l'estatus de convidat a $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 elimina la contrasenya del canal" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 elimina el límit d'usuaris" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 defineix la contrasenya del canal com a $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 estableix el límit d'usuaris del canal en $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 treu l'estatus de bandejat a $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O dóna l'estatus de veu a%C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Connectat. S'està iniciant la sessió..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22Connectant amb $1 ($2) al port $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21Ha fallat la connexió. Error: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tS'ha rebut un CTCP $1 de $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tS'ha rebut una connexió CTCP $1 de $2 (per a $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tS'ha rebut un so CTCP $1 de $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tS'ha rebut un so CTCP $1 de $2 (per a $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tXat DCC amb %C26$1%O avortat." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "" +"%C22*%O$tS'ha establert una connexió de xat DCC amb %C26$1 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tS'ha interromput el xat directe (DCC Chat) amb %C26$1%O. ($4)" + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tS'ha rebut una oferta de xat directe (DCC CHAT) de $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tS'ha ofert un xat directe (DCC CHAT) a $1" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tJa s'ha ofert un xat directe (DCC CHAT) a $1" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "" +"%C22*%O$tL'intent de connexió DCC $1 amb%C26 $2%O ha fallat (error=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tS'ha rebut un «$1%O» de $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 Tipus Per a/De Estat Mida Pos Fitxer " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O." +"%010%C22*%O$tContents of packet: $2" +msgstr "" +"%C22*%O$tS'ha rebut una petició DCC mal formada de %C26$1%O." +"%010%C22*%O$tContingut del paquet: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tS'està oferint%C26 $1%O a%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tNo existeix tal oferta DCC." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tS'ha avortat la recepció del fitxer %C26 $2%O a %C26 $1%O." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tS'ha completat la recepció del fitxer%C26 $1%O de%C26 $3%O " +"%C30[%C26$4%O cps%C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tConnexió DCC RECV establerta amb%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tLa recepció del fitxer%C26 $1%O de%C26 $3%O ha fallat ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "" +"%C22*%O$tRecepció DCC: No s'ha pogut obrir $1 amb permís d'escriptura ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "%C22*%O$tEl fitxer%C26 $1%C ja existeix, es desarà com a%C26 $2%O." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "" +"%C22*%O$t%C26$1 %Oha demanat reprendre la recepció de%C26 $2 %Cdes de %C26 " +"$3%C." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tL'enviament DCC%C26 $2%O a%C26 $1%O ha estat avortat." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tL'enviament DCC%C26 $1%O a%C26 $2%O s'ha completat %C30[%C26$3%O " +"cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "" +"%C22*%O$tS'ha establert una connexió DCC SEND amb%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tL'enviament DCC%C26 $1%O a%C26 $2%O ha fallat. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Ous ha ofert el fitxer%C26 $2 %O(%C26$3 %Coctets)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cencallat - avortant." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "" +"%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Oha excedit el temps d'espera - avortant." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 ha estat eliminat de la llista de notificació." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tDesconnectat ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tS'ha trobat la vostra IP: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O s'ha afegit a la llista d'usuaris ignorats." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "L'estatus d'usuari ignorat de %C26$1%O ha canviat." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 Màquina PRIV NOTI CAN CTCP DCC CONV NOIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O ha estat eliminat de la llista d'usuaris ignorats." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " La llista d'usuaris ignorats és buida." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "" +"%C22*%O$tNo podeu entrar a%C26 %B$1 %O(És un canal només per a convidats)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tHeu estat convidat a%C26 $1%O per %C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) ha entrat a $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$tNo podeu entrar a%C26 %B$1 %O(Necessiteu una contrasenya)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 ha fet fora a $2 de $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$tUs ha matat $1 ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22S'ha omès el missatge del dia." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 ja està agafat. S'està reintentant amb $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$tEl sobrenom ja està agafat. Useu l'ordre /NICK per a provar-ho amb " +"un altre." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tNo existeix tal connexió DCC." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tNo hi ha cap procés executant-se en aquests moments" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tLa llista de notificació està buida." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Llista de notificació " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 usuari(s) a la llista de notificació." + +#: src/common/textevents.h:282 +#, fuzzy +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tNotificació: $1 no està connectat ($2)." + +#: src/common/textevents.h:285 +#, fuzzy +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tNotificació: $1 està en línia ($2)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) ha deixat $3" + +#: src/common/textevents.h:294 +#, fuzzy +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) ha deixat $3 (%O%C23$4)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tResposta al ping des de $1: $2 segon(s)" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tPing sense resposta després de $1 seconds, desconnectant." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tJa hi ha un procés en execució" + +#: src/common/textevents.h:318 +#, fuzzy +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 s'ha desconectat (%O%C23$2)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 estableix els modes%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Missatge als operadors%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tS'està cercant l'adreça IP de%C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22Connectat." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22S'està resolent $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tS'ha aturat l'anterior intent de connexió (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29El tema de $1%C %C29és: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 ha canviat el tema a: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29El tema de $1%C %C29ha estat establert per $2%C %C29el $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tMàquina desconeguda. Potser l'heu escrita malament?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "" +"%C22*%O$tNo podeu entrar a%C26 %B$1 %O(S'ha assolit el límit d'usuaris)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Usuaris a $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Ces troba absent %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OFinal de la llista WHOIS." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O inactiu%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, entrada:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" +"%C22*%O$t%C28[%O$1%C28] %Ousuari@màquina real%C27 $2%O, IP real IP%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Ara esteu parlant a $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tHeu estat expulsat de $2 per $3 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tHeu deixat el canal $3" + +#: src/common/textevents.h:411 +#, fuzzy +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tHeu deixat el canal $3 (%O%C23$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tHeu convidat%C26 $1%O a%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tAra sou conegut com a $2" + +#: src/common/text.c:347 +#, fuzzy +msgid "Loaded log from" +msgstr "Carrega des de" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** FINAL DEL REGISTRE A %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** INICI EL REGISTRE A %s\n" + +# ESTIC AQUÍ +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* No s'ha(n) pogut obrir el(s) fitxer(s) de registre amb permís\n" +" d'escriptura. Reviseu els permisos de %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Missatge de l'esquerra" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Missatge de la dreta" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "Sobrenom de la persona que entra" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "Canal al qual s'entra" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "Màquina de la persona" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Sobrenom" + +#: src/common/text.c:973 +msgid "The action" +msgstr "Acció" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Caràcter de mode" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Text identificat" + +#: src/common/text.c:980 +msgid "The text" +msgstr "Text" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Missatge" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Sobrenom antic" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Sobrenom nou" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Sobrenom de la persona que ha canviat el tema" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Tema" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Canal" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "Sobrenom de qui l'ha fet fora" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "Persona expulsada" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "Canal" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "Motiu" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "Sobrenom de la persona que surt" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "Hora" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "Creador" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Sobrenom" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Motiu" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Màquina" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "De qui prové" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "Hora en format x.x (vegeu més avall)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "Canal de destinació" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "So" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "Sobrenom de la persona" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "Esdeveniment CTCP" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "Sobrenom de la persona que estableix la contrasenya" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "La contrasenya" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "El sobrenom de la persona que estableix el límit" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "Límit" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "Sobrenom de la persona que dóna l'estatus d'operador" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "Sobrenom de la persona a qui s'ha fet operador" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "Sobrenom de la persona a qui s'ha fet semi-operador" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "Sobrenom de la persona que dóna l'estatus de semi-operador" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "Sobrenom de la persona que dóna l'estatus de veu" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "Sobrenom de la persona a qui s'ha donat veu" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "Sobrenom de la persona que dóna l'estatus de bandejat" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "Màscara d'usuaris bandejats" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "Sobrenom de qui ha eliminat la contrasenya" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "Sobrenom de qui ha eliminat el límit" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "Sobrenom de la persona que ha tret l'estatus d'operador" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "Sobrenom de la persona a qui s'ha tret l'estatus d'operador" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "Sobrenom de la persona que ha tret l'estatus de semi-operador" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Sobrenom de la persona a qui s'ha tret l'estatus de semi-operador" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "Sobrenom de la persona que ha tret l'estatus de veu" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "Sobrenom de la persona a qui s'ha tret l'estatus de veu" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "Sobrenom de la persona que ha tret l'estatus de bandejat" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "Sobrenom de la persona que dóna l'estatus d'exempt" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "Màscara d'usuaris als quals es dóna l'estatus d'exempt" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "Sobrenom de la persona a qui s'ha eliminat la exempció" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "Sobrenom de la persona que dóna l'estatus de convidat" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "Màscara de convidats" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "Sobrenom de la persona que ha tret l'estatus de convidat" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "Sobrenom de la persona que estableix el mode" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "Senyal del mode (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "Lletra del mode" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "Canal al qual s'estableix" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Nom d'usuari" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Nom complet" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Membre del canal/\"és un operador IRC\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Informació del servidor" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Temps inactiu" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Temps d'accés" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Motiu de l'absència" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Missatge" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Compte" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "usuari@màquina real" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "IP real" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Nom del canal" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Text" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Nom del servidor" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Sobrenom de la persona que us ha convidat" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Usuaris" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Sobrenom en ús" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Provant el sobrenom escollit" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Port" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Xarxa" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Cadena de modes" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "Adreça IP" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "Tipus de DCC" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Nom del fitxer" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Nom del fitxer de destí" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Ubicació" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Posició" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Mida" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "Cadena DCC" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Nombre d'elements notificats" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Nom del fitxer antic" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Nom del fitxer nou" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Receptor" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Màscara de la màquina" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Nom de la màquina" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "Paquet" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Segons" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Sobrenom de la persona que ha estat convidada" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Màscara d'usuaris bandejats" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Qui ha establert el bandejament" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Duració del bandejament" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Error en analitzar l'esdeveniment %s.\n" +"Es carrega el predeterminat." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"No s'ha pogut llegir el fitxer de so:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "La màquina remota ha tancat la connexió" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Connexió refusada" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "No hi ha cap ruta cap a la màquina" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "S'ha excedit el temps d'espera" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "No s'ha pogut assignar aquesta adreça" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Connexió reiniciada des de l'altre costat" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Illa Ascensió" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Emirats Àrabs Units" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Afganistan" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Antigua i Barbuda" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Albània" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Armènia" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Antilles Holandeses" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Antàrtida" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Argentina" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "DNS invers" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Samoa Americana" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Àustria" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "Camp de l'OTAN" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Austràlia" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Illes Aland" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Azerbaitjan" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Bòsnia i Hercegovina" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Bangladesh" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Bèlgica" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Bulgària" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Bahrain" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Negocis" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Benín" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Brunei Darussalam" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Bolívia" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Brasil" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Bahames" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Bhutan" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Illa Bouvet" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Bielorússia" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Canadà" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Illes Cocos" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "República Democràtica del Congo" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "República Centreafricana" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Congo" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Suïssa" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Costa d'Ivori" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Illes Cook" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Xile" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Camerun" + +#: src/common/util.c:898 +msgid "China" +msgstr "Xina" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Colòmbia" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Internic Comercial" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Sèrbia i Montenegro" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Cuba" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Cap Verd" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Illa Christmas" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Xipre" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "República Txeca" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Alemanya" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Djibouti" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Dinamarca" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Dominica" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "República Dominicana" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Algèria" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Equador" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Institució educativa" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Estònia" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Egipte" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Sàhara Occidental" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Espanya" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Etiòpia" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Unió Europea" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Finlàndia" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Fiji" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Illes Malvines" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Micronèsia" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Illes Faroe" + +#: src/common/util.c:928 +msgid "France" +msgstr "França" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Gran Bretanya" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Granada" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Geòrgia" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Guaiana Francesa" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Illes del Canal Britànic" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Ghana" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Groenlàndia" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Gàmbia" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Institució governamental" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Guadalupe" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Guinea Equatorial" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Grècia" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Illes Geòrgia del Sud i Sandwich del Sud" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Guinea Bissau" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Guyana" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Illes Heard i McDonald" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Hondures" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Croàcia" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Haití" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Hongria" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Indonèsia" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Irlanda" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Israel" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Illa de Man" + +#: src/common/util.c:959 +msgid "India" +msgstr "Índia" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Informatiu" + +#: src/common/util.c:961 +msgid "International" +msgstr "Internacional" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Territori Britànic de l'Oceà Índic" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Iraq" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Iran" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Islàndia" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Itàlia" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Jamaica" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Jordània" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Japó" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Kenya" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Kyrgyzstan" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Cambodja" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Comoros" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "St. Kitts i Nevis" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Corea del Nord" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Corea del Sud" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Kuwait" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Illes Caiman" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Kazakhstan" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Líban" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Saint Lucia" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Libèria" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Lituània" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Luxemburg" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Letònia" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Líbia" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Marroc" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Mónaco" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Moldàvia" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "Servei mèdic dels Estats Units" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Madagascar" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Illes Marshall" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Institució militar" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Macedònia" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Mongòlia" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Macau" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Illes Marianes del Nord" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Martinica" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Mauritània" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Maurici" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Maldives" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Mèxic" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Malàisia" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Moçambic" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Namíbia" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Nova Caledònia" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Níger" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Xarxa Internic" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Illes Norfolk" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Nigèria" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Països Baixos" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Noruega" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Nova Zelanda" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Organització Internic sense ànim de lucre" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Panamà" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Perú" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Polinèsia Francesa" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Papua Nova Guinea" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Filipines" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Paquistan" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Polònia" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "St. Pierre i Miquelon" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Puerto Rico" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Palestina" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Portugal" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Paraguai" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Qatar" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Reunion" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Romania" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "ARPAnet de l'antiga escola" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Rússia" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Rwanda" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Aràbia Saudita" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Illes Salomó" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Seychelles" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Sudan" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Suècia" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Singapur" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "St. Helena" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Eslovènia" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Illes Svalbard i Jan Mayen" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "República Eslovaca" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Somàlia" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Surinam" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "Sao Tomé i Príncipe" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Antiga URSS" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Síria" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Swazilàndia" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Illes Turks i Caicos" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Txad" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Territoris Francesos del Sud" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Tailàndia" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Tadjikistan" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Timor Oriental" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Tunísia" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Turquia" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Trinitat i Tobago" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Tanzània" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Ucraïna" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Regne Unit" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "Estats Units d'Amèrica" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Uruguai" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Uzbekistan" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Ciutat Estat del Vaticà" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "St. Vincent i les Granadines" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Veneçuela" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Illes Verge Britàniques" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "Illes Verge Americanes" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Illes Wallis i Futuna" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Iemen" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Iugoslàvia" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Sud-àfrica" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Zàmbia" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Desconegut" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "Obre una finestra de diàleg" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "Envia un fitxer" + +#: src/common/xchat.c:728 +msgid "_User Info (WhoIs)" +msgstr "" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +msgid "O_perator Actions" +msgstr "" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Dóna l'estatus d'operador" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Treu l'estatus d'operador" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Dóna l'estatus de veu" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Treu l'estatus de veu" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Fes fora/Bandeja" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Fes fora" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Bandeja" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "Fes fora i bandeja" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Deixa el canal" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Entra al canal..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Introduïu el canal on entrar:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Enllaços del servidor" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Ping al servidor" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Oculta la versió" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Op" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "adéu" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Introduïu el motiu per a fer fora a %s:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Envia fitxer" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Diàleg" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "WhoIs (Qui és?)" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Envia" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Xat" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Neteja" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +#, fuzzy +msgid "Couldn't connect to session bus" +msgstr "No s'ha pogut establir connexió amb el bus de la sessió: %s\n" + +#: src/common/dbus/dbus-client.c:86 +#, fuzzy +msgid "Failed to complete NameHasOwner" +msgstr "" +"Error en obrir el tipus de lletra:\n" +"\n" +"%s" + +#: src/common/dbus/dbus-client.c:112 +#, fuzzy +msgid "Failed to complete Command" +msgstr "" +"Error en obrir el tipus de lletra:\n" +"\n" +"%s" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "accés remot" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "connector per a l'accés remot a través del DBUS" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "No s'ha pogut establir connexió amb el bus de la sessió: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "No s'ha pogut adquirir %s: %s\n" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "_Quant a" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Un client d'IRC multiplataforma" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Taula de caràcters" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +#, fuzzy +msgid "Not connected." +msgstr "Desconnecta" + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Heu de seleccionar algun usuari bandejat." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Màscara" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "Per" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Data" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" + +#: src/fe-gtk/banlist.c:391 +#, fuzzy, c-format +msgid "XChat: Ban List (%s)" +msgstr "X-Chat: Llista d'usuaris bandejats (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Elimina" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Escurça" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Refresca" + +#: src/fe-gtk/chanlist.c:111 +#, fuzzy, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Estadístiques d'usuaris i canals: %d/%d usuaris en %d/%d canals" + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Seleccioneu un nom de fitxer" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +#, fuzzy +msgid "_Join Channel" +msgstr "Entra al canal" + +#: src/fe-gtk/chanlist.c:633 +#, fuzzy +msgid "_Copy Channel Name" +msgstr "Nom del canal" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "" + +#: src/fe-gtk/chanlist.c:724 +#, fuzzy, c-format +msgid "XChat: Channel List (%s)" +msgstr "X-Chat: Llista de canals (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:787 +#, fuzzy +msgid "_Download List" +msgstr "Desa els fitxers baixats a:" + +#: src/fe-gtk/chanlist.c:793 +#, fuzzy +msgid "Save _List..." +msgstr "Llista de servidors..." + +#: src/fe-gtk/chanlist.c:806 +#, fuzzy +msgid "Show only:" +msgstr "Mostra el_s colors" + +#: src/fe-gtk/chanlist.c:818 +#, fuzzy +msgid "channels with" +msgstr "Canal" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "a" + +#: src/fe-gtk/chanlist.c:843 +#, fuzzy +msgid "users." +msgstr "usuaris" + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "Nom del canal" + +#: src/fe-gtk/chanlist.c:882 +#, fuzzy +msgid "Search type:" +msgstr "Cerca el text..." + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Cerca:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Envia un fitxer a %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "La transferència d'aquest fitxer no es pot reprendre." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"No s'ha pogut accedir al fitxer: %s\n" +"%s.\n" +"No es pot continuar." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"El fitxer del directori de recepcions és més gran que el fitxer ofert. No es " +"pot continuar." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "" +"No es pot reprendre la recepció del mateix fitxer des de dues persones " +"diferents." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Estat" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Fitxer" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Tots dos" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "" + +#: src/fe-gtk/dccgui.c:804 +#, fuzzy +msgid "Downloads" +msgstr "Desa els fitxers baixats a:" + +#: src/fe-gtk/dccgui.c:809 +#, fuzzy +msgid "Details" +msgstr "Les vostres dades" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Fitxer:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "Adreça:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Avorta" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Accepta" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Reprèn" + +#: src/fe-gtk/dccgui.c:830 +#, fuzzy +msgid "Open Folder..." +msgstr "Envia un fitxer..." + +#: src/fe-gtk/dccgui.c:990 +#, fuzzy +msgid "XChat: DCC Chat List" +msgstr "X-Chat: Llista de xats DCC" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Rebut" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Enviat" + +#: src/fe-gtk/dccgui.c:1004 +#, fuzzy +msgid "Start Time" +msgstr "Hora d'inici" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*NOU*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "EDITA'M" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Nom" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Ordre" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Mou amunt" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Mou avall" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Cancel·la" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Desa" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Afegeix" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Esborra" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Ordena" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Ajuda" + +#: src/fe-gtk/fe-gtk.c:124 +#, fuzzy +msgid "Don't auto connect to servers" +msgstr "Reconnexió automàtica al servidor" + +#: src/fe-gtk/fe-gtk.c:125 +#, fuzzy +msgid "Use a different config directory" +msgstr "useu un directori de configuració diferent" + +#: src/fe-gtk/fe-gtk.c:126 +#, fuzzy +msgid "Don't auto load any plugins" +msgstr "no carreguis automàticament els connectors" + +#: src/fe-gtk/fe-gtk.c:127 +#, fuzzy +msgid "Show plugin auto-load directory" +msgstr "mostra el directori de càrrega automàtica de connectors" + +#: src/fe-gtk/fe-gtk.c:128 +#, fuzzy +msgid "Show user config directory" +msgstr "mostra el directori de configuració de l'usuari" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Executa l'ordre:" + +#: src/fe-gtk/fe-gtk.c:132 +#, fuzzy +msgid "Open URL or execute command in an existing XChat" +msgstr "Obre l'URL en una instància existent de l'XChat-GNOME" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +#, fuzzy +msgid "level" +msgstr "Mai" + +#: src/fe-gtk/fe-gtk.c:135 +#, fuzzy +msgid "Show version information" +msgstr "mostra informació de la versió" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"No s'ha pogut obrir el tipus de lletra:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "El buffer de cerca està buit.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d octets" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"L'acció ^BRun Command^B executa les dades de Dades 1 com si les haguessiu " +"escrit a la línia d'entrada on heu escrit la seqüència de tecles. Pot " +"contenir text (que s'enviarà al canal/persona), ordres, o ordres d'usuari. " +"Durant l'execució tots els caràcters ^B\\n^B de Dades 1 s'utilitzen per " +"delimitar diferents ordres, de manera que se'n pot executar més d'una. Si " +"voleu escriure un signe ^B\\^B en el text heu d'escriure ^B\\\\^B" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"L'ordre ^BChange Page^B passa una pàgina a la llibreta. Poseu a Dades 1 la " +"pàgina a la qual voleu anar. Si Dades 2 no està en blanc el canvi de pàgina " +"serà relatiu a la posició actual" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"L'ordre ^BInsert in Buffer^B insereix el contingut de Dades 1 en el lloc on " +"hagueu escrit la seqüència de tecles a la posició del cursor" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"L'ordre ^BScroll Page^B desplaça l'objecte de text una pàgina (o una línia) " +"amunt o avall. Definiu Dades 1 com a «Up» (amunt), «Down» (avall), +1 o -1." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"L'ordre ^BSet Buffer^B col·loca el contingut de Dades 1 a l'objecte on heu " +"premut la seqüència de tecles" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"L'ordre ^BLast Command^B col·loca l'última ordre executada a la línia - " +"igual que prémer la fletxa amunt a la shell" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"L'ordre ^BNext Command^B col·loca la següent ordre a la línia - igual que " +"prémer la fletxa avall a la shell" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Aquesta ordre canvia el text de la línia per a completar un sobrenom o ordre " +"incompleta. Si Dades 1 no està en blanc una doble tabulació seleccionarà " +"l'anterior sobrenom i no el següent" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Aquesta ordre desplaça amunt o avall la llista de sobrenoms. Si Dades 1 està " +"en blanc es desplaçarà avall, i en cas contrari, amunt" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Aquesta ordre cerca l'última paraula escrita a la llista de substitucions i " +"la substitueix en cas de trobar-la" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Aquesta ordre mou la pestanya davantera una posició cap a l'esquerra" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Aquesta ordre mou la pestanya davantera una posició cap a la dreta" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Aquesta ordre mou el conjunt de pestanyes actual cap a l'esquerra" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Aquesta ordre mou el conjunt de pestanyes actual cap a la dreta" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "Introdueix la línia a l'historial però no l'envia al servidor" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "Hi ha hagut un error en carregar la configuració dels vincles de tecla" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<cap>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Modificador" + +# Contrasenya per als canals protegits per contrasenya (dpm) +# Aquí està parlant de tecles (eac) +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Tecla" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Acció" + +#: src/fe-gtk/fkeys.c:718 +#, fuzzy +msgid "XChat: Keyboard Shortcuts" +msgstr "X-Chat: Vincles de tecla" + +# la paraula 'shift' va impresa a la tecla +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Dades 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Dades 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "" +"Error en obrir el fitxer de configuració del teclat\n" +"\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Nom de tecla «%s» desconegut en el fitxer de configuració\n" +"de vincles de tecla. S'avorta la càrrega, si us plau\n" +"reviseu %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Acció «%s» desconeguda en el fitxer de configuració\n" +"de vincles de tecla. S'avorta la càrrega, si us plau\n" +"reviseu %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"S'esperava una línia de Dades (començada per Dx{:|!}) però s'ha obtingut:\n" +"%s\n" +"\n" +"S'avorta la càrrega, si us plau, reviseu %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"El fitxer de configuració de vincles de tecla està malmès.\n" +"Si us plau, reviseu %s/keybindings.conf\n" +"\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "No es pot escriure a aquest fitxer." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Aquest fitxer no es pot llegir." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Aquesta màscara ja existeix." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Privats" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Avisos" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Invitacions" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Deixa d'ignorar" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Introduïu una màscara a ignorar:" + +#: src/fe-gtk/ignoregui.c:353 +#, fuzzy +msgid "XChat: Ignore list" +msgstr "X-Chat: Llista d'usuaris ignorats" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Estatus d'ignorat:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Canal:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privats:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Avisos:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Invitacions:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +#, fuzzy +msgid "Add..." +msgstr "Afegeix" + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "" + +#: src/fe-gtk/joind.c:125 +#, fuzzy +msgid "XChat: Connection Complete" +msgstr "S'ha excedit el temps d'espera" + +#: src/fe-gtk/joind.c:150 +#, fuzzy, c-format +msgid "Connection to %s complete." +msgstr "Connexió reiniciada des de l'altre costat" + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "" + +#: src/fe-gtk/joind.c:179 +#, fuzzy +msgid "_Join this channel:" +msgstr "Entra al canal" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" + +#: src/fe-gtk/joind.c:198 +#, fuzzy +msgid "O_pen the Channel-List window." +msgstr "Obre els canals en:" + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "" + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Diàleg amb" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "El tema per a %s és: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "No hi ha cap tema establert" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" + +#: src/fe-gtk/maingui.c:1283 +#, fuzzy +msgid "Quit XChat?" +msgstr "Quant a l'X-Chat" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1310 +#, fuzzy, c-format +msgid "You are connected to %i IRC networks." +msgstr "Connecta-t'hi automàticament a l'inici" + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "" + +#: src/fe-gtk/maingui.c:1314 +#, fuzzy +msgid "Some file transfers are still active." +msgstr "" +"Encara hi ha transferències de fitxers actives, voleu sortir de l'X-Chat?" + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1552 +#, fuzzy +msgid "Insert Attribute or Color Code" +msgstr "Inseriu el codi de color" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "" + +#: src/fe-gtk/maingui.c:1555 +#, fuzzy +msgid "<u>Underline</u>" +msgstr "Subratllat" + +#: src/fe-gtk/maingui.c:1557 +#, fuzzy +msgid "Normal" +msgstr "Noruega" + +#: src/fe-gtk/maingui.c:1559 +#, fuzzy +msgid "Colors 0-7" +msgstr "Colors" + +#: src/fe-gtk/maingui.c:1569 +#, fuzzy +msgid "Colors 8-15" +msgstr "Colors" + +#: src/fe-gtk/maingui.c:1612 +#, fuzzy +msgid "_Settings" +msgstr "Conf_iguració" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "Amaga els missatges d'entrades i sortides" + +#: src/fe-gtk/maingui.c:1625 +#, fuzzy +msgid "_Extra Alerts" +msgstr "Altres andròmines" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "Avís sonor a cada missatge" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +#, fuzzy +msgid "_Detach" +msgstr "Separa la pestanya" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "_Tanca" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "El límit d'usuaris ha de ser un número!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Protecció del tema" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Cap missatge de fora" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Secret" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Només convidats" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Moderat" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Llista de bandejats" + +# Contrasenya per als canals protegits per contrasenya (dpm) +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Contrasenya" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Límit d'usuaris" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Mostra/Oculta la llista d'usuaris" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"No s'ha pogut fer transparent el fons!\n" +"\n" +"Potser esteu utilitzant un gestor de finestres\n" +"no compatible que no està soportat.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Introduïu el nou sobrenom:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Màquina desconeguda" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Nom real:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Usuari:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "País:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Servidor:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Últim missatge:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Missatge d'absència:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:944 +#, fuzzy +msgid "Open Link in Browser" +msgstr "_Obre l'enllaç en el navegador" + +#: src/fe-gtk/menu.c:945 +#, fuzzy +msgid "Copy Selected Link" +msgstr "Copia l'URL seleccionat" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Entra al canal" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Deixa el canal" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Canvia de canal" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +#, fuzzy +msgid "XChat: User menu" +msgstr "X-Chat: Menú d'usuari" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Edita aquest menú..." + +#: src/fe-gtk/menu.c:1280 +#, fuzzy +msgid "Retrieve channel list..." +msgstr "Llista de canals..." + +#: src/fe-gtk/menu.c:1348 +#, fuzzy +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Ordres d'usuari - Codis especials:\n" +"\n" +"%c = canal actual\n" +"%m = informació de la màquina\n" +"%n = el vostre sobrenom\n" +"%t = hora i data\n" +"%v = versió de l'xchat\n" +"%2 = paraula 2\n" +"%3 = paraula 3\n" +"&2 = paraula 2 fins a final de línia\n" +"&3 = paraula 3 fins a final de línia\n" +"\n" +"p.ex:\n" +"/cmd john hello\n" +"\n" +"%2 seria \"john\"\n" +"&2 seria \"john hello\"." + +#: src/fe-gtk/menu.c:1364 +#, fuzzy +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Botons de la llista d'usuaris - Codis especials:\n" +"\n" +"%a = tots els sobrenoms seleccionats\n" +"%c = canal actual\n" +"%h = màquina del sobrenom seleccionat\n" +"%m = informació de la màquina\n" +"%n = el vostre sobrenom\n" +"%s = sobrenom seleccionat\n" +"%t = hora i data\n" + +#: src/fe-gtk/menu.c:1374 +#, fuzzy +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Botons de diàleg - Codis especials:\n" +"\n" +"%a = tots els sobrenoms seleccionats\n" +"%c = canal actual\n" +"%h = màquina del sobrenom seleccionat\n" +"%m = informació de la màquina\n" +"%n = el vostre sobrenom\n" +"%s = sobrenom seleccionat\n" +"%t = hora i data\n" + +#: src/fe-gtk/menu.c:1384 +#, fuzzy +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"Respostes CTCP - Codis especials:\n" +"\n" +"%d = dades (el CTCP sencer)\n" +"%m = informació de la màquina\n" +"%s = sobrenom de qui envia el ctcp\n" +"%t = hora i data\n" +"%2 = paraula 2\n" +"%3 = paraula 3\n" +"&2 = paraula 2 fins a final de línia\n" +"&3 = paraula 3 fins a final de línia\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, fuzzy, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"Gestió d'URLs - Codis especials:\n" +"\n" +"%s = la cadena d'URL\n" +"\n" +"Poseu un ! al davant de l'ordre per\n" +"indicar que l'ha executar la shell" + +#: src/fe-gtk/menu.c:1404 +#, fuzzy +msgid "XChat: User Defined Commands" +msgstr "X-Chat: Ordres definides per l'usuari" + +#: src/fe-gtk/menu.c:1411 +#, fuzzy +msgid "XChat: Userlist Popup menu" +msgstr "X-Chat: Menú emergent de la llista d'usuaris" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "" + +#: src/fe-gtk/menu.c:1418 +#, fuzzy +msgid "XChat: Replace" +msgstr "X-Chat: Substitueix" + +#: src/fe-gtk/menu.c:1425 +#, fuzzy +msgid "XChat: URL Handlers" +msgstr "X-Chat: Gestió d'URLs" + +#: src/fe-gtk/menu.c:1444 +#, fuzzy +msgid "XChat: Userlist buttons" +msgstr "X-Chat: Botons de la llista d'usuaris" + +#: src/fe-gtk/menu.c:1451 +#, fuzzy +msgid "XChat: Dialog buttons" +msgstr "X-Chat: Botons de diàleg" + +#: src/fe-gtk/menu.c:1458 +#, fuzzy +msgid "XChat: CTCP Replies" +msgstr "X-Chat: Respostes CTCP" + +#: src/fe-gtk/menu.c:1564 +#, fuzzy +msgid "_XChat" +msgstr "_X-Chat" + +#: src/fe-gtk/menu.c:1565 +#, fuzzy +msgid "Network Li_st..." +msgstr "Configuració de la xarxa" + +#: src/fe-gtk/menu.c:1568 +#, fuzzy +msgid "_New" +msgstr "Nou" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Pestanya de servidor..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Pestanya de canal..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Finestra de servidor..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Finestra de canals..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +#, fuzzy +msgid "_Load Plugin or Script..." +msgstr "Carrega un connector o script..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +#, fuzzy +msgid "_Quit" +msgstr "Surt" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "" + +#: src/fe-gtk/menu.c:1591 +#, fuzzy +msgid "_Menu Bar" +msgstr "Barra de menú" + +#: src/fe-gtk/menu.c:1592 +#, fuzzy +msgid "_Topic Bar" +msgstr "Barra del tema" + +#: src/fe-gtk/menu.c:1593 +#, fuzzy +msgid "_User List" +msgstr "Llista d'usuaris" + +#: src/fe-gtk/menu.c:1594 +#, fuzzy +msgid "U_serlist Buttons" +msgstr "Botons de la llista d'usuaris..." + +#: src/fe-gtk/menu.c:1595 +#, fuzzy +msgid "M_ode Buttons" +msgstr "Botons de mode" + +#: src/fe-gtk/menu.c:1597 +#, fuzzy +msgid "_Channel Switcher" +msgstr "_Tema del canal" + +#: src/fe-gtk/menu.c:1599 +#, fuzzy +msgid "_Tabs" +msgstr "Pestanyes" + +#: src/fe-gtk/menu.c:1600 +#, fuzzy +msgid "T_ree" +msgstr "Traça" + +#: src/fe-gtk/menu.c:1602 +#, fuzzy +msgid "_Network Meters" +msgstr "Monitor de la xarxa" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Desactivat" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Gràfic" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "_Servidor" + +#: src/fe-gtk/menu.c:1611 +#, fuzzy +msgid "_Disconnect" +msgstr "Desconnecta" + +#: src/fe-gtk/menu.c:1612 +#, fuzzy +msgid "_Reconnect" +msgstr "Torna a connectar" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "Entra al canal..." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "Entra al canal..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Marca'm _absent" + +#: src/fe-gtk/menu.c:1619 +#, fuzzy +msgid "_Usermenu" +msgstr "Nom d'usuari" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "Conf_iguració" + +#: src/fe-gtk/menu.c:1622 +#, fuzzy +msgid "_Preferences" +msgstr "Preferè_ncies..." + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Avançat" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Substitució automàtica..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "Respostes CTCP..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Botons de diàleg..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Vincles de tecla..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Esdeveniments..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "Gestió d'URLs..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Ordres de l'usuari..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Botons de la llista d'usuaris..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Menú emergent de la llista d'usuaris..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_Finestra" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Llista d'usuaris bandejats..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Taula de caràcters..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Xat directe..." + +#: src/fe-gtk/menu.c:1640 +#, fuzzy +msgid "File Transfers..." +msgstr "Transferències de _fitxers" + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "Llista d'usuaris bandejats..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Llista d'usuaris ignorats..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Connectors i scripts..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Registre en brut..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "Capturador d'URLs..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Resitua la línia de separació" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "_Neteja el text" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Cerca el text..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Desa el text..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_Ajuda" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "_Contingut" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "_Quant a" + +#: src/fe-gtk/menu.c:2147 +#, fuzzy +msgid "_Attach" +msgstr "Adjunta una pestanya" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Vist per últim cop" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Desconnectat" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Mai" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Connectat" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Introduïu el sobrenom a afegir:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "X-Chat: Llista de fitxers enviats" + +#: src/fe-gtk/notifygui.c:434 +#, fuzzy +msgid "Open Dialog" +msgstr "Obre una finestra de diàleg" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:589 +#, fuzzy +msgid "_Restore" +msgstr "Xarxa" + +#: src/fe-gtk/plugin-tray.c:591 +#, fuzzy +msgid "_Hide" +msgstr "Oculta" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +#, fuzzy +msgid "Channel Message" +msgstr "Nom del canal" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +#, fuzzy +msgid "Private Message" +msgstr "Missatge privat de %s" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +#, fuzzy +msgid "Highlighted Message" +msgstr "Avís sonor quan hi hagi missatges realçats" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "Absència" + +#: src/fe-gtk/plugin-tray.c:605 +#, fuzzy +msgid "_Back" +msgstr "Negre" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, fuzzy, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "Missatge privat de %s" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Versió" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Descripció" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Seleccioneu el connector o script a carregar" + +#: src/fe-gtk/plugingui.c:221 +#, fuzzy +msgid "XChat: Plugins and Scripts" +msgstr "X-Chat: Connectors i scripts" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "_Carrega..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "_Descarrega" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +#, fuzzy +msgid "Save As..." +msgstr "Desa com a" + +#: src/fe-gtk/rawlog.c:95 +#, fuzzy, c-format +msgid "XChat: Rawlog (%s)" +msgstr "X-Chat: Registre brut (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Neteja" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "La finestra que vàreu obrir per aquesta cerca ja no existeix." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "" + +#: src/fe-gtk/search.c:116 +#, fuzzy +msgid "XChat: Search" +msgstr "X-Chat: Cerca" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "_Cerca" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Xarxa nova" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Voleu eliminar la xarxa \"%s\" i tots els seus servidors?" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "Canal" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "X-Chat: Llista de canals (%s)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "Contrasenya:" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "Edita" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "El nom d'usuari i el nom real no es poden deixar en blanc." + +#: src/fe-gtk/servlistgui.c:1397 +#, fuzzy, c-format +msgid "XChat: Edit %s" +msgstr "X-Chat: Detalls de %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Servidors per a %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Connectar-se només al servedor seleccionat" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Quan falla la connexió, no ho reintenta amb cada un dels servidors." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Les vostres dades" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Utilitza la informació global d'usuari" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "Sobrenom:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Segona opció:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "Nom d'usuari" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "Nom real:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Connexió" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Connecta-t'hi automàticament a l'inici" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "Utilitza un servidor intermedi" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "Utilitza SSL amb tots els servidors d'aquesta xarxa" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Accepta certificats SSL invàlids" + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "En deixar el canal:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "Canals on entrar, separats per comes, però sense espais!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Ordre de connexió:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Executa aquesta ordre un cop establerta la connexió. Si en necessiteu més " +"d'una poseu LOAD -e <fitxer> on <fitxer> és un fitxer de text amb les ordres " +"a executar." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Contrasenya per al servidor de sobrenoms:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Contrasenya per al servidor:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Contrasenya per al servidor. En cas de dubte, deixeu-ho en blanc." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Joc de caràcters:" + +#: src/fe-gtk/servlistgui.c:1649 +#, fuzzy +msgid "XChat: Network List" +msgstr "X-Chat: Llista de notificació" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Informació de l'usuari" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Tercera opció:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Xarxes" + +#: src/fe-gtk/servlistgui.c:1786 +#, fuzzy +msgid "Skip network list on startup" +msgstr "Omet mostrar la llista de servidors a l'inici" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "Edita..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "Ordena" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "Connecta" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Aparença de la finestra de text" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Tipus de lletra:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Imatge de fons:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Línies fora la finestra:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Acoloreix els sobrenoms" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Assigna un color diferent a cada persona" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Sagna els sobrenoms" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Alinea els sobrenoms a la dreta" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Fons transparent" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Mostra una línia de separació" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Insereix una línia vermella després de l'últim text llegit" + +#: src/fe-gtk/setup.c:115 +#, fuzzy +msgid "Transparency Settings" +msgstr "Valors del tint" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Roig:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Verd:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Blau:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Data i hora" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Mostra marques horàries" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Format de la data i l'hora" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Per a més detalls consulteu la pàgina del manual strftime (3)." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Línia d'entrada" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Usa el tipus de lletra i colors de la finestra de text" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Comprovació de l'ortografia" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Compleció de sobrenoms" + +#: src/fe-gtk/setup.c:144 +#, fuzzy +msgid "Automatic nick completion (without TAB key)" +msgstr "Compleció automàtica de sobrenoms" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Sufix de compleció de sobrenoms:" + +#: src/fe-gtk/setup.c:147 +#, fuzzy +msgid "Nick completion sorted:" +msgstr "Sufix de compleció de sobrenoms:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Codis de la caixa d'entrada" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Interpreta %nnn com a un valor ASCII" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Interpreta %C, %B com a color, negreta, etc" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, primer els operadors" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, operadors al final" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Desordenat" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Dalt" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Baix" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Oculta" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Llista d'usuaris" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Mostra els noms de les màquines a la llista d'usuaris" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Ordena la llista d'usuaris amb:" + +#: src/fe-gtk/setup.c:205 +#, fuzzy +msgid "Show user list at:" +msgstr "Mostra/Oculta la llista d'usuaris" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Seguiment d'absències" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "En canals més petits de:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Acció per al doble-clic" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Finestres" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Pestanyes" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Sempre" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Només les pestanyes demanades" + +#: src/fe-gtk/setup.c:242 +#, fuzzy +msgid "Tree" +msgstr "Traça" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Obre una pestanya adicional per als missatges del servidor" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Obre una pestanya adicional per als avisos del servidor" + +#: src/fe-gtk/setup.c:252 +#, fuzzy +msgid "Open a new tab when you receive a private message" +msgstr "Obre una pestanya adicional per als missatges del servidor" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Ordena les pestanyes per ordre alfabètic" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "Pestanyes petites" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Dóna el focus a les pestanyes noves:" + +#: src/fe-gtk/setup.c:258 +#, fuzzy +msgid "Show channel switcher at:" +msgstr "En canals més petits de:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Abreuja el títol a:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "lletres com a màxim." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Pestanyes o finestres" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Obre els canals en:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Obre els diàlegs en:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Obre les utilitats en:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Voleu obrir DCCs, notificacions, etc. en pestanyes o finestres?" + +#: src/fe-gtk/setup.c:271 +#, fuzzy +msgid "No" +msgstr "Cap" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Fitxers i directoris" + +#: src/fe-gtk/setup.c:280 +#, fuzzy +msgid "Auto accept file offers:" +msgstr "Accepta automàticament fitxers" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Desa els fitxers baixats a:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Mou els fitxers completats a:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Afegeix el sobrenom en els noms dels fitxers" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Configuració de la xarxa" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Obtingues la meva adreça IP des del servidor" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Pregunta al servidor per la vostra adreça real. Useu això si teniu una " +"adreça 192.168.*.*" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "Adreça IP" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Anuncia aquesta adreça com a pròpia quan s'ofereixin fitxers." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Primer port d'enviament DCC:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Últim port d'enviament DCC:" + +#: src/fe-gtk/setup.c:292 +#, fuzzy +msgid "!Leave ports at zero for full range." +msgstr "(Deixeu els ports a zero per usar tot l'interval)." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Velocitat màxima de transferència de fitxers (octets per segon)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Un únic enviament:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Velocitat màxima per a una transferència" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Una única recepció:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Tots els enviaments combinats:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Velocitat màxima per a tot el tràfic" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Totes les recepcions combinades:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Alertes" + +#: src/fe-gtk/setup.c:333 +#, fuzzy +msgid "Show tray balloons on:" +msgstr "Mostra les pestanyes a:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:339 +#, fuzzy +msgid "Enable system tray icon" +msgstr "Activa el seguiment d'absències" + +#: src/fe-gtk/setup.c:341 +#, fuzzy +msgid "Highlighted Messages" +msgstr "Avís sonor quan hi hagi missatges realçats" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:344 +#, fuzzy +msgid "Extra words to highlight:" +msgstr "Altres paraules a realçar:" + +#: src/fe-gtk/setup.c:345 +#, fuzzy +msgid "Nick names not to highlight:" +msgstr "Sobrenoms que no s'han de realçar:" + +#: src/fe-gtk/setup.c:346 +#, fuzzy +msgid "Nick names to always highlight:" +msgstr "Sobrenoms que no s'han de realçar:" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "(Llista de paraules separades per comes)." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Missatges per defecte" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "En sortir:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "En deixar el canal:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Missatge d'absència:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Absència" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Anuncia missatge d'absència" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Anuncia l'absència a tots els canals" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Anúncia l'absència una sola vegada" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Mostra els anuncis idèntics d'absència una sola vegada" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Treu l'estatus d'absent automàticament" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Desmarca'm automàticament com a absent abans d'enviar missatges" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Configuració avançada" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Retard de reconnexió automàtica:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Mostra els MODEs en brut" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Whois a cada notificació" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" +"Envia un /WHOIS a cada usuari de la llista de notificació quan es connecti" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Amaga els missatges d'entrades i sortides" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Oculta els missatges d'entrada i sortida del canal" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Obre finestres DCC automàticament" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Finestra d'enviament" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Finestra de rebudes" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Finestra de xat" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Enregistrament" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "Enregistra les converses" + +#: src/fe-gtk/setup.c:388 +#, fuzzy +msgid "Log filename:" +msgstr "Màscara del fitxer:" + +#: src/fe-gtk/setup.c:389 +#, fuzzy, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "(%s=Servidor %c=Canal %n=Xarxa)." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Afegeix la data i l'hora en el registre" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Format de l'informació horària:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Inhabilitat)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "" + +#: src/fe-gtk/setup.c:414 +#, fuzzy +msgid "All Connections" +msgstr "Connexió" + +#: src/fe-gtk/setup.c:415 +#, fuzzy +msgid "IRC Server Only" +msgstr "Només convidats" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "La vostra adreça" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Vincula a:" + +#: src/fe-gtk/setup.c:424 +#, fuzzy +msgid "Only useful for computers with multiple addresses." +msgstr "(Només és útil en ordinadors amb múltiples adreces)." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Servidor intermediari" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Nom de la màquina:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Port:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Tipus:" + +#: src/fe-gtk/setup.c:430 +#, fuzzy +msgid "Use proxy for:" +msgstr "Utilitza un servidor intermedi" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "" + +#: src/fe-gtk/setup.c:434 +#, fuzzy +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Usa un sistema d'autenticació pel servidor intermedi (HTTP i Socks5)" + +#: src/fe-gtk/setup.c:436 +#, fuzzy +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Usa un sistema d'autenticació pel servidor intermedi (HTTP i Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Nom d'usuari:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Contrasenya:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Seleccioneu un fitxer d'imatge" + +#: src/fe-gtk/setup.c:905 +#, fuzzy +msgid "Select Download Folder" +msgstr "Seleccioneu un color" + +# títol d'un diàleg. eac +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Seleccioneu un tipus de lletra" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Vés a..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Marca els usuaris identificats amb:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Marca els usuaris no identificats amb:" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Seleccioneu un color" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Colors del text" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "Colors del mIRC:" + +#: src/fe-gtk/setup.c:1305 +#, fuzzy +msgid "Local colors:" +msgstr "Colors adicionals:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Primer pla:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Fons:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Text seleccionat" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Colors de l'interfície" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Dades noves:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Línia de separació:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Missatge nou:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Usuari absent::" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Text realçat:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Esdeveniment" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Fitxer d'àudio" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Seleccioneu un fitxer d'àudio" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Mètode de reproducció:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "Programa extern de reproducció:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "Programa _extern" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_Automàtic" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "Directori de fitxers d'àudio:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Fitxer d'àudio:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "_Vés a..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "Re_produeix" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Interfície" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Caixa de text" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Llista d'usuaris" + +#: src/fe-gtk/setup.c:1703 +#, fuzzy +msgid "Channel switcher" +msgstr "_Tema del canal" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Colors" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Conversacions" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "General" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Àudio" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Configuració de la xarxa" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Transferències de fitxers" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Categories" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" +"Algunes de les opcions que han canviat requereixen reiniciar l'X-Chat per a " +"tenir efecte." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*ATENCIÓ*\n" +"Acceptar automàticament DCCs al vostre\n" +"directori personal pot ser perillós. P.ex:\n" +"Algú podria enviar-vos un .bash_profile" + +#: src/fe-gtk/setup.c:2058 +#, fuzzy +msgid "XChat: Preferences" +msgstr "X-Chat: Preferències" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "S'ha produït un error en analitzar la cadena" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Aquest senyal sols ha passat %d arguments, $%d no és vàlid" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Imprimeix un fitxer de text" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Edició d'esdeveniments" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ Número" + +#: src/fe-gtk/textgui.c:440 +#, fuzzy +msgid "Load From..." +msgstr "Carrega des de" + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Comprova-ho tot" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +#, fuzzy +msgid "XChat: URL Grabber" +msgstr "X-Chat: capturador d'URLs" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Neteja la llista" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Copia l'URL seleccionat" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Copia" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Desa la llista a un fitxer" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d operadors, %d en total" + +#~ msgid "CLEAR, Clears the current text window" +#~ msgstr "CLEAR, Esborra el text de la finestra actual" + +#~ msgid "QUERY <nick>, opens up a new privmsg window to someone" +#~ msgstr "" +#~ "QUERY <sobrenom>, obre una finestra nova de missatges privats per a algú" + +#~ msgid "%C18*$t$1%O $2" +#~ msgstr "%C18*$t$1%O $2" + +#~ msgid "%C21*%O$t%C21%B$1%O%C21 $2" +#~ msgstr "%C21*%O$t%C21%B$1%O%C21 $2" + +#~ msgid "%C18%B%B$4$1%O%C18%O$t$2" +#~ msgstr "%C18%B%B$4$1%O%C18%O$t$2" + +#~ msgid "$4%C21%B$1%O$t%C21$2" +#~ msgstr "$4%C21%B$1%O$t%C21$2" + +#~ msgid "%C28-%C29$1/$2%C28-%O$t$3" +#~ msgstr "%C28-%C29$1/$2%C28-%O$t$3" + +#~ msgid "$1$t$2" +#~ msgstr "$1$t$2" + +#~ msgid "%C19>%O$1%C19<%O$t$2%O" +#~ msgstr "%C19>%O$1%C19<%O$t$2%O" + +#~ msgid "%C16*%O$t$1%O" +#~ msgstr "%C16*%O$t$1%O" + +#~ msgid "%C28-%C29$1%C28-%O$t$2" +#~ msgstr "%C28-%C29$1%C28-%O$t$2" + +#~ msgid "%C19>%O$1%C19<%O$t$2" +#~ msgstr "%C19>%O$1%C19<%O$t$2" + +#~ msgid "%C28*%C29$3$1%C28*$t%O$2" +#~ msgstr "%C28*%C29$3$1%C28*$t%O$2" + +#~ msgid "%C18%B%B$3$1%O$t$2" +#~ msgstr "%C18%B%B$3$1%O$t$2" + +#~ msgid "%C22*%O$t$1" +#~ msgstr "%C22*%O$t$1" + +#~ msgid "%C31%B%B$4$1%O%C30$t$2" +#~ msgstr "%C31%B%B$4$1%O%C30$t$2" + +#~ msgid "PID" +#~ msgstr "PID" + +#~ msgid "Servername" +#~ msgstr "Nom del servidor" + +#~ msgid "France, Metropolitan" +#~ msgstr "França, Metropolitana" + +#~ msgid "Neutral Zone" +#~ msgstr "Zona neutral" + +#~ msgid "US Minor Outlying Islands" +#~ msgstr "Illes Perifèriques Menors dels EUA" + +#~ msgid "Direct client-to-client" +#~ msgstr "Directe Client-a-Client" + +#~ msgid "Send File" +#~ msgstr "Envia un fitxer" + +#~ msgid "Offer Chat" +#~ msgstr "Ofereix un xat" + +#~ msgid "Abort Chat" +#~ msgstr "Avorta el xat" + +#~ msgid "Userinfo" +#~ msgstr "Informació de l'usuari" + +#~ msgid "Clientinfo" +#~ msgstr "Informació del client" + +#~ msgid "Time" +#~ msgstr "Hora" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "Operador" + +#~ msgid "Kill this user" +#~ msgstr "Mata aquest usuari" + +#~ msgid "Mode" +#~ msgstr "Mode" + +#~ msgid "Give Half-Ops" +#~ msgstr "Dóna l'estatus de semi-operador" + +#~ msgid "Take Half-Ops" +#~ msgstr "Treu l'estatus de semi-operador" + +#~ msgid "Ignore" +#~ msgstr "Ignora" + +#~ msgid "Ignore User" +#~ msgstr "Ignora l'usuari" + +#~ msgid "UnIgnore User" +#~ msgstr "Deixa d'ignorar l'usuari" + +#~ msgid "Info" +#~ msgstr "Informació" + +#~ msgid "Who" +#~ msgstr "Qui" + +#~ msgid "DNS Lookup" +#~ msgstr "Consulta DNS" + +#~ msgid "UserHost" +#~ msgstr "UsuariMàquina" + +#~ msgid "External" +#~ msgstr "Extern" + +#~ msgid "Traceroute" +#~ msgstr "Traceroute" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "Unban" +#~ msgstr "Readmet" + +#~ msgid "I can't save an empty list!" +#~ msgstr "No podeu desar una llista buida!" + +#~ msgid "List display options:" +#~ msgstr "Opcions de visualització:" + +#~ msgid "Minimum Users:" +#~ msgstr "Mínim d'usuaris:" + +#~ msgid "Maximum Users:" +#~ msgstr "Màxim d'usuaris:" + +#~ msgid "Regex Match:" +#~ msgstr "Filtra amb l'expressió regular:" + +#~ msgid "Apply Match to:" +#~ msgstr "Aplica la coincidència a:" + +#~ msgid "Apply" +#~ msgstr "Aplica" + +#~ msgid "Refresh the list" +#~ msgstr "Refresca la llista" + +#~ msgid "Save the list" +#~ msgstr "Desa la llista" + +#~ msgid "From:" +#~ msgstr "De:" + +#~ msgid "To:" +#~ msgstr "A:" + +#~ msgid "Size:" +#~ msgstr "Mida:" + +#~ msgid "Started:" +#~ msgstr "Inici:" + +#~ msgid "Speed limit:" +#~ msgstr "Limitació de velocitat:" + +#~ msgid "MIME Type" +#~ msgstr "Tipus MIME" + +#~ msgid "X-Chat: File Receive List" +#~ msgstr "X-Chat: Llista de fitxers rebuts" + +#~ msgid "Open" +#~ msgstr "Obre" + +#~ msgid "Ack" +#~ msgstr "Rebut" + +#~ msgid "To" +#~ msgstr "A" + +#~ msgid "To/From" +#~ msgstr "A/De" + +#~ msgid "Options" +#~ msgstr "Opcions" + +#~ msgid "don't auto connect" +#~ msgstr "no et connectis automàticament als servidors" + +#~ msgid "DIRECTORY" +#~ msgstr "DIRECTORI" + +#~ msgid "Add new" +#~ msgstr "Afegeix" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "No hi ha més pestanyes obertes, voleu sortir de l'X-Chat?" + +#~ msgid "Show join/part messages" +#~ msgstr "Mostra missatges d'entrada/sortida" + +#~ msgid "Color paste" +#~ msgstr "Enganxa amb color" + +#~ msgid "Go to" +#~ msgstr "Vés a" + +#~ msgid "Close Tab" +#~ msgstr "Tanca la pestanya" + +#~ msgid "Close this tab/window" +#~ msgstr "Tanca aquesta pestanya/finestra" + +#~ msgid "User List Buttons" +#~ msgstr "Botons de la llista d'usuaris" + +#~ msgid "Settings saved." +#~ msgstr "S'ha desat la configuració." + +#~ msgid "New Shell Tab..." +#~ msgstr "Pestanya de shell nova..." + +#~ msgid "_IRC" +#~ msgstr "_IRC" + +#~ msgid "Invisible" +#~ msgstr "Invisible" + +#~ msgid "Receive Wallops" +#~ msgstr "Rep wallops" + +#~ msgid "Receive Server Notices" +#~ msgstr "Rep els avisos del servidor" + +#~ msgid "Auto Rejoin when Kicked" +#~ msgstr "Reentra automàticament en cas d'expulsió" + +#~ msgid "Never-give-up ReConnect" +#~ msgstr "Intents de reconnexió ad infinitum" + +#~ msgid "Auto Open Dialog Windows" +#~ msgstr "Obre finestres de diàleg automàticament" + +#~ msgid "Auto Accept Direct Chat" +#~ msgstr "Accepta automàticament xats DCC" + +#~ msgid "Preferences..." +#~ msgstr "Preferències..." + +#~ msgid "Reload Settings" +#~ msgstr "Rellegeix la configuració" + +#~ msgid "Save Settings now" +#~ msgstr "Desa la configuració ara" + +#~ msgid "Save Settings on exit" +#~ msgstr "Desa la configuració en sortir" + +#~ msgid "File Receive..." +#~ msgstr "Fitxers rebuts..." + +#~ msgid "File Send..." +#~ msgstr "Fitxer enviats..." + +#~ msgid "Notify List..." +#~ msgstr "Llista de notificació..." + +#~ msgid "User" +#~ msgstr "Usuari" + +#~ msgid "Server" +#~ msgstr "Servidor" + +#~ msgid "Save rawlog" +#~ msgstr "Desa un registre brut" + +#~ msgid "Save rawlog..." +#~ msgstr "Desa el registra brut..." + +#~ msgid "Find" +#~ msgstr "Cerca" + +#~ msgid "Close" +#~ msgstr "Tanca" + +#~ msgid "Real na_me:" +#~ msgstr "Nom real:" + +#~ msgid "C_hannels to join:" +#~ msgstr "Canals on entrar:" + +#~ msgid "X-Chat: Server List" +#~ msgstr "X-Chat: Llista de servidors" + +#~ msgid "Connect in new tab" +#~ msgstr "Connecta en una pestanya nova" + +#~ msgid "Tint (shade) transparency" +#~ msgstr "Transparència tintada" + +# què fa?. eac +#~ msgid "Strip mIRC colors" +#~ msgstr "Treu els colors del mIRC" + +#~ msgid "Completes nick names without using the TAB key" +#~ msgstr "Completa els sobrenoms sense haver d'usar la tecla TAB" + +#~ msgid "Input Box Appearance" +#~ msgstr "Aparença de la línia d'entrada" + +#~ msgid "Info text" +#~ msgstr "Text informatiu" + +#~ msgid "User list buttons enabled" +#~ msgstr "Habilita els botons de la llista d'usuaris" + +#~ msgid "Resizable user list" +#~ msgstr "Llista d'usuaris redimensionable" + +#~ msgid "Lag meter:" +#~ msgstr "Mesurador de retard:" + +#~ msgid "Throttle meter:" +#~ msgstr "Mesurador de velocitat:" + +#~ msgid "Left" +#~ msgstr "A l'esquerra" + +#~ msgid "Right" +#~ msgstr "A la dreta" + +#~ msgid "Tabs Location" +#~ msgstr "Posició de les pestanyes" + +#~ msgid "Convert spaces to underscore before sending" +#~ msgstr "Converteix els espais en guions baixos abans d'enviar" + +#~ msgid "(Can be a text file relative to ~/.xchat2/)." +#~ msgstr "(Pot ser un fitxer de text relatiu a ~/.xchat2/)." + +#~ msgid "(Can be a text file relative to config dir)." +#~ msgstr "(Pot ser un fitxer de text relatiu al directori de configuració)." + +#~ msgid "Flash taskbar on highlighted messages" +#~ msgstr "Il·lumina la barra de tasques quan hi hagi missatges realçats" + +#~ msgid "Beep on private messages" +#~ msgstr "Avís sonor de missatges privats" + +#~ msgid "Beep on channel messages" +#~ msgstr "Avís sonor de missatges al canal" + +#~ msgid "(See strftime manpage for details)." +#~ msgstr "(Per a més detalls consulteu la pàgina del manual strftime (3))." + +#~ msgid "(disabled)" +#~ msgstr "(inhabilitat)" + +#~ msgid "A star (*)" +#~ msgstr "Un asterisc (*)" + +#~ msgid "A red star (*)" +#~ msgstr "Un asterisc roig (*)" + +#~ msgid "Select a file to save to" +#~ msgstr "Seleccioneu un fitxer on desar-ho" + +#~ msgid "" +#~ " File: %s\n" +#~ " To/From: %s\n" +#~ " Size: %u\n" +#~ " Port: %d\n" +#~ " IP Number: %s\n" +#~ "Start Time: %s Max CPS: %d\n" +#~ msgstr "" +#~ " Fitxer: %s\n" +#~ " A/De: %s\n" +#~ " Mida: %u\n" +#~ " Port: %d\n" +#~ " Adreça IP: %s\n" +#~ " Inici: %s CPS màxim: %d\n" + +#~ msgid "User: %s" +#~ msgstr "Usuari: %s" + +#~ msgid "Realname: %s" +#~ msgstr "Nom real: %s" + +#~ msgid "Server: %s" +#~ msgstr "Servidor: %s" + +#~ msgid "%C22*%O$t%C28[%O$1%C28] %O$2" +#~ msgstr "%C22*%O$t%C28[%O$1%C28] %O$2" + +#~ msgid "Former Czechoslovakia" +#~ msgstr "Antiga Txecoslovàquia" + +#~ msgid "Zaire" +#~ msgstr "Zaire" + +#~ msgid "<span weight=\"bold\">List Filtering</span>" +#~ msgstr "<span weight=\"bold\">Filtres de la llista</span>" + +#~ msgid "Channel _Name" +#~ msgstr "_Nom del canal" + +#~ msgid "in:" +#~ msgstr "a:" + +#~ msgid "<span weight=\"bold\">Automatically Join Channels</span>" +#~ msgstr "<span weight=\"bold\">Entra automàticament als canals</span>" + +#~ msgid "<span weight=\"bold\">User Info</span>" +#~ msgstr "<span weight=\"bold\">Informació de l'usuari</span>" + +#~ msgid "Cycle _until connected" +#~ msgstr "S_urt i entra al canal fins a connectar-te" + +#~ msgid "Use _these user settings:" +#~ msgstr "U_tilitza aquesta informació d'usuari:" + +#~ msgid "User and Channels" +#~ msgstr "Usuaris i canals" + +#~ msgid "_Automatically connect to network" +#~ msgstr "Connecta a aquesta xarxa _automàticament a l'inici" + +#~ msgid "_Name:" +#~ msgstr "_Nom:" + +#~ msgid "_Real Name:" +#~ msgstr "Nom _real:" + +#~ msgid "_Use secure connection (SSL)" +#~ msgstr "_Utilitza una connexió segura (SSL)" + +#~ msgid "<span size=\"small\" style=\"italic\">Opaque</span>" +#~ msgstr "<span size=\"small\" style=\"italic\">Opac</span>" + +#~ msgid "<span size=\"small\" style=\"italic\">Transparent</span>" +#~ msgstr "<span size=\"small\" style=\"italic\">Transparent</span>" + +#~ msgid "<span weight=\"bold\">Background</span>" +#~ msgstr "<span weight=\"bold\">Fons</span>" + +#~ msgid "<span weight=\"bold\">DCC Settings</span>" +#~ msgstr "<span weight=\"bold\">Paràmetres DCC</span>" + +#~ msgid "<span weight=\"bold\">Extra Colors</span>" +#~ msgstr "<span weight=\"bold\">Colors addicionals</span>" + +#~ msgid "<span weight=\"bold\">File Transfers</span>" +#~ msgstr "<span weight=\"bold\">Transferència de fitxers</span>" + +#~ msgid "<span weight=\"bold\">General</span>" +#~ msgstr "<span weight=\"bold\">General</span>" + +#~ msgid "<span weight=\"bold\">Highlighting</span>" +#~ msgstr "<span weight=\"bold\">Realçament</span>" + +#~ msgid "<span weight=\"bold\">Text Colors</span>" +#~ msgstr "<span weight=\"bold\">Colors del text</span>" + +#~ msgid "<span weight=\"bold\">Throttling</span>" +#~ msgstr "<span weight=\"bold\">Restricció d'entrada</span>" + +#~ msgid "<span weight=\"bold\">User Interface</span>" +#~ msgstr "<span weight=\"bold\">Interfície d'usuari</span>" + +#~ msgid "<span weight=\"bold\">mIRC Colors</span>" +#~ msgstr "<span weight=\"bold\">Colors del mIRC</span>" + +#~ msgid "Auto-accept DCC file tr_ansfers" +#~ msgstr "Accepta _automàticament fitxers per DCC" + +#~ msgid "Buil_t-in schemes:" +#~ msgstr "Esquemes in_tegrats:" + +#~ msgid "Glo_bal receive KB/s: " +#~ msgstr "KB/s de baixada glo_bals:" + +#~ msgid "I_mage file:" +#~ msgstr "Fitxer d'i_matge:" + +#~ msgid "In_dividual send KB/s: " +#~ msgstr "KB/s de pujada in_dividuals:" + +#~ msgid "Indi_vidual receive KB/s: " +#~ msgstr "KB/s de baixada indi_viduals:" + +#~ msgid "Select Completed Files Directory" +#~ msgstr "Seleccioneu el directori per als fitxers completats:" + +#~ msgid "" +#~ "To edit a shortcut key, click on the corresponding row and type a new " +#~ "accelerator, or press backspace to clear." +#~ msgstr "" +#~ "Per a editar una tecla de drecera cliqueu a la fila corresponent i " +#~ "teclegeu una nova drecera, o bé premeu la tecla de retrocés per a " +#~ "esborrar la drecera." + +#~ msgid "Use _system terminal font" +#~ msgstr "Utilitza el tipus de lletra de terminal del _sistema" + +#~ msgid "Use t_his IP address:" +#~ msgstr "Utilitza aquesta adreça I_P:" + +#~ msgid "Use this f_ont:" +#~ msgstr "Utilitza aquest _tipus de lletra" + +#~ msgid "_Background color:" +#~ msgstr "Color de _fons:" + +#~ msgid "_Foreground color:" +#~ msgstr "Color de _primer pla:" + +#~ msgid "_Global send KB/s: " +#~ msgstr "KB/s de pujada _globals:" + +#~ msgid "_Nickname:" +#~ msgstr "Sobre_nom:" + +#~ msgid "_None (use solid color)" +#~ msgstr "_Cap (utilitza color sòlid)" + +#~ msgid "_Part message:" +#~ msgstr "Missatge de _sortida:" + +#~ msgid "_Quit message:" +#~ msgstr "Missatge de _desconnexió:" + +#~ msgid "spell checking" +#~ msgstr "comprovació ortogràfica" + +#~ msgid "" +#~ "Welcome to XChat-GNOME! Since this is your first time using this " +#~ "application, there are a couple things you'll need to configure before " +#~ "you can get started.\n" +#~ "\n" +#~ "These are the names by which you'll be recognized on IRC. Your nick name " +#~ "is the name by which you'll be known, whereas the real name is useful for " +#~ "things such as registering with services. You do not have to use your " +#~ "real name if you do not want to." +#~ msgstr "" +#~ "Benvingut a l'XChat-GNOME. Atès que és la primera vegada que feu servir " +#~ "aquesta aplicació, haureu de configurar uns quants paràmetres abans de " +#~ "començar.\n" +#~ "\n" +#~ "Aquests són els noms pels quals sereu reconegut en els xats IRC. En un " +#~ "xat sereu reconegut pel sobrenom, mentre que el nom real s'utilitzarà per " +#~ "a altres finalitats, com per exemple, per al registre a determinats " +#~ "serveis. No cal que utilitzeu el vostre nom real si és que no ho desitgeu." + +#~ msgid "XChat-GNOME Setup" +#~ msgstr "Configuració de l'XChat-GNOME" + +#~ msgid "_Real name:" +#~ msgstr "Nom _real:" + +#~ msgid "Chat with people using IRC" +#~ msgstr "Xerreu amb altres persones a través de l'IRC" + +#~ msgid "IRC Chat" +#~ msgstr "Xat IRC" + +#~ msgid "XChat-GNOME IRC Chat" +#~ msgstr "Xat IRC de l'XChat-GNOME" + +#~ msgid "Apply on all _servers" +#~ msgstr "Aplica-ho per a tots els _servidors" + +#~ msgid "nickname" +#~ msgstr "sobrenom" + +#~ msgid "Screensaver activated, going away." +#~ msgstr "" +#~ "S'ha activat l'estalvi de pantalla, es commutarà a l'estat d'absència" + +#~ msgid "Screensaver is off, welcome back" +#~ msgstr "S'ha desactivat l'estalvi de pantalla, benvingut de nou" + +#~ msgid "NetworkManager connection monitor" +#~ msgstr "Monitor de la connexió del NetworkManager" + +#~ msgid "%s loaded successfully\n" +#~ msgstr "«%s» s'ha carregat satisfactòriament\n" + +#~ msgid "Notification" +#~ msgstr "Notificació" + +#~ msgid "A notification area plugin." +#~ msgstr "Un connector per a l'àrea de notificació." + +#~ msgid "Notification plugin loaded.\n" +#~ msgstr "S'ha carregat el connector de notificació.\n" + +#~ msgid "Notification plugin unloaded.\n" +#~ msgstr "S'ha descarregat el connector de notificació.\n" + +#~ msgid "Level of the messages that require a notification" +#~ msgstr "Nivell dels missatges pels quals es requereix una notificació" + +#~ msgid "" +#~ "Messages are classified according to their importance. Select level of " +#~ "messages above which the notification icon will be displayed. Valid " +#~ "values are: \"0\" (always displayed), \"1\" (all messages including " +#~ "information), \"2\" (all channel messages), \"3\" (only private or " +#~ "highlighted messages)." +#~ msgstr "" +#~ "Els missatges es classifiquen segons la seva importància. Seleccioneu el " +#~ "nivell d'importància dels missatges per sobre del qual es mostrarà la " +#~ "icona de notificació. Els valors següents són assignables: «0» (sempre " +#~ "visible), «1» (tots els missatges, incloent-hi els d'informació), " +#~ "«2» (tots els missatges dels canals), «3» (només els missatges privats o " +#~ "realçats)." + +#~ msgid "<span weight=\"bold\">Notification level</span>" +#~ msgstr "<span weight=\"bold\">Nivell de la notificació</span>" + +#~ msgid "Notify each _event" +#~ msgstr "Notifica tots els _esdeveniments" + +#~ msgid "_Always display notification icon" +#~ msgstr "Mostr_a sempre la icona de notificació" + +#~ msgid "On-screen display" +#~ msgstr "Monitor a la pantalla (OSD)" + +# FIXME (dpm) és correcte «no tenir el focus»? +#~ msgid "" +#~ "Pops up notification of important messages when XChat-GNOME doesn't have " +#~ "the focus" +#~ msgstr "" +#~ "Mostra la notificació de missatges importants quan l'XChat-GNOME no té el " +#~ "focus" + +#~ msgid "Error closing notification: %s\n" +#~ msgstr "S'ha produït un error en tancar la notificació: %s\n" + +#~ msgid "Message in %s" +#~ msgstr "Missatge a %s" + +#~ msgid "Message from %s" +#~ msgstr "Missatge de %s" + +#~ msgid "OSD loaded\n" +#~ msgstr "S'ha carregat l'OSD\n" + +#~ msgid "OSD initialization failed\n" +#~ msgstr "No s'ha pogut inicialitzar l'OSD\n" + +#~ msgid "Grabs URLs and puts them in a separate window for easy viewing." +#~ msgstr "" +#~ "Captura URLs i les posa en una altra finestra per a una visualització més " +#~ "còmoda." + +#~ msgid "URL Scraper failed to load: couldn't compile URL regex.\n" +#~ msgstr "" +#~ "No s'ha pogut carregar el capturador d'URLs: no s'ha pogut compilar " +#~ "l'expressió regular per a l'URL.\n" + +#~ msgid "URL Scraper failed to load: couldn't compile e-mail regex.\n" +#~ msgstr "" +#~ "No s'ha pogut carregar el capturador d'URLs: no s'ha pogut compilar " +#~ "l'expressió regular per a l'adreça de correu electrònic.\n" + +#~ msgid "URL Scraper loaded.\n" +#~ msgstr "S'ha carregat el capturador d'URLs.\n" + +#~ msgid "URL Scraper unloaded.\n" +#~ msgstr "S'ha descarregat el capturador d'URLs.\n" + +#~ msgid "URL Scraper history length" +#~ msgstr "Mida de l'historial del capturador d'URLs" + +#~ msgid "URL Scraper show timestamps" +#~ msgstr "Mostra la data i hora de cada missatge" + +#~ msgid "Sound Notification" +#~ msgstr "Notificació per àudio" + +#~ msgid "" +#~ "Play a sound when you receive a private message or your nick is " +#~ "highlighted." +#~ msgstr "" +#~ "Reprodueix un so en rebre un missatge privat o bé en ésser realçat el " +#~ "vostre sobrenom." + +#~ msgid "Sound-notification plugin loaded.\n" +#~ msgstr "S'ha carregat el connector de notificació per àudio.\n" + +#~ msgid "Sound-notification plugin unloaded.\n" +#~ msgstr "S'ha descarregat el connector de notificació per àudio.\n" + +#~ msgid "" +#~ "Set per channel options\n" +#~ "CHANOPT CONFMODE ON|OFF - Toggle conf mode/showing of join and part " +#~ "messages\n" +#~ "CHANOPT COLORPASTE ON|OFF - Toggle color paste\n" +#~ "CHANOPT BEEP ON|OFF - Toggle beep on message" +#~ msgstr "" +#~ "Estableix les opcions per a cada canal individual\n" +#~ "CHANOPT CONFMODE ON|OFF - Mostra o oculta els missatges d'entrada i de " +#~ "sortida\n" +#~ "CHANOPT COLORPASTE ON|OFF - Commuta poder enganxar amb colors\n" +#~ "CHANOPT BEEP ON|OFF - Commuta la reproducció del to del sistema en rebre " +#~ "un missatge" + +#~ msgid "-%C10-%C11-%O$tReceived a CTCP $1 from $2 (to $3)" +#~ msgstr "-%C10-%C11-%O$tS'ha rebut un CTCP $1 de $2 (per a $3)" + +#~ msgid "-%C10-%C11-%O$tReceived a CTCP Sound $1 from $2" +#~ msgstr "-%C10-%C11-%O$tS'ha rebut un CTCP Sound $1 de $2" + +#~ msgid "" +#~ "-%C10-%C11-%O$tDCC CHAT failed. Connection to $1 %C14[%O$2:$3%C14]%O lost." +#~ msgstr "" +#~ "-%C10-%C11-%O$tNo s'ha pogut establir la DCC. S'ha perdut la connexió amb " +#~ "$1 %C14[%O$2:$3%C14]%O." + +#~ msgid "-%C10-%C11-%O$tDCC RECV $1 ($2) failed. Connection to $3 lost." +#~ msgstr "" +#~ "-%C10-%C11-%O$tNo s'ha pogut rebre el fitxer $1 ($2). S'ha perdut la " +#~ "connexió amb $3." + +#~ msgid "" +#~ "-%C10-%C11-%O$tDCC SEND %C11$1%O failed. Connection to %C11$2%O lost." +#~ msgstr "" +#~ "-%C10-%C11-%O$tLa conexió DCC SEND no s'ha pogut establir. S'ha perdut la " +#~ "connexió amb %C11$2%O." + +#~ msgid "-%C10-%C11-%O$t$1%O" +#~ msgstr "-%C10-%C11-%O$t$1%O" + +#~ msgid "-%C10-%C11-%O$t%C12[%O$1%C12]%C $2" +#~ msgstr "-%C10-%C11-%O$t%C12[%O$1%C12]%C $2" + +#~ msgid "-%C10-%C11-%O$t%C12[%O$1%C12] %C$2" +#~ msgstr "-%C10-%C11-%O$t%C12[%O$1%C12] %C$2" + +#~ msgid "-%C10-%C11-%O$t%C12[%O$1%C12]%O idle %C11$2%O" +#~ msgstr "-%C10-%C11-%O$t%C12[%O$1%C12]%O inactiu %C11$2%O" + +#~ msgid "-%C10-%C11-%O$t%C12[%O$1%C12] %C14(%O$2@$3%C14) %O: $4%O" +#~ msgstr "-%C10-%C11-%O$t%C12[%O$1%C12] %C14(%O$2@$3%C14) %O: $4%O" + +#~ msgid "-%C10-%C11-%O$t%C12[%O$1%C12]%O $2" +#~ msgstr "-%C10-%C11-%O$t%C12[%O$1%C12]%O $2" + +#~ msgid "%C6<%O$1%C6>%O$t$2%O" +#~ msgstr "%C6<%O$1%C6>%O$t$2%O" + +#~ msgid "%s loaded successfully!\n" +#~ msgstr "S'ha carregat %s amb èxit\n" + +#~ msgid "Run XChat-GNOME in a terminal?" +#~ msgstr "Voleu executar XChat-GNOME en un terminal?" + +#~ msgid "Set it at TRUE if you want it activated" +#~ msgstr "Establiu-ho com a TRUE si ho voleu habilitar" + +#~ msgid "The handler for \"irc://\" URLs" +#~ msgstr "El gestor per a URLs del tipus «irc://»" + +#~ msgid "" +#~ "X-Chat GNOME is free software; you can redistribute it and/or modify it " +#~ "under the terms of the GNU General Public License as published by the " +#~ "Free Software Foundation; either version 2 of the License, or (at your " +#~ "option) any later version." +#~ msgstr "" +#~ "L'X-Chat GNOME és programari lliure; podeu redistribuir-lo i/o modificar-" +#~ "lo sota els termes de la Llicència Pública General GNU tal i com ha estat " +#~ "publicada per la Free Software Foundation; la sigui la versió 2 de la " +#~ "llicència o (si ho preferiu) qualsevol versió posterior. " + +#~ msgid "" +#~ "X-Chat GNOME 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 General " +#~ "Public License for more details." +#~ msgstr "" +#~ "L'X-Chat GNOME es distribueix amb l'expectativa que serà útil, però SENSE " +#~ "CAP GARANTIA; fins i tot sense la garantia implícita de COMERCIABILITAT o " +#~ "ADEQUACIÓ PER A UN PROPÒSIT PARTICULAR. Vegeu la Llicència Pública " +#~ "General GNU per a obtenir-ne més detalls." + +#~ msgid "" +#~ "You should have received a copy of the GNU General Public License along " +#~ "with X-Chat GNOME; if not, write to the Free Software Foundation, Inc., " +#~ "59 Temple Place, Suite 330, Boston, MA 02111-1307 USA" +#~ msgstr "" +#~ "Hauríeu d'haver rebut una còpia de la Llicència Pública General GNU " +#~ "juntament amb l'X-Chat GNOME; en cas contrari, escriviu a la Free " +#~ "Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA " +#~ "02111, USA." + +#~ msgid "Copyright © 2004-2006" +#~ msgstr "Copyright © 2004-2006" + +# broma dolenta (eac) +#~ msgid "" +#~ "It has been well observed that a trombone is not a suitable instrument " +#~ "for a gentleman" +#~ msgstr "L'home descendeix del mono i el mono descendeix de l'arbre" + +#~ msgid "XChat-GNOME Web Site" +#~ msgstr "Lloc web de l'XChat-GNOME" + +#~ msgid "translator-credits" +#~ msgstr "" +#~ "Softcatalà <info@softcatala.org>\n" +#~ "Yannick Garcia <ygp@tinet.fut.es>\n" +#~ "Antoni Bella Perez <bella5@teleline.es>\n" +#~ "Ernest Adrogué Calveras <eadrogue@gmx.net>\n" +#~ "David Planella Molas <david.planella@gmail.com>" + +#~ msgid "Automatically display the channel list dialog" +#~ msgstr "Mostra el diàleg amb la llista de canals de manera automàtica" + +#~ msgid "Background image filename" +#~ msgstr "Imatge de fons:" + +#~ msgid "Default nickname used by servers without special options set" +#~ msgstr "" +#~ "Sobrenom per defecte utilitzat pels servidors sense cap opció especial " +#~ "habilitada" + +#~ msgid "Default real name used by servers without special options set" +#~ msgstr "" +#~ "Nom real per defecte utilitzat pels servidors sense cap opció especial " +#~ "habilitada" + +# FIXME (dpm) Com es podria traduir «nickstamp»? +#~ msgid "Display redundant nickstamps" +#~ msgstr "Mostra els nickstamps redundants" + +#~ msgid "Font for the main window" +#~ msgstr "Tipus de lletra de la finestra principal" + +#~ msgid "Height of the channel list" +#~ msgstr "Alçada de la llista de canals" + +#~ msgid "Height of the main window" +#~ msgstr "Alçada de la finestra principal" + +#~ msgid "" +#~ "If set to true, when you join a server without automatically joining a " +#~ "channel, the channel list dialog will be displayed" +#~ msgstr "" +#~ "Si s'estableix a «true», en entrar a un servidor sense entrar " +#~ "automàticament a cap canal, es mostrarà el diàleg amb la llista de canals" + +#~ msgid "Languages to use for spellchecking" +#~ msgstr "Idiomes per als quals s'utilitzarà la comprovació ortogràfica" + +#~ msgid "List of enabled plugins" +#~ msgstr "Llista dels connectors habilitats" + +#~ msgid "Message sent on away" +#~ msgstr "Missatge que s'envia en commutar a absent" + +#~ msgid "Message sent on channel part" +#~ msgstr "Missatge que s'envia en sortir d'un canal" + +#~ msgid "Message sent on quit" +#~ msgstr "Missatge que s'envia en desconnectar-se" + +#~ msgid "Position of the horizontal pane in the main window" +#~ msgstr "Posició de la subfinestra horitzontal dins de la finestra principal" + +#~ msgid "Selected background type" +#~ msgstr "Tipus de fons seleccionat" + +#~ msgid "Show colors in the main window" +#~ msgstr "Mostra colors a la pantalla principal" + +#~ msgid "Show timestamps in the main window" +#~ msgstr "Mostra la marca horària a la finestra principal" + +#~ msgid "Width of the channel list" +#~ msgstr "Amplada de la llista de canals" + +#~ msgid "Width of the main window" +#~ msgstr "Amplada de la finestra principal" + +#~ msgid "X position of the main window on the screen" +#~ msgstr "Posició X de la finestra principal a la pantalla" + +#~ msgid "Y position of the main window on the screen" +#~ msgstr "Posició Y de la finestra principal a la pantalla" + +#~ msgid "xchat configuration version" +#~ msgstr "versió de la configuració de l'xchat" + +#~ msgid "_Copy Link Location" +#~ msgstr "_Copia l'adreça de l'enllaç" + +#~ msgid "Se_nd Message To..." +#~ msgstr "E_nvia el missatge a..." + +#~ msgid "_Send File" +#~ msgstr "_Envia un fitxer" + +#~ msgid "Paste File _Contents" +#~ msgstr "Enganxa el _contingut del fitxer" + +#~ msgid "Paste File_name" +#~ msgstr "Enganxa el _nom del fitxer" + +#~ msgid "" +#~ "URI list dropped on XChat-GNOME had wrong format (%d) or length (%d)\n" +#~ msgstr "" +#~ "La llista d'URIs deixada anar a l'XChat-GNOME té un format (%d) o " +#~ "llargada (%d) incorrectes\n" + +#~ msgid "Error reading file \"%s\": %s\n" +#~ msgstr "S'ha produït un error en llegir el fitxer «%s»: %s\n" + +#~ msgid "Error converting URI \"%s\" into filename: %s\n" +#~ msgstr "" +#~ "S'ha produït un error en convertir l'URI «%s» en un nom de fitxer: %s\n" + +#~ msgid "Error retrieving file information for \"%s\": %s\n" +#~ msgstr "" +#~ "S'ha produït un error en obtenir la informació del fitxer «%s»: %s\n" + +#~ msgid "Save Transcript" +#~ msgstr "Desa la transcripció" + +#~ msgid "Error saving %s" +#~ msgstr "S'ha produït un error en desar %s" + +#~ msgid "%" +#~ msgstr "%" + +#~ msgid "Remaining" +#~ msgstr "Restant" + +#~ msgid "Incoming File Transfer" +#~ msgstr "Transferència de fitxer d'entrada" + +#~ msgid "" +#~ "%s is attempting to send you a file named \"%s\". Do you wish to accept " +#~ "the transfer?" +#~ msgstr "%s vol enviar-vos el fitxer «%s». Voleu acceptar la transferència?" + +#~ msgid "" +#~ "<b>%s</b>\n" +#~ "<small>from %s</small>\n" +#~ "%s of %s" +#~ msgstr "" +#~ "<b>%s</b>\n" +#~ "<small>de %s</small>\n" +#~ "%s de %s" + +#~ msgid "starting" +#~ msgstr "s'està iniciant" + +#~ msgid "" +#~ "<b>%s</b>\n" +#~ "<small>from %s</small>\n" +#~ "%s of %s at %s/s" +#~ msgstr "" +#~ "<b>%s</b>\n" +#~ "<small>de %s</small>\n" +#~ "%s de %s a %s/s" + +#~ msgid "queued" +#~ msgstr "s'ha posat a la cua" + +#~ msgid "Transfer of %s to %s failed" +#~ msgstr "No s'ha pogut transferir %s a %s" + +#~ msgid "Transfer of %s from %s failed" +#~ msgstr "No s'ha pogut transferir %s a %s" + +#~ msgid "Transfer failed" +#~ msgstr "No s'ha pogut completar la transferència" + +#~ msgid "stalled" +#~ msgstr "s'ha encallat" + +#~ msgid "%.2d:%.2d:%.2d" +#~ msgstr "%.2d:%.2d:%.2d" + +#~ msgid "%.2d:%.2d" +#~ msgstr "%.2d:%.2d" + +#~ msgid "Use directory instead of the default config dir" +#~ msgstr "Utilitza aquest directori en comptes del directori per defecte" + +#~ msgid "Open an irc:// url" +#~ msgstr "Obre una url de tipus irc://" + +#~ msgid "" +#~ "xchat-gnome: %s\n" +#~ "Try `xchat-gnome --help' for more information\n" +#~ msgstr "" +#~ "xchat-gnome: %s\n" +#~ "Proveu `xchat-gnome --help' per a més informació\n" + +#~ msgid "Incoming DCC Chat" +#~ msgstr "Xat DCC d'entrada" + +#~ msgid "" +#~ "%s is attempting to create a direct chat. Do you wish to accept the " +#~ "connection?" +#~ msgstr "%s vol crear un xat directe. Voleu acceptar la connexió?" + +#~ msgid "Unable to show '%s'" +#~ msgstr "No s'ha pogut mostrar «%s»" + +#~ msgid "_Previous" +#~ msgstr "_Anterior" + +#~ msgid "_Next" +#~ msgstr "_Següent" + +#~ msgid "" +#~ "<span foreground=\"dark grey\">Reached end, continuing from top</span>" +#~ msgstr "" +#~ "<span foreground=\"dark grey\">S'ha arribat al capdavall, es continuarà " +#~ "des del capdamunt</span>" + +#~ msgid "" +#~ "<span foreground=\"dark grey\">Reached beginning, continuing from bottom</" +#~ "span>" +#~ msgstr "" +#~ "<span foreground=\"dark grey\">S'ha arribat al capdamunt, es continuarà " +#~ "des del capdavall</span>" + +#~ msgid "<span foreground=\"red\">Search string not found</span>" +#~ msgstr "<span foreground=\"red\">No s'ha trobat la cadena de cerca</span>" + +#~ msgid "%s Network Properties" +#~ msgstr "Propietats de la xarxa %s" + +#~ msgid "Invalid input" +#~ msgstr "Entrada incorrecta" + +#~ msgid "You must enter a network name" +#~ msgstr "Heu d'introduir un nom de xarxa" + +#~ msgid "You must enter a nick name" +#~ msgstr "Heu d'introduir un sobrenom" + +#~ msgid "You must enter a real name" +#~ msgstr "Heu d'introduir un nom real" + +#~ msgid "UTF-8 (Unicode)" +#~ msgstr "UTF-8 (Unicode)" + +#~ msgid "ISO-8859-15 (Western Europe)" +#~ msgstr "ISO-8859-15 (Europa occidental)" + +#~ msgid "ISO-8859-2 (Central Europe)" +#~ msgstr "ISO-8859-2 (Europa central)" + +#~ msgid "ISO-8859-7 (Greek)" +#~ msgstr "ISO-8859-7 (grec)" + +#~ msgid "ISO-8859-8 (Hebrew)" +#~ msgstr "ISO-8859-8 (hebreu)" + +#~ msgid "ISO-8859-9 (Turkish)" +#~ msgstr "ISO-8859-9 (turc)" + +#~ msgid "ISO-2022-JP (Japanese)" +#~ msgstr "ISO-2022-JP (japonès)" + +#~ msgid "SJIS (Japanese)" +#~ msgstr "SJIS (japonès)" + +#~ msgid "CP949 (Korean)" +#~ msgstr "CP949 (coreà)" + +#~ msgid "KOI8-R (Cyrillic)" +#~ msgstr "KOI8-R (ciríl·lic)" + +#~ msgid "CP1251 (Cyrillic)" +#~ msgstr "CP1251 (ciríl·lic)" + +#~ msgid "CP1256 (Arabic)" +#~ msgstr "CP1256 (àrab)" + +#~ msgid "CP1257 (Baltic)" +#~ msgstr "CP1257 (bàltic)" + +#~ msgid "GB18030 (Chinese)" +#~ msgstr "GB18030 (xinès)" + +#~ msgid "TIS-620 (Thai)" +#~ msgstr "TIS-620 (tailandès)" + +#~ msgid "In_sert" +#~ msgstr "In_sereix" + +#~ msgid "_Discussion" +#~ msgstr "_Conversa" + +#~ msgid "_Go" +#~ msgstr "_Vés a" + +#~ msgid "_Connect..." +#~ msgstr "_Connecta..." + +#~ msgid "Cu_t" +#~ msgstr "Re_talla" + +#~ msgid "_Save Transcript" +#~ msgstr "_Desa la transcripció" + +#~ msgid "_Leave" +#~ msgstr "_Surt" + +#~ msgid "Cl_ose" +#~ msgstr "_Tanca" + +#~ msgid "Change _Topic" +#~ msgstr "Canvia el _tema" + +#~ msgid "_Users" +#~ msgstr "_Usuaris" + +#~ msgid "Ex-Chat" +#~ msgstr "Xat" + +#~ msgid "Error showing help" +#~ msgstr "S'ha produït un error en mostrar l'ajuda" + +#~ msgid "" +#~ "The way the D-Bus plugin works has changed.\n" +#~ "To avoid problems, you should remove the old plugin file.\n" +#~ "\n" +#~ "<b>Please delete %s</b>" +#~ msgstr "" +#~ "El funcionament del connector del D-Bus ha canviat.\n" +#~ "És recomanable que suprimiu el fitxer del connector antic.\n" +#~ "\n" +#~ "<b>Si us plau, suprimiu %s</b>" + +#~ msgid "D-Bus plugin is still installed" +#~ msgstr "El connector del D-Bus encara està instal·lat" + +#~ msgid "Pre_vious Network" +#~ msgstr "Xarxa _anterior" + +#~ msgid "Nex_t Network" +#~ msgstr "Xarxa _següent" + +#~ msgid "_Previous Discussion" +#~ msgstr "Conversa a_nterior" + +#~ msgid "_Next Discussion" +#~ msgstr "Conversa s_egüent" + +#~ msgid "_Join" +#~ msgstr "_Entra-hi" + +#~ msgid "_Auto-join on connect" +#~ msgstr "_Entra-hi en connectar" + +#~ msgid "Black on White" +#~ msgstr "Negre sobre blanc" + +#~ msgid "White on Black" +#~ msgstr "Blanc sobre negre" + +#~ msgid "Custom" +#~ msgstr "Personalitzat" + +#~ msgid "System Theme Colors" +#~ msgstr "Colors del sistema" + +#~ msgid "File Transfers & DCC" +#~ msgstr "Transferències de fitxers" + +#~ msgid "Effects" +#~ msgstr "Efectes" + +#~ msgid "An error occurred unloading %s" +#~ msgstr "S'ha produït un error en descarregar %s" + +#~ msgid "Plugin Unload Failed" +#~ msgstr "S'ha produït un error en descarregar el connector" + +#~ msgid "Plugin Load Failed" +#~ msgstr "S'ha produït un error en carregar el connector" + +#~ msgid "Open Plugin" +#~ msgstr "Obre un connector" + +#~ msgid "Scripts and Plugins" +#~ msgstr "Scripts i connectors" + +#~ msgid "Enable" +#~ msgstr "Habilita" + +#~ msgid "Plugin" +#~ msgstr "Connector" + +#~ msgid "Error in language %s activation: %s\n" +#~ msgstr "S'ha produït un error en activar l'idioma %s: %s\n" + +#~ msgid "Error in spell checking configuration: %s\n" +#~ msgstr "" +#~ "S'ha produït un error en la configuració de la comprovació ortogràfica: " +#~ "%s\n" + +#~ msgid "" +#~ "In order to get spell-checking, you need to have libenchant installed " +#~ "with at least one dictionary." +#~ msgstr "" +#~ "Per a poder utilitzar la comprovació de l'ortografia heu de tenir la " +#~ "llibrerialibenchant instal·lada amb un diccionari com a mínim." + +#~ msgid "_Check spelling" +#~ msgstr "_Comprova l'ortografia" + +#~ msgid "Choose languages to use for spellcheck:" +#~ msgstr "Seleccioneu els idiomes per als quals es comprovarà l'ortografia:" + +#~ msgid "Language" +#~ msgstr "Idioma" + +#~ msgid "%s%.1fs lag" +#~ msgstr "%s%.1fs de retard" + +#~ msgid "Error in spellchecking configuration: %s\n" +#~ msgstr "" +#~ "S'ha produït un error a la configuració de la comprovació ortogràfica: " +#~ "%s\n" + +#~ msgid "Dark Blue" +#~ msgstr "Blau fosc" + +#~ msgid "Dark Green" +#~ msgstr "Verd fosc" + +#~ msgid "Brown" +#~ msgstr "Marró" + +#~ msgid "Purple" +#~ msgstr "Porpra" + +#~ msgid "Orange" +#~ msgstr "Taronja" + +#~ msgid "Yellow" +#~ msgstr "Groc" + +#~ msgid "Aqua" +#~ msgstr "Aigua marina" + +#~ msgid "Light Blue" +#~ msgstr "Blau clar" + +#~ msgid "Violet" +#~ msgstr "Violeta" + +#~ msgid "Grey" +#~ msgstr "Gris" + +#~ msgid "Light Grey" +#~ msgstr "Gris clar" + +#~ msgid "Changing topic for %s" +#~ msgstr "S'ha canviat el tema de %s" + +#~ msgid "_Send File..." +#~ msgstr "Envia un fitxer" + +#~ msgid "_Kick" +#~ msgstr "_Fes fora" + +#~ msgid "_Ban" +#~ msgstr "_Bandeja" + +# FIXME (dpm) Què fa op exactament? (menú contextual de la llista d'usuaris) +# Crec que habilita el mode d'operador per a l'usuari seleccionat. +#~ msgid "_Op" +#~ msgstr "Fes-lo _operador" + +#~ msgid "" +#~ "%s\n" +#~ "<span weight=\"bold\">Name:</span> %s" +#~ msgstr "" +#~ "%s\n" +#~ "<span weight=\"bold\">Nom:</span> %s" + +#~ msgid "" +#~ "%s\n" +#~ "<span weight=\"bold\">Country:</span> %s" +#~ msgstr "" +#~ "%s\n" +#~ "<span weight=\"bold\">País:</span> %s" + +#~ msgid "" +#~ "%s\n" +#~ "<span weight=\"bold\">Last message:</span> %d minute ago" +#~ msgid_plural "" +#~ "%s\n" +#~ "<span weight=\"bold\">Last message:</span> %d minutes ago" +#~ msgstr[0] "" +#~ "%s\n" +#~ "<span weight=\"bold\">Últim missatge:</span> fa %d minut" +#~ msgstr[1] "" +#~ "%s\n" +#~ "<span weight=\"bold\">Últim missatge:</span> fa %d minuts" + +#~ msgid "" +#~ "%s\n" +#~ "<span weight=\"bold\">Away message:</span> %s" +#~ msgstr "" +#~ "%s\n" +#~ "<span weight=\"bold\">Missatge d'absència:</span> %s" + +#~ msgid "%d User" +#~ msgid_plural "%d Users" +#~ msgstr[0] "%d usuari" +#~ msgstr[1] "%d usuaris" + +#~ msgid "_Information" +#~ msgstr "Informatiu" + +#~ msgid "_Connect" +#~ msgstr "Connecta" + +#~ msgid "Nick Name:" +#~ msgstr "Sobrenom:" + +#~ msgid "Orientation" +#~ msgstr "Argentina" + +#~ msgid "The orientation of the tray." +#~ msgstr "Sobrenom de la persona" + +#~ msgid "server" +#~ msgstr "Servidor" + +#~ msgid "id" +#~ msgstr "Cerca" + +#~ msgid "name" +#~ msgstr "Nom" + +#~ msgid "Failed to complete SetContext" +#~ msgstr "" +#~ "Error en obrir el tipus de lletra:\n" +#~ "\n" +#~ "%s" + +#~ msgid "Failed to complete print" +#~ msgstr "" +#~ "Error en obrir el tipus de lletra:\n" +#~ "\n" +#~ "%s" + +#~ msgid "Failed to complete GetInfo" +#~ msgstr "" +#~ "Error en obrir el tipus de lletra:\n" +#~ "\n" +#~ "%s" + +#~ msgid "Failed to complete GetPrefs" +#~ msgstr "" +#~ "Error en obrir el tipus de lletra:\n" +#~ "\n" +#~ "%s" + +#~ msgid "_Auto-join" +#~ msgstr "_Automàtic" diff --git a/etc/wyatt8740/po/cs.po b/etc/wyatt8740/po/cs.po new file mode 100644 index 0000000..609c1b3 --- /dev/null +++ b/etc/wyatt8740/po/cs.po @@ -0,0 +1,5845 @@ +# Translation of `xchat' messages to Czech. +# Copyright (C) 1999 Free Software Foundation, Inc. +# Jakub Moc <Jakub.Moc@volny.cz>, 1999. +# +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.8.4\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2007-06-26 11:42+0200\n" +"Last-Translator: Martin Šín <martin.sin@zshk.cz>\n" +"Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Nemohu vytvořit ~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Pracuji" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Odcházím" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* Spuštění IRC pod uživatelem root je hloupé! Měli byste si\n" +" vytvořit uživatelský účet a ten používat pro přihlášení.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Čekám" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Aktivní" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Selhalo" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Hotovo" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Připojit" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Zrušeno" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "Nemohu přistoupit k %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Chyba" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s nabízí \"%s\". Souhlasíte?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Žádné aktivní DCC\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "ANO " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "NE " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Jste zavalen CTCP od %s, ignoruji %s\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "Jste zavalen MSG od %s, nastavuji gui_auto_open_dialog na VYPNUTO.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s online\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s offline\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Nejste připojeni k žádnému kanálu. Zkuste /join #<channel>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Nepřipojeno. Zkuste /server <host> [<port>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Označen jako pryč: %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "Označen jako zpět.\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "Pro spuštění potřebuji /bin/sh !\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Dostupné příkazy:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Uživatelské příkazy:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Příkazy obsažené v pluginu:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Pro více informací zadejte /HELP <command>, nebo /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Ignorován neznámý argument '%s'." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "Nebyl nalezen žádný plugin.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Tento plugin se odmítá uvolnit z paměti.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <name> <action>, přidá tlačítko pod uživatelským seznamem." + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <cmd>, pošle příkaz na všechny kanály, na kterých jste" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHANL <cmd>, pošle příkaz na všechny kanály, na kterých jste" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <cmd>, pošle příkaz na všechny servery, na kterých jste" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<reason>], nastaví že jste pryč" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "BACK, vás nastaví zpět (přítomen)" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <mask> [<bantype>], zakáže každého, kdo odpovídá masce na aktuálním " +"kanálu. Pokud se již nacházíte na kanálu, nedojde k jeho vyhození (na to je " +"potřeba chanop)" + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <variable> [<value>]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "CLEAR [ALL|HISTORY], smaže aktuální textové okno nebo historii příkazů" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, zavře aktuální okno/kartu" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <code|wildcard>, nalezne kód země, např: cs = CR" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <nick> <zpráva>, pošle zprávu CTCP dané přezdívce, běžné zprávy jsou " +"VERSION a USERINFO" + +#: src/common/outbound.c:3516 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "" +"CYCLE [<channel>], odejde z aktuálního nebo zadaného kanálu a ihned se zas " +"připojí" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <nick> - přijme nabízený soubor\n" +"DCC SEND [-maxcps=#] <nick> [file] - pošle někomu soubor\n" +"DCC PSEND [-maxcps=#] <nick> [file] - pošle soubor pomocí pasivního módu\n" +"DCC LIST - zobrazí seznam DCC\n" +"DCC CHAT <nick> - nabídne někomu DCC CHAT\n" +"DCC PCHAT <nick> - nabídne DCC CHAT v pasivní režimu\n" +"DCC CLOSE <type> <nick> <file> příklad:\n" +" /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <nick>, odstraní právo chanhalf-op z přezdívky na aktuálním kanálu " +"(vyžaduje chanop)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <name>, smaže tlačítko pod uživatelským seznamem" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <nick>, odstraní právo chanop z přezdívky na aktuálním kanálu (vyžaduje " +"chanop)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <nick>, odstraní právo voice z přezdívky na aktuálním kanálu " +"(vyžaduje chanop)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, odpojí se od serveru" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <nick|host|ip>, nalezne uživatelovu IP adresu" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <text>, napíše text lokálně" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <command>, spustí příkaz. Je-li nastavena značka -o, bude výstup " +"zobrazen na aktuálním kanálu, jinak se vytiskne do aktuálního textového pole" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, pošle procesu SIGCONT" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], zabije spuštěný příkaz v současném sezení. Pokud předáte " +"procesu -9, bude proces SIGKILLed" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, pošle procesu signál SIGSTOP" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, pošle data z procesu na stdin" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, vymaže aktuální frontu zpráv serveru" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <host> [<port>], použije proxy hostitele, výchozí port je 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <nick> <password>, zabije ducha přezdívky" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <nick>, předá právo chanhalf-op přezdívce (vyžaduje chanop)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <password>, identifikuje vás pro nickserv" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <mask> <types..> <options..>\n" +" mask - maska hostitele, kterého chcete ignorovat, např: *!*@*.aol.com\n" +" types - typ igrnorování, jeden nebo všechny z:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <nick> [<channel>], pozve někoho na kanál, výchozí je aktuální " +"aktuální kanál (vyžaduje chanop)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <channel>, připojí se ke kanálu" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "KICK <nick>, vyhodí nick z aktuálního kanálu (vyžaduje chanop)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <nick>, vypoví a pak vyhodí nick z aktuálního kanálu (vyžaduje " +"chanop)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, vynutí novou kontrolu lagu" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <string>, hledá řetězec v bufferu" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <file>, nahraje plugin nebo skript" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, hromadný deop všech chanhalf-op v aktuálním kanálu (vyžaduje chanop)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, hromadný deop všech chanop v aktuálním kanálu (vyžaduje chanop)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <action>, pošle na aktuální kanál nějakou akci (akce jsou psány v třetí " +"osobě, např. /me jumps)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, hromadný vyhozov všech kromě vás aktuálním kanálu (vyžaduje chanop)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, hromadný op všech uživatelů na aktuálním kanálu (vyžaduje chanop)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <nick> <message>, pošle soukromou zprávu" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, zobrazí seznam přezdívek v aktuálním kanálu" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <nick> <message>, pošle poznámku CTCP" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <hostname> [<port>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <nickname>, nastaví váš nick" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <nick/channel> <message>, pošle poznámku. Poznámka je typ zprávy, na " +"kterou může být zpětně reagováno" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n network1[,network2,...]] [<nick>], zobrazí váš seznam upozornění " +"nebo tam někoho přidá" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <nick>, dá právo chanop určené přezdívce (vyžaduje chanop)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" +"PART [<channel>] [<reason>], opustí kanál, ve výchozím nastavení ten aktuální" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <nick | channel>, CTCP ping přezdívky nebo kanálu" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "QUERY [-nofocus] <nick>, otevře nové okno pro privmsg přezdívky" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<reason>], odpojí se od aktuálního serveru" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <text>, pošle text serveru" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Může být volán stejně jako /" +"RECONNECT pro nové připojení k aktuálnímu serveru nebo pomocí /RECONNECT ALL " +"pro připojení ke všem otevřeným serverům" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<host>] [<port>] [<password>], Může být volán stejně jako /" +"RECONNECT pro nové připojení k aktuálnímu serveru nebo pomocí /RECONNECT ALL " +"pro připojení ke všem otevřeným serverům" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <text>, pošle text xchatu, stejně jako by byl přijmut od serveru irc" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <text>, pošle text do aktuálního okna" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <nick> [<file>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <host> <port> <channel>, připojí se a vstoupí do kanálu" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <host> <port> <channel>, připojí se a vstoupí do kanálu" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <host> [<port>] [<password>], připojí se k serveru na výchozím " +"portu 6667 pro běžná připojení a portu 9999 pro připojení ssl" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <host> [<port>] [<password>], připojí se k serveru na výchozím portu " +"6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <variable> [<value>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<position>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "TOPIC [<topic>], nastaví téma kanálu, jinak ukáže aktuální téma" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Změní ikonu podle jmen souborů.\n" +"TRAY -f <filename> Nastaví ikonu na pevnou.\n" +"TRAY -i <number> Zabliká ikonou v daném intervalu.\n" +"TRAY -t <text> Nastaví tip ikony.\n" +"TRAY -b <title> <text> Nastaví kontextovou nápovědu ikony.." + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <mask> [<mask>...], povolí danou masku." + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <mask> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <name>, uvolní z paměti plugin nebo skript" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, otevře URL ve vašem prohlížeči" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <nick1> <nick2> atd, zvýrazní nick v uživatelském seznamu " +"kanálu" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <nick>, přidá právo hlasování někomu (vyžaduje chanop)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <message>, napíše zpráva všem na kanálu" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <message>, pošle zprávu všem chanop na aktuálním kanálu" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Použití: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"K přikazu není k dispozici žádná nápověda.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Takový příkaz neexistuje.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Špatné argumenty přikazu.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Příliš mnoho rekurzivních příkazů, ruším." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Neznámý příkaz. Zkuste /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "Žádný symbol xchat_plugin_init; jedná se určitě o plugin xchatu?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Jste si jistí, že server podporuje SSL a tento port?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Nemohu přeložit hostitele %s\n" +"Zkontrolujte vaše nastavení IP!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Překlad proxy selhal.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Zkouším další server v %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Čekám: symbol \"%s\" je neznámý. Pro síť %s nebude použita žádná konverze." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 přidán do seznamu oznámení" + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tNemohu připojit%C26 %B$1 %O(Byl jste vypovězen)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 je nyní znám jako $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 nastavil ban na $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tKanál $1 vytvořen na $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O odstranil práva half-operator z%C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O odstranil práva operator z%C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O odstranil hlas z%C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 osvobodil $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O dal právo half-operator%C26 $2" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 vás pozval na $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UKanál Uživatelé Téma" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 nastavil mód $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Kanál $1 módy: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O dal právo operator%C26 $2" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 zrušil osvobození na $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 zrušil pozvání na $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 zrušil klíčové slovo kanálu" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 zrušil limit uživatele" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 nastavil klíčové slovo kanálu na $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 nastavil limit kanálu na $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 zrušil ban na $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O dal hlas%C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Připojen. Přihlašuji se..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22Přihlašuji se k $1 ($2) port $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21Přihlášení selhalo. Chyba: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tObdržen CTCP $1 od $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tObdržen CTCP $1 od $2 (na $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tObdržel sondu CTCP $1 od $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tObdržel sondu CTCP $1 od $2 (na $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tDCC CHAT s %C26$1%O zrušen." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$tPřipojení DCC CHAT navázáno s %C26$1 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tDCC CHAT s %C26$1%O ztraceno ($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tPřijata nabídka DCC CHAT od $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tNabízí DCC CHAT $1" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tJiž nabízí CHAT $1" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$tPožadavek $1 na DCC připojení k%C26 $2%O selhal (err=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tPřišel '$1%O' od $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 Typ Do/Od Stav Velikost Poz Soubor " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O." +"%010%C22*%O$tContents of packet: $2" +msgstr "%C22*%O$tPřišel zkomolený požadavek DCC od %C26$1%O.%010%C22*%O" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tNabízí%C26 $1%O k%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tTakový požadavek DCC neexistuje." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV%C26 $2%O k%C26 $1%O zrušen." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC RECV%C26 $1%O od%C26 $3%O hotovo %C30[%C26$4%O cps%C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tPřipojení DCC RECV vytvořeno s%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV%C26 $1%O od%C26 $3%O selhalo ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV: Nemohu otevřít $1 pro zápis ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "%C22*%O$tThe file%C26 $1%C již existuje, ukládám jako%C26 $2%O." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Opožádal o zopakování%C26 $2 %Cz%C26 $3%C." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC SEND%C26 $2%O s%C26 $1%O zrušen." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "%C22*%O$tDCC SEND%C26 $1%O s%C26 $2%O hotovo %C30[%C26$3%O cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tPřipojení DCC SEND vytvořeno s%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND%C26 $1%O s%C26 $2%O selhalo. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Onabídl%C26 $2 %O(%C26$3 %Obytů)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Os%C26 $3 %Czastaveno - ruším." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Os%C26 $3 %Ovypršelo - ruším." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 smazán ze seznamu upozornění." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tOdpojen ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tNalezena vaše IP: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O přidán do seznamu ignorovaných." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "Ignorování %C26$1%O změněno." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 Maska PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O odstraněn ze seznamu ignorovaných." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " Seznam ignorovaných je prázdný." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "%C22*%O$tNemohu se připojit%C26 %B$1 %O(Kanál je pouze pro zvané)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tByl jste pozván do%C26 $1%O od%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) přišel do $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$tNemohu se připojit%C26 %B$1 %O(Vyžaduje klíčové slovo)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 vykopl $2 z $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$tByl jste zabit $1 ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD přeskočena." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 se již používá. Zkouším s $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "%C22*%O$tPřezdívka se již používá. Použijte /NICK a zkuste jinou." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tTakový DCC neexistuje." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tŽádný proces v současné době neběží" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tSeznam upozornění je prázdný." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Seznam upozornění " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 uživatelů v seznamu upozornění." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tUpozornění: $1 je offline ($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tUpozornění: $1 je online ($3)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) opustil $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) opustil $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tOdpověď ping od $1: $2 sekund" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tŽádná odpověď na ping po $1 sekund, odpojuji." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tA proces již běží" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 odešel (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 nastavil módy%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tHledám IP adresu pro%C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22Připojen." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22Hledá $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tUkončen předchozí pokus o připojení (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29Téma pro $1%C %C29je: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 změnil téma na: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29Téma pro $1%C %C29nastavil $2%C %C29v $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tNeznámý počítač. Možná špatně napsán?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "" +"%C22*%O$tNemohu se připojit k%C26 %B$1 %O(Uživatelský limit překročen)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Uživatelů na $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cje pryč %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OKonec seznamu WHOIS." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O nečinnost%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O nečinnost%C26 $2%O, přihlášen:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %Ouživatel@počítač%C27 $2%O, IP adresa%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Nyní hovoříte na $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tByl jste vykopnut z $2 od $3 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tOpustil jste kanál $3" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tOpustil jste kanál $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tByl jste pozván%C26 $1%O na%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tJste znám jako $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "Načtený log z" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** KONČÍM ZÁZNAM V %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** ZAČÍNÁM ZÁZNAM V %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Nemohu otevřít soubor(y) se záznamem pro zápis.\n" +" Zkontrolujte oprávnění k %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Zpráva při ukončení" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Zpráva při ukončení" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "Přezdívka připojujícího se člověka" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "Připojil jste se ke kanálu" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "Osobní počítač" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Přezdívka" + +#: src/common/text.c:973 +msgid "The action" +msgstr "Akce" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Znak módu" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Textová identifikace" + +#: src/common/text.c:980 +msgid "The text" +msgstr "Text" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Zpráva" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Stará přezdívka" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Nová přezdívka" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Přezdívka osoby, která změnila téma" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Téma:" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Kanál" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "Přezdívka vyhazovače" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "Osoba bude vyhozena" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "Kanál" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "Důvod" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "Přezdívka odcházející osoby" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "Čas" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "Autor" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Nick" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Důvod" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Hostitel" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "Odkud je" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "Čas ve formátu x.x (podívejte se dále)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "Kanál k" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "Zvuk" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "Přezdívka osoby" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "Událost CTCP" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "Přezdívka osoby, která nastavila klíč" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "Klíč" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "Přezdívka osoby, která nastavila limit" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "Limit" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "Přezdívka osoby, která může op-ovat" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "Přezdívka osoby, která byla op-ována" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "Přezdívka osoby, která byla halfop-ována" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "Přezdívka osoby, která může halfop-ovat" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "Přezdívka osoby, o které bylo hlasováno" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "Přezdívka osoby, která byla hlasována" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "Přezdívka osoby, která byla vykázána" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "Maska banu" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "Přezdívka toho, kdo odstranil klíč" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "Přezdívka toho, kdo odstranil limit" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "Přezdívka toho, kdo dělá deop-ování" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "Přezdívka toho, kdo byl deop-ován" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "Přezdívka toho, kdo byl deop-ován" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Přezdívka toho, kdo byl dehalfop-ován" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "Přezdívka toho, kdo dělá hlasování" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "Přezdívka toho, kdo byl zbaven hlasování" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "Přezdívka toho, kdo může odbanovat" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "Přezdívka toho, kdo může osvobodit" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "Vyňatá maska" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "Přezdívka osoby, která odstranila výjimku" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "Přezdívka osoby, která provedla pozvání" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "Maska pro pozvání" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "Přezdívka osoby, která odstranila pozvání" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "Přezdívka osoby, která nastavuje mód" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "Znaménka módu (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "Znaky módu" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "Kanál na kterém to bude nastaveno" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Uživatelské jméno" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Celé jméno" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Příslušenství ke kanálu/\"je operátor IRC\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Informace o serveru" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Doba nečinnosti" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Čas přihlášení" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Důvod nepřítomnosti" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Zpráva" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Účet" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "Skutený uživatel@počítač" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "Skutečná IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Jméno kanálu" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Text" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Jméno serveru" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Přezdívka uživatele, který vás pozval" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Uživatelé" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Přezdívka se používá" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Přezdívka bude vyzkoušena" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Port" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Síť" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Módy" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "IP adresa" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "Typ DCC" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Jméno souboru" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Požadované jméno souboru" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Cesta" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Pozice" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Velikost" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "Řetězec DCC" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Počet položek k oznámení" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Původní název souboru" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Nový název souboru" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Přijímač" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Maska hostitele" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Hostitelský název" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "Balíček" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Sekund" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Přezdívka pozvaného uživatele" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Maska pro ban" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Kdo nastavil ban" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Trvání banu" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Chyba při analýze události %s.\n" +"Načítám výchozí nastavení." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"Nemůžu přečíst zvkukový soubor:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "Vzdálený počítač zavřel soket" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Připojení odmítnuto" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Není cesta k počítači" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Připojení vypršelo" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Nemohu přiřadit tuto adresu" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Připojení resetováno hostitelem" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Ostrov Nanebevstoupení" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Andora" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Spojené arabské emiráty" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Afgánistán" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Antigua a Barbuda" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Albánie" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Arménie" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Nizozemské Antily" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Antarktida" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Argentina" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "Reverzní DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Americká Samoa" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Rakousko" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Austrálie" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Alandské ostrovy" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Ázerbájdžán" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Bosna a Hercegovina" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Bangladéš" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Belgie" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Bulharsko" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Bahrain" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Businesses" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Bermudy" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Brunei Darussalam" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Bolívie" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Brazílie" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Bahamy" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Bhutan" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Bouvet Island" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Bělorusko" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Kanada" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Kokosové ostrovy" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "Demokratická republika Kongo" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "Středoafrická republika" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Kongo" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Švýcarsko" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Cote d'Ivoire" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Cook Islands" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Chile" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Kamerun" + +#: src/common/util.c:898 +msgid "China" +msgstr "Čína" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Kolombie" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Internic Commercial" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Srbsko a Černá hora" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Kuba" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Cape Verde" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Vánoční ostrov" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Kypr" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "Česká republika" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Německo" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Djibouti" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Dánsko" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Dominica" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "Dominkánská republika" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Algeria" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Ekvádor" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Vzdělávací instituce" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Estonsko" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Egypt" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Západní Sahara" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Španělsko" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Etiopie" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Evropská unie" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Finsko" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Fidži" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Falklandské ostrovy" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Mikronésie" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Faroe Islands" + +#: src/common/util.c:928 +msgid "France" +msgstr "Francie" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Velká Británie" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Gruzie" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Francouzská Guayana" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Britské satelitní ostrovy" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Ghana" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Grónsko" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Vláda" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Guadeloupe" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Rovníková Guinea" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Řecko" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "S. Georgia a S. Sandwich Isles" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Guinea-Bissau" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Guyana" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Heard a McDonald Islands" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Chorvatsko" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Maďarsko" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Indonésie" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Irsko" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Israel" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Isle of Man" + +#: src/common/util.c:959 +msgid "India" +msgstr "Indie" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Infromační" + +#: src/common/util.c:961 +msgid "International" +msgstr "Mezinárodní" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Britské teritorium Indického oceánu" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Irák" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Irán" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Island" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Itálie" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Jamajka" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Jordánsko" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Japonsko" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Keňa" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Kyrgyzstán" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Kambodža" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Comoros" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "St. Kitts and Nevis" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Severní Korea" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Jižní Korea" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Kuvajt" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Cayman Islands" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Kazachstán" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Libanon" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Saint Lucia" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Lichtenštejnsko" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Srí Lanka" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Libérie" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Litva" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Lucembursko" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Lotyšsko" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Libya" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Maroko" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Monako" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Moldávie" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "United States Medical" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Madagaskar" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Marshall Islands" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Vojenské" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Makedonie" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Mongolsko" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Macau" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Northern Mariana Islands" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Martinique" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Mauretánie" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Mauritius" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Maldivy" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Mexiko" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Malajsie" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Mozambik" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Namibie" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Nová Kaledonie" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Internic Network" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Norfolk Island" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Nigérie" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Holandsko" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Norsko" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Nepál" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Nový Zéland" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Omán" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Internic Non-Profit Organization" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Francouzská Polynésie" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Papua-Nová Guinea" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Filipíny" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Pákistán" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Polsko" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "St. Pierre and Miquelon" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Puerto Rico" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Palestinské teritorium" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Portugalsko" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Paraguay" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Qatar" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Sjednocení" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Rumunsko" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "Starý školní ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Ruská federace" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Rwanda" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Saudská arábie" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Šalamounovy ostrovy" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Seychelles" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Súdán" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Švédsko" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Singapur" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "St. Helena" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Slovinsko" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard and Jan Mayen Islands" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Slovenská republika" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Somálsko" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Surinam" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "Sao Tome and Principe" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Bývalé USSR" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "El Salvádor" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Sýrie" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Swaziland" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Turks and Caicos Islands" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Čad" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Francouzská jižní teritoria" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Thajsko" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Tajikistan" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Východní Timor" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Turkménistán" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Tunis" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Turecko" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Trinidad a Tobago" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Tanzánie" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Ukrajina" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Spojené Království" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "USA" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Uruguay" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Uzbekistán" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Městský stát Vatikán" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "St. Vincent and the Grenadines" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "British Virgin Islands" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "US Virgin Islands" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Wallis and Futuna Islands" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Yemen" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Jugoslávie" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Jižní Afrika" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Zambie" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Neznámé" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "Otevřít dialogové okno" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "Poslat soubor" + +#: src/common/xchat.c:728 +#, fuzzy +msgid "_User Info (WhoIs)" +msgstr "Informace o uživateli (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +#, fuzzy +msgid "O_perator Actions" +msgstr "Akce operátora" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Dát práva Op" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Vzít práva Op" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Dát hlas" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Vzít hlas" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Kick/Ban" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Kick" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Ban" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "KickBan" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Opustit kanál" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Vstoupit do kanálu..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Zadat kanál pro připojení:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Odkazy serveru" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Ping serveru" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Ukrýt verzi" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Op" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "hoj" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Zadat důvod vyhození %s:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Poslat soubor" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Dialog" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "KdoJe" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Poslat" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Chat" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Smazat" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "Nemohu se připojit k sezení" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "Chyba při vykonávání NameHasOwner" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "Chyba při vykonávání Command" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "vzdálený přístup" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "plugin pro vzdálený přístup používá DBUS" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Nemohu se připojit k sezení: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Chyba při získání %s: %s\n" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "_O programu" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Multiplatformní klient IRC" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Mapa znaků" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "Nepřipojen" + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Musíte vybrat nějký ban." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "Určitě chcete odstranit všechny bany na %s?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Maska" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "Z" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Datum" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Okno se seznamem banů otevřet pouze pokud se nacházíte na kanálu." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: Seznam Banů (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Odstranit" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Sbalit" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Aktualizovat" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "%d/%d uživatelů na %d/%d kanálech." + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Vyberte požadovaný název souboru" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "_Připojit se ke kanálu" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "_Zkopírovat jméno kanálu" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "Zkopíruje _téma kanálu" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: Seznam kanálu (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "_Vyhledávání" + +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "Seznam _stahování" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "_Uložit seznam..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "Pouze zobrazit:" + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "s kanály" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "do" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "uživatelů." + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "Podívat se:" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "Jméno kanálu" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "Typ hledání:" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "Jednoduché vyhledávání" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "Maska odpovídá (Wildcards)" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "Regulární výraz" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Najít:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Poslat soubor %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Nové odeslání souboru není možné." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"Nemohu přistoupit k souboru: %s\n" +"%s.\n" +"Nové poslání není možné." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"Stahovaný soubor je větší než se vejde na disk. Pokračování ve stahování " +"není možné." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "Nemohu pokračovat ve stahování souboru od dvou lidí." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: Upload a Download" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Stav" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Soubor" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Obě" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Upload" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "Download" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Detaily" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Soubor:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "Adresa:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Zrušit" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Přijmout" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Pokračovat" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Otevřít adresář" + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: Seznam DCC Chat" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Přijmuto" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Odesláno" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "Čas" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*NOVÉ*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "UPRAV MĚ" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "JMÉNO" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Příkaz" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Posun nahoru" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Posun dolů" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Zrušit" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Uložit" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Přidat nové" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Smazat" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Setřídit" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Nápověda" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "Nepřipojovat se automaticky k serverům" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "Použít jiný konfigurační adresář" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "Nenačítat automaticky žádné pluginy" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "Zobrazit adresář s automaticky načtenými pluginy" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "Zobrazit uživatelský konfigurační adresář" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Otevřít URL irc://server:port/channel" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Vykonat příkaz" + +#: src/fe-gtk/fe-gtk.c:132 +#, fuzzy +msgid "Open URL or execute command in an existing XChat" +msgstr "Otevře URL ve stávajícím XChatu" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Spustit minimalizované. Úroveň 0=Normální 1=Ikona 2=Oznamovací oblast" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "úroveň" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Zobrazit informace o verzi" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"Chyba při otvírání písma:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "Zjistit zda je buffer prázdný.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d bytů" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Po síti posláno: %d bytů" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"Příkaz Spusit spustí data v Data 1 tak, jako by byla zadána do vstupního " +"pole, tam kde jste stiskli klíčovou sekvenci. Z tohoto důvodu může obsahovat " +"text (který bude poslán na kanál nebo člověku), příkazy a uživatelské " +"příkazy. Jakmile to spustíte, všechny znaky \\n v Data 1 jsou použity pro " +"oddělení příkazů, takže je možné spustit více jak jeden příkaz. Pokud chcete " +"\\ v aktuálním textu, pak zadejte \\\\" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"Změna Stránky - příkazy pro přepínání mezi stránkami v záložkách. Nastavte " +"Data 1 na stránku na kterou se chcete přepnout. Pokud je Data 2 nastavena na " +"nějakou hodnotu, přepnutí bude relativní a bude se vztahovat k aktuální " +"pozici" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"Příkaz pro vkládání do bufferu - vloží obsah Data 1 do položky, kde byla " +"stisknuta klíčová sekvence. Vloží to na místo aktuální pozice kurzoru" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"Příkaz pro posun stránky - pohybuje textovým polem nahoru a dolů nebo po " +"řádku. Nastavte Data 1 buď na nahoru, dolů, +1 nebo -1." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"Příkaz nastavení bufferu - nastaví položku, kde byla zadána řídící sekvence " +"na obsah Data 1" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"Příkaz pro poslední příkaz nastaví položku na obsah posledního příkazu, " +"který jsme zadali. Toho docílíme stiskem klávesy nahoru v shellu." + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"Příkaz další nastaví položku na obsah dalšího příkazu, který jsme zadali. " +"Toho docílíme stiskem klávesy dolů v shellu" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Tento příkaz změní text a provede jeho kompletaci z původně neúplné " +"přezdívky nebo příkazu. Pokud jsou Data 1 nastavena, můžeme stisknout " +"Tabulátor a vybrat nick." + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Tento příkaz umožní pohyb nahoru a dolů v seznamu přezdívek. Pokud jsou Data " +"1na něco nastavena, bude se pohybovat nahoru, jinak to bude dolů" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Tento příkaz zkontroluje poslední zadané slovo ve vstupním poli proti " +"seznamu náhrad a nahradí ho, pokud najde odpovídající náhradu" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Tento příkaz přesune otevřenou záložku o jednu doleva" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Tento příkaz přesune otevřenou záložku o jednu doprava" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Tento příkaz přesune aktuální rodinu záložek doleva" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Tento příkaz přesune aktuální rodinu záložek doprava" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "Přesune vstupní řádek do historie, ale nepošle ho na server" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "Při načítání konfigurace klávesových zkratek došlo k chybě" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<žádný>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Mód" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Klíč" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Akce" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: Klávesové zkratky" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Data 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Data 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Chyba při načítání konfigurace kláves\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Chybný název klávesy %s v konfiguračním souboru\n" +"Načítání zrušeno, opravte prosím %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Neznámá akce %s kláves v konfiguračním souboru\n" +"Načítání zrušeno, opravte prosím %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Očekávám datový řádek (beginning Dx{:|!}) ale našel jsem:\n" +"%s\n" +"\n" +"Načítání zrušeno, opravte prosím %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"Konfigurační soubor s přiřazením kláves je poškozen, načítání zrušeno\n" +"Opravte prosím %s/keybindings\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "Nemohu do tohoto souboru zapisovat." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Nemohu z tohoto souboru číst." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Maska již existuje." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Důvěrné" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Poznámka" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Pozvat" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Zrušit ignoraci" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Zadejte masku pro ignorování:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: Seznam ignorovaných" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Stav ignorování:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Kanál:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Důvěrné:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Poznámka:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Pozvat:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "Přidat..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "Název kanálu je příliš krátký, zkuste to znovu." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: Dokončení připojení" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "Připojení k %s je hotovo." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"V okně se seznamem serverů, ne kanálů (místnost chat) bylo zadáno " +"automatické připojení k této síti." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "Přejete si provést další?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "_Ne, ke kanálu se připojím později." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "_Připojit se k tomuto kanálu:" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" +"Pokud víte jméno kanálu, kte kterému se chcete připojit, pak ho zde zadejte." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "O_tevřít seznam kanálů." + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "Získávám seznam kanálů, to může chvíli trvat." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "_Vždy zobrait tento dialog po požipojení." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Dialog k" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Téma pro %s je: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Žádné téma není nastaveno" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"Tento server má s tím asociováno %d kanálů nebo dialogů. Zavřít všechny?" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "Ukončit XChat?" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "Příště se neptat." + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Jste připojen k %i sítím IRC." + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "Určitě chcete skončit?" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "Některé přenosy souborů jsou stále aktivní." + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "_Schovat do ikony" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Vložit atributy nebo barvy" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Tučně</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Podtrženo</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Normální" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Barvy 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Barvy 8-15" + +#: src/fe-gtk/maingui.c:1612 +#, fuzzy +msgid "_Settings" +msgstr "Nas_tavení" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "Skrývat zprávy o připojení a odchodu" + +#: src/fe-gtk/maingui.c:1625 +#, fuzzy +msgid "_Extra Alerts" +msgstr "Upozornění" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "Zazvonit při zprávě" + +#: src/fe-gtk/maingui.c:1628 +#, fuzzy +msgid "Blink Tray _Icon" +msgstr "Zablikat oznamovací ikonou při:" + +#: src/fe-gtk/maingui.c:1629 +#, fuzzy +msgid "Blink Task _Bar" +msgstr "Zablikat pruhem úlohy při:" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +#, fuzzy +msgid "_Detach" +msgstr "_Odpojit Záložku" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "_Zavřít" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "Uživatelský limit musí být číslo!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Ochrana tématu" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Žádné zprávy zvenku" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Tajné" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Pouze pozvat" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Moderováno" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Seznam vypovězených" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Klíčové slovo" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Uživatelský limit" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Zobrazit/skrýt seznam uživatelů" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"Nemohu nastavit transparentní pozadí!\n" +"\n" +"Možná používáte nějaký netypický okenní\n" +"mazažer, který není v současné době podporován.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Zadejte novou přezdívku:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Počítač není znám" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Skutečné jméno:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Uživatel:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "Země:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Server:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "před %u minutami" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Poslední zpráva:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Zpráva pryč:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"Panel s menu je nyní skrytý. Můžete ho opět zobrazit pomocí stisku klávesy " +"F9 nebo kliknutím pravého tlačítka myši na prázdnou plochu hlavního " +"textového pole." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Otevřít odkaz v prohlížeči" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Kopírovat vybraný odkaz" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Připojit se ke kanálu" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Opustit kanál" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Otočit kanál" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "X-Chat: Uživatelské menu" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Upravit toto menu..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Získat seznam kanálů..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Uživatelské příkazy - Speciální kódy:\n" +"\n" +"%c = aktuální kanál\n" +"%e = jméno aktuální sítě\n" +"%m = informace o počítači\n" +"%n = váš nick\n" +"%t = čas/datum\n" +"%v = verze xchatu\n" +"%2 = slovo 2\n" +"%3 = slovo 3\n" +"&2 = slovo 2 do konce řádku\n" +"&3 = slovo 3 do konce řádku\n" +"\n" +"např:\n" +"/cmd honza ahoj\n" +"\n" +"%2 bude \"honza\"\n" +"&2 bude \"honza ahoj\"." + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Uživatelská tlačítka - Speciální kódy:\n" +"\n" +"%a = všechny vybrané přezdívky\n" +"%c = aktuální kanál\n" +"%e = jméno aktuální sítě\n" +"%h = vybrat hostitelský název přezdívky\n" +"%m = informace o počítači\n" +"%n = váš nick\n" +"%s = vybraný nick\n" +"%t = čas/datum\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Dialogová tlačítka - Speciální kódy:\n" +"\n" +"%a = všechny zvolené přezdívky\n" +"%c = aktuální kanál\n" +"%e = jméno aktuální sítě\n" +"%h = zvloený hostitelský název nicku\n" +"%m = informace o počítači\n" +"%n = váš nick\n" +"%s = zvolený nick\n" +"%t = čas/datum\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"Odpovědi CTCP - Speciální kódy:\n" +"\n" +"%d = data (kompletní ctcp)\n" +"%e = jméno aktuální sítě\n" +"%m = informace o počítači\n" +"%s = nick, který poslal ctcp\n" +"%t = čas/datum\n" +"%2 = slovo 2\n" +"%3 = slovo 3\n" +"&2 = slovo 2 do konce řádku\n" +"&3 = slovo 3 do konce řádku\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"Obsluhy URL - Speciální kódy:\n" +"\n" +"%s = řetězec URL\n" +"\n" +"Přidání ! na začátek příkazu symbolizuje,\n" +"že to chcete poslat shellu namísto\n" +"XChatu" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "X-Chat: Uživatelem definované příkazy" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: Menu se seznamem uživatelů" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Nahradit s" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "X-Chat: Nahrazení" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: Obsluhy URL" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: Tlačítka uživatelského seznamu" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: Dialogová tlačítka" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: Odpovědi CTCP" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "Se_znam sítí..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "_Nový" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Záložka serveru..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Záložka kanálu" + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Okno serveru..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Okno kanálu..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "_Nahrát plugin nebo skript..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "_Konec" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "Z_obrazit" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "Panel _menu" + +#: src/fe-gtk/menu.c:1592 +msgid "_Topic Bar" +msgstr "Panel _téma" + +#: src/fe-gtk/menu.c:1593 +msgid "_User List" +msgstr "Seznam _uživatelů" + +#: src/fe-gtk/menu.c:1594 +msgid "U_serlist Buttons" +msgstr "_Tlačítka seznamu uživatelů" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "T_lačítka módů" + +#: src/fe-gtk/menu.c:1597 +msgid "_Channel Switcher" +msgstr "_Přepínač kanálu" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "_Záložky" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "Stro_m" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "_Měření sítě" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Vypnuto" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Graf" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "_Server" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "_Odpojit" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "_Znovu připojit" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "Vstoupit do kanálu..." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "Vstoupit do kanálu..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Jsem pryč (AWAY)" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "_Uživatelské menu" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "Nas_tavení" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "_Předvolby" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Pokročilá nastavení" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Automaticky nahradit..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "CTCP odpovědi..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Dialogová tlačítka..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Klávesové zkratky..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Textové události..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "Obsluhy URL adres..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Uživatelské příkazy..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Tlačítka seznamu uživatelů..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Okna seznamu uživatelů..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_Okno" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Seznam banů..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Graf..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Přímý rozhovor..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Přenosy souboru..." + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "Seznam banů..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Seznam ignorovaných..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Pluginy a skripty..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Surový záznam..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "Lapač URL..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Resetovat označený řádek" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "_Smazat text" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Hledat text..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Uložit text..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_Nápověda" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "_Obsah" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "_O programu" + +#: src/fe-gtk/menu.c:2147 +#, fuzzy +msgid "_Attach" +msgstr "_Připojit okno" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Naposledy viděn" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Offline" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Nikdy" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "před %d minutami" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Online" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Zadejte přezdívku pro přidání:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "Oznámit na těchto sítích:" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "Čárkou oddělený seznam zvolených sítí." + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "XChat: Seznam poslaných souborů" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "Otevřít dialog" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" +"Nemohu nalézt 'notify-send' pro zobrazení upozornění.\n" +"Nainstalujte prosím libnotify." + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "XChat: Připojen k %u sítím a %u kanálům" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "_Obnovit" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "_Skrýt" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "_Zablikat při" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "Zpráva kanálu" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "Soukromá zpráva" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "Zvýrazněná zpráva" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "Away" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat: Zvýrazněná zpráva od: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat: %u zvýrazněných zpráv, poslední od: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat: Nová veřejná zpráva od: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat: %u nových veřejných zpráv." + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat: Soukromá zpráva od: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "XChat: %u soukromých zpráv, poslední od: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat: Nabídka souboru od: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "XChat: %u nabídnutých souborů, poslední od: %s (%s)" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Verze" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Popis" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Zvolit plugin nebo skript pro načtení" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: Pluginy a skripty" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "_Načíst..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "_Uvolnit" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Uložit jako..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: Rawlog (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Smazat rawlog" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "Okno, které jste otevřeli více neexistuje." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "Nebylo nic nalezeno." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: Vyhledávání" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "_Velikost písma" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "Hledat _zpětně" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "_Najít" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Nová síť" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "" +"Skutečně chcete odstranit síť \"%s\" a všechny servery, které obsahuje?" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "Kanál" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: Seznam kanálu (%s)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "Heslo:" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "_Editovat" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "Uživatelské jméno a skutečné jméno nemohou být prázdná políčka." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: Upravit %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Servery pro %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Připojit pouze k vybraným serverům" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Neopakovat znovu všechny servery, pokud selže připojení." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Vaše detaily" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Použít globální informace o uživateli" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "_Přezdívka:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Druhá volba:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "_Uživatelské jméno:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "_Skutečné jméno:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Připojuji" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Automaticky připojit ke zvolené síti při startu" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "Použít server proxy" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "Použít SSL pro všechny servery v této síti" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Přijmout neplatné certifikáty SSL" + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "Opuštění kanálu:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "Kanály, ke kterým se připojit, jsou odděleny čárkami, ne mezerami!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Příkaz po připojení:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Extra příkaz, který se provede po připojení. Pokud chcete zadat více jak " +"jeden příkaz, nastavte ho na LOAD -e <jmenosouboru>, kde <jmenosouboru> je " +"textový soubor s příkazy, které je potřeba vykonat." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Heslo pro nickserv:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Pokud váš nick vyžaduje heslo, zadejte ho zde. Tato možnost není podporována " +"všemi sítěmi IRC." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Heslo:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Heslo pro server, pokud si nejste jistí, nechte prázdné." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Znaková sada:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: Seznam sítí" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Uživatelské informace" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Třetí volba:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Sítě" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "Přeskočit seznam serverů při startu" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "_Editovat..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "_Setřídit" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" +"Seřadí seznam sítí podle abecedy. Pro posun použijte klávesy SHIFT-NAHORU a " +"SHIFT-DOLŮ." + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "_Připojení" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Vzhled textového pole" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Písmo:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Obrázek na pozadí:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Posuvníky:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Barevné přezdívky" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Přiřadí každému člověku na IRC jinou barvu" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Odsazovat přezdívky" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Zarovnávat přezdívky vpravo" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Transparentní pozadí" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Zobrazit dělící čáru" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Vloží červenou čáru za poslední řádek textu." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Nastavení průhlednosti" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Červená:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Zelená:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Modrá:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Časové značky" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Povolit časové značky" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Formát časových značek:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Pro další detaily se podívejte na manuálovou stránku strftime." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "Poslední řečené pořadí" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Vstupní pole" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Použít v textu písmo a barvy" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Kontrola pravopisu" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Dokončování přezdívky" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "Automatické dokončování přezdívky (bez klávesy TAB)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Přípona dokončení přezdívky:" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "Dokončování přezdívky setříděno:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Vstupní box s kódy" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Interpretuje %nnn jako hodnoty ASCII" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Interpretuje %C, %B jako barvu, tučně atd" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, Op je první" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-a, Op je poslední" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Netřídit" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "Levý (Horní)" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "Levý (Dolní)" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "Pravý (horní)" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "Pravý (Dolní)" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Nahoře" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Dole" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Skryté" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Seznam uživatelů" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Zobrazit hostitelské názvy v seznamu uživatelů" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Seznam uživatelů setříděný podle:" + +#: src/fe-gtk/setup.c:205 +msgid "Show user list at:" +msgstr "Zobrazit seznam uživatelů:" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Sledování away" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "Sleduje stav away (pryč) uživatelů a označuje je jinou barvou" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "Na kanálech menších jak:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Akce při dvojkliku" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Okna" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Záložky" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Vždy" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Pouze požadované záložky" + +#: src/fe-gtk/setup.c:242 +#, fuzzy +msgid "Tree" +msgstr "Stro_m" + +#: src/fe-gtk/setup.c:249 +#, fuzzy +msgid "Switcher type:" +msgstr "Typ hledání:" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Otevřít speciální záložku pro zprávy serveru" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Otevřít speciální záložku pro oznámení serveru" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "Otevřít novou záložku jakmile přijde soukromá zpráva" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Třídit záložky v abecedním pořadí" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "Malé záložky" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Zaměřit se na nové záložky:" + +#: src/fe-gtk/setup.c:258 +msgid "Show channel switcher at:" +msgstr "Zobrazit přepínač kanálu:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Zkrácené popisky záložek na:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "znaky." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Záložky nebo okna" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Otevřít kanály v:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Otevřít dialogy v:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Otevřít utility v:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Otevřít DCC, ignorace, oznámení, atd. v záložkách nebo oknech?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "Ne" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Yes" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "Projít vždy dialogem uložení" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Soubory a adresáře" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Automaticky přijmout nabídku souboru:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Stáhnout soubory do:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Přesunout kompletní soubory do:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Uložit přezdívku ve jméně souborů" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Nastavení sítě" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Vzít moji adresu ze serveru IRC" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Zeptat se IRC serveru na skutečnou adresu. Použít tuto pokud máte nějakou " +"192.168.*.*!" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "DCC IP adresa:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "V okamžiku nabízení souboru tvrdit, že máte tuto adresu." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "První port pro odesílání DCC:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Poslední port pro odesílání DCC:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!Nechat porty na nule pro nulové rozmezí." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Maximální rychlost přenosu souboru (bytů za sekundu)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Jeden upload:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Maximální rychlost jednoho přenosu" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Jeden download:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Kombinace všech uploadů:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Maximální rychlost pro všechny soubory" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Kombinace všech downloadů:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Upozornění" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "Zobrazit upozornění oznamovací ikony při:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "Zablikat oznamovací ikonou při:" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "Zablikat pruhem úlohy při:" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "Vydat zvuk při:" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "Povolit ikonu panelu nástrojů" + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "Zvýrazněné zprávy" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Zvýrazněné zprávy jsou ty, kde je zmíněna vaše přezdívka a také:" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "Další slova pro zvýraznění:" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "Přezdívky, které se nebudou zvýrazňovat:" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "Přezdívky, které se budou zvýrazňovat:" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Více slov oddělte pomocí čárek." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Výchozí zpráva" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Konec:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Opuštění kanálu:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Pryč" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Away" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Zasílat away (pryč) zprávy" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Zaslat away zprávu na kanál(y) k nimž jste připojeni" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Zobrazovat away jednou" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Zobrazit identické zprávy away pouze jednou" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Automaticky zrušit stav away" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Zrušit stav away před odesláním zprávy" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Rozšířená nastavení" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Zpoždění při opakovaném automatickém připojení:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Zobrazit módy v jejich podobě" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Whois při oznámení" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" +"Pošle /WHOIS jakmile přijde uživatel, který je na vašem seznamu upozornění" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Skrývat zprávy o připojení a odchodu" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Skryje zprávy kanálu o připojení/odchodu" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Automaticky otevřít okna DCC" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Poslat okno" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Obdržet okno" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Okno hovoru" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Přihlašování" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "Povolí ukládání hovoru" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Jméno logu:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Server %c=Kanál %n=Síť." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Přidat do logů časové značky" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Formát časových značek v logu:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Vypnuto)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Všechna připojení" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "Pouze servery IRC" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "Pouze Příjem DCC" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Vaše adresa" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Přiřadit k:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "Užitečné pouze v případě počítačů s více adresami." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Proxy server" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Jméno počítače:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Port:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Typ:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Použít proxy" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Autentikace Proxy" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Použít autentikaci (MS proxy, HTTP nebo Socks5 pouze)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Použít autentikaci (HTTP nebo Socks5 pouze)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Uživatelské jméno:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Heslo:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Zvolit soubor s obrázkem" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "Zvolit adresář pro stažení" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Výběr písma" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Procházet..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Označit idetifikované uživatele s:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Označit neidentifikované uživatele s:" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "Otevřít adresář s daty" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Výběr barvy" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Barvy textu" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "barvy mIRC" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Místní barvy:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Popředí:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Pozadí:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Text pro označení" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Barvy rozhraní" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Nová data:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Značící čára" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Nová zpráva:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Uživatel je pryč:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Zvýraznění:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Událost" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Soubor se zvukem" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Zvolit soubor se zvukem" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Metoda přehrávání zvuku:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "Externí _program pro přehrávání zvuku:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "_Externí program" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_Automaticky" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "Adresář pro zvuky:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Zvukový soubor:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "_Procházet..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "Př_ehrát" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Uživatelské rozhraní" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Textové pole" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Seznam uživatelů" + +#: src/fe-gtk/setup.c:1703 +msgid "Channel switcher" +msgstr "Přepínač kanálu" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Barvy" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Chatování" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Obecné" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Zvuky" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Nastavení sítě" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Přenosy souboru" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Kategorie" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" +"Strom není možné umístit nahoru nebo dospod!\n" +"Změňte prosím nejprve rozložení <b>Záložek</b> v nabídce <b>Zobrazit</b>." + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Některá z nastavení, která byla změněna, vyžadují restart aplikace." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*UPOZORNĚNÍ*\n" +"Automatické přijmutí DCC do vašeho domovského adresáře\n" +"může být nebezpečné a zneužitelné. Např.:\n" +"Někdo vám může poslat soubor .bash_profile" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: Nastavení" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Při zpracování textu došlo k chybě" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Tento signál obsahoval pouze %d argumenty, $%d je neplatné" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Tiskne textové soubory" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Editovat události" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ Počet" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Nahrát z..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Vyzkoušet všechny" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: Grabování URL" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Smazat seznam" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Kopírovat vybranou adresu URL" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Kopírovat" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Uložit seznam do souboru" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d op, %d celkem" + +#~ msgid "" +#~ "Set per channel options\n" +#~ "CHANOPT CONFMODE ON|OFF - Toggle conf mode/showing of join and part " +#~ "messages\n" +#~ "CHANOPT COLORPASTE ON|OFF - Toggle color paste\n" +#~ "CHANOPT BEEP ON|OFF - Toggle beep on message\n" +#~ "CHANOPT TRAY ON|OFF - Toggle tray blink on message" +#~ msgstr "" +#~ "Množina voleb kanálu\n" +#~ "CHANOPT CONFMODE ON|OFF - Zapne mód zobrazující připojení a částečné " +#~ "zprávy kanálu\n" +#~ "CHANOPT COLORPASTE ON|OFF - Zapne barvu\n" +#~ "CHANOPT BEEP ON|OFF - Zapne zvuk při zprávě\n" +#~ "CHANOPT TRAY ON|OFF - Zapne blikání při zprávě" + +#~ msgid "Direct client-to-client" +#~ msgstr "Přímo klient-klient" + +#~ msgid "Send File" +#~ msgstr "Poslat soubor" + +#~ msgid "Offer Chat" +#~ msgstr "Nabídnout hovor" + +#~ msgid "Abort Chat" +#~ msgstr "Zrušit hovor" + +#~ msgid "Userinfo" +#~ msgstr "Uživatelinfo" + +#~ msgid "Clientinfo" +#~ msgstr "Klientinfo" + +#~ msgid "Time" +#~ msgstr "Čas" + +#~ msgid "Finger" +#~ msgstr "Prst" + +#~ msgid "Oper" +#~ msgstr "Oper" + +#~ msgid "Kill this user" +#~ msgstr "Zabít tohoto uživatele" + +#~ msgid "Mode" +#~ msgstr "Mód" + +#~ msgid "Give Half-Ops" +#~ msgstr "Dát práva Half-Op" + +#~ msgid "Take Half-Ops" +#~ msgstr "Vzít Half-Op" + +#~ msgid "Ignore" +#~ msgstr "Ignorovat" + +#~ msgid "Ignore User" +#~ msgstr "Ignorovat uživatele" + +#~ msgid "UnIgnore User" +#~ msgstr "Zrušit ignoraci uživatele" + +#~ msgid "Info" +#~ msgstr "Informace" + +#~ msgid "Who" +#~ msgstr "Kdo" + +#~ msgid "DNS Lookup" +#~ msgstr "DNS Lookup" + +#~ msgid "Trace" +#~ msgstr "Trasa" + +#~ msgid "UserHost" +#~ msgstr "UserHost" + +#~ msgid "External" +#~ msgstr "Externí" + +#~ msgid "Traceroute" +#~ msgstr "Trasovat cestu" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "About XChat" +#~ msgstr "O XChatu" + +#~ msgid "Unban" +#~ msgstr "Odbanovat" + +#~ msgid "Blink tray on message" +#~ msgstr "Zablikat při zprávě" + +#~ msgid "Show join/part messages" +#~ msgstr "Zobrazit zprávu o příhlášní/odchodu" + +#~ msgid "Color paste" +#~ msgstr "Vkládání barev" + +#~ msgid "_Close Tab" +#~ msgstr "_Zavřít záložku" + +#~ msgid "Channel List..." +#~ msgstr "Seznam kanálů..." + +#~ msgid "Notify List..." +#~ msgstr "Seznam oznámení..." + +#~ msgid "_Close Window" +#~ msgstr "_Zavřít okno" + +#~ msgid "User" +#~ msgstr "Uživatel" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: Seznam upozornění" + +#~ msgid "C_hannels to join:" +#~ msgstr "_Připojit se ke kanálům:" + +#~ msgid "Channel Switcher" +#~ msgstr "Přepínač kanálu" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "Žádné další záložky nejsou otevřené, ukončit xchat." + +#~ msgid "_Layout" +#~ msgstr "_Rozložení" + +#~ msgid "Quit..." +#~ msgstr "Konec..." + +#~ msgid "Resizable user list" +#~ msgstr "Uživatelský seznam se změnou velikosti" + +#~ msgid "Left" +#~ msgstr "Vlevo" + +#~ msgid "Right" +#~ msgstr "Vpravo" + +#~ msgid "Show tabs at:" +#~ msgstr "Zobrazit záložky v:" + +#~ msgid "US Minor Outlying Islands" +#~ msgstr "US Minor Outlying Islands" + +#~ msgid "File Offer" +#~ msgstr "Nabídka souboru" + +#~ msgid "Flash taskbar on highlighted messages" +#~ msgstr "Zaměřit se na zvýrazněnou zprávu" + +#~ msgid "Flash taskbar on private messages" +#~ msgstr "Při soukromé zprávě zablikat v panelu úloh" + +#~ msgid "Beep on highlighted messages" +#~ msgstr "Zvuk při zvýrazněných zprávách" + +#~ msgid "Beep on private messages" +#~ msgstr "Zvuk při soukromé zprávě" + +#~ msgid "Beep on channel messages" +#~ msgstr "Zvuk při zprávě kanálu" + +#~ msgid "%s loaded successfully!\n" +#~ msgstr "%s úspěšně načten!\n" + +#~ msgid "I can't save an empty list!" +#~ msgstr "Nemohu uložit prázdný seznam!" + +#~ msgid "List display options:" +#~ msgstr "Možnosti zobrazení:" + +#~ msgid "Minimum Users:" +#~ msgstr "Minimum uživatelů:" + +#~ msgid "Maximum Users:" +#~ msgstr "Maximum uživatelů:" + +#~ msgid "Regex Match:" +#~ msgstr "Regex odpovídá:" + +#~ msgid "Apply Match to:" +#~ msgstr "Použít porovnání na:" + +#~ msgid "Apply" +#~ msgstr "Použít" + +#~ msgid "Refresh the list" +#~ msgstr "Aktualizovat seznam" + +#~ msgid "Save the list" +#~ msgstr "Uložit seznam" + +#~ msgid "None" +#~ msgstr "Žádný" + +#~ msgid "To" +#~ msgstr "Na" + +#~ msgid "Started" +#~ msgstr "Začal" + +#~ msgid "Speed limit" +#~ msgstr "Omezení rychlosti" + +#~ msgid "XChat: File Receive List" +#~ msgstr "XChat: Seznam přijmutých souborů" + +#~ msgid "Open" +#~ msgstr "Otevřít" + +#~ msgid "Ack" +#~ msgstr "Ack" + +#~ msgid "To/From" +#~ msgstr "Do/Z" + +#~ msgid "Go to" +#~ msgstr "Jít na" + +#~ msgid "(Can be a text file relative to ~/.xchat2/)." +#~ msgstr "(Může být textový soubor, relativně vzhledem k ~/.xchat2/)" + +#~ msgid "(Can be a text file relative to config dir)." +#~ msgstr "(Může být textový soubor, relativně ke konfiguračnímu adresáři)" + +#~ msgid "%C18*$t$1%O $2" +#~ msgstr "%C18*$t$1%O $2" + +#~ msgid "%C21*%O$t%C21%B$1%O%C21 $2" +#~ msgstr "%C21*%O$t%C21%B$1%O%C21 $2" + +#~ msgid "%C18%H<%H$4$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$4$1%H>%H%O$t$2" + +#~ msgid "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" +#~ msgstr "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" + +#~ msgid "%C28-%C29$1/$2%C28-%O$t$3" +#~ msgstr "%C28-%C29$1/$2%C28-%O$t$3" + +#~ msgid "$1$t$2" +#~ msgstr "$1$t$2" + +#~ msgid "%C19>%O$1%C19<%O$t$2" +#~ msgstr "%C19>%O$1%C19<%O$t$2" + +#~ msgid "%C16*%O$t$1%O" +#~ msgstr "%C16*%O$t$1%O" + +#~ msgid "%C28-%C29$1%C28-%O$t$2" +#~ msgstr "%C28-%C29$1%C28-%O$t$2" + +#~ msgid "%C28*%C29$3$1%C28*$t%O$2" +#~ msgstr "%C28*%C29$3$1%C28*$t%O$2" + +#~ msgid "%C18%H<%H$3$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$3$1%H>%H%O$t$2" + +#~ msgid "%C22*%O$t$1" +#~ msgstr "%C22*%O$t$1" + +#~ msgid "%C31%H<%H$4$1%H>%H%O%C30$t$2" +#~ msgstr "%C31%H<%H$4$1%H>%H%O%C30$t$2" + +#~ msgid "PID" +#~ msgstr "PID" + +#~ msgid "Server" +#~ msgstr "Server" + +#~ msgid "Open an irc:// url" +#~ msgstr "Otevřít url irc://" + +#~ msgid "irc://server:port/channel" +#~ msgstr "irc://server:port/kanál" + +#~ msgid "Execute a xchat command" +#~ msgstr "Vykonat příkaz xchatu" + +#~ msgid "\"Command to execute\"" +#~ msgstr "\"Příkaz pro vykonání\"" + +#~ msgid "Prints some text to the current tab/window" +#~ msgstr "Vytiskne nějaký text na aktuální záložku/okno" + +#~ msgid "\"Text to print\"" +#~ msgstr "\"Text pro vytištění\"" + +#~ msgid "Change the context to the channel" +#~ msgstr "Změnit kontext podle kanálu" + +#~ msgid "Change the context to the server" +#~ msgstr "Změnit kontext podle serveru" + +#~ msgid "server" +#~ msgstr "server" + +#~ msgid "Get some informations from xchat" +#~ msgstr "Získat nějaké informace z xchatu" + +#~ msgid "id" +#~ msgstr "id" + +#~ msgid "Get settings from xchat" +#~ msgstr "Získat nastavení z xchatu" + +#~ msgid "name" +#~ msgstr "jméno" + +#~ msgid "" +#~ "xchat-remote: %s\n" +#~ "Try `xchat-remote --help' for more information\n" +#~ msgstr "" +#~ "xchat-remote: %s\n" +#~ "Pro více informací zkuste 'xchat-remote --help'\n" + +#~ msgid "Failed to complete SetContext" +#~ msgstr "Chyba při nastavení SetContext" + +#~ msgid "Failed to complete print" +#~ msgstr "Chyba při tisku" + +#~ msgid "Failed to complete GetInfo" +#~ msgstr "Chyba při vykonání GetInfo" + +#~ msgid "Failed to complete GetPrefs" +#~ msgstr "Chyba při vykonání GetPrefs" + +#~ msgid "%s doesn't exist\n" +#~ msgstr "%s neexistuje\n" diff --git a/etc/wyatt8740/po/de.po b/etc/wyatt8740/po/de.po new file mode 100644 index 0000000..2303407 --- /dev/null +++ b/etc/wyatt8740/po/de.po @@ -0,0 +1,5686 @@ +# X-Chat german translation file +# Copyright (C) 2000, 2003 Free Software Foundation, Inc. +# Hauke Hagenhoff <Hauke.Hagenhoff@gmx.de>, 2003,2004. +# Karl Eichwalder <ke@gnu.franken.de>, 2003. +# Benedikt Roth <Benedikt.Roth@gmx.net>, 2000. +# Christian Meyer <linux@chrisim.de>, 2000. +# Matthias Warkus <mawa@iname.com>, 1999. +# Tamer Fahmy <e9526976@stud2.tuwien.ac.at>, 1999. +# +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.8.4\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2007-06-24 18:36+0100\n" +"Last-Translator: Hauke Hagenhoff <Hauke.Hagenhoff@gmx.de>\n" +"Language-Team: German <translation-team-de@lists.sourceforge.net>\n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Kann ~/.xchat2 nicht erzeugen" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Ich bin beschäftigt" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Verlassend" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* IRC als Root laufen zu lassen ist dumm! Du solltest\n" +" ein Benutzerkonto anlegen und dieses zum Einloggen verwenden.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Wartend" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Aktiv" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Gescheitert" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Erledigt" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Verbindung" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Abgebrochen" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "Kann nicht auf %s zugreifen\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Fehler" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s bietet \"%s\" an. Willst Du annehmen?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Keine aktiven DCCs\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "JA " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "NEIN " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "CTCP-Flut von %s, ignoriere %s\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "MSG-Flut von %s, deaktiviere automatische Dialoge.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s online\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s offline\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Kein Channel betreten. Versuche /join #<channel>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Nicht verbunden. Versuche /server <Host> [<Port>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Bereits als abwesend markiert: %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "Bereits als anwesend markiert.\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "/bin/sh wird benötigt!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Verfügbare Kommandos: " + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Benutzerdefinierte Kommandos:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Durch Plugins definierte Kommandos:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Gib /HELP <Kommando> für mehr Informationen ein, oder /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Unbekanntes Argument '%s' ignoriert." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "Kein solches Plugin gefunden.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Dieses Plugin kann nicht entladen werden.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "" +"ADDBUTTON <Name> <Aktion>, fügt einen Knopf unter der Benutzerliste hinzu" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "" +"ALLCHAN <Kommando>, sendet ein Kommando an alle Channels in denen Du bist" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "" +"ALLCHANL <Kommando>, sendet ein Kommando an alle Channels in denen Du bist" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "" +"ALLSERV <Kommando>, sendet ein Kommando an alle Server auf denen Du bist" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<Grund>], setzt Dich auf abwesend" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "BACK, setzt Dich auf anwesend (nicht \"abwesend\")" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <Maske> [<Banntyp>], bannt jeden mit der entsprechenden Maske aus dem " +"aktuellen Channel. Wenn diese bereits im Channel sind, werden sie nicht " +"gekickt (Erfordert Op-Status)" + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "" +"SET [-e] [-or] [-quiet] <Variable> [<Wert>], setzt eine Variable oder zeigt " +"ihren Wert" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "" +"CLEAR [ALL|HISTORY], Löscht das aktuelle Textfenster oder die " +"Kommandohistorie" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, Schließt das aktuelle Textfenster/Reiter" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" +"COUNTRY [-s] <Kode|Wildcard>, findet einen Länderkode, z.B.: de = " +"Bundesrepublik Deutschland" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <Nick> <Nachricht>, sendet die CTCP-Nachricht an den Nick, übliche " +"Nachrichten sind VERSION und USERINFO" + +#: src/common/outbound.c:3516 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "" +"CYCLE [<Channel>], verläßt den aktuellen oder angegebenen Channel und " +"betritt ihn direkt wieder" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <Nick> - akzeptiere eine angebotene Datei\n" +"DCC SEND [-maxcps=#] <Nick> [Datei] - Sendet eine Datei an jemanden\n" +"DCC PSEND [-maxcps=#] <Nick> [Datei] - Sendet eine Datei im passiven Modus " +"an jemanden\n" +"DCC LIST - zeigt die DCC-Liste\n" +"DCC CHAT <Nick> - bietet jemandem einen DCC-CHAT an\n" +"DCC PCHAT <Nick> - bietet jemandem einen DCC-CHAT im " +"passiven Modus an\n" +"DCC CLOSE <Typ> <Nick> <Datei> - Schließt einen DCC-Transfer\n" +" Beispiel: /dcc close send markus datei.zip" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <Nick>, entfernt den HalbOp-Status bei Nick im aktuellen Channel " +"(Erfordert Op-Status)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <Name>, entfernt einen Knopf unter der Benutzerliste" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <Nick>, entfernt den Op-Status bei Nick im aktuellen Channel (Erfordert " +"Op-Status)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <Nick>, entfernt den Voice-Status bei Nick im aktuellen Channel " +"(Erfordert Op-Status)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, Trennt die Server-Verbindung" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <Nick|Host|IP>, Findet die IP-Adresse eines Nutzers" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <Text>, Zeigt Text lokal an" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <Kommando>, führt das Kommando aus. Wenn -o angegeben wurde, wird " +"die Ausgabe in das aktuelle Fenster gesendet, ansonsten wird sie lokal " +"gezeigt" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, sendet das Signal SIGCONT" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], killt einen laufenden exec in der aktuellen Sitzung. Wenn -9 " +"angegeben wurde, wird der Prozess SIGKILLed" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, sendet dem Prozess das Signal SIGSTOP" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, sendet Daten an den stdin des Prozesses" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, löscht die Sendewarteschlange des aktuellen Servers" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <Host> [<Port>], verbindet durch einen Proxy, Standardport ist 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <Nick> <Passwort>, Trennt einen verwaisten Nick" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <Nick>, gibt Nick HalbOp-Status (Erfordert Op-Status)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <Passwort>, identifiziert Dich beim NickServ" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <Maske> <Typen> <Optionen>\n" +" Maske - Hostmaske, die zu ignorieren ist, z.B.: *!*@*.aol.com\n" +" Typen - Datentypen, die zu ignorieren sind, einer oder alle von:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" Optionen - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <Nick> [<Channel>], lädt jemanden in einen Channel ein, standardmäßig " +"den aktuellen (Erfordert Op-Status)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <Channel>, betritt einen Channel" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <Nick>, kickt den Nick aus dem aktuellen Channel (Erfordert Op-Status)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <Nick>, bannt den Nick und kickt dann den Nick aus dem aktuellen " +"Channel (Erfordert Op-Status)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, erzwingt eine neue Lag-Prüfung" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <Zeichenkette>, sucht im Puffer nach einer Zeichenkette" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <Datei>, lädt ein Plugin oder ein Skript" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, Nimmt allen HalbOps im aktuellen Channel den HalbOp-Status " +"(Erfordert Op-Status)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, Nimmt allen Ops im aktuellen Channel den Op-Status (Erfordert Op-" +"Status)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <Aktion>, sendet die Aktion in den aktuellen Channel (Aktionen werden in " +"der 3. Person geschrieben, wie /me springt)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, Kickt alle außer Dich im aktuellen Channel (Erfordert Op-Status)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, gibt allen Benutzern im aktuellen Channel Op (Erfordert Op-Status)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <Nick> <Nachricht>, sendet eine private Nachricht" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, Listet die Nicks im aktuellen Channel auf" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <Nick> <Nachricht>, Sendet eine CTCP-Notiz" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "" +"NEWSERVER [-noconnect] <Hostname> [<Port>], verbindet mit einem Server in " +"einem neuen Reiter" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <Nickname>, setzt Deinen Nick" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <Nick/Channel> <Nachricht>, sendet eine Notiz. Notizen sind " +"Nachrichten, auf die automatisch reagiert werden sollte" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n network1[,network2,...]] [<nick>], zeigt Deine " +"Benachrichtigungsliste oder fügt jemanden hinzu" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <Nick>, gibt Nick Op-Status (Erfordert Op-Status)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" +"PART [<Channel>] [<Grund>], verläßt den Channel, standardmäßig den aktuellen" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <Nick | Channel>, pingt den Nick oder Channel per CTCP an" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "QUERY [-nofocus] <nick>, öffnet ein neues Dialogfenster mit jemandem" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<Grund>], trennt XChat vom aktuellen Server" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <Text>, sendet den Text im Rohformat an den Server" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<Host>] [<Port>] [<Passwort>], Kann einfach als /RECONNECT " +"aufgerufen werden um sich mit dem aktuellen Server wiederzuverbinden, oder " +"als /RECONNECT ALL um sich mit allen aktiven Servern wiederzuverbinden" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<Host>] [<Port>] [<Passwort>], Kann einfach als /RECONNECT " +"aufgerufen werden um sich mit dem aktuellen Server wiederzuverbinden, oder " +"als /RECONNECT ALL um sich mit allen aktiven Servern wiederzuverbinden" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <Text>, sendet Rohdaten an XChat, als ob sie vom IRC-Server empfangen " +"wurden" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <Text>, sendet den Text ans Ziel im aktuellen Fenster" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <Nick> [<Datei>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <Host> <Port> <Channel>, verbindet und betritt einen Channel" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <Host> <Port> <Channel>, verbindet und betritt einen Channel" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <Host> [<Port>] [<Passwort>], verbindet mit einem Server, der " +"Standard-Port ist 6667 für normale Verbindungen und 9999 für SSL-Verbindungen" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <Host> [<Port>] [<Passwort>], verbindet mit einem Server, der " +"Standard-Port ist 6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "" +"SET [-e] [-or] [-quiet] <Variable> [<Wert>], setzt eine Variable oder zeigt " +"ihren Wert" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<Position>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<Thema>], setzt das Thema, wenn eins angegeben wurde, oder zeigt das " +"aktuelle" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" +"\n" +"TRAY -f <Zeitüberschreitung> <Datei1> [<Datei2>] Wechselt im " +"Benachrichtigungsbereich zwischen zwei Symbolen.\n" +"TRAY -f <Dateiname> Setzt Benachrichtigungssysmbol auf ein " +"festes Symbol.\n" +"TRAY -i <Nummer> Blnkt im Benachrichtigungsbereich mit " +"einem internen Symbol.\n" +"TRAY -t <Text> Setzt den Tooltip für den " +"Benachrichtigungsbereich.\n" +"TRAY -b <Titel> <Text> Setzt den Ballontext für den " +"Benachrichtigungsbereich." + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "" +"UNBAN <Maske> [<Maske>...], entfernt den Bann für eine spezielle Hostmaske" + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "" +"UNIGNORE <Maske> [QUIET], hört auf, die angegebene Hostmaske zu ignorieren" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <Name>, entfernt ein Plugin oder Skript" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, öffnet einen URL in Deinem Browser" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <Nick1> <Nick2> ... <Nickn>, markiert Nick(s) in der " +"Channel-Benutzerliste" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <Nick>, gibt jemandem Voice-Status (Erfordert Op-Status)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <Nachricht>, schreibt eine Nachricht in alle Channels" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <Nachricht>, sendet eine Nachricht an alle Ops im aktuellen Channel" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Benutzung: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"Keine Hilfe für dieses Kommando verfügbar.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Kein solches Kommando.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Ungültige Argumente für das Benutzerkommando.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Zu viele rekursive Benutzerkommandos - Abbruch." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Unbekanntes Kommando. Versuche /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "Kein xchat_plugin_init Symbol; ist dies wirklich ein XChat-Plugin?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Bist Du sicher, daß dies ein SSL-fähiger Server und Port ist?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Kann Hostname %s nicht auflösen\n" +"Prüfe Deine IP-Einstellungen!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Durchlaufen der Proxies gescheitert.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Springe zum nächsten Server in %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Warnung: Zeichensatz \"%s\" ist unbekannt. Es wird keine Konvertierung für " +"Netzwerk %s vorgenommen." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 zur Benachrichtigungsliste hinzugefügt." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Bannliste:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tKann%C26 %B$1%O$t nicht betreten %O(Du bist gebannt)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 ist jetzt bekannt als $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 setzt einen Bann auf $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tChannel $1 erzeugt am $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O entfernt Halb-Op-Status bei%C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O entfernt Op-Status bei%C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O entfernt Voice-Status bei%C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 setzt Ausnahme auf $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O gibt Halb-Op-Status an%C26 $2" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 setzt Einladung für $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UChannel Nutzer Thema%O" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 setzt Modus $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Channel $1 Modi: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O gibt Op-Status an%C26 $2" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 entfernt Ausnahme von $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 entfernt Einladung für $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 entfernt das Channel-Schlüsselwort" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 entfernt die Benutzerobergrenze" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 setzt das Channel-Schlüsselwort auf $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 setzt die Benutzerobergrenze auf $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 entfernt den Bann auf $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O gibt Voice-Status an%C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Verbunden. Anmeldevorgang läuft..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22Verbinde mit $1 ($2) Port $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21Verbindung gescheitert. Fehler: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tCTCP $1 von $2 empfangen" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tCTCP $1 von $2 empfangen (An $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tCTCP-Sound $1 von $2 empfangen" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tCTCP Sound $1 empfangen von $2 (an $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tDCC CHAT mit %C26$1%O abgebrochen." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC-CHAT-Verbindung mit %C26$1 %C30[%O$2%C30]%O aufgebaut%O" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tDCC CHAT mit %C26$1%O verloren. ($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tDCC-CHAT-Angebot von $1 empfangen" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tDCC-CHAT an $1 angeboten" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tBiete $1 bereits einen DCC-CHAT an" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$tDCC $1 Verbindung mit%C26 $2%O gescheitert (Fehler=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$t '$1%O' von $2 empfangen" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 Typ Zu/Von Status Größe Pos Datei" + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O." +"%010%C22*%O$tContents of packet: $2" +msgstr "" +"%C22*%O$tFehlformatierte DCC Anforderung von %C26$1%O.%010%C22*%O$tInhalt " +"des Pakets: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tBiete%C26 $2%O %C26 $1 %O$tan" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tKein solches DCC-Angebot." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV%C26 $2%O von%C26 $1%O abgebrochen." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC RECV%C26 $1%O von%C26 $3%O vollständig %C30[%C26$4%O cps%C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC RECV Verbindung aufgebaut mit%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV%C26 $1%O von%C26 $3%O gescheitert. ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV: Kann $1 nicht schreiben ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "" +"%C22*%O$tDie Datei%C26 $1%C existiert bereits, speichere stattdessen als%C26 " +"$2%O." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "" +"%C22*%O$t%C26$1 %Ohat angefordert,%C26 $2 %Cvon%C26 $3%C an fortzusetzen." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC SEND%C26 $2%O an%C26 $1%O abgebrochen." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC SEND%C26 $1%O an%C26 $2%O vollständig %C30[%C26$3%O cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC SEND Verbindung aufgebaut mit%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND%C26 $1%O an%C26 $2%O gescheitert. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Ohat uns%C26 $2 %Oangeboten (%C26$3 %Obytes)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oan%C26 $3 %Chängt - Abbruch." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oan%C26 $3%O: Zeitüberschreitung - Abbruch." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 von der Benachrichtigungsliste gelöscht." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tGetrennt ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tHabe Deine IP gefunden: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O wird jetzt ignoriert." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "Ignorierung von %C26$1%O geändert." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 Hostmaske DIAL NOTI CHAN CTCP DCC EINL UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O wird nicht mehr ignoriert." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " Niemand wird ignoriert." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "" +"%C22*%O$tKann%C26 %B$1 %O$tnicht betreten %O(Channel ist nur auf Einladung " +"zu betreten)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tDu wurdest von%C26 $2%C nach %C26 $1%O eingeladen (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) hat $2 betreten" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$tKann%C26 %B$1 %Onicht betreten (Erfordert ein Schlüsselwort)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 hat $2 aus $3 gekickt ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$tDu bist von $1 gekillt worden ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD übersprungen." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 bereits in Benutzung. Erneuter Versuch mit $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$tNickname bereits in Benutzung, benutze /NICK um einen anderen zu " +"probieren." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tKein solcher DCC." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tKein solcher Prozess läuft derzeit" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tDie Benachrichtigungsliste ist leer." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Benachrichtigungsliste " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 Nutzer in der Benachrichtigungsliste." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tBenachrichtigung: $1 ist offline ($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tBenachrichtigung: $1 ist online ($3)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) hat $3 verlassen" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) hat $3 verlassen (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tPing-Antwort von $1: $2 Sekunde(n)" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tKeine Ping-Antwort seit $1 Sekunden, trenne." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tEin Prozess läuft bereits" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 hat die Verbindung getrennt (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 setzt die Modi%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tSuche nach IP-Nummer für%C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22Verbunden." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22Suche nach $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tVorhergehender Verbindungsversuch (PID=$1) abgebrochen" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29Das Thema für $1%C %C29ist: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 hat das Thema geändert zu: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29Das Thema für $1%C %C29wurde gesetzt durch $2%C %C29um $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tUnbekannter Host. Vielleicht hast Du ihn falsch geschrieben?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "%C22*%O$tKann%C26 %B$1 %Onicht betreten (Benutzerobergrenze erreicht)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Benutzer in $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cist abwesend %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OEnde der WHOIS-Liste." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O untätig%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O untätig%C26 $2%O, Online seit:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %Owahrer Nutzer@Host%C27 $2%O, wahre IP%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Du sprichst jetzt in $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tDu wurdest durch $3 aus $2 gekickt ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tDu hast Channel $3 verlassen" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tDu hast Channel $3 verlassen (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tDu hast %C26 $1%O nach%C26 $2%O$t eingeladen %O(%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tDu bist jetzt bekannt als $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "Logbuch geladen von" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** BEENDE LOGBUCH UM %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** BEGINNE LOGBUCH UM %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Kann Logbuchdatei(en) nicht zum Schreiben öffnen. Prüfe\n" +" die Berechtigungen von %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Linke Nachricht" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Rechte Nachricht" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "Der Nick der Person, die den Channel betritt" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "Der Channel, der betreten wird" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "Die Hostmask der Person" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Nickname" + +#: src/common/text.c:973 +msgid "The action" +msgstr "Die Aktion" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Moduszeichen" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Identifierter Text" + +#: src/common/text.c:980 +msgid "The text" +msgstr "Der Text" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Die Nachricht" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Alter Nickname" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Neuer Nickname" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Nick der Person, die das Thema geändert hat" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Thema" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Channel" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "Der Nickname des Kickenden" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "Die Person, die gekickt wird" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "Der Channel" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "Der Grund" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "Der Nick der Person, die den Channel verläßt" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "Die Zeit" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "Der Erzeuger" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Nick" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Grund" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Host" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "Von wem es ist" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "Die Zeit im x.x-Format (siehe unten)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "Der Channel an den es geht" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "Der Klang" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "Der Nick der Person" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "Das CTCP-Ereignis" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "Der Nick der Person, die den Schlüssel gesetzt hat" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "Der Schlüssel" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "Der Nick der Person, die das Limit gesetzt hat" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "Das Limit" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "Der Nick der Person, die Op-Status erteilte" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "Der Nick der Person, die Op-Status erhielt" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "Der Nick der Person, die HalfOp-Status erhielt" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "Der Nick der Person, die HalfOp-Status erteilte" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "Der Nick der Person, die Voice erteilte" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "Der Nick der Person, die Voice erhielt" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "Der Nick der Person, die bannte" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "Die Bannmaske" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "Der Nick, der den Schlüssel entfernte" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "Der Nick, der das Limit entfernte" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "Der Nick der Person, die Op nahm" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "Der Nick der Person, die Op abgenommen bekam" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "Der Nick der Person, die HalfOp nahm" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Der Nick der Person, die HalfOp abgenommen bekam" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "Der Nick der Person, die Voice nahm" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "Der Nick der Person, die Voice abgenommen bekam" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "Der Nick der Person, die den Bann entfernte" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "Der Nick der Person, die die Ausnahme setzte" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "Die Ausnahme-Maske" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "Der Nick der Person, die die Ausnahme entfernte" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "Der Nick der Person, die die Einladung aussprach" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "Die Einladungs-Maske" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "Der Nick der Person, die die Einladung zurücknahm" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "Der Nick der Person, die den Modus setzte" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "Die Moduszeichen (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "Der Modusbuchstabe" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "Der Channel, der eingestellt wird" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Benutzername" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Voller Name" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Channelinformation/\"ist ein IRC-Operator\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Server-Information" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Untätig" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Zeitpunkt der Einwahl" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Abwesenheitsgrund" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Nachricht" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Konto" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "Echter Benutzer@Host" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "Echte IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Channel-Name" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Text" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Server-Name" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Nick der Person, die Dich einlud" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Benutzer" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Nickname in Benutzung" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Nick wird versucht" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Port" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Netzwerk" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Modusfolge" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "IP-Adresse" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "DCC-Typ" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Dateiname" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Zieldateiname" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Pfadname" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Position" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Größe" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "DCC Zeichenfolge" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Anzahl der Notify-Einträge" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Alter Dateiname" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Neuer Dateiname" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Empfänger" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Hostmaske" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Hostname" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "Das Paket" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Sekunden" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Nick der Person, die eingeladen wurde" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Bann-Maske" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Wer setzte den Bann" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Bannzeit" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Fehler beim Abarbeiten von Ereignis %s.\n" +"Lade Standard" + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"Kann diese Sounddatei nicht lesen:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "Gegenseite hat den Socket geschlossen" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Verbindung verweigert" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Keine Route zum Host" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Verbindung wegen Zeitüberschreitung geschlossen" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Kann diese Adresse nicht zuteilen" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Verbindung von der Gegenseite zurückgesetzt" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Himmelfahrtsinsel" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Vereinigte Arabische Emirate" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Afghanistan" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Antigua und Barbuda" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Albanien" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Armenien" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Niederländische Antillen" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Antarktis" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Argentinien" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "Reverse DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Amerikanisch Samoa" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Österreich" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "NATO" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Australien" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Åland-Inseln" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Aserbaidschan" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Bosnien und Herzegowina" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Bangladesch" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Belgien" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Bulgarien" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Bahrain" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Geschäftsdomain" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Brunei Darussalam" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Bolivien" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Brasilien" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Bahamas" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Bhutan" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Bouvet-Insel" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Botsuana" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Belarus (Weißrussland)" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Kanada" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Kokos-Inseln" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "Demokratische Republik Kongo" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "Zentralafrikanische Republik" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Kongo" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Schweiz" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Côte d'Ivoire" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Cook-Inseln" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Chile" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Kamerun" + +#: src/common/util.c:898 +msgid "China" +msgstr "China" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Kolumbien" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Internic geschäftlich" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Serbien und Montenegro" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Kuba" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Kap Verde" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Weihnachtsinsel" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Zypern" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "Tschechische Republik" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Bundesrepublik Deutschland" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Dschibuti" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Dänemark" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Dominica" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "Dominikanische Republik" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Algerien" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Ecuador" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Bildungseinrichtung" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Estland" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Arabische Republik Ägypten" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Westliche Sahara" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Spanien" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Äthiopien" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Europäische Union" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Finnland" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Fidschi" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Falkland-Inseln" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Mikronesien" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Färör-Inseln" + +#: src/common/util.c:928 +msgid "France" +msgstr "Frankreich" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Gabun" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Großbritannien" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Georgien" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Französisch Guyana" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Britische Kanalinseln" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Ghana" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Grönland" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Amerikanische Regierung" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Guadeloupe" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Äquatorial-Guinea" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Griechenland" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "S. Georgia- und S. Sandwich-Inseln" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Guinea-Bissau" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Guyana" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Heard- und McDonald-Inseln" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Kroatien" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Ungarn" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Indonesien" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Irland" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Israel" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Isle of Man" + +#: src/common/util.c:959 +msgid "India" +msgstr "Indien" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Informative Domain" + +#: src/common/util.c:961 +msgid "International" +msgstr "International" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Britische Gebiete im indischen Ozean" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Irak" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Iran" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Island" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Italien" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Jamaika" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Jordanien" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Japan" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Kenia" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Kirgisistan" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Kambodscha" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Komoren" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "St. Kitts und Nevis" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Nordkorea" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Südkorea" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Kuwait" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Cayman-Inseln" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Kasachstan" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Libanon" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Saint Lucia" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Liberia" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Litauen" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Luxemburg" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Lettland" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Libyen" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Marokko" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Monaco" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Moldawien" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "Vereinigte Staaten medizinisch" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Madagaskar" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Marshallinseln" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Militärisch" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Mazedonien" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Mongolei" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Macau" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Nördliche Mariana-Inseln" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Martinique" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Mauretanien" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Mauritius" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Malediven" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Mexiko" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Malaysia" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Mosambik" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Namibia" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Neu Kaledonien" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Internic Netzwerk" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Norfolk-Insel" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Nigeria" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Niederlande" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Norwegen" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Neuseeland" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Internic Non-Profit-Organisation" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Französisch Polynesien" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Papua-Neuguinea" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Philippinen" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Polen" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "St. Pierre und Miquelon" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Puerto Rico" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Palästinensergebiete" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Portugal" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Paraguay" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Katar" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Reunion" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Rumänien" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "Old School ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Russische Föderation" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Ruanda" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Saudi-Arabien" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Solomon-Inseln" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Seychellen" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Sudan" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Schweden" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Singapur" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "St. Helena" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Slowenien" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard- und Jan Mayen-Inseln" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Slowakische Republik" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Somalia" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Suriname" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "São Tomé und Príncipe" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Frühere UdSSR" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Syrien" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Swasiland" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Turks und Caicoc Inseln" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Tschad" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Südliche französische Gebiete" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Thailand" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Tadschikistan" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Ost-Timor" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Tunesien" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Türkei" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Trinidad und Tobago" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Tansania" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Ukraine" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Vereinigtes Königreich" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "Vereinigte Staaten von Amerika" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Uruguay" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Usbekistan" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Vatikanstadt" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "St. Vincent und die Grenadinen" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Britische Jungferninseln" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "Amerikanische Jungferninseln" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Wallis- und Futuna-Inseln" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Jemen" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Jugoslawien" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Südafrika" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Sambia" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Simbabwe" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Unbekannt" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "Dialogfenster öffnen" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "Sende eine Datei" + +#: src/common/xchat.c:728 +#, fuzzy +msgid "_User Info (WhoIs)" +msgstr "Benutzerinformationen (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +#, fuzzy +msgid "O_perator Actions" +msgstr "Bedieneraktionen" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Op geben" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Op nehmen" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Voice geben" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Voice nehmen" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Kicken/Bannen" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Kicken" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Bannen" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "KickBannen" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Channel verlassen" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Betrete Channel..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Zu betretender Channel:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Serververbindungen" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Server anpingen" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Version verstecken" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Op" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "bye" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Kickgrund für %s eingeben:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Dateiversand" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Dialog" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Sende" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Chat" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Lösche" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "Konnte nicht zur Sitzungs-Busschnittstelle verbinden" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "Konnte NamehatBesitzer nicht abschließen" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "Konnte Kommando nicht abschließen" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "Fernzugriff" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "Plugin für den Fernzugriff mittels DBUS" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Konnte nicht zur Sitzungs-Busschnittstelle verbinden: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Ermittlung von %s scheiterte: %s\n" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "Ü_ber" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Ein portabler IRC-Client" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Zeichentabelle" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "Nicht verbunden." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Du mußt Bans auswählen" + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "Bist Du sicher, daß Du alle Bans in %s entfernen willst?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Maske" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "Von" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Datum" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" +"Du kannst die Bannliste nur öffnen, während Du in einem Channel-Reiter bist." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: Bannliste (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Entfernen" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Abschneiden" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Aktualisieren" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Zeige %d/%d Benutzer in %d/%d Channels." + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Gib einen Dateinamen für die Ausgabe an" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "Channel betreten (_Join)" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "_Channel-Name kopieren" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "_Thementext kopieren" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: Channel-Liste (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "_Suche" + +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "Liste herunterla_den" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "_Liste speichern..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "Zeige nur:" + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "Channels mit" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "bis" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "Benutzern." + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "Suche in:" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "Channel-Name" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "Suchart:" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "Einfache Suche" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "Suchmasken-Entsprechung" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "Regulärer Ausdruck" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Finde:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Sende Datei an %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Diese Datei ist nicht fortsetzbar." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"Kann nicht auf die Datei %s zugreifen\n" +"%s.\n" +"Fortsetzen nicht möglich." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"Datei im Downloadverzeichnis ist größer als die angebotene Datei. Fortsetzen " +"nicht möglich." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "Kann dieselbe Datei nicht von zwei Leuten fortsetzen." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: Uploads und Downloads" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Status" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Datei" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Beides" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Uploads" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "Downloads" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Details" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Datei:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "Adresse:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Abbrechen" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Annehmen" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Fortsetzen" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Verzeichnis öffnen..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: DCC-Chatliste" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Rein " + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Raus" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "Startzeit" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*NEU*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "ÄNDERE MICH" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Name" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Kommando" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Nach oben" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Nach unten" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Abbruch" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Speichern" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Hinzufügen" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Löschen" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Sortiere" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Hilfe" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "Nicht automatisch mit Servern verbinden" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "Benutze ein anderes Konfigurationsverzeichnis" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "Plugins nicht automatisch laden" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "Plugin-Autostart-Verzeichnis anzeigen" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "Benutzerkonfigurationsverzeichnis anzeigen" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Öffne eine irc:://Server:Port/Channel-URL" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Kommando ausführen:" + +#: src/fe-gtk/fe-gtk.c:132 +#, fuzzy +msgid "Open URL or execute command in an existing XChat" +msgstr "Öffne URL in einem bestehenden XChat" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" +"Minimiert starten. Level 0=Normal 1=Minimiert 2=Im Benachrichtigungsbereich" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "Stufe" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Versionsinformationen anzeigen" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"Kann Schriftartdatei nicht öffnen:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "Suchpuffer ist leer.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d Bytes" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Netzwerk-Sendewarteschlange: %d Bytes" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"Die Run Command Aktion führt die Daten in \"Daten 1\" aus, als ob sie in die " +"Eingabezeile eingegeben worden wären, in der die Tastenfolge gedrückt wurde. " +"Daher kann \"Daten 1\" Text, der in den Channel/Dialog gesendet wird, " +"Kommandos oder benutzerdefinierte Kommandos enthalten. \\n trennt Kommandos, " +"so daß es möglich ist, mehrere Kommandos auszuführen. Wenn Du ein \\ im Text " +"benötigst, gib \\\\ ein." + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"Die Change Page Aktion schaltet zwischen Reitern um. Tragen Sie in \"Daten " +"1\" den Reiter ein, zu dem Du wechseln willst. Wenn in \"Daten 2\" " +"irgendetwas steht, dann ist die Umschaltung relativ zur aktuellen Position" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"Die Insert in Buffer Aktion fügt den Inhalt von \"Daten 1\" in die Zeile der " +"Historie in dem die Tastenfolge gedrückt wurde an der gegenwärtigen Cursor-" +"Position ein." + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"Die Scroll Page Aktion rollt den Text eine Seite auf oder ab. Mögliche Werte " +"für \"Daten 1\": Up, Down, +1 oder -1." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"Die Set Buffer Aktion setzt die Zeile der Historie in der die " +"Tastenkombination gedrückt wurde auf den Wert von \"Daten 1\"." + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "Die Last Command Aktion blättert eine Zeile in der Historie hoch." + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "Die Next Command Aktion blättert eine Zeile in der Historie abwärts." + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Diese Aktion vervollständigt einen unvöllständigen Nick oder Befehl. Wenn " +"\"Daten 1\" gesetzt ist, springt 2x [Tab] auf die letzte, nicht die nächste " +"Möglichkeit." + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Diese Aktion blättert durch die Liste der Nicknamen. Wenn \"Daten 1\" " +"gesetzt ist, wird hochgeblättert, sonst runter. " + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Diese Aktion vergleicht das zuletzt Eingegebene mit der Textersetzungsliste " +"und ersetzt es, wenn sie eine Entsprechung findet." + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Diese Aktion bewegt den aktiven Reiter eine Position nach links." + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Diese Aktion bewegt den aktiven Reiter eine Position nach rechts." + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Diese Aktion bewegt die aktuelle Reitergruppe nach links." + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Diese Aktion bewegt die aktuelle Reitergruppe nach rechts." + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "Eingabezeile in der Historie speichern, aber nicht absenden." + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "Fehler beim Laden der Tastaturkürzel-Konfiguration" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<leer>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Mod" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Taste" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Aktion" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: Tastenkürzel" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Umschalt" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Strg" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Daten 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Daten 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Fehler beim Öffnen der Konfigurationsdatei fr die Tastatur\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Unbekannter Tastenname %s in der Tastenbindungs-\n" +"Konfigurationsdatei. Ladevorgang abgebrochen,\n" +"bitte korrigiere %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Unbekannte Aktion %s in der Tastenbindungs-\n" +"Konfigurationsdatei. Ladevorgang abgebrochen,\n" +"bitte korrigiere %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Erwarte Datenzeile (beginnend mit Dx{:|!}), aber bekam:\n" +"%s\n" +"\n" +"Ladevorgang abgebrochen, bitte korrigiere %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"Tastenbindungs-Konfigurationsdatei ist defekt,\n" +"Ladevorgang abgebrochen, bitte korrigiere %s/keybindings\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "Kann in diese Datei nicht schreiben." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Kann diese Datei nicht lesen." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Diese Maske gibt es bereits." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Privat" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Notiz" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Einlad." + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Unignore" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Maske zum Ignorieren eingeben:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: Ignorierliste" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Ignore-Status" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Channel:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privat:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Notiz:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Einladungen" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "Hinzufügen..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "Channelname zu kurz, bitte erneut versuchen." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: Verbindung hergestellt" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "Verbindung zu %s fertiggestellt." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"Im Serverlistenfenster wurde kein Channel (Chatraum) eingegeben, der in " +"diesem Netzwerk automatisch betreten werden soll." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "Was möchtest Du als Nächstes tun?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "_Nichts, ich werde später einen Channel betreten." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "Diesen Channel _betreten" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" +"Wenn Du den Namen des Channels weißt, den Du betreten willst, gib ihn hier " +"ein." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "Channel-Liste ö_ffnen:" + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "Der Empfang der Channelliste kann ein bis zwei Minuten dauern." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "_Diesen Dialogs nach jeder Verbindund anzeigen." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Dialog mit" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Thema für %s ist: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Kein Thema gesetzt" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"Diesem Server sind noch %d Channels oder Dialoge zugeordnet. Alle schließen?" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "XChat beenden?" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "Beim nächsten Mal nicht nachfragen." + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Du bist mit %i IRC-Netzwerken verbunden." + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "Bist Du sicher, daß Du beenden willst?" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "Einige Dateitransfers sind noch aktiv." + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "In den Benachrichtigungsbereich _minimieren" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Attribut oder Farbkode einsetzen" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Fett</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Unterstrichen</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Normal" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Farben 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Farben 8-15" + +#: src/fe-gtk/maingui.c:1612 +#, fuzzy +msgid "_Settings" +msgstr "_Einstellungen" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "Join/Part-Nachrichten verstecken" + +#: src/fe-gtk/maingui.c:1625 +#, fuzzy +msgid "_Extra Alerts" +msgstr "Warnungen" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "Bei Nachricht piepsen" + +#: src/fe-gtk/maingui.c:1628 +#, fuzzy +msgid "Blink Tray _Icon" +msgstr "Symbol im Benachrichtigungsbereich blinken lassen bei:" + +#: src/fe-gtk/maingui.c:1629 +#, fuzzy +msgid "Blink Task _Bar" +msgstr "Taskleiste blinken lassen bei:" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +#, fuzzy +msgid "_Detach" +msgstr "Reiter _lösen" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "S_chließen" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "Benutzerlimit muß eine Zahl sein!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Themenschutz" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Keine Nachrichten von Außen" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Geheim" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Nur auf Einladung" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Moderiert" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Bannliste" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Schlüsselwort" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Benutzerlimit" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Benutzerliste zeigen/verstecken" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"Transparenter Hintergrund nicht aktivierbar!\n" +"\n" +"Eventuell benutzt Du einen nicht\n" +"unterstützten Windowmanager.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Neuen Nicknamen eingeben:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Host unbekannt" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Wahrer Name:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Benutzer:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "Land:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Server:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "vor %u Minuten" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Letzte Nachricht:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Abwesenheitsnachricht:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"Die Menüzeile ist jetzt versteckt. Du kannst sie durch Druck auf F9 oder " +"Rechtsklick in einem freien Bereich des Textfeldes wieder sichtbar machen." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Link im Browser öffnen" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Ausgewählte URL kopieren" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Channel betreten" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Channel verlassen" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Channel rotieren" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: Benutzermenü" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Dieses Menü ändern..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Empfange Channelliste..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Benutzerkommandos - Spezielle Kodes:\n" +"\n" +"%c = aktueller Channel\n" +"%e = aktuelles Netzwerk\n" +"%m = Computerinfo\n" +"%n = Dein Nick\n" +"%t = Zeit/Datum\n" +"%v = XChat Version\n" +"%2 = Wort 2\n" +"%3 = Wort 3\n" +"&2 = Wort 2 bis zum Ende der Zeile\n" +"&3 = Wort 3 bis zum Ende der Zeile\n" +"\n" +"z.B.:\n" +"/cmd john hallo\n" +"\n" +"%2 wäre \"john\"\n" +"&2 wäre \"john hallo\"." + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Benutzerlisten-Knöpfe - Spezielle Kodes:\n" +"\n" +"%a = alle ausgewählten Nicks\n" +"%c = aktueller Channel\n" +"%e = aktuelles Netzwerk\n" +"%h = die Hostmaske des ausgewählten Nicks\n" +"%m = Computerinfo\n" +"%n = Dein Nick\n" +"%s = ausgewählter Nick\n" +"%t = Zeit/Datum\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Dialog-Knöpfe - Spezielle Kodes:\n" +"\n" +"%a = alle ausgewählten Nicks\n" +"%c = aktueller Channel\n" +"%e = aktuelles Netzwerk\n" +"%h = die Hostmaske des ausgewählten Nicks\n" +"%m = Computerinfo\n" +"%n = Dein Nick\n" +"%s = ausgewählter Nick\n" +"%t = Zeit/Datum\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"CTCP-Antworten - Spezielle Kodes:\n" +"\n" +"%d = Daten (Der gesamte CTCP)\n" +"%e = aktuelles Netzwerk\n" +"%m = Computerinfo\n" +"%s = Der Nick des Absenders\n" +"%t = Zeit/Datum\n" +"%2 = Wort 2\n" +"%3 = Wort 3\n" +"&2 = Wort 2 bis zum Ende der Zeile\n" +"&3 = Wort 3 bis zum Ende der Zeile\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"URL-Handling - Spezielle Kodes:\n" +"\n" +"%s = die URL\n" +"\n" +"Ein ! am Anfang des Kommandos sagt,\n" +"daß das Kommando auf der Shell statt\n" +"in XChat gestartet wird" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: Benutzerdefinierte Kommandos" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: Benutzerlistenmenü" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Ersetzen durch" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: Ersetzen" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: URL-Handling" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: Benutzerlistenknöpfe" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: Dialogknöpfe" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: CTCP-Antworten" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "Netzwerk-Li_ste..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "_Neu" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Serverreiter..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Channelreiter..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Serverfenster..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Channelfenster..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "L_ade Plugins oder Skripte..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "_Beenden" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "A_nsicht" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "_Menüzeile" + +#: src/fe-gtk/menu.c:1592 +msgid "_Topic Bar" +msgstr "_Themenzeile" + +#: src/fe-gtk/menu.c:1593 +msgid "_User List" +msgstr "Ben_utzerliste" + +#: src/fe-gtk/menu.c:1594 +msgid "U_serlist Buttons" +msgstr "Benutzerli_sten-Knöpfe" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "M_odusknöpfe" + +#: src/fe-gtk/menu.c:1597 +msgid "_Channel Switcher" +msgstr "_Channel-Umschalter" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "_Reiter" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "_Baum" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "_Netzwerkmeter" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Aus" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Grafisch" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "_Server" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "_Trennen" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "_Wiederverbinden" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "Betrete Channel..." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "Betrete Channel..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Als abwesend markiert" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "_Benutzermenü" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "_Einstellungen" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "_Optionen" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Fortgeschritten" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Automatisches Ersetzen..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "CTCP-Antworten..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Dialog-Knöpfe..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Tastenkürzel..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Textereignisse" + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "URL-Handling..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Benutzerkommandos..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Benutzerlisten-Knöpfe..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Benutzerlisten-Menü..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_Fenster" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Bannliste..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Zeichentabelle..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "DCC Chat..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Dateitransfers..." + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "Bannliste..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Ignorierliste..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Plugins und Skripte..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Rohdaten-Logbuch..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "URL-Grabber..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Markierungslinie zurücksetzen" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "_Lösche Text" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Suche Text..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Speichere Text..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_Hilfe" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "_Inhalt" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "Ü_ber" + +#: src/fe-gtk/menu.c:2147 +#, fuzzy +msgid "_Attach" +msgstr "Fenster _anhängen" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Zuletzt gesehen" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Offline" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Niemals" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "vor %d Minuten" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Online" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Hinzuzufügenden Nickname eingeben:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "Benachrichtige in diesen Netzen:" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "Eine kommagetrennte Liste von Netzen wird akzeptiert" + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "XChat: Ignorierliste" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "Dialogfenster öffnen" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" +"Kann 'notify-send' nicht finden, um Ballon-Hinweise zu senden.\n" +"Bitte installiere libnotify." + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "XChat: Verbunden mit %u Netzwerken und %u Channels" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "_Wiederherstellen" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "_Verstecken" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "_Blinke bei" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "Channel-Nachricht" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "Privaten Nachricht" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "Hervorgehobene Nachricht" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "Abwesend" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat: Hervorgehobene Nachricht von: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat: %u hervorgehobene Nachrichten, letzte von: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat: Neue öffentliche Nachricht von: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat: %u neue öffentliche Nachrichten." + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat: Private Nachricht von: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "XChat: %u private Nachrichten, letzte von: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat: Dateiangebot von: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "XChat: %u Dateiangebote, letztes von: %s (%s)" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Version" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Beschreibung" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Wähle ein Plugin oder Skript zum Laden" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: Plugins und Skripte" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "_Laden..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "_Entladen" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Speichern als..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: Rohdatenlog (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Rohdatenlog löschen" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "Das Fenster für das diese Suche geöffnet wurde existiert nicht mehr." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "Suche beendet, kein Treffer." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: Suche" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "Groß-/Kleinschreibung _beachten" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "_Rückwärts suchen" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "_Finde" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Neues Netzwerk" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Wirklich das Netzwerk \"%s\" und alle seine Server löschen?" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "Channel" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: Channel-Liste (%s)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "Passwort:" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "_Editieren" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "Benutzername und wahrer Name dürfen nicht leer sein." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: Editiere %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Server für %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Nur mit dem angegebenen Server verbinden" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Nicht alle Server durchlaufen wenn die Verbindung scheitert." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Deine Details" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Globale Benutzerinformationen benutzen" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "_Nickname:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Zweite Wahl:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "Ben_utzer:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "Wahrer Name:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Verbinde" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Automatisches Verbinden mit diesem Netzwerk beim Start" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "Proxy-Server benutzen" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "SSL für alle Server dieses Netzes benutzen" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Ungültiges SSL-Zertifikat akzeptieren" + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "Channel verlassen:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "" +"Zu betretende Channels getrennt durch Kommata, nicht durch Leerzeichen!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Verbindungskommando:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Kommando, das nach der Verbindung ausgeführt werden soll. Für mehrere " +"Kommandos benutze LOAD -e <Dateiname>, wobei <Dateiname> eine Textdatei mit " +"den auszuführenden Kommandos ist." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "NickServ-Passwort:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Wenn Dein Nickname ein Passwort erfordert, gib es hier ein. Nicht alle IRC-" +"Netzwerke unterstützen dies." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Server-Passwort:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Serverpasswort. Im Zweifel freilassen." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Zeichensatz:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: Netzwerkliste" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Benutzer-Information" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Dritte Wahl:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Netzwerke" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "Keine Netzwerkliste beim Start" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "_Editiere..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "Sortiere" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" +"Sortiert die Netzwerkliste alphabetisch. Benutze Umschalt+Auf und " +"Umschalt+Ab um eine Zeile zu bewegen." + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "_Verbinde" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Textfeld-Aussehen" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Schriftart:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Hintergrundbild:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Textpufferzeilen:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Farbige Nicks" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Jeder Person im IRC eine Farbe zuordnen" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Nicks einrücken" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Nicknamen rechts ausrichten" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Transparenter Hintergrund" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Markierungslinie zeigen" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Eine rote Linie nach dem zuletzt gelesenen Text einfügen" + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Transparenzseinstellungen" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Rot:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Grün:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Blau:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Zeitstempel" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Datumsstempel aktivieren" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Zeitstempelformat:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "strftime man-Seite für Details" + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "Reihenfolge wie letzte Wortmeldungen" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Eingabezeile" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Textfenster-Schrift und -Farben nutzen" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Rechtschreibprüfung" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Nickvervollständigung" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "Automatische Nickvervollständigung (ohne Tabulator-Taste)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Anhang für Nickvervollständigung:" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "Nickvervollständigung sortiert nach:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Kodes für Eingabezeile" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "%nnn als ASCII-Werte auswerten" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "%C, %B als Farbe, Fettschrift usw. auswerten" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, Ops zuerst" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, Ops zuletzt" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Unsortiert" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "Links (Oben)" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "Links (Unten)" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "Rechts (Oben)" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "Rechts (Unten)" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Oben" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Unten" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Versteckt" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Benutzerliste" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Hostnamen in Benutzerliste zeigen" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Benutzerliste sortiert nach:" + +#: src/fe-gtk/setup.c:205 +msgid "Show user list at:" +msgstr "Benutzerliste zeigen:" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Abwesenheitsverfolgung" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "" +"Verfolge den Abwesenheitsstatus der Benutzer und zeige sie in einer anderen " +"Farbe" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "In Channels mit weniger Nutzern als:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Aktion bei Doppelklick" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Fenster" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Reiter" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Immer" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Nur angeforderte Reiter" + +#: src/fe-gtk/setup.c:242 +#, fuzzy +msgid "Tree" +msgstr "_Baum" + +#: src/fe-gtk/setup.c:249 +#, fuzzy +msgid "Switcher type:" +msgstr "Suchart:" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Öffne Reiter für Servermeldungen" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Öffne Reiter für Servernotizen" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "Öffne einen neuen Reiter für empfangene private Nachrichten" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Reiter alphabetisch sortieren" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "Kleine Reiter" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Neue Reiter im Vordergrund:" + +#: src/fe-gtk/setup.c:258 +msgid "Show channel switcher at:" +msgstr "Channel-Umschalter anzeigen:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Reiternamen kürzen auf:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "Zeichen." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Reiter oder Fenster" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Öffne Channels in:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Öffne Dialoge in:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Öffne Hilfsmittel in:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Öffne DCC, Ignore, Notify usw. in Reitern oder Fenstern?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "Nein" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Ja" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "Bei jedem Mal einen Ordner zum Speichern suchen" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Dateien und Verzeichnisse" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Dateiangebote automatisch annehmen:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Dateien ziehen nach:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Fertige Downloads verschieben nach:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Speichere Nick in Dateinamen" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Netzwerkeinstellungen" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Hole meine IP vom IRC-Server" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Fragt den IRC-Server nach Deiner wahren IP-Adresse. Benutze dies, wenn Du " +"eine 192.168.*.*-Adresse hast!" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "DCC IP-Adresse:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Behaupten, Du seist an dieser Adresse, wenn Du Dateien anbietest." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Erster DCC-Versand-Port:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Letzter DCC-Versand-Port:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "(Belasse die Ports bei 0 für die gesamte Breite." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Maximale Dateitransfergeschwindigkeiten (Bytes/s)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Ein Upload:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Max. Geschw. für einen Transfer" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Ein Download:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Alle Uploads zusammen:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Max. Geschw. für alle Transfers" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Alle Downloads zusammen:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Warnungen" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "Benachrichtigungsbereich-Ballons zeigen:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "Symbol im Benachrichtigungsbereich blinken lassen bei:" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "Taskleiste blinken lassen bei:" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "Piepsen bei:" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "Symbol im Benachrichtigungsbereich aktivieren." + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "Hervorgehobene Nachrichten" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" +"Hervorgehobene Nachrichten sind solche, in denen der eigene Nick fällt, aber " +"auch:" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "Extra Wörter zum Hervorheben:" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "Nicht hervorzuhebende Nicks:" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "Immer hervorzuhebende Nicks:" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Mehrere Wörter durch Kommata trennen." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Standardnachrichten" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Beenden:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Channel verlassen:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Abwesend:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Abwesend" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Abwesenheitsnachrichten öffentlich" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Abwesenheitsnachrichten in allen Channels öffentlich" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Abwesenheit einmal zeigen" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Zeige identische Abwesenheitsnachrichten nur einmal" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Automatisch Abwesenheit beenden" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Automatisch Abwesenheit beenden vor dem Versand von Nachrichten" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Erweiterte Einstellungen" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Wiederverbindungsverzögerung:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Modi in Rohform anzeigen" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "WHOIS bei Notify" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "Sendet ein /WHOIS wenn ein Nutzer aus der Notify-Liste kommt" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Join/Part-Nachrichten verstecken" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Join/Part-Nachrichten standardmäßig verstecken" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "DCC-Fenster automatisch öffnen" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Versandfenster" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Empfangsfenster" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Chatfenster" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Logbücher" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "Konversationen loggen" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Logbuchname:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Server %c=Channel %n=Netzwerk." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Datumsstempel in Logs einfügen" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Datumsstempelformat:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Deaktiviert)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Alle Verbindungen" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "Nur IRC-Server" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "Nur DCC Get" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Deine Adresse" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Binden an:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "Nur für Computer mit mehreren Adressen." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Proxy-Server:" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Hostname:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Port:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Typ:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Proxy benutzen für:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Proxy-Authentifizierung" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "" +"Authentifikation mit dem Proxy-Server (Nur MS Proxy, HTTP oder Socks v5)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Authentifizierung benutzen (Nur HTTP oder Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Benutzer:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Passwort:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Bilddatei auswählen" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "Ordner für heruntergeladene Dateien wählen" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Schriftart auswählen" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Suche..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Identifzierte Benutzer markieren durch:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Nicht identifizierte Benutzer markieren durch:" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "Datenverzeichnis öffnen" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Farbe wählen" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Textfarben" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "mIRC-Farben:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Lokale Farben:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Vordergrund:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Hintergrund:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Markierungstext" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Schnittstellenfarben" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Neue Daten:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Markierungslinie:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Neue Nachricht:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Abwesender Benutzer:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Hervorhebung:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Ereignis" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Klangdatei:" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Wähle eine Klangdatei aus" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Klangabspielmethode:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "Externer Klangspieler:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "_Externes Programm" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_Automatisch" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "Verzeichnis für Klang_dateien:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Klangdatei:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "_Durchsuche" + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "Abs_pielen" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Schnittstelle" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Textfenster" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Benutzerliste" + +#: src/fe-gtk/setup.c:1703 +msgid "Channel switcher" +msgstr "Channel-Umschalter" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Farben" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Chatten" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Allgemein" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Klang" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Netzwerk-Setup" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Dateitransfers" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Kategorien" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" +"Du kannst die Baumansicht nicht oben oder unten anzeigen!\n" +"Wechsle erst im <b>Ansicht</b>-Menü zur <b>Reiter</b>-Ansicht." + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Einige Einstellungen wurden geändert, die einen Neustart erfordern." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*WARNUNG*\n" +"Automatisches Annehmen von DCCs in Dein home-\n" +"Verzeichnis kann gefährlich sein und ist\n" +"ausnutzbar. Zum Beispiel könnte Dir jemand\n" +"ein .bash_profile schicken" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: Einstellungen" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Fehler beim Auswerten des Strings" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Diesem Signal werden nur %d Argumente übergeben, $%d ist ungültig" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Textdatei drucken" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Ereignis ändern" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ Nummer" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Lade von..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Alle testen" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: URL-Sammler" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Liste löschen" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Ausgewählte URL kopieren" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Kopiere" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Liste in Datei speichern" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d Ops, %d Gesamt" + +#~ msgid "" +#~ "Set per channel options\n" +#~ "CHANOPT CONFMODE ON|OFF - Toggle conf mode/showing of join and part " +#~ "messages\n" +#~ "CHANOPT COLORPASTE ON|OFF - Toggle color paste\n" +#~ "CHANOPT BEEP ON|OFF - Toggle beep on message\n" +#~ "CHANOPT TRAY ON|OFF - Toggle tray blink on message" +#~ msgstr "" +#~ "Optionen je Channel einstellen\n" +#~ "CHANOPT CONFMODE ON|OFF - Konferenzmodus/Anzeige von Join/Part-" +#~ "Nachrichten umschalten\n" +#~ "CHANOPT COLORPASTE ON|OFF - Farbiges Einfügen umschalten\n" +#~ "CHANOPT BEEP ON|OFF - Piepton bei Nachricht umschalten\n" +#~ "CHANOPT TRAY ON|OFF - Blinken im Benachrichtigungsbereich umschalten" + +#~ msgid "Direct client-to-client" +#~ msgstr "Direkt Client2Client" + +#~ msgid "Send File" +#~ msgstr "Sende Datei" + +#~ msgid "Offer Chat" +#~ msgstr "Biete Chat an" + +#~ msgid "Abort Chat" +#~ msgstr "Chat abbrechen" + +#~ msgid "Userinfo" +#~ msgstr "Benutzerinformation" + +#~ msgid "Clientinfo" +#~ msgstr "Clientinformation" + +#~ msgid "Time" +#~ msgstr "Zeit" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "Oper" + +#~ msgid "Kill this user" +#~ msgstr "Benutzer killen" + +#~ msgid "Mode" +#~ msgstr "Modus" + +#~ msgid "Give Half-Ops" +#~ msgstr "Half-Op geben" + +#~ msgid "Take Half-Ops" +#~ msgstr "Half-Op nehmen" + +#~ msgid "Ignore" +#~ msgstr "Ignorieren" + +#~ msgid "Ignore User" +#~ msgstr "Ignoriere Benutzer" + +#~ msgid "UnIgnore User" +#~ msgstr "Benutzer nicht mehr ignorieren" + +#~ msgid "Info" +#~ msgstr "Info" + +#~ msgid "Who" +#~ msgstr "Who" + +#~ msgid "DNS Lookup" +#~ msgstr "DNS-Suche" + +#~ msgid "Trace" +#~ msgstr "Verfolgung" + +#~ msgid "UserHost" +#~ msgstr "BenutzerHost" + +#~ msgid "External" +#~ msgstr "Extern" + +#~ msgid "Traceroute" +#~ msgstr "Traceroute (Verfolgung)" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "About XChat" +#~ msgstr "Über XChat" + +#~ msgid "Unban" +#~ msgstr "Bann entfernen" + +#~ msgid "Blink tray on message" +#~ msgstr "Bei Nachricht im Benachrichtigungsbereich blinken" + +#~ msgid "Show join/part messages" +#~ msgstr "Join/Part-Nachrichten anzeigen" + +#~ msgid "Color paste" +#~ msgstr "Farbiges Einfügen" + +#~ msgid "_Close Tab" +#~ msgstr "Reiter s_chließen" + +#~ msgid "Channel List..." +#~ msgstr "Channelliste..." + +#~ msgid "Notify List..." +#~ msgstr "Benachrichtigungs-Liste..." + +#~ msgid "_Close Window" +#~ msgstr "Fenster s_chließen" + +#~ msgid "User" +#~ msgstr "Benutzer" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: Benachrichtigungs-Liste" + +#~ msgid "C_hannels to join:" +#~ msgstr "Zu betretende C_hannels:" + +#~ msgid "Channel Switcher" +#~ msgstr "Channels-Umschalter" diff --git a/etc/wyatt8740/po/el.po b/etc/wyatt8740/po/el.po new file mode 100644 index 0000000..359d3a1 --- /dev/null +++ b/etc/wyatt8740/po/el.po @@ -0,0 +1,5920 @@ +# Greek translations for X-Chat package. +# Copyright (C) Dokianakis Fanis<madf@hellug.gr>, 2000 - 2003. +# Sarantis Paskalis <paskalis@di.uoa.gr> +# Stavros Giannouris <stavrosg2002@freemail.gr>, 2005 - 2007. +# Stathis Kamperis <ekamperi@auth.gr>, 2006 +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.8.0\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2007-02-18 02:22+0200\n" +"Last-Translator: Stavros Giannouris <stavrosg2002@freemail.gr>\n" +"Language-Team: Greek <nls@tux.hellug.gr>\n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: KBabel 1.10.1\n" +"X-Poedit-Language: Greek\n" +"X-Poedit-Country: GREECE\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Δεν ήταν δυνατή η δημιουργία του ~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Είμαι απασχολημένος/η" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Αποχώρησε" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* Το να χρησιμοποιείτε το IRC σαν root είναι ηλίθιο!\n" +" Πρέπει να δημιουργήσετε ένα λογαριασμό απλού χρήστη\n" +" και να χρησιμοποιείτε αυτόν.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Αναμονή" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Ενεργό" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Απέτυχε" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Έγινε" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Σύνδεση" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Ματαιώθηκε" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "Αδυναμία πρόσβασης στο %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Σφάλμα" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "Ο/Η %s σας προσφέρει το \"%s\". Θέλετε να το δεχτείτε;" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Δεν υπάρχουν ενεργά DCC\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "ΝΑΙ " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "ΟΧΙ " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Πλημμυρίζεστε με μηνύματα CTCP από τον %s. Αγνοώ τον %s\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s συνδέθηκε\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s αποσυνδέθηκε\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Δεν έχετε συνδεθεί σε κανάλι. Δοκιμάστε /join #<channel>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Δεν έχετε συνδεθεί. Δοκιμάστε /server <διακομιστής> [<θύρα>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Είστε ήδη απομακρυσμένος/η: %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "Έχετε επιστρέψει ήδη.\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "Το /bin/sh χρειάζεται για την εκτέλεση!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Διαθέσιμες εντολές:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Εντολές ορισμένες από το χρήστη:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Εντολές ορισμένες από πρόσθετο:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "" +"Πληκτρολογείστε /HELP <εντολή> για περισσότερες πληροφορίες, ή /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Η άγνωστη επιλογή '%s' αγνοήθηκε." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "Δε βρέθηκε τέτοιο πρόσθετο.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Αυτό το πρόσθετο αρνείται να αποφορτωθεί.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <όνομα> <δράση>, προσθέτει ένα κουμπί στη λίστα χρηστών" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <εντολή>, στέλνει μια εντολή σε όλα τα κανάλια που βρίσκεστε" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHANL <εντολή>, στέλνει μια εντολή σε όλα τα κανάλια που βρίσκεστε" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <εντολή>, στέλνει μια εντολή στους διακομιστές που βρίσκεστε" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<αιτία>], σας ορίζει ως απών" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "BACK, ορίζει ότι έχετε επιστρέψει (όχι απομακρυσμένος/η)" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <μάσκα> [<τύπος ban>], κάνει ban σε όποιο ταιριάζει στη μάσκα από το " +"τρέχον κανάλι. Εάν είναι ήδη στο κανάλι δεν τους κάνει kick (χρειάζεται " +"chanop)" + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-quiet] <μεταβλητή> [<τιμή>]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "CLEAR [ALL|HISTORY], Καθαρίζει το τρέχον παράθυρο κειμένου" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, Κλείνει το τρέχον παράθυρο/καρτέλα" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY <κωδικός>, βρίσκει τον κωδικό μιας χώρας, πχ: gr = greece" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <nick> <μήνυμα>, στέλνει ένα μήνυμα CTCP στο nick, συνηθέστερα μηνύματα " +"είναι τα VERSION και USERINFO" + +#: src/common/outbound.c:3516 +#, fuzzy +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "CYCLE, αποσυνδέεται από το τρέχον κανάλι και επανασυνδέεται άμεσα" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <nick> - λήψη ενός προσφερθέντος αρχείου\n" +"DCC SEND [-maxcps=#] <nick> [αρχείο] - αποστολή ενός αρχείου σε κάποιον\n" +"DCC PSEND [-maxcps=#] <nick> [αρχείο] - αποστολή ενός αρχείου σε παθητική " +"κατάσταση λειτουργίας\n" +"DCC LIST - εμφάνιση της λίστας DCC\n" +"DCC CHAT <nick> - προσφορά συνομιλίας DCC σε κάποιον\n" +"DCC PCHAT <nick> - προσφορά συνομιλίας DCC σε παθητική " +"κατάσταση λειτουργίας\n" +"DCC CLOSE <τύπος> <nick> <αρχείο> παράδειγμα:\n" +" /dcc close send mixalhs file.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <nick>, αφαίρεση της κατάστασης chanhalf-op από το nick στο τρέχον " +"κανάλι (χρειάζεται chanop)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <όνομα>, διαγραφή ενός κουμπιού κάτω από τη λίστα χρηστών" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <nick>, αφαίρεση της κατάστασης chanop από το nick στο τρέχον κανάλι " +"(χρειάζεται chanop)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <nick>, αφαίρεση της κατάστασης voice από το nick στο τρέχον κανάλι " +"(χρειάζεται chanop)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, Αποσύνδεση από το διακομιστή" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <nick|διακομιστής|ip>, Ανίχνευση του αριθμού IP ενός χρήστη" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <κείμενο>, Τοπική εκτύπωση κειμένου" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <εντολή>, εκτελεί την εντολή. Εάν δοθεί το -o τότε η έξοδος θα " +"σταλθεί στο τρέχον κανάλι, αλλιώς στέλνεται στο τρέχον κουτί κειμένου" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, στέλνει στη διεργασία ένα SIGCONT σήμα" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], σκοτώνει ένα εκτελούμενο exec στη τρέχουσα συνεδρία. Εάν " +"δοθεί το -9 τότε στέλνει στη διεργασία ένα SIGKILL σήμα" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, στέλνει στη διεργασία ένα SIGSTOP σήμα" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, στέλνει δεδομένα στο ρεύμα stdin της διεργασίας" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, καθαρίζει σειρά αποστολής του τρέχοντος διακομιστή" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" +"GATE <διακομιστής> [<port>], θέτει proxy ένα διακομιστή, εξ'ορισμού θύρα 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <ψευδώνυμο> <συνθηματικό>, Αποσυνδέει ένα ψευδώνυμο-φάντασμα" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <nick>, δίνει κατάσταση chanhalf-op στο nick (χρειάζεται chanop)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <κωδικός>, " + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <μάσκα> <τύποι..> <επιλογές..>\n" +" μάσκα - μάσκα διακομιστή για ignore πχ: *!*@*.otenet.gr\n" +" τύποι - τύποι δεδομένων για ignore, ένα από:\n" +" PRIV, CHAN, NOTI, CTCP, INVI, ALL\n" +" επιλογές - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"/INVITE <nick> [<κανάλι>], καλεί κάποιον σε ένα κανάλι, εξ'ορισμού το " +"τρέχον κανάλι (χρειάζεται chanop)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <κανάλι>, συνδέεται στο κανάλι" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "KICK <nick>, διώχνει το nick από τρέχον κανάλι (χρειάζεται chanop)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <nick>, κάνει ban και διώχνει το nick από τρέχον κανάλι (χρειάζεται " +"chanop)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, απαίτηση νέου ελέγχου για lag" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <string>, αναζήτηση ενός string στη προσωρινή μνήμη." + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <αρχείο>, φορτώνει ένα πρόσθετο ή ένα script" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, Μαζικό deop όλων των chanhalf-ops στο τρέχον κανάλι (χρειάζεται " +"chanop)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, Μαζικό deop όλων των chanops στο τρέχον κανάλι (χρειάζεται chanop)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <δράση>, στέλνει τη δράση στο τρέχον κανάλι (οι δράσεις γράφονται στο " +"τρίτο πρόσωπο, πχ. /me kanei mia toumpa)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, Μαζικό kick όλων εκτός από εσένα στο τρέχον κανάλι (χρειάζεται chanop)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, Δίνει μαζικά op σε όλους τους χρήστες στο τρέχον κανάλι (χρειάζεται " +"chanop)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <nick> <μήνυμα>, στέλνει ένα προσωπικό μήνυμα" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, Δείχνει μια λίστα με όλα τα ονόματα στο τρέχον κανάλι" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <nick> <μήνυμα>, Στέλνει μία CTCP αναγγελία" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <διακομιστής> [<θύρα>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <ψευδώνυμο>, θέτει το ψευδώνυμο σας" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <nick/κανάλι> <μήνυμα>, στέλνει μια αναγγελία. Οι αναγγελίες είναι " +"τύποι μηνυμάτων που θα πρέπει να αντιδρά αυτόματα(auto reacted to)" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n δίκτυο1[,δίκτυο2,...]][ <ψευδώνυμο>], δείχνει τη λίστα " +"ειδοποίησης ή προσθέτει κάποιον σε αυτήν" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <nick>, δίνει κατάσταση chanop στο nick, (χρειάζεται chanop)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<κανάλι>] [<αιτία>], φεύγει από το κανάλι, εξ'ορισμού το τρέχον" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <nick | κανάλι>, κάνει ένα CTCP ping στο nick ή το κανάλι" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "QUERY [-nofocus] <nick>, ανοίγει ένα παράθυρο για προσωπική συζήτηση" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<αιτία>], αποσύνδεση από τον τρέχοντα διακομιστή" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <κείμενο>, στέλνει ένα κείμενο σε ωμή μορφή στο διακομιστή" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONΝECT [-ssl] [<διακομιστής>] [<port>] [<password>] , Μπορεί να κληθεί " +"απλά σαν /reconnect για επανασύνδεση στον τρέχοντα διακομιστή ή με /" +"reconnect all για όλους τους ανοικτούς διακομιστές" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONΝECT [<διακομιστής>] [<port>] [<password>], Μπορεί να κληθεί απλά σαν /" +"reconnect για επανασύνδεση στον τρέχοντα διακομιστή ή με /reconnect all για " +"όλους τους ανοικτούς διακομιστές" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <κείμενο>, στέλνει ωμά δεδομένα στο xchat, όπως λαμβάνονται από τον irc " +"server" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <κείμενο>, στέλνει το κείμενο στο αντικείμενο στο παράθυρο" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <ψευδώνυμο> [<αρχείο>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <διακομιστής> <port> <κανάλι>, σύνδεση σε διακομιστή και " +"κανάλι" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN <διακομιστής> <port> <κανάλι>, σύνδεση σε διακομιστή και κανάλι" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <διακομιστής> [<port>] [<password>], σύνδεση σε ένα διακομιστή," +"εξ'ορισμού port το 6667" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <διακομιστής> [<port>] [<password>], σύνδεση σε ένα διακομιστή, " +"εξ'ορισμού port το 6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-quiet] <μεταβλητή> [<τιμή>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<θέση>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<θέμα>], θέτει το θέμα αν δοθεί κάποιο, αλλιώς δείχνει το τρέχον" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" +"\n" +"TRAY -f <χρονικό όριο> <αρχείο1> [<αρχείο2>] Αναβόσβημα με τα 2 εικονίδια.\n" +"TRAY -f <όνομα αρχείου> Ορισμός εικονιδίου συστήματος.\n" +"TRAY -i <αριθμός> Αναβόσβημα με το προεπιλεγμένο\n" +" εικονίδιο.\n" +"TRAY -t <κείμενο> Ορισμός αναδυόμενου κειμένου.\n" +"TRAY -b <τίτλος> <κείμενο> Ορισμός του μπαλονιού." + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <mask> [<mask>...], κάνει unban με τις ορισμένες επιλογές" + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <μάσκα> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <αρχείο>, αποφορτώνει ένα Perl script" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, ανοίγει ένα URL στον περιηγητή σας" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <χρήστης1> <χρήστης2> κλπ, επισημαίνει τον(ους) χρήστη(ες) " +"στη λίστα χρηστών" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <nick>, δίνει κατάσταση voice σε κάποιον (θέλει chanop)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <μήνυμα>, αποστολή του μηνύματος σε όλα τα κανάλια" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <μήνυμα>, αποστολή του μηνύματος σε όλους τους chanops στο τρέχον " +"κανάλι" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Χρήση: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"Δεν υπάρχει διαθέσιμη βοήθεια για αυτή την εντολή.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Δεν υπάρχει τέτοια εντολή.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Κακές επιλογές για την εντολή χρήστη.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Εγκατάλειψη, πάρα πολλές επαναλαμβανόμενες εντολές χρήστη." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Άγνωστη εντολή. Δοκιμάστε /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "" +"Δεν υπάρχει το σύμβολο xchat_plugin_init· σίγουρα είναι πρόσθετο xchat;" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "" +"Είστε σίγουρος/η ότι αυτός ο διακομιστής και η θύρα είναι ικανά για SSL;\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Δεν ήταν δυνατή η εύρεση του ονόματος διακομιστή %s\n" +"Ελέγξτε τις ρυθμίσεις IP σας!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Απέτυχε η διάβαση από το proxy\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Μετάβαση στον επόμενο διακομιστή σε %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Προειδοποίηση: Το σύνολο χαρακτήρων \"%s\" είναι άγνωστο. Δεν θα γίνει καμία " +"μετατροπή για το δίκτυο %s." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 προστέθηκε στη λίστα ειδοποίησης." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Λίστα Ban:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tΔεν ήταν δυνατή η σύνδεση στο%C26 %B$1 %O(Έχετε ban)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 λέγεται τώρα $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 βάζει ban στον/στην $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tΤο κανάλι $1 δημιουργήθηκε την $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O αφαιρεί το voice από%C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 θέτει εξαίρεση στο $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 προσκαλεί τον/την $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UΚανάλι Χρήστες Θέμα" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 ορίζει κατάσταση $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Καταστάσεις καναλιού $1: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 αφαιρεί την εξαίρεση στο $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 αφαιρεί την πρόσκληση από $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 αφαιρεί το συνθηματικό του καναλιού" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 αφαιρεί το όριο χρηστών" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 ορίζει το $2 σαν συνθηματικό καναλιού" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 ορίζει το όριο χρηστών στο κανάλι σε $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 αφαιρεί το ban από $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O δίνει voice στον/στην%C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Αποκαταστάθηκε επαφή. Γίνεται σύνδεση..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22Γίνεται σύνδεση στο $1 ($2) θύρα $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21Η Σύνδεση απέτυχε. Σφάλμα: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tΕλήφθη ένα CTCP $1 από $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tΕλήφθη ένα CTCP $1 από $2 (προς $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tΕλήφθη ένα CTCP Ήχος $1 από $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tΕλήφθη ένα CTCP Ήχος $1 από $2 (προς $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tΗ συνομιλία DCC με τον/την %C26$1%O ακυρώθηκε." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$tαποκαταστάθηκε συνομιλία DCC με%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tΑκυρώθηκε η συνομιλία DCC με %C26$1%O." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tΕλήφθη αίτημα DCC CHAT από $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tΠροσφέρεται DCC CHAT προς $1" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tΠροσφέρεται ήδη CHAT προς $1" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "" +"%C22*%O$tΗ προσπάθεια σύνδεσης DCC $1 στο%C26 $2%O απέτυχε (σφάλμα=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tΠαρελήφθη '$1%O' από τον/την$2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "" +"%C24,18 Τύπος Προς/Από Κατάσταση Μέγεθος Θεσ Αρχείο " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O." +"%010%C22*%O$tContents of packet: $2" +msgstr "" +"%C22*%O$tΛήφθηκε μια εσφαλμένη αίτηση DCC από %C26$1%O." +"%010%C22*%O$tΠεριεχόμενα πακέτου: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tΠροσφέρεται%C26 $1%O στον/στην%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tΔεν υπάρχει τέτοια προσφορά DCC." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV%C26 $2%O προς%C26 $1%O ακυρώθηκε." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tαποκαταστάθηκε σύνδεση DCC RECV με%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV%C26 $1%O από%C26 $3%O απέτυχε ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tΛήψη DCC: Δεν ήταν δυνατό το άνοιγμα του $1 για εγγραφή ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "" +"%C22*%O$tΤο αρχείο%C26 $1%C υπάρχει ήδη, γίνεται αποθήκευση σαν%C26 $2%O." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Oζήτησε να συνεχίσει%C26 $2 %Cαπό%C26 $3%C." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tΑκυρώθηκε το DCC SEND%C26 $2%O με %C26 $1%O." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tαποκαταστάθηκε σύνδεση DCC SEND με%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Oπροσέφερε%C26 $2 %O(%C26$3 %Obytes)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "" + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "" +"%C22*%O$tΤο χρονικό όριο για τη DCC $1%C26 $2 %Oπρος%C26 $3 %Oέληξε - " +"ακύρωση." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 διαγράφτηκε από τη λίστα επισήμανσης." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tΑποσυνδεθήκατε ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tΒρέθηκε η διεύθυνση IP σας: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O προστέθηκε στην λίστα αγνόησης." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "Αγνόηση στο %C26$1%O άλλαξε." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "" + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O αφαιρέθηκε από τη λίστα αγνοημένων." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " Η λίστα αγνοημένων είναι άδεια." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "%C22*%O$tΔεν ήταν δυνατή η σύνδεση στο%C26 %B$1 %O(Μόνο με πρόσκληση)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tΠροσκληθήκατε στο%C26 $1%O από τον/την%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) συνδέθηκε στο $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "" +"%C22*%O$tΔεν ήταν δυνατή η σύνδεση στο%C26 %B$1 %O(Απαιτεί συνθηματικό)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 πέταξε έξω τον/την $2 από το $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$tΣας έκανε kill ο/η $1 ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22Το μήνυμα της ημέρας παραλείφθηκε." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 χρησιμοποιείται ήδη. Προσπάθεια με $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$tΤο ψευδώνυμο χρησιμοποιείται ήδη. Χρησιμοποιήστε την εντολή /NICK " +"για να δοκιμάσετε ένα άλλο." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tΔεν υπάρχει τέτοιο DCC." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tΔεν τρέχει καμία διεργασία" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tΗ λίστα ειδοποίησης είναι άδεια." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Λίστα ειδοποίησης" + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 χρήστες στη λίστα ειδοποίησης." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tΕπισήμανση: ο/η $1 αποσυνδέθηκε ($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tΕπισήμανση: ο/η $1 είναι συνδεδεμένος ($3)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) αποχώρησε από $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) αποχώρησε από $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tΑπάντηση ping από $1: $2 δευτερόλεπτο(α)" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tΔεν υπάρχει απάντηση ping για $1 δευτερόλεπτα, αποσύνδεση." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tΕκτελείται ήδη μια διεργασία" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 αποχώρησε (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tΕύρεση διεύθυνσης IP για %C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22Έγινε σύνδεση." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22Αναζήτηση $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tΣταμάτησε η προηγούμενη προσπάθεια σύνδεσης (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29Το θέμα για το $1%C %C29είναι: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 άλλαξε το θέμα σε: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29Το θέμα για το $1%C %C29ορίστηκε από $2%C %C29στις $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tΆγνωστος διακομιστής. Μήπως το γράψατε λάθος;" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "" +"%C22*%O$tΑδυναμία σύνδεσης στο%C26 %B$1 %O(Έχει εξαντληθεί το όριο χρηστών)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Χρήστες στο $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cαπουσιάζει %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OΤέλος λίστας WHOIS." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O αδρανής%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O αδρανής%C26 $2%O, συνδέθηκε:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" +"%C22*%O$t%C28[%O$1%C28] %Oπραγματικός χρήστης@διακομιστή%C27 $2%O, " +"πραγματική IP%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Μιλάτε στο $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tΑποβληθήκατε από το $2 από τον/την $3 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tΕγκαταλείψατε το κανάλι $3" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tΕγκαταλείψατε το κανάλι $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tΠροσκαλέσατε τον/την %C26 $1%O στο%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tΑπο τώρα ονομάζεστε $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** ΛΗΞΗ ΤΗΣ ΚΑΤΑΓΡΑΦΗΣ ΣΤΙΣ %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** ΕΝΑΡΞΗ ΤΗΣ ΚΑΤΑΓΡΑΦΗΣ ΣΤΙΣ %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Αδυναμία ανοίγματος αρχείου(ων) καταγραφής για εγγραφή.\n" +" Ελέγξτε τα δικαιώματα στο %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Αριστερό μήνυμα" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Δεξί μήνυμα" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "Το ψευδώνυμο του συνδεόμενου ατόμου" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "Το συνδεόμενο κανάλι" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "Ο διακομιστής του ατόμου" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Ψευδώνυμο" + +#: src/common/text.c:973 +msgid "The action" +msgstr "Η δράση" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Χαρακτήρας κατάστασης" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Στοιχισμένο κείμενο" + +#: src/common/text.c:980 +msgid "The text" +msgstr "Το κείμενο" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Το μήνυμα" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Παλιό ψευδώνυμο" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Νέο ψευδώνυμο" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Το ψευδώνυμο του ατόμου που άλλαξε το θέμα" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Θέμα" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Κανάλι" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "Το ψευδώνυμο του ατόμου που έκανε kick" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "Το άτομο που έγινε kick" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "Το κανάλι" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "Η αιτία" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "Το ψευδώνυμο του ατόμου που φεύγει" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "Η ώρα" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "Ο δημιουργός" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Ψευδώνυμο" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Αιτία" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Διακομιστής" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "Από ποιον είναι" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "Η ώρα σε x.x μορφή (δείτε παρακάτω)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "Το κανάλι πρόκειται να" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "Ο ήχος" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "Το ψευδώνυμο του ατόμου" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "Το γεγονός CTCP" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "Το ψευδώνυμο του ατόμου που έθεσε το κλειδί" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "Το κλειδί" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "Το ψευδώνυμο του ατόμου που έθεσε το όριο" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "Το όριο" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "Το ψευδώνυμο του ατόμου που έδωσε το op" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "Το ψευδώνυμο του ατόμου που του δόθηκε op" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "Το ψευδώνυμο του ατόμου που του δόθηκε halfop" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "Το ψευδώνυμο του ατόμου που έδωσε το halfop" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "Το ψευδώνυμο του ατόμου που έδωσε το voice" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "Το ψευδώνυμο του ατόμου που του δόθηκε voice" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "Το ψευδώνυμο του ατόμου που έκανε το ban" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "Η μάσκα του ban" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "Το ψευδώνυμο που αφαίρεσε το κλειδί" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "Το ψευδώνυμο που αφαίρεσε το όριο" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "Το ψευδώνυμο του ατόμου που έκανε το deop" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "Το ψευδώνυμο του ατόμου που του έγινε deop" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "Το ψευδώνυμο του ατόμου που έκανε το dehalfop" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Το ψευδώνυμο του ατόμου που του έγινε dehalfop" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "Το ψευδώνυμο του ατόμου που έκανε το devoice" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "Το ψευδώνυμο του ατόμου που του έγινε devoice" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "Το ψευδώνυμο του ατόμου που έκανε το unban" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "Το ψευδώνυμο του ατόμου που έκανε την εξαίρεση" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "Η μάσκα της εξαίρεσης" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "Το ψευδώνυμο του ατόμου που αφαίρεσε την εξαίρεση" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "Το ψευδώνυμο του ατόμου που έκανε το invite" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "Η μάσκα invite" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "Το ψευδώνυμο του ατόμου που αφαίρεσε το invite" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "Το ψευδώνυμο του ατόμου που θέτει τη κατάσταση" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "Το πρόσημο της κατάστασης (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "Το γράμμα της κατάστασης" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "Το κανάλι στο οποίο ρυθμίστηκε" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Όνομα χρήστη" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Πλήρες όνομα" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Μέλη καναλιού/\"είναι ένας IRC operator\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Πληροφορίες διακομιστή" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Χρόνος αδράνειας" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Ώρα σύνδεσης" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Αιτία απουσίας" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Μήνυμα" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Λογαριασμός" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "Πραγματικά χρήστης@διακομιστής" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "Πραγματική διεύθυνση IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Όνομα καναλιού" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Κείμενο" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Όνομα διακομιστή" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Το ψευδώνυμο του ατόμου που σας προσκάλεσε" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Χρήστες" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Το ψευδώνυμο είναι σε χρήση" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Το ψευδώνυμο δοκιμάζεται" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Θύρα" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Δίκτυο" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "String καταστάσεων" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "Διεύθυνση IP" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "Τύπος DCC" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Όνομα αρχείου" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Όνομα αρχείου προορισμού" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Όνομα διαδρομής" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Θέση" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Μέγεθος" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "Αναγνωριστικό DCC" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Αριθμός ειδοποιούμενων αντικειμένων" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Παλιό όνομα αρχείου" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Νέο όνομα αρχείου" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Παραλήπτης" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Μάσκα διακομιστή" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Όνομα διακομιστή" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "Το πακέτο" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Δευτερόλεπτα" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Το ψευδώνυμο του ατόμου που έχει προσκληθεί" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Μάσκα ban" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Ποιος έθεσε το ban" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Ώρα ban" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Σφάλμα κατά την ανάλυση του γεγονότος %s.\n" +"Φόρτωμα προκαθορισμένου." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"Αδυναμία ανάγνωσης του αρχείου ήχου:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "Ο απομακρυσμένος διακομιστής έκλεισε το socket" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Άρνηση σύνδεσης" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Δεν υπάρχει διαδρομή προς το διακομιστή" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Λήξη χρόνου σύνδεσης" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Αδυναμία παραχώρησης αυτής της διεύθυνσης" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Κλείσιμο της σύνδεσης από το ταίρι" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Ascension Island" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Ανδόρα" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Ηνωμένα Αραβικά Εμιράτα" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Αφγανιστάν" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Αντίγκουα και Μπαρμπούντα" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Αγκίλα" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Αλβανία" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Αρμενία" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Ολλανδικές Αντίλλες" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Αγκόλα" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Ανταρκτική" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Αργεντινή" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "Αντίστροφο DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Αμερικάνικη Σαμόα" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Αυστρία" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "Πεδίο ΝΑΤΟ" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Αυστραλία" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Αρούμπα" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Νησιά Αλαντ" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Αζερμπαιζάν" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Βοσνία και Ερζεγοβίνη" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Νησιά Μπαρμπάντος" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Μπαγκλαντές" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Βέλγιο" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Μπουρκίνα Φάσο" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Βουλγαρία" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Μπαχραίν" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Μπουρουντί" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Επιχειρήσεις" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Μπενίν" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Νησιά Βερμούδων" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Μπρούνει Νταρουσαλλέμ" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Βολιβία" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Βραζιλία" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Νησιά Μπαχάμες" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Μουτάν" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Νησί Μουβέτ" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Μποτσουάνα" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Λευκορωσία" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Μπελίζ" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Καναδάς" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Νησιά Κοκος" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "Λαϊκή Δημοκρατία του Κονγκό" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "Δημοκρατία της Κεντρικής Αφρικής" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Κονγκο" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Ελβετία" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Ακτή Ελεφαντοστού" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Νησιά Κουκ" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Χιλή" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Καμερούν" + +#: src/common/util.c:898 +msgid "China" +msgstr "Λαϊκή Δημοκρατία της Κίνας" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Κολομβία" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Εμπορικό Internic" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Κόστα Ρίκα" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Σερβία και Μαυροβούνιο" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Κούβα" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Ακρωτήριο Verde" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Νησί των Χριστουγέννων" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Κύπρος" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "Τσέχικη Δημοκρατία" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Γερμανία" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Τζιμπουτί" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Δανία" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Δομινικη" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "Δομινικανή Δημοκρατία" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Αλγερία" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Ισημερινός" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Εκπαιδευτικό Ίδρυμα (ΗΠΑ)" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Εσθονία" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Αίγυπτος" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Δυτική Σαχάρα" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Ερυθρέα" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Ισπανία" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Αιθιοπία" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Ευρωπαϊκή Ένωση" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Φινλανδία" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Νησιά Φίτζι" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Νησιά Φώκλαντ" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Μικρονησία" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Νησιά Φαρόε" + +#: src/common/util.c:928 +msgid "France" +msgstr "Γαλλία" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Γκαμπόν" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Μεγάλη Βρετανία" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Γρανάδα" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Γεωργία" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Γαλλική Γουινέα" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Βρετανικοί Νήσοι Καναλιού" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Γκάνα" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Γιβλαρτάρ" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Γροιλανδία" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Γκάμπια" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Γουινέα" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Κυβέρνηση (ΗΠΑ)" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Γουαδελούπη" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Ισημερινή Γουινέα" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Ελλάδα" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "S. Georgia and S. Sandwich Isles." + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Γουατεμάλα" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Γκουάμ" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Γουινέα" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Γουιάνα" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Χονγκ Κονγκ" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Νησιά Χερντ και ΜακΝτόναλντ" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Ονδούρας" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Κροατία" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Αϊτή" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Ουγγαρία" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Ινδονησία" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Ιρλανδία" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Ισραήλ" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Isle of Man" + +#: src/common/util.c:959 +msgid "India" +msgstr "Ινδία" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Πληροφοριακό" + +#: src/common/util.c:961 +msgid "International" +msgstr "Διεθνές" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Βρετανική Περιοχή Δυτικού Ωκεανού" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Ιράκ" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Ιράν" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Ισλανδία" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Ιταλία" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Τζέρσεϋ" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Τζαμάικα" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Ιορδανία" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Ιαπωνία" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Κένυα" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Κουρτζεκισταν" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Καμπότζη" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Κιριμπάτι" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Κομόρες" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "St. Kitts and Nevis" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Βόρεια Κορέα" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Νότια Κορέα" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Κουβέιτ" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Νησιά Κέυμαν" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Καζακστάν" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Λάος" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Λίβανο" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Άγιος Λουκάς" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Λιχτενστάιν" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Σρι Λάνκα" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Λιβερία" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Λεσότο" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Λιθουανία" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Λουξεμβούργο" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Λεττονία" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Λιβύη" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Μαρόκο" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Μονακό" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Μολδαβία" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "Ιατρικό (ΗΠΑ)" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Μαδαγασκάρη" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Νησιά Μάρσαλ" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Στρατιωτικό (ΗΠΑ)" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "ΠΓΔΜ" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Μαλί" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Μιαμάρ" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Μογγολία" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Μακάο" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Νήσοι Βόρειας Μαριάνας" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Μαρτινίκα" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Μαυριτανία" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Μονσεράτ" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Μάλτα" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Μαυριτία" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Μαλβίδες" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Μαλάουι" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Μεξικό" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Μαλαισία" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Μοζαμβίκη" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Ναμίμπια" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Νέα Καληδονία" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Νίγηρας" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Δίκτυο Internic" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Νήσοι Νόρφολκ" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Νιγηρία" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Νικαράγουα" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Ολλανδία" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Νορβηγία" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Νεπάλ" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Ναούρου" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Νιούε" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Νέα Ζηλανδία" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Ομάν" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Μη Κερδοσκοπικός Οργανισμός Internic" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Παναμάς" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Περού" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Γαλλική Πολυνησία" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Παπούα Νέα Γουινέα" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Φιλιππίνες" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Πακιστάν" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Πολωνία" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "Αγ. Πιερ και Μικελλόν" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Πιτκάιρν" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Πουέρτο Ρίκο" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Παλαιστινιακά Εδάφη" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Πορτογαλία" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Παλάο" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Παραγουάη" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Κατάρ" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Επανένωση" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Ρουμανία" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "ARPAnet παλιάς σχολής" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Ρωσική Ομοσπονδία" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Ρουάντα" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Σαουδική Αραβία" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Νησιά Σολομώντα" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Σευχέλλες" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Σουδάν" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Σουηδία" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Σιγκαπούρη" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "Αγία Ελένη" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Σλοβενία" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Νήσοι Svalbard και Jan Mayen" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Δημοκρατία της Σλοβακίας" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Σιέρα Λεόνε" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "Σαν Μαρίνο" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Σενεγάλη" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Σομαλία" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Σουρινάμ" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "Sao Tome και Principe" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Πρώην ΕΣΣΔ" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "Ελ Σαλβαδόρ" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Συρία" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Σουαζιλάνδη" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Νήσοι Turks και Caicos" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Τσαντ" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Γαλλικές Νότιες Περιοχές" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Τόγκο" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Ταΐλάνδη" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Τατζικιστάν" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Τοκελάου" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Ανατολικό Τιμούρ" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Τουρκμενιστάν" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Τυνησία" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Τόνγκα" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Τουρκία" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Τρινιδάδ και Τομπάγκο" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Τουβάλου" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Ταϊβάν" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Τανζανία" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Ουκρανία" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Ουγκάντα" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Ηνωμένο Βασίλειο" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "Ηνωμένες Πολιτείες της Αμερικής" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Ουρουγουάη" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Ουζμπεκιστάν" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Πόλη του Βατικανού" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "Άγιος Βικέντιος και Γρεναδίνη" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Βενεζουέλα" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Βρετανικοί Παρθένοι Νήσοι" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "Αμερικάνικοι Παρθένοι Νήσοι" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Βιετνάμ" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Βανουάτου" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Νήσοι Wallis και Futuna" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Σαμόα" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Υεμένη" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Μα-γιοτ" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Γιουγκοσλαβία" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Νότιος Αφρική" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Ζάμπια" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Ζιμπάμπουε" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Άγνωστο" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "Άνοιγμα παραθύρου διαλόγου" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "Αποστολή αρχείου" + +#: src/common/xchat.c:728 +#, fuzzy +msgid "_User Info (WhoIs)" +msgstr "Πληροφορίες χρήστη (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +#, fuzzy +msgid "O_perator Actions" +msgstr "Ενέργειες Operator" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Απόδοση Chanops" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Αφαίρεση Chanops" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Απόδοση Voice" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Αφαίρεση Voice" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Kick/Ban" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Kick" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Ban" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "KickBan" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Εγκατάλειψη καναλιού" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Σύνδεση στο κανάλι...." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Εισάγετε το κανάλι προς σύνδεση:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Συνδέσεις διακομιστών" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Ping στο διακομιστή" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Απόκρυψη έκδοσης" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Op" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "αντίο" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Εισάγετε αιτία για το kick του %s:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Αποστολή" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Διάλογος" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "ΠοιοςΕίναι" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Αποστολή" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Διάλογος" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Καθαρισμός" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "Δεν ήταν δυνατή η σύνδεση στο δίαυλο μηνυμάτων" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "Η ολοκλήρωση της εντολής NameHasOwner απέτυχε" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "Η εκτέλεση της εντολής απέτυχε" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "απομακρυσμένη πρόσβαση" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "πρόσθετο για απομακρυσμένη πρόσβαση μέσω DBUS" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Δεν ήταν δυνατή η σύνδεση στο δίαυλο μηνυμάτων: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Η λήψη του %s απέτυχε: %s\n" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "_Περί" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Πελάτης IRC πολλαπλών πλατφόρμων" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Χάρτης χαρακτήρων" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "Δεν υπάρχει σύνδεση." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Πρέπει να επιλέξετε μερικά ban." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "Θέλετε σίγουρα να αφαιρέσετε όλα τα bans στο %s;" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Μάσκα" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "Από" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Ημερομηνία" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Μπορείτε να ανοίξετε τη λίστα ban μόνο μέσα από μια καρτέλα καναλιού." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: Λίστα Ban (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Αφαίρεση" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Απομάκρυνση υπολοίπων" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Ανανέωση" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "%d/%d χρήστες σε %d/%d κανάλια." + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Επιλέξτε όνομα αρχείου" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "_Σύνδεση σε κανάλι" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "_Αντιγραφή ονόματος καναλιού" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "Αν_τιγραφή κειμένου θέματος" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: Λίστα καναλιών (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "_Αναζήτηση" + +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "_Λήψεις αρχείων" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "Αποθήκευση _λίστας..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "Να εμφανιστεί μόνο:" + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "κανάλια με" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "σε" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "χρήστες:" + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "Αναζήτηση σε:" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "Όνομα καναλιού" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "Τύπος αναζήτησης:" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "Απλή αναζήτηση" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "Ταίριασμα μοτίβου (χαρακτήρες μπαλαντέρ)" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "Κανονική έκφραση" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Εύρεση:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Αποστολή αρχείου στο %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Αυτό το αρχείο δεν μπορεί να συνεχιστεί." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"Αδύνατη η πρόσβαση στο αρχείο: %s\n" +"%s.\n" +"Η συνέχιση είναι αδύνατη." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"Το αρχείο στον κατάλογο ληφθέντων αρχείων είναι μεγαλύτερο από αυτό που " +"προσφέρεται. Η συνέχιση είναι αδύνατη." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "Η συνέχιση λήψης του ίδιου αρχείου από δυο ανθρώπους είναι αδύνατη." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: Λήψεις και αποστολές αρχείων" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Κατάσταση" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Αρχείο" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "Απομένει" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Και τα δύο" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Αποστολές" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "Λήψεις αρχείων" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Λεπτομέρειες" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Αρχείο:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "Διεύθυνση:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Ακύρωση" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Αποδοχή" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Συνέχιση" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Άνοιγμα Φακέλου..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: Λίστα συνομιλίας DCC" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Έλαβ" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Στάλθ" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "Ώρα έναρξης" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*ΝΕΟ*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "ΔΙΟΡΘΩΣΕ ΜΕ" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Όνομα" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Εντολή" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Προς πάνω" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Προς κάτω" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Άκυρο" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Αποθήκευση" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Προσθήκη νέου" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Διαγραφή" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Ταξινόμηση" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Βοήθεια" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "Όχι αυτόματη σύνδεση στους διακομιστές" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "Χρήση διαφορετικού καταλόγου ρυθμίσεων" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "Όχι αυτόματο φόρτωμα προσθέτων" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "Προβολή καταλόγου αρθρωμάτων αυτόματου φορτώματος" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "Εμφάνιση καταλόγου ρυθμίσεων χρήστη" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Άνοιγμα ενός URL τύπου irc://server:port/channel" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Εκτέλεση εντολής:" + +#: src/fe-gtk/fe-gtk.c:132 +#, fuzzy +msgid "Open URL or execute command in an existing XChat" +msgstr "Άνοιγμα του URL σε ένα υπάρχον XChat" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +#, fuzzy +msgid "level" +msgstr "Ποτέ" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Προβολή πληροφοριών έκδοσης" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"Αδυναμία ανοίγματος γραμματοσειράς:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "Η μνήμη εύρεσης είναι άδεια.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d bytes" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Ουρά αποστολής: %d bytes" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"Η πράξη Εκτέλεση Εντολής εκτελεί τα δεδομένα στο Data 1 σαν να είχαν δοθεί " +"στο κουτί εισαγωγής όπου πατήθηκε η ακολουθία των πλήκτρων. Έτσι μπορεί να " +"περιέχει κείμενο (που θα σταλθεί στο κανάλι/άτομο), εντολές ή εντολές " +"χρήστη. Κατά την εκτέλεση όλοι οι \\n χαρακτήρες στο Data 1 οριοθετούν " +"ξεχωριστές εντολές, ώστε να είναι δυνατή η εκτέλεση πάνω από μίας εντολής. " +"Εάν θέλετε το \\ στο κείμενο, εκτελέστε και μετά πατήστε \\\\" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"Η εντολή Αλλαγή Καρτέλας εναλλάσσει μεταξύ καρτελών στο πρόχειρο. Θέστε Data " +"1 στη καρτέλα που θέλετε να μεταβείτε. Εάν Data 2 είναι καθορισμένο σε κάτι " +"τότε η αλλαγή θα είναι σχετική με τη τρέχουσα Θέση" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"Η εντολή Εισαγωγή στη Προσωρινή Μνήμη θα εισάγει τα περιεχόμενα του Data 1 " +"στην εγγραφή όπου η ακολουθία πλήκτρων πατήθηκε στη τρέχουσα θέση του κέρσορα" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"Η εντολή Μετακίνηση Καρτέλας μετακινεί το παράθυρο κειμένου πάνω ή κάτω. " +"κατά μία καρτέλα ή μια γραμμή. Ορίστε το Data 1 σε Up, Down, +1 ή -1." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"Η εντολή Καθορισμός Προσωρινής Μνήμης θέτει την εγγραφή όπου η ακολουθία " +"πλήκτρων πατήθηκε στα περιεχόμενα του Data 1" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"Η εντολή Περασμένη Εντολή θέτει την εγγραφή να περιέχει την τελευταία εντολή " +"που εισήχθηκε - όμοιο σαν το πάνω βέλος στο κέλυφος" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"Η εντολή Επόμενη Εντολή θέτει την εγγραφή να περιέχει την επόμενη εντολή που " +"εισήχθηκε - όμοιο σαν το κάτω βέλος στο κέλυφος" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Αυτή η εντολή αλλάζει το κείμενο της εγγραφής να συμπληρώνει ένα μη πλήρες " +"ψευδώνυμο ή εντολή. Αν το Data 1 είναι καθορισμένο τότε το διπλό-tab σε ένα " +"κορδόνι (string) θα επιλέξει το τελευταίο nick και όχι το επόμενο" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Αυτή η εντολή μετακινεί πάνω και κάτω μέσα στη λίστα των ψευδωνύμων. Αν το " +"Data 1 είναι καθορισμένο τότε μετακινεί πάνω αλλιώς κάτω" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Αυτή η εντολή ελέγχει εάν υπάρχει η τελευταία λέξη που γράφτηκε στη λίστα " +"αντικαταστάσεων και την αντικαθιστά εάν βρει ταίρι" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Αυτή η εντολή μετακινεί την επιλεγμένη καρτέλα μια θέση αριστερά" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Αυτή η εντολή μετακινεί την επιλεγμένη καρτέλα μια θέση δεξιά" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Αυτή η εντολή μετακινεί την τρέχουσα ομάδα καρτελών στα αριστερά" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Αυτή η εντολή μετακινεί την τρέχουσα ομάδα καρτελών στα δεξιά" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "" +"Προώθηση της γραμμής εισαγωγής στο ιστορικό αλλά όχι αποστολή στο διακομιστή" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "Σφάλμα κατά το φόρτωμα των ρυθμίσεων των πλήκτρων συντόμευσης" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<κανένα>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Mod" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Πλήκτρο" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Δράση" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: Συντομεύσεις πληκτρολογίου" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Δεδομένα 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Δεδομένα 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Σφάλμα κατά το άνοιγμα του αρχείου ρυθμίσεων των πλήκτρων\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Άγνωστο όνομα πλήκτρου %s στο αρχείο ρυθμίσεων των συντομεύσεων " +"πληκτρολογίου\n" +"Ακυρώθηκε το φόρτωμα, παρακαλώ διορθώστε το %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Άγνωστη δράση %s στο αρχείο ρυθμίσεων των συντομεύσεων πληκτρολογίου\n" +"Ακυρώθηκε το φόρτωμα, παρακαλώ διορθώστε το %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Αναμενόταν γραμμή Data (αρχίζει με Dx{:|!}) αλλά βρέθηκε:\n" +"%s\n" +"\n" +"Το φόρτωμα ακυρώθηκε. Παρακαλώ διορθώστε το %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"Το αρχείο συντομεύσεων πληκτρολογίου είναι κατεστραμμένο, και δεν φορτώθηκε\n" +"Παρακαλώ διορθώστε το %s/keybindings.conf\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "Δεν ήταν δυνατή η εγγραφή σε αυτό το αρχείο." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Δεν ήταν δυνατή η ανάγνωση αυτού του αρχείου." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Αυτή η μάσκα υπάρχει ήδη" + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Προσωπικό" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Ειδοποίηση" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Πρόσκληση" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Αποαγνόηση" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Εισάγετε μάσκα προς αγνόηση:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: Λίστα αγνοημένων" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Στατιστικά αγνοημένων:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Κανάλι:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Προσωπικό:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Ειδοποίηση:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Πρόσκληση:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "Προσθήκη..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "Το όνομα του καναλιού είναι πολύ μικρό, προσπαθήσετε ξανά." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: Η σύνδεση ολοκληρώθηκε" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "Η σύνδεση στο %s ολοκληρώθηκε" + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "Δεν έχει οριστεί κανένα κανάλι για αυτόματη σύνδεση σε αυτό το δίκτυο." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "Τι θέλετε να κάνετε τώρα;" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "_Τίποτα, θα συνδεθώ σε ένα κανάλι αργότερα." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "_Σύνδεση στο κανάλι:" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" +"Εάν γνωρίζετε το όνομα του καναλιού που θέλετε να συνδεθείτε, εισάγετε το " +"εδώ." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "Ά_νοιγμα λίστας καναλιών." + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "Η λήψη της λίστας καναλιών μπορεί να πάρει ένα δυο λεπτά." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "_Να εμφανίζεται πάντα αυτό το πλαίσιο διαλόγου μετά τη σύνδεση." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Διάλογος με" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Το θέμα για το %s είναι: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Δεν έχει οριστεί θέμα" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"Αυτός ο διακομιστής έχει ακόμα %d κανάλια ή συνομιλίες ανοιχτά. Να κλείσουν " +"όλα;" + +#: src/fe-gtk/maingui.c:1283 +#, fuzzy +msgid "Quit XChat?" +msgstr "Περί XChat" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1310 +#, fuzzy, c-format +msgid "You are connected to %i IRC networks." +msgstr "" +"Είστε συνδεδεμένοι σε <b>%u</b> δίκτυα IRC.\n" +"Θέλετε σίγουρα να κλείσετε το xchat;" + +#: src/fe-gtk/maingui.c:1312 +#, fuzzy +msgid "Are you sure you want to quit?" +msgstr "Θέλετε σίγουρα να αφαιρέσετε όλα τα bans στο %s;" + +#: src/fe-gtk/maingui.c:1314 +#, fuzzy +msgid "Some file transfers are still active." +msgstr "Υπάρχουν ενεργές μεταφορές αρχείων, επιβεβαίωση εγκατάλειψης;" + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Εισαγωγή ιδιότητας ή χρωματικού κώδικα" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Έντονα</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Υπογραμμισμένο</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Κανονικό" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Χρώματα 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Χρώματα 8-15" + +#: src/fe-gtk/maingui.c:1612 +#, fuzzy +msgid "_Settings" +msgstr "Ρυθμίσ_εις" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "Απόκρυψη μηνυμάτων εισόδου/εξόδου" + +#: src/fe-gtk/maingui.c:1625 +#, fuzzy +msgid "_Extra Alerts" +msgstr "Συναγερμοί" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "Μπιπ σε μήνυμα" + +#: src/fe-gtk/maingui.c:1628 +#, fuzzy +msgid "Blink Tray _Icon" +msgstr "Εναλλαγή εικονιδίου σε μήνυμα" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +#, fuzzy +msgid "_Detach" +msgstr "_Απόσπαση καρτέλας" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "_Κλείσιμο" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "Το όριο χρηστών πρέπει να είναι αριθμός!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Προστασία θέματος" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Όχι εξωτερικά μηνύματα" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Μυστικό" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Μόνο επί πρόσκληση" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Ελεγχόμενο" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Λίστα Ban" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Λέξη κλειδί" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Όριο χρηστών" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Εμφάνιση/Απόκρυψη λίστας χρηστών" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"Αδύνατη η χρήση διαφανούς παρασκηνίου!\n" +"\n" +"Πιθανόν να χρησιμοποιείτε έναν μη-σύμμορφο διαχειριστή\n" +"παραθύρων που δεν υποστηρίζεται προς το παρόν.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Εισάγετε νέο ψευδώνυμο:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Άγνωστος διακομιστής" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Αληθινό όνομα:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Χρήστης:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "Χώρα:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Διακομιστής:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "πριν από %u λεπτά" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Τελευταίο μήνυμα:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Μήνυμα απουσίας:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"Τα μενού είναι κρυμμένα. Μπορείτε να τα εμφανίσετε ξανά πατώντας το F9 ή με " +"δεξί κλικ σε ένα άδειο σημείο στο κυρίως παράθυρο." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Άνοιγμα συνδέσμου στον περιηγητή" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Αντιγραφή επιλεγμένου συνδέσμου" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Σύνδεση στο κανάλι" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Εγκατάλειψη καναλιού" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Επανασύνδεση στο κανάλι" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: Μενού χρήστη" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Επεξεργασία αυτού του μενού..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Λίστα καναλιών..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Εντολές χρήστη - Ειδικοί κώδικες:\n" +"\n" +"%c = τρέχον κανάλι\n" +"%e = όνομα τρέχοντος δικτύου\n" +"%m = πληροφορίες συστήματος\n" +"%n = το ψευδώνυμο σας\n" +"%t = ώρα/ημερομηνία\n" +"%v = έκδοση xchat\n" +"%2 = λέξη 2\n" +"%3 = λέξη 3\n" +"&2 = λέξη 2 μέχρι το τέλος της γραμμής\n" +"&3 = λέξη 3 μέχρι το τέλος της γραμμής\n" +"\n" +"πχ:\n" +"/cmd john γειά\n" +"\n" +"%2 θα είναι \"john\"\n" +"&2 θα είναι \"john γειά\"." + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Κουμπιά λίστας χρηστών - Ειδικοί κώδικες:\n" +"\n" +"%a = όλα τα επιλεγμένα ψευδώνυμα\n" +"%c = τρέχον κανάλι\n" +"%e = όνομα τρέχοντος δικτύου\n" +"%h = διακομιστής επιλεγμένου ψευδώνυμου\n" +"%m = πληροφορίες συστήματος\n" +"%n = το ψευδώνυμο σας\n" +"%s = επιλεγμένο ψευδώνυμο\n" +"%t = ώρα/ημερομηνία\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Κουμπιά διαλόγου - Ειδικοί κώδικες:\n" +"\n" +"%a = όλα τα επιλεγμένα ψευδώνυμα\n" +"%c = τρέχον κανάλι\n" +"%e = όνομα τρέχοντος δικτύου\n" +"%h = διακομιστής επιλεγμένου ψευδώνυμου\n" +"%m = πληροφορίες συστήματος\n" +"%n = το ψευδώνυμο σας\n" +"%s = επιλεγμένο ψευδώνυμο\n" +"%t = ώρα/ημερομηνία\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"Απαντήσεις CTCP - Ειδικοί κώδικες:\n" +"\n" +"%d = δεδομένα (ολόκληρο το ctcp)\n" +"%e = όνομα τρέχοντος δικτύου\n" +"%m = πληροφορίες συστήματος\n" +"%s = ψευδώνυμο αυτού που έστειλε το ctcp\n" +"%t = ώρα/ημερομηνία\n" +"%2 = λέξη 2\n" +"%3 = λέξη 3\n" +"&2 = λέξη 2 μέχρι το τέλος της γραμμής\n" +"&3 = λέξη 3 μέχρι το τέλος της γραμμής\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"Χειριστές διευθύνσεων - Ειδικοί κώδικες:\n" +"\n" +"%s = το URL\n" +"\n" +"Ένα ! μπροστά από την εντολή δείχνει\n" +"δείχνει ότι πρέπει να σταλθεί στο\n" +"κέλυφος αντί στο XChat" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: Εντολές καθορισμένες από το χρήστη" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: Αναδυόμενο μενού λίστας χρηστών" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Αντικατάσταση με" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: Αντικατάσταση" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: Χειριστές διευθύνσεων" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: Κουμπιά λίστας χρηστών" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: Κουμπιά διαλόγου" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: Απαντήσεις CTCP" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "Λί_στα δικτύων" + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "_Νέο" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Καρτέλα διακομιστή..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Καρτέλα καναλιού..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Παράθυρο διακομιστή..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Παράθυρο καναλιού..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "_Φόρτωση πρόσθετου ή δέσμης ενεργειών..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "_Έξοδος" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "_Προβολή" + +#: src/fe-gtk/menu.c:1591 +#, fuzzy +msgid "_Menu Bar" +msgstr "_Μπάρα μενού" + +#: src/fe-gtk/menu.c:1592 +#, fuzzy +msgid "_Topic Bar" +msgstr "Μπάρα _θέματος" + +#: src/fe-gtk/menu.c:1593 +#, fuzzy +msgid "_User List" +msgstr "Λίστα χρηστών" + +#: src/fe-gtk/menu.c:1594 +#, fuzzy +msgid "U_serlist Buttons" +msgstr "Κουμπιά λίστας _χρηστών..." + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "Κουμπιά _λειτουργιών " + +#: src/fe-gtk/menu.c:1597 +#, fuzzy +msgid "_Channel Switcher" +msgstr "κανάλια με" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "_Καρτέλες" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "Δεντ_ροδιάταξη" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "Μ_ετρητές δικτύου" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Κλειστό" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Γράφημα" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "Διακομι_στής" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "_Αποσύνδεση" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "_Επανασύνδεση" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "Σύνδεση στο κανάλι...." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "Σύνδεση στο κανάλι...." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Σημείωση απουσίας" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "Μενού _χρήστη" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "Ρυθμίσ_εις" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "Προτιμήσεις" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Για προχωρημένους" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Αυτόματη αντικατάσταση..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "Απαντήσεις CTCP..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Κουμπιά διαλόγου..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Συντομεύσεις πληκτρολογίου..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Γεγονότα κειμένου..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "Χειριστές διευθύνσεων..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Εντολές χρήστη..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Κουμπιά λίστας χρηστών..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Μενού λίστας χρηστών..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_Παράθυρα" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Λίστα Ban..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Χάρτης χαρακτήρων..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Άμεση συνομιλία..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Μεταφορές αρχείων..." + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "Λίστα Ban..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Λίστα αγνοημένων..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Πρόσθετα και δέσμες ενεργειών..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Ωμή καταγραφή..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "Καταγραφέας URL..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Επαναφορά διαχωριστικής γραμμής" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "Καθα_ρισμός κειμένου" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Εύρεση κειμένου..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Αποθήκευση κειμένου..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_Βοήθεια" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "Περι_εχόμενα" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "_Περί" + +#: src/fe-gtk/menu.c:2147 +#, fuzzy +msgid "_Attach" +msgstr "_Σύνδεση παραθύρου" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Τελευταία εμφάνιση" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Αποσυνδεδεμένος" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Ποτέ" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "πριν από %d λεπτά" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Συνδεδεμένος" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Εισάγετε ψευδώνυμο για προσθήκη:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "Ειδοποίηση σε αυτά τα δίκτυα:" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "Είναι αποδεκτή μια λίστα δικτύων χωρισμένη με κόμματα." + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "XChat: Λίστα αποστολής αρχείων" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "Άνοιγμα διαλόγου" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "XChat: Συνδεδεμένο σε %u δίκτυα και %u κανάλια" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "_Επαναφορά" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "Απόκρυψ_η" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "Μήνυμα σε κανάλι" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "Προσωπικό μήνυμα" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "Επισημασμένο μήνυμα" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "Απουσία" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, fuzzy, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat: Επισημασμένο μήνυμα από: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat: %u επισημασμένα μηνύματα, τελευταίο από: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat: Νέο δημόσιο μήνυμα από: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat: %u νέα δημόσια μηνύματα." + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat: Προσωπικό μήνυμα από: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "XChat: %u προσωπικά μηνύματα, το τελευταίο από: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat: Προσφορά αρχείου από: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "XChat:%u προσφορές αρχείων, τελευταία από: %s (%s)" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Έκδοση" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Περιγραφή" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Επιλογή ενός πρόσθετου ή δέσμης ενεργειών για φόρτωμα" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: Πρόσθετα και δέσμες ενεργειών" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "_Άνοιγμα..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "Α_ποφόρτωση" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Αποθήκευση ως..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: Ωμή καταγραφή (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Καθαρισμός ωμής καταγραφής" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "Το παράθυρο για το οποίο ανοίξατε αυτή την Αναζήτηση δεν υπάρχει πια." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "Η αναζήτηση έφτασε στο τέλος." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: Αναζήτηση" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "_Διάκριση πεζών από κεφαλαία" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "Αναζήτηση πρός τα _πίσω" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "_Εύρεση" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Νέο δίκτυο" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Επιβεβαίωση διαγραφής του δικτύου \"%s\" και των διακομιστών του;" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "Κανάλι" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: Λίστα καναλιών (%s)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "Συνθηματικό διακομιστή:" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "_Επεξεργασία" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "Το όνομα χρήστη και το πραγματικό όνομα δεν πρέπει να είναι κενά." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: Επεξεργασία %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Διακομιστές για %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Σύνδεση μόνο στον επιλεγμένο διακομιστή" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Όχι προσπάθεια σε όλους τους διακομιστές όταν αποτύχει η σύνδεση." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Οι λεπτομέρειες σας" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Χρήση γενικών πληροφοριών χρήστη" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "Ψευδώ_νυμο:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Δεύτερη επιλογή:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "Όν_ομα χρήστη:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "Πρ_αγματικό όνομα:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Γίνεται σύνδεση" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Αυτόματη σύνδεση κατά την εκκίνηση" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "Χρήση διακομιστή proxy" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "Χρήση SSL για όλους τους διακομιστές σε αυτό το δίκτυο" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Αποδοχή μη έγκυρων πιστοποιητικών SSL" + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "Εγκατάλειψη καναλιού:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "Κανάλια για σύνδεση, χωρισμένα με κόμμα και όχι κενό!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Εντολή σύνδεσης:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Επί πλέον εντολή που θα εκτελεστεί μετά τη σύνδεση. Εάν χρειάζεστε " +"περισσότερες από μια, ορίστε το σε LOAD -e <αρχείο>, όπου <αρχείο> ένα " +"αρχείο κειμένου που θα περιέχει τις εντολές που πρέπει να εκτελεστούν." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Συνθηματικό Nickserv:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Εάν το ψευδώνυμο σας απαιτεί συνθηματικό, εισάγετε το εδώ. Δεν υποστηρίζεται " +"από όλα τα δίκτυα IRC." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Συνθηματικό διακομιστή:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Συνθηματικό διακομιστή, αφήστε κενό αν δεν είστε σίγουροι." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Σετ χαρακτήρων:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: Λίστα δικτύων" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Πληροφορίες χρήστη" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Τρίτη επιλογή:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Δίκτυα" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "Να μην εμφανίζεται η λίστα δικτύων στην εκκίνηση" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "_Επεξεργασία..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "Ταξινόμη_ση" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" +"Ταξινομεί τη λίστα δικτύων κατά αλφαβητική σειρά. Χρησιμοποιήστε τα SHIFT-" +"ΠΑΝΩ και SHIFT-ΚΑΤΩ για να μετακινηθείτε στις γραμμές." + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "Σύν_δεση" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Εμφάνιση πλαισίου κειμένου" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Γραμματοσειρά:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Εικόνα παρασκηνίου:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Συγκράτηση γραμμών:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Χρωματισμένα ψευδώνυμα" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Δίνει στο ψευδώνυμο του καθένα διαφορετικό χρώμα" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Στοίχιση ψευδωνύμων" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Στοιχίζει δεξιά τα ψευδώνυμα" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Διαφανές παρασκήνιο" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Χρήση διαχωριστικής γραμμής" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Εισάγει μια κόκκινη γραμμή μετά το κείμενο που έχει διαβαστεί." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Ρυθμίσεις διαφάνειας" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Κόκκινο:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Πράσινο:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Μπλε:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Επισήμανση ώρας" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Ενεργοποίηση καταγραφής ώρας" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Μορφή ώρας καταγραφής:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Δείτε την σελίδα man του strftime για λεπτομέρειες." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "Αυτός που μίλησε τελευταίος" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Πλαίσιο εισόδου" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Χρήση γραμματοσειράς και χρωμάτων του πλαισίου κειμένου" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Έλεγχος ορθογραφίας" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Συμπλήρωση ψευδωνύμων" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "Αυτόματη συμπλήρωση ψευδωνύμων (χωρίς το TAB)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Επίθεμα συμπλήρωσης ψευδωνύμων:" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "Η αυτόματη συμπλήρωση ταξινομείται κατά:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Κώδικες πλαισίου εισαγωγής" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Μετάφραση του %nnn σαν ASCII τιμή" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Μετάφραση %C, %B σαν Χρώμα, Έντονο κείμενο κλπ" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, Ops πρώτα" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, Ops τελευταίοι" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Αταξινόμητο" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Κορυφή" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Βάση" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Κρυφό" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Λίστα χρηστών" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Προβολή ονομάτων διακομιστών στη λίστα χρηστών" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Ταξινόμηση λίστας χρηστών κατά:" + +#: src/fe-gtk/setup.c:205 +#, fuzzy +msgid "Show user list at:" +msgstr "Εμφάνιση/Απόκρυψη λίστας χρηστών" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Παρακολούθηση απουσιών" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "" +"Παρακολούθηση των απουσιών και επισήμανση των απόντων χρηστών με διαφορετικό " +"χρώμα" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "Σε κανάλια μικρότερα από:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Ενέργεια κατά το διπλό κλικ" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Παράθυρα" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Καρτέλες" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Πάντα" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Μόνο οι καρτέλες που ζητήθηκαν" + +#: src/fe-gtk/setup.c:242 +#, fuzzy +msgid "Tree" +msgstr "Δεντ_ροδιάταξη" + +#: src/fe-gtk/setup.c:249 +#, fuzzy +msgid "Switcher type:" +msgstr "Τύπος αναζήτησης:" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Άνοιγμα καρτέλας για τα μηνύματα διακομιστή" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Άνοιγμα καρτέλας για τις ειδοποιήσεις διακομιστή" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "Άνοιγμα καρτέλας για τα νέα προσωπικά μηνύματα" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Ταξινόμηση καρτελών με αλφαβητική σειρά" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "Μικρές καρτέλες" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Εστίαση νέων καρτελών:" + +#: src/fe-gtk/setup.c:258 +#, fuzzy +msgid "Show channel switcher at:" +msgstr "κανάλια με" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Συντόμευση καρτελών σε:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "χαρακτήρες." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Καρτέλες ή παράθυρα" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Άνοιγμα καναλιών σε:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Άνοιγμα διαλόγων σε:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Άνοιγμα εργαλείων σε:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Καρτέλες ή παράθυρα για τα DCC, Ignore, Notify κλπ.;" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "Όχι" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Ναι" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "Επιλογή φακέλου αποθήκευσης κάθε φορά" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Αρχεία και Κατάλογοι" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Αυτόματη αποδοχή αρχείων:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Αποθήκευση αρχείων στο:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Μετακίνηση ολοκληρωμένων αρχείων στο:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Αποθήκευση ψευδωνύμων στα ονόματα αρχείων" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Ρυθμίσεις δικτύου" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Λήψη της διεύθυνσης IP από τον διακομιστή IRC" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Ερώτηση στον διακομιστή IRC για την πραγματική σας διεύθυνση. " +"Χρησιμοποιείστε το όταν έχετε διεύθυνση IP της μορφής 192.168.*.* ή 10.*.*." +"* !" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "DCC διεύθυνση IP:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Απαίτηση τής χρήσης αυτής της διευθύνσης κατα την προσφορά αρχείων." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Αρχική θύρα DCC αποστολής:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Τελική θύρα DCC αποστολής:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!Αφήστε τις θύρες στο 0 για πλήρες εύρος." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Μέγιστες ταχύτητες μεταφοράς αρχείων (bytes ανά δευτερόλεπτο)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Αποστολή ενός αρχείου:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Μέγιστη ταχύτητα για μια μεταφορά" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Λήψη ενός αρχείου:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Όλες οι αποστολές αρχείων μαζί:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Μέγιστη ταχύτητα για όλα τα αρχεία" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Όλες οι λήψεις αρχείων συνδυασμένες:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Συναγερμοί" + +#: src/fe-gtk/setup.c:333 +#, fuzzy +msgid "Show tray balloons on:" +msgstr "Εμφάνιση καρτελών στο:" + +#: src/fe-gtk/setup.c:335 +#, fuzzy +msgid "Blink tray icon on:" +msgstr "Εναλλαγή εικονιδίου σε μήνυμα" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "Ενεργοποίηση εικονιδίου συστήματος" + +#: src/fe-gtk/setup.c:341 +#, fuzzy +msgid "Highlighted Messages" +msgstr "Επισημασμένο μήνυμα" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:344 +#, fuzzy +msgid "Extra words to highlight:" +msgstr "Επιπλέον λέξεις για επισήμανση:" + +#: src/fe-gtk/setup.c:345 +#, fuzzy +msgid "Nick names not to highlight:" +msgstr "Ψευδώνυμα στα οποία δε θα γίνεται επισήμανση:" + +#: src/fe-gtk/setup.c:346 +#, fuzzy +msgid "Nick names to always highlight:" +msgstr "Ψευδώνυμα στα οποία δε θα γίνεται επισήμανση:" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Διαχωρίστε πολλές λέξεις με κόμματα." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Προκαθορισμένα μηνύματα" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Έξοδος:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Εγκατάλειψη καναλιού:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Απουσία:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Απουσία" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Ανακοίνωση μηνυμάτων απουσίας" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Ανακοίνωση της απουσίας σας σε όλα τα κανάλια" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Εμφάνιση του μηνύματος απουσίας μια φορά" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Εμφάνιση των όμοιων μηνυμάτων ειδοποίησης μόνο μια φορά" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Αυτόματη απενεργοποίηση της απουσίας" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Απενεργοποίηση της σημείωσης της απουσίας πριν την αποστολή μηνυμάτων" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Προχωρημένες ρυθμίσεις" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Καθυστέρηση στην αυτόματη επανασύνδεση:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Εμφάνιση των καταστάσεων (MODE) σε ωμή μορφή" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Whois κατά την ειδοποίηση" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" +"Κάνει ένα /WHOIS όταν συνδεθεί ένας χρήστης που βρίσκεται στη λίστα " +"ειδοποίησής σας." + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Απόκρυψη μηνυμάτων εισόδου/εξόδου" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Προκαθορισμένη απόκρυψη μηνυμάτων εισόδου/εξόδου" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Αυτόματο άνοιγμα παραθύρων DCC" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Παράθυρο αποστολής" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Παράθυρο λήψης" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Παράθυρο συζήτησης" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Καταγραφή" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "Ενεργοποίηση της καταγραφής των συζητήσεων" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Όνομα αρχείων καταγραφής:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Διακομιστής %c=Κανάλι %n=Δίκτυο." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Χρονοσήμανση των αρχείων καταγραφής" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Μορφή καταγραφόμενης ώρας:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Απενεργοποιημένο)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Όλες οι συνδέσεις" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "Μόνο διακομιστές IRC" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "Μόνο λήψη DCC" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Η διεύθυνσή σας" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Διεύθυνση για τη σύνδεση:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "Χρήσιμο μόνο για υπολογιστές με πολλαπλές διευθύνσεις." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Διακομιστής Proxy" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Όνομα διακομιστή:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Θύρα:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Τύπος:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Χρήση διακομιστή proxy για:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Πιστοποίηση proxy" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Χρήση πιστοποίησης (μόνο MS Proxy, HTTP και Socks5)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Χρήση πιστοποίησης (μόνο HTTP και Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Όνομα χρήστη:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Συνθηματικό διακομιστή:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Επιλογή ενός αρχείου εικόνας" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "Επιλογή φακέλου αρχείων" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Επιλογή γραμματοσειράς" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Περιήγηση..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Επισήμανση των καταχωρημένων χρηστών με:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Επισήμανση των μη-καταχωρημένων χρηστών με:" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "Άνοιγμα φακέλου δεδομένων" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Επιλογή χρώματος" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Χρώματα κειμένου" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "χρώματα mIRC:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Τοπικά χρώματα:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Πλάνο:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Φόντο:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Χρώμα επισήμανσης:" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Χρώματα διεπαφής" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Νέα δεδομένα:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Γραμμή επισήμανσης:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Νέο μήνυμα:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Χρήστης απουσίας:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Επισήμανση:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Γεγονός" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Αρχείο ήχου" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Επιλογή αρχείου ήχου" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Μέθοδος αναπαραγωγής ήχων:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "Εξωτερικό _πρόγραμμα αναπαραγωγής ήχων:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "_Εξωτερικό πρόγραμμα" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_Αυτόματο" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "Κατάλογος αρχείων ή_χου:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Αρχείο ήχου:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "_Περιήγηση..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "_Αναπαραγωγή" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Διεπαφή" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Πλαίσιο κείμενου" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Λίστα χρηστών" + +#: src/fe-gtk/setup.c:1703 +#, fuzzy +msgid "Channel switcher" +msgstr "κανάλια με" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Χρώματα" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Συνομιλία" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Γενικές" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Ήχος" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Ρυθμίσεις δικτύου" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Μεταφορές αρχείων" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Κατηγορίες" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" +"Δε μπορείτε να τοποθετήσετε το δέντρο πάνω ή κάτω!\n" +"Παρακαλώ αλλάξτε πρώτα σε διάταξη <b>καρτέλες</b> στο μενού <b>προβολή</b>." + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" +"Άλλαξαν ορισμένες ρυθμίσεις που απαιτούν επανεκκίνηση για να ενεργοποιηθούν." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*ΠΡΟΕΙΔΟΠΟΙΗΣΗ*\n" +"Η αυτόματη αποδοχή DCC στο αρχικό κατάλογό σας\n" +"είναι επικίνδυνη και εκμεταλλεύσιμη. Πχ:\n" +"Κάποιος μπορεί να σας στείλει ένα .bash_profile" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: Προτιμήσεις" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Σφάλμα κατά την ανάλυση του αλφαριθμητικού" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Αυτό το σήμα παίρνει μόνο %d επιλογές, $%d δεν είναι έγκυρο" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Τυπώνει αρχεία κειμένου" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Επεξεργασία γεγονότων" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ Αριθμός" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Άνοιγμα από..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Δοκιμή όλων" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "Σύνδεσμος" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: Καταγραφέας διευθύνσεων" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Καθαρισμός λίστας" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Αντιγραφή επιλεγμένου συνδέσμου" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Αντιγραφή" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Αποθήκευση λίστας σε αρχείο" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d ops, %d σύνολο" + +#~ msgid "" +#~ "Set per channel options\n" +#~ "CHANOPT CONFMODE ON|OFF - Toggle conf mode/showing of join and part " +#~ "messages\n" +#~ "CHANOPT COLORPASTE ON|OFF - Toggle color paste\n" +#~ "CHANOPT BEEP ON|OFF - Toggle beep on message\n" +#~ "CHANOPT TRAY ON|OFF - Toggle tray blink on message" +#~ msgstr "" +#~ "Επιλογές ανά κανάλι\n" +#~ "CHANOPT CONFMODE ON|OFF - Εναλλαγή προβολής μηνυμάτων σύνδεσης/" +#~ "αποσύνδεσης\n" +#~ "CHANOPT COLORPASTE ON|OFF - Εναλλαγή επικόλλησης χρωμάτων\n" +#~ "CHANOPT BEEP ON|OFF - Εναλλαγή ηχητικής ειδοποίησης για μηνύματα\n" +#~ "CHANOPT TRAY ON|OFF - Εναλλαγή οπτικής ειδοποίησης για μηνύματα" + +#~ msgid "US Minor Outlying Islands" +#~ msgstr "Μικροί Απόμερο Νήσοι των ΗΠΑ" + +#~ msgid "Direct client-to-client" +#~ msgstr "Σε απευθείας σύνδεση (DCC)" + +#~ msgid "Send File" +#~ msgstr "Αποστολή αρχείου" + +#~ msgid "Offer Chat" +#~ msgstr "Συνομιλία" + +#~ msgid "Abort Chat" +#~ msgstr "Ακύρωση συνομιλίας" + +#~ msgid "Userinfo" +#~ msgstr "Πληροφορίες χρήστη" + +#~ msgid "Clientinfo" +#~ msgstr "Πληροφορίες πελάτη" + +#~ msgid "Time" +#~ msgstr "Ώρα" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "Oper" + +#~ msgid "Kill this user" +#~ msgstr "Kill this user" + +#~ msgid "Mode" +#~ msgstr "Κατάσταση" + +#~ msgid "Give Half-Ops" +#~ msgstr "Απόδοση Half-Ops" + +#~ msgid "Take Half-Ops" +#~ msgstr "Αφαίρεση Half-Ops" + +#~ msgid "Ignore" +#~ msgstr "Αγνόησε" + +#~ msgid "Ignore User" +#~ msgstr "Αγνόησε χρήστη" + +#~ msgid "UnIgnore User" +#~ msgstr "ΑποΑγνόηση χρήστη" + +#~ msgid "Info" +#~ msgstr "Πληροφορίες" + +#~ msgid "Who" +#~ msgstr "Ποιος" + +#~ msgid "DNS Lookup" +#~ msgstr "DNS Lookup" + +#~ msgid "Trace" +#~ msgstr "Εντοπισμός" + +#~ msgid "External" +#~ msgstr "Εξωτερικό" + +#~ msgid "Traceroute" +#~ msgstr "Traceroute" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "Unban" +#~ msgstr "Αφαίρεση Ban" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "Δεν υπάρχουν άλλες ανοικτές καρτέλες, έξοδος από το xchat;" + +#~ msgid "Show join/part messages" +#~ msgstr "Εμφάνιση μηνυμάτων εισόδου/εξόδου" + +#~ msgid "Color paste" +#~ msgstr "Επικόλληση χρωμάτων" + +#~ msgid "_Close Tab" +#~ msgstr "_Κλείσιμο καρτέλας" + +#~ msgid "_Layout" +#~ msgstr "_Διάταξη" + +#~ msgid "Channel List..." +#~ msgstr "Λίστα καναλιών..." + +#~ msgid "Notify List..." +#~ msgstr "Λίστα ειδοποίησης..." + +#~ msgid "_Close Window" +#~ msgstr "_Κλείσιμο παραθύρου" + +#~ msgid "User" +#~ msgstr "Χρήστης" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: Λίστα ειδοποίησης" + +#~ msgid "File Offer" +#~ msgstr "Προσφορά αρχείου" + +#~ msgid "Quit..." +#~ msgstr "Έξοδος..." + +#~ msgid "C_hannels to join:" +#~ msgstr "Σύνδεσ_η στα κανάλια:" + +#~ msgid "Resizable user list" +#~ msgstr "Μεταβλητή λίστα χρηστών" + +#~ msgid "Left" +#~ msgstr "Αριστερά" + +#~ msgid "Right" +#~ msgstr "Δεξιά" + +#~ msgid "Flash taskbar on highlighted messages" +#~ msgstr "Ειδοποίηση στην γραμμή εργασιών για τα επισημασμένα μηνύματα" + +#~ msgid "Flash taskbar on private messages" +#~ msgstr "Ειδοποίηση στην γραμμή εργασιών για τα προσωπικά μηνύματα" + +#~ msgid "Beep on highlighted messages" +#~ msgstr "Μπιπ για επεσημασμένα μηνύματα" + +#~ msgid "Beep on private messages" +#~ msgstr "Μπιπ για προσωπικά μηνύματα" + +#~ msgid "Beep on channel messages" +#~ msgstr "Μπιπ για μηνύματα στο κανάλι" + +#~ msgid "%s loaded successfully!\n" +#~ msgstr "Το %s φορτώθηκε με επιτυχία!\n" + +#~ msgid "I can't save an empty list!" +#~ msgstr "Δεν είναι δυνατή η αποθήκευση μιας άδειας λίστας!" + +#~ msgid "List display options:" +#~ msgstr "Απεικόνιση επιλογών εμφάνισης:" + +#~ msgid "Minimum Users:" +#~ msgstr "Ελάχιστοι χρήστες:" + +#~ msgid "Maximum Users:" +#~ msgstr "Μέγιστοι χρήστες:" + +#~ msgid "Regex Match:" +#~ msgstr "Ταίριασμα κανονικής έκφρασης:" + +#~ msgid "Apply Match to:" +#~ msgstr "Εφαρμογή ταιριάσματος στο:" + +#~ msgid "Apply" +#~ msgstr "Εφαρμογή" + +#~ msgid "Refresh the list" +#~ msgstr "Ανανέωση λίστας" + +#~ msgid "Save the list" +#~ msgstr "Αποθήκευση λίστας" + +#~ msgid "None" +#~ msgstr "Κανένα" + +#~ msgid "To" +#~ msgstr "Προς" + +#~ msgid "Started" +#~ msgstr "Ξεκίνησε" + +#~ msgid "Speed limit" +#~ msgstr "Όριο ταχύτητας" + +#~ msgid "XChat: File Receive List" +#~ msgstr "XChat: Λίστα λήψης αρχείων" + +#~ msgid "Open" +#~ msgstr "Άνοιγμα" + +#~ msgid "Ack" +#~ msgstr "Ack" + +#~ msgid "To/From" +#~ msgstr "Προς/Από" + +#~ msgid "Go to" +#~ msgstr "Μετάβαση σε" + +#~ msgid "(Can be a text file relative to ~/.xchat2/)." +#~ msgstr "(Μπορεί να είναι αρχείο κειμένου σχετικό με ~/.xchat2/)." + +#~ msgid "(Can be a text file relative to config dir)." +#~ msgstr "" +#~ "(Μπορεί να είναι αρχείο κειμένου σχετικό με τον κατάλογο ρυθμίσεων)." + +#~ msgid "%C18*$t$1%O $2" +#~ msgstr "%C18*$t$1%O $2" + +#~ msgid "%C21*%O$t%C21%B$1%O%C21 $2" +#~ msgstr "%C21*%O$t%C21%B$1%O%C21 $2" + +#~ msgid "%C18%H<%H$4$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$4$1%H>%H%O$t$2" + +#~ msgid "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" +#~ msgstr "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" + +#~ msgid "%C28-%C29$1/$2%C28-%O$t$3" +#~ msgstr "%C28-%C29$1/$2%C28-%O$t$3" + +#~ msgid "$1$t$2" +#~ msgstr "$1$t$2" + +#~ msgid "%C19>%O$1%C19<%O$t$2" +#~ msgstr "%C19>%O$1%C19<%O$t$2" + +#~ msgid "%C16*%O$t$1%O" +#~ msgstr "%C16*%O$t$1%O" + +#~ msgid "%C28-%C29$1%C28-%O$t$2" +#~ msgstr "%C28-%C29$1%C28-%O$t$2" + +#~ msgid "%C28*%C29$3$1%C28*$t%O$2" +#~ msgstr "%C28*%C29$3$1%C28*$t%O$2" + +#~ msgid "%C18%H<%H$3$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$3$1%H>%H%O$t$2" + +#~ msgid "%C22*%O$t$1" +#~ msgstr "%C22*%O$t$1" + +#~ msgid "%C31%H<%H$4$1%H>%H%O%C30$t$2" +#~ msgstr "%C31%H<%H$4$1%H>%H%O%C30$t$2" + +#~ msgid "PID" +#~ msgstr "PID" + +#~ msgid "Server" +#~ msgstr "Διακομιστής" + +#~ msgid "Tabs Location" +#~ msgstr "Τοποθέτηση καρτελών" + +#~ msgid "Open an irc:// url" +#~ msgstr "Άνοιγμα συνδέσμου τύπου irc://" + +#~ msgid "irc://server:port/channel" +#~ msgstr "irc://διακομιστής:θύρα/κανάλι" + +#~ msgid "Execute a xchat command" +#~ msgstr "Εκτέλεση μιας εντολής του xchat" + +#~ msgid "\"Command to execute\"" +#~ msgstr "\"Εντολή προς εκτέλεση\"" + +#~ msgid "Prints some text to the current tab/window" +#~ msgstr "Εμφανίζει κείμενο στην τρέχουσα καρτέλα/παράθυρο" + +#~ msgid "\"Text to print\"" +#~ msgstr "\"Κείμενο προς εμφάνιση\"" + +#~ msgid "server" +#~ msgstr "διακομιστής" + +#~ msgid "Get some informations from xchat" +#~ msgstr "Λήψη πληροφοριών από το xchat" + +#~ msgid "Get settings from xchat" +#~ msgstr "Λήψη ρυθμίσεων από το xchat" + +#~ msgid "name" +#~ msgstr "όνομα" + +#~ msgid "" +#~ "xchat-remote: %s\n" +#~ "Try `xchat-remote --help' for more information\n" +#~ msgstr "" +#~ "xchat-remote: %s\n" +#~ "Δοκιμάστε `xchat-remote --help' για περισσότερες πληροφορίες\n" + +#~ msgid "Failed to complete SetContext" +#~ msgstr "Η εκτέλεση της εντολής SetContext απέτυχε" + +#~ msgid "Failed to complete print" +#~ msgstr "Η εκτύπωση απέτυχε" + +#~ msgid "Failed to complete GetInfo" +#~ msgstr "Η εκτέλεση της εντολής GetInfo απέτυχε" + +#~ msgid "Failed to complete GetPrefs" +#~ msgstr "Η εκτέλεση της εντολής GetPrefs απέτυχε" + +#~ msgid "%s doesn't exist\n" +#~ msgstr "Το %s δεν υπάρχει\n" + +#~ msgid "France, Metropolitan" +#~ msgstr "Γαλλία, Μητροπολιτική" + +#~ msgid "Neutral Zone" +#~ msgstr "Ουδέτερη Ζώνη" + +#~ msgid "From:" +#~ msgstr "Από:" + +#~ msgid "To:" +#~ msgstr "Προς:" + +#~ msgid "Size:" +#~ msgstr "Μέγεθος:" + +#~ msgid "MIME Type" +#~ msgstr "Τύπος MIME" + +#~ msgid "Settings saved." +#~ msgstr "Αποθήκευση ρυθμίσεων" + +#~ msgid "Save rawlog" +#~ msgstr "Αποθήκευση ωμής καταγραφής" + +#~ msgid "Save rawlog..." +#~ msgstr "Αποθήκευση ωμής καταγραφής..." + +#~ msgid "XChat: Server List" +#~ msgstr "XChat: Λίστα διακομιστών" + +#~ msgid "Completes nick names without using the TAB key" +#~ msgstr "Συμπληρώνει τα ψευδώνυμα χωρίς τη χρήση του πλήκτρου TAB" + +#~ msgid "Input Box Appearance" +#~ msgstr "Εμφάνιση πλαισίου εισαγωγής" + +#~ msgid "Convert spaces to underscore before sending" +#~ msgstr "Μετάφραση των κενών σε κάτω παύλες πριν την αποστολή" + +#~ msgid "(See strftime manpage for details)." +#~ msgstr "(Δείτε τη καρτέλα man του strftime για λεπτομέρειες)." diff --git a/etc/wyatt8740/po/es.po b/etc/wyatt8740/po/es.po new file mode 100644 index 0000000..24ef583 --- /dev/null +++ b/etc/wyatt8740/po/es.po @@ -0,0 +1,5946 @@ +# Mensajes en español para X-Chat +# Copyright (C) 2004 Free Software Foundation, Inc. +# This file is distributed under the same license as the X-Chat package. +# Juan Pablo Puerta <jppuerta@iname.com>, 1999 +# Antonio de la Torre <adltorre@terra.es>, 2001 +# Pablo Gonzalo del Campo <pablodc@bigfoot.com>,2002 +# Ramón Rey Vicente <ramon.rey@hispalinux.es>, 2003,2004 +# Rafael Bermúdez <rafaelbermudez@gmail.com>, 2006 +# Rubén C. Díaz Alonso <outime@gmail.com>, 2006 +# +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.6.7\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2008-10-24 18:47+0100\n" +"Last-Translator: José Alejandro Carrillo Neira <j.alec.n@gmail.com>\n" +"Language-Team: Spanish <es@li.org>\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "No se puede crear ~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Estoy ocupado" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Saliendo" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* ¡Ejecutar IRC como root es peligroso!. Debería crear una\n" +" cuenta de usuario normal y usarla para conectarse.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Esperando" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Activo" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Ha fallado" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Terminado" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Conectar" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Abortado" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "No se puede acceder a %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Error" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s está ofreciendo \"%s\". ¿Deseas aceptar?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "No hay DCCs activos\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "SÍ " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "NO " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Está recibiendo demasiados CTCP de %s, ignorando a %s\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "Está recibiendo demasiados MSG de %s, desactivando autodiálogo.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s conectados\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s desconectados\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "No ha entrado en ningún canal. Intente /join #<canal>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "No está conectado. Intente /server <equipo> [<puerto>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Ya está puesto como ausente: %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "Ya está puesto como disponible.\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "¡Se necesita /bin/sh para poder ejecutarse!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Órdenes disponibles:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Órdenes definidas por el usuario:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Órdenes definidas por el complemento:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Escriba /HELP <orden> para obtener más información, ó /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Argumento desconocido '%s' ignorado." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "No se encontró la extensión.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Esa extensión se niega a ser desactivada.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "" +"ADDBUTTON <nombre> <acción>, añade un botón debajo de la lista de usuarios" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "" +"ALLCHAN <cmd>, envía una orden a todos los canales a los que se ha unido" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "" +"ALLCHANL <cmd>, envía una orden a todos los canales a los que se ha unido" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "" +"ALLSERV <cmd>, envía una orden a todos los servidores a los que se ha " +"conectado" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<razón>], cambia tu estado a ausente" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "BACK, cambia tu estado a disponible (no ausente)" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <máscara> [<tipo de ban>], banea a todos aquellos que concuerden con la " +"máscara del canal actual. Si ya están en el canal esto no les expulsa (es " +"necesario ser operador del canal)" + +#: src/common/outbound.c:3506 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <variable> [<valor>]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "" +"CLEAR [ALL|HISTORY], Limpia el historial de la ventana de texto o de " +"comandos activa" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, Cierra la ventana o pestaña actual" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" +"COUNTRY [-s] <código|comodín>, busca un código de país, ej: au = Australia" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <pseudónimo> <mensaje>, envía el mensaje CTCP al pseudónimo, los " +"mensajes comunes son VERSION y USERINFO" + +#: src/common/outbound.c:3516 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "" +"CYCLE [<canal>], sale del canal activo o de un canal dado e inmediatamente " +"se une a este" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <pseudónimo> - recibe un archivo ofrecido\n" +"DCC SEND [-maxcps=#] <pseudónimo> [archivo] - envía un archivo a una " +"persona\n" +"DCC PSEND [-maxcps=#] <pseudónimo> [archivo] - envía un archivo usando modo " +"pasivo\n" +"DCC LIST - muestra la lista DCC\n" +"DCC CHAT <pseudónimo> - ofrece el DCC CHAT a alguien\n" +"DCC PCHAT <pseudónimo> - ofrece el DCC CHAT usando " +"modo pasivo\n" +"DCC CLOSE <tipo> <pseudónimo> <archivo> - ejemplo:\n" +" /dcc close send juanperez archivo.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <pseudónimo>, quita el estado de semi-operador del canal al pseudónimo " +"en el canal actual (necesita ser operador del canal)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <nombre>, borra un botón de debajo de la lista de usuarios" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <pseudónimo>, quita el estado de operador al pseudónimo en el canal " +"actual (necesita ser operador del canal)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <pseudónimo>, quita el estado de voz del pseudónimo en el canal " +"actual (necesita ser operador del canal)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, Se desconecta del servidor" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <pseudónimo|equipo|ip>, Busca la dirección IP de un usuario" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <texto>, Imprime texto localmente" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <orden>, ejecuta la orden. Si se usa la bandera -o entonces la " +"salida es enviada al canal actual, si no, se imprime en la caja de texto " +"actual" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, envía al proceso la señal de continuar SIGCONT" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], mata un ejecutable corriendo en la sesión actual. Si de " +"indica -9 el proceso es matado por la fuerza con SIGKILL" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, envía al proceso la señal de detenerse SIGSTOP" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, envía los datos a la entrada estándar del proceso" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, borra la cola de envío del servidor actual" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" +"GATE <equipo> [<puerto>], utiliza un proxy a través de un equipo, el puerto " +"predeterminado es el 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <pseudónimo> <contraseña>, mata un pseudónimo fantasma " + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" +"HOP <pseudónimo>, otorga estado de semi-operador al pseudónimo (necesita ser " +"operador del canal)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <contraseña>, te identifica con NickServ" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <máscara> <tipos..> <opciones..>\n" +" máscara - máscara de equipos a ignorar, ej: *!*@*.aol.com\n" +" tipos - tipos de datos a ignorar, uno o todos de:\n" +" PRIV, CHAN, NOTI, CTCP, INVI, ALL\n" +" opciones - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <pseudónimo> [<canal>], invita a alguien a un canal, por omisión el " +"canal actual (necesita ser operador del canal)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <canal>, entra al canal" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <pseudónimo>, expulsa al pseudónimo del canal actual (necesita ser " +"operador del canal)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <pseudónimo>, banea y luego expulsa al pseudónimo del canal actual " +"(necesita ser operador del canal)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, fuerza una nueva prueba de retardo" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <texto>, busca el texto en el buffer" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <archivo>, carga un complemento (plugin) o un guión (script)" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, Quita masivamente el estado de semi-operador en el canal actual " +"(necesita ser operador del canal)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, Quita masivamente el estado de operador en el canal actual (necesita " +"ser operador del canal)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <acción>, envía la acción al canal actual (las acciones están escritas en " +"tercera persona del inglés, como /me jumps)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, Expulsa masivamente a todos excepto a usted en el canal actual " +"(necesita ser operador del canal)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, Otorga masivamente el estado de operador del canal actual (necesita ser " +"operador del canal)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <pseudónimo> <mensaje>, envía un mensaje privado" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, Lista los pseudónimos del canal actual" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <pseudónimo> <mensaje>, Envía una noticia CTCP" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <nombre del equipo> [<puerto>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <pseudónimo>, establece su pseudónimo" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <pseudónimo/canal> <mensaje>, envía una noticia. Las noticias son una " +"especie de mensaje que debería ser auto publicado" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n red1,[,red2,...]] [<pseudónimo>], muestra tus notificaciones o " +"añade alguien a estas" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" +"OP <pseudónimo>, otorga el estado de operador del canal al pseudónimo " +"(necesita ser operador del canal)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" +"PART [<canal>] [<razón>], abandona el canal, por omisión el canal actual" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <pseudónimo | canal>, Envía pings CTCP al pseudónimo o canal" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "" +"QUERY [-nofocus] <pseudónimo>, abre una ventana de mensaje privado con " +"<pseudónimo> nueva." + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<razón>], se desconecta del servidor actual" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <texto>, envía el texto en formato plano hacia el servidor" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<equipo>] [<puerto>] [<contraseña>], Puede ser llamado " +"sólo como /RECONNECT para reconectarse al servidor actual o con /" +"RECONNECT_ALL para reconectarse a todos los servidores abiertos" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<equipo>] [<puerto>] [<contraseña>], Puede ser llamado sólo como /" +"RECONNECT para reconectarse al servidor actual o con /RECONNECT ALL para " +"reconectarse a todos los servidores abiertos" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <texto>, envía datos crudos hacia xchat como si estos fuesen recibidos " +"desde el servidor IRC" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <texto>, envía el texto hacia un objeto de la ventana actual" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <pseudónimo> [<archivo>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <equipo> <puerto> <canal>, Lo conecta y entra en un canal" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <host> <port> <channel>, Le conecta y entra en un canal" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <equipo> [<puerto>] [<contraseña>], lo conecta al servidor, el " +"puerto predeterminado es 6667 para conexiones normales y 9999 para " +"conexiones ssl" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <equipo> [<puerto>] [<contraseña>], lo conecta a un servidor, el " +"puerto predeterminado es 6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet]<variable> [<valor>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<posición>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<asunto>], Establece el asunto si se provee uno, si no, muestra el " +"topic actual" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" +"\n" +"TRAY -f <tiempo de espera> <fichero 1> [<fichero 2>]\tHace intermitencia del " +"ícono de la bandeja del sistema entre 2 íconos.\n" +"TRAY -f <nombre de fichero>\t\tEstablece un ícono fijo al icono de la " +"bandeja de sistema.\n" +"TRAY -i <número>\t\t\t\tPestañea el ícono de la bandeja del sistema.\n" +"TRAY -t <texto>\t\t\t\t\tEstablece la etiqueta del ícono de la bandeja del " +"sistema.\n" +"TRAY -b <título> <texto>\t\t\tEstablece el globo del ícono de la bandeja del " +"sistema." + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "" +"UNBAN <máscara> [<máscara>...], reincorpora las máscaras especificadas." + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <máscara> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <nombre>, desactiva una extensión (plugin) o un guión (script)" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, abre una URL en su navegador" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <pseudónimo1> <pseudónimo2> etc, resalta el (los) " +"pseudónimo(s) en la lista de usuarios del canal" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "" +"VOICE <pseudónimo>, le otorga el estado de voz a alguien (necesita ser " +"operador del canal)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <mensaje>, escribe el mensaje a todos los canales" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <mensaje>, envía el mensaje a todos los operadores del canal en el " +"canal actual" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Uso: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"No hay ayuda disponible para esa orden.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "No existe esa orden.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Argumentos erróneos para la orden de usuario.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Demasiados comandos recursivos de usuario, abortando." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Orden desconocida. Pruebe /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "" +"No tiene el símbolo xchat_plugin_init. ¿Es de verdad una extensiçon de xchat?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "¿Está seguro de que es un servidor y un puerto con SSL?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"No se pudo resolver el nombre de equipo %s\n" +"¡Verifique su configuración de IP!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Ha fallado el proxy traversal.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Ciclando al siguiente servidor en %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Atención: el conjunto de caracteres \"%s\" es desconocido. No se\n" +"aplicará conversión para la red %s." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 añadido a la lista de notificaciones." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Lista de bans:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tNo puede entrar%C26 %B$1 %O(Estás baneado)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 es ahora conocido como $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 banea a $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tCanal $1 creado en $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O quita semi-OP a%C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O quita OP de a%C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O quita voz a%C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 establece a $2 como exento" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O da estado de semi-OP a%C26 $2" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 invita a $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UTema de los usuarios del canal" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 establece modo $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Canal $1 modos: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O da OP a%C26 $2" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 quita la exención a $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 quita invitación a $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 quita contraseña del canal" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 quita límite de usuarios" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 establece contraseña del canal del canal como $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 establece límite del canal a $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 quita veto a $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O da voz a%C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Conectado. Ahora registrándose..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22Conectando a $1 ($2) puerto $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21Fallo en la conexión. Error: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tSe ha recibido un CTCP $1 de $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tSe ha recibido un CTCP $1 de $2 (a $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tSe ha recibido un sonido CTCP $1 de $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tSe ha recibido un CTCP $1 de $2 (a $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tCharla DCC para %C26$1%O abortada." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "" +"%C22*%O$tConexión para charla DCC establecida con %C26$1 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tCharla DCC con %C26$1%O perdida. $4." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tSe ha recibido una oferta de charla DCC de $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tOfreciendo charla DCC a $1" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tYa se está ofreciendo una charla a $1" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$tEl intento de conexión DCC $1 con%C26 $2%O falló (err=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tSe ha recibido '$1%O' de $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 Tipo De/Para Estado Tamaño Pos Archivo " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O." +"%010%C22*%O$tContents of packet: $2" +msgstr "" +"%C22*%O$tSe ha recibido una petición DCC errónea de %C26$1%O." +"%010%C22*%O$tContenidos del paquete: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tOfrece%C26 $1%O a%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tNo existe tal oferta DCC." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "-%C10-%C11-%O$tRecepción DCC %C11$2%O para %C11$1%O abortado." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tRecepción DCC %C26 $1%O de%C26 $3%O completada %C30[%C26$4%O " +"cps%C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "" +"%C22*%O$tConexión para recepción DCC establecida con%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tRecepción DCC %C26 $1%O de%C26 $3%O falló ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tRecepción DCC: No se pudo abrir $1 para escritura ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "" +"%C22*%O$tEl archivo%C26 $1%C ya existe, guardándolo como%C26 $2%O en su " +"lugar." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Oha pedido retomar %C26 $2 %Cde%C26 $3%C." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tEnvío DCC%C26 $2%O para%C26 $1%O abortado." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tEnvío DCC%C26 $1%O para%C26 $2%O completado %C30[%C26$3%O " +"cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tConexión para envío DCC establecida con%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tEl envío DCC%C26 $1%O para%C26 $2%O falló. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Oha ofrecido%C26 $2 %O(%C26$3 %Obytes)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Opara%C26 $3 %Cse paró - abortando." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "" +"%C22*%O$tDCC $1%C26 $2 %Opara%C26 $3 %Oagotó el tiempo de espera - abortando." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 borrado de la lista de notificaciones." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tDesconectado ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tEncontró su IP: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O añadido a la lista de ignorados." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "Ignorar a %C26$1%O cambió" + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 Máscara PRIV NOTI CAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O se quitó de la lista de ignorados." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " La lista de ignorados está vacía." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "" +"%C22*%O$tNo pudo entrar a%C26 %B$1 %O(El canal es sólo para invitados)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tHa sido invitado a%C26 $1%O por%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) ha entrado en $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$tNo pudo entrar%C26 %B$1 %O(Requiere palabra clave)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 ha echado a $2 de $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$tHa sido eliminado por $1 ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22Se saltó el mensaje del día (MOTD)." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 ya está en uso. Reintentando con $2.." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$tEl pseudónimo ya está siendo usado. Use /NICK para intentar con " +"otro." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tNo existe ese DCC." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tNo se está ejecutando ningún proceso actualmente" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tLa lista de notificaciones está vacía." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Lista de notificación " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 usuarios en la lista de notificaciones." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tNotificación: $1 se ha desconectado ($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tNotificación: $1 se ha conectado ($3)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) ha abandonado $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) ha abandonado $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tRespuesta al Ping de $1 : $2 segundo(s)" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tNo hubo respuesta al ping en $1 segundos, desconectando." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tYa se está ejecutando un proceso" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 se ha marchado (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 establece modos%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Mensajes de los operadores%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tBuscando número de IP para%C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22Conectado." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22Buscando $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tSe paró el anterior intento de conexión (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29El topic para $1%C %C29es $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 ha cambiado el topic a: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29Topic para $1%C %C29definido por $2%C %C29en $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tEquipo desconocido. ¿Quizá se ha equivocado?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "" +"%C22*%O$tNo puede entrar a%C26 %B$1 %O(Se llegó al límite de usuarios)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Usuarios en $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cestá ausente %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OFinal de la lista WHOIS." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O inactivo%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O inactivo%C26 $2%O, entró:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" +"%C22*%O$t%C28[%O$1%C28] %Overdadero usuario@equipo%C27 $2%O, verdadera " +"IP%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Has entrado en $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tSe le ha echado de $2 por $3 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tHa abandonado el canal $3" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tHa abandonado el canal $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tEstá invitando%C26 $1%O a%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tUsted es ahora conocido como $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "Registro cargado de" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** FINALIZANDO CONEXIÓN EN %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** INICIANDO CONEXIÓN EN %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* No se pudo abrir el archivo de registro para escritura. Compruebe los\n" +" persisos de %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Mensaje de ausencia" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "El mensaje" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "El pseudónimo de la persona que entra" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "El canal al que está entrando" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "El equipo de la persona" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Apodo" + +#: src/common/text.c:973 +msgid "The action" +msgstr "La acción" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Modo carácter" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Texto de info" + +#: src/common/text.c:980 +msgid "The text" +msgstr "El texto" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "El mensaje" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Apodo anterior" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Nuevo pseudónimo" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Apodo de la persona que ha cambiado el topic" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Topic" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Canal" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "El pseudónimo del que expulsa" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "La persona que esta siendo expulsada" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "El canal" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "La razón" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "El pseudónimo de la persona que abandona" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "El tiempo" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "El creador" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Apodo" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Razón" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Equipo" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "De quién viene" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "El tiempo en el formato x.x (vea debajo)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "El canal se va a" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "El sonido" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "El pseudónimo de la persona" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "El evento CTCP" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "El pseudónimo de la persona que establece la clave" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "La clave" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "El pseudónimo de la persona que establece el límite" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "El limite" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "El pseudónimo de la persona que otorgó los permisos de operador" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "El pseudónimo de la persona que ha sido convertida en operador" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "El pseudónimo de la persona que ha sido convertida en semi-operador" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "El pseudónimo de la persona que otorgó los permisos de semi-operador" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "El pseudónimo de la persona que otorgó los permisos de voz" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "El pseudónimo de la persona que ha sido convertida en voz" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "El pseudónimo de la persona que realizó el veto (banning)" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "La máscara de vetos" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "El pseudónimo de quien ha eliminado la clave" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "El pseudónimo de quien ha eliminado el límite" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "El pseudónimo de la persona que ha revocado los permisos de operador" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "" +"El pseudónimo de la persona a la que se la quitado el permiso de operador" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "" +"El pseudónimo de la persona que ha removido los permisos de semi-operador" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "" +"El pseudónimo de la persona a la que se la quitado los permisos de semi-" +"operador" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "El pseudónimo de la persona que ha revocado lo permisos de voz" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "El pseudónimo de la persona a la que se la quitado los permisos de voz" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "El pseudónimo de la persona que ha revocado el veto" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "El pseudónimo de la persona que otorgó la excepción" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "La máscara de excención" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "El pseudónimo de la persona que ha quitado la exención" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "El pseudónimo de la persona que ha realizado la invitación" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "La máscara de invitación" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "El pseudónimo de la persona que ha removido la invitación" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "El pseudónimo de la persona que ha establecido el modo" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "El signo del modo (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "La letra del modo" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "El canal esta siendo configurado" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Nombre de usuario" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Nombre completo" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Membresía de canal/es un operador de IRC" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Información del servidor" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Tiempo inactivo" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Tiempo de conexión" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Razón de ausencia" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Mensaje" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Cuenta" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "Verdadero usuario@equipo" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "Verdadera IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Nombre del canal" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Texto" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Nombre del servidor" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Apodo de la persona que le ha invitado" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Usuarios" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Apodo en uso" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Intentando usar el pseudónimo" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Puerto" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Red" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Cadena de modos" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "Dirección IP" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "Tipo DCC" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Nombre de archivo" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Nombre de archivo de destino" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Ruta" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Posición" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Tamaño" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "Cadena DCC" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Número de elementos de notificación" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Nombre anterior del archivo" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Nombre nuevo del archivo" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Receptor" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Máscara de equipo" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Nombre de equipo" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "El paquete" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Segundos" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Apodo de la persona que ha sido invitada" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Máscara de veto" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Quien ha establecido el veto" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Tiempo de veto" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Error al analizar el evento %s.\n" +"Cargando el predeterminado" + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"No se puede leer el archivo de sonido:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "Puerto cerrado en el equipo remoto" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Conexión rechazada" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "No hay ruta hacia el equipo" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Tiempo de espera de la conexión agotado" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "No se puede asignar esa dirección" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Conexión reiniciada por el par" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Isla de Ascensión" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Emiratos Arabes Unidos" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Afganistán" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Antigua y Barbuda" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Albania" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Armenia" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Antillas Holandesas" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Antártida" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Argentina" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "DNS inverso" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Samoa Americano" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Austria" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "Fiel a la OTAN" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Australia" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Islas de Åland" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Azerbaiyán" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Bosnia y Herzegovina" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Bangladesh" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Bélgica" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Bulgaria" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Bahrain" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Negocios" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Brunei" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Bolivia" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Brasil" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Bahamas" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Bután" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Isla Bouvet" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Bielorrusia" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Belice" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Canadá" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Islas Cocos" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "República Democrática del Congo" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "República Centro Africana" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Congo" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Suiza" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Costa de Marfil" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Islas Cook" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Chile" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Camerún" + +#: src/common/util.c:898 +msgid "China" +msgstr "China" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Colombia" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Anuncio de Internic" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Serbia y Montenegro" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Cuba" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Cabo Verde" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Isla Natividad" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Chipre" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "República Checa" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Alemania" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Dibuti" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Dinamarca" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Dominica" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "República Dominicana" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Argelia" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Ecuador" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Institución educativa" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Estonia" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Egipto" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Sahara Occidental" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "España" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Etiopía" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Unión Europea" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Finlandia" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Fiji" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Islas Malvinas" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Micronesia" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Islas Feroe" + +#: src/common/util.c:928 +msgid "France" +msgstr "Francia" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Gabón" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Gran Bretaña" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Granada" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Georgia" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Guayana Francesa" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Islas del Canal de la Mancha" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Gana" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Groenlandia" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Gobierno" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Guadalupe" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Guinea Ecuatorial" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Grecia" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Islas Georgia y Sandwich del Sur" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Guinea-Bissau" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Guayana" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Islas Heard y McDonald" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Croacia" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Haití" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Hungría" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Indonesia" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Irlanda" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Israel" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Isla de Man" + +#: src/common/util.c:959 +msgid "India" +msgstr "India" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Informativo" + +#: src/common/util.c:961 +msgid "International" +msgstr "Internacional" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Territorio Oceánico Indio Británico" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Iraq" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Irán" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Islandia" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Italia" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Jamaica" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Jordania" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Japón" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Kenia" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Kyrgyzstan" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Camboya" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Comores" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "San Kitts y Nevis" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Corea del Norte" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Corea del Sur" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Kuwait" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Islas Caimán" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Kazajistán" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Líbano" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Santa Lucía" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Liberia" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Lesoto" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Lituania" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Luxemburgo" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Letonia" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Libia" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Marruecos" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Mónaco" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Moldavia" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "Servicio médico de Estados Unidos" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Madagascar" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Islas Marshall" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Militar" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Macedonia" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Mongolia" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Macao" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Islas Marianas del Norte" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Martinica" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Mauritania" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Mauricio" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Maldivas" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "México" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Malasia" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Mozambique" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Namibia" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Nueva Caledonia" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Níger" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Red de Internic" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Isla Norfolk" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Nigeria" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Holanda" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Noruega" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Nueva Zelanda" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Omán" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Organización sin ánimo de lucro Internic" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Panamá" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Perú" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Polinesia Francesa" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Papau Nueva Guinea" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Filipinas" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Pakistán" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Polonia" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "San Pierre y Miquelon" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Puerto Rico" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Territorio Palestino" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Portugal" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Paraguay" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Qatar" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Reunión" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Rumania" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "Vieja escuela de ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Federación Rusa" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Ruanda" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Arabia Saudí" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Islas Salomón" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Seychelles" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Sudán" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Suecia" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Singapur" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "Santa Helena" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Eslovenia" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Islas Svalbard y Jan Mayen" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "República de Eslovaquia" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Sierra Leona" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Somalia" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Surinam" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "Santo Tomé y Principe" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Antigua URSS" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Siria" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Swazilandia" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Islas Turks y Caicos" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Chad" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Territorios Franceses del Sur" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Tailandia" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Tayikistán" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Timor Oriental" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Túnez" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Turquía" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Trinidad y Tobago" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Tanzania" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Ucrania" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Reino Unido" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "Estados Unidos" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Uruguay" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Uzbekistán" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Ciudad Estado del Vaticano" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "San Vicente y las Granadinas" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Islas Virgenes Británicas" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "Islas Virgenes Norteamericanas" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Islas Wallis y Futuna" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Yemen" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Yugoslavia" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Sudáfrica" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Zambia" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Desconocido" + +#: src/common/xchat.c:726 +msgid "_Open Dialog Window" +msgstr "_Abre una ventana de diálogo" + +#: src/common/xchat.c:727 +msgid "_Send a File" +msgstr "_Envía un fichero" + +#: src/common/xchat.c:728 +msgid "_User Info (WhoIs)" +msgstr "Información del _Usuario (WhoIs)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "_Añadir a la Lista de Amigos" + +#: src/common/xchat.c:730 +msgid "O_perator Actions" +msgstr "Acciones de O_perador" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Dar Op" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Tomar Op" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Dar voz" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Tomar voz" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Echar/Banear" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Echar" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Banear" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "Echar y banear" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Abandonar canal" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Entrar al canal..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Introduzca el canal al que quiere entrar:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Enlaces del servidor" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Ping al servidor" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Ocultar la versión" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Op" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "Quitar Op" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "adiós" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Introduzca razón para expulsar a %s:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Enviar archivo" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Diálogo" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Enviar" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Charla" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Limpiar" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "No se ha podido conectar al bus de la sesión" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "Fallo al completar NameHasOwner" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "Fallo al completar Command" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "acceso remoto" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "complemento para acceso remoto usando DBUS" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "No se ha podido conectar al bus de la sesión : %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Imposible adquirir %s: %s\n" + +#: src/fe-gtk/about.c:100 +msgid "About " +msgstr "_Acerca de" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Un cliente de IRC multiplataforma." + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Lista de caracteres" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "No conectado." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Debe seleccionar algún baneado" + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "¿Estás seguro que quieres quitar todos los baneos en %s?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Máscara" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "De" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Fecha" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Sólo puedes abrir la lista de bans mientras hay pestaña de canal." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: Lista de bans (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Quitar" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Achicar" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Refrescar" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Mostrando %d/%d usuarios en %d/%d canales." + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Seleccione un archivo de salida" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "_Unirse al Canal" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "_Copiar el Nombre del Canal" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "Copiar el texto del _tema" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: Lista de canales (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "_Buscar" + +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "_Descargar Lista" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "Guardar _Lista como..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "Mostrar solo:" + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "canales con" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "a" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "usuarios." + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "Buscar en:" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "Nombre del canal" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "Tipo de búsqueda:" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "Búsqueda Simple" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "Coincidencia de Patrones (Comodínes)" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "Expresión Regular" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Buscar:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Enviar archivo a %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Ese archivo no se puede retomar" + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"No se pudo acceder al archivo: %s\n" +"%s.\n" +"No es posible retomar." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"El archivo en el directorio de descarga es más grande que el archivo " +"afrecido. No es posible retomar." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "No se puede retomar el mismo archivo de dos personas." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: Subidas y Descargas" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Estado" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Archivo" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "Tiempo" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Ambos" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Subidos" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "Descargas" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Detalles" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Archivo:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "Dirección:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Abortar" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Aceptar" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Continuar" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Abrir carpeta..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: Lista de conversación DCC" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Recibido" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Enviado" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "Hora de Inicio" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*NUEVO*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "EDÍTAME" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Nombre" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Comando" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Subir" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Bajar" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Cancelar" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Guardar" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Agregar nuevo" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Borrar" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Ordenar" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Ayuda" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "No reconectarse al servidor automáticamente" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "usar un directorio de configuración diferente" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "No activar automáticamente ningún complemento" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "Mostrar complemento autocargar directorio" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "Mostrar directorio de configuración de usuario" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Abrir una URL irc://server:port/channel" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Ejecutar orden:" + +#: src/fe-gtk/fe-gtk.c:132 +msgid "Open URL or execute command in an existing XChat" +msgstr "Abre una URL o ejecuta un comando en un XChat abierto." + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Lanzar minimizado. Nivel 0=Normal 1=Iconificado 2=Bandeja del Sistema" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "nivel" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Mostrar información de la versión" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"ha fallado la apertura de la tipografía:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "El buffer de búsqueda esta vacio.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d bytes" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Cola de espera de envío de red: %d bytes" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"La acción ^BRun Command^B ejecuta los datos en Data 1 como si hubiesen sido " +"escritos en la caja de texto donde presionó la secuencia de teclas. No " +"obstante puede contener comandos de texto (los cuales serán enviados al " +"canal o persona), o comandos de usuario. Cuando se ejecuten todos los " +"caracteres en Data 1 son usados para delimitar comandos separados de ese " +"modo es posible ejecutar más de un comando. Si quiere un \\ en el texto de " +"ejecución actual ejecutelo y luego presione Intro \\\\" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"El comando ^BChange Page^B cambia entre las paginas del bloc de notas. " +"Inicialice Data 1 con la página a la que desea cambiar. Si Data 2 está " +"configurado para cualquiera entonces el cambio será relativo a la posición " +"actual." + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"El comando ^BInsert in Buffer^B insertará el contenido de Data 1 en la " +"entrada donde la secuencia de teclas fué presionada en la posición actual " +"del cursor" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"El comando ^BScroll Page^B desplaza el control de texto hacia arriba o abajo " +"un página. Si Data 1 esta configurado como cualquiera la página se " +"desplazará hacia arriba, sino se desplazará hacia abajo." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"El comando ^BSet Buffer^B establece la entrada donde la secuencia de teclas " +"fué introducida a los contenidos de Data 1" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"El comando ^BLast Command^B establece la entrada para contener el último " +"comando ingresado al igual que presionar la tecla arriba en la línea de " +"comandos" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"El comando ^BNext Command^B establece la entrada para que contenga el " +"siguiente comando ingresado al igual que al presionar la tecla abajo en la " +"línea de comandos" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Este comando cambia el texto en la entrada para completar un pseudónimo " +"incompleto o un comando. Si Data 1 esta establecido entonces al presionar " +"dos veces la tecla TAB sobre una cadena seleccionará el último pseudónimo, " +"no el siguiente." + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Este comando desplaza hacia arriba y abajo la lista de pseudónimos. Si Data " +"1 esta establecido a cualquiera entonces se desplazará hacia arriba, sino se " +"desplazará hacia abajo" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Este comando comprueba la última palabra introducida en la entrada contra la " +"lista de reemplazos y la reemplaza si encuentra una coincidencia" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Este comando mueve una vez la solapa superior hacia la izquierda" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Este comando mueve una posición la solapa superior hacia la derecha" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Este comando mueve la familia actual de solapas hacia la izquierda" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Este comando mueve la familia actual de solapas hacia la izquierda" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "" +"Colocar la linea de entrada en el historial pero sin enviarla al servidor" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "" +"Ha ocurrido un error cargando la configuración de las combinaciones de teclas" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<ninguno>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Mod" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Tecla" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Acción" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: atajos de teclado" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Data 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Data 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Error al abrir el archivo de configuración de teclas\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Nombre de tecla desconocido %s en el archivo de configuración de " +"combinaciones de teclas\n" +"Carga abortada, por favor corrija %s/.xchat/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Acción desconocida %s en el archivo de configuración de combinaciones de " +"teclas\n" +"Carga abortada, por favor corrija %s/.xchat/keybindings\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Se esperaba una linea de datos (comenzando con Dx{:|!}) pero se obtuvo:\n" +"%s\n" +"\n" +"Carga abortada, por favor corrija %s/.xchat/keybindings\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"El archivo de configuración de las combinaciones de teclas está corrupto, " +"carga abortada\n" +"Por favor, corrija %s/.xchat/keybindings.conf\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "No se puede escribir hacia ese archivo." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "No se puede leer ese archivo." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Esa máscara ya existe." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Privado" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Noticia" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Invitar" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "No ignorar" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Introduzca la máscara que quiere ignorar:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: Lista de ignorados" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Estadísticas de ignorados:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Canal:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privado:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Noticia:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Invitar:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "Añadir..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "Nombre de canal muy corto, intente de nuevo." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: Conexión completa" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "Conexión a %s completa." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"En la ventana de lista de servidores, no se ha ingresado un canal (chat " +"room) para unirse a él en esta red." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "¿Qué desea hacer después?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "_Nada, me uniré a un canal después." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "Entrar a este canal:" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Si conoce el nombre del canal al que se desea unir, escribalo aquí." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "Abrir la ventana de lista de canales." + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "Recuperando la lista de canales, puede tomar un minuto o dos." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "Siempre mostrar este diálogo después de la conexión." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Diálogo con" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Topic para %s es: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "No está definido ningun topic" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"Este servidor aún tiene %d canales o diálogos asociados con él. ¿Desea " +"cerrarlos todos?" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "¿Salir de XChat?" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "No preguntar la próxima vez." + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Estás conectado a %i redes IRC" + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "¿Estás seguro que quieres salir?" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "Algunas transferencias de ficheros aún estan activas." + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "_Minimizar a la bandeja" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Insertar atributo o código de color" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Negrita</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Subrayado</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Normal" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Colores 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Colores 8-15" + +#: src/fe-gtk/maingui.c:1612 +msgid "_Settings" +msgstr "Pr_opiedades" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "_Registrar al disco" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "Recar_gar el registro de mensajes" + +#: src/fe-gtk/maingui.c:1617 +msgid "_Hide Join/Part Messages" +msgstr "_Ocultar mensajes de entrada/salida de usuarios." + +#: src/fe-gtk/maingui.c:1625 +msgid "_Extra Alerts" +msgstr "Alertas _Extra" + +#: src/fe-gtk/maingui.c:1627 +msgid "Beep on _Message" +msgstr "Emitir sonido al recibir un mensaje" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "Pestañear el ícono de la bandeja del sistema" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "Pestañear la _Bandeja de Tareas" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +msgid "_Detach" +msgstr "_Separar" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "_Cerrar" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "¡El límite de usuarios debe ser un número!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Protección del topic" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "No hay mensajes externos" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Secreto" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Sólo para invitados" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Moderado" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Lista de prohibidos" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Palabra clave" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Límite de usuarios" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Mostrar/Ocultar la lista de usuarios" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"¡Imposible establecer el fondo transparente!\n" +"\n" +"Puede estar usando un gestor de ventanas \n" +"que no está soportado actualmente.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Ingrese el pseudónimo nuevo:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Equipo desconocido" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Nombre real:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Usuario:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "País:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Servidor:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "hace %u minutos" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Último mensaje:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Mensaje de ausencia:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "%d pseudónimos seleccionados." + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"La barra de menú ahora está oculta. Puede mostrarla otra vez presionando F9 " +"o pulsando el botón derecho en una parte en blanco de área de texto " +"principal." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Abrir enlace en el navegador" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Copiar URL seleccionada" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Entrar al canal" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Invitar Canal" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Ciclar canal" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "_Eliminar de Favoritos" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "_Añadir a Favoritos" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: Menú de usuario" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Editar este menú..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Recuperar lista de canales..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Comandos de usuario - Códigos especiales:\n" +"\n" +"%c = canal actual\n" +"%e = nombre de la red actual\n" +"%m = información de la máquina\n" +"%n = su pseudónimo\n" +"%t = hora/fecha\n" +"%v = versión de xchat\n" +"%2 = palabra 2\n" +"%3 = palabra 3\n" +"&2 = palabra 2 hasta el fin de línea\n" +"&3 = palabra 3 hasta el fin de línea\n" +"\n" +"ejemplo:\n" +"/cmd john hello\n" +"\n" +"%2 podría ser \"john\"\n" +"&2 podría ser \"john hello\"." + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Botones de la lista de usuarios - Códigos especiales:\n" +"\n" +"%a = todos los pseudónimos seleccionados\n" +"%c = canal actual\n" +"%e = nombre de la red actual\n" +"%h = nombre del equipo del pseudónimo seleccionado\n" +"%m = información de la maquina\n" +"%n = su pseudónimo\n" +"%s = pseudónimo seleccionado\n" +"%t = hora/fecha\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Botones del dialogo - Códigos especiales:\n" +"\n" +"%a = todos los pseudónimos seleccionados\n" +"%c = canal actual\n" +"%e = nombre de la red actual\n" +"%h = nombre del equipo del pseudónimo seleccionado\n" +"%m = información de la maquina\n" +"%n = su pseudónimo\n" +"%s = pseudónimo seleccionado\n" +"%t = hora/fecha\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"Respuestas CTCP -Códigos especiales:\n" +"\n" +"%d = datos (el ctcp completo)\n" +"%e = nombre de la red actual\n" +"%m = información de la máquina\n" +"%s = pseudónimo de quien envió el ctcp\n" +"%t = hora/fecha\n" +"%2 = palabra 2\n" +"%3 = palabra 3\n" +"&2 = palabra 2 hasta el final de la línea\n" +"&3 = palabra 3 hasta el final de la línea\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"Manejadores de URL - Códigos especiales:\n" +"\n" +"%s = La cadena de la URL\n" +"\n" +"Poner un ! enfrente del comando indica \n" +"que debería ser enviado hacia un shell \n" +"en vez de hacia XChat" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: Órdenes definidas por el usuario" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: Menú emergente de la lista de usuarios" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Reemplazar con" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: Reemplazar" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: Manejadores de URL" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: Botones de la lista de usuarios" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: Botones de diálogo" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: Respuestas CTCP" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "Li_sta de Redes..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "_Nuevo" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Solapa de servidor..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Solapa de canal..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Ventana de servidor..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Ventana de canal..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "Cargar guión o complemento..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "_Salir" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "_Ver" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "Barra de _Menús" + +#: src/fe-gtk/menu.c:1592 +msgid "_Topic Bar" +msgstr "Barra del _Tema" + +#: src/fe-gtk/menu.c:1593 +msgid "_User List" +msgstr "Lista de_Usuarios" + +#: src/fe-gtk/menu.c:1594 +msgid "U_serlist Buttons" +msgstr "Botones de la Lista de U_suarios" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "Botones del modo del canal" + +#: src/fe-gtk/menu.c:1597 +msgid "_Channel Switcher" +msgstr "Conmutador de _Canales" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "Solapas" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "Árbol" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "_Medidores de tráfico de Red" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Apagar" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Gráfico" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "_Servidor" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "_Desconectar" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "_Reconectar" + +#: src/fe-gtk/menu.c:1613 +msgid "Join a Channel..." +msgstr "Unirse a un Canal..." + +#: src/fe-gtk/menu.c:1614 +msgid "List of Channels..." +msgstr "Lista de Canales..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Ausencia marcada" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "Menú de usuario" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "C_onfiguración" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "_Preferencias" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Avanzado" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Reemplazar automáticamente.." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "Respuestas CTCP..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Botones de diálogo..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Atajos de teclado..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Textos de eventos..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "Manejadores de URL..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Órdenes de usuario..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Botones de lista de usuarios..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Ventana de lista de usuarios..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_Ventana" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Lista de bans..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Lista de caracteres..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Charla directa..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Transferencias de archivos..." + +#: src/fe-gtk/menu.c:1641 +msgid "Friends List..." +msgstr "Lista de Amigos..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Lista de ignorados..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Complementos y guiones..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Registro plano..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "Capturador de URL..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Reiniciar la línea de marcado" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "_Limpiar texto" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Buscar texto..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Guardar texto..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "A_yuda" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "_Contenidos" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "Comprobar actualizaciones" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "_Acerca de" + +#: src/fe-gtk/menu.c:2147 +msgid "_Attach" +msgstr "_Adjuntar" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Visto por última vez" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Desconectado" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Nunca" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "hace %d minutos" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Conectado" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Introduzica el pseudónimo a añadir:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "Notificaciones en estas redes:" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "Se acepta una lista de redes separadas por comas." + +#: src/fe-gtk/notifygui.c:413 +msgid "XChat: Friends List" +msgstr "XChat: Lista de Amigos" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "Abrir una ventana de diálogo" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" +"No se puede encontrar 'notify-send' para abrir alertas de globo.\n" +"Por favor installe libnotify." + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "XChat: Conectado a %u redes y %u canales." + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "_Restaurar" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "Ocul_tar" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "_Pestañear para" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "Mensaje al Canal" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "Mensajes Privados" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "Mensaje Resaltado" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "_Cambiar estado" + +#: src/fe-gtk/plugin-tray.c:602 +msgid "_Away" +msgstr "_Ausente" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "_Disponible" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat: Mensaje resaltado de: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat: %u mensajes resaltados, el último de: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat: Nuevo mensaje público de: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat: %u mensajes públicos nuevos." + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat: Mensaje privado de: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "XChat: %u mensajes privados, el último de: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat; Fichero ofrecido por: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "XChat: %u ficheros ofrecidos, el último por %s (%s)" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Versión" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Descripción" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Seleccione una extensión o guión a cargar" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: complementos y guiones" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "_Cargar..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "_Desactivar" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Guardar como..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: Registro plano (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Limpiar registro plano" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "La ventana que ha abierto esta búsqueda no existe mas." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "Terminó la búsqueda, no se encontró." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: Buscar" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "_Coincidir mayúsculas" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "_Buscar hacia atrás" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "Buscar" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Nueva red" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "¿Realmente desea eliminar la red \"%s\" y todos sus servidores?" + +#: src/fe-gtk/servlistgui.c:740 +msgid "#channel" +msgstr "#canal" + +#: src/fe-gtk/servlistgui.c:850 +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: Lista de canales Favoritos (Lista de entrada automática)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "Cuando te conectes a %s te unirás a estos canales." + +#: src/fe-gtk/servlistgui.c:906 +msgid "Key (Password)" +msgstr "Llave (Contraseña)" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "_Editar" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "%s ha sido suprimido." + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "%s ha sido añadido." + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "EL nombre y el nombre real no pueden estar en blanco." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: Editar %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Servidores para %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Conectar únicamente al servidor seleccionado" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "No recorrer todos los servidores cuando la conexión falle." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Sus datos" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Usar información global de usuario" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "Apodo:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Segunda opción:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "Nombre de _usuario:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "Nombre rea_l:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Conectando" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Conectarse automáticamente al inicio" + +#: src/fe-gtk/servlistgui.c:1462 +msgid "Bypass proxy server" +msgstr "Saltarse las restricciones del servidor proxy" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "Usar SSL con todos los servidores de esta red" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Aceptar certificado inválido" + +#: src/fe-gtk/servlistgui.c:1475 +msgid "_Favorite channels:" +msgstr "Canales _Favoritos:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "Canales a los que entrar, separados por comas, ¡no por espacios!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Orden de conexión:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Orden extra para ejecutar después de conectarse. Si necesita más de una, " +"póngala como «LOAD -e <nombrearchivo>», donde <nombrearchivo> es un archivo " +"de texto con ordenes a ejecutar." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Contraseña del «nickserv»:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Si su pseudónimo requiere contraseña, ingrésela aquí. No todas las redes IRC " +"soportan esta característica." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Contraseña del servidor:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Contraseña para el servidor. En caso de duda, dejar en blanco." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Juego de caracteres:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: Lista de Redes" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Información sobre usuario" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Tercera opción:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Redes" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "No mostrar la lista de redes al iniciar el programa" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "_Editar..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "Ordenar" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" +"Ordena la lista de redes en orden alfabético. Usa las teclas SHIFT-ARRIBA y " +"SHIFT-ABAJO para mover una fila." + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "C_onectar" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Apariencia" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Tipografía:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Imagen de fondo:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Líneas de desplazamiento:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Apodos coloreados" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Dar a cada persona en el IRC un color diferente" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Indentar pseudónimos" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Justificar los pseudónimos a la derecha." + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Fondo transparente" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Mostrar señalador" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Insertar una línea roja después del último texto leído" + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Configuración de trasparencia" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Rojo:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Verde:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Azul:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Marcas de fecha/hora" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Habilitar marcas de hora" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Formato de inserción de hora:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Vea la página del manual de strftime para obtener más detalles." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "Última persona que habló" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Caja de entrada" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Usar la tipografía y colores de la caja de texto" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Corrección ortográfica" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Completar pseudónimo" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "Completar pseudónimo automáticamente (sin TAB)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Sufijo al completar el pseudónimo:" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "Orden para el autocompletado de pseudónimos:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Caja de entrada" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Interpretar %nnn como un valor ASCII" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Interpretar %C, %B como Color, Negrita etc" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, Operadores primero" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, Operadores últimos" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Desordenada" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "Izquierda (Arriba)" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "Izquierda (Abajo)" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "Derecha (Arriba)" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "Derecha (Abajo)" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Arriba" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Abajo" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Oculto" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Lista de usuarios" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Mostrar equipos en la lista de usuarios" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Lista de usuarios ordenada por:" + +#: src/fe-gtk/setup.c:205 +msgid "Show user list at:" +msgstr "Mostrar la lista de usuarios en:" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Razón de ausencia" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "" +"Seguir el estado de ausencia de usuarios y marcarlos en un color diferente" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "En canales más pequeños que:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Comportamiento del doble clic" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Ventanas" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Solapas" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Siempre" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Solo solapas solicitadas" + +#: src/fe-gtk/setup.c:242 +msgid "Tree" +msgstr "Árbol" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "Tipo de conmutador:" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Abrir solapa extra para los mensajes del servidor" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Abrir solapa extra para las noticias del servidor" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "Abrir una nueva pestaña cuando recibas un mensaje privado" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Ordenar solapas alfabéticamente" + +#: src/fe-gtk/setup.c:254 +msgid "Smaller text" +msgstr "Texto pequeño" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Centrarse en nuevas solapas:" + +#: src/fe-gtk/setup.c:258 +msgid "Show channel switcher at:" +msgstr "Mostrar el conmutador de canales a la:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Reducir solapas a:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "letras." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Ventana del último registro" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Abrir canales en:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Abrir diálogos en:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Abrir utilidades en:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "¿Abrir DCC, Ignorar, Notificar etc en solapas o en ventanas?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "No" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Sí" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "Elegir carpeta destino cada vez" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Archivos y directorios" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Aceptar archivos automáticamente:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Descargar archivos en:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Mover archivos completados a:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Guardar el pseudónimo en los nombres de archivos" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Configuración de red" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Obtener mi IP del servidor IRC" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Pregunta su dirección real al servidor IRC. ¡Úselo si tiene una dirección " +"del tipo 192.168.*.*!" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "Dirección IP DCC:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Pretender estar en esta dirección cuando esta ofreciendo archivos." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Primer puerto de envío DCC:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Último puerto de envío DCC:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!Dejar los puertos en cero para el rango completo." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Velocidad máxima de transferencia de archivos (B/s)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Una subida:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Velocidad máx. para una transferencia" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Una descarga" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Todas las subidas combinadas:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Velocidad máx. para todo el tráfico" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Todas las descargas combinadas:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Alertas" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "Mostrar globos de la bandeja del sistema para:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "Pestañear el icono de la bandeja del sistema para:" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "Pestañea la barra de tareas para:" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "Emitir un sonido para:" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "Habilita el ícono de la bandeja del sistema" + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "Mensajes Resaltados" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" +"Los mensajes resaltados son aquellos donde tu pseudónimo es mencionado, pero " +"tambien:" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "Palabras adicionales para resaltar:" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "Pseudónimos no resaltados" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "Pseudónimos resaltados:" + +#: src/fe-gtk/setup.c:347 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" +"Separar palabras múltiples con comas.\n" +"Se permiten comodines." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Mensajes predeterminados:" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Salir:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Abandonar canal:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Ausente:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Ausente" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Anunciar mensajes de ausencia" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Anunciar sus mensajes ausencia a todos los canales" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Mostrar fuera de linea (away) sólo una vez" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Mostrar mensajes idénticos de ausencia sólo una vez" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Desmarcar ausencia automáticamente" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Desmarcarse como ausente antes de enviar mensajes" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Configuración avanzada" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Retraso de reconexión automática:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Mostrar los MODOs en forma plana" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Ejecutar Whois en las notificaciones" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" +"Envía un /WHOIS cuando un usuario de la lista de notificaciones se conecta" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Ocultar mensajes de entrar/marchar" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Ocultar mensajes de entrar/marcharse del canal por defecto" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Abrir las ventanas de diálogo automáticamente" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Ventana de envío" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Ventana de recepción" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Ventana de canal" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Registros" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "Mostrar el registro de la sesión anterior" + +#: src/fe-gtk/setup.c:387 +msgid "Enable logging of conversations to disk" +msgstr "Habilitar el registro de conversaciones al disco" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Nombre de archivo de registro:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "(%s=Servidor %c=Canal %n=Red)." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Insertar marcas de fecha/hora en los registros" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Formato de fecha/hora para el registro:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Deshabilitado)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Todas las conexiones" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "Sólo Servidor IRC" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "Sólo para recepción por DCC" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Su dirección" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Asociar a:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "Sólo es útil para computadoras con direcciones múltiples." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Servidor proxy" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Nombre de equipo:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Puerto:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Tipo:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Usar un servidor proxy para:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Autenticación en el servidor proxy" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Usar autenticación (sólo HTTP, MS Proxy o Socks5)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Usar autenticación (solo HTTP o Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Nombre de usuario:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Contraseña:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Seleccione un archivo de imagen" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "Seleccionar carpeta de descargas" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Seleccionar tipografía" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Buscar..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Marcar usuarios identificados con:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Marcar usuarios no identificados con:" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "Abrir carpeta de registros..." + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Seleccionar color" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Colores de texto" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "Colores de mIRC:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Colores locales:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Primer plano:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Fondo:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Texto marcado" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Colores de la interfaz" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Dato nuevo:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Línea de señalador:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Mensaje nuevo:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Usuario ausente:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Resaltar:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Evento" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Archivo de sonido:" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Seleccione un archivo de sonido" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Método de reproducción de sonido:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "Programa externo de _reproducción de sonido:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "_Programa externo" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_Automática" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "_Carpeta de archivos de sonido:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Archivo de sonido:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "_Explorar..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "_Reproducir" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Interfaz" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Caja de texto" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Lista de usuarios" + +#: src/fe-gtk/setup.c:1703 +msgid "Channel switcher" +msgstr "Conmutador de Canales" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Colores" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Conversación" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "General" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Sonido" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Configuración de red" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Transferencias de archivos" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Categorías" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" +"¡No puedes poner el árbol al principio o al final!\n" +"Por favor cambia a la estructura en <b>Pestañas</b> en el menú <b>Ver</b> " +"primero." + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" +"Algunas opciones que han cambiado requieren un reinicio para tener efecto." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*ADVERTENCIA*\n" +"Aceptar automáticamente DCC hacia su directorio de inicio\n" +"puede ser peligroso y es explotable. Por ejemplo: Alguien \n" +"puede enviarle un archivo .bash_profile" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: Preferencias" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Ha ocurrido un error analizando la cadena" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Esta señal sólo ha pasado %d argumentos, $%d es inválido" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Imprimir archivos de textos" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Editar eventos" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ Número" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Cargar desde..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Probar todo" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: Capturador de URL" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Limpiar la lista" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Copiar URL seleccionada" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Copiar" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Guardar lista en un archivo." + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d ops, %d total" + +#~ msgid "About XChat" +#~ msgstr "Acerca de XChat" + +#~ msgid "C_hannels to join:" +#~ msgstr "Canales a los que unirse:" + +#, fuzzy +#~ msgid "Execute command" +#~ msgstr "Ejecutar orden:" + +#~ msgid "Direct client-to-client" +#~ msgstr "Cliente a cliente directamente" + +#~ msgid "Send File" +#~ msgstr "Enviar archivo" + +#~ msgid "Offer Chat" +#~ msgstr "Ofrecer charla" + +#~ msgid "Abort Chat" +#~ msgstr "Abortar la charla" + +#~ msgid "Userinfo" +#~ msgstr "Información del usuario" + +#~ msgid "Clientinfo" +#~ msgstr "Información del cliente" + +#~ msgid "Time" +#~ msgstr "Tiempo" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "Operador" + +#~ msgid "Kill this user" +#~ msgstr "Eliminar a este usuario" + +#~ msgid "Mode" +#~ msgstr "Modo" + +#~ msgid "Give Half-Ops" +#~ msgstr "Dar Op" + +#~ msgid "Take Half-Ops" +#~ msgstr "Tomar Op" + +#~ msgid "Ignore" +#~ msgstr "Ignorar" + +#~ msgid "Ignore User" +#~ msgstr "Ignorar usuario" + +#~ msgid "UnIgnore User" +#~ msgstr "No ignorar usario" + +#~ msgid "Info" +#~ msgstr "Info" + +#~ msgid "Who" +#~ msgstr "Who" + +#~ msgid "DNS Lookup" +#~ msgstr "Búsqueda DNS" + +#~ msgid "Trace" +#~ msgstr "Rastrear" + +#~ msgid "UserHost" +#~ msgstr "Máquina del usuario" + +#~ msgid "External" +#~ msgstr "Programas externos" + +#~ msgid "Traceroute" +#~ msgstr "Rastrear ruta" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#, fuzzy +#~ msgid "Blink tray on message" +#~ msgstr "Pitar al llegar mensaje" + +#~ msgid "Show join/part messages" +#~ msgstr "Mostrar mensajes de entrada/salida del canal" + +#~ msgid "Color paste" +#~ msgstr "Pegar color" + +#~ msgid "_Close Tab" +#~ msgstr "_Cerrar solapa" + +#~ msgid "Channel List..." +#~ msgstr "Lista de canales..." + +#~ msgid "Notify List..." +#~ msgstr "Lista de notificaciones..." + +#~ msgid "_Close Window" +#~ msgstr "_Cerrar ventana" + +#~ msgid "User" +#~ msgstr "Usuario" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: Lista de notificacines" + +#~ msgid "Unban" +#~ msgstr "Eliminar veto" + +#, fuzzy +#~ msgid "Channel Switcher" +#~ msgstr "canal" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "No hay mas solapas abiertas, ¿salir de xchat?" + +#~ msgid "_Layout" +#~ msgstr "_Disposición" + +#, fuzzy +#~ msgid "Quit..." +#~ msgstr "Salir:" + +#~ msgid "Resizable user list" +#~ msgstr "Lista de usuarios redimensionable" + +#~ msgid "Left" +#~ msgstr "Izquierda" + +#~ msgid "Right" +#~ msgstr "Derecha" + +#, fuzzy +#~ msgid "Above user list" +#~ msgstr "Lista de usuarios redimensionable" + +#~ msgid "US Minor Outlying Islands" +#~ msgstr "Islas Americanas Menores del Exterior" + +#, fuzzy +#~ msgid "File Offer" +#~ msgstr "Transferencias de archivos" + +#~ msgid "Flash taskbar on highlighted messages" +#~ msgstr "Iluminar barra de tareas en mensajes resaltados" + +#, fuzzy +#~ msgid "Flash taskbar on private messages" +#~ msgstr "Iluminar barra de tareas en mensajes resaltados" + +#~ msgid "Beep on highlighted messages" +#~ msgstr "Pitar en mensajes resaltados" + +#~ msgid "Beep on private messages" +#~ msgstr "Pitar en mensajes privados" + +#~ msgid "Beep on channel messages" +#~ msgstr "Pitar en mensajes de canal" + +#~ msgid "%C18*$t$1%O $2" +#~ msgstr "%C18*$t$1%O $2" + +#~ msgid "%C21*%O$t%C21%B$1%O%C21 $2" +#~ msgstr "%C21*%O$t%C21%B$1%O%C21 $2" + +#~ msgid "%C18%H<%H$4$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$4$1%H>%H%O$t$2" + +#~ msgid "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" +#~ msgstr "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" + +#~ msgid "%C28-%C29$1/$2%C28-%O$t$3" +#~ msgstr "%C28-%C29$1/$2%C28-%O$t$3" + +#~ msgid "$1$t$2" +#~ msgstr "$1$t$2" + +#~ msgid "%C19>%O$1%C19<%O$t$2" +#~ msgstr "%C19>%O$1%C19<%O$t$2" + +#~ msgid "%C16*%O$t$1%O" +#~ msgstr "%C16*%O$t$1%O" + +#~ msgid "%C28-%C29$1%C28-%O$t$2" +#~ msgstr "%C28-%C29$1%C28-%O$t$2" + +#~ msgid "%C28*%C29$3$1%C28*$t%O$2" +#~ msgstr "%C28*%C29$3$1%C28*$t%O$2" + +#~ msgid "%C18%H<%H$3$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$3$1%H>%H%O$t$2" + +#~ msgid "%C22*%O$t$1" +#~ msgstr "%C22*%O$t$1" + +#~ msgid "%C31%H<%H$4$1%H>%H%O%C30$t$2" +#~ msgstr "%C31%H<%H$4$1%H>%H%O%C30$t$2" + +#~ msgid "PID" +#~ msgstr "PID" + +#~ msgid "I can't save an empty list!" +#~ msgstr "¡No se puede guardar una lista vacia!" + +#~ msgid "List display options:" +#~ msgstr "Opciones para mostrar la lista:" + +#~ msgid "Minimum Users:" +#~ msgstr "Usuarios mínimos:" + +#~ msgid "Maximum Users:" +#~ msgstr "Usuarios máximos:" + +#~ msgid "Regex Match:" +#~ msgstr "Coincidir con exp. regular:" + +#~ msgid "Apply Match to:" +#~ msgstr "Aplicar coincidencia a:" + +#~ msgid "Apply" +#~ msgstr "Aplicar" + +#~ msgid "Refresh the list" +#~ msgstr "Refrescar la lista" + +#~ msgid "Save the list" +#~ msgstr "Guardar la lista" + +#~ msgid "None" +#~ msgstr "Ninguno" + +#~ msgid "To" +#~ msgstr "Para" + +#, fuzzy +#~ msgid "Started" +#~ msgstr "Iniciado" + +#, fuzzy +#~ msgid "Speed limit" +#~ msgstr "Limite de velocidad" + +#~ msgid "XChat: File Receive List" +#~ msgstr "XChat: Lista de recepción de archivos" + +#~ msgid "Open" +#~ msgstr "Abrir" + +#~ msgid "Ack" +#~ msgstr "Aceptado" + +#~ msgid "To/From" +#~ msgstr "Para/De" + +#~ msgid "Go to" +#~ msgstr "Ir a" + +#~ msgid "Server" +#~ msgstr "Servidor" + +#~ msgid "Tabs Location" +#~ msgstr "Solapas colocadas en:" + +#~ msgid "(Can be a text file relative to ~/.xchat2/)." +#~ msgstr "(Puede ser un archivo de texto relativo a ~/.xchat2/)." + +#~ msgid "(Can be a text file relative to config dir)." +#~ msgstr "" +#~ "(Puede ser un archivo de texto relativo al directorio de configuración)." + +#~ msgid "Open an irc:// url" +#~ msgstr "Abrir una url irc://" + +#~ msgid "irc://server:port/channel" +#~ msgstr "irc://servidor:puerto/canal" + +#~ msgid "Execute a xchat command" +#~ msgstr "Ejecutar una orden de xchat" + +#~ msgid "\"Command to execute\"" +#~ msgstr "\"Orden a ejecutar\"" + +#~ msgid "Prints some text to the current tab/window" +#~ msgstr "Imprime textos en la ventana/solapa actual" + +#~ msgid "\"Text to print\"" +#~ msgstr "\"Texto a imprimir\"" + +#~ msgid "Change the context to the channel" +#~ msgstr "Cambiar el contexto al canal" + +#~ msgid "Change the context to the server" +#~ msgstr "Cambiar el contexto al servidor" + +#~ msgid "server" +#~ msgstr "servidor" + +#~ msgid "Get some informations from xchat" +#~ msgstr "Obtener información desde xchat" + +#~ msgid "id" +#~ msgstr "id" + +#~ msgid "Get settings from xchat" +#~ msgstr "Obtener configuraciones de xchat" + +#~ msgid "name" +#~ msgstr "nombre" + +#~ msgid "" +#~ "xchat-remote: %s\n" +#~ "Try `xchat-remote --help' for more information\n" +#~ msgstr "" +#~ "xchat-remote: %s\n" +#~ "Intente `xchat-remote --help' para más información\n" + +#~ msgid "Failed to complete SetContext" +#~ msgstr "Imposible completar SetContext" + +#~ msgid "Failed to complete print" +#~ msgstr "Imposible completar la impresión" + +#~ msgid "Failed to complete GetInfo" +#~ msgstr "Imposible completar GetInfo" + +#~ msgid "Failed to complete GetPrefs" +#~ msgstr "Imposible completar GetPrefs" + +#~ msgid "%s doesn't exist\n" +#~ msgstr "no existe %s\n" + +#~ msgid "%s loaded successfully!\n" +#~ msgstr "%s se cargó exitosamente\n" + +#~ msgid "Add" +#~ msgstr "Agregar" + +#~ msgid "Convert spaces to underscore before sending" +#~ msgstr "Convertir espacios a guiones bajos" + +#~ msgid "France, Metropolitan" +#~ msgstr "Francia Metropolitana" + +#~ msgid "Neutral Zone" +#~ msgstr "Zona Neutral" + +#~ msgid "From:" +#~ msgstr "De:" + +#~ msgid "To:" +#~ msgstr "Para:" + +#~ msgid "Size:" +#~ msgstr "Tamaño:" + +#~ msgid "MIME Type" +#~ msgstr "Tipo MIME" + +#~ msgid "Settings saved." +#~ msgstr "Configuraciones guardadas." + +#~ msgid "Save rawlog" +#~ msgstr "Guardar registro plano" + +#~ msgid "Save rawlog..." +#~ msgstr "Guardar registro plano..." + +#~ msgid "XChat: Server List" +#~ msgstr "XChat: Lista de servidores" + +#~ msgid "Completes nick names without using the TAB key" +#~ msgstr "Completar pseudónimos sin usar el tabulador" + +#~ msgid "Input Box Appearance" +#~ msgstr "Apariencia" + +#~ msgid "(See strftime manpage for details)." +#~ msgstr "(Vea la página del manual de strftime para obtener mas detalles)." diff --git a/etc/wyatt8740/po/fi.po b/etc/wyatt8740/po/fi.po new file mode 100644 index 0000000..27c0aff --- /dev/null +++ b/etc/wyatt8740/po/fi.po @@ -0,0 +1,5699 @@ +# translation of xchat-2.8.4.po to finnish +# X-Chat Finnish translation. +# Copyright © 2001-2007 Gnome Finnish Translation Team. +# This file is distributed under the same license as the X-Chat package. +# +# Mika Laari <laari@iki.fi>, 2005-2007. +# Lauri Nurmi <lanurmi@iki.fi>, 2003-2004. +# Jarkko Ranta <jjranta@cc.joensuu.fi>, 2001-2002. +msgid "" +msgstr "" +"Project-Id-Version: xchat-2.8.4\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2007-06-27 20:53+0300\n" +"Last-Translator: Mika Laari <laari@iki.fi>\n" +"Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Hakemiston ~/.xchat2 luominen epäonnistui" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Olen kiireinen" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Lähdössä" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* IRCin ajaminen pääkäyttäjänä on typerää!\n" +" Luo tavallinen käyttäjätunnus ja kirjaudu sillä.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Odottaa" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Aktiivinen" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Epäonnistui" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Valmis" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Yhdistetty" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Keskeytetty" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "Tiedostoa %s ei voi käyttää\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Virhe" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s tarjoaa tiedostoa \"%s\". Hyväksytäänkö?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Ei aktiivisia DCC-yhteyksiä\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "JAA " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "EI " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "CTCP-tulva käyttäjältä %s, ei huomioida osoitetta %s\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "" +"Viestitulva käyttäjältä %s, poistetaan automaattinen keskustelunavaus " +"käytöstä.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-14s tavoitettavissa\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-14s tavoittamattomissa\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Millekään kanavalle ei ole liitytty. Kokeile /join #<kanava>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "" +"Mihinkään palvelimeen ei ole yhteyttä. Kokeile /server <isäntä> [<portti>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Merkitty jo poissaolevaksi: %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "Merkitty jo läsnäolevaksi.\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "Ajamiseen vaaditaan /bin/sh!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Käytettävissä olevat komennot:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Käyttäjän määrittelemät komennot:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Liitännäisten komennot:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Lisätietoja saat kirjoittamalla /HELP <komento> tai /HELP -l." + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Tuntematonta argumenttia \"%s\" ei huomioida." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "Liitännäistä ei löydy.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Liitännäinen ei suostu poistumaan käytöstä.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "" +"ADDBUTTON <nimi> <toiminto>, lisää painikkeen käyttäjäluettelon alapuolelle" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <komento>, lähettää komennon kaikille kanaville, joilla ollaan" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHANL <komento>, lähettää komennon kaikille kanaville, joilla olet." + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "" +"ALLSERV <komento>, lähettää komennon kaikille palvelimille, joilla ollaan" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<syy>], merkitsee poissaolevaksi" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "BACK, merkitsee läsnäolevaksi" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <peite> [<bannityyppi>], bannaa jokaisen peitteeseen täsmäävän käyttäjän " +"nykyiseltä kanavalta. Jos käyttäjät ovat jo kanavalla, tämä komento ei " +"potkaise heitä (vaatii opit)" + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <muuttuja> [<arvo>], asettaa muuttujan arvon." + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "" +"CLEAR [ALL|HISTORY], tyhjentää nykyisen teksti-ikkunan tai komentohistorian" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, sulkee nykyisen ikkunan/välilehden" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <koodi|jokeri>, etsii maakoodin, esim. au = Australia." + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <käyttäjä> <viesti>, lähettää CTCP-viestin käyttäjälle, yleiset viestit " +"ovat VERSION ja USERINFO" + +#: src/common/outbound.c:3516 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "CYCLE, poistuu nykyiseltä kanavalta ja palaa heti takaisin" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <kutsumanimi> - hyväksy tarjottu tiedosto\n" +"DCC SEND [-maxcps=#] <knimi> [tiedosto] - lähetä tiedosto jollekulle\n" +"DCC PSEND [-maxcps=#] <knimi> [tiedosto] - lähetä tiedosto " +"passiivitilaisena\n" +"DCC LIST - näytä DCC-luettelo\n" +"DCC CHAT <kutsumanimi> - ehdota DCC-keskustelua " +"jollekulle\n" +"DCC PCHAT <kutsumanimi> - ehdota DCC-keskustelua " +"passiivitilaisena\n" +"DCC CLOSE <tyyppi> <knimi> <tiedosto> - keskeytä DCC-siirto, " +"esimerkiksi:\n" +" /dcc close send jarkkoranta tiedosto.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <käyttäjä>, poistaa puoliopit käyttäjältä nykyisellä kanavalla (vaatii " +"opit)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <nimi>, poistaa painikkeen käyttäjäluettelon alta" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <käyttäjä>, poistaa opit käyttäjältä nykyisellä kanavalla (vaatii opit)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <käyttäjä>, poistaa puheoikeuden käyttäjältä nykyisellä kanavalla " +"(vaatii opit)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, Katkaisee yhteyden palvelimelle" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <käyttäjä|isäntä|ip>, etsii käyttäjän IP-osoitteen" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <teksti>, tulostaa tekstiä paikallisesti" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <komento>, ajaa komennon. Käytettäessä valitsinta -o tuloste " +"lähetetään nykyiselle kanavalle, muutoin nykyiseen ikkunaan" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, lähettää prosessille signaalin SIGCONT" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], tappaa nykyisestä istunnosta käynnistetyn ohjelman. " +"Käytettäessä valitsinta -9, prosessille lähetetään signaali SIGKILL" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, lähettää prosessille signaalin SIGSTOP" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, lähettää dataa prosessin vakiosyötteeseen" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, tyhjentää nykyisen palvelimen lähetysjonon" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" +"GATE <isäntä> [<portti>], käyttää isäntää välipalvelimena, oletusportti 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" +"GHOST <kutsumanimi> <salasana>, poistaa kummittelemaan jääneen kutsumanimen" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <käyttäjä>, antaa puoliopit käyttäjälle (vaatii opit)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <salasana>, tunnistautuu NickServ-palvelulle." + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <peite> <tyypit..> <valitsimet..>\n" +" peite - peite, jonka mukaan jätetään huomiotta, esim: *!*@*.aol.com\n" +" tyypit - viestityypit, jotka jätetään huomiotta, yksi tai useampi:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" valitsimet - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <käyttäjä> [<kanava>], kutsuu käyttäjän kanavalle, oletuksena " +"nykyiselle (vaatii opit)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <kanava>, liittyy kanavalle" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <käyttäjä>, potkaisee käyttäjän nykyiseltä kanavalta (vaatii opit)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <käyttäjä>, bannaa ja potkaisee käyttäjän nykyiseltä kanavalta " +"(vaatii opit)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, pakottaa uuden viivetarkistuksen" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <merkkijono>, etsii merkkijonoa puskurista" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <tiedosto>, lataa liitännäisen tai komentotiedoston." + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, poistaa opit kaikilta nykyisen kanavan puoliopeilta (vaatii opit)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, poistaa opit kaikilta nykyisen kanavan opeilta (vaatii opit)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <toiminta>, lähettää toiminnan nykyiselle kanavalle (toiminnat " +"kirjoitetaan kolmannessa persoonassa, kuten /me hyppää)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, potkaisee kaikki muut kanavalta (vaatii opit)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, antaa kanavaoperaattorin oikeudet kanavan kaikille käyttäjille (vaatii " +"opit)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <käyttäjä> <viesti>, lähettää yksityisviestin" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, luettelee nykyisellä kanavalla olevat käyttäjät" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <käyttäjä> <viesti>, lähettää CTCP-tiedotteen" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <isäntä> [<portti>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <kutsumanimi>, asettaa oman kutsumanimesi" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <käyttäjä/kanava> <viesti>, lähettää tiedotteen. Tiedotteet ovat " +"viestejä, joihin tulee reagoida automaattisesti" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n verkko1[,verkko2]] [<kutsumanimi>], näyttää ilmoitusluettelon tai " +"lisää siihen jonkun" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" +"OP <käyttäjä>, antaa kanavaoperaattorin oikeudet käyttäjälle (vaatii opit)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<kanava>] [<syy>], poistuu kanavalta, oletuksena nykyiseltä" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <käyttäjä | kanava>, CTCP-pingaa käyttäjää tai kanavaa" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "" +"QUERY [-nofocus] <käyttäjä>, avaa uuden ikkunan kahdenkeskistä keskustelua " +"varten" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<syy>], katkaisee yhteyden nykyiseen palvelimeen" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <teksti>, lähettää tekstin raa'assa muodossa palvelimelle" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<isäntä>] [<portti>] [<salasana>], voidaan kutsua /" +"RECONNECT nykyiseen palvelimeen uudelleen yhdistämiseksi, tai /RECONNECT ALL " +"kaikkiin avoimiin palvelimiin uudelleen yhdistämiseksi" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<isäntä>] [<portti>] [<salasana>], voidaan kutsua /RECONNECT " +"nykyiseen palvelimeen uudelleen yhdistämiseksi, tai /RECONNECT ALL kaikkiin " +"avoimiin palvelimiin uudelleen yhdistämiseksi" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <teksti>, lähetä raakaa dataa xchatille, aivan kuin se olisi " +"vastaanotettu irc-palvelimelta" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <teksti>, lähettää tekstin nykyisen ikkunan kanavalle/henkilölle" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <käyttäjä> [<tiedosto>], lähettää käyttäjälle tiedoston" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <isäntä> <portti> <kanava>, yhdistää ja liittyy kanavalle" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <isäntä> <portti> <kanava>, yhdistää ja liittyy kanavalle" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <isäntä> [<portti>] [<salasana>], yhdistää palvelimelle, " +"oletusportti on 6667 tavanomaisille yhteyksille, 9999 ssl-yhteyksille" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <isäntä> [<portti>] [<salasana>], yhdistää palvelimelle, oletusportti " +"on 6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <muuttuja> [<arvo>], asettaa muuttujan arvon." + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<paikka>, asettaa kursorin haluttuun paikkaan." + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<aihe>], asettaa aiheen, jos se annetaan, muutoin näyttää nykyisen " +"aiheen" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" +"\n" +"TRAY -f <aika> <tied1> [<tied2>] Vuorottelee kahta kuvaketta " +"ilmoitusalueella (välkyttää).\n" +"TRAY -f <tiedostonimi> Muuttumaton kuvake ilmoitusalueelle.\n" +"TRAY -i <numero> Välkyttää sisäänrakennettua kuvaketta.\n" +"TRAY -t <teksti> Asettaa ilmoitusalueen vihjetekstin.\n" +"TRAY -b <otsikko> <teksti> Asettaa ilmoitusalueen puhekuplan tekstin." + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <peite> [<peite>...], poistaa annettujen peitteiden bannin." + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <peite> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <nimi>, poistaa käytöstä liitännäisen tai skriptin" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, avaa URLin selaimeen" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <nimi1> <nimi2> jne., valitsee nimet kanavan " +"käyttäjäluettelosta" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <käyttäjä>, antaa puheoikeuden käyttäjälle (vaatii opit)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <viesti>, kirjoittaa viestin kaikille kanaville" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <viesti>, lähettää viestin kaikille nykyisen kanavan opeille" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Käyttö: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"Komennolle ei ole saatavissa ohjetta.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Komentoa ei ole.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Virheelliset argumentit käyttäjäkomennolle.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Liian monta rekursiivista käyttäjäkomentoa, keskeytetään." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Tuntematon komento. Kokeile komentoa /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "" +"Symbolia xchat_plugin_init ei ole; onko tämä todella xchat-liitännäinen?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Onko tämä varmasti SSL:ää tukeva palvelin ja portti?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Isäntänimen %s selvitys ei onnistu\n" +"Tarkista IP-asetukset!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Välipalvelimen kauttakulku epäonnistui.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Siirrytään seuraavalle %s-verkon palvelimelle...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Varoitus: merkistö \"%s\" on tuntematon. Verkossa %s ei käytetä mitään " +"muunnosta." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 lisättiin ilmoitusluetteloon." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Banniluettelo: %C19$4 %C20$2 %C21$3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tEi voi liittyä kanavalle %C26%B$1%O (sinut on bannattu)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t%C26$1%O tunnetaan nyt nimellä %C26$2%O." + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 asettaa bannin $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tKanava $1 luotu $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "" +"%C22*%O$t%C26$1%O poistaa puolioperaattorin oikeudet käyttäjältä %C26$2%O." + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "" +"%C22*%O$t%C26$1%O poistaa kanavaoperaattorin oikeudet käyttäjältä %C26$2%O." + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O poistaa puheoikeuden käyttäjältä %C26$2%O." + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 asettaa erivapauden $2." + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "" +"%C22*%O$t%C26$1%O antaa puolioperaattorin oikeudet käyttäjälle %C26$2%O." + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t%C26$1%O asettaa kutsun käyttäjälle %C26$2%O." + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UKanava Käyttäjät Aihe%O" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t%C26$1%O asettaa tilan $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Kanavan $1 tilat: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "" +"%C22*%O$t%C26$1%O antaa kanavaoperaattorin oikeudet käyttäjälle %C26$2%O." + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t%C26$1%O poistaa erivapauden $2." + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t%C26$1%O poistaa kutsun $2." + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t%C26$1%O poistaa kanavan tunnussanan." + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t%C26$1%O poistaa käyttäjärajan." + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t%C26$1%O asettaa kanavan tunnussanaksi %C26$2%O." + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t%C26$1%O asettaa kanavan käyttäjärajaksi $2." + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t%C26$1%O poistaa bannin $2." + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O antaa puheoikeuden käyttäjälle %C26$2%O." + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Yhdistetty. Kirjaudutaan sisään..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22Yhdistetään palvelimelle $1 ($2) porttiin $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21Yhdistäminen epäonnistui. Virhe: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tVastaanotettiin CTCP $1 käyttäjältä $2." + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tVastaanotettiin CTCP $1 käyttäjältä $2 (kanavalle $3)." + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tVastaanotettiin CTCP-ääni $1 käyttäjältä $2." + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tVastaanotettiin CTCP-ääni $1 käyttäjältä $2 (kanavalle $3)." + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tDCC-keskustelu käyttäjän %C26$1%O kanssa keskeytetty." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "" +"%C22*%O$tDCC-keskustelu avattu käyttäjän %C26$1%O kanssa. %C14[%O$2%C14]%O" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tDCC-keskustelu käyttäjän %C26$1%O kanssa katkesi. ($4.)" + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tKäyttäjä %C26$1%O ehdottaa DCC-keskustelua." + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tEhdotetaan DCC-keskustelua käyttäjälle %C26$1%O." + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tDCC-keskustelua on jo ehdotettu käyttäjälle %C26$1%O." + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$tDCC $1 -yhteyttä ei saatu käyttäjään %C26$2%O (virhe=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tVastaanotettiin \"$1%O\" käyttäjältä %C26$2%O." + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18Tyyppi Vastapää Tila Koko Paikka Tiedosto " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O." +"%010%C22*%O$tContents of packet: $2" +msgstr "" +"%C22*%O$tKäyttäjä %C26$1%O lähetti epäkelvon DCC-pyynnön." +"%010%C22*%O$tPaketin sisältö: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tTarjotaan tiedostoa %C26$1%O käyttäjälle %C26$2%O." + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tTuollaista DCC-lähetystä ei ole tarjottu." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV %C26$2%O käyttäjältä %C26$1%O keskeytetty." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC RECV %C26$1%O käyttäjältä %C26$3%O valmis %C30[%C26$4%O t/" +"s%C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "" +"%C22*%O$tDCC RECV -yhteys muodostettu käyttäjään %C26$1 %C30[%O$2%C30]%O." + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV %C26$1%O käyttäjältä %C26$3%O epäonnistui. ($4.)" + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV: Tiedostoon %C26$1%O ei voi kirjoittaa ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "" +"%C22*%O$tTiedosto %C26$1%O on jo olemassa, joten tallenetaan nimellä " +"%C26$2%O." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "" +"%C22*%O$t%C26$1%O pyytää jatkamaan tiedoston %C26$2%O siirtoa kohdasta " +"%C26$3%O." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC SEND %C26$2%O käyttäjälle %C26$1%O keskeytetty." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC SEND %C26$1%O käyttäjälle %C26$2%O valmis %C30[%C26$3%O t/" +"s%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "" +"%C22*%O$tDCC SEND -yhteys muodostettu käyttäjään %C26$1 %C30[%O$2%C30]%O." + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND %C26$1%O käyttäjälle %C26$2%O epäonnistui. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1%O tarjoaa tiedostoa %C26$2%O (%C26$3%O tavua)." + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "" +"%C22*%O$tDCC $1 %C26$2%O käyttäjälle %C26$3%O pysähtynyt - keskeytetään." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "" +"%C22*%O$tDCC $1 %C26$2%O käyttäjälle %C26$3%O aikakatkaistu - keskeytetään." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 poistettu ilmoitusluettelosta." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tYhteys katkaistu ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tOma IP löytyi: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O lisätty huomioimattomuusluetteloon." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "Huomioimattomuutta %C26$1%O muutettu." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,28 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 Isännän peite PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O poistettu huomioimattomuusluettelosta." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " Huomioimattomuusluettelo on tyhjä." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "%C22*%O$tKanavalle %C26%B$1%O ei voi liittyä (vain kutsutuille)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$t%C26$2%O kutsuu sinut kanavalle %C26$1%O (%C26$3%O)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1%B ($3) liittyi kanavalle $2." + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$tKanavalle %C26%B$1%O ei voi liittyä (vaatii tunnussanan)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 potkaisi käyttäjän $2 kanavalta $3 ($4%O%C21)." + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$t$1 ($2%O) tappoi sinut." + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD ohitettu." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 on jo käytössä. Kokeillaan kutsumanimeä $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$tKutsumanimi on jo käytössä. Kokeile jotain muuta komennolla /NICK." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tTuollaista DCC:tä ei ole." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tProsesseja ei ole käynnissä." + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tIlmoitusluettelo on tyhjä." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Ilmoitusluettelo " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$tIlmoitusluettelossa on $1 käyttäjä(ä)." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tIlmoitus: $1 on tavoittamattomissa ($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tIlmoitus: $1 on tavoitettavissa ($3)." + +# Miksi koodit %O%C23 ovat peräkkäin? +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 ($2) poistui kanavalta $3." + +# %O%C23 kaiketi peruuttaa muuttujista tulleet (väri)koodit, mutta miksi %B%B? +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1%O%C23 ($2) poistui kanavalta $3%O%C23 (%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tPing-vastaus käyttäjältä $1: $2 sekunti(a)." + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tPingiin ei ole vastattu $1 sekuntiin, katkaistaan yhteys." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tProsessi on jo käynnissä." + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 lopetti ($2%O%C23)." + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 asettaa tilat %B%C30[%O$2%B%C30]." + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tEtsitään IP-osoitetta nimelle %C26$1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$tYhdistetty." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$tEtsitään osoitetta %C26$1%C..." + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tPysäytettiin edellinen yhteysyritys (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29Kanavan $1%C %C29aihe on: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 vaihtoi aiheeksi: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29Aiheen kanavalle $1%C %C29on asettanut $2%C %C29$3." + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tTuntematon isäntä. Onkohan se kirjoitettu väärin?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "" +"%C22*%O$tKanavalle %C26%B$1%O ei voi liittyä (Käyttäjäraja saavutettu)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Käyttäjät kanavalla $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2 %C27$3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28]%C on poissa %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28]%O WHOIS-luettelon loppu." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O jouten %C26$2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O jouten %C26$2%O, kirjautunut: %C26$3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" +"%C22*%O$t%C28[%O$1%C28]%O todellinen käyttäjä@isäntä %C27$2%O, todellinen IP " +"%C27$3." + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Puhut nyt kanavalla $2." + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$t$3 potkaisi sinut kanavalta $2 ($4%O%C23)." + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tPoistuit kanavalta $3." + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tPoistuit kanavalta $3%O%C23 ($4%O%C23)." + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tKutsut käyttäjää %C26$1%O kanavalle %C26$2%O (%C26$3%O)." + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tKutsumanimesi on nyt $2." + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "Loki luettiin tiedostosta" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** LOKIKIRJOITUS LOPPUU %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** LOKIKIRJOITUS ALKAA %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Lokitiedosto(j)a ei voi avata kirjoitusta varten.\n" +" Tarkista oikeudet hakemistossa %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Vasen viesti" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Oikea viesti" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "Liittyvän henkilön kutsumanimi" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "Kanava, jolle liitytään" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "Henkilön isäntänimi" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Kutsumanimi" + +#: src/common/text.c:973 +msgid "The action" +msgstr "Toiminto" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Tilamerkki" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Korostettava teksti" + +#: src/common/text.c:980 +msgid "The text" +msgstr "Teksti" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Viesti" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Vanha kutsumanimi" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Uusi kutsumanimi" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Aihetta muuttaneen henkilön kutsumanimi" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Aihe" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Kanava" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "Potkaisijan kutsumanimi" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "Potkaistava henkilö" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "Kanava" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "Syy" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "Poistuvan henkilön kutsumanimi" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "Aika" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "Luoja" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Kutsumanimi" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Syy" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Isäntä" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "Keneltä se on" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "Aika x.x-muodossa (katso alta)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "Kanava, jolle se on menossa" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "Ääni" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "Henkilön kutsumanimi" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "CTCP-tapahtuma" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "Tunnussanan asettaneen henkilön kutsumanimi" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "Tunnussana" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "Rajan asettaneen henkilön kutsumanimi" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "Raja" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "Opit antaneen henkilön kutsumanimi" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "Opit saaneen henkilön kutsumanimi" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "Puoliopit saaneen henkilön kutsumanimi" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "Puoliopit antaneen henkilön kutsumanimi" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "Puheoikeuden antaneen henkilön kutsumanimi" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "Puheoikeuden saaneen henkilön kutsumanimi" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "Bannin asettajan kutsumanimi" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "Bannipeite" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "Tunnussanan poistajan kutsumanimi" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "Rajan poistajan kutsumanimi" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "Opit poistaneen henkilön kutsumanimi" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "Opit menettäneen henkilön kutsumanimi" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "Puoliopit menettäneen henkilön kutsumanimi" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Puoliopit poistaneen henkilön kutsumanimi" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "Puheoikeuden poistaneen henkilön kutsumanimi" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "Puheoikeuden menettäneen henkilön kutsumanimi" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "Bannin poistaneen henkilön kutsumanimi" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "Erivapauden asettaneen henkilön kutsumanimi" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "Erivapauspeite" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "Erivapauden poistaneen henkilön kutsumanimi" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "Kutsun esittäneen henkilön kutsumanimi" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "Kutsupeite" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "Kutsun poistaneen henkilön kutsumanimi" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "Tilan asettaneen henkilön kutsumanimi" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "Tilan etumerkki (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "Tilakirjain" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "Kanava, jolle se asetetaan" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Käyttäjänimi" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Koko nimi" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Kanavan jäsenyys/\"on IRC-operaattori\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Palvelintiedot" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Joutenoloaika" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Kirjautumisaika" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Poissaolon syy" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Viesti" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Tunnus" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "Todellinen käyttäjä@isäntä" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "Todellinen IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Kanavanimi" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Teksti" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Palvelinnimi" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Sinut kutsuneen henkilön nimi" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Käyttäjiä" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Kutsumanimi on käytössä" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Kokeiltava kutsumanimi" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Portti" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Verkko" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Tilamerkkijono" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "IP-osoite" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "DCC-tyyppi" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Tiedostonimi" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Kohdetiedostonimi" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "t/s" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Polku" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Sijainti" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Koko" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "DCC-merkkijono" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Ilmoitusmerkintöjen määrä" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Vanha tiedostonimi" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Uusi tiedostonimi" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Vastaanottaja" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Isännän peite" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Isäntänimi" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "Paketti" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Sekuntia" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Kutsutun henkilön kutsumanimi" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Bannipeite" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Kuka asetti bannin" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Bannausaika" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Virhe tapahtuman %s jäsentämisessä.\n" +"Ladataan oletus" + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"Äänitiedostoa ei voi lukea:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "Vastapää sulki pistokkeen" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Yhteys torjuttu" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Ei reititystä isäntään" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Yhteys aikakatkaistu" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Osoitetta ei voi asettaa" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Vastapää katkaisi yhteyden" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Ascension Island" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Yhdistyneet Arabiemiraatit" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Afganistan" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Antigua ja Barbuda" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Albania" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Armenia" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Alankomaiden Antillit" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Etelämanner" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Argentiina" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "Käänteisnimipalvelu" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Amerikan Samoa" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Itävalta" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "NATO" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Australia" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Ahvenanmaa" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Azerbaidzan" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Bosnia ja Herzegovina" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Bangladesh" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Belgia" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Bulgaria" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Bahrain" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Liike-elämä" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Brunei" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Bolivia" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Brasilia" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Bahamasaaret" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Bhutan" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Bouvet'n saari" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Valko-Venäjä" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Kanada" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Kookossaaret" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "Kongon demokraattinen tasavalta" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "Keski-Afrikan tasavalta" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Kongo" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Sveitsi" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Norsunluurannikko" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Cooksaaret" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Chile" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Kamerun" + +#: src/common/util.c:898 +msgid "China" +msgstr "Kiina" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Kolumbia" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Kaupallinen" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Serbia ja Montenegro" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Kuuba" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Kap Verde" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Joulusaari" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Kypros" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "Tšekinmaa" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Saksa" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Djibouti" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Tanska" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Dominica" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "Dominikaaninen tasavalta" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Algeria" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Ecuador" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Koulutuksellinen laitos (Yhdysvallat)" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Viro" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Egypti" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Länsi-Sahara" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Espanja" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Etiopia" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Euroopan unioni" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Suomi" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Fidzi" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Falklandsaaret" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Mikronesia" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Färsaaret" + +#: src/common/util.c:928 +msgid "France" +msgstr "Ranska" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Iso-Britannia" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Georgia" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Ranskan Guyana" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Englannin kanaalin saaret" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Ghana" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Grönlanti" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Valtio (Yhdysvallat)" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Guadeloupe" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Päiväntasaajan Guinea" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Kreikka" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Etelä-Georgia ja Eteläiset Sandwichsaaret" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Guinea-Bissau" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Guyana" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Hongkong" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Heard ja McDonaldinsaaret" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Kroatia" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Unkari" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Indonesia" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Irlanti" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Israel" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Mansaari" + +#: src/common/util.c:959 +msgid "India" +msgstr "Intia" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Tiedotuksellinen" + +#: src/common/util.c:961 +msgid "International" +msgstr "Kansainvälinen" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Brittiläinen Intian valtameren alue" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Irak" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Iran" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Islanti" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Italia" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Jamaika" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Jordania" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Japani" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Kenia" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Kirgisia" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Kambodža" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Komorit" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "Saint Kitts ja Nevis" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Pohjois-Korea" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Etelä-Korea" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Kuwait" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Caymansaaret" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Kazakstan" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Libanon" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Saint Lucia" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Liberia" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Liettua" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Luxemburg" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Latvia" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Libya" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Marokko" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Monaco" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Moldova" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "Lääketieteellinen (Yhdysvallat)" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Madagaskar" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Marshallsaaret" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Sotilaallinen (Yhdysvallat)" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Makedonia" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Mongolia" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Macao" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Pohjois-Mariaanit" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Martinique" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Mauritania" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Mauritius" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Malediivit" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Meksiko" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Malesia" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Mosambik" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Namibia" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Uusi-Kaledonia" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Verkko" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Norfolkin saari" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Nigeria" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Alankomaat" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Norja" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Uusi-Seelanti" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Aatteellinen järjestö" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Ranskan Polynesia" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Papua-Uusi-Guinea" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Filippiinit" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Puola" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "Saint-Pierre ja Miquelon" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Puerto Rico" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Brittiläinen Intian valtameren alue" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Portugali" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Paraguay" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Qatar" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Réunion" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Romania" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "Vanha ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Venäjän Federaatio" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Ruanda" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Saudi-Arabia" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Salomosaaret" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Seychellit" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Sudan" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Ruotsi" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Singapore" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "Saint Helena" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Slovenia" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard- ja Jan Mayen -saaret" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Slovakia" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Somalia" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Surinam" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "Sao Tome ja Principe" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Entinen Neuvostoliitto" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Syyria" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Swasimaa" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Turks- ja Cairossaaret" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Tšad" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Ranskan eteläiset maa-alueet" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Thaimaa" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Tadzikistan" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Itä-Timor" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Tunisia" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Turkki" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Trinidad ja Tobago" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Tansania" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Ukraina" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Iso-Britannia" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "Yhdysvallat" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Uruguay" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Uzbekistan" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Vatikaanivaltio" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "Saint Vincent ja Grenadiinit" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Brittiläiset Neitsytsaaret" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "Neitsytsaaret" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Wallis ja Futuna" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Jemen" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Jugoslavia" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Etelä-Afrikka" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Sambia" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Tuntematon" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "Avaa keskusteluikkuna" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "Lähetä tiedosto" + +#: src/common/xchat.c:728 +#, fuzzy +msgid "_User Info (WhoIs)" +msgstr "Käyttäjätiedot (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +#, fuzzy +msgid "O_perator Actions" +msgstr "Opin toiminnot" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Anna opit" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Poista opit" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Anna puheoikeus" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Poista puheoikeus" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Potkaise/Bannaa" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Potkaise" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Bannaa" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "Potkaise ja bannaa" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Poistu kanavalta" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Liity kanavalle..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Anna liityttävän kanavan nimi:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Palvelinlinkit" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Pingaa palvelinta" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Piilota versionumero" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Oppaa" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "Opit pois" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "heihei" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Anna syy miksi %s potkaistaan:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Lähetä" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Keskustele" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "KukaOn" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Lähetä" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Keskustelu" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Tyhjennä" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "Istuntoväylään ei saatu yhteyttä" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "NameHasOwner-komennon suoritus epäonnistui" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "Komennon suoritus epäonnistui" + +# PNAME-makron sisältö (liitännäisen nimi) +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "etäkäyttö" + +# PDESC-makron sisältö (liitännäisen kuvaus) +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "Liitännäinen, joka mahdollistaa etäkäytön DBUS-yhteyden yli." + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Istuntoväylään ei saatu yhteyttä: %s\n" + +# Parametrit ovat dbus-palvelu (DBUS_SERVICE) +# ja virheilmoitus. +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Virhe palvelussa %s: %s\n" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "_Tietoja" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Usealla alustalla toimiva IRC-asiakasohjelma" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Merkistökartta" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "Palvelimeen ei ole yhteyttä." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Valitse vähintään yksi banni." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "Poistetaanko kaikki kanavan %s bannit?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Peite" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "Keneltä" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Päiväys" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Banniluettelon voi avata vain, kun jokin kanavaikkuna on valittuna." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: Banniluettelo (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Poista" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Poista muut" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Päivitä" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Näkyvillä on %d/%d käyttäjää %d/%d kanavalla." + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Valitse tulostiedoston nimi" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "Liity kanavalle" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "Kopioi kanavanimi" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "Kopioi kanavan aihepiiriteksti" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: Kanavaluettelo (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "Hae" + +# Radionappula +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "Lataa luettelo" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "Tallenna luettelo..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "Näytä vain:" + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "kanavat, joilla on" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "—" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "käyttäjää." + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "Käy läpi:" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "Kanavanimi" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "Hakutapa:" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "Yksinkertainen haku" + +# MSWin-versioon +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "Hakulauseke (jokerimerkit)" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "Säännöllinen lauseke" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Etsi:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Lähetä tiedosto käyttäjälle %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Tämän tiedoston siirtoa ei voi jatkaa." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"Tiedostoa ei voi käsitellä: %s\n" +"%s.\n" +"Jatkaminen ei ole mahdollista." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"Tiedosto latauskansiossa on suurempi kuin tarjottu tiedosto. Jatkaminen ei " +"ole mahdollista." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "Saman tiedoston siirtoa ei voi jatkaa kahdelta käyttäjältä." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: Tiedostonsiirrot" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Tila" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Tiedosto" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "Arvioitu aika" + +# Näkymää rajaava radionappula +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Molemmat" + +# Radionappula +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Lähetykset" + +# Radionappula +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "Lataukset" + +# Näyttää tiedoston koko polun omalla koneella +# ja siirtoon käytettävän IP-osoitteen ja portin. +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Lisätiedot" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Tiedosto:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "Osoite:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Keskeytä" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Hyväksy" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Jatka" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Avaa kansio..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: DCC-keskusteluluettelo" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Saapunut" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Lähetetty" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "Aloitusaika" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*UUSI*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "MUOKKAA TÄTÄ" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Nimi" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Komento" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Siirrä ylemmäs" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Siirrä alemmas" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Peru" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Tallenna" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Lisää uusi" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Poista" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Lajittele" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Ohje" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "ei ota yhteyttä palvelimiin" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "käyttää erityistä asetushakemistoa" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "ei lataa liitännäisiä" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "näyttää vakioliitännäisten hakemiston" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "näyttää käyttäjän asetushakemiston" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "avaa URLin (irc://palvelin:portti/kanava)" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Suorita komento:" + +#: src/fe-gtk/fe-gtk.c:132 +#, fuzzy +msgid "Open URL or execute command in an existing XChat" +msgstr "Avaa URL käynnissä olevaan XChattiin" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" +"Aloita pienennettynä. Taso: 0=tavallinen, 1=kuvakkeena, 2=ilmoitusalueella" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "taso" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "näyttää versiotiedot" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"Kirjasimen avaaminen ei onnistunut:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "Hakupuskuri on tyhjä.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d tavua" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Verkon lähetysjonossa on %d tavua." + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"Run Command -komento ajaa Data 1:n sisällön, kuin se olisi kirjoitettu " +"syötekenttään, jossa näppäinyhdistelmää painettiin. Se voi siis sisältää " +"tekstiä (joka lähetetään kanavalle/henkilölle), komentoja tai " +"käyttäjäkomentoja. Ajettaessa kaikki Data 1:n sisältämät \\n-merkit " +"tulkitaan komentojen erottimiksi; siten on mahdollista ajaa useampi komento. " +"Jos haluat \\-merkin varsinaiseen tekstiin, käytä merkintää \\\\" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"Change Page -komento siirtyy välilehdeltä toiselle. Aseta Data 1:n arvoksi " +"lehti, jolle halutaan siirtyä. Jos Data 2 on asetettu, siirtyminen on " +"suhteessa nykyiseen sijaintiin" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"Insert in Buffer -komento lisää Data 1:n sisällön syöteriville kohdistimen " +"kohdalle" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"Scroll Page -komento vierittää tekstikenttää (Data 1:n arvosta riippuen) " +"ylös tai alas yhden sivun (Up, Down) tai rivin (+1, -1) verran." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "Set Buffer -komento asettaa syöteriviksi Data 1:n sisällön" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"Last Command -komento asettaa syöteriviksi edellisen annetun komennon - " +"vastaa ylänuolen painamista kuoressa" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"Next Command -komento asettaa syöteriviksi seuraavan annetun komennon - " +"vastaa alanuolen painamista kuoressa" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Tämä komento täydentää syöterivillä osoittimen edellä olevan epätäydellisen " +"kutsumanimen tai komennon. Jos Data 1 on asetettu, kaksi kertaa painaminen " +"valitsee edellisen kutsumanimen, ei seuraavaa" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Tämä komento vierittää käyttäjäluetteloa ylös ja alas. Jos Data 1 on " +"asetettu, luetteloa vieritetään ylös, muutoin alas" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Tämä komento vertaa viimeistä annettua sanaa korvauslistaan ja muuttaa sen," +"jos löytyy täsmäävyys." + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Tämä komento siirtää päällimmäistä välilehteä yhden vasemmalle" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Tämä komento siirtää päällimmäistä välilehteä yhden oikealle" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Tämä komento siirtää nykyistä välilehtiötä vasemmalle" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Tämä komento siirtää nykyistä välilehtiötä oikealle" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "Lisää syöterivin historiaan, mutta ei lähetä palvelimelle" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "Virhe ladattaessa näppäinsidonta-asetuksia" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<ei mitään>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Määre" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Näppäin" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Toiminto" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: Pikanäppäimet" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Vaihto" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Data 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Data 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Virhe avattaessa näppäinasetustiedostoa\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Tuntematon näppäinnimi %s näppäinsidontojen asetustiedostossa\n" +"Lataus keskeytetty, korjaa tiedosto %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Tuntematon toiminto %s näppäinsidontojen asetustiedostossa\n" +"Lataus keskeytetty, korjaa tiedosto %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Odotettiin Datariviä (alku Dx{:|!}), mutta saatiin:\n" +"%s\n" +"\n" +"Lataus keskeytetty, korjaa tiedosto %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"Näppäinsidontojen asetustiedosto on turmeltunut, lataus keskeytetty\n" +"Korjaa tiedosto %s/keybindings.conf\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "Antamaasi tiedostoon ei voi kirjoittaa." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Antamaasi tiedostoa ei voi lukea." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Kyseinen peite on jo olemassa." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Yksityiset" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Tiedotteet" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Kutsut" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Huomioi toistaiseksi" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Anna peite huomiotta jätettäville:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: Huomioimattomuusluettelo" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Huomioimattomuustilastot:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Kavavia:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Yksityisiä:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Ilmoituksia:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Kutsuja:" + +# Tarkistettava +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "Lisää uusi..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "Kanavan nimi on liian lyhyt. Yritä uudestaan." + +# Sen ikkunan otsikko, joka ilmoittaa, että +# palvelimeen on saatu yhteys. +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: Yhteys muodostettu" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "Yhteys palvelimeen %s on valmis." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"Palvelinluetteloon ei ole tälle IRC-verkolle syötetty yhtään kanavaa, joille " +"tulisi liittyä automaattisesti." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "Mitä haluat tehdä?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "_En mitään, liityn kanaville itse." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "_Liittyä kanavalle:" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Jos tiedät mille kanavalle haluat liittyä, kirjoita sen nimi tähän." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "Avata kanava_luettelon:" + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "Kanavaluettelon kerääminen saattaa kestää parikin minuuttia." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "Näytä tämä valintaikkuna _aina, kun yhteys on muodostettu." + +# Keskusteluikkunan otsikko. Perään tulee +# keskustelukumppanin nimi ja palvelin. +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Keskustelijana" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Kanavan %s aihe on: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Kanavalla ei ole aihetta." + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"Palvelimelta on edelleen auki %d kanavaa tai keskustelua. Suljetaanko kaikki?" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "Lopetetaanko XChat?" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "Älä kysy jatkossa." + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Ollaan yhteydessä %i IRC-verkkoon." + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "Lopetetaanko varmasti?" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "Tiedostonsiirtoja on vielä käynnissä." + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "Pienennä ilmoitusalueelle" + +# syöttökentän tilannevalikko +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Lisää määre tai värikoodi" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Lihavoitu</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Alleviivattu</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Tavallinen" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Värit 0–7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Värit 8–15" + +#: src/fe-gtk/maingui.c:1612 +#, fuzzy +msgid "_Settings" +msgstr "A_setukset" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "Piilota liittymis- ja poistumisviestit" + +#: src/fe-gtk/maingui.c:1625 +#, fuzzy +msgid "_Extra Alerts" +msgstr "Hälytykset" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "Anna äänimerkki viestin saapuessa" + +#: src/fe-gtk/maingui.c:1628 +#, fuzzy +msgid "Blink Tray _Icon" +msgstr "Välkytä ilmoitusalueella, kun tulee:" + +#: src/fe-gtk/maingui.c:1629 +#, fuzzy +msgid "Blink Task _Bar" +msgstr "Välkytä tehtäväpalkkia, kun tulee:" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +#, fuzzy +msgid "_Detach" +msgstr "_Irrota välilehti" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "_Sulje" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "Käyttäjärajan tulee olla numero!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Aiheensuojaus" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Ei ulkopuolisia viestejä" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Salainen" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Vain kutsutuille" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Moderoitu" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Banniluettelo" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Tunnussana" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Käyttäjäraja" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Näytä/piilota käyttäjäluettelo" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"Taustaa ei voi asettaa läpikuultavaksi!\n" +"\n" +"Ikkunointiohjelma on ehkä epäyhteensopiva,\n" +"eikä sitä tällä hetkellä tueta.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Anna uusi kutsumanimi:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Tuntematon isäntä" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Oikea nimi:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Käyttäjä:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "Maa:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Palvelin:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "%u minuuttia sitten" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Puhunut kanavalla:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Poissaoloviesti:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"Valikkopalkki on nyt piilossa. Sen saa taas esiin painamalla Ctrl-F9:ää tai " +"hiiren oikeaa painiketta tekstialueen tyhjässä kohdassa." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Avaa linkki selaimeen" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Kopioi valittu linkki" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Liity kanavalle" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Poistu kanavalta" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Liity kanavalle uudelleen" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: Käyttäjän valikko" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Muokkaa tätä valikkoa..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Valitse kanavaluettelosta..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Käyttäjän komennot - Erikoiskoodit:\n" +"\n" +"%c = nykyinen kanava\n" +"%e = nykyinen verkko\n" +"%m = koneen tiedot\n" +"%n = oma kutsumanimi\n" +"%t = aika/päiväys\n" +"%v = xchat-versio\n" +"%2 = 2. sana\n" +"%3 = 3. sana\n" +"&2 = 2. sanasta rivin loppuun\n" +"&3 = 3. sanasta rivin loppuun\n" +"\n" +"esim:\n" +"/cmd jarkko terve\n" +"\n" +"%2 olisi \"jarkko\"\n" +"&2 olisi \"jarkko terve\"." + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Käyttäjälistapainikkeet - Erikoiskoodit:\n" +"\n" +"%a = kaikki valitut kutsumanimet\n" +"%e = nykyinen verkko\n" +"%c = nykyinen kanava\n" +"%h = valitun käyttäjän isäntänimi\n" +"%m = koneen tiedot\n" +"%n = oma kutsumanimi\n" +"%s = valittu kutsumanimi\n" +"%t = aika/päiväys\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Keskustelupainikkeet - Erikoiskoodit:\n" +"\n" +"%a = kaikki valitut kutsumanimet\n" +"%c = nykyinen kanava\n" +"%e = nykyinen verkko\n" +"%h = valitun käyttäjän isäntänimi\n" +"%m = koneen tiedot\n" +"%n = oma kutsumanimi\n" +"%s = valittu kutsumanimi\n" +"%t = aika/päiväys\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"CTCP-vastaukset - Erikoiskoodit:\n" +"\n" +"%d = data (koko ctcp)\n" +"%e = nykyinen verkko\n" +"%m = koneen tiedot\n" +"%s = ctcp:n lähettäjän kutsumanimi\n" +"%t = aika/päiväys\n" +"%2 = 2. sana\n" +"%3 = 3. sana\n" +"&2 = 2. sanasta rivin loppuun\n" +"&3 = 3. sanasta rivin loppuun\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"URL-käsittelimet - Erikoiskoodit:\n" +"\n" +"%s = URL-merkkijono\n" +"\n" +"Huutomerkki (!) komennon edessä ilmaisee,\n" +"että komento lähetetään XChatin sijaan\n" +"kuorelle." + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: Käyttäjän määrittelemät komennot" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: Käyttäjäluettelon ponnahdusvalikko" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Korvaava teksti" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: Korvaaminen" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: URL-käsittelimet" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: Käyttäjäluettelon painikkeet" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: Keskusteluikkunan painikkeet" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: CTCP-vastaukset" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "Verkkoluettelo..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "Uusi" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Palvelinvälilehti..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Kanavavälilehti..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Palvelinikkuna..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Kanavaikkuna..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "Lataa skripti tai liitännäinen..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "Lopeta" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "Näytä" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "Valikkopalkki" + +#: src/fe-gtk/menu.c:1592 +msgid "_Topic Bar" +msgstr "Aihepalkki" + +#: src/fe-gtk/menu.c:1593 +msgid "_User List" +msgstr "Käyttäjäluettelo" + +#: src/fe-gtk/menu.c:1594 +msgid "U_serlist Buttons" +msgstr "Käyttäjäluettelon painikkeet" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "Tilapainikkeet" + +#: src/fe-gtk/menu.c:1597 +msgid "_Channel Switcher" +msgstr "Kanavavalitsin" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "Välilehtinä" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "Puuna" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "Verkkomittarit" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Poissa" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Graafinen" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "_Palvelin" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "Katkaise yhteys" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "Yhdistä uudelleen" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "Liity kanavalle..." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "Liity kanavalle..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Merkitty poissaolevaksi" + +# Missäköhän tämä näkyy? +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "Käyttäjävalikko" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "A_setukset" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "Ominaisuudet" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Lisäasetukset" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Automaattikorvaukset..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "CTCP-vastaukset..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Keskusteluikkunan painikkeet..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Pikanäppäimet..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Tapahtumatekstit..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "URL-käsittelimet..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Käyttäjän komennot..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Käyttäjäluettelon painikkeet..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Käyttäjäluettelon pikavalikko..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_Ikkuna" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Banniluettelo..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Merkistökartta..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "DCC-keskustelu..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Tiedostonsiirrot..." + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "Banniluettelo..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Huomioimattomuusluettelo..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Skriptit ja liitännäiset..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Raakaloki..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "URL-kaappaaja..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Siirrä lukumerkki loppuun" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "P_yyhi teksti" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Hae tekstistä..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Tallenna teksti..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_Ohje" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "_Sisältö" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "_Tietoja" + +#: src/fe-gtk/menu.c:2147 +#, fuzzy +msgid "_Attach" +msgstr "Kiinnitä ikkuna" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Nähty viimeksi" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Tavoittamattomissa" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Ei koskaan" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "%d minuuttia sitten" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Tavoitettavissa" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Anna lisättävä kutsumanimi:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "Ilmoita seuraavissa verkoissa:" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "Pilkuilla eroteltu luettelo IRC-verkkoja." + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "XChat: Huomioimattomuusluettelo" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "Aloita keskustelu" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" +"Komentoa 'notify-send' ei löydy, joten puhekuplia ei voida näyttää.\n" +"Tilanteen korjaamiseksi pitää asentaa libnotify." + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "XChat: Yhteydessä %u verkkoon ja %u kanavaan" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "Palauta" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "Piilota" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "Välkytä kun tulee" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "Kanavaviesti" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "Yksityisviesti" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "Korostettu viesti" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "Poissaolo" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat: Korostettu viesti käyttäjältä %s (%s)" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat: %u korostettua viestiä, viimeksi käyttäjältä %s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat: Uusi julkinen viesti käyttäjältä: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat: %u uutta julkista viestiä." + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat: Yksityisviesti käyttäjältä %s (%s)" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "XChat: %u yksityisviestiä, viimeksi käyttäjältä %s (%s)" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat: Käyttäjä %s tarjoaa tiedostoa (%s)" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "XChat: %u tiedostoa tarjottu, vimeksi käyttäjältä %s (%s)" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Versio" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Kuvaus" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Valitse ladattava skripti tai liitännäinen" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: Skriptit ja liitännäiset" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "_Lataa..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "_Poista käytöstä" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Tallenna..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: Raakaloki (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Tyhjennä raakaloki" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "Tätä hakua varten avaamaasi ikkunaa ei enää ole." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "Hakutekstiä ei löytynyt" + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: Haku" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "Huomioi kirjainten koko" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "Etsi taaksepäin" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "Etsi" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Uusi verkko" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Haluatko todella poistaa verkon \"%s\" ja kaikki sen palvelimet?" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "Kanava" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: Kanavaluettelo (%s)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "Salasana:" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "_Muokkaa" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "Käyttäjätunnusta ja oikeaa nimeä ei voi jättää tyhjiksi." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: Muokkaa %s-verkkoa" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "%s-verkon palvelimet" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Yhdistä vain valittuun palvelimeen" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "" +"Älä yritä yhdistää muihin palvelimiin, jos valittuun palvelimeen ei saada " +"yhteyttä." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Käyttäjätiedot" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Käytä yleisiä käyttäjätietoja" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "Kutsumanimi:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "2. vaihtoehto:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "Käyttäjätunnus:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "Oikea nimi:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Yhteyden muodostus" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Yhdistä valmiiksi, kun X-Chat käynnistyy" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "Käytä välipalvelinta" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "Käytä SSL-yhteyttä tässä verkossa" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Hyväksy epäkelpo varmenne" + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "Kanavalta poistuminen:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "" +"Näille kanaville liitytään automaattisesti. Erota kanavat toisistaan pilkuin " +"(mutta ei välilyönnein!)." + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Yhdistämiskomento:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Lisäkomento, joka suoritetaan yhteyden muodostuttua. Useita komentoja voi " +"suorittaa laittamalla ne tiedostoon, ja kirjoittamalla tähän \"LOAD -e " +"<tiedostonimi>\"." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Kutsumanimen salasana:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Jos kutsumanimesi on suojattu NickServ-palvelun salasanalla, kirjoita se " +"tähän. Huomaa että kaikki IRC-verkot eivät tue salasanasuojausta." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Palvelimen salasana:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Palvelimelle tarvittava salasana. Jätä tyhjäksi, jos olet epävarma." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Merkistö:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: Verkkoluettelo" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Käyttäjätiedot" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "3. vaihtoehto:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "IRC-verkot" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "Aloita ilman verkkoluetteloa" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "_Muokkaa..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "Lajittele" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" +"Lajittelee verkkoluettelon aakkosjärjestykseen. Riviä voi siirtää " +"näppäilemällä SHIFT-YLÖS ja SHIFT-ALAS." + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "_Yhdistä" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Tekstilaatikon ulkonäkö" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Kirjasin:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Taustakuva:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Vieritettäviä rivejä:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Väritä kutsumanimet" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Anna kullekin käyttäjälle oma väri." + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Sisennä kutsumanimet" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Tasaa kutsumanimet oikealle." + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Läpikuultava tausta" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Näytä lukumerkki" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Erottaa luetun ja lukemattoman tekstin punaisella viivalla." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Läpikuultavuuden säätö" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Punainen:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Vihreä:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Sininen:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Aikaleimat" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Näytä aikaleimat" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Aikaleiman muoto:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Katso yksityiskohtaiset ohjeet manuaalisivulta strftime(3)." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "Puhumisajankohdan mukaan" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Syötekenttä" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Käytä tekstilaatikon kirjasinta ja värejä" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Oikoluku" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Kutsumanimien täydennys" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "Automaattinen kutsumanimien täydennys (ilman tabulaattoria)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Täydennyksen jälkiliite:" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "Kutsumanimitäydennys aakkosjärjestyksessä:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Syötekentän koodit" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Tulkitse %nnn ASCII-arvoksi" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Tulkitse %C väriksi, %B lihavoinniksi, jne" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, opit ensimmäisinä" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, opit viimeisinä" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Lajittelematon" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "Vasemmalla (ylhäällä)" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "Vasemmalla (alhaalla)" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "Oikealla (ylhäällä)" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "Oikealla (alhaalla)" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Ylhäällä" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Alhaalla" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Piilotettu" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Käyttäjäluettelo" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Näytä isäntänimet käyttäjäluettelossa" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Lajittelutapa:" + +#: src/fe-gtk/setup.c:205 +msgid "Show user list at:" +msgstr "Näytä käyttäjäluettelo:" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Poissaolojen seuranta" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "Seuraa poissaoloja ja näytä poissaolevat käyttäjät eri värillä," + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "kun kanavalla on käyttäjiä alle:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Kaksoisnapsautuksen toiminto" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Ikkunat" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Välilehdet" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Aina" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Vain itse avatut" + +#: src/fe-gtk/setup.c:242 +#, fuzzy +msgid "Tree" +msgstr "Puuna" + +#: src/fe-gtk/setup.c:249 +#, fuzzy +msgid "Switcher type:" +msgstr "Hakutapa:" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Palvelinviestit omaan välilehteensä" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Palvelintiedotteet omaan välilehteensä" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "Avaa uusi välilehti yksityisviestin saapuessa" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Välilehdet aakkosjärjestykseen" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "Pienet korvakkeet" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Uudet välilehdet etualalle:" + +#: src/fe-gtk/setup.c:258 +msgid "Show channel switcher at:" +msgstr "Näytä kanavavalitsin:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Typistä välilehtien nimet:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "merkin pituisiksi." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Välilehti vai ikkuna" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Kanavien avaamispaikka:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Keskusteluiden avaamispaikka:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Apuvälineiden avaamispaikka:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "DCC:t, huomioimattomuudet, ilmoitukset jne." + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "Ei" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Kyllä" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "Valitse tallennushakemisto joka kerta" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Tiedostot ja hakemistot" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Hyväksy tarjotut tiedostot automaattisesti:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Lataa hakemistoon:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Siirrä valmiit tiedostot hakemistoon:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Liitä lähettäjän kutsumanimi tiedostonimiin" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Verkkoasetukset" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Hae IP-osoite IRC-palvelimelta" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Tiedustelee osoittettasi IRC-palvelimelta. Rastita, mikäli osoitteesi on " +"esimerkiksi muotoa 192.168.*.*!" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "DCC:n IP-osoite:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Tiedostoja väitetään lähetettävän tästä osoitteesta." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Ensimmäinen DCC-lähetysportti" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Viimeinen DCC-lähetysportti" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "Jätä nolliksi, jos haluat käyttöön kaikki portit." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Siirtonopeuksien ylärajat (tavua sekunnissa)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Yksittäinen lähetys:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Yksittäisen siirron suurin sallittu nopeus." + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Yksittäinen lataus:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Kaikki lähetykset yhteensä:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Yhteenlaskettujen siirtojen suurin sallittu nopeus." + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Kaikki lataukset yhteensä:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Hälytykset" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "Näytä puhekupla, kun tulee:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "Välkytä ilmoitusalueella, kun tulee:" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "Välkytä tehtäväpalkkia, kun tulee:" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "Piipauta, kun tulee:" + +# Pilkku lopussa, koska lause jatkuu seuraavaan asetuskohtaan. +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "Ota ilmoitusalueen kuvake käyttöön" + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "Korostettu viesti" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Viesti korostetaan, kun siinä mainitaan kutsumanimesi tai:" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "Muut korostettavat sanat:" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "Älä korosta viestejä käyttäjiltä:" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "Korosta aina viestit käyttäjiltä:" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Erota sanat toisistaan pilkuilla." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Oletusilmoitukset" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Lopetus:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Kanavalta poistuminen:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Poissaolo:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Poissaolo" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Kuuluta poissaoloviestit" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Lähettää poissaoloviestit kaikille kanaville." + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Näytä poissaoloviestit kerran" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Näyttää identtiset poissaoloviestit vain kerran." + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Lopeta oma poissaolo automaattisesti" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Merkitsee sinut läsnäolevaksi ennen viestien lähettämistä." + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Lisäasetukset" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Automaattisen yhdistämisen viive:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Näytä tilat raakamuodossa" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Suorita whois ilmoituksen yhteydessä" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" +"Lähettää /WHOIS-komennon, kun ilmoitusluettelossa oleva käyttäjä on " +"tavoitettavissa" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Piilota liittymis- ja poistumisviestit" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Piilota liittymis- ja poistumisviestit oletuksena" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Avaa DCC-ikkunat automaattisesti" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Lähetysikkuna" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Vastaanottoikkuna" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Kanavaikkuna" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Lokiasetukset" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "Pidä keskusteluista lokia" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Lokitiedoston nimi:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=palvelin %c=kanava %n=verkko." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Lisää lokeihin aikaleimat" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Lokitiedoston aikaleiman muoto:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Pois käytöstä)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Kaikille yhteyksille" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "Vain IRC-palvelimille" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "Vain DCC-siirroille" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Oma IP-osoite" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Sido osoitteeseen:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "Käyttökelpoinen vain, kun tietokoneessa on monta osoitetta." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Välipalvelin" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Isäntänimi:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Portti:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Tyyppi:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Käytä välipalvelinta:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Välipalvelimelle tunnistautuminen" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Tunnistaudu välipalvelimelle (vain MS Proxy, HTTP ja Socks5)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Tunnistaudu välipalvelimelle (vain HTTP ja Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Käyttäjänimi:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Salasana:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Valitse kuvatiedosto" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "Valitse latauskansio" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Valitse kirjasin" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Selaa..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Merkitse tunnistetut käyttäjät seuraavasti:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Merkitse tuntemattomat käyttäjät seuraavasti:" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "Avaa datakansio" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Valitse väri" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Tekstin värit" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "mIRC-värit:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Omat värit" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Edustaväri:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Taustaväri:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Tekstin maalaus" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Käyttöliittymän värit" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Uusi data:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Lukumerkkiviiva:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Uusi viesti:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Poissaolijat:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Korostus:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Tapahtuma" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Äänitiedosto" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Valitse äänitiedosto" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Äänensoittotapa:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "Ulkoinen soitto-ohjelma:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "Ulkoisella ohjelmalla" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "Automaattinen" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "Äänitiedostojen hakemisto:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Äänitiedosto: " + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "Selaa..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "Soita" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Käyttöliittymä" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Tekstilaatikko" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Käyttäjäluettelo" + +#: src/fe-gtk/setup.c:1703 +msgid "Channel switcher" +msgstr "Kanavavalitsin" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Värit" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Keskustelu" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Yleiset" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Ääni" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Verkkoasetukset" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Tiedostonsiirrot" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Asetusryhmät" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" +"Puuta ei voi laittaa ylös eikä alas!\n" +"Muuta ensin välilehtiasettelua <b>Näytä</b>-valikosta." + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" +"Osa muutoksista tulee voimaan vasta kun ohjelma käynnistetään uudestaan." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*VAROITUS*\n" +"DCC-siirtojen automaattinen hyväksyminen\n" +"kotihakemistoon voi olla vaarallista. Esim:\n" +"Joku voi lähettää tiedoston .bash_profile." + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: Ominaisuudet" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Virhe jäsennettäessä merkkijonoa" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Tälle signaalille annetaan vain %d argumenttia, $%d on virheellinen" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Tallenna tekstitiedosto" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Muokkaa tapahtumatekstejä" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ Numero" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Lataa..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Kokeile kaikki" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: URL-kaappaaja" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Tyhjennä luettelo" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Kopioi valittu URL" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Kopioi" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Tallenna luettelo tiedostoon" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d oppia, %d yhteensä" + +#~ msgid "" +#~ "Set per channel options\n" +#~ "CHANOPT CONFMODE ON|OFF - Toggle conf mode/showing of join and part " +#~ "messages\n" +#~ "CHANOPT COLORPASTE ON|OFF - Toggle color paste\n" +#~ "CHANOPT BEEP ON|OFF - Toggle beep on message\n" +#~ "CHANOPT TRAY ON|OFF - Toggle tray blink on message" +#~ msgstr "" +#~ "Kanavakohtaiset asetukset\n" +#~ "CHANOPT CONFMODE ON|OFF - Liittymis- ja poistumisviestit päälle tai pois\n" +#~ "CHANOPT COLORPASTE ON|OFF - Värien kanssa liittäminen päälle tai pois\n" +#~ "CHANOPT BEEP ON|OFF - Piippaus viestien saapuessa päälle tai pois\n" +#~ "CHANOPT TRAY ON|OFF - Ilmoitusalueella välkytys päälle tai pois" + +#~ msgid "Direct client-to-client" +#~ msgstr "Suora vertaisyhteys" + +#~ msgid "Send File" +#~ msgstr "Lähetä tiedosto" + +#~ msgid "Offer Chat" +#~ msgstr "Ehdota keskustelua" + +#~ msgid "Abort Chat" +#~ msgstr "Keskeytä keskustelu" + +#~ msgid "Userinfo" +#~ msgstr "Käyttäjätiedot" + +#~ msgid "Clientinfo" +#~ msgstr "Asiakasohjelmatiedot" + +#~ msgid "Time" +#~ msgstr "Aika" + +#~ msgid "Finger" +#~ msgstr "Tunnustelu" + +#~ msgid "Oper" +#~ msgstr "Operaattori" + +#~ msgid "Kill this user" +#~ msgstr "Tapa tämä käyttäjä" + +#~ msgid "Mode" +#~ msgstr "Tila" + +#~ msgid "Give Half-Ops" +#~ msgstr "Anna puoliopit" + +#~ msgid "Take Half-Ops" +#~ msgstr "Poista puoliopit" + +#~ msgid "Ignore" +#~ msgstr "Jätä huomiotta" + +#~ msgid "Ignore User" +#~ msgstr "Jätä käyttäjä huomiotta" + +#~ msgid "UnIgnore User" +#~ msgstr "Huomioi käyttäjä jälleen" + +#~ msgid "Info" +#~ msgstr "Tiedot" + +#~ msgid "Who" +#~ msgstr "Kuka" + +#~ msgid "DNS Lookup" +#~ msgstr "DNS-haku" + +#~ msgid "Trace" +#~ msgstr "Jäljitä" + +#~ msgid "UserHost" +#~ msgstr "KäyttäjäIsäntä" + +#~ msgid "External" +#~ msgstr "Ulkoiset" + +#~ msgid "Traceroute" +#~ msgstr "Traceroute" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "About XChat" +#~ msgstr "Tietoja XChatista" + +#~ msgid "Unban" +#~ msgstr "Poista banni" + +#~ msgid "Blink tray on message" +#~ msgstr "Välkytä ilmoitusalueella viestin saapuessa" + +#~ msgid "Show join/part messages" +#~ msgstr "Näytä liittymis/poistumisviestit" + +#~ msgid "Color paste" +#~ msgstr "Liitä väritysten kanssa" + +#~ msgid "_Close Tab" +#~ msgstr "_Sulje välilehti" + +#~ msgid "Channel List..." +#~ msgstr "Kanavaluettelo..." + +#~ msgid "Notify List..." +#~ msgstr "Ilmoitusluettelo..." + +#~ msgid "_Close Window" +#~ msgstr "Sulje ikkuna" + +#~ msgid "User" +#~ msgstr "Käyttäjä" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: Ilmoitusluettelo" + +#~ msgid "C_hannels to join:" +#~ msgstr "Avattavat kanavat:" + +#~ msgid "Channel Switcher" +#~ msgstr "Kanavavalitsin" diff --git a/etc/wyatt8740/po/fr.po b/etc/wyatt8740/po/fr.po new file mode 100644 index 0000000..a99c78e --- /dev/null +++ b/etc/wyatt8740/po/fr.po @@ -0,0 +1,6098 @@ +# French translation of XChat. +# This file is put in the public domain. +# Benjamin Sonntag <benjamin@alternc.org>, 2007 +# +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.8.4\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2006-09-08 12:26:43+0200\n" +"Last-Translator: Benjamin Sonntag <benjamin@alternc.org>\n" +"Language-Team: French <traduc@traduc.org>\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Impossible de créer ~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Occupé" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Quitte" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* Utiliser IRC sous un compte root est stupide !\n" +" Vous devriez créer un compte utilisateur et\n" +" l'utiliser pour vous connecter.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Attente" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Actif" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Échec" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Terminé" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Connecter" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Interrompu" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "Impossible d'accéder à %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Erreur" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s vous propose « %s ». Voulez-vous l'accepter ?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Aucun DCC actif\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "OUI " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "NON " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Vous êtes bombardé de requêtes CTCP par %s, %s va être ignoré\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "" +"Vous êtes bombardé de MSG par %s, désactivation de l'option " +"gui_auto_open_dialog.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s connecté\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s déconnecté\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Vous n'avez encore rejoint aucun canal. Essayez /join #<canal>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Vous n'êtes pas encore connecté. Essayez /server <hôte> [<port>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Vous êtes déjà considéré comme absent : %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "Vous êtes déjà considéré comme présent : %s\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "/bin/sh est nécessaire au fonctionnement\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Commandes disponibles :" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Commandes définies par l'utilisateur :" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Commandes définies par un greffon :" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Taper /HELP <commande> pour plus d'informations, ou /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Paramètre inconnu « %s », ignoré." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "Aucun greffon de ce type n'a été trouvé.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Impossible de décharger ce greffon.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "" +"ADDBUTTON <nom> <action>, ajouter un bouton au-dessous de la liste des " +"utilisateurs" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "" +"ALLCHAN <cmd>, envoyer une commande à tous les canaux sur lesquels vous êtes " +"présent" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "" +"ALLCHANL <cmd>, envoyer une commande à tous les canaux sur lesquels vous " +"êtes présent" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "" +"ALLSERV <cmd>, envoyer une commande à tous les serveurs auxquels vous êtes " +"connecté" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<raison>], indiquer que vous êtes absent" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "BACK signale que vous êtes de retour (plus absent)" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <masque> [<typeban>], bannir du canal en cours tous ceux qui " +"correspondent au masque. S'ils sont déjà sur ce canal, ils ne seront pas " +"expulsés (nécessite d'être opérateur [chanop])" + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "SET [-quiet] <variable> [<valeur>] (-quiet = silencieusement)" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "" +"CLEAR [ALL|HISTORY], Efface la fenêtre courant ou l'historique des commandes" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, fermer l'onglet ou la fenêtre en cours" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" +"COUNTRY [-s] <code|joker>, rechercher un code de pays, par exemple : au = " +"Australie" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <pseudo> <message>, envoyer au pseudo un message CTCP, « VERSION » et " +"« USERINFO » sont des messages usuels." + +#: src/common/outbound.c:3516 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "CYCLE [<canal>], quitte et rejoint à nouveau le canal donné" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <pseudo> - accepter le fichier proposé\n" +"DCC SEND [maxcps=#] <pseudo> <fichier> - envoyer un fichier à quelqu'un\n" +"DCC LIST - afficher les connexions DCC\n" +"DCC CHAT <pseudo> - proposer une discussion DCC\n" +"DCC PCHAT <pseudo> - proposer une discussion DCC\n" +" en mode passif\n" +"DCC CLOSE <type> <pseudo> <fichier> - exemple :\n" +" /dcc close send paul fichier.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <pseudo>, supprimer l'état demi-opérateur « chanhalf-op » d'un pseudo " +"sur le canal actuel (nécessite être opérateur [chanop])" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "" +"DELBUTTON <nom>, supprimer un des boutons situés au-dessous de la liste des " +"utilisateurs" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <pseudo>, supprimer l'état opérateur (« chanop ») d'un pseudo sur le " +"canal actuel (nécessite d'être opérateur [chanop])" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <pseudo>, supprimer la parole donnée à un pseudo sur le canal actuel " +"(nécessite d'être opérateur [chanop])" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, se déconnecter du serveur" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <pseudo|hôte|IP>, rechercher l'adresse IP d'un utilisateur" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <texte>, afficher un texte en local" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <commande>, exécuter une commande. Si l'option -o est utilisée, la " +"sortie est envoyée sur le canal actuel, sinon elle est affichée dans la zone " +"de texte actuelle" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, envoyer un signal « SIGCONT » au processus" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], tuer une exécution en cours dans la session actuelle. Si -9 " +"est fourni, le processus est tué par le signal « SIGKILL »" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, envoyer un signal « SIGSTOP » au processus" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, envoyer des données à l'entrée standard des processus" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, vider la file d'envoi du serveur actuel" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" +"GATE <hôte> [<port>], utiliser un hôte comme serveur mandataire (proxy), le " +"port 23 est utilisé par défaut" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <pseudo> <mot-de-passe>, tuer un pseudonyme fantôme" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" +"HOP <pseudo>, donner l'état de demi-opérateur de canal « chanhalf-op » au " +"pseudo (nécessite d'être opérateur [chanop)]" + +# ChtiTux +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <mot de passe>, vous identifie auprès de nickserv" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <masque> <types...> <options...>\n" +" masque - masque d'hôtes à exclure, par ex. : *!*@*.aol.com\n" +" types - types de données à exclure, un seul ou tous :\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <pseudo> [<canal>], inviter quelqu'un sur un canal, par défaut le " +"canal actuel (nécessite d'être opérateur [chanop])" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <canal>, rejoindre le canal" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <pseudo>, expulser le pseudo (kick) hors du canal actuel (nécessite " +"d'être opérateur [chanop])" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <pseudo>, bannir puis expulser (kick) le pseudo du canal actuel " +"(nécessite d'être opérateur [chanop])" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, forcer une nouvelle vérification de latence (lag)" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <chaîne>, rechercher une chaîne mémorisée dans la fenêtre" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <fichier>, charger un greffon ou un script" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, retirer globalement les droits d'opérateur à tous les demi-" +"opérateurs (halfops) du canal actuel (nécessite d'être opérateur [chanop])" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, retirer globalement tous les droits d'opérateur à tous les opérateurs " +"du canal actuel (nécessite d'être opérateur [chanop])" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <action>, envoyer l'action sur le canal actuel (les actions sont écrites " +"à la 3ème personne, comme /me est content)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, jeter (kick) massivement tout le monde sauf vous hors du canal actuel " +"(nécessite d'être opérateur [chanop])" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, donner globalement les droits d'opérateur à tous les utilisateurs du " +"canal actuel (nécessite d'être opérateur [chanop])" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <pseudo> <message>, envoyer un message privé" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, afficher les pseudonymes sur le canal actuel" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <pseudo> <message>, envoyer une notification CTCP" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noreconnect] <nom_hôte> [<port>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <pseudo>, définir votre pseudonyme" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <pseudo/canal> <message>, envoyer une notification. Les notifications " +"sont un type de message auquel on devrait réagir automatiquement" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n réseau1[,réseau2,...]] [<pseudo>], affiche la liste des " +"notifications ou ajoute un quelqu'un à cette liste." + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" +"OP <pseudo>, donner l'état d'opérateur « chanop » au pseudo (nécessite " +"d'être opérateur [chanop])" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" +"PART [<canal>] [<raison>], quitter le canal, par défaut le canal actuel" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <pseudo | canal>, envoyer un ping CTCP au pseudo ou au canal" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "" +"QUERY [-nofocus] <pseudo>, ouvre une fenêtre de chat privé avec quelqu'un" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<raison>], se déconnecter du serveur actuel" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <texte>, transmettre le texte au serveur sous forme brute" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<hôte>] [<port>] [<mot_de_passe>], peut être appelée " +"exactement comme /RECONNECT pour se reconnecter au serveur actuel ou avec /" +"RECONNECT ALL pour se reconnecter à tous les serveurs ouverts" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<hôte>] [<port>] [<mot_de_passe>], peut être appelée exactement " +"comme /RECONNECT pour se reconnecter au serveur actuel ou avec /RECONNECT " +"ALL pour se reconnecter à tous les serveurs ouverts" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <texte>, transmettre vers xchat le texte sous forme brute, comme s'il " +"avait été reçu depuis le serveur IRC" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <texte>, envoyer un texte à l'objet de la fenêtre actuelle" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <pseudo> [<fichier>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <hôte> <port> <canal>, se connecter et rejoindre un canal" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <hôte> <port> <canal>, se connecter et rejoindre un canal" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <hôte> [<port>] [<mot_de_passe>], se connecter à un serveur, " +"le port par défaut est 6667 pour les connexions normales, et 9999 pour les " +"connexions ssl" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <hôte> [<port>] [<mot_de_passe>], se connecter à un serveur, le port " +"par défaut est 6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <variable> [<valeur>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<position>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<sujet>], définir le sujet si on en fournit un, sinon afficher le " +"sujet actuel" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" +"\n" +"TRAY -f <délai> <fichier1> [<fichier2>] Spécifie les fichiers à utiliser " +"pour faire clignoter l'icone de barre d'état.\n" +"TRAY -f <fichier> Spécifie le fichier à utiliser pour " +"l'icone de barre d'état.\n" +"TRAY -i <numéro> Spécifie un icone interne pour le " +"clignotement de la barre d'état.\n" +"TRAY -t <texte> Spécifie le message d'aide de l'icone de " +"barre d'état.\n" +"TRAY -b <titre> <texte> Spécifie le message flottant de l'icone " +"de barre d'état." + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "" +"UNBAN <masque> [<masque>...], supprimer le bannissement pour les masques " +"fournis." + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <masque> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <nom>, décharger un greffon ou un script" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, ouvrir une URL dans votre navigateur" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <pseudo1> <npseudo2> etc., mettre en surbrillance le(s) " +"pseudonyme(s) dans la liste des utilisateurs du canal" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "" +"VOICE <pseudo>, donner la parole à quelqu'un (nécessite d'être opérateur " +"[chanop])" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <message>, écrire le message sur tous les canaux" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <message>, envoyer le message à tous les opérateurs du canal actuel " +"(chanops)" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Utilisation : %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"Aucune aide n'est disponible pour cette commande.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Cette commande n'existe pas.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Paramètres de la commande utilisateur erronés.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Trop de commandes utilisateur récursives, abandon." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Commande inconnue. Essayez /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "" +"Le symbole xchat_plugin_init n'existe pas ; est-ce vraiment un greffon " +"xchat ?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Êtes-vous sûr que ce serveur et ce port gèrent SSL ?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Résolution du nom d'hôte %s impossible.\n" +"Veuillez vérifier vos réglages IP.\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "La traversée du serveur mandataire (proxy) a échoué.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Passage au serveur suivant dans %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Attention : le jeu de caractères « %s » est inconnu. Aucune conversion ne " +"sera effectuée pour le réseau %s." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 a été ajouté à la liste de notification." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Liste de bannissement : %C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tImpossible de rejoindre%C26 %B$1 %O(Vous êtes banni)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 s'appelle maintenant $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 met un ban sur $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tCanal $1 créé le $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "" +"%C22*%O$t%C26$1%Oi enlève son état de demi-opérateur « half-operator » de " +"canal à%C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O enlève son état d'opérateur de canal à%C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O enlève la parole à%C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$t définit « l'exempt » sur $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O donne l'état de demi-opérateur à%C26 $2" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 définit l'invite sur $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UCanal Utilisateurs Sujet" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 active le mode $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Modes du canal $1 : $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O donne l'état d'opérateur de canal à%C26 $2" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 supprime l'exempt sur $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 supprime l'invite sur $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 enlève le mot-clé du canal" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 enlève la limite d'utilisateurs" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 définit le mot-clé du canal à $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 définit la limite du canal à $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 supprime l'état de bannissement de $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O donne la parole à%C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Connecté. Identification en cours..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22Connexion à $1 ($2) port $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21La connexion a échoué. Erreur : $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tUn CTCP $1 de $2 a été reçu" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tUn CTCP $1 de $2 (pour $3) a été reçu" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tUn son CTCP $1 a été reçu de $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tUn son CTCP $1 de $2 (pour $3) a été reçu" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tDCC CHAT à %C26$1%O interrompu." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$tConnexion DCC CHAT établie à %C26$1 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tPerte du DCC CHAT avec %C26$1%O ($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tRéception d'une offre de DCC CHAT de $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tProposition de DCC CHAT à $1" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tUn CHAT est déjà proposé à $1" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$tDCC $1 tentative de connexion à%C26 $2%O échouée (err=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$t« $1%O » reçu de $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 Type À/De État Taille Pos Fichier " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O." +"%010%C22*%O$tContents of packet: $2" +msgstr "" +"%C22*%O$tReçu une requête DCC mal formée de %C26$1%O.%010%C22*%O$tContenu du " +"paquet : $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tProposition de%C26 $1%O à%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tPas d'offre DCC correspondante." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV%C26 $2%O vers%C26 $1%O interrompu." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC RECV%C26 $1%O de%C26 $3%O terminé %C30[%C26$4%O cps%C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC RECV connexion établie avec%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV%C26 $1%O de%C26 $3%O échoué ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV : ouverture de $1 en écriture impossible ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "%C22*%O$tLe fichier%C26 $1%C existe déjà, enregistré sous%C26 $2%O." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Oa demandé à reprendre%C26 $2 %Cdepuis%C26 $3%C." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC SEND%C26 $2%O vers%C26 $1%O interrompu." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC SEND%C26 $1%O à%C26 $2%O terminé %C30[%C26$3%O cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC SEND connexion établie vers%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND%C26 $1%O vers%C26 $2%O échoué. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Oa proposé%C26 $2 %O(%C26$3 %Ooctets)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oà%C26 $3 %Cfigé - abandon." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oà%C26 $3 %Odélai dépassé - abandon." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 supprimé de la liste de notification." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tDéconnecté ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tVotre IP a été trouvée : [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O ajouté à la liste d'exclusion." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "Exclusion sur %C26$1%O modifiée." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 Masque d'hôte PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O enlevé de la liste d'exclusion." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " La liste d'ignorance est vide." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "%C22*%O$tNe peut rejoindre%C26 %B$1 %O(Canal en invite seulement)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tVous êtes invité sur%C26 $1%O par%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) a rejoint $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$tNe peut rejoindre%C26 %B$1 %O(Requiert le mot-clé)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 a expulsé $2 de $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$tVous avez été tué par $1 ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD sauté." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 est déjà utilisé. Réessai avec $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$tPseudonyme déjà utilisé. Utilisez /NICK pour en essayer un autre." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tAucun DCC correspondant." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tAucun processus ne tourne actuellement" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tLa liste de notification est vide." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Liste de notification " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 utilisateurs dans la liste de notification." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tNotify: $1 est hors-ligne ($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tNotify: $1 est en ligne ($3)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) a quitté $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) a quitté $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tRéponse de $1 à la requête ping : $2 seconde(s)" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "" +"%C22*%O$tAucune réponse à la requête ping depuis $1 secondes, déconnexion." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tUn processus tourne déjà" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 est parti (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 définit les modes%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tRecherche de l'adresse IP de%C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22Connecté." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22Recherche de $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tArrêt de la tentative de connexion précédente (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29Le sujet de $1%C %C29est : $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 a changé le sujet en : $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29Sujet de $1%C %C29défini par $2%C %C29le $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tHôte inconnu. Peut-être avez vous fait une faute de frappe ?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "" +"%C22*%O$tImpossible de rejoindre%C26 %B$1 %O(limite d'utilisateurs atteinte)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Utilisateurs sur $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cest absent %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OFin de la liste WHOIS." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O inactif %C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "" +"%C22*%O$t%C28[%O$1%C28]%O inactif %C26 $2%O, ouverture de session :%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" +"%C22*%O$t%C28[%O$1%C28] %Outilisateur réel@hôte%C27 $2%O, IP réelle%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Vous parlez maintenant sur $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tVous avez été expulsé de $2 par $3 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tVous avez quitté le canal $3" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tVous avez quitté le canal $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tVous avez invité%C26 $1%O à%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tVous vous appelez maintenant $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "Historique chargé depuis" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** FIN DU JOURNAL À %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** DÉBUT DU JOURNAL À %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Impossible d'ouvrir le(s) fichier(s) journaux en écriture.\n" +" Veuillez vérifier les permissions de %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Message de gauche" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Message de droite" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "Pseudo de la personne qui arrive" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "Canal à rejoindre" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "Hôte de la personne" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Pseudonyme" + +#: src/common/text.c:973 +msgid "The action" +msgstr "Action" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Caractère de mode" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Texte identifié" + +#: src/common/text.c:980 +msgid "The text" +msgstr "Texte" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Message" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Ancien pseudonyme" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Nouveau pseudonyme" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Pseudonyme de la personne qui a changé le sujet" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Sujet" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Canal" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "Pseudonyme de celui qui a expulsé" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "Personne qui se fait expulser" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "Canal" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "Raison" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "Pseudonyme de la personne qui part" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "Heure" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "Créateur" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Pseudonyme" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Raison" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Hôte" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "Émetteur" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "Heure au format x.x (voir ci-dessous)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "Canal de destination" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "Son" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "Pseudonyme de la personne" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "Événement CTCP" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "Pseudonyme de la personne qui a défini la clé" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "Clé" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "Pseudonyme de la personne qui a défini la limite" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "Limite" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "Pseudonyme de la personne qui a donné l'état d'opérateur" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "Pseudonyme de la personne qui a reçu l'état d'opérateur" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "Pseudonyme de la personne qui a reçu l'état de demi-opérateur" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "Pseudonyme de la personne qui a donné l'état de demi-opérateur" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "Pseudonyme de la personne qui a donné la parole" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "Pseudonyme de la personne à qui a été donnée la parole" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "Pseudonyme de la personne qui a fait le bannissement" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "Masque de bannissement" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "Pseudonyme de la personne qui a supprimé la clé" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "Pseudonyme de la personne qui a supprimé la limite" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "Pseudonyme de la personne qui a supprimé l'état d'opérateur" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "Pseudonyme de la personne à qui on a supprimé l'état d'opérateur" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "Pseudonyme de la personne qui a supprimé l'état de demi-opérateur" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Pseudonyme de la personne à qui on a supprimé l'état de demi-opérateur" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "Pseudonyme de la personne qui a supprimé la parole" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "Pseudonyme de la personne à qui on a supprimé la parole" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "Pseudonyme de la personne qui a supprimé l'état de bannissement" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "Pseudonyme de la personne qui a fait l' « exempt »" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "Masque d'exempt" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "Pseudonyme de la personne qui a supprimé l'exempt" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "Pseudonyme de la personne qui a fait l'invite" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "Masque d'invite" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "Pseudonyme de la personne qui a enlevé l'invite" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "Pseudonyme de la personne qui a défini le mode" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "Signe du mode (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "Lettre de mode" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "Canal de destination" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Nom d'utilisateur" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Nom complet" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Membre des canaux (opérateur IRC)" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Informations serveur" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Durée d'inactivité" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Heure de connexion" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Raison de l'absence" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Message" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Compte" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "utilisateur réel@hôte" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "IP réelle" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Nom du canal" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Texte" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Nom du serveur" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Pseudonyme de la personne qui vous a invité" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Utilisateurs" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Pseudonyme déjà utilisé" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Pseudonyme en essai" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Port" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Réseau" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Chaîne de modes" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "Adresse IP" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "Type de DCC" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Nom de fichier" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Nom du fichier de destination" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "cps" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Chemin" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Position" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Taille" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "Chaîne DCC" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Nombre de notifications" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Ancien nom de fichier" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Nouveau nom de fichier" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Destinataire" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Masque d'hôte" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Nom d'hôte" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "Paquet" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Secondes" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Pseudonyme de la personne qui a été invitée" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Masque de bannissement" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "qui a défini le bannissement" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Heure du bannissement" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Erreur d'analyse de l'événement %s.\n" +"Chargement des valeurs par défaut." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"Impossible de lire le fichier audio :\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "L'hôte distant a fermé la socket" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Connexion refusée" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Pas de route vers l'hôte" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Expiration du délai de connexion" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Ne peut assigner cette adresse" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Connexion réinitialisée à l'autre extrémité" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Île Ascension" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Andorre" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Émirats Arabes Unis" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Afghanistan" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Antigua-et-barbuda" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Albanie" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Arménie" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Antilles néerlandaises" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Antarctique" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Argentine" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "DNS inverse" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Samoa américaines" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Autriche" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Australie" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Aland, îles" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Azerbaïdjan" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Bosnie-herzégovine" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Barbade" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Bangladesh" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Belgique" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Burkina faso" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Bulgarie" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Bahreïn" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Businesses" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Bénin" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Bermudes" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Brunéi darussalam" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Bolivie" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Brésil" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Bahamas" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Bhoutan" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Bouvet, île" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Bélarus" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Canada" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Cocos (keeling), îles" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "République Démocratique du Congo" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "Centrafricaine, république" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Congo" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Suisse" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Côte d'Ivoire" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Cook, îles" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Chili" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Cameroun" + +#: src/common/util.c:898 +msgid "China" +msgstr "Chine" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Colombie" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Internic commercial" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Costa rica" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Serbie Montenegro" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Cuba" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Cap-vert" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Christmas, île" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Chypre" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "Tchèque, république" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Allemagne" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Djibouti" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Danemark" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Dominique" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "Dominicaine, république" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Algérie" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Équateur" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Institution éducative" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Estonie" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Égypte" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Sahara occidental" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Érythrée" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Espagne" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Éthiopie" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Union Européenne" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Finlande" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Fidji" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Falkland, îles (malvinas)" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Micronésie, états fédérés de" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Féroé, îles" + +#: src/common/util.c:928 +msgid "France" +msgstr "France" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Grande Bretagne" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Grenade" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Géorgie" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Guyane française" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Îles anglo-normandes" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Ghana" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Groenland" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Gambie" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Guinée" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Gouvernement" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Guadeloupe" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Guinée équatoriale" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Grèce" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Géorgie du sud et les îles Sandwich du sud" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Guinée-bissau" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Guyana" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Hong-kong" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Heard, île et mcdonald, îles" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Croatie" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Haïti" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Hongrie" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Indonésie" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Irlande" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Israël" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Île de Man" + +#: src/common/util.c:959 +msgid "India" +msgstr "Inde" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Informatif" + +#: src/common/util.c:961 +msgid "International" +msgstr "International" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Océan indien, territoire britannique de l'" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Iraq" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Iran, république islamique d'" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Islande" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Italie" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Jamaïque" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Jordanie" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Japon" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Kenya" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Kirghizistan" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Cambodge" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Comores" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "Saint-kitts-et-nevis" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Corée, république populaire démocratique de" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Corée, république de" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Koweït" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Caïmanes, îles" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Kazakhstan" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Lao, République Démocratique Populaire" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Liban" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Sainte-lucie" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Sri lanka" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Libéria" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Lituanie" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Luxembourg" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Lettonie" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Libyenne, jamahiriya arabe" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Maroc" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Monaco" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Moldova, république de" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "Médical États-Unis" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Madagascar" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Marshall, îles" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Militaire" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Macédoine, l'ex-République Yougoslave de" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Mongolie" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Macao" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Mariannes du nord, îles" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Martinique" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Mauritanie" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Malte" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Maurice" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Maldives" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Mexique" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Malaisie" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Mozambique" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Namibie" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Nouvelle-Calédonie" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Réseau Internic" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Norfolk, île" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Nigéria" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Pays-Bas" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Norvège" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Népal" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Niué" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Nouvelle-Zélande" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Internic Organisation non-lucrative" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Pérou" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Polynésie française" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Papouasie-nouvelle-Guinée" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Philippines" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Pologne" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "Saint-Pierre-et-Miquelon" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Porto Rico" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Territoires Palestiniens" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Portugal" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Palaos" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Paraguay" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Qatar" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Réunion" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Roumanie" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "Ancien ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Russie, fédération de" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Rwanda" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Arabie saoudite" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Salomon, îles" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Seychelles" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Soudan" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Suède" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Singapour" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "Sainte-Hélène" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Slovénie" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard et île jan mayen" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Slovaquie" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Sierra Léone" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "Saint-Marin" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Sénégal" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Somalie" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Suriname" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "Sao Tomé-et-Principe" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Ex URSS" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Syrienne, république arabe" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Swaziland" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Turks et caïques, îles" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Tchad" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Terres australes françaises" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Thaïlande" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Tadjikistan" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Timor-Leste" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Turkménistan" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Tunisie" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Turquie" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Trinité-et-Tobago" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Taïwan, province de chine" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Tanzanie, République-Unie de" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Ukraine" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Ouganda" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Royaume-Uni" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "États-Unis" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Uruguay" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Ouzbékistan" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Saint-Siège (État de la Cité du Vatican)" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "Saint-Vincent et les Grenadines" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Vénézuela" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Îles Vierges Britanniques" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "Îles Vierges des États-Unis" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Viet Nam" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Wallis et Futuna" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Yémen" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Yougoslavie" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Afrique du Sud" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Zambie" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Inconnu" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "Ouvrir la fenêtre de dialogue" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "Envoyer un fichier" + +#: src/common/xchat.c:728 +#, fuzzy +msgid "_User Info (WhoIs)" +msgstr "Informations de l'utilisateur (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +#, fuzzy +msgid "O_perator Actions" +msgstr "Actions de l'opérateur" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Donner l'état d'opérateur" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Prendre l'état d'opérateur" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Donner la parole" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Prendre la parole" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Expulser/Bannir" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Expulser" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Bannir" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "ExpulserBannir" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Quitter le canal" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Rejoindre un canal..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Entrer le canal à rejoindre :" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Liens du serveur" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Envoyer une requête ping au serveur" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Cacher la version" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Op" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "Suppr. Op." + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "au revoir" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Entrer la raison pour expulser %s :" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Envoyer un fichier" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Dialogue" + +# Non traduit pour garder signification /DCC send +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "WhoIs" + +# Non traduit pour garder signification /DCC send +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Send" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Chat" + +# Attention problème : devrait être traduit parfois +# Non traduit pour garder signification /DCC send +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Clear" + +# Non traduit pour garder signification /DCC send +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "Impossible de se connecter au bus de session" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "Impossible de compléter NameHasOwner" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "Impossible de terminer la commande" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "accès distant" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "greffon pour l'accès à distance en utilisant DBUS" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Impossible de se connecter au bus: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Échec de l'acquisition de %s : %s\n" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "À _propos" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Client IRC multiplateformes" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Table de caractères" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "Non connecté." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Vous devez sélectionner des bannissements." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "Voulez-vous vraiment enlever les bannissements de %s ?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Masque" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "De" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Date" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" +"Vous ne pouvez ouvrir la fenêtre de liste de banissement lorsque vous vous " +"trouvez dans un onglet de canal." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat : liste de bannissement (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Enlever" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Scinder" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Rafraîchir" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Affichage de %d/%d utilisateurs sur %d/%d canaux." + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Choisir un nom de fichier de sortie" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "Re_joint le canal" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "_Copie le nom du canal" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "Copie le suje_t du canal" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat : liste des canaux (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "_Recherche" + +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "_Télécharger" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "Sauver la _Liste" + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "Seuls les canaux " + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "ayant entre" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "et" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "utilisateurs." + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "Chercher dans :" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "Nom du canal" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "Type de recherche :" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "Recherche simple" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "Recherche par motif (*)" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "Expression rationnelle" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Rechercher :" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Envoyer le fichier à %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Ce fichier ne peut être repris." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"Impossible d'accéder au fichier : %s\n" +"%s.\n" +"Reprise impossible." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"Le fichier dans le répertoire des téléchargements est plus gros que le " +"fichier proposé. La reprise est impossible." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "" +"Impossible de reprendre le même fichier en provenance de deux personnes " +"différentes." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: Envois et réceptions" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "État" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Fichier" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "Heure de fin estimée" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Les deux" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Envois" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "Récupération" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Détails" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Fichier : " + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "Adresse : " + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Interrompre" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Accepter" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Reprendre" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Ouvrir le dossier..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat : liste de Chat DCC" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Recv" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Envoyé" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "Heure de début" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*NOUVEAU*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "ÉDITEZ MOI" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Nom" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Commande" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Vers le haut" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Vers le bas" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Annuler" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Enregistrer" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Nouveau" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Supprimer" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Trier" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Aide" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "Ne pas se connecter automatiquement aux serveurs" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "Utiliser un répertoire de configuration différent" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "Ne charger aucun greffon automatiquement" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "Afficher le répertoire de chargement automatique des greffons" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "Afficher le répertoire de configuration de l'utilisateur" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Ouvrir une URL irc://serveur:port/canal" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Exécuter la commande :" + +#: src/fe-gtk/fe-gtk.c:132 +#, fuzzy +msgid "Open URL or execute command in an existing XChat" +msgstr "Ouvrir l'URL dans un XChat existant" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Démarré minimisé. 0=Normal 1=Minimisé 2=Dans l'icone d'état" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "niveau" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Afficher la version" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"L'ouverture de la police a échoué :\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "Le tampon de recherche est vide.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d octets" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "File d'envoi du serveur : %d octets" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"L'action Run Command exécute les données dans Données 1 comme si elles " +"avaient été tapées dans la zone de saisie où vous avez pressé la séquence de " +"touches. Ainsi, elle peut contenir du texte (qui sera envoyé au canal/" +"personne), des commandes ou des commandes utilisateur. Quand elle s'exécute " +"tous les caractères \\n dans Données 1 sont utilisés pour délimiter des " +"commandes séparées ce qui permet de lancer plus d'une commande. Si vous " +"voulez un \\ dans le texte effectivement exécuté, entrez \\\\" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"La commande Change Page échange les pages présentes dans le bloc-notes. " +"Définissez Données 1 à la page vers laquelle vous voulez sauter. Si Données " +"2 est défini alors l'échange sera relatif à la position actuelle" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"La commande Insert in Buffer insérera le contenu de Données 1 dans la zone " +"où la séquence de touches a été pressée à la position actuelle du curseur" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"La commande Scroll Page fait défiler l'élément graphique textuel vers le " +"haut ou vers le bas d'une page ou d'une ligne. Définir Data 1 soit à Up, " +"Down, +1 ou -1." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"La commande Set Buffer met le contenu de Données 1 dans la zone où la " +"séquence de touches a été pressée" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"La commande Last Command met dans la zone la dernière commande entrée - même " +"comportement que la flèche vers le haut du pavé numérique dans un " +"interpréteur de commandes" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"La commande Next Command met dans la zone la prochaine commande entrée - " +"même comportement que la flèche vers le bas du pavé numérique dans un " +"interpréteur de commandes" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Cette commande change le texte de la zone de saisie pour compléter un pseudo " +"ou une commande incomplet. Si Données 1 est défini, alors un double appui " +"dans une chaîne sélectionnera le dernier pseudo, pas le suivant" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Cette commande parcourt vers le haut ou le bas la liste des pseudonymes. Si " +"Données 1 est défini elle parcourt vers le haut, sinon elle parcourt vers le " +"bas" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Cette commande vérifie si le dernier mot saisi dans la zone est présent dans " +"la liste de remplacements et le remplace si elle trouve une correspondance" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Cette commande déplace l'onglet de devant d'un cran vers la gauche" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Cette commande déplace l'onglet de devant d'un cran vers la droite" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Cette commande déplace l'ensemble des onglets vers la gauche" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Cette commande déplace l'ensemble des onglets vers la droite" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "" +"Placer la ligne de saisie dans l'historique mais ne pas l'afficher sur le " +"serveur" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "" +"Il y a eu une erreur au chargement de la configuration des raccourcis clavier" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<aucun>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Mod" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Touche" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Action" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat : raccourcis clavier" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Majuscule" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Données 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Données 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Erreur d'ouverture du fichier des raccourcis clavier\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Nom de touche %s inconnu dans le fichier de configuration des raccourcis " +"clavier\n" +"Chargement interrompu, veuillez corriger %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Action %s inconnue dans le fichier de configuration des raccourcis clavier\n" +"Chargement interrompu, veuillez corriger %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Attente d'une ligne de données (commençant par Dx{:|!}) mais reçu :\n" +"%s\n" +"\n" +"Chargement interrompu, veuillez corriger %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"Le fichier de configuration des raccourcis clavier est corrompu\n" +"Chargement interrompu, veuillez corriger %s/keybindings.conf\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "Impossible d'écrire dans ce fichier." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Impossible de lire ce fichier." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Ce masque existe déjà." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Privé" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Notice" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Inviter" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Ne plus exclure" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Entrer le masque d'exclusion :" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat : liste d'ignorance" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Statistiques d'ignorance :" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Canal :" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privé :" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Notice :" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP :" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Invite :" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "Ajouter..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "Le nom de canal est trop court, veuillez réessayer." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat : fin de la procédure de connexion" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "Connecté à %s." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"Dans la fenêtre de liste des serveurs, aucun canal (salon de discussion) de " +"ce réseau n'a été défini comme devant être rejoint automatiquement." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "Que désirez-vous faire maintenant ?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "_Rien, je rejoindrai un canal plus tard." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "Re_joindre le canal :" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" +"Si vous connaissez le nom du canal que vous désirez rejoindre, entrez-le ici." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "Ou_vrir la fenêtre de liste des canaux." + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "" +"La récupération de la liste des canaux peut prendre une ou deux minutes." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "_Toujours afficher ce dialogue après la connexion." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Dialoguer avec" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Le sujet de %s est : %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Aucun sujet n'est défini" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"Ce serveur comporte déjà %d canaux ou dialogues qui lui sont associés. Faut-" +"il tous les fermer ?" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "Quitter XChat ?" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "Ne plus me demander." + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Vous êtes connecté à %i réseaux IRC." + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "Voulez-vous vraiment quitter ?" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "Des transferts de fichiers sont en cours." + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "_Minimiser dans la barre d'état" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Insérer un attribut ou un code de couleur" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Gras</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Souligné</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Normal" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Couleurs 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Couleurs 8-15" + +#: src/fe-gtk/maingui.c:1612 +#, fuzzy +msgid "_Settings" +msgstr "_Paramètres" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "Cacher les messages join/part" + +#: src/fe-gtk/maingui.c:1625 +#, fuzzy +msgid "_Extra Alerts" +msgstr "Alertes" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "Biper sur les messages" + +#: src/fe-gtk/maingui.c:1628 +#, fuzzy +msgid "Blink Tray _Icon" +msgstr "Clignoter l'icone de barre d'état" + +#: src/fe-gtk/maingui.c:1629 +#, fuzzy +msgid "Blink Task _Bar" +msgstr "Quand faire clignoter la barre d'état :" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +#, fuzzy +msgid "_Detach" +msgstr "_Détacher l'onglet" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "_Fermer" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "La limite d'utilisateurs doit être un nombre !\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Protection du sujet (Topic)" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Aucun message de l'extérieur" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Secret" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Invite seulement" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Modéré" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Liste de bannissement" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Mot-clé" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Limite d'utilisateurs" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Afficher/Cacher la liste des utilisateurs" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"Impossible de définir un arrière-plan transparent.\n" +"\n" +"Il est possible que vous utilisiez un gestionnaire\n" +"de fenêtres qui n'est pas géré pour le moment.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Entrer le nouveau pseudonyme :" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Hôte inconnu" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Nom réel :" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Utilisateur :" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "Pays :" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Serveur :" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "il y a %u minutes" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Dernier message :" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Message d'absence :" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"La barre de menu est maintenant cachée. Vous pouvez l'afficher de nouveau en " +"pressant F9 ou en cliquant avec le bouton droit de la souris dans une partie " +"vierge de la zone de texte principale." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Ouvrir le lien dans un navigateur" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Copier le lien sélectionné" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Rejoindre le canal" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Partir du canal" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Cycler canal" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat : menu utilisateur" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Éditer ce menu..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Récupérer la liste des canaux..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Commandes utilisateur - codes d'échappement :\n" +"\n" +"%c = canal actuel\n" +"%e = réseau actuel\n" +"%m = informations sur la machine\n" +"%n = votre pseudo\n" +"%t = date/heure\n" +"%v = version de xchat\n" +"%2 = 2e mot\n" +"%3 = 3e mot\n" +"&2 = du 2e mot à la fin de la ligne\n" +"&3 = du 3e mot à la fin de la ligne\n" +"\n" +"exemple :\n" +"/cmd sylvain bonjour\n" +"\n" +"%2 sera \"sylvain\"\n" +"&2 sera \"sylvain bonjour\"." + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Boutons de la liste des utilisateurs - code d'échappement : \n" +"\n" +"%a = tous les pseudos sélectionnés\n" +"%c = canal actuel\n" +"%e = réseau actuel\n" +"%h = nom d'hôte du pseudo sélectionné\n" +"%m = informations sur la machine\n" +"%n = votre pseudo\n" +"%s = le pseudo sélectionné\n" +"%t = date/heure\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Boutons de la boite de dialogue - Codes d'échappement : \n" +"\n" +"%a = tous les pseudos sélectionnés\n" +"%c = canal actuel\n" +"%e = réseau actuel\n" +"%h = nom d'hôte du pseudo sélectionné\n" +"%m = informations sur la machine\n" +"%n = votre pseudo\n" +"%s = le pseudo sélectionné\n" +"%t = date/heure\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"Réponses CTCP - Codes d'échappement :\n" +"\n" +"%d = données (toute la réponse CTCP)\n" +"%e = réseau actuel\n" +"%m = informations sur la machine\n" +"%s = pseudo ayant envoyé le CTCP\n" +"%t = date/heure\n" +"%2 = 2e mot\n" +"%3 = 3e mot\n" +"&2 = du 2e mot à la fin de la ligne\n" +"&3 = du 3e mot à la fin de la ligne\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"Gestionnaires d'URL - Codes spéciaux :\n" +"\n" +"%s = la chaîne d'URL\n" +"\n" +"Placer un ! devant la commande\n" +"indique qu'elle devrait être\n" +"envoyée à un interpréteur de commandes\n" +"au lieu de XChat" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat : commandes définies par l'utilisateur" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat : menu de la liste des utilisateurs" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Remplacer par" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat : remplacer" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat : gestionnaires d'URL" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat : boutons de la liste des utilisateurs" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat : boutons de dialogue" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat : réponses CTCP" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "Li_ste des réseaux..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "_Nouveau" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Onglet de serveur..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Onglet de canal..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Fenêtre de serveur..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Fenêtre de canal..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "_Charger un greffon ou un script..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "_Quitter" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "_Vue" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "Barre de _menu" + +#: src/fe-gtk/menu.c:1592 +msgid "_Topic Bar" +msgstr "Barre de suje_t" + +#: src/fe-gtk/menu.c:1593 +msgid "_User List" +msgstr "Liste d'_utilisateurs" + +#: src/fe-gtk/menu.c:1594 +msgid "U_serlist Buttons" +msgstr "Bouton_s de la liste des utilisateurs" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "Boutons de m_ode" + +#: src/fe-gtk/menu.c:1597 +msgid "_Channel Switcher" +msgstr "Sélecteur de _canaux" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "_Onglets" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "_Arbre" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "_Indicateurs du réseau" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Aucun" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Graphique" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "_Serveur" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "Se _déconnecter" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "Se _reconnecter" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "Rejoindre un canal..." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "Rejoindre un canal..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Marquer absent (Away)" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "Menu de l_utilisateur" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "_Paramètres" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "_Préférences" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "_Avancés" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Remplacement automatique..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "Réponses CTCP..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Boutons de dialogue..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Raccourcis clavier..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Événements textuels..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "Gestionnaires d'URL..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Commandes utilisateur..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Boutons de la liste des utilisateurs..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Menu contextuel de la liste des utilisateurs..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_Fenêtre" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Liste de bannissement..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Table de caractères..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Chat direct..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Transferts de fichiers..." + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "Liste de bannissement..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Liste d'ignorance..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Greffons et scripts..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Journal brut..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "Capture d'URL..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Repositionner la ligne de repérage" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "_Effacer le texte" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Rechercher du texte..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Enregistrer le texte..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_Aide" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "_Contenu" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "À _propos" + +#: src/fe-gtk/menu.c:2147 +#, fuzzy +msgid "_Attach" +msgstr "_Attacher la fenêtre" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Dernière apparition" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Déconnecté" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Jamais" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "il y a %d minutes" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Connecté" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Entrer le pseudonyme à ajouter :" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "Notifier depuis les réseaux suivants :" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "Entrez les réseaux séparés par une virgule." + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "XChat : liste des fichiers envoyés" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "Ouvrir la fenêtre de dialogue" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" +"Je ne trouve pas 'notify-send' pour ouvrir les fenêtres d'alertes.\n" +"Merci d'installer libnotify." + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "XChat : Vous êtes connecté à %u réseaux et %u canaux" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "Affiche_r" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "Cac_her" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "_Clignoter lors des" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "Messages de canaux" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "Messages privés" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "Messages en surbrillance" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "Absent" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat : Message en surbrillance de %s (%s)" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat : %u messages en surbrillance. Le dernier est de %s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat : Nouveau message public de %s (%s)" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat : %u nouveaux messages publics." + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat : Message privé de %s (%s)" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "XChat : %u messages privés. Le dernier est de %s (%s)" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat : Demande de transfert de fichier de %s (%s)" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "" +"XChat : %u demandes de transferts de fichier. Le dernier est de %s (%s)" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Version" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Description" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Sélectionner un greffon ou un script à charger" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat : greffons et scripts" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "_Charger..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "_Décharger" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Enregistrer sous..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat : journal brut (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Effacer les journaux bruts" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "" +"La fenêtre pour laquelle vous avez ouvert cette recherche n'existe plus." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "Fin atteinte lors de la recherche, non trouvé." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat : chercher" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "_Sensible à la casse" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "Rechercher vers l'a_rrière" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "_Rechercher" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Nouveau réseau" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Voulez-vous vraiment supprimer le réseau « %s » et tous ses serveurs ?" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "canal" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat : liste des canaux (%s)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "Mot de passe :" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "_Éditer" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "Le nom d'utilisateur et le nom réel ne peuvent être laissés blancs." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat : éditer %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Serveur pour %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Ne se connecter qu'aux serveurs sélectionnés" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Ne pas passer au serveur suivant lorsque la connexion échoue." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Vos paramètres" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Utiliser les informations utilisateur globales" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "_Pseudonyme :" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Second choix :" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "Nom d'_utilisateur :" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "Nom _réel :" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Connexion en cours" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Connexion automatique à ce réseau au démarrage" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "Utiliser un serveur mandataire (proxy)" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "Utiliser SSL pour tous les serveurs de ce réseau" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Accepter un certificat SSL non valable" + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "Quitter le canal :" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "Canaux à rejoindre, séparé par des virgules, mais sans espace !" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Commande de connexion :" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Commande supplémentaire à exécuter après la connexion. Si vous avez besoin " +"de plus d'une seule commande, positionnez ceci à « LOAD -e " +"<nom_de_fichier> », où <nom_de_fichier> est un fichier texte contenant les " +"commandes à exécuter." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Mot de passe pour « nickserv » :" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Si votre pseudonyme a besoin d'un mot de passe, veuillez l'entrer ici. Ce " +"n'est pas géré par tous les réseaux IRC." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Mot de passe du serveur :" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Mot de passe du serveur en cas de doute, le laisser blanc." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Jeu de caractères :" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat : liste des réseaux" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Information utilisateur" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Troisième choix :" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Réseaux" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "Sauter la liste des réseaux au démarrage" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "_Éditer..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "_Trier" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" +"Trie les réseaux dans l'ordre alphabétique. Utilisez Shift-Haut et Shift-Bas " +"pour déplacer une ligne." + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "C_onnecter" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Apparence de la boîte de texte" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Police :" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Image d'arrière-plan :" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Lignes de défilement :" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Colorer les pseudonymes" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Attribuer une couleur différente à chaque personne sur l'IRC" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Indenter les pseudonymes" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Afficher les pseudonymes en les justifiant à droite" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Arrière-plan transparent" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Afficher la ligne de repérage" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Insérer une ligne rouge après le dernier texte lu." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Paramètres de transparence" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Rouge :" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Vert :" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Bleu :" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Horodatage" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Activer l'horodatage" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Format de l'horodatage :" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Voir la page de manuel de strftime pour plus de détails." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "Le dernier ayant parlé d'abord" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Boîte de saisie" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Utiliser la police et les couleurs de la boîte de texte" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Vérification orthographique" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Complétion des pseudonymes" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "" +"Complétion automatique des pseudonymes (sans utilisation de la touche de " +"tabulation)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Suffixe pour la complétion des pseudonymes :" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "Tri de la complétion des pseudo :" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Codes de la boîte de saisie" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Interpréter %nnn comme une valeur ASCII" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Interpréter %C, %B comme Color, Bold, etc." + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, les opérateurs en premier" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "A-Z, les opérateurs en dernier" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Non classé" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "Gauche (Haut)" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "Gauche (Bas)" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "Droite (Haut)" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "Droite (Bas)" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Haut" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Bas" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Cachés" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Liste Utilisateur" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Afficher les noms d'hôtes dans la liste des utilisateurs" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Liste des utilisateurs classée par :" + +#: src/fe-gtk/setup.c:205 +msgid "Show user list at:" +msgstr "Position de la liste des utilisateurs :" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Suivi de l'absence" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "" +"Suivre l'état d'absence des utilisateurs et les afficher dans une couleur " +"différente" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "Sur les canaux plus petits que :" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Action sur un double clic" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Fenêtres" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Onglets" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Toujours" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Uniquement les onglets nécessaires" + +#: src/fe-gtk/setup.c:242 +msgid "Tree" +msgstr "Arbre" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "Type de liste des canaux :" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Ouvrir un onglet supplémentaire pour les messages du serveur" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Ouvrir un onglet supplémentaire pour les notifications du serveur" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "Ouvrir un nouvel onglet lors de la réception de message privé" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Trier les onglets par ordre alphabétique" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "Petits onglets" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Focus sur les nouveaux onglets :" + +#: src/fe-gtk/setup.c:258 +msgid "Show channel switcher at:" +msgstr "Position de la liste des canaux :" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Réduire les étiquettes des onglets à :" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "lettres." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Onglets ou fenêtres" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Ouvrir les canaux dans :" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Ouvrir les boîtes de dialogue dans :" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Ouvrir les utilitaires dans :" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Faut-il DCC, Ignore, Notify, etc., dans des onglets ou des fenêtres ?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "Non" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Oui" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "Parcourir pour le dossier d'enregistrement à chaque fois" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Fichiers et répertoires" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Accepter automatiquement les propositions de fichiers :" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Télécharger les fichiers vers :" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Déplacer les fichiers terminés vers :" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Enregistrer le pseudonyme dans des noms de fichiers" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Paramètres du réseau" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Obtenir mon adresse depuis le serveur IRC" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Demander au serveur IRC votre adresse réelle. À utiliser si vous avez une " +"adresse du style 192.168.*.* !" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "Adresse IP DCC :" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "" +"Prétendre que vous êtes à cette adresse quand vous proposez des fichiers." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Premier port DCC Send :" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Dernier port DCC Send :" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "Laisser les ports à zéro pour la plage complète." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Vitesse maximale des transferts de fichiers (octets par seconde)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Par envoi :" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Vitesse maximale pour un transfert" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Par téléchargement :" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Tous les transferts combinés :" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Vitesse maximale pour tous les fichiers" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Tous les téléchargements combinés :" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Alertes" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "Quand montrer une fenêtre de notification :" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "Clignoter l'icone de barre d'état" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "Quand faire clignoter la barre d'état :" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "Quand émettre un bip : " + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "Activer l'icone de barre d'état" + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "Messages en surbrillance" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" +"Les messages en surbrillance sont ceux où apparait votre pseudo, mais aussi :" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "Mots déclenchant une surbrillance :" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "Pseudo à ne pas mettre en surbrillance :" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "Pseudos à toujours mettre en surbrillance :" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Séparer les mots avec des virgules." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Messages par défaut" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Quitter :" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Quitter le canal :" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Absent :" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Absent" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Annoncer les messages d'absence" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Annoncer vos messages d'absence sur tous les canaux" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "N'afficher qu'une seule fois le message d'absence" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "N'afficher qu'une seule fois les messages de départ identiques" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Enlever la marque d'absence automatiquement" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "" +"Enlever automatiquement la marque d'absence vous concernant avant d'envoyer " +"des messages" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Paramètres avancés" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Délai de reconnexion automatique :" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Afficher les MODEs sous forme brute" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Whois sur les notifications" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" +"Envoyer un /WHOIS quand un utilisateur arrive en ligne dans votre liste de " +"notification" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Cacher les messages join/part" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Cacher par défaut les messages join/part du canal" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Ouvrir automatiquement les fenêtres DCC" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Fenêtre d'envoi" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Fenêtre de réception" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Fenêtre de bavardage" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Journalisation" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "Activer l'enregistrement des conversations" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Nom du fichier journal :" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Serveur %c=Canal %n=Réseau." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Insérer l'horodatage dans les journaux" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Format de l'horodatage du journal :" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Désactivé)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "Proxy MS (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Toutes les connexions" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "Serveur IRC uniquement" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "« DCC Get » uniquement" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Votre adresse" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Lier à :" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "N'est utile que pour les ordinateurs ayant plusieurs adresses." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Serveur mandataire (proxy)" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Nom d'hôte :" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Port :" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Type :" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Utiliser le serveur mandataire (proxy) pour :" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Authentification par le proxy" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Utiliser l'authentification (Proxy MS, HTTP ou Socks5 uniquement)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Utiliser l'authentification (HTTP ou Socks5 uniquement)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Nom d'utilisateur :" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Mot de passe :" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Sélectionner une image" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "Choisir le dossier pour le réception de fichiers" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Choisir une police" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Parcourir..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Marquer les utilisateurs identifiés par :" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Marquer les utilisateurs non identifiés par :" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "Ouvrir le dossier des données" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Choisir la couleur" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Couleurs du texte" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "Couleurs mIRC :" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Couleurs locales :" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Premier plan :" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Arrière-plan :" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Texte d'inscription" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Couleurs de l'interface" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Nouvelles données :" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Ligne de repérage :" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Nouveau message :" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Utilisateur absent :" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Surbrillance :" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Événement" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Fichier son" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Sélectionner un fichier son" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Méthode pour reproduire les sons :" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "Programme de reproduction externe :" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "Programme _externe" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_Automatique" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "_Répertoire des fichiers son :" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Fichier son :" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "_Parcourir..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "_Jouer" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Interface" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Boîte de texte" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Liste des utilisateurs" + +#: src/fe-gtk/setup.c:1703 +msgid "Channel switcher" +msgstr "Liste des canaux" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Couleurs" + +# Non traduit pour garder signification /DCC send +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Bavardage" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Général" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Son" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Réglages relatifs au réseau" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Transferts de fichiers" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Catégories" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" +"Vous ne pouvez pas placer l'arbre en haut ou en bas !\n" +"Merci de passer en mode <b>Onglets</b> dans le menu <b>Vue</b> d'abord." + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" +"Certains réglages qui ont été modifiés nécessitent un redémarrage afin " +"d'être effectifs." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*ATTENTION*\n" +"Accepter automatiquement les DCC dans votre répertoire personnel\n" +"peut être dangereux et peut être exploité. Par exemple :\n" +"quelqu'un pourrait vous envoyer un .bash_profile" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat : préférences" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Il y a eu une erreur d'analyse de la chaîne" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Ce signal n'a reçu que %d paramètres, $%d n'est pas valable" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Afficher le fichier de texte" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Éditer les événements" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ Numéro" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Charger depuis..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Tout tester" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat : récupération d'URL" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Effacer la liste" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Copier l'URL sélectionnée" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Copier" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Enregistrer la liste dans un fichier" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d ops, %d total" + +#~ msgid "CLEAR, Clears the current text window" +#~ msgstr "CLEAR, effacer la fenêtre de texte actuelle" + +#~ msgid "CYCLE, parts current channel and immediately rejoins" +#~ msgstr "CYCLE, quitter le canal actuel et y revenir immédiatement" + +#~ msgid "NOTIFY [<nick>], lists your notify list or adds someone to it" +#~ msgstr "" +#~ "NOTIFY [<pseudo>], afficher votre liste de notifications ou y ajouter " +#~ "quelqu'un" + +#~ msgid "QUERY <nick>, opens up a new privmsg window to someone" +#~ msgstr "" +#~ "QUERY <pseudo>, ouvrir une nouvelle fenêtre de message privé avec " +#~ "quelqu'un" + +#~ msgid "%C18*$t$1%O $2" +#~ msgstr "%C18*$t$1%O $2" + +#~ msgid "%C21*%O$t%C21%B$1%O%C21 $2" +#~ msgstr "%C21*%O$t%C21%B$1%O%C21 $2" + +#~ msgid "%C18%H<%H$4$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$4$1%H>%H%O$t$2" + +#~ msgid "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" +#~ msgstr "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" + +#~ msgid "%C28-%C29$1/$2%C28-%O$t$3" +#~ msgstr "%C28-%C29$1/$2%C28-%O$t$3" + +#~ msgid "$1$t$2" +#~ msgstr "$1$t$2" + +#~ msgid "%C19>%O$1%C19<%O$t$2" +#~ msgstr "%C19>%O$1%C19<%O$t$2" + +#~ msgid "%C16*%O$t$1%O" +#~ msgstr "%C16*%O$t$1%O" + +#~ msgid "%C28-%C29$1%C28-%O$t$2" +#~ msgstr "%C28-%C29$1%C28-%O$t$2" + +#~ msgid "%C22*%O$tNotify: $1 is offline ($2)." +#~ msgstr "%C22*%O$tNotification : $1 est déconnecté ($2)." + +#~ msgid "%C22*%O$tNotify: $1 is online ($2)." +#~ msgstr "%C22*%O$tNotification : $1 est connecté ($2)." + +#~ msgid "%C28*%C29$3$1%C28*$t%O$2" +#~ msgstr "%C28*%C29$3$1%C28*$t%O$2" + +#~ msgid "%C18%H<%H$3$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$3$1%H>%H%O$t$2" + +#~ msgid "%C22*%O$t$1" +#~ msgstr "%C22*%O$t$1" + +#~ msgid "%C31%H<%H$4$1%H>%H%O%C30$t$2" +#~ msgstr "%C31%H<%H$4$1%H>%H%O%C30$t$2" + +#~ msgid "PID" +#~ msgstr "PID" + +#~ msgid "US Minor Outlying Islands" +#~ msgstr "Îles mineures éloignées des États-Unis" + +#~ msgid "Direct client-to-client" +#~ msgstr "Client-vers-client direct" + +#~ msgid "Send File" +#~ msgstr "Envoyer un fichier" + +#~ msgid "Offer Chat" +#~ msgstr "Proposer une discussion" + +#~ msgid "Abort Chat" +#~ msgstr "Abandonner la discussion" + +#~ msgid "Userinfo" +#~ msgstr "Informations sur l'utilisateur" + +#~ msgid "Clientinfo" +#~ msgstr "Informations sur le client" + +#~ msgid "Time" +#~ msgstr "Délai" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "Opér" + +#~ msgid "Kill this user" +#~ msgstr "Tuer cet utilisateur" + +#~ msgid "Mode" +#~ msgstr "Mode" + +#~ msgid "Give Half-Ops" +#~ msgstr "Donner l'état de demi-opérateur" + +#~ msgid "Take Half-Ops" +#~ msgstr "Prendre l'état de demi-opérateur" + +#~ msgid "Ignore" +#~ msgstr "Ignorer" + +#~ msgid "Ignore User" +#~ msgstr "Ignorer l'utilisateur" + +#~ msgid "UnIgnore User" +#~ msgstr "Ne pas exclure l'utilisateur" + +#~ msgid "Info" +#~ msgstr "Info" + +# Non traduit pour garder signification /DCC send +#~ msgid "Who" +#~ msgstr "who" + +#~ msgid "DNS Lookup" +#~ msgstr "Résolution DNS" + +#~ msgid "Trace" +#~ msgstr "Trace" + +#~ msgid "UserHost" +#~ msgstr "Hôte de l'utilisateur" + +#~ msgid "External" +#~ msgstr "Externe" + +#~ msgid "Traceroute" +#~ msgstr "Traceroute" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "About XChat" +#~ msgstr "À propos de XChat" + +#~ msgid "Unban" +#~ msgstr "Suppr. ban." + +#~ msgid "User and Channel Statistics: %d/%d Users on %d/%d Channels" +#~ msgstr "" +#~ "Statistiques des utilisateurs et canaux : %d/%d utilisateurs sur %d/%d " +#~ "canaux" + +#~ msgid "I can't save an empty list!" +#~ msgstr "Impossible d'enregistrer une liste vide." + +#~ msgid "List display options:" +#~ msgstr "Options d'affichage de la liste :" + +#~ msgid "Minimum Users:" +#~ msgstr "Nombre minimum d'utilisateurs :" + +#~ msgid "Maximum Users:" +#~ msgstr "Nombre maximum d'utilisateurs :" + +#~ msgid "Pattern Match:" +#~ msgstr "Correspondance avec le motif :" + +#~ msgid "Regex Match:" +#~ msgstr "Correspondance avec l'expression rationnelle :" + +#~ msgid "Apply Match to:" +#~ msgstr "Appliquer la correspondance à :" + +#~ msgid "Apply" +#~ msgstr "Appliquer" + +#~ msgid "Refresh the list" +#~ msgstr "Rafraîchir la liste" + +#~ msgid "Save the list" +#~ msgstr "Enregistrer la liste" + +#~ msgid "None" +#~ msgstr "Aucun" + +#~ msgid "To" +#~ msgstr "À" + +#~ msgid "Address" +#~ msgstr "Adresse" + +#~ msgid "Started" +#~ msgstr "Démarré" + +#~ msgid "Speed limit" +#~ msgstr "Limite de vitesse" + +#~ msgid "XChat: File Receive List" +#~ msgstr "XChat : liste des fichiers reçus" + +#~ msgid "Open" +#~ msgstr "Ouvrir" + +#~ msgid "Ack" +#~ msgstr "Acquittement" + +#~ msgid "XChat: Uploads und Downloads" +#~ msgstr "XChat : envois et récupération de fichiers" + +#~ msgid "To/From" +#~ msgstr "À/De" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "Aucun autre onglet ouvert, voulez-vous quitter xchat ?" + +#~ msgid "Show join/part messages" +#~ msgstr "Afficher les messages join/part" + +#~ msgid "Color paste" +#~ msgstr "Coller la couleur" + +#~ msgid "Go to" +#~ msgstr "Aller à" + +#~ msgid "_Close Tab" +#~ msgstr "_Fermer l'onglet" + +#~ msgid "Some file transfers still active, quit xchat?" +#~ msgstr "" +#~ "Des transferts de fichiers sont toujours actifs, voulez-vous quitter " +#~ "xchat ?" + +#~ msgid "" +#~ "User Commands - Special codes:\n" +#~ "\n" +#~ "%c = current channel\n" +#~ "%m = machine info\n" +#~ "%n = your nick\n" +#~ "%t = time/date\n" +#~ "%v = xchat version\n" +#~ "%2 = word 2\n" +#~ "%3 = word 3\n" +#~ "&2 = word 2 to the end of line\n" +#~ "&3 = word 3 to the end of line\n" +#~ "\n" +#~ "eg:\n" +#~ "/cmd john hello\n" +#~ "\n" +#~ "%2 would be \"john\"\n" +#~ "&2 would be \"john hello\"." +#~ msgstr "" +#~ "Commandes utilisateur - Codes spéciaux :\n" +#~ "\n" +#~ "%c = canal actuel\n" +#~ "%m = informations concernant la machine\n" +#~ "%n = votre pseudonyme\n" +#~ "%t = heure/date\n" +#~ "%v = version de xchat\n" +#~ "%2 = mot 2\n" +#~ "%3 = mot 3\n" +#~ "&2 = du mot 2 jusqu'à la fin de la ligne\n" +#~ "&3 = du mot 3 jusqu'à la fin de la ligne\n" +#~ "\n" +#~ "ex :\n" +#~ "/cmd salut john\n" +#~ "\n" +#~ "%2 donnerait « salut »\n" +#~ "&2 donnerait « salut john »." + +#~ msgid "" +#~ "Userlist Buttons - Special codes:\n" +#~ "\n" +#~ "%a = all selected nicks\n" +#~ "%c = current channel\n" +#~ "%h = selected nick's hostname\n" +#~ "%m = machine info\n" +#~ "%n = your nick\n" +#~ "%s = selected nick\n" +#~ "%t = time/date\n" +#~ msgstr "" +#~ "Boutons Liste Utilisateurs - Codes spéciaux :\n" +#~ "\n" +#~ "%a = tous les pseudonymes sélectionnés\n" +#~ "%c = canal actuel\n" +#~ "%h = nom d'hôte du pseudonyme sélectionné\n" +#~ "%m = informations concernant la machine\n" +#~ "%n = votre pseudonyme\n" +#~ "%s = pseudonyme sélectionné\n" +#~ "%t = heure/date\n" + +#~ msgid "" +#~ "Dialog Buttons - Special codes:\n" +#~ "\n" +#~ "%a = all selected nicks\n" +#~ "%c = current channel\n" +#~ "%h = selected nick's hostname\n" +#~ "%m = machine info\n" +#~ "%n = your nick\n" +#~ "%s = selected nick\n" +#~ "%t = time/date\n" +#~ msgstr "" +#~ "Boutons de dialogue - Codes spéciaux :\n" +#~ "\n" +#~ "%a = tous les pseudonymes sélectionnés\n" +#~ "%c = canal actuel\n" +#~ "%h = nom d'hôte du pseudonyme sélectionné\n" +#~ "%m = informations concernant la machine\n" +#~ "%n = votre pseudonyme\n" +#~ "%s = pseudonyme sélectionné\n" +#~ "%t = heure/date\n" + +#~ msgid "" +#~ "CTCP Replies - Special codes:\n" +#~ "\n" +#~ "%d = data (the whole ctcp)\n" +#~ "%m = machine info\n" +#~ "%s = nick who sent the ctcp\n" +#~ "%t = time/date\n" +#~ "%2 = word 2\n" +#~ "%3 = word 3\n" +#~ "&2 = word 2 to the end of line\n" +#~ "&3 = word 3 to the end of line\n" +#~ "\n" +#~ msgstr "" +#~ "Réponses CTCP - Codes Spéciaux :\n" +#~ "\n" +#~ "%d = données (l'ensemble du CTCP)\n" +#~ "%m = informations concernant la machine\n" +#~ "%s = pseudonyme qui a envoyé le CTCP\n" +#~ "%t = heure/date\n" +#~ "%2 = mot 2\n" +#~ "%3 = mot 3\n" +#~ "&2 = du mot 2 jusqu'à la fin de la ligne\n" +#~ "&3 = du mot 3 jusqu'à la fin de la ligne\n" +#~ "\n" + +#~ msgid "_Menubar" +#~ msgstr "Barre de _menu" + +#~ msgid "_Topicbar" +#~ msgstr "Barre de _sujet" + +#~ msgid "_Userlist Buttons" +#~ msgstr "Boutons de la liste des _utilisateurs..." + +#~ msgid "_Layout" +#~ msgstr "_Disposition" + +#~ msgid "Channel List..." +#~ msgstr "Liste des canaux..." + +#~ msgid "Notify List..." +#~ msgstr "Liste de notification..." + +#~ msgid "_Close Window" +#~ msgstr "_Fermer la fenêtre" + +#~ msgid "User" +#~ msgstr "Utilisateur" + +#~ msgid "Server" +#~ msgstr "Serveur" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat : liste de notification" + +#~ msgid "C_hannels to join:" +#~ msgstr "Canaux à rejoindre :" + +#~ msgid "Resizable user list" +#~ msgstr "Liste des utilisateurs redimensionnable" + +#~ msgid "Left" +#~ msgstr "Gauche" + +#~ msgid "Right" +#~ msgstr "Droite" + +#~ msgid "Tabs Location" +#~ msgstr "Emplacement des onglets" + +#~ msgid "Show tabs at:" +#~ msgstr "Afficher les onglets en :" + +#~ msgid "(Can be a text file relative to ~/.xchat2/)." +#~ msgstr "(Peut être un fichier texte relatif à ~/.xchat2/)." + +#~ msgid "(Can be a text file relative to config dir)." +#~ msgstr "" +#~ "(Peut être un fichier texte relatif au répertoire de configuration)." + +#~ msgid "Flash taskbar on highlighted messages" +#~ msgstr "" +#~ "Faire clignoter la barre de tâches pour les messages en surbrillance" + +#~ msgid "Beep on highlighted messages" +#~ msgstr "Biper sur les messages en surbrillance" + +#~ msgid "Beep on private messages" +#~ msgstr "Biper sur les messages privés" + +#~ msgid "Beep on channel messages" +#~ msgstr "Biper sur les messages du canal" + +#~ msgid "Extra words to highlight on:" +#~ msgstr "Mots à mettre en surbrillance :" + +#~ msgid "Nicks not to highlight on:" +#~ msgstr "Pseudos à ne pas mettre en surbrillance :" + +#~ msgid "Open an irc:// url" +#~ msgstr "Ouvrir une URL irc://" + +#~ msgid "irc://server:port/channel" +#~ msgstr "irc://serveur:port/canal" + +#~ msgid "Execute a xchat command" +#~ msgstr "Exécuter une commande de xchat" + +#~ msgid "\"Command to execute\"" +#~ msgstr "« Commande à exécuter »" + +#~ msgid "Prints some text to the current tab/window" +#~ msgstr "Envoyer un texte vers la fenêtre ou l'onglet actuel" + +#~ msgid "\"Text to print\"" +#~ msgstr "« Texte à envoyer »" + +#~ msgid "Change the context to the channel" +#~ msgstr "Modifier le contexte du canal" + +#~ msgid "Change the context to the server" +#~ msgstr "Modifier le contexte du serveur" + +#~ msgid "server" +#~ msgstr "serveur" + +#~ msgid "Get some informations from xchat" +#~ msgstr "Obtenir des informations de xchat" + +#~ msgid "id" +#~ msgstr "id" + +#~ msgid "Get settings from xchat" +#~ msgstr "Obtenir la configuration de xchat" + +#~ msgid "name" +#~ msgstr "nom" + +#~ msgid "" +#~ "xchat-remote: %s\n" +#~ "Try `xchat-remote --help' for more information\n" +#~ msgstr "" +#~ "xchat-remote : %s\n" +#~ "Essayez « xchat-remote --help » pour davantage d'informations\n" + +#~ msgid "Failed to complete command" +#~ msgstr "Échec de la commande" + +#~ msgid "Failed to complete SetContext" +#~ msgstr "Échec de SetContext" + +#~ msgid "Failed to complete print" +#~ msgstr "Échec de l'impression" + +#~ msgid "Failed to complete GetInfo" +#~ msgstr "Échec de GetInfo" + +#~ msgid "Failed to complete GetPrefs" +#~ msgstr "Échec de GetPrefs" + +#~ msgid "%s doesn't exist\n" +#~ msgstr "%s n'existe pas\n" + +#~ msgid "xchat remote access" +#~ msgstr "accès à distance de xchat" + +#~ msgid "Couldn't connect to session bus : %s\n" +#~ msgstr "Impossible de se connecter au bus de session : %s\n" + +#~ msgid "%s loaded successfully!\n" +#~ msgstr "%s a été chargé avec succès.\n" + +#~ msgid "" +#~ "Set per channel options\n" +#~ "CHANOPT CONFMODE ON|OFF - Toggle conf mode/showing of join and part " +#~ "messages\n" +#~ "CHANOPT COLORPASTE ON|OFF - Toggle color paste\n" +#~ "CHANOPT BEEP ON|OFF - Toggle beep on message\n" +#~ "CHANOPT TRAY ON|OFF - Toggle tray blink on message" +#~ msgstr "" +#~ "Modifie les options du canal\n" +#~ "CHANOPT CONFMODE ON|OFF - Active ou désactive le mode conférence (qui " +#~ "n'affiche plus les personnes entrant et sortant du canal)\n" +#~ "CHANOPT COLORPASTE ON|OFF - Active ou désactive le collage de la couleur\n" +#~ "CHANOPT BEEP ON|OFF - Active ou désactive le beep lors des messages\n" +#~ "CHANOPT TRAY ON|OFF - Active ou désactive le clignotement de l'icone de " +#~ "barre d'état lors des messages" + +#~ msgid "Blink tray on message" +#~ msgstr "Faire clignoter l'icone en cas de message" diff --git a/etc/wyatt8740/po/gl.po b/etc/wyatt8740/po/gl.po new file mode 100644 index 0000000..1dbb629 --- /dev/null +++ b/etc/wyatt8740/po/gl.po @@ -0,0 +1,5701 @@ +# translation of gl.po to Galego +# This file is put in the public domain. +# +# Ignacio Casal Quinteiro <nacho.resa@gmail.com>, 2005, 2006. +msgid "" +msgstr "" +"Project-Id-Version: gl\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2006-11-03 20:27+0100\n" +"Last-Translator: Ignacio Casal Quinteiro <nacho.resa@gmail.com>\n" +"Language-Team: Galego <trasno@ceu.fi.udc.es>\n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Non se pode crear ~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Estou ocupado" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Abandonando" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* Executar o IRC como root é estúpido! Debería\n" +" crear unha conta de usuario e usala para conectarse.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Agardando" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Activo" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Fallou" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Rematado" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Conectar" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Abortado" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "Non se pode acceder a %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Erro" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s ofreceche \"%s\". Quere aceptar?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Non hai DCCs activos\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "Si " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "Non.." + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Está recibindo demasiados CTCP de %s, ignorando %s\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "" +"Está recibindo demasiados MSG de %s, desactivando gui_auto_open_dialog.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s conectados\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s desconectados\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Non entrou en ningún canal. Tente /join #<canal>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Non conectado. Tente /server <equipo> [<porto>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Xa está marcado como ausente: %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "Xa está marcado como disponible.\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "Necesítase /bin/sh para executarse!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Comandos dispoñibles:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Comandos definidos polo usuario:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Compoñentes definidos polo usuario:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Escriba /HELP <comando> para máis información, ou /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Argumento descoñecido '%s' ignorado." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "Non se atopou ningún complemento.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Ese complemento négase a ser desactivado.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "" +"ADDBUTTON <nome> <acción>, engade un botón debaixo da lista de usuarios" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <cmd>, envía unha orde a todos as canles aos que se uniu" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "" +"ALLCHANL <cmd>, envía un comando a todos as canles aos que está conectado" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "" +"ALLSERV <cmd>, envía un comando a todos os servidores aos que está conectado" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<razón>], establece súa ausencia" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "BACK, establéceo disponible (non ausente)" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <máscara> [<tipo de veto>], veta a todos aqueles que concorden coa " +"máscara da canle actual. Se xa están na canle isto non os expulsa (é " +"necesario ser operador da canle)" + +#: src/common/outbound.c:3506 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <variable> [<valor>]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "CLEAR [ALL|HISTORY], Limpa o texto da ventá actual" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, Pecha a ventá/solapa actual" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" +"COUNTRY [-s] <code|wildcard>, busca o código de país, ex: au = australia" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <alcume> <mensaxe>, envía a mensaxe CTCP ao alcume, as mensaxes comúns " +"son VERSION e USERINFO" + +#: src/common/outbound.c:3516 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "" +"CYCLE [<canle>], márchase da canle actual e inmediatamente volve a entrar" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <alcume> - acepta un ficheiro ofrecido\n" +"DCC SEND [-maxcps=#] <alcume> [ficheiro] - envía un ficheiro a alguén\n" +"DCC PSEND [-maxcps=#] <alcume> [ficheiro] - envía un ficheiro a alguén " +"usando o modo pasivo\n" +"DCC LIST - amosa a lista DCC\n" +"DCC CHAT <alcume> - ofrece o DCC CHAT a alguén\n" +"DCC PCHAT <alcume> - ofrece o DCC CHAT usando modo " +"pasivo\n" +"DCC CLOSE <tipo> <alcume> <ficheiro> exemplo:\n" +" /dcc close send xoándapena ficheiro.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <alcume>, elimina o estado de semi-operador da canle ao alcume na " +"canle actual (necesita ser operador da canle)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <nome>, borra un botón de debaixo da lista de usuarios" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <alcume>, quita o estado de operador da canle ao alcume na canle actual " +"(necesita ser operador da canle)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <alcume>, quita o estado de voz do alcume na canle actual (necesita " +"ser operador da canle)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, Desconéctase do servidor" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <alcume|equipo|ip>, Busca o enderezo IP dun usuario" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <texto>, Imprime texto localmente" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <comando>, executa o comando. Se se usa a bandeira -o entón a " +"saída envíase á canle actual, se non, imprímese na caixa de texto actual" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, envía o proceso SIGCONT" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], mata un executable correndo na sesión actual. Se se indica -9 " +"o proceso é matado pola forza" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, envía ao proceso o sinal de deterse" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, envía os datos á entrada estándar do proceso" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, borra a cola de envío actual do servidor" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" +"GATE <equipo> [<porto>], utiliza un proxy a través dun equipo, o porto por " +"defecto é o 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <alcume> <contrasinal>, Mata un alcume pantasma" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" +"HOP <alcume>, da o estado de semi-operador ao alcume (necesita ser operador " +"da canle)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <contrasinal>, identifícate no servidor" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <máscara> <tipos..> <opcións..>\n" +" máscara - máscara de equipos a ignorar, ex: *!*@*.aol.com\n" +" tipos - tipos de datos a ignorar, un ou todos:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" opcións - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <alcume> [<canle>], invita a alguén a unha canle, por omisión a canle " +"actual (necesita ser operador da canle)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <canle>, entra á canle" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <alcume>, expulsa ao alcume da canle actual (necesita ser operador da " +"canle)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <alcume>, veta e logo expulsa ao alcume da canle actual (necesita " +"ser operador da canle)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, forza unha nova comprobación de retardo" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <cadea>, busca o texto no búfer" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <ficheiro>, carga un complemento ou script" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, Quita masivamente o estado de semi-operador na canle actual " +"(necesita ser operador da canle)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, Quita masivamente o estado de operador na canle actual (necesita ser " +"operador da canle)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <acción>, envía a acción á canle actual (as accións están escritas en " +"terceira persoa, como /me jumps)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, Expulsa masivamente a todos excepto a vostede na canle actual " +"(necesita ser operador da canle)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, Otorga masivamente o estado de operador da canle actual (necesita ser " +"operador da canle)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <alcume> <mensaxe>, envía unha mensaxe privado" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, Lista os alcumes da canle actual" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <alcume> <mensaxe>, Envía unha noticia CTCP" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <nome do equipo> [<porto>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <alcume>, establece seu alcume" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <alcume/canle> <mensaxe>, envía unha noticia. As noticias son un tipo " +"de mensaxe que debería ser auto publicado" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n network1[,network2,...]] [<alcume>], lista súa lista de " +"notificacións ou agrega a alguén a ela" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" +"OP <alcume>, otorga o estado de operador da canle ao alcume (necesita ser " +"operador da canle)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<canle>] [<razón>], abandona a canle, por defecto a canle actual" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <alcume | canle>, Envía pings CTCP ao alcume ou canle" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "" +"QUERY [-nofocus] <alcume>, abre unha nova ventá privada de mensaxes hacia " +"alguén" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<razón>], desconéctase do servidor actual" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <texto>, envía o texto en formato chan hacia o servidor" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<equipo>] [<porto>] [<contrasinal>], Pode ser chamado só " +"como /RECONNECT para reconectarse ao servidor actual ou con /RECONNECT ALL " +"para reconectarse a todos os servidores abertos" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<equipo>] [<porto>] [<contrasinal>], Pode ser chamado só como /" +"RECONNECT para reconectarse ao servidor actual ou con /RECONNECT ALL para " +"reconectarse a todos os servidores abertos" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <text>, envía datos en bruto hacia xchat como se estos fosen recibidos " +"desde o servidor IRC" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <texto>, envía texto hacia un obxecto da ventá actual" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <nick> [<ficheiro>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <equipo> <porto> <canle>, Conéctao e entra nunha canle" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <equipo> <porto> <canle>, Conéctao e entra nunha canle" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <equipo> [<porto>] [<contrasinal>], conéctao ao servidor, o " +"porto por defecto é 6667 para conexións normais e 9999 para conexións ssl" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <equipo> [<porto>] [<contrasinal>], conéctao ao servidor, por defecto " +"o porto é 6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <variable> [<valor>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<posición>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<tópico>], estable o tópico se se provee un, se non mostra o tópico " +"actual " + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" +"\n" +"TRAY -f <timeout> <arquivo1> [<arquivo2>] Fai parpadear a icona da bandexa " +"do sistema entre dúas iconas.\n" +"TRAY -f <nomearquivo> Establece a icona da bandexa do " +"sistema.\n" +"TRAY -i <número> Fai parpadear a icona da bandexa " +"do sistema cunha icona interna.\n" +"TRAY -t <texto> Establece a etiqueta da icona da " +"bandexa do sistema\n" +"TRAY -b <título> <texto> Establece a ventá emerxente." + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <máscara> [<máscara>...], reincorpora as máscaras especificadas." + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <máscara> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <nome>, desactiva un complemento ou script" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, abre unha URL no seu navegador" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <alcume1> <alcume2> etc, resalta o(s) alcume(s) na lista " +"de usuarios da canle" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "" +"VOICE <alcume>, otorga o estado de voz a alguén (necesita ser operador da " +"canle)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <mensaxe>, escribe a mensaxe a todos as canles" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <mensaxe>, envía a mensaxe a todos os operadores da canle na canle " +"actual" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Uso: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"Non hai axuda dispoñible para ese comando.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Non existe ese comando.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Argumentos erróneos para o comando de usuario.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Demasiados comandos recursivos de usuario, abortando." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Comando descoñecido. Tente con /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "" +"Non hai o símbolo xchat_plugin_init; é realmente un complemento de xchat?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Está seguro de que é un servidor e porto SSL?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Non se pode resolver o nome do equipo %s\n" +"Comprobe súa configuración de IP!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Fallou o proxy traversal.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Ciclando ao seguinte servidor en %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Aviso: O conxunto de caracteres \"%s\" é descoñecido. Non se aplicará " +"conversión para a rede %s." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 engadido á lista de notificacións." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Lista de vetados:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tNon se pode entrar%C26 %B$1 %O(Está vetado)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 é agora coñecido como $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 veta a $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tCanle $1 creada en $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O quita o estado de semi-operador da canle a %C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O quita o estado de operador da canle a%C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O quita voz a%C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 establece a $2 como exento" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O da estado de semi-operador da canle a%C26 $2" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 invita a $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UCanle Usuarios Tópico" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 establece modo $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Canle $1 modos: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O da estado de operador de canle a%C26 $2" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 quita a exención a $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 quieta a invitación a $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 quita a palabra clave da canle" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 quita o límite de usuarios" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 establece palabra clave da canle como $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 establece límite da canle a $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 quita o veto a $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O dalle voz a%C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Conectado. Agora rexistrándose..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22Conectando a $1 ($2) porto $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21Conexión fallida. Erro: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tRecibiuse un CTCP $1 de $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tRecibiuse un CTCP $1 de $2 (a $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tRecibiuse un son CTCP $1 de $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tRecibiuse un son CTCP $1 de $2 (a $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tDCC CHAT a %C26$1%O abortada." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$tConexión para CHAT DCC establecida con %C26$1 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tCHAT DCC a %C26$1%O lost ($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tRecibiuse unha oferta de CHAT DCC de $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tOfrecendo CHAT DCC a $1" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tXa está ofrecendo un CHAT a $1" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$tO intento de conexión DCC $1 con%C26 $2%O fallou (erro=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tRecibiu '$1%O' de $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 Tipo A/De Estado Tamaño Pos Ficheiro " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O." +"%010%C22*%O$tContents of packet: $2" +msgstr "" +"%C22*%O$tRecibiu unha petición DCC errónea de %C26$1%O.%010%C22*%O$tContidos " +"do paquete: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tOfrece%C26 $1%O a%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tNon existe tal ofrecemento DCC." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tRecepción DCC%C26 $2%O para%C26 $1%O abortado." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tRecepción DCC%C26 $1%O de%C26 $3%O completada %C30[%C26$4%O " +"cps%C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "" +"%C22*%O$tConexión para recepción DCC establecida con%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tRecepción DCC%C26 $1%O de%C26 $3%O fallou ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tRecepción DCC: Non se pode abrir $1 para escritura ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "" +"%C22*%O$tO ficheiro%C26 $1%C xa existe, gardándoo como%C26 $2%O no seu lugar." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Opuido retomar%C26 $2 %Cde%C26 $3%C." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tEnvío DCC%C26 $2%O a%C26 $1%O abortado." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tEnvío DCC%C26 $1%O a%C26 $2%O completado %C30[%C26$3%O cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tConexión para envío DCC establecida con%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tO envío DCC%C26 $1%O a%C26 $2%O fallou. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Oofreceu%C26 $2 %O(%C26$3 %Obytes)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oa%C26 $3 %Cparouse - abortando." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "" +"%C22*%O$tDCC $1%C26 $2 %Opara%C26 $3 %Oagotou o tempo de espera - abortando." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 borrado da lista de notificacións." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tDesconectado ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tAtopouse súa IP: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O engadido á lista de ignorados." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "Ignorar a %C26$1%O cambiou." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 Máscara PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O quitouse da lista de ignorados." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " A lista de ignorados está baleira." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "%C22*%O$tNon pode entrar%C26 %B$1 %O(Canle só para invitados)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tFoi invitado a%C26 $1%O por%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) entrou en $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$tNon pode entrar%C26 %B$1 %O(Requírese contrasinal)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 botou fora a $2 de $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$tFoi eliminado por $1 ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22Saltou a mensaxe do día (MOTD)." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 xa está en uso. Reintentando con $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "%C22*%O$tO alcume xa está en uso. Use /NICK para tentalo con outro." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tNon existe ese DCC." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tNon hai ningún proceso en execución actualmente" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tA lista de notificacións está baleira." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Lista de notificacións " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 usuarios na lista de notificacións." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tNotificación: $1 está desconectado ($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tNotificación: $1 está conectado ($3)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) abandonou $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) abandonou $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tResposta ao ping de $1: $2 segundo(s)" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tNon houbo resposta ao ping en $1 seconds, desconectando." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tXa hai un proceso en execución" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 marchouse (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 establece modos%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Mensaxes dos operadores%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tBuscando número de IP para%C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22Conectado." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22Buscando $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tDeteuse o anterior intento de conexión (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29O tópico para $1%C %C29é: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 cambiou o tópico a: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29Tópico para $1%C %C29establecido por $2%C %C29en $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tEquipo descoñecido. Equivocouse?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "%C22*%O$tNon pode entrar%C26 %B$1 %O(Chegouse ao límite de usuarios)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Usuarios en $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cestá ausente %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OFin da lista WHOIS." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O inactivo%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O inactivo%C26 $2%O, entrou:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" +"%C22*%O$t%C28[%O$1%C28] %Overdadeiro usuario@equipo%C27 $2%O, verdadeira " +"IP%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Falando agora a $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tBotouselle de $2 por $3 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tAbandonou a canle $3" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tAbandonaste a canle $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tEstá invitado%C26 $1%O a%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tEres coñecido agora como $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "Rexistro cargado desde" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** FINALIZANDO CONEXIÓN EN %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** INICIANDO CONEXIÓN EN %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Non se pode abrir o ficheiro(s) de rexistro para escritura. Comprobe os\n" +" permisos de %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Mensaxe de ausencia" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "A mensaxe" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "O alcume da persoa que entra" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "A canle á que está entrando" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "O equipo da persoa" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Alcume" + +#: src/common/text.c:973 +msgid "The action" +msgstr "A acción" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Modo carácter" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Texto de identificación" + +#: src/common/text.c:980 +msgid "The text" +msgstr "O texto" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "A mensaxe" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Alcume antigo" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Novo alcume" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Alcume da persoa que cambiou o tópico" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Tópico" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Canle" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "O alcume do que expulsa" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "A persoa que está sendo expulsada" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "A canle" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "A razón" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "O alcume da persoa que abandona" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "O tempo" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "O creador" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Alcume" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Razón" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Equipo" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "De quén ven" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "O tempo no formato x.x (vexa debaixo)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "A canle vaise a" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "O son" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "O alcume da persoa" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "O evento CTCP" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "O alcume da persoa que establece a clave" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "A clave" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "O alcume da persoa que establece o límite" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "O límite" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "O alcume da persoa que otorgou os permisos de operador" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "O alcume da persoa que foi convertida en operador" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "O alcume da persoa que foi convertida en semi-operador" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "O alcume da persoa que otorgou os permisos de semi-operador" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "O alcume da persoa que otorgou os permisos de voz" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "O alcume da persoa que foi convertida en voz" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "O alcume da persoa que realizou o veto (banning)" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "A máscara de vetos" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "O alcume de quen eliminou a clave" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "O alcume de quen eliminou o límite" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "O alcume da persoa que revocou os permisos de operador" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "O alcume da persoa á que se lle quitou o permiso de operador" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "O alcume da persoa que quitou os permisos de semi-operador" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "O alcume da persoa á que se lle quitou os permisos de semi-operador" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "O alcume da persoa que revocou os permisos de voz" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "O alcume da persoa á que se lle quitaron os permisos de voz" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "O alcume da persoa que revocou o veto" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "O alcume da persoa que otorgou a execpción" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "A máscara de exención" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "O alcume da persoa que quitou a exención" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "O alcume da persoa que realizou a invitación" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "A máscara de invitación" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "O alcume da persoa que eliminou a invitación" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "O alcume da persoa que estableceu o modo" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "O signo do modo (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "A letra do modo" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "A canle está sendo configurada" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Nome de usuario" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Nome completo" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Membro especial da canle/\"é un operador de IRC\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Información do servidor" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Tempo inactivo" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Tempo de conexión" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Razón de ausencia" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Mensaxe" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Conta" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "Verdadeiro usuario@equipo" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "Verdadeira IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Nome da canle" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Texto" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Nome do servidor" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Alcume da persoa que lle invitou" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Usuarios" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Alcume en uso" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Tentando usar o alcume" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Porto" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Rede" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Cadea de modos" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "Enderezo IP" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "Tipo DCC" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Nome de ficheiro" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Nome do ficheiro de destino" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Nome da ruta" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Posición" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Tamaño" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "Cadea DCC" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Número de elementos de notificación" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Nome anterior do ficheiro" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Nome novo do ficheiro" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Receptor" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Máscara de equipo" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Nome de equipo" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "O paquete" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Segundos" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Alcume da persoa que foi invitada" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Máscara de veto" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Quen estableceu o veto" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Tempo de veto" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Erro ao analizar o evento %s.\n" +"Cargando o predeterminado." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"Non se pode ler o ficheiro de son:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "Porto pechado no equipo remoto" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Conexión rechazada" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Non hai ruta hacia o equipo" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Tempo de espera da conexión agotado" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Non se pode asignar ese enderezo" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Conexión reiniciada polo par" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Isla Ascensión" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Emiratos Árabes Unidos" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Afganistán" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Antiga e Barbuda" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Anguila" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Albania" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Armenia" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Antilas holandesas" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Antártida" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Arxentina" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "DNS inverso" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Samoa Americana" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Austria" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "Fiel á OTAN" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Australia" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Islas Aland" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Azerbaián" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Bosnia e Herzegovina" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Bangladesh" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Bélxica" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Bulgaria" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Bahrain" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Negocios" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Brunei Darussalam" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Bolivia" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Brasil" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Bahamas" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Bután" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Isla Bouvet" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Bielorusia" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Belice" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Canadá" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Islas Cocos" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "República Democrática do Congo" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "República Centro Africana" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Congo" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Suiza" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Costa d'Ivoire" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Islas Cook" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Chile" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Camerón" + +#: src/common/util.c:898 +msgid "China" +msgstr "China" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Colombia" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Internic Commercial" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Serbia e Montenegro" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Cuba" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Cabo Verde" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Isla Navidade" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Chipre" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "República Checa" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Alemania" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Dibuti" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Dinamarca" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Dominica" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "República Dominicana" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Arxelia" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Ecuador" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Institución Educativa" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Estonia" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Exipto" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Sahara Occidental" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "España" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Etiopía" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Unión Europea" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Finlandia" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Fixi" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Islas Malvinas" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Micronesia" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Islas Feroe" + +#: src/common/util.c:928 +msgid "France" +msgstr "Francia" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Gabón" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Gran Bretaña" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Granada" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Xeorxia" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Guaiana Francesa" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Islas da Canle da Mancha" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Gana" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Xibraltar" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Groenlandia" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Governo" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Guadalupe" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Guinea Ecuatorial" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Grecia" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "S. Xeorxia e S. Islas Sandwich" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Guinea-Bissau" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Guaiana" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Islas Heard e McDonald" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Croacia" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Haití" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Hungría" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Indonesia" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Irlanda" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Israel" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Isla de Man" + +#: src/common/util.c:959 +msgid "India" +msgstr "India" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Informativo" + +#: src/common/util.c:961 +msgid "International" +msgstr "Internacional" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Territorio Oceánico Indio Británico" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Iraq" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Irán" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Islandia" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Italia" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Xersei" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Xamaica" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Xordania" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Xapón" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Kenia" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Kyrgyzstan" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Camboia" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Comoros" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "San Kitts e Nevis" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Corea do Norte" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Corea do Sur" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Kuwait" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Islas Caimán" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Kazakhstan" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Líbano" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Santa Lucía" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Liberia" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Lesoto" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Lituania" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Luxemburgo" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Letonia" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Libia" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Marrocos" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Mónaco" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Moldavia" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "Servizo Médico de Estados Unidos" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Madagascar" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Islas Marshall" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Militar" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Macedonia" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Mongolia" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Macao" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Islas Marianas do Norte" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Martinica" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Mauritania" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Mauricio" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Maldivas" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "México" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Malasia" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Mozambique" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Namibia" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Nova Caledonia" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Níger" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Rede de Internic" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Isla Norfolk" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Nigeria" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Holanda" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Noruega" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Nova Zelanda" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Omán" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Organización sen ánimo de lucro Internic" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Panamá" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Perú" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Polinesia Francesa" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Papua Nova Guinea" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Filipinas" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Pakistán" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Polonia" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "San Pierre e Miquelón" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Porto Rico" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Territorio Palestino" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Portugal" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Paraguai" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Qatar" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Reunión" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Rumanía" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "Antiga escola de ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Federación Rusa" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Ruanda" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Arabia Saudí" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Islas Salomón" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Seychelles" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Sudán" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Suecia" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Singapur" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "Santa Helena" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Eslovenia" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Islas Svalbard e Jan Mayen" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "República de Eslovaquia" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Serra Leona" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "San Mariño" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Somalia" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Suriname" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "Santo Tomé e Principe" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Antiga URSS" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "O Salvador" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Siria" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Swaziland" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Islas Turks e Caicos" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Chad" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Territorios Franceses do Sur" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Tailandia" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Tajikistan" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Timor Oriental" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Túnez" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Turquía" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Trinidade e Tobago" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Tanzania" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Ucrania" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Reino Unido" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "Estados Unidos de América" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Uruguai" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Uzbekistan" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Cidade Estado do Vaticano" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "San Vicente e as Granadinas" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Islas Vírxenes Británicas" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "Islas Vírxenes Norteamericanas" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Islas Wallis e Futuna" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Iemen" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Maiote" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Iugoslavia" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Sudáfrica" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Zambia" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Descoñecido" + +#: src/common/xchat.c:726 +msgid "_Open Dialog Window" +msgstr "Abrir a ventá de diálogo" + +#: src/common/xchat.c:727 +msgid "_Send a File" +msgstr "Enviar un ficheiro" + +#: src/common/xchat.c:728 +msgid "_User Info (WhoIs)" +msgstr "Información de usuario (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "Eng_adir á lista de amigos" + +#: src/common/xchat.c:730 +msgid "O_perator Actions" +msgstr "Accións de o_perador" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Dar Op" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Tomar Op" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Dar Voz" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Tomar Voz" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Botar/Vetar" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Botar" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Vetar" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "Botar e vetar" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Abandoar a canle" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Entrar á canle..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Introduza a canle á que quere entrar:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Ligazóns do servidor" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Ping ao servidor" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Agochar versión" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Op" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "Quitar Op" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "adeus" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Introduza razón para expulsar a %s:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Enviar ficheiro" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Diálogo" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Enviar" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Chat" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Limpar" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "Non se puido conectar ao bus de sesión" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "Fallou ao completar NameHasOwner" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "Fallou ao completar o Comando" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "acceso remoto" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "complemento para acceso remoto usando DBUS" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Non se puido conectar ao bus de sesión: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Fallou ao adquirir %s: %s\n" + +#: src/fe-gtk/about.c:100 +msgid "About " +msgstr "_Acerca de" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Un cliente de IRC multiplataforma" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Mapa de caracteres" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "Non conectado." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Debe seleccionar algún vetado." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "Está seguro de que quere eliminar tódolos vetos en %s?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Máscara" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "De" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Data" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Só podes abrir a ventá da lista de vetados nunha solapa da canle." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: Lista de vetados (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Eliminar" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Achicar" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Refrescar" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Amosando %d/%d usuarios en %d/%d canles." + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Seleccione un nome de ficheiro de saída" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "_Entrar á canle" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "_Copiar o nome da canle" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "Copiar texto do _tema" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: Lista de Canles (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "_Procurar" + +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "_Descargar lista" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "Gardar _lista..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "Amosar só:" + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "canles con" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "a" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "usuarios." + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "Procurar en:" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "Nome da canle" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "Buscar tipo..." + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "Busca simple" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "Patrón de coincidencia (Comodíns)" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "Expresión regular" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Buscar:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Enviar ficheiro a %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Ese ficheiro non se pode continuar." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"Non se pode acceder ao ficheiro: %s\n" +"%s.\n" +"Non é posible continuar." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"O ficheiro no directorio de descarga é máis grande que o ficheiro ofrecido. " +"Non é posible continuar." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "Non se pode reanudar o mesmo ficheiro de dúas persoas." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: Cargas e descargas" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Estado" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Ficheiro" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "Tempo" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Ambos" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Subidas" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "Descargas" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Detalles" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Ficheiro:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "Enderezo:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Abortar" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Aceptar" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Continuar" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Abrir cartafol..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: Lista de Chat DCC" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Recibido" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Enviado" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "Tempo de comezo" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*NOVO*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "EDÍTAME" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Nome" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Comando" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Mover arriba" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Mover abaixo" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Cancelar" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Gardar" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Engadir novo" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Borrar" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Ordenar" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Axuda" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "Non reconectarse ao servidor automaticamente" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "Usar un directorio de configuración diferente" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "Non cargar automaticamente ningún complemento" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "Amosar o directorio de complementos activados automaticamente" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "Amosar o directorio de configuración de usuario" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Abrir unha URL irc://servidor:porto/canle" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Executar comando:" + +#: src/fe-gtk/fe-gtk.c:132 +msgid "Open URL or execute command in an existing XChat" +msgstr "Abrir URL ou executar comando nun XChat existente" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Iniciar minimizado. Nivel 0=Normal 1=Iconificado 2=Bandexa" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "nivel" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Amosar a información da versión" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"Fallou ao abrir a fonte:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "O búfer de busca está baleiro.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d bytes" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Cola de envío de rede: %d bytes" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"A acción Executar Comando executa os datos en Data 1 coma se foran escritos " +"na caixa de texto onde premeu a secuencia de teclas. Non obstante pode " +"conter comandos de texto (os cales enviaranse á canle ou persoa), ou " +"comandos de usuario. Cando se executen todos os caracteres en Data 1 son " +"usados para delimitar comandos separados de ese modo é posible executar máis " +"dun comando. Se quere un \\ no texto de execución actual execúteo e logo " +"prema Intro \\\\" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"O comando Cambiar Páxina cambia entre as páxinas do caderno. Inicialice Data " +"1 coa páxina á que desexa cambiar. Se Data 2 está configurado para calquera " +"entón o cambio será relativo á posición actual." + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"O comando Inserir no Búfer insertará o contido de Data 1 na entrada onde a " +"secuencia de teclas foi pulsada na posicón actual do cursor" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"O comando Desprazar Páxina despraza o control de texto enriba ou abaixo nun " +"páxina ou nunha liña. Establece Data 1 desprazarase hacia arriba, abaixo +1 " +"ou -1." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"O comando Establecer búfer establece a entrada onde a secuencia de teclas " +"foi introducida aos contidos de Data 1" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"O comando Último Comando establece a entrada para conter o último comando " +"introducido á igual que premer a tecla enriba na liña de comandos" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"O comando Seguinte Comando establece a entrada que conteña o seguinte " +"comando ingresado á igual que ao premer a tecla abaixo na liña de comandos" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Este comando cambia o texto na entrada para completar un alcume incompleto " +"ou un comando. Se Data 1 está establecido entón ao premer dúas veces a tecla " +"TAB sobre unha cadea seleccionará o último alcume, non o seguinte." + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Este comando despraza hacia arriba e abaixo a lista de alcumes. Se Data 1 " +"está establecido a calquera entón desprazarase hacia arriba, se non " +"desprazarase hacia abaixo" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Este comando comproba a última palabra introducida na entrada contra a lista " +"de remprazos e a rempraza se atopa unha coincidencia" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Este comando move unha vez solapa superior á esquerda" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Este comando move unha vez solapa superior á dereita" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Este comando move a familia actual de solapas á esquerda" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Este comando move a familia actual de solapas á dereita" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "Colocar a liña de entrada no historial pero sen enviala ao servidor" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "Houbo un erro cargando a configuración das combinacións de teclas" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<ningún>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Mod" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Tecla" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Acción" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: Atallos de teclado" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Maiús" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Data 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Data 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Erro ao abrir o ficheiro de configuración de teclas\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Nome de tecla %s descoñecido no ficheiro de configuración de combinacións de " +"teclas\n" +"Carga abortada, por favor corrixa %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Acción descoñecida %s no ficheiro de configuración de combinacións de " +"teclas\n" +"Carga abortada, Por favor corrixa %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Esperábase unha liña de datos (comezando con Dx{:|!}) pero obtúbose:\n" +"%s\n" +"\n" +"Carga abortada, Por favor corrixa %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"O ficheiro de configuración da combinacións de teclas está corrupto\n" +"Por favor corrixa %s/keybindings.conf\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "Non se pode escribir nese ficheiro." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Non se pode ler ese ficheiro." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Esa máscara xa existe." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Privado" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Noticia" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Invitar" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Non ignorar" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Introduza a máscara que quere ignorar:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: Lista de ignorados" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Estatísticas de ignorados:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Canle:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privado:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Noticia:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Invitar:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "Engadir..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "O nome da canle é demasiado corto, ténteo de novo." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: Conexión completada" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "Conexión a %s completada." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"Na ventá da lista de servidores, non se introduciu ningunha canle (sala de " +"chat) para entrar automaticamente nesta rede." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "Que quere facer despois?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "_Nada, unireime a unha canle máis tarde." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "_Entrar nesta canle:" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Se coñece o nome da canle na que quere entrar, introdúcea aquí." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "A_brir a ventá de lista canles." + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "Obter a lista de canles pode levar un ou dous minutos." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "Amosar este diálogo _sempre despois de conectar." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Diálogo con" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "O tópico para %s é: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Non está establecido ningún tópico" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"Este servidor ten todavía %d canles ou diálogos asociados. Pechalos todos?" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "Quere saír de XChat?" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "Non preguntar a seguinte vez." + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Está conectado a %i redes IRC." + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "Está seguro de que quere saír?" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "Algunhas transferencias de ficheiros seguen activas." + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "_Minimizar á bandexa" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Inserir atributo ou código de cor" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Grosa</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Subraiado</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Normal" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Cores 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Cores 8-15" + +#: src/fe-gtk/maingui.c:1612 +msgid "_Settings" +msgstr "C_onfiguración" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "Rexistrar ao disco" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "Recargar contidos anteriores" + +#: src/fe-gtk/maingui.c:1617 +msgid "_Hide Join/Part Messages" +msgstr "Ocultar mensaxes de entrada e saída" + +#: src/fe-gtk/maingui.c:1625 +msgid "_Extra Alerts" +msgstr "Alertas extra" + +#: src/fe-gtk/maingui.c:1627 +msgid "Beep on _Message" +msgstr "Bip ao recibir unha mensaxe" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "Intermitencia da icona da bandexa" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "Intermitencia da barra de tarefas" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +msgid "_Detach" +msgstr "_Separar solapa" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "_Pechar" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "¡O límite de usuarios debe ser un número!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Protección do tópico" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Non hai mensaxes externas" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Secreto" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Só para invitados" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Moderado" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Lista de vetados" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Palabra clave" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Límite de usuarios" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Mostrar/Ocultar lista de usuarios" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"Imposible establecer o fondo transparente!\n" +"\n" +"Pode estar usando un xestor de ventás\n" +"que non está soportado actualmente.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Introduza o novo alcume:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Equipo descoñecido" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Nome real:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Usuario:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "País: " + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Servidor:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "Quedan %u minutos" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Última mensaxe: " + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Mensaxe de ausencia: " + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "%d alcumes seleccionados." + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"A barra de menú está agochada. Pode amosala outra vez premendo F9 ou " +"premendo co botón dereito do rato na parte branca da área de texto principal." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Abrir ligazón no navegador" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Copiar a ligazón seleccionada" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Entrar á canle" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Invitar canle" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Ciclar canle" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "Elimina_r dos favoritos" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "Eng_adir a favoritos" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: Menú de usuario" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Editar este menú..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Obter lista de canles..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Comandos de usuario - Códigos especiais:\n" +"\n" +"%c = canle actual\n" +"%m = info da máquina\n" +"%n = seu alcume\n" +"%t = hora/data\n" +"%v = versión de xchat\n" +"%2 = palabra 2\n" +"%3 = palabra 3\n" +"&2 = palabra 2 ata o fin de liña\n" +"&3 = palabra 3 ata o fin de liña\n" +"\n" +"ex:\n" +"/cmd john hello\n" +"\n" +"%2 podería ser \"john\"\n" +"&2 podería ser \"john hello\"." + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Botóns da lista de usuarios - Códigos especiais:\n" +"\n" +"%a = todos os alcumes seleccionados\n" +"%c = canle actual\n" +"%e = nome da rede actual\n" +"%h = nome do equipo do alcume seleccionado\n" +"%m = información da máquina\n" +"%n = seu alcume\n" +"%s = alcume seleccionado\n" +"%t = hora/data\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Botóns de diálogo - Códigos especiais:\n" +"\n" +"%a = todos os alcumes seleccionados\n" +"%c = canle actual\n" +"%e = nome da rede actual\n" +"%h = nome do equipo do alcume seleccionado\n" +"%m = información da máquina\n" +"%n = seu alcume\n" +"%s = alcume seleccionado\n" +"%t = hora/data\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"Respostas CTCP - Códigos especiais:\n" +"\n" +"%d = datos (o ctcp completo)\n" +"%e = nome da rede actual\n" +"%m = información da máquina\n" +"%s = alcume de quen enviou o ctcp\n" +"%t = hora/data\n" +"%2 = palabra 2\n" +"%3 = palabra 3\n" +"&2 = palabra 2 do fin de liña\n" +"&3 = palabra 3 do fin de liña\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"Manexadores de URL -Códigos especiais:\n" +"\n" +"%s = a cadea URL\n" +"\n" +"Poñer un ! enfrente do comando indica\n" +"que debería enviarse hacia un shell\n" +"en vez de hacia XChat" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: Comandos definidos polo usuario" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: Menú emerxente da lista de usuarios" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Reemprazar con" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: Reemprazar" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: Manexadores de URL" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: Botóns da lista de usuarios" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: Botóns de diálogo" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: Respostas CTCP" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "Li_sta de redes..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "_Novo" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Solapa de servidor..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Solapa de canle..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Ventá de servidor..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Ventá de canle..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "_Cargar script ou complemento..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "_Saír" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "_Ver" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "Barra de _menú" + +#: src/fe-gtk/menu.c:1592 +msgid "_Topic Bar" +msgstr "Barra de _tópico" + +#: src/fe-gtk/menu.c:1593 +msgid "_User List" +msgstr "Lista de _usuarios" + +#: src/fe-gtk/menu.c:1594 +msgid "U_serlist Buttons" +msgstr "Botóns de lista de u_suarios" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "Botóns de m_odo" + +#: src/fe-gtk/menu.c:1597 +msgid "_Channel Switcher" +msgstr "Cambiar _canles" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "_Solapas" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "Á_rbore" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "Medidores de _rede" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Apagar" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Gráfico" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "_Servidor" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "_Desconectar" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "_Reconectar" + +#: src/fe-gtk/menu.c:1613 +msgid "Join a Channel..." +msgstr "Entrar á canle..." + +#: src/fe-gtk/menu.c:1614 +msgid "List of Channels..." +msgstr "Lista de canles..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Ausencia marcada" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "Menú de _usuario" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "C_onfiguración" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "Preferencias" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Avanzado" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Remprazar automaticamente..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "Respostas CTCP..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Botóns de diálogo..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Atallos de teclado..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Textos de eventos..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "Manexadores de URL..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Comandos de usuario..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Botóns de lista de usuarios..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Lista de usuarios emerxente..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_Ventá" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Lista de vetados..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Mapa de caracteres..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Chat directo..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Transferencias de ficheiros..." + +#: src/fe-gtk/menu.c:1641 +msgid "Friends List..." +msgstr "Lista de amigos..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Lista de ignorados..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Complementos e Scripts..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Rexistro crú..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "Capturador de URL..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Reiniciar marcador de liña" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "_Limpar texto" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Buscar texto..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Gardar texto..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "A_xuda" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "_Contidos" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "Buscar actualizacións" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "_Acerca de" + +#: src/fe-gtk/menu.c:2147 +msgid "_Attach" +msgstr "Xuntar solapa" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Visto por última vez" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Desconectado" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Nunca" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "fai %d minutos" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Conectado" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Introduza o alcume a engadir:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "Notificar nestas redes:" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "Acéptase unha lista de redes separada por comas." + +#: src/fe-gtk/notifygui.c:413 +msgid "XChat: Friends List" +msgstr "XChat: Lista de amigos" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "Abrir diálogo" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" +"Non se atopa 'notify-send' para abrir mensaxes emerxentes.\n" +"Por favor instale libnotify." + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "XChat: Conectado a %u redes e %u canles" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "_Restaurar" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "_Ocultar" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "_Intermitencia en" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "Mensaxe de canle" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "Mensaxe privada" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "Mensaxe resaltada" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "_Cambiar estado" + +#: src/fe-gtk/plugin-tray.c:602 +msgid "_Away" +msgstr "_Ausente" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "Disponi_ble" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat: Resaltar mensaxe de %s (%s)" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat: %u mensaxes resaltadas, a última de: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat: Nova mensaxe pública de %s (%s)" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat: %u novas mensaxes públicas" + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat: Mensaxe privada desde %s (%s)" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "XChat: %u mensaxes privadas, a última de: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat: Ofrécese ficheiro desde: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "XChat: %u ficheiro ofrecidos, o último de: %s (%s)" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Versión" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Descrición" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Seleccione un Complemento ou Script a cargar" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: Complementos e Scripts" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "_Cargar..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "_Desactivar" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Gardar como..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: Rexistro crú (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Limpar rexistro crú" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "A ventá que abreu esta busca non existe máis." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "Non hay máis coincidencias, non encontrado." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: Buscar" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "_Coincidir maiúsculas" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "Buscar para _atrás" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "_Procurar" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Nova rede" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Realmente desexa eliminar a rede \"%s\" e todos os seus servidores?" + +#: src/fe-gtk/servlistgui.c:740 +msgid "#channel" +msgstr "Canle" + +#: src/fe-gtk/servlistgui.c:850 +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "" +"XChat: Lista de canles favoritas (lista de canles ás que se auto-conecta)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "Vostede conectarase a estes canles cando se conecte a %s." + +#: src/fe-gtk/servlistgui.c:906 +msgid "Key (Password)" +msgstr "Contrasinal" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "E_ditar" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "%s foi eliminado." + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "%s foi engadido." + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "O nome de usuario e nome verdadeiro non poden estár en branco." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: Editar %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Servidor para %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Conectar só ao servidor seleccionado" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "" +"Non ciclar a non ser que todos os servidores aos que está conectando fallen." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Seus detalles" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Usar información global de usuario" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "_Alcume:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Segunda elección:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "Nome de _usuario:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "Nome _verdadeiro:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Conectando" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Conectarse automaticamente a esta rede ao inicio" + +#: src/fe-gtk/servlistgui.c:1462 +msgid "Bypass proxy server" +msgstr "Saltarse as restriccións do servidor proxy" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "Usar SSL para todos os servidores desta rede" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Aceptar certificado SSL inválido" + +#: src/fe-gtk/servlistgui.c:1475 +msgid "_Favorite channels:" +msgstr "Canles _Favoritos:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "Canles ás que entrar, separados por comas, non por espacios!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Comando de conexión:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Comando extra para executar despois de conectar. Se necesita máis que un, " +"establece isto a LOAD -e <nome de ficheiro>, onde <nome de ficheiro> é un " +"ficheiro de texto de comandos a executar." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Contrasinal do servidor de alcumes:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Se o teu alcume require dun contrasinal, introdúceo aquí. Non todas as redes " +"IRC soportan isto." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Contrasinal do servidor:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Contrasinal para o servidor, se duda, déixeo en branco." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Conxunto de caracteres:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: Lista de redes" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Información de usuario" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Terceira elección:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Redes" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "Saltar a lista de servidores ao inicio" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "_Editar..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "_Ordenar" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" +"Ordena a lista de redes en orde alfabético. Use MAIUSCULAS-ARRIBA e " +"MAIUSCULAS-ABAIXO para mover unha fila." + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "C_onectar" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Apariencia da caixa de texto" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Fonte:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Imaxe de fondo:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Liñas de desprazamento:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Alcumes con cores" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Dar a cada persoa unha cor diferente no IRC" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Indentar alcumes" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Xustificar alcumes á dereita." + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Fondo transparente" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Mostrar liña de marcado" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Inserir unha liña vermella despois do último texto lido." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Configuración de transparencia" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Vermello:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Verde:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Azul:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Inserción de hora:" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Activar inserción de hora" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Formato de inserción de hora:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Vexa a páxina do manual de strftime para máis detalles." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "Os últimos que falaron primeiro" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Caixa de entrada" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Usar a fonte e cores da caixa de texto" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Comprobar ortografía" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Completado de alcume" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "Completar alcume automaticamente (sen a tecla TAB)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Sufixo de completado para o alcume:" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "Completado de alcume ordenado:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Códigos de caixa de entrada" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Interpretar %nnn como un valor ASCII" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Interpretar %C, %B como Cor, Grosa etc" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, Operadores primeiro" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, Operadores abaixo" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Desordenada" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "Arriba á esquerda" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "Abaixo á esquerda" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "Arriba á dereita" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "Abaixo á dereita" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Enriba" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Abaixo" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Oculto" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Lista de usuarios" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Mostrar os nomes dos equipos na lista de usuarios" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Lista de usuarios ordenada por:" + +#: src/fe-gtk/setup.c:205 +msgid "Show user list at:" +msgstr "Mostrar lista de usuarios a:" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Rastreo de ausencia" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "" +"Impresión do estado de ausencia de usuarios e marcalo cunha cor diferente" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "Nas canles máis pequenas que:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Acción facendo dobre pulsación" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Ventás" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Solapas" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Sempre" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Só retomar solapas" + +#: src/fe-gtk/setup.c:242 +msgid "Tree" +msgstr "Árbore" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "Cambiar tipo:" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Abrir unha solapa extra para as mensaxes do servidor" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Abrir unha mensaxe extra para as noticias do servidor" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "Abrir unha solapa nova cando reciba unha mensaxe privada" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Ordenar solapas en orde alfabético" + +#: src/fe-gtk/setup.c:254 +msgid "Smaller text" +msgstr "Texto máis pequeno" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Enfocar as novas solapas:" + +#: src/fe-gtk/setup.c:258 +msgid "Show channel switcher at:" +msgstr "Amosar seleccionador de canles:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Reducir etiquetas das solapas a:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "letras." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Solapas ou Ventás" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Abrir canles en:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Abrir diálogos en:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Abrir utilidades en:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Abrir DCC, Ignorar, Notificar etc, en solapas ou ventás?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "Non" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Si" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "Preguntar polo cartafol no que gardar de cada vez" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Ficheiros e Directorios" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Aceptar ofrecementos de ficheiros:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Descargar ficheiros en:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Mover ficheiros completados a:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Gardar o alcume nos nomes de ficheiros" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Configuracións de rede" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Obter o meu enderezo do servidor IRC" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Preguntarlle ao servidor IRC o teu enderezo verdadeiro. Usa isto se tes un " +"enderezo 192.168.*.*!" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "Enderezo IP DCC:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Pretender estar neste enderezo cando está ofrecendo ficheiros." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Primer porto de envío DCC:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Último porto de envío DCC:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "Deixar os portos en cero para o rango completo." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Velocidade máxima de transferencia de ficheiros (bytes por segundo)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Unha subida:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Velocidade máxima para unha transferencia" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Unha descarga:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Todas as subidas mesturadas:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Velocidade máxima para todos os ficheiros" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Todas as descargas mesturadas:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Alertas" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "Amosar ventás emerxentes en:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "Intermitencia da icona da bandexa en:" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "Intermitencia da barra de tarefas en:" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "Emitir un son en:" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "Activar icona da bandexa do sistema" + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "Mensaxes resaltadas" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" +"As mensaxes resaltadas son nas que se menciona o seu alcume, pero tamén:" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "Palabras adicionais para resaltar:" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "Os alcumes a non resaltar:" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "Os alcumes para resaltar sempre:" + +#: src/fe-gtk/setup.c:347 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" +"Separar palabras múltiples con comas.\n" +"Permítense comodíns." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Mensaxes predeterminadas" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Saír:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Abandonar a canle:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Ausente:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Ausente" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Anunciar mensaxes de ausencia" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Anunciar súas mensaxes de ausencia a todas as canles" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Mostrar ausencia unha soa vez" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Mostrar mensaxes idénticas de ausencia unha soa vez" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Desmarcar ausencia automaticamente" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Desmarcarse como ausente antes de enviar mensaxes" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Configuración avanzada" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Retraso de reconexión automática:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Mostrar os MODOs en forma crú" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Executar Whois nas notificacións" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "Envía un /WHOIS cando se conecta un usuario da lista de notificacións" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Ocultar mensaxes de entrada e saída" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Ocultar mensaxes de entrada/saída da canle por defecto" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Abrir automaticamente ventás DCC" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Ventá de envío" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Ventá de recepción" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Ventá de Chat" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Rexistros" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "Amosar contidos da sesión anterior" + +#: src/fe-gtk/setup.c:387 +msgid "Enable logging of conversations to disk" +msgstr "Habilitar o rexistro de conversacións ao disco" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Nome do ficheiro de rexistro:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Servidor %c=Canle %n=Rede." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Inserir marcas de data/hora nos rexistros" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Formato de data/hora para o rexistro:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Desactivado)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Tódalas conexións" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "Só servidor IRC" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "Só DCC Get" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Seu enderezo" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Ligar a:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "Só é útil para computadoras con enderezos múltiples." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Servidor proxy" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Nome do equipo:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Porto:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Tipo:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Usar proxy para:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Autenticación de Proxy" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Usar autenticación (só MS Proxy, HTTP ou Socks5)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Usar autenticación (só HTTP ou Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Nome de usuario:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Contrasinal:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Seleccionar un ficheiro de imaxe" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "Seleccionar cartafol de descarga" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Seleccionar fonte" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Examinar..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Marcar usuario identificados con:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Marcar usuario non identificados con:" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "Abrir cartafol de datos" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Seleccionar cor" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Cores do texto" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "Cores de mIRC:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Cores locais:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Primeiro plano:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Fondo:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Texto marcado" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Cores da interface" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Dato novo:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Liña marcada:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Nova mensaxe:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Usuario ausente:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Resaltado:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Evento" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Ficheiro de son" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Seleccionar un ficheiro de son" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Método de reproducción de son:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "_Programa de reproducción externo de son:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "Programa _externo" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_Automático" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "_Directorio de ficheiros de son:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Ficheiro de son:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "_Examinar..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "_Reproducir" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Interface" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Caixa de texto" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Lista de usuarios" + +#: src/fe-gtk/setup.c:1703 +msgid "Channel switcher" +msgstr "Cambiar canles" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Cores" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Chateo" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Xeral" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Son" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Configuración de rede" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Transferencias de ficheiros" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Categorías" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" +"Non pode poñer a árbore de canles enriba ou debaixo.\n" +"Por favor primeiro cambie ao esquema de <b>Solapas</b> no menú <b>Ver</b>." + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" +"Algunhas opcións que cambiou requiren un reinicio para ter efecto " +"completamente." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*AVISO*\n" +"Aceptar automaticamente DCC ao seu directorio de inicio\n" +"pode ser peligroso e é explotable. Por exemplo:\n" +"Alguén pode enviarlle un ficheiro .bash_profile" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: Preferencias" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Houbo un erro analizando a cadea" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Esta sinal só analizou %d argumentos, $%d é inválido" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Imprimir ficheiros de texto" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Editar eventos" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ Número" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Cargar de..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Probar todo" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: Capturador de URL" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Limpar lista" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Copiar a URL seleccionada" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Copiar" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Gardar lista nun ficheiro" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d ops, %d total" + +#~ msgid "About XChat" +#~ msgstr "Acerca de XChat" + +#, fuzzy +#~ msgid "Set _back" +#~ msgstr "Buscar para _atrás" + +#~ msgid "Direct client-to-client" +#~ msgstr "Cliente a cliente directamente" + +#~ msgid "Send File" +#~ msgstr "Enviar ficheiro" + +#~ msgid "Offer Chat" +#~ msgstr "Ofrecer Chat" + +#~ msgid "Abort Chat" +#~ msgstr "Abortar Chat" + +#~ msgid "Userinfo" +#~ msgstr "Información do usuario" + +#~ msgid "Clientinfo" +#~ msgstr "Información do cliente" + +#~ msgid "Time" +#~ msgstr "Tempo" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "Operador" + +#~ msgid "Kill this user" +#~ msgstr "Matar este usuario" + +#~ msgid "Mode" +#~ msgstr "Modo" + +#~ msgid "Give Half-Ops" +#~ msgstr "Dar Semi-Op" + +#~ msgid "Take Half-Ops" +#~ msgstr "Tomar Semi-Op" + +#~ msgid "Ignore" +#~ msgstr "Ignorar" + +#~ msgid "Ignore User" +#~ msgstr "Ignorar Usuario" + +#~ msgid "UnIgnore User" +#~ msgstr "Non ignorar usuario" + +#~ msgid "Info" +#~ msgstr "Info" + +#~ msgid "Who" +#~ msgstr "Who" + +#~ msgid "DNS Lookup" +#~ msgstr "Busca DNS" + +#~ msgid "Trace" +#~ msgstr "Rastrear" + +#~ msgid "UserHost" +#~ msgstr "Máquina do usuario" + +#~ msgid "External" +#~ msgstr "Programas externos" + +#~ msgid "Traceroute" +#~ msgstr "Rastrear ruta" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "Blink tray on message" +#~ msgstr "Intermitencia da bandexa en mensaxe" + +#~ msgid "Show join/part messages" +#~ msgstr "Mostrar mensaxe de entrada/saída da canle" + +#~ msgid "Color paste" +#~ msgstr "Pegar cor" + +#~ msgid "_Close Tab" +#~ msgstr "_Pechar solapa" + +#~ msgid "Channel List..." +#~ msgstr "Lista de canles..." + +#~ msgid "Notify List..." +#~ msgstr "Lista de notificacións..." + +#~ msgid "_Close Window" +#~ msgstr "_Pechar Ventá" + +#~ msgid "User" +#~ msgstr "Usuario" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: Lista de notificacións" + +#~ msgid "C_hannels to join:" +#~ msgstr "C_anles para entrar:" + +#~ msgid "Unban" +#~ msgstr "Quitar veto" + +#, fuzzy +#~ msgid "Channel Switcher" +#~ msgstr "canles con" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "Non hai solapas abertas, saír de xchat?" + +#~ msgid "_Layout" +#~ msgstr "_Distribución" + +#, fuzzy +#~ msgid "Quit..." +#~ msgstr "Saír:" + +#~ msgid "Resizable user list" +#~ msgstr "Lista de usuarios redimensionable" + +#~ msgid "Left" +#~ msgstr "Esquerda" + +#~ msgid "Right" +#~ msgstr "Dereita" + +#, fuzzy +#~ msgid "Above user list" +#~ msgstr "Lista de usuarios redimensionable" + +#~ msgid "US Minor Outlying Islands" +#~ msgstr "Islas Americanas Menores do Exterior" + +#, fuzzy +#~ msgid "File Offer" +#~ msgstr "Transferencias de ficheiros" + +#~ msgid "Flash taskbar on highlighted messages" +#~ msgstr "Destello da barra de tarefas nas mensaxes resaltadas" + +#, fuzzy +#~ msgid "Flash taskbar on private messages" +#~ msgstr "Destello da barra de tarefas nas mensaxes resaltadas" + +#~ msgid "Beep on highlighted messages" +#~ msgstr "Bip en mensaxes resaltadas" + +#~ msgid "Beep on private messages" +#~ msgstr "Bip en mensaxes privadas" + +#~ msgid "Beep on channel messages" +#~ msgstr "Bip en mensaxes de canle" + +#~ msgid "%s loaded successfully!\n" +#~ msgstr "%s cargado correctamente!\n" + +#~ msgid "Go to" +#~ msgstr "Ir a" + +#~ msgid "(Can be a text file relative to ~/.xchat2/)." +#~ msgstr "(Pode ser un ficheiro de texto relativo a ~/.xchat2/)." + +#~ msgid "(Can be a text file relative to config dir)." +#~ msgstr "" +#~ "(Pode ser un ficheiro de texto relativo ao directorio de configuración)." diff --git a/etc/wyatt8740/po/hu.po b/etc/wyatt8740/po/hu.po new file mode 100644 index 0000000..66d696e --- /dev/null +++ b/etc/wyatt8740/po/hu.po @@ -0,0 +1,5706 @@ +# Hungarian translation of X-Chat +# Copyright (C) 1999-2000, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# +# Horvath Szabolcs <horvathsz@penguinpowered.com>, 1999-2000, 2005. +# Kata Konkoly <kata@linuxforum.hu>, 2005. +# Gabor Kelemen <kelemeng@gnome.hu>, 2005, 2006, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.8.6\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2009-08-25 12:11+0100\n" +"Last-Translator: rezso <rezso@rezso.net>\n" +"Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Nem lehet létrehozni a ~/.xchat2 könyvtárat" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Elfoglalt vagyok" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Távozom" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* Rootként IRC-zni nem okos dolog! Hozzon létre\n" +" egy felhasználót és úgy lépjen be.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Várakozás" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Aktív" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Sikertelen" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Kész" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Kapcsolódás" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Megszakítva" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "%s nem érhető el\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Hiba" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s felajánlja a következőt: \"%s\". El kívánja fogadni?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Nincs aktív DCC\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "IGEN" + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "NEM" + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "%s CTCP floodol, %s figyelmen kívül lesz hagyva\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "%s MSG floodol, automatikus ablakmegnyitás kikapcsolva.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s online\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s offline\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "" +"Nincs benn egy csatornán sem. Próbálja meg a /join #<csatorna> parancsot.\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Nincs kapcsolat. Próbálja ezt: /server <host> [<port>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Már megjelölve távollévőként: %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "Már megjelölve visszatértként.\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "A /bin/sh-ra szükség van a futáshoz!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Elérhető parancsok:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Felhasználó által megadott parancsok:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Bővítmény által megadott parancsok:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "" +"További információkért adja ki a /HELP <parancs> vagy /HELP -l parancsot" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "\"%s\" ismeretlen argumentum, mellőzve." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "Nem található ilyen bővítmény.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Ezt a bővítményt nem lehet kikapcsolni.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <név> <akció>, a felhasználólista alá helyez el egy gombot" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <parancs>, parancs küldése minden csatornára, ahol benn van" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHANL <parancs>, parancs küldése minden csatornára, ahol benn van" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <parancs>, parancs küldése minden kiszolgálóra, ahol benn van" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<indoklás>], távollét beállítása" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "BACK, visszatértnek (nem távollévőnek) jelöli" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <maszk> [<kitiltástípus>], kitilt mindenkit, akire illik a maszk az " +"adott csatornán. Ha már benn vannak a csatornán, nem rúgja ki őket (ehhez " +"chanop-jog kell)" + +#: src/common/outbound.c:3506 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <változó> [<érték>]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "" +"CLEAR, [ALL|HISTORY] törli az aktuális szövegablakot vagy a parancstörténetet" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, bezárja az aktuális ablakot/fület" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" +"COUNTRY [-s] <kód|helyettesítőkarakter>, országkód keresése, például au = " +"Ausztrália" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <becenév> <üzenet>, CTCP üzenet küldése a becenévnek, gyakori üzenetek: " +"VERSION és USERINFO" + +#: src/common/outbound.c:3516 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "" +"CYCLE [<csatorna>], kilép és azonnal visszalép az aktuális vagy a megadott " +"csatornára" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <becenév> - küldött fájl elfogadása\n" +"DCC SEND [-maxcps=#] <becenév> [fájl] - fájlküldés\n" +"DCC PSEND [-maxcps=#] <becenév> [fájl] - fájlküldés passzív módban\n" +"DCC LIST - DCC lista mutatása\n" +"DCC CHAT <becenév> - DCC CHAT meghívás\n" +"DCC PCHAT <becenév> - DCC CHAT meghívás passzív módban\n" +"DCC CLOSE <típus> <becenév> <fájl> DCC átvitel bezárása; példa:\n" +" /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <becenév>, elveszi a fél-op státuszt az adott csatornán a becenévtől " +"(op-jog szükséges)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <név>, gomb törlése a felhasználólista alól" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <becenév>, op-jog megvonása a becenévtől az adott csatornán (op-jog " +"szükséges)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <becenév>, megvonja a voice státuszt a becenévtől az adott csatornán " +"(op-jog szükséges)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, bontja a kapcsolatot a kiszolgálóval" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <becenév|gép|ip>, a felhasználó IP számának keresése" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <szöveg>, szöveg helyi megjelenítése" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <parancs>, parancs futtatása. Ha -o -val használja, a kimenet az " +"aktuális csatornára megy, egyébként az aktuális szövegdobozba" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, SIGCONT küldése a folyamatnak" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], futó exec kilövése az aktuális munkafolyamatban. Ha a -9 " +"kapcsolóval használja, a folyamat SIGKILL szignált kap" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, SIGSTOP küldése a folyamatnak" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, adatok küldése a folyamat szabványos bemenetére" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, törli az aktuális kiszolgáló küldési várakozási sorát" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" +"GATE <kiszolgáló> [<port>], a kiszolgáló beállítása proxyként, az " +"alapértelmezett portszám a 23" + +# FIXME +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <becenév> <jelszó>: Egy ghost-olt becenév kilövése" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <becenév>, fél-op státuszt ad a becenévnek (op-jog szükséges)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <jelszó>, azonosítja a becenév-kiszolgáló felé" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <maszk> <típusok..> <opciók..>\n" +" maszk - a mellőzendő gépek maszkja, például *!*@*.aol.com\n" +" típusok - a mellőzendő adatok típusa, a következők legalább egyike:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" opciók - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <becenév> [<csatorna>], meghívja a becenevet egy csatornára, " +"alapértelmezésben az aktuálisra (op-jog szükséges)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <csatorna>, belépés a csatornára" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <becenév>, kirúgja a becenevet az adott csatornáról (op-jog szükséges)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <becenév>, kitiltja, majd kirúgja a becenevet az aktuális " +"csatornáról (op-jog szükséges)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, új lag ellenőrzés kikényszerítése" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <karakterlánc>, karakterlánc keresése a pufferben" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <fájl>, bővítmény vagy parancsfájl betöltése" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, minden fél-op-tól elveszi a fél-op jogot az adott csatornán (op-jog " +"szükséges)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, minden op-tól elveszi az op-jogot az adott csatornán (op-jog " +"szükséges)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <akció>, az adott tevékenységet az aktuális csatornára küldi (az igék 3. " +"személyben írandók, például: /me ugrál)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, tömegesen kirúg mindenkit az adott csatornáról, kivéve Önt (op-jog " +"szükséges)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, tömeges op-jog adása mindenkinek az adott csatornán (op-jog szükséges)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <becenév> <üzenet>, privát üzenet küldése" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, felsorolja az aktuális csatornán lévő beceneveket" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <becenév> <üzenet>, CTCP figyelmeztetés küldése" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <kiszolgálónév> [<port>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <becenév>, beállítja a becenevét" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <becenév/csatorna> <üzenet>, figyelmeztetés küldése . A " +"figyelmeztetés olyan üzenet, amire automatikusan reagálni kell" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n hálózat1[,hálózat2,...]] [<becenév>], megjeleníti az értesítési " +"listát vagy hozzáad valakit" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <becenév>, op-jogot ad a becenévnek (op-jog szükséges)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" +"PART [<csatorna>] [<indoklás>], kilép a csatornáról, alapértelmezésben az " +"aktuálisról" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <becenév | csatorna>, CTCP-pingeli a becenevet vagy a csatornát" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "" +"QUERY [-nofocus] <becenév>, új privát üzenetablak megnyitása az adott " +"becenévhez" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<indoklás>], bontja a kapcsolatot az aktuális kiszolgálóval" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <szöveg>, nyers formában küldi a szöveget a kiszolgálóra" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<kiszolgáló>] [<port>] [<jelszó>], Ugyanúgy használható, " +"mint a /RECONNECT (újracsatlakozás az aktuális kiszolgálóhoz) vagy /" +"RECONNECT ALL (minden nyitott kiszolgálóhoz csatlakozik)" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<host>] [<port>] [<jelszó>], Ugyanúgy használható, mint a /" +"RECONNECT (újracsatlakozás az aktuális kiszolgálóhoz) vagy /RECONNECT ALL " +"(minden nyitott kiszolgálóhoz csatlakozik)" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <szöveg>, nyers adatok küldése az XChatnek, mintha az irc kiszolgálótól " +"érkezett volna" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <szöveg>, szöveget küld az aktuális ablakban lévő objektumba" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <becenév> [<fájl>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <host> <port> <csatorna>, csatlakozik és belép egy adott " +"csatornára" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN <host> <port> <csatorna>, csatlakozik és belép az adott csatornára" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <host> [<port>] [<jelszó>], csatlakozik a kiszolgálóhoz, az " +"alapértelmezett port 6667 normál kapcsolathoz, és 9999 SSL kapcsolathoz" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <host> [<port>] [<jelszó>], csatlakozik az adott kiszolgálóhoz, az " +"alapértelmezett port a 6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <változó> [<érték>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<pozíció>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<téma>], beállítja a témát, ha megadja, vagy megmutatja az aktuális " +"témát" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" +"\n" +"TRAY -f <időkorlát> <fájl1> [<fájl2>] Villogjon a tálcán a két ikon között.\n" +"TRAY -f <fájlnév> A tálca beállítása rögzített ikonra.\n" +"TRAY -i <szám> Tálca villogtatása belső ikonnal.\n" +"TRAY -t <szöveg> A tálca gyorstippjének beállítása.\n" +"TRAY -b <cím> <szöveg> A tálca feliratának beállítása." + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <maszk> [<maszk>...], kitiltás feloldása az adott maszkokra." + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <maszk> [QUIET] az adott maszk mellőzésének megszüntetése" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <név>, kikapcsol egy bővítményt vagy parancsfájlt" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, megnyitja az adott URL-t a böngészőben" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <nick1> <nick2> stb, kiemeli a beceneve(ke)t a csatorna " +"felhasználólistájában" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <becenév>, voice státuszt ad valakinek (op-jog szükséges)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <üzenet>, kiírja az üzenetet az összes csatornára" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <üzenet>, elküldi az üzenetet az aktuális csatorna összes opjának" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Használat: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"Ehhez a parancshoz nincs súgó.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Nincs ilyen parancs.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Hibás argumentum a felhasználói parancs mellett.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Túl sok rekurzív felhasználói parancs, kilépek." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Ismeretlen parancs. Próbálja a /help parancsot\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "" +"Nincs xchat_plugin_init szimbólum; biztos, hogy ez egy XChat bővítmény?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Biztos, hogy ez SSL-re képes kiszolgáló és port?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Nem lehet feloldani a(z) %s gépnevet\n" +"Ellenőrizze az IP-beállításait!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Nem sikerült átjutni a proxyn.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Ugrás a következő kiszolgálóra %s múlva...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Figyelem: a \"%s\" karakterkészlet ismeretlen. Nem lesz konverzió a(z) %s " +"hálózaton." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 hozzáadva az értesítési listához." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Tiltólista:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tNem lehet csatlakozni ehhez:%C26 %B$1 %O(Ki van tiltva)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 mostantól $2-ként ismert" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 kitiltja $2-t" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tA(z) $1 csatorna létrehozva ekkor: $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O elvette a fél-operátori státuszt ettől:%C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O elvette az operátori státuszt ettől:%C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O elvette a voice jogot ettől:%C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 kivételt állít be erre: $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O fél-operátor jogot ad ennek:%C26 $2" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 meghívja $2-t" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UCsatorna Felhasználók Téma" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 beállítja a(z) $2$3 $4 módot" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22 $1 csatorna módjai: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O operátorjogot ad ennek:%C26 $2" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 elveszi a kivételezést erről: $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 visszavonja a meghívást ettől: $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 eltávolítja a csatorna kulcsszót" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 eltávolítja a felhasználói limitet" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 a csatorna kulcsszót beállítja erre: $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 a csatorna limitet beállítja erre: $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 eltávolítja a kitiltást erről: $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O voice jogot ad ennek:%C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Kapcsolódás megtörtént. Belépés folyamatban..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22Kapcsolódás ehhez: $1 ($2) port $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21Kapcsolódás sikertelen. A hiba: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tCTCP $1 érkezett ettől: $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tCTCP $1 érkezett ettől: $2 ($3 számára)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tCTCP Sound $1 érkezett ettől: $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tCTCP $1 érkezett ettől: $2 ($3 számára)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tDCC CHAT megszakadt ezzel:%C26$1%O." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC CHAT kapcsolat létrejött ezzel: %C26$1 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tDCC CHAT %C26$1%O felé megszakadt ($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tDCC CHAT ajánlat érkezett ettől: $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$t $1 DCC CHAT meghívása" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tMár zajlik $1 CHAT meghívása" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "" +"%C22*%O$tDCC $1 kapcsolódási kísérlet %C26 $2%O felé sikertelen (Hiba=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$t\"$1%O\" érkezett ettől: $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 Típus Kinek/Kitől Állapot Méret Pos Fájl " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O." +"%010%C22*%O$tContents of packet: $2" +msgstr "" +"%C22*%O$tHibás formátumú DCC kérés érkezett ettől: %C26$1%O.%010%C22*%O$tA " +"csomag tartalma: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tFelkínálva ez: %C26 $1%O ennek: %C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tNincs ilyen DCC ajánlat." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV%C26 $2%O megszakítva ehhez: %C26 $1%O." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC RECV%C26 $1%O ettől: %C26 $3%O befejeződött %C30[%C26$4%O " +"cps%C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC RECV kapcsolat létrejött ezzel:%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV%C26 $1%O ettől:%C26 $3%O sikertelen ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV: Nem lehet megnyitni $1-t írásra ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "%C22*%O$tA %C26 $1%C fájl már létezik, helyette %C26 $2%O-ként mentem." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Okéri %C26 $2 %C folytatását innen:%C26 $3%C." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC SEND%C26 $2%O ennek:%C26 $1%O megszakítva." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC SEND%C26 $1%O ennek:%C26 $2%O befejeződött %C30[%C26$3%O " +"cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC SEND kapcsolat létrejött ezzel:%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND%C26 $1%O %C26 $2%O felé sikertelen. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Ofelkínálta ezt:%C26 $2 %O(%C26$3 %Obájt)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oehhez:%C26 $3 %Celakadt - megszakítom." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "" +"%C22*%O$tDCC $1%C26 $2 %Oehhez:%C26 $3 %O túllépte az időkorlátot - " +"megszakítom." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 törölve az értesítési listáról." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tKapcsolat bontva ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tAz IP címe: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O hozzáadva a mellőzési listához." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "%C26$1%O mellőzése megváltoztatva." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 Kiszolgálómaszk PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O eltávolítva a mellőzési listából." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr "A figyelmen kívül hagyási lista üres." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "" +"%C22*%O$tNem lehet csatlakozni ehhez: %C26 %B$1 %O(A csatornára csak " +"meghívással lehet belépni)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tMeghívást kapott ide:%C26 $1%O ettől:%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) csatlakozott ide: $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$tNem lehet csatlakozni ehhez:%C26 %B$1 %O(Kulcsszó szükséges)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 kirúgta $2-t innen: $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$t$1 kill-t küldött Önre ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD átugorva." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1-t már használja valaki. Újra próbálom ezzel: $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$tEz a becenév már használatban van. A /NICK segítségével próbálhat " +"ki másikat." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tNincs ilyen DCC." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tJelenleg nem fut semmilyen folyamat" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tAz értesítési lista üres." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Értesítési lista " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 felhasználó van az értesítési listán." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tÉrtesítés: $1 offline ($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tÉrtesítés: $1 online ($3)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) kilépett innen: $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) kilépett innen: $3 (%O%C23$4)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tPing válasz innen: $1: $2 másodperc" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tNincs ping válasz $1 másodperc óta, kapcsolat bontva." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tMár fut egy folyamat" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 kilépett (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 beállítja a módokat %B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallop-ok%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tKeresem a következő IP címét:%C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22Kapcsolódva." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22Keresem ezt: $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tAz előző kapcsolódási kísérlet leállítva(pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29A(z) $1%C %C29 témája ez: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 megváltoztatta a témát erre: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29$1%C %C29 témáját $2%C %C29 beállította ekkor: $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tIsmeretlen gépnév. Talán elgépelte?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "" +"%C22*%O$tNem lehet csatlakozni ehhez:%C26 %B$1 %O(Felhasználói limit elérve)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Felhasználók ezen: $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Ctávol van %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OWHOIS lista vége." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O tétlen%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O tétlen%C26 $2%O, bejelentkezett:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %Ovalós user@host%C27 $2%O, valós IP%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Most itt beszélget: $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tKi lett rúgva innen: $2, $3 által($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tKilépett a(z) $3 csatornáról" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tKilépett a(z) $3 csatornáról (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tMeghívta %C26 $1%O-t erre: %C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tMostantól ezen a néven ismert: $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "Napló betöltve" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** NAPLÓZÁS BEFEJEZÉSE EKKOR: %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** NAPLÓZÁS KEZDETE EKKOR: %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Nem lehet írni a naplófájl(oka)t. Ellenőrizze a\n" +" jogosultságokat a(z) %s/xchatlogs fájlon" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Bal oldali üzenet" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Jobb oldali üzenet" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "A csatlakozó személy beceneve" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "A csatorna, amelyre belép" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "A személy gépe" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Becenév" + +#: src/common/text.c:973 +msgid "The action" +msgstr "A művelet" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Mód karakter" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Azonosított szöveg" + +#: src/common/text.c:980 +msgid "The text" +msgstr "A szöveg" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Az üzenet" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Régi becenév" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Új becenév" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "A témát megváltoztató személy beceneve" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Téma" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Csatorna" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "A kirúgó beceneve" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "A kirúgott személy" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "A csatorna" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "Az indoklás" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "A kilépő személy beceneve" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "Az idő" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "A létrehozó" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Becenév" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Indoklás" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Kiszolgáló" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "Kitől jött" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "Az idő x.x formátumban (lásd lejjebb)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "A csatorna, amelyre megy" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "A hang" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "A személy beceneve" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "A CTCP esemény" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "A személy beceneve, aki a kulcsot beállította" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "A kulcs" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "A személy beceneve, aki beállította a limitet" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "A limit" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "Annak a beceneve, aki az op-jogot adta" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "Annak a beceneve, aki op-jogot kapott" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "Annak a beceneve, aki fél-op jogot kapott" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "Annak a beceneve, aki a fél-op jogot adta" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "Annak a beceneve, aki voice jogot adott" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "Annak a beceneve, aki voice jogot kapott" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "Annak a beceneve, aki a kitiltást végezte" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "A kitiltásmaszk" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "Annak a beceneve, aki eltávolította a kulcsot" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "Annak a beceneve, aki eltávolította a limitet" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "Annak a beceneve, aki elvette az op-jogot" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "Annak a beceneve, akitől elvették az op-jogot" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "Annak a beceneve, aki elvette a fél-op jogot" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Annak a beceneve, akitől elvették a fél-op jogot" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "Annak a beceneve, aki megvonta a voice jogot" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "Annak a beceneve, akitől megvonták a voice jogot" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "Annak a beceneve, aki a kitiltást visszavonta" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "Annak a beceneve, aki a kivételezést beállította" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "A kivételezés maszkja" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "Annak a beceneve, aki a kivételezést eltávolította" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "Annak a beceneve, aki a meghívást küldte" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "A meghívás maszkja" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "Annak a beceneve, aki a meghívást visszavonta" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "Annak a beceneve, aki a módot beállította" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "A mód előjele (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "A mód betűjele" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "A csatorna, amelyre beállítják" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Felhasználónév" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Teljes név" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Csatornatagság/\"IRC operátor\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Kiszolgálóinformáció" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Tétlenség ideje" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Bejelentkezés ideje" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Távollét oka" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Üzenet" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Fiók" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "Valós user@host" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "Valós IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Csatorna neve" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Szöveg" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Kiszolgáló neve" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Annak a beceneve, aki meghívta" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Felhasználók" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "A becenév használatban van" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Próbált becenév" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Port" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Hálózat" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Módok karakterlánca" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "IP cím" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "DCC típus" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Fájlnév" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Cél fájlnév" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Elérési út" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Pozíció" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Méret" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "DCC karakterlánc" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Az értesítési bejegyzések száma" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Régi fájlnév" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Új fájlnév" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Címzett" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Kiszolgálómaszk" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Kiszolgálónév" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "A csomag" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "másodperc" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Annak a beceneve, akit meghívtak" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Kitiltásmaszk" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Ki állította be a kitiltást" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Kitiltás ideje" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Hiba a(z) %s esemény feldolgozásakor.\n" +"Az alapértelmezés kerül betöltésre." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"Nem lehet olvasni ezt a hangfájlt:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "A távoli gép lezárta a foglalatot" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Kapcsolódás elutasítva" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Nincs útvonal a kiszolgálóhoz" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Időtúllépés miatt a kapcsolat megszakadt" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Ezt a címet nem lehet kiosztani" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "A kapcsolatot a túloldali gép visszaállította" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Ascension-sziget" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Egyesült Arab Emirátusok" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Afganisztán" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Antigua és Barbuda" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Albánia" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Örményország" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Holland Antillák" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Antarktisz" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Argentína" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "Fordított DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Amerikai Szamoa" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Ausztria" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "NATO" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Ausztrália" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Aland-szigetek" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Azerbajdzsán" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Bosznia-Hercegovina" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Banglades" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Belgium" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Bulgária" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Bahrein" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Üzleti" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Brunei Szultánátus" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Bolívia" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Brazília" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Bahama-szigetek" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Bhután" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Bouvet-sziget" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Fehéroroszország" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Belizé" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Kanada" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Kókusz-szigetek" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "Kongói Demokratikus Köztársaság" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "Közép-Afrikai Köztársaság" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Kongó" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Svájc" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Elefántcsont-part" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Cook-szigetek" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Chile" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Kamerun" + +#: src/common/util.c:898 +msgid "China" +msgstr "Kína" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Kolumbia" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Internic kereskedelmi" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Szerbia és Montenegro" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Kuba" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Cape Verde" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Karácsony-szigetek" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Ciprus" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "Cseh Köztársaság" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Németország" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Dzsibuti" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Dánia" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Dominika" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "Dominikai Köztársaság" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Algéria" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Ecuador" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Oktatási intézmény" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Észtország" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Egyiptom" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Nyugat-Szahara" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Spanyolország" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Etiópia" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Európai Unió" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Finnország" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Fidzsi" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Falkland-szigetek" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Micronesia" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Faroe-szigetek" + +#: src/common/util.c:928 +msgid "France" +msgstr "Franciaország" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Nagy-Britannia" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Grúzia" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Francia Guyana" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Brit Csatorna-szigetek" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Ghána" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Gibraltár" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Grönland" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Kormányzat" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Guadeloupe" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Egyenlítői Guinea" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Görögország" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Szt. György- és S. Sandwich-szigetek" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Bissau-Guinea" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Guyana" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Heard- és McDonald-szigetek" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Horvátország" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Magyarország" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Indonézia" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Írország" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Izrael" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Man szigete" + +#: src/common/util.c:959 +msgid "India" +msgstr "India" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Információs tartomány" + +#: src/common/util.c:961 +msgid "International" +msgstr "Nemzetközi" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Brit Indiai-óceáni terület" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Irak" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Irán" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Izland" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Olaszország" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Jamaica" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Jordánia" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Japán" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Kenya" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Kirgizisztán" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Kambodzsa" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Comore-szigetek" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "St. Kitts és Nevis" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Észak-Korea" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Dél-Korea" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Kuvait" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Kajmán-szigetek" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Kazahsztán" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Laosz" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Libanon" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Saint Lucia" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Libéria" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Litvánia" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Luxemburg" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Lettország" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Líbia" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Marokkó" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Monaco" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Moldova" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "Egyesült Államok (egészségügy)" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Madagaszkár" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Marshall-szigetek" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Katonai" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Macedónia" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Mianmar" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Mongólia" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Makaó" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Északi Mariana-szigetek" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Martinique" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Mauritánia" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Málta" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Mauritius" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Maldív-szigetek" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Mexikó" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Malajzia" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Mozambik" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Namíbia" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Új-Kaledónia" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Internic hálózat" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Norfolk-szigetek" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Nigéria" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Hollandia" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Norvégia" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Nepál" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Új-Zéland" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Internic non-profit szervezet" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Francia Polinézia" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Pápua Új-Guinea" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Fülöp-szigetek" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Pakisztán" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Lengyelország" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "St. Pierre és Miquelon" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Puerto Rico" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Palesztin terület" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Portugália" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Paraguay" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Katar" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Réunion" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Románia" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "Régimódi ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Orosz Föderáció" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Ruanda" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Szaúd-Arábia" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Salamon-szigetek" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Seychelle-szigetek" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Szudán" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Svédország" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Szingapúr" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "Szt. Ilona" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Szlovénia" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard és Jan Mayen szigetek" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Szlovák Köztársaság" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Szenegál" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Szomália" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Suriname" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "Sao Tome és Principe" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Korábbi Szovjetunió" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Szíria" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Szváziföld" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Turks és Caicos szigetek" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Csád" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Déli Francia Területek" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Togó" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Thaiföld" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Tadzsikisztán" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Kelet-Timor" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Türkmenisztán" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Tunézia" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Törökország" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Trinidad és Tobago" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Tajvan" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Tanzánia" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Ukrajna" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Egyesült Királyság" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "Amerikai Egyesült Államok" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Uruguay" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Üzbegisztán" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Vatikán Állam" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "St. Vincent és a Grenadines" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Brit Virgin-szigetek" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "USA Virgin-szigetek" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Wallis és Futuna szigetek" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Szamoa" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Jemen" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Jugoszlávia" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Dél-Afrika" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Zambia" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Ismeretlen" + +#: src/common/xchat.c:726 +msgid "_Open Dialog Window" +msgstr "Párbeszédablak _nyitása" + +#: src/common/xchat.c:727 +msgid "_Send a File" +msgstr "_Fájl küldése" + +#: src/common/xchat.c:728 +msgid "_User Info (WhoIs)" +msgstr "Felhasz_nálóinformációk (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "Hozzá_adás a barátok listájához" + +#: src/common/xchat.c:730 +msgid "O_perator Actions" +msgstr "O_perátori műveletek" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Op-jog adása" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Op-jog elvétele" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Voice jog adása" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Voice jog elvétele" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Kirúgás/kitiltás" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Kirúgás" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Kitiltás" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "Kirúgás és kitiltás" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Csatorna elhagyása" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Csatlakozás csatornához..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Írja be a csatorna nevét, amelyhez csatlakozni akar:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Kiszolgáló hivatkozások" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Kiszolgáló pingelése" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Verzió elrejtése" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Op" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "viszlát" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Adja meg %s kirúgásának okát:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Fájlküldés" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Párbeszéd" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Küldés" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Csevegés" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Összes törlése" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "Nem lehet csatlakozni a munkamenet buszhoz" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "Nem sikerült a NameHasOwner befejezése" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "Nem sikerült a parancs végrehajtása" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "távoli elérés" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "DBUS-t használó bővítmény távoli eléréshez" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Nem lehet csatlakozni a munkamenetbuszhoz: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "A(z) %s lekérése nem sikerült: %s\n" + +#: src/fe-gtk/about.c:100 +msgid "About " +msgstr "Névjegy" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Többplatformos IRC-kliens" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Karaktertábla" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "Nincs kapcsolat." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Ki kell választania néhány kitiltást." + +# ?#: ../src/fe-gtk/banlist.c:206 +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "Valóban el kívánja távolítani az összes kitiltást a következőn: %s?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Maszk" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "Kitől" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Dátum" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Csak a csatornafülön nyithatja meg a kitiltáslistát." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: Kitiltáslista (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Eltávolítás" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Levágás" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Frissítés" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "%d/%d felhasználó megjelenítése %d/%d csatornán." + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Válasszon egy kimeneti fájlnevet" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "Belépés _csatornára" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "Csatornané_v másolása" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "Té_ma szövegének másolása" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: Csatornalista (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "_Keresés" + +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "_Lista letöltése" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "List_a mentése..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "Megjelenítés:" + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "csak a(z)" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "és" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "közötti felhasználószámú csatornák." + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "Keresés:" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "Csatorna neve" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "Keresés típusa:" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "Egyszerű keresés" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "Mintaillesztés (helyettesítő karakterek)" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "Reguláris kifejezés" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Keresés:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Fájl küldése %s számára" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Ezt a fájlt nem lehet folytatni." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"Nem lehet hozzáférni a következő fájlhoz: %s\n" +"%s.\n" +"A folytatás nem lehetséges." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"A letöltési könyvtárban lévő fájl nagyobb, mint a felkínált. A folytatás nem " +"lehetséges." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "Nem lehet ugyanazt a fájlt két embertől folytatni." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: Feltöltések és letöltések" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Állapot" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Fájl" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Mindkettő" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Feltöltések" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "Letöltések" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Részletek" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Fájl:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "Cím:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Megszakítás" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Elfogadás" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Folytatás" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Mappa megnyitása..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: DCC csevegés lista" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Bejövő" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Elküldött" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "Kezdés időpontja" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*ÚJ*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "SZERKESZT" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Név" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Parancs" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Mozgatás fel" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Mozgatás le" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Mégsem" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Mentés" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Új hozzáadása" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Törlés" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Rendezés" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Súgó" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "Ne csatlakozzon újra automatikusan a kiszolgálókra" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "Másik konfigurációs könyvtár használata" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "Ne töltsön be automatikusan egy bővítményt sem" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "Mutassa az automatikusan betöltődő bővítménykönyvtárat" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "Mutassa a felhasználói konfigurációs könyvtárat" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Egy irc://kiszolgáló:port/csatorna URL megnyitása" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Parancs végrehajtása:" + +#: src/fe-gtk/fe-gtk.c:132 +msgid "Open URL or execute command in an existing XChat" +msgstr "URL megnyitása vagy parancs végrehajtása meglévő XChatben" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" +"Indítás minimalizálva. Lehetséges értékek: 0=normál, 0=ikonméret 2=tálca" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "szint" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Mutassa a verzióinformációt" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"Nem sikerült a következő betűkészlet megnyitása:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "A keresési puffer üres.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d bájt" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Hálózati küldési sor: %d bájt" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"A \"Parancs futtatása\" művelet úgy futtatja az Adat1-ben lévő adatokat, " +"mintha abba a beviteli mezőbe írta volna be, ahol lenyomta a " +"billentyűsorozatot. Ezért tartalmazhat szöveget (ami majd a csatornára/" +"személynek megy), parancsokat vagy felhasználói parancsokat. Futtatáskor az " +"összes \\n karakter, ami az Adat1-ben van, a parancsok elválasztására " +"szolgál, tehát több parancsot is lehet egymás után futtatni. Ha \\-t akar " +"elhelyezni a szövegben, használja így: \\\\" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"Az \"Oldal váltása\" parancs a noteszlapok közt vált. Állítsa be az Adat1-et " +"arra az oldalra, amelyre váltani akar. Ha az Adat2 bármire be van állítva, " +"akkor a váltás a jelenlegi pozícióhoz képest megy végbe" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"A \"Beszúrás a pufferbe\" parancs az Adat1 tartalmát szúrja be az aktuális " +"kurzorpozícióba, ahol a billentyűkombinációt lenyomta" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"Az \"Oldal görgetése\" parancs a szöveget egy sorral vagy oldallal felfelé " +"vagy lefelé görgeti. Az Adat1-ben állítsa be, hogy Fel, Le, +1 vagy -1." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"A \"Puffer beállítása\" parancs a billentyűlenyomáskor bevitt adatokat adja " +"hozzá az Adat1 tartalmához" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"Az \"Utolsó parancs\" az utoljára bevitt parancsot állítja be - ugyanaz, " +"mint amikor egy parancsértelmezőben megnyomja a felfelé nyilat" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"A \"Következő parancs\" a következő bevitt parancsot jeleníti meg - " +"ugyanaz, mint amikor egy parancsértelmezőben megnyomja a lefelé nyilat" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Ez a parancs kiegészíti a megkezdett becenevet vagy parancsot. Ha az Adat1 " +"be van állítva, akkor a TAB kétszeri lenyomása az utolsó becenevet választja " +"ki, nem a következőt" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Ez a parancs fel- vagy lefelé görgeti a becenevek listáját. Ha az Adat1 " +"bármire be van állítva, akkor felfelé görget, egyéb esetben lefelé" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Ez a parancs összehasonlítja az utolsó bevitt szót a cserelista tartalmával " +"és lecseréli, ha egyezést talál" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Ez a parancs eggyel balra mozgatja az első fület" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Ez a parancs eggyel jobbra mozgatja az első fület" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Ez a parancs az aktuális fülek csoportját balra mozgatja" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Ez a parancs az aktuális fülek csoportját jobbra mozgatja" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "" +"A beviteli mező tartalmát hozzáadja az előzményekhez, de nem küldi el a " +"kiszolgálónak" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "Hiba történt a billentyűkombinációk betöltésekor" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<nincs>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Mod" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Billentyű" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Művelet" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: Gyorsbillentyűk" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Adat1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Adat2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Hiba a billentyű-konfigurációs fájl megnyitásakor \n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Ismeretlen billentyűnév a billentyű-konfigurációs fájlban: \"%s\"\n" +"Betöltés megszakítva, kérem javítsa a(z) %s/keybindings.conf fájlt\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Ismeretlen művelet a billentyű-konfigurációs fájlban: \"%s\"\n" +"Betöltés megszakítva, kérem javítsa a(z) %s/keybindings fájlt\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"A rendszer adatsort várt, (kezdet Dx{:|!}) de ezt kapta:\n" +"%s\n" +"\n" +"Betöltés megszakítva, kérem javítsa ki a(z) %s/keybindings fájlt\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"A gyorsbillentyű-fájl megsérült, betöltés megszakítva\n" +"Kérem javítsa a(z) %s /keybindings.conf fájlt\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "Nem lehet írni ezt a fájlt." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Nem lehet olvasni ezt a fájlt." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Ez a maszk már létezik." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Privát üzenet" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Figyelmeztetés" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Meghívás" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Mellőzés megszüntetése" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Írja be a mellőzendő maszkot:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: Mellőzési lista" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Mellőzési statisztika:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Csatorna:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privát:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Figyelmeztetés:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Meghívás:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "Hozzáadás..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "A csatornanév túl rövid, próbálja újra." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: A kapcsolat kész" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "A kapcsolódás kész a következőhöz: %s." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"A Kiszolgálólista ablakban nincs megadva olyan csatorna (csevegőszoba), " +"amelyhez ezen a hálózaton automatikusan csatlakozni kellene." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "Mit szeretne tenni ezután?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "_Semmit, később lépek be egy csatornára." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "_Belépés erre a csatornára:" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Ha tudja a csatorna nevét, amelyre be kíván lépni, adja meg itt." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "_Csatornalista ablak megnyitása." + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "A csatornalista lekérése eltarthat pár percig." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "_Mindig jelenjen meg ez a párbeszédablak csatlakozás után." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Párbeszéd" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "A(z) %s témája: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Nincs beállítva téma" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"Ehhez a kiszolgálóhoz még %d csatorna vagy párbeszéd van társítva. Az " +"összeset bezárja?" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "Kilép az XChatből?" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "Ne kérdezze újra." + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "%i IRC hálózathoz van kapcsolódva." + +# ?#: ../src/fe-gtk/banlist.c:206 +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "Biztos, hogy ki szeretne lépni?" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "Még vannak aktív fájlátvitelek." + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "_Minimalizálás a tálcára" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Attribútum vagy színkód beszúrása" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Félkövér</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Aláhúzott</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Normál" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Színek 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Színek 8-15" + +#: src/fe-gtk/maingui.c:1612 +msgid "_Settings" +msgstr "_Beállítások" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "_Naplózás" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "Visszatekintés új_ratöltése" + +#: src/fe-gtk/maingui.c:1617 +msgid "_Hide Join/Part Messages" +msgstr "A csatlakozási/távozási üzenetek elre_jtése" + +#: src/fe-gtk/maingui.c:1625 +msgid "_Extra Alerts" +msgstr "_Extra figyelmeztetések" + +#: src/fe-gtk/maingui.c:1627 +msgid "Beep on _Message" +msgstr "Üzenetkor _csipog" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "_Tálcaikon villogtatása" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "_Feladatsáv villogtatása" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +msgid "_Detach" +msgstr "_Leválasztás" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "Be_zárás" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "A felhasználó-limit egy szám legyen!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Témavédelem" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Nincs külső üzenet" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Titkos" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Csak meghívásra" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Moderált" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Kitiltási lista" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Kulcsszó" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Felhasználó-limit" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Felhasználólista mutatása/elrejtése" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"Nem lehet átlátszó hátteret beállítani!\n" +"\n" +"Lehet, hogy olyan ablakkezelőt használ, amely\n" +"ezt jelenleg még nem támogatja.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Írja be az új becenevet:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Ismeretlen gépnév" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Valódi név:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Felhasználó:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "Ország:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Kiszolgáló:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "%u perccel ezelőtt" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Utolsó üzenet:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Távol üzenet:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "%d becenév kiválasztva." + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"A menüsáv most rejtett. Újra megjelenítheti az F9 megnyomásával vagy a fő " +"szövegterület egy üres részén való jobbkattintással." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Hivatkozás megnyitása böngészőben" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Kijelölt hivatkozás másolása" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Belépés csatornára" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Kilépés a csatornáról" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Ki- és belépés a csatornára" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "_Eltávolítás a Kedvencek közül" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "Hozzá_adás a Kedvencekhez" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: Felhasználói menü" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Ezen menü szerkesztése..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Csatornalista lekérése..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Felhasználói parancsok - Különleges kódok:\n" +"\n" +"%c = jelenlegi csatorna\n" +"%e = jelenlegi hálózat neve\n" +"%m = gép infó\n" +"%n = az Ön beceneve\n" +"%t = idő/dátum\n" +"%v = xchat verzió\n" +"%2 = 2. szó\n" +"%3 = 3. szó\n" +"&2 = 2. szótól a sor végéig\n" +"&3 = 3. szótól a sor végéig\n" +"\n" +"például:\n" +"/cmd john hello\n" +"\n" +"%2 ez lesz: \"john\"\n" +"&2 ez lesz: \"john hello\"." + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Felhasználólista gombok - Különleges kódok:\n" +"\n" +"%a = az összes kijelölt becenév\n" +"%c = a jelenlegi csatorna\n" +"%e = jelenlegi hálózat neve\n" +"%h = a kijelölt becenév gépének neve\n" +"%m = gép infó\n" +"%n = az Ön beceneve\n" +"%s = kijelölt becenév\n" +"%t = idő/dátum\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Párbeszédgombok - Különleges kódok:\n" +"\n" +"%a = az összes kijelölt becenév\n" +"%c = a jelenlegi csatorna\n" +"%e = jelenlegi hálózat neve\n" +"%h = a kijelölt becenév gépének neve\n" +"%m = gép infó\n" +"%n = az Ön beceneve\n" +"%s = kijelölt becenév\n" +"%t = idő/dátum\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"CTCP válaszok - Különleges kódok:\n" +"\n" +"%d = adatok (a teljes ctcp)\n" +"%e = jelenlegi hálózat neve\n" +"%m = gép infó\n" +"%s = a ctcp-t küldő becenév\n" +"%t = idő/dátum\n" +"%2 = 2. szó\n" +"%3 = 3. szó\n" +"&2 = 2. szótól a sor végéig\n" +"&3 = 3. szótól a sor végéig\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"URL kezelés - Speciális kódok:\n" +"\n" +"%s = az URL karakterlánc\n" +"\n" +"Egy ! -t tegyen a parancs elejére,\n" +"ha egy shellbe kell küldeni,\n" +"és nem az XChatnek" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: Felhasználó által megadott parancsok" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: Felhasználólista helyi menü" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Csere" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: Csere" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: URL-ek kezelése" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: Felhasználólista gombok" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: Párbeszédgombok" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: CTCP  válaszok" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "_Hálózatlista..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "Ú_j" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Kiszolgáló fül..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Csatorna fül..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Kiszolgáló ablak..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Csatorna ablak..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "_Bővítmény vagy parancsfájl betöltése..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "_Kilépés" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "_Nézet" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "_Menüsáv" + +#: src/fe-gtk/menu.c:1592 +msgid "_Topic Bar" +msgstr "_Témasáv" + +#: src/fe-gtk/menu.c:1593 +msgid "_User List" +msgstr "_Felhasználólista" + +#: src/fe-gtk/menu.c:1594 +msgid "U_serlist Buttons" +msgstr "Felhasználólista_gombok" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "_Mód gombok" + +#: src/fe-gtk/menu.c:1597 +msgid "_Channel Switcher" +msgstr "_Csatornaváltó" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "_Fülek" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "F_a" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "_Hálózatfigyelők" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Ki" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Grafikon" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "_Kiszolgáló" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "_Szétkapcsolás" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "Ú_jrakapcsolódás" + +#: src/fe-gtk/menu.c:1613 +msgid "Join a Channel..." +msgstr "Belépés csatornára..." + +#: src/fe-gtk/menu.c:1614 +msgid "List of Channels..." +msgstr "Csatornák listája..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Nem vagyok itt" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "_Felhasználói menü" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "B_eállítások" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "_Beállítások" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Haladó" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Automatikus csere..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "CTCP  válaszok..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Párbeszédgombok..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Gyorsbillentyűk..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Szövegesemények..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "URL-ek kezelése..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Saját parancsok..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Gombok..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Felhasználólista helyi menü..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_Ablak" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Kitiltáslista..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Karaktertábla..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Közvetlen csevegés..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Fájlátvitelek..." + +#: src/fe-gtk/menu.c:1641 +msgid "Friends List..." +msgstr "Barátok listája..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Mellőzési lista..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Bővítmények és parancsfájlok..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Nyers napló..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "URL elfogó..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Jelzővonal visszaállítása" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "Szöveg _törlése" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Szöveg keresése..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Szöveg mentése..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_Súgó" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "_Tartalom" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "Frissítések keresése" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "_Névjegy" + +#: src/fe-gtk/menu.c:2147 +msgid "_Attach" +msgstr "_Csatolás" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Utolsó jelenléte" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Offline" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Soha" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "%d perccel ezelőtt" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Online dokumentáció" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Írja be a hozzáadandó becenevet:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "Értesítés ezeken a hálózatokon:" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "Hálózatok vesszőkkel elválasztott listája adható meg." + +#: src/fe-gtk/notifygui.c:413 +msgid "XChat: Friends List" +msgstr "XChat: Barátok listája" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "Megnyitás párbeszédablak" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" +"A 'notify-send' nem található a figyelmeztető buborékok megjelenítéséhez.\n" +"Telepítse a libnotify csomagot." + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "XChat: Kapcsolódva %u hálózathoz és %u csatornához" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "_Helyreállítás" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "_Elrejtés" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "_Villogjon" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "Csatornaüzenet esetén" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "Privát üzenet esetén" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "Kiemelt üzenet esetén" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "Álla_pot módosítása" + +#: src/fe-gtk/plugin-tray.c:602 +msgid "_Away" +msgstr "_Távol" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "_Vissza" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat: Kiemelt üzenet a következőtől: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat: %u kiemelt üzenet, a legutolsó a következőtől: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat: Új nyilvános üzenet a következőtől: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat: %u új nyilvános üzenet." + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat: Privát üzenet a következőtől: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "XChat: %u privát üzenet, a legutolsó a következőtől: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat: Fájlajánlat a következőtől: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "XChat: %u fájlajánlat, a legutolsó a következőtől: %s (%s)" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Verzió" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Leírás" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Válassza ki a betöltendő bővítményt vagy parancsfájlt" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: Bővítmények és parancsfájlok" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "_Betöltés..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "_Eltávolítás" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Mentés másként..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: Nyers napló (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Nyers napló törlése" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "Az ablak, amelyre ezt a Keresést megnyitotta, már nem létezik." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "A keresés véget ért, nem található." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: Keresés" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "Kis- és _nagybetű" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "Keresés _visszafelé" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "_Keresés" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Új hálózat" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Valóban törli a(z) \"%s\" hálózatot és összes kiszolgálóját?" + +#: src/fe-gtk/servlistgui.c:740 +msgid "#channel" +msgstr "#csatorna" + +#: src/fe-gtk/servlistgui.c:850 +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: Kedvenc csatornák (Automatikus csatlakozási lista)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "E csatornákra fog belépni, amikor csatlakozik ide: %s." + +#: src/fe-gtk/servlistgui.c:906 +msgid "Key (Password)" +msgstr "Kulcs (Jelszó)" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "_Szerkesztés" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "%s eltávolítva." + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "%s hozzáadva." + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "A Felhasználónév és a Valódi név mezőket nem hagyhatja üresen." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: %s szerkesztése" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Kiszolgálók ehhez: %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Csak a kiválasztott kiszolgálókhoz kapcsolódjon" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Ne járja körbe a kiszolgálókat, ha nem sikerül a kapcsolódás." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Részletes információk" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Használja a globális felhasználói információkat" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "Be_cenév:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Második lehetőség:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "_Felhasználónév:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "Való_di név:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Kapcsolódás" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Induláskor automatikusan kapcsolódjon ehhez a kiszolgálóhoz" + +#: src/fe-gtk/servlistgui.c:1462 +msgid "Bypass proxy server" +msgstr "Proxy kiszolgáló használata" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "SSL használata a hálózat összes kiszolgálójához" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Érvénytelen SSL tanúsítvány elfogadása" + +#: src/fe-gtk/servlistgui.c:1475 +msgid "_Favorite channels:" +msgstr "_Kedvenc csatornák:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "" +"Kapcsolódás e csatornákhoz, a felsorolást vesszővel válassza el egymástól, " +"ne szóközzel!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Kapcsolódási parancs:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Extra parancsok a kapcsolódás után. Ha többre van szüksége, állítsa be így: " +"LOAD -e <fájlnév>, ahol a <fájlnév> egy szöveges fájl, amely a végrehajtandó " +"parancsokat tartalmazza." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Nickserv jelszó:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Ha a beceneve jelszót igényel, adja meg itt. Nem minden IRC hálózat " +"támogatja ezt." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Kiszolgáló jelszó:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Jelszó a kiszolgálóhoz, ha nem biztos benne, hagyja üresen." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Karakterkészlet:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: Hálózatlista" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Felhasználói információk" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Harmadik lehetőség:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Hálózatok" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "Ne jelenjen meg a hálózatlista indításkor" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "_Szerkesztés..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "_Rendezés" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" +"A hálózatlistát ábécérendbe rendezi. Sor mozgatásához használja a Shift+fel " +"és Shift+le billentyűket." + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "K_apcsolódás" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Szövegdoboz megjelenése" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Betűtípus:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Háttérkép:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Visszagörgethető sorok:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Színes becenevek" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Mindenkinek külön szín" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Becenevek behúzása" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "A beceneveket jobbra igazítja" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Átlátszó háttér" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Jelzővonal mutatása" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Vörös vonalat szúr be az utolsó olvasott szöveg után." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Áttetszőség beállításai" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Vörös:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Zöld:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Kék:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Időbélyegek" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Időbélyegek engedélyezése" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Időbélyeg formátuma:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Lásd az strftime kézikönyvoldalát." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "Utolsó hozzászólás sorrendjében" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Beviteli doboz" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Használja a Szövegdoboz betűkészletét és színeit" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Helyesírás-ellenőrzés" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Becenév-kiegészítés" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "Automatikus becenév-kiegészítés (a TAB billentyű nélkül)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Becenév-kiegészítés utótagja:" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "Becenév-kiegészítés rendezése:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Bemeneti doboz kódok" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Értelmezze a %nnn-t ASCII értékként" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Értelmezze a %C-t, %B-t mint Szín, Félkövér stb" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, op-ok elöl" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, op-ok hátul" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Rendezetlen" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "Balra (fent)" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "Balra (lent)" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "Jobbra (fent)" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "Jobbra (lent)" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Felül" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Alul" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Rejtett" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Felhasználólista" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "A kiszolgálónevek megjelenítése a felhasználólistában" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Felhasználólista rendezése:" + +#: src/fe-gtk/setup.c:205 +msgid "Show user list at:" +msgstr "Felhasználólista megjelenítése:" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Távollét követés" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "" +"A felhasználók Távol állapotának követése és megjelölésük különböző színekkel" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "Olyan csatornákon, amelyek kisebbek, mint:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Művelet kettős kattintáskor" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Ablakok" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Fülek" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Mindig" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Csak a kívánt fülek" + +#: src/fe-gtk/setup.c:242 +msgid "Tree" +msgstr "Fastruktúra" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "Csatornaváltó típusa:" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Nyisson új fület a kiszolgáló üzeneteihez" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Nyisson új fület a kiszolgáló figyelmeztetéseihez" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "Nyisson új fület privát üzenetek fogadásakor" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Fülek rendezése betűrendbe" + +#: src/fe-gtk/setup.c:254 +msgid "Smaller text" +msgstr "Kisebb szöveg" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Új fül fókuszt kap:" + +#: src/fe-gtk/setup.c:258 +msgid "Show channel switcher at:" +msgstr "A csatornaváltó megjelenítése:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Fülek címkéjének rövidítése:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "betűre." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Fülek vagy ablakok" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Csatornák megnyitása:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Párbeszédablakok megnyitása:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Segédalkalmazások megnyitása:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "" +"A DCC, mellőzési, értesítési stb. ablakokat füleken vagy ablakokban nyissa " +"meg?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "Nem" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Igen" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "Mentési mappa megkeresése minden alkalommal" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Fájlok és könyvtárak" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Fájlajánlatok automatikus elfogadása:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Fájlok letöltése ide:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Kész fájlok átmozgatása ide:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "A bejövő fájlokhoz fűzze hozzá a küldő becenevét" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Hálózati beállítások" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Saját IP lekérdezése az IRC kiszolgálótól" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Lekéri az IRC kiszolgálótól a valós IP címét. Akkor használja, ha 192.168.*." +"* alakú címe van!" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "DCC IP  cím:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Ha fájlt küld, ezt mutatja a címeként." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Első DCC küldés port:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Utolsó DCC küldés port:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!hagyja nullán a portokat a teljes tartomány használatához." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Maximális fájlátviteli sebesség (bájt per másodperc, bps)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Egy feltöltés:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Maximális sebesség egy átvitelhez" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Egy letöltés:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Összes feltöltés együtt:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Maximális sebesség az összes fájlhoz" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Az összes letöltés együtt:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Figyelmeztetések" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "Tálcabuborékok megjelenítése:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "Tálcaikon villogtatása:" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "Feladatsáv villogtatása:" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "Hangjelzés:" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "Rendszertálcaikon engedélyezése" + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "Kiemelt üzenetek" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Kiemelt üzenetek azokon kívül, amelyekben említik a becenevét:" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "További kiemelendő szavak:" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "Nem kiemelendő becenevek:" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "Mindig kiemelendő becenevek:" + +#: src/fe-gtk/setup.c:347 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" +"Több szót vesszőkkel választhat el egymástól.\n" +"Helyettesítő karakterek használhatók." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Alapértelmezett üzenetek" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Kilépés:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Kilépés csatornáról:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Távol:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Távol" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Távol üzenetek bejelentése" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Bejelenti a távollétét az összes csatornán" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Távol mutatása egyszer" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Azonos távol-üzeneteket csak egyszer mutasson" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Automatikusan vonja vissza a távol állapotot" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Távol jelzés visszavonása, mielőtt üzenetet küldene" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Haladó beállítások" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "A kiszolgálóhoz újracsatlakozás késleltetése:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "A MODE-okat nyers formában mutatja" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Értesítéskor Whois" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" +"Küld egy /WHOIS-t, ha az értesítési listán szereplő valamelyik felhasználó " +"online lesz" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Elrejti a belépés és kilépés üzeneteket" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Alapértelmezésben elrejti a csatorna belépés/kilépés üzeneteket" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Közvetlen csevegésablakok automatikus megnyitása" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Küldés ablak" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Fogadás ablak" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Csevegésablak" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Naplózás" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "Visszatekintés megjelenítése az előző folyamatból" + +#: src/fe-gtk/setup.c:387 +msgid "Enable logging of conversations to disk" +msgstr "Csevegések naplózásának engedélyezése" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Naplófájl neve:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=kiszolgáló %c=csatorna %n=hálózat." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Időbélyeg beillesztése a naplófájlokba" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Napló időbélyegének formátuma:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Letiltva)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Az összes kapcsolat" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "Csak IRC kiszolgáló" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "Csak DCC letöltés" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Saját cím" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Kötés:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "Csak több címmel rendelkező gépek esetén hasznos." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Proxy kiszolgáló" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Gép neve:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Port:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Típus:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Proxy használata ehhez:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Proxyhitelesítés" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Hitelesítés használata (csak MS proxy, HTTP vagy Socks5)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Hitelesítés használata (csak HTTP vagy Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Felhasználónév:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Jelszó:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Válasszon egy képfájlt" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "Válasszon letöltési mappát" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Válasszon egy betűtípust" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Tallózás..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Azonosított felhasználók jelölése ezzel:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Azonosítatlan felhasználók jelölése ezzel:" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "Adatmappa megnyitása" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Válasszon színt" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Szövegszín" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "mIRC színek:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Helyi színek:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Előtér:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Háttér:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Szöveg kiemelése" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Megjelenés színe" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Új adatok:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Jelölő vonal:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Új üzenet:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Távollévő felhasználó:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Kiemelés:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Esemény" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Hangfájl" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Válasszon hangfájlt" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Hanglejátszás módszere:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "Külső hanglejátszó_program:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "_Külső program" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_Automatikus" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "Hangfájlok _könyvtára:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Hangfájl:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "_Tallózás..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "_Lejátszás" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Felület" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Szövegdoboz" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Felhasználólista" + +#: src/fe-gtk/setup.c:1703 +msgid "Channel switcher" +msgstr "Csatornaváltó" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Színek" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Csevegés" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Általános" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Hang" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Hálózat beállítása" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Fájlátvitel" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Kategóriák" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" +"Nem helyezheti alulra vagy felülre a fát!\n" +"Először váltson a <b>Nézet</b> menü <b>Fülek</b> elrendezésére." + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Néhány beállítás érvényesítéséhez újraindítás szükséges." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*FIGYELMEZTETÉS*\n" +"DCC automatikus elfogadása a home könyvtárába\n" +"veszélyes és kihasználható lehet. Például:\n" +"Valaki küldhet Önnek egy .bash_profile-t" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: Beállítások" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Hiba történt a karakterlánc feldolgozása közben" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Ez a szignál csak %d argumentumot kapott, $%d érvénytelen" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Szöveges fájl nyomtatása" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Események szerkesztése" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ szám" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Betöltés innen..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Mindet tesztelje" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: URL elfogó" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Lista törlése" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Kijelölt URL másolása" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Másolás" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Lista mentése fájlba" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d op, %d összesen" + +#~ msgid "About XChat" +#~ msgstr "Az XChat névjegye" + +#~ msgid "" +#~ "Set per channel options\n" +#~ "CHANOPT CONFMODE ON|OFF - Toggle conf mode/showing of join and part " +#~ "messages\n" +#~ "CHANOPT COLORPASTE ON|OFF - Toggle color paste\n" +#~ "CHANOPT BEEP ON|OFF - Toggle beep on message\n" +#~ "CHANOPT TRAY ON|OFF - Toggle tray blink on message" +#~ msgstr "" +#~ "Csatornánkénti kapcsolók beállítása\n" +#~ "CHANOPT CONFMODE ON|OFF - Konferenciamód / csatlakozási és kilépési " +#~ "üzenetek megjelenítésének átváltása\n" +#~ "CHANOPT COLORPASTE ON|OFF - Színek beillesztésének átváltása\n" +#~ "CHANOPT BEEP ON|OFF - Üzenetkor csipogás átváltása\n" +#~ "CHANOPT TRAY ON|OFF - Üzenetkor villogjon a tálcán" + +#~ msgid "Direct client-to-client" +#~ msgstr "Közvetlen kliens-kliens kapcsolat (DCC)" + +#~ msgid "Send File" +#~ msgstr "Fájl küldése" + +#~ msgid "Offer Chat" +#~ msgstr "Csevegési ajánlat" + +#~ msgid "Abort Chat" +#~ msgstr "Csevegés megszakítása" + +#~ msgid "Userinfo" +#~ msgstr "Felhasználói infó" + +#~ msgid "Clientinfo" +#~ msgstr "Kliens infó" + +#~ msgid "Time" +#~ msgstr "Idő" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "Oper" + +#~ msgid "Kill this user" +#~ msgstr "Ezen felhasználó kilövése" + +#~ msgid "Mode" +#~ msgstr "Mód" + +#~ msgid "Give Half-Ops" +#~ msgstr "Fél-op jog adása" + +#~ msgid "Take Half-Ops" +#~ msgstr "Fél-op jog elvétele" + +#~ msgid "Ignore" +#~ msgstr "Mellőzés" + +#~ msgid "Ignore User" +#~ msgstr "Felhasználó mellőzése" + +#~ msgid "UnIgnore User" +#~ msgstr "Felhasználó mellőzésének megszüntetése" + +#~ msgid "Info" +#~ msgstr "Információk" + +#~ msgid "Who" +#~ msgstr "Ki" + +#~ msgid "DNS Lookup" +#~ msgstr "DNS kikeresés" + +#~ msgid "Trace" +#~ msgstr "Nyomkövetés" + +#~ msgid "UserHost" +#~ msgstr "Felhasználókiszolgáló" + +#~ msgid "External" +#~ msgstr "Külső programok" + +#~ msgid "Traceroute" +#~ msgstr "Útvonal-nyomkövetés" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "Unban" +#~ msgstr "Kitiltás visszavonása" + +#~ msgid "Blink tray on message" +#~ msgstr "Tálca villogtatása üzenetkor" + +#~ msgid "Show join/part messages" +#~ msgstr "Mutassa a csatlakozás/kilépés üzeneteket" + +#~ msgid "Color paste" +#~ msgstr "Szín beillesztése" + +#~ msgid "_Close Tab" +#~ msgstr "Fül _bezárása" + +#~ msgid "Channel List..." +#~ msgstr "Csatornalista..." + +#~ msgid "Notify List..." +#~ msgstr "Értesítési lista..." + +#~ msgid "_Close Window" +#~ msgstr "Ablak _bezárása" + +#~ msgid "User" +#~ msgstr "Felhasználó" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: Értesítési lista" + +#~ msgid "C_hannels to join:" +#~ msgstr "Ka_pcsolódás a következő csatornákhoz:" + +#~ msgid "Channel Switcher" +#~ msgstr "Csatornaváltó" + +#~ msgid "UTF-8 (Unicode)" +#~ msgstr "UTF-8 (Unicode)" + +#~ msgid "IRC (Latin-1/UTF-8 Hybrid)" +#~ msgstr "IRC (Latin-1/UTF-8 hibrid)" + +#~ msgid "ISO-8859-15 (Western Europe)" +#~ msgstr "ISO-8859-15 (nyugat-európai)" + +#~ msgid "ISO-8859-2 (Central Europe)" +#~ msgstr "ISO-8859-2 (közép-európai)" + +#~ msgid "ISO-8859-7 (Greek)" +#~ msgstr "ISO-8859-7 (görög)" + +#~ msgid "ISO-8859-8 (Hebrew)" +#~ msgstr "ISO-8859-8 (héber)" + +#~ msgid "ISO-8859-9 (Turkish)" +#~ msgstr "ISO-8859-9 (török)" + +#~ msgid "ISO-2022-JP (Japanese)" +#~ msgstr "ISO-2022-JP (japán)" + +#~ msgid "SJIS (Japanese)" +#~ msgstr "SJIS (japán)" + +#~ msgid "CP949 (Korean)" +#~ msgstr "CP949 (koreai)" + +#~ msgid "KOI8-R (Cyrillic)" +#~ msgstr "KOI8-R (cirill)" + +#~ msgid "CP1251 (Cyrillic)" +#~ msgstr "CP1251 (cirill)" + +#~ msgid "CP1256 (Arabic)" +#~ msgstr "CP1256 (arab)" + +#~ msgid "CP1257 (Baltic)" +#~ msgstr "CP1257 (balti)" + +#~ msgid "GB18030 (Chinese)" +#~ msgstr "GB18030 (kínai)" + +#~ msgid "TIS-620 (Thai)" +#~ msgstr "TIS-620 (thai)" + +#~ msgid "System default" +#~ msgstr "Rendszer alapértelmezése" diff --git a/etc/wyatt8740/po/it.po b/etc/wyatt8740/po/it.po new file mode 100644 index 0000000..f9964f6 --- /dev/null +++ b/etc/wyatt8740/po/it.po @@ -0,0 +1,5886 @@ +# Italian translation of XChat. +# +# Eros Palberti - Fabio Viola : How-Tux Team <admin@how-tux.com>, 2006. +# +msgid "" +msgstr "" +"Project-Id-Version: xchat-2.6.7\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2006-10-11 01:00+0200\n" +"Last-Translator: Eros Palberti-Fabio Viola : How-Tux Team <admin@how-tux." +"com>\n" +"Language-Team: Italian\n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Impossibile creare ~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Sono occupato" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Sto andando via" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* Eseguire IRC come root non è saggio.\n" +" Sarebbe preferibile creare un account utente\n" +" e utilizzare tale utente per effettuare il login.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "In attesa" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Attivo" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Fallito" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Completato" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Connessione" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Interrotto" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "Impossibile accedere a %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Errore" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s sta offrendo \"%s\". Vuoi accettare?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Nessun DCC attivo\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "SI " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "NO " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Hai ricevuto un flood CTCP da parte di %s. %s ignorato\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "" +"Hai ricevuto un flood MSG da parte di %s. gui_auto_open_dialog impostato a " +"OFF.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s connesso\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s non connesso\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Non sei in nessun canale. Prova prima /join #<canale>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Non connesso. Prova prima /server <host> [<porta>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "È necessario /bin/sh per l'esecuzione!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Comandi disponibili:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Comandi definiti dall'utente:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Plugin definiti dall'utente:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Digita /HELP <comando> per ulteriori informazioni, oppure /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Argomento sconosciuto '%s' ignorato." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "Plugin non trovato.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Questo plugin si rifiuta di terminare.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <nome> <azione>, aggiunge un pulsante sotto la lista utenti" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <cmd>, invia un comando a tutti i canali in cui sei presente" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHANL <cmd>, invia un comando a tutti i canali in cui sei presente" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "" +"ALLSERV <cmd>, invia un comando a tutti i server ai quali sei collegato" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<motivo>], cambia il tuo stato in assente" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <mask> [<tipo_di_ban>], allontana dal canale corrente tutti coloro che " +"corrispondono alla maschera di rete specificata. Se essi sono già connessi " +"al canale, questo non li espelle (kick). Bisogna essere operatore." + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-quiet] <variabile> [<valore>]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "" +"CLEAR [ALL|HISTORY], Pulisce la finestra di testo corrente o i comandi " +"recenti" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, chiude la finestra/scheda corrente" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" +"COUNTRY [-s] <codice|wildcard>, cerca un codice paese, per es.: au = " +"Australia" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <nick> <messaggio>, invia il messaggio CTCP al nick indicato, messaggi " +"comuni sono VERSION e USERINFO" + +#: src/common/outbound.c:3516 +#, fuzzy +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "CYCLE, abbandona il canale corrente e vi rientra immediatamente" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <nick> - accetta un file offerto\n" +"DCC SEND [-maxcps=#] <nick> [file] - invia un file a qualcuno\n" +"DCC PSEND [-maxcps=#] <nick> [file] - invia un file utilizzando la modalità " +"passiva\n" +"DCC LIST - visualizza la lista dei collegamenti " +"DCC\n" +"DCC CHAT <nick> - propone una DCC CHAT a qualcuno\n" +"DCC PCHAT <nick> - propone una DCC CHAT utilizzando la " +"modalità passiva\n" +"DCC CLOSE <tipo> <nick> <file> esempio:\n" +" /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <nick>, rimuove lo stato di semi-operatore sul canale corrente per il " +"nick indicato (bisogna essere operatore)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <nome>, cancella un pulsante sotto la lista utenti" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <nick>, rimuove lo stato di operatore sul canale corrente per il nick " +"indicato (bisogna essere operatore)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <nick>, toglie la parola al nick indicato sul canale corrente " +"(bisogna essere operatore)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, disconnette dal server" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <nick|host|ip>, cerca l'indirizzo IP di un utente" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <testo>, stampa un testo in locale" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <comando>, esegue il comando. Se si utilizza l'opzione -o, " +"l'output è inviato al canale corrente, altrimenti è stampato nella corrente " +"text box" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, invia un SIGCONT al processo" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], uccide un'istanza exec nella sessione corrente. Se è " +"specificato -9, il processo è ucciso con SIGKILL" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, invia un SIGSTOP al processo" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, invia dati allo stdin del processo" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, svuota la coda di invio del server corrente" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" +"GATE <host> [<porta>], utilizza un host come proxy, la porta predefinita è " +"la 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <nick> <password>, Uccide il nickname fantasma" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" +"HOP <nick>, dà lo stato di semi-operatore al nick (bisogna essere operatore)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <password>, ti identifica presso il nickserv" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <maschera> <tipi..> <opzioni..>\n" +" maschera - host maschera da ignorare, per es.: *!*@*.aol.com\n" +" tipi - tipi di dato da ignorare, uno o più tra:\n" +" PRIV, CHAN, NOTI, CTCP,DCC, INVI, ALL\n" +" opzioni - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <nick> [<canale>], invita qualcuno in un canale, la regola predefinta " +"è per il canale corrente (bisogna essere operatore del canale)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <canale>, entra nel canale" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <nick>, espelle il nick dal canale corrente (bisogna essere operatore " +"del canale)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <nick>, allontana (ban) e poi espelle (kick) il nick dal canale " +"corrente (bisogna essere operatore del canale)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, forza un nuovo controllo del ritardo (lag)" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <stringa>, cerca una stringa nel buffer" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <file>, carica un plugin o uno script" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, toglie lo stato a tutti i semi-operatori del canale corrente " +"(bisogna essere operatore del canale)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, toglie lo stato a tutti gli operatori del canale corrente (bisogna " +"essere operatore del canale)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <azione>, invia l'azione al canale corrente (le azioni sono scritte in " +"terza persona, es. /me jumps)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, espelle dal canale corrente tutti gli utenti tranne te (bisogna " +"essere operatore del canale)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, rende operatori tutti gli utenti nel canale corrente (bisogna essere " +"operatore del canale)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <nick> <messaggio>, invia un messaggio privato" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, elenca i nick presenti sul canale corrente" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <nick> <messaggio>, invia una notifica CTCP" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER <nome host> [<porta>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <nickname>, imposta il tuo nick" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <nick/canale> <messaggio>, invia una notifica. Le notifiche sono un " +"tipo di messaggio che dovrebbe ottenere una reazione automatica" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n network1[,network2,...]] [<nick>], mostra la tua lista di " +"notifica o aggiunge qualcuno ad essa" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" +"OP <nick>, dà lo stato di operatore al nick indicato (bisogna essere " +"operatore del canale)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" +"PART [<canale>] [<motivo>], abbandona il canale. Se non specificato, quello " +"corrente" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <nick | canale>, invia un ping CTCP al nick o al canale" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "QUERY [-nofocus] <nick>, apre una chat privata con il nick indicato" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<motivo>], disconnette dal server corrente" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <testo>, invia il testo in forma grezza al server" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<host>] [<porta>] [<password>], può essere richiamato " +"semplicemente come /RECONNECT per riconnettersi al server corrente o con /" +"RECONNECT ALL per riconnettersi a tutti i server aperti" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<host>] [<porta>] [<password>], può essere richiamato " +"semplicemente come /RECONNECT per riconnettersi al server corrente o con /" +"RECONNECT ALL per riconnettersi a tutti i server aperti" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <testo>, invia il testo sotto forma di dati grezzi a xchat, come se " +"fosse stato ricevuto dal server irc" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "" +"SAY <testo>, invia il testo all'oggetto a cui corrisponde la finestra " +"corrente" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <nick> [<file>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <host> <porta> <canale>, si connette ed entra nel canale" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <host> <porta> <canale>, si connette ed entra nel canale" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <host> [<porta>] [<password>], si connette al server, la porta " +"predefinita è la 6667 per le connessioni normali e la 9999 per le " +"connessioni ssl" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <host> [<porta>] [<password>], si connette al server, la porta " +"predefinita è la 6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-quiet] <variabile> [<valore>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<posizione>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<argomento>], imposta l'argomento, se specificato, altrimenti mostra " +"quello attuale" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "" +"UNBAN <maschera> [<maschera>...], rimuove il ban per la maschera specificata" + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <maschera> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <nome>, termina un plugin o uno script" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, apre uno URL nel tuo browser" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <nick1> <nick2> ecc., evidenzia i(l) nick nella lista " +"utenti del canale" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "" +"VOICE <nick>, dà la parola a qualcuno (bisogna essere operatore del canale)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <messaggio>, scrive il messaggio su tutti i canali" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <messaggio>, invia il messaggio a tutti gli operatori del canale " +"corrente" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Uso: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"Nessun aiuto disponibile per questo comando.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Comando inesistente.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Argomenti del comando non corretti.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Troppi comandi ricorsivi. Annullati." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Comando sconosciuto. Prova con /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "Nessun simbolo xchat_plugin_init; è veramente un plugin di xchat?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Sei sicuro che il server e la porta supportano SSL?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Impossibile risolvere l'hostname %s\n" +"Verifica le tue impostazioni IP!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Attraversamento del proxy fallito.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Nuovo tentativo con il server successivo di %s in corso...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Attenzione: il set di caratteri \"%s\" è sconosciuto. Non verrà effettuata " +"alcuna conversione per il network %s." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 aggiunto alla lista di notifica." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Lista ban:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tImpossibile entrare in%C26 %B$1 %O(Sei bannato)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 è ora conosciuto come $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 ha impostato un ban su $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tCanale $1 creato su $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "" +"%C22*%O$t%C26$1%O ha tolto lo stato di semi-operatore del canale a%C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O ha tolto lo stato di operatore del canale da%C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O ha tolto la parola a%C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 ha impostato l'exempt su $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "" +"%C22*%O$t%C26$1%O ha dato lo stato di semi-operatore del canale a%C26 $2" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 ha impostato l'invito su $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UCanale Utenti Argomento" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 ha impostato la modalità $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Canale $1 modalità: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O ha dato lo stato di operatore del canale a%C26 $2" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 ha rimosso l'exempt su $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 ha rimosso l'invito su $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 ha rimosso la parola chiave del canale" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 ha rimosso il limite di utenti" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 ha impostato come parola chiave del canale $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 ha impostato il limite utenti del canale a $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 ha rimosso il ban da $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O ha dato la parola a%C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Connesso. Login in corso.." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22Connessione a $1 ($2) porta $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21Connessione fallita. Errore: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tRicevuto un CTCP $1 da $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tRicevuto un CTCP $1 da $2 (per $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tRicevuto un suono CTCP $1 da $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tRicevuto un suono CTCP $1 da $2 (per $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tDCC CHAT con %C26$1%O interrotta." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$tConnessione DCC CHAT stabilita con %C26$1 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tDCC CHAT con %C26$1%O perduta ($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tRicevuta una richiesta di CHAT DCC da $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tInvito a una CHAT DCC per $1" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tInvito alla CHAT per $1 già effettuato" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "" +"%C22*%O$tDCC Tentativo di connessione DCC $1 a %C26 $2%O fallito (err=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tRicevuto '$1%O' da $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 Tipo Per/Da Stato Dimensione Pos File " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O." +"%010%C22*%O$tContents of packet: $2" +msgstr "" +"%C22*%O$tRicevuta una richiesta DCC mal formata da %C26$1%O." +"%010%C22*%O$tContenuto del pacchetto: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tOfferta di %C26 $1%O per%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tOfferta DCC inesistente." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV di%C26 $2%O da%C26 $1%O interrotto." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC RECV di%C26 $1%O da%C26 $3%O completato %C30[%C26$4%O " +"cps%C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tConnessione DCC RECV stabilita con%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV di%C26 $1%O da%C26 $3%O fallito ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV: Impossibile aprire $1 in scrittura ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "%C22*%O$tIl file%C26 $1%C esiste già, verrà salvato come %C26 $2%O." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Oha richiesto di continuare%C26 $2 %Cda%C26 $3%C." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC SEND%C26 $2%O per%C26 $1%O interrotto." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC SEND%C26 $1%O per%C26 $2%O completato %C30[%C26$3%O cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC SEND connessione stabilita con%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND%C26 $1%O con%C26 $2%O fallito. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Oha offerto%C26 $2 %O(%C26$3 %Obyte)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "" +"%C22*%O$tDCC $1%C26 $2 %Oper%C26 $3 %Cbloccato - interruzione in corso." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oper%C26 $3 %Oscaduto - interruzione in corso." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 rimosso dalla lista di notifica." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tDisconnesso ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tTrovato il tuo IP: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O aggiunto alla lista utenti ignorati." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "Lo stato degli utenti ignorati su %C26$1%O è cambiato." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O rimosso dalla lista utenti ignorati." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " La lista utenti ignorati è vuota." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "" +"%C22*%O$tImpossibile entrare in%C26 %B$1 %O(L'accesso al canale è solamente " +"su invito)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tSei stato invitato su%C26 $1%O da%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) è entrato in $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$tImpossibile entrare in%C26 %B$1 %O(Richiesta parola chiave)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 ha espulso $2 da $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$tSei stato ucciso (kill) da $1 ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD Saltato." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 è gia in uso. Ritento con $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "%C22*%O$tNickname già in uso. Utilizza /NICK per sceglierne un altro." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tDCC non esistente." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tNessun processo attualmente in esecuzione" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tLa lista di notifica è vuota." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Lista di notifica " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 utenti nella lista di notifica." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tNotifica: $1 non è connesso ($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tNotifica: $1 è connesso ($3)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) ha abbandonato $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) ha abbandonato $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tRisposta al ping da $1: $2 secondi" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "" +"%C22*%O$tNessuna risposta al ping per $1 secondi, disconnessione in corso." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tUn processo è già in esecuzione" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 è uscito (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 ha impostato le modalità%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tRicerca dell'indirizzo IP per%C26 $1%O in corso..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22Connesso." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22Ricerca di $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "" +"%C22*%O$tIl tentativo di connessione precedente è stato interrotto (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29L'argomento di $1%C %C29è: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 ha scelto come argomento: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29Argomento per $1%C %C29impostato da $2%C %C29a $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tHost sconosciuto. Forse è scritto male?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "" +"%C22*%O$tImpossibile entrare in%C26 %B$1 %O(Raggiunto il limite di utenti)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Utenti in $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cè assente %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OFine della lista WHOIS." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O inattivo%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O inattivo%C26 $2%O, connesso:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %Oreale user@host%C27 $2%O, reale IP%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Ora parla su $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tSei stato espulso (kick) da $2 da $3 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tSei uscito dal canale $3" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tSei uscito dal canale $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tHai invitato%C26 $1%O in%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tSei ora conosciuto come $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** FINE DEL LOG %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** INIZIO DEL LOG %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Impossibile aprire i file di log in scrittura.\n" +" Verifica i permessi su %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Messaggio a sinistra" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Messaggio a destra" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "Il nick della persona che è entrata" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "Il canale nel quale sta entrando" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "L'host della persona" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Nickname" + +#: src/common/text.c:973 +msgid "The action" +msgstr "L'azione" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Il carattere della modalità" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Testo identificato" + +#: src/common/text.c:980 +msgid "The text" +msgstr "Il testo" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Il messaggio" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Vecchio nickname" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Nuovo nickname" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Nick dell'utente che ha cambiato l'argomento" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Argomento" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Canale" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "Il nickname di chi ha effettuato il kick" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "La persona che ha ricevuto il kick" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "Il canale" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "Il motivo" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "Il nick della persona che è andata via" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "L'ora" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "Il creatore" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Nick" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Motivo" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Host" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "Da chi è stato fatto" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "L'ora nel formato x.x (vedi più giù)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "Il canale al quale è destinato" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "Il suono" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "Il nick della persona" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "L'evento CTCP" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "Il nick della persona che ha impostato la chiave" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "La chiave" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "Il nick della persona che ha impostato il limite" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "Il limite" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "Il nick della persona che ha impostato l'op" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "Il nick della persona che è stata resa op" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "Il nick della persona che è stata resa halfop" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "Il nick della persona che ha impostato l'halfop" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "Il nick della persona che ha dato la parola" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "Il nick della persona che ha ricevuto la parola" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "Il nick della persona che ha impostato il ban" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "La maschera del ban" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "Il nick della persona che ha rimosso la chiave" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "Il nick della persona che ha rimosso il limite" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "Il nick della persona che ha rimosso l'op" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "Il nick della persona che è stata rimossa da op" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "Il nick della persona che ha rimosso lo stato di semi-operatore" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Il nick della persona che è stata rimossa da halfop" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "Il nick della persona che ha tolto la parola" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "Il nick della persona a cui è stata tolta la parola" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "Il nick della persona che ha rimosso il ban" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "Il nick della persona che ha impostato l'exempt" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "La maschera di exempt" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "Il nick della persona che ha rimosso l'exempt" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "Il nick della persona che ha impostato l'invito" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "La maschera di invito" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "Il nick della persona che ha rimosso l'invito" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "Il nick della persona che ha impostato la modalità" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "Il segno della modalità (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "La lettera della modalità" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "Il canale su cui ha effetto l'impostazione" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Nome utente" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Nome completo" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Appartenenza al canale / \"è un operatore IRC\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Informazioni sul server" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Tempo di inattività" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Orario di connessione" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Motivo dell'assenza" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Messaggio" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Account" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "utente@host effettivo" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "IP effettivo" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Nome del canale" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Testo" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Nome del server" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Nick della persona che ti ha invitato" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Utenti" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Nickname già in uso" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Nick in via di prova" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Porta" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Rete" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Stringhe modalità" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "Indirizzo IP" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "Tipo DCC" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Nome del file" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Nome del file di destinazione" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Percorso" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Posizione" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Dimensione" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "Stringa DCC" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Numero degli utenti nella lista di notifica" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Vecchio nome del file" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Nuovo nome del file" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Destinatario" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Maschera dell'host" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Nome dell'host" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "Il pacchetto" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Secondi" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Nick della persona che è stata invitata" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Maschera dei ban" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Chi ha impostato il ban" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Ora del ban" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Errore nell'analisi dell'evento %s.\n" +"Verranno caricati i valori predefiniti." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"Impossibile leggere il file audio:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "L'host remoto ha chiuso il socket" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Connessione rifiutata" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Nessun instradamento per l'host" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Connessione scaduta" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Impossibile assegnare l'indirizzo" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Connessione interrotta dall'host remoto" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Isole Cocos" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Emirati Arabi Uniti" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Afghanistan" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Antigua e Barbuda" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Albania" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Armenia" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Antille Olandesi" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Antartide" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Argentina" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "DNS inverso" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Samoa Americane" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Austria" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Australia" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Isole Falkland" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Azerbaijan" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Bosnia-Herzegovina" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Bangladesh" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Belgio" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Bulgaria" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Bahrain" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Businesses" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Brunei Darussalam" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Bolivia" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Brasile" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Bahamas" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Bhutan" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Isola Bouvet" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Bielorussia" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Canada" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Isole Cocos" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "Repubblica Democratica del Congo" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "Repubblica Centrafricana" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Congo" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Svizzera" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Costa d'Avorio" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Isole Cook" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Cile" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Camerun" + +#: src/common/util.c:898 +msgid "China" +msgstr "Cina" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Colombia" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Internic, commerciale" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Serbia e Montenegro" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Cuba" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Capo Verde" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Isola Christmas" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Cipro" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "Repubblica Ceca" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Germania" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Gibuti" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Danimarca" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Dominica" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "Repubblica Dominicana" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Algeria" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Ecuador" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Istituzione educativa" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Estonia" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Egitto" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Sahara Occidentale" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Spagna" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Etiopia" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Unione Europea" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Finlandia" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Fiji" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Isole Falkland" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Micronesia" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Isole Faroe" + +#: src/common/util.c:928 +msgid "France" +msgstr "Francia" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Gran Bretagna" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Georgia" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Guyana Francese" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Isole del Canale Britannico" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Ghana" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Gibilterra" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Groenlandia" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Governativo" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Guadalupa" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Guinea Equatoriale" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Grecia" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Isole S.Georgia e S.Sandwich" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Guinea-Bissau" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Guyana" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Isole Heard and McDonald" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Croazia" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Ungheria" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Indonesia" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Irlanda" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Israele" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Isle of Man" + +#: src/common/util.c:959 +msgid "India" +msgstr "India" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Informativo" + +#: src/common/util.c:961 +msgid "International" +msgstr "Internazionale" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Territori Britannici dell'Oceano Indiano" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Iraq" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Iran" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Islanda" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Italia" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Giamaica" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Giordania" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Giappone" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Kenya" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Kirghizistan" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Cambogia" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Comore" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "S. Kitts e Nevis" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Corea del Nord" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Corea del Sud" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Kuwait" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Isole Cayman" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Kazakistan" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Libano" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Santa Lucia" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Liberia" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Lituania" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Lussemburgo" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Lettonia" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Libia" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Marocco" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Monaco" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Moldavia" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "Stati Uniti, sanità" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Madagascar" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Isole Marshall" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Militare" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Macedonia" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Mongolia" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Macao" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Isole Marianne del Nord" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Martinica" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Mauritania" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Muritius" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Maldive" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Messico" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Malesia" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Mozambico" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Namibia" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Nuova Caledonia" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Network Internic" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Isola Norfolk" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Nigeria" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Paesi Bassi" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Norvegia" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Nuova Zelanda" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Internic, associazione no-profit" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Perù" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Polinesia Francese" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Papua - Nuova Guinea" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Filippine" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Polonia" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "St. Pierre e Miquelon" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Porto Rico" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Territori palestinesi" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Portogallo" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Paraguay" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Qatar" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Reunion" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Romania" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "ARPAnet vecchio tipo" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Federazione Russa" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Ruanda" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Arabia Saudita" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Isole Salomone" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Seychelles" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Sudan" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Svezia" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Singapore" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "S. Helena" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Slovenia" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Isole Svalbard e Jan Mayen" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Repubblica Slovacca" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Somalia" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Suriname" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "Sao Tome e Principe" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Ex URSS" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Siria" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Swaziland" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Isole Turks e Caicos" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Chad" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Terre Australi Francesi" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Thailandia" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Tajikistan" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Timor Est" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Tunisia" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Turchia" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Trinidad e Tobago" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Tanzania" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Ucraina" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Regno Unito" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "Stati Uniti d'America" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Uruguay" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Uzbekistan" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Città del Vaticano" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "St. Vincent e le Grenadine" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Isole Vergini Britanniche" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "Isole Vergini Americane" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Isole Wallis e Futuna" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Yemen" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Iugoslavia" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Sud Africa" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Zambia" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Zimbawe" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Sconosciuto" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "Apri la finestra di dialogo" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "Invia un File" + +#: src/common/xchat.c:728 +#, fuzzy +msgid "_User Info (WhoIs)" +msgstr "Informazione Utente (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +#, fuzzy +msgid "O_perator Actions" +msgstr "Opzioni" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Assegna lo stato di Op" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Rimuovi lo stato di Op" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Dai la parola (voice)" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Prendi la parola (voice)" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Kick/Ban" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Kick" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Ban" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "KickBan" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Esci dal canale" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Entra nel canale..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Nome del canale nel quale entrare:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Link dei server" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Fai ping sul server" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Nascondi versione" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Op" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "arrivederci" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Immetti il motivo per il kick a %s :" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Invia un file" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Dialogo" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Invia" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Chat" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Pulisci" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "Impossibile collegarsi al bus di sessione" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "Completamento di NameHasOwner fallito" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "Completamento del comando fallito" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "accesso remoto" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "plugin per l'accesso remoto usando DBUS" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Impossibile collegarsi al bus di sessione: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Fallita acquisizione %s: %s\n" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "_Informazioni" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Client IRC multipiattaforma" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Tabella caratteri" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "Non connesso" + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Devi selezionare alcuni ban." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "Sei sicuro di voler rimuovere tutti i ban in %s?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Maschera" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "Da" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Data" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" +"Puoi aprire la finestra Lista dei Ban solamente mentre sei nella scheda di " +"un canale" + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: Lista dei Ban (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Rimuovi" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Rimuovi i Ban esclusa selezione" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Aggiorna" + +#: src/fe-gtk/chanlist.c:111 +#, fuzzy, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Statistiche Utente e Canale: %d/%d Utenti su %d/%d Canali" + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Scegli il nome di un file di output" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +#, fuzzy +msgid "_Join Channel" +msgstr "Entra nel canale" + +#: src/fe-gtk/chanlist.c:633 +#, fuzzy +msgid "_Copy Channel Name" +msgstr "Nome del canale" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: Lista Canali (%s)" + +#: src/fe-gtk/chanlist.c:781 +#, fuzzy +msgid "_Search" +msgstr "XChat: Cerca" + +#: src/fe-gtk/chanlist.c:787 +#, fuzzy +msgid "_Download List" +msgstr "Download" + +#: src/fe-gtk/chanlist.c:793 +#, fuzzy +msgid "Save _List..." +msgstr "Salva Come..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "" + +#: src/fe-gtk/chanlist.c:818 +#, fuzzy +msgid "channels with" +msgstr "canale" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:843 +#, fuzzy +msgid "users." +msgstr "Utenti" + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:861 +#, fuzzy +msgid "Channel name" +msgstr "Nome del canale" + +#: src/fe-gtk/chanlist.c:882 +#, fuzzy +msgid "Search type:" +msgstr "Cerca Testo..." + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:890 +#, fuzzy +msgid "Pattern Match (Wildcards)" +msgstr "Riscontro Pattern:" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Trova:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Invia un file a %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Questo file non è ripristinabile." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"Impossibile accedere al file: %s\n" +"%s.\n" +"Ripristino non possibile." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"Il file nella cartella di download è più grande di quello offerto. " +"Ripristino non possibile." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "Impossibile ripristinare lo stesso file da due persone" + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: Upload e Download" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Stato" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "File" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "Tempo Mancante" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Entrambi" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Upload" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "Download" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Dettagli" + +#: src/fe-gtk/dccgui.c:820 +#, fuzzy +msgid "File:" +msgstr "File" + +#: src/fe-gtk/dccgui.c:821 +#, fuzzy +msgid "Address:" +msgstr "Indirizzo" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Interrompi" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Accetta" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Ripristina" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Apri Cartella..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: Lista Chat DCC" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Ricevuto" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Inviato" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "Inizio Tempo" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "NUOVO*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "MODIFICAMI" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Nome" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Comando" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Muovi Su" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Muovi Giu" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Cancella" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Salva" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Aggiungi Nuovo" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Cancella" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Ordina" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Aiuto" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "Non connettere automaticamente ai server" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "Usa una cartella di configurazione diversa" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "Impossibile caricare automaticamente alcun plugin" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "Mostra la cartella di auto-caricamento dei plugin" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "Mostra la cartella di configurazione utente" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Apri un URL irc://server:port/channel" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Esegui comando:" + +#: src/fe-gtk/fe-gtk.c:132 +#, fuzzy +msgid "Open URL or execute command in an existing XChat" +msgstr "Apri URL in XChat esistente" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +#, fuzzy +msgid "level" +msgstr "Mai" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Mostra informazioni sulla versione" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"Impossibile aprire il carattere:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "Il buffer di ricerca è vuoto.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d byte" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Coda di invio: %d byte" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"Il comando Run Command esegue il contenuto di Data 1 come se fosse stato " +"digitato dentro la casella dove hai digitato la sequenza chiave. Quindi può " +"contenere testo (che verrà inviato al canale/persona), comandi o comandi " +"utente. Quando esegue tutti \\n caratteri in Data 1 sono usati per " +"delimitare comandi separati in modo da eseguire più di un comando. Se vuoi " +"\\ nel testo attuale allora premi invio \\\\" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"Il comando Change Page cambia pagine. Imposta Data 1 alla pagina a cui vuoi " +"cambiare. Se Data 2 è impostata a qualcosa allora il cambio sarà relativo " +"alla posizione corrente" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"Il comando Insert in Buffer inserirà il contenuto di Data 1 nella casella " +"dove la sequenza chiave è stata premuta nella posizione corrente del cursore" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"Il comando Scroll Page scorre l'oggetto testo su o giu di una pagina o una " +"linea. Imposta Data 1 a su, giu, +1 o -1." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"Il comando Set Buffer imposta la casella dove è stata digitata la sequenza " +"chiave nel contenuto di Data 1" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"Il Last Command comando imposta la casella per contenere l'ultimo comando " +"digitato - corrispondente a premere il tasto su nella shell" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"Il Next Command comando imposta la casella per contenere il successivo " +"comando digitato- corrispondente a premere il tasto giu nella shell" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Qeusto comando cambia il testo nella casella per finire un nick o un comando " +"incompleto. Se Data 1 è impostato allora la doppia pressione sul tasto TAB " +"in una stringa selezionerà l'ultimo nick, non il prossimo" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Questo comando scorre su e giù attraverso la lista dei nick. Se Data 1 è " +"impostato a qualcosa scorrerà verso l'altro, altrimenti verso il basso" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Questo comando confronta l'ultima parola inserita con la lista dei sostituti " +"e rimpiazza se trova parole coincidenti" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Questo comando muove la scheda davanti a sinistra di uno" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Questo comando muove la scheda davanti a destra di uno" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Questo comando muove i tab correnti a sinistra" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Questo comando muove i tab correnti a destra" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "Inserisci la linea di input nella cronologia ma non inviarla al server" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "" +"E' avvenuto un errore durante il caricamento della mappatura della tastiera" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<none>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Mod" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Tasto" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Azione" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: Scorciatoie di Tastiera" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Dati 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Dati 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Errore nell'apertura del file di configurazione dei tasti\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Nome del tasto %s sconosciuto nel file di configurazione\n" +"Caricamento interrotto, per favore controlla %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Azione %s sconosciuta nel file di configurazione\n" +"Caricamento interrotto, per favore controlla %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Aspetto linea dati (inizio Dx{:|!}) ma ottenuto:\n" +"%s\n" +"\n" +"Caricamento interrotto, per favore controlla %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"Il file di configurazione dei tasti è corrotto, caricamento interrotto\n" +"Per favore controlla %s/keybindings.conf\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "Impossibile scrivere su quel file" + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Impossibile leggere quel file" + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Quella maschera esiste già." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Privato" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Notizia" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Invita" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Annulla ignora" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Inserisci maschera da ignorare:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: Lista utenti ignorati" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Stato utenti ignorati:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Canale:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privato:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Notizia:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Invita:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "Aggiungi..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "Nome del canale troppo corto, prova di nuovo." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: Connessione completata" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "Connessione a %s completata." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"Nella finestra Lista-Server, nessun canale (chat room) è stato inserito nel " +"quale entrare automaticamente per questa rete." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "Cosa vuoi fare dopo?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "_Niente, Entrerò nel canale dopo." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "_Entra in questo canale:" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Se conosci il nome del canale nel quale vuoi entrare, scrivilo qui." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "A_pri la finestra Lista-Canali." + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "Richiamare la Lista-Canali potrebbe richiedere un minuto o due." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "_Mostra sempre questa finestra dopo la connessione." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Dialoga con" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Argomento per %s è: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Nessun argomento è impostato" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"Questo server ha ancora %d canali o dialoghi associati ad esso. Chiudere " +"tutto?" + +#: src/fe-gtk/maingui.c:1283 +#, fuzzy +msgid "Quit XChat?" +msgstr "Informazioni su XChat" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1310 +#, fuzzy, c-format +msgid "You are connected to %i IRC networks." +msgstr "Connetti automaticamente a questa rete all'avvio" + +#: src/fe-gtk/maingui.c:1312 +#, fuzzy +msgid "Are you sure you want to quit?" +msgstr "Sei sicuro di voler rimuovere tutti i ban in %s?" + +#: src/fe-gtk/maingui.c:1314 +#, fuzzy +msgid "Some file transfers are still active." +msgstr "Alcuni file sono ancora in trasferimento, chiudere xchat?" + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Inserisci Attributo o Codice colore" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Grassetto</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Sottolineato</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Normale" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Colori 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Colori 8-15" + +#: src/fe-gtk/maingui.c:1612 +#, fuzzy +msgid "_Settings" +msgstr "_Impostazioni" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "Nascondi messaggi di entrata e uscita" + +#: src/fe-gtk/maingui.c:1625 +#, fuzzy +msgid "_Extra Alerts" +msgstr "Avvisi" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "Beep sul messaggio" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +#, fuzzy +msgid "_Detach" +msgstr "_Stacca Scheda" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "_Chiudi" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "Il limite utenti deve essere un numero!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Protezione Argomento" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Nessun fuori messaggio" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Segreto" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Solo Invito" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Moderato" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Lista Ban" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Parola Chiave" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Limite Utenti" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Mostra/Nascondi lista utenti" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"Impossibile impostare la trasparenza dello sfondo!\n" +"\n" +"Potresti usare un window manager\n" +"correntemente non supportato.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Inserisci il nuovo nickname:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Host sconosciuto" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Nome Reale:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Utente:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "Nazione:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Server:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "%u minuti fa" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Ultimo Messaggio:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Messaggio di assenza" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"La barra dei menù è nascosta. Puoi mostrarla nuovamente premendo F9 o " +"cliccandocon il tasto destro in uno spazio bianco dell'area testo." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Apri collegamento nel Browser" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Copia collegamento selezionato" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Entra nel canale" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Abbandona Canale" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Cicla Canale" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: Menù utente" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Modifica questo menù..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Richiama lista canali..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Comandi utente - Codici speciali:\n" +"\n" +"%c = canale corrente\n" +"%e = nome della rete corrente\n" +"%m = informazioni sul computer\n" +"%n = tuo nick\n" +"%t = ora/data\n" +"%v = versione xchat\n" +"%2 = parola 2\n" +"%3 = parola 3\n" +"&2 = parola 2 alla fine della linea\n" +"&3 = parola 3 alla fine della linea\n" +"\n" +"esempio:\n" +"/cmd john hello\n" +"\n" +"%2 è \"john\"\n" +"&2 è \"john hello\"." + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Pulsanti lista utenti - Codici speciali:\n" +"\n" +"%a = tutti i nick selezionati\n" +"%c = canale corrente\n" +"%e = nome della rete corrente\n" +"%h = hostname del nick selezionato\n" +"%m = informazioni sul computer\n" +"%n = tuo nick\n" +"%s = nick selezionato\n" +"%t = ora/data\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Pulsanti dialoghi - Codici speciali:\n" +"\n" +"%a = tutti i nick selezionati\n" +"%c = canale corrente\n" +"%e = nome della rete corrente\n" +"%h = hostname del nick selezionato\n" +"%m = informazioni sul computer\n" +"%n = tuo nick\n" +"%s = nick selezionato\n" +"%t = ora/data\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"Repliche CTCP - Codici speciali:\n" +"\n" +"%d = dati (ctcp intero)\n" +"%e = nome della rete corrente\n" +"%m = informazioni sul computer\n" +"%s = nick che ha inviato il ctcp\n" +"%t = ora/data\n" +"%2 = parola 2\n" +"%3 = parola 3\n" +"&2 = parola 2 alla fine della linea\n" +"&3 = parola 3 allafine della linea\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"Gestore URL - Codici speciali:\n" +"\n" +"%s = stringa dell'URL\n" +"\n" +"Inserire ! davanti al comando\n" +"indica che dovrebbe essere inviato\n" +"ad una shell invece che ad XChat" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: Comandi definiti dall'utente" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: Menà popup lista utente" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Sostituisci con" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: Sostituisci" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: Gestore URL" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: Pulsanti lista utente" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: Pulsanti dialogo" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: Repliche CTCP" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "Li_sta Reti..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "_Nuovo" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Scheda Server..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Scheda Canale..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Finestra Server..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Finestra Canale..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "C_arica Plugin o Script" + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "_Esci" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "_Visualizza" + +#: src/fe-gtk/menu.c:1591 +#, fuzzy +msgid "_Menu Bar" +msgstr "Barra del _Menù" + +#: src/fe-gtk/menu.c:1592 +#, fuzzy +msgid "_Topic Bar" +msgstr "Barra Argomen_to" + +#: src/fe-gtk/menu.c:1593 +#, fuzzy +msgid "_User List" +msgstr "Lista utenti" + +#: src/fe-gtk/menu.c:1594 +#, fuzzy +msgid "U_serlist Buttons" +msgstr "Pulsanti Lista _Utenti" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "Pulsanti M_oredatori" + +#: src/fe-gtk/menu.c:1597 +#, fuzzy +msgid "_Channel Switcher" +msgstr "Lista Canali..." + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "_Schede" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "_Albero" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "Test _Rete" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Disattivato" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Grafico" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "_Server" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "_Disconnetti" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "_Riconnetti" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "Entra nel canale..." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "Entra nel canale..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Segna Assenza" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "Menù _Utente" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "_Impostazioni" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "_Preferenze" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Avanzate" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Risposta Automatica..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "Repliche CTCP..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Pulsanti Dialogo..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Scorciatoie di Tastiera..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Eventi Testuali..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "Gestore URL..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Comandi Utente..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Pulsanti Lista Utenti..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Popup Lista Utenti..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_Finestra" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Lista dei Ban..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Tabella Caratteri..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Chat Diretta..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Trasferimento File..." + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "Lista dei Ban..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Lista utenti ignorati..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Plugin e Script..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Raw Log..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "URL Raccolti..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Reset linea di demarcazione" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "Cance_lla Testo" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Cerca Testo..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Salva Testo..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_Aiuto" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "_Contenuti" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "_Informazioni" + +#: src/fe-gtk/menu.c:2147 +#, fuzzy +msgid "_Attach" +msgstr "_Attacca Finestra" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Ultima volta visto" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Non collegato" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Mai" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, fuzzy, c-format +msgid "%d minutes ago" +msgstr "%u minuti fa" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Collegato" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Inserisci nickname da aggiungere:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "Notifica su queste reti:" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "E' accettata la virgola per separare la lista delle reti." + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "XChat: Lista File Inviata" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "Apri Dialogo" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:591 +#, fuzzy +msgid "_Hide" +msgstr "Nascondi" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +#, fuzzy +msgid "Channel Message" +msgstr "Nome del canale" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +#, fuzzy +msgid "Private Message" +msgstr "Emetti un beep per messaggio privato ricevuto" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +#, fuzzy +msgid "Highlighted Message" +msgstr "Emetti un beep per messaggio evidenziato" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "Assente" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Versione" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Descrizione" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Seleziona il Plugin o lo Script da caricare" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: Plugin e Script" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "_Carica..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "_Scarica" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Salva Come..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: Rawlog (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Cancella rawlog" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "La finestra che hai aperto per questa ricerca non esiste più." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "Ricerca finita, non trovato." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: Cerca" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "_Riscontro caso" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "Cerca _dietro" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "_Trova" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Nuova Rete" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Vuoi veramente rimuovere la rete \"%s\" e tutti i suoi server?" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "canale" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: Lista Canali (%s)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "Password:" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "_Modifica" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "Nome utente e nome reale non possono essere vuoti." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: Modifica %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Server per %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Connetti solo al server selezionato" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Non ricollegarsi attraverso i server quando la connessione fallisce." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Tuoi Dettagli" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Usa informazioni utente globali" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "_Nick name:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Seconda scelta:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "Nome _Utente:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "Nome Rea_le:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Connessione" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Connetti automaticamente a questa rete all'avvio" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "Usa un server proxy" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "Usa SSL per tutti i server di questa rete" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Accetta certificati SSL invalidi" + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "Lascia canale:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "Canali nei quali entrare, separati da virgola, ma senza spazi!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Comando dopo connessione:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Comando extra da eseguire dopo la connessione. Se necessiti di più comandi, " +"imposta questo per caricare -e <filename>, dove <filename> è un file di " +"testo con tutti i comandi da eseguire." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Password del Nickserv:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Se il tuo nickname richiede una password, inseriscila qui. Non tutte le reti " +"IRC lo supportano." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Password del Server:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Password per il server, in caso di dubbio, lasciare vuoto." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Imposta Carattere:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: Lista Reti" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Informazioni Utente" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Terza scelta:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Reti" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "Salta lista reti all'avvio" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "_Modifica..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "_Ordina" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "_Connetti" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Aspetto Area Testo" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Carattere:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Immagine di sfondo:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Linee visibili:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Nickname colorati" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Assegna a ciascuna persona su IRC un colore differente" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Rientra nickname" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Nickname giustificati a destra" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Trasparenza di sfondo" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Mostra linea di demarcazione" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Inserisci una linea rossa dopo l'ultimo messaggio letto." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Impostazioni Trasparenza" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Rosso:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Verde:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Blu:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Stampa Ora" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Attiva stampa ora" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Formato stampa ora:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Vedi la guida di strftime per dettagli." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "Ordina per ultimo che ha parlato" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Area Input" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Usa carattere e colori dell'area testo" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Controllo del periodo" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Completa Nick" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "Completa automaticamente il nick (senza tasto TAB)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Suffisso al completamento nick:" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "Completamento nick ordinati:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Codici Area Input" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Interpreta %nnn come un valore ASCII" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Interpreta %C, %B come Colore, Grassetto ecc." + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, Prima gli Op" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, Dopo gli Op" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Non ordinare" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Alta" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Parte inferiore" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Nascondi" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Lista utenti" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Mostra hostname nella lista utenti" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Lista utenti ordinata per:" + +#: src/fe-gtk/setup.c:205 +#, fuzzy +msgid "Show user list at:" +msgstr "Mostra/Nascondi lista utenti" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Traccia delle assenze" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "Trova lo stato di assenza degli utenti e segnali con colore differente" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "Sui canali più piccoli di:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Azione per doppio click" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Finestre" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Schede" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Sempre" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Solo schede richieste" + +#: src/fe-gtk/setup.c:242 +#, fuzzy +msgid "Tree" +msgstr "_Albero" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Apri una scheda extra per i messaggi del server" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Apri una scheda extra per le notizie del server" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "Apri una nuova scheda quando ricevi un messaggio privato" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Ordina schede in modo alfabetico" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "Schede piccole" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Apri la nuova scheda:" + +#: src/fe-gtk/setup.c:258 +#, fuzzy +msgid "Show channel switcher at:" +msgstr "Sui canali più piccoli di:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Caratteri nomi schede:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "lettere." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Schede o Finestre" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Apri canali in:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Apri dialoghi in:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Apri utilità in:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Apri DCC, lista ignorati, notifiche ecc, in schede o finestre?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "No" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Si" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "Sfoglia per cartelle da salvare ogni momento" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "File e Cartelle" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Accetta automaticamente i file offerti:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Download file in:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Muovi file completi in:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Salva nickname nei nomi dei file " + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Impostazioni Rete" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Prendi il mio indirizzo dal server IRC" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Chiedi al server IRC il tuo indirizzo reale. Usa questo se hai un indirizzo " +"192.168.*.*!" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "DCC indirizzo IP:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Segnala questo indirizzo quando offri file." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Prima porta invio DCC:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Ultima porta invio DCC:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!Lascia porte a zero per range pieno." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Velocità di trasferimento file massima (byte per secondo)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Un Upload:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Velocità massima per un trasferimento" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Un download:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Tutti gli upload combinati:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Velocità massima per tutti i file" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Tutti i download combinati:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Avvisi" + +#: src/fe-gtk/setup.c:333 +#, fuzzy +msgid "Show tray balloons on:" +msgstr "Mostra schede a:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "" + +#: src/fe-gtk/setup.c:341 +#, fuzzy +msgid "Highlighted Messages" +msgstr "Emetti un beep per messaggio evidenziato" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:344 +#, fuzzy +msgid "Extra words to highlight:" +msgstr "Parole extra da evidenziare su:" + +#: src/fe-gtk/setup.c:345 +#, fuzzy +msgid "Nick names not to highlight:" +msgstr "Nick da non evidenziare su:" + +#: src/fe-gtk/setup.c:346 +#, fuzzy +msgid "Nick names to always highlight:" +msgstr "Nick da non evidenziare su:" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Separa più parole con virgole" + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Messaggi di default" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Esci:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Lascia canale:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Assente:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Assente" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Annuncia messaggi di assenza" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Annuncia i tuoi messaggi di assenza a tutti i canali" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Mostra una volta il messaggio di assenza" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Mostra i messaggi di assenza identici una volta" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Togli automaticamente lo stato di assenza" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Togli l'assenza prima di mandare messaggi" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Impostazioni Avanzate" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Connettiti automaticamente dopo:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Mostra modalità in forma raw" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Esegui Whois su notifica" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" +"Invia un /WHOIS quando un utente della tua lista di notifica si collega" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Nascondi messaggi di entrata e uscita" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Nascondi i messaggi di entrata/uscita nei canali" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Apri automaticamente finestre DCC" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Finestra d'invio" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Finestra di ricezione" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Finestra Chat" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Logging" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "Attiva log delle conversazioni" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "File di Log:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Server %c=Canale %n=Rete." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Inserisci orario nei log" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Formato stampa ora dei Log:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Disabilitato)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Sock4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Sock5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Tutte le connessioni" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "Solo Server IRC" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "Ricevi solo DCC" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Tuo Indirizzo" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Abbina a:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "Utile solo per computer con indirizzi multipli" + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Proxy Server" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Hostname:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Porta:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Tipo:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Usa proxy per:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Autenticazione Proxy" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Usa autenticazione (MS Proxy, HTTP o solo Socks5)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Usa autenticazione (HTTP o solo Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Username:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Password:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Seleziona un File Immagine" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "Seleziona Cartella di Download" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Seleziona carattere" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Sfoglia..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Segna utenti identificati con:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Segna utenti non identificati con:" + +#: src/fe-gtk/setup.c:1161 +#, fuzzy +msgid "Open Data Folder" +msgstr "Apri Cartella..." + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Seleziona un colore" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Colore del testo" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "Colori di mIRC:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Colori locali" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Primo piano" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Sfondo" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Seleziona testo" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Interfaccia Colori" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Nuova data:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Seleziona linea:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Nuovo messaggio:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Utente assente:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Evidenziazione:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Evento" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Suona file" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Seleziona un file musicale" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Metodo esecuzione suono:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "_Programma di suono esterno" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "Programma _esterno" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_Automatico" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "Suona file _cartella:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Suona file:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "_Sfoglia..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "_Play" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Interfaccia" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Area testo" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Lista utenti" + +#: src/fe-gtk/setup.c:1703 +#, fuzzy +msgid "Channel switcher" +msgstr "Lista Canali..." + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Colori" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Chatting" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Generale" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Suono" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Setup Rete" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "File trasferiti" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Categorie" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" +"Alcune impostazioni sono state cambiate e richiedono il riavvio per essere " +"attuate." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*ATTENZIONE*\n" +"L'auto accettazione DCC nella tua cartella home\n" +"può essere pericoloso e soggetto a exploit. Esempio:\n" +"Qualcuno può mandarti un .bash_profile" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: Preferenze" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "C'è stato un errore analizzando la stringa" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Questo segnale ha passato solo %d argomenti, $%d non è valido" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Stampa testo su un file" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Modifica Eventi" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ Numero" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Carica Da..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Testa Tutto" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: URL Raccolto" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Cancella lista" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Copia URL selezionato" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Copia" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Salva lista su un file" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d op, %d totali" + +#~ msgid "" +#~ "Set per channel options\n" +#~ "CHANOPT CONFMODE ON|OFF - Toggle conf mode/showing of join and part " +#~ "messages\n" +#~ "CHANOPT COLORPASTE ON|OFF - Toggle color paste\n" +#~ "CHANOPT BEEP ON|OFF - Toggle beep on message" +#~ msgstr "" +#~ "Opzioni del canale\n" +#~ "CHANOPT CONFMODE ON|OFF - Imposta la modalità visiva dei messaggi di " +#~ "entrata e uscita dai canali\n" +#~ "CHANOPT COLORPASTE ON|OFF - Imposta il colore dei messaggi incollati\n" +#~ "CHANOPT BEEP ON|OFF - Imposta il beep sui messaggi ricevuti" + +#~ msgid "US Minor Outlying Islands" +#~ msgstr "Isole esterne minori americane" + +#~ msgid "Direct client-to-client" +#~ msgstr "Client-to-client diretto" + +#~ msgid "Send File" +#~ msgstr "Invia un File" + +#~ msgid "Offer Chat" +#~ msgstr "Invita ad una discussione" + +#~ msgid "Abort Chat" +#~ msgstr "Abbandona la discussione" + +#~ msgid "Userinfo" +#~ msgstr "Informazioni utente" + +#~ msgid "Clientinfo" +#~ msgstr "Informazioni sul client" + +#~ msgid "Time" +#~ msgstr "Tempo" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "Operatore" + +#~ msgid "Kill this user" +#~ msgstr "Uccidi (kill) questo utente" + +#~ msgid "Mode" +#~ msgstr "Modalità" + +#~ msgid "Give Half-Ops" +#~ msgstr "Assegna lo stato di Half-Op" + +#~ msgid "Take Half-Ops" +#~ msgstr "Rimuovi lo stato di Half-Op" + +#~ msgid "Ignore" +#~ msgstr "Ignora" + +#~ msgid "Ignore User" +#~ msgstr "Ignora utente" + +#~ msgid "UnIgnore User" +#~ msgstr "Annulla ignora utente" + +#~ msgid "Info" +#~ msgstr "Info" + +#~ msgid "Who" +#~ msgstr "Who" + +#~ msgid "DNS Lookup" +#~ msgstr "Risoluzione DNS" + +#~ msgid "Trace" +#~ msgstr "Trace" + +#~ msgid "UserHost" +#~ msgstr "Host dell'utente" + +#~ msgid "External" +#~ msgstr "Esterni" + +#~ msgid "Traceroute" +#~ msgstr "Traceroute" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "%s loaded successfully!\n" +#~ msgstr "%s caricamento riuscito!\n" + +#~ msgid "Unban" +#~ msgstr "Rimuovi Ban" + +#~ msgid "I can't save an empty list!" +#~ msgstr "Non posso salvare una lista vuota!" + +#~ msgid "List display options:" +#~ msgstr "Lista opzioni display:" + +#~ msgid "Minimum Users:" +#~ msgstr "Utenti Minimi" + +#~ msgid "Maximum Users:" +#~ msgstr "Utenti Massimi" + +#~ msgid "Regex Match:" +#~ msgstr "Frase da cercare:" + +#~ msgid "Apply Match to:" +#~ msgstr "Applica Riscontro a:" + +#~ msgid "Apply" +#~ msgstr "Applica" + +#~ msgid "Refresh the list" +#~ msgstr "Aggiorna la lista" + +#~ msgid "Save the list" +#~ msgstr "Salva la lista" + +#~ msgid "None" +#~ msgstr "Niente" + +#~ msgid "To" +#~ msgstr "A" + +#~ msgid "Started" +#~ msgstr "Avviato" + +#~ msgid "Speed limit" +#~ msgstr "Limite di Velocità" + +#~ msgid "XChat: File Receive List" +#~ msgstr "XChat: Lista File Ricevuti" + +#~ msgid "Open" +#~ msgstr "Apri" + +#~ msgid "Ack" +#~ msgstr "Trasferito" + +#~ msgid "To/From" +#~ msgstr "A/Da" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "Nessuna altra scheda aperta, chiudere xchat?" + +#~ msgid "Show join/part messages" +#~ msgstr "Mostra messaggi di entrata/uscita" + +#~ msgid "Color paste" +#~ msgstr "Incolla colore" + +#~ msgid "Go to" +#~ msgstr "Vai a" + +#~ msgid "_Close Tab" +#~ msgstr "_Chiudi Scheda" + +#~ msgid "_Layout" +#~ msgstr "_Disposizione" + +#~ msgid "Notify List..." +#~ msgstr "Lista Notifiche..." + +#~ msgid "_Close Window" +#~ msgstr "_Chiudi Finestra" + +#~ msgid "User" +#~ msgstr "Utente" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: Lista Notifiche" + +#~ msgid "C_hannels to join:" +#~ msgstr "C_anale nel quale entrare:" + +#~ msgid "Resizable user list" +#~ msgstr "Lista utenti adattabile" + +#~ msgid "Left" +#~ msgstr "Sinistra" + +#~ msgid "Right" +#~ msgstr "Destra" + +#~ msgid "(Can be a text file relative to ~/.xchat2/)." +#~ msgstr "(Può essere un file di testo relativo a ~/.xchat2/)." + +#~ msgid "(Can be a text file relative to config dir)." +#~ msgstr "" +#~ "(Può essere un file di testo relativo alla cartella di configurazione)." + +#~ msgid "Flash taskbar on highlighted messages" +#~ msgstr "Taskbar lampeggiante ai messaggi evidenziati" + +#~ msgid "Flash taskbar on any private messages" +#~ msgstr "Taskbar lampeggiante ai messaggi evidenziati" + +#~ msgid "Beep on channel messages" +#~ msgstr "Emetti un beep per messaggio ricevuto in canale" + +#~ msgid "PID" +#~ msgstr "PID" + +#~ msgid "Server" +#~ msgstr "Server" + +#~ msgid "%C18*$t$1%O $2" +#~ msgstr "%C18*$t$1%O $2" + +#~ msgid "%C21*%O$t%C21%B$1%O%C21 $2" +#~ msgstr "%C21*%O$t%C21%B$1%O%C21 $2" + +#~ msgid "%C18%H<%H$4$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$4$1%H>%H%O$t$2" + +#~ msgid "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" +#~ msgstr "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" + +#~ msgid "%C28-%C29$1/$2%C28-%O$t$3" +#~ msgstr "%C28-%C29$1/$2%C28-%O$t$3" + +#~ msgid "$1$t$2" +#~ msgstr "$1$t$2" + +#~ msgid "%C19>%O$1%C19<%O$t$2" +#~ msgstr "%C19>%O$1%C19<%O$t$2" + +#~ msgid "%C16*%O$t$1%O" +#~ msgstr "%C16*%O$t$1%O" + +#~ msgid "%C28-%C29$1%C28-%O$t$2" +#~ msgstr "%C28-%C29$1%C28-%O$t$2" + +#~ msgid "%C28*%C29$3$1%C28*$t%O$2" +#~ msgstr "%C28*%C29$3$1%C28*$t%O$2" + +#~ msgid "%C18%H<%H$3$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$3$1%H>%H%O$t$2" + +#~ msgid "%C22*%O$t$1" +#~ msgstr "%C22*%O$t$1" + +#~ msgid "%C31%H<%H$4$1%H>%H%O%C30$t$2" +#~ msgstr "%C31%H<%H$4$1%H>%H%O%C30$t$2" + +#~ msgid "Open an irc:// url" +#~ msgstr "Apri un irc:// url" + +#~ msgid "irc://server:port/channel" +#~ msgstr "irc://server:porta/canale" + +#~ msgid "Execute a xchat command" +#~ msgstr "Esegui un comando di xchat" + +#~ msgid "\"Command to execute\"" +#~ msgstr "\"Comando da eseguire\"" + +#~ msgid "Prints some text to the current tab/window" +#~ msgstr "Stampa testo dalla scheda/finestra corrente" + +#~ msgid "\"Text to print\"" +#~ msgstr "\"Testo da stampare\"" + +#~ msgid "Change the context to the channel" +#~ msgstr "Cambia il contesto al canale" + +#~ msgid "Change the context to the server" +#~ msgstr "Cambia il contesto al server" + +#~ msgid "server" +#~ msgstr "server" + +#~ msgid "Get some informations from xchat" +#~ msgstr "Ottieni alcune informazioni da xchat" + +#~ msgid "id" +#~ msgstr "id" + +#~ msgid "Get settings from xchat" +#~ msgstr "Ottieni impostazioni da xchat" + +#~ msgid "name" +#~ msgstr "nome" + +#~ msgid "" +#~ "xchat-remote: %s\n" +#~ "Try `xchat-remote --help' for more information\n" +#~ msgstr "" +#~ "xchat-remote: %s\n" +#~ "Prova `xchat-remote --help' per maggiori informazioni\n" + +#~ msgid "Failed to complete SetContext" +#~ msgstr "Completamento di SetContext fallito" + +#~ msgid "Failed to complete print" +#~ msgstr "Completamento di stampa fallito" + +#~ msgid "Failed to complete GetInfo" +#~ msgstr "Completamento di GetInfo fallito" + +#~ msgid "Failed to complete GetPrefs" +#~ msgstr "Completamento di GetPrefs fallito" + +#~ msgid "%s doesn't exist\n" +#~ msgstr "%s non esiste\n" diff --git a/etc/wyatt8740/po/ja.po b/etc/wyatt8740/po/ja.po new file mode 100644 index 0000000..ac276c8 --- /dev/null +++ b/etc/wyatt8740/po/ja.po @@ -0,0 +1,7118 @@ +# xchat for Japanese +# Copyright (C) 1999-2002 Free Software Foundation, Inc. +# +# Yuusuke Tahara <tahara@gehenna.u-aizu.ac.jp>, 1999 +# Takuo KITAME <kitame@debian.org>, 2000 +# Yukihiro Nakai <nakai@gnome.gr.jp>, 2002 +# Tadashi Jokagi <elf2000@users.sourceforge.net>, 2005-2006. +# +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.6.3\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2006-08-07 19:04+0900\n" +"Last-Translator: Tadashi Jokagi <elf2000@users.sourceforge.net>\n" +"Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "~/.xchat2 を作成できません。" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "多忙" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "さようなら" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* IRC を root 権限で立ち上げるなんて愚かにも程があります!\n" +" きちんとユーザーアカウント作成してから そのユーザーで\n" +" ログインしなおしてください。\n" +"\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "待機中" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "アクティブ" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "失敗" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "終了" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "接続" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "中断" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "%s へアクセスできません。\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "エラー" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s が「%s」を提案しています。受け付けますか?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "アクティブな DCC はありません\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "はい " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "いいえ " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "%s から大量の CTCP が来ました。%s を無視します。\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "" +"%s から大量の MSG が来ました。設定 gui_auto_open_dialog をオフにします。\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s オンライン\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s オフライン\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "" +"チャンネルに参加していません。「/join #<チャンネル>」を実行してください。\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "" +"サーバーと接続していません。「/server <ホスト> [<ポート>]」を実行してくださ" +"い。\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "実行には /bin/sh が必要です!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "以下のコマンドが利用できます:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "ユーザー定義コマンド:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "プラグイン定義コマンド:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "詳細は「/HELP <コマンド>」もしくは「/HELP -l」と入力してください。" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "不明な引数 '%s' を無視します。" + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "そのようなプラグインはありません。\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "そのプラグインの読み込み解除を拒絶しています。\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <名前> <動作>, ユーザーリストの下にボタンを加える" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <コマンド>, 参加している全チャンネルへコマンドを送信する" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHANL <コマンド>, 参加している全チャンネルへコマンドを送信する" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <コマンド>, 入っている全サーバーにコマンドを送信する" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<理由>], 離席状態にする" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <マスク> [<禁止タイプ>], 現在のチャンネルから, マスクに一致するニックをバ" +"ンする. 既にチャンネルに参加しているニックに関しては効果がない (なるとが必要)" + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "SET [-quiet] <変数> [<値>]" + +#: src/common/outbound.c:3508 +#, fuzzy +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "CLEAR, 現在のテキストウィンドウの内容を消去する" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, 現在のウィンドウ/タブを閉じる" + +#: src/common/outbound.c:3512 +#, fuzzy +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY <コード>, 国コードを検出, 例: au = オーストラリア" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <ニック> <メッセージ>, CTCP メッセージを指定のニックへ送信する。メッセー" +"ジは普通, VERSION や USERINFO を使う" + +#: src/common/outbound.c:3516 +#, fuzzy +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "CYCLE, 現在のチャンネルを離れ, 直後に再参加する" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <ニック> - 差し出されたファイルを受け取る\n" +"DCC SEND [-maxcps=#] <ニック> <ファイル> - ファイルを送信する\n" +"DCC PSEND [-maxcps=#] <nick> [file] - パッシブモードでファイルを送信す" +"る\n" +"DCC LIST - DCC 一覧を表示する\n" +"DCC CHAT <ニック> - DCC CHAT を申し込む\n" +"DCC PCHAT <ニック> - パッシブモードで DCC CHAT を申し込" +"む\n" +"DCC CLOSE <種類> <ニック> <ファイル> 例:\n" +" /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <ニック>, 現在のチャンネルの指定ニックからハーフなるとを剥奪する (なる" +"とが必要)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <ボタン名>, ユーザーリストの下のボタンを削除する" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <ニック>, 現在のチャンネルの指定ニックからなるとを剥奪する (なるとが必" +"要)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <ニック>, 現在のチャンネルの指定ニックから, 発言権を削除する (なると" +"が必要)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, サーバーからの接続を切断する" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <ニック名|ホスト|IP>, ユーザーの IP アドレスを検索する" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO テキスト, テキストをローカル上に表示する" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <コマンド>, コマンドを実行する. -o フラグを利用すると出力は現在の" +"チャンネルへ送信する。それ以外は現在のテキスト・ボックスに表示する" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, プロセスに対して SIGCONT を発行する" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], 現在のプロセスに対してシグナルを発行する。-9 を指定した場合、" +"プロセスは SIGKILL される" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, プロセスに対して SIGSTOP を発行する" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, プロセスの標準入力へデータを送信する" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, 現在サーバーの送信キューをフラッシュする" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <ホスト> [<ポート>], 指定ホストを通したプロキシ。標準ポートは 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <nick> <password>, ゴーストになってしまったニック名を削除する" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <ニック>, 指定のニックにハーフなるとを与える (なるとが必要)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <パスワード>, nickserv に自分を確認します" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"/IGNORE <マスク> <種類...> <オプション...>\n" +" マスク - 無視するホスト名のマスク, 例: *!*@*.ne.jp\n" +" 種類 - 無視するデータの種類, 以下の一つもしくは全部:\n" +" PRIV, CHAN, NOTI, CTCP, INVI, ALL\n" +" オプション - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <ニック> [<チャンネル>], 指定のチャンネルへ招待する。標準では現在の" +"チャンネル名 (なるとが必要)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <チャンネル>, チャンネルに参加する" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <ニック>, 現在のチャンネルから指定のニックをキックする (なるとが必要)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <ニック>, 現在のチャンネルから指定のニックをキックし、さらにバンする " +"(なるとが必要)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, 新規ラグチェックを強制する" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <文字列>, バッファ中から文字列を検索する" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <ファイル>, スクリプトかプラグインを読み込む" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, 現在のチャンネルの全員のハーフなるとを剥奪する (なるとが必要)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, 現在のチャンネルの全員のなるとを剥奪する (なるとが必要)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <行動>, 現在のチャンネルに対して, 指定の ACTION を送信する (行動は 『/me " +"jumps』のように第3者側で書かれる)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, 現在のチャンネルの自分以外の全員をキックする (なるとが必要)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, 現在のチャンネルの全員のなるとを剥奪する (なるとが必要)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <ニック> <メッセージ>, プリブを送信する" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, 現在のチャンネルのニックリストを表示する" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <ニック> <メッセージ>, CTCP NOTICE を送信する" + +#: src/common/outbound.c:3608 +#, fuzzy +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER <ホスト名> [<ポート>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <ニック>, 自分のニックを設定する" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <ニック/チャンネル> <メッセージ>, NOTICE を送信する。NOTICE は自動的に" +"応答されるメッセージである" + +#: src/common/outbound.c:3614 +#, fuzzy +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [<ニック>], 自分の通知リストを表示する、または誰かをそれに追加する" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <ニック>, 指定のニックになるとを与える (なるとが必要)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" +"PART [<チャンネル>] [<理由>], チャンネルを去る。デフォルトでは現在のチャンネ" +"ル" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <ニック | チャンネル>, ニックかチャンネルへ CTCP PING をかける" + +#: src/common/outbound.c:3622 +#, fuzzy +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "QUERY <ニック>, 指定ニックとの新規ぷりぶウィンドウを開く" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<理由>], 現在のサーバーから接続を切断する" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <テキスト>, サーバーへ生形式のテキストを送信する" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<ホスト>] [<ポート>] [<パスワード>], /RECONNECTだけで現在の" +"サーバーに接続しなおすこともできるし、/RECONNECT ALLで開いているサーバーすべ" +"てに接続しなおすこともできる" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<ホスト>] [<ポート>] [<パスワード>], /RECONNECTだけで現在のサー" +"バーに接続しなおすこともできるし、/RECONNECT ALLで開いているサーバーすべてに" +"接続しなおすこともできる" + +#: src/common/outbound.c:3634 +#, fuzzy +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "/QUOTE <テキスト>, サーバーへ生形式のテキストを送信する\n" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <テキスト>, カレントウィンドウのオブジェクトへテキストを送信する" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <ニック> [<ファイル>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <ホスト> <ポート> <チャンネル>, 接続およびチャンネルへ参加す" +"る" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN <ホスト> <ポート> <チャンネル>, 接続およびチャンネルへ参加する" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <ホスト> [<ポート>] [<パスワード>], サーバーへ接続する。通常の" +"接続では標準ポート番号は6667、ssl接続では994" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <ホスト> [<ポート>] [<パスワード>], サーバーへ接続する。標準ポート番号" +"は6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-quiet] <変数> [<値>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<位置>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<トピック>], トピックを設定する。引数がなければ現在のトピックを表示す" +"る" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <マスク> [<マスク>...], 指定したマスクのBanを解除する" + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <マスク> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <名前> プラグインかスクリプトの読み込みをやめる" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, ブラウザーで URL を開く" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <ニック1> <ニック2> など、チャンネルのユーザー一覧のニック" +"をハイライトにします" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <ニック>, 発言権を指定のニックへ与える (なるとが必要)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <メッセージ>, 全チャンネルへメッセージを送信する" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <メッセージ>, 現在のチャンネルのなると保持者全員へメッセージを送信す" +"る" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "使い方: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"このコマンドのヘルプは利用できません.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "そのようなコマンドはありません.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "ユーザーコマンドに対して不正な引数を与えています.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "ユーザーコマンドの再帰が多すぎます。アボートします。" + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "不明なコマンドです. 『/help』を実行してください。\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "" +"シンボル「xchat_plugin_init」がありません。これは本当に xchat のプラグインで" +"すか?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"ホスト名「%s」を解決できません。\n" +"IP 設定を確認してください!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 を通知リストへ追加しました。" + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 バン一覧:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +#, fuzzy +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "-%C10-%C11-%O$t Ban されているため %C11%B$1%O 参加できません。" + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 は $2 にニックを変更しました。" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 は $2 をバンしました。" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "-%C10-%C11-%O$t$2 にチャンネル $1 が作成されました。" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O は %C26$2 からハーフなるとを剥奪しました。" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O は $2 からなるとを剥奪しました。" + +#: src/common/textevents.h:39 +#, fuzzy +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "-%C10-%C11-%O$t$1 は $2 から発言権を剥奪しました。" + +#: src/common/textevents.h:42 +#, fuzzy +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "-%C10-%C11-%O$t$1 はチャンネル $2 への免除設定しました。" + +#: src/common/textevents.h:45 +#, fuzzy +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "-%C10-%C11-%O$t$1 は $2 にハーフなるとを与えました。" + +#: src/common/textevents.h:48 +#, fuzzy +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "-%C10-%C11-%O$t$1 は INVITE マスクを設定しました.: $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%Uチャンネル ユーザー トピック" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "-%C10-%C11-%O$t$1 はモードを $2$3 $4 に設定しました。" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22$t チャンネル $1 モード: $2" + +#: src/common/textevents.h:69 +#, fuzzy +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "-%C10-%C11-%O$t$1 は $2 になるとを与えました。" + +#: src/common/textevents.h:72 +#, fuzzy +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "-%C10-%C11-%O$t$1 は $2 への免除を削除しました。" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 は INVITE マスクを削除しました: $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 はチャンネルキーワードを削除しました。" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 はユーザー数制限を削除しました。" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 はチャンネルにキーワード $2 を設定しました。" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 はチャンネルを $2 に制限しました。" + +#: src/common/textevents.h:90 +#, fuzzy +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "-%C10-%C11-%O$t$1 は $2 に対するバンを取り外しました。" + +#: src/common/textevents.h:93 +#, fuzzy +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "-%C10-%C11-%O$t$1 は $2 に発言権を与えました。" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22接続しました。直ちにログインします..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22サーバー $1($2) の、ポート$3 へ接続中%O..." + +#: src/common/textevents.h:102 +#, fuzzy +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "-%C10-%C11-%O$t 接続に失敗しました. エラー: $1" + +#: src/common/textevents.h:105 +#, fuzzy +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "-%C10-%C11-%O$tCTCP 一般 $1 を $2 から受け取りました。" + +#: src/common/textevents.h:108 +#, fuzzy +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "-%C10-%C11-%O$t$2 から($3へ), CTCP $1 を受け取りました。" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tCTCP サウンド $1 を $2 から受け取りました。" + +#: src/common/textevents.h:117 +#, fuzzy +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "-%C10-%C11-%O$t$2 から($3へ), CTCP $1 を受け取りました。" + +#: src/common/textevents.h:120 +#, fuzzy +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "-%C10-%C11-%O$tDCC $1 %C11$2 %Cto %C11$3 %C は中断しました。" + +#: src/common/textevents.h:123 +#, fuzzy +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "" +"-%C10-%C11-%O$tDCC $1 の $4 %C11$2 %C14[%O$3%C14]%O への接続を確立しました。" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$t %C26$1%O との DCC CHAT を失いました ($4)" + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$t$1 から DCC チャット提案を受け取りました。" + +#: src/common/textevents.h:132 +#, fuzzy +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "-%C10-%C11-%O$t$1 への DCC チャットを提案しています。" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$t既に $1 へのチャットは提案しています。" + +#: src/common/textevents.h:138 +#, fuzzy +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "-%C10-%C11-%O$t%C11$2%O への DCC $1 の接続に失敗しました (エラー=$3)。" + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$t$2 から 「$1%O」を受け取りました。" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 種類 To/From 状態 容量 Pos ファイル " + +#: src/common/textevents.h:147 +#, fuzzy +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O." +"%010%C22*%O$tContents of packet: $2" +msgstr "-%C10-%C11-%O$t%C11$1%O から異常な DCC チャット要求を受け取りました。" + +#: src/common/textevents.h:150 +#, fuzzy +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "-%C10-%C11-%O$t%C11$1 %C を %C11$2%Oへ提案しています...%O" + +#: src/common/textevents.h:153 +#, fuzzy +msgid "%C22*%O$tNo such DCC offer." +msgstr "-%C10-%C11-%O$t そのような DCC 提案はありません。" + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "" + +#: src/common/textevents.h:159 +#, fuzzy +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"-%C10-%C11-%O$t%C11$1%Oの %C11$2%O への DCC 送信は %C14[%C11$3%O cps%C14]%O " +"を完了。" + +#: src/common/textevents.h:162 +#, fuzzy +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "" +"-%C10-%C11-%O$tDCC $1 の $4 %C11$2 %C14[%O$3%C14]%O への接続を確立しました。" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "" + +#: src/common/textevents.h:168 +#, fuzzy +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "-%C10-%C11-%O$tDCC RECV: 出力ファイル $1 を開けません - 中断します。" + +#: src/common/textevents.h:171 +#, fuzzy +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "" +"-%C10-%C11-%O$t ファイル %C11$1%C は既に存在します. かわりに, このファイルを " +"%C11$2%O へ保存します。" + +#: src/common/textevents.h:174 +#, fuzzy +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "" +"-%C10-%C11-%O$t%C11$1 %C は %C11$3%C から %C11$2 %C の再開を要求しました。" + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$t $2%O から $1%O への DCC を中断しました。" + +#: src/common/textevents.h:180 +#, fuzzy +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"-%C10-%C11-%O$t%C11$1%O の %C11$2%O への DCC送信は %C14[%C11$3%O cps%C14]%O " +"を完了。" + +#: src/common/textevents.h:183 +#, fuzzy +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "" +"-%C10-%C11-%O$tDCC $1 の $4 %C11$2 %C14[%O$3%C14]%O への接続を確立しました。" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND%C26 $1%O から %C26 $2%O への送信に失敗しました。 $3" + +#: src/common/textevents.h:189 +#, fuzzy +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "-%C10-%C11-%O$t%C11$1 %C は %C11$2 %C(%C11$3 %Cバイト)を提案しました。" + +#: src/common/textevents.h:192 +#, fuzzy +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "" +"-%C10-%C11-%O$t%C11$3%C への %C11$2%C のDCC $1 は停滞しています - 中断しま" +"す。" + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %O から %C26 $3 %Oタイムアウト - 中断します。" + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 通知一覧から削除しました。" + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$t 接続を切断しました ($1)。" + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$t 自分のIPを見付けました: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O 無視リストへ追加しました。" + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "%C26$1%O の無視設定を変更しました。" + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 ホストマスク PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O 無視リストから削除しました。" + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " 無視リストの内容が空です。" + +#: src/common/textevents.h:228 +#, fuzzy +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "" +"-%C10-%C11-%O$t%C11%B$1 %O は招待のみのチャンネルなため参加できません。" + +#: src/common/textevents.h:231 +#, fuzzy +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "" +"-%C10-%C11-%O$t %C11$2%C から チャンネル %C11$1%C へ招待されました.(%C11$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) は $2 へ参加しました。" + +#: src/common/textevents.h:237 +#, fuzzy +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "-%C10-%C11-%O$t%C11%B$1%O へ参加できません(キーワードが必要です)。" + +#: src/common/textevents.h:240 +#, fuzzy +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "<%C10-%C11-%O$t$1 は $3 から $2 をキックしました. ($4%O)" + +#: src/common/textevents.h:243 +#, fuzzy +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "-%C10-%C11-%O$t $1 によって殺されました. ($2%O)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22 MOTD を飛ばしました。" + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 は既に使用されています。$2 で再試行します..." + +#: src/common/textevents.h:258 +#, fuzzy +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$tニックはすでに使用されています。他を「/NICK」で指定してください。" + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$t そのような DCC はありません。" + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$t現在は実行プロセスがありません。" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$t通知リストの内容が空です。" + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B 通知一覧 " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 ユーザーが通知リストにいます。" + +#: src/common/textevents.h:282 +#, fuzzy +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$t 通知: $1 はオフラインです ($2)" + +#: src/common/textevents.h:285 +#, fuzzy +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "C22*%O$t通知: $1 はオンラインです ($2)。" + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) は $3 から離れました。" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "" +"%C23*%O$t%C23$1 (%O%C23$2) はチャンネル $3 から離れました(%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$t$1 からの Ping 応答 : $2 秒" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tPing 応答が $1 秒間ありません, 切断。" + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tプロセスは既に実行しています。" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 は IRC から離れました (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 はモードを %B %C30[%O$2%B%C30] へ設定しました" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +#, fuzzy +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "-%C10-%C11-%O$t%C11$1%O のIPアドレスを探しています.." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22接続しました。" + +#: src/common/textevents.h:336 +#, fuzzy +msgid "%C22*%O$t%C22Looking up $1" +msgstr "-%C10-%C11-%O$t%C11$1%C を探しています.." + +#: src/common/textevents.h:348 +#, fuzzy +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "-%C10-%C11-%O$t 以前の接続試行が中止されました. (PID=$1)" + +#: src/common/textevents.h:351 +#, fuzzy +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "-%C10-%C11-%O$t %C11$1%C のトピックは %C11$2%O です。" + +#: src/common/textevents.h:354 +#, fuzzy +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "-%C10-%C11-%O$t$1はトピックを変更しました: $2%O" + +#: src/common/textevents.h:357 +#, fuzzy +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "" +"-%C10-%C11-%O$t%C11$3%O に, %C11$1%C のトピックが %C11$2%C によって設定されま" +"した。" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$t不明なホストです。スペルミスしていませんか?" + +#: src/common/textevents.h:363 +#, fuzzy +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "" +"-%C10-%C11-%O$t%C11%B$1%O へ参加できません(ユーザー数が上限を越えました)。" + +#: src/common/textevents.h:366 +#, fuzzy +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "-%C10-%C11-%O$t%C11$1 のユーザー:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %C は離席中です %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %O以上が WhoIs 情報です。" + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O アイドル%C26 $2" + +#: src/common/textevents.h:387 +#, fuzzy +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "-%C10-%C11-%O$t%C12[%O$1%C12] %C アイドル %C11$2%C, signon: %C11$3%O" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19今 $2 で会話中です。" + +#: src/common/textevents.h:405 +#, fuzzy +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "-%C10-%C11-%O$t $3 により チャンネル $2 からキックされました ($4%O)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$t チャンネル $3 から離れました。" + +#: src/common/textevents.h:411 +#, fuzzy +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "" +"-%C10-%C11-%O$t あなたはチャンネル $3 %C14(%O$4%C14)%O から離れました。" + +#: src/common/textevents.h:417 +#, fuzzy +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "-%C10-%C11-%O$t%C11$2%C に %C11$1%C を招待しています (%C11$3%C)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$t あなたは $2 にニックを変更しました。" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** %s でログ記録終了\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** %s からログ記録開始\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* ログファイルを書き込み用に開けません。 \n" +"%s/xchatlogs のパーミッションを確認してください。" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "左メッセージ" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "右メッセージ" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "参加したニック" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "参加したチャンネル" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "ニックのホスト" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "ニックネーム" + +#: src/common/text.c:973 +msgid "The action" +msgstr "アクション" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "モード文字" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "識別テキスト" + +#: src/common/text.c:980 +msgid "The text" +msgstr "テキスト" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "メッセージ" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "旧ニックネーム" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "新ニックネーム" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "トピックを変更したニック" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "トピック" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "チャンネル" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "キックしたニック" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "キックされたニック" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "チャンネル" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "理由" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "離脱したニック" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "時間" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "作成者" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "ニック" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "理由" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "ホスト" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "誰から" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "x.x 形式による時刻 (下参照)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "発行されたチャンネル" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "サウンド" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "ニック" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "CTCP イベント" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "キーワードを設定したニック" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "キーワード" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "制限を設定したニック" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "制限" + +#: src/common/text.c:1100 +#, fuzzy +msgid "The nick of the person who did the op'ing" +msgstr "なるとをくれたニック" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "なるとをもらったニック" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "ハーフなるとをもらったニック" + +#: src/common/text.c:1106 +#, fuzzy +msgid "The nick of the person who did the halfop'ing" +msgstr "ハーフなるとをくれたニック" + +#: src/common/text.c:1110 +#, fuzzy +msgid "The nick of the person who did the voice'ing" +msgstr "発言権をくれたニック" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "発言権をもらったニック" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "バンされたニック" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "バンマスク" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "キーワードを削除したニック" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "制限を削除したニック" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "なるとを取り上げたニック" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "なるとを取られたニック" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "ハーフなるとを取り上げたニック" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "ハーフなるとを取られたニック" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "発言権を取り上げたニック" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "発言権を取り上げられたニック" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "バンを解除したニック" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "免除を行ったニック" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "免除マスク" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "免除を削除したニック" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "招待したニック" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "招待マスク" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "招待マスクを削除したニック" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "モードを設定したニック" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "モードの符号 (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "モード文字" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "チャンネルのモードは" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "ユーザー名" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "フルネーム" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "チャンネル メンバシップ /\"はIRC 管理者\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "サーバー情報" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "アイドル時間" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Signon 時間" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "離席理由" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "メッセージ" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "アカウント" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "リアル user@host" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "リアル IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "チャンネル名" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "テキスト" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "サーバー名" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "自分を招待したニック" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "ユーザー" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "使用するニック" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "次に試行するニック" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IPアドレス" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "ポート" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "ネットワーク" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "モード文字列" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "IP アドレス" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "DCC タイプ" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "ファイル名" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "目的先ファイル名" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "パス名" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "場所" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "サイズ" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "DCC 文字列" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "通知アイテム数" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "旧ファイル名" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "新ファイル名" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "受取人" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "ホストマスク" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "ホスト名" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "パケット" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "秒" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "自分を招待したニック" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "バンマスク" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "バンを設定した人" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "バン時間" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"イベント %s の解析エラーです。\n" +"デフォルトを読み込み中です。" + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"サウンドファイルの読み込みができません:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "リモートホストがソケットを閉じました。" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "接続が拒否されました。" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "ホストへの経路がありません。" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "接続時間アウト" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "そのアドレスは予約できません。" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "peerによって接続がリセットされました。" + +#: src/common/util.c:848 +#, fuzzy +msgid "Ascension Island" +msgstr "ココス諸島" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "アンドラ" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "アラブ首長国連邦" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "アフガニスタン" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "アンティグアバーブーダ" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "アンギラ" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "アルバニア" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "アルメニア" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "蘭領アンティル諸島" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "アンゴラ" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "南極大陸" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "アルゼンチン" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "逆引きDNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "米領サモア" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "オーストリア" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "NATO領地" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "オーストラリア" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "アルーバ" + +#: src/common/util.c:866 +#, fuzzy +msgid "Aland Islands" +msgstr "フォークランド諸島" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "アゼルバイジャン" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "ボスニア・ヘルツェゴビナ" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "バルバドス" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "バングラディシュ" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "ベルギー" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "ブルキナファソ" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "ブルガリア" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "バーレーン" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "ブルンジ" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "ビジネス" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "ベニン" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "バミューダ" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "ブルネイ・ダルサラーム国" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "ボリビア" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "ブラジル" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "バハマ" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "ブータン" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "ブーベ島" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "ボツワナ" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "ベラルーシ" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "ベリーズ" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "カナダ" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "ココス諸島" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "コンゴの民主主義共和国" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "中央アフリカ共和国" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "コンゴ" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "スイス" + +#: src/common/util.c:894 +#, fuzzy +msgid "Cote d'Ivoire" +msgstr "コートジボアール" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "クック諸島" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "チリ" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "カメルーン" + +#: src/common/util.c:898 +msgid "China" +msgstr "中国" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "コロンビア" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "企業" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "コスタリカ" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "セルビアとモンテネグロ" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "キューバ" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "ケープベルデ" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "クリスマス諸島" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "キプロス" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "チェコ共和国" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "ドイツ" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "ジブチ" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "デンマーク" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "ドミニカ" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "ドミニカ共和国" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "アルジェリア" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "エクアドル" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "学術機関" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "ストニア" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "エジプト" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "西サハラ" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "エリトリア" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "スペイン" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "エチオピア" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "欧州連合" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "フィンランド" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "フィジー" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "フォークランド諸島" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "ミクロネシア" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "フェロー諸島" + +#: src/common/util.c:928 +msgid "France" +msgstr "フランス" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "ガボン" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "イギリス" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "グレナダ" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "ジョージア" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "仏領ギアナ" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "英領チャネル諸島" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "ガーナ" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "ジブラルタル" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "グリーンランド" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "ガンビア" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "ギニア" + +#: src/common/util.c:940 +msgid "Government" +msgstr "政治" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "グアドループ" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "赤道ギニア" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "ギリシャ" + +#: src/common/util.c:944 +#, fuzzy +msgid "S. Georgia and S. Sandwich Isles" +msgstr "南ジョージア・南サンドイッチ諸島" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "グァテマラ" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "グアム" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "ギニアビサウ" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "ギアナ" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "香港" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "ハードマクドナルド諸島" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "ホンジュラス" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "クロアチア" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "ハイチ" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "ハンガリー" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "インドネシア" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "アイルランド" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "イスラエル" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "マン島" + +#: src/common/util.c:959 +msgid "India" +msgstr "インド" + +#: src/common/util.c:960 +#, fuzzy +msgid "Informational" +msgstr "国際" + +#: src/common/util.c:961 +msgid "International" +msgstr "国際" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "英領インド洋領域" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "イラク" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "イラン" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "アイスランド" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "イタリア" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "ジャージー" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "ジャマイカ" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "ヨルダン" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "日本" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "ケニア" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "キルギスタン" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "カンボジア" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "キリバス" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "コモロ" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "セントキッツネビス" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "北朝鮮" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "韓国" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "クエート" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "ケイマン諸島" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "カザフスタン" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "ラオス" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "レバノン" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "セントルシア" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "リヒテンシュタイン" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "スリランカ" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "リベリア" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "レソト" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "リトアニア" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "ルクセンブルク" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "ラトビア" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "リビア" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "モロッコ" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "モナコ" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "モルドバ" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "合衆国医療機関" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "マダガスカル" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "マーシャル諸島" + +#: src/common/util.c:999 +msgid "Military" +msgstr "軍事" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "マケドニア" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "マリ" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "ミャンマー" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "モンゴル" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "マカオ" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "北マリアナ諸島" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "マルティニク" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "モーリタニア" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "モントセラト" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "マルタ" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "モーリシャス" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "モルジブ" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "マラウィ" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "メキシコ" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "マレーシア" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "モザンビーク" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "ナミビア" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "ニューカレドニア" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "ニジェール" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "ネットワーク" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "ノーフォーク諸島" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "ナイジェリア" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "ニカラグア" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "オランダ" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "ノルウェー" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "ネパール" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "ナウル" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "ニウエ" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "ニュージーランド" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "オマーン" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "非営利組織" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "パナマ" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "ペルー" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "ポリネシア フランス領" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "パプアニューギニア" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "フィリピン" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "パキスタン" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "ポーランド" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "セントピエールおよびミクロン" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "ピトケイン" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "プエルトリコ" + +#: src/common/util.c:1041 +#, fuzzy +msgid "Palestinian Territory" +msgstr "英領インド洋領域" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "ポルトガル" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "パラオ" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "パラグアイ" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "カタール" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "レユニオン" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "ルーマニア" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "昔ながらの ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "ロシア連邦" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "ルワンダ" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "サウジアラビア" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "ソロモン諸島" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "セーシェル" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "スーダン" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "スウェーデン" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "シンガポール" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "セントヘレナ" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "スロベニア" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "スヴァールバルヤンマイエン諸島" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "スロバキア共和国" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "シェラレオネ" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "サンマリノ" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "セネガル" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "ソマリア" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "スリナム" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "サオトーメプリンシペ" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "旧ソビエト連邦" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "エルサルバドル" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "シリア" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "スワジランド" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "タークスカイコス諸島" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "チャド" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "仏領サザンテリトリー" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "トーゴ" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "タイ" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "タジキスタン" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "トケラウ" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "東チモール" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "トルクメニスタン" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "チュニジア" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "トンガ" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "トルコ" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "トリニダードトバゴ" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "ツバル" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "台湾" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "タンザニア" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "ウクライナ" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "ウガンダ" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "イギリス" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "アメリカ合衆国" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "ウルグアイ" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "ウズベキスタン" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "バチカン市国" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "セントビンセントおよびグレナディーン諸島" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "ベネズエラ" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "英領バージン諸島" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "米バージン諸島" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "ベトナム" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "ヴァヌアトゥ" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "ヴァリスフトゥーナ諸島" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "サモア" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "イエメン" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "マヨット" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "旧ユーゴスラビア" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "南アフリカ" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "ザンビア" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "ジンバブエ" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "不明" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "ダイアログウィンドウを開く" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "ファイル送信" + +#: src/common/xchat.c:728 +#, fuzzy +msgid "_User Info (WhoIs)" +msgstr "ユーザー情報 (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +#, fuzzy +msgid "O_perator Actions" +msgstr "オペレーター操作" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "なるとを与える" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "なるとを奪う" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Voice を与える" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Voice を奪う" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "キック/バン" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "キック" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "バン" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "キックバン" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "チャンネルを離れる" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "チャンネルへ参加..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "参加するチャンネルを入力:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "サーバーリンク" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "ピングサーバー" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "バージョンを隠す" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "なると" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "なると奪略" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "さようなら" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "%s をキックする理由を入力:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "ファイル送信" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "ダイアログ" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "送信" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Chat" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "消去" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "セッションバスに接続できません" + +#: src/common/dbus/dbus-client.c:86 +#, fuzzy +msgid "Failed to complete NameHasOwner" +msgstr "コマンドを完了していません" + +#: src/common/dbus/dbus-client.c:112 +#, fuzzy +msgid "Failed to complete Command" +msgstr "コマンドを完了していません" + +#: src/common/dbus/dbus-plugin.c:30 +#, fuzzy +msgid "remote access" +msgstr "xchat リモートアクセス" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "DBUS を用いてリモートアクセスのプラグイン" + +#: src/common/dbus/dbus-plugin.c:897 +#, fuzzy, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "セッションバスに接続できません : %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "%s の取得に失敗しました: %s\n" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "XChat について(_A)" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "マルチプラットフォーム IRC クライアント" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "文字集合" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "接続していません。" + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "いくつかのバンを選ばなければなりません。" + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "マスク" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "送り元" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "日付" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "チャンネルタブの間だけバン一覧ウィンドウを開くことができます。" + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: バン一覧 (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "削除" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "再描画" + +#: src/fe-gtk/chanlist.c:111 +#, fuzzy, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "" +"ユーザーとチャンネルの統計: %d/%d ユーザーが %d/%d チャンネルにいます。" + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "出力ファイル名の選択" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +#, fuzzy +msgid "_Join Channel" +msgstr "チャンネルへ参加" + +#: src/fe-gtk/chanlist.c:633 +#, fuzzy +msgid "_Copy Channel Name" +msgstr "チャンネル名" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: チャンネル一覧 (%s)" + +#: src/fe-gtk/chanlist.c:781 +#, fuzzy +msgid "_Search" +msgstr "XChat: 検索" + +#: src/fe-gtk/chanlist.c:787 +#, fuzzy +msgid "_Download List" +msgstr "ダウンロード" + +#: src/fe-gtk/chanlist.c:793 +#, fuzzy +msgid "Save _List..." +msgstr "サーバー一覧(_S)..." + +#: src/fe-gtk/chanlist.c:806 +#, fuzzy +msgid "Show only:" +msgstr "チャンネルを表示" + +#: src/fe-gtk/chanlist.c:818 +#, fuzzy +msgid "channels with" +msgstr "チャンネル" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:843 +#, fuzzy +msgid "users." +msgstr "ユーザー" + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "チャンネル名" + +#: src/fe-gtk/chanlist.c:882 +#, fuzzy +msgid "Search type:" +msgstr "テキスト検索..." + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:890 +#, fuzzy +msgid "Pattern Match (Wildcards)" +msgstr "パターンマッチ:" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "検索語:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "%s へ送信するファイル名の選択" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "ファイルはリジュームできません。" + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"ファイルにアクセスできません: %s\n" +"%s.\n" +"おそらく継続できません。" + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "2 人から同じファイルを再開できません。" + +#: src/fe-gtk/dccgui.c:745 +#, fuzzy +msgid "XChat: Uploads and Downloads" +msgstr "XChat: アップロードとダウンロード" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "状態" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "ファイル" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "残り" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "両方" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "アップロード" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "ダウンロード" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "詳細" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "ファイル:" + +#: src/fe-gtk/dccgui.c:821 +#, fuzzy +msgid "Address:" +msgstr "アドレス" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "中断" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "許可" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "再開" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "フォルダーを開く..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: DCC チャット一覧" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "受取" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "送信" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "開始時間" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*新規*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "*データ*" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "名前" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "コマンド" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "上へ移動" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "下へ移動" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "キャンセル" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "保存" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "新規追加" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "削除" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "ソート" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "ヘルプ" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "自動的にサーバーに再接続しない" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "異なる設定ディレクトリを使う" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "いくつかのプラグインは自動読み込まないa" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "プラグイン自動読み込みディレクトリを表示する" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "ユーザー設定ディレクトリを表示する" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "URL irc://server:port/channel を開く" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "コマンド実行:" + +#: src/fe-gtk/fe-gtk.c:132 +msgid "Open URL or execute command in an existing XChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +#, fuzzy +msgid "level" +msgstr "一度もなし" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "バージョン情報を表示する" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"フォントを開けません:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "検索バッファが空です。\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d バイト" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "ネットワーク送信キュー: %d バイト" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"コマンド実行 は, データ1の内容を入力行へ, キーを入力したエントリボックスに実" +"際にタイプしたように 処理を実行します。(チャンネル/ニックへ送信する)コマン" +"ド, もしくはユーザーコマンドを, この中に含めることも可能です。データ1中に, " +"『\\n』文字が使われた場合, この文字は, コマンドの区切りとして解釈されるので, " +"複数のコマンドを実行することも可能です。 実際に『\\』を打たせたいときは, 『\\" +"\\』と入力して下さい" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"ページ変更コマンドは, ノートブックのページ間を切り替えます。切り替えたいペー" +"ジ先を, データ1にセットします。また, データ2に 何かセットされていると, 切り替" +"えが現在位置からの相対位置になります" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"バッファへ挿入 コマンドはデータ1の内容を, 入力行中のカーソルの場所へ挿入しま" +"す。" + +#: src/fe-gtk/fkeys.c:165 +#, fuzzy +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"ページ・スクロール コマンドは, テキスト・モニタ画面を一ページ分, 上下へスク" +"ロールさせます. データ1に何か設定されていれば上へスクロールし, そうでなければ" +"下へスクロールします。" + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"バッファ設定コマンドは, テキスト入力行の内容を, データ1の内容として置き換えま" +"す。" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"最後のコマンドはテキスト入力行に, 最後に入力されたコマンド内容を含ませます. " +"シェル上で, コマンドを直接実行するのと同じです。" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"次のコマンドはテキスト入力行に, 次に入力されたコマンド内容を含ませます. シェ" +"ル上で, コマンドを直接実行するのと同じです。" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"このコマンドは, 入力行中の不完全なニックやコマンドを補完します. データ1が設定" +"されていると, タブキーを2回押した場合に, 次の補完候補でなく, 最後に入力された" +"ニックが補完されます。" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"このコマンドは, ニックリストを上下へスクロールさせます. データ1に何か設定され" +"ていれば上へスクロールし, そうでなければ下へスクロールします。" + +#: src/fe-gtk/fkeys.c:177 +#, fuzzy +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"このコマンドは, 最後に入力された動作内容を置換リストの内容と照らし合わせ, 一" +"致した場合, それを置換します" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "このコマンドはフロントタブを一つずつ左に移動します" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "このコマンドはフロントタブを一つずつ右に移動します" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "このコマンドは現在のタブファミリーを左に移動します" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "このコマンドは現在のタブファミリーを右に移動します" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "入力ラインを履歴に記録するが、サーバーには送信しません" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "キーバインド設定にエラーがあります" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<なし>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "モード" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "キー" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "アクション" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: キーボードショートカット" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "データ1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "データ2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "キー設定ファイルのオープンにエラーが発生しました.\n" + +#: src/fe-gtk/fkeys.c:1019 +#, fuzzy, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"キーバインド設定ファイルに不明なキー名 %s があります。\n" +"読み込みを中断します, ~/.xchat/keybindings.conf を直してください。\n" + +#: src/fe-gtk/fkeys.c:1057 +#, fuzzy, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"キーバインド設定ファイルに不明なアクション %s があります。\n" +"読み込みを中断します, ~/.xchat/keybindings.conf を直してください。\n" + +#: src/fe-gtk/fkeys.c:1078 +#, fuzzy, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"期待すべきデータ行 (Dx{:|!} で開始) しかし読み込み行:\n" +"%s\n" +"\n" +"\n" +"読み込みを中断します, ~/.xchat/keybindings を直してください。\n" + +#: src/fe-gtk/fkeys.c:1147 +#, fuzzy, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"キーバインド設定ファイルに不明なキー名 %s があります。\n" +"読み込みを中断します, ~/.xchat/keybindings.conf を直してください。\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "そのファイルには書き込めません。" + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "そのファイルには読み込めません。" + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "そのマスクは既に存在します。" + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "プライベート" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "通知" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "招待" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "無視解除" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "無視するマスクを入力:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: 無視一覧" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "無視状態:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "チャンネル:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "プライベート:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "通知:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "招待:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "追加..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "チャンネル名が短すぎます。もう一度試してください。" + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: 接続完了" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "%s へ接続完了です。" + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "あなたは何を次に行いたいですか?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "何もしません。後でチャンネルに参加します。(_N)" + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "チャンネルへ参加:" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" +"参加したいチャンネルの名前を分かっている場合は、ここで入力してください。" + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "チャンネル一覧ウィンドウを開きます。(_P)" + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "常にこのダイアログを接続後に表示します。(_A)" + +#: src/fe-gtk/maingui.c:504 +#, fuzzy +msgid "Dialog with" +msgstr "ダイアログ・ウィンドウ" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "%s のトピックは: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "トピックを設定していません" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" + +#: src/fe-gtk/maingui.c:1283 +#, fuzzy +msgid "Quit XChat?" +msgstr "XChat について" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1310 +#, fuzzy, c-format +msgid "You are connected to %i IRC networks." +msgstr "起動したらこのネットワークに自動接続" + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "" + +#: src/fe-gtk/maingui.c:1314 +#, fuzzy +msgid "Some file transfers are still active." +msgstr "いくつかのファイル転送はまだ活動中です。xchat を終了しますか?" + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "色コードか属性を挿入する" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>強調</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>下線</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "通常" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "色 0 から 7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "色 8 から 15" + +#: src/fe-gtk/maingui.c:1612 +msgid "_Settings" +msgstr "設定(_S)" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "参加と退出メッセージを隠す" + +#: src/fe-gtk/maingui.c:1625 +#, fuzzy +msgid "_Extra Alerts" +msgstr "警告" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "メッセージでビープ音を鳴らす" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +#, fuzzy +msgid "_Detach" +msgstr "タブを外す(_D)" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "閉じる(_C)" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "ユーザー制限は数字でなければなりません!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "トピック保護" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "チャンネル外からのメッセージ禁止" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "秘密" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "招待のみ" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "モデレート" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "バン一覧" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "キーワード" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "ユーザー数制限" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "ユーザーリストを表示/隠す" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "新ニックネームを入力:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "不明なホスト" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "本名:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "ユーザー:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "国:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "サーバー:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "%u 分前" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "最後のメッセージ: %s" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "離席メッセージ:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "ブラウザーでリンクを開く" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "選択したリンクをコピーする" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "チャンネルへ参加" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "チャンネルを離れる" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "チャンネルをサイクルする" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: ユーザーメニュー" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "このメニューを編集..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "チャンネルリストの取得..." + +#: src/fe-gtk/menu.c:1348 +#, fuzzy +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"ユーザーコマンド - 特殊コード: \n" +"\n" +"%c = 現在のチャンネル\n" +"%m = マシン情報\n" +"%n = あなたのニック\n" +"%t = 時間/日付\n" +"%v = xchat のバージョン\n" +"%2 = 単語 2\n" +"%3 = 単語 3\n" +"&2 = 単語 2 からファイルの最後まで\n" +"&3 = 単語 3 からファイルの最後まで\n" +"\n" +"例:\n" +"/cmd john hello\n" +"\n" +"%2 は「john」になるでしょう\n" +"&2 は「こんにちは john」です。" + +#: src/fe-gtk/menu.c:1364 +#, fuzzy +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"ユーザー一覧ボタン - 特殊コード:\n" +"\n" +"%a = すべての選択済みニック\n" +"%c = 現在のチャンネル\n" +"%h = 選択済ニックのホスト名\n" +"%m = マシン情報\n" +"%n = あなたのニック\n" +"%s = 選択済ニック\n" +"%t = 日付/時間\n" +"\n" + +#: src/fe-gtk/menu.c:1374 +#, fuzzy +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"ダイアログボタン - 特殊コード:\n" +"\n" +"%a = すべての選択済ニック\n" +"%c = 現在のチャンネル\n" +"%h = 選択済ニックのホスト名\n" +"%m = マシン情報\n" +"%n = あなたのニック\n" +"%s = 選択済ニック\n" +"%t = 時間/日付\n" + +#: src/fe-gtk/menu.c:1384 +#, fuzzy +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"CTCP 返信 - 特殊コード:\n" +"\n" +"%d = データ (the whole ctcp)\n" +"%m = マシン情報\n" +"%s = ctcp を送ったニック\n" +"%t = 時間/日付\n" +"%2 = 単語 2\n" +"%3 = 単語 3\n" +"&2 = 単語 2 から行末\n" +"&3 = 単語 3 から行末\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: ユーザー定義コマンドの" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: ユーザー一覧のポップアップメニュー" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: 置換" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: URL ハンドラー" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: ユーザーリストのボタン" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: ダイアログボタン" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: CTCP 応答" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "ネットワーク一覧(_S)..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "新規(_N)" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "サーバータブ..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "チャンネルタブ..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "サーバーウィンドウ..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "チャンネルウィンドウ..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "プラグインかスクリプトをロードする(L)..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "終了(_Q)" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "閲覧(_V)" + +#: src/fe-gtk/menu.c:1591 +#, fuzzy +msgid "_Menu Bar" +msgstr "メニューバー(_M)" + +#: src/fe-gtk/menu.c:1592 +#, fuzzy +msgid "_Topic Bar" +msgstr "トピックバー(_T)" + +#: src/fe-gtk/menu.c:1593 +#, fuzzy +msgid "_User List" +msgstr "ユーザーリスト" + +#: src/fe-gtk/menu.c:1594 +#, fuzzy +msgid "U_serlist Buttons" +msgstr "ユーザー一覧のボタン" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "モードボタン(_O)" + +#: src/fe-gtk/menu.c:1597 +#, fuzzy +msgid "_Channel Switcher" +msgstr "チャンネルリスト..." + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "タブ(_T)" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "ツリー(_R)" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "ネットワークメーター(_N)" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "オフ" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "グラフ" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "サーバー(_S)" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "切断する(_D)" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "再接続する(_R)" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "チャンネルへ参加..." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "チャンネルへ参加..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "席を離れる" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "ユーザーメニュー(_U)" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "設定(_E)" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "設定(_P)..." + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "高度な設定" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "自動置換..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "CTCP 応答..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "ダイアログボタン..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "キーボードショートカット..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "テキストイベント..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "URL ハンドラ..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "ユーザー定義コマンド..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "ユーザーリストのボタン..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "ユーザーリストのポップアップ..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "ウィンドウ(_W)" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "バンリスト..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "文字集合..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "ダイレクトチャット..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "ファイル転送..." + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "バンリスト..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "無視一覧..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "プラグインとスクリプト..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "生ログ..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "URL 取り込み..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "マーカー行をリセット" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "通常テキスト(_L)" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "テキスト検索..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "テキスト保存..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "ヘルプ(_H)" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "コンテンツ(_C)" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "XChat について(_A)" + +#: src/fe-gtk/menu.c:2147 +#, fuzzy +msgid "_Attach" +msgstr "タブをつける" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "最近の出会い" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "オフライン" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "一度もなし" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, fuzzy, c-format +msgid "%d minutes ago" +msgstr "%u 分前" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "オンライン" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "新ニックネームを入力:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "XChat: ファイル送信一覧" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "ダイアログウィンドウを開く" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:591 +#, fuzzy +msgid "_Hide" +msgstr "隠す" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +#, fuzzy +msgid "Channel Message" +msgstr "チャンネル名" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +#, fuzzy +msgid "Private Message" +msgstr "ぷりぶ をタブへ" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +#, fuzzy +msgid "Highlighted Message" +msgstr "メッセージのハイライト時にビープを鳴らす" + +#: src/fe-gtk/plugin-tray.c:600 +#, fuzzy +msgid "_Change status" +msgstr "チャンネルをタブへ" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "離席" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "バージョン" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "詳細" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "読み込むプラグインかスクリプトを選択する" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat プラグインとスクリプト" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "ロード...(_L)" + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "アンロード(_U)" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "別名で保存..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: 生ログ (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "生ログの消去" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "あなたがこの検索のために開いたウィンドウはもう存在しません。" + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "最後まで検索しました。見つかりません" + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: 検索" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "前を検索(_B)" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "検索(_F)" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "新規ネットワーク" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "本当にネットワーク \"%s\" とそのすべてのサーバーを削除しますか?" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "チャンネル" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: チャンネル一覧 (%s)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "パスワード:" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "編集(_E)" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "ユーザー名と本名は空にできません。" + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: %s 編集" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "%s のサーバー" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "選択したサーバーのみに接続する" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "個人の詳細" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "全体ユーザー情報を使う" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "ニックネーム(_N):" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "2 つ目を選択:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "ユーザー名(_U):" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "本名(_L):" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "接続中" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "起動したらこのネットワークに自動接続" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "プロキシサーバーを使う" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "このネットワークのすべてのサーバーへは SSL を使う" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "不正な証明を受け入れる" + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "チャンネルを離れる:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "参加するチャンネルをカンマ(半角空白じゃない!)で区切って入力する" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "接続コマンド:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Nickserv パスワード:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"ニックネームがパスワードを要求する場合、ここに入力します。すべての IRC ネット" +"ワークがこれをサポートしているとは限りません。" + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "サーバーパスワード:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "サーバーのパスワードで、疑問がある場合、空のままにします。" + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "文字集合:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: ネットワーク一覧" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "ユーザー情報" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "3 つめを選択:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "ネットワーク" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "起動時にネットワーク一覧を飛ばす" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "編集...(_E)" + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "ソート(_S)" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "接続(_O)" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "テキストボックス外観" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "フォント:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "背景の絵:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "スクロール保存行:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "ニックに色を付ける" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "IRC の各個人に異なる色を与える" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "ニックをインデントして揃える" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "ニックを右揃えする." + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "透明な背景" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "マーカーラインを表示" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "最後に読んだテキストの後に赤い線を挿入します。" + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "ファイル転送設定" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "赤:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "緑:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "青:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "タイムスタンプ" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "タイムスタンプを有効" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "タイムスタンプのフォーマット:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "詳細は strftime の man ページを参照してください。" + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "昇順" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "入力ボックス" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "テキストボックスに使用するフォントと色" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "スペルの確認中" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "ニックを補完する" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "自動ニック補完 (TAB キーを使いません)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "ニックの補完接頭語:" + +#: src/fe-gtk/setup.c:147 +#, fuzzy +msgid "Nick completion sorted:" +msgstr "ニックの補完接頭語:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "入力ボックスコード" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "%nnn を ASCII 値と解釈する" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "%C と %b を色とボールドなどと解釈する" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "昇順, 最初になると" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "降順, 最後になると" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "降順" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "ソートしない" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "上部" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "ボタン" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "隠す" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "ユーザーリスト" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "ユーザーリストのホスト名を表示する" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "ユーザーリストのソート基準:" + +#: src/fe-gtk/setup.c:205 +#, fuzzy +msgid "Show user list at:" +msgstr "ユーザーリストを表示/隠す" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "離席追跡" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:209 +#, fuzzy +msgid "On channels smaller than:" +msgstr "チャンネルトピック" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "ダブルクリックでの動作" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "ウィンドウ" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "タブ" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "常に" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "要求があったタブのみ" + +#: src/fe-gtk/setup.c:242 +#, fuzzy +msgid "Tree" +msgstr "ツリー(_R)" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "サーバーからのメッセージは別のタブを開く" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "サーバーからの通知は別のタブを開く" + +#: src/fe-gtk/setup.c:252 +#, fuzzy +msgid "Open a new tab when you receive a private message" +msgstr "サーバーからのメッセージは別のタブを開く" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "アルファベットオーダーでタブをソート" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "小さなタブ" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "新規タブにフォーカス:" + +#: src/fe-gtk/setup.c:258 +#, fuzzy +msgid "Show channel switcher at:" +msgstr "チャンネルを表示" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "指定文字数でタブラベルを縮める:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "文字" + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "タブかウィンドウ" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "チャンネルの開き方:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "ダイアログの開き方:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "ユーティリティの開き方:" + +#: src/fe-gtk/setup.c:264 +#, fuzzy +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "DCC, 無視, 通知やその他ウィンドウに対してタブを用いる" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "いいえ" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "はい" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "ファイルかディレクトリ" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "定時のファイルを自動的に受理する:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "ダウンロードしたファイルの保存先:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "移動を完了したファイルの保存先:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "ファイル名にニックを保存" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "ネットワーク設定" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "IRC サーバーから自分の IP アドレスを取得する" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "DCC IP アドレス:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "" + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "高速 DCC 送信ポート:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "最後の DCC 送信ポート:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "" + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "最大ファイル転送速度 (バイト毎秒)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "ひとつのアップロード" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "ひとつ転送するときの最大速度" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "ひとつダウンロード:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "すべてのアップロードの合計:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "すべてのファイルの最大速度" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "すべてのダウンロードの合計:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "警告" + +#: src/fe-gtk/setup.c:333 +#, fuzzy +msgid "Show tray balloons on:" +msgstr "タブの表示方法:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:339 +#, fuzzy +msgid "Enable system tray icon" +msgstr "離席追跡を有効にする" + +#: src/fe-gtk/setup.c:341 +#, fuzzy +msgid "Highlighted Messages" +msgstr "メッセージのハイライト時にビープを鳴らす" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:344 +#, fuzzy +msgid "Extra words to highlight:" +msgstr "ハイライトする特殊単語:" + +#: src/fe-gtk/setup.c:345 +#, fuzzy +msgid "Nick names not to highlight:" +msgstr "次のニックをハイライトしない:" + +#: src/fe-gtk/setup.c:346 +#, fuzzy +msgid "Nick names to always highlight:" +msgstr "次のニックをハイライトしない:" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "コンマで複数単語を区切ります。" + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "デフォルトメッセージ:" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "終了:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "チャンネルを離れる:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "離席:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "離席" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "離席メッセージをアナウンスする" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "離席メッセージを参加しているすべてのチャネルに流す" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "一度だけ離席を表示" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "同一の離席メッセージをひとつ表示する" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "自動離席解除" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "高度な設定" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "自動再接続の遅延時間:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "参加と退出メッセージを隠す" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "デフォルトで参加/退出チャンネルを隠す" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "自動で DCC ウィンドウを開く" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "送信ウィンドウ" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "受信ウィンドウ" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "チャットウィンドウ" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "ログを残す" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "会話のログ記録を有効にする" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "ログファイル:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=サーバー %c=チャンネル %n=ネットワークです。" + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "常にタイムスタンプを挿入" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "ログタイムスタンプのフォーマット:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(無効)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "自動接続" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "IRC サーバーのみ" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "DCC 取得のみ" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "あなたのアドレス" + +#: src/fe-gtk/setup.c:423 +#, fuzzy +msgid "Bind to:" +msgstr "検索語:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "" + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "プロキシサーバー" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "ホスト名:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "ポート:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "種類:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "プロキシの使用:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "プロキシ認証" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "プロキシサーバーを使う (MS プロキシ、HTTP か Sock5 のみ)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "認証を使う (HTTP か Sock5 のみ)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "ユーザー名:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "パスワード:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "画像ファイル名の選択" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "ダウンロードフォルダーを選択する" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "フォント選択" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "参照..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "次の識別済ユーザーをマークする:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "次の未識別ユーザーをマークする:" + +#: src/fe-gtk/setup.c:1161 +#, fuzzy +msgid "Open Data Folder" +msgstr "フォルダーを開く..." + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "色選択" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "テキスト色" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "mIRC 色:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "ローカルの色:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "前景色:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "背景色:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "マーキングテキスト" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "インタフェース色" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "新規データ:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "マーカー行:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "新規メッセージ:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "離席ユーザー:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "ハイライト:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "イベント" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "サウンドファイル" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "出力ファイルの選択" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "サウンドの再生方法:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "外部サウンド再生プログラム(_P):" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "外部プログラム(_E)" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "自動(_A)" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "サウンドファイルディレクトリ(_D):" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "サウンドファイル:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "参照...(_B)" + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "再生(_P)" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "インタフェース" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "テキスト" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "ユーザーリスト" + +#: src/fe-gtk/setup.c:1703 +#, fuzzy +msgid "Channel switcher" +msgstr "チャンネルリスト..." + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "色" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "チャット" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "一般" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "サウンド" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "ネットワークセットアップ" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "ファイル転送" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "カテゴリ" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*警告*\n" +"ホーム・ディレクトリへ自動DCC受け取りを有効にする\n" +"ことは悪戯される危険があり, 勧められません. 例えば,\n" +"誰からがあなたへ『.bash_profile』ファイルを転送す\n" +"ると, 勝手にシェルの設定が上書きされてしまいます。" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: 設定" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "文字列解析にエラーがありました." + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "このシグナルは %d 個の引数を通します, $%d 個は不適当です。" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "テキストファイルの表示" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "イベント編集" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ 番号" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "読み込み元..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "全てを試行" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: URL 取り込み" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "リスト消去" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "選択した URL をコピー" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "コピー" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "ファイルにリストを保存" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d 個のなると、合計 %d 個" + +#~ msgid "%C18*$t$1%O $2" +#~ msgstr "%C18*$t$1%O $2" + +#~ msgid "%C21*%O$t%C21%B$1%O%C21 $2" +#~ msgstr "%C21*%O$t%C21%B$1%O%C21 $2" + +#, fuzzy +#~ msgid "%C18%H<%H$4$1%H>%H%O$t$2" +#~ msgstr "%C18%B%B$4$1%O%C18%O$t$2" + +#, fuzzy +#~ msgid "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" +#~ msgstr "$4%C21%B$1%O%C21$t$2" + +#~ msgid "%C28-%C29$1/$2%C28-%O$t$3" +#~ msgstr "%C28-%C29$1/$2%C28-%O$t$3" + +#~ msgid "$1$t$2" +#~ msgstr "$1$t$2" + +#~ msgid "%C19>%O$1%C19<%O$t$2" +#~ msgstr "%C19>%O$1%C19<%O$t$2" + +#~ msgid "%C16*%O$t$1%O" +#~ msgstr "%C16*%O$t$1%O" + +#~ msgid "%C28-%C29$1%C28-%O$t$2" +#~ msgstr "%C28-%C29$1%C28-%O$t$2" + +#~ msgid "%C28*%C29$3$1%C28*$t%O$2" +#~ msgstr "%C28*%C29$3$1%C28*$t%O$2" + +#~ msgid "%C18%H<%H$3$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$3$1%H>%H%O$t$2" + +#~ msgid "%C22*%O$t$1" +#~ msgstr "%C22*%O$t$1" + +#~ msgid "%C31%H<%H$4$1%H>%H%O%C30$t$2" +#~ msgstr "%C31%H<%H$4$1%H>%H%O%C30$t$2" + +#~ msgid "PID" +#~ msgstr "PID" + +#~ msgid "US Minor Outlying Islands" +#~ msgstr "米領マイナーアウトライイング諸島" + +#~ msgid "Direct client-to-client" +#~ msgstr "ダイレクトにクライアントからクライアント" + +#~ msgid "Send File" +#~ msgstr "ファイル送信" + +#~ msgid "Offer Chat" +#~ msgstr "チャットの依頼" + +#~ msgid "Abort Chat" +#~ msgstr "Chat について" + +#~ msgid "Userinfo" +#~ msgstr "ユーザー情報" + +#~ msgid "Clientinfo" +#~ msgstr "クライアント情報" + +#~ msgid "Time" +#~ msgstr "時間" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "Oper" + +#~ msgid "Kill this user" +#~ msgstr "このユーザーをkill" + +#~ msgid "Mode" +#~ msgstr "モード" + +#~ msgid "Give Half-Ops" +#~ msgstr "ハーフなるとを与える" + +#~ msgid "Take Half-Ops" +#~ msgstr "ハーフなるとを奪う" + +#~ msgid "Ignore" +#~ msgstr "無視" + +#~ msgid "Ignore User" +#~ msgstr "無視するユーザー" + +#~ msgid "UnIgnore User" +#~ msgstr "無視解除するユーザー" + +#~ msgid "Info" +#~ msgstr "情報" + +#~ msgid "Who" +#~ msgstr "Who" + +#~ msgid "DNS Lookup" +#~ msgstr "DNS 検索" + +#~ msgid "Trace" +#~ msgstr "トレース" + +#~ msgid "UserHost" +#~ msgstr "ユーザーホスト" + +#~ msgid "External" +#~ msgstr "外部" + +#~ msgid "Traceroute" +#~ msgstr "Traceroute" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "Unban" +#~ msgstr "バン解除" + +#~ msgid "I can't save an empty list!" +#~ msgstr "内容が空のリストは保存できません!" + +#~ msgid "List display options:" +#~ msgstr "ディスプレイオプションを表示:" + +#~ msgid "Minimum Users:" +#~ msgstr "最小ユーザー数:" + +#~ msgid "Maximum Users:" +#~ msgstr "最大ユーザー数:" + +#~ msgid "Regex Match:" +#~ msgstr "正規表現マッチ:" + +#~ msgid "Apply" +#~ msgstr "適用" + +#~ msgid "Refresh the list" +#~ msgstr "最新情報に更新" + +#~ msgid "Save the list" +#~ msgstr "リストを保存" + +#~ msgid "None" +#~ msgstr "なし" + +#~ msgid "To" +#~ msgstr "宛先" + +#~ msgid "Started" +#~ msgstr "開始時間" + +#~ msgid "Speed limit" +#~ msgstr "速度制限" + +#~ msgid "XChat: File Receive List" +#~ msgstr "XChat: ファイル受信一覧" + +#~ msgid "Open" +#~ msgstr "開く" + +#~ msgid "Ack" +#~ msgstr "確認" + +#~ msgid "To/From" +#~ msgstr "宛先/送信元" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "その他のタブを開きません。xchat を終了しますか?" + +#~ msgid "Show join/part messages" +#~ msgstr "参加/退出メッセージを表示" + +#~ msgid "Color paste" +#~ msgstr "色貼り付け" + +#~ msgid "_Close Tab" +#~ msgstr "タブを閉じる(_C)" + +#~ msgid "_Layout" +#~ msgstr "レイアウト(_L)" + +#~ msgid "Notify List..." +#~ msgstr "通知一覧..." + +#, fuzzy +#~ msgid "_Attach Window" +#~ msgstr "ウィンドウ(_W)" + +#~ msgid "_Close Window" +#~ msgstr "ウィンドウを閉じる(_C)" + +#~ msgid "User" +#~ msgstr "ユーザー" + +#~ msgid "Server" +#~ msgstr "サーバー" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: 通知一覧" + +#~ msgid "C_hannels to join:" +#~ msgstr "チャンネルに参加(_H):" + +#~ msgid "Resizable user list" +#~ msgstr "ユーザーリストの幅を調節可能にする" + +#~ msgid "Left" +#~ msgstr "左端" + +#~ msgid "Right" +#~ msgstr "右端" + +#~ msgid "Tabs Location" +#~ msgstr "タブの位置" + +#~ msgid "Flash taskbar on highlighted messages" +#~ msgstr "メッセージのハイライト時にタスクバーをフラッシュする" + +#~ msgid "Beep on private messages" +#~ msgstr "プライベートメッセージでビープを鳴らす" + +#~ msgid "Beep on channel messages" +#~ msgstr "チャンネルメッセージでビープ音を鳴らす" + +#~ msgid "Open an irc:// url" +#~ msgstr "irc:// URL を開く" + +#~ msgid "irc://server:port/channel" +#~ msgstr "irc://server:port/channel" + +#~ msgid "Execute a xchat command" +#~ msgstr "コマンド実行:" + +#~ msgid "\"Command to execute\"" +#~ msgstr "\"実行するコマンド\"" + +#~ msgid "Prints some text to the current tab/window" +#~ msgstr "いくつかのテキストを現在のタブ/ウィンドウに表示する" + +#~ msgid "\"Text to print\"" +#~ msgstr "\"テキストを表示する\"" + +#~ msgid "Change the context to the channel" +#~ msgstr "コンテキストをチャンネルに変更" + +#~ msgid "Change the context to the server" +#~ msgstr "サーバーにコンテキストを変更する" + +#~ msgid "server" +#~ msgstr "サーバー" + +#~ msgid "Get some informations from xchat" +#~ msgstr "いくつかの情報を xchat から取得する" + +#~ msgid "id" +#~ msgstr "ID" + +#~ msgid "Get settings from xchat" +#~ msgstr "xchat から設定を取得する" + +#~ msgid "name" +#~ msgstr "名前" + +#~ msgid "" +#~ "xchat-remote: %s\n" +#~ "Try `xchat-remote --help' for more information\n" +#~ msgstr "" +#~ "xchat-remote: %s\n" +#~ "より多くの情報は「xchat-remote --help」を試してください\n" + +#~ msgid "Failed to complete SetContext" +#~ msgstr "SetContext を完了していません" + +#~ msgid "Failed to complete print" +#~ msgstr "印刷を完了していません" + +#~ msgid "Failed to complete GetInfo" +#~ msgstr "GetInfo を完了していません" + +#~ msgid "Failed to complete GetPrefs" +#~ msgstr "GetPrefs を完了していません" + +#~ msgid "%s doesn't exist\n" +#~ msgstr "%s は存在しません\n" + +#~ msgid "%s loaded successfully!\n" +#~ msgstr "%s の読み込みに成功しました!\n" + +#~ msgid "France, Metropolitan" +#~ msgstr "フランス本国" + +#~ msgid "Neutral Zone" +#~ msgstr "中立地帯" + +#~ msgid "Settings saved." +#~ msgstr "設定を保存しました。" + +#~ msgid "Save rawlog" +#~ msgstr "生ログの保存" + +#~ msgid "Save rawlog..." +#~ msgstr "生ログの保存..." + +#~ msgid "XChat: Server List" +#~ msgstr "XChat: サーバー一覧" + +#~ msgid "Completes nick names without using the TAB key" +#~ msgstr "タブキーを使わずにニックを補完" + +#~ msgid "Input Box Appearance" +#~ msgstr "入力ボックス外観" + +#~ msgid "Convert spaces to underscore before sending" +#~ msgstr "送信前にスペースをアンダースコアに変換する" + +#~ msgid "(See strftime manpage for details)." +#~ msgstr "(詳細は strftime の manpage を参照)" + +#~ msgid "From:" +#~ msgstr "送り元:" + +#~ msgid "To:" +#~ msgstr "宛先:" + +#~ msgid "Size:" +#~ msgstr "サイズ:" + +#~ msgid "MIME Type" +#~ msgstr "MIME タイプ" + +#~ msgid "Close" +#~ msgstr "閉じる" + +#~ msgid " : %s\n" +#~ msgstr " : %s\n" + +#~ msgid "Error String" +#~ msgstr "エラー文字列" + +#~ msgid "Error name" +#~ msgstr "エラー名" + +#~ msgid "Error string" +#~ msgstr "エラー文字列" + +#~ msgid "Servername" +#~ msgstr "サーバー名" + +#~ msgid "Former Czechoslovakia" +#~ msgstr "旧チェコスロバキア" + +#~ msgid "Zaire" +#~ msgstr "ザイール" + +#~ msgid "" +#~ " File: %s\n" +#~ " To/From: %s\n" +#~ " Size: %u\n" +#~ " Port: %d\n" +#~ " IP Number: %s\n" +#~ "Start Time: %s Max CPS: %d\n" +#~ msgstr "" +#~ " ファイル: %s\n" +#~ "宛先/送り元: %s\n" +#~ " 容量: %d\n" +#~ " ポート: %d\n" +#~ " IPアドレス: %s\n" +#~ " 開始時刻: %s 最大 CPS: %d\n" + +#, fuzzy +#~ msgid "" +#~ "Options:\n" +#~ " -d, --cfgdir DIRECTORY use a different config dir\n" +#~ " -a, --no-auto don't auto connect\n" +#~ " -v, --version show version information\n" +#~ "\n" +#~ "URL:\n" +#~ " irc://server:port/channel\n" +#~ "\n" +#~ msgstr "" +#~ "%s %s オプション:\n" +#~ "\n" +#~ " --cfgdir <dir> -d\t : 指定の設定ディレクトリを利用する\n" +#~ " --noauto -a\t : 自動接続しない\n" +#~ " --version -v\t : バージョン情報の表示\n" + +#~ msgid "X-Chat: Edit Key Bindings" +#~ msgstr "X-Chat: キー・バインドの編集" + +#~ msgid "Add new" +#~ msgstr "新規追加" + +#~ msgid "new!new@new.com" +#~ msgstr "new!new@new.co.jp" + +#~ msgid "Chan" +#~ msgstr "チャンネル" + +#~ msgid "OK" +#~ msgstr "了解" + +#, fuzzy +#~ msgid "(%s) Channel settings" +#~ msgstr "パネル設定" + +#, fuzzy +#~ msgid "Channel Options" +#~ msgstr "チャンネルをタブへ" + +#~ msgid "User: %s" +#~ msgstr "ユーザー: %s" + +#~ msgid "Realname: %s" +#~ msgstr "本名: %s" + +#~ msgid "New Shell Tab..." +#~ msgstr "新規シェルタブ..." + +#~ msgid "_IRC" +#~ msgstr "_IRC" + +#~ msgid "Invisible" +#~ msgstr "見せない" + +#~ msgid "Receive Wallops" +#~ msgstr "ウォール操作を受け取る" + +#~ msgid "Receive Server Notices" +#~ msgstr "サーバーの通知を受け取る" + +#~ msgid "Auto Rejoin when Kicked" +#~ msgstr "キックされたらに自動的に復帰する" + +#~ msgid "Never-give-up ReConnect" +#~ msgstr "サーバー再接続をあきらめない" + +#~ msgid "Auto Accept Direct Chat" +#~ msgstr "ダイレクトチャットを自動受理する" + +#, fuzzy +#~ msgid "Lists" +#~ msgstr "Banリスト" + +#, fuzzy +#~ msgid "Key Bindings..." +#~ msgstr "キー・バインドの編集..." + +#~ msgid "Reload Settings" +#~ msgstr "設定を読み直す" + +#~ msgid "Save Settings now" +#~ msgstr "現在の設定を保存する" + +#~ msgid "File Receive..." +#~ msgstr "ファイル受信..." + +#~ msgid "File Send..." +#~ msgstr "ファイル送信..." + +#, fuzzy +#~ msgid "Settings for %s" +#~ msgstr "設定" + +#, fuzzy +#~ msgid "_Remove \"%s\"" +#~ msgstr "削除" + +#, fuzzy +#~ msgid "_Add new server" +#~ msgstr "新規サーバー" + +#, fuzzy +#~ msgid "Move \"%s\" _up" +#~ msgstr "削除" + +#, fuzzy +#~ msgid "_Add new network" +#~ msgstr "新規追加" + +#, fuzzy +#~ msgid "Global User Info" +#~ msgstr "ユーザ情報:" + +#, fuzzy +#~ msgid "Nick Names:" +#~ msgstr "ニック:" + +#, fuzzy +#~ msgid "Connect in a _new tab" +#~ msgstr "新規タブで接続" + +#, fuzzy +#~ msgid "Servers" +#~ msgstr "サーバ" + +#, fuzzy +#~ msgid "Nick Name:" +#~ msgstr "ニック:" + +#, fuzzy +#~ msgid "" +#~ "Command to execute after connecting. Can be used to authenticate to " +#~ "NickServ" +#~ msgstr "接続が完了したあとに実行するコマンド" + +#, fuzzy +#~ msgid "Use secure SSL" +#~ msgstr "SSL を使う" + +#, fuzzy +#~ msgid "Edit mode" +#~ msgstr "編集" + +#, fuzzy +#~ msgid "Tint transparency" +#~ msgstr "色合い(シェード)透明度" + +#, fuzzy +#~ msgid "Strip mIRC color" +#~ msgstr "MIRC カラーを無効にする" + +#, fuzzy +#~ msgid "Tint green:" +#~ msgstr "濃淡の詳細設定" + +#~ msgid "Lag meter:" +#~ msgstr "ラグメータ:" + +#~ msgid "Throttle meter:" +#~ msgstr "スロットルメータ:" + +#, fuzzy +#~ msgid "Double-click command:" +#~ msgstr "ダブルクリック・コマンド:" + +#, fuzzy +#~ msgid "Userlist buttons enabled" +#~ msgstr "ユーザーリストボタンを有効にする" + +#, fuzzy +#~ msgid "Only highlight tabs on channel messages" +#~ msgstr "メッセージとアクションのときだけ チャンネルタブをハイライトする" + +#, fuzzy +#~ msgid "Pop new tabs to front" +#~ msgstr "新規タブを前面へ" + +#, fuzzy +#~ msgid "Auto open DCC send list" +#~ msgstr "自動的に DCC 送信ウィンドウを開く" + +#, fuzzy +#~ msgid "Auto open DCC chat list" +#~ msgstr "自動的に DCC チャット・ウィンドウを開く" + +#, fuzzy +#~ msgid "Auto open DCC receive list" +#~ msgstr "自動的に DDC 受信ウィンドウを開く" + +#, fuzzy +#~ msgid "Default part message:" +#~ msgstr "退出メッセージ:" + +#, fuzzy +#~ msgid "Default away message:" +#~ msgstr "離席メッセージをアナウンスする" + +#, fuzzy +#~ msgid "Proxy port:" +#~ msgstr "プロキシタイプ:" + +#, fuzzy +#~ msgid "Proxy type:" +#~ msgstr "プロキシタイプ:" + +#, fuzzy +#~ msgid "Mark back:" +#~ msgstr "マーク背景色" + +#~ msgid "Select a file to save to" +#~ msgstr "保存するファイル名の選択" + +#~ msgid "port" +#~ msgstr "ポート" + +#, fuzzy +#~ msgid "Load Plugin..." +#~ msgstr "プラグイン(*.so)をロード..." + +#, fuzzy +#~ msgid "Replace Popup..." +#~ msgstr "置換ポップアップ・メニュー..." + +#, fuzzy +#~ msgid "Load plugin..." +#~ msgstr "プラグイン(*.so)をロード..." + +#, fuzzy +#~ msgid "X-Chat Homepage..." +#~ msgstr "X-Chat ホームページ..." + +#, fuzzy +#~ msgid "Online Docs..." +#~ msgstr "オンライン・ヘルプ..." + +#, fuzzy +#~ msgid "About X-Chat..." +#~ msgstr "X-Chatについて..." + +#~ msgid "Choose File" +#~ msgstr "ファイル選択" + +#~ msgid "Skip MOTD" +#~ msgstr "ログインメッセージを無視" + +#~ msgid "Don't display the message-of-the-day when logging in" +#~ msgstr "ログインしたときに今日のメッセージを表示しない" + +#, fuzzy +#~ msgid "No Server List on Startup" +#~ msgstr "起動時にサーバーリストを表示しない" + +#~ msgid "Auto ReJoin on Kick" +#~ msgstr "キックされたら自動復帰する" + +#~ msgid "Ascii Chart" +#~ msgstr "ASCII 表" + +#, fuzzy +#~ msgid "Server settings" +#~ msgstr "設定" + +#, fuzzy +#~ msgid "Ban List Window..." +#~ msgstr "Banリストウィンドウ..." + +#, fuzzy +#~ msgid "ASCII Window..." +#~ msgstr "無視リストウィンドウ" + +#, fuzzy +#~ msgid "F_lush Buffer" +#~ msgstr "バッファをフラッシュ" + +#, fuzzy +#~ msgid "Save Buffer..." +#~ msgstr "バッファ保存..." + +#~ msgid "User Modes" +#~ msgstr "状態" + +#, fuzzy +#~ msgid "Plugins" +#~ msgstr "プラグイン..." + +#~ msgid "Edit User Menu" +#~ msgstr "ユーザメニューの編集" + +#, fuzzy +#~ msgid "NewServer" +#~ msgstr "サーバ" + +#, fuzzy +#~ msgid "Open extra tab for each server" +#~ msgstr "通知やサーバからの通知を別のウィンドウ内に表示" + +#, fuzzy +#~ msgid "Server List 2..." +#~ msgstr "サーバリスト.." + +#, fuzzy +#~ msgid "Network Name:" +#~ msgstr "ネットワーク" + +#~ msgid "Open ASCII Chart" +#~ msgstr "ASCII コード表を開く" + +#, fuzzy +#~ msgid "RMDLL <dll name>, unloads a plugin" +#~ msgstr "/RMDLL <DLL名>, プラグインをアンロードする\n" + +#~ msgid "Error compiling script\n" +#~ msgstr "スクリプトのコンパイルにエラーが発生しました.\n" + +#~ msgid "Error Loading file\n" +#~ msgstr "ファイルの読み込みにエラーが発生しました.\n" + +#~ msgid "Perl scripting not available in this compilation.\n" +#~ msgstr "この編集では Perl スクリプトは利用できません.\n" + +#, fuzzy +#~ msgid "LOADDLL <file>, loads a plugin" +#~ msgstr "/LOADDLL <ファイル>, プラグインをロード.\n" + +#, fuzzy +#~ msgid "UNLOADALL, Unloads all perl scripts" +#~ msgstr "/UNLOADALL, 読み込まれている全 Perl スクリプトをアンロードする\n" + +#~ msgid "Scripts & Plugins" +#~ msgstr "スクリプト&プラグイン" + +#, fuzzy +#~ msgid "PKILL <name>, kills the script of the given name" +#~ msgstr "/PKILL <名前>, 指定名のスクリプトを kill する\n" + +#, fuzzy +#~ msgid "PLIST, lists the current python scripts" +#~ msgstr "/PLIST, 現在の Python スクリプトリストを表示する\n" + +#, fuzzy +#~ msgid "PLOAD loads a python script" +#~ msgstr "/PLOAD Python スクリプトをロードする\n" + +#~ msgid "Select a Perl script to load" +#~ msgstr "組み込む Perl スクリプトの選択" + +#~ msgid "Select a Python script to load" +#~ msgstr "組み込む Python スクリプトの選択" + +#~ msgid "Unload All Scripts" +#~ msgstr "すべてのスクリプトをアンロード" + +#~ msgid "Perl List" +#~ msgstr "Perl リスト" + +#, fuzzy +#~ msgid "Load Python Script..." +#~ msgstr "Perl スクリプトをロード..." + +#~ msgid "Python List" +#~ msgstr "Python リスト" + +#~ msgid "gdk_font_load failed" +#~ msgstr "gdk_font_load に失敗しました。" + +#~ msgid "" +#~ "The default download directory is your\n" +#~ "home dir, you should change this at some stage." +#~ msgstr "" +#~ "標準のダウンロードディレクトリがホームディレクトリ\n" +#~ "となっています. そのうちいつか変更するべきです。" + +#~ msgid "Setup.." +#~ msgstr "設定..." + +#~ msgid "Palette.." +#~ msgstr "パレット..." + +#~ msgid "X-Chat: Palette" +#~ msgstr "X-Chat: パレット" + +#~ msgid "Foreground" +#~ msgstr "前景色" + +#~ msgid "Background" +#~ msgstr "背景色" + +#~ msgid "Mark Background" +#~ msgstr "マーク背景色" + +#~ msgid "Mark Foreground" +#~ msgstr "マーク前景色" + +#~ msgid "Color %d" +#~ msgstr "カラー %d" + +#~ msgid "About..." +#~ msgstr "X-Chat について..." + +#~ msgid "No Channel" +#~ msgstr "チャンネルなし" + +#~ msgid "No Server" +#~ msgstr "サーバー無し" + +#~ msgid "Is Tab" +#~ msgstr "タブ状態" + +#~ msgid "Is Not Tab" +#~ msgstr "非タブ状態" + +#~ msgid "Show" +#~ msgstr "表示" + +#~ msgid "Move Here" +#~ msgstr "ここへ移動" + +#, fuzzy +#~ msgid "X-Chat: Setup" +#~ msgstr "X-Chat: 検索" + +#~ msgid "Edit entry:" +#~ msgstr "入力事項の編集:" + +#~ msgid "Name:" +#~ msgstr "題名:" + +#~ msgid "Channels:" +#~ msgstr "チャンネル:" + +#~ msgid "Use proxy server if one is set in Setup->Proxy Server" +#~ msgstr "[設定]-[プロキシサーバ]に何かセットされていたらプロキシサーバを使う" + +#~ msgid "New Group" +#~ msgstr "新規グループ" + +#~ msgid "" +#~ "Cannot use \"root\" as a nickname,\n" +#~ "please change that first." +#~ msgstr "" +#~ "\"root\"というニックは利用できません,\n" +#~ "変更してください." + +#~ msgid "Connect New" +#~ msgstr "新規接続" + +#~ msgid "Failed to load translation table." +#~ msgstr "変換テーブルの読み込みに失敗しました。" + +#~ msgid "" +#~ "The following prefs do not take effect\n" +#~ "immediately, you will have to close the\n" +#~ "window and re-open it:\n" +#~ "\n" +#~ " - Channel Tabs\n" +#~ " - Channel Mode Buttons\n" +#~ " - Userlist Buttons\n" +#~ " - Disable Paned Userlist\n" +#~ " - Notify User color\n" +#~ " - Layout for a vertical panel\n" +#~ " - Auto Indent" +#~ msgstr "" +#~ "以下の設定の変更は直後には反映されません.\n" +#~ "ウィンドウを一旦閉じて、開き直す必要が\n" +#~ "あります:\n" +#~ "\n" +#~ " - チャンネル・タブ\n" +#~ " - チャンネル・モードのボタン表示\n" +#~ " - ユーザーリストボタン\n" +#~ " - ユーザリストのパネル化の無効\n" +#~ " - 通知ユーザ定義色\n" +#~ " - 垂直パネルでのレイアウト\n" +#~ " - 自動インデント" + +#~ msgid "Auto Indent" +#~ msgstr "自動インデント" + +#~ msgid "Auto adjust the separator bar position as needed." +#~ msgstr "必要ならセパレータの位置を自動的に調整する." + +#~ msgid "Draw Separator Bar" +#~ msgstr "セパレートタを描写" + +#~ msgid "Make the separator an actual visible line." +#~ msgstr "セパレータを実際に見えるようにする." + +#~ msgid "Word Wrap" +#~ msgstr "単語を折り返す" + +#~ msgid "Don't split words from one line to the next" +#~ msgstr "単語を1行から次の行へ分けない" + +#~ msgid "Tint the see-through text box to make it darker" +#~ msgstr "テキストボックスを文字が見やすいように半透明にします" + +#~ msgid "Use a font set" +#~ msgstr "フォントセットを使用する" + +#~ msgid "Change in realtime" +#~ msgstr "リアルタイムに変更" + +#~ msgid "Startup and Shutdown" +#~ msgstr "起動と終了" + +#~ msgid "Don't display the server list on X-Chat startup" +#~ msgstr "X-Chat 起動時にサーバーリストを表示しない" + +#~ msgid "Auto Save URL list" +#~ msgstr "URL リストを自動的に保存" + +#~ msgid "Auto save your URL list when exiting from X-Chat" +#~ msgstr "X-Chat を終了するとき, 自動的に URL リストを保存します" + +#~ msgid "Give the User List style" +#~ msgstr "ユーザリストスタイルを与える" + +#~ msgid "Use paned user list instead of a fixed width one" +#~ msgstr "" +#~ "固定幅のユーザリストの代わりに, 幅が調節可能なユーザリストを使います." + +#~ msgid "Complete nicknames when a partial one is entered" +#~ msgstr "不完全なニックの入力があれば、それを補完する" + +#~ msgid "Old-style Nickname Completion" +#~ msgstr "旧スタイルのニック補完" + +#~ msgid "Nickname completion is old-style (instead of GNU-style)" +#~ msgstr "ニックネームの補完は旧スタイル(GNU スタイルの代わり)です。" + +#~ msgid "Give the Input Box style" +#~ msgstr "入力ボックススタイルを与える" + +#~ msgid "Input box gets same style as main text area" +#~ msgstr "入力ボックスをメインのテキストエリアと同じスタイルにする" + +#~ msgid "Nickname Completion Character:" +#~ msgstr "ニックを補完するときにつける文字" + +#~ msgid "Character to append to completed nicknames" +#~ msgstr "ニックネームの補完のときに付加する文字" + +#~ msgid "Output Box" +#~ msgstr "出力ボックス" + +#~ msgid "Strip MIRC color codes from text before displaying" +#~ msgstr "テキストを表示する前に, MIRC の色情報を削除します." + +#~ msgid "Output nicknames in different colors" +#~ msgstr "ニックネームにそれぞれ違った色を付けます." + +#~ msgid "Filter out BEEPs" +#~ msgstr "ビープを抑制する" + +#~ msgid "Remove ^G BEEP codes from text before displaying" +#~ msgstr "テキストを表示する前にビープコード(^G)を取り除きます" + +#~ msgid "Buffer Settings" +#~ msgstr "バッファ設定" + +#~ msgid "Text Buffer Size:" +#~ msgstr "バッファサイズ:" + +#~ msgid "lines (0=Unlimited)." +#~ msgstr "行数 (0=無制限)." + +#~ msgid "Kanji locale <=> JIS translation" +#~ msgstr "漢字の ロケール <=> JIS 変換" + +#~ msgid "Progress bar" +#~ msgstr "プログレスバ−" + +#~ msgid "Buttons" +#~ msgstr "ボタン" + +#~ msgid "Show the TNSIPMLK buttons" +#~ msgstr "チャネルのモードを表す TNSIPMLK ボタンを表示します." + +#~ msgid "User List Buttons" +#~ msgstr "ユーザーリストのボタン" + +#~ msgid "Show the buttons below the user list" +#~ msgstr "ユーザーリストの下にボタンを表示します" + +#~ msgid "Use tabs for channels instead of separate windows" +#~ msgstr "" +#~ "チャネルを開くときに, 新規ウィンドウの代わりにウィンドウ内で開きます." + +#~ msgid "Limited Tab Highlighting" +#~ msgstr "限定したタブのハイライト" + +#~ msgid "Bring new query/channel tabs to front" +#~ msgstr "新規の ぷりぶ/チャンネル・タブを手間へ持ってくる" + +#~ msgid "Use tabs for /query instead of separate windows" +#~ msgstr "ぷりぶ してる時に, 新規ウィンドウの代わりにウィンドウ内で開きます." + +#~ msgid "Window Position" +#~ msgstr "ウィンドウ位置" + +#~ msgid "" +#~ "If Left and Top are set to zero, X-Chat will use\n" +#~ "your window manager defaults." +#~ msgstr "" +#~ "左と上からの値が 0 の場合は, X-Chat の位置はウィンドウマネージャーにまかせ" +#~ "ます." + +#~ msgid "Left:" +#~ msgstr "左端:" + +#~ msgid "Window Size" +#~ msgstr "大きさ" + +#~ msgid "Width:" +#~ msgstr "横幅:" + +#~ msgid "Height:" +#~ msgstr "高さ:" + +#~ msgid "Show Session Tree View" +#~ msgstr "セッション・ツリー・ビューを表示" + +#~ msgid "Hide Session on Panelize" +#~ msgstr "パネル化時にウィンドウを隠す" + +#~ msgid "Hide X-Chat when window moved to the panel" +#~ msgstr "パネルアプレット化の際に, X-Chat ウィンドウを隠します." + +#~ msgid "Panel Applet" +#~ msgstr "パネル・アプレット" + +#~ msgid "Layout For a Vertical Panel" +#~ msgstr "縦のパネルに適したレイアウト" + +#~ msgid "Layout the X-Chat panel applet for a vertical panel" +#~ msgstr "パネルアプレット化の際に, 縦のパネルに適した表示を行います." + +#~ msgid "Raw Mode Display" +#~ msgstr "生表示モード" + +#~ msgid "Display raw mode changes instead of interpretations" +#~ msgstr "注釈したものではなく, モード変更を生データを表示します" + +#~ msgid "Beep when a private message for you is received" +#~ msgstr "ぷりぶ メッセージを受け取ったときに, ビープを鳴らせて知らせます" + +#~ msgid "Beep when a channel message is received" +#~ msgstr "チャンネルメッセージを受け取ったときに, ビープを鳴らせて知らせます" + +#~ msgid "Send /who #chan on join." +#~ msgstr "チャンネル参加時に \"/who #チャンネル\" を送信する。" + +#~ msgid "Find user information when joining a channel." +#~ msgstr "チャンネル参加時にユーザ情報を調べる." + +#~ msgid "" +#~ "These can be a filename relative to ~/.xchat/ to be\n" +#~ "used as a list of random quit or part reasons." +#~ msgstr "" +#~ "終了または退出理由のランダムリストとして使われるファイル名を\n" +#~ "~/.xchat/ からの相対パスで指定できます." + +#~ msgid "seconds." +#~ msgstr "(秒)" + +#~ msgid "Hostname / IP Number:" +#~ msgstr "ホスト名 / IP アドレス:" + +#~ msgid "" +#~ "Most people should leave this blank, it's only\n" +#~ "usefull for machines with multiple addresses." +#~ msgstr "" +#~ "ほとんどの人は, これを空でかまわないはずです, これは\n" +#~ "複数のアドレスをもつマシンに対してのみ役に立ちます。" + +#~ msgid "Public IP Address" +#~ msgstr "パブリックIP アドレス" + +#~ msgid "" +#~ "You may need to set the DCC IP Address if\n" +#~ "you're behind a NAT router or proxy firewall." +#~ msgstr "" +#~ "NATルータやプロクシファイアウォールを使っている場合、\n" +#~ "DCC IPアドレスの設定が必要になります。" + +#~ msgid "Get my IP from Server (for use in DCC Send only)" +#~ msgstr "サーバから自分の IP アドレスを取得 (DCC 送信にのみ)" + +#~ msgid "For people using a 10.* or 192.168.* IP number." +#~ msgstr "10.* もしくは 192.168.* の IP 番号を利用する人のためのもの." + +#~ msgid "Proxy Server Hostname:" +#~ msgstr "プロキシサーバ名:" + +#~ msgid "Proxy Server Port:" +#~ msgstr "プロキシサーバポート:" + +#~ msgid "Only show away messages the first time they're seen" +#~ msgstr "最初の離席メッセージのみを表示する" + +#~ msgid "When typing is started, the away flag is unset" +#~ msgstr "キー入力が開始されたら、離席フラグを解除する" + +#~ msgid "Your away settings" +#~ msgstr "離席の設定" + +#, fuzzy +#~ msgid "Apply a timestamp to disk logs" +#~ msgstr "常にタイムスタンプをディスクログに適用" + +#~ msgid "Generic" +#~ msgstr " 一般" + +#~ msgid "User List Notify Highlighting" +#~ msgstr "ユーザリスト通知のハイライト" + +#~ msgid "Highlight Notifies" +#~ msgstr "通知をハイライトする" + +#~ msgid "Highlight notified users in the user list" +#~ msgstr "ユーザリスト中の通知ユーザをハイライトする" + +#~ msgid "Notified User Color:" +#~ msgstr "通知ユーザの色:" + +#~ msgid "Notification Timeouts" +#~ msgstr "通知タイムアウト" + +#~ msgid "Notify Check Interval:" +#~ msgstr "通知チェック間隔:" + +#~ msgid "seconds (0=Disable)." +#~ msgstr "秒 (0=無効)" + +#~ msgid "Enable Character Translation" +#~ msgstr "文字の置き換えを有効にする" + +#~ msgid "Translation File:" +#~ msgstr "変換ファイル:" + +#~ msgid "Use a ircII style translation file." +#~ msgstr "ircII 形式の変換ファイルを指定してください." + +#~ msgid "Automatically open DCC Send Window" +#~ msgstr "自動的に DCC 送信ウィンドウを開く" + +#~ msgid "Automatically open DCC Recv Window" +#~ msgstr "自動的に DDC 受信ウィンドウを開く" + +#~ msgid "Automatically open DCC Chat Window" +#~ msgstr "自動的に DCC チャット・ウィンドウを開く" + +#~ msgid "Resume on Auto Accept" +#~ msgstr "自動受付を再開する" + +#~ msgid "When Auto-Accepting DCC, try to resume." +#~ msgstr "DCC の自動受付のとき再開を試みます." + +#~ msgid "DCC Offers Timeout:" +#~ msgstr "DCC 提案タイムアウト:" + +#~ msgid "DCC Stall Timeout:" +#~ msgstr "DCC 停滞タイムアウト:" + +#~ msgid "File Permissions:" +#~ msgstr "ファイル・アクセス権:" + +#~ msgid "(octal)" +#~ msgstr "(8進数)" + +#~ msgid "Directory to save to:" +#~ msgstr "保存するディレクトリ先:" + +#~ msgid "Save file with Nickname" +#~ msgstr "ニックネームでファイルを保存する" + +#~ msgid "Put the sender's nickname in incoming filenames" +#~ msgstr "送信者のニックを incoming ファイル名に置く" + +#~ msgid "DCC Send Options" +#~ msgstr "DCC 送信オプション" + +#~ msgid "Fast DCC Send" +#~ msgstr "高速 DCC 送信" + +#~ msgid "Don't wait for ACKs to send more data" +#~ msgstr "大量のデータを送信するため, いちいち確認を待たない" + +#~ msgid "Fill Spaces" +#~ msgstr "スペースの埋め方" + +#~ msgid "File names with spaces will be filled with underscore" +#~ msgstr "ファイル名のスペースをアンダースコアで埋める" + +#~ msgid "(0=Disabled)" +#~ msgstr "(0=無効)" + +#~ msgid "Send Block Size:" +#~ msgstr "送信ブロックサイズ:" + +#~ msgid "(1024=Normal)" +#~ msgstr "(1024=通常)" + +#~ msgid "Built-in Replies" +#~ msgstr "内部応答" + +#~ msgid "Do not reply to CTCP version" +#~ msgstr "CTCP バージョンには応答しない" + +#~ msgid "Sound Dir:" +#~ msgstr "サウンドディレクトリ:" + +#~ msgid "Play Command:" +#~ msgstr "再生コマンド:" + +#~ msgid "Interface Settings" +#~ msgstr "インタフェース設定" + +#~ msgid "IRC Input/Output Settings" +#~ msgstr "IRC 入出力設定" + +#~ msgid "IRC Input/Output" +#~ msgstr "IRC 入出力" + +#~ msgid "Window Layout Settings" +#~ msgstr "ウィンドウ・レイアウト設定" + +#~ msgid "Window Layout" +#~ msgstr "ウィンドウ・レイアウト" + +#~ msgid "Main Window Settings" +#~ msgstr "メインウィンドウ設定" + +#~ msgid "Channel Window Settings" +#~ msgstr "チャンネル・ウィンドウ設定" + +#~ msgid "Dialog Window Settings" +#~ msgstr "ダイアログ・ウィンドウ設定" + +#~ msgid "Panel" +#~ msgstr "パネル" + +#~ msgid "IRC Settings" +#~ msgstr "IRC 設定" + +#~ msgid "IP Address Settings" +#~ msgstr "IP アドレス設定" + +#, fuzzy +#~ msgid "IP Address" +#~ msgstr "IP アドレス" + +#~ msgid "Highlighting Settings" +#~ msgstr "ハイライト設定" + +#~ msgid "Logging Settings" +#~ msgstr "ログイン設定" + +#~ msgid "Notification Settings" +#~ msgstr "通知設定" + +#~ msgid "Notification" +#~ msgstr "通知" + +#~ msgid "Character Set (Translation Tables)" +#~ msgstr "文字集合(変換テーブル)" + +#, fuzzy +#~ msgid "CTCP Settings" +#~ msgstr "DCC 設定" + +#~ msgid "DCC Settings" +#~ msgstr "DCC 設定" + +#~ msgid "Input Box always in focus" +#~ msgstr "入力ボックスをいつもフォーカスする" + +#~ msgid "/TIMER <seconds> <command>\n" +#~ msgstr "/TIMER <秒> <コマンド>\n" + +#~ msgid "Userlist icons" +#~ msgstr "ユーザリストアイコン" + +#~ msgid "Show nickname" +#~ msgstr "ニックを表示" + +#~ msgid "Show nickname and op/voice icon before the input box" +#~ msgstr "入力ボックスの前に自分のニックとop/voiceアイコンを表示" + +#~ msgid "" +#~ "/MKICKB, Sets a ban of *@* and mass kicks everyone except you in the " +#~ "current channel (needs chanop)\n" +#~ msgstr "" +#~ "/MKICKB, 現在のチャンネルで, 自分以外の全員を キックして, さらにバンする " +#~ "(なるとが必要).\n" + +#~ msgid "" +#~ "An IRC Client for UNIX.\n" +#~ "\n" +#~ "This binary was compiled on " +#~ msgstr "" +#~ "UNIXのIRCクライアント。\n" +#~ "\n" +#~ "このバイナリがコンパイルされたのは" + +#~ msgid "" +#~ "(C) 1998-2001 Peter Zelezny <zed@linux.com>\n" +#~ "\n" +#~ "An IRC Client for UNIX.\n" +#~ "\n" +#~ "This binary was compiled on " +#~ msgstr "" +#~ "(C) 1998-2001 Peter Zelezny <zed@linux.com>\n" +#~ "\n" +#~ "UNIXのIRCクライアント。\n" +#~ "\n" +#~ "このバイナリがコンパイルされたのは" + +#~ msgid " Apply " +#~ msgstr "適用" + +#~ msgid "Config dir" +#~ msgstr "設定ディレクトリ" + +#~ msgid "Don't use GNOME Panel" +#~ msgstr "GNOME パネルを利用しない" + +#~ msgid "Open Toolbox" +#~ msgstr "ツールボックスを開く" + +#~ msgid "Beep" +#~ msgstr "ビープ音" + +#~ msgid "Conf" +#~ msgstr "会議" + +#~ msgid "Conference mode (no join/part msgs)" +#~ msgstr "会議モード (参加/分断 メッセージなし)" + +#~ msgid "CP" +#~ msgstr "色貼" + +#~ msgid "Ascii" +#~ msgstr "アスキー" + +#~ msgid "Bold" +#~ msgstr "太字" + +#~ msgid "Hide/Show Userlist" +#~ msgstr "ユーザリストを隠す/表示" + +#~ msgid "K" +#~ msgstr "鍵" + +#~ msgid "Perl Script.." +#~ msgstr "Perl スクリプト..." + +#~ msgid "Python Script.." +#~ msgstr "Python スクリプト..." + +#~ msgid "All Perl Scripts" +#~ msgstr "すべての Perl スクリプト" + +#~ msgid "All Python Scripts" +#~ msgstr "すべての Python スクリプト" + +#~ msgid "All Plugins" +#~ msgstr "すべてのプラグイン" + +#~ msgid "Kill" +#~ msgstr "殺す" + +#~ msgid "User _Modes" +#~ msgstr "状態(_M)" + +#~ msgid "S_cripts & Plugins" +#~ msgstr "拡張(_C)" + +#~ msgid "Use_r Menu" +#~ msgstr "メニュー(_R)" + +#~ msgid "Use the /NOTIFY command to add people to your notify list." +#~ msgstr "『/NOTIFY』コマンドで通知リストへニックを追加してください." + +#~ msgid "Show invites in active window" +#~ msgstr "アクティブウィンドウに INVITE を表示" + +#~ msgid "Show notifies in active window" +#~ msgstr "通知をアクティヴウィンドウに表示" + +#~ msgid "Priv Yes/No" +#~ msgstr "ぷりぶ はい/いいえ" + +#~ msgid "Noti Yes/No" +#~ msgstr "通知 はい/いいえ" + +#~ msgid "Chan Yes/No" +#~ msgstr "チャンネル はい/いいえ" + +#~ msgid "Ctcp Yes/No" +#~ msgstr "CTCP はい/いいえ" + +#~ msgid "Invi Yes/No" +#~ msgstr "招待 はい/いいえ" + +#~ msgid "Unig Yes/No" +#~ msgstr "無視解除 はい/いいえ" + +#~ msgid "Number of messages" +#~ msgstr "メッセージ数" + +#~ msgid "Bytes in mailbox" +#~ msgstr "メールボックス中のバイト数" + +#, fuzzy +#~ msgid "%C2<%O$1%C2>%O$t$2%O" +#~ msgstr "%C6<%O$1%C6>%O$t$2%O" + +#~ msgid "%C6<%O$1%C6>%O$t$2%O" +#~ msgstr "%C6<%O$1%C6>%O$t$2%O" + +#~ msgid "-%C10-%C11-%O$t%C12[%O$1%C12]%C $2" +#~ msgstr "-%C10-%C11-%O$t%C12[%O$1%C12]%O $2" + +#~ msgid "-%C10-%C11-%O$t$1%O" +#~ msgstr "-%C10-%C11-%O$t$1%O" + +#~ msgid "" +#~ "-%C10-%C11-%O$tDCC CHAT failed. Connection to $1 %C14[%O$2:$3%C14]%O lost." +#~ msgstr "" +#~ "-%C10-%C11-%O$tDCC チャットに失敗しました. $1 %C14[%O$2:$3%C14]%O への接続" +#~ "を失いました。" + +#~ msgid "-%C10-%C11-%O$tDCC RECV $1 ($2) failed. Connection to $3 lost." +#~ msgstr "" +#~ "-%C10-%C11-%O$t$1 ($2)の DCC 受取リに失敗しました. $3 への接続を失いまし" +#~ "た。" + +#~ msgid "" +#~ "-%C10-%C11-%O$tDCC SEND %C11$1%O failed. Connection to %C11$2%O lost." +#~ msgstr "" +#~ "-%C10-%C11-%O$t%C11$1%O の DCC 送信に失敗しました. %C11$2%O への接続を失い" +#~ "ました。" + +#~ msgid " $1 $2 $3 $4 $5 $6 $7" +#~ msgstr " $1 $2 $3 $4 $5 $6 $7" + +#~ msgid "-%C10-%C11-%O$tContents of packet: \"$1%O\"." +#~ msgstr "-%C10-%C11-%O$tパケット内容: \"$1%O\"。" + +#~ msgid "<%C10-%C11-%O$t$1 %C14(%O$2%C14)%C has left $3 %C14(%O$4%C14)%O" +#~ msgstr "" +#~ "<%C10-%C11-%O$t$1 %C14(%O$2%C14)%C はチャンネル $3 から離れました. " +#~ "%C14(%O$4%C14)%O" + +#~ msgid "-%C3-%C9-%O$tYou have new mail ($1 messages, $2 bytes total)." +#~ msgstr "-%C3-%C9-%O$t新しいメールがあります ($1 メッセージ, 全 $2 バイト)。" + +#~ msgid "%C08,02 %B-- Notify List --------------- %O" +#~ msgstr "%C08,02 %B-- 通知リスト --------------- %O" + +#~ msgid "" +#~ "%C8,2 Type To/From Status Size Pos File " +#~ "%O%010%B%C9--------------------------------------------------%O" +#~ msgstr "" +#~ "%C8,2 タイプ To/From ステータス サイズ 位置 ファイル " +#~ "%O%010%B%C9--------------------------------------------------%O" + +#~ msgid "Perform a periodic mail check." +#~ msgstr "定期的にメールチェックを行う." + +#~ msgid "/SCPINFO, Lists some information about current Perl bindings\n" +#~ msgstr "/SCPINFO, 現在の Perl バインドについての情報リストを表示する\n" + +#~ msgid "Registered Scripts:\n" +#~ msgstr "登録されているスクリプト:\n" + +#~ msgid "Inbound Handlers:\n" +#~ msgstr "Inbound ハンドラ:\n" + +#~ msgid "Command Handlers:\n" +#~ msgstr "コマンド・ハンドラ:\n" + +#~ msgid "Print Handlers:\n" +#~ msgstr "ハンドラの表示:\n" + +#~ msgid "/LISTDLL, Lists all currenly loaded plugins\n" +#~ msgstr "/LISTDLL, 現在読み込まれているプラグインリストを表示する.\n" + +#~ msgid "{to|from}" +#~ msgstr "{宛先|送り元}" + +#~ msgid "Ok" +#~ msgstr "了解" + +#~ msgid "Unload All Plugins" +#~ msgstr "すべてのプラグインをアンロード" + +#~ msgid "Background XPM:" +#~ msgstr "背景の絵(XPM):" + +#~ msgid "DIRECTORY" +#~ msgstr "ディレクトリ" + +#~ msgid "Close this tab/window" +#~ msgstr "このタブ/ウィンドウを閉じる" + +#~ msgid "Auto Open Dialog Windows" +#~ msgstr "ダイアログ・ウィンドウを自動的に開く" + +#~ msgid "Tint Settings" +#~ msgstr "色合い設定" + +#~ msgid "Info text" +#~ msgstr "情報テキスト" + +#~ msgid "(disabled)" +#~ msgstr "(無効)" + +#~ msgid "%C19>%O$1%C19<%O$t$2%O" +#~ msgstr "%C19>%O$1%C19<%O$t$2%O" + +#~ msgid "%C22*%O$t%C28[%O$1%C28] %O$2" +#~ msgstr "%C22*%O$t%C28[%O$1%C28] %O$2" + +#~ msgid "Delete All" +#~ msgstr "すべて削除" + +#~ msgid "Server: %s" +#~ msgstr "サーバー: %s" + +#~ msgid "Real na_me:" +#~ msgstr "本名(_M):" diff --git a/etc/wyatt8740/po/kn.po b/etc/wyatt8740/po/kn.po new file mode 100644 index 0000000..c49a0be --- /dev/null +++ b/etc/wyatt8740/po/kn.po @@ -0,0 +1,5542 @@ +# This file is put in the public domain. +# Translation of xchat-2.8.6 in to Kannada. +# Copyright(C) 2010 THE xchat.po'S +# This file is distributed under the same license as the xchat package. +# Shankar Prasad <svenkate@redhat.com>, 2010. +msgid "" +msgstr "" +"Project-Id-Version: xchat-2.8.6 \n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2010-03-14 00:03+0530\n" +"Last-Translator: Shankar Prasad <svenkate@redhat.com>\n" +"Language-Team: Kannada <debian-l10n-kannada@lists.debian.org>\n" +"Language: kn\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "~/.xchat2 ಅನ್ನು ರಚಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "ನಾನು ಕಾರ್ಯನಿರತವಾಗಿದ್ದೇನೆ" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "ಹೊರಹೋಗಲಾಗುತ್ತಿದೆ" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* IRC ಅನ್ನು ನಿರ್ವಾಹಕರಾಗಿ ಚಲಾಯಿಸುವುದು ಮೂರ್ಖತನ! \n" +" ನೀವು ಒಂದು ಬಳಕೆದಾರ ಖಾತೆಯನ್ನು ರಚಿಸಿ ನಂತರ ಒಳಕ್ಕೆ ಪ್ರವೇಶಿಸಬೇಕು.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "ಕಾಯಲಾಗುತ್ತಿದೆ" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "ಸಕ್ರಿಯ" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "ವಿಫಲವಾಗಿದೆ" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "ಆಯಿತು" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "ಸಂಪರ್ಕಿತಗೊಂಡಿದೆ" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "ನಿಲ್ಲಿಸಿದೆ" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "%s ಅನ್ನು ನಿಲುಕಿಸಕೊಳ್ಳಲು ಸಾಧ್ಯವಿಲ್ಲ\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "ದೋಷ" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s ರವರು \"%s\" ಅನ್ನು ನೀಡುತ್ತಿದ್ದಾರೆ. ನೀವು ಸ್ವೀಕರಿಸಲು ಬಯಸುತ್ತೀರೆ?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "ಯಾವುದೆ ಸಕ್ರಿಯ DCCಗಳಿಲ್ಲ\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "ಹೌದು " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "ಇಲ್ಲ " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "ನಿಮ್ಮತ್ತ %s ಇಂದ CTCP ಹರಿಸುತ್ತಿದ್ದಾರೆ, %s ಅನ್ನು ಆಲಕ್ಷಿಸಲಾಗುತ್ತಿದೆ\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "" +"ನಿಮ್ಮತ್ತ %s ಇಂದ MSG ಮಹಾಪೂರ ಹರಿದುಬರುತ್ತಿದೆ, gui_auto_open_dialog ಅನ್ನು OFF ಗೆ " +"ಬದಲಾಯಿಸಲಾಗುತ್ತಿದೆ.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s ಆನ್‌ಲೈನ್\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s ಆಫ್‍ಲೈನ್\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "ಯಾವುದೆ ಚಾನಲ್‌ಗೆ ಸೇರ್ಪಡೆಗೊಂಡಿಲ್ಲ. /join #<channel> ಅನ್ನು ಪ್ರಯತ್ನಿಸಿ ನೋಡಿ\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "ಸಂಪರ್ಕಿತಗೊಂಡಿಲ್ಲ. /server <host> [<port>] ಅನ್ನು ಪ್ರಯತ್ನಿಸಿ ನೋಡಿ\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "ಈಗಾಗಲೆ ಆಚೆ ಹೋಗಿದ್ದಾರೆ ಎಂದು ಗುರುತು ಹಾಕಲಾಗಿದೆ: %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "ಮರಳಿಬಂದಿದ್ದಾರೆ ಎಂದು ಈಗಾಗಲೆ ಗುರುತುಹಾಕಲಾಗಿದೆ.\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "ಚಲಾಯಿಸಲು ನನಗೆ /bin/sh ನ ಅಗತ್ಯವಿದೆ!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "ಲಭ್ಯವಿರುವ ಆಜ್ಞೆಗಳು:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "ಬಳಕೆದಾರರಿಂದ ಸೂಚಿಸಲಾದ ಆಜ್ಞೆಗಳು:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "ಪ್ಲಗ್‌ಇನ್‌ನಿಂದ ಸೂಚಿಸಲಾದ ಆಜ್ಞೆಗಳು:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ /HELP <command> ಅನ್ನು, ಅಥವ /HELP -l ಅನ್ನು ಪ್ರಯತ್ನಿಸಿ" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "'%s' ಎಂಬ ಆಜ್ಞಾತ ಆಜ್ಞೆಯನ್ನು ಆಲಕ್ಷಿಸಲಾಗಿದೆ." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "ಅಂತಹ ಯಾವುದೆ ಪ್ಲಗ್‌ಇನ್ ಕಂಡುಬಂದಿಲ್ಲ.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "ಆ ಪ್ಲಗ್‌ಇನ್ ಲೋಡ್ ಆಗಲು ನಿರಾಕರಿಸಿದೆ.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "" +"ADDBUTTON <name> <action>, ಇದು ಬಳಕೆದಾರ ಪಟ್ಟಿಯಲ್ಲಿ ಒಂದು ಗುಂಡಿಯನ್ನು ಸೇರಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <cmd>, ನೀವು ಇರುವ ಎಲ್ಲಾ ಚಾನಲ್‌ಗೂ ಒಂದು ಆಜ್ಞೆಯನ್ನು ಕಳುಹಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHANL <cmd>, ನೀವು ಇರುವ ಎಲ್ಲಾ ಚಾನಲ್‌ಗೂ ಒಂದು ಆಜ್ಞೆಯನ್ನು ಕಳುಹಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <cmd>, ನೀವು ಇರುವ ಎಲ್ಲಾ ಪರಿಚಾರಕಕ್ಕೂ ಒಂದು ಆಜ್ಞೆಯನ್ನು ಕಳುಹಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<reason>], ಆಚೆ ಹೋಗಿದ್ದಾರೆ ಎಂದು ಸೂಚಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "BACK, ಮರಳಿದ್ದಾರೆ ಎಂದು ಗುರುತುಹಾಕುತ್ತದೆ (ಆಚೆ ಎಂದಲ್ಲ)" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <mask> [<bantype>], ಮುಸುಕಿಗೆ(ಮಾಸ್ಕ್) ತಾಳೆಯಾಗುವ ಪ್ರಸಕ್ತ ಚಾನಲ್‌ನಲ್ಲಿನ ಎಲ್ಲರನ್ನೂ " +"ನಿರ್ಬಂಧಿಸಲಾಗುತ್ತದೆ. ಅವರು ಈಗಾಗಲೆ ಚಾನಲ್‌ನಲ್ಲಿದ್ದಲ್ಲಿ ಇದು ಅವರನ್ನು ಹೊರಹಾಕುವುದಿಲ್ಲ (chanop " +"ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:3506 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <variable> [<value>]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "" +"CLEAR [ALL|HISTORY], ಪ್ರಸಕ್ತ ಪಠ್ಯ ವಿಂಡೊವನ್ನು ಅಥವ ಆಜ್ಞೆಯ ಇತಿಹಾಸವನ್ನು ಅಳಿಸಿಹಾಕುತ್ತದೆ" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, ಪ್ರಸಕ್ತ ವಿಂಡೊ/ಹಾಳೆಯನ್ನು ಮುಚ್ಚುತ್ತದೆ" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" +"COUNTRY [-s] <code|wildcard>, ಒಂದು ದೇಶದ ಸಂಕೇತವನ್ನು ಹುಡುಕುತ್ತದೆ, ಉದಾ: au = " +"australia" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <nick> <message>, ನಿಗದಿತ ಅಡ್ಡಹೆಸರಿಗೆ CTCP ಸಂದೇಶವನ್ನು ಕಳುಹಿಸುತ್ತದೆ, ಸಾಮಾನ್ಯ " +"ಸಂದೇಶಗಳೆಂದರೆ VERSION ಹಾಗು USERINFO ಆಗಿರುತ್ತದೆ" + +#: src/common/outbound.c:3516 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "" +"CYCLE [<channel>], ಪ್ರಸಕ್ತ ಅಥವ ಸೂಚಿಸಲಾದ ಚಾನಲ್‌ನಿಂದ ನಿರ್ಗಮಿಸಿ ನಂತರ ತಕ್ಷಣ ಮರಳಿ " +"ಸೇರಿಕೊಳ್ಳಲಾಗುತ್ತದೆ" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <nick> - ಕಳುಹಿಸಲಾದ ಕಡತವನ್ನು ಸ್ವೀಕರಿಸಿ\n" +"DCC SEND [-maxcps=#] <nick> [ಕಡತ] - ನಿಗದಿತ ವ್ಯಕ್ತಿಗೆ ಕಡತವನ್ನು ಕಳುಹಿಸಿ\n" +"DCC PSEND [-maxcps=#] <nick> [ಕಡತ] - ನಿಷ್ಕ್ರಿಯ ಕ್ರಮದಲ್ಲಿ ಒಂದು ಕಡತವನ್ನು ಕಳುಹಿಸಿ\n" +"DCC LIST - DCC ಪಟ್ಟಿಯನ್ನು ತೋರಿಸಿ\n" +"DCC CHAT <nick> - ನಿಗದಿತ ವ್ಯಕ್ತಿಯೊಂದಿಗೆ DCC CHAT ನಡೆಸಿ\n" +"DCC PCHAT <nick> - ನಿಗದಿತ ವ್ಯಕ್ತಿಯೊಂದಿಗೆ ನಿಷ್ಕ್ರಿಯ ಕ್ರಮದಲ್ಲಿ " +"DCC CHAT ನಡೆಸಿ\n" +"DCC CLOSE <type> <nick> <file> ಉದಾಹರಣೆ:\n" +" /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <nick>, ಪ್ರಸಕ್ತ ಚಾನಲ್‌ನಲ್ಲಿ ಅಡ್ಡಹೆಸರಿನಿಂದ chanhalf-op ಸ್ಥಿತಿಯನ್ನು ತೆಗೆದು " +"ಹಾಕುತ್ತದೆ (chanop ನ ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <name>, ಇದು ಬಳಕೆದಾರ ಪಟ್ಟಿಯಲ್ಲಿನ ಒಂದು ಗುಂಡಿಯನ್ನು ಅಳಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <nick>, ಪ್ರಸಕ್ತ ಚಾನಲ್‌ನಲ್ಲಿ ಅಡ್ಡಹೆಸರಿನಿಂದ chanop ಸ್ಥಿತಿಯನ್ನು ತೆಗೆದು ಹಾಕುತ್ತದೆ " +"(chanop ನ ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <nick>, ಪ್ರಸಕ್ತ ಚಾನಲ್‌ನಲ್ಲಿ ಅಡ್ಡಹೆಸರಿನಿಂದ ಧ್ವನಿ ಸ್ಥಿತಿಯನ್ನು ತೆಗೆದು ಹಾಕುತ್ತದೆ " +"(chanop ನ ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, ಪರಿಚಾರಕದಿಂದ ಸಂಪರ್ಕವನ್ನು ಕಡಿದು ಹಾಕುತ್ತದೆ" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <nick|host|ip>, ಒಬ್ಬ ಬಳಕೆದಾರರ IP ಸಂಖ್ಯೆಯನ್ನು ತಿಳಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <text>, ಪಠ್ಯವನ್ನು ನಿಮಗೆ ಮಾತ್ರ ಕಾಣಿಸುವಂತೆ ಗೋಚರಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <command>, ಆಜ್ಞೆಯನ್ನು ಚಲಾಯಿಸುತ್ತದೆ. -o ಫ್ಲಾಗ್‌ ಅನ್ನು ಬಳಸಲಾಗಿದ್ದರೆ ಔಟ್‌ಪುಟ್ " +"ಅನ್ನು ಪ್ರಸಕ್ತ ಚಾನಲ್‌ಗೆ ಕಳುಹಿಸಲಾಗುತ್ತದೆ, ಇಲ್ಲದೆ ಹೋದಲ್ಲಿ ಪ್ರಸಕ್ತ ಪಠ್ಯ ಚೌಕಕ್ಕೆ ಮುದ್ರಿಸಲಾಗುತ್ತದೆ" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, ಪ್ರಕ್ರಿಯೆ SIGCONT ಅನ್ನು ಕಳುಹಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], ಚಾಲನೆಯಲ್ಲಿರುವ exec ಅನ್ನು ಅಂತ್ಯಗೊಳಿಸುತ್ತದೆ. -9 ಅನ್ನು ನೀಡಲಾಗಿದ್ದರೆ " +"SIGKILL ಆಗುತ್ತದೆ" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECCONT, ಪ್ರಕ್ರಿಯೆ SIGSTOP ಅನ್ನು ಕಳುಹಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, ಪ್ರಕ್ರಿಯೆಗಳ stdin ಗೆ ದತ್ತಾಂಶವನ್ನು ಕಳುಹಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, ಇದು ಪ್ರಸಕ್ತ ಪರಿಚಾರಕದ ಕಳುಹಿಸುವ ಸರತಿಯನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" +"GATE <host> [<port>], ಒಂದು ಆತಿಥೇಯದ ಮೂಲಕ ಪ್ರಾಕ್ಸಿಗಳು, ಪೂರ್ವನಿಯೋಜಿತ ಸಂಪರ್ಕಸ್ಥಾನವು " +"23 ಆಗಿರುತ್ತದೆ" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <nick> <password>, ghost ಮಾಡಲಾದ ಅಡ್ಡಹೆಸರನ್ನು ಕೊಲ್ಲುತ್ತದೆ" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" +"HOP <nick>, ಅಡ್ಡಹೆಸರಿಗೆ chanhalf-op ಸ್ಥಿತಿಯನ್ನು ಒದಗಿಸುತ್ತದೆ (chanop ನ " +"ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <password>, nickserv ನಿಮ್ಮನ್ನು ಗುರುತಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <mask> <types..> <options..>\n" +" mask - ಕಡೆಗಣಿಸಬೇಕಿರುವ ಆತಿಥೇಯ ಮುಸುಕು, ಉದಾ: *!*@*.aol.com\n" +" types - ಕಡೆಗಣಿಸಬೇಕಿರುವ ದತ್ತಾಂಶದ ಬಗೆಗಳು, ಇವುಗಳಲ್ಲಿ ಒಂದು ಅಥವ ಎಲ್ಲವೂ:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <nick> [<channel>], ನಿಗದಿತ ವ್ಯಕ್ತಿಯನ್ನು ಚಾನಲ್‌ಗೆ ಆಮಂತ್ರಿಸುತ್ತದೆ, " +"ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಪ್ರಸಕ್ತ ಚಾನಲ್‌ ಆಗಿರುತ್ತದೆ (chanop ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <channel>, ಚಾನಲ್‌ಗೆ ಸೇರ್ಪಡೆಗೊಳ್ಳುತ್ತದೆ" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <nick>, ನಿಗದಿತ ವ್ಯಕ್ತಿಯನ್ನು ಪ್ರಸಕ್ತ ಚಾನಲ್‌ನಿಂದ ಹೊರಹಾಕುತ್ತದೆ (chanop ನ " +"ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <nick>, ನಿಗದಿತ ವ್ಯಕ್ತಿಯನ್ನು ಪ್ರಸಕ್ತ ಚಾನಲ್‌ನಲ್ಲಿ ಮೊದಲು ನಿಷೇಧಿಸಿ ನಂತರ " +"ಹೊರಹಾಕುತ್ತದೆ (chanop ನ ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, ಹೊಸ ಲ್ಯಾಗ್ ಪರಿಶೀಲನೆಯನ್ನು ಒತ್ತಾಯಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <string>, ಬಫರಿನಲ್ಲಿನ ಒಂದು ವಾಕ್ಯಕ್ಕಾಗಿ ಹುಡುಕುತ್ತದೆ" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <file>, ಪ್ಲಗ್‌ಇನ್ ಅಥವ ಸ್ಕ್ರಿಪ್ಟನ್ನು ಲೋಡ್ ಮಾಡುತ್ತದೆ" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, ಪ್ರಸಕ್ತ ಚಾನಲ್‌ನಲ್ಲಿನ ಎಲ್ಲಾ chanhalf-op ಗಳನ್ನು ಒಟ್ಟಿಗೆ deop ಮಾಡುತ್ತದೆ (chanop " +"ನ ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, ಪ್ರಸಕ್ತ ಚಾನಲ್‌ನಲ್ಲಿನ ಎಲ್ಲಾ chanop ಗಳನ್ನು ಒಟ್ಟಿಗೆ deop ಮಾಡುತ್ತದೆ (chanop ನ " +"ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <action>, ಕ್ರಿಯೆಯನ್ನು ಪ್ರಸಕ್ತ ಚಾನಲ್‌ಗೆ ಕಳುಹಿಸುತ್ತದೆ (ಕ್ರಿಯೆಗಳನ್ನು ಮೂರನೆ ವ್ಯಕ್ತಿ " +"ಹೇಳುವಂತೆ ಬರೆಯಲಾಗುತ್ತದೆ, ಉದಾ., /me jumps)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, ನಿಮ್ಮನ್ನು ಹೊರತು ಪಡಿಸಿ ಎಲ್ಲರನ್ನೂ ಪ್ರಸಕ್ತ ಚಾನಲ್‌ನಿಂದ ಹೊರಹಾಕುತ್ತದೆ (chanop ನ " +"ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, ಚಾನಲ್‌ನಲ್ಲಿನ ಎಲ್ಲಾ ಬಳಕೆದಾರರಿಗೂ ಒಟ್ಟಿಗೆ op ಮಾಡಲಾಗುತ್ತದೆ (chanop ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <nick> <message>, ಒಂದು ಖಾಸಗಿ ಸಂದೇಶವನ್ನು ಕಳುಹಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, ಪ್ರಸಕ್ತ ಚಾನಲ್‌ನಲ್ಲಿನ ಅಡ್ಡಹೆಸರುಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <nick> <message>, ಒಂದು CTCP ಸೂಚನೆಯನ್ನು ಕಳುಹಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <hostname> [<port>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <nickname>, ನಿಮ್ಮ ಅಡ್ಡಹೆಸರನ್ನು ಹೊಂದಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <nick/channel> <message>, ಒಂದು ಸೂಚನೆಯನ್ನು ಕಳುಹಿಸುತ್ತದೆ. ಸೂಚನೆಗಳೆಂದರೆ " +"ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಪ್ರತಿಕ್ರಿಯಿಸಬೇಕಿರುವ ಸಂದೇಶಗಳಾಗಿರುತ್ತವೆ" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n network1[,network2,...]] [<nick>], ನಿಮ್ಮ ಸೂಚನಾ ಪಟ್ಟಿಯನ್ನು ತೋರಿಸುತ್ತದೆ " +"ಅಥವ ಅದಕ್ಕೆ ನಿಶ್ಚಿತ ವ್ಯಕ್ತಿಯನ್ನು ಸೇರಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" +"OP <nick>, ಅಡ್ಡಹೆಸರಿಗೆ chanop ಸ್ಥಿತಿಯನ್ನು ನೀಡುತ್ತದೆ (chanop ನ ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" +"PART [<channel>] [<reason>], ಚಾನಲ್‌ನಿಂದ ಹೊರಹೋಗಲಾಗುತ್ತದೆ, ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಪ್ರಸಕ್ತ " +"ಚಾನಲ್ ಆಗಿರುತ್ತದೆ" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "" +"PING <nick | channel>, ಅಡ್ಡಹೆಸರಿಗೆ ಅಥವ ಚಾನಲ್‌ಗೆ CTCP ಪಿಂಗ್‌ಗಳನ್ನು ಕಳುಹಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "" +"QUERY [-nofocus] <nick>, ನಿಶ್ಚಿತ ವ್ಯಕ್ತಿಯೊಂದಿಗೆ privmsg ವಿಂಡೊವನ್ನು ತೆರೆಯುತ್ತದೆ" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<reason>], ಪರಿಚಾರಕದಿಂದ ಸಂಪರ್ಕವನ್ನು ಕಡಿದು ಹಾಕುತ್ತದೆ" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <text>, ಇದು ಪಠ್ಯವನ್ನು ಕಚ್ಛಾ ರೂಪದಲ್ಲಿ ಪರಿಚಾರಕಕ್ಕೆ ಕಳುಹಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], ಪ್ರಸಕ್ತ ಪರಿಚಾರಕದೊಂದಿಗೆ ಮರಳಿ " +"ಸಂಪರ್ಕ ಹೊಂದಲು /RECONNECT ಬಳಸಬಹುದು ಅಥವ ಲಭ್ಯವಿರುವ ಎಲ್ಲಾ ಮುಕ್ತ ಪರಿಚಾರಕಗಳೊಂದಿಗೆ " +"ಸಂಪರ್ಕಸಾಧಿಸಲು /RECONNECT ALL ಅನ್ನು ಬಳಸಬಹುದು" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<host>] [<port>] [<password>], ಪ್ರಸಕ್ತ ಪರಿಚಾರಕದೊಂದಿಗೆ ಮರಳಿ ಸಂಪರ್ಕ " +"ಹೊಂದಲು /RECONNECT ಬಳಸಬಹುದು ಅಥವ ಲಭ್ಯವಿರುವ ಎಲ್ಲಾ ಮುಕ್ತ ಪರಿಚಾರಕಗಳೊಂದಿಗೆ " +"ಸಂಪರ್ಕಸಾಧಿಸಲು /RECONNECT ALL ಅನ್ನು ಬಳಸಬಹುದು" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <text>, irc ಪರಿಚಾರಕದಂತೆ ಪಡೆದುಕೊಂಡಿದೆಯೊ ಎಂಬಂತೆ ಕಚ್ಛಾದತ್ತಾಂಶವನ್ನು xchat ಗೆ " +"ಕಳುಹಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <text>, ಪ್ರಸಕ್ತ ವಿಂಡೊದಲ್ಲಿ ಪಠ್ಯವನ್ನು ವಸ್ತುವಾಗಿ ಪರಿವರ್ತಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <nick> [<file>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <host> <port> <channel>, ಒಂದು ಚಾನಲ್‌ಗೆ ಸಂಪರ್ಕಿತಗಗೊಂಡು ನಂತರ " +"ಸೇರ್ಪಡೆಗೊಳ್ಳುತ್ತದೆ" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN <host> <port> <channel>, ಒಂದು ಚಾನಲ್‌ಗೆ ಸಂಪರ್ಕಿತಗಗೊಂಡು ನಂತರ " +"ಸೇರ್ಪಡೆಗೊಳ್ಳುತ್ತದೆ" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <host> [<port>] [<password>], ಪರಿಚಾರಕಕ್ಕೆ ಸಂಪರ್ಕಿತಗೊಳ್ಳುತ್ತದೆ, " +"ಸಾಮಾನ್ಯ ಸಂಪರ್ಕಗಳಿಗಾಗಿ 6667 ಆಗಿರುತ್ತದೆ ಹಾಗು ssl ಸಂಪರ್ಕಗಳಿಗಾಗಿ 9999 ಆಗಿರುತ್ತದೆ" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <host> [<port>] [<password>], ಒಂದು ಪರಿಚಾರಕಕ್ಕೆ ಸಂಪರ್ಕಿತಗೊಳ್ಳುತ್ತದೆ, " +"ಪೂರ್ವನಿಯೋಜಿತ ಸಂಪರ್ಕಸ್ಥಾನವು 6667 ಆಗಿರುತ್ತದೆ" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <variable> [<value>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<position>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<topic>], ಸೂಚಿಸಿದ ವಿಷಯವನ್ನು ಹೊಂದಿಸುತ್ತದೆ, ಅಥವ ಪ್ರಸಕ್ತ ವಿಷಯವನ್ನು ತೋರಿಸುತ್ತದೆ " + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] ಎರಡು ಚಿಹ್ನೆಗಳ ನಡುವೆ ಟ್ರೇಯನ್ನು " +"ಮಿನುಗಿಸುತ್ತದೆ.\n" +"TRAY -f <filename> ಟ್ರೇ ಅನ್ನು ಒಂದು ನಿಶ್ಚಿತ ಚಿಹ್ನೆಗೆ " +"ಹೊಂದಿಸುತ್ತದೆ.\n" +"TRAY -i <number> ಒಂದು ಆಂತರಿಕ ಚಿಹ್ನೆಯೊಂದಿಗೆ ಟ್ರೇಯನ್ನು " +"ಮಿನುಗಿಸುತ್ತದೆ.\n" +"TRAY -t <text> ಟ್ರೇಯ ಸಲಹೆಉಪಕರಣವನ್ನು ಹೊಂದಿಸುತ್ತದೆ.\n" +"TRAY -b <title> <text> ಟ್ರೇ ಬಲೂನ್ ಅನ್ನು ಹೊಂದಿಸುತ್ತದೆ." + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "" +"UNBAN <mask> [<mask>...], ಸೂಚಿತ ಮುಸುಕುಗಳ(ಮಾಸ್ಕ್) ನಿಶೇಧವನ್ನು ರದ್ದುಗೊಳಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <mask> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <name>, ಪ್ಲಗ್‌ಇನ್ ಅಥವ ಸ್ಕ್ರಿಪ್ಟನ್ನು ಅನ್‌ಲೋಡ್ ಮಾಡುತ್ತದೆ" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, ಒಂದು URL ಅನ್ನು ನಿಮ್ಮ ಜಾಲವೀಕ್ಷಕದಲ್ಲಿ ತೆರೆಯುತ್ತದೆ" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <nick1> <nick2> ಇತರೆ, ಚಾನಲ್‌ನ ಬಳಕೆದಾರಪಟ್ಟಿಯಲ್ಲಿ " +"ಅಡ್ಡಹೆಸರನ್ನು೯(ಗಳನ್ನು) ಹೈಲೈಟ್ ಮಾಡುತ್ತದೆ" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "" +"VOICE <nick>, ಬೇರೆಯೊಬ್ಬರಿಗೆ ಧ್ವನಿ ಸ್ಥಿತಿಯನ್ನು ಒದಗಿಸುತ್ತದೆ (chanop ನ ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <message>, ಎಲ್ಲಾ ಚಾನಲ್‌ಗಳಲ್ಲಿಯೂ ಸಂದೇಶವನ್ನು ಬರೆಯುತ್ತದೆ" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <message>, ಪ್ರಸಕ್ತ ಚಾನಲ್‌ನಲ್ಲಿನ ಎಲ್ಲಾ chanops ಸಂದೇಶವನ್ನು ಕಳುಹಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "ಬಳಕೆ: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"ಆ ಆಜ್ಞೆಗೆ ಯಾವುದೆ ನೆರವು ಲಭ್ಯವಿಲ್ಲ.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "ಅಂತಹ ಯಾವುದೇ ಆಜ್ಞೆ ಇಲ್ಲ.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "ಬಳಕೆದಾರ ಆಜ್ಞೆಯಲ್ಲಿ ಸರಿಯಲ್ಲದ ಆರ್ಗುಮೆಂಟ್‌ಗಳು.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "ಬಹಳಷ್ಟು ಪುನರಾವರ್ತಿತ ಬಳಕೆದಾರ ಆಜ್ಞೆಗಳು, ನಿಲ್ಲಿಸಲಾಗುತ್ತಿದೆ." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "ಗೊತ್ತಿಲ್ಲದ ಆಜ್ಞೆ. /help ಅನ್ನು ಪ್ರಯತ್ನಿಸಿ\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "xchat_plugin_init ಸಂಕೇತವಾಗಿಲ್ಲ; ಇದು ನಿಜವಾಗಿಯೂ ಒಂದು xchat ಪ್ಲಗ್‌ಇನ್ ಆಗಿದೆಯೆ?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "ಇದು ಒಂದು SSL ಸಮರ್ಥವಾದ ಪರಿಚಾರಕ ಹಾಗು ಸಂಪರ್ಕಸ್ಥಾನ ಎಂದು ನೀವು ಖಚಿತವೆ?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"%s ಎಂಬ ಆತಿಥೇಯ ಹೆಸರನ್ನು ಪರಿಹರಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ\n" +"ನಿಮ್ಮ IP ಸಿದ್ಧತೆಗಳನ್ನು ಪರಿಶೀಲಿಸಿ!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "ಪ್ರಾಕ್ಸಿ ಚಲನೆಯು ವಿಫಲಗೊಂಡಿದೆ.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "%s ನಲ್ಲಿ ಮುಂದಿನ ಪರಿಚಾರಕಕ್ಕೆ ಪ್ರಯತ್ನಿಸಲಾಗುತ್ತದೆ...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"ಎಚ್ಚರಿಕೆ: \"%s\" ಅಕ್ಷರದ ಸೆಟ್‌ ತಿಳಿದಿಲ್ಲ. %s ಎಂಬ ಜಾಲಬಂಧಕ್ಕೆ ಯಾವುದೆ ಮಾತುಕತೆಯನ್ನು " +"ಅನ್ವಯಿಸಲಾಗಿಲ್ಲ." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 ಅನ್ನು ಸೂಚನೆಯ ಪಟ್ಟಿಗೆ ಸೇರಿಸಲಾಗಿದೆ." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 ನಿಷೇಧ ಪಟ್ಟಿ:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$t%C26 %B$1 %O ಅನ್ನು ಸೇರಲು ಸಾಧ್ಯವಿಲ್ಲ(ನಿಮ್ಮನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 ರವರು $2 ಎಂದು ಕರೆಯಲ್ಪಡುತ್ತಾರೆ" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 ರವರು $2 ನಲ್ಲಿ ನಿಶೇಧಿಸಿದ್ದಾರೆ" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tಚಾನಲ್ $1 ಅನ್ನು $2 ನಲ್ಲಿ ನಿರ್ಮಿಸಲಾಗಿದೆ" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "" +"%C22*%O$t%C26$1%O ರವರು ಚಾನಲ್ ಅರೆ-ಕಾರ್ಯನಿರ್ವಾಹಕ(half-operator) ಸ್ಥಿತಿಯನ್ನು %C26 $2 " +"ಇಂದ ತೆಗೆದು ಹಾಕಿದ್ದಾರೆ" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "" +"%C22*%O$t%C26$1%O ರವರು ಚಾನಲ್ ಕಾರ್ಯನಿರ್ವಾಹಕ(half-operator) ಸ್ಥಿತಿಯನ್ನು %C26 $2 ಇಂದ " +"ತೆಗೆದು ಹಾಕಿದ್ದಾರೆ" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O ರವರು %C26 $2 ಇಂದ ಧ್ವನಿಯನ್ನು ತೆಗೆದು ಹಾಕಿದ್ದಾರೆ" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 ರವರು $2 ನಲ್ಲಿ ವಿನಾಯಿತಿಯನ್ನು ಹೊಂದಿಸಿದ್ದಾರೆ" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "" +"%C22*%O$t%C26$1%O ರವರು %C26 $2 ಗೆ ಅರೆ-ಕಾರ್ಯನಿರ್ವಾಹಕ(half-operator) ಸ್ಥಿತಿಯನ್ನು " +"ನೀಡಿದ್ದಾರೆ" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 ರವರು $2 ನಲ್ಲಿ ಆಮಂತ್ರಿಸಿದ್ದಾರೆ" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%Uಚಾನಲ್ ಬಳಕೆದಾರರ ವಿಷಯ" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 ರವರು $2$3 $4 ಗೆ ಕ್ರಮವನ್ನು ಹೊಂದಿಸುತ್ತಾರೆ" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22 $1 ವಾಹಿನಿಯ ಕ್ರಮಗಳು: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "" +"%C22*%O$t%C26$1%O ರವರು %C26 $2 ಗೆ ಕಾರ್ಯನಿರ್ವಾಹಕ(half-operator) ಸ್ಥಿತಿಯನ್ನು " +"ನೀಡಿದ್ದಾರೆ" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1ರವರು $2 ನ ಮೇಲೆ ವಿನಾಯಿತಿಯನ್ನು ತೆಗೆದು ಹಾಕಿದ್ದಾರೆ" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 ರವರು $2 ನಲ್ಲಿ ಆಮಂತ್ರಣವನ್ನು ತೆಗೆದುಹಾಕಿದ್ದಾರೆ" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 ರವರು ಚಾನಲ್ ಕೀಲಿಪದವನ್ನು ತೆಗೆದುಹಾಕಿದ್ದಾರೆ" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 ರವರು ಬಳಕೆದಾರ ಮಿತಿಯನ್ನು ತೆಗೆದುಹಾಕಿದ್ದಾರೆ" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 ರವರು ಚಾನಲ್ ಕೀಲಿಪದವನ್ನು $2 ಗೆ ಹೊಂದಿಸಿದ್ದಾರೆ" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 ರವರು ಬಳಕೆದಾರ ಮಿತಿಯನ್ನು $2 ಗೆ ಹೊಂದಿಸಿದ್ದಾರೆ" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 ರವರು $2 ನಲ್ಲಿ ನಿಶೇಧವನ್ನು ತೆಗೆದುಹಾಕಿದ್ದಾರೆ" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O ರವರು %C26 $2 ಗೆ ಧ್ವನಿಯನ್ನು ನೀಡಿದ್ದಾರೆ" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22ಸಂಪರ್ಕಿತಗೊಂಡಿದೆ. ಈಗ ಪ್ರವೇಶಿಸಲಾಗುತ್ತಿದೆ..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22ರವರು $1 ($2) ಸಂಪರ್ಕಸಾಧನ $3%O ದೊಂದಿಗೆ ಸಂಪರ್ಕಸಾಧಿಸಿದ್ದಾರೆ..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21ಸಂಪರ್ಕವು ವಿಫಲಗೊಂಡಿದೆ. ದೋಷ: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tರವರು $2 ಇಂದ CTCP $1 ಅನ್ನು ಪಡೆದಿದ್ದಾರೆ" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tರವರು $2 ಇಂದ CTCP $1 ಅನ್ನು ಪಡೆದಿದ್ದಾರೆ ($3 ಕ್ಕೆ)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tರವರು $2 ಇಂದ CTCP $ ಶಬ್ಧವನ್ನು ಪಡೆದಿದ್ದಾರೆ" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tರವರು $2 ಇಂದ CTCP $ ಶಬ್ಧವನ್ನು ಪಡೆದಿದ್ದಾರೆ ($3ಕ್ಕೆ)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$t %C26$1%O ನೊಂದಿಗಿನ DCC CHAT ಅನ್ನು ಸ್ಥಗಿತಗೊಳಿಸಲಾಗಿದೆ." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC CHAT ಸಂಪರ್ಕವು %C26$1 %C30ದೊಂದಿಗೆ ಸಾಧಿಸಲಾಗಿದೆ[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tDCC %C26$1%O ಗಾಗಿನ CHAT ಇಲ್ಲವಾಗಿದೆ ($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$t ರವರಿಗೆ $1 ಇಂದ ಒಂದು DCC CHAT ಬಂದಿದೆ" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tರವರು $1 ಗೆ DCC CHAT ಅನ್ನು ನೀಡಲು ಬಯಸಿದ್ದಾರೆ" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tಈಗಾಗಲೆ $1 ಗೆ CHAT ಗಾಗಿ ಬಯಸಿದ್ದಾರೆ" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$t%C26 $2%O ಯೊಂದಿಗೆ DCC $1 ಸಂಪರ್ಕದ ಪ್ರಯತ್ನವು ವಿಫಲಗೊಂಡಿದೆ (err=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tರವರು $2 ಇಂದ '$1%O' ಅನ್ನು ಸ್ವೀಕರಿಸಿದ್ದಾರೆ" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 ಪ್ರಕಾರ ಗೆ/ಇಂದ ಸ್ಥಿತಿ ಗಾತ್ರ ಸ್ಥಳ ಕಡತ " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O." +"%010%C22*%O$tContents of packet: $2" +msgstr "" +"%C22*%O$t %C26$1%O ಇಂದ ಒಂದು ಸರಿಯಲ್ಲದ DCC ಮನವಿಯನ್ನು ಪಡೆದುಕೊಂಡಿದೆ." +"%010%C22*%O$tಪ್ಯಾಕೆಟ್‌ನಲ್ಲಿನ ಅಂಶಗಳು: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$t%C26 $1%O ಅನ್ನು %C26 $2 ಗೆ ನೀಡಲಾಗುತ್ತಿದೆ" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tಅಂತಹ ಯಾವುದೆ DCC ನೀಡಿಕೆ ಇಲ್ಲ." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV%C26 $2%O ಗೆ%C26 $1%O ಸ್ಥಗಿತಗೊಳಿಸಲಾಗಿದೆ." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC RECV%C26 $1%O %C26 $3%O ಇಮದ ಪೂರ್ಣಗೊಂಡಿದೆ %C30[%C26$4%O " +"cps%C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC RECV ಸಂಪರ್ಕವು %C26 ಗೆ ಸಾಧಿಸಲಾಗಿದೆ $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV%C26 $1%O %C26 $3%O ಇಂದ ವಿಫಲಗೊಂಡಿದೆ ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV: $1 ಅನ್ನು ಬರೆಯುವ ಸಲುವಾಗಿ ತೆರೆಯಲಾಗಿಲ್ಲ ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "" +"%C22*%O$t%C26 $1%C ಎಂಬ ಕಡತವು ಈಗಾಗಲೆ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ, ಬದಲಿಗೆ ಅದನ್ನು%C26 $2%O " +"ಉಳಿಸಲಾಗುತ್ತಿದೆ." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "" +"%C22*%O$t%C26$1 %Oರವರು%C26 $2 ಅನ್ನು %Cಇಂದ%C26 $3%C ಮರಳಿ ಆರಂಭಿಸುವಂತೆ ಮನವಿ " +"ಸಲ್ಲಿಸಿದ್ದಾರೆ." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC SEND%C26 $2%O ಗೆ%C26 $1%O ಸ್ಥಗಿತಗೊಳಿಸಲಾಗಿದೆ." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O ಪೂರ್ಣಗೊಂಡಿದೆ %C30[%C26$3%O cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$t%C26 $1 %C30[%O$2%C30] ನೊಂದಿಗೆ DCC SEND ಸಂಪರ್ಕವನ್ನು ಸಾಧಿಸಲಾಗಿದೆ" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O ವಿಫಲಗೊಂಡಿದೆ. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Oರವರು%C26 $2 %O(%C26$3 %Obytes) ಅನ್ನು ನೀಡಬಯಸಿದ್ದಾರೆ" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "" +"%C22*%O$tDCC $1%C26 $2 %O%C26 $3 %Cಗೆ ನಿಲ್ಲಿಸಲಾಗಿದೆ - ಸ್ಥಗಿತಗೊಳಿಸಲಾಗುತ್ತಿದೆ." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "" +"%C22*%O$tDCC $1%C26 $2 %O%C26 $3 %Oಗೆ ಕಾಲಾವಧಿ ತೀರಿದೆ - ಸ್ಥಗಿತಗೊಳಿಸಲಾಗುತ್ತಿದೆ." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 ಅನ್ನು ಸೂಚನಾ ಪಟ್ಟಿಯಿಂದ ಅಳಿಸಿಹಾಕಲಾಗುತ್ತಿದೆ." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tಸಂಪರ್ಕ ಕಡಿದುಹೋಗಿದೆ ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tನಿಮ್ಮ IP ಅನ್ನು ತಿಳಿದುಕೊಂಡಿದ್ದಾರೆ: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O ನಿಮ್ಮನ್ನು ಕಡೆಗಣಿಸುವ ಪಟ್ಟಿಗೆ ಸೇರಿಸಿದ್ದಾರೆ." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "%C26$1%O ನಲ್ಲಿ ಆಲಕ್ಷಿಸುವುದು ವಿಫಲಗೊಂಡಿದೆ." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O ಕಡೆಗಣಿಸಬೇಕಿರುವ ಪಟ್ಟಿಯಿಂದ ತೆಗೆದು ಹಾಕಿದ್ದಾರೆ." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " ಕಡೆಗಣಿಸುವ ಪಟ್ಟಿಯು ಖಾಲಿ ಇದೆ." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "" +"%C22*%O$t%C26 %B$1 %O ಅನ್ನು ಸೇರಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ(ಈ ಚಾನಲ್‌ಗೆ ಕೇವಲ ಆಮಂತ್ರಣದ ಮೇರೆಗೆ " +"ಸೇರಬಹುದು)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tನಿಮ್ಮನ್ನು%C26 $1%O by%C26 $2%C ಗೆ ಆಮಂತ್ರಿಸಲಾಗಿದೆ (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) ರವರು $2 ಗೆ ಸೇರಿದ್ದಾರೆ" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$t%C26 %B$1 %O ಅನ್ನು ಸೇರಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ(ಕೀಲಿಪದದ ಅಗತ್ಯವಿದೆ)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 ರವರು $2 ಅನ್ನು $3 ಇಂದ ಹೊರಹಾಕಿದ್ದಾರೆ ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$t $1 ರವರು ನಿಮ್ಮನ್ನು ಅಂತ್ಯಗೊಳಿಸಿದ್ದಾರೆ ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD ಅನ್ನು ಉಪೇಕ್ಷಿಸಲಾಗಿದೆ." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 ಈಗಾಗಲೆ ಬಳಕೆಯಲ್ಲಿದೆ. $2 ದೊಂದಿಗೆ ಪ್ರಯತ್ನಿಸಲಾಗುತ್ತಿದೆ..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$tಎಂಬ ಅಡ್ಡಹೆಸರು ಈಗಾಗಲೆ ಬಳಕೆಯಲ್ಲಿದೆ. ಬೇರೊಂದು ಅಡ್ಡಹೆಸರಿಗಾಗಿ /NICK ಅನ್ನು " +"ಪ್ರಯತ್ನಿಸಿ." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tಅಂತಹ ಯಾವುದೆ DCC ಇಲ್ಲ." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tಯಾವುದೆ ಪ್ರಕ್ರಿಯೆ ಚಾಲನೆಯಲ್ಲಿಲ್ಲ" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tಸೂಚನಾ ಪಟ್ಟಿ ಖಾಲಿ ಇದೆ." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B ಸೂಚನಾ ಪಟ್ಟಿ " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 ಬಳಕೆದಾರರ ಸೂಚನಾ ಪಟ್ಟಿ." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tಸೂಚನೆ: $1 ರವರು ಆಫ್‌ಲೈನಿನಲ್ಲಿದ್ದಾರೆ ($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tಸೂಚನೆ: $1 ರವರು ಆನ್‌ಲೈನಿನಲ್ಲಿದ್ದಾರೆ ($3)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) ರವರು $3 ಅನ್ನು ಬಿಟ್ಟು ಹೋಗಿದ್ದಾರೆ" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "" +"%C23*%O$t%C23$1 (%O%C23$2) ರವರು $3 ಅನ್ನು ಬಿಟ್ಟು ಹೋಗಿದ್ದಾರೆ (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$t$1 ಇಂದ ಪಿಂಗ್ ಪ್ರತ್ಯುತ್ತರ: $2 ಸೆಕೆಂಡು(ಗಳು)" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "" +"%C22*%O$t$1 ಸೆಕೆಂಡುಗಳಿಗೆ ಯಾವುದೆ ಪಿಂಗ್ ಪ್ರತ್ಯುತ್ತರವಿಲ್ಲ, ಸಂಪರ್ಕ ಕಡಿದುಹಾಕಲಾಗುತ್ತಿದೆ." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tA ಪ್ರಕ್ರಿಯೆಯು ಈಗಾಗಲೆ ಚಾಲನೆಯಲ್ಲಿದೆ" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 ರವರು ನಿರ್ಗಮಿಸಿದ್ದಾರೆ (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 %B %C30ಕ್ರಮಗಳನ್ನು ಹೊಂದಿಸುತ್ತದೆ[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/ಭಾರಿ ಹೊಡೆತಗಳು%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$%C26 $1%O ನ IP ಸಂಖ್ಯೆಗಾಗಿ ಹುಡುಕಲಾಗುತ್ತಿದೆ..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22ಸಂಪರ್ಕಿತಗೊಂಡಿದ್ದಾರೆ." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22 $1 ಗಾಗಿ ಹುಡುಕಲಾಗುತ್ತಿದೆ" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tಹಿಂದಿನ ಸಂಪರ್ಕದ ಪ್ರಯತ್ನವನ್ನು ನಿಲ್ಲಿಸಲಾಗಿದೆ (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29$1%C %C29ಗಾಗಿನ ವಿಷಯವು ಹೀಗಿದೆ: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 ರವರು ವಿಷಯವನ್ನು ಇದಕ್ಕೆ ಬದಲಾಯಿಸಿದ್ದಾರೆ: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "" +"%C29*%O$t%C29 $1%C %C29 ಗಾಗಿನ ವಿಷಯವನ್ನು $2%C %C29 ಎಂಬುದಕ್ಕೆ $3 ಇಂದ ಹೊಂದಿಸಲಾಗಿದೆ" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tಗೊತ್ತಿರದ ಆತಿಥೇಯ. ಸರಿಯಾಗಿ ನಮೂದಿಸಿದ್ದೀರೆ?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "%C22*%O$t%C26 %B$1 %O ಅನ್ನು ಸೇರಲು ಸಾಧ್ಯವಿಲ್ಲ(ಬಳಕೆದಾರ ಮಿತಿಯನ್ನು ತಲುಪಿದೆ)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26$1:%C $2 ನಲ್ಲಿನ ಬಳಕೆದಾರರು" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cರವರು ಆಚೆಹೋಗಿದ್ದಾರೆ %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %O WHOIS ಪಟ್ಟಿಯ ಕೊನೆ." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O %C26 ನಿಶ್ಚಲ $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O %C26 ನಿಶ್ಚಲ $2%O, ಪ್ರವೇಶಿಸಿದ್ದು:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" +"%C22*%O$t%C28[%O$1%C28] %Oನಿಜವಾದ ಬಳಕೆದಾರ@ಆತಿಥೇಯ%C27 $2%O, ನಿಜವಾದ IP%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19ಈಗ $2 ನಲ್ಲಿ ಮಾತನಾಡುತ್ತಿದ್ದಾರೆ" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tನಿಮ್ಮನ್ನು $2 ಇಂದ $3 ರವರು ಹೊರಗಟ್ಟಿದ್ದಾರೆ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tನೀವು $3 ಎಂಬ ಚಾನಲ್‌ನಿಂದ ನಿರ್ಗಮಿಸಿದ್ದೀರಿ" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tನೀವು $3 ಎಂಬ ಚಾನಲ್‌ನಿಂದ ನಿರ್ಗಮಿಸಿದ್ದೀರಿ (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tನೀವು%C26 $1%O ಅನ್ನು %C26 $2%O ಗೆ ಆಹ್ವಾನಿಸಿದ್ದೀರಿ (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tನಿಮ್ಮನ್ನು $2 ಎಂದು ಗುರುತಿಸಲಾಗುತ್ತಿದೆ" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "ಇಲ್ಲಿಂದ ದಾಖಲೆಯನ್ನು ಲೋಡ್ ಮಾಡಲಾಗಿದೆ" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** ದಾಖಲೆಯನ್ನು %s ಎಂಬಲ್ಲಿ ಕೊನೆಗೊಳಿಸಲಾಗಿದೆ\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** %s ಯಲ್ಲಿ ದಾಖಲೆಯನ್ನು ಆರಂಭಿಸಲಾಗಿದೆ\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* ದಾಖಲೆ ಕಡತಗಳನ್ನು ಬರೆಯುವ ಸಲುವಾಗಿ ತೆರೆಯಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ. \n" +" %s/xchatlogs ನಲ್ಲಿ ಅನುಮತಿಗಳನ್ನು ಪರಿಶೀಲಿಸಿ" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "ಎಡ ಸಂದೇಶ" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "ಬಲ ಸಂದೇಶ" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "ಸೇರ್ಪಡೆಗೊಂಡ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "ಸೇರಲಾಗುತ್ತಿರುವ ಚಾನಲ್" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "ವ್ಯಕ್ತಿಯ ಆತಿಥೇಯ ಗಣಕ" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:973 +msgid "The action" +msgstr "ಕ್ರಿಯೆ" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "ಕ್ರಮ char" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "ಗುರುತಿಸಲಾದ ಪಠ್ಯ" + +#: src/common/text.c:980 +msgid "The text" +msgstr "ಪಠ್ಯ" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "ಸಂದೇಶ" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "ಹಳೆಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "ಹೊಸ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "ವಿಷಯವನ್ನು ಬದಲಾಯಿಸಿದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "ವಿಷಯ" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "ಚಾನಲ್" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "ಹೊರಗಟ್ಟಿದವರ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "ಹೊರಹಾಕಲಾಗುತ್ತಿರುವ ವ್ಯಕ್ತಿ" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "ಚಾನಲ್" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "ಕಾರಣ" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "ಹೊರಹೋದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "ಸಮಯ" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "ರಚಿಸಿದವರು" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "ಕಾರಣ" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "ಅತಿಥೇಯ" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "ಇದು ಯಾರಿಂದ ಬಂದಿದೆ" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "x.x ವಿನ್ಯಾಸದಲ್ಲಿ ಸಮಯ (ಕೆಳಗೆ ನೋಡಿ)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "ಇದು ಹೋಗಲಿರುವ ಚಾನಲ್" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "ಧ್ವನಿ" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "CTCP ಘಟನೆ" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "ಕೀಲಿಯನ್ನು ಹೊಂದಿಸಿದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "ಕೀಲಿ" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "ಮಿತಿಯನ್ನು ಹೊಂದಿಸಿದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "ಮಿತಿ" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "op ಅನ್ನು ಮಾಡಿದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "ಯಾರಿಗೆ op ಮಾಡಲಾಯಿತೊ ಆ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "ಯಾರಿಗೆ halfop ಮಾಡಲಾಯಿತೊ ಅವರ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "halfop ಅನ್ನು ಮಾಡಿದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "ಯಾರು voice ಮಾಡಿದರೊ ಆ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "ಯಾವ ವ್ಯಕ್ತಿಗೆ ಧ್ವನಿ ನೀಡಲಾದೆಯೋ ಆ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "ನಿಶೇಧಿಸಿದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "ನಿಶೇಧ ಮುಸುಕು(ಮಾಸ್ಕ್)" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "ಕೀಲಿಯನ್ನು ತೆಗೆದು ಹಾಕಲಾಗದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "ಮಿತಿಯನ್ನು ತೆಗೆದು ಹಾಕಿದೆ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "deop ಅನ್ನು ಯಾರು ಮಾಡಿದರೊ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "ಯಾರಿಗೆ deop ಮಾಡಲಾಯಿತೊ ಆ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "dehalfop ಅನ್ನು ಮಾಡಿದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "ಯಾರಿಗೆ dehalfop ಮಾಡಲಾಯಿತೊ ಆ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "ಯಾವ ವ್ಯಕ್ತಿಗೆ devoice ಮಾಡಲಾಗಿದೆಯೊ ಆ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "devoice ಮಾಡಲ್ಪಟ್ಟ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "ಯಾವ ವ್ಯಕ್ತಿಗೆ unban ಮಾಡಲಾಗಿದೆಯೊ ಆ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "ವಿನಾಯಿತಿಯನ್ನು ಹೊಂದಿಸಿದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "ವಿನಾಯಿತಿ ಮುಸುಕು" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "ವಿನಾಯಿತಿಯನ್ನು ತೆಗೆದು ಹಾಕಿದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "ಆಮಂತ್ರಣವನ್ನು ನೀಡಿದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "ಆಮಂತ್ರಣ ಮುಸುಕು" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "ಆಮಂತ್ರಣವನ್ನು ತೆಗೆದು ಹಾಕಿದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "ಕ್ರಮವನ್ನು ಹೊಂದಿಸಿದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "ಕ್ರಮದ ಚಿಹ್ನೆಗಳು (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "ಕ್ರಮದ ಅಕ್ಷರ" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "ಇದನ್ನು ಹೊಂದಿಸಲಾದ ಚಾನಲ್‌" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "ಬಳಕೆದಾರರ ಹೆಸರು " + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "ಪೂರ್ಣ ಹೆಸರು" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "ಚಾನಲ್ ಸದಸ್ಯತ್ವ/\"IRC ಕಾರ್ಯನಿರ್ವಾಹಕರಾಗಿದ್ದಾರೆ\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "ಪರಿಚಾರಕ(ಸರ್ವರ್‍) ಮಾಹಿತಿ" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "ನಿಶ್ಚಲ ಸಮಯ" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "ಪ್ರವೇಶದ ಸಮಯ" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "ಆಚೆ ಹೋಗಲು ಕಾರಣ" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "ಸಂದೇಶ" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "ಖಾತೆ" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "ನಿಜವಾದ ಬಳಕೆದಾರ@ಆತಿಥೇಯ" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "ನಿಜವಾದ IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "ಚಾನಲ್ ಹೆಸರು" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "ಪಠ್ಯ" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "ಪರಿಚಾರಕದ ಹೆಸರು" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "ನಿಮ್ಮನ್ನು ಆಮಂತ್ರಿಸಲಾದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "ಬಳಕೆದಾರರು" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "ಬಳಕೆಯಲ್ಲಿರುವ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "ಪ್ರಯತ್ನಿಸಲಾಗುತ್ತಿರುವ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "ಸಂಪರ್ಕಸ್ಥಾನ" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "ಜಾಲಬಂಧ" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "ಕ್ರಮಗಳ ವಾಕ್ಯ" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "IP ವಿಳಾಸ" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "DCC ಬಗೆ" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "ಕಡತದ ಹೆಸರು" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "ನಿರ್ದೇಶಿತ ಕಡತದ ಹೆಸರು" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "ಮಾರ್ಗದ ಹೆಸರು" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "ಸ್ಥಾನ" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "ಗಾತ್ರ" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "DCC ವಾಕ್ಯ" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "ಸೂಚನಾ ಅಂಶಗಳ ಸಂಖ್ಯೆ" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "ಹಳೆಯ ಕಡತದ ಹೆಸರು" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "ಹೊಸ ಕಡತದ ಹೆಸರು" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "ಸ್ವೀಕರಿಸುವವರು" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "ಅತಿಥೇಯಮುಸುಕು" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "ಆತಿಥೇಯಗಣಕ" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "ಪ್ಯಾಕೆಟ್" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "ಸೆಕೆಂಡುಗಳು" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "ಆಮಂತ್ರಿತಗೊಂಡ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "ನಿಶೇಧಮುಸುಕು" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "ನಿಶೇಧವನ್ನು ವಿಧಿಸಿದವರು" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "ನಿಶೇಧದ ಸಮಯ" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"ಘಟನೆ %s ಅನ್ನು ಪಾರ್ಸ್ ಮಾಡುವಲ್ಲಿ ದೋಷ ಉಂಟಾಗಿದೆ.\n" +"ಪೂರ್ವನಿಯೋಜಿತವನ್ನು ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"ಧ್ವನಿ ಕಡತವನ್ನು ಓದಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "ದೂರಸ್ಥ ಅತಿಥೇಯವು ಸಾಕೆಟ್ ಅನ್ನು ಮುಚ್ಚಿದೆ" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "ಸಂಪರ್ಕವನ್ನು ನಿರಾಕರಿಸಲಾಗಿದೆ" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "ಅತಿಥೇಯಕ್ಕೆ ಯಾವುದೆ ಮಾರ್ಗವಿಲ್ಲ" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "ಸಂಪರ್ಕದ ಸಮಯ ಮೀರಿದೆ" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "ಆ ವಿಳಾಸವನ್ನು ನಿಯೋಜಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "ಪೀರ್ ಇಂದ ಸಂಪರ್ಕವನ್ನು ಮರಳಿ ಹೊಂದಿಸಲಾಗಿದೆ" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "ಅಸೆನ್ಶನ್ ದ್ವೀಪ" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "ಅಂಡೋರ" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "ಯುನೈಟೆಡ್ ಅರಬ್ ಎಮಿರೈಟ್ಸ್‍" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "ಅಫ್ಘಾನಿಸ್ಥಾನ್" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "ಆಂಟಿಗುವಾ ಹಾಗು ಬಾರ್ಬುಡ" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "ಆಂಗ್ವಿಲ್ಲಾ" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "ಅಲ್ಬೇನಿಯಾ" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "ಅರ್ಮೇನಿಯಾ" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "ನೆದರ್ಲ್ಯಾಂಡ್ಸ್‍ ಆಂಟಿಲ್ಲಿಸ್" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "ಅಂಗೋಲಾ" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "ಅಂಟಾರ್ಟಿಕಾ" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "ಅರ್ಜೆಂಟಿನಾ" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "ರಿವರ್ಸ್ DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "ಅಮೇರಿಕನ್ ಸಮೋವಾ" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "ಆಸ್ಟ್ರಿಯಾ" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "ನ್ಯಾಟೊ ಫಿಯೆಲ್" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "ಆಸ್ಟ್ರೇಲಿಯಾ" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "ಅರುಬಾ" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "ಅಲಂದ್ ದ್ವೀಪಗಳು" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "ಅಝರ್ಬೈಜಾನ್" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "ಬೋಸ್ನಿಯಾ ಹಾಗು ಹರ್ಝೆಗೋವಿನಾ" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "ಬಾರ್ಬಡೋಸ್" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "ಬಾಂಗ್ಲಾದೇಶ" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "ಬೆಲ್ಜಿಯಮ್" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "ಬರ್ಕಿನಾ ಫಾಸೋ" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "ಬಲ್ಜೇರಿಯಾ" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "ಬಹರೈನ್" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "ಬುರುಂಡಿ" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "ಬಿಸ್‌ನೆಸಸ್" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "ಬೆನಿನ್" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "ಬರ್ಮುಡಾ" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "ಬ್ರೂನೈ ದರುಸೆಲಂ" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "ಬೊಲಿವಿಯಾ" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "ಬ್ರಝಿಲ್" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "ಬಹಮಾಸ್" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "ಭೂತಾನ್" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "ಬೋವೆಟ್ ಐಲ್ಯಾಂಡ್" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "ಬೋಟ್ಸ್‍ವಾನಾ" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "ಬೆಲಾರಸ್" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "ಬೆಲೀಸ್" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "ಕೆನಡ" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "ಕೊಕೊಸ್ ದ್ವೀಪಗಳು" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "ಡೆಮೊಕ್ರಟಿಕ್ ರಿಪಬ್ಲಿಕ್ ಆಫ್ ಕಾಂಗೊ" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "ಮಧ್ಯ ಆಫ್ರಿಕನ್ ರಿಪಬ್ಲಿಕ್" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "ಕಾಂಗೊ" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "ಸ್ವಿಡ್ಜರ್ಲ್ಯಾಂಡ್" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "ಕೋಟ್ ಡೆವಾಯರ್" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "ಕುಕ್ ದ್ವೀಪಗಳು" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "ಚಿಲಿ" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "ಕ್ಯಾಮೆರೂನ್‌" + +#: src/common/util.c:898 +msgid "China" +msgstr "ಚೈನ" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "ಕೊಲಂಬಿಯ" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "ಇಂಟರ್ನಿಕ್ ಕಮರ್ಶಿಯಲ್" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "ಕೋಸ್ಟಾ ರಿಕಾ" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "ಸರ್ಬಿಯ ಹಾಗು ಮಾಂಟೆನಿಗ್ರೊ" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "ಕ್ಯೂಬ" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "ಕೇಪ್ ವರ್ಡ್" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "ಕ್ರಿಸ್‌ಮಸ್ ದ್ವೀಪ" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "ಸೈಪ್ರಸ್" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "ಜೆಕ್ ರಿಪಬ್ಲಿಕ್‌" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "ಜರ್ಮನಿ" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "ಜಿಬೋಟಿ" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "ಡೆನ್ಮಾರ್ಕ್" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "ಡೊಮನಿಕಾ" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "ಡೊಮನಿಕನ್ ರಿಪಬ್ಲಿಕ್‌" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "ಅಲ್ಜೀರಿಯ" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "ಈಕ್ವೆಡಾರ್" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "ಶೈಕ್ಷಣಿಕ ಸಂಸ್ಥೆ" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "ಎಸ್ಟೊನಿಯ" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "ಈಜಿಪ್ಟ್" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "ಪಶ್ಚಿಮ ಸಹಾರ" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "ಎರಿಟ್ರಿಯಾ" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "ಸ್ಪೇನ್" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "ಇತಿಯೋಪಿಯ" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "ಯುರೋಪಿಯನ್ ಒಕ್ಕೂಟ" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "ಫಿನ್‌ಲ್ಯಾಂಡ್" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "ಫಿಜಿ" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "ಫಾಕ್‌ಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳು" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "ಮೈಕ್ರೋನೇಸಿಯ" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "ಫರೊ ದ್ವೀಪಗಳು" + +#: src/common/util.c:928 +msgid "France" +msgstr "ಫ್ರಾನ್ಸ್" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "ಗೆಬೋನ್" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "ಗ್ರೇಟ್ ಬ್ರಿಟನ್" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "ಗ್ರೆನೆಡ" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "ಜಾರ್ಜಿಯ" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "ಫ್ರೆಂಚ್ ಗಿನಿ" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "ಬ್ರಿಟಿಷ್‌ ಚಾನಲ್ ಐಲ್‌ಗಳು" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "ಘಾನ" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "ಜಿಬ್ರಾಲ್ಟರ್" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "ಗ್ರೀನ್‌ಲ್ಯಾಂಡ್‌" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "ಗೇಂಬಿಯ" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "ಗಿನಿ" + +#: src/common/util.c:940 +msgid "Government" +msgstr "ಸರಕಾರಿ" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "ಗ್ವಾಡೆಲೋಪ್" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "ಈಕ್ವೆಟೋರಿಯಲ್ ಗಿನಿ" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "ಗ್ರೀಸ್" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "ಸೈ. ಜಾರ್ಜಿಯ ಹಾಗು ಸೈ. ಸ್ಯಂಡ್‌ವಿಚ್ ಐಲ್‌ಗಳು" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "ಗ್ವಾಟೆಮಾಲ" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "ಗುವಾಮ್" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "ಗಿನಿ-ಬಿಸಾವು" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "ಗಯಾನ" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "ಹಾಂಕ್‌ಕಾಂಗ್" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "ಹರ್ಡ್ ಹಾಗು ಮ್ಯಾಕ್‌ಡೊನಾಲ್ಡ್ ದ್ವೀಪಗಳು" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "ಹೋಂಡುರಾಸ್" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "ಕ್ರೊಯೇಶಿಯ" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "ಹೈತಿ" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "ಹಂಗೆರಿ" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "ಇಂಡೋನೇಶಿಯ" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "ಐರ್ಲ್ಯಾಂಡ್" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "ಇಸ್ರೇಲ್" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "ಐಲ್ ಆಫ್ ಮ್ಯಾನ್" + +#: src/common/util.c:959 +msgid "India" +msgstr "ಭಾರತ" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "ಇನ್‌ಫಾರ್ಮೇಶನಲ್" + +#: src/common/util.c:961 +msgid "International" +msgstr "ಅಂತರಾಷ್ಟ್ರೀಯ" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "ಬ್ರಿಟಿಷ್ ಇಂಡಿಯನ್ ಓಶಿಯನ್ ಟೆರಿಟರಿ" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "ಇರಾಕ್" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "ಇರಾನ್" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "ಐಸ್‌ಲ್ಯಾಂಡ್" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "ಇಟಲಿ" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "ಜರ್ಸಿ" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "ಜಮೈಕಾ" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "ಜೋರ್ಡಾನ್" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "ಜಪಾನ್" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "ಕೀನ್ಯಾ" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "ಕಿರ್ಗಿಸ್ತಾನ್" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "ಕಾಂಬೊಡಿಯ" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "ಕಿರಿಬಾಟಿ" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "ಕೊಮೊರೊಸ್" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "ಸೈಂಟ್ ಕಿಟ್ಸ್ ಹಾಗು ನೆವಿಸ್" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "ಉತ್ತರ ಕೊರಿಯ" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "ದಕ್ಷಿಣ ಕೊರಿಯ" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "ಕುವೈತ್" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "ಕೇಮ್ಯಾನ್ ದ್ವೀಪಗಳು" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "ಕಝಕಿಸ್ತಾನ್" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "ಲಾವೊಸ್" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "ಲೆಬೆನಾನ್" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "ಸೈಂಟ್ ಲೂಸಿಯ" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "ಲೈಕ್ಟಿಸ್ಟೆನ್" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "ಶ್ರೀಲಂಕ" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "ಲಿಬಿರಿಯ" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "ಲೆಸೊತೊ" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "ಲಿತುವಾನಿಯ" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "ಲಕ್ಸೆಂಬರ್ಗ್" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "ಲಾಟ್ವಿಯ" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "ಲಿಬಿಯ" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "ಮೊರೊಕ್ಕೊ" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "ಮೊನ್ಯಾಕೊ" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "ಮಾಲ್ಡೋವ" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "ಯನೈಟೆಡ್ ಸ್ಟೇಟ್ಸ್ ಆಫ್ ಮೆಡಿಕಲ್" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "ಮಡಗಾಸ್ಕರ್" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "ಮಾರ್ಶಲ್ ದ್ವೀಪಗಳು" + +#: src/common/util.c:999 +msgid "Military" +msgstr "ಮಿಲಿಟರಿ" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "ಮೆಸೆಡೋನಿಯ" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "ಮಾಲಿ" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "ಮಿಯನ್ಮಾರ್" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "ಮಂಗೊಲಿಯ" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "ಮಕಾವು" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "ನಾರ್ತರ್ನ್ ಮರಿಯಾನ ದ್ವೀಪಗಳು" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "ಮಾರ್ಟಿನೀಕ್" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "ಮಾರ್ಟೀನಿಯಾ" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "ಮೊಂಟ್ಸೆರಾಟ್" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "ಮಾಲ್ಟಾ" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "ಮಾರಿಶಸ್" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "ಮಾಲ್ಡೀವ್ಸ್" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "ಮಲಾವಿ" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "ಮೆಕ್ಸಿಕೊ" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "ಮಲೇಶಿಯ" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "ಮೊಝಾಂಬಿಕ್" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "ನಮಿಬಿಯ" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "ನ್ಯೂ ಕೆಲಡೋನಿಯ" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "ನೈಜರ್" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "ಇಂಟರ್ನಿಕ್ ನೆಟ್‌ವರ್ಕ್" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "ನಾರ್ಫೋಕ್ ದ್ವೀಪ" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "ನೈಜೀರಿಯ" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "ನಿಕರಾಗುವ" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "ನೆದರ್ಲ್ಯಾಂಡ್ಸ್" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "ನಾರ್ವೆ" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "ನೇಪಾಲ್" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "ನೌರು" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "ನಿಯು" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "ನ್ಯೂಜಿಲ್ಯಾಂಡ್" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "ಒಮನ್" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "ಇಂಟರ್ನಿಕ್ ನಾನ್-ಪ್ರಾಫಿಟ್ ಆರ್ಗನೈಸೇಶನ್" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "ಪನಾಮ" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "ಪೆರು" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "ಫ್ರೆಂಚ್ ಪಾಲಿನೆಸಿಯಾ" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "ಪಪುವಾ ನ್ಯೂ ಗಿನಿ" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "ಫಿಲಿಪೀನ್ಸ್" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "ಪಾಕಿಸ್ತಾನ್" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "ಪೋಲ್ಯಾಂಡ್" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "ಸೈಂಟ್ ಪಿಯರೆ ಹಾಗು ಮಿಕ್ಯೂಲಾನ್" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "ಪಿಟ್‍ಕೈರ್ನ್" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "ಪೂರ್ಟೊ ರಿಕೊ" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "ಪ್ಯಾಲೆಸ್ತೀನಿಯನ್ ಟೆರಿಟರಿ" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "ಪೋರ್ಚುಗಲ್" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "ಪಲಾವು" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "ಪರುಗ್ವೆ" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "ಕತಾರ್" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "ರಿಯೂನಿಯನ್" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "ರೋಮೇನಿಯ" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "ಓಲ್ಡ್ ಸ್ಕೂಲ್ ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "ರಶೀಯನ್ ಫೆಡರೇಶನ್" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "ರುವಾಂಡ" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "ಸೌದಿ ಅರೇಬಿಯಾ" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "ಸೊಲೊಮನ್ ದ್ವೀಪಗಳು" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "ಸಿಶೇಲ್ಸ್" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "ಸುಡಾನ್" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "ಸ್ವೀಡನ್" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "ಸಿಂಗಪೂರ್" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "ಸೈಂಟ್ ಹೆಲೆನಾ" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "ಸ್ಲೋವೆನಿಯಾ" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "ಸ್ವಾಲ್ಬಾರ್ಡ್ ಹಾಗು ಜಾನ್ ಮೇಯನ್ ದ್ವೀಪಗಳು" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "ಸ್ಲೋವಾಕ್ ರಿಪಬ್ಲಿಕ್‌" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "ಸಿಯರಾ ಲಿಯೋನ್" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "ಸ್ಯಾನ್ ಮಾರಿನೊ" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "ಸೆನೆಗಲ್" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "ಸೋಮಾಲಿಯ" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "ಸುರಿನೇಮ್" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "ಸಾವೋ ಟೋಮ್ ಹಾಗು ಪ್ರಿನ್ಸಿಪಿ" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "ಫಾರ್ಮರ್ USSR" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "ಎಲ್‌ ಸಾಲ್ವಾಡಾರ್" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "ಸಿರಿಯ" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "ಸ್ವಾಝಿಲ್ಯಾಂಡ್" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "ಟರ್ಕ್ಸ್‍ ಹಾಗು ಕೈಕೋಸ್ ಐಲ್ಯಾಂಡ್ಸ್‍" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "ಚಾಡ್" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "ಫ್ರೆಂಚ್ ಸದರ್ನ್ ಪ್ರದೇಶಗಳು" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "ಟೊಗೊ" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "ತೈಲ್ಯಾಂಡ್" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "ತಜಿಕ್‌ಸ್ತಾನ್" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "ಟೊಕೆಲಾವ್" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "ಪೂರ್ವ ತಿಮೋರ್" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "ಟರ್ಕಮೆನಿಸ್ತಾನ್" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "ಟುನೀಸಿಯಾ" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "ಟೋಂಗಾ" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "ಟರ್ಕಿ" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "ಟ್ರಿನಿಡಾಡ್ ಹಾಗು ಟೊಬ್ಯಾಗೊ" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "ಟುವಾಲು" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "ತೈವಾನ್" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "ಟಾಂಝಾನಿಯಾ" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "ಉಕ್ರೇನ್" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "ಉಗಾಂಡ" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "ಯುನೈಟೆಡ್ ಕಿಂಗ್‌ಡಮ್" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "ಯನೈಟೆಡ್ ಸ್ಟೇಟ್ಸ್ ಆಫ್ ಅಮೇರಿಕಾ" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "ಉರುಗ್ವೆ" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "ಉಜ್ಬೇಕಿಸ್ತಾನ್" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "ವ್ಯಾಟಿಕನ್ ಸಿಟಿ ಸ್ಟೇಟ್" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "ಸೈಂಟ್ ವಿನ್ಸೆಂಟ್ ಹಾಗು ಗ್ರೆನಾಡೈನ್ಸ್" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "ವೆನಿಝುವಲಾ" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "ಬ್ರಿಟಿಷ್ ವರ್ಜಿನ್ ದ್ವೀಪಗಳು" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "ಯುಎಸ್ ವರ್ಜಿನ್ ಐಲ್ಯಾಂಡ್‌ಗಳು" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "ವಿಯೆಟ್ನಾನ್" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "ವನುವಾತು" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "ವಾಲಿಸ್ ಹಾಗು ಫುಟುನಾ ದ್ವೀಪಗಳು" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "ಸಮೊವಾ" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "ಯೆಮೆನ್" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "ಮೆಯೋಟ್" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "ಯಗೋಸ್ಲಾವಿಯ" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "ಸೌತ್ ಆಫ್ರಿಕಾ" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "ಜಾಂಬಿಯಾ" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "ಜಿಂಬಾಬ್ವೆ" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "ಗೊತ್ತಿಲ್ಲದ" + +#: src/common/xchat.c:726 +msgid "_Open Dialog Window" +msgstr "ಸಂವಾದ ವಿಂಡೊವನ್ನು ತೆರೆ(_O)" + +#: src/common/xchat.c:727 +msgid "_Send a File" +msgstr "ಕಡತವನ್ನು ಕಳುಹಿಸು(_S)" + +#: src/common/xchat.c:728 +msgid "_User Info (WhoIs)" +msgstr "ಬಳಕೆದಾರ ಮಾಹಿತಿ (WhoIs)(_U)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "ಗೆಳೆಯರ ಪಟ್ಟಿಗೆ ಸೇರಿಸು(_A)" + +#: src/common/xchat.c:730 +msgid "O_perator Actions" +msgstr "ನಿರ್ವಾಹಕರ ಕ್ರಿಯೆಗಳು(_p)" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Ops ಅನ್ನು ನೀಡಿ" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Ops ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "ಧ್ವನಿಯನ್ನು ನೀಡಿ" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "ಧ್ವನಿಯನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "ಹೊರಗಟ್ಟು/ನಿಶೇಧಿಸು" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "ಹೊರಗಟ್ಟು" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "ನಿಶೇಧಿಸು" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "ಹೊರಗಟ್ಟಿ ನಿಶೇಧಿಸು" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "ಚಾನಲ್‌ನಿಂದ ಹೊರನಡೆಯಿರಿ" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "ಒಂದು ಚಾನಲ್ ಅನ್ನು ಸೇರು..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "ಸೇರಬೇಕಿರುವ ಚಾನಲ್‌ ಅನ್ನು ನಮೂದಿಸಿ:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "ಪರಿಚಾರಕದ ಕೊಂಡಿಗಳು" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "ಪರಿಚಾರಕವನ್ನು ಪಿಂಗ್‌ ಮಾಡು" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "ಆವೃತ್ತಿಯನ್ನು ಅಡಗಿಸು" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Op" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "ಶುಭವಾಗಲಿ" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "%s ಅನ್ನು ಹೊರಗಟ್ಟಲು ಕಾರಣ ಕೊಡಿ:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Sendfile" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "ಸಂವಾದ" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "ಕಳುಹಿಸು" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "ಮಾತುಕತೆ" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "ಖಾಲಿಮಾಡಿ" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "ಪಿಂಗ್" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "ಅಧಿವೇಶನದ ಬಸ್‌ನೊಂದಿಗೆ ಸಂಪರ್ಕ ಸಾಧಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "NameHasOwner ಅನ್ನು ಪೂರ್ಣಗೊಳಿಸುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "ಆಜ್ಞೆಯನ್ನು ಪೂರ್ಣಗೊಳಿಸುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "ದೂರಸ್ಥ ನಿಲುಕಣೆ" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "DBUS ಅನ್ನು ಬಳಸಿಕೊಂಡು ದೂರದಿಂದ ಬಳಸುವ ಸಲುವಾಗಿನ ಪ್ಲಗ್‌ಇನ್" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "ಅಧಿವೇಶನದ ಬಸ್‌ನೊಂದಿಗೆ ಸಂಪರ್ಕ ಸಾಧಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "%s ಅನ್ನು ಪಡೆಯಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ: %s\n" + +#: src/fe-gtk/about.c:100 +msgid "About " +msgstr "ಇದರ ಕುರಿತು " + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "ಮಲ್ಟಿಪ್ಲಾಟ್‌ಫಾರ್ಮ್ IRC ಕ್ಲೈಂಟ್" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "ಚಿಹ್ನೆಯ ನಕ್ಷೆ" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "ಸಂಪರ್ಕಿತಗೊಂಡಿಲ್ಲ." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "ಕೆಲವು ನಿಶೇಧಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡಲೆ ಬೇಕು." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "%s ನಲ್ಲಿನ ಎಲ್ಲಾ ನಿಶೇಧಗಳನ್ನು ತೆಗೆದು ಹಾಕಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುತ್ತೀರೆ?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "ಮುಸುಕು" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "ಇವರಿಂದ" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "ದಿನಾಂಕ" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "ಒಂದು ಚಾನಲ್‌ ಹಾಳೆಯಲ್ಲಿದ್ದಾಗ ಮಾತ್ರ ನೀವು ನಿಶೇಧ ಪಟ್ಟಿಯ ವಿಂಡೊವನ್ನು ತೆರೆಯಬಹುದು." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: ನಿಶೇಧ ಪಟ್ಟಿ (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "ತೆಗೆದು ಹಾಕಿ" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "ಕತ್ತರಿಸು" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "ಪುನಶ್ಚೇತನಗೊಳಿಸು" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "%d/%d ಬಳಕೆದಾರರನ್ನು ತೋರಿಸಲಾಗುತ್ತಿದೆ(%d/%d ಚಾನಲ್‌ಗಳಲ್ಲಿ)." + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "ಔಟ್‌ಪುಟ್‌ ಕಡತದ ಹೆಸರನ್ನು ಆಯ್ಕೆ ಮಾಡಿ" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "ಚಾನಲ್ ಅನ್ನು ಸೇರು(_J)" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "ಚಾನಲ್‌ನ ಹೆಸರನ್ನು ಕಾಪಿ ಮಾಡು(_C)" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "ವಿಷಯದ ಪಠ್ಯವನ್ನು ಕಾಪಿ ಮಾಡು(_T)" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: ಚಾನಲ್‌ ಪಟ್ಟಿ (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "ಹುಡುಕು(_S)" + +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "ಡೌನ್‌ಲೋಡ್‌ ಪಟ್ಟಿ(_D)" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "ಪಟ್ಟಿಯನ್ನು ಉಳಿಸು(_L)..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "ಇದನ್ನು ಮಾತ್ರ ತೋರಿಸು:" + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "ಇದರೊಂದಿಗಿನ ಚಾನಲ್" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "ಗೆ" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "ಬಳಕೆದಾರರು." + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "ಇದರಲ್ಲಿ ನೋಡು:" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "ಚಾನಲ್ ಹೆಸರು" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "ಹುಡುಕುವ ಬಗೆ:" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "ಸರಳ ಹುಡುಕಾಟ" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "ನಮೂನೆಯು ತಾಳೆಯಾಗುವಿಕೆ (ವೈಲ್ಡ್ ಕಾರ್ಡುಗಳು)" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "ರೆಗ್ಯುಲರ್ ಎಕ್ಸ್‍ಪ್ರೆಶನ್" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "ಹುಡುಕು:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "%s ಗೆ ಕಡತವನ್ನು ಕಳುಹಿಸು" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "ಆ ಕಡತವನ್ನು ಮರಳಿ ಆರಂಭಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"ಕಡತವನ್ನು ನಿಲುಕಿಸಿಕೊಳ್ಳಲು ಸಾಧ್ಯವಿಲ್ಲ: %s\n" +"%s.\n" +"ಮರಳಿ ಆರಂಭಿಸುವುದು ಸಾಧ್ಯವಿಲ್ಲ." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"ಡೌನ್‌ಲೋಡ್ ಕೋಶದಲ್ಲಿನ ಕಡತದ ಗಾತ್ರವು ನೀಡಲು ಬಯಸಿರುವ ಕಡತಕ್ಕಿಂತ ದೊಡ್ಡದಾಗಿದೆ. ಮರಳಿ " +"ಆರಂಭಿಸುವುದು ಸಾಧ್ಯವಿಲ್ಲ." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "ಒಂದೇ ಕಡತವನ್ನು ಎರಡು ವ್ಯಕ್ತಿಗಳಿಗಾಗಿ ಮರಳಿ ಆರಂಭಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: ಅಪ್‌ಲೋಡ್‌ಗಳು ಹಾಗು ಡೌನ್‌ಲೋಡ್‌ಗಳು" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "ಸ್ಥಿತಿ" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "ಕಡತ" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "ಎರಡೂ" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "ಅಪ್‌ಲೋಡ್‌ಗಳು" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "ಡೌನ್‌ಲೋಡ್‌ಗಳು" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "ವಿವರಗಳು" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "ಕಡತ:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "ವಿಳಾಸ:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "ಸ್ಥಗಿತಗೊಳಿಸು" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "ಅಂಗೀಕರಿಸು" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "ಮರಳಿ ಆರಂಭಿಸು" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "ಕಡತಕೋಶವನ್ನು ತೆರೆ..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: DCC ಮಾತುಕತೆಯ ಪಟ್ಟಿ" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Recv" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "ಕಳುಹಿಸಲಾದ" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "ಆರಂಭಿಸಿದ ಸಮಯ" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*ಹೊಸ*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "EDIT ME" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "ಹೆಸರು" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "ಆಜ್ಞೆ" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "ಮೇಲಕ್ಕೆ ಸ್ಥಳಾಂತರಿಸು" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "ಕೆಳಕ್ಕೆ ಸ್ಥಳಾಂತರಿಸು" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "ರದ್ದುಗೊಳಿಸಿ" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "ಉಳಿಸಿ" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "ಹೊಸತನ್ನು ತೋರಿಸು" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "ಅಳಿಸಿಹಾಕಿ" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "ವಿಂಗಡಿಸು" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "ನೆರವು" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "ಪರಿಚಾರಕಗಳೊಂದಿಗೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸಂಪರ್ಕ ಸಾಧಿಸಬೇಡ" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "ಒಂದು ಪ್ರತ್ಯೇಕವಾದ ಸಂರಚನಾ ಕೋಶವನ್ನು ಬಳಸು" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "ಯಾವುದೆ ಪ್ಲಗ್‌ಇನ್ ಅನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಲೋಡ್ ಮಾಡಬೇಡ" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "ಪ್ಲಗ್‌ಇನ್‌ನ ಸ್ವಯಂ ಲೋಡ್ ಆಗುವ ಕೋಶವನ್ನು ತೋರಿಸು" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "ಬಳಕೆದಾರ ಸಂರಚನಾ ಕೋಶವನ್ನು ತೋರಿಸು" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "ಒಂದು irc://server:port/channel URL ಅನ್ನು ತೆರೆ" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "ಈ ಆಜ್ಞೆಯನ್ನು ಚಲಾಯಿಸು:" + +#: src/fe-gtk/fe-gtk.c:132 +msgid "Open URL or execute command in an existing XChat" +msgstr "URL ಅನ್ನು ತೆರೆ ಅಥವ ಈಗಿರುವ XChat ನಲ್ಲಿ ಆಜ್ಞೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸು" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "ಕಿರಿದಾಗಿಸಲಾದುದರಿಂದ ಆರಂಭಿಸು. ಹಂತ 0=ಸಾಮಾನ್ಯ 1=ಚಿಹ್ನೆ ಮಾಡಲಾದ 2=ಟ್ರೇ" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "ಮಟ್ಟ" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "ಆವೃತ್ತಿಯ ಮಾಹಿತಿಯನ್ನು ತೋರಿಸು" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"ಅಕ್ಷರಶೈಲಿಯನ್ನು ತೆರೆಯಲು ವಿಫಲಗೊಂಡಿದೆ:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "ಹುಡುಕು ಬಫರ್ ಖಾಲಿ ಇದೆ.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d ಬೈಟ್‌ಗಳು" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "ಜಾಲಬಂಧ ಕಳುಹಿಸುವ ಸರತಿ: %d ಬೈಟ್‌ಗಳು" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"ಆಜ್ಞೆಯನ್ನು ಚಲಾಯಿಸು  ಕ್ರಿಯೆಯು ನೀವು ಕೀಲಿ ಅನುಕ್ರಮವನ್ನು ಒತ್ತಿದ ಜಾಗದಲ್ಲಿನ ನಮೂದು ಚೌಕದಲ್ಲಿ " +"ಅದನ್ನು ನಮೂದಿಸಿದಂತೆ ದತ್ತಾಂಶವನ್ನು ದತ್ತಾಂಶ 1 ರಲ್ಲಿ ಚಲಾಯಿಸುತ್ತದೆ. ಹಾಗಾಗಿ ಅದು ಪಠ್ಯವನ್ನು " +"(ಇದನ್ನು ಚಾನಲ್/ವ್ಯಕ್ತಿಗೆ ಕಳುಹಿಸಲಾಗುತ್ತದೆ), ಆಜ್ಞೆಗಳು ಅಥವ ಬಳಕೆದಾರ ಆಜ್ಞೆಗಳನ್ನು " +"ಹೊಂದಿರುತ್ತದೆ. ದತ್ತಾಂಶ 1 ರಲ್ಲಿನ ಎಲ್ಲಾ \\n ಅಕ್ಷರಗಳನ್ನು ಒಂದಕ್ಕಿಂತ ಹೆಚ್ಚಿನ ಆಜ್ಞೆಗಳನ್ನು " +"ಚಲಾಯಿಸುವಂತೆ ಪ್ರತ್ಯೇಕ ಆಜ್ಞೆಯನ್ನು deliminate ಮಾಡಲು ಬಳಸಲಾಗುತ್ತದೆ. ನಿಜವಾದ ಪಠ್ಯವನ್ನು " +"ಚಲಾಯಿಸುವಲ್ಲಿ \\ ಬೇಕಿದ್ದಲ್ಲಿ \\\\ ಅನ್ನು ನಮೂದಿಸಿ" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"Change Page ಆಜ್ಞೆಯು ನೋಟ್‌ಬುಕ್‌ನಲ್ಲಿ ಪುಟಗಳ ನಡುವೆ ಬದಲಾಯಿಸುತ್ತದೆ. ನೀವು ಯಾವ ಪುಟಕ್ಕೆ " +"ಬದಲಾಯಿಸಲು ಬಯಸುತ್ತೀರೊ ಅದಕ್ಕೆ ದತ್ತಾಂಶ 1 ಅನ್ನು ಹೊಂದಿಸಿ. ದತ್ತಾಂಶ 2 ಅನ್ನು ಯಾವುದಕ್ಕಾದರೂ " +"ಹೊಂದಿಸಿದಲ್ಲಿ ಬದಲಾವಣೆಯು ಪ್ರಸಕ್ತ ಸ್ಥಾನಕ್ಕೆ ಅನುಗುಣವಾಗಿ ಆಗುತ್ತದೆ." + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"Insert in Buffer ಆಜ್ಞೆಯು ದತ್ತಾಂಶ 1 ರಲ್ಲಿರುವುದನ್ನು ಪ್ರಸಕ್ತ ತೆರೆಸೂಚಕದ ಸ್ಥಳದಲ್ಲಿ ಒತ್ತಲಾದ " +"ಕೀಲಿ ಅನುಕ್ರಮದ ನಮೂದಿಗೆ ಸೇರಿಸುತ್ತದೆ." + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"Scroll Page ಆಜ್ಞೆಯು ಪಠ್ಯ ವಿಡ್ಗೆಟ್ ಅನ್ನು ಒಂದು ಪುಟದ ಅಥವ ಒಂದು ಸಾಲಿನಕ ಮೇಲಕ್ಕೆ ಅಥವ " +"ಕೆಳಕ್ಕೆ ಚಲಿಸುವಂತೆ ಮಾಡುತ್ತದೆ. ದತ್ತಾಂಶ 1 ಅನ್ನು ಮೇಲಕ್ಕೆ, ಕೆಳಕ್ಕೆ +1 ಅಥವ -1 ಗೆ ಹೊಂದಿಸಿ." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"Set Buffer ಆಜ್ಞೆಯು ದತ್ತಾಂಶ 1 ಕ್ಕೆ ನಮೂದಿಸಲಾದ ವಿಷಯಕ್ಕೆ ನಮೂದಿಸಲಾದ ಕೀಲಿ ಅನುಕ್ರಮಕ್ಕೆ " +"ನಮೂದನ್ನು ಹೊಂದಿಸುತ್ತದೆ" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"ಕೊನೆಯ ಆಜ್ಞೆ ಆಜ್ಞೆಯು ಕೊನೆಯ ಬಾರಿಗೆ ನಮೂದಿಸಲಾದ ಆಜ್ಞೆಯನ್ನು ನಮೂದಿನಲ್ಲಿ ಇರುವಂತೆ " +"ಹೊಂದಿಸುತ್ತದೆ - ಶೆಲ್‌ನಲ್ಲಿ ಮಾಡುವ ರೀತಿಯಲ್ಲಿಯೆ" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"ಕೊನೆಯ ಆಜ್ಞೆ ಆಜ್ಞೆಯು ಮುಂದಿನ ಆಜ್ಞೆಯನ್ನು ನಮೂದಿನಲ್ಲಿ ಇರುವಂತೆ ಹೊಂದಿಸುತ್ತದೆ - ಶೆಲ್‌ನಲ್ಲಿ " +"ಮಾಡುವ ರೀತಿಯಲ್ಲಿಯೆ" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"ಈ ಆಜ್ಞೆಯು ಅಪೂರ್ಣಗೊಂಡ ಅಡ್ಡಹೆಸರು ಅಥವ ಆಜ್ಞೆಯನ್ನು ಪೂರ್ಣಗೊಳಿಸುವ ನಮೂದಿನ ಪಠ್ಯವನ್ನು " +"ಬದಲಾಯಿಸುತ್ತದೆ. ದತ್ತಾಂಶ 1 ಅನ್ನು ಹೊಂದಿಸಲಾಗಿದ್ದಲ್ಲಿ, ಎರಡು ಬಾರಿ ಟ್ಯಾಬ್ ಅನ್ನು ಒತ್ತುವುದರಿಂದ " +"ಕೊನೆಯ ಬಾರಿಯ ಅಡ್ಡಹೆಸರನ್ನು ಆರಿಸುತ್ತದೆಯೆ ಹೊರತು ಮುಂದಿನದ್ದಲ್ಲ" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"ಈ ಆಜ್ಞೆಯು ಅಡ್ಡಹೆಸರುಗಳ ಪಟ್ಟಿಯಲ್ಲಿ ಮೇಲಕ್ಕೆ ಹಾಗು ಕೆಳಕ್ಕೆ ಚಲಿಸುತ್ತದೆ. ದತ್ತಾಂಶ 1 ನ್ನು " +"ಯಾವುದಕ್ಕಾದರೂ ಹೊಂದಿಸಿದಲ್ಲಿ ಇದು ಮೇಲಕ್ಕೆ ಚಲಿಸುತ್ತದೆ ಇಲ್ಲದೆ ಹೋದಲ್ಲಿ ಕೆಳಕ್ಕೆ ಚಲಿಸುತ್ತದೆ" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"ಈ ಆಜ್ಞೆಯು ಬದಲಾಯಿಸುವ ಪಟ್ಟಿಯಲ್ಲಿನ ನಮೂದಿನಲ್ಲಿ ಕಡೆಯದಾಗಿ ನಮೂದಿಸಲಾದ ಹುಡುಕುತ್ತದೆ ಹಾಗು " +"ತಾಳೆಯಾಗುವುದು ಕಂಡು ಬಂದಲ್ಲಿ ಬದಲಾಯಿಸುತ್ತದೆ" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "ಈ ಆಜ್ಞೆಯು ಎದುರಿನ ಹಾಳೆಯನ್ನು ಎಡಕ್ಕೆ ಒಂದು ಹಂತ ಸ್ಥಳಾಂತರಿಸುತ್ತದೆ" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "ಈ ಆಜ್ಞೆಯು ಎದುರಿನ ಹಾಳೆಯನ್ನು ಬಲಕ್ಕೆ ಒಂದು ಹಂತ ಸ್ಥಳಾಂತರಿಸುತ್ತದೆ" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "ಈ ಆಜ್ಞೆಯು ಪ್ರಸಕ್ತ ಹಾಳೆಯ ಸಂಕುಲವನ್ನು ಎಡಕ್ಕೆ ಒಂದು ಹಂತ ಸ್ಥಳಾಂತರಿಸುತ್ತದೆ" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "ಈ ಆಜ್ಞೆಯು ಪ್ರಸಕ್ತ ಹಾಳೆಯ ಸಂಕುಲವನ್ನು ಬಲಕ್ಕೆ ಒಂದು ಹಂತ ಸ್ಥಳಾಂತರಿಸುತ್ತದೆ" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "ಇನ್‌ಪುಟ್ ಸಾಲನ್ನು ಇತಿಹಾಸಕ್ಕೆ ತಳ್ಳುತ್ತದೆ ಆದರೆ ಪರಿಚಾರಕಕ್ಕೆ ಕಳುಹಿಸುವುದಿಲ್ಲ" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "ಕೀಲಿ ಬೈಂಡಿಂಗ್‌ಗಳ ಸಂರಚನೆಯನ್ನು ಲೋಡ್ ಮಾಡುವಲ್ಲಿ ಒಂದು ದೋಷ ಉಂಟಾಗಿದೆ" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<ಏನೂ ಇಲ್ಲ>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Mod" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "ಕೀಲಿ" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "ಕ್ರಿಯೆ" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: ಕೀಲಿಮಣೆ ಶಾರ್ಟ್-ಕಟ್‌ಗಳು" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "ದತ್ತ 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "ದತ್ತ 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "ಕೀಲಿಗಳ ಸಂರಚನಾ ಕಡತವನ್ನು ತೆರೆಯುವಾಗ ದೋಷವುಂಟಾಯಿತು\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"ಕೀಲಿ ಬೈಂಡಿಂಗ್ ಸಂರಚನೆಯ ಕಡತದಲ್ಲಿ ಗೊತ್ತಿರದ %s ಎಂಬ ಕೀಲಿಯ ಹೆಸರು\n" +"ಲೋಡ್ ಮಾಡುವಿಕೆಯನ್ನು ಸ್ಥಗಿತಗೊಳಿಸಲಾಗಿದೆ, ದಯವಿಟ್ಟು %s/keybindingsconf ಅನ್ನು ಸರಿಪಡಿಸಿ\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"ಕೀಲಿ ಬೈಂಡಿಂಗ್ ಸಂರಚನೆಯ ಕಡತದಲ್ಲಿ ಗೊತ್ತಿರದ %s ಎಂಬ ಕ್ರಿಯೆ\n" +"ಲೋಡ್ ಮಾಡುವಿಕೆಯನ್ನು ಸ್ಥಗಿತಗೊಳಿಸಲಾಗಿದೆ, ದಯವಿಟ್ಟು %s/keybindingsconf ಅನ್ನು ಸರಿಪಡಿಸಿ\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"ದತ್ತಾಂಶದ ಸಾಲನ್ನು ನಿರೀಕ್ಷಿಸಲಾಗಿತ್ತು (Dx{:|!} ಇಂದ ಆರಂಭಗೊಳ್ಳುವ) ಆದರೆ ದೊರಕಿದ್ದು ಇದು:\n" +"%s\n" +"\n" +"ದಯವಿಟ್ಟು %s/keybindings.conf ಅನ್ನು ಸರಿಪಡಿಸಿ\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"ಕೀಲಿ ಬೈಂಡಿಂಗ್ ಸಂರಚನೆಯ ಕಡತವು ಹಾಳಾಗಿದೆ, ಲೋಡ್ ಮಾಡುವಿಕೆಯನ್ನು ಸ್ಥಗಿತಗೊಳಿಸಲಾಗಿದೆ\n" +"ದಯವಿಟ್ಟು %s/keybindings.conf ಅನ್ನು ಸರಿಪಡಿಸಿ\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "ಆ ಕಡತಕ್ಕೆ ಬರೆಯಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "ಆ ಕಡತವನ್ನು ಓದಲಾಗಿಲ್ಲ." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "ಆ ಮುಸುಕು ಈಗಾಗಲೇ ಇದೆ." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "ಖಾಸಗಿ" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "ಸೂಚನೆ" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "ಆಮಂತ್ರಿಸಿ" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "ಕಡೆಗಣಿಸಿದ್ದನ್ನು ರದ್ದುಗೊಳಿಸು" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "ಕಡೆಗಣಿಸಲು ಮುಸುಕನ್ನು ನಮೂದಿಸಿ:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: ಕಡೆಗಣಿಸಬೇಕಿರುವ ಪಟ್ಟಿ" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "ಕಡೆಗಣಿಸುವ ಅಂಕಿಅಂಶಗಳು:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "ಚಾನಲ್:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "ಖಾಸಗಿ:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "ಸೂಚನೆ:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "ಆಮಂತ್ರಿಸಿ:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "ಸೇರಿಸು..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "ಚಾನಲ್ ಹೆಸರು ಬಹಳ ಸಣ್ಣದಾಗಿದೆ, ಇನ್ನೊಮ್ಮೆ ಪ್ರಯತ್ನಿಸಿ." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: ಸಂಪರ್ಕವು ಪೂರ್ಣಗೊಂಡಿದೆ" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "%s ಗಾಗಿನ ಸಂಪರ್ಕವು ಪೂರ್ಣಗೊಂಡಿದೆ." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"ಪರಿಚಾರಕ-ಪಟ್ಟಿ ವಿಂಡೊದಲ್ಲಿ, ಈ ಜಾಲಬಂಧಕ್ಕೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸೇರಲು ಯಾವುದೆ ಚಾನಲ್ " +"(ಮಾತುಕತೆಯ ಕೋಣೆಯನ್ನು) ನಮೂದಿಸಲಾಗಿಲ್ಲ." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "ನೀವು ಇದರ ನಂತರ ಏನು ಮಾಡಲು ಬಯಸುವಿರಿ?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "ಏನೂ ಇಲ್ಲ, ನಾನು ಆಮೇಲೆ ಚಾನಲ್‌ನಲ್ಲಿ ಸೇರಿಕೊಳ್ಳುತ್ತೇನೆ(_N)." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "ಚಾನಲ್‌ ಅನ್ನು ಸೇರು(_J):" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "ನೀವು ಸೇರಲು ಬಯಸುವ ಚಾನಲ್‌ನ ಹೆಸರು ತಿಳಿದಿದ್ದಲ್ಲಿ, ಇಲ್ಲಿ ಬರೆಯಿರಿ." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "ಚಾನಲ್-ಪಟ್ಟಿ ವಿಂಡೊವನ್ನು ತೆರೆ(_p)" + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "ಚಾನಲ್-ಪಟ್ಟಿಯನ್ನು ಪಡೆಯಲು ಒಂದೆರಡು ನಿಮಿಷಗಳು ಹಿಡಿಯಬಹುದು." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "ಯಾವಾಗಲೂ ಸಂಪರ್ಕಿತಗೊಂಡ ನಂತರ ಈ ಸಂವಾದವನ್ನು ತೋರಿಸು(_A)." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "ಇದರೊಂದಿಗಿನ ಸಂವಾದ" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "%s ಗಾಗಿನ ವಿಷಯ %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "ವಿಷಯವನ್ನು ಗೊತ್ತುಪಡಿಸಿಲ್ಲ" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"ಈ ಪರಿಚಾರಕವು ಇನ್ನೂ ಸಹ %d ಚಾನಲ್‌ಗಳನ್ನು ಅಥವ ಸಂವಾದಗಳನ್ನು ಹೊಂದಿದೆ. ಎಲ್ಲವನ್ನೂ ಮುಚ್ಚಬೇಕೆ?" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "XChat ನಿಂದ ನಿರ್ಗಮಿಸಬೇಕೆ?" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "ಮುಂದಿನ ಬಾರಿ ಕೇಳಬೇಡ." + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "ನೀವು %i IRC ಜಾಲಬಂಧಗಳೊಂದಿಗೆ ಸಂಪರ್ಕಿತಗೊಂಡಿದ್ದೀರಿ." + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "ನೀವು ಖಚಿತಾವಾಗಿಯೂ ನಿರ್ಗಮಿಸಲು ಬಯಸುತ್ತೀರೆ?" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "ಕೆಲವು ಕಡತ ವರ್ಗಾವಣೆಗಳು ಇನ್ನೂ ಸಹ ಸಕ್ರಿಯವಾಗಿದೆ." + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "ಟ್ರೇಗೆ ಕಿರಿದಾಗಿಸು(_M)" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "ವೈಶಿಷ್ಟ್ಯವನ್ನು ಅಥವ ಬಣ್ಣದ ಸಂಕೇತವನ್ನು ಸೇರಿಸು" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>ಬೋಲ್ಡ್</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>ಅಡಿಗೆರೆ ಎಳೆ</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "ಸಾಮಾನ್ಯ" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "ಬಣ್ಣಗಳು 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "ಬಣ್ಣಗಳು 8-15" + +#: src/fe-gtk/maingui.c:1612 +msgid "_Settings" +msgstr "ಸಿದ್ಧತೆಗಳು(_S)" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "ಡಿಸ್ಕಿಗೆ ದಾಖಲಿಸು(_L)" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "ಸ್ಕ್ರಾಲ್‌ಬ್ಯಾಕನ್ನು ಮರಳಿ ಲೋಡ್ ಮಾಡು(_R)" + +#: src/fe-gtk/maingui.c:1617 +msgid "_Hide Join/Part Messages" +msgstr "ಸೇರ್ಪಡೆಗೊಂಡ/ಹೊರಕ್ಕೆ ತೆರಳಿದ ಸಂದೇಶಗಳನ್ನು ಅಡಗಿಸು(_H)" + +#: src/fe-gtk/maingui.c:1625 +msgid "_Extra Alerts" +msgstr "ಹೆಚ್ಚುವರಿ ಎಚ್ಚರಿಕೆಗಳು(_E)" + +#: src/fe-gtk/maingui.c:1627 +msgid "Beep on _Message" +msgstr "ಸಂದೇಶ ಬಂದಾಗ ಬೀಪ್ ಮಾಡು(_M)" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "ಟ್ರೇ ಚಿಹ್ನೆಯನ್ನು ಮಿನುಗಿಸು(_I)" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "ಕಾರ್ಯ ಪಟ್ಟಿಯನ್ನು ಮಿನುಗಿಸು(_B)" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +msgid "_Detach" +msgstr "ಕಳಚು(_D)" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "ಮುಚ್ಚು(_C)" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "ಬಳಕೆದಾರರ ಮಿತಿಯು ಒಂದು ಸಂಖ್ಯೆಯಾಗಿರಬೇಕು!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "ವಿಷಯದ ಸಂರಕ್ಷಣೆ" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "ಯಾವುದೆ ಹೊರಗಿನ ಸಂದೇಶಗಳಿಲ್ಲ" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "ರಹಸ್ಯ" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "ಆಮಂತ್ರಣದ ಮೇರೆಗೆ ಮಾತ್ರ" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "ನಿರ್ಣಯಿಸಲಾದ" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "ನಿಷೇಧಪಟ್ಟಿ" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "ಕೀಲಿಪದ" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "ಬಳಕೆದಾರ ಮಿತಿ" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "ಬಳಕೆದಾಪಟ್ಟಿಯನ್ನು ತೋರಿಸು/ಅಡಗಿಸು" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"ಪಾರದರ್ಶಕ ಹಿನ್ನಲೆಯನ್ನು ಹೊಂದಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ!\n" +"\n" +"ನೀವು ಬಹುಷಃ ಪ್ರಸಕ್ತ ಬೆಂಬಲವಿರದ ಹೊಂದಿಕೆಯಾಗದ \n" +"ವಿಂಡೊವನ್ನು ವ್ಯವಸ್ಥಾಪಕವನ್ನು ಬಳಸುತ್ತಿರಬಹುದು.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "ಹೊಸ ಅಡ್ಡಹೆಸರನ್ನು ಸೇರಿಸಿ:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "ಅಜ್ಞಾತ ಆತಿಥೇಯ" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "ನಿಜವಾದ ಹೆಸರು:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "ಬಳಕೆದಾರ:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "ದೇಶ:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "ಪರಿಚಾರಕ(ಸರ್ವರ್‍):" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "%u ನಿಮಿಷಗಳ ಹಿಂದೆ" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "ಕಡೆಯ ಸಂದೇಶ:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "ಆಚೆ ಹೋಗಲಾದಾಗಿನ ಸಂದೇಶ:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "%d ಅಡ್ಡಹೆಸರುಗಳನ್ನು ಆರಿಸಲಾಗಿದೆ." + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"ಮೆನುಪಟ್ಟಿಯನ್ನು ಈಗ ಅಡಗಿಸಲಾಗಿದೆ. F9 ಅನ್ನು ಒತ್ತುವ ಮೂಲಕ ಅಥವ ಮುಖ್ಯ ಪಠ್ಯ ಸ್ಥಳದಲ್ಲಿ " +"ಸೂಚಕವನ್ನು ಇರಿಸಿ ಬಲ ಕ್ಲಿಕ್ ಮಾಡುವ ಮೂಲಕ ಅದನ್ನು ಮತ್ತೆ ಕಾಣಿಸಬಹುದು." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "ಕೊಂಡಿಯನ್ನ್ನು ವೀಕ್ಷಕದಲ್ಲಿ ತೆರೆ" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "ಆಯ್ಕೆ ಮಾಡಲಾದ ಸಂಪರ್ಕಕೊಂಡಿಯನ್ನು ಕಾಪಿ ಮಾಡಿ" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "ಒಂದು ಚಾನಲ್ ಅನ್ನು ಸೇರು" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "ಚಾನಲ್‌ನಿಂದ ಹೊರಹೋಗು" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "ಚಾನಲ್‌ನಲ್ಲಿ ಆವರ್ತನಗೊಳಿಸು" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "ಅಚ್ಚುಮೆಚ್ಚಿನವುಗಳಿಂದ ತೆಗೆದು ಹಾಕು(_R)" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "ಅಚ್ಚುಮೆಚ್ಚಿನವುಗಳಿಗೆ ಸೇರಿಸು(_A)" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: ಬಳಕೆದಾರ ಮೆನು" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "ಈ ಮೆನುವನ್ನು ಸಂಪಾದಿಸಿ..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "ಚಾನಲ್ ಪಟ್ಟಿಯನ್ನು ಪಡೆದುಕೊಳ್ಳಿ..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"ಬಳಕೆದಾರ ಆಜ್ಞೆಗಳು - ವಿಶೇಷ ಸಂಕೇತಗಳು:\n" +"\n" +"%c = ಪ್ರಸಕ್ತ ಚಾನಲ್\n" +"%e = ಪ್ರಸಕ್ತ ಜಾಲಬಂಧದ ಹೆಸರು\n" +"%m = ಗಣಕದ ಮಾಹಿತಿ\n" +"%n = ನಿಮ್ಮ ಅಡ್ಡಹೆಸರು\n" +"%t = ಸಮಯ/ದಿನಾಂಕ\n" +"%v = xchat ನ ಆವೃತ್ತಿ\n" +"%2 = ಪದ 2\n" +"%3 = ಪದ 3\n" +"&2 = ಪದ 2 ರಿಂದ ಸಾಲಿನ ಕೊನೆಯವರೆಗೆ\n" +"&3 = ಪದ 3 ರಿಂದ ಸಾಲಿನ ಕೊನೆಯವರೆಗೆ\n" +"\n" +"ಉದಾ:\n" +"/cmd john hello\n" +"\n" +"%2 ಎನ್ನುವುದು \"john\" ಆಗಿದೆ\n" +"&2 ಎನ್ನುವುದು \"john hello\" ಆಗಿದೆ." + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"ಬಳಕೆದಾರ ಗುಂಡಿಗಳು - ವಿಶೇಷ ಸಂಕೇತಗಳು:\n" +"\n" +"%a = ಆಯ್ಕೆ ಮಾಡಲಾದ ಎಲ್ಲಾ ಅಡ್ಡಹೆಸರುಗಳು\n" +"%c = ಪ್ರಸಕ್ತ ಚಾನಲ್\n" +"%e = ಪ್ರಸಕ್ತ ಜಾಲಬಂಧದ ಹೆಸರು\n" +"%h = ಆಯ್ಕೆ ಮಾಡಲಾದ ಅಡ್ಡಹೆಸರಿನ ಆತಿಥೇಯ ಹೆಸರು\n" +"%m = ಗಣಕದ ಮಾಹಿತಿ\n" +"%n = ನಿಮ್ಮ ಅಡ್ಡಹೆಸರು\n" +"%s = ಆಯ್ಕೆ ಮಾಡಲಾದ ಅಡ್ಡಹೆಸರು\n" +"%t = ಸಮಯ/ದಿನಾಂಕ\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"ಸಂವಾದ ಗುಂಡಿಗಳು - ವಿಶೇಷ ಸಂಕೇತಗಳು:\n" +"\n" +"%a = ಆಯ್ಕೆ ಮಾಡಲಾದ ಎಲ್ಲಾ ಅಡ್ಡಹೆಸರುಗಳು\n" +"%c = ಪ್ರಸಕ್ತ ಚಾನಲ್\n" +"%e = ಪ್ರಸಕ್ತ ಜಾಲಬಂಧದ ಹೆಸರು\n" +"%h = ಆಯ್ಕೆ ಮಾಡಲಾದ ಅಡ್ಡಹೆಸರಿನ ಆತಿಥೇಯ ಹೆಸರು\n" +"%m = ಗಣಕದ ಮಾಹಿತಿ\n" +"%n = ನಿಮ್ಮ ಅಡ್ಡಹೆಸರು\n" +"%s = ಆಯ್ಕೆ ಮಾಡಲಾದ ಅಡ್ಡಹೆಸರು\n" +"%t = ಸಮಯ/ದಿನಾಂಕ\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"CTCP ಪ್ರತ್ಯುತ್ತರಗಳು - ವಿಶೇಷ ಸಂಕೇತಗಳು:\n" +"\n" +"%d = ದತ್ತಾಂಶ (ಸಂಪೂರ್ಣ ctcp)\n" +"%e = ಪ್ರಸಕ್ತ ಜಾಲಬಂಧದ ಹೆಸರು\n" +"%m = ಗಣಕದ ಹೆಸರು\n" +"%s = ctcp ಅನ್ನು ಕಳುಹಿಸಿದವರ ಅಡ್ಡಹೆಸರು\n" +"%t = ಸಮಯ/ದಿನಾಂಕ\n" +"%2 = ಪದ 2\n" +"%3 = ಪದ 3\n" +"&2 = ಪದ 2 ರಿಂದ ಸಾಲಿನ ಕೊನೆಯವರೆಗೆ\n" +"&3 = ಪದ 3 ರಿಂದ ಸಾಲಿನ ಕೊನೆಯವರೆಗೆ\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"URL ಹ್ಯಾಂಡ್ಲರುಗಳು - ವಿಶೇಷ ಸಂಕೇತಗಳು:\n" +"\n" +"%s = URL ವಾಕ್ಯಾಂಶ\n" +"\n" +"ಒಂದು ಆಜ್ಞೆಯ ಎದುರು ! ಅನ್ನು ಸೇರಿಸುವುದರಿಂದ\n" +"ಅದನ್ನು XChat ಬದಲಿಗೆ ಶೆಲ್‌ಗೆ ಕಳಿಸಬೇಕು\n" +"ಎಂದು ಸೂಚಿಸುತ್ತದೆ" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: ಬಳಕೆದಾರರಿಂದ ಸೂಚಿತ ಆಜ್ಞೆಗಳು" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: ಬಳಕೆದಾರಪಟ್ಟಿಯ ಪುಟಿಕೆ ಮೆನು" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "ಇದರೊಂದಿಗೆ ಬದಲಿಸು" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: ಬದಲಿಸು" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: URL ಹ್ಯಾಂಡ್ಲರುಗಳು" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: ಬಳಕೆದಾರಪಟ್ಟಿ ಗುಂಡಿಗಳು" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: ಸಂವಾದ ಗುಂಡಿಗಳು" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: CTCP ಪ್ರತ್ಯುತ್ತರಗಳು" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "ಜಾಲಬಂಧ ಪಟ್ಟಿ(_s)..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "ಹೊಸ(_N)" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "ಪರಿಚಾರಕ ಹಾಳೆ..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "ಚಾನಲ್ ಹಾಳೆ..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "ಪರಿಚಾರಕ ವಿಂಡೊ..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "ಚಾನಲ್ ವಿಂಡೊ..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "ಪ್ಲಗ್‌ಇನ್ ಅಥವ ಸ್ಕ್ರಿಪ್ಟನ್ನು ಲೋಡ್ ಮಾಡು(_L)..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "ಹೊರನಡೆ(_Q)" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "ನೋಟ(_V)" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "ಮೆನು ಪಟ್ಟಿ(_M)" + +#: src/fe-gtk/menu.c:1592 +msgid "_Topic Bar" +msgstr "ವಿಷಯದ ಪಟ್ಟಿ(_T)" + +#: src/fe-gtk/menu.c:1593 +msgid "_User List" +msgstr "ಬಳಕೆದಾರರ ಪಟ್ಟಿ(_U)" + +#: src/fe-gtk/menu.c:1594 +msgid "U_serlist Buttons" +msgstr "ಬಳಕೆದಾರಪಟ್ಟಿ ಗುಂಡಿಗಳು(_s)" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "ಕ್ರಮದ ಗುಂಡಿಗಳು(_o)" + +#: src/fe-gtk/menu.c:1597 +msgid "_Channel Switcher" +msgstr "ಚಾನಲ್ ಬದಲಾವಣೆಗಾರ(_C)" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "ಹಾಳೆಗಳು(_T)" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "ವೃಕ್ಷ(_r)" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "ಜಾಲಬಂಧ ಮೀಟರುಗಳು(_N)" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "ಆಫ್" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "ನಕ್ಷೆ(ಗ್ರಾಫ್)" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "ಪರಿಚಾರಕ(ಸರ್ವರ್‍)(_S) " + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "ಸಂಪರ್ಕ ಕಡಿದುಹಾಕು(_D)" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "ಮರಳಿ ಸಂಪರ್ಕಸಾಧಿಸು(_R)" + +#: src/fe-gtk/menu.c:1613 +msgid "Join a Channel..." +msgstr "ಒಂದು ಚಾನಲ್ ಅನ್ನು ಸೇರು..." + +#: src/fe-gtk/menu.c:1614 +msgid "List of Channels..." +msgstr "ಚಾನಲ್‌ಗಳ ಪಟ್ಟಿ..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "ಆಚೆ ಹೋಗಲಾಗಿದೆ ಎಂದು ಸೂಚಿಸಲಾಗಿದೆ" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "ಬಳಕೆದಾರ ಮೆನು(_U)" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "ಸಿದ್ಧತೆಗಳು(_e)" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "ಆದ್ಯತೆಗಳು(_P)" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "ಸುಧಾರಿತ" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "ಸ್ವಯಂ ಬದಲಾವಣೆ..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "CTCP ಪ್ರತ್ಯುತ್ತರಗಳು..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "ಸಂವಾದ ಗುಂಡಿಗಳು..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "ಕೀಲಿಮಣೆ ಶಾರ್ಟ್-ಕಟ್‌ಗಳು..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "ಪಠ್ಯ ಘಟನೆಗಳು..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "URL ಹ್ಯಾಂಡ್ಲರುಗಳು..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "ಬಳಕೆದಾರ ಆಜ್ಞೆಗಳು..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "ಬಳಕೆದಾರಪಟ್ಟಿ ಗುಂಡಿಗಳು..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "ಬಳಕೆದಾರಪಟ್ಟಿ ಪುಟಿಕೆಗಳು..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "ವಿಂಡೊ(_W)" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "ನಿಷೇಧ ಪಟ್ಟಿ..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "ಚಿಹ್ನೆಯ ನಕ್ಷೆ..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "ನೇರವಾದ ಮಾತುಕತೆ..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "ಕಡತ ವರ್ಗಾವಣೆಗಳು..." + +#: src/fe-gtk/menu.c:1641 +msgid "Friends List..." +msgstr "ಗೆಳೆಯರ ಪಟ್ಟಿ..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "ಪಟ್ಟಿಯನ್ನು ಆಲಕ್ಷಿಸು..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "ಪ್ಲಗಿನ್‌ಗಳು ಹಾಗು ಸ್ಕ್ರಿಪ್ಟುಗಳು..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "ಕಚ್ಚಾ(ರಾ) ದಾಖಲೆ..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "URL ಸೆಳೆದುಕೊಳ್ಳುವವ..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "ಗುರುತಿನ ಗೆರೆಯನ್ನು ಮರಳಿ ಹೊಂದಿಸು" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "ಪಠ್ಯವನ್ನು ಅಳಿಸು(_l)" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "ಪಠ್ಯಕ್ಕಾಗಿ ಹುಡುಕು..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "ಪಠ್ಯವನ್ನು ಉಳಿಸು..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "ನೆರವು(_H)" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "ವಿಷಯಗಳು(_C)" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "ಅಪ್‌ಡೇಟ್‌ಗಳಿಗಾಗಿ ಹುಡುಕು" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "ಇದರ ಬಗ್ಗೆ(_A)" + +#: src/fe-gtk/menu.c:2147 +msgid "_Attach" +msgstr "ಲಗತ್ತಿಸು(_A)" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "ಕೊನೆಯ ಬಾರಿಗೆ ಕಂಡಿದ್ದು" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "ಆಫ್‍ಲೈನ್" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "ಎಂದಿಗೂ ಇಲ್ಲ" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "%d ನಿಮಿಷಗಳ ಹಿಂದೆ" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "ಆನ್‍ಲೈನ್" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "ಸೇರಿಸಲು ಅಡ್ಡಹೆಸರುಗಳನ್ನು ನಮೂದಿಸಿ:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "ಈ ಜಾಲಬಂಧಗಳಲ್ಲಿ ಸೂಚಿಸಿ:" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "ವಿರಾಮಚಿಹ್ನೆಗಳಿಂದ ಬೇರ್ಪಡಿಸಲಾದ ಅಂಗೀಕರಿಸಲಾದ ಜಾಲಬಂಧಗಳ ಪಟ್ಟಿ." + +#: src/fe-gtk/notifygui.c:413 +msgid "XChat: Friends List" +msgstr "XChat: ಗೆಳೆಯರ ಪಟ್ಟಿ" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "ಸಂವಾದಚೌಕವನ್ನು ತೆರೆ" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" +"ಬಲೂನ್ ಎಚ್ಚರಿಕೆಗಳನ್ನು ತೆರೆಯಲು 'notify-send' ಕಂಡುಬಂದಿಲ್ಲ.\n" +"ದಯವಿಟ್ಟು libnotify ಅನ್ನು ಅನುಸ್ಥಾಪಿಸಿ." + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "XChat: ನೀವು %u ಜಾಲಬಂಧಗಳೊಂದಿಗೆ ಹಾಗು %u ಚಾನಲ್‌ನೊಂದಿಗೆ ಸಂಪರ್ಕಿತಗೊಂಡಿದ್ದೀರಿ" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "ಮರಳಿ ಸ್ಥಾಪಿಸು(_R)" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "ಅಡಗಿಸು(_H)" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "ಮಿನುಗಿಸು(_B)" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "ಚಾನಲ್ ಸಂದೇಶ" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "ಖಾಸಗಿ ಸಂದೇಶ" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "ಹೈಲೈಟ್ ಮಾಡಲಾದ ಸಂದೇಶ" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "ಸ್ಥಿತಿಯನ್ನು ಬದಲಾಯಿಸು(_C)" + +#: src/fe-gtk/plugin-tray.c:602 +msgid "_Away" +msgstr "ಆಚೆ ಹೋಗಲಾಗಿದೆ(_A)" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "ಹಿಂದೆ(_B)" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat: ಇವರಿಂದ ಹೈಲೈಟ್ ಮಾಡಲಾದ ಸಂದೇಶ : %s (%s)" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat: %u ರವರು ಸಂದೇಶವನ್ನು ಹೈಲೈಟ್ ಮಾಡಿದ್ದಾರೆ, ಇತ್ತೀಚಿನದು: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat: ಇವರಿಂದ ಬಂದ ಹೊಸ ಸಾರ್ವಜನಿಕ ಸಂದೇಶಗಳು: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat: %u ಹೊಸ ಸಾರ್ವಜನಿಕ ಸಂದೇಶಗಳು." + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat: ಇವರಿಮದ ಖಾಸಗಿ ಸಂದೇಶ: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "XChat: %u ರವರಿಂದ ಖಾಸಗಿ ಸಂದೇಶ, ಇತ್ತೀಚಿನದು: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat: ಇವರು ಕಡತವನ್ನು ನೀಡಲು ಬಯಸಿದ್ದಾರೆ: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "XChat: %u ರು ಕಡತ ನೀಡಲು ಬಯಸಿದ್ದಾರೆ, ಇತ್ತೀಚಿನದು: %s (%s)" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "ಆವೃತ್ತಿ" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "ವಿವರಣೆ" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "ಅನುಸ್ಥಾಪಿಸಲು ಪ್ಲಗ್‌ಇನ್ ಅಥವ ಸ್ಕ್ರಿಪ್ಟನ್ನು ಆಯ್ಕೆ ಮಾಡಿ" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: ಪ್ಲಗಿನ್‍ಗಳು ಹಾಗು ಸ್ಕ್ರಿಪ್ಟುಗಳು" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "ಲೋಡ್‌ ಮಾಡು(_L)..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "ಅನ್‌ಲೋಡ್‌ ಮಾಡು(_U)" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "ಹೀಗೆ ಉಳಿಸು..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: Rawlog (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "rawlog ಅನ್ನು ಖಾಲಿಮಾಡಿ" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "ಈ ಹುಡುಕಾಟಕ್ಕಾಗಿ ನೀವು ತೆರೆದ ವಿಂಡೊವು ಈಗ ಅಸ್ತಿತ್ವದಲ್ಲಿ ಇಲ್ಲ." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "ಹುಡುಕುವಿಕೆಯು ಕೊನೆಯನ್ನು ತಲುಪಿದೆ, ಕಂಡುಬಂದಿಲ್ಲ." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: ಹುಡುಕು" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "ಕೇಸ್ ಅನ್ನು ತಾಳೆಮಾಡು(_M)" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "ಹಿಂದಕ್ಕೆ ಹುಡುಕು(_b)" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "ಹುಡುಕು(_F)" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "ಹೊಸ ಜಾಲಬಂಧ" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "ಜಾಲಬಂಧ \"%s\" ಹಾಗು ಅದರ ಎಲ್ಲಾ ಪರಿಚಾರಕಗಳನ್ನು ನಿಜವಾಗಿಯೂ ತೆಗೆದುಹಾಕಬೇಕೆ?" + +#: src/fe-gtk/servlistgui.c:740 +msgid "#channel" +msgstr "#channel" + +#: src/fe-gtk/servlistgui.c:850 +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: ಅಚ್ಚುಮೆಚ್ಚಿನ ಚಾನಲ್‌ಗಳು (ಸ್ವಯಂ-ಸೇರ್ಪಡೆ ಪಟ್ಟಿ)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "ನೀವು %s ದೊಂದಿಗೆ ಸಂಪರ್ಕ ಸಾಧಿಸಿದಾಗ ಈ ಚಾನಲ್‌ಗಳಿಗೆ ಸೇರಿಸಲಾಗುತ್ತದೆ." + +#: src/fe-gtk/servlistgui.c:906 +msgid "Key (Password)" +msgstr "ಕೀಲಿ(ಗುಪ್ತಪದ)" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "ಸಂಪಾದನೆ(_E)" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "%s ಅನ್ನು ತೆಗೆದುಹಾಕಲಾಗಿದೆ." + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "%s ಅನ್ನು ಸೇರಿಸಲಾಗಿದೆ." + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "ಬಳಕೆದಾರ ಹೆಸರು ಹಾಗು ನಿಜವಾದ ಹೆಸರು ಇವುಗಳನ್ನು ಖಾಲಿ ಬಿಡುವಂತಿಲ್ಲ." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: %s ಅನ್ನು ಸಂಪಾದಿಸು" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "%s ಗಾಗಿನ ಪರಿಚಾರಕಗಳು" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "ಆಯ್ದ ಪರಿಚಾರಕದೊಂದಿಗೆ(ಸರ್ವರ್‍) ಮಾತ್ರ ಸಂಪರ್ಕ ಜೋಡಿಸು" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "ಸಂಪರ್ಕವು ವಿಫಲಗೊಂಡಲ್ಲಿ ಎಲ್ಲಾ ಪರಿಚಾರಕದಾದ್ಯಂತ ಆವರ್ತನಗೊಳಿಸಬೇಡ. " + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "ನಿಮ್ಮ ವಿವರಗಳು" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "ಜಾಗತಿಕ ಬಳಕೆದಾರ ಮಾಹಿತಿಯನ್ನು ಬಳಸು" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "ಅಡ್ಡ ಹೆಸರು(_N):" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "ಎರಡನೆಯ ಆಯ್ಕೆ:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "ಬಳಕೆದಾರ ಹೆಸರು(_U):" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "ನಿಜವಾದ ಹೆಸರು(_l):" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "ಸಂಪರ್ಕಿಸುತ್ತಿದೆ" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "ಆರಂಭಿಸಿದಾಗ ಈ ಜಾಲಬಂಧಕ್ಕೆ ತಾನಾಗಿಯೆ ಸಂಪರ್ಕಿತಗೊಳ್ಳು" + +#: src/fe-gtk/servlistgui.c:1462 +msgid "Bypass proxy server" +msgstr "ಪ್ರಾಕ್ಸಿ ಪರಿಚಾರಕವನ್ನು ಬೈಪಾಸ್ ಮಾಡು" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "ಈ ಜಾಲಬಂಧದಲ್ಲಿರುವ ಎಲ್ಲಾ ಪರಿಚಾರಕಗಳಿಗಾಗಿಯೂ SSL ಅನ್ನು ಬಳಸು" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "ಅಮಾನ್ಯವಾದ SSL ಪ್ರಮಾಣಪತ್ರವನ್ನು ಅಂಗೀಕರಿಸು" + +#: src/fe-gtk/servlistgui.c:1475 +msgid "_Favorite channels:" +msgstr "ಅಚ್ಚುಮೆಚ್ಚಿನ ಚಾನಲ್‌ಗಳು(_F):" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "ಸೇರಬೇಕಿರುವ ಚಾನಲ್‌ಗಳ ನಡುವೆ ವಿರಾಮ ಚಿಹ್ನೆಗಳಿರಬೇಕು, ಆದರೆ ಖಾಲಿ ಜಾಗಗಳಿರುವಂತಿಲ್ಲ!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "ಸಂಪರ್ಕ ಸಾಧಿಸುವ ಆಜ್ಞೆ:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"ಸಂಪರ್ಕಿತಗೊಂಡ ನಂತರ ಚಲಾಯಿಸಬೇಕಿರುವ ಹೆಚ್ಚುವರಿ ಆಜ್ಞೆ. ಒಂದಕ್ಕಿಂತ ಹೆಚ್ಚಿನದರ ಅಗತ್ಯವಿದ್ದಲ್ಲಿ, " +"ಇದನ್ಲು LOAD -e <ಕಡತದಹೆಸರು> ಗೆ ಹೊಂದಿಸಿ, ಇಲ್ಲಿ <ಕಡತದಹೆಸರು> ಎನ್ನುವುದು ಆಜ್ಞೆಗಳಿಂದ " +"ತುಂಬಿರುವ ಪಠ್ಯ ಕಡತವಾಗಿರುತ್ತದೆ." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Nickserv ಗುಪ್ತಪದ:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"ನಿಮ್ಮ ಅಡ್ಡಹೆಸರಿಗಾಗಿ ಗುಪ್ತಪದದ ಅಗತ್ಯವಿದ್ದಲ್ಲಿ, ಇಲ್ಲಿ ನಮೂದಿಸಿ. ಎಲ್ಲಾ IRC ಜಾಲಬಂಧಗಳು " +"ಇದನ್ನು ಬೆಂಬಲಿಲಿಸುವುದಿಲ್ಲ." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "ಪರಿಚಾರಕದ ಗುಪ್ತಪದ:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "ಪರಿಚಾರಕಕ್ಕಾಗಿನ ಗುಪ್ತಪದ, ಅನುಮಾವವಿದ್ದಲ್ಲಿ, ಖಾಲಿ ಬಿಡಿ." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "ಚಿಹ್ನೆಯ ನಕ್ಷೆ:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: ಜಾಲಬಂಧ ಪಟ್ಟಿ" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "ಬಳಕೆದಾರ ಮಾಹಿತಿ" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "ಮೂರನೆ ಆಯ್ಕೆ:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "ಜಾಲಬಂಧಗಳು" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "ಆರಂಭಿಸುವಾಗ ಜಾಲಬಂಧ ಪಟ್ಟಿಯನ್ನು ಬಿಟ್ಟುಬಿಡು" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "ಸಂಪಾದನೆ (_E)..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "ವಿಂಗಡಣೆ(_S)" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" +"ಜಾಲಬಂಧದ ಪಟ್ಟಿಯನ್ನು ವರ್ಣಮಾಲೆಯ ಆಧಾರದಲ್ಲಿ ವಿಂಗಡಿಸು. ಸಾಲಿನಲ್ಲಿ ಚಲಿಸಲು SHIFT-UP ಹಾಗು " +"SHIFT-DOWN ಅನ್ನು ಬಳಸಿ." + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "ಸಂಪರ್ಕ ಕಲ್ಪಿಸು (_o)" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "ಪಠ್ಯ ಚೌಕದ ಗೋಚರಿಕೆ" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "ಅಕ್ಷರಶೈಲಿ:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "ಹಿನ್ನಲೆ ಚಿತ್ರ:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "ಸ್ಕ್ರಾಲ್‌ಬ್ಯಾಕ್‌ ಸಾಲುಗಳು:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "ಬಣ್ಣಯುಕ್ತ ಅಡ್ಡಹೆಸರುಗಳು" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "IRC ಯಲ್ಲಿನ ಪ್ರತಿಯೊಬ್ಬರಿಗೂ ಪ್ರತ್ಯೇಕ ಬಣ್ಣವನ್ನು ನೀಡು" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "ಅಡ್ಡಹೆಸರುಗಳನ್ನು ಇಂಡೆಂಟ್ ಮಾಡು" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "ಅಡ್ಡಹೆಸರುಗಳನ್ನು ಬಲಕ್ಕೆ ಜೋಡಿಸಿ ಇರಿಸು" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "ಪಾರದರ್ಶ ಹಿನ್ನಲೆ" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "ಗುರುತಿನ ಗೆರೆಯನ್ನು ತೋರಿಸು" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "ಕೊನೆಯ ಬಾರಿಗೆ ಓದಲಾದ ಪಠ್ಯದ ಕೆಳಗೆ ಕೆಂಪು ಗೆರೆಯನ್ನು ಎಳೆ." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "ಪಾರದರ್ಶಕತೆಯ ಸಿದ್ಧತೆಗಳು" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "ಕೆಂಪು:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "ಹಸಿರು:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "ನೀಲಿ:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "ಸಮಯ ಸ್ವರೂಪಗಳು" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "ಸಮಯ ಸ್ವರೂಪವನ್ನು ಶಕ್ತಗೊಳಿಸು" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "ಸಮಯಸ್ವರೂಪದ ವಿನ್ಯಾಸ:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "ವಿವರಗಳಿಗಾಗಿ strftime ಮ್ಯಾನ್‌ಪೇಜ್‌ ಅನ್ನು ನೋಡಿ." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "ಕೊನೆಯದಾಗಿ ಮಾತನಾಡಿದ ಕ್ರಮ" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "ಇನ್‌ಪುಟ್ ಚೌಕ" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "ಪಠ್ಯ ಚೌಕದ ಅಕ್ಷರಗಳು ಹಾಗು ಬಣ್ಣಗಳನ್ನು ಬಳಸು" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "ಕಾಗುಣಿತ ಪರೀಕ್ಷೆ" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "ಅಡ್ಡಹೆಸರಿನ ಪೂರ್ಣಗೊಳಿಕೆ" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "ತಾನಾಗಿಯೆ ಅಡ್ಡಹೆಸರಿನ ಪೂರ್ಣಗೊಳಿಕೆ (ಟ್ಯಾಬ್ ಕೀಲಿ ಬಳಸದೆ)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "ಅಡ್ಡಹೆಸರು ಪೂರ್ಣಗೊಳಿಕೆಯ ಸಂಜ್ಞೆ:" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "ಅಡ್ಡಹೆಸರಿನ ಪೂರ್ಣಗೊಳಿಕೆಯ ವಿಂಗಡಣೆ:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "ಇನ್‌ಪುಟ್ ಪೆಟ್ಟಿಗೆ ಸಂಕೇತಗಳು" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "%nnn ಅನ್ನು ASCII ಮೌಲ್ಯವಾಗಿ ಅರ್ಥೈಸು" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "%C, %B ಅನ್ನು ಬಣ್ಣ, ಬೋಲ್ಡ್ ಇತ್ಯಾದಿಯಾಗಿ ಅರ್ಥೈಸು" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, Ops ಮೊದಲಿಗೆ" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, Ops ಕೊನೆಯಲ್ಲಿ" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "ವಿಂಗಡಿಸದೆ ಇರುವ" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "ಎಡ (ಮೇಲಿನ)" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "ಎಡ (ಕೆಳಗಿನ)" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "ಬಲ (ಮೇಲಿನ)" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "ಬಲ (ಕೆಳಗಿನ)" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "ಮೇಲೆ" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "ಕೆಳಗೆ" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "ಅಡಗಿಸಲಾದ" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "ಬಳಕೆದಾರರ ಪಟ್ಟಿ" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "ಬಳಕೆದಾರರ ಪಟ್ಟಿಯಲ್ಲಿ ಆತಿಥೇಯ ಹೆಸರುಗಳನ್ನು ತೋರಿಸು" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "ಇದರ ಆಧಾರದಲ್ಲಿ ವಿಭಜಿಸಲಾದ ಬಳಕೆದಾರ ಪಟ್ಟಿ:" + +#: src/fe-gtk/setup.c:205 +msgid "Show user list at:" +msgstr "ಇಲ್ಲಿರುವ ಬಳಕೆದಾರರ ಪಟ್ಟಿಯನ್ನು ತೋರಿಸು:" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "ಆಚೆ ಹೋಗುವಿಕೆಯ ಜಾಡನ್ನು ಇರಿಸುವಿಕೆ" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "" +"ಬಳಕೆದಾರರು ಆಚೆ ಹೋಗಿದ್ದರ ಜಾಡನ್ನು ಇರಿಸಿಕೊಳ್ಳಿ ಹಾಗು ಅವನ್ನು ಭಿನ್ನವಾದ ಬಣ್ಣದಲ್ಲಿ ಗುರುತು " +"ಹಾಕಿ" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "ಇದಕ್ಕಿಂತ ಚಿಕ್ಕದಾದ ಚಾನಲ್‌ಗಳಲ್ಲಿ:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "ಎರಡು ಬಾರಿ ಕ್ಲಿಕ್ ಮಾಡಿದಾಗಿನ ಕ್ರಿಯೆ" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "ವಿಂಡೊಗಳು" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "ಹಾಳೆಗಳು" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "ಯಾವಾಗಲೂ" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "ಮನವಿ ಸಲ್ಲಿಸಲಾದ ಹಾಳೆಗಳು ಮಾತ್ರ" + +#: src/fe-gtk/setup.c:242 +msgid "Tree" +msgstr "ವೃಕ್ಷ" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "ಸ್ವಿಚರ್ ಬಗೆ:" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "ಪರಿಚಾರಕ ಸಂದೇಶಗಳಿಗಾಗಿ ಒಂದು ಹೊಸ ಹಾಳೆಯನ್ನು ತೆರೆ" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "ಪರಿಚಾರಕ ಸೂಚನೆಗಳಿಗಾಗಿ ಒಂದು ಹೊಸ ಹಾಳೆಯನ್ನು ತೆರೆ" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "ಖಾಸಗಿ ಸಂದೇಶವು ಬಂದಾಗ ಒಂದು ಹೊಸ ಹಾಳೆಯನ್ನು ತೆರೆ" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "ಹಾಳೆಗಳನ್ನು ವರ್ಣಮಾಲೆ ಅಕ್ಷರದ ಆಧಾರದಲ್ಲಿ ವಿಂಗಡಿಸಿ" + +#: src/fe-gtk/setup.c:254 +msgid "Smaller text" +msgstr "ಸಣ್ಣ ಅಕ್ಷರಗಳು" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "ಹೊಸ ಹಾಳೆಗಳತ್ತ ಗಮನ ಹರಿಸು:" + +#: src/fe-gtk/setup.c:258 +msgid "Show channel switcher at:" +msgstr "ಇಲ್ಲಿ ಚಾನಲ್ ಬದಲಾವಣೆಗಾರನನ್ನು ತೋರಿಸು:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "ಹಾಳೆಯ ಲೇಬಲ್‌ ಅನ್ನು ಇಷ್ಟು ಚಿಕ್ಕದಾಗಿಸಿ" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "ಅಕ್ಷರಗಳು." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "ಹಾಳೆಗಳು ಹಾಗು ವಿಂಡೊಗಳು" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "ಚಾನಲ್‌ಗಳನ್ನು ಇದರಲ್ಲಿ ತೆರೆ:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "ಸಂವಾದ ಚೌಕಗಳನ್ನು ಇದರಲ್ಲಿ ತೆರೆ:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "ಸವಲತ್ತುಗಳನ್ನು ಇದರಲ್ಲಿ ತೆರೆ:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "" +"DCC, ಕಡೆಗಣಿಸು, ಸೂಚಿಸು ಇತ್ಯಾದಿಗಳನ್ನು ಹೊಸ ಹಾಳೆಗಳಲ್ಲಿ ಅಥವ ವಿಂಡೊಗಳಲ್ಲಿ ತೆರೆಯಬೇಕೆ?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "ಇಲ್ಲ" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "ಹೌದು" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "ಉಳಿಸುವ ಕಡತಕೋಶಕ್ಕಾಗಿ ಪ್ರತೀಬಾರಿಯೂ ಹುಡುಕು" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "ಕಡತಗಳು ಹಾಗು ಕೋಶಗಳು" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "ಕಡತವನ್ನು ನೀಡಿದಾಗ ತಾನಾಗಿಯೆ ಒಪ್ಪಿಕೊ:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "ಕಡತಗಳನ್ನು ಇಲ್ಲಿಗೆ ಡೌನ್‌ಲೋಡ್ ಮಾಡು:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "ಪೂರ್ಣಗೊಂಡ ಕಡತಗಳನ್ನು ಇಲ್ಲಿಗೆ ಸ್ಥಳಾಂತರಿಸು:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "ಅಡ್ಡಹೆಸರನ್ನು ಕಡತದ ಹೆಸರುಗಳಲ್ಲಿ ಉಳಿಸಿಕೊ" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "ಜಾಲಬಂಧ ಸಿದ್ಧತೆಗಳು" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "IRC ಪರಿಚಾರಕದಿಂದ ನನ್ನ ವಿಳಾಸವನ್ನು ಪಡೆದುಕೊ" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"IRC ಪರಿಚಾರಕವನ್ನು ನಿಜವಾದ ವಿಳಾಸಕ್ಕಾಗಿ ಕೇಳುತ್ತದೆ. ನಿಮ್ಮಲ್ಲಿ 192.168.*.* ವಿಳಾಸವಿದ್ದಲ್ಲಿ " +"ಇದನ್ನು ಬಳಸಿ!" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "DCC IP ವಿಳಾಸ:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "ಕಡತಗಳನ್ನು ನೀಡುತ್ತಿರುವಾಗ ನೀವು ಈ ವಿಳಾಸದಲ್ಲಿ ಇದ್ದೀರೆಂದು ತಿಳಿಸಿ" + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "ಮೊದಲ DCC ಕಳುಹಿಸುವ ಸಂಪರ್ಕಸ್ಥಾನ:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "ಕೊನೆಯ DCC ಕಳುಹಿಸುವ ಸಂಪರ್ಕಸ್ಥಾನ:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!Lಸಂಪೂರ್ಣ ವ್ಯಾಪ್ತಿಗಾಗಿ ಸೊನ್ನೆಯಲ್ಲಿಯೆ ಉಳಿಸಿ." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "ಗರಿಷ್ಟ ಕಡತ ವರ್ಗಾವಣೆ ವೇಗ (ಪ್ರತಿ ಸೆಕೆಂಡುಗಳಲ್ಲಿನ ಬೈಟ್‌ಗಳು)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "ಒಂದು ಅಪ್‌ಲೋಡ್:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "ಒಂದು ವರ್ಗಾವಣೆಗಾಗಿನ ಗರಿಷ್ಟ ವೇಗ" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "ಒಂದು ಡೌನ್‌ಲೋಡ್:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "ಎಲ್ಲಾ ಅಪ್‌ಲೋಡ್‌ಗಳೂ ಸೇರಿ:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "ಎಲ್ಲಾ ಕಡತಗಳುಗಾಗಿನ ಗರಿಷ್ಟ ವೇಗ" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "ಎಲ್ಲಾ ಡೌನ್‌ಲೋಡ್‌ಗಳನ್ನು ಒಟ್ಟಿಗೆ ಸೇರಿಸಿ:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "ಎಚ್ಚರಿಕೆಗಳು" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "ಟ್ರೇ ಬಲೂನುಗಳನ್ನು ಇಲ್ಲಿ ತೋರಿಸು:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "ಈ ಸಮಯದಲ್ಲಿ ಟ್ರೇ ಚಿಹ್ನೆಯನ್ನು ಮಿನುಗಿಸು:" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "ಈ ಸಮಯದಲ್ಲಿ ಕಾರ್ಯಪಟ್ಟಿಯನ್ನು ಮಿನುಗಿಸು:" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "ಈ ಸಮಯದಲ್ಲಿ ಬೀಪ್ ಸದ್ದೊಂದನ್ನು ಮಾಡು:" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "ವ್ಯವಸ್ಥೆಯ ಟ್ರೇ ಚಿಹ್ನೆಯನ್ನು ಶಕ್ತಗೊಳಿಸು" + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "ಹೈಲೈಟ್ ಮಾಡಲಾದ ಸಂದೇಶಗಳು" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" +"ಹೈಲೈಟ್ ಮಾಡಲಾದ ಸಂದೇಶಗಳು ನಿಮ್ಮ ಅಡ್ಡಹೆಸರನ್ನು ಉಲ್ಲೇಖಿಸಲಾದವುಗಳಾಗಿರುತ್ತವೆ, ಅದರ ಜೊತೆಗೆ:" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "ಹೈಲೈಟ್ ಮಾಡಲು ಹೆಚ್ಚುವರಿ ಪದಗಳು:" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "ಹೈಲೈಟ್ ಮಾಡಬೇಕಿರುವ ಅಡ್ಡಹೆಸರುಗಳು:" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "ಯಾವಾಗಲೂ ಹೈಲೈಟ್ ಮಾಡಬೇಕಿರುವ ಅಡ್ಡಹೆಸರುಗಳು:" + +#: src/fe-gtk/setup.c:347 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" +"ಅನೇಕ ಪದಗಳನ್ನು ವಿರಾಮ ಚಿಹ್ನೆಗಳ ಮೂಲಕ ಪ್ರತ್ಯೇಕಿಸಿ.\n" +"ವೈಲ್ಡ್‌ಕಾರ್ಡುಗಳಿಗೆ ಬೆಂಬಲವಿರುತ್ತದೆ." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "ಪೂರ್ವನಿಯೋಜಿತ ಸಂದೇಶಗಳು" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "ಹೊರನಡೆ:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "ಚಾನಲ್‌ನಿಂದ ಹೊರನಡೆಯಿರಿ:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "ಆಚೆ ಹೋಗಲಾಗಿದೆ:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "ಆಚೆ ಹೋಗಲಾಗಿದೆ" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "ಆಚೆ ಹೋಗುವ ಸಂದೇಶವನ್ನು ಪ್ರಕಟಿಸಿ" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "ನಿಮ್ಮ ಆಚೆ ಹೋಗುವ ಸಂದೇಶಗಳನ್ನು ಎಲ್ಲಾ ಚಾನಲ್‌ಗಳಿಗೂ ಪ್ರಕಟಿಸಿ" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "ಒಮ್ಮೆ ಮಾತ್ರ ಆಚೆಹೋದುದನ್ನು ತೋರಿಸು" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "ಒಂದೇ ರೀತಿಯ ಆಚೆ ಹೋಗುವ ಸಂದೇಶವನ್ನು ಒಮ್ಮೆ ಮಾತ್ರ ತೋರಿಸು" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಆಚೆ ಹೋದುದನ್ನು ತೆಗೆದು ಹಾಕಿ" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "ಸಂದೇಶಗಳನ್ನು ಕಳುಹಿಸುವ ಮೊದಲೆ ಆಚೆ ಹೋಗಲಾಗಿದೆ ಎಂಬ ಗುರುತನ್ನು ನೀವೆ ತೆಗೆದು ಹಾಕಿ" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "ಪ್ರೌಢ ಸಿದ್ಧತೆಗಳು" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸಂಪರ್ಕಿತಗೊಳ್ಳುವುದರಲ್ಲಿನ ವಿಳಂಬ:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "MODEಗಳನ್ನು ಕಚ್ಛಾ ರೂಪದಲ್ಲಿ ತೋರಿಸು" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "ಸೂಚನೆಯಲ್ಲಿನ Whois" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" +"ನಿಮ್ಮ ಸೂಚನಾ ಪಟ್ಟಿಯಲ್ಲಿನ ಬಳಕೆದಾರರು ಆನ್‌ಲೈನ್ ಬಂದಾಗ /WHOIS ಸಂದೇಶವನ್ನು ಕಳುಹಿಸುತ್ತದೆ" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "ಸೇರ್ಪಡೆಗೊಂಡ/ಹೊರಕ್ಕೆ ತೆರಳುವ ಸಂದೇಶಗಳನ್ನು ಅಡಗಿಸು" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "ಚಾನಲ್‌ಗೆ ಸೇರ್ಪಡೆಗೊಂಡ/ಹೊರಕ್ಕೆ ತೆರಳುವ ಸಂದೇಶಗಳನ್ನು ಅಡಗಿಸು" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "DCC ವಿಂಡೊಗಳನ್ನು ತಾನಾಗಿಯೆ ತೆರೆ" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "ಕಳುಹಿಸುವ ವಿಂಡೊ" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "ಸ್ವೀಕರಿಸುವ ವಿಂಡೊ" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "ಮಾತುಕತೆಯ ವಿಂಡೊ" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "ದಾಖಲಾತಿ" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "ಹಿಂದಿನ ಅಧಿವೇಶನದಿಂದ ಸ್ಕ್ರಾಲ್‌ಬ್ಯಾಕನ್ನು ತೋರಿಸು" + +#: src/fe-gtk/setup.c:387 +msgid "Enable logging of conversations to disk" +msgstr "ಸಂಭಾಷಣೆಗಳನ್ನು ಡಿಸ್ಕಿಗೆ ಬರೆಯುವುದನ್ನು ಶಕ್ತಗೊಳಿಸು" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "ದಾಖಲೆ ಕಡತದ ಹೆಸರು:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=ಪರಿಚಾರಕ %c=ಚಾನಲ್ %n=ಜಾಲಬಂಧ." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "ಸಮಯಮುದ್ರೆಗಳನ್ನು ದಾಖಲೆಗಳಲ್ಲಿ ಸೇರಿಸು" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "ಸಮಯಮುದ್ರೆ ಸ್ವರೂಪವನ್ನು ದಾಖಲಿಸು:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(ಅಶಕ್ತಗೊಳಿಸಲಾದ)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS ಪ್ರಾಕ್ಸಿ (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "ಎಲ್ಲಾ ಸಂಪರ್ಕಗಳು" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "IRC ಪರಿಚಾರಕ(ಸರ್ವರ್‍) ಮಾತ್ರ" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "DCC ಸ್ವೀಕಾರ ಮಾತ್ರ" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "ನಿಮ್ಮ ವಿಳಾಸ" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "ಇದಕ್ಕೆ ಬೈಂಡ್ ಮಾಡು:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "ಅನೇಕ ವಿಳಾಸವನ್ನು ಹೊಂದಿರುವ ಗಣಕಗಳಲ್ಲಿ ಮಾತ್ರ ಸಹಾಯಕವಾಗುತ್ತದೆ." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "ಪ್ರಾಕ್ಸಿ ಪರಿಚಾರಕ" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "ಆತಿಥೇಯಗಣಕ:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "ಸಂಪರ್ಕಸ್ಥಾನ:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "ಬಗೆ:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "ಇದಕ್ಕಾಗಿ ಪ್ರಾಕ್ಸಿ ಬಳಸಿ:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "ಪ್ರಾಕ್ಸಿ ದೃಢೀಕರಣ" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "ದೃಢೀಕರಣವನ್ನು ಬಳಸಿ (MS Proxy, HTTP ಅಥವ Socks5 ಅನ್ನು ಮಾತ್ರ)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "ದೃಢೀಕರಣವನ್ನು ಬಳಸಿ (HTTP ಅಥವ Socks5 ಅನ್ನು ಮಾತ್ರ)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "ಬಳಕೆದಾರ ಹೆಸರು:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "ಗುಪ್ತಪದ:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "ಒಂದು ಚಿತ್ರವನ್ನು ಆಯ್ದುಕೊಳ್ಳಿ" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "ಡೌನ್‌ಲೋಡ್ ಕಡತಕೋಶವನ್ನು ಆಯ್ಕೆ ಮಾಡಿ" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "ಅಕ್ಷರ ಶೈಲಿಯನ್ನು ಆಯ್ದುಕೊಳ್ಳಿ" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "ವೀಕ್ಷಿಸು..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "ಗುರುತಿಸಲಾದ ಬಳಕೆದಾರರನ್ನು ಇದರೊಂದಿಗೆ ಗುರುತುಹಾಕಿ: " + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "ಗುರುತಿಸದೆ ಇರುವ ಬಳಕೆದಾರರನ್ನು ಇದರೊಂದಿಗೆ ಗುರುತುಹಾಕಿ: " + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "ದತ್ತಾಂಶವನ್ನು ಹೊಂದಿರುವ ಕಡತಕೋಶವನ್ನು ತೆರೆ" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "ಬಣ್ಣವನ್ನು ಆಯ್ಕೆಮಾಡಿ" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "ಪಠ್ಯ ಬಣ್ಣಗಳು" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "mIRC ಬಣ್ಣಗಳು:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "ಸ್ಥಳೀಯ ಬಣ್ಣಗಳು:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "ಮುನ್ನೆಲೆ:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "ಹಿನ್ನಲೆ:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "ಪಠ್ಯವನ್ನು ಗುರುತುಹಾಕುವಿಕೆ" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "ಸಂಪರ್ಕಸಾಧನದ ಬಣ್ಣಗಳು" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "ಹೊಸ ದತ್ತಾಂಶ:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "ಗುರುತಿನ ಗೆರೆ:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "ಹೊಸ ಸಂದೇಶ" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "ಆಚೆ ಹೋದ ಬಳಕೆದಾರ:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "ಹೈಲೈಟ್:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "ಘಟನೆ" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "ಧ್ವನಿ ಕಡತ" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "ಧ್ವನಿ ಕಡತವನ್ನು ಆಯ್ದುಕೊಳ್ಳಿ" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "ಸದ್ದು ಮಾಡುವ ವಿಧಾನ:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "ಸದ್ದು ಮಾಡುವ ಬಾಹ್ಯ ಪ್ರೊಗ್ರಾಮ್(_p):" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "ಬಾಹ್ಯ ಪ್ರೊಗ್ರಾಮ್(_E)" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "ಸ್ವಯಂಚಾಲಿತ(_A)" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "ಧ್ವನಿ ಕಡತಗಳ ಕೋಶ(_d):" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "ಧ್ವನಿ ಕಡತ:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "ಜಾಲವೀಕ್ಷಣೆ(_B)..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "ಚಲಾಯಿಸು(_P)" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "ಸಂಪರ್ಕಸಾಧನ" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "ಪಠ್ಯ ಚೌಕ" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "ಬಳಕೆದಾರರ ಪಟ್ಟಿ" + +#: src/fe-gtk/setup.c:1703 +msgid "Channel switcher" +msgstr "ಚಾನಲ್ ಬದಲಾವಣೆಗಾರ" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "ಬಣ್ಣಗಳು" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "ಮಾತುಕತೆ" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "ಸಾಮಾನ್ಯ" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "ಸದ್ದು" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "ಜಾಲಬಂಧ ಸಿದ್ಧತೆ" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "ಕಡತ ವರ್ಗಾವಣೆಗಳು" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "ಪಂಗಡಗಳು" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" +"ವೃಕ್ಷವನ್ನು ನೀವು ಮೇಲೆ ಅಥವ ಕೆಳಗೆ ಇರಿಸುವಂತಿಲ್ಲ!\n" +"ದಯವಿಟ್ಟು ಮೊದಲು <b>ನೋಟ</b>ದ ಮೆನುವಿನಲ್ಲಿ <b>ಹಾಳೆಗಳ</b> ವಿನ್ಯಾಸಕ್ಕೆ ಬದಲಾಯಿಸಿ." + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" +"ಮಾಡಲಾದ ಕೆಲವು ಬದಲಾವಣೆಗಳು ಸಂಪೂರ್ಣವಾಗಿ ಕಾರ್ಯರೂಪಕ್ಕೆ ಬರಲು ಮರಳಿ ಆರಂಭಿಸುವ " +"ಅಗತ್ಯವಿರುತ್ತದೆ." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*ಎಚ್ಚರಿಕೆ*\n" +"DCC ಅನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗು ನಿಮ್ಮ ನೆಲೆ ಕೋಶಕ್ಕೆ ಒಪ್ಪಿಕೊಳ್ಳುವುದು\n" +"ಅಪಾಯಕಾರಿ ಹಾಗು ಮೋಸದ ಬಳಕೆಗೆ ಕಾರಣವಾಗಬಹುದು. ಉದಾ:\n" +"ಯಾರಾದರೂ ನಿಮಗೆ ಒಂದು .bash_profile ಅನ್ನು ಕಳುಹಿಸಬಹುದು" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: ಆದ್ಯತೆಗಳು" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "ವಾಕ್ಯಾಂಶವನ್ನು ಪಾರ್ಸ್ ಮಾಡುವಲ್ಲಿ ದೋಷ ಉಂಟಾಗಿದೆ" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "ಈ ಸಂಜ್ಞೆಯು ಕೇವಲ %d args ಅನ್ನು ರವಾನಿಸಿದೆ, $%d ಅಮಾನ್ಯವಾಗಿದೆ" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "ಪಠ್ಯ ಕಡತವನ್ನು ಮುದ್ರಿಸು" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "ಘಟನೆಗಳನ್ನು ಸಂಪಾದಿಸು" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ ಸಂಖ್ಯೆ" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "ಇದರಿಂದ ಲೋಡ್ ಮಾಡು..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "ಎಲ್ಲವನ್ನೂ ಪರೀಕ್ಷಿಸಿ" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: URL ಸೆಳೆದುಕೊಳ್ಳುವವ" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "ಪಟ್ಟಿಯನ್ನು ಅಳಿಸಿ ಹಾಕಿ" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "ಆಯ್ಕೆ ಮಾಡಲಾದ URL ಅನ್ನು ಕಾಪಿ ಮಾಡಿ" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "ಕಾಪಿ ಮಾಡು" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "ಪಟ್ಟಿಯನ್ನು ಕಡತಕ್ಕೆ ಉಳಿಸಿ" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d ops, %d ಒಟ್ಟು" diff --git a/etc/wyatt8740/po/ko.po b/etc/wyatt8740/po/ko.po new file mode 100644 index 0000000..1dfa45e --- /dev/null +++ b/etc/wyatt8740/po/ko.po @@ -0,0 +1,5636 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: \n" +"Last-Translator: Jaesung <jaesung@liberotown.com>\n" +"Language-Team: Korean <translation-team-ko@lists.sourceforge.net>\n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "~/.xchat2 디렉터리를 생성할 수 없습니다." + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "바빠요~" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "전 이만 갑니다." + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* IRC를 루트 계정으로 실행했습니다!!\n" +" 새로운 사용자 계정를 생성하고 로그인하여 실행하십시오.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "대기 중" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "활성" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "실패" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "확인" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "접속" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "취소됨" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "%s에 접근할 수 없습니다.\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "오류" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s님이 \"%s\"(을)를 전송합니다. 수락하시겠습니까?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "DCC가 활성화되지 않았습니다\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "예 " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "아니오 " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "%s님으로부터 너무 많은 CTCP 요청을 받고 있으므로 %s님을 무시합니다.\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "" +"%s님으로부터 너무 많은 MSG 요청을 받고 있으므로 setting_gui_auto_open_dialog " +"값을 OFF로 설정합니다.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s 접속됨\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s 종료함\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "" +"대화에 참여하고 있지 않습니다. \"/join #대화방 제목\"으로 대화에 참여하세" +"요.\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "" +"접속되어 있지 않습니다. \"/server <서버 주소> [<포트>]\"명령으로 접속하세" +"요.\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "이미 자리 비움 설정 됨: %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "이미 돌아옴으로 표시됨.\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "실행하려면 /bin/sh가 필요합니다!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "사용 가능한 명령:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "사용자 정의 명령:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "플러그인 정의 명령:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "/HELP <명령>, 또는 /HELP -l 명령을 치면 더 많은 정보를 볼 수 있습니다." + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "'%s' 인수는 알 수 없으므로 무시합니다." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "확장 기능을 찾을 수 없습니다.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "해당 확장 기능을 제거했습니다.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <단추명> <동작>, 사용자 목록에 단추를 추가합니다. " + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <명령>, 참여 중인 모든 대화방에 명령을 수행합니다." + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHANL <명령>, 참여 중인 모든 대화방에 명령을 수행합니다." + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <명령>. 접속 중인 모든 서버에서 명령을 수행합니다." + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<이유>], 자리 비움으로 표시합니다." + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "BACK, 돌아옴으로 표시 (자리 비우지 않음)" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <매스크> [<형태>], 현재 대화방에서 해당되는 매스크에 속한 모든 사람을 대" +"화에 참여하지 못하게 합니다. 만약 이미 대화방에 있다면 그들은 강제 퇴장되지 " +"않습니다.(대화방 관리 권한 필요)" + +#: src/common/outbound.c:3506 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <변수> [<값>]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "CLEAR [ALL|HISTORY], 현재 텍스트 창 및 명령어 기록을 지웁니다" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, 현재 창이나 탭을 닫습니다." + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" +"COUNTRY [-s] <코드|wildcard>, 국가 코드를 찾습니다. 예: au = 오스트레일리아" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <대화명> <메시지>, CTCP 메시지를 해당 사용자에게 보냅니다. 널리 쓰이는 " +"메시지는 VERSION과 USERINFO입니다." + +#: src/common/outbound.c:3516 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "" +"CYCLE [<대화방], 현재 대화방이나 주어진 대화방을 나갔다가 바로 다시 들어옵니" +"다." + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <대화명> - 해당 사용자에게 파일 받기를 시도합니" +"다.\n" +"DCC SEND [-maxcps=#] <대화명> [파일] - 해당 사용자에게 파일을 전송합니다.\n" +"DCC PSEND [-maxcps=#] <대화명> [파일] - 해당 사용자에게 파일을 Passive 모드" +"로 전송합니다.\n" +"DCC LIST - DCC 목록을 표시합니다.\n" +"DCC CHAT <대화명> - 해당 사용자와 1:1 대화를 시도합니" +"다.\n" +"DCC PCHAT <대화명> - 해당 사용자와 1:1 대화를 Passive 모드" +"로 시도합니다.\n" +"DCC CLOSE <명령> <대화명> <파일> 예제:\n" +" /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <대화명>, 현재 대화방에서 제한된 관리 권한을 박탈합니다.(관리 권한 필" +"요)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <단추명>, 사용자 목록에서 단추를 지웁니다." + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <대화명>, 현재 대화방에서 관리 권한을 박탈합니다.(관리 권한 필요)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <대화명>, 현재 대화방에서 해당 사용자의 발언권을 박탈합니다.(관리 권" +"한 필요)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, 서버와 연결을 끊습니다" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <대화명|호스트|IP>, 해당 사용자의 IP주소를 찾습니다." + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <글월>, 글월을 대화창에 출력합니다." + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <명령>, 명령을 실행합니다. 만약 -o 인수를 사용하면 현재 대화방에 결" +"과를 출력하고, 그렇지 않다면 자신에게만 보여줍니다." + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, 프로세스 SIGCONT를 보냅니다." + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], 현재 실행 중인 세션을 종료시킵니다. 만약 -9가 주어진다면 프로" +"세스는 SIGKILL을 받아 강제 종료됩니다." + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, 프로세스 SIGSTOP을 보냅니다." + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, 프로세스의 표준 입력으로 데이터를 보냅니다." + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, 현재 서버에 보낼 목록을 제거합니다." + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" +"GATE <호스트> [<포트>], 해당 호스트를 프록시로 사용합니다. 포트의 기본값은 23" +"입니다." + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <대화명> <암호>, 유령으로 설정된 사용자의 접속을 종료시킵니다." + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" +"HOP <대화명>, 해당 사용자에게 제한된 관리 권한을 부여합니다.(관리 권한 필요)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <암호>, 자신을 NickServ로부터 인증합니다." + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <매스크> <형태..> <추가 인수..>\n" +" 매스크 - 무시할 호스트 매스크, 예: *!*@*.aol.com\n" +" 형태 - 무시할 형태, 사용가능한 값:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" 추가 인수 - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <대화명> [<대화방>], 누군가를 대화방에 초대합니다. 대화방의 기본값은 " +"현재 대화방 입니다.(관리 권한 필요)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <대화방> [<암호>], 대화방에 참여합니다." + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <대화명>, 해당 사용자를 현재 대화방에서 강제 퇴장시킵니다.(관리 권한 필" +"요)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <대화명>, 해당 사용자를 대화방에서 강제 퇴장시키고 다시 참여하지 못하" +"게 합니다.(관리 권한 필요)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, 새로운 lag 확인" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <문자열>, 기억 공간에서 해당 문자열을 검색합니다" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <파일>, 추가 기능이나 혼잣말을 읽어들입니다." + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, 현재 대화방에서 모든 관리자의 권한을 박탈합니다.(관리 권한 필요)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, 현재 대화방에서 모든 관리자의 권한을 박탈합니다.(관리 권한 필요)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <행동>, 현재 대화방에서 행동을 취합니다.(행동은 3자에게 사용합니다. 예: /" +"me 후다다닭==33 )" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, 현재 대화방에서 모든 사람을 강제 퇴장시킵니다.(관리 권한 필요)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, 현재 대화방의 모든 사용자에게 관리 권한을 부여합니다.(관리 권한 필요)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <대화명> <메시지>, 귓속말을 보냅니다." + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, 현재 대화방에 참여하고 있는 모든 대화명을 출력합니다." + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <대화명> <메시지>, CTCP 알림 메시지를 보냅니다." + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <호스트이름> [<포트>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <대화명>, 당신의 대화명을 설정하거나 변경합니다." + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <대화명/대화방> <메시지>, 공지를 보냅니다. 공지사항은 자동으로 취해지" +"는 메시지의 형태입니다." + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n 네트워크1[,네트워크2,...]] [<대화명>], 알림 목록을 표시하거나 목록" +"에 대화명을 추가합니다." + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" +"OP <대화명>, 해당 사용자에게 대화방 관리 권한을 부여합니다.(관리 권한 필요)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" +"PART [<대화방>] [<이유>], 대화방을 나갑니다. 대화방의 기본값은 현재 대화방입" +"니다." + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <대화명 | 대화방>, 사용자나 대화방에 CTCP 핑을 보냅니다." + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "QUERY [-nofocus] <대화명>, 누군가에 대한 새 privmsg 창을 엽니다" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<이유>], 서버와 접속을 종료합니다." + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <텍스트>, 서버에 원시 메시지를 보냅니다." + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<호스트>] [<포트>] [<암호>], 그냥 /RECONNECT는 현재 서버를 " +"재접속하고, /RECONNECT ALL을 사용하면 접속되어 있는 모든 서버에 재접속합니다." + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<호스트>] [<포트>] [<암호>], 그냥 /RECONNECT는 현재 서버를 재접속" +"하고, /RECONNECT ALL을 사용하면 접속되어 있는 모든 서버에 재접속합니다." + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <텍스트>, xchat에 원시 자료를 보냈을때, 만약 IRC 서버로부터 받은 자료가 " +"있다면 수신합니다." + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <텍스트>, 현재 창의 객체에게 텍스트를 보냅니다." + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <대화명> [<파일>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <호스트> <포트> <대화방>, 접속 후, 대화방에 자동 참여하거나 " +"대화방을 개설합니다." + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN <호스트> <포트> <대화방>, 접속 후, 대화방에 자동 참여하거나 대화방" +"을 개설합니다." + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <호스트> [<포트>] [<암호>], 서버에 접속합니다. 일반적인 접속의 " +"포트는 6667이며 ssl 접속을 위해 9999를 사용합니다." + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER [-ssl] <호스트> [<포트>] [<암호>], 서버에 접속합니다. 일반적인 접속의 " +"포트는 6667입니다." + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <변수> [<값>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<위치>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<주제>], 주제가 주어지면 주어진 주제를 설정하고, 그렇지 않다면 현재 주" +"제를 보여 줍니다." + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" +"\n" +"TRAY -f <제한시간> <파일1> [<파일2>] 트레이에서 두 개의 아이콘을 깜빡이게 합" +"니다.\n" +"TRAY -f <파일 이름> 트레이에 해당 아이콘으로 설정합니다.\n" +"TRAY -i <번호> 내장된 아이콘을 깜빡이게 합니다.\n" +"TRAY -t <텍스트> 트레이에 도움말을 표시합니다.\n" +"TRAY -b <제목> <텍스트> 트레이에 제목을 표시합니다." + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "" +"UNBAN <매스크> [<매스크>...], 정의된 매스크를 입장 금지 목록에서 해제합니다." + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <매스크> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <이름>, 추가 기능이나 혼잣말의 사용을 중지합니다." + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, URL을 웹브라우저에서 엽니다." + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <대화명1> <대화명2> 기타, 대화방의 사용자 목록에서 해당 대" +"화명을 강조하여 표시합니다." + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <대화명>, 해당 사용자에게 발언권을 부여합니다.(관리 권한 필요)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <메시지>, 모든 대화방에 메시지를 보냅니다." + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <메시지>, 현재 대화방의 모든 관리자에게 메시지를 보냅니다." + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "사용법: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"이 명령은 도움말이 없습니다..\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "해당 명령이 존재하지 않습니다.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "사용자 명령에 잘못된 인수.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "너무 많은 사용자 명령. 취소됨." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "알 수 없는 명령. /help를 사용하십시오.\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "xchat_plugin_init 기호가 없음; 정말 xchat의 추가 기능입니까?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "정말 SSL이 사용가능한 서버와 포트입니까?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"호스트 이름 %s 를(을) 해석 할 수 없습니다.\n" +"당신의 IP 설정을 확인하십시오!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Proxy 연결 실패.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "%s의 다음 서버로 진행....\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"경고: \"%s\" 알 수 없는 문자셋입니다. %s 네트워크에서는 문자열 변환이 적용되" +"지 않습니다." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1님을 알림 목록에 추가했습니다." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1의 입장 금지 목록:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$t참여할 수 없음%C26 %B$1 %O(당신은 입장 금지당했습니다)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1님의 대화명은 이제 $2입니다." + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1님이 $2에 입장 금지했습니다." + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$t대화방 $1은(는) $2에 만들어졌습니다." + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O님이 %C26$2%C님에게 대화방 관리 권한을 박탈했습니다." + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O님이 %C26$2%C님에게 대화방 관리 권한을 박탈했습니다." + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O님이 %C26 $2님의 발언권을 박탈했습니다." + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1님이 $2(을)를 제거했습니다." + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O님이 %C26$2%C님에게 대화방 관리 권한을 부여했습니다." + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1의 초대 상태는 $2에 설정되었습니다." + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%U대화방 사용자 제목" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1님이 설정 $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22대화방 $1의 상태: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O님이 %C26$2님에게 대화방 관리 권한을 부여했습니다." + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1님이 대화방에서 $2을(를) 해제했습니다." + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1님이 $2 대화방의 초대 가능 상태를 해제했습니다." + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1님이 대화방 암호를 제거했습니다." + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1님이 사용자 제한을 해제했습니다." + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1님이 대화방 암호를 \"$2\"로 설정했습니다." + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1님이 대화방의 참여자 수를 $2명으로 제한했습니다." + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1님이 대화방 $2의 입장 금지 목록을 제거했습니다." + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O님이 %C26 $2님에게 발언권을 부여했습니다." + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22접속되었습니다. 로그인 중입니다...." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22 $1($2)의 포트 $3%O으로 접속 중입니다..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21접속 실패. 오류: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$t$2님으로부터 CTCP $1을(를) 받았습니다" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$t$2님으로부터 CTCP $1을(를) 받았습니다.($3에게)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$t$2님으로부터 CTCP Sound $1을(를) 받았습니다" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$t$2님으로부터 CTCP Sound $1을(를) 받았습니다.($3에게)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$t%C26$1님과 %ODCC CHAT이 취소되었습니다." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$t%C26$1님과 DCC CHAT 접속되었습니다 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$t%C26$1님과%O DCC CHAT의 접속이 끊김($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$t$1님으로부터 DCC CHAT 요청을 받았습니다." + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$t$1님에게 DCC CHAT 요청 중입니다" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$t이미 $1님에게 요청 중입니다." + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$tDCC $1 %C26 $2%O에 접속 실패 (err=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$t$2님으로부터 '$1%O'을(를) 받았습니다." + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 형태 송/수신 상태 크기 위치 파일 " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O." +"%010%C22*%O$tContents of packet: $2" +msgstr "" +"%C22*%O$tDCC 요청을 %C26$1%O로부터 받았습니다.%010%C22*%O$t패킷의 내용: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$t%C26$2%O님에게 %C26$1%O을(를) 전송합니다." + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tDCC 제공자를 찾을 수 없습니다." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC 받기%C26 $1%O님으로부터 %C26$2%O 받기가 취소되었습니다." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC 받기%C26$3%O님으로부터 %C26$1%O받기 완료 %C30[%C26$4%O " +"cps%C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC 받기%C26 $1%O님과 접속됨 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC 받기%C26$3%O님에게 %C26$1%O 받기 실패 ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC 받기: $1을 쓸 수 없습니다.($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "" +"%C22*%O$t파일%C26 $1%C은(는) 이미 있습니다. 이름에 %C26$2%O(을)를 추가합니다." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "" +"%C22*%O$t%C26$1%O님이 파일 %C26$2%C을(를) %C26$3%C부터 이어 받기를 요청했습니" +"다." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC 보내기%C26$1%O님에게 %C26$2%O 보내기 취소됨." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC 보내기%C26$2%O님에게 파일 %C26$1%O 보내기 완료 %C30[%C26$3%O " +"cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC 보내기 %C26$1%C님과 접속됨.%C30[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC 보내기%C26 $1%O을(를) %C26$2%O님에게 보내기 실패. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1%O님이 %C26$2%O를 보내셨습니다.(%C26$3 %Obytes)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %C지연됨 - 취소됨." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %O시간제한 - 취소됨." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1님은 알림 목록에서 삭제되었습니다." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$t접속 종료됨($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$t당신의 IP를 찾았습니다: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O님을 무시 목록에 추가했습니다." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "무시 목록의 %C26$1%O이(가) 변경됨." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "" +"%C24,18 호스트 매스크 귓말 알림 대화 CTCP 연결 초대 무시안함 " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O님을 무시 목록에서 했습니다." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " 무시 목록이 비어 있습니다." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "" +"%C22*%O$t대화방%C26 %B$1에 참여할 수 없습니다. %O(대화방이 초대만 가능한 상태" +"입니다)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "" +"%C22*%O$t%C26$2%O님이 당신을 대화방 %C26$1%O로 초대하고 계십니다.(%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3)님이 대화방 $2에 참여했습니다." + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$t대화방%C26 %B$1에 참여할 수 없습니다. %O(암호가 필요합니다)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1님이 $3에서 $2님을 강제 퇴장시켰습니다.(이유:$4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$t당신은 $1님으로부터 킬 당했습니다.(이유:$2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22공지사항 무시됨." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t대화명 \"$1\"이 이미 사용 중입니다. \"$2\"로 재시도합니다..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$t대화명이 이미 사용 중입니다. /NICK 명령으로 다른 대화명으로 변경하십" +"시오." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$t요청된 DCC가 없습니다." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$t현재 실행 중인 프로세스가 없습니다." + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$t알림 목록은 비어 있습니다." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B 알림 목록" + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1명의 사용자가 알림 목록에 있습니다." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$t알림: $1 오프라인입니다.($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$t알림: $1 온라인입니다.($3)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1님(%O%C23$2)께서 대화방 $3에서 퇴장했습니다." + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "" +"%C23*%O$t%C23$1님(%O%C23$2)께서 대화방 $3에서 퇴장했습니다." +"(%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$t$1으로부터 핑 회신: $2초" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$t$1초 동안 핑의 회신이 없으므로, 접속이 종료되었습니다." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$t프로세스가 이미 실행 중입니다." + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1님 끝내셨습니다.(%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1님이 상태를 설정했습니다.%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tIP 주소 %C26 $1을(를) 찾는 중%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22접속되었습니다." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22찾는 중 $1.." + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$t이전 접속이 중지됨 (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29 대화방 $1%C %C29의 주제는 $2입니다." + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1님이 주제를 $2(으)로 변경했습니다." + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "" +"%C29*%O$t%C29대화방 $1%C %C29의 주제는 $2%C %C29님이 설정했습니다.(위치: $3)" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$t알 수 없는 호스트. 입력 내용을 확인하십시오." + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "%C22*%O$t대화방 %C26%B$1%C에 참여할 수 없습니다 %O(참여인원수 제한)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26대화방 $1의 사용자:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %C님이 자리를 비우셨습니다 %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OWHOIS 목록의 끝." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O 잠수%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O 잠수%C26 $2%O, 접속:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O실제사용자@호스트%C27 $2%O, 실제 IP%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19당신은 대화방 $2에 참여합니다" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "" +"%C23*$t당신은 $3님으로부터 $2 대화방에서 강제 퇴장당했습니다.(이유:$4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$t당신은 $3에서 퇴장했습니다" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$t당신은 $3에서 퇴장했습니다 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$t당신은 대화방 %C26$2%O로 %C26$1%O님을 초대했습니다.(%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$t당신의 대화명은 $2입니다" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "로그 읽어 들임. 위치:" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** 기록 종료 : %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** 기록 시작 : %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* 로그 파일을 열 수 없습니다. 먼저\n" +" %s/xchatlogs 파일의 권한을 확인하십시오." + +#: src/common/text.c:961 +msgid "Left message" +msgstr "왼쪽 메시지" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "오른쪽 메시지" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "참여하는 사용자의 대화명" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "참여한 대화방" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "사용자의 호스트" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "대화명" + +#: src/common/text.c:973 +msgid "The action" +msgstr "행동" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "상태" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "정보 글월" + +#: src/common/text.c:980 +msgid "The text" +msgstr "글월" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "메시지" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "이전 대화명" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "새 대화명" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "주제를 변경한 사용자의 대화명" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "주제" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "대화방" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "입장 금지한 사람의 대화명" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "퇴장시킨 사람" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "대화방" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "이유" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "퇴장하는 사람의 대화명" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "시간" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "만든이" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "대화명" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "이유" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "호스트" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "사용자의 위치" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "x.x 형태의 시간 (아래를 보십시오)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "대화방 이동" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "소리" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "사용자의 대화명" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "CTCP 이벤트" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "암호를 설정한 사용자의 대화명" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "암호" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "인원 제한을 설정한 사용자의 대화명" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "인원 제한" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "관리 권한을 주는 사용자의 대화명" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "관리 권한을 받는 사용자의 대화명" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "제한된 관리 권한을 받은 사용자의 대화명" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "제한된 관리 권한을 주는 사용자의 대화명" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "발언권을 주는 사용자의 대화명" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "발언권을 받는 사용자의 대화명" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "입장 금지 설정을 한 사용자의 대화명" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "입장 금지 매스크" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "암호를 해제한 사용자의 대화명" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "인원 제한을 해제한 사용자의 대화명" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "관리 권한을 박탈한 사용자의 대화명" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "관리 권한을 박탈당한 사용자의 대화명" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "일부 관리 권한을 박탈한 사용자의 대화명" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "일부 관리 권한을 박탈당한 사용자의 대화명" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "발언권을 박탈한 사용자의 대화명" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "발언권을 박탈당한 사용자의 대화명" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "입장 금지을 해제한 사용자의 대화명" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "제외된 사용자의 대화명" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "제외 매스크" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "제외를 제거한 사용자의 대화명" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "초대한 사용자의 대화명" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "초대할 매스크" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "초대전용 설정을 해제한 사용자의 대화명" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "대화방 상태를 설정한 사용자의 대화명" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "상태 설정은 (+/-) 입니다." + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "상태 기호" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "대화방 설정 변경" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "사용자 이름" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "전체 이름" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "대화방 이용자는 /\"IRC 관리자\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "서버 정보" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "잠수 시간" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "접속 시간" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "자리를 비우는 이유" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "메시지" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "계정" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "실제 user@host" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "실제 IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "대화방 제목" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "글월" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "서버명" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "당신을 초대한 사용자의 대화명" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "참여자" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "사용할 대화명" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "대화명 다시 시도" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "포트" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "네트워크" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "상태 기호" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "IP 주소" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "DCC 형태" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "파일 이름" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "받을 위치" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "경로" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "위치" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "크기" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "DCC 문자" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "알림 항목의 수" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "이전 파일 이름" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "새 파일 이름" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "받는 이" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "호스트 매스크" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "호스트" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "패킷" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "초" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "초대할 사용자의 대화명" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "입장 금지 매스크" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "입장 금지를 설정한 사람" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "입장 금지 시간" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"상황 %s 설정 오류.\n" +"기본값을 사용합니다." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"소리 파일을 읽지 못함:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "원격 호스트에서 소켓이 닫힘" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "접속이 거부됨" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "호스트로 갈 경로가 없음" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "접속 시간 제한" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "해당 주소로 접근할 수 없음" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "접속이 초기화됨" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "어센션 섬" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "안도라" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "아랍 국가 연합" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "아프카니스탄" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "안티과와 바부다" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "앙귈라" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "알바니아" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "아르메니아" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "네덜란드" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "앙골라" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "안타티카" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "아르헨티나" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "DNS 역추적" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "아메리칸 사모아" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "오스트리아" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "북대서양 조약기구" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "오스트레일리아" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "아루바" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "올란드 제도" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "아케르바이젠" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "보스니아와 헬제고비나" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "발바도스" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "방글라데시" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "벨기에" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "버키나 패소" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "불가리아" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "바레인" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "버런디" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "비지니스" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "베닌" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "버뮤다" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "브루나이 달루살람" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "볼리비아" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "브라질" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "바하마" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "부탄" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "부벳섬" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "보스와나" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "베라루스" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "베리제" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "카나다" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "코코스 섬" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "콩고(Democratic Republic fo)" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "중앙 아프리카 공화국" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "콩고" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "스위스" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "코테 드이보르" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "쿡 섬" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "칠레" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "카메룬" + +#: src/common/util.c:898 +msgid "China" +msgstr "중국" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "콜롬비아" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "상업용 인터닉" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "코스타리카" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "세르비아와 몬테니그로" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "쿠바" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "카보베르데" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "크리스마스 섬" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "키프로스 공화국" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "체코 공화국" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "독일" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "동아프리카 공화국 - 지부티" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "덴마크" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "도미니카" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "도미니카 공확국" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "알제리아" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "에콰도르" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "교육 재단" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "에스토니아" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "이집트" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "서사하라" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "에리트리아" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "스페인" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "에디오피아" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "유렵국가 연합" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "핀란드" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "피지" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "포크랜드섬" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "마이크로네시아" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "파로에섬" + +#: src/common/util.c:928 +msgid "France" +msgstr "프랑스" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "가봉" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "영국" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "그레나다" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "죠지아" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "프랑스령 귀아나" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "영국령 섬" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "가나" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "지브롤터" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "그린랜드" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "잠비아" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "기니" + +#: src/common/util.c:940 +msgid "Government" +msgstr "정부" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "과들루프" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "적도 기니" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "그리스" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "성 죠지아와 성 샌드위치 섬" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "과테말라" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "괌" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "기니비사우" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "가이아나" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "홍콩" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "맥도날드 섬과 허드" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "온두라스" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "크로아티아" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "하이티" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "헝가리" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "인도네시아" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "아일랜드" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "이스라엘" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "맨 섬" + +#: src/common/util.c:959 +msgid "India" +msgstr "인도" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "정보" + +#: src/common/util.c:961 +msgid "International" +msgstr "국제" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "인도양" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "이라크" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "이란" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "아이스랜드" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "이탈리아" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "저지 섬" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "자메이카" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "죠단" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "일본" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "케냐" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "키르기스 공화국" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "캄보디아" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "키리바티" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "코모로스" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "성 키티와 네비스" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "조선 민주주의 인민공화국" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "대한민국" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "쿠웨이트" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "케이멘 군도" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "카자흐스탄" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "라오스" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "레바논" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "성 루시아" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "리히텐슈타인" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "스리랑카" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "리베리아" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "레소토" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "리투아니아" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "룩셈부르크" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "라비타" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "리비아" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "모로코" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "모나코" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "몰도바" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "미국 의료" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "마다가스카르" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "마샬 섬" + +#: src/common/util.c:999 +msgid "Military" +msgstr "국방" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "마케도니아" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "말리" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "미얀마" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "몽고" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "마카오" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "노턴 마리아나 섬" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "마르티니크" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "모리타니아" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "몬테세라트" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "말타" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "모리셔스" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "말디브" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "말라위" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "멕시코" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "말레이지아" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "모잠비크" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "나미비아" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "뉴 칼레도니아" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "나이제르" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "인터닉 네트워크" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "노퍽 섬" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "나이지리아" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "니카르과" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "네덜란드" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "노르웨이" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "네팔" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "나우루" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "나우에섬" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "뉴질랜드" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "오만" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "인터닉 비영리 기관" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "파나마" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "페루" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "프랑스령 폴리네시아" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "파푸아 뉴기니" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "필리핀" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "파키스탄" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "폴란드" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "성 피에르와 미퀘론" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "핏케언 제도" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "푸에르토 리코" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "팔레스타인 자치구" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "포르투칼" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "팔라우" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "파라과이" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "콰타르" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "레위니옹" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "로마니아" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "옛 ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "러시아 연합" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "르완다" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "사우디 아라비아" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "솔로몬 섬" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "시실리" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "수단" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "스웨덴" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "싱가폴" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "성 헬레네" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "슬로베니아" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "스발바르와 잔 마옌 군도" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "슬로바키아 공화국" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "시에라리온" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "산마리노" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "세네갈" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "소말리아" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "수리남" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "상토메와 프린시페" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "옛 소비에트 연방" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "엘살바도르" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "시리아" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "스와질랜드" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "터크스카이코스 제도" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "차드" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "프랑스 남부 지역" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "토고 공화국" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "타이" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "타지크스탄" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "토켈라우 제도" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "동 티모르" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "투르크메니스탄" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "튀니지" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "통가" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "터키" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "트리니다드 토바고" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "투발루" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "대만" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "탄자니아" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "우크라이나" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "우간다" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "영국" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "미국" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "우르과이" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "우즈베키스탄" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "바티칸 시국" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "성 빈센트와 그레너딘즈 제도" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "베네주엘라" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "영국령 버진 섬" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "미국 버진 섬" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "베트남" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "바누아투" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "윌리스와 푸투나 군도" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "시모아" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "예멘" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "마요트" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "유고슬라비아" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "남아프리카 공화국" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "잠비아" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "짐바브웨" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "알 수 없음" + +#: src/common/xchat.c:726 +msgid "_Open Dialog Window" +msgstr "귓속말 창 열기(_O)" + +#: src/common/xchat.c:727 +msgid "_Send a File" +msgstr "파일 전송(_S)" + +#: src/common/xchat.c:728 +msgid "_User Info (WhoIs)" +msgstr "사용자 정보(_U)(WhoIs)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "친구 목록에 추가(_A)" + +#: src/common/xchat.c:730 +msgid "O_perator Actions" +msgstr "관리자 명령(_P)" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "관리 권한 주기" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "관리 권한 박탈" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "발언권 주기" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "발언권 뺏기" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "퇴장/입장 금지" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "퇴장" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "입장 금지" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "퇴장 후 입장 금지" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "대화방 나가기" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "대화 참여..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "참여할 대화방 입력:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "서버 연결" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "서버에 핑" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "버전 숨기기" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "관리 권한" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "관리권 뺏기" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "안녕" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "%s님을 강제로 퇴장시키는 이유:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "파일 보내기" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "귓속말" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "사용자 정보" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "보내기" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "대화" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "비우기" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "핑" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "세션 버스에 접속하 수 없습니다." + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "NameHasOwner를 마치는 데 실패했습니다" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "Command를 마치는 데 실패했습니다" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "원격 접근" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "DBUS을 이용한 원격 추가 기능 " + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "세션 버스에 접속하 수 없습니다: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "%s 얻기 실패: %s\n" + +#: src/fe-gtk/about.c:100 +msgid "About " +msgstr "정보" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "다중 환경의 IRC 클라이언트" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "문자표" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "접속되어 있지 않습니다." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "먼저 입장 금지 목록에서 선택 하십시오." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "정말 대화방 %s에서 모든 추방자를 제거 하시겠습니까?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "매스크" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "보낸 이" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "날짜" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "대화방 탭에서만 입장 금지 목록을 열 수 있습니다." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: 입장 금지 목록 (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "제거" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "잘라내기" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "다시" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "%d/%d 사용자 (%d/%d 대화방) 표시." + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "출력할 파일을 선택하십시오." + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "대화방 참여(_J)" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "대화방 제목 복사(_C)" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "제목 복사(_T)" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: 대화방 목록 (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "찾기(_S)" + +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "받기 목록(_D):" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "목록 저장(_L)..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "보기:" + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "대화방, " + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr " " + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "사용자." + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "보기:" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "대화방 제목" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "찾기 종류:" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "간단히 검색" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "일치할 패턴 (와일드카드)" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "정규 표현" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "찾기:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "%s님에게 파일 보내기" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "그 파일은 이어 받을 수 없습니다." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"파일에 접근할 수 없습니다: %s\n" +"%s.\n" +"이어받기가 불가능합니다." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"받을 디렉터리의 파일이 전송 받을 파일보다 큽니다. 이어 받기는 불가능합니다." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "두 사람에게서 같은 파일을 받을 경우 이어 받을 수 없습니다." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: 업로드/다운로드" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "상태" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "파일" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "모두" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "보내기" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "받기" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "자세히" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "파일:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "주소:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "취소" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "허용" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "이어받기" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "디렉터리 열기..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: DCC 대화 목록" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "받음" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "보냄" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "시작 시간" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*새로 만듦*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "수정해 주세요" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "이름" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "명령" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "위로" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "아래로" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "취소" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "저장" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "새로 추가" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "삭제" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "정렬" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "도움말" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "서버에 자동으로 접속하지 않기" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "다른 설정 디렉터리 사용" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "추가 기능을 사용하지 않음" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "자동으로 실행된 추가 기능보기" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "사용자 설정 디렉터리 보기" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "irc://서버:포트/대화방 형태의 URL을 엽니다." + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "접속시 명령:" + +#: src/fe-gtk/fe-gtk.c:132 +msgid "Open URL or execute command in an existing XChat" +msgstr "실행 중인 XChat에서 URL 혹은 실행 커맨드 열기" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "최소화 시작. 단계 0=보통 1=아이콘화 2=알림영역" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "레벨" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "버전 정보 표시" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"글꼴 읽기 실패:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "검색할 기억 공간이 비어 있습니다.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d 바이트" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "네트워크 전송 큐: %d Bytes" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"명령어 실행 명령은 데이터 1의 명령을 입력 창에 입력한 것처럼 실행합니다. 즉 " +"데이터 1에는 일반 텍스트가 들어갈 수도 있고 (이 경우 대화방이나 어떤 사람에" +"게 그대로 전달됩니다), 명령어나 사용자 명령이 들어갈 수도 있습니다. 모든 데이" +"터 1의 \\n 문자로 명령어를 구분하면 여러 개 명령어를 실행할 수도 있습니다. 실" +"제 텍스트로 \\로 쓰려면 \\\\라고 쓰면 됩니다." + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"페이지 바꾸기 명령은 노트북의 페이지를 바꿉니다. 데이터 1을 이동하려는 페이" +"지 번호로 설정하십시오. 데이터 2를 아무 값으로든 설정하면 현재 위치의 상대 위" +"치로 이동합니다." + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"버퍼에 입력 명령은 데이터 1의 내용을 마치 현재 커서 위치에 키로 입력한 것처" +"럼 입력 창에 넣습니다." + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"페이지 스크롤 명령은 텍스트 창을 한 페이지나 한 줄 단위로 위 아래로 스크롤합" +"니다. 데이터 1은 위나 아래로 +1 혹은 -1처럼 설정할 수 있습니다." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "버퍼 설정 명령은 입력창의 내용을 데이터 1의 내용으로 설정합니다." + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"최근 명령 명령은 입력 창의 내용을 최근에 입력한 명령어로 설정합니다. 쉘에서 " +"위 화살표 키를 누른 것과 같습니다." + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"다음 명령 명령은 입력 창의 내용을 다음 명령으로 설정합니다. 쉘에서 아래 화살" +"표 키를 누른 것과 같습니다." + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"이 명령은 입력 창의 텍스트를 대화명이나 명령어로 완성합니다. 데이터 1을 설정" +"하면 문자열에 탭을 두번 누르는 경우에 다음 대화명이 아니라 최근 대화명을 선택" +"합니다." + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"이 명령은 대화명 목록의 스크롤을 올리거나 내립니다. 만약 데이터 1을 어떤 값으" +"로든 설정하면 스크롤을 올리고, 아닐 경우 내립니다." + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"이 명령은 입력 창에서 입력한 마지막 단어를 목록의 단어와 비교해서 일치하면 다" +"른 단어로 바꿉니다." + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "이 명령은 앞의 탭을 왼쪽으로 이동 시킵니다." + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "이 명령은 앞의 탭을 오른쪽으로 이동 시킵니다." + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "이 명령은 현재 탭을 왼쪽으로 이동 시킵니다." + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "이 명령은 현재 탭을 오른쪽으로 이동 시킵니다." + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "입력된 줄은 기록은 했지만 서버로 전송하지 못했습니다." + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "단축키 연결 설정 읽는중 오류가 발생 했습니다." + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<없음>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "상태" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "단축키" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "동작" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: 단축키" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "데이터 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "데이터 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "단축키 설정파일 열기 실패\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"단축키 설정파일의 %s은(는) 알 수 없는 키입니다.\n" +"읽기가 취소되었습니다. %s/keybindings 파일을 수정 하십시오.\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"단축키 설정파일의 %s은(는) 알 수 없는 행동입니다.\n" +"읽기가 취소되었습니다. %s/keybindings 파일을 수정 하십시오.\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"데이터 는 (Dx{:|!}로 시작되는) 기대한 것과 같지만 :\n" +"%s\n" +"\n" +"읽기가 취소되었습니다. %s/keybindings 파일을 수정 하십시오.\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"단축키 설정파일이 올바르지 않아서, 읽기를 취소 했습니다.\n" +"%s/keybindings.conf 파일을 수정 하십시오.\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "해당 파일을 쓸 수 없습니다." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "해당 파일은 열 수 없습니다." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "해당 매스크가 이미 존재합니다." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "개인:" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "알림" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "초대" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "무시해제" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "무시할 매스크 입력:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: 무시 목록" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "무시 상태:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "대화방:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "개인:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "알림:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "초대:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "추가..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "대화방 제목이 너무 짧습니다. 다시 시도하십시오." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: 접속 완료" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "%s에 접속 완료." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"서버 목록창에서, 자동으로 참여할 대화방(대화방)이 이 네트워크에는 없습니다." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "다음에는 무엇을 하시겠습니까?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "아무것도 안 함. 다음에 대화방에 입장하겠습니다.(_N)." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "이 대화방에 참여(_J):" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "대화방 제목을 알고 있다면, 이곳에 입력하십시오." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "대화방 목록 창 열기(_P)." + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "대화방 목록을 받는 중입니다. 잠시만 기다려 주십시오." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "접속 후 이 창을 항상 표시합니다.(_A)." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "귓속말" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "대화방 %s의 주제는 %s입니다." + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "주제가 정해져 있지 않습니다." + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"이 서버는 %d개의 대화방이나 사용자와 연결되어 있습니다. 모두 닫으시겠습니까?" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "XChat을 끝내시겠습니까?" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "다음에 물어보지 않기." + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "%i개의 IRC 네트워크에 접속되어 있습니다." + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "정말로 끝내시겠습니까?" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "아직 파일 전송이 진행 중입니다." + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "알림 영역으로 최소화(_M)" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "색상 코드나 속성 삽입" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>굵게</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>밑줄</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "보통" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "색상 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "색상 8-15" + +#: src/fe-gtk/maingui.c:1612 +msgid "_Settings" +msgstr "설정(_E)" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "디스크에 기록(_L)" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "이전 대화 내용을 다시 읽음(_R)" + +#: src/fe-gtk/maingui.c:1617 +msgid "_Hide Join/Part Messages" +msgstr "입장/퇴장 메시지 숨김(_H)" + +#: src/fe-gtk/maingui.c:1625 +msgid "_Extra Alerts" +msgstr "알림(_E)" + +#: src/fe-gtk/maingui.c:1627 +msgid "Beep on _Message" +msgstr "메시지 비프음(_M)" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "알림 영역 아이콘 깜빡거림(_I)" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "작업 표시줄 깜빡거림" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +msgid "_Detach" +msgstr "탭 분리(_D)" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "닫기(_C)" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "사용자 제한은 숫자만 입력할 수 있습니다.\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "주제 잠금" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "외부 메시지 받지 않음" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "비밀방" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "초대만 가능" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "중재식 대화" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "입장 금지 목록" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "암호" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "사용자 제한" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "사용자 목록을 표시하거나 숨깁니다." + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"배경을 투명하게 할 수 없습니다!\n" +"\n" +"현재 사용하는 창 관리자에서는 호환되지 않습니다.\n" +"현재로서는 해당 창 관리자는 지원하지 않습니다.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "새 대화명 입력:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "알 수 없는 호스트" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "실제 이름:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "사용자:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "국가:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "서버:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "%u분 전" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "마지막 메시지:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "자리 비움 메시지:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "%d개의 대화명이 선택됨." + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"메뉴 막대를 숨깁니다. 다시 보시려면 F9를 누르거나 메인 창에서 마우스 오른쪽 " +"단추를 누르십시오." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "브라우저로 열기" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "선택한 링크 복사" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "대화 참여" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "대화방 나가기" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "나갔다 들어오기" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "즐겨 찾는 대화방에서 제거" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "즐겨 찾기에 추가(_A)" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: 사용자 메뉴" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "이 항목 편집..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "대화방 목록 가져오기..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"사용자 명령 - 특수 코드:\n" +"\n" +"%c = 현재 대화방\n" +"%e = 현재 네트워크 이름\n" +"%m = 컴퓨터 정보\n" +"%n = 대화명\n" +"%t = 날짜/시각\n" +"%v = xchat 버전\n" +"%2 = 단어 2\n" +"%3 = 단어 3\n" +"&2 = 단어 2부터 줄 끝까지\n" +"&3 = 단어 3부터 줄 끝까지\n" +"\n" +"예:\n" +"/cmd john hello\n" +"\n" +"%2는 \"john\"이고\n" +"&2는 \"john hello\"입니다." + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"사용자 목록 단추 - 특수 코드:\n" +"\n" +"%a = 선택한 대화명 전체\n" +"%c = 현재 대화방\n" +"%e = 현재 네트워크 이름\n" +"%h = 선택한 대화명의 호스트 이름\n" +"%m = 컴퓨터 정보\n" +"%n = 대화명\n" +"%s = 선택한 대화명\n" +"%t = 날짜/시각\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"대화 상자 단추 - 특수 코드:\n" +"\n" +"%a = 선택한 대화명 전체\n" +"%c = 현재 대화방\n" +"%e = 현재 네트워크 이름\n" +"%h = 선택한 대화명의 호스트 이름\n" +"%m = 컴퓨터 정보\n" +"%n = 대화명\n" +"%s = 선택한 대화명\n" +"%t = 날짜/시간\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"CTCP 응답 - 특수 코드:\n" +"\n" +"%d = 데이터 (전체 CTCP)\n" +"%e = 현재 네트워크 이름\n" +"%m = 컴퓨터 정보\n" +"%s = CTCP를 보낸 대화명\n" +"%t = 날짜/시각\n" +"%2 = 단어 2\n" +"%3 = 단어 3\n" +"&2 = 단어 2에서 줄 끝까지\n" +"&3 = 단어 3에서 줄 끝까지\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"URL 관리자 - 기능 코드:\n" +"\n" +"%s = URL 문자열\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: 사용자 정의 명령" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: 사용자 팝업 메뉴" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "바꿀글월" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: 바꾸기" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: URL 관리기" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: 사용자 목록 단추" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: 단추" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: CTCP 회신" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "네트워크 목록(_S)..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "새로 만들기(_N)" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "서버 탭..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "대화방 탭..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "서버 창..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "대화방 창..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "추가 기능이나 혼잣말 열기(_L)..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "종료(_Q)" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "보기(_V)" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "메뉴 모음(_M)" + +#: src/fe-gtk/menu.c:1592 +msgid "_Topic Bar" +msgstr "제목 표시줄(_T)" + +#: src/fe-gtk/menu.c:1593 +msgid "_User List" +msgstr "사용자 목록(_U)" + +#: src/fe-gtk/menu.c:1594 +msgid "U_serlist Buttons" +msgstr "사용자 목록 단추(_S)" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "상태 단추(_O)" + +#: src/fe-gtk/menu.c:1597 +msgid "_Channel Switcher" +msgstr "서버/대화방 표시 형태(_C)" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "탭(_T)" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "트리(_R)" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "네트워크 미터 표시(_N)" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "끔" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "그래프" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "서버(_S)" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "접속 해제(_D)" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "다시 접속(_R)" + +#: src/fe-gtk/menu.c:1613 +msgid "Join a Channel..." +msgstr "대화 참여..." + +#: src/fe-gtk/menu.c:1614 +msgid "List of Channels..." +msgstr "대화방 목록..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "자리 비움으로 표시" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "사용자 메뉴(_U)" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "설정(_E)" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "기본 설정(_P)" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "고급 기능" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "자동 변경..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "CTCP 회신..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "단추..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "키보드 바로 가기..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "글월 이벤트..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "URL 관리기..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "사용자 명령..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "사용자 목록 단추..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "사용자 메뉴..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "창(_W)" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "입장 금지 목록..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "문자표..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "대화 직접 연결..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "파일 전송..." + +#: src/fe-gtk/menu.c:1641 +msgid "Friends List..." +msgstr "친구 목록..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "무시 목록..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "추가 기능과 혼잣말..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "로그..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "URL 잡기 도구..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "표시된 줄 초기화" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "글월 삭제(_L)" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "글월 찾기..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "글월 저장..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "도움말(_H)" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "목록(_C)" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "업데이트 확인" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "정보(_A)" + +#: src/fe-gtk/menu.c:2147 +msgid "_Attach" +msgstr "붙이기(_A)" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "최근 접속" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "접속 종료" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "기록 없음" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "%d분 전" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "접속" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "추가할 대화명:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "다음 네트워크 알림:" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "쉼표로 구분한 네트워크 목록 허용함." + +#: src/fe-gtk/notifygui.c:413 +msgid "XChat: Friends List" +msgstr "XChat: 친구 목록" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "대화창 열기" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" +"풍선 알림을 열 때 사용하는 'notify-send' 프로그램을 찾을 수 없습니다.\n" +"libnotify를 설치하십시오." + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "XChat: %u 네트워크의 %u 대화방에 접속됨" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "복원(_R)" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "숨기기(_H)" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "깜빡임(_B)" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "대화방 메시지" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "개인 메시지" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "강조 메시지" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "상태 변경" + +#: src/fe-gtk/plugin-tray.c:602 +msgid "_Away" +msgstr "자리 비움" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "돌아옴(_B)" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat: 다음 사용자의 강조 메시지: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat: %u개의 메시지 알림. 마지막 사용자: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat: 새 공개 메시지: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat: %u개의 공개 메시지." + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat: 비공개 메시지: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "XChat: %u개의 비공개 메시지. 마지막 사용자: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat: 다음 사용자로부터 파일 전송: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "XChat: %u개의 파일 전송. 마지막 사용자: %s (%s)" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "버전" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "참고" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "읽을 추가 기능이나 혼잣말을 선택하십시오." + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: 추가 기능과 혼잣말" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "열기(_L)..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "사용 안 함(_U)" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "다른 이름으로 저장..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: 로그 (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "로그를 삭제합니다." + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "더 검색할 항목이 없습니다." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "검색 완료. 검색된 자료 없음." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: 검색" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "대/소문자 구분(_M)" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "뒤로 검색(_B)" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "찾기(_F)" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "새 네트워크" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "\"%s\" 네트워크를 정말 삭제하시겠습니까?" + +#: src/fe-gtk/servlistgui.c:740 +msgid "#channel" +msgstr "#채널" + +#: src/fe-gtk/servlistgui.c:850 +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: 즐겨 찾는 대화방 목록(자동 입장하는 대화방 목록)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "%s에 접속할 때마다 이 채널에 참여합니다." + +#: src/fe-gtk/servlistgui.c:906 +msgid "Key (Password)" +msgstr "키(암호)" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "편집(_E)" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "%s을(를) 제거하였습니다." + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "%s을(를) 추가하였습니다." + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "사용자 이름과 실제 이름은 공백으로 시작할 수 없습니다." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: %s 편집" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "서버: %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "선택된 서버만 접속" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "접속이 실패했을 때 모든 서버에 접속시도 하지 않음." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "자세한 내용" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "기본 사용자 정보를 사용합니다." + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "대화명(_N):" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "두번째 선택:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "사용자 이름(_U):" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "실제 이름(_L):" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "접속" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "시작시 자동 접속" + +#: src/fe-gtk/servlistgui.c:1462 +msgid "Bypass proxy server" +msgstr "프록시 서버 사용" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "이 네트워크의 모든 서버에 SSL 사용" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "유효하지 않은 인증서 허용" + +#: src/fe-gtk/servlistgui.c:1475 +msgid "_Favorite channels:" +msgstr "즐겨 찾는 대화방(_F):" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "" +"참여할 대화방. 쉼표(,)로 여러개의 대화방을 지정할 수 있으나 공백은 사용할 수 " +"없습니다." + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "접속 명령:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"접속 후에 사용될 기타 명령. 만약 한 가지 이상 명령을 사용하시려면, 이것을 " +"LOAD -e <파일 이름>으로 설정하십시오. <파일 이름>은 텍스트 파일로 실행할 모" +"든 명령을 입력해 두시면 됩니다." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Nickserv 암호:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"만약 당신의 대화명이 암호를 필요로 한다면 여기에 입력하십시오. 모든 IRC 네트" +"워크에서 지원하지는 않습니다." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "서버 암호:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "서버에 사용할 암호. 만약 필요하지 않다면 비워두십시오." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "문자세트:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: 네트워크 목록" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "사용자 정보" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "세번째 선택:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "네트워크" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "시작할 때 네트워크 목록 건너 뛰기" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "편집(_E)..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "정렬(_S)" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" +"가나다 순서로 네트워크 목록을 정렬합니다. SHIFT-UP이나 SHIFT-DOWN 키로 이동" +"할 수 있습니다." + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "접속(_O)" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "글월 상자 모양" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "글꼴:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "배경 이미지:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "스크롤할 줄 개수:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "대화명에 색상 사용" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "IRC의 각 사용자에게 다른 색상 사용" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "대화명 자동 완성" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "대화명을 오른쪽으로 정렬" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "투명한 배경 효과" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "구분선 표시" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "마지막으로 읽은 텍스트 뒤에 빨간색 줄 삽입." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "투명도 설정" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "적색:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "녹색:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "청색:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "시각 표시" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "시각 표시" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "표시할 시각 형태:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "자세한 내용은 strftime의 도움말을 보십시오." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "이름순" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "마지막으로 말한 사용자" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "입력창" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "입력 상자에 지정 글꼴과 색상 사용" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "맞춤법 확인" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "자동 구성에 추가할 문자:" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "TAB 키를 누르지 않고 자동 대화명 완성" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "자동 구성에 추가할 문자:" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "대화명 자동 완성 정렬:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "입력창 코드" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "%nnn을 아스키 값으로 해석" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "%C, %B는 색상, 진하게로 변환" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "이름순(관리자 먼저)" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "이름역순(관리자 나중)" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "이름역순" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "정렬 안 함" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "왼쪽(위)" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "왼쪽(아래)" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "오른쪽(위)" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "오른쪽(아래)" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "위" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "아래" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "숨김" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "사용자 목록" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "사용자 목록에 호스트 이름 표시" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "사용자 목록 정렬:" + +#: src/fe-gtk/setup.c:205 +msgid "Show user list at:" +msgstr "사용자 목록을 표시할 위치:" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "자리 비움 추적" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "자리 비움 상태인 사용자를 추적하여 다른 색상으로 표시합니다." + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "대화방의 자리 비움 상태가 다음보다 작을 때:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "더블 클릭시 동작" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "창" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "탭" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "자리 비움 사용자:" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "오직 요청된 탭만" + +#: src/fe-gtk/setup.c:242 +msgid "Tree" +msgstr "트리" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "서버/대화방 표시 형태:" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "서버 메시지를 탭으로 표시" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "서버 알림을 탭으로 표시" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "개인 메시지를 받으면 새 탭 열기" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "탭을 알파벳으로 정렬" + +#: src/fe-gtk/setup.c:254 +msgid "Smaller text" +msgstr "작은 글자 사용" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "새 탭에 포커스:" + +#: src/fe-gtk/setup.c:258 +msgid "Show channel switcher at:" +msgstr "서버/대화방을 표시할 위치:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "탭 제목 표시 제한:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "글자 이하로 표시" + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "창이나 탭" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "대화방:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "귓속말:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "도구:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "" +"DCC, 목록, 알림 등을 탭으로 열 것인지, 창으로 열 것인지를 선택하십시오." + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "아니오" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "예" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "파일과 디렉터리" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "자동으로 파일 전송을 허용할 사용자:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "다음 위치에 받은 파일 저장:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "다음 위치에 받기가 완료된 파일 이동:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "파일 이름에 대화명을 포함하여 저장" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "네트워크 설정" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "IRC 서버로부터 내 IP를 가져옵니다." + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"만약 당신이 가상 IP를 사용하고 있다면 \"/WHOIS 당신의대화명\"으로 당신의 실" +"제 주소를 찾게 됩니다. 일부 HanIRC에서 숨김 상태 서비스에서는 사용할 수 없습" +"니다." + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "DCC IP 주소:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "파일을 전송할 때 이 주소를 사용하게 됩니다." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "DCC 보내기에 사용할 처음 포트:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "DCC 보내기에 사용할 마지막 포트:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!전체 영역을 사용하려면 0으로 설정하십시오." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "최대 파일 전송 속도 (초당 Byte 전송 속도)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "개별 파일의 보내는 속도:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "보내기 파일 하나당 최대 속도" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "개별 파일의 받는 속도:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "모든 보내기를 합친 속도:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "전체 속도" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "모든 받기를 합친 속도:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "알림" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "알림 영역 풍선 표시:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "알림 영역 아이콘 깜빡거림:" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "작업 표시줄 깜빡거림:" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "비프음:" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "시스템 트레이 아이콘 사용" + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "강조 메시지" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "강조 메시지는 자기 대화명이 언급되는 메시지 및 다음 메시지입니다:" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "추가로 강조할 단어:" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "강조하지 않을 대화명:" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "항상 강조할 대화명:" + +#: src/fe-gtk/setup.c:347 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "여러 개 단어는 쉼표로 구분합니다. 와일드카드 사용도 가능합니다." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "기본 메시지" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "종료:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "대화방 나가기:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "자리 비움:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "자리 비움" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "자리 비움 메시지 알림" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "자리를 비울 때 참여 중인 모든 대화방에 메시지로 알립니다." + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "자리 비움 한 번만 표시" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "자리 비움 메시지를 한 번만 표시합니다." + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "자동으로 자리 비움 해제" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "대화를 시작하면 자동으로 자리 비움 상태를 해제합니다." + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "고급 설정" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "자동 접속 지연 시간:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "raw 폼에서 MODE를 표시함" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Whois에 알림" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "알림 목록에 사용자가 접속하면 /WHOIS 명령을 실행합니다." + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "입장/퇴장 메시지 숨김" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "기본적으로 대화방에 입장/퇴장 메시지를 숨깁니다." + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "자동으로 대화창 열기" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "파일 전송창" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "받기 창" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "대화방 창" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "기록" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "이전 세션에서 저장된 대화 내용 표시" + +#: src/fe-gtk/setup.c:387 +msgid "Enable logging of conversations to disk" +msgstr "대화 내용을 디스크에 저장" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "로그 파일 이름:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=서버 %c=대화방 %n=네트워크." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "로그에 시각 삽입" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "로그에 사용할 시각 형태:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(사용 안 함)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "윈게이트" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS 프록시(ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "모든 연결" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "IRC 서버 전용" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "DCC 받기 전용" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "IP 주소" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "바인딩할 주소:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "여러 개의 주소를 사용하는 컴퓨터에서만 사용합니다." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "프록시 서버" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "호스트:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "포트:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "형태:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "프록시 사용:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "프록시 인증" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "인증 사용(MS 프록시, HTTP 혹은 Socks5 전용)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "인증 사용(HTTP 혹은 Socks5 전용)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "사용자 이름:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "암호:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "이미지파일 선택" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "다운로드 디렉터리 선택" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "글꼴 선택" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "찾아보기..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "인증된 사용자를 다음으로 표시:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "인증되지 않은 사용자를 다음으로 표시:" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "데이터 디렉터리 열기" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "색상 선택" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "글자 색" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "mIRC 색:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "로컬 색:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "글자:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "배경:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "선택한 글월" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "사용자 환경 색상" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "새 데이터:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "이후 표시:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "새 메시지:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "자리 비움 사용자:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "강조:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "상황" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "소리 파일:" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "출력할 파일을 선택하세요." + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "소리 재생 방법:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "외부 소리 재생 프로그램(_P):" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "외부 도구(_E)" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "자동(_A)" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "소리 파일 위치(_D):" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "소리 파일:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "찾아보기(_B)..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "재생(_P)" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "사용자 환경" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "글월창" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "사용자 목록" + +#: src/fe-gtk/setup.c:1703 +msgid "Channel switcher" +msgstr "대화방 바꾸기" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "색상" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "대화" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "일반" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "소리" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "네트워크 설정" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "파일 전송" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "항목" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" +"위나 아래에는 트리를 위치 시킬 수 없습니다!\n" +"<b>보기</b>메뉴의 <b>탭</b> 레이아웃을 먼저 변경하십시오." + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "어떤 설정은 다시 시작해야 효과를 볼 수 있습니다." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*경고*\n" +"당신의 홈 디렉터리로 자동 받기를 할 경우 상당히 위험합니다.\n" +"예:\n" +"어떤 사용자가 당신에게 .bash_profile을 전송했을 때." + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: 기본 설정" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "글월 분석 오류" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "이 신호는 오직 %d 인수에서 동작됩니다. $%d은(는) 올바르지 않습니다." + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "문서 파일 출력" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "상황 편집" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ 숫자" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "읽어들이기, 위치..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "모두 시험" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "주소" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: URL 잡기 도구" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "목록 삭제" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "선택된 URL을 복사" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "복사" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "목록을 파일로 저장합니다" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d명의 관리자, 총 %d명" + +#~ msgid "About XChat" +#~ msgstr "XChat 정보" + +#, fuzzy +#~ msgid "Set _back" +#~ msgstr "뒤로 검색(_B)" + +#~ msgid "" +#~ "Set per channel options\n" +#~ "CHANOPT CONFMODE ON|OFF - Toggle conf mode/showing of join and part " +#~ "messages\n" +#~ "CHANOPT COLORPASTE ON|OFF - Toggle color paste\n" +#~ "CHANOPT BEEP ON|OFF - Toggle beep on message\n" +#~ "CHANOPT TRAY ON|OFF - Toggle tray blink on message" +#~ msgstr "" +#~ "대화방 별 설정\n" +#~ "CHANOPT CONFMODE ON|OFF - 입장과 퇴장 메시지 표시를 설정합니다\n" +#~ "CHANOPT COLORPASTE ON|OFF - 색상 상태를 설정합니다\n" +#~ "CHANOPT BEEP ON|OFF - 삑 소리 알림을 켜거나 끕니다.\n" +#~ "CHANOPT TRAY ON|OFF - 깜빡임 설정을 켜거나 끕니다." + +#~ msgid "Direct client-to-client" +#~ msgstr "직접 연결" + +#~ msgid "Send File" +#~ msgstr "파일 보내기" + +#~ msgid "Offer Chat" +#~ msgstr "대화" + +#~ msgid "Abort Chat" +#~ msgstr "대화 취소" + +#~ msgid "Userinfo" +#~ msgstr "사용자 정보" + +#~ msgid "Clientinfo" +#~ msgstr "클라이언트 정보" + +#~ msgid "Time" +#~ msgstr "시간" + +#~ msgid "Finger" +#~ msgstr "핑거" + +#~ msgid "Oper" +#~ msgstr "서버관리자" + +#~ msgid "Kill this user" +#~ msgstr "이 사용자 죽이기" + +#~ msgid "Mode" +#~ msgstr "상태" + +#~ msgid "Give Half-Ops" +#~ msgstr "제한된 관리 권한 주기" + +#~ msgid "Take Half-Ops" +#~ msgstr "제한된 관리 권한 박탈" + +#~ msgid "Ignore" +#~ msgstr "무시" + +#~ msgid "Ignore User" +#~ msgstr "사용자 무시" + +#~ msgid "UnIgnore User" +#~ msgstr "무시 해제" + +#~ msgid "Info" +#~ msgstr "정보" + +#~ msgid "Who" +#~ msgstr "누구" + +#~ msgid "DNS Lookup" +#~ msgstr "DNS 보기" + +#~ msgid "Trace" +#~ msgstr "추적" + +#~ msgid "UserHost" +#~ msgstr "호스트" + +#~ msgid "External" +#~ msgstr "외부 도구" + +#~ msgid "Traceroute" +#~ msgstr "경로추적" + +#~ msgid "Telnet" +#~ msgstr "텔넷" + +#~ msgid "Unban" +#~ msgstr "입장 금지해제" + +#~ msgid "Blink tray on message" +#~ msgstr "메시지에 알림 영역에서 깜빡이기" + +#~ msgid "Show join/part messages" +#~ msgstr "참여/퇴장 메시지 표시" + +#~ msgid "Color paste" +#~ msgstr "색상추출" + +#~ msgid "_Close Tab" +#~ msgstr "탭 닫기(_C)" + +#~ msgid "Channel List..." +#~ msgstr "대화방 목록..." + +#~ msgid "Notify List..." +#~ msgstr "알림 목록..." + +#~ msgid "_Close Window" +#~ msgstr "창 닫기(_C)" + +#~ msgid "User" +#~ msgstr "사용자" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: 알림 목록" + +#~ msgid "C_hannels to join:" +#~ msgstr "참여할 대화방(_H):" + +#~ msgid "Channel Switcher" +#~ msgstr "대화방 바꾸기" diff --git a/etc/wyatt8740/po/lt.po b/etc/wyatt8740/po/lt.po new file mode 100644 index 0000000..07cc73f --- /dev/null +++ b/etc/wyatt8740/po/lt.po @@ -0,0 +1,6566 @@ +# Lithuanian translation of xchat +# Copyright (C) 2000 Free Software Foundation, Inc. +# This file is distributed under the same license as the xchat package. +# Gediminas Paulauskas <menesis@delfi.lt>, 2000. +# Vaidrius Petrauskas <vaidrius@delfi.lt>, 2005. +# Žygimantas Beručka <zygis@gnome.org>, 2006. +# Marius Gedminas <mgedmin@b4net.lt>, 2007. +# Gintautas Miliauskas <gintas@akl.lt>, 2007, 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.8.4\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2008-05-17 22:00+0300\n" +"Last-Translator: Gintautas Miliauskas <gintas@akl.lt>\n" +"Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Nepavyko sukurti ~/.xchat2 katalogo" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Užsiėmęs" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Išeinu" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* Labai neprotinga vykdyti IRC iš root'o! Susikurk\n" +" paprastą varotoją ir naudokis juo, jungdamasis.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Laukiu" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Aktyvus" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Nepavyko" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Baigtas" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Jungiuosi" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Nutrauktas" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "Negaliu pasiekti %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Klaida" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s siūlo „%s“. Ar norite priimti?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Nėra aktyvių DCC sesijų\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "TAIP " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "NE " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Jums %s siunčia daugybę CTCP pranešimų, %s ignoruojamas\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "" +"Jums %s siunčia daugybę MSG pranešimų, „gui_auto_open_dialog“ išjungiamas.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s yra online\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s yra offline\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Tu nesi jokiame kanale. Parašyk /join #<kanalas>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "" +"Tu nesi prisijungęs prie serverio. Parašyk /server <hostas> [<portas>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Jau įjungta nebuvimo veiksena: %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "Jau pažymėtas grįžimas.\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "Man reikia /bin/sh, kad galėčiau vykdytis!\n" + +#: src/common/outbound.c:2146 +#, fuzzy +msgid "Commands Available:" +msgstr "Prieinamos komandos:" + +#: src/common/outbound.c:2160 +#, fuzzy +msgid "User defined commands:" +msgstr "Naudotojo aprašytos komandos:" + +#: src/common/outbound.c:2176 +#, fuzzy +msgid "Plugin defined commands:" +msgstr "Vartotojo aprašytos komandos:" + +#: src/common/outbound.c:2187 +#, fuzzy +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "" +"\n" +"\n" +"Parašyk /HELP <komanda> kad gautum daugiau informacijos, arba /HELP -l\n" +"\n" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Nežinomas argumentas '%s' ignoruojamas." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "Toks įskiepis nerastas.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Šis įskiepis atsisako būti iškraunamas.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <vardas> <veiksmas> - prideda mygtuka po vartotojų sąrašu" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <komanda> - nusiunčia komandą į visus kanalus, kuriuose tu esi" + +#: src/common/outbound.c:3499 +#, fuzzy +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <komanda> - nusiunčia komandą į visus kanalus, kuriuose tu esi" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "" +"ALLSERV <komanda> - nusiunčia komandą visiems serveriams, prie kurių tu esi " +"prisijungęs" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<priežastis>] - įjungia būseną „Manęs nėra“" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <mask> [<bano tipas>] - išbanina iš esamo kanalo visus, kurių maskas " +"sutampa su nurodytu. Jei jie jau yra kanale, ši komanda neišspiria jų " +"(reikia OP statuso kanale)" + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "SET <kintamasis> [<reikšmė>]" + +#: src/common/outbound.c:3508 +#, fuzzy +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "CLEAR - išvalo esamą tekstinį langą" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE - uždaro esamą langą/kortelę" + +#: src/common/outbound.c:3512 +#, fuzzy +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY <kodas> - randa šalį pagal kodą, pvz.: lt = Lietuva" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <vartotojas> <žinutė> - nusiunčia CTCP žinutę vartotojui. Dažniausios " +"žinutės yra VERSION ir USERINFO" + +#: src/common/outbound.c:3516 +#, fuzzy +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "CYCLE - išeina iš aktyvaus kanalo ir iškarta į jį grįžtą" + +#: src/common/outbound.c:3518 +#, fuzzy +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <vartotojas> - gauna siūlomą bylą\n" +"DCC SEND <vartotojas> <failas> - siunčia bylą kitam asmeniui\n" +"DCC LIST - parodo DCC sesijų sąrašą\n" +"DCC CHAT <vartotojas> - pasiūlo kitam asmeniui DCC pokalbį\n" +"DCC CLOSE <tipas> <vatrtotojas> <failas> pavyzdys:\n" +" /dcc close send jonas byla.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <vartotojas> - panaikina kanalo pusiau-operatoriaus teises vartotojui " +"aktyviame kanale (reikia kanalo operatoriaus teisių)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <vardas> - ištrina mygtuką iš po vartotojo sąrašo" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <vartotojas> - panaikina kanalo operatoriaus teises vartotojui " +"aktyviame kanale (reikia kanalo operatoriaus teisių)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <vartotojas> - panaikina balso teisę vartotojui aktyviame kanale " +"(reikia kanalo operatoriaus teisių)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON - atjungia nuo serverio" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <varototojas|hostas|ip> - randa vartotojo IP adresą" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <tekstas> - lokaliai atspausdina tekstą" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <komanda> - įvykdo komandą. Tuo atveju, jei nurodomas -o " +"parametras, komandos grąžinamas tekstas bus nusiųstas į aktyvų kanalą, kitu " +"atveju jis nusiunčiamas į aktyvų langą." + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT - nusiunčia procesui SIGCONT signalą" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9] - nutraukia aktyvioje sesijoje vykdomą komandą. Jei nurodomas " +"parametras -9, procesui bus nusiųstas SIGKILL signalas" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP - nusiunčia procesui SIGSTOP signalą" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE - nusiunčia duomenis proceso stdin įrenginiui" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHHQ - panaikina aktyvaus serverio siuntimo laukiančių duomenų eilę" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" +"GATE <hostas> [<portas>] - jungiasi per proxy serverį. Nutylimas portas - 23" + +#: src/common/outbound.c:3560 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" +"HOP <vartotojas> - suteikia vartotojui kanalo pusiau-operatoriaus teises " +"(reikia kanalo operatoriaus teisių)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <slaptažodis> - identifikuoja Jus nickservui" + +#: src/common/outbound.c:3568 +#, fuzzy +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <mask> <tipai..> <parametrai..>\n" +" mask - maskas, kuris bus ignoruojamas, pvz: *!*@*.takas.lt\n" +" tipai - ignoruotini duomenų tipai, vienas ar keli iš šių:\n" +" PRIV, CHAN, NOTI, CTCP, INVI, ALL\n" +" parametrai - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <vartotojas> [<kanalas>] - pakviečia varotoją į kanalą. Nutylimasis - " +"aktyvus kanalas (reikia kanalo operatoriaus teisių)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <kanalas> - prisijungia prie kanalo" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <vartotojas> - išspiria varotoją iš aktyvaus kanalo (reikia kanalo " +"operatoriaus teisių)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <vartotojas> - išbanina ir išspiria vartotoją iš aktyvaus kanalo " +"(reikia kanalo operatoriaus teisių)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK - iššaukia naują užlaikymo patikrinimą" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <tekstas> - ieško duotojo teksto buferyje" + +#: src/common/outbound.c:3587 +#, fuzzy +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD <failas> - įkrauna įskiepį ar skriptą..." + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP - atima kanalo pusiau-operatoriaus teises iš visų aktyviame kanale " +"jas turinčių (reikia kanalo operatoriaus teisių)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP - atima kanalo operatoriaus teises iš visų aktyviame kanale jas " +"turinčių (reikia kanalo operatoriaus teisių)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <veiksmas> - nusiunčia veiksmą į aktyvų kanalą (veiksmai rašomi trečiuoju " +"asmeniu, pvz., /me pašoka)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK - išspiria iš aktyvaus kanalo visus išskyrus tave (reikia kanalo " +"operatoriaus teisių)" + +#: src/common/outbound.c:3601 +#, fuzzy +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MDEOP - atima kanalo operatoriaus teises iš visų aktyviame kanale jas " +"turinčių (reikia kanalo operatoriaus teisių)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <vartotojas> <žinutė> - nusiunčia privačią žinutę" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES - išvardina visus vartotojus esamame kanale" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <vartotojas> <žinutė> - nuciunčia vartotojui CTCP pastebėjimą" + +#: src/common/outbound.c:3608 +#, fuzzy +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER <serveris> [<portas>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <vardas> - pakeicčia tavo vartotojo vardą" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <vartotojas/kanalas> <žinutė> - nusiunčia pastabą. Pastabos - tai " +"žinutės, į kurias turėtų būti reaguojama automatiškai" + +#: src/common/outbound.c:3614 +#, fuzzy +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [<vartotojas>] - išvardina tavo stebimų vartotojų sąrašą arba prideda/" +"išbraukia iš jo vartotoją" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" +"OP <vartotojas> - suteikia vartotojui kanalo operatoriaus teises (reikia jas " +"turėti pačiam)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" +"PART [<kanalas>] [<priežastis>] - palieka kanalą, pagal nutylėjimą - aktyvųjį" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "" +"PING <vartotojas | kanalas> - nusiunčia vartotojui arba kanalui CTCP PING " +"signalą" + +#: src/common/outbound.c:3622 +#, fuzzy +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "QUERY <vartotojas> - atidaro privačių žinučių su vartotoju langą" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<priežastis>] - atsijungia nuo aktyvaus serverio" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <tekstas> - nusiunčia neformatuotą tekstą serveriui" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<serveris>] [<portas>] [<slaptažodis>] - gali būti " +"iškviečiamas paprasčiausiai komandos /RECONNECT pagalba, kad iš naujo " +"prisijungti prie aktyvaus serverio arba /RECONNECT ALL, kad iš naujo " +"prisijungti prie visų atvirų serverių" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<serveris>] [<portas>] [<slaptažodis>] - gali būti iškviečiamas " +"paprasčiausiai komandos /RECONNECT pagalba, kad iš naujo prisijungti prie " +"aktyvaus serverio arba /RECONNECT ALL, kad iš naujo prisijungti prie visų " +"atvirų serverių" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <tekstas> - nusiunčia neformatuotą tekstą xchat programai, lyg ji jį " +"būtų gavusi iš irc serverio" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <tekstas> - nusiunčia tekstą objektui aktyviame lange" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <slapyvardis> [<failas>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <serveris> <portas> <kanalas> - prisijungia ir įeina į kanalą" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <serveris> <portas> <kanalas> - prisijungia ir įeina į kanalą" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <serveris> [<portas>] [<slaptažodis>] - prisijungia prie " +"serverio, nutylimasis portas yra 6667 paprastiems prisijungimams ir 9999 - " +"prisijungimams su ssl" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <serveris> [<portas>] [<slaptažodis>] - prisijungia prie serverio, " +"nutylimasis portas yra 6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET <kintamasis> [<reikšmė>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<pozicija>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<tema>] - nustato kanalo temą, jei ji duota, arba parodo esamą temą" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <mask> [<mask>...] - nuima baną nurodytiems maskams" + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <mask> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <vardas> - iškrauna įskiepį ar skriptą" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <adresas> - atverti adresą naršyklėje" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <slapyvardis1> <slapyvardis2> ir t.t. - paryškinti " +"slapyvardį(ius) kanalo naudotojų sąraše" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "" +"VOICE <vartotojas> - suteikia vartotojuio balso teisę (reikia kanalo " +"operatoriaus teisių)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <žinutė> - nusiunčia žinutę visiems kanalams" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <žinutė> - nusiunčia žinutę visiems aktyvaus kanalo operatoriams" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Naudojimas: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"Nėra pagalbos įrašo apie šią komandą.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Nėra tokios komandos.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Blogi argumentai vartotojo apibrėžtai komandai.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Per daug rekursiškai vykdomų vartotojo komandų, vykdymas nutraukiamas." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Nežinoma komanda. Bandyk /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "Nerastas xchat_plugin_init simbolis. Ar tai tikrai xchat įskiepis?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Ar tai tikrai SSL šifravimą palaikantis serveris ir prievadas?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Negaliu iššifruoti serverio vardo: %s\n" +"Patikrink savo IP nustatymus!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Proxy jungimasis nepavyko.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Bandomas kitas tinklo „%s“ serveris...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Dėmesio: „%s“ koduotė nežinoma. Konvertavimas tinkle „%s“ nebus vykdomas." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "" + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "" + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "" + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "" + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tGautas CTCP „Sound“ $1 iš $2 (į $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "" + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "" + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "" + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 Tipas Į/Iš Būklą— Dydis Pozicija Failas " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O." +"%010%C22*%O$tContents of packet: $2" +msgstr "" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "" + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "" + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "" + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "" + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "" + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "" + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "" + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "" + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "" + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "" + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "" + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "" + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "" + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 Formatas PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "" + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " Ignoravimo są…rašas tušąias." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "" + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "" + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "" + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "" + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "" + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "" + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Stebyklą— " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "" + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "" + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "" + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "" + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "" + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "" + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "" + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "" + +#: src/common/text.c:347 +#, fuzzy +msgid "Loaded log from" +msgstr "Įkelti" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** ŽURNALO VEDIMAS NUTRAUKTAS %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** ŽURNALO VEDIMAS NUTRAUKTAS %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Nepavyko atverti žurnalo failo (-ų) rašymui.\n" +" Patikrinkite „%s/xchatlogs“ leidimus" + +#: src/common/text.c:961 +#, fuzzy +msgid "Left message" +msgstr "Žinutė" + +#: src/common/text.c:962 +#, fuzzy +msgid "Right message" +msgstr "Žinutė" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "Prisijungiančio vartotojo vardas" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "Kanalas, prie kurio jungiamasi" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "Vartotojo kompiuteris" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Vartotojo vardas" + +#: src/common/text.c:973 +msgid "The action" +msgstr "Veiksmas" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Statuso simbolis" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +#, fuzzy +msgid "Identified text" +msgstr "Info" + +#: src/common/text.c:980 +msgid "The text" +msgstr "Tekstas" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Žinutė" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Senas vartotojo vardas" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Naujas vartotojo vardas" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Vartotojo, pakeitusio temą, vardas" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Tema" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Kanalas" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "Išspyręs vartotojas" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "Išsipirtas vartotojas" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "Kanalas" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "Priežastis" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "Paliekančiojo kanalą vartotojo vardas" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "Laikas" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "Kūrėjas" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Vartotojo vardas" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Priežastis" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Adresas" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "Nuo ko tai" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "Laikas x.x formatu (žr. žemiau)" + +#: src/common/text.c:1049 src/common/text.c:1086 +#, fuzzy +msgid "The Channel it's going to" +msgstr "Kanalų sąrašo langas..." + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "Garsas" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "Asmens slapyvardis" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "CTCP įvykis" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "Nustačiusio raktą slapyvardis" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "Raktas" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "Nustačiusio limitą, slapyvardis" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "Limitas" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "Davusiojo opą slapyvardis" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "Gavusiojo opą slapyvardis" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "Gavusiojo halfopą slapyvardis" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "Davusiojo halfopą slapyvardis" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "Davusiojo balsą slapyvardis" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "Gavusiojo balsą slapyvardis" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "Uždraudusiojo slapyvardis" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "Draudimo formatas" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "Nuėmusiojo raktą slapyvardis" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "Nuėmusiojo limitą slapyvardis" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "Nuėmusiojo opą slapyvardis" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "Netekusiojo opo slapyvardis" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "Nuėmusiojo halfopą slapyvardis" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Netekusiojo halfopo slapyvardis" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "Nuėmusiojo balsą slapyvardis" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "Netekusiojo balso slapyvardis" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "Pašalinusiojo draudimą slapyvardis" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "Padariusiojo išimtį draudimui slapyvardis" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "Išimties draudimui formatas" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "Pašalinusiojo išimtį draudimui slapyvardis" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "Pakvietusiojo slapyvardis" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "Kvietimo formatas" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "Atšaukusiojo kvietimą slapyvardis" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "Nustačiusiojo režimą slapyvardis" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "Režimo ženklas (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "Režimo raidė" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "Kanalas, kuriame jis nustatomas" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Naudotojo vardas" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Tikrasis vardas" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Kanalo narys/IRC operatorius" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Serverio informacija" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Neveiklumo laikas" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Prisijungimo laikas" + +#: src/common/text.c:1203 +#, fuzzy +msgid "Away reason" +msgstr "Nebūties priežastis:" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +#, fuzzy +msgid "Message" +msgstr "Pabaigos žinutė:" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Paskyra..." + +#: src/common/text.c:1224 +#, fuzzy +msgid "Real user@host" +msgstr "Rodyti vartotojo hostą" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "Tikras IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +#, fuzzy +msgid "Channel Name" +msgstr "Kanalų kortelės" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Tekstas" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +#, fuzzy +msgid "Server Name" +msgstr "Proxy serverio hosto vardas:" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Pakvietusio Jus slapyvardis" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +#, fuzzy +msgid "Users" +msgstr "Vartotojų sąrašas" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Slapyvardis užimtas" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Bandomas slapyvardis" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Prievadas" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Tinklas" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Veiksenų eilutė" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "IP adresas" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "DCC tipas" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Failo vardas" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Paskirties failo pavad." + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "greitis" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Kelias" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +#, fuzzy +msgid "Position" +msgstr "Lango vieta" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Dydis" + +#: src/common/text.c:1385 +#, fuzzy +msgid "DCC String" +msgstr "DCC Nuostatos" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Stebimųjų skaičius" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Ankstesnysis failo pavad." + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Naujasis failo pavad." + +#: src/common/text.c:1411 +#, fuzzy +msgid "Receiver" +msgstr "Gautos bylos" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Adreso formatas" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Adresas" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "Paketas" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "sekundžių" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Pakviestojo slapyvardis" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Draudimo formatas" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Uždraudusysis" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Draudimo laikas" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Klaida apdorojant įvykį „%s“.\n" +"Įkeliamas numatytasis." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"Nepavyko perskaityti garso failo:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "Serveris nutraukė ryšį" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Jungimasis atmestas" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Maršrutas nerastas" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Nepavyko priskirti šio adreso" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Jungimasis nutrūko" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Dangun žengimo sala" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Andora" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Jungtiniai Arabų Emyratai" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Afganistanas" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Antigva ir Barbuda" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Angilija" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Albanija" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Armėnija" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Olandijos Antilai" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Antraktida" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Argentina" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "Atvirkštinis DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Rytų Samoa" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Autrija" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Australija" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Alando salos" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Azerbaidžanas" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Bosnija ir Hercegovina" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Barbadosas" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Bangladešas" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Belgija" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Burkina Fasas" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Bulgarija" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Bahreinas" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Burundis" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Verslo" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Beninas" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Bermudos" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Brunėjus" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Bolivija" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Brazilija" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Bahamos" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Butanas" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Buvė sala" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Botsvana" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Gudija" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Belizas" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Kanada" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Kokosų salos" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "Demokratinė Kongo respublika" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "Centrinės Afrikos respublika" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Kongas" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Šveicarija" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Dramblio Kaulo Krantas" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Kuko salos" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Čilė" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Kamerūnas" + +#: src/common/util.c:898 +msgid "China" +msgstr "Kinija" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Kolumbija" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Komercinė įstaiga" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Kosta Rika" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Serbija ir Juodkalnija" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Kuba" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Žaliojo Kyšulio salos" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Kalėdų sala" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Kipras" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "Čekija" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Vokietija" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Džibutis" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Danija" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Dominika" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "Dominikana" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Alžyras" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Ekvadoras" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Švietimo įstaiga" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Estija" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Egiptas" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Vakarų Sachara" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Eritrėja" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Ispanija" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Etiopija" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Europos Sąjunga" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Suomija" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Fidžis" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Folklando salos" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Mikronezija" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Farerų salos" + +#: src/common/util.c:928 +msgid "France" +msgstr "Prancūzija" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Gabonas" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Didžioji Britanija" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Gruzija" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Prancūzijos Gviana" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Normanų salos" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Gana" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Gibraltaras" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Grenlandija" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Gambija" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Gvinėja" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Vyriausybinė institucija" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Gvadelupė" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Pusiaujo Gvinėja" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Graikija" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Pietų Georgijos ir Pietų Sandvičo salos" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Gvatemala" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Guamas" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Bisau Gvinėja" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Gajana" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Honkongas" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Herdo ir Makdonaldo salos" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Hondūras" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Kroatija" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Haitis" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Vengrija" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Indonezija" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Airija" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Izraelis" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Meno sala" + +#: src/common/util.c:959 +msgid "India" +msgstr "Indija" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Informacinis" + +#: src/common/util.c:961 +msgid "International" +msgstr "Tarptautinis" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Britų teritorija Indijos vandenyne" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Irakas" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Iranas" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Islandija" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Italija" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Džersis" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Jamaika" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Jordanija" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Japonija" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Kenija" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Kirgizija" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Kambodža" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Kiribatis" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Kanarų salos" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "Sent Kitsas ir Nevis" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Šiaurės Korėja" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Pietų Korėja" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Kuveitas" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Kaimanų salos" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Kazachstanas" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Laosas" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Libanas" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Sent Lusija" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Lichtenšteinas" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Šri Lanka" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Liberija" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Lesotas" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Lietuva" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Liuksemburgas" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Latvija" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Libija" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Morokas" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Monakas" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Moldavija" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "JAV medicinos įstaiga" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Madagaskaras" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Maršalo salos" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Karinė institucija" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Makedonija" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Malis" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Birma" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Mongolija" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Makau" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Šiaurinės Marianų salos" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Martinika" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Mauritanija" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Monseratas" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Mauricijus" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Maldyvai" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Malavis" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Meksika" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Malaizija" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Mozambikas" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Namibija" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Naujoji Kaledonija" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Nigeris" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Tinklo įstaiga" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Norfolko sala" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Nigerija" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Nikaragva" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Olandija" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Norvegija" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Nepalas" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Niujė" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Naujoji Zelandija" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Omanas" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Ne pelno įstaiga" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Prancūzijos Polinezija" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Papua Naujoji Gvinėja" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Filipinai" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Pakistanas" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Lenkija" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "Sent Pjeras ir Mikelonai" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Pitkerno salos" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Puerto Rikas" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Palestinos teritorija" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Portugalija" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Paragvajus" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Kataras" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Rejunjonas" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Rumunija" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "Senasis ARPAnetas" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Rusijos federacija" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Ruanda" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Saudo Arabija" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Saliamono salos" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Seišeliai" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Sudanas" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Švedija" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Singapūras" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "Šv. Elenos kolonija" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Slovėnija" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbardo ir Jano Majaus salos" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Slovakija" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Siera Leonė" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "San Marinas" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Senegalas" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Somalis" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Surinamas" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "San Tomė ir Prinsipė" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Buvusi SSRS" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "Salvadoras" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Sirija" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Svazilandas" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Turkso ir Kaikoso salos" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Čadas" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Indijos vandenyno pietų teritorijos" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Togas" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Tailandas" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Tadžikija" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Rytų Timoras" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Turkmėnija" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Tunisas" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Turkija" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Trinidadas ir Tobagas" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Taivanas" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Tanzanija" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Ukraina" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Jungtinė Karalystė" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "Jungtinės Amerikos Valstijos" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Urugvajus" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Uzbekistanas" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Vatikanas" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "Sent Vinsentas ir Grenadinos" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Venesuela" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Mergelės salos (D. Brit.)" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "Mergelės salos (JAV)" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Vietnamas" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Valiso ir Futunos salos" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Jemenas" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Majota" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Jugoslavija" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Pietų Afrika" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Zambija" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Zimbabvė" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Nežinoma" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "Savaime atidaryti dialogų langus" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "Siųsti failą" + +#: src/common/xchat.c:728 +#, fuzzy +msgid "_User Info (WhoIs)" +msgstr "Naudotojo informacija (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +#, fuzzy +msgid "O_perator Actions" +msgstr "Operatoriaus veiksmai" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Suteikti operatoriaus statusą" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Pašalinti operatoriaus statusą" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Suteikti balsą" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Pašalinti balsą" + +#: src/common/xchat.c:737 +#, fuzzy +msgid "Kick/Ban" +msgstr "Vartotojo vardas" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +#, fuzzy +msgid "Kick" +msgstr "Vartotojo vardas" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +#, fuzzy +msgid "Ban" +msgstr "Mygtukai" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +#, fuzzy +msgid "KickBan" +msgstr "Vartotojo vardas" + +#: src/common/xchat.c:757 +#, fuzzy +msgid "Leave Channel" +msgstr "Kanalas" + +#: src/common/xchat.c:758 +#, fuzzy +msgid "Join Channel..." +msgstr "Nauja kanalo kortelė..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +#, fuzzy +msgid "Enter Channel to Join:" +msgstr "Kanalų sąrašo langas..." + +#: src/common/xchat.c:760 +#, fuzzy +msgid "Server Links" +msgstr "Serverių sąrašas..." + +#: src/common/xchat.c:761 +#, fuzzy +msgid "Ping Server" +msgstr "Proxy serveris" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Paslėpti versiją" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Duoti opą" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "Pašalinti opą" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "iki" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Įveskite %s išmetimo priežastį:" + +#: src/common/xchat.c:778 +#, fuzzy +msgid "Sendfile" +msgstr "Garsų katalogas:" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Dialogas" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "„WhoIs“" + +#: src/common/xchat.c:789 +#, fuzzy +msgid "Send" +msgstr "Garsas" + +#: src/common/xchat.c:790 +#, fuzzy +msgid "Chat" +msgstr "X-Chat" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Išvalyti" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "„Ping“" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "Nepavyko prisijungti prie sesijos magistralės" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:30 +#, fuzzy +msgid "remote access" +msgstr "Negaliu pasiekti %s\n" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "įskiepis nuotoliniam priėjimui per DBUS" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Nepavyko prisijungti prie sesijos magistralės: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Nepavyko gauti %s: %s\n" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "Apie X-Chat..." + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Simbolių lentelė" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +#, fuzzy +msgid "Not connected." +msgstr "Atsijungta." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "" + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Šablonas" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "Nuo" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Data" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" + +#: src/fe-gtk/banlist.c:391 +#, fuzzy, c-format +msgid "XChat: Ban List (%s)" +msgstr "Vartotojų sąrašo mygtukai..." + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Atnaujinti" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "" + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +#, fuzzy +msgid "_Join Channel" +msgstr "Nauja kanalo kortelė..." + +#: src/fe-gtk/chanlist.c:633 +#, fuzzy +msgid "_Copy Channel Name" +msgstr "Kanalų kortelės" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "" + +#: src/fe-gtk/chanlist.c:724 +#, fuzzy, c-format +msgid "XChat: Channel List (%s)" +msgstr "Vartotojų sąrašo mygtukai..." + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:787 +#, fuzzy +msgid "_Download List" +msgstr "Garsų katalogas:" + +#: src/fe-gtk/chanlist.c:793 +#, fuzzy +msgid "Save _List..." +msgstr "Serverių sąrašas..." + +#: src/fe-gtk/chanlist.c:806 +#, fuzzy +msgid "Show only:" +msgstr "Rodyti niką" + +#: src/fe-gtk/chanlist.c:818 +#, fuzzy +msgid "channels with" +msgstr "Kanalų kortelės" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:843 +#, fuzzy +msgid "users." +msgstr "Vartotojų sąrašas" + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:861 +#, fuzzy +msgid "Channel name" +msgstr "Kanalų kortelės" + +#: src/fe-gtk/chanlist.c:882 +#, fuzzy +msgid "Search type:" +msgstr "_Paieška buferyje..." + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +#, fuzzy +msgid "Find:" +msgstr "Šriftas:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "" + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "" + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Būsena" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Failas" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +#, fuzzy +msgid "Both" +msgstr "Apačioje" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Išsiuntimai" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "Parsiuntimai" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Detalės" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Failas:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "Adresas:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Nutraukti" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Priimti" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Pratęsti" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Atverti aplanką..." + +#: src/fe-gtk/dccgui.c:990 +#, fuzzy +msgid "XChat: DCC Chat List" +msgstr "Vartotojų sąrašo mygtukai..." + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Pavadinimas" + +#: src/fe-gtk/editlist.c:311 +#, fuzzy +msgid "Command" +msgstr "Grojimo komanda:" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Atšaukti" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Pagalba" + +#: src/fe-gtk/fe-gtk.c:124 +#, fuzzy +msgid "Don't auto connect to servers" +msgstr "Savaime vėl prisijungti prie serverio" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +#, fuzzy +msgid "Execute command:" +msgstr "Pranešimas:" + +#: src/fe-gtk/fe-gtk.c:132 +msgid "Open URL or execute command in an existing XChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Rodyti versijos informaciją" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:634 +#, fuzzy +msgid "Search buffer is empty.\n" +msgstr "_Paieška buferyje..." + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<joks>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Klavišas" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "" + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "" + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "" + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +#, fuzzy +msgid "Invite" +msgstr "Nematomas" + +#: src/fe-gtk/ignoregui.c:180 +#, fuzzy +msgid "Unignore" +msgstr "Nerikiuotas" + +#: src/fe-gtk/ignoregui.c:306 +#, fuzzy +msgid "Enter mask to ignore:" +msgstr "Kanalų sąrašo langas..." + +#: src/fe-gtk/ignoregui.c:353 +#, fuzzy +msgid "XChat: Ignore list" +msgstr "Serverių sąrašas..." + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:368 +#, fuzzy +msgid "Channel:" +msgstr "Atšaukti" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:371 +#, fuzzy +msgid "CTCP:" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:372 +#, fuzzy +msgid "Invite:" +msgstr "Nematomas" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +#, fuzzy +msgid "Add..." +msgstr "Adresas" + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "" + +#: src/fe-gtk/joind.c:125 +#, fuzzy +msgid "XChat: Connection Complete" +msgstr "Pranešimas:" + +#: src/fe-gtk/joind.c:150 +#, fuzzy, c-format +msgid "Connection to %s complete." +msgstr "Pranešimas:" + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "" + +#: src/fe-gtk/joind.c:179 +#, fuzzy +msgid "_Join this channel:" +msgstr "Nauja kanalo kortelė..." + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" + +#: src/fe-gtk/joind.c:198 +#, fuzzy +msgid "O_pen the Channel-List window." +msgstr "Kanalų kortelės" + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "" + +#: src/fe-gtk/maingui.c:504 +#, fuzzy +msgid "Dialog with" +msgstr "Dialogų langai" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "Užverti XChat?" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "Kitą kartą neklausti." + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Esate prisijungę prie %i IRC tinklų." + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "Ar tikrai norite išeiti?" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "Yra aktyvių failų siuntimų." + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "_Mažinti į dėklę" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "" + +#: src/fe-gtk/maingui.c:1557 +#, fuzzy +msgid "Normal" +msgstr "Nėra" + +#: src/fe-gtk/maingui.c:1559 +#, fuzzy +msgid "Colors 0-7" +msgstr "Uždaryti" + +#: src/fe-gtk/maingui.c:1569 +#, fuzzy +msgid "Colors 8-15" +msgstr "Uždaryti" + +#: src/fe-gtk/maingui.c:1612 +msgid "_Settings" +msgstr "_Nuostatos" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "Pyptelėti, gavus asmeninę žinutę" + +#: src/fe-gtk/maingui.c:1625 +msgid "_Extra Alerts" +msgstr "" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "Pyptelėti, gavus asmeninę žinutę" + +#: src/fe-gtk/maingui.c:1628 +#, fuzzy +msgid "Blink Tray _Icon" +msgstr "Pyptelėti, gavus asmeninę žinutę" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +msgid "_Detach" +msgstr "" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "_Užverti" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "" + +#: src/fe-gtk/maingui.c:2141 +#, fuzzy +msgid "Ban List" +msgstr "Kanalų sąrašo langas..." + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "" + +#: src/fe-gtk/maingui.c:2155 +#, fuzzy +msgid "User Limit" +msgstr "Vartotojų sąrašas" + +#: src/fe-gtk/maingui.c:2264 +#, fuzzy +msgid "Show/Hide userlist" +msgstr "Rodyti vartotojo hostą" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" + +#: src/fe-gtk/maingui.c:2660 +#, fuzzy +msgid "Enter new nickname:" +msgstr "Rodyti niką" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +#, fuzzy +msgid "Real Name:" +msgstr "Kanalų kortelės" + +#: src/fe-gtk/menu.c:632 +#, fuzzy +msgid "User:" +msgstr "Vartotojo meniu" + +#: src/fe-gtk/menu.c:639 +#, fuzzy +msgid "Country:" +msgstr "Šriftas:" + +#: src/fe-gtk/menu.c:646 +#, fuzzy +msgid "Server:" +msgstr "Proxy serveris" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "" + +#: src/fe-gtk/menu.c:672 +#, fuzzy +msgid "Away Msg:" +msgstr "Nebūties priežastis:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1013 +#, fuzzy +msgid "Cycle Channel" +msgstr "Nauja kanalo kortelė..." + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +#, fuzzy +msgid "XChat: User menu" +msgstr "X-Chat: Nuostatos" + +#: src/fe-gtk/menu.c:1079 +#, fuzzy +msgid "Edit This Menu..." +msgstr "Keisti vartotojo meniu..." + +#: src/fe-gtk/menu.c:1280 +#, fuzzy +msgid "Retrieve channel list..." +msgstr "Kanalų sąrašo langas..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" + +#: src/fe-gtk/menu.c:1404 +#, fuzzy +msgid "XChat: User Defined Commands" +msgstr "" +"Vartotojo aprašytos komandos:\n" +"\n" +" " + +#: src/fe-gtk/menu.c:1411 +#, fuzzy +msgid "XChat: Userlist Popup menu" +msgstr "X-Chat: Nuostatos" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "" + +#: src/fe-gtk/menu.c:1418 +#, fuzzy +msgid "XChat: Replace" +msgstr "X-Chat: Nuostatos" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1444 +#, fuzzy +msgid "XChat: Userlist buttons" +msgstr "Vartotojų sąrašo mygtukai..." + +#: src/fe-gtk/menu.c:1451 +#, fuzzy +msgid "XChat: Dialog buttons" +msgstr "Vartotojų sąrašo mygtukai..." + +#: src/fe-gtk/menu.c:1458 +#, fuzzy +msgid "XChat: CTCP Replies" +msgstr "CTCP atsakymai..." + +#: src/fe-gtk/menu.c:1564 +#, fuzzy +msgid "_XChat" +msgstr "_X-Chat" + +#: src/fe-gtk/menu.c:1565 +#, fuzzy +msgid "Network Li_st..." +msgstr "Notify sąrašo langas..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "" + +#: src/fe-gtk/menu.c:1569 +#, fuzzy +msgid "Server Tab..." +msgstr "Nauja serverio kortelė..." + +#: src/fe-gtk/menu.c:1570 +#, fuzzy +msgid "Channel Tab..." +msgstr "Nauja kanalo kortelė..." + +#: src/fe-gtk/menu.c:1571 +#, fuzzy +msgid "Server Window..." +msgstr "Naujas serverio langas..." + +#: src/fe-gtk/menu.c:1572 +#, fuzzy +msgid "Channel Window..." +msgstr "Naujas kanalo langas..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +#, fuzzy +msgid "_Load Plugin or Script..." +msgstr "Įkelti Perl skriptą..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +#, fuzzy +msgid "_Quit" +msgstr "Išeiti" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "_Rodyti" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1592 +#, fuzzy +msgid "_Topic Bar" +msgstr "Tema" + +#: src/fe-gtk/menu.c:1593 +#, fuzzy +msgid "_User List" +msgstr "Vartotojų sąrašas" + +#: src/fe-gtk/menu.c:1594 +#, fuzzy +msgid "U_serlist Buttons" +msgstr "Vartotojų sąrašo mygtukai..." + +#: src/fe-gtk/menu.c:1595 +#, fuzzy +msgid "M_ode Buttons" +msgstr "Kanalo būdo mygtukai" + +#: src/fe-gtk/menu.c:1597 +#, fuzzy +msgid "_Channel Switcher" +msgstr "Kanalų sąrašo langas..." + +#: src/fe-gtk/menu.c:1599 +#, fuzzy +msgid "_Tabs" +msgstr "Kortelės" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "" + +#: src/fe-gtk/menu.c:1610 +#, fuzzy +msgid "_Server" +msgstr "Proxy serveris" + +#: src/fe-gtk/menu.c:1611 +#, fuzzy +msgid "_Disconnect" +msgstr "Jungiuosi" + +#: src/fe-gtk/menu.c:1612 +#, fuzzy +msgid "_Reconnect" +msgstr "Jungiuosi" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "Nauja kanalo kortelė..." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "Nauja kanalo kortelė..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Manęs nėra" + +#: src/fe-gtk/menu.c:1619 +#, fuzzy +msgid "_Usermenu" +msgstr "Vartotojo meniu" + +#: src/fe-gtk/menu.c:1621 +#, fuzzy +msgid "S_ettings" +msgstr "Nuostatos" + +#: src/fe-gtk/menu.c:1622 +#, fuzzy +msgid "_Preferences" +msgstr "X-Chat: Nuostatos" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "" + +#: src/fe-gtk/menu.c:1625 +#, fuzzy +msgid "Auto Replace..." +msgstr "Pakeisti..." + +#: src/fe-gtk/menu.c:1626 +#, fuzzy +msgid "CTCP Replies..." +msgstr "CTCP atsakymai..." + +#: src/fe-gtk/menu.c:1627 +#, fuzzy +msgid "Dialog Buttons..." +msgstr "Vartotojų sąrašo mygtukai..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "" + +#: src/fe-gtk/menu.c:1629 +#, fuzzy +msgid "Text Events..." +msgstr "Keisti įvykių užrašus..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "" + +#: src/fe-gtk/menu.c:1631 +#, fuzzy +msgid "User Commands..." +msgstr "Vartotojo komandos..." + +#: src/fe-gtk/menu.c:1632 +#, fuzzy +msgid "Userlist Buttons..." +msgstr "Vartotojų sąrašo mygtukai..." + +#: src/fe-gtk/menu.c:1633 +#, fuzzy +msgid "Userlist Popup..." +msgstr "Vartotojų sąrašo mygtukai..." + +#: src/fe-gtk/menu.c:1636 +#, fuzzy +msgid "_Window" +msgstr "_Langai" + +#: src/fe-gtk/menu.c:1637 +#, fuzzy +msgid "Ban List..." +msgstr "Kanalų sąrašo langas..." + +#: src/fe-gtk/menu.c:1638 +#, fuzzy +msgid "Character Chart..." +msgstr "Simbolių aibė" + +#: src/fe-gtk/menu.c:1639 +#, fuzzy +msgid "Direct Chat..." +msgstr "DCC pokalbio langas..." + +#: src/fe-gtk/menu.c:1640 +#, fuzzy +msgid "File Transfers..." +msgstr "Bylų siuntimas" + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "Kanalų sąrašo langas..." + +#: src/fe-gtk/menu.c:1642 +#, fuzzy +msgid "Ignore List..." +msgstr "Ignoravimo langas..." + +#: src/fe-gtk/menu.c:1643 +#, fuzzy +msgid "Plugins and Scripts..." +msgstr "Priedų sąrašas" + +#: src/fe-gtk/menu.c:1644 +#, fuzzy +msgid "Raw Log..." +msgstr "Ryšio Log langas..." + +#: src/fe-gtk/menu.c:1645 +#, fuzzy +msgid "URL Grabber..." +msgstr "URL griebiklio langas..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1648 +#, fuzzy +msgid "C_lear Text" +msgstr "Uždaryti" + +#: src/fe-gtk/menu.c:1650 +#, fuzzy +msgid "Search Text..." +msgstr "_Paieška buferyje..." + +#: src/fe-gtk/menu.c:1651 +#, fuzzy +msgid "Save Text..." +msgstr "Keisti įvykių užrašus..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_Pagalba" + +#: src/fe-gtk/menu.c:1654 +#, fuzzy +msgid "_Contents" +msgstr "Jungiuosi" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +#, fuzzy +msgid "_About" +msgstr "Apie X-Chat..." + +#: src/fe-gtk/menu.c:2147 +#, fuzzy +msgid "_Attach" +msgstr "_Langai" + +#: src/fe-gtk/notifygui.c:138 +#, fuzzy +msgid "Last Seen" +msgstr "Greitas DCC siuntimas" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Niekada" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "prieš %d minučių" + +#: src/fe-gtk/notifygui.c:218 +#, fuzzy +msgid "Online" +msgstr "Dokumentacija..." + +#: src/fe-gtk/notifygui.c:347 +#, fuzzy +msgid "Enter nickname to add:" +msgstr "Rodyti niką" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "Paskutinis DCC siuntimo prievadas:" + +#: src/fe-gtk/notifygui.c:434 +#, fuzzy +msgid "Open Dialog" +msgstr "Savaime atidaryti dialogų langus" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:591 +#, fuzzy +msgid "_Hide" +msgstr "Paslėpta" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +#, fuzzy +msgid "Channel Message" +msgstr "Kanalų kortelės" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +#, fuzzy +msgid "Private Message" +msgstr "Asmeninių žinučių kortelės" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +#, fuzzy +msgid "Highlighted Message" +msgstr "Paryškinti Notify" + +#: src/fe-gtk/plugin-tray.c:600 +#, fuzzy +msgid "_Change status" +msgstr "Kanalų kortelės" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "Nėra" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Versija" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "" + +#: src/fe-gtk/plugingui.c:221 +#, fuzzy +msgid "XChat: Plugins and Scripts" +msgstr "Visus priedus" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "Į_kelti" + +#: src/fe-gtk/plugingui.c:230 +#, fuzzy +msgid "_UnLoad" +msgstr "Įkelti" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +#, fuzzy +msgid "Save As..." +msgstr "Keisti įvykių užrašus..." + +#: src/fe-gtk/rawlog.c:95 +#, fuzzy, c-format +msgid "XChat: Rawlog (%s)" +msgstr "Vartotojų sąrašo mygtukai..." + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "" + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "" + +#: src/fe-gtk/search.c:116 +#, fuzzy +msgid "XChat: Search" +msgstr "X-Chat: Nuostatos" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "" + +#: src/fe-gtk/search.c:153 +#, fuzzy +msgid "_Find" +msgstr "Šriftas:" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Naujas tinklas" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "Kanalas" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "Vartotojų sąrašo mygtukai..." + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "Proxy serverio prievadas:" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "_Keisti" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1397 +#, fuzzy, c-format +msgid "XChat: Edit %s" +msgstr "Vartotojų sąrašo mygtukai..." + +#: src/fe-gtk/servlistgui.c:1416 +#, fuzzy, c-format +msgid "Servers for %s" +msgstr "Serverių sąrašas..." + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1430 +#, fuzzy +msgid "Your Details" +msgstr "Tavo IRC nuostatos" + +#: src/fe-gtk/servlistgui.c:1436 +#, fuzzy +msgid "Use global user information" +msgstr "Vartotojo meniu" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +#, fuzzy +msgid "_Nick name:" +msgstr "Rodyti niką" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +#, fuzzy +msgid "Second choice:" +msgstr "Siųsti /whois" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +#, fuzzy +msgid "_User name:" +msgstr "Proxy serverio hosto vardas:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +#, fuzzy +msgid "Rea_l name:" +msgstr "Kanalų kortelės" + +#: src/fe-gtk/servlistgui.c:1454 +#, fuzzy +msgid "Connecting" +msgstr "Jungiuosi" + +#: src/fe-gtk/servlistgui.c:1460 +#, fuzzy +msgid "Auto connect to this network at startup" +msgstr "Savaime perskirti" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "Proxy serveris" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "Kanalas" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1480 +#, fuzzy +msgid "Connect command:" +msgstr "Pranešimas:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1485 +#, fuzzy +msgid "Nickserv password:" +msgstr "Proxy serverio prievadas:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1491 +#, fuzzy +msgid "Server password:" +msgstr "Proxy serverio prievadas:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1496 +#, fuzzy +msgid "Character set:" +msgstr "Simbolių aibė" + +#: src/fe-gtk/servlistgui.c:1649 +#, fuzzy +msgid "XChat: Network List" +msgstr "Serverių sąrašas..." + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Tinklai" + +#: src/fe-gtk/servlistgui.c:1786 +#, fuzzy +msgid "Skip network list on startup" +msgstr "Nerodyti serverių sąrašo pradžioje" + +#: src/fe-gtk/servlistgui.c:1818 +#, fuzzy +msgid "_Edit..." +msgstr "Įkelti" + +#: src/fe-gtk/servlistgui.c:1825 +#, fuzzy +msgid "_Sort" +msgstr "Šriftas:" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1851 +#, fuzzy +msgid "C_onnect" +msgstr "Pranešimas:" + +#: src/fe-gtk/setup.c:104 +#, fuzzy +msgid "Text Box Appearance" +msgstr "Išvaizda" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Šriftas:" + +#: src/fe-gtk/setup.c:106 +#, fuzzy +msgid "Background image:" +msgstr "Paveikslėlis fonui:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "" + +#: src/fe-gtk/setup.c:108 +#, fuzzy +msgid "Colored nick names" +msgstr "Spalvoti nikai" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "" + +#: src/fe-gtk/setup.c:110 +#, fuzzy +msgid "Indent nick names" +msgstr "Lygiuoti nikus" + +#: src/fe-gtk/setup.c:111 +#, fuzzy +msgid "Make nick names right-justified" +msgstr "Lygiuoti nikus prie dešinės." + +#: src/fe-gtk/setup.c:112 +#, fuzzy +msgid "Transparent background" +msgstr "Skaidrus fonas" + +#: src/fe-gtk/setup.c:113 +#, fuzzy +msgid "Show marker line" +msgstr "Rodyti „nėra“ vieną kartą" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "" + +#: src/fe-gtk/setup.c:115 +#, fuzzy +msgid "Transparency Settings" +msgstr "Bylų siuntimo nuostatos" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Raudona:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Žalia:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Mėlyna:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +#, fuzzy +msgid "Time Stamps" +msgstr "Visada įrašyti laiką į logus" + +#: src/fe-gtk/setup.c:121 +#, fuzzy +msgid "Enable time stamps" +msgstr "Visada įrašyti laiką į logus" + +#: src/fe-gtk/setup.c:122 +#, fuzzy +msgid "Time stamp format:" +msgstr "Visada įrašyti laiką į logus" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "" + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +#, fuzzy +msgid "Input box" +msgstr "Įvesties laukas" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Rašybos tikrinimas" + +#: src/fe-gtk/setup.c:143 +#, fuzzy +msgid "Nick Completion" +msgstr "Niko pabaigimas" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "" + +#: src/fe-gtk/setup.c:146 +#, fuzzy +msgid "Nick completion suffix:" +msgstr "Niko pabaigimas" + +#: src/fe-gtk/setup.c:147 +#, fuzzy +msgid "Nick completion sorted:" +msgstr "Niko pabaigimas" + +#: src/fe-gtk/setup.c:150 +#, fuzzy +msgid "Input Box Codes" +msgstr "Įvesties laukas" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, Op'ai pirmiau" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, Op'ai paskiau" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Nerikiuotas" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Aukščiausia" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Apačioje" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Paslėpta" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Vartotojų sąrašas" + +#: src/fe-gtk/setup.c:201 +#, fuzzy +msgid "Show hostnames in user list" +msgstr "Rodyti vartotojo hostą" + +#: src/fe-gtk/setup.c:204 +#, fuzzy +msgid "User list sorted by:" +msgstr "Vartotojai surikiuoti pagal:" + +#: src/fe-gtk/setup.c:205 +#, fuzzy +msgid "Show user list at:" +msgstr "Rodyti vartotojo hostą" + +#: src/fe-gtk/setup.c:207 +#, fuzzy +msgid "Away tracking" +msgstr "Nėra nuostatos" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:209 +#, fuzzy +msgid "On channels smaller than:" +msgstr "Kanalų kortelės" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Langai" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Kortelės" + +#: src/fe-gtk/setup.c:232 +#, fuzzy +msgid "Always" +msgstr "Nėra" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "" + +#: src/fe-gtk/setup.c:242 +#, fuzzy +msgid "Tree" +msgstr "Atšaukti" + +#: src/fe-gtk/setup.c:249 +#, fuzzy +msgid "Switcher type:" +msgstr "_Paieška buferyje..." + +#: src/fe-gtk/setup.c:250 +#, fuzzy +msgid "Open an extra tab for server messages" +msgstr "Naudoti atskirą kortelę/langą serverio žinutėms" + +#: src/fe-gtk/setup.c:251 +#, fuzzy +msgid "Open an extra tab for server notices" +msgstr "Naudoti atskirą kortelę/langą serverio žinutėms" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "Uždaryti" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "" + +#: src/fe-gtk/setup.c:258 +#, fuzzy +msgid "Show channel switcher at:" +msgstr "Rodyti niką" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "" + +#: src/fe-gtk/setup.c:259 +#, fuzzy +msgid "letters." +msgstr "Paletė..." + +#: src/fe-gtk/setup.c:261 +#, fuzzy +msgid "Tabs or Windows" +msgstr "Dialogų langai" + +#: src/fe-gtk/setup.c:262 +#, fuzzy +msgid "Open channels in:" +msgstr "Kanalų kortelės" + +#: src/fe-gtk/setup.c:263 +#, fuzzy +msgid "Open dialogs in:" +msgstr "Savaime atidaryti dialogų langus" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "" + +#: src/fe-gtk/setup.c:264 +#, fuzzy +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Naudoti korteles DCC, Ignoravimo, Notify langams." + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "" + +#: src/fe-gtk/setup.c:280 +#, fuzzy +msgid "Auto accept file offers:" +msgstr "Savaime priimti DCC siuntimus" + +#: src/fe-gtk/setup.c:281 +#, fuzzy +msgid "Download files to:" +msgstr "Garsų katalogas:" + +#: src/fe-gtk/setup.c:282 +#, fuzzy +msgid "Move completed files to:" +msgstr "Garsų katalogas:" + +#: src/fe-gtk/setup.c:283 +#, fuzzy +msgid "Save nick name in filenames" +msgstr "Įdėti siuntėjo niką į gauntų bylų vardus" + +#: src/fe-gtk/setup.c:285 +#, fuzzy +msgid "Network Settings" +msgstr "Buferio nuostatos" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" + +#: src/fe-gtk/setup.c:288 +#, fuzzy +msgid "DCC IP address:" +msgstr "IP adresas" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "" + +#: src/fe-gtk/setup.c:290 +#, fuzzy +msgid "First DCC send port:" +msgstr "Pirmas DCC siuntimo prievadas:" + +#: src/fe-gtk/setup.c:291 +#, fuzzy +msgid "Last DCC send port:" +msgstr "Paskutinis DCC siuntimo prievadas:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "" + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "" + +#: src/fe-gtk/setup.c:341 +#, fuzzy +msgid "Highlighted Messages" +msgstr "Paryškinimo nuostatos" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:344 +#, fuzzy +msgid "Extra words to highlight:" +msgstr "Paryškinami žodžiai:" + +#: src/fe-gtk/setup.c:345 +#, fuzzy +msgid "Nick names not to highlight:" +msgstr "Paryškinami žodžiai:" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "(atskirk kableliais)" + +#: src/fe-gtk/setup.c:353 +#, fuzzy +msgid "Default Messages" +msgstr "Pabaigos žinutė:" + +#: src/fe-gtk/setup.c:354 +#, fuzzy +msgid "Quit:" +msgstr "Išeiti" + +#: src/fe-gtk/setup.c:355 +#, fuzzy +msgid "Leave channel:" +msgstr "Kanalas" + +#: src/fe-gtk/setup.c:356 +#, fuzzy +msgid "Away:" +msgstr "Nėra" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Nėra" + +#: src/fe-gtk/setup.c:359 +#, fuzzy +msgid "Announce away messages" +msgstr "Skelbti nebūties žinutės" + +#: src/fe-gtk/setup.c:360 +#, fuzzy +msgid "Announce your away messages to all channels" +msgstr "Skelbti, kad tavęs nėra, visuose kanaluose, kuriuose esi." + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Rodyti „nėra“ vieną kartą" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "" + +#: src/fe-gtk/setup.c:362 +#, fuzzy +msgid "Automatically unmark away" +msgstr "Savaime atidaryti DCC gavimo langą" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "" + +#: src/fe-gtk/setup.c:369 +#, fuzzy +msgid "Advanced Settings" +msgstr "Nėra nuostatos" + +#: src/fe-gtk/setup.c:370 +#, fuzzy +msgid "Auto reconnect delay:" +msgstr "Savaiminio prisijungimo delsa:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" + +#: src/fe-gtk/setup.c:373 +#, fuzzy +msgid "Hide join and part messages" +msgstr "Pyptelėti, gavus asmeninę žinutę" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "" + +#: src/fe-gtk/setup.c:374 +#, fuzzy +msgid "Auto Open DCC Windows" +msgstr "Savaime atidaryti dialogų langus" + +#: src/fe-gtk/setup.c:375 +#, fuzzy +msgid "Send window" +msgstr "Pagrindinis langas" + +#: src/fe-gtk/setup.c:376 +#, fuzzy +msgid "Receive window" +msgstr "Gautos bylos" + +#: src/fe-gtk/setup.c:377 +#, fuzzy +msgid "Chat window" +msgstr "Kanalų langai" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Loginimas" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "Leisti surašyti visus pokalbius į bylas" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "" + +#: src/fe-gtk/setup.c:392 +#, fuzzy +msgid "Insert timestamps in logs" +msgstr "Visada įrašyti laiką į logus" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Uždraustas)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "" + +#: src/fe-gtk/setup.c:414 +#, fuzzy +msgid "All Connections" +msgstr "Jungiuosi" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "" + +#: src/fe-gtk/setup.c:422 +#, fuzzy +msgid "Your Address" +msgstr "Adresas" + +#: src/fe-gtk/setup.c:423 +#, fuzzy +msgid "Bind to:" +msgstr "Šriftas:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "" + +#: src/fe-gtk/setup.c:426 +#, fuzzy +msgid "Proxy Server" +msgstr "Proxy serveris" + +#: src/fe-gtk/setup.c:427 +#, fuzzy +msgid "Hostname:" +msgstr "Hosto vardas / IP numeris:" + +#: src/fe-gtk/setup.c:428 +#, fuzzy +msgid "Port:" +msgstr "Šriftas:" + +#: src/fe-gtk/setup.c:429 +#, fuzzy +msgid "Type:" +msgstr "Viršus:" + +#: src/fe-gtk/setup.c:430 +#, fuzzy +msgid "Use proxy for:" +msgstr "Vartotojo meniu" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:438 +#, fuzzy +msgid "Username:" +msgstr "Proxy serverio hosto vardas:" + +#: src/fe-gtk/setup.c:439 +#, fuzzy +msgid "Password:" +msgstr "Proxy serverio prievadas:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "" + +#: src/fe-gtk/setup.c:905 +#, fuzzy +msgid "Select Download Folder" +msgstr "Pasirink šriftą" + +#: src/fe-gtk/setup.c:914 +#, fuzzy +msgid "Select font" +msgstr "Pasirink šriftą" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Naršyti..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1215 +#, fuzzy +msgid "Select color" +msgstr "Pasirink šriftą" + +#: src/fe-gtk/setup.c:1295 +#, fuzzy +msgid "Text Colors" +msgstr "Uždaryti" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +#, fuzzy +msgid "Background:" +msgstr "XPM fonui:" + +#: src/fe-gtk/setup.c:1316 +#, fuzzy +msgid "Marking Text" +msgstr "Uždaryti" + +#: src/fe-gtk/setup.c:1321 +#, fuzzy +msgid "Interface Colors" +msgstr "Sąsaja" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "" + +#: src/fe-gtk/setup.c:1325 +#, fuzzy +msgid "New message:" +msgstr "Pabaigos žinutė:" + +#: src/fe-gtk/setup.c:1326 +#, fuzzy +msgid "Away user:" +msgstr "Nebūties priežastis:" + +#: src/fe-gtk/setup.c:1327 +#, fuzzy +msgid "Highlight:" +msgstr "Paryškinimas" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "" + +#: src/fe-gtk/setup.c:1429 +#, fuzzy +msgid "Sound file" +msgstr "Garsų katalogas:" + +#: src/fe-gtk/setup.c:1464 +#, fuzzy +msgid "Select a sound file" +msgstr "Garsų katalogas:" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "" + +#: src/fe-gtk/setup.c:1544 +#, fuzzy +msgid "External sound playing _program:" +msgstr "Išorinės programos" + +#: src/fe-gtk/setup.c:1562 +#, fuzzy +msgid "_External program" +msgstr "Išorinės programos" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "" + +#: src/fe-gtk/setup.c:1585 +#, fuzzy +msgid "Sound files _directory:" +msgstr "Garsų katalogas:" + +#: src/fe-gtk/setup.c:1624 +#, fuzzy +msgid "Sound file:" +msgstr "Garsų katalogas:" + +#: src/fe-gtk/setup.c:1639 +#, fuzzy +msgid "_Browse..." +msgstr "Naršyti..." + +#: src/fe-gtk/setup.c:1650 +#, fuzzy +msgid "_Play" +msgstr "Skydelis" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Sąsaja" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "" + +#: src/fe-gtk/setup.c:1702 +#, fuzzy +msgid "User list" +msgstr "Vartotojų sąrašas" + +#: src/fe-gtk/setup.c:1703 +#, fuzzy +msgid "Channel switcher" +msgstr "Kanalų sąrašo langas..." + +#: src/fe-gtk/setup.c:1704 +#, fuzzy +msgid "Colors" +msgstr "Uždaryti" + +#: src/fe-gtk/setup.c:1706 +#, fuzzy +msgid "Chatting" +msgstr "X-Chat" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Pagrindai" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Garsas" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "" + +#: src/fe-gtk/setup.c:1715 +#, fuzzy +msgid "File transfers" +msgstr "Bylų siuntimas" + +#: src/fe-gtk/setup.c:1823 +#, fuzzy +msgid "Categories" +msgstr "Kategorijos" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" + +#: src/fe-gtk/setup.c:2058 +#, fuzzy +msgid "XChat: Preferences" +msgstr "X-Chat: Nuostatos" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "" + +#: src/fe-gtk/textgui.c:372 +#, fuzzy +msgid "Edit Events" +msgstr "Keisti įvykių užrašus..." + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "" + +#: src/fe-gtk/textgui.c:440 +#, fuzzy +msgid "Load From..." +msgstr "Įkelti" + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +#, fuzzy +msgid "XChat: URL Grabber" +msgstr "URL griebiklio langas..." + +#: src/fe-gtk/urlgrab.c:199 +#, fuzzy +msgid "Clear list" +msgstr "Vartotojų sąrašas" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "" + +#~ msgid "Direct client-to-client" +#~ msgstr "Tiesioginis klientas-klientas ryšys" + +#, fuzzy +#~ msgid "Send File" +#~ msgstr "Garsų katalogas:" + +#~ msgid "Offer Chat" +#~ msgstr "Siūlyti pokalbį" + +#, fuzzy +#~ msgid "Abort Chat" +#~ msgstr "Apie X-Chat..." + +#, fuzzy +#~ msgid "Userinfo" +#~ msgstr "Vartotojo meniu" + +#, fuzzy +#~ msgid "Clientinfo" +#~ msgstr "Testuoti nuostatas" + +#, fuzzy +#~ msgid "Time" +#~ msgstr "Laiko ribos" + +#, fuzzy +#~ msgid "Finger" +#~ msgstr "Wingate" + +#~ msgid "Oper" +#~ msgstr "IRC opams" + +#~ msgid "Kill this user" +#~ msgstr "Atjungti šį naudotoją" + +#, fuzzy +#~ msgid "Mode" +#~ msgstr "Statuso simbolis" + +#~ msgid "Give Half-Ops" +#~ msgstr "Suteikti halfopo statusą" + +#~ msgid "Take Half-Ops" +#~ msgstr "Pašalinti halfopo statusą" + +#, fuzzy +#~ msgid "Ignore" +#~ msgstr "Nerikiuotas" + +#, fuzzy +#~ msgid "Ignore User" +#~ msgstr "Ignoravimo langas..." + +#, fuzzy +#~ msgid "UnIgnore User" +#~ msgstr "Nerikiuotas" + +#~ msgid "Info" +#~ msgstr "Info" + +#~ msgid "Who" +#~ msgstr "„Who“" + +#, fuzzy +#~ msgid "DNS Lookup" +#~ msgstr "DNS paieškos programa:" + +#, fuzzy +#~ msgid "UserHost" +#~ msgstr "Vartotojų sąrašas" + +#, fuzzy +#~ msgid "External" +#~ msgstr "Išorinės programos" + +#~ msgid "Traceroute" +#~ msgstr "„Traceroute“" + +#~ msgid "Telnet" +#~ msgstr "„Telnet“" + +#~ msgid "About XChat" +#~ msgstr "Apie XChat" + +#, fuzzy +#~ msgid "Show join/part messages" +#~ msgstr "Pyptelėti, gavus asmeninę žinutę" + +#, fuzzy +#~ msgid "Color paste" +#~ msgstr "Uždaryti" + +#, fuzzy +#~ msgid "_Close Tab" +#~ msgstr "Uždaryti" + +#, fuzzy +#~ msgid "Channel List..." +#~ msgstr "Kanalų sąrašo langas..." + +#, fuzzy +#~ msgid "Notify List..." +#~ msgstr "Notify sąrašo langas..." + +#, fuzzy +#~ msgid "_Close Window" +#~ msgstr "_Langai" + +#, fuzzy +#~ msgid "User" +#~ msgstr "Vartotojo meniu" + +#, fuzzy +#~ msgid "XChat: Notify List" +#~ msgstr "Notify sąrašo langas..." + +#, fuzzy +#~ msgid "C_hannels to join:" +#~ msgstr "Kanalų sąrašo langas..." + +#, fuzzy +#~ msgid "Channel Switcher" +#~ msgstr "Kanalų sąrašo langas..." + +#, fuzzy +#~ msgid "Servername" +#~ msgstr "Proxy serverio hosto vardas:" + +#~ msgid "Apply" +#~ msgstr "Pritaikyti" + +#, fuzzy +#~ msgid "Save the list" +#~ msgstr "Savaime išsaugoti URL sąrašą" + +#, fuzzy +#~ msgid "X-Chat: File Receive List" +#~ msgstr "Serverių sąrašas..." + +#, fuzzy +#~ msgid "To" +#~ msgstr "Aukščiausia" + +#, fuzzy +#~ msgid "X-Chat: Edit Key Bindings" +#~ msgstr "Keisti klavišų susiejimus..." + +#, fuzzy +#~ msgid "Chan" +#~ msgstr "X-Chat" + +#, fuzzy +#~ msgid "(%s) Channel settings" +#~ msgstr "Skydelio nuostatos" + +#, fuzzy +#~ msgid "Channel Options" +#~ msgstr "Kanalų langai" + +#, fuzzy +#~ msgid "User: %s" +#~ msgstr "Vartotojų sąrašas" + +#, fuzzy +#~ msgid "Settings saved." +#~ msgstr "Nuostatos" + +#, fuzzy +#~ msgid "New Shell Tab..." +#~ msgstr "Nauja shell'o kortelė" + +#, fuzzy +#~ msgid "_IRC" +#~ msgstr "IRC" + +#~ msgid "Invisible" +#~ msgstr "Nematomas" + +#~ msgid "Receive Wallops" +#~ msgstr "Gauti Wallops'us" + +#~ msgid "Receive Server Notices" +#~ msgstr "Gauti serverio pastabas" + +#, fuzzy +#~ msgid "Auto Rejoin when Kicked" +#~ msgstr "Savaime grįžti, kai išspirtas" + +#~ msgid "Never-give-up ReConnect" +#~ msgstr "Niekada nenutraukti bandymo prisijungti" + +#, fuzzy +#~ msgid "Auto Accept Direct Chat" +#~ msgstr "Savaime priimti DCC Chat" + +#, fuzzy +#~ msgid "Lists" +#~ msgstr "Kanalų sąrašo langas..." + +#, fuzzy +#~ msgid "Key Bindings..." +#~ msgstr "Keisti klavišų susiejimus..." + +#~ msgid "Reload Settings" +#~ msgstr "Vėl įkelti nuostatas" + +#~ msgid "Save Settings now" +#~ msgstr "Išsaugoti nuostatas dabar" + +#~ msgid "Save Settings on exit" +#~ msgstr "Išsaugoti nuostatas išeinant" + +#, fuzzy +#~ msgid "File Receive..." +#~ msgstr "DCC gavimo langas..." + +#, fuzzy +#~ msgid "File Send..." +#~ msgstr "DCC siuntimo langas..." + +#, fuzzy +#~ msgid "Server" +#~ msgstr "Proxy serveris" + +#, fuzzy +#~ msgid "Settings for %s" +#~ msgstr "Nuostatos" + +#, fuzzy +#~ msgid "_Remove \"%s\"" +#~ msgstr "Serverių sąrašas..." + +#, fuzzy +#~ msgid "_Add new server" +#~ msgstr "Nauja serverio kortelė..." + +#, fuzzy +#~ msgid "Move \"%s\" _up" +#~ msgstr "Serverių sąrašas..." + +#, fuzzy +#~ msgid "Global User Info" +#~ msgstr "Vartotojo meniu" + +#, fuzzy +#~ msgid "Nick Names:" +#~ msgstr "Rodyti niką" + +#, fuzzy +#~ msgid "Connect in a _new tab" +#~ msgstr "Pranešimas:" + +#, fuzzy +#~ msgid "Servers" +#~ msgstr "Proxy serveris" + +#, fuzzy +#~ msgid "Nick Name:" +#~ msgstr "Rodyti niką" + +#, fuzzy +#~ msgid "Use secure SSL" +#~ msgstr "Vartotojų sąrašas" + +#, fuzzy +#~ msgid "Tint transparency" +#~ msgstr "Skaidrumas" + +#, fuzzy +#~ msgid "Strip mIRC color" +#~ msgstr "Pašalinti MIRC spalvas" + +#, fuzzy +#~ msgid "Tint green:" +#~ msgstr "Testuoti nuostatas" + +#, fuzzy +#~ msgid "Double-click command:" +#~ msgstr "Dvigubo paspaudimo komanda:" + +#, fuzzy +#~ msgid "Userlist buttons enabled" +#~ msgstr "Vartotojų sąrašo mygtukai..." + +#, fuzzy +#~ msgid "Only highlight tabs on channel messages" +#~ msgstr "Paryškinti kanalų korteles tik žinučių ir veiksmų metu" + +#, fuzzy +#~ msgid "Pop new tabs to front" +#~ msgstr "Naujos kortelės į priekį" + +#, fuzzy +#~ msgid "Auto open DCC send list" +#~ msgstr "Savaime atidaryti DCC siuntimo langą" + +#, fuzzy +#~ msgid "Auto open DCC chat list" +#~ msgstr "Savaime atidaryti DCC Chat langą" + +#, fuzzy +#~ msgid "Auto open DCC receive list" +#~ msgstr "Savaime atidaryti DCC gavimo langą" + +#, fuzzy +#~ msgid "Default part message:" +#~ msgstr "Išėjimo žinutė:" + +#, fuzzy +#~ msgid "Default away message:" +#~ msgstr "Skelbti nebūties žinutės" + +#, fuzzy +#~ msgid "Beep on channel messages" +#~ msgstr "Pyptelėti, gavus asmeninę žinutę" + +#, fuzzy +#~ msgid "Proxy port:" +#~ msgstr "Proxy tipas:" + +#, fuzzy +#~ msgid "Proxy type:" +#~ msgstr "Proxy tipas:" + +#, fuzzy +#~ msgid "Mark back:" +#~ msgstr "Skaidrus fonas" + +#, fuzzy +#~ msgid "Select a file to save to" +#~ msgstr "Katalogas, į kurį saugoti:" + +#, fuzzy +#~ msgid "Load Plugin..." +#~ msgstr "Įkelti pluginą (*.so)..." + +#, fuzzy +#~ msgid "Load plugin..." +#~ msgstr "Įkelti pluginą (*.so)..." + +#~ msgid "Auto ReJoin on Kick" +#~ msgstr "Vėl ateiti, jei išspyrė" + +#, fuzzy +#~ msgid "X-Chat Homepage..." +#~ msgstr "X-Chat tinklapis..." + +#, fuzzy +#~ msgid "Online Docs..." +#~ msgstr "Dokumentacija..." + +#, fuzzy +#~ msgid "About X-Chat..." +#~ msgstr "Apie X-Chat..." + +#~ msgid "Choose File" +#~ msgstr "Pasirink bylą" + +#, fuzzy +#~ msgid "Server settings" +#~ msgstr "Nuostatos" + +#, fuzzy +#~ msgid "Ban List Window..." +#~ msgstr "Kanalų sąrašo langas..." + +#, fuzzy +#~ msgid "ASCII Window..." +#~ msgstr "Ignoravimo langas..." + +#, fuzzy +#~ msgid "F_lush Buffer" +#~ msgstr "Išvalyti buferį" + +#, fuzzy +#~ msgid "Save Buffer..." +#~ msgstr "Iš_saugoti buferį..." + +#~ msgid "User Modes" +#~ msgstr "Vartotojo būsenos" + +#, fuzzy +#~ msgid "Plugins" +#~ msgstr "Priedai..." + +#~ msgid "Edit User Menu" +#~ msgstr "Taisyti vartotojo meniu" + +#~ msgid "Left" +#~ msgstr "Kairėje" + +#~ msgid "Right" +#~ msgstr "Dešinėje" + +#, fuzzy +#~ msgid "NewServer" +#~ msgstr "Proxy serveris" + +#, fuzzy +#~ msgid "Open extra tab for each server" +#~ msgstr "Naudoti atskirą kortelę/langą serverio žinutėms" + +#, fuzzy +#~ msgid "Server List 2..." +#~ msgstr "Serverių sąrašas..." + +#, fuzzy +#~ msgid "UNLOADALL, Unloads all perl scripts" +#~ msgstr "Įkelti Python skriptą..." + +#~ msgid "Scripts & Plugins" +#~ msgstr "Skriptai ir pluginai" + +#, fuzzy +#~ msgid "PLOAD loads a python script" +#~ msgstr "Įkelti Python skriptą..." + +#~ msgid "Unload All Scripts" +#~ msgstr "Išmesti visus skriptus" + +#~ msgid "Perl List" +#~ msgstr "Perl sąrašas" + +#, fuzzy +#~ msgid "Load Python Script..." +#~ msgstr "Įkelti Python skriptą..." + +#~ msgid "Python List" +#~ msgstr "Python sąrašas" + +#, fuzzy +#~ msgid "gdk_font_load failed" +#~ msgstr "Naudoti gdk_fontset_load" + +#~ msgid "Setup.." +#~ msgstr "Nuostatos..." + +#, fuzzy +#~ msgid "X-Chat: Palette" +#~ msgstr "X-Chat: Nuostatos" + +#, fuzzy +#~ msgid "Background" +#~ msgstr "XPM fonui:" + +#, fuzzy +#~ msgid "Mark Background" +#~ msgstr "Skaidrus fonas" + +#, fuzzy +#~ msgid "No Server" +#~ msgstr "Proxy serveris" + +#, fuzzy +#~ msgid "Is Tab" +#~ msgstr "Kortelės" + +#, fuzzy +#~ msgid "X-Chat: Setup" +#~ msgstr "X-Chat: Nuostatos" + +#, fuzzy +#~ msgid "Failed to load translation table." +#~ msgstr "Naudoti ircII stiliaus vertimo bylą." + +#~ msgid "Auto Indent" +#~ msgstr "Savaime perskirti" + +#~ msgid "Auto adjust the separator bar position as needed." +#~ msgstr "Savaime pritaikyti skyriklio juostos vietą kai reikia." + +#~ msgid "Draw Separator Bar" +#~ msgstr "Piešti skyriklio juostą" + +#~ msgid "Make the separator an actual visible line." +#~ msgstr "Padaryti skyriklį tikrai matoma linija." + +#~ msgid "Word Wrap" +#~ msgstr "Žodžių laužymas" + +#~ msgid "Don't split words from one line to the next" +#~ msgstr "Nelaužyti žodžių iš vienos eilutės į kitą" + +#~ msgid "Make the text box seem see-through" +#~ msgstr "Padaryti, kad teksto laukas atrodytų permatomas" + +#, fuzzy +#~ msgid "Use a font set" +#~ msgstr "Naudoti gdk_fontset_load" + +#~ msgid "Change in realtime" +#~ msgstr "Keisti realiu laiku" + +#~ msgid "Startup and Shutdown" +#~ msgstr "Pradžia ir Išėjimas" + +#~ msgid "No Server List On Startup" +#~ msgstr "Nerodyti serverių sąrašo pradžioje" + +#~ msgid "Don't display the server list on X-Chat startup" +#~ msgstr "Nerodyti serverių sąrašo, tik paleidus X-Chat" + +#~ msgid "Auto Save URL list" +#~ msgstr "Savaime išsaugoti URL sąrašą" + +#~ msgid "Auto save your URL list when exiting from X-Chat" +#~ msgstr "Savaime išsaugoti URL sąrašą išeinant iš X-Chat" + +#~ msgid "Give the User List style" +#~ msgstr "Suteikti varotojų sarašui stilių" + +#~ msgid "Complete nicknames when a partial one is entered" +#~ msgstr "Pabaigti nikus, jei įvesta niko dalis" + +#~ msgid "Old-style Nickname Completion" +#~ msgstr "Seno stiliaus niko pabaigimas" + +#~ msgid "Nickname completion is old-style (instead of GNU-style)" +#~ msgstr "Seno stiliaus niko pabaigimas (vietoj GNU stiliaus)" + +#~ msgid "Give the Input Box style" +#~ msgstr "Suteikti stilių įvesties laukui" + +#~ msgid "Input box gets same style as main text area" +#~ msgstr "" +#~ "Įvesties laukas įgauna tokį pat stilių kaip pagrindinis testo laukas" + +#~ msgid "Nickname Completion Character:" +#~ msgstr "Niko užbaigimo simbolis:" + +#~ msgid "Character to append to completed nicknames" +#~ msgstr "Simbolis, priduriamas prie pabaigtų nikų" + +#~ msgid "Output Box" +#~ msgstr "Įšvesties laukas" + +#~ msgid "Strip MIRC color codes from text before displaying" +#~ msgstr "Pašalinti MIRC spalvų kodus iš teksto prieš parodant" + +#~ msgid "Output nicknames in different colors" +#~ msgstr "Išvesti nikus skirtingomis spalvomis" + +#~ msgid "Prefix all text with the current time stamp" +#~ msgstr "Prieš bet kokį tekstą įrašyti jo laiką" + +#~ msgid "Filter out BEEPs" +#~ msgstr "Išfiltruoti BEEP (skambučius)" + +#~ msgid "Remove ^G BEEP codes from text before displaying" +#~ msgstr "Pašalinti ^G BEEP kodus iš teksto prieš parodant" + +#~ msgid "Buffer Settings" +#~ msgstr "Buferio nuostatos" + +#~ msgid "Text Buffer Size:" +#~ msgstr "Teksto buferio dydis:" + +#~ msgid "lines (0=Unlimited)." +#~ msgstr "eilučių (0=neribotas)." + +#~ msgid "Buttons" +#~ msgstr "Mygtukai" + +#~ msgid "Show the TNSIPMLK buttons" +#~ msgstr "Rodyti TNSIPMLK mygtukus" + +#~ msgid "User List Buttons" +#~ msgstr "Vartotojų sąrašo mygtukai" + +#~ msgid "Show the buttons below the user list" +#~ msgstr "Rodyti mygtukus po vartotojų sąrašu" + +#~ msgid "Tabs Located at:" +#~ msgstr "Kortelės yra:" + +#~ msgid "Use tabs for channels instead of separate windows" +#~ msgstr "Kanalams naudoti korteles, o ne atskirus langus" + +#~ msgid "Limited Tab Highlighting" +#~ msgstr "Ribotas kortelių paryškinimas" + +#~ msgid "Bring new query/channel tabs to front" +#~ msgstr "Naujai atsiradusius kanalų/dialogų langus rodyti priekyje" + +#~ msgid "Use tabs for /query instead of separate windows" +#~ msgstr "Asmeniniams pokalbiams naudoti korteles, o ne atskirus langus" + +#~ msgid "Window Position" +#~ msgstr "Lango vieta" + +#~ msgid "" +#~ "If Left and Top are set to zero, X-Chat will use\n" +#~ "your window manager defaults." +#~ msgstr "" +#~ "Jei Viršus ir apačia yra nuliai, X-Chat naudos\n" +#~ "langų tvarkyklės nuostatas." + +#~ msgid "Left:" +#~ msgstr "Kairė:" + +#~ msgid "Window Size" +#~ msgstr "Lango dydis" + +#~ msgid "Width:" +#~ msgstr "Plotis:" + +#~ msgid "Height:" +#~ msgstr "Aukštis:" + +#~ msgid "Show Session Tree View" +#~ msgstr "Rodyti sesijos medžio vaizdą" + +#~ msgid "Panel Applet" +#~ msgstr "Skydelio įtaisas" + +#~ msgid "Layout For a Vertical Panel" +#~ msgstr "Išdėstyti stačiam skydeliui" + +#~ msgid "Layout the X-Chat panel applet for a vertical panel" +#~ msgstr "Išdėstyti X-Chat skydelio įtaisą stačiam skydeliui" + +#~ msgid "Raw Mode Display" +#~ msgstr "Grynas mode rodymas" + +#~ msgid "Display raw mode changes instead of interpretations" +#~ msgstr "Rodyti grynus mode pakeitimus vietoj interpretacijų" + +#~ msgid "Beep when a private message for you is received" +#~ msgstr "Pyptelėti, kai ateina tau skirta asmeninė žinutė" + +#, fuzzy +#~ msgid "Beep when a channel message is received" +#~ msgstr "Pyptelėti, kai ateina tau skirta asmeninė žinutė" + +#~ msgid "Send /who #chan on join." +#~ msgstr "Siųsti /who #kanalas ateinant" + +#~ msgid "Find user information when joining a channel." +#~ msgstr "Sužinoti vartotojų informaciją, atėjus į kanalą." + +#~ msgid "" +#~ "These can be a filename relative to ~/.xchat/ to be\n" +#~ "used as a list of random quit or part reasons." +#~ msgstr "" +#~ "Tai gali būti bylų vardai, nurodyti santykinai ~/.xchat/,\n" +#~ "naudojami parinkti atsitiktinėms pabaigos ar išėjimo priežastims." + +#~ msgid "seconds." +#~ msgstr "sekundžių." + +#~ msgid "" +#~ "Most people should leave this blank, it's only\n" +#~ "usefull for machines with multiple addresses." +#~ msgstr "" +#~ "Dauguma žmonių šitai turėtų palikti tuščią,\n" +#~ "tai naudinga tik mašinoms su keletu adresų." + +#, fuzzy +#~ msgid "Public IP Address" +#~ msgstr "IP adresas" + +#~ msgid "Get my IP from Server (for use in DCC Send only)" +#~ msgstr "Gauti mano IP iš serverio (naudojama tik DCC siuntimui)" + +#~ msgid "For people using a 10.* or 192.168.* IP number." +#~ msgstr "Žmonėms, naudojantiems 10.* ar 192.168.* IP numerius." + +#~ msgid "Proxy Server Hostname:" +#~ msgstr "Proxy serverio hosto vardas:" + +#~ msgid "Only show away messages the first time they're seen" +#~ msgstr "Rodyti „nėra“ žinutę tik pirmą kartą." + +#~ msgid "Your away settings" +#~ msgstr "Tavo nebūties nuostatos" + +#, fuzzy +#~ msgid "Apply a timestamp to disk logs" +#~ msgstr "Loguose visada rašyti, kada vyksta veiksmas" + +#~ msgid "Generic" +#~ msgstr "Bendra" + +#~ msgid "User List Notify Highlighting" +#~ msgstr "Vartotojų sąrašo notify paryškinimas" + +#, fuzzy +#~ msgid "Notified User Color:" +#~ msgstr "Naujesnių spalva:" + +#, fuzzy +#~ msgid "Notification Timeouts" +#~ msgstr "Pranešimas:" + +#~ msgid "seconds (0=Disable)." +#~ msgstr "sekundžių (0=uždrausti)." + +#~ msgid "Enable Character Translation" +#~ msgstr "Leisti simbolių vertimus" + +#~ msgid "Translation File:" +#~ msgstr "Vertimo byla:" + +#~ msgid "Use a ircII style translation file." +#~ msgstr "Naudoti ircII stiliaus vertimo bylą." + +#~ msgid "Automatically open DCC Send Window" +#~ msgstr "Savaime atidaryti DCC siuntimo langą" + +#~ msgid "Automatically open DCC Recv Window" +#~ msgstr "Savaime atidaryti DCC gavimo langą" + +#~ msgid "Resume on Auto Accept" +#~ msgstr "Pratęsti automatiškai priimant" + +#~ msgid "When Auto-Accepting DCC, try to resume." +#~ msgstr "Kai savaime priimami DCC gavimai, pratęsti esančias bylas." + +#~ msgid "DCC Offers Timeout:" +#~ msgstr "DCC pasiūlymų laiko riba:" + +#~ msgid "File Permissions:" +#~ msgstr "Bylų permisijos:" + +#~ msgid "(octal)" +#~ msgstr "(aštuonetainiais)" + +#~ msgid "Directory to save to:" +#~ msgstr "Katalogas, į kurį saugoti:" + +#~ msgid "Save file with Nickname" +#~ msgstr "Saugoti bylą su niku" + +#~ msgid "DCC Send Options" +#~ msgstr "DCC siuntimo parinktys" + +#~ msgid "Fast DCC Send" +#~ msgstr "Greitas DCC siuntimas" + +#~ msgid "Don't wait for ACKs to send more data" +#~ msgstr "Nelaukti ACK'ų, kad siųstume naujus duomenis" + +#~ msgid "(0=Disabled)" +#~ msgstr "(0=Uždraustas)" + +#~ msgid "Send Block Size:" +#~ msgstr "Siunčiamų blokų dydis:" + +#~ msgid "(1024=Normal)" +#~ msgstr "(1024=Normalus)" + +#~ msgid "Built-in Replies" +#~ msgstr "Įtaisyti atsakymai" + +#~ msgid "Do not reply to CTCP version" +#~ msgstr "Neatsakinėti į CTCP version" + +#~ msgid "Sound Dir:" +#~ msgstr "Garsų katalogas:" + +#~ msgid "Play Command:" +#~ msgstr "Grojimo komanda:" + +#~ msgid "Interface Settings" +#~ msgstr "Sąsajos nuostatos" + +#~ msgid "IRC Input/Output Settings" +#~ msgstr "IRC įvesties/išvesties nuostatos" + +#~ msgid "IRC Input/Output" +#~ msgstr "IRC įvestis/išvestis" + +#~ msgid "Window Layout Settings" +#~ msgstr "Langų išdėstymo nuostatos" + +#~ msgid "Window Layout" +#~ msgstr "Langų išdėstymas" + +#~ msgid "Main Window Settings" +#~ msgstr "Pagrindinio lango nuostatos" + +#~ msgid "Channel Window Settings" +#~ msgstr "Kanalų langų nuostatos" + +#~ msgid "Dialog Window Settings" +#~ msgstr "Dialogų langų nuostatos" + +#~ msgid "Panel" +#~ msgstr "Skydelis" + +#~ msgid "IRC Settings" +#~ msgstr "IRC nustatos" + +#~ msgid "IP Address Settings" +#~ msgstr "IP adreso parinktis" + +#~ msgid "IP Address" +#~ msgstr "IP adresas" + +#~ msgid "Logging Settings" +#~ msgstr "Loginimo nuostatos" + +#~ msgid "Character Set (Translation Tables)" +#~ msgstr "Simbolių aibė (vertimo lentelės)" + +#~ msgid "CTCP Settings" +#~ msgstr "CTCP nuostatos" + +#~ msgid "DCC Settings" +#~ msgstr "DCC Nuostatos" + +#~ msgid "Input Box always in focus" +#~ msgstr "Įvesties laukas visada fokusuotas" + +#, fuzzy +#~ msgid "Userlist icons" +#~ msgstr "Vartotojų sąrašo mygtukai..." + +#~ msgid "Show nickname" +#~ msgstr "Rodyti niką" + +#, fuzzy +#~ msgid " Apply " +#~ msgstr "Pritaikyti" + +#, fuzzy +#~ msgid "CP" +#~ msgstr "CTCP" + +#, fuzzy +#~ msgid "Hide/Show Userlist" +#~ msgstr "Rodyti vartotojo hostą" + +#~ msgid "Perl Script.." +#~ msgstr "Perl skriptas..." + +#~ msgid "Python Script.." +#~ msgstr "Python skriptas..." + +#~ msgid "All Perl Scripts" +#~ msgstr "Visus Perl skriptus" + +#~ msgid "All Python Scripts" +#~ msgstr "Visus Python skriptus" + +#~ msgid "All Plugins" +#~ msgstr "Visus priedus" + +#~ msgid "Kill" +#~ msgstr "Nužudyti" + +#~ msgid "User _Modes" +#~ msgstr "_Būsenos" + +#~ msgid "S_cripts & Plugins" +#~ msgstr "S_kriptai ir pluginai" + +#~ msgid "Use_r Menu" +#~ msgstr "Va_rtotojo meniu" + +#~ msgid "Show invites in active window" +#~ msgstr "Rodyti pakvietimus aktyviame lange" + +#~ msgid "Show notifies in active window" +#~ msgstr "Rodyti notify aktyviame lange" + +#~ msgid "Perform a periodic mail check." +#~ msgstr "Periodiškai aptikrinti paštą." + +#~ msgid "Unload All Plugins" +#~ msgstr "Įšmesti visus pluginus" + +#~ msgid "Ok" +#~ msgstr "Gerai" + +#~ msgid "Background XPM:" +#~ msgstr "XPM fonui:" + +#, fuzzy +#~ msgid "Dialog Buttons" +#~ msgstr "Mygtukai" + +#, fuzzy +#~ msgid "Show the buttons above the text area" +#~ msgstr "Rodyti mygtukus po vartotojų sąrašu" + +#, fuzzy +#~ msgid "Server Sock Name\n" +#~ msgstr "Proxy serverio hosto vardas:" + +#~ msgid "Help.." +#~ msgstr "Pagalba..." + +#, fuzzy +#~ msgid "Close Channel" +#~ msgstr "Nauja kanalo kortelė..." + +#, fuzzy +#~ msgid "Panelize" +#~ msgstr "Skydelis" + +#, fuzzy +#~ msgid "InterScan" +#~ msgstr "Sąsaja" + +#~ msgid "Enable double buffer" +#~ msgstr "Leisti dvigubą buferį" diff --git a/etc/wyatt8740/po/mk.po b/etc/wyatt8740/po/mk.po new file mode 100644 index 0000000..0bcc09b --- /dev/null +++ b/etc/wyatt8740/po/mk.po @@ -0,0 +1,5659 @@ +# translation of xchat-2.8.4.mk.po to Macedonian +# Copyright (C) 2004, 2007 Free Software Foundation, Inc. +# This file is put in the public domain. +# +# Arangel Angov <ufo@linux.net.mk>, 2003, 2004. +# Jovan Naumovski <jovan@lugola.net>, 2007. +msgid "" +msgstr "" +"Project-Id-Version: xchat-2.8.4\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2007-06-29 16:40+0200\n" +"Last-Translator: Arangel Angov <ufo@linux.net.mk>\n" +"Language-Team: Macedonian <ufo@linux.net.mk>\n" +"Language: mk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Не можам да создадам ~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Зафатен сум" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Си одам" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* Користењето на IRC како root е глупаво! Подобро е\n" +" да си создадете корисничка сметка и да ја користите неа.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Чекам" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Активно" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Неуспешно" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Завршив" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Врзи се" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Откажано" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "Не можам да пристапам на %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Грешка" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s ви нуди „%s“. Дали сакате да прифатите?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Нема активни DCC\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "ДА " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "НЕ " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Вие сте CTCP поплавени од %s, игнорирам %s\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "Вие сте MSG поплавени од %s, го поставувам gui_auto_open_dialog OFF.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s присутни\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s офлајн\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Не сте присутни на некој канал. Пробајте со /join #<channel>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Не сте поврзани. Пробајте со /server <host> [<порта>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Веќе сте означени како отсутни: %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "Веќе сте означени како присутни.\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "Ми треба /bin/sh за да извршам!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Достапни команди:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Команди дефинирани од корисникот:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Команди дефинирани од приклучокот:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Напишете /HELP <команда> за повеќе информации, или /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Непознатиот аргумент „%s“ е игнориран." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "Не најдов таков додаток.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Тој додаток одбива да се исклучи. \n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <име> <акција>, додава копче под корисничката листа" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <командата>, испраќа команда до сите канали на кои што сте" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <командата>, испраќа команда до сите канали на кои што сте" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <командата>, испраќа команда на сите сервери на кои што сте" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<причина>], ве обележува како отсутен" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "BACK, ве обележува како присутен (не отсутен)" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <маска> [<тип>], ги банира сите кои што одговарат на маската на " +"сегашниот канал. Ако се веќе на каналот ова не ги исфрла (треба оператор)" + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <променлива> [<вредност>]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "" +"CLEAR [ALL|HISTORY], Го чисти прозорецот од текст или историја на команди" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, Го затвора прозорецот/јазичето" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" +"COUNTRY [-s] <code|wildcard>, ја наоѓа кратенката на земјата, пр: au = " +"австралија" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <прекар> <порака>, испрати ја CTCP пораката до прекарот, вообичаени " +"пораки се VERSION и USERINFO" + +#: src/common/outbound.c:3516 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "CYCLE [<channel>], го напушта тековниот канал и се приклучува повторно" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <прекар> - прифатете понудена датотека\n" +"DCC SEND [-maxcps=#] <прекар> [датотека] - испратете датотека некому\n" +"DCC PSEND [-maxcps=#] <прекар> [датотека] - испратете датотека во пасивен " +"режим\n" +"DCC LIST - покажи DCC листа\n" +"DCC CHAT <прекар> - понуди DCC CHAT некому\n" +"DCC PCHAT <nick> - понуди DCC CHAT со користење на " +"пасивен режим\n" +"DCC CLOSE <тип> <прекар> <датотека> пример:\n" +" /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <прекар>, отстранува операторски статус од прекарот на тековниот канал " +"(потребно е да имате операторски статус)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <име>, брише копче под корисничката листа" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <прекар>, отстранува операторски статус од прекарот на тековниот канал " +"(потребно е да имате операторски статус)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <прекар>, отстранува глас од прекарот на тековниот канал (потребно е " +"да имате операторски статус)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, Ја прекинува врската со серверот" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <прекар|host|ip>, Пронаоѓа IP број на корисникот" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <text>, Печати текст локално" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <command>, ја извршува командата. Ако користите -o тогаш испраќате " +"на тековниот канал" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, го испраќа процесот SIGCONT" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], убива извршена програма во тековната сесија. Ако -9 е даден " +"тогаш процесот е SIGKILL'ed" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, го испраќа процесот SIGSTOP" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, испраќа податоци до stdin процесите" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, го испушта тековното чекање на серверот" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <host> [<port>],proxy-јата преку host, стандардна порта 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <nick> <password>, Уништува зафатен неупотреблив прекар" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" +"HOP <прекар> дава chanhalf-op статус на прекарот (потребен е операторски " +"статус)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <password>, ве идентификува кај nickserv" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <mask> <types..> <options..>\n" +" маска - host маска за игнорирање, пр: *!*@*.mt.net.mk\n" +" типови - типови на податоци за игнорирање, еден или сите од:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" опции - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <прекар> [<канал>], кани некого на каналот, стандардно тоа е " +"тековниот канал (потребен е операторски статус)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <channel>, се приклучува на каналот" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <прекар>, го исфрла прекарот од тековниот канал (потребен е операторски " +"статус)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <прекар>, го банира па потоа го исфрла прекарот од тековниот канал " +"(потребен е операторски статус)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, форсира проверка за лаг" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <стринг>, бара стринг во баферот" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <датотека>, вчитува додаток или скрипта" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, одзема опер. статус на сите оператори во тековниот канал (потребен е " +"операторски статус)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, одзема опер. статус на сите оператори во тековниот канал (потребен е " +"операторски статус)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <акција>, ја испраќа акцијата на тековниот канал (акциите се испишани во " +"трето лице, на пр. /me скокна)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, ги исфрла сите од каналот (потребен е операторски статус)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, дава опер. статус на сите корисници во тековниот канал (потребен е " +"операторски статус)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <прекар> <порака>, испраќа приватна порака" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, ги листа прекарите од тековниот канал" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <прекар> <порака>, испраќа CTCP забелешка" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <hostname> [<port>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <прекар>, го поставува прекарот" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <прекар/канал> <порака>, испраќа забелешка. Забелешките се тип на " +"пораки на кои што треба да реагирате" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n network1[,network2,...]] [<nick>], ја покажува вашата листа за " +"известување или додава некој на неа" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" +"OP <прекар>, дава опер. статус на прекарот (потребен е операторски статус)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<канал>] [<причина>], го напушта тековниот канал" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <прекар | канал>, CTCP го пингува прекарот или каналот" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "" +"QUERY [-nofocus] <nick>, отвора нов прозорец за приватен разговор со некого" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<причина>], се одврзува од тековниот сервер" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <текст>, праќа текст до серверот во суров формат" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], може да се стартува само " +"со /RECONNECT за повторно врзување на истиот сервер или /RECONNECT ALL за " +"врзување на сите отворени сервери" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<host>] [<port>] [<password>], може да се стартува само со /" +"RECONNECT за повторно врзување на истиот сервер или /RECONNECT ALL за " +"врзување на сите отворени сервери" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <текст>, испраќа податоци до xchat, како да се испратени од irc сервер" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <текст>, го испраќа текстот до објектот во тековниот прозорец" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <прекар> [<датотека>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <host> <port> <channel>, се врзува и се приклучува на канал" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <host> <port> <channel>, се врзува и се приклучува на канал" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <host> [<port>] [<password>], се врзува на сервер, " +"стандардната порта за нормални врски е 6667, а 9999 е за ssl врски" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <host> [<port>] [<password>], се врзува на сервер, стандардната порта " +"е 6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <променлива> [<вредност>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<позиција>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "TOPIC [<наслов>], поставува наслов на каналот" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Во фиоката трепка помеѓу двете икони.\n" +"TRAY -f <filename> Постави ја иконата во фоката на некоја " +"фиксна икона.\n" +"TRAY -i <number> Иконата светка со внатрешна икона.\n" +"TRAY -t <text> Постави го балончето со совет на " +"фиоката.\n" +"TRAY -b <title> <text> Постави го балончето со совет на фиоката." + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <маска> [<маска>...], одбанира дадена маска." + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <маска> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <име> исклучува додаток или скрипта" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, отвора URL во вашиот прелистувач" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <nick1> <nick2> итн, означува прекар(и) во листата на " +"присутни на каналот" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <прекар>, дава глас некому (потребен е операторски статус)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <порака>, ја пишува пораката на сите канали" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <порака>, ја испраќа пораката на сите оператори на тековниот канал" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Користење: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"Не постои помош за таа команда.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Не постои таква команда.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Лош аргумент за корисничката команда.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Премногу рекурзивни кориснички команди, прекинувам." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Непозната команда. Пробај /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "Нема xchat_plugin_init symbol; сигурно ли е ова xchat додаток?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Дали сте сигурни дека ова е SSL способена порта и сервер?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Не можам да го резолвирам hostname %s\n" +"Проверете ги вашите IP подесувања!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Proxy traversal откажа.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Ќе пробам на следниот сервер за %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Предупредување: \"%s\" дадениот карактер е непознат. Нема да биде применет " +"разговор за мрежата %s." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 е додаден/а во вашата листа за известување." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Бан листа:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tНе можете да влезете на%C26 %B$1 %O(Банирани сте)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 е познат како $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 sets ban on $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tChannel $1 создаден на $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O одзема полу-операторски статус на%C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O одзема операторски статус на%C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O отстранува глас од%C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 поставува exempt на $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O дава полу-операторски статус на%C26 $2" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 поставува само со покани $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UКанал Корисници Наслов" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 поставува режим $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Канал $1 режими: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O дава операторски статус на%C26 $2" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 отстранува exempt од $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 отстранува само со покани $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 го отстранува клучниот збор за каналот" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 го отстранува ограничувањето за корисници" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 го поставува клучниот збор за каналот: $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 поставува ограничување на каналот на $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 го отстранува банот на $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O дава глас на%C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Се врзав. Сега се најавувам..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22Се врзувам на $1 ($2) порта $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21Врската е неуспешна. Грешка: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tДоби CTCP $1 од $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tДоби CTCP $1 од $2 (до $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tДоби CTCP звук $1 од1 $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tДоби CTCP $1 од $2 (до $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tDCC CHAT до %C26$1%O прекина." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "" +"%C22*%O$tвоспоставена е DCC CHAT DCC CHAT врска со %C26$1 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tDCC CHAT со %C26$1%O се загуби ($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tДоби DCC CHAT понуда од $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tНудам DCC CHAT на $1" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tВеќе нудам CHAT на $1" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$tDCC $1 обидот за врзување со%C26 $2%O е неуспешен (err=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tДоби '$1%O' од $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "" +"%C24,18 Тип До/Од Статус Големина Позиција Датотека " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O." +"%010%C22*%O$tContents of packet: $2" +msgstr "" +"%C22*%O$tдоби погрешно барање за DCC од %C26$1%O.%010%C22*%O$tСодржина на " +"пакетот: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tНудам%C26 $1%O на%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tНе постои таква DCC понуда." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV%C26 $2%O до%C26 $1%O прекина" + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC RECV%C26 $1%O од%C26 $3%O заврши %C30[%C26$4%O cps%C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC RECV врската е воспоставена со%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV%C26 $1%O од%C26 $3%O не успеа ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV: Не можам да ја отворам $1 за запишување ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "" +"%C22*%O$tThe file%C26 $1%C веќе постои, пробај да ја зачуваш како%C26 $2%O." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Ohas побара продолжување%C26 $2 %Cод%C26 $3%C." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC SEND%C26 $2%O до%C26 $1%O прекина." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC SEND%C26 $1%O до%C26 $2%O заврши %C30[%C26$3%O cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tвоспоставена е DCC SEND врска до%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND%C26 $1%O до%C26 $2%O не успеа. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Oпонуди%C26 $2 %O(%C26$3 %Obytes)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oдо%C26 $3 %Cзапре - прекинувам." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oдо%C26 $3 %Oистече - прекинувам." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 е избришан од листата со известувања." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tИсклучен ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tЈа најдов вашата IP: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O е додаден на листата за игнорирање." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "Игнорирањето за %C26$1%O e променето." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "" +"%C24,18 Маска на host-от PRIV NOTI CHAN CTCP DCC INVI UNIG" + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%Oе отстранет од листата за игнорирање." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " Листата за игнорирање е празна." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "" +"%C22*%O$tНе можам да се приклучам на%C26 %B$1 %O(Каналот е само со покани)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tПоканет/а си на%C26 $1%O од%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) се приклучи на $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$tНе можам да се приклучам на%C26 %B$1 %O(бара клучен збор)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 го исфрли $2 од $3 ($4%O)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$tТебе те уби $1 ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD прескокнато." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 веќе е искористен. Пробувам пак со $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "%C22*%O$tПрекарот веќе се користи. Користи /NICK да пробаш друг." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tне постои такво DCC." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tМоментално нема процеси што работат" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$Листата за известување е празна." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Листа за известување " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 корисници во листата за известување." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tИзвестување: $1 е offline ($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$ttИзвестување: $1 е присутен ($3)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) го напушти $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) го напушти $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tПинг одговор од $1 : $2 секунди" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tНема пинг одговори веќе $1 секунди, ја прекинувам врската." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tПроцесот веќе работи" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 се исклучи (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 поставува режими%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tБарам IP број за%C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22Се поврзав." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22Барам $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tСтопиран е претходниот обид за поврзување (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29Насловот на $1%C %C29е: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 го промени насловот во: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29Насловот за $1%C %C29е поставен од $2%C %C29на $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tНепознат host. Можеби го згрешивте во пишувањето?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "" +"%C22*%O$tНе можам да се приклучам%C26 %B$1 %O(Ограничувањето за корисници е " +"достигнато)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Корисници на $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cе отсутен %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OКрај на WHOIS листата." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O не реагира%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O %C26 $2%O, најава:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" +"%C22*%O$t%C28[%O$1%C28] %Oвистински корисник@host%C27 $2%O, вистинска IP%C27 " +"$3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Сега зборувам на $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tТи си исфрлен од $2 од $3 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tГо напушти каналот $3" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tГо напушти каналот $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tГо поканивте%C26 $1%O to%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tСега си познат како $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "Вчитав лог од" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** ЗАВРШУВАМ СНИМАЊЕ НА %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** ЗАПОЧНУВАМ СНИМАЊЕ НА %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Не можам да ги отворам датотеките со записи за снимање. Провери\n" +" ги дозволите на %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Лева порака" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Десна порака" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "Прекарот на личноста што се приклучува" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "Каналот на кој што се приклучува" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "Host на личноста" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Прекар" + +#: src/common/text.c:973 +msgid "The action" +msgstr "Акцијата" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Режим за знак" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Идентификуван текст" + +#: src/common/text.c:980 +msgid "The text" +msgstr "Текстот" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Пораката" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Стар прекар" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Нов прекар" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Прекар на личноста која го променила насловот" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Наслов" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Канал" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "Прекарот на исфрлувачот" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "Личноста што е исфрлена" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "Каналот" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "Причината" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "Прекарот на личноста што си оди" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "Времето" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "Создавачот" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Прекар" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Причината" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Host" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "Од кого е" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "Времето во x.x формат (види подолу)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "Каналот до кој што оди" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "Звукот" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "Прекарот на личноста" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "CTCP настанот" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "Прекарот на личноста кој го поставила клучот" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "Клучот" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "Името на личноста која што го поставила ограничувањето" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "Ограничувањето" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "Името на личноста која дала op" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "Прекарот на личноста која што добила op" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "Прекарот на личноста која добила halfop" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "Прекарот на личноста која направила halfop" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "Прекарот на личноста која што дала глас" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "Прекарот на личноста која што добила глас" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "Прекарот на личноста која што банирала" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "Бан маската" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "Прекарот кој што го отстранил клучот" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "Прекарот кој што го отстранил ограничувањето" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "Прекарот на личноста што одземала op" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "Прекарот на личноста на која што и е земен op" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "Прекарот на личноста која одзела halfop" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Прекарот на личноста на која и е одземен halfop" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "Прекарот на личноста која направила одземање на глас" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "Прекарот на личноста на која и е одземен гласот" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "Прекарот на личноста која што одбанувала" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "Прекарот на личноста која направила exempt" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "Exempt маска" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "Прекарот на личноста која отстранила exempt" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "Прекарот на личноста која поканила" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "Маската за покана" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "Прекарот на личноста која ја отстранила поканата" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "Прекарот на личноста која што го поставува режимот" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "Знаците за режим (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "Буквата за режим" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "Каналот се подесува" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Корисничко име" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Целосно име" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Членство на каналот/\"е IRC оператор\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Информации за серверот" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Неактивност" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Време на вклучување" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Причина за отсуство" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Порака" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Сметка" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "Вистински корисник@host" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "Вистинска IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Име на каналот" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Текст" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Име на серверот" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Прекар на личноста која те поканила" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Корисници" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Прекарот е употребен" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Се обидувам со прекарот" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Порта" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Мрежа" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Стринг на режими" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "IP адреса" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "DCC тип" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Име на датотеката" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Дестинација на датотеката" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Име на патеката" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Позиција" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Големина" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "DCC стринг" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Број на предмети за известување" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Старо име на датотеката" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Ново име на датотеката" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Примач" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Маска на Host-от" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Име на host" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "Пакетот" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Секунди" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Прекарот на личноста што е поканета" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Бан маска" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Кој го ставил банот" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Време на банот" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Грешка при настанот %s.\n" +"Вчитувам стандардно." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"Неможам да ја прочитам звучната датотека:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "Затворен socket на мрежниот host" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Врската е одбиена" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Нема рута до host-от" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Конекцијата истече" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Не можам да ја назначам таа адреса" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Конекцијата е ресетирана од peer" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Островот Асенсион" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Андора" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Обединети Арапски Емирати" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Авганистан" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Антигvа и Барбуда" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Ангуила" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Албанија" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Ерменија" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Холандски Антили" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Ангола" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Антартик" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Аргентина" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "Обратен DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Американски Самоа" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Австрија" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Австралија" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Аруба" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Фолкландски Острови" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Азербејџан" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Босна и Херцеговина" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Барбадос" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Бангладеш" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Белгија" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Буркина Фасо" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Бугарија" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Бахреин" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Бурунди" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Бизниси" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Бенин" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Бермуда" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Брунеи Дарусалам" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Боливија" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Бразил" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Бахами" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Бутан" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Бувет Острови" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Боцвана" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Белорусија" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Белиз" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Канада" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Кокосови Острови" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "Демократска Репубика Конго" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "Централно Африканска Република" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Конго" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Швајцарија" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Брегот на Слоновата Коска" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Кук острови" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Чиле" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Камерун" + +#: src/common/util.c:898 +msgid "China" +msgstr "Кина" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Колумбија" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Internic Commercial" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Костарика" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Србија и Црна Гора" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Куба" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Кејп Верде" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Божиќни острови" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Кипар" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "Чешка" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Германија" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Џибути" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Данска" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Доминика" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "Доминиканска република" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Алжир" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Еквадор" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Образовна институција" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Естонија" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Египет" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Западна Сахара" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Еритреја" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Шпанија" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Етиопија" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Европска Унија" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Финска" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Фиџи" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Фолкландски острови" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Микронезија" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Фарски острови" + +#: src/common/util.c:928 +msgid "France" +msgstr "Франција" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Габон" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Велика Британија" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Гренада" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Грузија" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Француска Гвинеја" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Британски каналски острови" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Гана" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Гибралтар" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Гренланд" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Гамбија" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Гвинеја" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Влада" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Гвадалупе" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Екваторијална Гвинеја" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Грција" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "С. Џорџија и С. Сендвич Острови" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Гватемала" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Гвам" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Гвинеја-Бисао" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Гвајана" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Хонг Конг" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Хард и МекДоналд острови" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Хондурас" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Хрватска" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Хаити" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Унгарија" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Индонезија" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Ирска" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Израел" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Островот Ман" + +#: src/common/util.c:959 +msgid "India" +msgstr "Индија" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Информативен" + +#: src/common/util.c:961 +msgid "International" +msgstr "Интернационално" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Територија на Британскиот Индискиот океан" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Ирак" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Иран" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Исланд" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Италија" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Џерзи" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Јамајка" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Јордан" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Јапонија" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Кенија" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Киргистан" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Камбоџа" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Кирибати" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Коморос" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "Св. Кит и Невис" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Северна Кореја" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Јужна Кореја" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Кувајт" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Кајмански острови" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Казакстан" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Лаос" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Либан" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Света Луција" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Линхенштајн" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Шри Ланка" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Либерија" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Лесото" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Литванија" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Луксембург" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Латвија" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Либија" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Мароко" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Монако" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Молдавија" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "United States Medical" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Мадагаскар" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Маршалски острови" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Воена" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Македонија" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Мали" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Мјанмар" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Монголија" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Макао" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Острови Северна Маријана" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Мартиник" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Мавританија" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Монсерат" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Малта" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Маурициус" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Малдиви" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Малави" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Мексико" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Малезија" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Мозамбик" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Намибија" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Нова Каледонија" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Нигер" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Интерна мрежа" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Норфолски острови" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Нигерија" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Никарагва" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Холандија" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Норвешка" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Непал" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Науру" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Ниуе" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Нов Зеланд" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Оман" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "уИнтерна непрофитна организација" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Панама" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Перу" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Француска Полинезија" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Папуа Нова Гвинеја" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Филипини" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Пакистан" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Полска" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "Св. Пјер и Микелон" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Питкаим" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Порторико" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Палестинска територија" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Португалија" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Палау" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Парагвај" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Катар" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Reunion" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Романија" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "Old School ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Руска Федерација" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Руанда" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Саудиска Арабија" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Соломонски острови" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Сејшели" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Судан" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Шведска" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Сингапур" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "Св. Елена" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Словенија" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Свалбалд и Јан Маен острови" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Словачка" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Сиера Леоне" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "Сан Марино" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Сенегал" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Сомалија" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Суринам" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "Сао Томе и Принципе" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Бивш СССР" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "Салвадор" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Сирија" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Свазиленд" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Turks and Caicos Islands" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Чад" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Француски јужни територии" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Того" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Тајланд" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Таџикистан" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Источен Тимор" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Туркменистан" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Тунис" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Тонга" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Турција" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Тринидад и Тобаго" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Тувалу" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Тајван" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Танзанија" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Украина" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Уганда" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Обединето Кралство" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "Соединетите Американски Држави" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Уругвај" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Узбекистан" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Ватикан" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "Св. Винсент и Гренадин" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Венецуела" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Британски девствени острови" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "Американски девствени острови" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Виетнам" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Вануату" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Волис и Футуна острови" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Самоа" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Јемен" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Мајота" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Југославија" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Јужна Африка" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Замбија" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Зимбабве" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Непознато" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "Отвори нов дијалог прозорец" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "Испрати датотека" + +#: src/common/xchat.c:728 +#, fuzzy +msgid "_User Info (WhoIs)" +msgstr "Кориснички информации (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +#, fuzzy +msgid "O_perator Actions" +msgstr "Дејства за операторот" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Дај op" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Одземи op" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Дај глас" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Одземи глас" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Исфрли/Банирај" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Исфрли" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Банирај" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "Исфрли и банирај" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Напушти канал" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Приклучи се на канал..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Внеси канал за да се приклучиш:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Врски до серверот" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Пингувај го серверот" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Сокриј верзија" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Оp" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "Земи оp" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "чао" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Внеси причина за исфрлувањето %s:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Испрати датотека" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Дијалог" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "КојЕ" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Испрати" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Разговор" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Исчисти" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Пинг" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "Не можев да се порвзам со магистралата на сесијата" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "Не успеав да го довршам NameHasOwner" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "Не успеав да ја довршам командата" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "оддалечен пристап" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "приклучок за оддалечен пристап со користење на DBUS" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Не можев да се порвзам со магистралата на сесијата: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Не успеав да го добијам %s: %s\n" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "_За" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Мултиплатформски клиент за IRC" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Табела со карактери" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "Не сум поврзан." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Мораш да избереш неколку банови." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "Дали сте сигурни дека сакате да ги отстраните сите банирања од %s?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Маска" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "Од" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Дата" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" +"Можете да го отворите прозорецот на листата со банирани додека сте во " +"јазичето на каналот." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: Бан листа (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Отстрани" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Скрати" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Освежи" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Прикажувам %d/%d корисници на %d/%d канали." + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Избери излезно име на датотека" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "_Приклучи се на канал" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "_Копирај го името на каналот" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "Копирај го текстот од _насловот" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: Листа на канали (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "_Барај" + +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "_Симни листа" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "Зачувај ја _листата..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "Прикажи само:" + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "канали со" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "до" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "корисници" + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "Барај во:" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "Име на каналот" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "Барај тип:" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "Едноставно пребарување" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "Совпаѓање на шаблони (Wildcards)" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "Регуларни изрази" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Најди:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Испрати датотека на %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Дадотеката не може да доиспрати" + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"Не можам да пристапам до датотеката: %s\n" +"%s.\n" +"Доиспраќањето е невозможно." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"Датотеката во директориумот за преземање е поголема од понудената. " +"Доиспраќањето не е возможно." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "Не можам да ја примам истата датотека од двајца." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: Качувања и преземања" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Статус" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Датотека" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "ЕТА" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "И двете" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Качувања" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "Преземања" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Детали" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Датотека:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "Адреса:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Прекини" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Прифати" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Продолжи" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Отвори папка..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: Листа на DCC Chat" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Примени" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Испратени" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "Почетно време" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*НОВ*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "УРЕДИ МЕ" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Име" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Команда" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Помести горе" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Помести долу" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Откажи" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Сними" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Додај нов" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Избриши" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Подреди" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Помош" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "Не се поврзувај автоматски на серверот" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "Користи друг конфигурациски директориум" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "Не вчитувај додатоци автоматски" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "Прикажи директориум за автоматско вчитување на додатоците" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "Покажи го директориумот за конфигурациите на корисникот" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Отвори URL како irc://server:port/channel" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Изврши команда:" + +#: src/fe-gtk/fe-gtk.c:132 +#, fuzzy +msgid "Open URL or execute command in an existing XChat" +msgstr "Отвори URL во постоечки XChat" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" +"Започни минимизирано. Ниво 0=нормално 1=иконизирано 2=место за известување" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "ниво" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Покажи информации за верзијата" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"Не можам да го отворам фонтот:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "Баферот за пребарување е празен.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d бајти" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Редица за испраќање на мрежата: %d бајти" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"Командата Изврши ги извршува податоците во Податок1 како да се искуцаи во " +"полето. Може и да содржи текст (кој што ќе биде испратен на канал/личност), " +"команди или кориснички команди." + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"Командата за менување на страницата скока помеѓу страници во тетратката. " +"Поставете го податок 1 на страницата на која што сакате да се префрлите. Ако " +"податок 2 е поставен на што било, тогаш скокачот ќе се однесува релативно во " +"однос на тековната позиција." + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"Командата за внесување во бафер ќе ја внесе содржината на податок 1 во " +"записот каде што главната секвенца била притисната, односно на тековната " +"позиција на стрелката." + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"Командата за лизгање го лизга копчето за текстот нагоре и надоле по " +"страницата. Поставете на 1 за било горе или долу, + или -1." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"Командата за поставување на бафер го поставува записот каде што била внесена " +"содржината за главната секвенца на податокот 1." + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "Команда" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "Команда" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Оваа команда го менува текстот во полето со цел да доврши некомплетен прекар " +"или команда." + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "Оваа команда овозможува лизгање, горе и долу по листата со прекари." + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Командата ги проверува последните внесени зборови и ги заменува ако најде " +"совпаѓање" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Оваа команда го преместува предното јазиче лево за едно место" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Оваа команда го преместува предното јазиче десно за едно место" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Оваа команда ја преместува тековната фамилија на јазичиња налево" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Оваа команда ја преместува тековната фамилија на јазичиња надесно" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "" +"Ја става линијата за внесување во историја но не ја испраќа на серверот" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "Се појави грешка при вчитувањето на конфигурацијата за копчињата" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<none>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Режим" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Копче" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Дејствие" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: Кратенки за тастатура" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Податок 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Податок 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Грешка при отворање на датотеката со конфигурација на копчињата\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Непознато клучно име %s во датотеката за конфгируација на копчињата\n" +"Вчитувањето е прекинато. Поправи го %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Непозната акција %s во датотеката за конфигурација на копчињата\n" +"Вчитувањето е прекинато, Поправи го %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Вчитувањето е прекинато, Поправи го %s/копчињата\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"Датотеката за конфигурација на копчињата е расипана, вчитувањето е " +"прекинато\n" +"Поправи го %s/keybindings.conf\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "Не можам да запишам во таа датотека" + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Не можам да ја прочитам датотеката" + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Таа маска веќе постои" + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Приватно" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Забелешка" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Покана" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Не игнорирај" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Внеси маска за игнорирање:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: Листа на игнорирани" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Статистики за игнорирани:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Канал:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Приватно:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Забелешка:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Покани:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "Додај..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "Името на каналот е прекратно, обидете се повторно." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: Врската заврши" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "Врската со %s е целосна." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"Во прозорецот со листа на сервери не беше внесен канал на кој ќе се " +"приклучувам автоматски на оваа мрежа." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "Што сакате да правите следно?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "_Ништо, ќе се приклучам на некој канал подоцна." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "_Приклучи се на овој канал:" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" +"Ако го знаете името на каналот на кој што сакате да се приклучите, внесете " +"го тука." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "О_твори го прозорецот со листа на канали." + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "Земањето на листата со канали може да потрае една до две минути." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "_Секогаш прикажувај го овој дијалог прозорец после поврзување." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Дијалог со" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Насловот на %s е: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Нема поставено наслов" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"Овој сервер има %d канали и дијалози поврзани со него. Да ги затворам сите?" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "Да го исклучам XChat?" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "Не прашувај наредниот пат." + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Вие сте поврзани на %i IRC мрежи." + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "Дали сигурно сакате да напуштите?" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "Некои податоци сеуште се пренесуваат." + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "_Минимизирај се во местото за известување" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Внеси атрибут или код за боја" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Задебелено</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Потцртано</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Нормално" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Бои 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Бои 8-15" + +#: src/fe-gtk/maingui.c:1612 +#, fuzzy +msgid "_Settings" +msgstr "П_оставувања" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "Сокриј ги пораките за приклучување и напуштање" + +#: src/fe-gtk/maingui.c:1625 +#, fuzzy +msgid "_Extra Alerts" +msgstr "Известувања" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "Свирни на порака" + +#: src/fe-gtk/maingui.c:1628 +#, fuzzy +msgid "Blink Tray _Icon" +msgstr "Трепкај ја иконата при:" + +#: src/fe-gtk/maingui.c:1629 +#, fuzzy +msgid "Blink Task _Bar" +msgstr "Трепкај на лентата со задачи на:" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +#, fuzzy +msgid "_Detach" +msgstr "_Откачи јазиче" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "_Затвори" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "Корисничкото ограничување мора да биде број!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Заштита на наслов" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Без надворешни пораки" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Тајна" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Само со покани" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Модерирано" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Бан листа" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Збор" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Корисничко ограничување" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Покажи/скриј корисничка листа" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"Неможам да поставам транспарентна позадина!\n" +"\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Внеси нов прекар" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Непознат host" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Вистинско име:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Корисник:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "Земја:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Сервер:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "пред %u минути" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Последна порака:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Порака за отсуство:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"Мени лентата сега е скриена. Можете да ја прикажете повторно со притискање " +"на F9 во празен дел од површината на главниот текст." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Отвори ја врската во прелистувач" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Копирај ја избраната врска" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Приклучи се на канал" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Напушти канал" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Промени канал" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: Корисничко мени" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Уреди го ова мени..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Земи листа на канали..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Кориснички команди - Специјални кодови:\n" +"\n" +"%c = тековен канал\n" +"%e = име на тековната мрежа\n" +"%m = инфо за машината\n" +"%n = твојот прекар\n" +"%t = време/датум\n" +"%v = xchat верзија\n" +"%2 = збор 2\n" +"%3 = збор 3\n" +"&2 = збор 2 на крај на линијата\n" +"&3 = збор 3 на крај на линијата>\n" +"\n" +"eg:\n" +"/cmd перо здраво\n" +"\n" +"%2 треба да биде \"перо\"\n" +"&2 треба да биде \"перо здраво\"." + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Копчиња за корисничката листа - Специјални кодови:\n" +"\n" +"%a = сите избрани прекари\n" +"%c = тековен канал\n" +"%e = име на тековната мрежа\n" +"%h = Име на host-от на избраниот прекар\n" +"%m = инфо за машината\n" +"%n = твојот прекар\n" +"%s = избран прекар\n" +"%t = време/дата\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Копчиња за дијалог - Специјални кодови:\n" +"\n" +"%a = сите избрани прекари\n" +"%c = тековен канал\n" +"%e = име на тековната мрежа\n" +"%h = Име на host-от на избраниот прекар\n" +"%m = инфо за машината\n" +"%n = твојот прекар\n" +"%s = избран прекар\n" +"%t = време/дата\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"CTCP одговори - специјални кодови:\n" +"\n" +"%d = дата (целиот ctcp)\n" +"%e = име на тековната мрежа\n" +"%m = инфо за машината\n" +"%s = прекар кој испрати ctcp\n" +"%t = време/дата\n" +"%2 = збор 2\n" +"%3 = збор 3\n" +"&2 = збор 2 на крај на линијата\n" +"&3 = збор 3 на крај на линијата\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"URL Handlers - Специјални кодови:\n" +"\n" +"%s = URL стрингот\n" +"\n" +"Ставањето на ! пред командата\n" +"означува дека треба да се испрати во\n" +"школката наместо во XChat" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: Команди дефинирани од корисникот" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: Скокачко мени на корисничката листа" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Замени со" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: Замени" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: URL справувачи" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: Копчиња за корисничката листа" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: Копчиња за дијалог" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: CTCP реплики" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "Ли_ста на мрежата..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "_Нов" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Серверско јазиче..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Јазиче на канал..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Прозорец на серверот..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Прозорец на каналот..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "_Вчитај додаток или скрипта..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "_Излез" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "_Поглед" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "_Мени лента" + +#: src/fe-gtk/menu.c:1592 +msgid "_Topic Bar" +msgstr "_Насловна лента" + +#: src/fe-gtk/menu.c:1593 +msgid "_User List" +msgstr "_Корисничка листа" + +#: src/fe-gtk/menu.c:1594 +msgid "U_serlist Buttons" +msgstr "К_опчиња за корисничката листа" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "Копчиња за р_ежим" + +#: src/fe-gtk/menu.c:1597 +msgid "_Channel Switcher" +msgstr "Менувач на _канали" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "_Јазичиња" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "Д_рво" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "Мерења на _мрежата" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Исклучено" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Графа" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "_Сервер" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "_Исклучи се" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "_Поврзи се пак" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "Приклучи се на канал..." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "Приклучи се на канал..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Означи отсуство" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "_Корисничко мени" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "П_оставувања" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "_Преференции" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Напредно" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Автоматско заменување..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "CTCP реплики..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Копчиња за дијалог..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Кратенки за тастатра..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Текстуални настани..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "URL." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Кориснички команди..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Копчиња за корисничката листа..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Скокачка корисничка листа..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_Прозорец" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Бан листа..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Табела со карактери..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Директен разговор..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Пренос на датотеки..." + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "Бан листа..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Листа на игнорирани..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Додатоци и скрипти..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Лог..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "Фаќач на URL..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Ресетирај ја линијата за означување" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "И_счисти текст" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Барај во текстот..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Зачувај текст..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_Помош" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "_Содржина" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "_За" + +#: src/fe-gtk/menu.c:2147 +#, fuzzy +msgid "_Attach" +msgstr "_Прикачи прозорец" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Последен пат виден" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Offline" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Никогаш" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "пред %d минути" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Присутен" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Внеси прекар за додавање:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "Извести на овие мрежи:" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "Се прифаќа листа на мрежи разделена со запирки." + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "XChat: Листа на игнорирани" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "Отвори дијалог" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" +"Не можам да најдам „notify-send“ за да отворам известувања во балончиња.\n" +"Ве молам, инсталирајте linotify." + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "XChat: Поврзан сум со %u мрежи и %u канали" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "_Врати" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "_Скриј" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "_Трепни на" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "Порака на каналот" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "Приватна порака" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "Осветлена порака" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "Отсуство" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat: Осветлена порака од: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat: %u осветлени пораки, најновата од: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat: Нова јавна порака од: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat: %u нови јавни пораки." + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat: Приватни пораки од: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "XChat: %u приватни пораки, најновата од: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat: Понуда за датотека од: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "XChat: %u понуди за датотеки, најновата од: %s (%s)" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Верзија" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Опис" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Избери додаток или скрипта за вчитување" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: Додатоци и скрипти" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "_Вчитај..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "_Извади" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Сними како..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: Лог (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Исчисти лог" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "Прозорецот кој го отвори ова Барање не постои повеќе." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "Барањето го достигна крајот, не се пронајде ништо." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: Барај" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "_Разликувај мали-големи букви" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "Барај _наназад" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "_Најди" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Нова мрежа" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Сигурно сакаш да ја отстраниш мрежата \"%s\" и сите нејзини сервери?" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "Канал" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: Листа на канали (%s)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "Лозинка:" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "_Уреди" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "Корисничкото име и вистинското име не може да се празни." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: Уреди %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Сервери за %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Поврзи се само на избраниот сервер" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Не кружи низ сите сервери ако врската се прекине." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Вашите детали" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Корисни глобални кориснички информации" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "_Прекар:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Втор избор:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "_Корисничко име:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "Вистинск_о име:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Се поврзувам" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Автоматско врзување на оваа мрежа при подигнување на програмата" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "Користи прокси сервер" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "Користи SSL за сите сервери на оваа мрежа" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Прифати невалиден SSL сертификат" + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "Напушти канал:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "" +"Канали на кои што сакаш да се приклучиш, одвоени со запирки, но не и со " +"празни места!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Команда за поврзување:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Додатни команди за извршување по поврзување. Ако ви треба повеќе од една, " +"поставете го ова на LOAD -e <filename>, каде <filename> е текстуална " +"датотека полна со команди за извршување." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Лозинка за серверот:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Ако вашиот прекар бара лозинка, внесете ја овде. Не сите IRC мрежи го " +"поддржуваат ова." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Лозинка за серверот:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Лозинка за серверот. Ако се двоумите, оставете празно." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Множество на знаци:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: Листа на мрежи" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Информации за корисникот" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Трет избор:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Мрежи" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "Прескокни ја листата на мрежи при подигнување на програмот" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "_Уреди..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "_Подреди" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" +"Ја подредува по азбучен редослед листата со мрежи. Користете SHIFT-UP и " +"SHIFT-DOWN за да поместите ред." + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "В_рзи се" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Изглед на полето за текст" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Фонт:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Позадинска слика:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Лизгачки линии:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Обоени прекари" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Давај му на секоја личност на IRC различна боја" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Порамнети прекари" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Направи ги прекарите подредени кон десно" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Провидна позадина" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Покажи линија за означување" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Вметни црвена линија после последниот прочитан текст." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Поставување за провидноста" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Црвена:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Зелена:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Сина:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Ознаки за времето" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Овозможи ознаки за времето" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Временски формат:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Погледни ги strftime man страниците за повеќе детали." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Ш" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "Ред по последно зборување" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Поле за внесување" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Користи ги фонтовите и боите од кутијата за текст" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Проверка на правопис" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Довршување на прекарите" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "Автоматско довршување на прекарот (без копчето „TAB“)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Суфикс на комплетирање на прекарот:" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "Суфикс на комплетирање на прекарот:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Поле за внесување на кодови" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Интерпретирај %nnn како ASCII вредност" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Интерпретирај %C, %B како боја, задебелено итн" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "А-Ш, прво оператори" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Ш-А, Операторите последни" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Ш-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Неподредени" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "Лево (горе)" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "Лево (долу)" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "Десно (горе)" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "Десно (долу)" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Врв" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Дно" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Скриен" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Корисничка листа" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Покажи ги имињата на хостовите во корисничката листа" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Корисничката листа подредена по:" + +#: src/fe-gtk/setup.c:205 +msgid "Show user list at:" +msgstr "Покажи корисничка листа за:" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Следење на отсуство" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "" +"Следи го статусот за отсуство на сите корисници и означи ги нив со различна " +"боја" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "На канали помали од:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Дејство после двојното кликнување" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Прозорци" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Јазичиња" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Секогаш" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Само бараните јазичиња" + +#: src/fe-gtk/setup.c:242 +#, fuzzy +msgid "Tree" +msgstr "Д_рво" + +#: src/fe-gtk/setup.c:249 +#, fuzzy +msgid "Switcher type:" +msgstr "Барај тип:" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Отвори додатно јазиче за серверските пораки" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Отвори додатно јазиче за серверските забелешки" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "Отвори ново јазиче кога примам приватна порака" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Подреди ги јазичињата по азбучен редослед" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "Мали јазичиња" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Фокус на новите јазичиња:" + +#: src/fe-gtk/setup.c:258 +msgid "Show channel switcher at:" +msgstr "Покажи менувач на канали за:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Скрати ги ознаките на јазичето на:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "букви." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Јазичиња или прозорци" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Отворај ги канали во:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Отворај ги дијалозите во:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Отворај ги алатките во:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Да отворам DCC, игнорирани, известувања итн, во јазичиња или прозорци?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "Не" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Да" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "Прелистувај за папка за зачувување секој пат" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Датотеки и директориуми" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Автоматско прифаќање на датотеки:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Преземај датотеки во:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Поместувај ги завршените датотеки во:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Зачувај го прекарот во имиња на датотеки" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Поставувања за мрежата" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Земи ја мојата адреса од IRC серверот" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Го прашува IRC серверот за вашата вистинска адреса. Користете го ова ако " +"имате 192.168.*.* адреса!" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "DCC IP адреса:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Тврди дека си на оваа адреса кога нудиш датотеки." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Прва DCC порта за испраќање:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Последна DCC порта за испраќање:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!Оставете ги портите на нула за целосен опсег." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Максимални брзини на пренос на датотеки (битови во секунда)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Едно качување:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Макс. брзина за еден трансфер" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Едно преземање:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Сите качувања заедно:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Макс. брзина за целиот сообраќај" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Сите преземања заедно:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Известувања" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "Прикажи балончиња во местото за известување на:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "Трепкај ја иконата при:" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "Трепкај на лентата со задачи на:" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "Бипкај на:" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "Овозможи икона во местото за известување" + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "Осветлени пораки" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Осветлените пораки се оние каде вашето име е спомнато, но исто така:" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "Додатни зборови за осветлување:" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "Прекари кои нема да се осветлуваат:" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "Прекарите кои секогаш ќе се осветлуваат:" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Раздели повеќе зборови со запирки." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Стандардни пораки" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Излез:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Напушти канал:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Отсутен:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Отсуство" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Објавувај ги пораките за отсуство" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Објавувај ги пораките за отсуство на сите канали" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Покажи отсуство еднаш" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Покажувај идентични пораки за отсуство само по еднаш" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Автоматски одбележи отсуство" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Одбележи се себеси како отсутен пред да праќаш пораки" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Напредни поставувања" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Доцнење на автоматското поврзување:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Режим за прикажување во сурова форма" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Whois при известување" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "Испраќа /WHOIS кога доаѓа корисник што ти е во листата за известување" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Сокриј ги пораките за приклучување и напуштање" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Стандардно криј ги пораките за приклучување/напуштање на канал" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Автоматско отворање на DCC прозорците" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Прозорец за испраќање" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Прозорец за примање" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Прозорец на разговорот" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Снимање" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "Овозможи снимање на разговори" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Име на датотеката со лог:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Сервер %c=Канал %n=Мрежа." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Внесувај временски формат во записите" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Временски формат за запис:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Оневозможено)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Сите врски" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "Само IRC сервери" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "DCC Get Only" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Вашата адреса" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Поврзи се со:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "Корисно само за компјутери со повеќе адреси." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Прокси сервер" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Име на host:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Порта:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Тип:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Користи прокси за:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Автентикација на прокси" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Користи автентикација (MS Proxy, HTTP или само Socks5)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Користи автентикација (HTTP или само Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Корисничко име:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Лозинка:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Избери слика датотека" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "Одберете папка за преземања" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Избери фонт" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Прелистувај..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Означи ги идентифицираните корисници со:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Означи ги неидентифицираните корисници со:" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "Отвори папка со податоци" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Избери боја" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Бои на текст" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "mIRC боја:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Локални бои:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Напред:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Позадина:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Означување на текст" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Бои на интерфејсот" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Нови податоци:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Линија за означување:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Нова порака:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Отсутен корисник:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Подвлечени:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Настан" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Звучна датотека" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Одберете датотека со звук" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Метод на пуштање на звуци:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "Надворешна _програма за пуштање на звуци:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "_Надворешна програма" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_Автоматски" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "_Директориум со звучни датотеки:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Звучна датотека:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "_Прелистај..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "_Пушти" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Интерфејс" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Текст поле" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Корисничка листа" + +#: src/fe-gtk/setup.c:1703 +msgid "Channel switcher" +msgstr "Менувач на канали" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Бои" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Разговор" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Општо" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Звук" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Подесувања на мрежата" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Трансфер на датотеки" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Категории" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" +"Не можете да го поставите дрвото на дното или најгоре!\n" +"Ве молам, прво направете промена во распоредот на <b>Јазичињата</b> во " +"менито <b>Поглед</b>." + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Поради направените промени мораш да го рестартираш xchat." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*ПРЕДУПРЕДУВАЊЕ*\n" +"Автоматско прифаќање на DCC во твојот домашен директориум\n" +"може да биде опасно. Пр:\n" +"Некој може да ти испрати „.bash_profile“" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: Преференци" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Грешка" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Овој сигнал помина само %d аргументи, $%d е невалиден" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Печати текстуална датотека" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Уреди настани" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ Број" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Вчитај од..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Тестирај се" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: URL фаќач" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Исчисти листа" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Копирај го избраното URL" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Копирај" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Сними ја листата во датотека" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d оператори, %d вкупно" + +#~ msgid "" +#~ "Set per channel options\n" +#~ "CHANOPT CONFMODE ON|OFF - Toggle conf mode/showing of join and part " +#~ "messages\n" +#~ "CHANOPT COLORPASTE ON|OFF - Toggle color paste\n" +#~ "CHANOPT BEEP ON|OFF - Toggle beep on message\n" +#~ "CHANOPT TRAY ON|OFF - Toggle tray blink on message" +#~ msgstr "" +#~ "Постави опции за канал\n" +#~ "CHANOPT CONFMODE ON|OFF - Приклучи конфигурациски режим/прикажување на " +#~ "пораките за приклучување и напуштање\n" +#~ "CHANOPT COLORPASTE ON|OFF - Приклучи вметнување со боја\n" +#~ "CHANOPT BEEP ON|OFF - Приклучи бипкање за порака\n" +#~ "CHANOPT TRAY ON|OFF - Приклучи светкање на иконата во фиоката" + +#~ msgid "Direct client-to-client" +#~ msgstr "Директно,клиент до клиент" + +#~ msgid "Send File" +#~ msgstr "Испрати датотека" + +#~ msgid "Offer Chat" +#~ msgstr "Понуди разговор" + +#~ msgid "Abort Chat" +#~ msgstr "Прекини разговор" + +#~ msgid "Userinfo" +#~ msgstr "Инфо за корисник" + +#~ msgid "Clientinfo" +#~ msgstr "Инфо за клиент" + +#~ msgid "Time" +#~ msgstr "Време" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "Oper" + +#~ msgid "Kill this user" +#~ msgstr "Убиј го корисникот" + +#~ msgid "Mode" +#~ msgstr "Режим" + +#~ msgid "Give Half-Ops" +#~ msgstr "Дај полуоператорски статус" + +#~ msgid "Take Half-Ops" +#~ msgstr "Одземи полуоператорски статус" + +#~ msgid "Ignore" +#~ msgstr "Игнорирај" + +#~ msgid "Ignore User" +#~ msgstr "Игнорирај корисник" + +#~ msgid "UnIgnore User" +#~ msgstr "Не игнорирај корисник" + +#~ msgid "Info" +#~ msgstr "Инфо" + +#~ msgid "Who" +#~ msgstr "Кој" + +#~ msgid "DNS Lookup" +#~ msgstr "Побарај DNS" + +#~ msgid "Trace" +#~ msgstr "Следи" + +#~ msgid "UserHost" +#~ msgstr "Host на корисникот" + +#~ msgid "External" +#~ msgstr "Надворешно" + +#~ msgid "Traceroute" +#~ msgstr "Рута на следење" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "About XChat" +#~ msgstr "За XChat" + +#~ msgid "Unban" +#~ msgstr "Одбанирај" + +#~ msgid "Blink tray on message" +#~ msgstr "Трепни на порака" + +#~ msgid "Show join/part messages" +#~ msgstr "Покажувај ги пораките за приклучувањето и исклучување" + +#~ msgid "Color paste" +#~ msgstr "Вметни боја" + +#~ msgid "_Close Tab" +#~ msgstr "_Затвори јазиче" + +#~ msgid "Channel List..." +#~ msgstr "Листа на канали..." + +#~ msgid "Notify List..." +#~ msgstr "Листа за известувања" + +#~ msgid "_Close Window" +#~ msgstr "_Затвори го прозорецот" + +#~ msgid "User" +#~ msgstr "Корисник" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: Листа за известување" + +#~ msgid "C_hannels to join:" +#~ msgstr "К_анали за приклучување:" + +#~ msgid "Channel Switcher" +#~ msgstr "Менувач на канали" diff --git a/etc/wyatt8740/po/nl.po b/etc/wyatt8740/po/nl.po new file mode 100644 index 0000000..c0f78de --- /dev/null +++ b/etc/wyatt8740/po/nl.po @@ -0,0 +1,6058 @@ +# Dutch translation of xchat. +# Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. +# Arjan Scherpenise <acscherp@wins.uva.nl>, 2000. +# Bart Coppens <coppensbart@pi.be>, 2002. +# Taco Witte <T.C.Witte@phys.uu.nl>, 2003. +# Elros Cyriatan <cyriatan@fastmail.fm>, 2003, 2004. +# Luk Claes <luk.claes@ugent.be>, 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.6.3\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2006-06-02 08:26+0100\n" +"Last-Translator: Luk Claes <luk@debian.org>\n" +"Language-Team: Dutch <vertaling@vrijschrift.org>\n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Kan ~/.xchat2 niet aanmaken" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Ik ben bezig" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Ik ga weg" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* IRC uitvoeren als root is dom! U moet een\n" +" gebruikersaccount aanmaken en daarmee inloggen.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Bezig met wachten" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Actief" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Mislukt" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Klaar" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Verbinden" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Afgebroken" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "Kan %s niet benaderen\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Fout" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s bied je \"%s\" aan. Wil je dit aanvaarden?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Geen DCCs actief\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "JA " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "NEE " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "U wordt overspoeld met CTCP-verkeer van %s, nu wordt %s genegeerd\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "" +"U wordt overspoeld met MSG-verkeer van %s, gui_auto_open_dialog wordt UIT-" +"gezet.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s online\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s offline\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Niet in een kanaal. Probeer /join #<kanaal>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Niet verbonden. Probeer /server <host> [<poort>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "Ik heb /bin/sh nodig om te werken!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Beschikbare opdrachten: " + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Door de gebruiker gedefinieerde opdrachten: " + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Door de gebruiker gedefinieerde opdrachten: " + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Tik /HELP <opdracht> voor meer info, of /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Onbekend argument '%s' genegeerd." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "Plugin niet gevonden.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Die plugin weigert te ontladen.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <naam> <actie>, voegt een knop toe onder de gebruikerslijst" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <opdr>, stuurt een opdracht naar alle kanalen waar je in zit" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHANL <opdr>, stuurt een opdracht naar alle kanalen waar je in zit" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "" +"ALLSERV <opdr>, stuurt een opdracht naar alle servers waarop je bent ingelogd" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<reden>], zegt dat je weg bent" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <masker> [<verbansoort>], verbant iedereen die voldoet aan het masker " +"uit het huidige kanaal. Als ze al in het huidige kanaal zitten worden ze " +"niet weggeschopt (kanaal-operator vereist)" + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "SET [-quiet] <variabel> [<waarde>]" + +#: src/common/outbound.c:3508 +#, fuzzy +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "CLEAR, maakt het huidige tekstvenster schoon" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, sluit het huidige venster/tabblad" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" +"COUNTRY [-s] <code|wildcard>, zoek een landcode, bijvoorbeeld be = België en " +"nl = Nederland" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <persoon> <bericht>, een CTCP bericht naar de persoon sturen. Veel " +"voorkomende berichten zijn VERSION en USERINFO" + +#: src/common/outbound.c:3516 +#, fuzzy +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "CYCLE, het huidige kanaal verlaten en direct terugkeren" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <persoon> - een aangeboden bestand accepteren\n" +"DCC SEND [-maxcps=#] <persoon> [bestand] - een bestand naar iemand sturen\n" +"DCC PSEND [-maxcps=#] <persoon> [bestand] - een bestand sturen gebruik " +"makend van de passieve modus\n" +"DCC LIST - DCC lijst weergeven\n" +"DCC CHAT <persoon> - iemand DCC CHAT aanbieden\n" +"DCC PCHAT <persoon> - DCC CHAT aanbieden gebruikmakend van de passieve " +"modus\n" +"DCC CLOSE <soort> <persoon> <bestand> voorbeeld:\n" +" /dcc close send janjanssen bestand.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <persoon>, de kanaal-halfoperator status van de persoon in het huidige " +"kanaal verwijderen (kanaal-operator vereist)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <naam>, een knop van de gebruikerslijst wissen" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <persoon>, kanaal-operatorstatus van de persoon in het huidige kanaal " +"verwijderen (kanaal-operator vereist)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <persoon>, de stemstatus van de persoon in het huidige kanaal " +"verwijderen (kanaal-operator vereist)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, de verbinding met de server verbreken" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <persoon|host|ip>, het IP-adres van een gebruiker vinden" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <tekst>, lokaal een tekst afdrukken" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <opdracht>, een opdracht uitvoeren. Als de -o vlag meegegeven is, " +"wordt de uitvoer naar het huidige kanaal gestuurd, anders naar het huidige " +"tekstvenster" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, het proces SIGCONT sturen" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], een lopende exec in de huidige sessie stoppen. Als -9 is " +"meegegeven wordt het proces geSIGKILLd" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, het proces SIGSTOP sturen" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, gegevens naar stdin sturen van het proces" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, de verzendrij van de huidige server doerspoelen" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" +"GATE <host> [<poort>], verbinding maken door een proxy, de poort is " +"standaard 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <bijnaam> <wachtwoord>, doodt een spook-bijnaam" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" +"HOP <persoon>, geeft kanaal-halfoperator status aan de persoon (kanaal-" +"operator vereist)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <wachtwoord>, identificeert u bij nickserv" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <masker> <soorten..> <opties..>\n" +" masker - host masker om te negeren, bijv.: *!*@*.aol.com\n" +" soorten - soorten gegevens om te negeren, een of meer van:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" opties - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <persoon> [<kanaal>], iemand uitnodigen een kanaal te openen, " +"standaard het huidige kanaal (kanaal-operator vereist)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <kanaal>, het kanaal binnengaan" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <persoon>, de persoon uit het huidige kanaal schoppen (kanaal-operator " +"vereist)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAR <persoon>, een persoon eerst verbannen en dan uit het huidige kanaal " +"schoppen (kanaal operator vereist)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, een nieuwe controle op achterstand forceren" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <tekst>, een tekst zoeken in de buffer" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <bestand>, laadt een plugin of script" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, massaal van alle kanaal-halfops op-status verwijderen in huidige " +"kanaal (kanaal-operator vereist)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, massaal van alle kanaal-ops op-status verwijderen in huidige kanaal " +"(kanaal-operator vereist)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <actie>, stuurt de actie naar het huidige kanaal (acties worden " +"geschreven in de 3e persoon, bijv: /me springt)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, massaal iedereen behalve jezelf uit huidige kanaal schoppen (kanaal-" +"operator vereist)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, massaal alle gebruikers in huidige kanaal op-status geven (kanaal-" +"operator vereist)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <persoon> <bericht>, een privéberichtje sturen" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, geef de lijst met personen in het huidige kanaal" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <persoon> <bericht>, een CTCP-melding sturen" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <hostnaam> [<poort>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <bijnaam>, je bijnaam instellen" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <persoon/kanaal> <bericht>, een melding sturen. Meldingen zijn het " +"soort berichten waarop automatisch gereageerd zou moeten worden." + +#: src/common/outbound.c:3614 +#, fuzzy +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [<persoon>], een lijst geven van de waarschuwingslijst of iemand er " +"aan toevoegen" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" +"OP <persoon>, de kanaal-operator status aan de persoon geven (kanaal-" +"operator vereist)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" +"PART [<kanaal>] [<reden>], het kanaal verlaten, standaard het huidige kanaal." + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <persoon | kanaal>, een persoon of kanaal CTCP pingen" + +#: src/common/outbound.c:3622 +#, fuzzy +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "QUERY <persoon>, een nieuw privé berichtvenster naar iemand openen" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<reden>], verbinding met de huidige server verbreken" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <tekst>, tekst in ruw formaat naar de server sturen" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<host>] [<poort>] [<wachtwoord>], kan net als /RECONNECT " +"gebruikt worden om opnieuw te verbinden met de huidige server, of met /" +"RECONNECT ALL om met alle open servers een nieuwe verbinding te maken" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<host>] [<poort>] [<wachtwoord>], kan net als /RECONNECT gebruikt " +"worden om opnieuw te verbinden met de huidige server, of met /RECONNECT ALL " +"om met alle open servers een nieuwe verbinding te maken" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <tekst>, ruwe gegevens naar X-Chat sturen, alsof het verstuurd was door " +"de irc server" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <tekst>, de tekst naar het object in het huidige venster sturen" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <bijnaam> [<bestand>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <host> <poort> <kanaal>, verbinding maken en een kanaal " +"openen" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN <host> <poort> <kanaal>, verbinding maken en een kanaal openen" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <host> [<poort>] [<paswoord>], verbinding maken met een " +"server, de standaard poort is 6667 voor gewone verbindingen, 9999 voor ssl " +"verbindingen" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <host> [<poort>] [<paswoord>], verbinding maken met een server, de " +"standaard poort is 6667 voor gewone verbindingen" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-quiet] <variabel> [<waarde>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<positie>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<topic>], het onderwerp opeven als topic gespecifiëerd is, anders het " +"huidige onderwerp laten zien" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <masker> [<masker>...], de opgegeven maskers weer toelaten" + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <mask> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <naam>, een plugin of script laden" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url> opent een URL in uw browser" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <bijnaam1> <bijnaam2> enz, laat bijnamen oplichten in " +"gebruikerslijst van het kanaal" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "" +"VOICE <persoon>, geef de stemstatus aan iemand (kanaal operator vereist)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <bericht>, het bericht naar alle kanalen sturen" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <bericht>, een bericht naar alle kanaaloperatoren op het huidige " +"kanaal" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Gebruik: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"Geen help beschikbaar over die opdracht.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Nietbestaande opdracht.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Foute argumenten voor gebruikersgedefiniëerde opdracht.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Teveel recursieve gebruikersgedefiniëerde opdrachten, afbrekende." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Onbekende opdracht. Probeer /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "Geen xchat_plugin_init symbol gevonden; is dit een echte xchat plugin?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Weet u zeker dat deze server en poort SSL ondersteunen?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Kan hostnaam %s niet oplossen\n" +"Controleer uw IP instellingen!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Proxy doorkruising mislukt.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Overschakelen naar volgende server in %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Waarschuwing: tekenset \"%s\" is onbekend. Er zal geen conversie worden " +"toegepast voor netwerk %s." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 toegevoegd aan waarschuwingslijst." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Verbanlijst:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tKan niet binnengaan%C26 %B$1 %O(U bent verbannen)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 is nu bekend als $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 verbant $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tKanaal $1 gemaakt op $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O verwijdert kanaal-half-operator status van%C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O verwijdert kanaal-operator status van%C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O verwijdert stem van%C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 zet vrijstelling op $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O geeft kanaal-half-operator status aan%C26 $2" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 zet uitnodigen op $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UKanaal Gebruikers Onderwerp" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 zet modus op $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Kanaal $1 modi: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O geeft kanaal-operator status aan%C26 $2" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 verwijdert vrijstelling van $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 verwijdert uitnodigen van $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 verwijdert kanaalsleutelwoord" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 verwijdert gebruikersgrens" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 zet kanaalsleutelwoord op $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 zet kanaalgrens op $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 verwijdert verbanning van $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O geeft stem aan%C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Verbonden. Nu bezig met aanmelden..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22Bezig met verbinden met $1 ($2) poort $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21Verbinden mislukt. Fout: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tEr is een CTCP $1 ontvangen van $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tEr is een CTCP $1 ontvangen van $2 (aan $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tEr is een CTCP-geluid $1 ontvangen van $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tEr is een CTCP-geluid $1 ontvangen van $2 (aan $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tDCC CHAT met %C26$1%O afgebroken." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "" +"%C22*%O$tDCC CHAT-verbinding tot stand gebracht met %C26$1 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tDCC CHAT met %C26$1%O verloren ($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tEr is een DCC CHAT-aanbod ontvangen van $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tBezig met aanbieden DCC CHAT aan $1" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tEr wordt al een CHAT aangeboden aan $1" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$tDCC $1 verbindingspoging met%C26 $2%O mislukt (err=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tOntvangen '$1%O' van $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 Soort Naar/Van Status Grootte Pos Bestand " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O." +"%010%C22*%O$tContents of packet: $2" +msgstr "" +"%C22*%O$tEr is een misvormd DCC-verzoek ontvangen van %C26$1%O." +"%010%C22*%O$tInhoud van pakket: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tBezig met aanbieden%C26 $1%O aan%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tDCC-aanbod niet gevonden." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O afgebroken." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC RECV%C26 $1%O van%C26 $3%O voltooid %C30[%C26$4%O cps%C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "" +"%C22*%O$tDCC RECV-verbinding tot stand gebracht met%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV%C26 $1%O van%C26 $3%O mislukt ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV: Kan $1 niet openen om te schrijven ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "" +"%C22*%O$tHet bestand%C26 $1%C bestaat al; wordt opgeslagen als%C26 $2%O." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Oheeft verzocht om%C26 $2 %Cvan%C26 $3%C te pauzeren." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC SEND%C26 $2%O naar%C26 $1%O afgebroken." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC SEND%C26 $1%O naar%C26 $2%O voltooid %C30[%C26$3%O cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "" +"%C22*%O$tDCC SEND-verbinding tot stand gebracht met%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND%C26 $1%O naar%C26 $2%O mislukt. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Oheeft%C26 $2 %O aangeboden (%C26$3 %Obytes)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Omet%C26 $3 %Cis opgehouden - afbreken." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Omet%C26 $3 %Oheeft time-out - afbreken." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 verwijderd uit waarschuwingslijst." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tVerbinding verbroken ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tUw IP is gevonden: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O toegevoegd aan negeerlijst." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "Negeren van %C26$1%O gewijzigd." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 Hostmasker PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O verwijderd uit negeerlijst." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " Negeerlijst is leeg." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "%C22*%O$tKan niet binnengaan%C26 %B$1 %O(Kanaal is alleen-uitnodigen)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tU bent uitgenodigd bij%C26 $1%O door%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) is binnengekomen bij $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$tKan niet binnengaan bij%C26 %B$1 %O(Sleutelwoord vereist)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 heeft $2 uit $3 geschopt ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$tU bent gedood door $1 ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD Overgeslagen." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 al in gebruik. Opnieuw proberen met $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$tBijnaam al in gebruik. Gebruik /NICK om een andere te proberen." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tDCC niet gevonden." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tEr loopt op dit moment geen proces" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tWaarschuwingslijst is leeg." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Waarschuwingslijst " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 gebruikers in waarschuwingslijst." + +#: src/common/textevents.h:282 +#, fuzzy +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tWaarschuwing: $1 is off-line ($2)." + +#: src/common/textevents.h:285 +#, fuzzy +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tWaarschuwing: $1 is on-line ($2)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) heeft $3 verlaten" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) heeft $3 verlaten (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tPing-antwoord van $1: $2 second(en)" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "" +"%C22*%O$tGeen ping-antwoord gedurende $1 seconden, verbinding verbroken." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tEr loopt al een proces" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 heeft verlaten (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 zet modi%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tBezig met opzoeken IP-nummer voor%C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22Verbonden." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22Bezig met opzoeken $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tVorige verbindingspoging gestopt (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29Onderwerp voor $1%C %C29is: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 heeft het onderwerp gewijzigd naar: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29Onderwerp voor $1%C %C29is ingesteld door $2%C %C29op $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tOnbekende host. Heeft u het goed gespeld?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "%C22*%O$tKan%C26 niet binnengaan %B$1 %O(Gebruikersgrens bereikt)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Gebruikers op $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cis weg %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OEinde van WHOIS-lijst." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O inactief%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O inactief%C26 $2%O, aangemeld:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" +"%C22*%O$t%C28[%O$1%C28] %Oechte gebruiker@host%C27 $2%O, echte IP%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19U praat nu op $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tU bent door $3 van $2 geschopt ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tU heeft kanaal $3 verlaten" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tU heeft kanaal $3 verlaten (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tU heeft%C26 $1%O uitgenodigd bij%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tU bent nu bekend als $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** LOGGEN GESTOPT OM %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** LOGGEN GESTART OP %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Kan logbestand(en) niet openen om te schrijven. Controleer\n" +" de toegangsrechten van %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Linkerbericht" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Rechterbericht" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "De bijnaam van de persoon die binnenkomt" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "Het kanaal dat geopend wordt" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "De host van de persoon" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Bijnaam" + +#: src/common/text.c:973 +msgid "The action" +msgstr "De actie" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Moduskarakter" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Geïdentificeerde tekst" + +#: src/common/text.c:980 +msgid "The text" +msgstr "De tekst" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Het bericht" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Oude bijnaam" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Nieuwe bijnaam" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Bijnaam van de persoon die het onderwerp veranderde" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Onderwerp" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Kanaal" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "Bijnaam van de kicker" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "De persoon die gekickt wordt" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "Het kanaal" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "De reden" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "De bijnaam van de persoon die weggaat" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "De tijd" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "De maker" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Bijnaam" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Reden" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Host" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "Van wie het is" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "De tijd in x.x-formaat" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "Het kanaal waar het heen gaat" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "Het geluid" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "De bijnaam van de persoon" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "De CTCP-gebeurtenis" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "De bijnaam van de persoon die de sleutel instelde" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "De sleutel" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "De bijnaam van de persoon die de limiet instelde" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "De limiet" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "De bijnaam van de persoon die de op heeft uitgevoerd" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "De bijnaam van de persoon die is ge'opt" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "De bijnaam van de persoon die is ge'halfopt" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "De bijnaam van de persoon die de halfop heeft uitgevoerd" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "De bijnaam van de persoon die de voice heeft uitgevoerd" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "De bijnaam van de persoon die is ge'voicet" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "De bijnaam van de persoon die de ban heeft uitgevoerd" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "Het ban-masker" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "De bijnaam die de sleutel heeft verwijderd" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "De bijnaam die de limiet heeft verwijderd" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "De bijnaam van de persoon die de deop heeft uitgevoerd" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "De bijnaam van de persoon die is ge'deopt" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "De bijnaam van de persoon die de dehalfop heeft uitgevoerd" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "De bijnaam van de persoon die is ge'dehalfopt" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "De bijnaam van de persoon die de devoice heeft uitgevoerd" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "De bijnaam van de persoon die is ge'devoicet" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "De bijnaam van de persoon die de unban heeft uitgevoerd" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "De bijnaam van de persoon die de exempt heeft uitgevoerd" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "Het exempt-masker" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "De bijnaam van de persoon die de exempt heeft verwijderd" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "De bijnaam van de persoon die de uitnodiging heeft gedaan" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "Het uitnodigingsmasker" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "De bijnaam van de persoon die de uitnodiging heeft verwijderd" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "De bijnaam van de persoon die de modus heeft ingesteld" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "Het teken van de modus (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "De letter van de modus" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "Het kanaal waarop het wordt ingesteld" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Gebruikersnaam" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Volledige naam" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Kanaal deelnemerschap/\"is een IRC operator\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Serverinformatie" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Inactieve tijd" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Aanmeldtijd" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Reden van afwezigheid:" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Bericht" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Account" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "Echte gebruiker@host" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "Echte IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Kanaalsnaam" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Tekst" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Servernaam" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Bijnaam van de persoon die je uitnodigde" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Gebruikers" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Gebruikte bijnaam" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Bijnaam die geprobeerd wordt" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Poort" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Netwerk" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Modistring" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "IP-Adres" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "DCC-type" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Bestandsnaam" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Doelbestandsnaam" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Padnaam" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Positie" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Grootte" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "DCC Tekst" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Aantal meldingen" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Oude bestandsnaam" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Nieuwe bestandsnaam" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Ontvanger" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Hostmasker" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Hostnaam" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "Het pakket" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Seconden" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Bijnaam van de persoon die uitgenodigd is" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Banmasker" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Degene die de ban heeft ingesteld" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Bantijd" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Fout bij inlezen gebeurtenis %s.\n" +"Standaard wordt geladen." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"Kan geluidsbestand niet lezen:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "Host op afstand heeft socket gesloten" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Verbinding geweigerd" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Geen route naar host" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Verbinding kreeg een timeout" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Kan dat adres niet toewijzen" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Verbinding verbroken door peer" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Ascension" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Verenigde Arabische Emiraten" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Afganistan" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Antigua en Barbuda" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Albanië" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Armenië" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Nederlandse Antillen" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Antarctica" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Argentinië" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "Omgekeerde DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Amerikaans Samoa" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Oostenrijk" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Australië" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Alandseilanden" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Azerbeidjan" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Bosnië en Herzegovina" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Bangladesh" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "België" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Bulgarije" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Bahrein" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Bedrijven" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Brunei Darussalam" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Bolivië" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Brazilië" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Bahama's" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Bhutan" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Bouvet-eiland" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Wit-Rusland" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Canada" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Cocoseilanden" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "Democratische Republiek Congo" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "Centraal-Afrikaanse Republiek" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Congo" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Zwitserland" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Ivoorkust" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Cookeilanden" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Chili" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Kameroen" + +#: src/common/util.c:898 +msgid "China" +msgstr "China" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Colombia" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Internic Commercieel" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Servië en Montenegro" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Cuba" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Kaapverdische Eilanden" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Kerstmis-eiland" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Cyprus" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "Tsjechië" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Duitsland" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Djibouti" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Denemarken" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Dominica" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "Dominicaanse Republiek" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Algerije" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Ecuador" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Educatieve instelling" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Estland" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Egypte" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Westelijke Sahara" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Spanje" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Ethiopië" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Europese Unie" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Finland" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Fiji" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Falkland eilanden" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Micronesië" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Faroër Eilanden" + +#: src/common/util.c:928 +msgid "France" +msgstr "Frankrijk" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "England" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Georgië" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Frans Guyana" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Briste kanaaleilanden" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Ghana" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Groenland" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Overheid" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Guadeloupe" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Equatoriaal Guinee" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Griekenland" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Z.-Georgië en de Z. Sandwich-eilanden" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Guinee-Bissau" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Guyana" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Heard en McDonald eilanden" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Kroatië" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Haïti" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Hongarije" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Indonesië" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Ierland" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Israel" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Eiland Man" + +#: src/common/util.c:959 +msgid "India" +msgstr "India" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Informatie" + +#: src/common/util.c:961 +msgid "International" +msgstr "Internationaal" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Brits-Indische Oceaan Territorium" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Irak" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Iran" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "IJsland" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Italië" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Jamaica" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Jordanië" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Japan" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Kenia" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Kirgizië" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Cambodja" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Komoren" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "St.-Kitts en Nevis" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Noord-Korea" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Zuid-Korea" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Koeweit" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Kaaimaneilanden" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Kazachstan" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Libanon" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Santa Lucia" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Liberia" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Litouwen" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Luxemburg" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Letland" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Libië" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Marokko" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Monaco" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Moldavië" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "Verenigde Staten Medisch" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Madagascar" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Marshall-eilanden" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Militair" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Macedonië" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Mongolië" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Macaõ" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Noordelijke Mariana-eilanden" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Martinique" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Mauritanië" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Mauritius" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Malediven" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Mexico" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Maleisië" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Mozambique" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Namibië" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Nieuw Caledonië" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Internic Netwerk" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Norfolk-eiland" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Nigeria" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Nederland" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Noorwegen" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Nieuw-Zeeland" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Internic Non-profit organisatie" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Frans-Polinesië" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Papoea Nieuw-Guinee" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Filipijnen" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Polen" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "St.-Pierre en Miquelon" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Puerto Rico" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Bezette Palestijnse Gebieden" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Portugal" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Paraguay" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Qatar" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Reunion" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Roemenië" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "Oude school ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Rusland" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Rwanda" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Saoedi-Arabië" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Solomon-eilanden" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Seychellen" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Soedan" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Zweden" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Singapore" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "St.-Helena" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Slovenië" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard en Jan Mayen eilanden" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Slowakije" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Somalië" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Suriname" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "Sao Tome en Principe" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Vroegere USSR" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Syrië" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Swaziland" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Turkse en Caicos-eilanden" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Tsjaad" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Franse Zuidelijke Territoriën" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Thailand" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Tadjikistan" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Oost-Timor" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Tunesië" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Turkije" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Trinidad en Tobago" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Tanzanië" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Oekraïne" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Oeganda" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Verenigd Koninkrijk" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "Verenigde Staten van Amerika" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Uruguay" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Oezbekistan" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Vaticaanstad" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "Sint-Vincent en de Grenadines" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Britse Maagdeneilanden" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "VS Maagdeneilanden" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Wallis and Futuna-eilanden" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Jemen" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Joegoslavië" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Zuid-Afrika" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Zambia" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Onbekend" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "Dialoogvenster openen" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "Verzend een bestand" + +#: src/common/xchat.c:728 +#, fuzzy +msgid "_User Info (WhoIs)" +msgstr "Gebruikersinfo (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +#, fuzzy +msgid "O_perator Actions" +msgstr "Operatoracties" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Ops geven" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Ops nemen" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Stem geven" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Stem nemen" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Wegschoppen/Verbannen" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Wegschoppen" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Verbannen" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "Wegschoppen/Verbannen" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Kanaal verlaten" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Kanaal openen..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Geef het te openen kanaal:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Server koppelingen" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Server pingen" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Versie verbergen" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Op" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "doei" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Geef reden voor wegschoppen %s:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Bestand verzenden" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Dialoog" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "Whois" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Verzenden" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Chatten" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Wissen" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "Kon niet connecteren op sessie-bus" + +#: src/common/dbus/dbus-client.c:86 +#, fuzzy +msgid "Failed to complete NameHasOwner" +msgstr "Commando vervolledigen mislukt" + +#: src/common/dbus/dbus-client.c:112 +#, fuzzy +msgid "Failed to complete Command" +msgstr "Commando vervolledigen mislukt" + +#: src/common/dbus/dbus-plugin.c:30 +#, fuzzy +msgid "remote access" +msgstr "xchat toegang op afstand" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "plugin voor toegang op afstand gebruikmakend van DBUS" + +#: src/common/dbus/dbus-plugin.c:897 +#, fuzzy, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Kon niet connecteren op sessie-bus: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Faalde bij het ophalen van %s: %s\n" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "Info (_A)" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Een multiplatform IRC-client" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Overzicht tekens" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "Niet verbonden." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Het is nodig om enkele verbanningen selecteren." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Masker" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "Van" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Datum" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" +"U kunt het Ban List venster enkel openen wanneer u zich in een kanaaltab " +"bevindt." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: verbanlijst (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Verwijderen" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Knippen" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Verversen" + +#: src/fe-gtk/chanlist.c:111 +#, fuzzy, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Gebruikers- en kanaalstatistieken: %d/%d Gebruikers op %d/%d Kanalen" + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Kies een bestandsnaam" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +#, fuzzy +msgid "_Join Channel" +msgstr "Kanaal binnengaan" + +#: src/fe-gtk/chanlist.c:633 +#, fuzzy +msgid "_Copy Channel Name" +msgstr "Kanaalsnaam" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: Kanaallijst (%s)" + +#: src/fe-gtk/chanlist.c:781 +#, fuzzy +msgid "_Search" +msgstr "XChat: Zoeken" + +#: src/fe-gtk/chanlist.c:787 +#, fuzzy +msgid "_Download List" +msgstr "Downloads" + +#: src/fe-gtk/chanlist.c:793 +#, fuzzy +msgid "Save _List..." +msgstr "_Server lijst..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "" + +#: src/fe-gtk/chanlist.c:818 +#, fuzzy +msgid "channels with" +msgstr "kanaal" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:843 +#, fuzzy +msgid "users." +msgstr "Gebruikers" + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "Kanaalnaam" + +#: src/fe-gtk/chanlist.c:882 +#, fuzzy +msgid "Search type:" +msgstr "Tekst zoeken..." + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:890 +#, fuzzy +msgid "Pattern Match (Wildcards)" +msgstr "Pattroon overeenkomst:" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Zoeken:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Bestand versturen naar %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Dat bestand is niet pauzeerbaar." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"Kan geen toegang krijgen tot bestand: %s\n" +"%s.\n" +"Pauzeren is niet mogelijk." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"Bestand in downloadmap is groter dan aangeboden bestand. Pauzeren is niet " +"mogelijk." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "Kan hetzelfde bestand van twee personen niet pauzeren." + +#: src/fe-gtk/dccgui.c:745 +#, fuzzy +msgid "XChat: Uploads and Downloads" +msgstr "XChat: uploads en downloads" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Status" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Bestand" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Beide" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Uploads" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "Downloads" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Details" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Bestand:" + +#: src/fe-gtk/dccgui.c:821 +#, fuzzy +msgid "Address:" +msgstr "Adres" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Afbreken" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Accepteren" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Doorgaan" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Open Map..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: DCC Chat lijst" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Recv" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Verzonden" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "Starttijd" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*NIEUW*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "BEWERK ME" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Naam" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Opdracht" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Naar boven" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Omlaag" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Annuleren" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Bewaar" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Nieuw toevoegen" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Verwijder" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Sorteren" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Hulp" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "Niet automatisch herverbinden met servers" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "Gebruik een andere configmap" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "Geen plugins auto-laden" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "Toon map voor plugin auto-load" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "Toon gebruikersconfiguratiemap" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Open een irc://server:poort/kanaal URL" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Opdracht uitvoeren:" + +#: src/fe-gtk/fe-gtk.c:132 +msgid "Open URL or execute command in an existing XChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +#, fuzzy +msgid "level" +msgstr "Nooit" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Versie-informatie weergeven" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"Openen lettertype mislukt:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "De zoekbuffer is leeg.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d bytes" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Netwerk zendwachtrij: %d bytes" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"De Opdracht uitvoeren actie voert de gegevens in Data 1 uit alsof die is " +"ingevoerd in het invoervak waar u de toetsencombinatie indrukte. Het kan dus " +"tekst (die zal worden verzonden naar het kanaal/de persoon), opdrachten of " +"gebruikersopdrachten bevatten. Als dit wordt uitgevoerd, worden alle \\n " +"tekens in Data 1 gebruikt om verschillende opdrachten te onderscheiden zodat " +"het mogelijk is om meerdere opdrachten uit te voeren. Als u een \\ in de " +"tekst wilt, gebruikt dan \\\\" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"De Pagina schakelen opdracht schakelt tussen pagina's. Stel Data 1 in op de " +"pagina waarnaar u wilt overschakelen. Als Data 2 ergens op is ingesteld, zal " +"de overschakeling relatief zijn ten opzichte van de huidige positie" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"De Invoegen in buffer opdracht zal de inhoud van Data 1 invoegen in de " +"ingang waar de toetsencombinatie was ingedrukt op de huidige aanwijzerpositie" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"De Pagina schuiven opdracht schuift de tekst in het tekstvak een pagina of " +"regel omhoog of omlaag. Stel Data 1 op Omhoog, Omlaag, +1 of -1." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"De Buffer instellen opdracht stelt de ingang waar de toetsencombinatie is " +"ingedrukt in op de inhoud van Data 1" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"De Laatste opdracht opdracht stelt de ingang in op de laatst ingevoerde " +"opdracht - hetzelfde als pijltje omhoog in een shell" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"De Volgende opdracht opdracht stelt de ingang in op de volgend ingevoerde " +"opdracht - hetzelfde als pijltje omlaag in een shell" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Deze opdracht wijzigt de tekst in de ingang zodat een incomplete bijnaam of " +"opdracht wordt voltooid. Als Data 1 is ingesteld, dan selecteert tweemaal " +"tab indrukken de laatste bijnaam, niet de volgende" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Deze opdracht schuift omhoog en omlaag in de lijst met bijnamen. Als Data 1 " +"ergens op is ingesteld, wordt er omhoog geschoven, anders omlaag." + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Deze opdracht vergelijkt het laatst ingevoerde woord ingevoerd in de ingang, " +"met de vervangingslijst, en vervangt als er een overeenkomst is" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Deze opdracht verplaatst het voorste tabblad een stap naar links" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Deze opdracht verplaatst het voorste tabblad een stap naar rechts" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Deze opdracht verplaatst de huidige tabblad-familie naar links" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Deze opdracht verplaatst de huidige tabblad-familie naar rechts" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "Invoerregel naar geschiedenis duwen maar niet naar server verzenden" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "" +"Er is een fout opgetreden bij het laden van de configuratie van de " +"toetsenbordkoppelingen" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<geen>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Mod" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Toets" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Actie" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: Sneltoetsen" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Verschuiven" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Data 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Data 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Fout bij openen toetsen config bestand\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Onbekende toetsnaam %s in toetsenverbindingen config bestand\n" +"Laden afgebroken, repareer a.u.b. %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Onbekende actie %s in toetsenverbindingen config bestand\n" +"Laden afgebroken, repareer a.u.b. %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Verwacht Data-regel (beginnend met Dx{:|!}) maar gekregen:\n" +"%s\n" +"\n" +"Laden afgebroken, repareer a.u.b. %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"Toetsenverbindingen config bestand is kapot, laden afgebroken\n" +"Repareer a.u.b. %s/keybindings.conf\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "Kan niet schrijven naar dat bestand." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Kan dat bestand niet lezen." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Dat masker bestaat al." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Prive" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Melding" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Uitnodigen" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Niet langer negeren" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Geef het te negeren masker:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: Negeerlijst" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Negeer stats:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Kanaal:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privé:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Melding:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Uitnodigen:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "Voeg toe..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "Naam van kanaal is te kort, probeer opnieuw." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: verbinding vervolledigd" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "Verbinding naar %s vervolledigd." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"Er is voor dit netwerk geen kanaal (chat room) om automatisch te vervoegen, " +"opgegeven in het Server-List venster." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "Wat wilt u vervolgens doen?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "_Niets, ik zal later een kanaal vervoegen." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "Kanaal vervoegen (_J):" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" +"Als u de naam van het kanaal dat u wilt vervoegen kent, geef het dan hier op." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "O_pen het Channel-List venster." + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "De Channel-List opvragen, kan één of twee minuten duren." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "_Altijd deze dialoog tonen na het verbinden." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Dialoog met" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Onderwerp van %s is: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Er is geen onderwerp ingesteld" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"Er zijn nog steeds %d kanalen of dialogen met deze server geassocieerd. Wilt " +"u ze allemaal sluiten?" + +#: src/fe-gtk/maingui.c:1283 +#, fuzzy +msgid "Quit XChat?" +msgstr "Over XChat" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1310 +#, fuzzy, c-format +msgid "You are connected to %i IRC networks." +msgstr "Auto-verbinden met dit netwerk bij opstarten" + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "" + +#: src/fe-gtk/maingui.c:1314 +#, fuzzy +msgid "Some file transfers are still active." +msgstr "Sommige bestandoverdrachten zijn nog actief, toch programma afsluiten?" + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Attribuut- of kleurcode invoegen" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Vet</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Onderstreept</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Normaal" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Kleuren 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Kleuren 8-15" + +#: src/fe-gtk/maingui.c:1612 +#, fuzzy +msgid "_Settings" +msgstr "Inst_ellingen" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "Binnengaan/verlaten berichten verbergen" + +#: src/fe-gtk/maingui.c:1625 +#, fuzzy +msgid "_Extra Alerts" +msgstr "Extra functies" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "Pieptoon bij bericht" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +#, fuzzy +msgid "_Detach" +msgstr "Tabbla_d losmaken" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "Sluiten (_C)" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "Gebruikersgrens moet een getal zijn!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Onderwerp bescherming" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Geen berichten van buiten" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Geheim" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Alleen-uitnodigen" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Gemodereerd" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Banlijst" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Sleutelwoord" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Gebruikerslimiet" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Laat de gebruikerslijst wel/niet zien" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"Kan transparante achtergrond niet instellen!\n" +"\n" +"Mogelijk gebruikt u een niet-overeenstemmende\n" +"vensterbeheerder die nu niet wordt ondersteund.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Nieuwe bijnaam invullen" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Host onbekend" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Echte naam:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Gebruiker:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "Land:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Server:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "%u minuten geleden" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Laatste bericht:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Afwezigheidsboodschap:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"De Menubar is nu verborgen. U kunt die opnieuw laten zien door op F9 te " +"drukken of door rechts te klikken in een blanco deel van het tekstgebied." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Open Link in Browser" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Geselecteerde URL kopiëren" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Kanaal binnengaan" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Kanaal verlaten" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Kanaal ronddraaien" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: Gebruikersmenu" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Dit menu bewerken..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Haal kanaallijst af..." + +#: src/fe-gtk/menu.c:1348 +#, fuzzy +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Gebruikersopdrachten - Speciale codes:\n" +"\n" +"%c = huidige kanaal\n" +"%m = machine info\n" +"%n = uw bijnaam\n" +"%t = tijd/datum\n" +"%v = xchat versie\n" +"%2 = woord 2\n" +"%3 = woord 3\n" +"&2 = woord 2 tot einde regel\n" +"&3 = woord 3 tot einde regel\n" +"\n" +"bijv.:\n" +"/cmd jan hallo\n" +"\n" +"%2 zou zijn \"jan\"\n" +"&2 zou zijn \"jan hallo\"." + +#: src/fe-gtk/menu.c:1364 +#, fuzzy +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Gebruikerslijst knoppen - Speciale codes:\n" +"\n" +"%a = alle geselecteerde bijnamen\n" +"%c = huidige kanaal\n" +"%h = hostnaam geselecteerde bijnaam\n" +"%m = machine info\n" +"%n = uw bijnaam\n" +"%s = geselecteerde bijnaam\n" +"%t = tijd/datum\n" + +#: src/fe-gtk/menu.c:1374 +#, fuzzy +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Dialoogknoppen - Speciale codes:\n" +"\n" +"%a = alle geselecteerde bijnamen\n" +"%c = huidige kanaal\n" +"%h = hostnaam geselecteerde bijnaam\n" +"%m = machine info\n" +"%n = uw bijnaam\n" +"%s = geselecteerde bijnaam\n" +"%t = tijd/datum\n" + +#: src/fe-gtk/menu.c:1384 +#, fuzzy +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"CTCP antwoorden - Speciale codes:\n" +"\n" +"%d = gegevens (de gehele ctcp)\n" +"%m = machine info\n" +"%s = bijnaam die u de ctcp heeft gezonden\n" +"%t = tijd/datum\n" +"%2 = woord 2\n" +"%3 = woord 3\n" +"&2 = woord 2 tot einde regel\n" +"&3 = woord 3 tot einde regel\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"URL helpers - Speciale codes:\n" +"\n" +"%s = de URL-tekst\n" +"\n" +"Een ! zetten voor de opdracht\n" +"geeft aan dat deze naar een shell\n" +"i.p.v. naar XChat moet worden\n" +"gestuurd" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: Door gebruiker gedefinieerde opdrachten" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat Gebruikerslijst Popup menu" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Vervang met" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: Vervangen" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: URL Programma's" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: Gebruikerslijst Knoppen" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: Dialoogknoppen" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: CTCP Antwoorden" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "Netwerklij_st..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "_Nieuw" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Server tabblad..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Kanaal tabblad..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Server venster..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Kanaal venster..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "Plugin of script _laden..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "Afsluiten (_Q)" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "Beeld (_V)" + +#: src/fe-gtk/menu.c:1591 +#, fuzzy +msgid "_Menu Bar" +msgstr "_Menubalk" + +#: src/fe-gtk/menu.c:1592 +#, fuzzy +msgid "_Topic Bar" +msgstr "Onderwerpbalk (_T)" + +#: src/fe-gtk/menu.c:1593 +#, fuzzy +msgid "_User List" +msgstr "Gebruikers Lijst" + +#: src/fe-gtk/menu.c:1594 +#, fuzzy +msgid "U_serlist Buttons" +msgstr "Gebr_uikerslijst Knoppen..." + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "M_odus knoppen" + +#: src/fe-gtk/menu.c:1597 +#, fuzzy +msgid "_Channel Switcher" +msgstr "Kanaallijst..." + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "_Tabs" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "Boom (_r)" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "_Netwerkinstellingen" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Offline" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Grafiek" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "_Server" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "Verbin_ding verbreken" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "Opnieuw ve_rbinden" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "Kanaal openen..." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "Kanaal openen..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Als weg markeren" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "Gebr_uikersmenu" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "Inst_ellingen" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "Voorkeuren (_P)" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Uitgebreid" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Auto vervangen..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "CTCP Antwoorden..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Dialoogknoppen..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Sneltoetsen..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Tekst gebeurtenissen..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "URL Programma's..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Gebruikerscommando's..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Gebruikerslijst Knoppen..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Gebruikerslijst Popup menu..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "Venster (_W)" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Verbanlijst..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Speciale tekens..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Direct chat..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Bestandsoverdrachten..." + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "Verbanlijst..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Negeerlijst..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Plugins en scripts..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Ruw log..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "URL grijper..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Markeringslijn opnieuw instellen" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "Tekst wissen (_l)" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Tekst zoeken..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Tekst opslaan..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_Hulp" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "Inhoud (_C)" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "Info (_A)" + +#: src/fe-gtk/menu.c:2147 +#, fuzzy +msgid "_Attach" +msgstr "Tabblad vastmaken" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Laatst gezien" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Offline" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Nooit" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, fuzzy, c-format +msgid "%d minutes ago" +msgstr "%u minuten geleden" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Online" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Geef bijnaam om toe te voegen:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "XChat: Lijst uitgaande bestanden" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "Dialoogvenster openen" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:591 +#, fuzzy +msgid "_Hide" +msgstr "Verborgen" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +#, fuzzy +msgid "Channel Message" +msgstr "Kanaalsnaam" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +#, fuzzy +msgid "Private Message" +msgstr "Pieptoon bij Prive Berichten" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +#, fuzzy +msgid "Highlighted Message" +msgstr "Pieptoon bij opgelichte berichten" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "Weg" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Versie" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Omschrijving" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Kies een Plugin of Script om te laden" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: Plugins en scripts" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "_Laden..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "Ontladen (_U)" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Opslaan Als..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: Ruw log (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Ruw log wissen" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "Het venster waarvoor dit venster geopend was bestaat niet meer." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "Zoekopdracht heeft einde bereikt, niet gevonden." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: Zoeken" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "Hoofdlettergevoelig (_M)" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "Achterwaarts zoeken (_b)" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "Zoek (_F)" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Nieuw Netwerk" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Zeker het netwerk \"%s\" en al zijn servers verwijderen?" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "kanaal" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: Kanaallijst (%s)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "Wachtwoord:" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "B_ewerken" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "Gebruikersnaam en echte naam mogen niet blanco gelaten worden." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: %s bewerken" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Servers voor %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Verbind enkel met geselecteerde server" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Niet alle servers afgaan wanneer verbinden mislukt." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Uw details" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Algemene gebruikersinfo gebruiken" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "Bij_naam:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Tweede keuze:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "Gebr_uikersnaam:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "Echte naam (_l):" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Bezig met verbinden" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Auto-verbinden met dit netwerk bij opstarten" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "Een Proxy Server gebruiken" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "SSL gebruiken voor alle servers op dit netwerk" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Onjuist SSL certificaat accepteren" + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "Kanaal verlaten:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "Kanalen om binnen te gaan, gescheiden door komma's, maar geen spaties!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Verbindopdracht:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Extra uit te voeren opdracht na verbinden. Als u er meerdere nodig heeft, " +"kunt u dit instellen op LOAD -e <bestandsnaam>, waar <bestandsnaam> een " +"tekstbestand is met de uit te voeren opdrachten." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Bijnaamserver wachtwoord:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Als uw bijnaam een wachtwoord vereist, geef het dan hier in. Niet alle IRC-" +"netwerken ondersteuenen dit." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Serverwachtwoord:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Wachtwoord voor de server. Bij twijfel leeglaten." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Tekenset:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: Netwerklijst" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Gebruikersinformatie" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Derde keuze:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Netwerken" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "Netwerklijst overslaan bij opstarten" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "B_ewerken..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "_Sorteren" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "Verbinden (_o)" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Tekstvak uiterlijk" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Lettertype:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Achtergrond Afbeelding:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Terugschuif regels:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Gekleurde bijnamen" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Elke persoon op IRC een andere kleur geven" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Bijnamen inspringen" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Bijnamen rechts uitlijnen" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Achtergrond doozichtig" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Markeringslijn weergeven" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Rode lijn invoegen na laatste gelezen tekst." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Instellingen transparantheid" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Rood:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Groen:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Blauw:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Tijdsstempels" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Tijdsstempels aan zetten" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Tijdstampformaat:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Zie strftime handboekpagina voor details." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Invoervak" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Tekstvak lettertype en kleuren gebruiken" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "spelling checken" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Bijnaam-afmaken" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "Automatische Bijnaamaanvulling (zonder TAB-toets)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Nicknaam-aanvullen achtervoegsel:" + +#: src/fe-gtk/setup.c:147 +#, fuzzy +msgid "Nick completion sorted:" +msgstr "Nicknaam-aanvullen achtervoegsel:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Invoervak codes" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Interpreteer %nnn als een ASCII waarde" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "%C, %B als kleur, vet etc. interpreteren" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, Ops eerst" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, Ops als laatste" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Ongesorteerd" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Bovenkant" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Onderkant" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Verborgen" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Gebruikers Lijst" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Hostnamen in gebruikerslijst weergeven" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Gebruikerslijst gesorteerd op:" + +#: src/fe-gtk/setup.c:205 +#, fuzzy +msgid "Show user list at:" +msgstr "Laat de gebruikerslijst wel/niet zien" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Afwezigheidsbijhouding" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "" +"Houdt de Away-status van gebruikers bij en markeer ze in een andere kleur" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "Bij kanalen kleiner dan:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Activeren met dubbel-klikken" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Vensters" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Tabs" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Altijd" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Alleen gevraagde tabbladen" + +#: src/fe-gtk/setup.c:242 +#, fuzzy +msgid "Tree" +msgstr "Boom (_r)" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Extra tabblad openen voor serverberichten" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Extra tabblad openen voor servermeldingen" + +#: src/fe-gtk/setup.c:252 +#, fuzzy +msgid "Open a new tab when you receive a private message" +msgstr "Extra tabblad openen voor serverberichten" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Tabbladen alfabetisch ordenen" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "Kleine tabbladen" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Nieuwe tabbladen focusseren:" + +#: src/fe-gtk/setup.c:258 +#, fuzzy +msgid "Show channel switcher at:" +msgstr "Bij kanalen kleiner dan:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Tabbladlabels verkorten tot:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "letters." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Tabbladen of Vensters" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Open kanalen in:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Open dialoog vensters in:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Gereedschappen openen in:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "DCC, Negeren, berichten openen in tabbladen of vensters?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "Nee" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Ja" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "Blader elke keer voor bewaarmap" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Bestanden en mappen" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Auto accepteren bestandsaanbiedingen:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Gedownloade bestanden opslaan in:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Volledig gedownloade bestanden verplaatsen naar:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Bijnaam opslaan in bestandsnamen" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Netwerkinstellingen" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Mijn adres van de IRC server halen" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"De IRC-server om uw echte adres vragen. Gebruik dit als u een 192.168.*.* " +"adres heeft!" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "DCC IP Adres:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Doe alsof u op dit adres bent bij het aanbieden van bestanden." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Eerste DCC verstuurpoort:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Laatste DCC verstuurpoort:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!Poorten op nul laten voor volledig bereik." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Maximale bestandsoverdrachtssnelheid (bytes/s)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Eén upload:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Maximumsnelheid voor één overdracht" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Eén download:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Alle uploads samen:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Maximumsnelheid voor alle bestanden" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Alle downloads samen:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Waarschuwingen" + +#: src/fe-gtk/setup.c:333 +#, fuzzy +msgid "Show tray balloons on:" +msgstr "Tabs laten zien op:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:339 +#, fuzzy +msgid "Enable system tray icon" +msgstr "Weg-bijhouden aan zetten" + +#: src/fe-gtk/setup.c:341 +#, fuzzy +msgid "Highlighted Messages" +msgstr "Pieptoon bij opgelichte berichten" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:344 +#, fuzzy +msgid "Extra words to highlight:" +msgstr "Extra Woorden om op te lichten:" + +#: src/fe-gtk/setup.c:345 +#, fuzzy +msgid "Nick names not to highlight:" +msgstr "Niet op te lichten bijnamen:" + +#: src/fe-gtk/setup.c:346 +#, fuzzy +msgid "Nick names to always highlight:" +msgstr "Niet op te lichten bijnamen:" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Plaats komma's tussen de woorden." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Standaardberichten" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Afsluiten:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Kanaal verlaten:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Weg:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Weg" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Weg-berichten aankondigen" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Uw weg-berichten aankondigen bij alle kanalen" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Laat 'away' slechts een keer" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Identieke afwezigheidsberichten slechts eenmaal laten zien" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Automatisch afwezig de-markeren" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Uzelf niet meer als afwezig markeren alvorens berichten te verzenden" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Uitgebreide instellingen" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Vertraging bij auto-herverbinden:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "MODEs weergeven in ruwe vorm" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Whois bij waarschuwen" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "Een /WHOIS verzenden als een gebruiker uit uw lijst online komt" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Binnengaan/verlaten berichten verbergen" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Standaard kanaal binnengaan/verlaten berichten verbergen" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "DCC-vensters auto-openen" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Verzendvenster" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Ontvangstvenster" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Chatvenster" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Loggen" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "Loggen van gesprekken aanzetten" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Logbestandsnaam:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Server %c=Kanaal %n=Netwerk." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Tijdsstempels in logs invoegen" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Log tijdsstempel formaat:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Uitgezet)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Alle verbindingen" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "Enkel IRC Server" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "DCC Get Only" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Uw adres" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Verbinden met:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "Alleen bruikbaar voor computers met meerdere adressen." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Proxy-server" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Hostnaam:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Poort:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Soort" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Een Proxy Server gebruiken voor:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Proxy-authenticatie" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Gebruik authenticatie (enkel MS Proxy, HTTP of Socks5)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Gebruik authenticatie (enkel HTTP of Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Gebruikersnaam:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Wachtwoord:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Selecteer een afbeeldingsbestand" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "Kies downloadmap" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Kies een Lettertype" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Bladeren..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Geïdentificeerde gebruikers markeren met:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Niet-geïdentificeerde gebruikers markeren met:" + +#: src/fe-gtk/setup.c:1161 +#, fuzzy +msgid "Open Data Folder" +msgstr "Open Map..." + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Kies een kleur" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Tekstkleuren" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "mIRC kleuren:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Lokale kleuren:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Voorgrond:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Achtergrond:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Markeringstekst" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Interfacekleuren" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Nieuwe gegevens:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Markeringslijn:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Nieuw bericht:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Gebruiker weg:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Oplichting:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Gebeurtenis" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Geluidsbestand" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Kies een geluidsnaam" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Geluidsafspeelmethode:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "Extern geluidsafspeel_programma:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "_Extern programma" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_Automatisch" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "Geluidsbestan_den map:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Geluidsbestand:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "_Bladeren..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "Afs_pelen" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Uiterlijk" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Tekstvak" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Gebruikerslijst" + +#: src/fe-gtk/setup.c:1703 +#, fuzzy +msgid "Channel switcher" +msgstr "Kanaallijst..." + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Kleuren" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Chatten" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Algemeen" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Geluid" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Netwerkinstellingen" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Bestandsoverdrachten" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Categorieën" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" +"Sommige instellingen die zijn veranderd worden pas actief na het opnieuw " +"starten." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*WAARSCHUWING*\n" +"Auto accepteren van DCC naar uw persoonlijke\n" +"map is gevaarlijk en er kan misbruik van worden\n" +"gemaakt.\n" +"Iemand kan u bijvoorbeeld een .bash_profile\n" +"bestand opsturen." + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: Voorkeuren" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Er is een fout opgetreden bij het parsen van de string" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Dit signaal is slechts %d argumenten gegeven, $%d is onjuist" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Tekstbestand afdrukken" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Gebeurtenissen bewerken" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ Getal" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Laden vanaf..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Allemaal Testen" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: URL Grijper" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Lijst wissen" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Geselecteerde URL kopiëren" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Kopiëren" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Lijst opslaan naar een bestand" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d ops, %d totaal" + +#~ msgid "%C18*$t$1%O $2" +#~ msgstr "%C18*$t$1%O $2" + +#~ msgid "%C21*%O$t%C21%B$1%O%C21 $2" +#~ msgstr "%C21*%O$t%C21%B$1%O%C21 $2" + +#~ msgid "%C18%H<%H$4$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$4$1%H>%H%O$t$2" + +#~ msgid "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" +#~ msgstr "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" + +#~ msgid "%C28-%C29$1/$2%C28-%O$t$3" +#~ msgstr "%C28-%C29$1/$2%C28-%O$t$3" + +#~ msgid "$1$t$2" +#~ msgstr "$1$t$2" + +#~ msgid "%C19>%O$1%C19<%O$t$2" +#~ msgstr "%C19>%O$1%C19<%O$t$2" + +#~ msgid "%C16*%O$t$1%O" +#~ msgstr "%C16*%O$t$1%O" + +#~ msgid "%C28-%C29$1%C28-%O$t$2" +#~ msgstr "%C28-%C29$1%C28-%O$t$2" + +#~ msgid "%C28*%C29$3$1%C28*$t%O$2" +#~ msgstr "%C28*%C29$3$1%C28*$t%O$2" + +#~ msgid "%C18%H<%H$3$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$3$1%H>%H%O$t$2" + +#~ msgid "%C22*%O$t$1" +#~ msgstr "%C22*%O$t$1" + +#~ msgid "%C31%H<%H$4$1%H>%H%O%C30$t$2" +#~ msgstr "%C31%H<%H$4$1%H>%H%O%C30$t$2" + +#~ msgid "PID" +#~ msgstr "PID" + +#~ msgid "US Minor Outlying Islands" +#~ msgstr "VS kleine afgelegen eilanden" + +#~ msgid "Direct client-to-client" +#~ msgstr "Direct tussen personen" + +#~ msgid "Send File" +#~ msgstr "Bestand verzenden" + +#~ msgid "Offer Chat" +#~ msgstr "Chat aanbieden" + +#~ msgid "Abort Chat" +#~ msgstr "Chat afbreken" + +#~ msgid "Userinfo" +#~ msgstr "Gebruikersinfo" + +#~ msgid "Clientinfo" +#~ msgstr "Programma-info" + +#~ msgid "Time" +#~ msgstr "Tijd" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "Oper" + +#~ msgid "Kill this user" +#~ msgstr "Deze gebruiker doden" + +#~ msgid "Mode" +#~ msgstr "Modus" + +#~ msgid "Give Half-Ops" +#~ msgstr "Half-Ops geven" + +#~ msgid "Take Half-Ops" +#~ msgstr "Half-Ops nemen" + +#~ msgid "Ignore" +#~ msgstr "Negeren" + +#~ msgid "Ignore User" +#~ msgstr "Gebruiker negeren" + +#~ msgid "UnIgnore User" +#~ msgstr "Niet langer negeren" + +#~ msgid "Info" +#~ msgstr "Informatie" + +#~ msgid "Who" +#~ msgstr "Wie" + +#~ msgid "DNS Lookup" +#~ msgstr "DNS opzoeken" + +#~ msgid "Trace" +#~ msgstr "Traceren" + +#~ msgid "UserHost" +#~ msgstr "GebruikerHost" + +#~ msgid "External" +#~ msgstr "Extern" + +#~ msgid "Traceroute" +#~ msgstr "Traceroute" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "Unban" +#~ msgstr "Verbanning ongedaan maken" + +#~ msgid "I can't save an empty list!" +#~ msgstr "Kan geen lege lijst opslaan!" + +#~ msgid "List display options:" +#~ msgstr "Lijstweergave opties:" + +#~ msgid "Minimum Users:" +#~ msgstr "Minimaal aantal gebruikers: " + +#~ msgid "Maximum Users:" +#~ msgstr "Maximum aantal gebruikers: " + +#~ msgid "Regex Match:" +#~ msgstr "Regex overeenkomst:" + +#~ msgid "Apply Match to:" +#~ msgstr "Overeenkomst toepassen op:" + +#~ msgid "Apply" +#~ msgstr "Toepassen" + +#~ msgid "Refresh the list" +#~ msgstr "De lijst vernieuwen" + +#~ msgid "Save the list" +#~ msgstr "De lijst bewaren" + +#~ msgid "None" +#~ msgstr "Geen" + +#~ msgid "To" +#~ msgstr "Naar" + +#~ msgid "Started" +#~ msgstr "Gestart" + +#~ msgid "Speed limit" +#~ msgstr "Snelheidslimiet" + +#~ msgid "XChat: File Receive List" +#~ msgstr "XChat: Lijst binnenkomende bestanden" + +#~ msgid "Open" +#~ msgstr "Openen" + +#~ msgid "Ack" +#~ msgstr "Ack" + +#~ msgid "To/From" +#~ msgstr "Aan/Van" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "Geen andere tabbladen open, programma afsluiten?" + +#~ msgid "Show join/part messages" +#~ msgstr "Bericht binnengaan/verlaten weergeven" + +#~ msgid "Color paste" +#~ msgstr "Plakken met kleur" + +#~ msgid "Go to" +#~ msgstr "Ga naar" + +#~ msgid "_Close Tab" +#~ msgstr "Tabblad sluiten (_C)" + +#~ msgid "_Layout" +#~ msgstr "_Layout" + +#~ msgid "Notify List..." +#~ msgstr "Waarschuwingslijst..." + +#~ msgid "_Attach Window" +#~ msgstr "Venster _aanhechten" + +#~ msgid "_Close Window" +#~ msgstr "Venster sluiten (_C)" + +#~ msgid "User" +#~ msgstr "Gebruiker" + +#~ msgid "Server" +#~ msgstr "Server" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: Waarschuwingsvenster" + +#~ msgid "C_hannels to join:" +#~ msgstr "Kanalen om binnen te gaan (_h):" + +#~ msgid "Resizable user list" +#~ msgstr "Schaalbare gebruikerslijst" + +#~ msgid "Left" +#~ msgstr "Links" + +#~ msgid "Right" +#~ msgstr "Rechts" + +#~ msgid "Tabs Location" +#~ msgstr "Tabbladen positie" + +#~ msgid "(Can be a text file relative to ~/.xchat2/)." +#~ msgstr "(Kan een tekstbestand zijn relatief tot ~/.xchat2/)." + +#~ msgid "(Can be a text file relative to config dir)." +#~ msgstr "(Kan een tekstbestand zijn relatief tot config map)." + +#~ msgid "Flash taskbar on highlighted messages" +#~ msgstr "Taakbalk laten flitsen bij opgelichte berichten" + +#~ msgid "Beep on channel messages" +#~ msgstr "Pieptoon bij Kanaalberichten" + +#~ msgid "Open an irc:// url" +#~ msgstr "Open een irc:// url" + +#~ msgid "irc://server:port/channel" +#~ msgstr "irc://server:poort/kanaal" + +#~ msgid "Execute a xchat command" +#~ msgstr "Voer een xchat-opdracht uit" + +#~ msgid "\"Command to execute\"" +#~ msgstr "\"Uit te voeren commando\"" + +#~ msgid "Prints some text to the current tab/window" +#~ msgstr "Print tekst naar de huidige tab/venster" + +#~ msgid "\"Text to print\"" +#~ msgstr "\"Af te drukken tekst\"" + +#~ msgid "Change the context to the channel" +#~ msgstr "Wijzig de context naar het kanaal" + +#~ msgid "Change the context to the server" +#~ msgstr "Wijzig de context naar de server" + +#~ msgid "server" +#~ msgstr "server" + +#~ msgid "Get some informations from xchat" +#~ msgstr "Verkrijg informatie van xchat" + +#~ msgid "id" +#~ msgstr "id" + +#~ msgid "Get settings from xchat" +#~ msgstr "Verkrijg instellingen van xchat" + +#~ msgid "name" +#~ msgstr "naam" + +#~ msgid "" +#~ "xchat-remote: %s\n" +#~ "Try `xchat-remote --help' for more information\n" +#~ msgstr "" +#~ "xchat-remote: %s\n" +#~ "Probeer `xchat-remote --help' voor meer informatie\n" + +#~ msgid "Failed to complete SetContext" +#~ msgstr "SetContext vervolledigen mislukt" + +#~ msgid "Failed to complete print" +#~ msgstr "Vervolledigen afdruk mislukt" + +#~ msgid "Failed to complete GetInfo" +#~ msgstr "Vervolledigen GetInfo mislukt" + +#~ msgid "Failed to complete GetPrefs" +#~ msgstr "Vervolledigen GetPrefs mislukt" + +#~ msgid "%s doesn't exist\n" +#~ msgstr "%s bestaat niet\n" + +#~ msgid "%s loaded successfully!\n" +#~ msgstr "%s succesvol geladen!\n" + +#~ msgid "France, Metropolitan" +#~ msgstr "Frankrijk, metropool" + +#~ msgid "Neutral Zone" +#~ msgstr "Neutrale zone" + +#~ msgid "Settings saved." +#~ msgstr "Instellingen bewaard." + +#~ msgid "Save rawlog" +#~ msgstr "Het ruwe logbestand opslaan" + +#~ msgid "Save rawlog..." +#~ msgstr "Ruw log opslaan..." + +#~ msgid "XChat: Server List" +#~ msgstr "XChat: Server lijst" + +#~ msgid "Completes nick names without using the TAB key" +#~ msgstr "Bijnamen afmaken zonder TAB-toets te gebruiken" + +#~ msgid "Input Box Appearance" +#~ msgstr "Invoervak uiterlijk" + +#~ msgid "Convert spaces to underscore before sending" +#~ msgstr "Spaties omzetten naar onderstrepingen voor zenden" + +#~ msgid "(See strftime manpage for details)." +#~ msgstr "(Lees voor verdere informatie de strftime manpage)." + +#~ msgid "From:" +#~ msgstr "Van:" + +#~ msgid "To:" +#~ msgstr "Naar:" + +#~ msgid "Size:" +#~ msgstr "Grootte:" + +#~ msgid "MIME Type" +#~ msgstr "MIME type" + +#~ msgid "Close" +#~ msgstr "Sluiten" + +#~ msgid " : %s\n" +#~ msgstr " : %s\n" + +#~ msgid "DIRECTORY" +#~ msgstr "MAP" + +#~ msgid "Close this tab/window" +#~ msgstr "Dit tabblad/venster sluiten" + +#~ msgid "User List Buttons" +#~ msgstr "Gebruikerslijst knoppen" + +#~ msgid "New Shell Tab..." +#~ msgstr "Nieuw Shell Venster..." + +#~ msgid "_IRC" +#~ msgstr "_IRC" + +#~ msgid "Invisible" +#~ msgstr "Onzichtbaar" + +#~ msgid "Receive Wallops" +#~ msgstr "Wallops Ontvangen" + +#~ msgid "Receive Server Notices" +#~ msgstr "Ontvang server meldingen" + +#~ msgid "Auto Rejoin when Kicked" +#~ msgstr "Terug naar kanaal na wegtrappen" + +#~ msgid "Never-give-up ReConnect" +#~ msgstr "Stop nooit met reconnecten" + +#~ msgid "Auto Open Dialog Windows" +#~ msgstr "Open dialoog vensters automatisch" + +#~ msgid "Auto Accept Direct Chat" +#~ msgstr "Auto accepteren direct chat" + +#~ msgid "Reload Settings" +#~ msgstr "Opnieuw laden Instellingen" + +#~ msgid "Save Settings now" +#~ msgstr "Instellingen nu opslaan" + +#~ msgid "File Receive..." +#~ msgstr "Binnenkomende bestand..." + +#~ msgid "File Send..." +#~ msgstr "Uitgaande bestanden..." + +#~ msgid "Connect in new tab" +#~ msgstr "In nieuw tabblad verbinden" + +#~ msgid "Tint (shade) transparency" +#~ msgstr "Tint (nuance) transparantie" + +#~ msgid "Strip mIRC colors" +#~ msgstr "mIRC kleuren verwijderen" + +#~ msgid "Info text" +#~ msgstr "Informatietekst" + +#~ msgid "User list buttons enabled" +#~ msgstr "Gebruikerslijst knoppen aan" + +#~ msgid "Lag meter:" +#~ msgstr "Vertragingsmeter" + +#~ msgid "Throttle meter:" +#~ msgstr "Niveau meter:" + +#~ msgid "(disabled)" +#~ msgstr "(uitgezet)" + +#~ msgid "A star (*)" +#~ msgstr "Een ster (*)" + +#~ msgid "A red star (*)" +#~ msgstr "Een rode ster (*)" + +#~ msgid "%C19>%O$1%C19<%O$t$2%O" +#~ msgstr "%C19>%O$1%C19<%O$t$2%O" + +#~ msgid "Servername" +#~ msgstr "Servernaam:" + +#~ msgid "" +#~ " File: %s\n" +#~ " To/From: %s\n" +#~ " Size: %u\n" +#~ " Port: %d\n" +#~ " IP Number: %s\n" +#~ "Start Time: %s Max CPS: %d\n" +#~ msgstr "" +#~ " Bestand: %s\n" +#~ " Aan/Van: %s\n" +#~ " Grootte: %u\n" +#~ " Poort: %d\n" +#~ " IP adres: %s\n" +#~ "Starttijd: %s Max CPS: %d\n" + +#~ msgid "Add new" +#~ msgstr "Nieuw toevoegen" + +#~ msgid "User: %s" +#~ msgstr "Gebruiker: %s" + +#~ msgid "Realname: %s" +#~ msgstr "Echte naam: %s" + +#~ msgid "Server: %s" +#~ msgstr "Server= %s" + +#~ msgid "Real na_me:" +#~ msgstr "_Echte Naam:" + +#~ msgid "Select a file to save to" +#~ msgstr "Kies een bestand om in op te slaan" + +#~ msgid "%C22*%O$t%C28[%O$1%C28] %O$2" +#~ msgstr "%C22*%O$t%C28[%O$1%C28] %O$2" + +#~ msgid "Former Czechoslovakia" +#~ msgstr "Vroegere Tsjechoslowakije" + +#~ msgid "Zaire" +#~ msgstr "Zaïre" diff --git a/etc/wyatt8740/po/pa.po b/etc/wyatt8740/po/pa.po new file mode 100644 index 0000000..970ac7f --- /dev/null +++ b/etc/wyatt8740/po/pa.po @@ -0,0 +1,5646 @@ +# translation of xchat-2.8.6.po to Punjabi +# translation of xchat-2.4.2.po to Punjabi +# This file is put in the public domain. +# +# Amanpreet Singh Alam <amanpreetalam@yahoo.com>, 2005. +# A S Alam <aalam@users.sf.net>, 2009. +msgid "" +msgstr "" +"Project-Id-Version: xchat-2.8.6\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2009-04-01 21:38+0000\n" +"Last-Translator: A S Alam <aalam@users.sf.net>\n" +"Language-Team: Punjabi <punjabi-l10n@lists.sourceforge.net>\n" +"Language: pa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.3\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "~/.xchat2 ਬਣਾ ਨਹੀਂ ਸਕਿਆ" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "ਮੈਂ ਰੁੱਝਿਆ ਹਾਂ" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "ਹਟ ਪਿੱਛੇ ਫੇਰ ਮਿਲਾਗੇਂ" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* IRC ਨੂੰ ਰੂਟ ਦੇ ਤੌਰ ਤੇ ਚਲਾਉਣਾ ਮੂਰਖਤਾ ਹੈ! ਤੁਹਾਨੂੰ ਇੱਕ\n" +" ਯੂਜ਼ਰ ਅਕਾਊਂਟ ਬਣਾਉਣਾ ਚਾਹੀਦਾ ਹੈ ਅਤੇ ਮੁੜ ਕੋਸ਼ਿਸ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ।\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "ਉਡੀਕ ਜਾਰੀ ਹੈ" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "ਐਕਟਿਵ" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "ਅਸਫਲ" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "ਸਮਾਪਤ" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "ਕੁਨੈਕਟ" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "ਛੱਡਿਆ" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "%s ਨੂੰ ਖੋਲ੍ਹਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ ਹੈ\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "ਗਲਤੀ" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s \"%s\" ਭੇਜ ਰਿਹਾ ਹੈ। ਕੀ ਤੁਸੀਂ ਮਨਜ਼ੂਰ ਕਰਦੇ ਹੋ?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "ਕੋਈ ਸਰਗਰਮ DCCs ਨਹੀਂ\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "ਹਾਂ " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "ਨਹੀਂ " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "ਤੁਹਾਨੂੰ %s ਤੋਂ CTCP ਹੜ੍ਹ ਨਾਲ ਭਰਨ ਦੀ ਕੋਸ਼ਿਸ, %s ਅਣਡਿੱਠਾ\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "ਤੁਹਾਨੂੰ %s ਤੋਂ MSG ਸੁਨੇਹੇ ਹਮਲੇ ਦਾ ਡਰ ਹੈ, gui_auto_open_dialog ਬੰਦ ਕੀਤਾ ਜਾਦਾ ਹੈ।\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s ਮੌਕੇ ਤੇ ਹੈ\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s ਮੌਕੇ ਤੇ ਨਹੀਂ ਹੈ\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "ਕੋਈ ਚੈਨਲ ਵਿੱਚ ਸ਼ਾਮਿਲ ਨਹੀਂ, ਕੋਸ਼ਿਸ ਕਰੋ /join #<channel>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "ਕੁਨੈਕਟ ਨਹੀਂ ਹੈ, ਕੋਸ਼ਿਸ ਕਰੋ /server <host> [<port>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "ਹਮੇਸ਼ਾ ਦੂਰ ਨਿਸ਼ਾਨਬੱਧ ਕਰੋ: %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "ਮੈਨੂੰ ਚੱਲਣ ਲਈ /bin/sh ਚਾਹੀਦੀ ਹੈ!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "ਉਪਲੱਬਧ ਕਮਾਂਡਾਂ:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "ਯੂਜ਼ਰ ਰਾਹੀਂ ਪ੍ਰਭਾਸ਼ਿਤ ਕਮਾਂਡਾਂ:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "" +"ਪਲੱਗਇਨ ਰਾਹੀਂ ਪ੍ਰਭਾਸ਼ਿਤ ਕਮਾਂਡਾਂ:\n" +"\n" +" " + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਲਈ ਲਿਖੋ /HELP <command> , ਜਾਂ /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "ਅਣਜਾਣ ਆਰਗੂਮੈਂਟ '%s' ਅਣਡਿੱਠਾ ਕੀਤਾ।" + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "ਇਸ ਤਰ੍ਹਾਂ ਦੀ ਕੋਈ ਪਲੱਗਇਨ ਨਹੀਂ ਹੈ।\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "ਇਹ ਪਲੱਗਇਨ ਅਨਲੋਡ ਨਹੀਂ ਹੋ ਸਕਦੀ।\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <name> <action>, ਯੂਜ਼ਰ ਲਿਸਟ ਹੇਠ ਬਟਨ ਸ਼ਾਮਿਲ ਕਰੋ" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <cmd>, ਉਹਨਾਂ ਸਭ ਚੈਨਲਾਂ ਨੂੰ ਕਮਾਂਡ ਭੇਜੋ, ਜਿੱਥੇ ਤੁਸੀਂ ਹੋ" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHANL <cmd>, ਉਹਨਾਂ ਸਭ ਚੈਨਲਾਂ ਨੂੰ ਕਮਾਂਡ ਭੇਜੋ, ਜਿੱਥੇ ਤੁਸੀਂ ਹੋ" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <cmd>, ਉਹਨਾਂ ਸਭ ਸਰਵਰਾਂ ਨੂੰ ਕਮਾਂਡ ਭੇਜੋ, ਜਿੱਥੇ ਤੁਸੀਂ ਹੋ" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<reason>], ਤੁਸੀਂ ਜਾ ਰਹੇ ਹੋ ਦਰਸਾਉਦਾ ਹੈ" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" + +#: src/common/outbound.c:3506 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <variable> [<value>]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "CLEAR [ALL|HISTORY], Clears the current text window or command history" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, ਮੌਜੂਦਾ ਵਿੰਡੋ/ਟੈਬ ਨੂੰ ਬੰਦ ਕਰੇਗਾ" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <code|wildcard>, ਦੇਸ਼ ਕੋਡ ਲੱਭੋ, ਜਿਵੇਂ ਕਿ au = australia" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" + +#: src/common/outbound.c:3516 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <name>, ਯੂਜ਼ਰ ਲਿਸਟ ਹੇਠ ਬਟਨ ਹਟਾਓ" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, ਸਰਵਰ ਨਾਲ ਸੰਬੰਧ ਖਤਮ" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS<nick।host।ip> ਯੂਜ਼ਰ IP ਨੰਬਰ ਲੱਭੋ" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <text>, ਲੋਕਲ ਟੈਕਸਟ ਛਾਪਿਆ ਜਾਵੇਗਾ" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" + +#: src/common/outbound.c:3560 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <password>, ਨੈਕਸਰਵਰ ਨਾਲ ਆਪਣੀ ਪਛਾਣ ਕਰਵਾਓ" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <nick> [<channel>], ਕਿਸੇ ਨੂੰ ਇੱਕ ਚੈਨਲ ਵਿੱਚ ਆਉਣ ਲਈ ਸੱਦਾ ਦਿਓ, ਮੂਲ ਰੂਪ ਵਿੱਚ ਮੌਜੂਦਾ " +"ਚੈਨਲ ਲਈ (ਮੁੱਖੀ ਹੋਣਾ ਲਾਜ਼ਮੀ)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <channel>, ਚੈਨਲ ਵਿੱਚ ਸ਼ਾਮਿਲ ਹੋਣ ਲਈ" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "KICK <nick>, ਮੌਜੂਦਾ ਚੈਨਲ ਵਿੱਚੋਂ ਨਾਂ ਨੂੰ ਬਾਹਰ ਸੁੱਟੋ (chanop ਹੋਣਾ ਲਾਜ਼ਮੀ)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <string>, ਬਫਰ ਵਿੱਚ ਸਤਰ ਖੋਜੋ" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <file>, ਪਲੱਗਇਨ ਜਾਂ ਸਕ੍ਰਿਪਟ ਲੋਡ ਕਰੋ" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <action>, ਚੈਨਲ ਵਿੱਚ ਕਾਰਵਾਈ ਕਰੋ (ਕਾਰਵਾਈ ਤੀਜੇ ਵਿਅਕਤੀ ਦੇ ਤੌਰ ਤੇ ਕੀਤੀ ਜਾਵੇਗੀ, ਜਿਵੇਂ /me " +"ਚੱਲਿਆ)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, ਮਾਸ ਕਿੱਕ, ਮੌਜੂਦਾ ਚੈਨਲ ਵਿੱਚ ਆਪਣੇ ਆਪ ਨੂੰ ਛੱਡ ਕੇ ਸਭ ਨੂੰ ਬਾਹਰ ਸੁੱਟੋ (ਮੁੱਖੀ ਹੋਣਾ ਲਾਜ਼ਮੀ ਹੈ)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <nick> <message>, ਨਿੱਜੀ ਸੁਨੇਹਾ ਭੇਜਣ ਲਈ" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, ਮੌਜੂਦਾ ਚੈਨਲ ਤੇ ਨਾਂ ਦੀ ਲਿਸਟ" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <nick> <message>, ਇੱਕ CTCP ਸੂਚਨਾ ਭੇਜੋ" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <hostname> [<port>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <nickname>, ਆਪਣਾ ਨਾਂ ਦਿਓ" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <nick>, ਚੈਨਲ ਮੁੱਖੀ ਸਥਿਤੀ ਨਾਂ ਨੂੰ ਦਿਓ (ਚੈਨਲ ਮੁੱਖੀ ਹੋਣਾ ਲਾਜ਼ਮੀ)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<channel>] [<reason>], ਚੈਨਲ ਛੱਡੋ, ਮੂਲ ਰੂਪ ਵਿੱਚ ਮੌਜੂਦਾ" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <nick | channel>, CTCP ਨਾਂ ਜਾਂ ਚੈਨਲ ਨੂੰ ਪਿੰਗ ਕਰੇਗਾ" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<reason>], ਮੌਜੂਦਾ ਸਰਵਰ ਨਾਲੋਂ ਵੱਖ" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <text>, ਮੌਜੂਦਾ ਝਰੋਖੇ ਵਿੱਚ ਇਕਾਈ ਨੂੰ ਲਿਖੋ" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <nick> [<file>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <host> <port> <channel>, ਕੁਨੈਕਟ ਅਤੇ ਚੈਨਲ ਵਿੱਚ ਸ਼ਾਮਲ" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <host> <port> <channel>, ਕੁਨੈਕਟ ਅਤੇ ਚੈਨਲ ਵਿੱਚ ਸ਼ਾਮਲ" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <host> [<port>] [<password>], ਸਰਵਰ ਨਾਲ ਜੋੜਦੀ ਹੈ, ਸਧਾਰਨ ਕੁਨੈਕਸ਼ਨਾਂ ਲਈ " +"ਮੂਲ ਪੋਰਟ 6667 ਹੈ, ਅਤੇ SSL ਕੁਨੈਕਸ਼ਨਾਂ ਲਈ 9999 ਹੈ।" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <host> [<port>] [<password>], ਸਰਵਰ ਨਾਲ ਜੁੜੋ, ਮੂਲ ਪੋਰਟ 6667 ਹੈ।" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <variable> [<value>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<position>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "TOPIC [<topic>], ਜੇਕਰ ਕੋਈ ਦਿੱਤਾ ਹੋਵੇ ਤਾਂ ਲਗਾਉ, ਨਹੀਂ ਤਾਂ ਮੌਜੂਦਾ ਵੇਖਾਇਆ ਜਾਵੇਗਾ" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <mask> [<mask>...], ਖਾਸ ਮਾਸਕ ਤੇ ਪਾਬੰਦੀ ਹਟਾਓ।" + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <mask> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <name>, ਪਲੱਗਇਨ ਜਾਂ ਸਕ੍ਰਿਪਟ ਹਟਾਓ" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, ਆਪਣੇ ਬਰਾਊਜ਼ਰ ਵਿੱਚ URL ਖੋਲ੍ਹੋ" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <nick>, ਕਿਸੇ ਨੂੰ ਆਵਾਜ਼ ਦਿਓ (chanop ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <message>, ਸਭ ਚੈਨਲ ਵਿੱਚ ਸੁਨੇਹਾ ਲਿਖੋ" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <message>, ਮੌਜੂਦਾ ਚੈਨਲ ਵਿੱਚ ਸਭ ਚੈਨਲ ਮੁੱਖੀਆਂ ਨੂੰ ਸੁਨੇਹਾ ਭੇਜੋ" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "ਵਰਤੋਂ: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"ਇਸ ਕਮਾਂਡ ਲਈ ਕੋਈ ਮੱਦਦ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ।\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "ਇਸਤਰਾਂ ਦੀ ਕੋਈ ਕਮਾਂਡ ਨਹੀਂ ਹੈ।\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "ਯੂਜ਼ਰ ਕਮਾਂਡ ਲਈ ਗਲਤ ਆਰਗੂਮੈਂਟ।\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "ਲਗਾਤਾਰ ਕਈ ਯੂਜ਼ਰ ਕਮਾਡਾਂ, ਅਧੂਰਾ ਛੱਡਿਆ।" + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "ਅਣਜਾਣੀ ਕਮਾਂਡ, ਕੋਸ਼ਿਸ ਕਰੋ /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "ਕੋਈ xchat_plugin_init ਨਹੀਂ, ਕੀ ਇਹ xchat ਪਲੱਗਇਨ ਹੈ?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "ਕੀ ਤੁਸੀਂ SSL ਅਨੁਕੂਲ ਸਰਵਰ ਤੇ ਪੋਰਟ ਹੋਣ ਦੀ ਪੁਸ਼ਟੀ ਕਰਦੇ ਹੋ?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"ਹੋਸਟ %s ਨਹੀਂ ਲੱਭਿਆ ਜਾ ਸਕਿਆ\n" +"ਆਪਣੀ IP ਸੈਟਿੰਗ ਵੇਖੋ!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "ਪਰਾਕਸੀ ਸੰਚਾਰ ਅਸਫਲ।\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "%s ਵਿੱਚ ਅਗਲੇ ਸਰਵਰ ਨਾਲ ਕੋਸ਼ਿਸ ਜਾਰੀ...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "ਚੇਤਾਵਨੀ: \"%s\" ਅੱਖਰ ਸਮੂਹ ਅਣਜਾਣ ਹੈ। ਨੈੱਟਵਰਕ %s ਲਈ ਅਨੁਵਾਦ ਲਾਗੂ ਨਹੀਂ ਹੈ।" + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 ਨੂੰ ਸੂਚਨਾ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕੀਤਾ।" + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 ਪਾਬੰਦੀ ਲਿਸਟ:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$t %C26 %B$1 %O ਵਿੱਚ ਦਾਖਲ ਨਹੀ ਹੋ ਸਕਦੇ (ਤੁਹਾਡੇ ਉੱਤੇ ਪਾਬੰਦੀ ਹੈ)।" + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 ਨੂੰ ਹੁਣ $2 ਦੇ ਤੌਰ ਉੱਤੇ ਜਾਣਿਆ ਜਾਵੇਗਾ" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 ਨੇ $2 ਉੱਤੇ ਪਾਬੰਦੀ ਲਗਾਈ" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tਚੈਨਲ $1 ਨੂੰ $2 ਤੇ ਬਣਾਇਆ ਗਿਆ ਹੈ" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O ਨੇ%C26 $2 ਤੋਂ ਚੈਨਲ ਅਰਧ-ਮੁੱਖੀ ਅਹੁਦਾ ਹਟਾਇਆ" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O ਨੇ%C26 $2 ਤੋਂ ਚੈਨਲ ਮੁੱਖੀ ਅਹੁਦਾ ਹਟਾਇਆ" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O ਨੇ %C26 $2 ਤੋਂ ਆਵਾਜ਼ ਹਟਾਈ" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O ਨੇ %C26 $2 ਨੂੰ ਅੱਧੇ-ਮੁੱਖੀ ਦਾ ਅਹੁਦਾ ਦਿੱਤਾ" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 ਨੇ $2 ਤੇ ਸੱਦਾ ਲਗਾਇਆ" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%Uਚੈਨਲ ਯੂਜ਼ਰ ਵਿਸ਼ਾ" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 ਢੰਗ $2$3 $4 ਦਿੱਤਾ" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "C22*%O$t%C22ਚੈਨਲ $1 ਮੋਡ: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O ਨੇ %C26 $2 ਨੂੰ ਚੈਨਲ ਮੁੱਖੀ ਦਾ ਦਰਜਾ ਦਿੱਤਾ" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 ਨੇ $2 ਤੋਂ ਸੱਦਾ ਹਟਾਇਆ" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 ਨੇ ਚੈਨਲ ਸ਼ਬਦ ਹਟਾਇਆ" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 ਨੇ ਯੂਜ਼ਰ ਸੀਮਾ ਹਟਾਈ" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 ਨੇ $2 ਲਈ ਚੈਨਲ ਸ਼ਬਦ ਲਗਾਇਆ" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 ਨੇ ਚੈਨਲ ਸੀਮਾ $2 ਕੀਤੀ" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 ਨੇ $2 ਤੋਂ ਪਾਬੰਦੀ ਹਟਾਈ" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O ਨੇ %C26 $2 ਲਈ ਆਵਾਜ਼ ਦਿੱਤੀ" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22ਕੁਨੈਕਟ ਹੈ। ਹੁਣ ਲਾਗਇਨ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22($2) ਨਾਲ ਪੋਰਟ $3%O ਉੱਤੇ ਕੁਨੈਕਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21ਕੁਨੈਕੁਸ਼ਨ ਅਸਫਲ ਹੈ। ਗਲਤੀ: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tਇੱਕ CTCP $1 $2 ਵੱਲੋਂ ਪ੍ਰਾਪਤ ਹੋਈ" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tਇੱਕ CTCP $1 $2 ਵੱਲੋਂ ਪ੍ਰਾਪਤ ਹੋਈ ($3 ਲਈ)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tCTCP ਆਵਾਜ਼ $1 $2 ਵੱਲੋਂ ਆਈ ਹੈ" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tਇੱਕ CTCP $1 ਧੁਨੀ $2 (to $3) ਵਲੋਂ ਮਿਲੀ" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$t%C26$1%O ਨਾਲ DCC ਗੱਲਬਾਤ ਅਧੂਰੀ ਰਹੀ।" + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$t%C26$1 %C30[%O$2%C30] ਨਾਲ DCC ਗੱਲਬਾਤ ਕੁਨੈਕਸ਼ਨ ਬਣਾਇਆ ਗਿਆ" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$t %C26$1%O ਨਾਲ DCC ਗੱਲਬਾਤ ਖਤਮ ($4)।" + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$t $1 ਵਲੋਂ DCC ਗੱਲਬਾਤ ਲਈ ਸੱਦਾ ਆਇਆ ਹੈ" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$t $1 ਨੂੰ DCC ਗੱਲਬਾਤ ਲਈ ਸੱਦਾ ਦੇ ਰਿਹਾ ਹੈ" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$t $1 ਨਾਲ ਪਹਿਲਾਂ ਹੀ ਗੱਲਬਾਤ ਲਈ ਸੱਦਾ ਦਿੱਤਾ ਗਿਆ ਹੈ" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$tDCC $1 %C26 $2%O ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਅਸਫਲ (ਗਲਤੀ=$3)" + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$t $2 ਵਲੋਂ '$1%O' ਪ੍ਰਾਪਤ" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 ਕਿਸਮ ਵੱਲ/ਵੱਲੋਂ ਸਥਿਤੀ ਅਕਾਰ Pos ਫਾਇਲ " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O." +"%010%C22*%O$tContents of packet: $2" +msgstr "" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tਨੇ%C26 $1%O %C26 $2 ਨੂੰ ਪੇਸ਼ ਕੀਤੀ" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tਏਦਾਂ ਦਾ ਕੋਈ DCC ਸੱਦਾ ਨਹੀਂ ਹੈ।" + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O ਅਧੂਰਾ ਛੱਡਿਆ।" + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "%C22*%O$tDCC RECV%C26 $1%O, %C26 $3%O ਤੋਂ ਮੁਕੰਮਲ %C30[%C26$4%O cps%C30]%O" + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC RECV%C26 $1 %C30[%O$2%C30] ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਬਣਿਆ" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV%C26 $1%O ਤੋਂ%C26 $3%O ਤੋਂ ਪ੍ਰਾਪਤੀ ਅਸਫਲ($4)" + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV: $1ਨੂੰ ($2) ਲਿਖਣ ਲਈ ਖੋਲਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ।" + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "" +"%C22*%O$tਫਾਇਲ%C26 $1%C ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ, %C26 $2%O ਦੇ ਤੌਰ ਤੇ ਸੰਭਾਲੀ ਜਾ ਰਹੀ ਹੈ।" + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Oਨੇ%C26 $2 %Cਨੂੰ%C26 $3%C ਤੋਂ ਮੁੜ-ਪ੍ਰਾਪਤੀ ਦੀ ਮੰਗ ਰੱਖੀ।" + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O ਅਧੂਰਾ ਛੱਡਿਆ।" + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O ਮੁਕੰਮਲ %C30[%C26$3%O cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC SEND %C26 $1 %C30[%O$2%C30] ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਬਣਿਆ" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O ਅਸਫਲ $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Oਨੇ %C26 $2 %O(%C26$3 %Oਬਾਇਟ) ਫਾਇਲ ਭੇਜੀ" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cਸਥਿਰ - ਅਧੂਰਾ ਛੱਡਿਆ" + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Oਸਮਾਂ ਸਮਾਪਤ - ਅਧੂਰਾ ਛੱਡਿਆ।" + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 ਨੂੰ ਸੂਚਨਾ ਤੋਂ ਹਟਾਇਆ।" + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$t ($1) ਬੰਦ ਹੋਇਆ ਹੈ।" + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tਤੁਹਾਡਾ IP ਖੋਜਿਆ: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O ਨੂੰ ਅਣਡਿੱਠੀ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕੀਤਾ।" + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "%C26$1%O ਤਬਦੀਲੀ ਅਣਡਿੱਠਾ।" + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 ਹੋਸਟ ਮਾਸਕ PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O ਨੂੰ ਅਣਡਿੱਠਾ ਲਿਸਟ ਵਿੱਚੋਂ ਹਟਾਇਆ।" + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " ਅਣਡਿੱਠਾ ਲਿਸਟ ਖਾਲੀ ਹੈ।" + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "%C22*%O$t%C26 %B$1 %O ਵਿੱਚ ਦਾਖਲ ਨਹੀਂ ਹੋ ਸਕਦੇ (ਚੈਨਲ ਹੀ ਸੱਦ ਸਕਦਾ ਏ)।" + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tਤੁਹਾਨੂੰ%C26 $1%O by%C26 $2%C (%C26$3%C) ਲਈ ਸੱਦਾ ਹੈ" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) $2 ਵਿੱਚ ਦਾਖਲ" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$t%C26 %B$1 %O ਵਿੱਚ ਦਾਖਲ ਨਹੀਂ ਹੋ ਸਕਦੇ(ਸ਼ਬਦ ਲੋੜੀਦਾ ਹੈ)।" + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 ਨੇ $2 ਨੂੰ $3 ($4%O%C21) ਤੋਂ ਬਾਹਰ ਸੁੱਟ ਦਿੱਤਾ" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$tਤੁਹਾਨੂੰ $1 ($2%O%C22) ਨੇ ਚੈਨਲ ਵਿੱਚੋਂ ਬਾਹਰ ਸੁੱਟ ਦਿੱਤਾ" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD ਅਧੂਰਾ ਛੱਡਿਆ ਹੈ।" + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 ਪਹਿਲਾਂ ਹੀ ਵਰਤੋਂ ਅਧੀਨ ਹੈ। $2 ਨਾਲ ਮੁੜ ਕੋਸ਼ਿਸ ਜਾਰੀ..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "%C22*%O$tਨਾਂ ਪਹਿਲਾਂ ਹੀ ਵਰਤੋਂ ਅਧੀਨ ਹੈ। ਹੋਰ ਵਰਤਣ ਲਈ /NICK ਦੀ ਵਰਤੋਂ ਕਰੋ।" + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tਏਦਾਂ ਦਾ ਕੋਈ DCC ਨਹੀਂ ਹੈ।" + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tਇਸ ਸਮੇਂ ਕੋਈ ਕਾਰਜ ਨਹੀਂ ਚੱਲ ਨਹੀਂ ਰਿਹਾ ਹੈ।" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tਸੂਚਨਾ ਲਿਸਟ ਖਾਲੀ ਹੈ।" + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B ਸੂਚਨਾ ਲਿਸਟ " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 ਯੂਜ਼ਰ ਸੂਚਨਾ ਲਿਸਟ ਵਿੱਚ ਹੈ।" + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tਸੂਚਨਾ: $1 ਆਫਲਾਈਨ ਹੈ ($3)।" + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tਸੂਚਨਾ: $1 ਆਨਲਾਈਨ ਹੈ ($3)।" + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) ਛੱਡ ਗਿਆ ਹੈ $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) ਨੇ $3 (%O%C23%B%B$4%O%C23) ਛੱਡਿਆ" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$t$1ਤੋਂ ਪਿੰਗ ਜਵਾਬ: $2 ਸਕਿੰਟ" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$t$1 ਸਕਿੰਟਾਂ ਤੋਂ ਕੋਈ ਜਵਾਬ ਨਹੀ, ਕੁਨੈਕਸ਼ਨ ਨਹੀਂ ਹੈ।" + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tਇੱਕ ਕਾਰਜ ਪਹਿਲਾਂ ਹੀ ਚੱਲ ਰਿਹਾ ਹੈ" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 ਨੇ ਬੰਦ ਕੀਤਾ ਹੈ (%O%C23$2)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 ਨੇ ਢੰਗ%B %C30[%O$2%B%C30] ਦਿੱਤਾ" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$t%C26 $1%O ਲਈ IP ਨੰਬਰ ਦੀ ਖੋਜ ਜਾਰੀ ਹੈ..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22ਜੁੜਿਆ ਹੈ।" + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22 $1 ਦੀ ਖੋਜ ਜਾਰੀ ਹੈ" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tਪੁਰਾਣੀ ਕੁਨੈਕਸ਼ਨ ਕੋਸ਼ਿਸ ਰੋਕੀ (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29 $1%C %C29 ਲਈ ਵਿਸ਼ਾ ਹੈ: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 ਨੇ ਵਿਸ਼ਾ ਤਬਦੀਲ ਕੀਤਾ: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29$1%C %C29 ਲਈ ਵਿਸ਼ਾ $2%C %C29 ਨੇ $3 ਵਜੇ ਦਿੱਤਾ" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tਅਣਜਾਣ ਹੋਸਟ, ਸ਼ਾਇਦ ਤੁਸੀਂ ਨਾਂ ਗਲਤ ਲਿਖਿਆ ਹੈ?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "%C22*%O$t%C26 %B$1 %O ਵਿੱਚ ਦਾਖਲ ਨਹੀਂ ਹੋ ਸਕਦੇ (ਯੂਜ਼ਰ ਸੀਮਾ ਟੱਪੀ)।" + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26$1 ਉੱਤੇ ਯੂਜ਼ਰ:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cਦੂਰ %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OWHOIS ਲਿਸਟ ਖਤਮ।" + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O ਵਿਹਲਾ%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O ਵਿਹਲਾ%C26 $2%O, ਦਾਖਲ:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %Oਅਸਲੀ user@host%C27 $2%O, ਅਸਲੀ IP%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19ਹੁਣ $2 'ਤੇ ਗੱਲਬਾਤ ਕਰ ਰਹੇ ਹੋ" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tਤੁਹਾਨੂੰ $2 ਤੋਂ $3 ($4%O%C23) ਨੇ ਬਾਹਰ ਸੁੱਟ ਦਿੱਤਾ" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tਤੁਸੀਂ $3 ਚੈਨਲ ਛੱਡਿਆ" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tਤੁਸੀਂ $3 (%O%C23%B%B$4%O%C23) ਚੈਨਲ ਛੱਡਿਆ" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tਤੁਹਾਨੂੰ%C26 $1%O ਤੋਂ%C26 $2%O (%C26$3%O) ਤੇ ਸੱਦਿਆ ਗਿਆ" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tਹੁਣ ਤੁਸੀਂ ਜਾਣੇ ਜਾਓਗੇ $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** %s ਉੱਤੇ ਲਾਗ ਸਮਾਪਤ\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** %s ਉਤੇ ਲਾਗ ਸ਼ੁਰੂ \n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* ਲਿਖਣ ਲਈ ਲਾਗ ਫਾਇਲ ਨੂੰ ਖੋਲ੍ਹਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ ਹੈ।\n" +" %s/xchatlogs ਅਧਿਕਾਰਾਂ ਦੀ ਪੜਤਾਲ ਕਰੋ।" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "ਖੱਬਾ ਸੁਨੇਹਾ" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "ਸੱਜਾ ਸੁਨੇਹਾ" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "ਜੁਆਇੰਨ ਹੋਏ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "ਚੈਲਨ ਵਿੱਚ ਜੁਆਇੰਨ ਕੀਤਾ" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "ਵਿਅਕਤੀ ਦਾ ਹੋਸਟ" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "ਆਮ ਨਾਂ" + +#: src/common/text.c:973 +msgid "The action" +msgstr "ਕਾਰਵਾਈ" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "ਮੋਡ ਅੱਖਰ" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "ਪਛਾਣ ਟੈਕਸਟ" + +#: src/common/text.c:980 +msgid "The text" +msgstr "ਟੈਕਸਟ" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "ਸੁਨੇਹਾ" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "ਪੁਰਾਣਾ ਨਾਂ" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "ਨਵਾਂ ਨਾਂ" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "ਜਿਸ ਨੇ ਵਿਸ਼ਾ ਤਬਦੀਲ ਕੀਤਾ ਹੈ, ਉਸ ਦਾ ਨਾਂ" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "ਵਿਸ਼ਾ" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "ਚੈਨਲ" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "ਸੁੱਟਣ ਵਾਲੇ ਦਾ ਨਾਂ" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "ਸੁੱਟਿਆ ਗਿਆ ਵਿਅਕਤੀ" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "ਚੈਨਲ" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "ਕਾਰਨ" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "ਜਾ ਰਹੇ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "ਸਮਾਂ" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "ਨਿਰਮਾਤਾ" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "ਨਾਂ" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "ਕਾਰਨ" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "ਹੋਸਟ" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "ਕਿਸ ਵੱਲੋਂ ਹੈ" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "ਸਮਾਂ x.x ਫਾਰਮੈਟ ਵਿੱਚ (ਹੇਠਾਂ ਵੇਖੋ)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "ਚੈਨਲ ਇਹ ਜਾ ਰਿਹਾ ਹੈ" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "ਸਾਊਂਡ" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "CTCP ਘਟਨਾ" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "ਕੁੰਜੀ ਦੇਣ ਵਾਲੇ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "ਕੁੰਜੀ" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "ਲਿਮਟ ਲਗਾਉਣ ਵਾਲੇ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "ਲਿਮਟ" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "ਆਵਾਜ਼ ਦੇਣ ਵਾਲੇ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "ਆਵਾਜ਼ ਪ੍ਰਾਪਤ ਵਾਲੇ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "ਪਾਬੰਦੀ ਲਗਾਉਣ ਵਾਲੇ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "ਪਾਬੰਦੀ ਮਾਸਕ" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "ਕੁੰਜੀ ਹਟਾਉਣ ਵਾਲੇ ਦਾ ਨਾਂ" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "ਲਿਮਟ ਹਟਾਉਣ ਵਾਲੇ ਦਾ ਨਾਂ" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "ਨਾ-ਅਵਾਜ਼ ਕਰਨ ਵਾਲੇ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "ਨਾ-ਆਵਾਜ਼ ਕੀਤੇ ਜਾਣ ਵਾਲੇ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "ਨਾ-ਪਾਬੰਦੀ ਕਰਨ ਵਾਲੇ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "ਸੱਦਾ ਭੇਜਣ ਵਾਲੇ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "ਸੱਦਾ ਮਾਸਕ" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "ਸੱਦੇ ਨੂੰ ਹਟਾਉਣ ਵਾਲੇ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "ਢੰਗ ਦੇਣ ਵਾਲੇ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "ਢੰਗ ਨਿਸ਼ਾਨ (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "ਢੰਗ ਅੱਖਰ" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "ਚੈਨਲ ਦਿੱਤਾ ਜਾ ਰਿਹਾ ਹੈ" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "ਯੂਜ਼ਰ ਨਾਂ" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "ਪੂਰਾ ਨਾਂ" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "ਚੈਨਲ ਮੈਂਬਰੀ /\"ਇੱਕ IRC ਓਪਰੇਟਰ ਹੈ\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "ਸਰਵਰ ਜਾਣਕਾਰੀ" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "ਵਿਹਲਾ ਸਮਾਂ" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "ਦਾਖਲਾ ਸਮਾਂ" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "ਜਾਣ ਦਾ ਕਾਰਨ " + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "ਸੁਨੇਹਾ" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "ਅਕਾਊਂਟ" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "ਅਸਲੀ user@host" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "ਅਸਲੀ IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "ਚੈਨਲ ਨਾਂ" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "ਟੈਕਸਟ" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "ਸਰਵਰ ਨਾਂ" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "ਸੱਦਣ ਲਈ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "ਯੂਜ਼ਰ" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "ਵਰਤੋਂ ਵਿੱਚ ਆਮ ਨਾਂ" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "ਕੋਸ਼ਿਸ ਕੀਤਾ ਨਾਂ" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "ਪੋਰਟ" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "ਨੈੱਟਵਰਕ" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "ਢੰਗ ਸਤਰ" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "IP ਐਡਰੈੱਸ" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "DCC ਕਿਸਮ" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "ਫਾਇਲ ਨਾਂ" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "ਨਿਯਤ ਫਾਇਲ ਨਾਂ" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "ਰਸਤਾ ਨਾਂ" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "ਸਥਿਤੀ" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "ਸਾਈਜ਼" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "DCC ਸਤਰ" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "ਸੂਚਨਾ ਇਕਾਈਆਂ ਦੀ ਗਿਣਤੀ" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "ਪੁਰਾਣਾ ਫਾਇਲ ਨਾਂ" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "ਨਵਾਂ ਫਾਇਲ ਨਾਂ" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "ਪ੍ਰਾਪਤ ਕਰਤਾ" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "ਹੋਸਟ-ਮਾਸਕ" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "ਹੋਸਟ-ਨਾਂ" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "ਪੈਕਟ" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "ਸਕਿੰਟ" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "ਸੱਦਣ ਲਈ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "ਪਾਬੰਦੀ-ਮਾਸਕ" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "ਕਿਸ ਨੇ ਪਾਬੰਦੀ ਲਗਾਈ" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "ਪਾਬੰਦੀ ਸਮਾਂ" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"%s ਘਟਨਾ ਪਾਰਸ ਕਰਨ ਦੌਰਾਨ ਗਲਤੀ।\n" +"ਮੂਲ ਹੀ ਲੋਡ ਕੀਤਾ ਗਿਆ ਹੈ।" + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"ਸਾਊਂਡ ਫਾਇਲ ਪੜ੍ਹੀ ਨਹੀਂ ਜਾ ਸਕੀ:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "ਰਿਮੋਟ ਹੋਸਟ ਬੰਦ ਸਾਕਟ" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "ਕੁਨੈਕਸ਼ਨ ਤੋਂ ਇਨਕਾਰ" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "ਹੋਸਟ ਲਈ ਮਾਰਗ ਨਹੀਂ" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "ਕੁਨੈਕਸ਼ਨ ਲਈ ਸਮਾਂ ਸਮਾਪਤ" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "ਇਹ ਸਿਰਨਾਵਾਂ ਦਿੱਤਾ ਨਹੀਂ ਜਾ ਸਕਦਾ" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "ਪੀਅਰ ਨੇ ਕੁਨੈਕਸ਼ਨ ਮੁੜ ਬਣਾਇਆ" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "ਅਡੂਰਾ" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "ਮਿਸਰ" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "ਅਫਗਾਨਿਸਤਾਨ" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "ਐਟੀਗੋਆ ਤੇ ਬਾਰਬੂਡਾ" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "ਐਗੂਲਾ" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "ਅਲਬਾਨੀਆ" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "ਅਰਮੀਨੀਆ" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "ਨੀਂਦਰਲੈਂਡ ਐਟੀਲਾਇਸ" + +#: src/common/util.c:857 +msgid "Angola" +msgstr " ਅੰਗੋਲਾ" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "ਐਟਾਰਟਿਕਾ" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "ਅਰਜਨਟੀਨਾ" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "ਉਲਟ DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "ਅਮਰੀਕਨ ਸਾਮੋਕਾ" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "ਆਸਟਾਰੀਆ" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "ਨੈਟੋ ਫਿਲ" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "ਅਸਟਰੇਲੀਆ" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "ਅਰੂਬਾ" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "ਅਲੈਂਡ ਟਾਪੂ" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "ਅਜਰਬਾਈਜਾਨ" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "ਬੋਸਨੀਆ ਤੇ ਹਰਜੀਗੋਵੀਨਾ" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "ਬਾਰਬਾਰਡੋਸ" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "ਬੰਗਲਾਦੇਸ਼" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "ਬੈਲਜੀਅਮ" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr " " + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "ਬੁਲਗਾਰੀਆ" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "ਬਹਰੀਨ" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "ਬੂਰੂਮਾਡੀ" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "ਵਪਾਰਿਕ" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "ਬੀਨਾਨ" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "ਬਾਰਮੂਡਾ" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "ਬਰੂਨਈ ਡਾਰੂਸ਼ਲਾਮ" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "ਬੋਲੋਵੀਆ" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "ਬਰਾਜ਼ੀਲ" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "ਬਾਹਾਮਾਸ" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "ਭੁਟਾਨ" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "ਬੂਟਵਟ ਟਾਪੂ" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "ਬੂਟਸਵਾਨਾ" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "ਬੇਲਾਰੂਸ" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "ਬੀਲੀਜ਼ੀ" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "ਕੈਨੇਡਾ" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "ਕੋਕਸ ਟਾਪੂ" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "ਕਾਗੋਂ ਗਣਰਾਜ" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "ਕੇਂਦਰੀ ਅਫਰੀਕੀ ਗਣਰਾਜ" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "ਕਾਂਗੋ" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "ਸਵਿਟਰਜ਼ਰਲੈਂਡ" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "ਕੋਟੀ ਡੀਵੋਰਆ" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "ਕੂਕ ਟਾਪੂ" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "ਚਿੱਲੀ" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "ਕੈਮਰੂਨ" + +#: src/common/util.c:898 +msgid "China" +msgstr "ਚੀਨ" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "ਕੋਲੰਬੀਆ" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "ਅੰਦਰੂਨੀ ਵਣਜ" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "ਕਾਸਟ ਰੀਕਾ" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "ਸਰਬੀਆ ਅਤੇ ਮੋਨਟੇਨੇਗਰੋ" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "ਕਿਊਬਾ" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "ਕੇਪ ਵਾਰਡੀ" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "ਕ੍ਰਿਸਮਸ ਟਾਪੂ" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "ਕਿਊਰੂਸ" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "ਚੈੱਕ ਗਣਰਾਜ" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "ਜਰਮਨੀ" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "ਡਜੀਬੂਟੀ" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "ਡੈਨਮਾਰਕ" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "ਡੋਮੀਨੀਆ" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "ਡੋਮੀਨੀਆਨ ਗਣਰਾਜ਼" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "ਅਲਜੀਰੀਆ" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "ਏਕਵੇਡਰ" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "ਵਿਦਿਅਕ ਸੰਗਠਨ" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "ਈਸਟੋਨੀਆ" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "ਮਿਸਰ" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "ਦੱਖਣੀ ਸਹਾਰਾ" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "ਈਰਟੀਰਆ" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "ਸਪੇਨ " + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "ਈਥੋਪਈਆ" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "ਯੂਰਪੀ ਯੂਨੀਅਨ" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "ਫਿਨਲੈਂਡ" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "ਫਿਜੀ" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "ਫਾਕਲੈਡ ਟਾਪੂ" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "ਮਾਕਰੋਨੀਸ਼ੀਆ" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "ਫਾਰੀਓ ਟਾਪੂ" + +#: src/common/util.c:928 +msgid "France" +msgstr "ਫਰਾਂਸ" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "ਗਾਬੋਨ" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "ਬਰਤਾਨੀਆ" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "ਗਰੀਨਾਡਾਆ" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "ਜਾਰਜੀਆ" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "ਫਰੈਂਚ ਗੁਆਨਾ" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "ਘਾਨਾ" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "ਗੀਬਰਾਲਟਰ" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "ਗਰੀਨਲੈਂਡ" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "ਗਾਬੀਆ" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "ਗੂਈਨੀਆ" + +#: src/common/util.c:940 +msgid "Government" +msgstr "ਸਰਕਾਰੀ" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "ਗੁਆਡੀਲੂਪੀ" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "ਭੂ-ਖੰਡੀ ਗੁਆਨਾ" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "ਗਰੀਸ" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "ਦੱਖਣ ਜਾਰਜੀਆ ਦੱਖਣ" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "ਗੂਆਟੇਮਾਲਾ" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "ਗੁਆਮ" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "ਗੁਨੇਆ-ਬਿਸਾਉ" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "ਗੁਆਨਾ" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "ਹਾਂਗਕਾਂਗ" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "ਹੀਅਰਡ ਅਤੇ ਮੈਕਡੋਨਾਲਡ ਆਈਸਲੈਂਡ" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "ਹਾਨਡੂਰਸ" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "ਕਰੋਟੀਆ" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "ਹਾਈਟੀ" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "ਹੰਗਰੀ" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "ਇੰਡੋਨੇਸ਼ੀਆ" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "ਆਇਰਲੈਂਡ" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "ਇਜ਼ਰਾਈਲ" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "" + +#: src/common/util.c:959 +msgid "India" +msgstr "ਭਾਰਤ" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "ਜਾਣਕਾਰੀ" + +#: src/common/util.c:961 +msgid "International" +msgstr "ਅੰਤਰਰਾਸ਼ਟਰੀ" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "ਬਰਤਾਨੀਆ ਭਾਰਤੀ ਸਮੁੰਦਰੀ ਖੇਤਰ" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "ਇਰਾਕ" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "ਈਰਾਨ" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "ਆਈਸਲੈਂਡ" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "ਇਟਲੀ" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "ਜਰਸੀ" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "ਜੈਮਾਈਕਾ" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "ਜਾਰਡਨ" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "ਜਾਪਾਨ" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "ਕੀਨੀਆ" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "ਕਿਰਗਸਤਾਨ" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "ਕੋਲੰਬੀਆ" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "ਕੀਰੀਬਾਟੀ" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "ਕੋਮੋਰਸ" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "ਸੇਂਟ ਕਿੱਟ ਅਤੇ ਨੀਵਿਸ" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "ਉੱਤਰੀ ਕੋਰੀਆ" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "ਦੱਖਣੀ ਕੋਰੀਆ" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "ਕੁਵੈਤ" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "ਕਾਯਮਨ ਟਾਪੂ" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "ਕਜ਼ਾਕਸਤਾਨ" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "ਲਿਉਸ" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "ਲੀਬਨਾਨ" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "ਸੇਂਟ ਲੂਸੀਆ" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "ਲੀਚਟੀਨੀਆ" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "ਸ੍ਰੀਲੰਕਾ" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "ਲੀਬੀਰੀਆ" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "ਲੀਸੋਥੋ" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "ਲੀਥੂਨੀਆ" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "ਲ਼ਕਸ਼ਮਬਰਗ" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "ਲਾਟੀਵਾਆ" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "ਲੀਬੀਆ" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "ਮੋਰੋਸ਼ਸ" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "ਮੋਨਸ਼ੀਆ" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "ਮੋਲਡੋਵਾ" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "ਅਮਰੀਕੀ ਮੈਂਡੀਕਲ" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "ਮੈਡਾਗਾਸਕਰ" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "ਮਾਰਸ਼ਲ ਟਾਪੂ" + +#: src/common/util.c:999 +msgid "Military" +msgstr "ਮਿਲਟਰੀ" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "ਮੈਕਡੋਨੀਆ" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "ਮਾਲੀ" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "ਮਿਆਂਮਾਰ" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "ਮੰਗੋਲੀਆ" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "ਮਕਾਉ" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "ਉੱਤਰੀ ਮਰੀਵੀਆਨਾ ਟਾਪੂ" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "ਮਾਰਟੀਨੀਕਿਊ" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "ਮਾਓਰੀਟਆਨਾ" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "ਮੋਨਟਸ਼ਟੀਟ" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "ਮਾਲਟਾ" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "ਮਾਓਟੀਸ" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "ਮਾਲਦੀਪ" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "ਮਾਲਾਵੀਆ" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "ਮੈਕਸੀਕੋ" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "ਮਲੇਸ਼ੀਆ" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "ਮੋਜ਼ਾਮਬੀਕਿਉ" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "ਨੀਮੀਬੀਆ" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "ਨੀਜ਼ਰ" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "ਨੈੱਟਵਰਕ" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "ਨੋਰਫੋਕ ਟਾਪੂ" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "ਨੀਜ਼ੀਰਆ" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "ਨਿਕਾਰਗੁਆ" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "ਨੀਂਦਰਲੈਂਡ" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "ਨਾਰਵੇ" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "ਨੇਪਾਲ" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "ਨੀਓਰੂ" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "ਨੀਊਈ" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "ਨਿਊਜ਼ੀਲੈਂਡ" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "ਓਮਾਨ" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "ਅੰਦਰੂਨੀ ਨਾ-ਲਾਭ ਸੰਗਠਨ" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "ਪੈਨਾਮਾ" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "ਪੇਰੂ" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "ਫਰੈਚ ਪੋਲੀਸੇਲੇਵੀਆ" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "ਪਾਪੂਆ ਨਵਾਂ ਗੂਈਨਿਆ" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "ਫਿਲਿਪੀਨੀਜ਼" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "ਪਾਕਿਸਤਾਨ" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "ਪੋਲੈਂਡ" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "ਸੇਂਟ ਪਰੇਰਾ ਅਤੇ ਮਿਕਿਊਲੋਨ" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "ਪਿਟਸਾਰਨ" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "ਪੁਈਰਟੋ ਰੀਸੋ" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "ਫਿਲੀਸਤੀਨ ਭਾਗ" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "ਪੁਰਤਗਾਲ" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "ਪਾਲਾਊ" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "ਪੇਰੂਗਵੇ" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "ਕਤਰ" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "ਰੀਯੁਨੀਅਨ" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "ਰੋਮਾਨੀਆ" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "ਪੁਰਾਣਾ ਸਕੂਲ ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "ਸੰਘੀ ਰੂਸ " + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "ਰਵਾਂਡਾਂ" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "ਸਾਊਦੀ ਅਰਬ" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "ਸੋਲੋਮੋਨ ਟਾਪੂ" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "ਸੀਆਚਿਲਸ" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "ਸੂਡਾਨ" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "ਸਵੀਡਨ" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "ਸਿੰਘਾਪੁਰ" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "ਸੇਂਟ ਹੀਲੀਨਆ" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "ਸਲੋਵੀਨੀਆ" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "ਸਵਾਲਬੋਰਡ ਅਤੇ ਜਾਨ ਮਾਈਨ ਆਈਸਲੈਂਡ" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "ਸਲੋਵਾਕ ਲੋਕਤੰਤਰ" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "ਸੀਈਰਆ ਲਿਏਨ" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "ਸਾਨ ਮਾਰੀਨੂ" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "ਸੈਨੇਗਾਲ" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "ਸੋਮਾਲੀਆ" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "ਸੂਰੀਨਾਂ" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "ਸਾਓ ਟੋਮ ਅਤੇ ਪ੍ਰਿਨਸਾਈਪ" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "ਪੁਰਾਣਾ ਸੋਵੀਅਤ ਯੂਨੀਅਨ" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "ਈਲ ਸਾਲੇਵਡੋਰ" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "ਸੀਰੀਆ" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "ਸਵਰਜ਼ਲੈਂਡ" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "ਤੁਰਕਸ ਅਤੇ ਕੇਈਕੋਸ ਟਾਪੂ" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "ਚੰਦ" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "ਫਰੈਂਚ ਦੱਖਣੀ ਖੇਤਰ" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "ਟੂਗੂ" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "ਥਾਈਲੈਂਡ" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "ਤਜ਼ਾਕਸਤਾਨ" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "ਟੂਕੀਲਾਊ" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "ਪੂਰਬੀ ਟੀਮੋਰ" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "ਤੁਰਕਸਤਾਨ" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "ਟੁਨੀਸ਼ੀਆ" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "ਟੂਨਗਾ" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "ਤੁਰਕੀ" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "ਟਰਿਨੀਦਾਦ ਅਤੇ ਟੋਬੇਗੋ" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "ਟੂਵਾਲੂ" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "ਤਾਈਵਾਨ" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "ਤਾਨਜ਼ੀਆ" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "ਯੂਕਰੇਨ" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "ਯੂਗਾਂਡਾ" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "ਬਰਤਾਨੀਆ" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "ਸੰਯੁਕਤ ਰਾਜ ਅਮਰੀਕਾ" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "ਉਰੂਗਵੇ" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "ਉਜ਼ੇਬਕਸਤਾਨ" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "ਵਾਟਕੈਨ ਸ਼ਹਿਰ ਪ੍ਰਾਂਤ" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "ਸੇਂਟ ਵੀਨਸੈਂਟ ਅਤੇ ਗਰੀਨਾਡੀਨਸ" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "ਵੈਨੂਜੇਏਲਾ" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "ਬ੍ਰਿਟਿਸ਼ ਵੀਰਗਿਨ ਟਾਪੂ" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "ਅਮਰੀਕੀ ਵਰਜਿਨ ਟਾਪੂ" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "ਵੀਅਤਨਾਮ" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "ਵਾਨੂਟੂ" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "ਵੈਲਿਸ ਅਤੇ ਫੂਟੂਨਾ ਆਈਸਲੈਂਡ" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "ਸਾਮੀਆ" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "ਯਮਨ" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "ਮਾਈਟੀ" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "ਯੂਗੋਸਲਾਵੀਆ" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "ਦੱਖਣੀ ਅਫਰੀਕਾ" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "ਜ਼ੈਬੀਆ" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "ਜਿੰਬਾਬਾਵੇੰ" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "ਅਣਜਾਣ" + +#: src/common/xchat.c:726 +msgid "_Open Dialog Window" +msgstr "ਡਾਈਲਾਗ ਵਿੰਡੋ ਖੋਲ੍ਹੋ(_O)" + +#: src/common/xchat.c:727 +msgid "_Send a File" +msgstr "ਫਾਇਲ ਭੇਜੋ(_S)" + +#: src/common/xchat.c:728 +msgid "_User Info (WhoIs)" +msgstr "ਯੂਜ਼ਰ ਜਾਣਕਾਰੀ(_U)(WhoIs)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "ਦੋਸਤ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ(_A)" + +#: src/common/xchat.c:730 +msgid "O_perator Actions" +msgstr "ਓਪਰੇਟਰ ਐਕਸ਼ਨ(_p)" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Ops ਦਿਓ" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Ops ਹਟਾਓ" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "ਆਵਾਜ਼ ਦਿਓ" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "ਆਵਾਜ਼ ਲਵੋ" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "ਕਿੱਕ/ਪਾਬੰਦੀ" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "ਕਿੱਕ" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "ਪਾਬੰਦੀ" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "ਕਿੱਕ-ਪਾਬੰਦੀ" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "ਚੈਨਲ ਛੱਡੋ" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "ਚੈਨਲ ਜੁਆਇੰਨ ਕਰੋ..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "ਜੁਆਇੰਨ ਕਰਨ ਲਈ ਚੈਨਲ ਦਿਓ:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "ਸਰਵਰ ਲਿੰਕ" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "ਸਰਵਰ ਪਿੰਗ" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "ਵਰਜਨ ਓਹਲੇ" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Op" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "ਅਲਵਿਦਾ" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "%s ਸੁੱਟਣ ਲਈ ਕਾਰਨ:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "ਫਾਇਲ਼-ਭੇਜੋ" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "ਡਾਈਲਾਗ" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "ਕੌਣ ਹੈ" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "ਭੇਜੋ" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "ਗੱਲਬਾਤ" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "ਸਾਫ਼" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "ਪਿੰਗ" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "ਸ਼ੈਸ਼ਨ ਬਸ ਨਾਲ ਜੁੜ ਨਹੀਂ ਸਕਿਆ" + +#: src/common/dbus/dbus-client.c:86 +#, fuzzy +msgid "Failed to complete NameHasOwner" +msgstr "ਕਮਾਂਡ ਪੂਰੀ ਕਰਨ ਲਈ ਅਸਫ਼ਲ ਹੈ" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "ਕਮਾਂਡ ਪੂਰੀ ਕਰਨ ਲਈ ਫੇਲ੍ਹ" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "ਰਿਮੋਟ ਅਸੈੱਸ" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "ਸ਼ੈਸ਼ਨ ਬਸ ਨਾਲ ਜੁੜਨ ਲਈ ਅਸਫ਼ਲ: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, fuzzy, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਅਸਫ਼ਲ " + +#: src/fe-gtk/about.c:100 +msgid "About " +msgstr "ਇਸ ਬਾਰੇ" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "ਇੱਕ ਅੰਤਰ ਪਲੇਟਫਾਰਮ IRC ਕਲਾਂਇਟ" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "ਅੱਖਰ ਚਾਰਟ" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "ਕੁਨੈਕਟ ਨਹੀਂ ਹੈ।" + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "ਤੁਹਾਨੂੰ ਕੁਝ ਪਾਬੰਦੀਆਂ ਦੀ ਚੋਣ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ।" + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "ਮਾਸਕ" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "ਵੱਲੋਂ" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "ਮਿਤੀ" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "ਤੁਸੀਂ ਇੱਕ ਪਾਬੰਦੀ ਮੇਨੂ ਵਿੰਡੋ ਤਾਂ ਹੀ ਖੋਲ੍ਹ ਸਕਦੇ ਹੋ, ਜੇਕਰ ਤੁਸੀਂ ਚੈਨਲ ਟੈਬ ਵਿੱਚ ਹੋ।" + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: ਪਾਬੰਦੀ ਲਿਸਟ (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "ਹਟਾਓ" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "ਉਭਾਰੋ" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "ਤਾਜ਼ਾ" + +#: src/fe-gtk/chanlist.c:111 +#, fuzzy, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "ਯੂਜ਼ਰ ਤੇ ਚੈਨਲ ਅੰਕੜੇ: %d/%d ਯੂਜ਼ਰ %d/%d ਚੈਨਲ ਤੇ" + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "ਆਉਟਪੁੱਟ ਫਾਇਲ ਨਾਂ ਚੁਣੋ" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "ਚੈਨਲ ਜੁਆਇੰਨ ਕਰੋ(_J)" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "ਚੈਨਲ ਨਾਂ ਕਾਪੀ ਕਰੋ(_C)" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "ਵਿਸ਼ਾ ਟੈਕਸਟ ਕਾਪੀ ਕਰੋ(_T)" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: ਚੈਨਲ ਲਿਸਟ (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "ਖੋਜ(_S)" + +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "ਡਾਊਨਲੋਡ ਲਿਸਟ(_D)" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "ਲਿਸਟ ਸੰਭਾਲੋ(_L)..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "ਕੇਵਲ ਵੇਖੋ:" + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "ਇਸ ਨਾਲ ਚੈਨਲ" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "ਤੋਂ" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "ਯੂਜ਼ਰ" + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "ਖੋਜ:" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "ਚੈਨਲ ਨਾਂ" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "ਖੋਜ ਟਾਈਪ:" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "ਸਧਾਰਨ ਖੋਜ" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "ਰੈਗੂਲਰ ਸਮੀਕਰਨ" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "ਖੋਜ:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "%s ਨੂੰ ਫਾਇਲ ਭੇਜੋ" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "ਇਹ ਫਾਇਲ ਮੁੜ-ਪ੍ਰਾਪਤੀ ਯੋਗ ਨਹੀਂ।" + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"ਫਾਇਲ ਲਈ ਅਧਿਕਾਰ ਨਹੀਂ: %s\n" +"%s.\n" +"ਮੁੜ-ਪ੍ਰਾਪਤੀ ਸੰਭਵ ਨਹੀਂ।" + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "ਡਾਊਨਲੋਡ ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਫਾਇਲ ਦਿੱਤੇ ਅਕਾਰ ਤੋਂ ਵੱਡੀ ਹੈ। ਮੁੜ-ਪ੍ਰਾਪਤੀ ਸੰਭਵ ਨਹੀਂ ਹੈ।" + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "ਦੋ ਲੋਕਾਂ ਤੋਂ ਇੱਕੋ ਫਾਇਲ ਮੁੜ ਪ੍ਰਾਪਤ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ।" + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: ਅੱਪਲੋਡ ਅਤੇ ਡਾਊਨਲੋਡ" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "ਹਾਲਤ" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "ਫਾਇਲ" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "ਦੋਵੇਂ" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "ਅੱਪਲੋਡ" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "ਡਾਊਨਲੋਡ" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "ਵੇਰਵਾ" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "ਫਾਇਲ:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "ਐਡਰੈੱਸ:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "ਅਧੂਰਾ ਛੱਡੋ" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "ਮਨਜ਼ੂਰ" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "ਮੁੜ-ਪ੍ਰਾਪਤ" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "...ਫੋਲਡਰ ਖੋਲ੍ਹੋ" + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: DCC ਗੱਲਬਾਤ ਲਿਸਟ" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "ਪ੍ਰਾਪਤ" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "ਭੇਜੀ" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "ਸ਼ੁਰੂ ਸਮਾਂ" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*ਨਵਾਂ*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "ਮੈਨੂੰ ਸੋਧੋ" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "ਨਾਂ" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "ਕਮਾਂਡ" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "ਉੱਤੇ ਭੇਜੋ" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "ਹੇਠਾਂ ਭੇਜੋ" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "ਰੱਦ ਕਰੋ" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "ਸੰਭਾਲੋ" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "ਨਵਾਂ ਸ਼ਾਮਿਲ" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "ਹਟਾਓ" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "ਲੜੀਬੱਧ" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "ਮੱਦਦ" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "ਸਰਵਰ ਨਾਲ ਆਟੋਮੈਟਿਕ ਕੁਨੈਕਟ ਨਾ ਕਰੋ" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "ਇੱਕ ਵੱਖਰੀ ਸੰਰਚਨਾ ਡਾਇਰੈਕਟਰੀ ਵਰਤੋਂ" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "ਕੋਈ ਪਲੱਗਇਨ ਆਟੋਮੈਟਿਕ ਲੋਡ ਨਾ ਕਰੋ" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "ਪਲੱਗਇਨ ਆਟੋ-ਲੋਡ ਡਾਇਰੈਕਟਰੀ ਵੇਖਾਓ" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "ਯੂਜ਼ਰ ਸੰਰਚਨਾ ਡਾਇਰੈਕਟਰੀ ਵੇਖਾਓ" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "ਇੱਕ irc://server:port/channel URL ਖੋਲ੍ਹੋ" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "ਕਮਾਂਡ ਚਲਾਓ:" + +#: src/fe-gtk/fe-gtk.c:132 +msgid "Open URL or execute command in an existing XChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "ਲੈਵਲ" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "ਵਰਜਨ ਜਾਣਕਾਰੀ ਵੇਖਾਓ" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"ਫੋਂਟ ਖੋਲ੍ਹਣ ਲਈ ਅਸਫ਼ਲ:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "ਖੋਜ ਬਫ਼ਰ ਖਾਲੀ ਹੈ।\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d ਬਾਇਟ" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "ਨੈੱਟਵਰਕ ਨੇ ਕਤਾਰ ਭੇਜੀ: %d ਬਾਈਟ" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "ਇਹ ਕਮਾਂਡ ਮੌਜੂਦਾ ਟੈਬ ਨੂੰ ਇੱਕ ਖੱਬੇ ਅੱਗੇ ਖਿਸਕਾਏਗੀ" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "ਇਹ ਕਮਾਂਡ ਮੌਜੂਦਾ ਟੈਬ ਨੂੰ ਇੱਕ ਸੱਜੇ ਅੱਗੇ ਖਿਸਕਾਏਗੀ" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "ਇਹ ਕਮਾਂਡ ਮੌਜੂਦਾ ਟੈਬ ਵਰਗ ਨੂੰ ਖੱਬੇ ਪਾਸੇ ਖਿਸਕਾਏਗੀ" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "ਇਹ ਕਮਾਂਡ ਮੌਜੂਦਾ ਟੈਬ ਵਰਗ ਨੂੰ ਸੱਜੇ ਪਾਸੇ ਖਿਸਕਾਏਗੀ" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "ਇੰਪੁੱਟ ਸਤਰ ਨੂੰ ਅਤੀਤ ਵਿੱਚ ਰੱਖੋ, ਪਰ ਸਰਵਰ `ਤੇ ਨਾ ਭੇਜੋ" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "ਸਵਿੱਚ ਬੰਧਨ ਸੰਰਚਨਾ ਲੋਡ ਕਰਨ ਦੌਰਾਨ ਗਲਤੀ ਹੈ" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<none>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "ਮੋਡ" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "ਸਵਿੱਚ" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "ਐਕਸ਼ਨ" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: ਕੀ-ਬੋਰਡ ਸ਼ਾਰਟਕੱਟ" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "ਡਾਟਾ ੧" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "ਡਾਟਾ ੨" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "ਸਵਿੱਚ ਸੰਰਚਨਾ ਫਾਇਲ ਖੋਲਣ ਦੌਰਾਨ ਗਲਤੀ\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"ਸਵਿੱਚ ਬੰਧਨ ਸੰਰਚਨਾ ਫਾਇਲ ਵਿੱਚ ਅਣਜਾਣ ਸਵਿੱਚ ਨਾਂ %s\n" +"ਲੋਡ ਕਰਨਾ ਅਸਫਲ, ਕਿਰਪਾ ਕਰਕੇ %s/keybindings ਠੀਕ ਕਰੋ\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"ਸਵਿੱਚ ਬੰਧਨ ਸੰਰਚਨਾ ਫਾਇਲ ਵਿੱਚ ਅਣਜਾਣੀ ਕਾਰਵਾਈ %s\n" +"ਲੋਡ ਕਰਨਾ ਅਸਫਲ, ਕਿਰਪਾ ਕਰਕੇ %s/keybindings ਠੀਕ ਕਰੋ\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"ਡਾਟਾ ਸਤਰ (Dx{:|!} ਨਾਲ ਸ਼ੁਰੂ ਹੁੰਦੀ) ਦੀ ਮੰਗ ਸੀ, ਪਰ ਮਿਲਿਆ:\n" +"%s\n" +"\n" +"ਲੋਡ ਕਰਨਾ ਅਸਫਲ, ਕਿਰਪਾ ਕਰਕੇ %s/keybindings ਠੀਕ ਕਰੋ\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"ਸਵਿੱਚ ਬੰਧਨ ਸੰਰਚਨਾ ਫਾਇਲ ਨਿਕਾਰਾ ਹੈ, ਲੋਡ ਕਰਨਾ ਛੱਡਿਆ\n" +"ਕਿਰਪਾ ਕਰਕੇ %s/keybindings.conf ਠੀਕ ਕਰੋ\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "ਉਹ ਫਾਇਲ ਲਿਖੀ ਨਹੀਂ ਜਾ ਸਕੀ ਹੈ" + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "ਉਹ ਫਾਇਲ ਪੜ੍ਹੀ ਨਹੀਂ ਜਾ ਸਕੀ ਹੈ" + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "ਇਹ ਮਾਸਕ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ।" + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "ਪ੍ਰਾਈਵੇਟ" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "ਨੋਟਿਸ" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "ਸੱਦਾ" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "ਨਾ-ਅਣਡਿੱਠਾ" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "ਅਣਡਿੱਠਾ ਕਰਨ ਲਈ ਮਾਸਕ ਦਿਓ:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: ਅਣਡਿੱਠੀ ਲਿਸਟ" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "ਅਣਡਿੱਠੀ ਸਥਿਤੀ:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "ਚੈਨਲ:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "ਪ੍ਰਾਈਵੇਟ:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "ਸੂਚਨਾ:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "ਸੱਦਾ:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "ਸ਼ਾਮਲ..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "ਚੈਨਲ ਨਾਂ ਬਹੁਤ ਛੋਟਾ ਹੈ, ਫੇਰ ਟਰਾਈ ਕਰੋ ਜੀ।" + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: ਕੁਨੈਕਸ਼ਨ ਪੂਰਾ" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "%s ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਪੂਰਾ ਹੋਇਆ।" + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "ਤੁਸੀਂ ਅੱਗੇ ਕੀ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "ਕੁਝ ਨਹੀਂ, ਮੈਂ ਚੈਨਲ ਬਾਅਦ 'ਚ ਜੁਆਇੰਨ ਕਰਾਂਗਾ(_N)" + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "ਇਹ ਚੈਨਲ ਜੁਆਇੰਨ ਕਰੋ(_J):" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "ਚੈਨਲ-ਲਿਸਟ ਵਿੰਡੋ ਖੋਲ੍ਹੋ(_p)" + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "ਕੁਨੈਕਟ ਕਰਨ ਸਮੇਂ ਇਹ ਡਾਈਲਾਗ ਹਮੇਸ਼ਾ ਵੇਖਾਓ(_A)" + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "ਡਾਈਲਾਗ" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "%s ਲਈ ਵਿਸ਼ਾ ਹੈ: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "ਕੋਈ ਵਿਸ਼ਾ ਦਿੱਤਾ ਨਹੀਂ ਗਿਆ" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "ਇਹ ਸਰਵਰ ਨਾਲ ਪਹਿਲਾਂ ਹੀ %d ਚੈਨਲ ਜਾਂ ਡਾਈਲਾਗ ਜੁੜੇ ਹੋਏ ਹਨ। ਕੀ ਸਭ ਨੂੰ ਬੰਦ ਕਰਨਾ ਹੈ?" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "XChat ਬੰਦ ਕਰਨਾ?" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "ਅਗਲੀ ਵਾਰ ਨਾ ਪੁੱਛੋ।" + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "ਤੁਸੀਂ %i IRC ਨੈੱਟਵਰਕਾਂ ਨਾਲ ਕੁਨੈਕਟ ਹੋ।" + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "ਕੀ ਤੁਸੀਂ ਬੰਦ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "ਕੁਝ ਫਾਇਲ ਟਰਾਂਸਫਰ ਹਾਲੇ ਚਾਲੂ ਹਨ।" + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "ਟਰੇ ਵਿੱਚ ਭੇਜੋ(_M)" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "ਗੁਣ ਜਾਂ ਰੰਗ ਕੋਡ ਸ਼ਾਮਿਲ" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>ਗੂੜਾ</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>ਹੇਠਾਂ ਰੇਖਾ</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "ਸਧਾਰਨ" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "ਰੰਗ ੦-੭" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "ਰੰਗ ੮-੧੫" + +#: src/fe-gtk/maingui.c:1612 +msgid "_Settings" +msgstr "ਸੈਟਿੰਗ(_S)" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "ਡਿਸਕ ਉੱਤੇ ਲਾਗ(_L)" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "ਸਕਰੋਲ ਰੀ-ਲੋਡ ਕਰੋ(_R)" + +#: src/fe-gtk/maingui.c:1617 +msgid "_Hide Join/Part Messages" +msgstr "ਜੁਆਇੰਨ/ਛੱਡਣ ਸੁਨੇਹੇ ਓਹਲੇ(_H)" + +#: src/fe-gtk/maingui.c:1625 +msgid "_Extra Alerts" +msgstr "ਹੋਰ ਚੇਤਾਵਨੀਆਂ(_E)" + +#: src/fe-gtk/maingui.c:1627 +msgid "Beep on _Message" +msgstr "ਸੁਨੇਹੇ ਉੱਤੇ ਆਵਾਜ਼(_M)" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "ਟਰੇ ਆਈਕਾਨ ਝਪਕਾਓ(_I)" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "ਟਾਸਕ ਬਾਰ ਝਪਕਾਓ(_B)" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +msgid "_Detach" +msgstr "ਵੱਖ ਕਰੋ(_D)" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "ਬੰਦ ਕਰੋ(_C)" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "ਯੂਜ਼ਰ ਲਿਮਟ ਅੰਕ ਹੀ ਹੋ ਸਕਦਾ ਹੈ!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "ਵਿਸ਼ਾ ਸੁਰੱਖਿਆ" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "ਕੋਈ ਬਾਹਰੀ ਸੁਨੇਹਾ ਨਹੀਂ" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "ਗੁਪਤ" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "ਸਿਰਫ਼ ਸੱਦਾ" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "ਵਿਚੋਲਾ" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "ਪਾਬੰਦੀ ਲਿਸਟ" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "ਕੀ-ਵਰਡ" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "ਯੂਜ਼ਰ ਲਿਮਟ" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "ਯੂਜ਼ਰ ਲਿਸਟ ਵੇਖਾਓ/ਓਹਲੇ" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"ਪਾਰਦਰਸ਼ੀ ਬੈਕਗਰਾਊਂਡ ਬਣਾਉਣ ਲਈ ਅਸਫਲ!\n" +"\n" +"ਤੁਸੀਂ ਉਸ ਵਿੰਡੋ ਮੈਨੇਜਰ ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੇ ਹੋ,\n" +"ਜਿਸ ਲਈ ਹਾਲੇ ਸਹਿਯੋਗ ਸ਼ਾਮਿਲ ਨਹੀਂ ਹੈ।\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "ਨਵਾਂ ਨਾਂ ਦਿਓ:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "ਅਣਜਾਣ ਹੋਸਟ" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "ਅਸਲੀ ਨਾਂ:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "ਯੂਜ਼ਰ:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "ਦੇਸ਼:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "ਸਰਵਰ:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "%u ਮਿੰਟ ਪਹਿਲਾਂ" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "ਆਖਰੀ ਸੁਨੇਹਾ:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "ਦੂਰ ਸੁਨੇਹਾ:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "ਲਿੰਕ ਬਰਾਊਜ਼ਰ ਵਿੱਚ ਖੋਲ੍ਹੋ" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "ਚੁਣਿਆ ਲਿੰਕ ਕਾਪੀ ਕਰੋ" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "ਚੈਨਲ ਜੁਆਇੰਨ ਕਰੋ" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "ਚੈਨਲ ਛੱਡੋ" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "ਚੱਕਰੀ ਚੈਨਲ" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "ਪਸੰਦੀਦਾ ਵਿੱਚੋਂ ਹਟਾਓ(_R)" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "ਪਸੰਦ ਵਿੱਚ ਸ਼ਾਮਲ(_A)" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: ਯੂਜ਼ਰ ਮੇਨੂ" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "ਇਹ ਮੇਨੂ ਸੋਧ..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "ਚੈਨਲ ਲਿਸਟ ਲਵੋ..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: ਯੂਜ਼ਰ ਪ੍ਰਭਾਸ਼ਿਤ ਕਮਾਂਡ" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: ਯੂਜ਼ਰ-ਲਿਸਟ ਪੋਪਅੱਪ ਮੇਨੂ" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "ਇਸ ਨਾਲ ਤਬਦੀਲ" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: ਤਬਦੀਲ" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: URL ਹੈਂਡਲਰ" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: ਯੂਜ਼ਰ-ਲਿਸਟ ਬਟਨ" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: ਗੱਲਬਾਤ ਬਟਨ" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat:CTCP ਜਵਾਬ" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_X-ਚੈੱਟ" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "ਨੈੱਟਵਰਕ ਲਿਸਟ(_s)..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "ਨਵਾਂ(_N)" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "ਸਰਵਰ ਟੈਬ..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "ਚੈਨਲ ਟੈਬ..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "ਸਰਵਰ ਵਿੰਡੋ..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "ਚੈਨਲ ਵਿੰਡੋ..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "ਪਲੱਗਇਨ ਜਾਂ ਸਕ੍ਰਿਪਟ ਲੋਡ(_L)..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "ਬਾਹਰ(_Q)" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "ਵੇਖੋ(_V)" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "ਮੇਨੂ ਬਾਰ(_M)" + +#: src/fe-gtk/menu.c:1592 +msgid "_Topic Bar" +msgstr "ਵਿਸ਼ਾ ਬਾਰ(_T)" + +#: src/fe-gtk/menu.c:1593 +msgid "_User List" +msgstr "ਯੂਜ਼ਰ ਬਾਰ(_U)" + +#: src/fe-gtk/menu.c:1594 +msgid "U_serlist Buttons" +msgstr "ਯੂਜ਼ਰ ਲਿਸਟ ਬਟਨ(_s)..." + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "ਮੋਡ ਬਟਨ(_O)" + +#: src/fe-gtk/menu.c:1597 +msgid "_Channel Switcher" +msgstr "ਚੈਨਲ ਸਵਿੱਚਰ(_C)" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "ਟੈਬਾਂ(_T)" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "ਲੜੀ(_r)" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "ਨੈੱਟਵਰਕ ਮੀਟਰ(_N)" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "ਬੰਦ" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "ਗਰਾਫ਼" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "ਸਰਵਰ(_S)" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "ਕੁਨੈਕਸ਼ਨ ਬੰਦ(_D)" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "ਫੇਰ ਕੁਨੈਕਟ ਕਰੋ(_R)" + +#: src/fe-gtk/menu.c:1613 +msgid "Join a Channel..." +msgstr "ਚੈਨਲ ਜੁਆਇੰਨ ਕਰੋ..." + +#: src/fe-gtk/menu.c:1614 +msgid "List of Channels..." +msgstr "ਚੈਨਲਾਂ ਦੀ ਲਿਸਟ..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "ਦੂਰ ਗਿਆ ਵੇਖਾਓ" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "ਯੂਜ਼ਰ ਮੇਨੂ(_U)" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "ਸੈਟਿੰਗ(_e)" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "ਮੇਰੀ ਪਸੰਦ(_P)" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "ਤਕਨੀਕੀ" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "ਖੁਦ ਹੀ ਤਬਦੀਲ..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "CTCP ਜਵਾਬ..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "ਗੱਲਬਾਤ ਬਟਨ..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "ਕੀ-ਬੋਰਡ ਸ਼ਾਰਟਕੱਟ..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "ਟੈਕਸਟ ਘਟਨਾ..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "URL ਹੈਂਡਲਰ..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "ਯੂਜ਼ਰ ਕਮਾਂਡਾਂ..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "ਯੂਜ਼ਰ-ਲਿਸਟ ਬਟਨ..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "ਯੂਜ਼ਰ-ਲਿਸਟ ਪੋਪਅੱਪ..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "ਵਿੰਡੋ(_W)" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "ਪਾਬੰਦੀ ਲਿਸਟ..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "ਅੱਖਰ ਚਾਰਟ..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "ਸਿੱਧੀ ਗੱਲ਼..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "ਫਾਇਲ ਟਰਾਂਸਫਰ..." + +#: src/fe-gtk/menu.c:1641 +msgid "Friends List..." +msgstr "ਦੋਸਤ ਲਿਸਟ..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "ਅਣਡਿੱਠਾ ਲਿਸਟ..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "ਪਲੱਗਇਨ ਤੇ ਸਕ੍ਰਿਪਟਾਂ..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "ਕੱਚਾ ਲਾਗ..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "URL ਖੋਜੀ..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "ਮਾਰਕਰ ਲਾਈਨ ਮੁੜ-ਸੈੱਟ" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "ਟੈਕਸਟ ਸਾਫ਼(_l)" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "ਟੈਕਸਟ ਖੋਜ..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "ਟੈਕਸਟ ਸੰਭਾਲੋ..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "ਮੱਦਦ(_H)" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "ਸਮੱਗਰੀ(_C)" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "ਅੱਪਡੇਟ ਲਈ ਚੈੱਕ ਕਰੋ" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "ਇਸ ਬਾਰੇ(_A)" + +#: src/fe-gtk/menu.c:2147 +msgid "_Attach" +msgstr "ਅਟੈਚ ਕਰੋ(_A)" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "ਆਖਰੀ ਵਾਰ ਵੇਖਿਆ" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "ਆਫਲਾਇਨ" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "ਕਦੇ ਨਹੀਂ" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "%d ਮਿੰਟ ਪਹਿਲਾਂ" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "ਆਨਲਾਇਨ" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਨਾਂ ਦਿਓ:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "ਇਹ ਨੈੱਟਵਰਕਾਂ ਉੱਤੇ ਸੂਚਨਾ ਦਿਓ:" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:413 +msgid "XChat: Friends List" +msgstr "XChat: ਦੋਸਤ ਲਿਸਟ" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "ਡਾਈਲਾਗ ਖੋਲ੍ਹੋ" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "ਰੀ-ਸਟੋਰ ਕਰੋ(_R)" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "ਓਹਲੇ(_H)" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "ਝਪਕੋ(_B)" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "ਚੈਨਲ ਸੁਨੇਹਾ" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "ਪ੍ਰਾਈਵੇਟ ਸੁਨੇਹਾ" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "ਹਾਈਲਾਈਟ ਕੀਤਾ ਸੁਨੇਹਾ" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "ਹਾਲਤ ਬਦਲੋ(_C)" + +#: src/fe-gtk/plugin-tray.c:602 +msgid "_Away" +msgstr "ਦੂਰ(_A)" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "ਵਾਪਸ(_B)" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat: %s (%s): ਵਲੋਂ ਹਾਈਲਾਈਟ ਕੀਤਾ ਸੁਨੇਹਾ" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat: %u ਹਾਈਲਾਈਟ ਕੀਤੇ ਸੁਨੇਹਾ, ਆਖਰੀ ਵਲੋਂ: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat: %s (%s): ਵਲੋਂ ਨਵਾਂ ਪਬਲਿਕ ਸੁਨੇਹਾ" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat: %u ਨਵੇਂ ਪਬਲਿਕ ਸੁਨੇਹੇ" + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat: %s (%s): ਵਲੋਂ ਪ੍ਰਾਈਵੇਟ ਸੁਨੇਹੇ" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "XChat: %u ਪ੍ਰਾਈਵੇਟ ਸੁਨੇਹੇ: %s (%s) ਵਲੋਂ ਆਖਰੀ" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat: %s (%s) ਵਲੋਂ ਫਾਈਲ ਭੇਜੀ" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "ਵਰਜਨ" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "ਵੇਰਵਾ" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "ਲੋਡ ਕਰਨ ਲਈ ਪਲੱਗਇਨ ਤੇ ਸਕ੍ਰਿਪਟ ਚੁਣੋ" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: ਪਲੱਗਇਨ ਅਤੇ ਸਕ੍ਰਿਪਟਾਂ" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "ਲੋਡ(_L)..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "ਅਣ-ਲੋਡ(_U)" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "ਇੰਞ ਸੰਭਾਲੋ..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: ਕੱਚਾ-ਲਾਗ (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "ਕੱਚਾ-ਲਾਗ ਸਾਫ਼" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "ਇਸ ਖੋਜ ਲਈ ਤੁਹਾਡੇ ਰਾਹੀਂ ਖੋਲਿਆ ਵਿੰਡੋ ਹੁਣ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।" + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "" + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: ਖੋਜ" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "ਅੱਖਰ ਕੇਸ ਮਿਲਾਓ(_M)" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "ਪਿੱਛੇ ਖੋਜ(_b)" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "ਖੋਜ(_F)" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "ਨਵਾਂ ਨੈੱਟਵਰਕ" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "ਕੀ ਅਸਲ ਵਿੱਚ \"%s\" ਨੈਟਵਰਕ ਅਤੇ ਇਸ ਦੇ ਸਰਵਰ ਹਟਾਉਣੇ ਹਨ?" + +#: src/fe-gtk/servlistgui.c:740 +msgid "#channel" +msgstr "#channel" + +#: src/fe-gtk/servlistgui.c:850 +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: ਪਸੰਦੀਦਾ ਚੈਨਲ (ਆਟੋ-ਜੁਆਇੰਨ ਲਿਸਟ)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "ਇਹ ਚੈਨਲ ਜੁਆਇੰਨ ਕੀਤੇ ਜਾਣਗੇ, ਜਦੋਂ ਵੀ ਤੁਸੀਂ %s ਨਾਲ ਕੁਨੈਕਟ ਕਰੋਗੇ।" + +#: src/fe-gtk/servlistgui.c:906 +msgid "Key (Password)" +msgstr "ਕੁੰਜੀ (ਪਾਸਵਰਡ)" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "ਸੋਧ(_E)" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "%s ਹਟਾਇਆ ਗਿਆ।" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "%s ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ।" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "ਯੂਜ਼ਰ ਨਾਂ ਅਤੇ ਅਸਲੀ ਨਾਂ ਖਾਲੀ ਨਹੀ ਛੱਡਿਆ ਨਹੀ ਜਾ ਸਕਦਾ ਹੈ।" + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: %s ਸੋਧ" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "%s ਲਈ ਸਰਵਰ" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "ਚੁਣੇ ਸਰਵਰਾਂ ਨਾਲ ਹੀ ਜੁੜੋ" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "ਕੁਨੈਕਸ਼ਨ ਅਸਫਲ ਹੋਣ ਤੇ ਸਰਵਰਾਂ ਵਿੱਚ ਚੱਕਰ ਨਾ ਲਗਾਉ।" + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "ਤੁਹਾਡਾ ਵੇਰਵਾ" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "ਗਲੋਬਲ ਯੂਜ਼ਰ ਜਾਣਕਾਰੀ ਵਰਤੋਂ" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "ਨਾਂ(_N):" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "ਦੂਜੀ ਚੋਣ:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "ਯੂਜ਼ਰ ਨਾਂ(_U):" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "ਅਸਲੀ ਨਾਂ(_l):" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "ਕੁਨੈਕਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "ਸ਼ੁਰੂ ਵੇਲੇ ਇਸ ਨੈਟਵਰਕ ਨਾਲ ਆਟੋਮੈਟਿਕ ਹੀ ਕੁਨੈਕਟ ਕਰੋ" + +#: src/fe-gtk/servlistgui.c:1462 +msgid "Bypass proxy server" +msgstr "ਪਰਾਕਸੀ ਸਰਵਰ ਬਾਏਪਾਸ ਕਰੋ" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "ਇਸ ਨੈਟਵਰਕ ਤੇ ਸਭ ਸਰਵਰਾਂ ਲਈ SSL ਵਰਤੋਂ" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "ਗਲਤ SSL ਸਰਟੀਫਿਕੇਟ ਮਨਜ਼ੂਰ" + +#: src/fe-gtk/servlistgui.c:1475 +msgid "_Favorite channels:" +msgstr "ਪਸੰਦੀਦਾ ਚੈਨਲ(_F):" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "ਜੁਆਇੰਨ ਕਰਨ ਲਈ ਚੈਨਲ, ਕਾਮਿਆਂ ਨਾਲ ਵੱਖ ਹੋ ਸਕਦੇ ਹਨ, ਪਰ ਖਾਲੀ ਥਾਂ ਨਹੀਂ!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "ਕੁਨੈਕਟ ਕਮਾਂਡ:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Nickserv ਪਾਸਵਰਡ:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "ਸਰਵਰ ਪਾਸਵਰਡ:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "ਸਰਵਰ ਲਈ ਪਾਸਵਰਡ, ਜੇਕਰ ਸ਼ੱਕ ਹੋਵੇ ਤਾਂ ਖਾਲੀ ਰਹਿਣ ਦਿਓ।" + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "ਕਰੈਕਟਰ ਸੈੱਟ:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: ਨੈੱਟਵਰਕ ਲਿਸਟ" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "ਯੂਜ਼ਰ ਜਾਣਕਾਰੀ" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "ਤੀਜੀ ਚੋਣ:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "ਨੈੱਟਵਰਕ" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "ਸ਼ੁਰੂ ਵੇਲੇ ਨੈੱਟਵਰਕ ਲਿਸਟ ਨਾ ਵੇਖਾਓ" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "ਸੋਧ(_E)..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "ਲੜੀਬੱਧ(_S)" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "ਕੁਨੈਕਟ ਕਰੋ(_C)" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "ਟੈਕਸਟ ਬਕਸਾ ਦਿੱਖ" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "ਫੋਂਟ:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "ਬੈਕਗਰਾਊਂਡ ਚਿੱਤਰ:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "ਸਕਰੋਲਬੈਕ ਲਾਈਨਾਂ:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "ਰੰਗਦਾਰ ਨਾਂ" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "IRC ਤੇ ਹਰ ਵਿਅਕਤੀ ਨੂੰ ਵੱਖਰਾ ਰੰਗ ਦਿਓ" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "ਨਾਂਵਾਂ ਨੂੰ ਸੱਜੇ ਪਾਸੇ ਰੱਖੋ" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "ਪਾਰਦਰਸ਼ੀ ਬੈਕਗਰਾਊਂਡ" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "ਮਾਰਕਰ ਲਾਈਨ ਵੇਖੋ" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "ਆਖਰੀ ਪੜ੍ਹੇ ਪਾਠ ਬਾਅਦ ਲਾਲ ਰੰਗ ਦੀ ਰੇਖਾ ਖਿੱਚੋ।" + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "ਪਾਰਦਰਸ਼ਤਾ ਸੈਟਿੰਗ" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "ਲਾਲ:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "ਹਰਾ:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "ਨੀਲਾ:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "ਸਮਾਂ ਮੋਹਰ" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "ਸਮਾਂ ਮੋਹਰ ਯੋਗ" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "ਸਮਾਂ ਮੋਹਰ ਫਾਰਮੈਟ:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "ਵੇਰਵੇ ਲਈ strftime manpage ਵੇਖੋ" + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "ਇੰਪੁੱਟ ਬਕਸਾ" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "ਟੈਕਸਟ ਬਕਸਾ ਫੋਂਟ ਤੇ ਰੰਗ ਵਰਤੋਂ" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "ਸਪੈਲ ਚੈਕਿੰਗ" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "ਨਾਂ ਪੂਰਤੀ" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "ਆਟੋਮੈਟਿਕ ਨਾਂ ਪੂਰਨ (ਬਿਨਾਂ ਟੈਬ ਸਵਿੱਚ)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "ਨਾਂ ਪੂਰਤੀ ਅਗੇਤਰ:" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "ਨਾਂ ਪੂਰਨ ਲੜੀਬੱਧ:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "ਇੰਪੁੱਟ ਬਕਸਾ ਕੋਡ" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, ਓਪਰੇਟਰ ਪਹਿਲਾਂ" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, ਓਪਰੇਟਰ ਅੰਤ ਵਿੱਚ" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "ਨਾ-ਕ੍ਰਮਬੱਧ" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "ਖੱਬਾ (ਉੱਤੇ)" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "ਖੱਬਾ (ਥੱਲੇ)" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "ਸੱਜਾ (ਉੱਤੇ)" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "ਸੱਜਾ (ਥੱਲੇ)" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "ਉੱਤੇ" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "ਹੇਠਾਂ" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "ਓਹਲੇ" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "ਯੂਜ਼ਰ ਲਿਸਟ" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "ਯੂਜ਼ਰ ਲਿਸਟ ਵਿੱਚ ਹੋਸਟ ਨਾਂ" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "ਯੂਜ਼ਰ ਲਿਸਟ ਕ੍ਰਮਬੱਧ:" + +#: src/fe-gtk/setup.c:205 +msgid "Show user list at:" +msgstr "ਯੂਜ਼ਰ ਲਿਸਟ ਵੇਖੋ:" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "ਹਮੇਸ਼ਾ ਪੜਤਾਲ" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "ਇਸ ਤੋਂ ਛੋਟੇ ਚੈਨਲ ਲਈ:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "ਦੋ ਵਾਰ ਦਬਾਉਣ ਤੇ ਕਾਰਵਾਈ" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "ਵਿੰਡੋ" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "ਟੈਬਾਂ" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "ਹਮੇਸ਼ਾ" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "ਸਿਰਫ਼ ਮੰਗੀਆਂ ਟੈਬਾਂ" + +#: src/fe-gtk/setup.c:242 +msgid "Tree" +msgstr "ਲੜੀ" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "ਸਵਿੱਚਰ ਟਾਈਪ:" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "ਸਰਵਰ ਸੁਨੇਹਿਆਂ ਲਈ ਵੱਖਰੀ ਟੈਬ ਖੋਲ੍ਹੋ" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "ਸਰਵਰ ਸੂਚਨਾ ਲਈ ਵੱਖਰੀ ਟੈਬ ਖੋਲ੍ਹੋ" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "ਜਦੋਂ ਪ੍ਰਾਈਵੇਟ ਸੁਨੇਹਾ ਆਵੇ ਤਾਂ ਨਵੀਂ ਟੈਬ ਵਿੱਚ ਖੋਲ੍ਹੋ" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "ਟੈਬਾਂ ਨੂੰ ਅੱਖਰ-ਕ੍ਰਮ ਅਨੁਸਾਰ ਰੱਖੋ " + +#: src/fe-gtk/setup.c:254 +msgid "Smaller text" +msgstr "ਛੋਟਾ ਟੈਕਸਟ" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "ਨਵੀਂ ਟੈਬਾਂ ਲਈ ਫੋਕਸ:" + +#: src/fe-gtk/setup.c:258 +msgid "Show channel switcher at:" +msgstr "ਚੈਨਲ ਸਵਿੱਚਰ ਵੇਖੋ:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "ਛੋਟਾ ਟੈਬ ਨਾਂ:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "ਅੱਖਰ" + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "ਟੈਬਾਂ ਜਾਂ ਵਿੰਡੋਜ਼" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "ਚੈਨਲ ਖੋਲ੍ਹੋ:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "ਡਾਈਲਾਗ ਵਿੱਚ ਖੋਲ੍ਹੋ:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "ਸਹੂਲਤਾਂ ਨੂੰ ਖੋਲ੍ਹੋ:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "ਨਹੀਂ" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "ਹਾਂ" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "ਫਾਇਲਾਂ ਅਤੇ ਡਾਇਰੈਕਟਰੀਆਂ" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "ਫਾਇਲਾਂ ਡਾਊਨਲੋਡ ਕਰੋ:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "ਮੁਕੰਮਲ ਫਾਇਲਾਂ ਨੂੰ ਭੇਜੋ:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "ਫਾਇਲ ਨਾਂ ਵਿੱਚ ਨਾਂ ਸੰਭਾਲੋ" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "ਨੈਟਵਰਕ ਸੈਟਿੰਗ" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "IRC ਸਰਵਰ ਤੋਂ ਮੇਰਾ ਐਡਰੈੱਸ ਪ੍ਰਾਪਤ ਕਰੋ" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "DCC IP ਐਡਰੈੱਸ:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "" + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "ਪਹਿਲੀਂ DCC ਭੇਜਣ ਪੋਰਟ:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "ਆਖਰੀ DCC ਭੇਜਣ ਪੋਰਟ:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "" + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "ਵੱਧ ਤੋਂ ਵੱਧ ਫਾਇਲ ਸੰਚਾਰ ਗਤੀ (ਬਾਈਟ ਪ੍ਰਤੀ ਸਕਿੰਟ)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "ਇੱਕ ਅੱਪਲੋਡ:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "ਇੱਕ ਸੰਚਾਰ ਲਈ ਵੱਧੋ-ਵੱਧ ਗਤੀ" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "ਇੱਕ ਡਾਊਨਲੋਡ:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "ਸਭ ਅੱਪਲੋਡ ਜੋੜ:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "ਸਭ ਫਾਇਲਾਂ ਲਈ ਵੱਧੋ-ਵੱਧ ਗਤੀ" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "ਸਭ ਡਾਊਨਲੋਡ ਜੋੜ:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "ਚੇਤਾਵਨੀ" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "ਟਰੇ ਬੁਲਬਲੇ ਵੇਖੋ:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "ਟਰੇ ਆਈਕਾਨ ਝਪਕਾਓ:" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "ਟਾਸਕ ਬਾਰ ਝਪਕਾਓ:" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "ਬੀਪ ਸਾਊਂਡ ਦਿਓ:" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "ਸਿਸਟਮ ਟਰੇ ਆਈਕਾਨ ਚਾਲੂ" + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "ਹਾਈਲਾਈਟ ਕੀਤੇ ਸੁਨੇਹੇ" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "ਹਾਈਲਾਈਟ ਕਰਨ ਲਈ ਹੋਰ ਸ਼ਬਦ:" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "ਨਾ ਹਾਈਲਾਈਟ ਕਰਨ ਵਾਲੇ ਨਾਂ:" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "ਹਮੇਸ਼ਾ ਹਾਈਲਾਈਟ ਕਰਨ ਵਾਲੇ ਨਾਂ:" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "(ਕਈ ਸ਼ਬਦ, ਜਿੰਨਾਂ ਨੂੰ ਕਾਮਿਆਂ ਨਾਲ ਵੱਖ ਕੀਤਾ ਗਿਆ ਹੋਵੇ)।" + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "ਡਿਫਾਲਟ ਸੁਨੇਹੇ" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "ਬਾਹਰ:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "ਚੈਨਲ ਛੱਡਣਾ:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "ਦੂਰ:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "ਦੂਰ" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "ਦੂਰ ਸੁਨੇਹਾ ਭੇਜੋ" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "ਆਪਣਾ ਦੂਰ ਸੁਨੇਹਾ ਸਭ ਚੈਨਲਾਂ ਤੇ ਭੇਜੋ" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "ਦੂਰ ਇੱਕ ਵਾਰ ਹੀ ਵੇਖਾਓ" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "ਇੱਕੋ ਜਿਹੇ ਦੂਰ ਸੁਨੇਹੇ ਨੂੰ ਇੱਕ ਵਾਰ ਹੀ ਵੇਖਾਓ" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "ਖੁਦ ਹੀ ਦੂਰ ਨੂੰ ਨਾ-ਮਾਸਕ ਕਰੋ" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "ਤਕਨੀਕੀ ਸੈਟਿੰਗ" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "ਅੰਤਰਾਲ ਬਾਅਦ ਮੁੜ-ਕੁਨੈਕਟ:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "MODE ਨੂੰ ਕੱਚੇ ਰੂਪ ਵਿੱਚ ਵੇਖਾਓ" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "ਦਾਖਲਾ ਤੇ ਛੱਡਣਾ ਸੁਨੇਹੇ ਓਹਲੇ" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "ਮੂਲ ਰੂਪ ਵਿੱਚ ਚੈਨਲ ਦਾਖਲਾ/ਛੱਡਣਾ ਸੁਨੇਹੇ ਓਹਲੇ" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "ਖੁਦ ਹੀ DCC ਵਿੰਡੋਜ਼ ਖੋਲ੍ਹੋ" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "ਭੇਜਣ ਵਿੰਡੋ" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "ਪ੍ਰਾਪਤੀ ਵਿੰਡੋ" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "ਗੱਲਬਾਤ ਵਿੰਡੋ" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "ਲਾਗ ਰੱਖਣਾ" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "ਪਿਛਲੇ ਸ਼ੈਸ਼ਨ ਤੋਂ ਸਕਰੋਲਬੈਕ ਵੇਖਾਓ" + +#: src/fe-gtk/setup.c:387 +msgid "Enable logging of conversations to disk" +msgstr "ਗੱਲਾਂਬਾਤਾਂ ਲਈ ਡਿਸਕ ਉੱਤੇ ਲਾਗ ਰੱਖਣਾ ਚਾਲੂ" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "ਲਾਗ ਫਾਇਲ ਨਾਂ:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Server %c=Channel %n=Network" + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "ਲਾਗ ਵਿੱਚ ਸਮਾਂ ਮੋਹਰ ਸ਼ਾਮਿਲ ਕਰੋ" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "ਲਾਗ ਸਮਾਂ ਮੋਹਰ ਫਾਰਮੈਟ:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(ਆਯੋਗ)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "ਸਭ ਕੁਨੈਕਸ਼ਨ" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "ਕੇਵਲ IRC ਸਰਵਰ" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "ਕੇਵਲ DCC ਲਵੋ" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "ਤੁਹਾਡਾ ਐਡਰੈਸ" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "ਸਬੰਧਿਤ:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "ਕਈ ਐਡਰੈਸਾਂ ਵਾਲਿਆਂ ਲਈ ਹੀ ਫਾਇਦੇਮੰਦ।" + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "ਸਰਵਰ ਸਰਵਰ" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "ਹੋਸਟ ਨਾਂ:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "ਪੋਰਟ:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "ਕਿਸਮ:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "" + +#: src/fe-gtk/setup.c:434 +#, fuzzy +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "ਪਰਾਕਸੀ ਸਰਵਰ ਨਾਲ ਪ੍ਰਮਾਣਿਤ (HTTP ਅਤੇ Socks5)" + +#: src/fe-gtk/setup.c:436 +#, fuzzy +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "ਪਰਾਕਸੀ ਸਰਵਰ ਨਾਲ ਪ੍ਰਮਾਣਿਤ (HTTP ਅਤੇ Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "ਯੂਜ਼ਰ ਨਾਂ:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "ਪਾਸਵਰਡ:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "ਇੱਕ ਤਸਵੀਰ ਫਾਇਲ ਚੁਣੋ" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "ਡਾਊਨਲੋਡ ਫੋਲਡਰ ਚੁਣੋ" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "ਫੋਂਟ ਚੁਣੋ" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "ਝਲਕ..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "ਡਾਟਾ ਫੋਲਡਰ ਖੋਲ੍ਹੋ" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "ਚੋਣ ਰੰਗ" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "ਪਾਠ ਰੰਗ" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "mIRC ਰੰਗ:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "ਲੋਕਲ ਰੰਗ:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "ਫਾਰਗਰਾਊਂਡ:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "ਬੈਕਗਰਾਊਂਡ:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "ਨਿਸ਼ਾਨ ਪਾਠ" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "ਇੰਟਰਫੇਸ ਰੰਗ" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "ਨਵਾਂ ਡਾਟਾ:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "ਮਾਰਕਰ ਲਾਈਨ:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "ਨਵਾਂ ਸੁਨੇਹਾ:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "ਦੂਰ ਯੂਜ਼ਰ:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "ਹਾਈਲਾਈਟ:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "ਈਵੈਂਟ" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "ਸਾਊਂਡ ਫਾਇਲ" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "ਸਾਊਂਡ ਫਾਇਲ ਚੁਣੋ" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "ਸਾਊਂਡ ਚਲਾਉਣ ਢੰਗ:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "ਬਾਹਰੀ ਸਾਊਂਡ ਵਾਲਾ ਪਰੋਗਰਾਮ(_p):" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "ਬਾਹਰੀ ਐਪਲੀਕੇਸ਼ਨ(_E)" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "ਆਟੋਮੈਟਿਕ(_A)" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "ਸਾਊਂਡ ਫਾਇਲ ਡਾਇਰੈਕਟਰੀ(_d):" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "ਸਾਊਂਡ ਫਾਇਲ:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "ਝਲਕ(_B)..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "ਚਲਾਓ(_P)" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "ਇੰਟਰਫੇਸ" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "ਟੈਕਸਟ ਬਾਕਸ" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "ਯੂਜ਼ਰ ਲਿਸਟ" + +#: src/fe-gtk/setup.c:1703 +msgid "Channel switcher" +msgstr "ਚੈਨਲ ਸਵਿੱਚਰ" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "ਰੰਗ" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "ਗੱਲਬਾਤ ਜਾਰੀ ਹੈ" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "ਸਧਾਰਨ" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "ਸਾਊਂਡ" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "ਨੈੱਟਵਰਕ ਸੈੱਟਅੱਪ" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "ਫਾਇਲ ਟਰਾਂਸਫਰ" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "ਕੈਟਾਗਰੀਆਂ" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "ਕੁਝ ਅਜਿਹੀਆਂ ਤਬਦੀਲੀਆਂ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ, ਜੋ ਕਿ ਮੁੜ ਚਾਲੂ ਕਰਨ ਉਪਰੰਤ ਹੀ ਲਾਗੂ ਹੋ ਸਕਣਗੀਆਂ।" + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: ਮੇਰੀ ਪਸੰਦ" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "ਸਤਰ ਪਾਰਸ ਕਰਨ ਦੌਰਾਨ ਗਲਤੀ" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "ਇਹ ਸੰਕੇਤ ਨੂੰ ਕੇਵਲ %d ਮੁੱਲ ਦਿੱਤੇ ਜਾ ਸਕਦੇ ਹਨ, $%d ਗਲਤ ਹੈ" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "ਟੈਕਸਟ ਫਾਇਲ ਛਾਪੋ" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "ਘਟਨਾ ਸੋਧ" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ ਅੰਕ" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "ਇਥੋਂ ਲੋਡ..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "ਸਭ ਦੀ ਜਾਂਚ" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: URL ਖੋਜੀ" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "ਲਿਸਟ ਸਾਫ਼" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "ਚੁਣੇ URL ਦੀ ਕਾਪੀ ਕਰੋ" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "ਕਾਪੀ ਕਰੋ" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "ਲਿਸਟ ਫਾਇਲ `ਚ ਸੰਭਾਲੋ" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d ops, %d ਕੁੱਲ" + +#~ msgid "%C18*$t$1%O $2" +#~ msgstr "%C18*$t$1%O $2" + +#~ msgid "%C21*%O$t%C21%B$1%O%C21 $2" +#~ msgstr "%C21*%O$t%C21%B$1%O%C21 $2" + +#~ msgid "%C18%B%B$4$1%O%C18%O$t$2" +#~ msgstr "%C18%B%B$4$1%O%C18%O$t$2" + +#~ msgid "$4%C21%B$1%O%C21$t$2" +#~ msgstr "$4%C21%B$1%O%C21$t$2" + +#~ msgid "%C28-%C29$1/$2%C28-%O$t$3" +#~ msgstr "%C28-%C29$1/$2%C28-%O$t$3" + +#~ msgid "$1$t$2" +#~ msgstr "$1$t$2" + +#~ msgid "%C19>%O$1%C19<%O$t$2" +#~ msgstr "%C19>%O$1%C19<%O$t$2" + +#~ msgid "%C16*%O$t$1%O" +#~ msgstr "%C16*%O$t$1%O" + +#~ msgid "%C28-%C29$1%C28-%O$t$2" +#~ msgstr "%C28-%C29$1%C28-%O$t$2" + +#~ msgid "%C28*%C29$3$1%C28*$t%O$2" +#~ msgstr "%C28*%C29$3$1%C28*$t%O$2" + +#~ msgid "%C18%B%B$3$1%O$t$2" +#~ msgstr "%C18%B%B$3$1%O$t$2" + +#~ msgid "%C22*%O$t$1" +#~ msgstr "%C22*%O$t$1" + +#~ msgid "%C31%B%B$4$1%O%C30$t$2" +#~ msgstr "%C31%B%B$4$1%O%C30$t$2" + +#~ msgid "PID" +#~ msgstr "PID" + +#~ msgid "France, Metropolitan" +#~ msgstr "ਫਰਾਂਸ" + +#~ msgid "Neutral Zone" +#~ msgstr "ਨਿਰਪੱਖ ਜ਼ੋਨ" + +#~ msgid "US Minor Outlying Islands" +#~ msgstr "ਅਮਰੀਕੀ ਛੋਟੇ ਬਾਹਰੀ ਟਾਪੂ" + +#~ msgid "Direct client-to-client" +#~ msgstr "ਸਿੱਧਾ ਕਲਾਂਇਟ ਤੋਂ ਕਲਾਂਇਟ" + +#~ msgid "Send File" +#~ msgstr "ਫਾਇਲ ਭੇਜੋ" + +#~ msgid "Offer Chat" +#~ msgstr "ਗੱਲਬਾਤ ਸੱਦਾ" + +#~ msgid "Abort Chat" +#~ msgstr "ਗੱਲਬਾਤ ਅਧੂਰੀ ਛੱਡੋ" + +#~ msgid "Userinfo" +#~ msgstr "ਉਪਭੋਗੀ ਜਾਣਕਾਰੀ" + +#~ msgid "Clientinfo" +#~ msgstr "ਕਲਾਂਇਟ ਜਾਣਕਾਰੀ" + +#~ msgid "Time" +#~ msgstr "ਸਮਾਂ" + +#~ msgid "Finger" +#~ msgstr "ਫਿੰਗਰ" + +#~ msgid "Oper" +#~ msgstr "ਮੁੱਖੀ" + +#~ msgid "Kill this user" +#~ msgstr "ਇਹ ਉਪਭੋਗੀ ਖਤਮ" + +#~ msgid "Mode" +#~ msgstr "ਮੋਡ" + +#~ msgid "Give Half-Ops" +#~ msgstr "ਅੱਧਾ-ਮੁੱਖੀ ਦਿਓ" + +#~ msgid "Take Half-Ops" +#~ msgstr "ਅੱਧਾ-ਮੁੱਖੀ ਖੋਹੋ" + +#~ msgid "Ignore" +#~ msgstr "ਅਣਡਿੱਠਾ" + +#~ msgid "Ignore User" +#~ msgstr "ਉਪਭੋਗੀ ਅਣਡਿੱਠਾ" + +#~ msgid "UnIgnore User" +#~ msgstr "ਨਾ-ਅਣਡਿੱਠਾ ਉਪਭੋਗੀ" + +#~ msgid "Info" +#~ msgstr "ਜਾਣਕਾਰੀ" + +#~ msgid "Who" +#~ msgstr "ਕੌਣ" + +#~ msgid "DNS Lookup" +#~ msgstr "DNS ਖੋਜ" + +#~ msgid "Trace" +#~ msgstr "ਜਾਂਚ" + +#~ msgid "UserHost" +#~ msgstr "ਉਪਭੋਗੀ ਮੇਜ਼ਬਾਨ" + +#~ msgid "External" +#~ msgstr "ਬਾਹਰੀ" + +#~ msgid "Traceroute" +#~ msgstr "ਮਾਰਗ ਜਾਂਚ" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "Unban" +#~ msgstr "ਪਾਬੰਦੀ ਹਟਾਓ" + +#~ msgid "I can't save an empty list!" +#~ msgstr "ਖਾਲੀ ਸੂਚੀ ਸੰਭਾਲੀ ਨਹੀਂ ਜਾ ਸਕਦੀ ਹੈ!" + +#~ msgid "List display options:" +#~ msgstr "ਸੂਚੀ ਦਿੱਖ ਚੋਣ:" + +#~ msgid "Minimum Users:" +#~ msgstr "ਘੱਟੋ-ਘੱਟ ਉਪਭੋਗੀ:" + +#~ msgid "Maximum Users:" +#~ msgstr "ਵੱਧੋ-ਵੱਧ ਉਪਭੋਗੀ:" + +#~ msgid "Regex Match:" +#~ msgstr "ਨਿਯਮਤ ਮੇਲ:" + +#~ msgid "Apply Match to:" +#~ msgstr "ਮੇਲ ਲਾਗੂ ਕਰੋ:" + +#~ msgid "Apply" +#~ msgstr "ਲਾਗੂ" + +#~ msgid "Refresh the list" +#~ msgstr "ਸੂਚੀ ਤਾਜ਼ਾ" + +#~ msgid "Save the list" +#~ msgstr "ਸੂਚੀ ਸੰਭਾਲੋ" + +#~ msgid "From:" +#~ msgstr "ਵੱਲੋਂ:" + +#~ msgid "To:" +#~ msgstr "ਵੱਲ:" + +#~ msgid "Size:" +#~ msgstr "ਅਕਾਰ:" + +#~ msgid "Started:" +#~ msgstr "ਸ਼ੁਰੂ:" + +#~ msgid "Speed limit:" +#~ msgstr "ਗਤੀ ਸੀਮਾ:" + +#~ msgid "MIME Type" +#~ msgstr "MIME ਕਿਸਮ" + +#~ msgid "XChat: File Receive List" +#~ msgstr "XChat: ਫਾਇਲ ਪ੍ਰਾਪਤੀ ਸੂਚੀ" + +#~ msgid "Open" +#~ msgstr "ਖੋਲੋ" + +#~ msgid "Ack" +#~ msgstr "Ack" + +#~ msgid "To" +#~ msgstr "ਵੱਲ" + +#~ msgid "To/From" +#~ msgstr "ਵੱਲ/ਵੱਲੋਂ" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "ਕੋਈ ਹੋਰ ਟੈਬ ਨਹੀਂ ਖੁੱਲੀ, xchat ਬੰਦ ਕਰਨਾ ਏਂ?" + +#~ msgid "Show join/part messages" +#~ msgstr "ਦਾਖਲ/ਬਾਹਰ ਸੁਨੇਹੇ ਵੇਖਾਓ" + +#~ msgid "Color paste" +#~ msgstr "ਰੰਗ ਚੇਪੋ" + +#~ msgid "Go to" +#~ msgstr "ਜਾਓ" + +#~ msgid "_Close Tab" +#~ msgstr "ਟੈਬ ਬੰਦ(_C)" + +#~ msgid "Settings saved." +#~ msgstr "ਵਿਵਸਥਾ ਸੰਭਾਲੀ ਗਈ" + +#~ msgid "_Layout" +#~ msgstr "ਖਾਕਾ(_L)" + +#~ msgid "Notify List..." +#~ msgstr "ਸੂਚਨਾ ਸੂਚੀ..." + +#~ msgid "_Close Window" +#~ msgstr "ਝਰੋਖਾ ਬੰਦ(_C)" + +#~ msgid "User" +#~ msgstr "ਉਪਭੋਗੀ" + +#~ msgid "Server" +#~ msgstr "ਸਰਵਰ" + +#~ msgid "Save rawlog" +#~ msgstr "ਕੱਚਾ-ਲਾਗ ਸੰਭਾਲੋ" + +#~ msgid "Save rawlog..." +#~ msgstr "ਕੱਚਾ-ਲਾਗ ਸੰਭਾਲੋ..." + +#~ msgid "Close" +#~ msgstr "ਬੰਦ ਕਰੋ" + +#~ msgid "C_hannels to join:" +#~ msgstr "ਜੁੜਨ ਲਈ ਚੈਨਲ(_h):" + +#~ msgid "XChat: Server List" +#~ msgstr "XChat: ਸਰਵਰ ਸੂਚੀ" + +#~ msgid "Completes nick names without using the TAB key" +#~ msgstr "ਟੈਬ ( TAB) ਸਵਿੱਚ ਦੀ ਵਰਤੋਂ ਕੀਤੇ ਬਿਨਾਂ ਨਾਂ ਮੁਕੰਮਲ ਕਰੋ" + +#~ msgid "Input Box Appearance" +#~ msgstr "ਇੰਪੁੱਟ ਬਕਸਾ ਦਿੱਖ" + +#~ msgid "Resizable user list" +#~ msgstr "ਮੁੜ ਅਕਾਰਯੋਗ ਉਪਭੋਗੀ ਸੂਚੀ" + +#~ msgid "Left" +#~ msgstr "ਖੱਬਾ" + +#~ msgid "Right" +#~ msgstr "ਸੱਜਾ" + +#~ msgid "Tabs Location" +#~ msgstr "ਟੈਬ ਸਥਿਤੀ" + +#~ msgid "Convert spaces to underscore before sending" +#~ msgstr "ਭੇਜਣ ਤੋਂ ਪਹਿਲਾਂ ਖਾਲੀ ਥਾਂ ਨੂੰ ਅੰਡਰਸਕੋਰ ਵਿੱਚ ਬਦਲੋ" + +#~ msgid "(Can be a text file relative to ~/.xchat2/)." +#~ msgstr "(~/.xchat2/ ਦੇ ਅਨੁਸਾਰ ਇੱਕ ਪਾਠ ਫਾਇਲ ਹੋ ਸਕਦੀ ਹੈ)।" + +#~ msgid "(Can be a text file relative to config dir)." +#~ msgstr "(ਇੱਕ ਸੰਰਚਿਤ ਡਾਇਰੈਕਟਰੀ ਦੇ ਅਨੁਸਾਰ ਇੱਕ ਪਾਠ ਫਾਇਲ ਹੋ ਸਕਦੀ ਹੈ)।" + +#~ msgid "Flash taskbar on highlighted messages" +#~ msgstr "ਉਘੜੇ ਸੁਨੇਹੇ ਤੇ ਕੰਮ-ਪੱਟੀ ਨੂੰ ਝਲਕਾਓ" + +#~ msgid "Beep on channel messages" +#~ msgstr "ਚੈਨਲ ਸੁਨੇਹੇ ਤੇ ਆਵਾਜ਼" + +#~ msgid "(See strftime manpage for details)." +#~ msgstr "(ਵੇਰਵੇ ਲਈ strftime ਲਈ ਸਫਾ ਵੇਖੋ)" + +#~ msgid "Open an irc:// url" +#~ msgstr "ਇੱਕ irc:// url ਖੋਲੋ" + +#~ msgid "irc://server:port/channel" +#~ msgstr "irc://server:port/channel" + +#~ msgid "Execute a xchat command" +#~ msgstr "ਇੱਕ xchat ਕਮਾਂਡ ਚਲਾਓ" + +#~ msgid "\"Command to execute\"" +#~ msgstr "\"ਚਲਾਉਣ ਲਈ ਕਮਾਂਡ\"" + +#~ msgid "Prints some text to the current tab/window" +#~ msgstr "ਮੌਜੂਦਾ ਟੈਬ/ਝਰੋਖੇ ਵਿੱਚ ਕੁਝ ਪਾਠ ਛਾਪੋ" + +#~ msgid "\"Text to print\"" +#~ msgstr "\"ਛਾਪਣ ਲਈ ਪਾਠ\"" + +#~ msgid "Change the context to the channel" +#~ msgstr "ਚੈਨਲ ਤੋਂ ਪਰਸੰਗ ਲਵੋ" + +#~ msgid "Change the context to the server" +#~ msgstr "ਸਰਵਰ ਤੋਂ ਪਰਸੰਗ ਤਬਦੀਲ" + +#~ msgid "server" +#~ msgstr "ਸਰਵਰ" + +#~ msgid "Get some informations from xchat" +#~ msgstr "xchat ਤੋਂ ਕੁਝ ਜਾਣਕਾਰੀ ਲਵੋ" + +#~ msgid "id" +#~ msgstr "id" + +#~ msgid "Get settings from xchat" +#~ msgstr "xchat ਤੋਂ ਸਥਾਪਨ ਲਵੋ" + +#~ msgid "name" +#~ msgstr "ਨਾਂ" + +#~ msgid "Failed to complete SetContext" +#~ msgstr "ਪਰਸੰਗ ਪੂਰਾ ਕਰਨ ਲਈ ਅਸਫ਼ਲ ਹੈ" + +#~ msgid "Failed to complete print" +#~ msgstr "ਛਾਪਣ ਲਈ ਅਸਫ਼ਲ ਹੈ" + +#~ msgid "Failed to complete GetInfo" +#~ msgstr "ਜਾਣਕਾਰੀ ਲੈਣ ਲਈ ਅਸਫ਼ਲ ਹੈ" + +#~ msgid "Failed to complete GetPrefs" +#~ msgstr "ਪਸੰਦ ਲੈਣ ਲਈ ਅਸਫ਼ਲ ਹੈ" + +#~ msgid "%s doesn't exist\n" +#~ msgstr "%s ਮੌਜੂਦ ਨਹੀਂ ਹੈ\n" + +#~ msgid " : %s\n" +#~ msgstr " : %s\n" + +#~ msgid " loaded successfully!\n" +#~ msgstr " ਸਫ਼ਲਤਾਪੂਰਕ ਲੋਡ ਕੀਤਾ ਗਿਆ!\n" diff --git a/etc/wyatt8740/po/pl.po b/etc/wyatt8740/po/pl.po new file mode 100644 index 0000000..3173385 --- /dev/null +++ b/etc/wyatt8740/po/pl.po @@ -0,0 +1,5901 @@ +# SOME DESCRIPTIVE TITLE. +# This file is put in the public domain. +# Jakub Wasielewski <jakub@wasielewski.info>, 2005. +# Michał Trzebiatowski <hippie_1968@hotmail.com>, 2008, 2009, 2010 +# +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.8.6\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2010-03-10 18:15+0100\n" +"Last-Translator: Michał Trzebiatowski <hippie_1968@hotmail.com>\n" +"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Nie mogę utworzyć ~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Jestem zajęty" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Wychodzi" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* Czatowanie z konta root nie jest zalecane ze względów bezpieczeństwa.\n" +" Należy utworzyć osobne konto użytkownika i używać go do logowania.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Czekam" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Aktywne" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Porażka" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Ukończone" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Połączenie" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Anulowane" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "Nie jestem w stanie odczytać %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Błąd" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s oferuje \"%s\". Czy chcesz to zaakceptować?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Brak aktywnych Połączeń Bezpośrednich\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "TAK " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "NIE " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Zostałeś/aś zasypany/a pakietami CTCP przez %s, ignoruję %s\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "" +"Zostałeś/aś zasypany/a wiadomościami przez użytkownika %s, WYŁĄCZAM " +"automatyczne otwieranie okien/zakładek z nowymi rozmowami.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s obecny\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s nieobecny\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Nie jesteś w żadnym pokoju. Użyj polecenia /join #<nazwa_pokoju>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "" +"Nie jesteś połączony/a z serwerem. Użyj polecenia /server <nazwa_hosta> " +"[<port>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Już zaznaczony jako nieobecny: %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "Już zaznaczony jako obecny.\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "Do uruchomienia tego potrzebna jest powłoka /bin/sh!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Dostępne Polecenia:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Polecenia Użytkownika:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Polecenia zdefiniowane przez Wtyczki:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Wpisz /HELP <polecenia> aby uzyskać więcej informacji lub /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Nierozpoznany argument '%s' zignorowany." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "Taka wtyczka nie została znaleziona.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Ta wtyczka odmawia wyładowania.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <nazwa> <akcja>, dodaje przycisk pod listą użytkowników" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "" +"ALLCHAN <polecenie>, wysyła polecenie do wszystkich pokoi, w których się " +"znajdujesz" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "" +"ALLCHANL <polecenie>, wysyła polecenie do wszystkich pokoi, w których się " +"znajdujesz" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "" +"ALLSERV <polecenia>, wysyła polecenie do wszystkich serwerów, z którymi " +"jesteś połączony/a" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<powód>], ustawia status nieobecności" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "BACK, ustawia status obecności (nie nieobecności)" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <maska> [<rodzaj>], banuje wszystkich pasujących do maski w danym " +"pokoju. Jeśli są oni obecni w tym pokoju te polecenie nie spowoduje ich " +"wyproszenia (musisz być Operatorem Pokoju)" + +#: src/common/outbound.c:3506 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <zmienna> [<wartość>]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "" +"CLEAR [ALL|HISTORY], czyści aktualną zawartość okna lub historię poleceń" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, zamyka aktywne okno/zakładkę" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <kod|maska>, odszukuje kod kraju, np.: pl = Polska" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <pseudonim> <wiadomość>, wysyła wiadomość CTCP do użytkownika o podanym " +"pseudonimie. Typowe wiadomości to VERSION (wersja) oraz USERINFO (informacje " +"o użytkowniku)" + +#: src/common/outbound.c:3516 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "CYCLE [<pokuj>], wyjście i natychmiastowy powrót do pokoju" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <pseudonim> - przyjmuje zaoferowany plik\n" +"DCC SEND [-makszns=#] <pseudonim> [plik] - wysyła plik do kogoś o podanym " +"pseudonimie\n" +"DCC PSEND [-makszns=#] <pseudonim> [plik] - wysyła plik w trybie pasywnym\n" +"DCC LIST - wyświetla listę połączeń " +"bezpośrednich\n" +"DCC CHAT <pseudonim> - oferuje użytkownikowi o podanym " +"pseudonimie\n" +" czat bezpośredni\n" +"DCC PCHAT <pseudonim> - oferuje użytkownikowi o podanym " +"pseudonimie\n" +" czat bezpośredni w trybie " +"pasywnym\n" +"DCC CLOSE <rodzaj> <pseudonim> <plik> - zamyka określone połączenie " +"bezpośrednie\n" +" przykład:\n" +" /dcc close send jasio plik.zip" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <pseudonim>, zabiera uprawnienia półoperatora użytkownikowi o podanym " +"pseudonimie w aktualnym pokoju (musisz być Operatorem Pokoju)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <nazwa>, usuwa przycisk spod listy użytkowników" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <pseudonim>, zabiera uprawnienia operatora użytkownikowi o podanym " +"pseudonimie w aktualnym pokoju (musisz być Operatorem Pokoju)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <pseudonim>, zabiera prawo głosu użytkownikowi o podanym pseudonimie " +"w aktualnym pokoju (musisz być Operatorem Pokoju)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, zamknięcie połączenia z serwerem" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <pseudonim|host|ip>, odszukuje adres IP użytkownika" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <tekst>, wypisuje lokalnie zadany tekst" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <polecenie>, uruchamia polecenie. Jeśli podana jest opcja -o " +"wówczas wynik jest wysyłany do aktualnego pokoju, w innym wypadku jest " +"wyświetlany lokalnie" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, wysyła procesowi sygnał SIGCONT" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], zabija uruchomiony proces w aktualnej sesji. Jeśli podana " +"jest opcja -9, proces otrzymuje sygnał SIGKILL" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, wysyła procesowi sygnał SIGSTOP" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, wysyła dane na standardowe wejście procesu" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHHQ, opróżnia aktualną kolejkę wysyłkową serwera" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" +"GATE <host> [<port>], włączenie pośredniczenia przez host, z domyślnym 23 " +"portem" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <pseudonim> <hasło>, Rozłącza \"zjawy\" używające <nick>" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" +"HOP <pseudonim>, nadaje status Półoperatora Pokoju (musisz być Operatorem " +"Pokoju)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <hasło>, identyfikuje Cię wobec serwera" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <maska> <rodzaje..> <opcje..>\n" +" maska - maska ignorowanego hosta, przykład: *!*@*.tpnet.pl\n" +" rodzaje - zakres ignorowania, jeden rodzaj lub ALL:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" opcje - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <pseudonim> [<pokój>], wysyła zaproszenie do pokoju, domyślnie jest " +"to aktualny pokój (musisz być Operatorem Pokoju)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <pokój>, wejście do pokoju" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <pseudonim>, wyprasza użytkownika z aktualnego pokoju (musisz być " +"Operatorem Pokoju)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <pseudonim>, banuje a następnie wyprasza użytkownika z aktualnego " +"pokoju (musisz być Operatorem Pokoju)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, wymuszenie sprawdzenia opóźnienia w komunikacji z serwerem" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <fragment>, wyszukanie fragmentu w buforze" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <plik>, załadowanie wtyczki lub skryptu" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, masowe odebranie statusu półoperatora wszystim w aktualnym pokoju " +"(musisz być Operatorem Pokoju)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, masowe odebranie statusu operatora wszystim w aktualnym pokoju " +"(musisz być Operatorem Pokoju)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <akcja>, wysyła akcję do aktualnego pokoju (akcje pisane są 3. osobie, " +"tak jak /me skacze)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, wyrzuca wszystkich oprócz Ciebie w bieżącym pokoju (musisz być " +"Operatorem Pokoju)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, daje wszystkim użytkownikom status operatora w bieżącym pokoju (musisz " +"być Operatorem Pokoju)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "" +"MSG <pseudonim> <wiadomość>, wysyła prywatną wiadomość do użytkownika o " +"podanym pseudonimie" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, wykazuje wszystkie pseudonimy w bieżącym pokoju" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <pseudonim> <wiadomość>, wysyła ogłoszenie CTCP" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <nazwa hostu> [<port>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <pseudonim>, zmiana pseudonimu" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <pseudonim/pokoj> <wiadomość>, wysyła ogłoszenie. Ogłoszenia to " +"rodzaj wiadomości, które powinny być automatycznie odpowiedziane" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n network1[,network2,...]] [<pseudonim>], wyświetla listę " +"powiadomień lub dodaje kogoś do niej" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" +"OP <pseudonim>, daje pseudonimu status operatora pokoju (musisz być " +"Operatorem Pokoju)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<pokoj>] [<powód>], opuszcza pokoj, domyślnie obecny" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "" +"PING <pseudonim | pokoj>, wysyła ping do pseudonimu lub pokoju za pomocą CTCP" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "QUERY [-nofocus] <pseudonim>, otwiera nowe okno dialogowe do kogoś" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<powód>], odłącza się od obecnego serwera" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <tekst>, wysyła surowy tekst do serwera" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<host>] [<port>] [<hasło>], można użyć jako /RECONNECT aby " +"ponownie połączyć się do bieżącego serwera lub /RECONNECT ALL aby ponownie " +"połączyć się do wszystkich otwartych serwerów" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<host>] [<port>] [<hasło>], można użyć jako /RECONNECT aby " +"ponownie połączyć się do bieżącego serwera lub /RECONNECT ALL aby ponownie " +"połączyć się do wszystkich otwartych serwerów" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <tekst>, wysyła surowe dane do xchat, jakby były otrzymywane z serwera " +"IRC" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <tekst>, wysyła tekst do obiektu w bieżącym oknie" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <pseudonim> [<plik>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <host> <port> <pokój>, łączy i wchodzi do pokoju" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <host> <port> <pokój>, łączy i wchodzi do pokoju" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <host> [<port>] [<hasło>], łączy się z serwerem, domyślny port " +"to 6667 dla zwykłych połączeń, i 9999 dla połączeń SSL" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <host> [<port>] [<hasło>], łączy się z serwerem, domyślny port to 6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <zmienna> [<wartość>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<pozycja>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<temat>], określa temat jeśli jest podany, inaczej pokazuje bieżący " +"temat" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" +"\n" +"TRAY -f <limit czasu> <plik1> [<plik2>] Miga w zasobniku pomiędzy dwoma " +"ikonami.\n" +"TRAY -f <nazwa pliku> Ustawia zasobnik do ustalonej ikony.\n" +"TRAY -i <numer> Miga w zasobniku wewnętrzną ikoną.\n" +"TRAY -t <tekst> Ustawia tooltip zasobnika.\n" +"TRAY -b <tytuł> <tekst> Ustawia balon zasobnika." + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <maska> [<maska>...], odbanuje podane maski." + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <maska> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <nazwa>, usuwa wtyczkę lub skrypt" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, otwiera URL w twojej przeglądarce" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <pseudonim1> <pseudonim2> itp, podświetla pseudonim(y) w " +"liście użytkowników pokoju" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "" +"VOICE <pseudonim>, przyznaje komuś prawo głosu (musisz być Operatorem Pokoju)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <wiadomość>, pisze wiadomość do wszystkich pokoi" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <wiadomość>, wysyła wiadomość do wszystkich operatorów w bieżącym " +"pokoju" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Wykorzystanie: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"Nie ma pomocy do tego polecenia.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Polecenie nieznane.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Złe argumenty przekazane temu poleceniu.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Zbyt wiele rekursywnych poleceń użytkownika, przerywam." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Polecenie nieznane. Użyj /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "Żaden symbol xchat_plugin_init; czy to naprawdę wtyczka xchatu?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Czy jesteś pewien/pewna, że ten serwer i/lub port obsługuje SSL?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Nie można rozwiązać nazwy hosta %s\n" +"Sprawdź twoje ustawienia IP!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Nieudane połączenie z serwerem pośredniczącym.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Skocz do następnego serwera w %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Uwaga: nieznane kodowanie \"%s\". Nie będzie stosowanej konwersji dla sieci " +"%s." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 dodano do listy powiadomień." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Lista banów:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tNie możesz wejść do pokoju%C26 %B$1 %O(Jesteś zbanowany)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 zmienia pseudonim na $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 nakłada BAN na $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tPokój $1 został utworzony $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "" +"%C22*%O$t%C26$1%O odbiera status Półoperatora Pokoju użytkownikowi%C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O odbiera status Operatora Pokoju użytkownikowi%C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O odbiera prawo głosu użytkownikowi%C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 ustawia wyjątek na $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "" +"%C22*%O$t%C26$1%O nadaje status Półoperatora Pokoju użytkownikowi%C26 $2" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 ustawia zaproszenie dla $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UPokój Użyt. Temat" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 ustawia opcje $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Opcje Pokoju $1: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O nadaje status Operatora Pokoju użytkownikowi%C26 $2" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 usuwa wyjątek na $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 usuwa zaproszenie dla $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 usuwa hasło dostępu do pokoju" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 usuwa limit użytkowników" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 ustawia hasło dostępu do pokoju na $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 ustawia limit pokoju na $2 użytkowników" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 usuwa BANA z $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O daje głos użytkownikowi%C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Połączenie nawiązane. Teraz się loguję..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22Łączenie z $1 ($2) port $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21Połączenie nieudane. Błąd: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tNadeszło żądanie CTCP $1 od użytkownika $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tNadeszło żądanie CTCP $1 od użytkownika $2 (do $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tNadeszło żądanie CTCP Sound $1 od użytkownika $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tNadeszło żądanie CTCP Sound $1 od użytkownika $2 (do $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "" +"%C22*%O$tOdbieranie Czat Bezpośredni z użytkownikiem %C26$1%O zakończony." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "" +"%C22*%O$tCzat Bezpośredni rozpoczęty z użytkownikiem %C26$1 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tCzat Bezpośredni z użytkownikiem %C26$1%O przerwany ($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tNadeszło zaproszenie na Czat Bezpośredni od użytkownika $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tWysyłam zaproszenie na Czat Bezpośredni do użytkownika $1" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "" +"%C22*%O$tZaproszenie na Czat do użytkownika $1 już wcześniej zostało wysłane" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "" +"%C22*%O$tPróba nawiązania Połączenia Bezpośredniego $1 z użytkownikiem%C26 " +"$2%O nie powiodła się (błąd=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tOdebrałem '$1%O' od użytkownika $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 Typ do/z Stan Rozmiar Poz Plik " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O." +"%010%C22*%O$tContents of packet: $2" +msgstr "" +"%C22*%O$tNadszedł nieprawidłowy wniosek Czatu Bezpośredniego od %C26$1%O." +"%010%C22*%O$tZawartość pakietu: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tOferuję%C26 $1%O użytkownikowi%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tNie ma takiej oferty Czatu Bezpośredniego." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "" +"%C22*%O$tOdbieranie%C26 $2%O Czatu Bezpośredniego od użytkownika%C26 $1%O " +"zakończone." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tOdbieranie%C26 $1%O Czatu Bezpośredniego z%C26 $3%O gotowe " +"%C30[%C26$4%O cps%C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "" +"%C22*%O$tPołączenie odbierania Czatu Bezpośredniego zrealizowane do%C26 $1 " +"%C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "" +"%C22*%O$tOdbieranie Czatu Bezpośredniego%C26 $1%O z%C26 $3%O nie powiodło " +"się ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "" +"%C22*%O$tOdbieranie Czatu Bezpośredniego: Nie można otworzyć $1 do pisania " +"($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "" +"%C22*%O$tPlik%C26 $1%C już istnieje, zapisuje go w zamian jako%C26 $2%O." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "" +"%C22*%O$t%C26$1 %Owystąpił z wnioskiem o wznowienie%C26 $2 %Cz%C26 $3%C." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "" +"%C22*%O$tWysyłanie%C26 $2%O Czatu Bezpośredniego do użytkownika%C26 $1%O " +"zakończone." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tWysyłanie%C26 $1%O Czatu Bezpośredniego do%C26 $2%O gotowe " +"%C30[%C26$4%O cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "" +"%C22*%O$tPołączenie wysyłania Czatu Bezpośredniego zrealizowane z%C26 $1 " +"%C30[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "" +"%C22*%O$tWysyłanie Czatu Bezpośredniego%C26 $1%O do%C26 $2%O nie powiodło " +"się. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Ozaoferował%C26 $2 %O(%C26$3 %Obajtów)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oprzy%C26 $3 %Czawieszony - przerywam." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oprzy%C26 $3 %Oprzekroczył czas - przerywam." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 usunięty z listy powiadomień." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tRozłączony ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tTwój adres IP: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O dodano do listy ignorowanych." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "Sposób ignorowania użytkownika %C26$1%O został zmieniony." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "" +"%C24,18 Maska hosta PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O usunięty z listy ignorowanych." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr "Lista ignorowanych jest pusta." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "" +"%C22*%O$tNie możesz wejść do pokoju%C26 %B$1 %O(Wymagane jest zaproszenie)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "" +"%C22*%O$tOtrzymałeś/aś zaproszenie do pokoju%C26 $1%O od użytkownika%C26 " +"$2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) wchodzi do pokoju $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "" +"%C22*%O$tNie możesz wejść do pokoju%C26 %B$1 %O(Wymagane jest podanie hasła)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 wyprosił/a użytkownika $2 z pokoju $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "" +"%C22*%O$tZostałeś/aś rozłączona przez Operatora o pseudonimie $1 ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD Odpuszczony." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 jest obecnie używany. Próbuję ponownie z $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$tPseudonim jest obecnie używany przez kogoś innego. Użyj polecenia /" +"NICK aby wybrać inny." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tNie ma takiego Czatu Bezpośredniego." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tAktualnie nie ma uruchomionego procesu" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tLista powiadomień jest pusta." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Lista Powiadomień " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 użytkowników na liście powiadomień." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tPowiadomienie: $1 właśnie opuścił/a czat ($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tPowiadomienie: $1 właśnie się pojawił/a ($3)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) opuścił/a pokój $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) opuścił/a pokój $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tOdpowiedź na ping $1: $2 sekund(y)" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tBrak odpowiedzi na ping przez $1 sekund, rozłączanie." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tProces jest już uruchomiony" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 opuścił/a czat (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 ustawia opcje%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Operatorzy%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tSzukam numeru IP dla%C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22Połączony." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22Szukam $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tZatrzymano poprzednie próby połączenia (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29Temat rozmowy w pokoju $1%C %C29to: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 zmienia temat rozmowy na: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "" +"%C29*%O$t%C29Temat w pokoju $1%C %C29został ustawiony przez $2%C %C29, dnia: " +"$3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tNieznany host. Może jest błąd w pisowni?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "" +"%C22*%O$tNie możesz wejść do pokoju%C26 %B$1 %O(Limit użytkowników został " +"wyczerpany)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Użytkownicy w pokoju $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cjest nieobecny %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OKoniec listy WHOIS." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O nieaktywny%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O nieaktywny%C26 $2%O, zalogowany od:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" +"%C22*%O$t%C28[%O$1%C28] %Oprawdziwy user@host%C27 $2%O, prawdziwy adres " +"IP%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Teraz rozmawiasz w pokoju $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tZostałeś/aś wyproszony/a z pokoju $2 przez $3 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tOpuszczasz pokój $3" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tOpuszczasz pokój $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tZaprosiłeś%C26 $1%O do%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tZmieniasz pseudonim na $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "Załadowany dziennik z" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** ZAKOŃCZ LOGOWANIE O %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** ZACZNIJ LOGOWANIE O %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Nie można otworzyć pliku(-ów) dziennika do pisania.\n" +" Sprawdź uprawnienia %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Wiadomość z lewej" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Wiadomość z prawej" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "Pseudonim wchodzącej osoby" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "Zostaje połączony pokój" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "Host" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Pseudonim" + +#: src/common/text.c:973 +msgid "The action" +msgstr "Akcja" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Znak trybu" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Rozpoznany tekst" + +#: src/common/text.c:980 +msgid "The text" +msgstr "Tekst" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Wiadomość" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Stary pseudonim" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Nowy pseudonim" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Pseudonim osoby, która zmieniła temat" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Temat rozmowy" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Pokój" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "Pseudonim wypraszającego" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "Wypraszana osoba" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "Pokój" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "Powód" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "Pseudonim osoby wychodzącej" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "Czas" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "Twórca" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Pseudonim" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Powód" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Host" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "Kto jest z" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "Czas w postaci x.x (zobacz poniżej)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "Pokój o który chodzi" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "Dzwięk" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "Pseudonim osoby" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "Żądanie CTCP" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "Pseudonim osoby, która ustawiła hasło dostępu" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "Hasło" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "Pseudonim osoby, która ustawiła limit" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "Limit" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "Pseudonim osoby, która dała prawa operatora" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "Pseudonim osoby, która otrzymała prawa operatora" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "Pseudonim osoby, która otrzymała prawa półoperatora" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "Pseudonim osoby, która dała prawa półoperatora" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "Pseudonim osoby, która miała prawo głosu" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "Pseudonim osoby, której dano prawo głosu" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "Pseudonim banującej osoby" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "Maska bana" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "Pseudonim, który ustawił hasło" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "Pseudonim, który ustawił limit" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "Pseudonim osoby, która użyła prawa operatora" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "Pseudonim osoby, której zabrano prawa operatora" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "Pseudonim osoby, która użyła prawa półoperatora" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Pseudonim osoby, której zabrano prawa półoperatora" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "Pseudonim osoby, która użyła prawo głosu" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "Pseudonim osoby, której zabrano prawo głosu" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "Pseudonim osoby, która usunęła ban" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "Pseudonim osoby, która ustawiła wyjątek" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "Maska wyjątku" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "Pseudonim osoby, która usunęła wyjątek" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "Pseudonim osoby, która wysłała zaproszenie" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "Maska zaproszenia" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "Pseudonim osoby, która usunęła zaproszenie" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "Pseudonim osoby, która ustawiła tryb" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "Znak trybu (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "Litera trybu" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "Pokój który będzie ustawiony" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Użytkownik" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Personalia" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Członkostwo pokoju/\"jest operatorem IRC\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Informacje o Serwerze" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Czas nieaktywności" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Data wejścia" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Powód nieobecności" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Wiadomość" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Konto" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "Prawdziwy user@host" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "Prawdziwy adres IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Nazwa Pokoju" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Tekst" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Nazwa Serwera" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Pseudonim osoby wysyłającej zaproszenie" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Użytkownicy" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Używany pseudonim" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Próbowany pseudonim" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Port" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Sieć" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Opcje" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "Adres IP" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "Rodzaj Połączenia Bezpośredniego" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Nazwa pliku" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Docelowa nazwa pliku" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "ZNS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Ścieżka" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Wysłane" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Rozmiar" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "String DCC" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Liczba pozycji powiadamiających" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Stara Nazwa pliku" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Nowa Nazwa pliku" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Odbiorca" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Maska hosta" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Nazwa hosta" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "Pakiet" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Sekundy" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Pseudonim zaproszonej osoby" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Maska bana" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Kto ustawił bana" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Czas bana" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Błąd analizy zdarzenia %s.\n" +"Ładuje domyślny." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"Nie można odczytać pliku dźwiękowego:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "Odległy host zamknął połączenie" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Odmowa połączenia" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Brak drogi do hosta" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Połączenie wygasło" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Nie można przypisać tego adresu" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Połączenie zerwane przez drugą stronę" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Wyspa Wniebowstąpienia" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Andora" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Zjednoczone Emiraty Arabskie" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Afganistan" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Antigua i Barbuda" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Albania" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Armenia" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Antyle Holenderskie" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Antarktyka" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Argentyna" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "Odwrotny DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Samoa Amerykańskie" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Austria" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Australia" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Wyspy Alandzkie" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Azerbejdżan" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Bośnia i Hercegowina" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Bangladesz" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Belgia" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Bułgaria" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Bahrajn" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Przedsiębiorstw" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Bermudy" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Brunei Darussalam" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Boliwia" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Brazylia" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Bahamy" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Bhutan" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Wyspa Bouveta" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Białoruś" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Kanada" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Wyspy Kokosowe" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "Demokratyczna Republika Kongo" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "Republika Środkowoafrykańska" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Kongo" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Szwajcaria" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Wybrzeże Kości Słoniowej" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Wyspy Kuka" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Czile" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Kamerun" + +#: src/common/util.c:898 +msgid "China" +msgstr "Chiny" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Kolumbia" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Domena komercyjna" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Kostaryka" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Serbia i Czarnogóra" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Kuba" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Republika Zielonego Przylądka" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Wyspa Wielkanocna" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Cypr" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "Czechy" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Niemcy" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Dżibuti" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Dania" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Dominika" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "Republika Dominikany" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Algieria" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Ekwador" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Instytucja Naukowa" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Estonia" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Egipt" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Zachodnia Sahara" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Erytrea" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Hiszpania" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Etiopia" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Unia Europejska" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Finlandia" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Fidżi" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Falklandy" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Mikronezja" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Wyspy Owcze" + +#: src/common/util.c:928 +msgid "France" +msgstr "Francja" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Wielka Brytania" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Gruzja" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Gujana Francuska" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Brytyjskie Wyspy Kanału" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Ghana" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Grenlandia" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Gwinea" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Domena Rządowa" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Gwadelupa" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Gwinea Równikowa" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Grecja" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Georgia Południowa i Sandwich Południowy" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Gwatemala" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Gwinea Bissau" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Gujana" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Wyspy Heard i McDonalda" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Chorwacja" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Węgry" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Indonezia" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Irlandia" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Izrael" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Wyspa Man" + +#: src/common/util.c:959 +msgid "India" +msgstr "Indie" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Informacyjne" + +#: src/common/util.c:961 +msgid "International" +msgstr "Międzynarodowe" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Brytyjskie Terytorium Oceanu Indyjskiego" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Irak" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Iran" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Islandia" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Włochy" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Jamajka" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Jordania" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Japonia" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Kenia" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Kirgistan" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Kambodża" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Komory" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "Saint Kitts i Nevis" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Korea Północna" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Korea Południowa" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Kuwejt" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Kajmany (wyspy)" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Kazachstan" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Liban" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Saint Lucia" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Liberia" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Litwa" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Luksemburg" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Łotwa" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Libia" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Maroko" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Monako" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Mołdawia" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "Medycyna Stanów Zjednoczonych" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Madagaskar" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Wyspy Marshalla" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Domena wojskowa" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Macedonia" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Mongolia" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Makau" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Mariany Północne" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Martynika" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Mauretania" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Montserrat (wyspa)" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Mauritius" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Malediwy" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Meksyk" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Malezia" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Mozambik" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Namibia" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Nowa Kaledonia" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Sieć Internic" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Norfolk" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Nigeria" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Nikaragua" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Holandia" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Norwegia" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Nowa Zelandia" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Organizacja Internic non-profit" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Polinezja Francuska" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Papua-Nowa Gwinea" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Filipiny" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Polska" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "Saint-Pierre i Miquelon" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Portoryko" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Terytorium Palestyńskie" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Portugalia" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Paragwaj" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Katar" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Reunion" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Rumunia" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "ARPAnet starej szkoły" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Rosja" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Rwanda" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Arabia Saudyjska" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Wyspy Salomona" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Seszele" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Sudan" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Szwecja" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Singapur" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "Święta Helena" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Słowenia" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Wyspy Svalbard i Jana Mayena" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Słowacja" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Somalia" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Surinam" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "Wyspy Świętego Tomasza i Książęca" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Były ZSRR" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "Salwador" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Syria" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Suazi" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Wyspy Turks i Caicos" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Czad" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Francuskie Terytoria Południowe" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Tajlandia" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Tadżykistan" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Timor Wschodni" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Tunezia" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Turcja" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Trynidad i Tobago" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Tanzania" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Ukraina" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Wielka Brytania" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "Chameryka" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Urugwaj" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Uzbekistan" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Watykan" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "Saint Vincent i Grenadyny" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Wenezuela" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Brytyjskie Wyspy Dziewicze" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "Wyspy Dziewicze Stanów Zjednoczonych" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Wietnam" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Wyspy Wallis i Futuna" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Jemen" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Majotta" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Jugosławia" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Afryka Południowa" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Zambia" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Nieznany" + +#: src/common/xchat.c:726 +msgid "_Open Dialog Window" +msgstr "_Otwórz Okno Dialogu" + +#: src/common/xchat.c:727 +msgid "_Send a File" +msgstr "_Wyślij Plik" + +#: src/common/xchat.c:728 +msgid "_User Info (WhoIs)" +msgstr "Informacje o _użytkowniku (WhoIs)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "_Dodaj do listy przyjaciół" + +#: src/common/xchat.c:730 +msgid "O_perator Actions" +msgstr "Akcje o_peratora" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Nadaj status Operatora" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Zabierz status Operatora" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Pozwól mówić podczas moderacji" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Zabroń mówić podczas moderacji" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Wypraszanie/Banowanie" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Wyproś" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Banuj" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "Wyproś i Banuj" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Wyjdź z Pokoju" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Wejdź do Pokoju..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Podaj pokój do wejścia:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Połączenia Szkieletowe" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Serwer Pingu" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Ukryj Wersję" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Op" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "<papa>" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Podaj powód wyproszenia %s z pokoju:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Wyślij plik" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Dialog" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Wyślij" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Czat Bezpośredni" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Wyczyść" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "Nie można połączyć się z busem sesji" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "Nie można zakończyć NazwęMaWłaściciel" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "Nie można zakończyć polecenia" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "zdalny dostęp" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "wtyczka do zdalnego dostępu za pomocą DBUS" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Nie można połączyć się z busem sesji: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Nie można nabyć %s: %s\n" + +#: src/fe-gtk/about.c:100 +msgid "About " +msgstr "O programie" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Wieloplatformowy Program do Czatowania" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Wybór Pojedynczego Znaku" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "Połącz ponownie" + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Musisz zaznaczyć jakieś BANY." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "Czy na pewno chcesz usunąć wszystkie bany w %s?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Maska" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "Od" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Data" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" +"Możesz otworzyć okno listy banów tylko wtedy gdy znajdujesz się na karcie " +"pokoju." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "X-Chat: Lista BANÓW (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Usuń" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Skróć" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Odśwież" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Wyświetlanych %d/%d użytkowników w %d/%d pokojach." + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Wybierz nazwę pliku wyjściowego" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "_Wejdź do Pokoju" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "_Kopiuj nazwę pokoju" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "Kopiuj tekst _tematu" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "X-Chat: Lista Pokoi (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "_Szukaj" + +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "_Lista pobierania" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "Zapisz _Listę..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "Pokaż tylko:" + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "pokóje z" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "do" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "użytkownicy." + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "Zobacz w:" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "Nazwa pokoju" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "Typ wyszukiwania:" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "Proste wyszukiwanie" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "Dopasowanie do wzorca (maski)" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "Regularne wyrażenie" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Szukaj:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Wyślij plik do %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Ten plik nie może być wznawiany." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"Nie można uzyskać dostępu do pliku: %s\n" +"%s.\n" +"Wznawianie nie jest możliwe." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"Plik w katalogu pobierania jest większy niż zaoferowany. Wznawianie nie jest " +"możliwe." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "Nie można wznowić tego samego pliku od dwóch osób." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: Wysyłania i Pobierania" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Status" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Plik" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "SzCzZ" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Obydwa" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Wysyłania" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "Pobieraj pliki do:" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Informacje o Tobie" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Plik:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "Adres IP:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Przerwij" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Przyjmij" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Wznów" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Otwórz folder..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "X-Chat: Lista Czatów Bezpośrednich" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Odebrane" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Wysłane" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "Początek" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*NOWY*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "EDYTUJ MNIE" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Nazwa" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Polecenie" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "W Górę" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "W Dół" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Anuluj" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Zapisz" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Dodaj" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Usuń" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Sortuj" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Pomoc" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "Nie łącz automatycznie z serwerem" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "Użyj innego katalogu konfiguracyjnego" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "Nie ładuj automatycznie żadnych wtyczek" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "Pokaż katalog automatycznego ładowania wtyczek" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "Pokaż katalog ustawień użytkownika" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Otwórz adres URL irc://server:port/channel " + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Uruchom polecenie:" + +#: src/fe-gtk/fe-gtk.c:132 +msgid "Open URL or execute command in an existing XChat" +msgstr "Otwórz adres URL lub wykonaj polecenia w istniejącym XChat" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" +"Rozpocznij zminimalizowanie. Poziom 0=normalny 1=minimalizowany 2=w " +"zasobniku" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "poziom" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "pokaż informacje o wersji" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"Nie można otworzyć czcionki:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "Bufor szukania jest pusty.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d bajtów" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Kolejka sieci wysłania: %d bajtów" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"Polecenie Run Command uruchamia dane w \"Dane 1\" tak jakby były wpisane w " +"linii poleceń, w kolejności wciśniętych klawiszy. Tak więc mogą zawierać one " +"tekst (który zostanie wysłany do pokoju/osoby), polecenia lub polecenia " +"użytkownika\n" +" oddziela polecenia, tak że można uruchomić kilka poleceń. Jeśli " +"potrzebujesz \\ w tekście, wpisz \\\\" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"Polecenie Change Page przełącza pomiędzy stronami w notatniku. Ustaw w " +"\"Dane 1\" stronę do której chcesz przełączyć. Jeśli podane jest coś w " +"\"Dane 2\" przełącza to w stosunku do aktualnej pozycji" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"Polecenie Insert in Buffer wstawia zawartość \"Dane 1\" do miejsca wciśnięta " +"kolejności klawiszy przy pozycji kursora" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"Polecenie Scroll Page przewija tekst widżetu o jedną stronę w górę lub w " +"dół. Możliwe wartości dla \"Dane 1\": Up, Down, +1 lub -1." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"Polecenie Set Buffer ustawia wpis gdzie została podana kolejność klawiszy do " +"zawartości \"Dane 1\"" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"Polecenie Last Command ustawia wpis zawierający ostatnie polecenie - tak " +"samo jak naciśnięcie w górę w shellu" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"Polecenie Next Command ustawia wpis zawierający następne polecenie - tak " +"samo jak naciśnięcie w dół w shellu" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"To polecenie zmienia tekst w wpisie aby uzupełnić niekompletny pseudonim lub " +"polecenie. Jeśli podane są \"Dane 1\" dwukrotny tab wybiera ostatni " +"pseudonim, a nie następny" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"To polecenie przewija w górę i w dół, poprzez listę pseudonim. Jeśli podane " +"są \"Dane 1\" wszystko przewija w górę, inaczej w dół" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"To polecenie sprawdza ostatnie wpisane słowo w liście zastąpień a następnie " +"wymienia je, jeżeli znajdzie zgodę" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "To polecenie przenosi bieżącą kartę o jedną pozycję w lewo" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "To polecenie przenosi bieżącą kartę o jedną pozycję w prawo" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "To polecenie przenosi bieżącą grupę kart o jedną pozycję w lewo" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "To polecenie przenosi bieżącą grupę kart o jedną pozycję w prawo" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "Wstaw linię wejściową do historii, ale nie wysyłaj do serwera" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "Wystąpił błąd podczas ładowania konfiguracji klawiszy" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<brak>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Funkc." + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Klawisz" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Akcja" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "X-Chat: Skróty Klawiszowe" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Dane 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Dane 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Błąd podczas otwierania pliku konfiguracyjnego kluczy \n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Nieznana nazwa klawisza %s w pliku konfiguracyjnym klawiszy\n" +"Ładowanie przerwane, należy poprawić %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Nieznana akcja %s w pliku konfiguracyjnym klawiszy\n" +"Ładowanie przerwane, należy poprawić %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Oczekiwana linia danych (począwsza od Dx{:|!}) ale otrzymano:\n" +"%s\n" +"\n" +"Ładowanie przerwane, należy poprawić %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"Plik konfiguracyjny klawiszy jest uszkodzony, ładowanie przerwane\n" +"Należy poprawić %s/keybindings.conf\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "Nie można zapisać do tego pliku." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Nie może odczytać tego pliku." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Ta maska już istnieje." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Prywatne" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Ogłoszenia" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "Połączenia Bezpośrednie" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Zaproś" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Nie ignoruj" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Podaj maskę którą zignorować:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "X-Chat: Lista Ignorowanych" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Statystyki Ignorowania:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Pokój:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Prywatne:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Ogłoszenia:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Zaproszenia:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "Dodaj..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "Nazwa pokoju za krótka, spróbuj ponownie." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: Połączenie Zakończone" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "Połączenie z %s zakończone." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"W oknie listy serwerów, nie został wpisany żaden pokój do automatycznego " +"przystąpienia dla tej sieci." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "Co chcesz następnie zrobić?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "_Nic, chcę później dołączyć do pokoju." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "We_jdź do Pokoju:" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Jeśli znasz nazwę pokoju, do którego chcesz dołączyć, wpisz ją tutaj." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "Otwórz okno z _pokojami w:" + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "Pobieranie listy pokoi może zająć minutę lub dwie." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "_Zawsze pokazuj to okno dialogowe po podłączeniu." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Dialog z" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Temat rozmowy w pokoju %s to: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Brak tematu rozmowy" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"Ten serwer ma wciąż %d pokoji lub dialogów związanych z nim. Zamknąć je " +"wszystkie?" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "Wyjść z XChat?" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "Nie pytaj następnym razem." + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Jesteś połączony z %i sieciami IRC." + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "Czy na pewno chcesz wyjść?" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "Niektóre transfery plików są nadal aktywne." + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "_Minimalizuj do zasobnika" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Wstaw atrybut lub kod koloru" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Pogrubione</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Podkreślone</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Normalny" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Kolory 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Kolory 8-15" + +#: src/fe-gtk/maingui.c:1612 +msgid "_Settings" +msgstr "_Ustawienia" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "_Loguj na dysku" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "_Wczytaj ponowne przewijanie w tył" + +#: src/fe-gtk/maingui.c:1617 +msgid "_Hide Join/Part Messages" +msgstr "_Ukryj wiadomości dołączania/opuszczania" + +#: src/fe-gtk/maingui.c:1625 +msgid "_Extra Alerts" +msgstr "_Dodatkowe Powiadomienia" + +#: src/fe-gtk/maingui.c:1627 +msgid "Beep on _Message" +msgstr "Pojedynczy dzwonek gdy przyjdzie _wiadomość" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "Migaj _ikoną w zasobniku" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "Migaj _paskiem zadań" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +msgid "_Detach" +msgstr "O_dczep" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "_Zamknij" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "Limit użytkowników podaj w formie liczby!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Ochrona Tematu" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Blokada wiadomości z zewnątrz" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Ukryty" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Wymagane zaproszenie" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Moderowany" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Lista BANów" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Hasło" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Limit użytkowników" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Pokaż/Ukryj listę użytkowników" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"Nie można ustawić przezroczystego tła!\n" +"\n" +"Być może uzywasz niezgodnego Menedżera\n" +"okien, który nie jest aktualnie nieobsługiwany.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Podaj nowy pseudonim:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Nieznany host" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Personalia:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Użytkownik:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "Kraj:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Serwer:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "%u minut temu" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Ost. Wiad.:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Usprawiedliwienie:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "%d wybranych pseudonimów." + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"Pasek menu jest teraz ukryty. Możesz przywrócić go ponownie, naciskając " +"klawisz F9 lub klikając prawym przyciskiem myszy w pustej części obszaru " +"tekstu głównego." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Otwórz link w przeglądarce" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Kopiuj zaznaczony URL" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Wejdź do Pokoju" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Wyjdź z Pokoju" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Wyjdź i wejdź spowrotem do pokoju" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "_Usuń z ulubionych" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "_Dodaj do ulubionych" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: Menu Użytkownika" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Dostosuj to Menu..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Lista Pokoi..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Polecenia uzytkownika - Specjalne kody:\n" +"\n" +"%c = bieżący pokój\n" +"%e = bieżąca nazwa sieci\n" +"%m = informacje komputera\n" +"%n = twój pseudonim\n" +"%t = czas/data\n" +"%v = wersja xchat\n" +"%2 = słowo 2\n" +"%3 = słowo 3\n" +"&2 = słowo 2 do końca linii\n" +"&3 = słowo 3 do końca linii\n" +"\n" +"np:\n" +"/cmd john hello\n" +"\n" +"%2 byłoby \"john\"\n" +"&2 byłoby \"john hello\"." + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Przyciski użytkownika - Specjalne kody:\n" +"\n" +"%a = wszystkie wybrane pseudonimy\n" +"%c = bieżący pokój\n" +"%e = bieżąca nazwa sieci\n" +"%h = wybrana nazwa hosta pseudonimu\n" +"%m = informacje komputera\n" +"%n = twój pseudonim\n" +"%s = wybrany pseudonim\n" +"%t = czas/data\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Przyciski dialogu - Specjalne kody:\n" +"\n" +"%a = wszystkie wybrane pseudonimy\n" +"%c = bieżący pokój\n" +"%e = bieżąca nazwa sieci\n" +"%h = wybrana nazwa hosta pseudonimu\n" +"%m = informacje komputera\n" +"%n = twój pseudonim\n" +"%s = wybrany pseudonim\n" +"%t = czas/data\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"Odpowiedzi CTCP - Specjalne kody:\n" +"\n" +"%d = dane (w całym CTCP)\n" +"%e = bieżąca nazwa sieci\n" +"%m = informacje komputera\n" +"%s = pseudonim, który wysłał CTCP\n" +"%t = time/date\n" +"%2 = słowo 2\n" +"%3 = słowo 3\n" +"&2 = słowo 2 do końca linii\n" +"&3 = słowo 3 do końca linii\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"Obsługi URL - Specjalne kody:\n" +"\n" +"%s = string URL\n" +"\n" +"! na początku polecenia wskazuje,\n" +"że wysłana ono jest do\n" +"shella, zamiast do XChat" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: Własne Polecenia Użytkownika" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: Podręczne menu Listy Użytkowników" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Zamień z" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: Zamiana" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: Przechwycone Adresy URL" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: Przyciski pod Listą Użytkowników" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: Przyciski w Rozmowie Prywatnej" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: Odpowiedzi CTCP" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "Li_sta sieci..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "_Nowe" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Zakładka Serwera..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Zakładka Pokoju..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Okno Serwera..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Okno Pokoju..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "Załaduj Wtyczkę lub Skrypt..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "Wyjście" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "_Widok" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "Pasek _Menu" + +#: src/fe-gtk/menu.c:1592 +msgid "_Topic Bar" +msgstr "Pasek _Tematu" + +#: src/fe-gtk/menu.c:1593 +msgid "_User List" +msgstr "Lista _Użytkowników" + +#: src/fe-gtk/menu.c:1594 +msgid "U_serlist Buttons" +msgstr "Przyciski _użytkowników" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "Przyciski _Opcji Pokoju" + +#: src/fe-gtk/menu.c:1597 +msgid "_Channel Switcher" +msgstr "_Przełącznik Pokoi" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "_Zakładki" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "_Śledzenie" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "Mier_niki sieciowe" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Wyłączone" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Graficzny" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "_Serwer" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "_Rozłącz" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "Połącz _ponownie" + +#: src/fe-gtk/menu.c:1613 +msgid "Join a Channel..." +msgstr "Wejdź do Pokoju..." + +#: src/fe-gtk/menu.c:1614 +msgid "List of Channels..." +msgstr "Lista Pokoi..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Oznacz jako nieobecny" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "_Użytkownik" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "Ustawi_enia" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "_Preferencje" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Zaawansowane" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Automatyczna Zamiana..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "Odpowiedzi CTCP..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Przyciski w Rozmowie Prywatnej..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Skróty Klawiszowe..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Zdarzenia Tekstowe..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "Obsługi URL..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Własne Polecenia Użytkownika..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Przyciski pod Listą Użytkowników..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Podręczna Lista Użytkowników..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_Okno" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Lista BANów..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Tablica Znaków..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Czat Bezpośredni..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Transfery plików..." + +#: src/fe-gtk/menu.c:1641 +msgid "Friends List..." +msgstr "Lista przyjaciół..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Lista Ignorowanych..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Wtyczki i Skrypty..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Surowy Log..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "Przechwycone Adresy URL..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Resetuj oznakowanie linii" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "Wy_czyść Tekst" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Szukaj Tekstu..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Zapisz Tekst..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_Pomoc" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "_Zawartość pomocy" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "Sprawdź uaktualnienia" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "_O programie" + +#: src/fe-gtk/menu.c:2147 +msgid "_Attach" +msgstr "_Przyczep" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Ostatnio Widziany" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Rozłączony" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Nigdy" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "%d minut temu" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Dostępny" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Wpisz pseudonim do dodania:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "Zawiadamiaj na tych sieciach:" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "Akceptowana jest lista sieci, dzielonych przecinkami." + +#: src/fe-gtk/notifygui.c:413 +msgid "XChat: Friends List" +msgstr "X-Chat: Lista Przyjaciół" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "Otwórz Dialog" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" +"Nie można odnaleźć 'powiadomienie-wysłane' aby otworzyć balony powiadomień.\n" +"Proszę zainstaluj libnotify." + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "XChat: Podłączony do %u sieci i %u pokoi" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "_Odnów" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "_Ukryty" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "_Migaj przy" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "Wiadomość Pokoju" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "Prywatna wiadomość" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "Podświetlona wiadomość" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "_Zmień status" + +#: src/fe-gtk/plugin-tray.c:602 +msgid "_Away" +msgstr "_Nieobecność" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "_Wstecz" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat: Podświetl wiadomość od: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat: %u wiadomości podświetlonych, najnowsza z: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat: Nowa wiadomość publiczna od: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat: %u nowych wiadomości publicznych." + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat: Prywatna wiadomość od: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "XChat: %u wiadomości prywatnych, najnowsza z: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat: Oferta pliku od: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "XChat: %u ofert pliku, najnowsza z: %s (%s)" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Wersja" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Opis" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Wybierz Wtyczkę lub Skrypt do załadowania" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: Wtyczki i Skrypty" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "Za_ładuj..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "_Wyładuj" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Zapisz jako..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: Surowy Log (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Wyczyść surowy log" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "Okno dla którego otworzyłeś to szukanie już nie istnieje." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "Szukanie zakończone, niczego nie znaleziono." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: Szukanie" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "_Rozróżniaj wielkość liter" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "Szukaj w _tył" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "_Znajdź" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Nowa Sieć" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Czy naprawdę usunąć sieć \"%s\" i wszystkie jej serwery?" + +#: src/fe-gtk/servlistgui.c:740 +msgid "#channel" +msgstr "#pokój" + +#: src/fe-gtk/servlistgui.c:850 +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "X-Chat: Ulubione pokoje (lista auto-dołączania)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "Do tych pokoi zawsze przystąpisz gdy podłączysz się do %s." + +#: src/fe-gtk/servlistgui.c:906 +msgid "Key (Password)" +msgstr "Klucz (Hasło)" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "_Edycja" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "%s został usunięty." + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "%s został dodany." + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "Nazwa użytkownika oraz imię prawdziwe nie może być puste." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: Edycja %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Serwery %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Połącz się wyłącznie z zaznaczonym serwerem" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Nie skacz po wszystkich serwerach, gdy połączenie się nie uda." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Informacje o Tobie" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Użyj globalnych informacji o użytkowniku" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "Pseudo_nim:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Drugi wybór:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "_Użytkownik:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "Persona_lia:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Łączenie" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Połącz się automatycznie z tą siecią przy starcie" + +#: src/fe-gtk/servlistgui.c:1462 +msgid "Bypass proxy server" +msgstr "Omiń serwera pośredniczącego (proxy)" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "Używaj SSL dla wszystkich serwerów w tej sieci" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Akceptuj niepoprawne certyfikaty SSL" + +#: src/fe-gtk/servlistgui.c:1475 +msgid "_Favorite channels:" +msgstr "_Ulubione pokoje:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "Dołączone pokoje, oddzielone przecinkami, ale nie spacjami!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Polecenie po połączeniu:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Polecenie, które zostanie wykonane po nawiązaniu połączeniu z serwerem.Jeśli " +"chcesz wykonać więcej niż jedno, wpisz tutaj: LOAD -e <nazwa_pliku>, gdzie " +"<nazwa_pliku> to plik tekstowy zawierający polecenia do wykonania po " +"połączeniu." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Hasło do Nickserva:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Jeśli twój pseudonim wymaga hasła, wpisz je tutaj. Nie wszystkie sieci IRC " +"tego wspierają." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Hasło serwera:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Hasło dostępu do serwera, jeśli nie wiesz o co chodzi, zostaw puste." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Zestaw znaków:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: Lista Sieci" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Informacje o Użytkowniku" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Trzeci wybór:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Sieci" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "Pomiń listę sieci przy starcie" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "_Edycja..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "_Sortowanie" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" +"Sortuje listę sieci w porządku alfabetycznym. Użyj klawiszy SHIFT-GÓRA i " +"SHIFT-DÓŁ by przenieść rząd." + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "P_ołącz" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Wygląd Głównego Okna Czatowego" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Czcionka:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Obrazek w tle:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Przewijanie linii w tył:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Kolorowe pseudonimy" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Nadaje każdej osobie na czacie inny kolor" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Dodawaj wcięcia przez pseudonimami" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "" +"Dodawaj wcięcia przed pseudonimami aby wszystkie były wyrównane do prawej" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Przeźroczyste tło" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Pokazuj linię oddzielającą" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Dodaj czerwoną linię oddzielającą ostatnio przeczytany tekst." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Ustawienia Zabarwienia" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Czerwony:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Zielony:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Niebieski:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Znacznik Czasu" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Włącz pokazywanie znacznika czasu" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Format znacznika czasu:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Zobacz w pomocy stronę o strftime, aby dowiedzieć się więcej." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "Ostatni porządek wypowiedzi" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Pole wpisywania tekstu" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Użyj czcionki i koloru tekstu ramki" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Sprawdzanie pisowni" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Uzupełnianie Pseudonimów" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "Automatyczne uzupełnianie pseudonimów (bez klawisza TAB)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Sufiks uzupełnionego pseudonimu:" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "Sortowanie uzupełnionego pseudonimu:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Kody dla wiersza poleceń" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Pokaż %nnn jako wartość ASCII" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Pokaż %C, %B jako kolor, pogrubienie itp" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, Operatorzy na początku" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, Operatorzy na końcu" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Nieposortowane" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "Lewy (górny)" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "Lewy (niższy)" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "Prawy (Upper)" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "Prawy (Lower)" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Góra" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Dół" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Ukryty" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Lista Użytkowników" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Pokaż nazwy hostów na liście użytkowników" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Sposób sortowania listy użytkowników:" + +#: src/fe-gtk/setup.c:205 +msgid "Show user list at:" +msgstr "Pokaż listę użytkowników na:" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Śledzenie nieobecnych" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "Śledź statusu nieobecnego użytkowników i zaznacz go w innym kolorze" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "W pokojach mniejszych niż:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Akcja w przypadku podwójnego kliknięcia" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Okna" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Zakładki" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Zawsze" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Tylko żądane karty" + +#: src/fe-gtk/setup.c:242 +msgid "Tree" +msgstr "Drzewo" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "Typ przełącznika:" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Otwórz osobną zakładkę na wiadomości serwera" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Otwórz osobną zakładkę na ogłoszenia serwera" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "Otwórz nowy tab, po otrzymaniu prywatnej wiadomości" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Układaj zakładki alfabetycznie" + +#: src/fe-gtk/setup.c:254 +msgid "Smaller text" +msgstr "Mały tekst" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Nowe karty na wierzchu:" + +#: src/fe-gtk/setup.c:258 +msgid "Show channel switcher at:" +msgstr "Pokaż przełącznik pokoi na:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Skracaj etykiety zakładek do:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "liter." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Zakładki lub Okna" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Otwórz pokoje w:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Otwórz okna dialogowe w:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Otwórz narzędzia w:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Otwórz Czat Bezpośredni, Ignoruj, Powiadom itp, w kartch czy w oknach?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "Nie" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Tak" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "Szukaj za każdym razem folderu do zapisywania" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Pliki i Katalogi" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Automatycznie przyjmuj oferowane pliki:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Pobieraj pliki do:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Przenieś całkowicie pobrane pliki do:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Umieść pseudonim w nazwach plików" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Konfiguracja Sieci" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Pobierz mój adres IP z serwera czatu" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Prosi serwer czatu o Twój prawdziwy (publiczny/zewnętrzny) adres IP. Użyj " +"tej opcji jeśli Twoja sieć znajduje się za firewallem a Twój lokalny adres " +"to 192.168.*.* lub 10.*.*.*!" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "Adres IP dla Połączeń Bezpośrednich:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Zatwierdź że jesteś pod tym adresem, gdy oferujesz plików." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Pierwszy port wysyłania Czatu Bezpośredniego:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Ostatni port wysyłania Czatu Bezpośredniego:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!Pozostaw porty na zero dla pełnego zakresu." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Maksymalna prędkość przesyłania plików (bajty na sekundę)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Jedno wysyłanie pliku:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Maksymalna prędkość dla pojedynczego połączenia" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Jedno pobieranie pliku:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Wszystkie wysyłania plików jednocześnie:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Maksymalna prędkość dla wszystkich plików" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Wszystkie pobierania plików jednocześnie:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Powiadomienia" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "Pokaż balony w zasobniku przy:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "Migaj ikoną w zasobniku przy:" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "Migaj paskiem zadań przy:" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "Wykonaj sygnał dźwiękowy na:" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "Włącz ikonę w zasobniku systemowym" + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "Podświetlone wiadomości" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" +"Podświetlone wiadomości są te, gdzie mowa jest o twoim pseudonimie, ale " +"także:" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "Dodatkowe słowa które podświetlić:" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "Nie podświetlaj pseudonimów:" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "Zawsze podświetlaj pseudonimy:" + +#: src/fe-gtk/setup.c:347 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" +"Oddziel kilka słów przecinkami.\n" +"Akceptowane są maski dopasowania." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Domyślna Wiadomość" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Wyjście z czata:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Opuszczenie pokoju:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Nieobecność:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Nieobecność" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Ogłaszaj powód Twojej nieobecności" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Ogłaszaj powód Twojej nieobecności we wszystkich pokojach" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Pokaż nieobecności raz" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Pokaż identyczne powody nieobecności tylko za pierwszym razem" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Automatycznie wyłącz nieobecność" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Wyłączenie statusu nieobecności zanim wyślesz wiadomość" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Ustawienia Zaawansowane" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Opóźnienie ponowienia automatycznego połączenia:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Wyświetlaj opcje pokoju w surowej formie" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Polecenie /WHOIS w reakcji na ogłoszenie" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" +"Wysyła polecenie /WHOIS kiedy ktoś z Twojej listy powiadomień pojawia się na " +"czacie" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Nie informuj o wchodzących/wychodzących" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Domyślnie nie informuj o wchodzących/wychodzących" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Automatycznie otwieraj okna DCC" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Okno wysyłania" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Okno odbiorcze" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Okno Czatu" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Logowanie" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "Wyświetl przewijanie w tył poprzedniej sesji" + +#: src/fe-gtk/setup.c:387 +msgid "Enable logging of conversations to disk" +msgstr "Włącz zapisywanie rozmów na dysk" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Plik loga:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Serwer %c=Pokój %n=Sieć." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Dodawaj znacznik czasu w logach" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Format znacznika czasu w logu:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Wyłączone)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Wszystkie połączenia" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "Tylko Serwer IRC" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "Pobierz tylko Czat Bezpośredni" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Twój Adres" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Przypnij do:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "Tylko użyteczne komputerom z wieloma adresami IP." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Serwer Pośredniczący" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Host:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Port:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Rodzaj:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Używaj serwera pośredniczącego (proxy) dla:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Uwierzytelnianie Proxy" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Użyj uwierzytelniania (tylko MS Proxy, HTTP lub Socks5)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Użyj uwierzytelniania (tylko HTTP lub Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Użytkownik:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Hasło:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Wybierz Plik Obrazka" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "Wybierz folder pobierania" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Wybierz czcionkę" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Przeglądaj..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Zaznacz rozpoznanych użytkowników używając:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Zaznacz nieznanych użytkowników używając:" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "Otwórz folder danych" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Wybierz kolor" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Kolory tekstu" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "kolory mIRCa:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Kolory lokalne:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Pierwszy plan:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Tło:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Tekst Oznaczający" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Kolory interfejsu" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Nowe dane:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Linia znacznika:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Nowa wiadomość:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Nieobecny użytkownik:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Podświetl:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Zdarzenie" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Plik dźwiękowy" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Wybierz plik dźwiękowy" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Sposób odtwarzania dźwięku:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "Zewnętrzny odtwarzacz plików dźwiękowych:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "Z_ewnętrzyny program" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_Automatyczny" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "Katalog plików _dźwiękowych:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Plik dźwiękowy:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "_Przeglądaj..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "_Odtwórz" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Interfejs" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Okno główne" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Lista użytkowników" + +#: src/fe-gtk/setup.c:1703 +msgid "Channel switcher" +msgstr "Przełącznik Pokoi" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Kolory" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Pogawędki" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Podstawy" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Dzwięk" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Ustawienia sieci" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Transfery plików" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Kategorie" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" +"Nie można umieścić drzewa na górze lub na dole!\n" +"Proszę zmień najpierw styl <b>kart</b> w punkcie menu <b>widok</b>." + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Niektóre zmienione ustawienia wymagają ponownego uruchomienia XChata." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*OSTRZEŻENIE*\n" +"Automatyczne przyjmowanie Czatu Bezpośredniego do twojego\n" +"katalogu domowego może być niebezpieczne i jest wykorzystywane.\n" +"Np.: Ktoś mógłby ci wysłać profil .bash" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: Preferencje" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Wystąpił błąd podczas interpretacji ciągu znaków" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Sygnał otrzymuje tylko %d argumentów, $%d jest nieprawidłowa" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Drukuj plik z tekstami" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Edycja Zdarzeń" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ Liczba" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Załaduj z..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Testuj Waszystko" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "Adres URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: Przechwycone Adresy URL" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Wyczyść listę" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Kopiuj zaznaczony URL" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Kopiuj" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Zapisz adresy do pliku" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d op(ów), %d razem" + +#~ msgid "%C18*$t$1%O $2" +#~ msgstr "%C18*$t$1%O $2" + +#~ msgid "%C21*%O$t%C21%B$1%O%C21 $2" +#~ msgstr "%C21*%O$t%C21%B$1%O%C21 $2" + +#~ msgid "%C18%H<%H$4$1%H>%H%O$t$2" +#~ msgstr "%C18%B%B$4$1%O%C18%O$t$2" + +#~ msgid "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" +#~ msgstr "$4%C21%B$1%O%C21$t$2" + +#~ msgid "%C28-%C29$1/$2%C28-%O$t$3" +#~ msgstr "%C28-%C29$1/$2%C28-%O$t$3" + +#~ msgid "$1$t$2" +#~ msgstr "$1$t$2" + +#~ msgid "%C19>%O$1%C19<%O$t$2" +#~ msgstr "%C19>%O$1%C19<%O$t$2" + +#~ msgid "%C16*%O$t$1%O" +#~ msgstr "%C16*%O$t$1%O" + +#~ msgid "%C28-%C29$1%C28-%O$t$2" +#~ msgstr "%C28-%C29$1%C28-%O$t$2" + +#~ msgid "%C28*%C29$3$1%C28*$t%O$2" +#~ msgstr "%C28*%C29$3$1%C28*$t%O$2" + +#~ msgid "%C18%H<%H$3$1%H>%H%O$t$2" +#~ msgstr "%C18%B%B$3$1%O$t$2" + +#~ msgid "%C22*%O$t$1" +#~ msgstr "%C22*%O$t$1" + +#~ msgid "%C31%H<%H$4$1%H>%H%O%C30$t$2" +#~ msgstr "%C31%B%B$4$1%O%C30$t$2" + +#~ msgid "PID" +#~ msgstr "PID" + +#~ msgid "Direct client-to-client" +#~ msgstr "Połączenia Bezpośrednie" + +#~ msgid "Send File" +#~ msgstr "Wyślij Plik" + +#~ msgid "Offer Chat" +#~ msgstr "Zaproponuj Czat Bezpośredni" + +#~ msgid "Abort Chat" +#~ msgstr "Zakończ Czat Bezpośredni" + +#~ msgid "Userinfo" +#~ msgstr "Informacje o użytkowniku" + +#~ msgid "Clientinfo" +#~ msgstr "Informacje o programie" + +#~ msgid "Time" +#~ msgstr "Czas" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "Dla CzatOpera" + +#~ msgid "Kill this user" +#~ msgstr "Rozłącz tego użytkownika" + +#~ msgid "Mode" +#~ msgstr "Operator Pokoju" + +#~ msgid "Give Half-Ops" +#~ msgstr "Nadaj status Półoperatora" + +#~ msgid "Take Half-Ops" +#~ msgstr "Zabierz status Półoperatora" + +#~ msgid "Ignore" +#~ msgstr "Ignorowanie" + +#~ msgid "Ignore User" +#~ msgstr "Ignoruj użytkownika" + +#~ msgid "UnIgnore User" +#~ msgstr "Przestań ignorować użytkownika" + +#~ msgid "Info" +#~ msgstr "Informacje" + +#~ msgid "Who" +#~ msgstr "Podstawowe" + +#~ msgid "DNS Lookup" +#~ msgstr "Przeszukaj system DNS" + +#~ msgid "Trace" +#~ msgstr "Śledzenie" + +#~ msgid "External" +#~ msgstr "Zewnętrzne" + +#~ msgid "Unban" +#~ msgstr "Odbanuj" + +#~ msgid "Apply" +#~ msgstr "Zastosuj" + +#~ msgid "Refresh the list" +#~ msgstr "Odśwież listę" + +#~ msgid "Save the list" +#~ msgstr "Zapisz listę" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "Brak otwartych zakładek, zakończyć X-Chat?" + +#~ msgid "Show join/part messages" +#~ msgstr "Informuj o wchodzących/wychodzących" + +#~ msgid "Color paste" +#~ msgstr "Wklejanie kolorów" + +#~ msgid "Go to" +#~ msgstr "Idź do" + +#~ msgid "_Close Tab" +#~ msgstr "_Zamknij zakładkę" + +#~ msgid "Settings saved." +#~ msgstr "Ustawienia zapisane." + +#~ msgid "_Layout" +#~ msgstr "_Układ" + +#~ msgid "Notify List..." +#~ msgstr "Lista Powiadomień..." + +#~ msgid "_Attach Window" +#~ msgstr "_Przyczep Okno" + +#~ msgid "_Close Window" +#~ msgstr "_Zamknij Okno" + +#~ msgid "User" +#~ msgstr "Użytkownik" + +#~ msgid "Server" +#~ msgstr "Serwer" + +#~ msgid "Save rawlog" +#~ msgstr "Zapisz surowy log" + +#~ msgid "Save rawlog..." +#~ msgstr "Zapisz surowy log..." + +#~ msgid "C_hannels to join:" +#~ msgstr "Wejdź do:" + +#~ msgid "XChat: Server List" +#~ msgstr "XChat: Lista Serwerów" + +#~ msgid "Completes nick names without using the TAB key" +#~ msgstr "Uzupełnia pseudonimy bez użycia klawisza TAB" + +#~ msgid "Input Box Appearance" +#~ msgstr "Wygląd Pola do Wpisywania Tekstu" + +#~ msgid "Resizable user list" +#~ msgstr "Możliwa zmiana rozmiarów listy użytkowników" + +#~ msgid "Left" +#~ msgstr "Lewo" + +#~ msgid "Right" +#~ msgstr "Prawo" + +#~ msgid "Tabs Location" +#~ msgstr "Położenie Zakładek" + +#~ msgid "Convert spaces to underscore before sending" +#~ msgstr "Zamień spacje na podkreślenia przed wysłaniem" + +#~ msgid "(Can be a text file relative to ~/.xchat2/)." +#~ msgstr "" +#~ "(Może być plik tekstowy umieszczony relatywnie względem ~/.xchat2/)." + +#~ msgid "(Can be a text file relative to config dir)." +#~ msgstr "" +#~ "(Może być plik tekstowy umieszczony relatywnie względem katalogu " +#~ "konfiguracyjnego)." + +#~ msgid "Flash taskbar on highlighted messages" +#~ msgstr "Błyśnij na pasku zadań po nadejściu wyróżnionej wiadomości" + +#~ msgid "Beep on channel messages" +#~ msgstr "Pojedynczy dzwonek po nadejściu wiadomości w pokoju" + +#~ msgid "(See strftime manpage for details)." +#~ msgstr "(Zobacz w pomocy stronę o strftime, aby dowiedzieć się więcej)." + +#~ msgid "Execute a xchat command" +#~ msgstr "Uruchom polecenie:" + +#~ msgid "server" +#~ msgstr "serwer" + +#~ msgid "id" +#~ msgstr "id" + +#~ msgid "Get settings from xchat" +#~ msgstr "Pobierz ustawienia z XChata" + +#~ msgid "name" +#~ msgstr "nazwa" + +#~ msgid "From:" +#~ msgstr "Od:" + +#~ msgid "To:" +#~ msgstr "Do:" + +#~ msgid "Size:" +#~ msgstr "Rozmiar:" + +#~ msgid "Started:" +#~ msgstr "Początek:" + +#~ msgid "Speed limit:" +#~ msgstr "Limit prędkości:" + +#~ msgid "MIME Type" +#~ msgstr "Typ MIME" + +#~ msgid "X-Chat: File Receive List" +#~ msgstr "X-Chat: Lista Pobieranych Plików" + +#~ msgid "Open" +#~ msgstr "Otwórz" + +#~ msgid "Ack" +#~ msgstr "Odebrane" + +#~ msgid "To" +#~ msgstr "Do" + +#~ msgid "To/From" +#~ msgstr "Do/Od" + +#~ msgid "DIRECTORY" +#~ msgstr "KATALOG" + +#~ msgid "Close this tab/window" +#~ msgstr "Zamknij tą zakładkę/okno" + +#~ msgid "User List Buttons" +#~ msgstr "Przyciski pod Listą Użytkowników" + +#~ msgid "New Shell Tab..." +#~ msgstr "Nowa Zakładka z Powłoką" + +#~ msgid "_IRC" +#~ msgstr "_CHAT" + +#~ msgid "Invisible" +#~ msgstr "Niewidoczny z zewnątrz pokoju" + +#~ msgid "Receive Wallops" +#~ msgstr "Odbieraj informacje dla Operatorów" + +#~ msgid "Receive Server Notices" +#~ msgstr "Odbieraj informacje Serwera" + +#~ msgid "Auto Rejoin when Kicked" +#~ msgstr "Automatycznie wróć do pokoju po Wyproszeniu" + +#~ msgid "Never-give-up ReConnect" +#~ msgstr "Nigdy nie przestawaj wznawiać połączenia" + +#~ msgid "Auto Open Dialog Windows" +#~ msgstr "Automatycznie otwieraj okno rozmowy prywatnej" + +#~ msgid "Auto Accept Direct Chat" +#~ msgstr "Automatycznie akceptuj Czat Bezpośredni" + +#~ msgid "Reload Settings" +#~ msgstr "Przeładuj Ustawienia" + +#~ msgid "Save Settings now" +#~ msgstr "Zapisz Ustawienia teraz" + +#~ msgid "File Receive..." +#~ msgstr "Pobieranie Plików..." + +#~ msgid "File Send..." +#~ msgstr "Wysyłanie Plików..." + +#~ msgid "Close" +#~ msgstr "Zamknij" + +#~ msgid "Connect in new tab" +#~ msgstr "Połącz w nowej zakładce" + +#~ msgid "Tint (shade) transparency" +#~ msgstr "Zabarwiaj (cieniuj) przeźroczystość" + +#~ msgid "Strip mIRC colors" +#~ msgstr "Usuwaj kolory mIRCa" + +#~ msgid "Info text" +#~ msgstr "Szczegóły" + +#~ msgid "User list buttons enabled" +#~ msgstr "Włącz przyciski pod listą użytkowników" + +#~ msgid "Extra Gadgets" +#~ msgstr "Dodatkowe Gadżety" + +#~ msgid "(disabled)" +#~ msgstr "(wyłączone)" + +#~ msgid "A star (*)" +#~ msgstr "Gwiazda (*)" + +#~ msgid "A red star (*)" +#~ msgstr "Czerwona gwiazda (*)" diff --git a/etc/wyatt8740/po/pt.po b/etc/wyatt8740/po/pt.po new file mode 100644 index 0000000..f45c326 --- /dev/null +++ b/etc/wyatt8740/po/pt.po @@ -0,0 +1,5778 @@ +# Translation of XChat-2.6 IRC client. +# This file is put in the public domain. +# Vitor Antunes <vhda@mega.ist.utl.pt>, 2004. +# +msgid "" +msgstr "" +"Project-Id-Version: XChat 2.6.0\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2006-10-15 23:26+0100\n" +"Last-Translator: Vitor Antunes <vhda@mega.ist.utl.pt>\n" +"Language-Team: Portuguese <translation-team-pt@lists.sourceforge.net>\n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Portuguese\n" +"X-Poedit-Country: PORTUGAL\n" +"X-Poedit-SourceCharset: utf-8\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Não é possível criar ~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Estou ocupado" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Saindo" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* Correr o IRC como root é estúpido! Deve\n" +" criar outro utilizador e usá-lo.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "À espera" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Activo" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Falhou" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Terminado" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Ligar" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Cancelado" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "Não é possível aceder a %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Erro" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s está a oferecer \"\"%s\". Queres aceitar?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Não existem DCCs activos\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "SIM " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "NÃO " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Está a sofrer uma inundação de CTCP de %s, ignorando %s\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "" +"Está a sofrer uma inundação de MSG de %s, gui_auto_open_dialog foi " +"desligado.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s está ligado\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s não está online\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Não está em nenhum canal. Usar /join #<canal>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Não está ligado. Usar /server <endereço> [<porto>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "Preciso de /bin/sh para correr!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Comandos Disponíveis:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Comandos definidos pelo utilizador:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Comandos definidos por plugins:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Escrever /HELP <comando> para mais informações, ou /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Argumento desconhecido '%s' ignorado." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "O plugin não foi encontrado.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "O plugin recusa-se a desligar.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <nome> <acção>, adiciona um botão à lista de utilizadores" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <cmd>, envia um comando para todos os canais onde está" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHANL <cmd>, envia um comando para todos os canais onde está" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <cmd>, envia um comando para todos os servidores onde está" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<razão>], declara-o como ausente" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <máscara> [<tipo de interdição>], interdita do canal todos os " +"utilizadores correspondentes à máscara. Se o utilizador estiver no canal " +"este comando não o expulsa (necessita do estatuto operador)" + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-quiet] <variável> [<valor>]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "" +"CLEAR [ALL|HISTORY], Limpa a janela de texto actual ou histórico de comandos" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, Fecha a janela/separador actual" + +#: src/common/outbound.c:3512 +#, fuzzy +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" +"COUNTRY [-s] <código|wildcard>, procura o código de um país, ex: au = " +"australia" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <nick> <mensagem>, envia uma mensagem CTCP a nick. Mensagens comuns são " +"VERSION e USERINFO" + +#: src/common/outbound.c:3516 +#, fuzzy +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "CYCLE, sai do canal e regressa imediatamente" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <nick> - aceita um ficheiro oferecido\n" +"DCC SEND [-maxcps=#] <nick> [file] - envia um ficheiro a nick\n" +"DCC PSEND [-maxcps=#] <nick> [file] - envia um ficheiro usando o modo " +"passivo\n" +"DCC LIST - mostra a lista de DCCs\n" +"DCC CHAT <nick> - oferece uma conversa DCC a nick\n" +"DCC PCHAT <nick> - oferece uma conversa DCC usando o modo " +"passivo\n" +"DCC CLOSE <type> <nick> <file> exemplo:\n" +" /dcc close send johnsmith ficheiro.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <nick>, retira o modo semi-operador ao nick no canal actual (necessita " +"do estatuto operador)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <nome>, apaga um botão da lista de utilizador" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <nick>, retira o modo operador ao nick dado no canal actual (necessita " +"do estatuto operador)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <nick>, retira o modo voz do nick dado no canal actual (necessita do " +"estatuto operador)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, Desliga-se do servidor actual" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <nick|endereço|ip>, Descobre o número IP de um utilizador" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <texto>, Escreve na janela local o texto inserido" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <comando>, executa o comando de shell. Se a opção -o for usada o " +"resultado é enviado para o canal actual, caso contrário é escrito na janela " +"de texto actual" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, envia a um processo em execução o sinal CONT" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], pára a execução de um processo da sessão actual. Se a opção " +"-9 for usada é enviado o sinal KILL em vez do sinal TERM" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, envia a um processo em execução o sinal STOP" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, envia dados para o canal stdin do processo em execução" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, despeja a fila de dados a enviar do servidor actual" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" +"GATE <endereço> [<porto>], utiliza o proxy dado para a comunicação, o porto " +"é por defeito 23" + +#: src/common/outbound.c:3560 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" +"HOP <nick>, dá o modo semi-operador ao nick(necessita do estatuto operador)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <password>, identifica-te perante o nickserv" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <máscara> <tipos..> <opções..>\n" +" máscara - máscara a ser ignorada, ex: *!*@*.iol.pt\n" +" tipos - tipos de dados a ignorar, um ou todos de:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" opções - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <nick> [<canal>], convida alguém para o canal, por defeito o canal " +"actual (necessita do estatuto operador)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <canal>, entra no canal" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <nick>, expulsa o nick dado do canal actual (necessita do estatuto " +"operador)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <nick>, interdita e expulsa o nick dado do canal actual (necessita " +"do modo operador)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, força uma nova verificação de atraso" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <frase>, procura a frase na conversa actual" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <ficheiro>, carrega o plugin ou script" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, Retira o modo semi-operador a todos os utilizadores no canal actual " +"(necessita do modo operador)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, Retira o modo operador a todos os utilizadores no canal actual " +"(necessita do modo operador)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <acção>, envia a acção para o canal actual (as acções devem ser escritas " +"na 3a pessoa, como em '/me salta')" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, Expulsa todo os utilizadores, excepto tu, do canal actual (necessita " +"do modo operador)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, Coloca o modo operador a todos os utilizadores do canal (necessita do " +"modo operador)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <nick> <mensagem>, envia uma mensagem privada a nick" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, Lista todos os utilizadores do canal actual" + +#: src/common/outbound.c:3607 +#, fuzzy +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <nick> <message>, Envia uma nota CTCP" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <endereço> [<porto>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <nick>, muda o nick actual" + +#: src/common/outbound.c:3612 +#, fuzzy +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <nick/canal> <mensagem>, envia uma nota. Notas são um tipo de " +"mensagem que devem provocar uma reacção automática" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n network1[,network2,...]] [<nick>], mostra a lista de notificações " +"ou adiciona alguém." + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" +"OP <nick>, adiciona o modo operador a nick (necessita do modo operador)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<canal>] [<razão>], sai do canal, por defeito o canal actual" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <nick | canal>, envia um CTCP a nick ou canal" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "" +"QUERY [-nofocus] <nick>, abre uma nova janela de mensagens privadas com nick" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<razão>], desliga-se do servidor actual" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <texto>, envia o texto directamente ao servidor" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<endereço>] [<porto>] [<password>], Usado para reiniciar a " +"ligação ao dado servidor, servidor actual por defeito, ou na forma /" +"RECONNECT ALL para reiniciar a ligação de todos os servidores" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<endereço>] [<porto>] [<password>], Usado para reiniciar a " +"ligação ao dado servidor, servidor actual por defeito, ou na forma /" +"RECONNECT ALL para reiniciar a ligação de todos os servidores" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <texto>, envia o texto directamente para o xchat, como se este fosse " +"recebido pelo servidor" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <texto>, envia o texto para o objecto da janela actual" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <nick> [<ficheiro>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <endereço> <porto> <canal>, liga-se ao servidor entrando de " +"seguida no canal" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN <endereço> <porto> <canal>, liga-se ao servidor entrando de seguida " +"no canal" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <endereço> [<porto>] [<password>], liga-se ao servidor por " +"defeito no porto 6667 para ligações normais e 9999 para ligações ssl" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <endereço> [<porto>] [<password>], liga-se ao servidor por defeito ao " +"porto 6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-quiet] <variável> [<valor>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<posição>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<tópico>], muda o tópico do canal actual, ou mostra o tópico actual" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "" +"UNBAN <máscara> [<máscara>...]>, reautoriza o acesso ao canal aos " +"utilizadores que correspondem à/às máscara/s (necessita modo operador) " + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <máscara> [QUIET], deixa de ignorar a máscara dada" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <nome>, desliga o plugin ou script" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, abre o URL no teu browser" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <nick1> <nick2> etc, sublinha o(s) nick(s) na lista de " +"utilizadores do canal" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <nick>, coloca o modo voz a nick (necessita do modo operador)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "" +"WALLCHAN <mensagem>, escreve uma mensagem em todos os canais em que estás" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <mensagem>, envia uma mensagem a todos os utilizadores com modo " +"operador no canal actual" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Utilização: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"Não existe ajuda para esse comando.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Comando inexistente.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Opções incorrectas para comando de utilizador.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Excessiva recursividade de comandos de utilizador, cancelando." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Comando desconhecido. Tente /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "" +"Não existe o símbolo xchat_plugin_init; será mesmo um plugin para o xchat?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Tem a certeza que este servidor e/ou porto suportam SSL?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Não foi possível resolver o endereço %s\n" +"Verifique as configurações de IP!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Transferência pelo proxy falhou.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "A alternar para o servidor seguinte em %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Aviso: o carácter \"%s\" é desconhecido. Não vai ser aplicada conversão à " +"rede %s." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 adicionado à lista de notificações." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Lista de Interditos:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tNão pode entrar%C26 %B$1 %O(Está interdito)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 agora chama-se $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 interditou $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tCanal $1 criado em $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O retirou o estatuto semi-operador de%C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O retirou o estatuto de operador de%C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O retirou voz de%C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 torna isento $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O coloca o modo de semi-operador a%C26 $2" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 oferece convite a $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UCanal Utilizadores Topico" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 coloca o modo $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Channel $1 modos: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O coloca o modo de operador a%C26 $2" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 retira isenção a $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 retira convite a $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 retira a palavra-chave do canal" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 retira o limite de utilizadores" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 coloca a palavra-chave do canal para $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 limite o canal a $2 utilizadores" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 retira a interdição a $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O oferece voz a%C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Ligado. A iniciar sessão..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22A ligar a $1 ($2) porto $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21Ligação falhou. Erro: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tRecebeu um CTCP $1 de $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tRecebeu um CTCP $1 de $2 (to $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +#, fuzzy +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tRecebeu um CTCP Sound $1 de $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tRecebeu um Som CTCP $1 de $2 (para $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tConversa DCC com %C26$1%O cancelada." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$tConversa DCC estabelecida com %C26$1 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tConversa DCC com %C26$1%O perdida ($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tRecebeu uma conversa DCC de $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tOferecendo conversa DCC a $1" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tConversa DCC já oferecida a $1" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "" + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tRecebeu '$1%O' de $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 Tipo De/Para Estado Tamanho Pos Ficheiro " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O." +"%010%C22*%O$tContents of packet: $2" +msgstr "" +"%C22*%O$tRecebeu um pedido DCC inválido de %C26$1%O.%010%C22*%O$tConteúdo do " +"pacote: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tA oferecer%C26 $1%O a%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tOferta DCC inexistente." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV%C26 $2%O a%C26 $1%O cancelado." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC RECV%C26 $1%O de%C26 $3%O completo %C30[%C26$4%O cps%C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC RECV ligação estabelecida com%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV%C26 $1%O de%C26 $3%O falhou ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV: Não foi possível abrir $1 para escrita ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "%C22*%O$tO ficheiro%C26 $1%C já existe, a gravar como%C26 $2%O" + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Opediu para continuar%C26 $2 %Cde%C26 $3%C." + +#: src/common/textevents.h:177 +#, fuzzy +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC SEND%C26 $2%O para%C26 $1%O cancelado." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC SEND%C26 $1%O para%C26 $2%O completo %C30[%C26$3%O cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC SEND ligação estabelecida com%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND%C26 $1%O para%C26 $2%O falhou. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Oofereceu%C26 $2 %O(%C26$3 %Obytes)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Opara%C26 $3 %Cparado - a cancelar." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Oesgotou o tempo - a cancelar" + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 removido da lista de notificações." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tDesligou ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tO seu IP foi encontrado: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O adicionado à lista de ignorados." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "Entrada %C26$1%O da lista de ignorados foi alterada." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "" + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O retirado da lista de ignorados." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " Lista de ignorados vazia." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "" +"%C22*%O$tNão pode entrar em %C26 %B$1 %O(Canal exclusivo a convidados)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tFoi convidado para%C26 $1%O por%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) entrou em $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$tNão pode entrar em%C26 %B$1 %O(Palavra-chave necessária)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 expulsou $2 de $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$tFoi morto por $1 ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD Ignorado." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 já está a ser usado. A tentar com $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "%C22*%O$tNick já em utlização. Use /NICK para tentar outro." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tDCC inexistente." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tNão está nenhum processo a correr" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tLista de notificações vazia." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Lista de Notificações " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 utilizadores na lista de notificações." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tNotificação: $1 está desligado ($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tNotificação: $1 está ligado ($3)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) saiu de $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) saiu de $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tResposta Ping de $1: $2 segundo(s)" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tSem resposta ping durante $1 segundos, a desligar." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tUm processo já está a correr" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 saiu (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 activa modos%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tÀ procura do IP de%C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22Ligado." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22A procurar $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tTentativa anterior de ligação terminada (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29Tópico para $1%C %C29é: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 mudou o tópico para: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29Tópico para $1%C %C29colocado por $2%C %C29a $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tEndereço desconhecido. Enganou-se no endereço?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "" +"%C22*%O$tNão pode entrar em%C26 %B$1 %O(Limite de utilizadores atingido)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Utilizadores em $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cestá ausente %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OFim da lista WHOIS." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O inactivo%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O inactivo%C26 $2%O, ligou-se:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19A conversar em $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tFoste expulso de $2 por $3 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tSaíste do canal $3" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tSaíste do canal $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tConvidaste%C26 $1%O para%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tAgora chama-se $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** REGISTO TERMINADO EM %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** REGISTO INICIADO EM %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Não posso abrir ficheiro(s) de registo para escrita. Verifique\n" +" as permissões de %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Mensagem da esquerda" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Mensagem da direita" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "O nick do utilizador que entra" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "O canal em que vai entrar" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "O endereço do utilizador" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Nick" + +#: src/common/text.c:973 +msgid "The action" +msgstr "A acção" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Modo carácter" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Texto identificado" + +#: src/common/text.c:980 +msgid "The text" +msgstr "O texto" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "A mensagem" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Nick antigo" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Novo nick" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Nick do utilizador que mudou o tópico" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Tópico" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Canal" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "O nick de quem expulsou" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "O utilizador a ser expulso" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "O canal" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "A razão" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "O nick do utilizador a sair" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "A hora" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "O criador" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Nick" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Razão" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Host" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "De quem é" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "A hora no formato x.x (ver em baixo)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "O canal para onde vai" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "O som" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "O nick do utilizador" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "O evento CTCP" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "O nick do utilizador que colocou a chave" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "A chave" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "O nick da pessoa que colocou o limite" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "O limite" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "O nick do utilizador que deu o modo operador" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "O nick do utilizador que recebeu o modo operador" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "O nick do utilizador que recebeu o modo semi-operador" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "O nick do utilizador que deu o modo semi-operador" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "O nick do utilizador que deu o modo voz" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "O nick do utilizador que recebeu o modo voz" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "O nick do utilizador que interditou" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "A máscara de interdição" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "O nick do utilizador que retirou a chave" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "O nick do utilizador que retirou o limite" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "O nick do utilizador que retirou o modo operador" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "O nick do utilizador a quem foi retirado o modo operador" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "O nick do utilizador que retirou o modo semi-operador" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "O nick do utilizador a quem foi retirado o modo semi-operador" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "O nick do utilizador que retirou o modo voz" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "O nick do utilizador a quem foi retirado o modo voz" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "O nick do utilizador que retirou a interdição" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "O nick do utilizador que criou a isenção" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "A máscara da isenção" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "O nick do utilizador que retirou a isenção" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "O nick do utilizador que efectuou o convite" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "A máscara do convite" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "O nick do utilizador que retirou o convite" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "O nick do utilizador que colocou o modo" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "O sinal do modo (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "A letra do modo" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "O canal em que está a ser colocado" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Nome de utilizador" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Nome completo" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Nível no Canal/\"é um operador de IRC\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Informação do servidor" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Tempo inactivo" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Hora de ligação" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Razão da ausência" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Mensagem" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Conta" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "utilizador@endereço real" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "IP real" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Nome do canal" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Texto" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Nome do servidor" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Nick do utilizador que o convidou" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Utilizadores" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Nick em uso" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Nick a ser tentado" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Porto" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Rede" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Frase de modos" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "Endereço IP" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "Tipo de DCC" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Nome do ficheiro" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Nome do ficheiro de destino" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Nome de directoria" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Posição" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Tamanho" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "Frase de DCC" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Número de notificações" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Nome antigo do ficheiro" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Novo nome do ficheiro" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Receptor" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Máscara de Endereço" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Endereço" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "O pacote" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Segundos" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Nick do utilizador que foi convidado" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Máscara de Interdição" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Quem interditou" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Hora da interdição" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Erro no processamento do evento %s.\n" +"A carregar predefinição" + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"Não foi possível ler ficheiro de som:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "Cliente remoto desligou" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Ligação recusada" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Não existe caminho para o endereço" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Ligação excedeu o tempo limite" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Não é possível atribuir o endereço" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Ligação terminada no destino" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Emirados Árabes Unidos" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Afeganistão" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Antígua e Barbuda" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Anguila" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Albânia" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Arménia" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Antilhas Neerlandesas" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:858 +#, fuzzy +msgid "Antarctica" +msgstr "Antárctica" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Argentina" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "DNS Inverso" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Samoa Americana" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Áustria" + +#: src/common/util.c:863 +#, fuzzy +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Austrália" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Azerbaijão" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Bósnia e Herzegovina" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Bangladeche" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Bélgica" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Burquina Faso" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Bulgária" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Barém" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Negócios" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Benim" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Bermudas" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Brunei" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Bolívia" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Brasil" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Baamas" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Butão" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Ilha Bouvet" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Botsuana" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Bielorrússia" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Canadá" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Ilhas Cocos" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "República Democrática do Congo" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "República Centro-Africana" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Congo" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Suiça" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Costa do Marfim" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Ilhas Cook" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Chile" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Camarões" + +#: src/common/util.c:898 +msgid "China" +msgstr "China" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Colômbia" + +#: src/common/util.c:900 +#, fuzzy +msgid "Internic Commercial" +msgstr "Comercial da InterNIC" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Sérvia e Montenegro" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Cuba" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Cabo Verde" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Ilha Christmas" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Chipre" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "República Checa" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Alemanha" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Jibuti" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Dinamarca" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Domínica" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "República Dominicana" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Algéria" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Equador" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Instituição Educacional" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Estónia" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Egipto" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Sahara Oeste" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Eritreia" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Espanha" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Etiópia" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "União Europeia" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Filândia" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Fiji" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Ilhas Falkland" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Micronésia" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Faroé" + +#: src/common/util.c:928 +msgid "France" +msgstr "França" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Gabão" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Grã Bretanha" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Granada" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Geórgia" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Guiana Francesa" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Ilhas do Canal Inglês" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Gana" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Gronelândia" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Gâmbia" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Guiné" + +#: src/common/util.c:940 +#, fuzzy +msgid "Government" +msgstr "Governo" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Guadalupe" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Guiné Equatorial" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Grécia" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Ilhas Geórgia do Sul e Sandwich do Sul" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Guiné-Bissau" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Guiana" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Ilhas Heard e McDonald" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Croácia" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Hungria" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Indonésia" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Irlanda" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Israel" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "" + +#: src/common/util.c:959 +msgid "India" +msgstr "Índia" + +#: src/common/util.c:960 +#, fuzzy +msgid "Informational" +msgstr "Informativo" + +#: src/common/util.c:961 +msgid "International" +msgstr "Internacional" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Território Britânico do Oceano Índico" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Iraque" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Irão" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Islândia" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Itália" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Jamaica" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Jordânia" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Japão" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Quénia" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Quirguizistão" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Camboja" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Quiribati" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Comores" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "São Cristóvão e Nevis" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Coreia do Norte" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Coreia do Sul" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Koweit" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Ilhas Caimão" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Cazaquistão" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Líbano" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Santa Lúcia" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Listenstaine" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Sri Lanca" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Libéria" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Lesoto" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Lituânia" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Luxemburgo" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Letónia" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Líbia" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Marrocos" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Mónaco" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Moldávia" + +#: src/common/util.c:996 +#, fuzzy +msgid "United States Medical" +msgstr "Organização Médica dos Estados Unidos" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Madagáscar" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Ilhas Marshall" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Militar" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Antiga República Jugoslava da Macedónia" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Mianmar" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Mongólia" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Macau" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Marianas do Norte" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Martinica" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Mauritânia" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Monserrate" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Maurícia" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Maldivas" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Malavi" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "México" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Malásia" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Moçambique" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Namíbia" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Nova Caledónia" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Níger" + +#: src/common/util.c:1019 +#, fuzzy +msgid "Internic Network" +msgstr "Rede da InterNIC" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Ilha Norfolk" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Nigéira" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Nicarágua" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Países Baixos" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Noruega" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Nova Zelândia" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Omã" + +#: src/common/util.c:1030 +#, fuzzy +msgid "Internic Non-Profit Organization" +msgstr "Organização Não-Lucrativa da InterNIC" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Panamá" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Perú" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Polinésia Francesa" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Papuásia-Nova Guiné" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Filipinas" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Paquistão" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Polónia" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "São Pedro e Miquelon" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Porto Rico" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Território Palestiano" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Portugal" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Paraguai" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Catar" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Reunião" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Roménia" + +#: src/common/util.c:1048 +#, fuzzy +msgid "Old School ARPAnet" +msgstr "Antiga ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Rússia" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Ruanda" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Arábia Saudita" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Ilhas Salomão" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Seicheles" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Sudão" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Suécia" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Singapura" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "Santa Helena" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Eslovénia" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard e Jan Mayen" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Eslováquia" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Serra Leoa" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "São Marino" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Sumália" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Suriname" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "São Tomé e Príncipe" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Antiga USSR" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "Salvador" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Síria" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Suazilândia" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Ilhas Turcas e Caicos" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Chade" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Territórios Austrais Franceses" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Tailândia" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Tajiquistão" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Timor Leste" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Turquemenistão" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Tunísia" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Turquia" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Trindade e Tobago" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Tanzânia" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Ucrânia" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Reino Unido" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "Estados Unidos da América" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Uruguai" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Usbequistão" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Santa Sé" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "São Vicente e Granadinas" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Ilhas Virgens Britânicas" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "Ilhas Virgens Americanas" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Vietname" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Wallis e Futuna" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Iémen" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Jugoslávia" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "África do Sul" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Zâmbia" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Zimbabué" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Desconhecida" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "Abrir Janela de Diálogo" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "Enviar um Ficheiro" + +#: src/common/xchat.c:728 +#, fuzzy +msgid "_User Info (WhoIs)" +msgstr "Informação do Utilizador (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +#, fuzzy +msgid "O_perator Actions" +msgstr "Acções de Operador" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Dar Ops" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Retirar Ops" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Dar Voz" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Retirar Voz" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Expulsar/Interditar" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Expulsar" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Interditar" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "ExpulsarInterditar" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Sair do canal" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Entrar num canal..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Introduzir canal onde entrar:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Endereços de Servidor" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Ping ao Servidor" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Esconder versão" + +#: src/common/xchat.c:772 +#, fuzzy +msgid "Op" +msgstr "Op" + +#: src/common/xchat.c:773 +#, fuzzy +msgid "DeOp" +msgstr "DeOp" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "adeus" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Introduzir razão da expulsão de %s:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Enviar Ficheiro" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Diálogo" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Enviar" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Conversa" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Limpar" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "_Sobre" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Cliente de IRC multiplataforma" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Tabela de Caracteres" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "Não está ligado" + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Tem de seleccionar algumas interdições." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "Tens a certeza que queres retirar todas as interdições de %s?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Máscara" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "De" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Data" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: Lista de Interditos (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Remover" + +#: src/fe-gtk/banlist.c:409 +#, fuzzy +msgid "Crop" +msgstr "Cortar" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Actualizar" + +#: src/fe-gtk/chanlist.c:111 +#, fuzzy, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Estatísticas do canal e utilizador: %d/%d utilizadores em %d/%d canais" + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Seleccionar o ficheiro de saída" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +#, fuzzy +msgid "_Join Channel" +msgstr "Entrar no Canal" + +#: src/fe-gtk/chanlist.c:633 +#, fuzzy +msgid "_Copy Channel Name" +msgstr "Nome do canal" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: Lista de Canais (%s)" + +#: src/fe-gtk/chanlist.c:781 +#, fuzzy +msgid "_Search" +msgstr "XChat: Procurar" + +#: src/fe-gtk/chanlist.c:787 +#, fuzzy +msgid "_Download List" +msgstr "Receber ficheiros para:" + +#: src/fe-gtk/chanlist.c:793 +#, fuzzy +msgid "Save _List..." +msgstr "Lista de Interditos..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "" + +#: src/fe-gtk/chanlist.c:818 +#, fuzzy +msgid "channels with" +msgstr "Abrir canais em:" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:843 +#, fuzzy +msgid "users." +msgstr "Utilizadores" + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:861 +#, fuzzy +msgid "Channel name" +msgstr "Nome do canal" + +#: src/fe-gtk/chanlist.c:882 +#, fuzzy +msgid "Search type:" +msgstr "_Procurar Texto..." + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Procurar:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Enviar ficheiro para %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Não é possível continuar este ficheiro." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"Impossível aceder ao ficheiro: %s\n" +"%s.\n" +"Não é possível continuar." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"Ficheiro da directoria de recepção é maior que o ficheiro oferecida. " +"Impossível continuar." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "Não pode continuar o mesmo ficheiro de duas pessoas." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Estado" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Ficheiro" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Ambos" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Detalhes" + +#: src/fe-gtk/dccgui.c:820 +#, fuzzy +msgid "File:" +msgstr "Ficheiro" + +#: src/fe-gtk/dccgui.c:821 +#, fuzzy +msgid "Address:" +msgstr "Endereço" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Cancelar" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Aceitar" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Continuar" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Abrir Pasta..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: Lista de Conversas DCC" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Recebido" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Enviado" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "Hora de Ínicio" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*NOVO*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "EDITAR-ME" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Nome" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Comando" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Para Cima" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Para Baixo" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Cancelar" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Gravar" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Adicionar" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Apagar" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Ordenar" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Ajuda" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "Não ligar automaticamente aos servidores" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "Usa outra directoria de configuração" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "Não carregar automaticamente nenhum plugin" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "Mostrar directoria de plugins carregados automaticamente" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "Mostrar directoria de configuração do utilizador" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Abrir um URL irc://servidor:porto/canal" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Executar comando:" + +#: src/fe-gtk/fe-gtk.c:132 +#, fuzzy +msgid "Open URL or execute command in an existing XChat" +msgstr "Abrir URL no XChat existente" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +#, fuzzy +msgid "level" +msgstr "Nunca" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Mostrar informação de versão" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"Não foi possível abrir a fonte:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +#, fuzzy +msgid "Search buffer is empty.\n" +msgstr "Memória de procura vazia.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d bytes" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Fila de envio da rede: %d bytes" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"A acção Executar Comando executa os dados em Dados 1 como se estes tivessem " +"sido escritos na janela de entrada onde você pressionou a sequência de " +"teclas. Assim, pode conter texto (que irá ser enviado para o canal/" +"utilizador), comandos ou comandos do utilizador. Quando executa todos os " +"caracteres \\n de Dados 1 são utilizados para separar comandos para que seja " +"possível executar mais que um comando. Se quiser um \\ no comando então " +"introduza \\\\" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"O comando Alterar Página alterna entre as páginas do bloco de notas. Defina " +"Dados 1 como a página para que quer trocar. Se Dados 2 estiver definido para " +"algo então a troca será relativa à posição actual" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"O comando Inserir no Buffer introduz o conteúdo de Dados 1 na posição actual " +"do cursor da entrada onde a sequência de teclas foi pressionada" + +#: src/fe-gtk/fkeys.c:165 +#, fuzzy +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"O comando Mover Página sobe e desce uma página ou linha de texto na janela. " +"Definir Dados 1 como Up (subir), Down (descer), +1 ou -1." + +#: src/fe-gtk/fkeys.c:167 +#, fuzzy +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"O comando Definir Entrada coloca o conteúdo de Dados 1 na entrada onde a " +"sequência de teclas foi pressionada" + +#: src/fe-gtk/fkeys.c:169 +#, fuzzy +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"O comando Último Comando coloca na entrada o último comando inserido - o " +"mesmo que acontece ao carregar na seta para cima na shell" + +#: src/fe-gtk/fkeys.c:171 +#, fuzzy +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"O comando Próximo Comando coloca na entrada o último comando inserido - o " +"mesmo que acontece ao carregar na seta para baixo na shell" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Este comando altera o texto na entrada para completar um nick ou comando " +"incompleto. Se Dados 1 está definido então ao carregar duas vezes na tecla " +"TAB numa palavra irá seleccionar o último nick e não o próximo" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Este comando percorre a lista de nicks. Se Dados 1 está definido então a " +"lista é percorrido para cima, caso contrário é percorrida para baixo" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Este comando verifica a última palavra introduzida na entrada contra a lista " +"de substituições e substitui-a se encontrar uma" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Este comando move o separador actual uma posição para a esquerda" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Este comando move o separador actual uma posição para a direita" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "" +"Este comando move a família de separadores actual uma posição para a esquerda" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "" +"Este comando move a família de separadores actual uma posição para a direita" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "" +"Coloca a linha de entrada para o historial mas não a envia para o servidor" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "Erro durante o carregamento da configuração de atalhos de teclas" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<nenhum>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Mod" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Chave" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Acção" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: Atalhos de Teclado" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Dado 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Dado 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Erro na abertura do ficheiro de configuração de associações\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Tecla %s desconhecida no ficheiro de configuração de atalhos\n" +"Abertura cancelada, corrigir %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Acção %s desconhecida no ficheiro de configuração de atalhos\n" +"Abertura cancelada, corrigir %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Esperava-se a linha (começando Dx{:|!}) mas recebeu-se:\n" +"%s\n" +"\n" +"Abertura cancelada, corrigir %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"Ficheiro de configuração de atalhos está corrompido,\n" +"abertura cancelada.\n" +"Por favor corrija %s/keybindings.conf\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "Não foi possível gravar ficheiro." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Não foi possível ler ficheiro." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "A máscara já existe." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Privado" + +#: src/fe-gtk/ignoregui.c:176 +#, fuzzy +msgid "Notice" +msgstr "Nota" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Convite" + +#: src/fe-gtk/ignoregui.c:180 +#, fuzzy +msgid "Unignore" +msgstr "Designorar" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Introduzir máscara a ignorar:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: Lista de Ignorados" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Estado:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Canal:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privado:" + +#: src/fe-gtk/ignoregui.c:370 +#, fuzzy +msgid "Notice:" +msgstr "Nota:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Convite:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "Adicionar..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "Nome do canal é demasiado pequeno, tenta outra vez." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: Ligação Completa" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "Ligação a %s concluída." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "Que queres fazer a seguir?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "_Nada, entro num canal mais tarde." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "_Entrar neste canal:" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Se sabes o nome do canal onde queres entrar, escreve-o aqui." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "_Abrir a Lista de Canais." + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "Obter a Lista de Canais" + +#: src/fe-gtk/joind.c:212 +#, fuzzy +msgid "_Always show this dialog after connecting." +msgstr "Mostrar _sempre este diálogo depois de ligar." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Diálogo com" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Tópico para %s é: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Nenhum tópico introduzido" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"Este servidor ainda tem %d canais ou diálogos associados. Fechá-los todos?" + +#: src/fe-gtk/maingui.c:1283 +#, fuzzy +msgid "Quit XChat?" +msgstr "Sobre XChat" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1310 +#, fuzzy, c-format +msgid "You are connected to %i IRC networks." +msgstr "Ligar automaticamente ao início" + +#: src/fe-gtk/maingui.c:1312 +#, fuzzy +msgid "Are you sure you want to quit?" +msgstr "Tens a certeza que queres retirar todas as interdições de %s?" + +#: src/fe-gtk/maingui.c:1314 +#, fuzzy +msgid "Some file transfers are still active." +msgstr "Transferências de ficheiros ainda activas, sair do xchat?" + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Inserir Código de Atributo ou Côr" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Negrito</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Sublinhado</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Normal" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Cores 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Cores 8-15" + +#: src/fe-gtk/maingui.c:1612 +#, fuzzy +msgid "_Settings" +msgstr "_Configurações" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "Esconder mensagens de entrada e saída de canal" + +#: src/fe-gtk/maingui.c:1625 +#, fuzzy +msgid "_Extra Alerts" +msgstr "Alertas" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "Apitar em mensagens" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +#, fuzzy +msgid "_Detach" +msgstr "_Separar Separador" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "_Fechar" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "Limite de utilizadores deve de ser um número!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Protecção do Tópico" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Não recebe mensagens exteriores" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Secreto" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Convite Apenas" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Moderado" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Lista de Interdições" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Palavra Chave" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Limite de Utilizadores" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Mostrar/Esconder lista de utilizadores" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"Não foi possível definir o fundo transparente!\n" +"\n" +"Você pode estar a utilizar um controlador de\n" +"janelas que actualmente não é suportado.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Introduzir novo nick:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Host desconhecido" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Nome Real:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Utilizador" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "País:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Servidor:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "%u minutos atrás" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Última Msg:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Msg Ausência:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"A barra de menu está escondida. Para a ligar novamente pressiona F9 ou " +"carrega no botão direito do rato numa área livre da janela principal." + +#: src/fe-gtk/menu.c:944 +#, fuzzy +msgid "Open Link in Browser" +msgstr "Abrir Link em Browser" + +#: src/fe-gtk/menu.c:945 +#, fuzzy +msgid "Copy Selected Link" +msgstr "Copiar Link Seleccionado" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Entrar no Canal" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Sair do Canal" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Alternar entre Canais" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: Menu de utilizador" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Editar este menu..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Pedir lista de canais..." + +#: src/fe-gtk/menu.c:1348 +#, fuzzy +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Comandos de Utilizador - Códigos especiais:\n" +"\n" +"%c = canal actual\n" +"%m = informação da máquina\n" +"%n = o teu nick\n" +"%t = hora/data\n" +"%v = versão do xchat\n" +"%2 = palavra 2\n" +"%3 = palavra 3\n" +"&2 = palavra 2 até ao fim da linha\n" +"&3 = palavra 3 até ao fim da linha\n" +"\n" +"ex:\n" +"/cmd john olá\n" +"\n" +"%2 seria \"john\"\n" +"&2 seria \"john olá\"." + +#: src/fe-gtk/menu.c:1364 +#, fuzzy +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Botões da Lista de Utilizadores - Códigos especiais:\n" +"\n" +"%a = todos os nicks seleccionados\n" +"%c = canal actual\n" +"%h = endereço do nick seleccionado\n" +"%m = informação da máquina\n" +"%n = o teu nick\n" +"%s = nick seleccionado\n" +"%t = hora/data\n" + +#: src/fe-gtk/menu.c:1374 +#, fuzzy +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Botões de Diálogo - Códigos especiais:\n" +"\n" +"%a = todos os nicks seleccionados\n" +"%c = canal actual\n" +"%h = endereço do nick seleccionado\n" +"%m = informação da máquina\n" +"%n = o teu nick\n" +"%s = nick seleccionado\n" +"%t = hora/data\n" + +#: src/fe-gtk/menu.c:1384 +#, fuzzy +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"Respostas CTCP - Códigos especiais:\n" +"\n" +"%d = dados (todo o ctcp)\n" +"%m = informação da máquina\n" +"%s = nick de quem mandou o ctcp\n" +"%t = hora/data\n" +"%2 = palavra 2\n" +"%3 = palavra 3\n" +"&2 = palavra 2 até ao fim da linha\n" +"&3 = palavra 3 até ao fim da linha\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"URL Handlers - Códigos especiais:\n" +"\n" +"%s = frase do URL\n" +"\n" +"Colocando um ! à frente do comando\n" +"indica que deverá ser enviado para uma\n" +"shell em vez do XChat" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: Comandos Definidos pelo Utilizador" + +#: src/fe-gtk/menu.c:1411 +#, fuzzy +msgid "XChat: Userlist Popup menu" +msgstr "XChat: Menu popup da lista de utilizadores" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Subsituir por" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: Substituir" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: Gestor de URL" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: Botões da Lista de Utilizadores" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: Botões de Diálogo" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: Respostas CTCP" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "Li_sta de Redes..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "_Novo" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Separador de Servidor..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Separador de Canal..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Janela de Servidor..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Janela de Canal..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "_Carregar Plugin ou Script..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "_Ver" + +#: src/fe-gtk/menu.c:1591 +#, fuzzy +msgid "_Menu Bar" +msgstr "Barra de _Menu" + +#: src/fe-gtk/menu.c:1592 +#, fuzzy +msgid "_Topic Bar" +msgstr "Barra de _Tópico" + +#: src/fe-gtk/menu.c:1593 +#, fuzzy +msgid "_User List" +msgstr "Lista de Utilizadores" + +#: src/fe-gtk/menu.c:1594 +#, fuzzy +msgid "U_serlist Buttons" +msgstr "Botões da Lista de _Utilizadores" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "Botões de M_odo" + +#: src/fe-gtk/menu.c:1597 +#, fuzzy +msgid "_Channel Switcher" +msgstr "Lista de Canais..." + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "_Separadores" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "Á_rvore" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "Medidores de _Rede" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Desligado" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Imagem" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "_Servidor" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "_Desligar" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "Entrar num canal..." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "Entrar num canal..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Marcado como Ausente" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "Menu de _Utilizador" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "_Configurações" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "_Preferências" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Avançadas" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Substituições Automaticas..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "Respostas CTCP..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Botões de Diálogo..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Atalhos do teclado..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Eventos de Texto..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "Gestores de URL..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Comandos de Utilizador..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Botões da Lista de Utilizadores..." + +#: src/fe-gtk/menu.c:1633 +#, fuzzy +msgid "Userlist Popup..." +msgstr "Popup da Lista de Utilizadores..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_Janela" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Lista de Interditos..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Tabela de Caracteres..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Conversas DCC..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Transferências de Ficheiros..." + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "Lista de Interditos..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Lista de Ignorados..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Plugins e Scripts..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Registo Não Processado..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "Obter URL..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Limpar Linha de Marcador" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "_Limpar Texto" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "_Procurar Texto..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Gravar Texto..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_Ajuda" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "_Conteúdos" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "_Sobre" + +#: src/fe-gtk/menu.c:2147 +msgid "_Attach" +msgstr "" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Quando foi visto" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Desligado" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Nunca" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, fuzzy, c-format +msgid "%d minutes ago" +msgstr "%u minutos atrás" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Ligado" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Introduzir nick a adicionar:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "XChat: Lista de Ficheiros Enviados" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "Abrir Diálogo" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:591 +#, fuzzy +msgid "_Hide" +msgstr "Escondido" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +#, fuzzy +msgid "Channel Message" +msgstr "Nome do canal" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +#, fuzzy +msgid "Private Message" +msgstr "Apitar em mensagens privadas" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +#, fuzzy +msgid "Highlighted Message" +msgstr "Apitar em mensagens sublinhadas" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "Ausente" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Versão" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Descrição" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Seleccionar um Plugin ou Script para carregar" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: Plugins e Scripts" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "_Carregar..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "_Terminar" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "" + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: Registo não processado (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Limpar registo não processado" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "A janela para a qual abriu esta Procura já não existe." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "" + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: Procurar" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "_Procurar" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Nova Rede" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Quer mesmo remover a rede \"%s\" e todos os seus servidores?" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "Canal" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: Lista de Canais (%s)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "Password:" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "_Editar" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "Nome de Utilizador e Real não podem ser deixados vazios." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: Editar %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Servidores para %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Ligar apenas ao servidor seleccionado" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Não testar todos os servidores quando a ligação falha." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Seus Detalhes" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Usar informação global do utilizador" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "_Nick:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Segunda escolha:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "Nome de _Utilizador" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "Nome _Verdadeiro:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Ligar" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Ligar automaticamente ao início" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "Utilizar um servidor proxy" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "Utilizar SSL para todos os servidores desta rede" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Aceitar certificados SSL inválidos" + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "Sair do canal:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "Canais onde entrar, separados por vírgulas e não espaços!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Comando de ligação:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Comandos extra a executar após a ligação. Se necessitar de mais de um " +"introduza LOAD -e <ficheiro>, onde <ficheiro> é um ficheiro texto com uma " +"lista de comandos a executar." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Password do nickserv:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Se o nick necessita de palavra chave, introduzi-la aqui. Não suportado por " +"todas as redes de IRC." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Password do servidor:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Palavra-chave para o servidor. Em caso de dúvida deixe em branco." + +#: src/fe-gtk/servlistgui.c:1496 +#, fuzzy +msgid "Character set:" +msgstr "Caracteres:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: Lista de Redes" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Informação do Utilizador" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Terceira escolha:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Redes" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "Não mostrar lista de redes no arranque" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "_Editar..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "_Ordenar" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "_Ligar" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Aparência da Caixa de Texto" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Fonte:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Imagem de fundo:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Nicks coloridos" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Dar a cada pessoa no IRC uma cor diferente" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Indentar nicks" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Justificar nicks à direita." + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Fundo transparente" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Mostrar linha de marcação" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Inserir linha vermelha após último texto lido." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Configurações de Transparência" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Vermelho:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Verde:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Azul:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Horas" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Introduzir horas nas conversas" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Formato de hora" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Ver a manpage de strftime para detalhes." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "Último utilizado" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Caixa de entrada" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Utilizar as fontes e cores da caixa de texto" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Completar Nick" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "Completar nick automaticamente (sem usar a tecla TAB)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Sufixo para completar nick:" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "Ordem com quem o nick é completo" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Códigos da Caixa de Escrita" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Interpretar %nnn como um código ASCII" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Interpretar %C, %B como Cor, Bold, etc" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, OPs primeiro" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, OPs no fim" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Desordenado" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Cima" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Baixo" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Escondido" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Lista de Utilizadores" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Mostrar endereço na lista de utilizadores" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Lista de utilizadores ordenada por:" + +#: src/fe-gtk/setup.c:205 +#, fuzzy +msgid "Show user list at:" +msgstr "Mostrar/Esconder lista de utilizadores" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Controlo da ausência" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "Observar o estado de ausente dos utilizadores e colori-los" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "Em canais menores que:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Acção de Clique Duplo" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Janelas" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Separadores" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Sempre" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Apenas separadores pedidos" + +#: src/fe-gtk/setup.c:242 +#, fuzzy +msgid "Tree" +msgstr "Á_rvore" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Abrir separador para mensagens do servidor" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Abrir separador para mensagens do servidor" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Ordenar separadores por ordem alfabética" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "Separadores pequenos" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Focar separadores novos:" + +#: src/fe-gtk/setup.c:258 +#, fuzzy +msgid "Show channel switcher at:" +msgstr "Em canais menores que:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Diminuir nome dos separadores para:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "letras." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Separadores ou Janelas" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Abrir canais em:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Abrir diálogos em:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Abrir utilitários em:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Abrir DCC, Ignorados, Notificações, etc, em separadores ou janelas?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "Não" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Sim" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "Escolher sempre pasta de gravação" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Ficheiros e Directorias" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Aceitar automaticamente ficheiros:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Receber ficheiros para:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Mover ficheiros completos para:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Gravar nick no nome do ficheiro" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Configurações de Rede" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Obter endereço através do servidor de IRC" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Pergunta ao servidor de IRC o teu endereço real. Utiliza se tiveres um " +"endereço 192.168.*.*!" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "Endereço IP de DCC" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Utilizar este endereço quando se oferecem ficheiros." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Primeiro porto DCC de envio:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Último porto DCC de envio:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!Deixar portos a zero para alcance máximo." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Velocidades Máximas de Transferência de Ficheiros (bytes por segundo)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Um envio:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Velocidade máx. numa transferência" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Uma recepção:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Todas os envios combinados:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Velocidade máx. para todo o tráfego" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Todas as recepções combinadas:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Alertas" + +#: src/fe-gtk/setup.c:333 +#, fuzzy +msgid "Show tray balloons on:" +msgstr "Onde mostrar separadores:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "" + +#: src/fe-gtk/setup.c:341 +#, fuzzy +msgid "Highlighted Messages" +msgstr "Apitar em mensagens sublinhadas" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:344 +#, fuzzy +msgid "Extra words to highlight:" +msgstr "Palavras extra para sublinhar:" + +#: src/fe-gtk/setup.c:345 +#, fuzzy +msgid "Nick names not to highlight:" +msgstr "Nicks a não sublinhar" + +#: src/fe-gtk/setup.c:346 +#, fuzzy +msgid "Nick names to always highlight:" +msgstr "Nicks a não sublinhar" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Separar palavras com vírgulas." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Mensagens por Defeito" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Desligar:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Sair do canal:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Ausente:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Ausente" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Anunciar mensagens de ausência" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Anunciar as mensagens de ausência para todos os canais" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Mostrar ausências uma única vez" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Mostrar mensagens de ausência uma única vez" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Retirar ausência automaticamente" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Retirar ausência antes de enviar mensagens" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Configurações Avançadas" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Período para re-ligar:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Mostrar os MODOs na forma natural" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Whois após notificação" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" +"Envia um /WHOIS quando um utilizador da sua lista de notificações se liga" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Esconder mensagens de entrada e saída de canal" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Esconder mensagens de entrada e saída de canal por defeito" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Abrir Automaticamente Janelas de DCC" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Janela de Envio" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Janela de Recepção" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Janela de conversa" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Registos" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "Ligar registos das conversas" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Nome do ficheiro de registos" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Servidor %c=Canal %n=rede." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Inserir hora das mensagens nos registos" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Formato hora das mensagens do registo:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Desligado)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Todas as Ligações" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "Servidor de IRC apenas" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "Ligações DCC apenas" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Seu Endereço IP" + +#: src/fe-gtk/setup.c:423 +#, fuzzy +msgid "Bind to:" +msgstr "Unir a:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "Útil apenas para computadores com vários endereços." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Servidor Proxy:" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Host:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Porta:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Tipo:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Utilizar proxy para:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Autenticação Proxy" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Utilizar Autenticação (apenas MS Proxy, HTTP or Socks5)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Utilizar Autenticação (apenas HTTP or Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Utilizador:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Password:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Seleccionar um Ficheiro de Imagem" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Seleccionar fonte" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Seleccionar..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Marcar utilizadores identificados com:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Marcar utilizadores não identificados com:" + +#: src/fe-gtk/setup.c:1161 +#, fuzzy +msgid "Open Data Folder" +msgstr "Abrir Pasta..." + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Seleccionar côr" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Cores de Texto" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "Cores do mIRC:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Cores locais:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Frente:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Fundo:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Texto de Marcação" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Cores da Interface" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Novos dados:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Linha de marcador:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Nova mensagem:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Utilizador ausente:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Sublinhar:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Evento" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Ficheiro de som:" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Seleccionar um ficheiro de som" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Método para tocar sons:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "_Programa externo:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "_Externo" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_Automático" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "_Directoria de ficheiros de som:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Ficheiro de som:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "_Percorrer..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "_Tocar" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Interface" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Caixa de texto" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Lista de utilizadores" + +#: src/fe-gtk/setup.c:1703 +#, fuzzy +msgid "Channel switcher" +msgstr "Lista de Canais..." + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Cores" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Conversar" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Geral" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Som" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Configuração de Rede" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Transferência de ficheiros" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Categorias" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Algumas alterações necessitam que reinicie o programa." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*AVISO*\n" +"Aceitar automaticamente DCC na directoria\n" +"de utilizador pode ser perigoso. Ex:\n" +"Alguém pode enviar um .bash_profile" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: Preferências" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Houve um erro ao processar a frase" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Este sinal apenas passa %d argumentos, $%d é inválido" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Escrever Ficheiro de Textos" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Editar Eventos" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ Número" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Carregar De..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Testar todos" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: Captura de URL" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Limpar lista" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Copiar URL seleccionado" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Copiar" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Gravar lista para ficheiro" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "" + +#~ msgid "US Minor Outlying Islands" +#~ msgstr "Ilhas Menores Distantes dos Estados Unidos" + +#~ msgid "Direct client-to-client" +#~ msgstr "Ligação directa" + +#~ msgid "Send File" +#~ msgstr "Enviar Ficheiro" + +#~ msgid "Offer Chat" +#~ msgstr "Oferecer Conversa" + +#~ msgid "Abort Chat" +#~ msgstr "Cancelar Conversa" + +#~ msgid "Userinfo" +#~ msgstr "Informação do Utilizador" + +#~ msgid "Clientinfo" +#~ msgstr "Informação do Cliente" + +#~ msgid "Time" +#~ msgstr "Hora" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "Operador" + +#, fuzzy +#~ msgid "Kill this user" +#~ msgstr "'Matar' Utilizador" + +#~ msgid "Mode" +#~ msgstr "Modo" + +#~ msgid "Give Half-Ops" +#~ msgstr "Dar Semi-OP" + +#~ msgid "Take Half-Ops" +#~ msgstr "Tirar Semi-OP" + +#~ msgid "Ignore" +#~ msgstr "Ignorar" + +#~ msgid "Ignore User" +#~ msgstr "Ignorar Utilizador" + +#~ msgid "UnIgnore User" +#~ msgstr "Retirar Ignorado" + +#~ msgid "Info" +#~ msgstr "Informação" + +#~ msgid "Who" +#~ msgstr "Who" + +#~ msgid "DNS Lookup" +#~ msgstr "Pesquisa DNS" + +#~ msgid "Trace" +#~ msgstr "Trace" + +#~ msgid "UserHost" +#~ msgstr "Host do utilizador" + +#~ msgid "External" +#~ msgstr "Externo" + +#~ msgid "Traceroute" +#~ msgstr "Traceroute" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#, fuzzy +#~ msgid "Unban" +#~ msgstr "Reautorizar" + +#~ msgid "I can't save an empty list!" +#~ msgstr "Impossível gravar uma lista vazia!" + +#~ msgid "List display options:" +#~ msgstr "Opções de Listagem:" + +#~ msgid "Minimum Users:" +#~ msgstr "Utilizadores Mínimos:" + +#~ msgid "Maximum Users:" +#~ msgstr "Utilizadores Máximos:" + +#, fuzzy +#~ msgid "Regex Match:" +#~ msgstr "Expressão regular:" + +#, fuzzy +#~ msgid "Apply Match to:" +#~ msgstr "Usar expressão regular em:" + +#~ msgid "Apply" +#~ msgstr "Aplicar" + +#~ msgid "Refresh the list" +#~ msgstr "Actualizar lista" + +#~ msgid "Save the list" +#~ msgstr "Gravar a lista" + +#~ msgid "None" +#~ msgstr "Nenhum" + +#~ msgid "To" +#~ msgstr "Para" + +#~ msgid "Started" +#~ msgstr "Iniciado" + +#~ msgid "Speed limit" +#~ msgstr "Limite de velocidade" + +#~ msgid "XChat: File Receive List" +#~ msgstr "XChat: Lista de Ficheiros Recebidos" + +#~ msgid "Open" +#~ msgstr "Abrir" + +#, fuzzy +#~ msgid "Ack" +#~ msgstr "Ack" + +#~ msgid "To/From" +#~ msgstr "De/Para" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "Mais nenhuma separador aberta, sair do xchat?" + +#~ msgid "Show join/part messages" +#~ msgstr "Mostrar mensagens de entrada/saída do canal" + +#~ msgid "Color paste" +#~ msgstr "Colar cores" + +#~ msgid "Go to" +#~ msgstr "Ir para" + +#~ msgid "_Close Tab" +#~ msgstr "_Fechar Separador" + +#~ msgid "Notify List..." +#~ msgstr "Lista de Notificações..." + +#~ msgid "_Close Window" +#~ msgstr "_Fechar Janela" + +#~ msgid "User" +#~ msgstr "Utilizador" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: Lista de Notificações" + +#~ msgid "C_hannels to join:" +#~ msgstr "_Canais a entrar:" + +#~ msgid "Resizable user list" +#~ msgstr "Lista de utilizadores redimensionavel" + +#~ msgid "Left" +#~ msgstr "Esquerda" + +#~ msgid "Right" +#~ msgstr "Direita" + +#~ msgid "(Can be a text file relative to ~/.xchat2/)." +#~ msgstr "(Pode ser um ficheiro de texto relativo a ~/.xchat2/)." + +#~ msgid "(Can be a text file relative to config dir)." +#~ msgstr "" +#~ "(Pode ser um ficheiro de texto relativo à directoria de configuração)." + +#~ msgid "Flash taskbar on highlighted messages" +#~ msgstr "Piscar barra de tarefas em mensagens sublinhadas" + +#~ msgid "Beep on channel messages" +#~ msgstr "Apitar em mensagens de canal" diff --git a/etc/wyatt8740/po/remove-potcdate.sin b/etc/wyatt8740/po/remove-potcdate.sin new file mode 100644 index 0000000..8c70dfb --- /dev/null +++ b/etc/wyatt8740/po/remove-potcdate.sin @@ -0,0 +1,25 @@ +# Sed script that removes the POT-Creation-Date line in the header entry +# from a POT file. +# +# Copyright (C) 2002 Free Software Foundation, Inc. +# Copying and distribution of this file, with or without modification, +# are permitted in any medium without royalty provided the copyright +# notice and this notice are preserved. This file is offered as-is, +# without any warranty. +# +# The distinction between the first and the following occurrences of the +# pattern is achieved by looking at the hold space. +/^"POT-Creation-Date: .*"$/{ +x +# Test if the hold space is empty. +s/P/P/ +ta +# Yes it was empty. First occurrence. Remove the line. +g +d +bb +:a +# The hold space was nonempty. Following occurrences. Do nothing. +x +:b +} diff --git a/etc/wyatt8740/po/ru.po b/etc/wyatt8740/po/ru.po new file mode 100644 index 0000000..ca08170 --- /dev/null +++ b/etc/wyatt8740/po/ru.po @@ -0,0 +1,5928 @@ +# This file is distributed under the same license as the xchat package. +# translation of xchat-2.8.6.po to Russian +# Copyright (C) 2000, 2004, 2005 Free Software Foundation, Inc. +# Volosenkov Dmitry <_bil_@mail.ru>, 1999. +# Valek Filippov <frob@df.ru>, 2001. +# Peter Astakhov <astakhovp@mail.ru>, 2004. +# Peter Astakhov <astakhovp@mail.ru>, 2005. +# Peter Astakhov <astakhovp@mail.ru>, 2008. +# Alex <davian818@gmail.com>, 2010 +msgid "" +msgstr "" +"Project-Id-Version: xchat-2.8.4\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2010-05-13 03:41+0700\n" +"Last-Translator: Алекс <davian818@gmail.com>\n" +"Language-Team: Russian <gnu@mx.ru>\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Не удалось создать ~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Я занят" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Ухожу я от вас (xchat 2.4.5 или старше)" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* Глупо запускать IRC под пользователем root! Вы должны\n" +" создать пользовательскую учетную запись и работать под ним.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Ожидание" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Активен" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Ошибка" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Готово" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Соединение" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Остановлено" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "Нет доступа к %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Ошибка" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s предлагает \"%s\". Будете принимать?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Нет активных DCC\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "ДА " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "НЕТ " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Вас забрасывают CTCP запросами от %s, %s игнорируется.\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "Вас забрасывают сообщениями от %s, выключаем автодиалог.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s на канале\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s отключен\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Вы не зашли на канал. Наберите /join #<канал>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Нет соединения. Наберите /server <адрес> [<порт>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Вы уже отсутствуете: %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "Вы уже вернулись.\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "Отсутствует /bin/sh для запуска!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Доступные команды:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Определенные пользователем команды:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Определенные расширениями команды:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Наберите /HELP <имя команды> для более полной информации, или /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Игнорируется неизвестный аргумент \"%s\"." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "Плагин не найден\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Плагин невозможно выгрузить.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "" +"ADDBUTTON <название> <действие> добавляет кнопку под списком пользователей" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <команда>, посылает команду во всех каналах где вы есть " + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHANL <команда>, посылает команду на все ваши каналы" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <cmd>, посылает команду на всех серверах где вы есть " + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<причина>], устанавливает флаг отсутствия" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "BACK, сбрасывает флаг остутствия" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <маска> [<тип>], блокирует доступ на текущий канал для каждого, " +"совпадающего с маской. Если они уже на канале, то они не будут скинуты (для " +"этого нужно быть оператором канала)" + +#: src/common/outbound.c:3506 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <переменная> [<значение>]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "CLEAR [ALL|HISTORY], очищает текущее окно или историю команд" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, закрывает текущее окно или вкладку" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <код|маска>, находит код страны, например: au = Австралия" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <ник> <сообщение>, посылает пользователю с указанным ником CCTP-" +"сообщение, обычные сообщения -- VERSION и USERINFO" + +#: src/common/outbound.c:3516 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "CYCLE [<channel>], выйти с текущего канала и немедленно зайти" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <имя> - принять отправляемый файл\n" +"DCC SEND [-maxcps=#] <имя> <файл> - отправить файл получателю\n" +"DCC PSEND [-maxcps=#] <имя> [файл] - отправить файл в пассивном режиме\n" +"DCC LIST - показать список DCC\n" +"DCC CHAT <имя> - запросить разговор через DCC\n" +"DCC PCHAT <nick> - запросить разговор в пассивном режиме\n" +"DCC CLOSE <тип> <имя> <файл> пример:\n" +" /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <имя>, удаляет chanhalf-op статус у имени на текущем канале\n" +"(нужны права администратора канала)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <имя>, удаляет кнопку из-под списка пользователей" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <nick>, убирает права администратора канала у пользователя на текущем " +"канале (требует права администратора)." + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <nick>, удаляет право голоса у пользователя с переданным именем на " +"текущем\n" +"канале. Для использования нужны права администратора канала" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, отсоединиться от сервера" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <имя,адрес,IP> - поиск IP адреса пользователя" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <текст>, вывести текст на локальной машине" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <Команда>, выполняет команду. При передаче опции -o вывод \n" +"команды перенаправляется в текущий канал. Иначе вывод печатается в текущем " +"окне" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, sends the process SIGCONT" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], уничтожает выполняющийся процесс в текущей сессии. Если -9 " +"процессу перадается сигнал SIGKILL" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, посылает процессу сигнал SIGSTOP" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, посылает процессу данные на stdin" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, сбрасывает текущую очередь отправки сервера" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <адрес> [<порт>], прокси через хост, порт по умолчанию - 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <имя> <пароль>, Убрать фантомное имя пользователя" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" +"HOP <Ник>, дает статус полуоператора канала пользователю (требуются права " +"оператора)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <пароль>, представиться nickserv-у" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <маска> <типы..> <параметры..>\n" +" маска - маска игнорируемого хоста, например: *!*@*.aol.com\n" +" типы - типы игнорируемых данных, один или несколько из следующих:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" параметры - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <Ник> [<канал>], приглашает кого-либо на канал, по умолчанию, на " +"текущий (требует права оператора)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <канал>, зайти на канал" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "KICK <Ник>, удаляет человека с текущего канала (нужны права оператора)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <Ник>, удаляет и ставит бан с данного канала (требуются права " +"оператора)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, инициирует новую проверку канала" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <Строка>, ищет строку в буфере" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <ИмяФайла>, загружает скрипт или плагин" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, убирает у всех на текущем канале права полуоператора (требуются " +"права оператора)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, убирает у всех права оператора на текущем канале (требуются права " +"оператора)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <action>, посылает действие на текущий канал (действие пишется от " +"третьего лица, например, /me прыгает)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, удаляет всех, кроме себя, с канала (требуются права оператора)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, Устанавливает всем пользователям текущего канала права оператора " +"(требуются права оператора канала)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <Ник> <сообщение>, отправляет приватное сообщение" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, показывает список посетителей текущего канала" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <Ник> <сообщение>, отправляет CTCP сообщение" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <ИмяСервера> [<порт>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "/NICK <Ник>, меняет ваш ник" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <Ник/канал> <сообщение>, посылает уведомление. Уведомление - тип " +"сообщений that should be auto reacted to" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n network1[,network2,...]] [<Ник>], показывает список ваших " +"уведомлений или добавляет что-либо к ним" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" +"OP <Ник>, дает пользователю статус оператора канала (требуются права " +"администратора)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<Канал>] [<Причина>], выйти с канала, по умолчанию - с текущего" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <Ник | канал>, CTCP-пинг пользователя или канала" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "QUERY [-nofocus] <Ник>, открыть новое окно приватных сообщений" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<причина>] - отсоединение от текущего сервера" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <Текст>, отсылает текст в чистом виде на сервер" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<Сервер>] [<Порт>] [<Пароль>]. Может использоваться только " +"как /RECONNECT для переподключения к текущему серверу или с /RECONNECT ALL " +"для переподключения ко всем серверам" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [-ssl] [<Сервер>] [<Порт>] [<Пароль>]. Может использоваться только " +"как /RECONNECT для переподключения к текущему серверу или с /RECONNECT ALL " +"для переподключения ко всем серверам" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <Текст>, посылает данные в xchat, как если бы они были получены от " +"сервера" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <Текст>, посылает текст объекту в текущем окне" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <псевдоним> [<файл>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <Сервер> <порт> <канал>, подключиться к серверу, а затем к " +"каналу" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <Сервер> <порт> <канал>, подключиться к серверу, а затем к " +"каналу" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <адрес> [<порт>] [<пароль>] соединяет с сервером. Порт по " +"умолчанию 6667 для нормальных соединений и 9999 для соединений через SSL" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <адрес> [<порт>] [<пароль>] соединяет с сервером. Порт по умолчанию " +"6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <переменная> [<значение>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<позиция>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<тема>], устанавливает тему, если она указана. Иначе отображает " +"текущую тему" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" +"\n" +"TRAY -f <интервал> <файл1> [<файл2>] Blink tray between two icons.\n" +"TRAY -f <имя_файла> Set tray to a fixed icon.\n" +"TRAY -i <число> Blink tray with an internal icon.\n" +"TRAY -t <текст> Set the tray tooltip.\n" +"TRAY -b <заголовок> <текст> Set the tray balloon." + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <маска> [<маска>...], снять запрет для специфической маски" + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <маска> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <имя>, выгрузить плагин или скрипт" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <адрес>, открыть ссылку в браузере" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <имя1> <имя2> и т.д., выделить имена в списке пользователей" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <Ник>, дает право голоса кому-либо (требуются права оператора)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <Сообщение>, посылает сообщение на все каналы" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <Сообщение>, посылает сообщение всемl операторам текущего канала" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Использование: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"По этой команде нет помощи.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Команда не существует\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Недопустимые аргументы команды пользователя.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Очень много рекурсивных команд пользователя, прерывание." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Неизвестная команда. Попробуйте /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "Нет символа xchat_plugin_init; вы уверены, что это плагин для xchat?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Вы уверены, что сервер и порт поддерживают SSL?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Не могу разрешить имя %s\n" +"Проверьте ваши сетевые настройки!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Ошибка прохождения через прокси.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Переключаемся к следующему серверу %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Предупреждение: кодировка \"%s\" неизвестна. Трансляции для %s сети не будет." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 добавлен в список извещений." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 список банов:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tНе получается войти на%C26 %B$1 %O(Вы забанены)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 теперь известен как $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 забанил некоего $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tКанал $1 создан в $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O убрал права полуоператора с%C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O убрал права оператора канала с%C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O забрал голос у%C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 установил исключение на $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O установил права полуоператора канала для%C26 $2" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 приглашает на $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UКанал Пользователи Тема" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 установил режим $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Канал $1 режимы: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O дал статус оператора канала %C26 $2" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 убрал освобождение с $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 снял приглашение для $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 убрал ключевые слова канала" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 убрал лимит пользователей" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 установил следующие ключевые слова канала $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 установил лимит канала в $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 убрал бан с $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O дал голос%C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Соединение установлено. Входим в сеть..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22Соединение с $1 ($2) порт $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21Соединение невозможно. Ошибка: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tПолучен CTCP $1 от $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tПолучен CTCP $1 от $2 (для $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2 " + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tПолучен CTCP звук $1 от $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tПолучен CTCP Звук $1 от $2 (для $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tDCC CHAT с %C26$1%O прерван." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC CHAT соединение установлено с %C26$1 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tDCC CHAT с %C26$1%O потеряно ($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tПринят запрос на DCC CHAT от $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tПредлагаем DCC CHAT для $1" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tУже предложен CHAT с $1" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$tDCC $1 попытка соединения с%C26 $2%O неудачна (err=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tПринято '$1%O' от $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 Type В/От Состояние Размер Позиция Файл " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O." +"%010%C22*%O$tContents of packet: $2" +msgstr "" +"%C22*%O$tПринят неверный DCC-запрос от %C26$1%O.%010%C22*%O$tСодержимое " +"пакета: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tПредлагаем%C26 $1%O для%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tНет такого предложения DCC." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV%C26 $2%O с%C26 $1%O прервано." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC RECV%C26 $1%O от%C26 $3%O завершено %C30[%C26$4%O cps%C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC RECV соединение установлено с%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV%C26 $1%O от%C26 $3%O сбой ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV: Не могу открыть $1 для записи ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "" +"%C22*%O$tФайл%C26 $1%C уже существует, сохраняем его как%C26 $2%O вместо " +"этого." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Oзапрос на продолжение%C26 $2 %Cот%C26 $3%C." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC SEND%C26 $2%O к%C26 $1%O прервано." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC SEND%C26 $1%O к%C26 $2%O завершено %C30[%C26$3%O cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC SEND соединение установлено с%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND%C26 $1%O для%C26 $2%O провален. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Oпредложил(а)%C26 $2 %O(%C26$3 %Oбайт)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cнет данных - прервано." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oс%C26 $3 %Oпрерывание по таймауту." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 удалено из списка уведомлений." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tСоединение разорвано ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tНайти ваш IP: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O добавлен в список игнорирования." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "Игнорирование %C26$1%O изменено." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O удален из списка игнорирования." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " Список игнорирований пуст." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "" +"%C22*%O$tНевозможно подключиться%C26 %B$1 %O(Канал только по приглашениям)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tВы приглашены на %C26 $1%O by%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) зашел на канал $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "" +"%C22-*%O$tНевозможно подключится %C26 %B$1 %O(Требуется ключевое слово)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 выкинул $2 с $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$t$1 изгнал вас с канала ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD Пропущен." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 уже используется. Пытаемся как $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$tНик уже используется. Используйте /NICK, чтобы попробовать другой." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tНет такого DCC." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tНет запущенного процесса" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tСписок уведомлений пуст." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Список уведомлений " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 пользователей в списке уведомлений." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tУведомление: $1 отключен ($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tУведомление: $1 подключен ($3)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) покинул $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) покинул $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tPing ответ от $1 : $2 секунд(ы)" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tНе получено ответов в течении $1 секунд.Отсоединение." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tПроцесс уже запущен" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 ушел (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 установил режимы%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2 " + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tПоиск IP-адреса для%C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22Соединение установлено." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22Ищу $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tОстановлена предыдущая попытка соединения (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29Тема для $1%C %C29is: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 изменил тему на: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29Тема для $1%C %C29 установлена $2%C %C29в $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tНеизвестный хост. Возможно, вы ошиблись?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "%C22*%O$tНевозможно зайти%C26 %B$1 %O(Лимит пользователей исчерпан)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26пользователей на $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3 " + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cнедоступен %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2 " + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OКонец списка WHOIS." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O не работает %C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O не работает%C26 $2%O, подписан:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" +"%C22*%O$t%C28[%O$1%C28] %Oнастоящие пользователь@машина%C27 $2%O, настоящий " +"IP%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Сейчас общаетесь на $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$t$3 изгнал вас из канала $2 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tВы ушли с канала $3" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tВы ушли из канала $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tВы пришласили%C26 $1%O на канал%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tТеперь вы известны как $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "Загружен протокол от" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** ЗАКАНЧИВАЕТСЯ ВХОЖДЕНИЕ НА %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** НАЧАЛО ВХОЖДЕНИЯ НА %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Не могу открыть лог-файл(ы) для записи. Проверьте\n" +" Права доступа на %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Сообщение слева" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Сообщение справа" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "Имя зашедшей персоны" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "Вы уже на канале" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "Адрес компьютера персоны" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Ник" + +#: src/common/text.c:973 +msgid "The action" +msgstr "Действие" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Символ режима" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Выявленный текст" + +#: src/common/text.c:980 +msgid "The text" +msgstr "Текст" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Сообщение" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Старый ник" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Новый ник" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Ник человека, который поменял Топик" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Топик" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Канал" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "Ник выкинувшего" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "Персона выкинута" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "Канал" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "Причина" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "Ник вышедшего" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "Время" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "Создатель" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Ник" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Причина" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Адрес машины" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "Откуда этот" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "Время в формате x.x (см. ниже)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "Список каналов..." + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "Звук" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "Ник персоны" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "CTCP событие" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "Ник персоны, установившей ключ" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "Ключ" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "Ник персоны, установившей лимит" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "Ограничение" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "Ник человека, установившего оператора" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "Ник персоны, кому дали права оператора" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "Ник персоны, кому дали права полуоператора" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "Ник человека, который дал права полуоператора" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "Ник человека, который дал право голоса" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "Ник человека, которому дали право голоса" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "Ник забанившего" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "Маска бана" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "Ник удалившего ключ" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "Ник удалившего ограничение" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "Ник персоны, который де-опнул" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "Ник персоны, которого де-опили." + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "Ник персоны, который снял статус полуоператора" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Ник персоны, с которой сняли статус полуоператора" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "Ник персоны, который снял право голоса" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "Ник персоны, с которой сняли право голоса" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "Ник персоны, снявшей бан." + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "Ник персоны, вызвавшей исключение" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "Маска исключения" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "Ник персоны, убравшей исключение" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "Ник персоны, сделавшей приглашение" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "Маска приглашения" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "Ник персоны, удалившей приглашение" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "Ник персоны, установившего режим" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "Знаки режима (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "Буквы режима" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "Канал установлен" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Имя пользователя" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Полное имя" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Член канала/\"IRC - оператор\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Информация о сервере" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Время простоя" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Время ввода пароля" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Причина ухода:" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Сообщение" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Учетная запись" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "Фактический пользователь@компьютер" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "Фактический IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Имя канала" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Текст" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Имя сервера" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Ник персоны, пригласившей вас" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Пользователи" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Ник используется" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Пробуем ник" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Порт" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Сеть" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Строка режимов" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "IP Адрес" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "Тип DCC" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Имя файла" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Имя файла у получателя" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Путь" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Положение" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Размер" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "Строка DCC" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Количество уведомлений" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Старое имя файла" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Новое имя файла" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Получатель" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Маска компьютера" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Имя машины" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "Пакет" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Секунд." + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Ник приглашенного" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Маска бана" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Кто установил бан" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Продолжительность бана" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Ошибка разбора события %s.\n" +"Загружаем по умолчанию." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"Невозможно прочитать звуковой файл:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "Удаленная машина закрыла сокет" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Соединение отвергнуто" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Нет маршрута к хосту" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Истечение времени ожидания соединения" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Не могу назначить этот адрес" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Соединение оборвано" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Остров Вознесения" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Андорра" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Объединенные арабские эмираты" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Афганистан" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Антигуа и Барбуда" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Албания" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Армения" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Нидерланды " + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Ангола" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Антарктика" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Аргентина" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "Обратный DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Американское Самоа" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Австрия" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Австралия" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Аруба" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Аландские острова" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Азербайджан" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Босния и Герцеговина" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Барбадос" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Бангладеш" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Бельгия" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Буркина Фасо" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Болгария" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Бахрейн" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Бурунди" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Businesses" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Бенин" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Бермуды" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Бруней " + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Боливия" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Бразилия" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Багамы" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Бутан" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Острова Буве" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Ботсвана" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Беларусь" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Белиз" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Канада" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Кокосовые о-ва" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "Республика Конго" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "Центральная Африканская Республика" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Конго" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Швейцария" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Кот'Д'Ивуар" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Острова Кука" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Чили" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Камерун" + +#: src/common/util.c:898 +msgid "China" +msgstr "Китай" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Колумбия" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Коммерческие" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Коста Рика" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Сербия и Черногория" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Куба" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Капо-Верде" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Рождественские острова" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Кипр" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "Чешская республика" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Германия" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Джибути" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Дания" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Доминика" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "Доминиканская республика" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Алжир" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Эквадор" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Образовательные учреждения" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Эстония" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Египет" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Западная сахара" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Эритрея" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Испания" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Эфиопия" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Европейский Союз" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Финляндия" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Фиджи" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Фолклендские о-ва" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Микронезия" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Острова Фарое" + +#: src/common/util.c:928 +msgid "France" +msgstr "Франция" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Габон" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Великобритания" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Гренада" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Грузия" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Французская Гвиана" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Британские острова" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Гана" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Гибралтар" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Гренландия" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Гамбия" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Гвинея" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Правительственные" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Гваделупа" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Экваториальная Гвинея" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Греция" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Южная Георгия и Южные Сандвичевы острова" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Гватемала" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Гуам" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Гвинея-Биссау" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Гайаня" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Гонк Конг" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Heard and McDonald Islands" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Гондурас" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Хорватия" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Гаити" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Венгрия" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Индонезия" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Ирландия" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Израиль" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Остров Мэн" + +#: src/common/util.c:959 +msgid "India" +msgstr "Индия" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Информационные" + +#: src/common/util.c:961 +msgid "International" +msgstr "Интернациональные" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Британская индоокеанская территория" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Ирак" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Иран" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Исландия" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Италия" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Джерси (Нормандские острова)" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Ямайка" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Иордания" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Япония" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Кения" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Киргизстан" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Камбоджа" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Кирибати" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Коморос" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "St. Kitts and Nevis" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Северная Корея" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Южная Корея" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Кувейт" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Каймановы о-ва" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Казахстан" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Лаос" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Ливан" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Санта Лючия" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Лихтенштейн" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Шри Ланка" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Либерия" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Лесото" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Литва" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Люксембург" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Латвия" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Ливия" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Марокко" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Монако" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Молдова" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "Медучреждения США" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Мадагаскар" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Маршаловы о-ва" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Военные" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Македония" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Мали" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Мьянма" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Монголия" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Макао" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Северные Марианские острова" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Мартиника" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Мавритания" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Монтсерат" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Мальта" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Маврикий" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Мальдивы" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Малави" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Мексика" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Малайзия" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Мозамбик" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Намибия" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Новая Каледония" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Нигер" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Сети" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Норфолкские острова" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Нигерия" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Никарагуа" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Нидерланды" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Норвегия" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Непал" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Науру" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Ниуе" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Новая зеландия" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Оман" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Сетевые некоммерческие организации" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Панама" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Перу" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Французская Полинезия" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Новая Гвинея" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Филлипины" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Пакистан" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Польша" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "St. Pierre and Miquelon" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Пуэрто Рико" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Палестинские территории" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Португалия" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Палау" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Парагвай" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Катар" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Реунион" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Румыния" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "Старая сеть ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Россия" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Руанда" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Саудовская Аравия" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Соломоновы о-ва" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Сейшелы" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Судан" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Швеция" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Сингапур" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "Святая Елена" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Словения" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard and Jan Mayen Islands" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Словацкая Республика" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Сьера Леоне" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "Сан Марино" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Сенегал" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Сомали" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Суринам" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "Сен-Томе и Принсипи" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Бывш. СССР" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "Сальвадор" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Сирия" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Свазиленд" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "о-ва Тёркс и Кайкос" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Чад" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Франзузские Южные Территории" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Того" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Таиланд" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Таджикистан" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "о-ва Токелау" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Восточный Тимор" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Туркменистан" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Тунис" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Тонга" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Турция" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Тринидад и Тобаго" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Тувалу" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Тайвань" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Танзания" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Украина" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Уганда" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Объединенное королевство" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "США" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Уругвай" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Узбекистан" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Ватикан" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "Сент-Винсент и Гренадины" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Венесуэла" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Британские Виргинские о-ва" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "Американские Виргинские о-ва" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Вьетнам" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Вануату" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Wallis and Futuna Islands" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Самоа" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Йемен" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Югославия" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Южная Африка" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Замбия" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Зимбабве" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Неизвестно" + +#: src/common/xchat.c:726 +msgid "_Open Dialog Window" +msgstr "Начать ра_зговор" + +#: src/common/xchat.c:727 +msgid "_Send a File" +msgstr "Отправить _файл" + +#: src/common/xchat.c:728 +msgid "_User Info (WhoIs)" +msgstr "_Информация (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "Добавить в дру_зья" + +#: src/common/xchat.c:730 +msgid "O_perator Actions" +msgstr "Действия опе_ратора" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Дать оператора" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Снять оператора" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Дать голос" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Забрать голос" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Кик/Бан" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Кик" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Бан" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "Кик+Бан" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Уйти с канала" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Зайти на канал..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Введите канал для входа:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Ссылки сервера" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Ping Server" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Не показывать версию" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Оператор" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "Снять оператора" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "пока" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "введите причину выброса %s:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Послать файл" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Диалог" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "Кто " + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Послать" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Разговор" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Очистить" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "Не удалось подключиться к сеансовой шине" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "Не удалось завершить NameHasOwner" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "Не удалось выполнить команду" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "удаленный доступ" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "модуль для удаленного доступа через DBUS" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Не удалось подключиться к сеансовой шине: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Не удалось получить %s: %s\n" + +#: src/fe-gtk/about.c:100 +msgid "About " +msgstr "О программе" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Многоплатформенный IRC-клиент" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Кодировка" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "Нет соединения." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Вы должны выбрать баны." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "Вы действительно хотите снять все баны с %s?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Маска" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "От" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Дата" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Список банов можно отктыть только при открытой вкладке канала." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "X-Chat: Список банов (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Удалить" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Сжать" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Обновить" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Статистика: %d/%d пользователей на %d/%d каналах" + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Выберите файл для вывода" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "Зайти на канал" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "Копировать имя _канала" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "Скопировать _тему общения" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "X-Chat: Список каналов (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "Поиск" + +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "_Загрузить список" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "Со_хранить список..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "Показывать только:" + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "Открывать каналы как:" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "к" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "пользователи." + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "Поиск в:" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "Имя канала" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "Тип поиска:" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "Простой поиск" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "Использовать шаблоны" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "Регулярное выражение" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Поиск:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Отправить файл %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Файл нельзя продолжить." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"Нет доступа к файлу: %s\n" +"%s.\n" +"Продолжение не доступно." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "Файл во входном каталоге больше запрошенного. Продолжение невозможно." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "Не могу продолжить одинаковый файл от 2 пользователей." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: Прием и передача файлов" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Статус" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Файл" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "Осталось" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Оба" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Отгрузки" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "Загрузки" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Подробно" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Файл:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "Адрес:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Прервать" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Подтвердить" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Продолж." + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Открыть папку..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: Список разговоров по DCC" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Прин" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Отпр" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "Время Начала" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*НОВ*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "Исправь!!!" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Имя" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Команда" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Вверх" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Вниз" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Отмена" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Записать" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Добавить новый" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Удалить" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Сортировать" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Помощь" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "Не подключаться к серверам" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "используется другой конфигурационный каталог" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "Не загружать автоматически плагины" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "показать каталог автозагружаемых плагинов" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "показать каталог пользовательских настроек" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Открывает URL вида irc://сервер:порт/канал" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Выполнить команду:" + +#: src/fe-gtk/fe-gtk.c:132 +msgid "Open URL or execute command in an existing XChat" +msgstr "Открыть URL или выполнить команду в запущенном XChat" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Вид окна при запуске. Ур. 0=обычное 1=свернутое 2=значок" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "уровень" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Показать информацию о версии" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"Ошибка открытия шрифта:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "Буфер поиска пуст.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d байт" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Очередь отправки, байт: %d" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"Команда Run запускает данные в Data 1 как если бы они были впечатаны в поле " +"ввода Где нажата последовательность клавиш. Может содержать текст (который " +"можно послать на канал/персоне), команды или команды пользователя. Когда " +"запускает все символы в Data 1 использует для разделения команд, если " +"возможно запустить больше одной команды Если вы хотите использовать \\ iв " +"тексте, вводите\\\\" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"Команда Сменить страницу переключает страницы записной книжки. Установите " +"Data 1 на страницу, куда хотите переключиться. Если Data 2 установлена, то " +"считается относительно текущей позиции." + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"Команда  Вставить в буфер вставит содержимое Данные 1 в текущую позицию " +"курсора" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"Команда  Пролистать страницу пролистывает текст вверх или вниз. Возможные " +"значения Данные 1: Up (вверх), Down (вниз), +1 или -1." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"Команда  Установить буфер содержит последовательность, содержащуюся в Данные " +"1" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"Команда  Последняя команда одержит последнюю введеную команду - такую же, " +"как в оболочке." + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"Команда  Следующая команда содержит следующую введеную команду, - такую же, " +"как и в оболочке." + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Команда заменяет текст, дополняя ники и команды. Если Данные 1 установлены, " +"двойной Tab выбирает последний ник, не следующий." + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Команда прокручивает список ников. Если Данные 1 установлены - прокручивает " +"вверх, иначе - вниз." + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Команда проверяет последнее введенное слово в список замены и заменяет, если " +"находит соответствие." + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Эта команда перемещает текущую закладку влево." + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Эта команда перемещает текущую закладку вправо." + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Эта команда перемещает текущую группу закладок влево" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Эта команда перемещает текущую группу закладок вправо" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "Записать строку в журнал, но не посылать на сервер" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "Ошибка загрузки конфигурации клавиш" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<нет>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Mod" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Клавиша" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Действие" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "X-Chat: Клавиатурные сокращения" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Данные 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Данные 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Ошибка открытия файла настроек клавиш\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Неизвестное имя клавиши %s в конфигурационном файле.\n" +"Загрузка прекращена, поправьте файл %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Неизвестное действие %s в конфигурационном файле.\n" +"Загрузка прекращена, поправьте файл %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Требуется строка с данными (начинается на Dx{:|!}), но вместо нее:\n" +"%s\n" +"\n" +"Загрузка прервана, исправьте %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"Конфигурационный файл настроек клавиш поврежден, загрузка прекращена\n" +"Исправьте файл %s/keybindings.conf\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "Невозможно записать в этот файл." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Невозможно прочитать этот файл." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Такая маска уже существует." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Личный" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Сообщение" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Приглашен" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Не игнорировать" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Введите маску для игнорирования:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "X-Chat: Черный список" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Состояние игнорирования:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Канал:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Приватный:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Сообщение:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Пригласить:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "Добавить..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "Имя канала недостаточно длинное." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: Соединение завершено" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "Соединение с %s завершено." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"В списке серверов для данной сети не были указаны каналы, в которые следует " +"автоматически войти." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "Что вы хотите сделать теперь?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "_Ничего, я войду на канал позднее." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "Зайти на канал:" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Если вы знаете имя канала, на который хотите зайти, укажите его здесь." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "_Открыть список каналов" + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "Получение списка каналов займет минуту-две." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "Пока_зывать этот диалог при соединении." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Диалог с" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Тема для %s : %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Тема не установлена" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "Для этого сервера открыто %d каналов или разговоров. Закрыть их все?" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "Выйти из XChat?" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "Не спрашивать в следующий раз" + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Вы подключены к %i IRC-сетям." + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "Вы действительно хотите выйти?" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "Некоторые передачи файлов еще активны." + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "Свернуть в з_начок" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Вставить аттрибут или код цвета" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Жирный</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Подчеркнутый</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Обычный" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Цвета 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Цвета 8-15" + +#: src/fe-gtk/maingui.c:1612 +msgid "_Settings" +msgstr "_Настройки" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "Запись _журнала" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "За_гружать буфер" + +#: src/fe-gtk/maingui.c:1617 +msgid "_Hide Join/Part Messages" +msgstr "_Скрыть сообщения о приходе/уходе" + +#: src/fe-gtk/maingui.c:1625 +msgid "_Extra Alerts" +msgstr "Опове_щения" + +#: src/fe-gtk/maingui.c:1627 +msgid "Beep on _Message" +msgstr "_Звуковой сигнал при личном сообщении" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "_Мигание значка при личном сообщении" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "Мерцание _окна" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +msgid "_Detach" +msgstr "Отсо_единить" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "Закрыть" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "Лимит пользователей должен содержать номер!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Защитить тему" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Нет последних сообщений" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Секрет" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Только приглашенные" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Модерируемый" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Список банов" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Ключевое слово" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Ограничение пользователей" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Показать/Скрыть список пользователей" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"Невозможно установить прозрачный фон!\n" +"\n" +"Возможно, вы используете несовместимый оконный\n" +"менеджер, который не поддерживает такую возможность.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Введите новый ник:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Хост неизвестен" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Настоящее имя:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Пользователь:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "Страна:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Сервер:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "%u минут назад" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Последнее сообщение:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Сообщение об отсутствии:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "Выделено имен: %d." + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"Строка меню была скрыта. Чтобы увидеть ее снова, нажмите F9 или щелкните " +"правой кнопкой по свободному месту в окне." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Открыть ссылку в браузере" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Копировать выбранную ссылку" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Зайти на канал" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Покинуть канал" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Каналы по кругу" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "_Удалить из Избранного" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "_Добавить в избранное" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "X-Chat: Пользовательское меню" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Редактировать это меню.." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Получение списка каналов..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Команды пользователя - Специальные коды:\n" +"\n" +"%c = текущий канал\n" +"%e = имя текущей сети\n" +"%m = информация о компьютере\n" +"%n = ваш ник\n" +"%t = время и дата\n" +"%v = версия XChat\n" +"%2 = слово 2\n" +"%3 = слово 3\n" +"&2 = слово 2 до конца строки\n" +"&3 = слово 3 до конца строки\n" +"\n" +"например:\n" +"/cmd john hello\n" +"\n" +"%2 должно быть \"john\"\n" +"&2 должно быть \"john hello\"." + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Кнопки списка пользователей - Специальные коды:\n" +"\n" +"%a = все выбранные ники\n" +"%c = текущий канал\n" +"%e = имя текущей сети\n" +"%h = адреса выбранных ников\n" +"%m = информация о компьютере\n" +"%n = ваш ник\n" +"%s = выбранный ник\n" +"%t = время и дата\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Кнопки диалога - Специальные коды:\n" +"\n" +"%a = все выбранные ники\n" +"%c = текущий канал\n" +"%e = имя текущей сети\n" +"%h = имя машин выбранного ника\n" +"%m = информация о компьютере\n" +"%n = ваш ник\n" +"%s = выбранный ник\n" +"%t = время и дата\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"Ответы CTCP - Специальные коды:\n" +"\n" +"%d = данные (целый ctcp)\n" +"%e = имя текущей сети\n" +"%m = инфо о компьютере\n" +"%s = ник пославшего ctcp\n" +"%t = время/дата\n" +"%2 = слово 2\n" +"%3 = слово 3\n" +"&2 = слово 2 до конца строки\n" +"&3 = слово 3 до конца строки\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"Обработчики URL - Специальные коды:\n" +"\n" +"%s = строка URL\n" +"\n" +"Добавление ! перед командой\n" +"показывает, что будет отправлено \n" +"оболочке вместо X-Chat" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "X-Chat: Определенные пользователем команды" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "Всплывающее меню списка пользователей.." + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Заменить на" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "X-Chat: Замена" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: Обработчики URL" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: Кнопки списка пользователей" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: Кнопки диалога" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: Ответы CTCP" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "Список сетей" + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "Новая..." + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Вкладка сервера..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Вкладка канала..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Окно сервера..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Окно канала..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "_Загрузить модуль или сценарий..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "Выход" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "_Вид" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "Панел_ь меню" + +#: src/fe-gtk/menu.c:1592 +msgid "_Topic Bar" +msgstr "Т_ема" + +#: src/fe-gtk/menu.c:1593 +msgid "_User List" +msgstr "Список _пользователей" + +#: src/fe-gtk/menu.c:1594 +msgid "U_serlist Buttons" +msgstr "Кнопки _списка пользователей" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "Кнопки _режима канала" + +#: src/fe-gtk/menu.c:1597 +msgid "_Channel Switcher" +msgstr "Список _каналов" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "Закладки" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "Де_рево" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "_Монитор сети" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Выключено" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "График:" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "Сервер" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "Отключиться" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "Пересоединиться" + +#: src/fe-gtk/menu.c:1613 +msgid "Join a Channel..." +msgstr "Зайти на канал..." + +#: src/fe-gtk/menu.c:1614 +msgid "List of Channels..." +msgstr "Список каналов..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Пометить как \"Отошел\"" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "_Меню пользователя" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "Настройка" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "Установки" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Дополнительно" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Автозамена" + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "Ответы CTCP..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Кнопки диалога.." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Клавиатурные сокращения" + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Тексты событий..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "Обработчики URL..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Команды пользователя..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Кнопки списка пользователей..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Меню списка пользователей.." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "Окно" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Список банов..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Таблица символов..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Список разговоров DCC..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Передачи файлов..." + +#: src/fe-gtk/menu.c:1641 +msgid "Friends List..." +msgstr "Список друзей..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Список игнорирования..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Плагины и скрипты..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Монитор сети..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "Сборщик URL..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Сбросить маркерную линию" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "Очистить" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Найти..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Сохранить текст..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "Помощь" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "Содержание" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "Проверка обновлений" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "О программе" + +#: src/fe-gtk/menu.c:2147 +msgid "_Attach" +msgstr "Присо_единить" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Последний раз" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Отключен" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Никогда" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "%d минут назад" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Подключен" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Введите ник для добавления:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "Уведомлять на данных сетях:" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "Укажите разделенный запятыми список сетей." + +#: src/fe-gtk/notifygui.c:413 +msgid "XChat: Friends List" +msgstr "X-Chat: Список друзей" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "Начать разговор" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" +"Не удалось найти 'notify-send' для всплывающих оповещений.\n" +"Требуется установить libnotify." + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "XChat: Подключен; сети: %u, каналы: %u" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "_Восстановить" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "Скрыть" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "_Мигать при сообщениях" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "Сообщение канала" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "Личное сообщение" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "Выделенные сообщения" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "Состо_яние" + +#: src/fe-gtk/plugin-tray.c:602 +msgid "_Away" +msgstr "Ото_шел" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "_Вернулся" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat: Выделенное сообщение от %s (%s)" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat: %u выделенных сообщения, последнее от %s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat: Новое публичное сообщение от %s (%s)" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat: %u новых публичных сообщений." + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat: Личное сообщение от %s (%s)" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "XChat: %u личных сообщения, последнее от %s (%s)" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat: Предложен файл: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "XChat: %u предложения файлов, последнее от %s (%s)" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Версия" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Описание" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Выберите плагин или скрипт для загрузки" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "X-Chat: Скрипты и плагины" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "Загрузить..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "Вы_грузить" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Сохранить как..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "X-Chat: Журнал передачи (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Очистить окно" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "Открытое вами окно поиска больше не существует." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "Просмотр завершен, текст не найден." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "X-Chat: Поиск" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "С учетом _регистра" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "В о_братном порядке" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "Поиск" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Новая сеть" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Удалить сеть \"%s\" и все ее сервера?" + +#: src/fe-gtk/servlistgui.c:740 +msgid "#channel" +msgstr "#канал" + +#: src/fe-gtk/servlistgui.c:850 +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: Избранные каналы (автоматический вход)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "Вы автоматически зайдете на эти каналы при подключении к %s." + +#: src/fe-gtk/servlistgui.c:906 +msgid "Key (Password)" +msgstr "Ключ (пароль):" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "Редактировать" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "%s был удален." + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "Добавлен %s." + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "Имя пользователя и реальное имя нельзя оставлять пустым." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "X-Chat: Редактирование: %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Серверы для %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Соединиться только с выделенным сервером" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Не перебирать сервера при ошибке соединения." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Ваши детали" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Использовать глобальные установки пользователя:" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "Ник:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Второй выбор:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "Имя пользователя:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "Настоящее имя:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Соединение" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Автоматически соединяться сэтой сетью при запуске программы" + +#: src/fe-gtk/servlistgui.c:1462 +msgid "Bypass proxy server" +msgstr "Обходить прокси-сервер" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "Использовать SSL для всех серверов в этой сети" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Принимать недействительные SSL-сертификаты" + +#: src/fe-gtk/servlistgui.c:1475 +msgid "_Favorite channels:" +msgstr "_Избранные каналы:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "Каналы для подключения, разделенные запятыми, но не пробелами!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Команда для соединения:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Дополнительная команда, выполняемая после соединения. Если вам требуется " +"указать больше, чем одну - пропишите LOAD -e <ИмяФайла>, где <ИмяФайла> - " +"текстовый файл с командами." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Пароль для Nickserv:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Если у вас есть пароль, введите его тут. Не все IRC-сети поддерживают этот " +"метод." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Пароль сервера:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Пароль для сервера, если не требуется -оставьте пустым." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Кодировка:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "X-Chat: Список сетей" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Информация о пользователе" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Третий выбор:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Сети" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "Не показывать список сетей при запуске" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "Править..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "Сортировать" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" +"Сортировка списка сетей по алфавиту. Для перемещения строк используйте SHIFT-" +"стрелка вверх/вниз." + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "Подключить" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Оформление ввода текста" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Шрифт:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Фоновое изображение:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Строк в буфере:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Цветные ники" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Дать каждому участнику канала свой цвет" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Выравнивать ники" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Выравнивает ники по правому краю." + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Прозрачный фон" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Показывать разделительную черту" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Вставить красную линию после последней прочитанной строки." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Настройки прозрачности" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Красный:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Зеленый:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Голубой:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Метки времени" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Включить отметки времени" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Формат отметки времени:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Смотрите руководство по strftime для деталей" + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "По времени" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Поле ввода " + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Использовать цвета и шрифт текстовой надписи" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Проверка орфографии" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Автодополнение ников" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "Автоматическое завершение ников (без клавиши TAB)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Суффикс дополнения ников:" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "Сортировать варианты имен:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Укажите символы рамок" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Рассматривать %nnn как ASCII-код" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Рассматривать %C, %B как Цвет, Жирный и т.д." + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, Op`ы первыми" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, Op`ы последними" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Не сортировать" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "Слева вверху" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "Слева внизу" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "Справа вверху" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "Справа внизу" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Вверху" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Внизу" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Скрыто" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Список Пользователей" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Показывать хост пользователя в списке пользователей" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Сортировать спиоса пользователе пой " + +#: src/fe-gtk/setup.c:205 +msgid "Show user list at:" +msgstr "Список пользователей:" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Проверка присутствия" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "Следить за ушедшими пользователями и выделять их цветом" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "На каналах меньше, чем:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Действие по двойному щелчку" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Окна" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Закладки" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Всегда" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Только запрошенные закладки" + +#: src/fe-gtk/setup.c:242 +msgid "Tree" +msgstr "Дерево" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "Вид списка:" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Открыть вкладку для сообщений сервера" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Открыть дополнительную вкладку уведомлений сервера" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "Открыть новую вкладку при получении частных сообщений" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Сортировать вкладки в алфавитном порядке" + +#: src/fe-gtk/setup.c:254 +msgid "Smaller text" +msgstr "Мелкий шрифт" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Переходить на новые вкладки:" + +#: src/fe-gtk/setup.c:258 +msgid "Show channel switcher at:" +msgstr "Переключатель каналов:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Сократить метки вкладок до:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "букв." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Вкладки или окна" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Открывать каналы как:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Открывать разговоры как:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Открывать утилиты как:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "" +"Открыть как закладки DCC, Игнорирования, Уведомлений и т.д. или в окне?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "Нет" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Да" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "Запрашивать каталог сохранения" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Файлы и каталоги" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Автоматически принимать файлы:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Загрузить файлы в:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Переместить завершенные файлы в:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Записать ники в файл" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Установки сети" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Получить свой IP от IRC сервера" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Запросить у сервера свой реальный адрес. Используйте, если ваш адрес вида " +"192.168.*.*!" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "DCC IP адрес:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Заявить этот адрес для предложения файлов." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Первая DCC передача через порт:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Последня DCC передача через порт:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!Оставьте 0 для всего диапазона портов." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Максимальная скорость передачи файла (байт в секунду)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Одна заливка:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Макс. скорость для одной передачи" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Одна закачка:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Все передачи объединены:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Максимальная скорость для всех файлов" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Все закачки объединены:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Предупреждения" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "Показывать уведомления при:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "Мигание значка при:" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "Мигание окна при:" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "Звуковой сигнал при:" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "Значок в области уведомлений" + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "Выделенные сообщения" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Выделяются сообщения, в которых упомянуто ваше имя, кроме того:" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "Выделять следующие слова:" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "Не выделять имена:" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "Всегда выделять имена:" + +#: src/fe-gtk/setup.c:347 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" +"Разделяйте слова запятыми.\n" +"Можно использовать шаблоны." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Сообщения по умолчанию" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Выход:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Уйти с канала:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Отошел:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Отошел" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Анонсировать сообщение 'Ушёл'" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Объявляет вас как 'Ушёл' на все каналы к которым вы подключены" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Показывать сообщение 'Ушёл' 1 раз" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Показывать одинаковые сообщения об уходе только один раз" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Автоматически снимать статус \"Отошел\"" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Снять статус \"Отошел\" перед посылкой сообщений" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Дополнительные настройки" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Задержка авто восстановления соединения:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Отображать режимы в чистом виде" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Whois при извещении" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" +"Послать /WHOIS когда пользователь в вашем списке извещений приходит в online." + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Скрыть сообщения о приходе/уходе" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Скрывать сообщения о приходе/уходе по умолчанию" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Автоматически открывать окна DCC" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Окно отправления" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Окно приема" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Окно канала..." + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Протоколирование" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "Загрузить буфер прошлого разговора" + +#: src/fe-gtk/setup.c:387 +msgid "Enable logging of conversations to disk" +msgstr "Запись журнала разговора" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Имя файла журнала:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Сервер %c=Канал %n=Сеть." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Добавлять время в протокол" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Формат времени/даты для протокола:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Выключено)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Все соединения" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "Только IRC серверы" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "Только DCC Get" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Ваш адрес" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Назначить:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "Используется только на компьютерах с несколькими адресами." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Прокси сервер" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Имя машины:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Порт:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Тип:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Использовать прокси для:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Авторизация прокси" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Вход на сервер (только для MS Proxy, HTTP или Socks5)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Использовать авторизацию (только HTTP и Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Имя пользователя:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Пароль:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Выберите файл картинки" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "Загрузить файлы в" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Выберите шрифт" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Выбрать..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Пометить идентифицированных пользователей:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Отметить неидентифицированных пользователей:" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "Открыть каталог с данными" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Выбрать цвет" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Цвета текста" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "Цвета mIRC:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Локальные цвета:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Передний план:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Фон:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Отмеченный текст" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Интерфейс" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Новые данные:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Отмеченый передний план:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Новое Сообщение:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Отошедший пользователь:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Выделение:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Событие" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Звуковой файл" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Выберите звуковой файл" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Метод воспроизведения звука:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "Внешний звуковой проигрыватель:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "Внешняя программа" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "Автоматически" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "Каталог з_вуковых файлов:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Звуковой файл:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "Выбрать..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "Воспрои_звести" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Интерфейс" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Текст" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Список пользователей" + +#: src/fe-gtk/setup.c:1703 +msgid "Channel switcher" +msgstr "Список каналов" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Цвета" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Общение" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Главный" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Звук" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Настройки сети" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Передача файла" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Категории" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" +"Дерево нельзя поместить сверху или снизу!\n" +"Сначала замените его на <b>Вкладки</b> в меню <b>Вид</b>." + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" +"Изменение некоторых настроек требует перезапуска программы для их " +"использования." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*ПРЕДУПРЕЖДЕНИЕ*\n" +"Автоматический прием DCC в ваш домашний каталог\n" +"может быть опасным и создавать уязвимости. Например:\n" +"Кто-нибудь пришлет вам .bash_profile" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "X-Chat: Настройки" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Ошибка при разборе строки" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Этот сигнал передал только %d аргумента, $%d отсутствует." + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Печатать текстовый файл" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Редактировать события" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ номер" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Загрузить из..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Проверить все" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "X-Chat: Сборщик URL" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Очистить список" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Копировать выбранный URL" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Копировать" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Записать список в файл" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d оп-ов, %d всего" + +#~ msgid "Direct client-to-client" +#~ msgstr "Прямое соединение" + +#~ msgid "Send File" +#~ msgstr "Послать файл" + +#~ msgid "Offer Chat" +#~ msgstr "Предложить разговор" + +#~ msgid "Abort Chat" +#~ msgstr "Прервать Разговор" + +#~ msgid "Userinfo" +#~ msgstr "Информация о пользователе" + +#~ msgid "Clientinfo" +#~ msgstr "Информация о клиенте" + +#~ msgid "Time" +#~ msgstr "Время" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "Операция" + +#~ msgid "Kill this user" +#~ msgstr "Убить этого пользователя" + +#~ msgid "Mode" +#~ msgstr "Режим" + +#, fuzzy +#~ msgid "Give Half-Ops" +#~ msgstr "Дать оператора" + +#, fuzzy +#~ msgid "Take Half-Ops" +#~ msgstr "Снять оператора" + +#~ msgid "Ignore" +#~ msgstr "Игнорировать" + +#~ msgid "Ignore User" +#~ msgstr "Игнорировать пользователя" + +#~ msgid "UnIgnore User" +#~ msgstr "Снять игнорирование пользователя" + +#~ msgid "Info" +#~ msgstr "Информация" + +#~ msgid "Who" +#~ msgstr "Кто " + +#~ msgid "DNS Lookup" +#~ msgstr "Просмотр DNS:" + +#~ msgid "Trace" +#~ msgstr "Трассировка" + +#~ msgid "UserHost" +#~ msgstr "Компьютер пользователя" + +#~ msgid "External" +#~ msgstr "Внешние" + +#~ msgid "Traceroute" +#~ msgstr "Traceroute" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "About XChat" +#~ msgstr "Об X-Chat" + +#~ msgid "Unban" +#~ msgstr "Снять бан" + +#~ msgid "Show join/part messages" +#~ msgstr "Сообщать о входе/выходе" + +#~ msgid "Color paste" +#~ msgstr "Вставить цвет" + +#, fuzzy +#~ msgid "_Close Tab" +#~ msgstr "Закрыть вкладку" + +#~ msgid "Channel List..." +#~ msgstr "Список каналов..." + +#~ msgid "Notify List..." +#~ msgstr "Список уведомлений..." + +#, fuzzy +#~ msgid "_Attach Window" +#~ msgstr "Окно" + +#~ msgid "_Close Window" +#~ msgstr "Закрыть окно" + +#~ msgid "User" +#~ msgstr "Пользователь" + +#~ msgid "XChat: Notify List" +#~ msgstr "X-Chat: Список уведомлений" + +#~ msgid "C_hannels to join:" +#~ msgstr "Каналы для входа:" + +#, fuzzy +#~ msgid "Channel Switcher" +#~ msgstr "Список каналов..." + +#~ msgid "%C18*$t$1%O $2" +#~ msgstr "%C18*$t$1%O $2" + +#~ msgid "%C21*%O$t%C21%B$1%O%C21 $2" +#~ msgstr "%C21*%O$t%C21%B$1%O%C21 $2" + +#~ msgid "%C18%B%B$4$1%O%C18%O$t$2" +#~ msgstr "%C18%B%B$4$1%O%C18%O$t$2" + +#~ msgid "$4%C21%B$1%O%C21$t$2" +#~ msgstr "$4%C21%B$1%O%C21$t$2" + +#~ msgid "%C28-%C29$1/$2%C28-%O$t$3" +#~ msgstr "%C28-%C29$1/$2%C28-%O$t$3 " + +#~ msgid "$1$t$2" +#~ msgstr "$1$t$2" + +#~ msgid "%C19>%O$1%C19<%O$t$2" +#~ msgstr "%C19>%O$1%C19<%O$t$2 " + +#~ msgid "%C16*%O$t$1%O" +#~ msgstr "%C16*%O$t$1%O " + +#~ msgid "%C28-%C29$1%C28-%O$t$2" +#~ msgstr "%C28-%C29$1%C28-%O$t$2 " + +#~ msgid "%C28*%C29$3$1%C28*$t%O$2" +#~ msgstr "%C28*%C29$3$1%C28*$t%O$2 " + +#~ msgid "%C18%B%B$3$1%O$t$2" +#~ msgstr "%C18%B%B$3$1%O$t$2 " + +#~ msgid "%C22*%O$t$1" +#~ msgstr "%C22*%O$t$1 " + +#, fuzzy +#~ msgid "%C31%B%B$4$1%O%C30$t$2" +#~ msgstr "%C31%B%B$4$1%O$t%C30$2" + +#~ msgid "PID" +#~ msgstr "PID" + +#~ msgid "France, Metropolitan" +#~ msgstr "Франция, Метрополитен" + +#~ msgid "Neutral Zone" +#~ msgstr "Нейтральная зона" + +#~ msgid "US Minor Outlying Islands" +#~ msgstr "US Minor Outlying Islands" + +#~ msgid "I can't save an empty list!" +#~ msgstr "Невозможно сохранить пустой список" + +#~ msgid "List display options:" +#~ msgstr "Список настроек экрана:" + +#~ msgid "Minimum Users:" +#~ msgstr "Минимальное количество пользователей:" + +#~ msgid "Maximum Users:" +#~ msgstr "Максимальное количество пользователей:" + +#~ msgid "Regex Match:" +#~ msgstr "Поиск RegExp " + +#~ msgid "Apply Match to:" +#~ msgstr "Применить к:" + +#~ msgid "Apply" +#~ msgstr "Применить" + +#~ msgid "Refresh the list" +#~ msgstr "Обновить список" + +#~ msgid "Save the list" +#~ msgstr "Записать список" + +#, fuzzy +#~ msgid "From:" +#~ msgstr "От" + +#, fuzzy +#~ msgid "To:" +#~ msgstr "Кому" + +#, fuzzy +#~ msgid "Size:" +#~ msgstr "Размер" + +#, fuzzy +#~ msgid "Started:" +#~ msgstr "Время начала" + +#, fuzzy +#~ msgid "Speed limit:" +#~ msgstr "Ограничение" + +#~ msgid "MIME Type" +#~ msgstr "MIME Type" + +#~ msgid "X-Chat: File Receive List" +#~ msgstr "X-Chat: Список принимаемых файлов" + +#~ msgid "Open" +#~ msgstr "Откр" + +#~ msgid "Ack" +#~ msgstr "Ack" + +#~ msgid "To" +#~ msgstr "Кому" + +#~ msgid "To/From" +#~ msgstr "Кому/Откуда" + +#~ msgid "DIRECTORY" +#~ msgstr "Каталог" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "Нет открытых вкладок. Выйти из XChat?" + +#~ msgid "Go to" +#~ msgstr "Перейти" + +#~ msgid "Close this tab/window" +#~ msgstr "Закрыть вкладку/окно" + +#~ msgid "User List Buttons" +#~ msgstr "Кнопки Cписка Пользователей" + +#~ msgid "Settings saved." +#~ msgstr "Настройки записаны." + +#~ msgid "New Shell Tab..." +#~ msgstr "Новая вкладка оболочки..." + +#~ msgid "_IRC" +#~ msgstr "_IRC" + +#~ msgid "Invisible" +#~ msgstr "Невидимый" + +#~ msgid "Receive Wallops" +#~ msgstr "Принимать Wallops" + +#~ msgid "Receive Server Notices" +#~ msgstr "Принимать уведомления сервера" + +#~ msgid "Auto Rejoin when Kicked" +#~ msgstr "Автоматически подключаться после выброса" + +#~ msgid "Never-give-up ReConnect" +#~ msgstr "Никогда не прекращать попыток соединиться" + +#~ msgid "Auto Open Dialog Windows" +#~ msgstr "Автоматически открывать диалоговые окна" + +#~ msgid "Auto Accept Direct Chat" +#~ msgstr "Автоматически принимать Direct Chat" + +#~ msgid "Reload Settings" +#~ msgstr "Перечитать настройки" + +#~ msgid "Save Settings now" +#~ msgstr "Сохранить настройки сейчас" + +#~ msgid "Save Settings on exit" +#~ msgstr "Сохранить настройки при выходе" + +#~ msgid "File Receive..." +#~ msgstr "Окно приема файлов..." + +#~ msgid "File Send..." +#~ msgstr "Окно передачи файлов..." + +#~ msgid "Server" +#~ msgstr "Сервер" + +#~ msgid "Save rawlog" +#~ msgstr "Записать лог" + +#~ msgid "Save rawlog..." +#~ msgstr "Сохранить протокол сети..." + +#~ msgid "Close" +#~ msgstr "Закрыть" + +#~ msgid "Connect in new tab" +#~ msgstr "Подключиться в новой вкладке" + +#, fuzzy +#~ msgid "Tint (shade) transparency" +#~ msgstr "Светло прозрачный" + +#~ msgid "Strip mIRC colors" +#~ msgstr "Удалять цвета mIRC" + +#~ msgid "Completes nick names without using the TAB key" +#~ msgstr "Завершать ники без использования клавиши TAB" + +#~ msgid "Input Box Appearance" +#~ msgstr "Оформление окна ввода" + +#~ msgid "Info text" +#~ msgstr "Информация" + +#~ msgid "User list buttons enabled" +#~ msgstr "Включить кнопки списка пользователей" + +#, fuzzy +#~ msgid "Resizable user list" +#~ msgstr "Список пользователей изменяемой ширины" + +#~ msgid "Lag meter:" +#~ msgstr "Измеритель " + +#~ msgid "Throttle meter:" +#~ msgstr "Измеритель ширины канала:" + +#~ msgid "Left" +#~ msgstr "Слева" + +#~ msgid "Right" +#~ msgstr "Справа" + +#~ msgid "Tabs Location" +#~ msgstr "Расположение вкладок" + +#~ msgid "Convert spaces to underscore before sending" +#~ msgstr "Конвертировать пробелы в подчеркивание перед отправкой" + +#~ msgid "(Can be a text file relative to ~/.xchat2/)." +#~ msgstr "(Может быть текстовым файлом относительно каталога ~/.xchat2/)" + +#~ msgid "(Can be a text file relative to config dir)." +#~ msgstr "" +#~ "(Может быть текстовым файлом относительно конфигурационного каталога)" + +#~ msgid "Flash taskbar on highlighted messages" +#~ msgstr "Мерцать на панели задач при получении выделеных сообщений" + +#~ msgid "Beep on channel messages" +#~ msgstr "Звуковой сигнал при получении сообщений на канале" + +#~ msgid "(See strftime manpage for details)." +#~ msgstr "(Смотрите руководство по strftime manpage для деталей)." + +#~ msgid "(disabled)" +#~ msgstr "(Выключено)" + +#~ msgid "A star (*)" +#~ msgstr "Звездочка (*)" + +#~ msgid "A red star (*)" +#~ msgstr "Красная звездочка (*)" + +#~ msgid "%C19>%O$1%C19<%O$t$2%O" +#~ msgstr "%C19>%O$1%C19<%O$t$2%O" + +#~ msgid "Servername" +#~ msgstr "Имя сервера" + +#~ msgid "" +#~ " File: %s\n" +#~ " To/From: %s\n" +#~ " Size: %u\n" +#~ " Port: %d\n" +#~ " IP Number: %s\n" +#~ "Start Time: %s Max CPS: %d\n" +#~ msgstr "" +#~ " Файл: %s\n" +#~ " Кому/От: %s\n" +#~ " Размер: %u\n" +#~ " Порт: %d\n" +#~ " IP адрес: %s\n" +#~ "Время начала: %s Max CPS: %d\n" + +#~ msgid "Add new" +#~ msgstr "Добавить новый" + +#~ msgid "User: %s" +#~ msgstr "Пользователь: %s" + +#~ msgid "Realname: %s" +#~ msgstr "Реальное имя: %s" + +#~ msgid "Server: %s" +#~ msgstr "Сервер: %s" + +#, fuzzy +#~ msgid "Real na_me:" +#~ msgstr "Настоящее имя:" + +#~ msgid "Select a file to save to" +#~ msgstr "Выберите файл для сохранения" + +#, fuzzy +#~ msgid "%C22*%O$t%C28[%O$1%C28] %O$2" +#~ msgstr "-%C10-%C11-%O$t%C12[%O$1%C12] %O$2" + +#~ msgid "Former Czechoslovakia" +#~ msgstr "Чехословакия" + +#~ msgid "Zaire" +#~ msgstr "Заир" diff --git a/etc/wyatt8740/po/sq.po b/etc/wyatt8740/po/sq.po new file mode 100644 index 0000000..fa10e60 --- /dev/null +++ b/etc/wyatt8740/po/sq.po @@ -0,0 +1,5943 @@ +# Translation of `xchat' messages to Albanian +# Përkthimi në Shqip i mesazheve të `xchat-it' +# Besnik Bleta <besnik@spymac.com>, 2004. +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.6.0\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2005-11-07 21:49+0200\n" +"Last-Translator: Besnik Bleta <besnik@spymac.com>\n" +"Language-Team: Albanian <translation-team-sq@lists.sourceforge.net>\n" +"Language: sq\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "S'mund të krijoj ~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Jam i zënë" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Po iki" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* Xhirimi i IRC-së si rrënjë është budallallëk! Duhet\n" +" të krijoni një Llogari Përdoruesi dhe të përdorni atë për t'u " +"futur.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Po pres" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Veprues" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Dështova" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Përmbushur" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Lidhu" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Ndërprerë" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "S'mund të futem në %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Gabim" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "S'ka DCC-ra vepruese\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "PO " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "JO " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Po CTCP përmbyteni prej %s, po shpërfill %s\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "Po MSG përmbyteni prej %s, po vendos gui_auto_open_dialog OFF.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s të lidhur\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s të palidhur\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Pa u bashkuar me ndonjë kanal. Provoni /join #<kanal>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "I palidhur. Provoni /server <strehë> [<portë>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "Më duhet /bin/sh për të xhiruar!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Urdhra të Mundshëm:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Urdhra të përkufizuar nga përdoruesi:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Urdhra të përkufizuar nga shtojca:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Shtypni /HELP <urdhër> për më tepër të dhëna, ose /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Është shpërfillur arg i panjohur '%s'." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "S'gjendet shtojcë e tillë.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Ajo shtojcë nuk pranon të çngarkohet.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "" +"ADDBUTON <emër> <veprim>, shton një buton nën një listë përdoruesi" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <urd>, u dërgon një urdhër tërë kanaleve ku keni hyrë" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <urd>, u dërgon një urdhër tërë kanaleve ku keni hyrë" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <urd>, u dërgon një urdhër tërë shërbyesve ku keni hyrë" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<arsye>], ju tregon të larguar" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <maskë> [<tipndalimi>], i ndalon kanalin e çastit kujtdo që " +"përputhet me maskën. Nëse tashmë janë në kanal kjo nuk i përzë (lyp " +"kanop)" + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "SET [-quiet] <ndryshore> [<vlerë>]" + +#: src/common/outbound.c:3508 +#, fuzzy +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "CLEAR, Pastron tekst në dritaren e çastit" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, Mbyll dritaren/skedën e çastit" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" +"COUNTRY [-s] <code|wildcard>, gjen një kod vendi, p.sh.: sq = Shqipëri" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <nofkë> <mesazh>, i dërgon nofkës një mesazh CTCP, mesazhe të " +"rëndomtë janë VERSION dhe USERINFO" + +#: src/common/outbound.c:3516 +#, fuzzy +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "CYCLE, del dhe menjëherë ribashkohet me kanalin e çastit" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <nofkë> - prano një kartelë të ofruar\n" +"DCC SEND [-maxcps=#] <nofkë> [kartelë] - dërgo një kartelë te dikush\n" +"DCC PSEND [-maxcps=#] <nick> [file] - dërgo një kartelë duke përdorur " +"mënyrën pasive\n" +"DCC LIST - shfaq listë DCC\n" +"DCC CHAT <nofkë> - ofro FJALOSJE DCC për dikë\n" +"DCC PCHAT <nick> - ofro FJALOSJE DCC duke përdorur " +"mënyrën pasive\n" +"DCC CLOSE <tip> <nofkë> <kartelë> shembull:\n" +" /dcc close send hasanqerja kartelë.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEOP <nofkë>, i heq nofkës gjendjen gjysëm-kanop për kanalin e çastit " +"(lyp kanop)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "" +"DELBUTON <emër>, fshin një buton prej që poshtë liste përdoruesish" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <nofkë>, i heq nofkës gjendjen kanop në kanalin e çastit (lyp kanop)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <nofkë>, i heq nofkës gjendjen i zëshëm në kanalin e çasti " +"(lyp kanop)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, Shkëputet prej shërbyesit" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <nofkë|strehë|ip>, Gjen numër IP të një përdoruesi" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <text>, Shfaq tekst lokalisht" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <urdhër>, përmbush urdhrin. Nëse përdoret flamurka -o " +"atëherë përfundimi dërgohet në kanalin e çastit, në të kundërt " +"jepet te kuti tekstesh të çastit" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, dërgon procesin SIGCONT" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], asgjëson një përmbushje që po kryhet në kanalin e " +"çastit. Nëse jepet -9 procesi është \"SIGKILL'ed\"" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, i dërgon procesit SIGSTOP" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, i dërgon të dhënat te proceset \"stdin\"" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, asgjëson mesazhe të çastit që prisnin të dërgoheshin" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" +"GATE <strehë> [<portë>], ndërmjetëson te një strehë përmes një " +"porte, me portë parazgjedhje 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <nofkë> <fjalëkalim>, Asgjëson një emër nofke fantazmë" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <nofkë>, i jep nofkës gjendjen kangjys-op (lyp kanop)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <password>, ju identifikon karshi nickserv" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <maskë> <tipe..> <mundësi..>\n" +" maskë - maskë strehe për t'u shpërfillur, p.sh.: *!*@*.aol.com\n" +" tipe - tipe të dhënash për t'u shpërfillur, një ose tërë prej:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" mundësi - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <nofkë> [<kanal>], fton dikë në një kanal, si parazgjedhje tek " +"kanali i çastit (lyp chanop)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <kanal>, bashkohesh me kanalin" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "KICK <nofkë>, përzë nofkën prej kanalit të çastit (ly chanop)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <nofkë>, i ndalon hyrjen e mandej përzë nofkën prej kanalit të " +"çastit (lyp chanop)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, detyron një kontroll të ri vonese" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <varg>, kërkon në shtytëz për një varg " + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [e] <kartelë>, ngarkon një shtojcë ose një programth" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, Heq gjendje operatori për tërë gjysmëoperatorët e kanalit në " +"kanalin e çastit (lyp kanop)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, Heq gjendje operatori për tërë kanop-ët në kanalin e çastit " +"(lyp kanop)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <veprim>, dërgon veprimin te kanali i çastit (veprimet shprehen në " +"vetën e tretë, si /unë hidhet)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, Përzë në masë cilindon veç jush nga kanali i çastit (lyp chanop)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, Op-on në masë tërë përdoruesit në kanalin e çastit (lyp kanop)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <nofkë> <mesazh>, dërgon një mesazh vetiak" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, Liston nofkat në kanalin e çastit" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <nofkë> <mesazh>, Dërgon një njoftim CTCP" + +#: src/common/outbound.c:3608 +#, fuzzy +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER <strehëemër> [<portë>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <nofkë>, cakton nofkën tuaj" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <nofkë/kanal> <mesazh>, dërgon një njoftim. Njoftimet janë një " +"tip mesazhi ndaj të cilëve vetëreagohet" + +#: src/common/outbound.c:3614 +#, fuzzy +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [<nofkë>], shfaq listën tuaj njofto ose shton dikë në të" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <nofkë>, ijep nofkës gjendje kanop (lyp kanop)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" +"PART [<kanal>] [<arsye>], lë kanalin, si parazgjedhje atë të çastit" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <nofkë | kanal>, CTCP ping për nofkë ose kanal" + +#: src/common/outbound.c:3622 +#, fuzzy +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "QUERY <nofkë>, i hap dikujt një dritare të re mszvet" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<arsye>], shkëputet prej shërbyesit të çastit" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <tekst>, dërgon te shërbyesi tekstin e patrajtuar" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<strehë>] [<portë>] [<fjalëkalim>], Mund të jepet " +"thjesht si /RECONNECT për t'u rilidhur me shërbyesin e çastit ose si /" +"RECONNECT ALL për t'u rilidhur me tërë shërbyesat e hapur" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<strehë>] [<portë>] [<fjalëkalim>], Mund të jepet thjesht si /" +"RECONNECT për t'u rilidhur me shërbyesin e çastit ose si /RECONNECT ALL " +"për t'u rilidhur me tërë shërbyesat e hapur" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <tekst>, i dërgon xchat-it të dhëna bruto, si të merreshin prej " +"shërbyesit irc" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <tekst>, dërgon tekstin te objekti në dritaren e çastit" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <nofkë [<kartelë>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <strehë> <portë> <kanal>, lidhet te dhe bashkohet me një " +"kanal" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN <strehë> <portë> <kanal>, lidhet te dhe bashkohet me një kanal" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <strehë> [<portë>] [<fjalëkalim>], lidhet me një " +"shërbyes, porta parazgjedhje është 6667 për lidhje normale, dhe 9999 " +"për lidhje ssl" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <strehë> [<portë>] [<fjalëkalim>], lidhet me një shërbyes, porta " +"parazgjedhje është 6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-quiet] <ndryshore> [<vlerë>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<pozicion>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<temë>], e cakton si temë nëse jepet një, përndryshe shfaq " +"temën e çastit" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <maskë> [<maskë>...], heq ndalimin për maskat e treguara." + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <maskë> [URTË]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <emër>, çngarkon një shtojcë ose një programth" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, hap një URL në shfletuesin tuaj" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <nofka1> <nofka2> etj, thekson nofkën(at) në listën e " +"përdoruesve të kanalit" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <nofkë>, jep gjendje i zëshëm për dikë (lyp kanop)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <mesazh>, shkruan mesazhin te tërë kanalet" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <mesazh>, dërgon mesazhin te tërë kanopët në kanalin e çastit" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Përdorim: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"S'ka ndihmë rreth këtij urdhri.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "S'ka të tillë urdhër.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Argumente të gabuar për urdhër përdoruesi.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Shumë urdhra përdoruesi ripërsëritës, po ndërpres." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Urdhër i Panjohur. Provoni /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "" +"S'ka shenjë xchat_plugin_init; është kjo vërtet një shtojcë xchat-i?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "" +"Jeni të sigurtë se ky është një shërbyes dhe portë me mundësi SSL?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Nuk ftilloj dot emërstrehën %s\n" +"Kontrolloni Rregullimet tuaj IP!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "\"Proxy traversal\" dështoi.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Po cikloj te shërbyesi pasues në %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Kujdes: Gërmat \"%s\" janë të panjohura. Nuk do të zbatohet ndonjë " +"shndërrim për rrjetin %s." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 u shtua te lista njofto." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Listë ndalimesh:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tNuk bashkohet dot me%C26 %B$1 %O(Ju është ndaluar)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 njihet si $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 vendos ndalim mbi $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tKanal $1 krijuar në $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O i heq%C26 $2 gjendjen gjysmë-operator kanali" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O i heq%C26 $2 gjendjen operator kanali" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O i heq%C26 $2 zërin" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 vendos përjashtim ndaj $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O i jep%C26 $2 gjendjen gjysmë-operator kanali" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 cakton ftesë në $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UKanal Përdoruesa Temë" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 cakton mënyrë $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Kanal $1 mënyra: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O i jep%C26 $2 gjendjen operator kanali" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 heq përjashtim ndaj $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 heq ftesë nga $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 heq fjalëkyça kanali" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 heq kufi përdoruesi" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 cakton si fjalëkyç kanali $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 vendos kufi kanali në $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 heq ndalim për $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O i jep zë%C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22I lidhur. Tani po futem.." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22Po lidhem me $1 ($2) porta $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21Lidhja dështoi. Gabim: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tErdhi një CTCP $1 prej $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tErdhi një CTCP $1 prej $2 (te $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tErdhi një Tingull CTCP $1 prej $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tErdhi një Tingull CTCP $1 prej $2 (te $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tFJALOSJA DCC te %C26$1%O dështoi." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$tLidhje FJALOSJEJE DCC me %C26$1 %C30[%O$2%C30] e vendosur" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tFjalosje DCC me %C26$1%O e humbur ($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tErdhi një ofertë FJALOSJEJE DCC prej $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tPo ofroj FJALOSJE DCC për $1" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tKeni ofruar një herë FJALOSJE për $1" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$tDCC $1 dështoi përpjekja për lidhje me%C26 $2%O (err=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tMora '$1%O' prej $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "" +"%C24,18 Tip Prej/Për Gjendje Madhësi Pos Kartelë " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O." +"%010%C22*%O$tContents of packet: $2" +msgstr "" +"%C22*%O$tErdhi prej %C26$1%O një kërkesë DCC e keqformuar." +"%010%C22*%O$tPërmbajtje pakete: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tPo ofroj%C26 $1%O te%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tNuk ka një ofertë DCC të tillë." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV%C26 $2%O për%C26 $1%O dështoi." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC RECV%C26 $1%O prej%C26 $3%O e plotësuar %C30[%C26$4%O " +"cps%C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tLidhje DCC RECV me%C26 $1 %C30[%O$2%C30] e vendosur" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV%C26 $1%O prej%C26 $3%O dështoi ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV: Nuk hap dot $1 për shkrim ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "" +"%C22*%O$tKa tashmë një kartelë%C26 $1%C, ndaj po e ruaj te%C26 $2%O " +"ndryshe." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Oka kërkuar të rimarrë%C26 $2 %Cprej%C26 $3%C." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC SEND%C26 $2%O te%C26 $1%O u ndërpre." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC SEND%C26 $1%O te%C26 $2%O i plotësuar %C30[%C26$3%O cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tLidhje DCC SEND me%C26 $1 %C30[%O$2%C30]e vendosur" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND%C26 $1%O te%C26 $2%O dështoi. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Oka ofruar%C26 $2 %O(%C26$3 %Obytes)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Ote%C26 $3 %Cu bajatos - po e ndërpres." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC-s $1%C26 $2 %Ote%C26 $3 %Oi mbaroi koha - po e ndërpres." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 u hoq prej liste njoftimesh." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tI shkëputur ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tU gjet IP-ja juaj: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O ju shtua listës së shpërfilljeve." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "U ndryshua shpërfill mbi %C26$1%O." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "" +"%C24,18 Strehëmaskë PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O hequr prej liste shpërfill." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr "Lista shpërfill është e zbrazët." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "" +"%C22*%O$tnuk mund t'i bashkangjitet%C26 %B$1 %O(Kanali është vetëm me " +"ftesa)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tJeni ftuar te%C26 $1%O prej%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) i është bashkuar $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$tNuk mund të bashkohet me%C26 %B$1 %O(Lipset fjalëkyç)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 ka përzënë $2 prej $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$tJeni asgjësuar prej $1 ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD Anashkaluar." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 tashmë i përdorur. Po provoj me $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$tNofkë tashmë në përdorim. Përdorni /NICK për të provuar një " +"tjetër." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tNuk ka DCC të tillë." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tPër çastin nuk ka proces në xhirim" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tLista njofto është e zbrazët." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Listë Njoftimesh " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 përdoruesë në listë njoftimesh." + +#: src/common/textevents.h:282 +#, fuzzy +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tNjofto: $1 është i palidhur ($2)." + +#: src/common/textevents.h:285 +#, fuzzy +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tNjofto: $1 është i lidhur ($2)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) ka ikur $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) ka ikur $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tPërgjigje ping prej $1 : $2 sekonda" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tPa përgjigje ping për $1 sekonda, po shkëputem." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tKa një proces në xhirim e sipër" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 ka lënë (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 cakton mënyra%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tPo kërkoj numra IP për%C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22I lidhur." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22Po kërkoj $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tU ndalua përpjekja e mëparshme për lidhje (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29Temë për $1%C %C29is: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 ka ndryshuar temën në: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29Temë për $1%C %C29e caktuar prej $2%C %C29më $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tStrehë e panjohur. Mundet e shkruajtët keq?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "" +"%C22*%O$tNuk mund të bashkoheni me%C26 %B$1 %O(Është arritur kufi " +"përdoruesish)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Përdoruesa në $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cka dalë %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OFund i listës WHOIS." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O pa ngarkesë%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O p ngarkesë%C26 $2%O, signon:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" +"%C22*%O$t%C28[%O$1%C28] %Opërdorues real@host%C27 $2%O, IP reale%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Tani po flisni tek $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tJeni përzënë prej $2 nga $3 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tKeni lënë kanalin $3" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tKeni lënë kanalin $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tKeni ftuar%C26 $1%O te%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tTani njiheni si $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** PO PËRFUNDOJ REGJISTRIM NË %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** PO FILLOJ REGJISTRIM NË %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* S'hap dot kartelë(a) për të shkruajtur. Kontrolloni\n" +" lejet tek %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Mesazh majtas" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Mesazh djathtas" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "Nofka e personit që po hyn" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "Kanali ku po hyhet" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "Streha e personit" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Nofkë" + +#: src/common/text.c:973 +msgid "The action" +msgstr "Veprimi" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Gërma mënyre" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Tekst i identifikuar" + +#: src/common/text.c:980 +msgid "The text" +msgstr "Teksti" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Mesazhi" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Nofkë e vjetër" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Nofkë e re" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Nofkë e personit që ndryshoi temë" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Temë" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Kanal" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "Nofka e përzënësit" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "Personi që po përzihet" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "Kanali" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "Arsyeja" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "Nofka e personit që po ikën" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "Koha" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "Krijuesi" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Nofkë" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Arsye" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Strehë" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "Kush është prej" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "Koha në format x.x (shih më poshtë)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "Kanali ku po shkohet" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "Tingulli" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "Nofka e personit" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "Ngjarja CTCP" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "Nofka e personit që caktoi kyçin" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "Kyçi" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "Nofka e personit që caktoi kufirin" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "Kufiri" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "Nofka e personit që bëri op-im" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "Nofka e personit që u op-ua" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "Nofka e personit që është gjysmëop-uar" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "Nofka e personit që bëri gjysmëop-im" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "Nofka e personit që dha zë" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "Nofka e personit që u bë i zëshëm" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "Nofka e personit që bëri ndalimin" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "Maska e ndalimit" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "Nofka që hoqi kyçin" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "Nofka që hoqi kufirin" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "Nofka e personit që bëri deopimin" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "Nofka e personit që u deopua" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "Nofka e personit që bëri gjysmëdeopimin" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Nofka e personit që u gjysmëdeopua" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "Nofka e personit që bëri çzanimin" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "Nofka e personit që u çzanua" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "Nofka e personit që hoqi ndalimin" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "Nofka e personit që bëri përjashtimin" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "Maska e përjashtimit" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "Nofka e personit që hoqi përjashtimin" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "Nofka e personit që bëri ftesën" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "Maska e ftesës" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "Nofka e personit që hoqi ftesën" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "Nofka e personit që po cakton mënyrën" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "Shenja mënyre (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "Gërma e mënyrës" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "Kanali është duke u bërë gati" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Emër përdoruesi" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Emër i plotë" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Anëtarësi Kanali/\"është një operator IRC\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Të dhëna Shërbyesi" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Kohë bosh" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Kohë nënshkrimi" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Arsye largimi" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Mesazh" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Llogari" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "përdorues@strehë e vërtetë" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "IP reale" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Emër Kanali" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Tekst" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Emër Shërbyesi" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Nofkë e personit që ju ftoi" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Përdoruesa" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Nofkë në përdorim" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Nofkë që po provohet" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Portë" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Rrjet" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Varg mënyrash" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "Vendndodhje IP" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "Tip DCC-je" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Emër kartele" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Emër kartele vendmbrritjeje" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Emër shtegu" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Vendndodhje" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Madhësi" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "Varg DCC" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Numër objektesh njofto" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Emër i Vjetër kartele" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Emër i Ri kartele" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Marrës" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Strehëmaskë" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Emërstrehë" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "Paketa" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Sekonda" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Nofkë e personit që është ftuar" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Maskë ndalimesh" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Kush vendosi ndalimin" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Kohë ndalimi" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Gabim në trajtimin e ngjarjes %s.\n" +"Po ngarkoj parazgjedhje." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"S'lexoj dot kartelë tingulli:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "Streha e largët mbylli \"socket\"-in" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Ndërlidhje e papranuar" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "S'ka udhë për te strehë" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Mbaroi koha e ndërlidhjes" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Nuk mund të caktoj atë vendndodhje" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Lidhje e rivendosur nga tjetri" + +#: src/common/util.c:848 +#, fuzzy +msgid "Ascension Island" +msgstr "Ishujt Kokos" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Emiratet e Bashkuar Arabë" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Afganistan" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Antigua dhe Barbuda" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Anguila" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Shqipëri" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Armeni" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Antilet Holandeze" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Angolë" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Antarktidë" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Argjentinë" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "Përmbys DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Samoa Amerikane" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Austri" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Australi" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:866 +#, fuzzy +msgid "Aland Islands" +msgstr "Ishujt Falkland" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Azerbaixhan" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Bosnjë-Hercegovinë" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Bangladesh" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Belgjikë" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Bullgari" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Bahrain" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Biznese" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Brunei Darussalam" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Bolivi" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Brazil" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Bahamas" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Butan" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Ishulli Bouvet " + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Botsvana" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Bjelorusi" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Kanada" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Ishujt Kokos" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "Republika Demokratike e Kongos" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "Republika e Afrikës Qendrore" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Kongo" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Zvicër" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Bregu i Fildishtë" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Ishujt Kuk" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Kili" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Kamerun" + +#: src/common/util.c:898 +msgid "China" +msgstr "Kinë" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Kolumbi" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Tregtar Internic" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Kosta Rika" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Serbi dhe Mal i Zi" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Kubë" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Kepi i Gjelbër" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Ishulli i Krishtlindjeve" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Qipro" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "Republika Çeke" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Gjermani" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Xhibut" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Danimarkë" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Dominika" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "Republika Dominikane" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Algjeri" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Ekuador" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Institucione Edukimi" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Estoni" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Egjypt" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Sahara Perëndimore" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Eritre" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Spanjë" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Etiopi" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Finlandë" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Fixhi" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Ishujt Falkland" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Mikronezi" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Ishujt Faroe" + +#: src/common/util.c:928 +msgid "France" +msgstr "Francë" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Britani e Madhe" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Georgji" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Guajana Franceze" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Ishujt e Kanalit Britanik" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Gana" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Gjibraltar" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Groenlandë" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Qeveri" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Guadalup" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Guinea Ekuatoriale" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Greqi" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Georgji" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Guinea-Bissau" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Guajana" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Ishujt Heard dhe McDonald" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Kroaci" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Hungari" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Indonezi" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Irlandë" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Izrael" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "" + +#: src/common/util.c:959 +msgid "India" +msgstr "Indi" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Informativ" + +#: src/common/util.c:961 +msgid "International" +msgstr "Ndërkombëtar" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Territoret Britanike të Oqeanit Indian" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Irak" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Iran" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Islandë" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Itali" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Xhamaika" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Jordani" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Japoni" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Kenia" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Kirgizstan" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Kamboxhia" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Komore" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "Shën Kits dhe Nevis" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Kore e Veriut" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Kore e Jugut" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Kuvait" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Ishujt Kajman" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Kazakistan" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Liban" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Santa Luçia" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Lihtenshtein" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Liberi" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Lesoto" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Lituani" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Luksemburg" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Latvi" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Libi" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Marok" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Monako" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Moldavi" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "Mjeksor i Shteteve të Bashkuara" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Madagaskar" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Ishujt Marshall" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Ushtarake" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Maqedonia" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Mianmar" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Mongoli" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Makau" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Ishujt Veriorë Mariana" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Martinikë" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Mauritani" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Maltë" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Mauricius" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Maldive" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Malaui" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Meksikë" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Malajzi" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Mozambik" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Namibi" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Kaledonia e Re" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Rrjet Internic" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Ishujt Norfolk" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Nigeri" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Nikaragua" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Holandë" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Norvegji" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Zelandë e Re" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Organizëm Jofitimprurës Internic" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Polinezia Franceze" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Papua Guinea e Re" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Filipine" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Poloni" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "Shën. Pier dhe Mikëlon" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Pitkern" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Porto Riko" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Territor Palestinez" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Portugali" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Paraguaj" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Katar" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Ribashkim" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Rumani" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "Old School ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Federata Ruse" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Ruandë" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Arabi Saudite" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Ishujt Solomon" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Sejshelle" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Sudan" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Suedi" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Singapor" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "Shën Helena" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Slloveni" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Ishujt Svalbard dhe Jan Mayen" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Republika Slovake" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Somali" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Surinam" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "Sao Tome dhe Principe" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Ish USSR" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Siri" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Svaziland" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Ishujt Turks dhe Caicos" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Çad" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Territoret Franceze Jugore" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Tailandë" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Taxhikistan" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Timori Lindor" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Tunizi" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Turqi" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Trinidad dhe Tobago" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Taivan" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Tanzani" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Ukrainë" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Mbretëri e Bashkuar" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "Shtetet e Bashkuar të Amerikës" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Uruguaj" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Uzbekistan" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Qytetshteti i Vatikanit" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "Shën. Vincent dhe Grenadinet" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Venezuelë" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Ishujt British Virgin" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "Ishujt US Virgin" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Ishujt Wallis dhe Futuna" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Jemen" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Majot" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Serbi dhe Mali i Zi" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Afrikë e Jugut" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Zambia" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Zimbabve" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "I panjohur" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "Hap Dritare Dialogu" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "Dërgo Kartelë" + +#: src/common/xchat.c:728 +#, fuzzy +msgid "_User Info (WhoIs)" +msgstr "Të dhëna Përdoruesi (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +#, fuzzy +msgid "O_perator Actions" +msgstr "Veprime Operatori" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Jepi Op" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Hiqi Op" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Jepi Zë" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Hiqi Zë" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Përzër/Ndalo" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Përzër" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Ndalo" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "Përzënie" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Lër Kanal" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Hyni në Kanal..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Jepni Kanal ku të Hyhet:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Lidhje Shërbyesish" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Ping Shërbyes" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Fshih Version" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Op" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "Çop" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "bye" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Jepni arsye për të përzënë %s:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Dërgokartelë" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Dialog" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "KushËshtë" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Dërgo" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Fjalosje" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Pastro" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "S'u lidha dot me busin e sesionit" + +#: src/common/dbus/dbus-client.c:86 +#, fuzzy +msgid "Failed to complete NameHasOwner" +msgstr "Dështova në përmbushjen e urdhrit" + +#: src/common/dbus/dbus-client.c:112 +#, fuzzy +msgid "Failed to complete Command" +msgstr "Dështova në përmbushjen e urdhrit" + +#: src/common/dbus/dbus-plugin.c:30 +#, fuzzy +msgid "remote access" +msgstr "S'mund të futem në %s\n" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:897 +#, fuzzy, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Nuk u lidha dot me busin e sesionit : %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, fuzzy, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Dështova në pasjen" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "_Rreth" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Një Klient IRC shumëplatformësh" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Tabelë Gërmash" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "I palidhur" + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Duhet të përzgjidhni disa ndalime." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Maskë" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "Prej" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Datë" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" +"Mundeni të hapni dritaren e Listës së Ndalimeve vetëm kur jeni në një " +"skedë kanali" + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: Listë Ndalimesh (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Hiq" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Rifresko" + +#: src/fe-gtk/chanlist.c:111 +#, fuzzy, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Statistika Përdoruesish dhe Kanali: %d/%d Përdorues në %d/%d Kanale" + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Zgjidhni një emër kartele përfundim" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +#, fuzzy +msgid "_Join Channel" +msgstr "Hyni në Kanal" + +#: src/fe-gtk/chanlist.c:633 +#, fuzzy +msgid "_Copy Channel Name" +msgstr "Emër Kanali" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: Listë Kanalesh (%s)" + +#: src/fe-gtk/chanlist.c:781 +#, fuzzy +msgid "_Search" +msgstr "XChat: Kërko" + +#: src/fe-gtk/chanlist.c:787 +#, fuzzy +msgid "_Download List" +msgstr "Shkarko kartela te:" + +#: src/fe-gtk/chanlist.c:793 +#, fuzzy +msgid "Save _List..." +msgstr "Listë _Shërbyesish..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "" + +#: src/fe-gtk/chanlist.c:818 +#, fuzzy +msgid "channels with" +msgstr "kanal" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:843 +#, fuzzy +msgid "users." +msgstr "Përdoruesa" + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:861 +#, fuzzy +msgid "Channel name" +msgstr "Emër Kanali" + +#: src/fe-gtk/chanlist.c:882 +#, fuzzy +msgid "Search type:" +msgstr "Kërko Tekst..." + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:890 +#, fuzzy +msgid "Pattern Match (Wildcards)" +msgstr "Përputhje \"Regex\":" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Gjej:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Dërgo kartelë te %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Kjo kartelë nuk është e përmbledhshme." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"S'hyj dot në kartelën: %s\n" +"%s.\n" +"Rimarrje jo e mundur." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"Kartela në drejtorinë e shkarkimit është më e madhe se kartela e " +"ofruar. Rimarrje jo e mundur." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "Nuk mund të rimarr të njëjtën kartelë prej dy personash" + +#: src/fe-gtk/dccgui.c:745 +#, fuzzy +msgid "XChat: Uploads and Downloads" +msgstr "XChat: Urdhra të Përcaktuar nga Përdoruesi" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Gjendje" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Kartelë" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Të dyja" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "" + +#: src/fe-gtk/dccgui.c:804 +#, fuzzy +msgid "Downloads" +msgstr "Shkarko kartela te:" + +#: src/fe-gtk/dccgui.c:809 +#, fuzzy +msgid "Details" +msgstr "Hollësi Tuajat" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Kartelë:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "Vendndodhje:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Ndërprit" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Prano" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Rimerr" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "" + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: Listë Fjalosjeje DCC" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Marr" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Dërguar" + +#: src/fe-gtk/dccgui.c:1004 +#, fuzzy +msgid "Start Time" +msgstr "KohëFillim" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*I RI*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "PËRPUNOMË" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Emër" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Urdhër" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Ngjitu" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Zbrit" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Anulo" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Ruaj" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Shto të Ri" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Fshij" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Rendit" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Ndihmë" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "Mos u vetërilidhu me shërbyesa" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "Përdor një tjetër drejtori config" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "Mos vetëngarko ndonjë shtojcë" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "Shfaq drejtori shtojcash vetëngarkuese" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "Përdor drejtori config të përdoruesit" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Hap një URL irc://shërbyes:portë/kanal" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Përmbush urdhër:" + +#: src/fe-gtk/fe-gtk.c:132 +msgid "Open URL or execute command in an existing XChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +#, fuzzy +msgid "level" +msgstr "Kurrë" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Shfaq të dhëna versioni" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"Dështova në hapje gërmash:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "Shtytëza e kërkimeve është e zbrazët.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d bytes" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Radhë dërgimi rrjeti: %d bajte" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"Veprimi Run Command lëshon të dhënat në Të Dhëna 1 si të ishin " +"shkruajtur në kuti dhënieje kur shtypët varg tastesh. Kështu që mund " +"të përmbajë tekst (i cili do t'i dërgohet kanalit/personit), urdhra ose " +"urdhra përdoruesi. Kur jepet tërë, shenjat \\ në Të Dhëna 1 përdoren " +"për të ndarë urdhra të veçantë që kështu të mundet të jepen më " +"shumë se një urdhër. Nëse doni një \\ në tekstin në fjalë jepni \\\\" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"Urdhri Change Page bën kalimin midis faqesh në bllok shënimesh. Cakton si " +"Data 1 faqen ku doni të kalohet. Nëse si Data 2 është caktuar dicka " +"tjetër atëherë kalimi do të bëhet duke ju referuar pozicionit të " +"çastit" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"Urdhri Fut në Shtytëz do të fusë përmbajtjen e Data 1 te pjesa ku u " +"shtyp vargu i tasteve te vendndodhje çasti e kursorit" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"Urdhri Zhvendos Faqe rrëshqet pjesën e tekstit lart ose poshtë me një " +"faqe ose një rresht. Caktojeni Data 1 si Up, Down, +1 ose -1." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"Urdhri Vendos Shtytëz vendos futjen atje ku u shtyp varg tastesh te " +"përmbajtja e Data 1" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"Urdhri Urdhri i Fundit bën që si hyrje të jetë urdhri i fundit i dhënë " +"- njësoj si shtypja e shigjetës sipër brenda një shelli" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"Urdhri Next Command e bën zërin në fjalë të përmbajë urdhrin pasues " +"që jepet - njësoj si shtypja e shigjetës poshtë brenda një shelli" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Ky urdhër ndryshon tekstin që jepet për të përfunduar një urdhër apo " +"një nofkë ende jo të plotësuar. Nëse është rregulluar Të dhëna 1 " +"atëherë shtypja dyshe e tastit tab në një varg do të zgjedhë nofkën e " +"fundit, jo pasuesen" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Ky urdhër kryen lëvizjen lart e poshtë nëpër listë nofkash. Nëse " +"është dhënë diçka si Data 1shkohet sipër, ndryshe zbritet poshtë" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Ky urdhër kontrollon fjalën e fundit të dhënë përkundër listës " +"zëvendëso dhe bën zëvendësim nëse gjendet përputhje" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Ky urdhër zhvendos skedën ballore majtas me një " + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Ky urdhër zhvendos skedën ballore djathtas me një" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Ky urdhër zhvendos grupin e skedave të çastit majtas" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Ky urdhër zhvendos grupin e skedave të çastit djathtas" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "I kalon historikut rresht dhënieje por nuk ja dërgon shërbyesit" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "" +"Pati një gabimi gjatë ngarkimit të formësimit për funksione tastesh" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<asnjë>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Ndry" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Kyç" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Veprim" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: Shkurtprerje Tastiere" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Të dhëna 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Të dhëna 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Gabim në hapje kartele formësimi tastesh\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Emër i panjohur kyçi %s në kartelë formësimi funksionesh kyçash\n" +"Ngarkimi u ndërpre, ju lutem ndreqni %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Veprim i panjohur %s në kartelë formësimi funksionesh kyçash\n" +"Ngarkimi u ndërpre, ju lutem ndreqni %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Pritej rresht Të Dhënash (që fillon me Dx{:|!}) por u mor:\n" +"%s\n" +"\n" +"Ngarkimi u ndërpre, ju lutem ndreqni %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"Kartela e formësimit të funksioneve të kyçeve është e dëmtuar, " +"ngarkim i ndërprerë\n" +"Ju lutem ndreqni %s/keybindings.conf\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "S'mund të shkruaj tek kjo kartelë." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "S'mund të lexoj këtë kartelë." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Ka tashmë një maskë si kjo." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Vetiake" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Njofto" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Fto" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Çshpërfill" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Jepni maskë që do të shpërfillet:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: Listë shpërfilljesh" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Statistika Shpërfilljesh:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Kanal:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Vetiake:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Njofto:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Fto:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +#, fuzzy +msgid "Add..." +msgstr "Shto" + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "" + +#: src/fe-gtk/joind.c:125 +#, fuzzy +msgid "XChat: Connection Complete" +msgstr "Mbaroi koha e ndërlidhjes" + +#: src/fe-gtk/joind.c:150 +#, fuzzy, c-format +msgid "Connection to %s complete." +msgstr "Lidhje e rivendosur nga tjetri" + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "" + +#: src/fe-gtk/joind.c:179 +#, fuzzy +msgid "_Join this channel:" +msgstr "Hyni në Kanal" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" + +#: src/fe-gtk/joind.c:198 +#, fuzzy +msgid "O_pen the Channel-List window." +msgstr "Hap kanale në:" + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "" + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Dialog me" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Tema për %s është: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Nuk është caktuar temë" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"Ky shërbyes ka ende %d kanale apo dialogje të lidhur me të. Ti mbyll të " +"tërë?" + +#: src/fe-gtk/maingui.c:1283 +#, fuzzy +msgid "Quit XChat?" +msgstr "Rreth X-Chat-it" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1310 +#, fuzzy, c-format +msgid "You are connected to %i IRC networks." +msgstr "Vetëlidhu me këtë rrjet gjatë nisjes" + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "" + +#: src/fe-gtk/maingui.c:1314 +#, fuzzy +msgid "Some file transfers are still active." +msgstr "Shpërngulje kartelash në përmbushje e sipër, ta lë xchat-in?" + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Fut Kod Ngjyre ose Atributi" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Të trasha</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Nënvizuar</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Normal" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Ngjyra 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Ngjyra 8-15" + +#: src/fe-gtk/maingui.c:1612 +#, fuzzy +msgid "_Settings" +msgstr "Rr_egullime" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "Fshih mesazhe ardhjesh dhe ikjesh" + +#: src/fe-gtk/maingui.c:1625 +#, fuzzy +msgid "_Extra Alerts" +msgstr "Ngjyra ekstra:" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "Bip në mesazhe" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +#, fuzzy +msgid "_Detach" +msgstr "_Shqit Skedë" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "-Mbyll" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "Kufi përdoruesish duhet të jetë një numër!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Mbrojtje Teme" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Jo mesazhe nga jashtë" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Sekret" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Vetëm me Ftesa" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Ndryshuar" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Listë Ndalimesh" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Fjalëkyç" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Kufi Përdoruesi" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Shfaq/Fshih listë përdoruesish" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"I pazoti të vendos ngjyrë të tejdukshme!\n" +"\n" +"Mund të jeni duke përdorur përgjegjës\n" +"dritaresh të papërputhshëm që nuk mbulohet ende.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Jepni nofkën e re:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Strehë e panjohur" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Emër i Vërtetë:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Përdorues:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "Vend:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Shërbyes:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "%u minuta më parë" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Msz i Fundit:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Mesazh Largimi:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"Paneli i menuve tashti është i fshehur. Mund ta shfaqni sërish duke " +"shtypur F9 ose duke djathtasklikuar në një pjesë bosh të zonës kryesore " +"për tekste" + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Hap Lidhje në Shfletues" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Kopjo Lidhjen e Përzgjedhur" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Hyni në Kanal" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Dil prej Kanali" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Ciklo Kanal" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: Menu përdoruesi" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Përpuno Këtë Menu..." + +#: src/fe-gtk/menu.c:1280 +#, fuzzy +msgid "Retrieve channel list..." +msgstr "Listë Kanalesh..." + +#: src/fe-gtk/menu.c:1348 +#, fuzzy +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Urdhra Përdoruesi - Kode specialë:\n" +"\n" +"%c = kanal i çastit\n" +"%m = të dhëna makine\n" +"%n = nofka juaj\n" +"%t = kohë/datë\n" +"%v = version i xchat-it\n" +"%2 = fjala 2\n" +"%3 = fjala 3\n" +"&2 = fjala 2 në fundin e një rreshti\n" +"&3 = fjala 3 në fundin e një rreshti\n" +"\n" +"p.sh.:\n" +"/cmd gjon tungjatjeta\n" +"\n" +"%2 mund të ishte \"gjon\"\n" +"&2 mund të ishte \"gjon tungjatjeta\"." + +#: src/fe-gtk/menu.c:1364 +#, fuzzy +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Butona Liste Përdoruesish - Kode specialë:\n" +"\n" +"%a = tërë nofkat e përzgjedhura\n" +"%c = kanali i çastit\n" +"%h = strehëemri për nofkën e përzgjedhur\n" +"%m = të dhëna makine\n" +"%n = nofka juaj\n" +"%s = nofka e përzgjedhur\n" +"%t = kohë/datë\n" + +#: src/fe-gtk/menu.c:1374 +#, fuzzy +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Butona Dialogjesh - Kode specialë:\n" +"\n" +"%a = tërë nofkat e përzgjedhura\n" +"%c = kanali i çastit\n" +"%h = strehëemri për nofkën e përzgjedhur\n" +"%m = të dhëna makine\n" +"%n = nofka juaj\n" +"%s = nofka e përzgjedhur\n" +"%t = kohë/datë\n" + +#: src/fe-gtk/menu.c:1384 +#, fuzzy +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"Përgjigje CTCP - Kode specialë:\n" +"\n" +"%d = të dhëna (ctcp i plotë)\n" +"%m = të dhëna makine\n" +"%s = nofka që dërgoi ctcp\n" +"%t = kohë/datë\n" +"%2 = fjala 2\n" +"%3 = fjala 3\n" +"&2 = fjala 2 në fundin e një rrjeshti\n" +"&3 = fjala 3 në fundin e një rrjeshti\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"Trajtuesa URL - Kode specialë:\n" +"\n" +"%s = vargu URL\n" +"\n" +"Vendosja e një ! para një urdhri\n" +"tregon që ky do të duhej dërguar te një\n" +"shell dhe jo te X-Chat-i" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: Urdhra të Përcaktuar nga Përdoruesi" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: Menu flluckë Liste Përdoruesish" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Zëvendësoje me" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: Zëvendëso" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: Trajtuesa URL" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: Butona liste përdoruesish" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: Butona dialogu" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: Përgjigjje CTCP" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +#, fuzzy +msgid "Network Li_st..." +msgstr "Rregullim rrjeti" + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "_E re" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Skedë Shërbyesi..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Skedë Kanali..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Dritare Shërbyesi..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Dritare Kanali..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "_Ngarko Shtojcë ose Programth..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "_Lër" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "_Parje" + +#: src/fe-gtk/menu.c:1591 +#, fuzzy +msgid "_Menu Bar" +msgstr "_Shtyllë Menush" + +#: src/fe-gtk/menu.c:1592 +#, fuzzy +msgid "_Topic Bar" +msgstr "_Shtyllë Temash" + +#: src/fe-gtk/menu.c:1593 +#, fuzzy +msgid "_User List" +msgstr "Listë Përdoruesish" + +#: src/fe-gtk/menu.c:1594 +#, fuzzy +msgid "U_serlist Buttons" +msgstr "Butona _Liste përdoruesish" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "Butona Mën_yre" + +#: src/fe-gtk/menu.c:1597 +#, fuzzy +msgid "_Channel Switcher" +msgstr "Listë Kanalesh..." + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "_Skeda" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "_Pemë" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "Matësa _Rrjeti" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Asnjë" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Grafik" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "_Shërbyes" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "_Shkëputu" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "_Rilidhu" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "Hyni në Kanal..." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "Hyni në Kanal..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Shenjuar si i Larguar" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "_Menu përdoruesi" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "Rr_egullime" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "Parapëlqime" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Të mëtejshme" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Vetëzëvendëso..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "Përgjigje CTCP..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Butona Dialogu..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Shkurtprerje Tastiere..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Ngjarje Tekst..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "Trajtuesa URL..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Urdhra Përdoruesi..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Butona Liste përdoruesish..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Flluckë Liste përdoruesish..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_Dritare" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Listë Ndalimesh..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Tabelë Gërmash..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Fjalosje e Drejtpërdrejtë..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Shpërngulje Kartelash" + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "Listë Ndalimesh..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Listë Shpërfilljesh..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Shtojca dhe Programthe..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Regjistrim Bruto..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "Kopjues URL-sh..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Ricakto Vijë Shënimi" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "P_astro Tekst" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Kërko Tekst..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Ruaj Tekst..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_Ndihmë" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "_Përmbajtje" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "_Rreth" + +#: src/fe-gtk/menu.c:2147 +#, fuzzy +msgid "_Attach" +msgstr "_Dritare Bashkangjitjesh" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Parë së Fundmi" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Jo i lidhur" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Kurrë" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, fuzzy, c-format +msgid "%d minutes ago" +msgstr "%u minuta më parë" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "I lidhur" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Jepni nofkë për ta shtuar:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "XChat: Listë Dërgimesh Kartelash" + +#: src/fe-gtk/notifygui.c:434 +#, fuzzy +msgid "Open Dialog" +msgstr "Hap Dritare Dialogu" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:591 +#, fuzzy +msgid "_Hide" +msgstr "Fshehur" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +#, fuzzy +msgid "Channel Message" +msgstr "Emër Kanali" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +#, fuzzy +msgid "Private Message" +msgstr "Bip në mesazhe vetiakë" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +#, fuzzy +msgid "Highlighted Message" +msgstr "Bip në mesazhe të theksuar" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "Larguar" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Version" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Përshkrim" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Zgjidhni një Shtojcë ose një Programth për t'u ngarkuar" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: Shtojca dhe Programthe" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "_Ngarko..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "_Çngarko" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Ruaj Si..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: Regjistrim bruto (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Pastro regjistrim bruto" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "Dritarja prej ku hapët këtë Kërkim nuk ekziston më." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "" + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: Kërko" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "" + +#: src/fe-gtk/search.c:153 +#, fuzzy +msgid "_Find" +msgstr "Gjej" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Rrjet i Ri" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Të heq vërtet rrjetin \"%s\" dhe tërë shërbyesit e tij?" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "kanal" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: Listë Kanalesh (%s)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "Fjalëkalim:" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "_Përpuno" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "Emri i përdoruesit dhe emri i vërtetë nuk mund të lihen bosh." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: Përpuno %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Shërbyesa për %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Lidhu vetëm me shërbyesin e përzgjedhur" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Mos ciklo nëpër tërë shërbyesit kur dështon lidhja." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Hollësi Tuajat" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Përdor të dhëna të përgjithshme përdoruesi" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "Nofkë:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Zgjedhje e dytë:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "_Emër përdorues:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "Emër i _vërtetë:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Lidhje" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Vetëlidhu me këtë rrjet gjatë nisjes" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "Shërbyes \"Proxy\"" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "Përdor SSL për tërë shërbyesit në këtë rrjet" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Prano dëshmi SSL të mangëta" + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "Lër kanal:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "Kanale ku të hyhet, ndarë me presje, por pa hapësira!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Urdhër lidhjeje:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Urdhër ekstra për t'u përmbushur pas lidhjes. Nëse ju duhet më tepër " +"se një, vëreni këtë si LOAD -e <emër kartele>, ku <emër kartele> " +"është një kartelë tekst mbushur plot me urdhrapër t'u përmbushur." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Fjalëkalim nofke shërbyesi:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Nëse nofka juaj lyp fjalëkalim, jepeni atë këtu. Jo tërë rrjetet IRC e " +"mbulojnë këtë." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Fjalëkalim shërbyesi:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Fjalëkalim për shërbyesin, po qetë në mëdyshje, lëreni bosh." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Gërma:" + +#: src/fe-gtk/servlistgui.c:1649 +#, fuzzy +msgid "XChat: Network List" +msgstr "XChat: Listë Njoftimesh" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Të dhëna Shërbyesi" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Zgjedhje e tretë:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Rrjete" + +#: src/fe-gtk/servlistgui.c:1786 +#, fuzzy +msgid "Skip network list on startup" +msgstr "Anashkalo listë shërbyesish gjatë nisjes" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "_Përpuno..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "_Rendit" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "_Lidhu" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Dukje Kutie Tekstesh" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Gërma:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Pamje sfond:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Rreshta rrëshqitjeje:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Nofka të ngjyrosura" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Jepi çdo personi në IRC një ngjyrë të ndryshme" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Sposto nofka djathtas" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Përligj nofkat djathtas " + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Sfond i tejdukshëm" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Shfaq vijë shënimi" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Fut një vijë të kuqe pas tekstit të lexuar së fundmi." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Rregullime Tejdukshmërie" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "E kuqe:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "E gjelbër:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Blu:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Vula Kohore" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Aktivizo vula kohore" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Format vule kohore:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Për hollësira shihni faqe manuali (manpage) për strftime." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Kuti futjeje" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Përdor gërma dhe ngjyra të kutisë së Teksteve" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Plotësim Nofkash" + +#: src/fe-gtk/setup.c:144 +#, fuzzy +msgid "Automatic nick completion (without TAB key)" +msgstr "Plotësim nofkash vetvetiu" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Prapashtesë plotësimi nofkash:" + +#: src/fe-gtk/setup.c:147 +#, fuzzy +msgid "Nick completion sorted:" +msgstr "Prapashtesë plotësimi nofkash:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Kode Kutije Futjesh" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Interpreto %nnn si një vlerë ASCII" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Interpreto %C, %B si Ngjyrë, të Trasha etj" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, Op të parët" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, Op të fundit" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "E parenditur" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Sipër" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Poshtë" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Fshehur" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Listë Përdoruesish" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Shfaqi strehëemrat në listë përdoruesish " + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Listë përdoruesish renditur sipas:" + +#: src/fe-gtk/setup.c:205 +#, fuzzy +msgid "Show user list at:" +msgstr "Shfaq/Fshih listë përdoruesish" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Gjurmim të larguarish" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "" +"Ndjek gjendjen i Larguar të përdoruesve dhe i shenjon ata me një ngjyrë " +"tjetër" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "Në kanale më të vegjël se:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Veprim Kur Dyklikohet" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Dritare" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Skeda" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Përherë" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Vetëm skedat e nevojshme" + +#: src/fe-gtk/setup.c:242 +#, fuzzy +msgid "Tree" +msgstr "_Pemë" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Hap një skedë ekstra për mesazhe shërbyesi" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Hap një skedë ekstra për njoftime shërbyesi" + +#: src/fe-gtk/setup.c:252 +#, fuzzy +msgid "Open a new tab when you receive a private message" +msgstr "Hap një skedë ekstra për mesazhe shërbyesi" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Rendit skeda sipas abc-së" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "Skeda të vogla" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Fokuso skeda të reja:" + +#: src/fe-gtk/setup.c:258 +#, fuzzy +msgid "Show channel switcher at:" +msgstr "Në kanale më të vegjël se:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Shkurto etiketë skedash në:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "gërma." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Skeda ose Dritare" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Hap kanale në:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Hap dialogje në:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Hap \"utilities\" në:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "DCC, Shpërfill, Njofto etj, t'i hap si skeda apo si dritare?" + +#: src/fe-gtk/setup.c:271 +#, fuzzy +msgid "No" +msgstr "Asnjë" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Kartela dhe Drejtori" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Shkarko kartela te:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Zhvendos kartela të plotësuara te:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Ruaj nofka në emra kartelash" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Rregullime Rrjeti" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Kije vendndodhjen time prej serverit IRC" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Pyet shërbyesin IRC për vendndodhjen tuaj të vërtetë. Përdoreni nëse " +"keni një vendndodhje 192.168.*.* !" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "Vendndodhje DCC IP:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Pretendoni se jeni në këtë vendndodhje kur ofroni kartela." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Porta e parë DCC dërg:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Porta e fundit DCC dërg:" + +#: src/fe-gtk/setup.c:292 +#, fuzzy +msgid "!Leave ports at zero for full range." +msgstr "(Lini portat në zero për interval të plotë)." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Shpejtësi më e Madhe Shpërnguljesh Kartelash (bajt për sekondë)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Një ngarkim:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Shpejtësi më e madhe pë një shpërngulje" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Një shkarkim:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Tërë shkarkimet të ndërthurur:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Shpejtësi më e madhe për tërë kartelat" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Tërë shkarkimet të ndërthurur:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Sinjalizime" + +#: src/fe-gtk/setup.c:333 +#, fuzzy +msgid "Show tray balloons on:" +msgstr "Shfaq skeda:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "" + +#: src/fe-gtk/setup.c:341 +#, fuzzy +msgid "Highlighted Messages" +msgstr "Bip në mesazhe të theksuar" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:344 +#, fuzzy +msgid "Extra words to highlight:" +msgstr "Fjalë ekstra për t'u theksuar:" + +#: src/fe-gtk/setup.c:345 +#, fuzzy +msgid "Nick names not to highlight:" +msgstr "Nofka për t'u mos theksuar:" + +#: src/fe-gtk/setup.c:346 +#, fuzzy +msgid "Nick names to always highlight:" +msgstr "Nofka për t'u mos theksuar:" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "(Ndaj fjalë të shumëfishta me presje]." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Mesazhe Parazgjedhje" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Lër:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Lër kanal:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Largime:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Larguar" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Lajmëro mesazhe largimi" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Lajmëroni te tërë kanalet mesazhe largimi tuajt" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Shfaq i larguar vetëm një herë" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Shfaq mesazhe largimi identikë vetëm një herë" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Çshenjo automatikisht si të larguar" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Çshenjoni vetveten si të larguar para dërgimit të mesazheve" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Rregullime të Mëtejshëm" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Vonesë vetërilidhjeje:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Shfaq MËNYRA në formë bruto" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Whois në njoftime" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" +"Dërgon një /WHOIS kur një përdorues vjen \"online\" në listën tuaj të " +"njoftimeve" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Fshih mesazhe ardhjesh dhe ikjesh" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Fshih, si parazgjedhje, mesazhe ardhjeje/daljeje prej kanalit" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Vetëhap Dritare DCC" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Dritare dërgimesh" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Dritare marrjesh" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Dritare fjalosjeje" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Hyrje" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "Aktivizo regjistrim bashkëbisedimesh" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Emër kartele regjistrimesh" + +#: src/fe-gtk/setup.c:389 +#, fuzzy, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "(%s=Server %c=Kanal %n=Rrjet)." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Fut vulë kohore në regjistra" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Format vule kohore regjistri" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Çaktivizuar)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "" + +#: src/fe-gtk/setup.c:414 +#, fuzzy +msgid "All Connections" +msgstr "Lidhje" + +#: src/fe-gtk/setup.c:415 +#, fuzzy +msgid "IRC Server Only" +msgstr "Vetëm me Ftesa" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Vendndodhja Juaj" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Lidhe te" + +#: src/fe-gtk/setup.c:424 +#, fuzzy +msgid "Only useful for computers with multiple addresses." +msgstr "(I dobishëm vetëm për kompjutera me vendndodhje të shumëfishta)." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Shërbyes \"Proxy\"" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Emërstrehë:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Portë:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Tip:" + +#: src/fe-gtk/setup.c:430 +#, fuzzy +msgid "Use proxy for:" +msgstr "Shërbyes \"Proxy\"" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "" + +#: src/fe-gtk/setup.c:434 +#, fuzzy +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Mirëfilltëso te shërbyes \"proxy\" (HTTP dhe Socks5)" + +#: src/fe-gtk/setup.c:436 +#, fuzzy +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Mirëfilltëso te shërbyes \"proxy\" (HTTP dhe Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Em. përdoruesi:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Fjalëkalim:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Zgjidh një Kartelë Pamjeje" + +#: src/fe-gtk/setup.c:905 +#, fuzzy +msgid "Select Download Folder" +msgstr "Përzgjidhni ngjyrë" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Përzgjidhni gërma" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Shfleto..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Shenjo përdorues të identifikuar me:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Shenjo përdorues të paidentifikuar me:" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Përzgjidhni ngjyrë" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Ngjyra Teksti" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "Ngjyra mIRC:" + +#: src/fe-gtk/setup.c:1305 +#, fuzzy +msgid "Local colors:" +msgstr "Ngjyra ekstra:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Përpara:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Sfond:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Shenjim Tekstesh" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Ngjyra Ndërfaqeje" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Të dhëna të reja:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Vijë shënimi" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Mesazh i ri:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Përdorues i larguar:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Theksim:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Ngjarje" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Kartelë tingull" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Përzgjidhni një kartelë tingull" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Metodë luajtjeje tingulli:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "Program i jashtëm luajtjeje tingujsh:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "Program i _jashtëm" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_Automatike" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "_Drejtori kartelash tingulli:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Kartelë tingulli:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "_Shfleto..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "_Luaj" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Ndërfaqe" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Kuti tekstesh" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Listë përdoruesi" + +#: src/fe-gtk/setup.c:1703 +#, fuzzy +msgid "Channel switcher" +msgstr "Listë Kanalesh..." + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Ngjyra" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Fjalosje" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Të përgjithshme" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Tingull" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Rregullim rrjeti" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Shpërngulje kartelash" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Kategori" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" +"Për disa nga ndryshimet lipset të rinisni programin pa të jenë vepruese." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*KUJDES*\n" +"Vetëpranimi i DCC-së në drejtorinë tuaj shtëpi\n" +"mund të jetë i rrezikshëm dhe është i shfrytëzueshëm. P.sh:\n" +"Dikush mund t'ju dërgojë një .bash_profile" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: Parapëlqime" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Pati një gabim në përtypjen e vargut" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "This signal is only passed %d args, $%d is invalid" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Shtyp Kartelë Tekstesh" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Përpuno Ç'ndodh" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ Numër" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Ngarko Prej..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Testo Tërë" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: Kopjues URL-sh" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Fshij listë" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Kopjo URL-në e përzgjedhur" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Kopjo" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Ruaj listë si një kartelë" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d op, gjithsej %d" + +#~ msgid "%C18*$t$1%O $2" +#~ msgstr "%C18*$t$1%O $2" + +#~ msgid "%C21*%O$t%C21%B$1%O%C21 $2" +#~ msgstr "%C21*%O$t%C21%B$1%O%C21 $2" + +#, fuzzy +#~ msgid "%C18%H<%H$4$1%H>%H%O$t$2" +#~ msgstr "%C18%B%B$4$1%O%C18%O$t$2" + +#, fuzzy +#~ msgid "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" +#~ msgstr "$4%C21%B$1%O%C21$t$2" + +#~ msgid "%C28-%C29$1/$2%C28-%O$t$3" +#~ msgstr "%C28-%C29$1/$2%C28-%O$t$3" + +#~ msgid "$1$t$2" +#~ msgstr "$1$t$2" + +#~ msgid "%C19>%O$1%C19<%O$t$2" +#~ msgstr "%C19>%O$1%C19<%O$t$2" + +#~ msgid "%C16*%O$t$1%O" +#~ msgstr "%C16*%O$t$1%O" + +#~ msgid "%C28-%C29$1%C28-%O$t$2" +#~ msgstr "%C28-%C29$1%C28-%O$t$2" + +#~ msgid "%C28*%C29$3$1%C28*$t%O$2" +#~ msgstr "%C28*%C29$3$1%C28*$t%O$2" + +#, fuzzy +#~ msgid "%C18%H<%H$3$1%H>%H%O$t$2" +#~ msgstr "%C18%B%B$3$1%O$t$2" + +#~ msgid "%C22*%O$t$1" +#~ msgstr "%C22*%O$t$1" + +#, fuzzy +#~ msgid "%C31%H<%H$4$1%H>%H%O%C30$t$2" +#~ msgstr "%C31%B%B$4$1%O%C30$t$2" + +#~ msgid "PID" +#~ msgstr "PID" + +#~ msgid "France, Metropolitan" +#~ msgstr "Francë, Metropolitan" + +#~ msgid "Neutral Zone" +#~ msgstr "Zonë Neutrale" + +#~ msgid "US Minor Outlying Islands" +#~ msgstr "Ishujt e Vegjël të Përtejmë të US-it" + +#~ msgid "Direct client-to-client" +#~ msgstr "Drejtpërdrejt klient-me-klient" + +#~ msgid "Send File" +#~ msgstr "Dërgo Kartelë" + +#~ msgid "Offer Chat" +#~ msgstr "Ofro Fjalosje" + +#~ msgid "Abort Chat" +#~ msgstr "Ndërprit Fjalosje" + +#~ msgid "Userinfo" +#~ msgstr "Të dhëna përdoruesi" + +#~ msgid "Clientinfo" +#~ msgstr "Të dhëna klienti" + +#~ msgid "Time" +#~ msgstr "Kohë" + +#~ msgid "Finger" +#~ msgstr "Gisht" + +#~ msgid "Oper" +#~ msgstr "Oper" + +#~ msgid "Kill this user" +#~ msgstr "Asgjëso këtë përdorues" + +#~ msgid "Mode" +#~ msgstr "Mënyrë" + +#~ msgid "Give Half-Ops" +#~ msgstr "Jepi Gjysmë-Op" + +#~ msgid "Take Half-Ops" +#~ msgstr "Hiqi Gjysmë-Op" + +#~ msgid "Ignore" +#~ msgstr "Shpërfill" + +#~ msgid "Ignore User" +#~ msgstr "Shpërfill Përdorues" + +#~ msgid "UnIgnore User" +#~ msgstr "Çshpërfill Përdorues" + +#~ msgid "Info" +#~ msgstr "Të dhëna" + +#~ msgid "Who" +#~ msgstr "Kush" + +#~ msgid "DNS Lookup" +#~ msgstr "Kërkim DNS-je" + +#~ msgid "Trace" +#~ msgstr "Gjurmo" + +#~ msgid "UserHost" +#~ msgstr "StrehëPërdoruesi" + +#~ msgid "External" +#~ msgstr "I jashtëm" + +#~ msgid "Traceroute" +#~ msgstr "Traceroute" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "Unban" +#~ msgstr "Çndalo" + +#~ msgid "I can't save an empty list!" +#~ msgstr "S'ruaj dot një listë të zbrazët!" + +#~ msgid "List display options:" +#~ msgstr "Listo mundësi shfaqjeje:" + +#~ msgid "Minimum Users:" +#~ msgstr "Përdoruesa Minimum:" + +#~ msgid "Maximum Users:" +#~ msgstr "Përdoruesa Maksimum:" + +#~ msgid "Regex Match:" +#~ msgstr "Përputhje \"Regex\":" + +#~ msgid "Apply Match to:" +#~ msgstr "Zbato Përputh te:" + +#~ msgid "Apply" +#~ msgstr "Zbato" + +#~ msgid "Refresh the list" +#~ msgstr "Rifresko listën" + +#~ msgid "Save the list" +#~ msgstr "Ruaj listën" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "S'ka skedë tjetër të hapur, ta lë xchat-it?" + +#~ msgid "Show join/part messages" +#~ msgstr "Shfaq mesazhe hyr/dil " + +#~ msgid "Color paste" +#~ msgstr "Ngjit ngjyrë" + +#~ msgid "Go to" +#~ msgstr "Shko te" + +#~ msgid "_Close Tab" +#~ msgstr "_Mbyll Skedë" + +#~ msgid "Settings saved." +#~ msgstr "Rregullime të ruajtur." + +#~ msgid "_Layout" +#~ msgstr "_Skemë" + +#~ msgid "Notify List..." +#~ msgstr "Listë Njoftimesh..." + +#~ msgid "_Close Window" +#~ msgstr "_Mbyll Dritare" + +#~ msgid "User" +#~ msgstr "Përdorues" + +#~ msgid "Server" +#~ msgstr "Shërbyes" + +#~ msgid "Save rawlog" +#~ msgstr "Ruaj regjistrim bruto" + +#~ msgid "Save rawlog..." +#~ msgstr "Ruaj regjistrim bruto..." + +#~ msgid "C_hannels to join:" +#~ msgstr "_Kanale ku të hyhet:" + +#~ msgid "XChat: Server List" +#~ msgstr "XChat: Listë Shërbyesish" + +#~ msgid "Completes nick names without using the TAB key" +#~ msgstr "Plotëson nofka pa përdorur tastin TAB" + +#~ msgid "Input Box Appearance" +#~ msgstr "Dukje Kutije Futjesh" + +#~ msgid "Resizable user list" +#~ msgstr "Listë përdoruesish e ripërmasueshme" + +#~ msgid "Left" +#~ msgstr "Majtas" + +#~ msgid "Right" +#~ msgstr "Djathtas" + +#~ msgid "Tabs Location" +#~ msgstr "Vendndodhje Skedash" + +#~ msgid "Convert spaces to underscore before sending" +#~ msgstr "Shndërro hapësirat në nënvija para dërgimit" + +#~ msgid "(Can be a text file relative to ~/.xchat2/)." +#~ msgstr "(Mund të jetë një kartelë tekst e lidhur me ~/.xchat2/)." + +#~ msgid "(Can be a text file relative to config dir)." +#~ msgstr "(Mund të jetë një kartelë tekst e lidhur me config dir)." + +#~ msgid "Flash taskbar on highlighted messages" +#~ msgstr "Xixëllo shtyllë veprimesh në mesazhe të theksuar" + +#~ msgid "Beep on channel messages" +#~ msgstr "Bip në mesazhe kanali" + +#~ msgid "(See strftime manpage for details)." +#~ msgstr "(Shih \"strftime manpage\" për hollësi)." + +#~ msgid "Open an irc:// url" +#~ msgstr "Hap një url irc://" + +#~ msgid "irc://server:port/channel" +#~ msgstr "irc://shërbyes:port/kanal" + +#~ msgid "Execute a xchat command" +#~ msgstr "Përmbush një urdhër xchat" + +#~ msgid "\"Command to execute\"" +#~ msgstr "\"Urdhër për t'u përmbushur\"" + +#~ msgid "Prints some text to the current tab/window" +#~ msgstr "Shtyp ca tekst në skedën/dritaren e çastit" + +#~ msgid "\"Text to print\"" +#~ msgstr "\"Tekst për t'u shtypur" + +#~ msgid "Change the context to the channel" +#~ msgstr "Ja kalon kontekstin kanalit" + +#~ msgid "Change the context to the server" +#~ msgstr "Ja kalon kontekstin shërbyesit" + +#~ msgid "server" +#~ msgstr "shërbyes" + +#~ msgid "Get some informations from xchat" +#~ msgstr "Merr ca të dhëna prej xchat-it" + +#~ msgid "id" +#~ msgstr "id" + +#~ msgid "Get settings from xchat" +#~ msgstr "Ki rregullime prej xchat-it" + +#~ msgid "name" +#~ msgstr "emër" + +#~ msgid "" +#~ "xchat-remote: %s\n" +#~ "Try `xchat-remote --help' for more information\n" +#~ msgstr "" +#~ "xchat-remote: %s\n" +#~ "Për më tepër të dhëna provoni `xchat-remote --help'\n" + +#~ msgid "Failed to complete SetContext" +#~ msgstr "Dështova në përmbushjen e SetContext-it" + +#~ msgid "Failed to complete print" +#~ msgstr "Dështova në kryerjen e shtypjes" + +#~ msgid "Failed to complete GetInfo" +#~ msgstr "Dështova në përmbushjen e GetInfo-s" + +#~ msgid "Failed to complete GetPrefs" +#~ msgstr "Dështova në përmbushjen e GetPrefs" + +#~ msgid "%s doesn't exist\n" +#~ msgstr "%s nuk ekziston\n" + +#, fuzzy +#~ msgid "%s loaded successfully!\n" +#~ msgstr "ngarkuar me sukses!\n" + +#, fuzzy +#~ msgid "%s unloaded successfully!\n" +#~ msgstr "ngarkuar me sukses!\n" + +#~ msgid "To/From" +#~ msgstr "Te/Për" + +#~ msgid "From:" +#~ msgstr "Prej:" + +#~ msgid "To:" +#~ msgstr "Për:" + +#~ msgid "Size:" +#~ msgstr "Madhësi:" + +#~ msgid "Started:" +#~ msgstr "Filluar:" + +#~ msgid "Speed limit:" +#~ msgstr "Kufi shpejtësie:" + +#~ msgid "MIME Type" +#~ msgstr "Tip MIME" + +#~ msgid "XChat: File Receive List" +#~ msgstr "XChat: Listë Marrjesh Kartelash" + +#~ msgid "Open" +#~ msgstr "Hap" + +#~ msgid "Ack" +#~ msgstr "Pranuar" + +#~ msgid "To" +#~ msgstr "Për" + +#~ msgid "Close" +#~ msgstr "Mbyll" + +#~ msgid " : %s\n" +#~ msgstr " : %s\n" diff --git a/etc/wyatt8740/po/sr.po b/etc/wyatt8740/po/sr.po new file mode 100644 index 0000000..c899a9a --- /dev/null +++ b/etc/wyatt8740/po/sr.po @@ -0,0 +1,6024 @@ +# XChat translation file: Serbian language +# Copyright (C) 2004,2005,2006 Free Software Foundation, Inc. +# +# Translators: +# o Zoltan Čala <zolika@sezampro.yu>, 1999. +# o Filip Miletić <f.miletic@ewi.tudelft.nl>, 2004, 2005, 2006. +# o Aleksandar Jelenak <jelenak@netlinkplus.net>, 2004, 2005. +# +# Note: +# The file sr@Latn.po is automatically generated from sr.po +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.6.3\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2006-06-18 00:49+0200\n" +"Last-Translator: Aleksandar Jelenak <jelenak@verizon.net>\n" +"Language-Team: Serbian <gnu@prevod.org>\n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Није направљен ~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Заузет сам" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Одлазим" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* Није добра идеја да користите IRC као\n" +" администратор. Боље је направити налог.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Чекам" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Активан" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Неуспело" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Готово" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Повежи се" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Прекинуто" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "Нема приступа %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Грешка" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s нуди „%s‟. Да ли желите да прихватите?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Нема активних DCC-ова\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "ДА " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "НЕ " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Корисник %s вас засипа CTCP захтевима, игноришем %s\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "" +"Корисник %s вас засипа MSG захтевима, искључујем посебне прозоре за " +"разговор. \n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s на вези\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s није ту\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Нисте на каналу. Пробајте са /join #<канал>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Нисте на вези. Пробајте са /server <хост> [<порт>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "За покретање треба имати /bin/sh!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Доступне наредбе:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Корисникове наредбе:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Наредбе описане у додацима:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Куцајте /HELP <наредба> за помоћ, или /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Непознат аргумент '%s' је занемарен." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "Додатак није пронађен.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Овај додатак се није учитао.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <име> <наредба>, додаје дугме у корисничeв списак команди" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <наредба>, шаље команду на све канале где сте повезани" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <наредба>, шаље наредбу на све канале на које сте пријављени" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <команда>, шаље команду свим серверима где сте повезани" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<разлог>], пријављује одсуство" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <шаблон> [<врста>], забрана за све кориснике обухваћене шаблоном од " +"приступа каналу. Ако су већ на каналу, не избацује их (за то треба бити „оп‟)" + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "SET [-quiet] <променљива> [<вредност>]" + +#: src/common/outbound.c:3508 +#, fuzzy +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "CLEAR, брише тренутни прозор са текстом" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, затвара тренутни прозор/језичак" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <код|шаблон>, тражи код земље, нпр: au = аустралија" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <име> <порука>, шаље CTCP поруку на дато име, попут VERSION или USERINFO" + +#: src/common/outbound.c:3516 +#, fuzzy +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "CYCLE, напушта тренутни канал и одмах се враћа назад" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <име> - прихвати понуђену датотеку\n" +"DCC SEND [-maxcps=#] <име> <дат> - пошаљи некоме датотеку\n" +"DCC PSEND [-maxcps=#] <име> <дат> - пошаљи некоме датотеку, пасиван начин\n" +"DCC LIST - покажи списак за DCC\n" +"DCC CHAT <име> - понуди разговор преко DCC\n" +"DCC PCHAT <име> - понуди разговор преко DCC, пасиван " +"начин\n" +"DCC CLOSE <тип> <име> <дат> пример:\n" +" /dcc close send пераперић датотека.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <име>, склања полу-оп звање за име на тренутном каналу (потребан " +"је„оп)‟" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <име>, брише дугме са корисничног списка" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DELBUTTON <име>, уклања звање оператора за име на овом каналу" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <име>, одузима реч за име на овом каналу" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, искључује са сервера" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <име|рач|ip>, тражи корисников IP број" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <текст>, исписује текст" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <наредба>, изврши наредбу. Ако је дата ознака -o онда се исписшаље " +"на тренутни канал, иначе се исписује у оквиру за текст." + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, шаље процесу SIGCONT" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], зауставља позив exec у овој сесији. Ако је дато и -9 процесу " +"се шаље SIGKILL" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, шаље процесу SIGSTOP" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, шаље податке на стандардни улаз процеса" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, празни ред за слање на овом серверу" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "ГАТЕ <рач.> [<порт>], прослеђује преко рач(унара), за порт се узима 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <надимак> <лозинка>, Убија „дух“ надимак" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <име>, даје звање полу-оп овом имену (потребан је оп) " + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <лозинка>, пријављује Вас на nickserv" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <шаблон> <типови...> <избори...>\n" +" шаблон - шаблон за име рачунара, нпр. *!*@.aol.com\n" +" типови - шта занемарити, један или више из скупа:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" избори - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <име> [<канал>], позива име да се прикључи каналу, мисли се на " +"тренутни ако се не наведе (потребан је оп)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <канал>, прикључује се каналу" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "KICK <име>, избацује име са овог канала (потребан је оп)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <име>, забрањује а затим избацује име са овог канала (потребан је оп)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, тражи да се измери кашњење" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <текст>, тражи текст у записима" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <дат.>, учитава додатак или скрипту" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, одузима звање свим полу-операторима на овом каналу (потребан је оп)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, одузима звање свим операторима на овом каналу (потребан је оп)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <радња>, шаље опис радње на овај канал (радње се пишу у трећем лицу, " +"нпр. /me скаче" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, избацује све друге са канала (потребан је оп)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, свима на каналу додељује звање оператора (потребан је оп)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <име> <порука>, шаље приватну поруку" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, исписује имена на овом каналу" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <име> <порука>, шаље CTCP дојаву" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <рачунар> [<порт>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <име>, узимање новог имена" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <име/канал> <порука>, шаље дојаву. Дојава је врста поруке коју треба " +"аутоматски обрадити" + +#: src/common/outbound.c:3614 +#, fuzzy +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [<nick>], даје списак имена која ишчекујете или додаје на списак" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <име>, даје звање оператора овом имену (потребан је оп)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" +"PART [<канал>] [<разлог>], напушта канал, и то тренутни ако се не наведе" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <име | канал>, испитује име или канал CTCP поруком" + +#: src/common/outbound.c:3622 +#, fuzzy +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "QUERY <име>, отвара нови прозор за личне поруке" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<reason>], искључује са овог сервера" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <текст>, шаље сирови текст серверу" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<рач.>] [<порт>] [<лозинка>], може се користити и само /" +"RECONNECT за поновно спајање на сервер или као /RECONNECT ALL за поновно " +"спајање на све отворене сервере" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<рач.>] [<порт>] [<лозинка>], може се користити и само /RECONNECT " +"за поновно спајање на сервер или као /RECONNECT ALL за поновно спајање на " +"све отворене сервере" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <текст>, пошаљи сирове податке у иксчет, као да су стигли са IRC сервера" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <текст>, шаље текст као поруку објекту у овом прозору" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <nick> [<file>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <рач.> <порт> <канал>, повезује се и учлани на канал" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <рач.> <порт> <канал>, повезује се и учлани на канал" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <рач.> [<порт>] [<лозинка>], повезује се на сервер, узима да " +"је порт 6667 за нормалну везу, одн. на 9999 за сигурну везу преко SSL" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <рач.> [<порт>] [<лозинка>], повезује се на сервер, узима да је порт " +"6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-quiet] <променљива> [<вредност>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<место>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<тема>], поставља тему ако је наведена, иначе прикаже тренутну тему" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <шаблон> [<шаблон>...], скида забрану за ове шаблоне" + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <шаблон> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <име>, уклони додатак или скрипт" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, отвара URL у прегледнику мреже" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <име1> <име2> итд, наглашава имена у списку корисника " +"канала" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <име>, даје реч (потребан је оп)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <порука>, шаље поруку на све канале" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <порука>, шаље поруку свим операторима на овом каналу" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Употреба: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"За ову наредбу помоћ није доступна.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Не постоји наредба.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Погрешни аргументи за корисничку наредбу.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Сувише команди се унакрсно позива, обустављам." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Команда није препозната. Пробајте са /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "Име xchat_plugin_init не постоји; можда ово није додатак за иксчет?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Да ли сте сигурни да је ово SSL сервер и порт?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Рачунар %s наизглед не постоји\n" +"Проверите подешавања за IP!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Неуспео контакт са заступником.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Покушавам везу са следећим сервером у %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Упозорење: Скуп знакова „%s‟ није познат. За мрежу %s се зато неће користити " +"конверзија." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 додат на списак посматраних." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Забране:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tНе успева прикључење%C26 %B$1 %O(имате забрану)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "Име %C22*%O$t$1 је промењено у $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 поставља забрану на $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tНаправљен је нови канал $1 на $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O укида звање полу-оператора за %C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O укида звање оператора за %C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O одузима реч од %C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 поставља изузеће за $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O додељује звање полу оператора за %C26 $2" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 позива на прикључење на $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UКанал Бр.кор. Тема" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 поставља приступну ознаку на $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Канал $1 приступне ознаке: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O додељује звање оператора за%C26 $2" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 уклања изузеће за $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 уклања позив за прикључење на $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 уклања кључну реч за канал" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 укида највећи дозвољени број корисника на каналу" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 поставља кључну реч за канал на $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 поставља највећи дозвољени број корисника на $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 уклања забрану за $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O даје реч за %C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Повезивање је успело. Пријава у току..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22У току је повезивање на $1 ($2) порт $3%O.." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21Повезивање није успело. Јављена је грешка: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tПримљен је CTCP захтев $1 од $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tПримљен је CTCP захтев $1 од $2 (за $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tПримљен је CTCP звук $1 од $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tПримљен је CTCP звук $1 од $2 (за $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tПрекинут је DCC разговор са %C26$1%O." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$tУспостављен је разговор путем DCC са %C26$1 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tРазговор путем DCC са %C26$1%O је прекинут услед грешке. $4." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tПримљена је понуда за разговор путем DCC од $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tНудим разговор путем DCC за $1" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$t$1 већ има понуду за разговор одавде" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$tDCC $1 повезивање са%C26 $2%O неуспело (грешка=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tПреузета датотека '$1%O' од $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 Врста Од/за Стање Вел. Место Датотека " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O." +"%010%C22*%O$tContents of packet: $2" +msgstr "" +"%C22*%O$tПримљен је неисправан DCC захтев од %C26$1%O.%010%C22*%O$tСадржај " +"пакета: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tНудимо %C26$1 %O за %C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tОва DCC понуда не постоји." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV %C126$2%O за%C26 $1%O прекинут." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC RECV%C26 $1%O од%C26 $3%O обављено %C30[%C26$4%O зн./сек." +"%C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC RECV веза успостављена са%C26 $1 %C30[%O$2%C30]%O" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV%C26 $1%O од%C26 $3%O неуспела. $4." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV: Не може се писати у $1 ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "%C22*%O$tДатотека%C26 $1%C већ постоји, снимам под именом%C26 $2%O." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Cтражи да се настави%C26 $2 %Cод%C26 $3%C." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC SEND%C26 $2%O за%C26 $1%O је прекинут." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC SEND%C26 $1%O за%C26 $2%O обављен %C30[%C26$3%O зн./сек.%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC SEND веза успостављена са%C26 $1 %C30[%O$2%C30]%O" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND веза%C26 $1%O са%C26 $2%O није успела. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Cје понудио%C26 $2 %C(%C26$3 %Cбајт((ов)а))" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Cза%C26 $3 %Cзаостаје - прекидам." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Cка%C26 $3 %Cје истекао - прекидам." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 избрисан са списка посматраних." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tИскључен ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tВаш IP број је: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O додат у списак ућутканих." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "Занемари кад се промени%C26 $1%O." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 Образац за име хоста PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O избрисан са списка ућутканих." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " Списак ућутканих је празан." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "%C22*%O$tНије могуће прикључити се на%C26 %B$1 %O без позива." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tПозвани сте на канал%C26 $1%C, позвао је%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) дошао на $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "" +"%C22*%O$tНије могуће прокључити се на%C26 %B$1 %O без знања кључне речи." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 је избацио $2 са $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$tОдстранио вас је $1 ($2%O)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22Прескочили смо вести дана." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$tИме $1 неко већ користи. Пробам да користим $2.." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$tНеко већ користи ово име. Можете користити команду /NICK да пробате " +"неко друго име." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tDCC захтев не постоји." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tНиједан процес није покренут." + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tСписак посматраних је празан." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Списак посматраних " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 корисници на списку посматраних." + +#: src/common/textevents.h:282 +#, fuzzy +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tВест: $1 је на вези ($2)." + +#: src/common/textevents.h:285 +#, fuzzy +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tВест: $1 је на вези ($2)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) оде $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) оде са $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tВреме одзива за $1 у секундама: $2" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tОдзив је изостао за $1 сек., искључујем се." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tПроцес је већ покренут" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 оде (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 поставља приступ%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tТражим IP број за%C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22Повезан." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22Тражим%C26 $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tПретходно успостављање везе је прекинуто (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29Тема за%C29 $1%C %C29је: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 променио је тему у: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29Тему за $1%C %C29поставио је $2%C %C29у $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tНепознато име рачунара. Можда је погрешно откуцано?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "" +"%C22*%O$tНије могуће ући на%C26 %B$1 %O јер је достигнут највећи дозвољени " +"број корисника." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Корисници на $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cје одсутан %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OКрај списка за WHOIS." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O неактиван%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O неактиван%C26 $2%O, пријављен:%C26 $3%O" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30) %O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %Oправи user@host%C27 $2%O, прави IP%C27 $3%O" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Сада причате на $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$t вас је избацио са канала $2 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tНапустили сте канал $3" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tНапустили сте канал $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tЗовете%C26 $1%C на%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tПроменили сте име у $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** КРАЈ ЗАПИСА У ДНЕВНИКУ У %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** ПОЧЕТАК ЗАПИСА У ДНЕВНИКУ У %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Дневник се не може отворити за упис. Проверите\n" +" права приступа за %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Порука слева" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Порука здесна" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "Име особе која се прикључује" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "Канал на који се прикључује" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "Рачунар на коме ради" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Надимак" + +#: src/common/text.c:973 +msgid "The action" +msgstr "Наредба" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Ознака за приступ" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Препознат текст" + +#: src/common/text.c:980 +msgid "The text" +msgstr "Текст" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Порука" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Стари надимак" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Нови надимак" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Име особе која је променила тему" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Тема" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Канал" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "Име избацивача" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "Избачена особа" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "Канал" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "Разлог" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "Име особе која одлази" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "Време" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "Креатор" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Име" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Разлог" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Рачунар" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "Од кога долази" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "Време у формату x.x (видети испод)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "Канал на који иде" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "Звук" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "Име особе" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "CTCP догађај" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "Име особе која је поставила кључ" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "Кључ" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "Име особе која је поставила ограничење" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "Ограничење" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "Име особе која је доделила опа" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "Име особе која је добила опа" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "Име особе која је добила полу-опа" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "Име особе која је доделила полу-опа" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "Име особе која је дала реч" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "Име особе која је добила реч" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "Име особе која је забранила" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "Шаблон за забрану" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "Име особе која је склонила кључ" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "Име особе која је уклонила ограничење" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "Име особе која је одузела опа" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "Име особе којој је одузет оп" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "Име особе која је доделила полу-опа" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Име особе којој је одузет полу-оп" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "Име особе која је одузела реч" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "Име особе којој је одузета реч" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "Име особе која је укинула забрану" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "Име особе која је поставила искључење" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "Шаблон за искључење" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "Име особе која је уклонила искључење" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "Име особе која је позвала" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "Шаблон за позив" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "Име особе која је уклонила позив" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "Име особе која је поставила приступ" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "Знак приступа (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "Ознака приступа" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "Канал на ком стоји" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Кор. име" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Пуно име" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Припадност каналу/\"је IRC оператор\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Подаци о серверу" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Одсутан" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Време пријаве" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Разлог за одсуство" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Порука" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Налог" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "Прави user@host" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "Прави IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Име канала" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Текст" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Име сервера" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Име особе која је позвала" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Корисници" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Имена у употреби" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Испробана имена" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Порт" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Мрежа" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Права приступа" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "IP адреса" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "Врста DCC" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Датотека" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Циљна датотека" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "зн./сек." + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Путања" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Место" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Величина" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "DCC текст" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Број посматраних улаза" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Стара датотека" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Нова датотека" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Прималац" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Шаблон рач." + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Име рач." + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "Пакет" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Секунде" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Име позване особе" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Шаблон забране" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Ко је забранио" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Време забране" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Грешка у обради догађаја %s.\n" +"Мењам за подразумевани." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "Датотека са звучним записом „%s‟ се не може очитати." + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "Удаљени рачунар је прекинуо везу" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Веза одбијена" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Нема путање до рачунара" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Време за повезивање је истекло" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Не може се доделити та адреса" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Веза прекинута на другом крају" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Острво Успења" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Андора" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Уједињени арапски емирати" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Авганистан" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Антигва и Барбуда" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Ангуила" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Албанија" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Јерменија" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Холандски антили" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Ангола" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Антарктик" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Аргентина" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "Обратни DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Америчка Самоа" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Аустрија" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "Нато терен" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Аустралија" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Аруба" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Аландска острва" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Азербејџан" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Босна и Херцеговина" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Барбадос" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Бангладеш" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Белгија" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Буркина Фасо" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Бугарска" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Бахреин" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Бурунди" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Комерцијала" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Бенин" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Бермуда" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Брунеји Дар-Ес-Салам" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Боливија" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Бразил" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Бахами" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Бутан" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Острво Буве" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Боцвана" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Белорусија" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Белизе" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Канада" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Кокосова острва" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "Демократска република Конго" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "Централноафричка република" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Конго" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Швајцарска" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Обала слоноваче" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Кукова острва" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Чиле" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Камерун" + +#: src/common/util.c:898 +msgid "China" +msgstr "Кина" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Колумбија" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Комерцијални домени" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Костарика" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Србија и Црна Гора" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Куба" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Зеленортска острва" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Божићна острва" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Кипар" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "Република Чешка" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Немачка" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Џибути" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Данска" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Доминика" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "Доминиканска република" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Алжир" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Еквадор" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Образовне установе" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Естонија" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Египат" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Западна Сахара" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Еритреја" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Шпанија" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Етиопија" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Европска Унија" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Финска" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Фиџи" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Фоклендска острва" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Микронезија" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Фарска острва" + +#: src/common/util.c:928 +msgid "France" +msgstr "Француска" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Габон" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Велика Британија" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Гренада" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Грузија" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Француска Гвајана" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Британска Каналска острва" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Гана" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Гибралтар" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Гренланд" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Гамбија" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Гвинеја" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Владине установе" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Гвадалупе" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Екваторијална Гвинеја" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Грчка" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "С. Џорџија и С. Сендвичка острва" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Гватемала" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Гуам" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Гвинеја Бисао" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Гијана" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Хонг Конг" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Хердова и Макдоналдова острва" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Хондурас" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Хрватска" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Хаити" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Мађарска" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Индонезија" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Ирска" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Израел" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Острво Човека" + +#: src/common/util.c:959 +msgid "India" +msgstr "Индија" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Информациони домен" + +#: src/common/util.c:961 +msgid "International" +msgstr "Међународни домени" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Британска Индијска острва" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Ирак" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Иран" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Исланд" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Италија" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Џерси" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Јамајка" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Јордан" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Јапан" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Кенија" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Киргистан" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Камбоџа" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Кирибати" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Комори" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "Св. Китс и Невис" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Северна Кореја" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Јужна Кореја" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Кувајт" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Кајманска острва" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Казахстан" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Лаос" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Либан" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Света Луција" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Лихтенштајн" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Шри Ланка" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Либерија" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Лесото" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Литванија" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Луксембург" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Латвија" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Либија" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Мароко" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Монако" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Молдова" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "Америчке медицинске установе" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Мадагаскар" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Маршалска острва" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Војни домени" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Македонија" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Мали" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Мианмар" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Монголија" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Макао" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Северна Маријанска острва" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Мартиник" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Мауританија" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Монсерат" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Малта" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Маурицијус" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Малдиви" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Малави" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Мексико" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Малезија" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Мозамбик" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Намибија" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Нова Каледонија" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Нигер" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Интерник мрежа" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Норфолшка острва" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Нигерија" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Никарагва" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Холандија" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Норвешка" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Непал" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Науру" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Ниуе" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Нови Зеланд" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Оман" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Непрофитна организација интерник" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Панама" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Перу" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Француска Полинезија" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Папуа Нова Гвинеја" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Филипини" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Пакистан" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Пољска" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "Св. Пјер и Микелон" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Питкаирн" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Порторико" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Палестинска територија" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Португал" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Палау" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Парагвај" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Катар" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Реинион" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Румунија" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "Старовремски ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Руска федерација" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Руанда" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Саудијска Арабија" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Соломонова острва" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Сејшели" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Судан" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Шведска" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Сингапур" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "Св. Јелена" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Словенија" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Свалбард и Јан Мајен острва" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Словачка република" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Сијера Леоне" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "Сан Марино" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Сенегал" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Сомалија" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Суринам" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "Сао Томе и Принципе" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Бивши СССР" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "Ел Салвадор" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Сирија" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Свазиленд" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Туркс и Каикос острва" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Чад" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Француске јужне територије" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Того" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Тајланд" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Таџикистан" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Токелау" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Источни Тимор" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Туркменистан" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Тунис" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Тонга" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Турска" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Тринидад и Тобаго" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Тувалу" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Тајван" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Танзанија" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Украjина" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Уганда" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Велика Британија" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "Сједињене америчке државе" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Уругвај" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Узбекистан" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Град-држава Ватикан" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "Св. Винсент и Гренадини" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Венецуела" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Британска Девичанска острва" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "Америчка Девичанска острва" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Вијетнам" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Вануату" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Острвље Валис и Фортуна" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Самоа" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Јемен" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Мајот" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Југославија" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Јужна Африка" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Замбија" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Зимбабве" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Непознато" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "Започни разговор" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "Пошаљи датотеку" + +#: src/common/xchat.c:728 +#, fuzzy +msgid "_User Info (WhoIs)" +msgstr "Подаци о кориснику (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +#, fuzzy +msgid "O_perator Actions" +msgstr "Операторска дејства" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Дај опа" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Одузми опа" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Дај реч" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Одузми реч" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Шут/забр." + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Шут" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Забр." + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "Шут и забр." + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Напусти канал" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Прикључи се..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Унесите име канала:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Везе са серверима" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Одзив сервера" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Сакриј верзију" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Оп" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "Деоп" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "Ћао" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Разлог да се избаци %s:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Пошаљи фајл" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Разговор" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Слање" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Прича" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Обриши" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "Није могуће повезати се са магистралом сесије" + +#: src/common/dbus/dbus-client.c:86 +#, fuzzy +msgid "Failed to complete NameHasOwner" +msgstr "Није могуће довршити наредбу" + +#: src/common/dbus/dbus-client.c:112 +#, fuzzy +msgid "Failed to complete Command" +msgstr "Није могуће довршити наредбу" + +#: src/common/dbus/dbus-plugin.c:30 +#, fuzzy +msgid "remote access" +msgstr "удаљен приступ иксчету" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "додатак за удаљен приступ помоћу DBUSа" + +#: src/common/dbus/dbus-plugin.c:897 +#, fuzzy, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Није могуће повезати се са магистралом сесије : %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Не може се добавити %s: %s\n" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "_О програму" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Преносиви клијент за IRC" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Табела знакова" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "Није на вези." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Морате изабрати забране" + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Шаблон" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "Од" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Датум" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" +"Списак ућутканих се може отворити само ако је отворен језичак за приказ " +"канала" + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "Иксчет: Списак забрана (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Уклони" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Исеци" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Освежи" + +#: src/fe-gtk/chanlist.c:111 +#, fuzzy, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Статистике корисника и канала: корисника ‒ %d/%d, канала ‒%d/%d" + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Изаберите име датотеке за излаз" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +#, fuzzy +msgid "_Join Channel" +msgstr "Иди на канал" + +#: src/fe-gtk/chanlist.c:633 +#, fuzzy +msgid "_Copy Channel Name" +msgstr "Име канала" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "Иксчет: списак канала (%s)" + +#: src/fe-gtk/chanlist.c:781 +#, fuzzy +msgid "_Search" +msgstr "Иксчет: Претрага" + +#: src/fe-gtk/chanlist.c:787 +#, fuzzy +msgid "_Download List" +msgstr "Преузимања:" + +#: src/fe-gtk/chanlist.c:793 +#, fuzzy +msgid "Save _List..." +msgstr "Списак рачунара..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "" + +#: src/fe-gtk/chanlist.c:818 +#, fuzzy +msgid "channels with" +msgstr "канал" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:843 +#, fuzzy +msgid "users." +msgstr "Корисници" + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "Име канала" + +#: src/fe-gtk/chanlist.c:882 +#, fuzzy +msgid "Search type:" +msgstr "Тражи текст..." + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:890 +#, fuzzy +msgid "Pattern Match (Wildcards)" +msgstr "Образац:" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Нађи:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Шаљи датотеку за %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Датотека се мора преузети изједна." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"Не могу да приступим: %s\n" +"%s.\n" +"Настављање није могуће." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"Датотека која је претходно преузета је већа него понуђена. Зато није могуће " +"наставити пренос." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "Не може се наставити пренос исте датотеке од две различите особе." + +#: src/fe-gtk/dccgui.c:745 +#, fuzzy +msgid "XChat: Uploads and Downloads" +msgstr "Иксчет: слања и пријеми" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Стање" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Датотека" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Оба" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Слања" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "Преузимања:" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Детаљи" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Датотека:" + +#: src/fe-gtk/dccgui.c:821 +#, fuzzy +msgid "Address:" +msgstr "Адреса" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Обустави" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Прихвати" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Настави" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Отвори директоријум..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "Иксчет: DCC списак разговора" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Пријем" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Послато" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "Поч. време" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*НОВО*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "Унеси текст" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Име" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Наредба" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "На горе" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "На доле" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Откажи" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Сними" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Додај нов" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Обриши" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Уреди" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Помоћ" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "Не повезуј се аутоматски са серверима" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "Користи други директоријум са подешавањима" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "Не учитавај аутоматски додатке" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "Прикажи директоријум за аутоматско учитавање додатака" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "Прикажи директоријум са корисниковим подешавањима" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Отвори URL irc://сервер:порт/канал" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Пошаљи ову команду:" + +#: src/fe-gtk/fe-gtk.c:132 +msgid "Open URL or execute command in an existing XChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +#, fuzzy +msgid "level" +msgstr "Никада" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Прикажи податке о издању" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"Не може се отворити фонт:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "Запис за претрагу је празан.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d бајт(ов)(а)" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Мрежни ред слања: бајтова: %d" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"Покрени наредбу убацује податке из Data 1 као да су откуцани у кућицу за " +"унос где је притиснут низ тастера. Зато може садржати текст који ће бити " +"послат особи или на канал, обичне или корисникове наредбе. Када се покрене, " +"сви знакови \\n у Data 1 користе се да раздвоје наредбе тако да је могуће " +"покренути више од једне. Ако желите да имате \\ у тексту, онда треба унети \\" +"\\" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"Наредба ^BПромени страну^B листа странице у свесци. Поставите Data 1 на " +"страну на коју желите да одете. Ако је поље Data 2 испуњено, онда се броји у " +"односу на текући положај." + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"Наредба ^BУбаци у запис^B ће убацити садржај поља Data 1 на место на ком је " +"био фокус када је притиснута комбинација тастера" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"Команда ^BПомери страну^B помера текст у елементу нагоре или надоле за једну " +"страну. Ако је Data 1 садржи било шта, померање је на горе, иначе је на доле" + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"Команда ^BПостави запис^B пребацује садржај поља Data 1 на место које је " +"било у фокусу" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"Команда ^BПоследња команда^B уписује последњу унету команду, као када се у " +"шкољци притисне стрелица нагоре" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"Команда ^BНаредна команда^B уписује команду која је следећа на реду, слично " +"као притисак на стрелицу надоле у шкољци" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Ова команда мења текст у линији за унос тако што довршава непотпуно име или " +"команду. Ако је поље Data 1 попуњено, дупли притисак на табулатор бира " +"последње име, не следеће" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Овом командом се можете шетати горе-доле кроз листу имена. Ако је Data 1 " +"постављено на било шта, кретаћете се на горе, иначе на доле" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Ова команда проверава да ли се последња унета реч налази на списку за " +"замене, и замењује је ако је пронађе" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Ова команда помера тренутни језичак за једно место улево" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Ова команда помера тренутни језичак удесно" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Ова команда помера активну групу језичака улево" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Ова команда помера активну групу језичака удесно" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "Убацује улазну линију у претходне команде, али не шаље серверу" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "Грешка при учитавању распореда тастера" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<нема>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Мод" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Тастер" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Акција" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "Иксчет: Скраћенице с тастатуре" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Data 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Data 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Грешка при отварању датотеке са подешавањима\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Назив тастера %s у датотеци са распоредом није препознат\n" +"Учитавање је прекинуто, морате поправити %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Назив акције %s међу распоредом тастера није препознат\n" +"Учитавање је прекинуто, морате поправити %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"На овом месту требала је да стоји линија са подацима (почиње са Dx{:|!}) али " +"је стајало:\n" +"%s\n" +"\n" +"Учитавање прекинуто, морате поправити %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"Датотека са распоредом тастера је неисправна, учитавање је прекинуто\n" +"Морате поправити %s/keybindings.conf\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "Не може се писати у ту датотеку." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Ова се датотека не може читати." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Овај шаблон већ постоји." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Приватно" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Вест" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Позови" + +# Јесте, натегнуто је... +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Прихвати" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Унеси шаблон за ућуткивање" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "Иксчет: Списак ућутканих" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Статистика за ућуткане:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Канал:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Приватно:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Вести:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Позив:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "Додај..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "Име канала је прекратко, пробајте поново." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "Иксчет: Повезивање је успело" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "Повезивање са %s је успело." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"У прозору са списком сервера, ниједан канал (соба за разговор) није изабрана " +"за аутоматску пријаву за ову мрежу." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "Шта бисте желели следеће да урадите?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "_Ништа, прикључићу се каналу касније." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "_Прикључи се каналу:" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Ако знате име канала коме се желите прикључити, унесите га овде." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "О_твори прозор са списком канала." + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "Добављање списка канала може да потраје неколико минута." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "_Увек приказуј ово прозорче после повезивања." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Разговор са" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Тема за %s је: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Тема није постављена" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"Овај сервер има укупно оволико канала: %d или дијалога. Да ли желите да их " +"све затворите?" + +#: src/fe-gtk/maingui.c:1283 +#, fuzzy +msgid "Quit XChat?" +msgstr "О Иксчету" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1310 +#, fuzzy, c-format +msgid "You are connected to %i IRC networks." +msgstr "Повежи се аутоматски када се програм покрене" + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "" + +#: src/fe-gtk/maingui.c:1314 +#, fuzzy +msgid "Some file transfers are still active." +msgstr "Још увек ради пренос датотека, да ли ипак желите крај рада?" + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Убаци атрибут или кôд за боју" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Масно</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Подвучено</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Обично" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Боје 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Боје 8-15" + +#: src/fe-gtk/maingui.c:1612 +#, fuzzy +msgid "_Settings" +msgstr "П_одешавања" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "Сакриј поруке о доласку и одласку" + +#: src/fe-gtk/maingui.c:1625 +#, fuzzy +msgid "_Extra Alerts" +msgstr "Посебне справице" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "Звук уз поруку" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +#, fuzzy +msgid "_Detach" +msgstr "_Откачи језичак" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "_Затвори" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "Макс. број корисника мора бити унет као број!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Заштита теме" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Нема спољашњих порука" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Тајни" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "По позиву" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Надгледан" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Списак избачених" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Кључна реч" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Макс. људи" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Покажи/сакриј кориснике" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"Не могу да поставим провидну позадину!\n" +"\n" +"Можда користите управљач прозора који\n" +"тренутно није подржан.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Унесите ново име:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Непознат рачунар" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Право име:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Корисник:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "Држава:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Рачунар:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "пре оволико минута: %u" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Посл. порука:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Одсутан:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"Трака са менијем је сада сакривена. Можете је поново приказати притиском на " +"F9 или десним кликом на празни део главне текстуалне обласни." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Отвори везу у читачу" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Умножи изабрану везу" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Иди на канал" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Изађи са канала" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Понови приступ" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "Иксчет: Корисников мени" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Уреди овај мени..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Добавка списка канала..." + +#: src/fe-gtk/menu.c:1348 +#, fuzzy +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Корисникове команде - посебни кодови:\n" +"\n" +"%c = тренутни канал\n" +"%m = подаци о машини\n" +"%n = ваше име\n" +"%t = време/датум\n" +"%v = верзија програма\n" +"%2 = реч 2\n" +"%3 = реч 3\n" +"&2 = реч 2 и даље до краја линије\n" +"&3 = реч 3 и даље до краја линије\n" +"\n" +"нпр:\n" +"/cmd john hello\n" +"\n" +"%2 би било \"john\"\n" +"&2 би било \"john hello\"." + +#: src/fe-gtk/menu.c:1364 +#, fuzzy +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Корисничка дугмад - посебни кодови:\n" +"\n" +"%a = сва изабрана имена\n" +"%c = овај канал\n" +"%h = рачунар на коме је изабрано име\n" +"%m = подаци о рачунару\n" +"%n = ваше име\n" +"%s = одабрано име\n" +"%t = време/датум\n" + +#: src/fe-gtk/menu.c:1374 +#, fuzzy +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Дугмад прозорчета - посебни кодови:\n" +"\n" +"%a = сва изабрана имена\n" +"%c = овај канал\n" +"%h = рачунар на коме је изабрано име\n" +"%m = подаци о рачунару\n" +"%n = ваше име\n" +"%s = одабрано име\n" +"%t = време/датум\n" + +#: src/fe-gtk/menu.c:1384 +#, fuzzy +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"CTCP одговори - посебни кодови:\n" +"\n" +"%d = подаци (цео CTCP)\n" +"%m = подаци о рачунару\n" +"%s = име онога ко је послао упит\n" +"%t = време/датум\n" +"%2 = друга реч\n" +"%3 = трећа реч\n" +"&2 = све почев од друге речи до краја реда\n" +"&3 = све почев од треће речи до краја реда\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"Обрада URLова - посебни кôдови:\n" +"\n" +"%s = запис URL-а\n" +"\n" +"Стављање узвичника (!) испред команде\n" +"говори да је треба проследити шкољци\n" +"уместо Иксчету" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "Иксчет: Корисникове команде" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "Иксчет: Појавни мени из списка корисника" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Замени са" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "Иксчет: Замени" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "Иксчет: Обрада URLова" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "Иксчет: Корисничка дугмета" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "Иксчет: Дугмета у прозорчету" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "Иксчет: Одговори на CTCP упите" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_Иксчет" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "_Списак мрежа..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "_Нов" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Језичак за сервер..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Језичак за канал" + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Прозор за сервер..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Прозор за канал..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "_Учитај додатак или скрипт..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "_Крај" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "_Преглед" + +#: src/fe-gtk/menu.c:1591 +#, fuzzy +msgid "_Menu Bar" +msgstr "_Трака менија" + +#: src/fe-gtk/menu.c:1592 +#, fuzzy +msgid "_Topic Bar" +msgstr "_Трака за тему" + +#: src/fe-gtk/menu.c:1593 +#, fuzzy +msgid "_User List" +msgstr "Списак имена" + +#: src/fe-gtk/menu.c:1594 +#, fuzzy +msgid "U_serlist Buttons" +msgstr "_Корисничка дугмета" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "_Дугмета за начин приступа" + +#: src/fe-gtk/menu.c:1597 +#, fuzzy +msgid "_Channel Switcher" +msgstr "Списак канала..." + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "_Језичци" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "_Дрво" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "_Мерења мреже" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Искључено" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Графичко" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "_Сервер" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "_Искључи се" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "_Опет се повежи" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "Прикључи се..." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "Прикључи се..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Објави одсуство" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "_Корисников мени" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "П_одешавања" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "_Поставке..." + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Напредна" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Замени све..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "Одговори на CTCP..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Дугмета за прозорче..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Скраћенице с тастатуре..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Праћење текста..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "Обрада URL-ова..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Корисникове команде..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Корисничка дугмета..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Корисников избор..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_Прозор" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Списак забрана..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Знаковна табела..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Директан разговор..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Преноси датотека..." + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "Списак забрана..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Списак ућутканих..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Додаци и скриптови..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Сирови дневник..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "Памћење URL-ова..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Постави овде ознаку" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "О_чисти текст" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Тражи текст..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Сними текст..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_Помоћ" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "_Садржај" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "_О програму" + +#: src/fe-gtk/menu.c:2147 +#, fuzzy +msgid "_Attach" +msgstr "Закачи језичак" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Био је ту" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Није на вези" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Никада" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, fuzzy, c-format +msgid "%d minutes ago" +msgstr "пре оволико минута: %u" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "На вези" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Унесите име које треба додати:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "Иксчет: Списак за слање" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "Отвори разговор" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:591 +#, fuzzy +msgid "_Hide" +msgstr "Сакриј" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +#, fuzzy +msgid "Channel Message" +msgstr "Име канала" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +#, fuzzy +msgid "Private Message" +msgstr "Звук на приватну поруку" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +#, fuzzy +msgid "Highlighted Message" +msgstr "Звук при означеним порукама" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "Одсутан" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Верзија" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Опис" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Избор додатка или скрипта за учитавање" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "Иксчет: Додаци и скриптови" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "_Учитај..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "У_клони" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Сачувај као..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "Иксчет: Сирови дневник (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Обриши дневник" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "Прозор за ког сте покренули претрагу више не постоји." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "Претрага је дошла до краја, ништа више није нађено." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "Иксчет: Претрага" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "_Разликуј мала и велика слова" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "Тражи _уназад" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "_Нађи" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Нова мрежа" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Да ли заиста треба брисати мрежу \"%s\" и све сервере у њој?" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "канал" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "Иксчет: списак канала (%s)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "Лозинка:" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "_Уреди" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "Име и право име не могу да буду празни." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "Иксчет: Уреди %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Сервери за: %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Повежи се само са изабраним рачунарима" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Не испитуј све рачунаре у списку када повезивање не успе." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Ваши подаци" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Користи главне податке о кориснику" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "_Надимак:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Други избор:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "_Корисничко име:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "_Право име:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Повезивање у току" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Повежи се аутоматски када се програм покрене" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "Користи заступника (proxy)" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "Користи SSL за све рачунаре у овој мрежи" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Прихвати неважећи SSL сертификат." + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "Напусти канал:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "Канале треба раздвојити запетама, не размацима!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Пошаљи ову команду:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Додатна команда која се извршава по повезивању. Ако Вам треба више од једне, " +"овде унесите LOAD -e <ДАТОТЕКА>, где је <ДАТОТЕКА> име датотеке са командама " +"које треба извршити." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Лозинка за nickserv:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Ако Ваш надимак захтева лозинку, упишите је овде. Ову могућност не " +"подржавају све IRC мреже." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Лозинка за сервер:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "" +"Лозинка за приступ серверу. Ако нисте сигурни шта овде треба да стоји, " +"оставите празно." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Скуп знакова:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "Иксчет: списак мрежа" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Подаци о кориснику" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Трећи избор:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Мреже" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "Не приказуј списак мрежа при покретању програма" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "_Уреди..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "Поређај" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "_Повежи се" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Изглед линије са текстом" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Слова:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Позадина:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Памти оволико линија:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Обоји имена" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Додели свакој особи на ИРЦ-у различиту боју" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Уравнај надимке" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Уравнај надимке по десној страни" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Провидна позадина" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Прикажи линију за обележавање" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Убаци црвену линију после последње прочитане линије текста." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Подешавања провидности" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Црвенa:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Зеленa:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Плава:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Текст датума" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Убацуј време у дневнике" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Формат датума:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Погледајте упутство за strftime." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Улазни прозор" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Користи боје и писмо из кућице за текст" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Провера правописа" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Суфикс за допуну имена:" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "Аутоматска допуна имена" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Суфикс за допуну имена:" + +#: src/fe-gtk/setup.c:147 +#, fuzzy +msgid "Nick completion sorted:" +msgstr "Суфикс за допуну имена:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Кодови при уносу текста" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Тумачи %nnn као ASCII вредност" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Тумачи %C, %B као боју, подебљан испис итд." + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, опови први" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, опови последњи" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Неуређено" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Горе" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Доле" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Сакриј" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Списак имена" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Покажи имена рачунара" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Уреди списак корисника према:" + +#: src/fe-gtk/setup.c:205 +#, fuzzy +msgid "Show user list at:" +msgstr "Покажи/сакриј кориснике" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Праћење одсуства" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "Праћење одсутности корисника и њихово означавање другом бојом" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "Прати одсутне на каналима са мање од:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Шта извршити на двоструки клик" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Прозори" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Језичци" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Увек" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Само жељени језичци" + +#: src/fe-gtk/setup.c:242 +#, fuzzy +msgid "Tree" +msgstr "_Дрво" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Отвори посебан језичак за поруке са сервера" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Отвори посебан језичак за вести са сервера" + +#: src/fe-gtk/setup.c:252 +#, fuzzy +msgid "Open a new tab when you receive a private message" +msgstr "Отвори посебан језичак за поруке са сервера" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Уреди језичке лексикографски" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "Мали језичци" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Фокусирај нове језичке:" + +#: src/fe-gtk/setup.c:258 +#, fuzzy +msgid "Show channel switcher at:" +msgstr "Прати одсутне на каналима са мање од:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Скрати језичке на:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "слова" + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Језичци или прозори" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Место за приказ нових канала:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Место за прикаѕ нових разговора:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Место за приказ помоћних порука:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "DCC, Ignore и Notify се отварају у језичцима или прозорима?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "Не" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Да" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "Омогући избор директоријума сваки пут" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Датотеке и директоријуми" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Одмах прихвати понуђене датотеке:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Снимај датотеке у:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Помери пренесене датотеке у дир.:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Запамти надимке у именима датотекама" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Подешавања мреже" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Сазнај IP овог рачунара од сервера" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Упитајте ИРЦ сервер да сазнате вашу адресу. Корисни уколико је права адреса " +"из опсега 192.168.*.*!" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "DCC IP адреса:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Пријави ову адресу при нуђењу датотека." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Први порт за слање DCC:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Последњи порт за слање DCC" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!Вредност порта поставити на нулу за пуни опсег." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Највеће брзине преноса (бајт/секунда)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Једно слање:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Макс. брзина за један пренос" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Једно преузимање:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Сва слања:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Макс. брзина саобраћаја за све датотеке" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Сва преузимања:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Узбуне" + +#: src/fe-gtk/setup.c:333 +#, fuzzy +msgid "Show tray balloons on:" +msgstr "Прикажи језичке:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:339 +#, fuzzy +msgid "Enable system tray icon" +msgstr "Укључи праћење одсустава" + +#: src/fe-gtk/setup.c:341 +#, fuzzy +msgid "Highlighted Messages" +msgstr "Звук при означеним порукама" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:344 +#, fuzzy +msgid "Extra words to highlight:" +msgstr "Речи које треба нагласити:" + +#: src/fe-gtk/setup.c:345 +#, fuzzy +msgid "Nick names not to highlight:" +msgstr "Имена која не треба нагласити:" + +#: src/fe-gtk/setup.c:346 +#, fuzzy +msgid "Nick names to always highlight:" +msgstr "Имена која не треба нагласити:" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Речи раздвојте запетама." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Подразумеване поруке" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Крај:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Напусти канал:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Одсутан:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Одсутан" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Испиши поруке о одсуству" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Поруку о одсуству шаљи на све канале" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Само једном објави одсутност" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Исте поруке се не понављају" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Склони AWAY кад се вратим" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Објави повратак пре слања порука" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Напредна подешавања" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Пауза пре новог повезивања:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Приказуј приступе у сировом облику" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Изврши WHOIS кад се појави неко посматран" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "Шаље /WHOIS када се појави име са списка посматраних" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Сакриј поруке о доласку и одласку" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Увек сакривај поруке о доласку и одласку" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Непосредне акције (DCC) у посебан прозор" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Прозор за слање" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Прозор за пријем" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Прозор за разговор" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Записивање" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "Дозволи бележење разговора" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Име дневника:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=сервер %c=канал %n=мрежа." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Уписуј у дневнике време када су поруке стигле" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Формат за запис датума у дневник:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(искључено)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS заступник (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Све везе" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "Само ИРЦ сервер" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "DCC само пријем" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Ваша адреса" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Повежи се са:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "Корисно само за рачунаре са вишеструким адресама." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Заступник (proxy):" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Име рач.:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Порт:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Врста:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Користи заступника (proxy) за:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Аутентификација заступника" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Користи аутентификацију (само MS, HTTP или Socks5)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Користи аутентификацију (само HTTP или Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Корисничко име:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Лозинка:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Одабери слику" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "Избор директоријума за пријем" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Одабери писмо" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Прегледај..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Означи идентификоване кориснике са:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Означи неидентификоване кориснике са:" + +#: src/fe-gtk/setup.c:1161 +#, fuzzy +msgid "Open Data Folder" +msgstr "Отвори директоријум..." + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Одабери боју" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Боје текста" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "mIRC боје:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Локалне боје:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Први план:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Позадина:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Истицање текста" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Боје сучеља" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Нови подаци:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Линија ознаке:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Нова порука:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Одсутан корисник:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Истицање:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Догађај" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Звучни запис:" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Изаберите име звучног записа" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Начин пуштања звука:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "Вањски програм за пуштање звука:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "Спољњи програм" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "Аутоматски" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "Директоријум за звучне записе:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Звучни запис:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "Прегледај..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "Пусти" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Сучеље" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Унос текста" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Списак корисника" + +#: src/fe-gtk/setup.c:1703 +#, fuzzy +msgid "Channel switcher" +msgstr "Списак канала..." + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Боје" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Разговори" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Опште" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Звук" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Подешавање мреже" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Пренос датотека" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Врсте" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Неке измене ће постати видљиве тек када следећи пут покренете програм." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*УПОЗОРЕЊЕ*\n" +"Аутоматско прихватање DCC захтева у кућном\n" +"директоријуму је опасно и може се искористити.\n" +"Нпр. неко може послати датотеку .bash_profile" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "Иксчет: Поставке" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Грешка при читању текста" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Овај сигнал је допремио %d аргумената, $%d није исправан" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Штампај датотеку текстова" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Уреди догађаје" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ број" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Учитај из..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Пробај све" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +# XXX FIXME Ово би могло лепше да се преведе +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "Иксчет: Преписивање URLова" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Обриши списак" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Пресликај овај URL" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Пресликај" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Сними списак у датотеку" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d оп., %d ук." + +#~ msgid "%C18*$t$1%O $2" +#~ msgstr "%C18*$t$1%O $2" + +#~ msgid "%C21*%O$t%C21%B$1%O%C21 $2" +#~ msgstr "%C21*%O$t%C21%B$1%O%C21 $2" + +#~ msgid "%C18%H<%H$4$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$4$1%H>%H%O$t$2" + +#~ msgid "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" +#~ msgstr "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" + +#~ msgid "%C28-%C29$1/$2%C28-%O$t$3" +#~ msgstr "%C28-%C29$1/$2%C28-%O$t$3" + +#~ msgid "$1$t$2" +#~ msgstr "$1$t$2" + +#~ msgid "%C19>%O$1%C19<%O$t$2" +#~ msgstr "%C19>%O$1%C19<%O$t$2" + +#~ msgid "%C16*%O$t$1%O" +#~ msgstr "%C16*%O$t$1%O" + +#~ msgid "%C28-%C29$1%C28-%O$t$2" +#~ msgstr "%C28-%C29$1%C28-%O$t$2" + +#~ msgid "%C28*%C29$3$1%C28*$t%O$2" +#~ msgstr "%C28*%C29$3$1%C28*$t%O$2" + +#~ msgid "%C18%H<%H$3$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$3$1%H>%H%O$t$2" + +#~ msgid "%C22*%O$t$1" +#~ msgstr "%C22*%O$t$1" + +#~ msgid "%C31%H<%H$4$1%H>%H%O%C30$t$2" +#~ msgstr "%C31%H<%H$4$1%H>%H%O%C30$t$2" + +#~ msgid "PID" +#~ msgstr "PID" + +#~ msgid "US Minor Outlying Islands" +#~ msgstr "Мања америчка истурена острва" + +#~ msgid "Direct client-to-client" +#~ msgstr "Директни приступ клијенту" + +#~ msgid "Send File" +#~ msgstr "Пошаљи датотеку" + +#~ msgid "Offer Chat" +#~ msgstr "Понуди разговор" + +#~ msgid "Abort Chat" +#~ msgstr "Прекини разговор" + +#~ msgid "Userinfo" +#~ msgstr "Информације" + +#~ msgid "Clientinfo" +#~ msgstr "Инф. о клијенту" + +#~ msgid "Time" +#~ msgstr "Време" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "Опер" + +#~ msgid "Kill this user" +#~ msgstr "Дај реч" + +#~ msgid "Mode" +#~ msgstr "Приступ" + +#~ msgid "Give Half-Ops" +#~ msgstr "Дај полу-опа" + +#~ msgid "Take Half-Ops" +#~ msgstr "Одузми полу-опа" + +#~ msgid "Ignore" +#~ msgstr "Ућуткај" + +#~ msgid "Ignore User" +#~ msgstr "Занемари корисника" + +#~ msgid "UnIgnore User" +#~ msgstr "Врати ућуткане" + +#~ msgid "Info" +#~ msgstr "Информ." + +#~ msgid "Who" +#~ msgstr "Ко је" + +#~ msgid "DNS Lookup" +#~ msgstr "DNS потрага" + +#~ msgid "Trace" +#~ msgstr "Следи" + +#~ msgid "UserHost" +#~ msgstr "Рачунар" + +#~ msgid "External" +#~ msgstr "Спољњи" + +#~ msgid "Traceroute" +#~ msgstr "Следи" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "Unban" +#~ msgstr "Скини забр." + +#~ msgid "I can't save an empty list!" +#~ msgstr "Списак се не снима када је празан!" + +#~ msgid "List display options:" +#~ msgstr "Списак опција за приказ" + +#~ msgid "Minimum Users:" +#~ msgstr "Мин. корисника" + +#~ msgid "Maximum Users:" +#~ msgstr "Макс. корисника" + +#~ msgid "Regex Match:" +#~ msgstr "Regex образац" + +#~ msgid "Apply Match to:" +#~ msgstr "Када се поклопи:" + +#~ msgid "Apply" +#~ msgstr "Примени" + +#~ msgid "Refresh the list" +#~ msgstr "Освежи списак" + +#~ msgid "Save the list" +#~ msgstr "Сними списак" + +#~ msgid "None" +#~ msgstr "Ниједна" + +#~ msgid "To" +#~ msgstr "За" + +#~ msgid "Started" +#~ msgstr "Започето" + +#~ msgid "Speed limit" +#~ msgstr "Гранична брзина" + +#~ msgid "XChat: File Receive List" +#~ msgstr "Иксчет: Списак датотека на пријему" + +#~ msgid "Open" +#~ msgstr "Отвори" + +#~ msgid "Ack" +#~ msgstr "Потврди" + +#~ msgid "To/From" +#~ msgstr "Од/за" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "Нема других прозора, желите ли да изађете из Xchat-а?" + +#~ msgid "Show join/part messages" +#~ msgstr "Обавести о улазу/излазу" + +#~ msgid "Color paste" +#~ msgstr "Залепи и боју" + +#~ msgid "Go to" +#~ msgstr "Иди на" + +#~ msgid "_Close Tab" +#~ msgstr "_Затвори језичак" + +#~ msgid "_Layout" +#~ msgstr "_Изглед" + +#~ msgid "Notify List..." +#~ msgstr "Списак посматраних..." + +#~ msgid "_Attach Window" +#~ msgstr "_Закачи прозор" + +#~ msgid "_Close Window" +#~ msgstr "За_твори прозор" + +#~ msgid "User" +#~ msgstr "Корисник" + +#~ msgid "Server" +#~ msgstr "Рачунар" + +#~ msgid "XChat: Notify List" +#~ msgstr "Иксчет: Списак посматраних" + +#~ msgid "C_hannels to join:" +#~ msgstr "Приступи _каналима:" + +#~ msgid "Resizable user list" +#~ msgstr "Променљива величина списка корисника" + +#~ msgid "Left" +#~ msgstr "Слева" + +#~ msgid "Right" +#~ msgstr "Здесна" + +#~ msgid "Tabs Location" +#~ msgstr "Смештање језичака" + +#~ msgid "(Can be a text file relative to ~/.xchat2/)." +#~ msgstr "(Можете користити име датотеке релативно у одн. на ~/.xchat2/)." + +#~ msgid "(Can be a text file relative to config dir)." +#~ msgstr "(Може бити релативно у односу на дир. са подешавањима)." + +#~ msgid "Flash taskbar on highlighted messages" +#~ msgstr "Бљесак оквира прозора при означеним порукама" + +#~ msgid "Beep on channel messages" +#~ msgstr "Звук при порукама на каналу" + +#~ msgid "Open an irc:// url" +#~ msgstr "Отвори URL irc://" + +#~ msgid "irc://server:port/channel" +#~ msgstr "irc://сервер:порт/канал" + +#~ msgid "Execute a xchat command" +#~ msgstr "Изврши иксчетову наредбу" + +#~ msgid "\"Command to execute\"" +#~ msgstr "\"Наредба за извршење\"" + +#~ msgid "Prints some text to the current tab/window" +#~ msgstr "Исписује неки текст у тренутни језичак одн. прозор" + +#~ msgid "\"Text to print\"" +#~ msgstr "\"Текст за испис\"" + +#~ msgid "Change the context to the channel" +#~ msgstr "Промена контекста у канал" + +#~ msgid "Change the context to the server" +#~ msgstr "Промена контекста у сервер" + +#~ msgid "server" +#~ msgstr "рачунар" + +#~ msgid "Get some informations from xchat" +#~ msgstr "Добави информације од иксчета" + +# XXX FIXME Шта је ово? +#~ msgid "id" +#~ msgstr "иб" + +#~ msgid "Get settings from xchat" +#~ msgstr "Добави подешавања од иксчета" + +#~ msgid "name" +#~ msgstr "име" + +#~ msgid "" +#~ "xchat-remote: %s\n" +#~ "Try `xchat-remote --help' for more information\n" +#~ msgstr "" +#~ "xchat-remote: %s\n" +#~ "Пробајте `xchat-remote --help' за више података\n" + +#~ msgid "Failed to complete SetContext" +#~ msgstr "Није могуће довршити поставку контекста" + +#~ msgid "Failed to complete print" +#~ msgstr "Није могуће довршити штампање" + +#~ msgid "Failed to complete GetInfo" +#~ msgstr "Није могуће довршити добавку података" + +#~ msgid "Failed to complete GetPrefs" +#~ msgstr "Није могуће довршити добавку поставки" + +#~ msgid "%s doesn't exist\n" +#~ msgstr "%s не постоји\n" + +#~ msgid "%s loaded successfully!\n" +#~ msgstr "%s је успешно учитан!\n" + +#~ msgid "France, Metropolitan" +#~ msgstr "Француска, Метрополитан" + +#~ msgid "Neutral Zone" +#~ msgstr "Неутрална зона" + +#~ msgid "Settings saved." +#~ msgstr "Подешавања су снимљена." + +#~ msgid "Save rawlog" +#~ msgstr "Сними дневник" + +#~ msgid "Save rawlog..." +#~ msgstr "Сними дневник..." + +#~ msgid "XChat: Server List" +#~ msgstr "Иксчет: Списак сервера" + +#~ msgid "Completes nick names without using the TAB key" +#~ msgstr "Допуњава надимке без притиска на тастер TAB" + +#~ msgid "Input Box Appearance" +#~ msgstr "Изглед поља за унос текста" + +#~ msgid "Convert spaces to underscore before sending" +#~ msgstr "Пребаци размаке у доње црте пре слања" + +#~ msgid "(See strftime manpage for details)." +#~ msgstr "(Детаљније у упутству за strftime)." + +#~ msgid "From:" +#~ msgstr "Од:" + +#~ msgid "To:" +#~ msgstr "За:" + +#~ msgid "Size:" +#~ msgstr "Величина:" + +#~ msgid "MIME Type" +#~ msgstr "MIME тип" + +#~ msgid "DIRECTORY" +#~ msgstr "КАТАЛОГ" + +#~ msgid "Close this tab/window" +#~ msgstr "Затвори прозор/језичак" + +#~ msgid "User List Buttons" +#~ msgstr "Корисничка дугмета" + +#~ msgid "New Shell Tab..." +#~ msgstr "Нови језичак са шкољком..." + +#~ msgid "_IRC" +#~ msgstr "_IRC" + +#~ msgid "Invisible" +#~ msgstr "Постави невидљивост" + +#~ msgid "Receive Wallops" +#~ msgstr "Прихвати Wallops" + +#~ msgid "Receive Server Notices" +#~ msgstr "Прихвати вести са сервера" + +#~ msgid "Auto Rejoin when Kicked" +#~ msgstr "Прикључи се поново после избацивања" + +#~ msgid "Never-give-up ReConnect" +#~ msgstr "Не одустај од повезивања" + +#~ msgid "Auto Open Dialog Windows" +#~ msgstr "Разговоре у посебан прозор" + +#~ msgid "Auto Accept Direct Chat" +#~ msgstr "Увек прихвати DCC" + +#~ msgid "Reload Settings" +#~ msgstr "Учитај подешавања" + +#~ msgid "Save Settings now" +#~ msgstr "Сними подешавања" + +#~ msgid "File Receive..." +#~ msgstr "Пријем датотеке..." + +#~ msgid "File Send..." +#~ msgstr "Слање датотеке..." + +#~ msgid "Close" +#~ msgstr "Затвори" + +#~ msgid "Connect in new tab" +#~ msgstr "Повежи се у _новом језичку" + +#~ msgid "Tint (shade) transparency" +#~ msgstr "Провидност уз претапање" + +#~ msgid "Strip mIRC colors" +#~ msgstr "Уклањај mIRC боје" + +#~ msgid "Info text" +#~ msgstr "Текстуални" + +#~ msgid "User list buttons enabled" +#~ msgstr "Прикажи корисничку дугмад" + +#~ msgid "Lag meter:" +#~ msgstr "Мерење одзива:" + +#~ msgid "Throttle meter:" +#~ msgstr "Мерење протока:" + +#~ msgid "(disabled)" +#~ msgstr "(искључено)" + +#~ msgid "A star (*)" +#~ msgstr "Звездица (*)" + +#~ msgid "A red star (*)" +#~ msgstr "Црвена звездица (*)" + +#~ msgid "%C19>%O$1%C19<%O$t$2%O" +#~ msgstr "%C19>%O$1%C19<%O$t$2%O" + +#~ msgid "Servername" +#~ msgstr "Име сервера" + +#~ msgid "" +#~ " File: %s\n" +#~ " To/From: %s\n" +#~ " Size: %u\n" +#~ " Port: %d\n" +#~ " IP Number: %s\n" +#~ "Start Time: %s Max CPS: %d\n" +#~ msgstr "" +#~ " Датотека: %s\n" +#~ " Од/За: %s\n" +#~ " Величина: %u\n" +#~ " Порт: %d\n" +#~ " IP број : %s\n" +#~ "Време поч.: %s Макс. зн/сек: %d\n" + +#~ msgid "Add new" +#~ msgstr "Додај нов" + +#~ msgid "User: %s" +#~ msgstr "Корисник: %s" + +#~ msgid "Realname: %s" +#~ msgstr "Право име: %s" + +#~ msgid "Server: %s" +#~ msgstr "Сервер: %s" + +#~ msgid "Real na_me:" +#~ msgstr "Право _име:" + +#~ msgid "Select a file to save to" +#~ msgstr "Избор датотеке за снимање" + +#~ msgid "%C22*%O$t%C28[%O$1%C28] %O$2" +#~ msgstr "%C22*%O$t%C28[%O$1%C28] %O$2" + +#~ msgid "Former Czechoslovakia" +#~ msgstr "Србија и Црна Гора (некад било: Чехословачка)" + +#~ msgid "Zaire" +#~ msgstr "Заир" + +#~ msgid "Delete All" +#~ msgstr "Бриши све" + +#~ msgid "X-Chat: Edit Key Bindings" +#~ msgstr "X-Chat: Уреди распоред тастера" + +#~ msgid "Key Bindings..." +#~ msgstr "Распоред тастера..." diff --git a/etc/wyatt8740/po/sv.po b/etc/wyatt8740/po/sv.po new file mode 100644 index 0000000..31f1a3d --- /dev/null +++ b/etc/wyatt8740/po/sv.po @@ -0,0 +1,5600 @@ +# Swedish messages for XChat. +# This file is distributed under the same license as the xchat package. +# Christian Rose <menthos@menthos.com>, 2000, 2001, 2002, 2003, 2004. +# Daniel Nylander <po@danielnylander.se>, 2007, 2008, 2010. +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.8.6\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2010-04-24 23:27+0100\n" +"Last-Translator: Daniel Nylander <po@danielnylander.se>\n" +"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Kan inte skapa ~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Jag är upptagen" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Lämnar" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* Att köra IRC som root är dumt! Du bör skapa ett\n" +" användarkonto och använda det för att logga in.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Väntar" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Aktiv" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Misslyckades" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Klar" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Anslut" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Avbruten" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "Kan inte komma åt %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Fel" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s erbjuder \"%s\". Accepterar du?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Inga aktiva DCC:er\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "JA " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "NEJ " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Du CTCP-översvämmas från %s, ignorerar %s\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "Du MSG-översvämmas från %s, ställer in gui_auto_open_dialog till AV.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s ansluten\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s frånkopplad\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Gick inte in i någon kanal. Prova /join #<kanal>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Inte ansluten. Prova /server <värd> [<port>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Redan markerad som frånvarande: %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "Redan markerad som tillbaka.\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "Jag behöver /bin/sh för att kunna köra!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Tillgängliga kommandon:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Användardefinierade kommandon:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Användardefinierade insticksmoduler:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Skriv /HELP <kommando> för ytterligare information, eller /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Ignorerade okända kommandot \"%s\"." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "Ingen sådan insticksmodul hittades.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Den insticksmodulen vägrar att glömmas.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <namn> <åtgärd>, lägger till en knapp under användarlistan" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <kmdo>, skickar ett kommando till alla kanaler du är inne i" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHANL <kmdo>, skickar ett kommando till alla kanaler du är inne i" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "" +"ALLSERV <kmdo>, skickar ett kommando till alla servrar du är ansluten till" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<orsak>], anger att du är frånvarande" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "BACK, ställer in dig som tillbaka (inte frånvarande)" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <mask> [<bannlysningstyp>], bannlyser alla som matchar masken från den " +"aktuella kanalen. Om de redan är på kanalen kommer detta inte att sparka ut " +"dem (kräver kanaloperatörsstatus)" + +#: src/common/outbound.c:3506 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <variabel> [<värde>]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "" +"CLEAR [ALL|HISTORY], tömmer aktuellt textfönster eller kommandohistorik" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, stänger det aktuella fönstret/fliken" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" +"COUNTRY [-s] <kod|jokertecken>, söker efter en landskod, exempelvis se = " +"Sverige" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <smeknamn> <meddelande>, skickar CTCP-meddelandet till smeknamn, " +"vanliga meddelanden är VERSION och USERINFO" + +#: src/common/outbound.c:3516 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "" +"CYCLE [<kanal>], lämnar aktuell eller angiven kanal och går omedelbart in i " +"den igen" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <smeknamn> - ta emot en erbjuden fil\n" +"DCC SEND [-maxcps=#] <smeknamn> [fil] - skicka en fil till någon\n" +"DCC PSEND [-maxcps=#] <smeknamn> [fil] - skicka en fil i passivt läge\n" +"DCC LIST - visa DCC-lista\n" +"DCC CHAT <smeknamn> - erbjud någon DCC-chatt\n" +"DCC PCHAT <smeknamn> - erbjud DCC-chatt i passivt läge\n" +"DCC CLOSE <typ> <smeknamn> <fil> exempel:\n" +" /dcc close send nisse fil.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <smeknamn>, tar bort halvkanaloperatörsstatus från smeknamnet på den " +"aktuella kanalen (kräver kanaloperatörsstatus)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <namn>, tar bort en knapp under användarlistan" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <smeknamn>, tar bort kanaloperatörsstatus från smeknamnet på den " +"aktuella kanalen (kräver kanaloperatörsstatus)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <smeknamn>, tar bort röststatus från smeknamnet på den aktuella " +"kanalen (kräver kanaloperatörsstatus)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, kopplar från servern" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <smeknamn|värd|ip>, söker en användares IP-nummer" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <text>, skriver ut text lokalt" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <kommando>, kör kommandot. Om flaggan -o används skickas utdata " +"till den aktuella kanalen, annars skrivs den ut i det aktuella textfältet" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, skickar SIGCONT til processen" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], dödar en körande exekvering i den aktuella sessionen. Om -9 " +"anges kommer processen att SIGKILL:as" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, skickar SIGSTOP till processen" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, skickar data till processens standard in" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, tömmer den aktuella serverns sändkö" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" +"GATE <värd> [<port>], tunnlar genom en värd, standardvärde på port är 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <smeknamn> <lösenord>, Dödar ett smeknamnsspöke" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" +"HOP <smeknamn>, ger halvkanaloperatörsstatus till smeknamn (kräver " +"kanaloperatörsstatus)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <lösenord>, identifiera dig själv mot nickserv" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <mask> <typer..> <alternativ..>\n" +" mask - värdmask att ignorera, exempelvis: *!*@*.aol.com\n" +" typer - datatyper att ignorera, en eller alla av:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" alternativ - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <smeknamn> [<kanal>], bjuder in någon till en kanal, " +"standardalternativet är den aktuella kanalen (kräver kanaloperatörsstatus)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <kanal>, går in i kanalen" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <smeknamn>, sparkar ut smeknamn från den aktuella kanalen (kräver " +"kanaloperatörsstatus)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <smeknamn>, bannlyser och sparkar sedan ut smeknamn från den " +"aktuella kanalen (kräver kanaloperatörsstatus)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, tvingar fram en ny eftersläpningskontroll" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <sträng>, söker efter en sträng i bufferten" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <fil>, läser in en insticksmodul eller ett skript" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, tar bort halvkanaloperatörsstatus från alla halvkanaloperatörer i " +"den aktuella kanalen (kräver kanaloperatörsstatus)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, tar bort kanaloperatörsstatus från alla kanaloperatörer i den " +"aktuella kanalen (kräver kanaloperatörsstatus)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <händelse>, skickar händelsen till den aktuella kanalen (händelserna " +"skrivs i tredje person, som exempelvis /me hoppar)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, sparkar ut alla utom dig själv från den aktuella kanalen (kräver " +"kanaloperatörsstatus)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, ger kanaloperatörsstatus till alla användare i den aktuella kanalen " +"(kräver kanaloperatörsstatus)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <smeknamn> <meddelande>, skickar ett privat meddelande" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, listar smeknamnen på den aktuella kanalen" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <smeknamn> <meddelande>, skickar en CTCP-notis" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <värdnamn> [<port>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <smeknamn>, ställer in ditt smeknamn" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <smeknamn/kanal> <meddelande>, skickar en notis. Notiser är en typ av " +"meddelanden som bör reageras på automatiskt" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n nätverk1[,nätverk2,...]] [<smeknamn>], visar din " +"notifieringslista eller lägger till någon till den" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" +"OP <smeknamn>, ger kanaloperatörsstatus till smeknamn (kräver " +"kanaloperatörsstatus)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" +"PART [<kanal>] [<orsak>], lämnar kanalen, standardalternativet är den " +"aktuella kanalen" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <smeknamn | kanal>, CTCP-pingar smeknamn eller kanal" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "" +"QUERY [-nofocus] <smeknamn>, öppnar ett nytt fönster för privata meddelanden " +"till någon" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<orsak>], kopplar från den aktuella servern" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <text>, skickar texten i rå form till servern" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<värd>] [<port>] [<lösenord>], kan anropas bara som /" +"RECONNECT för att återansluta till den aktuella servern eller med /RECONNECT " +"ALL för att återansluta till alla de öppna servrarna" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<värd>] [<port>] [<lösenord>] [<ssl>] " +"[<acceptera_ogiltigt_cert>], kan anropas bara som /RECONNECT för att " +"återansluta till den aktuella servern eller med /RECONNECT ALL för att " +"återansluta till alla de öppna servrarna" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <text>, skicka rå data till xchat på samma sätt som det tas emot från " +"irc-servern" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <text>, skickar texten till objektet i det aktuella fönstret" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <smeknamn> [<fil>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <värd> <port> <kanal>, ansluter och går in i en kanal" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <värd> <port> <kanal>, ansluter och går in i en kanal" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <värd> [<port>] [<lösenord>], ansluter till en server, " +"standardporten är 6667 för normala anslutningar, och 994 för ssl-anslutningar" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <värd> [<port>] [<lösenord>], ansluter till en server, standardporten " +"är 6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <variabel> [<värde>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<position>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<ämne>], ställer in ämnet om något anges, annars visar det aktuellt " +"ämne" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" +"\n" +"TRAY -f <tidsgräns> <fil1> [<fil2>] Blinka lådan mellan två ikoner.\n" +"TRAY -f <filnamn> Ställ in lådan till en fast ikon.\n" +"TRAY -i <nummer> Blinka lådan med en intern ikon.\n" +"TRAY -t <text> Ställ in verktygstips för lådan.\n" +"TRAY -b <titel> <text> Ställ in ballongtext för lådan." + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <mask> [<mask>...], tar bort bannlysning för angivna masker." + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <mask> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <namn>, glömmer en insticksmodul eller ett skript" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, öppnar en URL i din webbläsare" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <smeknamn1> <smeknamn2> etc, färgmärker smeknamn i " +"kanalens användarlista" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "" +"VOICE <smeknamn>, ger röststatus till någon (kräver kanaloperatörsstatus)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <meddelande>, skriver meddelandet i alla kanaler" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <meddelande>, skickar meddelandet till alla kanaloperatörer på den " +"aktuella kanalen" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Användning: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"Ingen hjälp tillgänglig för det kommandot.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Det finns inget sådant kommando.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Felaktiga argument i användarkommando.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "För många rekursiva användarkommandon, avbryter." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Okänt kommando. Prova /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "" +"Ingen \"xchat_plugin_init\"-symbol; är detta verkligen en xchat-" +"insticksmodul?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Är du säker på att detta är en SSL-kapabel server och port?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Kan inte slå upp värdnamnet %s\n" +"Kontrollera dina IP-inställningar!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Proxytraversering misslyckades.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Byter till nästa server i %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Varning: Teckentabellen \"%s\" är okänd. Ingen konvertering kommer att " +"tillämpas för nätverket %s." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 lades till i notifieringslistan." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Bannlysningslista:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tKan inte gå in i%C26 %B$1 %O(Du är bannlyst)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 är nu känd som $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 ställer in bannlysning på $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tKanalen $1 skapad på $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O tar bort halvkanaloperatörsstatusen från%C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O tar bort kanaloperatörsstatus från%C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O tar bort röststatus från%C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 ställer in undantag på $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O ger halvkanaloperatörsstatus till%C26 $2" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 ställer in inbjudan på $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UKanal Användare Ämne" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 ställer in läget $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Kanal $1 lägen: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O ger kanaloperatörsstatus till%C26 $2" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 tar bort undantag på $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 tar bort inbjudan på $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 tar bort kanallösenordet" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 tar bort användargräns" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 ställer in kanallösenordet till $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 ställer in kanalgränsen till $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 tar bort bannlysning av $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O ger röststatus till%C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Ansluten. Loggar in nu..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22Ansluter till $1 ($2) port $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21Anslutningen misslyckades. Fel: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tMottog ett CTCP $1 från $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tMottog ett CTCP $1 från $2 (till $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tMottog ett CTCP Sound $1 från $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tMottog ett CTCP Sound $1 från $2 (till $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tDCC CHAT till %C26$1%O avbruten." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC CHAT-anslutning etablerad till %C26$1 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tDCC CHAT till %C26$1%O avbruten ($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tMottog ett DCC CHAT-erbjudande från $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tErbjuder DCC CHAT till $1" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tErbjuder redan CHAT till $1" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$tDCC $1 anslutningsförsök till%C26 $2%O misslyckades (fel=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tMottog \"$1%O\" från $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 Typ Till/Från Status Storlek Pos Fil " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O." +"%010%C22*%O$tContents of packet: $2" +msgstr "" +"%C22*%O$tMottog en felaktigt utformad DCC-begäran från %C26$1%O." +"%010%C22*%O$tPaketets innehåll: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tErbjuder%C26 $1%O till%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tDet finns inget sådant DCC-erbjudande." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV%C26 $2%O till%C26 $1%O avbruten." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC RECV%C26 $1%O från%C26 $3%O klar %C30[%C26$4%O cps%C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC RECV-anslutning etablerad till%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV%C26 $1%O från%C26 $3%O misslyckades ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV: Kan inte öppna $1 för skrivning ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "%C22*%O$tFilen%C26 $1%C finns redan, sparar den som%C26 $2%O istället." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Ohar begärt att återuppta%C26 $2 %Cfrån%C26 $3%C." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC SEND%C26 $2%O till%C26 $1%O avbruten." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC SEND%C26 $1%O till%C26 $2%O klar %C30[%C26$3%O cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC SEND-anslutning etablerad till%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND%C26 $1%O till%C26 $2%O misslyckades. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Ohar erbjudit%C26 $2 %O(%C26$3 %Obytes)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Otill%C26 $3 %Cstannade - avbryter." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Otill%C26 $3 %Ogjorde timeout - avbryter." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 borttagen från notifieringslistan." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tKopplade från ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tHittade ditt IP: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O lades till i ignoreringslistan." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "Ignorering på %C26$1%O ändrades." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 Värdmask PRIV NOTI KANA CTCP DCC INBJ AVIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O togs bort från ignoreringslistan." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " Ignoreringslistan är tom." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "%C22*%O$tKan inte gå in i%C26 %B$1 %O(Kanalen kräver inbjudan)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tDu har bjudits in till%C26 $1%O by%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) gick in i $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$tKan inte gå in i%C26 %B$1 %O(Kräver lösenord)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 har sparkat ut $2 från $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$tDu har dödats av $1 ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD hoppades över." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 används redan. Försöker igen med $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$tSmeknamnet används redan. Använd /NICK för att försöka med ett " +"annat." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tDet finns ingen sådan DCC." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tIngen sådan process körs för tillfället" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tNotifieringslistan är tom." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Notifieringslista " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 användare på notifieringslistan." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tNotifiering: $1 är frånkopplad ($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tNotifiering: $1 är ansluten ($3)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) har lämnat $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) har lämnat $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tPingsvar från $1: $2 sekund(er)" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tInget pingsvar under $1 sekunder, kopplar från." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tEn process kör redan" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 har avslutat (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 ställer in lägena%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tSlår upp IP-numret för%C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22Ansluten." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22Slår upp $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tStoppade föregående anslutningsförsök (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29Ämnet för $1%C %C29is: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 har bytt ämne till: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29Ämnet för $1%C %C29satt av $2%C %C29den $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tOkänd värd. Du kanske har stavat den fel?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "%C22*%O$tKan inte gå in i%C26 %B$1 %O(Användargränsen nådd)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Användare på $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cär frånvarande %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OSlut på WHOIS-lista." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O inaktiv%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O inaktiv%C26 $2%O, påloggning:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" +"%C22*%O$t%C28[%O$1%C28] %Overklig användare@värd%C27 $2%O, riktig IP%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Pratar nu på $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tDu har sparkats ut från $2 av $3 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tDu har lämnat kanalen $3" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tDu har lämnat kanalen $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tDu bjuder in%C26 $1%O till%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tDu är nu känd som $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "Läste in logg från" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** AVSLUTADE LOGGANDE VID %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** PÅBÖRJADE LOGGANDE VID %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Kan inte öppna loggfiler för skrivande. Kontrollera\n" +" rättigheterna på %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Vänstermeddelande" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Högermeddelande" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "Smeknamnet på personen som går in" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "Kanalen som gås in i" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "Personens värddator" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Smeknamn" + +#: src/common/text.c:973 +msgid "The action" +msgstr "Åtgärden" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Lägestecken" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Identifierad text" + +#: src/common/text.c:980 +msgid "The text" +msgstr "Texten" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Meddelandet" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Gammalt smeknamn" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Nytt smeknamn" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Smeknamnet på personen som ändrade ämnet" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Ämne" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Kanal" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "Smeknamnet på den som sparkar ut" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "Personen som blir utsparkad" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "Kanalen" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "Orsaken" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "Smeknamnet på den person som lämnar" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "Tiden" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "Skaparen" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Smeknamn" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Orsak" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Värd" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "Vem det är från" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "Tiden i x.x-format (se nedan)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "Kanalen som det går till" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "Ljudet" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "Smeknamnet på personen" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "CTCP-händelsen" + +# I IRC-sammanhang är "keyword" ett lösenord för att komma in på en kanal. +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "Smeknamnet på personen som satte lösenordet" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "Lösenordet" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "Smeknamnet på personen som satte gränsen" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "Gränsen" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "Smeknamnet på personen som gav operatörsstatus" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "Smeknamnet på personen som har givits operatörsstatus" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "Smeknamnet på personen som har givits halvoperatörsstatus" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "Smeknamnet på personen som gav halvoperatörsstatus" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "Smeknamnet på personen som gav röststatus" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "Smeknamnet på personen som har givits röststatus" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "Smeknamnet på personen som gjorde bannlysningen" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "Bannlysningsmasken" + +# I IRC-sammanhang är "keyword" ett lösenord för att komma in på en kanal. +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "Smeknamnet som tog bort lösenordet" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "Smeknamnet som tog bort gränsen" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "Smeknamnet på personen som tog bort operatörsstatus" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "Smeknamnet på personen som har fråntagits operatörsstatus" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "Seknamnet på personen som fråntog halvoperatörsstatus" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Smeknamnet på personen som har fråntagits halvoperatörsstatus" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "Smeknamnet på personen som fråntog röststatus" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "Smeknamnet på personen som har fråntagits röststatus" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "Smeknamnet på personen som tog bort bannlysningen" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "Smeknamnet på personen som gjorde undantaget" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "Undantagsmasken" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "Smeknamnet på personen som tog bort undantaget" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "Smeknamnet på personen som gjorde inbjudan" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "Inbjudningsmasken" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "Smeknamnet på personen som tog bort inbjudan" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "Smeknamnet på personen som satte läget" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "Lägestecknet (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "Lägesbokstaven" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "Kanalen som det ställs in på" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Användarnamn" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Fullständigt namn" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Kanalmedlemskap/\"är en IRC-operatör\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Serverinformation" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Inaktivitetstid" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Påloggningstid" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Frånvaroskäl" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Meddelande" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Konto" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "Verklig användare@värd" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "Verklig IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Kanalnamn" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Text" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Servernamn" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Smeknamnet på personen som bjöd in dig" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Användare" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Smeknamnet används redan" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Smeknamnet provas" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Port" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Nätverk" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Lägessträng" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "IP-adress" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "DCC-typ" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Filnamn" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Målfilnamn" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Sökväg" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Position" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Storlek" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "DCC-sträng" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Antal notifieringsobjekt" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Gammalt filnamn" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Nytt filnamn" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Mottagare" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Värdmask" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Värdnamn" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "Paketet" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Sekunder" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Smeknamnet på personen som bjudits in" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Bannlysningsmask" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Vem som gjorde bannlysningen" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Bannlysningstid" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Fel vid tolkning av händelsen %s.\n" +"Läser in standardvärde." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"Kan inte läsa ljudfilen:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "Fjärrvärden stängde uttaget (socket)" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Uppkoppling nekas" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Ingen väg till värden" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Anslutningen gjorde time-out" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Kan inte tilldela den adressen" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Anslutningen nollställdes av motparten" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Ascension Island" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Förenade Arabemiraten" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Afghanistan" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Antigua och Barbuda" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Albanien" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Armenien" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Nederländska Antillerna" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Antarktis" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Argentina" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "Omvänd DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Samoa" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Österrike" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "Nato" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Australien" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Åland" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Azerbajdzjan" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Bosnien och Hercegovina" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Bangladesh" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Belgien" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Bulgarien" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Bahrain" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Företag" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Brunei" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Bolivia" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Brasilien" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Bahamas" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Bhutan" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Bouvetön" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Vitryssland" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Kanada" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Kokosöarna" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "Demokratiska republiken Kongo" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "Centralafrikanska republiken" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Kongo" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Schweiz" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Elfenbenskusten" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Cooköarna" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Chile" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Kamerun" + +#: src/common/util.c:898 +msgid "China" +msgstr "Kina" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Colombia" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Internic, kommersiellt" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Serbien och Montenegro" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Kuba" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Kap Verde" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Julön" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Cypern" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "Tjeckien" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Tyskland" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Djibouti" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Danmark" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Dominica" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "Dominikanska republiken" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Algeriet" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Ecuador" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Utbildningsväsende" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Estland" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Egypten" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Västsahara" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Spanien" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Etiopien" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Europeiska gemenskapen" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Finland" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Fiji" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Falklandsöarna" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Mikronesien" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Färöarna" + +#: src/common/util.c:928 +msgid "France" +msgstr "Frankrike" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Storbritannien" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Georgien" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Franska Guyana" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Brittiska kanalöarna" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Ghana" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Grönland" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Regering" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Guadeloupe" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Ekvatorialguinea" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Grekland" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Sydgeorgien och Södra Sandwichöarna" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Guinea-Bissau" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Guyana" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Heard- och McDonaldöarna" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Kroatien" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Ungern" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Indonesien" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Irland" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Israel" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Isle of Man" + +#: src/common/util.c:959 +msgid "India" +msgstr "Indien" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Informativ" + +#: src/common/util.c:961 +msgid "International" +msgstr "Internationellt" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Brittiskt territiorium i Indiska Oceanen" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Irak" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Iran" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Island" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Italien" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Jamaica" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Jordanien" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Japan" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Kenya" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Kirgizistan" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Kambodja" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Komorerna" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "St. Kitts och Nevis" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Nordkorea" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Sydkorea" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Kuwait" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Caymanöarna" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Kazakstan" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Libanon" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Sankt Lucia" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Liberia" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Litauen" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Luxemburg" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Lettland" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Libyen" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Marocko" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Monaco" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Moldavien" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "Förenta Staterna, medicinskt" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Madagaskar" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Marshallöarna" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Militärt" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Makedonien" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Myanmar (Burma)" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Mongoliet" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Macao" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Norra Marianeröarna" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Martinique" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Mauretanien" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Mauritius" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Maldiverna" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Mexiko" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Malaysia" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Moçambique" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Namibia" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Nya Kaledonien" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Nigeria" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Internic, nätverk" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Norfolköarna" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Nigeria" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Nederländerna" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Norge" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Nya Zeeland" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Internic, ideell organisation" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Polynesien" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Papua Nya Guinea" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Filippinerna" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Polen" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "St. Pierre och Miquelon" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Puerto Rico" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Palestinska territoriet" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Portugal" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Paraguay" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Qatar" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Réunion" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Rumänien" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "Gammaldags ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Ryska Federationen" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Rwanda" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Saudiarabien" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Solomonöarna" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Seychellerna" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Sudan" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Sverige" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Singapore" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "St. Helena" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Slovenien" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard och Jan Mayenöarna" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Slovakien" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Somalia" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Surinam" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "São Tomé och Principe" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Före detta USSR" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Syrien" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Swaziland" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Turks- och Caicosöarna" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Tchad" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Franska Sydterritorierna" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Thailand" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Tadzjikistan" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Östtimor" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Tunisien" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Turkiet" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Trinidad och Tobago" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Tanzania" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Ukraina" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Storbritannien" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "Förenta Staterna" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Uruguay" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Uzbekistan" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Vatikanstaten" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "St. Vincent och Grenadinerna" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Brittiska Jungfruöarna" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "Jungfruöarna (USA)" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Wallis- och Futunaöarna" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Jemen" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Jugoslavien" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Sydafrika" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Zambia" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Okänd" + +#: src/common/xchat.c:726 +msgid "_Open Dialog Window" +msgstr "_Öppna dialogfönster" + +#: src/common/xchat.c:727 +msgid "_Send a File" +msgstr "_Skicka en fil" + +#: src/common/xchat.c:728 +msgid "_User Info (WhoIs)" +msgstr "An_vändarinfo (Whois)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "_Lägg till i vännerlista" + +#: src/common/xchat.c:730 +msgid "O_perator Actions" +msgstr "O_peratörsåtgärder" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Ge kanaloperatörsstatus" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Ta kanaloperatörsstatus" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Ge röststatus" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Ta röststatus" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Sparka ut/Bannlys" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Sparka ut" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Bannlys" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "Sparka ut och bannlys" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Lämna kanal" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Gå in i kanal..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Ange kanal att gå in i:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Serverlänkar" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Pinga server" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Dölj version" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Ge op" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "Ta bort op" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "hejdå" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Ange orsak för att sparka ut %s:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Skickafil" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Dialog" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "VemÄr" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Skicka" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Chatta" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Töm" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "Kunde inte ansluta till sessionsbuss" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "Misslyckades med att färdigställa NameHasOwner" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "Misslyckades med att färdigställa kommando" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "fjärråtkomst" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "insticksmodul för fjärråtkomst via DBUS" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Kunde inte ansluta till sessionsbuss: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Misslyckades med att ta över %s: %s\n" + +#: src/fe-gtk/about.c:100 +msgid "About " +msgstr "Om" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "En IRC-klient för flera plattformar" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Teckenkarta" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "Inte ansluten." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Du måste välja några bannlysningar." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "Är du säker på att du vill ta bort alla bannlysningar i %s?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Mask" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "Från" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Datum" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Du kan endast öppna bannlysningslistan inne i kanalfliken." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: Bannlysningslista (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Ta bort" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Kapa" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Uppdatera" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Visar %d/%d användare i %d/%d kanaler." + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Välj ett namn på utfilen" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "_Gå in i kanalen" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "_Kopiera kanalnamn" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "Kopiera _ämnestext" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: Kanallista (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "_Sök" + +# Denna bör kontrolleras +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "_Hämta lista" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "Spara _lista..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "Visa endast:" + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "kanaler med" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "till" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "användare." + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "Leta i:" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "Kanalnamn" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "Söktyp:" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "Enkel sökning" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "Mönstermatchning (jokertecken)" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "Reguljärt uttryck" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Sök:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Skicka filen till %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Den filen kan inte återupptas." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"Kan inte komma åt fil: %s\n" +"%s.\n" +"Återupptagning inte möjlig." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"Filen i hämtningskatalogen är större än den fil som erbjudits. " +"Återupptagning är inte möjlig." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "Kan inte återuppta samma fil från två personer." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: Sändningar och hämtningar" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Status" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Fil" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "Beräknad tid" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Både och" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Sändningar" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "Hämtningar" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Detaljer" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Fil:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "Adress:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Avbryt" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Acceptera" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Återuppta" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Öppna mapp..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: DCC Chat-lista" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Mottaget" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Skickat" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "Starttid" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*NY*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "REDIGERA MIG" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Namn" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Kommando" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Flytta upp" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Flytta ned" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Avbryt" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Spara" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Lägg till ny" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Ta bort" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Sortera" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Hjälp" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "Anslut inte automatiskt till servrar" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "Använd en annan konfigurationskatalog" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "Läs inte automatiskt in några insticksmoduler" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "Visa katalog för automatisk inläsning av insticksmoduler" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "Visa katalog för användarkonfiguration" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Öppna en irc://server:port/kanal URL" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Startkommando:" + +#: src/fe-gtk/fe-gtk.c:132 +msgid "Open URL or execute command in an existing XChat" +msgstr "Öppna url eller kör kommando i en befintlig XChat" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Starta minimerad. Nivå 0=Normal 1=Ikonifierad 2=Aktivitetsfält" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "nivå" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Visa versionsinformation" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"Misslyckades med att öppna typsnitt:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "Sökbufferten är tom.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d byte" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Sändkö för nätverket: %d byte" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"Åtgärden Kör kommando kör datat i Data 1 som om det hade skrivits i " +"textfältet där du tryckte tangentkombinationen. Därför kan det innehålla " +"text (som kommer att skickas till kanalen/personen), kommandon eller " +"användarkommandon. När det körs behandlas \\n-tecken i Data 1 som avgränsare " +"mellan kommandon så att det är möjligt att köra mer än ett kommando. Om du " +"vill ha ett \\ i den verkliga texten anger du \\\\" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"Kommandot Byt sida växlar mellan sidor i flikhäftet. Ställ in Data 1 till " +"den sida som du vill växla till. Om Data 2 är inställt till någonting kommer " +"växlingen att vara relativ till nuvarande position" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"Kommandot Infoga i buffert kommer att infoga innehållet i Data 1 i fältet " +"där tangentkombinationen trycktes vid nuvarande markörposition" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"Kommandot Rulla sida rullar textwidgeten upp eller ner en sida eller en rad. " +"Om Data 1 är satt till Up, Down, +1 eller -1." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"Kommandot Ställ in buffert ställer in fältet där tangentkombinationen " +"trycktes till innehållet i Data 1" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"Kommandot Senaste kommando gör att fältet innehåller det senast angivna " +"kommandot - samma som att trycka uppåtpil i skalet" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"Kommandot Nästa kommando gör att fältet innehåller nästa kommando som angavs " +"- samma som att trycka nedåtpil i skalet" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Detta kommando ändrar texten i fältet för att komplettera ett inkomplett " +"smeknamn eller kommando. Om Data 1 är satt kommer dubbla tabulatortryck i en " +"sträng att välja det senaste smeknamnet, inte nästa" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Detta kommando rullar upp och ner i listan med smeknamn. Om Data 1 är satt " +"till någonting rullar det upp, annars rullar det ner" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Detta kommando kontrollerar det senast angivna ordet i fältet mot " +"ersättningslistan och ersätter det om det hittar en träff" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Detta kommando flyttar den främsta fliken ett steg till vänster" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Detta kommando flyttar den främsta fliken ett steg till höger" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Detta kommando flyttar den aktuella fliken ett steg till vänster" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Detta kommando flyttar den aktuella fliken ett steg till höger" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "Spara indataraden i historiken men skicka inte den till servern" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "" +"Det inträffade ett fel vid inläsning av tangentbindningskonfigurationen" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<ingen>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Modifierare" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Tangent" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Åtgärd" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: Tangentbordsgenvägar" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Skift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Data 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Data 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Fel vid öppnande av tangentkonfigurationsfil\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Okänt tangentnamn %s i konfigurationsfilen för tangentbindningar\n" +"Inläsningen avbröts, fixa %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Okänd åtgärd %s i konfigurationsfilen för tangentbindningar\n" +"Inläsningen avbröts, fixa %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Förväntade datarad (början Dx{:|!}) men fick:\n" +"%s\n" +"\n" +"Inläsningen avbröts, fixa %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"Konfigurationsfilen för tangentbindningar är trasig, inläsningen avbröts\n" +"Fixa %s/keybindings.conf\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "Kan inte skriva till den filen." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Kan inte läsa den filen." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Den masken finns redan." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Privat" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Notis" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Inbjudning" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Ta bort ignorering" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Ange mask att ignorera:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: Ignoreringslista" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Ignoreringsstatistik:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Kanal:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privat:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Notis:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Inbjudan:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "Lägg till..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "Kanalnamn för kort, försök igen." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: Anslutningen klar" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "Anslutning till %s klar." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"I serverlistfönstret, ingen kanal (chattrum) har angetts för att gå in i " +"automatiskt för detta nätverk." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "Vad vill du göra härnäst?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "_Ingenting, jag går in i en kanal senare." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "_Gå in i denna kanal:" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Om du vet namnet på kanalen du vill gå in i, ange den här." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "Ö_ppna kanallistfönstret." + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "Hämta kanallistan kan ta en minut eller två." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "_Visa alltid denna dialog efter anslutning." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Dialog med" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Ämnet för %s är: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Inget ämne är satt" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"Denna server har fortfarande %d kanaler eller dialoger associerade med den. " +"Stänga dem alla?" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "Avsluta XChat?" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "Fråga inte nästa gång." + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Du är ansluten till %i IRC-nätverk." + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "Är du säker på att du vill avsluta?" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "En del filöverföringar är fortfarande aktiva." + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "_Minimera till aktivitetsfält" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Infoga attribut eller färgkod" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Fet</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Understruken</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Normal" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Färgerna 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Färgerna 8-15" + +#: src/fe-gtk/maingui.c:1612 +msgid "_Settings" +msgstr "_Inställningar" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "_Logga till disk" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "_Läs om historik" + +#: src/fe-gtk/maingui.c:1617 +msgid "_Hide Join/Part Messages" +msgstr "_Dölj meddelanden om ingång/utgång" + +#: src/fe-gtk/maingui.c:1625 +msgid "_Extra Alerts" +msgstr "Ytterligare _larm" + +#: src/fe-gtk/maingui.c:1627 +msgid "Beep on _Message" +msgstr "Pip vid _meddelande" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "Blinka låd_ikonen" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "Blinka _verktygsraden" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +msgid "_Detach" +msgstr "_Frigör" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "S_täng" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "Användargränsen måste vara en siffra!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Ämnesskydd" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Inga meddelanden från utomstående" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Hemlig" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Kräver inbjudan" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Modererad" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Bannlysningslista" + +# I IRC-sammanhang är "keyword" ett lösenord för att komma in på en kanal. +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Lösenord" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Användargräns" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Visa/Dölj användarlista" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"Kan inte ställa in genomskinlig bakgrund!\n" +"\n" +"Du kanske använder en ickekompatibel fönster-\n" +"hanterare som inte stöds för tillfället.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Ange nytt smeknamn:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Värden okänd" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Verkligt namn:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Användare:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "Land:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Server:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "%u minuter sedan" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Senaste medd:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Frånvaromedd:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "%d smeknamn markerade." + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"Menyraden är nu dold. Du kan visa den igen genom att trycka F9 eller " +"högerklicka på en tom del av huvudtextrutan." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Öppna länk i webbläsare" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Kopiera markerad länk" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Gå in i kanalen" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Lämna kanal" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Rotera kanal" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "_Ta bort från favoriter" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "_Lägg till i favoriter" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: Användarmeny" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Redigera denna meny..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Hämta kanallista..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Användarkommandon - specialkoder:\n" +"\n" +"%c = aktuell kanal\n" +"%e = aktuellt nätverksnamn\n" +"%m = maskininformation\n" +"%n = ditt smeknamn\n" +"%t = tid/datum\n" +"%v = xchat-version\n" +"%2 = ord 2\n" +"%3 = ord 3\n" +"&2 = ord 2 till slutet på raden\n" +"&3 = ord 3 till slutet på raden\n" +"\n" +"Exempel:\n" +"/cmd nisse hej\n" +"\n" +"%2 blir då \"nisse\"\n" +"&2 blir då \"nisse hej\"." + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Knappar i användarlistan - specialkoder:\n" +"\n" +"%a = alla markerade smeknamn\n" +"%c = aktuell kanal\n" +"%e = aktuellt nätverksnamn\n" +"%h = markerade smeknamnets värdnamn\n" +"%m = datorinformation\n" +"%n = ditt smeknamn\n" +"%s = markerade smeknamnet\n" +"%t = tid/datum\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Dialogknappar - specialkoder:\n" +"\n" +"%a = alla markerade smeknamn\n" +"%c = aktuell kanal\n" +"%e = aktuellt nätverksnamn\n" +"%h = markerade smeknamnets värdnamn\n" +"%m = datorinformation\n" +"%n = ditt smeknamn\n" +"%s = markerade smeknamnet\n" +"%t = tid/datum\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"CTCP-svar - specialkoder:\n" +"\n" +"%d = data (hela ctcp-kommandot)\n" +"%e = aktuellt nätverksnamn\n" +"%m = datorinformation\n" +"%s = smeknamnet som skickade ctcp-kommandot\n" +"%t = tid/datum\n" +"%2 = ord 2\n" +"%3 = ord 3\n" +"&2 = ord 2 till slutet på raden\n" +"&3 = ord 3 till slutet på raden\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"URL-hanterare - specialkoder:\n" +"\n" +"%s = URL-strängen\n" +"\n" +"Genom att ange ett ! framför kommandot\n" +"indikerar du att kommandot ska skickas\n" +"till ett skal istället för XChat" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: Användardefinierade kommandon" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: Popupmeny i användarlista" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Ersätt med" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: Ersätt" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: URL-hanterare" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: Knappar i användarlista" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: Dialogknappar" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: CTCP-svar" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "Nätverksli_sta..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "_Ny" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Serverflik..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Kanalflik..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Serverfönster..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Kanalfönster..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "_Läs in insticksmodul eller skript..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "_Avsluta" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "_Visa" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "_Menyrad" + +#: src/fe-gtk/menu.c:1592 +msgid "_Topic Bar" +msgstr "Ämn_esrad" + +#: src/fe-gtk/menu.c:1593 +msgid "_User List" +msgstr "An_vändarlista" + +#: src/fe-gtk/menu.c:1594 +msgid "U_serlist Buttons" +msgstr "_Knappar i användarlista" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "_Lägesknappar" + +#: src/fe-gtk/menu.c:1597 +msgid "_Channel Switcher" +msgstr "_Kanalväxlare" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "_Flikar" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "T_räd" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "_Nätverksmätare" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Av" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Diagram" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "_Server" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "Koppla _från" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "Återa_nslut" + +#: src/fe-gtk/menu.c:1613 +msgid "Join a Channel..." +msgstr "Gå in i en kanal..." + +#: src/fe-gtk/menu.c:1614 +msgid "List of Channels..." +msgstr "Kanallista..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Märk som frånvarande" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "A_nvändarmeny" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "_Inställningar" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "_Inställningar" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Avancerat" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Automatisk ersättning..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "CTCP-svar..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Dialogknappar..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Tangentbordsgenvägar..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Texthändelser..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "URL-hanterare..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Användarkommandon..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Knappar i användarlista..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Popupmeny i användarlista..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_Fönster" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Bannlysningslista..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Teckentabell..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Direktchatt..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Filöverföringar..." + +#: src/fe-gtk/menu.c:1641 +msgid "Friends List..." +msgstr "Vännerlista..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Ignoreringslista..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Insticksmoduler och skript..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Rålogg..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "URL-fångare..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Återställ markörsrad" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "T_öm text" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Sök text..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Spara text..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_Hjälp" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "_Innehåll" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "Leta efter uppdateringar" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "_Om" + +#: src/fe-gtk/menu.c:2147 +msgid "_Attach" +msgstr "Fä_st" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Sågs senast" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Frånkopplad" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Aldrig" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "%d minuter sedan" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Ansluten" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Ange smeknamn att lägga till:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "Notifiera på dessa nätverk:" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "Kommaseparerad lista över nätverken tillåts." + +#: src/fe-gtk/notifygui.c:413 +msgid "XChat: Friends List" +msgstr "XChat: Vännerlista" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "Öppna dialog" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" +"Kan inte hitta \"notify-send\" för att öppna ballongdialoger.\n" +"Installera libnotify." + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "XChat: Ansluten till %u nätverk och %u kanaler" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "_Återställ" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "_Dölj" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "_Blinka vid" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "Kanalmeddelande" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "Privat meddelande" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "Färgmarkerat meddelande" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "_Ändra status" + +#: src/fe-gtk/plugin-tray.c:602 +msgid "_Away" +msgstr "_Borta" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "_Bakåt" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat: Färgmarkerat meddelande från: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat: %u färgmarkerade meddelanden, senaste från: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat: Nytt publikt meddelande från: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat: %u nya publika meddelanden." + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat: Privat meddelande från: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "XChat: %u privata meddelanden, senaste från: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat: Filerbjudande från: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "XChat: %u filerbjudanden, senaste från: %s (%s)" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Version" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Beskrivning" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Välj en insticksmodul eller ett skript att läsa in" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: Insticksmoduler och skript" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "_Läs in..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "_Glöm" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Spara som..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: Rålogg (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Töm rålogg" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "Fönstret som du öppnade detta sökfönster för finns inte längre." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "Sökning nådde slutet, hittades inte." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: Sök" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "_Matcha skiftläge" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "Sök _bakåt" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "_Sök" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Nytt nätverk" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Vill du verkligen ta bort nätverket \"%s\" och alla dess servrar?" + +#: src/fe-gtk/servlistgui.c:740 +msgid "#channel" +msgstr "#kanal" + +#: src/fe-gtk/servlistgui.c:850 +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: Favoritkanaler (gå automatiskt in i)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "Dessa kanaler kommer att du gå in i när du ansluter till %s." + +#: src/fe-gtk/servlistgui.c:906 +msgid "Key (Password)" +msgstr "Nyckel (Lösenord)" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "_Redigera" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "%s har tagits bort." + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "%s har lagts till." + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "Användarnamn och verkligt namn kan inte lämnas blanka." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: Redigera %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Servrar för %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Anslut endast till markerad server" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Gå inte igenom alla servrar när anslutningen avbryts." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Dina detaljer" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Använd global användarinformation" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "_Smeknamn:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Andra valet:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "An_vändarnamn:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "Verkligt _namn:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Ansluter" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Anslut automatiskt till detta nätverk vid uppstart" + +#: src/fe-gtk/servlistgui.c:1462 +msgid "Bypass proxy server" +msgstr "Kringgå proxyserver" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "Använd SSL för alla servrar på detta nätverk" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Acceptera ogiltigt SSL-certifikat" + +#: src/fe-gtk/servlistgui.c:1475 +msgid "_Favorite channels:" +msgstr "_Favoritkanaler:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "Kanaler att gå in i, åtskilda med kommatecken men inte med blanksteg!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Anslutningskommando:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Extra kommandon att köra efter anslutning. Om du behöver fler än en, ställ " +"in denna till LOAD -e <filnamn>, där <filnamn> är en textfil som är full med " +"kommandon att köra." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Nickserv-lösenord:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Om ditt smeknamn kräver ett lösenord, ange det här. Inte alla IRC-nätverk " +"har stöd för detta." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Serverlösenord:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Lösenord för servern, lämna blank om du är osäker." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Teckentabell:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: Nätverkslista" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Användarinformation" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Tredje valet:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Nätverk" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "Hoppa över nätverkslista vid uppstart" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "_Redigera..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "_Sortera" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" +"Sorterar nätverkslistan i alfabetisk ordning. Använd tangenterna SKIFT-UP " +"och SKIFT-DOWN för att flytta en rad." + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "_Anslut" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Utseende för textruta" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Typsnitt:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Bakgrundsbild:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Rulla tillbaka rader:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Färgade smeknamn" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Ge varje person på IRC en olik färg" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Dra in smeknamn" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Högerjustera smeknamn" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Genomskinlig bakgrund" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Visa markörrad" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Infoga en röd rad efter den senaste lästa texten." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Inställningar för genomskinlighet" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Röd:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Grön:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Blå:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Tidsstämplar" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Aktivera tidsstämplar" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Tidsstämplingsformat:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Se manualsidan för strftime för detaljer." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Ö" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "Senast sagda order" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Inmatningsfält" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Använd typsnittet och färgerna för textrutor" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Stavningskontroll" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Smeknamnskomplettering" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "Automatisk smeknamnskomplettering (utan tabulatortangent)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Suffix för smeknamnskomplettering:" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "Sortering för smeknamnskomplettering:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Inmatningskoder" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Tolka %nnn som ett ASCII-värde" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Tolka %C, %B som färg, fet, osv" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Ö, operatörer först" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Ö-A, operatörer sist" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Ö-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Osorterad" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "Vänster (övre)" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "Vänster (nedre)" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "Höger (övre)" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "Höger (nedre)" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "överst" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "nederst" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Dold" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Användarlista" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Visa värdnamn i användarlista" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Användarlistan sorteras efter:" + +#: src/fe-gtk/setup.c:205 +msgid "Show user list at:" +msgstr "Visa användarlista:" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Frånvarospårning" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "Spårar frånvarostatus för användare och markerar dem i en annan färg" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "På kanaler mindre än:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Åtgärd vid dubbelklick" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Fönster" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Flikar" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Alltid" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Endast begärda flikar" + +#: src/fe-gtk/setup.c:242 +msgid "Tree" +msgstr "Träd" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "Växlartyp:" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Öppna en extra flik för servermeddelanden" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Öppna en extra flik för servernotiser" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "Öppna en ny flik när du tar emot ett privat meddelande" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Sortera flikar i alfabetisk ordning" + +#: src/fe-gtk/setup.c:254 +msgid "Smaller text" +msgstr "Mindre text" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Fokusera nya flikar:" + +#: src/fe-gtk/setup.c:258 +msgid "Show channel switcher at:" +msgstr "Visa kanalväxlare:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Korta ner fliketiketter till:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "bokstäver." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Flikar eller fönster" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Öppna kanaler i:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Öppna dialogfönster i:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Öppna verktyg i:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "" +"Öppna DCC-, ignorerings-, notifieringsfönster osv. i flikar eller fönster?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "Nej" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Ja" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "Bläddra varje gång efter mapp att spara i" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Filer och kataloger" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Acceptera filerbjudanden automatiskt:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Spara hämtade filer i:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Flytta färdighämtade filer till:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Spara smeknamn i filnamn" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Nätverksinställningar" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Hämta min adress från IRC-servern" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Fråga IRC-servern efter din verkliga adress. Använd detta om du har en " +"adress av typen 192.168.*.*!" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "DCC-IP-adress:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Utge dig för att vara på denna adress när du erbjuder filer." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Första DCC-sändningsport:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Sista DCC-sändningsport:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!Lämna värdet noll vid portar för fullständigt intervall." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Maximal hastighet för filöverföringar (byte per sekund)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "En sändning:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Max. hastighet för en överföring" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "En hämtning:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Alla sändningar kombinerade:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Max. hastighet för alla filer" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Alla hämtningar kombinerade:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Alarm" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "Visa lådballonger vid:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "Blinka lådikonen vid:" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "Blinka verktygsraden vid:" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "Spela upp en ljudsignal vid:" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "Aktivera ikon för systemlåda" + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "Färgmarkerade meddelanden" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" +"Färgmarkerade meddelanden är sådana där ditt smeknamn nämns i, men även:" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "Extra ord att färgmarkera:" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "Smeknamn att inte färgmarkera:" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "Smeknamn att alltid färgmarkera:" + +#: src/fe-gtk/setup.c:347 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" +"Separera flera ord med kommatecken.\n" +"Jokertecken accepteras." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Standardmeddelanden" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Avsluta:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Lämna kanal:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Borta:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Borta" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Meddela frånvaromeddelanden" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Meddela dina frånvaromeddelanden till alla kanaler" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Visa frånvaro endast en gång" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Visa identiska frånvaromeddelanden endast en gång" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Avmarkera frånvaro automatiskt" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Avmarkerering av din frånvaro innan skickande av meddelanden" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Avancerade inställningar" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Fördröjning för automatisk återanslutning:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Visa MODE-kommandon i rå form" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Vemär vid notifiering" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" +"Skickar en /WHOIS när en användare som är i din notifieringslista ansluter" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Dölj meddelanden om ingång/lämnande" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Dölj meddelanden om ingång/lämnande som standard" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Öppna DCC-fönster automatiskt" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Sändningsfönster" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Mottagningsfönster" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Chattfönster" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Loggning" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "Visa historik från tidigare session" + +#: src/fe-gtk/setup.c:387 +msgid "Enable logging of conversations to disk" +msgstr "Aktivera loggning av konversationer till disk" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Loggfilsnamn:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Server %c=Kanal %n=Nätverk." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Infoga tidsstämplar i loggar" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Format för tidsstämpling av loggar:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Inaktiverad)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Alla anslutningar" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "Endast IRC-server" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "Endast DCC Get" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Din adress" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Bind till:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "Endast användbart för datorer med flera adresser." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Proxyserver" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Värdnamn:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Port:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Typ:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Använd proxy för:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Proxyautentisering" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Använd autentisering (endast MS Proxy, HTTP eller SOCKS5)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Använd autentisering (endast HTTP eller SOCKS5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Användarnamn:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Lösenord:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Välj en bildfil" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "Välj mapp för hämtade filer" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Välj typsnitt" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Bläddra..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Markera identifierade användare med:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Markera ej identifierade användare med:" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "Öppna datamapp" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Välj färg" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Textfärger" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "mIRC-färger:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Lokala färger:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Förgrund:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Bakgrund:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Markeringstext" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Gränssnittsfärger" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Nya data:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Markeringsrad:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Nytt meddelande:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Frånvaroanvändare:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Färgmarkera:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Händelse" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Ljudfil" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Välj en ljudfil" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Metod för ljuduppspelning:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "Externt _program för ljuduppspelning:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "_Externt program" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_Automatisk" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "Katalog för _ljudfiler:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Ljudfil:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "_Bläddra..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "_Spela upp" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Gränssnitt" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Textfält" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Användarlista" + +#: src/fe-gtk/setup.c:1703 +msgid "Channel switcher" +msgstr "Kanalväxlare" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Färger" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Chattande" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Allmänt" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Ljud" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Nätverksinställningar" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Filöverföringar" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Kategorier" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" +"Du kan inte placera trädet på övre eller undre delen!\n" +"Ändra till <b>Flikar</b>-layouten i <b>Visa</b>-menyn först." + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" +"En del inställningar ändrades som kräver en omstart för att börja gälla." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*VARNING*\n" +"Att automatiskt acceptera DCC till din\n" +"hemkatalog kan vara farligt och utnyttjas\n" +"av andra. Någon kan till exempel skicka\n" +"dig en .bash_profile" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: Inställningar" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Det uppstod ett fel vid tolkning av strängen" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Denna signal skickas endast %d argument, $%d är ogiltigt" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Skriv ut textfil" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Redigera händelser" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$-nummer" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Läs in från..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Testa allt" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: URL-fångare" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Töm lista" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Kopiera markerad URL" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Kopiera" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Spara lista till en fil" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d oppar, %d totalt" + +#~ msgid "" +#~ "Set per channel options\n" +#~ "CHANOPT CONFMODE ON|OFF - Toggle conf mode/showing of join and part " +#~ "messages\n" +#~ "CHANOPT COLORPASTE ON|OFF - Toggle color paste\n" +#~ "CHANOPT BEEP ON|OFF - Toggle beep on message\n" +#~ "CHANOPT TRAY ON|OFF - Toggle tray blink on message" +#~ msgstr "" +#~ "Ställ in alternativ per kanal\n" +#~ "CHANOPT CONFMODE ON|OFF - Växla konfläge/visa meddelanden för ingång och " +#~ "lämnande\n" +#~ "CHANOPT COLORPASTE ON|OFF - Växla färginklistring\n" +#~ "CHANOPT BEEP ON|OFF - Växla ljudsignal vid meddelande\n" +#~ "CHANOPT TRAY ON|OFF - Växla lådblinkning vid meddelande" + +#~ msgid "Direct client-to-client" +#~ msgstr "Direkt klient-till-klient" + +#~ msgid "Send File" +#~ msgstr "Skicka fil" + +#~ msgid "Offer Chat" +#~ msgstr "Erbjud chatt" + +#~ msgid "Abort Chat" +#~ msgstr "Avbryt chatt" + +#~ msgid "Userinfo" +#~ msgstr "Användarinformation" + +#~ msgid "Clientinfo" +#~ msgstr "Klientinformation" + +#~ msgid "Time" +#~ msgstr "Tid" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "Serveroperatör" + +#~ msgid "Kill this user" +#~ msgstr "Döda denna användare" + +#~ msgid "Mode" +#~ msgstr "Läge" + +#~ msgid "Give Half-Ops" +#~ msgstr "Ge halv-operatörsstatus" + +#~ msgid "Take Half-Ops" +#~ msgstr "Ta halv-operatörsstatus" + +#~ msgid "Ignore" +#~ msgstr "Ignorera" + +#~ msgid "Ignore User" +#~ msgstr "Ignorera användare" + +#~ msgid "UnIgnore User" +#~ msgstr "Avignorera användare" + +#~ msgid "Info" +#~ msgstr "Info" + +#~ msgid "Who" +#~ msgstr "Vem" + +#~ msgid "DNS Lookup" +#~ msgstr "DNS-uppslagning" + +#~ msgid "Trace" +#~ msgstr "Spårning" + +#~ msgid "UserHost" +#~ msgstr "AnvändareVärd" + +#~ msgid "External" +#~ msgstr "Extern" diff --git a/etc/wyatt8740/po/th.po b/etc/wyatt8740/po/th.po new file mode 100644 index 0000000..38c22ce --- /dev/null +++ b/etc/wyatt8740/po/th.po @@ -0,0 +1,5603 @@ +# Translation of xchat to Thai. +# Copyright (C) 2007 Free Software Foundation, Inc. +# This file is distributed under the same license as the xchat package. +# Seksan Poltree <seksan.poltree@gmail.com>, 2007. +# +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.8.4\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2007-12-13 00:21+0700\n" +"Last-Translator: Seksan Poltree <seksan.poltree@gmail.com>\n" +"Language-Team: Thai <translation-team-th@lists.sourceforge.net>\n" +"Language: th\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Thai\n" +"X-Poedit-Country: THAILAND\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "ไม่สามารถสร้าง ~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "ฉันไม่ว่าง" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "กำลังออก" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* เรียกใช้งาน IRC โดยเป็น root เป็นเรื่องไม่ฉลาด! คุณควร\n" +" สร้างบัญชีผู้ใช้อื่นสำหรับใช้ในเข้าสู่ระบบ.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "กำลังรอ" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "ทำงานอยู่" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "ล้มเหลว" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "เรียบร้อย" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "เชื่อมต่อ" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "ถูกยกเลิกกลางคัน" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "ไม่สามารถเข้าถึง %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "ข้อผิดพลาด" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s ได้เสนอ \"%s\". คุณต้องการยอมรับหรือไม่?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "ไม่มี DCCs ที่ทำงานอยู่\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "ใช่" + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "ไม่" + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "คุณกำลังถูก CTCP flooded จาก %s, ทำการเพิกเฉย %s\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "คุณกำลังถูก MSG flooded จาก %s, ทำการตั้งค่า gui_auto_open_dialog OFF.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s ออนไลน์\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s ออฟไลน์\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "ไม่มีแชนแนลที่ทำการเข้าร่วม. ลอง /join #<แชนแนล>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "ไม่ได้เชื่อมต่อ. ลอง /server <โฮสต์> [<พอร์ต>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "ทำเครื่องหมายว่าไม่อยู่แล้ว: %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "ทำเครื่องหมายว่ากลับมาแล้ว.\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "ฉันจำเป็นต้องมี /bin/sh เพื่อทำงาน!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "คำสั่งที่มี:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "คำสั่งที่ผู้ใช้นิยามขึ้น:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "คำสั่งที่ปลั๊กอินนิยามขึ้น:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "พิมพ์ /HELP <คำสั่ง> สำหรับรายละเอียดที่มากขึ้น, หรือ /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "อาร์กิวเมนต์ที่ไม่รู้จัก '%s' ถูกเพิกเฉย." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "ไม่พบปลั๊กอินใดๆ\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "ปลั๊กอินนั้นกำลังปฎิเสธการโหลดออก.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <ชื่อ> <ปฏิบัติการ>, เพิ่มปุ่มภายใต้รายชื่อผู้ใช้งาน" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <คำสั่ง>, ส่งคำสั่งไปยังทุกแชนแนลที่คุณเข้าอยู่" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHANL <คำสั่ง>, ส่งคำสั่งไปยังทุกแชนแนลที่คุณเข้าอยู่" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <คำสั่ง>, ส่งคำสั่งไปยังทุกเซิร์ฟเวอร์ที่คุณเข้าอยู่" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<เหตุผล>], ตั้งค่าให้คุณไม่อยู่" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "BACK, ตั้งค่าให้คุณกลับมา (ไม่ใช่ไม่อยู่)" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <มาสก์> [<รูปแบบการแบน>], ประกาศสั่งห้ามทุก ๆ คนที่ตรงกับมาสก์จากแชนแนลปัจจุบัน. " +"ถ้าพวกเขาอยู่ที่แชนแนลนี้แล้ว นี่จะไม่ได้เตะพวกเขาออกไป (จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <ตัวแปร> [<ค่า>]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "CLEAR [ALL|HISTORY], ล้างหน้าต่างข้อความ หรือประวัติคำสั่งปัจจุบัน " + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, ปิดหน้าต่าง/แท็บปัจจุบัน" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <รหัส|ไวลด์การ์ด>, ค้นหารหัสประเทศ, เช่น: au = ออสเตรเลีย" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <ชื่อเล่น> <ข้อความ>, ส่งข้อความ CTCP ไปยัง 'ชื่อเล่น', ข้อความโดยปกติได้แก่ VERSION " +"และ USERINFO" + +#: src/common/outbound.c:3516 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "CYCLE [<channel>], แยกแชนแนลปัจจุบันหรือที่เสนอให้ และกลับเข้าร่วมในทันที" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <ชื่อเล่น> - ยอมรับไฟล์ที่ได้รับการเสนอให้\n" +"DCC SEND [-maxcps=#] <ชื่อเล่น> [ไฟล์] - ส่งไฟล์ไปหาใครซักคน\n" +"DCC PSEND [-maxcps=#] <ชื่อเล่น> [ไฟล์] - ส่งไฟล์ซักไฟล์โดยใช้โหมด passive\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <ชื่อเล่น> - เสนอ DCC CHAT ให้กับใครซักคน\n" +"DCC PCHAT <ชื่อเล่น> - เสนอ DCC CHAT โดยใช้โหมด passive\n" +"DCC CLOSE <รูปแบบ> <ชื่อเล่น> <ไฟล์> ตัวอย่าง:\n" +" /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <ชื่อเล่น>, ลบสถานะ chanhalf-op จาก 'ชื่อเล่น' ในแชนแนลปัจจุบัน (จำเป็นต้องมี " +"chanop)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <ชื่อ>, ลบปุ่มภายใต้รายชื่อผู้ใช้" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <ชื่อเล่น>, ลบสถานะ chanop จาก 'ชื่อเล่น' ในแชนแนลปัจจุบัน (จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <nick>, สบสถานะประกาศจาก 'ชื่อเล่น' ในแชนแนลปัจจุบัน (จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, ตัดการเชื่อมต่อจากเซิร์ฟเวอร์" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <ชื่อเล่น|โฮสต์|ไอพี>, ค้นหาหมายเลขไอพีของผู้ใช้งาน" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <ข้อความ>, พิมพ์ข้อความแบบโลคอล" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <คำสั่ง>, เรียกใช้คำสั่ง. ถ้าใช้เครื่องหมาย -o " +"แล้วผลที่ได้จะถูกส่งไปยังแชนแนลปัจจุบัน, ไม่ก็จะถูกพิมพ์ไปยังกล่องข้อความปัจจุบัน" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, ส่ง SIGCONT ไปยังโพรเซส" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], ฆ่า exec ที่กำลังทำงานในวาระปัจจุบัน. ถ้าใช้เครื่องหมาย -9 โพรเซสจะถูก " +"SIGKILL" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, ส่ง SIGSTOP ไปยังโพรเซส" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, ส่งข้อมูลไปยังทางป้อนข้อมูลมาตรฐานของโพรเซส" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, ล้างคิวการส่งปัจจุบันของเซิร์ฟเวอร์" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <โฮสต์> [<พอร์ต>], พร็อกซี่ไปยังโฮต์, ค่าพอร์ตมาตรฐานเป็น 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <ชื่อเล่น> <รหัสผ่าน>, kill 'ชื่อเล่น' ที่ถูกโกสต์" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <ชื่อเล่น>, ให้สถานะ chanhalf-op กับ 'ชื่อเล่น' (จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <รหัสผ่าน>, ระบุตัวตนของคุณเองไปยังเซิร์ฟเวอร์ชื่อเล่น" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <มาสก์> <รูปแบบ..> <ตัวเลือก..>\n" +" มาสก์ - มาสก์ของโฮสต์ที่จะเพิกเฉย, เช่น: *!*@*.aol.com\n" +" รูปแบบ - ชนิดรูปแบบของข้อมูลที่จะเพิกเฉย, อย่างหนึ่งหรือทั้งหมดของ:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <ชื่อเล่น> [<แชนแนล>], เชิญชวนใครซักคนเข้าสู่แชนแนลหนึ่ง ๆ, โดยปกติคือแชนแนลปัจจุบัน " +"(จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <แชนแนล>, เข้าร่วม 'แชนแนล'" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "KICK <ชื่อเล่น>, เตะ 'ชื่อเล่น' ออกจากแชนแนลปัจจุบัน (จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <ชื่อเล่น>, แบนและเตะ 'ชื่อเล่น' ออกจากแชนแนลปัจจุบัน (จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, บังคับการตรวจสอบอย่างช้าใหม่" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <สตริง>, ค้นหา 'สตริง' ที่อยู่ในบัฟเฟอร์" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <ไฟล์>, โหลดปลั๊กอินหรือสคริป" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, Mass deop ของ chanhalf-ops ทั้งหมดในแชนแนลปัจจุบัน (จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, Mass deop ของ chanops ทั้งหมดในแชนแนลปัจจุบัน (จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <ปฏิบัติการ>, ส่งการปฏิบัติการไปยังแชนแนลปัจจุบัน (การปฏิบิการถูกเขียนขึ้นโดยบุคคลที่ 3, " +"อย่างเช่น /me jumps)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, เตะทุกคนออกจากแชนแนลปัจจุบันยกเว้นคุณ (จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, Mass op ของผู้ใช้ทั้งหมดในแชนแนลปัจจุบัน (จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <ชื่อเล่น> <ข้อความ>, ส่งข้อความส่วนตัว" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, แสดงรายชื่อชื่อเล่นบนแชนแนลปัจจุบัน" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <ชื่อเล่น> <ข้อความ>, ส่งประกาศ CTCP" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <ชื่อโฮต์> [<พอร์ต>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <ชื่อเล่น>, ตั้งชื่อเล่นของคุณ" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"OTICE <nick/channel> <message>, ส่งประกาศ. " +"ประกาศเป็นชนิดของข้อความที่ควรจะตอบสนองกลับอัตโนมัติ" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n เครือข่าย1[,เครือข่าย2,...]] [<ชื่อเล่น>], " +"แสดงรายการแจ้งเตือนของคุณหรือเพิ่มบางคนไปยังรายการ" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <ชื่อเล่น>, ให้สถานะ chanop กับ 'ชื่อเล่น' (จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<แชนแนล>] [<เหตุผล>], ออกจากแชนแนล, โดยปกติคือหนึ่งแชนแนลปัจจุบัน" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <nick | channel>, ส่ง CTCP เพื่อ ping ชื่อเล่นหรือแชนแนล" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "QUERY [-nofocus] <ชื่อเล่น>, เปิดหน้าต่างข้อความส่วนตัวกับใครบางคน" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<เหตุผล>], ตัดการเชื่อมต่อจากเซิร์ฟเวอร์ปัจจุบัน" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <ข้อความ>, ส่งข้อความในรูปแบบข้อมูลดิบไปยังเซิร์ฟเวอร์" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<โฮสต์>] [<พอร์ต>] [<รหัสผ่าน>], สามารถเรียกเพียง /RECONNECT " +"เพื่อที่จะทำการเชื่อมต่ออีกครั้งกับเซิร์ฟเวอร์ปัจจุบัน หรือด้วย /RECONNECT ALL " +"สำหรับทำการเชื่อมต่ออีกครั้งกับเซิร์ฟเวอร์ทั้งหมดที่เปิดอยู่" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<โฮสต์>] [<พอร์ต>] [<รหัสผ่าน>], สามารถถูกเรียกเพียง /RECONNECT " +"เพื่อที่จะทำการเชื่อมต่ออีกครั้งกับเซิร์ฟเวอร์ปัจจุบัน หรือด้วย /RECONNECT ALL " +"สำหรับทำการเชื่อมต่ออีกครั้งกับเซิร์ฟเวอร์ทั้งหมดที่เปิดอยู่" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "RECV <ข้อความ>, ส่งข้อมูลดิบไปยัง xchat, ตามที่ได้หากรับมาจากเซิร์ฟเวอร์ irc" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <ข้อความ>, ส่งข้อความไปยังวัตถุในหน้าต่างปัจจุบัน" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <ชื่อเล่น> [<ไฟล์>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <โฮสต์> <พอร์ต> <แชนแนล>, เชื่อมต่อและเข้าร่วมแชนแนล" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <โฮสต์> <พอร์ต> <แชนแนล>, เชื่อมต่อและเข้าร่วมแชนแนล" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <เครื่องแม่ข่าย> [<พอร์ต>] [<รหัสผ่าน>], เชื่อมต่อไปยังเซิร์ฟเวอร์. " +"โดยพอร์ตมาตรฐานสำหรับการเชื่อมต่อปกติคือ 6667, และ 9999 สำหรับการเชื่อมต่อโดยใช้ ssl" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <host> [พอร์ต>] [<รหัสผ่าน>], เชื่อมต่อไปยังเซิร์ฟเวอร์, พอร์ตมาตรฐานคือ 6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <ตัวแปร> [<ค่า>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<ตำแหน่ง>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "TOPIC [<หัวเรื่อง>], ตั้งหัวเรื่องถ้าบางคนได้รับมา, หรือแสดงหัวเรื่องปัจจุบัน" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" +"\n" +"TRAY -f <เวลาหมด> <ไฟล์1> [<ไฟล์2>] กระพริบถามระหว่างสองไอคอน.\n" +"TRAY -f <ชื่อไฟล์> ตั้งถามสำหรับไอคอนที่ถูกตรึง.\n" +"TRAY -i <ตัวเลข> กระพริบถาดด้วยไอคอนภายใน.\n" +"TRAY -t <ข้อความ> ตั้งค่าข้อความช่วยเหลือของถาด.\n" +"TRAY -b <ชื่อเรื่อง> <ข้อความ> ตั้งค่าบอลลูนของถาด." + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <mask> [<mask>...], ยกเลิกแบนสำหรับมาสก์ที่กำหนด." + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <มาสก์> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <ชื่อ>, โหลดปลั๊กอินหรือสคริปออกไป" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, เปิด URL ในบราวเซอร์ของคุณ" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <ชื่อเล่น1> <ชื่อเล่น2> etc, เน้นชื่อเล่น(s) ในรายชื่อผู้ใช้ของแชนแนล" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <ชื่อเล่น>, ให้สถานะประกาศกับใครบางคน (จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <ข้อความ>, เขียนข้อความไปยังแชนแนลทั้งหมด" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <ข้อความ>, ส่งข้อความไปยัง chanops ทั้งหมดในแชนแนลปัจจุบัน" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "วิธีใช้: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"ไม่มีข้อความช่วยเหลือสำหรับคำสั่งนั้น.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "ไม่ใช่คำสั่ง.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "อาร์กิวเมนต์ไม่ถูกต้องสำหรับคำสั่งผู้ใช้งาน.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "คำสั่งเรียกตัวเองซ้ำซ้อนมากเกินไป, ทำการยกเลิกกลางคัน." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "คำสั่งที่ไม่รู้จัก. ลอง /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "ไม่พบเครื่องหมาย xchat_plugin_init; นี่เป็นปลั๊กอินของ xchat จริง ๆ หรือไม่?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "คุณแน่ใจหรือว่านี่เป็นเซิร์ฟเวอร์และพอร์ต ที่สนับสนุนการทำงานของ SSL?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"ไม่สามารถวิเคราะชื่อของโฮสต์ %s\n" +"ตรวจสอบการตั้งค่าไอพีของคุณ!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Proxy traversal ล้มเหลว.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "วนไปยังเซิร์ฟเวอร์ถัดไปใน %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "คำเตือน: ไม่รู้จักชุดอักขระ \"%s\". ไม่มีการสนทนาที่จะถูกนำมาใช้กับเครือข่าย %s." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 ถูกเพิ่มไปยังรายการแจ้งเตือน." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 รายชื่อแบน:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tไม่สามารถเข้าร่วม%C26 %B$1 %O(คุณถูกแบนไว้)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 ขณะนี้ได้ถูกรู้จักเป็น $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 ตั้งค่าการแบนบน $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tแชนแนล $1 สร้างเมื่อ $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O ลบสถานะ half-operator ของแชนแนล จาก%C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O ลบสถานะผู้ควบคุมแชนแนลจาก%C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O ลบการประกาศจาก%C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 ตั้งค่า exempt บน $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O ให้สถานะ half-operator กับ%C26 $2" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 ตั้งค่าเชิญชวนบน $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%Uแชนแนล ผู้ใช้ หัวข้อ" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 ตั้งค่าโหมด $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22แชนแนล $1 โหมด: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O ให้สถานะผู้ควบคุมแชนแนลกับ%C26 $2" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 ลบ exempt บน $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 ลบการเชิญชวนบน $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 ลบคีย์เวิร์ดของแชนแนล" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 ลบขอบเขตของผู้ใช้" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 ตั้งค่าคีย์เวิร์ดไปเป็น $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 ตั้งค่าขีดจำกัดของแชนแนลเป็น $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 ลบการแบนบน $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O ให้การประกาศกับ%C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22เชื่อมด่อแล้ว. ขณะนี้กำลังเข้าสู่ระบบ..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22เชื่อมต่อไปยัง $1 ($2) port $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21การเชื่อมต่อล้มเหลว. ข้อผิดพลาด: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tได้รับ CTCP $1 จาก $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tได้รับ CTCP $1 จาก $2 (ไปยัง $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tได้รับเสียง CTCP $1 จาก $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tได้รับเสียง CTCP $1 จาก $2 (ไปยัง $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tDCC CHAT ไปยัง %C26$1%O ถูกยกเลิกกลางคัน." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC CHAT การเชื่อมต่อถูกสร้างไปยัง %C26$1 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tDCC CHAT ไปยัง %C26$1%O เสียหาย ($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tได้รับการเสนอ DCC CHAT จาก $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tทำการเสนอ DCC CHAT ไปยัง $1" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tได้ทำการเสนอ CHAT ไปยัง $1 แล้ว" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$tDCC $1 พยายามเชื่อมต่อไปยัง%C26 $2%O ล้มเหลว (err=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tได้รับ '$1%O' จาก $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 ชนิด ไปยัง/จาก สถานะ ขนาด ตำแหน่ง ไฟล์ " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O." +"%010%C22*%O$tContents of packet: $2" +msgstr "" +"%C22*%O$tได้รับการร้องขอ DCC ที่ผิดรูปแบบจาก %C26$1%O.%010%C22*%O$tเนื้อหาของแพ็กเก็ต: " +"$2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tทำการเสนอ%C26 $1%O ไปยัง%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tไม่มีการเสนอ DCC." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV%C26 $2%O ไปยัง%C26 $1%O ถูกยกเลิกกลางคัน." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC RECV%C26 $1%O จาก%C26 $3%O เสร็จสิ้น %C30[%C26$4%O cps%C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC RECV การเชื่อมต่อถูกสร้างขึ้นไปยัง%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV%C26 $1%O จาก%C26 $3%O ล้มเหลว ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV: ไม่สามารถเปิด $1 เพื่อการเขียนได้ ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "%C22*%O$tไฟล์%C26 $1%C ได้มีอยู่ก่อนแล้ว, บันทีกเป็น%C26 $2%O แทน." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Oได้ร้องขอเพื่อที่จะเริ่มใหม่%C26 $2 %Cจาก%C26 $3%C." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC SEND%C26 $2%O ไปยัง%C26 $1%O ถูกยกเลิกก่อนสำเร็จ." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O เสร็จสิ้น %C30[%C26$3%O cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC SEND การเชื่อมต่อถูกสร้างขึ้นไปยัง%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND%C26 $1%O ไปยัง%C26 $2%O ล้มเหลว. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Oได้เสนอ%C26 $2 %O(%C26$3 %Obytes)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oไปยัง%C26 $3 %Cถูกหยุดกลางคัน - ทำการยกเลิกกลางคัน." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oไปยัง%C26 $3 %Oหมดเวลา - ทำการยกเลิกกลางคัน." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 ลบจากรายการแจ้งเตือนแล้ว" + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tตัดการเชื่อมต่อ ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tพบไอพีของคุณ: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O ถูกเพิ่มไปยังรายการเพิกเฉย." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "การเพิกเฉยบน %C26$1%O เปลี่ยนไป." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "" +"%C24,18 มาสก์ของโฮสต์ PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O ลบจากรายการเพิกเฉยแล้ว." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " รายการเพิกเฉยว่างเปล่า." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "%C22*%O$tไมาสามารถเข้าร่วม%C26 %B$1 %O(แชนแนลนี้ต้องได้รับเชิญเท่านั้น)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tคุณได้ได้รับเชิญไปยัง%C26 $1%O by%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) ได้เข้าร่วม $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$tไม่สามารถเข้าร่วม%C26 %B$1 %O(ต้องการคีย์เวิร์ด)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 ได้เตะ $2 จาก $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$tคุณได้ถูก kill โดย $1 ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD ถูกข้ามไป." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 ได้ถูกใช้งานอยู่แล้ว. กำลังลองใหม่ด้วย $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "%C22*%O$tชื่อเล่นได้ถูกใช้งานอยู่แล้ว. ใช้ /NICK เพื่อที่จะลองอย่างอื่น." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tไม่มี DCC." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tไม่มีโปรเซสที่กำลังทำงานอยู่" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tรายการแจ้งเตือนว่างเปล่า." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B รายการแจ้งเตือน " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 ผู้ใช้ในรายการแจ้งเตือน." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tแจ้งเตือน: $1 ออฟไลน์ ($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tแจ้งเตือน: $1 ออนไลน์ ($3)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) ได้ออกจาก $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) ได้ออกจาก $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tการตอบรับการ ping จาก $1: $2 วินาที(s)" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tไม่มีการตอบรับการ ping เป็นเวลา $1 วินาที, กำลังตัดการเชื่อมต่อ." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tโปรเซสหนึ่งได้ทำงานอยู่แล้ว" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 ได้ออกจาก (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 ตั้งค่าโหมด%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tค้นหาหมายเลขไอพีสำหรับ%C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22เชื่อมต่อแล้ว." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22ค้นหา $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tหยุดการพยายามเชื่อมต่อก่อนหน้า (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29หัวข้อสำหรับ $1%C %C29is: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 ได้เปลี่ยนหัวข้อไปเป็น: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29หัวข้อสำหรับ $1%C %C29ตั้งโดย $2%C %C29ที่ $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tไม่รู้จักโฮสต์. บางทีคุณอาจสะกดผิดหรือเปล่า?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "%C22*%O$tไม่สามาระเข้าร่วม%C26 %B$1 %O(ถึงขีดจำกัดจำนวนผู้ใช้)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26ผู้ใช้ บน $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cไม่อยู่ %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %Oสิ้นสุดของรายการ WHOIS." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O ว่างอยู่%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O ว่างอยู่%C26 $2%O, เข้าระบบ:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %Oผู้ใช้จริง@โฮสต์%C27 $2%O, ไอพีจริง%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19กำลังพูดคุยบน $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tคุณได้ถูกเตะออกจาก $2 โดย $3 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tคุณได้ออกจากแชนแนล $3" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tคุณได้ออกจากแชนแนล $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tคุณได้เชิญชวน%C26 $1%O ไปยัง%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tตอนนี้คุณได้รับการรู้จักเป็น $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "โหลดบันทึกการทำงานจาก" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** จบการบันทึกการทำงานที่ %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** เริ่มบันทึกการทำงานที่ %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* ไม่สามารถเปิดบันทึกการทำงาน(s) เพื่อการเขียน. ตรวจสอบ\n" +" ตรวจสอบสิทธิการเข้าถึงบน %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "ข้อความทางซ้าย" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "ข้อความทางขวา" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "ชื่อเล่นของคนที่เข้าร่วม" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "แชนแนลที่ถูกเข้าร่วม" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "โฮสต์ของบุคคล" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "ชื่อเล่น" + +#: src/common/text.c:973 +msgid "The action" +msgstr "การปฏิบัติการ" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "ตัวหนังสือโหมด" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "ข้อความแสดงตัว" + +#: src/common/text.c:980 +msgid "The text" +msgstr "ข้อความ" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "ข้อความ" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "ชื่อเล่นเดิม" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "ชื่อเล่นใหม่" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "ชื่อเล่นของคนที่เปลี่ยนหัวข้อ" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "หัวข้อ" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "แชนแนล" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "ชื่อของคนที่เตะ" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "คนที่กำลังถูกเตะ" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "แชนแนล" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "เหตุผล" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "ชื่อเล่นของคนที่กำลังจากไป" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "เวลา" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "ผู้สร้าง" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "ชื่อเล่น" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "เหตุผล" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "โฮสต์" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "ใครที่มันมาจาก" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "เวลาในรูปแบบ x.x (ดูด้านล่าง)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "แชนแนลที่มันกำลังไป" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "เสียง" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "ชื่อเล่นของบุคคล" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "เหตุการณ์ CTCP" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "ชื่อเล่นของคนที่ตั้งค่ากุญแจ" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "กุญแจ" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "ชื่อเล่นของคนที่ตั้งค่าขีดจำกัด" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "ขีดจำกัด" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "ชื่อเล่นของคนที่ทำการ op'ing" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "ชื่อเล่นของคนที่ได้ถูก op" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "ชื่อเล่นของคนที่ได้ถูก halfop" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "ชื่อเล่นของคนที่ทำการ halfop" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "ชื่อเล่นของคนที่ทำการประกาศ" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "ชื่อเล่นของคนที่ได้ถูกประกาศ" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "ชื่อเล่นของคนที่ทำการแบน" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "มาสก์การแบน" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "ชื่อเล่นของคนที่ลบกุญแจ" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "ชื่อเล่นของคนที่ลบขีดจำกัด" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "ชื่อเล่นของคนที่ทำการ deop" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "ชื่อเล่นของคนที่ได้ทำการ deop" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "ชื่อเล่นของคนที่ทำการ dehalfop" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "ชื่อเล่นของคนที่ได้ทำการ dehalfop" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "ชื่อเล่นของคนที่ทำการ devoice" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "ชื่อเล่นของคนที่ได้ทำการ devoice" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "ชื่อเล่นของคนที่ทำการ unban" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "ชื่อเล่นของคนที่ทำการยกเว้น" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "มาสก์ที่ยกเว้น" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "ชื่อเล่นของคนที่ลบการยกเว้น" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "ชื่อเล่นของคนที่ทำการเชิญชวน" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "มาสก์เชิญชวน" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "ชื่อเล่นของคนที่ลบการเชิญชวน" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "ชื่อเล่นของคนที่ตั้งค่าโหมด" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "สัญญาณของโหมด (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "ตัวอักษรของโหมด" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "แชนแนลที่มันกำลังตั้งค่า" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "ชื่อผู้ใช้" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "ชื่อเต็ม" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "ความเป็นสมาชิกของแชนแนล/\"เป็นผู้จัดการ IRC คนหนึ่ง\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "ข้อมูลของเซิร์ฟเวอร์" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "เวลาว่าง" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "เวลาเข้าสู่ระบบ" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "เหตุผลที่ไม่อยู่" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "ข้อความ" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "บัญชี" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "ชื่อผู้ใช้@โฮสต์ จริง" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "ไอพีจริง" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "ชื่อแชนแนล" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "ข้อความ" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "ชื่อเซิร์ฟเวอร์" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "ชื่อเล่นของคนที่เชิญชวนคุณ" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "ผู้ใช้" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "ชื่อเล่นถูกใช้อยู่" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "ชื่อเล่นกำลังถูกลองใช้" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "ไอพี" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "พอร์ต" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "เครือข่าย" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "สตริงแสดงโหมด" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "ที่อยู่ไอพี" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "ชนิด DCC" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "ชื่อไฟล์" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "ชื่อไฟล์ปลายทาง" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "ชื่อเส้นทาง" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "ตำแหน่ง" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "ขนาด" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "ข้อความ DCC" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "หมายเลขของการแจ้งเตือนรายการ" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "ชื่อไฟล์เดิม" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "ชื่อไฟล์ใหม่" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "ตัวรับ" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "มาสก์ของโฮสต์" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "ชื่อโฮสต์" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "แพ็กเก็ต" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "วินาที" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "ชื่อของคนที่ได้ถูกเชิญ" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "มาสก์การแบน" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "ใครคนที่ตั้งการแบน" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "เวลาแบน" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"เกิดเหตุการณ์ข้อผิดพลาดในวิเคราะห์ %s.\n" +"โหลดค่ามาตรฐาน." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"ไม่สามารถอ่านไฟล์เสียง:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "โฮสต์ปลายทางปิดแชนแนลเชื่อมต่อ" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "การเชื่อมต่อถูกปฏิเสธ" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "ไม่มีเส้นทางไปยังโฮต์" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "การเชื่อมต่อหมดเวลา" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "ไม่สามารถกำหนดค่าที่อยู่นั้น" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "การเชื่อมต่อถูกตั้งใหม่โดยผู้เชื่อมต่อ" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "เกาะ Ascension" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "สหรัฐอาหรับอิมิเรตส์" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "อัฟกานิสถาน" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Antigua และ Barbuda" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "อัลบาเนีย" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "อาร์เมเนีย" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "อาร์เจนติน่า" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "รีเวิร์ส DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "ออสเตรีย" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "ออสเตรเลีย" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "อาร์เซอร์ไบจัน" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "เบลเยี่ยม" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "บัลแกเรีย" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "ยุ่งอยู่" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "โบลิเวีย" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "บราซิล" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "ภูฏาน" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "แคนาดา" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "คองโก" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "สวิซเซอร์แลนด์" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "เกาะ Cook" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "ชิลี" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "แคมารูน" + +#: src/common/util.c:898 +msgid "China" +msgstr "จีน" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "โคลัมเบีย" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "คิวบา" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "ไซปรัส" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "เยอรมันนี" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "เดนมาร์ก" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "โดมินิกา" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "สถาบันการศึกษา" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "อียิปต์" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "สเปน" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "ฟินแลนด์" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "ฟิจิ" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "" + +#: src/common/util.c:928 +msgid "France" +msgstr "ฝรั่งเศส" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "จอร์เจีย" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "กานา" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "กรีนแลนด์" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "" + +#: src/common/util.c:940 +msgid "Government" +msgstr "ราชการ" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "กรีซ" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "ฮ่องกง" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "อินโดนีเซีย" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "ไอร์แลนด์" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "อิสราเอล" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "" + +#: src/common/util.c:959 +msgid "India" +msgstr "อินเดีย" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "ข้อมูล" + +#: src/common/util.c:961 +msgid "International" +msgstr "นานาชาติ" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "อิรัก" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "อิหร่าน" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "ไอซ์แลนด์" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "อิตาลี" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "จอร์แดน" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "ญี่ปุ่น" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "เคนย่า" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "กัมพูชา" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "เกาหลีเหนือ" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "เกาหลีใต้" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "คูเวต" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "ลาว" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "ศรีลังกา" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "โมนาโก" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "" + +#: src/common/util.c:999 +msgid "Military" +msgstr "" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "มาลี" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "เมียนมาร์" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "มองโกเลีย" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "เม็กซิโก" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "มาเลเซีย" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "เครือข่าย Internic" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "ไนจีเรีย" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "นอรเวย์" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "เนปาล" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "นิวซีแลนด์" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "โอมาน" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "เปรู" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "ฟิลิปปินส์" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "ปากีสถาน" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "โปแลนด์" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "กาตาร์" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "โรมาเนีย" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "โรงเรียน ARPAnet เดิม" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "ซูดาน" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "สวีเดน" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "สิงคโปร์" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "ไทย" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "ตุรกี" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "ไต้หวัน" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "ยูเครน" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "อูกานดา" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "สหราชอาณาจักร" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "สหรัฐอเมริกา" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "เวียดนาม" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "เยเมน" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "แอฟริกาใต้" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "ไม่รู้จัก" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "เปิดหน้าต่างสนทนา" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "ส่งไฟล์" + +#: src/common/xchat.c:728 +#, fuzzy +msgid "_User Info (WhoIs)" +msgstr "ข้อมูลผู้ใช้(WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +#, fuzzy +msgid "O_perator Actions" +msgstr "ผู้ควบคุมการปฏิบัติการ" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "ให้ Ops" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "รับ Ops" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "ให้การประกาศ" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "รับการประกาศ" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "เตะ/แบน" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "เตะ" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "แบน" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "เตะแบน" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "ออกจากแชนแนล" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "เข้าใช้แชนแนล..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "ป้อนแชนแนลที่จะเข้าร่วม" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "การเชื่อมต่อเซิร์ฟเวอร์" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Ping เซิร์ฟเวอร์" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "ซ่อนเวอร์ชั่น" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Op" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "ลาก่อน" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "ป้อนเหตุผลที่จะเตะ %s:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "ส่งไฟล์" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "หน้าต่างสนทนา" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "ส่ง" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "คุยเล่น" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "ล้าง" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "ไม่สามารถเชื่อมต่อไปยัง session bus" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "ล้มเหลวในการจบ NameHasOwner" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "ล้มเหลวในการจบคำสั่ง" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "เข้าถึงระยะไกล" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "ปล๊กอินสำหรับการเข้าถึงระยะไกลโดยใช้ DBUS" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "ไม่สามารถเชื่อมต่อไปยัง session bus: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "ผิดพลาดในการร้องขอ %s: %s\n" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "เกี่ยว_กับ" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "โปรแกรมลูกข่าย IRC หลายแพลตฟอร์ม " + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "แผนผังตัวอักษร" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "ไม่ได้เชื่อมต่อ." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "คุณจะต้องเลือกคนที่ถูกแบน." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "แน่ใจหรือไม่ที่ต้องการจะลบทุกคนที่ถูกแบนไว้ใน %s?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "มาสก์" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "จาก" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "วันเวลา" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "คุณสามารถเปิดหน้าต่างรายการผู้ถูกแบนเมื่ออยู่ในแท็บแชนแนลเท่านั้น." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: รายการแบน (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "ลบ" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "ตัดให้สั้น" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "เรียกใหม่" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "กำลังแสดง %d/%d ผู้ใช้ บน %d/%d แชนแนล." + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "เลือกชื่อไฟล์เอาต์พุท" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "เข้าแชนแนล" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "คัดลอกชื่อแชนแนล" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "คัดลอกข้อความหัวข้อ" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: รายการแชนแนล (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "ค้น_หา" + +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "รายการ_ดาวน์โหลด" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "_บันทึกรายการ..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "แสดงเท่านั้น." + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "แชนแนลกับ" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "ไปยัง" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "ผู้ใช้" + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "ค้นหาใน:" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "ชื่อแชนแนล" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "ชนิดไฟล์:" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "ค้นหาอย่างง่าย" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "รูปแบบตรงกัน (ไวลด์การ์ด)" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "Regular Expression" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "ค้นหา:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "ส่งไฟล์ไปยัง %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "ไฟล์นั้นไม่สามารถเริ่มต่อได้" + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"ไม่สามารถเข้าถึงไฟล์: %s\n" +"%s.\n" +"การเชื่อมต่อไม่สามารถเป็นไปได้." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "ไฟล์ในไดเร็กทอรี่ดาวน์โหลดใหญ่กว่าไฟล์ที่ถูกเสนอ. การเริ่มต่อไม่สามารถเป็นไปได้." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "ไม่สามารถเริ่มต่อสำหรับไฟล์เดียวกันจากคนสองคน." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: อัพโหลดและดาวน์โหลด" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "สถานะ" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "ไฟล์" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "ทั้งคู่" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "อัพโหลด" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "ดาวน์โหลด" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "รายละเอียด" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "ไฟล์:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "ที่อยู่:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "ยกเลิกกลางคัน" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "ยอมรับ" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "เริ่มใหม่" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "เปิดโฟลเดอร์..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: รายการคุยเล่น DCC" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "รับ" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "ส่ง" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "เวลาเริ่ม" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*ใหม่*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "แก้ไขฉัน" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "ชื่อ" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "คำสั่ง" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "เลื่อนขึ้น" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "เลื่อนลง" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "ยกเลิก" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "บันทึก" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "เพิ่มใหม่" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "ลบ" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "เรียงลำดับ" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "ช่วยเหลือ" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "ไม่เชื่อมต่อไปยังเซิร์ฟเวอร์โดยอัตโนมัติ" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "ใช้ไดเร็กทอรี่การตั้งค่าต่างออกไป" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "ไม่โหลดปั๊กอินใด ๆ โดยอัตโนมัติ" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "แสดงไดเร็กทอรี่ปลั๊กอินที่โหลดอัตโนมัติ" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "แสดงไดเร็กทอรี่การตั้งค่าของผู้ใช้" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "เปิด URL irc://เซิร์ฟเวอร์:พอร์ต/แชนแนล" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "กระทำคำสั่ง:" + +#: src/fe-gtk/fe-gtk.c:132 +#, fuzzy +msgid "Open URL or execute command in an existing XChat" +msgstr "เปิด URL ใน XChat ที่มีอยู่" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "เริ่มต้นด้วยขนาดย่อ. ระดับ 0=ปกติ 1=เป็นไอคอน 2=ถาด" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "รดับ" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "แสดงข้อมูลเวอร์ชั่น" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"ล้มเหลวในการเปิดฟอนต์:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "การค้นหาบัฟเฟอร์ว่างเปล่า.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"ปฏิบัติการคำสั่ง Run Command จะดำเนินการตามข้อมูลในข้อมูล1 " +"ตามที่มันถูกพิมพ์ไปยังกล่องป้อนข้อมูลที่คุณกดคีย์เป็นอันดับคีย์. ดังนั้นมันสามารถบรรจุข้อความ " +"(ซึ่งจะถูกส่งไปยังแชนแนล/บุคคล), คำสั่ง หรือคำสั่งของผู้ใช้. เมื่อดำเนินการ \\n ตัวอักษรในข้อมูล1 " +"จะถูกใช้เพื่อแยกแยะคำสั่ง ดังนั้นมันเป็นไปได้ที่จะดำเนินการมากกว่าหนึ่งคำสั่ง. ถ้าคุณต้องการให้ \\ " +"ในข้อความจริง ๆ ถูกดำเนินการแล้วป้อน \\\\" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"คำสั่ง Change Page จะสลับระหว่างหน้าในสมุด. ตั้งค่าข้อมูล 1 ไปยังหน้าที่คุณต้องการสลับไป. " +"ถ้าข้อมูล 2 ถูกตั้งค่าเป็นค่าใด ๆ แล้วตัวสวิตช์จะสัมพันธ์กับตำแหน่งปัจจุบัน" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"คำสั่ง Insert in Buffer จะทำการเพิ่มเนื้อหาของข้อมูล 1 ไปยังตัวรับข้อมูลที่ที่ลำดับคีย์ได้ถูกกด " +"ที่ตำแหน่งปัจจุบันของเคอร์เซอร์" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"คำสั่ง Scroll Page เลื่อนส่วนประกอบที่เป็นข้อความขึ้นหรือลงหนึงหน้าหรือหนึ่งบรรทัด. ตั้งค่าข้อมูล 1 " +"ไปเป็นทั้ง ขึ้น, ลง, +1 หรือ -1." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"คำสั่ง Set Buffer ตั้งค่าตัวรับข้อมูลไปยังที่ ที่ลำดับของคีย์ที่ได้ถูกป้อนเข้ามาไปยังเนื้อหาของข้อมูล 1" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"คำสั่ง Last Command ตั้งค่าตัวรับข้อมูลไปยังคำสั่งล่าสุดที่ถูกป้อน - เช่นเดียวกับการกดลูกศรขึ้นในเชลล์" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"คำสั่ง Next Command ตั้งค่าตัวรับข้อมูลไปยังคำสั่งถัดไปที่ถูกป้อน - เช่นเดียวกับการกดลูกศรลงในเชลล์" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"คำสั่งนี้จะเปลี่ยนข้อความที่อยู่ในรายการป้อน เพื่อจะทำชื่อหรือคำสั่งที่ไม่เรียบร้อยให้สมบูรณ์. ถ้าข้อมูล 1 " +"ถูกตั้งค่า แล้วการแท็บคู่ในสตริงจะถูกเลือกในชื่อเล่นล่าสุด, ไม่ใช่ถัดไป." + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"คำสั่งนี้จะเลื่อนขึ้นหรือลงไปยังรายการชื่อเล่น. ถ้าข้อมูล1 ถูกตั้งไปเป็นอะไรก็ตามมันจะเลื่อนขึ้น, " +"ไม่อย่างนั้นจะเลื่อนลง" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"คำสั่งนี้ตรวจสอบคำล่าสุดที่ถูกป้อนไปยังตัวป้อน แทนที่จะเป็นรายการแทนที่ และแทนที่มันถ้าค้นพบสิ่งที่ตรงกัน" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "คำสั่งนี้ย้ายแท็บด้านหน้าไปทางซ้ายหนึ่งอันดับ" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "คำสั่งนี้ย้ายแท็บด้านหน้าไปทางขวาหนึ่งอันดับ" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "คำสั่งนี้ย้ายสมาชิกแท็บปัจจุบันไปทางซ้าย" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "คำสั่งนี้ย้ายสมาชิกแท็บปัจจุบันไปทางขวา" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "ใส่บรรทัดการป้อนเข้าไปยังประวัติแต่ไม่ต้องส่งไปยังเซิร์ฟเวอร์" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "มีปัญหาในการโหลดการตั้งค่าการผูกคีย์" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<none>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "ปรับ" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "คีย์" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "ปฏิบัติการ" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: แป้นพิมพ์ลัด" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "ข้อมูล 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "ข้อมูล 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "ไม่สามารถเปิดไฟล์ตั้งค่าคีย์\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"ไม่รู้จักชื่อคีย์ %s ในไฟล์ปรับแต่งการผูกคีย์\n" +"ยกเลิกการโหลดก่อนเสร็จสิ้น, กรุณาแก้ไข %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"ไม่รู้จักปฏิบัติการ %s ในไฟล์ปรับแต่งการผูกคีย์\n" +"ยกเลิกการโหลดก่อนเสร็จสิ้น, กรุณาแก้ไข %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"คาดหมายบรรทัดข้อมูล (เริ่มด้วย Dx{:|!}) แต่ได้:\n" +"%s\n" +"\n" +"ยกเลิกการโหลดก่อนเสร็จสิ้น, กรุณาแก้ไข %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"ไฟล์ปรับแต่งการผูกคีย์เสียหาย, ยกเลิกการโหลดก่อนเสร็จสิ้น\n" +"กรุณาแก้ไข %s/keybindings.conf\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "ไม่สามารถเขียนไฟล์นั้นได้" + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "ไม่สามารถอ่านไฟล์นั้นได้" + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "มาสก็นั้นมีอยู่แล้ว" + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "ส่วนตัว" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "ประกาศ" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "เชิญชวน" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "เลิกเพิกเฉย" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "ป้อนมาสก์เพื่อเพิกเฉย" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: รายการเพิกเฉย" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "สถิติการเพิกเฉย:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "แชนแนล:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "ส่วนตัว:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "ประกาศ:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "เชิญชวน:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "เพิ่ม..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "ชื่อแชนแนลสั้นเกินไป, ลองใหม่อีกครั้ง." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: การเชื่อมต่อเสร็จสมบูรณ์" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "การเชื่อมต่อไปยัง %s เสร็จสมบูรณ์." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"ในหน้าต่างรายชื่อเซิร์ฟเวอร์, ไม่มีแชนแนล(แชนแนลคุยเล่น)ที่ถูกป้อนเพื่อที่จะเข้าร่วมในเครือข่ายนี้." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "คุณอยากจะทำอะไรต่อไป?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "ไม่ทำอะไรเลย. ฉันจะเข้าแชนแนลทีหลัง" + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "เ_ข้าร่วมแชนแนลนี้" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "ถ้าคุณรู้ชื่อของแชนแนลที่คุณต้องการเข้าร่วม. ป้อนมันที่นี่." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "เปิ_ดหน้าต่างรายชื่อแชนแนล" + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "ร้องขอรายชื่อแชนแนลอาจใช้เวลาสองสามนาที." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "แสดงหน้าต่างสนทนานี้หลังจากการเชื่อมต่อ_ตลอด." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "การสนทนากับ" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "หัวข้อสำหรับ %s คือ: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "ไม่มีหัวข้อถูกตั้ง." + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "เซิร์ฟเวอร์นี้ยังคงมี %d แชนแนลหรือการสนทนาที่ถูกเชื่อมโยงด้วย. ต้องการปิดทั้งหมด?" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "ออกจาก XChat?" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "ไม่ต้องถามในครั้งหน้า." + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "คุณกำลังเชื่อมต่อไปยังเครือข่าย IRC %i ." + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "คุณแน่ใจแล้วหรือไม่ที่จะออก?" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "การโอนย้ายไฟล์บางไฟล์ยังคงทำงานอยู่." + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "_ย่อไปยังถาด" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "ใส่คุณลักษณะหรือรหัสสี" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>ตัวหนา</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>ขีดเส้นใต้</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "ปกติ" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "สี 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "สี 8-15" + +#: src/fe-gtk/maingui.c:1612 +#, fuzzy +msgid "_Settings" +msgstr "ตั้_งค่า" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "ซ่อนแชนแนลเข้าร่วม/ส่วนข้อความ" + +#: src/fe-gtk/maingui.c:1625 +#, fuzzy +msgid "_Extra Alerts" +msgstr "การแจ้งเตือน" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "บี๊บเมื่อมีข้อความ" + +#: src/fe-gtk/maingui.c:1628 +#, fuzzy +msgid "Blink Tray _Icon" +msgstr "เปิดการกระพริบถาดไอคอน:" + +#: src/fe-gtk/maingui.c:1629 +#, fuzzy +msgid "Blink Task _Bar" +msgstr "เปิดการกระพริบแถบงาน:" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +#, fuzzy +msgid "_Detach" +msgstr "_ถอดแท็บออก" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "_ปิด" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "ขีดจำกัดผู้ใช้ต้องเป็นตัวเลข!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "การป้องกันหัวข้อ" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "ไม่มีข้อความภายนอก" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "ลับเฉพาะ" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "รับเชิญเท่านั้น" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "ปรับปรุง" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "รายการแบน" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "คีย์เวิร์ด" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "ขีดจำกัดผู้ใช้" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "แสดง/ซ่อนรายการผู้ใช้" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"ไม่สามารถตั้งค่าความโปร่งใสของพื้นหลังได้!\n" +"\n" +"คุณอาจกำลังใช้ตัวจัดการหน้าต่าง\n" +"ปัจจุบันที่ไม่สนับสนุนการทำงาน\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "ป้อนชื่อเล่นใหม่:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "ไม่รู้จักโฮสต์" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "ชื่อจริง" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "ผู้ใช้:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "ประเทศ:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "เซิร์ฟเวอร์:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "ผ่านมาแล้ว %u นาที" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "ข้อความล่าสุด:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "ข้อความไม่อยู่:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"แถบเมนูตอนนี้ได้ซ่อนอยู่. คุณสามาระแสดงมันอีกครั้งโดนการกด F9 หรือ คลิกขวา " +"ในที่ว่างของพื้นที่ข้อความหลัก" + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "เปิดลิงค์ในบราวเซอร์" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "คัดลอกลิงค์ที่เลือก" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "เข้าร่วมแชนแนล" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "ออกจากแชนแนล" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "หมุนวนแชนแนล" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: เมนูผู้ใช้" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "แก้ไขเมนูนี้" + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "เรียกข้อมูลรายการแชนแนล..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"User Commands - รหัสพิเศษ:\n" +"\n" +"%d = ข้อมูล (ctcp ทั้งหมด)\n" +"%e = ชื่อเครือข่ายปัจจุบัน\n" +"%m = รายละเอียดเครื่อง\n" +"%s = ชื่อเล่นของคนที่ส่ง ctcp\n" +"%t = เวลา/วัน\n" +"%v = เวอร์ชั่นของ xchat%2 = คำที่ 2\n" +"%3 = คำที่ 3\n" +"&2 = คำที่ 2 ไปยังท้ายบรรทัด\n" +"&3 = คำที่ 3 ไปยังท้ายบรรทัด\n" +"\n" +"เช่น:\n" +"/cmd john hello\n" +"\n" +"%2 อาจจะเป็น \"john\"\n" +"&2 อาจจะเป็น \"john hello\"." + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"ปุ่มรายชื่อผู้ใช้ - รหัสพิเศษ:\n" +"\n" +"%a = ทุกชื่อเล่นที่เลือก\n" +"%c = แชนแนลปัจจุบัน\n" +"%e = ชื่อเครือข่ายปัจจุบัน\n" +"%h = ชื่อโฮสต์ของชื่อเล่นที่เลือก\n" +"%m = ข้อมูลเครื่อง\n" +"%n = ชื่อเล่นของคุณ\n" +"%s = ชื่อเล่นที่เลือก\n" +"%t = เวลา/วัน\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"ปุมสนทนา - รหัสพิเศษ:\n" +"\n" +"%a = ทุกชื่อเล่นที่เลือก\n" +"%c = แชนแนลปัจจุบัน\n" +"%e = ชื่อเครือข่ายปัจจุบัน\n" +"%h = ชื่อโฮสต์ของชื่อเล่นที่เลือก\n" +"%m = ข้อมูลเครื่อง\n" +"%n = ชื่อเล่นของคุณ\n" +"%s = ชื่อเล่นที่เลือก\n" +"%t = เวลา/วัน\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"การตอบรับ CTCP - รหัสพิเศษ:\n" +"\n" +"%d = ข้อมูล (ctcp ทั้งหมด)\n" +"%e = ชื่อเครือข่ายปัจจุบัน\n" +"%m = รายละเอียดเครื่อง\n" +"%s = ชื่อเล่นของคนที่ส่ง ctcp\n" +"%t = เวลา/วัน\n" +"%2 = คำที่ 2\n" +"%3 = คำที่ 3\n" +"&2 = คำที่ 2 ไปยังท้ายบรรทัด\n" +"&3 = คำที่ 3 ไปยังท้ายบรรทัด\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"ตัวจัดการ URL - รหัสพิเศษ:\n" +"\n" +"%s = สตริง URL \n" +"\n" +"เติม ! ด้านหน้าของคำสั่ง\n" +"เพื่อแสดงว่ามันจะถูกส่งไปยัง\n" +"เชลล์แทนที่จะเป็น XChat" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: คำสั่งที่ผู้ใช้นิยามขึ้น" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: เมนูป็อบอัพรายชื่อผู้ใช้" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "แทนที่ด้วย" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: แทนที่" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: ตัวจัดการ URL" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: ปุ่มรายการผู้ใช้" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: ปุ่มสนทนา" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: การตอบรับ CTCP" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "_รายการเครือข่าย" + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "สร้างให_ม่" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "แท็บเซิร์ฟเวอร์..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "แท็บแชนแนล..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "หน้าต่างเซิร์ฟเวอร์..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "หน้าต่างแชนแนล..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "โหล_ดปลั๊กอินหรือสคริป..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "_ออก" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "_มุมมอง" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "แถบเ_มนู" + +#: src/fe-gtk/menu.c:1592 +msgid "_Topic Bar" +msgstr "แถ_บหัวข้อ" + +#: src/fe-gtk/menu.c:1593 +msgid "_User List" +msgstr "รา_ยการผู้ใช้" + +#: src/fe-gtk/menu.c:1594 +msgid "U_serlist Buttons" +msgstr "ปุ่ม_รายการผู้ใช้" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "ปุ่มโหม_ด" + +#: src/fe-gtk/menu.c:1597 +msgid "_Channel Switcher" +msgstr "ตัว_สวิตช์แชนแนล" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "แท็_บ" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "ต้_นไม้" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "ตัว_วัดเครือข่าย" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "ปิด" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "กราฟ" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "เ_ซิร์ฟเวอร์" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "_ตัดการเชื่อมต่อ" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "เชื่อมต่อให_ม่" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "เข้าใช้แชนแนล..." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "เข้าใช้แชนแนล..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "ตั้งเครื่องหมายว่าไม่อยู่" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "เ_มนูผู้ใช้" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "ตั้_งค่า" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "ปรั_บแต่ง" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "ขั้นสูง" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "แทนที่อัตโนมัติ..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "การตอบรับCTCP..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "ปุ่มสนทนา" + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "แป้นพิมพ์ลัด..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "เหตุการณ์ข้อความ..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "ตัวจัดการURL..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "คำสั่งผู้ใช้..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "ปุ่มรายการผู้ใช้..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "ป๊อปอัพรายการผู้ใช้..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_หน้าต่าง" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "รายการแบน..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "แผนผังตัวอักษร..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "คุยเล่นโดยตรง..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "การโอนย้ายไฟล์..." + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "รายการแบน..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "รายการเพิกเฉย..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "ปลั๊กอินและสคริป..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "ข้อมูลดิบบันทึกระบบ..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "ตัวดักจับ URL..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "ตั้งค่าเส้นสัญลักษณ์ใหม่" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "_ล้างข้อความ" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "ค้นหาข้อความ..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "บันทึกข้อความ..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_ช่วยเหลือ" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "เ_นื้อหา" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "เกี่ยว_กับ" + +#: src/fe-gtk/menu.c:2147 +#, fuzzy +msgid "_Attach" +msgstr "_ผูกติดหน้าต่าง" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "เห็นล่าสุด" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "ออฟไลน์" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "ไม่เลย" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "ผ่านมา %d นาทีแล้ว" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "ออนไลน์" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "ป้อนชื่อเล่นที่จะเพิ่ม:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "แจ้งเตือนบนเครือข่ายนี้" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "ยอมรับรายการเครือข่ายที่แยกด้วยจุลภาค." + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "XChat: รายการเพิกเฉย" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "เปิดการสนทนา" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" +"ไม่พบ 'notify-send' เพื่อเปิดบอลลูนแจ้งเตือน.\n" +"กรุณาลง libnotify." + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "XChat: เชื่อมต่อไปยังเครือข่าย %u และแชนแนล %u " + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "_คืนค่า" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "_ซ่อน" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "เปิดการกระ_พริบ" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "ข้อความของแชนแนล" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "ข้อความส่วนตัว" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "ข้อความที่ถูกเน้น" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "ไม่อยู่" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat: ข้อความที่ถูกเน้นจาก: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat: %u ข้อความที่ถูกเน้น, ล่าสุดจาก: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat: ข้อความสาธารณะใหม่จาก: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat: %u ข้อความสาธารณะใหม่." + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat: ข้อความส่วนตัวจาก: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "XChat: %u ข้อความส่วนตัว, ล่าสุดจาก: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat: เสนอไฟล์จาก: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "XChat: %u เสนอไฟล์, ล่าสุดจาก: %s (%s)" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "เวอร์ชั่น" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "คำอธิบาย" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "เลือกปลั๊กอินหรือสคริปที่จะโหลด" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: ปลั๊กอินและสคริป" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "โห_ลด" + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "เ_ลิกโหลด" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "บันทึกเป็น..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: ข้อมูลดิบของบันทึกระบบ (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "ล้างข้อมูลดิบของบันทึกระบบ" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "หน้าต่างที่คุณเปิดการค้นหานี้ไม่ได้มีอะไรอยู่เลย." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "การค้นหาถึงส่วนท้าย, ไม่พบ." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: การค้นหา" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "ตัวเล็กใหญ่_ตรงกัน" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "ค้นหา_ย้อนกลับ" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "_ค้นหา" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "เครือข่ายใหม่" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "จะลบ \"%s\" และเซิร์ฟเวอร์ทั้งหมดจริง ๆ หรือ?" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "แชนแนล" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: รายการแชนแนล (%s)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "รหัสผ่าน:" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "แก้ไ_ข" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "ชื่อผู้ใช้และชื่อจริงไม่สามารที่จะปล่อยว่างได้" + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: แก้ไข %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "เซิร์ฟเวอร์สำหรับ %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "เชื่อมต่อไปยังเซิร์ฟเวอร์ที่เลือกเท่านั้น" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "ไม่ต้องวนไปยังทุกเซิร์ฟเวอร์เมื่อการเชื่อมต่อล้มเหลว." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "รายละเอียดของคุณ" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "ใช้ข้อมูลโดยรวมของผู้ใช้" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "_ชื่อเล่น:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "ตัวเลือกอันดับสอง:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "_ชื่อผู้ใช้:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "ชื่อ_จริง:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "การเชื่อมต่อ" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "เชื่อมต่อไปยังเครือข่ายนี้อัตโนมัติเมื่อเปิดโปรแกรม" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "ใช้เซิร์ฟเวอร์พร็อกซี่" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "ใช้ SSL สำหรับทุกเซิร์ฟเวอร์บนเครือข่ายนี้" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "ไดั้รับหนังสือรับรอง SSL ที่ไม่ถูกต้อง" + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "ออกจากแชนแนล:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "แชนแนลที่จะเข้าร่วม, แยกด้วยจุลภาค, แต่ไม่ใช่ด้วยการเว้นว่าง!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "คำสั่งเชื่อมต่อ:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"คำสั่งเพิ่มเติมที่จะเรียกให้ทำหลังจากทำการเชื่อมต่อ. ถ้าคุณต้องการมากกว่าหนึ่ง, ตั้งค่านี้ LOAD -e " +"<ชื่อไฟล์>, เมื่อ <ชื่อไฟล์> คือไฟล์ข้อความที่เก็บคำสั่งต่าง ๆ ที่จะเรียกให้ทำงานเอาไว้" + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "รหัสผ่านเซิร์ฟเวอร์ชื่อเล่น:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "ถ้าชื่อเล่นของคุณต้องการรัสผ่าน, ป้อนมันที่นี่. ไม่ใช่ทุกเครือข่าย IRC ที่สนับสนุน." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "รหัสผ่านเซิร์ฟเวอร์:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "รหัสผ่านสำหรับเซิร์ฟเวอร์, ถ้าไม่เน่ใจ, ปล่อยว่างไว้." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "ชุดอักขระ:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: รายการเครือข่าย" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "รายละเอียดผู้ใช้" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "ตัวเลือกอันดับสาม:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "เครือข่าย" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "ข้ามรายชื่อเครือข่ายตอนเปิดโปรแกรม" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "แก้ไ_ข..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "เ_รียงลำดับ" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" +"เรียงรายชื่อเครือข่ายตามตัวอักษร. ใช้ปุ่ม SHIFT-UP และ SHIFT-DOWN เพื่อที่จะเคลื่อนแถว." + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "เ_ชื่อมต่อ" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "การแสดงกล่องข้อความ" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "ฟอนต์:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "รูปพื้นหลัง:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "เส้นเลื่อนกลับ:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "ใช้ชื่อเล่นเป็นสี" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "ให้แต่ละคนบน IRC มีสีต่างกัน" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "ย่อหน้าชื่อเล่น" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "ตั้งชื่อเล่นให้ชิดขวา" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "ทำการโปร่งใสพื้นหลัง" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "แสดงเส้นลัญลักษณ์" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "ใส่เส้นสีแดงหลังจากข้อความล่าสุดที่อ่าน." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "ตั้งค่าความโปร่งใส" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "สีแดง:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "สีเขียว:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "สีน้ำเงิน:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "การประทับเวลา" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "เปิดการประทับเวลา" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "รูปแบบการประทับเวลา" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "ดู manpage ของ strftime สำหรับรายละเอียด." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "อันดับการพูดคุยล่าสุด" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "กล่องรับข้อมูล" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "ใช้กล่องแถบฟอนต์และสี" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "ตรวจสอบการสะกด" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "การเติมเต็มชื่อเล่น" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "เติมเต็มชื่อเล่นโดยอัตโนมัติ (โดยไม่มีคีย์ TAB)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "ส่วนต่อท้ายการเติมเต็มชื่อเล่น" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "การลำดับการเติมเต็มชื่อเล่น" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "รหัสกล่องรับข้อมูล" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "แปลง %nnn เป็นค่า ASCII" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "แปลง %C, %B เป็นสี, ตัวหนา และอื่น ๆ" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, Ops ก่อน" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, Ops ทีหลัง" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "ไม่เรียง" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "ซ้าย(ด้านบน)" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "ซ้าย(ด้านล่าง)" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "ขวา(ด้านบน)" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "ขวา(ด้านล่าง)" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "บน" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "ล่าง" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "ซ่อน" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "รายชื่อผู้ใช้" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "แสดงชื่อโฮสต์ในรายชื่อผู้ใช้" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "เรียงรายชื่อผู้ใช้ด้วย:" + +#: src/fe-gtk/setup.c:205 +msgid "Show user list at:" +msgstr "แสดงรายชื่อผู้ใช้ที่:" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "ติดตามการไม่อยู่" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "ติดตามสถานะไม่อยู่ของผู้ใช้และทำเครื่องหมายพวกเขาในสีที่แตกต่างกัน" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "ในแชนแนลที่เล็กกว่า:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "ปฏิบัติการเมื่อดับเบิ้ลคลิก" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "หน้าต่าง" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "แท็บ" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "ตลอดเวลา" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "แท็บที่ร้องขอเท่านั้น" + +#: src/fe-gtk/setup.c:242 +#, fuzzy +msgid "Tree" +msgstr "ต้_นไม้" + +#: src/fe-gtk/setup.c:249 +#, fuzzy +msgid "Switcher type:" +msgstr "ชนิดไฟล์:" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "เปิดแท็บพิเศษสำหรับข้อความจากเซิร์ฟเวอร์" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "เปิดแท็บพิเศษสำหรับการประกาศจากเซิร์ฟเวอร์" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "เปิดแท็บใหม่เมื่อคุณได้รับข้อความส่วนตัว" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "เรียงแท็บตามตัวอักษร" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "แท็บเล็ก" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "ให้ความสนใจแท็บใหม่:" + +#: src/fe-gtk/setup.c:258 +msgid "Show channel switcher at:" +msgstr "แสดงตัวสวิตช์แชนแนลที่:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "ย่อป้ายชื่อแท็บเป็น:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "ต้วหนังสือ." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "แท็บหรือหน้าต่าง" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "เปิดแชนแนลใน:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "เปิดหน้าต่างสนทนาใน:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "เปิดส่วนอรรถประโยชน์ใน:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "เปิด DDC, การเพิกเฉย, การแจ้งเตือน อื่น ๆ, ในแท็บหรือหน้าต่าง?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "ไม่" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "ใช่" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "มองหาโฟลเดอร์ที่บันทึกทุกครั้ง" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "ไฟล์และไดเร็กทอรี่" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "ยอมรับไฟล์ที่ได้รับการเสนอให้อัตโนมัติ:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "ดาวน์โหลดไฟล์ไปยัง:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "ย้ายไฟล์ที่เสร็จแล้วไปที่:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "บันทึกชื่อเล่นในชื่อไฟล์" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "ตั้งค่าเครือข่าย" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "รับที่อยู่ของฉันจากเซิร์ฟเวอร์ IRC" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "ร้องขอเซิร์ฟเวอร์ IRC ด้วยที่อยู่จริงของคุณ. ใช้นี่ถ้าคุณมีที่อยู่เป็น 192.168.*.* !" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "ที่อยู่ไปพีของ DDC:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "อ้างถึงคุณด้วยที่อยู่นี้เมื่อทำการเสนอไฟล์." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "พอร์ตสำหรับส่ง DCC แรก:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "พอร์ตสำหรับส่ง DCC สุดท้าย:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!ปล่อยพอร์ตไว้ที่ศูนย์สำหรับขอบเขตทั้งหมด." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "ความเร็วการขนส่งไฟล์สูงสุด (ไบต์ต่อวินาที)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "การอัพโหลดหนึ่งๆ:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "ใช้ความเร็วสูงสุดสำหรับการขนย้ายไฟล์หนึ่ง ๆ" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "การดาวน์โหลดหนึ่งๆ:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "รวมการอัพโหลดทั้งหมด:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "ใช้ความเร็วสูงสุดสำหรับทุกไฟล์" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "รวมการดาวน์โหลดทั้งหมด:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "การแจ้งเตือน" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "เปิดการแสดงถาดบอลลูน:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "เปิดการกระพริบถาดไอคอน:" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "เปิดการกระพริบแถบงาน:" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "เปิดเสียงบี๊บ:" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "เปิดใช้ถามไอคอนของระบบ" + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "ข้อความที่ถูกเน้น" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "ข้อความที่ถูกเน้นเป็นสิ่งที่ชื่อเล่นของคุณกล่าวถึง, ยิ่งกว่านั้น:" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "คำพิเศษสำหรับเน้น:" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "ไม่เน้นชื่อเล่น:" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "ชื่อเล่นสำหรับเน้นเสมอ:" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "แยกคำหลาย ๆ คำด้วยจุลภาค." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "ข้อความมาตรฐาน" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "ออก:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "ออกจากแชนแนล:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "ไม่อยู่:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "ไม่อยู่" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "แจ้งข้อความไม่อยู่" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "แจ้งข้อความไม่อยู่ของคุณไปยังทุกแชนแนล" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "แสดงสถานะไม่อยู่ครั้งเดียว" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "แสดงข้อความไม่อยู่อย่างเดียวกันเพียงครั้งเดียว" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "เลิกทำเครื่องหมายว่าไม่อยู่โดยอัตโนมัติ" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "เลิกทำเครื่องหมายคุณเองเป็นไม่อยู่ก่อนที่จะส่งข้อความ" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "ตั้งค่าขั้นสูง" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "เวลาหน่วงในการเชื่อมต่ออีกครั้งอัตโนมัติ:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "แสดงโหมดในรูปแบบข้อมูลดิบ" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Whois เมื่อมีการแจ้งเตือน" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "ส่ง /WHOIS เมื่อผู้ใช้ในรายชื่อแจ้งเตือนได้ออนไลน์" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "ซ่อนแชนแนลเข้าร่วม/ส่วนข้อความ" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "ซ่อนแชนแนลเข้าร่วม/ส่วนข้อความโดยอัตโนมัติ" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "เปิดหน้าต่าง DCC โดยอัตโนมัติ" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "หน้าต่างส่ง" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "หน้าต่างรับ" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "หน้าต่างคุยเล่น" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "การบันทึกของระบบ" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "เปิดการบันทึกของการพูดคุย" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "ชื่อไฟล์บันทึกระบบ:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=เซิร์ฟเวอร์ %c=แชนแนล %n=เครือข่าย." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "ใส่กี่ประทับเวลาในบันทึกระบบ" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "รูปแบบประทับเวลาของบันทึกระบบ:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(ปิดการทำงาน)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "ทุกการเชื่อมต่อ" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "เซิร์ฟเวอร์ IRC เท่านั้น" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "DCC Get เท่านั้น" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "ที่อยู่ของคุณ" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "ผูกติดไปเป็น:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "มีประโยชน์กับคอมพิวเตอร์ที่มีหลายที่อยู่เท่านั้น" + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "เซิร์ฟเวอร์พร็อกซี่" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "ชื่อโฮต์:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "พอร์ต:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "ชนิด:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "ใช้พร็อกซี่สำหรับ:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "การรับรองพร็อกซี่" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "ใช้การรับรอง (MS Proxy, HTTP หรือ Socks5 เท่านั้น)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "ใช้การรับรอง (HTTP หรือ Socks5 เท่านั้น)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "ชื่อผู้ใช้:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "รหัสผ่าน:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "เลือกไฟล์ภาพ" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "เลือกโฟลเดอร์ดาวน์โหลด" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "เลือกฟอนต์" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "มองหา..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "ทำเครื่องหมายผู้ใช้ที่สามารถระบุตัวบุคคลได้ด้วย:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "ทำเครื่องหมายผู้ใช้ที่ไม่สามารถระบุตัวบุคคลได้ด้วย:" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "เปิดโฟลเดอร์ข้อมูล" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "เลือกสี" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "สีข้อความ" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "สี mIRC:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "สีท้องถิ่น:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "พื้นหน้า:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "พื้นหลัง:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "ข้อความที่ทำเครื่องหมาย" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "ส่วนเชื่อมต่อผู้ใช้" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "ข้อมูลใหม่" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "เส้นสัญลักษณ์:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "ข้อความใหม่" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "ผู้ใช้ที่ไม่อยู่" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "การเน้น:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "เหตุการณ์" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "ไฟล์เสียง" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "เลือกไฟล์เสียง" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "วิธีการเล่นเสียง:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "โปรแกรมเล่นเสียงภาย_นอก" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "โ_ปรแกรมภายนอก" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_อัตโนมัติ" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "ไ_ดเร็กทอรี่ไฟล์เสียง" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "ไฟล์เสียง" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "มอ_งหา..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "เล่_น" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "ส่วนเชื่อมต่อผู้ใช้" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "กล่องข้อความ" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "รายการผู้ใช้" + +#: src/fe-gtk/setup.c:1703 +msgid "Channel switcher" +msgstr "สวิตช์เปลี่ยนแชนแนล" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "สี" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "การคุยเล่น" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "ทั่วไป" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "เสียง" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "ตั้งค่าเครือข่าย" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "การส่งไฟล์" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "หมวดหมู่" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" +"คุณไม่สามารถวางแผนภูมิต้นไม้บนส่วนบนหรือส่วนล่าง!\n" +"กรุณาเปลี่ยนเป็นแผนผังแบบ <b>แท็บ</b> ในเมนู <b>มุมมอง</b> เป็นอันดับแรก." + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "การตั้งค่าบางอย่างที่ถูกเปลี่ยน ต้องการที่จะเริ่มใหม่เพื่อให้เป็นผล." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*คำเตือน*\n" +"การรับ DCC อัตโนมัติไปยังไดเร็กทอรีบ้านของคุณ\n" +"อาจจะอันตรายและสร้างความเสียหายได้. เช่น:\n" +"บางคนอาจจะสามารถส่ง .bash_profile" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: ปรับแต่งค่า" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "มีข้อผิดพลากในการวิเคราะห์สตริง" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "สัญญาณนี้ต้องส่ง %d อาร์กิวเมนต์เท่านั้น, $%d ไม่ถูกต้อง" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "พิมพ์ไฟล์ข้อความ" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "แก้ไขเหตุการณ์" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ ตัวเลข" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "โหลดจาก..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "ทดสอบทั้งหมด" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: ตัวดักจับ URL" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "ล้างรายการ" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "คัดลอก URL ที่เลือก" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "คัดลอก" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "บันทึกรายการเป็นไฟล์" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d ops, %d ทั้งหมด" + +#~ msgid "" +#~ "Set per channel options\n" +#~ "CHANOPT CONFMODE ON|OFF - Toggle conf mode/showing of join and part " +#~ "messages\n" +#~ "CHANOPT COLORPASTE ON|OFF - Toggle color paste\n" +#~ "CHANOPT BEEP ON|OFF - Toggle beep on message\n" +#~ "CHANOPT TRAY ON|OFF - Toggle tray blink on message" +#~ msgstr "" +#~ "ตั้งค่าตัวเลือกในแต่ละแชนแนล\n" +#~ "CHANOPT CONFMODE ON|OFF - สวิตช์ตัวเลือกโหมดปรับแต่ง/" +#~ "แสดงการเข้าร่วมและส่วนของข้อความ\n" +#~ "CHANOPT COLORPASTE ON|OFF - สวิตช์ตัวเลือกเพลตสี\n" +#~ "CHANOPT BEEP ON|OFF - สวิตช์ตัวเลือกเสียงบี๊บเมื่อมีข้อความ\n" +#~ "CHANOPT TRAY ON|OFF - สวิตช์ตัวเลือกการกระพริบของถาดเมื่อมีข้อความ" + +#~ msgid "Direct client-to-client" +#~ msgstr "ลูกข่ายต่อลูกข่ายโดยตรง" + +#~ msgid "Send File" +#~ msgstr "ส่งไฟล์" + +#~ msgid "Offer Chat" +#~ msgstr "เสนอการคุยเล่น" + +#~ msgid "Abort Chat" +#~ msgstr "ยกเลิกการคุยเล่นก่อนเสร็จสิ้น" + +#~ msgid "Userinfo" +#~ msgstr "ข้อมูลผู้ใช้" + +#~ msgid "Clientinfo" +#~ msgstr "ข้อมูลลูกข่าย" + +#~ msgid "Time" +#~ msgstr "เวลา" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "Oper" + +#~ msgid "Kill this user" +#~ msgstr " Kill ผู้ใช้นี้" + +#~ msgid "Mode" +#~ msgstr "โหมด" + +#~ msgid "Give Half-Ops" +#~ msgstr "ให้ Half-Ops" + +#~ msgid "Take Half-Ops" +#~ msgstr "รับ Half-Ops" + +#~ msgid "Ignore" +#~ msgstr "เพิกเฉย" + +#~ msgid "Ignore User" +#~ msgstr "เพิกเฉยต่อผู้ใช้" + +#~ msgid "UnIgnore User" +#~ msgstr "เลิกเพิกเฉยต่อผู้ใช้" + +#~ msgid "Info" +#~ msgstr "ข้อมูล" + +#~ msgid "Who" +#~ msgstr "Who" + +#~ msgid "DNS Lookup" +#~ msgstr "ค้นหา DNS" + +#~ msgid "Trace" +#~ msgstr "Trace" + +#~ msgid "UserHost" +#~ msgstr "UserHost" + +#~ msgid "External" +#~ msgstr "External" + +#~ msgid "Traceroute" +#~ msgstr "Traceroute" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "About XChat" +#~ msgstr "เกี่ยวกับ XChat" + +#~ msgid "Unban" +#~ msgstr "เลิกแบน" + +#~ msgid "Blink tray on message" +#~ msgstr "กระพริบถาดเมื่อมีข้อความ" + +#~ msgid "Show join/part messages" +#~ msgstr "แสดงข้อความเข้าร่วม/ออกจากแชนแนล" + +#~ msgid "Color paste" +#~ msgstr "เพลตสี" + +#~ msgid "_Close Tab" +#~ msgstr "ปิ_ดแท็บ" + +#~ msgid "Channel List..." +#~ msgstr "รายการแชนแนล..." + +#~ msgid "Notify List..." +#~ msgstr "รายการแจ้งเตือน..." + +#~ msgid "_Close Window" +#~ msgstr "_ปิดหน้าต่าง" + +#~ msgid "User" +#~ msgstr "ผู้ใช้" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: รายการแจ้งเตือน" + +#~ msgid "C_hannels to join:" +#~ msgstr "_แชนแนลที่จะเข้าร่วม:" + +#~ msgid "Channel Switcher" +#~ msgstr "ตัวสวิตช์แชนแนล" diff --git a/etc/wyatt8740/po/uk.po b/etc/wyatt8740/po/uk.po new file mode 100644 index 0000000..e5fa444 --- /dev/null +++ b/etc/wyatt8740/po/uk.po @@ -0,0 +1,5875 @@ +# Ukrainian translation to xchat +# Copyright (C) 2004 Free Software Foundation, Inc +# This file is distributed under the same license as the xchat package. +# Maxim Dubovoy <max@mylinux.com.ua>, 2003 +# Maxim V. Dziumanenko <dziumanenko@gmail.com>, 2004-2007 +# Oleksandr Kunytsia <xakep@snark.ukma.kiev.ua>, 2004 +# Sergey Tereschenko <serg.partizan@gmail.com>, 2009 +# +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.8.6\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2009-10-17 13:32+0300\n" +"Last-Translator: Sergey Tereschenko <serg.partizan@gmail.com>\n" +"Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Не вдалося створити ~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Я зайнятий" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Залишаю" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* Запускати IRC як root це тупо! Краще додати\n" +" звичайного користувача і входити ним в систему.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Очікування" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Активний" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Помилка" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Виконано" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "З'єднання" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Припинено" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "Немає доступу до %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Помилка" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s пропонує \"%s\". Прийняти?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Немає активних каналів даних (DCC)\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "ТАК " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "НІ " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "You are being CTCP flooded from %s, ignoring %s\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s онлайн\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s офлайн\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Не зайшли на канал. Спробуйте /join #<канал>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Не підключено. Спробуйте /server <вузол> [<порт>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Вже позначений як \"відсутній\": %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "Вже позначений як \"повернувся\": %s\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "Для запуску необхідна програма /bin/sh !\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Доступні команди:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Визначені користувачем команди:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Визначені у модулі команди:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "" +"Введіть /HELP <команда> щоб отримати докладнішу інформацію, або /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Невідомий аргумент '%s' проігноровано." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "Модуль не знайдено.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Не вдалося вивантажити модуль.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <ім'я> <дія>, додати кнопку над списком користувачів" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <команда>, надіслати команду до всіх каналів, на які ви зайшли" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <команда>, надіслати команду до всіх каналів, на які ви зайшли" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <cmd>, надіслати команду до всіх серверів, з якими ви з'єднані" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<підстава>], встановити статус \"відсутній\"" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "BACK, встановлює статус \"повернувся\" (не відсутній)" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <маска> [<тип>], заборонити доступ до каналу всім, хто відповідає " +"вказаній масці. Якщо користувачі вже з'єднані з каналом, вони не будуть " +"відключені (для цього потрібно бути оператором каналу)" + +#: src/common/outbound.c:3506 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <змінна> [<значення>]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "" +"CLEAR [ALL|HISTORY], очистити поточне текстове вікно або історію команд" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, закрити поточне вікно/вкладку" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" +"COUNTRY [-s] <код|метасимвол>, знайти код країни, наприклад: au = australia" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <нікнейм> <повідомлення>, надіслати повідомлення CTCP до користувача із " +"вказаним ім'ям, звичайними повідомленнями є VERSION та USERINFO" + +#: src/common/outbound.c:3516 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "CYCLE [<channel>], залишити поточний канал та відразу повернутися" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <нікнейм> - прийняти запропонований файл\n" +"DCC SEND [-maxcps=#] <нікнейм> [файл] - надіслати комусь файл\n" +"DCC PSEND [-maxcps=#] <нікнейм> [файл]- надіслати файл у пасивному режимі\n" +"DCC LIST - показати список DCC\n" +"DCC CHAT <нікнейм> - запропонувати розмову через DCC\n" +"DCC CLOSE <тип> <нікнейм> <файл> приклад:\n" +" /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <нікнейм>, зняти статус напівоператор каналу (chanhalf-op) у особи на " +"поточному каналі (потребує прав адміністратора каналу)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <ім'я>, видалити кнопку зі списку користувачів" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <нікнейм>, зняти права оператора (chanop) у вказаної особи на поточному " +"каналі (потребує прав адміністратора каналу)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <нікнейм>, зняти право голосу у вказаної особи на поточному каналі " +"(потребує прав адміністратора каналу)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, від'єднатися від сервера" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <нік|вузол|ip>, знайти IP адресу користувача" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <текст>, вивести текст на локальній машині" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <команда>, виконати команду. Якщо використано параметр -o, вивід " +"буде надіслано до поточного каналу, інакше він буде виведений в поточному " +"вікні" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, надіслати процесу сигнал SIGCONT" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], перервати виконання процесу у поточному сеансі. Якщо задано " +"параметр -9 процес буде припинено за допомогою SIGKILL" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, надіслати процесу сигнал SIGSTOP" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, надіслати дані в стандартний ввід процесу" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, скинути поточну чергу відправлення на поточному сервері" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <вузол> [<порт>], під'єднуватися через проксі, типовий порт 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <нікнейм> <пароль>, знищити примарні превдоніми" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" +"HOP <нікнейм>, надати стан напівоператора (chanhalf-op) вказаній особі " +"(потребує прав оператора)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <пароль>, ідентифікація себе на nickserv" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <маска> <типи..> <параметри..>\n" +" маска - маска ігнорованого вузла, наприклад: *!*@*.aol.com\n" +" типи - типи ігнорованих даних, один або декілька з наступних:\n" +" PRIV, CHAN, NOTI, CTCP, INVI, ALL\n" +" параметри - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <нікнейм> [<канал>], запросити когось до каналу, за замовчанням до " +"поточного каналу (потребує прав оператора каналу)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <канал>, зайти до вказаного каналу" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <нікнейм>, викинути особу з поточного каналу (потребує прав оператора)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <нікнейм>, забанити й викинути особу з поточного каналу (потребує " +"прав оператора каналу)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, виконати перевірку сигналу" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <рядок>, шукати рядок у буфері" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <файл>, завантажити модуль або скрипт" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, видалити статус напівоператора з усіх користувачів в поточному " +"каналі (потребує прав оператора)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, видалити статус оператора з усіх користувачів каналу (потребує прав " +"оператора)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <дія>, надіслати подію до поточного каналу (події пишеться від третьої " +"особи,наприклад /me стрибає)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, викинути всіх окрім вас з поточного каналу (потребує прав оператора)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MDEOP, надати всім користувачам поточного каналу права оператора (потребує " +"прав оператора)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <нікнейм> <повідомлення>, надіслати особисте повідомлення" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, вивести список усіх користувачів поточного каналу" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <нікнейм> <повідомлення>, надіслати CTCP повідомлення" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <назва вузла> [<порт>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <нікнейм>, змінити нікнейм" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <нікнейм/канал> <повідомлення>, надіслати сповіщення. Сповіщення - це " +"тип повідомлень, на які слід автоматично реагувати" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n мережа1[,мережа2,...]] [<нікнейм>], вивести список сповіщень або " +"додати до нього когось" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" +"OP <нікнейм>, надати вказаній особі права оператора каналу (потребує прав " +"оператора)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<канал>] [<привід>], вийти з каналу, типово - з поточного каналу" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <нікнейм | канал>, CTCP-пінг особи або каналу" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "" +"QUERY [-nofocus] <нікнейм>, відкрити нове вікно приватних повідомлень до " +"вказаної особи" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<підстава>], від'єднатися від поточного сервера" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <текст>, надіслати текст у необробленій формі до сервера" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT·[-ssl] [<вузол>] [<порт>] [<пароль>], може бути викликано просто " +"як/RECONNECT, щоб переприєднатися до поточного сервера або /RECONNECT ALL, " +"щоб переприєднатися до усіх відкритих серверів" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<вузол>] [<порт>] [<пароль>], може бути викликано просто як/" +"RECONNECT, щоб переприєднатися до поточного сервера або /RECONNECT ALL, " +"переприєднатися до усіх відкритих серверів" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <текст>, надіслати дані в необробленому форматі до xchat, як " +"відправлені з irc сервера" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <текст>, надіслати текст до об'єкта в поточному вікні" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <нікнейм> [<файл>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <вузол> <порт> <канал>, встановити з'єднання з сервером та " +"зайти до каналу" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN <вузол> <порт> <канал>, встановити з'єднання з сервером та зайти до " +"каналу" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <вузол> [<порт>] [<пароль>], встановити з'єднання із сервером. " +"Типовий порт для звичайних з'єднань 6667, 9999 - для ssl з'єднань" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <вузол> [<порт>] [<пароль>], під'єднатися до сервера, типовий порт " +"6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <змінна> [<значення>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<позиція>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<тема>], встановити тему, якщо вона вказана. У іншому випадку " +"відображає поточну тему" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" +"\n" +"TRAY -f <таймаут> <файл1> [<файл2>] Почерговий показ двох значків у області " +"сповіщення.\n" +"TRAY -f <назвафайлу> Постійний значок у області сповіщення.\n" +"TRAY -i <число> Миготіння внутрішнього значка у області " +"сповіщення.\n" +"TRAY -t <текст> Встановити підказку у області " +"сповіщення.\n" +"TRAY -b <заголовок> <текст> Встановити спливаючу підказку у області " +"сповіщення." + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "" +"UNBAN <маска> [<маска>...], скасувати заборону доступу до каналу всім, хто " +"відповідає масці." + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "" +"UNIGNORE <маска> [QUIET] - скасувати ігнорування повідомлень з певною маскою" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <назва>, вивантажити модуль або скрипт" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, відкрити URL у веб-переглядачі" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <нікнейм1> <нікнейм2> тощо, підсвічує нікнейми у списку " +"користувачів каналу" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "" +"VOICE <нікнейм>, надати право голосу особі (потребує прав оператора каналу)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <повідомлення>, надіслати повідомлення до всіх каналів" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <повідомлення>, надіслати повідомлення до усіх операторів на " +"поточному каналі" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Використання: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"Немає довідки для цієї команди.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Такої команди не існує.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Неправильні аргументи команди користувача.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Надто багато рекурсивних команд користувача, зупиняємо." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Невідома команда. Спробуйте /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "На знайдено символ xchat_plugin_init; це дійсно модуль xchat?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Ви впевнені це що сумісний з SSL сервер?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Неможливо визначити назву вузла %s\n" +"Перевірте параметри мережі!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Не вдалося зв'язатися через проксі.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Перемикання на наступний сервер %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Попередження: невідоме кодування \"%s\". Перекодування для мережі %s не " +"відбуватиметься." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 доданий у список сповіщень." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 список забанених:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tНе вдалося зайти%C26 %B$1 %O(Вас забанено)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 тепер називається $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 встановив бан на $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tКанал $1 створений у $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O видалив права напівоператора у %C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O видалив права оператора каналу у %C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O забрав голос у %C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 встановив звільнення на $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O надав права напівоператора %C26 $2" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 запрошує на $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UКанал Користувачі Тема" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 встановив режим $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Канал $1 режими: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O надав права оператора каналу %C26 $2" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 забрав звільнення у $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 зняв запрошення до $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 прибрав ключові слова каналу" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 зняв обмеження користувачів" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 встановив ключові слова каналу: $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 встановив ліміт каналу у $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 зняв бан з $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O надав голос %C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22З'єднання встановлено. Вхід у мережу.." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22З'єднання з $1 ($2) порт $3%O.." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%CЗ'єднання неможливе. Помилка: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tОтримано CTCP $1 від $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tОтримано CTCP $1 від $2 (для $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tОтримано CTCP звук $1 від $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tОтримано звук CTCP $1 від $2 (для $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tDCC CHAT з %C26$1%O перервано." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC CHAT з'єднання встановлено з %C26$1 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tDCC CHAT з %C26$1%O розірвано. ($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tОтримано запит на DCC CHAT від $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tПропонується DCC CHAT з $1" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tВже запропоновано CHAT з $1" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$tDCC $1 спроба з'єднання з %C26 $2%O невдала (помилка=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tОтримано '$1%O' від $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 Тип Кому/Від кого Статус Розмір Позиція Файл " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O." +"%010%C22*%O$tContents of packet: $2" +msgstr "" +"%C22*%O$tОтримано неправильний DCC запит від %C26$1%O.%010%C22*%O$tВміст " +"пакета: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tПропонується%C26 $1 для%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tНемає такої DCC пропозиції." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV %C26$2%O для %C26$1%O перервано." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC RECV%C26 $1%O від%C26 $3%O завершено %C30[%C26$4%O б/с%C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC RECV з'єднання встановлено з%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV%C26 $1%O від%C26 $3%O - помилка. ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV: Не вдалося відкрити $1 для запису ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "%C22*%O$tФайл%C26 $1%C вже існує, натомість зберігається як%C26 $2%O." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Oзапит на продовження розмови%C26 $2%C від%C26 $3%C." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC SEND %C26$2%O до %C26$1%O перервано." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC SEND %C26$1%O до %C26$2%O завершено %C30[%C26$3%O б/с%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC SEND з'єднання встановлено з %C26$1 %C30[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND %C26$1%O до %C26$2%O - помилка. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Oзапропоновано%C26 $2 %O(%C26$3 %OCбайт)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cзупинилось - переривання." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oдо %C26$3 %Oвийшов час - переривання." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 видалено зі списку сповіщення." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tЗ'єднання розірвано ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tЗнайдено ваш IP: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O додано до списку ігнорованих." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "Ігнорування %C26$1%O змінено." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 маска вузлів PRIV NOTI CHAN CTCP DCC INVI UNIG" + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O видалений зі списку ігнорування." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " Список ігнорованих порожній." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "%C22*%O$tНе вдалося зайти%C26 %B$1 %O(Канал лише для запрошених)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tОтримано запрошення на%C26 $1%O від%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) зайшов на канал $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$tНе вдалося зайти%C26 %B$1 %O(Потрібне ключове слово)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 викинув $2 з $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$tвикинув вас з каналу $1 ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD пропущено." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 вже використовується. Повторна спроба з $2.." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$tНікнейм вже використовується. Скористайтеся /NICK щоб спробувати " +"інше." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tНемає такого DCC." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tНемає запущених процесів" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tСписок сповіщень порожній." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Список сповіщень " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 користувачів у списку сповіщень." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tСповіщення: $1 від'єднаний ($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tСповіщення: $1 під'єднаний ($3)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) залишив $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) залишив $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tPing відповідь від $1 : $2 сек." + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tНе отримано відповідей протягом $1 сек., від'єднання." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tПроцес вже запущений" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 вийшов (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 встановив режими%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tПошук IP-адреси для%C26 $1%O.." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22З'єднання встановлено." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22Триває пошук $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tЗупинена попередня спроба з'єднання (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29Тема для $1%C: %C26$2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 змінив тему на: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29Тема для $1%C %C29встановлена $2%C %C29у $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tНевідомий вузол. Можливо ви помилились?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "" +"%C22*%O$tНе вдалося зайти на%C26 %B$1 %O(Вичерпано ліміт користувачів)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Користувачі на $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cнедоступний %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OКінець списку WHOIS." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O бездіяльний %C26$2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O бездіяльний %C26$2%O, зайшов: %C26$3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" +"%C22*%O$t%C28[%O$1%C28] %Oсправжній користувач@вузол %C27$2%O, справжній IP " +"%C27$3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Ви зараз спілкуєтесь на $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$t$3 викинув вас із каналу $2 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tВи залишили канал $3" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tВи залишили канал $3 $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tВи запрошуєте%C26 $1%O до%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tТепер ви відомі як $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "Завантажено журнал з" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** ЗАКІНЧУЄТЬСЯ ВХІД НА %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** ПОЧАТОК ВХОДУ НА %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Не вдалося відкрити файл(и) для запису. Перевірте\n" +" права на %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Повідомлення зліва" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Повідомлення справа" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "Нікнейм особи, що підключається" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "Підключено до каналу" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "Хостнейм користувача" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Нікнейм" + +#: src/common/text.c:973 +msgid "The action" +msgstr "Дія" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Символ режиму" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Виділений текст" + +#: src/common/text.c:980 +msgid "The text" +msgstr "Текст" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Повідомлення" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Старий нікнейм" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Новий нікнейм" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Нікнейм персони, що змінила тему" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Тема" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Канал" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "Нікнейм особи, що викинула з каналу" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "Особа, яку було відключено" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "Канал" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "Підстава" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "Нікнейм особи, що залишає канал" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "Час" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "Засновник" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Нікнейм" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Підстава" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Комп'ютер" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "Звідки" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "Час у форматі x.x (дивіться нижче)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "Перелік каналів..." + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "Звук" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "Нікнейм особи" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "CTCP подія" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "Нікнейм особи, що встановила ключ" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "Ключ" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "Нікнейм особи, що встановила обмеження" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "Обмеження" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "Нікнейм особи, що встановила оператора" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "Нікнейм особи, що отримала оператора" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "Нікнейм особи, що отримала напівоператора" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "Нікнейм особи, що встановила напівоператора" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "Нікнейм особи, що встановила голосу" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "Нікнейм особи, якій було встановлено стан голосу" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "Нікнейм особи, що ввела бан" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "Маска бану" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "Нікнейм особи, що видалила ключ" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "Нікнейм особи, що видалила обмеження" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "Нікнейм особи, що зняла оператора" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "Нікнейм особи, з якої знято оператора" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "Нікнейм особи, що зняла напівоператора" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Нікнейм особи, з якої знято напівоператора" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "Нікнейм особи, яка забрала 'голос'" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "Нікнейм особи, з якої було знято 'голос'" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "Нікнейм особи, що зняла бан" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "Нікнейм особи, що додала виключення" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "Маска виключення" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "Нікнейм особи, що зняла виключення" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "Нікнейм особи, що зробила запрошення" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "Маска запрошення" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "Нікнейм особи, що скасувала запрошення" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "Нікнейм особи, що встановила режим" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "Знак режиму (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "Буква режиму" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "Канал встановлено" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Username" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Повне ім'я " + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Член каналу/\"є оператором IRC\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Інформація про сервер" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Час простою" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Час входу" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Причина відсутності" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Повідомлення" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Обліковий запис" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "Справжній_користувач@хост" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "Реальний IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Назва каналу" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Текст" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Назва серверу" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Нікнейм особи, що запрошує" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Користувачі" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Нікнейм використовується" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Пробуємо нікнейм" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Порт" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Мережа" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Рядок режимів" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "IP адреса" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "Тип DCC" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Назва файлу" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Назва файлу призначення" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Шлях" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Позиція" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Розмір" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "DCC Рядок" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Кількість сповіщень" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Стара назва файлу" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Нова назва файлу" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Отримувач" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Маска хосту" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Хостнейм" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "Пакет" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Секунди" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Нікнейм запрошеної особи" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Маска бану" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Особа, що встановила бан" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Час дії бану" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Помилка аналізу події %s.\n" +"Завантажується типова." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"Не вдалося прочитати звуковий файл:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "Віддалений вузол закрив сокет" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Відмовлено у з'єднанні" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Не знайдено шлях до вузла" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Таймаут з'єднання" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Не вдалося призначити цю адресу" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "З'єднання обірване" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Острів Сходження" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Андорра" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Об'єднані Арабські Емірати" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Афганістан" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Антігуа та Барбуда" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Ангуілла" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Албанія" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Вірменія" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Нідерланди" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Ангола" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Антарктида" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Аргентина" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "Зворотній DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Американське Самоа" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Австрія" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "Нато Фейл" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Австралія" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Аруба" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Аланд о-ви" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Азербайджан" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Боснія та Герцеговина" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Барбадос" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Бангладеш" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Бельгія" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Буркіна-Фасо" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Болгарія" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Бахрейн" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Бурунді" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Бізнесова адреса" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Бенін" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Бермуди" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Бруней" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Болівія" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Бразилія" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Багами" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Бутан" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Острови Буве" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Ботсвана" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Білорусія" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Беліз" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Канада" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Кокосові о-ви" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "Демократична Республіка Конго" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "Центрально-Африканська Республіка" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Конго" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Швейцарія" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Кот'Д'Івуар" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Острови Кука" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Чилі" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Камерун" + +#: src/common/util.c:898 +msgid "China" +msgstr "Китай" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Колумбія" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Комерційні адреси" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Коста-Ріка" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Сербія та Чорногорія" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Куба" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Капе Верде" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Різдвяні острови" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Кіпр" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "Чеська республіка" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Німеччина" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Джибуті" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Данія" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Домініка" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "Домініканська Республіка" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Алжир" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Еквадор" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Освітні заклади" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Естонія" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Єгипет" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Західна Сахара" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Еритрея" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Іспанія" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Ефіопія" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Європейський союз" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Фінляндія" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Фіджі" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Фолклендські о-ви" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Мікронезія" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "О-ви Фарое" + +#: src/common/util.c:928 +msgid "France" +msgstr "Франція" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Габон" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Велика Британія" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Гренада" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Грузія" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Французька Гвіана" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Британські о-ви" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Гана" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Ґібралтар" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Гренландія" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Гамбія" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Гвінея" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Уряд" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Гваделупа" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Екваторіальна Гвінея" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Греція" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "S. Georgia та S. Sandwich Isles." + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Гватемала" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Гуам" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Гвінея-Біссау" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Гаяна" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Гонг Конг" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Heard and McDonald Islands" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Гондурас" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Хорватія" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Гаїті" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Угорщина" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Індонезія" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Ірландія" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Ізраїль" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Острів Мен" + +#: src/common/util.c:959 +msgid "India" +msgstr "Індія" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Інформаційні" + +#: src/common/util.c:961 +msgid "International" +msgstr "Міжнародні" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Британська Тихоокеанська Територія" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Ірак" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Іран" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Ісландія" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Італія" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Джерсі" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Ямайка" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Йорданія" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Японія" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Кенія" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Киргизстан" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Камбоджі" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Кірібаті" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Коморос" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "St. Kitts and Nevis" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Північна Корея" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Південна Корея" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Кувейт" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Кайманові о-ви" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Казахстан" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Лаос" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Ліван" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Свята Лучія" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Ліхтенштейн" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Шрі Ланка" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Ліберія" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Лесото" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Литва" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Люксембург" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Латвія" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Лівія" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Марокко" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Монако" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Молдова" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "Мед.заклади США" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Мадагаскар" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Маршалові острови" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Військові" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Македонія" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Малі" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "М'янма" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Монголія" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Макао" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Північні Маріанські Острови" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Мартініка" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Мавританія" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Монсерат" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Мальта" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Маврикій" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Мальдіви" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Малаві" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Мексика" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Малайзія" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Мозамбік" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Намібія" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Нова Каледонія" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Нігер" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Мережі" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Норфолкські о-ви" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Нігерія" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Нікарагуа" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Нідерланди" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Норвегія" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Непал" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Науру" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Ніуе" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Нова Зеландія" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Оман" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Мережні некомерційні організації" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Панама" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Перу" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Французька Полінезія" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Папуа Нова Гвінея" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Філіппіни" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Пакистан" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Польща" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "St. Pierre and Miquelon" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Піткерн" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Пуерто Ріко" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Палестинська Територія" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Португалія" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Палау" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Парагвай" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Катар" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Реунйон" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Румунія" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "Стара мережа ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Росія" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Руанда" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Саудівська Аравія" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Соломонові острови" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Сейшельські острови" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Судан" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Швеція" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Сінгапур" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "Св. Олена" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Словенія" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard and Jan Mayen Islands" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Словацька Республіка" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Сієра Леоне" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "Сан Маріно" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Сенегал" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Сомалі" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Суринам" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "Сен-Томе та Прінсіпі" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Колишній СРСР" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "Сальвадор" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Сирія" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Свазіленд" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "о-ви Тьорск та Кайкос" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Чад" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Французькі Південні Території" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Того" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Таїланд" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Таджикистан" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "о-ви Токелау" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Східний Тимор" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Туркменістан" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Туніс" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Тонга" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Туреччина" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Тринідад та Тобаго" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Тувалу" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Тайвань" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Танзанія" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Україна" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Уганда" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Сполучене королівство" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "США" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Уругвай" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Узбекистан" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Ватикан" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "Сент-Вінсент та Гренадини" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Венесуела" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Британські Віржинські острови" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "Американські Віржинські острови" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "В'єтнам" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Вануату" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "о-ви Валліс та Футуна" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Самоа" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Ємен" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Майотт" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Югославія" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Південна Африка" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Замбія" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Зімбабве" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Невідомий" + +#: src/common/xchat.c:726 +msgid "_Open Dialog Window" +msgstr "_Відкрити діалогове вікно" + +#: src/common/xchat.c:727 +msgid "_Send a File" +msgstr "_Надіслати файл" + +#: src/common/xchat.c:728 +msgid "_User Info (WhoIs)" +msgstr "_Хто це (WhoIs)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "_Додати до Списку друзів" + +#: src/common/xchat.c:730 +msgid "O_perator Actions" +msgstr "Дії _оператора" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Надати оператора" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Відібрати оператора" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Надати голос" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Відібрати голос" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Викинути/Забанити" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Викинути" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Забанити" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "Викинути+Забанити" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Залишити канал" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Зайти на канал" + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Введіть канал для входу:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Посилання сервера" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Ping-увати сервер" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Приховувати версію" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Оператор" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "Скасувати Опер." + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "бувайте" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Введіть підставу для викидання %s:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Надіслати файл" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Діалог" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Надіслати" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Розмова" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Очистити" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "Не вдалося з'єднатись з шиною сеансу" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "Не вдалося завершити команду NameHasOwner" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "Не вдалося завершити команду" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "віддалений доступ" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "модуль для віддаленого доступу DBUS" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Не вдалося зв'язатись з шиною сеансів: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Не вдалося здобути %s: %s\n" + +#: src/fe-gtk/about.c:100 +msgid "About " +msgstr "_Про програму" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Багатоплатформний IRC клієнт" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Палітра символів" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "Немає з'єднання." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Необхідно вибрати деякі бани." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "Ви дійсно бажаєте зняти всі бани в %s?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Маска" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "Від" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Дата" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Можете відкрити лише вікно Список банів у вкладці каналу." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "X-Chat: Список банів (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Видалити" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Стиснути" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Оновити" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Відображається %d/%d користувачів на %d/%d каналах" + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Виберіть назву файлу для запису" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "За_йти на канал" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "_Копіювати назву каналу" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "Копіювати _текст теми" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: Список каналів (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "З_найти" + +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "_Список завантажень" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "Зберегти _список..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "Відображати лише:" + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "канали з" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "до" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "користувачів." + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "Шукати у:" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "Назві каналу" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "Тип пошуку:" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "Простий пошук" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "Відповідність шаблону" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "Регулярний вираз" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Знайти:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Надіслати файл до %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Файл неможливо продовжити." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"Немає доступу до файлу: %s\n" +"%s.\n" +"Продовження неможливе." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"Файл у каталозі завантажень більше ніж запитаний. Продовження неможливе." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "Не можна продовжувати однаковий файл від 2-х користувачів." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: Завантаження та відвантаження" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Статус" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Файл" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "Залишилось" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "обидва" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Відвантаження" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "Завантаження" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Подробиці" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Файл:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "Адреса:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Перервати" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Прийняти" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Продовжити" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Відкрити теку..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: список розмов по DCC" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Прийн" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Відпр" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "Час початку" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*НОВИЙ*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "ВІДРЕДАГУЙ МЕНЕ" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Назва" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Команда" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Вгору" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Вниз" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Скасувати" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Зберегти" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Додати" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Видалити" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Сортувати" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Довідка" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "Не з'єднуватись з сервером автоматично" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "Використовується інший конфігураційний каталог" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "Не завантажувати автоматично модулі" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "Показувати каталог автозавантаження модулів" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "Показувати каталог конфігураційних файлів" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Відкрити irc://server:port/channel URL" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Виконати команду:" + +#: src/fe-gtk/fe-gtk.c:132 +msgid "Open URL or execute command in an existing XChat" +msgstr "Відкрити URL чи виконати команду в існуючому XChat" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Стартувати мінімізованим. Рівні 0-Нормальний 1=Іконка 2=Трей" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "рівень" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Вивести інформацію про версію" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"Не вдалося відкрити шрифт:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "Буфер пошуку порожній.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d байт" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Черга надсилання у мережу: %d байтів" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"Дія Виконати команду виконує Дані 1 як команду, ніби її було введено в полі " +"вводу, в якому було натиснуто послідовність клавіш. Може містити текст (який " +"буде надіслано до каналу/особи), команди або команди користувача. Символи " +"\\n в Дані 1 використовуються для відокремлення команд, таким чином можливо " +"надсилати більш ніж одну команду. Якщо бажаєте ввести \\ в тексті команди, " +"напишіть \\\\" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"Команда Змінити сторінку перемикає між сторінками в записнику. Встановіть " +"Дані 1 рівним номеру сторінки до якої бажаєте перемикнутися. Якщо Дані 2 має " +"якесь значення, перемикання буде здійснюватись відносно поточної позиції." + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"Команда Вставити в буфер вставить вміст Дані 1 в поле, в якому була " +"натиснута комбінація клавіш, в поточну позицію курсору" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"Команда Прокрутка сторінки прокручує текстовий віджет на одну сторінку вгору " +"або вниз. Задайте значення +1 або -1, щоб сторінку прокручувало вгору або " +"вниз." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"Команда Встановити буфер Встановлює значення поля, в якому було натиснуто " +"комбінацію клавіш в значення Дані 1" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"Команда Остання команда встановлює значення в полі рівним останній введеній " +"команді - теж саме, що натискання клавіші стрілки вгору в командній оболонці" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"Команда Наступна команда встановлює значення в полі рівним наступній команді " +"- теж саме, що натискання клавіші стрілки вниз у командній оболонці" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Ця команда замінює текст в полі вводу для завершення незакінченого нікнейму " +"або команди. Якщо Data 1 встановлено, подвійне натискання клавіші табуляції " +"вибере не наступний, а останній нікнейм" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Команда прокручує список користувачів вгору або вниз. Якщо Data 1 " +"встановлено - буде прокручено вгору, інакше - вниз" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Команда перевіряє останнє введене слово в списку заміщень та замінює у разі " +"знаходження відповідності" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Команда переміщує передню вкладку на одну позицію ліворуч" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Команда переміщує передню вкладку на одну позицію праворуч" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Команда переміщує поточну вкладку на одну позицію ліворуч" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Команда переміщує поточну вкладку на одну позицію ліворуч" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "Помістити введений рядок в історію, але не надсилати до сервера" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "Помилка під час завантаження конфігурації комбінацій клавіш" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<немає>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Мод" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Клавіша" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Дія" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: Комбінації клавіш" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Дані 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Дані 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Помилка при відкриванні файлу конфігурації клавіш\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Невідома назва клавіші %s в конфігураційному файлі комбінацій клавіш\n" +"Завантаження перервано, виправте %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Невідома дія %s в конфігураційному файлі комбінацій клавіш\n" +"Завантаження перервано, виправте %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Очікувався рядок даних (початок Dx{:|!}) але отримано:\n" +"%s\n" +"\n" +"Завантаження перервано, виправте %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"Конфігураційний файл комбінацій клавіш пошкоджений, завантаження перервано\n" +"Спробуйте виправити %s/keybindings.conf\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "Не вдалося записати в цей файл." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Не вдалося прочитати цей файл." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Така маска вже існує." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Приватний" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Зауваження" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Запрошувати" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Не ігнорувати" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Введіть маску для ігнорування:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: список ігнорувань" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Стан ігнорування:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Канал:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Приватний:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Зауваження:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Запросити:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "Додати..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "Назва каналу надто коротка, спробуйте ще раз." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: з'єднання завершено" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "З'єднання з %s завершено." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"У вікні Список серверів, для цієї мережі не визначено канали (кімнати для " +"розмов) для автоматичного входу." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "Що бажаєте зробити далі?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "_Нічого, я сам зайду на канал." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "_Зайти на канал:" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Введіть назву каналу, на який треба зайти, якщо ви її знаєте." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "_Відкрити вікно Списоку каналів." + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "Отримання списку каналів може зайняти хвилину чи дві." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "_Завжди показувати це вікно після з'єднання." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Діалог" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Тема для %s: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Не встановлено тему" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "На цьому сервері досі відкриті %d каналів чи діалогів. Закрити їх?" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "Залишити XChat?" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "Не питати наступного разу." + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Ви підключені до %i IRC мереж." + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "Ви дійсно бажаєте вийти?" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "Деякі файли все ще завантажуються." + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "_Мінімізуватися в трей" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Вставити атрибут або код кольору" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Жирний</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Підкреслений</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Звичайний" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Кольори 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Кольори 8-15" + +#: src/fe-gtk/maingui.c:1612 +msgid "_Settings" +msgstr "П_араметри" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "Писати _журнал" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "_Перечитувати прокрутку" + +#: src/fe-gtk/maingui.c:1617 +msgid "_Hide Join/Part Messages" +msgstr "_Сховати повідомлення входу/виходу" + +#: src/fe-gtk/maingui.c:1625 +msgid "_Extra Alerts" +msgstr "_Додаткові сигнали" + +#: src/fe-gtk/maingui.c:1627 +msgid "Beep on _Message" +msgstr "Звукове сповіщення про повідомлення" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "Блимати у треї" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "Блимати на панелі" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +msgid "_Detach" +msgstr "_Відокремити" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "_Закрити" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "Обмеження користувачів має бути числом!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Захист теми" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Без зовнішніх повідомлень" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Таємний" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Лише запрошені" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Модерований" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Список банів" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Ключове слово" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Обмеження користувачів" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Показати/Сховати список користувачів" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"Не вдалося встановити прозоре тло!\n" +"\n" +"Можливо, ви використовуєте несумісний віконний\n" +"менеджер, який не підтримує таку можливість.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Введіть новий нікнейм:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Невідомий вузол" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Справжнє ім'я:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Користувач:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "Країна:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Сервер:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "%u хвилин тому" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Останнє повідомлення:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Повідомл.про відсутність:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "%d ніків вибрано." + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"Панель меню прихована. Ви можете знову вивести її натискаючи F9 або " +"клацнувши у правій нижній частині головної текстової області." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Відкрити посилання у веб-переглядачі" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Копіювати виділене посилання" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Зайти на канал" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Залишити канал" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Канали по колу" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "_Видалити з улюблених" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "_Додати до улюблених" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: Меню користувача" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Редагувати меню..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Отримання списку каналів..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Команди користувача - Спеціальні коди:\n" +"\n" +"%c = поточний канал\n" +"%e = назва поточної мережі\n" +"%m = інформація про машину\n" +"%n = ваш нікнейм\n" +"%t = час/дата\n" +"%v = версія xchat\n" +"%2 = слово 2\n" +"%3 = слово 3\n" +"&2 = від слова 2 до кінця рядку\n" +"&3 = від слова 3 до кінця рядку\n" +"\n" +"Наприклад:\n" +"/cmd john hello\n" +"\n" +"%2 буде \"john\"\n" +"&2 буде \"john hello\"." + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Кнопки списку користувачів - Спеціальні коди:\n" +"\n" +"%a = всі вибрані нікнейми\n" +"%c = поточний канал\n" +"%e = назва поточної мережі\n" +"%h = назва вузла вибраної особи\n" +"%m = інформація про машину\n" +"%n = ваш нікнейм\n" +"%s = вибраний нікнейм\n" +"%t = час/дата\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Кнопки діалогу - Спеціальні коди:\n" +"\n" +"%a = всі вибрані нікнейми\n" +"%c = поточний канал\n" +"%e = назва поточної мережі\n" +"%h = назва вузла вибраної особи\n" +"%m = інформація про машину\n" +"%n = ваш нікнейм\n" +"%s = вибраний нікнейм\n" +"%t = час/дата\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"Відповіді CTCP - Спеціальні коди:\n" +"\n" +"%d = дані (повний ctcp)\n" +"%m = інформація про машину\n" +"%e = назва поточної мережі\n" +"%s = нікнейм відправника ctcp\n" +"%t = час/дата\n" +"%2 = слово 2\n" +"%3 = слово 3\n" +"&2 = від слова 2 до кінця рядку\n" +"&3 = від слова 3 до кінця рядку\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"Обробка URL посилань - Спеціальні коди:\n" +"\n" +"%s = рядок URL\n" +"\n" +"Додавання ! перед командою\n" +"вказує, що команда надсилатиметься\n" +"до командної оболонки замість XChat" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: Визначені користувачем команди" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: Контекстне меню списку користувачів" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Замінити на" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "X-Chat: Заміни" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: Обробка URL посилань" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: Кнопки списку користувачів" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: Діалогові кнопки" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: Відповіді CTCP" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "С_писок мереж..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "_Створити" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Вкладку сервера.." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Вкладку каналу..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Вікно серверу..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Вікно каналу..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "_Завантажити модуль або скрипт..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "Ви_йти" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "_Вигляд" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "Панель _меню" + +#: src/fe-gtk/menu.c:1592 +msgid "_Topic Bar" +msgstr "Панель _теми" + +#: src/fe-gtk/menu.c:1593 +msgid "_User List" +msgstr "Список користувачів" + +#: src/fe-gtk/menu.c:1594 +msgid "U_serlist Buttons" +msgstr "Кнопки списку _користувачів" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "Кнопки _режиму" + +#: src/fe-gtk/menu.c:1597 +msgid "_Channel Switcher" +msgstr "Перемикач _каналів" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "_Вкладки" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "Д_ерево" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "Мережні _лічильники" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "вимкнено" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "графічний" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "_Сервер" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "_Роз'єднати" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "_Переприєднати" + +#: src/fe-gtk/menu.c:1613 +msgid "Join a Channel..." +msgstr "Зайти на канал..." + +#: src/fe-gtk/menu.c:1614 +msgid "List of Channels..." +msgstr "Список каналів..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Відмітити як \"Відсутній\"" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "_Меню користувача" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "П_араметри" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "_Параметри" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Додатково" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Автозаміна..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "CTCP Відповіді..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Кнопки діалогів..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Комбінації клавіш..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Тексти подій..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "Обробники URL..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Команди користувача..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Кнопки списку користувачів..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Меню списку користувачів..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_Вікно" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Список банів..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Палітра символів..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Прямі розмови(DCC).." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Передача файлів..." + +#: src/fe-gtk/menu.c:1641 +msgid "Friends List..." +msgstr "Список друзів..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Список ігнорувань..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Модулі та скрипти..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Журнал подій..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "Захоплювач URL..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Скинути маркер" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "О_чистити текст" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Знайти текст..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Зберегти текст..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_Довідка" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "_Зміст" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "Перевірити оновлення" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "_Про програму" + +#: src/fe-gtk/menu.c:2147 +msgid "_Attach" +msgstr "_Приєднати" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Бачили востаннє" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Відключений" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Ніколи" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "%d хвилин тому" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Підключений" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Введіть нікнейм:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "Сповіщати в таких мережах:" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "Список допустимих мереж (елементи розділяються комами)." + +#: src/fe-gtk/notifygui.c:413 +msgid "XChat: Friends List" +msgstr "XChat: Список друзів" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "Відкрити діалогове вікно" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" +"Не вдалося знайти 'notify-send' щоб відправляти\n" +"плаваючі повідомлення. Перевірте, чи всі компоненти\n" +"libnotify на місці." + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "XChat: З'єднання з %u мережами та %u каналами" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "_Відновити" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "С_ховати" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "_Блимати на" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "Повідомлення каналу" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "Приватне повідомлення" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "Виділене повідомлення" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "_Змінити статус" + +#: src/fe-gtk/plugin-tray.c:602 +msgid "_Away" +msgstr "_Немає" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "_Назад" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat: Виділені повідомлення від: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat: %u виділених повідомлень, останнє від: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat: Нове публічне повідомлення від: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat: %u нових публічних повідомленнь." + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat: Приватне повідомлення від: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "XChat: %u приватних повідомленнь, останнє від: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat: Передача файлу від: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "XChat: %u передач файлів, остання від: %s (%s)" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Версія" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Опис" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Виберіть модуль або скрипт для завантаження" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: модулі та скрипти" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "З_авантажити" + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "_Вивантажити" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Зберегти як..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: Журнал подій (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Очистити журнал" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "Відкрите вам вікно пошуку вже не існує." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "Пошук досяг кінця, нічого не знайдено." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: Пошук" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "Враховувати _регістр" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "У _зворотньому напрямку" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "З_найти" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Нова мережа" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Дійсно видалити мережу \"%s\" та усі її сервери?" + +#: src/fe-gtk/servlistgui.c:740 +msgid "#channel" +msgstr "#канал" + +#: src/fe-gtk/servlistgui.c:850 +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: Улюблениі канали (список для автоматичного заходу)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "Заходити на ці канали, коли ви підключитесь до %s." + +#: src/fe-gtk/servlistgui.c:906 +msgid "Key (Password)" +msgstr "Ключ (пароль)" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "_Правка" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "%s видалено." + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "%s додано." + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "" +"Ім'я користувача та справжнє ім'я користувача не пожуть бути порожніми." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: Редагування %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Сервер: %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "З'єднатись лише з виділеним сервером" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Не змінювати циклічно сервер при помилках з'єднання." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Подробиці про вас" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Використовувати глобальну інформацію" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "П_різвисько:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Другий вибір:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "_Ім'я користувача:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "_Справжнє ім'я:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "З'єднання" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Автоматично з'єднуватись при старті" + +#: src/fe-gtk/servlistgui.c:1462 +msgid "Bypass proxy server" +msgstr "В обхід проксі серверу" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "Використовувати SSL для всіх серверів у цій мережі" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Приймати неправильні сертифікати SSL" + +#: src/fe-gtk/servlistgui.c:1475 +msgid "_Favorite channels:" +msgstr "_Улюблені канали:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "Канали для з'єднання, відокремлені комами, але не пробілами!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Команда з'єднання:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Додаткова команда, яку слід виконати після під'ключення. Якщо потрібно " +"декілька команд, напишіть LOAD -e <назва файлу>, де <назва файлу> - це " +"текстовий файл з командами для виконання." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Пароль для NickServ:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Якщо нікнейм вимагає пароль, введіть його тут. Це підтримують не усі мережі " +"IRC." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Пароль сервера:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Пароль сервера, залиште порожнім, якщо сумніваєтесь." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Набір символів:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: Список мереж" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Інформація про користувача" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Третій вибір:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Мережі" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "Не показувати список мереж при старті" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "_Правка..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "С_ортувати" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" +"Сотрувати список мереж у алфавітному порядку. Для переміщення рядка " +"користуйтесь клавішами SHIFT-UP та SHIFT-DOWN." + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "Під'_єднатися" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Зовнішній вигляд текстового поля" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Шрифт:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Зображення тла:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Кількість ліній прокрутки:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Виділяти нікнейми кольором" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Надати кожній особі в IRC інший колір" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Нікнейми з відступом" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Вирівнювання нікнеймів справа" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Прозоре тло" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Показувати маркер" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Вставляє червоний рядок після останнього прочитаного тексту." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Параметри прозорості" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Червоний" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Зелений:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Синій:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Відображати час" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Вносити час події в журнал" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Формат відображення часу:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Докладнішу інформацію дивіться у довідці з strftime." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "Порядок \"останній хто говорив\"" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Поле вводу" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Шрифт та кольори як в текстовому блоці" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Перевірка орфографії" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Доповнення ніків:" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "Автоматичне доповнення прізвиськ (без клавіші TAB)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Суфікс доповнення нікнейму:" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "Сортування доповнення нікнейму:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Коди у полі вводу" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Інтерпретувати %nnn як значення ASCII" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Інтерпретувати %C, %B як колір, жирний тощо" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, оператори спочатку" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, оператори наприкінці" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "без сортування" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "Зліва (вгорі)" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "Зліва (внизу)" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "Справа (вгорі)" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "Справа (внизу)" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "вгорі" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "внизу" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "приховані" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Список користувачів" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Показувати назви вузлів у списку користувачів" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Сортування списку користувачів:" + +#: src/fe-gtk/setup.c:205 +msgid "Show user list at:" +msgstr "Показувати список користувачів:" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Відслідковування статусу 'відсутній'" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "" +"Слідкувати за статусом користувачів Відійшов та позначати їх іншим кольором" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "На каналах менших за:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Реакція на подвійне клацання" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Вікнах" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Вкладках" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Завжди" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Лише зазначені вкладки" + +#: src/fe-gtk/setup.c:242 +msgid "Tree" +msgstr "Д_ерево" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "Тип перемикача:" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Відкривати вкладку для повідомлень сервера" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Відкривати вкладку для зауважень сервера" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "Відкривати вкладку при отриманні приватних повідомлень" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Сортувати вкладки за алфавітом" + +#: src/fe-gtk/setup.c:254 +msgid "Smaller text" +msgstr "Маленький текст" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Фокус на нові вкладки:" + +#: src/fe-gtk/setup.c:258 +msgid "Show channel switcher at:" +msgstr "Показати перемикач каналів:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Скорочувати вкладки до:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "симв." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Вкладках або вікнах" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Відкривати канали у:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Відкривати діалоги у:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Відкривати утиліти у:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Відкривати DCC, Ігнорування, Сповіщення, тощо у вкладках або вікнах?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "Ні" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Так" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "Вибирати теку збереження щоразу" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Файли та каталоги" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Автоматично приймати файли:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Завантажувати файли в:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Переміщувати завершені файли в:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Зберігати нікнейм в назвах файлів" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Параметри мережі" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Отримувати власну IP адресу з IRC сервера" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Виконайте команду /WHOIS для свого нікнейму, щоб визначити сою реальну " +"адресу. Використовуйте це, якщо ваша адреса 192.168.*.* !" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "IP адреса DCC:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Заявляти цю адресу при пропонуванні файлів." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Початковий порт DCC:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Заключний порт DCC:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!Залиште порти нульовими для повного діапазону." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Максимальна швидкість передачі файлів (байт на секунду)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Одне завантаження:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Максимальна швидкість для однієї передачі" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Одне скачування:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Всі завантаження:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Максимальна швидкість для усього трафіка" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Всі скачування:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Увага!" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "Показувати плаваючі повідомлення, коли:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "Блимати у треї, коли:" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "Блимати на панелі задач, коли:" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "Видавати звук 'beep', коли" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "Увімкнути значок у області сповіщення" + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "Підсвічені повідомлення" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Підсвічені повідомлення, це ті, де згадали ваш нікнейм, а також:" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "Реагувати також на слова:" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "Не підсвічувати нікнейми:" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "Завжди підсвічувати нікнейми:" + +#: src/fe-gtk/setup.c:347 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" +"Відокремлюйте слова комами.\n" +"Шаблони також приймаються." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Типові повідомлення" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Вихід:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Залишення каналу:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Відсутній:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Відсутній" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Оголошувати перехід у \"Відсутній\"" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Оголошувати перехід у \"Відсутній\" в усіх каналах" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Показувати \"Відсутній\" лише один раз" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Показувати ідентичні повідомлення лише один раз" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Автоматично знімати \"Відсутній\"" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Знімати стан \"Відсутній\" перед надсиланням повідомлень" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Розширені параметри" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Затримка автоматичного відновлення з'єднання:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Відображати режими в чистому вигляді" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Whois при сповіщенні" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" +"Надсилати /WHOIS коли користувач з вашого списку сповіщень підключається." + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Приховувати сповіщення про вхід/вихід" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Приховувати типово повідомлення про вхід/вихід" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Автоматично відкривати діалогові вікна" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Вікно відсилання" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Вікно отримання" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Вікно каналу" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Журнали" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "Показувати останні повідомлення з попередньої бесіди" + +#: src/fe-gtk/setup.c:387 +msgid "Enable logging of conversations to disk" +msgstr "Увімкнути запис журналу повідомлень" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Файл журналу:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Сервер %c=Канал %n=Мережа." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Вносити час події в журнал" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Формат запису часу в журнал:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(вимкнено)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Усі з'єднання" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "Лише сервер IRC" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "Лише DCC" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "IP адреса" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Зачепитися на:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "Корисне, лише коли комп'ютер має декілька адрес." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Проксі сервер" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Назва вузла:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Порт:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Тип:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Використовувати проксі для:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Автентифікація проксі" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Використовувати аутентифікацію (лише MS Proxy, HTTP та Socks5)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Використовувати аутентифікацію (лише HTTP та Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Ім'я користувача:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Пароль:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Виберіть файл зображення" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "Виберіть теку для завантажень" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Вибір шрифту" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Вибрати..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Позначати ідентифікованих користувачів:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Позначати·не ідентифікованих·користувачів:" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "Відкрити теку даних" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Вибір кольору" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Кольори" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "Кольори mIRC:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Локальні кольори:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Передній план:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Тло:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Виділення тексту" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Інтерфейс" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Нові дані:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Маркер:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Нове повідомлення:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Користувач, що відсутній:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Підсвічення:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Подія" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Звуковий файл" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Виберіть звуковий файл" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Метод відтворення:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "Зовнішня _програма для відтворення звуку:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "З_овнішня програми" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_Автоматично" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "_Каталог звукових файлів:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Звуковий файл:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "В_ибрати..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "_Відтворити" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Інтерфейс" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Текст" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Список користувачів" + +#: src/fe-gtk/setup.c:1703 +msgid "Channel switcher" +msgstr "Перемикач каналів" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Кольори" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Розмови" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Загальне" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Звук" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Параметри мережі" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Передача файлів" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Категорії" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" +"Не можна розміщувати дерево вгорі чи внизу!\n" +"Спочатку змініть розташування пункту <b>Вкладки</b> у меню <b>Вигляд</b>." + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" +"Для набуття сили змін у деяких параметрах потрібно перезапустити програму." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*ПОПЕРЕДЖЕННЯ*\n" +"Автоматичне приймання DCC до вашої домашньої теки\n" +"може бути небезпечним. Наприклад:\n" +"хтось може надіслати вам .bash_profile" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: Параметри" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Помилка при аналізу рядку" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Цей сигнал приймає лише аргументи %d, аргумент $%d не підходить" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Друкувати текстовий файл" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Правка подій" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ Число" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Завантажити з..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Перевірити всі" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: Захоплювач URL" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Очистити список" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Копіювати виділений текст" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Копіювати" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Записати список у файл." + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d операторів, %d всього" + +#~ msgid "About XChat" +#~ msgstr "Про XChat" + +#, fuzzy +#~ msgid "Set _back" +#~ msgstr "_Шукати назад" + +#~ msgid "C_hannels to join:" +#~ msgstr "_Канал для входу:" + +#, fuzzy +#~ msgid "Execute command" +#~ msgstr "Виконати команду:" + +#~ msgid "" +#~ "Set per channel options\n" +#~ "CHANOPT CONFMODE ON|OFF - Toggle conf mode/showing of join and part " +#~ "messages\n" +#~ "CHANOPT COLORPASTE ON|OFF - Toggle color paste\n" +#~ "CHANOPT BEEP ON|OFF - Toggle beep on message\n" +#~ "CHANOPT TRAY ON|OFF - Toggle tray blink on message" +#~ msgstr "" +#~ "Встановити параметри каналу\n" +#~ "CHANOPT CONFMODE ON|OFF - вмикання режиму conf mode/відображення " +#~ "об'єднання частин повідомлень\n" +#~ "CHANOPT COLORPASTE ON|OFF - увімкнути/вимкнути вставку кольору\n" +#~ "CHANOPT BEEP ON|OFF - увімкнути/вимкнути звуковий сигнал при появі " +#~ "повідомлень\n" +#~ "CHANOPT TRAY ON|OFF - увімкнути/вимкнути миготіння повідомлення у області " +#~ "сповіщення" + +#~ msgid "Direct client-to-client" +#~ msgstr "Безпосереднє з'єднання" + +#~ msgid "Send File" +#~ msgstr "Надіслати файл" + +#~ msgid "Offer Chat" +#~ msgstr "Запропонувати бесіду" + +#~ msgid "Abort Chat" +#~ msgstr "Перервати бесіду" + +#~ msgid "Userinfo" +#~ msgstr "Інформація про користувача" + +#~ msgid "Clientinfo" +#~ msgstr "Інформація про клієнта" + +#~ msgid "Time" +#~ msgstr "Час" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "Операція" + +#~ msgid "Kill this user" +#~ msgstr "Знищити цього користувача" + +#~ msgid "Mode" +#~ msgstr "Режим" + +#~ msgid "Give Half-Ops" +#~ msgstr "Надати напівоператора" + +#~ msgid "Take Half-Ops" +#~ msgstr "Відібрати напівоператора" + +#~ msgid "Ignore" +#~ msgstr "Ігнорувати" + +#~ msgid "Ignore User" +#~ msgstr "Ігнорувати користувача" + +#~ msgid "UnIgnore User" +#~ msgstr "Зняти ігнорування користувача" + +#~ msgid "Info" +#~ msgstr "Інформація" + +#~ msgid "Who" +#~ msgstr "Хто " + +#~ msgid "DNS Lookup" +#~ msgstr "Перегляд DNS" + +#~ msgid "Trace" +#~ msgstr "Трасування" + +#~ msgid "UserHost" +#~ msgstr "Комп'ютер користувача" + +#~ msgid "External" +#~ msgstr "Зовнішні" + +#~ msgid "Traceroute" +#~ msgstr "Traceroute" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "Blink tray on message" +#~ msgstr "Миготіння у області сповіщення при отриманні повідомлення" + +#~ msgid "Show join/part messages" +#~ msgstr "Сповіщати про вхід/вихід" + +#~ msgid "Color paste" +#~ msgstr "Вставити колір" + +#~ msgid "_Close Tab" +#~ msgstr "_Закрити вкладку" + +#~ msgid "Channel List..." +#~ msgstr "Список каналів..." + +#~ msgid "Notify List..." +#~ msgstr "Список сповіщень..." + +#~ msgid "_Close Window" +#~ msgstr "_Закрити вікно" + +#~ msgid "User" +#~ msgstr "Користувач" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: Список сповіщень" + +#~ msgid "Unban" +#~ msgstr "Зняти заборону" + +#, fuzzy +#~ msgid "Channel Switcher" +#~ msgstr "канали з" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "Немає відкритих вкладок, вийти з xchat?" + +#~ msgid "_Layout" +#~ msgstr "_Розташування" + +#~ msgid "Quit..." +#~ msgstr "Вихід..." + +#~ msgid "Resizable user list" +#~ msgstr "Список користувачів змінної ширини" + +#~ msgid "Left" +#~ msgstr "ліворуч" + +#~ msgid "Right" +#~ msgstr "праворуч" + +#, fuzzy +#~ msgid "Above user list" +#~ msgstr "Список користувачів змінної ширини" + +#~ msgid "US Minor Outlying Islands" +#~ msgstr "US Minor Outlying Islands" + +#~ msgid "File Offer" +#~ msgstr "Передача файлу" + +#~ msgid "Flash taskbar on highlighted messages" +#~ msgstr "Миготіння панелі задач при отриманні виділених повідомлень" + +#~ msgid "Flash taskbar on private messages" +#~ msgstr "Миготіння панелі задач при отриманні приватних повідомлень" + +#~ msgid "Beep on highlighted messages" +#~ msgstr "Звуковий сигнал при отриманні виділених повідомлень" + +#~ msgid "Beep on private messages" +#~ msgstr "Звуковий сигнал при отриманні особистих повідомлень" + +#~ msgid "Beep on channel messages" +#~ msgstr "Звуковий сигнал при канальних повідомленнях" + +#~ msgid "%C18*$t$1%O $2" +#~ msgstr "%C18*$t$1%O $2" + +#~ msgid "%C21*%O$t%C21%B$1%O%C21 $2" +#~ msgstr "%C21*%O$t%C21%B$1%O%C21 $2" + +#~ msgid "%C18%H<%H$4$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$4$1%H>%H%O$t$2" + +#~ msgid "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" +#~ msgstr "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" + +#~ msgid "%C28-%C29$1/$2%C28-%O$t$3" +#~ msgstr "%C28-%C29$1/$2%C28-%O$t$3" + +#~ msgid "$1$t$2" +#~ msgstr "$1$t$2" + +#~ msgid "%C19>%O$1%C19<%O$t$2" +#~ msgstr "%C19>%O$1%C19<%O$t$2" + +#~ msgid "%C16*%O$t$1%O" +#~ msgstr "%C16*%O$t$1%O" + +#~ msgid "%C28-%C29$1%C28-%O$t$2" +#~ msgstr "%C28-%C29$1%C28-%O$t$2" + +#~ msgid "%C28*%C29$3$1%C28*$t%O$2" +#~ msgstr "%C28*%C29$3$1%C28*$t%O$2" + +#~ msgid "%C18%H<%H$3$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$3$1%H>%H%O$t$2" + +#~ msgid "%C22*%O$t$1" +#~ msgstr "%C22*%O$t$1" + +#~ msgid "%C31%H<%H$4$1%H>%H%O%C30$t$2" +#~ msgstr "%C31%H<%H$4$1%H>%H%O%C30$t$2" + +#~ msgid "PID" +#~ msgstr "PID" + +#~ msgid "France, Metropolitan" +#~ msgstr "Франція, Метрополітан" + +#~ msgid "Neutral Zone" +#~ msgstr "Нейтральна зона" + +#~ msgid "I can't save an empty list!" +#~ msgstr "Не можна зберігати порожній список!" + +#~ msgid "List display options:" +#~ msgstr "Параметри відображення списку:" + +#~ msgid "Minimum Users:" +#~ msgstr "Мін. користувачів:" + +#~ msgid "Maximum Users:" +#~ msgstr "Макс. користувачів:" + +#~ msgid "Regex Match:" +#~ msgstr "Шаблон рег.виразу:" + +#~ msgid "Apply Match to:" +#~ msgstr "Застосувати до:" + +#~ msgid "Apply" +#~ msgstr "Застосувати" + +#~ msgid "Refresh the list" +#~ msgstr "Оновити список" + +#~ msgid "Save the list" +#~ msgstr "Зберегти список" + +#~ msgid "Go to" +#~ msgstr "Перейти" + +#~ msgid "Settings saved." +#~ msgstr "Параметри збережено." + +#~ msgid "Server" +#~ msgstr "Сервер" + +#~ msgid "Save rawlog" +#~ msgstr "Збереження журналу" + +#~ msgid "Save rawlog..." +#~ msgstr "Зберегти журнал..." + +#~ msgid "Completes nick names without using the TAB key" +#~ msgstr "Доповнювати прізвиська без використання клавіші TAB" + +#~ msgid "Input Box Appearance" +#~ msgstr "Вигляд поля вводу" + +#~ msgid "Tabs Location" +#~ msgstr "Розміщення вкладок" + +#~ msgid "Convert spaces to underscore before sending" +#~ msgstr "Перетворювати пробіли в знак підкреслення" + +#~ msgid "(Can be a text file relative to ~/.xchat2/)." +#~ msgstr "(Може бути текстовий файл відносно ~/.xchat2/)." + +#~ msgid "(Can be a text file relative to config dir)." +#~ msgstr "(Може бути текстовий файл відносно каталогу конфігурації)." + +#~ msgid "(See strftime manpage for details)." +#~ msgstr "(Докладнішу інформацію дивіться у довідці з strftime)." + +#~ msgid "Open an irc:// url" +#~ msgstr "Відкрити irc:// url" + +#~ msgid "irc://server:port/channel" +#~ msgstr "irc://сервер:порт/канал" + +#~ msgid "Execute a xchat command" +#~ msgstr "Виконати команду xchat" + +#~ msgid "\"Command to execute\"" +#~ msgstr "\"Команда для виконання\"" + +#~ msgid "Prints some text to the current tab/window" +#~ msgstr "Виводить текст у поточну вкладку/вікно " + +#~ msgid "\"Text to print\"" +#~ msgstr "\"Тест\"" + +#~ msgid "Change the context to the channel" +#~ msgstr "Змінити контекст на канал" + +#~ msgid "Change the context to the server" +#~ msgstr "Змінити контекст на сервер" + +#~ msgid "server" +#~ msgstr "сервер" + +#~ msgid "Get some informations from xchat" +#~ msgstr "Отримати певну інформацію з xchat" + +#~ msgid "id" +#~ msgstr "ідентифікатор" + +#~ msgid "Get settings from xchat" +#~ msgstr "Отримати параметри xchat" + +#~ msgid "name" +#~ msgstr "назва" + +#~ msgid "" +#~ "xchat-remote: %s\n" +#~ "Try `xchat-remote --help' for more information\n" +#~ msgstr "" +#~ "xchat-remote: %s\n" +#~ "Для докладнішої інформації виконайте `xchat-remote --help'\n" + +#~ msgid "Failed to complete SetContext" +#~ msgstr "Не вдається завершити SetContext" + +#~ msgid "Failed to complete print" +#~ msgstr "Не вдається завершити вивід" + +#~ msgid "Failed to complete GetInfo" +#~ msgstr "Не вдається завершити GetInfo" + +#~ msgid "Failed to complete GetPrefs" +#~ msgstr "Не вдається завершити GetPrefs" + +#~ msgid "%s doesn't exist\n" +#~ msgstr "%s не існує\n" + +#~ msgid "%s loaded successfully!\n" +#~ msgstr "%s успішно завантажено!\n" diff --git a/etc/wyatt8740/po/vi.po b/etc/wyatt8740/po/vi.po new file mode 100644 index 0000000..67f7fd2 --- /dev/null +++ b/etc/wyatt8740/po/vi.po @@ -0,0 +1,5822 @@ +# Vietnamese translation for XChat. +# Copyright © 2007 Free Software Foundation, Inc. +# Clytie Siddall <clytie@riverland.net.au>, 2005-2007. +# +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.8.4\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2007-06-26 14:57+0930\n" +"Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n" +"Language-Team: Vietnamese <vi-VN@googlegroups.com>\n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: LocFactoryEditor 1.6.4a3\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Không thể tạo thư mục « ~/.xchat2 »" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Tôi đang bận" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Tôi đi" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"• Chạy IRC với tư cách người chủ (root) là không an toàn. •\n" +"Bạn nên tạo một tài khoản người dùng và sử dụng nó để đăng nhập.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Đang đời" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Hoặt động" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Bị lỗi" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Đã xong" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Kết nối" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Bị hủy bỏ" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "Không thể truy cập %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Lỗi" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s đang cung cấp « %s ». Bạn có muốn chấp nhận không?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Không có DCC (trò chuyện trực tiếp) hoặt động nào\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "CÓ " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "KHÔNG " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Bạn đang bị tấn công bằng CTCP bởi %s nên bỏ qua %s.\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "" +"Bạn đang bị tấn công bằng MSG bởi %s nên đặt tùy chọn tự động mở đối thoại " +"giao diện (gui_auto_open_dialog) bị TẮT.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s trực tuyến\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s ngoạị tuyến\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Chưa vào kênh nào : hãy thử lệnh « /join #<kênh> »\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Chưa kêt nối: hãy thử lệnh « /server <máy> [<cổng>] »\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Đã nhãn « Vắng mặt »: %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "Đã nhán « Trở về »:\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "Cần « /bin/sh » để chạy được.\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Các lệnh sẵn sàng:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Các lệnh xác định riêng:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Các lệnh xác định bởi bổ sung:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "" +"Hãy gõ lệnh « /HELP <lệnh> » để xem thông tin thêm (help: trợ giúp), hay « /" +"HELP -l »." + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Không biết đối số « %s » nên bỏ qua nó." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "Không tìm thấy bổ sung như vậy.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Bổ sung đó từ chối bỏ nặp.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "" +"ADDBUTTON <tên> <hành_động>, _thêm_ một _cái nút_ bên dưới danh sách người " +"dùng" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <lệnh>, gửi lệnh này tới _mọi kênh_ nơi bạn ở" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHANL <lệnh>, gửi lệnh này tới _mọi kênh_ nơi bạn ở" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <lệnh>, gửi lệnh này tới _mọi máy phục vụ_ nơi bạn ở" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<lý do>], đặt trang thái của bạn thành _vắng mặt_" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "BACK đặt bạn đã trở về (không phải vắng mặt)" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <bộ_lọc> [<kiểu_đuổi>], _đuổi_ mọi người khớp với bộ lọc này ra kênh " +"hiện tại. Cần quyền quan trị kệnh (chanop) để đuổi ra người nào đang trên " +"kênh" + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "" +"SET [-e] [-or] [-quiet] <biến> [<giá_trị>]\n" +"[SET (đặt); or (hoặx); quiet (không hiện chi tiết)]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "" +"CLEAR [ALL|HISTORY], _xoá trống_ cửa sổ văn bản (ALL: tất cả) hay _lịch sử_ " +"lệnh (HISTORY) hiện có" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, _đóng_ cửa sổ/thẻ hiện có" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" +"COUNTRY [-s] <mã|ký_tự_đại_diện>, tìm thấy _quốc gia_, v.d. mã « au » = Úc" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <tên_hiệu> <tin_nhẳn>, gởi cho <tên_hiệu> <tin nhẳn> CTCP: hai tin nhẳn " +"thường là VERSION (phiên bản) và USERINFO (thông tin người dùng)" + +#: src/common/outbound.c:3516 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "" +"CYCLE [<kênh>], rời kênh này hay kênh hiện tại rồi vào lại ngay (_quay lại_)" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <tên_hiệu> \t\tchấp nhận tập tin đã đưa ra (_lấy_)\n" +"DCC SEND [-maxcps=#] <tên_hiệu> [tập_tin]\n" +"\t_gởi_ [tập tin] cho <tên hiệu> (max. : tối đa)\n" +"DCC PSEND [-maxcps=#] <tên_hiệu> [tập_tin]\n" +"\t_gởi_ [tập_tin] cho <tên_hiệu> bằng chế độ _bị động_\n" +"DCC LIST \t\t\t\thiển thị _danh sách_ DCC\n" +"DCC CHAT <tên_hiệu> \tđưa ra _trò chuyện_ DCC với <tên hiệu>\n" +"DCC PCHAT <tên_hiệu>\n" +"\tđưa ra _trờ chuyện_ DCC với <tên_hiệu> bằng chế độ _bị động_\n" +"DCC CLOSE <kiểu> <tên_hiệu> <tập_tin> (_đóng_) thí dụ:\n" +" </dcc close send nguyenvan tập_tin.tar.gz>\n" +"\tgởi cho người nguyenvan tập_tin.tar.gz rồi đóng kết nối DCC" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <tên_hiệu>, bỏ ra <tên hiệu> trạng thái quản trị kênh nửa (chanhalf-" +"op) trên kênh hiện tại (cần quyền quản trị kênh)\n" +"[DE (bỏ ra) Half (nửa) OPerator (quản trị viên)]" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "" +"DELBUTTON <tên>, xóa bỏ cái nút <tên> ra dưới danh sách người dùng\n" +"[DELete (xóa bỏ) BUTTON (nút)]" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <tên_hiệu>, bỏ ra <tên hiệu> trạng thái quản trị kênh (chanop) trên " +"kênh hiện tại (cần quyền quản trị kênh (chanop))\n" +"[DE (bỏ) OPerator (quản trị viên)]" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <tên_hiệu>, bỏ ra <tên hiệu> trạng thái tiếng nói trên kênh hiện tại " +"(cần quyền quản trị kênh [chanop])\n" +"[DE (bỏ) VOICE (tiếng nói)]" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "" +"DISCON, ngắt kết nối ra máy phục vụ\n" +"[DISCONnect (ngắt kết nối)]" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "" +"DNS <tên_hiệu|máy_phục_vụ|ip>, tìm thấy địa chỉ IP của <ten hiệu>\n" +"[Domain Name System (Hệ thống tên miền)]" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "" +"ECHO <đoạn>, in ra <đoạn> một cách địa phương\n" +"[ECHO (vọng, phản hồi)]" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <lệnh>, chạy <lệnh>. Nếu thêm cờ « -o », gởi dữ liệu xuất cho kênh " +"hiện tại, nếu không thì in ra nó vào hộp văn bản hiện tại\n" +"[EXECute (thực hiện)]" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "" +"EXECCONT, gởi tiến trình SIGCONT\n" +"[EXECute (thực hiện) CONTinue (tiếp tục)\n" +"SIGnal (tín hiệu) CONTinue (tiếp tục)]" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], buộc kết thúc tiến trình đang chạy trong phiên làm việc hiện " +"tại. Nếu thêm cờ « -9 », SIGKILL tiến trình này\n" +"[EXECute (thực hiện) KILL (buộc kết thúc)\n" +"SIGnal (tín hiệu) KILL (buộc kết thúc)]" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "" +"EXECSTOP, gởi tiến trình SIGSTOP\n" +"[EXECute (thực hiện) STOP (dừng)\n" +"SIGnal (tín hiệu) STOP (dừng)]" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "" +"EXECWRITE, gởi dữ liệu cho thiết bị nhập chuẩn của tiến trình\n" +"[EXECute (thi hành) WRITE (ghi)]" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "" +"FLUSHQ, xóa sạch hàng đợi gởi của máy phục vụ hiện tại\n" +"[FLUSH (xoá sạch) Queue (hàng đời)]" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" +"GATE <máy_phục_vụ> [<cổng>], sử dụng máy ủy nhiệm; <cổng> mặc định là 23\n" +"[GATE (cổng)]" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" +"GHOST <tên_hiệu> <mật_khẩu>, buộc kết thúc tên hiệu ma (bị ngắt còn máy phục " +"vụ chưa thay đổi trạng thái)\n" +"[GHOST (ma)]" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" +"HOP <tên_hiệu>, đưa ra <tên hiệu> trạng thái quản trị kênh nửa (cần quyền " +"quản trị kênh [chanop])\n" +"[Half (nửa) OPerator (quản trị viên)]" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "" +"ID <mật_khẩu>, nhận diện bạn với máy phục vụ tên hiệu\n" +"[IDentify (nhận diện)]" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <bộ_lọc> <kiểu...> <tùy_chọn...> »\n" +"[IGNORE (bỏ qua)]\n" +" bộ lọc\t\tbộ lọc máy cần bỏ qua, v.d. « *!*@*.aol.com »\n" +" kiểu\t\tkiểu dữ liệu cần bỏ qua, giá trị là một hay tất cả của:\n" +" \tPRIV\t\tPRIVate (riêng)\n" +"\tCHAN\tCHANnel (kênh)\n" +"\tNOTI\tNOTIfy, NOTIce (thông báo)\n" +"\tCTCP\n" +"\tDCC \tDirect Chat Channel (kênh trò chuyện trực tiếp)\n" +"\tINVI\t\tINVIte (mời)\n" +"\tALL \t\t(tất cả)\n" +" tùy chọn\n" +"\tNOSAVE \t(không lưu)\n" +"\tQUIET \t(không hiện chi tiết)" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <tên_hiệu> [<kênh>], _mời_ <tên hiệu> vào <kênh>; mặc định là kênh " +"hiện tại (cần quyền quản trị kênh [chanop])" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <kênh>, _vào_ <kênh>" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <tên_hiệu>, _đá_ <tên hiệu> ra kênh hiện tại (cần quyền quản trị kênh " +"[chanop])" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <tên_hiệu>, _đuổi_ rồi _đá_ <tên hiệu> ra kênh hiện tại (cần quyền " +"quản trị kênh [chanop])" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, buộc _kiểm tra sự trễ_ mới" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "" +"LASTLOG <chuỗi>, tìm kiếm <chuỗi> trong bộ đệm\n" +"[LOG (bản ghi) LAST (cuối cùng)" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <tập_tin>, _nạp_ một bổ sung hay tập lệnh" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, bỏ trạng thái quản trị kênh nửa (chanhalf-op) ra mọi người trên kênh " +"hiện tại (cần quyền quản trị kênh [chanop])\n" +"[Mass (số nhiều) DE (bỏ) Half (nửa) OPerator (quản trị viên)]" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, bỏ trạng thái quản trị kênh (chanop) ra mọi người trên kênh hiện tại " +"(cần quyền quản trị kênh [chanop])\n" +"[Mass (số nhiều) DE (bỏ) OPerator (quản trị viên)]" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <hành_động>, gởi <hành động> cho kênh hiện tại (v.d. « /me jumps » gởi « " +"<tên hiệu> nhảy »\n" +"[ME (tôi, mình)]" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, đá mọi người (trừ bạn) ra kênh hiện tại (cần quyền quản trị kênh " +"[chanop])\n" +"[Mass (số nhiều) KICK (đá)]" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, đưa ra mọi người dùng có trạng thái quản trị kênh (chanop) trên kênh " +"hiện tại (cần quyền quản trị kênh [chanop])\n" +"[Mass (số nhiều) OPerator (quản trị viên)]" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "" +"MSG <tên_hiệu> <tin_nhẳn>, gởi <tin nhẳn> riêng\n" +"[MeSsaGe (tin nhẳn [viết tắt])]" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, liệt kê _các tên_ hiệu trên kênh hiện tại" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "" +"NCTCP <tên_hiệu> <tin_nhẳn>, gởi thông báo CTCP\n" +"[Notice (thông báo) CTCP]" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "" +"NEWSERVER [-noconnect] <tên_máy> [<cổng>]\n" +"[SERVER (máy phục vụ) NEW (mới); no connect (không kết nối)]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "" +"NICK <tên_hiệu>, đặt <tên hiệu> của bạn\n" +"[NICKname (tên hiệu [viết tắt])]" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <tên_hiệu/kênh> <thông_điệp>, gởi một _thông báo_: thông báo là kiểu " +"thông điệp nên nhận trả lời tự động" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n mạng1[,mạng2,...]] [<tên_hiệu>], hiển thị danh sách _thông báo_ " +"của bạn, hoặc thêm <tên_hiệu> vào nó" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" +"OP <tên_hiệu>, đưa ra <tên hiệu> có trạng thái quản trị kênh (chanop) (cần " +"quyền quản trị kênh [chanop])\n" +"[OPerator (quản trị viên)]" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" +"PART [<kênh>] [<lý_do>], rời <kênh> đi; mặc định là kênh hiện tại\n" +"[dePART (rời đi)]" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "" +"PING <tên_hiệu | kênh>, thực hiện tiến trình « ping » CTCP với <tên hiêu> " +"hay <kênh>\n" +"[Tiến trình ping gửi chỉ một gói tin để thử ra nếu kết nối hoạt động hay " +"không; nó gửi lại đến khi bạn ngắt nó.]" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "" +"QUERY [-nofocus] <tên_hiệu>, mở một cửa sổ tin nhẳn riêng mới với " +"<tên_hiệu>\n" +"[QUERY (truy vấn); no focus (không có tiêu điểm)]" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "" +"QUIT [<lý_do>], ngắt kết nối ra máy phục vụ hiện tại\n" +"[QUIT (_thoát_)]" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "" +"QUOTE <chuỗi>, gởi <chuỗi> dạng thô cho máy phục vụ\n" +"[QUOTE (trích dẫn)]" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<máy>] [<cổng>] [<mật_khẩu>], có thể tái kết nối đến mấy " +"phục vụ hiện tại khi chỉ đơn giản dùng « /RECONNECT », hoặc tái kết nối đến " +"mọi máy phục vụ đang mở dùng « /RECONNECT ALL »\n" +"[RECONNECT (tái kết nối); (phương pháp SSL bảo vệ dữ liệu cần truyền)]" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<máy>] [<cổng>] [<mật_khẩu>], có thể tái kết nối đến mấy phục vụ " +"hiện tại chỉ đơn giản dùng « /RECONNECT », hoặc tái kết nối đến mọi máy phục " +"vụ đang mở dùng « /RECONNECT ALL »\n" +"[RECONNECT (tái kết nối); không có SSL bảo vệ dữ liệu)]" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <chuỗi>, gởi dữ liệu thô vào trình xchat, dạng máy phục vụ IRC đã gởi\n" +"[RECeiVe (nhận)]" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "" +"SAY <chuỗi>, gởi <chuỗi> cho đối tượng trong cửa sổ hiện tại\n" +"[SAY (_nói_)]" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <tên_hiệu> [<tập_tin>], _gởi_ <tập tin> cho <tên hiệu>" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <máy> <cổng> <kênh>, kết nối đến <kênh> rồi vào nó\n" +"[SERVer (máy phục vụ) CHANnel (kênh); phương pháp SSL bảo vệ dữ liệu cần " +"truyền)]" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN <máy> <cổng> <kênh>, kết nối đến <kênh> rồi vào nó\n" +"[SERVer (máy phục vụ) CHANnel (kênh); không có SSL bảo vệ dữ liệu)]" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <máy> [<cổng>] [<mật_khẩu>], kết nối đến <máy> phục vụ : " +"<cổng> mặc định là số 6667 cho kết nối chuẩn, và số 9999 cho kết nối kiểu " +"SSL\n" +"[SERVER (máy phục vụ); phương pháp SSL bảo vệ dữ liệu cần truyền)]" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <máy> [<cổng>] [<mật_khẩu>], kết nối đến <mấy> phục vụ ; cổng mặc " +"định là số 6667\n" +"[SERVER (máy phục vụ); không có SSL bảo vệ dữ liệu)]" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "" +"SET [-e] [-or] [-quiet] <biến> [<giá_trị>]\n" +"[SET (đặt); or (hoặx); quiet (không hiện chi tiết)]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "" +"SETCURSOR [-|+]<vị_trí>\n" +"[SET (đăt) CURSOR (con chạy)]" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<chủ_đè>], lập <chủ đề> nếu nó đã cho, nếu không thì hiển thị chủ đề " +"hiện tại." + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" +"\n" +"TRAY -f <thời hạn> <tập tin 1> [<tập tin 2>] Chớp khay giữa hai biểu tượng.\n" +"TRAY -f <tập tin> Đặt khay là biểu tượng riêng.\n" +"TRAY -i <số> Chớp khay với biểu tượng bên trong.\n" +"TRAY -t <chuỗi> Đặt mẹo công cụ của khay.\n" +"TRAY -b <tựa> <chuỗi> Đặt khung thoại của khay." + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "" +"UNBAN <bộ_lọc> [<bộ_lọc>...], bỏ trạng thái bị đuổi ra những bộ lọc đã ghi " +"rõ\n" +"[UN (hủy) BAN (đuổi)]" + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "" +"UNIGNORE <bộ_lọc> [QUIET]\n" +"[UN (hủy) IGNORE (bỏ qua); QUIET (không hiện chi tiết)]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "" +"UNLOAD <tên>, bỏ nạp một bổ sung hay văn lệnh\n" +"[UN (hủy) LOAD (nạp)]" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, mở địa chỉ <url> trong trình duyệt Mạng của bạn." + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <tên_hiệu1> <tên_hiệu2> v.v., tô sáng những tên hiệu này " +"trong danh sách các người dùng trên kênh\n" +"[User (người dùng) SELECT (lựa chọn)]" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "" +"VOICE <tên_hiệu>, đưa ra <tên hiệu> trạng thái _tiếng nói_ (cần quyền quản " +"trị kênh [chanop])." + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "" +"WALLCHAN <thông_điệp>, ghi <thông_điệp> vào mọi kênh\n" +"[Write (ghi) ALL (mọị) CHANnel (kênh)]" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <thông_điệp>, gởi <thông_điệp> cho mọi quản trị kênh [chanop] trên " +"kênh hiện tại\n" +"[Write (ghi) ALL (mọi) CHannel (kênh) OPerator (quản trị viên)]" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Cách sử dụng: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"Không có trợ giúp về lệnh đó.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Không có lệnh như vậy.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Lệnh người dùng có đối số sai.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Quá nhiều lệnh người dùng đệ qui nên hủy bỏ." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Không biết lệnh này: bạn hãy thử lệnh « /help » (trợ giúp).\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "" +"Không có ký hiệu « xchat_plugin_init » (khởi động bổ sung xchat): điều này " +"thật là bổ sung kiểu xchat không?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Bạn có chắc điều này là máy phục vụ và cổng có khả năng SSL không?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Không tìm thấy tên máy %s.\n" +"Hãy kiểm tra thiết lập IP của bạn.\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Việc đi qua máy phục vụ ủy nhiệm bị lỗi.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Đang quay lại đến mấy phục vụ kế tiếp trong %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Cảnh báo : không biết bộ ký tự « %s » nên không chuyển đổi cho mạng %s." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 đã được thêm vào danh sách thông báo." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Danh sách đuổi ra:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tKhông thể vào%C26 %B$1 %O(vì bạn bị đuổi ra)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 lúc bây giờ được biết như là $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 đuổi $2 ra" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tKênh$1 được tạo vào $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O bỏ trạng thái quản trị kênh nửa ra%C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O bỏ trạng thái quản trị kênh ra%C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O bỏ trạng thái « Tiếng nói » ra%C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 đặt trạng thái miễn cho $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O đưa ra%C26 $2 trạng thái quản trị kênh nửa" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 đặt trạng thái mời cho $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UKênh \t Người Chủ đề" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 đặt chế độ $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Kênh $1 chế độ : $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O đưa ra%C26 $2 trạng thái quản trị kênh" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 bỏ trạng thái miễn ra $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 bỏ trạng thái mời ra $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 bỏ từ khoá kênh" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 bỏ giới hạn người dùng" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 đặt từ khoá kênh thành $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 đặt giới hạn kênh thành $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 bỏ trạng thái bị đuổi ra $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O đưa ra %C26 $2 trạng thái « Tiếng nói »" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Mới kết nối. Đang đăng nhập..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22Đang kết nối đến $1 ($2) trên cổng $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21Kết nối bị lỗi: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tMới nhận CTCP $1 từ $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tMới nhận CTCP $1 từ $2 (cho $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tMới nhận âm thanh CTCP $1 từ $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tMới nhận âm thanh CTCP $1 từ $2 (cho $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tTrò chuyện trực tiếp (DCC) với %C26$1%O bị hủy bỏ." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "" +"%C22*%O$tMới kết nối được để trò chuyện trực tiếp (DCC) với %C26$1 " +"%C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tTrò chuyện trực tiếp (DCC) cho %C26$1%O bị mất ($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tMới nhận lời mời trò chuyện trực tiếp (DCC) từ $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tĐang mời $1 tro chuyện trực tiếp (DCC)" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tĐã mời $1 trò chuyện" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$tDCC $1 việc cố kết nối đến%C26 $2%O bị lỗi (lỗi=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tMới nhận « $1%O » từ $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 Kiểu Đến/Từ TrThái Cỡ Vị trí Tệp " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O." +"%010%C22*%O$tContents of packet: $2" +msgstr "" +"%C22*%O$tMới nhận yêu cầu dạng sai trò chuyện trực tiếp (DCC) từ %C26$1%O." +"%010%C22*%O$tNội dung gói tin: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tĐang đưa ra%C26 $1%O cho%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tKhông có lời mời trò chuyện trực tiếp (DCC) như vậy." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tNHẬN DCC%C26 $2%O cho%C26 $1%O bị hủy bỏ." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tNHẬN DCC%C26 $1%O từ%C26 $3%O hoàn thành %C30[%C26$4%O cps%C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tMới kết nối kiểu NHẬN DCC đếnC26 $1 %C30[%O$2%C30]." + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tNHẬN DCC%C26 $1%O từ%C26 $3%O bị lỗi ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tNHẬN DCC: không thể mở $1 để ghi ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "%C22*%O$tTập tin%C26 $1%C đã có : đang lưu nó dạng %C26 $2%O thay thế." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Ođã yêu cầu tiếp tục%C26 $2 %Ctừ%C26 $3%C." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tGỞI DCC%C26 $2%O cho%C26 $1%O bị hủy bỏ." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tGỞI DCC%C26 $1%O cho%C26 $2%O hoàn thành %C30[%C26$3%O cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tMới kết nối DCC GỞI đến%C26 $1 %C30[%O$2%C30]." + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tViệc kết nối DCC GỞI%C26 $1%O đến%C26 $2%O bị lỗi. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Ođã mời%C26 $2 %O(%C26$3 %Obyte)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Ođến%C26 $3 %Cbị ngừng nên hủy bỏ." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Ođến%C26 $3 %Oquá giờ nên hủy bỏ." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 đã được xoá bỏ ra danh sách thông báo." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tBị ngắt kết nối ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tTìm thấy địa chỉ IP của bạn: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O đã được thêm vào danh sách bỏ qua." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "Trang thái bỏ qua về %C26$1%O bị thay đổi." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "" +"%C24,18 Bộ lọc máy PRIV NOTI CHAN CTCP DCC INVI UNIG\n" +"\n" +"[PRIVate\t\triêng\n" +"NOTIfy\t\tthông báo\n" +"CHANnel\t\tkênh\n" +"Client To Client Protocol\tgiao thức ứng dụng khách đến ứng dụng khách\n" +"Direct Chat Channel\t\tkênh trò chuyện trực tiếp\n" +"INVIte\t\tmời\n" +"UNIGnore\t\thủy bỏ qua]" + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O được gỡ bỏ ra danh sách bỏ qua." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " Danh sách bỏ qua la trống." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "%C22*%O$tKhông thể vào%C26 %B$1 %O(Phải có lời mời)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tBạn mới được mời vào%C26 $1%O bởi%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) mới vao $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$tKhông thể vào%C26 %B$1 %O(Cần đến từ khoá)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 mới đá $2 ra $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$tBạn mới bị buộc kết thúc bởi $1 ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "" +"%C22*%O$t%C22MOTD bị nhảy qua.\n" +"[Message Of The Day (thông điệp của hôm nay)]" + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 đang dùng nên thử lái vơi $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$tTên hiệu đang được dùng nên hay sử dụng lệnh « /NICK » để chọn tên " +"hiệu khác." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tKhông có DCC như vậy." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tKhông có tiến trình nào đang chạy" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tDanh sách thông báo la trống." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Danh sách thông báo " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 người dùng trong danh sách thông báo." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tThông báo : $1 ngoại tuyến ($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tThông báo : $1 trực tuyến ($3)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) đã rời $3 đi" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) đa rời $3 đi (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tTrả lời ping từ $1: $2 giây" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tChưa nhận trả lời ping sau $1 giây nên ngắt kết nối." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tCó một tiến trình đang chạy" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 đã thoát (%O%C23%B%B$2%O%C23)." + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 đặt chế độ%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Gởi tin nhẳn cho mọi quan trị%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tĐang tra cứu số IP cho%C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22Đã kết nối." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22Đang tra cứu $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tĐã thôi việc cố kết nối trước (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29Chủ đề cho $1%C %C29là: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 mới thay đổi chủ đề thành: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29Chủ đề cho $1%C %C29 được đặt bởi $2%C %C29vào $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tKhông biết máy: chính tả sai không?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "%C22*%O$tKhông thể vào%C26 %B$1 %O(Đã tới giới hạn số người dùng)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Người dùng trên $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cvắng mặt %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "" +"%C22*%O$t%C28[%O$1%C28] %OKết thúc danh sách WHOIS.\n" +"[WHO IS (là ai)]" + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O nhàn rỗi%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O nghỉ%C26 $2%O, đăng nhập:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" +"%C22*%O$t%C28[%O$1%C28] %Ongười dùng thật@máy%C27 $2%O, địa chỉ IP thật%C27 " +"$3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Đang nói chuyện trên $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tBạn đã bị đá ra $2 bởi $3 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tBạn mới rời kênh $3 đi" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tBạn mới rời kênh $3 đi (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tBạn đã mời%C26 $1%O vào%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tBạn lúc bây giờ được biết như là $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "Bản ghi đã được nạp từ" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** KẾT THÚC GHI LƯU VÀO %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** BẮT ĐẦU GHI LƯU VÀO %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Không thể mở tập tin bản ghi để ghi:\n" +" hãy kiểm tra quyền truy cập « %s/xchatlogs »" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Tin nhẳn bên trái" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Tin nhẳn bên phải" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "Tên hiệu của người đang vào" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "Kênh đang được vào" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "Máy của người ấy" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Tên hiệu" + +#: src/common/text.c:973 +msgid "The action" +msgstr "Hành động" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Ký tự chế độ" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Chuỗi đã nhận biết" + +#: src/common/text.c:980 +msgid "The text" +msgstr "Chuỗi" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Tin nhẳn" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Tên hiệu cũ" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Tên hiệu mới" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Tên hiệu của người đã thay đổi chủ đề" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Chủ đề" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Kênh" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "Tên hiệu của người đá" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "Người đang bị đá" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "Kênh" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "Lý do" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "Tên hiệu của người đang rời đi" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "Giờ" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "Người tạo" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Tên hiệu" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Lý do" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Máy" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "Người gởi" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "Giờ dạng x.x (xem dưới)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "Kênh đích" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "Âm thanh" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "Tên hiệu của người ấy" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "Sự kiện CTCP" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "Tên hiệu của người đã đặt khoá" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "Khoá" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "Tên hiệu của người đã đặt giới hạn" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "Giới hạn" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "Tên hiệu của người đã đặt trạng thái quản trị" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "Tên hiệu của người đã nhận trạng thái quản trị" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "Tên hiệu của người đã nhận trạng thái nửa quản trị" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "Tên hiệu của người đã đặt trạng thái nửa quản trị" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "Tên hiệu của người đã đặt trạng thái « Tiếng nói »" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "Tên hiệu của người đã nhận trạng thái « Tiếng nói »" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "Tên hiệu của người đã đuổi người khác" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "Bộ lọc đuổi ra" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "Tên hiệu đã gỡ bỏ khoá" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "Tên hiệu đã gỡ bỏ giới hạn" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "Tên hiệu của người đã bỏ trạng thái quản trị" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "Tên hiệu của người đã mất trạng thái quản trị" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "Tên hiệu của người đã bỏ trạng thái nửa quản trị" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Tên hiệu của người đã mất trạng thái nửa quản trị" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "Tên hiệu của người đã bỏ trạng thái « Tiếng nói »" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "Tên hiệu của người đã mất trạng thái « Tiếng nói »" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "Tên hiệu của người đã bỏ trạng thái « Bị đuổi »" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "Tên hiệu của người đã đặt trạng thái miễn" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "Bộ lọc miễn" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "Tên hiệu của người đã bỏ trạng thái miễn" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "Tên hiệu của người đã mời người khác" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "Bộ lọc mờì" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "Tên hiệu của người đã gỡ bỏ lời mời" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "Tên hiệu của người đặt chế độ" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "Dấu chế độ (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "Chữ chế độ" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "Kênh trên đó nó đang được đặt" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Tên người dùng" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Họ tên" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Tư cách thành viên kênh/« là quản trị IRC »" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Thông tin máy phục vụ" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Thời gian nghỉ" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Giờ đăng nhập" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Lý do vắng mặt" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Tin nhẳn" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Tài khoản" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "Người dùng thât@máy" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "Địa chỉ IP thật" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Tên kênh" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Chuỗi" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Tên máy phục vụ" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Tên hiệu của người đã mời bạn" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Người dùng" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Tên hiệu đang được dùng" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Tên hiệu đang được thử ra" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Cổng" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Mạng" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Chuỗi chế độ" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "Địa chỉ IP" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "Kiểu DCC" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Tên tập tin" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Tên tập tin đích" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Tên đường dẫn" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Vị trí" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Cỡ" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "Chuỗi DCC" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Số mục thông báo" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Tên tập tin cũ" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Tên tập tin mới" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Bộ nhận" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Bộ lọc máy" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Tên máy" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "Gói tin" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Giây" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Tên người đã được mời" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Bộ lọc đuổi ra" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Người đã đặt đuổi ra" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Thời gian đuổi ra" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Gặp lỗi khi phân tách sự kiện %s.\n" +"Đang nạp mặc định." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"Không thể đọc tập tin âm thanh:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "Máy ở xa đã đóng ổ cắm" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Kết nối bị từ chối" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Không có đường dẫ đến máy" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Kết nối đã quá giờ" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Không thể gán địa chỉ đó" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Kết nối bị đặt lại bởi ngang hàng" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Đảo Ascension" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Ăn-đoa-râ" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Các Tiểu Vương Quốc A Rập Thống Nhất" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "A Phú Hãn" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Ănh-thí-gụ-a và Ba-bu-đạ" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Ănh-gouí-lạ" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "An-ba-ni" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Ác-mê-ni" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "An-thi-li Hoà-lan" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Ăng-gô-la" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Nam cực" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Ác-hen-ti-na" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "DNS ngược" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Xa-mô-a Mỹ" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Ao" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "Na-tô Phi-en" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Úc" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "A-ru-ba" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Quần Đảo A-lan" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Ai-déc-bai-gian" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Bô-x-ni-a và Héc-xê-gô-vi-na" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Bác-ba-đốt" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Băng-la-đe-xợ" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Bỉ" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Bổ-khi-na Pha-xô" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Bun-ga-ri" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Ba-ren" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Bu-run-đi" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Kinh doanh" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Bê-nin" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Be-mư-đa" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Bợ-ru-này Đa-ru-xa-làm" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Bô-li-vi-a" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Bra-xin" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Ba-ha-ma" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Bu-thăn" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Quần Đảo Bu-vê" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Bốt-xoă-na" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Be-la-ru-xợ" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Bê-li-xê" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Ca-na-đa" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Quần Đảo Cô-cô-x" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "Cộng Hoà Dân Chủ Công-gô" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "Cộng Hoà Trung Châu Phi" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Công-gô" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Thụy Sĩ" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Cộng Hoà Cốt Đi-vouă" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Quần Đảo Khu-kh" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Chi-lê" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Ca-mơ-runh" + +#: src/common/util.c:898 +msgid "China" +msgstr "Trung Quốc" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Cô-lôm-bi-a" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Thương nghiệp Internic" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Cốt-x-tha Ri-ca" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Xéc-bi và Mon-te-nê-gợ-rô" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Cu-ba" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Cáp-ve-đe" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Đảo Cợ-ri-x-mạ-x" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Síp" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "Cộng Hoà Séc" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Đức" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Gi-bu-ti" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Đan Mạch" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Đô-mi-ni-cạ" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "Cộng Hoà Đô-mi-ni-cạ" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "An-giê-ri" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Ê-cu-a-đọa" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Tổ chức giáo dục" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "E-x-tô-ni-a" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Ai Cập" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Tây Sa-ha-ra" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Ê-ri-tơ-rê-a" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Tây Ban Nha" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Ê-ti-ô-pi" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Liên Bang Âu" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Phần Lan" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Phi-gi" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Quần Đảo Phoa-kh-lận-đ" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Mi-cợ-rô-nê-xi-a" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Quần Đảo Pha-rô" + +#: src/common/util.c:928 +msgid "France" +msgstr "Pháp" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Ga-bon" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Vương Quốc Thống Nhất Anh va Bắc Ai-len" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Gợ-rê-na-đa" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Gi-oa-gi-a" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Ghi-a-na Pháp" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Quần Đảo Kênh Anh" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Gha-na" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Gi-boa-thạ" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Đảo Băng" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Găm-bi-ạ" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Ghi-nê" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Chính phủ" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Gu-a-đe-lu-pợ" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Ghi-nê Xích-đạo" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Hy Lạp" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Quần Đảo xan Gi-oa-gi-a và xan Xan-oui-chợ" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Gua-tê-ma-la" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Gu-ăm" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Ghi-nê Bít-xau" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Guy-ă-na" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Hông Kồng" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Quần Đảo Hơ-đh và Mơ-kh-đo-nựn" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Hôn-đu-ra-xợ" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Cợ-rô-a-ti-a" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Ha-i-ti" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Hung-ga-ri" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Nam Dương" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Ai-len" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Do Thái" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Đảo Man" + +#: src/common/util.c:959 +msgid "India" +msgstr "Ấn Độ" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Cung cấp thông tin" + +#: src/common/util.c:961 +msgid "International" +msgstr "Quốc tế" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Miền Đại Dương Ấn Độ Anh" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "I-rắc" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "I-ran" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Băng Đảo" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Ý" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Giơ-xi" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Gia-mê-ca" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Gi-oa-đạn" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Nhật Bản" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Khi-nia" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Ky-rơ-gy-xtanh" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Căm Bốt" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Ki-ri-ba-ti" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Cô-mô-rô-x" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "Xan Kith-x và Ne-vi-xợ" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Bắc Hàn" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Nam Hàn" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Cu-ouai-th" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Quần Đảo Cay-man" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Ca-xa-kh-x-thanh" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Lào" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Le-ba-non" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Xan Lu-xi-a" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Lich-ten-xtênh" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Xợ-ri-lan-ca" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Li-bê-ri-a" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Lê-xô-thô" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Li-tu-a-ni" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Lúc-xăm-buac" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Lát-vi-a" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Li-bi-a" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Ma-rốc" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Mô-na-cô" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Moa-đô-vạ" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "Y Mỹ" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Ma-đa-gá-x-cạ" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Quần Đảo Mác-san" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Quân đội" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Ma-xê-đô-ni" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Ma-li" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Miến Điện" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Mông Cổ" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Ma-cau" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Quần Đảo Bắc Ma-ri-a-na" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Ma-thi-ní-kh" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Mô-ri-ta-ni-a" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Mon-xe-rạc" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Man-tơ" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Mô-ri-sơ" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Man-đi-vợ-x" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Ma-la-uy" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Mê-hi-cô" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Mã Lai" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Mô-xam-bí-kh" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Na-mi-bi-a" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Niu Ca-lê-đô-ni-a" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Ni-giê" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Mạng Internic" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Đảo Noa-phực" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Ni-giê-ri-a" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Ni-ca-ra-gua" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Hoà Lan" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Na Uy" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Nê-pan" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Nau-ru" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Ni-u-e" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Niu Xi-lân" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Ô-man" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Tổ chức Phi lợi nhuận Internic" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Pa-na-ma" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Pê-ru" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Pô-li-nê-xi Pháp" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Pa-pu-a Niu Ghi-nê" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Phi-luật-tân" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Pa-ki-x-thănh" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Ba Lan" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "Xan Pi-e và Mi-kê-lon" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Pi-th-khenh" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Pu-e-tô Ri-cô" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Hạt Pa-le-x-tin" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Bồ Đào Nha" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Pa-lau" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Pa-ra-guay" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Qua-tă" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Rê-u-ni-ợnh" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Rô-ma-ni" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "ARPAnet kiểu cũ" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Liên Bang Nga" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Ru-oanh-đạ" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "A Rập Xau-đi" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Quần Đảo Xô-lô-mon" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Xây-sen" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Xu-đan" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Thuỵ Điển" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Xin-ga-po" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "Xan He-le-na" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Xlô-ven" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Quần Đảo X-van-băt và Dan May-en" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Cộng Hoà Xlô-vác" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Xi-ê-ra Lê-ôn" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "Xan Ma-ri-nô" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Xê-nê-gan" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Xô-ma-li" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Xu-ri-nam" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "Xao Tô-mê và Pợ-rin-xi-pê" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Liên xô trước" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "En-xan-va-đoa" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Xi-ri" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Xouă-xi-lan" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Quần Đảo Tổc và Cai-co-x" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Chê-đ" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Miền Nam Pháp" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Tô-gô" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Thái Lan" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Ta-gí-khi-x-thanh" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "To-ke-lau" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Đông Ti-mọa" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Tổc-mê-ni-x-tanh" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Tu-ni-xi-a" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Tông-ga" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Thổ Nhĩ Kỳ" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Trinh-i-đat và To-ba-gô" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Tu-va-lu" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Đài Loan" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Tan-xa-ni-a" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "U-cợ-rainh" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "U-gan-đa" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Vương Quốc Anh Thống Nhất" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "Mỹ" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "U-ru-guay" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "U-xơ-bê-ki-x-tanh" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Bang Thành Phố Va-ti-can" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "Xan Vin-xen và Gợ-re-na-đinh" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Vê-nê-xu-ê-la" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Quần Đảo Vơ-ginh Anh" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "Quần Đảo Vơ-ginh Mỹ" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Việt Nam" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Va-nu-a-tu" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Quần Đảo Oua-lit và Phu-tu-na" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Xa-moa" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Y-ê-men" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "May-oth" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Nam Tư" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Nam Phi" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Xăm-bi-a" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Xim-ba-buê" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Chưa biết" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "Mở cửa sổ đối thoại" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "Gởi tập tin" + +#: src/common/xchat.c:728 +#, fuzzy +msgid "_User Info (WhoIs)" +msgstr "Thông tin người dùng (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +#, fuzzy +msgid "O_perator Actions" +msgstr "Hành động quản trị" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Cho quyền Quản trị" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Bỏ quyền Quản trị" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Cho quyền Tiếng nói" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Bỏ quyền Tiếng nói" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Đá/Đuổi" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Đá" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Đuổi" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "Đá đuổi" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Rời kênh đi" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Vào kênh..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Nhập kênh cần vào :" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Liên kết máy phục vụ" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Máy phục vụ Ping" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Ẩn phiên bản" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "QT" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "BỏQT" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "tạm biệt" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Nhập lý do đá %s:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Gởi_tệp" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Đối thoại" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "Whois (là ai?)" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Gởi" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Trò chuyện" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Xóa trống" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "Không thể kết nối đến bộ nối phiên chạy" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "Lỗi chạy xong NameHasOwner (tên có người sở hữu)" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "Lỗi chạy xong Command (lệnh)" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "truy cập từ xa" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "bổ sung cho truy cập từ xa bằng DBUS" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Không thể kết nối đến bộ nối phiên chạy: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Lỗi lấy %s: %s\n" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "_Giới thiệu" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Ứng dụng khách IRC đa nền" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Sơ đồ ký tự" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "Chưa kết nối." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Phải chọn một số việc đuổi ra." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "Bạn có chắc muốn gỡ bỏ mọi việc đuổi ra trong %s không?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Lọc" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "Từ" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Ngày" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Bạn có thể mở cửa sổ Danh Sách Đuổi Ra chỉ khi trong một thẻ kênh." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "X-Chat: Danh Sách Đuổi Ra (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Gỡ bỏ" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Xén" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Cập nhật" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Đang hiển thị %d/%d người dùng trên %d/%d kênh." + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Hãy chọn tên tập tin xuất" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "_Vào kênh" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "_Chép tên kênh" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "Chép c_hủ đề" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: Danh Sách Kênh (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "_Tìm" + +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "Tải về _danh sách" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "_Lưu danh sách..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "Hiển thị chỉ:" + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "kênh có" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "đến" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "người dùng." + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "Tìm trong:" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "Tên kênh" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "Cách tìm:" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "Tìm đơn giản" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "Khớp mẫu (ký tự đại diện)" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "Biểu thức chính quy" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Tìm:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Gởi tập tin cho %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Tập tin đó không tiếp tục được." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"Không thể truy cập tập tin: %s\n" +"%s.\n" +"Nên không thể tiếp tục lại." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"Tập tin nằm trong thư mục tải về là lớn hơn điều đã đưa ra nên không thể " +"tiếp tục lại." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "Không thể tiếp tục lại cùng một tập tin từ hai người khác." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: Tải lên/về" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Trạng thái" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Tập tin" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "Giờ tới xấp xỉ" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Cả hai" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Tải lên" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "Tải về" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Chi tiết" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Tập tin:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "Địa chỉ:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Hủy bỏ" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Chấp nhận" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Tiếp tục" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Mở thư mục..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: Danh Sách Trò Chuyện Trực Tiếp (DCC)" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Nhận" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Gởi" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "Giờ bắt đầu" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "• MỚI •" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "SỬA ĐI" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Tên" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Lệnh" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Đem lên" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Đem xng" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Thôi" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Lưu" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Thêm mới" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Xóa" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Sắp xếp" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Trợ giúp" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "Không tự động kết nối đến máy phục vụ" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "Dùng thư mục cấu hình khác" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "Không tự động nạp bổ sung nào" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "Hiển thị thư mục của các bổ sung cần tự động nạp" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "Hiển thị thư mục cấu hình của người dung" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Mở địa chỉ URL dạng « irc://máy:cổng/kênh »" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Thi hành lệnh:" + +#: src/fe-gtk/fe-gtk.c:132 +#, fuzzy +msgid "Open URL or execute command in an existing XChat" +msgstr "Mở địa chỉ URL trong tiến trình XChat đang chạy" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Khởi chạy bị thu nhỏ. Cấp: 0=Chuẩn 1=Biểu tượng 2=Khay" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "cấp" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Hiển thị thông tin phiên bản" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"Lỗi mở phông chữ :\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "Bộ đệm tìm kiếm là trống.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d byte" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Hàng đợi gởi mạng: %d byte" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"Hành động « Chạy lệnh » chạy dữ liệu trong « Dữ liệu 1 » như thế nó đã được " +"gõ vào hộp nhập nơi bạn đã bấm dãy phím đó. Vì vậy nó có thể bao gồm câu chữ " +"(mà sẽ được gởi cho kênh/người đó), lệnh hay lệnh của người dùng. Khi chạy, " +"mọi ký tự « \\n » trong « Dữ liệu 1 » được dùng để phân cách những lệnh " +"riêng, vì thế có thể chạy nhiều lệnh đồng thời. Nếu bạn muốn xem ký tự « \\ " +"» trong câu thật, hãy gõ « \\\\ » thay thế." + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"Lệnh « Đổi trang » chuyển đổi giữa các trang trong cuốn vở. Hãy đặt « Dữ " +"liệụ 1 » thành trang tới đó bạn muốn chuyển đổi. Nếu « Dữ liêu 2 » được đặt " +"thành gì, việc chuyển đổi sẽ cân xứng với vị trí hiện có." + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"Lệnh « Chèn vào bộ đệm » chèn nội dung của « Dữ liệu 1 » vào trường nơi bạn " +"đã bấm dãy phím đó, tại vị tri con trỏ hiện có" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"Lệnh « Cuộn trang » cuộn ô điều khiển văn bản lên hay xuống theo một trang " +"hay một dòng. Hãy đặt « Dữ liệu 1 » thành một của:\n" +"Up\t\tlên\n" +"Down\txuống\n" +"+1\n" +"-1" + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"Lệnh « Đặt bộ đệm » đặt trường nơi dãy phím được nhập thành nội dung của « " +"Dữ liệu 1 »" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"Lệnh « Lệnh cuối » đặt trường để chứa lệnh mới nhập — giống như khi bấm phím " +"mũi tên lên trong trình bao" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"Lệnh « Lệnh kế » đặt trường chứa lệnh kế tiếp được nhập — giống như khi bấm " +"phím mũi tên xuống trong trình bao" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Lệnh này thay đổi đoạn chữ trong trường nhập để nhập xong tên hiệu hay lệnh " +"chưa hoàn thành. Nếu « Dữ liệu 1 » đã được đặt, việc bám phím Tab hai lần " +"trong chuỗi sẽ chọn tên hiệu trước, không phải tên hiệu sau." + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Lệnh này cuộn lên và xuống danh sách các tên hiệu. Nếu « Dữ liệu 1 » được " +"đặt thành gì, nó sẽ cuộn lên, nếu không thì nó sẽ cuộn xuống." + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Lệnh này so sánh từ mới nhập vào trường với danh sách thay thế, và thay thế " +"nó nếu tìm thấy từ khớp" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Lệnh này di chuyển thẻ trươc phía bên trái theo một điều" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Lệnh này di chuyển thẻ trươc phía bên phải theo một điều" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Lệnh này di chuyển nhóm thẻ hiện thời phía bên trái" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Lệnh này di chuyển nhóm thể hiện thời phía bên phải" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "Đẩy dòng nhập vào lịch sử nhưng không gởi cho máy phục vụ" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "Gặp lỗi khi nạp cấu hình tổ hợp phím" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<không có>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Đổi" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Phím" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Hành động" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: Phím tắt" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Dữ liệu 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Dữ liệu 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Gặp lỗi khi mở tập tin cấu hình phím\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Gặp tên phím lạ %s trong tập tin cấu hình tổ hợp phím\n" +"nên hủy bỏ việc nạp. Hãy sửa chữa tập tin « %s/keybindings.conf ».\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Gặp hành động lạ %s trong tập tin cấu hình tổ hợp phím.nnên hủy bỏ việc nạp. " +"Hãy sửa chữa tập tin « %s/keybindings ».\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Ngờ dòng Dữ liêu (bắt đầu « Dx{:|!}) » nhưng nhận:\n" +"%s\n" +"\n" +"nên hủy bỏ việc nạp. Hãy sửa chữa tập tin « %s/keybindings ».\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"Tập tin cấu hình tổ hợp phím bị hỏng nên hủy bỏ việc nạp.\n" +"Hãy sửa chữa tập tin « %s/keybindings.conf ».\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "Không thể ghi vào tập tin đó." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Không thể đọc tập tin đó." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Bộ lọc đã có." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Riêng" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Thông báo" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Mời" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Thôi bỏ qua" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Hãy nhập bộ lọc cần bỏ qua:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: Danh Sách Bỏ Qua" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Thống Kê Bỏ Qua:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Kênh:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Riêng:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Thông báo :" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Mời:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "Thêm..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "Tên kênh quá ngắn nên hãy thử lại." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: Kết nối hoàn tất" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "Kết nối đến %s hoàn tất." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"Trong cửa sổ Danh Sách Máy Phục Vụ, chưa nhập kênh (phòng trò chuyện) cần " +"tham gia tự động cho mạng này." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "Tiếp sau đây bạn có muốn làm gì?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "Gì cả, tôi sẽ tham gia kê_nh sau này." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "_Vào kênh này:" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Nến bạn có biết tên kênh bạn muốn vào, hãy nhập nó vào đây." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "_Mở cửa sổ Danh Sách Kênh." + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "Việc lấy Danh Sách Kênh có lẽ sẽ mất một hai phút." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "_Luôn hiển thị hộp thoại này một khi kết nối." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Đối thoại với" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Chủ đề cho %s là: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Chưa đặt chủ đề" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"Máy phục vụ này vẫn còn có %d kênh hay đối thoại được liên quan đến nó. Đóng " +"hết không?" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "Thoát khỏi XChat không?" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "Đừng hỏi lần kế tiếp." + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Bạn hiện thời có kết nối với %i mạng IRC." + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "Bạn có chắc muốn thoát không?" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "Có một số việc truyền tập tin còn hoặt động." + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "Thu nhỏ về _Khay" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Chèn mã Thuộc Tính hay mã Màu" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Đậm</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Gạch dưới</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Chuẩn" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Màu sắc 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Màu sắc 8-15" + +#: src/fe-gtk/maingui.c:1612 +#, fuzzy +msgid "_Settings" +msgstr "Thiết _lập" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "Ẩn các tin nhẳn vào/rời" + +#: src/fe-gtk/maingui.c:1625 +#, fuzzy +msgid "_Extra Alerts" +msgstr "Cảnh giác" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "Kêu bíp khi nhạn tin nhẳn" + +#: src/fe-gtk/maingui.c:1628 +#, fuzzy +msgid "Blink Tray _Icon" +msgstr "Chớp biểu tượng khay khi:" + +#: src/fe-gtk/maingui.c:1629 +#, fuzzy +msgid "Blink Task _Bar" +msgstr "Chớp thanh tác vụ khi:" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +#, fuzzy +msgid "_Detach" +msgstr "_Gỡ thẻ ra" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "Đón_g" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "Giới hạn người dùng phải là con số.\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Bảo vệ chủ đề" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Không có tin nhẳn bên ngoài" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Bí mật" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Chỉ mời" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Đã điều tiết" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Danh Sách Đuổi Ra" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Từ khoá" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Giới hạn người dùng" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Hiện/Ẩn danh sách người dùng" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"Không thể đặt nền trong suốt.\n" +"\n" +"Có thể bạn sử dụng trình quản lý cửa sổ\n" +"không tuân theo mà chưa được hỗ trợ.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Hãy nhập tên hiệu mới:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Không biết máy" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Tên thật:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Người dùng:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "Quốc gia:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Máy phục vụ :" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "cách đây %u phút" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Tin nhẳn cuối:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Thông điệp Vắng mặt:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"Thanh trình đơn mới ẩn. Bạn có thể hiển thị nó lần nữa bằng cách bấm phím " +"chức năng F9 hoặc nhấn-phải vào phần rỗng nào trong vùng văn bản chính." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Mở liên kết trong trình duyệt" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Chép liên kết đã chọn" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Vào kênh" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Rời kênh đi" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Quay lại kênh" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: Trình đơn người dùng" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Sửa trình đơn này..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Lấy danh sách kênh..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Lệnh người dùng — mã đặc biệt:\n" +"\n" +"%c \t\tkênh hiện có\n" +"%e \t\ttên mạng hiện có\n" +"%m \t\tthông tin về máy\n" +"%n \t\ttên hiệu của bạn\n" +"%t \t\tgiờ/ngày\n" +"%v \t\tphiên bản xchat\n" +"%2 \t\ttừ 2\n" +"%3 \t\ttừ 3\n" +"&2 \t\ttừ 2 đến kết thúc dòng\n" +"&3 \t\ttừ 3 đến kết thúc dòng\n" +"\n" +"eg:\n" +"/cmd chào anh\n" +"\n" +"%2 sẽ là « chào »\n" +"&2 sẽ là « chào anh »." + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Nút trên danh sách người dùng — mã đặc biệt:\n" +"\n" +"%a \t\tmọi tên hiệu đã chọn\n" +"%c \t\tkênh hiện có\n" +"%e \t\ttên mạng hiện có\n" +"%h \t\ttên máy của tên hiệu đã chọn\n" +"%m \t\tthông tin về máy\n" +"%n \t\ttên hiệu của bạn\n" +"%s \t\ttên hiệu đã chọn\n" +"%t \t\tgiờ/ngày\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Nút trên đối thoại — mã đặc biệt:\n" +"\n" +"%a \t\tmọi tên hiệu đã chọn\n" +"%c \t\tkênh hiện có\n" +"%e \t\ttên mạng hiện có\n" +"%h \t\ttên máy của tên hiệu đã chọn\n" +"%m \t\tthông tin về máy\n" +"%n \t\ttên hiệu cũa bạn\n" +"%s \t\ttên hiệu đã chọn\n" +"%t \t\tgiờ/ngày\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"Trả lời CTCP — mã đặc biệt:\n" +"\n" +"%d \t\tdữ liệu (toàn bộ CTCP)\n" +"%e \t\ttên mạng hiện có\n" +"%m \t\tthông tin về máy\n" +"%s \t\ttên hiệu đã gởi CTCP\n" +"%t \t\tgiờ/ngày\n" +"%2 \t\ttừ 2\n" +"%3 \t\ttừ 3\n" +"&2 \t\ttừ 2 đến kết thúc dòng\n" +"&3 \t\ttừ 3 đến kết thúc dòng\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"Quản lý địa chỉ Mạng — mã đặc biệt:\n" +"\n" +"%s = chuỗi của địa chỉ URL\n" +"\n" +"Việc đặt dấu ! trước lệnh ngụ ý\n" +"rằng nó nên được gởi cho\n" +"trình bao thay cho XChat" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: Lệnh định nghĩa riêng" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: Trình đơn bât lên danh sách người dùng" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Thay thế bằng" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: Thay thế" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: Quản lý URL" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: Nút danh sách người dùng" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: Nút đối thoại" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: Trả lời CTCP" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "Danh _sách mạng..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "_Mới" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Thẻ máy phục vụ..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Thẻ kênh..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Cửa sổ máy phục vụ..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Cửa sổ kênh..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "Nạp bổ sung hay văn _lênh..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "T_hoát" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "_Xem" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "Thanh t_rình đơn" + +#: src/fe-gtk/menu.c:1592 +msgid "_Topic Bar" +msgstr "_Thanh chủ đề" + +#: src/fe-gtk/menu.c:1593 +msgid "_User List" +msgstr "Danh sách người _dùng" + +#: src/fe-gtk/menu.c:1594 +msgid "U_serlist Buttons" +msgstr "Nút danh _sách người dùng" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "Nút _chế độ" + +#: src/fe-gtk/menu.c:1597 +msgid "_Channel Switcher" +msgstr "Bộ _chuyển đổi kênh" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "_Thẻ" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "Câ_y" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "Bộ do mạ_ng" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Tất" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Đồ thị" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "Máy _phục vụ" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "_Ngắt kết nối" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "_Tái kết nối" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "Vào kênh..." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "Vào kênh..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Có nhãn Vắng mặt" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "Trình đơn người _dùng" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "Thiết _lập" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "Tù_y thích" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Cấp cao" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Tự thay thế..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "Trả lơi CTCP..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Nút đối thoại..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Phím tắt..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Sự kiện chữ..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "Quản lý địa chỉ URL..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Lệnh người dùng..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Nút danh sách người dùng" + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Bật lên Danh sách Người dùng" + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_Cửa sổ" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Danh Sách Đuổi Ra..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Sơ Đồ Ký Tự..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Trò chuyện trực tiếp..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Việc truyền tập tin..." + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "Danh Sách Đuổi Ra..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Danh sách Bỏ qua..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Bổ sung và Văn lệnh..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Bản ghi thô..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "Bộ lấy địa chỉ URL..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Đặt lại dòng đánh dấu" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "Xóa t_rắng văn bản" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Tìm kiếm trong văn bản..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Lưu văn bản..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "Trợ g_iúp" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "_Nội dung" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "_Giới thiệu" + +#: src/fe-gtk/menu.c:2147 +#, fuzzy +msgid "_Attach" +msgstr "Gắn cửa _sổ" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Gặp cuối cùng" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Ngoại tuyến" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Chưa bao giờ" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "cách đây %d phút" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Trực tuyến" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Hãy nhập tên hiệu cần thêm:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "Thông báo trên các mạng này:" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "Cho phép tạo danh sách các mạng định giới bằng dấu phẩy." + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "XChat: Danh Sách Bỏ Qua" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "Mở đối thoại" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" +"Không thể tìm « notify-send » để mở các cảnh giác trong khung thoại.\n" +"Xin hãy cài đặt phần mềm « libnotify »." + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "XChat: đang kết nối với %u mạng và %u kênh" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "_Phục hồi" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "Ẩ_n" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "_Bật chớp" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "Thông điệp kênh" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "Tin nhẳn riêng" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "Tin nhẳn đã tô sáng" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "Vắng mặt" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat: nhận được tin nhẳn đã tô sáng từ : %s (%s)" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat: Nhận %u tin nhẳn đã tô sáng, mới nhất từ : %s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat: Nhận tin nhẳn chung mới từ : %s (%s)" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat: Nhận %u tin nhẳn chung mới." + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat: Nhận tin nhẳn riêng từ : %s (%s)" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "XChat: Nhận %u tin nhẳn riêng, mới nhất từ : %s (%s)" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat: Nhận lời mời gởi tập tin từ : %s (%s)" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "XChat: Nhận %u lời mời gởi tập tin, mới nhất từ : %s (%s)" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Phiên bản" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Mô tả" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Chọn bổ sung hay văn lệnh cần nạp" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: Bổ sung và Văn lệnh" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "_Nạp..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "_Bỏ nạp" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Lưu dạng..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: Bản ghi thô (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Xóa trống bản ghi thô" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "Bạn đã mở việc tìm kiếm này cho một cửa sổ không còn tồn tại lại." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "Tìm kiếm gặp kết thúc, không tìm thấy gì." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: Tìm kiếm" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "_Khớp chữ hoa/thường" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "Tìm _ngược" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "_Tìm" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Mạng mới" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Thật gỡ bỏ mạng « %s » và tất cả máy phục vụ của nó không?" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "Kênh" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: Danh Sách Kênh (%s)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "Mật khẩu :" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "_Sửa" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "Không cho phép trường « Tên người dùng » hay « Tên thật » bị bỏ trống." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: Sửa %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Máy phục vụ cho %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Kết nối đến chỉ máy phục vụ đã chọn" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Không quay lại qua tất cả các máy phục vụ khi kết nối bị ngắt." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Chi tiết cá nhân" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Dùng thông tin người dùng toàn cục" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "Tê_n hiệu :" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Chọn thứ hai:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "Tên người _dùng:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "_Tên thật:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Đang kết nối" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Tự động kết nối đến mạng này khi khởi chạy" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "Dùng máy phục vụ ủy nhiệm" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "Dùng SSL cho mọi máy phục vụ trên mạng này" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Chấp nhận chứng nhận SSL không hợp lệ" + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "Rời kênh đi:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "Các kênh cần vào, định giới bằng dấu phẩy còn không có dấu cách." + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Lệnh kết nối:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Lệnh thêm cần thực hiện sau khi kết nối được. Nếu bạn muốn nhập nhiều lệnh, " +"hãy đặt lệnh này thành « LOAD -e <tên_tập_tin> », mà <tên_tập_tin> là tập " +"tin kiểu văn bản chứa danh sách các lệnh cần thực hiện. [load: nạp]" + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Mật khẩu máy phục vụ tên hiệu :" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Nếu tên hiệu bạn cần thiết mật khẩu, hãy nhập nó vào đây. Không phải tất cả " +"các mạng IRC hỗ trợ tính năng này." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Mật khẩu máy phục vụ :" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Mật khẩu cho mấy phục vụ: nếu không chắc thì bỏ trống." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Bộ ký tự :" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: Danh sách mạng" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Thông tin người dùng" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Chọn thứ ba:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Mạng" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "Bỏ qua danh sách mạng khi khởi chạy" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "_Sửa..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "Sắp _xếp" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" +"Sắp xếp danh sách các mạng theo thứ tự abc. Hãy dùng tổ hợp phím SHIFT+lên " +"và SHIFT+xuống để di chuyển mỗi hàng." + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "_Kết nối" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Hình thức hộp văn bản" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Phông:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Ảnh nền:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Dòng cuộn ngược:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Tên hiệu có màu" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Cho mỗi người trên IRC có một màu riêng" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Thụt lệ tên hiệu" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Canh lề bên phải các tên hiệu" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Nền trong suốt" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Hiện dòng đánh dấu" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Chèn dòng màu đỏ sau đoạn chữ đã đọc cuối cùng." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Thiết lập trong suốt" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Đỏ :" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Xanh lá cây:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Xanh dương:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Ghi giờ" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Bật ghi giờ" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Định dạng ghi giờ :" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Hãy sử dụng lệnh « man strftime » để tìm thấy chi tiết." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "Thứ tự đã nói cuối cùng" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Hộp nhập" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Dùng phông chữ và màu của hộp văn bản" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Bắt lỗi chính tả" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Gõ xong tên hiệu" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "Tự động gõ xong tên hiệu (không có phím TAB)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Hậu tố gõ xong tên hiệu :" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "Sắp xếp cách gõ xong tên hiệu :" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Mã hộp nhập" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Giải thích %nnn là một giá trị ASCII" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Giải thích %C, %B là Màu, Đậm v.v." + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, Quản trị trước" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, Quản trị sau" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Chưa sắp xếp" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "Trái (Trên)" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "Trái (Dưới)" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "Phải (Trên)" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "Phải (Dưới)" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Trên" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Dưới" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Ẩn" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Danh sách người dùng" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "HIện tên máy trong danh sách người dùng" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Sắp xếp danh sách người dùng theo :" + +#: src/fe-gtk/setup.c:205 +msgid "Show user list at:" +msgstr "Hiện danh sách người dùng ở :" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Theo dõi Vắng mặt" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "" +"Theo dõi trạng thái Vắng mặt của mọi người dùng, cũng nhãn bằng màu khác" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "Trên kênh nhỏ hơn:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Hành động khi nhấn đôi" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Cửa sổ" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Thẻ" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Luôn" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Chỉ thẻ đã yêu cầu" + +#: src/fe-gtk/setup.c:242 +#, fuzzy +msgid "Tree" +msgstr "Câ_y" + +#: src/fe-gtk/setup.c:249 +#, fuzzy +msgid "Switcher type:" +msgstr "Cách tìm:" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Mở thẻ thêm cho thông điệp máy phục vụ" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Mở thẻ thêm cho thông báo máy phục vụ" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "Mở thẻ mới khi bạn nhận tin nhẳn riêng" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Sắp xếp thẻ theo thứ tự abc" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "Thẻ nhỏ" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Tới thẻ mới:" + +#: src/fe-gtk/setup.c:258 +msgid "Show channel switcher at:" +msgstr "Hiện bộ chuyển đổi kênh ở :" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Giảm nhãn thẻ thành:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "chữ." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Thẻ hay Cửa sổ" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Mở kênh trong:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Mở đối thoại trong:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Mở tiện ích trong:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Mở DCC, Bỏ qua, Thông báo v.v. trong thẻ hay cửa sổ?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "Không" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Có" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "Luôn luôn duyệt tìm thư mục lưu" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Tập tin và Thư mục" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Tự chấp nhận tập tin đã đưa ra:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Tải tập tin về:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Di chuyển tập tin hoàn tất sang:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Lưu tên hiệu trong tên tập tin" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Thiết lập mạng" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Lấy địa chỉ của tôi từ máy phục vụ IRC" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Gọi địa chỉ thật của bạn từ máy phục vụ IRC. Hãy bật tùy chon này nếu bạn có " +"địa chỉ số « 192.168.*.* »." + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "Địa chỉ IP DCC:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Tuyên bố bạn ở địa chỉ này khi đưa ra tập tin." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Cổng gởi DCC đầu :" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Cổng gởi DCC cuối:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!Để mọi cổng có giá trị số không cho toàn bộ phạm vị." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Tốc độ truyền tập tin tối đa (byte/giây)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Một việc tải lên:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Tốc độ tối đa cho môt việc truyền" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Một việc tải về:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Tổng số việc tải lên:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Tốc độ tối đa cho mọi tập tin" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Tổng số việc tải về:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Cảnh giác" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "Hiện thị khung thoại của khay khi:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "Chớp biểu tượng khay khi:" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "Chớp thanh tác vụ khi:" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "Kêu bíp khi:" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "Bật biểu tượng khay của hệ thống" + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "Tin nhẳn đã tô sáng" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Tin nhẳn đã tô sáng là tin nhẳn chứa tên hiệu của bạn, cũng như :" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "Từ thêm cần tô sáng:" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "Tên hiệu cần không tô sáng:" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "Tên hiệu cần tô sáng luôn luôn:" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Định,giới,nhiều,từ,bằng,dấu,phẩy." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Tin nhẳn mặc định" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Thoát:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Rời kênh đi:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Vắng mặt:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Vắng mặt" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Thông báo tin nhẳn vắng mặt" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Thông báo tin nhẳn vắng mặt của bạn trên mọi kênh" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Hiện Vắng mặt một lần" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Hiện tin nhẳn vắng mặt trùng chỉ một lần" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Tự bỏ nhãn Vắng mặt" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Bỏ nhãn bạn là Vắng mặt trước khi gởi tin nhẳn" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Thiết lập cấp cao" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Trễ tự tái kết nối:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Trình bày CHẾ ĐỘ dạng thô" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "WHOIS khi thông báo" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" +"Gởi lệnh « /WHOIS » (là ai?) khi người dùng trong danh sách thông báo của " +"bạn mới trực tuyến" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Ẩn các tin nhẳn vào/rời" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Ẩn các tin nhẳn vào/rời kênh theo mặc định" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Tự mở cửa sổ DCC" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Cửa sô Gởi" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Cửa sổ Nhận" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Cửa sổ Trò chuyện" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Ghi lưu" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "Bật ghi lưu các đối thoại" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Ghi lưu tên tập tin:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Máy %c=Kênh %n=Mạng." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Ghi giờ vào bản ghi" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Dạng ghi giờ bản ghi:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Tắt)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "Ủy nhiệm MS (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Mọi kết nối" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "Chỉ máy phục vụ IRC" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "Chỉ DCC lấy" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Địa chỉ của bạn" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Đóng kết với:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "Chỉ có ích trên máy tính có nhiều địa chỉ." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Máy phục vụ ủy nhiệm" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Tên máy:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Cổng:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Kiểu :" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Dùng ủy nhiệm cho :" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Xác thực ủy nhiệm" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Xác thực (chỉ Ủy nhiệm MS, HTTP hay Socks5)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Xác thực (chỉ HTTP hay Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Tên người dùng:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Mật khẩu :" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Chọn tập tin ảnh" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "Chọn thư mục tải về" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Chọn phông" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Duyệt..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Nhãn người dùng đã nhận biết bằng:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Nhãn người dùng chưa nhận biết bằng:" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "Mở thư mục Dữ liệu" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Chọn màu" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Màu chữ" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "Màu mIRC:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Màu cục bộ :" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Tiền cảnh:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Nền:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Đánh dấu chữ" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Màu giao diện" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Dữ liệu mới:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Dòng đánh dấu :" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Tin nhẳn mới:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Người dùng vắng mặt:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Tô sáng:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Sự kiện" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Tập tin âm thanh" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Chon tập tin âm thanh" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Phương pháp phát âm thanh:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "Trình bên ngoài _phát âm thanh:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "Trình _bên ngoài" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_Tự động" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "Thư _mục tập tin âm thanh:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Tập tin âm thanh:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "_Duyệt..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "_Phát" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Giao diện" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Hộp văn bản" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Danh sách Người dùng" + +#: src/fe-gtk/setup.c:1703 +msgid "Channel switcher" +msgstr "Bộ chuyển đổi kênh" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Màu sắc" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Đang trò chuyện" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Chung" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Âm thanh" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Thiết lập mạng" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Việc truyền tập tin" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Loại" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" +"Không thể đặt cây bên trên hay bên dưới.\n" +"Trước hết hãy chuyển đổi sang bố trí <b>Thanh</b> trong trình đơn <b>Xem</b>." + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" +"Một sô thiết lập đã được thay đổi nên cần phải khởi chạy lại để hoạt động " +"đầy đủ." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"•• CẢNH BÁO ••\n" +"Việc tự động chấp nhận DCC vào thư mục\n" +"chính của bạn có lẽ nguy hiểm và cho phép\n" +"người khác tấn công hệ thống của bạn.\n" +"V.d. người khác có thể gởi cho bạn\n" +"một « .bash_profile »." + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: Tùy thích" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Gặp lỗi khi phân tách chuỗi đó" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Tín hiệu này chỉ nhận %d đối sô, $%d không hợp lệ" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "In tập tin các văn bản" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Sửa sự kiện" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ Số" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Nạp từ..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Kiểm tra hết" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: Lấy URL" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Xóa trống danh sách" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Chép URL đã chọn" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Chép" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Lưu danh sách vào tập tin" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d quản trị, %d tổng số" + +#~ msgid "" +#~ "Set per channel options\n" +#~ "CHANOPT CONFMODE ON|OFF - Toggle conf mode/showing of join and part " +#~ "messages\n" +#~ "CHANOPT COLORPASTE ON|OFF - Toggle color paste\n" +#~ "CHANOPT BEEP ON|OFF - Toggle beep on message\n" +#~ "CHANOPT TRAY ON|OFF - Toggle tray blink on message" +#~ msgstr "" +#~ "Tùy chọn từng kênh:\n" +#~ "CHANOPT CONFMODE ON|OFF — bật/tắt chế độ hội thảo, hiển thị các thông " +#~ "điệp\n" +#~ "\tkiểu vào và rời\n" +#~ "CHANOPT COLORPASTE ON|OFF — bật/tắt dán màu\n" +#~ "CHANOPT BEEP ON|OFF — bật/tắt kêu bíp khi nhận thông điệp\n" +#~ "CHANOPT TRAY ON|OFF - bật/tắt chớp khay khi nhận tin nhẳn\n" +#~ "\n" +#~ "[CHANOPT : viết tắt cho \"channel option\", tùy chọn kênh;\n" +#~ "CONFMODE : viết tắt cho \"conference mode\", chế độ hội thảo;\n" +#~ "ON|OFF : bật hay tắt;\n" +#~ "COLORPASTE : dán màu;\n" +#~ "BEEP : kêu bíp, tiếng bíp;\n" +#~ "TRAY : khay]" + +#~ msgid "Direct client-to-client" +#~ msgstr "Khách-đến-khách trực tiếp" + +#~ msgid "Send File" +#~ msgstr "Gởi tập tin" + +#~ msgid "Offer Chat" +#~ msgstr "Mời trò chuyện" + +#~ msgid "Abort Chat" +#~ msgstr "Hủy bỏ trò chuyện" + +#~ msgid "Userinfo" +#~ msgstr "Thông tin người dùng" + +#~ msgid "Clientinfo" +#~ msgstr "Thông tin khách" + +#~ msgid "Time" +#~ msgstr "Thòi gian" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "QTrị" + +#~ msgid "Kill this user" +#~ msgstr "Kết thúc người dùng này" + +#~ msgid "Mode" +#~ msgstr "Chế độ" + +#~ msgid "Give Half-Ops" +#~ msgstr "Cho quyền Nửa quản trị" + +#~ msgid "Take Half-Ops" +#~ msgstr "Bỏ quyền Nửa quản trị" + +#~ msgid "Ignore" +#~ msgstr "Bỏ qua" + +#~ msgid "Ignore User" +#~ msgstr "Bỏ qua người dùng" + +#~ msgid "UnIgnore User" +#~ msgstr "Thôi bỏ qua người dùng" + +#~ msgid "Info" +#~ msgstr "Thông tin" + +#~ msgid "Who" +#~ msgstr "Ai" + +#~ msgid "DNS Lookup" +#~ msgstr "Tra cứu DNS" + +#~ msgid "Trace" +#~ msgstr "Tìm đường" + +#~ msgid "UserHost" +#~ msgstr "NgườiMáy" + +#~ msgid "External" +#~ msgstr "Bên ngoài" + +#~ msgid "Traceroute" +#~ msgstr "Tìm dấu vết đường" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "About XChat" +#~ msgstr "Giới thiệu về X-Chat" + +#~ msgid "Unban" +#~ msgstr "Bỏ đuổi ra" + +#~ msgid "Blink tray on message" +#~ msgstr "Chớp khay khi nhạn tin nhẳn" + +#~ msgid "Show join/part messages" +#~ msgstr "Hiển thị tin nhẳn vào/rời" + +#~ msgid "Color paste" +#~ msgstr "Dán màu" + +#~ msgid "_Close Tab" +#~ msgstr "Đón_g thẻ" + +#~ msgid "Channel List..." +#~ msgstr "Danh Sách Kênh..." + +#~ msgid "Notify List..." +#~ msgstr "Danh sách Thông báo..." + +#~ msgid "_Close Window" +#~ msgstr "Đóng _cửa sổ" + +#~ msgid "User" +#~ msgstr "Người dùng" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: Danh sách Thông báo" + +#~ msgid "C_hannels to join:" +#~ msgstr "Các kên_h cần vào :" + +#~ msgid "Channel Switcher" +#~ msgstr "Bộ chuyển đổi kênh" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "Không có thẻ nữa còn mở, thoát khỏi xchat không?" + +#~ msgid "_Layout" +#~ msgstr "_Bố trị" + +#~ msgid "Quit..." +#~ msgstr "Thoát..." + +#~ msgid "Resizable user list" +#~ msgstr "Danh sách người dùng có thể thay đổi kích cỡ" + +#~ msgid "Left" +#~ msgstr "Trái" + +#~ msgid "Right" +#~ msgstr "Phải" + +#~ msgid "Show tabs at:" +#~ msgstr "Hiện thẻ ở :" diff --git a/etc/wyatt8740/po/xchat.pot b/etc/wyatt8740/po/xchat.pot new file mode 100644 index 0000000..fa8d6df --- /dev/null +++ b/etc/wyatt8740/po/xchat.pot @@ -0,0 +1,5265 @@ +# SOME DESCRIPTIVE TITLE. +# This file is put in the public domain. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.8.8\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2023-10-04 14:45-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "" + +#: src/common/cfgfiles.c:715 +msgid "I'm busy" +msgstr "" + +#: src/common/cfgfiles.c:716 +msgid "Leaving" +msgstr "" + +#: src/common/cfgfiles.c:763 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "" + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "" + +#: src/common/ignore.c:395 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "" + +#: src/common/ignore.c:420 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "" + +#: src/common/notify.c:495 +#, c-format +msgid " %-20s online\n" +msgstr "" + +#: src/common/notify.c:497 +#, c-format +msgid " %-20s offline\n" +msgstr "" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "" + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" + +#: src/common/outbound.c:3506 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" + +#: src/common/outbound.c:3516 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" + +#: src/common/outbound.c:3560 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" + +#: src/common/outbound.c:3653 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "" + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "" + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "" + +#: src/common/server.c:646 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "" + +#: src/common/server.c:1045 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" + +#: src/common/server.c:1050 +msgid "Proxy traversal failed.\n" +msgstr "" + +#: src/common/servlist.c:673 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "" + +#: src/common/servlist.c:1125 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "" + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "" + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "" + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "" + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "" + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "" + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "" + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "" + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O." +"%010%C22*%O$tContents of packet: $2" +msgstr "" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "" + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "" + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "" + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "" + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "" + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "" + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "" + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "" + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "" + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "" + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "" + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "" + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "" + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "" + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "" + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "" + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr "" + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "" + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "" + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "" + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "" + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "" + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "" + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "" + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "" + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "" + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "" + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "" + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "" + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "" + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "" + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "" + +#: src/common/text.c:973 +msgid "The action" +msgstr "" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "" + +#: src/common/text.c:980 +msgid "The text" +msgstr "" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:800 +#: src/fe-gtk/chanlist.c:903 +msgid "Topic" +msgstr "" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:798 src/fe-gtk/ignoregui.c:175 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:799 +msgid "Users" +msgstr "" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" + +#: src/common/text.c:2270 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "" + +#: src/common/util.c:898 +msgid "China" +msgstr "" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "" + +#: src/common/util.c:928 +msgid "France" +msgstr "" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "" + +#: src/common/util.c:940 +msgid "Government" +msgstr "" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "" + +#: src/common/util.c:959 +msgid "India" +msgstr "" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "" + +#: src/common/util.c:961 +msgid "International" +msgstr "" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "" + +#: src/common/util.c:999 +msgid "Military" +msgstr "" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "" + +#: src/common/xchat.c:728 +msgid "_Open Dialog Window" +msgstr "" + +#: src/common/xchat.c:729 +msgid "_Send a File" +msgstr "" + +#: src/common/xchat.c:730 +msgid "_User Info (WhoIs)" +msgstr "" + +#: src/common/xchat.c:731 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:732 +msgid "O_perator Actions" +msgstr "" + +#: src/common/xchat.c:734 +msgid "Give Ops" +msgstr "" + +#: src/common/xchat.c:735 +msgid "Take Ops" +msgstr "" + +#: src/common/xchat.c:736 +msgid "Give Voice" +msgstr "" + +#: src/common/xchat.c:737 +msgid "Take Voice" +msgstr "" + +#: src/common/xchat.c:739 +msgid "Kick/Ban" +msgstr "" + +#: src/common/xchat.c:740 src/common/xchat.c:777 +msgid "Kick" +msgstr "" + +#: src/common/xchat.c:741 src/common/xchat.c:742 src/common/xchat.c:743 +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:776 +msgid "Ban" +msgstr "" + +#: src/common/xchat.c:746 src/common/xchat.c:747 src/common/xchat.c:748 +#: src/common/xchat.c:749 +msgid "KickBan" +msgstr "" + +#: src/common/xchat.c:759 +msgid "Leave Channel" +msgstr "" + +#: src/common/xchat.c:760 +msgid "Join Channel..." +msgstr "" + +#: src/common/xchat.c:761 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "" + +#: src/common/xchat.c:762 +msgid "Server Links" +msgstr "" + +#: src/common/xchat.c:763 +msgid "Ping Server" +msgstr "" + +#: src/common/xchat.c:764 +msgid "Hide Version" +msgstr "" + +#: src/common/xchat.c:774 +msgid "Op" +msgstr "" + +#: src/common/xchat.c:775 +msgid "DeOp" +msgstr "" + +#: src/common/xchat.c:778 +msgid "bye" +msgstr "" + +#: src/common/xchat.c:779 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "" + +#: src/common/xchat.c:780 +msgid "Sendfile" +msgstr "" + +#: src/common/xchat.c:781 +msgid "Dialog" +msgstr "" + +#: src/common/xchat.c:790 +msgid "WhoIs" +msgstr "" + +#: src/common/xchat.c:791 +msgid "Send" +msgstr "" + +#: src/common/xchat.c:792 +msgid "Chat" +msgstr "" + +#: src/common/xchat.c:793 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:388 +#: src/fe-gtk/urlgrab.c:222 +msgid "Clear" +msgstr "" + +#: src/common/xchat.c:794 +msgid "Ping" +msgstr "" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "" + +#: src/fe-gtk/about.c:100 +msgid "About " +msgstr "" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:299 +msgid "Not connected." +msgstr "" + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "" + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:174 +msgid "Mask" +msgstr "" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "" + +#: src/fe-gtk/chanlist.c:560 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:169 +msgid "Select an output filename" +msgstr "" + +#: src/fe-gtk/chanlist.c:665 src/fe-gtk/chanlist.c:833 +msgid "_Join Channel" +msgstr "" + +#: src/fe-gtk/chanlist.c:667 +msgid "_Copy Channel Name" +msgstr "" + +#: src/fe-gtk/chanlist.c:669 +msgid "Copy _Topic Text" +msgstr "" + +#: src/fe-gtk/chanlist.c:758 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "" + +#: src/fe-gtk/chanlist.c:815 +msgid "_Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:821 +msgid "_Download List" +msgstr "" + +#: src/fe-gtk/chanlist.c:827 +msgid "Save _List..." +msgstr "" + +#: src/fe-gtk/chanlist.c:840 +msgid "Show only:" +msgstr "" + +#: src/fe-gtk/chanlist.c:852 +msgid "channels with" +msgstr "" + +#: src/fe-gtk/chanlist.c:865 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:877 +msgid "users." +msgstr "" + +#: src/fe-gtk/chanlist.c:883 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:895 +msgid "Channel name" +msgstr "" + +#: src/fe-gtk/chanlist.c:916 +msgid "Search type:" +msgstr "" + +#: src/fe-gtk/chanlist.c:923 +msgid "Simple Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:924 +msgid "Pattern Match (Wildcards)" +msgstr "" + +#: src/fe-gtk/chanlist.c:926 +msgid "Regular Expression" +msgstr "" + +#: src/fe-gtk/chanlist.c:937 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "" + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "" + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "" + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "" + +#: src/fe-gtk/editlist.c:336 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "" + +#: src/fe-gtk/editlist.c:337 +msgid "Command" +msgstr "" + +#: src/fe-gtk/editlist.c:365 +msgid "Move Up" +msgstr "" + +#: src/fe-gtk/editlist.c:369 +msgid "Move Dn" +msgstr "" + +#: src/fe-gtk/editlist.c:377 +msgid "Cancel" +msgstr "" + +#: src/fe-gtk/editlist.c:381 +msgid "Save" +msgstr "" + +#: src/fe-gtk/editlist.c:389 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "" + +#: src/fe-gtk/editlist.c:393 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:386 +msgid "Delete" +msgstr "" + +#: src/fe-gtk/editlist.c:401 +msgid "Sort" +msgstr "" + +#: src/fe-gtk/editlist.c:405 +msgid "Help" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:132 +msgid "Open URL or execute command in an existing XChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "" + +#: src/fe-gtk/fkeys.c:863 +msgid "Error opening keys config file\n" +msgstr "" + +#: src/fe-gtk/fkeys.c:1068 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" + +#: src/fe-gtk/fkeys.c:1106 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" + +#: src/fe-gtk/fkeys.c:1127 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" + +#: src/fe-gtk/fkeys.c:1196 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "" + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "" + +#: src/fe-gtk/ignoregui.c:116 src/fe-gtk/ignoregui.c:263 +msgid "That mask already exists." +msgstr "" + +#: src/fe-gtk/ignoregui.c:176 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "" + +#: src/fe-gtk/ignoregui.c:177 +msgid "Notice" +msgstr "" + +#: src/fe-gtk/ignoregui.c:178 +msgid "CTCP" +msgstr "" + +#: src/fe-gtk/ignoregui.c:179 +msgid "DCC" +msgstr "" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Invite" +msgstr "" + +#: src/fe-gtk/ignoregui.c:181 +msgid "Unignore" +msgstr "" + +#: src/fe-gtk/ignoregui.c:307 +msgid "Enter mask to ignore:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:354 +msgid "XChat: Ignore list" +msgstr "" + +#: src/fe-gtk/ignoregui.c:361 +msgid "Ignore Stats:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Channel:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Private:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:371 +msgid "Notice:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:372 +msgid "CTCP:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:373 +msgid "Invite:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:384 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "" + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "" + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "" + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "" + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "" + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "" + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "" + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "" + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "" + +#: src/fe-gtk/maingui.c:1612 +msgid "_Settings" +msgstr "" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +msgid "_Hide Join/Part Messages" +msgstr "" + +#: src/fe-gtk/maingui.c:1625 +msgid "_Extra Alerts" +msgstr "" + +#: src/fe-gtk/maingui.c:1627 +msgid "Beep on _Message" +msgstr "" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +msgid "_Detach" +msgstr "" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "" + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "" + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "" + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "" + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "" + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "" + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "" + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "" + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:605 +msgid "_Quit" +msgstr "" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1592 +msgid "_Topic Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1593 +msgid "_User List" +msgstr "" + +#: src/fe-gtk/menu.c:1594 +msgid "U_serlist Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1597 +msgid "_Channel Switcher" +msgstr "" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "" + +#: src/fe-gtk/menu.c:1613 +msgid "Join a Channel..." +msgstr "" + +#: src/fe-gtk/menu.c:1614 +msgid "List of Channels..." +msgstr "" + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "" + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "" + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "" + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "" + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "" + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "" + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "" + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "" + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "" + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "" + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "" + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "" + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "" + +#: src/fe-gtk/menu.c:1641 +msgid "Friends List..." +msgstr "" + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "" + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "" + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "" + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "" + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "" + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "" + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "" + +#: src/fe-gtk/menu.c:2147 +msgid "_Attach" +msgstr "" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:413 +msgid "XChat: Friends List" +msgstr "" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:245 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:296 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:584 +msgid "_Restore" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:586 +msgid "_Hide" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:590 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:591 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:592 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:595 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:597 +msgid "_Away" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:649 src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:652 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:675 src/fe-gtk/plugin-tray.c:682 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:678 +#, c-format +msgid "XChat: %u new public messages." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:704 src/fe-gtk/plugin-tray.c:711 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:707 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:757 src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:760 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "" + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:226 +msgid "Save As..." +msgstr "" + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "" + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "" + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "" + +#: src/fe-gtk/servlistgui.c:740 +msgid "#channel" +msgstr "" + +#: src/fe-gtk/servlistgui.c:850 +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +msgid "Key (Password)" +msgstr "" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1462 +msgid "Bypass proxy server" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1475 +msgid "_Favorite channels:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "" + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "" + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "" + +#: src/fe-gtk/setup.c:205 +msgid "Show user list at:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "" + +#: src/fe-gtk/setup.c:242 +msgid "Tree" +msgstr "" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "" + +#: src/fe-gtk/setup.c:254 +msgid "Smaller text" +msgstr "" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Show channel switcher at:" +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "" + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "" + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "" + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "" + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:347 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +msgid "Enable logging of conversations to disk" +msgstr "" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "" + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "" + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "" + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "" + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "" + +#: src/fe-gtk/setup.c:1703 +msgid "Channel switcher" +msgstr "" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "" + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "" + +#: src/fe-gtk/urlgrab.c:209 +msgid "XChat: URL Grabber" +msgstr "" + +#: src/fe-gtk/urlgrab.c:222 +msgid "Clear list" +msgstr "" + +#: src/fe-gtk/urlgrab.c:224 +msgid "Copy selected URL" +msgstr "" + +#: src/fe-gtk/urlgrab.c:224 +msgid "Copy" +msgstr "" + +#: src/fe-gtk/urlgrab.c:226 +msgid "Save list to a file" +msgstr "" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "" diff --git a/etc/wyatt8740/po/zh_CN.po b/etc/wyatt8740/po/zh_CN.po new file mode 100644 index 0000000..795a236 --- /dev/null +++ b/etc/wyatt8740/po/zh_CN.po @@ -0,0 +1,5827 @@ +# X-Chat Simplified Chinese message translation file. +# Copyright (C) 2010 Free Software Foundation, Inc. +# This file is distributed under the same license as the xchat package. +# +# Zong Yaotang <zong@cosix.com.au>, 2002. +# Dalin <ayi880@hotmail.com>, 2003. +# Minor revision by Walte <webmaster@www.linuxfans.org>, 2003. +# Sarah Smith <sarahs@redhat.com>, 2003. +# Rongjun Mu <elanmu@sina.com>, 2003. +# Rongjun Mu <rongjunmu+i18n@gmail.com>, 2004. +# Zhuyuan Liu <gtkdict@yahoo.com.cn>, 2005. +# SEPTEM <septeman@gmail.com>, 2006. +# Aron Xu <happyaron.xu@gmail.com>, 2010. +# Eleanor Chen <chenyueg@gmail.com>, 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.8.6\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2010-02-14 23:17+0800\n" +"Last-Translator: Eleanor Chen <chenyueg@gmail.com>\n" +"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "无法创建 ~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "我很忙" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "离开" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* 不要以 root 身份执行 IRC!您应该\n" +" 使用普通用户帐号来登录。\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "等待" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "活跃" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "失败" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "完成" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "连接" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "中止" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "无法获取 %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "错误" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s 要给您发送“%s”,接受吗?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "没有活跃的 DCC\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "是 " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "否 " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "您正受到来自 %s 的 CTCP 洪水攻击,忽略 %s\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "您正受到来自 %s 的 MSG 洪水攻击,设置图形化自动对话框为关闭。\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s 在线\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s 离线\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "没有进入任何频道。请尝试 /join #<channel>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "未连接任何服务器。请尝试 /server <host> [<port>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "已标记为离开:%s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "已取消离开标记。\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "使用 /bin/sh 才能执行本程序!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "可用命令:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "用户自定义命令:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "可用插件命令:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "请输入 /HELP <command> 或者 /HELP -l 以获取更多信息" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "忽略未知参数“%s”。" + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "找不到该插件。\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "无法卸载该插件。\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <name> <action>,在用户列表下添加一个按钮" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <cmd>,向您所在的所有频道发送命令" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHANL <cmd>,向您所在的所有频道发送命令" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <cmd>,向您所在的所有服务器发送命令" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<reason>],设置您为离开状态" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "BACK,取消离开状态" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <mask> [<bantype>],禁止所有符合掩码 <mask> 的用户进入当前的频道。如果他" +"们已在该频道,这个命令不会将其踢出(需要具有频道管理员身份)" + +#: src/common/outbound.c:3506 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <variable> [<value>]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "CLEAR [ALL|HISTORY],清空当前的窗口文本或命令历史" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE,关闭当前窗口或标签页" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" +"COUNTRY [-s] <code|wildcard>,查看国家代码对应的国家名,比如 :cn = 中国" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <nick> <message>,给昵称为 <nick> 者发送 CTCP 信息,常用是 VERSION 和 " +"USERINFO" + +#: src/common/outbound.c:3516 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "CYCLE [<channel>],离开当前频道并立即重新进入" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <nick> - 接收昵称为 <nick> 者使用 DCC 发送给\n" +" 您的文件\n" +"DCC SEND [-maxcps=#] <nick> [file] - 使用 DCC 发送文件给 <nick>\n" +"DCC PSEND [-maxcps=#] <nick> [file] - 使用被动模式 DCC 发送文件给某人\n" +"DCC LIST - 显示 DCC 列表\n" +"DCC CHAT <nick> - 与 <nick> 进行 DCC 直连聊天\n" +"DCC PCHAT <nick> - 使用 DCC 被动模式与 <nick> 聊天\n" +"DCC CLOSE <type> <nick> <file> 例如:\n" +" /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <nick>,取消当前频道内昵称为 <nick> 的副管理员身份(需要具有频道管理员身" +"份)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <name>,删除用户列表下的一个按钮" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <nick>,取消昵称为 <nick> 者在当前频道的管理员身份(需要具有频道管理员身" +"份)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <nick>,取消昵称为 <nick> 者在当前频道的发言权(需要具有频道管理员身" +"份)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON,从服务器断开连接" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <nick|host|ip>,查询某位用户的 IP 地址" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <text>,在本地显示文本" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <command>,执行命令。如果使用了 -o 选项则输出到当前频道,否则输出到" +"当前文本框" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT,向进程发送 SIGCONT 信号" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9],杀死当前会话中的某执行进程。如果使用 -9 选项,则用 SIGKILL 杀" +"死该进程" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP,向进程发送 SIGSTOP 信号" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE,把数据发送给进程的标准输入" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ,清空当前服务器的发送队列" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <host> [<port>],经由某主机来代理,默认端口为 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <nick> <password>,注销其他使用该昵称的登录" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <nick>,给昵称为 <nick> 者以副管理员的身份(需要具有频道管理员身份)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <password>,向昵称服务器进行身份验证" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <mask> <types..> <options..>\n" +" mask - 要忽略的主机掩码,比如 *!*@*.aol.com\n" +" types - 要忽略数据的类型,应以下选项之一或全部:\n" +" PRIV,CHAN,NOTI,CTCP,INVI,ALL\n" +" options - 忽略选项:NOSAVE,QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <nick> [<channel>],邀请昵称为 <nick> 者进入频道,默认为当前的频道(需" +"要具有频道管理员身份)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <channel>,进入频道" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "KICK <nick>,把昵称为 <nick> 者踢出当前频道(需要具有频道管理员身份)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <nick>,把昵称为 <nick> 者踢出当前频道,并禁止再次进入(需要具有频道管" +"理员身份)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK,强制进行延迟检查" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <string>,在缓冲区中搜索字符串" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <file>,载入插件或脚本" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP,撤销当前频道中所有副管理员(需要具有频道管理员身份)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP,撤销当前频道中所有管理员(需要具有频道管理员身份)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <action>,向当前频道中发送一个动作(动作使用第三人称陈述,例如 /me 跳一下)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK,踢出当前频道中除您自己以外的所有用户(需要具有频道管理员身份)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP,给当前频道中所有用户赋予管理员的身份(需要具有频道管理员身份)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <nick> <message>,给昵称为 <nick> 者发送一则私聊信息" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES,列出当前频道的所有用户" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <nick> <message>,给昵称为 <nick> 者发送一则 CTCP 通知" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <hostname> [<port>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <nickname>,设置您的昵称" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <nick/channel> <message>,发送一则通知。通知是一种能被自动回应的信息" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n network1[,network2,...]] [<nick>],列出您的通知列表,或在列表中添" +"加某人" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <nick>,委任 <nick> 为频道管理员(需要具有频道管理员身份)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<channel>] [<reason>],离开频道,默认为当前的频道" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <nick | channel>,向某位用户或频道发送 CTCP PING 消息" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "QUERY [-nofocus] <nick>,与某人私聊" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<reason>],从与当前服务器断开连接" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <text>,向服务器发送原始格式的文本" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>],可用 /RECONNECT 重新连接当前" +"的服务器或用 /RECONNECT ALL 重新连接所有服务器" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<host>] [<port>] [<password>],可用 /RECONNECT 重新连接当前服务器" +"或用 /RECONNECT ALL 重新连接所有服务器" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <text>,向 xchat 发送原始数据,就好像它是从 irc 服务器上接收到的一样" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <text>,向当前窗口中的对象发送文本" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <nick> [<file>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <host> <port> <channel>,连接服务器并进入某频道" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <host> <port> <channel>,连接服务器并进入某频道" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <host> [<port>] [<password>],连接服务器。普通连接默认端口为 " +"6667,SSL 加密连接默认端口为 9999" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <host> [<port>] [<password>],连接服务器。默认端口为 6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <variable> [<value>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<position>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "TOPIC [<topic>],设置频道主题,如果未指定内容则显示当前主题" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" +"\n" +"TRAY -f <时间> <文件1> [<文件2>] 在托盘中使用两个图标进行闪烁。\n" +"TRAY -f <文件名> 设置托盘为固定图标。\n" +"TRAY -i <数字> 使用内部图标闪烁托盘。\n" +"TRAY -t <文本> 设置托盘工具提示。\n" +"TRAY -b <标题> <文本> 设置托盘气泡通知。" + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <mask> [<mask>...],解禁指定的掩码。" + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <mask> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <name>,卸载插件或脚本" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>,在浏览器中打开 URL" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "USELECT [-a] [-s] <nick1> <nick2>...,在频道用户列表中以高亮度标示昵称" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <nick>,给予昵称为 <nick> 者发言权(需要具有频道管理员身份)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <message>,发送信息到所有的频道" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <message>,给当前频道中所有管理员发送消息" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "用法:%s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"没有关于该命令的帮助信息。\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "无此命令。\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "用户命令的参数不对。\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "太多递归的用户命令,中止。" + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "未知命令。请尝试 /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "无 xchat_plugin_init 符号,您确实这是 xchat 的插件吗?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "您确信此服务器和端口支持 SSL?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"无法解析主机名 %s\n" +"请检查您的 IP 设置!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "代理传送失败。\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "跳转至 %s 的下一个服务器...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "警告:未知的字符设置“%s”。对网络 %s 将不应用字符转换。" + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 已增加到通知列表。" + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 屏蔽列表:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$t不能进入%C26 %B$1 %O(您被屏蔽了)。" + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 改名为 $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 屏蔽了 $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$t频道 $1 建立于 $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O 取消了%C26 $2 的频道副管理员权限" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O 取消了%C26 $2 的频道管理员权限" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O 取消了%C26 $2 的发言权" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 给 $2 设置了免封权" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O 委任%C26 $2 为频道副管理员" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 邀请了 $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%U频道 用户 主题" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 设置 $2$3 $4 模式" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22频道 $1 模式:$2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O 委任%C26$2 为频道管理员" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 取消了 $2 的免封权" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 取消了 $2 的邀请权" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 取消了频道密码" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 取消了用户限制" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 设置频道密码为 $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 设置频道限制为 $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 解除了对 $2 的屏蔽" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O 给了%C26$2 发言权" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22已连接。正在登录..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22正在连接到 $1 ($2) 端口 $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21连接失败。错误:$1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$t收到来自 $2 的CTCP $1" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$t收到来自 $2 (到 $3)的 CTCP $1" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$t收到来自 $2 的 CTCP 声音 $1" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$t收到来自 $2 (到 $3)的 CTCP 声音 $1" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$t中止了与 %C26$1%O 的 DCC 直连聊天。" + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$t已与 %C26$1 %C30[%O$2%C30] 建立了 DCC 直连聊天连接" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$$t 与 %C26$1%O 的 DCC 直连聊天连接丢失($4)。" + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$t收到来自 $1 的 DCC 直连聊天请求" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$t向 $1 发送 DCC 直连聊天请求" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$t已发送 DCC 直连聊天请求给 $1" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$t尝试到 %C26$2%O 的 DCC $1 连接失败(err=$3)。" + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$t收到来自 $2 的“$1%O”" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 类型 到/来自 状态 大小 位置 文件 " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O.%010%C22*%O" +"$tContents of packet: $2" +msgstr "" +"%C22*%O$t收到来自 %C26$1%O 的有错的 DCC 请求。%010%C22*%O$t数据包内容:$2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$t 发送 %C26 $1%O 给%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$t无此 DCC 请求。" + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$t到%C26 $1%O 的 DCC RECV%C26 $2%O 中止。" + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$t从%C26 $3%O DCC RECV%C26 $1%O 已完成 %C30[%C26$4%O cps%C30]%O。" + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$t建立与%C26$1 的 DCC RECV 连接 %C30[%0$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$t从%C26 $3%O DCC RECV%C26 $1%O 失败($4)。" + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV:无法打开 $1 进行写入($2)。 " + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "%C22*%O$t文件%C11 $1%C 已存在,请另存为%C26 $2%O。" + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %O请求续传来自%C26 $3%C的%C26 $2 %C 。" + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$t到%C26$1%O的 DCC SEND%C26$2%O 已中止。" + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$t到%C26$2%O 的 DCC SEND%C26$1%O 已完成 %C30[%C26$3%O cps%C30]%O。" + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$t已建立到%C26 $1%C30[%O$2%C30] 的 DCC SEND 连接" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$t到%C26$2%O 的 DCC SEND%C26$1%O 失败。$3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1%O已发送%C26 $2%O(%C26$3%O 字节)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2%O到 %C26$3%C 没有响应 - 中止。" + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2%O到%C26 $3%O超时 - 中止。" + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1已从通知列表中删除。" + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$t已断开连接($1)。" + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$t找到您的 IP:[$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O已添加到忽略列表。" + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "对 %C26$1%O 的忽略已变更。" + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 主机掩码 PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O 已从忽略列表中删除。" + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " 您的忽略列表是空的。" + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "%C22*%O$t无法进入%C26 %B$1 %O(该频道只能邀请进入)。" + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$t%C26 $2%C (%C26$3%C)邀请您进入%C26 $1%O" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) 进入了 $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$t无法进入%C26 %B$1 %O(需要密码)。" + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 把 $2 踢出了 $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$t您被 $1 从服务器上踢出($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD 被跳过。" + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 已被占用。正在使用 $2 重试..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "%C22*z%O$t该昵称已被占用。请用 /NICK 尝试使用另一个昵称。" + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$t没有此 DCC。" + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$t当前没有任何进程在执行" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$t 通知列表是空的。" + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B 通知列表 " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1通知列表中有 $1 位用户。" + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$t通知:$1 下线了($3)。" + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$t通知:$1 上线了($3)。" + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) 离开了 $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) 离开了 $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$t从 $1 处得到 Ping 回应时间:$2 秒" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$t在 %1 秒内没有收到 Ping 回应,正在断开连接。" + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$t已有一进程正在运行" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 已退出(%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 设置模式%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$t查寻 %C26 $1%O 的 IP 地址..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22已连接。" + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22正在查询 $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$t前次连接尝试停止(pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29 $1%C %C29的主题是:$2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 已将主题更改为:$2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29$1%C %C29的主题由 $2%C %C29于 $3 设置" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$t未知主机。也许您把它拼写错了?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "%C22*%O$t无法进入%C26 %B$1 %O(达到了用户限制)。" + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26 $1 中的用户:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %C暂时离开了 %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OWHOIS 列表结束。" + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O 发呆%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O 发呆%C26 $2%O,登录时间:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O:$4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O真实 user@host%C27 $2%O,真实 IP%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19您正在 $2 频道里聊天" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$t您被 $3 从 $2 中踢出($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$t您已离开频道 $3" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$t您已离开频道 $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$t您已邀请%C26 $1%O 进入%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$t您已改名为 $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "从以下位置载入聊天记录:" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** 结束聊天记录于 %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** 开始聊天记录记录于 %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"不能打开聊天记录文件进行写入操作。请检查\n" +"%s/xchatlogs 的权限设置" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "左边的信息" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "右边的信息" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "进入的用户" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "进入的频道" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "此人的主机名" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "昵称" + +#: src/common/text.c:973 +msgid "The action" +msgstr "动作" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "模式" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "验证文本" + +#: src/common/text.c:980 +msgid "The text" +msgstr "文本" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "信息" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "原昵称" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "新昵称" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "更改主题的用户" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "主题" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "频道" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "能踢人的用户" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "被踢者" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "频道" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "原因" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "离开的用户" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "时间" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "建立者" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "昵称" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "原因" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "主机" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "来自者" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "时间格式为 x.x(见下)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "要进入的频道" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "声音" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "此人的昵称" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "CTCP 事件" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "设置密码的用户" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "密码" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "设置限制的用户" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "限制" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "使用了 op 命令的用户" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "被授予管理员身份的用户" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "被授予副管理员身份的用户" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "使用 halfop 命令的用户" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "使用 voice 命令的用户" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "被赋予发言权的用户" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "使用 ban 命令的用户" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "屏蔽掩码" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "取消密码的用户" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "取消用户限制的用户" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "使用 deop 命令的用户" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "被取消管理员身份的用户" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "使用 dehalfop 命令的用户" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "被取消副管理员身份的用户" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "使用 devoice 命令的用户" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "被取消发言权的用户" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "使用 unban 命令的用户" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "使用 exempt 命令的用户" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "exempt 掩码" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "取消 exempt 的用户" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "使用 invite 命令的用户" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "invite 掩码" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "取消 invite 的用户" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "设置模式的用户" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "模式符号(+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "模式字母" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "被设置的频道" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "用户名" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "全名" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "频道成员/“是 IRC 管理员”" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "服务器信息" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "发呆时间" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "登录时间" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "离开原因" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "信息" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "帐户" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "真实 user@host" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "真实 IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "频道名" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "文本" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "服务器名" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "邀请您的用户" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "用户" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "昵称已被使用" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "已试过的昵称" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "端口" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "网络" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "模式" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "IP 地址" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "DCC 类型" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "文件名" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "目标文件名" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "路径名" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "位置" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "大小" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "DCC 字符串" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "通知条目数" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "原文件名" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "新文件名" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "接收者" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "主机掩码" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "主机名" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "包" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "秒" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "被邀请的用户" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "屏蔽掩码" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "设置屏蔽的用户" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "屏蔽时间" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"解析事件 %s 出错。\n" +"载入默认值。" + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"无法读取声音文件:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "远端主机已关闭套接字" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "连接被拒绝" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "没有到主机的路由" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "连接超时" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "无法分配该地址" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "连接被重置" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "阿森松岛" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "安道尔" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "阿拉伯联合大公国" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "阿富汗" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "安地卡及巴布达" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "安圭拉岛" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "阿尔巴尼亚" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "亚美尼亚" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "荷属安地列斯" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "安哥拉" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "南极洲" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "阿根廷" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "反向 DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "美属萨摩亚" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "奥地利" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "北大西洋公约组织" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "澳大利亚" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "阿卢巴岛" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "奥兰群岛" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "亚塞拜然" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "波士尼亚及赫塞哥维那" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "巴贝多" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "孟加拉" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "比利时" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "布吉纳法索" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "保加利亚" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "巴林" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "浦隆地" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "商业" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "贝南" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "百慕达群岛" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "汶莱" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "玻利维亚" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "巴西" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "巴哈马群岛" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "不丹" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "波维特岛" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "波札那" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "白俄" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "贝里斯" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "加拿大" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "可可斯群岛" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "刚果民主共和国" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "中非共和国" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "刚果" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "瑞士" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "象牙海岸" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "科克群岛" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "智利" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "喀麦隆" + +#: src/common/util.c:898 +msgid "China" +msgstr "中国" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "哥伦比亚" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Internic 商业组织" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "哥斯大黎加" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "塞尔维亚及蒙特尼哥罗" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "古巴" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "维德角岛" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "圣诞岛" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "赛普勒斯" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "捷克共和国" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "德国" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "吉布地" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "丹麦" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "多明尼克" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "多明尼加共和国" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "阿尔及利亚" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "厄瓜多" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "教育机构" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "爱沙尼亚" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "埃及" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "西撒哈拉" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "埃立特里亚" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "西班牙" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "衣索比亚" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "欧盟" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "芬兰" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "斐济" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "福克兰群岛" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "密克罗尼西亚" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "法罗群岛" + +#: src/common/util.c:928 +msgid "France" +msgstr "法国" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "加彭" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "大不列颠" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "格瑞纳达" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "乔治亚" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "法属圭亚那" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "不列颠海峡群岛" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "迦纳" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "直布罗陀" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "格陵兰" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "甘比亚" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "几内亚" + +#: src/common/util.c:940 +msgid "Government" +msgstr "政府部门" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "瓜德鲁普岛" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "赤道几内亚" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "希腊" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "南乔治亚及南桑威奇群岛" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "瓜地马拉" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "关岛" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "几内亚比索" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "盖亚那" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "中国香港特别行政区" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "赫德及麦当劳群岛" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "宏都拉斯" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "克罗埃西亚" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "海地" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "匈牙利" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "印尼" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "爱尔兰" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "以色列" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "曼岛" + +#: src/common/util.c:959 +msgid "India" +msgstr "印度" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "信息机构" + +#: src/common/util.c:961 +msgid "International" +msgstr "国际组织" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "英属印度洋地区" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "伊拉克" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "伊朗" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "冰岛" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "意大利" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "泽西岛" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "牙买加" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "约旦" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "日本" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "肯亚" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "吉尔吉斯" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "柬埔寨" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "吉里巴斯" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "葛摩" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "圣克里斯多福" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "朝鲜" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "韩国" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "科威特" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "开曼群岛" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "哈萨克" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "老挝" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "黎巴嫩" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "圣露西亚" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "列支敦斯登" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "斯里兰卡" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "赖比瑞亚" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "赖索托" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "立陶宛" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "卢森堡" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "拉脱维亚" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "利比亚" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "摩洛哥" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "摩纳哥" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "摩尔多瓦" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "美国医疗组织" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "马达加斯加" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "马绍尔群岛" + +#: src/common/util.c:999 +msgid "Military" +msgstr "军事机构" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "马其顿" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "马利" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "缅甸" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "蒙古" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "中国澳门特别行政区" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "北马里亚纳群岛" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "法属马丁尼克" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "茅利塔尼亚" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "蒙瑟拉特岛" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "马尔他" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "模里西斯" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "马尔地夫" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "马拉威" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "墨西哥" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "马来西亚" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "莫三比克" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "纳米比亚" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "新喀里多尼亚岛" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "尼日" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Internic 网络" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "诺福克岛" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "奈及利亚" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "尼加拉瓜" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "荷兰" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "挪威" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "尼泊尔" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "诺鲁" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "纽威岛" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "纽西兰" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "阿曼" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Internic 非营利性组织" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "巴拿马" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "秘鲁" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "法属波里尼西亚" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "巴布亚纽几内亚" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "菲律宾" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "巴基斯坦" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "波兰" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "圣匹及密启伦群岛" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "皮特康岛" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "波多黎各" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "巴勒斯坦地区" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "葡萄牙" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "帛琉群岛" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "巴拉圭" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "卡达" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "留尼旺" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "罗马尼亚" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "教育 ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "俄罗斯联邦" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "卢安达" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "沙乌地阿拉伯" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "所罗门群岛" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "塞席尔群岛" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "苏丹" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "瑞典" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "新加坡" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "圣赫勒拿岛" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "斯洛凡尼亚" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "冷岸及央麦恩群岛" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "斯洛伐克共和国" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "狮子山" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "圣马利诺" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "塞内加尔" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "索马利亚" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "苏利南" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "圣多美和普林西比" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "前苏联" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "萨尔瓦多" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "叙利亚" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "史瓦济兰" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "土克斯及开科斯群岛" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "查德" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "法属南部地区" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "多哥" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "泰国" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "塔吉克" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "托克劳群岛" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "东帝汶" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "土库曼" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "突尼西亚" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "东加" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "土耳其" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "千里达托贝哥" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "吐瓦鲁" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "中国台北" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "坦尚尼亚" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "乌克兰" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "乌干达" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "英国" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "美国" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "乌拉圭" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "乌兹别克" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "梵蒂冈" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "圣文森及格瑞那丁" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "委内瑞拉" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "英属维京群岛" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "美属维京群岛" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "越南" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "万那杜" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "瓦里斯及富都拿群岛" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "萨摩亚" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "叶门" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "马尔他群岛" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "南斯拉夫" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "南非" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "尚比亚" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "辛巴威" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "未知" + +#: src/common/xchat.c:726 +msgid "_Open Dialog Window" +msgstr "打开对话窗口(_O)" + +#: src/common/xchat.c:727 +msgid "_Send a File" +msgstr "发送文件(_S)" + +#: src/common/xchat.c:728 +msgid "_User Info (WhoIs)" +msgstr "用户信息(_U)(WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "添加到好友列表(_A)" + +#: src/common/xchat.c:730 +msgid "O_perator Actions" +msgstr "管理员动作(_P)" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "赋予管理员权限" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "取消管理员权限" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "赋予发言权" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "取消发言权" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "踢出/屏蔽" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "踢出" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "屏蔽" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "踢出并屏蔽" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "离开频道" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "进入频道..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "输入要进入的频道:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "服务器列表" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Ping 服务器" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "隐藏版本信息" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "赋予管理员权限" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "取消管理员权限" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "道别" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "输入踢出 %s 的原因:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "发送文件" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "对话" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "发送" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "聊天" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "清除" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "无法连接到会话总线" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "完成 NameHasOwner 失败" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "完成命令失败" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "远程访问" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "用 DBUS 远程访问的插件" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "无法连接到会话总线:%s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "获取 %s 失败:%s\n" + +#: src/fe-gtk/about.c:100 +msgid "About " +msgstr "关于" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "跨平台的 IRC 客户端" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "特殊字符" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "未连接。" + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "您必须选择一些被屏蔽。" + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "您确定要删除 %s 中的全部屏蔽吗?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "掩码" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "来自" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "日期" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "您只能在一个频道的标签页下打开屏蔽列表窗口。" + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat:屏蔽列表(%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "删除" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "剪切" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "刷新" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "显示在 %3$d/%4$d 个频道中的 %1$d/%2$d 用户。" + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "选择输出文件名" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "进入频道(_J)" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "复制频道名称(_C)" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "复制频道主题(_T)" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat:频道列表(%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "搜索(_S)" + +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "下载列表(_D)" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "保存列表(_L)..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "只显示:" + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "有" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "到" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "位用户的频道。" + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "按照:" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "频道名称" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "搜索类型:" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "简单搜索" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "模式匹配(通配符)" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "正则表达式" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "查找:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "给 %s 发送文件" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "该文件不可续传。" + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"不能访问文件:%s\n" +"%s。\n" +"无法续传。" + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "下载目录中的文件比提供的文件大,无法续传。" + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "不能从两人处续传同一文件" + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat:文件传输列表" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "状态" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "文件" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "剩余时间" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "两者" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "上传" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "下载" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "详细信息" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "文件:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "地址:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "中止" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "接受" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "续传" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "打开目录..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat:DCC 直连聊天列表" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "已接收" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "已发送" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "开始时间" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*添加*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "编辑" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "名称" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "命令" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "上移" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "下移" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "取消" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "保存" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "添加" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "删除" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "排序" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "帮助" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "不要自动连接到服务器" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "使用不同的设置目录" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "不自动载入任何插件" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "显示插件自动载入的目录" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "显示用户设置目录" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "打开一个 irc://server:port/channel URL" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "执行命令:" + +#: src/fe-gtk/fe-gtk.c:132 +msgid "Open URL or execute command in an existing XChat" +msgstr "在 XChat 中打开 URL 或执行命令" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "启动后最小化。级别 0=正常 1=仅图标 2=托盘" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "级别" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "显示版本信息" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"打开字体失败:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "搜索缓冲区当前为空。\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d 字节" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "网络发送队列:%d 字节" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"“Run Command”会执行数据 1 中的数据,就如同您是在输入按键序列后出现的输入格中" +"键入这些数据一样。这样,它就会包含文本 (这些文本会被发送给频道或某人)、命令或" +"用户命令。执行时,数据 1 中所有“\\n”字符 被用来分隔命令,因此您可以执行不止一" +"个命令。如果您想在执行的文本中包含字符“\\”,您应该输入“\\\\”" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"“Change Page”命令在您的笔记本中的标签页间切换。将数据 1 设置成您要切换的标签" +"页。如果数据 2 被设置成任意值,切换标签页数将相对于当前位置而言" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"“Insert in Buffer”命令在当前游标处把数据 1 中的内容插入到接受按键序列的输入格" +"中" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"“Scroll Page”命令在文本窗口元件中上下滚动一页或一列。设置数据 1 为 Up、DOWN、" +"+1 或 -1。" + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "“Set Buffer”命令把接受按键序列后的输入格设置成数据 1 中的内容" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"“Last Command”命令把输入区域设为前一个命令 - 和在终端中按向上箭头效果相同" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"“Next Command”命令把输入区域设为下一个命令 - 和在终端中按向下箭头效果相同" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"该命令改变输入格中文本,来完成未输入完毕的用户昵称或命令。如果数据 1 被设置," +"那么,双击 tab 键会选择最后一个昵称,而非下一个" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"该命令在昵称列表中上下移动。如果数据 1 被设置成任意值,它会上移,否则下移" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "该命令对照替换列表来检查输入的最后一词,若找到符合者就代替它" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "该命令把最上面的标签页向左移一格" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "该命令把最上面的标签页向右移一格" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "该命令把当前标签页向左移一格" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "该命令把当前标签页向右移一格" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "把输入存入历史,但不发送到服务器" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "载入键盘映射配置时出错" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<无>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "修饰键" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "按键" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "动作" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat:键盘快捷键" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "数据 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "数据 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "打开按键配置文件时出错\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"键盘映射配置文件中没有键名 %s\n" +"中止载入,请修复 %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"键盘映射配置文件中没有动作 %s\n" +"中止载入,请修复 %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"期待数据列(以 Dx{:|!} 开始),却得到:\n" +"%s\n" +"\n" +"中止载入。请修复 %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"键盘映射配置文件损坏,中止载入\n" +"请修复 %s/keybindings.conf\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "无法写入该文件。" + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "无法读取该文件。" + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "该掩码已存在。" + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "私聊" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "通知" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "邀请" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "取消忽略" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "输入要忽略的掩码:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat:忽略列表" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "忽略统计:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "频道:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "私聊:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "通知:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "邀请:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "添加..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "频道名称过短,请重新尝试" + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat:连接完毕" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "成功建立到 %s 的连接" + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "在服务器列表窗口,没有添加自动进入的频道名称" + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "您接下来要进行怎样的操作?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "我稍后自行进入频道。(_N)" + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "进入以下频道(_J):" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "如果您知道想要进入的频道的名称,请在这里输入。" + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "打开频道列表窗口(_P):" + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "检索频道列表可能需要一两分钟。" + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "每次连接后都显示该对话框。(_A)" + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "与以下用户对话:" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "%s 的主题:%s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "没有设置主题" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "这台服务器仍然有 %d 个与它相关的频道或对话。要全部关闭吗?" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "确实要退出 XChat?" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "下次不再询问。" + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "您已连接到 %i 个 IRC 网络。" + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "您确定要退出吗?" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "某些文件传输仍在进行." + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "最小化至系统托盘(_M)" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "插入属性或颜色代码" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>粗体</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>底线</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "正常" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "颜色 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "颜色 8-15" + +#: src/fe-gtk/maingui.c:1612 +msgid "_Settings" +msgstr "设置(_S)" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "记录聊天日志到磁盘(_L)" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "重新载入最近日志(_R)" + +#: src/fe-gtk/maingui.c:1617 +msgid "_Hide Join/Part Messages" +msgstr "隐藏进入/离开信息(_H)" + +#: src/fe-gtk/maingui.c:1625 +msgid "_Extra Alerts" +msgstr "额外警报(_E)" + +#: src/fe-gtk/maingui.c:1627 +msgid "Beep on _Message" +msgstr "有信息时响铃提示(_M)" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "闪烁托盘图标(_I)" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "闪烁任务栏图标(_B)" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +msgid "_Detach" +msgstr "分离(_D)" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "关闭(_C)" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "用户限制必须是数字!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "主题保护" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "无室外信息" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "秘密" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "仅邀请" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "监管状态" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "屏蔽列表" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "密码" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "用户限制" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "显示/隐藏用户列表" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"无法设置透明背景!\n" +"\n" +"或许您正使用当前尚不被支持的\n" +"窗口管理程序。\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "输入新昵称:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "未知主机" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "真实姓名:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "用户:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "国家:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "服务器:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "%u 分钟之前" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "最后发言:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "离开信息:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "已选择 %d 个昵称。" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"菜单栏当前已隐藏。您可以藉由按下 F9 或以鼠标右键点选主要文本区域的空白部份来" +"重新显示它。" + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "在浏览器中打开链接" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "复制选取的链接" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "进入频道" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "离开频道" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "离开频道,而后立即进入" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "从收藏中删除(_R)" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "添加到最爱(_A)" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat:用户菜单" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "编辑此菜单..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "获取频道列表..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"用户命令 - 特殊编码:\n" +"\n" +"%c = 当前频道\n" +"%e = 当前网络名称\n" +"%m = 机器信息\n" +"%n = 昵称\n" +"%t = 时间/日期\n" +"%v = xchat 版本\n" +"%2 = 第 2 个词\n" +"%3 = 第 3 个词\n" +"&2 = 从第 2 个词到行末\n" +"&3 = 从第 3 个词到行末\n" +"\n" +"如:\n" +"/cmd john hello\n" +"\n" +"%2 是“john”\n" +"&2 是“john hello”。" + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"用户列表按钮 - 特殊编码:\n" +"\n" +"%a = 所有选取的用户\n" +"%c = 当前频道\n" +"%e = 当前网络名称\n" +"%h = 选取的昵称的主机名\n" +"%m = 机器信息\n" +"%n = 您的昵称\n" +"%s = 选取的昵称\n" +"%t = 时间/日期\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"对话按钮 - 特殊编码:\n" +"\n" +"%a = 所有选取的用户\n" +"%c = 当前频道\n" +"%e = 当前网络名称\n" +"%h = 选取的昵称的主机名\n" +"%m = 机器信息\n" +"%n = 您的昵称\n" +"%s = 选取的昵称\n" +"%t = 时间/日期\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"CTCP 回应 - 特殊编码:\n" +"\n" +"%d = 数据 (全部 ctcp)\n" +"%e = 当前网络名称\n" +"%m = 机器信息\n" +"%s = 发送 ctcp 的用户\n" +"%t = 时间/日期\n" +"%2 = 第 2 个词\n" +"%3 = 第 3 个词\n" +"&2 = 从第 2 个词到行末\n" +"&3 = 从第 3 个词到行末\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"URL 处理程序 - 特殊编码:\n" +"\n" +"%s = URL 字符串\n" +"\n" +"在命令前加一个“!”表示\n" +"该命令应被发送到 shell 而\n" +"非 XChat" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat:用户自定义命令" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat:用户列表弹出菜单" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "使用以下替换" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat:替换" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat:URL 处理程序" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat:用户列表按钮" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat:对话按钮" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat:CTCP 回应" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "网络列表(_S)..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "添加(_N)" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "服务器标签页..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "频道标签页..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "服务器窗口..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "频道窗口..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "载入插件或脚本(_L)..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "离开(_Q)" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "查看(_V)" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "菜单栏(_M)" + +#: src/fe-gtk/menu.c:1592 +msgid "_Topic Bar" +msgstr "主题栏(_T)" + +#: src/fe-gtk/menu.c:1593 +msgid "_User List" +msgstr "用户菜单(_U)" + +#: src/fe-gtk/menu.c:1594 +msgid "U_serlist Buttons" +msgstr "用户列表按钮(_U)..." + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "模式按钮(_O)" + +#: src/fe-gtk/menu.c:1597 +msgid "_Channel Switcher" +msgstr "频道转换器(_C)" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "标签页(_T)" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "树状图(_R)" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "网络流量(_N)" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "离线" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "图形" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "服务器(_S)" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "断开连接(_D)" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "重新连接(_R)" + +#: src/fe-gtk/menu.c:1613 +msgid "Join a Channel..." +msgstr "进入频道..." + +#: src/fe-gtk/menu.c:1614 +msgid "List of Channels..." +msgstr "频道列表..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "标记为离开" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "用户菜单(_U)" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "设置(_E)" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "首选项(_P)" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "高级" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "自动替换..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "CTCP 回应..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "对话框按钮..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "键盘快捷键..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "文本事件..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "URL 处理程序..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "用户命令..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "用户列表按钮..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "用户列表弹出菜单..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "窗口(_W)" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "屏蔽列表..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "特殊字符..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "直连聊天..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "文件传输..." + +#: src/fe-gtk/menu.c:1641 +msgid "Friends List..." +msgstr "好友列表" + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "忽略列表..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "插件和脚本..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "原始记录..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "URL 抓取程序..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "重置标记线" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "清空文本(_L)" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "搜索文本..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "保存文本..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "帮助(_H)" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "内容(_C)" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "检查更新" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "关于(_A)" + +#: src/fe-gtk/menu.c:2147 +msgid "_Attach" +msgstr "整合(_A)" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "上次发现" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "离线" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "从不" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "%d 分钟之前" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "上线" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "输入要添加的昵称:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "在这些网络中进行通知:" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "此处允许使用逗号分隔多个网络。" + +#: src/fe-gtk/notifygui.c:413 +msgid "XChat: Friends List" +msgstr "XChat:好友列表" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "打开对话" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" +"不能找到 'notify-send' 以用于开启气泡提示。\n" +"请安装 libnotify 软件包。" + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "XChat:已连接到 %u 个网络和 %u 个频道" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "恢复(_R)" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "隐藏(_H)" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "闪烁于(_B)" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "频道消息" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "私聊消息" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "高亮显示的消息" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "更改状态(_C)" + +#: src/fe-gtk/plugin-tray.c:602 +msgid "_Away" +msgstr "离开(_A)" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "返回(_B)" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat:高亮消息来自于:%s (%s)" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat:%u 条高亮消息,最近一条来自于:%s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat:新的公共消息来自于:%s (%s)" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat:%u 条新的公共消息。" + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat:私聊消息来自于:%s (%s)" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "Xchat:%u 条私聊消息,最近的一个来自于: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat: 文件传输来自于: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "Xchat: %u 个文件传输,最近的一个来自于:%s (%s)" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "版本" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "描述" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "选择要载入的插件或脚本" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat:插件和脚本" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "载入(_L)..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "卸载(_U)" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "另存为..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat:原始聊天记录(%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "清除原始聊天记录" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "您为该搜索打开的窗口已不存在。" + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "已搜索到尾部,未找到符合条件的结果。" + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat:搜索" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "区分大小写(_M)" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "反向搜索" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "查找(_F)" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "添加网络" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "确实要删除网络“%s”以及它的所有服务器吗?" + +#: src/fe-gtk/servlistgui.c:740 +msgid "#channel" +msgstr "#channel" + +#: src/fe-gtk/servlistgui.c:850 +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat:收藏的频道列表(自动进入列表)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "在您连接到 %s 时将自动进入这些频道。" + +#: src/fe-gtk/servlistgui.c:906 +msgid "Key (Password)" +msgstr "密码" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "编辑(_E)" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "已删除 %s。" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "已添加 %s。" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "用户名与真实姓名不可为空白。" + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat:编辑 %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "%s 的服务器" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "只连接到选取的服务器" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "当连接失败时不要循环跳至所有的服务器。" + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "您的详细信息" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "使用全局用户信息" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "昵称(_N):" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "第二选择:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "用户名(_U):" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "真实姓名(_L):" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "连接中" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "启动时自动连接到此网络" + +#: src/fe-gtk/servlistgui.c:1462 +msgid "Bypass proxy server" +msgstr "代理服务器" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "在本网络的所有服务器上使用 SSL" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "接受无效的 SSL 证书" + +#: src/fe-gtk/servlistgui.c:1475 +msgid "_Favorite channels:" +msgstr "收藏的频道:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "要进入的频道,请用逗号而不是空格分隔!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "连接命令:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"连接后执行的额外的命令。如果您使用多个命令,请设置为 LOAD -e <文件名>,其中 <" +"文件名> 是一个包含要执行的命令的文本文件。" + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "昵称密码:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"如果您的昵称需要密码,就在这里将它输入。并非所有的 IRC 网络都支持此一功能。" + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "服务器密码:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "服务器的密码。如果不确定请留空。" + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "字符集:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat:网络列表" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "用户信息" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "第三选择:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "网络" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "启动时不打开网络列表" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "编辑(_E)" + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "排序(_S)" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "按字母顺序排练网络列表。使用SHIFT+上下方向键来移动行。" + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "连接(_O)" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "文本框外观" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "字体:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "背景图像:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "回滚行数:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "彩色昵称" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "给 IRC 上的每名用户使用一种不同的颜色" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "缩进昵称" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "让昵称右侧对齐" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "透明背景" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "显示标记线" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "在最后读取的文本后添加一条红线。" + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "透明度设置" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "红:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "绿:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "蓝:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "时间戳" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "启用时间戳" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "时间戳格式:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "查看 strftime 的 man 手册页以获取详细信息。" + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "按最后发言时间" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "输入框" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "使用文本框字体及颜色" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "拼写检查" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "昵称自动补全" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "自动补全昵称(不使用 TAB 键)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "昵称自动补全后缀:" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "昵称排序:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "输入框编码" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "把 %nnn 解释为 ASCII 值" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "转换 %C、%B 为颜色、粗体等" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z,管理员在最先" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A,管理员在最后" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "不排序" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "左上" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "左下" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "右上" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "右下" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "顶部" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "底部" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "隐藏" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "用户列表" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "在用户列表中显示主机名" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "用户列表排列方式:" + +#: src/fe-gtk/setup.c:205 +msgid "Show user list at:" +msgstr "显示用户列表于:" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "记录离开信息" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "追踪用户的离开状态并且以不同颜色标记" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "在小于此值的频道里:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "双击时的动作" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "窗口" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "标签页" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "总是" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "只有请求的标签页" + +#: src/fe-gtk/setup.c:242 +msgid "Tree" +msgstr "树状图" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "转换器类型:" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "打开额外的标签页存放服务器信息" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "打开额外的标签页显示服务器通知" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "当您收到私聊消息时打开新的标签页" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "按字母表顺序排序标签页" + +#: src/fe-gtk/setup.c:254 +msgid "Smaller text" +msgstr "小字" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "聚焦到新标签页:" + +#: src/fe-gtk/setup.c:258 +msgid "Show channel switcher at:" +msgstr "显示频道转换器于:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "缩短标签页标签页至:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "个字母。" + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "标签页或窗口" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "打开频道于:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "打开对话框于:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "打开工具于:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "打开 DCC、忽略、通知等动作时使用标签页还是窗口?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "否" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "是" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "每次都浏览保存目录" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "文件和目录" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "自动接受文件传输:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "把文件下载到:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "移动完成下载的文件到:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "把昵称存入文件名" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "网络设置" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "从 IRC 服务器获取我的地址" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"向 IRC 服务器查询您的真实地址。如果您有 192.168.*.* 这样的地址时,请使用此命" +"令。" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "DCC IP 地址:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "发送文件时声称您是这个地址。" + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "第一个 DCC 文件发送端口:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "最后一个 DCC 文件传送端口:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "! 端口保留为 0 表示允许所有范围" + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "最大文件传输速度(字节每秒)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "每个上传任务:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "一个传送进程的最大速度" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "每个下载任务:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "所有上传:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "所有文件的最大速度" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "所有下载" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "提示" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "显示托盘气泡提示于:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "闪烁托盘图标于:" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "闪烁任务栏图标于:" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "响铃于:" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "激活系统托盘图标" + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "高亮显示消息" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "高亮消息是当您的昵称被提到时所显示的消息,同时还包括:" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "需要高亮显示的其他单词:" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "不高亮显示的昵称:" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "总是高亮显示的昵称:" + +#: src/fe-gtk/setup.c:347 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" +"请用逗号分隔多个词组。\n" +"可以使用通配符。" + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "默认信息" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "退出:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "离开频道:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "离开:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "离开" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "发布离开信息" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "发布离开信息到所有频道" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "只显示离开一次" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "同样的离开信息只显示一次" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "自动取消离开状态" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "发送信息前取消您的离开状态" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "高级设置" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "自动重连间隔:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "使用原始格式显示模式" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "通知列表 Whois" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "当您通知列表中的某位用户上线时发送 /WHOIS 命令" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "隐藏进入/离开信息" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "默认隐藏频道里的进入/离开信息" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "自动打开 DDC 窗口" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "发送窗口" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "接收窗口" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "聊天窗口" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "聊天记录" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "显示上一会话时的信息会滚" + +#: src/fe-gtk/setup.c:387 +msgid "Enable logging of conversations to disk" +msgstr "允许记录对话内容到磁盘" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "聊天记录文件名称:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=服务器 %c=频道 %n=网络。" + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "在聊天记录中进入时间戳" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "聊天记录时间戳格式:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(已禁用)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "所有连接" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "仅 IRC 服务器" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "仅 DCC Get" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "您的地址" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "绑定到:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "只对有多个地址的计算机有用。" + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "代理服务器" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "主机名:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "端口:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "类型:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "应用代理于:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "代理服务器验证" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "使用验证(仅支持 HTTP,Socks5 或 MS Proxy 代理服务器)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "使用验证(仅支持 HTTP 或 Socks5 代理服务器)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "用户名:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "密码:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "选择一个图像文件" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "选择下载目录" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "选择字体" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "浏览..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "标记验证过的用户为:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "标记未验证过的用户为:" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "打开数据目录" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "选择颜色" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "文本颜色" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "mIRC 颜色:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "本地颜色:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "前景:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "背景:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "标记文本" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "界面颜色" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "新数据:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "标记线:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "新信息:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "离开的用户:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "高亮显示:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "事件" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "声音文件" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "选择声音文件" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "声音播放方式:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "外部声音播放程序(_P):" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "外部程序(_E)" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "自动(_A)" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "声音文件目录(_D):" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "声音文件:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "浏览(_B)..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "播放(_P)" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "界面" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "文本框" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "用户列表" + +#: src/fe-gtk/setup.c:1703 +msgid "Channel switcher" +msgstr "频道转换器" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "颜色" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "聊天" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "一般" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "声音" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "网络设置" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "文件传输" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "类别" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" +"您不能把树状图放置于顶部或底部!\n" +"请在 <b>视图</b> 菜单中的 <b>标签页</b> 样式中进行调整。" + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "有些设置需要重新启动 xchat 才会生效。" + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*警告*\n" +"自动接收 DCC 到您的主目录中是危险之举,\n" +"且有被盗用的可能性。例如:\n" +"某人可能会给您发送一份 .bash_profile 文件" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat:首选项" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "解析字符串时出错" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "该信号只接受 %d 个参数,$%d 无效" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "打印文本文件" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "编辑事件" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ 数字" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "从...载入" + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "测试全部" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat:URL 抓取程序" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "清空列表" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "复制选取的 URL" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "复制" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "保存列表到文件" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d 位管理员,共 %d 人" + +#~ msgid "About XChat" +#~ msgstr "关于 XChat" + +#, fuzzy +#~ msgid "Set _back" +#~ msgstr "向后搜索" + +#~ msgid "C_hannels to join:" +#~ msgstr "输入要进入的频道(_H):" + +#, fuzzy +#~ msgid "Execute command" +#~ msgstr "执行命令:" + +#~ msgid "Direct client-to-client" +#~ msgstr "直接客户端到客户端" + +#~ msgid "Send File" +#~ msgstr "发送文件" + +#~ msgid "Offer Chat" +#~ msgstr "请求聊天" + +#~ msgid "Abort Chat" +#~ msgstr "中止聊天" + +#~ msgid "Userinfo" +#~ msgstr "个人信息" + +#~ msgid "Clientinfo" +#~ msgstr "客户端信息" + +#~ msgid "Time" +#~ msgstr "时间" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "操作" + +#~ msgid "Kill this user" +#~ msgstr "杀死此用户" + +#~ msgid "Mode" +#~ msgstr "模式" + +#~ msgid "Give Half-Ops" +#~ msgstr "赋予副管理员权限" + +#~ msgid "Take Half-Ops" +#~ msgstr "取消副管理员权限" + +#~ msgid "Ignore" +#~ msgstr "忽略" + +#~ msgid "Ignore User" +#~ msgstr "忽略用户" + +#~ msgid "UnIgnore User" +#~ msgstr "取消忽略用户" + +#~ msgid "Info" +#~ msgstr "信息" + +#~ msgid "Who" +#~ msgstr "Who" + +#~ msgid "DNS Lookup" +#~ msgstr "DNS 查询" + +#~ msgid "Trace" +#~ msgstr "Trace" + +#~ msgid "UserHost" +#~ msgstr "用户主机" + +#~ msgid "External" +#~ msgstr "外部程序" + +#~ msgid "Traceroute" +#~ msgstr "Traceroute" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "Blink tray on message" +#~ msgstr "有信息时闪动提示" + +#~ msgid "Show join/part messages" +#~ msgstr "显示进入/离开信息" + +#~ msgid "Color paste" +#~ msgstr "彩色粘贴" + +#~ msgid "_Close Tab" +#~ msgstr "关闭标签页(_C)" + +#~ msgid "Channel List..." +#~ msgstr "频道列表..." + +#~ msgid "Notify List..." +#~ msgstr "通知列表..." + +#~ msgid "_Close Window" +#~ msgstr "关闭窗口(_C)" + +#~ msgid "User" +#~ msgstr "用户" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: 通知列表" + +#~ msgid "\"Command to execute\"" +#~ msgstr "\"要执行的命令\"" + +#~ msgid "\"Text to print\"" +#~ msgstr "\"要印出的文本\"" + +#~ msgid "$1$t$2" +#~ msgstr "$1$t$2" + +#~ msgid "%C16*%O$t$1%O" +#~ msgstr "%C16*%O$t$1%O" + +#~ msgid "%C18*$t$1%O $2" +#~ msgstr "%C18*$t$1%O $2" + +#~ msgid "%C19>%O$1%C19<%O$t$2" +#~ msgstr "%C19>%O$1%C19<%O$t$2" + +#~ msgid "%C21*%O$t%C21%B$1%O%C21 $2" +#~ msgstr "%C21*%O$t%C21%B$1%O%C21 $2" + +#~ msgid "%C22*%O$t$1" +#~ msgstr "%C22*%O$t$1" + +#~ msgid "%C28*%C29$3$1%C28*$t%O$2" +#~ msgstr "%C28*%C29$3$1%C28*$t%O$2" + +#~ msgid "%C28-%C29$1%C28-%O$t$2" +#~ msgstr "%C28-%C29$1%C28-%O$t$2" + +#~ msgid "%C28-%C29$1/$2%C28-%O$t$3" +#~ msgstr "%C28-%C29$1/$2%C28-%O$t$3" + +#~ msgid "%s doesn't exist\n" +#~ msgstr "%s 不存在\n" + +#~ msgid "(Can be a text file relative to config dir)." +#~ msgstr "(可以是一个相对路径为配置目录的文本文件)。" + +#~ msgid "(Can be a text file relative to ~/.xchat2/)." +#~ msgstr "(可以是一个相对路径为 ~/.xchat2/ 的文本文件)。" + +#~ msgid "(See strftime manpage for details)." +#~ msgstr "(查看 strftime 手册以获取详细信息)。" + +#~ msgid "Ack" +#~ msgstr "确认" + +#~ msgid "Add" +#~ msgstr "添加" + +#~ msgid "Apply" +#~ msgstr "套用" + +#~ msgid "Apply Match to:" +#~ msgstr "套用符合到:" + +#~ msgid "Automatic nick completion" +#~ msgstr "自动补齐昵称" + +#~ msgid "Beep on channel messages" +#~ msgstr "频道中出现新信息时响铃" + +#~ msgid "Beep on highlighted messages" +#~ msgstr "高亮度显示信息时响铃提示" + +#~ msgid "Beep on private messages" +#~ msgstr "有悄悄话时响铃提示" + +#~ msgid "Change the context to the channel" +#~ msgstr "变更上下文至频道" + +#~ msgid "Change the context to the server" +#~ msgstr "变更上下文至服务器" + +#~ msgid "Completes nick names without using the TAB key" +#~ msgstr "不用 TAB 键而自动补齐昵称" + +#~ msgid "Convert spaces to underscore before sending" +#~ msgstr "发送前把空格转换成底线" + +#~ msgid "Execute a xchat command" +#~ msgstr "执行 xchat 命令:" + +#~ msgid "Extra colors:" +#~ msgstr "额外的颜色:" + +#~ msgid "Extra words to highlight on:" +#~ msgstr "需要高亮度显示的其它词组:" + +#~ msgid "Failed to complete GetInfo" +#~ msgstr "完成撷取信息失败" + +#~ msgid "Failed to complete GetPrefs" +#~ msgstr "完成撷取偏好失败" + +#~ msgid "Failed to complete SetContext" +#~ msgstr "完成设置上下文失败" + +#~ msgid "Failed to complete print" +#~ msgstr "完成打印失败" + +#~ msgid "Flash taskbar on highlighted messages" +#~ msgstr "高亮度显示信息时闪动工作列" + +#~ msgid "France, Metropolitan" +#~ msgstr "法属美特罗波利坦" + +#~ msgid "From:" +#~ msgstr "从:" + +#~ msgid "Get settings from xchat" +#~ msgstr "从 xchat 撷取设置" + +#~ msgid "Get some informations from xchat" +#~ msgstr "从 xchat 撷取一些信息" + +#~ msgid "Go to" +#~ msgstr "前往" + +#~ msgid "I can't save an empty list!" +#~ msgstr "无法保存空列表!" + +#~ msgid "Input Box Appearance" +#~ msgstr "输入框外观" + +#~ msgid "Left" +#~ msgstr "左侧" + +#~ msgid "List display options:" +#~ msgstr "列举显示选项:" + +#~ msgid "MIME Type" +#~ msgstr "MIME 类型" + +#~ msgid "Maximum Users:" +#~ msgstr "最多用户数:" + +#~ msgid "Minimum Users:" +#~ msgstr "最少用户数:" + +#~ msgid "Neutral Zone" +#~ msgstr "中立地区" + +#~ msgid "Nicks not to highlight on:" +#~ msgstr "不要高亮度显示的昵称:" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "没有其它打开的标签页,要离开 xchat 吗?" + +#~ msgid "None" +#~ msgstr "无" + +#~ msgid "Open" +#~ msgstr "打开" + +#~ msgid "Open an irc:// url" +#~ msgstr "打开一个 irc:// URL" + +#~ msgid "PID" +#~ msgstr "进程代号" + +#~ msgid "Preferences..." +#~ msgstr "首选项..." + +#~ msgid "Prints some text to the current tab/window" +#~ msgstr "印出一些文本到当前的标签页/窗口" + +#~ msgid "Refresh the list" +#~ msgstr "刷新列表" + +#~ msgid "Regex Match:" +#~ msgstr "Regex 符合:" + +#~ msgid "Resizable user list" +#~ msgstr "用户列表可调整大小" + +#~ msgid "Right" +#~ msgstr "右侧" + +#~ msgid "Save rawlog" +#~ msgstr "保存原始聊天记录" + +#~ msgid "Save rawlog..." +#~ msgstr "保存原始聊天记录..." + +#~ msgid "Save the list" +#~ msgstr "保存列表" + +#~ msgid "Server" +#~ msgstr "服务器" + +#~ msgid "Settings saved." +#~ msgstr "设置已保存。" + +#~ msgid "Show tabs at:" +#~ msgstr "显示标签页于:" + +#~ msgid "Size:" +#~ msgstr "大小:" + +#~ msgid "Speed limit:" +#~ msgstr "速度限制:" + +#~ msgid "StartTime" +#~ msgstr "开始时间" + +#~ msgid "Started:" +#~ msgstr "开始时间:" + +#~ msgid "Tabs Location" +#~ msgstr "标签页位置" + +#~ msgid "To" +#~ msgstr "到" + +#~ msgid "To/From" +#~ msgstr "到/从" + +#~ msgid "To:" +#~ msgstr "到:" + +#~ msgid "US Minor Outlying Islands" +#~ msgstr "美国周边岛屿" + +#~ msgid "Unban" +#~ msgstr "解禁" + +#~ msgid "User and Channel Statistics: %d/%d Users on %d/%d Channels" +#~ msgstr "用户及频道统计:%d/%d 名用户在 %d/%d 个频道中" + +#~ msgid "_Layout" +#~ msgstr "布局(_L)" + +#~ msgid "id" +#~ msgstr "id" + +#~ msgid "irc://server:port/channel" +#~ msgstr "irc://server:port/channel" + +#~ msgid "name" +#~ msgstr "名称" + +#~ msgid "server" +#~ msgstr "服务器" + +#~ msgid "" +#~ "xchat-remote: %s\n" +#~ "Try `xchat-remote --help' for more information\n" +#~ msgstr "" +#~ "xchat-remote: %s\n" +#~ "试试 `xchat-remote --help' 以获得更多信息\n" + +#~ msgid "Flash taskbar on private messages" +#~ msgstr "接收到私聊消息时闪动工作列" + +#~ msgid "File Offer" +#~ msgstr "文件传输" + +#~ msgid "Quit..." +#~ msgstr "退出..." diff --git a/etc/wyatt8740/po/zh_TW.po b/etc/wyatt8740/po/zh_TW.po new file mode 100644 index 0000000..c0fad6a --- /dev/null +++ b/etc/wyatt8740/po/zh_TW.po @@ -0,0 +1,5826 @@ +# Traditional Chinese Messages for the xchat +# Copyright (C) 2000, 01, 02, 03, 04, 05, 06 Free Software Foundation, Inc. +# Kevin Peng <kevpeng@ihug.co.nz>, 2000 +# Anthony Fok <foka@debian.org>, 2001 +# Zong Yaotang <zong@cosix.com.au>, 2002 +# Dalin <ayi880@hotmail.com>, 2003 +# Walte <webmaster@www.linuxfans.org>, 2003 +# Sarah Smith <sarahs@redhat.com>, 2003 +# Rongjun Mu <elanmu@sina.com>, 2003 +# Rongjun Mu <rongjunmu+i18n@gmail.com>, 2004 +# Wei-Lun Chao <chaoweilun@pcmail.com.tw>, 2005, 06 +# +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.6.3\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2006-06-01 15:10+0800\n" +"Last-Translator: Wei-Lun Chao <chaoweilun@pcmail.com.tw>\n" +"Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "無法建立~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "我很忙" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "暫離" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* 最好不要以 root 身分執行 IRC!您應該\n" +" 建立一般使用者帳號來登入。\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "等待" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "活躍" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "失敗" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "完成" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "連接" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "中止" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "無法存取 %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "錯誤" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s 正在提供 \"%s\"。您要接收碼?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "沒有活躍的 DCC\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "是 " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "否 " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "您正受到來自 %s 的 CTCP flood 攻擊,忽略 %s\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "您正受到來自 %s 的 MSG flood 攻擊,設定圖形化自動對話框為關閉。\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s 在線\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s 離線\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "沒有加入任何聊天室。請嘗試 /join #<channel>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "還未連接伺服器。請嘗試 /server <host> [<port>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "使用 /bin/sh 才能執行本程式!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "可用命令:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "使用者自訂命令:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "使用者自訂命令:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "請鍵入 /HELP <command> 或者 /HELP -l 以獲取更多資訊" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "忽略未知引數「%s」。" + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "找不到該外掛程式。\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "無法卸載該外掛程式。\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <name> <action>,在使用者清單下添加一個按鈕" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <cmd>,向您所在的所有聊天室發送命令" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHANL <cmd>,向您所在的所有聊天室發送命令" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <cmd>,向您所在的所有伺服器發送命令" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<reason>],設定您為暫離狀態" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <mask> [<bantype>],禁止所有符合 mask 的使用者進入目前的聊天室。如果他們" +"已在該聊天室,這個命令不會把他們踢出去(需要有 chanop 身分)" + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "SET [-quiet] <variable> [<value>]" + +#: src/common/outbound.c:3508 +#, fuzzy +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "CLEAR,清空目前文字視窗" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE,關閉目前視窗/分頁" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" +"COUNTRY [-s] <code|wildcard>,查看國家代碼對應的國家名,比如:tw = 臺灣" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <nick> <message>,給暱稱為 <nick> 者發送 CTCP 訊息,常用訊息是 VERSION " +"和 USERINFO" + +#: src/common/outbound.c:3516 +#, fuzzy +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "CYCLE,離開目前聊天室並立即重新加入" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <nick> - 接收暱稱為 <nick> 者發送給您的檔案\n" +"DCC SEND [-maxcps=#] <nick> [file] - 發送檔案給某人\n" +"DCC PSEND [-maxcps=#] <nick> [file] - 使用被動模式發送檔案給某人\n" +"DCC LIST - 顯示 DCC 清單\n" +"DCC CHAT <nick> - 與某人密談\n" +"DCC PCHAT <nick> - 使用被動模式與某人密談\n" +"DCC CLOSE <type> <nick> <file> 例如:\n" +" /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <nick>,取消目前聊天室內暱稱為 <nick> 者的 chanhalf-op 身分(需要有 " +"chanop 身分)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <name>,刪除使用者清單下的一個按鈕" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <nick>,取消暱稱為 <nick> 者在本聊天室的 chanop 身分(需要有 chanop 身分)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <nick>,取消暱稱為 <nick> 者在本聊天室的發言權(需要有 chanop 身分)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON,切斷和伺服器的連接" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <nick|host|ip>, 查詢某位使用者的 IP 位址" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <text>,只在本地顯示文字" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <command>,執行命令。如果使用了 -o 選項則輸出到目前聊天室,否則輸出" +"到目前文字框" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT,向行程發送 SIGCONT 信號" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9],砍掉目前會話中的某執行行程。如果使用 -9 選項,則用 SIGKILL 砍" +"掉該行程" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP,向行程發送 SIGSTOP 信號" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE,把資料發送給行程的標準輸入" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ,排空目前伺服器的發送佇列" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <host> [<port>],經由某主機來代理,預設輸出入埠為 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <nick> <password>,砍掉已無息消失的暱稱" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <nick>,給暱稱為 <nick> 者以 chanhalf-op 身分 (需要有 chanop 身分)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <password>,向暱稱伺服器表明您自己的身分" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <mask> <types..> <options..>\n" +" mask - 欲忽略的主機遮罩,比如 *!*@*.aol.com\n" +" types - 欲忽略資料的類型,以下選項之一或全部:\n" +" PRIV,CHAN,NOTI,CTCP,INVI,ALL\n" +" options - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <nick> [<channel>],邀請暱稱為 <nick> 者加入聊天室,預設為目前聊天室" +"(需要有 chanop 身分)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <channel>,加入聊天室" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "KICK <nick>,把暱稱為 <nick> 者踢出目前聊天室(需要有 chanop 身分)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <nick>,把暱稱為 <nick> 者踢出目前聊天室,並禁止他再進入(需要有 " +"chanop 身分)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK,強制進行新的延遲檢查" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <string>,在緩衝區中搜索字串" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <file>,載入外掛程式或命令稿" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP,取消目前聊天室中所有 chanhalf-op 的權限 (需要有 chanop 身分)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP,取消目前聊天室中所有 chanop 的權限 (需要有 chanop 身分)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <action>,向目前聊天室中發送一個動作 (動作使用第三人稱陳述,例如 /me " +"jumps)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK,踢出目前聊天室中除您自己之外的所有使用者 (需要有 chanop 身分)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP,給本聊天室中所有使用者 chanop 身分(需要有 chanop 身分)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <nick> <message>,給暱稱為 <nick> 者發送一則悄悄話" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES,列出目前聊天室的所有使用者暱稱" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <nick> <message>,給暱稱為 <nick> 者發送一則 CTCP 通知" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <hostname> [<port>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <nickname>,設定您的暱稱" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <nick/channel> <message>,發送一則通知。通知是一種能被自動回應的訊息" + +#: src/common/outbound.c:3614 +#, fuzzy +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [<nick>],列出您的通知清單,或在清單中添加某人" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <nick>,給予暱稱為 <nick> 者 chanop 身分 (需要有 chanop 身分)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<channel>] [<reason>],離開聊天室,預設為目前的聊天室" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <nick | channel>,CTCP ping 某位使用者或聊天室" + +#: src/common/outbound.c:3622 +#, fuzzy +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "QUERY <nick>,跟某人打開一個悄悄話視窗" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<reason>],切斷與目前伺服器的連接" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <text>,向伺服器發送原始格式的文字" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>],可用 /RECONNECT 重新連接目前" +"伺服器或用 /RECONNECT ALL 重新連接所有伺服器" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<host>] [<port>] [<password>],可用 /RECONNECT 重新連接目前伺服器" +"或用 /RECONNECT ALL 重新連接所有伺服器" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <text>,向 xchat 發送原始資料,就好像它是從 irc 伺服器上接收到的一樣" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <text>,向目前視窗中的對象發送文字" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <nick> [<file>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <host> <port> <channel>,連接伺服器並加入某聊天室" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <host> <port> <channel>,連接伺服器並加入某聊天室" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <host> [<port>] [<password>],連接伺服器。普通連線預設輸出入埠" +"為 6667,SSL 加密連線預設輸出入埠為 9999" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <host> [<port>] [<password>],連接伺服器。預設輸出入埠為 6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-quiet] <variable> [<value>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<position>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "TOPIC [<topic>],設定話題為指定話題,如果未指定則顯示目前話題" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <mask> [<mask>...],解禁指定的遮罩。" + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <mask> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <name>,卸載外掛程式或命令稿" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>,在您的瀏覽器中開啟 <url>" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <nick1> <nick2>...,在聊天室使用者清單中以高亮度標示暱稱" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <nick>,給予暱稱為 <nick> 者發言權(需要有 chanop 身分)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <message>,發送訊息到所有的聊天室" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <message>,給目前聊天室中所有 chanop 發送訊息" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "用法:%s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"沒有關於該命令的求助資訊。\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "無此命令。\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "使用者命令的引數不對。\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "太多遞迴的使用者命令,中止。" + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "未知命令。請嘗試 /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "無 xchat_plugin_init 符號;這確實是 xchat 的外掛程式嗎?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "您確信此伺服器和輸出入埠支援‧SSL ?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"無法解析主機名 %s\n" +"請檢查您的 IP 設定!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "代理傳送失敗。\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "輪跳至 %s 的下一個伺服器中...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "警告:未知的字元設定「%s」。對網路 %s 將不應用字元轉換。" + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 已增加到通知清單。" + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 封禁清單:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$t不能加入%C26 %B$1 %O(您被封禁了)。" + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 改名為 $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 封禁了 $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$t 聊天室 $1 建立於 $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O 取消了 %C26 $2 的聊天室准管理員權限" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O 取消了 %C26 $2 的聊天室管理員權限" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O 取消了 %C26 $2 的發言權" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 給 $2 設定了免封權" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O 委任 %C26 $2 為聊天室准管理員" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 給 $2 設定了邀請權" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%U 聊天室 使用者 話題" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 設定 $2$3 $4 模式" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22聊天室 $1 模式:$2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O 委任 %C26$2 為聊天室管理員" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 取消了 $2 的免封權" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 取消了 $2 的邀請權" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 取消了聊天室密碼" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 取消了使用者限額" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 設定聊天室密碼為 $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 設定聊天室限額為 $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 解除了對 $2 的封禁" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O 給了 %C26$2 發言權" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "已連接到 %C22*%O$t%C22。正在登入..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22 正在連接到 $1 ($2) 輸出入埠 $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21連線失敗。錯誤:$1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$t收到來自 $2 的CTCP $1" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$t從 $2 處接收到一個(到 $3 的)CTCP $1" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$t收到來自 $2 的 CTCP 聲音 $1" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$t從 $2 處接收到一個(到 $3 的)CTCP 聲音 $1" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$t和 %C26$1%O 的密談中止。" + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$t和 %C26$1 %C30[%O$2%C30] 開始密談了" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$$t和 %C26$1%O 的密談丟失($4)。" + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$t收到來自 $1 的密談請求" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$t向 $1 發送密談請求" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$t對 $1 已發送密談請求" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$t到 %C26$2%O 的 DCC $1 連接失敗 (err=$3)。" + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$t收到來自 $2 的「$1%O」" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 類型 到/來自 狀態 大小 位置 檔案 " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O.%010%C22*%O" +"$tContents of packet: $2" +msgstr "" +"%C22*%O$t收到來自 %C26$1%O 的有錯的 DCC 請求。%010%C22*%O$t資料包內容:$2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$t提供 %C26$1%O給 %C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$t無此 DCC 請求。" + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$t到 %C26$1%O 的 DCC RECV %C26 $2%O 中止。" + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$t從 %C26$3%O DCC RECV %C26$1%O 已完成 %C30[%C26$4%O cps%C30]%O。" + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$t建立和 %C26$1 %C30[%O$2%C30] 的 DCC RECV 連線" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$t從 %C26$3%O DCC RECV %C26$1%O 失敗($4)。" + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV:不能打開 $1 進行寫入操作($2)。 " + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "%C22*%O$t檔案 %C11$1%C 已存在,請另存為 %C26$2%O。" + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %O請求續傳來自 %C26$3%C 的 %C26$2 %C 。" + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$t到 %C26$1%O 的 DCC SEND %C26$2%O 中止。" + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$t到 %C26$2%O 的 DCC SEND %C26$1%O 已完成 %C30[%C26$3%O cps%C30]%O。" + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$t建立和 %C26 $1 %C30[%O$2%C30] 的 DCC SEND 連線" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$t到 %C26$2%O 的 DCC SEND %C26$1%O 失敗。$3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %O已發送%C26 $2 %O(%C26$3 %O位元組)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %O到 %C26$3 %C 沒有響應 - 中止。" + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %O到%C26 $3 %O已超時 - 中止。" + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1已從通知清單中刪除。" + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$t已切斷連接 ($1)。" + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$t找到您的 IP:[$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O 添加到忽略清單。" + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "對 %C26$1%O 的忽略已改變。" + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 主機遮罩 PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O 已從忽略清單中刪除。" + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " 您的忽略清單還是空的。" + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "%C22*%O$t無法加入%C26 %B$1 %O(該聊天室只有被邀請才能加入)。" + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$t%C26 $2%C (%C26$3%C)邀請您加入%C26 $1%O" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) 加入了 $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$t無法加入%C26 %B$1 %O(需要密碼)。" + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 把 $2 踢出了 $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$t您被 $1 踢出了聊天室 ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD 被跳過。" + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 已被佔用。正在使用 $2 重試..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "%C22*z%O$t該暱稱已被佔用。請用 /NICK 嘗試使用另一個暱稱。" + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$t沒有此 DCC。" + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$t目前沒有任何行程在執行" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$t上線通知清單是空的。" + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B 通知清單 " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1通知清單中有 $1 名使用者。" + +#: src/common/textevents.h:282 +#, fuzzy +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$t通知:$1 離線了 ($2)。" + +#: src/common/textevents.h:285 +#, fuzzy +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$t通知:$1 上線了 ($2)。" + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) 離開了 $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) 離開了 $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tPing 回應從 $1 處返回:$2 秒" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$t在 %1 秒內沒有收到 ping 回應,正在切斷連接。" + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$t一個行程已在執行" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 已結束 (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 設定模式%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$t查尋 %C26 $1%O 的 IP 位址..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22已連接。" + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22正在查詢 $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$t前次連線嘗試停止 (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29$1%C %C29的話題是:$2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 已將話題改變為: $2%O" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29$1%C %C29的話題由 $2%C %C29於 $3 設定" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$t未知主機。也許您把它拼寫錯了?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "%C22*%O$t無法加入%C26 %B$1 %O(達到了使用者限額)。" + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26 $1 中的使用者:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %C 暫時離開了 %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %O WHOIS 清單結束。" + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O 發呆%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O 發呆%C26 $2%O, 登入時間:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O 真實使用者@主機%C27 $2%O, 真實IP%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19您現在在 $2 裡聊天" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$t您被 $3 從 $2 中踢出 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$t您已離開聊天室 $3" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$t您已離開聊天室 $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$t您已邀請%C26 $1%O 加入%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$t您已改名為$2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** %s 結束日誌紀錄\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** %s 開始日誌記錄\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"不能打開日誌檔案進行寫入操作。請檢查\n" +"%s/xchatlogs 的權限設定" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "左邊的訊息" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "右邊的訊息" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "加入的使用者" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "加入的聊天室" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "此人的主機" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "暱稱" + +#: src/common/text.c:973 +msgid "The action" +msgstr "動作" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "聊天模式" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "驗證文字" + +#: src/common/text.c:980 +msgid "The text" +msgstr "文字" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "訊息" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "原暱稱" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "新暱稱" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "更改話題的使用者" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "話題" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "聊天室" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "能踢人的使用者" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "被踢者" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "聊天室" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "原因" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "離開的使用者" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "時間" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "建立者" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "暱稱" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "原因" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "主機" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "來自者" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "時間格式為 x.x (見下)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "要加入的聊天室" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "音效" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "此人的暱稱" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "CTCP 事件" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "設定密鑰的使用者" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "密鑰" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "設定限額的使用者" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "限額" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "使用了 op 命令的使用者" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "被授予 op 身分的使用者" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "被授予 halfop 身分的使用者" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "使用 halfop 命令的使用者" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "使用 voice 命令的使用者" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "被賦予發言權的使用者" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "使用 ban 命令的使用者" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "ban 命令的遮罩" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "取消密鑰的使用者" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "取消使用者限額的使用者" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "使用 deop 命令的使用者" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "被取消 op 身分的使用者" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "使用 dehalfop 命令的使用者" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "被取消 halfop 身分的使用者" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "使用 devoice 命令的使用者" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "被取消發言權的使用者" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "使用 unban 命令的使用者" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "使用 exempt 命令的使用者" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "exempt 遮罩" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "取消 exempt 的使用者" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "使用 invite 命令的使用者" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "invite 遮罩" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "取消 invite 的使用者" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "設定模式的使用者" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "模式的符號(+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "模式字母" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "被設定的聊天室" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "使用者名" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "全名" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "聊天室成員/「是 IRC 管理員」" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "伺服器資訊" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "發呆時間" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "登入時間" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "離開原因" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "訊息" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "帳戶" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "真實使用者@主機" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "真實 IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "聊天室名" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "文字" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "伺服器名" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "邀請您的使用者" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "使用者" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "暱稱已被使用" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "已試用過的暱稱" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP 位址" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "輸出入埠" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "網路" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "模式字串" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "IP 位址" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "DCC 類型" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "檔案名" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "目標檔案名" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "路徑名" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "位置" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "大小" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "DCC 字串" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "通知條目數" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "舊檔案名" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "新檔案名" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "接收者" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "主機遮罩" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "主機名" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "包" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "秒" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "被邀請的使用者" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "ban 的遮罩" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "設定禁令的使用者" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "封禁時間" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"解析事件 %s 時出錯。\n" +"載入預設值。" + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"無法讀取聲音檔案:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "遠端主機已關閉 socket" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "連線被拒絕" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "沒有到主機的路由" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "連線超時" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "無法分配該位址" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "連線被對方重設" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "亞森松島" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "安道爾" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "阿拉伯聯合大公國" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "阿富汗" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "安地卡及巴布達" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "安圭拉島" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "阿爾巴尼亞" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "亞美尼亞" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "荷屬安地列斯" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "安哥拉" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "南極洲" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "阿根廷" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "反向 DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "美屬薩摩亞" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "奧地利" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "北大西洋公約組織" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "澳大利亞" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "阿盧巴島" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "奧蘭群島" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "亞塞拜然" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "波士尼亞及赫塞哥維那" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "巴貝多" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "孟加拉" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "比利時" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "布吉納法索" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "保加利亞" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "巴林" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "浦隆地" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "商業" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "貝南" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "百慕達群島" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "汶萊" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "玻利維亞" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "巴西" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "巴哈馬群島" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "不丹" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "波維特島" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "波札那" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "白俄" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "貝里斯" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "加拿大" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "可可斯群島" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "剛果民主共和國" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "中非共和國" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "剛果" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "瑞士" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "象牙海岸" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "科克群島" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "智利" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "喀麥隆" + +#: src/common/util.c:898 +msgid "China" +msgstr "中國" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "哥倫比亞" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Internic 商業組織" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "哥斯大黎加" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "塞爾維亞及蒙特尼哥羅" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "古巴" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "維德角島" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "聖誕島" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "賽普勒斯" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "捷克共和國" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "德國" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "吉布地" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "丹麥" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "多明尼克" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "多明尼加共和國" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "阿爾及利亞" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "厄瓜多" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "教育機構" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "愛沙尼亞" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "埃及" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "西撒哈拉" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "埃立特里亞" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "西班牙" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "衣索比亞" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "歐盟" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "芬蘭" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "斐濟" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "福克蘭群島" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "密克羅尼西亞" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "法羅群島" + +#: src/common/util.c:928 +msgid "France" +msgstr "法國" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "加彭" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "大不列顛" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "格瑞納達" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "喬治亞" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "法屬圭亞那" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "不列顛海峽群島" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "迦納" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "直布羅陀" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "格陵蘭" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "甘比亞" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "幾內亞" + +#: src/common/util.c:940 +msgid "Government" +msgstr "政府部門" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "瓜德魯普島" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "赤道幾內亞" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "希臘" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "南喬治亞及南桑威奇群島" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "瓜地馬拉" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "關島" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "幾內亞比索" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "蓋亞那" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "香港" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "赫德及麥當勞群島" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "宏都拉斯" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "克羅埃西亞" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "海地" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "匈牙利" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "印尼" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "愛爾蘭" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "以色列" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "曼島" + +#: src/common/util.c:959 +msgid "India" +msgstr "印度" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "資訊的" + +#: src/common/util.c:961 +msgid "International" +msgstr "國際的" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "英屬印度洋地區" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "伊拉克" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "伊朗" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "冰島" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "意大利" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "澤西" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "牙買加" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "約旦" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "日本" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "肯亞" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "吉爾吉斯" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "柬埔寨" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "吉里巴斯" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "葛摩" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "聖克里斯多福" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "北韓" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "南韓" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "科威特" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "開曼群島" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "哈薩克" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "寮國" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "黎巴嫩" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "聖露西亞" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "列支敦斯登" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "斯里蘭卡" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "賴比瑞亞" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "賴索托" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "立陶宛" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "盧森堡" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "拉脫維亞" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "利比亞" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "摩洛哥" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "摩納哥" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "摩爾多瓦" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "美國醫療組織" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "馬達加斯加" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "馬紹爾群島" + +#: src/common/util.c:999 +msgid "Military" +msgstr "軍事" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "馬其頓" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "馬利" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "緬甸" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "蒙古" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "澳門" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "北馬里亞納群島" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "法屬馬丁尼克" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "茅利塔尼亞" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "蒙瑟拉特島" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "馬爾他" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "模里西斯" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "馬爾地夫" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "馬拉威" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "墨西哥" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "馬來西亞" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "莫三比克" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "納米比亞" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "新喀里多尼亞島" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "尼日" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Internic 網路" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "諾福克島" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "奈及利亞" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "尼加拉瓜" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "荷蘭" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "挪威" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "尼泊爾" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "諾魯" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "紐威島" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "紐西蘭" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "阿曼" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Internic 非營利性組織" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "巴拿馬" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "秘魯" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "法屬波里尼西亞" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "巴布亞紐幾內亞" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "菲律賓" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "巴基斯坦" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "波蘭" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "聖匹及密啟倫群島" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "皮特康島" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "波多黎各" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "巴勒斯坦地區" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "葡萄牙" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "帛琉群島" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "巴拉圭" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "卡達" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "留尼旺" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "羅馬尼亞" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "教育 ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "俄羅斯聯邦" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "盧安達" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "沙烏地阿拉伯" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "所羅門群島" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "塞席爾群島" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "蘇丹" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "瑞典" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "新加坡" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "聖赫勒拿島" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "斯洛凡尼亞" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "冷岸及央麥恩群島" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "斯洛伐克共和國" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "獅子山" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "聖馬利諾" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "塞內加爾" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "索馬利亞" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "蘇利南" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "聖多美和普林西比" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "前蘇聯" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "薩爾瓦多" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "敘利亞" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "史瓦濟蘭" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "土克斯及開科斯群島" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "查德" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "法屬南部地區" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "多哥" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "泰國" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "塔吉克" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "托克勞群島" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "東帝汶" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "土庫曼" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "突尼西亞" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "東加" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "土耳其" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "千里達托貝哥" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "吐瓦魯" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "臺灣" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "坦尚尼亞" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "烏克蘭" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "烏干達" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "英國" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "美國" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "烏拉圭" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "烏茲別克" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "梵蒂岡" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "聖文森及格瑞那丁" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "委內瑞拉" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "英屬維京群島" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "美屬維京群島" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "越南" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "萬那杜" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "瓦里斯及富都拿群島" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "薩摩亞" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "葉門" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "馬爾他群島" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "南斯拉夫" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "南非" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "尚比亞" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "辛巴威" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "未知" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "打開對話視窗" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "發送檔案" + +#: src/common/xchat.c:728 +#, fuzzy +msgid "_User Info (WhoIs)" +msgstr "使用者資訊 (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +#, fuzzy +msgid "O_perator Actions" +msgstr "管理員動作" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "給 Op 權限" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "取消 Op 權限" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "給發言權" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "取消發言權" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "踢出/封禁" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "踢出" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "封禁" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "踢出並封禁" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "離開聊天室" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "加入聊天室..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "輸入要加入的聊天室:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "伺服器清單" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "ping 伺服器" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "隱藏版本資訊" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "給管理員權限" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "取消管理員權限" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "道別" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "輸入踢出 %s 的原因:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "發送檔案" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "對話" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "發送" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "聊天" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "清除" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "無法連接到執行階段匯流排" + +#: src/common/dbus/dbus-client.c:86 +#, fuzzy +msgid "Failed to complete NameHasOwner" +msgstr "完成命令失敗" + +#: src/common/dbus/dbus-client.c:112 +#, fuzzy +msgid "Failed to complete Command" +msgstr "完成命令失敗" + +#: src/common/dbus/dbus-plugin.c:30 +#, fuzzy +msgid "remote access" +msgstr "xchat 遠端存取" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "使用 DBUS 做為遠端存取外掛程式" + +#: src/common/dbus/dbus-plugin.c:897 +#, fuzzy, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "無法連接到執行階段匯流排: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "取得 %s 失敗: %s\n" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "關於(_A)" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "跨平台的 IRC 客戶端軟體" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "字元集" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "並未連線。" + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "您必須選擇一些被封禁者。" + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "遮罩" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "從" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "日期" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "在聊天室分頁中您只能開啟封禁清單視窗。" + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: 封禁清單 (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "刪除" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "剪切" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "刷新" + +#: src/fe-gtk/chanlist.c:111 +#, fuzzy, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "使用者及聊天室統計:%d/%d 名使用者在 %d/%d 個聊天室中" + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "選擇輸出檔名" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +#, fuzzy +msgid "_Join Channel" +msgstr "加入聊天室" + +#: src/fe-gtk/chanlist.c:633 +#, fuzzy +msgid "_Copy Channel Name" +msgstr "聊天室名" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat:聊天室清單 (%s)" + +#: src/fe-gtk/chanlist.c:781 +#, fuzzy +msgid "_Search" +msgstr "XChat: 搜索" + +#: src/fe-gtk/chanlist.c:787 +#, fuzzy +msgid "_Download List" +msgstr "下載" + +#: src/fe-gtk/chanlist.c:793 +#, fuzzy +msgid "Save _List..." +msgstr "伺服器清單(_S)..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "" + +#: src/fe-gtk/chanlist.c:818 +#, fuzzy +msgid "channels with" +msgstr "聊天室" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:843 +#, fuzzy +msgid "users." +msgstr "使用者" + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:861 +#, fuzzy +msgid "Channel name" +msgstr "聊天室名" + +#: src/fe-gtk/chanlist.c:882 +#, fuzzy +msgid "Search type:" +msgstr "搜索文字..." + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:890 +#, fuzzy +msgid "Pattern Match (Wildcards)" +msgstr "模樣符合:" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "尋找:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "給 %s 發送檔案" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "該檔案不可續傳。" + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"不能存取檔案:%s\n" +"%s。\n" +"無法續傳。" + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "下載目錄中的檔案比提供的檔案大,無法續傳。" + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "不能從兩人那裡續傳同一檔案" + +#: src/fe-gtk/dccgui.c:745 +#, fuzzy +msgid "XChat: Uploads and Downloads" +msgstr "XChat:上傳與下載" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "狀態" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "檔案" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "兩者" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "上傳" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "下載" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "詳細資訊" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "檔案:" + +#: src/fe-gtk/dccgui.c:821 +#, fuzzy +msgid "Address:" +msgstr "位址" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "中止" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "接受" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "續傳" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "開啟文件夾..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: DCC 交談清單" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "接收" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "已發送" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "開始時間" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*新增*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "編輯我" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "名稱" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "命令" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "上移" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "下移" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "取消" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "儲存" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "新添" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "刪除" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "排序" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "求助" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "不要自動與伺服器連線" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "使用不同的設定目錄" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "不自動載入任何外掛程式" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "顯示外掛程式自動載入的目錄" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "顯示使用者設定目錄" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "開啟一個 irc://server:port/channel URL" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "執行命令:" + +#: src/fe-gtk/fe-gtk.c:132 +msgid "Open URL or execute command in an existing XChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +#, fuzzy +msgid "level" +msgstr "從不" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "顯示版本資訊" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"開啟字型失敗:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "搜索緩衝區目前無內容。\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d 位元組" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "網路傳送佇列: %d 位元組" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"「Run Command」會執行資料 1 中的資料,就如同您是在輸入按鍵序列後出現的輸入格" +"中鍵入這些資料一樣。這樣,它就會包含文字 (這些文字會被發送給聊天室或某人)、命" +"令或使用者命令。執行時,資料 1 中所有「\\n」字元 被用來分隔命令,因此您可以執" +"行不止一個命令。如果您想在執行的文字中包含字元「\\」,您應該輸入「\\\\」" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"「Change Page」命令在您的筆記本中的分頁間切換。將資料 1 設定成您要切換的分" +"頁。如果資料 2 被設定成任意值,切換分頁數將相對於目前位置而言" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"「Insert in Buffer」命令在目前游標處把資料 1 中的內容插入到接受按鍵序列的輸入" +"格中" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"「Scroll Page」命令在文字視窗元件中上下滾動一頁或一列。設定資料 1 為 Up、" +"DOWN、+1或-1。" + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "「Set Buffer」命令把接受按鍵序列後的輸入格設定成資料 1 中的內容" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"「Last Command」命令把輸入格設為前一個命令 - 和在終端中按向上箭頭效果相同" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"「Next Command」命令把輸入格設為下一個命令 - 和在終端中按向下箭頭效果相同" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"該命令改變輸入格中文字,來完成未輸入完畢的使用者暱稱或命令。如果資料 1 被設" +"定,那麼,雙擊 tab 鍵會選擇最後一個暱稱,而非下一個" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"該命令在暱稱清單中上下移動。如果資料 1 被設定成任意值,它會上移,否則下移" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "該命令對照替換清單來檢查輸入的最後一詞,若找到符合者就代替它" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "該命令把最上面的分頁向左移一格" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "該命令把最上面的分頁向右移一格" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "該命令把目前分頁向左移一格" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "該命令把目前分頁向右移一格" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "把輸入列存到歷史中,但不發送給伺服器" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "載入鍵盤映射配置時出錯" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<無>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "修飾鍵" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "按鍵" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "動作" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: 鍵盤快捷鍵" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "資料 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "資料 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "打開按鍵配置檔案時出錯\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"鍵盤映射配置檔案中沒有鍵名 %s\n" +"中止載入,請修復 %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"鍵盤映射配置檔案中沒有動作 %s\n" +"中止載入,請修復 %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"期待資料列(以 Dx{:|!} 開始),卻得到:\n" +"%s\n" +"\n" +"中止載入。請修復 %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"鍵盤映射配置檔案損壞,中止載入\n" +"請修復 %s/keybindings.conf\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "無法寫入該檔案。" + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "無法讀取該檔案。" + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "該遮罩已存在。" + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "私人" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "通知" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "邀請" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "取消忽略" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "輸入要忽略的遮罩:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: 忽略清單" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "忽略統計:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "聊天室:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "私人:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "通知:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "邀請:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "加入..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "聊天室名稱太短,再試一次。" + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: 連線完成" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "完成到 %s 的連線。" + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "在伺服器清單視窗之中,並沒有輸入會自動加入此網路的聊天室。" + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "您接下來想要做什麼?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "沒事,我稍後再加入聊天室。(_N)" + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "加入此聊天室(_J):" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "如果您知道想要加入的聊天室名稱,在這裡輸入它。" + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "開啟聊天室清單視窗。(_P)" + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "取回聊天室清單也許會花費一到二分鐘。" + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "總是在連線之後顯示此對話框。(_A)" + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "交談與" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "%s 的話題是:%s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "沒有設定話題" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "這台伺服器仍然有 %d 個與它相關的聊天室或對話。要全部關閉它們嗎?" + +#: src/fe-gtk/maingui.c:1283 +#, fuzzy +msgid "Quit XChat?" +msgstr "關於 XChat" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1310 +#, fuzzy, c-format +msgid "You are connected to %i IRC networks." +msgstr "啟動時自動連接到此網路" + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "" + +#: src/fe-gtk/maingui.c:1314 +#, fuzzy +msgid "Some file transfers are still active." +msgstr "某些檔案傳輸仍在進行,要離開 xchat 嗎?" + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "插入屬性或顏色代碼" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>粗體</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>底線</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "正常" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "顏色 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "顏色 8-15" + +#: src/fe-gtk/maingui.c:1612 +#, fuzzy +msgid "_Settings" +msgstr "設定(_E)" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "隱藏加入/離開訊息" + +#: src/fe-gtk/maingui.c:1625 +#, fuzzy +msgid "_Extra Alerts" +msgstr "警報" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "有訊息時響鈴提示" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +#, fuzzy +msgid "_Detach" +msgstr "分離分頁(_D)" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "關閉(_C)" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "使用者限額必須是數字!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "話題保護" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "無室外訊息" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "秘密" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "僅邀請" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "監管的" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "封禁清單" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "密碼" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "使用者限額" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "顯示/隱藏使用者清單" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"無法設定透明背景!\n" +"\n" +"或許您正使用目前尚不被支援的\n" +"不相容視窗管理程式。\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "輸入新暱稱:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "未知主機" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "真實名稱:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "使用者:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "國家:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "伺服器:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "%u 分鐘之前" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "最後訊息:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "離開訊息:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"選單列目前已隱藏。您可以藉由按下 F9 或以滑鼠右鍵點選主要文字區域的空白部份來" +"重新顯示它。" + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "在瀏覽器中開啟連結" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "複製選取的連結" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "加入聊天室" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "離開聊天室" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "離開聊天室,而後立即加入" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat:使用者選單" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "編輯此選單..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "取回聊天室清單..." + +#: src/fe-gtk/menu.c:1348 +#, fuzzy +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"使用者命令 - 特殊編碼:\n" +"\n" +"%c = 目前聊天室\n" +"%m = 機器資訊\n" +"%n = 您的暱稱\n" +"%t = 時間/日期\n" +"%v = xchat 版本\n" +"%2 = 第 2 個詞\n" +"%3 = 第 3 個詞\n" +"&2 = 從第 2 個詞到列尾\n" +"&3 = 從第 3 個詞到列尾\n" +"\n" +"如:\n" +"/cmd john hello\n" +"\n" +"%2 會是「john」\n" +"&2 會是「john hello」。" + +#: src/fe-gtk/menu.c:1364 +#, fuzzy +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"使用者清單按鈕 - 特殊編碼:\n" +"\n" +"%a = 所有選取的使用者\n" +"%c = 目前聊天室\n" +"%h = 選取使用者的主機名\n" +"%m = 機器資訊\n" +"%n = 您的暱稱\n" +"%s = 選取的使用者\n" +"%t = 時間/日期\n" + +#: src/fe-gtk/menu.c:1374 +#, fuzzy +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"對話按鈕 - 特殊編碼:\n" +"\n" +"%a = 所有選取的使用者\n" +"%c = 目前聊天室\n" +"%h = 選取使用者的主機名\n" +"%m = 機器資訊\n" +"%n = 您的暱稱\n" +"%s = 選取的使用者\n" +"%t = 時間/日期\n" + +#: src/fe-gtk/menu.c:1384 +#, fuzzy +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"CTCP 回應 - 特殊編碼:\n" +"\n" +"%d = 資料 (全部 ctcp)\n" +"%m = 機器資訊\n" +"%s = 發送 ctcp 的使用者\n" +"%t = 時間/日期\n" +"%2 = 第 2 個詞\n" +"%3 = 第 3 個詞\n" +"&2 = 從第 2 個詞到列尾\n" +"&3 = 從第 3 個詞到列尾\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"URL 處理程式 - 特殊編碼:\n" +"\n" +"%s = URL 字串\n" +"\n" +"在命令前加一個「!」表示\n" +"該命令應被發送到 shell 而\n" +"非 XChat" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: 使用者自訂命令" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: 使用者清單彈出選單" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "以...替換" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: 替換" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: URL 處理程式" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: 使用者清單按鈕" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: 對話框按鈕" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: CTCP 回應" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "網路列表(_S)..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "新增(_N)" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "伺服器分頁..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "聊天室分頁..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "伺服器視窗..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "聊天室視窗..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "載入外掛程式或命令稿(_L)..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "離開(_Q)" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "檢視(_V)" + +#: src/fe-gtk/menu.c:1591 +#, fuzzy +msgid "_Menu Bar" +msgstr "選單欄(_M)" + +#: src/fe-gtk/menu.c:1592 +#, fuzzy +msgid "_Topic Bar" +msgstr "話題欄(_T)" + +#: src/fe-gtk/menu.c:1593 +#, fuzzy +msgid "_User List" +msgstr "使用者清單" + +#: src/fe-gtk/menu.c:1594 +#, fuzzy +msgid "U_serlist Buttons" +msgstr "使用者清單按鈕(_U)..." + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "模式按鈕(_O)" + +#: src/fe-gtk/menu.c:1597 +#, fuzzy +msgid "_Channel Switcher" +msgstr "聊天室清單..." + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "分頁(_T)" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "樹狀圖(_R)" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "網路流量(_N)" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "離線" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "圖形" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "伺服器(_S)" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "切斷連接(_D)" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "重新連接(_R)" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "加入聊天室..." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "加入聊天室..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "標記為暫離" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "使用者選單(_U)" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "設定(_E)" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "偏好設定(_P)..." + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "進階" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "自動替換..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "CTCP 回應..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "對話框按鈕..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "鍵盤快捷鍵..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "文字事件..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "URL 處理程式..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "使用者命令..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "使用者清單按鈕..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "使用者清單彈出選單..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "視窗(_W)" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "封禁清單..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "字元集..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "直接聊天..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "檔案傳輸..." + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "封禁清單..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "忽略清單..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "外掛程式和命令稿..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "原始記錄..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "URL 抓取程式..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "重置標記線" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "清空文字(_L)" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "搜索文字..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "儲存文字..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "求助(_H)" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "內容(_C)" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "關於(_A)" + +#: src/fe-gtk/menu.c:2147 +#, fuzzy +msgid "_Attach" +msgstr "附加視窗(_A)" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "最後一次看到" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "離線" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "從不" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, fuzzy, c-format +msgid "%d minutes ago" +msgstr "%u 分鐘之前" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "上線" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "輸入要新增的暱稱:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "XChat: 檔案發送清單" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "打開對話視窗" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:591 +#, fuzzy +msgid "_Hide" +msgstr "隱藏" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +#, fuzzy +msgid "Channel Message" +msgstr "聊天室名" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +#, fuzzy +msgid "Private Message" +msgstr "有悄悄話時響鈴提示" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +#, fuzzy +msgid "Highlighted Message" +msgstr "高亮度顯示訊息時響鈴提示" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "離開" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "版本" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "描述" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "選擇要載入的外掛程式或命令稿" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: 外掛程式和命令稿" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "載入(_L)..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "卸載(_U)" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "另存為..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: 原始日誌 (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "清除原始日誌" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "您為該搜索打開的視窗已不再存在。" + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "搜尋到末端,沒找到。" + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: 搜索" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "符合大小寫(_M)" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "向後搜尋(_B)" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "尋找(_F)" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "新網路" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "一定要刪除網路「%s」以及它所有的伺服器嗎?" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "聊天室" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat:聊天室清單 (%s)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "密碼:" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "編輯(_E)" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "使用者名稱與真實名稱不可為空白" + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: 編輯 %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "%s 的伺服器" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "只連接到選取的伺服器" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "當連線失敗時不要輪詢所有的伺服器" + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "您的詳細資訊" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "使用廣域使用者資訊" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "暱稱(_N):" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "第二選擇:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "使用者名(_U):" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "真實名稱(_L):" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "連接" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "啟動時自動連接到此網路" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "使用代理伺服器" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "在本網路的所有伺服器使用 SSL" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "接受無效的 SSL 證書" + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "離開聊天室:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "要加入的聊天室,用逗號而不是空格分隔!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "連接命令:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"連接後執行的額外的命令。如果您使用多個命令,請設定為 LOAD -e <檔案名>,其中 <" +"檔案名> 是一個包含要執行的命令的文字檔案。" + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "暱稱伺服器密碼:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"如果您的暱稱需要密碼,就在這裡將它輸入。並非所有的 IRC 網路都支援此一功能。" + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "伺服器密碼:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "伺服器的密碼。如果不確定,保留為空。" + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "字元設定:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: 網路清單" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "使用者資訊" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "第三選擇:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "網路" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "啟動時跳過網路清單" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "編輯(_E)..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "排序(_S)" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "連接(_O)" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "文字框外觀" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "字型:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "背景圖像:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "回滾列數:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "彩色暱稱" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "給 IRC 上的每名使用者一種不同的顏色" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "縮格暱稱" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "讓暱稱右側對齊" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "透明背景" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "顯示標記線" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "在最後讀取的文字後添加一條紅線。" + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "透明度設定" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "紅色:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "綠色:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "藍色:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "時間戳記" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "打開時間戳記" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "時間戳記格式:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "查看 strftime 手冊頁以獲取詳細資訊。" + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "輸入框" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "使用文字框字型及顏色" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "拼寫檢查" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "暱稱自動補齊" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "自動補齊暱稱(無需 TAB 鍵)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "暱稱自動補齊後綴:" + +#: src/fe-gtk/setup.c:147 +#, fuzzy +msgid "Nick completion sorted:" +msgstr "暱稱自動補齊後綴:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "輸入框編碼" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "把 %nnn 解釋為 ASCII 值" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "轉換%C、%B為顏色、粗體等" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, Op 最先" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, Op 最後" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "未排序" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "頂部" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "底部" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "隱藏" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "使用者清單" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "在使用者清單中顯示主機名" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "使用者清單排列方式:" + +#: src/fe-gtk/setup.c:205 +#, fuzzy +msgid "Show user list at:" +msgstr "顯示/隱藏使用者清單" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "記錄離開資訊" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "追蹤使用者的離開狀態並且以不同顏色標記它們" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "在小於此值的聊天室裡:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "雙擊時的動作" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "視窗" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "分頁" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "總是" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "只有請求的分頁" + +#: src/fe-gtk/setup.c:242 +#, fuzzy +msgid "Tree" +msgstr "樹狀圖(_R)" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "打開額外的分頁存放伺服器訊息" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "打開額外的分頁存放伺服器通知" + +#: src/fe-gtk/setup.c:252 +#, fuzzy +msgid "Open a new tab when you receive a private message" +msgstr "打開額外的分頁存放伺服器訊息" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "按字母表順序排序分頁" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "小分頁" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "聚焦到新分頁:" + +#: src/fe-gtk/setup.c:258 +#, fuzzy +msgid "Show channel switcher at:" +msgstr "在小於此值的聊天室裡:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "縮短分頁標籤至:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "字母。" + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "分頁或視窗" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "打開聊天室於:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "打開對話框於:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "打開工具於:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "打開 DCC、忽略、通知等動作,使用分頁還是視窗?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "否" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "是" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "每次瀏覽儲存文件夾" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "檔案和目錄" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "自動接受所提供的檔案:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "把檔案下載到:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "移動完成下載的檔案到:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "把暱稱存入檔名" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "網路設定" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "從 IRC 伺服器獲取我的位址" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"向 IRC 伺服器查詢您的真實位址。如果您具有 192.168.*.* 這樣的位址時,請使用此" +"命令。" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "DCC IP 位址:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "發送檔案時聲稱您是這個位址。" + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "第一個 DCC 檔案發送輸出入埠:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "最後一個 DCC 檔案傳送輸出入埠:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!輸出入埠保留為 0 表示允許所有範圍。" + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "最大檔案傳輸速度(位元組每秒)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "一次上傳" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "一個傳送行程的最大速度" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "一次下載:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "所有上傳:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "所有檔案的最大速度" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "所有下載" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "警報" + +#: src/fe-gtk/setup.c:333 +#, fuzzy +msgid "Show tray balloons on:" +msgstr "顯示分頁於:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "" + +#: src/fe-gtk/setup.c:341 +#, fuzzy +msgid "Highlighted Messages" +msgstr "高亮度顯示訊息時響鈴提示" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:344 +#, fuzzy +msgid "Extra words to highlight:" +msgstr "需要高亮度顯示的其它詞組:" + +#: src/fe-gtk/setup.c:345 +#, fuzzy +msgid "Nick names not to highlight:" +msgstr "不要高亮度顯示的暱稱:" + +#: src/fe-gtk/setup.c:346 +#, fuzzy +msgid "Nick names to always highlight:" +msgstr "不要高亮度顯示的暱稱:" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "請用逗號分隔多個詞組。" + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "預設訊息" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "離開:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "離開聊天室:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "離開:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "離開" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "發佈暫離訊息" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "發佈暫離訊息到所有聊天室" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "只顯示暫離一次" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "同樣的暫離訊息只顯示一次" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "自動取消暫離狀態" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "發送訊息前取消您的暫離狀態" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "進階設定" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "自動重連間隔:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "使用原始格式顯示模式" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "誰在上線通知清單上" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "當您通知清單中的某位使用者上線時發送 /WHOIS 命令" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "隱藏加入/離開訊息" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "預設隱藏聊天室裡的加入/離開訊息" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "自動打開 DDC 視窗" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "發送視窗" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "接收視窗" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "聊天視窗" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "日誌" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "允許記錄對話內容" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "記錄檔案名稱:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=伺服器 %c=聊天室 %n=網路。" + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "在日誌中加入時間戳記" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "日誌時間戳記格式:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(停用)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "所有的連接" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "僅列出 IRC 伺服器" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "僅使用 DCC Get" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "您的位址" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "綁定於:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "只對有多個位址的電腦有用。" + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "代理伺服器" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "主機名:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "輸出入埠:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "類型:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "使用代理伺服器於:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "代理伺服器驗證" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "使用驗證(MS Proxy、HTTP 或僅有 Socks5)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "使用驗證(HTTP 或僅有 Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "使用者名:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "密碼:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "選擇一個圖像檔案" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "選擇下載文件夾" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "選擇字型" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "瀏覽..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "標記驗證過的使用者為:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "標記未驗證過的使用者為:" + +#: src/fe-gtk/setup.c:1161 +#, fuzzy +msgid "Open Data Folder" +msgstr "開啟文件夾..." + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "選擇顏色" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "文字顏色" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "mIRC 顏色:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "本地的顏色:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "前景:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "背景:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "標記文字" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "介面顏色" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "新資料:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "標記線:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "新訊息:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "離開的使用者:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "高亮度顯示:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "事件" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "音效檔案" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "選擇聲音檔案" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "播放聲音方法:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "外部聲音播放程式(_P):" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "外部程式(_E)" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "自動(_A)" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "音效檔案目錄(_D):" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "音效檔案:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "瀏覽(_B)..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "播放(_P)" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "介面" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "文字框" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "使用者清單" + +#: src/fe-gtk/setup.c:1703 +#, fuzzy +msgid "Channel switcher" +msgstr "聊天室清單..." + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "顏色" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "聊天" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "一般" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "音效" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "網路設定" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "檔案傳輸" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "類別" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "有些設定需要重新啟動 xchat 才會生效。" + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*警告*\n" +"自動接收 DCC 到您的主目錄中是危險之舉,\n" +"且有被盜用的可能性。例如:\n" +"某人可能會給您發送一份 .bash_profile 檔案" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: 偏好設定" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "解析字串時出錯" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "該信號只接受 %d 個引數,$%d 無效" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "列印文字檔案" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "編輯事件" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ 數字" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "從...載入" + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "測試全部" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: URL 擷取程式" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "清空清單" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "複製選取的 URL" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "複製" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "儲存清單到檔案" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d 個管理員,共 %d 人" + +#~ msgid "%C18*$t$1%O $2" +#~ msgstr "%C18*$t$1%O $2" + +#~ msgid "%C21*%O$t%C21%B$1%O%C21 $2" +#~ msgstr "%C21*%O$t%C21%B$1%O%C21 $2" + +#~ msgid "%C18%H<%H$4$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$4$1%H>%H%O$t$2" + +#~ msgid "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" +#~ msgstr "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" + +#~ msgid "%C28-%C29$1/$2%C28-%O$t$3" +#~ msgstr "%C28-%C29$1/$2%C28-%O$t$3" + +#~ msgid "$1$t$2" +#~ msgstr "$1$t$2" + +#~ msgid "%C19>%O$1%C19<%O$t$2" +#~ msgstr "%C19>%O$1%C19<%O$t$2" + +#~ msgid "%C16*%O$t$1%O" +#~ msgstr "%C16*%O$t$1%O" + +#~ msgid "%C28-%C29$1%C28-%O$t$2" +#~ msgstr "%C28-%C29$1%C28-%O$t$2" + +#~ msgid "%C28*%C29$3$1%C28*$t%O$2" +#~ msgstr "%C28*%C29$3$1%C28*$t%O$2" + +#~ msgid "%C18%H<%H$3$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$3$1%H>%H%O$t$2" + +#~ msgid "%C22*%O$t$1" +#~ msgstr "%C22*%O$t$1" + +#~ msgid "%C31%H<%H$4$1%H>%H%O%C30$t$2" +#~ msgstr "%C31%H<%H$4$1%H>%H%O%C30$t$2" + +#~ msgid "PID" +#~ msgstr "行程代號" + +#~ msgid "US Minor Outlying Islands" +#~ msgstr "美國周邊島嶼" + +#~ msgid "Direct client-to-client" +#~ msgstr "直接客戶端到客戶端" + +#~ msgid "Send File" +#~ msgstr "發送檔案" + +#~ msgid "Offer Chat" +#~ msgstr "請求聊天" + +#~ msgid "Abort Chat" +#~ msgstr "中止聊天" + +#~ msgid "Userinfo" +#~ msgstr "個人資訊" + +#~ msgid "Clientinfo" +#~ msgstr "客戶端資訊" + +#~ msgid "Time" +#~ msgstr "時間" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "操作" + +#~ msgid "Kill this user" +#~ msgstr "砍掉此使用者" + +#~ msgid "Mode" +#~ msgstr "模式" + +#~ msgid "Give Half-Ops" +#~ msgstr "給准管理員權限" + +#~ msgid "Take Half-Ops" +#~ msgstr "取消准管理員權限" + +#~ msgid "Ignore" +#~ msgstr "忽略" + +#~ msgid "Ignore User" +#~ msgstr "忽略使用者" + +#~ msgid "UnIgnore User" +#~ msgstr "取消忽略使用者" + +#~ msgid "Info" +#~ msgstr "資訊" + +#~ msgid "Who" +#~ msgstr "Who" + +#~ msgid "DNS Lookup" +#~ msgstr "DNS 查詢" + +#~ msgid "Trace" +#~ msgstr "Trace" + +#~ msgid "UserHost" +#~ msgstr "使用者主機" + +#~ msgid "External" +#~ msgstr "外部程式" + +#~ msgid "Traceroute" +#~ msgstr "Traceroute" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "Unban" +#~ msgstr "解禁" + +#~ msgid "I can't save an empty list!" +#~ msgstr "無法儲存空清單!" + +#~ msgid "List display options:" +#~ msgstr "列舉顯示選項:" + +#~ msgid "Minimum Users:" +#~ msgstr "最少使用者數:" + +#~ msgid "Maximum Users:" +#~ msgstr "最多使用者數:" + +#~ msgid "Regex Match:" +#~ msgstr "正規表示式符合:" + +#~ msgid "Apply Match to:" +#~ msgstr "套用符合到:" + +#~ msgid "Apply" +#~ msgstr "套用" + +#~ msgid "Refresh the list" +#~ msgstr "刷新清單" + +#~ msgid "Save the list" +#~ msgstr "儲存清單" + +#~ msgid "None" +#~ msgstr "無" + +#~ msgid "To" +#~ msgstr "發到" + +#~ msgid "Started" +#~ msgstr "已開始" + +#~ msgid "Speed limit" +#~ msgstr "速度限制" + +#~ msgid "XChat: File Receive List" +#~ msgstr "XChat: 檔案接收清單" + +#~ msgid "Open" +#~ msgstr "開啟" + +#~ msgid "Ack" +#~ msgstr "Ack" + +#~ msgid "To/From" +#~ msgstr "到/從" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "沒有其它打開的分頁,要離開 xchat 嗎?" + +#~ msgid "Show join/part messages" +#~ msgstr "顯示加入/離開訊息" + +#~ msgid "Color paste" +#~ msgstr "彩色貼上" + +#~ msgid "Go to" +#~ msgstr "前往" + +#~ msgid "_Close Tab" +#~ msgstr "關閉分頁(_C)" + +#~ msgid "_Layout" +#~ msgstr "佈局(_L)" + +#~ msgid "Notify List..." +#~ msgstr "通知清單..." + +#~ msgid "_Close Window" +#~ msgstr "關閉視窗(_C)" + +#~ msgid "User" +#~ msgstr "使用者" + +#~ msgid "Server" +#~ msgstr "伺服器" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: 通知清單" + +#~ msgid "C_hannels to join:" +#~ msgstr "輸入要加入的聊天室(_H):" + +#~ msgid "Resizable user list" +#~ msgstr "使用者清單可調整大小" + +#~ msgid "Left" +#~ msgstr "左側" + +#~ msgid "Right" +#~ msgstr "右側" + +#~ msgid "Tabs Location" +#~ msgstr "分頁位置" + +#~ msgid "(Can be a text file relative to ~/.xchat2/)." +#~ msgstr "(可以是一個相對路徑為 ~/.xchat2/ 的文字檔案)。" + +#~ msgid "(Can be a text file relative to config dir)." +#~ msgstr "(可以是一個相對路徑為配置目錄的文字檔案)。" + +#~ msgid "Flash taskbar on highlighted messages" +#~ msgstr "高亮度顯示訊息時閃動工作列" + +#~ msgid "Beep on channel messages" +#~ msgstr "聊天室中出現新訊息時響鈴" + +#~ msgid "Open an irc:// url" +#~ msgstr "開啟一個 irc:// URL" + +#~ msgid "irc://server:port/channel" +#~ msgstr "irc://server:port/channel" + +#~ msgid "Execute a xchat command" +#~ msgstr "執行 xchat 命令:" + +#~ msgid "\"Command to execute\"" +#~ msgstr "\"要執行的命令\"" + +#~ msgid "Prints some text to the current tab/window" +#~ msgstr "印出一些文字到目前的分頁/視窗" + +#~ msgid "\"Text to print\"" +#~ msgstr "\"要印出的文字\"" + +#~ msgid "Change the context to the channel" +#~ msgstr "變更上下文至聊天室" + +#~ msgid "Change the context to the server" +#~ msgstr "變更上下文至伺服器" + +#~ msgid "server" +#~ msgstr "伺服器" + +#~ msgid "Get some informations from xchat" +#~ msgstr "從 xchat 擷取一些資訊" + +#~ msgid "id" +#~ msgstr "id" + +#~ msgid "Get settings from xchat" +#~ msgstr "從 xchat 擷取設定" + +#~ msgid "name" +#~ msgstr "名稱" + +#~ msgid "" +#~ "xchat-remote: %s\n" +#~ "Try `xchat-remote --help' for more information\n" +#~ msgstr "" +#~ "xchat-remote: %s\n" +#~ "試試 `xchat-remote --help' 以獲得更多資訊\n" + +#~ msgid "Failed to complete SetContext" +#~ msgstr "完成設定上下文失敗" + +#~ msgid "Failed to complete print" +#~ msgstr "完成列印失敗" + +#~ msgid "Failed to complete GetInfo" +#~ msgstr "完成擷取資訊失敗" + +#~ msgid "Failed to complete GetPrefs" +#~ msgstr "完成擷取偏好失敗" + +#~ msgid "%s doesn't exist\n" +#~ msgstr "%s 不存在\n" + +#~ msgid "%s loaded successfully!\n" +#~ msgstr "已成功載入 %s!\n" + +#~ msgid "France, Metropolitan" +#~ msgstr "法屬美特羅波利坦" + +#~ msgid "Neutral Zone" +#~ msgstr "中立地區" + +#~ msgid "Settings saved." +#~ msgstr "設定已儲存。" + +#~ msgid "Save rawlog" +#~ msgstr "儲存原始日誌" + +#~ msgid "Save rawlog..." +#~ msgstr "儲存原始日誌..." + +#~ msgid "Completes nick names without using the TAB key" +#~ msgstr "不用 TAB 鍵而自動補齊暱稱" + +#~ msgid "Input Box Appearance" +#~ msgstr "輸入框外觀" + +#~ msgid "Convert spaces to underscore before sending" +#~ msgstr "發送前把空格轉換成底線" + +#~ msgid "(See strftime manpage for details)." +#~ msgstr "(查看 strftime 手冊以獲取詳細資訊)。" diff --git a/etc/wyatt8740/src/Makefile.am b/etc/wyatt8740/src/Makefile.am new file mode 100644 index 0000000..7885669 --- /dev/null +++ b/etc/wyatt8740/src/Makefile.am @@ -0,0 +1,14 @@ +## Process this file with automake to produce Makefile.in + +EXTRA_DIST = fe-text/fe-text.c \ + fe-text/README fe-text/fe-text.h version-script + +if DO_TEXT +text_fe = fe-text +endif + +if DO_GTK +gtk_fe = fe-gtk +endif + +SUBDIRS = pixmaps common $(gtk_fe) $(text_fe) diff --git a/etc/wyatt8740/src/Makefile.in b/etc/wyatt8740/src/Makefile.in new file mode 100644 index 0000000..4a0fe2a --- /dev/null +++ b/etc/wyatt8740/src/Makefile.in @@ -0,0 +1,684 @@ +# Makefile.in generated by automake 1.16.5 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2021 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = src +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir distdir-am +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +DIST_SUBDIRS = pixmaps common fe-gtk fe-text +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COMMON_CFLAGS = @COMMON_CFLAGS@ +COMMON_LIBS = @COMMON_LIBS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DBUS_BINDING_TOOL = @DBUS_BINDING_TOOL@ +DBUS_CFLAGS = @DBUS_CFLAGS@ +DBUS_LIBS = @DBUS_LIBS@ +DBUS_SERVICES_DIR = @DBUS_SERVICES_DIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ETAGS = @ETAGS@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FILECMD = @FILECMD@ +GCONFTOOL = @GCONFTOOL@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLIB_CFLAGS = @GLIB_CFLAGS@ +GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GLIB_LIBS = @GLIB_LIBS@ +GLIB_MKENUMS = @GLIB_MKENUMS@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GOBJECT_QUERY = @GOBJECT_QUERY@ +GREP = @GREP@ +GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ +GTKSPELL_LIBS = @GTKSPELL_LIBS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_LIBS = @GTK_LIBS@ +GUI_CFLAGS = @GUI_CFLAGS@ +GUI_LIBS = @GUI_LIBS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSEXY_CFLAGS = @LIBSEXY_CFLAGS@ +LIBSEXY_LIBS = @LIBSEXY_LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL_CFLAGS = @PERL_CFLAGS@ +PERL_LDFLAGS = @PERL_LDFLAGS@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLUGIN_INCLUDES = @PLUGIN_INCLUDES@ +POSUB = @POSUB@ +PY_CFLAGS = @PY_CFLAGS@ +PY_LIBS = @PY_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TCL_CFLAGS = @TCL_CFLAGS@ +TCL_LIBS = @TCL_LIBS@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gdkpixbufcsourcepath = @gdkpixbufcsourcepath@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +perlpath = @perlpath@ +pkgconfigpath = @pkgconfigpath@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pythonpath = @pythonpath@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sedpath = @sedpath@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +unamepath = @unamepath@ +xchatlibdir = @xchatlibdir@ +EXTRA_DIST = fe-text/fe-text.c \ + fe-text/README fe-text/fe-text.h version-script + +@DO_TEXT_TRUE@text_fe = fe-text +@DO_GTK_TRUE@gtk_fe = fe-gtk +SUBDIRS = pixmaps common $(gtk_fe) $(text_fe) +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool cscopelist-am ctags \ + ctags-am distclean distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/etc/wyatt8740/src/common/Makefile.am b/etc/wyatt8740/src/common/Makefile.am new file mode 100644 index 0000000..8f0299d --- /dev/null +++ b/etc/wyatt8740/src/common/Makefile.am @@ -0,0 +1,60 @@ +## Process this file with automake to produce Makefile.in + +noinst_LIBRARIES = libxchatcommon.a + +INCLUDES = $(COMMON_CFLAGS) + +EXTRA_DIST = \ + cfgfiles.h \ + chanopt.h \ + ctcp.h \ + dcc.h \ + fe.h \ + history.h \ + identd.c \ + ignore.h \ + inbound.h \ + inet.h \ + make-te.c \ + modes.h \ + msproxy.h \ + network.h \ + notify.h \ + outbound.h \ + plugin.h \ + plugin-timer.h \ + proto-irc.h \ + server.h \ + servlist.h \ + ssl.h \ + ssl.c \ + text.h \ + textenums.h \ + textevents.h \ + textevents.in \ + tree.h \ + url.h \ + userlist.h \ + util.h \ + xchat.h \ + xchatc.h \ + xchat-plugin.h + +if USE_OPENSSL +ssl_c = ssl.c +endif + +if USE_DBUS +dbusdir = dbus +libxchatcommon_a_LIBADD = \ + $(top_builddir)/src/common/dbus/dbus-*.$(OBJEXT) +endif +SUBDIRS = $(dbusdir) . + +libxchatcommon_a_SOURCES = cfgfiles.c chanopt.c ctcp.c dcc.c history.c ignore.c \ + inbound.c modes.c msproxy.c network.c notify.c outbound.c \ + plugin.c plugin-timer.c proto-irc.c server.c servlist.c $(ssl_c) \ + text.c tree.c url.c userlist.c util.c xchat.c + +textevents: make-te + ./make-te < textevents.in > textevents.h 2> textenums.h diff --git a/etc/wyatt8740/src/common/Makefile.in b/etc/wyatt8740/src/common/Makefile.in new file mode 100644 index 0000000..40f29f6 --- /dev/null +++ b/etc/wyatt8740/src/common/Makefile.in @@ -0,0 +1,914 @@ +# Makefile.in generated by automake 1.16.5 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2021 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = src/common +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +AM_V_AR = $(am__v_AR_@AM_V@) +am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) +am__v_AR_0 = @echo " AR " $@; +am__v_AR_1 = +libxchatcommon_a_AR = $(AR) $(ARFLAGS) +@USE_DBUS_TRUE@libxchatcommon_a_DEPENDENCIES = $(top_builddir)/src/common/dbus/dbus-*.$(OBJEXT) +am__libxchatcommon_a_SOURCES_DIST = cfgfiles.c chanopt.c ctcp.c dcc.c \ + history.c ignore.c inbound.c modes.c msproxy.c network.c \ + notify.c outbound.c plugin.c plugin-timer.c proto-irc.c \ + server.c servlist.c ssl.c text.c tree.c url.c userlist.c \ + util.c xchat.c +@USE_OPENSSL_TRUE@am__objects_1 = ssl.$(OBJEXT) +am_libxchatcommon_a_OBJECTS = cfgfiles.$(OBJEXT) chanopt.$(OBJEXT) \ + ctcp.$(OBJEXT) dcc.$(OBJEXT) history.$(OBJEXT) \ + ignore.$(OBJEXT) inbound.$(OBJEXT) modes.$(OBJEXT) \ + msproxy.$(OBJEXT) network.$(OBJEXT) notify.$(OBJEXT) \ + outbound.$(OBJEXT) plugin.$(OBJEXT) plugin-timer.$(OBJEXT) \ + proto-irc.$(OBJEXT) server.$(OBJEXT) servlist.$(OBJEXT) \ + $(am__objects_1) text.$(OBJEXT) tree.$(OBJEXT) url.$(OBJEXT) \ + userlist.$(OBJEXT) util.$(OBJEXT) xchat.$(OBJEXT) +libxchatcommon_a_OBJECTS = $(am_libxchatcommon_a_OBJECTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = ./$(DEPDIR)/cfgfiles.Po ./$(DEPDIR)/chanopt.Po \ + ./$(DEPDIR)/ctcp.Po ./$(DEPDIR)/dcc.Po ./$(DEPDIR)/history.Po \ + ./$(DEPDIR)/ignore.Po ./$(DEPDIR)/inbound.Po \ + ./$(DEPDIR)/modes.Po ./$(DEPDIR)/msproxy.Po \ + ./$(DEPDIR)/network.Po ./$(DEPDIR)/notify.Po \ + ./$(DEPDIR)/outbound.Po ./$(DEPDIR)/plugin-timer.Po \ + ./$(DEPDIR)/plugin.Po ./$(DEPDIR)/proto-irc.Po \ + ./$(DEPDIR)/server.Po ./$(DEPDIR)/servlist.Po \ + ./$(DEPDIR)/ssl.Po ./$(DEPDIR)/text.Po ./$(DEPDIR)/tree.Po \ + ./$(DEPDIR)/url.Po ./$(DEPDIR)/userlist.Po ./$(DEPDIR)/util.Po \ + ./$(DEPDIR)/xchat.Po +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libxchatcommon_a_SOURCES) +DIST_SOURCES = $(am__libxchatcommon_a_SOURCES_DIST) +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir distdir-am +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +DIST_SUBDIRS = dbus . +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COMMON_CFLAGS = @COMMON_CFLAGS@ +COMMON_LIBS = @COMMON_LIBS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DBUS_BINDING_TOOL = @DBUS_BINDING_TOOL@ +DBUS_CFLAGS = @DBUS_CFLAGS@ +DBUS_LIBS = @DBUS_LIBS@ +DBUS_SERVICES_DIR = @DBUS_SERVICES_DIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ETAGS = @ETAGS@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FILECMD = @FILECMD@ +GCONFTOOL = @GCONFTOOL@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLIB_CFLAGS = @GLIB_CFLAGS@ +GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GLIB_LIBS = @GLIB_LIBS@ +GLIB_MKENUMS = @GLIB_MKENUMS@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GOBJECT_QUERY = @GOBJECT_QUERY@ +GREP = @GREP@ +GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ +GTKSPELL_LIBS = @GTKSPELL_LIBS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_LIBS = @GTK_LIBS@ +GUI_CFLAGS = @GUI_CFLAGS@ +GUI_LIBS = @GUI_LIBS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSEXY_CFLAGS = @LIBSEXY_CFLAGS@ +LIBSEXY_LIBS = @LIBSEXY_LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL_CFLAGS = @PERL_CFLAGS@ +PERL_LDFLAGS = @PERL_LDFLAGS@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLUGIN_INCLUDES = @PLUGIN_INCLUDES@ +POSUB = @POSUB@ +PY_CFLAGS = @PY_CFLAGS@ +PY_LIBS = @PY_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TCL_CFLAGS = @TCL_CFLAGS@ +TCL_LIBS = @TCL_LIBS@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gdkpixbufcsourcepath = @gdkpixbufcsourcepath@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +perlpath = @perlpath@ +pkgconfigpath = @pkgconfigpath@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pythonpath = @pythonpath@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sedpath = @sedpath@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +unamepath = @unamepath@ +xchatlibdir = @xchatlibdir@ +noinst_LIBRARIES = libxchatcommon.a +INCLUDES = $(COMMON_CFLAGS) +EXTRA_DIST = \ + cfgfiles.h \ + chanopt.h \ + ctcp.h \ + dcc.h \ + fe.h \ + history.h \ + identd.c \ + ignore.h \ + inbound.h \ + inet.h \ + make-te.c \ + modes.h \ + msproxy.h \ + network.h \ + notify.h \ + outbound.h \ + plugin.h \ + plugin-timer.h \ + proto-irc.h \ + server.h \ + servlist.h \ + ssl.h \ + ssl.c \ + text.h \ + textenums.h \ + textevents.h \ + textevents.in \ + tree.h \ + url.h \ + userlist.h \ + util.h \ + xchat.h \ + xchatc.h \ + xchat-plugin.h + +@USE_OPENSSL_TRUE@ssl_c = ssl.c +@USE_DBUS_TRUE@dbusdir = dbus +@USE_DBUS_TRUE@libxchatcommon_a_LIBADD = \ +@USE_DBUS_TRUE@ $(top_builddir)/src/common/dbus/dbus-*.$(OBJEXT) + +SUBDIRS = $(dbusdir) . +libxchatcommon_a_SOURCES = cfgfiles.c chanopt.c ctcp.c dcc.c history.c ignore.c \ + inbound.c modes.c msproxy.c network.c notify.c outbound.c \ + plugin.c plugin-timer.c proto-irc.c server.c servlist.c $(ssl_c) \ + text.c tree.c url.c userlist.c util.c xchat.c + +all: all-recursive + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/common/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/common/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) + +libxchatcommon.a: $(libxchatcommon_a_OBJECTS) $(libxchatcommon_a_DEPENDENCIES) $(EXTRA_libxchatcommon_a_DEPENDENCIES) + $(AM_V_at)-rm -f libxchatcommon.a + $(AM_V_AR)$(libxchatcommon_a_AR) libxchatcommon.a $(libxchatcommon_a_OBJECTS) $(libxchatcommon_a_LIBADD) + $(AM_V_at)$(RANLIB) libxchatcommon.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cfgfiles.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chanopt.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctcp.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcc.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/history.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ignore.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inbound.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/modes.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msproxy.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/network.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/notify.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/outbound.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin-timer.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/proto-irc.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/server.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/servlist.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ssl.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/text.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tree.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/url.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/userlist.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xchat.Po@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(LIBRARIES) +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ + mostlyclean-am + +distclean: distclean-recursive + -rm -f ./$(DEPDIR)/cfgfiles.Po + -rm -f ./$(DEPDIR)/chanopt.Po + -rm -f ./$(DEPDIR)/ctcp.Po + -rm -f ./$(DEPDIR)/dcc.Po + -rm -f ./$(DEPDIR)/history.Po + -rm -f ./$(DEPDIR)/ignore.Po + -rm -f ./$(DEPDIR)/inbound.Po + -rm -f ./$(DEPDIR)/modes.Po + -rm -f ./$(DEPDIR)/msproxy.Po + -rm -f ./$(DEPDIR)/network.Po + -rm -f ./$(DEPDIR)/notify.Po + -rm -f ./$(DEPDIR)/outbound.Po + -rm -f ./$(DEPDIR)/plugin-timer.Po + -rm -f ./$(DEPDIR)/plugin.Po + -rm -f ./$(DEPDIR)/proto-irc.Po + -rm -f ./$(DEPDIR)/server.Po + -rm -f ./$(DEPDIR)/servlist.Po + -rm -f ./$(DEPDIR)/ssl.Po + -rm -f ./$(DEPDIR)/text.Po + -rm -f ./$(DEPDIR)/tree.Po + -rm -f ./$(DEPDIR)/url.Po + -rm -f ./$(DEPDIR)/userlist.Po + -rm -f ./$(DEPDIR)/util.Po + -rm -f ./$(DEPDIR)/xchat.Po + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f ./$(DEPDIR)/cfgfiles.Po + -rm -f ./$(DEPDIR)/chanopt.Po + -rm -f ./$(DEPDIR)/ctcp.Po + -rm -f ./$(DEPDIR)/dcc.Po + -rm -f ./$(DEPDIR)/history.Po + -rm -f ./$(DEPDIR)/ignore.Po + -rm -f ./$(DEPDIR)/inbound.Po + -rm -f ./$(DEPDIR)/modes.Po + -rm -f ./$(DEPDIR)/msproxy.Po + -rm -f ./$(DEPDIR)/network.Po + -rm -f ./$(DEPDIR)/notify.Po + -rm -f ./$(DEPDIR)/outbound.Po + -rm -f ./$(DEPDIR)/plugin-timer.Po + -rm -f ./$(DEPDIR)/plugin.Po + -rm -f ./$(DEPDIR)/proto-irc.Po + -rm -f ./$(DEPDIR)/server.Po + -rm -f ./$(DEPDIR)/servlist.Po + -rm -f ./$(DEPDIR)/ssl.Po + -rm -f ./$(DEPDIR)/text.Po + -rm -f ./$(DEPDIR)/tree.Po + -rm -f ./$(DEPDIR)/url.Po + -rm -f ./$(DEPDIR)/userlist.Po + -rm -f ./$(DEPDIR)/util.Po + -rm -f ./$(DEPDIR)/xchat.Po + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ + am--depfiles check check-am clean clean-generic clean-libtool \ + clean-noinstLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am + +.PRECIOUS: Makefile + + +textevents: make-te + ./make-te < textevents.in > textevents.h 2> textenums.h + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/etc/wyatt8740/src/common/cfgfiles.c b/etc/wyatt8740/src/common/cfgfiles.c new file mode 100644 index 0000000..65d8c0b --- /dev/null +++ b/etc/wyatt8740/src/common/cfgfiles.c @@ -0,0 +1,1120 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <fcntl.h> +#include <unistd.h> +#include <stdlib.h> +#include <string.h> +#include <stdio.h> +#include <sys/types.h> +#include <sys/stat.h> + +#include "xchat.h" +#include "cfgfiles.h" +#include "util.h" +#include "fe.h" +#include "text.h" +#include "xchatc.h" + +#ifdef WIN32 +#define XCHAT_DIR "X-Chat 2" +#else +#define XCHAT_DIR ".xchat2" +#endif +#define DEF_FONT "Monospace 9" + +void +list_addentry (GSList ** list, char *cmd, char *name) +{ + struct popup *pop; + int cmd_len = 1, name_len; + + /* remove <2.8.0 stuff */ + if (!strcmp (cmd, "away") && !strcmp (name, "BACK")) + return; + + if (cmd) + cmd_len = strlen (cmd) + 1; + name_len = strlen (name) + 1; + + pop = malloc (sizeof (struct popup) + cmd_len + name_len); + pop->name = (char *) pop + sizeof (struct popup); + pop->cmd = pop->name + name_len; + + memcpy (pop->name, name, name_len); + if (cmd) + memcpy (pop->cmd, cmd, cmd_len); + else + pop->cmd[0] = 0; + + *list = g_slist_append (*list, pop); +} + +/* read it in from a buffer to our linked list */ + +static void +list_load_from_data (GSList ** list, char *ibuf, int size) +{ + char cmd[384]; + char name[128]; + char *buf; + int pnt = 0; + + cmd[0] = 0; + name[0] = 0; + + while (buf_get_line (ibuf, &buf, &pnt, size)) + { + if (*buf != '#') + { + if (!strncasecmp (buf, "NAME ", 5)) + { + safe_strcpy (name, buf + 5, sizeof (name)); + } + else if (!strncasecmp (buf, "CMD ", 4)) + { + safe_strcpy (cmd, buf + 4, sizeof (cmd)); + if (*name) + { + list_addentry (list, cmd, name); + cmd[0] = 0; + name[0] = 0; + } + } + } + } +} + +void +list_loadconf (char *file, GSList ** list, char *defaultconf) +{ + char filebuf[256]; + char *ibuf; + int fh; + struct stat st; + + snprintf (filebuf, sizeof (filebuf), "%s/%s", get_xdir_fs (), file); + fh = open (filebuf, O_RDONLY | OFLAGS); + if (fh == -1) + { + if (defaultconf) + list_load_from_data (list, defaultconf, strlen (defaultconf)); + return; + } + if (fstat (fh, &st) != 0) + { + perror ("fstat"); + abort (); + } + + ibuf = malloc (st.st_size); + read (fh, ibuf, st.st_size); + close (fh); + + list_load_from_data (list, ibuf, st.st_size); + + free (ibuf); +} + +void +list_free (GSList ** list) +{ + void *data; + while (*list) + { + data = (void *) (*list)->data; + free (data); + *list = g_slist_remove (*list, data); + } +} + +int +list_delentry (GSList ** list, char *name) +{ + struct popup *pop; + GSList *alist = *list; + + while (alist) + { + pop = (struct popup *) alist->data; + if (!strcasecmp (name, pop->name)) + { + *list = g_slist_remove (*list, pop); + free (pop); + return 1; + } + alist = alist->next; + } + return 0; +} + +char * +cfg_get_str (char *cfg, char *var, char *dest, int dest_len) +{ + while (1) + { + if (!strncasecmp (var, cfg, strlen (var))) + { + char *value, t; + cfg += strlen (var); + while (*cfg == ' ') + cfg++; + if (*cfg == '=') + cfg++; + while (*cfg == ' ') + cfg++; + /*while (*cfg == ' ' || *cfg == '=') + cfg++; */ + value = cfg; + while (*cfg != 0 && *cfg != '\n') + cfg++; + t = *cfg; + *cfg = 0; + safe_strcpy (dest, value, dest_len); + *cfg = t; + return cfg; + } + while (*cfg != 0 && *cfg != '\n') + cfg++; + if (*cfg == 0) + return 0; + cfg++; + if (*cfg == 0) + return 0; + } +} + +static int +cfg_put_str (int fh, char *var, char *value) +{ + char buf[512]; + int len; + + snprintf (buf, sizeof buf, "%s = %s\n", var, value); + len = strlen (buf); + return (write (fh, buf, len) == len); +} + +int +cfg_put_color (int fh, int r, int g, int b, char *var) +{ + char buf[400]; + int len; + + snprintf (buf, sizeof buf, "%s = %04x %04x %04x\n", var, r, g, b); + len = strlen (buf); + return (write (fh, buf, len) == len); +} + +int +cfg_put_int (int fh, int value, char *var) +{ + char buf[400]; + int len; + + if (value == -1) + value = 1; + + snprintf (buf, sizeof buf, "%s = %d\n", var, value); + len = strlen (buf); + return (write (fh, buf, len) == len); +} + +int +cfg_get_color (char *cfg, char *var, int *r, int *g, int *b) +{ + char str[128]; + + if (!cfg_get_str (cfg, var, str, sizeof (str))) + return 0; + + sscanf (str, "%04x %04x %04x", r, g, b); + return 1; +} + +int +cfg_get_int_with_result (char *cfg, char *var, int *result) +{ + char str[128]; + + if (!cfg_get_str (cfg, var, str, sizeof (str))) + { + *result = 0; + return 0; + } + + *result = 1; + return atoi (str); +} + +int +cfg_get_int (char *cfg, char *var) +{ + char str[128]; + + if (!cfg_get_str (cfg, var, str, sizeof (str))) + return 0; + + return atoi (str); +} + +char *xdir_fs = NULL; /* file system encoding */ +char *xdir_utf = NULL; /* utf-8 encoding */ + +#ifdef WIN32 + +#include <windows.h> + +static gboolean +get_reg_str (const char *sub, const char *name, char *out, DWORD len) +{ + HKEY hKey; + DWORD t; + + if (RegOpenKeyEx (HKEY_CURRENT_USER, sub, 0, KEY_READ, &hKey) == + ERROR_SUCCESS) + { + if (RegQueryValueEx (hKey, name, NULL, &t, out, &len) != ERROR_SUCCESS || + t != REG_SZ) + { + RegCloseKey (hKey); + return FALSE; + } + out[len-1] = 0; + RegCloseKey (hKey); + return TRUE; + } + + return FALSE; +} + +char * +get_xdir_fs (void) +{ + if (!xdir_fs) + { + char out[256]; + + if (!get_reg_str ("Software\\Microsoft\\Windows\\CurrentVersion\\" + "Explorer\\Shell Folders", "AppData", out, sizeof (out))) + return "./config"; + xdir_fs = g_strdup_printf ("%s\\" XCHAT_DIR, out); + } + return xdir_fs; +} + +#else + +char * +get_xdir_fs (void) +{ + if (!xdir_fs) + xdir_fs = g_strdup_printf ("%s/" XCHAT_DIR, g_get_home_dir ()); + + return xdir_fs; +} + +#endif /* !WIN32 */ + +char * +get_xdir_utf8 (void) +{ + if (!xdir_utf) /* never free this, keep it for program life time */ + xdir_utf = xchat_filename_to_utf8 (get_xdir_fs (), -1, 0, 0, 0); + + return xdir_utf; +} + +static void +check_prefs_dir (void) +{ + char *dir = get_xdir_fs (); + if (access (dir, F_OK) != 0) + { +#ifdef WIN32 + if (mkdir (dir) != 0) +#else + if (mkdir (dir, S_IRUSR | S_IWUSR | S_IXUSR) != 0) +#endif + fe_message (_("Cannot create ~/.xchat2"), FE_MSG_ERROR); + } +} + +static char * +default_file (void) +{ + static char *dfile = 0; + + if (!dfile) + { + dfile = malloc (strlen (get_xdir_fs ()) + 12); + sprintf (dfile, "%s/xchat.conf", get_xdir_fs ()); + } + return dfile; +} + +/* Keep these sorted!! */ + +const struct prefs vars[] = { + {"auto_save", P_OFFINT (autosave), TYPE_BOOL}, + {"auto_save_url", P_OFFINT (autosave_url), TYPE_BOOL}, + + {"away_auto_unmark", P_OFFINT (auto_unmark_away), TYPE_BOOL}, + {"away_reason", P_OFFSET (awayreason), TYPE_STR}, + {"away_show_message", P_OFFINT (show_away_message), TYPE_BOOL}, + {"away_show_once", P_OFFINT (show_away_once), TYPE_BOOL}, + {"away_size_max", P_OFFINT (away_size_max), TYPE_INT}, + {"away_timeout", P_OFFINT (away_timeout), TYPE_INT}, + {"away_track", P_OFFINT (away_track), TYPE_BOOL}, + + {"completion_amount", P_OFFINT (completion_amount), TYPE_INT}, + {"completion_auto", P_OFFINT (nickcompletion), TYPE_BOOL}, + {"completion_sort", P_OFFINT (completion_sort), TYPE_INT}, + {"completion_suffix", P_OFFSET (nick_suffix), TYPE_STR}, + + {"completion_cinsens", P_OFFINT (completion_cinsens), TYPE_BOOL}, + + {"dcc_auto_chat", P_OFFINT (autodccchat), TYPE_INT}, + {"dcc_auto_resume", P_OFFINT (autoresume), TYPE_BOOL}, + {"dcc_auto_send", P_OFFINT (autodccsend), TYPE_INT}, + {"dcc_blocksize", P_OFFINT (dcc_blocksize), TYPE_INT}, + {"dcc_completed_dir", P_OFFSET (dcc_completed_dir), TYPE_STR}, + {"dcc_dir", P_OFFSET (dccdir), TYPE_STR}, + {"dcc_fast_send", P_OFFINT (fastdccsend), TYPE_BOOL}, + {"dcc_global_max_get_cps", P_OFFINT (dcc_global_max_get_cps), TYPE_INT}, + {"dcc_global_max_send_cps", P_OFFINT (dcc_global_max_send_cps), TYPE_INT}, + {"dcc_ip", P_OFFSET (dcc_ip_str), TYPE_STR}, + {"dcc_ip_from_server", P_OFFINT (ip_from_server), TYPE_BOOL}, + {"dcc_max_get_cps", P_OFFINT (dcc_max_get_cps), TYPE_INT}, + {"dcc_max_send_cps", P_OFFINT (dcc_max_send_cps), TYPE_INT}, + {"dcc_permissions", P_OFFINT (dccpermissions), TYPE_INT}, + {"dcc_port_first", P_OFFINT (first_dcc_send_port), TYPE_INT}, + {"dcc_port_last", P_OFFINT (last_dcc_send_port), TYPE_INT}, + {"dcc_remove", P_OFFINT (dcc_remove), TYPE_BOOL}, + {"dcc_save_nick", P_OFFINT (dccwithnick), TYPE_BOOL}, + {"dcc_send_fillspaces", P_OFFINT (dcc_send_fillspaces), TYPE_BOOL}, + {"dcc_stall_timeout", P_OFFINT (dccstalltimeout), TYPE_INT}, + {"dcc_timeout", P_OFFINT (dcctimeout), TYPE_INT}, + + {"dnsprogram", P_OFFSET (dnsprogram), TYPE_STR}, + + {"flood_ctcp_num", P_OFFINT (ctcp_number_limit), TYPE_INT}, + {"flood_ctcp_time", P_OFFINT (ctcp_time_limit), TYPE_INT}, + {"flood_msg_num", P_OFFINT (msg_number_limit), TYPE_INT}, + {"flood_msg_time", P_OFFINT (msg_time_limit), TYPE_INT}, + + {"gui_auto_open_chat", P_OFFINT (autoopendccchatwindow), TYPE_BOOL}, + {"gui_auto_open_dialog", P_OFFINT (autodialog), TYPE_BOOL}, + {"gui_auto_open_recv", P_OFFINT (autoopendccrecvwindow), TYPE_BOOL}, + {"gui_auto_open_send", P_OFFINT (autoopendccsendwindow), TYPE_BOOL}, + {"gui_dialog_height", P_OFFINT (dialog_height), TYPE_INT}, + {"gui_dialog_left", P_OFFINT (dialog_left), TYPE_INT}, + {"gui_dialog_top", P_OFFINT (dialog_top), TYPE_INT}, + {"gui_dialog_width", P_OFFINT (dialog_width), TYPE_INT}, + {"gui_hide_menu", P_OFFINT (hidemenu), TYPE_BOOL}, + {"gui_input_spell", P_OFFINT (gui_input_spell), TYPE_BOOL}, + {"gui_input_style", P_OFFINT (style_inputbox), TYPE_BOOL}, + {"gui_join_dialog", P_OFFINT (gui_join_dialog), TYPE_BOOL}, + {"gui_lagometer", P_OFFINT (lagometer), TYPE_INT}, + {"gui_mode_buttons", P_OFFINT (chanmodebuttons), TYPE_BOOL}, + {"gui_pane_left_size", P_OFFINT (gui_pane_left_size), TYPE_INT}, + {"gui_pane_right_size", P_OFFINT (gui_pane_right_size), TYPE_INT}, + {"gui_quit_dialog", P_OFFINT (gui_quit_dialog), TYPE_BOOL}, + {"gui_slist_select", P_OFFINT (slist_select), TYPE_INT}, + {"gui_slist_skip", P_OFFINT (slist_skip), TYPE_BOOL}, + {"gui_throttlemeter", P_OFFINT (throttlemeter), TYPE_INT}, + {"gui_topicbar", P_OFFINT (topicbar), TYPE_BOOL}, + {"gui_tray", P_OFFINT (gui_tray), TYPE_BOOL}, + {"gui_tray_flags", P_OFFINT (gui_tray_flags), TYPE_INT}, + {"gui_tweaks", P_OFFINT (gui_tweaks), TYPE_INT}, + {"gui_ulist_buttons", P_OFFINT (userlistbuttons), TYPE_BOOL}, + {"gui_ulist_doubleclick", P_OFFSET (doubleclickuser), TYPE_STR}, + {"gui_ulist_hide", P_OFFINT (hideuserlist), TYPE_BOOL}, + {"gui_ulist_left", P_OFFINT (_gui_ulist_left), TYPE_BOOL}, /* obsolete */ + {"gui_ulist_pos", P_OFFINT (gui_ulist_pos), TYPE_INT}, + {"gui_ulist_resizable", P_OFFINT (paned_userlist), TYPE_BOOL}, + {"gui_ulist_show_hosts", P_OFFINT(showhostname_in_userlist), TYPE_BOOL}, + {"gui_ulist_sort", P_OFFINT (userlist_sort), TYPE_INT}, + {"gui_ulist_style", P_OFFINT (style_namelistgad), TYPE_BOOL}, + {"gui_url_mod", P_OFFINT (gui_url_mod), TYPE_INT}, + {"gui_usermenu", P_OFFINT (gui_usermenu), TYPE_BOOL}, + {"gui_win_height", P_OFFINT (mainwindow_height), TYPE_INT}, + {"gui_win_left", P_OFFINT (mainwindow_left), TYPE_INT}, + {"gui_win_save", P_OFFINT (mainwindow_save), TYPE_BOOL}, + {"gui_win_state", P_OFFINT (gui_win_state), TYPE_INT}, + {"gui_win_top", P_OFFINT (mainwindow_top), TYPE_INT}, + {"gui_win_width", P_OFFINT (mainwindow_width), TYPE_INT}, + +#ifdef WIN32 + {"identd", P_OFFINT (identd), TYPE_BOOL}, +#endif + {"input_balloon_chans", P_OFFINT (input_balloon_chans), TYPE_BOOL}, + {"input_balloon_hilight", P_OFFINT (input_balloon_hilight), TYPE_BOOL}, + {"input_balloon_priv", P_OFFINT (input_balloon_priv), TYPE_BOOL}, + {"input_balloon_time", P_OFFINT (input_balloon_time), TYPE_INT}, + {"input_beep_chans", P_OFFINT (input_beep_chans), TYPE_BOOL}, + {"input_beep_hilight", P_OFFINT (input_beep_hilight), TYPE_BOOL}, + {"input_beep_msg", P_OFFINT (input_beep_priv), TYPE_BOOL}, + {"input_command_char", P_OFFSET (cmdchar), TYPE_STR}, + {"input_filter_beep", P_OFFINT (filterbeep), TYPE_BOOL}, + {"input_flash_chans", P_OFFINT (input_flash_chans), TYPE_BOOL}, + {"input_flash_hilight", P_OFFINT (input_flash_hilight), TYPE_BOOL}, + {"input_flash_priv", P_OFFINT (input_flash_priv), TYPE_BOOL}, + {"input_perc_ascii", P_OFFINT (perc_ascii), TYPE_BOOL}, + {"input_perc_color", P_OFFINT (perc_color), TYPE_BOOL}, + {"input_tray_chans", P_OFFINT (input_tray_chans), TYPE_BOOL}, + {"input_tray_hilight", P_OFFINT (input_tray_hilight), TYPE_BOOL}, + {"input_tray_priv", P_OFFINT (input_tray_priv), TYPE_BOOL}, + + {"irc_auto_rejoin", P_OFFINT (autorejoin), TYPE_BOOL}, + {"irc_ban_type", P_OFFINT (bantype), TYPE_INT}, + {"irc_conf_mode", P_OFFINT (confmode), TYPE_BOOL}, + {"irc_extra_hilight", P_OFFSET (irc_extra_hilight), TYPE_STR}, + {"irc_hide_version", P_OFFINT (hidever), TYPE_BOOL}, + {"irc_id_ntext", P_OFFSET (irc_id_ntext), TYPE_STR}, + {"irc_id_ytext", P_OFFSET (irc_id_ytext), TYPE_STR}, + {"irc_invisible", P_OFFINT (invisible), TYPE_BOOL}, + {"irc_join_delay", P_OFFINT (irc_join_delay), TYPE_INT}, + {"irc_logging", P_OFFINT (logging), TYPE_BOOL}, + {"irc_logmask", P_OFFSET (logmask), TYPE_STR}, + {"irc_nick1", P_OFFSET (nick1), TYPE_STR}, + {"irc_nick2", P_OFFSET (nick2), TYPE_STR}, + {"irc_nick3", P_OFFSET (nick3), TYPE_STR}, + {"irc_nick_hilight", P_OFFSET (irc_nick_hilight), TYPE_STR}, + {"irc_no_hilight", P_OFFSET (irc_no_hilight), TYPE_STR}, + {"irc_part_reason", P_OFFSET (partreason), TYPE_STR}, + {"irc_quit_reason", P_OFFSET (quitreason), TYPE_STR}, + {"irc_raw_modes", P_OFFINT (raw_modes), TYPE_BOOL}, + {"irc_real_name", P_OFFSET (realname), TYPE_STR}, + {"irc_servernotice", P_OFFINT (servernotice), TYPE_BOOL}, + {"irc_skip_motd", P_OFFINT (skipmotd), TYPE_BOOL}, + {"irc_user_name", P_OFFSET (username), TYPE_STR}, + {"irc_wallops", P_OFFINT (wallops), TYPE_BOOL}, + {"irc_who_join", P_OFFINT (userhost), TYPE_BOOL}, + {"irc_whois_front", P_OFFINT (irc_whois_front), TYPE_BOOL}, + + {"net_auto_reconnect", P_OFFINT (autoreconnect), TYPE_BOOL}, + {"net_auto_reconnectonfail", P_OFFINT (autoreconnectonfail), TYPE_BOOL}, + {"net_bind_host", P_OFFSET (hostname), TYPE_STR}, + {"net_ping_timeout", P_OFFINT (pingtimeout), TYPE_INT}, + {"net_proxy_auth", P_OFFINT (proxy_auth), TYPE_BOOL}, + {"net_proxy_host", P_OFFSET (proxy_host), TYPE_STR}, + {"net_proxy_pass", P_OFFSET (proxy_pass), TYPE_STR}, + {"net_proxy_port", P_OFFINT (proxy_port), TYPE_INT}, + {"net_proxy_type", P_OFFINT (proxy_type), TYPE_INT}, + {"net_proxy_use", P_OFFINT (proxy_use), TYPE_INT}, + {"net_proxy_user", P_OFFSET (proxy_user), TYPE_STR}, + + {"net_reconnect_delay", P_OFFINT (recon_delay), TYPE_INT}, + {"net_throttle", P_OFFINT (throttle), TYPE_BOOL}, + + {"notify_timeout", P_OFFINT (notify_timeout), TYPE_INT}, + {"notify_whois_online", P_OFFINT (whois_on_notifyonline), TYPE_BOOL}, + + {"perl_warnings", P_OFFINT (perlwarnings), TYPE_BOOL}, + + {"sound_command", P_OFFSET (soundcmd), TYPE_STR}, + {"sound_dir", P_OFFSET (sounddir), TYPE_STR}, + {"stamp_log", P_OFFINT (timestamp_logs), TYPE_BOOL}, + {"stamp_log_format", P_OFFSET (timestamp_log_format), TYPE_STR}, + {"stamp_text", P_OFFINT (timestamp), TYPE_BOOL}, + {"stamp_text_format", P_OFFSET (stamp_format), TYPE_STR}, + + {"tab_chans", P_OFFINT (tabchannels), TYPE_BOOL}, + {"tab_dialogs", P_OFFINT (privmsgtab), TYPE_BOOL}, + {"tab_layout", P_OFFINT (tab_layout), TYPE_INT}, + {"tab_new_to_front", P_OFFINT (newtabstofront), TYPE_INT}, + {"tab_notices", P_OFFINT (notices_tabs), TYPE_BOOL}, + {"tab_pos", P_OFFINT (tab_pos), TYPE_INT}, + {"tab_position", P_OFFINT (_tabs_position), TYPE_INT}, /* obsolete */ + {"tab_server", P_OFFINT (use_server_tab), TYPE_BOOL}, + {"tab_small", P_OFFINT (tab_small), TYPE_INT}, + {"tab_sort", P_OFFINT (tab_sort), TYPE_BOOL}, + {"tab_trunc", P_OFFINT (truncchans), TYPE_INT}, + {"tab_utils", P_OFFINT (windows_as_tabs), TYPE_BOOL}, + + {"text_background", P_OFFSET (background), TYPE_STR}, + {"text_color_nicks", P_OFFINT (colorednicks), TYPE_BOOL}, + {"text_font", P_OFFSET (font_normal), TYPE_STR}, + {"text_indent", P_OFFINT (indent_nicks), TYPE_BOOL}, + {"text_max_indent", P_OFFINT (max_auto_indent), TYPE_INT}, + {"text_max_lines", P_OFFINT (max_lines), TYPE_INT}, + {"text_replay", P_OFFINT (text_replay), TYPE_BOOL}, + {"text_show_marker", P_OFFINT (show_marker), TYPE_BOOL}, + {"text_show_sep", P_OFFINT (show_separator), TYPE_BOOL}, + {"text_stripcolor", P_OFFINT (stripcolor), TYPE_BOOL}, + {"text_thin_sep", P_OFFINT (thin_separator), TYPE_BOOL}, + {"text_tint_blue", P_OFFINT (tint_blue), TYPE_INT}, + {"text_tint_green", P_OFFINT (tint_green), TYPE_INT}, + {"text_tint_red", P_OFFINT (tint_red), TYPE_INT}, + {"text_transparent", P_OFFINT (transparent), TYPE_BOOL}, + {"text_wordwrap", P_OFFINT (wordwrap), TYPE_BOOL}, + + {0, 0, 0}, +}; + +static char * +convert_with_fallback (const char *str, const char *fallback) +{ + char *utf; + + utf = g_locale_to_utf8 (str, -1, 0, 0, 0); + if (!utf) + { + /* this can happen if CHARSET envvar is set wrong */ + /* maybe it's already utf8 (breakage!) */ + if (!g_utf8_validate (str, -1, NULL)) + utf = g_strdup (fallback); + else + utf = g_strdup (str); + } + + return utf; +} + +void +load_config (void) +{ + struct stat st; + char *cfg, *sp; + const char *username, *realname; + int res, val, i, fh; + + check_prefs_dir (); + username = g_get_user_name (); + if (!username) + username = "root"; + + realname = g_get_real_name (); + if ((realname && realname[0] == 0) || !realname) + realname = username; + + username = convert_with_fallback (username, "username"); + realname = convert_with_fallback (realname, "realname"); + + memset (&prefs, 0, sizeof (struct xchatprefs)); + + /* put in default values, anything left out is automatically zero */ + prefs.local_ip = 0xffffffff; + prefs.irc_join_delay = 3; + prefs.show_marker = 1; + prefs.newtabstofront = 2; + prefs.completion_amount = 5; + prefs.away_timeout = 60; + prefs.away_size_max = 300; + prefs.away_track = 1; + prefs.timestamp_logs = 1; + prefs.truncchans = 20; + prefs.autoresume = 1; + prefs.show_away_once = 1; + prefs.indent_nicks = 1; + prefs.thin_separator = 1; + prefs._tabs_position = 2; /* 2 = left */ + prefs.fastdccsend = 1; + prefs.wordwrap = 1; + prefs.autosave = 1; + prefs.autodialog = 1; + prefs.gui_input_spell = 1; + prefs.autoreconnect = 1; + prefs.recon_delay = 10; + prefs.text_replay = 1; + prefs.tabchannels = 1; + prefs.tab_layout = 2; /* 0=Tabs 1=Reserved 2=Tree */ + prefs.tab_sort = 1; + prefs.paned_userlist = 1; + prefs.newtabstofront = 2; + prefs.use_server_tab = 1; + prefs.privmsgtab = 1; + /*prefs.style_inputbox = 1;*/ + prefs.dccpermissions = 0600; + prefs.max_lines = 500; + prefs.mainwindow_width = 640; + prefs.mainwindow_height = 400; + prefs.dialog_width = 500; + prefs.dialog_height = 256; + prefs.gui_join_dialog = 1; + prefs.gui_quit_dialog = 1; + prefs.dcctimeout = 180; + prefs.dccstalltimeout = 60; + prefs.notify_timeout = 15; + prefs.tint_red = + prefs.tint_green = + prefs.tint_blue = 195; + prefs.auto_indent = 1; + prefs.max_auto_indent = 256; + prefs.show_separator = 1; + prefs.dcc_blocksize = 1024; + prefs.throttle = 1; + /*FIXME*/ prefs.msg_time_limit = 30; + prefs.msg_number_limit = 5; + prefs.ctcp_time_limit = 30; + prefs.ctcp_number_limit = 5; + prefs.topicbar = 1; + prefs.lagometer = 1; + prefs.throttlemeter = 1; + prefs.autoopendccrecvwindow = 1; + prefs.autoopendccsendwindow = 1; + prefs.autoopendccchatwindow = 1; + prefs.userhost = 1; + prefs.gui_url_mod = 4; /* ctrl */ + prefs.gui_tray = 1; + prefs.gui_pane_left_size = 100; + prefs.gui_pane_right_size = 100; + prefs.mainwindow_save = 1; + prefs.bantype = 2; + prefs.input_balloon_time = 20; + prefs.input_flash_priv = prefs.input_flash_hilight = 1; + prefs.input_tray_priv = prefs.input_tray_hilight = 1; + prefs.autodccsend = 2; /* browse mode */ +#ifdef WIN32 + prefs.identd = 1; +#endif + strcpy (prefs.stamp_format, "[%H:%M] "); + strcpy (prefs.timestamp_log_format, "%b %d %H:%M:%S "); + strcpy (prefs.logmask, "%n-%c.log"); + strcpy (prefs.nick_suffix, ","); + strcpy (prefs.cmdchar, "/"); + strcpy (prefs.nick1, username); + strcpy (prefs.nick2, username); + strcat (prefs.nick2, "_"); + strcpy (prefs.nick3, username); + strcat (prefs.nick3, "__"); + strcpy (prefs.realname, realname); + strcpy (prefs.username, username); +#ifdef WIN32 + strcpy (prefs.sounddir, "./sounds"); + { + char out[256]; + + if (get_reg_str ("Software\\Microsoft\\Windows\\CurrentVersion\\" + "Explorer\\Shell Folders", "Personal", out, sizeof (out))) + snprintf (prefs.dccdir, sizeof (prefs.dccdir), "%s\\Downloads", out); + else + snprintf (prefs.dccdir, sizeof (prefs.dccdir), "%s\\Downloads", get_xdir_utf8 ()); + } +#else + snprintf (prefs.sounddir, sizeof (prefs.sounddir), "%s/sounds", get_xdir_utf8 ()); + snprintf (prefs.dccdir, sizeof (prefs.dccdir), "%s/downloads", get_xdir_utf8 ()); +#endif + strcpy (prefs.doubleclickuser, "QUOTE WHOIS %s %s"); + strcpy (prefs.awayreason, _("I'm busy")); + strcpy (prefs.quitreason, _("Leaving")); + strcpy (prefs.partreason, prefs.quitreason); + strcpy (prefs.font_normal, DEF_FONT); + strcpy (prefs.dnsprogram, "host"); + strcpy (prefs.irc_no_hilight, "NickServ,ChanServ"); + + g_free ((char *)username); + g_free ((char *)realname); + + fh = open (default_file (), OFLAGS | O_RDONLY); + if (fh != -1) + { + fstat (fh, &st); + cfg = malloc (st.st_size + 1); + cfg[0] = '\0'; + i = read (fh, cfg, st.st_size); + if (i >= 0) + cfg[i] = '\0'; /* make sure cfg is NULL terminated */ + close (fh); + i = 0; + do + { + switch (vars[i].type) + { + case TYPE_STR: + cfg_get_str (cfg, vars[i].name, (char *) &prefs + vars[i].offset, + vars[i].len); + break; + case TYPE_BOOL: + case TYPE_INT: + val = cfg_get_int_with_result (cfg, vars[i].name, &res); + if (res) + *((int *) &prefs + vars[i].offset) = val; + break; + } + i++; + } + while (vars[i].name); + + free (cfg); + + } else + { +#ifndef WIN32 +#ifndef __EMX__ + /* OS/2 uses UID 0 all the time */ + if (getuid () == 0) + fe_message (_("* Running IRC as root is stupid! You should\n" + " create a User Account and use that to login.\n"), FE_MSG_WARN|FE_MSG_WAIT); +#endif +#endif /* !WIN32 */ + + mkdir_utf8 (prefs.dccdir); + mkdir_utf8 (prefs.dcc_completed_dir); + } + if (prefs.mainwindow_height < 138) + prefs.mainwindow_height = 138; + if (prefs.mainwindow_width < 106) + prefs.mainwindow_width = 106; + + sp = strchr (prefs.username, ' '); + if (sp) + sp[0] = 0; /* spaces in username would break the login */ + + /* try to make sense of old ulist/tree position settings */ + if (prefs.gui_ulist_pos == 0) + { + prefs.gui_ulist_pos = 3; /* top right */ + if (prefs._gui_ulist_left) + prefs.gui_ulist_pos = 2; /* bottom left */ + + switch (prefs._tabs_position) + { + case 0: + prefs.tab_pos = 6; /* bottom */ + break; + case 1: + prefs.tab_pos = 5; /* top */ + break; + case 2: + prefs.tab_pos = 1; /* left */ + break; + case 3: + prefs.tab_pos = 4; /* right */ + break; + case 4: + prefs.tab_pos = 1; /* (hidden)left */ + break; + case 5: + if (prefs._gui_ulist_left) + { + prefs.tab_pos = 1; /* above ulist left */ + prefs.gui_ulist_pos = 2; + } + else + { + prefs.tab_pos = 3; /* above ulist right */ + prefs.gui_ulist_pos = 4; + } + break; + } + } +} + +int +save_config (void) +{ + int fh, i; + char *new_config, *config; + + check_prefs_dir (); + + config = default_file (); + new_config = malloc (strlen (config) + 5); + strcpy (new_config, config); + strcat (new_config, ".new"); + + fh = open (new_config, OFLAGS | O_TRUNC | O_WRONLY | O_CREAT, 0600); + if (fh == -1) + { + free (new_config); + return 0; + } + + if (!cfg_put_str (fh, "version", PACKAGE_VERSION)) + { + free (new_config); + return 0; + } + + i = 0; + do + { + switch (vars[i].type) + { + case TYPE_STR: + if (!cfg_put_str (fh, vars[i].name, (char *) &prefs + vars[i].offset)) + { + free (new_config); + return 0; + } + break; + case TYPE_INT: + case TYPE_BOOL: + if (!cfg_put_int (fh, *((int *) &prefs + vars[i].offset), vars[i].name)) + { + free (new_config); + return 0; + } + } + i++; + } + while (vars[i].name); + + if (close (fh) == -1) + { + free (new_config); + return 0; + } + +#ifdef WIN32 + unlink (config); /* win32 can't rename to an existing file */ +#endif + if (rename (new_config, config) == -1) + { + free (new_config); + return 0; + } + free (new_config); + + return 1; +} + +static void +set_showval (session *sess, const struct prefs *var, char *tbuf) +{ + int len, dots, j; + + len = strlen (var->name); + memcpy (tbuf, var->name, len); + dots = 29 - len; + if (dots < 0) + dots = 0; + tbuf[len++] = '\003'; + tbuf[len++] = '2'; + for (j=0;j<dots;j++) + tbuf[j + len] = '.'; + len += j; + switch (var->type) + { + case TYPE_STR: + sprintf (tbuf + len, "\0033:\017 %s\n", + (char *) &prefs + var->offset); + break; + case TYPE_INT: + sprintf (tbuf + len, "\0033:\017 %d\n", + *((int *) &prefs + var->offset)); + break; + case TYPE_BOOL: + if (*((int *) &prefs + var->offset)) + sprintf (tbuf + len, "\0033:\017 %s\n", "ON"); + else + sprintf (tbuf + len, "\0033:\017 %s\n", "OFF"); + break; + } + PrintText (sess, tbuf); +} + +static void +set_list (session * sess, char *tbuf) +{ + int i; + + i = 0; + do + { + set_showval (sess, &vars[i], tbuf); + i++; + } + while (vars[i].name); +} + +int +cfg_get_bool (char *var) +{ + int i = 0; + + do + { + if (!strcasecmp (var, vars[i].name)) + { + return *((int *) &prefs + vars[i].offset); + } + i++; + } + while (vars[i].name); + + return -1; +} + +int +cmd_set (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int wild = FALSE; + int or = FALSE; + int off = FALSE; + int quiet = FALSE; + int erase = FALSE; + int i = 0, finds = 0, found; + int idx = 2; + char *var, *val; + + if (strcasecmp (word[2], "-e") == 0) + { + idx++; + erase = TRUE; + } + + /* turn a bit OFF */ + if (strcasecmp (word[idx], "-off") == 0) + { + idx++; + off = TRUE; + } + + /* turn a bit ON */ + if (strcasecmp (word[idx], "-or") == 0 || strcasecmp (word[idx], "-on") == 0) + { + idx++; + or = TRUE; + } + + if (strcasecmp (word[idx], "-quiet") == 0) + { + idx++; + quiet = TRUE; + } + + var = word[idx]; + val = word_eol[idx+1]; + + if (!*var) + { + set_list (sess, tbuf); + return TRUE; + } + + if ((strchr (var, '*') || strchr (var, '?')) && !*val) + wild = TRUE; + + if (*val == '=') + val++; + + do + { + if (wild) + found = !match (var, vars[i].name); + else + found = strcasecmp (var, vars[i].name); + + if (found == 0) + { + finds++; + switch (vars[i].type) + { + case TYPE_STR: + if (erase || *val) + { + strncpy ((char *) &prefs + vars[i].offset, val, vars[i].len); + ((char *) &prefs)[vars[i].offset + vars[i].len - 1] = 0; + if (!quiet) + PrintTextf (sess, "%s set to: %s\n", var, (char *) &prefs + vars[i].offset); + } else + { + set_showval (sess, &vars[i], tbuf); + } + break; + case TYPE_INT: + case TYPE_BOOL: + if (*val) + { + if (vars[i].type == TYPE_BOOL) + { + if (atoi (val)) + *((int *) &prefs + vars[i].offset) = 1; + else + *((int *) &prefs + vars[i].offset) = 0; + if (!strcasecmp (val, "YES") || !strcasecmp (val, "ON")) + *((int *) &prefs + vars[i].offset) = 1; + if (!strcasecmp (val, "NO") || !strcasecmp (val, "OFF")) + *((int *) &prefs + vars[i].offset) = 0; + } else + { + if (or) + *((int *) &prefs + vars[i].offset) |= atoi (val); + else if (off) + *((int *) &prefs + vars[i].offset) &= ~(atoi (val)); + else + *((int *) &prefs + vars[i].offset) = atoi (val); + } + if (!quiet) + PrintTextf (sess, "%s set to: %d\n", var, + *((int *) &prefs + vars[i].offset)); + } else + { + set_showval (sess, &vars[i], tbuf); + } + break; + } + } + i++; + } + while (vars[i].name); + + if (!finds && !quiet) + PrintText (sess, "No such variable.\n"); + + return TRUE; +} + +int +xchat_open_file (char *file, int flags, int mode, int xof_flags) +{ + char buf[1024]; + + if (xof_flags & XOF_FULLPATH) + { + if (xof_flags & XOF_DOMODE) + return open (file, flags | OFLAGS, mode); + else + return open (file, flags | OFLAGS); + } + + snprintf (buf, sizeof (buf), "%s/%s", get_xdir_fs (), file); + if (xof_flags & XOF_DOMODE) + return open (buf, flags | OFLAGS, mode); + else + return open (buf, flags | OFLAGS); +} + +int +xchat_rename_file (char *oldpath, char *newpath, int xof_flags) +{ + char bufoldpath[1024]; + char bufnewpath[1024]; + + if (xof_flags & XOF_FULLPATH) + return rename (oldpath, newpath); + + snprintf (bufoldpath, sizeof (bufoldpath), "%s/%s", get_xdir_fs (), oldpath); + snprintf (bufnewpath, sizeof (bufnewpath), "%s/%s", get_xdir_fs (), newpath); + return rename (bufoldpath, bufnewpath); +} + +FILE * +xchat_fopen_file (const char *file, const char *mode, int xof_flags) +{ + char buf[1024]; + + if (xof_flags & XOF_FULLPATH) + return fopen (file, mode); + + snprintf (buf, sizeof (buf), "%s/%s", get_xdir_fs (), file); + return fopen (buf, mode); +} diff --git a/etc/wyatt8740/src/common/cfgfiles.h b/etc/wyatt8740/src/common/cfgfiles.h new file mode 100644 index 0000000..7bab1c3 --- /dev/null +++ b/etc/wyatt8740/src/common/cfgfiles.h @@ -0,0 +1,56 @@ +/* cfgfiles.h */ + +#ifndef XCHAT_CFGFILES_H +#define XCHAT_CFGFILES_H + +#include "xchat.h" + +extern char *xdir_fs; +extern char *xdir_utf; + +char *cfg_get_str (char *cfg, char *var, char *dest, int dest_len); +int cfg_get_bool (char *var); +int cfg_get_int_with_result (char *cfg, char *var, int *result); +int cfg_get_int (char *cfg, char *var); +int cfg_put_int (int fh, int value, char *var); +int cfg_get_color (char *cfg, char *var, int *r, int *g, int *b); +int cfg_put_color (int fh, int r, int g, int b, char *var); +char *get_xdir_fs (void); +char *get_xdir_utf8 (void); +void load_config (void); +int save_config (void); +void list_free (GSList ** list); +void list_loadconf (char *file, GSList ** list, char *defaultconf); +int list_delentry (GSList ** list, char *name); +void list_addentry (GSList ** list, char *cmd, char *name); +int cmd_set (session *sess, char *tbuf, char *word[], char *word_eol[]); +int xchat_open_file (char *file, int flags, int mode, int xof_flags); +int xchat_rename_file (char *oldpath, char *newpath, int xof_flags); +FILE *xchat_fopen_file (const char *file, const char *mode, int xof_flags); +#define XOF_DOMODE 1 +#define XOF_FULLPATH 2 + +#define STRUCT_OFFSET_STR(type,field) \ +( (unsigned int) (((char *) (&(((type *) NULL)->field)))- ((char *) NULL)) ) + +#define STRUCT_OFFSET_INT(type,field) \ +( (unsigned int) (((int *) (&(((type *) NULL)->field)))- ((int *) NULL)) ) + +#define P_OFFSET(field) STRUCT_OFFSET_STR(struct xchatprefs, field),sizeof(prefs.field) +#define P_OFFSETNL(field) STRUCT_OFFSET_STR(struct xchatprefs, field) +#define P_OFFINT(field) STRUCT_OFFSET_INT(struct xchatprefs, field),0 +#define P_OFFINTNL(field) STRUCT_OFFSET_INT(struct xchatprefs, field) + +struct prefs +{ + char *name; + unsigned short offset; + unsigned short len; + unsigned short type; +}; + +#define TYPE_STR 0 +#define TYPE_INT 1 +#define TYPE_BOOL 2 + +#endif diff --git a/etc/wyatt8740/src/common/chanopt.c b/etc/wyatt8740/src/common/chanopt.c new file mode 100644 index 0000000..ee1ab77 --- /dev/null +++ b/etc/wyatt8740/src/common/chanopt.c @@ -0,0 +1,465 @@ +/* per-channel/dialog settings :: /CHANOPT */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <unistd.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <errno.h> + +#include "xchat.h" + +#include "cfgfiles.h" +#include "server.h" +#include "text.h" +#include "util.h" +#include "xchatc.h" + + +static GSList *chanopt_list = NULL; +static gboolean chanopt_open = FALSE; +static gboolean chanopt_changed = FALSE; + + +typedef struct +{ + char *name; + char *alias; /* old names from 2.8.4 */ + int offset; +} channel_options; + +#define S_F(xx) STRUCT_OFFSET_STR(struct session,xx) + +static const channel_options chanopt[] = +{ + {"alert_beep", "BEEP", S_F(alert_beep)}, + {"alert_taskbar", NULL, S_F(alert_taskbar)}, + {"alert_tray", "TRAY", S_F(alert_tray)}, + + {"text_hidejoinpart", "CONFMODE", S_F(text_hidejoinpart)}, + {"text_logging", NULL, S_F(text_logging)}, + {"text_scrollback", NULL, S_F(text_scrollback)}, +}; + +#undef S_F + +static char * +chanopt_value (guint8 val) +{ + switch (val) + { + case SET_OFF: + return "OFF"; + case SET_ON: + return "ON"; + default: + return "{unset}"; + } +} + +/* handle the /CHANOPT command */ + +int +chanopt_command (session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int dots, i = 0, j, p = 0; + guint8 val; + int offset = 2; + char *find; + gboolean quiet = FALSE; + int newval = -1; + + if (!strcmp (word[2], "-quiet")) + { + quiet = TRUE; + offset++; + } + + find = word[offset++]; + + if (word[offset][0]) + { + if (!strcasecmp (word[offset], "ON")) + newval = 1; + else if (!strcasecmp (word[offset], "OFF")) + newval = 0; + else if (word[offset][0] == 'u') + newval = SET_DEFAULT; + else + newval = atoi (word[offset]); + } + + if (!quiet) + PrintTextf (sess, "\002Network\002: %s \002Channel\002: %s\n", + sess->server->network ? server_get_network (sess->server, TRUE) : _("<none>"), + sess->channel[0] ? sess->channel : _("<none>")); + + while (i < sizeof (chanopt) / sizeof (channel_options)) + { + if (find[0] == 0 || match (find, chanopt[i].name) || (chanopt[i].alias && match (find, chanopt[i].alias))) + { + if (newval != -1) /* set new value */ + { + *(guint8 *)G_STRUCT_MEMBER_P(sess, chanopt[i].offset) = newval; + } + + if (!quiet) /* print value */ + { + strcpy (tbuf, chanopt[i].name); + p = strlen (tbuf); + + tbuf[p++] = 3; + tbuf[p++] = '2'; + + dots = 20 - strlen (chanopt[i].name); + + for (j = 0; j < dots; j++) + tbuf[p++] = '.'; + tbuf[p++] = 0; + + val = G_STRUCT_MEMBER (guint8, sess, chanopt[i].offset); + PrintTextf (sess, "%s\0033:\017 %s", tbuf, chanopt_value (val)); + } + } + i++; + } + + return TRUE; +} + +/* is a per-channel setting set? Or is it UNSET and + * the global version is set? */ + +gboolean +chanopt_is_set (unsigned int global, guint8 per_chan_setting) +{ + if (per_chan_setting == SET_DEFAULT) + return global; + + return per_chan_setting; +} + +/* additive version */ + +gboolean +chanopt_is_set_a (unsigned int global, guint8 per_chan_setting) +{ + if (per_chan_setting == SET_DEFAULT) + return global; + + return per_chan_setting || global; +} + +/* === below is LOADING/SAVING stuff only === */ + +typedef struct +{ + /* Per-Channel Alerts */ + /* use a byte, because we need a pointer to each element */ + guint8 alert_beep; + guint8 alert_taskbar; + guint8 alert_tray; + + /* Per-Channel Settings */ + guint8 text_hidejoinpart; + guint8 text_logging; + guint8 text_scrollback; + + char *network; + char *channel; + +} chanopt_in_memory; + + +static chanopt_in_memory * +chanopt_find (char *network, char *channel, gboolean add_new) +{ + GSList *list; + chanopt_in_memory *co; + int i; + + for (list = chanopt_list; list; list = list->next) + { + co = list->data; + if (!strcasecmp (co->channel, channel) && + !strcasecmp (co->network, network)) + return co; + } + + if (!add_new) + return NULL; + + /* allocate a new one */ + co = g_malloc0 (sizeof (chanopt_in_memory)); + co->channel = g_strdup (channel); + co->network = g_strdup (network); + + /* set all values to SET_DEFAULT */ + i = 0; + while (i < sizeof (chanopt) / sizeof (channel_options)) + { + *(guint8 *)G_STRUCT_MEMBER_P(co, chanopt[i].offset) = SET_DEFAULT; + i++; + } + + chanopt_list = g_slist_prepend (chanopt_list, co); + chanopt_changed = TRUE; + + return co; +} + +static void +chanopt_add_opt (chanopt_in_memory *co, char *var, int new_value) +{ + int i; + + i = 0; + while (i < sizeof (chanopt) / sizeof (channel_options)) + { + if (!strcmp (var, chanopt[i].name)) + { + *(guint8 *)G_STRUCT_MEMBER_P(co, chanopt[i].offset) = new_value; + + } + i++; + } +} + +/* load chanopt.conf from disk into our chanopt_list GSList */ + +static void +chanopt_load_all (void) +{ + int fh; + char buf[256]; + char *eq; + char *network = NULL; + chanopt_in_memory *current = NULL; + + /* 1. load the old file into our GSList */ + fh = xchat_open_file ("chanopt.conf", O_RDONLY, 0, 0); + if (fh != -1) + { + while (waitline (fh, buf, sizeof buf, FALSE) != -1) + { + eq = strchr (buf, '='); + if (!eq) + continue; + eq[0] = 0; + + if (eq != buf && eq[-1] == ' ') + eq[-1] = 0; + + if (!strcmp (buf, "network")) + { + g_free (network); + network = g_strdup (eq + 2); + } + else if (!strcmp (buf, "channel")) + { + current = chanopt_find (network, eq + 2, TRUE); + chanopt_changed = FALSE; + } + else + { + if (current) + chanopt_add_opt (current, buf, atoi (eq + 2)); + } + + } + close (fh); + g_free (network); + } +} + +void +chanopt_load (session *sess) +{ + int i; + guint8 val; + chanopt_in_memory *co; + char *network; + + if (sess->channel[0] == 0) + return; + + network = server_get_network (sess->server, FALSE); + if (!network) + return; + + if (!chanopt_open) + { + chanopt_open = TRUE; + chanopt_load_all (); + } + + co = chanopt_find (network, sess->channel, FALSE); + if (!co) + return; + + /* fill in all the sess->xxxxx fields */ + i = 0; + while (i < sizeof (chanopt) / sizeof (channel_options)) + { + val = G_STRUCT_MEMBER(guint8, co, chanopt[i].offset); + *(guint8 *)G_STRUCT_MEMBER_P(sess, chanopt[i].offset) = val; + i++; + } +} + +void +chanopt_save (session *sess) +{ + int i; + guint8 vals; + guint8 valm; + chanopt_in_memory *co; + char *network; + + if (sess->channel[0] == 0) + return; + + network = server_get_network (sess->server, FALSE); + if (!network) + return; + + /* 2. reconcile sess with what we loaded from disk */ + + co = chanopt_find (network, sess->channel, TRUE); + + i = 0; + while (i < sizeof (chanopt) / sizeof (channel_options)) + { + vals = G_STRUCT_MEMBER(guint8, sess, chanopt[i].offset); + valm = G_STRUCT_MEMBER(guint8, co, chanopt[i].offset); + + if (vals != valm) + { + *(guint8 *)G_STRUCT_MEMBER_P(co, chanopt[i].offset) = vals; + chanopt_changed = TRUE; + } + + i++; + } +} + +static int +chanopt_save_one_channel (chanopt_in_memory *co, int fh) +{ + int i; + char buf[256]; + guint8 val; + + snprintf (buf, sizeof (buf), "%s = %s\n", "network", co->network); + if( write (fh, buf, strlen (buf)) <= 0 ) + return FALSE; + + snprintf (buf, sizeof (buf), "%s = %s\n", "channel", co->channel); + if( write (fh, buf, strlen (buf)) <= 0 ) + return FALSE; + + i = 0; + while (i < sizeof (chanopt) / sizeof (channel_options)) + { + val = G_STRUCT_MEMBER (guint8, co, chanopt[i].offset); + if (val != SET_DEFAULT) + { + snprintf (buf, sizeof (buf), "%s = %d\n", chanopt[i].name, val); + if( write (fh, buf, strlen (buf)) <= 0 ) + return FALSE; + } + i++; + } + + return TRUE; +} + +void +chanopt_save_all (void) +{ + int i; + int num_saved; + int fh; + ssize_t nb; + GSList *list; + chanopt_in_memory *co; + guint8 val; + + if (!chanopt_list || !chanopt_changed) + { + return; + } + + fh = xchat_open_file ("chanopt.conf.bug147832", O_TRUNC | O_WRONLY | O_CREAT, 0600, XOF_DOMODE); + if (fh == -1) + { + return; + } + + nb = 1; + + for (num_saved = 0, list = chanopt_list; list; list = list->next) + { + co = list->data; + + i = 0; + while (i < sizeof (chanopt) / sizeof (channel_options)) + { + val = G_STRUCT_MEMBER (guint8, co, chanopt[i].offset); + /* not using global/default setting, must save */ + if (val != SET_DEFAULT) + { + if (num_saved != 0) + if( nb > 0 ) nb = write (fh, "\n", 1); + + if( nb > 0 ) + if( chanopt_save_one_channel (co, fh) != TRUE ) + nb = -1; + num_saved++; + goto cont; + } + i++; + } + +cont: + ; + } + + if( nb <= 0 ) + { + fprintf( stderr, "chanopt_save_all: write() failed\n" ); + close( fh ); + return; + } + + if( close (fh) != 0 ) + { + perror( "chanopt_save_all: close() failed" ); + return; + } + + if( xchat_rename_file( "chanopt.conf.bug147832", "chanopt.conf", XOF_DOMODE ) != 0 ) + { + perror( "chanopt_save_all: xchat_rename_file() failed" ); + return; + } + + for (list = chanopt_list; list; list = list->next) + { + co = list->data; + + g_free (co->network); + g_free (co->channel); + g_free (co); + } + + /* we're quiting, no need to free */ + + /*g_slist_free (chanopt_list); + chanopt_list = NULL; + + chanopt_open = FALSE; + chanopt_changed = FALSE;*/ +} diff --git a/etc/wyatt8740/src/common/chanopt.h b/etc/wyatt8740/src/common/chanopt.h new file mode 100644 index 0000000..90ca86c --- /dev/null +++ b/etc/wyatt8740/src/common/chanopt.h @@ -0,0 +1,6 @@ +int chanopt_command (session *sess, char *tbuf, char *word[], char *word_eol[]); +gboolean chanopt_is_set (unsigned int global, guint8 per_chan_setting); +gboolean chanopt_is_set_a (unsigned int global, guint8 per_chan_setting); +void chanopt_save_all (void); +void chanopt_save (session *sess); +void chanopt_load (session *sess); diff --git a/etc/wyatt8740/src/common/ctcp.c b/etc/wyatt8740/src/common/ctcp.c new file mode 100644 index 0000000..574cda7 --- /dev/null +++ b/etc/wyatt8740/src/common/ctcp.c @@ -0,0 +1,191 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <string.h> +#include <unistd.h> +#include <stdlib.h> + +#include "xchat.h" +#include "cfgfiles.h" +#include "util.h" +#include "modes.h" +#include "outbound.h" +#include "ignore.h" +#include "inbound.h" +#include "dcc.h" +#include "text.h" +#include "ctcp.h" +#include "server.h" +#include "xchatc.h" + + +static void +ctcp_reply (session *sess, char *nick, char *word[], char *word_eol[], + char *conf) +{ + char tbuf[4096]; /* can receive 2048 from IRC, so this is enough */ + + conf = strdup (conf); + /* process %C %B etc */ + check_special_chars (conf, TRUE); + auto_insert (tbuf, sizeof (tbuf), conf, word, word_eol, "", "", word_eol[5], + server_get_network (sess->server, TRUE), "", "", nick); + free (conf); + handle_command (sess, tbuf, FALSE); +} + +static int +ctcp_check (session *sess, char *nick, char *word[], char *word_eol[], + char *ctcp) +{ + int ret = 0; + char *po; + struct popup *pop; + GSList *list = ctcp_list; + + po = strchr (ctcp, '\001'); + if (po) + *po = 0; + + po = strchr (word_eol[5], '\001'); + if (po) + *po = 0; + + while (list) + { + pop = (struct popup *) list->data; + if (!strcasecmp (ctcp, pop->name)) + { + ctcp_reply (sess, nick, word, word_eol, pop->cmd); + ret = 1; + } + list = list->next; + } + return ret; +} + +void +ctcp_handle (session *sess, char *to, char *nick, char *ip, + char *msg, char *word[], char *word_eol[], int id) +{ + char *po; + session *chansess; + server *serv = sess->server; + char outbuf[1024]; + int ctcp_offset = 2; + + if (serv->have_idmsg && (word[4][1] == '+' || word[4][1] == '-') ) + ctcp_offset = 3; + + /* consider DCC to be different from other CTCPs */ + if (!strncasecmp (msg, "DCC", 3)) + { + /* but still let CTCP replies override it */ + if (!ctcp_check (sess, nick, word, word_eol, word[4] + ctcp_offset)) + { + if (!ignore_check (word[1], IG_DCC)) + handle_dcc (sess, nick, word, word_eol); + } + return; + } + + /* consider ACTION to be different from other CTCPs. Check + ignore as if it was a PRIV/CHAN. */ + if (!strncasecmp (msg, "ACTION ", 7)) + { + if (is_channel (serv, to)) + { + /* treat a channel action as a CHAN */ + if (ignore_check (word[1], IG_CHAN)) + return; + } else + { + /* treat a private action as a PRIV */ + if (ignore_check (word[1], IG_PRIV)) + return; + } + + /* but still let CTCP replies override it */ + if (ctcp_check (sess, nick, word, word_eol, word[4] + ctcp_offset)) + goto generic; + + inbound_action (sess, to, nick, ip, msg + 7, FALSE, id); + return; + } + + if (ignore_check (word[1], IG_CTCP)) + return; + + if (!strcasecmp (msg, "VERSION") && !prefs.hidever) + { + snprintf (outbuf, sizeof (outbuf), "VERSION xchat "PACKAGE_VERSION" %s", + get_cpu_str ()); + serv->p_nctcp (serv, nick, outbuf); + } + + if (!ctcp_check (sess, nick, word, word_eol, word[4] + ctcp_offset)) + { + if (!strncasecmp (msg, "SOUND", 5)) + { + po = strchr (word[5], '\001'); + if (po) + po[0] = 0; + + if (is_channel (sess->server, to)) + { + chansess = find_channel (sess->server, to); + if (!chansess) + chansess = sess; + + EMIT_SIGNAL (XP_TE_CTCPSNDC, chansess, word[5], + nick, to, NULL, 0); + } else + { + EMIT_SIGNAL (XP_TE_CTCPSND, sess->server->front_session, word[5], + nick, NULL, NULL, 0); + } + + /* don't let IRCers specify path */ +#ifdef WIN32 + if (strchr (word[5], '/') == NULL && strchr (word[5], '\\') == NULL) +#else + if (strchr (word[5], '/') == NULL) +#endif + sound_play (word[5], TRUE); + return; + } + } + +generic: + po = strchr (msg, '\001'); + if (po) + po[0] = 0; + + if (!is_channel (sess->server, to)) + { + EMIT_SIGNAL (XP_TE_CTCPGEN, sess->server->front_session, msg, nick, + NULL, NULL, 0); + } else + { + chansess = find_channel (sess->server, to); + if (!chansess) + chansess = sess; + EMIT_SIGNAL (XP_TE_CTCPGENC, chansess, msg, nick, to, NULL, 0); + } +} diff --git a/etc/wyatt8740/src/common/ctcp.h b/etc/wyatt8740/src/common/ctcp.h new file mode 100644 index 0000000..9acd80e --- /dev/null +++ b/etc/wyatt8740/src/common/ctcp.h @@ -0,0 +1,6 @@ +#ifndef XCHAT_CTCP_H +#define XCHAT_CTCP_H + +void ctcp_handle (session *sess, char *to, char *nick, char *ip, char *msg, char *word[], char *word_eol[], int id); + +#endif diff --git a/etc/wyatt8740/src/common/dbus/Makefile.am b/etc/wyatt8740/src/common/dbus/Makefile.am new file mode 100644 index 0000000..05ee9de --- /dev/null +++ b/etc/wyatt8740/src/common/dbus/Makefile.am @@ -0,0 +1,56 @@ +noinst_LIBRARIES = libxchatdbus.a +libxchatdbus_a_SOURCES = \ + dbus-plugin.c \ + dbus-plugin.h \ + dbus-client.c \ + dbus-client.h + +EXTRA_DIST = \ + remote-object.xml \ + apps_xchat_url_handler.schemas \ + marshallers.list \ + example.py \ + org.xchat.service.service.in \ + README + +BUILT_SOURCES = \ + marshallers.h \ + remote-object-glue.h + +CLEANFILES = $(BUILT_SOURCES) + +INCLUDES = $(COMMON_CFLAGS) $(DBUS_CFLAGS) + +noinst_PROGRAMS = example +example_SOURCES = example.c +example_LDADD = $(DBUS_LIBS) $(GLIB_LIBS) + +remote-object-glue.h: remote-object.xml + $(LIBTOOL) --mode=execute $(DBUS_BINDING_TOOL) --prefix=remote_object --mode=glib-server --output=$@ $< + +marshallers.h: marshallers.list + $(LIBTOOL) --mode=execute $(GLIB_GENMARSHAL) --header --body $< > $@ + +# Dbus service file +servicedir = $(DBUS_SERVICES_DIR) +service_in_files = org.xchat.service.service.in +service_DATA = $(service_in_files:.service.in=.service) + +# Rule to make the service file with bindir expanded +$(service_DATA): $(service_in_files) Makefile + @sed -e "s|\@bindir\@|$(bindir)|" $< > $@ + +if DO_GCONF +GCONF_SCHEMA_CONFIG_SOURCE = `$(GCONFTOOL) --get-default-source` +GCONF_SCHEMA_FILE_DIR = $(sysconfdir)/gconf/schemas +schemadir = $(GCONF_SCHEMA_FILE_DIR) +schema_DATA = apps_xchat_url_handler.schemas +install-data-local: + if test -z "$(DESTDIR)" ; then \ + for p in $(schema_DATA) ; do \ + GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $(srcdir)/$$p; \ + done \ + fi +else +install-data-local: +endif diff --git a/etc/wyatt8740/src/common/dbus/Makefile.in b/etc/wyatt8740/src/common/dbus/Makefile.in new file mode 100644 index 0000000..905ee36 --- /dev/null +++ b/etc/wyatt8740/src/common/dbus/Makefile.in @@ -0,0 +1,815 @@ +# Makefile.in generated by automake 1.16.5 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2021 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +noinst_PROGRAMS = example$(EXEEXT) +subdir = src/common/dbus +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +PROGRAMS = $(noinst_PROGRAMS) +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +AM_V_AR = $(am__v_AR_@AM_V@) +am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) +am__v_AR_0 = @echo " AR " $@; +am__v_AR_1 = +libxchatdbus_a_AR = $(AR) $(ARFLAGS) +libxchatdbus_a_LIBADD = +am_libxchatdbus_a_OBJECTS = dbus-plugin.$(OBJEXT) \ + dbus-client.$(OBJEXT) +libxchatdbus_a_OBJECTS = $(am_libxchatdbus_a_OBJECTS) +am_example_OBJECTS = example.$(OBJEXT) +example_OBJECTS = $(am_example_OBJECTS) +am__DEPENDENCIES_1 = +example_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = ./$(DEPDIR)/dbus-client.Po \ + ./$(DEPDIR)/dbus-plugin.Po ./$(DEPDIR)/example.Po +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libxchatdbus_a_SOURCES) $(example_SOURCES) +DIST_SOURCES = $(libxchatdbus_a_SOURCES) $(example_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(schemadir)" "$(DESTDIR)$(servicedir)" +DATA = $(schema_DATA) $(service_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp README +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COMMON_CFLAGS = @COMMON_CFLAGS@ +COMMON_LIBS = @COMMON_LIBS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DBUS_BINDING_TOOL = @DBUS_BINDING_TOOL@ +DBUS_CFLAGS = @DBUS_CFLAGS@ +DBUS_LIBS = @DBUS_LIBS@ +DBUS_SERVICES_DIR = @DBUS_SERVICES_DIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ETAGS = @ETAGS@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FILECMD = @FILECMD@ +GCONFTOOL = @GCONFTOOL@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLIB_CFLAGS = @GLIB_CFLAGS@ +GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GLIB_LIBS = @GLIB_LIBS@ +GLIB_MKENUMS = @GLIB_MKENUMS@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GOBJECT_QUERY = @GOBJECT_QUERY@ +GREP = @GREP@ +GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ +GTKSPELL_LIBS = @GTKSPELL_LIBS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_LIBS = @GTK_LIBS@ +GUI_CFLAGS = @GUI_CFLAGS@ +GUI_LIBS = @GUI_LIBS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSEXY_CFLAGS = @LIBSEXY_CFLAGS@ +LIBSEXY_LIBS = @LIBSEXY_LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL_CFLAGS = @PERL_CFLAGS@ +PERL_LDFLAGS = @PERL_LDFLAGS@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLUGIN_INCLUDES = @PLUGIN_INCLUDES@ +POSUB = @POSUB@ +PY_CFLAGS = @PY_CFLAGS@ +PY_LIBS = @PY_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TCL_CFLAGS = @TCL_CFLAGS@ +TCL_LIBS = @TCL_LIBS@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gdkpixbufcsourcepath = @gdkpixbufcsourcepath@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +perlpath = @perlpath@ +pkgconfigpath = @pkgconfigpath@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pythonpath = @pythonpath@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sedpath = @sedpath@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +unamepath = @unamepath@ +xchatlibdir = @xchatlibdir@ +noinst_LIBRARIES = libxchatdbus.a +libxchatdbus_a_SOURCES = \ + dbus-plugin.c \ + dbus-plugin.h \ + dbus-client.c \ + dbus-client.h + +EXTRA_DIST = \ + remote-object.xml \ + apps_xchat_url_handler.schemas \ + marshallers.list \ + example.py \ + org.xchat.service.service.in \ + README + +BUILT_SOURCES = \ + marshallers.h \ + remote-object-glue.h + +CLEANFILES = $(BUILT_SOURCES) +INCLUDES = $(COMMON_CFLAGS) $(DBUS_CFLAGS) +example_SOURCES = example.c +example_LDADD = $(DBUS_LIBS) $(GLIB_LIBS) + +# Dbus service file +servicedir = $(DBUS_SERVICES_DIR) +service_in_files = org.xchat.service.service.in +service_DATA = $(service_in_files:.service.in=.service) +@DO_GCONF_TRUE@GCONF_SCHEMA_CONFIG_SOURCE = `$(GCONFTOOL) --get-default-source` +@DO_GCONF_TRUE@GCONF_SCHEMA_FILE_DIR = $(sysconfdir)/gconf/schemas +@DO_GCONF_TRUE@schemadir = $(GCONF_SCHEMA_FILE_DIR) +@DO_GCONF_TRUE@schema_DATA = apps_xchat_url_handler.schemas +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/common/dbus/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/common/dbus/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) + +libxchatdbus.a: $(libxchatdbus_a_OBJECTS) $(libxchatdbus_a_DEPENDENCIES) $(EXTRA_libxchatdbus_a_DEPENDENCIES) + $(AM_V_at)-rm -f libxchatdbus.a + $(AM_V_AR)$(libxchatdbus_a_AR) libxchatdbus.a $(libxchatdbus_a_OBJECTS) $(libxchatdbus_a_LIBADD) + $(AM_V_at)$(RANLIB) libxchatdbus.a + +example$(EXEEXT): $(example_OBJECTS) $(example_DEPENDENCIES) $(EXTRA_example_DEPENDENCIES) + @rm -f example$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(example_OBJECTS) $(example_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus-client.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus-plugin.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/example.Po@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-schemaDATA: $(schema_DATA) + @$(NORMAL_INSTALL) + @list='$(schema_DATA)'; test -n "$(schemadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(schemadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(schemadir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(schemadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(schemadir)" || exit $$?; \ + done + +uninstall-schemaDATA: + @$(NORMAL_UNINSTALL) + @list='$(schema_DATA)'; test -n "$(schemadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(schemadir)'; $(am__uninstall_files_from_dir) +install-serviceDATA: $(service_DATA) + @$(NORMAL_INSTALL) + @list='$(service_DATA)'; test -n "$(servicedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(servicedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(servicedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(servicedir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(servicedir)" || exit $$?; \ + done + +uninstall-serviceDATA: + @$(NORMAL_UNINSTALL) + @list='$(service_DATA)'; test -n "$(servicedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(servicedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(PROGRAMS) $(LIBRARIES) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(schemadir)" "$(DESTDIR)$(servicedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ + clean-noinstPROGRAMS mostlyclean-am + +distclean: distclean-am + -rm -f ./$(DEPDIR)/dbus-client.Po + -rm -f ./$(DEPDIR)/dbus-plugin.Po + -rm -f ./$(DEPDIR)/example.Po + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-data-local install-schemaDATA \ + install-serviceDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f ./$(DEPDIR)/dbus-client.Po + -rm -f ./$(DEPDIR)/dbus-plugin.Po + -rm -f ./$(DEPDIR)/example.Po + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-schemaDATA uninstall-serviceDATA + +.MAKE: all check install install-am install-exec install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ + clean-generic clean-libtool clean-noinstLIBRARIES \ + clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am \ + install-data-local install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-schemaDATA \ + install-serviceDATA install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am uninstall-schemaDATA uninstall-serviceDATA + +.PRECIOUS: Makefile + + +remote-object-glue.h: remote-object.xml + $(LIBTOOL) --mode=execute $(DBUS_BINDING_TOOL) --prefix=remote_object --mode=glib-server --output=$@ $< + +marshallers.h: marshallers.list + $(LIBTOOL) --mode=execute $(GLIB_GENMARSHAL) --header --body $< > $@ + +# Rule to make the service file with bindir expanded +$(service_DATA): $(service_in_files) Makefile + @sed -e "s|\@bindir\@|$(bindir)|" $< > $@ +@DO_GCONF_TRUE@install-data-local: +@DO_GCONF_TRUE@ if test -z "$(DESTDIR)" ; then \ +@DO_GCONF_TRUE@ for p in $(schema_DATA) ; do \ +@DO_GCONF_TRUE@ GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $(srcdir)/$$p; \ +@DO_GCONF_TRUE@ done \ +@DO_GCONF_TRUE@ fi +@DO_GCONF_FALSE@install-data-local: + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/etc/wyatt8740/src/common/dbus/README b/etc/wyatt8740/src/common/dbus/README new file mode 100644 index 0000000..d61cf4e --- /dev/null +++ b/etc/wyatt8740/src/common/dbus/README @@ -0,0 +1,198 @@ +For more help you can see the xchat plugin interface documentation. +http://www.xchat.org/docs/plugin20.html +WARNING: The dbus interface may change in the future. + +You can use the "/org/xchat/Remote" object with interface "org.xchat.plugin", +but his context can be changed by other clients at any moment and +you may receive signal asked by other clients. So for more complex usage it's +better to get your own remote object. Using "Connect" method on interface +"org.xchat.connection" + +Available methods on org.xchat.connection interface: + +"Connect" + - Parameters: + - gchar*: filename + - gchar*: name + - gchar*: description + - gchar*: version + - Returns: + - gchar*: Your own object's path. + +"Disconnect" + No parameter, no return value. It frees your remote object. + +Available methods on org.xchat.plugin interface: + +"Command" + - Parameters: + - gchar*: the command name without the "/". (e.g. "nick pseudo") + +"Print" + - Parameters: + - gchar*: text to print on the xchat window. + +"FindContext" + - Parameters: + - gchar*: the server name. Can be NULL. + - gchar*: the channel name. Can be NULL. + - Returns: + - guint: context ID + +"GetContext" + - Returns: + - guint: current context's ID + +"SetContext" + - Parameters: + - guint: context ID to switch, returned by "FindContext" or "GetContext" + - Returns: + - gboolean: 1 for success, 0 for failure. + +"GetInfo" + - Parameters: + - gchar*: ID of the information you want. + - Returns: + - gchar*: information you requested. + +"GetPrefs" + - Parameters: + - gchar*: Setting name required. + - Returns: + - int: 0-Failed 1-Returned a string 2-Returned an Integer + 3-Returned a Boolean. + - gchar*: the information requested if it's a string. + - int: the information requested if it's a integer or boolean. + +"HookCommand" + - Parameters: + - gchar*: Name of the command (without the forward slash). + - int: Priority of this command. + - gchar*: String of text to display when the user executes /help + for this command. May be NULL if you're lazy. + - int: Value to returns when the command is catched. See XCHAT_EAT_*. + - Returns: + - guint: The ID of the hook. + +"HookServer" + - Parameters: + - gchar*: Name of the server event. + - int: Priority of this command. + - int: Value to returns when the command is catched. See XCHAT_EAT_*. + - Returns: + - guint: The ID of the hook. + +"HookPrint" + - Parameters: + - gchar*: Name of the print event. + - int: Priority of this command. + - int: Value to returns when the command is catched. See XCHAT_EAT_*. + - Returns: + - guint: The ID of the hook. + +"Unhook" + - Parameters: + - guint: ID of the hook to unhook. + (the return value of "HookCommand", "HookServer" or "HookPrint") + +"ListGet" + - Parameters: + - gchar*: The list name. + - Returns: + - guint: List ID. + +"ListNext" + - Parameters: + - guint: List ID returned by "ListGet". + - Returns: + - gboolean: says if there is no more item in the list. + +"ListStr" + - Parameters: + - guint: List ID returned by "ListGet". + - gchar*: Name of the information needed. + - Returns: + - gchar*: The information requested. +Warning: "context" attribut of "channels" list should be get with "ListInt" + +"ListInt" + - Parameters: + - guint: List ID returned by "ListGet". + - gchar*: Name of the information needed. + - Returns: + - guint: The information requested. + +"ListTime" + - Parameters: + - guint: List ID returned by "ListGet". + - gchar*: Name of the information needed. + - Returns: + - guint64: The information requested. + +"ListFields" + - Parameters: + - gchar*: The list name. + - Returns: + - gchar**: information names in this list. + +"ListFree" + - Parameters: + - guint: List ID returned by "ListGet". + +"EmitPrint" + - Parameters: + - gchar*: Text event to print. + - gchar**: NULL terminated array of string. + - Returns: + - gboolean: 1-Success 0-Failure. + +"Nickcmp" + - Parameters: + - gchar*: String to compare. + - gchar*: String to compare. + - Returns: + - int: An integer less than, equal to, or greater than zero if s1 is found, + respectively, to be less than, to match, or be greater than s2. + +"Strip" + - Parameters: + - gchar*: String to strip. + - int: Length of the string (or -1 for NULL terminated). + - int: Bit-field of flags: 0-Strip mIRC colors, 1-Strip text attributes. + - Returns: + - gchar*: striped string. + +"SendModes" + - Parameters: + - gchar**: NULL terminated array of targets (strings). The names of people + whom the action will be performed on. + - int: Maximum modes to send per line. + - gchar: Mode sign, '-' or '+'. + - gchar: Mode char, e.g. 'o' for Ops. + + +Available signals: + +"ServerSignal" + - Parameters: + - gchar**: word returned by xchat. + - gchar**: word_eol returned bu xchat. + - guint: the ID of the hook. (the return value of "HookServer"). + - guint: the ID of the context where the event come from. + +"CommandSignal" + - Parameters: + - gchar**: word returned by xchat. + - gchar**: word_eol returned bu xchat. + - guint: the ID of the hook. (the return value of "HookCommand"). + - guint: the ID of the context where the event come from. + +"PrintSignal" + - Parameters: + - gchar**: word returned by xchat. + - guint: the ID of the hook. (the return value of "HookPrint"). + - guint: the ID of the context where the event come from. + +"UnloadSignal" + emited when the user asks to unload your program. + Please exit(0); when received ! diff --git a/etc/wyatt8740/src/common/dbus/apps_xchat_url_handler.schemas b/etc/wyatt8740/src/common/dbus/apps_xchat_url_handler.schemas new file mode 100644 index 0000000..10ac948 --- /dev/null +++ b/etc/wyatt8740/src/common/dbus/apps_xchat_url_handler.schemas @@ -0,0 +1,37 @@ +<gconfschemafile> + <schemalist> + <schema> + <key>/schemas/desktop/gnome/url-handlers/irc/command</key> + <applyto>/desktop/gnome/url-handlers/irc/command</applyto> + <owner>xchat</owner> + <type>string</type> + <default>xchat --existing --url=%u</default> + <locale name="C"> + <short>The handler for "irc://" URLs</short> + </locale> + </schema> + + <schema> + <key>/schemas/desktop/gnome/url-handlers/irc/enabled</key> + <applyto>/desktop/gnome/url-handlers/irc/enabled</applyto> + <owner>xchat</owner> + <type>bool</type> + <default>true</default> + <locale name="C"> + <short>Set it at TRUE if you want it activated</short> + </locale> + </schema> + + <schema> + <key>/schemas/desktop/gnome/url-handlers/irc/needs_terminal</key> + <applyto>/desktop/gnome/url-handlers/irc/needs_terminal</applyto> + <owner>xchat</owner> + <type>bool</type> + <default>false</default> + <locale name="C"> + <short>Run xchat in a terminal?</short> + </locale> + </schema> + + </schemalist> +</gconfschemafile> diff --git a/etc/wyatt8740/src/common/dbus/dbus-client.c b/etc/wyatt8740/src/common/dbus/dbus-client.c new file mode 100644 index 0000000..ac6bf6d --- /dev/null +++ b/etc/wyatt8740/src/common/dbus/dbus-client.c @@ -0,0 +1,118 @@ +/* dbus-client.c - XChat command-line options for D-Bus + * Copyright (C) 2006 Claessens Xavier + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * + * Claessens Xavier + * xclaesse@gmail.com + */ + +#include <dbus/dbus-glib.h> +#include "dbus-client.h" +#include "../xchat.h" +#include "../xchatc.h" + +#define DBUS_SERVICE "org.xchat.service" +#define DBUS_REMOTE "/org/xchat/Remote" +#define DBUS_REMOTE_INTERFACE "org.xchat.plugin" + +static void +write_error (char *message, + GError **error) +{ + if (error == NULL || *error == NULL) { + return; + } + g_printerr ("%s: %s\n", message, (*error)->message); + g_clear_error (error); +} + +void +xchat_remote (void) +/* TODO: dbus_g_connection_unref (connection) are commented because it makes + * dbus to crash. Fixed in dbus >=0.70 ?!? + * https://launchpad.net/distros/ubuntu/+source/dbus/+bug/54375 + */ +{ + DBusGConnection *connection; + DBusGProxy *dbus = NULL; + DBusGProxy *remote_object = NULL; + gboolean xchat_running; + GError *error = NULL; + char *command = NULL; + + /* GnomeVFS >=2.15 uses D-Bus and threads, so threads should be + * initialised before opening for the first time a D-Bus connection */ + if (!g_thread_supported ()) { + g_thread_init (NULL); + } + dbus_g_thread_init (); + + /* if there is nothing to do, return now. */ + if (!arg_existing || !(arg_url || arg_command)) { + return; + } + + arg_dont_autoconnect = TRUE; + + connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error); + if (!connection) { + write_error (_("Couldn't connect to session bus"), &error); + return; + } + + /* Checks if xchat is already running */ + dbus = dbus_g_proxy_new_for_name (connection, + DBUS_SERVICE_DBUS, + DBUS_PATH_DBUS, + DBUS_INTERFACE_DBUS); + if (!dbus_g_proxy_call (dbus, "NameHasOwner", &error, + G_TYPE_STRING, DBUS_SERVICE, + G_TYPE_INVALID, + G_TYPE_BOOLEAN, &xchat_running, + G_TYPE_INVALID)) { + write_error (_("Failed to complete NameHasOwner"), &error); + xchat_running = FALSE; + } + g_object_unref (dbus); + + if (!xchat_running) { + //dbus_g_connection_unref (connection); + return; + } + + remote_object = dbus_g_proxy_new_for_name (connection, + DBUS_SERVICE, + DBUS_REMOTE, + DBUS_REMOTE_INTERFACE); + + if (arg_url) { + command = g_strdup_printf ("url %s", arg_url); + } else if (arg_command) { + command = g_strdup (arg_command); + } + + if (command) { + if (!dbus_g_proxy_call (remote_object, "Command", + &error, + G_TYPE_STRING, command, + G_TYPE_INVALID,G_TYPE_INVALID)) { + write_error (_("Failed to complete Command"), &error); + } + g_free (command); + } + + exit (0); +} diff --git a/etc/wyatt8740/src/common/dbus/dbus-client.h b/etc/wyatt8740/src/common/dbus/dbus-client.h new file mode 100644 index 0000000..cafc2b7 --- /dev/null +++ b/etc/wyatt8740/src/common/dbus/dbus-client.h @@ -0,0 +1,27 @@ +/* dbus-client.h - XChat command-line options for D-Bus + * Copyright (C) 2006 Claessens Xavier + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * + * Claessens Xavier + * xclaesse@gmail.com + */ + +#ifndef __DBUS_PLUGIN_H__ +#define __DBUS_PLUGIN_H__ + +void xchat_remote (void); + +#endif /* __DBUS_PLUGIN_H__ */ diff --git a/etc/wyatt8740/src/common/dbus/dbus-plugin.c b/etc/wyatt8740/src/common/dbus/dbus-plugin.c new file mode 100644 index 0000000..012812c --- /dev/null +++ b/etc/wyatt8740/src/common/dbus/dbus-plugin.c @@ -0,0 +1,1087 @@ +/* dbus-plugin.c - xchat plugin for remote access using D-Bus + * Copyright (C) 2006 Claessens Xavier + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * + * Claessens Xavier + * xclaesse@gmail.com + */ + +#define DBUS_API_SUBJECT_TO_CHANGE + +#include <config.h> +#include <dbus/dbus-glib.h> +#include <dbus/dbus-glib-lowlevel.h> +#include <glib/gi18n.h> +#include "../xchat-plugin.h" + +#define PNAME _("remote access") +#define PDESC _("plugin for remote access using DBUS") +#define PVERSION "" + +#define DBUS_SERVICE "org.xchat.service" +#define DBUS_OBJECT_PATH "/org/xchat" + +static xchat_plugin *ph; +static guint last_context_id = 0; +static GList *contexts = NULL; +static GHashTable *clients = NULL; +static DBusGConnection *connection; + +typedef struct RemoteObject RemoteObject; +typedef struct RemoteObjectClass RemoteObjectClass; + +GType Remote_object_get_type (void); + +struct RemoteObject +{ + GObject parent; + + guint last_hook_id; + guint last_list_id; + xchat_context *context; + char *dbus_path; + char *filename; + GHashTable *hooks; + GHashTable *lists; + void *handle; +}; + +struct RemoteObjectClass +{ + GObjectClass parent; +}; + +typedef struct +{ + guint id; + int return_value; + xchat_hook *hook; + RemoteObject *obj; +} HookInfo; + +typedef struct +{ + guint id; + xchat_context *context; +} ContextInfo; + +enum +{ + SERVER_SIGNAL, + COMMAND_SIGNAL, + PRINT_SIGNAL, + UNLOAD_SIGNAL, + LAST_SIGNAL +}; + +static guint signals[LAST_SIGNAL] = { 0 }; + +#define REMOTE_TYPE_OBJECT (remote_object_get_type ()) +#define REMOTE_OBJECT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), REMOTE_TYPE_OBJECT, RemoteObject)) +#define REMOTE_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), REMOTE_TYPE_OBJECT, RemoteObjectClass)) +#define REMOTE_IS_OBJECT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), REMOTE_TYPE_OBJECT)) +#define REMOTE_IS_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), REMOTE_TYPE_OBJECT)) +#define REMOTE_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), REMOTE_TYPE_OBJECT, RemoteObjectClass)) +#define REMOTE_OBJECT_ERROR (remote_object_error_quark ()) +#define REMOTE_TYPE_ERROR (remote_object_error_get_type ()) + +G_DEFINE_TYPE (RemoteObject, remote_object, G_TYPE_OBJECT) + +/* Available services */ + +static gboolean remote_object_connect (RemoteObject *obj, + const char *filename, + const char *name, + const char *desc, + const char *version, + DBusGMethodInvocation *context); + +static gboolean remote_object_disconnect (RemoteObject *obj, + DBusGMethodInvocation *context); + +static gboolean remote_object_command (RemoteObject *obj, + const char *command, + GError **error); + +static gboolean remote_object_print (RemoteObject *obj, + const char *text, + GError **error); + +static gboolean remote_object_find_context (RemoteObject *obj, + const char *server, + const char *channel, + guint *ret_id, + GError **error); + +static gboolean remote_object_get_context (RemoteObject *obj, + guint *ret_id, + GError **error); + +static gboolean remote_object_set_context (RemoteObject *obj, + guint id, + gboolean *ret, + GError **error); + +static gboolean remote_object_print (RemoteObject *obj, + const char *text, + GError **error); + +static gboolean remote_object_get_info (RemoteObject *obj, + const char *id, + char **ret_info, + GError **error); + +static gboolean remote_object_get_prefs (RemoteObject *obj, + const char *name, + int *ret_type, + char **ret_str, + int *ret_int, + GError **error); + +static gboolean remote_object_hook_command (RemoteObject *obj, + const char *name, + int pri, + const char *help_text, + int return_value, + guint *ret_id, + GError **error); + +static gboolean remote_object_hook_server (RemoteObject *obj, + const char *name, + int pri, + int return_value, + guint *ret_id, + GError **error); + +static gboolean remote_object_hook_print (RemoteObject *obj, + const char *name, + int pri, + int return_value, + guint *ret_id, + GError **error); + +static gboolean remote_object_unhook (RemoteObject *obj, + guint id, + GError **error); + +static gboolean remote_object_list_get (RemoteObject *obj, + const char *name, + guint *ret_id, + GError **error); + +static gboolean remote_object_list_next (RemoteObject *obj, + guint id, + gboolean *ret, + GError **error); + +static gboolean remote_object_list_str (RemoteObject *obj, + guint id, + const char *name, + char **ret_str, + GError **error); + +static gboolean remote_object_list_int (RemoteObject *obj, + guint id, + const char *name, + int *ret_int, + GError **error); + +static gboolean remote_object_list_time (RemoteObject *obj, + guint id, + const char *name, + guint64 *ret_time, + GError **error); + +static gboolean remote_object_list_fields (RemoteObject *obj, + const char *name, + char ***ret, + GError **error); + +static gboolean remote_object_list_free (RemoteObject *obj, + guint id, + GError **error); + +static gboolean remote_object_emit_print (RemoteObject *obj, + const char *event_name, + const char *args[], + gboolean *ret, + GError **error); + +static gboolean remote_object_nickcmp (RemoteObject *obj, + const char *nick1, + const char *nick2, + int *ret, + GError **error); + +static gboolean remote_object_strip (RemoteObject *obj, + const char *str, + int len, + int flag, + char **ret_str, + GError **error); + +static gboolean remote_object_send_modes (RemoteObject *obj, + const char *targets[], + int modes_per_line, + char sign, + char mode, + GError **error); + +#include "remote-object-glue.h" +#include "marshallers.h" + +/* Useful functions */ + +static char** build_list (char *word[]); +static guint context_list_find_id (xchat_context *context); +static xchat_context* context_list_find_context (guint id); + +/* Remote Object */ + +static void +hook_info_destroy (gpointer data) +{ + HookInfo *info = (HookInfo*)data; + + if (info == NULL) { + return; + } + xchat_unhook (ph, info->hook); + g_free (info); +} + +static void +list_info_destroy (gpointer data) +{ + xchat_list_free (ph, (xchat_list*)data); +} + +static void +remote_object_finalize (GObject *obj) +{ + RemoteObject *self = (RemoteObject*)obj; + + g_hash_table_destroy (self->lists); + g_hash_table_destroy (self->hooks); + g_free (self->dbus_path); + g_free (self->filename); + xchat_plugingui_remove (ph, self->handle); + + G_OBJECT_CLASS (remote_object_parent_class)->finalize (obj); +} + +static void +remote_object_init (RemoteObject *obj) +{ + obj->hooks = + g_hash_table_new_full (g_int_hash, + g_int_equal, + NULL, + hook_info_destroy); + + obj->lists = + g_hash_table_new_full (g_int_hash, + g_int_equal, + g_free, + list_info_destroy); + obj->dbus_path = NULL; + obj->filename = NULL; + obj->last_hook_id = 0; + obj->last_list_id = 0; + obj->context = xchat_get_context (ph); +} + +static void +remote_object_class_init (RemoteObjectClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + gobject_class->finalize = remote_object_finalize; + + signals[SERVER_SIGNAL] = + g_signal_new ("server_signal", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + g_cclosure_user_marshal_VOID__POINTER_POINTER_UINT_UINT, + G_TYPE_NONE, + 4, G_TYPE_STRV, G_TYPE_STRV, G_TYPE_UINT, G_TYPE_UINT); + + signals[COMMAND_SIGNAL] = + g_signal_new ("command_signal", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + g_cclosure_user_marshal_VOID__POINTER_POINTER_UINT_UINT, + G_TYPE_NONE, + 4, G_TYPE_STRV, G_TYPE_STRV, G_TYPE_UINT, G_TYPE_UINT); + + signals[PRINT_SIGNAL] = + g_signal_new ("print_signal", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + g_cclosure_user_marshal_VOID__POINTER_POINTER_UINT_UINT, + G_TYPE_NONE, + 3, G_TYPE_STRV, G_TYPE_UINT, G_TYPE_UINT); + + signals[UNLOAD_SIGNAL] = + g_signal_new ("unload_signal", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + 0); +} + +/* Implementation of services */ + +static gboolean +remote_object_connect (RemoteObject *obj, + const char *filename, + const char *name, + const char *desc, + const char *version, + DBusGMethodInvocation *context) +{ + static guint count = 0; + char *sender, *path; + RemoteObject *remote_object; + + sender = dbus_g_method_get_sender (context); + remote_object = g_hash_table_lookup (clients, sender); + if (remote_object != NULL) { + dbus_g_method_return (context, remote_object->dbus_path); + g_free (sender); + return TRUE; + } + path = g_strdup_printf (DBUS_OBJECT_PATH"/%d", count++); + remote_object = g_object_new (REMOTE_TYPE_OBJECT, NULL); + remote_object->dbus_path = path; + remote_object->filename = g_path_get_basename (filename); + remote_object->handle = xchat_plugingui_add (ph, + remote_object->filename, + name, + desc, + version, NULL); + dbus_g_connection_register_g_object (connection, + path, + G_OBJECT (remote_object)); + + g_hash_table_insert (clients, + sender, + remote_object); + + dbus_g_method_return (context, path); + return TRUE; +} + +static gboolean +remote_object_disconnect (RemoteObject *obj, + DBusGMethodInvocation *context) +{ + char *sender; + + sender = dbus_g_method_get_sender (context); + g_hash_table_remove (clients, sender); + g_free (sender); + + dbus_g_method_return (context); + return TRUE; +} + +static gboolean +remote_object_command (RemoteObject *obj, + const char *command, + GError **error) +{ + if (xchat_set_context (ph, obj->context)) { + xchat_command (ph, command); + } + return TRUE; +} + +static gboolean +remote_object_print (RemoteObject *obj, + const char *text, + GError **error) +{ + if (xchat_set_context (ph, obj->context)) { + xchat_print (ph, text); + } + return TRUE; +} + +static gboolean +remote_object_find_context (RemoteObject *obj, + const char *server, + const char *channel, + guint *ret_id, + GError **error) +{ + xchat_context *context; + + if (*server == '\0') { + server = NULL; + } + if (*channel == '\0') { + channel = NULL; + } + context = xchat_find_context (ph, server, channel); + *ret_id = context_list_find_id (context); + + return TRUE; +} + +static gboolean +remote_object_get_context (RemoteObject *obj, + guint *ret_id, + GError **error) +{ + *ret_id = context_list_find_id (obj->context); + return TRUE; +} + +static gboolean +remote_object_set_context (RemoteObject *obj, + guint id, + gboolean *ret, + GError **error) +{ + xchat_context *context; + + context = context_list_find_context (id); + if (context == NULL) { + *ret = FALSE; + return TRUE; + } + obj->context = context; + *ret = TRUE; + + return TRUE; +} + +static gboolean +remote_object_get_info (RemoteObject *obj, + const char *id, + char **ret_info, + GError **error) +{ + /* win_ptr is a GtkWindow* casted to char* and will crash + * D-Bus if we send it as a string */ + if (!xchat_set_context (ph, obj->context) || + g_str_equal (id, "win_ptr")) { + *ret_info = NULL; + return TRUE; + } + *ret_info = g_strdup (xchat_get_info (ph, id)); + return TRUE; +} + +static gboolean +remote_object_get_prefs (RemoteObject *obj, + const char *name, + int *ret_type, + char **ret_str, + int *ret_int, + GError **error) +{ + const char *str; + + if (!xchat_set_context (ph, obj->context)) { + *ret_type = 0; + return TRUE; + } + *ret_type = xchat_get_prefs (ph, name, &str, ret_int); + *ret_str = g_strdup (str); + + return TRUE; +} + +static int +server_hook_cb (char *word[], + char *word_eol[], + void *userdata) +{ + HookInfo *info = (HookInfo*)userdata; + char **arg1; + char **arg2; + + arg1 = build_list (word + 1); + arg2 = build_list (word_eol + 1); + info->obj->context = xchat_get_context (ph); + g_signal_emit (info->obj, + signals[SERVER_SIGNAL], + 0, + arg1, arg2, info->id, + context_list_find_id (info->obj->context)); + g_strfreev (arg1); + g_strfreev (arg2); + + return info->return_value; +} + +static int +command_hook_cb (char *word[], + char *word_eol[], + void *userdata) +{ + HookInfo *info = (HookInfo*)userdata; + char **arg1; + char **arg2; + + arg1 = build_list (word + 1); + arg2 = build_list (word_eol + 1); + info->obj->context = xchat_get_context (ph); + g_signal_emit (info->obj, + signals[COMMAND_SIGNAL], + 0, + arg1, arg2, info->id, + context_list_find_id (info->obj->context)); + g_strfreev (arg1); + g_strfreev (arg2); + + return info->return_value; +} + +static int +print_hook_cb (char *word[], + void *userdata) +{ + HookInfo *info = (HookInfo*)userdata; + char **arg1; + + arg1 = build_list (word + 1); + info->obj->context = xchat_get_context (ph); + g_signal_emit (info->obj, + signals[PRINT_SIGNAL], + 0, + arg1, info->id, + context_list_find_id (info->obj->context)); + g_strfreev (arg1); + + return info->return_value; +} + +static gboolean +remote_object_hook_command (RemoteObject *obj, + const char *name, + int priority, + const char *help_text, + int return_value, + guint *ret_id, + GError **error) +{ + HookInfo *info; + + info = g_new0 (HookInfo, 1); + info->obj = obj; + info->return_value = return_value; + info->id = ++obj->last_hook_id; + info->hook = xchat_hook_command (ph, + name, + priority, + command_hook_cb, + help_text, + info); + g_hash_table_insert (obj->hooks, &info->id, info); + *ret_id = info->id; + + return TRUE; +} + +static gboolean +remote_object_hook_server (RemoteObject *obj, + const char *name, + int priority, + int return_value, + guint *ret_id, + GError **error) +{ + HookInfo *info; + + info = g_new0 (HookInfo, 1); + info->obj = obj; + info->return_value = return_value; + info->id = ++obj->last_hook_id; + info->hook = xchat_hook_server (ph, + name, + priority, + server_hook_cb, + info); + g_hash_table_insert (obj->hooks, &info->id, info); + *ret_id = info->id; + + return TRUE; +} + +static gboolean +remote_object_hook_print (RemoteObject *obj, + const char *name, + int priority, + int return_value, + guint *ret_id, + GError **error) +{ + HookInfo *info; + + info = g_new0 (HookInfo, 1); + info->obj = obj; + info->return_value = return_value; + info->id = ++obj->last_hook_id; + info->hook = xchat_hook_print (ph, + name, + priority, + print_hook_cb, + info); + g_hash_table_insert (obj->hooks, &info->id, info); + *ret_id = info->id; + + return TRUE; +} + +static gboolean +remote_object_unhook (RemoteObject *obj, + guint id, + GError **error) +{ + g_hash_table_remove (obj->hooks, &id); + return TRUE; +} + +static gboolean +remote_object_list_get (RemoteObject *obj, + const char *name, + guint *ret_id, + GError **error) +{ + xchat_list *xlist; + guint *id; + + if (!xchat_set_context (ph, obj->context)) { + *ret_id = 0; + return TRUE; + } + xlist = xchat_list_get (ph, name); + if (xlist == NULL) { + *ret_id = 0; + return TRUE; + } + id = g_new (guint, 1); + *id = ++obj->last_list_id; + *ret_id = *id; + g_hash_table_insert (obj->lists, + id, + xlist); + + return TRUE; +} + +static gboolean +remote_object_list_next (RemoteObject *obj, + guint id, + gboolean *ret, + GError **error) +{ + xchat_list *xlist; + + xlist = g_hash_table_lookup (obj->lists, &id); + if (xlist == NULL) { + *ret = FALSE; + return TRUE; + } + *ret = xchat_list_next (ph, xlist); + + return TRUE; +} + +static gboolean +remote_object_list_str (RemoteObject *obj, + guint id, + const char *name, + char **ret_str, + GError **error) +{ + xchat_list *xlist; + + xlist = g_hash_table_lookup (obj->lists, &id); + if (xlist == NULL && !xchat_set_context (ph, obj->context)) { + *ret_str = NULL; + return TRUE; + } + if (g_str_equal (name, "context")) { + *ret_str = NULL; + return TRUE; + } + *ret_str = g_strdup (xchat_list_str (ph, xlist, name)); + + return TRUE; +} + +static gboolean +remote_object_list_int (RemoteObject *obj, + guint id, + const char *name, + int *ret_int, + GError **error) +{ + xchat_list *xlist; + + xlist = g_hash_table_lookup (obj->lists, &id); + if (xlist == NULL && !xchat_set_context (ph, obj->context)) { + *ret_int = -1; + return TRUE; + } + if (g_str_equal (name, "context")) { + xchat_context *context; + context = (xchat_context*)xchat_list_str (ph, xlist, name); + *ret_int = context_list_find_id (context); + } else { + *ret_int = xchat_list_int (ph, xlist, name); + } + + return TRUE; +} + +static gboolean +remote_object_list_time (RemoteObject *obj, + guint id, + const char *name, + guint64 *ret_time, + GError **error) +{ + xchat_list *xlist; + + xlist = g_hash_table_lookup (obj->lists, &id); + if (xlist == NULL) { + *ret_time = (guint64) -1; + return TRUE; + } + *ret_time = xchat_list_time (ph, xlist, name); + + return TRUE; +} + +static gboolean +remote_object_list_fields (RemoteObject *obj, + const char *name, + char ***ret, + GError **error) +{ + *ret = g_strdupv ((char**)xchat_list_fields (ph, name)); + if (*ret == NULL) { + *ret = g_new0 (char*, 1); + } + return TRUE; +} + +static gboolean +remote_object_list_free (RemoteObject *obj, + guint id, + GError **error) +{ + g_hash_table_remove (obj->lists, &id); + return TRUE; +} + +static gboolean +remote_object_emit_print (RemoteObject *obj, + const char *event_name, + const char *args[], + gboolean *ret, + GError **error) +{ + const char *argv[4] = {NULL, NULL, NULL, NULL}; + int i; + + for (i = 0; i < 4 && args[i] != NULL; i++) { + argv[i] = args[i]; + } + + *ret = xchat_set_context (ph, obj->context); + if (*ret) { + *ret = xchat_emit_print (ph, event_name, argv[0], argv[1], + argv[2], argv[3]); + } + + return TRUE; +} + +static gboolean +remote_object_nickcmp (RemoteObject *obj, + const char *nick1, + const char *nick2, + int *ret, + GError **error) +{ + xchat_set_context (ph, obj->context); + *ret = xchat_nickcmp (ph, nick1, nick2); + return TRUE; +} + +static gboolean +remote_object_strip (RemoteObject *obj, + const char *str, + int len, + int flag, + char **ret_str, + GError **error) +{ + *ret_str = xchat_strip (ph, str, len, flag); + return TRUE; +} + +static gboolean +remote_object_send_modes (RemoteObject *obj, + const char *targets[], + int modes_per_line, + char sign, + char mode, + GError **error) +{ + if (xchat_set_context (ph, obj->context)) { + xchat_send_modes (ph, targets, + g_strv_length ((char**)targets), + modes_per_line, + sign, mode); + } + return TRUE; +} + +/* DBUS stuffs */ + +static void +name_owner_changed (DBusGProxy *driver_proxy, + const char *name, + const char *old_owner, + const char *new_owner, + void *user_data) +{ + if (*new_owner == '\0') { + /* this name has vanished */ + g_hash_table_remove (clients, name); + } +} + +static gboolean +init_dbus (void) +{ + DBusGProxy *proxy; + RemoteObject *remote; + guint request_name_result; + GError *error = NULL; + + dbus_g_object_type_install_info (REMOTE_TYPE_OBJECT, + &dbus_glib_remote_object_object_info); + + connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error); + if (connection == NULL) { + xchat_printf (ph, _("Couldn't connect to session bus: %s\n"), + error->message); + g_error_free (error); + return FALSE; + } + + proxy = dbus_g_proxy_new_for_name (connection, + DBUS_SERVICE_DBUS, + DBUS_PATH_DBUS, + DBUS_INTERFACE_DBUS); + + if (!dbus_g_proxy_call (proxy, "RequestName", &error, + G_TYPE_STRING, DBUS_SERVICE, + G_TYPE_UINT, DBUS_NAME_FLAG_ALLOW_REPLACEMENT, + G_TYPE_INVALID, + G_TYPE_UINT, &request_name_result, + G_TYPE_INVALID)) { + xchat_printf (ph, _("Failed to acquire %s: %s\n"), + DBUS_SERVICE, + error->message); + g_error_free (error); + + return FALSE; + } + + dbus_g_proxy_add_signal (proxy, "NameOwnerChanged", + G_TYPE_STRING, + G_TYPE_STRING, + G_TYPE_STRING, + G_TYPE_INVALID); + dbus_g_proxy_connect_signal (proxy, "NameOwnerChanged", + G_CALLBACK (name_owner_changed), + NULL, NULL); + + remote = g_object_new (REMOTE_TYPE_OBJECT, NULL); + dbus_g_connection_register_g_object (connection, + DBUS_OBJECT_PATH"/Remote", + G_OBJECT (remote)); + + return TRUE; +} + +/* xchat_plugin stuffs */ + +static char** +build_list (char *word[]) +{ + guint i; + guint num = 0; + char **result; + + if (word == NULL) { + return NULL; + } + + while (word[num] && word[num][0]) { + num++; + } + + result = g_new0 (char*, num + 1); + for (i = 0; i < num; i++) { + result[i] = g_strdup (word[i]); + } + + return result; +} + +static guint +context_list_find_id (xchat_context *context) +{ + GList *l = NULL; + + for (l = contexts; l != NULL; l = l->next) { + if (((ContextInfo*)l->data)->context == context) { + return ((ContextInfo*)l->data)->id; + } + } + + return 0; +} + +static xchat_context* +context_list_find_context (guint id) +{ + GList *l = NULL; + + for (l = contexts; l != NULL; l = l->next) { + if (((ContextInfo*)l->data)->id == id) { + return ((ContextInfo*)l->data)->context; + } + } + + return NULL; +} + +static int +open_context_cb (char *word[], + void *userdata) +{ + ContextInfo *info; + + info = g_new0 (ContextInfo, 1); + info->id = ++last_context_id; + info->context = xchat_get_context (ph); + contexts = g_list_prepend (contexts, info); + + return XCHAT_EAT_NONE; +} + +static int +close_context_cb (char *word[], + void *userdata) +{ + GList *l; + xchat_context *context = xchat_get_context (ph); + + for (l = contexts; l != NULL; l = l->next) { + if (((ContextInfo*)l->data)->context == context) { + g_free (l->data); + contexts = g_list_delete_link (contexts, l); + break; + } + } + + return XCHAT_EAT_NONE; +} + +static gboolean +clients_find_filename_foreach (gpointer key, + gpointer value, + gpointer user_data) +{ + RemoteObject *obj = REMOTE_OBJECT (value); + return g_str_equal (obj->filename, (char*)user_data); +} + +static int +unload_plugin_cb (char *word[], char *word_eol[], void *userdata) +{ + RemoteObject *obj; + + obj = g_hash_table_find (clients, + clients_find_filename_foreach, + word[2]); + if (obj != NULL) { + g_signal_emit (obj, + signals[UNLOAD_SIGNAL], + 0); + return XCHAT_EAT_ALL; + } + + return XCHAT_EAT_NONE; +} + +int +dbus_plugin_init (xchat_plugin *plugin_handle, + char **plugin_name, + char **plugin_desc, + char **plugin_version, + char *arg) +{ + ph = plugin_handle; + *plugin_name = PNAME; + *plugin_desc = PDESC; + *plugin_version = PVERSION; + + if (init_dbus()) { + /*xchat_printf (ph, _("%s loaded successfully!\n"), PNAME);*/ + + clients = g_hash_table_new_full (g_str_hash, + g_str_equal, + g_free, + g_object_unref); + + xchat_hook_print (ph, "Open Context", + XCHAT_PRI_NORM, + open_context_cb, + NULL); + + xchat_hook_print (ph, "Close Context", + XCHAT_PRI_NORM, + close_context_cb, + NULL); + + xchat_hook_command (ph, "unload", + XCHAT_PRI_HIGHEST, + unload_plugin_cb, NULL, NULL); + } + + return TRUE; +} diff --git a/etc/wyatt8740/src/common/dbus/dbus-plugin.h b/etc/wyatt8740/src/common/dbus/dbus-plugin.h new file mode 100644 index 0000000..bda8f61 --- /dev/null +++ b/etc/wyatt8740/src/common/dbus/dbus-plugin.h @@ -0,0 +1,31 @@ +/* dbus-plugin.c - xchat plugin for remote access using DBUS + * Copyright (C) 2006 Claessens Xavier + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * + * Claessens Xavier + * xclaesse@gmail.com + */ + +#ifndef XCHAT_DBUS_PLUGIN_H +#define XCHAT_DBUS_PLUGIN_H + +int dbus_plugin_init (xchat_plugin *plugin_handle, + char **plugin_name, + char **plugin_desc, + char **plugin_version, + char *arg); + +#endif diff --git a/etc/wyatt8740/src/common/dbus/example.c b/etc/wyatt8740/src/common/dbus/example.c new file mode 100644 index 0000000..1d07278 --- /dev/null +++ b/etc/wyatt8740/src/common/dbus/example.c @@ -0,0 +1,201 @@ +/* example.c - program to demonstrate some D-BUS stuffs. + * Copyright (C) 2006 Claessens Xavier + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Claessens Xavier + * xclaesse@gmail.com + */ + +#include <config.h> +#include <dbus/dbus-glib.h> +#include <stdlib.h> +#include "marshallers.h" + +#define DBUS_SERVICE "org.xchat.service" +#define DBUS_REMOTE "/org/xchat/Remote" +#define DBUS_REMOTE_CONNECTION_INTERFACE "org.xchat.connection" +#define DBUS_REMOTE_PLUGIN_INTERFACE "org.xchat.plugin" + +guint command_id; +guint server_id; + +static void +write_error (char *message, + GError **error) +{ + if (error == NULL || *error == NULL) { + return; + } + g_printerr ("%s: %s\n", message, (*error)->message); + g_clear_error (error); +} + +static void +test_server_cb (DBusGProxy *proxy, + char *word[], + char *word_eol[], + guint hook_id, + guint context_id, + gpointer user_data) +{ + if (hook_id == server_id) { + g_print ("message: %s\n", word_eol[0]); + } +} + +static void +test_command_cb (DBusGProxy *proxy, + char *word[], + char *word_eol[], + guint hook_id, + guint context_id, + gpointer user_data) +{ + GError *error = NULL; + + if (hook_id == command_id) { + if (!dbus_g_proxy_call (proxy, "Unhook", + &error, + G_TYPE_UINT, hook_id, + G_TYPE_INVALID, G_TYPE_INVALID)) { + write_error ("Failed to complete unhook", &error); + } + /* Now if you write "/test blah" again in the xchat window + * you'll get a "Unknown command" error message */ + g_print ("test command received: %s\n", word_eol[1]); + if (!dbus_g_proxy_call (proxy, "Print", + &error, + G_TYPE_STRING, "test command succeed", + G_TYPE_INVALID, + G_TYPE_INVALID)) { + write_error ("Failed to complete Print", &error); + } + } +} + +static void +unload_cb (void) +{ + g_print ("Good bye !\n"); + exit (EXIT_SUCCESS); +} + +int +main (int argc, char **argv) +{ + DBusGConnection *connection; + DBusGProxy *remote_object; + GMainLoop *mainloop; + gchar *path; + GError *error = NULL; + + g_type_init (); + + connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error); + if (connection == NULL) { + write_error ("Couldn't connect to session bus", &error); + return EXIT_FAILURE; + } + + remote_object = dbus_g_proxy_new_for_name (connection, + DBUS_SERVICE, + DBUS_REMOTE, + DBUS_REMOTE_CONNECTION_INTERFACE); + if (!dbus_g_proxy_call (remote_object, "Connect", + &error, + G_TYPE_STRING, argv[0], + G_TYPE_STRING, "example", + G_TYPE_STRING, "Example of a D-Bus client", + G_TYPE_STRING, "1.0", + G_TYPE_INVALID, + G_TYPE_STRING, &path, G_TYPE_INVALID)) { + write_error ("Failed to complete Connect", &error); + return EXIT_FAILURE; + } + g_object_unref (remote_object); + + remote_object = dbus_g_proxy_new_for_name (connection, + DBUS_SERVICE, + path, + DBUS_REMOTE_PLUGIN_INTERFACE); + g_free (path); + + if (!dbus_g_proxy_call (remote_object, "HookCommand", + &error, + G_TYPE_STRING, "test", + G_TYPE_INT, 0, + G_TYPE_STRING, "Simple D-BUS example", + G_TYPE_INT, 1, G_TYPE_INVALID, + G_TYPE_UINT, &command_id, G_TYPE_INVALID)) { + write_error ("Failed to complete HookCommand", &error); + return EXIT_FAILURE; + } + g_print ("Command hook id=%d\n", command_id); + + if (!dbus_g_proxy_call (remote_object, "HookServer", + &error, + G_TYPE_STRING, "RAW LINE", + G_TYPE_INT, 0, + G_TYPE_INT, 0, G_TYPE_INVALID, + G_TYPE_UINT, &server_id, G_TYPE_INVALID)) { + write_error ("Failed to complete HookServer", &error); + return EXIT_FAILURE; + } + g_print ("Server hook id=%d\n", server_id); + + dbus_g_object_register_marshaller ( + g_cclosure_user_marshal_VOID__POINTER_POINTER_UINT_UINT, + G_TYPE_NONE, + G_TYPE_STRV, G_TYPE_STRV, G_TYPE_UINT, G_TYPE_UINT, + G_TYPE_INVALID); + + dbus_g_object_register_marshaller ( + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + G_TYPE_INVALID); + + dbus_g_proxy_add_signal (remote_object, "CommandSignal", + G_TYPE_STRV, + G_TYPE_STRV, + G_TYPE_UINT, + G_TYPE_UINT, + G_TYPE_INVALID); + dbus_g_proxy_connect_signal (remote_object, "CommandSignal", + G_CALLBACK (test_command_cb), + NULL, NULL); + + dbus_g_proxy_add_signal (remote_object, "ServerSignal", + G_TYPE_STRV, + G_TYPE_STRV, + G_TYPE_UINT, + G_TYPE_UINT, + G_TYPE_INVALID); + dbus_g_proxy_connect_signal (remote_object, "ServerSignal", + G_CALLBACK (test_server_cb), + NULL, NULL); + + dbus_g_proxy_add_signal (remote_object, "UnloadSignal", + G_TYPE_INVALID); + dbus_g_proxy_connect_signal (remote_object, "UnloadSignal", + G_CALLBACK (unload_cb), + NULL, NULL); + + /* Now you can write on the xchat windows: "/test arg1 arg2 ..." */ + mainloop = g_main_loop_new (NULL, FALSE); + g_main_loop_run (mainloop); + + return EXIT_SUCCESS; +} diff --git a/etc/wyatt8740/src/common/dbus/example.py b/etc/wyatt8740/src/common/dbus/example.py new file mode 100755 index 0000000..08bfdac --- /dev/null +++ b/etc/wyatt8740/src/common/dbus/example.py @@ -0,0 +1,28 @@ +#! /usr/bin/python + +import dbus + +bus = dbus.SessionBus() +proxy = bus.get_object('org.xchat.service', '/org/xchat/Remote') +remote = dbus.Interface(proxy, 'org.xchat.connection') +path = remote.Connect ("example.py", + "Python example", + "Example of a D-Bus client written in python", + "1.0") +proxy = bus.get_object('org.xchat.service', path) +xchat = dbus.Interface(proxy, 'org.xchat.plugin') + +channels = xchat.ListGet ("channels") +while xchat.ListNext (channels): + name = xchat.ListStr (channels, "channel") + print "------- " + name + " -------" + xchat.SetContext (xchat.ListInt (channels, "context")) + xchat.EmitPrint ("Channel Message", ["John", "Hi there", "@"]) + users = xchat.ListGet ("users") + while xchat.ListNext (users): + print "Nick: " + xchat.ListStr (users, "nick") + xchat.ListFree (users) +xchat.ListFree (channels) + +print xchat.Strip ("\00312Blue\003 \002Bold!\002", -1, 1|2) + diff --git a/etc/wyatt8740/src/common/dbus/marshallers.list b/etc/wyatt8740/src/common/dbus/marshallers.list new file mode 100644 index 0000000..bc3c4ad --- /dev/null +++ b/etc/wyatt8740/src/common/dbus/marshallers.list @@ -0,0 +1 @@ +VOID:POINTER,POINTER,UINT,UINT diff --git a/etc/wyatt8740/src/common/dbus/org.xchat.service.service.in b/etc/wyatt8740/src/common/dbus/org.xchat.service.service.in new file mode 100644 index 0000000..1949012 --- /dev/null +++ b/etc/wyatt8740/src/common/dbus/org.xchat.service.service.in @@ -0,0 +1,3 @@ +[D-BUS Service] +Name=org.xchat.service +Exec=@bindir@/xchat diff --git a/etc/wyatt8740/src/common/dbus/remote-object.xml b/etc/wyatt8740/src/common/dbus/remote-object.xml new file mode 100644 index 0000000..88a8ae7 --- /dev/null +++ b/etc/wyatt8740/src/common/dbus/remote-object.xml @@ -0,0 +1,142 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<node name="/"> + + <interface name="org.xchat.connection"> + <method name="Connect"> + <annotation name="org.freedesktop.DBus.GLib.Async" value=""/> + <arg type="s" name="filename" direction="in"/> + <arg type="s" name="name" direction="in"/> + <arg type="s" name="desc" direction="in"/> + <arg type="s" name="version" direction="in"/> + <arg type="s" name="path" direction="out"/> + </method> + <method name="Disconnect"> + <annotation name="org.freedesktop.DBus.GLib.Async" value=""/> + </method> + </interface> + + <interface name="org.xchat.plugin"> + <method name="Command"> + <arg type="s" name="command" direction="in"/> + </method> + <method name="Print"> + <arg type="s" name="text" direction="in"/> + </method> + <method name="FindContext"> + <arg type="s" name="server" direction="in"/> + <arg type="s" name="channel" direction="in"/> + <arg type="u" name="ret_id" direction="out"/> + </method> + <method name="GetContext"> + <arg type="u" name="ret_id" direction="out"/> + </method> + <method name="SetContext"> + <arg type="u" name="id" direction="in"/> + <arg type="b" name="ret" direction="out"/> + </method> + <method name="GetInfo"> + <arg type="s" name="id" direction="in"/> + <arg type="s" name="ret_info" direction="out"/> + </method> + <method name="GetPrefs"> + <arg type="s" name="name" direction="in"/> + <arg type="i" name="ret_type" direction="out"/> + <arg type="s" name="ret_str" direction="out"/> + <arg type="i" name="ret_int" direction="out"/> + </method> + <method name="HookCommand"> + <arg type="s" name="name" direction="in"/> + <arg type="i" name="priority" direction="in"/> + <arg type="s" name="help_text" direction="in"/> + <arg type="i" name="return_value" direction="in"/> + <arg type="u" name="ret_id" direction="out"/> + </method> + <method name="HookServer"> + <arg type="s" name="name" direction="in"/> + <arg type="i" name="priority" direction="in"/> + <arg type="i" name="return_value" direction="in"/> + <arg type="u" name="ret_id" direction="out"/> + </method> + <method name="HookPrint"> + <arg type="s" name="name" direction="in"/> + <arg type="i" name="priority" direction="in"/> + <arg type="i" name="return_value" direction="in"/> + <arg type="u" name="ret_id" direction="out"/> + </method> + <method name="Unhook"> + <arg type="u" name="id" direction="in"/> + </method> + <method name="ListGet"> + <arg type="s" name="name" direction="in"/> + <arg type="u" name="ret_id" direction="out"/> + </method> + <method name="ListNext"> + <arg type="u" name="id" direction="in"/> + <arg type="b" name="ret" direction="out"/> + </method> + <method name="ListStr"> + <arg type="u" name="id" direction="in"/> + <arg type="s" name="name" direction="in"/> + <arg type="s" name="ret_str" direction="out"/> + </method> + <method name="ListInt"> + <arg type="u" name="id" direction="in"/> + <arg type="s" name="name" direction="in"/> + <arg type="i" name="ret_int" direction="out"/> + </method> + <method name="ListTime"> + <arg type="u" name="id" direction="in"/> + <arg type="s" name="name" direction="in"/> + <arg type="t" name="ret_time" direction="out"/> + </method> + <method name="ListFields"> + <arg type="s" name="name" direction="in"/> + <arg type="as" name="ret" direction="out"/> + </method> + <method name="ListFree"> + <arg type="u" name="id" direction="in"/> + </method> + <method name="EmitPrint"> + <arg type="s" name="event_name" direction="in"/> + <arg type="as" name="args" direction="in"/> + <arg type="b" name="ret" direction="out"/> + </method> + <method name="Nickcmp"> + <arg type="s" name="nick1" direction="in"/> + <arg type="s" name="nick2" direction="in"/> + <arg type="i" name="ret" direction="out"/> + </method> + <method name="Strip"> + <arg type="s" name="str" direction="in"/> + <arg type="i" name="len" direction="in"/> + <arg type="i" name="flag" direction="in"/> + <arg type="s" name="ret_str" direction="out"/> + </method> + <method name="SendModes"> + <arg type="as" name="targets" direction="in"/> + <arg type="i" name="modes_per_line" direction="in"/> + <arg type="y" name="sign" direction="in"/> + <arg type="y" name="mode" direction="in"/> + </method> + + <signal name="CommandSignal"> + <arg type="as" name="word"/> + <arg type="as" name="word_eol"/> + <arg type="u" name="hook_id"/> + <arg type="u" name="context_id"/> + </signal> + <signal name="ServerSignal"> + <arg type="as" name="word"/> + <arg type="as" name="word_eol"/> + <arg type="u" name="hook_id"/> + <arg type="u" name="context_id"/> + </signal> + <signal name="PrintSignal"> + <arg type="as" name="word"/> + <arg type="u" name="hook_id"/> + <arg type="u" name="context_id"/> + </signal> + <signal name="UnloadSignal"/> + </interface> +</node> diff --git a/etc/wyatt8740/src/common/dcc.c b/etc/wyatt8740/src/common/dcc.c new file mode 100644 index 0000000..8f28934 --- /dev/null +++ b/etc/wyatt8740/src/common/dcc.c @@ -0,0 +1,2587 @@ +/* X-Chat + * Copyright (C) 1998-2006 Peter Zelezny. + * Copyright (C) 2006 Damjan Jovanovic + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * + * Wayne Conrad, 3 Apr 1999: Color-coded DCC file transfer status windows + * Bernhard Valenti <bernhard.valenti@gmx.net> 2000-11-21: Fixed DCC send behind nat + * + * 2001-03-08 Added support for getting "dcc_ip" config parameter. + * Jim Seymour (jseymour@LinxNet.com) + */ + +/* we only use 32 bits, but without this define, you get only 31! */ +#define _FILE_OFFSET_BITS 64 +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <time.h> +#include <errno.h> +#include <sys/stat.h> +#include <unistd.h> +#include <fcntl.h> + +#define WANTSOCKET +#define WANTARPA +#define WANTDNS +#include "inet.h" + +#ifdef WIN32 +#include <windows.h> +#endif + +#include "xchat.h" +#include "util.h" +#include "fe.h" +#include "outbound.h" +#include "inbound.h" +#include "network.h" +#include "plugin.h" +#include "server.h" +#include "text.h" +#include "url.h" +#include "xchatc.h" + +#ifdef USE_DCC64 +#define BIG_STR_TO_INT(x) strtoull(x,NULL,10) +#else +#define BIG_STR_TO_INT(x) strtoul(x,NULL,10) +#endif + +static char *dcctypes[] = { "SEND", "RECV", "CHAT", "CHAT" }; + +struct dccstat_info dccstat[] = { + {N_("Waiting"), 1 /*black */ }, + {N_("Active"), 12 /*cyan */ }, + {N_("Failed"), 4 /*red */ }, + {N_("Done"), 3 /*green */ }, + {N_("Connect"), 1 /*black */ }, + {N_("Aborted"), 4 /*red */ }, +}; + +static int dcc_global_throttle; /* 0x1 = sends, 0x2 = gets */ +/*static*/ int dcc_sendcpssum, dcc_getcpssum; + +static struct DCC *new_dcc (void); +static void dcc_close (struct DCC *dcc, int dccstat, int destroy); +static gboolean dcc_send_data (GIOChannel *, GIOCondition, struct DCC *); +static gboolean dcc_read (GIOChannel *, GIOCondition, struct DCC *); +static gboolean dcc_read_ack (GIOChannel *source, GIOCondition condition, struct DCC *dcc); + +static int new_id() +{ + static int id = 0; + if (id == 0) + { + /* start the first ID at a random number for pseudo security */ + /* 1 - 255 */ + id = RAND_INT(255) + 1; + /* ignore overflows, since it can go to 2 billion */ + } + return id++; +} + +static double +timeval_diff (GTimeVal *greater, + GTimeVal *less) +{ + long usecdiff; + double result; + + result = greater->tv_sec - less->tv_sec; + usecdiff = (long) greater->tv_usec - less->tv_usec; + result += (double) usecdiff / 1000000; + + return result; +} + +static void +dcc_unthrottle (struct DCC *dcc) +{ + /* don't unthrottle here, but delegate to funcs */ + if (dcc->type == TYPE_RECV) + dcc_read (NULL, 0, dcc); + else + dcc_send_data (NULL, 0, dcc); +} + +static void +dcc_calc_cps (struct DCC *dcc) +{ + GTimeVal now; + int oldcps; + double timediff, startdiff; + int glob_throttle_bit, wasthrottled; + int *cpssum, glob_limit; + DCC_SIZE pos, posdiff; + + g_get_current_time (&now); + + /* the pos we use for sends is an average + between pos and ack */ + if (dcc->type == TYPE_SEND) + { + /* carefull to avoid 32bit overflow */ + pos = dcc->pos - ((dcc->pos - dcc->ack) / 2); + glob_throttle_bit = 0x1; + cpssum = &dcc_sendcpssum; + glob_limit = prefs.dcc_global_max_send_cps; + } + else + { + pos = dcc->pos; + glob_throttle_bit = 0x2; + cpssum = &dcc_getcpssum; + glob_limit = prefs.dcc_global_max_get_cps; + } + + if (!dcc->firstcpstv.tv_sec && !dcc->firstcpstv.tv_usec) + dcc->firstcpstv = now; + else + { + startdiff = timeval_diff (&now, &dcc->firstcpstv); + if (startdiff < 1) + startdiff = 1; + else if (startdiff > CPS_AVG_WINDOW) + startdiff = CPS_AVG_WINDOW; + + timediff = timeval_diff (&now, &dcc->lastcpstv); + if (timediff > startdiff) + timediff = startdiff = 1; + + posdiff = pos - dcc->lastcpspos; + oldcps = dcc->cps; + dcc->cps = ((double) posdiff / timediff) * (timediff / startdiff) + + (double) dcc->cps * (1.0 - (timediff / startdiff)); + + *cpssum += dcc->cps - oldcps; + } + + dcc->lastcpspos = pos; + dcc->lastcpstv = now; + + /* now check cps against set limits... */ + wasthrottled = dcc->throttled; + + /* check global limits first */ + dcc->throttled &= ~0x2; + if (glob_limit > 0 && *cpssum >= glob_limit) + { + dcc_global_throttle |= glob_throttle_bit; + if (dcc->maxcps >= 0) + dcc->throttled |= 0x2; + } + else + dcc_global_throttle &= ~glob_throttle_bit; + + /* now check per-connection limit */ + if (dcc->maxcps > 0 && dcc->cps > dcc->maxcps) + dcc->throttled |= 0x1; + else + dcc->throttled &= ~0x1; + + /* take action */ + if (wasthrottled && !dcc->throttled) + dcc_unthrottle (dcc); +} + +static void +dcc_remove_from_sum (struct DCC *dcc) +{ + if (dcc->dccstat != STAT_ACTIVE) + return; + if (dcc->type == TYPE_SEND) + dcc_sendcpssum -= dcc->cps; + else if (dcc->type == TYPE_RECV) + dcc_getcpssum -= dcc->cps; +} + +gboolean +is_dcc (struct DCC *dcc) +{ + GSList *list = dcc_list; + while (list) + { + if (list->data == dcc) + return TRUE; + list = list->next; + } + return FALSE; +} + +/* this is called from xchat.c:xchat_misc_checks() every 1 second. */ + +void +dcc_check_timeouts (void) +{ + struct DCC *dcc; + time_t tim = time (0); + GSList *next, *list = dcc_list; + + while (list) + { + dcc = (struct DCC *) list->data; + next = list->next; + + switch (dcc->dccstat) + { + case STAT_ACTIVE: + dcc_calc_cps (dcc); + fe_dcc_update (dcc); + + if (dcc->type == TYPE_SEND || dcc->type == TYPE_RECV) + { + if (prefs.dccstalltimeout > 0) + { + if (!dcc->throttled + && tim - dcc->lasttime > prefs.dccstalltimeout) + { + EMIT_SIGNAL (XP_TE_DCCSTALL, dcc->serv->front_session, + dcctypes[dcc->type], + file_part (dcc->file), dcc->nick, NULL, 0); + dcc_close (dcc, STAT_ABORTED, FALSE); + } + } + } + break; + case STAT_QUEUED: + if (dcc->type == TYPE_SEND || dcc->type == TYPE_CHATSEND) + { + if (tim - dcc->offertime > prefs.dcctimeout) + { + if (prefs.dcctimeout > 0) + { + EMIT_SIGNAL (XP_TE_DCCTOUT, dcc->serv->front_session, + dcctypes[dcc->type], + file_part (dcc->file), dcc->nick, NULL, 0); + dcc_close (dcc, STAT_ABORTED, FALSE); + } + } + } + break; + case STAT_DONE: + case STAT_FAILED: + case STAT_ABORTED: + if (prefs.dcc_remove) + dcc_close (dcc, 0, TRUE); + break; + } + list = next; + } +} + +static int +dcc_lookup_proxy (char *host, struct sockaddr_in *addr) +{ + struct hostent *h; + static char *cache_host = NULL; + static guint32 cache_addr; + + /* too lazy to thread this, so we cache results */ + if (cache_host) + { + if (strcmp (host, cache_host) == 0) + { + memcpy (&addr->sin_addr, &cache_addr, 4); + return TRUE; + } + free (cache_host); + cache_host = NULL; + } + + h = gethostbyname (host); + if (h != NULL && h->h_length == 4 && h->h_addr_list[0] != NULL) + { + memcpy (&addr->sin_addr, h->h_addr, 4); + memcpy (&cache_addr, h->h_addr, 4); + cache_host = strdup (host); + return TRUE; + } + + return FALSE; +} + +#define DCC_USE_PROXY() (prefs.proxy_host[0] && prefs.proxy_type>0 && prefs.proxy_type<5 && prefs.proxy_use!=1) + +static int +dcc_connect_sok (struct DCC *dcc) +{ + int sok; + struct sockaddr_in addr; + + sok = socket (AF_INET, SOCK_STREAM, 0); + if (sok == -1) + return -1; + + memset (&addr, 0, sizeof (addr)); + addr.sin_family = AF_INET; + if (DCC_USE_PROXY ()) + { + if (!dcc_lookup_proxy (prefs.proxy_host, &addr)) + { + closesocket (sok); + return -1; + } + addr.sin_port = htons (prefs.proxy_port); + } + else + { + addr.sin_port = htons (dcc->port); + addr.sin_addr.s_addr = htonl (dcc->addr); + } + + set_nonblocking (sok); + connect (sok, (struct sockaddr *) &addr, sizeof (addr)); + + return sok; +} + +static void +dcc_close (struct DCC *dcc, int dccstat, int destroy) +{ + if (dcc->wiotag) + { + fe_input_remove (dcc->wiotag); + dcc->wiotag = 0; + } + + if (dcc->iotag) + { + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + } + + if (dcc->sok != -1) + { + closesocket (dcc->sok); + dcc->sok = -1; + } + + dcc_remove_from_sum (dcc); + + if (dcc->fp != -1) + { + close (dcc->fp); + dcc->fp = -1; + + if(dccstat == STAT_DONE) + { + /* if we just completed a dcc recieve, move the */ + /* completed file to the completed directory */ + if(dcc->type == TYPE_RECV) + { + /* mgl: change this to use destfile_fs for correctness and to */ + /* handle the case where dccwithnick is set */ + move_file_utf8 (prefs.dccdir, prefs.dcc_completed_dir, + file_part (dcc->destfile), prefs.dccpermissions); + } + + } + } + + dcc->dccstat = dccstat; + if (dcc->dccchat) + { + free (dcc->dccchat); + dcc->dccchat = NULL; + } + + if (destroy) + { + dcc_list = g_slist_remove (dcc_list, dcc); + fe_dcc_remove (dcc); + if (dcc->proxy) + free (dcc->proxy); + if (dcc->file) + free (dcc->file); + if (dcc->destfile) + g_free (dcc->destfile); + if (dcc->destfile_fs) + g_free (dcc->destfile_fs); + free (dcc->nick); + free (dcc); + return; + } + + fe_dcc_update (dcc); +} + +void +dcc_abort (session *sess, struct DCC *dcc) +{ + if (dcc) + { + switch (dcc->dccstat) + { + case STAT_QUEUED: + case STAT_CONNECTING: + case STAT_ACTIVE: + dcc_close (dcc, STAT_ABORTED, FALSE); + switch (dcc->type) + { + case TYPE_CHATSEND: + case TYPE_CHATRECV: + EMIT_SIGNAL (XP_TE_DCCCHATABORT, sess, dcc->nick, NULL, NULL, + NULL, 0); + break; + case TYPE_SEND: + EMIT_SIGNAL (XP_TE_DCCSENDABORT, sess, dcc->nick, + file_part (dcc->file), NULL, NULL, 0); + break; + case TYPE_RECV: + EMIT_SIGNAL (XP_TE_DCCRECVABORT, sess, dcc->nick, + dcc->file, NULL, NULL, 0); + } + break; + default: + dcc_close (dcc, 0, TRUE); + } + } +} + +void +dcc_notify_kill (struct server *serv) +{ + struct server *replaceserv = 0; + struct DCC *dcc; + GSList *list = dcc_list; + if (serv_list) + replaceserv = (struct server *) serv_list->data; + while (list) + { + dcc = (struct DCC *) list->data; + if (dcc->serv == serv) + dcc->serv = replaceserv; + list = list->next; + } +} + +struct DCC * +dcc_write_chat (char *nick, char *text) +{ + struct DCC *dcc; + int len; + + dcc = find_dcc (nick, "", TYPE_CHATRECV); + if (!dcc) + dcc = find_dcc (nick, "", TYPE_CHATSEND); + if (dcc && dcc->dccstat == STAT_ACTIVE) + { + len = strlen (text); + tcp_send_real (NULL, dcc->sok, dcc->serv->encoding, dcc->serv->using_irc, + text, len); + send (dcc->sok, "\n", 1, 0); + dcc->size += len; + fe_dcc_update (dcc); + return dcc; + } + return 0; +} + +/* returns: 0 - ok + 1 - the dcc is closed! */ + +static int +dcc_chat_line (struct DCC *dcc, char *line) +{ + session *sess; + char *word[PDIWORDS]; + char *po; + char *utf; + char *conv; + int ret, i; + int len; + gsize utf_len; + char portbuf[32]; + + len = strlen (line); + if (dcc->serv->using_cp1255) + len++; /* include the NUL terminator */ + + if (dcc->serv->using_irc) /* using "IRC" encoding (CP1252/UTF-8 hybrid) */ + utf = NULL; + else if (dcc->serv->encoding == NULL) /* system */ + utf = g_locale_to_utf8 (line, len, NULL, &utf_len, NULL); + else + utf = g_convert (line, len, "UTF-8", dcc->serv->encoding, 0, &utf_len, 0); + + if (utf) + { + line = utf; + len = utf_len; + } + + if (dcc->serv->using_cp1255 && len > 0) + len--; + + /* we really need valid UTF-8 now */ + conv = text_validate (&line, &len); + + sess = find_dialog (dcc->serv, dcc->nick); + if (!sess) + sess = dcc->serv->front_session; + + sprintf (portbuf, "%d", dcc->port); + + word[0] = "DCC Chat Text"; + word[1] = net_ip (dcc->addr); + word[2] = portbuf; + word[3] = dcc->nick; + word[4] = line; + for (i = 5; i < PDIWORDS; i++) + word[i] = "\000"; + + ret = plugin_emit_print (sess, word); + + /* did the plugin close it? */ + if (!g_slist_find (dcc_list, dcc)) + { + if (utf) + g_free (utf); + if (conv) + g_free (conv); + return 1; + } + + /* did the plugin eat the event? */ + if (ret) + { + if (utf) + g_free (utf); + if (conv) + g_free (conv); + return 0; + } + + url_check_line (line, len); + + if (line[0] == 1 && !strncasecmp (line + 1, "ACTION", 6)) + { + po = strchr (line + 8, '\001'); + if (po) + po[0] = 0; + inbound_action (sess, dcc->serv->nick, dcc->nick, "", line + 8, FALSE, FALSE); + } else + { + inbound_privmsg (dcc->serv, dcc->nick, "", line, FALSE); + } + if (utf) + g_free (utf); + if (conv) + g_free (conv); + return 0; +} + +static gboolean +dcc_read_chat (GIOChannel *source, GIOCondition condition, struct DCC *dcc) +{ + int i, len, dead; + char portbuf[32]; + char lbuf[2050]; + + while (1) + { + if (dcc->throttled) + { + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + return FALSE; + } + + if (!dcc->iotag) + dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, dcc_read_chat, dcc); + + len = recv (dcc->sok, lbuf, sizeof (lbuf) - 2, 0); + if (len < 1) + { + if (len < 0) + { + if (would_block ()) + return TRUE; + } + sprintf (portbuf, "%d", dcc->port); + EMIT_SIGNAL (XP_TE_DCCCHATF, dcc->serv->front_session, dcc->nick, + net_ip (dcc->addr), portbuf, + errorstring ((len < 0) ? sock_error () : 0), 0); + dcc_close (dcc, STAT_FAILED, FALSE); + return TRUE; + } + i = 0; + lbuf[len] = 0; + while (i < len) + { + switch (lbuf[i]) + { + case '\r': + break; + case '\n': + dcc->dccchat->linebuf[dcc->dccchat->pos] = 0; + dead = dcc_chat_line (dcc, dcc->dccchat->linebuf); + + if (dead || !dcc->dccchat) /* the dcc has been closed, don't use (DCC *)! */ + return TRUE; + + dcc->pos += dcc->dccchat->pos; + dcc->dccchat->pos = 0; + fe_dcc_update (dcc); + break; + default: + dcc->dccchat->linebuf[dcc->dccchat->pos] = lbuf[i]; + if (dcc->dccchat->pos < (sizeof (dcc->dccchat->linebuf) - 1)) + dcc->dccchat->pos++; + } + i++; + } + } +} + +static void +dcc_calc_average_cps (struct DCC *dcc) +{ + time_t sec; + + sec = time (0) - dcc->starttime; + if (sec < 1) + sec = 1; + if (dcc->type == TYPE_SEND) + dcc->cps = (dcc->ack - dcc->resumable) / sec; + else + dcc->cps = (dcc->pos - dcc->resumable) / sec; +} + +static void +dcc_send_ack (struct DCC *dcc) +{ + /* send in 32-bit big endian */ + guint32 pos = htonl (dcc->pos & 0xffffffff); + send (dcc->sok, (char *) &pos, 4, 0); +} + +static gboolean +dcc_read (GIOChannel *source, GIOCondition condition, struct DCC *dcc) +{ + char *old; + char buf[4096]; + int n; + gboolean need_ack = FALSE; + + if (dcc->fp == -1) + { + + /* try to create the download dir (even if it exists, no harm) */ + mkdir_utf8 (prefs.dccdir); + + if (dcc->resumable) + { + dcc->fp = open (dcc->destfile_fs, O_WRONLY | O_APPEND | OFLAGS); + dcc->pos = dcc->resumable; + dcc->ack = dcc->resumable; + } else + { + if (access (dcc->destfile_fs, F_OK) == 0) + { + n = 0; + do + { + n++; + snprintf (buf, sizeof (buf), "%s.%d", dcc->destfile_fs, n); + } + while (access (buf, F_OK) == 0); + + g_free (dcc->destfile_fs); + dcc->destfile_fs = g_strdup (buf); + + old = dcc->destfile; + dcc->destfile = xchat_filename_to_utf8 (buf, -1, 0, 0, 0); + + EMIT_SIGNAL (XP_TE_DCCRENAME, dcc->serv->front_session, + old, dcc->destfile, NULL, NULL, 0); + g_free (old); + } + dcc->fp = + open (dcc->destfile_fs, OFLAGS | O_TRUNC | O_WRONLY | O_CREAT, + prefs.dccpermissions); + } + } + if (dcc->fp == -1) + { + /* the last executed function is open(), errno should be valid */ + EMIT_SIGNAL (XP_TE_DCCFILEERR, dcc->serv->front_session, dcc->destfile, + errorstring (errno), NULL, NULL, 0); + dcc_close (dcc, STAT_FAILED, FALSE); + return TRUE; + } + while (1) + { + if (dcc->throttled) + { + if (need_ack) + dcc_send_ack (dcc); + + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + return FALSE; + } + + if (!dcc->iotag) + dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, dcc_read, dcc); + + n = recv (dcc->sok, buf, sizeof (buf), 0); + if (n < 1) + { + if (n < 0) + { + if (would_block ()) + { + if (need_ack) + dcc_send_ack (dcc); + return TRUE; + } + } + EMIT_SIGNAL (XP_TE_DCCRECVERR, dcc->serv->front_session, dcc->file, + dcc->destfile, dcc->nick, + errorstring ((n < 0) ? sock_error () : 0), 0); + /* send ack here? but the socket is dead */ + /*if (need_ack) + dcc_send_ack (dcc);*/ + dcc_close (dcc, STAT_FAILED, FALSE); + return TRUE; + } + + if (write (dcc->fp, buf, n) == -1) /* could be out of hdd space */ + { + EMIT_SIGNAL (XP_TE_DCCRECVERR, dcc->serv->front_session, dcc->file, + dcc->destfile, dcc->nick, errorstring (errno), 0); + if (need_ack) + dcc_send_ack (dcc); + dcc_close (dcc, STAT_FAILED, FALSE); + return TRUE; + } + + dcc->lasttime = time (0); + dcc->pos += n; + need_ack = TRUE; /* send ack when we're done recv()ing */ + + if (dcc->pos >= dcc->size) + { + dcc_send_ack (dcc); + dcc_close (dcc, STAT_DONE, FALSE); + dcc_calc_average_cps (dcc); /* this must be done _after_ dcc_close, or dcc_remove_from_sum will see the wrong value in dcc->cps */ + sprintf (buf, "%d", dcc->cps); + EMIT_SIGNAL (XP_TE_DCCRECVCOMP, dcc->serv->front_session, + dcc->file, dcc->destfile, dcc->nick, buf, 0); + return TRUE; + } + } +} + +static void +dcc_open_query (server *serv, char *nick) +{ + if (prefs.autodialog) + open_query (serv, nick, FALSE); +} + +static gboolean +dcc_did_connect (GIOChannel *source, GIOCondition condition, struct DCC *dcc) +{ + int er; + struct sockaddr_in addr; + +#ifdef WIN32 + if (condition & G_IO_ERR) + { + int len; + + /* find the last errno for this socket */ + len = sizeof (er); + getsockopt (dcc->sok, SOL_SOCKET, SO_ERROR, (char *)&er, &len); + EMIT_SIGNAL (XP_TE_DCCCONFAIL, dcc->serv->front_session, + dcctypes[dcc->type], dcc->nick, errorstring (er), + NULL, 0); + dcc->dccstat = STAT_FAILED; + fe_dcc_update (dcc); + return FALSE; + } + +#else + memset (&addr, 0, sizeof (addr)); + addr.sin_port = htons (dcc->port); + addr.sin_family = AF_INET; + addr.sin_addr.s_addr = htonl (dcc->addr); + + /* check if it's already connected; This always fails on winXP */ + if (connect (dcc->sok, (struct sockaddr *) &addr, sizeof (addr)) != 0) + { + er = sock_error (); + if (er != EISCONN) + { + EMIT_SIGNAL (XP_TE_DCCCONFAIL, dcc->serv->front_session, + dcctypes[dcc->type], dcc->nick, errorstring (er), + NULL, 0); + dcc->dccstat = STAT_FAILED; + fe_dcc_update (dcc); + return FALSE; + } + } +#endif + + return TRUE; +} + +static gboolean +dcc_connect_finished (GIOChannel *source, GIOCondition condition, struct DCC *dcc) +{ + char host[128]; + + if (dcc->iotag) + { + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + } + + if (!dcc_did_connect (source, condition, dcc)) + return TRUE; + + dcc->dccstat = STAT_ACTIVE; + snprintf (host, sizeof host, "%s:%d", net_ip (dcc->addr), dcc->port); + + switch (dcc->type) + { + case TYPE_RECV: + dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, dcc_read, dcc); + EMIT_SIGNAL (XP_TE_DCCCONRECV, dcc->serv->front_session, + dcc->nick, host, dcc->file, NULL, 0); + break; + case TYPE_SEND: + /* passive send */ + dcc->fastsend = prefs.fastdccsend; + if (dcc->fastsend) + dcc->wiotag = fe_input_add (dcc->sok, FIA_WRITE, dcc_send_data, dcc); + dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, dcc_read_ack, dcc); + dcc_send_data (NULL, 0, (gpointer)dcc); + EMIT_SIGNAL (XP_TE_DCCCONSEND, dcc->serv->front_session, + dcc->nick, host, dcc->file, NULL, 0); + break; + case TYPE_CHATSEND: /* pchat */ + dcc_open_query (dcc->serv, dcc->nick); + case TYPE_CHATRECV: /* normal chat */ + dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, dcc_read_chat, dcc); + dcc->dccchat = malloc (sizeof (struct dcc_chat)); + dcc->dccchat->pos = 0; + EMIT_SIGNAL (XP_TE_DCCCONCHAT, dcc->serv->front_session, + dcc->nick, host, NULL, NULL, 0); + break; + } + dcc->starttime = time (0); + dcc->lasttime = dcc->starttime; + fe_dcc_update (dcc); + + return TRUE; +} + +static gboolean +read_proxy (struct DCC *dcc) +{ + struct proxy_state *proxy = dcc->proxy; + while (proxy->bufferused < proxy->buffersize) + { + int ret = recv (dcc->sok, &proxy->buffer[proxy->bufferused], + proxy->buffersize - proxy->bufferused, 0); + if (ret > 0) + proxy->bufferused += ret; + else + { + if (would_block ()) + return FALSE; + else + { + dcc->dccstat = STAT_FAILED; + fe_dcc_update (dcc); + if (dcc->iotag) + { + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + } + return FALSE; + } + } + } + return TRUE; +} + +static gboolean +write_proxy (struct DCC *dcc) +{ + struct proxy_state *proxy = dcc->proxy; + while (proxy->bufferused < proxy->buffersize) + { + int ret = send (dcc->sok, &proxy->buffer[proxy->bufferused], + proxy->buffersize - proxy->bufferused, 0); + if (ret >= 0) + proxy->bufferused += ret; + else + { + if (would_block ()) + return FALSE; + else + { + dcc->dccstat = STAT_FAILED; + fe_dcc_update (dcc); + if (dcc->wiotag) + { + fe_input_remove (dcc->wiotag); + dcc->wiotag = 0; + } + return FALSE; + } + } + } + return TRUE; +} + +static gboolean +proxy_read_line (struct DCC *dcc) +{ + struct proxy_state *proxy = dcc->proxy; + while (1) + { + proxy->buffersize = proxy->bufferused + 1; + if (!read_proxy (dcc)) + return FALSE; + if (proxy->buffer[proxy->bufferused - 1] == '\n' + || proxy->bufferused == MAX_PROXY_BUFFER) + { + proxy->buffer[proxy->bufferused - 1] = 0; + return TRUE; + } + } +} + +static gboolean +dcc_wingate_proxy_traverse (GIOChannel *source, GIOCondition condition, struct DCC *dcc) +{ + struct proxy_state *proxy = dcc->proxy; + if (proxy->phase == 0) + { + proxy->buffersize = snprintf ((char*) proxy->buffer, MAX_PROXY_BUFFER, + "%s %d\r\n", net_ip(dcc->addr), + dcc->port); + proxy->bufferused = 0; + dcc->wiotag = fe_input_add (dcc->sok, FIA_WRITE|FIA_EX, + dcc_wingate_proxy_traverse, dcc); + ++proxy->phase; + } + if (proxy->phase == 1) + { + if (!read_proxy (dcc)) + return TRUE; + fe_input_remove (dcc->wiotag); + dcc->wiotag = 0; + dcc_connect_finished (source, 0, dcc); + } + return TRUE; +} + +struct sock_connect +{ + char version; + char type; + guint16 port; + guint32 address; + char username[10]; +}; +static gboolean +dcc_socks_proxy_traverse (GIOChannel *source, GIOCondition condition, struct DCC *dcc) +{ + struct proxy_state *proxy = dcc->proxy; + + if (proxy->phase == 0) + { + struct sock_connect sc; + sc.version = 4; + sc.type = 1; + sc.port = htons (dcc->port); + sc.address = htonl (dcc->addr); + strncpy (sc.username, prefs.username, 9); + memcpy (proxy->buffer, &sc, sizeof (sc)); + proxy->buffersize = 8 + strlen (sc.username) + 1; + proxy->bufferused = 0; + dcc->wiotag = fe_input_add (dcc->sok, FIA_WRITE|FIA_EX, + dcc_socks_proxy_traverse, dcc); + ++proxy->phase; + } + + if (proxy->phase == 1) + { + if (!write_proxy (dcc)) + return TRUE; + fe_input_remove (dcc->wiotag); + dcc->wiotag = 0; + proxy->bufferused = 0; + proxy->buffersize = 8; + dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, + dcc_socks_proxy_traverse, dcc); + ++proxy->phase; + } + + if (proxy->phase == 2) + { + if (!read_proxy (dcc)) + return TRUE; + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + if (proxy->buffer[1] == 90) + dcc_connect_finished (source, 0, dcc); + else + { + dcc->dccstat = STAT_FAILED; + fe_dcc_update (dcc); + } + } + + return TRUE; +} + +struct sock5_connect1 +{ + char version; + char nmethods; + char method; +}; +static gboolean +dcc_socks5_proxy_traverse (GIOChannel *source, GIOCondition condition, struct DCC *dcc) +{ + struct proxy_state *proxy = dcc->proxy; + int auth = prefs.proxy_auth && prefs.proxy_user[0] && prefs.proxy_pass[0]; + + if (proxy->phase == 0) + { + struct sock5_connect1 sc1; + + sc1.version = 5; + sc1.nmethods = 1; + sc1.method = 0; + if (auth) + sc1.method = 2; + memcpy (proxy->buffer, &sc1, 3); + proxy->buffersize = 3; + proxy->bufferused = 0; + dcc->wiotag = fe_input_add (dcc->sok, FIA_WRITE|FIA_EX, + dcc_socks5_proxy_traverse, dcc); + ++proxy->phase; + } + + if (proxy->phase == 1) + { + if (!write_proxy (dcc)) + return TRUE; + fe_input_remove (dcc->wiotag); + dcc->wiotag = 0; + proxy->bufferused = 0; + proxy->buffersize = 2; + dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, + dcc_socks5_proxy_traverse, dcc); + ++proxy->phase; + } + + if (proxy->phase == 2) + { + if (!read_proxy (dcc)) + return TRUE; + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + + /* did the server say no auth required? */ + if (proxy->buffer[0] == 5 && proxy->buffer[1] == 0) + auth = 0; + + /* Set up authentication I/O */ + if (auth) + { + int len_u=0, len_p=0; + + /* authentication sub-negotiation (RFC1929) */ + if ( proxy->buffer[0] != 5 || proxy->buffer[1] != 2 ) /* UPA not supported by server */ + { + PrintText (dcc->serv->front_session, "SOCKS\tServer doesn't support UPA authentication.\n"); + dcc->dccstat = STAT_FAILED; + fe_dcc_update (dcc); + return TRUE; + } + + memset (proxy->buffer, 0, MAX_PROXY_BUFFER); + + /* form the UPA request */ + len_u = strlen (prefs.proxy_user); + len_p = strlen (prefs.proxy_pass); + proxy->buffer[0] = 1; + proxy->buffer[1] = len_u; + memcpy (proxy->buffer + 2, prefs.proxy_user, len_u); + proxy->buffer[2 + len_u] = len_p; + memcpy (proxy->buffer + 3 + len_u, prefs.proxy_pass, len_p); + + proxy->buffersize = 3 + len_u + len_p; + proxy->bufferused = 0; + dcc->wiotag = fe_input_add (dcc->sok, FIA_WRITE|FIA_EX, + dcc_socks5_proxy_traverse, dcc); + ++proxy->phase; + } + else + { + if (proxy->buffer[0] != 5 || proxy->buffer[1] != 0) + { + PrintText (dcc->serv->front_session, "SOCKS\tAuthentication required but disabled in settings.\n"); + dcc->dccstat = STAT_FAILED; + fe_dcc_update (dcc); + return TRUE; + } + proxy->phase += 2; + } + } + + if (proxy->phase == 3) + { + if (!write_proxy (dcc)) + return TRUE; + fe_input_remove (dcc->wiotag); + dcc->wiotag = 0; + proxy->buffersize = 2; + proxy->bufferused = 0; + dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, + dcc_socks5_proxy_traverse, dcc); + ++proxy->phase; + } + + if (proxy->phase == 4) + { + if (!read_proxy (dcc)) + return TRUE; + if (dcc->iotag) + { + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + } + if (proxy->buffer[1] != 0) + { + PrintText (dcc->serv->front_session, "SOCKS\tAuthentication failed. " + "Is username and password correct?\n"); + dcc->dccstat = STAT_FAILED; + fe_dcc_update (dcc); + return TRUE; + } + ++proxy->phase; + } + + if (proxy->phase == 5) + { + proxy->buffer[0] = 5; /* version (socks 5) */ + proxy->buffer[1] = 1; /* command (connect) */ + proxy->buffer[2] = 0; /* reserved */ + proxy->buffer[3] = 1; /* address type (IPv4) */ + proxy->buffer[4] = (dcc->addr >> 24) & 0xFF; /* IP address */ + proxy->buffer[5] = (dcc->addr >> 16) & 0xFF; + proxy->buffer[6] = (dcc->addr >> 8) & 0xFF; + proxy->buffer[7] = (dcc->addr & 0xFF); + proxy->buffer[8] = (dcc->port >> 8) & 0xFF; /* port */ + proxy->buffer[9] = (dcc->port & 0xFF); + proxy->buffersize = 10; + proxy->bufferused = 0; + dcc->wiotag = fe_input_add (dcc->sok, FIA_WRITE|FIA_EX, + dcc_socks5_proxy_traverse, dcc); + ++proxy->phase; + } + + if (proxy->phase == 6) + { + if (!write_proxy (dcc)) + return TRUE; + fe_input_remove (dcc->wiotag); + dcc->wiotag = 0; + proxy->buffersize = 4; + proxy->bufferused = 0; + dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, + dcc_socks5_proxy_traverse, dcc); + ++proxy->phase; + } + + if (proxy->phase == 7) + { + if (!read_proxy (dcc)) + return TRUE; + if (proxy->buffer[0] != 5 || proxy->buffer[1] != 0) + { + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + if (proxy->buffer[1] == 2) + PrintText (dcc->serv->front_session, "SOCKS\tProxy refused to connect to host (not allowed).\n"); + else + PrintTextf (dcc->serv->front_session, "SOCKS\tProxy failed to connect to host (error %d).\n", proxy->buffer[1]); + dcc->dccstat = STAT_FAILED; + fe_dcc_update (dcc); + return TRUE; + } + switch (proxy->buffer[3]) + { + case 1: proxy->buffersize += 6; break; + case 3: proxy->buffersize += 1; break; + case 4: proxy->buffersize += 18; break; + }; + ++proxy->phase; + } + + if (proxy->phase == 8) + { + if (!read_proxy (dcc)) + return TRUE; + /* handle domain name case */ + if (proxy->buffer[3] == 3) + { + proxy->buffersize = 5 + proxy->buffer[4] + 2; + } + /* everything done? */ + if (proxy->bufferused == proxy->buffersize) + { + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + dcc_connect_finished (source, 0, dcc); + } + } + return TRUE; +} + +static gboolean +dcc_http_proxy_traverse (GIOChannel *source, GIOCondition condition, struct DCC *dcc) +{ + struct proxy_state *proxy = dcc->proxy; + + if (proxy->phase == 0) + { + char buf[256]; + char auth_data[128]; + char auth_data2[68]; + int n, n2; + + n = snprintf (buf, sizeof (buf), "CONNECT %s:%d HTTP/1.0\r\n", + net_ip(dcc->addr), dcc->port); + if (prefs.proxy_auth) + { + n2 = snprintf (auth_data2, sizeof (auth_data2), "%s:%s", + prefs.proxy_user, prefs.proxy_pass); + base64_encode (auth_data, auth_data2, n2); + n += snprintf (buf+n, sizeof (buf)-n, "Proxy-Authorization: Basic %s\r\n", auth_data); + } + n += snprintf (buf+n, sizeof (buf)-n, "\r\n"); + proxy->buffersize = n; + proxy->bufferused = 0; + memcpy (proxy->buffer, buf, proxy->buffersize); + dcc->wiotag = fe_input_add (dcc->sok, FIA_WRITE|FIA_EX, + dcc_http_proxy_traverse, dcc); + ++proxy->phase; + } + + if (proxy->phase == 1) + { + if (!write_proxy (dcc)) + return TRUE; + fe_input_remove (dcc->wiotag); + dcc->wiotag = 0; + proxy->bufferused = 0; + dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, + dcc_http_proxy_traverse, dcc); + ++proxy->phase; + } + + if (proxy->phase == 2) + { + if (!proxy_read_line (dcc)) + return TRUE; + /* "HTTP/1.0 200 OK" */ + if (proxy->bufferused < 12 || + memcmp (proxy->buffer, "HTTP/", 5) || memcmp (proxy->buffer + 9, "200", 3)) + { + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + PrintText (dcc->serv->front_session, proxy->buffer); + dcc->dccstat = STAT_FAILED; + fe_dcc_update (dcc); + return TRUE; + } + proxy->bufferused = 0; + ++proxy->phase; + } + + if (proxy->phase == 3) + { + while (1) + { + /* read until blank line */ + if (proxy_read_line (dcc)) + { + if (proxy->bufferused < 1 || + (proxy->bufferused == 2 && proxy->buffer[0] == '\r')) + { + break; + } + if (proxy->bufferused > 1) + PrintText (dcc->serv->front_session, proxy->buffer); + proxy->bufferused = 0; + } + else + return TRUE; + } + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + dcc_connect_finished (source, 0, dcc); + } + + return TRUE; +} + +static gboolean +dcc_proxy_connect (GIOChannel *source, GIOCondition condition, struct DCC *dcc) +{ + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + + if (!dcc_did_connect (source, condition, dcc)) + return TRUE; + + dcc->proxy = malloc (sizeof (struct proxy_state)); + if (!dcc->proxy) + { + dcc->dccstat = STAT_FAILED; + fe_dcc_update (dcc); + return TRUE; + } + memset (dcc->proxy, 0, sizeof (struct proxy_state)); + + switch (prefs.proxy_type) + { + case 1: return dcc_wingate_proxy_traverse (source, condition, dcc); + case 2: return dcc_socks_proxy_traverse (source, condition, dcc); + case 3: return dcc_socks5_proxy_traverse (source, condition, dcc); + case 4: return dcc_http_proxy_traverse (source, condition, dcc); + } + return TRUE; +} + +static int dcc_listen_init (struct DCC *, struct session *); + +static void +dcc_connect (struct DCC *dcc) +{ + int ret; + char tbuf[400]; + + if (dcc->dccstat == STAT_CONNECTING) + return; + dcc->dccstat = STAT_CONNECTING; + + if (dcc->pasvid && dcc->port == 0) + { + /* accepted a passive dcc send */ + ret = dcc_listen_init (dcc, dcc->serv->front_session); + if (!ret) + { + dcc_close (dcc, STAT_FAILED, FALSE); + return; + } + /* possible problems with filenames containing spaces? */ + if (dcc->type == TYPE_RECV) + snprintf (tbuf, sizeof (tbuf), strchr (dcc->file, ' ') ? + "DCC SEND \"%s\" %u %d %"DCC_SFMT" %d" : + "DCC SEND %s %u %d %"DCC_SFMT" %d", dcc->file, + dcc->addr, dcc->port, dcc->size, dcc->pasvid); + else + snprintf (tbuf, sizeof (tbuf), "DCC CHAT chat %u %d %d", + dcc->addr, dcc->port, dcc->pasvid); + dcc->serv->p_ctcp (dcc->serv, dcc->nick, tbuf); + } + else + { + dcc->sok = dcc_connect_sok (dcc); + if (dcc->sok == -1) + { + dcc->dccstat = STAT_FAILED; + fe_dcc_update (dcc); + return; + } + if (DCC_USE_PROXY ()) + dcc->iotag = fe_input_add (dcc->sok, FIA_WRITE|FIA_EX, dcc_proxy_connect, dcc); + else + dcc->iotag = fe_input_add (dcc->sok, FIA_WRITE|FIA_EX, dcc_connect_finished, dcc); + } + + fe_dcc_update (dcc); +} + +static gboolean +dcc_send_data (GIOChannel *source, GIOCondition condition, struct DCC *dcc) +{ + char *buf; + int len, sent, sok = dcc->sok; + + if (prefs.dcc_blocksize < 1) /* this is too little! */ + prefs.dcc_blocksize = 1024; + + if (prefs.dcc_blocksize > 102400) /* this is too much! */ + prefs.dcc_blocksize = 102400; + + if (dcc->throttled) + { + fe_input_remove (dcc->wiotag); + dcc->wiotag = 0; + return FALSE; + } + + if (!dcc->fastsend) + { + if (dcc->ack < dcc->pos) + return TRUE; + } + else if (!dcc->wiotag) + dcc->wiotag = fe_input_add (sok, FIA_WRITE, dcc_send_data, dcc); + + buf = malloc (prefs.dcc_blocksize); + if (!buf) + return TRUE; + + lseek (dcc->fp, dcc->pos, SEEK_SET); + len = read (dcc->fp, buf, prefs.dcc_blocksize); + if (len < 1) + goto abortit; + sent = send (sok, buf, len, 0); + + if (sent < 0 && !(would_block ())) + { +abortit: + free (buf); + EMIT_SIGNAL (XP_TE_DCCSENDFAIL, dcc->serv->front_session, + file_part (dcc->file), dcc->nick, + errorstring (sock_error ()), NULL, 0); + dcc_close (dcc, STAT_FAILED, FALSE); + return TRUE; + } + if (sent > 0) + { + dcc->pos += sent; + dcc->lasttime = time (0); + } + + /* have we sent it all yet? */ + if (dcc->pos >= dcc->size) + { + /* it's all sent now, so remove the WRITE/SEND handler */ + if (dcc->wiotag) + { + fe_input_remove (dcc->wiotag); + dcc->wiotag = 0; + } + } + + free (buf); + + return TRUE; +} + +static gboolean +dcc_handle_new_ack (struct DCC *dcc) +{ + guint32 ack; + char buf[16]; + gboolean done = FALSE; + + memcpy (&ack, dcc->ack_buf, 4); + dcc->ack = ntohl (ack); + + /* this could mess up when xfering >32bit files */ + if (dcc->size <= 0xffffffff) + { + /* fix for BitchX */ + if (dcc->ack < dcc->resumable) + dcc->ackoffset = TRUE; + if (dcc->ackoffset) + dcc->ack += dcc->resumable; + } + + /* DCC complete check */ + if (dcc->pos >= dcc->size && dcc->ack >= (dcc->size & 0xffffffff)) + { + dcc->ack = dcc->size; /* force 100% ack for >4 GB */ + dcc_close (dcc, STAT_DONE, FALSE); + dcc_calc_average_cps (dcc); /* this must be done _after_ dcc_close, or dcc_remove_from_sum will see the wrong value in dcc->cps */ + sprintf (buf, "%d", dcc->cps); + EMIT_SIGNAL (XP_TE_DCCSENDCOMP, dcc->serv->front_session, + file_part (dcc->file), dcc->nick, buf, NULL, 0); + done = TRUE; + } + else if ((!dcc->fastsend) && (dcc->ack >= (dcc->pos & 0xffffffff))) + { + dcc_send_data (NULL, 0, (gpointer)dcc); + } + +#ifdef USE_DCC64 + /* take the top 32 of "bytes send" and bottom 32 of "ack" */ + dcc->ack = (dcc->pos & G_GINT64_CONSTANT (0xffffffff00000000)) | + (dcc->ack & 0xffffffff); + /* dcc->ack is only used for CPS and PERCENTAGE calcs from now on... */ +#endif + + return done; +} + +static gboolean +dcc_read_ack (GIOChannel *source, GIOCondition condition, struct DCC *dcc) +{ + int len; + + while (1) + { + /* try to fill up 4 bytes */ + len = recv (dcc->sok, dcc->ack_buf, 4 - dcc->ack_pos, 0); + if (len < 1) + { + if (len < 0) + { + if (would_block ()) /* ok - keep waiting */ + return TRUE; + } + EMIT_SIGNAL (XP_TE_DCCSENDFAIL, dcc->serv->front_session, + file_part (dcc->file), dcc->nick, + errorstring ((len < 0) ? sock_error () : 0), NULL, 0); + dcc_close (dcc, STAT_FAILED, FALSE); + return TRUE; + } + + dcc->ack_pos += len; + if (dcc->ack_pos >= 4) + { + dcc->ack_pos = 0; + if (dcc_handle_new_ack (dcc)) + return TRUE; + } + /* loop again until would_block() returns true */ + } +} + +static gboolean +dcc_accept (GIOChannel *source, GIOCondition condition, struct DCC *dcc) +{ + char host[128]; + struct sockaddr_in CAddr; + int sok; + socklen_t len; + + len = sizeof (CAddr); + sok = accept (dcc->sok, (struct sockaddr *) &CAddr, &len); + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + closesocket (dcc->sok); + if (sok < 0) + { + dcc->sok = -1; + dcc_close (dcc, STAT_FAILED, FALSE); + return TRUE; + } + set_nonblocking (sok); + dcc->sok = sok; + dcc->addr = ntohl (CAddr.sin_addr.s_addr); + + if (dcc->pasvid) + return dcc_connect_finished (NULL, 0, dcc); + + dcc->dccstat = STAT_ACTIVE; + dcc->lasttime = dcc->starttime = time (0); + dcc->fastsend = prefs.fastdccsend; + + snprintf (host, sizeof (host), "%s:%d", net_ip (dcc->addr), dcc->port); + + switch (dcc->type) + { + case TYPE_SEND: + if (dcc->fastsend) + dcc->wiotag = fe_input_add (sok, FIA_WRITE, dcc_send_data, dcc); + dcc->iotag = fe_input_add (sok, FIA_READ|FIA_EX, dcc_read_ack, dcc); + dcc_send_data (NULL, 0, (gpointer)dcc); + EMIT_SIGNAL (XP_TE_DCCCONSEND, dcc->serv->front_session, + dcc->nick, host, dcc->file, NULL, 0); + break; + + case TYPE_CHATSEND: + dcc_open_query (dcc->serv, dcc->nick); + dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, dcc_read_chat, dcc); + dcc->dccchat = malloc (sizeof (struct dcc_chat)); + dcc->dccchat->pos = 0; + EMIT_SIGNAL (XP_TE_DCCCONCHAT, dcc->serv->front_session, + dcc->nick, host, NULL, NULL, 0); + break; + } + + fe_dcc_update (dcc); + + return TRUE; +} + +guint32 +dcc_get_my_address (void) /* the address we'll tell the other person */ +{ + struct hostent *dns_query; + guint32 addr = 0; + + if (prefs.ip_from_server && prefs.dcc_ip) + addr = prefs.dcc_ip; + else if (prefs.dcc_ip_str[0]) + { + dns_query = gethostbyname ((const char *) prefs.dcc_ip_str); + + if (dns_query != NULL && + dns_query->h_length == 4 && + dns_query->h_addr_list[0] != NULL) + { + /*we're offered at least one IPv4 address: we take the first*/ + addr = *((guint32*) dns_query->h_addr_list[0]); + } + } + + return addr; +} + +static int +dcc_listen_init (struct DCC *dcc, session *sess) +{ + guint32 my_addr; + struct sockaddr_in SAddr; + int i, bindretval = -1; + socklen_t len; + + dcc->sok = socket (AF_INET, SOCK_STREAM, 0); + if (dcc->sok == -1) + return FALSE; + + memset (&SAddr, 0, sizeof (struct sockaddr_in)); + + len = sizeof (SAddr); + getsockname (dcc->serv->sok, (struct sockaddr *) &SAddr, &len); + + SAddr.sin_family = AF_INET; + + /*if local_ip is specified use that*/ + if (prefs.local_ip != 0xffffffff) + { + my_addr = prefs.local_ip; + SAddr.sin_addr.s_addr = prefs.local_ip; + } + /*otherwise use the default*/ + else + my_addr = SAddr.sin_addr.s_addr; + + /*if we have a valid portrange try to use that*/ + if (prefs.first_dcc_send_port > 0) + { + SAddr.sin_port = 0; + i = 0; + while ((prefs.last_dcc_send_port > ntohs(SAddr.sin_port)) && + (bindretval == -1)) + { + SAddr.sin_port = htons (prefs.first_dcc_send_port + i); + i++; + /*printf("Trying to bind against port: %d\n",ntohs(SAddr.sin_port));*/ + bindretval = bind (dcc->sok, (struct sockaddr *) &SAddr, sizeof (SAddr)); + } + + /* with a small port range, reUseAddr is needed */ + len = 1; + setsockopt (dcc->sok, SOL_SOCKET, SO_REUSEADDR, (char *) &len, sizeof (len)); + + } else + { + /* try random port */ + SAddr.sin_port = 0; + bindretval = bind (dcc->sok, (struct sockaddr *) &SAddr, sizeof (SAddr)); + } + + if (bindretval == -1) + { + /* failed to bind */ + PrintText (sess, "Failed to bind to any address or port.\n"); + return FALSE; + } + + len = sizeof (SAddr); + getsockname (dcc->sok, (struct sockaddr *) &SAddr, &len); + + dcc->port = ntohs (SAddr.sin_port); + + /*if we have a dcc_ip, we use that, so the remote client can connect*/ + /*else we try to take an address from dcc_ip_str*/ + /*if something goes wrong we tell the client to connect to our LAN ip*/ + dcc->addr = dcc_get_my_address (); + + /*if nothing else worked we use the address we bound to*/ + if (dcc->addr == 0) + dcc->addr = my_addr; + + dcc->addr = ntohl (dcc->addr); + + set_nonblocking (dcc->sok); + listen (dcc->sok, 1); + set_blocking (dcc->sok); + + dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, dcc_accept, dcc); + + return TRUE; +} + +static struct session *dccsess; +static char *dccto; /* lame!! */ +static int dccmaxcps; +static int recursive = FALSE; + +static void +dcc_send_wild (char *file) +{ + dcc_send (dccsess, dccto, file, dccmaxcps, 0); +} + +void +dcc_send (struct session *sess, char *to, char *file, int maxcps, int passive) +{ + char outbuf[512]; + struct stat st; + struct DCC *dcc; + char *file_fs; + + /* this is utf8 */ + file = expand_homedir (file); + + if (!recursive && (strchr (file, '*') || strchr (file, '?'))) + { + char path[256]; + char wild[256]; + char *path_fs; /* local filesystem encoding */ + + safe_strcpy (wild, file_part (file), sizeof (wild)); + path_part (file, path, sizeof (path)); + if (path[0] != '/' || path[1] != '\0') + path[strlen (path) - 1] = 0; /* remove trailing slash */ + + dccsess = sess; + dccto = to; + dccmaxcps = maxcps; + + free (file); + + /* for_files() will use opendir, so we need local FS encoding */ + path_fs = xchat_filename_from_utf8 (path, -1, 0, 0, 0); + if (path_fs) + { + recursive = TRUE; + for_files (path_fs, wild, dcc_send_wild); + recursive = FALSE; + g_free (path_fs); + } + + return; + } + + dcc = new_dcc (); + if (!dcc) + return; + dcc->file = file; + dcc->maxcps = maxcps; + + /* get the local filesystem encoding */ + file_fs = xchat_filename_from_utf8 (file, -1, 0, 0, 0); + + if (stat (file_fs, &st) != -1) + { + +#ifndef USE_DCC64 + if (sizeof (st.st_size) > 4 && st.st_size > 4294967295U) + { + PrintText (sess, "Cannot send files larger than 4 GB.\n"); + goto xit; + } +#endif + + if (!(*file_part (file_fs)) || S_ISDIR (st.st_mode) || st.st_size < 1) + { + PrintText (sess, "Cannot send directories or empty files.\n"); + goto xit; + } + + dcc->starttime = dcc->offertime = time (0); + dcc->serv = sess->server; + dcc->dccstat = STAT_QUEUED; + dcc->size = st.st_size; + dcc->type = TYPE_SEND; + dcc->fp = open (file_fs, OFLAGS | O_RDONLY); + if (dcc->fp != -1) + { + g_free (file_fs); + if (passive || dcc_listen_init (dcc, sess)) + { + char havespaces = 0; + file = dcc->file; + while (*file) + { + if (*file == ' ') + { + if (prefs.dcc_send_fillspaces) + *file = '_'; + else + havespaces = 1; + } + file++; + } + dcc->nick = strdup (to); + if (prefs.autoopendccsendwindow) + { + if (fe_dcc_open_send_win (TRUE)) /* already open? add */ + fe_dcc_add (dcc); + } else + fe_dcc_add (dcc); + + if (passive) + { + dcc->pasvid = new_id(); + snprintf (outbuf, sizeof (outbuf), (havespaces) ? + "DCC SEND \"%s\" 199 0 %"DCC_SFMT" %d" : + "DCC SEND %s 199 0 %"DCC_SFMT" %d", + file_part (dcc->file), + dcc->size, dcc->pasvid); + } else + { + snprintf (outbuf, sizeof (outbuf), (havespaces) ? + "DCC SEND \"%s\" %u %d %"DCC_SFMT : + "DCC SEND %s %u %d %"DCC_SFMT, + file_part (dcc->file), dcc->addr, + dcc->port, dcc->size); + } + sess->server->p_ctcp (sess->server, to, outbuf); + + EMIT_SIGNAL (XP_TE_DCCOFFER, sess, file_part (dcc->file), + to, dcc->file, NULL, 0); + } else + { + dcc_close (dcc, 0, TRUE); + } + return; + } + } + PrintTextf (sess, _("Cannot access %s\n"), dcc->file); + PrintTextf (sess, "%s %d: %s\n", _("Error"), errno, errorstring (errno)); +xit: + g_free (file_fs); + dcc_close (dcc, 0, TRUE); +} + +static struct DCC * +find_dcc_from_id (int id, int type) +{ + struct DCC *dcc; + GSList *list = dcc_list; + while (list) + { + dcc = (struct DCC *) list->data; + if (dcc->pasvid == id && + dcc->dccstat == STAT_QUEUED && dcc->type == type) + return dcc; + list = list->next; + } + return 0; +} + +static struct DCC * +find_dcc_from_port (int port, int type) +{ + struct DCC *dcc; + GSList *list = dcc_list; + while (list) + { + dcc = (struct DCC *) list->data; + if (dcc->port == port && + dcc->dccstat == STAT_QUEUED && dcc->type == type) + return dcc; + list = list->next; + } + return 0; +} + +struct DCC * +find_dcc (char *nick, char *file, int type) +{ + GSList *list = dcc_list; + struct DCC *dcc; + while (list) + { + dcc = (struct DCC *) list->data; + if (nick == NULL || !rfc_casecmp (nick, dcc->nick)) + { + if (type == -1 || dcc->type == type) + { + if (!file[0]) + return dcc; + if (!strcasecmp (file, file_part (dcc->file))) + return dcc; + if (!strcasecmp (file, dcc->file)) + return dcc; + } + } + list = list->next; + } + return 0; +} + +/* called when we receive a NICK change from server */ + +void +dcc_change_nick (struct server *serv, char *oldnick, char *newnick) +{ + struct DCC *dcc; + GSList *list = dcc_list; + + while (list) + { + dcc = (struct DCC *) list->data; + if (dcc->serv == serv) + { + if (!serv->p_cmp (dcc->nick, oldnick)) + { + if (dcc->nick) + free (dcc->nick); + dcc->nick = strdup (newnick); + } + } + list = list->next; + } +} + +/* is the destination file the same? new_dcc is not opened yet */ + +static int +is_same_file (struct DCC *dcc, struct DCC *new_dcc) +{ + struct stat st_a, st_b; + + /* if it's the same filename, must be same */ + if (strcmp (dcc->destfile, new_dcc->destfile) == 0) + return TRUE; + + /* now handle case-insensitive Filesystems: HFS+, FAT */ +#ifdef WIN32 +#warning no win32 implementation - behaviour may be unreliable +#else + /* this fstat() shouldn't really fail */ + if ((dcc->fp == -1 ? stat (dcc->destfile_fs, &st_a) : fstat (dcc->fp, &st_a)) == -1) + return FALSE; + if (stat (new_dcc->destfile_fs, &st_b) == -1) + return FALSE; + + /* same inode, same device, same file! */ + if (st_a.st_ino == st_b.st_ino && + st_a.st_dev == st_b.st_dev) + return TRUE; +#endif + + return FALSE; +} + +static int +is_resumable (struct DCC *dcc) +{ + dcc->resumable = 0; + + /* Check the file size */ + if (access (dcc->destfile_fs, W_OK) == 0) + { + struct stat st; + + if (stat (dcc->destfile_fs, &st) != -1) + { + if (st.st_size < dcc->size) + { + dcc->resumable = st.st_size; + dcc->pos = st.st_size; + } + else + dcc->resume_error = 2; + } else + { + dcc->resume_errno = errno; + dcc->resume_error = 1; + } + } else + { + dcc->resume_errno = errno; + dcc->resume_error = 1; + } + + /* Now verify that this DCC is not already in progress from someone else */ + + if (dcc->resumable) + { + GSList *list = dcc_list; + struct DCC *d; + while (list) + { + d = list->data; + if (d->type == TYPE_RECV && d->dccstat != STAT_ABORTED && + d->dccstat != STAT_DONE && d->dccstat != STAT_FAILED) + { + if (d != dcc && is_same_file (d, dcc)) + { + dcc->resume_error = 3; /* dccgui.c uses it */ + dcc->resumable = 0; + dcc->pos = 0; + break; + } + } + list = list->next; + } + } + + return dcc->resumable; +} + +void +dcc_get (struct DCC *dcc) +{ + switch (dcc->dccstat) + { + case STAT_QUEUED: + if (dcc->type != TYPE_CHATSEND) + { + if (dcc->type == TYPE_RECV && prefs.autoresume && dcc->resumable) + { + dcc_resume (dcc); + } + else + { + dcc->resumable = 0; + dcc->pos = 0; + dcc_connect (dcc); + } + } + break; + case STAT_DONE: + case STAT_FAILED: + case STAT_ABORTED: + dcc_close (dcc, 0, TRUE); + break; + } +} + +/* for "Save As..." dialog */ + +void +dcc_get_with_destfile (struct DCC *dcc, char *file) +{ + g_free (dcc->destfile); + dcc->destfile = g_strdup (file); /* utf-8 */ + + /* get the local filesystem encoding */ + g_free (dcc->destfile_fs); + dcc->destfile_fs = xchat_filename_from_utf8 (dcc->destfile, -1, 0, 0, 0); + + /* since destfile changed, must check resumability again */ + is_resumable (dcc); + + dcc_get (dcc); +} + +void +dcc_get_nick (struct session *sess, char *nick) +{ + struct DCC *dcc; + GSList *list = dcc_list; + while (list) + { + dcc = (struct DCC *) list->data; + if (!sess->server->p_cmp (nick, dcc->nick)) + { + if (dcc->dccstat == STAT_QUEUED && dcc->type == TYPE_RECV) + { + dcc->resumable = 0; + dcc->pos = 0; + dcc->ack = 0; + dcc_connect (dcc); + return; + } + } + list = list->next; + } + if (sess) + EMIT_SIGNAL (XP_TE_DCCIVAL, sess, NULL, NULL, NULL, NULL, 0); +} + +static struct DCC * +new_dcc (void) +{ + struct DCC *dcc = malloc (sizeof (struct DCC)); + if (!dcc) + return 0; + memset (dcc, 0, sizeof (struct DCC)); + dcc->sok = -1; + dcc->fp = -1; + dcc_list = g_slist_prepend (dcc_list, dcc); + return (dcc); +} + +void +dcc_chat (struct session *sess, char *nick, int passive) +{ + char outbuf[512]; + struct DCC *dcc; + + dcc = find_dcc (nick, "", TYPE_CHATSEND); + if (dcc) + { + switch (dcc->dccstat) + { + case STAT_ACTIVE: + case STAT_QUEUED: + case STAT_CONNECTING: + EMIT_SIGNAL (XP_TE_DCCCHATREOFFER, sess, nick, NULL, NULL, NULL, 0); + return; + case STAT_ABORTED: + case STAT_FAILED: + dcc_close (dcc, 0, TRUE); + } + } + dcc = find_dcc (nick, "", TYPE_CHATRECV); + if (dcc) + { + switch (dcc->dccstat) + { + case STAT_QUEUED: + dcc_connect (dcc); + break; + case STAT_FAILED: + case STAT_ABORTED: + dcc_close (dcc, 0, TRUE); + } + return; + } + /* offer DCC CHAT */ + + dcc = new_dcc (); + if (!dcc) + return; + dcc->starttime = dcc->offertime = time (0); + dcc->serv = sess->server; + dcc->dccstat = STAT_QUEUED; + dcc->type = TYPE_CHATSEND; + dcc->nick = strdup (nick); + if (passive || dcc_listen_init (dcc, sess)) + { + if (prefs.autoopendccchatwindow) + { + if (fe_dcc_open_chat_win (TRUE)) /* already open? add only */ + fe_dcc_add (dcc); + } else + fe_dcc_add (dcc); + + if (passive) + { + dcc->pasvid = new_id (); + snprintf (outbuf, sizeof (outbuf), "DCC CHAT chat 199 %d %d", + dcc->port, dcc->pasvid); + } else + { + snprintf (outbuf, sizeof (outbuf), "DCC CHAT chat %u %d", + dcc->addr, dcc->port); + } + dcc->serv->p_ctcp (dcc->serv, nick, outbuf); + EMIT_SIGNAL (XP_TE_DCCCHATOFFERING, sess, nick, NULL, NULL, NULL, 0); + } else + { + dcc_close (dcc, 0, TRUE); + } +} + +static void +dcc_malformed (struct session *sess, char *nick, char *data) +{ + EMIT_SIGNAL (XP_TE_MALFORMED, sess, nick, data, NULL, NULL, 0); +} + +int +dcc_resume (struct DCC *dcc) +{ + char tbuf[500]; + + if (dcc->dccstat == STAT_QUEUED && dcc->resumable) + { + dcc->resume_sent = 1; + /* filename contains spaces? Quote them! */ + snprintf (tbuf, sizeof (tbuf) - 10, strchr (dcc->file, ' ') ? + "DCC RESUME \"%s\" %d %"DCC_SFMT : + "DCC RESUME %s %d %"DCC_SFMT, + dcc->file, dcc->port, dcc->resumable); + + if (dcc->pasvid) + sprintf (tbuf + strlen (tbuf), " %d", dcc->pasvid); + + dcc->serv->p_ctcp (dcc->serv, dcc->nick, tbuf); + return 1; + } + + return 0; +} + +static void +dcc_confirm_send (void *ud) +{ + struct DCC *dcc = (struct DCC *) ud; + dcc_get (dcc); +} + +static void +dcc_deny_send (void *ud) +{ + struct DCC *dcc = (struct DCC *) ud; + dcc_abort (dcc->serv->front_session, dcc); +} + +static void +dcc_confirm_chat (void *ud) +{ + struct DCC *dcc = (struct DCC *) ud; + dcc_connect (dcc); +} + +static void +dcc_deny_chat (void *ud) +{ + struct DCC *dcc = (struct DCC *) ud; + dcc_abort (dcc->serv->front_session, dcc); +} + +static struct DCC * +dcc_add_chat (session *sess, char *nick, int port, guint32 addr, int pasvid) +{ + struct DCC *dcc; + + dcc = new_dcc (); + if (dcc) + { + dcc->serv = sess->server; + dcc->type = TYPE_CHATRECV; + dcc->dccstat = STAT_QUEUED; + dcc->addr = addr; + dcc->port = port; + dcc->pasvid = pasvid; + dcc->nick = strdup (nick); + dcc->starttime = time (0); + + EMIT_SIGNAL (XP_TE_DCCCHATOFFER, sess->server->front_session, nick, + NULL, NULL, NULL, 0); + + if (prefs.autoopendccchatwindow) + { + if (fe_dcc_open_chat_win (TRUE)) /* already open? add only */ + fe_dcc_add (dcc); + } else + fe_dcc_add (dcc); + + if (prefs.autodccchat == 1) + dcc_connect (dcc); + else if (prefs.autodccchat == 2) + { + char buff[128]; + snprintf (buff, sizeof (buff), "%s is offering DCC Chat. Do you want to accept?", nick); + fe_confirm (buff, dcc_confirm_chat, dcc_deny_chat, dcc); + } + } + + return dcc; +} + +static struct DCC * +dcc_add_file (session *sess, char *file, DCC_SIZE size, int port, char *nick, guint32 addr, int pasvid) +{ + struct DCC *dcc; + char tbuf[512]; + + dcc = new_dcc (); + if (dcc) + { + dcc->file = strdup (file); + + dcc->destfile = g_malloc (strlen (prefs.dccdir) + strlen (nick) + + strlen (file) + 4); + + strcpy (dcc->destfile, prefs.dccdir); + if (prefs.dccdir[strlen (prefs.dccdir) - 1] != '/') + strcat (dcc->destfile, "/"); + if (prefs.dccwithnick) + { +#ifdef WIN32 + char *t = strlen (dcc->destfile) + dcc->destfile; + strcpy (t, nick); + while (*t) + { + if (*t == '\\' || *t == '|') + *t = '_'; + t++; + } +#else + strcat (dcc->destfile, nick); +#endif + strcat (dcc->destfile, "."); + } + strcat (dcc->destfile, file); + + /* get the local filesystem encoding */ + dcc->destfile_fs = xchat_filename_from_utf8 (dcc->destfile, -1, 0, 0, 0); + + dcc->resumable = 0; + dcc->pos = 0; + dcc->serv = sess->server; + dcc->type = TYPE_RECV; + dcc->dccstat = STAT_QUEUED; + dcc->addr = addr; + dcc->port = port; + dcc->pasvid = pasvid; + dcc->size = size; + dcc->nick = strdup (nick); + dcc->maxcps = prefs.dcc_max_get_cps; + + is_resumable (dcc); + + /* autodccsend is really autodccrecv.. right? */ + + if (prefs.autodccsend == 1) + { + dcc_get (dcc); + } + else if (prefs.autodccsend == 2) + { + snprintf (tbuf, sizeof (tbuf), _("%s is offering \"%s\". Do you want to accept?"), nick, file); + fe_confirm (tbuf, dcc_confirm_send, dcc_deny_send, dcc); + } + if (prefs.autoopendccrecvwindow) + { + if (fe_dcc_open_recv_win (TRUE)) /* was already open? just add*/ + fe_dcc_add (dcc); + } else + fe_dcc_add (dcc); + } + sprintf (tbuf, "%"DCC_SFMT, size); + snprintf (tbuf + 24, 300, "%s:%d", net_ip (addr), port); + EMIT_SIGNAL (XP_TE_DCCSENDOFFER, sess->server->front_session, nick, + file, tbuf, tbuf + 24, 0); + + return dcc; +} + +void +handle_dcc (struct session *sess, char *nick, char *word[], + char *word_eol[]) +{ + char tbuf[512]; + struct DCC *dcc; + char *type = word[5]; + int port, pasvid = 0; + guint32 addr; + DCC_SIZE size; + int psend = 0; + + if (!strcasecmp (type, "CHAT")) + { + port = atoi (word[8]); + addr = strtoul (word[7], NULL, 10); + + if (port == 0) + pasvid = atoi (word[9]); + else if (word[9][0] != 0) + { + pasvid = atoi (word[9]); + psend = 1; + } + + if (!addr /*|| (port < 1024 && port != 0)*/ + || port > 0xffff || (port == 0 && pasvid == 0)) + { + dcc_malformed (sess, nick, word_eol[4] + 2); + return; + } + + if (psend) + { + dcc = find_dcc_from_id (pasvid, TYPE_CHATSEND); + if (dcc) + { + dcc->addr = addr; + dcc->port = port; + dcc_connect (dcc); + } else + { + dcc_malformed (sess, nick, word_eol[4] + 2); + } + return; + } + + dcc = find_dcc (nick, "", TYPE_CHATSEND); + if (dcc) + dcc_close (dcc, 0, TRUE); + + dcc = find_dcc (nick, "", TYPE_CHATRECV); + if (dcc) + dcc_close (dcc, 0, TRUE); + + dcc_add_chat (sess, nick, port, addr, pasvid); + return; + } + + if (!strcasecmp (type, "Resume")) + { + port = atoi (word[7]); + + if (port == 0) + { /* PASSIVE */ + pasvid = atoi(word[9]); + dcc = find_dcc_from_id(pasvid, TYPE_SEND); + } else + { + dcc = find_dcc_from_port (port, TYPE_SEND); + } + if (!dcc) + dcc = find_dcc (nick, word[6], TYPE_SEND); + if (dcc) + { + size = BIG_STR_TO_INT (word[8]); + dcc->resumable = size; + if (dcc->resumable < dcc->size) + { + dcc->pos = dcc->resumable; + dcc->ack = dcc->resumable; + lseek (dcc->fp, dcc->pos, SEEK_SET); + + /* Checking if dcc is passive and if filename contains spaces */ + if (dcc->pasvid) + snprintf (tbuf, sizeof (tbuf), strchr (file_part (dcc->file), ' ') ? + "DCC ACCEPT \"%s\" %d %"DCC_SFMT" %d" : + "DCC ACCEPT %s %d %"DCC_SFMT" %d", + file_part (dcc->file), port, dcc->resumable, dcc->pasvid); + else + snprintf (tbuf, sizeof (tbuf), strchr (file_part (dcc->file), ' ') ? + "DCC ACCEPT \"%s\" %d %"DCC_SFMT : + "DCC ACCEPT %s %d %"DCC_SFMT, + file_part (dcc->file), port, dcc->resumable); + + dcc->serv->p_ctcp (dcc->serv, dcc->nick, tbuf); + } + sprintf (tbuf, "%"DCC_SFMT, dcc->pos); + EMIT_SIGNAL (XP_TE_DCCRESUMEREQUEST, sess, nick, + file_part (dcc->file), tbuf, NULL, 0); + } + return; + } + if (!strcasecmp (type, "Accept")) + { + port = atoi (word[7]); + dcc = find_dcc_from_port (port, TYPE_RECV); + if (dcc && dcc->dccstat == STAT_QUEUED) + { + dcc_connect (dcc); + } + return; + } + if (!strcasecmp (type, "SEND")) + { + char *file = file_part (word[6]); + + port = atoi (word[8]); + addr = strtoul (word[7], NULL, 10); + size = BIG_STR_TO_INT (word[9]); + + if (port == 0) /* Passive dcc requested */ + pasvid = atoi (word[10]); + else if (word[10][0] != 0) + { + /* Requesting passive dcc. + * Destination user of an active dcc is giving his + * TRUE address/port/pasvid data. + * This information will be used later to + * establish the connection to the user. + * We can recognize this type of dcc using word[10] + * because this field is always null (no pasvid) + * in normal dcc sends. + */ + pasvid = atoi (word[10]); + psend = 1; + } + + + if (!addr || !size /*|| (port < 1024 && port != 0)*/ + || port > 0xffff || (port == 0 && pasvid == 0)) + { + dcc_malformed (sess, nick, word_eol[4] + 2); + return; + } + + if (psend) + { + /* Third Step of Passive send. + * Connecting to the destination and finally + * sending file. + */ + dcc = find_dcc_from_id (pasvid, TYPE_SEND); + if (dcc) + { + dcc->addr = addr; + dcc->port = port; + dcc_connect (dcc); + } else + { + dcc_malformed (sess, nick, word_eol[4] + 2); + } + return; + } + + dcc_add_file (sess, file, size, port, nick, addr, pasvid); + + } else + { + EMIT_SIGNAL (XP_TE_DCCGENERICOFFER, sess->server->front_session, + word_eol[4] + 2, nick, NULL, NULL, 0); + } +} + +void +dcc_show_list (struct session *sess) +{ + int i = 0; + struct DCC *dcc; + GSList *list = dcc_list; + + EMIT_SIGNAL (XP_TE_DCCHEAD, sess, NULL, NULL, NULL, NULL, 0); + while (list) + { + dcc = (struct DCC *) list->data; + i++; + PrintTextf (sess, " %s %-10.10s %-7.7s %-7"DCC_SFMT" %-7"DCC_SFMT" %s\n", + dcctypes[dcc->type], dcc->nick, + _(dccstat[dcc->dccstat].name), dcc->size, dcc->pos, + file_part (dcc->file)); + list = list->next; + } + if (!i) + PrintText (sess, _("No active DCCs\n")); +} diff --git a/etc/wyatt8740/src/common/dcc.h b/etc/wyatt8740/src/common/dcc.h new file mode 100644 index 0000000..da4ce97 --- /dev/null +++ b/etc/wyatt8740/src/common/dcc.h @@ -0,0 +1,117 @@ +/* dcc.h */ + +#include <time.h> /* for time_t */ + +#ifndef XCHAT_DCC_H +#define XCHAT_DCC_H + +#define STAT_QUEUED 0 +#define STAT_ACTIVE 1 +#define STAT_FAILED 2 +#define STAT_DONE 3 +#define STAT_CONNECTING 4 +#define STAT_ABORTED 5 + +#define TYPE_SEND 0 +#define TYPE_RECV 1 +#define TYPE_CHATRECV 2 +#define TYPE_CHATSEND 3 + +#define CPS_AVG_WINDOW 10 + +/* can we do 64-bit dcc? */ +#if defined(G_GINT64_FORMAT) && defined(HAVE_STRTOULL) +#define USE_DCC64 +/* we really get only 63 bits, since st_size is signed */ +#define DCC_SIZE gint64 +#define DCC_SFMT G_GINT64_FORMAT +#else +#define DCC_SIZE unsigned int +#define DCC_SFMT "u" +#endif + +struct DCC +{ + struct server *serv; + struct dcc_chat *dccchat; + struct proxy_state *proxy; + guint32 addr; /* the 32bit IP number, host byte order */ + int fp; /* file pointer */ + int sok; + int iotag; /* reading io tag */ + int wiotag; /* writing/sending io tag */ + int port; + int pasvid; /* mIRC's passive DCC id */ + int cps; + int resume_error; + int resume_errno; + + GTimeVal lastcpstv, firstcpstv; + DCC_SIZE lastcpspos; + int maxcps; + + unsigned char ack_buf[4]; /* buffer for reading 4-byte ack */ + int ack_pos; + + DCC_SIZE size; + DCC_SIZE resumable; + DCC_SIZE ack; + DCC_SIZE pos; + time_t starttime; + time_t offertime; + time_t lasttime; + char *file; /* utf8 */ + char *destfile; /* utf8 */ + char *destfile_fs; /* local filesystem encoding */ + char *nick; + unsigned char type; /* 0 = SEND 1 = RECV 2 = CHAT */ + unsigned char dccstat; /* 0 = QUEUED 1 = ACTIVE 2 = FAILED 3 = DONE */ + unsigned int resume_sent:1; /* resume request sent */ + unsigned int fastsend:1; + unsigned int ackoffset:1; /* is reciever sending acks as an offset from */ + /* the resume point? */ + unsigned int throttled:2; /* 0x1 = per send/get throttle + 0x2 = global throttle */ +}; + +#define MAX_PROXY_BUFFER 1024 +struct proxy_state +{ + int phase; + unsigned char buffer[MAX_PROXY_BUFFER]; + int buffersize; + int bufferused; +}; + +struct dcc_chat +{ + char linebuf[2048]; + int pos; +}; + +struct dccstat_info +{ + char *name; /* Display name */ + int color; /* Display color (index into colors[] ) */ +}; + +extern struct dccstat_info dccstat[]; + +gboolean is_dcc (struct DCC *dcc); +void dcc_abort (session *sess, struct DCC *dcc); +void dcc_get (struct DCC *dcc); +int dcc_resume (struct DCC *dcc); +void dcc_check_timeouts (void); +void dcc_change_nick (server *serv, char *oldnick, char *newnick); +void dcc_notify_kill (struct server *serv); +struct DCC *dcc_write_chat (char *nick, char *text); +void dcc_send (struct session *sess, char *to, char *file, int maxcps, int passive); +struct DCC *find_dcc (char *nick, char *file, int type); +void dcc_get_nick (struct session *sess, char *nick); +void dcc_chat (session *sess, char *nick, int passive); +void handle_dcc (session *sess, char *nick, char *word[], char *word_eol[]); +void dcc_show_list (session *sess); +guint32 dcc_get_my_address (void); +void dcc_get_with_destfile (struct DCC *dcc, char *utf8file); + +#endif diff --git a/etc/wyatt8740/src/common/fe.h b/etc/wyatt8740/src/common/fe.h new file mode 100644 index 0000000..1652658 --- /dev/null +++ b/etc/wyatt8740/src/common/fe.h @@ -0,0 +1,162 @@ +#include "userlist.h" +#include "dcc.h" + +#ifndef XCHAT_FE_H +#define XCHAT_FE_H + +/* for storage of /menu entries */ +typedef struct +{ + gint32 pos; /* position */ + gint16 modifier; /* keybinding */ + gint16 root_offset; /* bytes to offset ->path */ + + char is_main; /* is part of the Main menu? (not a popup) */ + char state; /* state of toggle items */ + char markup; /* use pango markup? */ + char enable; /* enabled? sensitivity */ + + int key; + char *path; + char *label; + char *cmd; + char *ucmd; /* unselect command (toggles) */ + char *group; /* for radio items or NULL */ + char *icon; /* filename */ +} menu_entry; + +int fe_args (int argc, char *argv[]); +void fe_init (void); +void fe_main (void); +void fe_cleanup (void); +void fe_exit (void); +int fe_timeout_add (int interval, void *callback, void *userdata); +void fe_timeout_remove (int tag); +void fe_new_window (struct session *sess, int focus); +void fe_new_server (struct server *serv); +void fe_add_rawlog (struct server *serv, char *text, int len, int outbound); +#define FE_MSG_WAIT 1 +#define FE_MSG_INFO 2 +#define FE_MSG_WARN 4 +#define FE_MSG_ERROR 8 +#define FE_MSG_MARKUP 16 +void fe_message (char *msg, int flags); +#define FIA_READ 1 +#define FIA_WRITE 2 +#define FIA_EX 4 +#define FIA_FD 8 +int fe_input_add (int sok, int flags, void *func, void *data); +void fe_input_remove (int tag); +void fe_idle_add (void *func, void *data); +void fe_set_topic (struct session *sess, char *topic, char *stripped_topic); +void fe_set_hilight (struct session *sess); +void fe_set_tab_color (struct session *sess, int col); +void fe_flash_window (struct session *sess); +void fe_update_mode_buttons (struct session *sess, char mode, char sign); +void fe_update_channel_key (struct session *sess); +void fe_update_channel_limit (struct session *sess); +int fe_is_chanwindow (struct server *serv); +void fe_add_chan_list (struct server *serv, char *chan, char *users, + char *topic); +void fe_chan_list_end (struct server *serv); +int fe_is_banwindow (struct session *sess); +void fe_add_ban_list (struct session *sess, char *mask, char *who, char *when, int is_exemption); +void fe_ban_list_end (struct session *sess, int is_exemption); +void fe_notify_update (char *name); +void fe_notify_ask (char *name, char *networks); +void fe_text_clear (struct session *sess, int lines); +void fe_close_window (struct session *sess); +void fe_progressbar_start (struct session *sess); +void fe_progressbar_end (struct server *serv); +void fe_print_text (struct session *sess, char *text, time_t stamp); +void fe_userlist_insert (struct session *sess, struct User *newuser, int row, int sel); +int fe_userlist_remove (struct session *sess, struct User *user); +void fe_userlist_rehash (struct session *sess, struct User *user); +void fe_userlist_update (struct session *sess, struct User *user); +void fe_userlist_move (struct session *sess, struct User *user, int new_row); +void fe_userlist_numbers (struct session *sess); +void fe_userlist_clear (struct session *sess); +void fe_userlist_set_selected (struct session *sess); +void fe_uselect (session *sess, char *word[], int do_clear, int scroll_to); +void fe_dcc_add (struct DCC *dcc); +void fe_dcc_update (struct DCC *dcc); +void fe_dcc_remove (struct DCC *dcc); +int fe_dcc_open_recv_win (int passive); +int fe_dcc_open_send_win (int passive); +int fe_dcc_open_chat_win (int passive); +void fe_clear_channel (struct session *sess); +void fe_session_callback (struct session *sess); +void fe_server_callback (struct server *serv); +void fe_url_add (const char *text); +void fe_pluginlist_update (void); +void fe_buttons_update (struct session *sess); +void fe_dlgbuttons_update (struct session *sess); +void fe_dcc_send_filereq (struct session *sess, char *nick, int maxcps, int passive); +void fe_set_channel (struct session *sess); +void fe_set_title (struct session *sess); +void fe_set_nonchannel (struct session *sess, int state); +void fe_set_nick (struct server *serv, char *newnick); +void fe_ignore_update (int level); +void fe_beep (void); +void fe_lastlog (session *sess, session *lastlog_sess, char *sstr, gboolean regexp); +void fe_set_lag (server *serv, int lag); +void fe_set_throttle (server *serv); +void fe_set_away (server *serv); +void fe_serverlist_open (session *sess); +void fe_get_str (char *prompt, char *def, void *callback, void *ud); +void fe_get_int (char *prompt, int def, void *callback, void *ud); +#define FRF_WRITE 1 /* save file */ +#define FRF_MULTIPLE 2 /* multi-select */ +#define FRF_ADDFOLDER 4 /* add ~/.xchat2 to favourites */ +#define FRF_CHOOSEFOLDER 8 /* choosing a folder only */ +#define FRF_FILTERISINITIAL 16 /* unused */ +#define FRF_NOASKOVERWRITE 32 /* don't ask to overwrite existing files */ +void fe_get_file (const char *title, char *initial, + void (*callback) (void *userdata, char *file), void *userdata, + int flags); +typedef enum { + FE_GUI_HIDE, + FE_GUI_SHOW, + FE_GUI_FOCUS, + FE_GUI_FLASH, + FE_GUI_COLOR, + FE_GUI_ICONIFY, + FE_GUI_MENU, + FE_GUI_ATTACH, + FE_GUI_APPLY, +} fe_gui_action; +void fe_ctrl_gui (session *sess, fe_gui_action action, int arg); +int fe_gui_info (session *sess, int info_type); +void *fe_gui_info_ptr (session *sess, int info_type); +void fe_confirm (const char *message, void (*yesproc)(void *), void (*noproc)(void *), void *ud); +char *fe_get_inputbox_contents (struct session *sess); +int fe_get_inputbox_cursor (struct session *sess); +void fe_set_inputbox_contents (struct session *sess, char *text); +void fe_set_inputbox_cursor (struct session *sess, int delta, int pos); +void fe_open_url (const char *url); +void fe_menu_del (menu_entry *); +char *fe_menu_add (menu_entry *); +void fe_menu_update (menu_entry *); +#define FE_SE_CONNECT 0 +#define FE_SE_LOGGEDIN 1 +#define FE_SE_DISCONNECT 2 +#define FE_SE_RECONDELAY 3 +#define FE_SE_CONNECTING 4 +void fe_server_event (server *serv, int type, int arg); +/* pass NULL filename2 for default xchat icon */ +void fe_tray_set_flash (const char *filename1, const char *filename2, int timeout); +/* pass NULL filename for default xchat icon */ +void fe_tray_set_file (const char *filename); +typedef enum +{ + FE_ICON_NORMAL = 0, + FE_ICON_MESSAGE = 2, + FE_ICON_HIGHLIGHT = 5, + FE_ICON_PRIVMSG = 8, + FE_ICON_FILEOFFER = 11 +} feicon; +void fe_tray_set_icon (feicon icon); +void fe_tray_set_tooltip (const char *text); +void fe_tray_set_balloon (const char *title, const char *text); + +#endif diff --git a/etc/wyatt8740/src/common/history.c b/etc/wyatt8740/src/common/history.c new file mode 100644 index 0000000..1cd6b50 --- /dev/null +++ b/etc/wyatt8740/src/common/history.c @@ -0,0 +1,121 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <string.h> +#include <stdlib.h> +#include "history.h" + +void +history_add (struct history *his, char *text) +{ + if (his->lines[his->realpos]) + free (his->lines[his->realpos]); + his->lines[his->realpos] = strdup (text); + his->realpos++; + if (his->realpos == HISTORY_SIZE) + his->realpos = 0; + his->pos = his->realpos; +} + +void +history_free (struct history *his) +{ + int i; + for (i = 0; i < HISTORY_SIZE; i++) + { + if (his->lines[i]) + { + free (his->lines[i]); + his->lines[i] = 0; + } + } +} + +char * +history_down (struct history *his) +{ + int next; + + if (his->pos == his->realpos) /* allow down only after up */ + return 0; + if (his->realpos == 0) + { + if (his->pos == HISTORY_SIZE - 1) + { + his->pos = 0; + return ""; + } + } else + { + if (his->pos == his->realpos - 1) + { + his->pos++; + return ""; + } + } + + next = 0; + if (his->pos < HISTORY_SIZE - 1) + next = his->pos + 1; + + if (his->lines[next]) + { + his->pos = next; + return his->lines[his->pos]; + } + + return 0; +} + +char * +history_up (struct history *his, char *current_text) +{ + int next; + + if (his->realpos == HISTORY_SIZE - 1) + { + if (his->pos == 0) + return 0; + } else + { + if (his->pos == his->realpos + 1) + return 0; + } + + next = HISTORY_SIZE - 1; + if (his->pos != 0) + next = his->pos - 1; + + if (his->lines[next]) + { + if + ( + current_text[0] && strcmp(current_text, his->lines[next]) && + (!his->lines[his->pos] || strcmp(current_text, his->lines[his->pos])) && + (!his->lines[his->realpos] || strcmp(current_text, his->lines[his->pos])) + ) + { + history_add (his, current_text); + } + + his->pos = next; + return his->lines[his->pos]; + } + + return 0; +} diff --git a/etc/wyatt8740/src/common/history.h b/etc/wyatt8740/src/common/history.h new file mode 100644 index 0000000..5267f1f --- /dev/null +++ b/etc/wyatt8740/src/common/history.h @@ -0,0 +1,18 @@ +#ifndef XCHAT_HISTORY_H +#define XCHAT_HISTORY_H + +#define HISTORY_SIZE 100 + +struct history +{ + char *lines[HISTORY_SIZE]; + int pos; + int realpos; +}; + +void history_add (struct history *his, char *text); +void history_free (struct history *his); +char *history_up (struct history *his, char *current_text); +char *history_down (struct history *his); + +#endif diff --git a/etc/wyatt8740/src/common/identd.c b/etc/wyatt8740/src/common/identd.c new file mode 100644 index 0000000..919282e --- /dev/null +++ b/etc/wyatt8740/src/common/identd.c @@ -0,0 +1,89 @@ +/* simple identd server for xchat under win32 */ + + +static int identd_is_running = FALSE; + + +static int +identd (char *username) +{ + int sok, read_sok, len; + char *p; + char buf[256]; + char outbuf[256]; + struct sockaddr_in addr; + + sok = socket (AF_INET, SOCK_STREAM, 0); + if (sok == INVALID_SOCKET) + { + free (username); + return 0; + } + + len = 1; + setsockopt (sok, SOL_SOCKET, SO_REUSEADDR, (char *) &len, sizeof (len)); + + memset (&addr, 0, sizeof (addr)); + addr.sin_family = AF_INET; + addr.sin_port = htons (113); + + if (bind (sok, (struct sockaddr *) &addr, sizeof (addr)) == SOCKET_ERROR) + { + closesocket (sok); + free (username); + return 0; + } + + if (listen (sok, 1) == SOCKET_ERROR) + { + closesocket (sok); + free (username); + return 0; + } + + len = sizeof (addr); + read_sok = accept (sok, (struct sockaddr *) &addr, &len); + closesocket (sok); + if (read_sok == INVALID_SOCKET) + { + free (username); + return 0; + } + + identd_is_running = FALSE; + + snprintf (outbuf, sizeof (outbuf), "%%\tServicing ident request from %s\n", + inet_ntoa (addr.sin_addr)); + PrintText (current_sess, outbuf); + + recv (read_sok, buf, sizeof (buf) - 1, 0); + buf[sizeof (buf) - 1] = 0; /* ensure null termination */ + + p = strchr (buf, ','); + if (p) + { + snprintf (outbuf, sizeof (outbuf) - 1, "%d, %d : USERID : UNIX : %s\r\n", + atoi (buf), atoi (p + 1), username); + outbuf[sizeof (outbuf) - 1] = 0; /* ensure null termination */ + send (read_sok, outbuf, strlen (outbuf), 0); + } + + sleep (1); + closesocket (read_sok); + free (username); + + return 0; +} + +static void +identd_start (char *username) +{ + DWORD tid; + + if (identd_is_running == FALSE) + { + identd_is_running = TRUE; + CloseHandle (CreateThread (NULL, 0, (LPTHREAD_START_ROUTINE) identd, + strdup (username), 0, &tid)); + } +} diff --git a/etc/wyatt8740/src/common/ignore.c b/etc/wyatt8740/src/common/ignore.c new file mode 100644 index 0000000..0e32161 --- /dev/null +++ b/etc/wyatt8740/src/common/ignore.c @@ -0,0 +1,442 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <unistd.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> + +#include "xchat.h" +#include "ignore.h" +#include "cfgfiles.h" +#include "fe.h" +#include "text.h" +#include "util.h" +#include "xchatc.h" + + +int ignored_ctcp = 0; /* keep a count of all we ignore */ +int ignored_priv = 0; +int ignored_chan = 0; +int ignored_noti = 0; +int ignored_invi = 0; +static int ignored_total = 0; + +/* ignore_exists (): + * returns: struct ig, if this mask is in the ignore list already + * NULL, otherwise + */ +struct ignore * +ignore_exists (char *mask) +{ + struct ignore *ig = 0; + GSList *list; + + list = ignore_list; + while (list) + { + ig = (struct ignore *) list->data; + if (!rfc_casecmp (ig->mask, mask)) + return ig; + list = list->next; + } + return NULL; + +} + +/* ignore_add(...) + + * returns: + * 0 fail + * 1 success + * 2 success (old ignore has been changed) + */ + +int +ignore_add (char *mask, int type) +{ + struct ignore *ig = 0; + int change_only = FALSE; + + /* first check if it's already ignored */ + ig = ignore_exists (mask); + if (ig) + change_only = TRUE; + + if (!change_only) + ig = malloc (sizeof (struct ignore)); + + if (!ig) + return 0; + + ig->mask = strdup (mask); + ig->type = type; + + if (!change_only) + ignore_list = g_slist_prepend (ignore_list, ig); + fe_ignore_update (1); + + if (change_only) + return 2; + + return 1; +} + +void +ignore_showlist (session *sess) +{ + struct ignore *ig; + GSList *list = ignore_list; + char tbuf[256]; + int i = 0; + + EMIT_SIGNAL (XP_TE_IGNOREHEADER, sess, 0, 0, 0, 0, 0); + + while (list) + { + ig = list->data; + i++; + + snprintf (tbuf, sizeof (tbuf), " %-25s ", ig->mask); + if (ig->type & IG_PRIV) + strcat (tbuf, _("YES ")); + else + strcat (tbuf, _("NO ")); + if (ig->type & IG_NOTI) + strcat (tbuf, _("YES ")); + else + strcat (tbuf, _("NO ")); + if (ig->type & IG_CHAN) + strcat (tbuf, _("YES ")); + else + strcat (tbuf, _("NO ")); + if (ig->type & IG_CTCP) + strcat (tbuf, _("YES ")); + else + strcat (tbuf, _("NO ")); + if (ig->type & IG_DCC) + strcat (tbuf, _("YES ")); + else + strcat (tbuf, _("NO ")); + if (ig->type & IG_INVI) + strcat (tbuf, _("YES ")); + else + strcat (tbuf, _("NO ")); + if (ig->type & IG_UNIG) + strcat (tbuf, _("YES ")); + else + strcat (tbuf, _("NO ")); + strcat (tbuf, "\n"); + PrintText (sess, tbuf); + /*EMIT_SIGNAL (XP_TE_IGNORELIST, sess, ig->mask, 0, 0, 0, 0); */ + /* use this later, when TE's support 7 args */ + list = list->next; + } + + if (!i) + EMIT_SIGNAL (XP_TE_IGNOREEMPTY, sess, 0, 0, 0, 0, 0); + + EMIT_SIGNAL (XP_TE_IGNOREFOOTER, sess, 0, 0, 0, 0, 0); +} + +/* ignore_del() + + * one of the args must be NULL, use mask OR *ig, not both + * + */ + +int +ignore_del (char *mask, struct ignore *ig) +{ + if (!ig) + { + GSList *list = ignore_list; + + while (list) + { + ig = (struct ignore *) list->data; + if (!rfc_casecmp (ig->mask, mask)) + break; + list = list->next; + ig = 0; + } + } + if (ig) + { + ignore_list = g_slist_remove (ignore_list, ig); + free (ig->mask); + free (ig); + fe_ignore_update (1); + return TRUE; + } + return FALSE; +} + +/* check if a msg should be ignored by browsing our ignore list */ + +int +ignore_check (char *host, int type) +{ + struct ignore *ig; + GSList *list = ignore_list; + + /* check if there's an UNIGNORE first, they take precendance. */ + while (list) + { + ig = (struct ignore *) list->data; + if (ig->type & IG_UNIG) + { + if (ig->type & type) + { + if (match (ig->mask, host)) + return FALSE; + } + } + list = list->next; + } + + list = ignore_list; + while (list) + { + ig = (struct ignore *) list->data; + + if (ig->type & type) + { + if (match (ig->mask, host)) + { + ignored_total++; + if (type & IG_PRIV) + ignored_priv++; + if (type & IG_NOTI) + ignored_noti++; + if (type & IG_CHAN) + ignored_chan++; + if (type & IG_CTCP) + ignored_ctcp++; + if (type & IG_INVI) + ignored_invi++; + fe_ignore_update (2); + return TRUE; + } + } + list = list->next; + } + + return FALSE; +} + +static char * +ignore_read_next_entry (char *my_cfg, struct ignore *ignore) +{ + char tbuf[1024]; + + /* Casting to char * done below just to satisfy compiler */ + + if (my_cfg) + { + my_cfg = cfg_get_str (my_cfg, "mask", tbuf, sizeof (tbuf)); + if (!my_cfg) + return NULL; + ignore->mask = strdup (tbuf); + } + if (my_cfg) + { + my_cfg = cfg_get_str (my_cfg, "type", tbuf, sizeof (tbuf)); + ignore->type = atoi (tbuf); + } + return my_cfg; +} + +void +ignore_load () +{ + struct ignore *ignore; + struct stat st; + char *cfg, *my_cfg; + int fh, i; + + fh = xchat_open_file ("ignore.conf", O_RDONLY, 0, 0); + if (fh != -1) + { + fstat (fh, &st); + if (st.st_size) + { + cfg = malloc (st.st_size + 1); + cfg[0] = '\0'; + i = read (fh, cfg, st.st_size); + if (i >= 0) + cfg[i] = '\0'; + my_cfg = cfg; + while (my_cfg) + { + ignore = malloc (sizeof (struct ignore)); + memset (ignore, 0, sizeof (struct ignore)); + if ((my_cfg = ignore_read_next_entry (my_cfg, ignore))) + ignore_list = g_slist_prepend (ignore_list, ignore); + else + free (ignore); + } + free (cfg); + } + close (fh); + } +} + +void +ignore_save () +{ + char buf[1024]; + int fh, rc; + ssize_t nb; + GSList *temp = ignore_list; + struct ignore *ig; + + fh = xchat_open_file ("ignore.conf.bug463072", O_TRUNC | O_WRONLY | O_CREAT, 0600, XOF_DOMODE); + if (fh != -1) + { + while (temp) + { + ig = (struct ignore *) temp->data; + if (!(ig->type & IG_NOSAVE)) + { + snprintf (buf, sizeof (buf), "mask = %s\ntype = %d\n\n", + ig->mask, ig->type); + nb = write (fh, buf, strlen (buf)); + if( nb == (ssize_t)-1 ) + { + perror( "ignore_save: write() failed" ); + close( fh ); + return; + } + } + temp = temp->next; + } + rc = close (fh); + if( rc != 0 ) + { + perror( "ignore_save: close() failed" ); + return; + } + rc = xchat_rename_file( "ignore.conf.bug463072", "ignore.conf", XOF_DOMODE ); + if( rc != 0 ) + { + perror( "ignore_save: xchat_rename_file() failed" ); + return; + } + } + +} + +static gboolean +flood_autodialog_timeout (gpointer data) +{ + prefs.autodialog = 1; + return FALSE; +} + +int +flood_check (char *nick, char *ip, server *serv, session *sess, int what) /*0=ctcp 1=priv */ +{ + /* + serv + int ctcp_counter; + time_t ctcp_last_time; + prefs + unsigned int ctcp_number_limit; + unsigned int ctcp_time_limit; + */ + char buf[512]; + char real_ip[132]; + int i; + time_t current_time; + current_time = time (NULL); + + if (what == 0) + { + if (serv->ctcp_last_time == 0) /*first ctcp in this server */ + { + serv->ctcp_last_time = time (NULL); + serv->ctcp_counter++; + } else + { + if (difftime (current_time, serv->ctcp_last_time) < prefs.ctcp_time_limit) /*if we got the ctcp in the seconds limit */ + { + serv->ctcp_counter++; + if (serv->ctcp_counter == prefs.ctcp_number_limit) /*if we reached the maximun numbers of ctcp in the seconds limits */ + { + serv->ctcp_last_time = current_time; /*we got the flood, restore all the vars for next one */ + serv->ctcp_counter = 0; + for (i = 0; i < 128; i++) + if (ip[i] == '@') + break; + snprintf (real_ip, sizeof (real_ip), "*!*%s", &ip[i]); + /*ignore_add (char *mask, int priv, int noti, int chan, + int ctcp, int invi, int unignore, int no_save) */ + + snprintf (buf, sizeof (buf), + _("You are being CTCP flooded from %s, ignoring %s\n"), + nick, real_ip); + PrintText (sess, buf); + + /*FIXME: only ignore ctcp or all?, its ignoring ctcps for now */ + ignore_add (real_ip, IG_CTCP); + return 0; + } + } + } + } else + { + if (serv->msg_last_time == 0) + { + serv->msg_last_time = time (NULL); + serv->ctcp_counter++; + } else + { + if (difftime (current_time, serv->msg_last_time) < + prefs.msg_time_limit) + { + serv->msg_counter++; + if (serv->msg_counter == prefs.msg_number_limit) /*if we reached the maximun numbers of ctcp in the seconds limits */ + { + snprintf (buf, sizeof (buf), + _("You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n"), + ip); + PrintText (sess, buf); + serv->msg_last_time = current_time; /*we got the flood, restore all the vars for next one */ + serv->msg_counter = 0; + /*ignore_add (char *mask, int priv, int noti, int chan, + int ctcp, int invi, int unignore, int no_save) */ + + if (prefs.autodialog) + { + /*FIXME: only ignore ctcp or all?, its ignoring ctcps for now */ + prefs.autodialog = 0; + /* turn it back on in 30 secs */ + fe_timeout_add (30000, flood_autodialog_timeout, NULL); + } + return 0; + } + } + } + } + return 1; +} + diff --git a/etc/wyatt8740/src/common/ignore.h b/etc/wyatt8740/src/common/ignore.h new file mode 100644 index 0000000..3a971a8 --- /dev/null +++ b/etc/wyatt8740/src/common/ignore.h @@ -0,0 +1,38 @@ +#ifndef XCHAT_IGNORE_H +#define XCHAT_IGNORE_H + +extern GSList *ignore_list; + +extern int ignored_ctcp; +extern int ignored_priv; +extern int ignored_chan; +extern int ignored_noti; +extern int ignored_invi; + +#define IG_PRIV 1 +#define IG_NOTI 2 +#define IG_CHAN 4 +#define IG_CTCP 8 +#define IG_INVI 16 +#define IG_UNIG 32 +#define IG_NOSAVE 64 +#define IG_DCC 128 + +struct ignore +{ + char *mask; + unsigned int type; /* one of more of IG_* ORed together */ +}; + +struct ignore *ignore_exists (char *mask); +int ignore_add (char *mask, int type); +void ignore_showlist (session *sess); +int ignore_del (char *mask, struct ignore *ig); +int ignore_check (char *mask, int type); +void ignore_load (void); +void ignore_save (void); +void ignore_gui_open (void); +void ignore_gui_update (int level); +int flood_check (char *nick, char *ip, server *serv, session *sess, int what); + +#endif diff --git a/etc/wyatt8740/src/common/inbound.c b/etc/wyatt8740/src/common/inbound.c new file mode 100644 index 0000000..ec7dd9d --- /dev/null +++ b/etc/wyatt8740/src/common/inbound.c @@ -0,0 +1,1336 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <string.h> +#include <ctype.h> +#include <stdlib.h> +#include <stdio.h> +#include <sys/types.h> +#include <unistd.h> +#include <time.h> + +#define WANTARPA +#define WANTDNS +#include "inet.h" + +#include "xchat.h" +#include "util.h" +#include "ignore.h" +#include "fe.h" +#include "modes.h" +#include "notify.h" +#include "outbound.h" +#include "inbound.h" +#include "server.h" +#include "servlist.h" +#include "text.h" +#include "ctcp.h" +#include "plugin.h" +#include "xchatc.h" + + +void +clear_channel (session *sess) +{ + if (sess->channel[0]) + strcpy (sess->waitchannel, sess->channel); + sess->channel[0] = 0; + sess->doing_who = FALSE; + sess->done_away_check = FALSE; + + log_close (sess); + + if (sess->current_modes) + { + free (sess->current_modes); + sess->current_modes = NULL; + } + + if (sess->mode_timeout_tag) + { + fe_timeout_remove (sess->mode_timeout_tag); + sess->mode_timeout_tag = 0; + } + + fe_clear_channel (sess); + userlist_clear (sess); + fe_set_nonchannel (sess, FALSE); + fe_set_title (sess); +} + +void +set_topic (session *sess, char *topic, char *stripped_topic) +{ + if (sess->topic) + free (sess->topic); + sess->topic = strdup (stripped_topic); + fe_set_topic (sess, topic, stripped_topic); +} + +static session * +find_session_from_nick (char *nick, server *serv) +{ + session *sess; + GSList *list = sess_list; + + sess = find_dialog (serv, nick); + if (sess) + return sess; + + if (serv->front_session) + { + if (userlist_find (serv->front_session, nick)) + return serv->front_session; + } + + if (current_sess && current_sess->server == serv) + { + if (userlist_find (current_sess, nick)) + return current_sess; + } + + while (list) + { + sess = list->data; + if (sess->server == serv) + { + if (userlist_find (sess, nick)) + return sess; + } + list = list->next; + } + return 0; +} + +static session * +inbound_open_dialog (server *serv, char *from) +{ + session *sess; + + sess = new_ircwindow (serv, from, SESS_DIALOG, 0); + /* for playing sounds */ + EMIT_SIGNAL (XP_TE_OPENDIALOG, sess, NULL, NULL, NULL, NULL, 0); + + return sess; +} + +static void +inbound_make_idtext (server *serv, char *idtext, int max, int id) +{ + idtext[0] = 0; + if (serv->have_idmsg) + { + if (id) + { + safe_strcpy (idtext, prefs.irc_id_ytext, max); + } else + { + safe_strcpy (idtext, prefs.irc_id_ntext, max); + } + /* convert codes like %C,%U to the proper ones */ + check_special_chars (idtext, TRUE); + } +} + +void +inbound_privmsg (server *serv, char *from, char *ip, char *text, int id) +{ + session *sess; + char idtext[64]; + + sess = find_dialog (serv, from); + + if (sess || prefs.autodialog) + { + /*0=ctcp 1=priv will set autodialog=0 here is flud detected */ + if (!sess) + { + if (flood_check (from, ip, serv, current_sess, 1)) + /* Create a dialog session */ + sess = inbound_open_dialog (serv, from); + else + sess = serv->server_session; + if (!sess) + return; /* ?? */ + } + + if (ip && ip[0]) + { + if (prefs.logging && sess->logfd != -1 && + (!sess->topic || strcmp(sess->topic, ip))) + { + char tbuf[1024]; + snprintf (tbuf, sizeof (tbuf), "[%s has address %s]\n", from, ip); + write (sess->logfd, tbuf, strlen (tbuf)); + } + set_topic (sess, ip, ip); + } + inbound_chanmsg (serv, NULL, NULL, from, text, FALSE, id); + return; + } + + inbound_make_idtext (serv, idtext, sizeof (idtext), id); + + sess = find_session_from_nick (from, serv); + if (!sess) + { + sess = serv->front_session; + EMIT_SIGNAL (XP_TE_PRIVMSG, sess, from, text, idtext, NULL, 0); + return; + } + + if (sess->type == SESS_DIALOG) + EMIT_SIGNAL (XP_TE_DPRIVMSG, sess, from, text, idtext, NULL, 0); + else + EMIT_SIGNAL (XP_TE_PRIVMSG, sess, from, text, idtext, NULL, 0); +} + +/* used for Alerts section. Masks can be separated by commas and spaces. */ + +gboolean +alert_match_word (char *word, char *masks) +{ + char *p = masks; + char endchar; + int res; + + if (masks[0] == 0) + return FALSE; + + while (1) + { + /* if it's a 0, space or comma, the word has ended. */ + if (*p == 0 || *p == ' ' || *p == ',') + { + endchar = *p; + *p = 0; + res = match (masks, word); + *p = endchar; + + if (res) + return TRUE; /* yes, matched! */ + + masks = p + 1; + if (*p == 0) + return FALSE; + } + p++; + } +} + +gboolean +alert_match_text (char *text, char *masks) +{ + unsigned char *p = text; + unsigned char endchar; + int res; + + if (masks[0] == 0) + return FALSE; + + while (1) + { + if (*p >= '0' && *p <= '9') + { + p++; + continue; + } + + /* if it's RFC1459 <special>, it can be inside a word */ + switch (*p) + { + case '-': case '[': case ']': case '\\': + case '`': case '^': case '{': case '}': + case '_': case '|': + p++; + continue; + } + + /* if it's a 0, space or comma, the word has ended. */ + if (*p == 0 || *p == ' ' || *p == ',' || + /* if it's anything BUT a letter, the word has ended. */ + (!g_unichar_isalpha (g_utf8_get_char (p)))) + { + endchar = *p; + *p = 0; + res = alert_match_word (text, masks); + *p = endchar; + + if (res) + return TRUE; /* yes, matched! */ + + text = p + g_utf8_skip [p[0]]; + if (*p == 0) + return FALSE; + } + + p += g_utf8_skip [p[0]]; + } +} + +static int +is_hilight (char *from, char *text, session *sess, server *serv) +{ + if (alert_match_word (from, prefs.irc_no_hilight)) + return 0; + + text = strip_color (text, -1, STRIP_ALL); + + if (alert_match_text (text, serv->nick) || + alert_match_text (text, prefs.irc_extra_hilight) || + alert_match_word (from, prefs.irc_nick_hilight)) + { + g_free (text); + if (sess != current_tab) + sess->nick_said = TRUE; + fe_set_hilight (sess); + return 1; + } + + g_free (text); + return 0; +} + +void +inbound_action (session *sess, char *chan, char *from, char *ip, char *text, int fromme, int id) +{ + session *def = sess; + server *serv = sess->server; + struct User *user; + char nickchar[2] = "\000"; + char idtext[64]; + int privaction = FALSE; + + if (!fromme) + { + if (is_channel (serv, chan)) + { + sess = find_channel (serv, chan); + } else + { + /* it's a private action! */ + privaction = TRUE; + /* find a dialog tab for it */ + sess = find_dialog (serv, from); + /* if non found, open a new one */ + if (!sess && prefs.autodialog) + { + /* but only if it wouldn't flood */ + if (flood_check (from, ip, serv, current_sess, 1)) + sess = inbound_open_dialog (serv, from); + else + sess = serv->server_session; + } + if (!sess) + { + sess = find_session_from_nick (from, serv); + /* still not good? */ + if (!sess) + sess = serv->front_session; + } + } + } + + if (!sess) + sess = def; + + if (sess != current_tab) + { + if (fromme) + { + sess->msg_said = FALSE; + sess->new_data = TRUE; + } else + { + sess->msg_said = TRUE; + sess->new_data = FALSE; + } + } + + user = userlist_find (sess, from); + if (user) + { + nickchar[0] = user->prefix[0]; + user->lasttalk = time (0); + } + + inbound_make_idtext (serv, idtext, sizeof (idtext), id); + + if (!fromme && !privaction) + { + if (is_hilight (from, text, sess, serv)) + { + EMIT_SIGNAL (XP_TE_HCHANACTION, sess, from, text, nickchar, idtext, 0); + return; + } + } + + if (fromme) + EMIT_SIGNAL (XP_TE_UACTION, sess, from, text, nickchar, idtext, 0); + else if (!privaction) + EMIT_SIGNAL (XP_TE_CHANACTION, sess, from, text, nickchar, idtext, 0); + else if (sess->type == SESS_DIALOG) + EMIT_SIGNAL (XP_TE_DPRIVACTION, sess, from, text, idtext, NULL, 0); + else + EMIT_SIGNAL (XP_TE_PRIVACTION, sess, from, text, idtext, NULL, 0); +} + +void +inbound_chanmsg (server *serv, session *sess, char *chan, char *from, char *text, char fromme, int id) +{ + struct User *user; + int hilight = FALSE; + char nickchar[2] = "\000"; + char idtext[64]; + + if (!sess) + { + if (chan) + { + sess = find_channel (serv, chan); + if (!sess && !is_channel (serv, chan)) + sess = find_dialog (serv, chan); + } else + { + sess = find_dialog (serv, from); + } + if (!sess) + return; + } + + if (sess != current_tab) + { + sess->msg_said = TRUE; + sess->new_data = FALSE; + } + + user = userlist_find (sess, from); + if (user) + { + nickchar[0] = user->prefix[0]; + user->lasttalk = time (0); + } + + if (fromme) + { + if (prefs.auto_unmark_away && serv->is_away) + sess->server->p_set_back (sess->server); + EMIT_SIGNAL (XP_TE_UCHANMSG, sess, from, text, nickchar, NULL, 0); + return; + } + + inbound_make_idtext (serv, idtext, sizeof (idtext), id); + + if (is_hilight (from, text, sess, serv)) + hilight = TRUE; + + if (sess->type == SESS_DIALOG) + EMIT_SIGNAL (XP_TE_DPRIVMSG, sess, from, text, idtext, NULL, 0); + else if (hilight) + EMIT_SIGNAL (XP_TE_HCHANMSG, sess, from, text, nickchar, idtext, 0); + else + EMIT_SIGNAL (XP_TE_CHANMSG, sess, from, text, nickchar, idtext, 0); +} + +void +inbound_newnick (server *serv, char *nick, char *newnick, int quiet) +{ + int me = FALSE; + session *sess; + GSList *list = sess_list; + + if (!serv->p_cmp (nick, serv->nick)) + { + me = TRUE; + safe_strcpy (serv->nick, newnick, NICKLEN); + } + + while (list) + { + sess = list->data; + if (sess->server == serv) + { + if (userlist_change (sess, nick, newnick) || (me && sess->type == SESS_SERVER)) + { + if (!quiet) + { + if (me) + EMIT_SIGNAL (XP_TE_UCHANGENICK, sess, nick, newnick, NULL, + NULL, 0); + else + EMIT_SIGNAL (XP_TE_CHANGENICK, sess, nick, newnick, NULL, + NULL, 0); + } + } + if (sess->type == SESS_DIALOG && !serv->p_cmp (sess->channel, nick)) + { + safe_strcpy (sess->channel, newnick, CHANLEN); + fe_set_channel (sess); + } + fe_set_title (sess); + } + list = list->next; + } + + dcc_change_nick (serv, nick, newnick); + + if (me) + fe_set_nick (serv, newnick); +} + +/* find a "<none>" tab */ +static session * +find_unused_session (server *serv) +{ + session *sess; + GSList *list = sess_list; + while (list) + { + sess = (session *) list->data; + if (sess->type == SESS_CHANNEL && sess->channel[0] == 0 && + sess->server == serv) + { + if (sess->waitchannel[0] == 0) + return sess; + } + list = list->next; + } + return 0; +} + +static session * +find_session_from_waitchannel (char *chan, struct server *serv) +{ + session *sess; + GSList *list = sess_list; + while (list) + { + sess = (session *) list->data; + if (sess->server == serv && sess->channel[0] == 0 && sess->type == SESS_CHANNEL) + { + if (!serv->p_cmp (chan, sess->waitchannel)) + return sess; + } + list = list->next; + } + return 0; +} + +void +inbound_ujoin (server *serv, char *chan, char *nick, char *ip) +{ + session *sess; + + /* already joined? probably a bnc */ + sess = find_channel (serv, chan); + if (!sess) + { + /* see if a window is waiting to join this channel */ + sess = find_session_from_waitchannel (chan, serv); + if (!sess) + { + /* find a "<none>" tab and use that */ + sess = find_unused_session (serv); + if (!sess) + /* last resort, open a new tab/window */ + sess = new_ircwindow (serv, chan, SESS_CHANNEL, 1); + } + } + + safe_strcpy (sess->channel, chan, CHANLEN); + + fe_set_channel (sess); + fe_set_title (sess); + fe_set_nonchannel (sess, TRUE); + userlist_clear (sess); + + log_open_or_close (sess); + + sess->waitchannel[0] = 0; + sess->ignore_date = TRUE; + sess->ignore_mode = TRUE; + sess->ignore_names = TRUE; + sess->end_of_names = FALSE; + + /* sends a MODE */ + serv->p_join_info (sess->server, chan); + + EMIT_SIGNAL (XP_TE_UJOIN, sess, nick, chan, ip, NULL, 0); + + if (prefs.userhost) + { + /* sends WHO #channel */ + serv->p_user_list (sess->server, chan); + sess->doing_who = TRUE; + } +} + +void +inbound_ukick (server *serv, char *chan, char *kicker, char *reason) +{ + session *sess = find_channel (serv, chan); + if (sess) + { + EMIT_SIGNAL (XP_TE_UKICK, sess, serv->nick, chan, kicker, reason, 0); + clear_channel (sess); + if (prefs.autorejoin) + { + serv->p_join (serv, chan, sess->channelkey); + safe_strcpy (sess->waitchannel, chan, CHANLEN); + } + } +} + +void +inbound_upart (server *serv, char *chan, char *ip, char *reason) +{ + session *sess = find_channel (serv, chan); + if (sess) + { + if (*reason) + EMIT_SIGNAL (XP_TE_UPARTREASON, sess, serv->nick, ip, chan, reason, + 0); + else + EMIT_SIGNAL (XP_TE_UPART, sess, serv->nick, ip, chan, NULL, 0); + clear_channel (sess); + } +} + +void +inbound_nameslist (server *serv, char *chan, char *names) +{ + session *sess; + char name[NICKLEN]; + int pos = 0; + + sess = find_channel (serv, chan); + if (!sess) + { + EMIT_SIGNAL (XP_TE_USERSONCHAN, serv->server_session, chan, names, NULL, + NULL, 0); + return; + } + if (!sess->ignore_names) + EMIT_SIGNAL (XP_TE_USERSONCHAN, sess, chan, names, NULL, NULL, 0); + + if (sess->end_of_names) + { + sess->end_of_names = FALSE; + userlist_clear (sess); + } + + while (1) + { + switch (*names) + { + case 0: + name[pos] = 0; + if (pos != 0) + userlist_add (sess, name, 0); + return; + case ' ': + name[pos] = 0; + pos = 0; + userlist_add (sess, name, 0); + break; + default: + name[pos] = *names; + if (pos < (NICKLEN-1)) + pos++; + } + names++; + } +} + +void +inbound_topic (server *serv, char *chan, char *topic_text) +{ + session *sess = find_channel (serv, chan); + char *stripped_topic; + + if (sess) + { + stripped_topic = strip_color (topic_text, -1, STRIP_ALL); + set_topic (sess, topic_text, stripped_topic); + g_free (stripped_topic); + } else + sess = serv->server_session; + + EMIT_SIGNAL (XP_TE_TOPIC, sess, chan, topic_text, NULL, NULL, 0); +} + +void +inbound_topicnew (server *serv, char *nick, char *chan, char *topic) +{ + session *sess; + char *stripped_topic; + + sess = find_channel (serv, chan); + if (sess) + { + stripped_topic = strip_color (topic, -1, STRIP_ALL); + set_topic (sess, topic, stripped_topic); + g_free (stripped_topic); + EMIT_SIGNAL (XP_TE_NEWTOPIC, sess, nick, topic, chan, NULL, 0); + } +} + +void +inbound_join (server *serv, char *chan, char *user, char *ip) +{ + session *sess = find_channel (serv, chan); + if (sess) + { + EMIT_SIGNAL (XP_TE_JOIN, sess, user, chan, ip, NULL, 0); + userlist_add (sess, user, ip); + } +} + +void +inbound_kick (server *serv, char *chan, char *user, char *kicker, char *reason) +{ + session *sess = find_channel (serv, chan); + if (sess) + { + EMIT_SIGNAL (XP_TE_KICK, sess, kicker, user, chan, reason, 0); + userlist_remove (sess, user); + } +} + +void +inbound_part (server *serv, char *chan, char *user, char *ip, char *reason) +{ + session *sess = find_channel (serv, chan); + if (sess) + { + if (*reason) + EMIT_SIGNAL (XP_TE_PARTREASON, sess, user, ip, chan, reason, 0); + else + EMIT_SIGNAL (XP_TE_PART, sess, user, ip, chan, NULL, 0); + userlist_remove (sess, user); + } +} + +void +inbound_topictime (server *serv, char *chan, char *nick, time_t stamp) +{ + char *tim = ctime (&stamp); + session *sess = find_channel (serv, chan); + + if (!sess) + sess = serv->server_session; + + tim[24] = 0; /* get rid of the \n */ + EMIT_SIGNAL (XP_TE_TOPICDATE, sess, chan, nick, tim, NULL, 0); +} + +void +inbound_quit (server *serv, char *nick, char *ip, char *reason) +{ + GSList *list = sess_list; + session *sess; + int was_on_front_session = FALSE; + + while (list) + { + sess = (session *) list->data; + if (sess->server == serv) + { + if (sess == current_sess) + was_on_front_session = TRUE; + if (userlist_remove (sess, nick)) + { + EMIT_SIGNAL (XP_TE_QUIT, sess, nick, reason, ip, NULL, 0); + } else if (sess->type == SESS_DIALOG && !serv->p_cmp (sess->channel, nick)) + { + EMIT_SIGNAL (XP_TE_QUIT, sess, nick, reason, ip, NULL, 0); + } + } + list = list->next; + } + + notify_set_offline (serv, nick, was_on_front_session); +} + +void +inbound_ping_reply (session *sess, char *timestring, char *from) +{ + unsigned long tim, nowtim, dif; + int lag = 0; + char outbuf[64]; + + if (strncmp (timestring, "LAG", 3) == 0) + { + timestring += 3; + lag = 1; + } + + tim = strtoul (timestring, NULL, 10); + nowtim = make_ping_time (); + dif = nowtim - tim; + + sess->server->ping_recv = time (0); + + if (lag) + { + sess->server->lag_sent = 0; + sess->server->lag = dif / 1000; + fe_set_lag (sess->server, dif / 100000); + return; + } + + if (atol (timestring) == 0) + { + if (sess->server->lag_sent) + sess->server->lag_sent = 0; + else + EMIT_SIGNAL (XP_TE_PINGREP, sess, from, "?", NULL, NULL, 0); + } else + { + snprintf (outbuf, sizeof (outbuf), "%ld.%ld%ld", dif / 1000000, (dif / 100000) % 10, dif % 10); + EMIT_SIGNAL (XP_TE_PINGREP, sess, from, outbuf, NULL, NULL, 0); + } +} + +static session * +find_session_from_type (int type, server *serv) +{ + session *sess; + GSList *list = sess_list; + while (list) + { + sess = list->data; + if (sess->type == type && serv == sess->server) + return sess; + list = list->next; + } + return 0; +} + +void +inbound_notice (server *serv, char *to, char *nick, char *msg, char *ip, int id) +{ + char *po,*ptr=to; + session *sess = 0; + int server_notice = FALSE; + + if (is_channel (serv, ptr)) + sess = find_channel (serv, ptr); + + if (!sess && ptr[0] == '@') + { + ptr++; + sess = find_channel (serv, ptr); + } + + if (!sess && ptr[0] == '%') + { + ptr++; + sess = find_channel (serv, ptr); + } + + if (!sess && ptr[0] == '+') + { + ptr++; + sess = find_channel (serv, ptr); + } + + if (strcmp (nick, ip) == 0) + server_notice = TRUE; + + if (!sess) + { + ptr = 0; + if (prefs.notices_tabs) + { + int stype = server_notice ? SESS_SNOTICES : SESS_NOTICES; + sess = find_session_from_type (stype, serv); + if (!sess) + { + if (stype == SESS_NOTICES) + sess = new_ircwindow (serv, "(notices)", SESS_NOTICES, 0); + else + sess = new_ircwindow (serv, "(snotices)", SESS_SNOTICES, 0); + fe_set_channel (sess); + fe_set_title (sess); + fe_set_nonchannel (sess, FALSE); + userlist_clear (sess); + log_open_or_close (sess); + } + /* Avoid redundancy with some Undernet notices */ + if (!strncmp (msg, "*** Notice -- ", 14)) + msg += 14; + } else + { + /* paranoia check */ + if (msg[0] == '[' && (!serv->have_idmsg || id)) + { + /* guess where chanserv meant to post this -sigh- */ + if (!strcasecmp (nick, "ChanServ") && !find_dialog (serv, nick)) + { + char *dest = strdup (msg + 1); + char *end = strchr (dest, ']'); + if (end) + { + *end = 0; + sess = find_channel (serv, dest); + } + free (dest); + } + } + if (!sess) + sess = find_session_from_nick (nick, serv); + } + if (!sess) + { + if (server_notice) + sess = serv->server_session; + else + sess = serv->front_session; + } + } + + if (msg[0] == 1) + { + msg++; + if (!strncmp (msg, "PING", 4)) + { + inbound_ping_reply (sess, msg + 5, nick); + return; + } + } + po = strchr (msg, '\001'); + if (po) + po[0] = 0; + + if (server_notice) + EMIT_SIGNAL (XP_TE_SERVNOTICE, sess, msg, nick, NULL, NULL, 0); + else if (ptr) + EMIT_SIGNAL (XP_TE_CHANNOTICE, sess, nick, to, msg, NULL, 0); + else + EMIT_SIGNAL (XP_TE_NOTICE, sess, nick, msg, NULL, NULL, 0); +} + +void +inbound_away (server *serv, char *nick, char *msg) +{ + struct away_msg *away = server_away_find_message (serv, nick); + session *sess = NULL; + GSList *list; + + if (away && !strcmp (msg, away->message)) /* Seen the msg before? */ + { + if (prefs.show_away_once && !serv->inside_whois) + return; + } else + { + server_away_save_message (serv, nick, msg); + } + + if (prefs.irc_whois_front) + sess = serv->front_session; + else + { + if (!serv->inside_whois) + sess = find_session_from_nick (nick, serv); + if (!sess) + sess = serv->server_session; + } + + /* possibly hide the output */ + if (!serv->inside_whois || !serv->skip_next_whois) + EMIT_SIGNAL (XP_TE_WHOIS5, sess, nick, msg, NULL, NULL, 0); + + list = sess_list; + while (list) + { + sess = list->data; + if (sess->server == serv) + userlist_set_away (sess, nick, TRUE); + list = list->next; + } +} + +int +inbound_nameslist_end (server *serv, char *chan) +{ + session *sess; + GSList *list; + + if (!strcmp (chan, "*")) + { + list = sess_list; + while (list) + { + sess = list->data; + if (sess->server == serv) + { + sess->end_of_names = TRUE; + sess->ignore_names = FALSE; + } + list = list->next; + } + return TRUE; + } + sess = find_channel (serv, chan); + if (sess) + { + sess->end_of_names = TRUE; + sess->ignore_names = FALSE; + return TRUE; + } + return FALSE; +} + +static gboolean +check_autojoin_channels (server *serv) +{ + char *po; + session *sess; + GSList *list = sess_list; + int i = 0; + GSList *channels, *keys; + + /* shouldnt really happen, the io tag is destroyed in server.c */ + if (!is_server (serv)) + return FALSE; + + /* send auto join list */ + if (serv->autojoin) + { + joinlist_split (serv->autojoin, &channels, &keys); + serv->p_join_list (serv, channels, keys); + joinlist_free (channels, keys); + + free (serv->autojoin); + serv->autojoin = NULL; + } + + /* this is really only for re-connects when you + * join channels not in the auto-join list. */ + while (list) + { + sess = list->data; + if (sess->server == serv) + { + if (sess->willjoinchannel[0] != 0) + { + strcpy (sess->waitchannel, sess->willjoinchannel); + sess->willjoinchannel[0] = 0; + serv->p_join (serv, sess->waitchannel, sess->channelkey); + po = strchr (sess->waitchannel, ','); + if (po) + *po = 0; + po = strchr (sess->waitchannel, ' '); + if (po) + *po = 0; + i++; + } + } + list = list->next; + } + serv->joindelay_tag = 0; + fe_server_event (serv, FE_SE_LOGGEDIN, i); + return FALSE; +} + +void +inbound_next_nick (session *sess, char *nick) +{ + char *newnick; + server *serv = sess->server; + ircnet *net; + + serv->nickcount++; + + switch (serv->nickcount) + { + case 2: + newnick = prefs.nick2; + net = serv->network; + /* use network specific "Second choice"? */ + if (net && !(net->flags & FLAG_USE_GLOBAL) && net->nick2) + newnick = net->nick2; + serv->p_change_nick (serv, newnick); + EMIT_SIGNAL (XP_TE_NICKCLASH, sess, nick, newnick, NULL, NULL, 0); + break; + + case 3: + serv->p_change_nick (serv, prefs.nick3); + EMIT_SIGNAL (XP_TE_NICKCLASH, sess, nick, prefs.nick3, NULL, NULL, 0); + break; + + default: + EMIT_SIGNAL (XP_TE_NICKFAIL, sess, NULL, NULL, NULL, NULL, 0); + } +} + +void +do_dns (session *sess, char *nick, char *host) +{ + char *po; + char tbuf[1024]; + + po = strrchr (host, '@'); + if (po) + host = po + 1; + EMIT_SIGNAL (XP_TE_RESOLVINGUSER, sess, nick, host, NULL, NULL, 0); + snprintf (tbuf, sizeof (tbuf), "exec -d %s %s", prefs.dnsprogram, host); + handle_command (sess, tbuf, FALSE); +} + +static void +set_default_modes (server *serv) +{ + char modes[8]; + + modes[0] = '+'; + modes[1] = '\0'; + + if (prefs.wallops) + strcat (modes, "w"); + if (prefs.servernotice) + strcat (modes, "s"); + if (prefs.invisible) + strcat (modes, "i"); + + if (modes[1] != '\0') + { + serv->p_mode (serv, serv->nick, modes); + } +} + +void +inbound_login_start (session *sess, char *nick, char *servname) +{ + inbound_newnick (sess->server, sess->server->nick, nick, TRUE); + server_set_name (sess->server, servname); + if (sess->type == SESS_SERVER) + log_open_or_close (sess); + /* reset our away status */ + if (sess->server->reconnect_away) + { + handle_command (sess->server->server_session, "away", FALSE); + sess->server->reconnect_away = FALSE; + } +} + +static void +inbound_set_all_away_status (server *serv, char *nick, unsigned int status) +{ + GSList *list; + session *sess; + + list = sess_list; + while (list) + { + sess = list->data; + if (sess->server == serv) + userlist_set_away (sess, nick, status); + list = list->next; + } +} + +void +inbound_uaway (server *serv) +{ + serv->is_away = TRUE; + serv->away_time = time (NULL); + fe_set_away (serv); + + inbound_set_all_away_status (serv, serv->nick, 1); +} + +void +inbound_uback (server *serv) +{ + serv->is_away = FALSE; + serv->reconnect_away = FALSE; + fe_set_away (serv); + + inbound_set_all_away_status (serv, serv->nick, 0); +} + +void +inbound_foundip (session *sess, char *ip) +{ + struct hostent *HostAddr; + + HostAddr = gethostbyname (ip); + if (HostAddr) + { + prefs.dcc_ip = ((struct in_addr *) HostAddr->h_addr)->s_addr; + EMIT_SIGNAL (XP_TE_FOUNDIP, sess, + inet_ntoa (*((struct in_addr *) HostAddr->h_addr)), + NULL, NULL, NULL, 0); + } +} + +void +inbound_user_info_start (session *sess, char *nick) +{ + /* set away to FALSE now, 301 may turn it back on */ + inbound_set_all_away_status (sess->server, nick, 0); +} + +/* reporting new information found about this user. chan may be NULL. + * away may be 0xff to indicate UNKNOWN. */ + +void +inbound_user_info (session *sess, char *chan, char *user, char *host, + char *servname, char *nick, char *realname, + unsigned int away) +{ + server *serv = sess->server; + session *who_sess; + GSList *list; + char *uhost = NULL; + + if (user && host) + { + uhost = g_malloc (strlen (user) + strlen (host) + 2); + sprintf (uhost, "%s@%s", user, host); + } + + if (chan) + { + who_sess = find_channel (serv, chan); + if (who_sess) + userlist_add_hostname (who_sess, nick, uhost, realname, servname, away); + else + { + if (serv->doing_dns && nick && host) + do_dns (sess, nick, host); + } + } + else + { + /* came from WHOIS, not channel specific */ + for (list = sess_list; list; list = list->next) + { + sess = list->data; + if (sess->type == SESS_CHANNEL && sess->server == serv) + { + userlist_add_hostname (sess, nick, uhost, realname, servname, away); + } + } + } + + g_free (uhost); +} + +int +inbound_banlist (session *sess, time_t stamp, char *chan, char *mask, char *banner, int is_exemption) +{ + char *time_str = ctime (&stamp); + server *serv = sess->server; + + time_str[19] = 0; /* get rid of the \n */ + if (stamp == 0) + time_str = ""; + + sess = find_channel (serv, chan); + if (!sess) + { + sess = serv->front_session; + goto nowindow; + } + + if (!fe_is_banwindow (sess)) + { +nowindow: + /* let proto-irc.c do the 'goto def' for exemptions */ + if (is_exemption) + return FALSE; + + EMIT_SIGNAL (XP_TE_BANLIST, sess, chan, mask, banner, time_str, 0); + return TRUE; + } + + fe_add_ban_list (sess, mask, banner, time_str, is_exemption); + return TRUE; +} + +/* execute 1 end-of-motd command */ + +static int +inbound_exec_eom_cmd (char *str, void *sess) +{ + handle_command (sess, (str[0] == '/') ? str + 1 : str, TRUE); + return 1; +} + +void +inbound_login_end (session *sess, char *text) +{ + server *serv = sess->server; + + if (!serv->end_of_motd) + { + if (prefs.ip_from_server && serv->use_who) + { + serv->skip_next_userhost = TRUE; + serv->p_get_ip_uh (serv, serv->nick); /* sends USERHOST mynick */ + } + set_default_modes (serv); + + if (serv->network) + { + /* there may be more than 1, separated by \n */ + if (((ircnet *)serv->network)->command) + token_foreach (((ircnet *)serv->network)->command, '\n', + inbound_exec_eom_cmd, sess); + + /* send nickserv password */ + if (((ircnet *)serv->network)->nickserv) + serv->p_ns_identify (serv, ((ircnet *)serv->network)->nickserv); + } + + /* send JOIN now or wait? */ + if (serv->network && ((ircnet *)serv->network)->nickserv && + prefs.irc_join_delay) + serv->joindelay_tag = fe_timeout_add (prefs.irc_join_delay * 1000, + check_autojoin_channels, serv); + else + check_autojoin_channels (serv); + if (serv->supports_watch) + notify_send_watches (serv); + serv->end_of_motd = TRUE; + } + if (prefs.skipmotd && !serv->motd_skipped) + { + serv->motd_skipped = TRUE; + EMIT_SIGNAL (XP_TE_MOTDSKIP, serv->server_session, NULL, NULL, + NULL, NULL, 0); + return; + } + EMIT_SIGNAL (XP_TE_MOTD, serv->server_session, text, NULL, + NULL, NULL, 0); +} + +void +inbound_identified (server *serv) /* 'MODE +e MYSELF' on freenode */ +{ + if (serv->joindelay_tag) + { + /* stop waiting, just auto JOIN now */ + fe_timeout_remove (serv->joindelay_tag); + serv->joindelay_tag = 0; + check_autojoin_channels (serv); + } +} diff --git a/etc/wyatt8740/src/common/inbound.h b/etc/wyatt8740/src/common/inbound.h new file mode 100644 index 0000000..b972981 --- /dev/null +++ b/etc/wyatt8740/src/common/inbound.h @@ -0,0 +1,39 @@ +#ifndef XCHAT_INBOUND_H +#define XCHAT_INBOUND_H + +void inbound_next_nick (session *sess, char *nick); +void inbound_uback (server *serv); +void inbound_uaway (server *serv); +void inbound_part (server *serv, char *chan, char *user, char *ip, char *reason); +void inbound_upart (server *serv, char *chan, char *ip, char *reason); +void inbound_ukick (server *serv, char *chan, char *kicker, char *reason); +void inbound_kick (server *serv, char *chan, char *user, char *kicker, char *reason); +void inbound_notice (server *serv, char *to, char *nick, char *msg, char *ip, int id); +void inbound_quit (server *serv, char *nick, char *ip, char *reason); +void inbound_topicnew (server *serv, char *nick, char *chan, char *topic); +void inbound_join (server *serv, char *chan, char *user, char *ip); +void inbound_ujoin (server *serv, char *chan, char *nick, char *ip); +void inbound_topictime (server *serv, char *chan, char *nick, time_t stamp); +void inbound_topic (server *serv, char *chan, char *topic_text); +void inbound_user_info_start (session *sess, char *nick); +void inbound_user_info (session *sess, char *chan, char *user, char *host, char *servname, char *nick, char *realname, unsigned int away); +void inbound_foundip (session *sess, char *ip); +int inbound_banlist (session *sess, time_t stamp, char *chan, char *mask, char *banner, int is_exemption); +void inbound_ping_reply (session *sess, char *timestring, char *from); +void inbound_nameslist (server *serv, char *chan, char *names); +int inbound_nameslist_end (server *serv, char *chan); +void inbound_away (server *serv, char *nick, char *msg); +void inbound_login_start (session *sess, char *nick, char *servname); +void inbound_login_end (session *sess, char *text); +void inbound_chanmsg (server *serv, session *sess, char *chan, char *from, char *text, char fromme, int id); +void clear_channel (session *sess); +void set_topic (session *sess, char *topic, char *stripped_topic); +void inbound_privmsg (server *serv, char *from, char *ip, char *text, int id); +void inbound_action (session *sess, char *chan, char *from, char *ip, char *text, int fromme, int id); +void inbound_newnick (server *serv, char *nick, char *newnick, int quiet); +void do_dns (session *sess, char *nick, char *host); +void inbound_identified (server *serv); +gboolean alert_match_word (char *word, char *masks); +gboolean alert_match_text (char *text, char *masks); + +#endif diff --git a/etc/wyatt8740/src/common/inet.h b/etc/wyatt8740/src/common/inet.h new file mode 100644 index 0000000..b420c9c --- /dev/null +++ b/etc/wyatt8740/src/common/inet.h @@ -0,0 +1,43 @@ +/* include stuff for internet */ + +#ifndef WIN32 + +#ifdef WANTSOCKET +#include <sys/types.h> +#include <sys/socket.h> +#endif +#ifdef WANTARPA +#include <netinet/in.h> +#include <arpa/inet.h> +#endif +#ifdef WANTDNS +#include <netdb.h> +#endif +#define closesocket close +#define set_blocking(sok) fcntl(sok, F_SETFL, 0) +#define set_nonblocking(sok) fcntl(sok, F_SETFL, O_NONBLOCK) +#define would_block() (errno == EAGAIN || errno == EWOULDBLOCK) +#define sock_error() (errno) + +#else + +#ifdef USE_IPV6 +#include <winsock2.h> +#include <ws2tcpip.h> +#include <tpipv6.h> +#else +#include <winsock.h> +#endif + +#define set_blocking(sok) { \ + unsigned long zero = 0; \ + ioctlsocket (sok, FIONBIO, &zero); \ + } +#define set_nonblocking(sok) { \ + unsigned long one = 1; \ + ioctlsocket (sok, FIONBIO, &one); \ + } +#define would_block() (WSAGetLastError() == WSAEWOULDBLOCK) +#define sock_error WSAGetLastError + +#endif diff --git a/etc/wyatt8740/src/common/make-te.c b/etc/wyatt8740/src/common/make-te.c new file mode 100644 index 0000000..ed87df3 --- /dev/null +++ b/etc/wyatt8740/src/common/make-te.c @@ -0,0 +1,58 @@ +#include <stdio.h> +#include <string.h> +#include <stdlib.h> + +int main() +{ + char name[512]; + char num[512]; + char help[512]; + char def[512]; + char args[512]; + char buf[512]; + char *defines[512]; + int i = 0, max; + + printf("/* this file is auto generated, edit textevents.in instead! */\n\nconst struct text_event te[] = {\n"); + while(fgets(name, sizeof(name), stdin)) + { + name[strlen(name)-1] = 0; + fgets(num, sizeof(num), stdin); + num[strlen(num)-1] = 0; + fgets(help, sizeof(help), stdin); + help[strlen(help)-1] = 0; + fgets(def, sizeof(def), stdin); + def[strlen(def)-1] = 0; + fgets(args, sizeof(args), stdin); + args[strlen(args)-1] = 0; + fgets(buf, sizeof(buf), stdin); + + if (args[0] == 'n') + printf("\n{\"%s\", %s, %d, \n\"%s\"},\n", + name, help, atoi(args+1) | 128, def); + else + printf("\n{\"%s\", %s, %d, \nN_(\"%s\")},\n", + name, help, atoi(args), def); + defines[i] = strdup (num); + i++; + } + + printf("};\n"); + + fprintf(stderr, "/* this file is auto generated, edit textevents.in instead! */\n\nenum\n{\n"); + max = i; + i = 0; + while (i < max) + { + if (i + 1 < max) + { + fprintf(stderr, "\t%s,\t\t%s,\n", defines[i], defines[i+1]); + i++; + } else + fprintf(stderr, "\t%s,\n", defines[i]); + i++; + } + fprintf(stderr, "\tNUM_XP\n};\n"); + + return 0; +} diff --git a/etc/wyatt8740/src/common/modes.c b/etc/wyatt8740/src/common/modes.c new file mode 100644 index 0000000..1acf7f5 --- /dev/null +++ b/etc/wyatt8740/src/common/modes.c @@ -0,0 +1,836 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <string.h> +#include <stdlib.h> +#include <stdio.h> +#include <glib.h> +#include <glib/gprintf.h> + +#include "xchat.h" +#include "xchatc.h" +#include "modes.h" +#include "server.h" +#include "text.h" +#include "fe.h" +#include "util.h" +#include "inbound.h" +#ifdef HAVE_STRINGS_H +#include <strings.h> +#endif + +typedef struct +{ + server *serv; + char *op; + char *deop; + char *voice; + char *devoice; +} mode_run; + +static int is_prefix_char (server * serv, char c); +static void record_chan_mode (session *sess, char sign, char mode, char *arg); +static char *mode_cat (char *str, char *addition); +static void handle_single_mode (mode_run *mr, char sign, char mode, char *nick, char *chan, char *arg, int quiet, int is_324); +static int mode_has_arg (server *serv, char sign, char mode); +static void mode_print_grouped (session *sess, char *nick, mode_run *mr); +static int mode_chanmode_type (server * serv, char mode); + + +/* word[] - list of nicks. + wpos - index into word[]. Where nicks really start. + end - index into word[]. Last entry plus one. + sign - a char, e.g. '+' or '-' + mode - a mode, e.g. 'o' or 'v' */ +void +send_channel_modes (session *sess, char *tbuf, char *word[], int wpos, + int end, char sign, char mode, int modes_per_line) +{ + int usable_modes, orig_len, len, wlen, i, max; + server *serv = sess->server; + + /* sanity check. IRC RFC says three per line. */ + if (serv->modes_per_line < 3) + serv->modes_per_line = 3; + if (modes_per_line < 1) + modes_per_line = serv->modes_per_line; + + /* RFC max, minus length of "MODE %s " and "\r\n" and 1 +/- sign */ + /* 512 - 6 - 2 - 1 - strlen(chan) */ + max = 503 - strlen (sess->channel); + + while (wpos < end) + { + tbuf[0] = '\0'; + orig_len = len = 0; + + /* we'll need this many modechars too */ + len += modes_per_line; + + /* how many can we fit? */ + for (i = 0; i < modes_per_line; i++) + { + /* no more nicks left? */ + if (wpos + i >= end) + break; + wlen = strlen (word[wpos + i]) + 1; + if (wlen + len > max) + break; + len += wlen; /* length of our whole string so far */ + } + if (i < 1) + return; + usable_modes = i; /* this is how many we'll send on this line */ + + /* add the +/-modemodemodemode */ + len = orig_len; + tbuf[len] = sign; + len++; + for (i = 0; i < usable_modes; i++) + { + tbuf[len] = mode; + len++; + } + tbuf[len] = 0; /* null terminate for the strcat() to work */ + + /* add all the nicknames */ + for (i = 0; i < usable_modes; i++) + { + strcat (tbuf, " "); + strcat (tbuf, word[wpos + i]); + } + serv->p_mode (serv, sess->channel, tbuf); + + wpos += usable_modes; + } +} + +/* does 'chan' have a valid prefix? e.g. # or & */ + +int +is_channel (server * serv, char *chan) +{ + if (strchr (serv->chantypes, chan[0])) + return 1; + return 0; +} + +/* is the given char a valid nick mode char? e.g. @ or + */ + +static int +is_prefix_char (server * serv, char c) +{ + int pos = 0; + char *np = serv->nick_prefixes; + + while (np[0]) + { + if (np[0] == c) + return pos; + pos++; + np++; + } + + if (serv->bad_prefix) + { + if (strchr (serv->bad_nick_prefixes, c)) + /* valid prefix char, but mode unknown */ + return -2; + } + + return -1; +} + +/* returns '@' for ops etc... */ + +char +get_nick_prefix (server * serv, unsigned int access) +{ + int pos; + char c; + + for (pos = 0; pos < USERACCESS_SIZE; pos++) + { + c = serv->nick_prefixes[pos]; + if (c == 0) + break; + if (access & (1 << pos)) + return c; + } + + return 0; +} + +/* returns the access bitfield for a nickname. E.g. + @nick would return 000010 in binary + %nick would return 000100 in binary + +nick would return 001000 in binary */ + +unsigned int +nick_access (server * serv, char *nick, int *modechars) +{ + int i; + unsigned int access = 0; + char *orig = nick; + + while (*nick) + { + i = is_prefix_char (serv, *nick); + if (i == -1) + break; + + /* -2 == valid prefix char, but mode unknown */ + if (i != -2) + access |= (1 << i); + + nick++; + } + + *modechars = nick - orig; + + return access; +} + +/* returns the access number for a particular mode. e.g. + mode 'a' returns 0 + mode 'o' returns 1 + mode 'h' returns 2 + mode 'v' returns 3 + Also puts the nick-prefix-char in 'prefix' */ + +int +mode_access (server * serv, char mode, char *prefix) +{ + int pos = 0; + + while (serv->nick_modes[pos]) + { + if (serv->nick_modes[pos] == mode) + { + *prefix = serv->nick_prefixes[pos]; + return pos; + } + pos++; + } + + *prefix = 0; + + return -1; +} + +static void +record_chan_mode (session *sess, char sign, char mode, char *arg) +{ + /* Somebody needed to acutally update sess->current_modes, needed to + play nice with bouncers, and less mode calls. Also keeps modes up + to date for scripts */ + server *serv = sess->server; + GString *current = g_string_new(sess->current_modes); + gint mode_pos = -1; + gchar *current_char = current->str; + gint modes_length; + gint argument_num = 0; + gint argument_offset = 0; + gint argument_length = 0; + int i = 0; + gchar *arguments_start; + + /* find out if the mode currently exists */ + arguments_start = g_strstr_len(current->str , -1, " "); + if (arguments_start) { + modes_length = arguments_start - current->str; + } + else { + modes_length = current->len; + /* set this to the end of the modes */ + arguments_start = current->str + current->len; + } + + while (mode_pos == -1 && i < modes_length) + { + if (*current_char == mode) + { + mode_pos = i; + } + else + { + i++; + current_char++; + } + } + + /* if the mode currently exists and has an arg, need to know where + * (including leading space) */ + if (mode_pos != -1 && mode_has_arg(serv, '+', mode)) + { + current_char = current->str; + + i = 0; + while (i <= mode_pos) + { + if (mode_has_arg(serv, '+', *current_char)) + argument_num++; + current_char++; + i++; + } + + /* check through arguments for where to start */ + current_char = arguments_start; + i = 0; + while (i < argument_num && *current_char != '\0') + { + if (*current_char == ' ') + i++; + if (i != argument_num) + current_char++; + } + argument_offset = current_char - current->str; + + /* how long the existing argument is for this key + * important for malloc and strncpy */ + if (i == argument_num) + { + argument_length++; + current_char++; + while (*current_char != '\0' && *current_char != ' ') + { + argument_length++; + current_char++; + } + } + } + + /* two cases, adding and removing a mode, handled differently */ + if (sign == '+') + { + if (mode_pos != -1) + { + /* if it already exists, only need to do something (change) + * if there should be a param */ + if (mode_has_arg(serv, sign, mode)) + { + /* leave the old space there */ + current = g_string_erase(current, argument_offset+1, argument_length-1); + current = g_string_insert(current, argument_offset+1, arg); + + free(sess->current_modes); + sess->current_modes = g_string_free(current, FALSE); + } + } + /* mode wasn't there before */ + else + { + /* insert the new mode character */ + current = g_string_insert_c(current, modes_length, mode); + + /* add the argument, with space if there is one */ + if (mode_has_arg(serv, sign, mode)) + { + current = g_string_append_c(current, ' '); + current = g_string_append(current, arg); + } + + free(sess->current_modes); + sess->current_modes = g_string_free(current, FALSE); + } + } + else if (sign == '-' && mode_pos != -1) + { + /* remove the argument first if it has one*/ + if (mode_has_arg(serv, '+', mode)) + current = g_string_erase(current, argument_offset, argument_length); + + /* remove the mode character */ + current = g_string_erase(current, mode_pos, 1); + + free(sess->current_modes); + sess->current_modes = g_string_free(current, FALSE); + } +} + +static char * +mode_cat (char *str, char *addition) +{ + int len; + + if (str) + { + len = strlen (str) + strlen (addition) + 2; + str = realloc (str, len); + strcat (str, " "); + strcat (str, addition); + } else + { + str = strdup (addition); + } + + return str; +} + +/* handle one mode, e.g. + handle_single_mode (mr,'+','b',"elite","#warez","banneduser",) */ + +static void +handle_single_mode (mode_run *mr, char sign, char mode, char *nick, + char *chan, char *arg, int quiet, int is_324) +{ + session *sess; + server *serv = mr->serv; + char outbuf[4]; + + outbuf[0] = sign; + outbuf[1] = 0; + outbuf[2] = mode; + outbuf[3] = 0; + + sess = find_channel (serv, chan); + if (!sess || !is_channel (serv, chan)) + { + /* got modes for a chan we're not in! probably nickmode +isw etc */ + sess = serv->front_session; + goto genmode; + } + + /* is this a nick mode? */ + if (strchr (serv->nick_modes, mode)) + { + /* update the user in the userlist */ + userlist_update_mode (sess, /*nickname */ arg, mode, sign); + } else + { + if (!is_324 && !sess->ignore_mode && mode_chanmode_type(serv, mode) >= 1) + record_chan_mode (sess, sign, mode, arg); + } + + switch (sign) + { + case '+': + switch (mode) + { + case 'k': + safe_strcpy (sess->channelkey, arg, sizeof (sess->channelkey)); + fe_update_channel_key (sess); + fe_update_mode_buttons (sess, mode, sign); + if (!quiet) + EMIT_SIGNAL (XP_TE_CHANSETKEY, sess, nick, arg, NULL, NULL, 0); + return; + case 'l': + sess->limit = atoi (arg); + fe_update_channel_limit (sess); + fe_update_mode_buttons (sess, mode, sign); + if (!quiet) + EMIT_SIGNAL (XP_TE_CHANSETLIMIT, sess, nick, arg, NULL, NULL, 0); + return; + case 'o': + if (!quiet) + mr->op = mode_cat (mr->op, arg); + return; + case 'h': + if (!quiet) + EMIT_SIGNAL (XP_TE_CHANHOP, sess, nick, arg, NULL, NULL, 0); + return; + case 'v': + if (!quiet) + mr->voice = mode_cat (mr->voice, arg); + return; + case 'b': + if (!quiet) + EMIT_SIGNAL (XP_TE_CHANBAN, sess, nick, arg, NULL, NULL, 0); + return; + case 'e': + if (!quiet) + EMIT_SIGNAL (XP_TE_CHANEXEMPT, sess, nick, arg, NULL, NULL, 0); + return; + case 'I': + if (!quiet) + EMIT_SIGNAL (XP_TE_CHANINVITE, sess, nick, arg, NULL, NULL, 0); + return; + } + break; + case '-': + switch (mode) + { + case 'k': + sess->channelkey[0] = 0; + fe_update_channel_key (sess); + fe_update_mode_buttons (sess, mode, sign); + if (!quiet) + EMIT_SIGNAL (XP_TE_CHANRMKEY, sess, nick, NULL, NULL, NULL, 0); + return; + case 'l': + sess->limit = 0; + fe_update_channel_limit (sess); + fe_update_mode_buttons (sess, mode, sign); + if (!quiet) + EMIT_SIGNAL (XP_TE_CHANRMLIMIT, sess, nick, NULL, NULL, NULL, 0); + return; + case 'o': + if (!quiet) + mr->deop = mode_cat (mr->deop, arg); + return; + case 'h': + if (!quiet) + EMIT_SIGNAL (XP_TE_CHANDEHOP, sess, nick, arg, NULL, NULL, 0); + return; + case 'v': + if (!quiet) + mr->devoice = mode_cat (mr->devoice, arg); + return; + case 'b': + if (!quiet) + EMIT_SIGNAL (XP_TE_CHANUNBAN, sess, nick, arg, NULL, NULL, 0); + return; + case 'e': + if (!quiet) + EMIT_SIGNAL (XP_TE_CHANRMEXEMPT, sess, nick, arg, NULL, NULL, 0); + return; + case 'I': + if (!quiet) + EMIT_SIGNAL (XP_TE_CHANRMINVITE, sess, nick, arg, NULL, NULL, 0); + return; + } + } + + fe_update_mode_buttons (sess, mode, sign); + + genmode: + /* Received umode +e. If we're waiting to send JOIN then send now! */ + if (mode == 'e' && sign == '+' && !serv->p_cmp (chan, serv->nick)) + inbound_identified (serv); + + if (!quiet) + { + if (*arg) + { + char *buf = malloc (strlen (chan) + strlen (arg) + 2); + sprintf (buf, "%s %s", chan, arg); + EMIT_SIGNAL (XP_TE_CHANMODEGEN, sess, nick, outbuf, outbuf + 2, buf, 0); + free (buf); + } else + EMIT_SIGNAL (XP_TE_CHANMODEGEN, sess, nick, outbuf, outbuf + 2, chan, 0); + } +} + +/* does this mode have an arg? like +b +l +o */ + +static int +mode_has_arg (server * serv, char sign, char mode) +{ + int type; + + /* if it's a nickmode, it must have an arg */ + if (strchr (serv->nick_modes, mode)) + return 1; + + type = mode_chanmode_type (serv, mode); + switch (type) + { + case 0: /* type A */ + case 1: /* type B */ + return 1; + case 2: /* type C */ + if (sign == '+') + return 1; + case 3: /* type D */ + return 0; + default: + return 0; + } + +} + +/* what type of chanmode is it? -1 for not in chanmode */ +static int +mode_chanmode_type (server * serv, char mode) +{ + /* see what numeric 005 CHANMODES=xxx said */ + char *cm = serv->chanmodes; + int type = 0; + int found = 0; + + while (*cm && !found) + { + if (*cm == ',') + { + type++; + } else if (*cm == mode) + { + found = 1; + } + cm++; + } + if (found) + return type; + /* not found? -1 */ + else + return -1; +} + +static void +mode_print_grouped (session *sess, char *nick, mode_run *mr) +{ + /* print all the grouped Op/Deops */ + if (mr->op) + { + EMIT_SIGNAL (XP_TE_CHANOP, sess, nick, mr->op, NULL, NULL, 0); + free (mr->op); + mr->op = NULL; + } + + if (mr->deop) + { + EMIT_SIGNAL (XP_TE_CHANDEOP, sess, nick, mr->deop, NULL, NULL, 0); + free (mr->deop); + mr->deop = NULL; + } + + if (mr->voice) + { + EMIT_SIGNAL (XP_TE_CHANVOICE, sess, nick, mr->voice, NULL, NULL, 0); + free (mr->voice); + mr->voice = NULL; + } + + if (mr->devoice) + { + EMIT_SIGNAL (XP_TE_CHANDEVOICE, sess, nick, mr->devoice, NULL, NULL, 0); + free (mr->devoice); + mr->devoice = NULL; + } +} + + +/* handle a MODE or numeric 324 from server */ + +void +handle_mode (server * serv, char *word[], char *word_eol[], + char *nick, int numeric_324) +{ + session *sess; + char *chan; + char *modes; + char *argstr; + char sign; + int len; + int arg; + int i, num_args; + int num_modes; + int offset = 3; + int all_modes_have_args = FALSE; + int using_front_tab = FALSE; + mode_run mr; + + mr.serv = serv; + mr.op = mr.deop = mr.voice = mr.devoice = NULL; + + /* numeric 324 has everything 1 word later (as opposed to MODE) */ + if (numeric_324) + offset++; + + chan = word[offset]; + modes = word[offset + 1]; + if (*modes == ':') + modes++; + + if (*modes == 0) + return; /* beyondirc's blank modes */ + + sess = find_channel (serv, chan); + if (!sess) + { + sess = serv->front_session; + using_front_tab = TRUE; + } + /* remove trailing space */ + len = strlen (word_eol[offset]) - 1; + if (word_eol[offset][len] == ' ') + word_eol[offset][len] = 0; + + if (prefs.raw_modes && !numeric_324) + EMIT_SIGNAL (XP_TE_RAWMODES, sess, nick, word_eol[offset], 0, 0, 0); + + if (numeric_324 && !using_front_tab) + { + if (sess->current_modes) + free (sess->current_modes); + sess->current_modes = strdup (word_eol[offset+1]); + } + + sign = *modes; + modes++; + arg = 1; + + /* count the number of arguments (e.g. after the -o+v) */ + num_args = 0; + i = 1; + while ((i + offset + 1) < PDIWORDS) + { + i++; + if (!(*word[i + offset])) + break; + num_args++; + } + + /* count the number of modes (without the -/+ chars */ + num_modes = 0; + i = 0; + while (i < strlen (modes)) + { + if (modes[i] != '+' && modes[i] != '-') + num_modes++; + i++; + } + + if (num_args == num_modes) + all_modes_have_args = TRUE; + + while (*modes) + { + switch (*modes) + { + case '-': + case '+': + /* print all the grouped Op/Deops */ + mode_print_grouped (sess, nick, &mr); + sign = *modes; + break; + default: + argstr = ""; + if ((all_modes_have_args || mode_has_arg (serv, sign, *modes)) && arg < (num_args+1)) + { + arg++; + argstr = word[arg + offset]; + } + handle_single_mode (&mr, sign, *modes, nick, chan, + argstr, numeric_324 || prefs.raw_modes, + numeric_324); + } + + modes++; + } + + /* update the title at the end, now that the mode update is internal now */ + if (!using_front_tab) + fe_set_title (sess); + + /* print all the grouped Op/Deops */ + mode_print_grouped (sess, nick, &mr); +} + +/* handle the 005 numeric */ + +void +inbound_005 (server * serv, char *word[]) +{ + int w; + char *pre; + + w = 4; /* start at the 4th word */ + while (w < PDIWORDS && *word[w]) + { + if (strncmp (word[w], "MODES=", 6) == 0) + { + serv->modes_per_line = atoi (word[w] + 6); + } else if (strncmp (word[w], "CHANTYPES=", 10) == 0) + { + free (serv->chantypes); + serv->chantypes = strdup (word[w] + 10); + } else if (strncmp (word[w], "CHANMODES=", 10) == 0) + { + free (serv->chanmodes); + serv->chanmodes = strdup (word[w] + 10); + } else if (strncmp (word[w], "PREFIX=", 7) == 0) + { + pre = strchr (word[w] + 7, ')'); + if (pre) + { + pre[0] = 0; /* NULL out the ')' */ + free (serv->nick_prefixes); + free (serv->nick_modes); + serv->nick_prefixes = strdup (pre + 1); + serv->nick_modes = strdup (word[w] + 8); + } else + { + /* bad! some ircds don't give us the modes. */ + /* in this case, we use it only to strip /NAMES */ + serv->bad_prefix = TRUE; + if (serv->bad_nick_prefixes) + free (serv->bad_nick_prefixes); + serv->bad_nick_prefixes = strdup (word[w] + 7); + } + } else if (strncmp (word[w], "WATCH=", 6) == 0) + { + serv->supports_watch = TRUE; + } else if (strncmp (word[w], "NETWORK=", 8) == 0) + { +/* if (serv->networkname) + free (serv->networkname); + serv->networkname = strdup (word[w] + 8);*/ + + if (serv->server_session->type == SESS_SERVER) + { + safe_strcpy (serv->server_session->channel, word[w] + 8, CHANLEN); + fe_set_channel (serv->server_session); + } + + /* use /NICKSERV */ + if (strcasecmp (word[w] + 8, "RusNet") == 0) + serv->nickservtype = 1; + else if (strcasecmp (word[w] + 8, "UniBG") == 0) + serv->nickservtype = 3; + else if (strcasecmp (word[w] + 8, "QuakeNet") == 0) + serv->nickservtype = 4; + + } else if (strncmp (word[w], "CASEMAPPING=", 12) == 0) + { + if (strcmp (word[w] + 12, "ascii") == 0) /* bahamut */ + serv->p_cmp = (void *)strcasecmp; + } else if (strncmp (word[w], "CHARSET=", 8) == 0) + { + if (strcasecmp (word[w] + 8, "UTF-8") == 0) + { + server_set_encoding (serv, "UTF-8"); + } + } else if (strcmp (word[w], "NAMESX") == 0) + { + /* 12345678901234567 */ + tcp_send_len (serv, "PROTOCTL NAMESX\r\n", 17); + } else if (strcmp (word[w], "WHOX") == 0) + { + serv->have_whox = TRUE; + } else if (strcmp (word[w], "CAPAB") == 0) + { + serv->have_capab = TRUE; + /* 12345678901234567890 */ + tcp_send_len (serv, "CAPAB IDENTIFY-MSG\r\n", 20); + /* now wait for numeric 290 */ + } else if (strcmp (word[w], "EXCEPTS") == 0) + { +#ifndef WIN32 + serv->have_except = TRUE; +#endif + } else if (strncmp (word[w], "ELIST=", 6) == 0) + { + /* supports LIST >< min/max user counts? */ + if (strchr (word[w] + 6, 'U') || strchr (word[w] + 6, 'u')) + serv->use_listargs = TRUE; + } + + w++; + } +} diff --git a/etc/wyatt8740/src/common/modes.h b/etc/wyatt8740/src/common/modes.h new file mode 100644 index 0000000..3f9c4a7 --- /dev/null +++ b/etc/wyatt8740/src/common/modes.h @@ -0,0 +1,12 @@ +#ifndef XCHAT_MODES_H +#define XCHAT_MODES_H + +int is_channel (server *serv, char *chan); +char get_nick_prefix (server *serv, unsigned int access); +unsigned int nick_access (server *serv, char *nick, int *modechars); +int mode_access (server *serv, char mode, char *prefix); +void inbound_005 (server *serv, char *word[]); +void handle_mode (server *serv, char *word[], char *word_eol[], char *nick, int numeric_324); +void send_channel_modes (session *sess, char *tbuf, char *word[], int start, int end, char sign, char mode, int modes_per_line); + +#endif diff --git a/etc/wyatt8740/src/common/msproxy.c b/etc/wyatt8740/src/common/msproxy.c new file mode 100644 index 0000000..9c85394 --- /dev/null +++ b/etc/wyatt8740/src/common/msproxy.c @@ -0,0 +1,467 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * + * MS Proxy (ISA server) support is (c) 2006 Pavel Fedin <sonic_amiga@rambler.ru> + * based on Dante source code + * Copyright (c) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + * Inferno Nettverk A/S, Norway. All rights reserved. + */ + +/*#define DEBUG_MSPROXY*/ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <unistd.h> +#include <fcntl.h> + +#define WANTSOCKET +#define WANTARPA +#include "inet.h" + +#include "xchat.h" +#include "network.h" +#include "xchatc.h" +#include "server.h" +#include "msproxy.h" + + +#ifdef USE_MSPROXY +#include <ntlm.h> + +static int +send_msprequest(s, state, request, end) + int s; + struct msproxy_state_t *state; + struct msproxy_request_t *request; + char *end; +{ + ssize_t w; + size_t l; + + request->magic25 = htonl(MSPROXY_VERSION); + request->serverack = state->seq_recv; + /* don't start incrementing sequence until we are acking packet #2. */ + request->sequence = (unsigned char)(request->serverack >= 2 ? state->seq_sent + 1 : 0); + + memcpy(request->RWSP, "RWSP", sizeof(request->RWSP)); + + l = end - (char *)request; + /* all requests must be atleast MSPROXY_MINLENGTH it seems. */ + if (l < MSPROXY_MINLENGTH) { + bzero(end, (size_t)(MSPROXY_MINLENGTH - l)); + l = MSPROXY_MINLENGTH; + } + + if ((w = send(s, request, l, 0)) != l) { +#ifdef DEBUG_MSPROXY + printf ("send_msprequest(): send() failed (%d bytes sent instead of %d\n", w, l); + perror ("Error is"); +#endif + return -1; + } + state->seq_sent = request->sequence; + + return w; +} + +static int +recv_mspresponse(s, state, response) + int s; + struct msproxy_state_t *state; + struct msproxy_response_t *response; +{ + ssize_t r; + + do { + if ((r = recv (s, response, sizeof (*response), 0)) < MSPROXY_MINLENGTH) { +#ifdef DEBUG_MSPROXY + printf ("recv_mspresponse(): expected to read atleast %d, read %d\n", MSPROXY_MINLENGTH, r); +#endif + return -1; + } + if (state->seq_recv == 0) + break; /* not started incrementing yet. */ +#ifdef DEBUG_MSPROXY + if (response->sequence == state->seq_recv) + printf ("seq_recv: %d, dup response, seqnumber: 0x%x\n", state->seq_recv, response->sequence); +#endif + } while (response->sequence == state->seq_recv); + + state->seq_recv = response->sequence; + + return r; +} + +int +traverse_msproxy (int sok, char *serverAddr, int port, struct msproxy_state_t *state, netstore *ns_proxy, int csok4, int csok6, int *csok, char bound) +{ + struct msproxy_request_t req; + struct msproxy_response_t res; + char *data, *p; + char hostname[NT_MAXNAMELEN]; + char ntdomain[NT_MAXNAMELEN]; + char challenge[8]; + netstore *ns_client; + int clientport; + guint32 destaddr; + guint32 flags; + + if (!prefs.proxy_auth || !prefs.proxy_user[0] || !prefs.proxy_pass[0] ) + return 1; + + /* MS proxy protocol implementation currently doesn't support IPv6 */ + destaddr = net_getsockaddr_v4 (ns_proxy); + if (!destaddr) + return 1; + + state->seq_recv = 0; + state->seq_sent = 0; + +#ifdef DEBUG_MSPROXY + printf ("Connecting to %s:%d via MS proxy\n", serverAddr, port); +#endif + + gethostname (hostname, NT_MAXNAMELEN); + p = strchr (hostname, '.'); + if (p) + *p = '\0'; + + bzero (&req, sizeof(req)); + req.clientid = htonl(0x0a000000); /* Initial client ID is always 0x0a */ + req.command = htons(MSPROXY_HELLO); /* HELLO command */ + req.packet.hello.magic5 = htons(0x4b00); /* Fill in magic values */ + req.packet.hello.magic10 = htons(0x1400); + req.packet.hello.magic15 = htons(0x0400); + req.packet.hello.magic20 = htons(0x5704); + req.packet.hello.magic25 = htons(0x0004); + req.packet.hello.magic30 = htons(0x0100); + req.packet.hello.magic35 = htons(0x4a02); + req.packet.hello.magic40 = htons(0x3000); + req.packet.hello.magic45 = htons(0x4400); + req.packet.hello.magic50 = htons(0x3900); + data = req.packet.hello.data; + strcpy (data, prefs.proxy_user); /* Append a username */ + data += strlen (prefs.proxy_user)+2; /* +2 automatically creates second empty string */ + strcpy (data, MSPROXY_EXECUTABLE); /* Append an application name */ + data += strlen (MSPROXY_EXECUTABLE)+1; + strcpy (data, hostname); /* Append a hostname */ + data += strlen (hostname)+1; + + if (send_msprequest(sok, state, &req, data) == -1) + return 1; + + if (recv_mspresponse(sok, state, &res) == -1) + return 1; + + if (strcmp(res.RWSP, "RWSP") != 0) { +#ifdef DEBUG_MSPROXY + printf ("Received mailformed packet (no RWSP signature)\n"); +#endif + return 1; + } + + if (ntohs(res.command) >> 8 != 0x10) { +#ifdef DEBUG_MSPROXY + printf ("expected res.command = 10??, is %x", ntohs(res.command)); +#endif + return 1; + } + + state->clientid = htonl(rand()); + state->serverid = res.serverid; + +#ifdef DEBUG_MSPROXY + printf ("clientid: 0x%x, serverid: 0x%0x\n", state->clientid, state->serverid); + printf ("packet #2\n"); +#endif + + /* almost identical. */ + req.clientid = state->clientid; + req.serverid = state->serverid; + + if (send_msprequest(sok, state, &req, data) == -1) + return 1; + + if (recv_mspresponse(sok, state, &res) == -1) + return 1; + + if (res.serverid != state->serverid) { +#ifdef DEBUG_MSPROXY + printf ("expected serverid = 0x%x, is 0x%x\n",state->serverid, res.serverid); +#endif + return 1; + } + + if (res.sequence != 0x01) { +#ifdef DEBUG_MSPROXY + printf ("expected res.sequence = 0x01, is 0x%x\n", res.sequence); +#endif + return 1; + } + + if (ntohs(res.command) != MSPROXY_USERINFO_ACK) { +#ifdef DEBUG_MSPROXY + printf ("expected res.command = 0x%x, is 0x%x\n", MSPROXY_USERINFO_ACK, ntohs(res.command)); +#endif + return 1; + } + +#ifdef DEBUG_MSPROXY + printf ("packet #3\n"); +#endif + + bzero(&req, sizeof(req)); + req.clientid = state->clientid; + req.serverid = state->serverid; + req.command = htons(MSPROXY_AUTHENTICATE); + memcpy(req.packet.auth.NTLMSSP, "NTLMSSP", sizeof("NTLMSSP")); + req.packet.auth.bindaddr = htonl(0x02000000); + req.packet.auth.msgtype = htonl(0x01000000); + /* NTLM flags: 0x80000000 Negotiate LAN Manager key + 0x10000000 Negotiate sign + 0x04000000 Request target + 0x02000000 Negotiate OEM + 0x00800000 Always sign + 0x00020000 Negotiate NTLM + */ + req.packet.auth.flags = htonl(0x06020000); + + if (send_msprequest(sok, state, &req, &req.packet.auth.data) == -1) + return 1; + + if (recv_mspresponse(sok, state, &res) == -1) + return 1; + + if (res.serverid != state->serverid) { +#ifdef DEBUG_MSPROXY + printf ("expected serverid = 0x%x, is 0x%x\n", state->serverid, res.serverid); +#endif + return 1; + } + + if (ntohs(res.command) != MSPROXY_AUTHENTICATE_ACK) { +#ifdef DEBUG_MSPROXY + printf ("expected res.command = 0x%x, is 0x%x\n", MSPROXY_AUTHENTICATE_ACK, ntohs(res.command)); +#endif + return 1; + } + + flags = res.packet.auth.flags & htonl(0x00020000); /* Remember if the server supports NTLM */ + memcpy(challenge, &res.packet.auth.challenge, sizeof(challenge)); + memcpy(ntdomain, &res.packet.auth.NTLMSSP[res.packet.auth.target.offset], res.packet.auth.target.len); + ntdomain[res.packet.auth.target.len] = 0; + +#ifdef DEBUG_MSPROXY + printf ("ntdomain: \"%s\"\n", ntdomain); + printf ("packet #4\n"); +#endif + + bzero(&req, sizeof(req)); + req.clientid = state->clientid; + req.serverid = state->serverid; + req.command = htons(MSPROXY_AUTHENTICATE_2); /* Authentication response */ + req.packet.auth2.magic3 = htons(0x0200); /* Something */ + memcpy(req.packet.auth2.NTLMSSP, "NTLMSSP", sizeof("NTLMSSP")); /* Start of NTLM message */ + req.packet.auth2.msgtype = htonl(0x03000000); /* Message type 2 */ + req.packet.auth2.flags = flags | htonl(0x02000000); /* Choose authentication method */ + data = req.packet.auth2.data; + if (flags) { + req.packet.auth2.lm_resp.len = 0; /* We are here if NTLM is supported, */ + req.packet.auth2.lm_resp.alloc = 0; /* Do not fill in insecure LM response */ + req.packet.auth2.lm_resp.offset = data - req.packet.auth2.NTLMSSP; + req.packet.auth2.ntlm_resp.len = 24; /* Fill in NTLM response security buffer */ + req.packet.auth2.ntlm_resp.alloc = 24; + req.packet.auth2.ntlm_resp.offset = data - req.packet.auth2.NTLMSSP; + ntlm_smb_nt_encrypt(prefs.proxy_pass, challenge, data); /* Append an NTLM response */ + data += 24; + } else { + req.packet.auth2.lm_resp.len = 24; /* Fill in LM response security buffer */ + req.packet.auth2.lm_resp.alloc = 24; + req.packet.auth2.lm_resp.offset = data - req.packet.auth2.NTLMSSP; + ntlm_smb_encrypt(prefs.proxy_pass, challenge, data); /* Append an LM response */ + data += 24; + req.packet.auth2.ntlm_resp.len = 0; /* NTLM response is empty */ + req.packet.auth2.ntlm_resp.alloc = 0; + req.packet.auth2.ntlm_resp.offset = data - req.packet.auth2.NTLMSSP; + } + req.packet.auth2.ntdomain_buf.len = strlen(ntdomain); /* Domain name */ + req.packet.auth2.ntdomain_buf.alloc = req.packet.auth2.ntdomain_buf.len; + req.packet.auth2.ntdomain_buf.offset = data - req.packet.auth2.NTLMSSP; + strcpy(data, ntdomain); + data += req.packet.auth2.ntdomain_buf.len; + req.packet.auth2.username_buf.len = strlen(prefs.proxy_user); /* Username */ + req.packet.auth2.username_buf.alloc = req.packet.auth2.username_buf.len; + req.packet.auth2.username_buf.offset = data - req.packet.auth2.NTLMSSP; + strcpy(data, prefs.proxy_user); + data += req.packet.auth2.username_buf.len; + req.packet.auth2.clienthost_buf.len = strlen(hostname); /* Hostname */ + req.packet.auth2.clienthost_buf.alloc = req.packet.auth2.clienthost_buf.len; + req.packet.auth2.clienthost_buf.offset = data - req.packet.auth2.NTLMSSP; + strcpy(data, hostname); + data += req.packet.auth2.clienthost_buf.len; + req.packet.auth2.sessionkey_buf.len = 0; /* Session key (we don't use it) */ + req.packet.auth2.sessionkey_buf.alloc = 0; + req.packet.auth2.sessionkey_buf.offset = data - req.packet.auth2.NTLMSSP; + + if (send_msprequest(sok, state, &req, data) == -1) + return 1; + + if (recv_mspresponse(sok, state, &res) == -1) + return 1; + + if (res.serverid != state->serverid) { +#ifdef DEBUG_MSPROXY + printf ("expected res.serverid = 0x%x, is 0x%x\n", state->serverid, res.serverid); +#endif + return 1; + } + + if (res.clientack != 0x01) { +#ifdef DEBUG_MSPROXY + printf ("expected res.clientack = 0x01, is 0x%x\n", res.clientack); +#endif + return 1; + } + + if (ntohs(res.command) >> 8 != 0x47) { +#ifdef DEBUG_MSPROXY + printf ("expected res.command = 47??, is 0x%x\n", ntohs(res.command)); +#endif + return 1; + } + + if (ntohs(res.command) == MSPROXY_AUTHENTICATE_2_NAK) { +#ifdef DEBUG_MSPROXY + printf ("Authentication failed\n"); +#endif + return -1; + } + +#ifdef DEBUG_MSPROXY + printf ("packet #5\n"); +#endif + + bzero(&req, sizeof(req)); + req.clientid = state->clientid; + req.serverid = state->serverid; + req.command = htons(MSPROXY_CONNECT); + req.packet.connect.magic2 = htons(0x0200); + req.packet.connect.magic6 = htons(0x0200); + req.packet.connect.destport = htons(port); + req.packet.connect.destaddr = destaddr; + data = req.packet.connect.executable; + strcpy(data, MSPROXY_EXECUTABLE); + data += strlen(MSPROXY_EXECUTABLE) + 1; + + /* + * need to tell server what port we will connect from, so we bind our sockets. + */ + ns_client = net_store_new (); + if (!bound) { + net_store_fill_any (ns_client); + net_bind(ns_client, csok4, csok6); +#ifdef DEBUG_MSPROXY + perror ("bind() result"); +#endif + } + clientport = net_getsockport(csok4, csok6); + if (clientport == -1) { +#ifdef DEBUG_MSPROXY + printf ("Unable to obtain source port\n"); +#endif + return 1; + } + req.packet.connect.srcport = clientport; + + if (send_msprequest(sok, state, &req, data) == -1) + return 1; + + if (recv_mspresponse(sok, state, &res) == -1) + return 1; + + if (ntohs(res.command) != MSPROXY_CONNECT_ACK) { +#ifdef DEBUG_MSPROXY + printf ("expected res.command = 0x%x, is 0x%x\n",MSPROXY_CONNECT_ACK, ntohs(res.command)); +#endif + return 1; + } + + net_store_fill_v4 (ns_client, res.packet.connect.clientaddr, res.packet.connect.clientport); + +#ifdef DEBUG_MSPROXY + printf ("Connecting...\n"); +#endif + if (net_connect (ns_client, csok4, csok6, csok) != 0) { +#ifdef DEBUG_MSPROXY + printf ("Failed to connect to port %d\n", htons(res.packet.connect.clientport)); +#endif + net_store_destroy (ns_client); + return 1; + } + net_store_destroy (ns_client); +#ifdef DEBUG_MSPROXY + printf ("packet #6\n"); +#endif + + req.clientid = state->clientid; + req.serverid = state->serverid; + req.command = htons(MSPROXY_USERINFO_ACK); + + if (send_msprequest(sok, state, &req, req.packet.connack.data) == -1) + return 1; + + return 0; +} + +void +msproxy_keepalive (void) +{ + server *serv; + GSList *list = serv_list; + struct msproxy_request_t req; + struct msproxy_response_t res; + + while (list) + { + serv = list->data; + if (serv->connected && (serv->proxy_sok != -1)) + { +#ifdef DEBUG_MSPROXY + printf ("sending MS proxy keepalive packet\n"); +#endif + + bzero(&req, sizeof(req)); + req.clientid = serv->msp_state.clientid; + req.serverid = serv->msp_state.serverid; + req.command = htons(MSPROXY_HELLO); + + if (send_msprequest(serv->proxy_sok, &serv->msp_state, &req, req.packet.hello.data) == -1) + continue; + + recv_mspresponse(serv->proxy_sok, &serv->msp_state, &res); + +#ifdef DEBUG_MSPROXY + if (ntohs(res.command) != MSPROXY_USERINFO_ACK) + printf ("expected res.command = 0x%x, is 0x%x\n", MSPROXY_USERINFO_ACK, ntohs(res.command)); +#endif + } + list = list->next; + } +} + +#endif diff --git a/etc/wyatt8740/src/common/msproxy.h b/etc/wyatt8740/src/common/msproxy.h new file mode 100644 index 0000000..d37c81c --- /dev/null +++ b/etc/wyatt8740/src/common/msproxy.h @@ -0,0 +1,257 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * + * MS Proxy (ISA server) support is (c) 2006 Pavel Fedin <sonic_amiga@rambler.ru> + * based on Dante source code + * Copyright (c) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + * Inferno Nettverk A/S, Norway. All rights reserved. + */ + +#include "network.h" + +#define MSPROXY_EXECUTABLE "xchat.exe" /* This probably can be used for access control on the server side */ + +#define MSPROXY_MINLENGTH 172 /* minimum length of packet. */ +#define NT_MAXNAMELEN 17 /* maximum name length (domain etc), comes from NetBIOS */ +#define MSPROXY_VERSION 0x00010200 /* MS Proxy v2 ? */ + +/* Commands / responses */ +#define MSPROXY_HELLO 0x0500 /* packet 1 from client. */ +#define MSPROXY_HELLO_ACK 0x1000 /* packet 1 from server. */ + +#define MSPROXY_USERINFO_ACK 0x0400 /* packet 2 from server. */ + +#define MSPROXY_AUTHENTICATE 0x4700 /* authentication request */ +#define MSPROXY_AUTHENTICATE_ACK 0x4714 /* authentication challenge */ + +#define MSPROXY_AUTHENTICATE_2 0x4701 /* authentication response */ +#define MSPROXY_AUTHENTICATE_2_ACK 0x4715 /* authentication passed */ +#define MSPROXY_AUTHENTICATE_2_NAK 0x4716 /* authentication failure */ + +#define MSPROXY_CONNECT 0x071e /* connect request. */ +#define MSPROXY_CONNECT_ACK 0x0703 /* connect request accepted. */ + +#pragma pack(1) + +struct ntlm_buffer { + guint16 len; + guint16 alloc; + guint32 offset; +}; + +struct msproxy_request_t { + guint32 clientid; /* 1-4 */ + guint32 magic25; /* 5-8 */ + guint32 serverid; /* 9-12 */ + unsigned char serverack; /* 13: ack of last server packet */ + char pad10[3]; /* 14-16 */ + unsigned char sequence; /* 17: sequence # of this packet. */ + char pad11[7]; /* 18-24 */ + char RWSP[4]; /* 25-28: 0x52,0x57,0x53,0x50 */ + char pad15[8]; /* 29-36 */ + guint16 command; /* 37-38 */ + + /* packet specifics start at 39. */ + union { + struct { + char pad1[18]; /* 39-56 */ + guint16 magic3; /* 57-58 */ + char pad3[114]; /* 59-172 */ + guint16 magic5; /* 173-174: 0x4b, 0x00 */ + char pad5[2]; /* 175-176 */ + guint16 magic10; /* 177-178: 0x14, 0x00 */ + char pad6[2]; /* 179-180 */ + guint16 magic15; /* 181-182: 0x04, 0x00 */ + char pad10[2]; /* 183-184 */ + guint16 magic16; /* 185-186 */ + char pad11[2]; /* 187-188 */ + guint16 magic20; /* 189-190: 0x57, 0x04 */ + guint16 magic25; /* 191-192: 0x00, 0x04 */ + guint16 magic30; /* 193-194: 0x01, 0x00 */ + char pad20[2]; /* 195-196: 0x4a, 0x02 */ + guint16 magic35; /* 197-198: 0x4a, 0x02 */ + char pad30[10]; /* 199-208 */ + guint16 magic40; /* 209-210: 0x30, 0x00 */ + char pad40[2]; /* 211-212 */ + guint16 magic45; /* 213-214: 0x44, 0x00 */ + char pad45[2]; /* 215-216 */ + guint16 magic50; /* 217-218: 0x39, 0x00 */ + char pad50[2]; /* 219-220 */ + char data[256]; /* 221-EOP: a sequence of NULL-terminated strings: + - username; + - empty string (just a NULL); + - application name; + - hostname */ + } hello; + + struct { + char pad1[4]; /* 39-42 */ + guint16 magic2; /* 43-44 */ + char pad10[12]; /* 45-56 */ + guint32 bindaddr; /* 57-60: address to bind. */ + guint16 bindport; /* 61-62: port to bind. */ + char pad15[2]; /* 63-64 */ + guint16 magic3; /* 65-66 */ + guint16 boundport; /* 67-68 */ + char pad20[104]; /* 69-172 */ + char NTLMSSP[sizeof("NTLMSSP")]; /* 173-180: "NTLMSSP" */ + guint32 msgtype; /* 181-184: NTLM message type = 1 */ + guint32 flags; /* 185-188: NTLM message flags */ + guint16 magic20; /* 189-190: 0x28, 0x00 */ + char pad30[2]; /* 191-192 */ + guint16 magic25; /* 193-194: 0x96, 0x82 */ + guint16 magic30; /* 195-196: 0x01, 0x00 */ + char pad40[12]; /* 197-208 */ + guint16 magic50; /* 209-210: 0x30, 0x00 */ + char pad50[6]; /* 211-216 */ + guint16 magic55; /* 217-218: 0x30, 0x00 */ + char pad55[2]; /* 219-220 */ + char data[0]; /* Dummy end marker, no real data required */ + } auth; + + struct { + char pad1[4]; /* 39-42 */ + guint16 magic1; /* 43-44 */ + guint32 magic2; /* 45-48 */ + char pad2[8]; /* 49-56 */ + guint16 magic3; /* 57-58 */ + char pad3[6]; /* 59-64 */ + guint16 magic4; /* 65-66 */ + guint16 boundport; /* 67-68 */ + char pad4[104]; /* 69-172 */ + char NTLMSSP[sizeof("NTLMSSP")]; /* 173-180: "NTLMSSP" */ + guint32 msgtype; /* 181-184: NTLM message type = 3 */ + struct ntlm_buffer lm_resp; /* 185-192: LM response security buffer */ + struct ntlm_buffer ntlm_resp; /* 193-200: NTLM response security buffer */ + struct ntlm_buffer ntdomain_buf; /* 201-208: domain name security buffer */ + struct ntlm_buffer username_buf; /* 209-216: username security buffer */ + struct ntlm_buffer clienthost_buf; /* 217-224: hostname security buffer */ + struct ntlm_buffer sessionkey_buf; /* 225-232: session key security buffer */ + guint32 flags; /* 233-236: message flags */ + char data[1024]; /* 237-EOP: data area */ + } auth2; + + struct { + guint16 magic1; /* 39-40 */ + char pad1[2]; /* 41-42 */ + guint16 magic2; /* 43-44 */ + guint32 magic3; /* 45-48 */ + char pad5[8]; /* 48-56 */ + guint16 magic6; /* 57-58: 0x0200 */ + guint16 destport; /* 59-60 */ + guint32 destaddr; /* 61-64 */ + char pad10[4]; /* 65-68 */ + guint16 magic10; /* 69-70 */ + char pad15[2]; /* 71-72 */ + guint16 srcport; /* 73-74: port client connects from */ + char pad20[82]; /* 75-156 */ + char executable[256]; /* 76-EOP: application name */ + } connect; + + struct { + guint16 magic1; /* 39-40 */ + char pad5[2]; /* 41-42 */ + guint16 magic5; /* 43-44 */ + guint32 magic10; /* 45-48 */ + char pad10[2]; /* 49-50 */ + guint16 magic15; /* 51-52 */ + guint32 magic16; /* 53-56 */ + guint16 magic20; /* 57-58 */ + guint16 clientport; /* 59-60: forwarded port. */ + guint32 clientaddr; /* 61-64: forwarded address. */ + guint32 magic30; /* 65-68 */ + guint32 magic35; /* 69-72 */ + guint16 serverport; /* 73-74: port server will connect to us from. */ + guint16 srcport; /* 75-76: connect request; port used on client behalf. */ + guint16 boundport; /* 77-78: bind request; port used on client behalf. */ + guint32 boundaddr; /* 79-82: addr used on client behalf */ + char pad30[90]; /* 83-172 */ + char data[0]; /* End marker */ + } connack; + + } packet; +}; + +struct msproxy_response_t { + guint32 packetid; /* 1-4 */ + guint32 magic5; /* 5-8 */ + guint32 serverid; /* 9-12 */ + char clientack; /* 13: ack of last client packet. */ + char pad5[3]; /* 14-16 */ + unsigned char sequence; /* 17: sequence # of this packet. */ + char pad10[7]; /* 18-24 */ + char RWSP[4]; /* 25-28: 0x52,0x57,0x53,0x50 */ + char pad15[8]; /* 29-36 */ + guint16 command; /* 37-38 */ + + union { + struct { + char pad5[18]; /* 39-56 */ + guint16 magic20; /* 57-58: 0x02, 0x00 */ + char pad10[6]; /* 59-64 */ + guint16 magic30; /* 65-66: 0x74, 0x01 */ + char pad15[2]; /* 67-68 */ + guint16 magic35; /* 69-70: 0x0c, 0x00 */ + char pad20[6]; /* 71-76 */ + guint16 magic50; /* 77-78: 0x04, 0x00 */ + char pad30[6]; /* 79-84 */ + guint16 magic60; /* 85-86: 0x65, 0x05 */ + char pad35[2]; /* 87-88 */ + guint16 magic65; /* 89-90: 0x02, 0x00 */ + char pad40[8]; /* 91-98 */ + guint16 udpport; /* 99-100 */ + guint32 udpaddr; /* 101-104 */ + } hello; + + struct { + char pad1[6]; /* 39-44 */ + guint32 magic10; /* 45-48 */ + char pad3[10]; /* 49-58 */ + guint16 boundport; /* 59-60: port server bound for us. */ + guint32 boundaddr; /* 61-64: addr server bound for us. */ + char pad10[4]; /* 65-68 */ + guint16 magic15; /* 69-70 */ + char pad15[102]; /* 70-172 */ + char NTLMSSP[sizeof("NTLMSSP")]; /* 173-180: "NTLMSSP" */ + guint32 msgtype; /* 181-184: NTLM message type = 2 */ + struct ntlm_buffer target; /* 185-192: target security buffer */ + guint32 flags; /* 193-196: NTLM message flags */ + char challenge[8]; /* 197-204: NTLM challenge request */ + char context[8]; /* 205-212: NTLM context */ + char data[1024]; /* 213-EOP: target information data */ + } auth; + + struct { + guint16 magic1; /* 39-40 */ + char pad5[18]; /* 41-58 */ + guint16 clientport; /* 59-60: forwarded port. */ + guint32 clientaddr; /* 61-64: forwarded address. */ + guint32 magic10; /* 65-68 */ + guint32 magic15; /* 69-72 */ + guint16 serverport; /* 73-74: port server will connect to us from. */ + guint16 srcport; /* 75-76: connect request; port used on client behalf. */ + guint16 boundport; /* 77-78: bind request; port used on client behalf. */ + guint32 boundaddr; /* 79-82: addr used on client behalf */ + char pad10[90]; /* 83-172 */ + } connect; + } packet; +}; + +#pragma pack() + +int traverse_msproxy (int sok, char *serverAddr, int port, struct msproxy_state_t *state, netstore *ns_proxy, int csok4, int csok6, int *csok, char bound); +void msproxy_keepalive (void); diff --git a/etc/wyatt8740/src/common/network.c b/etc/wyatt8740/src/common/network.c new file mode 100644 index 0000000..0c40950 --- /dev/null +++ b/etc/wyatt8740/src/common/network.c @@ -0,0 +1,383 @@ +/* X-Chat + * Copyright (C) 2001 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +/* ipv4 and ipv6 networking functions with a common interface */ + +#include <stdlib.h> +#include <string.h> +#include <stdio.h> +#include <unistd.h> +#include <glib.h> + +#include "../../config.h" /* grab USE_IPV6 and LOOKUPD defines */ + +#define WANTSOCKET +#define WANTARPA +#define WANTDNS +#include "inet.h" + +#define NETWORK_PRIVATE +#include "network.h" + +#define RAND_INT(n) ((int)(rand() / (RAND_MAX + 1.0) * (n))) + + +/* ================== COMMON ================= */ + +static void +net_set_socket_options (int sok) +{ + socklen_t sw; + + sw = 1; + setsockopt (sok, SOL_SOCKET, SO_REUSEADDR, (char *) &sw, sizeof (sw)); + sw = 1; + setsockopt (sok, SOL_SOCKET, SO_KEEPALIVE, (char *) &sw, sizeof (sw)); +} + +char * +net_ip (guint32 addr) +{ + struct in_addr ia; + + ia.s_addr = htonl (addr); + return inet_ntoa (ia); +} + +void +net_store_destroy (netstore * ns) +{ +#ifdef USE_IPV6 + if (ns->ip6_hostent) + freeaddrinfo (ns->ip6_hostent); +#endif + free (ns); +} + +netstore * +net_store_new (void) +{ + netstore *ns; + + ns = malloc (sizeof (netstore)); + memset (ns, 0, sizeof (netstore)); + + return ns; +} + +#ifndef USE_IPV6 + +/* =================== IPV4 ================== */ + +/* + A note about net_resolve and lookupd: + + Many IRC networks rely on round-robin DNS for load balancing, rotating the list + of IP address on each query. However, this method breaks when DNS queries are + cached. Mac OS X and Darwin handle DNS lookups through the lookupd daemon, which + caches queries in its default configuration: thus, if we always pick the first + address, we will be stuck with the same host (which might be down!) until the + TTL reaches 0 or lookupd is reset (typically, at reboot). Therefore, we need to + pick a random address from the result list, instead of always using the first. +*/ + +char * +net_resolve (netstore * ns, char *hostname, int port, char **real_host) +{ + ns->ip4_hostent = gethostbyname (hostname); + if (!ns->ip4_hostent) + return NULL; + + memset (&ns->addr, 0, sizeof (ns->addr)); +#ifdef LOOKUPD + int count = 0; + while (ns->ip4_hostent->h_addr_list[count]) count++; + memcpy (&ns->addr.sin_addr, + ns->ip4_hostent->h_addr_list[RAND_INT(count)], + ns->ip4_hostent->h_length); +#else + memcpy (&ns->addr.sin_addr, ns->ip4_hostent->h_addr, + ns->ip4_hostent->h_length); +#endif + ns->addr.sin_port = htons (port); + ns->addr.sin_family = AF_INET; + + *real_host = strdup (ns->ip4_hostent->h_name); + return strdup (inet_ntoa (ns->addr.sin_addr)); +} + +int +net_connect (netstore * ns, int sok4, int sok6, int *sok_return) +{ + *sok_return = sok4; + return connect (sok4, (struct sockaddr *) &ns->addr, sizeof (ns->addr)); +} + +void +net_bind (netstore * tobindto, int sok4, int sok6) +{ + bind (sok4, (struct sockaddr *) &tobindto->addr, sizeof (tobindto->addr)); +} + +void +net_sockets (int *sok4, int *sok6) +{ + *sok4 = socket (AF_INET, SOCK_STREAM, 0); + *sok6 = -1; + net_set_socket_options (*sok4); +} + +void +udp_sockets (int *sok4, int *sok6) +{ + *sok4 = socket (AF_INET, SOCK_DGRAM, 0); + *sok6 = -1; +} + +void +net_store_fill_any (netstore *ns) +{ + ns->addr.sin_family = AF_INET; + ns->addr.sin_addr.s_addr = INADDR_ANY; + ns->addr.sin_port = 0; +} + +void +net_store_fill_v4 (netstore *ns, guint32 addr, int port) +{ + ns->addr.sin_family = AF_INET; + ns->addr.sin_addr.s_addr = addr; + ns->addr.sin_port = port; +} + +guint32 +net_getsockaddr_v4 (netstore *ns) +{ + return ns->addr.sin_addr.s_addr; +} + +int +net_getsockport (int sok4, int sok6) +{ + struct sockaddr_in addr; + int len = sizeof (addr); + + if (getsockname (sok4, (struct sockaddr *)&addr, &len) == -1) + return -1; + return addr.sin_port; +} + +#else + +/* =================== IPV6 ================== */ + +char * +net_resolve (netstore * ns, char *hostname, int port, char **real_host) +{ + struct addrinfo hints; + char ipstring[MAX_HOSTNAME]; + char portstring[MAX_HOSTNAME]; + int ret; + +/* if (ns->ip6_hostent) + freeaddrinfo (ns->ip6_hostent);*/ + + sprintf (portstring, "%d", port); + + memset (&hints, 0, sizeof (struct addrinfo)); + hints.ai_family = PF_UNSPEC; /* support ipv6 and ipv4 */ + hints.ai_flags = AI_CANONNAME; + hints.ai_socktype = SOCK_STREAM; + + if (port == 0) + ret = getaddrinfo (hostname, NULL, &hints, &ns->ip6_hostent); + else + ret = getaddrinfo (hostname, portstring, &hints, &ns->ip6_hostent); + if (ret != 0) + return NULL; + +#ifdef LOOKUPD /* See note about lookupd above the IPv4 version of net_resolve. */ + struct addrinfo *tmp; + int count = 0; + + for (tmp = ns->ip6_hostent; tmp; tmp = tmp->ai_next) + count ++; + + count = RAND_INT(count); + + while (count--) ns->ip6_hostent = ns->ip6_hostent->ai_next; +#endif + + /* find the numeric IP number */ + ipstring[0] = 0; + getnameinfo (ns->ip6_hostent->ai_addr, ns->ip6_hostent->ai_addrlen, + ipstring, sizeof (ipstring), NULL, 0, NI_NUMERICHOST); + + if (ns->ip6_hostent->ai_canonname) + *real_host = strdup (ns->ip6_hostent->ai_canonname); + else + *real_host = strdup (hostname); + + return strdup (ipstring); +} + +/* the only thing making this interface unclean, this shitty sok4, sok6 business */ + +int +net_connect (netstore * ns, int sok4, int sok6, int *sok_return) +{ + struct addrinfo *res, *res0; + int error = -1; + + res0 = ns->ip6_hostent; + + for (res = res0; res; res = res->ai_next) + { +/* sok = socket (res->ai_family, res->ai_socktype, res->ai_protocol); + if (sok < 0) + continue;*/ + switch (res->ai_family) + { + case AF_INET: + error = connect (sok4, res->ai_addr, res->ai_addrlen); + *sok_return = sok4; + break; + case AF_INET6: + error = connect (sok6, res->ai_addr, res->ai_addrlen); + *sok_return = sok6; + break; + default: + error = 1; + } + + if (error == 0) + break; + } + + return error; +} + +void +net_bind (netstore * tobindto, int sok4, int sok6) +{ + bind (sok4, tobindto->ip6_hostent->ai_addr, + tobindto->ip6_hostent->ai_addrlen); + bind (sok6, tobindto->ip6_hostent->ai_addr, + tobindto->ip6_hostent->ai_addrlen); +} + +void +net_sockets (int *sok4, int *sok6) +{ + *sok4 = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP); + *sok6 = socket (AF_INET6, SOCK_STREAM, IPPROTO_TCP); + net_set_socket_options (*sok4); + net_set_socket_options (*sok6); +} + +void +udp_sockets (int *sok4, int *sok6) +{ + *sok4 = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP); + *sok6 = socket (AF_INET6, SOCK_DGRAM, IPPROTO_UDP); +} + +/* the following functions are used only by MSPROXY and are not + proper ipv6 implementations - do not use in new code! */ + +void +net_store_fill_any (netstore *ns) +{ + struct addrinfo *ai; + struct sockaddr_in *sin; + + ai = ns->ip6_hostent; + if (!ai) { + ai = malloc (sizeof (struct addrinfo)); + memset (ai, 0, sizeof (struct addrinfo)); + ns->ip6_hostent = ai; + } + sin = (struct sockaddr_in *)ai->ai_addr; + if (!sin) { + sin = malloc (sizeof (struct sockaddr_in)); + memset (sin, 0, sizeof (struct sockaddr_in)); + ai->ai_addr = (struct sockaddr *)sin; + } + ai->ai_family = AF_INET; + ai->ai_addrlen = sizeof(struct sockaddr_in); + sin->sin_family = AF_INET; + sin->sin_addr.s_addr = INADDR_ANY; + sin->sin_port = 0; + ai->ai_next = NULL; +} + +void +net_store_fill_v4 (netstore *ns, guint32 addr, int port) +{ + struct addrinfo *ai; + struct sockaddr_in *sin; + + ai = ns->ip6_hostent; + if (!ai) { + ai = malloc (sizeof (struct addrinfo)); + memset (ai, 0, sizeof (struct addrinfo)); + ns->ip6_hostent = ai; + } + sin = (struct sockaddr_in *)ai->ai_addr; + if (!sin) { + sin = malloc (sizeof (struct sockaddr_in)); + memset (sin, 0, sizeof (struct sockaddr_in)); + ai->ai_addr = (struct sockaddr *)sin; + } + ai->ai_family = AF_INET; + ai->ai_addrlen = sizeof(struct sockaddr_in); + sin->sin_family = AF_INET; + sin->sin_addr.s_addr = addr; + sin->sin_port = port; + ai->ai_next = NULL; +} + +guint32 +net_getsockaddr_v4 (netstore *ns) +{ + struct addrinfo *ai; + struct sockaddr_in *sin; + + ai = ns->ip6_hostent; + + while (ai->ai_family != AF_INET) { + ai = ai->ai_next; + if (!ai) + return 0; + } + sin = (struct sockaddr_in *)ai->ai_addr; + return sin->sin_addr.s_addr; +} + +int +net_getsockport (int sok4, int sok6) +{ + struct sockaddr_in addr; + int len = sizeof (addr); + + if (getsockname (sok4, (struct sockaddr *)&addr, &len) == -1) + return -1; + return addr.sin_port; +} + +#endif diff --git a/etc/wyatt8740/src/common/network.h b/etc/wyatt8740/src/common/network.h new file mode 100644 index 0000000..f45f210 --- /dev/null +++ b/etc/wyatt8740/src/common/network.h @@ -0,0 +1,34 @@ +#ifndef XCHAT_NETWORK_H +#define XCHAT_NETWORK_H + +typedef struct netstore_ +{ +#ifdef NETWORK_PRIVATE +#ifdef USE_IPV6 + struct addrinfo *ip6_hostent; +#else + struct hostent *ip4_hostent; + struct sockaddr_in addr; +#endif +#else + int _dummy; /* some compilers don't like empty structs */ +#endif +} netstore; + +#define MAX_HOSTNAME 128 + +netstore *net_store_new (void); +void net_store_destroy (netstore *ns); +int net_connect (netstore *ns, int sok4, int sok6, int *sok_return); +char *net_resolve (netstore *ns, char *hostname, int port, char **real_host); +void net_bind (netstore *tobindto, int sok4, int sok6); +char *net_ip (guint32 addr); +void net_sockets (int *sok4, int *sok6); +/* functions for MSPROXY only! */ +void udp_sockets (int *sok4, int *sok6); +void net_store_fill_any (netstore *ns); +void net_store_fill_v4 (netstore *ns, guint32 addr, int port); +guint32 net_getsockaddr_v4 (netstore *ns); +int net_getsockport(int sok4, int sok6); + +#endif diff --git a/etc/wyatt8740/src/common/notify.c b/etc/wyatt8740/src/common/notify.c new file mode 100644 index 0000000..8beba65 --- /dev/null +++ b/etc/wyatt8740/src/common/notify.c @@ -0,0 +1,656 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <unistd.h> +#include <time.h> + +#include "xchat.h" +#include "notify.h" +#include "cfgfiles.h" +#include "fe.h" +#include "server.h" +#include "text.h" +#include "util.h" +#include "xchatc.h" + + +GSList *notify_list = 0; +int notify_tag = 0; + + +static char * +despacify_dup (char *str) +{ + char *p, *res = malloc (strlen (str) + 1); + + p = res; + while (1) + { + if (*str != ' ') + { + *p = *str; + if (*p == 0) + return res; + p++; + } + str++; + } +} + +static int +notify_netcmp (char *str, void *serv) +{ + char *net = despacify_dup (server_get_network (serv, TRUE)); + + if (rfc_casecmp (str, net) == 0) + { + free (net); + return 0; /* finish & return FALSE from token_foreach() */ + } + + free (net); + return 1; /* keep going... */ +} + +/* monitor this nick on this particular network? */ + +static gboolean +notify_do_network (struct notify *notify, server *serv) +{ + if (!notify->networks) /* ALL networks for this nick */ + return TRUE; + + if (token_foreach (notify->networks, ',', notify_netcmp, serv)) + return FALSE; /* network list doesn't contain this one */ + + return TRUE; +} + +struct notify_per_server * +notify_find_server_entry (struct notify *notify, struct server *serv) +{ + GSList *list = notify->server_list; + struct notify_per_server *servnot; + + while (list) + { + servnot = (struct notify_per_server *) list->data; + if (servnot->server == serv) + return servnot; + list = list->next; + } + + /* not found, should we add it, or is this not a network where + we're monitoring this nick? */ + if (!notify_do_network (notify, serv)) + return NULL; + + servnot = malloc (sizeof (struct notify_per_server)); + if (servnot) + { + memset (servnot, 0, sizeof (struct notify_per_server)); + servnot->server = serv; + servnot->notify = notify; + notify->server_list = g_slist_prepend (notify->server_list, servnot); + } + return servnot; +} + +void +notify_save (void) +{ + int fh; + ssize_t nb; + struct notify *notify; + GSList *list = notify_list; + + fh = xchat_open_file ("notify.conf.bug147832", O_TRUNC | O_WRONLY | O_CREAT, 0600, XOF_DOMODE); + if( fh == -1 ) + { + perror( "notify_save: xchat_open_file failed" ); + return; + } + else + { + nb = 1; + while (list) + { + notify = (struct notify *) list->data; + if( nb > 0 ) nb = write (fh, notify->name, strlen (notify->name)); + if (notify->networks) + { + if( nb > 0 ) nb = write (fh, " ", 1); + if( nb > 0 ) nb = write (fh, notify->networks, strlen (notify->networks)); + } + if( nb > 0 ) nb = write (fh, "\n", 1); + list = list->next; + } + if( nb <= 0 ) + { + fprintf( stderr, "notify_save: fprintf() failed\n" ); + close( fh ); + return; + } + if( close (fh) != 0 ) + { + perror( "notify_save: close failed" ); + return; + } + if( xchat_rename_file( "notify.conf.bug147832", "notify.conf", XOF_DOMODE ) != 0 ) + { + perror( "notify_save: xchat_rename_file() failed" ); + return; + } + } +} + +void +notify_load (void) +{ + int fh; + char buf[256]; + char *sep; + + fh = xchat_open_file ("notify.conf", O_RDONLY, 0, 0); + if (fh != -1) + { + while (waitline (fh, buf, sizeof buf, FALSE) != -1) + { + if (buf[0] != '#' && buf[0] != 0) + { + sep = strchr (buf, ' '); + if (sep) + { + sep[0] = 0; + notify_adduser (buf, sep + 1); + } + else + notify_adduser (buf, NULL); + } + } + close (fh); + } +} + +static struct notify_per_server * +notify_find (server *serv, char *nick) +{ + GSList *list = notify_list; + struct notify_per_server *servnot; + struct notify *notify; + + while (list) + { + notify = (struct notify *) list->data; + + servnot = notify_find_server_entry (notify, serv); + if (!servnot) + { + list = list->next; + continue; + } + + if (!serv->p_cmp (notify->name, nick)) + return servnot; + + list = list->next; + } + + return 0; +} + +static void +notify_announce_offline (server * serv, struct notify_per_server *servnot, + char *nick, int quiet) +{ + session *sess; + + sess = serv->front_session; + + servnot->ison = FALSE; + servnot->lastoff = time (0); + if (!quiet) + EMIT_SIGNAL (XP_TE_NOTIFYOFFLINE, sess, nick, serv->servername, + server_get_network (serv, TRUE), NULL, 0); + fe_notify_update (nick); + fe_notify_update (0); +} + +static void +notify_announce_online (server * serv, struct notify_per_server *servnot, + char *nick) +{ + session *sess; + + sess = serv->front_session; + + servnot->lastseen = time (0); + if (servnot->ison) + return; + + servnot->ison = TRUE; + servnot->laston = time (0); + EMIT_SIGNAL (XP_TE_NOTIFYONLINE, sess, nick, serv->servername, + server_get_network (serv, TRUE), NULL, 0); + fe_notify_update (nick); + fe_notify_update (0); + + if (prefs.whois_on_notifyonline) + { + + /* Let's do whois with idle time (like in /quote WHOIS %s %s) */ + + char *wii_str = malloc (strlen (nick) * 2 + 2); + sprintf (wii_str, "%s %s", nick, nick); + serv->p_whois (serv, wii_str); + free (wii_str); + } +} + +/* handles numeric 601 */ + +void +notify_set_offline (server * serv, char *nick, int quiet) +{ + struct notify_per_server *servnot; + + servnot = notify_find (serv, nick); + if (!servnot) + return; + + notify_announce_offline (serv, servnot, nick, quiet); +} + +/* handles numeric 604 and 600 */ + +void +notify_set_online (server * serv, char *nick) +{ + struct notify_per_server *servnot; + + servnot = notify_find (serv, nick); + if (!servnot) + return; + + notify_announce_online (serv, servnot, nick); +} + +static void +notify_watch (server * serv, char *nick, int add) +{ + char tbuf[256]; + + snprintf (tbuf, sizeof (tbuf), "WATCH +%s", nick); + if (!add) + tbuf[6] = '-'; + serv->p_raw (serv, tbuf); +} + +static void +notify_watch_all (struct notify *notify, int add) +{ + server *serv; + GSList *list = serv_list; + while (list) + { + serv = list->data; + if (serv->connected && serv->end_of_motd && serv->supports_watch && + notify_do_network (notify, serv)) + notify_watch (serv, notify->name, add); + list = list->next; + } +} + +static void +notify_flush_watches (server * serv, GSList *from, GSList *end) +{ + char tbuf[512]; + GSList *list; + struct notify *notify; + + strcpy (tbuf, "WATCH"); + + list = from; + while (list != end) + { + notify = list->data; + strcat (tbuf, " +"); + strcat (tbuf, notify->name); + list = list->next; + } + serv->p_raw (serv, tbuf); +} + +/* called when logging in. e.g. when End of motd. */ + +void +notify_send_watches (server * serv) +{ + struct notify *notify; + GSList *list; + GSList *point; + int len; + + len = 0; + point = list = notify_list; + while (list) + { + notify = list->data; + + if (notify_do_network (notify, serv)) + { + len += strlen (notify->name) + 2 /* + and space */; + if (len > 500) + { + notify_flush_watches (serv, point, list); + len = strlen (notify->name) + 2; + point = list; + } + } + + list = list->next; + } + + if (point) + notify_flush_watches (serv, point, NULL); +} + +/* called when receiving a ISON 303 - should this func go? */ + +void +notify_markonline (server *serv, char *word[]) +{ + struct notify *notify; + struct notify_per_server *servnot; + GSList *list = notify_list; + int i, seen; + + while (list) + { + notify = (struct notify *) list->data; + servnot = notify_find_server_entry (notify, serv); + if (!servnot) + { + list = list->next; + continue; + } + i = 4; + seen = FALSE; + while (*word[i]) + { + if (!serv->p_cmp (notify->name, word[i])) + { + seen = TRUE; + notify_announce_online (serv, servnot, notify->name); + break; + } + i++; + /* FIXME: word[] is only a 32 element array, limits notify list to + about 27 people */ + if (i > PDIWORDS - 5) + { + /*fprintf (stderr, _("*** XCHAT WARNING: notify list too large.\n"));*/ + break; + } + } + if (!seen && servnot->ison) + { + notify_announce_offline (serv, servnot, notify->name, FALSE); + } + list = list->next; + } + fe_notify_update (0); +} + +/* yuck! Old routine for ISON notify */ + +static void +notify_checklist_for_server (server *serv) +{ + char outbuf[512]; + struct notify *notify; + GSList *list = notify_list; + int i = 0; + + strcpy (outbuf, "ISON "); + while (list) + { + notify = list->data; + if (notify_do_network (notify, serv)) + { + i++; + strcat (outbuf, notify->name); + strcat (outbuf, " "); + if (strlen (outbuf) > 460) + { + /* LAME: we can't send more than 512 bytes to the server, but * + * if we split it in two packets, our offline detection wouldn't * + work */ + /*fprintf (stderr, _("*** XCHAT WARNING: notify list too large.\n"));*/ + break; + } + } + list = list->next; + } + + if (i) + serv->p_raw (serv, outbuf); +} + +int +notify_checklist (void) /* check ISON list */ +{ + struct server *serv; + GSList *list = serv_list; + + while (list) + { + serv = list->data; + if (serv->connected && serv->end_of_motd && !serv->supports_watch) + { + notify_checklist_for_server (serv); + } + list = list->next; + } + return 1; +} + +void +notify_showlist (struct session *sess) +{ + char outbuf[256]; + struct notify *notify; + GSList *list = notify_list; + struct notify_per_server *servnot; + int i = 0; + + EMIT_SIGNAL (XP_TE_NOTIFYHEAD, sess, NULL, NULL, NULL, NULL, 0); + while (list) + { + i++; + notify = (struct notify *) list->data; + servnot = notify_find_server_entry (notify, sess->server); + if (servnot && servnot->ison) + snprintf (outbuf, sizeof (outbuf), _(" %-20s online\n"), notify->name); + else + snprintf (outbuf, sizeof (outbuf), _(" %-20s offline\n"), notify->name); + PrintText (sess, outbuf); + list = list->next; + } + if (i) + { + sprintf (outbuf, "%d", i); + EMIT_SIGNAL (XP_TE_NOTIFYNUMBER, sess, outbuf, NULL, NULL, NULL, 0); + } else + EMIT_SIGNAL (XP_TE_NOTIFYEMPTY, sess, NULL, NULL, NULL, NULL, 0); +} + +int +notify_deluser (char *name) +{ + struct notify *notify; + struct notify_per_server *servnot; + GSList *list = notify_list; + + while (list) + { + notify = (struct notify *) list->data; + if (!rfc_casecmp (notify->name, name)) + { + fe_notify_update (notify->name); + /* Remove the records for each server */ + while (notify->server_list) + { + servnot = (struct notify_per_server *) notify->server_list->data; + notify->server_list = + g_slist_remove (notify->server_list, servnot); + free (servnot); + } + notify_list = g_slist_remove (notify_list, notify); + notify_watch_all (notify, FALSE); + if (notify->networks) + free (notify->networks); + free (notify->name); + free (notify); + fe_notify_update (0); + return 1; + } + list = list->next; + } + return 0; +} + +void +notify_adduser (char *name, char *networks) +{ + struct notify *notify = malloc (sizeof (struct notify)); + if (notify) + { + memset (notify, 0, sizeof (struct notify)); + if (strlen (name) >= NICKLEN) + { + notify->name = malloc (NICKLEN); + safe_strcpy (notify->name, name, NICKLEN); + } else + { + notify->name = strdup (name); + } + if (networks) + notify->networks = despacify_dup (networks); + notify->server_list = 0; + notify_list = g_slist_prepend (notify_list, notify); + notify_checklist (); + fe_notify_update (notify->name); + fe_notify_update (0); + notify_watch_all (notify, TRUE); + } +} + +gboolean +notify_is_in_list (server *serv, char *name) +{ + struct notify *notify; + GSList *list = notify_list; + + while (list) + { + notify = (struct notify *) list->data; + if (!serv->p_cmp (notify->name, name)) + return TRUE; + list = list->next; + } + + return FALSE; +} + +int +notify_isnotify (struct session *sess, char *name) +{ + struct notify *notify; + struct notify_per_server *servnot; + GSList *list = notify_list; + + while (list) + { + notify = (struct notify *) list->data; + if (!sess->server->p_cmp (notify->name, name)) + { + servnot = notify_find_server_entry (notify, sess->server); + if (servnot && servnot->ison) + return TRUE; + } + list = list->next; + } + + return FALSE; +} + +void +notify_cleanup () +{ + GSList *list = notify_list; + GSList *nslist, *srvlist; + struct notify *notify; + struct notify_per_server *servnot; + struct server *serv; + int valid; + + while (list) + { + /* Traverse the list of notify structures */ + notify = (struct notify *) list->data; + nslist = notify->server_list; + while (nslist) + { + /* Look at each per-server structure */ + servnot = (struct notify_per_server *) nslist->data; + + /* Check the server is valid */ + valid = FALSE; + srvlist = serv_list; + while (srvlist) + { + serv = (struct server *) srvlist->data; + if (servnot->server == serv) + { + valid = serv->connected; /* Only valid if server is too */ + break; + } + srvlist = srvlist->next; + } + if (!valid) + { + notify->server_list = + g_slist_remove (notify->server_list, servnot); + free (servnot); + nslist = notify->server_list; + } else + { + nslist = nslist->next; + } + } + list = list->next; + } + fe_notify_update (0); +} diff --git a/etc/wyatt8740/src/common/notify.h b/etc/wyatt8740/src/common/notify.h new file mode 100644 index 0000000..37674fe --- /dev/null +++ b/etc/wyatt8740/src/common/notify.h @@ -0,0 +1,44 @@ +#ifndef XCHAT_NOTIFY_H +#define XCHAT_NOTIFY_H + +struct notify +{ + char *name; + char *networks; /* network names, comma sep */ + GSList *server_list; +}; + +struct notify_per_server +{ + struct server *server; + struct notify *notify; + time_t laston; + time_t lastseen; + time_t lastoff; + unsigned int ison:1; +}; + +extern GSList *notify_list; +extern int notify_tag; + +/* the WATCH stuff */ +void notify_set_online (server * serv, char *nick); +void notify_set_offline (server * serv, char *nick, int quiet); +void notify_send_watches (server * serv); + +/* the general stuff */ +void notify_adduser (char *name, char *networks); +int notify_deluser (char *name); +void notify_cleanup (void); +void notify_load (void); +void notify_save (void); +void notify_showlist (session *sess); +gboolean notify_is_in_list (server *serv, char *name); +int notify_isnotify (session *sess, char *name); +struct notify_per_server *notify_find_server_entry (struct notify *notify, struct server *serv); + +/* the old ISON stuff - remove me? */ +void notify_markonline (server *serv, char *word[]); +int notify_checklist (void); + +#endif diff --git a/etc/wyatt8740/src/common/outbound.c b/etc/wyatt8740/src/common/outbound.c new file mode 100644 index 0000000..7c6e5e6 --- /dev/null +++ b/etc/wyatt8740/src/common/outbound.c @@ -0,0 +1,4403 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#define _GNU_SOURCE /* for memrchr */ +#include <string.h> +#include <stdlib.h> +#include <stdio.h> +#include <ctype.h> +#include <limits.h> +#include <errno.h> + +#define WANTSOCKET +#define WANTARPA +#include "inet.h" + +#ifndef WIN32 +#include <sys/wait.h> +#endif + +#include <unistd.h> +#include <time.h> +#include <signal.h> +#include <sys/stat.h> +#include <fcntl.h> + +#include "xchat.h" +#include "plugin.h" +#include "ignore.h" +#include "util.h" +#include "fe.h" +#include "cfgfiles.h" /* xchat_fopen_file() */ +#include "network.h" /* net_ip() */ +#include "modes.h" +#include "notify.h" +#include "inbound.h" +#include "text.h" +#include "xchatc.h" +#include "servlist.h" +#include "server.h" +#include "tree.h" +#include "outbound.h" + + +#ifdef USE_DEBUG +extern int current_mem_usage; +#endif +#define TBUFSIZE 4096 + +static void help (session *sess, char *tbuf, char *helpcmd, int quiet); +static int cmd_server (session *sess, char *tbuf, char *word[], char *word_eol[]); +static void handle_say (session *sess, char *text, int check_spch); + + +static void +notj_msg (struct session *sess) +{ + PrintText (sess, _("No channel joined. Try /join #<channel>\n")); +} + +void +notc_msg (struct session *sess) +{ + PrintText (sess, _("Not connected. Try /server <host> [<port>]\n")); +} + +static char * +random_line (char *file_name) +{ + FILE *fh; + char buf[512]; + int lines, ran; + + if (!file_name[0]) + goto nofile; + + fh = xchat_fopen_file (file_name, "r", 0); + if (!fh) + { + nofile: + /* reason is not a file, an actual reason! */ + return strdup (file_name); + } + + /* count number of lines in file */ + lines = 0; + while (fgets (buf, sizeof (buf), fh)) + lines++; + + if (lines < 1) + goto nofile; + + /* go down a random number */ + rewind (fh); + ran = RAND_INT (lines); + do + { + fgets (buf, sizeof (buf), fh); + lines--; + } + while (lines > ran); + fclose (fh); + buf[strlen (buf) - 1] = 0; /* remove the trailing '\n' */ + return strdup (buf); +} + +void +server_sendpart (server * serv, char *channel, char *reason) +{ + if (!reason) + { + reason = random_line (prefs.partreason); + serv->p_part (serv, channel, reason); + free (reason); + } else + { + /* reason set by /quit, /close argument */ + serv->p_part (serv, channel, reason); + } +} + +void +server_sendquit (session * sess) +{ + char *rea, *colrea; + + if (!sess->quitreason) + { + colrea = strdup (prefs.quitreason); + check_special_chars (colrea, FALSE); + rea = random_line (colrea); + free (colrea); + sess->server->p_quit (sess->server, rea); + free (rea); + } else + { + /* reason set by /quit, /close argument */ + sess->server->p_quit (sess->server, sess->quitreason); + } +} + +void +process_data_init (char *buf, char *cmd, char *word[], + char *word_eol[], gboolean handle_quotes, + gboolean allow_escape_quotes) +{ + int wordcount = 2; + int space = FALSE; + int quote = FALSE; + int j = 0; + int len; + + word[0] = "\000\000"; + word_eol[0] = "\000\000"; + word[1] = (char *)buf; + word_eol[1] = (char *)cmd; + + while (1) + { + switch (*cmd) + { + case 0: + buf[j] = 0; + for (j = wordcount; j < PDIWORDS; j++) + { + word[j] = "\000\000"; + word_eol[j] = "\000\000"; + } + return; + case '\042': + if (!handle_quotes) + goto def; + /* two quotes turn into 1 */ + if (allow_escape_quotes && cmd[1] == '\042') + { + cmd++; + goto def; + } + if (quote) + { + quote = FALSE; + space = FALSE; + } else + quote = TRUE; + cmd++; + break; + case ' ': + if (!quote) + { + if (!space) + { + buf[j] = 0; + j++; + + if (wordcount < PDIWORDS) + { + word[wordcount] = &buf[j]; + word_eol[wordcount] = cmd + 1; + wordcount++; + } + + space = TRUE; + } + cmd++; + break; + } + default: +def: + space = FALSE; + len = g_utf8_skip[((unsigned char *)cmd)[0]]; + if (len == 1) + { + buf[j] = *cmd; + j++; + cmd++; + } else + { + /* skip past a multi-byte utf8 char */ + memcpy (buf + j, cmd, len); + j += len; + cmd += len; + } + } + } +} + +static int +cmd_addbutton (struct session *sess, char *tbuf, char *word[], + char *word_eol[]) +{ + if (*word[2] && *word_eol[3]) + { + if (sess->type == SESS_DIALOG) + { + list_addentry (&dlgbutton_list, word_eol[3], word[2]); + fe_dlgbuttons_update (sess); + } else + { + list_addentry (&button_list, word_eol[3], word[2]); + fe_buttons_update (sess); + } + return TRUE; + } + return FALSE; +} + +static int +cmd_allchannels (session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + GSList *list = sess_list; + + if (!*word_eol[2]) + return FALSE; + + while (list) + { + sess = list->data; + if (sess->type == SESS_CHANNEL && sess->channel[0] && sess->server->connected) + { + handle_command (sess, word_eol[2], FALSE); + } + list = list->next; + } + + return TRUE; +} + +static int +cmd_allchannelslocal (session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + GSList *list = sess_list; + server *serv = sess->server; + + if (!*word_eol[2]) + return FALSE; + + while (list) + { + sess = list->data; + if (sess->type == SESS_CHANNEL && sess->channel[0] && + sess->server->connected && sess->server == serv) + { + handle_command (sess, word_eol[2], FALSE); + } + list = list->next; + } + + return TRUE; +} + +static int +cmd_allservers (struct session *sess, char *tbuf, char *word[], + char *word_eol[]) +{ + GSList *list; + server *serv; + + if (!*word_eol[2]) + return FALSE; + + list = serv_list; + while (list) + { + serv = list->data; + if (serv->connected) + handle_command (serv->front_session, word_eol[2], FALSE); + list = list->next; + } + + return TRUE; +} + +static int +cmd_away (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + GSList *list; + char *reason = word_eol[2]; + + if (!(*reason)) + { + if (sess->server->is_away) + { + if (sess->server->last_away_reason) + PrintTextf (sess, _("Already marked away: %s\n"), sess->server->last_away_reason); + return FALSE; + } + + if (sess->server->reconnect_away) + reason = sess->server->last_away_reason; + else + /* must manage memory pointed to by random_line() */ + reason = random_line (prefs.awayreason); + } + sess->server->p_set_away (sess->server, reason); + + if (prefs.show_away_message) + { + snprintf (tbuf, TBUFSIZE, "me is away: %s", reason); + for (list = sess_list; list; list = list->next) + { + /* am I the right server and not a dialog box */ + if (((struct session *) list->data)->server == sess->server + && ((struct session *) list->data)->type == SESS_CHANNEL + && ((struct session *) list->data)->channel[0]) + { + handle_command ((session *) list->data, tbuf, TRUE); + } + } + } + + if (sess->server->last_away_reason != reason) + { + if (sess->server->last_away_reason) + free (sess->server->last_away_reason); + + if (reason == word_eol[2]) + sess->server->last_away_reason = strdup (reason); + else + sess->server->last_away_reason = reason; + } + + if (!sess->server->connected) + sess->server->reconnect_away = 1; + + return TRUE; +} + +static int +cmd_back (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + GSList *list; + unsigned int gone; + + if (sess->server->is_away) + { + sess->server->p_set_back (sess->server); + + if (prefs.show_away_message) + { + gone = time (NULL) - sess->server->away_time; + sprintf (tbuf, "me is back (gone %.2d:%.2d:%.2d)", gone / 3600, + (gone / 60) % 60, gone % 60); + for (list = sess_list; list; list = list->next) + { + /* am I the right server and not a dialog box */ + if (((struct session *) list->data)->server == sess->server + && ((struct session *) list->data)->type == SESS_CHANNEL + && ((struct session *) list->data)->channel[0]) + { + handle_command ((session *) list->data, tbuf, TRUE); + } + } + } + } + else + { + PrintText (sess, _("Already marked back.\n")); + } + + if (sess->server->last_away_reason) + free (sess->server->last_away_reason); + sess->server->last_away_reason = NULL; + + return TRUE; +} + +static void +ban (session * sess, char *tbuf, char *mask, char *bantypestr, int deop) +{ + int bantype; + struct User *user; + char *at, *dot, *lastdot; + char username[64], fullhost[128], domain[128], *mode, *p2; + server *serv = sess->server; + + user = userlist_find (sess, mask); + if (user && user->hostname) /* it's a nickname, let's find a proper ban mask */ + { + if (deop) + { + mode = "-o+b "; + p2 = user->nick; + } else + { + mode = "+b"; + p2 = ""; + } + + mask = user->hostname; + + at = strchr (mask, '@'); /* FIXME: utf8 */ + if (!at) + return; /* can't happen? */ + *at = 0; + + if (mask[0] == '~' || mask[0] == '+' || + mask[0] == '=' || mask[0] == '^' || mask[0] == '-') + { + /* the ident is prefixed with something, we replace that sign with an * */ + safe_strcpy (username+1, mask+1, sizeof (username)-1); + username[0] = '*'; + } else if (at - mask < USERNAMELEN) + { + /* we just add an * in the begining of the ident */ + safe_strcpy (username+1, mask, sizeof (username)-1); + username[0] = '*'; + } else + { + /* ident might be too long, we just ban what it gives and add an * in the end */ + safe_strcpy (username, mask, sizeof (username)); + } + *at = '@'; + safe_strcpy (fullhost, at + 1, sizeof (fullhost)); + + dot = strchr (fullhost, '.'); + if (dot) + { + safe_strcpy (domain, dot, sizeof (domain)); + } else + { + safe_strcpy (domain, fullhost, sizeof (domain)); + } + + if (*bantypestr) + bantype = atoi (bantypestr); + else + bantype = prefs.bantype; + + tbuf[0] = 0; + if (inet_addr (fullhost) != -1) /* "fullhost" is really a IP number */ + { + lastdot = strrchr (fullhost, '.'); + if (!lastdot) + return; /* can't happen? */ + + *lastdot = 0; + strcpy (domain, fullhost); + *lastdot = '.'; + + switch (bantype) + { + case 0: + snprintf (tbuf, TBUFSIZE, "%s%s *!*@%s.*", mode, p2, domain); + break; + + case 1: + snprintf (tbuf, TBUFSIZE, "%s%s *!*@%s", mode, p2, fullhost); + break; + + case 2: + snprintf (tbuf, TBUFSIZE, "%s%s *!%s@%s.*", mode, p2, username, domain); + break; + + case 3: + snprintf (tbuf, TBUFSIZE, "%s%s *!%s@%s", mode, p2, username, fullhost); + break; + } + } else + { + switch (bantype) + { + case 0: + snprintf (tbuf, TBUFSIZE, "%s%s *!*@*%s", mode, p2, domain); + break; + + case 1: + snprintf (tbuf, TBUFSIZE, "%s%s *!*@%s", mode, p2, fullhost); + break; + + case 2: + snprintf (tbuf, TBUFSIZE, "%s%s *!%s@*%s", mode, p2, username, domain); + break; + + case 3: + snprintf (tbuf, TBUFSIZE, "%s%s *!%s@%s", mode, p2, username, fullhost); + break; + } + } + + } else + { + snprintf (tbuf, TBUFSIZE, "+b %s", mask); + } + serv->p_mode (serv, sess->channel, tbuf); +} + +static int +cmd_ban (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *mask = word[2]; + + if (*mask) + { + ban (sess, tbuf, mask, word[3], 0); + } else + { + sess->server->p_mode (sess->server, sess->channel, "+b"); /* banlist */ + } + + return TRUE; +} + +static int +cmd_unban (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + /* Allow more than one mask in /unban -- tvk */ + int i = 2; + + while (1) + { + if (!*word[i]) + { + if (i == 2) + return FALSE; + send_channel_modes (sess, tbuf, word, 2, i, '-', 'b', 0); + return TRUE; + } + i++; + } +} + +static int +cmd_chanopt (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + /* chanopt.c */ + return chanopt_command (sess, tbuf, word, word_eol); +} + +static int +cmd_charset (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + server *serv = sess->server; + const char *locale = NULL; + int offset = 0; + + if (strcmp (word[2], "-quiet") == 0) + offset++; + + if (!word[2 + offset][0]) + { + g_get_charset (&locale); + PrintTextf (sess, "Current charset: %s\n", + serv->encoding ? serv->encoding : locale); + return TRUE; + } + + if (servlist_check_encoding (word[2 + offset])) + { + server_set_encoding (serv, word[2 + offset]); + if (offset < 1) + PrintTextf (sess, "Charset changed to: %s\n", word[2 + offset]); + } else + { + PrintTextf (sess, "\0034Unknown charset:\017 %s\n", word[2 + offset]); + } + + return TRUE; +} + +static int +cmd_clear (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + GSList *list = sess_list; + char *reason = word_eol[2]; + + if (strcasecmp (reason, "HISTORY") == 0) + { + history_free (&sess->history); + return TRUE; + } + + if (strncasecmp (reason, "all", 3) == 0) + { + while (list) + { + sess = list->data; + if (!sess->nick_said) + fe_text_clear (list->data, 0); + list = list->next; + } + return TRUE; + } + + if (reason[0] != '-' && !isdigit (reason[0]) && reason[0] != 0) + return FALSE; + + fe_text_clear (sess, atoi (reason)); + return TRUE; +} + +static int +cmd_close (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + GSList *list; + + if (strcmp (word[2], "-m") == 0) + { + list = sess_list; + while (list) + { + sess = list->data; + list = list->next; + if (sess->type == SESS_DIALOG) + fe_close_window (sess); + } + } else + { + if (*word_eol[2]) + sess->quitreason = word_eol[2]; + fe_close_window (sess); + } + + return TRUE; +} + +static int +cmd_ctcp (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int mbl; + char *to = word[2]; + if (*to) + { + char *msg = word_eol[3]; + if (*msg) + { + unsigned char *cmd = (unsigned char *)msg; + + /* make the first word upper case (as per RFC) */ + while (1) + { + if (*cmd == ' ' || *cmd == 0) + break; + mbl = g_utf8_skip[*cmd]; + if (mbl == 1) + *cmd = toupper (*cmd); + cmd += mbl; + } + + sess->server->p_ctcp (sess->server, to, msg); + + EMIT_SIGNAL (XP_TE_CTCPSEND, sess, to, msg, NULL, NULL, 0); + + return TRUE; + } + } + return FALSE; +} + +static int +cmd_country (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *code = word[2]; + if (*code) + { + /* search? */ + if (strcmp (code, "-s") == 0) + { + country_search (word[3], sess, (void *)PrintTextf); + return TRUE; + } + + /* search, but forgot the -s */ + if (strchr (code, '*')) + { + country_search (code, sess, (void *)PrintTextf); + return TRUE; + } + + sprintf (tbuf, "%s = %s\n", code, country (code)); + PrintText (sess, tbuf); + return TRUE; + } + return FALSE; +} + +static int +cmd_cycle (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *key = sess->channelkey; + char *chan = word[2]; + if (!*chan) + chan = sess->channel; + if (*chan && sess->type == SESS_CHANNEL) + { + sess->server->p_cycle (sess->server, chan, key); + return TRUE; + } + return FALSE; +} + +static int +cmd_dcc (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int goodtype; + struct DCC *dcc = 0; + char *type = word[2]; + if (*type) + { + if (!strcasecmp (type, "HELP")) + return FALSE; + if (!strcasecmp (type, "CLOSE")) + { + if (*word[3] && *word[4]) + { + goodtype = 0; + if (!strcasecmp (word[3], "SEND")) + { + dcc = find_dcc (word[4], word[5], TYPE_SEND); + dcc_abort (sess, dcc); + goodtype = TRUE; + } + if (!strcasecmp (word[3], "GET")) + { + dcc = find_dcc (word[4], word[5], TYPE_RECV); + dcc_abort (sess, dcc); + goodtype = TRUE; + } + if (!strcasecmp (word[3], "CHAT")) + { + dcc = find_dcc (word[4], "", TYPE_CHATRECV); + if (!dcc) + dcc = find_dcc (word[4], "", TYPE_CHATSEND); + dcc_abort (sess, dcc); + goodtype = TRUE; + } + + if (!goodtype) + return FALSE; + + if (!dcc) + EMIT_SIGNAL (XP_TE_NODCC, sess, NULL, NULL, NULL, NULL, 0); + + return TRUE; + + } + return FALSE; + } + if ((!strcasecmp (type, "CHAT")) || (!strcasecmp (type, "PCHAT"))) + { + char *nick = word[3]; + int passive = (!strcasecmp(type, "PCHAT")) ? 1 : 0; + if (*nick) + dcc_chat (sess, nick, passive); + return TRUE; + } + if (!strcasecmp (type, "LIST")) + { + dcc_show_list (sess); + return TRUE; + } + if (!strcasecmp (type, "GET")) + { + char *nick = word[3]; + char *file = word[4]; + if (!*file) + { + if (*nick) + dcc_get_nick (sess, nick); + } else + { + dcc = find_dcc (nick, file, TYPE_RECV); + if (dcc) + dcc_get (dcc); + else + EMIT_SIGNAL (XP_TE_NODCC, sess, NULL, NULL, NULL, NULL, 0); + } + return TRUE; + } + if ((!strcasecmp (type, "SEND")) || (!strcasecmp (type, "PSEND"))) + { + int i = 3, maxcps; + char *nick, *file; + int passive = (!strcasecmp(type, "PSEND")) ? 1 : 0; + + nick = word[i]; + if (!*nick) + return FALSE; + + maxcps = prefs.dcc_max_send_cps; + if (!strncasecmp(nick, "-maxcps=", 8)) + { + maxcps = atoi(nick + 8); + i++; + nick = word[i]; + if (!*nick) + return FALSE; + } + + i++; + + file = word[i]; + if (!*file) + { + fe_dcc_send_filereq (sess, nick, maxcps, passive); + return TRUE; + } + + do + { + dcc_send (sess, nick, file, maxcps, passive); + i++; + file = word[i]; + } + while (*file); + + return TRUE; + } + + return FALSE; + } + + dcc_show_list (sess); + return TRUE; +} + +static int +cmd_debug (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + struct session *s; + struct server *v; + GSList *list = sess_list; + + PrintText (sess, "Session T Channel WaitChan WillChan Server\n"); + while (list) + { + s = (struct session *) list->data; + sprintf (tbuf, "%p %1x %-10.10s %-10.10s %-10.10s %p\n", + s, s->type, s->channel, s->waitchannel, + s->willjoinchannel, s->server); + PrintText (sess, tbuf); + list = list->next; + } + + list = serv_list; + PrintText (sess, "Server Sock Name\n"); + while (list) + { + v = (struct server *) list->data; + sprintf (tbuf, "%p %-5d %s\n", + v, v->sok, v->servername); + PrintText (sess, tbuf); + list = list->next; + } + + sprintf (tbuf, + "\nfront_session: %p\n" + "current_tab: %p\n\n", + sess->server->front_session, current_tab); + PrintText (sess, tbuf); +#ifdef USE_DEBUG + sprintf (tbuf, "current mem: %d\n\n", current_mem_usage); + PrintText (sess, tbuf); +#endif /* !MEMORY_DEBUG */ + + return TRUE; +} + +static int +cmd_delbutton (struct session *sess, char *tbuf, char *word[], + char *word_eol[]) +{ + if (*word[2]) + { + if (sess->type == SESS_DIALOG) + { + if (list_delentry (&dlgbutton_list, word[2])) + fe_dlgbuttons_update (sess); + } else + { + if (list_delentry (&button_list, word[2])) + fe_buttons_update (sess); + } + return TRUE; + } + return FALSE; +} + +static int +cmd_dehop (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int i = 2; + + while (1) + { + if (!*word[i]) + { + if (i == 2) + return FALSE; + send_channel_modes (sess, tbuf, word, 2, i, '-', 'h', 0); + return TRUE; + } + i++; + } +} + +static int +cmd_deop (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int i = 2; + + while (1) + { + if (!*word[i]) + { + if (i == 2) + return FALSE; + send_channel_modes (sess, tbuf, word, 2, i, '-', 'o', 0); + return TRUE; + } + i++; + } +} + +typedef struct +{ + char **nicks; + int i; + session *sess; + char *reason; + char *tbuf; +} multidata; + +static int +mdehop_cb (struct User *user, multidata *data) +{ + if (user->hop && !user->me) + { + data->nicks[data->i] = user->nick; + data->i++; + } + return TRUE; +} + +static int +cmd_mdehop (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char **nicks = malloc (sizeof (char *) * sess->hops); + multidata data; + + data.nicks = nicks; + data.i = 0; + tree_foreach (sess->usertree, (tree_traverse_func *)mdehop_cb, &data); + send_channel_modes (sess, tbuf, nicks, 0, data.i, '-', 'h', 0); + free (nicks); + + return TRUE; +} + +static int +mdeop_cb (struct User *user, multidata *data) +{ + if (user->op && !user->me) + { + data->nicks[data->i] = user->nick; + data->i++; + } + return TRUE; +} + +static int +cmd_mdeop (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char **nicks = malloc (sizeof (char *) * sess->ops); + multidata data; + + data.nicks = nicks; + data.i = 0; + tree_foreach (sess->usertree, (tree_traverse_func *)mdeop_cb, &data); + send_channel_modes (sess, tbuf, nicks, 0, data.i, '-', 'o', 0); + free (nicks); + + return TRUE; +} + +GSList *menu_list = NULL; + +static void +menu_free (menu_entry *me) +{ + free (me->path); + if (me->label) + free (me->label); + if (me->cmd) + free (me->cmd); + if (me->ucmd) + free (me->ucmd); + if (me->group) + free (me->group); + if (me->icon) + free (me->icon); + free (me); +} + +/* strings equal? but ignore underscores */ + +int +menu_streq (const char *s1, const char *s2, int def) +{ + /* for separators */ + if (s1 == NULL && s2 == NULL) + return 0; + if (s1 == NULL || s2 == NULL) + return 1; + while (*s1) + { + if (*s1 == '_') + s1++; + if (*s2 == '_') + s2++; + if (*s1 != *s2) + return 1; + s1++; + s2++; + } + if (!*s2) + return 0; + return def; +} + +static menu_entry * +menu_entry_find (char *path, char *label) +{ + GSList *list; + menu_entry *me; + + list = menu_list; + while (list) + { + me = list->data; + if (!strcmp (path, me->path)) + { + if (me->label && label && !strcmp (label, me->label)) + return me; + } + list = list->next; + } + return NULL; +} + +static void +menu_del_children (char *path, char *label) +{ + GSList *list, *next; + menu_entry *me; + char buf[512]; + + if (!label) + label = ""; + if (path[0]) + snprintf (buf, sizeof (buf), "%s/%s", path, label); + else + snprintf (buf, sizeof (buf), "%s", label); + + list = menu_list; + while (list) + { + me = list->data; + next = list->next; + if (!menu_streq (buf, me->path, 0)) + { + menu_list = g_slist_remove (menu_list, me); + menu_free (me); + } + list = next; + } +} + +static int +menu_del (char *path, char *label) +{ + GSList *list; + menu_entry *me; + + list = menu_list; + while (list) + { + me = list->data; + if (!menu_streq (me->label, label, 1) && !menu_streq (me->path, path, 1)) + { + menu_list = g_slist_remove (menu_list, me); + fe_menu_del (me); + menu_free (me); + /* delete this item's children, if any */ + menu_del_children (path, label); + return 1; + } + list = list->next; + } + + return 0; +} + +static char +menu_is_mainmenu_root (char *path, gint16 *offset) +{ + static const char *menus[] = {"\x4$TAB","\x5$TRAY","\x4$URL","\x5$NICK","\x5$CHAN"}; + int i; + + for (i = 0; i < 5; i++) + { + if (!strncmp (path, menus[i] + 1, menus[i][0])) + { + *offset = menus[i][0] + 1; /* number of bytes to offset the root */ + return 0; /* is not main menu */ + } + } + + *offset = 0; + return 1; /* is main menu */ +} + +static void +menu_add (char *path, char *label, char *cmd, char *ucmd, int pos, int state, int markup, int enable, int mod, int key, char *group, char *icon) +{ + menu_entry *me; + + /* already exists? */ + me = menu_entry_find (path, label); + if (me) + { + /* update only */ + me->state = state; + me->enable = enable; + fe_menu_update (me); + return; + } + + me = malloc (sizeof (menu_entry)); + me->pos = pos; + me->modifier = mod; + me->is_main = menu_is_mainmenu_root (path, &me->root_offset); + me->state = state; + me->markup = markup; + me->enable = enable; + me->key = key; + me->path = strdup (path); + me->label = NULL; + me->cmd = NULL; + me->ucmd = NULL; + me->group = NULL; + me->icon = NULL; + + if (label) + me->label = strdup (label); + if (cmd) + me->cmd = strdup (cmd); + if (ucmd) + me->ucmd = strdup (ucmd); + if (group) + me->group = strdup (group); + if (icon) + me->icon = strdup (icon); + + menu_list = g_slist_append (menu_list, me); + label = fe_menu_add (me); + if (label) + { + /* FE has given us a stripped label */ + free (me->label); + me->label = strdup (label); + g_free (label); /* this is from pango */ + } +} + +static int +cmd_menu (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int idx = 2; + int len; + int pos = 0xffff; + int state; + int toggle = FALSE; + int enable = TRUE; + int markup = FALSE; + int key = 0; + int mod = 0; + char *label; + char *group = NULL; + char *icon = NULL; + + if (!word[2][0] || !word[3][0]) + return FALSE; + + /* -eX enabled or not? */ + if (word[idx][0] == '-' && word[idx][1] == 'e') + { + enable = atoi (word[idx] + 2); + idx++; + } + + /* -i<ICONFILE> */ + if (word[idx][0] == '-' && word[idx][1] == 'i') + { + icon = word[idx] + 2; + idx++; + } + + /* -k<mod>,<key> key binding */ + if (word[idx][0] == '-' && word[idx][1] == 'k') + { + char *comma = strchr (word[idx], ','); + if (!comma) + return FALSE; + mod = atoi (word[idx] + 2); + key = atoi (comma + 1); + idx++; + } + + /* -m to specify PangoMarkup language */ + if (word[idx][0] == '-' && word[idx][1] == 'm') + { + markup = TRUE; + idx++; + } + + /* -pX to specify menu position */ + if (word[idx][0] == '-' && word[idx][1] == 'p') + { + pos = atoi (word[idx] + 2); + idx++; + } + + /* -rSTATE,GROUP to specify a radio item */ + if (word[idx][0] == '-' && word[idx][1] == 'r') + { + state = atoi (word[idx] + 2); + group = word[idx] + 4; + idx++; + } + + /* -tX to specify toggle item with default state */ + if (word[idx][0] == '-' && word[idx][1] == 't') + { + state = atoi (word[idx] + 2); + idx++; + toggle = TRUE; + } + + if (word[idx+1][0] == 0) + return FALSE; + + /* the path */ + path_part (word[idx+1], tbuf, 512); + len = strlen (tbuf); + if (len) + tbuf[len - 1] = 0; + + /* the name of the item */ + label = file_part (word[idx + 1]); + if (label[0] == '-' && label[1] == 0) + label = NULL; /* separator */ + + if (markup) + { + char *p; /* to force pango closing tags through */ + for (p = label; *p; p++) + if (*p == 3) + *p = '/'; + } + + if (!strcasecmp (word[idx], "ADD")) + { + if (toggle) + { + menu_add (tbuf, label, word[idx + 2], word[idx + 3], pos, state, markup, enable, mod, key, NULL, NULL); + } else + { + if (word[idx + 2][0]) + menu_add (tbuf, label, word[idx + 2], NULL, pos, state, markup, enable, mod, key, group, icon); + else + menu_add (tbuf, label, NULL, NULL, pos, state, markup, enable, mod, key, group, icon); + } + return TRUE; + } + + if (!strcasecmp (word[idx], "DEL")) + { + menu_del (tbuf, label); + return TRUE; + } + + return FALSE; +} + +static int +mkick_cb (struct User *user, multidata *data) +{ + if (!user->op && !user->me) + data->sess->server->p_kick (data->sess->server, data->sess->channel, user->nick, data->reason); + return TRUE; +} + +static int +mkickops_cb (struct User *user, multidata *data) +{ + if (user->op && !user->me) + data->sess->server->p_kick (data->sess->server, data->sess->channel, user->nick, data->reason); + return TRUE; +} + +static int +cmd_mkick (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + multidata data; + + data.sess = sess; + data.reason = word_eol[2]; + tree_foreach (sess->usertree, (tree_traverse_func *)mkickops_cb, &data); + tree_foreach (sess->usertree, (tree_traverse_func *)mkick_cb, &data); + + return TRUE; +} + +static int +cmd_devoice (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int i = 2; + + while (1) + { + if (!*word[i]) + { + if (i == 2) + return FALSE; + send_channel_modes (sess, tbuf, word, 2, i, '-', 'v', 0); + return TRUE; + } + i++; + } +} + +static int +cmd_discon (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + sess->server->disconnect (sess, TRUE, -1); + return TRUE; +} + +static int +cmd_dns (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ +#ifdef WIN32 + PrintText (sess, "DNS is not implemented in Windows.\n"); + return TRUE; +#else + char *nick = word[2]; + struct User *user; + + if (*nick) + { + if (strchr (nick, '.') == NULL) + { + user = userlist_find (sess, nick); + if (user && user->hostname) + { + do_dns (sess, user->nick, user->hostname); + } else + { + sess->server->p_get_ip (sess->server, nick); + sess->server->doing_dns = TRUE; + } + } else + { + snprintf (tbuf, TBUFSIZE, "exec -d %s %s", prefs.dnsprogram, nick); + handle_command (sess, tbuf, FALSE); + } + return TRUE; + } + return FALSE; +#endif +} + +static int +cmd_echo (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + PrintText (sess, word_eol[2]); + return TRUE; +} + +#ifndef WIN32 + +static void +exec_check_process (struct session *sess) +{ + int val; + + if (sess->running_exec == NULL) + return; + val = waitpid (sess->running_exec->childpid, NULL, WNOHANG); + if (val == -1 || val > 0) + { + close (sess->running_exec->myfd); + fe_input_remove (sess->running_exec->iotag); + free (sess->running_exec); + sess->running_exec = NULL; + } +} + +#ifndef __EMX__ +static int +cmd_execs (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int r; + + exec_check_process (sess); + if (sess->running_exec == NULL) + { + EMIT_SIGNAL (XP_TE_NOCHILD, sess, NULL, NULL, NULL, NULL, 0); + return FALSE; + } + r = kill (sess->running_exec->childpid, SIGSTOP); + if (r == -1) + PrintText (sess, "Error in kill(2)\n"); + + return TRUE; +} + +static int +cmd_execc (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int r; + + exec_check_process (sess); + if (sess->running_exec == NULL) + { + EMIT_SIGNAL (XP_TE_NOCHILD, sess, NULL, NULL, NULL, NULL, 0); + return FALSE; + } + r = kill (sess->running_exec->childpid, SIGCONT); + if (r == -1) + PrintText (sess, "Error in kill(2)\n"); + + return TRUE; +} + +static int +cmd_execk (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int r; + + exec_check_process (sess); + if (sess->running_exec == NULL) + { + EMIT_SIGNAL (XP_TE_NOCHILD, sess, NULL, NULL, NULL, NULL, 0); + return FALSE; + } + if (strcmp (word[2], "-9") == 0) + r = kill (sess->running_exec->childpid, SIGKILL); + else + r = kill (sess->running_exec->childpid, SIGTERM); + if (r == -1) + PrintText (sess, "Error in kill(2)\n"); + + return TRUE; +} + +/* OS/2 Can't have the /EXECW command because it uses pipe(2) not socketpair + and thus it is simplex --AGL */ +static int +cmd_execw (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int len; + char *temp; + exec_check_process (sess); + if (sess->running_exec == NULL) + { + EMIT_SIGNAL (XP_TE_NOCHILD, sess, NULL, NULL, NULL, NULL, 0); + return FALSE; + } + len = strlen(word_eol[2]); + temp = malloc(len + 2); + sprintf(temp, "%s\n", word_eol[2]); + PrintText(sess, temp); + write(sess->running_exec->myfd, temp, len + 1); + free(temp); + + return TRUE; +} +#endif /* !__EMX__ */ + +/* convert ANSI escape color codes to mIRC codes */ + +static short escconv[] = +/* 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 */ +{ 1,4,3,5,2,10,6,1, 1,7,9,8,12,11,13,1 }; + +static void +exec_handle_colors (char *buf, int len) +{ + char numb[16]; + char *nbuf; + int i = 0, j = 0, k = 0, firstn = 0, col, colf = 0, colb = 0; + int esc = FALSE, backc = FALSE, bold = FALSE; + + /* any escape codes in this text? */ + if (strchr (buf, 27) == 0) + return; + + nbuf = malloc (len + 1); + + while (i < len) + { + switch (buf[i]) + { + case '\r': + break; + case 27: + esc = TRUE; + break; + case ';': + if (!esc) + goto norm; + backc = TRUE; + numb[k] = 0; + firstn = atoi (numb); + k = 0; + break; + case '[': + if (!esc) + goto norm; + break; + default: + if (esc) + { + if (buf[i] >= 'A' && buf[i] <= 'z') + { + if (buf[i] == 'm') + { + /* ^[[0m */ + if (k == 0 || (numb[0] == '0' && k == 1)) + { + nbuf[j] = '\017'; + j++; + bold = FALSE; + goto cont; + } + + numb[k] = 0; + col = atoi (numb); + backc = FALSE; + + if (firstn == 1) + bold = TRUE; + + if (firstn >= 30 && firstn <= 37) + colf = firstn - 30; + + if (col >= 40) + { + colb = col - 40; + backc = TRUE; + } + + if (col >= 30 && col <= 37) + colf = col - 30; + + if (bold) + colf += 8; + + if (backc) + { + colb = escconv[colb % 14]; + colf = escconv[colf % 14]; + j += sprintf (&nbuf[j], "\003%d,%02d", colf, colb); + } else + { + colf = escconv[colf % 14]; + j += sprintf (&nbuf[j], "\003%02d", colf); + } + } +cont: esc = FALSE; + backc = FALSE; + k = 0; + } else + { + if (isdigit ((unsigned char) buf[i]) && k < (sizeof (numb) - 1)) + { + numb[k] = buf[i]; + k++; + } + } + } else + { +norm: nbuf[j] = buf[i]; + j++; + } + } + i++; + } + + nbuf[j] = 0; + memcpy (buf, nbuf, j + 1); + free (nbuf); +} + +#ifndef HAVE_MEMRCHR +static void * +memrchr (const void *block, int c, size_t size) +{ + unsigned char *p; + + for (p = (unsigned char *)block + size; p != block; p--) + if (*p == c) + return p; + return 0; +} +#endif + +static gboolean +exec_data (GIOChannel *source, GIOCondition condition, struct nbexec *s) +{ + char *buf, *readpos, *rest; + int rd, len; + int sok = s->myfd; + + len = s->buffill; + if (len) { + /* append new data to buffered incomplete line */ + buf = malloc(len + 2050); + memcpy(buf, s->linebuf, len); + readpos = buf + len; + free(s->linebuf); + s->linebuf = NULL; + } + else + readpos = buf = malloc(2050); + + rd = read (sok, readpos, 2048); + if (rd < 1) + { + /* The process has died */ + kill(s->childpid, SIGKILL); + if (len) { + buf[len] = '\0'; + exec_handle_colors(buf, len); + if (s->tochannel) + { + /* must turn off auto-completion temporarily */ + unsigned int old = prefs.nickcompletion; + prefs.nickcompletion = 0; + handle_multiline (s->sess, buf, FALSE, TRUE); + prefs.nickcompletion = old; + } + else + PrintText (s->sess, buf); + } + free(buf); + waitpid (s->childpid, NULL, 0); + s->sess->running_exec = NULL; + fe_input_remove (s->iotag); + close (sok); + free (s); + return TRUE; + } + len += rd; + buf[len] = '\0'; + + rest = memrchr(buf, '\n', len); + if (rest) + rest++; + else + rest = buf; + if (*rest) { + s->buffill = len - (rest - buf); /* = strlen(rest) */ + s->linebuf = malloc(s->buffill); + memcpy(s->linebuf, rest, s->buffill); + *rest = '\0'; + len -= s->buffill; /* possibly 0 */ + } + else + s->buffill = 0; + + if (len) { + exec_handle_colors (buf, len); + if (s->tochannel) + handle_multiline (s->sess, buf, FALSE, TRUE); + else + PrintText (s->sess, buf); + } + + free(buf); + return TRUE; +} + +static int +cmd_exec (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int tochannel = FALSE; + char *cmd = word_eol[2]; + int fds[2], pid = 0; + struct nbexec *s; + int shell = TRUE; + int fd; + + if (*cmd) + { + exec_check_process (sess); + if (sess->running_exec != NULL) + { + EMIT_SIGNAL (XP_TE_ALREADYPROCESS, sess, NULL, NULL, NULL, NULL, 0); + return TRUE; + } + + if (!strcmp (word[2], "-d")) + { + if (!*word[3]) + return FALSE; + cmd = word_eol[3]; + shell = FALSE; + } + else if (!strcmp (word[2], "-o")) + { + if (!*word[3]) + return FALSE; + cmd = word_eol[3]; + tochannel = TRUE; + } + + if (shell) + { + if (access ("/bin/sh", X_OK) != 0) + { + fe_message (_("I need /bin/sh to run!\n"), FE_MSG_ERROR); + return TRUE; + } + } + +#ifdef __EMX__ /* if os/2 */ + if (pipe (fds) < 0) + { + PrintText (sess, "Pipe create error\n"); + return FALSE; + } + setmode (fds[0], O_BINARY); + setmode (fds[1], O_BINARY); +#else + if (socketpair (PF_UNIX, SOCK_STREAM, 0, fds) == -1) + { + PrintText (sess, "socketpair(2) failed\n"); + return FALSE; + } +#endif + s = (struct nbexec *) malloc (sizeof (struct nbexec)); + memset(s, 0, sizeof(*s)); + s->myfd = fds[0]; + s->tochannel = tochannel; + s->sess = sess; + + pid = fork (); + if (pid == 0) + { + /* This is the child's context */ + close (0); + close (1); + close (2); + /* Close parent's end of pipe */ + close(s->myfd); + /* Copy the child end of the pipe to stdout and stderr */ + dup2 (fds[1], 1); + dup2 (fds[1], 2); + /* Also copy it to stdin so we can write to it */ + dup2 (fds[1], 0); + /* Now close all open file descriptors except stdin, stdout and stderr */ + for (fd = 3; fd < 1024; fd++) close(fd); + /* Now we call /bin/sh to run our cmd ; made it more friendly -DC1 */ + if (shell) + { + execl ("/bin/sh", "sh", "-c", cmd, NULL); + } else + { + char **argv; + int argc; + + my_poptParseArgvString (cmd, &argc, &argv); + execvp (argv[0], argv); + } + /* not reached unless error */ + /*printf("exec error\n");*/ + fflush (stdout); + fflush (stdin); + _exit (0); + } + if (pid == -1) + { + /* Parent context, fork() failed */ + + PrintText (sess, "Error in fork(2)\n"); + close(fds[0]); + close(fds[1]); + } else + { + /* Parent path */ + close(fds[1]); + s->childpid = pid; + s->iotag = fe_input_add (s->myfd, FIA_READ|FIA_EX, exec_data, s); + sess->running_exec = s; + return TRUE; + } + } + return FALSE; +} + +#endif + +static int +cmd_flushq (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + sprintf (tbuf, "Flushing server send queue, %d bytes.\n", sess->server->sendq_len); + PrintText (sess, tbuf); + sess->server->flush_queue (sess->server); + return TRUE; +} + +static int +cmd_quit (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (*word_eol[2]) + sess->quitreason = word_eol[2]; + sess->server->disconnect (sess, TRUE, -1); + sess->quitreason = NULL; + return 2; +} + +static int +cmd_gate (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *server_name = word[2]; + server *serv = sess->server; + if (*server_name) + { + char *port = word[3]; +#ifdef USE_OPENSSL + serv->use_ssl = FALSE; +#endif + server_fill_her_up (serv); + if (*port) + serv->connect (serv, server_name, atoi (port), TRUE); + else + serv->connect (serv, server_name, 23, TRUE); + return TRUE; + } + return FALSE; +} + +typedef struct +{ + char *cmd; + session *sess; +} getvalinfo; + +static void +get_int_cb (int cancel, int val, getvalinfo *info) +{ + char buf[512]; + + if (!cancel) + { + snprintf (buf, sizeof (buf), "%s %d", info->cmd, val); + if (is_session (info->sess)) + handle_command (info->sess, buf, FALSE); + } + + free (info->cmd); + free (info); +} + +static int +cmd_getint (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + getvalinfo *info; + + if (!word[4][0]) + return FALSE; + + info = malloc (sizeof (*info)); + info->cmd = strdup (word[3]); + info->sess = sess; + + fe_get_int (word[4], atoi (word[2]), get_int_cb, info); + + return TRUE; +} + +static void +get_file_cb (char *cmd, char *file) +{ + char buf[1024 + 128]; + + /* execute the command once per file, then once more with + no args */ + if (file) + { + snprintf (buf, sizeof (buf), "%s %s", cmd, file); + handle_command (current_sess, buf, FALSE); + } + else + { + handle_command (current_sess, cmd, FALSE); + free (cmd); + } +} + +static int +cmd_getfile (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int idx = 2; + int flags = 0; + + if (!word[3][0]) + return FALSE; + + if (!strcmp (word[2], "-folder")) + { + flags |= FRF_CHOOSEFOLDER; + idx++; + } + + if (!strcmp (word[idx], "-multi")) + { + flags |= FRF_MULTIPLE; + idx++; + } + + if (!strcmp (word[idx], "-save")) + { + flags |= FRF_WRITE; + idx++; + } + + fe_get_file (word[idx+1], word[idx+2], (void *)get_file_cb, strdup (word[idx]), flags); + + return TRUE; +} + +static void +get_str_cb (int cancel, char *val, getvalinfo *info) +{ + char buf[512]; + + if (!cancel) + { + snprintf (buf, sizeof (buf), "%s %s", info->cmd, val); + if (is_session (info->sess)) + handle_command (info->sess, buf, FALSE); + } + + free (info->cmd); + free (info); +} + +static int +cmd_getstr (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + getvalinfo *info; + + if (!word[4][0]) + return FALSE; + + info = malloc (sizeof (*info)); + info->cmd = strdup (word[3]); + info->sess = sess; + + fe_get_str (word[4], word[2], get_str_cb, info); + + return TRUE; +} + +static int +cmd_ghost (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (!word[2][0]) + return FALSE; + + sess->server->p_ns_ghost (sess->server, word[2], word[3]); + return TRUE; +} + +static int +cmd_gui (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + switch (str_ihash (word[2])) + { + case 0x058b836e: fe_ctrl_gui (sess, 8, 0); break; /* APPLY */ + case 0xac1eee45: fe_ctrl_gui (sess, 7, 2); break; /* ATTACH */ + case 0x05a72f63: fe_ctrl_gui (sess, 4, atoi (word[3])); break; /* COLOR */ + case 0xb06a1793: fe_ctrl_gui (sess, 7, 1); break; /* DETACH */ + case 0x05cfeff0: fe_ctrl_gui (sess, 3, 0); break; /* FLASH */ + case 0x05d154d8: fe_ctrl_gui (sess, 2, 0); break; /* FOCUS */ + case 0x0030dd42: fe_ctrl_gui (sess, 0, 0); break; /* HIDE */ + case 0x61addbe3: fe_ctrl_gui (sess, 5, 0); break; /* ICONIFY */ + case 0xc0851aaa: fe_message (word[3], FE_MSG_INFO|FE_MSG_MARKUP); break; /* MSGBOX */ + case 0x0035dafd: fe_ctrl_gui (sess, 1, 0); break; /* SHOW */ + case 0x0033155f: /* MENU */ + if (!strcasecmp (word[3], "TOGGLE")) + fe_ctrl_gui (sess, 6, 0); + else + return FALSE; + break; + default: + return FALSE; + } + + return TRUE; +} + +typedef struct +{ + int longfmt; + int i, t; + char *buf; +} help_list; + +static void +show_help_line (session *sess, help_list *hl, char *name, char *usage) +{ + int j, len, max; + char *p; + + if (name[0] == '.') /* hidden command? */ + return; + + if (hl->longfmt) /* long format for /HELP -l */ + { + if (!usage || usage[0] == 0) + PrintTextf (sess, " \0034%s\003 :\n", name); + else + PrintTextf (sess, " \0034%s\003 : %s\n", name, _(usage)); + return; + } + + /* append the name into buffer, but convert to uppercase */ + len = strlen (hl->buf); + p = name; + while (*p) + { + hl->buf[len] = toupper ((unsigned char) *p); + len++; + p++; + } + hl->buf[len] = 0; + + hl->t++; + if (hl->t == 5) + { + hl->t = 0; + strcat (hl->buf, "\n"); + PrintText (sess, hl->buf); + hl->buf[0] = ' '; + hl->buf[1] = ' '; + hl->buf[2] = 0; + } else + { + /* append some spaces after the command name */ + max = strlen (name); + if (max < 10) + { + max = 10 - max; + for (j = 0; j < max; j++) + { + hl->buf[len] = ' '; + len++; + hl->buf[len] = 0; + } + } + } +} + +static int +cmd_help (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int i = 0, longfmt = 0; + char *helpcmd = ""; + GSList *list; + + if (tbuf) + helpcmd = word[2]; + if (*helpcmd && strcmp (helpcmd, "-l") == 0) + longfmt = 1; + + if (*helpcmd && !longfmt) + { + help (sess, tbuf, helpcmd, FALSE); + } else + { + struct popup *pop; + char *buf = malloc (4096); + help_list hl; + + hl.longfmt = longfmt; + hl.buf = buf; + + PrintTextf (sess, "\n%s\n\n", _("Commands Available:")); + buf[0] = ' '; + buf[1] = ' '; + buf[2] = 0; + hl.t = 0; + hl.i = 0; + while (xc_cmds[i].name) + { + show_help_line (sess, &hl, xc_cmds[i].name, xc_cmds[i].help); + i++; + } + strcat (buf, "\n"); + PrintText (sess, buf); + + PrintTextf (sess, "\n%s\n\n", _("User defined commands:")); + buf[0] = ' '; + buf[1] = ' '; + buf[2] = 0; + hl.t = 0; + hl.i = 0; + list = command_list; + while (list) + { + pop = list->data; + show_help_line (sess, &hl, pop->name, pop->cmd); + list = list->next; + } + strcat (buf, "\n"); + PrintText (sess, buf); + + PrintTextf (sess, "\n%s\n\n", _("Plugin defined commands:")); + buf[0] = ' '; + buf[1] = ' '; + buf[2] = 0; + hl.t = 0; + hl.i = 0; + plugin_command_foreach (sess, &hl, (void *)show_help_line); + strcat (buf, "\n"); + PrintText (sess, buf); + free (buf); + + PrintTextf (sess, "\n%s\n\n", _("Type /HELP <command> for more information, or /HELP -l")); + } + return TRUE; +} + +static int +cmd_id (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (word[2][0]) + { + sess->server->p_ns_identify (sess->server, word[2]); + return TRUE; + } + + return FALSE; +} + +static int +cmd_ignore (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int i; + int type = 0; + int quiet = 0; + char *mask; + + if (!*word[2]) + { + ignore_showlist (sess); + return TRUE; + } + if (!*word[3]) + return FALSE; + + i = 3; + while (1) + { + if (!*word[i]) + { + if (type == 0) + return FALSE; + + mask = word[2]; + if (strchr (mask, '?') == NULL && + strchr (mask, '*') == NULL && + userlist_find (sess, mask)) + { + mask = tbuf; + snprintf (tbuf, TBUFSIZE, "%s!*@*", word[2]); + } + + i = ignore_add (mask, type); + if (quiet) + return TRUE; + switch (i) + { + case 1: + EMIT_SIGNAL (XP_TE_IGNOREADD, sess, mask, NULL, NULL, NULL, 0); + break; + case 2: /* old ignore changed */ + EMIT_SIGNAL (XP_TE_IGNORECHANGE, sess, mask, NULL, NULL, NULL, 0); + } + return TRUE; + } + if (!strcasecmp (word[i], "UNIGNORE")) + type |= IG_UNIG; + else if (!strcasecmp (word[i], "ALL")) + type |= IG_PRIV | IG_NOTI | IG_CHAN | IG_CTCP | IG_INVI | IG_DCC; + else if (!strcasecmp (word[i], "PRIV")) + type |= IG_PRIV; + else if (!strcasecmp (word[i], "NOTI")) + type |= IG_NOTI; + else if (!strcasecmp (word[i], "CHAN")) + type |= IG_CHAN; + else if (!strcasecmp (word[i], "CTCP")) + type |= IG_CTCP; + else if (!strcasecmp (word[i], "INVI")) + type |= IG_INVI; + else if (!strcasecmp (word[i], "QUIET")) + quiet = 1; + else if (!strcasecmp (word[i], "NOSAVE")) + type |= IG_NOSAVE; + else if (!strcasecmp (word[i], "DCC")) + type |= IG_DCC; + else + { + sprintf (tbuf, _("Unknown arg '%s' ignored."), word[i]); + PrintText (sess, tbuf); + } + i++; + } +} + +static int +cmd_invite (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (!*word[2]) + return FALSE; + if (*word[3]) + sess->server->p_invite (sess->server, word[3], word[2]); + else + sess->server->p_invite (sess->server, sess->channel, word[2]); + return TRUE; +} + +static int +cmd_join (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *chan = word[2]; + if (*chan) + { + char *po, *pass = word[3]; + sess->server->p_join (sess->server, chan, pass); + if (sess->channel[0] == 0 && sess->waitchannel[0]) + { + po = strchr (chan, ','); + if (po) + *po = 0; + safe_strcpy (sess->waitchannel, chan, CHANLEN); + } + return TRUE; + } + return FALSE; +} + +static int +cmd_kick (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *nick = word[2]; + char *reason = word_eol[3]; + if (*nick) + { + sess->server->p_kick (sess->server, sess->channel, nick, reason); + return TRUE; + } + return FALSE; +} + +static int +cmd_kickban (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *nick = word[2]; + char *reason = word_eol[3]; + struct User *user; + + if (*nick) + { + /* if the reason is a 1 digit number, treat it as a bantype */ + + user = userlist_find (sess, nick); + + if (isdigit ((unsigned char) reason[0]) && reason[1] == 0) + { + ban (sess, tbuf, nick, reason, (user && user->op)); + reason[0] = 0; + } else + ban (sess, tbuf, nick, "", (user && user->op)); + + sess->server->p_kick (sess->server, sess->channel, nick, reason); + + return TRUE; + } + return FALSE; +} + +static int +cmd_killall (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + xchat_exit(); + return 2; +} + +static int +cmd_lagcheck (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + lag_check (); + return TRUE; +} + +static void +lastlog (session *sess, char *search, gboolean regexp) +{ + session *lastlog_sess; + + if (!is_session (sess)) + return; + + lastlog_sess = find_dialog (sess->server, "(lastlog)"); + if (!lastlog_sess) + lastlog_sess = new_ircwindow (sess->server, "(lastlog)", SESS_DIALOG, 0); + + lastlog_sess->lastlog_sess = sess; + lastlog_sess->lastlog_regexp = regexp; /* remember the search type */ + + fe_text_clear (lastlog_sess, 0); + fe_lastlog (sess, lastlog_sess, search, regexp); +} + +static int +cmd_lastlog (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (*word_eol[2]) + { + if (!strcmp (word[2], "-r")) + lastlog (sess, word_eol[3], TRUE); + else + lastlog (sess, word_eol[2], FALSE); + return TRUE; + } + + return FALSE; +} + +static int +cmd_list (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + sess->server->p_list_channels (sess->server, word_eol[2], 1); + + return TRUE; +} + +gboolean +load_perform_file (session *sess, char *file) +{ + char tbuf[1024 + 4]; + char *nl; + FILE *fp; + + fp = xchat_fopen_file (file, "r", XOF_FULLPATH); + if (!fp) + return FALSE; + + tbuf[1024] = 0; + while (fgets (tbuf, 1024, fp)) + { + nl = strchr (tbuf, '\n'); + if (nl == tbuf) /* skip empty commands */ + continue; + if (nl) + *nl = 0; + if (tbuf[0] == prefs.cmdchar[0]) + handle_command (sess, tbuf + 1, TRUE); + else + handle_command (sess, tbuf, TRUE); + } + fclose (fp); + return TRUE; +} + +static int +cmd_load (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *error, *arg, *file; + int len; + + if (!word[2][0]) + return FALSE; + + if (strcmp (word[2], "-e") == 0) + { + file = expand_homedir (word[3]); + if (!load_perform_file (sess, file)) + { + PrintTextf (sess, _("Cannot access %s\n"), file); + PrintText (sess, errorstring (errno)); + } + free (file); + return TRUE; + } + +#ifdef USE_PLUGIN + len = strlen (word[2]); +#ifdef WIN32 + if (len > 4 && strcasecmp (".dll", word[2] + len - 4) == 0) +#else +#if defined(__hpux) + if (len > 3 && strcasecmp (".sl", word[2] + len - 3) == 0) +#else + if (len > 3 && strcasecmp (".so", word[2] + len - 3) == 0) +#endif +#endif + { + arg = NULL; + if (word_eol[3][0]) + arg = word_eol[3]; + + file = expand_homedir (word[2]); + error = plugin_load (sess, file, arg); + free (file); + + if (error) + PrintText (sess, error); + + return TRUE; + } +#endif + + sprintf (tbuf, "Unknown file type %s. Maybe you need to install the Perl or Python plugin?\n", word[2]); + PrintText (sess, tbuf); + + return FALSE; +} + +static int +cmd_me (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *act = word_eol[2]; + + if (!(*act)) + return FALSE; + + if (sess->type == SESS_SERVER) + { + notj_msg (sess); + return TRUE; + } + + snprintf (tbuf, TBUFSIZE, "\001ACTION %s\001\r", act); + /* first try through DCC CHAT */ + if (dcc_write_chat (sess->channel, tbuf)) + { + /* print it to screen */ + inbound_action (sess, sess->channel, sess->server->nick, "", act, TRUE, FALSE); + } else + { + /* DCC CHAT failed, try through server */ + if (sess->server->connected) + { + sess->server->p_action (sess->server, sess->channel, act); + /* print it to screen */ + inbound_action (sess, sess->channel, sess->server->nick, "", act, TRUE, FALSE); + } else + { + notc_msg (sess); + } + } + + return TRUE; +} + +static int +cmd_mode (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + /* +channel channels are dying, let those servers whine about modes. + * return info about current channel if available and no info is given */ + if ((*word[2] == '+') || (*word[2] == 0) || (!is_channel(sess->server, word[2]) && + !(rfc_casecmp(sess->server->nick, word[2]) == 0))) + { + if(sess->channel[0] == 0) + return FALSE; + sess->server->p_mode (sess->server, sess->channel, word_eol[2]); + } + else + sess->server->p_mode (sess->server, word[2], word_eol[3]); + return TRUE; +} + +static int +mop_cb (struct User *user, multidata *data) +{ + if (!user->op) + { + data->nicks[data->i] = user->nick; + data->i++; + } + return TRUE; +} + +static int +cmd_mop (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char **nicks = malloc (sizeof (char *) * (sess->total - sess->ops)); + multidata data; + + data.nicks = nicks; + data.i = 0; + tree_foreach (sess->usertree, (tree_traverse_func *)mop_cb, &data); + send_channel_modes (sess, tbuf, nicks, 0, data.i, '+', 'o', 0); + + free (nicks); + + return TRUE; +} + +static int +cmd_msg (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *nick = word[2]; + char *msg = word_eol[3]; + struct session *newsess; + + if (*nick) + { + if (*msg) + { + if (strcmp (nick, ".") == 0) + { /* /msg the last nick /msg'ed */ + if (sess->lastnick[0]) + nick = sess->lastnick; + } else + { + safe_strcpy (sess->lastnick, nick, NICKLEN); /* prime the last nick memory */ + } + + if (*nick == '=') + { + nick++; + if (!dcc_write_chat (nick, msg)) + { + EMIT_SIGNAL (XP_TE_NODCC, sess, NULL, NULL, NULL, NULL, 0); + return TRUE; + } + } else + { + if (!sess->server->connected) + { + notc_msg (sess); + return TRUE; + } + sess->server->p_message (sess->server, nick, msg); + } + newsess = find_dialog (sess->server, nick); + if (!newsess) + newsess = find_channel (sess->server, nick); + if (newsess) + inbound_chanmsg (newsess->server, NULL, newsess->channel, + newsess->server->nick, msg, TRUE, FALSE); + else + { + /* mask out passwords */ + if (strcasecmp (nick, "nickserv") == 0 && + strncasecmp (msg, "identify ", 9) == 0) + msg = "identify ****"; + EMIT_SIGNAL (XP_TE_MSGSEND, sess, nick, msg, NULL, NULL, 0); + } + + return TRUE; + } + } + return FALSE; +} + +static int +cmd_names (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (*word[2]) + sess->server->p_names (sess->server, word[2]); + else + sess->server->p_names (sess->server, sess->channel); + return TRUE; +} + +static int +cmd_nctcp (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (*word_eol[3]) + { + sess->server->p_nctcp (sess->server, word[2], word_eol[3]); + return TRUE; + } + return FALSE; +} + +static int +cmd_newserver (struct session *sess, char *tbuf, char *word[], + char *word_eol[]) +{ + if (strcmp (word[2], "-noconnect") == 0) + { + new_ircwindow (NULL, word[3], SESS_SERVER, 0); + return TRUE; + } + + sess = new_ircwindow (NULL, NULL, SESS_SERVER, 0); + cmd_server (sess, tbuf, word, word_eol); + return TRUE; +} + +static int +cmd_nick (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *nick = word[2]; + if (*nick) + { + if (sess->server->connected) + sess->server->p_change_nick (sess->server, nick); + else + inbound_newnick (sess->server, sess->server->nick, nick, TRUE); + return TRUE; + } + return FALSE; +} + +static int +cmd_notice (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (*word[2] && *word_eol[3]) + { + sess->server->p_notice (sess->server, word[2], word_eol[3]); + EMIT_SIGNAL (XP_TE_NOTICESEND, sess, word[2], word_eol[3], NULL, NULL, 0); + return TRUE; + } + return FALSE; +} + +static int +cmd_notify (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int i = 1; + char *net = NULL; + + if (*word[2]) + { + if (strcmp (word[2], "-n") == 0) /* comma sep network list */ + { + net = word[3]; + i += 2; + } + + while (1) + { + i++; + if (!*word[i]) + break; + if (notify_deluser (word[i])) + { + EMIT_SIGNAL (XP_TE_DELNOTIFY, sess, word[i], NULL, NULL, NULL, 0); + return TRUE; + } + + if (net && strcmp (net, "ASK") == 0) + fe_notify_ask (word[i], NULL); + else + { + notify_adduser (word[i], net); + EMIT_SIGNAL (XP_TE_ADDNOTIFY, sess, word[i], NULL, NULL, NULL, 0); + } + } + } else + notify_showlist (sess); + return TRUE; +} + +static int +cmd_op (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int i = 2; + + while (1) + { + if (!*word[i]) + { + if (i == 2) + return FALSE; + send_channel_modes (sess, tbuf, word, 2, i, '+', 'o', 0); + return TRUE; + } + i++; + } +} + +static int +cmd_part (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *chan = word[2]; + char *reason = word_eol[3]; + if (!*chan) + chan = sess->channel; + if ((*chan) && is_channel (sess->server, chan)) + { + if (reason[0] == 0) + reason = NULL; + server_sendpart (sess->server, chan, reason); + return TRUE; + } + return FALSE; +} + +static int +cmd_ping (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char timestring[64]; + unsigned long tim; + char *to = word[2]; + + tim = make_ping_time (); + + snprintf (timestring, sizeof (timestring), "%lu", tim); + sess->server->p_ping (sess->server, to, timestring); + + return TRUE; +} + +void +open_query (server *serv, char *nick, gboolean focus_existing) +{ + session *sess; + + sess = find_dialog (serv, nick); + if (!sess) + new_ircwindow (serv, nick, SESS_DIALOG, 1); + else if (focus_existing) + fe_ctrl_gui (sess, 2, 0); /* bring-to-front */ +} + +static int +cmd_query (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *nick = word[2]; + gboolean focus = TRUE; + + if (strcmp (word[2], "-nofocus") == 0) + { + nick = word[3]; + focus = FALSE; + } + + if (*nick && !is_channel (sess->server, nick)) + { + open_query (sess->server, nick, focus); + return TRUE; + } + return FALSE; +} + +static int +cmd_quote (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *raw = word_eol[2]; + + return sess->server->p_raw (sess->server, raw); +} + +static int +cmd_reconnect (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int tmp = prefs.recon_delay; + GSList *list; + server *serv = sess->server; + + prefs.recon_delay = 0; + + if (!strcasecmp (word[2], "ALL")) + { + list = serv_list; + while (list) + { + serv = list->data; + if (serv->connected) + serv->auto_reconnect (serv, TRUE, -1); + list = list->next; + } + } + /* If it isn't "ALL" and there is something + there it *should* be a server they are trying to connect to*/ + else if (*word[2]) + { + int offset = 0; +#ifdef USE_OPENSSL + int use_ssl = FALSE; + + if (strcmp (word[2], "-ssl") == 0) + { + use_ssl = TRUE; + offset++; /* args move up by 1 word */ + } + serv->use_ssl = use_ssl; + serv->accept_invalid_cert = TRUE; +#endif + + if (*word[4+offset]) + safe_strcpy (serv->password, word[4+offset], sizeof (serv->password)); + if (*word[3+offset]) + serv->port = atoi (word[3+offset]); + safe_strcpy (serv->hostname, word[2+offset], sizeof (serv->hostname)); + serv->auto_reconnect (serv, TRUE, -1); + } + else + { + serv->auto_reconnect (serv, TRUE, -1); + } + prefs.recon_delay = tmp; + + return TRUE; +} + +static int +cmd_recv (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (*word_eol[2]) + { + sess->server->p_inline (sess->server, word_eol[2], strlen (word_eol[2])); + return TRUE; + } + + return FALSE; +} + +static int +cmd_say (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *speech = word_eol[2]; + if (*speech) + { + handle_say (sess, speech, FALSE); + return TRUE; + } + return FALSE; +} + +static int +cmd_send (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + guint32 addr; + socklen_t len; + struct sockaddr_in SAddr; + + if (!word[2][0]) + return FALSE; + + addr = dcc_get_my_address (); + if (addr == 0) + { + /* use the one from our connected server socket */ + memset (&SAddr, 0, sizeof (struct sockaddr_in)); + len = sizeof (SAddr); + getsockname (sess->server->sok, (struct sockaddr *) &SAddr, &len); + addr = SAddr.sin_addr.s_addr; + } + addr = ntohl (addr); + + if ((addr & 0xffff0000) == 0xc0a80000 || /* 192.168.x.x */ + (addr & 0xff000000) == 0x0a000000) /* 10.x.x.x */ + /* we got a private net address, let's PSEND or it'll fail */ + snprintf (tbuf, 512, "DCC PSEND %s", word_eol[2]); + else + snprintf (tbuf, 512, "DCC SEND %s", word_eol[2]); + + handle_command (sess, tbuf, FALSE); + + return TRUE; +} + +static int +cmd_setcursor (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int delta = FALSE; + + if (*word[2]) + { + if (word[2][0] == '-' || word[2][0] == '+') + delta = TRUE; + fe_set_inputbox_cursor (sess, delta, atoi (word[2])); + return TRUE; + } + + return FALSE; +} + +static int +cmd_settab (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (*word_eol[2]) + { + strcpy (tbuf, sess->channel); + safe_strcpy (sess->channel, word_eol[2], CHANLEN); + fe_set_channel (sess); + strcpy (sess->channel, tbuf); + } + + return TRUE; +} + +static int +cmd_settext (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + fe_set_inputbox_contents (sess, word_eol[2]); + return TRUE; +} + +static int +cmd_splay (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (*word[2]) + { + sound_play (word[2], FALSE); + return TRUE; + } + + return FALSE; +} + +static int +parse_irc_url (char *url, char *server_name[], char *port[], char *channel[], int *use_ssl) +{ + char *co; +#ifdef USE_OPENSSL + if (strncasecmp ("ircs://", url, 7) == 0) + { + *use_ssl = TRUE; + *server_name = url + 7; + goto urlserv; + } +#endif + + if (strncasecmp ("irc://", url, 6) == 0) + { + *server_name = url + 6; +#ifdef USE_OPENSSL +urlserv: +#endif + /* check for port */ + co = strchr (*server_name, ':'); + if (co) + { + *port = co + 1; + *co = 0; + } else + co = *server_name; + /* check for channel - mirc style */ + co = strchr (co + 1, '/'); + if (co) + { + *co = 0; + co++; + if (*co == '#') + *channel = co+1; + else + *channel = co; + + } + return TRUE; + } + return FALSE; +} + +static int +cmd_server (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int offset = 0; + char *server_name = NULL; + char *port = NULL; + char *pass = NULL; + char *channel = NULL; + int use_ssl = FALSE; + int is_url = TRUE; + server *serv = sess->server; + +#ifdef USE_OPENSSL + /* BitchX uses -ssl, mIRC uses -e, let's support both */ + if (strcmp (word[2], "-ssl") == 0 || strcmp (word[2], "-e") == 0) + { + use_ssl = TRUE; + offset++; /* args move up by 1 word */ + } +#endif + + if (!parse_irc_url (word[2 + offset], &server_name, &port, &channel, &use_ssl)) + { + is_url = FALSE; + server_name = word[2 + offset]; + } + if (port) + pass = word[3 + offset]; + else + { + port = word[3 + offset]; + pass = word[4 + offset]; + } + + if (!(*server_name)) + return FALSE; + + sess->server->network = NULL; + + /* dont clear it for /servchan */ + if (strncasecmp (word_eol[1], "SERVCHAN ", 9)) + sess->willjoinchannel[0] = 0; + + if (channel) + { + sess->willjoinchannel[0] = '#'; + safe_strcpy ((sess->willjoinchannel + 1), channel, (CHANLEN - 1)); + } + + /* support +7000 style ports like mIRC */ + if (port[0] == '+') + { + port++; +#ifdef USE_OPENSSL + use_ssl = TRUE; +#endif + } + + if (*pass) + { + safe_strcpy (serv->password, pass, sizeof (serv->password)); + } +#ifdef USE_OPENSSL + serv->use_ssl = use_ssl; + serv->accept_invalid_cert = TRUE; +#endif + + /* try to connect by Network name */ + if (servlist_connect_by_netname (sess, server_name, !is_url)) + return TRUE; + + if (*port) + { + serv->connect (serv, server_name, atoi (port), FALSE); + } else + { + /* -1 for default port */ + serv->connect (serv, server_name, -1, FALSE); + } + + /* try to associate this connection with a listed network */ + if (!serv->network) + /* search for this hostname in the entire server list */ + serv->network = servlist_net_find_from_server (server_name); + /* may return NULL, but that's OK */ + + return TRUE; +} + +static int +cmd_servchan (struct session *sess, char *tbuf, char *word[], + char *word_eol[]) +{ + int offset = 0; + +#ifdef USE_OPENSSL + if (strcmp (word[2], "-ssl") == 0) + offset++; +#endif + + if (*word[4 + offset]) + { + safe_strcpy (sess->willjoinchannel, word[4 + offset], CHANLEN); + return cmd_server (sess, tbuf, word, word_eol); + } + + return FALSE; +} + +static int +cmd_topic (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (word[2][0] && is_channel (sess->server, word[2])) + sess->server->p_topic (sess->server, word[2], word_eol[3]); + else + sess->server->p_topic (sess->server, sess->channel, word_eol[2]); + return TRUE; +} + +static int +cmd_tray (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (strcmp (word[2], "-b") == 0) + { + fe_tray_set_balloon (word[3], word[4][0] ? word[4] : NULL); + return TRUE; + } + + if (strcmp (word[2], "-t") == 0) + { + fe_tray_set_tooltip (word[3][0] ? word[3] : NULL); + return TRUE; + } + + if (strcmp (word[2], "-i") == 0) + { + fe_tray_set_icon (atoi (word[3])); + return TRUE; + } + + if (strcmp (word[2], "-f") != 0) + return FALSE; + + if (!word[3][0]) + { + fe_tray_set_file (NULL); /* default xchat icon */ + return TRUE; + } + + if (!word[4][0]) + { + fe_tray_set_file (word[3]); /* fixed custom icon */ + return TRUE; + } + + /* flash between 2 icons */ + fe_tray_set_flash (word[4], word[5][0] ? word[5] : NULL, atoi (word[3])); + return TRUE; +} + +static int +cmd_unignore (struct session *sess, char *tbuf, char *word[], + char *word_eol[]) +{ + char *mask = word[2]; + char *arg = word[3]; + if (*mask) + { + if (ignore_del (mask, NULL)) + { + if (strcasecmp (arg, "QUIET")) + EMIT_SIGNAL (XP_TE_IGNOREREMOVE, sess, mask, NULL, NULL, NULL, 0); + } + return TRUE; + } + return FALSE; +} + +static int +cmd_unload (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ +#ifdef USE_PLUGIN + int len, by_file = FALSE; + + len = strlen (word[2]); +#ifdef WIN32 + if (len > 4 && strcasecmp (word[2] + len - 4, ".dll") == 0) +#else +#if defined(__hpux) + if (len > 3 && strcasecmp (word[2] + len - 3, ".sl") == 0) +#else + if (len > 3 && strcasecmp (word[2] + len - 3, ".so") == 0) +#endif +#endif + by_file = TRUE; + + switch (plugin_kill (word[2], by_file)) + { + case 0: + PrintText (sess, _("No such plugin found.\n")); + break; + case 1: + return TRUE; + case 2: + PrintText (sess, _("That plugin is refusing to unload.\n")); + break; + } +#endif + + return FALSE; +} + +static server * +find_server_from_hostname (char *hostname) +{ + GSList *list = serv_list; + server *serv; + + while (list) + { + serv = list->data; + if (!strcasecmp (hostname, serv->hostname) && serv->connected) + return serv; + list = list->next; + } + + return NULL; +} + +static server * +find_server_from_net (void *net) +{ + GSList *list = serv_list; + server *serv; + + while (list) + { + serv = list->data; + if (serv->network == net && serv->connected) + return serv; + list = list->next; + } + + return NULL; +} + +static void +url_join_only (server *serv, char *tbuf, char *channel) +{ + /* already connected, JOIN only. FIXME: support keys? */ + tbuf[0] = '#'; + /* tbuf is 4kb */ + safe_strcpy ((tbuf + 1), channel, 256); + serv->p_join (serv, tbuf, ""); +} + +static int +cmd_url (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (word[2][0]) + { + char *server_name = NULL; + char *port = NULL; + char *channel = NULL; + char *url = g_strdup (word[2]); + int use_ssl = FALSE; + void *net; + server *serv; + + if (parse_irc_url (url, &server_name, &port, &channel, &use_ssl)) + { + /* maybe we're already connected to this net */ + + /* check for "FreeNode" */ + net = servlist_net_find (server_name, NULL, strcasecmp); + /* check for "irc.eu.freenode.net" */ + if (!net) + net = servlist_net_find_from_server (server_name); + + if (net) + { + /* found the network, but are we connected? */ + serv = find_server_from_net (net); + if (serv) + { + url_join_only (serv, tbuf, channel); + g_free (url); + return TRUE; + } + } + else + { + /* an un-listed connection */ + serv = find_server_from_hostname (server_name); + if (serv) + { + url_join_only (serv, tbuf, channel); + g_free (url); + return TRUE; + } + } + + /* not connected to this net, open new window */ + cmd_newserver (sess, tbuf, word, word_eol); + + } else + fe_open_url (word[2]); + g_free (url); + return TRUE; + } + + return FALSE; +} + +static int +userlist_cb (struct User *user, session *sess) +{ + time_t lt; + + if (!user->lasttalk) + lt = 0; + else + lt = time (0) - user->lasttalk; + PrintTextf (sess, + "\00306%s\t\00314[\00310%-38s\00314] \017ov\0033=\017%d%d away=%u lt\0033=\017%d\n", + user->nick, user->hostname, user->op, user->voice, user->away, lt); + + return TRUE; +} + +static int +cmd_uselect (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int idx = 2; + int clear = TRUE; + int scroll = FALSE; + + if (strcmp (word[2], "-a") == 0) /* ADD (don't clear selections) */ + { + clear = FALSE; + idx++; + } + if (strcmp (word[idx], "-s") == 0) /* SCROLL TO */ + { + scroll = TRUE; + idx++; + } + /* always valid, no args means clear the selection list */ + fe_uselect (sess, word + idx, clear, scroll); + return TRUE; +} + +static int +cmd_userlist (struct session *sess, char *tbuf, char *word[], + char *word_eol[]) +{ + tree_foreach (sess->usertree, (tree_traverse_func *)userlist_cb, sess); + return TRUE; +} + +static int +wallchop_cb (struct User *user, multidata *data) +{ + if (user->op) + { + if (data->i) + strcat (data->tbuf, ","); + strcat (data->tbuf, user->nick); + data->i++; + } + if (data->i == 5) + { + data->i = 0; + sprintf (data->tbuf + strlen (data->tbuf), + " :[@%s] %s", data->sess->channel, data->reason); + data->sess->server->p_raw (data->sess->server, data->tbuf); + strcpy (data->tbuf, "NOTICE "); + } + + return TRUE; +} + +static int +cmd_wallchop (struct session *sess, char *tbuf, char *word[], + char *word_eol[]) +{ + multidata data; + + if (!(*word_eol[2])) + return FALSE; + + strcpy (tbuf, "NOTICE "); + + data.reason = word_eol[2]; + data.tbuf = tbuf; + data.i = 0; + data.sess = sess; + tree_foreach (sess->usertree, (tree_traverse_func*)wallchop_cb, &data); + + if (data.i) + { + sprintf (tbuf + strlen (tbuf), + " :[@%s] %s", sess->channel, word_eol[2]); + sess->server->p_raw (sess->server, tbuf); + } + + return TRUE; +} + +static int +cmd_wallchan (struct session *sess, char *tbuf, char *word[], + char *word_eol[]) +{ + GSList *list; + + if (*word_eol[2]) + { + list = sess_list; + while (list) + { + sess = list->data; + if (sess->type == SESS_CHANNEL) + { + inbound_chanmsg (sess->server, NULL, sess->channel, + sess->server->nick, word_eol[2], TRUE, FALSE); + sess->server->p_message (sess->server, sess->channel, word_eol[2]); + } + list = list->next; + } + return TRUE; + } + return FALSE; +} + +static int +cmd_hop (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int i = 2; + + while (1) + { + if (!*word[i]) + { + if (i == 2) + return FALSE; + send_channel_modes (sess, tbuf, word, 2, i, '+', 'h', 0); + return TRUE; + } + i++; + } +} + +static int +cmd_voice (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int i = 2; + + while (1) + { + if (!*word[i]) + { + if (i == 2) + return FALSE; + send_channel_modes (sess, tbuf, word, 2, i, '+', 'v', 0); + return TRUE; + } + i++; + } +} + +/* *MUST* be kept perfectly sorted for the bsearch to work */ +const struct commands xc_cmds[] = { + {"ADDBUTTON", cmd_addbutton, 0, 0, 1, + N_("ADDBUTTON <name> <action>, adds a button under the user-list")}, + {"ALLCHAN", cmd_allchannels, 0, 0, 1, + N_("ALLCHAN <cmd>, sends a command to all channels you're in")}, + {"ALLCHANL", cmd_allchannelslocal, 0, 0, 1, + N_("ALLCHANL <cmd>, sends a command to all channels you're in")}, + {"ALLSERV", cmd_allservers, 0, 0, 1, + N_("ALLSERV <cmd>, sends a command to all servers you're in")}, + {"AWAY", cmd_away, 1, 0, 1, N_("AWAY [<reason>], sets you away")}, + {"BACK", cmd_back, 1, 0, 1, N_("BACK, sets you back (not away)")}, + {"BAN", cmd_ban, 1, 1, 1, + N_("BAN <mask> [<bantype>], bans everyone matching the mask from the current channel. If they are already on the channel this doesn't kick them (needs chanop)")}, + {"CHANOPT", cmd_chanopt, 0, 0, 1, N_("CHANOPT [-quiet] <variable> [<value>]")}, + {"CHARSET", cmd_charset, 0, 0, 1, 0}, + {"CLEAR", cmd_clear, 0, 0, 1, N_("CLEAR [ALL|HISTORY], Clears the current text window or command history")}, + {"CLOSE", cmd_close, 0, 0, 1, N_("CLOSE, Closes the current window/tab")}, + + {"COUNTRY", cmd_country, 0, 0, 1, + N_("COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia")}, + {"CTCP", cmd_ctcp, 1, 0, 1, + N_("CTCP <nick> <message>, send the CTCP message to nick, common messages are VERSION and USERINFO")}, + {"CYCLE", cmd_cycle, 1, 1, 1, + N_("CYCLE [<channel>], parts the current or given channel and immediately rejoins")}, + {"DCC", cmd_dcc, 0, 0, 1, + N_("\n" + "DCC GET <nick> - accept an offered file\n" + "DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" + "DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" + "DCC LIST - show DCC list\n" + "DCC CHAT <nick> - offer DCC CHAT to someone\n" + "DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" + "DCC CLOSE <type> <nick> <file> example:\n" + " /dcc close send johnsmith file.tar.gz")}, + {"DEBUG", cmd_debug, 0, 0, 1, 0}, + + {"DEHOP", cmd_dehop, 1, 1, 1, + N_("DEHOP <nick>, removes chanhalf-op status from the nick on the current channel (needs chanop)")}, + {"DELBUTTON", cmd_delbutton, 0, 0, 1, + N_("DELBUTTON <name>, deletes a button from under the user-list")}, + {"DEOP", cmd_deop, 1, 1, 1, + N_("DEOP <nick>, removes chanop status from the nick on the current channel (needs chanop)")}, + {"DEVOICE", cmd_devoice, 1, 1, 1, + N_("DEVOICE <nick>, removes voice status from the nick on the current channel (needs chanop)")}, + {"DISCON", cmd_discon, 0, 0, 1, N_("DISCON, Disconnects from server")}, + {"DNS", cmd_dns, 0, 0, 1, N_("DNS <nick|host|ip>, Finds a users IP number")}, + {"ECHO", cmd_echo, 0, 0, 1, N_("ECHO <text>, Prints text locally")}, +#ifndef WIN32 + {"EXEC", cmd_exec, 0, 0, 1, + N_("EXEC [-o] <command>, runs the command. If -o flag is used then output is sent to current channel, else is printed to current text box")}, +#ifndef __EMX__ + {"EXECCONT", cmd_execc, 0, 0, 1, N_("EXECCONT, sends the process SIGCONT")}, +#endif + {"EXECKILL", cmd_execk, 0, 0, 1, + N_("EXECKILL [-9], kills a running exec in the current session. If -9 is given the process is SIGKILL'ed")}, +#ifndef __EMX__ + {"EXECSTOP", cmd_execs, 0, 0, 1, N_("EXECSTOP, sends the process SIGSTOP")}, + {"EXECWRITE", cmd_execw, 0, 0, 1, N_("EXECWRITE, sends data to the processes stdin")}, +#endif +#endif + {"FLUSHQ", cmd_flushq, 0, 0, 1, + N_("FLUSHQ, flushes the current server's send queue")}, + {"GATE", cmd_gate, 0, 0, 1, + N_("GATE <host> [<port>], proxies through a host, port defaults to 23")}, + {"GETFILE", cmd_getfile, 0, 0, 1, "GETFILE [-folder] [-multi] [-save] <command> <title> [<initial>]"}, + {"GETINT", cmd_getint, 0, 0, 1, "GETINT <default> <command> <prompt>"}, + {"GETSTR", cmd_getstr, 0, 0, 1, "GETSTR <default> <command> <prompt>"}, + {"GHOST", cmd_ghost, 1, 0, 1, N_("GHOST <nick> [password], Kills a ghosted nickname")}, + {"GUI", cmd_gui, 0, 0, 1, "GUI [APPLY|ATTACH|DETACH|SHOW|HIDE|FOCUS|FLASH|ICONIFY|COLOR <n>]\n" + " GUI [MSGBOX <text>|MENU TOGGLE]"}, + {"HELP", cmd_help, 0, 0, 1, 0}, + {"HOP", cmd_hop, 1, 1, 1, + N_("HOP <nick>, gives chanhalf-op status to the nick (needs chanop)")}, + {"ID", cmd_id, 1, 0, 1, N_("ID <password>, identifies yourself to nickserv")}, + {"IGNORE", cmd_ignore, 0, 0, 1, + N_("IGNORE <mask> <types..> <options..>\n" + " mask - host mask to ignore, eg: *!*@*.aol.com\n" + " types - types of data to ignore, one or all of:\n" + " PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" + " options - NOSAVE, QUIET")}, + + {"INVITE", cmd_invite, 1, 0, 1, + N_("INVITE <nick> [<channel>], invites someone to a channel, by default the current channel (needs chanop)")}, + {"JOIN", cmd_join, 1, 0, 0, N_("JOIN <channel>, joins the channel")}, + {"KICK", cmd_kick, 1, 1, 1, + N_("KICK <nick>, kicks the nick from the current channel (needs chanop)")}, + {"KICKBAN", cmd_kickban, 1, 1, 1, + N_("KICKBAN <nick>, bans then kicks the nick from the current channel (needs chanop)")}, + {"KILLALL", cmd_killall, 0, 0, 1, "KILLALL, immediately exit"}, + {"LAGCHECK", cmd_lagcheck, 0, 0, 1, + N_("LAGCHECK, forces a new lag check")}, + {"LASTLOG", cmd_lastlog, 0, 0, 1, + N_("LASTLOG <string>, searches for a string in the buffer")}, + {"LIST", cmd_list, 1, 0, 1, 0}, + {"LOAD", cmd_load, 0, 0, 1, N_("LOAD [-e] <file>, loads a plugin or script")}, + + {"MDEHOP", cmd_mdehop, 1, 1, 1, + N_("MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)")}, + {"MDEOP", cmd_mdeop, 1, 1, 1, + N_("MDEOP, Mass deop's all chanops in the current channel (needs chanop)")}, + {"ME", cmd_me, 0, 0, 1, + N_("ME <action>, sends the action to the current channel (actions are written in the 3rd person, like /me jumps)")}, + {"MENU", cmd_menu, 0, 0, 1, "MENU [-eX] [-i<ICONFILE>] [-k<mod>,<key>] [-m] [-pX] [-r<X,group>] [-tX] {ADD|DEL} <path> [command] [unselect command]\n" + " See http://xchat.org/docs/menu/ for more details."}, + {"MKICK", cmd_mkick, 1, 1, 1, + N_("MKICK, Mass kicks everyone except you in the current channel (needs chanop)")}, + {"MODE", cmd_mode, 1, 0, 1, 0}, + {"MOP", cmd_mop, 1, 1, 1, + N_("MOP, Mass op's all users in the current channel (needs chanop)")}, + {"MSG", cmd_msg, 0, 0, 1, N_("MSG <nick> <message>, sends a private message")}, + + {"NAMES", cmd_names, 1, 0, 1, + N_("NAMES, Lists the nicks on the current channel")}, + {"NCTCP", cmd_nctcp, 1, 0, 1, + N_("NCTCP <nick> <message>, Sends a CTCP notice")}, + {"NEWSERVER", cmd_newserver, 0, 0, 1, N_("NEWSERVER [-noconnect] <hostname> [<port>]")}, + {"NICK", cmd_nick, 0, 0, 1, N_("NICK <nickname>, sets your nick")}, + + {"NOTICE", cmd_notice, 1, 0, 1, + N_("NOTICE <nick/channel> <message>, sends a notice. Notices are a type of message that should be auto reacted to")}, + {"NOTIFY", cmd_notify, 0, 0, 1, + N_("NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or adds someone to it")}, + {"OP", cmd_op, 1, 1, 1, + N_("OP <nick>, gives chanop status to the nick (needs chanop)")}, + {"PART", cmd_part, 1, 1, 0, + N_("PART [<channel>] [<reason>], leaves the channel, by default the current one")}, + {"PING", cmd_ping, 1, 0, 1, + N_("PING <nick | channel>, CTCP pings nick or channel")}, + {"QUERY", cmd_query, 0, 0, 1, + N_("QUERY [-nofocus] <nick>, opens up a new privmsg window to someone")}, + {"QUIT", cmd_quit, 0, 0, 1, + N_("QUIT [<reason>], disconnects from the current server")}, + {"QUOTE", cmd_quote, 1, 0, 1, + N_("QUOTE <text>, sends the text in raw form to the server")}, +#ifdef USE_OPENSSL + {"RECONNECT", cmd_reconnect, 0, 0, 1, + N_("RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /RECONNECT to reconnect to the current server or with /RECONNECT ALL to reconnect to all the open servers")}, +#else + {"RECONNECT", cmd_reconnect, 0, 0, 1, + N_("RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT to reconnect to the current server or with /RECONNECT ALL to reconnect to all the open servers")}, +#endif + {"RECV", cmd_recv, 1, 0, 1, N_("RECV <text>, send raw data to xchat, as if it was received from the irc server")}, + + {"SAY", cmd_say, 0, 0, 1, + N_("SAY <text>, sends the text to the object in the current window")}, + {"SEND", cmd_send, 0, 0, 1, N_("SEND <nick> [<file>]")}, +#ifdef USE_OPENSSL + {"SERVCHAN", cmd_servchan, 0, 0, 1, + N_("SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel")}, +#else + {"SERVCHAN", cmd_servchan, 0, 0, 1, + N_("SERVCHAN <host> <port> <channel>, connects and joins a channel")}, +#endif +#ifdef USE_OPENSSL + {"SERVER", cmd_server, 0, 0, 1, + N_("SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the default port is 6667 for normal connections, and 9999 for ssl connections")}, +#else + {"SERVER", cmd_server, 0, 0, 1, + N_("SERVER <host> [<port>] [<password>], connects to a server, the default port is 6667")}, +#endif + {"SET", cmd_set, 0, 0, 1, N_("SET [-e] [-off|-on] [-quiet] <variable> [<value>]")}, + {"SETCURSOR", cmd_setcursor, 0, 0, 1, N_("SETCURSOR [-|+]<position>")}, + {"SETTAB", cmd_settab, 0, 0, 1, 0}, + {"SETTEXT", cmd_settext, 0, 0, 1, 0}, + {"SPLAY", cmd_splay, 0, 0, 1, "SPLAY <soundfile>"}, + {"TOPIC", cmd_topic, 1, 1, 1, + N_("TOPIC [<topic>], sets the topic if one is given, else shows the current topic")}, + {"TRAY", cmd_tray, 0, 0, 1, + N_("\nTRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" + "TRAY -f <filename> Set tray to a fixed icon.\n" + "TRAY -i <number> Blink tray with an internal icon.\n" + "TRAY -t <text> Set the tray tooltip.\n" + "TRAY -b <title> <text> Set the tray balloon." + )}, + {"UNBAN", cmd_unban, 1, 1, 1, + N_("UNBAN <mask> [<mask>...], unbans the specified masks.")}, + {"UNIGNORE", cmd_unignore, 0, 0, 1, N_("UNIGNORE <mask> [QUIET]")}, + {"UNLOAD", cmd_unload, 0, 0, 1, N_("UNLOAD <name>, unloads a plugin or script")}, + {"URL", cmd_url, 0, 0, 1, N_("URL <url>, opens a URL in your browser")}, + {"USELECT", cmd_uselect, 0, 1, 0, + N_("USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist")}, + {"USERLIST", cmd_userlist, 1, 1, 1, 0}, + {"VOICE", cmd_voice, 1, 1, 1, + N_("VOICE <nick>, gives voice status to someone (needs chanop)")}, + {"WALLCHAN", cmd_wallchan, 1, 1, 1, + N_("WALLCHAN <message>, writes the message to all channels")}, + {"WALLCHOP", cmd_wallchop, 1, 1, 1, + N_("WALLCHOP <message>, sends the message to all chanops on the current channel")}, + {0, 0, 0, 0, 0, 0} +}; + + +static int +command_compare (const void *a, const void *b) +{ + return strcasecmp (a, ((struct commands *)b)->name); +} + +static struct commands * +find_internal_command (char *name) +{ + /* the "-1" is to skip the NULL terminator */ + return bsearch (name, xc_cmds, (sizeof (xc_cmds) / + sizeof (xc_cmds[0])) - 1, sizeof (xc_cmds[0]), command_compare); +} + +static void +help (session *sess, char *tbuf, char *helpcmd, int quiet) +{ + struct commands *cmd; + + if (plugin_show_help (sess, helpcmd)) + return; + + cmd = find_internal_command (helpcmd); + + if (cmd) + { + if (cmd->help) + { + snprintf (tbuf, TBUFSIZE, _("Usage: %s\n"), _(cmd->help)); + PrintText (sess, tbuf); + } else + { + if (!quiet) + PrintText (sess, _("\nNo help available on that command.\n")); + } + return; + } + + if (!quiet) + PrintText (sess, _("No such command.\n")); +} + +/* inserts %a, %c, %d etc into buffer. Also handles &x %x for word/word_eol. * + * returns 2 on buffer overflow + * returns 1 on success * + * returns 0 on bad-args-for-user-command * + * - word/word_eol args might be NULL * + * - this beast is used for UserCommands, UserlistButtons and CTCP replies */ + +int +auto_insert (char *dest, int destlen, unsigned char *src, char *word[], + char *word_eol[], char *a, char *c, char *d, char *e, char *h, + char *n, char *s) +{ + int num; + char buf[32]; + time_t now; + struct tm *tm_ptr; + char *utf; + gsize utf_len; + char *orig = dest; + + destlen--; + + while (src[0]) + { + if (src[0] == '%' || src[0] == '&') + { + if (isdigit ((unsigned char) src[1])) + { + if (isdigit ((unsigned char) src[2]) && isdigit ((unsigned char) src[3])) + { + buf[0] = src[1]; + buf[1] = src[2]; + buf[2] = src[3]; + buf[3] = 0; + dest[0] = atoi (buf); + utf = g_locale_to_utf8 (dest, 1, 0, &utf_len, 0); + if (utf) + { + if ((dest - orig) + utf_len >= destlen) + { + g_free (utf); + return 2; + } + + memcpy (dest, utf, utf_len); + g_free (utf); + dest += utf_len; + } + src += 3; + } else + { + if (word) + { + src++; + num = src[0] - '0'; /* ascii to decimal */ + if (*word[num] == 0) + return 0; + + if (src[-1] == '%') + utf = word[num]; + else + utf = word_eol[num]; + + /* avoid recusive usercommand overflow */ + if ((dest - orig) + strlen (utf) >= destlen) + return 2; + + strcpy (dest, utf); + dest += strlen (dest); + } + } + } else + { + if (src[0] == '&') + goto lamecode; + src++; + utf = NULL; + switch (src[0]) + { + case '%': + if ((dest - orig) + 2 >= destlen) + return 2; + dest[0] = '%'; + dest[1] = 0; + dest++; + break; + case 'a': + utf = a; break; + case 'c': + utf = c; break; + case 'd': + utf = d; break; + case 'e': + utf = e; break; + case 'h': + utf = h; break; + case 'm': + utf = get_cpu_str (); break; + case 'n': + utf = n; break; + case 's': + utf = s; break; + case 't': + now = time (0); + utf = ctime (&now); + utf[19] = 0; + break; + case 'v': + utf = PACKAGE_VERSION; break; + break; + case 'y': + now = time (0); + tm_ptr = localtime (&now); + snprintf (buf, sizeof (buf), "%4d%02d%02d", 1900 + + tm_ptr->tm_year, 1 + tm_ptr->tm_mon, tm_ptr->tm_mday); + utf = buf; + break; + default: + src--; + goto lamecode; + } + + if (utf) + { + if ((dest - orig) + strlen (utf) >= destlen) + return 2; + strcpy (dest, utf); + dest += strlen (dest); + } + + } + src++; + } else + { + utf_len = g_utf8_skip[src[0]]; + + if ((dest - orig) + utf_len >= destlen) + return 2; + + if (utf_len == 1) + { + lamecode: + dest[0] = src[0]; + dest++; + src++; + } else + { + memcpy (dest, src, utf_len); + dest += utf_len; + src += utf_len; + } + } + } + + dest[0] = 0; + + return 1; +} + +void +check_special_chars (char *cmd, int do_ascii) /* check for %X */ +{ + int occur = 0; + int len = strlen (cmd); + char *buf, *utf; + char tbuf[4]; + int i = 0, j = 0; + gsize utf_len; + + if (!len) + return; + + buf = malloc (len + 1); + + if (buf) + { + while (cmd[j]) + { + switch (cmd[j]) + { + case '%': + occur++; + if ( do_ascii && + j + 3 < len && + (isdigit ((unsigned char) cmd[j + 1]) && isdigit ((unsigned char) cmd[j + 2]) && + isdigit ((unsigned char) cmd[j + 3]))) + { + tbuf[0] = cmd[j + 1]; + tbuf[1] = cmd[j + 2]; + tbuf[2] = cmd[j + 3]; + tbuf[3] = 0; + buf[i] = atoi (tbuf); + utf = g_locale_to_utf8 (buf + i, 1, 0, &utf_len, 0); + if (utf) + { + memcpy (buf + i, utf, utf_len); + g_free (utf); + i += (utf_len - 1); + } + j += 3; + } else + { + switch (cmd[j + 1]) + { + case 'R': + buf[i] = '\026'; + break; + case 'U': + buf[i] = '\037'; + break; + case 'B': + buf[i] = '\002'; + break; + case 'C': + buf[i] = '\003'; + break; + case 'O': + buf[i] = '\017'; + break; + case 'H': /* CL: invisible text code */ + buf[i] = HIDDEN_CHAR; + break; + case '%': + buf[i] = '%'; + break; + default: + buf[i] = '%'; + j--; + break; + } + j++; + break; + default: + buf[i] = cmd[j]; + } + } + j++; + i++; + } + buf[i] = 0; + if (occur) + strcpy (cmd, buf); + free (buf); + } +} + +typedef struct +{ + char *nick; + int len; + struct User *best; + int bestlen; + char *space; + char *tbuf; +} nickdata; + +static int +nick_comp_cb (struct User *user, nickdata *data) +{ + int lenu; + + if (!rfc_ncasecmp (user->nick, data->nick, data->len)) + { + lenu = strlen (user->nick); + if (lenu == data->len) + { + snprintf (data->tbuf, TBUFSIZE, "%s%s", user->nick, data->space); + data->len = -1; + return FALSE; + } else if (lenu < data->bestlen) + { + data->bestlen = lenu; + data->best = user; + } + } + + return TRUE; +} + +static void +perform_nick_completion (struct session *sess, char *cmd, char *tbuf) +{ + int len; + char *space = strchr (cmd, ' '); + if (space && space != cmd) + { + if (space[-1] == prefs.nick_suffix[0] && space - 1 != cmd) + { + len = space - cmd - 1; + if (len < NICKLEN) + { + char nick[NICKLEN]; + nickdata data; + + memcpy (nick, cmd, len); + nick[len] = 0; + + data.nick = nick; + data.len = len; + data.bestlen = INT_MAX; + data.best = NULL; + data.tbuf = tbuf; + data.space = space - 1; + tree_foreach (sess->usertree, (tree_traverse_func *)nick_comp_cb, &data); + + if (data.len == -1) + return; + + if (data.best) + { + snprintf (tbuf, TBUFSIZE, "%s%s", data.best->nick, space - 1); + return; + } + } + } + } + + strcpy (tbuf, cmd); +} + +static void +user_command (session * sess, char *tbuf, char *cmd, char *word[], + char *word_eol[]) +{ + if (!auto_insert (tbuf, 2048, cmd, word, word_eol, "", sess->channel, "", + server_get_network (sess->server, TRUE), "", + sess->server->nick, "")) + { + PrintText (sess, _("Bad arguments for user command.\n")); + return; + } + + handle_command (sess, tbuf, TRUE); +} + +/* handle text entered without a CMDchar prefix */ + +static void +handle_say (session *sess, char *text, int check_spch) +{ + struct DCC *dcc; + char *word[PDIWORDS+1]; + char *word_eol[PDIWORDS+1]; + char pdibuf_static[1024]; + char newcmd_static[1024]; + char *pdibuf = pdibuf_static; + char *newcmd = newcmd_static; + int len; + int newcmdlen = sizeof newcmd_static; + + if (strcmp (sess->channel, "(lastlog)") == 0) + { + lastlog (sess->lastlog_sess, text, sess->lastlog_regexp); + return; + } + + len = strlen (text); + if (len >= sizeof pdibuf_static) + pdibuf = malloc (len + 1); + + if (len + NICKLEN >= newcmdlen) + newcmd = malloc (newcmdlen = len + NICKLEN + 1); + + if (check_spch && prefs.perc_color) + check_special_chars (text, prefs.perc_ascii); + + /* Python relies on this */ + word[PDIWORDS] = NULL; + word_eol[PDIWORDS] = NULL; + + /* split the text into words and word_eol */ + process_data_init (pdibuf, text, word, word_eol, TRUE, FALSE); + + /* a command of "" can be hooked for non-commands */ + if (plugin_emit_command (sess, "", word, word_eol)) + goto xit; + + /* incase a plugin did /close */ + if (!is_session (sess)) + goto xit; + + if (!sess->channel[0] || sess->type == SESS_SERVER || sess->type == SESS_NOTICES || sess->type == SESS_SNOTICES) + { + notj_msg (sess); + goto xit; + } + + if (prefs.nickcompletion) + perform_nick_completion (sess, text, newcmd); + else + safe_strcpy (newcmd, text, newcmdlen); + + text = newcmd; + + if (sess->type == SESS_DIALOG) + { + /* try it via dcc, if possible */ + dcc = dcc_write_chat (sess->channel, text); + if (dcc) + { + inbound_chanmsg (sess->server, NULL, sess->channel, + sess->server->nick, text, TRUE, FALSE); + set_topic (sess, net_ip (dcc->addr), net_ip (dcc->addr)); + goto xit; + } + } + + if (sess->server->connected) + { + unsigned int max; + unsigned char t = 0; + + /* maximum allowed message text */ + /* :nickname!username@host.com PRIVMSG #channel :text\r\n */ + max = 512; + max -= 16; /* :, !, @, " PRIVMSG ", " ", :, \r, \n */ + max -= strlen (sess->server->nick); + max -= strlen (sess->channel); + if (sess->me && sess->me->hostname) + max -= strlen (sess->me->hostname); + else + { + max -= 9; /* username */ + max -= 65; /* max possible hostname and '@' */ + } + + if (strlen (text) > max) + { + int i = 0, size; + + /* traverse the utf8 string and find the nearest cut point that + doesn't split 1 char in half */ + while (1) + { + size = g_utf8_skip[((unsigned char *)text)[i]]; + if ((i + size) >= max) + break; + i += size; + } + max = i; + t = text[max]; + text[max] = 0; /* insert a NULL terminator to shorten it */ + } + + inbound_chanmsg (sess->server, sess, sess->channel, sess->server->nick, + text, TRUE, FALSE); + sess->server->p_message (sess->server, sess->channel, text); + + if (t) + { + text[max] = t; + handle_say (sess, text + max, FALSE); + } + + } else + { + notc_msg (sess); + } + +xit: + if (pdibuf != pdibuf_static) + free (pdibuf); + + if (newcmd != newcmd_static) + free (newcmd); +} + +/* handle a command, without the '/' prefix */ + +int +handle_command (session *sess, char *cmd, int check_spch) +{ + struct popup *pop; + int user_cmd = FALSE; + GSList *list; + char *word[PDIWORDS+1]; + char *word_eol[PDIWORDS+1]; + static int command_level = 0; + struct commands *int_cmd; + char pdibuf_static[1024]; + char tbuf_static[TBUFSIZE]; + char *pdibuf; + char *tbuf; + int len; + int ret = TRUE; + + if (command_level > 99) + { + fe_message (_("Too many recursive usercommands, aborting."), FE_MSG_ERROR); + return TRUE; + } + command_level++; + /* anything below MUST DEC command_level before returning */ + + len = strlen (cmd); + if (len >= sizeof (pdibuf_static)) + pdibuf = malloc (len + 1); + else + pdibuf = pdibuf_static; + + if ((len * 2) >= sizeof (tbuf_static)) + tbuf = malloc ((len * 2) + 1); + else + tbuf = tbuf_static; + + /* split the text into words and word_eol */ + process_data_init (pdibuf, cmd, word, word_eol, TRUE, TRUE); + + /* ensure an empty string at index 32 for cmd_deop etc */ + /* (internal use only, plugins can still only read 1-31). */ + word[PDIWORDS] = "\000\000"; + word_eol[PDIWORDS] = "\000\000"; + + int_cmd = find_internal_command (word[1]); + /* redo it without quotes processing, for some commands like /JOIN */ + if (int_cmd && !int_cmd->handle_quotes) + process_data_init (pdibuf, cmd, word, word_eol, FALSE, FALSE); + + if (check_spch && prefs.perc_color) + check_special_chars (cmd, prefs.perc_ascii); + + if (plugin_emit_command (sess, word[1], word, word_eol)) + goto xit; + + /* incase a plugin did /close */ + if (!is_session (sess)) + goto xit; + + /* first see if it's a userCommand */ + list = command_list; + while (list) + { + pop = (struct popup *) list->data; + if (!strcasecmp (pop->name, word[1])) + { + user_command (sess, tbuf, pop->cmd, word, word_eol); + user_cmd = TRUE; + } + list = list->next; + } + + if (user_cmd) + goto xit; + + /* now check internal commands */ + int_cmd = find_internal_command (word[1]); + + if (int_cmd) + { + if (int_cmd->needserver && !sess->server->connected) + { + notc_msg (sess); + } else if (int_cmd->needchannel && !sess->channel[0]) + { + notj_msg (sess); + } else + { + switch (int_cmd->callback (sess, tbuf, word, word_eol)) + { + case FALSE: + help (sess, tbuf, int_cmd->name, TRUE); + break; + case 2: + ret = FALSE; + goto xit; + } + } + } else + { + /* unknown command, just send it to the server and hope */ + if (!sess->server->connected) + PrintText (sess, _("Unknown Command. Try /help\n")); + else + sess->server->p_raw (sess->server, cmd); + } + +xit: + command_level--; + + if (pdibuf != pdibuf_static) + free (pdibuf); + + if (tbuf != tbuf_static) + free (tbuf); + + return ret; +} + +/* handle one line entered into the input box */ + +static int +handle_user_input (session *sess, char *text, int history, int nocommand) +{ + if (*text == '\0') + return 1; + + if (history) + history_add (&sess->history, text); + + /* is it NOT a command, just text? */ + if (nocommand || text[0] != prefs.cmdchar[0]) + { + handle_say (sess, text, TRUE); + return 1; + } + + /* check for // */ + if (text[0] == prefs.cmdchar[0] && text[1] == prefs.cmdchar[0]) + { + handle_say (sess, text + 1, TRUE); + return 1; + } + + if (prefs.cmdchar[0] == '/') + { + int i; + const char *unix_dirs [] = { + "/bin/", "/boot/", "/dev/", + "/etc/", "/home/", "/lib/", + "/lost+found/", "/mnt/", "/opt/", + "/proc/", "/root/", "/sbin/", + "/tmp/", "/usr/", "/var/", + "/gnome/", NULL}; + for (i = 0; unix_dirs[i] != NULL; i++) + if (strncmp (text, unix_dirs[i], strlen (unix_dirs[i]))==0) + { + handle_say (sess, text, TRUE); + return 1; + } + } + + return handle_command (sess, text + 1, TRUE); +} + +/* changed by Steve Green. Macs sometimes paste with imbedded \r */ +void +handle_multiline (session *sess, char *cmd, int history, int nocommand) +{ + while (*cmd) + { + char *cr = cmd + strcspn (cmd, "\n\r"); + int end_of_string = *cr == 0; + *cr = 0; + if (!handle_user_input (sess, cmd, history, nocommand)) + return; + if (end_of_string) + break; + cmd = cr + 1; + } +} + +/*void +handle_multiline (session *sess, char *cmd, int history, int nocommand) +{ + char *cr; + + cr = strchr (cmd, '\n'); + if (cr) + { + while (1) + { + if (cr) + *cr = 0; + if (!handle_user_input (sess, cmd, history, nocommand)) + return; + if (!cr) + break; + cmd = cr + 1; + if (*cmd == 0) + break; + cr = strchr (cmd, '\n'); + } + } else + { + handle_user_input (sess, cmd, history, nocommand); + } +}*/ diff --git a/etc/wyatt8740/src/common/outbound.h b/etc/wyatt8740/src/common/outbound.h new file mode 100644 index 0000000..a204784 --- /dev/null +++ b/etc/wyatt8740/src/common/outbound.h @@ -0,0 +1,20 @@ +#ifndef XCHAT_OUTBOUND_H +#define XCHAT_OUTBOUND_H + +extern const struct commands xc_cmds[]; +extern GSList *menu_list; + +int auto_insert (char *dest, int destlen, unsigned char *src, char *word[], char *word_eol[], + char *a, char *c, char *d, char *e, char *h, char *n, char *s); +int handle_command (session *sess, char *cmd, int check_spch); +void process_data_init (char *buf, char *cmd, char *word[], char *word_eol[], gboolean handle_quotes, gboolean allow_escape_quotes); +void handle_multiline (session *sess, char *cmd, int history, int nocommand); +void check_special_chars (char *cmd, int do_ascii); +void notc_msg (session *sess); +void server_sendpart (server * serv, char *channel, char *reason); +void server_sendquit (session * sess); +int menu_streq (const char *s1, const char *s2, int def); +void open_query (server *serv, char *nick, gboolean focus_existing); +gboolean load_perform_file (session *sess, char *file); + +#endif diff --git a/etc/wyatt8740/src/common/plugin-timer.c b/etc/wyatt8740/src/common/plugin-timer.c new file mode 100644 index 0000000..f09074a --- /dev/null +++ b/etc/wyatt8740/src/common/plugin-timer.c @@ -0,0 +1,208 @@ +#include <stdlib.h> +#include <string.h> +#include <glib.h> +#include "xchat-plugin.h" + +#ifdef WIN32 +#define strcasecmp stricmp +#endif + +static xchat_plugin *ph; /* plugin handle */ +static GSList *timer_list = NULL; + +#define STATIC +#define HELP \ +"Usage: TIMER [-refnum <num>] [-repeat <num>] <seconds> <command>\n" \ +" TIMER [-quiet] -delete <num>" + +typedef struct +{ + xchat_hook *hook; + xchat_context *context; + char *command; + int ref; + int repeat; + float timeout; + unsigned int forever:1; +} timer; + +static void +timer_del (timer *tim) +{ + timer_list = g_slist_remove (timer_list, tim); + free (tim->command); + xchat_unhook (ph, tim->hook); + free (tim); +} + +static void +timer_del_ref (int ref, int quiet) +{ + GSList *list; + timer *tim; + + list = timer_list; + while (list) + { + tim = list->data; + if (tim->ref == ref) + { + timer_del (tim); + if (!quiet) + xchat_printf (ph, "Timer %d deleted.\n", ref); + return; + } + list = list->next; + } + if (!quiet) + xchat_print (ph, "No such ref number found.\n"); +} + +static int +timeout_cb (timer *tim) +{ + if (xchat_set_context (ph, tim->context)) + { + xchat_command (ph, tim->command); + + if (tim->forever) + return 1; + + tim->repeat--; + if (tim->repeat > 0) + return 1; + } + + timer_del (tim); + return 0; +} + +static void +timer_add (int ref, float timeout, int repeat, char *command) +{ + timer *tim; + GSList *list; + + if (ref == 0) + { + ref = 1; + list = timer_list; + while (list) + { + tim = list->data; + if (tim->ref >= ref) + ref = tim->ref + 1; + list = list->next; + } + } + + tim = malloc (sizeof (timer)); + tim->ref = ref; + tim->repeat = repeat; + tim->timeout = timeout; + tim->command = strdup (command); + tim->context = xchat_get_context (ph); + tim->forever = FALSE; + + if (repeat == 0) + tim->forever = TRUE; + + tim->hook = xchat_hook_timer (ph, timeout * 1000.0, (void *)timeout_cb, tim); + timer_list = g_slist_append (timer_list, tim); +} + +static void +timer_showlist (void) +{ + GSList *list; + timer *tim; + + if (timer_list == NULL) + { + xchat_print (ph, "No timers installed.\n"); + xchat_print (ph, HELP); + return; + } + /* 00000 00000000 0000000 abc */ + xchat_print (ph, "\026 Ref# Seconds Repeat Command \026\n"); + list = timer_list; + while (list) + { + tim = list->data; + xchat_printf (ph, "%5d %8.1f %7d %s\n", tim->ref, tim->timeout, + tim->repeat, tim->command); + list = list->next; + } +} + +static int +timer_cb (char *word[], char *word_eol[], void *userdata) +{ + int repeat = 1; + float timeout; + int offset = 0; + int ref = 0; + int quiet = FALSE; + char *command; + + if (!word[2][0]) + { + timer_showlist (); + return XCHAT_EAT_XCHAT; + } + + if (strcasecmp (word[2], "-quiet") == 0) + { + quiet = TRUE; + offset++; + } + + if (strcasecmp (word[2 + offset], "-delete") == 0) + { + timer_del_ref (atoi (word[3 + offset]), quiet); + return XCHAT_EAT_XCHAT; + } + + if (strcasecmp (word[2 + offset], "-refnum") == 0) + { + ref = atoi (word[3 + offset]); + offset += 2; + } + + if (strcasecmp (word[2 + offset], "-repeat") == 0) + { + repeat = atoi (word[3 + offset]); + offset += 2; + } + + timeout = atof (word[2 + offset]); + command = word_eol[3 + offset]; + + if (timeout < 0.1 || !command[0]) + xchat_print (ph, HELP); + else + timer_add (ref, timeout, repeat, command); + + return XCHAT_EAT_XCHAT; +} + +int +#ifdef STATIC +timer_plugin_init +#else +xchat_plugin_init +#endif + (xchat_plugin *plugin_handle, char **plugin_name, + char **plugin_desc, char **plugin_version, char *arg) +{ + /* we need to save this for use with any xchat_* functions */ + ph = plugin_handle; + + *plugin_name = "Timer"; + *plugin_desc = "IrcII style /TIMER command"; + *plugin_version = ""; + + xchat_hook_command (ph, "TIMER", XCHAT_PRI_NORM, timer_cb, HELP, 0); + + return 1; /* return 1 for success */ +} diff --git a/etc/wyatt8740/src/common/plugin-timer.h b/etc/wyatt8740/src/common/plugin-timer.h new file mode 100644 index 0000000..e3530c8 --- /dev/null +++ b/etc/wyatt8740/src/common/plugin-timer.h @@ -0,0 +1,7 @@ +#ifndef XCHAT_PLUGIN_TIMER_H +#define XCHAT_PLUGIN_TIMER_H + +int timer_plugin_init (xchat_plugin *plugin_handle, char **plugin_name, + char **plugin_desc, char **plugin_version, char *arg); + +#endif diff --git a/etc/wyatt8740/src/common/plugin.c b/etc/wyatt8740/src/common/plugin.c new file mode 100644 index 0000000..a8d3804 --- /dev/null +++ b/etc/wyatt8740/src/common/plugin.c @@ -0,0 +1,1562 @@ +/* X-Chat + * Copyright (C) 2002 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdlib.h> +#include <string.h> +#include <stdarg.h> +#include <stdio.h> + +#include "xchat.h" +#include "fe.h" +#include "util.h" +#include "outbound.h" +#include "cfgfiles.h" +#include "ignore.h" +#include "server.h" +#include "servlist.h" +#include "modes.h" +#include "notify.h" +#include "text.h" +#define PLUGIN_C +typedef struct session xchat_context; +#include "xchat-plugin.h" +#include "plugin.h" + + +#include "xchatc.h" + +/* the USE_PLUGIN define only removes libdl stuff */ + +#ifdef USE_PLUGIN +#ifdef USE_GMODULE +#include <gmodule.h> +#else +#include <dlfcn.h> +#endif +#endif + +#define DEBUG(x) {x;} + +/* crafted to be an even 32 bytes */ +struct _xchat_hook +{ + xchat_plugin *pl; /* the plugin to which it belongs */ + char *name; /* "xdcc" */ + void *callback; /* pointer to xdcc_callback */ + char *help_text; /* help_text for commands only */ + void *userdata; /* passed to the callback */ + int tag; /* for timers & FDs only */ + int type; /* HOOK_* */ + int pri; /* fd */ /* priority / fd for HOOK_FD only */ +}; + +struct _xchat_list +{ + int type; /* LIST_* */ + GSList *pos; /* current pos */ + GSList *next; /* next pos */ + GSList *head; /* for LIST_USERS only */ + struct notify_per_server *notifyps; /* notify_per_server * */ +}; + +typedef int (xchat_cmd_cb) (char *word[], char *word_eol[], void *user_data); +typedef int (xchat_serv_cb) (char *word[], char *word_eol[], void *user_data); +typedef int (xchat_print_cb) (char *word[], void *user_data); +typedef int (xchat_fd_cb) (int fd, int flags, void *user_data); +typedef int (xchat_timer_cb) (void *user_data); +typedef int (xchat_init_func) (xchat_plugin *, char **, char **, char **, char *); +typedef int (xchat_deinit_func) (xchat_plugin *); + +enum +{ + LIST_CHANNELS, + LIST_DCC, + LIST_IGNORE, + LIST_NOTIFY, + LIST_USERS +}; + +enum +{ + HOOK_COMMAND, /* /command */ + HOOK_SERVER, /* PRIVMSG, NOTICE, numerics */ + HOOK_PRINT, /* All print events */ + HOOK_TIMER, /* timeouts */ + HOOK_FD, /* sockets & fds */ + HOOK_DELETED /* marked for deletion */ +}; + +GSList *plugin_list = NULL; /* export for plugingui.c */ +static GSList *hook_list = NULL; + +extern const struct prefs vars[]; /* cfgfiles.c */ + + +/* unload a plugin and remove it from our linked list */ + +static int +plugin_free (xchat_plugin *pl, int do_deinit, int allow_refuse) +{ + GSList *list, *next; + xchat_hook *hook; + xchat_deinit_func *deinit_func; + + /* fake plugin added by xchat_plugingui_add() */ + if (pl->fake) + goto xit; + + /* run the plugin's deinit routine, if any */ + if (do_deinit && pl->deinit_callback != NULL) + { + deinit_func = pl->deinit_callback; + if (!deinit_func (pl) && allow_refuse) + return FALSE; + } + + /* remove all of this plugin's hooks */ + list = hook_list; + while (list) + { + hook = list->data; + next = list->next; + if (hook->pl == pl) + xchat_unhook (NULL, hook); + list = next; + } + +#ifdef USE_PLUGIN + if (pl->handle) +#ifdef USE_GMODULE + g_module_close (pl->handle); +#else + dlclose (pl->handle); +#endif +#endif + +xit: + if (pl->free_strings) + { + if (pl->name) + free (pl->name); + if (pl->desc) + free (pl->desc); + if (pl->version) + free (pl->version); + } + if (pl->filename) + free ((char *)pl->filename); + free (pl); + + plugin_list = g_slist_remove (plugin_list, pl); + +#ifdef USE_PLUGIN + fe_pluginlist_update (); +#endif + + return TRUE; +} + +static xchat_plugin * +plugin_list_add (xchat_context *ctx, char *filename, const char *name, + const char *desc, const char *version, void *handle, + void *deinit_func, int fake, int free_strings) +{ + xchat_plugin *pl; + + pl = malloc (sizeof (xchat_plugin)); + pl->handle = handle; + pl->filename = filename; + pl->context = ctx; + pl->name = (char *)name; + pl->desc = (char *)desc; + pl->version = (char *)version; + pl->deinit_callback = deinit_func; + pl->fake = fake; + pl->free_strings = free_strings; /* free() name,desc,version? */ + + plugin_list = g_slist_prepend (plugin_list, pl); + + return pl; +} + +static void * +xchat_dummy (xchat_plugin *ph) +{ + return NULL; +} + +#ifdef WIN32 +static int +xchat_read_fd (xchat_plugin *ph, GIOChannel *source, char *buf, int *len) +{ + return g_io_channel_read (source, buf, *len, len); +} +#endif + +/* Load a static plugin */ + +void +plugin_add (session *sess, char *filename, void *handle, void *init_func, + void *deinit_func, char *arg, int fake) +{ + xchat_plugin *pl; + char *file; + + file = NULL; + if (filename) + file = strdup (filename); + + pl = plugin_list_add (sess, file, file, NULL, NULL, handle, deinit_func, + fake, FALSE); + + if (!fake) + { + /* win32 uses these because it doesn't have --export-dynamic! */ + pl->xchat_hook_command = xchat_hook_command; + pl->xchat_hook_server = xchat_hook_server; + pl->xchat_hook_print = xchat_hook_print; + pl->xchat_hook_timer = xchat_hook_timer; + pl->xchat_hook_fd = xchat_hook_fd; + pl->xchat_unhook = xchat_unhook; + pl->xchat_print = xchat_print; + pl->xchat_printf = xchat_printf; + pl->xchat_command = xchat_command; + pl->xchat_commandf = xchat_commandf; + pl->xchat_nickcmp = xchat_nickcmp; + pl->xchat_set_context = xchat_set_context; + pl->xchat_find_context = xchat_find_context; + pl->xchat_get_context = xchat_get_context; + pl->xchat_get_info = xchat_get_info; + pl->xchat_get_prefs = xchat_get_prefs; + pl->xchat_list_get = xchat_list_get; + pl->xchat_list_free = xchat_list_free; + pl->xchat_list_fields = xchat_list_fields; + pl->xchat_list_str = xchat_list_str; + pl->xchat_list_next = xchat_list_next; + pl->xchat_list_int = xchat_list_int; + pl->xchat_plugingui_add = xchat_plugingui_add; + pl->xchat_plugingui_remove = xchat_plugingui_remove; + pl->xchat_emit_print = xchat_emit_print; +#ifdef WIN32 + pl->xchat_read_fd = (void *) xchat_read_fd; +#else + pl->xchat_read_fd = xchat_dummy; +#endif + pl->xchat_list_time = xchat_list_time; + pl->xchat_gettext = xchat_gettext; + pl->xchat_send_modes = xchat_send_modes; + pl->xchat_strip = xchat_strip; + pl->xchat_free = xchat_free; + + /* incase new plugins are loaded on older xchat */ + pl->xchat_dummy4 = xchat_dummy; + pl->xchat_dummy3 = xchat_dummy; + pl->xchat_dummy2 = xchat_dummy; + pl->xchat_dummy1 = xchat_dummy; + + /* run xchat_plugin_init, if it returns 0, close the plugin */ + if (((xchat_init_func *)init_func) (pl, &pl->name, &pl->desc, &pl->version, arg) == 0) + { + plugin_free (pl, FALSE, FALSE); + return; + } + } + +#ifdef USE_PLUGIN + fe_pluginlist_update (); +#endif +} + +/* kill any plugin by the given (file) name (used by /unload) */ + +int +plugin_kill (char *name, int by_filename) +{ + GSList *list; + xchat_plugin *pl; + + list = plugin_list; + while (list) + { + pl = list->data; + /* static-plugins (plugin-timer.c) have a NULL filename */ + if ((by_filename && pl->filename && strcasecmp (name, pl->filename) == 0) || + (by_filename && pl->filename && strcasecmp (name, file_part (pl->filename)) == 0) || + (!by_filename && strcasecmp (name, pl->name) == 0)) + { + /* statically linked plugins have a NULL filename */ + if (pl->filename != NULL && !pl->fake) + { + if (plugin_free (pl, TRUE, TRUE)) + return 1; + return 2; + } + } + list = list->next; + } + + return 0; +} + +/* kill all running plugins (at shutdown) */ + +void +plugin_kill_all (void) +{ + GSList *list, *next; + xchat_plugin *pl; + + list = plugin_list; + while (list) + { + pl = list->data; + next = list->next; + if (!pl->fake) + plugin_free (list->data, TRUE, FALSE); + list = next; + } +} + +#ifdef USE_PLUGIN + +/* load a plugin from a filename. Returns: NULL-success or an error string */ + +char * +plugin_load (session *sess, char *filename, char *arg) +{ + void *handle; + xchat_init_func *init_func; + xchat_deinit_func *deinit_func; + +#ifdef USE_GMODULE + /* load the plugin */ + handle = g_module_open (filename, 0); + if (handle == NULL) + return (char *)g_module_error (); + + /* find the init routine xchat_plugin_init */ + if (!g_module_symbol (handle, "xchat_plugin_init", (gpointer *)&init_func)) + { + g_module_close (handle); + return _("No xchat_plugin_init symbol; is this really an xchat plugin?"); + } + + /* find the plugin's deinit routine, if any */ + if (!g_module_symbol (handle, "xchat_plugin_deinit", (gpointer *)&deinit_func)) + deinit_func = NULL; + +#else + char *error; + char *filepart; + +/* OpenBSD lacks this! */ +#ifndef RTLD_GLOBAL +#define RTLD_GLOBAL 0 +#endif + +#ifndef RTLD_NOW +#define RTLD_NOW 0 +#endif + + /* get the filename without path */ + filepart = file_part (filename); + + /* load the plugin */ + if (filepart && + /* xsys draws in libgtk-1.2, causing crashes, so force RTLD_LOCAL */ + (strstr (filepart, "local") || strncmp (filepart, "libxsys-1", 9) == 0) + ) + handle = dlopen (filename, RTLD_NOW); + else + handle = dlopen (filename, RTLD_GLOBAL | RTLD_NOW); + if (handle == NULL) + return (char *)dlerror (); + dlerror (); /* Clear any existing error */ + + /* find the init routine xchat_plugin_init */ + init_func = dlsym (handle, "xchat_plugin_init"); + error = (char *)dlerror (); + if (error != NULL) + { + dlclose (handle); + return _("No xchat_plugin_init symbol; is this really an xchat plugin?"); + } + + /* find the plugin's deinit routine, if any */ + deinit_func = dlsym (handle, "xchat_plugin_deinit"); + error = (char *)dlerror (); +#endif + + /* add it to our linked list */ + plugin_add (sess, filename, handle, init_func, deinit_func, arg, FALSE); + + return NULL; +} + +static session *ps; + +static void +plugin_auto_load_cb (char *filename) +{ + char *pMsg; + +#ifndef WIN32 /* black listed */ + if (!strcmp (file_part (filename), "dbus.so")) + return; +#endif + + pMsg = plugin_load (ps, filename, NULL); + if (pMsg) + { + PrintTextf (ps, "AutoLoad failed for: %s\n", filename); + PrintText (ps, pMsg); + } +} + +void +plugin_auto_load (session *sess) +{ + ps = sess; +#ifdef WIN32 + for_files ("./plugins", "*.dll", plugin_auto_load_cb); + for_files (get_xdir_fs (), "*.dll", plugin_auto_load_cb); +#else +#if defined(__hpux) + for_files (XCHATLIBDIR"/plugins", "*.sl", plugin_auto_load_cb); + for_files (get_xdir_fs (), "*.sl", plugin_auto_load_cb); +#else + for_files (XCHATLIBDIR"/plugins", "*.so", plugin_auto_load_cb); + for_files (get_xdir_fs (), "*.so", plugin_auto_load_cb); +#endif +#endif +} + +#endif + +static GSList * +plugin_hook_find (GSList *list, int type, char *name) +{ + xchat_hook *hook; + + while (list) + { + hook = list->data; + if (hook->type == type) + { + if (strcasecmp (hook->name, name) == 0) + return list; + + if (type == HOOK_SERVER) + { + if (strcasecmp (hook->name, "RAW LINE") == 0) + return list; + } + } + list = list->next; + } + + return NULL; +} + +/* check for plugin hooks and run them */ + +static int +plugin_hook_run (session *sess, char *name, char *word[], char *word_eol[], int type) +{ + GSList *list, *next; + xchat_hook *hook; + int ret, eat = 0; + + list = hook_list; + while (1) + { + list = plugin_hook_find (list, type, name); + if (!list) + goto xit; + + hook = list->data; + next = list->next; + hook->pl->context = sess; + + /* run the plugin's callback function */ + switch (type) + { + case HOOK_COMMAND: + ret = ((xchat_cmd_cb *)hook->callback) (word, word_eol, hook->userdata); + break; + case HOOK_SERVER: + ret = ((xchat_serv_cb *)hook->callback) (word, word_eol, hook->userdata); + break; + default: /*case HOOK_PRINT:*/ + ret = ((xchat_print_cb *)hook->callback) (word, hook->userdata); + break; + } + + if ((ret & XCHAT_EAT_XCHAT) && (ret & XCHAT_EAT_PLUGIN)) + { + eat = 1; + goto xit; + } + if (ret & XCHAT_EAT_PLUGIN) + goto xit; /* stop running plugins */ + if (ret & XCHAT_EAT_XCHAT) + eat = 1; /* eventually we'll return 1, but continue running plugins */ + + list = next; + } + +xit: + /* really remove deleted hooks now */ + list = hook_list; + while (list) + { + hook = list->data; + next = list->next; + if (hook->type == HOOK_DELETED) + { + hook_list = g_slist_remove (hook_list, hook); + free (hook); + } + list = next; + } + + return eat; +} + +/* execute a plugged in command. Called from outbound.c */ + +int +plugin_emit_command (session *sess, char *name, char *word[], char *word_eol[]) +{ + return plugin_hook_run (sess, name, word, word_eol, HOOK_COMMAND); +} + +/* got a server PRIVMSG, NOTICE, numeric etc... */ + +int +plugin_emit_server (session *sess, char *name, char *word[], char *word_eol[]) +{ + return plugin_hook_run (sess, name, word, word_eol, HOOK_SERVER); +} + +/* see if any plugins are interested in this print event */ + +int +plugin_emit_print (session *sess, char *word[]) +{ + return plugin_hook_run (sess, word[0], word, NULL, HOOK_PRINT); +} + +int +plugin_emit_dummy_print (session *sess, char *name) +{ + char *word[32]; + int i; + + word[0] = name; + for (i = 1; i < 32; i++) + word[i] = "\000"; + + return plugin_hook_run (sess, name, word, NULL, HOOK_PRINT); +} + +int +plugin_emit_keypress (session *sess, unsigned int state, unsigned int keyval, + int len, char *string) +{ + char *word[PDIWORDS]; + char keyval_str[16]; + char state_str[16]; + char len_str[16]; + int i; + + if (!hook_list) + return 0; + + sprintf (keyval_str, "%u", keyval); + sprintf (state_str, "%u", state); + sprintf (len_str, "%d", len); + + word[0] = "Key Press"; + word[1] = keyval_str; + word[2] = state_str; + word[3] = string; + word[4] = len_str; + for (i = 5; i < PDIWORDS; i++) + word[i] = "\000"; + + return plugin_hook_run (sess, word[0], word, NULL, HOOK_PRINT); +} + +static int +plugin_timeout_cb (xchat_hook *hook) +{ + int ret; + + /* timer_cb's context starts as front-most-tab */ + hook->pl->context = current_sess; + + /* call the plugin's timeout function */ + ret = ((xchat_timer_cb *)hook->callback) (hook->userdata); + + /* the callback might have already unhooked it! */ + if (!g_slist_find (hook_list, hook) || hook->type == HOOK_DELETED) + return 0; + + if (ret == 0) + { + hook->tag = 0; /* avoid fe_timeout_remove, returning 0 is enough! */ + xchat_unhook (hook->pl, hook); + } + + return ret; +} + +/* insert a hook into hook_list according to its priority */ + +static void +plugin_insert_hook (xchat_hook *new_hook) +{ + GSList *list; + xchat_hook *hook; + + list = hook_list; + while (list) + { + hook = list->data; + if (hook->type == new_hook->type && hook->pri <= new_hook->pri) + { + hook_list = g_slist_insert_before (hook_list, list, new_hook); + return; + } + list = list->next; + } + + hook_list = g_slist_append (hook_list, new_hook); +} + +static gboolean +plugin_fd_cb (GIOChannel *source, GIOCondition condition, xchat_hook *hook) +{ + int flags = 0, ret; + typedef int (xchat_fd_cb2) (int fd, int flags, void *user_data, GIOChannel *); + + if (condition & G_IO_IN) + flags |= XCHAT_FD_READ; + if (condition & G_IO_OUT) + flags |= XCHAT_FD_WRITE; + if (condition & G_IO_PRI) + flags |= XCHAT_FD_EXCEPTION; + + ret = ((xchat_fd_cb2 *)hook->callback) (hook->pri, flags, hook->userdata, source); + + /* the callback might have already unhooked it! */ + if (!g_slist_find (hook_list, hook) || hook->type == HOOK_DELETED) + return 0; + + if (ret == 0) + { + hook->tag = 0; /* avoid fe_input_remove, returning 0 is enough! */ + xchat_unhook (hook->pl, hook); + } + + return ret; +} + +/* allocate and add a hook to our list. Used for all 4 types */ + +static xchat_hook * +plugin_add_hook (xchat_plugin *pl, int type, int pri, const char *name, + const char *help_text, void *callb, int timeout, void *userdata) +{ + xchat_hook *hook; + + hook = malloc (sizeof (xchat_hook)); + memset (hook, 0, sizeof (xchat_hook)); + + hook->type = type; + hook->pri = pri; + if (name) + hook->name = strdup (name); + if (help_text) + hook->help_text = strdup (help_text); + hook->callback = callb; + hook->pl = pl; + hook->userdata = userdata; + + /* insert it into the linked list */ + plugin_insert_hook (hook); + + if (type == HOOK_TIMER) + hook->tag = fe_timeout_add (timeout, plugin_timeout_cb, hook); + + return hook; +} + +GList * +plugin_command_list(GList *tmp_list) +{ + xchat_hook *hook; + GSList *list = hook_list; + + while (list) + { + hook = list->data; + if (hook->type == HOOK_COMMAND) + tmp_list = g_list_prepend(tmp_list, hook->name); + list = list->next; + } + return tmp_list; +} + +void +plugin_command_foreach (session *sess, void *userdata, + void (*cb) (session *sess, void *userdata, char *name, char *help)) +{ + GSList *list; + xchat_hook *hook; + + list = hook_list; + while (list) + { + hook = list->data; + if (hook->type == HOOK_COMMAND && hook->name[0]) + { + cb (sess, userdata, hook->name, hook->help_text); + } + list = list->next; + } +} + +int +plugin_show_help (session *sess, char *cmd) +{ + GSList *list; + xchat_hook *hook; + + list = plugin_hook_find (hook_list, HOOK_COMMAND, cmd); + if (list) + { + hook = list->data; + if (hook->help_text) + { + PrintText (sess, hook->help_text); + return 1; + } + } + + return 0; +} + +/* ========================================================= */ +/* ===== these are the functions plugins actually call ===== */ +/* ========================================================= */ + +void * +xchat_unhook (xchat_plugin *ph, xchat_hook *hook) +{ + /* perl.c trips this */ + if (!g_slist_find (hook_list, hook) || hook->type == HOOK_DELETED) + return NULL; + + if (hook->type == HOOK_TIMER && hook->tag != 0) + fe_timeout_remove (hook->tag); + + if (hook->type == HOOK_FD && hook->tag != 0) + fe_input_remove (hook->tag); + + hook->type = HOOK_DELETED; /* expunge later */ + + if (hook->name) + free (hook->name); /* NULL for timers & fds */ + if (hook->help_text) + free (hook->help_text); /* NULL for non-commands */ + + return hook->userdata; +} + +xchat_hook * +xchat_hook_command (xchat_plugin *ph, const char *name, int pri, + xchat_cmd_cb *callb, const char *help_text, void *userdata) +{ + return plugin_add_hook (ph, HOOK_COMMAND, pri, name, help_text, callb, 0, + userdata); +} + +xchat_hook * +xchat_hook_server (xchat_plugin *ph, const char *name, int pri, + xchat_serv_cb *callb, void *userdata) +{ + return plugin_add_hook (ph, HOOK_SERVER, pri, name, 0, callb, 0, userdata); +} + +xchat_hook * +xchat_hook_print (xchat_plugin *ph, const char *name, int pri, + xchat_print_cb *callb, void *userdata) +{ + return plugin_add_hook (ph, HOOK_PRINT, pri, name, 0, callb, 0, userdata); +} + +xchat_hook * +xchat_hook_timer (xchat_plugin *ph, int timeout, xchat_timer_cb *callb, + void *userdata) +{ + return plugin_add_hook (ph, HOOK_TIMER, 0, 0, 0, callb, timeout, userdata); +} + +xchat_hook * +xchat_hook_fd (xchat_plugin *ph, int fd, int flags, + xchat_fd_cb *callb, void *userdata) +{ + xchat_hook *hook; + + hook = plugin_add_hook (ph, HOOK_FD, 0, 0, 0, callb, 0, userdata); + hook->pri = fd; + /* plugin hook_fd flags correspond exactly to FIA_* flags (fe.h) */ + hook->tag = fe_input_add (fd, flags, plugin_fd_cb, hook); + + return hook; +} + +void +xchat_print (xchat_plugin *ph, const char *text) +{ + if (!is_session (ph->context)) + { + DEBUG(PrintTextf(0, "%s\txchat_print called without a valid context.\n", ph->name)); + return; + } + + PrintText (ph->context, (char *)text); +} + +void +xchat_printf (xchat_plugin *ph, const char *format, ...) +{ + va_list args; + char *buf; + + va_start (args, format); + buf = g_strdup_vprintf (format, args); + va_end (args); + + xchat_print (ph, buf); + g_free (buf); +} + +void +xchat_command (xchat_plugin *ph, const char *command) +{ + char *conv; + int len = -1; + + if (!is_session (ph->context)) + { + DEBUG(PrintTextf(0, "%s\txchat_command called without a valid context.\n", ph->name)); + return; + } + + /* scripts/plugins continue to send non-UTF8... *sigh* */ + conv = text_validate ((char **)&command, &len); + handle_command (ph->context, (char *)command, FALSE); + g_free (conv); +} + +void +xchat_commandf (xchat_plugin *ph, const char *format, ...) +{ + va_list args; + char *buf; + + va_start (args, format); + buf = g_strdup_vprintf (format, args); + va_end (args); + + xchat_command (ph, buf); + g_free (buf); +} + +int +xchat_nickcmp (xchat_plugin *ph, const char *s1, const char *s2) +{ + return ((session *)ph->context)->server->p_cmp (s1, s2); +} + +xchat_context * +xchat_get_context (xchat_plugin *ph) +{ + return ph->context; +} + +int +xchat_set_context (xchat_plugin *ph, xchat_context *context) +{ + if (is_session (context)) + { + ph->context = context; + return 1; + } + return 0; +} + +xchat_context * +xchat_find_context (xchat_plugin *ph, const char *servname, const char *channel) +{ + GSList *slist, *clist, *sessions = NULL; + server *serv; + session *sess; + char *netname; + + if (servname == NULL && channel == NULL) + return current_sess; + + slist = serv_list; + while (slist) + { + serv = slist->data; + netname = server_get_network (serv, TRUE); + + if (servname == NULL || + rfc_casecmp (servname, serv->servername) == 0 || + strcasecmp (servname, serv->hostname) == 0 || + strcasecmp (servname, netname) == 0) + { + if (channel == NULL) + return serv->front_session; + + clist = sess_list; + while (clist) + { + sess = clist->data; + if (sess->server == serv) + { + if (rfc_casecmp (channel, sess->channel) == 0) + { + if (sess->server == ph->context->server) + { + g_slist_free (sessions); + return sess; + } else + { + sessions = g_slist_prepend (sessions, sess); + } + } + } + clist = clist->next; + } + } + slist = slist->next; + } + + if (sessions) + { + sessions = g_slist_reverse (sessions); + sess = sessions->data; + g_slist_free (sessions); + return sess; + } + + return NULL; +} + +const char * +xchat_get_info (xchat_plugin *ph, const char *id) +{ + session *sess; + guint32 hash; + + /* 1234567890 */ + if (!strncmp (id, "event_text", 10)) + { + char *e = (char *)id + 10; + if (*e == ' ') e++; /* 2.8.0 only worked without a space */ + return text_find_format_string (e); + } + + hash = str_hash (id); + /* do the session independant ones first */ + switch (hash) + { + case 0x325acab5: /* libdirfs */ + return XCHATLIBDIR; + + case 0x14f51cd8: /* version */ + return PACKAGE_VERSION; + + case 0xdd9b1abd: /* xchatdir */ + return get_xdir_utf8 (); + + case 0xe33f6c4a: /* xchatdirfs */ + return get_xdir_fs (); + } + + sess = ph->context; + if (!is_session (sess)) + { + DEBUG(PrintTextf(0, "%s\txchat_get_info called without a valid context.\n", ph->name)); + return NULL; + } + + switch (hash) + { + case 0x2de2ee: /* away */ + if (sess->server->is_away) + return sess->server->last_away_reason; + return NULL; + + case 0x2c0b7d03: /* channel */ + return sess->channel; + + case 0x2c0d614c: /* charset */ + { + const char *locale; + + if (sess->server->encoding) + return sess->server->encoding; + + locale = NULL; + g_get_charset (&locale); + return locale; + } + + case 0x30f5a8: /* host */ + return sess->server->hostname; + + case 0x1c0e99c1: /* inputbox */ + return fe_get_inputbox_contents (sess); + + case 0x633fb30: /* modes */ + return sess->current_modes; + + case 0x6de15a2e: /* network */ + return server_get_network (sess->server, FALSE); + + case 0x339763: /* nick */ + return sess->server->nick; + + case 0x438fdf9: /* nickserv */ + if (sess->server->network) + return ((ircnet *)sess->server->network)->nickserv; + return NULL; + + case 0xca022f43: /* server */ + if (!sess->server->connected) + return NULL; + return sess->server->servername; + + case 0x696cd2f: /* topic */ + return sess->topic; + + case 0x506d600b: /* native win_ptr */ + return fe_gui_info_ptr (sess, 0); + + case 0x6d3431b5: /* win_status */ + switch (fe_gui_info (sess, 0)) /* check window status */ + { + case 0: return "normal"; + case 1: return "active"; + case 2: return "hidden"; + } + return NULL; + } + + return NULL; +} + +int +xchat_get_prefs (xchat_plugin *ph, const char *name, const char **string, int *integer) +{ + int i = 0; + + /* some special run-time info (not really prefs, but may aswell throw it in here) */ + switch (str_hash (name)) + { + case 0xf82136c4: /* state_cursor */ + *integer = fe_get_inputbox_cursor (ph->context); + return 2; + + case 0xd1b: /* id */ + *integer = ph->context->server->id; + return 2; + } + + do + { + if (!strcasecmp (name, vars[i].name)) + { + switch (vars[i].type) + { + case TYPE_STR: + *string = ((char *) &prefs + vars[i].offset); + return 1; + + case TYPE_INT: + *integer = *((int *) &prefs + vars[i].offset); + return 2; + + default: + /*case TYPE_BOOL:*/ + if (*((int *) &prefs + vars[i].offset)) + *integer = 1; + else + *integer = 0; + return 3; + } + } + i++; + } + while (vars[i].name); + + return 0; +} + +xchat_list * +xchat_list_get (xchat_plugin *ph, const char *name) +{ + xchat_list *list; + + list = malloc (sizeof (xchat_list)); + list->pos = NULL; + + switch (str_hash (name)) + { + case 0x556423d0: /* channels */ + list->type = LIST_CHANNELS; + list->next = sess_list; + break; + + case 0x183c4: /* dcc */ + list->type = LIST_DCC; + list->next = dcc_list; + break; + + case 0xb90bfdd2: /* ignore */ + list->type = LIST_IGNORE; + list->next = ignore_list; + break; + + case 0xc2079749: /* notify */ + list->type = LIST_NOTIFY; + list->next = notify_list; + list->head = (void *)ph->context; /* reuse this pointer */ + break; + + case 0x6a68e08: /* users */ + if (is_session (ph->context)) + { + list->type = LIST_USERS; + list->head = list->next = userlist_flat_list (ph->context); + fe_userlist_set_selected (ph->context); + break; + } /* fall through */ + + default: + free (list); + return NULL; + } + + return list; +} + +void +xchat_list_free (xchat_plugin *ph, xchat_list *xlist) +{ + if (xlist->type == LIST_USERS) + g_slist_free (xlist->head); + free (xlist); +} + +int +xchat_list_next (xchat_plugin *ph, xchat_list *xlist) +{ + if (xlist->next == NULL) + return 0; + + xlist->pos = xlist->next; + xlist->next = xlist->pos->next; + + /* NOTIFY LIST: Find the entry which matches the context + of the plugin when list_get was originally called. */ + if (xlist->type == LIST_NOTIFY) + { + xlist->notifyps = notify_find_server_entry (xlist->pos->data, + ((session *)xlist->head)->server); + if (!xlist->notifyps) + return 0; + } + + return 1; +} + +const char * const * +xchat_list_fields (xchat_plugin *ph, const char *name) +{ + static const char * const dcc_fields[] = + { + "iaddress32","icps", "sdestfile","sfile", "snick", "iport", + "ipos", "iresume", "isize", "isizehigh", "istatus", "itype", NULL + }; + static const char * const channels_fields[] = + { + "schannel", "schantypes", "pcontext", "iflags", "iid", "ilag", "imaxmodes", + "snetwork", "snickmodes", "snickprefixes", "iqueue", "sserver", "itype", "iusers", + NULL + }; + static const char * const ignore_fields[] = + { + "iflags", "smask", NULL + }; + static const char * const notify_fields[] = + { + "iflags", "snetworks", "snick", "toff", "ton", "tseen", NULL + }; + static const char * const users_fields[] = + { + "iaway", "shost", "tlasttalk", "snick", "sprefix", "srealname", "iselected", NULL + }; + static const char * const list_of_lists[] = + { + "channels", "dcc", "ignore", "notify", "users", NULL + }; + + switch (str_hash (name)) + { + case 0x556423d0: /* channels */ + return channels_fields; + case 0x183c4: /* dcc */ + return dcc_fields; + case 0xb90bfdd2: /* ignore */ + return ignore_fields; + case 0xc2079749: /* notify */ + return notify_fields; + case 0x6a68e08: /* users */ + return users_fields; + case 0x6236395: /* lists */ + return list_of_lists; + } + + return NULL; +} + +time_t +xchat_list_time (xchat_plugin *ph, xchat_list *xlist, const char *name) +{ + guint32 hash = str_hash (name); + gpointer data; + + switch (xlist->type) + { + case LIST_NOTIFY: + if (!xlist->notifyps) + return (time_t) -1; + switch (hash) + { + case 0x1ad6f: /* off */ + return xlist->notifyps->lastoff; + case 0xddf: /* on */ + return xlist->notifyps->laston; + case 0x35ce7b: /* seen */ + return xlist->notifyps->lastseen; + } + break; + + case LIST_USERS: + data = xlist->pos->data; + switch (hash) + { + case 0xa9118c42: /* lasttalk */ + return ((struct User *)data)->lasttalk; + } + } + + return (time_t) -1; +} + +const char * +xchat_list_str (xchat_plugin *ph, xchat_list *xlist, const char *name) +{ + guint32 hash = str_hash (name); + gpointer data = ph->context; + int type = LIST_CHANNELS; + + /* a NULL xlist is a shortcut to current "channels" context */ + if (xlist) + { + data = xlist->pos->data; + type = xlist->type; + } + + switch (type) + { + case LIST_CHANNELS: + switch (hash) + { + case 0x2c0b7d03: /* channel */ + return ((session *)data)->channel; + case 0x577e0867: /* chantypes */ + return ((session *)data)->server->chantypes; + case 0x38b735af: /* context */ + return data; /* this is a session * */ + case 0x6de15a2e: /* network */ + return server_get_network (((session *)data)->server, FALSE); + case 0x8455e723: /* nickprefixes */ + return ((session *)data)->server->nick_prefixes; + case 0x829689ad: /* nickmodes */ + return ((session *)data)->server->nick_modes; + case 0xca022f43: /* server */ + return ((session *)data)->server->servername; + } + break; + + case LIST_DCC: + switch (hash) + { + case 0x3d9ad31e: /* destfile */ + return ((struct DCC *)data)->destfile; + case 0x2ff57c: /* file */ + return ((struct DCC *)data)->file; + case 0x339763: /* nick */ + return ((struct DCC *)data)->nick; + } + break; + + case LIST_IGNORE: + switch (hash) + { + case 0x3306ec: /* mask */ + return ((struct ignore *)data)->mask; + } + break; + + case LIST_NOTIFY: + switch (hash) + { + case 0x4e49ec05: /* networks */ + return ((struct notify *)data)->networks; + case 0x339763: /* nick */ + return ((struct notify *)data)->name; + } + break; + + case LIST_USERS: + switch (hash) + { + case 0x339763: /* nick */ + return ((struct User *)data)->nick; + case 0x30f5a8: /* host */ + return ((struct User *)data)->hostname; + case 0xc594b292: /* prefix */ + return ((struct User *)data)->prefix; + case 0xccc6d529: /* realname */ + return ((struct User *)data)->realname; + } + break; + } + + return NULL; +} + +int +xchat_list_int (xchat_plugin *ph, xchat_list *xlist, const char *name) +{ + guint32 hash = str_hash (name); + gpointer data = ph->context; + int tmp, type = LIST_CHANNELS; + + /* a NULL xlist is a shortcut to current "channels" context */ + if (xlist) + { + data = xlist->pos->data; + type = xlist->type; + } + + switch (type) + { + case LIST_DCC: + switch (hash) + { + case 0x34207553: /* address32 */ + return ((struct DCC *)data)->addr; + case 0x181a6: /* cps */ + return ((struct DCC *)data)->cps; + case 0x349881: /* port */ + return ((struct DCC *)data)->port; + case 0x1b254: /* pos */ + return ((struct DCC *)data)->pos; + case 0xc84dc82d: /* resume */ + return ((struct DCC *)data)->resumable; + case 0x35e001: /* size */ + return ((struct DCC *)data)->size & 0xffffffff; + case 0x3284d523: /* sizehigh */ + return (((struct DCC *)data)->size >> 32) & 0xffffffff; + case 0xcacdcff2: /* status */ + return ((struct DCC *)data)->dccstat; + case 0x368f3a: /* type */ + return ((struct DCC *)data)->type; + } + break; + + case LIST_IGNORE: + switch (hash) + { + case 0x5cfee87: /* flags */ + return ((struct ignore *)data)->type; + } + break; + + case LIST_CHANNELS: + switch (hash) + { + case 0xd1b: /* id */ + return ((struct session *)data)->server->id; + case 0x5cfee87: /* flags */ + tmp = ((struct session *)data)->alert_taskbar; /* bit 10 */ + tmp <<= 1; + tmp |= ((struct session *)data)->alert_tray; /* 9 */ + tmp <<= 1; + tmp |= ((struct session *)data)->alert_beep; /* 8 */ + tmp <<= 1; + /*tmp |= ((struct session *)data)->color_paste;*/ /* 7 */ + tmp <<= 1; + tmp |= ((struct session *)data)->text_hidejoinpart; /* 6 */ + tmp <<= 1; + tmp |= ((struct session *)data)->server->have_idmsg; /* 5 */ + tmp <<= 1; + tmp |= ((struct session *)data)->server->have_whox; /* 4 */ + tmp <<= 1; + tmp |= ((struct session *)data)->server->end_of_motd;/* 3 */ + tmp <<= 1; + tmp |= ((struct session *)data)->server->is_away; /* 2 */ + tmp <<= 1; + tmp |= ((struct session *)data)->server->connecting; /* 1 */ + tmp <<= 1; + tmp |= ((struct session *)data)->server->connected; /* 0 */ + return tmp; + case 0x1a192: /* lag */ + return ((struct session *)data)->server->lag; + case 0x1916144c: /* maxmodes */ + return ((struct session *)data)->server->modes_per_line; + case 0x66f1911: /* queue */ + return ((struct session *)data)->server->sendq_len; + case 0x368f3a: /* type */ + return ((struct session *)data)->type; + case 0x6a68e08: /* users */ + return ((struct session *)data)->total; + } + break; + + case LIST_NOTIFY: + if (!xlist->notifyps) + return -1; + switch (hash) + { + case 0x5cfee87: /* flags */ + return xlist->notifyps->ison; + } + + case LIST_USERS: + switch (hash) + { + case 0x2de2ee: /* away */ + return ((struct User *)data)->away; + case 0x4705f29b: /* selected */ + return ((struct User *)data)->selected; + } + break; + + } + + return -1; +} + +void * +xchat_plugingui_add (xchat_plugin *ph, const char *filename, + const char *name, const char *desc, + const char *version, char *reserved) +{ +#ifdef USE_PLUGIN + ph = plugin_list_add (NULL, strdup (filename), strdup (name), strdup (desc), + strdup (version), NULL, NULL, TRUE, TRUE); + fe_pluginlist_update (); +#endif + + return ph; +} + +void +xchat_plugingui_remove (xchat_plugin *ph, void *handle) +{ +#ifdef USE_PLUGIN + plugin_free (handle, FALSE, FALSE); +#endif +} + +int +xchat_emit_print (xchat_plugin *ph, const char *event_name, ...) +{ + va_list args; + /* currently only 4 because no events use more than 4. + This can be easily expanded without breaking the API. */ + char *argv[4] = {NULL, NULL, NULL, NULL}; + int i = 0; + + va_start (args, event_name); + while (1) + { + argv[i] = va_arg (args, char *); + if (!argv[i]) + break; + i++; + if (i >= 4) + break; + } + + i = text_emit_by_name ((char *)event_name, ph->context, argv[0], argv[1], + argv[2], argv[3]); + va_end (args); + + return i; +} + +char * +xchat_gettext (xchat_plugin *ph, const char *msgid) +{ + /* so that plugins can use xchat's internal gettext strings. */ + /* e.g. The EXEC plugin uses this on Windows. */ + return _(msgid); +} + +void +xchat_send_modes (xchat_plugin *ph, const char **targets, int ntargets, int modes_per_line, char sign, char mode) +{ + char tbuf[514]; /* modes.c needs 512 + null */ + + send_channel_modes (ph->context, tbuf, (char **)targets, 0, ntargets, sign, mode, modes_per_line); +} + +char * +xchat_strip (xchat_plugin *ph, const char *str, int len, int flags) +{ + return strip_color ((char *)str, len, flags); +} + +void +xchat_free (xchat_plugin *ph, void *ptr) +{ + g_free (ptr); +} diff --git a/etc/wyatt8740/src/common/plugin.h b/etc/wyatt8740/src/common/plugin.h new file mode 100644 index 0000000..b0c89d1 --- /dev/null +++ b/etc/wyatt8740/src/common/plugin.h @@ -0,0 +1,132 @@ +#ifndef XCHAT_COMMONPLUGIN_H +#define XCHAT_COMMONPLUGIN_H + +#ifdef PLUGIN_C +struct _xchat_plugin +{ + /* Keep these insync with xchat-plugin.h */ + /* !!don't change the order, to keep binary compat!! */ + xchat_hook *(*xchat_hook_command) (xchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], char *word_eol[], void *user_data), + const char *help_text, + void *userdata); + xchat_hook *(*xchat_hook_server) (xchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], char *word_eol[], void *user_data), + void *userdata); + xchat_hook *(*xchat_hook_print) (xchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], void *user_data), + void *userdata); + xchat_hook *(*xchat_hook_timer) (xchat_plugin *ph, + int timeout, + int (*callback) (void *user_data), + void *userdata); + xchat_hook *(*xchat_hook_fd) (xchat_plugin *ph, + int fd, + int flags, + int (*callback) (int fd, int flags, void *user_data), + void *userdata); + void *(*xchat_unhook) (xchat_plugin *ph, + xchat_hook *hook); + void (*xchat_print) (xchat_plugin *ph, + const char *text); + void (*xchat_printf) (xchat_plugin *ph, + const char *format, ...); + void (*xchat_command) (xchat_plugin *ph, + const char *command); + void (*xchat_commandf) (xchat_plugin *ph, + const char *format, ...); + int (*xchat_nickcmp) (xchat_plugin *ph, + const char *s1, + const char *s2); + int (*xchat_set_context) (xchat_plugin *ph, + xchat_context *ctx); + xchat_context *(*xchat_find_context) (xchat_plugin *ph, + const char *servname, + const char *channel); + xchat_context *(*xchat_get_context) (xchat_plugin *ph); + const char *(*xchat_get_info) (xchat_plugin *ph, + const char *id); + int (*xchat_get_prefs) (xchat_plugin *ph, + const char *name, + const char **string, + int *integer); + xchat_list * (*xchat_list_get) (xchat_plugin *ph, + const char *name); + void (*xchat_list_free) (xchat_plugin *ph, + xchat_list *xlist); + const char * const * (*xchat_list_fields) (xchat_plugin *ph, + const char *name); + int (*xchat_list_next) (xchat_plugin *ph, + xchat_list *xlist); + const char * (*xchat_list_str) (xchat_plugin *ph, + xchat_list *xlist, + const char *name); + int (*xchat_list_int) (xchat_plugin *ph, + xchat_list *xlist, + const char *name); + void * (*xchat_plugingui_add) (xchat_plugin *ph, + const char *filename, + const char *name, + const char *desc, + const char *version, + char *reserved); + void (*xchat_plugingui_remove) (xchat_plugin *ph, + void *handle); + int (*xchat_emit_print) (xchat_plugin *ph, + const char *event_name, ...); + void *(*xchat_read_fd) (xchat_plugin *ph); + time_t (*xchat_list_time) (xchat_plugin *ph, + xchat_list *xlist, + const char *name); + char *(*xchat_gettext) (xchat_plugin *ph, + const char *msgid); + void (*xchat_send_modes) (xchat_plugin *ph, + const char **targets, + int ntargets, + int modes_per_line, + char sign, + char mode); + char *(*xchat_strip) (xchat_plugin *ph, + const char *str, + int len, + int flags); + void (*xchat_free) (xchat_plugin *ph, + void *ptr); + void *(*xchat_dummy4) (xchat_plugin *ph); + void *(*xchat_dummy3) (xchat_plugin *ph); + void *(*xchat_dummy2) (xchat_plugin *ph); + void *(*xchat_dummy1) (xchat_plugin *ph); + /* PRIVATE FIELDS! */ + void *handle; /* from dlopen */ + char *filename; /* loaded from */ + char *name; + char *desc; + char *version; + session *context; + void *deinit_callback; /* pointer to xchat_plugin_deinit */ + unsigned int fake:1; /* fake plugin. Added by xchat_plugingui_add() */ + unsigned int free_strings:1; /* free name,desc,version? */ +}; +#endif + +char *plugin_load (session *sess, char *filename, char *arg); +void plugin_add (session *sess, char *filename, void *handle, void *init_func, void *deinit_func, char *arg, int fake); +int plugin_kill (char *name, int by_filename); +void plugin_kill_all (void); +void plugin_auto_load (session *sess); +int plugin_emit_command (session *sess, char *name, char *word[], char *word_eol[]); +int plugin_emit_server (session *sess, char *name, char *word[], char *word_eol[]); +int plugin_emit_print (session *sess, char *word[]); +int plugin_emit_dummy_print (session *sess, char *name); +int plugin_emit_keypress (session *sess, unsigned int state, unsigned int keyval, int len, char *string); +GList* plugin_command_list(GList *tmp_list); +int plugin_show_help (session *sess, char *cmd); +void plugin_command_foreach (session *sess, void *userdata, void (*cb) (session *sess, void *userdata, char *name, char *usage)); + +#endif diff --git a/etc/wyatt8740/src/common/proto-irc.c b/etc/wyatt8740/src/common/proto-irc.c new file mode 100644 index 0000000..0b7692c --- /dev/null +++ b/etc/wyatt8740/src/common/proto-irc.c @@ -0,0 +1,1293 @@ +/* X-Chat + * Copyright (C) 2002 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +/* IRC RFC1459(+commonly used extensions) protocol implementation */ + +#include <unistd.h> +#include <string.h> +#include <stdio.h> +#include <stdlib.h> +#include <ctype.h> +#include <stdarg.h> + +#include "xchat.h" +#include "ctcp.h" +#include "fe.h" +#include "ignore.h" +#include "inbound.h" +#include "modes.h" +#include "notify.h" +#include "plugin.h" +#include "server.h" +#include "text.h" +#include "outbound.h" +#include "util.h" +#include "xchatc.h" + + +static void +irc_login (server *serv, char *user, char *realname) +{ + if (serv->password[0]) + tcp_sendf (serv, "PASS %s\r\n", serv->password); + tcp_sendf (serv, "CAP LS\r\n"); + + tcp_sendf (serv, + "NICK %s\r\n" + "USER %s %s %s :%s\r\n", + serv->nick, user, user, serv->servername, realname); +} + +static void +irc_nickserv (server *serv, char *cmd, char *arg1, char *arg2, char *arg3) +{ + /* are all ircd authors idiots? */ + switch (serv->nickservtype) + { + case 0: + tcp_sendf (serv, "PRIVMSG NICKSERV :%s %s%s%s\r\n", cmd, arg1, arg2, arg3); + break; + case 1: + tcp_sendf (serv, "NICKSERV %s %s%s%s\r\n", cmd, arg1, arg2, arg3); + break; + case 2: + tcp_sendf (serv, "NS %s %s%s%s\r\n", cmd, arg1, arg2, arg3); + break; + case 3: + tcp_sendf (serv, "PRIVMSG NS :%s %s%s%s\r\n", cmd, arg1, arg2, arg3); + break; + case 4: + /* why couldn't QuakeNet implement one of the existing ones? */ + tcp_sendf (serv, "AUTH %s%s%s\r\n", cmd, arg1, arg2, arg3); + } +} + +static void +irc_ns_identify (server *serv, char *pass) +{ + irc_nickserv (serv, "IDENTIFY", pass, "", ""); +} + +static void +irc_ns_ghost (server *serv, char *usname, char *pass) +{ + if (serv->nickservtype != 4) + irc_nickserv (serv, "GHOST", usname, " ", pass); +} + +static void +irc_join (server *serv, char *channel, char *key) +{ + if (key[0]) + tcp_sendf (serv, "JOIN %s %s\r\n", channel, key); + else + tcp_sendf (serv, "JOIN %s\r\n", channel); +} + +static void +irc_join_list_flush (server *serv, GString *c, GString *k) +{ + char *chanstr, *keystr; + + chanstr = g_string_free (c, FALSE); + keystr = g_string_free (k, FALSE); + if (chanstr[0]) + { + if (keystr[0]) + tcp_sendf (serv, "JOIN %s %s\r\n", chanstr, keystr); + else + tcp_sendf (serv, "JOIN %s\r\n", chanstr); + } + g_free (chanstr); + g_free (keystr); +} + +/* join a whole list of channels & keys, split to multiple lines + * to get around 512 limit */ + +static void +irc_join_list (server *serv, GSList *channels, GSList *keys) +{ + GSList *clist; + GSList *klist; + GString *c = g_string_new (NULL); + GString *k = g_string_new (NULL); + int len; + int add; + int i, j; + + i = j = 0; + len = 9; /* "JOIN<space><space>\r\n" */ + clist = channels; + klist = keys; + + while (clist) + { + /* measure how many bytes this channel would add... */ + if (1) + { + add = strlen (clist->data); + if (i != 0) + add++; /* comma */ + } + + if (klist->data) + { + add += strlen (klist->data); + } + else + { + add++; /* 'x' filler */ + } + + if (j != 0) + add++; /* comma */ + + /* too big? dump buffer and start a fresh one */ + if (len + add > 512) + { + irc_join_list_flush (serv, c, k); + + c = g_string_new (NULL); + k = g_string_new (NULL); + i = j = 0; + len = 9; + } + + /* now actually add it to our GStrings */ + if (1) + { + add = strlen (clist->data); + if (i != 0) + { + add++; + g_string_append_c (c, ','); + } + g_string_append (c, clist->data); + i++; + } + + if (klist->data) + { + add += strlen (klist->data); + if (j != 0) + { + add++; + g_string_append_c (k, ','); + } + g_string_append (k, klist->data); + j++; + } + else + { + add++; + if (j != 0) + { + add++; + g_string_append_c (k, ','); + } + g_string_append_c (k, 'x'); + j++; + } + + len += add; + + klist = klist->next; + clist = clist->next; + } + + irc_join_list_flush (serv, c, k); +} + +static void +irc_part (server *serv, char *channel, char *reason) +{ + if (reason[0]) + tcp_sendf (serv, "PART %s :%s\r\n", channel, reason); + else + tcp_sendf (serv, "PART %s\r\n", channel); +} + +static void +irc_quit (server *serv, char *reason) +{ + if (reason[0]) + tcp_sendf (serv, "QUIT :%s\r\n", reason); + else + tcp_send_len (serv, "QUIT\r\n", 6); +} + +static void +irc_set_back (server *serv) +{ + tcp_send_len (serv, "AWAY\r\n", 6); +} + +static void +irc_set_away (server *serv, char *reason) +{ + if (reason) + { + if (!reason[0]) + reason = " "; + } + else + { + reason = " "; + } + + tcp_sendf (serv, "AWAY :%s\r\n", reason); +} + +static void +irc_ctcp (server *serv, char *to, char *msg) +{ + tcp_sendf (serv, "PRIVMSG %s :\001%s\001\r\n", to, msg); +} + +static void +irc_nctcp (server *serv, char *to, char *msg) +{ + tcp_sendf (serv, "NOTICE %s :\001%s\001\r\n", to, msg); +} + +static void +irc_cycle (server *serv, char *channel, char *key) +{ + tcp_sendf (serv, "PART %s\r\nJOIN %s %s\r\n", channel, channel, key); +} + +static void +irc_kick (server *serv, char *channel, char *nick, char *reason) +{ + if (reason[0]) + tcp_sendf (serv, "KICK %s %s :%s\r\n", channel, nick, reason); + else + tcp_sendf (serv, "KICK %s %s\r\n", channel, nick); +} + +static void +irc_invite (server *serv, char *channel, char *nick) +{ + tcp_sendf (serv, "INVITE %s %s\r\n", nick, channel); +} + +static void +irc_mode (server *serv, char *target, char *mode) +{ + tcp_sendf (serv, "MODE %s %s\r\n", target, mode); +} + +/* find channel info when joined */ + +static void +irc_join_info (server *serv, char *channel) +{ + tcp_sendf (serv, "MODE %s\r\n", channel); +} + +/* initiate userlist retreival */ + +static void +irc_user_list (server *serv, char *channel) +{ + tcp_sendf (serv, "WHO %s\r\n", channel); +} + +/* userhost */ + +static void +irc_userhost (server *serv, char *nick) +{ + tcp_sendf (serv, "USERHOST %s\r\n", nick); +} + +static void +irc_away_status (server *serv, char *channel) +{ + if (serv->have_whox) + tcp_sendf (serv, "WHO %s %%ctnf,152\r\n", channel); + else + tcp_sendf (serv, "WHO %s\r\n", channel); +} + +/*static void +irc_get_ip (server *serv, char *nick) +{ + tcp_sendf (serv, "WHO %s\r\n", nick); +}*/ + + +/* + * Command: WHOIS + * Parameters: [<server>] <nickmask>[,<nickmask>[,...]] + */ +static void +irc_user_whois (server *serv, char *nicks) +{ + tcp_sendf (serv, "WHOIS %s\r\n", nicks); +} + +static void +irc_message (server *serv, char *channel, char *text) +{ + tcp_sendf (serv, "PRIVMSG %s :%s\r\n", channel, text); +} + +static void +irc_action (server *serv, char *channel, char *act) +{ + tcp_sendf (serv, "PRIVMSG %s :\001ACTION %s\001\r\n", channel, act); +} + +static void +irc_notice (server *serv, char *channel, char *text) +{ + tcp_sendf (serv, "NOTICE %s :%s\r\n", channel, text); +} + +static void +irc_topic (server *serv, char *channel, char *topic) +{ + if (!topic) + tcp_sendf (serv, "TOPIC %s :\r\n", channel); + else if (topic[0]) + tcp_sendf (serv, "TOPIC %s :%s\r\n", channel, topic); + else + tcp_sendf (serv, "TOPIC %s\r\n", channel); +} + +static void +irc_list_channels (server *serv, char *arg, int min_users) +{ + if (arg[0]) + { + tcp_sendf (serv, "LIST %s\r\n", arg); + return; + } + + if (serv->use_listargs) + tcp_sendf (serv, "LIST >%d,<10000\r\n", min_users - 1); + else + tcp_send_len (serv, "LIST\r\n", 6); +} + +static void +irc_names (server *serv, char *channel) +{ + tcp_sendf (serv, "NAMES %s\r\n", channel); +} + +static void +irc_change_nick (server *serv, char *new_nick) +{ + tcp_sendf (serv, "NICK %s\r\n", new_nick); +} + +static void +irc_ping (server *serv, char *to, char *timestring) +{ + if (*to) + tcp_sendf (serv, "PRIVMSG %s :\001PING %s\001\r\n", to, timestring); + else + tcp_sendf (serv, "PING %s\r\n", timestring); +} + +static int +irc_raw (server *serv, char *raw) +{ + int len; + char tbuf[4096]; + if (*raw) + { + len = strlen (raw); + if (len < sizeof (tbuf) - 3) + { + len = snprintf (tbuf, sizeof (tbuf), "%s\r\n", raw); + tcp_send_len (serv, tbuf, len); + } else + { + tcp_send_len (serv, raw, len); + tcp_send_len (serv, "\r\n", 2); + } + return TRUE; + } + return FALSE; +} + +/* ============================================================== */ +/* ======================= IRC INPUT ============================ */ +/* ============================================================== */ + + +static void +channel_date (session *sess, char *chan, char *timestr) +{ + time_t timestamp = (time_t) atol (timestr); + char *tim = ctime (×tamp); + tim[24] = 0; /* get rid of the \n */ + EMIT_SIGNAL (XP_TE_CHANDATE, sess, chan, tim, NULL, NULL, 0); +} + +static void +process_numeric (session * sess, int n, + char *word[], char *word_eol[], char *text) +{ + server *serv = sess->server; + /* show whois is the server tab */ + session *whois_sess = serv->server_session; + + /* unless this setting is on */ + if (prefs.irc_whois_front) + whois_sess = serv->front_session; + + switch (n) + { + case 1: + inbound_login_start (sess, word[3], word[1]); + /* if network is PTnet then you must get your IP address + from "001" server message */ + if ((strncmp(word[7], "PTnet", 5) == 0) && + (strncmp(word[8], "IRC", 3) == 0) && + (strncmp(word[9], "Network", 7) == 0) && + (strrchr(word[10], '@') != NULL)) + { + serv->use_who = FALSE; + if (prefs.ip_from_server) + inbound_foundip (sess, strrchr(word[10], '@')+1); + } + + /* use /NICKSERV */ + if (strcasecmp (word[7], "DALnet") == 0 || + strcasecmp (word[7], "BRASnet") == 0) + serv->nickservtype = 1; + + /* use /NS */ + else if (strcasecmp (word[7], "FreeNode") == 0) + serv->nickservtype = 2; + + goto def; + + case 4: /* check the ircd type */ + serv->use_listargs = FALSE; + serv->modes_per_line = 3; /* default to IRC RFC */ + if (strncmp (word[5], "bahamut", 7) == 0) /* DALNet */ + { + serv->use_listargs = TRUE; /* use the /list args */ + } else if (strncmp (word[5], "u2.10.", 6) == 0) /* Undernet */ + { + serv->use_listargs = TRUE; /* use the /list args */ + serv->modes_per_line = 6; /* allow 6 modes per line */ + } else if (strncmp (word[5], "glx2", 4) == 0) + { + serv->use_listargs = TRUE; /* use the /list args */ + } + goto def; + + case 5: + inbound_005 (serv, word); + goto def; + + case 263: /*Server load is temporarily too heavy */ + if (fe_is_chanwindow (sess->server)) + { + fe_chan_list_end (sess->server); + fe_message (word_eol[5] + 1, FE_MSG_ERROR); + } + goto def; + + case 290: /* CAPAB reply */ + if (strstr (word_eol[1], "IDENTIFY-MSG")) + { + serv->have_idmsg = TRUE; + break; + } + goto def; + + case 301: + inbound_away (serv, word[4], + (word_eol[5][0] == ':') ? word_eol[5] + 1 : word_eol[5]); + break; + + case 302: + if (serv->skip_next_userhost) + { + char *eq = strchr (word[4], '='); + if (eq) + { + *eq = 0; + if (!serv->p_cmp (word[4] + 1, serv->nick)) + { + char *at = strrchr (eq + 1, '@'); + if (at) + inbound_foundip (sess, at + 1); + } + } + + serv->skip_next_userhost = FALSE; + break; + } + else goto def; + + case 303: + word[4]++; + notify_markonline (serv, word); + break; + + case 305: + inbound_uback (serv); + goto def; + + case 306: + inbound_uaway (serv); + goto def; + + case 312: + if (!serv->skip_next_whois) + EMIT_SIGNAL (XP_TE_WHOIS3, whois_sess, word[4], word_eol[5], NULL, NULL, 0); + else + inbound_user_info (sess, NULL, NULL, NULL, word[5], word[4], NULL, 0xff); + break; + + case 311: /* WHOIS 1st line */ + serv->inside_whois = 1; + inbound_user_info_start (sess, word[4]); + if (!serv->skip_next_whois) + EMIT_SIGNAL (XP_TE_WHOIS1, whois_sess, word[4], word[5], + word[6], word_eol[8] + 1, 0); + else + inbound_user_info (sess, NULL, word[5], word[6], NULL, word[4], + word_eol[8][0] == ':' ? word_eol[8] + 1 : word_eol[8], 0xff); + break; + + case 314: /* WHOWAS */ + inbound_user_info_start (sess, word[4]); + EMIT_SIGNAL (XP_TE_WHOIS1, whois_sess, word[4], word[5], + word[6], word_eol[8] + 1, 0); + break; + + case 317: + if (!serv->skip_next_whois) + { + time_t timestamp = (time_t) atol (word[6]); + long idle = atol (word[5]); + char *tim; + char outbuf[64]; + + snprintf (outbuf, sizeof (outbuf), + "%02ld:%02ld:%02ld", idle / 3600, (idle / 60) % 60, + idle % 60); + if (timestamp == 0) + EMIT_SIGNAL (XP_TE_WHOIS4, whois_sess, word[4], + outbuf, NULL, NULL, 0); + else + { + tim = ctime (×tamp); + tim[19] = 0; /* get rid of the \n */ + EMIT_SIGNAL (XP_TE_WHOIS4T, whois_sess, word[4], + outbuf, tim, NULL, 0); + } + } + break; + + case 318: /* END OF WHOIS */ + if (!serv->skip_next_whois) + EMIT_SIGNAL (XP_TE_WHOIS6, whois_sess, word[4], NULL, + NULL, NULL, 0); + serv->skip_next_whois = 0; + serv->inside_whois = 0; + break; + + case 313: + case 319: + if (!serv->skip_next_whois) + EMIT_SIGNAL (XP_TE_WHOIS2, whois_sess, word[4], + word_eol[5] + 1, NULL, NULL, 0); + break; + + case 307: /* dalnet version */ + case 320: /* :is an identified user */ + if (!serv->skip_next_whois) + EMIT_SIGNAL (XP_TE_WHOIS_ID, whois_sess, word[4], + word_eol[5] + 1, NULL, NULL, 0); + break; + + case 321: + if (!fe_is_chanwindow (sess->server)) + EMIT_SIGNAL (XP_TE_CHANLISTHEAD, serv->server_session, NULL, NULL, NULL, NULL, 0); + break; + + case 322: + if (fe_is_chanwindow (sess->server)) + { + fe_add_chan_list (sess->server, word[4], word[5], word_eol[6] + 1); + } else + { + PrintTextf (serv->server_session, "%-16s %-7d %s\017\n", + word[4], atoi (word[5]), word_eol[6] + 1); + } + break; + + case 323: + if (!fe_is_chanwindow (sess->server)) + EMIT_SIGNAL (XP_TE_SERVTEXT, serv->server_session, text, word[1], word[2], NULL, 0); + else + fe_chan_list_end (sess->server); + break; + + case 324: + sess = find_channel (serv, word[4]); + if (!sess) + sess = serv->server_session; + if (sess->ignore_mode) + sess->ignore_mode = FALSE; + else + EMIT_SIGNAL (XP_TE_CHANMODES, sess, word[4], word_eol[5], + NULL, NULL, 0); + fe_update_mode_buttons (sess, 't', '-'); + fe_update_mode_buttons (sess, 'n', '-'); + fe_update_mode_buttons (sess, 's', '-'); + fe_update_mode_buttons (sess, 'i', '-'); + fe_update_mode_buttons (sess, 'p', '-'); + fe_update_mode_buttons (sess, 'm', '-'); + fe_update_mode_buttons (sess, 'l', '-'); + fe_update_mode_buttons (sess, 'k', '-'); + handle_mode (serv, word, word_eol, "", TRUE); + break; + + case 329: + sess = find_channel (serv, word[4]); + if (sess) + { + if (sess->ignore_date) + sess->ignore_date = FALSE; + else + channel_date (sess, word[4], word[5]); + } + break; + + case 330: + if (!serv->skip_next_whois) + EMIT_SIGNAL (XP_TE_WHOIS_AUTH, whois_sess, word[4], + word_eol[6] + 1, word[5], NULL, 0); + break; + + case 332: + inbound_topic (serv, word[4], + (word_eol[5][0] == ':') ? word_eol[5] + 1 : word_eol[5]); + break; + + case 333: + inbound_topictime (serv, word[4], word[5], atol (word[6])); + break; + +#if 0 + case 338: /* Undernet Real user@host, Real IP */ + EMIT_SIGNAL (XP_TE_WHOIS_REALHOST, sess, word[4], word[5], word[6], + (word_eol[7][0]==':') ? word_eol[7]+1 : word_eol[7], 0); + break; +#endif + + case 341: /* INVITE ACK */ + EMIT_SIGNAL (XP_TE_UINVITE, sess, word[4], word[5], serv->servername, + NULL, 0); + break; + + case 352: /* WHO */ + { + unsigned int away = 0; + session *who_sess = find_channel (serv, word[4]); + + if (*word[9] == 'G') + away = 1; + + inbound_user_info (sess, word[4], word[5], word[6], word[7], + word[8], word_eol[11], away); + + /* try to show only user initiated whos */ + if (!who_sess || !who_sess->doing_who) + EMIT_SIGNAL (XP_TE_SERVTEXT, serv->server_session, text, word[1], + word[2], NULL, 0); + } + break; + + case 354: /* undernet WHOX: used as a reply for irc_away_status */ + { + unsigned int away = 0; + session *who_sess; + + /* irc_away_status sends out a "152" */ + if (!strcmp (word[4], "152")) + { + who_sess = find_channel (serv, word[5]); + + if (*word[7] == 'G') + away = 1; + + /* :SanJose.CA.us.undernet.org 354 z1 152 #zed1 z1 H@ */ + inbound_user_info (sess, word[5], 0, 0, 0, word[6], 0, away); + + /* try to show only user initiated whos */ + if (!who_sess || !who_sess->doing_who) + EMIT_SIGNAL (XP_TE_SERVTEXT, serv->server_session, text, + word[1], word[2], NULL, 0); + } else + goto def; + } + break; + + case 315: /* END OF WHO */ + { + session *who_sess; + who_sess = find_channel (serv, word[4]); + if (who_sess) + { + if (!who_sess->doing_who) + EMIT_SIGNAL (XP_TE_SERVTEXT, serv->server_session, text, + word[1], word[2], NULL, 0); + who_sess->doing_who = FALSE; + } else + { + if (!serv->doing_dns) + EMIT_SIGNAL (XP_TE_SERVTEXT, serv->server_session, text, + word[1], word[2], NULL, 0); + serv->doing_dns = FALSE; + } + } + break; + + case 348: /* +e-list entry */ + if (!inbound_banlist (sess, atol (word[7]), word[4], word[5], word[6], TRUE)) + goto def; + break; + + case 349: /* end of exemption list */ + sess = find_channel (serv, word[4]); + if (!sess) + { + sess = serv->front_session; + goto def; + } + if (!fe_is_banwindow (sess)) + goto def; + fe_ban_list_end (sess, TRUE); + break; + + case 353: /* NAMES */ + inbound_nameslist (serv, word[5], + (word_eol[6][0] == ':') ? word_eol[6] + 1 : word_eol[6]); + break; + + case 366: + if (!inbound_nameslist_end (serv, word[4])) + goto def; + break; + + case 367: /* banlist entry */ + inbound_banlist (sess, atol (word[7]), word[4], word[5], word[6], FALSE); + break; + + case 368: + sess = find_channel (serv, word[4]); + if (!sess) + { + sess = serv->front_session; + goto def; + } + if (!fe_is_banwindow (sess)) + goto def; + fe_ban_list_end (sess, FALSE); + break; + + case 369: /* WHOWAS end */ + case 406: /* WHOWAS error */ + EMIT_SIGNAL (XP_TE_SERVTEXT, whois_sess, text, word[1], word[2], NULL, 0); + serv->inside_whois = 0; + break; + + case 372: /* motd text */ + case 375: /* motd start */ + if (!prefs.skipmotd || serv->motd_skipped) + EMIT_SIGNAL (XP_TE_MOTD, serv->server_session, text, NULL, NULL, + NULL, 0); + break; + + case 376: /* end of motd */ + case 422: /* motd file is missing */ + inbound_login_end (sess, text); + break; + + case 433: /* nickname in use */ + case 432: /* erroneous nickname */ + if (serv->end_of_motd) + goto def; + inbound_next_nick (sess, word[4]); + break; + + case 437: + if (serv->end_of_motd || is_channel (serv, word[4])) + goto def; + inbound_next_nick (sess, word[4]); + break; + + case 471: + EMIT_SIGNAL (XP_TE_USERLIMIT, sess, word[4], NULL, NULL, NULL, 0); + break; + + case 473: + EMIT_SIGNAL (XP_TE_INVITE, sess, word[4], NULL, NULL, NULL, 0); + break; + + case 474: + EMIT_SIGNAL (XP_TE_BANNED, sess, word[4], NULL, NULL, NULL, 0); + break; + + case 475: + EMIT_SIGNAL (XP_TE_KEYWORD, sess, word[4], NULL, NULL, NULL, 0); + break; + + case 601: + notify_set_offline (serv, word[4], FALSE); + break; + + case 605: + notify_set_offline (serv, word[4], TRUE); + break; + + case 600: + case 604: + notify_set_online (serv, word[4]); + break; + + default: + + if (serv->inside_whois && word[4][0]) + { + /* some unknown WHOIS reply, ircd coders make them up weekly */ + if (!serv->skip_next_whois) + EMIT_SIGNAL (XP_TE_WHOIS_SPECIAL, whois_sess, word[4], + (word_eol[5][0] == ':') ? word_eol[5] + 1 : word_eol[5], + word[2], NULL, 0); + return; + } + + def: + if (is_channel (serv, word[4])) + { + session *realsess = find_channel (serv, word[4]); + if (!realsess) + realsess = serv->server_session; + EMIT_SIGNAL (XP_TE_SERVTEXT, realsess, text, word[1], word[2], NULL, 0); + } else + { + EMIT_SIGNAL (XP_TE_SERVTEXT, serv->server_session, text, word[1], + word[2], NULL, 0); + } + } +} + +/* handle named messages that starts with a ':' */ + +static void +process_named_msg (session *sess, char *type, char *word[], char *word_eol[]) +{ + server *serv = sess->server; + char ip[128], nick[NICKLEN]; + char *text, *ex; + int len = strlen (type); + + /* fill in the "ip" and "nick" buffers */ + ex = strchr (word[1], '!'); + if (!ex) /* no '!', must be a server message */ + { + safe_strcpy (ip, word[1], sizeof (ip)); + safe_strcpy (nick, word[1], sizeof (nick)); + } else + { + safe_strcpy (ip, ex + 1, sizeof (ip)); + ex[0] = 0; + safe_strcpy (nick, word[1], sizeof (nick)); + ex[0] = '!'; + } + + if (len == 4) + { + guint32 t; + + t = WORDL((guint8)type[0], (guint8)type[1], (guint8)type[2], (guint8)type[3]); + /* this should compile to a bunch of: CMP.L, JE ... nice & fast */ + switch (t) + { + case WORDL('J','O','I','N'): + { + char *chan = word[3]; + + if (*chan == ':') + chan++; + if (!serv->p_cmp (nick, serv->nick)) + inbound_ujoin (serv, chan, nick, ip); + else + inbound_join (serv, chan, nick, ip); + } + return; + + case WORDL('K','I','C','K'): + { + char *kicked = word[4]; + char *reason = word_eol[5]; + if (*kicked) + { + if (*reason == ':') + reason++; + if (!strcmp (kicked, serv->nick)) + inbound_ukick (serv, word[3], nick, reason); + else + inbound_kick (serv, word[3], kicked, nick, reason); + } + } + return; + + case WORDL('K','I','L','L'): + EMIT_SIGNAL (XP_TE_KILL, sess, nick, word_eol[5], NULL, NULL, 0); + return; + + case WORDL('M','O','D','E'): + handle_mode (serv, word, word_eol, nick, FALSE); /* modes.c */ + return; + + case WORDL('N','I','C','K'): + inbound_newnick (serv, nick, (word_eol[3][0] == ':') + ? word_eol[3] + 1 : word_eol[3], FALSE); + return; + + case WORDL('P','A','R','T'): + { + char *chan = word[3]; + char *reason = word_eol[4]; + + if (*chan == ':') + chan++; + if (*reason == ':') + reason++; + if (!strcmp (nick, serv->nick)) + inbound_upart (serv, chan, ip, reason); + else + inbound_part (serv, chan, nick, ip, reason); + } + return; + + case WORDL('P','O','N','G'): + inbound_ping_reply (serv->server_session, + (word[4][0] == ':') ? word[4] + 1 : word[4], word[3]); + return; + + case WORDL('Q','U','I','T'): + inbound_quit (serv, nick, ip, + (word_eol[3][0] == ':') ? word_eol[3] + 1 : word_eol[3]); + return; + } + + goto garbage; + } + + else if (len >= 5) + { + guint32 t; + + t = WORDL((guint8)type[0], (guint8)type[1], (guint8)type[2], (guint8)type[3]); + /* this should compile to a bunch of: CMP.L, JE ... nice & fast */ + switch (t) + { + case WORDL('I','N','V','I'): + if (ignore_check (word[1], IG_INVI)) + return; + + if (word[4][0] == ':') + EMIT_SIGNAL (XP_TE_INVITED, sess, word[4] + 1, nick, + serv->servername, NULL, 0); + else + EMIT_SIGNAL (XP_TE_INVITED, sess, word[4], nick, + serv->servername, NULL, 0); + + return; + + case WORDL('N','O','T','I'): + { + int id = FALSE; /* identified */ + + text = word_eol[4]; + if (*text == ':') + text++; + + if (serv->have_idmsg) + { + if (*text == '+') + { + id = TRUE; + text++; + } else if (*text == '-') + text++; + } + + if (!ignore_check (word[1], IG_NOTI)) + inbound_notice (serv, word[3], nick, text, ip, id); + } + return; + + case WORDL('P','R','I','V'): + { + char *to = word[3]; + int len; + int id = FALSE; /* identified */ + if (*to) + { + text = word_eol[4]; + if (*text == ':') + text++; + if (serv->have_idmsg) + { + if (*text == '+') + { + id = TRUE; + text++; + } else if (*text == '-') + text++; + } + len = strlen (text); + if (text[0] == 1 && text[len - 1] == 1) /* ctcp */ + { + text[len - 1] = 0; + text++; + if (strncasecmp (text, "ACTION", 6) != 0) + flood_check (nick, ip, serv, sess, 0); + if (strncasecmp (text, "DCC ", 4) == 0) + /* redo this with handle_quotes TRUE */ + process_data_init (word[1], word_eol[1], word, word_eol, TRUE, FALSE); + ctcp_handle (sess, to, nick, ip, text, word, word_eol, id); + } else + { + if (is_channel (serv, to)) + { + if (ignore_check (word[1], IG_CHAN)) + return; + inbound_chanmsg (serv, NULL, to, nick, text, FALSE, id); + } else + { + if (ignore_check (word[1], IG_PRIV)) + return; + inbound_privmsg (serv, nick, ip, text, id); + } + } + } + } + return; + + case WORDL('T','O','P','I'): + inbound_topicnew (serv, nick, word[3], + (word_eol[4][0] == ':') ? word_eol[4] + 1 : word_eol[4]); + return; + + case WORDL('W','A','L','L'): + text = word_eol[3]; + if (*text == ':') + text++; + EMIT_SIGNAL (XP_TE_WALLOPS, sess, nick, text, NULL, NULL, 0); + return; + } + } + + else if (len == 3) + { + guint32 t; + + t = WORDL((guint8)type[0], (guint8)type[1], (guint8)type[2], (guint8)type[3]); + switch (t) + { + case WORDL('C','A','P','\0'): + if (strncasecmp(word[4], "ACK", 3) == 0) + { + if (strncasecmp(word[5][0]==':' ? word[5]+1 : word[5], + "identify-msg", 12) == 0) + { + serv->have_idmsg = TRUE; + tcp_send_len(serv, "CAP END\r\n", 9); + } + } + else if (strncasecmp(word[4], "LS", 2) == 0) + { + if (strstr(word_eol[5], "identify-msg") != 0) + tcp_send_len(serv, "CAP REQ :identify-msg\r\n", 23); + else + tcp_send_len(serv, "CAP END\r\n", 9); + } + else if (strncasecmp(word[4], "NAK",3) == 0) + { + tcp_send_len(serv, "CAP END\r\n", 9); + } + return; + } + } + +garbage: + /* unknown message */ + PrintTextf (sess, "GARBAGE: %s\n", word_eol[1]); +} + +/* handle named messages that DON'T start with a ':' */ + +static void +process_named_servermsg (session *sess, char *buf, char *rawname, char *word_eol[]) +{ + sess = sess->server->server_session; + + if (!strncmp (buf, "PING ", 5)) + { + tcp_sendf (sess->server, "PONG %s\r\n", buf + 5); + return; + } + if (!strncmp (buf, "ERROR", 5)) + { + EMIT_SIGNAL (XP_TE_SERVERERROR, sess, buf + 7, NULL, NULL, NULL, 0); + return; + } + if (!strncmp (buf, "NOTICE ", 7)) + { + buf = word_eol[3]; + if (*buf == ':') + buf++; + EMIT_SIGNAL (XP_TE_SERVNOTICE, sess, buf, sess->server->servername, NULL, NULL, 0); + return; + } + + EMIT_SIGNAL (XP_TE_SERVTEXT, sess, buf, sess->server->servername, rawname, NULL, 0); +} + +/* irc_inline() - 1 single line received from serv */ + +static void +irc_inline (server *serv, char *buf, int len) +{ + session *sess, *tmp; + char *type, *text; + char *word[PDIWORDS+1]; + char *word_eol[PDIWORDS+1]; + char pdibuf_static[522]; /* 1 line can potentially be 512*6 in utf8 */ + char *pdibuf = pdibuf_static; + + /* need more than 522? fall back to malloc */ + if (len >= sizeof (pdibuf_static)) + pdibuf = malloc (len + 1); + + sess = serv->front_session; + + /* Python relies on this */ + word[PDIWORDS] = NULL; + word_eol[PDIWORDS] = NULL; + + if (buf[0] == ':') + { + /* split line into words and words_to_end_of_line */ + process_data_init (pdibuf, buf, word, word_eol, FALSE, FALSE); + + /* find a context for this message */ + if (is_channel (serv, word[3])) + { + tmp = find_channel (serv, word[3]); + if (tmp) + sess = tmp; + } + + /* for server messages, the 2nd word is the "message type" */ + type = word[2]; + + word[0] = type; + word_eol[1] = buf; /* keep the ":" for plugins */ + if (plugin_emit_server (sess, type, word, word_eol)) + goto xit; + word[1]++; + word_eol[1] = buf + 1; /* but not for xchat internally */ + + } else + { + process_data_init (pdibuf, buf, word, word_eol, FALSE, FALSE); + word[0] = type = word[1]; + if (plugin_emit_server (sess, type, word, word_eol)) + goto xit; + } + + if (buf[0] != ':') + { + process_named_servermsg (sess, buf, word[0], word_eol); + goto xit; + } + + /* see if the second word is a numeric */ + if (isdigit ((unsigned char) word[2][0])) + { + text = word_eol[4]; + if (*text == ':') + text++; + + process_numeric (sess, atoi (word[2]), word, word_eol, text); + } else + { + process_named_msg (sess, type, word, word_eol); + } + +xit: + if (pdibuf != pdibuf_static) + free (pdibuf); +} + +void +proto_fill_her_up (server *serv) +{ + serv->p_inline = irc_inline; + serv->p_invite = irc_invite; + serv->p_cycle = irc_cycle; + serv->p_ctcp = irc_ctcp; + serv->p_nctcp = irc_nctcp; + serv->p_quit = irc_quit; + serv->p_kick = irc_kick; + serv->p_part = irc_part; + serv->p_ns_identify = irc_ns_identify; + serv->p_ns_ghost = irc_ns_ghost; + serv->p_join = irc_join; + serv->p_join_list = irc_join_list; + serv->p_login = irc_login; + serv->p_join_info = irc_join_info; + serv->p_mode = irc_mode; + serv->p_user_list = irc_user_list; + serv->p_away_status = irc_away_status; + /*serv->p_get_ip = irc_get_ip;*/ + serv->p_whois = irc_user_whois; + serv->p_get_ip = irc_user_list; + serv->p_get_ip_uh = irc_userhost; + serv->p_set_back = irc_set_back; + serv->p_set_away = irc_set_away; + serv->p_message = irc_message; + serv->p_action = irc_action; + serv->p_notice = irc_notice; + serv->p_topic = irc_topic; + serv->p_list_channels = irc_list_channels; + serv->p_change_nick = irc_change_nick; + serv->p_names = irc_names; + serv->p_ping = irc_ping; + serv->p_raw = irc_raw; + serv->p_cmp = rfc_casecmp; /* can be changed by 005 in modes.c */ +} diff --git a/etc/wyatt8740/src/common/proto-irc.h b/etc/wyatt8740/src/common/proto-irc.h new file mode 100644 index 0000000..9080359 --- /dev/null +++ b/etc/wyatt8740/src/common/proto-irc.h @@ -0,0 +1,6 @@ +#ifndef XCHAT_PROTO_H +#define XCHAT_PROTO_H + +void proto_fill_her_up (server *serv); + +#endif diff --git a/etc/wyatt8740/src/common/server.c b/etc/wyatt8740/src/common/server.c new file mode 100644 index 0000000..851f0b3 --- /dev/null +++ b/etc/wyatt8740/src/common/server.c @@ -0,0 +1,2010 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * + * MS Proxy (ISA server) support is (c) 2006 Pavel Fedin <sonic_amiga@rambler.ru> + * based on Dante source code + * Copyright (c) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + * Inferno Nettverk A/S, Norway. All rights reserved. + */ + +/*#define DEBUG_MSPROXY*/ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <unistd.h> +#include <errno.h> +#include <fcntl.h> + +#define WANTSOCKET +#define WANTARPA +#include "inet.h" + +#ifndef WIN32 +#include <signal.h> +#include <sys/wait.h> +#else +#include <winbase.h> +#endif + +#include "xchat.h" +#include "fe.h" +#include "cfgfiles.h" +#include "network.h" +#include "notify.h" +#include "xchatc.h" +#include "inbound.h" +#include "outbound.h" +#include "text.h" +#include "util.h" +#include "url.h" +#include "proto-irc.h" +#include "servlist.h" +#include "server.h" + +#ifdef USE_OPENSSL +#include <openssl/ssl.h> /* SSL_() */ +#include <openssl/err.h> /* ERR_() */ +#include "ssl.h" +#endif + +#ifdef USE_MSPROXY +#include "msproxy.h" +#endif + +#ifdef WIN32 +#include "identd.c" +#endif + +#ifdef USE_OPENSSL +extern SSL_CTX *ctx; /* xchat.c */ +/* local variables */ +static struct session *g_sess = NULL; +#endif + +static GSList *away_list = NULL; +GSList *serv_list = NULL; + +static void auto_reconnect (server *serv, int send_quit, int err); +static void server_disconnect (session * sess, int sendquit, int err); +static int server_cleanup (server * serv); +static void server_connect (server *serv, char *hostname, int port, int no_login); + + +/* actually send to the socket. This might do a character translation or + send via SSL. server/dcc both use this function. */ + +int +tcp_send_real (void *ssl, int sok, char *encoding, int using_irc, char *buf, int len) +{ + int ret; + char *locale; + gsize loc_len; + + if (encoding == NULL) /* system */ + { + locale = NULL; + if (!prefs.utf8_locale) + { + const gchar *charset; + + g_get_charset (&charset); + locale = g_convert_with_fallback (buf, len, charset, "UTF-8", + "?", 0, &loc_len, 0); + } + } else + { + if (using_irc) /* using "IRC" encoding (CP1252/UTF-8 hybrid) */ + /* if all chars fit inside CP1252, use that. Otherwise this + returns NULL and we send UTF-8. */ + locale = g_convert (buf, len, "CP1252", "UTF-8", 0, &loc_len, 0); + else + locale = g_convert_with_fallback (buf, len, encoding, "UTF-8", + "?", 0, &loc_len, 0); + } + + if (locale) + { + len = loc_len; +#ifdef USE_OPENSSL + if (!ssl) + ret = send (sok, locale, len, 0); + else + ret = _SSL_send (ssl, locale, len); +#else + ret = send (sok, locale, len, 0); +#endif + g_free (locale); + } else + { +#ifdef USE_OPENSSL + if (!ssl) + ret = send (sok, buf, len, 0); + else + ret = _SSL_send (ssl, buf, len); +#else + ret = send (sok, buf, len, 0); +#endif + } + + return ret; +} + +static int +server_send_real (server *serv, char *buf, int len) +{ + fe_add_rawlog (serv, buf, len, TRUE); + + return tcp_send_real (serv->ssl, serv->sok, serv->encoding, serv->using_irc, + buf, len); +} + +/* new throttling system, uses the same method as the Undernet + ircu2.10 server; under test, a 200-line paste didn't flood + off the client */ + +static int +tcp_send_queue (server *serv) +{ + char *buf, *p; + int len, i, pri; + GSList *list; + time_t now = time (0); + + /* did the server close since the timeout was added? */ + if (!is_server (serv)) + return 0; + + /* try priority 2,1,0 */ + pri = 2; + while (pri >= 0) + { + list = serv->outbound_queue; + while (list) + { + buf = (char *) list->data; + if (buf[0] == pri) + { + buf++; /* skip the priority byte */ + len = strlen (buf); + + if (serv->next_send < now) + serv->next_send = now; + if (serv->next_send - now >= 10) + { + /* check for clock skew */ + if (now >= serv->prev_now) + return 1; /* don't remove the timeout handler */ + /* it is skewed, reset to something sane */ + serv->next_send = now; + } + + for (p = buf, i = len; i && *p != ' '; p++, i--); + serv->next_send += (2 + i / 120); + serv->sendq_len -= len; + serv->prev_now = now; + fe_set_throttle (serv); + + server_send_real (serv, buf, len); + + buf--; + serv->outbound_queue = g_slist_remove (serv->outbound_queue, buf); + free (buf); + list = serv->outbound_queue; + } else + { + list = list->next; + } + } + /* now try pri 0 */ + pri--; + } + return 0; /* remove the timeout handler */ +} + +int +tcp_send_len (server *serv, char *buf, int len) +{ + char *dbuf; + int noqueue = !serv->outbound_queue; + + if (!prefs.throttle) + return server_send_real (serv, buf, len); + + dbuf = malloc (len + 2); /* first byte is the priority */ + dbuf[0] = 2; /* pri 2 for most things */ + memcpy (dbuf + 1, buf, len); + dbuf[len + 1] = 0; + + /* privmsg and notice get a lower priority */ + if (strncasecmp (dbuf + 1, "PRIVMSG", 7) == 0 || + strncasecmp (dbuf + 1, "NOTICE", 6) == 0) + { + dbuf[0] = 1; + } + else + { + /* WHO/MODE get the lowest priority */ + if (strncasecmp (dbuf + 1, "WHO ", 4) == 0 || + /* but only MODE queries, not changes */ + (strncasecmp (dbuf + 1, "MODE", 4) == 0 && + strchr (dbuf, '-') == NULL && + strchr (dbuf, '+') == NULL)) + dbuf[0] = 0; + } + + serv->outbound_queue = g_slist_append (serv->outbound_queue, dbuf); + serv->sendq_len += len; /* tcp_send_queue uses strlen */ + + if (tcp_send_queue (serv) && noqueue) + fe_timeout_add (500, tcp_send_queue, serv); + + return 1; +} + +/*int +tcp_send (server *serv, char *buf) +{ + return tcp_send_len (serv, buf, strlen (buf)); +}*/ + +void +tcp_sendf (server *serv, char *fmt, ...) +{ + va_list args; + /* keep this buffer in BSS. Converting UTF-8 to ISO-8859-x might make the + string shorter, so allow alot more than 512 for now. */ + static char send_buf[1540]; /* good code hey (no it's not overflowable) */ + int len; + + va_start (args, fmt); + len = vsnprintf (send_buf, sizeof (send_buf) - 1, fmt, args); + va_end (args); + + send_buf[sizeof (send_buf) - 1] = '\0'; + if (len < 0 || len > (sizeof (send_buf) - 1)) + len = strlen (send_buf); + + tcp_send_len (serv, send_buf, len); +} + +static int +close_socket_cb (gpointer sok) +{ + closesocket (GPOINTER_TO_INT (sok)); + return 0; +} + +static void +close_socket (int sok) +{ + /* close the socket in 5 seconds so the QUIT message is not lost */ + fe_timeout_add (5000, close_socket_cb, GINT_TO_POINTER (sok)); +} + +/* handle 1 line of text received from the server */ + +static void +server_inline (server *serv, char *line, int len) +{ + char *utf_line_allocated = NULL; + + /* Checks whether we're set to use UTF-8 charset */ + if (serv->using_irc || /* 1. using CP1252/UTF-8 Hybrid */ + (serv->encoding == NULL && prefs.utf8_locale) || /* OR 2. using system default->UTF-8 */ + (serv->encoding != NULL && /* OR 3. explicitly set to UTF-8 */ + (strcasecmp (serv->encoding, "UTF8") == 0 || + strcasecmp (serv->encoding, "UTF-8") == 0))) + { + /* The user has the UTF-8 charset set, either via /charset + command or from his UTF-8 locale. Thus, we first try the + UTF-8 charset, and if we fail to convert, we assume + it to be ISO-8859-1 (see text_validate). */ + + utf_line_allocated = text_validate (&line, &len); + + } else + { + /* Since the user has an explicit charset set, either + via /charset command or from his non-UTF8 locale, + we don't fallback to ISO-8859-1 and instead try to remove + errnoeous octets till the string is convertable in the + said charset. */ + + const char *encoding = NULL; + + if (serv->encoding != NULL) + encoding = serv->encoding; + else + g_get_charset (&encoding); + + if (encoding != NULL) + { + char *conv_line; /* holds a copy of the original string */ + int conv_len; /* tells g_convert how much of line to convert */ + gsize utf_len; + gsize read_len; + GError *err; + gboolean retry; + + conv_line = g_malloc (len + 1); + memcpy (conv_line, line, len); + conv_line[len] = 0; + conv_len = len; + + /* if CP1255, convert it with the NUL terminator. + Works around SF bug #1122089 */ + if (serv->using_cp1255) + conv_len++; + + do + { + err = NULL; + retry = FALSE; + utf_line_allocated = g_convert_with_fallback (conv_line, conv_len, "UTF-8", encoding, "?", &read_len, &utf_len, &err); + if (err != NULL) + { + if (err->code == G_CONVERT_ERROR_ILLEGAL_SEQUENCE && conv_len > (read_len + 1)) + { + /* Make our best bet by removing the erroneous char. + This will work for casual 8-bit strings with non-standard chars. */ + memmove (conv_line + read_len, conv_line + read_len + 1, conv_len - read_len -1); + conv_len--; + retry = TRUE; + } + g_error_free (err); + } + } while (retry); + + g_free (conv_line); + + /* If any conversion has occured at all. Conversion might fail + due to errors other than invalid sequences, e.g. unknown charset. */ + if (utf_line_allocated != NULL) + { + line = utf_line_allocated; + len = utf_len; + if (serv->using_cp1255 && len > 0) + len--; + } + else + { + /* If all fails, treat as UTF-8 with fallback to ISO-8859-1. */ + utf_line_allocated = text_validate (&line, &len); + } + } + } + + fe_add_rawlog (serv, line, len, FALSE); + url_check_line (line, len); + + /* let proto-irc.c handle it */ + serv->p_inline (serv, line, len); + + if (utf_line_allocated != NULL) /* only if a special copy was allocated */ + g_free (utf_line_allocated); +} + +/* read data from socket */ + +static gboolean +server_read (GIOChannel *source, GIOCondition condition, server *serv) +{ + int sok = serv->sok; + int error, i, len; + char lbuf[2050]; + + while (1) + { +#ifdef USE_OPENSSL + if (!serv->ssl) +#endif + len = recv (sok, lbuf, sizeof (lbuf) - 2, 0); +#ifdef USE_OPENSSL + else + len = _SSL_recv (serv->ssl, lbuf, sizeof (lbuf) - 2); +#endif + if (len < 1) + { + error = 0; + if (len < 0) + { + if (would_block ()) + return TRUE; + error = sock_error (); + } + if (!serv->end_of_motd) + { + server_disconnect (serv->server_session, FALSE, error); + if (!servlist_cycle (serv)) + { + if (prefs.autoreconnect) + auto_reconnect (serv, FALSE, error); + } + } else + { + if (prefs.autoreconnect) + auto_reconnect (serv, FALSE, error); + else + server_disconnect (serv->server_session, FALSE, error); + } + return TRUE; + } + + i = 0; + + lbuf[len] = 0; + + while (i < len) + { + switch (lbuf[i]) + { + case '\r': + break; + + case '\n': + serv->linebuf[serv->pos] = 0; + server_inline (serv, serv->linebuf, serv->pos); + serv->pos = 0; + break; + + default: + serv->linebuf[serv->pos] = lbuf[i]; + if (serv->pos >= (sizeof (serv->linebuf) - 1)) + fprintf (stderr, + "*** XCHAT WARNING: Buffer overflow - shit server!\n"); + else + serv->pos++; + } + i++; + } + } +} + +static void +server_connected (server * serv) +{ + prefs.wait_on_exit = TRUE; + serv->ping_recv = time (0); + serv->connected = TRUE; + set_nonblocking (serv->sok); + serv->iotag = fe_input_add (serv->sok, FIA_READ|FIA_EX, server_read, serv); + if (!serv->no_login) + { + EMIT_SIGNAL (XP_TE_CONNECTED, serv->server_session, NULL, NULL, NULL, + NULL, 0); + if (serv->network) + { + serv->p_login (serv, + (!(((ircnet *)serv->network)->flags & FLAG_USE_GLOBAL) && + (((ircnet *)serv->network)->user)) ? + (((ircnet *)serv->network)->user) : + prefs.username, + (!(((ircnet *)serv->network)->flags & FLAG_USE_GLOBAL) && + (((ircnet *)serv->network)->real)) ? + (((ircnet *)serv->network)->real) : + prefs.realname); + } else + { + serv->p_login (serv, prefs.username, prefs.realname); + } + } else + { + EMIT_SIGNAL (XP_TE_SERVERCONNECTED, serv->server_session, NULL, NULL, + NULL, NULL, 0); + } + + server_set_name (serv, serv->servername); + fe_server_event (serv, FE_SE_CONNECT, 0); +} + +#ifdef WIN32 + +static gboolean +server_close_pipe (int *pipefd) /* see comments below */ +{ + close (pipefd[0]); /* close WRITE end first to cause an EOF on READ */ + close (pipefd[1]); /* in giowin32, and end that thread. */ + free (pipefd); + return FALSE; +} + +#endif + +static void +server_stopconnecting (server * serv) +{ + if (serv->iotag) + { + fe_input_remove (serv->iotag); + serv->iotag = 0; + } + + if (serv->joindelay_tag) + { + fe_timeout_remove (serv->joindelay_tag); + serv->joindelay_tag = 0; + } + +#ifndef WIN32 + /* kill the child process trying to connect */ + kill (serv->childpid, SIGKILL); + waitpid (serv->childpid, NULL, 0); + + close (serv->childwrite); + close (serv->childread); +#else + PostThreadMessage (serv->childpid, WM_QUIT, 0, 0); + + { + /* if we close the pipe now, giowin32 will crash. */ + int *pipefd = malloc (sizeof (int) * 2); + pipefd[0] = serv->childwrite; + pipefd[1] = serv->childread; + g_idle_add ((GSourceFunc)server_close_pipe, pipefd); + } +#endif + +#ifdef USE_OPENSSL + if (serv->ssl_do_connect_tag) + { + fe_timeout_remove (serv->ssl_do_connect_tag); + serv->ssl_do_connect_tag = 0; + } +#endif + + fe_progressbar_end (serv); + + serv->connecting = FALSE; + fe_server_event (serv, FE_SE_DISCONNECT, 0); +} + +#ifdef USE_OPENSSL +#define SSLTMOUT 90 /* seconds */ +static void +ssl_cb_info (SSL * s, int where, int ret) +{ +/* char buf[128];*/ + + + return; /* FIXME: make debug level adjustable in serverlist or settings */ + +/* snprintf (buf, sizeof (buf), "%s (%d)", SSL_state_string_long (s), where); + if (g_sess) + EMIT_SIGNAL (XP_TE_SSLMESSAGE, g_sess, buf, NULL, NULL, NULL, 0); + else + fprintf (stderr, "%s\n", buf);*/ +} + +static int +ssl_cb_verify (int ok, X509_STORE_CTX * ctx) +{ + char subject[256]; + char issuer[256]; + char buf[512]; + + +#if OPENSSL_VERSION_NUMBER >= 0x10100000L +/* OpenSSL 1.1.0 and up: */ + X509 *current_cert = X509_STORE_CTX_get_current_cert (ctx); + if (!current_cert) + return TRUE; + X509_NAME_oneline (X509_get_subject_name (current_cert), + subject, sizeof (subject)); + X509_NAME_oneline (X509_get_issuer_name (current_cert), + issuer, sizeof (issuer)); +#else +/* Pre-OpenSSL 1.1.0: */ + X509_NAME_oneline (X509_get_subject_name (ctx->current_cert), subject, + sizeof (subject)); + X509_NAME_oneline (X509_get_issuer_name (ctx->current_cert), issuer, + sizeof (issuer)); +#endif + + snprintf (buf, sizeof (buf), "* Subject: %s", subject); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, g_sess, buf, NULL, NULL, NULL, 0); + snprintf (buf, sizeof (buf), "* Issuer: %s", issuer); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, g_sess, buf, NULL, NULL, NULL, 0); + + return (TRUE); /* always ok */ +} + +static int +ssl_do_connect (server * serv) +{ + char buf[128]; + + g_sess = serv->server_session; + if (SSL_connect (serv->ssl) <= 0) + { + char err_buf[128]; + int err; + + g_sess = NULL; + if ((err = ERR_get_error ()) > 0) + { + ERR_error_string (err, err_buf); + snprintf (buf, sizeof (buf), "(%d) %s", err, err_buf); + EMIT_SIGNAL (XP_TE_CONNFAIL, serv->server_session, buf, NULL, + NULL, NULL, 0); + + if (ERR_GET_REASON (err) == SSL_R_WRONG_VERSION_NUMBER) + PrintText (serv->server_session, _("Are you sure this is a SSL capable server and port?\n")); + + server_cleanup (serv); + + if (prefs.autoreconnectonfail) + auto_reconnect (serv, FALSE, -1); + + return (0); /* remove it (0) */ + } + } + g_sess = NULL; + + if (SSL_is_init_finished (serv->ssl)) + { + struct cert_info cert_info; + struct chiper_info *chiper_info; + int verify_error; + int i; + + if (!_SSL_get_cert_info (&cert_info, serv->ssl)) + { + snprintf (buf, sizeof (buf), "* Certification info:"); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, + NULL, 0); + snprintf (buf, sizeof (buf), " Subject:"); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, + NULL, 0); + for (i = 0; cert_info.subject_word[i]; i++) + { + snprintf (buf, sizeof (buf), " %s", cert_info.subject_word[i]); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, + NULL, 0); + } + snprintf (buf, sizeof (buf), " Issuer:"); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, + NULL, 0); + for (i = 0; cert_info.issuer_word[i]; i++) + { + snprintf (buf, sizeof (buf), " %s", cert_info.issuer_word[i]); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, + NULL, 0); + } + snprintf (buf, sizeof (buf), " Public key algorithm: %s (%d bits)", + cert_info.algorithm, cert_info.algorithm_bits); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, + NULL, 0); + /*if (cert_info.rsa_tmp_bits) + { + snprintf (buf, sizeof (buf), + " Public key algorithm uses ephemeral key with %d bits", + cert_info.rsa_tmp_bits); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, + NULL, 0); + }*/ + snprintf (buf, sizeof (buf), " Sign algorithm %s", + cert_info.sign_algorithm/*, cert_info.sign_algorithm_bits*/); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, + NULL, 0); + snprintf (buf, sizeof (buf), " Valid since %s to %s", + cert_info.notbefore, cert_info.notafter); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, + NULL, 0); + } else + { + snprintf (buf, sizeof (buf), " * No Certificate"); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, + NULL, 0); + } + + chiper_info = _SSL_get_cipher_info (serv->ssl); /* static buffer */ + snprintf (buf, sizeof (buf), "* Cipher info:"); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, NULL, + 0); + snprintf (buf, sizeof (buf), " Version: %s, cipher %s (%u bits)", + chiper_info->version, chiper_info->chiper, + chiper_info->chiper_bits); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, NULL, + 0); + + verify_error = SSL_get_verify_result (serv->ssl); + switch (verify_error) + { + case X509_V_OK: + /* snprintf (buf, sizeof (buf), "* Verify OK (?)"); */ + /* EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, NULL, 0); */ + break; + case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY: + case X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE: + case X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT: + case X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN: + case X509_V_ERR_CERT_HAS_EXPIRED: + if (serv->accept_invalid_cert) + { + snprintf (buf, sizeof (buf), "* Verify E: %s.? (%d) -- Ignored", + X509_verify_cert_error_string (verify_error), + verify_error); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, + NULL, 0); + break; + } + default: + snprintf (buf, sizeof (buf), "%s.? (%d)", + X509_verify_cert_error_string (verify_error), + verify_error); + EMIT_SIGNAL (XP_TE_CONNFAIL, serv->server_session, buf, NULL, NULL, + NULL, 0); + + server_cleanup (serv); + + return (0); + } + + server_stopconnecting (serv); + + /* activate gtk poll */ + server_connected (serv); + + return (0); /* remove it (0) */ + } else + { +#if OPENSSL_VERSION_NUMBER < 0x10100000L +/* OpenSSL < 1.10 */ + if (serv->ssl->session && serv->ssl->session->time + SSLTMOUT < time (NULL)) + { +#else +/* OpenSSL 1.1.0 up */ + SSL_SESSION *session = SSL_get_session (serv->ssl); + if (session && SSL_SESSION_get_time (session) + SSLTMOUT < time (NULL)) + { +#endif + snprintf (buf, sizeof (buf), "SSL handshake timed out"); + EMIT_SIGNAL (XP_TE_CONNFAIL, serv->server_session, buf, NULL, + NULL, NULL, 0); + server_cleanup (serv); /* ->connecting = FALSE */ + + if (prefs.autoreconnectonfail) + auto_reconnect (serv, FALSE, -1); + + return (0); /* remove it (0) */ + } + + return (1); /* call it more (1) */ + } +} +#endif + +static int +timeout_auto_reconnect (server *serv) +{ + if (is_server (serv)) /* make sure it hasnt been closed during the delay */ + { + serv->recondelay_tag = 0; + if (!serv->connected && !serv->connecting && serv->server_session) + { + server_connect (serv, serv->hostname, serv->port, FALSE); + } + } + return 0; /* returning 0 should remove the timeout handler */ +} + +static void +auto_reconnect (server *serv, int send_quit, int err) +{ + session *s; + GSList *list; + int del; + + if (serv->server_session == NULL) + return; + + list = sess_list; + while (list) /* make sure auto rejoin can work */ + { + s = list->data; + if (s->type == SESS_CHANNEL && s->channel[0]) + { + strcpy (s->waitchannel, s->channel); + strcpy (s->willjoinchannel, s->channel); + } + list = list->next; + } + + if (serv->connected) + server_disconnect (serv->server_session, send_quit, err); + + del = prefs.recon_delay * 1000; + if (del < 1000) + del = 500; /* so it doesn't block the gui */ + +#ifndef WIN32 + if (err == -1 || err == 0 || err == ECONNRESET || err == ETIMEDOUT) +#else + if (err == -1 || err == 0 || err == WSAECONNRESET || err == WSAETIMEDOUT) +#endif + serv->reconnect_away = serv->is_away; + + /* is this server in a reconnect delay? remove it! */ + if (serv->recondelay_tag) + { + fe_timeout_remove (serv->recondelay_tag); + serv->recondelay_tag = 0; + } + + serv->recondelay_tag = fe_timeout_add (del, timeout_auto_reconnect, serv); + fe_server_event (serv, FE_SE_RECONDELAY, del); +} + +static void +server_flush_queue (server *serv) +{ + list_free (&serv->outbound_queue); + serv->sendq_len = 0; + fe_set_throttle (serv); +} + +#ifdef WIN32 + +static int +waitline2 (GIOChannel *source, char *buf, int bufsize) +{ + int i = 0; + int len; + + while (1) + { + if (g_io_channel_read (source, &buf[i], 1, &len) != G_IO_ERROR_NONE) + return -1; + if (buf[i] == '\n' || bufsize == i + 1) + { + buf[i] = 0; + return i; + } + i++; + } +} + +#else + +#define waitline2(source,buf,size) waitline(serv->childread,buf,size,0) + +#endif + +/* connect() successed */ + +static void +server_connect_success (server *serv) +{ +#ifdef USE_OPENSSL +#define SSLDOCONNTMOUT 300 + if (serv->use_ssl) + { + char *err; + + /* it'll be a memory leak, if connection isn't terminated by + server_cleanup() */ + serv->ssl = _SSL_socket (ctx, serv->sok); + if ((err = _SSL_set_verify (ctx, ssl_cb_verify, NULL))) + { + EMIT_SIGNAL (XP_TE_CONNFAIL, serv->server_session, err, NULL, + NULL, NULL, 0); + server_cleanup (serv); /* ->connecting = FALSE */ + return; + } + /* FIXME: it'll be needed by new servers */ + /* send(serv->sok, "STLS\r\n", 6, 0); sleep(1); */ + set_nonblocking (serv->sok); + serv->ssl_do_connect_tag = fe_timeout_add (SSLDOCONNTMOUT, + ssl_do_connect, serv); + return; + } + + serv->ssl = NULL; +#endif + server_stopconnecting (serv); /* ->connecting = FALSE */ + /* activate glib poll */ + server_connected (serv); +} + +/* receive info from the child-process about connection progress */ + +static gboolean +server_read_child (GIOChannel *source, GIOCondition condition, server *serv) +{ + session *sess = serv->server_session; + char tbuf[128]; + char outbuf[512]; + char host[100]; + char ip[100]; + char *p; + + waitline2 (source, tbuf, sizeof tbuf); + + switch (tbuf[0]) + { + case '0': /* print some text */ + waitline2 (source, tbuf, sizeof tbuf); + PrintText (serv->server_session, tbuf); + break; + case '1': /* unknown host */ + server_stopconnecting (serv); + closesocket (serv->sok4); + if (serv->proxy_sok4 != -1) + closesocket (serv->proxy_sok4); +#ifdef USE_IPV6 + if (serv->sok6 != -1) + closesocket (serv->sok6); + if (serv->proxy_sok6 != -1) + closesocket (serv->proxy_sok6); +#endif + EMIT_SIGNAL (XP_TE_UKNHOST, sess, NULL, NULL, NULL, NULL, 0); + if (!servlist_cycle (serv)) + if (prefs.autoreconnectonfail) + auto_reconnect (serv, FALSE, -1); + break; + case '2': /* connection failed */ + waitline2 (source, tbuf, sizeof tbuf); + server_stopconnecting (serv); + closesocket (serv->sok4); + if (serv->proxy_sok4 != -1) + closesocket (serv->proxy_sok4); +#ifdef USE_IPV6 + if (serv->sok6 != -1) + closesocket (serv->sok6); + if (serv->proxy_sok6 != -1) + closesocket (serv->proxy_sok6); +#endif + EMIT_SIGNAL (XP_TE_CONNFAIL, sess, errorstring (atoi (tbuf)), NULL, + NULL, NULL, 0); + if (!servlist_cycle (serv)) + if (prefs.autoreconnectonfail) + auto_reconnect (serv, FALSE, -1); + break; + case '3': /* gethostbyname finished */ + waitline2 (source, host, sizeof host); + waitline2 (source, ip, sizeof ip); + waitline2 (source, outbuf, sizeof outbuf); + EMIT_SIGNAL (XP_TE_CONNECT, sess, host, ip, outbuf, NULL, 0); +#ifdef WIN32 + if (prefs.identd) + { + if (serv->network) + identd_start ((((ircnet *)serv->network)->user) ? + (((ircnet *)serv->network)->user) : + prefs.username); + else + identd_start (prefs.username); + } +#else + snprintf (outbuf, sizeof (outbuf), "%s/auth/xchat_auth", + g_get_home_dir ()); + if (access (outbuf, X_OK) == 0) + { + snprintf (outbuf, sizeof (outbuf), "exec -d %s/auth/xchat_auth %s", + g_get_home_dir (), prefs.username); + handle_command (serv->server_session, outbuf, FALSE); + } +#endif + break; + case '4': /* success */ + waitline2 (source, tbuf, sizeof (tbuf)); +#ifdef USE_MSPROXY + serv->sok = strtol (tbuf, &p, 10); + if (*p++ == ' ') + { + serv->proxy_sok = strtol (p, &p, 10); + serv->msp_state.clientid = strtol (++p, &p, 10); + serv->msp_state.serverid = strtol (++p, &p, 10); + serv->msp_state.seq_sent = atoi (++p); + } else + serv->proxy_sok = -1; +#ifdef DEBUG_MSPROXY + printf ("Parent got main socket: %d, proxy socket: %d\n", serv->sok, serv->proxy_sok); + printf ("Client ID 0x%08x server ID 0x%08x seq_sent %d\n", serv->msp_state.clientid, serv->msp_state.serverid, serv->msp_state.seq_sent); +#endif +#else + serv->sok = atoi (tbuf); +#endif +#ifdef USE_IPV6 + /* close the one we didn't end up using */ + if (serv->sok == serv->sok4) + closesocket (serv->sok6); + else + closesocket (serv->sok4); + if (serv->proxy_sok != -1) + { + if (serv->proxy_sok == serv->proxy_sok4) + closesocket (serv->proxy_sok6); + else + closesocket (serv->proxy_sok4); + } +#endif + server_connect_success (serv); + break; + case '5': /* prefs ip discovered */ + waitline2 (source, tbuf, sizeof tbuf); + prefs.local_ip = inet_addr (tbuf); + break; + case '7': /* gethostbyname (prefs.hostname) failed */ + sprintf (outbuf, + _("Cannot resolve hostname %s\nCheck your IP Settings!\n"), + prefs.hostname); + PrintText (sess, outbuf); + break; + case '8': + PrintText (sess, _("Proxy traversal failed.\n")); + server_disconnect (sess, FALSE, -1); + break; + case '9': + waitline2 (source, tbuf, sizeof tbuf); + EMIT_SIGNAL (XP_TE_SERVERLOOKUP, sess, tbuf, NULL, NULL, NULL, 0); + break; + } + + return TRUE; +} + +/* kill all sockets & iotags of a server. Stop a connection attempt, or + disconnect if already connected. */ + +static int +server_cleanup (server * serv) +{ + fe_set_lag (serv, 0.0); + + if (serv->iotag) + { + fe_input_remove (serv->iotag); + serv->iotag = 0; + } + + if (serv->joindelay_tag) + { + fe_timeout_remove (serv->joindelay_tag); + serv->joindelay_tag = 0; + } + +#ifdef USE_OPENSSL + if (serv->ssl) + { + _SSL_close (serv->ssl); + serv->ssl = NULL; + } +#endif + + if (serv->connecting) + { + server_stopconnecting (serv); + closesocket (serv->sok4); + if (serv->proxy_sok4 != -1) + closesocket (serv->proxy_sok4); + if (serv->sok6 != -1) + closesocket (serv->sok6); + if (serv->proxy_sok6 != -1) + closesocket (serv->proxy_sok6); + return 1; + } + + if (serv->connected) + { + close_socket (serv->sok); + if (serv->proxy_sok) + close_socket (serv->proxy_sok); + serv->connected = FALSE; + serv->end_of_motd = FALSE; + return 2; + } + + /* is this server in a reconnect delay? remove it! */ + if (serv->recondelay_tag) + { + fe_timeout_remove (serv->recondelay_tag); + serv->recondelay_tag = 0; + return 3; + } + + return 0; +} + +static void +server_disconnect (session * sess, int sendquit, int err) +{ + server *serv = sess->server; + GSList *list; + char tbuf[64]; + gboolean shutup = FALSE; + + /* send our QUIT reason */ + if (sendquit && serv->connected) + { + server_sendquit (sess); + } + + fe_server_event (serv, FE_SE_DISCONNECT, 0); + + /* close all sockets & io tags */ + switch (server_cleanup (serv)) + { + case 0: /* it wasn't even connected! */ + notc_msg (sess); + return; + case 1: /* it was in the process of connecting */ + sprintf (tbuf, "%d", sess->server->childpid); + EMIT_SIGNAL (XP_TE_STOPCONNECT, sess, tbuf, NULL, NULL, NULL, 0); + return; + case 3: + shutup = TRUE; /* won't print "disconnected" in channels */ + } + + server_flush_queue (serv); + + list = sess_list; + while (list) + { + sess = (struct session *) list->data; + if (sess->server == serv) + { + if (!shutup || sess->type == SESS_SERVER) + /* print "Disconnected" to each window using this server */ + EMIT_SIGNAL (XP_TE_DISCON, sess, errorstring (err), NULL, NULL, NULL, 0); + + if (!sess->channel[0] || sess->type == SESS_CHANNEL) + clear_channel (sess); + } + list = list->next; + } + + serv->pos = 0; + serv->motd_skipped = FALSE; + serv->no_login = FALSE; + serv->servername[0] = 0; + serv->lag_sent = 0; + + notify_cleanup (); +} + +/* send a "print text" command to the parent process - MUST END IN \n! */ + +static void +proxy_error (int fd, char *msg) +{ + write (fd, "0\n", 2); + write (fd, msg, strlen (msg)); +} + +struct sock_connect +{ + char version; + char type; + guint16 port; + guint32 address; + char username[10]; +}; + +/* traverse_socks() returns: + * 0 success * + * 1 socks traversal failed */ + +static int +traverse_socks (int print_fd, int sok, char *serverAddr, int port) +{ + struct sock_connect sc; + unsigned char buf[256]; + + sc.version = 4; + sc.type = 1; + sc.port = htons (port); + sc.address = inet_addr (serverAddr); + strncpy (sc.username, prefs.username, 9); + + send (sok, (char *) &sc, 8 + strlen (sc.username) + 1, 0); + buf[1] = 0; + recv (sok, buf, 10, 0); + if (buf[1] == 90) + return 0; + + snprintf (buf, sizeof (buf), "SOCKS\tServer reported error %d,%d.\n", buf[0], buf[1]); + proxy_error (print_fd, buf); + return 1; +} + +struct sock5_connect1 +{ + char version; + char nmethods; + char method; +}; + +static int +traverse_socks5 (int print_fd, int sok, char *serverAddr, int port) +{ + struct sock5_connect1 sc1; + unsigned char *sc2; + unsigned int packetlen, addrlen; + unsigned char buf[260]; + int auth = prefs.proxy_auth && prefs.proxy_user[0] && prefs.proxy_pass[0]; + + sc1.version = 5; + sc1.nmethods = 1; + if (auth) + sc1.method = 2; /* Username/Password Authentication (UPA) */ + else + sc1.method = 0; /* NO Authentication */ + send (sok, (char *) &sc1, 3, 0); + if (recv (sok, buf, 2, 0) != 2) + goto read_error; + + if (buf[0] != 5) + { + proxy_error (print_fd, "SOCKS\tServer is not socks version 5.\n"); + return 1; + } + + /* did the server say no auth required? */ + if (buf[1] == 0) + auth = 0; + + if (auth) + { + int len_u=0, len_p=0; + + /* authentication sub-negotiation (RFC1929) */ + if (buf[1] != 2) /* UPA not supported by server */ + { + proxy_error (print_fd, "SOCKS\tServer doesn't support UPA authentication.\n"); + return 1; + } + + memset (buf, 0, sizeof(buf)); + + /* form the UPA request */ + len_u = strlen (prefs.proxy_user); + len_p = strlen (prefs.proxy_pass); + buf[0] = 1; + buf[1] = len_u; + memcpy (buf + 2, prefs.proxy_user, len_u); + buf[2 + len_u] = len_p; + memcpy (buf + 3 + len_u, prefs.proxy_pass, len_p); + + send (sok, buf, 3 + len_u + len_p, 0); + if ( recv (sok, buf, 2, 0) != 2 ) + goto read_error; + if ( buf[1] != 0 ) + { + proxy_error (print_fd, "SOCKS\tAuthentication failed. " + "Is username and password correct?\n"); + return 1; /* UPA failed! */ + } + } + else + { + if (buf[1] != 0) + { + proxy_error (print_fd, "SOCKS\tAuthentication required but disabled in settings.\n"); + return 1; + } + } + + addrlen = strlen (serverAddr); + packetlen = 4 + 1 + addrlen + 2; + sc2 = malloc (packetlen); + sc2[0] = 5; /* version */ + sc2[1] = 1; /* command */ + sc2[2] = 0; /* reserved */ + sc2[3] = 3; /* address type */ + sc2[4] = (unsigned char) addrlen; /* hostname length */ + memcpy (sc2 + 5, serverAddr, addrlen); + *((unsigned short *) (sc2 + 5 + addrlen)) = htons (port); + send (sok, sc2, packetlen, 0); + free (sc2); + + /* consume all of the reply */ + if (recv (sok, buf, 4, 0) != 4) + goto read_error; + if (buf[0] != 5 || buf[1] != 0) + { + if (buf[1] == 2) + snprintf (buf, sizeof (buf), "SOCKS\tProxy refused to connect to host (not allowed).\n"); + else + snprintf (buf, sizeof (buf), "SOCKS\tProxy failed to connect to host (error %d).\n", buf[1]); + proxy_error (print_fd, buf); + return 1; + } + if (buf[3] == 1) /* IPV4 32bit address */ + { + if (recv (sok, buf, 6, 0) != 6) + goto read_error; + } else if (buf[3] == 4) /* IPV6 128bit address */ + { + if (recv (sok, buf, 18, 0) != 18) + goto read_error; + } else if (buf[3] == 3) /* string, 1st byte is size */ + { + if (recv (sok, buf, 1, 0) != 1) /* read the string size */ + goto read_error; + packetlen = buf[0] + 2; /* can't exceed 260 */ + if (recv (sok, buf, packetlen, 0) != packetlen) + goto read_error; + } + + return 0; /* success */ + +read_error: + proxy_error (print_fd, "SOCKS\tRead error from server.\n"); + return 1; +} + +static int +traverse_wingate (int print_fd, int sok, char *serverAddr, int port) +{ + char buf[128]; + + snprintf (buf, sizeof (buf), "%s %d\r\n", serverAddr, port); + send (sok, buf, strlen (buf), 0); + + return 0; +} + +/* stuff for HTTP auth is here */ + +static void +three_to_four (char *from, char *to) +{ + static const char tab64[64]= + { + 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P', + 'Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f', + 'g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v', + 'w','x','y','z','0','1','2','3','4','5','6','7','8','9','+','/' + }; + + to[0] = tab64 [ (from[0] >> 2) & 63 ]; + to[1] = tab64 [ ((from[0] << 4) | (from[1] >> 4)) & 63 ]; + to[2] = tab64 [ ((from[1] << 2) | (from[2] >> 6)) & 63 ]; + to[3] = tab64 [ from[2] & 63 ]; +}; + +void +base64_encode (char *to, char *from, unsigned int len) +{ + while (len >= 3) + { + three_to_four (from, to); + len -= 3; + from += 3; + to += 4; + } + if (len) + { + char three[3]={0,0,0}; + int i=0; + for (i=0;i<len;i++) + three[i] = *from++; + three_to_four (three, to); + if (len == 1) + to[2] = to[3] = '='; + else if (len == 2) + to[3] = '='; + to += 4; + }; + to[0] = 0; +} + +static int +http_read_line (int print_fd, int sok, char *buf, int len) +{ +#ifdef WIN32 + /* make sure waitline() uses recv() or it'll fail on win32 */ + len = waitline (sok, buf, len, FALSE); +#else + len = waitline (sok, buf, len, TRUE); +#endif + if (len >= 1) + { + /* print the message out (send it to the parent process) */ + write (print_fd, "0\n", 2); + + if (buf[len-1] == '\r') + { + buf[len-1] = '\n'; + write (print_fd, buf, len); + } else + { + write (print_fd, buf, len); + write (print_fd, "\n", 1); + } + } + + return len; +} + +static int +traverse_http (int print_fd, int sok, char *serverAddr, int port) +{ + char buf[512]; + char auth_data[256]; + char auth_data2[252]; + int n, n2; + + n = snprintf (buf, sizeof (buf), "CONNECT %s:%d HTTP/1.0\r\n", + serverAddr, port); + if (prefs.proxy_auth) + { + n2 = snprintf (auth_data2, sizeof (auth_data2), "%s:%s", + prefs.proxy_user, prefs.proxy_pass); + base64_encode (auth_data, auth_data2, n2); + n += snprintf (buf+n, sizeof (buf)-n, "Proxy-Authorization: Basic %s\r\n", auth_data); + } + n += snprintf (buf+n, sizeof (buf)-n, "\r\n"); + send (sok, buf, n, 0); + + n = http_read_line (print_fd, sok, buf, sizeof (buf)); + /* "HTTP/1.0 200 OK" */ + if (n < 12) + return 1; + if (memcmp (buf, "HTTP/", 5) || memcmp (buf + 9, "200", 3)) + return 1; + while (1) + { + /* read until blank line */ + n = http_read_line (print_fd, sok, buf, sizeof (buf)); + if (n < 1 || (n == 1 && buf[0] == '\n')) + break; + } + return 0; +} + +static int +traverse_proxy (int print_fd, int sok, char *ip, int port, struct msproxy_state_t *state, netstore *ns_proxy, int csok4, int csok6, int *csok, char bound) +{ + switch (prefs.proxy_type) + { + case 1: + return traverse_wingate (print_fd, sok, ip, port); + case 2: + return traverse_socks (print_fd, sok, ip, port); + case 3: + return traverse_socks5 (print_fd, sok, ip, port); + case 4: + return traverse_http (print_fd, sok, ip, port); +#ifdef USE_MSPROXY + case 5: + return traverse_msproxy (sok, ip, port, state, ns_proxy, csok4, csok6, csok, bound); +#endif + } + + return 1; +} + +/* this is the child process making the connection attempt */ + +static int +server_child (server * serv) +{ + netstore *ns_server; + netstore *ns_proxy = NULL; + netstore *ns_local; + int port = serv->port; + int error; + int sok, psok; + char *hostname = serv->hostname; + char *real_hostname = NULL; + char *ip; + char *proxy_ip = NULL; + char *local_ip; + int connect_port; + char buf[512]; + char bound = 0; + + ns_server = net_store_new (); + + /* is a hostname set? - bind to it */ + if (prefs.hostname[0]) + { + ns_local = net_store_new (); + local_ip = net_resolve (ns_local, prefs.hostname, 0, &real_hostname); + if (local_ip != NULL) + { + snprintf (buf, sizeof (buf), "5\n%s\n", local_ip); + write (serv->childwrite, buf, strlen (buf)); + net_bind (ns_local, serv->sok4, serv->sok6); + bound = 1; + } else + { + write (serv->childwrite, "7\n", 2); + } + net_store_destroy (ns_local); + } + + /* first resolve where we want to connect to */ + if (!serv->dont_use_proxy && /* blocked in serverlist? */ + prefs.proxy_host[0] && + prefs.proxy_type > 0 && + prefs.proxy_use != 2) /* proxy is NOT dcc-only */ + { + snprintf (buf, sizeof (buf), "9\n%s\n", prefs.proxy_host); + write (serv->childwrite, buf, strlen (buf)); + ip = net_resolve (ns_server, prefs.proxy_host, prefs.proxy_port, + &real_hostname); + if (!ip) + { + write (serv->childwrite, "1\n", 2); + goto xit; + } + connect_port = prefs.proxy_port; + + /* if using socks4 or MS Proxy, attempt to resolve ip for irc server */ + if ((prefs.proxy_type == 2) || (prefs.proxy_type == 5)) + { + ns_proxy = net_store_new (); + proxy_ip = net_resolve (ns_proxy, hostname, port, &real_hostname); + if (!proxy_ip) + { + write (serv->childwrite, "1\n", 2); + goto xit; + } + } else /* otherwise we can just use the hostname */ + proxy_ip = strdup (hostname); + } else + { + ip = net_resolve (ns_server, hostname, port, &real_hostname); + if (!ip) + { + write (serv->childwrite, "1\n", 2); + goto xit; + } + connect_port = port; + } + + snprintf (buf, sizeof (buf), "3\n%s\n%s\n%d\n", + real_hostname, ip, connect_port); + write (serv->childwrite, buf, strlen (buf)); + + if (!serv->dont_use_proxy && (prefs.proxy_type == 5)) + error = net_connect (ns_server, serv->proxy_sok4, serv->proxy_sok6, &psok); + else + { + error = net_connect (ns_server, serv->sok4, serv->sok6, &sok); + psok = sok; + } + + if (error != 0) + { + snprintf (buf, sizeof (buf), "2\n%d\n", sock_error ()); + write (serv->childwrite, buf, strlen (buf)); + } else + { + /* connect succeeded */ + if (proxy_ip) + { + switch (traverse_proxy (serv->childwrite, psok, proxy_ip, port, &serv->msp_state, ns_proxy, serv->sok4, serv->sok6, &sok, bound)) + { + case 0: /* success */ +#ifdef USE_MSPROXY + if (!serv->dont_use_proxy && (prefs.proxy_type == 5)) + snprintf (buf, sizeof (buf), "4\n%d %d %d %d %d\n", sok, psok, serv->msp_state.clientid, serv->msp_state.serverid, + serv->msp_state.seq_sent); + else +#endif + snprintf (buf, sizeof (buf), "4\n%d\n", sok); /* success */ + write (serv->childwrite, buf, strlen (buf)); + break; + case 1: /* socks traversal failed */ + write (serv->childwrite, "8\n", 2); + break; + } + } else + { + snprintf (buf, sizeof (buf), "4\n%d\n", sok); /* success */ + write (serv->childwrite, buf, strlen (buf)); + } + } + +xit: + +#if defined (USE_IPV6) || defined (WIN32) + /* this is probably not needed */ + net_store_destroy (ns_server); + if (ns_proxy) + net_store_destroy (ns_proxy); +#endif + + /* no need to free ip/real_hostname, this process is exiting */ +#ifdef WIN32 + /* under win32 we use a thread -> shared memory, must free! */ + if (proxy_ip) + free (proxy_ip); + if (ip) + free (ip); + if (real_hostname) + free (real_hostname); +#endif + + return 0; +} + +static void +server_connect (server *serv, char *hostname, int port, int no_login) +{ + int pid, read_des[2]; + session *sess = serv->server_session; + +#ifdef USE_OPENSSL + if (!ctx && serv->use_ssl) + { + if (!(ctx = _SSL_context_init (ssl_cb_info, FALSE))) + { + fprintf (stderr, "_SSL_context_init failed\n"); + exit (1); + } + } +#endif + + if (!hostname[0]) + return; + + if (port < 0) + { + /* use default port for this server type */ + port = 6667; +#ifdef USE_OPENSSL + if (serv->use_ssl) + port = 9999; +#endif + } + port &= 0xffff; /* wrap around */ + + if (serv->connected || serv->connecting || serv->recondelay_tag) + server_disconnect (sess, TRUE, -1); + + fe_progressbar_start (sess); + + EMIT_SIGNAL (XP_TE_SERVERLOOKUP, sess, hostname, NULL, NULL, NULL, 0); + + safe_strcpy (serv->servername, hostname, sizeof (serv->servername)); + /* overlap illegal in strncpy */ + if (hostname != serv->hostname) + safe_strcpy (serv->hostname, hostname, sizeof (serv->hostname)); + +#ifdef USE_OPENSSL + if (serv->use_ssl) + { + char cert_file[256]; + + /* first try network specific cert/key */ + snprintf (cert_file, sizeof (cert_file), "%s/%s.pem", + get_xdir_fs (), server_get_network (serv, TRUE)); + if (SSL_CTX_use_certificate_file (ctx, cert_file, SSL_FILETYPE_PEM) == 1) + SSL_CTX_use_PrivateKey_file (ctx, cert_file, SSL_FILETYPE_PEM); + else + { + /* if that doesn't exist, try ~/.xchat2/client.pem */ + snprintf (cert_file, sizeof (cert_file), "%s/%s.pem", + get_xdir_fs (), "client"); + if (SSL_CTX_use_certificate_file (ctx, cert_file, SSL_FILETYPE_PEM) == 1) + SSL_CTX_use_PrivateKey_file (ctx, cert_file, SSL_FILETYPE_PEM); + } + } +#endif + + server_set_defaults (serv); + serv->connecting = TRUE; + serv->port = port; + serv->no_login = no_login; + + fe_server_event (serv, FE_SE_CONNECTING, 0); + fe_set_away (serv); + server_flush_queue (serv); + +#ifdef WIN32 + if (_pipe (read_des, 4096, _O_BINARY) < 0) +#else + if (pipe (read_des) < 0) +#endif + return; +#ifdef __EMX__ /* os/2 */ + setmode (read_des[0], O_BINARY); + setmode (read_des[1], O_BINARY); +#endif + serv->childread = read_des[0]; + serv->childwrite = read_des[1]; + + /* create both sockets now, drop one later */ + net_sockets (&serv->sok4, &serv->sok6); +#ifdef USE_MSPROXY + /* In case of MS Proxy we have a separate UDP control connection */ + if (!serv->dont_use_proxy && (prefs.proxy_type == 5)) + udp_sockets (&serv->proxy_sok4, &serv->proxy_sok6); + else +#endif + { + serv->proxy_sok4 = -1; + serv->proxy_sok6 = -1; + } + +#ifdef WIN32 + CloseHandle (CreateThread (NULL, 0, + (LPTHREAD_START_ROUTINE)server_child, + serv, 0, (DWORD *)&pid)); +#else +#ifdef LOOKUPD + rand(); /* CL: net_resolve calls rand() when LOOKUPD is set, so prepare a different seed for each child. This method giver a bigger variation in seed values than calling srand(time(0)) in the child itself. */ +#endif + switch (pid = fork ()) + { + case -1: + return; + + case 0: + /* this is the child */ + setuid (getuid ()); + server_child (serv); + _exit (0); + } +#endif + serv->childpid = pid; + serv->iotag = fe_input_add (serv->childread, FIA_READ, server_read_child, + serv); +} + +void +server_fill_her_up (server *serv) +{ + serv->connect = server_connect; + serv->disconnect = server_disconnect; + serv->cleanup = server_cleanup; + serv->flush_queue = server_flush_queue; + serv->auto_reconnect = auto_reconnect; + + proto_fill_her_up (serv); +} + +void +server_set_encoding (server *serv, char *new_encoding) +{ + char *space; + + if (serv->encoding) + { + free (serv->encoding); + /* can be left as NULL to indicate system encoding */ + serv->encoding = NULL; + serv->using_cp1255 = FALSE; + serv->using_irc = FALSE; + } + + if (new_encoding) + { + serv->encoding = strdup (new_encoding); + /* the serverlist GUI might have added a space + and short description - remove it. */ + space = strchr (serv->encoding, ' '); + if (space) + space[0] = 0; + + /* server_inline() uses these flags */ + if (!strcasecmp (serv->encoding, "CP1255") || + !strcasecmp (serv->encoding, "WINDOWS-1255")) + serv->using_cp1255 = TRUE; + else if (!strcasecmp (serv->encoding, "IRC")) + serv->using_irc = TRUE; + } +} + +server * +server_new (void) +{ + static int id = 0; + server *serv; + + serv = malloc (sizeof (struct server)); + memset (serv, 0, sizeof (struct server)); + + /* use server.c and proto-irc.c functions */ + server_fill_her_up (serv); + + serv->id = id++; + serv->sok = -1; + strcpy (serv->nick, prefs.nick1); + server_set_defaults (serv); + + serv_list = g_slist_prepend (serv_list, serv); + + fe_new_server (serv); + + return serv; +} + +int +is_server (server *serv) +{ + return g_slist_find (serv_list, serv) ? 1 : 0; +} + +void +server_set_defaults (server *serv) +{ + if (serv->chantypes) + free (serv->chantypes); + if (serv->chanmodes) + free (serv->chanmodes); + if (serv->nick_prefixes) + free (serv->nick_prefixes); + if (serv->nick_modes) + free (serv->nick_modes); + + serv->chantypes = strdup ("#&!+"); + serv->chanmodes = strdup ("beI,k,l"); + serv->nick_prefixes = strdup ("@%+"); + serv->nick_modes = strdup ("ohv"); + + serv->nickcount = 1; + serv->nickservtype = 1; + serv->end_of_motd = FALSE; + serv->is_away = FALSE; + serv->supports_watch = FALSE; + serv->bad_prefix = FALSE; + serv->use_who = TRUE; + serv->have_namesx = FALSE; + serv->have_uhnames = FALSE; + serv->have_whox = FALSE; + serv->have_capab = FALSE; + serv->have_idmsg = FALSE; + serv->have_except = FALSE; +} + +char * +server_get_network (server *serv, gboolean fallback) +{ + if (serv->network) + return ((ircnet *)serv->network)->name; + + if (fallback) + return serv->servername; + + return NULL; +} + +void +server_set_name (server *serv, char *name) +{ + GSList *list = sess_list; + session *sess; + + if (name[0] == 0) + name = serv->hostname; + + /* strncpy parameters must NOT overlap */ + if (name != serv->servername) + { + safe_strcpy (serv->servername, name, sizeof (serv->servername)); + } + + while (list) + { + sess = (session *) list->data; + if (sess->server == serv) + fe_set_title (sess); + list = list->next; + } + + if (serv->server_session->type == SESS_SERVER) + { + if (serv->network) + { + safe_strcpy (serv->server_session->channel, ((ircnet *)serv->network)->name, CHANLEN); + } else + { + safe_strcpy (serv->server_session->channel, name, CHANLEN); + } + fe_set_channel (serv->server_session); + } +} + +struct away_msg * +server_away_find_message (server *serv, char *nick) +{ + struct away_msg *away; + GSList *list = away_list; + while (list) + { + away = (struct away_msg *) list->data; + if (away->server == serv && !serv->p_cmp (nick, away->nick)) + return away; + list = list->next; + } + return NULL; +} + +static void +server_away_free_messages (server *serv) +{ + GSList *list, *next; + struct away_msg *away; + + list = away_list; + while (list) + { + away = list->data; + next = list->next; + if (away->server == serv) + { + away_list = g_slist_remove (away_list, away); + if (away->message) + free (away->message); + free (away); + next = away_list; + } + list = next; + } +} + +void +server_away_save_message (server *serv, char *nick, char *msg) +{ + struct away_msg *away = server_away_find_message (serv, nick); + + if (away) /* Change message for known user */ + { + if (away->message) + free (away->message); + away->message = strdup (msg); + } else + /* Create brand new entry */ + { + away = malloc (sizeof (struct away_msg)); + if (away) + { + away->server = serv; + safe_strcpy (away->nick, nick, sizeof (away->nick)); + away->message = strdup (msg); + away_list = g_slist_prepend (away_list, away); + } + } +} + +void +server_free (server *serv) +{ + serv->cleanup (serv); + + serv_list = g_slist_remove (serv_list, serv); + + dcc_notify_kill (serv); + serv->flush_queue (serv); + server_away_free_messages (serv); + + free (serv->nick_modes); + free (serv->nick_prefixes); + free (serv->chanmodes); + free (serv->chantypes); + if (serv->bad_nick_prefixes) + free (serv->bad_nick_prefixes); + if (serv->last_away_reason) + free (serv->last_away_reason); + if (serv->encoding) + free (serv->encoding); + if (serv->autojoin) + free (serv->autojoin); + + fe_server_callback (serv); + + free (serv); + + notify_cleanup (); +} diff --git a/etc/wyatt8740/src/common/server.h b/etc/wyatt8740/src/common/server.h new file mode 100644 index 0000000..874d27b --- /dev/null +++ b/etc/wyatt8740/src/common/server.h @@ -0,0 +1,26 @@ +#ifndef XCHAT_SERVER_H +#define XCHAT_SERVER_H + +extern GSList *serv_list; + +/* eventually need to keep the tcp_* functions isolated to server.c */ +int tcp_send_len (server *serv, char *buf, int len); +int tcp_send (server *serv, char *buf); +void tcp_sendf (server *serv, char *fmt, ...); +int tcp_send_real (void *ssl, int sok, char *encoding, int using_irc, char *buf, int len); + +server *server_new (void); +int is_server (server *serv); +void server_fill_her_up (server *serv); +void server_set_encoding (server *serv, char *new_encoding); +void server_set_defaults (server *serv); +char *server_get_network (server *serv, gboolean fallback); +void server_set_name (server *serv, char *name); +void server_free (server *serv); + +void server_away_save_message (server *serv, char *nick, char *msg); +struct away_msg *server_away_find_message (server *serv, char *nick); + +void base64_encode (char *to, char *from, unsigned int len); + +#endif diff --git a/etc/wyatt8740/src/common/servlist.c b/etc/wyatt8740/src/common/servlist.c new file mode 100644 index 0000000..86e5e50 --- /dev/null +++ b/etc/wyatt8740/src/common/servlist.c @@ -0,0 +1,1331 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <unistd.h> + +#include "xchat.h" +#include <glib.h> + +#include "cfgfiles.h" +#include "fe.h" +#include "server.h" +#include "text.h" +#include "util.h" /* token_foreach */ +#include "xchatc.h" + +#include "servlist.h" + + +struct defaultserver +{ + char *network; + char *host; + char *channel; + char *charset; +}; + +static const struct defaultserver def[] = +{ + {"Debian Servers", 0, "#debian"}, + {0, "irc.debian.org"}, + + {"Ubuntu Servers", 0, "#ubuntu"}, + {0, "irc.ubuntu.com"}, + + {"2600net", 0}, + {0, "irc.2600.net"}, + + {"7-indonesia", 0}, + {0, "irc.7-indonesia.org"}, + + {"AccessIRC", 0}, + {0, "irc.accessirc.net"}, + {0, "eu.accessirc.net"}, + + {"AfterNET", 0}, + {0, "irc.afternet.org"}, + {0, "us.afternet.org"}, + {0, "eu.afternet.org"}, + + {"Aitvaras", 0}, +#ifdef USE_IPV6 +#ifdef USE_OPENSSL + {0, "irc6.ktu.lt/+7668"}, +#endif + {0, "irc6.ktu.lt/7666"}, +#endif +#ifdef USE_OPENSSL + {0, "irc.data.lt/+6668"}, + {0, "irc-ssl.omnitel.net/+6668"}, + {0, "irc-ssl.le.lt/+9999"}, +#endif + {0, "irc.data.lt"}, + {0, "irc.omnitel.net"}, + {0, "irc.ktu.lt"}, + {0, "irc.le.lt"}, + {0, "irc.takas.lt"}, + {0, "irc.5ci.net"}, + {0, "irc.kis.lt"}, + + {"AmigaNet", 0}, + {0, "irc.amiganet.org"}, + {0, "us.amiganet.org"}, + {0, "uk.amiganet.org"}, +/* {0, "no.amiganet.org"}, + {0, "au.amiganet.org"},*/ + + {"ARCNet", 0}, + {0, "se1.arcnet.vapor.com"}, + {0, "us1.arcnet.vapor.com"}, + {0, "us2.arcnet.vapor.com"}, + {0, "us3.arcnet.vapor.com"}, + {0, "ca1.arcnet.vapor.com"}, + {0, "de1.arcnet.vapor.com"}, + {0, "de3.arcnet.vapor.com"}, + {0, "ch1.arcnet.vapor.com"}, + {0, "be1.arcnet.vapor.com"}, + {0, "nl3.arcnet.vapor.com"}, + {0, "uk1.arcnet.vapor.com"}, + {0, "uk2.arcnet.vapor.com"}, +/* {0, "uk3.arcnet.vapor.com"},*/ + {0, "fr1.arcnet.vapor.com"}, + + {"AstroLink", 0}, + {0, "irc.astrolink.org"}, + + {"AustNet", 0}, + {0, "au.austnet.org"}, + {0, "us.austnet.org"}, + {0, "ca.austnet.org"}, + +/* {"AxeNet", 0}, + {0, "irc.axenet.org"}, + {0, "angel.axenet.org"}, + {0, "energy.axenet.org"}, + {0, "python.axenet.org"},*/ + + {"AzzurraNet", 0}, + {0, "irc.azzurra.org"}, + {0, "crypto.azzurra.org"}, + + {"Beirut", 0}, + {0, "irc.beirut.com"}, + + {"ChattingAway", 0}, + {0, "irc.chattingaway.com"}, + + {"ChatJunkies", 0, "#xchat"}, + {0, "irc.chatjunkies.org"}, + {0, "nl.chatjunkies.org"}, + + {"ChatNet", 0}, + {0, "US.ChatNet.Org"}, + {0, "EU.ChatNet.Org"}, + + {"ChatSociety", 0}, + {0, "us.chatsociety.net"}, + {0, "eu.chatsociety.net"}, + + {"ChatSpike", 0}, + {0, "irc.chatspike.net"}, + + {"CoolChat", 0}, + {0, "irc.coolchat.net"}, +/* {0, "unix.coolchat.net"}, + {0, "toronto.coolchat.net"},*/ + + {"Criten", 0}, + {0, "irc.criten.net"}, + {0, "irc.eu.criten.net"}, + + {"DALnet", 0}, + {0, "irc.dal.net"}, + {0, "irc.eu.dal.net"}, + + {"Dark-Tou-Net", 0}, + {0, "irc.d-t-net.de"}, + {0, "bw.d-t-net.de"}, + {0, "nc.d-t-net.de"}, + {0, "wakka.d-t-net.de"}, + + {"DarkMyst", 0}, + {0, "irc.darkmyst.org"}, + + {"DeepIRC", 0}, + {0, "irc.deepirc.net"}, + + {"DeltaAnime", 0}, + {0, "irc.deltaanime.net"}, + + {"EFnet", 0}, + {0, "irc.blackened.com"}, + {0, "irc.Prison.NET"}, + {0, "irc.Qeast.net"}, + {0, "irc.efnet.pl"}, + {0, "efnet.demon.co.uk"}, +/* {0, "irc.lagged.org"},*/ + {0, "irc.lightning.net"}, + {0, "irc.mindspring.com"}, + {0, "irc.easynews.com"}, + {0, "irc.servercentral.net"}, + + {"EnterTheGame", 0}, + {0, "IRC.EnterTheGame.Com"}, + + {"EUIrc", 0}, + {0, "irc.euirc.net"}, + {0, "irc.ham.de.euirc.net"}, + {0, "irc.ber.de.euirc.net"}, + {0, "irc.ffm.de.euirc.net"}, + {0, "irc.bre.de.euirc.net"}, + {0, "irc.hes.de.euirc.net"}, + {0, "irc.vie.at.euirc.net"}, + {0, "irc.inn.at.euirc.net"}, + {0, "irc.bas.ch.euirc.net"}, + + {"EuropNet", 0}, + {0, "irc.europnet.org"}, + + {"EU-IRC", 0}, + {0, "irc.eu-irc.net"}, + + {"FDFNet", 0}, + {0, "irc.fdfnet.net"}, + {0, "irc.eu.fdfnet.net"}, + + {"FEFNet", 0}, + {0, "irc.fef.net"}, + {0, "irc.ggn.net"}, + {0, "irc.vendetta.com"}, + + {"FreeNode", 0}, + {0, "irc.freenode.net"}, + +/* {"Freeworld", 0}, + {0, "kabel.freeworld.nu"}, + {0, "irc.freeworld.nu"},*/ + + {"GalaxyNet", 0}, + {0, "irc.galaxynet.org"}, +/* {0, "sprynet.us.galaxynet.org"}, + {0, "atlanta.ga.us.galaxynet.org"},*/ + + {"GamesNET", 0}, + {0, "irc.gamesnet.net"}, +/* {0, "irc.us.gamesnet.net"}, + {0, "east.us.gamesnet.net"}, + {0, "west.us.gamesnet.net"},*/ + {0, "irc.ca.gamesnet.net"}, + {0, "irc.eu.gamesnet.net"}, + + {"GeekShed", 0}, + {0, "irc.geekshed.net"}, + + {"German-Elite", 0}, + {0, "dominion.german-elite.net"}, + {0, "komatu.german-elite.net"}, +/* {0, "liberty.german-elite.net"},*/ + + {"GimpNet", 0}, + {0, "irc.gimp.org"}, +/* {0, "irc.au.gimp.org"},*/ + {0, "irc.us.gimp.org"}, + + {"HabberNet", 0}, + {0, "irc.habber.net"}, + + {"Hashmark", 0}, + {0, "irc.hashmark.net"}, + + {"IdleMonkeys", 0}, + {0, "irc.idlemonkeys.net"}, + +/* {"Infinity-IRC", 0}, + {0, "Atlanta.GA.US.Infinity-IRC.Org"}, + {0, "Babylon.NY.US.Infinity-IRC.Org"}, + {0, "Sunshine.Ca.US.Infinity-IRC.Org"}, + {0, "IRC.Infinity-IRC.Org"},*/ + + {"iZ-smart.net", 0}, + {0, "irc.iZ-smart.net/6666"}, + {0, "irc.iZ-smart.net/6667"}, + {0, "irc.iZ-smart.net/6668"}, + + {"IrcLink", 0}, + {0, "irc.irclink.net"}, + {0, "Alesund.no.eu.irclink.net"}, + {0, "Oslo.no.eu.irclink.net"}, + {0, "frogn.no.eu.irclink.net"}, + {0, "tonsberg.no.eu.irclink.net"}, + + {"IRCNet", 0}, + {0, "irc.ircnet.com"}, + {0, "irc.stealth.net/6668"}, + {0, "ircnet.demon.co.uk"}, +/* {0, "ircnet.hinet.hr"},*/ + {0, "irc.datacomm.ch"}, +/* {0, "ircnet.kaptech.fr"}, + {0, "ircnet.easynet.co.uk"},*/ + {0, "random.ircd.de"}, + {0, "ircnet.netvision.net.il"}, +/* {0, "irc.seed.net.tw"},*/ + {0, "irc.cs.hut.fi"}, + + {"Irctoo.net", 0}, + {0, "irc.irctoo.net"}, + + {"Krstarica", 0}, + {0, "irc.krstarica.com"}, + + {"Librenet", 0}, + {0, "irc.librenet.net"}, + {0, "ielf.fr.librenet.net"}, + + {"LinkNet", 0}, + {0, "irc.link-net.org"}, + {0, "irc.no.link-net.org"}, +/* {0, "irc.gamesden.net.au"},*/ + {0, "irc.bahnhof.se"}, +/* {0, "irc.kinexuseurope.co.uk"}, + {0, "irc.gamiix.com"},*/ + + {"MagicStar", 0}, + {0, "irc.magicstar.net"}, + + {"Majistic", 0}, + {0, "irc.majistic.net"}, + + {"MindForge", 0}, + {0, "irc.mindforge.org"}, + + {"MintIRC", 0}, + {0, "irc.mintirc.net"}, + + {"MIXXnet", 0}, + {0, "irc.mixxnet.net"}, + + {"NeverNET", 0}, + {0, "irc.nevernet.net"}, + {0, "imagine.nevernet.net"}, + {0, "dimension.nevernet.net"}, + {0, "universe.nevernet.net"}, + {0, "wayland.nevernet.net"}, + {0, "forte.nevernet.net"}, + + {"NixHelpNet", 0}, + {0, "irc.nixhelp.org"}, + {0, "us.nixhelp.org"}, + {0, "uk.nixhelp.org"}, + {0, "uk2.nixhelp.org"}, + {0, "uk3.nixhelp.org"}, + {0, "nl.nixhelp.org"}, + {0, "ca.ld.nixhelp.org"}, + {0, "us.co.nixhelp.org"}, + {0, "us.ca.nixhelp.org"}, + {0, "us.pa.nixhelp.org"}, + + {"NullusNet", 0}, + {0, "irc.nullus.net"}, + + {"Oceanius", 0}, + {0, "irc.oceanius.com"}, + + {"OFTC", 0}, + {0, "irc.oftc.net"}, + + {"OtherNet", 0}, + {0, "irc.othernet.org"}, + + {"OzNet", 0}, + {0, "irc.oz.org"}, + + {"PTlink", 0}, + {0, "irc.PTlink.net"}, + {0, "aaia.PTlink.net"}, + + {"PTNet, ISP's", 0}, + {0, "irc.PTNet.org"}, + {0, "rccn.PTnet.org"}, + {0, "EUnet.PTnet.org"}, + {0, "madinfo.PTnet.org"}, + {0, "netc2.PTnet.org"}, + {0, "netc1.PTnet.org"}, + {0, "telepac1.ptnet.org"}, + {0, "esoterica.PTnet.org"}, + {0, "ip-hub.ptnet.org"}, + {0, "telepac1.ptnet.org"}, + {0, "nortenet.PTnet.org"}, + + {"PTNet, UNI", 0}, + {0, "irc.PTNet.org"}, + {0, "rccn.PTnet.org"}, + {0, "uevora.PTnet.org"}, + {0, "umoderna.PTnet.org"}, + {0, "ist.PTnet.org"}, + {0, "aaum.PTnet.org"}, + {0, "uc.PTnet.org"}, + {0, "ualg.ptnet.org"}, + {0, "madinfo.PTnet.org"}, +/* {0, "isep.PTnet.org"},*/ + {0, "ua.PTnet.org"}, + {0, "ipg.PTnet.org"}, + {0, "isec.PTnet.org"}, + {0, "utad.PTnet.org"}, + {0, "iscte.PTnet.org"}, + {0, "ubi.PTnet.org"}, + + {"QuakeNet", 0}, + {0, "irc.quakenet.org"}, + {0, "irc.se.quakenet.org"}, + {0, "irc.dk.quakenet.org"}, + {0, "irc.no.quakenet.org"}, + {0, "irc.fi.quakenet.org"}, + {0, "irc.be.quakenet.org"}, + {0, "irc.uk.quakenet.org"}, + {0, "irc.de.quakenet.org"}, + {0, "irc.it.quakenet.org"}, + + {"RebelChat", 0}, + {0, "irc.rebelchat.org"}, + +/* {"Recycled-IRC", 0}, + {0, "irc.recycled-irc.org"}, + {0, "vermin.recycled-irc.org"}, + {0, "waste.recycled-irc.org"}, + {0, "lumber.recycled-irc.org"}, + {0, "trash.recycled-irc.org"}, + {0, "unwashed.recycled-irc.org"}, + {0, "garbage.recycled-irc.org"}, + {0, "dustbin.recycled-irc.org"},*/ + + {"RizeNET", 0}, + {0, "irc.rizenet.org"}, + {0, "omega.rizenet.org"}, + {0, "evelance.rizenet.org"}, + {0, "lisa.rizenet.org"}, + {0, "scott.rizenet.org"}, + + {"Rizon", 0}, + {0, "irc.rizon.net"}, + + {"RusNet", 0, 0, "KOI8-R (Cyrillic)"}, + {0, "irc.tomsk.net"}, + {0, "irc.rinet.ru"}, + {0, "irc.run.net"}, + {0, "irc.ru"}, + {0, "irc.lucky.net"}, + + {"SceneNet", 0}, + {0, "irc.scene.org"}, + {0, "irc.eu.scene.org"}, + {0, "irc.us.scene.org"}, + + {"SeilEn.de", 0}, + {0, "irc.seilen.de"}, + + {"SlashNET", 0}, + {0, "irc.slashnet.org"}, + {0, "area51.slashnet.org"}, + {0, "moo.slashnet.org"}, + {0, "radon.slashnet.org"}, + + {"Sohbet.Net", 0}, + {0, "irc.sohbet.net"}, + + {"SolidIRC", 0}, + {0, "irc.solidirc.com"}, + + {"SorceryNet", 0}, + {0, "irc.sorcery.net/9000"}, + {0, "irc.us.sorcery.net/9000"}, + {0, "irc.eu.sorcery.net/9000"}, + + {"Spidernet", 0}, + {0, "us.spidernet.org"}, + {0, "eu.spidernet.org"}, + {0, "irc.spidernet.org"}, + + {"StarChat", 0}, + {0, "irc.starchat.net"}, + {0, "gainesville.starchat.net"}, + {0, "freebsd.starchat.net"}, + {0, "sunset.starchat.net"}, + {0, "revenge.starchat.net"}, + {0, "tahoma.starchat.net"}, + {0, "neo.starchat.net"}, + + {"TNI3", 0}, + {0, "irc.tni3.com"}, + + {"TURLINet", 0}, + {0, "irc.turli.net"}, + {0, "irc.servx.ru"}, + {0, "irc.gavnos.ru"}, + + {"UnderNet", 0}, + {0, "us.undernet.org"}, + {0, "eu.undernet.org"}, + + {"UniBG", 0}, + {0, "irc.lirex.com"}, + {0, "irc.naturella.com"}, + {0, "irc.spnet.net"}, + {0, "irc.techno-link.com"}, + {0, "irc.telecoms.bg"}, + {0, "irc.tu-varna.edu"}, + + {"Whiffle", 0}, + {0, "irc.whiffle.org"}, + + {"Worldnet", 0}, + {0, "irc.worldnet.net"}, + {0, "irc.fr.worldnet.net"}, + + {"Xentonix.net", 0}, + {0, "irc.xentonix.net"}, + + {"XWorld", 0}, + {0, "Buffalo.NY.US.XWorld.org"}, + {0, "Minneapolis.MN.US.Xworld.Org"}, + {0, "Rochester.NY.US.XWorld.org"}, + {0, "Bayern.DE.EU.XWorld.Org"}, + {0, "Chicago.IL.US.XWorld.Org"}, + + {0,0} +}; + +GSList *network_list = 0; + + +void +servlist_connect (session *sess, ircnet *net, gboolean join) +{ + ircserver *ircserv; + GSList *list; + char *port; + server *serv; + + if (!sess) + sess = new_ircwindow (NULL, NULL, SESS_SERVER, TRUE); + + serv = sess->server; + + /* connect to the currently selected Server-row */ + list = g_slist_nth (net->servlist, net->selected); + if (!list) + list = net->servlist; + if (!list) + return; + ircserv = list->data; + + /* incase a protocol switch is added to the servlist gui */ + server_fill_her_up (sess->server); + + if (join) + { + sess->willjoinchannel[0] = 0; + + if (net->autojoin) + { + if (serv->autojoin) + free (serv->autojoin); + serv->autojoin = strdup (net->autojoin); + } + } + + serv->password[0] = 0; + if (net->pass) + safe_strcpy (serv->password, net->pass, sizeof (serv->password)); + + if (net->flags & FLAG_USE_GLOBAL) + { + strcpy (serv->nick, prefs.nick1); + } else + { + if (net->nick) + strcpy (serv->nick, net->nick); + } + + serv->dont_use_proxy = (net->flags & FLAG_USE_PROXY) ? FALSE : TRUE; + +#ifdef USE_OPENSSL + serv->use_ssl = (net->flags & FLAG_USE_SSL) ? TRUE : FALSE; + serv->accept_invalid_cert = + (net->flags & FLAG_ALLOW_INVALID) ? TRUE : FALSE; +#endif + + serv->network = net; + + port = strrchr (ircserv->hostname, '/'); + if (port) + { + *port = 0; + + /* support "+port" to indicate SSL (like mIRC does) */ + if (port[1] == '+') + { +#ifdef USE_OPENSSL + serv->use_ssl = TRUE; +#endif + serv->connect (serv, ircserv->hostname, atoi (port + 2), FALSE); + } else + { + serv->connect (serv, ircserv->hostname, atoi (port + 1), FALSE); + } + + *port = '/'; + } else + serv->connect (serv, ircserv->hostname, -1, FALSE); + + server_set_encoding (serv, net->encoding); +} + +int +servlist_connect_by_netname (session *sess, char *network, gboolean join) +{ + ircnet *net; + GSList *list = network_list; + + while (list) + { + net = list->data; + + if (strcasecmp (net->name, network) == 0) + { + servlist_connect (sess, net, join); + return 1; + } + + list = list->next; + } + + return 0; +} + +int +servlist_have_auto (void) +{ + GSList *list = network_list; + ircnet *net; + + while (list) + { + net = list->data; + + if (net->flags & FLAG_AUTO_CONNECT) + return 1; + + list = list->next; + } + + return 0; +} + +int +servlist_auto_connect (session *sess) +{ + GSList *list = network_list; + ircnet *net; + int ret = 0; + + while (list) + { + net = list->data; + + if (net->flags & FLAG_AUTO_CONNECT) + { + servlist_connect (sess, net, TRUE); + ret = 1; + } + + list = list->next; + } + + return ret; +} + +static gint +servlist_cycle_cb (server *serv) +{ + if (serv->network) + { + PrintTextf (serv->server_session, + _("Cycling to next server in %s...\n"), ((ircnet *)serv->network)->name); + servlist_connect (serv->server_session, serv->network, TRUE); + } + + return 0; +} + +int +servlist_cycle (server *serv) +{ + ircnet *net; + int max, del; + + net = serv->network; + if (net) + { + max = g_slist_length (net->servlist); + if (max > 0) + { + /* try the next server, if that option is on */ + if (net->flags & FLAG_CYCLE) + { + net->selected++; + if (net->selected >= max) + net->selected = 0; + } + + del = prefs.recon_delay * 1000; + if (del < 1000) + del = 500; /* so it doesn't block the gui */ + + if (del) + serv->recondelay_tag = fe_timeout_add (del, servlist_cycle_cb, serv); + else + servlist_connect (serv->server_session, net, TRUE); + + return TRUE; + } + } + + return FALSE; +} + +ircserver * +servlist_server_find (ircnet *net, char *name, int *pos) +{ + GSList *list = net->servlist; + ircserver *serv; + int i = 0; + + while (list) + { + serv = list->data; + if (strcmp (serv->hostname, name) == 0) + { + if (pos) + *pos = i; + return serv; + } + i++; + list = list->next; + } + + return NULL; +} + +/* find a network (e.g. (ircnet *) to "FreeNode") from a hostname + (e.g. "irc.eu.freenode.net") */ + +ircnet * +servlist_net_find_from_server (char *server_name) +{ + GSList *list = network_list; + GSList *slist; + ircnet *net; + ircserver *serv; + + while (list) + { + net = list->data; + + slist = net->servlist; + while (slist) + { + serv = slist->data; + if (strcasecmp (serv->hostname, server_name) == 0) + return net; + slist = slist->next; + } + + list = list->next; + } + + return NULL; +} + +ircnet * +servlist_net_find (char *name, int *pos, int (*cmpfunc) (const char *, const char *)) +{ + GSList *list = network_list; + ircnet *net; + int i = 0; + + while (list) + { + net = list->data; + if (cmpfunc (net->name, name) == 0) + { + if (pos) + *pos = i; + return net; + } + i++; + list = list->next; + } + + return NULL; +} + +ircserver * +servlist_server_add (ircnet *net, char *name) +{ + ircserver *serv; + + serv = malloc (sizeof (ircserver)); + memset (serv, 0, sizeof (ircserver)); + serv->hostname = strdup (name); + + net->servlist = g_slist_append (net->servlist, serv); + + return serv; +} + +void +servlist_server_remove (ircnet *net, ircserver *serv) +{ + free (serv->hostname); + free (serv); + net->servlist = g_slist_remove (net->servlist, serv); +} + +static void +servlist_server_remove_all (ircnet *net) +{ + ircserver *serv; + + while (net->servlist) + { + serv = net->servlist->data; + servlist_server_remove (net, serv); + } +} + +static void +free_and_clear (char *str) +{ + if (str) + { + char *orig = str; + while (*str) + *str++ = 0; + free (orig); + } +} + +/* executed on exit: Clear any password strings */ + +void +servlist_cleanup (void) +{ + GSList *list; + ircnet *net; + + for (list = network_list; list; list = list->next) + { + net = list->data; + free_and_clear (net->pass); + free_and_clear (net->nickserv); + } +} + +void +servlist_net_remove (ircnet *net) +{ + GSList *list; + server *serv; + + servlist_server_remove_all (net); + network_list = g_slist_remove (network_list, net); + + if (net->nick) + free (net->nick); + if (net->nick2) + free (net->nick2); + if (net->user) + free (net->user); + if (net->real) + free (net->real); + free_and_clear (net->pass); + if (net->autojoin) + free (net->autojoin); + if (net->command) + free (net->command); + free_and_clear (net->nickserv); + if (net->comment) + free (net->comment); + if (net->encoding) + free (net->encoding); + free (net->name); + free (net); + + /* for safety */ + list = serv_list; + while (list) + { + serv = list->data; + if (serv->network == net) + serv->network = NULL; + list = list->next; + } +} + +ircnet * +servlist_net_add (char *name, char *comment, int prepend) +{ + ircnet *net; + + net = malloc (sizeof (ircnet)); + memset (net, 0, sizeof (ircnet)); + net->name = strdup (name); +/* net->comment = strdup (comment);*/ + net->flags = FLAG_CYCLE | FLAG_USE_GLOBAL | FLAG_USE_PROXY; + + if (prepend) + network_list = g_slist_prepend (network_list, net); + else + network_list = g_slist_append (network_list, net); + + return net; +} + +static void +servlist_load_defaults (void) +{ + int i = 0, j = 0; + ircnet *net = NULL; + + while (1) + { + if (def[i].network) + { + net = servlist_net_add (def[i].network, def[i].host, FALSE); + net->encoding = strdup ("IRC (Latin/Unicode Hybrid)"); + if (def[i].channel) + net->autojoin = strdup (def[i].channel); + if (def[i].charset) + { + free (net->encoding); + net->encoding = strdup (def[i].charset); + } + if (g_str_hash (def[i].network) == 0x37473b25) + prefs.slist_select = j; + j++; + } else + { + servlist_server_add (net, def[i].host); + if (!def[i+1].host && !def[i+1].network) + break; + } + i++; + } +} + +static int +servlist_load (void) +{ + FILE *fp; + char buf[2048]; + int len; + char *tmp; + ircnet *net = NULL; + + fp = xchat_fopen_file ("servlist_.conf", "r", 0); + if (!fp) + return FALSE; + + while (fgets (buf, sizeof (buf) - 2, fp)) + { + len = strlen (buf); + buf[len] = 0; + buf[len-1] = 0; /* remove the trailing \n */ + if (net) + { + switch (buf[0]) + { + case 'I': + net->nick = strdup (buf + 2); + break; + case 'i': + net->nick2 = strdup (buf + 2); + break; + case 'U': + net->user = strdup (buf + 2); + break; + case 'R': + net->real = strdup (buf + 2); + break; + case 'P': + net->pass = strdup (buf + 2); + break; + case 'J': + net->autojoin = strdup (buf + 2); + break; + case 'C': + if (net->command) + { + /* concat extra commands with a \n separator */ + tmp = net->command; + net->command = malloc (strlen (tmp) + strlen (buf + 2) + 2); + strcpy (net->command, tmp); + strcat (net->command, "\n"); + strcat (net->command, buf + 2); + free (tmp); + } else + net->command = strdup (buf + 2); + break; + case 'F': + net->flags = atoi (buf + 2); + break; + case 'D': + net->selected = atoi (buf + 2); + break; + case 'E': + net->encoding = strdup (buf + 2); + break; + case 'S': /* new server/hostname for this network */ + servlist_server_add (net, buf + 2); + break; + case 'B': + net->nickserv = strdup (buf + 2); + break; + } + } + if (buf[0] == 'N') + net = servlist_net_add (buf + 2, /* comment */ NULL, FALSE); + } + fclose (fp); + + return TRUE; +} + +void +servlist_init (void) +{ + if (!network_list) + if (!servlist_load ()) + servlist_load_defaults (); +} + +/* check if a charset is known by Iconv */ +int +servlist_check_encoding (char *charset) +{ + GIConv gic; + char *c; + + c = strchr (charset, ' '); + if (c) + c[0] = 0; + + if (!strcasecmp (charset, "IRC")) /* special case */ + { + if (c) + c[0] = ' '; + return TRUE; + } + + gic = g_iconv_open (charset, "UTF-8"); + + if (c) + c[0] = ' '; + + if (gic != (GIConv)-1) + { + g_iconv_close (gic); + return TRUE; + } + + return FALSE; +} + +static int +servlist_write_ccmd (char *str, void *fp) +{ + return fprintf (fp, "C=%s\n", (str[0] == '/') ? str + 1 : str); +} + + +int +servlist_save (void) +{ + FILE *fp; + int nb; + char buf[256]; + ircnet *net; + ircserver *serv; + GSList *list; + GSList *hlist; +#ifndef WIN32 + int first = FALSE; + + snprintf (buf, sizeof (buf), "%s/servlist_.conf.bug147832", get_xdir_fs ()); + if (access (buf, F_OK) != 0) + first = TRUE; +#endif + + fp = xchat_fopen_file ("servlist_.conf.bug147832", "w", 0); + if (!fp) + return FALSE; + +#ifndef WIN32 + if (first) + chmod (buf, 0600); +#endif + nb = fprintf (fp, "v="PACKAGE_VERSION"\n\n"); + + list = network_list; + while (list) + { + net = list->data; + + if( nb > 0 ) nb = fprintf (fp, "N=%s\n", net->name); + if (net->nick) + if( nb > 0 ) nb = fprintf (fp, "I=%s\n", net->nick); + if (net->nick2) + if( nb > 0 ) nb = fprintf (fp, "i=%s\n", net->nick2); + if (net->user) + if( nb > 0 ) nb = fprintf (fp, "U=%s\n", net->user); + if (net->real) + if( nb > 0 ) nb = fprintf (fp, "R=%s\n", net->real); + if (net->pass) + if( nb > 0 ) nb = fprintf (fp, "P=%s\n", net->pass); + if (net->autojoin) + if( nb > 0 ) nb = fprintf (fp, "J=%s\n", net->autojoin); + if (net->nickserv) + if( nb > 0 ) nb = fprintf (fp, "B=%s\n", net->nickserv); + if (net->encoding && strcasecmp (net->encoding, "System") && + strcasecmp (net->encoding, "System default")) + { + if( nb > 0 ) nb = fprintf (fp, "E=%s\n", net->encoding); + if (!servlist_check_encoding (net->encoding)) + { + snprintf (buf, sizeof (buf), _("Warning: \"%s\" character set is unknown. No conversion will be applied for network %s."), + net->encoding, net->name); + fe_message (buf, FE_MSG_WARN); + } + } + + if (net->command) + if( nb > 0 ) + if( token_foreach (net->command, '\n', servlist_write_ccmd, fp) != TRUE ) + nb = -1; + + if( nb > 0 ) nb = fprintf (fp, "F=%d\nD=%d\n", net->flags, net->selected); + + hlist = net->servlist; + while (hlist) + { + serv = hlist->data; + if( nb > 0 ) nb = fprintf (fp, "S=%s\n", serv->hostname); + hlist = hlist->next; + } + + if( nb > 0 ) nb = fprintf (fp, "\n"); + + list = list->next; + } + + if( nb <= 0 ) + { + fprintf( stderr, "servlist_save: fprintf() failed\n" ); + fclose( fp ); + return FALSE; + } + + if( fclose (fp) != 0 ) + { + perror( "servlist_save: fclose() failed" ); + return FALSE; + } + + if( xchat_rename_file( "servlist_.conf.bug147832", "servlist_.conf", 0 ) != 0 ) + { + perror( "servlist_save: xchat_rename_file() failed" ); + return FALSE; + } + + return TRUE; +} + +static void +joinlist_free1 (GSList *list) +{ + GSList *head = list; + + for (; list; list = list->next) + g_free (list->data); + g_slist_free (head); +} + +void +joinlist_free (GSList *channels, GSList *keys) +{ + joinlist_free1 (channels); + joinlist_free1 (keys); +} + +gboolean +joinlist_is_in_list (server *serv, char *channel) +{ + GSList *channels, *keys; + GSList *list; + + if (!serv->network || !((ircnet *)serv->network)->autojoin) + return FALSE; + + joinlist_split (((ircnet *)serv->network)->autojoin, &channels, &keys); + + for (list = channels; list; list = list->next) + { + if (serv->p_cmp (list->data, channel) == 0) + return TRUE; + } + + joinlist_free (channels, keys); + + return FALSE; +} + +gchar * +joinlist_merge (GSList *channels, GSList *keys) +{ + GString *out = g_string_new (NULL); + GSList *list; + int i, j; + + for (; channels; channels = channels->next) + { + g_string_append (out, channels->data); + + if (channels->next) + g_string_append_c (out, ','); + } + + /* count number of REAL keys */ + for (i = 0, list = keys; list; list = list->next) + if (list->data) + i++; + + if (i > 0) + { + g_string_append_c (out, ' '); + + for (j = 0; keys; keys = keys->next) + { + if (keys->data) + { + g_string_append (out, keys->data); + j++; + if (j == i) + break; + } + + if (keys->next) + g_string_append_c (out, ','); + } + } + + return g_string_free (out, FALSE); +} + +void +joinlist_split (char *autojoin, GSList **channels, GSList **keys) +{ + char *parta, *partb; + char *chan, *key; + int len; + + *channels = NULL; + *keys = NULL; + + /* after the first space, the keys begin */ + parta = autojoin; + partb = strchr (autojoin, ' '); + if (partb) + partb++; + + while (1) + { + chan = parta; + key = partb; + + if (1) + { + while (parta[0] != 0 && parta[0] != ',' && parta[0] != ' ') + { + parta++; + } + } + + if (partb) + { + while (partb[0] != 0 && partb[0] != ',' && partb[0] != ' ') + { + partb++; + } + } + + len = parta - chan; + if (len < 1) + break; + *channels = g_slist_append (*channels, g_strndup (chan, len)); + + len = partb - key; + *keys = g_slist_append (*keys, len ? g_strndup (key, len) : NULL); + + if (parta[0] == ' ' || parta[0] == 0) + break; + parta++; + + if (partb) + { + if (partb[0] == 0 || partb[0] == ' ') + partb = NULL; /* no more keys, but maybe more channels? */ + else + partb++; + } + } + +#if 0 + GSList *lista, *listb; + int i; + + printf("-----\n"); + i = 0; + lista = *channels; + listb = *keys; + while (lista) + { + printf("%d. |%s| |%s|\n", i, lista->data, listb->data); + i++; + lista = lista->next; + listb = listb->next; + } + printf("-----\n\n"); +#endif +} + + diff --git a/etc/wyatt8740/src/common/servlist.h b/etc/wyatt8740/src/common/servlist.h new file mode 100644 index 0000000..cc4e6c4 --- /dev/null +++ b/etc/wyatt8740/src/common/servlist.h @@ -0,0 +1,62 @@ +#ifndef XCHAT_SERVLIST_H +#define XCHAT_SERVLIST_H + +typedef struct ircserver +{ + char *hostname; +} ircserver; + +typedef struct ircnet +{ + char *name; + char *nick; + char *nick2; + char *user; + char *real; + char *pass; + char *autojoin; + char *command; + char *nickserv; + char *comment; + char *encoding; + GSList *servlist; + int selected; + guint32 flags; +} ircnet; + +extern GSList *network_list; + +#define FLAG_CYCLE 1 +#define FLAG_USE_GLOBAL 2 +#define FLAG_USE_SSL 4 +#define FLAG_AUTO_CONNECT 8 +#define FLAG_USE_PROXY 16 +#define FLAG_ALLOW_INVALID 32 +#define FLAG_FAVORITE 64 /* only used by XChat-Aqua for now */ +#define FLAG_COUNT 7 + +void servlist_init (void); +int servlist_save (void); +int servlist_cycle (server *serv); +void servlist_connect (session *sess, ircnet *net, gboolean join); +int servlist_connect_by_netname (session *sess, char *network, gboolean join); +int servlist_auto_connect (session *sess); +int servlist_have_auto (void); +int servlist_check_encoding (char *charset); +void servlist_cleanup (void); + +ircnet *servlist_net_add (char *name, char *comment, int prepend); +void servlist_net_remove (ircnet *net); +ircnet *servlist_net_find (char *name, int *pos, int (*cmpfunc) (const char *, const char *)); +ircnet *servlist_net_find_from_server (char *server_name); + +void servlist_server_remove (ircnet *net, ircserver *serv); +ircserver *servlist_server_add (ircnet *net, char *name); +ircserver *servlist_server_find (ircnet *net, char *name, int *pos); + +void joinlist_split (char *autojoin, GSList **channels, GSList **keys); +gboolean joinlist_is_in_list (server *serv, char *channel); +void joinlist_free (GSList *channels, GSList *keys); +gchar *joinlist_merge (GSList *channels, GSList *keys); + +#endif diff --git a/etc/wyatt8740/src/common/ssl.c b/etc/wyatt8740/src/common/ssl.c new file mode 100644 index 0000000..677e350 --- /dev/null +++ b/etc/wyatt8740/src/common/ssl.c @@ -0,0 +1,344 @@ +/* + * ssl.c v0.0.3 + * Copyright (C) 2000 -- DaP <profeta@freemail.c3.hu> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <openssl/ssl.h> /* SSL_() */ +#include <openssl/err.h> /* ERR_() */ +#include <time.h> /* asctime() */ +#include <string.h> /* strncpy() */ +#include "ssl.h" /* struct cert_info */ +#include "inet.h" +#include "../../config.h" /* HAVE_SNPRINTF */ + +#ifndef HAVE_SNPRINTF +#define snprintf g_snprintf +#endif + +/* globals */ +static struct chiper_info chiper_info; /* static buffer for _SSL_get_cipher_info() */ +static char err_buf[256]; /* generic error buffer */ + + +/* +++++ Internal functions +++++ */ + +static void +__SSL_fill_err_buf (char *funcname) +{ + int err; + char buf[256]; + + + err = ERR_get_error (); + ERR_error_string (err, buf); + snprintf (err_buf, sizeof (err_buf), "%s: %s (%d)\n", funcname, buf, err); +} + + +static void +__SSL_critical_error (char *funcname) +{ + __SSL_fill_err_buf (funcname); + fprintf (stderr, "%s\n", err_buf); + + exit (1); +} + +/* +++++ SSL functions +++++ */ + +SSL_CTX * +_SSL_context_init (void (*info_cb_func), int server) +{ + SSL_CTX *ctx; +#ifdef WIN32 + int i, r; +#endif + + SSLeay_add_ssl_algorithms (); + SSL_load_error_strings (); + ctx = SSL_CTX_new (server ? SSLv23_server_method() : SSLv23_client_method ()); + + SSL_CTX_set_session_cache_mode (ctx, SSL_SESS_CACHE_BOTH); + SSL_CTX_set_timeout (ctx, 300); + + /* used in SSL_connect(), SSL_accept() */ + SSL_CTX_set_info_callback (ctx, info_cb_func); + +#ifdef WIN32 + /* under win32, OpenSSL needs to be seeded with some randomness */ + for (i = 0; i < 128; i++) + { + r = rand (); + RAND_seed ((unsigned char *)&r, sizeof (r)); + } +#endif + + return(ctx); +} + +static void +ASN1_TIME_snprintf (char *buf, int buf_len, ASN1_TIME * tm) +{ + char *expires = NULL; + BIO *inMem = BIO_new (BIO_s_mem ()); + + ASN1_TIME_print (inMem, tm); + BIO_get_mem_data (inMem, &expires); + buf[0] = 0; + if (expires != NULL) + { + memset (buf, 0, buf_len); + strncpy (buf, expires, 24); + } + BIO_free (inMem); +} + + +static void +broke_oneline (char *oneline, char *parray[]) +{ + char *pt, *ppt; + int i; + + + i = 0; + ppt = pt = oneline + 1; + while ((pt = strchr (pt, '/'))) + { + *pt = 0; + parray[i++] = ppt; + ppt = ++pt; + } + parray[i++] = ppt; + parray[i] = NULL; +} + + +/* + FIXME: Master-Key, Extensions, CA bits + (openssl x509 -text -in servcert.pem) +*/ +int +_SSL_get_cert_info (struct cert_info *cert_info, SSL * ssl) +{ + X509 *peer_cert; +#if OPENSSL_VERSION_NUMBER >= 0x10100000L + X509_PUBKEY *key; + X509_ALGOR *algor = NULL; +#endif + EVP_PKEY *peer_pkey; + /* EVP_PKEY *ca_pkey; */ + /* EVP_PKEY *tmp_pkey; */ + char notBefore[64]; + char notAfter[64]; + int alg; + int sign_alg; + + + if (!(peer_cert = SSL_get_peer_certificate (ssl))) + return (1); /* FATAL? */ + + X509_NAME_oneline (X509_get_subject_name (peer_cert), cert_info->subject, + sizeof (cert_info->subject)); + X509_NAME_oneline (X509_get_issuer_name (peer_cert), cert_info->issuer, + sizeof (cert_info->issuer)); + broke_oneline (cert_info->subject, cert_info->subject_word); + broke_oneline (cert_info->issuer, cert_info->issuer_word); + +#if OPENSSL_VERSION_NUMBER < 0x10100000L +/* Old OpenSSL */ + alg = OBJ_obj2nid (peer_cert->cert_info->key->algor->algorithm); + sign_alg = OBJ_obj2nid (peer_cert->sig_alg->algorithm); +#else +/* New OpenSSL */ + key = X509_get_X509_PUBKEY(peer_cert); + if (!X509_PUBKEY_get0_param(NULL, NULL, 0, &algor, key)) + return 1; + alg = OBJ_obj2nid (algor->algorithm); + sign_alg = X509_get_signature_nid (peer_cert); +#endif + ASN1_TIME_snprintf (notBefore, sizeof (notBefore), + X509_get_notBefore (peer_cert)); + ASN1_TIME_snprintf (notAfter, sizeof (notAfter), + X509_get_notAfter (peer_cert)); + + peer_pkey = X509_get_pubkey (peer_cert); + + strncpy (cert_info->algorithm, + (alg == NID_undef) ? "Unknown" : OBJ_nid2ln (alg), + sizeof (cert_info->algorithm)); + cert_info->algorithm_bits = EVP_PKEY_bits (peer_pkey); + strncpy (cert_info->sign_algorithm, + (sign_alg == NID_undef) ? "Unknown" : OBJ_nid2ln (sign_alg), + sizeof (cert_info->sign_algorithm)); + cert_info->sign_algorithm_bits = 0; + strncpy (cert_info->notbefore, notBefore, sizeof (cert_info->notbefore)); + strncpy (cert_info->notafter, notAfter, sizeof (cert_info->notafter)); + + EVP_PKEY_free (peer_pkey); + + /* SSL_SESSION_print_fp(stdout, SSL_get_session(ssl)); */ +/* + if (ssl->session->sess_cert->peer_rsa_tmp) { + tmp_pkey = EVP_PKEY_new(); + EVP_PKEY_assign_RSA(tmp_pkey, ssl->session->sess_cert->peer_rsa_tmp); + cert_info->rsa_tmp_bits = EVP_PKEY_bits (tmp_pkey); + EVP_PKEY_free(tmp_pkey); + } else + fprintf(stderr, "REMOTE SIDE DOESN'T PROVIDES ->peer_rsa_tmp\n"); +*/ + cert_info->rsa_tmp_bits = 0; + + X509_free (peer_cert); + + return (0); +} + + +struct chiper_info * +_SSL_get_cipher_info (SSL * ssl) +{ + SSL_CIPHER *c; + + + c = SSL_get_current_cipher (ssl); + strncpy (chiper_info.version, SSL_CIPHER_get_version (c), + sizeof (chiper_info.version)); + strncpy (chiper_info.chiper, SSL_CIPHER_get_name (c), + sizeof (chiper_info.chiper)); + SSL_CIPHER_get_bits (c, &chiper_info.chiper_bits); + + return (&chiper_info); +} + + +int +_SSL_send (SSL * ssl, char *buf, int len) +{ + int num; + + + num = SSL_write (ssl, buf, len); + + switch (SSL_get_error (ssl, num)) + { + case SSL_ERROR_SSL: /* setup errno! */ + /* ??? */ + __SSL_fill_err_buf ("SSL_write"); + fprintf (stderr, "%s\n", err_buf); + break; + case SSL_ERROR_SYSCALL: + /* ??? */ + perror ("SSL_write/write"); + break; + case SSL_ERROR_ZERO_RETURN: + /* fprintf(stderr, "SSL closed on write\n"); */ + break; + } + + return (num); +} + + +int +_SSL_recv (SSL * ssl, char *buf, int len) +{ + int num; + + + num = SSL_read (ssl, buf, len); + + switch (SSL_get_error (ssl, num)) + { + case SSL_ERROR_SSL: + /* ??? */ + __SSL_fill_err_buf ("SSL_read"); + fprintf (stderr, "%s\n", err_buf); + break; + case SSL_ERROR_SYSCALL: + /* ??? */ + if (!would_block ()) + perror ("SSL_read/read"); + break; + case SSL_ERROR_ZERO_RETURN: + /* fprintf(stdeerr, "SSL closed on read\n"); */ + break; + } + + return (num); +} + + +SSL * +_SSL_socket (SSL_CTX *ctx, int sd) +{ + SSL *ssl; + const SSL_METHOD *method; + + + if (!(ssl = SSL_new (ctx))) + /* FATAL */ + __SSL_critical_error ("SSL_new"); + + SSL_set_fd (ssl, sd); +#if OPENSSL_VERSION_NUMBER < 0x10100000L +/* Old OpenSSL */ + method = ctx->method; +#else +/* New OpenSSL */ + method = SSL_CTX_get_ssl_method (ctx); +#endif + if (method == SSLv23_client_method()) + SSL_set_connect_state (ssl); + else + SSL_set_accept_state(ssl); + + return (ssl); +} + + +char * +_SSL_set_verify (SSL_CTX *ctx, void *verify_callback, char *cacert) +{ + if (!SSL_CTX_set_default_verify_paths (ctx)) + { + __SSL_fill_err_buf ("SSL_CTX_set_default_verify_paths"); + return (err_buf); + } +/* + if (cacert) + { + if (!SSL_CTX_load_verify_locations (ctx, cacert, NULL)) + { + __SSL_fill_err_buf ("SSL_CTX_load_verify_locations"); + return (err_buf); + } + } +*/ + SSL_CTX_set_verify (ctx, SSL_VERIFY_PEER, verify_callback); + + return (NULL); +} + + +void +_SSL_close (SSL * ssl) +{ + SSL_set_shutdown (ssl, SSL_SENT_SHUTDOWN | SSL_RECEIVED_SHUTDOWN); + SSL_free (ssl); + ERR_remove_state (0); /* free state buffer */ +} diff --git a/etc/wyatt8740/src/common/ssl.h b/etc/wyatt8740/src/common/ssl.h new file mode 100644 index 0000000..26eb0f8 --- /dev/null +++ b/etc/wyatt8740/src/common/ssl.h @@ -0,0 +1,65 @@ +/* + ... +*/ + +struct cert_info { + char subject[256]; + char *subject_word[12]; + char issuer[256]; + char *issuer_word[12]; + char algorithm[32]; + int algorithm_bits; + char sign_algorithm[32]; + int sign_algorithm_bits; + char notbefore[32]; + char notafter[32]; + + int rsa_tmp_bits; +}; + +struct chiper_info { + char version[16]; + char chiper[24]; + int chiper_bits; +}; + +SSL_CTX *_SSL_context_init (void (*info_cb_func), int server); +#define _SSL_context_free(a) SSL_CTX_free(a); + +SSL *_SSL_socket (SSL_CTX *ctx, int sd); +char *_SSL_set_verify (SSL_CTX *ctx, void *(verify_callback), char *cacert); +/* + int SSL_connect(SSL *); + int SSL_accept(SSL *); + int SSL_get_fd(SSL *); +*/ +void _SSL_close (SSL * ssl); + +int _SSL_get_cert_info (struct cert_info *cert_info, SSL * ssl); +struct chiper_info *_SSL_get_cipher_info (SSL * ssl); + +/*char *_SSL_add_keypair (SSL_CTX *ctx, char *privkey, char *cert);*/ +/*void _SSL_add_random_keypair(SSL_CTX *ctx, int bits);*/ + +int _SSL_send (SSL * ssl, char *buf, int len); +int _SSL_recv (SSL * ssl, char *buf, int len); + +/* misc */ +/*void broke_oneline (char *oneline, char *parray[]);*/ + +/*char *_SSL_do_cipher_base64(char *buf, int buf_len, char *key, int operation);*/ /* must be freed */ + +/*void *_SSL_get_sess_obj(SSL *ssl, int type);*/ /* NOT must be freed */ +#define _SSL_get_sess_pkey(a) _SSL_get_sess_obj(a, 0) +#define _SSL_get_sess_prkey(a) _SSL_get_sess_obj(a, 1) +#define _SSL_get_sess_x509(a) _SSL_get_sess_obj(a, 2) +/*char *_SSL_get_obj_base64(void *s, int type);*/ /* must be freed */ +#define _SSL_get_pkey_base64(a) _SSL_get_obj_base64(a, 0) +#define _SSL_get_prkey_base64(a) _SSL_get_obj_base64(a, 1) +#define _SSL_get_x509_base64(a) _SSL_get_obj_base64(a, 2) +/*char *_SSL_get_ctx_obj_base64(SSL_CTX *ctx, int type);*/ /* must be freed */ +#define _SSL_get_ctx_pkey_base64(a) _SSL_get_ctx_obj_base64(a, 0) +#define _SSL_get_ctx_prkey_base64(a) _SSL_get_ctx_obj_base64(a, 1) +#define _SSL_get_ctx_x509_base64(a) _SSL_get_ctx_obj_base64(a, 2) + +/*int _SSL_verify_x509(X509 *x509);*/ diff --git a/etc/wyatt8740/src/common/text.c b/etc/wyatt8740/src/common/text.c new file mode 100644 index 0000000..80a24cb --- /dev/null +++ b/etc/wyatt8740/src/common/text.c @@ -0,0 +1,2374 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <unistd.h> +#include <ctype.h> +#include <time.h> +#include <sys/types.h> +#include <fcntl.h> +#include <sys/stat.h> +#include <sys/mman.h> + +#include "xchat.h" +#include <glib.h> +#include "cfgfiles.h" +#include "chanopt.h" +#include "plugin.h" +#include "fe.h" +#include "server.h" +#include "util.h" +#include "outbound.h" +#include "xchatc.h" +#include "text.h" +#ifdef WIN32 +#include <windows.h> +#endif + +struct pevt_stage1 +{ + int len; + char *data; + struct pevt_stage1 *next; +}; + + +static void mkdir_p (char *dir); +static char *log_create_filename (char *channame); + + +static char * +scrollback_get_filename (session *sess, char *buf, int max) +{ + char *net, *chan; + + net = server_get_network (sess->server, FALSE); + if (!net) + return NULL; + + snprintf (buf, max, "%s/scrollback/%s/%s.txt", get_xdir_fs (), net, ""); + mkdir_p (buf); + + chan = log_create_filename (sess->channel); + snprintf (buf, max, "%s/scrollback/%s/%s.txt", get_xdir_fs (), net, chan); + free (chan); + + return buf; +} + +#if 0 + +static void +scrollback_unlock (session *sess) +{ + char buf[1024]; + + if (scrollback_get_filename (sess, buf, sizeof (buf) - 6) == NULL) + return; + + strcat (buf, ".lock"); + unlink (buf); +} + +static gboolean +scrollback_lock (session *sess) +{ + char buf[1024]; + int fh; + + if (scrollback_get_filename (sess, buf, sizeof (buf) - 6) == NULL) + return FALSE; + + strcat (buf, ".lock"); + + if (access (buf, F_OK) == 0) + return FALSE; /* can't get lock */ + + fh = open (buf, O_CREAT | O_TRUNC | O_APPEND | O_WRONLY, 0644); + if (fh == -1) + return FALSE; + + return TRUE; +} + +#endif + +void +scrollback_close (session *sess) +{ + if (sess->scrollfd != -1) + { + close (sess->scrollfd); + sess->scrollfd = -1; + } +} + +static char * +file_to_buffer (char *file, int *len) +{ + int fh; + char *buf; + struct stat st; + + fh = open (file, O_RDONLY | OFLAGS); + if (fh == -1) + return NULL; + + fstat (fh, &st); + + buf = malloc (st.st_size); + if (!buf) + { + close (fh); + return NULL; + } + + if (read (fh, buf, st.st_size) != st.st_size) + { + free (buf); + close (fh); + return NULL; + } + + *len = st.st_size; + close (fh); + return buf; +} + +/* shrink the file to roughly prefs.max_lines */ + +static void +scrollback_shrink (session *sess) +{ + char file[1024]; + char *buf; + int fh; + int lines; + int line; + int len; + char *p; + + scrollback_close (sess); + sess->scrollwritten = 0; + lines = 0; + + if (scrollback_get_filename (sess, file, sizeof (file)) == NULL) + return; + + buf = file_to_buffer (file, &len); + if (!buf) + return; + + /* count all lines */ + p = buf; + while (p != buf + len) + { + if (*p == '\n') + lines++; + p++; + } + + fh = open (file, O_CREAT | O_TRUNC | O_APPEND | O_WRONLY, 0644); + if (fh == -1) + { + free (buf); + return; + } + + line = 0; + p = buf; + while (p != buf + len) + { + if (*p == '\n') + { + line++; + if (line >= lines - prefs.max_lines && + p + 1 != buf + len) + { + p++; + write (fh, p, len - (p - buf)); + break; + } + } + p++; + } + + close (fh); + free (buf); +} + +static void +scrollback_save (session *sess, char *text) +{ + char buf[512 * 4]; + time_t stamp; + int len; + + if (sess->type == SESS_SERVER) + return; + + if (sess->text_scrollback == SET_DEFAULT) + { + if (!prefs.text_replay) + return; + } + else + { + if (sess->text_scrollback != SET_ON) + return; + } + + if (sess->scrollfd == -1) + { + if (scrollback_get_filename (sess, buf, sizeof (buf)) == NULL) + return; + + sess->scrollfd = open (buf, O_CREAT | O_APPEND | O_WRONLY, 0644); + if (sess->scrollfd == -1) + return; + } + + stamp = time (0); + if (sizeof (stamp) == 4) /* gcc will optimize one of these out */ + write (sess->scrollfd, buf, snprintf (buf, sizeof (buf), "T %d ", (int)stamp)); + else + write (sess->scrollfd, buf, snprintf (buf, sizeof (buf), "T %"G_GINT64_FORMAT" ", (gint64)stamp)); + + len = strlen (text); + write (sess->scrollfd, text, len); + if (len && text[len - 1] != '\n') + write (sess->scrollfd, "\n", 1); + + sess->scrollwritten++; + + if ((sess->scrollwritten * 2 > prefs.max_lines && prefs.max_lines > 0) || + sess->scrollwritten > 32000) + scrollback_shrink (sess); +} + +void +scrollback_load (session *sess) +{ + int fh; + char buf[512 * 4]; + char *text; + time_t stamp; + int lines; + char *map, *end_map; + struct stat statbuf; + const char *begin, *eol; + + if (sess->text_scrollback == SET_DEFAULT) + { + if (!prefs.text_replay) + return; + } + else + { + if (sess->text_scrollback != SET_ON) + return; + } + + if (scrollback_get_filename (sess, buf, sizeof (buf)) == NULL) + return; + + fh = open (buf, O_RDONLY | OFLAGS); + if (fh == -1) + return; + + if (fstat (fh, &statbuf) < 0) + return; + + map = mmap (NULL, statbuf.st_size, PROT_READ, MAP_PRIVATE, fh, 0); + if (map == MAP_FAILED) + return; + + end_map = map + statbuf.st_size; + + lines = 0; + begin = map; + while (begin < end_map) + { + int n_bytes; + + eol = memchr (begin, '\n', end_map - begin); + + if (!eol) + eol = end_map; + + n_bytes = MIN (eol - begin, sizeof (buf) - 1); + + strncpy (buf, begin, n_bytes); + + buf[n_bytes] = 0; + + if (buf[0] == 'T') + { + if (sizeof (time_t) == 4) + stamp = strtoul (buf + 2, NULL, 10); + else + stamp = strtoull (buf + 2, NULL, 10); /* just incase time_t is 64 bits */ + text = strchr (buf + 3, ' '); + if (text) + { + text = strip_color (text + 1, -1, STRIP_COLOR); + fe_print_text (sess, text, stamp); + g_free (text); + } + lines++; + } + + begin = eol + 1; + } + + sess->scrollwritten = lines; + + if (lines) + { + text = ctime (&stamp); + text[24] = 0; /* get rid of the \n */ + snprintf (buf, sizeof (buf), "\n*\t%s %s\n\n", _("Loaded log from"), text); + fe_print_text (sess, buf, 0); + /*EMIT_SIGNAL (XP_TE_GENMSG, sess, "*", buf, NULL, NULL, NULL, 0);*/ + } + + munmap (map, statbuf.st_size); + close (fh); +} + +void +log_close (session *sess) +{ + char obuf[512]; + time_t currenttime; + + if (sess->logfd != -1) + { + currenttime = time (NULL); + write (sess->logfd, obuf, + snprintf (obuf, sizeof (obuf) - 1, _("**** ENDING LOGGING AT %s\n"), + ctime (¤ttime))); + close (sess->logfd); + sess->logfd = -1; + } +} + +static void +mkdir_p (char *dir) /* like "mkdir -p" from a shell, FS encoding */ +{ + char *start = dir; + + /* the whole thing already exists? */ + if (access (dir, F_OK) == 0) + return; + + while (*dir) + { +#ifdef WIN32 + if (dir != start && (*dir == '/' || *dir == '\\')) +#else + if (dir != start && *dir == '/') +#endif + { + *dir = 0; +#ifdef WIN32 + mkdir (start); +#else + mkdir (start, S_IRUSR | S_IWUSR | S_IXUSR); +#endif + *dir = '/'; + } + dir++; + } +} + +static char * +log_create_filename (char *channame) +{ + char *tmp, *ret; + int mbl; + + ret = tmp = strdup (channame); + while (*tmp) + { + mbl = g_utf8_skip[((unsigned char *)tmp)[0]]; + if (mbl == 1) + { +#ifndef WIN32 + *tmp = rfc_tolower (*tmp); + if (*tmp == '/') +#else + /* win32 can't handle filenames with \|/><:"*? characters */ + if (*tmp == '\\' || *tmp == '|' || *tmp == '/' || + *tmp == '>' || *tmp == '<' || *tmp == ':' || + *tmp == '\"' || *tmp == '*' || *tmp == '?') +#endif + *tmp = '_'; + } + tmp += mbl; + } + + return ret; +} + +/* like strcpy, but % turns into %% */ + +static char * +log_escape_strcpy (char *dest, char *src, char *end) +{ + while (*src) + { + *dest = *src; + if (dest + 1 == end) + break; + dest++; + src++; + + if (*src == '%') + { + if (dest + 1 == end) + break; + dest[0] = '%'; + dest++; + } + } + + dest[0] = 0; + return dest - 1; +} + +/* substitutes %c %n %s into buffer */ + +static void +log_insert_vars (char *buf, int bufsize, char *fmt, char *c, char *n, char *s) +{ + char *end = buf + bufsize; + + while (1) + { + switch (fmt[0]) + { + case 0: + buf[0] = 0; + return; + + case '%': + fmt++; + switch (fmt[0]) + { + case 'c': + buf = log_escape_strcpy (buf, c, end); + break; + case 'n': + buf = log_escape_strcpy (buf, n, end); + break; + case 's': + buf = log_escape_strcpy (buf, s, end); + break; + default: + buf[0] = '%'; + buf++; + buf[0] = fmt[0]; + break; + } + break; + + default: + buf[0] = fmt[0]; + } + fmt++; + buf++; + /* doesn't fit? */ + if (buf == end) + { + buf[-1] = 0; + return; + } + } +} + +static char * +log_create_pathname (char *servname, char *channame, char *netname) +{ + char fname[384]; + char fnametime[384]; + char *fs; + struct tm *tm; + time_t now; + + if (!netname) + netname = "NETWORK"; + + /* first, everything is in UTF-8 */ + if (!rfc_casecmp (channame, servname)) + channame = strdup ("server"); + else + channame = log_create_filename (channame); + log_insert_vars (fname, sizeof (fname), prefs.logmask, channame, netname, servname); + free (channame); + + /* insert time/date */ + now = time (NULL); + tm = localtime (&now); + strftime (fnametime, sizeof (fnametime), fname, tm); + + /* create final path/filename */ +#ifdef WIN32 + if (fnametime[0] == '/' || (fnametime[0] >= 'A' && fnametime[1] == ':')) +#else + if (fnametime[0] == '/') /* is it fullpath already? */ +#endif + snprintf (fname, sizeof (fname), "%s", fnametime); + else + snprintf (fname, sizeof (fname), "%s/xchatlogs/%s", get_xdir_utf8 (), fnametime); + + /* now we need it in FileSystem encoding */ + fs = xchat_filename_from_utf8 (fname, -1, 0, 0, 0); + + /* create all the subdirectories */ + if (fs) + mkdir_p (fs); + + return fs; +} + +static int +log_open_file (char *servname, char *channame, char *netname) +{ + char buf[512]; + int fd; + char *file; + time_t currenttime; + + file = log_create_pathname (servname, channame, netname); + if (!file) + return -1; + +#ifdef WIN32 + fd = open (file, O_CREAT | O_APPEND | O_WRONLY, S_IREAD|S_IWRITE); +#else + fd = open (file, O_CREAT | O_APPEND | O_WRONLY, 0644); +#endif + g_free (file); + + if (fd == -1) + return -1; + currenttime = time (NULL); + write (fd, buf, + snprintf (buf, sizeof (buf), _("**** BEGIN LOGGING AT %s\n"), + ctime (¤ttime))); + + return fd; +} + +static void +log_open (session *sess) +{ + static gboolean log_error = FALSE; + + log_close (sess); + sess->logfd = log_open_file (sess->server->servername, sess->channel, + server_get_network (sess->server, FALSE)); + + if (!log_error && sess->logfd == -1) + { + char message[512]; + snprintf (message, sizeof (message), + _("* Can't open log file(s) for writing. Check the\n" \ + " permissions on %s/xchatlogs"), get_xdir_utf8 ()); + fe_message (message, FE_MSG_WAIT | FE_MSG_ERROR); + + log_error = TRUE; + } +} + +void +log_open_or_close (session *sess) +{ + if (sess->text_logging == SET_DEFAULT) + { + if (prefs.logging) + log_open (sess); + else + log_close (sess); + } + else + { + if (sess->text_logging) + log_open (sess); + else + log_close (sess); + } +} + +int +get_stamp_str (char *fmt, time_t tim, char **ret) +{ + char *loc = NULL; + char dest[128]; + gsize len; + + /* strftime wants the format string in LOCALE! */ + if (!prefs.utf8_locale) + { + const gchar *charset; + + g_get_charset (&charset); + loc = g_convert_with_fallback (fmt, -1, charset, "UTF-8", "?", 0, 0, 0); + if (loc) + fmt = loc; + } + + len = strftime (dest, sizeof (dest), fmt, localtime (&tim)); + if (len) + { + if (prefs.utf8_locale) + *ret = g_strdup (dest); + else + *ret = g_locale_to_utf8 (dest, len, 0, &len, 0); + } + + if (loc) + g_free (loc); + + return len; +} + +static void +log_write (session *sess, char *text) +{ + char *temp; + char *stamp; + char *file; + int len; + + if (sess->text_logging == SET_DEFAULT) + { + if (!prefs.logging) + return; + } + else + { + if (sess->text_logging != SET_ON) + return; + } + + if (sess->logfd == -1) + log_open (sess); + + /* change to a different log file? */ + file = log_create_pathname (sess->server->servername, sess->channel, + server_get_network (sess->server, FALSE)); + if (file) + { + if (access (file, F_OK) != 0) + { + close (sess->logfd); + sess->logfd = log_open_file (sess->server->servername, sess->channel, + server_get_network (sess->server, FALSE)); + } + g_free (file); + } + + if (prefs.timestamp_logs) + { + len = get_stamp_str (prefs.timestamp_log_format, time (0), &stamp); + if (len) + { + write (sess->logfd, stamp, len); + g_free (stamp); + } + } + temp = strip_color (text, -1, STRIP_ALL); + len = strlen (temp); + write (sess->logfd, temp, len); + /* lots of scripts/plugins print without a \n at the end */ + if (temp[len - 1] != '\n') + write (sess->logfd, "\n", 1); /* emulate what xtext would display */ + g_free (temp); +} + +/* converts a CP1252/ISO-8859-1(5) hybrid to UTF-8 */ +/* Features: 1. It never fails, all 00-FF chars are converted to valid UTF-8 */ +/* 2. Uses CP1252 in the range 80-9f because ISO doesn't have any- */ +/* thing useful in this range and it helps us receive from mIRC */ +/* 3. The five undefined chars in CP1252 80-9f are replaced with */ +/* ISO-8859-15 control codes. */ +/* 4. Handles 0xa4 as a Euro symbol ala ISO-8859-15. */ +/* 5. Uses ISO-8859-1 (which matches CP1252) for everything else. */ +/* 6. This routine measured 3x faster than g_convert :) */ + +static unsigned char * +iso_8859_1_to_utf8 (unsigned char *text, int len, gsize *bytes_written) +{ + unsigned int idx; + unsigned char *res, *output; + static const unsigned short lowtable[] = /* 74 byte table for 80-a4 */ + { + /* compressed utf-8 table: if the first byte's 0x20 bit is set, it + indicates a 2-byte utf-8 sequence, otherwise prepend a 0xe2. */ + 0x82ac, /* 80 Euro. CP1252 from here on... */ + 0xe281, /* 81 NA */ + 0x809a, /* 82 */ + 0xe692, /* 83 */ + 0x809e, /* 84 */ + 0x80a6, /* 85 */ + 0x80a0, /* 86 */ + 0x80a1, /* 87 */ + 0xeb86, /* 88 */ + 0x80b0, /* 89 */ + 0xe5a0, /* 8a */ + 0x80b9, /* 8b */ + 0xe592, /* 8c */ + 0xe28d, /* 8d NA */ + 0xe5bd, /* 8e */ + 0xe28f, /* 8f NA */ + 0xe290, /* 90 NA */ + 0x8098, /* 91 */ + 0x8099, /* 92 */ + 0x809c, /* 93 */ + 0x809d, /* 94 */ + 0x80a2, /* 95 */ + 0x8093, /* 96 */ + 0x8094, /* 97 */ + 0xeb9c, /* 98 */ + 0x84a2, /* 99 */ + 0xe5a1, /* 9a */ + 0x80ba, /* 9b */ + 0xe593, /* 9c */ + 0xe29d, /* 9d NA */ + 0xe5be, /* 9e */ + 0xe5b8, /* 9f */ + 0xe2a0, /* a0 */ + 0xe2a1, /* a1 */ + 0xe2a2, /* a2 */ + 0xe2a3, /* a3 */ + 0x82ac /* a4 ISO-8859-15 Euro. */ + }; + + if (len == -1) + len = strlen (text); + + /* worst case scenario: every byte turns into 3 bytes */ + res = output = g_malloc ((len * 3) + 1); + if (!output) + return NULL; + + while (len) + { + if (G_LIKELY (*text < 0x80)) + { + *output = *text; /* ascii maps directly */ + } + else if (*text <= 0xa4) /* 80-a4 use a lookup table */ + { + idx = *text - 0x80; + if (lowtable[idx] & 0x2000) + { + *output++ = (lowtable[idx] >> 8) & 0xdf; /* 2 byte utf-8 */ + *output = lowtable[idx] & 0xff; + } + else + { + *output++ = 0xe2; /* 3 byte utf-8 */ + *output++ = (lowtable[idx] >> 8) & 0xff; + *output = lowtable[idx] & 0xff; + } + } + else if (*text < 0xc0) + { + *output++ = 0xc2; + *output = *text; + } + else + { + *output++ = 0xc3; + *output = *text - 0x40; + } + output++; + text++; + len--; + } + *output = 0; /* terminate */ + *bytes_written = output - res; + + return res; +} + +char * +text_validate (char **text, int *len) +{ + char *utf; + gsize utf_len; + + /* valid utf8? */ + if (g_utf8_validate (*text, *len, 0)) + return NULL; + +#ifdef WIN32 + if (GetACP () == 1252) /* our routine is better than iconv's 1252 */ +#else + if (prefs.utf8_locale) +#endif + /* fallback to iso-8859-1 */ + utf = iso_8859_1_to_utf8 (*text, *len, &utf_len); + else + { + /* fallback to locale */ + utf = g_locale_to_utf8 (*text, *len, 0, &utf_len, NULL); + if (!utf) + utf = iso_8859_1_to_utf8 (*text, *len, &utf_len); + } + + if (!utf) + { + *text = g_strdup ("%INVALID%"); + *len = 9; + } else + { + *text = utf; + *len = utf_len; + } + + return utf; +} + +void +PrintText (session *sess, char *text) +{ + char *conv; + + if (!sess) + { + if (!sess_list) + return; + sess = (session *) sess_list->data; + } + + /* make sure it's valid utf8 */ + if (text[0] == 0) + { + text = "\n"; + conv = NULL; + } else + { + int len = -1; + conv = text_validate ((char **)&text, &len); + } + + log_write (sess, text); + scrollback_save (sess, text); + fe_print_text (sess, text, 0); + + if (conv) + g_free (conv); +} + +void +PrintTextf (session *sess, char *format, ...) +{ + va_list args; + char *buf; + + va_start (args, format); + buf = g_strdup_vprintf (format, args); + va_end (args); + + PrintText (sess, buf); + g_free (buf); +} + +/* Print Events stuff here --AGL */ + +/* Consider the following a NOTES file: + + The main upshot of this is: + * Plugins and Perl scripts (when I get round to signaling perl.c) can intercept text events and do what they like + * The default text engine can be config'ed + + By default it should appear *exactly* the same (I'm working hard not to change the default style) but if you go into Settings->Edit Event Texts you can change the text's. The format is thus: + + The normal %Cx (color) and %B (bold) etc work + + $x is replaced with the data in var x (e.g. $1 is often the nick) + + $axxx is replace with a single byte of value xxx (in base 10) + + AGL (990507) + */ + +/* These lists are thus: + pntevts_text[] are the strings the user sees (WITH %x etc) + pntevts[] are the data strings with \000 etc + */ + +/* To add a new event: + + Think up a name (like "Join") + Make up a pevt_name_help struct + Add an entry to textevents.in + Type: make textevents + */ + +/* Internals: + + On startup ~/.xchat/printevents.conf is loaded if it doesn't exist the + defaults are loaded. Any missing events are filled from defaults. + Each event is parsed by pevt_build_string and a binary output is produced + which looks like: + + (byte) value: 0 = { + (int) numbers of bytes + (char []) that number of byte to be memcpy'ed into the buffer + } + 1 = + (byte) number of varable to insert + 2 = end of buffer + + Each XP_TE_* signal is hard coded to call text_emit which calls + display_event which decodes the data + + This means that this system *should be faster* than snprintf because + it always 'knows' that format of the string (basically is preparses much + of the work) + + --AGL + */ + +char *pntevts_text[NUM_XP]; +char *pntevts[NUM_XP]; + +#define pevt_generic_none_help NULL + +static char * const pevt_genmsg_help[] = { + N_("Left message"), + N_("Right message"), +}; + +static char * const pevt_join_help[] = { + N_("The nick of the joining person"), + N_("The channel being joined"), + N_("The host of the person"), +}; + +static char * const pevt_chanaction_help[] = { + N_("Nickname"), + N_("The action"), + N_("Mode char"), + N_("Identified text"), +}; + +static char * const pevt_chanmsg_help[] = { + N_("Nickname"), + N_("The text"), + N_("Mode char"), + N_("Identified text"), +}; + +static char * const pevt_privmsg_help[] = { + N_("Nickname"), + N_("The message"), + N_("Identified text") +}; + +static char * const pevt_changenick_help[] = { + N_("Old nickname"), + N_("New nickname"), +}; + +static char * const pevt_newtopic_help[] = { + N_("Nick of person who changed the topic"), + N_("Topic"), + N_("Channel"), +}; + +static char * const pevt_topic_help[] = { + N_("Channel"), + N_("Topic"), +}; + +static char * const pevt_kick_help[] = { + N_("The nickname of the kicker"), + N_("The person being kicked"), + N_("The channel"), + N_("The reason"), +}; + +static char * const pevt_part_help[] = { + N_("The nick of the person leaving"), + N_("The host of the person"), + N_("The channel"), +}; + +static char * const pevt_chandate_help[] = { + N_("The channel"), + N_("The time"), +}; + +static char * const pevt_topicdate_help[] = { + N_("The channel"), + N_("The creator"), + N_("The time"), +}; + +static char * const pevt_quit_help[] = { + N_("Nick"), + N_("Reason"), + N_("Host"), +}; + +static char * const pevt_pingrep_help[] = { + N_("Who it's from"), + N_("The time in x.x format (see below)"), +}; + +static char * const pevt_notice_help[] = { + N_("Who it's from"), + N_("The message"), +}; + +static char * const pevt_channotice_help[] = { + N_("Who it's from"), + N_("The Channel it's going to"), + N_("The message"), +}; + +static char * const pevt_uchangenick_help[] = { + N_("Old nickname"), + N_("New nickname"), +}; + +static char * const pevt_ukick_help[] = { + N_("The person being kicked"), + N_("The channel"), + N_("The nickname of the kicker"), + N_("The reason"), +}; + +static char * const pevt_partreason_help[] = { + N_("The nick of the person leaving"), + N_("The host of the person"), + N_("The channel"), + N_("The reason"), +}; + +static char * const pevt_ctcpsnd_help[] = { + N_("The sound"), + N_("The nick of the person"), + N_("The channel"), +}; + +static char * const pevt_ctcpgen_help[] = { + N_("The CTCP event"), + N_("The nick of the person"), +}; + +static char * const pevt_ctcpgenc_help[] = { + N_("The CTCP event"), + N_("The nick of the person"), + N_("The Channel it's going to"), +}; + +static char * const pevt_chansetkey_help[] = { + N_("The nick of the person who set the key"), + N_("The key"), +}; + +static char * const pevt_chansetlimit_help[] = { + N_("The nick of the person who set the limit"), + N_("The limit"), +}; + +static char * const pevt_chanop_help[] = { + N_("The nick of the person who did the op'ing"), + N_("The nick of the person who has been op'ed"), +}; + +static char * const pevt_chanhop_help[] = { + N_("The nick of the person who has been halfop'ed"), + N_("The nick of the person who did the halfop'ing"), +}; + +static char * const pevt_chanvoice_help[] = { + N_("The nick of the person who did the voice'ing"), + N_("The nick of the person who has been voice'ed"), +}; + +static char * const pevt_chanban_help[] = { + N_("The nick of the person who did the banning"), + N_("The ban mask"), +}; + +static char * const pevt_chanrmkey_help[] = { + N_("The nick who removed the key"), +}; + +static char * const pevt_chanrmlimit_help[] = { + N_("The nick who removed the limit"), +}; + +static char * const pevt_chandeop_help[] = { + N_("The nick of the person of did the deop'ing"), + N_("The nick of the person who has been deop'ed"), +}; +static char * const pevt_chandehop_help[] = { + N_("The nick of the person of did the dehalfop'ing"), + N_("The nick of the person who has been dehalfop'ed"), +}; + +static char * const pevt_chandevoice_help[] = { + N_("The nick of the person of did the devoice'ing"), + N_("The nick of the person who has been devoice'ed"), +}; + +static char * const pevt_chanunban_help[] = { + N_("The nick of the person of did the unban'ing"), + N_("The ban mask"), +}; + +static char * const pevt_chanexempt_help[] = { + N_("The nick of the person who did the exempt"), + N_("The exempt mask"), +}; + +static char * const pevt_chanrmexempt_help[] = { + N_("The nick of the person removed the exempt"), + N_("The exempt mask"), +}; + +static char * const pevt_chaninvite_help[] = { + N_("The nick of the person who did the invite"), + N_("The invite mask"), +}; + +static char * const pevt_chanrminvite_help[] = { + N_("The nick of the person removed the invite"), + N_("The invite mask"), +}; + +static char * const pevt_chanmodegen_help[] = { + N_("The nick of the person setting the mode"), + N_("The mode's sign (+/-)"), + N_("The mode letter"), + N_("The channel it's being set on"), +}; + +static char * const pevt_whois1_help[] = { + N_("Nickname"), + N_("Username"), + N_("Host"), + N_("Full name"), +}; + +static char * const pevt_whois2_help[] = { + N_("Nickname"), + N_("Channel Membership/\"is an IRC operator\""), +}; + +static char * const pevt_whois3_help[] = { + N_("Nickname"), + N_("Server Information"), +}; + +static char * const pevt_whois4_help[] = { + N_("Nickname"), + N_("Idle time"), +}; + +static char * const pevt_whois4t_help[] = { + N_("Nickname"), + N_("Idle time"), + N_("Signon time"), +}; + +static char * const pevt_whois5_help[] = { + N_("Nickname"), + N_("Away reason"), +}; + +static char * const pevt_whois6_help[] = { + N_("Nickname"), +}; + +static char * const pevt_whoisid_help[] = { + N_("Nickname"), + N_("Message"), + "Numeric" +}; + +static char * const pevt_whoisauth_help[] = { + N_("Nickname"), + N_("Message"), + N_("Account"), +}; + +static char * const pevt_whoisrealhost_help[] = { + N_("Nickname"), + N_("Real user@host"), + N_("Real IP"), + N_("Message"), +}; + +static char * const pevt_generic_channel_help[] = { + N_("Channel Name"), +}; + +static char * const pevt_servertext_help[] = { + N_("Text"), + N_("Server Name"), + N_("Raw Numeric or Identifier") +}; + +static char * const pevt_sslmessage_help[] = { + N_("Text"), + N_("Server Name") +}; + +static char * const pevt_invited_help[] = { + N_("Channel Name"), + N_("Nick of person who invited you"), + N_("Server Name"), +}; + +static char * const pevt_usersonchan_help[] = { + N_("Channel Name"), + N_("Users"), +}; + +static char * const pevt_nickclash_help[] = { + N_("Nickname in use"), + N_("Nick being tried"), +}; + +static char * const pevt_connfail_help[] = { + N_("Error"), +}; + +static char * const pevt_connect_help[] = { + N_("Host"), + N_("IP"), + N_("Port"), +}; + +static char * const pevt_sconnect_help[] = { + "PID" +}; + +static char * const pevt_generic_nick_help[] = { + N_("Nickname"), + N_("Server Name"), + N_("Network") +}; + +static char * const pevt_chanmodes_help[] = { + N_("Channel Name"), + N_("Modes string"), +}; + +static char * const pevt_rawmodes_help[] = { + N_("Nickname"), + N_("Modes string"), +}; + +static char * const pevt_kill_help[] = { + N_("Nickname"), + N_("Reason"), +}; + +static char * const pevt_dccchaterr_help[] = { + N_("Nickname"), + N_("IP address"), + N_("Port"), + N_("Error"), +}; + +static char * const pevt_dccstall_help[] = { + N_("DCC Type"), + N_("Filename"), + N_("Nickname"), +}; + +static char * const pevt_generic_file_help[] = { + N_("Filename"), + N_("Error"), +}; + +static char * const pevt_dccrecverr_help[] = { + N_("Filename"), + N_("Destination filename"), + N_("Nickname"), + N_("Error"), +}; + +static char * const pevt_dccrecvcomp_help[] = { + N_("Filename"), + N_("Destination filename"), + N_("Nickname"), + N_("CPS"), +}; + +static char * const pevt_dccconfail_help[] = { + N_("DCC Type"), + N_("Nickname"), + N_("Error"), +}; + +static char * const pevt_dccchatcon_help[] = { + N_("Nickname"), + N_("IP address"), +}; + +static char * const pevt_dcccon_help[] = { + N_("Nickname"), + N_("IP address"), + N_("Filename"), +}; + +static char * const pevt_dccsendfail_help[] = { + N_("Filename"), + N_("Nickname"), + N_("Error"), +}; + +static char * const pevt_dccsendcomp_help[] = { + N_("Filename"), + N_("Nickname"), + N_("CPS"), +}; + +static char * const pevt_dccoffer_help[] = { + N_("Filename"), + N_("Nickname"), + N_("Pathname"), +}; + +static char * const pevt_dccfileabort_help[] = { + N_("Nickname"), + N_("Filename") +}; + +static char * const pevt_dccchatabort_help[] = { + N_("Nickname"), +}; + +static char * const pevt_dccresumeoffer_help[] = { + N_("Nickname"), + N_("Filename"), + N_("Position"), +}; + +static char * const pevt_dccsendoffer_help[] = { + N_("Nickname"), + N_("Filename"), + N_("Size"), + N_("IP address"), +}; + +static char * const pevt_dccgenericoffer_help[] = { + N_("DCC String"), + N_("Nickname"), +}; + +static char * const pevt_notifynumber_help[] = { + N_("Number of notify items"), +}; + +static char * const pevt_serverlookup_help[] = { + N_("Server Name"), +}; + +static char * const pevt_servererror_help[] = { + N_("Text"), +}; + +static char * const pevt_foundip_help[] = { + N_("IP"), +}; + +static char * const pevt_dccrename_help[] = { + N_("Old Filename"), + N_("New Filename"), +}; + +static char * const pevt_ctcpsend_help[] = { + N_("Receiver"), + N_("Message"), +}; + +static char * const pevt_ignoreaddremove_help[] = { + N_("Hostmask"), +}; + +static char * const pevt_resolvinguser_help[] = { + N_("Nickname"), + N_("Hostname"), +}; + +static char * const pevt_malformed_help[] = { + N_("Nickname"), + N_("The Packet"), +}; + +static char * const pevt_pingtimeout_help[] = { + N_("Seconds"), +}; + +static char * const pevt_uinvite_help[] = { + N_("Nick of person who have been invited"), + N_("Channel Name"), + N_("Server Name"), +}; + +static char * const pevt_banlist_help[] = { + N_("Channel"), + N_("Banmask"), + N_("Who set the ban"), + N_("Ban time"), +}; + +static char * const pevt_discon_help[] = { + N_("Error"), +}; + +#include "textevents.h" + +static void +pevent_load_defaults () +{ + int i; + + for (i = 0; i < NUM_XP; i++) + { + if (pntevts_text[i]) + free (pntevts_text[i]); + + /* make-te.c sets this 128 flag (DON'T call gettext() flag) */ + if (te[i].num_args & 128) + pntevts_text[i] = strdup (te[i].def); + else + pntevts_text[i] = strdup (_(te[i].def)); + } +} + +void +pevent_make_pntevts () +{ + int i, m; + char out[1024]; + + for (i = 0; i < NUM_XP; i++) + { + if (pntevts[i] != NULL) + free (pntevts[i]); + if (pevt_build_string (pntevts_text[i], &(pntevts[i]), &m) != 0) + { + snprintf (out, sizeof (out), + _("Error parsing event %s.\nLoading default."), te[i].name); + fe_message (out, FE_MSG_WARN); + free (pntevts_text[i]); + /* make-te.c sets this 128 flag (DON'T call gettext() flag) */ + if (te[i].num_args & 128) + pntevts_text[i] = strdup (te[i].def); + else + pntevts_text[i] = strdup (_(te[i].def)); + if (pevt_build_string (pntevts_text[i], &(pntevts[i]), &m) != 0) + { + fprintf (stderr, + "XChat CRITICAL *** default event text failed to build!\n"); + abort (); + } + } + } +} + +/* Loading happens at 2 levels: + 1) File is read into blocks + 2) Pe block is parsed and loaded + + --AGL */ + +/* Better hope you pass good args.. --AGL */ + +static void +pevent_trigger_load (int *i_penum, char **i_text, char **i_snd) +{ + int penum = *i_penum, len; + char *text = *i_text, *snd = *i_snd; + + if (penum != -1 && text != NULL) + { + len = strlen (text) + 1; + if (pntevts_text[penum]) + free (pntevts_text[penum]); + pntevts_text[penum] = malloc (len); + memcpy (pntevts_text[penum], text, len); + } + + if (text) + free (text); + if (snd) + free (snd); + *i_text = NULL; + *i_snd = NULL; + *i_penum = 0; +} + +static int +pevent_find (char *name, int *i_i) +{ + int i = *i_i, j; + + j = i + 1; + while (1) + { + if (j == NUM_XP) + j = 0; + if (strcmp (te[j].name, name) == 0) + { + *i_i = j; + return j; + } + if (j == i) + return -1; + j++; + } +} + +int +pevent_load (char *filename) +{ + /* AGL, I've changed this file and pevent_save, could you please take a look at + * the changes and possibly modify them to suit you + * //David H + */ + char *buf, *ibuf; + int fd, i = 0, pnt = 0; + struct stat st; + char *text = NULL, *snd = NULL; + int penum = 0; + char *ofs; + + if (filename == NULL) + fd = xchat_open_file ("pevents.conf", O_RDONLY, 0, 0); + else + fd = xchat_open_file (filename, O_RDONLY, 0, XOF_FULLPATH); + + if (fd == -1) + return 1; + if (fstat (fd, &st) != 0) + return 1; + ibuf = malloc (st.st_size); + read (fd, ibuf, st.st_size); + close (fd); + + while (buf_get_line (ibuf, &buf, &pnt, st.st_size)) + { + if (buf[0] == '#') + continue; + if (strlen (buf) == 0) + continue; + + ofs = strchr (buf, '='); + if (!ofs) + continue; + *ofs = 0; + ofs++; + /*if (*ofs == 0) + continue;*/ + + if (strcmp (buf, "event_name") == 0) + { + if (penum >= 0) + pevent_trigger_load (&penum, &text, &snd); + penum = pevent_find (ofs, &i); + continue; + } else if (strcmp (buf, "event_text") == 0) + { + if (text) + free (text); + +#if 0 + /* This allows updating of old strings. We don't use new defaults + if the user has customized the strings (.e.g a text theme). + Hash of the old default is enough to identify and replace it. + This only works in English. */ + + switch (g_str_hash (ofs)) + { + case 0x526743a4: + /* %C08,02 Hostmask PRIV NOTI CHAN CTCP INVI UNIG %O */ + text = strdup (te[XP_TE_IGNOREHEADER].def); + break; + + case 0xe91bc9c2: + /* %C08,02 %O */ + text = strdup (te[XP_TE_IGNOREFOOTER].def); + break; + + case 0x1fbfdf22: + /* -%C10-%C11-%O$tDCC RECV: Cannot open $1 for writing - aborting. */ + text = strdup (te[XP_TE_DCCFILEERR].def); + break; + + default: + text = strdup (ofs); + } +#else + text = strdup (ofs); +#endif + + continue; + }/* else if (strcmp (buf, "event_sound") == 0) + { + if (snd) + free (snd); + snd = strdup (ofs); + continue; + }*/ + + continue; + } + + pevent_trigger_load (&penum, &text, &snd); + free (ibuf); + return 0; +} + +static void +pevent_check_all_loaded () +{ + int i; + + for (i = 0; i < NUM_XP; i++) + { + if (pntevts_text[i] == NULL) + { + /*printf ("%s\n", te[i].name); + snprintf(out, sizeof(out), "The data for event %s failed to load. Reverting to defaults.\nThis may be because a new version of XChat is loading an old config file.\n\nCheck all print event texts are correct", evtnames[i]); + gtkutil_simpledialog(out); */ + /* make-te.c sets this 128 flag (DON'T call gettext() flag) */ + if (te[i].num_args & 128) + pntevts_text[i] = strdup (te[i].def); + else + pntevts_text[i] = strdup (_(te[i].def)); + } + } +} + +void +load_text_events () +{ + memset (&pntevts_text, 0, sizeof (char *) * (NUM_XP)); + memset (&pntevts, 0, sizeof (char *) * (NUM_XP)); + + if (pevent_load (NULL)) + pevent_load_defaults (); + pevent_check_all_loaded (); + pevent_make_pntevts (); +} + +/* + CL: format_event now handles filtering of arguments: + 1) if prefs.stripcolor is set, filter all style control codes from arguments + 2) always strip \010 (ATTR_HIDDEN) from arguments: it is only for use in the format string itself +*/ +#define ARG_FLAG(argn) (1 << (argn)) + +void +format_event (session *sess, int index, char **args, char *o, int sizeofo, unsigned int stripcolor_args) +{ + int len, oi, ii, numargs; + char *i, *ar, d, a, done_all = FALSE; + + i = pntevts[index]; + numargs = te[index].num_args & 0x7f; + + oi = ii = len = d = a = 0; + o[0] = 0; + + if (i == NULL) + return; + + while (done_all == FALSE) + { + d = i[ii++]; + switch (d) + { + case 0: + memcpy (&len, &(i[ii]), sizeof (int)); + ii += sizeof (int); + if (oi + len > sizeofo) + { + printf ("Overflow in display_event (%s)\n", i); + o[0] = 0; + return; + } + memcpy (&(o[oi]), &(i[ii]), len); + oi += len; + ii += len; + break; + case 1: + a = i[ii++]; + if (a > numargs) + { + fprintf (stderr, + "XChat DEBUG: display_event: arg > numargs (%d %d %s)\n", + a, numargs, i); + break; + } + ar = args[(int) a + 1]; + if (ar == NULL) + { + printf ("arg[%d] is NULL in print event\n", a + 1); + } else + { + if (stripcolor_args & ARG_FLAG(a + 1)) len = strip_color2 (ar, -1, &o[oi], STRIP_ALL); + else len = strip_hidden_attribute (ar, &o[oi]); + oi += len; + } + break; + case 2: + o[oi++] = '\n'; + o[oi++] = 0; + done_all = TRUE; + continue; + case 3: +/* if (sess->type == SESS_DIALOG) + { + if (prefs.dialog_indent_nicks) + o[oi++] = '\t'; + else + o[oi++] = ' '; + } else + {*/ + if (prefs.indent_nicks) + o[oi++] = '\t'; + else + o[oi++] = ' '; + /*}*/ + break; + } + } + o[oi] = 0; + if (*o == '\n') + o[0] = 0; +} + +static void +display_event (session *sess, int event, char **args, unsigned int stripcolor_args) +{ + char o[4096]; + format_event (sess, event, args, o, sizeof (o), stripcolor_args); + if (o[0]) + PrintText (sess, o); +} + +int +pevt_build_string (const char *input, char **output, int *max_arg) +{ + struct pevt_stage1 *s = NULL, *base = NULL, *last = NULL, *next; + int clen; + char o[4096], d, *obuf, *i; + int oi, ii, max = -1, len, x; + + len = strlen (input); + i = malloc (len + 1); + memcpy (i, input, len + 1); + check_special_chars (i, TRUE); + + len = strlen (i); + + clen = oi = ii = 0; + + for (;;) + { + if (ii == len) + break; + d = i[ii++]; + if (d != '$') + { + o[oi++] = d; + continue; + } + if (i[ii] == '$') + { + o[oi++] = '$'; + continue; + } + if (oi > 0) + { + s = (struct pevt_stage1 *) malloc (sizeof (struct pevt_stage1)); + if (base == NULL) + base = s; + if (last != NULL) + last->next = s; + last = s; + s->next = NULL; + s->data = malloc (oi + sizeof (int) + 1); + s->len = oi + sizeof (int) + 1; + clen += oi + sizeof (int) + 1; + s->data[0] = 0; + memcpy (&(s->data[1]), &oi, sizeof (int)); + memcpy (&(s->data[1 + sizeof (int)]), o, oi); + oi = 0; + } + if (ii == len) + { + fe_message ("String ends with a $", FE_MSG_WARN); + return 1; + } + d = i[ii++]; + if (d == 'a') + { /* Hex value */ + x = 0; + if (ii == len) + goto a_len_error; + d = i[ii++]; + d -= '0'; + x = d * 100; + if (ii == len) + goto a_len_error; + d = i[ii++]; + d -= '0'; + x += d * 10; + if (ii == len) + goto a_len_error; + d = i[ii++]; + d -= '0'; + x += d; + if (x > 255) + goto a_range_error; + o[oi++] = x; + continue; + + a_len_error: + fe_message ("String ends in $a", FE_MSG_WARN); + return 1; + a_range_error: + fe_message ("$a value is greater than 255", FE_MSG_WARN); + return 1; + } + if (d == 't') + { + /* Tab - if tabnicks is set then write '\t' else ' ' */ + s = (struct pevt_stage1 *) malloc (sizeof (struct pevt_stage1)); + if (base == NULL) + base = s; + if (last != NULL) + last->next = s; + last = s; + s->next = NULL; + s->data = malloc (1); + s->len = 1; + clen += 1; + s->data[0] = 3; + + continue; + } + if (d < '1' || d > '9') + { + snprintf (o, sizeof (o), "Error, invalid argument $%c\n", d); + fe_message (o, FE_MSG_WARN); + return 1; + } + d -= '0'; + if (max < d) + max = d; + s = (struct pevt_stage1 *) malloc (sizeof (struct pevt_stage1)); + if (base == NULL) + base = s; + if (last != NULL) + last->next = s; + last = s; + s->next = NULL; + s->data = malloc (2); + s->len = 2; + clen += 2; + s->data[0] = 1; + s->data[1] = d - 1; + } + if (oi > 0) + { + s = (struct pevt_stage1 *) malloc (sizeof (struct pevt_stage1)); + if (base == NULL) + base = s; + if (last != NULL) + last->next = s; + last = s; + s->next = NULL; + s->data = malloc (oi + sizeof (int) + 1); + s->len = oi + sizeof (int) + 1; + clen += oi + sizeof (int) + 1; + s->data[0] = 0; + memcpy (&(s->data[1]), &oi, sizeof (int)); + memcpy (&(s->data[1 + sizeof (int)]), o, oi); + oi = 0; + } + s = (struct pevt_stage1 *) malloc (sizeof (struct pevt_stage1)); + if (base == NULL) + base = s; + if (last != NULL) + last->next = s; + last = s; + s->next = NULL; + s->data = malloc (1); + s->len = 1; + clen += 1; + s->data[0] = 2; + + oi = 0; + s = base; + obuf = malloc (clen); + while (s) + { + next = s->next; + memcpy (&obuf[oi], s->data, s->len); + oi += s->len; + free (s->data); + free (s); + s = next; + } + + free (i); + + if (max_arg) + *max_arg = max; + if (output) + *output = obuf; + + return 0; +} + + +/* black n white(0/1) are bad colors for nicks, and we'll use color 2 for us */ +/* also light/dark gray (14/15) */ +/* 5,7,8 are all shades of yellow which happen to look dman near the same */ + +static char rcolors[] = { 19, 20, 22, 24, 25, 26, 27, 28, 29 }; + +static int +color_of (char *name) +{ + int i = 0, sum = 0; + + while (name[i]) + sum += name[i++]; + sum %= sizeof (rcolors) / sizeof (char); + return rcolors[sum]; +} + + +/* called by EMIT_SIGNAL macro */ + +void +text_emit (int index, session *sess, char *a, char *b, char *c, char *d) +{ + char *word[PDIWORDS]; + int i; + unsigned int stripcolor_args = (prefs.stripcolor ? 0xFFFFFFFF : 0); + char tbuf[NICKLEN + 4]; + + if (prefs.colorednicks && (index == XP_TE_CHANACTION || index == XP_TE_CHANMSG)) + { + snprintf (tbuf, sizeof (tbuf), "\003%d%s", color_of (a), a); + a = tbuf; + stripcolor_args &= ~ARG_FLAG(1); /* don't strip color from this argument */ + } + + word[0] = te[index].name; + word[1] = (a ? a : "\000"); + word[2] = (b ? b : "\000"); + word[3] = (c ? c : "\000"); + word[4] = (d ? d : "\000"); + for (i = 5; i < PDIWORDS; i++) + word[i] = "\000"; + + if (plugin_emit_print (sess, word)) + return; + + /* If a plugin's callback executes "/close", 'sess' may be invalid */ + if (!is_session (sess)) + return; + + switch (index) + { + case XP_TE_JOIN: + case XP_TE_PART: + case XP_TE_PARTREASON: + case XP_TE_QUIT: + /* implement ConfMode / Hide Join and Part Messages */ + if (chanopt_is_set (prefs.confmode, sess->text_hidejoinpart)) + return; + break; + + /* ===Private message=== */ + case XP_TE_PRIVMSG: + case XP_TE_DPRIVMSG: + case XP_TE_PRIVACTION: + case XP_TE_DPRIVACTION: + if (chanopt_is_set_a (prefs.input_beep_priv, sess->alert_beep)) + sound_beep (sess); + if (chanopt_is_set_a (prefs.input_flash_priv, sess->alert_taskbar)) + fe_flash_window (sess); + /* why is this one different? because of plugin-tray.c's hooks! ugly */ + if (sess->alert_tray == SET_ON) + fe_tray_set_icon (FE_ICON_MESSAGE); + break; + + /* ===Highlighted message=== */ + case XP_TE_HCHANACTION: + case XP_TE_HCHANMSG: + if (chanopt_is_set_a (prefs.input_beep_hilight, sess->alert_beep)) + sound_beep (sess); + if (chanopt_is_set_a (prefs.input_flash_hilight, sess->alert_taskbar)) + fe_flash_window (sess); + if (sess->alert_tray == SET_ON) + fe_tray_set_icon (FE_ICON_MESSAGE); + break; + + /* ===Channel message=== */ + case XP_TE_CHANACTION: + case XP_TE_CHANMSG: + if (chanopt_is_set_a (prefs.input_beep_chans, sess->alert_beep)) + sound_beep (sess); + if (chanopt_is_set_a (prefs.input_flash_chans, sess->alert_taskbar)) + fe_flash_window (sess); + if (sess->alert_tray == SET_ON) + fe_tray_set_icon (FE_ICON_MESSAGE); + break; + } + + sound_play_event (index); + display_event (sess, index, word, stripcolor_args); +} + +char * +text_find_format_string (char *name) +{ + int i = 0; + + i = pevent_find (name, &i); + if (i >= 0) + return pntevts_text[i]; + + return NULL; +} + +int +text_emit_by_name (char *name, session *sess, char *a, char *b, char *c, char *d) +{ + int i = 0; + + i = pevent_find (name, &i); + if (i >= 0) + { + text_emit (i, sess, a, b, c, d); + return 1; + } + + return 0; +} + +void +pevent_save (char *fn) +{ + int fd, i, rc; + ssize_t nb; + char *file_tmp = NULL; + char buf[1024]; + + if (!fn) + fd = xchat_open_file ("pevents.conf.bug147832", O_CREAT | O_TRUNC | O_WRONLY, + 0x180, XOF_DOMODE); + else + { + file_tmp = malloc( strlen( fn ) + strlen( ".bug147832" ) + 1 ); + if( ! file_tmp ) + return; + strcpy( file_tmp, fn ); + strcat( file_tmp, ".bug147832" ); + + fd = xchat_open_file (file_tmp, O_CREAT | O_TRUNC | O_WRONLY, 0x180, + XOF_FULLPATH | XOF_DOMODE); + } + + if (fd == -1) + { + /* + fe_message ("Error opening config file\n", FALSE); + If we get here when X-Chat is closing the fe-message causes a nice & hard crash + so we have to use perror which doesn't rely on GTK + */ + + perror ("Error opening config file\n"); + if( ! file_tmp ) + free( file_tmp ); + return; + } + + nb = 1; + for (i = 0; i < NUM_XP; i++) + { + if( nb > 0 ) nb = write (fd, buf, snprintf (buf, sizeof (buf), + "event_name=%s\n", te[i].name)); + if( nb > 0 ) nb = write (fd, buf, snprintf (buf, sizeof (buf), + "event_text=%s\n\n", pntevts_text[i])); + } + + if( nb <= 0 ) + { + fprintf( stderr, "pevent_save: write() failed\n" ); + close( fd ); + if( file_tmp ) + free( file_tmp ); + return; + } + + if( close (fd) != 0 ) + { + perror( "pevent_save: close() failed" ); + if( file_tmp ) + free( file_tmp ); + return; + } + + if( ! fn ) + rc = xchat_rename_file( "pevents.conf.bug147832", "pevents.conf", XOF_DOMODE ); + else + rc = xchat_rename_file( file_tmp, fn, XOF_FULLPATH | XOF_DOMODE ); + + if( rc != 0 ) + { + perror( "pevent_save: xchat_rename_file() failed" ); + if( file_tmp ) + free( file_tmp ); + return; + } + + if( file_tmp ) + free( file_tmp ); +} + +/* =========================== */ +/* ========== SOUND ========== */ +/* =========================== */ + +char *sound_files[NUM_XP]; + +void +sound_beep (session *sess) +{ + if (sound_files[XP_TE_BEEP] && sound_files[XP_TE_BEEP][0]) + /* user defined beep _file_ */ + sound_play_event (XP_TE_BEEP); + else + /* system beep */ + fe_beep (); +} + +static char * +sound_find_command (void) +{ + /* some sensible unix players. You're bound to have one of them */ + static const char * const progs[] = {"aplay", "esdplay", "soxplay", "artsplay", NULL}; + char *cmd; + int i = 0; + + if (prefs.soundcmd[0]) + return g_strdup (prefs.soundcmd); + + while (progs[i]) + { + cmd = g_find_program_in_path (progs[i]); + if (cmd) + return cmd; + i++; + } + + return NULL; +} + +void +sound_play (const char *file, gboolean quiet) +{ + char buf[512]; + char wavfile[512]; + char *file_fs; + char *cmd; + + /* the pevents GUI editor triggers this after removing a soundfile */ + if (!file[0]) + return; + +#ifdef WIN32 + /* check for fullpath, windows style */ + if (strlen (file) > 3 && + file[1] == ':' && (file[2] == '\\' || file[2] == '/') ) + { + strncpy (wavfile, file, sizeof (wavfile)); + } else +#endif + if (file[0] != '/') + { + snprintf (wavfile, sizeof (wavfile), "%s/%s", prefs.sounddir, file); + } else + { + strncpy (wavfile, file, sizeof (wavfile)); + } + wavfile[sizeof (wavfile) - 1] = 0; /* ensure termination */ + + file_fs = xchat_filename_from_utf8 (wavfile, -1, 0, 0, 0); + if (!file_fs) + return; + + if (access (file_fs, R_OK) == 0) + { + cmd = sound_find_command (); + +#ifdef WIN32 + if (cmd == NULL || strcmp (cmd, "esdplay") == 0) + { + PlaySound (file_fs, NULL, SND_NODEFAULT|SND_FILENAME|SND_ASYNC); + } else +#endif + { + if (cmd) + { + if (strchr (file_fs, ' ')) + snprintf (buf, sizeof (buf), "%s \"%s\"", cmd, file_fs); + else + snprintf (buf, sizeof (buf), "%s %s", cmd, file_fs); + buf[sizeof (buf) - 1] = '\0'; + xchat_exec (buf); + } + } + + if (cmd) + g_free (cmd); + + } else + { + if (!quiet) + { + snprintf (buf, sizeof (buf), _("Cannot read sound file:\n%s"), wavfile); + fe_message (buf, FE_MSG_ERROR); + } + } + + g_free (file_fs); +} + +void +sound_play_event (int i) +{ + if (sound_files[i]) + sound_play (sound_files[i], FALSE); +} + +static void +sound_load_event (char *evt, char *file) +{ + int i = 0; + + if (file[0] && pevent_find (evt, &i) != -1) + { + if (sound_files[i]) + free (sound_files[i]); + sound_files[i] = strdup (file); + } +} + +void +sound_load () +{ + int fd; + char buf[512]; + char evt[128]; + + memset (&sound_files, 0, sizeof (char *) * (NUM_XP)); + + fd = xchat_open_file ("sound.conf", O_RDONLY, 0, 0); + if (fd == -1) + return; + + evt[0] = 0; + while (waitline (fd, buf, sizeof buf, FALSE) != -1) + { + if (strncmp (buf, "event=", 6) == 0) + { + safe_strcpy (evt, buf + 6, sizeof (evt)); + } + else if (strncmp (buf, "sound=", 6) == 0) + { + if (evt[0] != 0) + { + sound_load_event (evt, buf + 6); + evt[0] = 0; + } + } + } + + close (fd); +} + +void +sound_save () +{ + int fd, i; + ssize_t nb; + char buf[512]; + + fd = xchat_open_file ("sound.conf.bug147832", O_CREAT | O_TRUNC | O_WRONLY, 0x180, + XOF_DOMODE); + if (fd == -1) + return; + + nb = 1; + + for (i = 0; i < NUM_XP; i++) + { + if (sound_files[i] && sound_files[i][0]) + { + if( nb > 0 ) nb = write (fd, buf, snprintf (buf, sizeof (buf), + "event=%s\n", te[i].name)); + if( nb > 0 ) nb = write (fd, buf, snprintf (buf, sizeof (buf), + "sound=%s\n\n", sound_files[i])); + } + } + + if( nb <= 0 ) + { + fprintf( stderr, "sound_save: write() failed\n" ); + close( fd ); + return; + } + + if( close (fd) != 0 ) + { + perror( "sound_save: close() failed" ); + return; + } + + if( xchat_rename_file( "sound.conf.bug147832", "sound.conf", XOF_DOMODE ) != 0 ) + { + perror( "sound_save: xchat_rename_file() failed" ); + return; + } +} diff --git a/etc/wyatt8740/src/common/text.h b/etc/wyatt8740/src/common/text.h new file mode 100644 index 0000000..150821a --- /dev/null +++ b/etc/wyatt8740/src/common/text.h @@ -0,0 +1,42 @@ +#include "textenums.h" + +#ifndef XCHAT_TEXT_H +#define XCHAT_TEXT_H + +#define EMIT_SIGNAL(i, sess, a, b, c, d, e) text_emit(i, sess, a, b, c, d) + +struct text_event +{ + char *name; + char * const *help; + int num_args; + char *def; +}; + +void scrollback_close (session *sess); +void scrollback_load (session *sess); + +int text_word_check (char *word, int len); +void PrintText (session *sess, char *text); +void PrintTextf (session *sess, char *format, ...); +void log_close (session *sess); +void log_open_or_close (session *sess); +void load_text_events (void); +void pevent_save (char *fn); +int pevt_build_string (const char *input, char **output, int *max_arg); +int pevent_load (char *filename); +void pevent_make_pntevts (void); +void text_emit (int index, session *sess, char *a, char *b, char *c, char *d); +int text_emit_by_name (char *name, session *sess, char *a, char *b, char *c, char *d); +char *text_validate (char **text, int *len); +int get_stamp_str (char *fmt, time_t tim, char **ret); +void format_event (session *sess, int index, char **args, char *o, int sizeofo, unsigned int stripcolor_args); +char *text_find_format_string (char *name); + +void sound_play (const char *file, gboolean quiet); +void sound_play_event (int i); +void sound_beep (session *); +void sound_load (); +void sound_save (); + +#endif diff --git a/etc/wyatt8740/src/common/textenums.h b/etc/wyatt8740/src/common/textenums.h new file mode 100644 index 0000000..682a35e --- /dev/null +++ b/etc/wyatt8740/src/common/textenums.h @@ -0,0 +1,76 @@ +/* this file is auto generated, edit textevents.in instead! */ + +enum +{ + XP_TE_ADDNOTIFY, XP_TE_BANLIST, + XP_TE_BANNED, XP_TE_BEEP, + XP_TE_CHANGENICK, XP_TE_CHANACTION, + XP_TE_HCHANACTION, XP_TE_CHANBAN, + XP_TE_CHANDATE, XP_TE_CHANDEHOP, + XP_TE_CHANDEOP, XP_TE_CHANDEVOICE, + XP_TE_CHANEXEMPT, XP_TE_CHANHOP, + XP_TE_CHANINVITE, XP_TE_CHANLISTHEAD, + XP_TE_CHANMSG, XP_TE_CHANMODEGEN, + XP_TE_CHANMODES, XP_TE_HCHANMSG, + XP_TE_CHANNOTICE, XP_TE_CHANOP, + XP_TE_CHANRMEXEMPT, XP_TE_CHANRMINVITE, + XP_TE_CHANRMKEY, XP_TE_CHANRMLIMIT, + XP_TE_CHANSETKEY, XP_TE_CHANSETLIMIT, + XP_TE_CHANUNBAN, XP_TE_CHANVOICE, + XP_TE_CONNECTED, XP_TE_CONNECT, + XP_TE_CONNFAIL, XP_TE_CTCPGEN, + XP_TE_CTCPGENC, XP_TE_CTCPSEND, + XP_TE_CTCPSND, XP_TE_CTCPSNDC, + XP_TE_DCCCHATABORT, XP_TE_DCCCONCHAT, + XP_TE_DCCCHATF, XP_TE_DCCCHATOFFER, + XP_TE_DCCCHATOFFERING, XP_TE_DCCCHATREOFFER, + XP_TE_DCCCONFAIL, XP_TE_DCCGENERICOFFER, + XP_TE_DCCHEAD, XP_TE_MALFORMED, + XP_TE_DCCOFFER, XP_TE_DCCIVAL, + XP_TE_DCCRECVABORT, XP_TE_DCCRECVCOMP, + XP_TE_DCCCONRECV, XP_TE_DCCRECVERR, + XP_TE_DCCFILEERR, XP_TE_DCCRENAME, + XP_TE_DCCRESUMEREQUEST, XP_TE_DCCSENDABORT, + XP_TE_DCCSENDCOMP, XP_TE_DCCCONSEND, + XP_TE_DCCSENDFAIL, XP_TE_DCCSENDOFFER, + XP_TE_DCCSTALL, XP_TE_DCCTOUT, + XP_TE_DELNOTIFY, XP_TE_DISCON, + XP_TE_FOUNDIP, XP_TE_GENMSG, + XP_TE_IGNOREADD, XP_TE_IGNORECHANGE, + XP_TE_IGNOREFOOTER, XP_TE_IGNOREHEADER, + XP_TE_IGNOREREMOVE, XP_TE_IGNOREEMPTY, + XP_TE_INVITE, XP_TE_INVITED, + XP_TE_JOIN, XP_TE_KEYWORD, + XP_TE_KICK, XP_TE_KILL, + XP_TE_MSGSEND, XP_TE_MOTD, + XP_TE_MOTDSKIP, XP_TE_NICKCLASH, + XP_TE_NICKFAIL, XP_TE_NODCC, + XP_TE_NOCHILD, XP_TE_NOTICE, + XP_TE_NOTICESEND, XP_TE_NOTIFYEMPTY, + XP_TE_NOTIFYHEAD, XP_TE_NOTIFYNUMBER, + XP_TE_NOTIFYOFFLINE, XP_TE_NOTIFYONLINE, + XP_TE_OPENDIALOG, XP_TE_PART, + XP_TE_PARTREASON, XP_TE_PINGREP, + XP_TE_PINGTIMEOUT, XP_TE_PRIVACTION, + XP_TE_DPRIVACTION, XP_TE_PRIVMSG, + XP_TE_DPRIVMSG, XP_TE_ALREADYPROCESS, + XP_TE_QUIT, XP_TE_RAWMODES, + XP_TE_WALLOPS, XP_TE_RESOLVINGUSER, + XP_TE_SERVERCONNECTED, XP_TE_SERVERERROR, + XP_TE_SERVERLOOKUP, XP_TE_SERVNOTICE, + XP_TE_SERVTEXT, XP_TE_SSLMESSAGE, + XP_TE_STOPCONNECT, XP_TE_TOPIC, + XP_TE_NEWTOPIC, XP_TE_TOPICDATE, + XP_TE_UKNHOST, XP_TE_USERLIMIT, + XP_TE_USERSONCHAN, XP_TE_WHOIS_AUTH, + XP_TE_WHOIS5, XP_TE_WHOIS2, + XP_TE_WHOIS6, XP_TE_WHOIS_ID, + XP_TE_WHOIS4, XP_TE_WHOIS4T, + XP_TE_WHOIS1, XP_TE_WHOIS_REALHOST, + XP_TE_WHOIS3, XP_TE_WHOIS_SPECIAL, + XP_TE_UJOIN, XP_TE_UKICK, + XP_TE_UPART, XP_TE_UPARTREASON, + XP_TE_UACTION, XP_TE_UINVITE, + XP_TE_UCHANMSG, XP_TE_UCHANGENICK, + NUM_XP +}; diff --git a/etc/wyatt8740/src/common/textevents.h b/etc/wyatt8740/src/common/textevents.h new file mode 100644 index 0000000..08a54da --- /dev/null +++ b/etc/wyatt8740/src/common/textevents.h @@ -0,0 +1,424 @@ +/* this file is auto generated, edit textevents.in instead! */ + +const struct text_event te[] = { + +{"Add Notify", pevt_generic_nick_help, 1, +N_("%C22*%O$t$1 added to notify list.")}, + +{"Ban List", pevt_banlist_help, 4, +N_("%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3")}, + +{"Banned", pevt_generic_channel_help, 1, +N_("%C22*%O$tCannot join%C26 %B$1 %O(You are banned).")}, + +{"Beep", pevt_generic_none_help, 128, +""}, + +{"Change Nick", pevt_changenick_help, 2, +N_("%C22*%O$t$1 is now known as $2")}, + +{"Channel Action", pevt_chanaction_help, 132, +"%C18*$t$1%O $2"}, + +{"Channel Action Hilight", pevt_chanaction_help, 132, +"%C21*%O$t%C21%B$1%O%C21 $2"}, + +{"Channel Ban", pevt_chanban_help, 2, +N_("%C22*%O$t$1 sets ban on $2")}, + +{"Channel Creation", pevt_chandate_help, 2, +N_("%C22*%O$tChannel $1 created on $2")}, + +{"Channel DeHalfOp", pevt_chandehop_help, 2, +N_("%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2")}, + +{"Channel DeOp", pevt_chandeop_help, 2, +N_("%C22*%O$t%C26$1%O removes channel operator status from%C26 $2")}, + +{"Channel DeVoice", pevt_chandevoice_help, 2, +N_("%C22*%O$t%C26$1%O removes voice from%C26 $2")}, + +{"Channel Exempt", pevt_chanexempt_help, 2, +N_("%C22*%O$t$1 sets exempt on $2")}, + +{"Channel Half-Operator", pevt_chanhop_help, 2, +N_("%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2")}, + +{"Channel INVITE", pevt_chaninvite_help, 2, +N_("%C22*%O$t$1 sets invite on $2")}, + +{"Channel List", pevt_generic_none_help, 0, +N_("%UChannel Users Topic")}, + +{"Channel Message", pevt_chanmsg_help, 132, +"%C18%H<%H$4$1%H>%H%O$t$2"}, + +{"Channel Mode Generic", pevt_chanmodegen_help, 4, +N_("%C22*%O$t$1 sets mode $2$3 $4")}, + +{"Channel Modes", pevt_chanmodes_help, 2, +N_("%C22*%O$t%C22Channel $1 modes: $2")}, + +{"Channel Msg Hilight", pevt_chanmsg_help, 132, +"$4%C21%B%H<%H$1%H>%H%O%C21$t$2"}, + +{"Channel Notice", pevt_channotice_help, 131, +"%C28-%C29$1/$2%C28-%O$t$3"}, + +{"Channel Operator", pevt_chanop_help, 2, +N_("%C22*%O$t%C26$1%O gives channel operator status to%C26 $2")}, + +{"Channel Remove Exempt", pevt_chanrmexempt_help, 2, +N_("%C22*%O$t$1 removes exempt on $2")}, + +{"Channel Remove Invite", pevt_chanrminvite_help, 2, +N_("%C22*%O$t$1 removes invite on $2")}, + +{"Channel Remove Keyword", pevt_chanrmkey_help, 1, +N_("%C22*%O$t$1 removes channel keyword")}, + +{"Channel Remove Limit", pevt_chanrmlimit_help, 1, +N_("%C22*%O$t$1 removes user limit")}, + +{"Channel Set Key", pevt_chansetkey_help, 2, +N_("%C22*%O$t$1 sets channel keyword to $2")}, + +{"Channel Set Limit", pevt_chansetlimit_help, 2, +N_("%C22*%O$t$1 sets channel limit to $2")}, + +{"Channel UnBan", pevt_chanunban_help, 2, +N_("%C22*%O$t$1 removes ban on $2")}, + +{"Channel Voice", pevt_chanvoice_help, 2, +N_("%C22*%O$t%C26$1%O gives voice to%C26 $2")}, + +{"Connected", pevt_generic_none_help, 0, +N_("%C22*%O$t%C22Connected. Now logging in...")}, + +{"Connecting", pevt_connect_help, 3, +N_("%C22*%O$t%C22Connecting to $1 ($2) port $3%O...")}, + +{"Connection Failed", pevt_connfail_help, 1, +N_("%C21*%O$t%C21Connection failed. Error: $1")}, + +{"CTCP Generic", pevt_ctcpgen_help, 2, +N_("%C22*%O$tReceived a CTCP $1 from $2")}, + +{"CTCP Generic to Channel", pevt_ctcpgenc_help, 3, +N_("%C22*%O$tReceived a CTCP $1 from $2 (to $3)")}, + +{"CTCP Send", pevt_ctcpsend_help, 2, +N_("%C19>%O$1%C19<%O$tCTCP $2")}, + +{"CTCP Sound", pevt_ctcpsnd_help, 2, +N_("%C22*%O$tReceived a CTCP Sound $1 from $2")}, + +{"CTCP Sound to Channel", pevt_ctcpsnd_help, 3, +N_("%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)")}, + +{"DCC CHAT Abort", pevt_dccchatabort_help, 1, +N_("%C22*%O$tDCC CHAT to %C26$1%O aborted.")}, + +{"DCC CHAT Connect", pevt_dccchatcon_help, 2, +N_("%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]")}, + +{"DCC CHAT Failed", pevt_dccchaterr_help, 4, +N_("%C22*%O$tDCC CHAT to %C26$1%O lost ($4).")}, + +{"DCC CHAT Offer", pevt_generic_nick_help, 1, +N_("%C22*%O$tReceived a DCC CHAT offer from $1")}, + +{"DCC CHAT Offering", pevt_generic_nick_help, 1, +N_("%C22*%O$tOffering DCC CHAT to $1")}, + +{"DCC CHAT Reoffer", pevt_generic_nick_help, 1, +N_("%C22*%O$tAlready offering CHAT to $1")}, + +{"DCC Conection Failed", pevt_dccconfail_help, 3, +N_("%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3).")}, + +{"DCC Generic Offer", pevt_dccgenericoffer_help, 2, +N_("%C22*%O$tReceived '$1%O' from $2")}, + +{"DCC Header", pevt_generic_none_help, 0, +N_("%C24,18 Type To/From Status Size Pos File ")}, + +{"DCC Malformed", pevt_malformed_help, 2, +N_("%C22*%O$tReceived a malformed DCC request from %C26$1%O.%010%C22*%O$tContents of packet: $2")}, + +{"DCC Offer", pevt_dccoffer_help, 3, +N_("%C22*%O$tOffering%C26 $1%O to%C26 $2")}, + +{"DCC Offer Not Valid", pevt_generic_none_help, 0, +N_("%C22*%O$tNo such DCC offer.")}, + +{"DCC RECV Abort", pevt_dccfileabort_help, 2, +N_("%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted.")}, + +{"DCC RECV Complete", pevt_dccrecvcomp_help, 4, +N_("%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O.")}, + +{"DCC RECV Connect", pevt_dcccon_help, 3, +N_("%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]")}, + +{"DCC RECV Failed", pevt_dccrecverr_help, 4, +N_("%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4).")}, + +{"DCC RECV File Open Error", pevt_generic_file_help, 2, +N_("%C22*%O$tDCC RECV: Cannot open $1 for writing ($2).")}, + +{"DCC Rename", pevt_dccrename_help, 2, +N_("%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead.")}, + +{"DCC RESUME Request", pevt_dccresumeoffer_help, 3, +N_("%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C.")}, + +{"DCC SEND Abort", pevt_dccfileabort_help, 2, +N_("%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted.")}, + +{"DCC SEND Complete", pevt_dccsendcomp_help, 3, +N_("%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O.")}, + +{"DCC SEND Connect", pevt_dcccon_help, 3, +N_("%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]")}, + +{"DCC SEND Failed", pevt_dccsendfail_help, 3, +N_("%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3")}, + +{"DCC SEND Offer", pevt_dccsendoffer_help, 4, +N_("%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)")}, + +{"DCC Stall", pevt_dccstall_help, 3, +N_("%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting.")}, + +{"DCC Timeout", pevt_dccstall_help, 3, +N_("%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting.")}, + +{"Delete Notify", pevt_generic_nick_help, 1, +N_("%C22*%O$t$1 deleted from notify list.")}, + +{"Disconnected", pevt_discon_help, 1, +N_("%C22*%O$tDisconnected ($1).")}, + +{"Found IP", pevt_foundip_help, 1, +N_("%C22*%O$tFound your IP: [$1]")}, + +{"Generic Message", pevt_genmsg_help, 130, +"$1$t$2"}, + +{"Ignore Add", pevt_ignoreaddremove_help, 1, +N_("%O%C26$1%O added to ignore list.")}, + +{"Ignore Changed", pevt_ignoreaddremove_help, 1, +N_("Ignore on %C26$1%O changed.")}, + +{"Ignore Footer", pevt_generic_none_help, 0, +N_("%C24,18 ")}, + +{"Ignore Header", pevt_generic_none_help, 0, +N_("%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG ")}, + +{"Ignore Remove", pevt_ignoreaddremove_help, 1, +N_("%O%C26$1%O removed from ignore list.")}, + +{"Ignorelist Empty", pevt_generic_none_help, 0, +N_(" Ignore list is empty.")}, + +{"Invite", pevt_generic_channel_help, 1, +N_("%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only).")}, + +{"Invited", pevt_invited_help, 3, +N_("%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)")}, + +{"Join", pevt_join_help, 3, +N_("%C19*%O$t%C19%B$1 %B($3) has joined $2")}, + +{"Keyword", pevt_generic_channel_help, 1, +N_("%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword).")}, + +{"Kick", pevt_kick_help, 4, +N_("%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)")}, + +{"Killed", pevt_kill_help, 2, +N_("%C22*%O$tYou have been killed by $1 ($2%O%C22)")}, + +{"Message Send", pevt_ctcpsend_help, 130, +"%C19>%O$1%C19<%O$t$2"}, + +{"Motd", pevt_servertext_help, 129, +"%C16*%O$t$1%O"}, + +{"MOTD Skipped", pevt_generic_none_help, 0, +N_("%C22*%O$t%C22MOTD Skipped.")}, + +{"Nick Clash", pevt_nickclash_help, 2, +N_("%C22*%O$t$1 already in use. Retrying with $2...")}, + +{"Nick Failed", pevt_generic_none_help, 0, +N_("%C22*%O$tNickname already in use. Use /NICK to try another.")}, + +{"No DCC", pevt_generic_none_help, 0, +N_("%C22*%O$tNo such DCC.")}, + +{"No Running Process", pevt_generic_none_help, 0, +N_("%C22*%O$tNo process is currently running")}, + +{"Notice", pevt_notice_help, 130, +"%C28-%C29$1%C28-%O$t$2"}, + +{"Notice Send", pevt_ctcpsend_help, 130, +"%C19>%O$1%C19<%O$t$2"}, + +{"Notify Empty", pevt_generic_none_help, 0, +N_("$tNotify list is empty.")}, + +{"Notify Header", pevt_generic_none_help, 0, +N_("%C24,18 %B Notify List ")}, + +{"Notify Number", pevt_notifynumber_help, 1, +N_("%C22*%O$t$1 users in notify list.")}, + +{"Notify Offline", pevt_generic_nick_help, 3, +N_("%C22*%O$tNotify: $1 is offline ($3).")}, + +{"Notify Online", pevt_generic_nick_help, 3, +N_("%C22*%O$tNotify: $1 is online ($3).")}, + +{"Open Dialog", pevt_generic_none_help, 128, +""}, + +{"Part", pevt_part_help, 3, +N_("%C23*%O$t%C23$1 (%O%C23$2) has left $3")}, + +{"Part with Reason", pevt_partreason_help, 4, +N_("%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)")}, + +{"Ping Reply", pevt_pingrep_help, 2, +N_("%C22*%O$tPing reply from $1: $2 second(s)")}, + +{"Ping Timeout", pevt_pingtimeout_help, 1, +N_("%C22*%O$tNo ping reply for $1 seconds, disconnecting.")}, + +{"Private Action", pevt_privmsg_help, 131, +"%C18**$t$3$1%O $2 %C18**"}, + +{"Private Action to Dialog", pevt_privmsg_help, 131, +"%C18*$t$3$1%O $2"}, + +{"Private Message", pevt_privmsg_help, 131, +"%C28*%C29$3$1%C28*$t%O$2"}, + +{"Private Message to Dialog", pevt_privmsg_help, 131, +"%C18%H<%H$3$1%H>%H%O$t$2"}, + +{"Process Already Running", pevt_generic_none_help, 0, +N_("%C22*%O$tA process is already running")}, + +{"Quit", pevt_quit_help, 3, +N_("%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)")}, + +{"Raw Modes", pevt_rawmodes_help, 2, +N_("%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]")}, + +{"Receive Wallops", pevt_privmsg_help, 2, +N_("%C28-%C29$1/Wallops%C28-%O$t$2")}, + +{"Resolving User", pevt_resolvinguser_help, 2, +N_("%C22*%O$tLooking up IP number for%C26 $1%O...")}, + +{"Server Connected", pevt_generic_none_help, 0, +N_("%C22*%O$t%C22Connected.")}, + +{"Server Error", pevt_servererror_help, 129, +"%C22*%O$t$1"}, + +{"Server Lookup", pevt_serverlookup_help, 1, +N_("%C22*%O$t%C22Looking up $1")}, + +{"Server Notice", pevt_servertext_help, 130, +"%C22*%O$t$1"}, + +{"Server Text", pevt_servertext_help, 131, +"%C22*%O$t$1"}, + +{"SSL Message", pevt_sslmessage_help, 130, +"%C22*%O$t$1"}, + +{"Stop Connection", pevt_sconnect_help, 1, +N_("%C22*%O$tStopped previous connection attempt (pid=$1)")}, + +{"Topic", pevt_topic_help, 2, +N_("%C29*%O$t%C29Topic for $1%C %C29is: $2")}, + +{"Topic Change", pevt_newtopic_help, 3, +N_("%C22*%O$t$1 has changed the topic to: $2")}, + +{"Topic Creation", pevt_topicdate_help, 3, +N_("%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3")}, + +{"Unknown Host", pevt_generic_none_help, 0, +N_("%C22*%O$tUnknown host. Maybe you misspelled it?")}, + +{"User Limit", pevt_generic_channel_help, 1, +N_("%C22*%O$tCannot join%C26 %B$1 %O(User limit reached).")}, + +{"Users On Channel", pevt_usersonchan_help, 2, +N_("%C22*%O$t%C26Users on $1:%C $2")}, + +{"WhoIs Authenticated", pevt_whoisauth_help, 3, +N_("%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3")}, + +{"WhoIs Away Line", pevt_whois5_help, 2, +N_("%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)")}, + +{"WhoIs Channel/Oper Line", pevt_whois2_help, 2, +N_("%C22*%O$t%C28[%O$1%C28]%O $2")}, + +{"WhoIs End", pevt_whois6_help, 1, +N_("%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list.")}, + +{"WhoIs Identified", pevt_whoisid_help, 2, +N_("%C22*%O$t%C28[%O$1%C28]%O $2")}, + +{"WhoIs Idle Line", pevt_whois4_help, 2, +N_("%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2")}, + +{"WhoIs Idle Line with Signon", pevt_whois4t_help, 3, +N_("%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3")}, + +{"WhoIs Name Line", pevt_whois1_help, 4, +N_("%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4")}, + +{"WhoIs Real Host", pevt_whoisrealhost_help, 4, +N_("%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3")}, + +{"WhoIs Server Line", pevt_whois3_help, 2, +N_("%C22*%O$t%C28[%O$1%C28]%O $2")}, + +{"WhoIs Special", pevt_whoisid_help, 3, +N_("%C22*%O$t%C28[%O$1%C28]%O $2")}, + +{"You Join", pevt_join_help, 3, +N_("%C19*%O$t%C19Now talking on $2")}, + +{"You Kicked", pevt_ukick_help, 4, +N_("%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)")}, + +{"You Part", pevt_part_help, 3, +N_("%C23*$tYou have left channel $3")}, + +{"You Part with Reason", pevt_partreason_help, 4, +N_("%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)")}, + +{"Your Action", pevt_chanaction_help, 131, +"%C18*$t$1%O $2"}, + +{"Your Invitation", pevt_uinvite_help, 3, +N_("%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)")}, + +{"Your Message", pevt_chanmsg_help, 132, +"%C31%H<%H$4$1%H>%H%O%C30$t$2"}, + +{"Your Nick Changing", pevt_uchangenick_help, 2, +N_("%C22*%O$tYou are now known as $2")}, +}; diff --git a/etc/wyatt8740/src/common/textevents.in b/etc/wyatt8740/src/common/textevents.in new file mode 100644 index 0000000..5b4ce18 --- /dev/null +++ b/etc/wyatt8740/src/common/textevents.in @@ -0,0 +1,840 @@ +Add Notify +XP_TE_ADDNOTIFY +pevt_generic_nick_help +%C22*%O$t$1 added to notify list. +1 + +Ban List +XP_TE_BANLIST +pevt_banlist_help +%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3 +4 + +Banned +XP_TE_BANNED +pevt_generic_channel_help +%C22*%O$tCannot join%C26 %B$1 %O(You are banned). +1 + +Beep +XP_TE_BEEP +pevt_generic_none_help + +n0 + +Change Nick +XP_TE_CHANGENICK +pevt_changenick_help +%C22*%O$t$1 is now known as $2 +2 + +Channel Action +XP_TE_CHANACTION +pevt_chanaction_help +%C18*$t$1%O $2 +n4 + +Channel Action Hilight +XP_TE_HCHANACTION +pevt_chanaction_help +%C21*%O$t%C21%B$1%O%C21 $2 +n4 + +Channel Ban +XP_TE_CHANBAN +pevt_chanban_help +%C22*%O$t$1 sets ban on $2 +2 + +Channel Creation +XP_TE_CHANDATE +pevt_chandate_help +%C22*%O$tChannel $1 created on $2 +2 + +Channel DeHalfOp +XP_TE_CHANDEHOP +pevt_chandehop_help +%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2 +2 + +Channel DeOp +XP_TE_CHANDEOP +pevt_chandeop_help +%C22*%O$t%C26$1%O removes channel operator status from%C26 $2 +2 + +Channel DeVoice +XP_TE_CHANDEVOICE +pevt_chandevoice_help +%C22*%O$t%C26$1%O removes voice from%C26 $2 +2 + +Channel Exempt +XP_TE_CHANEXEMPT +pevt_chanexempt_help +%C22*%O$t$1 sets exempt on $2 +2 + +Channel Half-Operator +XP_TE_CHANHOP +pevt_chanhop_help +%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2 +2 + +Channel INVITE +XP_TE_CHANINVITE +pevt_chaninvite_help +%C22*%O$t$1 sets invite on $2 +2 + +Channel List +XP_TE_CHANLISTHEAD +pevt_generic_none_help +%UChannel Users Topic +0 + +Channel Message +XP_TE_CHANMSG +pevt_chanmsg_help +%C18%H<%H$4$1%H>%H%O$t$2 +n4 + +Channel Mode Generic +XP_TE_CHANMODEGEN +pevt_chanmodegen_help +%C22*%O$t$1 sets mode $2$3 $4 +4 + +Channel Modes +XP_TE_CHANMODES +pevt_chanmodes_help +%C22*%O$t%C22Channel $1 modes: $2 +2 + +Channel Msg Hilight +XP_TE_HCHANMSG +pevt_chanmsg_help +$4%C21%B%H<%H$1%H>%H%O%C21$t$2 +n4 + +Channel Notice +XP_TE_CHANNOTICE +pevt_channotice_help +%C28-%C29$1/$2%C28-%O$t$3 +n3 + +Channel Operator +XP_TE_CHANOP +pevt_chanop_help +%C22*%O$t%C26$1%O gives channel operator status to%C26 $2 +2 + +Channel Remove Exempt +XP_TE_CHANRMEXEMPT +pevt_chanrmexempt_help +%C22*%O$t$1 removes exempt on $2 +2 + +Channel Remove Invite +XP_TE_CHANRMINVITE +pevt_chanrminvite_help +%C22*%O$t$1 removes invite on $2 +2 + +Channel Remove Keyword +XP_TE_CHANRMKEY +pevt_chanrmkey_help +%C22*%O$t$1 removes channel keyword +1 + +Channel Remove Limit +XP_TE_CHANRMLIMIT +pevt_chanrmlimit_help +%C22*%O$t$1 removes user limit +1 + +Channel Set Key +XP_TE_CHANSETKEY +pevt_chansetkey_help +%C22*%O$t$1 sets channel keyword to $2 +2 + +Channel Set Limit +XP_TE_CHANSETLIMIT +pevt_chansetlimit_help +%C22*%O$t$1 sets channel limit to $2 +2 + +Channel UnBan +XP_TE_CHANUNBAN +pevt_chanunban_help +%C22*%O$t$1 removes ban on $2 +2 + +Channel Voice +XP_TE_CHANVOICE +pevt_chanvoice_help +%C22*%O$t%C26$1%O gives voice to%C26 $2 +2 + +Connected +XP_TE_CONNECTED +pevt_generic_none_help +%C22*%O$t%C22Connected. Now logging in... +0 + +Connecting +XP_TE_CONNECT +pevt_connect_help +%C22*%O$t%C22Connecting to $1 ($2) port $3%O... +3 + +Connection Failed +XP_TE_CONNFAIL +pevt_connfail_help +%C21*%O$t%C21Connection failed. Error: $1 +1 + +CTCP Generic +XP_TE_CTCPGEN +pevt_ctcpgen_help +%C22*%O$tReceived a CTCP $1 from $2 +2 + +CTCP Generic to Channel +XP_TE_CTCPGENC +pevt_ctcpgenc_help +%C22*%O$tReceived a CTCP $1 from $2 (to $3) +3 + +CTCP Send +XP_TE_CTCPSEND +pevt_ctcpsend_help +%C19>%O$1%C19<%O$tCTCP $2 +2 + +CTCP Sound +XP_TE_CTCPSND +pevt_ctcpsnd_help +%C22*%O$tReceived a CTCP Sound $1 from $2 +2 + +CTCP Sound to Channel +XP_TE_CTCPSNDC +pevt_ctcpsnd_help +%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3) +3 + +DCC CHAT Abort +XP_TE_DCCCHATABORT +pevt_dccchatabort_help +%C22*%O$tDCC CHAT to %C26$1%O aborted. +1 + +DCC CHAT Connect +XP_TE_DCCCONCHAT +pevt_dccchatcon_help +%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30] +2 + +DCC CHAT Failed +XP_TE_DCCCHATF +pevt_dccchaterr_help +%C22*%O$tDCC CHAT to %C26$1%O lost ($4). +4 + +DCC CHAT Offer +XP_TE_DCCCHATOFFER +pevt_generic_nick_help +%C22*%O$tReceived a DCC CHAT offer from $1 +1 + +DCC CHAT Offering +XP_TE_DCCCHATOFFERING +pevt_generic_nick_help +%C22*%O$tOffering DCC CHAT to $1 +1 + +DCC CHAT Reoffer +XP_TE_DCCCHATREOFFER +pevt_generic_nick_help +%C22*%O$tAlready offering CHAT to $1 +1 + +DCC Conection Failed +XP_TE_DCCCONFAIL +pevt_dccconfail_help +%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3). +3 + +DCC Generic Offer +XP_TE_DCCGENERICOFFER +pevt_dccgenericoffer_help +%C22*%O$tReceived '$1%O' from $2 +2 + +DCC Header +XP_TE_DCCHEAD +pevt_generic_none_help +%C24,18 Type To/From Status Size Pos File +0 + +DCC Malformed +XP_TE_MALFORMED +pevt_malformed_help +%C22*%O$tReceived a malformed DCC request from %C26$1%O.%010%C22*%O$tContents of packet: $2 +2 + +DCC Offer +XP_TE_DCCOFFER +pevt_dccoffer_help +%C22*%O$tOffering%C26 $1%O to%C26 $2 +3 + +DCC Offer Not Valid +XP_TE_DCCIVAL +pevt_generic_none_help +%C22*%O$tNo such DCC offer. +0 + +DCC RECV Abort +XP_TE_DCCRECVABORT +pevt_dccfileabort_help +%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted. +2 + +DCC RECV Complete +XP_TE_DCCRECVCOMP +pevt_dccrecvcomp_help +%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O. +4 + +DCC RECV Connect +XP_TE_DCCCONRECV +pevt_dcccon_help +%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30] +3 + +DCC RECV Failed +XP_TE_DCCRECVERR +pevt_dccrecverr_help +%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4). +4 + +DCC RECV File Open Error +XP_TE_DCCFILEERR +pevt_generic_file_help +%C22*%O$tDCC RECV: Cannot open $1 for writing ($2). +2 + +DCC Rename +XP_TE_DCCRENAME +pevt_dccrename_help +%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead. +2 + +DCC RESUME Request +XP_TE_DCCRESUMEREQUEST +pevt_dccresumeoffer_help +%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C. +3 + +DCC SEND Abort +XP_TE_DCCSENDABORT +pevt_dccfileabort_help +%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted. +2 + +DCC SEND Complete +XP_TE_DCCSENDCOMP +pevt_dccsendcomp_help +%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O. +3 + +DCC SEND Connect +XP_TE_DCCCONSEND +pevt_dcccon_help +%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30] +3 + +DCC SEND Failed +XP_TE_DCCSENDFAIL +pevt_dccsendfail_help +%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3 +3 + +DCC SEND Offer +XP_TE_DCCSENDOFFER +pevt_dccsendoffer_help +%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes) +4 + +DCC Stall +XP_TE_DCCSTALL +pevt_dccstall_help +%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting. +3 + +DCC Timeout +XP_TE_DCCTOUT +pevt_dccstall_help +%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting. +3 + +Delete Notify +XP_TE_DELNOTIFY +pevt_generic_nick_help +%C22*%O$t$1 deleted from notify list. +1 + +Disconnected +XP_TE_DISCON +pevt_discon_help +%C22*%O$tDisconnected ($1). +1 + +Found IP +XP_TE_FOUNDIP +pevt_foundip_help +%C22*%O$tFound your IP: [$1] +1 + +Generic Message +XP_TE_GENMSG +pevt_genmsg_help +$1$t$2 +n2 + +Ignore Add +XP_TE_IGNOREADD +pevt_ignoreaddremove_help +%O%C26$1%O added to ignore list. +1 + +Ignore Changed +XP_TE_IGNORECHANGE +pevt_ignoreaddremove_help +Ignore on %C26$1%O changed. +1 + +Ignore Footer +XP_TE_IGNOREFOOTER +pevt_generic_none_help +%C24,18 +0 + +Ignore Header +XP_TE_IGNOREHEADER +pevt_generic_none_help +%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG +0 + +Ignore Remove +XP_TE_IGNOREREMOVE +pevt_ignoreaddremove_help +%O%C26$1%O removed from ignore list. +1 + +Ignorelist Empty +XP_TE_IGNOREEMPTY +pevt_generic_none_help + Ignore list is empty. +0 + +Invite +XP_TE_INVITE +pevt_generic_channel_help +%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only). +1 + +Invited +XP_TE_INVITED +pevt_invited_help +%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C) +3 + +Join +XP_TE_JOIN +pevt_join_help +%C19*%O$t%C19%B$1 %B($3) has joined $2 +3 + +Keyword +XP_TE_KEYWORD +pevt_generic_channel_help +%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword). +1 + +Kick +XP_TE_KICK +pevt_kick_help +%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21) +4 + +Killed +XP_TE_KILL +pevt_kill_help +%C22*%O$tYou have been killed by $1 ($2%O%C22) +2 + +Message Send +XP_TE_MSGSEND +pevt_ctcpsend_help +%C19>%O$1%C19<%O$t$2 +n2 + +Motd +XP_TE_MOTD +pevt_servertext_help +%C16*%O$t$1%O +n1 + +MOTD Skipped +XP_TE_MOTDSKIP +pevt_generic_none_help +%C22*%O$t%C22MOTD Skipped. +0 + +Nick Clash +XP_TE_NICKCLASH +pevt_nickclash_help +%C22*%O$t$1 already in use. Retrying with $2... +2 + +Nick Failed +XP_TE_NICKFAIL +pevt_generic_none_help +%C22*%O$tNickname already in use. Use /NICK to try another. +0 + +No DCC +XP_TE_NODCC +pevt_generic_none_help +%C22*%O$tNo such DCC. +0 + +No Running Process +XP_TE_NOCHILD +pevt_generic_none_help +%C22*%O$tNo process is currently running +0 + +Notice +XP_TE_NOTICE +pevt_notice_help +%C28-%C29$1%C28-%O$t$2 +n2 + +Notice Send +XP_TE_NOTICESEND +pevt_ctcpsend_help +%C19>%O$1%C19<%O$t$2 +n2 + +Notify Empty +XP_TE_NOTIFYEMPTY +pevt_generic_none_help +$tNotify list is empty. +0 + +Notify Header +XP_TE_NOTIFYHEAD +pevt_generic_none_help +%C24,18 %B Notify List +0 + +Notify Number +XP_TE_NOTIFYNUMBER +pevt_notifynumber_help +%C22*%O$t$1 users in notify list. +1 + +Notify Offline +XP_TE_NOTIFYOFFLINE +pevt_generic_nick_help +%C22*%O$tNotify: $1 is offline ($3). +3 + +Notify Online +XP_TE_NOTIFYONLINE +pevt_generic_nick_help +%C22*%O$tNotify: $1 is online ($3). +3 + +Open Dialog +XP_TE_OPENDIALOG +pevt_generic_none_help + +n0 + +Part +XP_TE_PART +pevt_part_help +%C23*%O$t%C23$1 (%O%C23$2) has left $3 +3 + +Part with Reason +XP_TE_PARTREASON +pevt_partreason_help +%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23) +4 + +Ping Reply +XP_TE_PINGREP +pevt_pingrep_help +%C22*%O$tPing reply from $1: $2 second(s) +2 + +Ping Timeout +XP_TE_PINGTIMEOUT +pevt_pingtimeout_help +%C22*%O$tNo ping reply for $1 seconds, disconnecting. +1 + +Private Action +XP_TE_PRIVACTION +pevt_privmsg_help +%C18**$t$3$1%O $2 %C18** +n3 + +Private Action to Dialog +XP_TE_DPRIVACTION +pevt_privmsg_help +%C18*$t$3$1%O $2 +n3 + +Private Message +XP_TE_PRIVMSG +pevt_privmsg_help +%C28*%C29$3$1%C28*$t%O$2 +n3 + +Private Message to Dialog +XP_TE_DPRIVMSG +pevt_privmsg_help +%C18%H<%H$3$1%H>%H%O$t$2 +n3 + +Process Already Running +XP_TE_ALREADYPROCESS +pevt_generic_none_help +%C22*%O$tA process is already running +0 + +Quit +XP_TE_QUIT +pevt_quit_help +%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23) +3 + +Raw Modes +XP_TE_RAWMODES +pevt_rawmodes_help +%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30] +2 + +Receive Wallops +XP_TE_WALLOPS +pevt_privmsg_help +%C28-%C29$1/Wallops%C28-%O$t$2 +2 + +Resolving User +XP_TE_RESOLVINGUSER +pevt_resolvinguser_help +%C22*%O$tLooking up IP number for%C26 $1%O... +2 + +Server Connected +XP_TE_SERVERCONNECTED +pevt_generic_none_help +%C22*%O$t%C22Connected. +0 + +Server Error +XP_TE_SERVERERROR +pevt_servererror_help +%C22*%O$t$1 +n1 + +Server Lookup +XP_TE_SERVERLOOKUP +pevt_serverlookup_help +%C22*%O$t%C22Looking up $1 +1 + +Server Notice +XP_TE_SERVNOTICE +pevt_servertext_help +%C22*%O$t$1 +n2 + +Server Text +XP_TE_SERVTEXT +pevt_servertext_help +%C22*%O$t$1 +n3 + +SSL Message +XP_TE_SSLMESSAGE +pevt_sslmessage_help +%C22*%O$t$1 +n2 + +Stop Connection +XP_TE_STOPCONNECT +pevt_sconnect_help +%C22*%O$tStopped previous connection attempt (pid=$1) +1 + +Topic +XP_TE_TOPIC +pevt_topic_help +%C29*%O$t%C29Topic for $1%C %C29is: $2 +2 + +Topic Change +XP_TE_NEWTOPIC +pevt_newtopic_help +%C22*%O$t$1 has changed the topic to: $2 +3 + +Topic Creation +XP_TE_TOPICDATE +pevt_topicdate_help +%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3 +3 + +Unknown Host +XP_TE_UKNHOST +pevt_generic_none_help +%C22*%O$tUnknown host. Maybe you misspelled it? +0 + +User Limit +XP_TE_USERLIMIT +pevt_generic_channel_help +%C22*%O$tCannot join%C26 %B$1 %O(User limit reached). +1 + +Users On Channel +XP_TE_USERSONCHAN +pevt_usersonchan_help +%C22*%O$t%C26Users on $1:%C $2 +2 + +WhoIs Authenticated +XP_TE_WHOIS_AUTH +pevt_whoisauth_help +%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3 +3 + +WhoIs Away Line +XP_TE_WHOIS5 +pevt_whois5_help +%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30) +2 + +WhoIs Channel/Oper Line +XP_TE_WHOIS2 +pevt_whois2_help +%C22*%O$t%C28[%O$1%C28]%O $2 +2 + +WhoIs End +XP_TE_WHOIS6 +pevt_whois6_help +%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list. +1 + +WhoIs Identified +XP_TE_WHOIS_ID +pevt_whoisid_help +%C22*%O$t%C28[%O$1%C28]%O $2 +2 + +WhoIs Idle Line +XP_TE_WHOIS4 +pevt_whois4_help +%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2 +2 + +WhoIs Idle Line with Signon +XP_TE_WHOIS4T +pevt_whois4t_help +%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3 +3 + +WhoIs Name Line +XP_TE_WHOIS1 +pevt_whois1_help +%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4 +4 + +WhoIs Real Host +XP_TE_WHOIS_REALHOST +pevt_whoisrealhost_help +%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3 +4 + +WhoIs Server Line +XP_TE_WHOIS3 +pevt_whois3_help +%C22*%O$t%C28[%O$1%C28]%O $2 +2 + +WhoIs Special +XP_TE_WHOIS_SPECIAL +pevt_whoisid_help +%C22*%O$t%C28[%O$1%C28]%O $2 +3 + +You Join +XP_TE_UJOIN +pevt_join_help +%C19*%O$t%C19Now talking on $2 +3 + +You Kicked +XP_TE_UKICK +pevt_ukick_help +%C23*$tYou have been kicked from $2 by $3 ($4%O%C23) +4 + +You Part +XP_TE_UPART +pevt_part_help +%C23*$tYou have left channel $3 +3 + +You Part with Reason +XP_TE_UPARTREASON +pevt_partreason_help +%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23) +4 + +Your Action +XP_TE_UACTION +pevt_chanaction_help +%C18*$t$1%O $2 +n3 + +Your Invitation +XP_TE_UINVITE +pevt_uinvite_help +%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O) +3 + +Your Message +XP_TE_UCHANMSG +pevt_chanmsg_help +%C31%H<%H$4$1%H>%H%O%C30$t$2 +n4 + +Your Nick Changing +XP_TE_UCHANGENICK +pevt_uchangenick_help +%C22*%O$tYou are now known as $2 +2 + diff --git a/etc/wyatt8740/src/common/tree.c b/etc/wyatt8740/src/common/tree.c new file mode 100644 index 0000000..5a028c4 --- /dev/null +++ b/etc/wyatt8740/src/common/tree.c @@ -0,0 +1,223 @@ +/* +This is used for quick userlist insertion and lookup. It's not really +a tree, but it could be :) +*/ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> + +#include "tree.h" + +#define ARRAY_GROW 32 + +struct _tree +{ + int elements; + int array_size; + void **array; + tree_cmp_func *cmp; + void *data; +}; + +tree * +tree_new (tree_cmp_func *cmp, void *data) +{ + tree *t = calloc (1, sizeof (tree)); + t->cmp = cmp; + t->data = data; + return t; +} + +void +tree_destroy (tree *t) +{ + if (t) + { + if (t->array) + free (t->array); + free (t); + } +} + +static int +tree_find_insertion_pos (tree *t, void *key, int *done) +{ + int c, u, l, idx; + + if (t->elements < 1) + { + *done = 1; + t->array[0] = key; + t->elements++; + return 0; + } + + if (t->elements < 2) + { + *done = 1; + c = t->cmp (key, t->array[0], t->data); + if (c == 0) + return -1; + t->elements++; + if (c > 0) + { + t->array[1] = key; + return 1; + } + t->array[1] = t->array[0]; + t->array[0] = key; + return 0; + } + + *done = 0; + + c = t->cmp (key, t->array[0], t->data); + if (c < 0) + return 0; /* prepend */ + + c = t->cmp (key, t->array[t->elements - 1], t->data); + if (c > 0) + return t->elements; /* append */ + + l = 0; + u = t->elements - 1; + while (1) + { + idx = (l + u) / 2; + c = t->cmp (key, t->array[idx], t->data); + + if (0 > c) + u = idx; + else if (0 < c && 0 > t->cmp (key, t->array[idx+1], t->data)) + return idx + 1; + else if (c == 0) + return -1; + else + l = idx + 1; + } +} + +static void +tree_insert_at_pos (tree *t, void *key, int pos) +{ + int post_bytes; + + /* append is easy */ + if (pos != t->elements) + { + post_bytes = (t->elements - pos) * sizeof (void *); + memmove (&t->array[pos + 1], &t->array[pos], post_bytes); + } + + t->array[pos] = key; + t->elements++; +} + +static void * +mybsearch (const void *key, void **array, size_t nmemb, + int (*compar) (const void *, const void *, void *data), void *data, int *pos) +{ + int l, u, idx; + int comparison; + + l = 0; + u = nmemb; + while (l < u) + { + idx = (l + u) / 2; + comparison = (*compar) (key, array[idx], data); + if (comparison < 0) + u = idx; + else if (comparison > 0) + l = idx + 1; + else + { + *pos = idx; + return array[idx]; + } + } + + return NULL; +} + +void * +tree_find (tree *t, void *key, tree_cmp_func *cmp, void *data, int *pos) +{ + if (!t || !t->array) + return NULL; + + return mybsearch (key, &t->array[0], t->elements, cmp, data, pos); +} + +static void +tree_remove_at_pos (tree *t, int pos) +{ + int post_bytes; + + t->elements--; + if (pos != t->elements) + { + post_bytes = (t->elements - pos) * sizeof (void *); + memmove (&t->array[pos], &t->array[pos + 1], post_bytes); + } +} + +int +tree_remove (tree *t, void *key, int *pos) +{ + void *data; + + data = tree_find (t, key, t->cmp, t->data, pos); + if (!data) + return 0; + + tree_remove_at_pos (t, *pos); + return 1; +} + +int +tree_foreach_int (tree *t, tree_traverse_func *func, void *data) +{ + int j; + + if (!t || !t->array) + return 1; + + for (j = 0; j < t->elements; j++) + { + if (!func (t->array[j], data)) + return 0; + } + + return 1; +} + +void +tree_foreach (tree *t, tree_traverse_func *func, void *data) +{ + tree_foreach_int( t, func, data ); +} + +int +tree_insert (tree *t, void *key) +{ + int pos, done; + + if (!t) + return -1; + + if (t->array_size < t->elements + 1) + { + int new_size = t->array_size + ARRAY_GROW; + + t->array = realloc (t->array, sizeof (void *) * new_size); + t->array_size = new_size; + } + + pos = tree_find_insertion_pos (t, key, &done); + if (!done && pos != -1) + tree_insert_at_pos (t, key, pos); + + return pos; +} diff --git a/etc/wyatt8740/src/common/tree.h b/etc/wyatt8740/src/common/tree.h new file mode 100644 index 0000000..25510c1 --- /dev/null +++ b/etc/wyatt8740/src/common/tree.h @@ -0,0 +1,17 @@ +#ifndef XCHAT_TREE_H +#define XCHAT_TREE_H + +typedef struct _tree tree; + +typedef int (tree_cmp_func) (const void *keya, const void *keyb, void *data); +typedef int (tree_traverse_func) (const void *key, void *data); + +tree *tree_new (tree_cmp_func *cmp, void *data); +void tree_destroy (tree *t); +void *tree_find (tree *t, void *key, tree_cmp_func *cmp, void *data, int *pos); +int tree_remove (tree *t, void *key, int *pos); +void tree_foreach (tree *t, tree_traverse_func *func, void *data); +int tree_foreach_int (tree *t, tree_traverse_func *func, void *data); +int tree_insert (tree *t, void *key); + +#endif diff --git a/etc/wyatt8740/src/common/url.c b/etc/wyatt8740/src/common/url.c new file mode 100644 index 0000000..65f4b3b --- /dev/null +++ b/etc/wyatt8740/src/common/url.c @@ -0,0 +1,289 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <ctype.h> +#include "xchat.h" +#include "cfgfiles.h" +#include "fe.h" +#include "tree.h" +#include "url.h" +#ifdef HAVE_STRINGS_H +#include <strings.h> +#endif + +void *url_tree = NULL; + + +static int +url_free (char *url, void *data) +{ + free (url); + return TRUE; +} + +void +url_clear (void) +{ + tree_foreach (url_tree, (tree_traverse_func *)url_free, NULL); + tree_destroy (url_tree); + url_tree = NULL; +} + +static int +url_save_cb (char *url, FILE *fd) +{ + if( fprintf (fd, "%s\n", url) <= 0 ) + return FALSE; + return TRUE; +} + +int +url_save (const char *fname, const char *mode, gboolean fullpath) +{ + FILE *fd; + + if (fullpath) + fd = xchat_fopen_file (fname, mode, XOF_FULLPATH); + else + fd = xchat_fopen_file (fname, mode, 0); + if (fd == NULL) + return FALSE; + + if( tree_foreach_int (url_tree, (tree_traverse_func *)url_save_cb, fd) == 0 ) + { + fclose (fd); + return FALSE; + } + + if( fclose (fd) ) + return FALSE; + + return TRUE; +} + +void +url_autosave (void) +{ + url_save ("url.save", "a", FALSE); +} + +static int +url_find (char *urltext) +{ + int pos; + + if (tree_find (url_tree, urltext, (tree_cmp_func *)strcasecmp, NULL, &pos)) + return 1; + return 0; +} + +static void +url_add (char *urltext, int len) +{ + char *data = malloc (len + 1); + if (!data) + return; + memcpy (data, urltext, len); + data[len] = 0; + + if (data[len - 1] == '.') /* chop trailing dot */ + { + len--; + data[len] = 0; + } + if (data[len - 1] == ')') /* chop trailing ) */ + data[len - 1] = 0; + + if (url_find (data)) + { + free (data); + return; + } + + if (!url_tree) + url_tree = tree_new ((tree_cmp_func *)strcasecmp, NULL); + + tree_insert (url_tree, data); + fe_url_add (data); +} + +/* check if a word is clickable. This is called on mouse motion events, so + keep it FAST! This new version was found to be almost 3x faster than + 2.4.4 release. */ + +int +url_check_word (char *word, int len) +{ +#define D(x) (x), ((sizeof (x)) - 1) + static const struct { + const char *s; + int len; + } + prefix[] = { + { D("irc.") }, + { D("ftp.") }, + { D("www.") }, + { D("irc://") }, + { D("ftp://") }, + { D("http://") }, + { D("https://") }, + { D("file://") }, + { D("rtsp://") }, + { D("ut2004://") }, + }, + suffix[] = { + { D(".org") }, + { D(".net") }, + { D(".com") }, + { D(".edu") }, + { D(".html") }, + { D(".info") }, + { D(".name") }, + }; +#undef D + const char *at, *dot; + int i, dots; + + if (len > 1 && word[1] == '#' && strchr("@+^%*#", word[0])) + return WORD_CHANNEL; + + if ((word[0] == '#' || word[0] == '&') && word[1] != '#' && word[1] != 0) + return WORD_CHANNEL; + + for (i = 0; i < G_N_ELEMENTS(prefix); i++) + { + int l; + + l = prefix[i].len; + if (len > l) + { + int j; + + /* This is pretty much strncasecmp(). */ + for (j = 0; j < l; j++) + { + unsigned char c = word[j]; + if (tolower(c) != prefix[i].s[j]) + break; + } + if (j == l) + return WORD_URL; + } + } + + at = strchr (word, '@'); /* check for email addy */ + dot = strrchr (word, '.'); + if (at && dot) + { + if (at < dot) + { + if (strchr (word, '*')) + return WORD_HOST; + else + return WORD_EMAIL; + } + } + + /* check if it's an IP number */ + dots = 0; + for (i = 0; i < len; i++) + { + if (word[i] == '.' && i > 0) + dots++; /* allow 127.0.0.1:80 */ + else if (!isdigit ((unsigned char) word[i]) && word[i] != ':') + { + dots = 0; + break; + } + } + if (dots == 3) + return WORD_HOST; + + if (len > 5) + { + for (i = 0; i < G_N_ELEMENTS(suffix); i++) + { + int l; + + l = suffix[i].len; + if (len > l) + { + const unsigned char *p = &word[len - l]; + int j; + + /* This is pretty much strncasecmp(). */ + for (j = 0; j < l; j++) + { + if (tolower(p[j]) != suffix[i].s[j]) + break; + } + if (j == l) + return WORD_HOST; + } + } + + if (word[len - 3] == '.' && + isalpha ((unsigned char) word[len - 2]) && + isalpha ((unsigned char) word[len - 1])) + return WORD_HOST; + } + + return 0; +} + +void +url_check_line (char *buf, int len) +{ + char *po = buf; + char *start; + int wlen; + + if (buf[0] == ':' && buf[1] != 0) + po++; + + start = po; + + /* check each "word" (space separated) */ + while (1) + { + switch (po[0]) + { + case 0: + case ' ': + wlen = po - start; + if (wlen > 2) + { + if (url_check_word (start, wlen) == WORD_URL) + { + url_add (start, wlen); + } + } + if (po[0] == 0) + return; + po++; + start = po; + break; + + default: + po++; + } + } +} diff --git a/etc/wyatt8740/src/common/url.h b/etc/wyatt8740/src/common/url.h new file mode 100644 index 0000000..1772bcb --- /dev/null +++ b/etc/wyatt8740/src/common/url.h @@ -0,0 +1,19 @@ +#ifndef XCHAT_URL_H +#define XCHAT_URL_H + +extern void *url_tree; + +#define WORD_URL 1 +#define WORD_NICK 2 +#define WORD_CHANNEL 3 +#define WORD_HOST 4 +#define WORD_EMAIL 5 +#define WORD_DIALOG -1 + +void url_clear (void); +int url_save (const char *fname, const char *mode, gboolean fullpath); +void url_autosave (void); +int url_check_word (char *word, int len); +void url_check_line (char *buf, int len); + +#endif diff --git a/etc/wyatt8740/src/common/userlist.c b/etc/wyatt8740/src/common/userlist.c new file mode 100644 index 0000000..18ac4be --- /dev/null +++ b/etc/wyatt8740/src/common/userlist.c @@ -0,0 +1,454 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "xchat.h" +#include "modes.h" +#include "fe.h" +#include "notify.h" +#include "tree.h" +#include "xchatc.h" +#include "util.h" + + +static int +nick_cmp_az_ops (server *serv, struct User *user1, struct User *user2) +{ + unsigned int access1 = user1->access; + unsigned int access2 = user2->access; + int pos; + + if (access1 != access2) + { + for (pos = 0; pos < USERACCESS_SIZE; pos++) + { + if ((access1&(1<<pos)) && (access2&(1<<pos))) + break; + if ((access1&(1<<pos)) && !(access2&(1<<pos))) + return -1; + if (!(access1&(1<<pos)) && (access2&(1<<pos))) + return 1; + } + } + + return serv->p_cmp (user1->nick, user2->nick); +} + +static int +nick_cmp_alpha (struct User *user1, struct User *user2, server *serv) +{ + return serv->p_cmp (user1->nick, user2->nick); +} + +static int +nick_cmp (struct User *user1, struct User *user2, server *serv) +{ + switch (prefs.userlist_sort) + { + case 0: + return nick_cmp_az_ops (serv, user1, user2); + case 1: + return serv->p_cmp (user1->nick, user2->nick); + case 2: + return -1 * nick_cmp_az_ops (serv, user1, user2); + case 3: + return -1 * serv->p_cmp (user1->nick, user2->nick); + default: + return -1; + } +} + +/* + insert name in appropriate place in linked list. Returns row number or: + -1: duplicate +*/ + +static int +userlist_insertname (session *sess, struct User *newuser) +{ + if (!sess->usertree) + { + sess->usertree = tree_new ((tree_cmp_func *)nick_cmp, sess->server); + sess->usertree_alpha = tree_new ((tree_cmp_func *)nick_cmp_alpha, sess->server); + } + + tree_insert (sess->usertree_alpha, newuser); + return tree_insert (sess->usertree, newuser); +} + +void +userlist_set_away (struct session *sess, char *nick, unsigned int away) +{ + struct User *user; + + user = userlist_find (sess, nick); + if (user) + { + if (user->away != away) + { + user->away = away; + /* rehash GUI */ + fe_userlist_rehash (sess, user); + if (away) + fe_userlist_update (sess, user); + } + } +} + +int +userlist_add_hostname (struct session *sess, char *nick, char *hostname, + char *realname, char *servername, unsigned int away) +{ + struct User *user; + + user = userlist_find (sess, nick); + if (user) + { + if (!user->hostname && hostname) + user->hostname = strdup (hostname); + if (!user->realname && realname) + user->realname = strdup (realname); + if (!user->servername && servername) + user->servername = strdup (servername); + + if (away != 0xff) + { + if (prefs.showhostname_in_userlist || user->away != away) + { + user->away = away; + fe_userlist_rehash (sess, user); + } + user->away = away; + } + + fe_userlist_update (sess, user); + + return 1; + } + return 0; +} + +static int +free_user (struct User *user, gpointer data) +{ + if (user->realname) + free (user->realname); + if (user->hostname) + free (user->hostname); + if (user->servername) + free (user->servername); + free (user); + + return TRUE; +} + +void +userlist_free (session *sess) +{ + tree_foreach (sess->usertree, (tree_traverse_func *)free_user, NULL); + tree_destroy (sess->usertree); + tree_destroy (sess->usertree_alpha); + + sess->usertree = NULL; + sess->usertree_alpha = NULL; + sess->me = NULL; + + sess->ops = 0; + sess->hops = 0; + sess->voices = 0; + sess->total = 0; +} + +void +userlist_clear (session *sess) +{ + fe_userlist_clear (sess); + userlist_free (sess); + fe_userlist_numbers (sess); +} + +static int +find_cmp (const char *name, struct User *user, server *serv) +{ + return serv->p_cmp ((char *)name, user->nick); +} + +struct User * +userlist_find (struct session *sess, char *name) +{ + int pos; + + if (sess->usertree_alpha) + return tree_find (sess->usertree_alpha, name, + (tree_cmp_func *)find_cmp, sess->server, &pos); + + return NULL; +} + +struct User * +userlist_find_global (struct server *serv, char *name) +{ + struct User *user; + session *sess; + GSList *list = sess_list; + while (list) + { + sess = (session *) list->data; + if (sess->server == serv) + { + user = userlist_find (sess, name); + if (user) + return user; + } + list = list->next; + } + return 0; +} + +static void +update_counts (session *sess, struct User *user, char prefix, + int level, int offset) +{ + switch (prefix) + { + case '@': + user->op = level; + sess->ops += offset; + break; + case '%': + user->hop = level; + sess->hops += offset; + break; + case '+': + user->voice = level; + sess->voices += offset; + break; + } +} + +void +userlist_update_mode (session *sess, char *name, char mode, char sign) +{ + int access; + int offset = 0; + int level; + int pos; + char prefix; + struct User *user; + + user = userlist_find (sess, name); + if (!user) + return; + + /* remove from binary trees, before we loose track of it */ + tree_remove (sess->usertree, user, &pos); + tree_remove (sess->usertree_alpha, user, &pos); + + /* which bit number is affected? */ + access = mode_access (sess->server, mode, &prefix); + + if (sign == '+') + { + level = TRUE; + if (!(user->access & (1 << access))) + { + offset = 1; + user->access |= (1 << access); + } + } else + { + level = FALSE; + if (user->access & (1 << access)) + { + offset = -1; + user->access &= ~(1 << access); + } + } + + /* now what is this users highest prefix? e.g. @ for ops */ + user->prefix[0] = get_nick_prefix (sess->server, user->access); + + /* update the various counts using the CHANGED prefix only */ + update_counts (sess, user, prefix, level, offset); + + /* insert it back into its new place */ + tree_insert (sess->usertree_alpha, user); + pos = tree_insert (sess->usertree, user); + + /* let GTK move it too */ + fe_userlist_move (sess, user, pos); + fe_userlist_numbers (sess); +} + +int +userlist_change (struct session *sess, char *oldname, char *newname) +{ + struct User *user = userlist_find (sess, oldname); + int pos; + + if (user) + { + tree_remove (sess->usertree, user, &pos); + tree_remove (sess->usertree_alpha, user, &pos); + + safe_strcpy (user->nick, newname, NICKLEN); + + tree_insert (sess->usertree_alpha, user); + + fe_userlist_move (sess, user, tree_insert (sess->usertree, user)); + fe_userlist_numbers (sess); + + return 1; + } + + return 0; +} + +int +userlist_remove (struct session *sess, char *name) +{ + struct User *user; + int pos; + + user = userlist_find (sess, name); + if (!user) + return FALSE; + + if (user->voice) + sess->voices--; + if (user->op) + sess->ops--; + if (user->hop) + sess->hops--; + sess->total--; + fe_userlist_numbers (sess); + fe_userlist_remove (sess, user); + + if (user == sess->me) + sess->me = NULL; + + tree_remove (sess->usertree, user, &pos); + tree_remove (sess->usertree_alpha, user, &pos); + free_user (user, NULL); + + return TRUE; +} + +void +userlist_add (struct session *sess, char *name, char *hostname) +{ + struct User *user; + int row, prefix_chars; + unsigned int acc; + + acc = nick_access (sess->server, name, &prefix_chars); + + notify_set_online (sess->server, name + prefix_chars); + + user = malloc (sizeof (struct User)); + memset (user, 0, sizeof (struct User)); + + user->access = acc; + + /* assume first char is the highest level nick prefix */ + if (prefix_chars) + user->prefix[0] = name[0]; + + /* add it to our linked list */ + if (hostname) + user->hostname = strdup (hostname); + safe_strcpy (user->nick, name + prefix_chars, NICKLEN); + /* is it me? */ + if (!sess->server->p_cmp (user->nick, sess->server->nick)) + user->me = TRUE; + row = userlist_insertname (sess, user); + + /* duplicate? some broken servers trigger this */ + if (row == -1) + { + if (user->hostname) + free (user->hostname); + free (user); + return; + } + + sess->total++; + + /* most ircds don't support multiple modechars infront of the nickname + for /NAMES - though they should. */ + while (prefix_chars) + { + update_counts (sess, user, name[0], TRUE, 1); + name++; + prefix_chars--; + } + + if (user->me) + sess->me = user; + + fe_userlist_insert (sess, user, row, FALSE); + fe_userlist_numbers (sess); +} + +static int +rehash_cb (struct User *user, session *sess) +{ + fe_userlist_rehash (sess, user); + return TRUE; +} + +void +userlist_rehash (session *sess) +{ + tree_foreach (sess->usertree_alpha, (tree_traverse_func *)rehash_cb, sess); +} + +static int +flat_cb (struct User *user, GSList **list) +{ + *list = g_slist_prepend (*list, user); + return TRUE; +} + +GSList * +userlist_flat_list (session *sess) +{ + GSList *list = NULL; + + tree_foreach (sess->usertree_alpha, (tree_traverse_func *)flat_cb, &list); + return g_slist_reverse (list); +} + +static int +double_cb (struct User *user, GList **list) +{ + *list = g_list_prepend(*list, user); + return TRUE; +} + +GList * +userlist_double_list(session *sess) +{ + GList *list = NULL; + + tree_foreach (sess->usertree_alpha, (tree_traverse_func *)double_cb, &list); + return list; +} diff --git a/etc/wyatt8740/src/common/userlist.h b/etc/wyatt8740/src/common/userlist.h new file mode 100644 index 0000000..28831ac --- /dev/null +++ b/etc/wyatt8740/src/common/userlist.h @@ -0,0 +1,41 @@ +#include <time.h> + +#ifndef XCHAT_USERLIST_H +#define XCHAT_USERLIST_H + +struct User +{ + char nick[NICKLEN]; + char *hostname; + char *realname; + char *servername; + time_t lasttalk; + unsigned int access; /* axs bit field */ + char prefix[2]; /* @ + % */ + unsigned int op:1; + unsigned int hop:1; + unsigned int voice:1; + unsigned int me:1; + unsigned int away:1; + unsigned int selected:1; +}; + +#define USERACCESS_SIZE 12 + +int userlist_add_hostname (session *sess, char *nick, + char *hostname, char *realname, + char *servername, unsigned int away); +void userlist_set_away (session *sess, char *nick, unsigned int away); +struct User *userlist_find (session *sess, char *name); +struct User *userlist_find_global (server *serv, char *name); +void userlist_clear (session *sess); +void userlist_free (session *sess); +void userlist_add (session *sess, char *name, char *hostname); +int userlist_remove (session *sess, char *name); +int userlist_change (session *sess, char *oldname, char *newname); +void userlist_update_mode (session *sess, char *name, char mode, char sign); +GSList *userlist_flat_list (session *sess); +GList *userlist_double_list (session *sess); +void userlist_rehash (session *sess); + +#endif diff --git a/etc/wyatt8740/src/common/util.c b/etc/wyatt8740/src/common/util.c new file mode 100644 index 0000000..aaf6215 --- /dev/null +++ b/etc/wyatt8740/src/common/util.c @@ -0,0 +1,1748 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#define __APPLE_API_STRICT_CONFORMANCE + +#define _FILE_OFFSET_BITS 64 +#include <stdio.h> +#include <unistd.h> +#include <string.h> +#include <stdlib.h> +#include <sys/types.h> +#include <sys/stat.h> +#ifdef WIN32 +#include <sys/timeb.h> +#include <process.h> +#else +#include <sys/types.h> +#include <pwd.h> +#include <sys/time.h> +#include <sys/utsname.h> +#endif +#include <fcntl.h> +#include <dirent.h> +#include <errno.h> +#include "xchat.h" +#include "xchatc.h" +#include <glib.h> +#include <ctype.h> +#include "util.h" +#include "../../config.h" + +#define WANTSOCKET +#include "inet.h" + +#if defined (USING_FREEBSD) || defined (__APPLE__) +#include <sys/sysctl.h> +#endif +#ifdef SOCKS +#include <socks.h> +#endif + +#ifndef HAVE_SNPRINTF +#define snprintf g_snprintf +#endif + +#ifdef USE_DEBUG + +#undef free +#undef malloc +#undef realloc +#undef strdup + +int current_mem_usage; + +struct mem_block +{ + char *file; + void *buf; + int size; + int line; + int total; + struct mem_block *next; +}; + +struct mem_block *mroot = NULL; + +void * +xchat_malloc (int size, char *file, int line) +{ + void *ret; + struct mem_block *new; + + current_mem_usage += size; + ret = malloc (size); + if (!ret) + { + printf ("Out of memory! (%d)\n", current_mem_usage); + exit (255); + } + + new = malloc (sizeof (struct mem_block)); + new->buf = ret; + new->size = size; + new->next = mroot; + new->line = line; + new->file = strdup (file); + mroot = new; + + printf ("%s:%d Malloc'ed %d bytes, now \033[35m%d\033[m\n", file, line, + size, current_mem_usage); + + return ret; +} + +void * +xchat_realloc (char *old, int len, char *file, int line) +{ + char *ret; + + ret = xchat_malloc (len, file, line); + if (ret) + { + strcpy (ret, old); + xchat_dfree (old, file, line); + } + return ret; +} + +void * +xchat_strdup (char *str, char *file, int line) +{ + void *ret; + struct mem_block *new; + int size; + + size = strlen (str) + 1; + current_mem_usage += size; + ret = malloc (size); + if (!ret) + { + printf ("Out of memory! (%d)\n", current_mem_usage); + exit (255); + } + strcpy (ret, str); + + new = malloc (sizeof (struct mem_block)); + new->buf = ret; + new->size = size; + new->next = mroot; + new->line = line; + new->file = strdup (file); + mroot = new; + + printf ("%s:%d strdup (\"%-.40s\") size: %d, total: \033[35m%d\033[m\n", + file, line, str, size, current_mem_usage); + + return ret; +} + +void +xchat_mem_list (void) +{ + struct mem_block *cur, *p; + GSList *totals = 0; + GSList *list; + + cur = mroot; + while (cur) + { + list = totals; + while (list) + { + p = list->data; + if (p->line == cur->line && + strcmp (p->file, cur->file) == 0) + { + p->total += p->size; + break; + } + list = list->next; + } + if (!list) + { + cur->total = cur->size; + totals = g_slist_prepend (totals, cur); + } + cur = cur->next; + } + + fprintf (stderr, "file line size num total\n"); + list = totals; + while (list) + { + cur = list->data; + fprintf (stderr, "%-15.15s %6d %6d %6d %6d\n", cur->file, cur->line, + cur->size, cur->total/cur->size, cur->total); + list = list->next; + } +} + +void +xchat_dfree (void *buf, char *file, int line) +{ + struct mem_block *cur, *last; + + if (buf == NULL) + { + printf ("%s:%d \033[33mTried to free NULL\033[m\n", file, line); + return; + } + + last = NULL; + cur = mroot; + while (cur) + { + if (buf == cur->buf) + break; + last = cur; + cur = cur->next; + } + if (cur == NULL) + { + printf ("%s:%d \033[31mTried to free unknown block %lx!\033[m\n", + file, line, (unsigned long) buf); + /* abort(); */ + free (buf); + return; + } + current_mem_usage -= cur->size; + printf ("%s:%d Free'ed %d bytes, usage now \033[35m%d\033[m\n", + file, line, cur->size, current_mem_usage); + if (last) + last->next = cur->next; + else + mroot = cur->next; + free (cur->file); + free (cur); +} + +#define malloc(n) xchat_malloc(n, __FILE__, __LINE__) +#define realloc(n, m) xchat_realloc(n, m, __FILE__, __LINE__) +#define free(n) xchat_dfree(n, __FILE__, __LINE__) +#define strdup(n) xchat_strdup(n, __FILE__, __LINE__) + +#endif /* MEMORY_DEBUG */ + +char * +file_part (char *file) +{ + char *filepart = file; + if (!file) + return ""; + while (1) + { + switch (*file) + { + case 0: + return (filepart); + case '/': +#ifdef WIN32 + case '\\': +#endif + filepart = file + 1; + break; + } + file++; + } +} + +void +path_part (char *file, char *path, int pathlen) +{ + unsigned char t; + char *filepart = file_part (file); + t = *filepart; + *filepart = 0; + safe_strcpy (path, file, pathlen); + *filepart = t; +} + +char * /* like strstr(), but nocase */ +nocasestrstr (const char *s, const char *wanted) +{ + register const int len = strlen (wanted); + + if (len == 0) + return (char *)s; + while (rfc_tolower(*s) != rfc_tolower(*wanted) || strncasecmp (s, wanted, len)) + if (*s++ == '\0') + return (char *)NULL; + return (char *)s; +} + +char * +errorstring (int err) +{ + switch (err) + { + case -1: + return ""; + case 0: + return _("Remote host closed socket"); +#ifndef WIN32 + } +#else + case WSAECONNREFUSED: + return _("Connection refused"); + case WSAENETUNREACH: + case WSAEHOSTUNREACH: + return _("No route to host"); + case WSAETIMEDOUT: + return _("Connection timed out"); + case WSAEADDRNOTAVAIL: + return _("Cannot assign that address"); + case WSAECONNRESET: + return _("Connection reset by peer"); + } + + /* can't use strerror() on Winsock errors! */ + if (err >= WSABASEERR) + { + static char tbuf[384]; + OSVERSIONINFO osvi; + + osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFO); + GetVersionEx (&osvi); + + /* FormatMessage works on WSA*** errors starting from Win2000 */ + if (osvi.dwMajorVersion >= 5) + { + if (FormatMessageA (FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS | + FORMAT_MESSAGE_MAX_WIDTH_MASK, + NULL, err, + MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT), + tbuf, sizeof (tbuf), NULL)) + { + int len; + char *utf; + + tbuf[sizeof (tbuf) - 1] = 0; + len = strlen (tbuf); + if (len >= 2) + tbuf[len - 2] = 0; /* remove the cr-lf */ + + /* now convert to utf8 */ + utf = g_locale_to_utf8 (tbuf, -1, 0, 0, 0); + if (utf) + { + safe_strcpy (tbuf, utf, sizeof (tbuf)); + g_free (utf); + return tbuf; + } + } + } /* ! if (osvi.dwMajorVersion >= 5) */ + + /* fallback to error number */ + sprintf (tbuf, "%s %d", _("Error"), err); + return tbuf; + } /* ! if (err >= WSABASEERR) */ +#endif /* ! WIN32 */ + + return strerror (err); +} + +int +waitline (int sok, char *buf, int bufsize, int use_recv) +{ + int i = 0; + + while (1) + { + if (use_recv) + { + if (recv (sok, &buf[i], 1, 0) < 1) + return -1; + } else + { + if (read (sok, &buf[i], 1) < 1) + return -1; + } + if (buf[i] == '\n' || bufsize == i + 1) + { + buf[i] = 0; + return i; + } + i++; + } +} + +/* checks for "~" in a file and expands */ + +char * +expand_homedir (char *file) +{ +#ifndef WIN32 + char *ret, *user; + struct passwd *pw; + + if (*file == '~') + { + if (file[1] != '\0' && file[1] != '/') + { + user = strdup(file); + if (strchr(user,'/') != NULL) + *(strchr(user,'/')) = '\0'; + if ((pw = getpwnam(user + 1)) == NULL) + { + free(user); + return strdup(file); + } + free(user); + user = strchr(file, '/') != NULL ? strchr(file,'/') : file; + ret = malloc(strlen(user) + strlen(pw->pw_dir) + 1); + strcpy(ret, pw->pw_dir); + strcat(ret, user); + } + else + { + ret = malloc (strlen (file) + strlen (g_get_home_dir ()) + 1); + sprintf (ret, "%s%s", g_get_home_dir (), file + 1); + } + return ret; + } +#endif + return strdup (file); +} + +gchar * +strip_color (const char *text, int len, int flags) +{ + char *new_str; + + if (len == -1) + len = strlen (text); + + new_str = g_malloc (len + 2); + strip_color2 (text, len, new_str, flags); + + if (flags & STRIP_ESCMARKUP) + { + char *esc = g_markup_escape_text (new_str, -1); + g_free (new_str); + return esc; + } + + return new_str; +} + +/* CL: strip_color2 strips src and writes the output at dst; pass the same pointer + in both arguments to strip in place. */ +int +strip_color2 (const char *src, int len, char *dst, int flags) +{ + int rcol = 0, bgcol = 0; + char *start = dst; + + if (len == -1) len = strlen (src); + while (len-- > 0) + { + if (rcol > 0 && (isdigit ((unsigned char)*src) || + (*src == ',' && isdigit ((unsigned char)src[1]) && !bgcol))) + { + if (src[1] != ',') rcol--; + if (*src == ',') + { + rcol = 2; + bgcol = 1; + } + } else + { + rcol = bgcol = 0; + switch (*src) + { + case '\003': /*ATTR_COLOR: */ + if (!(flags & STRIP_COLOR)) goto pass_char; + rcol = 2; + break; + case HIDDEN_CHAR: /* CL: invisible text (for event formats only) */ /* this takes care of the topic */ + if (!(flags & STRIP_HIDDEN)) goto pass_char; + break; + case '\007': /*ATTR_BEEP: */ + case '\017': /*ATTR_RESET: */ + case '\026': /*ATTR_REVERSE: */ + case '\002': /*ATTR_BOLD: */ + case '\037': /*ATTR_UNDERLINE: */ + case '\035': /*ATTR_ITALICS: */ + if (!(flags & STRIP_ATTRIB)) goto pass_char; + break; + default: + pass_char: + *dst++ = *src; + } + } + src++; + } + *dst = 0; + + return (int) (dst - start); +} + +int +strip_hidden_attribute (char *src, char *dst) +{ + int len = 0; + while (*src != '\000') + { + if (*src != HIDDEN_CHAR) + { + *dst++ = *src; + len++; + } + src++; + } + return len; +} + +#if defined (USING_LINUX) || defined (USING_FREEBSD) || defined (__APPLE__) + +static void +get_cpu_info (double *mhz, int *cpus) +{ + +#ifdef USING_LINUX + + char buf[256]; + int fh; + + *mhz = 0; + *cpus = 0; + + fh = open ("/proc/cpuinfo", O_RDONLY); /* linux 2.2+ only */ + if (fh == -1) + { + *cpus = 1; + return; + } + + while (1) + { + if (waitline (fh, buf, sizeof buf, FALSE) < 0) + break; + if (!strncmp (buf, "cycle frequency [Hz]\t:", 22)) /* alpha */ + { + *mhz = atoi (buf + 23) / 1000000; + } else if (!strncmp (buf, "cpu MHz\t\t:", 10)) /* i386 */ + { + *mhz = atof (buf + 11) + 0.5; + } else if (!strncmp (buf, "clock\t\t:", 8)) /* PPC */ + { + *mhz = atoi (buf + 9); + } else if (!strncmp (buf, "processor\t", 10)) + { + (*cpus)++; + } + } + close (fh); + if (!*cpus) + *cpus = 1; + +#endif +#ifdef USING_FREEBSD + + int mib[2], ncpu; + u_long freq; + size_t len; + + freq = 0; + *mhz = 0; + *cpus = 0; + + mib[0] = CTL_HW; + mib[1] = HW_NCPU; + + len = sizeof(ncpu); + sysctl(mib, 2, &ncpu, &len, NULL, 0); + + len = sizeof(freq); + sysctlbyname("machdep.tsc_freq", &freq, &len, NULL, 0); + + *cpus = ncpu; + *mhz = (freq / 1000000); + +#endif +#ifdef __APPLE__ + + int mib[2], ncpu; + unsigned long long freq; + size_t len; + + freq = 0; + *mhz = 0; + *cpus = 0; + + mib[0] = CTL_HW; + mib[1] = HW_NCPU; + + len = sizeof(ncpu); + sysctl(mib, 2, &ncpu, &len, NULL, 0); + + len = sizeof(freq); + sysctlbyname("hw.cpufrequency", &freq, &len, NULL, 0); + + *cpus = ncpu; + *mhz = (freq / 1000000); + +#endif + +} +#endif + +#ifdef WIN32 + +static int +get_mhz (void) +{ + HKEY hKey; + int result, data, dataSize; + + if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, "Hardware\\Description\\System\\" + "CentralProcessor\\0", 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS) + { + dataSize = sizeof (data); + result = RegQueryValueEx (hKey, "~MHz", 0, 0, (LPBYTE)&data, &dataSize); + RegCloseKey (hKey); + if (result == ERROR_SUCCESS) + return data; + } + return 0; /* fails on Win9x */ +} + +char * +get_cpu_str (void) +{ + static char verbuf[64]; + OSVERSIONINFO osvi; + SYSTEM_INFO si; + double mhz; + + osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFO); + GetVersionEx (&osvi); + GetSystemInfo (&si); + + mhz = get_mhz (); + if (mhz) + { + double cpuspeed = ( mhz > 1000 ) ? mhz / 1000 : mhz; + const char *cpuspeedstr = ( mhz > 1000 ) ? "GHz" : "MHz"; + sprintf (verbuf, "Windows %ld.%ld [i%d86/%.2f%s]", + osvi.dwMajorVersion, osvi.dwMinorVersion, si.wProcessorLevel, + cpuspeed, cpuspeedstr); + } else + sprintf (verbuf, "Windows %ld.%ld [i%d86]", + osvi.dwMajorVersion, osvi.dwMinorVersion, si.wProcessorLevel); + + return verbuf; +} + +#else + +char * +get_cpu_str (void) +{ +#if defined (USING_LINUX) || defined (USING_FREEBSD) || defined (__APPLE__) + double mhz; +#endif + int cpus = 1; + struct utsname un; + static char *buf = NULL; + + if (buf) + return buf; + + buf = malloc (128); + + uname (&un); + +#if defined (USING_LINUX) || defined (USING_FREEBSD) || defined (__APPLE__) + get_cpu_info (&mhz, &cpus); + if (mhz) + { + double cpuspeed = ( mhz > 1000 ) ? mhz / 1000 : mhz; + const char *cpuspeedstr = ( mhz > 1000 ) ? "GHz" : "MHz"; + snprintf (buf, 128, + (cpus == 1) ? "%s %s [%s/%.2f%s]" : "%s %s [%s/%.2f%s/SMP]", + un.sysname, un.release, un.machine, + cpuspeed, cpuspeedstr); + } else +#endif + snprintf (buf, 128, + (cpus == 1) ? "%s %s [%s]" : "%s %s [%s/SMP]", + un.sysname, un.release, un.machine); + + return buf; +} + +#endif + +int +buf_get_line (char *ibuf, char **buf, int *position, int len) +{ + int pos = *position, spos = pos; + + if (pos == len) + return 0; + + while (ibuf[pos++] != '\n') + { + if (pos == len) + return 0; + } + pos--; + ibuf[pos] = 0; + *buf = &ibuf[spos]; + pos++; + *position = pos; + return 1; +} + +int match(const char *mask, const char *string) +{ + register const char *m = mask, *s = string; + register char ch; + const char *bm, *bs; /* Will be reg anyway on a decent CPU/compiler */ + + /* Process the "head" of the mask, if any */ + while ((ch = *m++) && (ch != '*')) + switch (ch) + { + case '\\': + if (*m == '?' || *m == '*') + ch = *m++; + default: + if (rfc_tolower(*s) != rfc_tolower(ch)) + return 0; + case '?': + if (!*s++) + return 0; + }; + if (!ch) + return !(*s); + + /* We got a star: quickly find if/where we match the next char */ +got_star: + bm = m; /* Next try rollback here */ + while ((ch = *m++)) + switch (ch) + { + case '?': + if (!*s++) + return 0; + case '*': + bm = m; + continue; /* while */ + case '\\': + if (*m == '?' || *m == '*') + ch = *m++; + default: + goto break_while; /* C is structured ? */ + }; +break_while: + if (!ch) + return 1; /* mask ends with '*', we got it */ + ch = rfc_tolower(ch); + while (rfc_tolower(*s++) != ch) + if (!*s) + return 0; + bs = s; /* Next try start from here */ + + /* Check the rest of the "chunk" */ + while ((ch = *m++)) + { + switch (ch) + { + case '*': + goto got_star; + case '\\': + if (*m == '?' || *m == '*') + ch = *m++; + default: + if (rfc_tolower(*s) != rfc_tolower(ch)) + { + if (!*s) + return 0; + m = bm; + s = bs; + goto got_star; + }; + case '?': + if (!*s++) + return 0; + }; + }; + if (*s) + { + m = bm; + s = bs; + goto got_star; + }; + return 1; +} + +void +for_files (char *dirname, char *mask, void callback (char *file)) +{ + DIR *dir; + struct dirent *ent; + char *buf; + + dir = opendir (dirname); + if (dir) + { + while ((ent = readdir (dir))) + { + if (strcmp (ent->d_name, ".") && strcmp (ent->d_name, "..")) + { + if (match (mask, ent->d_name)) + { + buf = malloc (strlen (dirname) + strlen (ent->d_name) + 2); + sprintf (buf, "%s/%s", dirname, ent->d_name); + callback (buf); + free (buf); + } + } + } + closedir (dir); + } +} + +/*void +tolowerStr (char *str) +{ + while (*str) + { + *str = rfc_tolower (*str); + str++; + } +}*/ + +typedef struct +{ + char *code, *country; +} domain_t; + +static int +country_compare (const void *a, const void *b) +{ + return strcasecmp (a, ((domain_t *)b)->code); +} + +static const domain_t domain[] = +{ + {"AC", N_("Ascension Island") }, + {"AD", N_("Andorra") }, + {"AE", N_("United Arab Emirates") }, + {"AF", N_("Afghanistan") }, + {"AG", N_("Antigua and Barbuda") }, + {"AI", N_("Anguilla") }, + {"AL", N_("Albania") }, + {"AM", N_("Armenia") }, + {"AN", N_("Netherlands Antilles") }, + {"AO", N_("Angola") }, + {"AQ", N_("Antarctica") }, + {"AR", N_("Argentina") }, + {"ARPA", N_("Reverse DNS") }, + {"AS", N_("American Samoa") }, + {"AT", N_("Austria") }, + {"ATO", N_("Nato Fiel") }, + {"AU", N_("Australia") }, + {"AW", N_("Aruba") }, + {"AX", N_("Aland Islands") }, + {"AZ", N_("Azerbaijan") }, + {"BA", N_("Bosnia and Herzegovina") }, + {"BB", N_("Barbados") }, + {"BD", N_("Bangladesh") }, + {"BE", N_("Belgium") }, + {"BF", N_("Burkina Faso") }, + {"BG", N_("Bulgaria") }, + {"BH", N_("Bahrain") }, + {"BI", N_("Burundi") }, + {"BIZ", N_("Businesses"), }, + {"BJ", N_("Benin") }, + {"BM", N_("Bermuda") }, + {"BN", N_("Brunei Darussalam") }, + {"BO", N_("Bolivia") }, + {"BR", N_("Brazil") }, + {"BS", N_("Bahamas") }, + {"BT", N_("Bhutan") }, + {"BV", N_("Bouvet Island") }, + {"BW", N_("Botswana") }, + {"BY", N_("Belarus") }, + {"BZ", N_("Belize") }, + {"CA", N_("Canada") }, + {"CC", N_("Cocos Islands") }, + {"CD", N_("Democratic Republic of Congo") }, + {"CF", N_("Central African Republic") }, + {"CG", N_("Congo") }, + {"CH", N_("Switzerland") }, + {"CI", N_("Cote d'Ivoire") }, + {"CK", N_("Cook Islands") }, + {"CL", N_("Chile") }, + {"CM", N_("Cameroon") }, + {"CN", N_("China") }, + {"CO", N_("Colombia") }, + {"COM", N_("Internic Commercial") }, + {"CR", N_("Costa Rica") }, + {"CS", N_("Serbia and Montenegro") }, + {"CU", N_("Cuba") }, + {"CV", N_("Cape Verde") }, + {"CX", N_("Christmas Island") }, + {"CY", N_("Cyprus") }, + {"CZ", N_("Czech Republic") }, + {"DE", N_("Germany") }, + {"DJ", N_("Djibouti") }, + {"DK", N_("Denmark") }, + {"DM", N_("Dominica") }, + {"DO", N_("Dominican Republic") }, + {"DZ", N_("Algeria") }, + {"EC", N_("Ecuador") }, + {"EDU", N_("Educational Institution") }, + {"EE", N_("Estonia") }, + {"EG", N_("Egypt") }, + {"EH", N_("Western Sahara") }, + {"ER", N_("Eritrea") }, + {"ES", N_("Spain") }, + {"ET", N_("Ethiopia") }, + {"EU", N_("European Union") }, + {"FI", N_("Finland") }, + {"FJ", N_("Fiji") }, + {"FK", N_("Falkland Islands") }, + {"FM", N_("Micronesia") }, + {"FO", N_("Faroe Islands") }, + {"FR", N_("France") }, + {"GA", N_("Gabon") }, + {"GB", N_("Great Britain") }, + {"GD", N_("Grenada") }, + {"GE", N_("Georgia") }, + {"GF", N_("French Guiana") }, + {"GG", N_("British Channel Isles") }, + {"GH", N_("Ghana") }, + {"GI", N_("Gibraltar") }, + {"GL", N_("Greenland") }, + {"GM", N_("Gambia") }, + {"GN", N_("Guinea") }, + {"GOV", N_("Government") }, + {"GP", N_("Guadeloupe") }, + {"GQ", N_("Equatorial Guinea") }, + {"GR", N_("Greece") }, + {"GS", N_("S. Georgia and S. Sandwich Isles") }, + {"GT", N_("Guatemala") }, + {"GU", N_("Guam") }, + {"GW", N_("Guinea-Bissau") }, + {"GY", N_("Guyana") }, + {"HK", N_("Hong Kong") }, + {"HM", N_("Heard and McDonald Islands") }, + {"HN", N_("Honduras") }, + {"HR", N_("Croatia") }, + {"HT", N_("Haiti") }, + {"HU", N_("Hungary") }, + {"ID", N_("Indonesia") }, + {"IE", N_("Ireland") }, + {"IL", N_("Israel") }, + {"IM", N_("Isle of Man") }, + {"IN", N_("India") }, + {"INFO", N_("Informational") }, + {"INT", N_("International") }, + {"IO", N_("British Indian Ocean Territory") }, + {"IQ", N_("Iraq") }, + {"IR", N_("Iran") }, + {"IS", N_("Iceland") }, + {"IT", N_("Italy") }, + {"JE", N_("Jersey") }, + {"JM", N_("Jamaica") }, + {"JO", N_("Jordan") }, + {"JP", N_("Japan") }, + {"KE", N_("Kenya") }, + {"KG", N_("Kyrgyzstan") }, + {"KH", N_("Cambodia") }, + {"KI", N_("Kiribati") }, + {"KM", N_("Comoros") }, + {"KN", N_("St. Kitts and Nevis") }, + {"KP", N_("North Korea") }, + {"KR", N_("South Korea") }, + {"KW", N_("Kuwait") }, + {"KY", N_("Cayman Islands") }, + {"KZ", N_("Kazakhstan") }, + {"LA", N_("Laos") }, + {"LB", N_("Lebanon") }, + {"LC", N_("Saint Lucia") }, + {"LI", N_("Liechtenstein") }, + {"LK", N_("Sri Lanka") }, + {"LR", N_("Liberia") }, + {"LS", N_("Lesotho") }, + {"LT", N_("Lithuania") }, + {"LU", N_("Luxembourg") }, + {"LV", N_("Latvia") }, + {"LY", N_("Libya") }, + {"MA", N_("Morocco") }, + {"MC", N_("Monaco") }, + {"MD", N_("Moldova") }, + {"MED", N_("United States Medical") }, + {"MG", N_("Madagascar") }, + {"MH", N_("Marshall Islands") }, + {"MIL", N_("Military") }, + {"MK", N_("Macedonia") }, + {"ML", N_("Mali") }, + {"MM", N_("Myanmar") }, + {"MN", N_("Mongolia") }, + {"MO", N_("Macau") }, + {"MP", N_("Northern Mariana Islands") }, + {"MQ", N_("Martinique") }, + {"MR", N_("Mauritania") }, + {"MS", N_("Montserrat") }, + {"MT", N_("Malta") }, + {"MU", N_("Mauritius") }, + {"MV", N_("Maldives") }, + {"MW", N_("Malawi") }, + {"MX", N_("Mexico") }, + {"MY", N_("Malaysia") }, + {"MZ", N_("Mozambique") }, + {"NA", N_("Namibia") }, + {"NC", N_("New Caledonia") }, + {"NE", N_("Niger") }, + {"NET", N_("Internic Network") }, + {"NF", N_("Norfolk Island") }, + {"NG", N_("Nigeria") }, + {"NI", N_("Nicaragua") }, + {"NL", N_("Netherlands") }, + {"NO", N_("Norway") }, + {"NP", N_("Nepal") }, + {"NR", N_("Nauru") }, + {"NU", N_("Niue") }, + {"NZ", N_("New Zealand") }, + {"OM", N_("Oman") }, + {"ORG", N_("Internic Non-Profit Organization") }, + {"PA", N_("Panama") }, + {"PE", N_("Peru") }, + {"PF", N_("French Polynesia") }, + {"PG", N_("Papua New Guinea") }, + {"PH", N_("Philippines") }, + {"PK", N_("Pakistan") }, + {"PL", N_("Poland") }, + {"PM", N_("St. Pierre and Miquelon") }, + {"PN", N_("Pitcairn") }, + {"PR", N_("Puerto Rico") }, + {"PS", N_("Palestinian Territory") }, + {"PT", N_("Portugal") }, + {"PW", N_("Palau") }, + {"PY", N_("Paraguay") }, + {"QA", N_("Qatar") }, + {"RE", N_("Reunion") }, + {"RO", N_("Romania") }, + {"RPA", N_("Old School ARPAnet") }, + {"RU", N_("Russian Federation") }, + {"RW", N_("Rwanda") }, + {"SA", N_("Saudi Arabia") }, + {"SB", N_("Solomon Islands") }, + {"SC", N_("Seychelles") }, + {"SD", N_("Sudan") }, + {"SE", N_("Sweden") }, + {"SG", N_("Singapore") }, + {"SH", N_("St. Helena") }, + {"SI", N_("Slovenia") }, + {"SJ", N_("Svalbard and Jan Mayen Islands") }, + {"SK", N_("Slovak Republic") }, + {"SL", N_("Sierra Leone") }, + {"SM", N_("San Marino") }, + {"SN", N_("Senegal") }, + {"SO", N_("Somalia") }, + {"SR", N_("Suriname") }, + {"ST", N_("Sao Tome and Principe") }, + {"SU", N_("Former USSR") }, + {"SV", N_("El Salvador") }, + {"SY", N_("Syria") }, + {"SZ", N_("Swaziland") }, + {"TC", N_("Turks and Caicos Islands") }, + {"TD", N_("Chad") }, + {"TF", N_("French Southern Territories") }, + {"TG", N_("Togo") }, + {"TH", N_("Thailand") }, + {"TJ", N_("Tajikistan") }, + {"TK", N_("Tokelau") }, + {"TL", N_("East Timor") }, + {"TM", N_("Turkmenistan") }, + {"TN", N_("Tunisia") }, + {"TO", N_("Tonga") }, + {"TP", N_("East Timor") }, + {"TR", N_("Turkey") }, + {"TT", N_("Trinidad and Tobago") }, + {"TV", N_("Tuvalu") }, + {"TW", N_("Taiwan") }, + {"TZ", N_("Tanzania") }, + {"UA", N_("Ukraine") }, + {"UG", N_("Uganda") }, + {"UK", N_("United Kingdom") }, + {"US", N_("United States of America") }, + {"UY", N_("Uruguay") }, + {"UZ", N_("Uzbekistan") }, + {"VA", N_("Vatican City State") }, + {"VC", N_("St. Vincent and the Grenadines") }, + {"VE", N_("Venezuela") }, + {"VG", N_("British Virgin Islands") }, + {"VI", N_("US Virgin Islands") }, + {"VN", N_("Vietnam") }, + {"VU", N_("Vanuatu") }, + {"WF", N_("Wallis and Futuna Islands") }, + {"WS", N_("Samoa") }, + {"YE", N_("Yemen") }, + {"YT", N_("Mayotte") }, + {"YU", N_("Yugoslavia") }, + {"ZA", N_("South Africa") }, + {"ZM", N_("Zambia") }, + {"ZW", N_("Zimbabwe") }, +}; + +char * +country (char *hostname) +{ + char *p; + domain_t *dom; + + if (!hostname || !*hostname || isdigit ((unsigned char) hostname[strlen (hostname) - 1])) + return _("Unknown"); + if ((p = strrchr (hostname, '.'))) + p++; + else + p = hostname; + + dom = bsearch (p, domain, sizeof (domain) / sizeof (domain_t), + sizeof (domain_t), country_compare); + + if (!dom) + return _("Unknown"); + + return _(dom->country); +} + +void +country_search (char *pattern, void *ud, void (*print)(void *, char *, ...)) +{ + const domain_t *dom; + int i; + + for (i = 0; i < sizeof (domain) / sizeof (domain_t); i++) + { + dom = &domain[i]; + if (match (pattern, dom->country) || match (pattern, _(dom->country))) + { + print (ud, "%s = %s\n", dom->code, _(dom->country)); + } + } +} + +/* I think gnome1.0.x isn't necessarily linked against popt, ah well! */ +/* !!! For now use this inlined function, or it would break fe-text building */ +/* .... will find a better solution later. */ +/*#ifndef USE_GNOME*/ + +/* this is taken from gnome-libs 1.2.4 */ +#define POPT_ARGV_ARRAY_GROW_DELTA 5 + +int my_poptParseArgvString(const char * s, int * argcPtr, char *** argvPtr) { + char * buf, * bufStart, * dst; + const char * src; + char quote = '\0'; + int argvAlloced = POPT_ARGV_ARRAY_GROW_DELTA; + char ** argv = malloc(sizeof(*argv) * argvAlloced); + const char ** argv2; + int argc = 0; + int i, buflen; + + buflen = strlen(s) + 1; +/* bufStart = buf = alloca(buflen);*/ + bufStart = buf = malloc (buflen); + memset(buf, '\0', buflen); + + src = s; + argv[argc] = buf; + + while (*src) { + if (quote == *src) { + quote = '\0'; + } else if (quote) { + if (*src == '\\') { + src++; + if (!*src) { + free(argv); + free(bufStart); + return 1; + } + if (*src != quote) *buf++ = '\\'; + } + *buf++ = *src; + /*} else if (isspace((unsigned char) *src)) {*/ + } else if (*src == ' ') { + if (*argv[argc]) { + buf++, argc++; + if (argc == argvAlloced) { + argvAlloced += POPT_ARGV_ARRAY_GROW_DELTA; + argv = realloc(argv, sizeof(*argv) * argvAlloced); + } + argv[argc] = buf; + } + } else switch (*src) { + case '"': + case '\'': + quote = *src; + break; + case '\\': + src++; + if (!*src) { + free(argv); + free(bufStart); + return 1; + } + /* fallthrough */ + default: + *buf++ = *src; + } + + src++; + } + + if (strlen(argv[argc])) { + argc++, buf++; + } + + dst = malloc((argc + 1) * sizeof(*argv) + (buf - bufStart)); + argv2 = (void *) dst; + dst += (argc + 1) * sizeof(*argv); + memcpy((void *)argv2, argv, argc * sizeof(*argv)); + argv2[argc] = NULL; + memcpy(dst, bufStart, buf - bufStart); + + for (i = 0; i < argc; i++) { + argv2[i] = dst + (argv[i] - bufStart); + } + + free(argv); + + *argvPtr = (char **)argv2; /* XXX don't change the API */ + *argcPtr = argc; + + free (bufStart); + + return 0; +} + +int +util_exec (const char *cmd) +{ + int pid; + char **argv; + int argc; + int fd; + + if (my_poptParseArgvString (cmd, &argc, &argv) != 0) + return -1; + +#ifndef WIN32 + pid = fork (); + if (pid == -1) + return -1; + if (pid == 0) + { + /* Now close all open file descriptors except stdin, stdout and stderr */ + for (fd = 3; fd < 1024; fd++) close(fd); + execvp (argv[0], argv); + _exit (0); + } else + { + free (argv); + return pid; + } +#else + spawnvp (_P_DETACH, argv[0], argv); + free (argv); + return 0; +#endif +} + +int +util_execv (char * const argv[]) +{ + int pid, fd; + +#ifndef WIN32 + pid = fork (); + if (pid == -1) + return -1; + if (pid == 0) + { + /* Now close all open file descriptors except stdin, stdout and stderr */ + for (fd = 3; fd < 1024; fd++) close(fd); + execv (argv[0], argv); + _exit (0); + } else + { + return pid; + } +#else + spawnv (_P_DETACH, argv[0], argv); + return 0; +#endif +} + +unsigned long +make_ping_time (void) +{ +#ifndef WIN32 + struct timeval timev; + gettimeofday (&timev, 0); +#else + GTimeVal timev; + g_get_current_time (&timev); +#endif + return (timev.tv_sec - 50000) * 1000000 + timev.tv_usec; +} + + +/************************************************************************ + * This technique was borrowed in part from the source code to + * ircd-hybrid-5.3 to implement case-insensitive string matches which + * are fully compliant with Section 2.2 of RFC 1459, the copyright + * of that code being (C) 1990 Jarkko Oikarinen and under the GPL. + * + * A special thanks goes to Mr. Okarinen for being the one person who + * seems to have ever noticed this section in the original RFC and + * written code for it. Shame on all the rest of you (myself included). + * + * --+ Dagmar d'Surreal + */ + +int +rfc_casecmp (const char *s1, const char *s2) +{ + register unsigned char *str1 = (unsigned char *) s1; + register unsigned char *str2 = (unsigned char *) s2; + register int res; + + while ((res = rfc_tolower (*str1) - rfc_tolower (*str2)) == 0) + { + if (*str1 == '\0') + return 0; + str1++; + str2++; + } + return (res); +} + +int +rfc_ncasecmp (char *str1, char *str2, int n) +{ + register unsigned char *s1 = (unsigned char *) str1; + register unsigned char *s2 = (unsigned char *) str2; + register int res; + + while ((res = hal_casecomp(s1,s2)) == 0) + { + s1++; + s2++; + n--; + if (n == 0 || (*s1 == '\0' && *s2 == '\0')) + return 0; + } + return (res); +} + +int +hal_casecomp ( char *s1, char *s2) +{ + +/* This function, called by rfc_ncasecmp, enables enhanced tab + * completition: It completes te<tab> to Test but not Te<tab> to + * test2. (This is useful if you have two users Test1 and test2 in + * the channel. Can be toggeled wit /set completion_cinsens (0|1) + * + * -- Mathias Weyland <mathias@weyland.ch>, 6.9.2004 +*/ + if((*s2 - rfc_tolower (*s2)) || prefs.completion_cinsens) + { + return (rfc_tolower (*s1) - rfc_tolower (*s2)); + } else { + return (*s1 - *s2); + } +} + +const unsigned char rfc_tolowertab[] = + { 0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, + 0xb, 0xc, 0xd, 0xe, 0xf, 0x10, 0x11, 0x12, 0x13, 0x14, + 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, + ' ', '!', '"', '#', '$', '%', '&', 0x27, '(', ')', + '*', '+', ',', '-', '.', '/', + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + ':', ';', '<', '=', '>', '?', + '@', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', + 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', + 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~', + '_', + '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', + 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', + 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~', + 0x7f, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, + 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, + 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, + 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, + 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, + 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, + 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, + 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, + 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, + 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, + 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, + 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, + 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, + 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff +}; + +/*static unsigned char touppertab[] = + { 0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, + 0xb, 0xc, 0xd, 0xe, 0xf, 0x10, 0x11, 0x12, 0x13, 0x14, + 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, + ' ', '!', '"', '#', '$', '%', '&', 0x27, '(', ')', + '*', '+', ',', '-', '.', '/', + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + ':', ';', '<', '=', '>', '?', + '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', + 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', + 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', '\\', ']', '^', + 0x5f, + '`', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', + 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', + 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', '\\', ']', '^', + 0x7f, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, + 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, + 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, + 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, + 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, + 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, + 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, + 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, + 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, + 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, + 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, + 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, + 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, + 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff +};*/ + +/*static int +rename_utf8 (char *oldname, char *newname) +{ + int sav, res; + char *fso, *fsn; + + fso = xchat_filename_from_utf8 (oldname, -1, 0, 0, 0); + if (!fso) + return FALSE; + fsn = xchat_filename_from_utf8 (newname, -1, 0, 0, 0); + if (!fsn) + { + g_free (fso); + return FALSE; + } + + res = rename (fso, fsn); + sav = errno; + g_free (fso); + g_free (fsn); + errno = sav; + return res; +} + +static int +unlink_utf8 (char *fname) +{ + int res; + char *fs; + + fs = xchat_filename_from_utf8 (fname, -1, 0, 0, 0); + if (!fs) + return FALSE; + + res = unlink (fs); + g_free (fs); + return res; +}*/ + +static gboolean +file_exists_utf8 (char *fname) +{ + int res; + char *fs; + + fs = xchat_filename_from_utf8 (fname, -1, 0, 0, 0); + if (!fs) + return FALSE; + + res = access (fs, F_OK); + g_free (fs); + if (res == 0) + return TRUE; + return FALSE; +} + +static gboolean +copy_file (char *dl_src, char *dl_dest, int permissions) /* FS encoding */ +{ + int tmp_src, tmp_dest; + gboolean ok = FALSE; + char dl_tmp[4096]; + int return_tmp, return_tmp2; + + if ((tmp_src = open (dl_src, O_RDONLY | OFLAGS)) == -1) + { + fprintf (stderr, "Unable to open() file '%s' (%s) !", dl_src, + strerror (errno)); + return FALSE; + } + + if ((tmp_dest = + open (dl_dest, O_WRONLY | O_CREAT | O_TRUNC | OFLAGS, permissions)) < 0) + { + close (tmp_src); + fprintf (stderr, "Unable to create file '%s' (%s) !", dl_src, + strerror (errno)); + return FALSE; + } + + for (;;) + { + return_tmp = read (tmp_src, dl_tmp, sizeof (dl_tmp)); + + if (!return_tmp) + { + ok = TRUE; + break; + } + + if (return_tmp < 0) + { + fprintf (stderr, "download_move_to_completed_dir(): " + "error reading while moving file to save directory (%s)", + strerror (errno)); + break; + } + + return_tmp2 = write (tmp_dest, dl_tmp, return_tmp); + + if (return_tmp2 < 0) + { + fprintf (stderr, "download_move_to_completed_dir(): " + "error writing while moving file to save directory (%s)", + strerror (errno)); + break; + } + + if (return_tmp < sizeof (dl_tmp)) + { + ok = TRUE; + break; + } + } + + close (tmp_dest); + close (tmp_src); + return ok; +} + +/* Takes care of moving a file from a temporary download location to a completed location. Now in UTF-8. */ +void +move_file_utf8 (char *src_dir, char *dst_dir, char *fname, int dccpermissions) +{ + char src[4096]; + char dst[4096]; + int res, i; + char *src_fs; /* FileSystem encoding */ + char *dst_fs; + + /* if dcc_dir and dcc_completed_dir are the same then we are done */ + if (0 == strcmp (src_dir, dst_dir) || + 0 == dst_dir[0]) + return; /* Already in "completed dir" */ + + snprintf (src, sizeof (src), "%s/%s", src_dir, fname); + snprintf (dst, sizeof (dst), "%s/%s", dst_dir, fname); + + /* already exists in completed dir? Append a number */ + if (file_exists_utf8 (dst)) + { + for (i = 0; ; i++) + { + snprintf (dst, sizeof (dst), "%s/%s.%d", dst_dir, fname, i); + if (!file_exists_utf8 (dst)) + break; + } + } + + /* convert UTF-8 to filesystem encoding */ + src_fs = xchat_filename_from_utf8 (src, -1, 0, 0, 0); + if (!src_fs) + return; + dst_fs = xchat_filename_from_utf8 (dst, -1, 0, 0, 0); + if (!dst_fs) + { + g_free (src_fs); + return; + } + + /* first try a simple rename move */ + res = rename (src_fs, dst_fs); + + if (res == -1 && (errno == EXDEV || errno == EPERM)) + { + /* link failed because either the two paths aren't on the */ + /* same filesystem or the filesystem doesn't support hard */ + /* links, so we have to do a copy. */ + if (copy_file (src_fs, dst_fs, dccpermissions)) + unlink (src_fs); + } + + g_free (dst_fs); + g_free (src_fs); +} + +int +mkdir_utf8 (char *dir) +{ + int ret; + + dir = xchat_filename_from_utf8 (dir, -1, 0, 0, 0); + if (!dir) + return -1; + +#ifdef WIN32 + ret = mkdir (dir); +#else + ret = mkdir (dir, S_IRUSR | S_IWUSR | S_IXUSR); +#endif + g_free (dir); + + return ret; +} + +/* separates a string according to a 'sep' char, then calls the callback + function for each token found */ + +int +token_foreach (char *str, char sep, + int (*callback) (char *str, void *ud), void *ud) +{ + char t, *start = str; + + while (1) + { + if (*str == sep || *str == 0) + { + t = *str; + *str = 0; + if (callback (start, ud) < 1) + { + *str = t; + return FALSE; + } + *str = t; + + if (*str == 0) + break; + str++; + start = str; + + } else + { + /* chars $00-$7f can never be embedded in utf-8 */ + str++; + } + } + + return TRUE; +} + +/* 31 bit string hash functions */ + +guint32 +str_hash (const char *key) +{ + const char *p = key; + guint32 h = *p; + + if (h) + for (p += 1; *p != '\0'; p++) + h = (h << 5) - h + *p; + + return h; +} + +guint32 +str_ihash (const unsigned char *key) +{ + const char *p = key; + guint32 h = rfc_tolowertab [(guint)*p]; + + if (h) + for (p += 1; *p != '\0'; p++) + h = (h << 5) - h + rfc_tolowertab [(guint)*p]; + + return h; +} + +/* features: 1. "src" must be valid, NULL terminated UTF-8 */ +/* 2. "dest" will be left with valid UTF-8 - no partial chars! */ + +void +safe_strcpy (char *dest, const char *src, int bytes_left) +{ + int mbl; + + while (1) + { + mbl = g_utf8_skip[*((unsigned char *)src)]; + + if (bytes_left < (mbl + 1)) /* can't fit with NULL? */ + { + *dest = 0; + break; + } + + if (mbl == 1) /* one byte char */ + { + *dest = *src; + if (*src == 0) + break; /* it all fit */ + dest++; + src++; + bytes_left--; + } + else /* multibyte char */ + { + memcpy (dest, src, mbl); + dest += mbl; + src += mbl; + bytes_left -= mbl; + } + } +} diff --git a/etc/wyatt8740/src/common/util.h b/etc/wyatt8740/src/common/util.h new file mode 100644 index 0000000..f74f071 --- /dev/null +++ b/etc/wyatt8740/src/common/util.h @@ -0,0 +1,55 @@ +/************************************************************************ + * This technique was borrowed in part from the source code to + * ircd-hybrid-5.3 to implement case-insensitive string matches which + * are fully compliant with Section 2.2 of RFC 1459, the copyright + * of that code being (C) 1990 Jarkko Oikarinen and under the GPL. + * + * A special thanks goes to Mr. Okarinen for being the one person who + * seems to have ever noticed this section in the original RFC and + * written code for it. Shame on all the rest of you (myself included). + * + * --+ Dagmar d'Surreal + */ + +#ifndef XCHAT_UTIL_H +#define XCHAT_UTIL_H + +#define rfc_tolower(c) (rfc_tolowertab[(unsigned char)(c)]) + +extern const unsigned char rfc_tolowertab[]; + +int my_poptParseArgvString(const char * s, int * argcPtr, char *** argvPtr); +char *expand_homedir (char *file); +void path_part (char *file, char *path, int pathlen); +int match (const char *mask, const char *string); +char *file_part (char *file); +void for_files (char *dirname, char *mask, void callback (char *file)); +int rfc_casecmp (const char *, const char *); +int rfc_ncasecmp (char *, char *, int); +int hal_casecomp ( char *s1, char *s2); +int buf_get_line (char *, char **, int *, int len); +char *nocasestrstr (const char *text, const char *tofind); +char *country (char *); +void country_search (char *pattern, void *ud, void (*print)(void *, char *, ...)); +char *get_cpu_str (void); +int util_exec (const char *cmd); +int util_execv (char * const argv[]); +#define STRIP_COLOR 1 +#define STRIP_ATTRIB 2 +#define STRIP_HIDDEN 4 +#define STRIP_ESCMARKUP 8 +#define STRIP_ALL 7 +gchar *strip_color (const char *text, int len, int flags); +int strip_color2 (const char *src, int len, char *dst, int flags); +int strip_hidden_attribute (char *src, char *dst); +char *errorstring (int err); +int waitline (int sok, char *buf, int bufsize, int); +unsigned long make_ping_time (void); +void move_file_utf8 (char *src_dir, char *dst_dir, char *fname, int dccpermissions); +int mkdir_utf8 (char *dir); +int token_foreach (char *str, char sep, int (*callback) (char *str, void *ud), void *ud); +guint32 str_hash (const char *key); +guint32 str_ihash (const unsigned char *key); +void safe_strcpy (char *dest, const char *src, int bytes_left); + +#endif diff --git a/etc/wyatt8740/src/common/xchat-plugin.h b/etc/wyatt8740/src/common/xchat-plugin.h new file mode 100644 index 0000000..30b1929 --- /dev/null +++ b/etc/wyatt8740/src/common/xchat-plugin.h @@ -0,0 +1,334 @@ +/* You can distribute this header with your plugins for easy compilation */ +#ifndef XCHAT_PLUGIN_H +#define XCHAT_PLUGIN_H + +#include <time.h> + +#define XCHAT_IFACE_MAJOR 1 +#define XCHAT_IFACE_MINOR 9 +#define XCHAT_IFACE_MICRO 11 +#define XCHAT_IFACE_VERSION ((XCHAT_IFACE_MAJOR * 10000) + \ + (XCHAT_IFACE_MINOR * 100) + \ + (XCHAT_IFACE_MICRO)) + +#define XCHAT_PRI_HIGHEST 127 +#define XCHAT_PRI_HIGH 64 +#define XCHAT_PRI_NORM 0 +#define XCHAT_PRI_LOW (-64) +#define XCHAT_PRI_LOWEST (-128) + +#define XCHAT_FD_READ 1 +#define XCHAT_FD_WRITE 2 +#define XCHAT_FD_EXCEPTION 4 +#define XCHAT_FD_NOTSOCKET 8 + +#define XCHAT_EAT_NONE 0 /* pass it on through! */ +#define XCHAT_EAT_XCHAT 1 /* don't let xchat see this event */ +#define XCHAT_EAT_PLUGIN 2 /* don't let other plugins see this event */ +#define XCHAT_EAT_ALL (XCHAT_EAT_XCHAT|XCHAT_EAT_PLUGIN) /* don't let anything see this event */ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct _xchat_plugin xchat_plugin; +typedef struct _xchat_list xchat_list; +typedef struct _xchat_hook xchat_hook; +#ifndef PLUGIN_C +typedef struct _xchat_context xchat_context; +#endif + +#ifndef PLUGIN_C +struct _xchat_plugin +{ + /* these are only used on win32 */ + xchat_hook *(*xchat_hook_command) (xchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], char *word_eol[], void *user_data), + const char *help_text, + void *userdata); + xchat_hook *(*xchat_hook_server) (xchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], char *word_eol[], void *user_data), + void *userdata); + xchat_hook *(*xchat_hook_print) (xchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], void *user_data), + void *userdata); + xchat_hook *(*xchat_hook_timer) (xchat_plugin *ph, + int timeout, + int (*callback) (void *user_data), + void *userdata); + xchat_hook *(*xchat_hook_fd) (xchat_plugin *ph, + int fd, + int flags, + int (*callback) (int fd, int flags, void *user_data), + void *userdata); + void *(*xchat_unhook) (xchat_plugin *ph, + xchat_hook *hook); + void (*xchat_print) (xchat_plugin *ph, + const char *text); + void (*xchat_printf) (xchat_plugin *ph, + const char *format, ...); + void (*xchat_command) (xchat_plugin *ph, + const char *command); + void (*xchat_commandf) (xchat_plugin *ph, + const char *format, ...); + int (*xchat_nickcmp) (xchat_plugin *ph, + const char *s1, + const char *s2); + int (*xchat_set_context) (xchat_plugin *ph, + xchat_context *ctx); + xchat_context *(*xchat_find_context) (xchat_plugin *ph, + const char *servname, + const char *channel); + xchat_context *(*xchat_get_context) (xchat_plugin *ph); + const char *(*xchat_get_info) (xchat_plugin *ph, + const char *id); + int (*xchat_get_prefs) (xchat_plugin *ph, + const char *name, + const char **string, + int *integer); + xchat_list * (*xchat_list_get) (xchat_plugin *ph, + const char *name); + void (*xchat_list_free) (xchat_plugin *ph, + xchat_list *xlist); + const char * const * (*xchat_list_fields) (xchat_plugin *ph, + const char *name); + int (*xchat_list_next) (xchat_plugin *ph, + xchat_list *xlist); + const char * (*xchat_list_str) (xchat_plugin *ph, + xchat_list *xlist, + const char *name); + int (*xchat_list_int) (xchat_plugin *ph, + xchat_list *xlist, + const char *name); + void * (*xchat_plugingui_add) (xchat_plugin *ph, + const char *filename, + const char *name, + const char *desc, + const char *version, + char *reserved); + void (*xchat_plugingui_remove) (xchat_plugin *ph, + void *handle); + int (*xchat_emit_print) (xchat_plugin *ph, + const char *event_name, ...); + int (*xchat_read_fd) (xchat_plugin *ph, + void *src, + char *buf, + int *len); + time_t (*xchat_list_time) (xchat_plugin *ph, + xchat_list *xlist, + const char *name); + char *(*xchat_gettext) (xchat_plugin *ph, + const char *msgid); + void (*xchat_send_modes) (xchat_plugin *ph, + const char **targets, + int ntargets, + int modes_per_line, + char sign, + char mode); + char *(*xchat_strip) (xchat_plugin *ph, + const char *str, + int len, + int flags); + void (*xchat_free) (xchat_plugin *ph, + void *ptr); +}; +#endif + + +xchat_hook * +xchat_hook_command (xchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], char *word_eol[], void *user_data), + const char *help_text, + void *userdata); + +xchat_hook * +xchat_hook_server (xchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], char *word_eol[], void *user_data), + void *userdata); + +xchat_hook * +xchat_hook_print (xchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], void *user_data), + void *userdata); + +xchat_hook * +xchat_hook_timer (xchat_plugin *ph, + int timeout, + int (*callback) (void *user_data), + void *userdata); + +xchat_hook * +xchat_hook_fd (xchat_plugin *ph, + int fd, + int flags, + int (*callback) (int fd, int flags, void *user_data), + void *userdata); + +void * +xchat_unhook (xchat_plugin *ph, + xchat_hook *hook); + +void +xchat_print (xchat_plugin *ph, + const char *text); + +void +xchat_printf (xchat_plugin *ph, + const char *format, ...); + +void +xchat_command (xchat_plugin *ph, + const char *command); + +void +xchat_commandf (xchat_plugin *ph, + const char *format, ...); + +int +xchat_nickcmp (xchat_plugin *ph, + const char *s1, + const char *s2); + +int +xchat_set_context (xchat_plugin *ph, + xchat_context *ctx); + +xchat_context * +xchat_find_context (xchat_plugin *ph, + const char *servname, + const char *channel); + +xchat_context * +xchat_get_context (xchat_plugin *ph); + +const char * +xchat_get_info (xchat_plugin *ph, + const char *id); + +int +xchat_get_prefs (xchat_plugin *ph, + const char *name, + const char **string, + int *integer); + +xchat_list * +xchat_list_get (xchat_plugin *ph, + const char *name); + +void +xchat_list_free (xchat_plugin *ph, + xchat_list *xlist); + +const char * const * +xchat_list_fields (xchat_plugin *ph, + const char *name); + +int +xchat_list_next (xchat_plugin *ph, + xchat_list *xlist); + +const char * +xchat_list_str (xchat_plugin *ph, + xchat_list *xlist, + const char *name); + +int +xchat_list_int (xchat_plugin *ph, + xchat_list *xlist, + const char *name); + +time_t +xchat_list_time (xchat_plugin *ph, + xchat_list *xlist, + const char *name); + +void * +xchat_plugingui_add (xchat_plugin *ph, + const char *filename, + const char *name, + const char *desc, + const char *version, + char *reserved); + +void +xchat_plugingui_remove (xchat_plugin *ph, + void *handle); + +int +xchat_emit_print (xchat_plugin *ph, + const char *event_name, ...); + +char * +xchat_gettext (xchat_plugin *ph, + const char *msgid); + +void +xchat_send_modes (xchat_plugin *ph, + const char **targets, + int ntargets, + int modes_per_line, + char sign, + char mode); + +char * +xchat_strip (xchat_plugin *ph, + const char *str, + int len, + int flags); + +void +xchat_free (xchat_plugin *ph, + void *ptr); + +#if !defined(PLUGIN_C) && defined(WIN32) +#ifndef XCHAT_PLUGIN_HANDLE +#define XCHAT_PLUGIN_HANDLE (ph) +#endif +#define xchat_hook_command ((XCHAT_PLUGIN_HANDLE)->xchat_hook_command) +#define xchat_hook_server ((XCHAT_PLUGIN_HANDLE)->xchat_hook_server) +#define xchat_hook_print ((XCHAT_PLUGIN_HANDLE)->xchat_hook_print) +#define xchat_hook_timer ((XCHAT_PLUGIN_HANDLE)->xchat_hook_timer) +#define xchat_hook_fd ((XCHAT_PLUGIN_HANDLE)->xchat_hook_fd) +#define xchat_unhook ((XCHAT_PLUGIN_HANDLE)->xchat_unhook) +#define xchat_print ((XCHAT_PLUGIN_HANDLE)->xchat_print) +#define xchat_printf ((XCHAT_PLUGIN_HANDLE)->xchat_printf) +#define xchat_command ((XCHAT_PLUGIN_HANDLE)->xchat_command) +#define xchat_commandf ((XCHAT_PLUGIN_HANDLE)->xchat_commandf) +#define xchat_nickcmp ((XCHAT_PLUGIN_HANDLE)->xchat_nickcmp) +#define xchat_set_context ((XCHAT_PLUGIN_HANDLE)->xchat_set_context) +#define xchat_find_context ((XCHAT_PLUGIN_HANDLE)->xchat_find_context) +#define xchat_get_context ((XCHAT_PLUGIN_HANDLE)->xchat_get_context) +#define xchat_get_info ((XCHAT_PLUGIN_HANDLE)->xchat_get_info) +#define xchat_get_prefs ((XCHAT_PLUGIN_HANDLE)->xchat_get_prefs) +#define xchat_list_get ((XCHAT_PLUGIN_HANDLE)->xchat_list_get) +#define xchat_list_free ((XCHAT_PLUGIN_HANDLE)->xchat_list_free) +#define xchat_list_fields ((XCHAT_PLUGIN_HANDLE)->xchat_list_fields) +#define xchat_list_str ((XCHAT_PLUGIN_HANDLE)->xchat_list_str) +#define xchat_list_int ((XCHAT_PLUGIN_HANDLE)->xchat_list_int) +#define xchat_list_time ((XCHAT_PLUGIN_HANDLE)->xchat_list_time) +#define xchat_list_next ((XCHAT_PLUGIN_HANDLE)->xchat_list_next) +#define xchat_plugingui_add ((XCHAT_PLUGIN_HANDLE)->xchat_plugingui_add) +#define xchat_plugingui_remove ((XCHAT_PLUGIN_HANDLE)->xchat_plugingui_remove) +#define xchat_emit_print ((XCHAT_PLUGIN_HANDLE)->xchat_emit_print) +#define xchat_gettext ((XCHAT_PLUGIN_HANDLE)->xchat_gettext) +#define xchat_send_modes ((XCHAT_PLUGIN_HANDLE)->xchat_send_modes) +#define xchat_strip ((XCHAT_PLUGIN_HANDLE)->xchat_strip) +#define xchat_free ((XCHAT_PLUGIN_HANDLE)->xchat_free) +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/etc/wyatt8740/src/common/xchat.c b/etc/wyatt8740/src/common/xchat.c new file mode 100644 index 0000000..6f28ba0 --- /dev/null +++ b/etc/wyatt8740/src/common/xchat.c @@ -0,0 +1,938 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <time.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <unistd.h> + +#define WANTSOCKET +#include "inet.h" + +#ifndef WIN32 +#include <sys/wait.h> +#include <signal.h> +#endif + +#include "xchat.h" +#include "fe.h" +#include "util.h" +#include "cfgfiles.h" +#include "chanopt.h" +#include "ignore.h" +#include "xchat-plugin.h" +#include "plugin.h" +#include "plugin-timer.h" +#include "notify.h" +#include "server.h" +#include "servlist.h" +#include "outbound.h" +#include "text.h" +#include "url.h" +#include "xchatc.h" + +#ifdef USE_OPENSSL +#include <openssl/ssl.h> /* SSL_() */ +#include "ssl.h" +#endif + +#ifdef USE_MSPROXY +#include "msproxy.h" +#endif + +GSList *popup_list = 0; +GSList *button_list = 0; +GSList *dlgbutton_list = 0; +GSList *command_list = 0; +GSList *ctcp_list = 0; +GSList *replace_list = 0; +GSList *sess_list = 0; +GSList *dcc_list = 0; +GSList *ignore_list = 0; +GSList *usermenu_list = 0; +GSList *urlhandler_list = 0; +GSList *tabmenu_list = 0; + +static int in_xchat_exit = FALSE; +int xchat_is_quitting = FALSE; +/* command-line args */ +int arg_dont_autoconnect = FALSE; +int arg_skip_plugins = FALSE; +char *arg_url = NULL; +char *arg_command = NULL; +gint arg_existing = FALSE; + +#ifdef USE_DBUS +#include "dbus/dbus-client.h" +#include "dbus/dbus-plugin.h" +#endif /* USE_DBUS */ + +struct session *current_tab; +struct session *current_sess = 0; +struct xchatprefs prefs; + +#ifdef USE_OPENSSL +SSL_CTX *ctx = NULL; +#endif + + +int +is_session (session * sess) +{ + return g_slist_find (sess_list, sess) ? 1 : 0; +} + +session * +find_dialog (server *serv, char *nick) +{ + GSList *list = sess_list; + session *sess; + + while (list) + { + sess = list->data; + if (sess->server == serv && sess->type == SESS_DIALOG) + { + if (!serv->p_cmp (nick, sess->channel)) + return (sess); + } + list = list->next; + } + return 0; +} + +session * +find_channel (server *serv, char *chan) +{ + session *sess; + GSList *list = sess_list; + while (list) + { + sess = list->data; + if ((!serv || serv == sess->server) && sess->type != SESS_DIALOG) + { + if (!serv->p_cmp (chan, sess->channel)) + return sess; + } + list = list->next; + } + return 0; +} + +static void +lagcheck_update (void) +{ + server *serv; + GSList *list = serv_list; + + if (!prefs.lagometer) + return; + + while (list) + { + serv = list->data; + if (serv->lag_sent) + fe_set_lag (serv, -1); + + list = list->next; + } +} + +void +lag_check (void) +{ + server *serv; + GSList *list = serv_list; + unsigned long tim; + char tbuf[128]; + time_t now = time (0); + int lag; + + tim = make_ping_time (); + + while (list) + { + serv = list->data; + if (serv->connected && serv->end_of_motd) + { + lag = now - serv->ping_recv; + if (prefs.pingtimeout && lag > prefs.pingtimeout && lag > 0) + { + sprintf (tbuf, "%d", lag); + EMIT_SIGNAL (XP_TE_PINGTIMEOUT, serv->server_session, tbuf, NULL, + NULL, NULL, 0); + if (prefs.autoreconnect) + serv->auto_reconnect (serv, FALSE, -1); + } else + { + snprintf (tbuf, sizeof (tbuf), "LAG%lu", tim); + serv->p_ping (serv, "", tbuf); + serv->lag_sent = tim; + fe_set_lag (serv, -1); + } + } + list = list->next; + } +} + +static int +away_check (void) +{ + session *sess; + GSList *list; + int full, sent, loop = 0; + + if (!prefs.away_track || prefs.away_size_max < 1) + return 1; + +doover: + /* request an update of AWAY status of 1 channel every 30 seconds */ + full = TRUE; + sent = 0; /* number of WHOs (users) requested */ + list = sess_list; + while (list) + { + sess = list->data; + + if (sess->server->connected && + sess->type == SESS_CHANNEL && + sess->channel[0] && + sess->total <= prefs.away_size_max) + { + if (!sess->done_away_check) + { + full = FALSE; + + /* if we're under 31 WHOs, send another channels worth */ + if (sent < 31 && !sess->doing_who) + { + sess->done_away_check = TRUE; + sess->doing_who = TRUE; + /* this'll send a WHO #channel */ + sess->server->p_away_status (sess->server, sess->channel); + sent += sess->total; + } + } + } + + list = list->next; + } + + /* done them all, reset done_away_check to FALSE and start over */ + if (full) + { + list = sess_list; + while (list) + { + sess = list->data; + sess->done_away_check = FALSE; + list = list->next; + } + loop++; + if (loop < 2) + goto doover; + } + + return 1; +} + +static int +xchat_misc_checks (void) /* this gets called every 1/2 second */ +{ + static int count = 0; +#ifdef USE_MSPROXY + static int count2 = 0; +#endif + + count++; + + lagcheck_update (); /* every 500ms */ + + if (count % 2) + dcc_check_timeouts (); /* every 1 second */ + + if (count >= 60) /* every 30 seconds */ + { + if (prefs.lagometer) + lag_check (); + count = 0; + } + +#ifdef USE_MSPROXY + count2++; + if (count2 >= 720) /* 720 every 6 minutes */ + { + msproxy_keepalive (); + count2 = 0; + } +#endif + + return 1; +} + +/* executed when the first irc window opens */ + +static void +irc_init (session *sess) +{ + static int done_init = FALSE; + char buf[512]; + + if (done_init) + return; + + done_init = TRUE; + + plugin_add (sess, NULL, NULL, timer_plugin_init, NULL, NULL, FALSE); + +#ifdef USE_PLUGIN + if (!arg_skip_plugins) + plugin_auto_load (sess); /* autoload ~/.xchat *.so */ +#endif + +#ifdef USE_DBUS + plugin_add (sess, NULL, NULL, dbus_plugin_init, NULL, NULL, FALSE); +#endif + + if (prefs.notify_timeout) + notify_tag = fe_timeout_add (prefs.notify_timeout * 1000, + notify_checklist, 0); + + fe_timeout_add (prefs.away_timeout * 1000, away_check, 0); + fe_timeout_add (500, xchat_misc_checks, 0); + + if (arg_url != NULL) + { + snprintf (buf, sizeof (buf), "server %s", arg_url); + handle_command (sess, buf, FALSE); + g_free (arg_url); /* from GOption */ + } + + if (arg_command != NULL) + { + g_free (arg_command); + } + + /* load -e ~/.xchat2/startup.txt */ + snprintf (buf, sizeof (buf), "%s/%s", get_xdir_fs (), "startup.txt"); + load_perform_file (sess, buf); +} + +static session * +session_new (server *serv, char *from, int type, int focus) +{ + session *sess; + + sess = malloc (sizeof (struct session)); + if(sess == NULL) + return NULL; + memset (sess, 0, sizeof (struct session)); + + sess->server = serv; + sess->logfd = -1; + sess->scrollfd = -1; + sess->type = type; + + sess->alert_beep = SET_DEFAULT; + sess->alert_taskbar = SET_DEFAULT; + sess->alert_tray = SET_DEFAULT; + + sess->text_hidejoinpart = SET_DEFAULT; + sess->text_logging = SET_DEFAULT; + sess->text_scrollback = SET_DEFAULT; + + if (from != NULL) + safe_strcpy (sess->channel, from, CHANLEN); + + sess_list = g_slist_prepend (sess_list, sess); + + fe_new_window (sess, focus); + + return sess; +} + +session * +new_ircwindow (server *serv, char *name, int type, int focus) +{ + session *sess; + + switch (type) + { + case SESS_SERVER: + serv = server_new (); + if (prefs.use_server_tab) + sess = session_new (serv, name, SESS_SERVER, focus); + else + sess = session_new (serv, name, SESS_CHANNEL, focus); + serv->server_session = sess; + serv->front_session = sess; + break; + case SESS_DIALOG: + sess = session_new (serv, name, type, focus); + log_open_or_close (sess); + break; + default: +/* case SESS_CHANNEL: + case SESS_NOTICES: + case SESS_SNOTICES:*/ + sess = session_new (serv, name, type, focus); + break; + } + + irc_init (sess); + scrollback_load (sess); + chanopt_load (sess); + plugin_emit_dummy_print (sess, "Open Context"); + + return sess; +} + +static void +exec_notify_kill (session * sess) +{ +#ifndef WIN32 + struct nbexec *re; + if (sess->running_exec != NULL) + { + re = sess->running_exec; + sess->running_exec = NULL; + kill (re->childpid, SIGKILL); + waitpid (re->childpid, NULL, WNOHANG); + fe_input_remove (re->iotag); + close (re->myfd); + if (re->linebuf) + free(re->linebuf); + free (re); + } +#endif +} + +static void +send_quit_or_part (session * killsess) +{ + int willquit = TRUE; + GSList *list; + session *sess; + server *killserv = killsess->server; + + /* check if this is the last session using this server */ + list = sess_list; + while (list) + { + sess = (session *) list->data; + if (sess->server == killserv && sess != killsess) + { + willquit = FALSE; + list = 0; + } else + list = list->next; + } + + if (xchat_is_quitting) + willquit = TRUE; + + if (killserv->connected) + { + if (willquit) + { + if (!killserv->sent_quit) + { + killserv->flush_queue (killserv); + server_sendquit (killsess); + killserv->sent_quit = TRUE; + } + } else + { + if (killsess->type == SESS_CHANNEL && killsess->channel[0] && + !killserv->sent_quit) + { + server_sendpart (killserv, killsess->channel, 0); + } + } + } +} + +void +session_free (session *killsess) +{ + server *killserv = killsess->server; + session *sess; + GSList *list; + + plugin_emit_dummy_print (killsess, "Close Context"); + + if (current_tab == killsess) + current_tab = NULL; + + if (killserv->server_session == killsess) + killserv->server_session = NULL; + + if (killserv->front_session == killsess) + { + /* front_session is closed, find a valid replacement */ + killserv->front_session = NULL; + list = sess_list; + while (list) + { + sess = (session *) list->data; + if (sess != killsess && sess->server == killserv) + { + killserv->front_session = sess; + if (!killserv->server_session) + killserv->server_session = sess; + break; + } + list = list->next; + } + } + + if (!killserv->server_session) + killserv->server_session = killserv->front_session; + + sess_list = g_slist_remove (sess_list, killsess); + + if (killsess->type == SESS_CHANNEL) + userlist_free (killsess); + + exec_notify_kill (killsess); + + log_close (killsess); + scrollback_close (killsess); + chanopt_save (killsess); + + send_quit_or_part (killsess); + + history_free (&killsess->history); + if (killsess->topic) + free (killsess->topic); + if (killsess->current_modes) + free (killsess->current_modes); + + fe_session_callback (killsess); + + if (current_sess == killsess) + { + current_sess = NULL; + if (sess_list) + current_sess = sess_list->data; + } + + free (killsess); + + if (!sess_list && !in_xchat_exit) + xchat_exit (); /* sess_list is empty, quit! */ + + list = sess_list; + while (list) + { + sess = (session *) list->data; + if (sess->server == killserv) + return; /* this server is still being used! */ + list = list->next; + } + + server_free (killserv); +} + +static void +free_sessions (void) +{ + GSList *list = sess_list; + + while (list) + { + fe_close_window (list->data); + list = sess_list; + } +} + + +static char defaultconf_ctcp[] = + "NAME TIME\n" "CMD nctcp %s TIME %t\n\n"\ + "NAME PING\n" "CMD nctcp %s PING %d\n\n"; + +static char defaultconf_replace[] = + "NAME teh\n" "CMD the\n\n"; +/* "NAME r\n" "CMD are\n\n"\ + "NAME u\n" "CMD you\n\n"*/ + +static char defaultconf_commands[] = + "NAME ACTION\n" "CMD me &2\n\n"\ + "NAME AME\n" "CMD allchan me &2\n\n"\ + "NAME ANICK\n" "CMD allserv nick &2\n\n"\ + "NAME AMSG\n" "CMD allchan say &2\n\n"\ + "NAME BANLIST\n" "CMD quote MODE %c +b\n\n"\ + "NAME CHAT\n" "CMD dcc chat %2\n\n"\ + "NAME DIALOG\n" "CMD query %2\n\n"\ + "NAME DMSG\n" "CMD msg =%2 &3\n\n"\ + "NAME EXIT\n" "CMD quit\n\n"\ + "NAME GREP\n" "CMD lastlog -r &2\n\n"\ + "NAME J\n" "CMD join &2\n\n"\ + "NAME KILL\n" "CMD quote KILL %2 :&3\n\n"\ + "NAME LEAVE\n" "CMD part &2\n\n"\ + "NAME M\n" "CMD msg &2\n\n"\ + "NAME ONOTICE\n" "CMD notice @%c &2\n\n"\ + "NAME RAW\n" "CMD quote &2\n\n"\ + "NAME SERVHELP\n" "CMD quote HELP\n\n"\ + "NAME SPING\n" "CMD ping\n\n"\ + "NAME SQUERY\n" "CMD quote SQUERY %2 :&3\n\n"\ + "NAME SSLSERVER\n" "CMD server -ssl &2\n\n"\ + "NAME SV\n" "CMD echo xchat %v %m\n\n"\ + "NAME UMODE\n" "CMD mode %n &2\n\n"\ + "NAME UPTIME\n" "CMD quote STATS u\n\n"\ + "NAME VER\n" "CMD ctcp %2 VERSION\n\n"\ + "NAME VERSION\n" "CMD ctcp %2 VERSION\n\n"\ + "NAME WALLOPS\n" "CMD quote WALLOPS :&2\n\n"\ + "NAME WII\n" "CMD quote WHOIS %2 %2\n\n"; + +static char defaultconf_urlhandlers[] = + "NAME Open Link in Opera\n" "CMD !opera -remote 'openURL(%s)'\n\n"; + +#ifdef USE_SIGACTION +/* Close and open log files on SIGUSR1. Usefull for log rotating */ + +static void +sigusr1_handler (int signal, siginfo_t *si, void *un) +{ + GSList *list = sess_list; + session *sess; + + while (list) + { + sess = list->data; + log_open_or_close (sess); + list = list->next; + } +} + +/* Execute /SIGUSR2 when SIGUSR2 received */ + +static void +sigusr2_handler (int signal, siginfo_t *si, void *un) +{ + session *sess = current_sess; + + if (sess) + handle_command (sess, "SIGUSR2", FALSE); +} +#endif + +static gint +xchat_auto_connect (gpointer userdata) +{ + servlist_auto_connect (NULL); + return 0; +} + +static void +xchat_init (void) +{ + char buf[3068]; + const char *cs = NULL; + +#ifdef WIN32 + WSADATA wsadata; + +#ifdef USE_IPV6 + if (WSAStartup(0x0202, &wsadata) != 0) + { + MessageBox (NULL, "Cannot find winsock 2.2+", "Error", MB_OK); + exit (0); + } +#else + WSAStartup(0x0101, &wsadata); +#endif /* !USE_IPV6 */ +#endif /* !WIN32 */ + +#ifdef USE_SIGACTION + struct sigaction act; + + /* ignore SIGPIPE's */ + act.sa_handler = SIG_IGN; + act.sa_flags = 0; + sigemptyset (&act.sa_mask); + sigaction (SIGPIPE, &act, NULL); + + /* Deal with SIGUSR1's & SIGUSR2's */ + act.sa_sigaction = sigusr1_handler; + act.sa_flags = 0; + sigemptyset (&act.sa_mask); + sigaction (SIGUSR1, &act, NULL); + + act.sa_sigaction = sigusr2_handler; + act.sa_flags = 0; + sigemptyset (&act.sa_mask); + sigaction (SIGUSR2, &act, NULL); +#else +#ifndef WIN32 + /* good enough for these old systems */ + signal (SIGPIPE, SIG_IGN); +#endif +#endif + + if (g_get_charset (&cs)) + prefs.utf8_locale = TRUE; + + load_text_events (); + sound_load (); + notify_load (); + ignore_load (); + + snprintf (buf, sizeof (buf), + "NAME %s~%s~\n" "CMD query %%s\n\n"\ + "NAME %s~%s~\n" "CMD send %%s\n\n"\ + "NAME %s~%s~\n" "CMD whois %%s %%s\n\n"\ + "NAME %s~%s~\n" "CMD notify -n ASK %%s\n\n"\ + + "NAME SUB\n" "CMD %s\n\n"\ + "NAME %s\n" "CMD op %%a\n\n"\ + "NAME %s\n" "CMD deop %%a\n\n"\ + "NAME SEP\n" "CMD \n\n"\ + "NAME %s\n" "CMD voice %%a\n\n"\ + "NAME %s\n" "CMD devoice %%a\n"\ + "NAME SEP\n" "CMD \n\n"\ + "NAME SUB\n" "CMD %s\n\n"\ + "NAME %s\n" "CMD kick %%s\n\n"\ + "NAME %s\n" "CMD ban %%s\n\n"\ + "NAME SEP\n" "CMD \n\n"\ + "NAME %s *!*@*.host\n""CMD ban %%s 0\n\n"\ + "NAME %s *!*@domain\n""CMD ban %%s 1\n\n"\ + "NAME %s *!*user@*.host\n""CMD ban %%s 2\n\n"\ + "NAME %s *!*user@domain\n""CMD ban %%s 3\n\n"\ + "NAME SEP\n" "CMD \n\n"\ + "NAME %s *!*@*.host\n""CMD kickban %%s 0\n\n"\ + "NAME %s *!*@domain\n""CMD kickban %%s 1\n\n"\ + "NAME %s *!*user@*.host\n""CMD kickban %%s 2\n\n"\ + "NAME %s *!*user@domain\n""CMD kickban %%s 3\n\n"\ + "NAME ENDSUB\n" "CMD \n\n"\ + "NAME ENDSUB\n" "CMD \n\n", + + _("_Open Dialog Window"), "xchat-dialog", + _("_Send a File"), "gtk-floppy", + _("_User Info (WhoIs)"), "gtk-info", + _("_Add to Friends List"), "gtk-add", + _("O_perator Actions"), + + _("Give Ops"), + _("Take Ops"), + _("Give Voice"), + _("Take Voice"), + + _("Kick/Ban"), + _("Kick"), + _("Ban"), + _("Ban"), + _("Ban"), + _("Ban"), + _("Ban"), + _("KickBan"), + _("KickBan"), + _("KickBan"), + _("KickBan")); + + list_loadconf ("popup.conf", &popup_list, buf); + + snprintf (buf, sizeof (buf), + "NAME %s\n" "CMD part\n\n" + "NAME %s\n" "CMD getstr # join \"%s\"\n\n" + "NAME %s\n" "CMD quote LINKS\n\n" + "NAME %s\n" "CMD ping\n\n" + "NAME TOGGLE %s\n" "CMD irc_hide_version\n\n", + _("Leave Channel"), + _("Join Channel..."), + _("Enter Channel to Join:"), + _("Server Links"), + _("Ping Server"), + _("Hide Version")); + list_loadconf ("usermenu.conf", &usermenu_list, buf); + + snprintf (buf, sizeof (buf), + "NAME %s\n" "CMD op %%a\n\n" + "NAME %s\n" "CMD deop %%a\n\n" + "NAME %s\n" "CMD ban %%s\n\n" + "NAME %s\n" "CMD getstr \"%s\" \"kick %%s\" \"%s\"\n\n" + "NAME %s\n" "CMD send %%s\n\n" + "NAME %s\n" "CMD query %%s\n\n", + _("Op"), + _("DeOp"), + _("Ban"), + _("Kick"), + _("bye"), + _("Enter reason to kick %s:"), + _("Sendfile"), + _("Dialog")); + list_loadconf ("buttons.conf", &button_list, buf); + + snprintf (buf, sizeof (buf), + "NAME %s\n" "CMD whois %%s %%s\n\n" + "NAME %s\n" "CMD send %%s\n\n" + "NAME %s\n" "CMD dcc chat %%s\n\n" + "NAME %s\n" "CMD clear\n\n" + "NAME %s\n" "CMD ping %%s\n\n", + _("WhoIs"), + _("Send"), + _("Chat"), + _("Clear"), + _("Ping")); + list_loadconf ("dlgbuttons.conf", &dlgbutton_list, buf); + + list_loadconf ("tabmenu.conf", &tabmenu_list, NULL); + list_loadconf ("ctcpreply.conf", &ctcp_list, defaultconf_ctcp); + list_loadconf ("commands.conf", &command_list, defaultconf_commands); + list_loadconf ("replace.conf", &replace_list, defaultconf_replace); + list_loadconf ("urlhandlers.conf", &urlhandler_list, + defaultconf_urlhandlers); + + servlist_init (); /* load server list */ + + /* if we got a URL, don't open the server list GUI */ + if (!prefs.slist_skip && !arg_url) + fe_serverlist_open (NULL); + + /* turned OFF via -a arg */ + if (!arg_dont_autoconnect) + { + /* do any auto connects */ + if (!servlist_have_auto ()) /* if no new windows open .. */ + { + /* and no serverlist gui ... */ + if (prefs.slist_skip || arg_url) + /* we'll have to open one. */ + new_ircwindow (NULL, NULL, SESS_SERVER, 0); + } else + { + fe_idle_add (xchat_auto_connect, NULL); + } + } else + { + if (prefs.slist_skip || arg_url) + new_ircwindow (NULL, NULL, SESS_SERVER, 0); + } +} + +void +xchat_exit (void) +{ + xchat_is_quitting = TRUE; + in_xchat_exit = TRUE; + plugin_kill_all (); + fe_cleanup (); + if (prefs.autosave) + { + save_config (); + if (prefs.save_pevents) + pevent_save (NULL); + } + if (prefs.autosave_url) + url_autosave (); + sound_save (); + notify_save (); + ignore_save (); + free_sessions (); + chanopt_save_all (); + servlist_cleanup (); + fe_exit (); +} + +#ifndef WIN32 + +static int +child_handler (gpointer userdata) +{ + int pid = GPOINTER_TO_INT (userdata); + + if (waitpid (pid, 0, WNOHANG) == pid) + return 0; /* remove timeout handler */ + return 1; /* keep the timeout handler */ +} + +#endif + +void +xchat_exec (const char *cmd) +{ +#ifdef WIN32 + util_exec (cmd); +#else + int pid = util_exec (cmd); + if (pid != -1) + /* zombie avoiding system. Don't ask! it has to be like this to work + with zvt (which overrides the default handler) */ + fe_timeout_add (1000, child_handler, GINT_TO_POINTER (pid)); +#endif +} + +void +xchat_execv (char * const argv[]) +{ +#ifdef WIN32 + util_execv (argv); +#else + int pid = util_execv (argv); + if (pid != -1) + /* zombie avoiding system. Don't ask! it has to be like this to work + with zvt (which overrides the default handler) */ + fe_timeout_add (1000, child_handler, GINT_TO_POINTER (pid)); +#endif +} + +int +main (int argc, char *argv[]) +{ + int ret; + + srand (time (0)); /* CL: do this only once! */ + +#ifdef SOCKS + SOCKSinit (argv[0]); +#endif + + ret = fe_args (argc, argv); + if (ret != -1) + return ret; + +#ifdef USE_DBUS + xchat_remote (); +#endif + + load_config (); + + fe_init (); + + xchat_init (); + + fe_main (); + +#ifdef USE_OPENSSL + if (ctx) + _SSL_context_free (ctx); +#endif + +#ifdef USE_DEBUG + xchat_mem_list (); +#endif + +#ifdef WIN32 + WSACleanup (); +#endif + + return 0; +} diff --git a/etc/wyatt8740/src/common/xchat.h b/etc/wyatt8740/src/common/xchat.h new file mode 100644 index 0000000..93af379 --- /dev/null +++ b/etc/wyatt8740/src/common/xchat.h @@ -0,0 +1,570 @@ +#include "../../config.h" + +#include <glib.h> +#include <time.h> /* need time_t */ + +#ifndef XCHAT_H +#define XCHAT_H + +#include "history.h" + +#ifndef HAVE_SNPRINTF +#define snprintf g_snprintf +#endif + +#ifndef HAVE_VSNPRINTF +#define vsnprintf g_vsnprintf +#endif + +#ifdef USE_DEBUG +#define malloc(n) xchat_malloc(n, __FILE__, __LINE__) +#define realloc(n, m) xchat_realloc(n, m, __FILE__, __LINE__) +#define free(n) xchat_dfree(n, __FILE__, __LINE__) +#define strdup(n) xchat_strdup(n, __FILE__, __LINE__) +void *xchat_malloc (int size, char *file, int line); +void *xchat_strdup (char *str, char *file, int line); +void xchat_dfree (void *buf, char *file, int line); +void *xchat_realloc (char *old, int len, char *file, int line); +#endif + +#ifdef SOCKS +#ifdef __sgi +#include <sys/time.h> +#define INCLUDE_PROTOTYPES 1 +#endif +#include <socks.h> +#endif + +#ifdef USE_OPENSSL +#include <openssl/ssl.h> /* SSL_() */ +#endif + +#ifdef __EMX__ /* for o/s 2 */ +#define OFLAGS O_BINARY +#define strcasecmp stricmp +#define strncasecmp strnicmp +#define PATH_MAX MAXPATHLEN +#define FILEPATH_LEN_MAX MAXPATHLEN +#endif + +/* force a 32bit CMP.L */ +#define CMPL(a, c0, c1, c2, c3) (a == (guint32)(c0 | (c1 << 8) | (c2 << 16) | (c3 << 24))) +#define WORDL(c0, c1, c2, c3) (guint32)(c0 | (c1 << 8) | (c2 << 16) | (c3 << 24)) +#define WORDW(c0, c1) (guint16)(c0 | (c1 << 8)) + +#ifdef WIN32 /* for win32 */ +#define OFLAGS O_BINARY +#define sleep(t) _sleep(t*1000) +#include <direct.h> +#define F_OK 0 +#define X_OK 1 +#define W_OK 2 +#define R_OK 4 +#ifndef S_ISDIR +#define S_ISDIR(m) ((m) & _S_IFDIR) +#endif +#define NETWORK_PRIVATE +#else /* for unix */ +#define OFLAGS 0 +#endif + +#define FONTNAMELEN 127 +#define PATHLEN 255 +#define DOMAINLEN 100 +#define NICKLEN 64 /* including the NULL, so 63 really */ +#define CHANLEN 300 +#define PDIWORDS 32 +#define USERNAMELEN 10 +#define HIDDEN_CHAR 8 /* invisible character for xtext */ + +#if defined(ENABLE_NLS) && !defined(_) +# include <libintl.h> +# define _(x) gettext(x) +# ifdef gettext_noop +# define N_(String) gettext_noop (String) +# else +# define N_(String) (String) +# endif +#endif +#if !defined(_) +# define N_(String) (String) +# define _(x) (x) +#endif + +struct nbexec +{ + int myfd; + int childpid; + int tochannel; /* making this int keeps the struct 4-byte aligned */ + int iotag; + char *linebuf; + int buffill; + struct session *sess; +}; + +struct xchatprefs +{ + char nick1[NICKLEN]; + char nick2[NICKLEN]; + char nick3[NICKLEN]; + char realname[127]; + char username[127]; + char nick_suffix[4]; /* Only ever holds a one-character string. */ + char awayreason[256]; + char quitreason[256]; + char partreason[256]; + char font_normal[FONTNAMELEN + 1]; + char doubleclickuser[256]; + char sounddir[PATHLEN + 1]; + char soundcmd[PATHLEN + 1]; + char background[PATHLEN + 1]; + char dccdir[PATHLEN + 1]; + char dcc_completed_dir[PATHLEN + 1]; + char irc_extra_hilight[300]; + char irc_no_hilight[300]; + char irc_nick_hilight[300]; + char dnsprogram[72]; + char hostname[127]; + char cmdchar[4]; + char logmask[256]; + char stamp_format[64]; + char timestamp_log_format[64]; + char irc_id_ytext[64]; + char irc_id_ntext[64]; + + char proxy_host[64]; + int proxy_port; + int proxy_type; /* 0=disabled, 1=wingate 2=socks4, 3=socks5, 4=http */ + int proxy_use; /* 0=all 1=IRC_ONLY 2=DCC_ONLY */ + unsigned int proxy_auth; + char proxy_user[32]; + char proxy_pass[32]; + + int first_dcc_send_port; + int last_dcc_send_port; + + int tint_red; + int tint_green; + int tint_blue; + + int away_timeout; + int away_size_max; + + int gui_pane_left_size; + int gui_pane_right_size; + + int gui_ulist_pos; + int tab_pos; + + int _tabs_position; + int tab_layout; + int max_auto_indent; + int dcc_blocksize; + int max_lines; + int notify_timeout; + int dcctimeout; + int dccstalltimeout; + int dcc_global_max_get_cps; + int dcc_global_max_send_cps; + int dcc_max_get_cps; + int dcc_max_send_cps; + int mainwindow_left; + int mainwindow_top; + int mainwindow_width; + int mainwindow_height; + int completion_sort; + int gui_win_state; + int gui_url_mod; + int gui_usermenu; + int gui_join_dialog; + int gui_quit_dialog; + int dialog_left; + int dialog_top; + int dialog_width; + int dialog_height; + int dccpermissions; + int recon_delay; + int bantype; + int userlist_sort; + guint32 local_ip; + guint32 dcc_ip; + char dcc_ip_str[DOMAINLEN + 1]; + + unsigned int tab_small; + unsigned int tab_sort; + unsigned int mainwindow_save; + unsigned int perc_color; + unsigned int perc_ascii; + unsigned int autosave; + unsigned int autodialog; + unsigned int autosave_url; + unsigned int autoreconnect; + unsigned int autoreconnectonfail; + unsigned int invisible; + unsigned int servernotice; + unsigned int wallops; + unsigned int skipmotd; + unsigned int autorejoin; + unsigned int colorednicks; + unsigned int chanmodebuttons; + unsigned int userlistbuttons; + unsigned int showhostname_in_userlist; + unsigned int nickcompletion; + unsigned int completion_cinsens; + unsigned int completion_amount; + unsigned int tabchannels; + unsigned int paned_userlist; + unsigned int autodccchat; + unsigned int autodccsend; + unsigned int autoresume; + unsigned int autoopendccsendwindow; + unsigned int autoopendccrecvwindow; + unsigned int autoopendccchatwindow; + unsigned int transparent; + unsigned int stripcolor; + unsigned int timestamp; + unsigned int fastdccsend; + unsigned int dcc_send_fillspaces; + unsigned int dcc_remove; + unsigned int slist_skip; + unsigned int slist_select; + unsigned int filterbeep; + + unsigned int input_balloon_chans; + unsigned int input_balloon_hilight; + unsigned int input_balloon_priv; + unsigned int input_balloon_time; + + unsigned int input_beep_chans; + unsigned int input_beep_hilight; + unsigned int input_beep_priv; + + unsigned int input_flash_chans; + unsigned int input_flash_hilight; + unsigned int input_flash_priv; + + unsigned int input_tray_chans; + unsigned int input_tray_hilight; + unsigned int input_tray_priv; + + unsigned int truncchans; + unsigned int privmsgtab; + unsigned int irc_join_delay; + unsigned int logging; + unsigned int timestamp_logs; + unsigned int newtabstofront; + unsigned int dccwithnick; + unsigned int hidever; + unsigned int ip_from_server; + unsigned int raw_modes; + unsigned int show_away_once; + unsigned int show_away_message; + unsigned int auto_unmark_away; + unsigned int away_track; + unsigned int userhost; + unsigned int irc_whois_front; + unsigned int use_server_tab; + unsigned int notices_tabs; + unsigned int style_namelistgad; + unsigned int style_inputbox; + unsigned int windows_as_tabs; + unsigned int indent_nicks; + unsigned int text_replay; + unsigned int show_marker; + unsigned int show_separator; + unsigned int thin_separator; + unsigned int auto_indent; + unsigned int wordwrap; + unsigned int gui_input_spell; + unsigned int gui_tray; + unsigned int gui_tray_flags; + unsigned int gui_tweaks; + unsigned int _gui_ulist_left; + unsigned int throttle; + unsigned int topicbar; + unsigned int hideuserlist; + unsigned int hidemenu; + unsigned int perlwarnings; + unsigned int lagometer; + unsigned int throttlemeter; + unsigned int pingtimeout; + unsigned int whois_on_notifyonline; + unsigned int wait_on_exit; + unsigned int confmode; + unsigned int utf8_locale; + unsigned int identd; + + unsigned int ctcp_number_limit; /*flood */ + unsigned int ctcp_time_limit; /*seconds of floods */ + + unsigned int msg_number_limit; /*same deal */ + unsigned int msg_time_limit; + + /* Tells us if we need to save, only when they've been edited. + This is so that we continue using internal defaults (which can + change in the next release) until the user edits them. */ + unsigned int save_pevents:1; +}; + +/* Session types */ +#define SESS_SERVER 1 +#define SESS_CHANNEL 2 +#define SESS_DIALOG 3 +#define SESS_NOTICES 4 +#define SESS_SNOTICES 5 + +/* Per-Channel Settings */ +#define SET_OFF 0 +#define SET_ON 1 +#define SET_DEFAULT 2 /* use global setting */ + +typedef struct session +{ + /* Per-Channel Alerts */ + /* use a byte, because we need a pointer to each element */ + guint8 alert_beep; + guint8 alert_taskbar; + guint8 alert_tray; + + /* Per-Channel Settings */ + guint8 text_hidejoinpart; + guint8 text_logging; + guint8 text_scrollback; + + struct server *server; + void *usertree_alpha; /* pure alphabetical tree */ + void *usertree; /* ordered with Ops first */ + struct User *me; /* points to myself in the usertree */ + char channel[CHANLEN]; + char waitchannel[CHANLEN]; /* waiting to join channel (/join sent) */ + char willjoinchannel[CHANLEN]; /* will issue /join for this channel */ + char channelkey[64]; /* XXX correct max length? */ + int limit; /* channel user limit */ + int logfd; + int scrollfd; /* scrollback filedes */ + int scrollwritten; /* number of lines written */ + + char lastnick[NICKLEN]; /* last nick you /msg'ed */ + + struct history history; + + int ops; /* num. of ops in channel */ + int hops; /* num. of half-oped users */ + int voices; /* num. of voiced people */ + int total; /* num. of users in channel */ + + char *quitreason; + char *topic; + char *current_modes; /* free() me */ + + int mode_timeout_tag; + + struct session *lastlog_sess; + struct nbexec *running_exec; + + struct session_gui *gui; /* initialized by fe_new_window */ + struct restore_gui *res; + + int type; /* SESS_* */ + + int new_data:1; /* new data avail? (purple tab) */ + int nick_said:1; /* your nick mentioned? (blue tab) */ + int msg_said:1; /* new msg available? (red tab) */ + + int ignore_date:1; + int ignore_mode:1; + int ignore_names:1; + int end_of_names:1; + int doing_who:1; /* /who sent on this channel */ + int done_away_check:1; /* done checking for away status changes */ + unsigned int lastlog_regexp:1; /* this is a lastlog and using regexp */ +} session; + +struct msproxy_state_t +{ + gint32 clientid; + gint32 serverid; + unsigned char seq_recv; /* seq number of last packet recv. */ + unsigned char seq_sent; /* seq number of last packet sent. */ +}; + +typedef struct server +{ + /* server control operations (in server*.c) */ + void (*connect)(struct server *, char *hostname, int port, int no_login); + void (*disconnect)(struct session *, int sendquit, int err); + int (*cleanup)(struct server *); + void (*flush_queue)(struct server *); + void (*auto_reconnect)(struct server *, int send_quit, int err); + /* irc protocol functions (in proto*.c) */ + void (*p_inline)(struct server *, char *buf, int len); + void (*p_invite)(struct server *, char *channel, char *nick); + void (*p_cycle)(struct server *, char *channel, char *key); + void (*p_ctcp)(struct server *, char *to, char *msg); + void (*p_nctcp)(struct server *, char *to, char *msg); + void (*p_quit)(struct server *, char *reason); + void (*p_kick)(struct server *, char *channel, char *nick, char *reason); + void (*p_part)(struct server *, char *channel, char *reason); + void (*p_ns_identify)(struct server *, char *pass); + void (*p_ns_ghost)(struct server *, char *usname, char *pass); + void (*p_join)(struct server *, char *channel, char *key); + void (*p_join_list)(struct server *, GSList *channels, GSList *keys); + void (*p_login)(struct server *, char *user, char *realname); + void (*p_join_info)(struct server *, char *channel); + void (*p_mode)(struct server *, char *target, char *mode); + void (*p_user_list)(struct server *, char *channel); + void (*p_away_status)(struct server *, char *channel); + void (*p_whois)(struct server *, char *nicks); + void (*p_get_ip)(struct server *, char *nick); + void (*p_get_ip_uh)(struct server *, char *nick); + void (*p_set_back)(struct server *); + void (*p_set_away)(struct server *, char *reason); + void (*p_message)(struct server *, char *channel, char *text); + void (*p_action)(struct server *, char *channel, char *act); + void (*p_notice)(struct server *, char *channel, char *text); + void (*p_topic)(struct server *, char *channel, char *topic); + void (*p_list_channels)(struct server *, char *arg, int min_users); + void (*p_change_nick)(struct server *, char *new_nick); + void (*p_names)(struct server *, char *channel); + void (*p_ping)(struct server *, char *to, char *timestring); +/* void (*p_set_away)(struct server *);*/ + int (*p_raw)(struct server *, char *raw); + int (*p_cmp)(const char *s1, const char *s2); + + int port; + int sok; /* is equal to sok4 or sok6 (the one we are using) */ + int sok4; /* tcp4 socket */ + int sok6; /* tcp6 socket */ + int proxy_sok; /* Additional information for MS Proxy beast */ + int proxy_sok4; + int proxy_sok6; + struct msproxy_state_t msp_state; + int id; /* unique ID number (for plugin API) */ +#ifdef USE_OPENSSL + SSL *ssl; + int ssl_do_connect_tag; +#else + void *ssl; +#endif + int childread; + int childwrite; + int childpid; + int iotag; + int recondelay_tag; /* reconnect delay timeout */ + int joindelay_tag; /* waiting before we send JOIN */ + char hostname[128]; /* real ip number */ + char servername[128]; /* what the server says is its name */ + char password[86]; + char nick[NICKLEN]; + char linebuf[2048]; /* RFC says 512 chars including \r\n */ + char *last_away_reason; + int pos; /* current position in linebuf */ + int nickcount; + int nickservtype; /* 0=/MSG nickserv 1=/NICKSERV 2=/NS */ + + char *chantypes; /* for 005 numeric - free me */ + char *chanmodes; /* for 005 numeric - free me */ + char *nick_prefixes; /* e.g. "*@%+" */ + char *nick_modes; /* e.g. "aohv" */ + char *bad_nick_prefixes; /* for ircd that doesn't give the modes */ + int modes_per_line; /* 6 on undernet, 4 on efnet etc... */ + + void *network; /* points to entry in servlist.c or NULL! */ + + GSList *outbound_queue; + time_t next_send; /* cptr->since in ircu */ + time_t prev_now; /* previous now-time */ + int sendq_len; /* queue size */ + int lag; /* milliseconds */ + + struct session *front_session; /* front-most window/tab */ + struct session *server_session; /* server window/tab */ + + struct server_gui *gui; /* initialized by fe_new_server */ + + unsigned int ctcp_counter; /*flood */ + time_t ctcp_last_time; + + unsigned int msg_counter; /*counts the msg tab opened in a certain time */ + time_t msg_last_time; + + /*time_t connect_time;*/ /* when did it connect? */ + time_t lag_sent; + time_t ping_recv; /* when we last got a ping reply */ + time_t away_time; /* when we were marked away */ + + char *encoding; /* NULL for system */ + char *autojoin; /* list of channels & keys to join */ + + unsigned int motd_skipped:1; + unsigned int connected:1; + unsigned int connecting:1; + unsigned int no_login:1; + unsigned int skip_next_userhost:1;/* used for "get my ip from server" */ + unsigned int skip_next_whois:1; /* hide whois output */ + unsigned int inside_whois:1; + unsigned int doing_dns:1; /* /dns has been done */ + unsigned int end_of_motd:1; /* end of motd reached (logged in) */ + unsigned int sent_quit:1; /* sent a QUIT already? */ + unsigned int use_listargs:1; /* undernet and dalnet need /list >0,<10000 */ + unsigned int is_away:1; + unsigned int reconnect_away:1; /* whether to reconnect in is_away state */ + unsigned int dont_use_proxy:1; /* to proxy or not to proxy */ + unsigned int supports_watch:1; /* supports the WATCH command */ + unsigned int bad_prefix:1; /* gave us a bad PREFIX= 005 number */ + unsigned int have_namesx:1; /* 005 tokens NAMESX and UHNAMES */ + unsigned int have_uhnames:1; + unsigned int have_whox:1; /* have undernet's WHOX features */ + unsigned int have_capab:1; /* supports CAPAB (005 tells us) */ + unsigned int have_idmsg:1; /* freenode's IDENTIFY-MSG */ + unsigned int have_except:1; /* ban exemptions +e */ + unsigned int using_cp1255:1; /* encoding is CP1255/WINDOWS-1255? */ + unsigned int using_irc:1; /* encoding is "IRC" (CP1252/UTF-8 hybrid)? */ + unsigned int use_who:1; /* whether to use WHO command to get dcc_ip */ +#ifdef USE_OPENSSL + unsigned int use_ssl:1; /* is server SSL capable? */ + unsigned int accept_invalid_cert:1;/* ignore result of server's cert. verify */ +#endif +} server; + +typedef int (*cmd_callback) (struct session * sess, char *tbuf, char *word[], + char *word_eol[]); + +struct commands +{ + char *name; + cmd_callback callback; + char needserver; + char needchannel; + gint16 handle_quotes; + char *help; +}; + +struct away_msg +{ + struct server *server; + char nick[NICKLEN]; + char *message; +}; + +/* not just for popups, but used for usercommands, ctcp replies, + userlist buttons etc */ + +struct popup +{ + char *cmd; + char *name; +}; + +/* CL: get a random int in the range [0..n-1]. DON'T use rand() % n, it gives terrible results. */ +#define RAND_INT(n) ((int)(rand() / (RAND_MAX + 1.0) * (n))) + +#if defined(WIN32) && GLIB_CHECK_VERSION(2,4,0) +#define xchat_filename_from_utf8 g_locale_from_utf8 +#define xchat_filename_to_utf8 g_locale_to_utf8 +#else +#define xchat_filename_from_utf8 g_filename_from_utf8 +#define xchat_filename_to_utf8 g_filename_to_utf8 +#endif + +#endif diff --git a/etc/wyatt8740/src/common/xchatc.h b/etc/wyatt8740/src/common/xchatc.h new file mode 100644 index 0000000..c22e17d --- /dev/null +++ b/etc/wyatt8740/src/common/xchatc.h @@ -0,0 +1,39 @@ +#ifndef XCHAT_C_H +#define XCHAT_C_H + +extern struct xchatprefs prefs; + +extern int xchat_is_quitting; +extern gint arg_skip_plugins; /* command-line args */ +extern gint arg_dont_autoconnect; +extern char *arg_url; +extern char *arg_command; +extern gint arg_existing; + +extern session *current_sess; +extern session *current_tab; + +extern GSList *popup_list; +extern GSList *button_list; +extern GSList *dlgbutton_list; +extern GSList *command_list; +extern GSList *ctcp_list; +extern GSList *replace_list; +extern GSList *sess_list; +extern GSList *dcc_list; +extern GSList *ignore_list; +extern GSList *usermenu_list; +extern GSList *urlhandler_list; +extern GSList *tabmenu_list; + +session * find_channel (server *serv, char *chan); +session * find_dialog (server *serv, char *nick); +session * new_ircwindow (server *serv, char *name, int type, int focus); +int is_session (session * sess); +void session_free (session *killsess); +void lag_check (void); +void xchat_exit (void); +void xchat_exec (const char *cmd); +void xchat_execv (char * const argv[]); + +#endif diff --git a/etc/wyatt8740/src/fe-gtk/Makefile.am b/etc/wyatt8740/src/fe-gtk/Makefile.am new file mode 100644 index 0000000..7db3809 --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/Makefile.am @@ -0,0 +1,32 @@ +localedir = $(datadir)/locale + +bin_PROGRAMS = xchat + +INCLUDES = $(GUI_CFLAGS) -DG_DISABLE_CAST_CHECKS -DLOCALEDIR=\"$(localedir)\" + +xchat_LDADD = ../common/libxchatcommon.a $(GUI_LIBS) + +EXTRA_DIST = \ + about.h ascii.h banlist.h chanlist.h chanview.h chanview-tabs.c \ + chanview-tree.c custom-list.h editlist.h fe-gtk.h fkeys.h gtkutil.h joind.h \ + maingui.h menu.h mmx_cmod.S mmx_cmod.h notifygui.h palette.h pixmaps.h \ + plugin-tray.h plugingui.c plugingui.h rawlog.h search.h sexy-spell-entry.h \ + textgui.h urlgrab.h userlistgui.h xtext.h + +if USE_MMX +mmx_cmod_S = mmx_cmod.S +endif + +if DO_PLUGIN +plugingui_c = plugingui.c +endif + +if USE_LIBSEXY +sexy_spell_entry_c = sexy-spell-entry.c +endif + +xchat_SOURCES = about.c ascii.c banlist.c chanlist.c chanview.c custom-list.c \ + dccgui.c editlist.c fe-gtk.c fkeys.c gtkutil.c ignoregui.c joind.c menu.c \ + maingui.c $(mmx_cmod_S) notifygui.c palette.c pixmaps.c plugin-tray.c $(plugingui_c) \ + rawlog.c search.c servlistgui.c setup.c $(sexy_spell_entry_c) textgui.c \ + urlgrab.c userlistgui.c xtext.c diff --git a/etc/wyatt8740/src/fe-gtk/Makefile.in b/etc/wyatt8740/src/fe-gtk/Makefile.in new file mode 100644 index 0000000..9418ce0 --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/Makefile.in @@ -0,0 +1,869 @@ +# Makefile.in generated by automake 1.16.5 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2021 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +bin_PROGRAMS = xchat$(EXEEXT) +subdir = src/fe-gtk +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +PROGRAMS = $(bin_PROGRAMS) +am__xchat_SOURCES_DIST = about.c ascii.c banlist.c chanlist.c \ + chanview.c custom-list.c dccgui.c editlist.c fe-gtk.c fkeys.c \ + gtkutil.c ignoregui.c joind.c menu.c maingui.c mmx_cmod.S \ + notifygui.c palette.c pixmaps.c plugin-tray.c plugingui.c \ + rawlog.c search.c servlistgui.c setup.c sexy-spell-entry.c \ + textgui.c urlgrab.c userlistgui.c xtext.c +@USE_MMX_TRUE@am__objects_1 = mmx_cmod.$(OBJEXT) +@DO_PLUGIN_TRUE@am__objects_2 = plugingui.$(OBJEXT) +@USE_LIBSEXY_TRUE@am__objects_3 = sexy-spell-entry.$(OBJEXT) +am_xchat_OBJECTS = about.$(OBJEXT) ascii.$(OBJEXT) banlist.$(OBJEXT) \ + chanlist.$(OBJEXT) chanview.$(OBJEXT) custom-list.$(OBJEXT) \ + dccgui.$(OBJEXT) editlist.$(OBJEXT) fe-gtk.$(OBJEXT) \ + fkeys.$(OBJEXT) gtkutil.$(OBJEXT) ignoregui.$(OBJEXT) \ + joind.$(OBJEXT) menu.$(OBJEXT) maingui.$(OBJEXT) \ + $(am__objects_1) notifygui.$(OBJEXT) palette.$(OBJEXT) \ + pixmaps.$(OBJEXT) plugin-tray.$(OBJEXT) $(am__objects_2) \ + rawlog.$(OBJEXT) search.$(OBJEXT) servlistgui.$(OBJEXT) \ + setup.$(OBJEXT) $(am__objects_3) textgui.$(OBJEXT) \ + urlgrab.$(OBJEXT) userlistgui.$(OBJEXT) xtext.$(OBJEXT) +xchat_OBJECTS = $(am_xchat_OBJECTS) +am__DEPENDENCIES_1 = +xchat_DEPENDENCIES = ../common/libxchatcommon.a $(am__DEPENDENCIES_1) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = ./$(DEPDIR)/about.Po ./$(DEPDIR)/ascii.Po \ + ./$(DEPDIR)/banlist.Po ./$(DEPDIR)/chanlist.Po \ + ./$(DEPDIR)/chanview.Po ./$(DEPDIR)/custom-list.Po \ + ./$(DEPDIR)/dccgui.Po ./$(DEPDIR)/editlist.Po \ + ./$(DEPDIR)/fe-gtk.Po ./$(DEPDIR)/fkeys.Po \ + ./$(DEPDIR)/gtkutil.Po ./$(DEPDIR)/ignoregui.Po \ + ./$(DEPDIR)/joind.Po ./$(DEPDIR)/maingui.Po \ + ./$(DEPDIR)/menu.Po ./$(DEPDIR)/mmx_cmod.Po \ + ./$(DEPDIR)/notifygui.Po ./$(DEPDIR)/palette.Po \ + ./$(DEPDIR)/pixmaps.Po ./$(DEPDIR)/plugin-tray.Po \ + ./$(DEPDIR)/plugingui.Po ./$(DEPDIR)/rawlog.Po \ + ./$(DEPDIR)/search.Po ./$(DEPDIR)/servlistgui.Po \ + ./$(DEPDIR)/setup.Po ./$(DEPDIR)/sexy-spell-entry.Po \ + ./$(DEPDIR)/textgui.Po ./$(DEPDIR)/urlgrab.Po \ + ./$(DEPDIR)/userlistgui.Po ./$(DEPDIR)/xtext.Po +am__mv = mv -f +CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) +LTCPPASCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CCAS) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CCASFLAGS) $(CCASFLAGS) +AM_V_CPPAS = $(am__v_CPPAS_@AM_V@) +am__v_CPPAS_ = $(am__v_CPPAS_@AM_DEFAULT_V@) +am__v_CPPAS_0 = @echo " CPPAS " $@; +am__v_CPPAS_1 = +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(xchat_SOURCES) +DIST_SOURCES = $(am__xchat_SOURCES_DIST) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COMMON_CFLAGS = @COMMON_CFLAGS@ +COMMON_LIBS = @COMMON_LIBS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DBUS_BINDING_TOOL = @DBUS_BINDING_TOOL@ +DBUS_CFLAGS = @DBUS_CFLAGS@ +DBUS_LIBS = @DBUS_LIBS@ +DBUS_SERVICES_DIR = @DBUS_SERVICES_DIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ETAGS = @ETAGS@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FILECMD = @FILECMD@ +GCONFTOOL = @GCONFTOOL@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLIB_CFLAGS = @GLIB_CFLAGS@ +GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GLIB_LIBS = @GLIB_LIBS@ +GLIB_MKENUMS = @GLIB_MKENUMS@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GOBJECT_QUERY = @GOBJECT_QUERY@ +GREP = @GREP@ +GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ +GTKSPELL_LIBS = @GTKSPELL_LIBS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_LIBS = @GTK_LIBS@ +GUI_CFLAGS = @GUI_CFLAGS@ +GUI_LIBS = @GUI_LIBS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSEXY_CFLAGS = @LIBSEXY_CFLAGS@ +LIBSEXY_LIBS = @LIBSEXY_LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL_CFLAGS = @PERL_CFLAGS@ +PERL_LDFLAGS = @PERL_LDFLAGS@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLUGIN_INCLUDES = @PLUGIN_INCLUDES@ +POSUB = @POSUB@ +PY_CFLAGS = @PY_CFLAGS@ +PY_LIBS = @PY_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TCL_CFLAGS = @TCL_CFLAGS@ +TCL_LIBS = @TCL_LIBS@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gdkpixbufcsourcepath = @gdkpixbufcsourcepath@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = $(datadir)/locale +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +perlpath = @perlpath@ +pkgconfigpath = @pkgconfigpath@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pythonpath = @pythonpath@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sedpath = @sedpath@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +unamepath = @unamepath@ +xchatlibdir = @xchatlibdir@ +INCLUDES = $(GUI_CFLAGS) -DG_DISABLE_CAST_CHECKS -DLOCALEDIR=\"$(localedir)\" +xchat_LDADD = ../common/libxchatcommon.a $(GUI_LIBS) +EXTRA_DIST = \ + about.h ascii.h banlist.h chanlist.h chanview.h chanview-tabs.c \ + chanview-tree.c custom-list.h editlist.h fe-gtk.h fkeys.h gtkutil.h joind.h \ + maingui.h menu.h mmx_cmod.S mmx_cmod.h notifygui.h palette.h pixmaps.h \ + plugin-tray.h plugingui.c plugingui.h rawlog.h search.h sexy-spell-entry.h \ + textgui.h urlgrab.h userlistgui.h xtext.h + +@USE_MMX_TRUE@mmx_cmod_S = mmx_cmod.S +@DO_PLUGIN_TRUE@plugingui_c = plugingui.c +@USE_LIBSEXY_TRUE@sexy_spell_entry_c = sexy-spell-entry.c +xchat_SOURCES = about.c ascii.c banlist.c chanlist.c chanview.c custom-list.c \ + dccgui.c editlist.c fe-gtk.c fkeys.c gtkutil.c ignoregui.c joind.c menu.c \ + maingui.c $(mmx_cmod_S) notifygui.c palette.c pixmaps.c plugin-tray.c $(plugingui_c) \ + rawlog.c search.c servlistgui.c setup.c $(sexy_spell_entry_c) textgui.c \ + urlgrab.c userlistgui.c xtext.c + +all: all-am + +.SUFFIXES: +.SUFFIXES: .S .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/fe-gtk/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/fe-gtk/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +xchat$(EXEEXT): $(xchat_OBJECTS) $(xchat_DEPENDENCIES) $(EXTRA_xchat_DEPENDENCIES) + @rm -f xchat$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(xchat_OBJECTS) $(xchat_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/about.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ascii.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/banlist.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chanlist.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chanview.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/custom-list.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dccgui.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/editlist.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fe-gtk.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fkeys.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtkutil.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ignoregui.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/joind.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/maingui.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/menu.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mmx_cmod.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/notifygui.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/palette.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pixmaps.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin-tray.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugingui.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rawlog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/search.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/servlistgui.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setup.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sexy-spell-entry.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/textgui.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/urlgrab.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/userlistgui.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xtext.Po@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) + +.S.o: +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCCAS_TRUE@ $(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCCAS_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ $< + +.S.obj: +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCCAS_TRUE@ $(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCCAS_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.S.lo: +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCCAS_TRUE@ $(LTCPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCCAS_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(LTCPPASCOMPILE) -c -o $@ $< + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f ./$(DEPDIR)/about.Po + -rm -f ./$(DEPDIR)/ascii.Po + -rm -f ./$(DEPDIR)/banlist.Po + -rm -f ./$(DEPDIR)/chanlist.Po + -rm -f ./$(DEPDIR)/chanview.Po + -rm -f ./$(DEPDIR)/custom-list.Po + -rm -f ./$(DEPDIR)/dccgui.Po + -rm -f ./$(DEPDIR)/editlist.Po + -rm -f ./$(DEPDIR)/fe-gtk.Po + -rm -f ./$(DEPDIR)/fkeys.Po + -rm -f ./$(DEPDIR)/gtkutil.Po + -rm -f ./$(DEPDIR)/ignoregui.Po + -rm -f ./$(DEPDIR)/joind.Po + -rm -f ./$(DEPDIR)/maingui.Po + -rm -f ./$(DEPDIR)/menu.Po + -rm -f ./$(DEPDIR)/mmx_cmod.Po + -rm -f ./$(DEPDIR)/notifygui.Po + -rm -f ./$(DEPDIR)/palette.Po + -rm -f ./$(DEPDIR)/pixmaps.Po + -rm -f ./$(DEPDIR)/plugin-tray.Po + -rm -f ./$(DEPDIR)/plugingui.Po + -rm -f ./$(DEPDIR)/rawlog.Po + -rm -f ./$(DEPDIR)/search.Po + -rm -f ./$(DEPDIR)/servlistgui.Po + -rm -f ./$(DEPDIR)/setup.Po + -rm -f ./$(DEPDIR)/sexy-spell-entry.Po + -rm -f ./$(DEPDIR)/textgui.Po + -rm -f ./$(DEPDIR)/urlgrab.Po + -rm -f ./$(DEPDIR)/userlistgui.Po + -rm -f ./$(DEPDIR)/xtext.Po + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f ./$(DEPDIR)/about.Po + -rm -f ./$(DEPDIR)/ascii.Po + -rm -f ./$(DEPDIR)/banlist.Po + -rm -f ./$(DEPDIR)/chanlist.Po + -rm -f ./$(DEPDIR)/chanview.Po + -rm -f ./$(DEPDIR)/custom-list.Po + -rm -f ./$(DEPDIR)/dccgui.Po + -rm -f ./$(DEPDIR)/editlist.Po + -rm -f ./$(DEPDIR)/fe-gtk.Po + -rm -f ./$(DEPDIR)/fkeys.Po + -rm -f ./$(DEPDIR)/gtkutil.Po + -rm -f ./$(DEPDIR)/ignoregui.Po + -rm -f ./$(DEPDIR)/joind.Po + -rm -f ./$(DEPDIR)/maingui.Po + -rm -f ./$(DEPDIR)/menu.Po + -rm -f ./$(DEPDIR)/mmx_cmod.Po + -rm -f ./$(DEPDIR)/notifygui.Po + -rm -f ./$(DEPDIR)/palette.Po + -rm -f ./$(DEPDIR)/pixmaps.Po + -rm -f ./$(DEPDIR)/plugin-tray.Po + -rm -f ./$(DEPDIR)/plugingui.Po + -rm -f ./$(DEPDIR)/rawlog.Po + -rm -f ./$(DEPDIR)/search.Po + -rm -f ./$(DEPDIR)/servlistgui.Po + -rm -f ./$(DEPDIR)/setup.Po + -rm -f ./$(DEPDIR)/sexy-spell-entry.Po + -rm -f ./$(DEPDIR)/textgui.Po + -rm -f ./$(DEPDIR)/urlgrab.Po + -rm -f ./$(DEPDIR)/userlistgui.Po + -rm -f ./$(DEPDIR)/xtext.Po + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ + clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \ + ctags ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-binPROGRAMS \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-binPROGRAMS + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/etc/wyatt8740/src/fe-gtk/about.c b/etc/wyatt8740/src/fe-gtk/about.c new file mode 100644 index 0000000..60700ae --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/about.c @@ -0,0 +1,161 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "fe-gtk.h" + +#include <gtk/gtkmain.h> +#include <gtk/gtkcontainer.h> +#include <gtk/gtkdialog.h> +#include <gtk/gtkvbox.h> +#include <gtk/gtkhbox.h> +#include <gtk/gtkimage.h> +#include <gtk/gtklabel.h> +#include <gtk/gtkbutton.h> +#include <gtk/gtkstock.h> +#include <gtk/gtkwindow.h> + +#ifdef USE_XLIB +#include <gdk/gdkx.h> +#endif + +#include "../common/xchat.h" +#include "../common/util.h" +#include "palette.h" +#include "pixmaps.h" +#include "gtkutil.h" +#include "about.h" + + +#if 0 /*def USE_GNOME*/ + +void +menu_about (GtkWidget * wid, gpointer sess) +{ + char buf[512]; + const gchar *author[] = { "Peter Zelezny <zed@xchat.org>", 0 }; + + (snprintf) (buf, sizeof (buf), + "An IRC Client for UNIX.\n\n" + "This binary was compiled on "__DATE__"\n" + "Using GTK %d.%d.%d X %d\n" + "Running on %s", + gtk_major_version, gtk_minor_version, gtk_micro_version, +#ifdef USE_XLIB + VendorRelease (GDK_DISPLAY ()), get_cpu_str()); +#else + 666, get_cpu_str()); +#endif + + gtk_widget_show (gnome_about_new ("X-Chat", PACKAGE_VERSION, + "(C) 1998-2005 Peter Zelezny", author, buf, 0)); +} + +#else + +static GtkWidget *about = 0; + +static int +about_close (void) +{ + about = 0; + return 0; +} + +void +menu_about (GtkWidget * wid, gpointer sess) +{ + GtkWidget *vbox, *label, *hbox; + char buf[512]; + const char *locale = NULL; + extern GtkWindow *parent_window; /* maingui.c */ + + if (about) + { + gtk_window_present (GTK_WINDOW (about)); + return; + } + + about = gtk_dialog_new (); + gtk_window_set_position (GTK_WINDOW (about), GTK_WIN_POS_CENTER); + gtk_window_set_resizable (GTK_WINDOW (about), FALSE); + gtk_window_set_title (GTK_WINDOW (about), _("About "DISPLAY_NAME)); + if (parent_window) + gtk_window_set_transient_for (GTK_WINDOW (about), parent_window); + g_signal_connect (G_OBJECT (about), "destroy", + G_CALLBACK (about_close), 0); + + vbox = GTK_DIALOG (about)->vbox; + + wid = gtk_image_new_from_pixbuf (pix_xchat); + gtk_container_add (GTK_CONTAINER (vbox), wid); + + label = gtk_label_new (NULL); + gtk_label_set_selectable (GTK_LABEL (label), TRUE); + gtk_container_add (GTK_CONTAINER (vbox), label); + g_get_charset (&locale); + (snprintf) (buf, sizeof (buf), + "<span size=\"x-large\"><b>"DISPLAY_NAME" "PACKAGE_VERSION"</b></span>\n\n" + "%s\n\n" +#ifdef WIN32 + /* leave this message to avoid time wasting bug reports! */ + "This version is unofficial and comes with no support.\n\n" +#endif + "%s\n" + "<b>Charset</b>: %s " +#ifdef WIN32 + "<b>GTK+</b>: %i.%i.%i\n" +#else + "<b>Renderer</b>: %s\n" +#endif + "<b>Compiled</b>: "__DATE__"\n\n" + "<small>\302\251 1998-2010 Peter \305\275elezn\303\275 <zed@xchat.org></small>", + _("A multiplatform IRC Client"), + get_cpu_str(), + locale, +#ifdef WIN32 + gtk_major_version, + gtk_minor_version, + gtk_micro_version +#else +#ifdef USE_XFT + "Xft" +#else + "Pango" +#endif +#endif + ); + gtk_label_set_markup (GTK_LABEL (label), buf); + gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_CENTER); + + hbox = gtk_hbox_new (0, 2); + gtk_container_add (GTK_CONTAINER (vbox), hbox); + + wid = gtk_button_new_from_stock (GTK_STOCK_CLOSE); + GTK_WIDGET_SET_FLAGS (GTK_WIDGET (wid), GTK_CAN_DEFAULT); + gtk_box_pack_end (GTK_BOX (GTK_DIALOG (about)->action_area), wid, 0, 0, 0); + gtk_widget_grab_default (wid); + g_signal_connect (G_OBJECT (wid), "clicked", + G_CALLBACK (gtkutil_destroy), about); + + gtk_widget_show_all (about); +} +#endif diff --git a/etc/wyatt8740/src/fe-gtk/about.h b/etc/wyatt8740/src/fe-gtk/about.h new file mode 100644 index 0000000..2bad159 --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/about.h @@ -0,0 +1 @@ +void menu_about (GtkWidget * wid, gpointer sess); diff --git a/etc/wyatt8740/src/fe-gtk/ascii.c b/etc/wyatt8740/src/fe-gtk/ascii.c new file mode 100644 index 0000000..f1adbdf --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/ascii.c @@ -0,0 +1,177 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "fe-gtk.h" + +#include <gtk/gtkeditable.h> +#include <gtk/gtkframe.h> +#include <gtk/gtkhbox.h> +#include <gtk/gtklabel.h> +#include <gtk/gtkbutton.h> + +#include "../common/xchat.h" +#include "../common/xchatc.h" +#include "gtkutil.h" +#include "ascii.h" +#include "maingui.h" + +static const unsigned char table[]= +{ +/* Line 1 */ '\n', +0xc2,0xa1,0xc2,0xbf,0xc2,0xa2,0xc2,0xa3,0xe2,0x82,0xac,0xc2,0xa5,0xc2,0xa6,0xc2, +0xa7,0xc2,0xa8,0xc2,0xa9,0xc2,0xae,0xc2,0xaa,0xc2,0xab,0xc2,0xbb,0xc2,0xac,0xc2, +0xad,0xc2,0xaf,0xe2,0x99,0xaa, +/* Line 2 */ '\n', +0xc2,0xba,0xc2,0xb9,0xc2,0xb2,0xc2,0xb3,0xc2,0xb4,0xc2,0xb5,0xc3,0x9e,0xc3,0xbe, +0xc2,0xb6,0xc2,0xb7,0xc2,0xb8,0xc2,0xb0,0xc2,0xbc,0xc2,0xbd,0xc2,0xbe,0xc3,0x97, +0xc2,0xb1,0xc3,0xb7, +/* Line 3 */ '\n', +0xc3,0x80,0xc3,0x81,0xc3,0x82,0xc3,0x83,0xc3,0x84,0xc3,0x85,0xc3,0x86,0xc4,0x82, +0xc4,0x84,0x20,0xc3,0x87,0xc4,0x86,0xc4,0x8c,0xc5,0x92,0x20,0xc4,0x8e,0xc4,0x90, +0x20, +/* Line 4 */ '\n', +0xc3,0xa0,0xc3,0xa1,0xc3,0xa2,0xc3,0xa3,0xc3,0xa4,0xc3,0xa5,0xc3,0xa6,0xc4,0x83, +0xc4,0x85,0x20,0xc3,0xa7,0xc4,0x87,0xc4,0x8d,0xc5,0x93,0x20,0xc4,0x8f,0xc4,0x91, +0x20, +/* Line 5 */ '\n', +0xc3,0x88,0xc3,0x89,0xc3,0x8a,0xc3,0x8b,0xc4,0x98,0xc4,0x9a,0x20,0xc4,0x9e,0x20, +0xc3,0x8c,0xc3,0x8d,0xc3,0x8e,0xc3,0x8f,0xc4,0xb0,0x20,0xc4,0xb9,0xc4,0xbd,0xc5, +0x81, +/* Line 6 */ '\n', +0xc3,0xa8,0xc3,0xa9,0xc3,0xaa,0xc3,0xab,0xc4,0x99,0xc4,0x9b,0x20,0xc4,0x9f,0x20, +0xc3,0xac,0xc3,0xad,0xc3,0xae,0xc3,0xaf,0xc4,0xb1,0x20,0xc4,0xba,0xc4,0xbe,0xc5, +0x82, +/* Line 7 */ '\n', +0xc3,0x91,0xc5,0x83,0xc5,0x87,0x20,0xc3,0x92,0xc3,0x93,0xc3,0x94,0xc3,0x95,0xc3, +0x96,0xc3,0x98,0xc5,0x90,0x20,0xc5,0x94,0xc5,0x98,0x20,0xc5,0x9a,0xc5,0x9e,0xc5, +0xa0, +/* Line 8 */ '\n', +0xc3,0xb1,0xc5,0x84,0xc5,0x88,0x20,0xc3,0xb2,0xc3,0xb3,0xc3,0xb4,0xc3,0xb5,0xc3, +0xb6,0xc3,0xb8,0xc5,0x91,0x20,0xc5,0x95,0xc5,0x99,0x20,0xc5,0x9b,0xc5,0x9f,0xc5, +0xa1, +/* Line 9 */ '\n', +0x20,0xc5,0xa2,0xc5,0xa4,0x20,0xc3,0x99,0xc3,0x9a,0xc3,0x9b,0xc5,0xb2,0xc3,0x9c, +0xc5,0xae,0xc5,0xb0,0x20,0xc3,0x9d,0xc3,0x9f,0x20,0xc5,0xb9,0xc5,0xbb,0xc5,0xbd, +/* Line 10 */ '\n', +0x20,0xc5,0xa3,0xc5,0xa5,0x20,0xc3,0xb9,0xc3,0xba,0xc3,0xbb,0xc5,0xb3,0xc3,0xbc, +0xc5,0xaf,0xc5,0xb1,0x20,0xc3,0xbd,0xc3,0xbf,0x20,0xc5,0xba,0xc5,0xbc,0xc5,0xbe, +/* Line 11 */ '\n', +0xd0,0x90,0xd0,0x91,0xd0,0x92,0xd0,0x93,0xd0,0x94,0xd0,0x95,0xd0,0x81,0xd0,0x96, +0xd0,0x97,0xd0,0x98,0xd0,0x99,0xd0,0x9a,0xd0,0x9b,0xd0,0x9c,0xd0,0x9d,0xd0,0x9e, +0xd0,0x9f,0xd0,0xa0, +/* Line 12 */ '\n', +0xd0,0xb0,0xd0,0xb1,0xd0,0xb2,0xd0,0xb3,0xd0,0xb4,0xd0,0xb5,0xd1,0x91,0xd0,0xb6, +0xd0,0xb7,0xd0,0xb8,0xd0,0xb9,0xd0,0xba,0xd0,0xbb,0xd0,0xbc,0xd0,0xbd,0xd0,0xbe, +0xd0,0xbf,0xd1,0x80, +/* Line 13 */ '\n', +0xd0,0xa1,0xd0,0xa2,0xd0,0xa3,0xd0,0xa4,0xd0,0xa5,0xd0,0xa6,0xd0,0xa7,0xd0,0xa8, +0xd0,0xa9,0xd0,0xaa,0xd0,0xab,0xd0,0xac,0xd0,0xad,0xd0,0xae,0xd0,0xaf, +/* Line 14 */ '\n', +0xd1,0x81,0xd1,0x82,0xd1,0x83,0xd1,0x84,0xd1,0x85,0xd1,0x86,0xd1,0x87,0xd1,0x88, +0xd1,0x89,0xd1,0x8a,0xd1,0x8b,0xd1,0x8c,0xd1,0x8d,0xd1,0x8e,0xd1,0x8f,0 +}; + + +static gboolean +ascii_enter (GtkWidget * wid, GdkEventCrossing *event, GtkWidget *label) +{ + char buf[64]; + const char *text; + gunichar u; + + text = gtk_button_get_label (GTK_BUTTON (wid)); + u = g_utf8_get_char (text); + sprintf (buf, "%s U+%04X", text, u); + gtk_label_set_text (GTK_LABEL (label), buf); + + return FALSE; +} + +static void +ascii_click (GtkWidget * wid, gpointer userdata) +{ + int tmp_pos; + const char *text; + + if (current_sess) + { + text = gtk_button_get_label (GTK_BUTTON (wid)); + wid = current_sess->gui->input_box; + tmp_pos = SPELL_ENTRY_GET_POS (wid); + SPELL_ENTRY_INSERT (wid, text, -1, &tmp_pos); + SPELL_ENTRY_SET_POS (wid, tmp_pos); + } +} + +void +ascii_open (void) +{ + int i, len; + const unsigned char *table_pos; + char name[8]; + GtkWidget *frame, *label, *but, *hbox = NULL, *vbox, *win; + + win = mg_create_generic_tab ("charmap", _("Character Chart"), TRUE, TRUE, + NULL, NULL, 0, 0, &vbox, NULL); + gtk_container_set_border_width (GTK_CONTAINER (win), 5); + + label = gtk_label_new (NULL); + + table_pos = table; + i = 0; + while (table_pos[0] != 0) + { + if (table_pos[0] == '\n' || i == 0) + { + table_pos++; + hbox = gtk_hbox_new (0, 0); + gtk_container_add (GTK_CONTAINER (vbox), hbox); + gtk_widget_show (hbox); + i++; + continue; + } + + i++; + len = g_utf8_skip[table_pos[0]]; + memcpy (name, table_pos, len); + name[len] = 0; + + but = gtk_button_new_with_label (name); + gtk_widget_set_size_request (but, 28, -1); + g_signal_connect (G_OBJECT (but), "clicked", + G_CALLBACK (ascii_click), NULL); + g_signal_connect (G_OBJECT (but), "enter_notify_event", + G_CALLBACK (ascii_enter), label); + gtk_box_pack_start (GTK_BOX (hbox), but, 0, 0, 0); + gtk_widget_show (but); + + table_pos += len; + } + + frame = gtk_frame_new (""); + gtk_container_add (GTK_CONTAINER (hbox), frame); + gtk_container_add (GTK_CONTAINER (frame), label); + gtk_widget_show (label); + gtk_widget_show (frame); + + gtk_widget_show (win); +} diff --git a/etc/wyatt8740/src/fe-gtk/ascii.h b/etc/wyatt8740/src/fe-gtk/ascii.h new file mode 100644 index 0000000..afd3bd4 --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/ascii.h @@ -0,0 +1 @@ +void ascii_open (void); diff --git a/etc/wyatt8740/src/fe-gtk/banlist.c b/etc/wyatt8740/src/fe-gtk/banlist.c new file mode 100644 index 0000000..afaa7eb --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/banlist.c @@ -0,0 +1,418 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <fcntl.h> +#include <time.h> + +#include "fe-gtk.h" + +#include <gtk/gtkhbox.h> +#include <gtk/gtkvbox.h> +#include <gtk/gtkhbbox.h> +#include <gtk/gtkstock.h> +#include <gtk/gtkliststore.h> +#include <gtk/gtkmessagedialog.h> +#include <gtk/gtktreeview.h> +#include <gtk/gtktreeselection.h> + +#include "../common/xchat.h" +#include "../common/fe.h" +#include "../common/modes.h" +#include "../common/outbound.h" +#include "../common/xchatc.h" +#include "gtkutil.h" +#include "maingui.h" +#include "banlist.h" + +/* model for the banlist tree */ +enum +{ + MASK_COLUMN, + FROM_COLUMN, + DATE_COLUMN, + N_COLUMNS +}; + +static GtkTreeView * +get_view (struct session *sess) +{ + return GTK_TREE_VIEW (sess->res->banlist_treeview); +} + +static GtkListStore * +get_store (struct session *sess) +{ + return GTK_LIST_STORE (gtk_tree_view_get_model (get_view (sess))); +} + +static gboolean +supports_exempt (server *serv) +{ + char *cm = serv->chanmodes; + + if (serv->have_except) + return TRUE; + + if (!cm) + return FALSE; + + while (*cm) + { + if (*cm == ',') + break; + if (*cm == 'e') + return TRUE; + cm++; + } + + return FALSE; +} + +void +fe_add_ban_list (struct session *sess, char *mask, char *who, char *when, int is_exempt) +{ + GtkListStore *store; + GtkTreeIter iter; + char buf[512]; + + store = get_store (sess); + gtk_list_store_append (store, &iter); + + if (is_exempt) + { + snprintf (buf, sizeof (buf), "(EX) %s", mask); + gtk_list_store_set (store, &iter, 0, buf, 1, who, 2, when, -1); + } else + { + gtk_list_store_set (store, &iter, 0, mask, 1, who, 2, when, -1); + } +} + +void +fe_ban_list_end (struct session *sess, int is_exemption) +{ + gtk_widget_set_sensitive (sess->res->banlist_butRefresh, TRUE); +} + +/** + * * Performs the actual refresh operations. + * */ +static void +banlist_do_refresh (struct session *sess) +{ + char tbuf[256]; + if (sess->server->connected) + { + GtkListStore *store; + + gtk_widget_set_sensitive (sess->res->banlist_butRefresh, FALSE); + + snprintf (tbuf, sizeof tbuf, "XChat: Ban List (%s, %s)", + sess->channel, sess->server->servername); + mg_set_title (sess->res->banlist_window, tbuf); + + store = get_store (sess); + gtk_list_store_clear (store); + + handle_command (sess, "ban", FALSE); +#ifdef WIN32 + if (0) +#else + if (supports_exempt (sess->server)) +#endif + { + snprintf (tbuf, sizeof (tbuf), "quote mode %s +e", sess->channel); + handle_command (sess, tbuf, FALSE); + } + + } else + { + fe_message (_("Not connected."), FE_MSG_ERROR); + } +} + +static void +banlist_refresh (GtkWidget * wid, struct session *sess) +{ + /* JG NOTE: Didn't see actual use of wid here, so just forwarding + * * this to chanlist_do_refresh because I use it without any widget + * * param in chanlist_build_gui_list when the user presses enter + * * or apply for the first time if the list has not yet been + * * received. + * */ + banlist_do_refresh (sess); +} + +static int +banlist_unban_inner (gpointer none, struct session *sess, int do_exempts) +{ + GtkTreeModel *model; + GtkTreeSelection *sel; + GtkTreeIter iter; + char tbuf[2048]; + char **masks, *tmp, *space; + int num_sel, i; + + /* grab the list of selected items */ + model = GTK_TREE_MODEL (get_store (sess)); + sel = gtk_tree_view_get_selection (get_view (sess)); + num_sel = 0; + if (gtk_tree_model_get_iter_first (model, &iter)) + { + do + { + if (gtk_tree_selection_iter_is_selected (sel, &iter)) + num_sel++; + } + while (gtk_tree_model_iter_next (model, &iter)); + } + + if (num_sel < 1) + return 0; + + /* create an array of all the masks */ + masks = calloc (1, num_sel * sizeof (char *)); + + i = 0; + gtk_tree_model_get_iter_first (model, &iter); + do + { + if (gtk_tree_selection_iter_is_selected (sel, &iter)) + { + gtk_tree_model_get (model, &iter, MASK_COLUMN, &masks[i], -1); + space = strchr (masks[i], ' '); + + if (do_exempts) + { + if (space) + { + /* remove the "(EX) " */ + tmp = masks[i]; + masks[i] = g_strdup (space + 1); + g_free (tmp); + i++; + } + } else + { + if (!space) + i++; + } + } + } + while (gtk_tree_model_iter_next (model, &iter)); + + /* and send to server */ + if (do_exempts) + send_channel_modes (sess, tbuf, masks, 0, i, '-', 'e', 0); + else + send_channel_modes (sess, tbuf, masks, 0, i, '-', 'b', 0); + + /* now free everything, and refresh banlist */ + for (i=0; i < num_sel; i++) + g_free (masks[i]); + free (masks); + + return num_sel; +} + +static void +banlist_unban (GtkWidget * wid, struct session *sess) +{ + int num = 0; + + num += banlist_unban_inner (wid, sess, FALSE); + num += banlist_unban_inner (wid, sess, TRUE); + + if (num < 1) + { + fe_message (_("You must select some bans."), FE_MSG_ERROR); + return; + } + + banlist_do_refresh (sess); +} + +static void +banlist_clear_cb (GtkDialog *dialog, gint response, gpointer sess) +{ + GtkTreeSelection *sel; + + gtk_widget_destroy (GTK_WIDGET (dialog)); + + if (response == GTK_RESPONSE_OK) + { + sel = gtk_tree_view_get_selection (get_view (sess)); + gtk_tree_selection_select_all (sel); + banlist_unban (NULL, sess); + } +} + +static void +banlist_clear (GtkWidget * wid, struct session *sess) +{ + GtkWidget *dialog; + + dialog = gtk_message_dialog_new (NULL, 0, + GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, + _("Are you sure you want to remove all bans in %s?"), sess->channel); + g_signal_connect (G_OBJECT (dialog), "response", + G_CALLBACK (banlist_clear_cb), sess); + gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); + gtk_widget_show (dialog); +} + +static void +banlist_add_selected_cb (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data) +{ + GSList **lp = data; + GSList *list = NULL; + GtkTreeIter *copy; + + if (!lp) return; + list = *lp; + copy = g_malloc (sizeof (GtkTreeIter)); + g_return_if_fail (copy != NULL); + *copy = *iter; + + list = g_slist_append (list, copy); + *(GSList **)data = list; +} + +static void +banlist_crop (GtkWidget * wid, struct session *sess) +{ + GtkTreeSelection *select; + GSList *list = NULL, *node; + int num_sel; + + /* remember which bans are selected */ + select = gtk_tree_view_get_selection (get_view (sess)); + /* gtk_tree_selected_get_selected_rows() isn't present in gtk 2.0.x */ + gtk_tree_selection_selected_foreach (select, banlist_add_selected_cb, + &list); + + num_sel = g_slist_length (list); + /* select all, then unselect those that we remembered */ + if (num_sel) + { + gtk_tree_selection_select_all (select); + + for (node = list; node; node = node->next) + gtk_tree_selection_unselect_iter (select, node->data); + + g_slist_foreach (list, (GFunc)g_free, NULL); + g_slist_free (list); + + banlist_unban (NULL, sess); + } else + fe_message (_("You must select some bans."), FE_MSG_ERROR); +} + +static GtkWidget * +banlist_treeview_new (GtkWidget *box) +{ + GtkListStore *store; + GtkWidget *view; + GtkTreeSelection *select; + GtkTreeViewColumn *col; + + store = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING); + g_return_val_if_fail (store != NULL, NULL); + view = gtkutil_treeview_new (box, GTK_TREE_MODEL (store), NULL, + MASK_COLUMN, _("Mask"), + FROM_COLUMN, _("From"), + DATE_COLUMN, _("Date"), -1); + + col = gtk_tree_view_get_column (GTK_TREE_VIEW (view), MASK_COLUMN); + gtk_tree_view_column_set_alignment (col, 0.5); + gtk_tree_view_column_set_min_width (col, 300); + gtk_tree_view_column_set_sort_column_id (col, MASK_COLUMN); + + col = gtk_tree_view_get_column (GTK_TREE_VIEW (view), FROM_COLUMN); + gtk_tree_view_column_set_alignment (col, 0.5); + gtk_tree_view_column_set_sort_column_id (col, FROM_COLUMN); + + col = gtk_tree_view_get_column (GTK_TREE_VIEW (view), DATE_COLUMN); + gtk_tree_view_column_set_alignment (col, 0.5); + + select = gtk_tree_view_get_selection (GTK_TREE_VIEW (view)); + gtk_tree_selection_set_mode (select, GTK_SELECTION_MULTIPLE); + + gtk_widget_show (view); + return view; +} + +static void +banlist_closegui (GtkWidget *wid, session *sess) +{ + if (is_session (sess)) + sess->res->banlist_window = 0; +} + +void +banlist_opengui (struct session *sess) +{ + GtkWidget *vbox1; + GtkWidget *bbox; + char tbuf[256]; + + if (sess->res->banlist_window) + { + mg_bring_tofront (sess->res->banlist_window); + return; + } + + if (sess->type != SESS_CHANNEL) + { + fe_message (_("You can only open the Ban List window while in a channel tab."), FE_MSG_ERROR); + return; + } + + snprintf (tbuf, sizeof tbuf, _("XChat: Ban List (%s)"), + sess->server->servername); + + sess->res->banlist_window = mg_create_generic_tab ("BanList", tbuf, FALSE, + TRUE, banlist_closegui, sess, 550, 200, &vbox1, sess->server); + + /* create banlist view */ + sess->res->banlist_treeview = banlist_treeview_new (vbox1); + + bbox = gtk_hbutton_box_new (); + gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_SPREAD); + gtk_container_set_border_width (GTK_CONTAINER (bbox), 5); + gtk_box_pack_end (GTK_BOX (vbox1), bbox, 0, 0, 0); + gtk_widget_show (bbox); + + gtkutil_button (bbox, GTK_STOCK_REMOVE, 0, banlist_unban, sess, + _("Remove")); + gtkutil_button (bbox, GTK_STOCK_REMOVE, 0, banlist_crop, sess, + _("Crop")); + gtkutil_button (bbox, GTK_STOCK_CLEAR, 0, banlist_clear, sess, + _("Clear")); + + sess->res->banlist_butRefresh = gtkutil_button (bbox, GTK_STOCK_REFRESH, 0, banlist_refresh, sess, _("Refresh")); + + banlist_do_refresh (sess); + + gtk_widget_show (sess->res->banlist_window); +} diff --git a/etc/wyatt8740/src/fe-gtk/banlist.h b/etc/wyatt8740/src/fe-gtk/banlist.h new file mode 100644 index 0000000..7ceccd0 --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/banlist.h @@ -0,0 +1 @@ +void banlist_opengui (session *sess); diff --git a/etc/wyatt8740/src/fe-gtk/chanlist.c b/etc/wyatt8740/src/fe-gtk/chanlist.c new file mode 100644 index 0000000..6444a73 --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/chanlist.c @@ -0,0 +1,977 @@ +/* X-Chat + * Copyright (C) 1998-2006 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <fcntl.h> +#include <time.h> + +#include "fe-gtk.h" + +#include <gtk/gtkalignment.h> +#include <gtk/gtkcellrenderertext.h> +#include <gtk/gtkcheckbutton.h> +#include <gtk/gtkcombobox.h> +#include <gtk/gtkentry.h> +#include <gtk/gtkhbox.h> +#include <gtk/gtklabel.h> +#include <gtk/gtkliststore.h> +#include <gtk/gtkscrolledwindow.h> +#include <gtk/gtkspinbutton.h> +#include <gtk/gtkstock.h> +#include <gtk/gtktable.h> +#include <gtk/gtktreeselection.h> +#include <gtk/gtkvbox.h> +#include <gtk/gtkvseparator.h> +#include <gdk/gdkkeysyms.h> + +#include "../common/xchat.h" +#include "../common/xchatc.h" +#include "../common/cfgfiles.h" +#include "../common/outbound.h" +#include "../common/util.h" +#include "../common/fe.h" +#include "../common/server.h" +#include "gtkutil.h" +#include "maingui.h" + + +#include "custom-list.h" + + +enum +{ + COL_CHANNEL, + COL_USERS, + COL_TOPIC, + N_COLUMNS +}; + +#ifndef CUSTOM_LIST +typedef struct /* this is now in custom-list.h */ +{ + char *topic; + char *collation_key; + guint32 pos; + guint32 users; + /* channel string lives beyond "users" */ +#define GET_CHAN(row) (((char *)row)+sizeof(chanlistrow)) +} +chanlistrow; +#endif + +#define GET_MODEL(xserv) (gtk_tree_view_get_model(GTK_TREE_VIEW(xserv->gui->chanlist_list))) + + +static gboolean +chanlist_match (server *serv, const char *str) +{ + switch (serv->gui->chanlist_search_type) + { + case 1: + return match (GTK_ENTRY (serv->gui->chanlist_wild)->text, str); +#ifndef WIN32 + case 2: + if (!serv->gui->have_regex) + return 0; + /* regex returns 0 if it's a match: */ + return !regexec (&serv->gui->chanlist_match_regex, str, 1, NULL, REG_NOTBOL); +#endif + default: /* case 0: */ + return nocasestrstr (str, GTK_ENTRY (serv->gui->chanlist_wild)->text) ? 1 : 0; + } +} + +/** + * Updates the caption to reflect the number of users and channels + */ +static void +chanlist_update_caption (server *serv) +{ + gchar tbuf[256]; + + snprintf (tbuf, sizeof tbuf, + _("Displaying %d/%d users on %d/%d channels."), + serv->gui->chanlist_users_shown_count, + serv->gui->chanlist_users_found_count, + serv->gui->chanlist_channels_shown_count, + serv->gui->chanlist_channels_found_count); + + gtk_label_set_text (GTK_LABEL (serv->gui->chanlist_label), tbuf); + serv->gui->chanlist_caption_is_stale = FALSE; +} + +static void +chanlist_update_buttons (server *serv) +{ + if (serv->gui->chanlist_channels_shown_count) + { + gtk_widget_set_sensitive (serv->gui->chanlist_join, TRUE); + gtk_widget_set_sensitive (serv->gui->chanlist_savelist, TRUE); + } + else + { + gtk_widget_set_sensitive (serv->gui->chanlist_join, FALSE); + gtk_widget_set_sensitive (serv->gui->chanlist_savelist, FALSE); + } +} + +static void +chanlist_reset_counters (server *serv) +{ + serv->gui->chanlist_users_found_count = 0; + serv->gui->chanlist_users_shown_count = 0; + serv->gui->chanlist_channels_found_count = 0; + serv->gui->chanlist_channels_shown_count = 0; + + chanlist_update_caption (serv); + chanlist_update_buttons (serv); +} + +/* free up our entire linked list and all the nodes */ + +static void +chanlist_data_free (server *serv) +{ + GSList *rows; + chanlistrow *data; + + if (serv->gui->chanlist_data_stored_rows) + { + for (rows = serv->gui->chanlist_data_stored_rows; rows != NULL; + rows = rows->next) + { + data = rows->data; + g_free (data->topic); + g_free (data->collation_key); + free (data); + } + + g_slist_free (serv->gui->chanlist_data_stored_rows); + serv->gui->chanlist_data_stored_rows = NULL; + } + + g_slist_free (serv->gui->chanlist_pending_rows); + serv->gui->chanlist_pending_rows = NULL; +} + +/* add any rows we received from the server in the last 0.25s to the GUI */ + +static void +chanlist_flush_pending (server *serv) +{ + GSList *list = serv->gui->chanlist_pending_rows; + GtkTreeModel *model; + chanlistrow *row; + + if (!list) + { + if (serv->gui->chanlist_caption_is_stale) + chanlist_update_caption (serv); + return; + } + model = GET_MODEL (serv); + + while (list) + { + row = list->data; + custom_list_append (CUSTOM_LIST (model), row); + list = list->next; + } + + g_slist_free (serv->gui->chanlist_pending_rows); + serv->gui->chanlist_pending_rows = NULL; + chanlist_update_caption (serv); +} + +static gboolean +chanlist_timeout (server *serv) +{ + chanlist_flush_pending (serv); + return TRUE; +} + +/** + * Places a data row into the gui GtkTreeView, if and only if the row matches + * the user and regex/search requirements. + */ +static void +chanlist_place_row_in_gui (server *serv, chanlistrow *next_row, gboolean force) +{ + GtkTreeModel *model; + + /* First, update the 'found' counter values */ + serv->gui->chanlist_users_found_count += next_row->users; + serv->gui->chanlist_channels_found_count++; + + if (serv->gui->chanlist_channels_shown_count == 1) + /* join & save buttons become live */ + chanlist_update_buttons (serv); + + if (next_row->users < serv->gui->chanlist_minusers) + { + serv->gui->chanlist_caption_is_stale = TRUE; + return; + } + + if (next_row->users > serv->gui->chanlist_maxusers + && serv->gui->chanlist_maxusers > 0) + { + serv->gui->chanlist_caption_is_stale = TRUE; + return; + } + + if (GTK_ENTRY (serv->gui->chanlist_wild)->text[0]) + { + /* Check what the user wants to match. If both buttons or _neither_ + * button is checked, look for match in both by default. + */ + if (serv->gui->chanlist_match_wants_channel == + serv->gui->chanlist_match_wants_topic) + { + if (!chanlist_match (serv, GET_CHAN (next_row)) + && !chanlist_match (serv, next_row->topic)) + { + serv->gui->chanlist_caption_is_stale = TRUE; + return; + } + } + + else if (serv->gui->chanlist_match_wants_channel) + { + if (!chanlist_match (serv, GET_CHAN (next_row))) + { + serv->gui->chanlist_caption_is_stale = TRUE; + return; + } + } + + else if (serv->gui->chanlist_match_wants_topic) + { + if (!chanlist_match (serv, next_row->topic)) + { + serv->gui->chanlist_caption_is_stale = TRUE; + return; + } + } + } + + if (force || serv->gui->chanlist_channels_shown_count < 20) + { + model = GET_MODEL (serv); + /* makes it appear fast :) */ + custom_list_append (CUSTOM_LIST (model), next_row); + chanlist_update_caption (serv); + } + else + /* add it to GUI at the next update interval */ + serv->gui->chanlist_pending_rows = g_slist_prepend (serv->gui->chanlist_pending_rows, next_row); + + /* Update the 'shown' counter values */ + serv->gui->chanlist_users_shown_count += next_row->users; + serv->gui->chanlist_channels_shown_count++; +} + +/* Performs the LIST download from the IRC server. */ + +static void +chanlist_do_refresh (server *serv) +{ + if (serv->gui->chanlist_flash_tag) + { + g_source_remove (serv->gui->chanlist_flash_tag); + serv->gui->chanlist_flash_tag = 0; + } + + if (!serv->connected) + { + fe_message (_("Not connected."), FE_MSG_ERROR); + return; + } + + custom_list_clear ((CustomList *)GET_MODEL (serv)); + gtk_widget_set_sensitive (serv->gui->chanlist_refresh, FALSE); + + chanlist_data_free (serv); + chanlist_reset_counters (serv); + + /* can we request a list with minusers arg? */ + if (serv->use_listargs) + { + /* yes - it will download faster */ + serv->p_list_channels (serv, "", serv->gui->chanlist_minusers); + /* don't allow the spin button below this value from now on */ + serv->gui->chanlist_minusers_downloaded = serv->gui->chanlist_minusers; + } + else + { + /* download all, filter minusers locally only */ + serv->p_list_channels (serv, "", 1); + serv->gui->chanlist_minusers_downloaded = 1; + } + +/* gtk_spin_button_set_range ((GtkSpinButton *)serv->gui->chanlist_min_spin, + serv->gui->chanlist_minusers_downloaded, 999999);*/ +} + +static void +chanlist_refresh (GtkWidget * wid, server *serv) +{ + chanlist_do_refresh (serv); +} + +/** + * Fills the gui GtkTreeView with stored items from the GSList. + */ +static void +chanlist_build_gui_list (server *serv) +{ + GSList *rows; + + /* first check if the list is present */ + if (serv->gui->chanlist_data_stored_rows == NULL) + { + /* start a download */ + chanlist_do_refresh (serv); + return; + } + + custom_list_clear ((CustomList *)GET_MODEL (serv)); + + /* discard pending rows FIXME: free the structs? */ + g_slist_free (serv->gui->chanlist_pending_rows); + serv->gui->chanlist_pending_rows = NULL; + + /* Reset the counters */ + chanlist_reset_counters (serv); + + /* Refill the list */ + for (rows = serv->gui->chanlist_data_stored_rows; rows != NULL; + rows = rows->next) + { + chanlist_place_row_in_gui (serv, rows->data, TRUE); + } + + custom_list_resort ((CustomList *)GET_MODEL (serv)); +} + +/** + * Accepts incoming channel data from inbound.c, allocates new space for a + * chanlistrow, adds it to our linked list and calls chanlist_place_row_in_gui. + */ +void +fe_add_chan_list (server *serv, char *chan, char *users, char *topic) +{ + chanlistrow *next_row; + int len = strlen (chan) + 1; + + /* we allocate the struct and channel string in one go */ + next_row = malloc (sizeof (chanlistrow) + len); + memcpy (((char *)next_row) + sizeof (chanlistrow), chan, len); + next_row->topic = strip_color (topic, -1, STRIP_ALL); + next_row->collation_key = g_utf8_collate_key (chan, len-1); + if (!(next_row->collation_key)) + next_row->collation_key = g_strdup (chan); + next_row->users = atoi (users); + + /* add this row to the data */ + serv->gui->chanlist_data_stored_rows = + g_slist_prepend (serv->gui->chanlist_data_stored_rows, next_row); + + /* _possibly_ add the row to the gui */ + chanlist_place_row_in_gui (serv, next_row, FALSE); +} + +void +fe_chan_list_end (server *serv) +{ + /* download complete */ + chanlist_flush_pending (serv); + gtk_widget_set_sensitive (serv->gui->chanlist_refresh, TRUE); + custom_list_resort ((CustomList *)GET_MODEL (serv)); +} + +static void +chanlist_search_pressed (GtkButton * button, server *serv) +{ + chanlist_build_gui_list (serv); +} + +static void +chanlist_find_cb (GtkWidget * wid, server *serv) +{ +#ifndef WIN32 + /* recompile the regular expression. */ + if (serv->gui->have_regex) + { + serv->gui->have_regex = 0; + regfree (&serv->gui->chanlist_match_regex); + } + + if (regcomp (&serv->gui->chanlist_match_regex, GTK_ENTRY (wid)->text, + REG_ICASE | REG_EXTENDED | REG_NOSUB) == 0) + serv->gui->have_regex = 1; +#endif +} + +static void +chanlist_match_channel_button_toggled (GtkWidget * wid, server *serv) +{ + serv->gui->chanlist_match_wants_channel = GTK_TOGGLE_BUTTON (wid)->active; +} + +static void +chanlist_match_topic_button_toggled (GtkWidget * wid, server *serv) +{ + serv->gui->chanlist_match_wants_topic = GTK_TOGGLE_BUTTON (wid)->active; +} + +static char * +chanlist_get_selected (server *serv, gboolean get_topic) +{ + char *chan; + GtkTreeSelection *sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (serv->gui->chanlist_list)); + GtkTreeModel *model; + GtkTreeIter iter; + + if (!gtk_tree_selection_get_selected (sel, &model, &iter)) + return NULL; + + gtk_tree_model_get (model, &iter, get_topic ? COL_TOPIC : COL_CHANNEL, &chan, -1); + return chan; +} + +static void +chanlist_join (GtkWidget * wid, server *serv) +{ + char tbuf[CHANLEN + 6]; + char *chan = chanlist_get_selected (serv, FALSE); + if (chan) + { + if (serv->connected && (strcmp (chan, "*") != 0)) + { + snprintf (tbuf, sizeof (tbuf), "join %s", chan); + handle_command (serv->server_session, tbuf, FALSE); + } else + gdk_beep (); + g_free (chan); + } +} + +static void +chanlist_filereq_done (server *serv, char *file) +{ + time_t t = time (0); + int fh, users; + ssize_t nb; + char *chan, *topic; + char buf[1024]; + GtkTreeModel *model = GET_MODEL (serv); + GtkTreeIter iter; + + if (!file) + return; + + char *file_tmp = malloc( strlen( file ) + strlen( ".bug147832" ) + 1 ); + if( ! file_tmp ) + return; + + strcpy( file_tmp, file ); + strcat( file_tmp, ".bug147832" ); + + fh = xchat_open_file (file_tmp, O_TRUNC | O_WRONLY | O_CREAT, 0600, + XOF_DOMODE | XOF_FULLPATH); + if (fh == -1) + { + perror( "chanlist_filereq_done: xchat_open_file failed" ); + free( file_tmp ); + return; + } + + snprintf (buf, sizeof buf, "XChat Channel List: %s - %s\n", + serv->servername, ctime (&t)); + nb = write (fh, buf, strlen (buf)); + + if (gtk_tree_model_get_iter_first (model, &iter)) + { + do + { + gtk_tree_model_get (model, &iter, + COL_CHANNEL, &chan, + COL_USERS, &users, + COL_TOPIC, &topic, -1); + snprintf (buf, sizeof buf, "%-16s %-5d%s\n", chan, users, topic); + g_free (chan); + g_free (topic); + if( nb > 0 ) nb = write (fh, buf, strlen (buf)); + } + while (gtk_tree_model_iter_next (model, &iter)); + } + + if( nb <= 0 ) + { + fprintf( stderr, "chanlist_filereq_done: write() failed\n" ); + close( fh ); + free( file_tmp ); + return; + } + + if( close (fh) != 0 ) + { + perror( "chanlist_filereq_done: close() failed" ); + free( file_tmp ); + return; + } + + if( xchat_rename_file( file_tmp, file, XOF_DOMODE | XOF_FULLPATH ) != 0 ) + { + perror( "chanlist_filereq_done: xchat_rename_file() failed" ); + free( file_tmp ); + return; + } + + free( file_tmp ); +} + +static void +chanlist_save (GtkWidget * wid, server *serv) +{ + GtkTreeIter iter; + GtkTreeModel *model = GET_MODEL (serv); + + if (gtk_tree_model_get_iter_first (model, &iter)) + gtkutil_file_req (_("Select an output filename"), chanlist_filereq_done, + serv, NULL, FRF_WRITE); +} + +static gboolean +chanlist_flash (server *serv) +{ + if (serv->gui->chanlist_refresh->state != GTK_STATE_ACTIVE) + gtk_widget_set_state (serv->gui->chanlist_refresh, GTK_STATE_ACTIVE); + else + gtk_widget_set_state (serv->gui->chanlist_refresh, GTK_STATE_PRELIGHT); + + return TRUE; +} + +static void +chanlist_minusers (GtkSpinButton *wid, server *serv) +{ + serv->gui->chanlist_minusers = gtk_spin_button_get_value_as_int (wid); + + if (serv->gui->chanlist_minusers < serv->gui->chanlist_minusers_downloaded) + { + if (serv->gui->chanlist_flash_tag == 0) + serv->gui->chanlist_flash_tag = g_timeout_add (500, (GSourceFunc)chanlist_flash, serv); + } + else + { + if (serv->gui->chanlist_flash_tag) + { + g_source_remove (serv->gui->chanlist_flash_tag); + serv->gui->chanlist_flash_tag = 0; + } + } +} + +static void +chanlist_maxusers (GtkSpinButton *wid, server *serv) +{ + serv->gui->chanlist_maxusers = gtk_spin_button_get_value_as_int (wid); +} + +static void +chanlist_dclick_cb (GtkTreeView *view, GtkTreePath *path, + GtkTreeViewColumn *column, gpointer data) +{ + chanlist_join (0, (server *) data); /* double clicked a row */ +} + +static void +chanlist_menu_destroy (GtkWidget *menu, gpointer userdata) +{ + gtk_widget_destroy (menu); + g_object_unref (menu); +} + +static void +chanlist_copychannel (GtkWidget *item, server *serv) +{ + char *chan = chanlist_get_selected (serv, FALSE); + if (chan) + { + gtkutil_copy_to_clipboard (item, NULL, chan); + g_free (chan); + } +} + +static void +chanlist_copytopic (GtkWidget *item, server *serv) +{ + char *topic = chanlist_get_selected (serv, TRUE); + if (topic) + { + gtkutil_copy_to_clipboard (item, NULL, topic); + g_free (topic); + } +} + +static gboolean +chanlist_button_cb (GtkTreeView *tree, GdkEventButton *event, server *serv) +{ + GtkWidget *menu; + GtkTreeSelection *sel; + GtkTreePath *path; + char *chan; + + if (event->button != 3) + return FALSE; + + if (!gtk_tree_view_get_path_at_pos (tree, event->x, event->y, &path, 0, 0, 0)) + return FALSE; + + /* select what they right-clicked on */ + sel = gtk_tree_view_get_selection (tree); + gtk_tree_selection_unselect_all (sel); + gtk_tree_selection_select_path (sel, path); + gtk_tree_path_free (path); + + menu = gtk_menu_new (); + if (event->window) + gtk_menu_set_screen (GTK_MENU (menu), gdk_drawable_get_screen (event->window)); + g_object_ref (menu); + g_object_ref_sink (menu); + g_object_unref (menu); + g_signal_connect (G_OBJECT (menu), "selection-done", + G_CALLBACK (chanlist_menu_destroy), NULL); + mg_create_icon_item (_("_Join Channel"), GTK_STOCK_JUMP_TO, menu, + chanlist_join, serv); + mg_create_icon_item (_("_Copy Channel Name"), GTK_STOCK_COPY, menu, + chanlist_copychannel, serv); + mg_create_icon_item (_("Copy _Topic Text"), GTK_STOCK_COPY, menu, + chanlist_copytopic, serv); + + chan = chanlist_get_selected (serv, FALSE); + menu_addfavoritemenu (serv, menu, chan); + g_free (chan); + + gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 0, event->time); + + return TRUE; +} + +static void +chanlist_destroy_widget (GtkWidget *wid, server *serv) +{ + custom_list_clear ((CustomList *)GET_MODEL (serv)); + chanlist_data_free (serv); + + if (serv->gui->chanlist_flash_tag) + { + g_source_remove (serv->gui->chanlist_flash_tag); + serv->gui->chanlist_flash_tag = 0; + } + + if (serv->gui->chanlist_tag) + { + g_source_remove (serv->gui->chanlist_tag); + serv->gui->chanlist_tag = 0; + } + +#ifndef WIN32 + if (serv->gui->have_regex) + { + regfree (&serv->gui->chanlist_match_regex); + serv->gui->have_regex = 0; + } +#endif +} + +static void +chanlist_closegui (GtkWidget *wid, server *serv) +{ + if (is_server (serv)) + serv->gui->chanlist_window = NULL; +} + +static void +chanlist_add_column (GtkWidget *tree, int textcol, int size, char *title, gboolean right_justified) +{ + GtkCellRenderer *renderer; + GtkTreeViewColumn *col; + + renderer = gtk_cell_renderer_text_new (); + if (right_justified) + g_object_set (G_OBJECT (renderer), "xalign", (gfloat) 1.0, NULL); + g_object_set (G_OBJECT (renderer), "ypad", (gint) 0, NULL); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree), -1, title, + renderer, "text", textcol, NULL); + gtk_cell_renderer_text_set_fixed_height_from_font (GTK_CELL_RENDERER_TEXT (renderer), 1); + + col = gtk_tree_view_get_column (GTK_TREE_VIEW (tree), textcol); + gtk_tree_view_column_set_sort_column_id (col, textcol); + gtk_tree_view_column_set_resizable (col, TRUE); + if (textcol != COL_TOPIC) + { + gtk_tree_view_column_set_sizing (col, GTK_TREE_VIEW_COLUMN_FIXED); + gtk_tree_view_column_set_fixed_width (col, size); + } +} + +static void +chanlist_combo_cb (GtkWidget *combo, server *serv) +{ + serv->gui->chanlist_search_type = gtk_combo_box_get_active (GTK_COMBO_BOX (combo)); +} + +void +chanlist_opengui (server *serv, int do_refresh) +{ + GtkWidget *vbox, *hbox, *table, *wid, *view; + char tbuf[256]; + GtkListStore *store; + + if (serv->gui->chanlist_window) + { + mg_bring_tofront (serv->gui->chanlist_window); + return; + } + + snprintf (tbuf, sizeof tbuf, _("XChat: Channel List (%s)"), + server_get_network (serv, TRUE)); + + serv->gui->chanlist_pending_rows = NULL; + serv->gui->chanlist_tag = 0; + serv->gui->chanlist_flash_tag = 0; + serv->gui->chanlist_data_stored_rows = NULL; + + if (!serv->gui->chanlist_minusers) + serv->gui->chanlist_minusers = 5; + + if (!serv->gui->chanlist_maxusers) + serv->gui->chanlist_maxusers = 9999; + + serv->gui->chanlist_window = + mg_create_generic_tab ("ChanList", tbuf, FALSE, TRUE, chanlist_closegui, + serv, 640, 480, &vbox, serv); + + gtk_container_set_border_width (GTK_CONTAINER (vbox), 6); + gtk_box_set_spacing (GTK_BOX (vbox), 12); + + /* make a label to store the user/channel info */ + wid = gtk_label_new (NULL); + gtk_box_pack_start (GTK_BOX (vbox), wid, 0, 0, 0); + gtk_widget_show (wid); + serv->gui->chanlist_label = wid; + + /* ============================================================= */ + + store = (GtkListStore *) custom_list_new(); + view = gtkutil_treeview_new (vbox, GTK_TREE_MODEL (store), NULL, -1); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (view->parent), + GTK_SHADOW_IN); + serv->gui->chanlist_list = view; + + g_signal_connect (G_OBJECT (view), "row_activated", + G_CALLBACK (chanlist_dclick_cb), serv); + g_signal_connect (G_OBJECT (view), "button-press-event", + G_CALLBACK (chanlist_button_cb), serv); + + chanlist_add_column (view, COL_CHANNEL, 96, _("Channel"), FALSE); + chanlist_add_column (view, COL_USERS, 50, _("Users"), TRUE); + chanlist_add_column (view, COL_TOPIC, 50, _("Topic"), FALSE); + gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (view), TRUE); + /* this is a speed up, but no horizontal scrollbar :( */ + /*gtk_tree_view_set_fixed_height_mode (GTK_TREE_VIEW (view), TRUE);*/ + gtk_widget_show (view); + + /* ============================================================= */ + + table = gtk_table_new (4, 4, FALSE); + gtk_table_set_col_spacings (GTK_TABLE (table), 12); + gtk_table_set_row_spacings (GTK_TABLE (table), 3); + gtk_box_pack_start (GTK_BOX (vbox), table, 0, 1, 0); + gtk_widget_show (table); + + wid = gtkutil_button (NULL, GTK_STOCK_FIND, 0, chanlist_search_pressed, serv, + _("_Search")); + serv->gui->chanlist_search = wid; + gtk_table_attach (GTK_TABLE (table), wid, 3, 4, 3, 4, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + + wid = gtkutil_button (NULL, GTK_STOCK_REFRESH, 0, chanlist_refresh, serv, + _("_Download List")); + serv->gui->chanlist_refresh = wid; + gtk_table_attach (GTK_TABLE (table), wid, 3, 4, 2, 3, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + + wid = gtkutil_button (NULL, GTK_STOCK_SAVE_AS, 0, chanlist_save, serv, + _("Save _List...")); + serv->gui->chanlist_savelist = wid; + gtk_table_attach (GTK_TABLE (table), wid, 3, 4, 1, 2, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + + wid = gtkutil_button (NULL, GTK_STOCK_JUMP_TO, 0, chanlist_join, serv, + _("_Join Channel")); + serv->gui->chanlist_join = wid; + gtk_table_attach (GTK_TABLE (table), wid, 3, 4, 0, 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + + /* ============================================================= */ + + wid = gtk_label_new (_("Show only:")); + gtk_misc_set_alignment (GTK_MISC (wid), 0, 0.5); + gtk_table_attach (GTK_TABLE (table), wid, 0, 1, 3, 4, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + gtk_widget_show (wid); + + hbox = gtk_hbox_new (0, 0); + gtk_box_set_spacing (GTK_BOX (hbox), 9); + gtk_table_attach (GTK_TABLE (table), hbox, 1, 2, 3, 4, + GTK_FILL, GTK_FILL, 0, 0); + gtk_widget_show (hbox); + + wid = gtk_label_new (_("channels with")); + gtk_box_pack_start (GTK_BOX (hbox), wid, 0, 0, 0); + gtk_widget_show (wid); + + wid = gtk_spin_button_new_with_range (1, 999999, 1); + gtk_spin_button_set_value (GTK_SPIN_BUTTON (wid), + serv->gui->chanlist_minusers); + g_signal_connect (G_OBJECT (wid), "value_changed", + G_CALLBACK (chanlist_minusers), serv); + gtk_box_pack_start (GTK_BOX (hbox), wid, 0, 0, 0); + gtk_widget_show (wid); + serv->gui->chanlist_min_spin = wid; + + wid = gtk_label_new (_("to")); + gtk_box_pack_start (GTK_BOX (hbox), wid, 0, 0, 0); + gtk_widget_show (wid); + + wid = gtk_spin_button_new_with_range (1, 999999, 1); + gtk_spin_button_set_value (GTK_SPIN_BUTTON (wid), + serv->gui->chanlist_maxusers); + g_signal_connect (G_OBJECT (wid), "value_changed", + G_CALLBACK (chanlist_maxusers), serv); + gtk_box_pack_start (GTK_BOX (hbox), wid, 0, 0, 0); + gtk_widget_show (wid); + + wid = gtk_label_new (_("users.")); + gtk_box_pack_start (GTK_BOX (hbox), wid, 0, 0, 0); + gtk_widget_show (wid); + + /* ============================================================= */ + + wid = gtk_label_new (_("Look in:")); + gtk_misc_set_alignment (GTK_MISC (wid), 0, 0.5); + gtk_table_attach (GTK_TABLE (table), wid, 0, 1, 2, 3, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + gtk_widget_show (wid); + + hbox = gtk_hbox_new (0, 0); + gtk_box_set_spacing (GTK_BOX (hbox), 12); + gtk_table_attach (GTK_TABLE (table), hbox, 1, 2, 2, 3, + GTK_FILL, GTK_FILL, 0, 0); + gtk_widget_show (hbox); + + wid = gtk_check_button_new_with_label (_("Channel name")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wid), TRUE); + gtk_signal_connect (GTK_OBJECT (wid), "toggled", + GTK_SIGNAL_FUNC + (chanlist_match_channel_button_toggled), serv); + gtk_box_pack_start (GTK_BOX (hbox), wid, 0, 0, 0); + gtk_widget_show (wid); + + wid = gtk_check_button_new_with_label (_("Topic")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wid), TRUE); + gtk_signal_connect (GTK_OBJECT (wid), "toggled", + GTK_SIGNAL_FUNC (chanlist_match_topic_button_toggled), + serv); + gtk_box_pack_start (GTK_BOX (hbox), wid, 0, 0, 0); + gtk_widget_show (wid); + + serv->gui->chanlist_match_wants_channel = 1; + serv->gui->chanlist_match_wants_topic = 1; + + /* ============================================================= */ + + wid = gtk_label_new (_("Search type:")); + gtk_misc_set_alignment (GTK_MISC (wid), 0, 0.5); + gtk_table_attach (GTK_TABLE (table), wid, 0, 1, 1, 2, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + gtk_widget_show (wid); + + wid = gtk_combo_box_new_text (); + gtk_combo_box_append_text (GTK_COMBO_BOX (wid), _("Simple Search")); + gtk_combo_box_append_text (GTK_COMBO_BOX (wid), _("Pattern Match (Wildcards)")); +#ifndef WIN32 + gtk_combo_box_append_text (GTK_COMBO_BOX (wid), _("Regular Expression")); +#endif + gtk_combo_box_set_active (GTK_COMBO_BOX (wid), serv->gui->chanlist_search_type); + gtk_table_attach (GTK_TABLE (table), wid, 1, 2, 1, 2, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + g_signal_connect (G_OBJECT (wid), "changed", + G_CALLBACK (chanlist_combo_cb), serv); + gtk_widget_show (wid); + + /* ============================================================= */ + + wid = gtk_label_new (_("Find:")); + gtk_misc_set_alignment (GTK_MISC (wid), 0, 0.5); + gtk_table_attach (GTK_TABLE (table), wid, 0, 1, 0, 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + gtk_widget_show (wid); + + wid = gtk_entry_new_with_max_length (255); + gtk_signal_connect (GTK_OBJECT (wid), "changed", + GTK_SIGNAL_FUNC (chanlist_find_cb), serv); + gtk_signal_connect (GTK_OBJECT (wid), "activate", + GTK_SIGNAL_FUNC (chanlist_search_pressed), + (gpointer) serv); + gtk_table_attach (GTK_TABLE (table), wid, 1, 2, 0, 1, + GTK_EXPAND | GTK_FILL, 0, 0, 0); + gtk_widget_show (wid); + serv->gui->chanlist_wild = wid; + + chanlist_find_cb (wid, serv); + + /* ============================================================= */ + + wid = gtk_vseparator_new (); + gtk_table_attach (GTK_TABLE (table), wid, 2, 3, 0, 5, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + gtk_widget_show (wid); + + g_signal_connect (G_OBJECT (serv->gui->chanlist_window), "destroy", + G_CALLBACK (chanlist_destroy_widget), serv); + + /* reset the counters. */ + chanlist_reset_counters (serv); + + serv->gui->chanlist_tag = g_timeout_add (250, (GSourceFunc)chanlist_timeout, serv); + + if (do_refresh) + chanlist_do_refresh (serv); + + chanlist_update_buttons (serv); + gtk_widget_show (serv->gui->chanlist_window); + gtk_widget_grab_focus (serv->gui->chanlist_refresh); +} diff --git a/etc/wyatt8740/src/fe-gtk/chanlist.h b/etc/wyatt8740/src/fe-gtk/chanlist.h new file mode 100644 index 0000000..19a8b25 --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/chanlist.h @@ -0,0 +1 @@ +void chanlist_opengui (server *serv, int do_refresh); diff --git a/etc/wyatt8740/src/fe-gtk/chanview-tabs.c b/etc/wyatt8740/src/fe-gtk/chanview-tabs.c new file mode 100644 index 0000000..8e3da8e --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/chanview-tabs.c @@ -0,0 +1,779 @@ +/* file included in chanview.c */ + +typedef struct +{ + GtkWidget *outer; /* outer box */ + GtkWidget *inner; /* inner box */ + GtkWidget *b1; /* button1 */ + GtkWidget *b2; /* button2 */ +} tabview; + +static void chanview_populate (chanview *cv); + +/* ignore "toggled" signal? */ +static int ignore_toggle = FALSE; +static int tab_left_is_moving = 0; +static int tab_right_is_moving = 0; + +/* userdata for gobjects used here: + * + * tab (togglebuttons inside boxes): + * "u" userdata passed to tab-focus callback function (sess) + * "c" the tab's (chan *) + * + * box (family box) + * "f" family + * + */ + +/* + * GtkViewports request at least as much space as their children do. + * If we don't intervene here, the GtkViewport will be granted its + * request, even at the expense of resizing the top-level window. + */ +static void +cv_tabs_sizerequest (GtkWidget *viewport, GtkRequisition *requisition, chanview *cv) +{ + if (!cv->vertical) + requisition->width = 1; + else + requisition->height = 1; +} + +static void +cv_tabs_sizealloc (GtkWidget *widget, GtkAllocation *allocation, chanview *cv) +{ + GtkAdjustment *adj; + GtkWidget *inner; + gint viewport_size; + + inner = ((tabview *)cv)->inner; + + if (cv->vertical) + { + adj = gtk_viewport_get_vadjustment (GTK_VIEWPORT (inner->parent)); + gdk_window_get_geometry (inner->parent->window, 0, 0, 0, &viewport_size, 0); + } else + { + adj = gtk_viewport_get_hadjustment (GTK_VIEWPORT (inner->parent)); + gdk_window_get_geometry (inner->parent->window, 0, 0, &viewport_size, 0, 0); + } + + if (adj->upper <= viewport_size) + { + gtk_widget_hide (((tabview *)cv)->b1); + gtk_widget_hide (((tabview *)cv)->b2); + } else + { + gtk_widget_show (((tabview *)cv)->b1); + gtk_widget_show (((tabview *)cv)->b2); + } +} + +static gint +tab_search_offset (GtkWidget *inner, gint start_offset, + gboolean forward, gboolean vertical) +{ + GList *boxes; + GList *tabs; + GtkWidget *box; + GtkWidget *button; + gint found; + + boxes = GTK_BOX (inner)->children; + if (!forward && boxes) + boxes = g_list_last (boxes); + + while (boxes) + { + box = ((GtkBoxChild *)boxes->data)->widget; + boxes = (forward ? boxes->next : boxes->prev); + + tabs = GTK_BOX (box)->children; + if (!forward && tabs) + tabs = g_list_last (tabs); + + while (tabs) + { + button = ((GtkBoxChild *)tabs->data)->widget; + tabs = (forward ? tabs->next : tabs->prev); + + if (!GTK_IS_TOGGLE_BUTTON (button)) + continue; + + found = (vertical ? button->allocation.y : button->allocation.x); + if ((forward && found > start_offset) || + (!forward && found < start_offset)) + return found; + } + } + + return 0; +} + +static void +tab_scroll_left_up_clicked (GtkWidget *widget, chanview *cv) +{ + GtkAdjustment *adj; + gint viewport_size; + gfloat new_value; + GtkWidget *inner; + gfloat i; + + inner = ((tabview *)cv)->inner; + + if (cv->vertical) + { + adj = gtk_viewport_get_vadjustment (GTK_VIEWPORT (inner->parent)); + gdk_window_get_geometry (inner->parent->window, 0, 0, 0, &viewport_size, 0); + } else + { + adj = gtk_viewport_get_hadjustment (GTK_VIEWPORT (inner->parent)); + gdk_window_get_geometry (inner->parent->window, 0, 0, &viewport_size, 0, 0); + } + + new_value = tab_search_offset (inner, adj->value, 0, cv->vertical); + + if (new_value + viewport_size > adj->upper) + new_value = adj->upper - viewport_size; + + if (!tab_left_is_moving) + { + tab_left_is_moving = 1; + + for (i = adj->value; ((i > new_value) && (tab_left_is_moving)); i -= 0.1) + { + gtk_adjustment_set_value (adj, i); + while (g_main_pending ()) + g_main_iteration (TRUE); + } + + gtk_adjustment_set_value (adj, new_value); + + tab_left_is_moving = 0; /* hSP: set to false in case we didnt get stopped (the normal case) */ + } + else + { + tab_left_is_moving = 0; /* hSP: jump directly to next element if user is clicking faster than we can scroll.. */ + } +} + +static void +tab_scroll_right_down_clicked (GtkWidget *widget, chanview *cv) +{ + GtkAdjustment *adj; + gint viewport_size; + gfloat new_value; + GtkWidget *inner; + gfloat i; + + inner = ((tabview *)cv)->inner; + + if (cv->vertical) + { + adj = gtk_viewport_get_vadjustment (GTK_VIEWPORT (inner->parent)); + gdk_window_get_geometry (inner->parent->window, 0, 0, 0, &viewport_size, 0); + } else + { + adj = gtk_viewport_get_hadjustment (GTK_VIEWPORT (inner->parent)); + gdk_window_get_geometry (inner->parent->window, 0, 0, &viewport_size, 0, 0); + } + + new_value = tab_search_offset (inner, adj->value, 1, cv->vertical); + + if (new_value == 0 || new_value + viewport_size > adj->upper) + new_value = adj->upper - viewport_size; + + if (!tab_right_is_moving) + { + tab_right_is_moving = 1; + + for (i = adj->value; ((i < new_value) && (tab_right_is_moving)); i += 0.1) + { + gtk_adjustment_set_value (adj, i); + while (g_main_pending ()) + g_main_iteration (TRUE); + } + + gtk_adjustment_set_value (adj, new_value); + + tab_right_is_moving = 0; /* hSP: set to false in case we didnt get stopped (the normal case) */ + } + else + { + tab_right_is_moving = 0; /* hSP: jump directly to next element if user is clicking faster than we can scroll.. */ + } +} + +static gboolean +tab_scroll_cb (GtkWidget *widget, GdkEventScroll *event, gpointer cv) +{ + /* mouse wheel scrolling */ + if (event->direction == GDK_SCROLL_UP) + tab_scroll_left_up_clicked (widget, cv); + else if (event->direction == GDK_SCROLL_DOWN) + tab_scroll_right_down_clicked (widget, cv); + + return FALSE; +} + +static void +cv_tabs_xclick_cb (GtkWidget *button, chanview *cv) +{ + cv->cb_xbutton (cv, cv->focused, cv->focused->tag, cv->focused->userdata); +} + +/* make a Scroll (arrow) button */ + +static GtkWidget * +make_sbutton (GtkArrowType type, void *click_cb, void *userdata) +{ + GtkWidget *button, *arrow; + + button = gtk_button_new (); + arrow = gtk_arrow_new (type, GTK_SHADOW_NONE); + gtk_container_add (GTK_CONTAINER (button), arrow); + gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE); + g_signal_connect (G_OBJECT (button), "clicked", + G_CALLBACK (click_cb), userdata); + g_signal_connect (G_OBJECT (button), "scroll_event", + G_CALLBACK (tab_scroll_cb), userdata); + gtk_widget_show (arrow); + + return button; +} + +static void +cv_tabs_init (chanview *cv) +{ + GtkWidget *box, *hbox = NULL; + GtkWidget *viewport; + GtkWidget *outer; + GtkWidget *button; + + if (cv->vertical) + outer = gtk_vbox_new (0, 0); + else + outer = gtk_hbox_new (0, 0); + ((tabview *)cv)->outer = outer; + g_signal_connect (G_OBJECT (outer), "size_allocate", + G_CALLBACK (cv_tabs_sizealloc), cv); +/* gtk_container_set_border_width (GTK_CONTAINER (outer), 2);*/ + gtk_widget_show (outer); + + viewport = gtk_viewport_new (0, 0); + gtk_viewport_set_shadow_type (GTK_VIEWPORT (viewport), GTK_SHADOW_NONE); + g_signal_connect (G_OBJECT (viewport), "size_request", + G_CALLBACK (cv_tabs_sizerequest), cv); + g_signal_connect (G_OBJECT (viewport), "scroll_event", + G_CALLBACK (tab_scroll_cb), cv); + gtk_box_pack_start (GTK_BOX (outer), viewport, 1, 1, 0); + gtk_widget_show (viewport); + + if (cv->vertical) + box = gtk_vbox_new (FALSE, 0); + else + box = gtk_hbox_new (FALSE, 0); + ((tabview *)cv)->inner = box; + gtk_container_add (GTK_CONTAINER (viewport), box); + gtk_widget_show (box); + + /* if vertical, the buttons can be side by side */ + if (cv->vertical) + { + hbox = gtk_hbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (outer), hbox, 0, 0, 0); + gtk_widget_show (hbox); + } + + /* make the Scroll buttons */ + ((tabview *)cv)->b2 = make_sbutton (cv->vertical ? + GTK_ARROW_UP : GTK_ARROW_LEFT, + tab_scroll_left_up_clicked, + cv); + + ((tabview *)cv)->b1 = make_sbutton (cv->vertical ? + GTK_ARROW_DOWN : GTK_ARROW_RIGHT, + tab_scroll_right_down_clicked, + cv); + + if (hbox) + { + gtk_container_add (GTK_CONTAINER (hbox), ((tabview *)cv)->b2); + gtk_container_add (GTK_CONTAINER (hbox), ((tabview *)cv)->b1); + } else + { + gtk_box_pack_start (GTK_BOX (outer), ((tabview *)cv)->b2, 0, 0, 0); + gtk_box_pack_start (GTK_BOX (outer), ((tabview *)cv)->b1, 0, 0, 0); + } + + button = gtkutil_button (outer, GTK_STOCK_CLOSE, NULL, cv_tabs_xclick_cb, + cv, 0); + gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE); + GTK_WIDGET_UNSET_FLAGS (button, GTK_CAN_FOCUS); + + gtk_container_add (GTK_CONTAINER (cv->box), outer); +} + +static void +cv_tabs_postinit (chanview *cv) +{ +} + +static void +tab_add_sorted (chanview *cv, GtkWidget *box, GtkWidget *tab, chan *ch) +{ + GList *list; + GtkBoxChild *child; + int i = 0; + void *b; + + if (!cv->sorted) + { + gtk_box_pack_start (GTK_BOX (box), tab, 0, 0, 0); + gtk_widget_show (tab); + return; + } + + /* sorting TODO: + * - move tab if renamed (dialogs) */ + + /* userdata, passed to mg_tabs_compare() */ + b = ch->userdata; + + list = GTK_BOX (box)->children; + while (list) + { + child = list->data; + if (!GTK_IS_SEPARATOR (child->widget)) + { + void *a = g_object_get_data (G_OBJECT (child->widget), "u"); + + if (ch->tag == 0 && cv->cb_compare (a, b) > 0) + { + gtk_box_pack_start (GTK_BOX (box), tab, 0, 0, 0); + gtk_box_reorder_child (GTK_BOX (box), tab, i); + gtk_widget_show (tab); + return; + } + } + i++; + list = list->next; + } + + /* append */ + gtk_box_pack_start (GTK_BOX (box), tab, 0, 0, 0); + gtk_box_reorder_child (GTK_BOX (box), tab, i); + gtk_widget_show (tab); +} + +/* remove empty boxes and separators */ + +static void +cv_tabs_prune (chanview *cv) +{ + GList *boxes, *children; + GtkWidget *box, *inner; + GtkBoxChild *child; + int empty; + + inner = ((tabview *)cv)->inner; + boxes = GTK_BOX (inner)->children; + while (boxes) + { + child = boxes->data; + box = child->widget; + boxes = boxes->next; + + /* check if the box is empty (except a vseperator) */ + empty = TRUE; + children = GTK_BOX (box)->children; + while (children) + { + if (!GTK_IS_SEPARATOR (((GtkBoxChild *)children->data)->widget)) + { + empty = FALSE; + break; + } + children = children->next; + } + + if (empty) + gtk_widget_destroy (box); + } +} + +static void +tab_add_real (chanview *cv, GtkWidget *tab, chan *ch) +{ + GList *boxes, *children; + GtkWidget *sep, *box, *inner; + GtkBoxChild *child; + int empty; + + inner = ((tabview *)cv)->inner; + /* see if a family for this tab already exists */ + boxes = GTK_BOX (inner)->children; + while (boxes) + { + child = boxes->data; + box = child->widget; + + if (g_object_get_data (G_OBJECT (box), "f") == ch->family) + { + tab_add_sorted (cv, box, tab, ch); + gtk_widget_queue_resize (inner->parent); + return; + } + + boxes = boxes->next; + + /* check if the box is empty (except a vseperator) */ + empty = TRUE; + children = GTK_BOX (box)->children; + while (children) + { + if (!GTK_IS_SEPARATOR (((GtkBoxChild *)children->data)->widget)) + { + empty = FALSE; + break; + } + children = children->next; + } + + if (empty) + gtk_widget_destroy (box); + } + + /* create a new family box */ + if (cv->vertical) + { + /* vertical */ + box = gtk_vbox_new (FALSE, 0); + sep = gtk_hseparator_new (); + } else + { + /* horiz */ + box = gtk_hbox_new (FALSE, 0); + sep = gtk_vseparator_new (); + } + + gtk_box_pack_end (GTK_BOX (box), sep, 0, 0, 4); + gtk_widget_show (sep); + gtk_box_pack_start (GTK_BOX (inner), box, 0, 0, 0); + g_object_set_data (G_OBJECT (box), "f", ch->family); + gtk_box_pack_start (GTK_BOX (box), tab, 0, 0, 0); + gtk_widget_show (tab); + gtk_widget_show (box); + gtk_widget_queue_resize (inner->parent); +} + +static gboolean +tab_ignore_cb (GtkWidget *widget, GdkEventCrossing *event, gpointer user_data) +{ + return TRUE; +} + +/* called when a tab is clicked (button down) */ + +static void +tab_pressed_cb (GtkToggleButton *tab, chan *ch) +{ + chan *old_tab; + int is_switching = TRUE; + chanview *cv = ch->cv; + + ignore_toggle = TRUE; + /* de-activate the old tab */ + old_tab = cv->focused; + if (old_tab && old_tab->impl) + { + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (old_tab->impl), FALSE); + if (old_tab == ch) + is_switching = FALSE; + } + gtk_toggle_button_set_active (tab, TRUE); + ignore_toggle = FALSE; + cv->focused = ch; + + if (/*tab->active*/is_switching) + /* call the focus callback */ + cv->cb_focus (cv, ch, ch->tag, ch->userdata); +} + +/* called for keyboard tab toggles only */ +static void +tab_toggled_cb (GtkToggleButton *tab, chan *ch) +{ + if (ignore_toggle) + return; + + /* activated a tab via keyboard */ + tab_pressed_cb (tab, ch); +} + +static gboolean +tab_click_cb (GtkWidget *wid, GdkEventButton *event, chan *ch) +{ + return ch->cv->cb_contextmenu (ch->cv, ch, ch->tag, ch->userdata, event); +} + +static void * +cv_tabs_add (chanview *cv, chan *ch, char *name, GtkTreeIter *parent) +{ + GtkWidget *but; + + but = gtk_toggle_button_new_with_label (name); + gtk_widget_set_name (but, "xchat-tab"); + g_object_set_data (G_OBJECT (but), "c", ch); + /* used to trap right-clicks */ + g_signal_connect (G_OBJECT (but), "button_press_event", + G_CALLBACK (tab_click_cb), ch); + /* avoid prelights */ + g_signal_connect (G_OBJECT (but), "enter_notify_event", + G_CALLBACK (tab_ignore_cb), NULL); + g_signal_connect (G_OBJECT (but), "leave_notify_event", + G_CALLBACK (tab_ignore_cb), NULL); + g_signal_connect (G_OBJECT (but), "pressed", + G_CALLBACK (tab_pressed_cb), ch); + /* for keyboard */ + g_signal_connect (G_OBJECT (but), "toggled", + G_CALLBACK (tab_toggled_cb), ch); + g_object_set_data (G_OBJECT (but), "u", ch->userdata); + + tab_add_real (cv, but, ch); + + return but; +} + +/* traverse all the family boxes of tabs + * + * A "group" is basically: + * GtkV/HBox + * `-GtkViewPort + * `-GtkV/HBox (inner box) + * `- GtkBox (family box) + * `- GtkToggleButton + * `- GtkToggleButton + * `- ... + * `- GtkBox + * `- GtkToggleButton + * `- GtkToggleButton + * `- ... + * `- ... + * + * */ + +static int +tab_group_for_each_tab (chanview *cv, + int (*callback) (GtkWidget *tab, int num, int usernum), + int usernum) +{ + GList *tabs; + GList *boxes; + GtkBoxChild *child; + GtkBox *innerbox; + int i; + + innerbox = (GtkBox *) ((tabview *)cv)->inner; + boxes = innerbox->children; + i = 0; + while (boxes) + { + child = boxes->data; + tabs = GTK_BOX (child->widget)->children; + + while (tabs) + { + child = tabs->data; + + if (!GTK_IS_SEPARATOR (child->widget)) + { + if (callback (child->widget, i, usernum) != -1) + return i; + i++; + } + tabs = tabs->next; + } + + boxes = boxes->next; + } + + return i; +} + +static int +tab_check_focus_cb (GtkWidget *tab, int num, int unused) +{ + if (GTK_TOGGLE_BUTTON (tab)->active) + return num; + + return -1; +} + +/* returns the currently focused tab number */ + +static int +tab_group_get_cur_page (chanview *cv) +{ + return tab_group_for_each_tab (cv, tab_check_focus_cb, 0); +} + +static void +cv_tabs_focus (chan *ch) +{ + if (ch->impl) + /* focus the new one (tab_pressed_cb defocuses the old one) */ + tab_pressed_cb (GTK_TOGGLE_BUTTON (ch->impl), ch); +} + +static int +tab_focus_num_cb (GtkWidget *tab, int num, int want) +{ + if (num == want) + { + cv_tabs_focus (g_object_get_data (G_OBJECT (tab), "c")); + return 1; + } + + return -1; +} + +static void +cv_tabs_change_orientation (chanview *cv) +{ + /* cleanup the old one */ + if (cv->func_cleanup) + cv->func_cleanup (cv); + + /* now rebuild a new tabbar or tree */ + cv->func_init (cv); + chanview_populate (cv); +} + +/* switch to the tab number specified */ + +static void +cv_tabs_move_focus (chanview *cv, gboolean relative, int num) +{ + int i, max; + + if (relative) + { + max = cv->size; + i = tab_group_get_cur_page (cv) + num; + /* make it wrap around at both ends */ + if (i < 0) + i = max - 1; + if (i >= max) + i = 0; + tab_group_for_each_tab (cv, tab_focus_num_cb, i); + return; + } + + tab_group_for_each_tab (cv, tab_focus_num_cb, num); +} + +static void +cv_tabs_remove (chan *ch) +{ + gtk_widget_destroy (ch->impl); + ch->impl = NULL; + + cv_tabs_prune (ch->cv); +} + +static void +cv_tabs_move (chan *ch, int delta) +{ + int i, pos = 0; + GList *list; + GtkWidget *parent = ((GtkWidget *)ch->impl)->parent; + + i = 0; + for (list = GTK_BOX (parent)->children; list; list = list->next) + { + GtkBoxChild *child_entry; + + child_entry = list->data; + if (child_entry->widget == ch->impl) + pos = i; + i++; + } + + pos = (pos - delta) % i; + gtk_box_reorder_child (GTK_BOX (parent), ch->impl, pos); +} + +static void +cv_tabs_move_family (chan *ch, int delta) +{ + int i, pos = 0; + GList *list; + GtkWidget *box = NULL; + + /* find position of tab's family */ + i = 0; + for (list = GTK_BOX (((tabview *)ch->cv)->inner)->children; list; list = list->next) + { + GtkBoxChild *child_entry; + void *fam; + + child_entry = list->data; + fam = g_object_get_data (G_OBJECT (child_entry->widget), "f"); + if (fam == ch->family) + { + box = child_entry->widget; + pos = i; + } + i++; + } + + pos = (pos - delta) % i; + gtk_box_reorder_child (GTK_BOX (box->parent), box, pos); +} + +static void +cv_tabs_cleanup (chanview *cv) +{ + if (cv->box) + gtk_widget_destroy (((tabview *)cv)->outer); +} + +static void +cv_tabs_set_color (chan *ch, PangoAttrList *list) +{ + gtk_label_set_attributes (GTK_LABEL (GTK_BIN (ch->impl)->child), list); +} + +static void +cv_tabs_rename (chan *ch, char *name) +{ + PangoAttrList *attr; + GtkWidget *tab = ch->impl; + + attr = gtk_label_get_attributes (GTK_LABEL (GTK_BIN (tab)->child)); + if (attr) + pango_attr_list_ref (attr); + + gtk_button_set_label (GTK_BUTTON (tab), name); + gtk_widget_queue_resize (tab->parent->parent->parent); + + if (attr) + { + gtk_label_set_attributes (GTK_LABEL (GTK_BIN (tab)->child), attr); + pango_attr_list_unref (attr); + } +} + +static gboolean +cv_tabs_is_collapsed (chan *ch) +{ + return FALSE; +} + +static chan * +cv_tabs_get_parent (chan *ch) +{ + return NULL; +} diff --git a/etc/wyatt8740/src/fe-gtk/chanview-tree.c b/etc/wyatt8740/src/fe-gtk/chanview-tree.c new file mode 100644 index 0000000..5373f21 --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/chanview-tree.c @@ -0,0 +1,364 @@ +/* file included in chanview.c */ + +typedef struct +{ + GtkTreeView *tree; + GtkWidget *scrollw; /* scrolledWindow */ +} treeview; + +#include "../common/xchat.h" +#include "../common/xchatc.h" +#include "fe-gtk.h" +#include "maingui.h" + +#include <gdk/gdk.h> +#include <gtk/gtktreeview.h> + +static void /* row-activated, when a row is double clicked */ +cv_tree_activated_cb (GtkTreeView *view, GtkTreePath *path, + GtkTreeViewColumn *column, gpointer data) +{ + if (gtk_tree_view_row_expanded (view, path)) + gtk_tree_view_collapse_row (view, path); + else + gtk_tree_view_expand_row (view, path, FALSE); +} + +static void /* row selected callback */ +cv_tree_sel_cb (GtkTreeSelection *sel, chanview *cv) +{ + GtkTreeModel *model; + GtkTreeIter iter; + chan *ch; + + if (gtk_tree_selection_get_selected (sel, &model, &iter)) + { + gtk_tree_model_get (model, &iter, COL_CHAN, &ch, -1); + + cv->focused = ch; + cv->cb_focus (cv, ch, ch->tag, ch->userdata); + } +} + +static gboolean +cv_tree_click_cb (GtkTreeView *tree, GdkEventButton *event, chanview *cv) +{ + chan *ch; + GtkTreeSelection *sel; + GtkTreePath *path; + GtkTreeIter iter; + int ret = FALSE; + + if (event->button != 3 && event->state == 0) + return FALSE; + + sel = gtk_tree_view_get_selection (tree); + if (gtk_tree_view_get_path_at_pos (tree, event->x, event->y, &path, 0, 0, 0)) + { + if (event->button == 2) + { + gtk_tree_selection_unselect_all (sel); + gtk_tree_selection_select_path (sel, path); + } + if (gtk_tree_model_get_iter (GTK_TREE_MODEL (cv->store), &iter, path)) + { + gtk_tree_model_get (GTK_TREE_MODEL (cv->store), &iter, COL_CHAN, &ch, -1); + ret = cv->cb_contextmenu (cv, ch, ch->tag, ch->userdata, event); + } + gtk_tree_path_free (path); + } + return ret; +} + +static void +cv_tree_init (chanview *cv) +{ + GtkWidget *view, *win; + GtkCellRenderer *renderer; + static const GtkTargetEntry dnd_src_target[] = + { + {"XCHAT_CHANVIEW", GTK_TARGET_SAME_APP, 75 } + }; + static const GtkTargetEntry dnd_dest_target[] = + { + {"XCHAT_USERLIST", GTK_TARGET_SAME_APP, 75 } + }; + + win = gtk_scrolled_window_new (0, 0); + /*gtk_container_set_border_width (GTK_CONTAINER (win), 1);*/ + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (win), + GTK_SHADOW_IN); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (win), + GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); + gtk_container_add (GTK_CONTAINER (cv->box), win); + gtk_widget_show (win); + + view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (cv->store)); + gtk_widget_set_name (view, "xchat-tree"); + if (cv->style) + gtk_widget_set_style (view, cv->style); + /*gtk_widget_modify_base (view, GTK_STATE_NORMAL, &colors[COL_BG]);*/ + GTK_WIDGET_UNSET_FLAGS (view, GTK_CAN_FOCUS); + gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (view), FALSE); +#if GTK_CHECK_VERSION(2,10,0) + if (!(prefs.gui_tweaks & 8)) + gtk_tree_view_set_enable_tree_lines (GTK_TREE_VIEW (view), TRUE); +#endif + gtk_container_add (GTK_CONTAINER (win), view); + + /* icon column */ + if (cv->use_icons) + { + renderer = gtk_cell_renderer_pixbuf_new (); + if (prefs.gui_tweaks & 32) + g_object_set (G_OBJECT (renderer), "ypad", 0, NULL); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), + -1, NULL, renderer, + "pixbuf", COL_PIXBUF, NULL); + } + + /* main column */ + renderer = gtk_cell_renderer_text_new (); + if (prefs.gui_tweaks & 32) + g_object_set (G_OBJECT (renderer), "ypad", 0, NULL); + gtk_cell_renderer_text_set_fixed_height_from_font (GTK_CELL_RENDERER_TEXT (renderer), 1); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), + -1, NULL, renderer, + "text", COL_NAME, "attributes", COL_ATTR, NULL); + + g_signal_connect (G_OBJECT (gtk_tree_view_get_selection (GTK_TREE_VIEW (view))), + "changed", G_CALLBACK (cv_tree_sel_cb), cv); + g_signal_connect (G_OBJECT (view), "button-press-event", + G_CALLBACK (cv_tree_click_cb), cv); + g_signal_connect (G_OBJECT (view), "row-activated", + G_CALLBACK (cv_tree_activated_cb), NULL); + + gtk_drag_dest_set (view, GTK_DEST_DEFAULT_ALL, dnd_dest_target, 1, + GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_LINK); + gtk_drag_source_set (view, GDK_BUTTON1_MASK, dnd_src_target, 1, GDK_ACTION_COPY); + +#ifndef WIN32 + g_signal_connect (G_OBJECT (view), "drag_begin", + G_CALLBACK (mg_drag_begin_cb), NULL); + g_signal_connect (G_OBJECT (view), "drag_drop", + G_CALLBACK (mg_drag_drop_cb), NULL); + g_signal_connect (G_OBJECT (view), "drag_motion", + G_CALLBACK (mg_drag_motion_cb), NULL); + g_signal_connect (G_OBJECT (view), "drag_end", + G_CALLBACK (mg_drag_end_cb), NULL); +#endif + + ((treeview *)cv)->tree = GTK_TREE_VIEW (view); + ((treeview *)cv)->scrollw = win; + gtk_widget_show (view); +} + +static void +cv_tree_postinit (chanview *cv) +{ + gtk_tree_view_expand_all (((treeview *)cv)->tree); +} + +static void * +cv_tree_add (chanview *cv, chan *ch, char *name, GtkTreeIter *parent) +{ + GtkTreePath *path; + + if (parent) + { + /* expand the parent node */ + path = gtk_tree_model_get_path (GTK_TREE_MODEL (cv->store), parent); + if (path) + { + gtk_tree_view_expand_row (((treeview *)cv)->tree, path, FALSE); + gtk_tree_path_free (path); + } + } + + return NULL; +} + +static void +cv_tree_change_orientation (chanview *cv) +{ +} + +static void +cv_tree_focus (chan *ch) +{ + GtkTreeView *tree = ((treeview *)ch->cv)->tree; + GtkTreeModel *model = gtk_tree_view_get_model (tree); + GtkTreePath *path; + GtkTreeIter parent; + GdkRectangle cell_rect; + GdkRectangle vis_rect; + gint dest_y; + + /* expand the parent node */ + if (gtk_tree_model_iter_parent (model, &parent, &ch->iter)) + { + path = gtk_tree_model_get_path (model, &parent); + if (path) + { + /*if (!gtk_tree_view_row_expanded (tree, path)) + { + gtk_tree_path_free (path); + return; + }*/ + gtk_tree_view_expand_row (tree, path, FALSE); + gtk_tree_path_free (path); + } + } + + path = gtk_tree_model_get_path (model, &ch->iter); + if (path) + { + /* This full section does what + * gtk_tree_view_scroll_to_cell (tree, path, NULL, TRUE, 0.5, 0.5); + * does, except it only scrolls the window if the provided cell is + * not visible. Basic algorithm taken from gtktreeview.c */ + + /* obtain information to see if the cell is visible */ + gtk_tree_view_get_background_area (tree, path, NULL, &cell_rect); + gtk_tree_view_get_visible_rect (tree, &vis_rect); + + /* The cordinates aren't offset correctly */ + gtk_tree_view_widget_to_tree_coords( tree, cell_rect.x, cell_rect.y, NULL, &cell_rect.y ); + + /* only need to scroll if out of bounds */ + if (cell_rect.y < vis_rect.y || + cell_rect.y + cell_rect.height > vis_rect.y + vis_rect.height) + { + dest_y = cell_rect.y - ((vis_rect.height - cell_rect.height) * 0.5); + if (dest_y < 0) + dest_y = 0; + gtk_tree_view_scroll_to_point (tree, -1, dest_y); + } + /* theft done, now make it focused like */ + gtk_tree_view_set_cursor (tree, path, NULL, FALSE); + gtk_tree_path_free (path); + } +} + +static void +cv_tree_move_focus (chanview *cv, gboolean relative, int num) +{ + chan *ch; + + if (relative) + { + num += cv_find_number_of_chan (cv, cv->focused); + num %= cv->size; + /* make it wrap around at both ends */ + if (num < 0) + num = cv->size - 1; + } + + ch = cv_find_chan_by_number (cv, num); + if (ch) + cv_tree_focus (ch); +} + +static void +cv_tree_remove (chan *ch) +{ +} + +static void +move_row (chan *ch, int delta, GtkTreeIter *parent) +{ + GtkTreeStore *store = ch->cv->store; + GtkTreeIter *src = &ch->iter; + GtkTreeIter dest = ch->iter; + GtkTreePath *dest_path; + + if (delta < 0) /* down */ + { + if (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &dest)) + gtk_tree_store_swap (store, src, &dest); + else /* move to top */ + gtk_tree_store_move_after (store, src, NULL); + + } else + { + dest_path = gtk_tree_model_get_path (GTK_TREE_MODEL (store), &dest); + if (gtk_tree_path_prev (dest_path)) + { + gtk_tree_model_get_iter (GTK_TREE_MODEL (store), &dest, dest_path); + gtk_tree_store_swap (store, src, &dest); + } else + { /* move to bottom */ + gtk_tree_store_move_before (store, src, NULL); + } + + gtk_tree_path_free (dest_path); + } +} + +static void +cv_tree_move (chan *ch, int delta) +{ + GtkTreeIter parent; + + /* do nothing if this is a server row */ + if (gtk_tree_model_iter_parent (GTK_TREE_MODEL (ch->cv->store), &parent, &ch->iter)) + move_row (ch, delta, &parent); +} + +static void +cv_tree_move_family (chan *ch, int delta) +{ + move_row (ch, delta, NULL); +} + +static void +cv_tree_cleanup (chanview *cv) +{ + if (cv->box) + /* kill the scrolled window */ + gtk_widget_destroy (((treeview *)cv)->scrollw); +} + +static void +cv_tree_set_color (chan *ch, PangoAttrList *list) +{ + /* nothing to do, it's already set in the store */ +} + +static void +cv_tree_rename (chan *ch, char *name) +{ + /* nothing to do, it's already renamed in the store */ +} + +static chan * +cv_tree_get_parent (chan *ch) +{ + chan *parent_ch = NULL; + GtkTreeIter parent; + + if (gtk_tree_model_iter_parent (GTK_TREE_MODEL (ch->cv->store), &parent, &ch->iter)) + { + gtk_tree_model_get (GTK_TREE_MODEL (ch->cv->store), &parent, COL_CHAN, &parent_ch, -1); + } + + return parent_ch; +} + +static gboolean +cv_tree_is_collapsed (chan *ch) +{ + chan *parent = cv_tree_get_parent (ch); + GtkTreePath *path = NULL; + gboolean ret; + + if (parent == NULL) + return FALSE; + + path = gtk_tree_model_get_path (GTK_TREE_MODEL (parent->cv->store), + &parent->iter); + ret = !gtk_tree_view_row_expanded (((treeview *)parent->cv)->tree, path); + gtk_tree_path_free (path); + + return ret; +} diff --git a/etc/wyatt8740/src/fe-gtk/chanview.c b/etc/wyatt8740/src/fe-gtk/chanview.c new file mode 100644 index 0000000..e90c4df --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/chanview.c @@ -0,0 +1,643 @@ +/* abstract channel view: tabs or tree or anything you like */ + +#include <stdlib.h> +#include <string.h> + +#include <gtk/gtk.h> + +#include "chanview.h" +#include "gtkutil.h" + + +/* treeStore columns */ + +#define COL_NAME 0 /* (char *) */ +#define COL_CHAN 1 /* (chan *) */ +#define COL_ATTR 2 /* (PangoAttrList *) */ +#define COL_PIXBUF 3 /* (GdkPixbuf *) */ + +struct _chanview +{ + /* impl scratch area */ + char implscratch[sizeof (void *) * 8]; + + GtkTreeStore *store; + int size; /* number of channels in view */ + + GtkWidget *box; /* the box we destroy when changing implementations */ + GtkStyle *style; /* style used for tree */ + chan *focused; /* currently focused channel */ + int trunc_len; + + /* callbacks */ + void (*cb_focus) (chanview *, chan *, int tag, void *userdata); + void (*cb_xbutton) (chanview *, chan *, int tag, void *userdata); + gboolean (*cb_contextmenu) (chanview *, chan *, int tag, void *userdata, GdkEventButton *); + int (*cb_compare) (void *a, void *b); + + /* impl */ + void (*func_init) (chanview *); + void (*func_postinit) (chanview *); + void *(*func_add) (chanview *, chan *, char *, GtkTreeIter *); + void (*func_move_focus) (chanview *, gboolean, int); + void (*func_change_orientation) (chanview *); + void (*func_remove) (chan *); + void (*func_move) (chan *, int delta); + void (*func_move_family) (chan *, int delta); + void (*func_focus) (chan *); + void (*func_set_color) (chan *, PangoAttrList *); + void (*func_rename) (chan *, char *); + gboolean (*func_is_collapsed) (chan *); + chan *(*func_get_parent) (chan *); + void (*func_cleanup) (chanview *); + + unsigned int sorted:1; + unsigned int vertical:1; + unsigned int use_icons:1; +}; + +struct _chan +{ + chanview *cv; /* our owner */ + GtkTreeIter iter; + void *userdata; /* session * */ + void *family; /* server * or null */ + void *impl; /* togglebutton or null */ + GdkPixbuf *icon; + short allow_closure; /* allow it to be closed when it still has children? */ + short tag; +}; + +static chan *cv_find_chan_by_number (chanview *cv, int num); +static int cv_find_number_of_chan (chanview *cv, chan *find_ch); + + +/* ======= TABS ======= */ + +#include "chanview-tabs.c" + + +/* ======= TREE ======= */ + +#include "chanview-tree.c" + + +/* ==== ABSTRACT CHANVIEW ==== */ + +static char * +truncate_tab_name (char *name, int max) +{ + char *buf; + + if (max > 2 && g_utf8_strlen (name, -1) > max) + { + /* truncate long channel names */ + buf = malloc (strlen (name) + 4); + strcpy (buf, name); + g_utf8_offset_to_pointer (buf, max)[0] = 0; + strcat (buf, ".."); + return buf; + } + + return name; +} + +/* iterate through a model, into 1 depth of children */ + +static void +model_foreach_1 (GtkTreeModel *model, void (*func)(void *, GtkTreeIter *), + void *userdata) +{ + GtkTreeIter iter, inner; + + if (gtk_tree_model_get_iter_first (model, &iter)) + { + do + { + func (userdata, &iter); + if (gtk_tree_model_iter_children (model, &inner, &iter)) + { + do + func (userdata, &inner); + while (gtk_tree_model_iter_next (model, &inner)); + } + } + while (gtk_tree_model_iter_next (model, &iter)); + } +} + +static void +chanview_pop_cb (chanview *cv, GtkTreeIter *iter) +{ + chan *ch; + char *name; + PangoAttrList *attr; + + gtk_tree_model_get (GTK_TREE_MODEL (cv->store), iter, + COL_NAME, &name, COL_CHAN, &ch, COL_ATTR, &attr, -1); + ch->impl = cv->func_add (cv, ch, name, NULL); + if (attr) + { + cv->func_set_color (ch, attr); + pango_attr_list_unref (attr); + } + g_free (name); +} + +static void +chanview_populate (chanview *cv) +{ + model_foreach_1 (GTK_TREE_MODEL (cv->store), (void *)chanview_pop_cb, cv); +} + +void +chanview_set_impl (chanview *cv, int type) +{ + /* cleanup the old one */ + if (cv->func_cleanup) + cv->func_cleanup (cv); + + switch (type) + { + case 0: + cv->func_init = cv_tabs_init; + cv->func_postinit = cv_tabs_postinit; + cv->func_add = cv_tabs_add; + cv->func_move_focus = cv_tabs_move_focus; + cv->func_change_orientation = cv_tabs_change_orientation; + cv->func_remove = cv_tabs_remove; + cv->func_move = cv_tabs_move; + cv->func_move_family = cv_tabs_move_family; + cv->func_focus = cv_tabs_focus; + cv->func_set_color = cv_tabs_set_color; + cv->func_rename = cv_tabs_rename; + cv->func_is_collapsed = cv_tabs_is_collapsed; + cv->func_get_parent = cv_tabs_get_parent; + cv->func_cleanup = cv_tabs_cleanup; + break; + + default: + cv->func_init = cv_tree_init; + cv->func_postinit = cv_tree_postinit; + cv->func_add = cv_tree_add; + cv->func_move_focus = cv_tree_move_focus; + cv->func_change_orientation = cv_tree_change_orientation; + cv->func_remove = cv_tree_remove; + cv->func_move = cv_tree_move; + cv->func_move_family = cv_tree_move_family; + cv->func_focus = cv_tree_focus; + cv->func_set_color = cv_tree_set_color; + cv->func_rename = cv_tree_rename; + cv->func_is_collapsed = cv_tree_is_collapsed; + cv->func_get_parent = cv_tree_get_parent; + cv->func_cleanup = cv_tree_cleanup; + break; + } + + /* now rebuild a new tabbar or tree */ + cv->func_init (cv); + + chanview_populate (cv); + + cv->func_postinit (cv); + + /* force re-focus */ + if (cv->focused) + cv->func_focus (cv->focused); +} + +static void +chanview_free_ch (chanview *cv, GtkTreeIter *iter) +{ + chan *ch; + + gtk_tree_model_get (GTK_TREE_MODEL (cv->store), iter, COL_CHAN, &ch, -1); + free (ch); +} + +static void +chanview_destroy_store (chanview *cv) /* free every (chan *) in the store */ +{ + model_foreach_1 (GTK_TREE_MODEL (cv->store), (void *)chanview_free_ch, cv); + g_object_unref (cv->store); +} + +static void +chanview_destroy (chanview *cv) +{ + if (cv->func_cleanup) + cv->func_cleanup (cv); + + if (cv->box) + gtk_widget_destroy (cv->box); + + chanview_destroy_store (cv); + free (cv); +} + +static void +chanview_box_destroy_cb (GtkWidget *box, chanview *cv) +{ + cv->box = NULL; + chanview_destroy (cv); +} + +chanview * +chanview_new (int type, int trunc_len, gboolean sort, gboolean use_icons, + GtkStyle *style) +{ + chanview *cv; + + cv = calloc (1, sizeof (chanview)); + cv->store = gtk_tree_store_new (4, G_TYPE_STRING, G_TYPE_POINTER, + PANGO_TYPE_ATTR_LIST, GDK_TYPE_PIXBUF); + cv->style = style; + cv->box = gtk_hbox_new (0, 0); + cv->trunc_len = trunc_len; + cv->sorted = sort; + cv->use_icons = use_icons; + gtk_widget_show (cv->box); + chanview_set_impl (cv, type); + + g_signal_connect (G_OBJECT (cv->box), "destroy", + G_CALLBACK (chanview_box_destroy_cb), cv); + + return cv; +} + +/* too lazy for signals */ + +void +chanview_set_callbacks (chanview *cv, + void (*cb_focus) (chanview *, chan *, int tag, void *userdata), + void (*cb_xbutton) (chanview *, chan *, int tag, void *userdata), + gboolean (*cb_contextmenu) (chanview *, chan *, int tag, void *userdata, GdkEventButton *), + int (*cb_compare) (void *a, void *b)) +{ + cv->cb_focus = cb_focus; + cv->cb_xbutton = cb_xbutton; + cv->cb_contextmenu = cb_contextmenu; + cv->cb_compare = cb_compare; +} + +/* find a place to insert this new entry, based on the compare function */ + +static void +chanview_insert_sorted (chanview *cv, GtkTreeIter *add_iter, GtkTreeIter *parent, void *ud) +{ + GtkTreeIter iter; + chan *ch; + + if (cv->sorted && gtk_tree_model_iter_children (GTK_TREE_MODEL (cv->store), &iter, parent)) + { + do + { + gtk_tree_model_get (GTK_TREE_MODEL (cv->store), &iter, COL_CHAN, &ch, -1); + if (ch->tag == 0 && cv->cb_compare (ch->userdata, ud) > 0) + { + gtk_tree_store_insert_before (cv->store, add_iter, parent, &iter); + return; + } + } + while (gtk_tree_model_iter_next (GTK_TREE_MODEL (cv->store), &iter)); + } + + gtk_tree_store_append (cv->store, add_iter, parent); +} + +/* find a parent node with the same "family" pointer (i.e. the Server tab) */ + +static int +chanview_find_parent (chanview *cv, void *family, GtkTreeIter *search_iter, chan *avoid) +{ + chan *search_ch; + + /* find this new row's parent, if any */ + if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (cv->store), search_iter)) + { + do + { + gtk_tree_model_get (GTK_TREE_MODEL (cv->store), search_iter, + COL_CHAN, &search_ch, -1); + if (family == search_ch->family && search_ch != avoid /*&& + gtk_tree_store_iter_depth (cv->store, search_iter) == 0*/) + return TRUE; + } + while (gtk_tree_model_iter_next (GTK_TREE_MODEL (cv->store), search_iter)); + } + + return FALSE; +} + +static chan * +chanview_add_real (chanview *cv, char *name, void *family, void *userdata, + gboolean allow_closure, int tag, GdkPixbuf *icon, + chan *ch, chan *avoid) +{ + GtkTreeIter parent_iter; + GtkTreeIter iter; + gboolean has_parent = FALSE; + + if (chanview_find_parent (cv, family, &parent_iter, avoid)) + { + chanview_insert_sorted (cv, &iter, &parent_iter, userdata); + has_parent = TRUE; + } else + { + gtk_tree_store_append (cv->store, &iter, NULL); + } + + if (!ch) + { + ch = calloc (1, sizeof (chan)); + ch->userdata = userdata; + ch->family = family; + ch->cv = cv; + ch->allow_closure = allow_closure; + ch->tag = tag; + ch->icon = icon; + } + memcpy (&(ch->iter), &iter, sizeof (iter)); + + gtk_tree_store_set (cv->store, &iter, COL_NAME, name, COL_CHAN, ch, + COL_PIXBUF, icon, -1); + + cv->size++; + if (!has_parent) + ch->impl = cv->func_add (cv, ch, name, NULL); + else + ch->impl = cv->func_add (cv, ch, name, &parent_iter); + + return ch; +} + +chan * +chanview_add (chanview *cv, char *name, void *family, void *userdata, gboolean allow_closure, int tag, GdkPixbuf *icon) +{ + char *new_name; + chan *ret; + + new_name = truncate_tab_name (name, cv->trunc_len); + + ret = chanview_add_real (cv, new_name, family, userdata, allow_closure, tag, icon, NULL, NULL); + + if (new_name != name) + free (new_name); + + return ret; +} + +int +chanview_get_size (chanview *cv) +{ + return cv->size; +} + +GtkWidget * +chanview_get_box (chanview *cv) +{ + return cv->box; +} + +void +chanview_move_focus (chanview *cv, gboolean relative, int num) +{ + cv->func_move_focus (cv, relative, num); +} + +GtkOrientation +chanview_get_orientation (chanview *cv) +{ + return (cv->vertical ? GTK_ORIENTATION_VERTICAL : GTK_ORIENTATION_HORIZONTAL); +} + +void +chanview_set_orientation (chanview *cv, gboolean vertical) +{ + if (vertical != cv->vertical) + { + cv->vertical = vertical; + cv->func_change_orientation (cv); + } +} + +int +chan_get_tag (chan *ch) +{ + return ch->tag; +} + +void * +chan_get_userdata (chan *ch) +{ + return ch->userdata; +} + +void +chan_focus (chan *ch) +{ + if (ch->cv->focused == ch) + return; + + ch->cv->func_focus (ch); +} + +void +chan_move (chan *ch, int delta) +{ + ch->cv->func_move (ch, delta); +} + +void +chan_move_family (chan *ch, int delta) +{ + ch->cv->func_move_family (ch, delta); +} + +void +chan_set_color (chan *ch, PangoAttrList *list) +{ + gtk_tree_store_set (ch->cv->store, &ch->iter, COL_ATTR, list, -1); + ch->cv->func_set_color (ch, list); +} + +void +chan_rename (chan *ch, char *name, int trunc_len) +{ + char *new_name; + + new_name = truncate_tab_name (name, trunc_len); + + gtk_tree_store_set (ch->cv->store, &ch->iter, COL_NAME, new_name, -1); + ch->cv->func_rename (ch, new_name); + ch->cv->trunc_len = trunc_len; + + if (new_name != name) + free (new_name); +} + +/* this thing is overly complicated */ + +static int +cv_find_number_of_chan (chanview *cv, chan *find_ch) +{ + GtkTreeIter iter, inner; + chan *ch; + int i = 0; + + if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (cv->store), &iter)) + { + do + { + gtk_tree_model_get (GTK_TREE_MODEL (cv->store), &iter, COL_CHAN, &ch, -1); + if (ch == find_ch) + return i; + i++; + + if (gtk_tree_model_iter_children (GTK_TREE_MODEL (cv->store), &inner, &iter)) + { + do + { + gtk_tree_model_get (GTK_TREE_MODEL (cv->store), &inner, COL_CHAN, &ch, -1); + if (ch == find_ch) + return i; + i++; + } + while (gtk_tree_model_iter_next (GTK_TREE_MODEL (cv->store), &inner)); + } + } + while (gtk_tree_model_iter_next (GTK_TREE_MODEL (cv->store), &iter)); + } + + return 0; /* WARNING */ +} + +/* this thing is overly complicated too */ + +static chan * +cv_find_chan_by_number (chanview *cv, int num) +{ + GtkTreeIter iter, inner; + chan *ch; + int i = 0; + + if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (cv->store), &iter)) + { + do + { + if (i == num) + { + gtk_tree_model_get (GTK_TREE_MODEL (cv->store), &iter, COL_CHAN, &ch, -1); + return ch; + } + i++; + + if (gtk_tree_model_iter_children (GTK_TREE_MODEL (cv->store), &inner, &iter)) + { + do + { + if (i == num) + { + gtk_tree_model_get (GTK_TREE_MODEL (cv->store), &inner, COL_CHAN, &ch, -1); + return ch; + } + i++; + } + while (gtk_tree_model_iter_next (GTK_TREE_MODEL (cv->store), &inner)); + } + } + while (gtk_tree_model_iter_next (GTK_TREE_MODEL (cv->store), &iter)); + } + + return NULL; +} + +static void +chan_emancipate_children (chan *ch) +{ + char *name; + chan *childch; + GtkTreeIter childiter; + PangoAttrList *attr; + + while (gtk_tree_model_iter_children (GTK_TREE_MODEL (ch->cv->store), &childiter, &ch->iter)) + { + /* remove and re-add all the children, but avoid using "ch" as parent */ + gtk_tree_model_get (GTK_TREE_MODEL (ch->cv->store), &childiter, + COL_NAME, &name, COL_CHAN, &childch, COL_ATTR, &attr, -1); + ch->cv->func_remove (childch); + gtk_tree_store_remove (ch->cv->store, &childiter); + ch->cv->size--; + chanview_add_real (childch->cv, name, childch->family, childch->userdata, childch->allow_closure, childch->tag, childch->icon, childch, ch); + if (attr) + { + childch->cv->func_set_color (childch, attr); + pango_attr_list_unref (attr); + } + g_free (name); + } +} + +gboolean +chan_remove (chan *ch, gboolean force) +{ + chan *new_ch; + int i, num; + extern int xchat_is_quitting; + + if (xchat_is_quitting) /* avoid lots of looping on exit */ + return TRUE; + + /* is this ch allowed to be closed while still having children? */ + if (!force && + gtk_tree_model_iter_has_child (GTK_TREE_MODEL (ch->cv->store), &ch->iter) && + !ch->allow_closure) + return FALSE; + + chan_emancipate_children (ch); + ch->cv->func_remove (ch); + + /* is it the focused one? */ + if (ch->cv->focused == ch) + { + ch->cv->focused = NULL; + + /* try to move the focus to some other valid channel */ + num = cv_find_number_of_chan (ch->cv, ch); + /* move to the one left of the closing tab */ + new_ch = cv_find_chan_by_number (ch->cv, num - 1); + if (new_ch && new_ch != ch) + { + chan_focus (new_ch); /* this'll will set ch->cv->focused for us too */ + } else + { + /* if it fails, try focus from tab 0 and up */ + for (i = 0; i < ch->cv->size; i++) + { + new_ch = cv_find_chan_by_number (ch->cv, i); + if (new_ch && new_ch != ch) + { + chan_focus (new_ch); /* this'll will set ch->cv->focused for us too */ + break; + } + } + } + } + + ch->cv->size--; + gtk_tree_store_remove (ch->cv->store, &ch->iter); + free (ch); + return TRUE; +} + +gboolean +chan_is_collapsed (chan *ch) +{ + return ch->cv->func_is_collapsed (ch); +} + +chan * +chan_get_parent (chan *ch) +{ + return ch->cv->func_get_parent (ch); +} diff --git a/etc/wyatt8740/src/fe-gtk/chanview.h b/etc/wyatt8740/src/fe-gtk/chanview.h new file mode 100644 index 0000000..75b5ef1 --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/chanview.h @@ -0,0 +1,31 @@ +typedef struct _chanview chanview; +typedef struct _chan chan; + +chanview *chanview_new (int type, int trunc_len, gboolean sort, gboolean use_icons, GtkStyle *style); +void chanview_set_callbacks (chanview *cv, + void (*cb_focus) (chanview *, chan *, int tag, void *userdata), + void (*cb_xbutton) (chanview *, chan *, int tag, void *userdata), + gboolean (*cb_contextmenu) (chanview *, chan *, int tag, void *userdata, GdkEventButton *), + int (*cb_compare) (void *a, void *b)); +void chanview_set_impl (chanview *cv, int type); +chan *chanview_add (chanview *cv, char *name, void *family, void *userdata, gboolean allow_closure, int tag, GdkPixbuf *icon); +int chanview_get_size (chanview *cv); +GtkWidget *chanview_get_box (chanview *cv); +void chanview_move_focus (chanview *cv, gboolean relative, int num); +GtkOrientation chanview_get_orientation (chanview *cv); +void chanview_set_orientation (chanview *cv, gboolean vertical); + +int chan_get_tag (chan *ch); +void *chan_get_userdata (chan *ch); +void chan_focus (chan *ch); +void chan_move (chan *ch, int delta); +void chan_move_family (chan *ch, int delta); +void chan_set_color (chan *ch, PangoAttrList *list); +void chan_rename (chan *ch, char *new_name, int trunc_len); +gboolean chan_remove (chan *ch, gboolean force); +gboolean chan_is_collapsed (chan *ch); +chan * chan_get_parent (chan *ch); + +#define FOCUS_NEW_ALL 1 +#define FOCUS_NEW_ONLY_ASKED 2 +#define FOCUS_NEW_NONE 0 diff --git a/etc/wyatt8740/src/fe-gtk/custom-list.c b/etc/wyatt8740/src/fe-gtk/custom-list.c new file mode 100644 index 0000000..ac20e0f --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/custom-list.c @@ -0,0 +1,753 @@ +#include <string.h> +#include <stdlib.h> +#include "custom-list.h" + +/* indent -i3 -ci3 -ut -ts3 -bli0 -c0 custom-list.c */ + +/* boring declarations of local functions */ + +static void custom_list_init (CustomList * pkg_tree); + +static void custom_list_class_init (CustomListClass * klass); + +static void custom_list_tree_model_init (GtkTreeModelIface * iface); + +static void custom_list_finalize (GObject * object); + +static GtkTreeModelFlags custom_list_get_flags (GtkTreeModel * tree_model); + +static gint custom_list_get_n_columns (GtkTreeModel * tree_model); + +static GType custom_list_get_column_type (GtkTreeModel * tree_model, + gint index); + +static gboolean custom_list_get_iter (GtkTreeModel * tree_model, + GtkTreeIter * iter, GtkTreePath * path); + +static GtkTreePath *custom_list_get_path (GtkTreeModel * tree_model, + GtkTreeIter * iter); + +static void custom_list_get_value (GtkTreeModel * tree_model, + GtkTreeIter * iter, + gint column, GValue * value); + +static gboolean custom_list_iter_next (GtkTreeModel * tree_model, + GtkTreeIter * iter); + +static gboolean custom_list_iter_children (GtkTreeModel * tree_model, + GtkTreeIter * iter, + GtkTreeIter * parent); + +static gboolean custom_list_iter_has_child (GtkTreeModel * tree_model, + GtkTreeIter * iter); + +static gint custom_list_iter_n_children (GtkTreeModel * tree_model, + GtkTreeIter * iter); + +static gboolean custom_list_iter_nth_child (GtkTreeModel * tree_model, + GtkTreeIter * iter, + GtkTreeIter * parent, gint n); + +static gboolean custom_list_iter_parent (GtkTreeModel * tree_model, + GtkTreeIter * iter, + GtkTreeIter * child); + + /* -- GtkTreeSortable interface functions -- */ + +static gboolean custom_list_sortable_get_sort_column_id (GtkTreeSortable * + sortable, + gint * sort_col_id, + GtkSortType * order); + +static void custom_list_sortable_set_sort_column_id (GtkTreeSortable * + sortable, + gint sort_col_id, + GtkSortType order); + +static void custom_list_sortable_set_sort_func (GtkTreeSortable * sortable, + gint sort_col_id, + GtkTreeIterCompareFunc + sort_func, gpointer user_data, + GtkDestroyNotify + destroy_func); + +static void custom_list_sortable_set_default_sort_func (GtkTreeSortable * + sortable, + GtkTreeIterCompareFunc + sort_func, + gpointer user_data, + GtkDestroyNotify + destroy_func); + +static gboolean custom_list_sortable_has_default_sort_func (GtkTreeSortable * + sortable); + + + +static GObjectClass *parent_class = NULL; /* GObject stuff - nothing to worry about */ + + +static void +custom_list_sortable_init (GtkTreeSortableIface * iface) +{ + iface->get_sort_column_id = custom_list_sortable_get_sort_column_id; + iface->set_sort_column_id = custom_list_sortable_set_sort_column_id; + iface->set_sort_func = custom_list_sortable_set_sort_func; /* NOT SUPPORTED */ + iface->set_default_sort_func = custom_list_sortable_set_default_sort_func; /* NOT SUPPORTED */ + iface->has_default_sort_func = custom_list_sortable_has_default_sort_func; /* NOT SUPPORTED */ +} + +/***************************************************************************** + * + * custom_list_get_type: here we register our new type and its interfaces + * with the type system. If you want to implement + * additional interfaces like GtkTreeSortable, you + * will need to do it here. + * + *****************************************************************************/ + +static GType +custom_list_get_type (void) +{ + static GType custom_list_type = 0; + + if (custom_list_type) + return custom_list_type; + + /* Some boilerplate type registration stuff */ + if (1) + { + static const GTypeInfo custom_list_info = { + sizeof (CustomListClass), + NULL, /* base_init */ + NULL, /* base_finalize */ + (GClassInitFunc) custom_list_class_init, + NULL, /* class finalize */ + NULL, /* class_data */ + sizeof (CustomList), + 0, /* n_preallocs */ + (GInstanceInitFunc) custom_list_init + }; + + custom_list_type = + g_type_register_static (G_TYPE_OBJECT, "CustomList", + &custom_list_info, (GTypeFlags) 0); + } + + /* Here we register our GtkTreeModel interface with the type system */ + if (1) + { + static const GInterfaceInfo tree_model_info = { + (GInterfaceInitFunc) custom_list_tree_model_init, + NULL, + NULL + }; + + g_type_add_interface_static (custom_list_type, GTK_TYPE_TREE_MODEL, + &tree_model_info); + } + + /* Add GtkTreeSortable interface */ + if (1) + { + static const GInterfaceInfo tree_sortable_info = { + (GInterfaceInitFunc) custom_list_sortable_init, + NULL, + NULL + }; + + g_type_add_interface_static (custom_list_type, + GTK_TYPE_TREE_SORTABLE, + &tree_sortable_info); + } + + return custom_list_type; +} + +/***************************************************************************** + * + * custom_list_class_init: more boilerplate GObject/GType stuff. + * Init callback for the type system, + * called once when our new class is created. + * + *****************************************************************************/ + +static void +custom_list_class_init (CustomListClass * klass) +{ + GObjectClass *object_class; + + parent_class = (GObjectClass *) g_type_class_peek_parent (klass); + object_class = (GObjectClass *) klass; + + object_class->finalize = custom_list_finalize; +} + +/***************************************************************************** + * + * custom_list_tree_model_init: init callback for the interface registration + * in custom_list_get_type. Here we override + * the GtkTreeModel interface functions that + * we implement. + * + *****************************************************************************/ + +static void +custom_list_tree_model_init (GtkTreeModelIface * iface) +{ + iface->get_flags = custom_list_get_flags; + iface->get_n_columns = custom_list_get_n_columns; + iface->get_column_type = custom_list_get_column_type; + iface->get_iter = custom_list_get_iter; + iface->get_path = custom_list_get_path; + iface->get_value = custom_list_get_value; + iface->iter_next = custom_list_iter_next; + iface->iter_children = custom_list_iter_children; + iface->iter_has_child = custom_list_iter_has_child; + iface->iter_n_children = custom_list_iter_n_children; + iface->iter_nth_child = custom_list_iter_nth_child; + iface->iter_parent = custom_list_iter_parent; +} + + +/***************************************************************************** + * + * custom_list_init: this is called everytime a new custom list object + * instance is created (we do that in custom_list_new). + * Initialise the list structure's fields here. + * + *****************************************************************************/ + +static void +custom_list_init (CustomList * custom_list) +{ + custom_list->n_columns = CUSTOM_LIST_N_COLUMNS; + + custom_list->column_types[0] = G_TYPE_STRING; /* CUSTOM_LIST_COL_NAME */ + custom_list->column_types[1] = G_TYPE_UINT; /* CUSTOM_LIST_COL_USERS */ + custom_list->column_types[2] = G_TYPE_STRING; /* CUSTOM_LIST_COL_TOPIC */ + + custom_list->num_rows = 0; + custom_list->num_alloc = 0; + custom_list->rows = NULL; + + custom_list->sort_id = SORT_ID_CHANNEL; + custom_list->sort_order = GTK_SORT_ASCENDING; +} + + +/***************************************************************************** + * + * custom_list_finalize: this is called just before a custom list is + * destroyed. Free dynamically allocated memory here. + * + *****************************************************************************/ + +static void +custom_list_finalize (GObject * object) +{ + custom_list_clear (CUSTOM_LIST (object)); + + /* must chain up - finalize parent */ + (*parent_class->finalize) (object); +} + + +/***************************************************************************** + * + * custom_list_get_flags: tells the rest of the world whether our tree model + * has any special characteristics. In our case, + * we have a list model (instead of a tree), and each + * tree iter is valid as long as the row in question + * exists, as it only contains a pointer to our struct. + * + *****************************************************************************/ + +static GtkTreeModelFlags +custom_list_get_flags (GtkTreeModel * tree_model) +{ + return (GTK_TREE_MODEL_LIST_ONLY /*| GTK_TREE_MODEL_ITERS_PERSIST */ ); +} + + +/***************************************************************************** + * + * custom_list_get_n_columns: tells the rest of the world how many data + * columns we export via the tree model interface + * + *****************************************************************************/ + +static gint +custom_list_get_n_columns (GtkTreeModel * tree_model) +{ + return 3;/*CUSTOM_LIST (tree_model)->n_columns;*/ +} + + +/***************************************************************************** + * + * custom_list_get_column_type: tells the rest of the world which type of + * data an exported model column contains + * + *****************************************************************************/ + +static GType +custom_list_get_column_type (GtkTreeModel * tree_model, gint index) +{ + return CUSTOM_LIST (tree_model)->column_types[index]; +} + + +/***************************************************************************** + * + * custom_list_get_iter: converts a tree path (physical position) into a + * tree iter structure (the content of the iter + * fields will only be used internally by our model). + * We simply store a pointer to our chanlistrow + * structure that represents that row in the tree iter. + * + *****************************************************************************/ + +static gboolean +custom_list_get_iter (GtkTreeModel * tree_model, + GtkTreeIter * iter, GtkTreePath * path) +{ + CustomList *custom_list = CUSTOM_LIST (tree_model); + chanlistrow *record; + gint n; + + n = gtk_tree_path_get_indices (path)[0]; + if (n >= custom_list->num_rows || n < 0) + return FALSE; + + record = custom_list->rows[n]; + + /* We simply store a pointer to our custom record in the iter */ + iter->user_data = record; + + return TRUE; +} + + +/***************************************************************************** + * + * custom_list_get_path: converts a tree iter into a tree path (ie. the + * physical position of that row in the list). + * + *****************************************************************************/ + +static GtkTreePath * +custom_list_get_path (GtkTreeModel * tree_model, GtkTreeIter * iter) +{ + GtkTreePath *path; + chanlistrow *record; + + record = (chanlistrow *) iter->user_data; + + path = gtk_tree_path_new (); + gtk_tree_path_append_index (path, record->pos); + + return path; +} + + +/***************************************************************************** + * + * custom_list_get_value: Returns a row's exported data columns + * (_get_value is what gtk_tree_model_get uses) + * + *****************************************************************************/ + +static void +custom_list_get_value (GtkTreeModel * tree_model, + GtkTreeIter * iter, gint column, GValue * value) +{ + chanlistrow *record; + CustomList *custom_list = CUSTOM_LIST (tree_model); + + if (custom_list->num_rows == 0) + return; + + g_value_init (value, custom_list->column_types[column]); + + record = (chanlistrow *) iter->user_data; + + switch (column) + { + case CUSTOM_LIST_COL_NAME: + g_value_set_static_string (value, GET_CHAN (record)); + break; + + case CUSTOM_LIST_COL_USERS: + g_value_set_uint (value, record->users); + break; + + case CUSTOM_LIST_COL_TOPIC: + g_value_set_static_string (value, record->topic); + break; + } +} + + +/***************************************************************************** + * + * custom_list_iter_next: Takes an iter structure and sets it to point + * to the next row. + * + *****************************************************************************/ + +static gboolean +custom_list_iter_next (GtkTreeModel * tree_model, GtkTreeIter * iter) +{ + chanlistrow *record, *nextrecord; + CustomList *custom_list = CUSTOM_LIST (tree_model); + + record = (chanlistrow *) iter->user_data; + + /* Is this the last record in the list? */ + if ((record->pos + 1) >= custom_list->num_rows) + return FALSE; + + nextrecord = custom_list->rows[(record->pos + 1)]; + + g_assert (nextrecord != NULL); + g_assert (nextrecord->pos == (record->pos + 1)); + + iter->user_data = nextrecord; + + return TRUE; +} + + +/***************************************************************************** + * + * custom_list_iter_children: Returns TRUE or FALSE depending on whether + * the row specified by 'parent' has any children. + * If it has children, then 'iter' is set to + * point to the first child. Special case: if + * 'parent' is NULL, then the first top-level + * row should be returned if it exists. + * + *****************************************************************************/ + +static gboolean +custom_list_iter_children (GtkTreeModel * tree_model, + GtkTreeIter * iter, GtkTreeIter * parent) +{ + CustomList *custom_list = CUSTOM_LIST (tree_model); + + /* this is a list, nodes have no children */ + if (parent) + return FALSE; + + /* parent == NULL is a special case; we need to return the first top-level row */ + /* No rows => no first row */ + if (custom_list->num_rows == 0) + return FALSE; + + /* Set iter to first item in list */ + iter->user_data = custom_list->rows[0]; + + return TRUE; +} + + +/***************************************************************************** + * + * custom_list_iter_has_child: Returns TRUE or FALSE depending on whether + * the row specified by 'iter' has any children. + * We only have a list and thus no children. + * + *****************************************************************************/ + +static gboolean +custom_list_iter_has_child (GtkTreeModel * tree_model, GtkTreeIter * iter) +{ + return FALSE; +} + + +/***************************************************************************** + * + * custom_list_iter_n_children: Returns the number of children the row + * specified by 'iter' has. This is usually 0, + * as we only have a list and thus do not have + * any children to any rows. A special case is + * when 'iter' is NULL, in which case we need + * to return the number of top-level nodes, + * ie. the number of rows in our list. + * + *****************************************************************************/ + +static gint +custom_list_iter_n_children (GtkTreeModel * tree_model, GtkTreeIter * iter) +{ + CustomList *custom_list = CUSTOM_LIST (tree_model); + + /* special case: if iter == NULL, return number of top-level rows */ + if (!iter) + return custom_list->num_rows; + + return 0; /* otherwise, this is easy again for a list */ +} + + +/***************************************************************************** + * + * custom_list_iter_nth_child: If the row specified by 'parent' has any + * children, set 'iter' to the n-th child and + * return TRUE if it exists, otherwise FALSE. + * A special case is when 'parent' is NULL, in + * which case we need to set 'iter' to the n-th + * row if it exists. + * + *****************************************************************************/ + +static gboolean +custom_list_iter_nth_child (GtkTreeModel * tree_model, + GtkTreeIter * iter, GtkTreeIter * parent, gint n) +{ + CustomList *custom_list = CUSTOM_LIST (tree_model); + + /* a list has only top-level rows */ + if (parent) + return FALSE; + + /* special case: if parent == NULL, set iter to n-th top-level row */ + if (n >= custom_list->num_rows) + return FALSE; + + iter->user_data = custom_list->rows[n]; + return TRUE; +} + + +/***************************************************************************** + * + * custom_list_iter_parent: Point 'iter' to the parent node of 'child'. As + * we have a list and thus no children and no + * parents of children, we can just return FALSE. + * + *****************************************************************************/ + +static gboolean +custom_list_iter_parent (GtkTreeModel * tree_model, + GtkTreeIter * iter, GtkTreeIter * child) +{ + return FALSE; +} + +static gboolean +custom_list_sortable_get_sort_column_id (GtkTreeSortable * sortable, + gint * sort_col_id, + GtkSortType * order) +{ + CustomList *custom_list = CUSTOM_LIST (sortable); + + if (sort_col_id) + *sort_col_id = custom_list->sort_id; + + if (order) + *order = custom_list->sort_order; + + return TRUE; +} + + +static void +custom_list_sortable_set_sort_column_id (GtkTreeSortable * sortable, + gint sort_col_id, GtkSortType order) +{ + CustomList *custom_list = CUSTOM_LIST (sortable); + + if (custom_list->sort_id == sort_col_id + && custom_list->sort_order == order) + return; + + custom_list->sort_id = sort_col_id; + custom_list->sort_order = order; + + custom_list_resort (custom_list); + + /* emit "sort-column-changed" signal to tell any tree views + * that the sort column has changed (so the little arrow + * in the column header of the sort column is drawn + * in the right column) */ + + gtk_tree_sortable_sort_column_changed (sortable); +} + +static void +custom_list_sortable_set_sort_func (GtkTreeSortable * sortable, + gint sort_col_id, + GtkTreeIterCompareFunc sort_func, + gpointer user_data, + GtkDestroyNotify destroy_func) +{ +} + +static void +custom_list_sortable_set_default_sort_func (GtkTreeSortable * sortable, + GtkTreeIterCompareFunc sort_func, + gpointer user_data, + GtkDestroyNotify destroy_func) +{ +} + +static gboolean +custom_list_sortable_has_default_sort_func (GtkTreeSortable * sortable) +{ + return FALSE; +} + +/* fast as possible compare func for sorting. + TODO: If fast enough, use a unicode collation key and strcmp. */ + +#define TOSML(c) (((c) >= 'A' && (c) <= 'Z') ? (c) - 'A' + 'a' : (c)) + +static inline int +fast_ascii_stricmp (const char *s1, const char *s2) +{ + int c1, c2; + + while (*s1 && *s2) + { + c1 = (int) (unsigned char) TOSML (*s1); + c2 = (int) (unsigned char) TOSML (*s2); + if (c1 != c2) + return (c1 - c2); + s1++; + s2++; + } + + return (((int) (unsigned char) *s1) - ((int) (unsigned char) *s2)); +} + +static gint +custom_list_qsort_compare_func (chanlistrow ** a, chanlistrow ** b, + CustomList * custom_list) +{ + if (custom_list->sort_order == GTK_SORT_DESCENDING) + { + chanlistrow **tmp = a; + a = b; + b = tmp; + } + + if (custom_list->sort_id == SORT_ID_USERS) + { + return (*a)->users - (*b)->users; + } + + if (custom_list->sort_id == SORT_ID_TOPIC) + { + return fast_ascii_stricmp ((*a)->topic, (*b)->topic); + } + + return strcmp ((*a)->collation_key, (*b)->collation_key); +} + +/***************************************************************************** + * + * custom_list_new: This is what you use in your own code to create a + * new custom list tree model for you to use. + * + *****************************************************************************/ + +CustomList * +custom_list_new (void) +{ + return (CustomList *) g_object_new (CUSTOM_TYPE_LIST, NULL); +} + +void +custom_list_append (CustomList * custom_list, chanlistrow * newrecord) +{ + GtkTreeIter iter; + GtkTreePath *path; + gulong newsize; + guint pos; + + if (custom_list->num_rows >= custom_list->num_alloc) + { + custom_list->num_alloc += 64; + newsize = custom_list->num_alloc * sizeof (chanlistrow *); + custom_list->rows = g_realloc (custom_list->rows, newsize); + } + + /* TODO: Binary search insert? */ + + pos = custom_list->num_rows; + custom_list->rows[pos] = newrecord; + custom_list->num_rows++; + newrecord->pos = pos; + + /* inform the tree view and other interested objects + * (e.g. tree row references) that we have inserted + * a new row, and where it was inserted */ + + path = gtk_tree_path_new (); + gtk_tree_path_append_index (path, newrecord->pos); +/* custom_list_get_iter(GTK_TREE_MODEL(custom_list), &iter, path);*/ + iter.user_data = newrecord; + gtk_tree_model_row_inserted (GTK_TREE_MODEL (custom_list), path, &iter); + gtk_tree_path_free (path); +} + +void +custom_list_resort (CustomList * custom_list) +{ + GtkTreePath *path; + gint *neworder, i; + + if (custom_list->num_rows < 2) + return; + + /* resort */ + g_qsort_with_data (custom_list->rows, + custom_list->num_rows, + sizeof (chanlistrow *), + (GCompareDataFunc) custom_list_qsort_compare_func, + custom_list); + + /* let other objects know about the new order */ + neworder = malloc (sizeof (gint) * custom_list->num_rows); + + for (i = custom_list->num_rows - 1; i >= 0; i--) + { + /* Note that the API reference might be wrong about + * this, see bug number 124790 on bugs.gnome.org. + * Both will work, but one will give you 'jumpy' + * selections after row reordering. */ + /* neworder[(custom_list->rows[i])->pos] = i; */ + neworder[i] = (custom_list->rows[i])->pos; + (custom_list->rows[i])->pos = i; + } + + path = gtk_tree_path_new (); + gtk_tree_model_rows_reordered (GTK_TREE_MODEL (custom_list), path, NULL, + neworder); + gtk_tree_path_free (path); + free (neworder); +} + +void +custom_list_clear (CustomList * custom_list) +{ + int i, max = custom_list->num_rows - 1; + GtkTreePath *path; + + for (i = max; i >= 0; i--) + { + path = gtk_tree_path_new (); + gtk_tree_path_append_index (path, custom_list->rows[i]->pos); + gtk_tree_model_row_deleted (GTK_TREE_MODEL (custom_list), path); + gtk_tree_path_free (path); + } + + custom_list->num_rows = 0; + custom_list->num_alloc = 0; + + g_free (custom_list->rows); + custom_list->rows = NULL; +} diff --git a/etc/wyatt8740/src/fe-gtk/custom-list.h b/etc/wyatt8740/src/fe-gtk/custom-list.h new file mode 100644 index 0000000..d9e4f09 --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/custom-list.h @@ -0,0 +1,85 @@ +#ifndef _custom_list_h_included_ +#define _custom_list_h_included_ + +#include <gtk/gtk.h> + +/* Some boilerplate GObject defines. 'klass' is used + * instead of 'class', because 'class' is a C++ keyword */ + +#define CUSTOM_TYPE_LIST (custom_list_get_type ()) +#define CUSTOM_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CUSTOM_TYPE_LIST, CustomList)) +#define CUSTOM_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CUSTOM_TYPE_LIST, CustomListClass)) +#define CUSTOM_IS_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CUSTOM_TYPE_LIST)) +#define CUSTOM_IS_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CUSTOM_TYPE_LIST)) +#define CUSTOM_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CUSTOM_TYPE_LIST, CustomListClass)) + +/* The data columns that we export via the tree model interface */ + +enum +{ + CUSTOM_LIST_COL_NAME, + CUSTOM_LIST_COL_USERS, + CUSTOM_LIST_COL_TOPIC, + CUSTOM_LIST_N_COLUMNS +}; + +enum +{ + SORT_ID_CHANNEL, + SORT_ID_USERS, + SORT_ID_TOPIC +}; + +typedef struct +{ + char *topic; + char *collation_key; + guint32 pos; /* pos within the array */ + guint32 users; + /* channel string lives beyond "users" */ +#define GET_CHAN(row) (((char *)row)+sizeof(chanlistrow)) +} +chanlistrow; + +typedef struct _CustomList CustomList; +typedef struct _CustomListClass CustomListClass; + + + +/* CustomList: this structure contains everything we need for our + * model implementation. You can add extra fields to + * this structure, e.g. hashtables to quickly lookup + * rows or whatever else you might need, but it is + * crucial that 'parent' is the first member of the + * structure. */ +struct _CustomList +{ + GObject parent; + + guint num_rows; /* number of rows that we have used */ + guint num_alloc; /* number of rows allocated */ + chanlistrow **rows; /* a dynamically allocated array of pointers to the + * CustomRecord structure for each row */ + + gint n_columns; + GType column_types[CUSTOM_LIST_N_COLUMNS]; + + gint sort_id; + GtkSortType sort_order; +}; + + +/* CustomListClass: more boilerplate GObject stuff */ + +struct _CustomListClass +{ + GObjectClass parent_class; +}; + + +CustomList *custom_list_new (void); +void custom_list_append (CustomList *, chanlistrow *); +void custom_list_resort (CustomList *); +void custom_list_clear (CustomList *); + +#endif /* _custom_list_h_included_ */ diff --git a/etc/wyatt8740/src/fe-gtk/dccgui.c b/etc/wyatt8740/src/fe-gtk/dccgui.c new file mode 100644 index 0000000..61f6d50 --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/dccgui.c @@ -0,0 +1,1098 @@ +/* X-Chat + * Copyright (C) 1998-2006 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <time.h> + +#define WANTSOCKET +#define WANTARPA +#include "../common/inet.h" +#include "fe-gtk.h" + +#include <gtk/gtkhbbox.h> +#include <gtk/gtkhbox.h> +#include <gtk/gtklabel.h> +#include <gtk/gtkstock.h> +#include <gtk/gtkmessagedialog.h> +#include <gtk/gtktable.h> +#include <gtk/gtktreeview.h> +#include <gtk/gtkexpander.h> +#include <gtk/gtkliststore.h> +#include <gtk/gtktreeselection.h> +#include <gtk/gtkcellrendererpixbuf.h> +#include <gtk/gtkcellrenderertext.h> +#include <gtk/gtkcheckmenuitem.h> +#include <gtk/gtkradiobutton.h> +#include <gtk/gtkversion.h> + +#include "../common/xchat.h" +#include "../common/xchatc.h" +#include "../common/fe.h" +#include "../common/util.h" +#include "../common/network.h" +#include "gtkutil.h" +#include "palette.h" +#include "maingui.h" + + +enum /* DCC SEND/RECV */ +{ + COL_TYPE, + COL_STATUS, + COL_FILE, + COL_SIZE, + COL_POS, + COL_PERC, + COL_SPEED, + COL_ETA, + COL_NICK, + COL_DCC, /* struct DCC * */ + COL_COLOR, /* GdkColor */ + N_COLUMNS +}; + +enum /* DCC CHAT */ +{ + CCOL_STATUS, + CCOL_NICK, + CCOL_RECV, + CCOL_SENT, + CCOL_START, + CCOL_DCC, /* struct DCC * */ + CCOL_COLOR, /* GdkColor * */ + CN_COLUMNS +}; + +struct dccwindow +{ + GtkWidget *window; + + GtkWidget *list; + GtkListStore *store; + GtkTreeSelection *sel; + + GtkWidget *abort_button; + GtkWidget *accept_button; + GtkWidget *resume_button; + GtkWidget *open_button; + + GtkWidget *file_label; + GtkWidget *address_label; +}; + +struct my_dcc_send +{ + struct session *sess; + char *nick; + int maxcps; + int passive; +}; + +static struct dccwindow dccfwin = {NULL, }; /* file */ +static struct dccwindow dcccwin = {NULL, }; /* chat */ +static GdkPixbuf *pix_up = NULL; /* down arrow */ +static GdkPixbuf *pix_dn = NULL; /* up arrow */ +static int win_width = 600; +static int win_height = 256; +static short view_mode; /* 1=download 2=upload 3=both */ +#define VIEW_DOWNLOAD 1 +#define VIEW_UPLOAD 2 +#define VIEW_BOTH 3 + +#define KILOBYTE 1024 +#define MEGABYTE (KILOBYTE * 1024) +#define GIGABYTE (MEGABYTE * 1024) + + +static void +proper_unit (DCC_SIZE size, char *buf, int buf_len) +{ + if (size <= KILOBYTE) + { + snprintf (buf, buf_len, "%"DCC_SFMT"B", size); + } + else if (size > KILOBYTE && size <= MEGABYTE) + { + snprintf (buf, buf_len, "%"DCC_SFMT"kB", size / KILOBYTE); + } + else + { + snprintf (buf, buf_len, "%.2fMB", (float)size / MEGABYTE); + } +} + +static void +dcc_send_filereq_file (struct my_dcc_send *mdc, char *file) +{ + if (file) + dcc_send (mdc->sess, mdc->nick, file, mdc->maxcps, mdc->passive); + else + { + free (mdc->nick); + free (mdc); + } +} + +void +fe_dcc_send_filereq (struct session *sess, char *nick, int maxcps, int passive) +{ + char tbuf[128]; + struct my_dcc_send *mdc; + + mdc = malloc (sizeof (*mdc)); + mdc->sess = sess; + mdc->nick = strdup (nick); + mdc->maxcps = maxcps; + mdc->passive = passive; + + snprintf (tbuf, sizeof tbuf, _("Send file to %s"), nick); + gtkutil_file_req (tbuf, dcc_send_filereq_file, mdc, NULL, FRF_MULTIPLE); +} + +static void +dcc_prepare_row_chat (struct DCC *dcc, GtkListStore *store, GtkTreeIter *iter, + gboolean update_only) +{ + static char pos[16], siz[16]; + char *date; + + date = ctime (&dcc->starttime); + date[strlen (date) - 1] = 0; /* remove the \n */ + + proper_unit (dcc->pos, pos, sizeof (pos)); + proper_unit (dcc->size, siz, sizeof (siz)); + + gtk_list_store_set (store, iter, + CCOL_STATUS, _(dccstat[dcc->dccstat].name), + CCOL_NICK, dcc->nick, + CCOL_RECV, pos, + CCOL_SENT, siz, + CCOL_START, date, + CCOL_DCC, dcc, + CCOL_COLOR, + dccstat[dcc->dccstat].color == 1 ? + NULL : + colors + dccstat[dcc->dccstat].color, + -1); +} + +static void +dcc_prepare_row_send (struct DCC *dcc, GtkListStore *store, GtkTreeIter *iter, + gboolean update_only) +{ + static char pos[16], size[16], kbs[14], perc[14], eta[14]; + int to_go; + float per; + + if (!pix_up) + pix_up = gtk_widget_render_icon (dccfwin.window, "gtk-go-up", + GTK_ICON_SIZE_MENU, NULL); + + /* percentage ack'ed */ + per = (float) ((dcc->ack * 100.00) / dcc->size); + proper_unit (dcc->size, size, sizeof (size)); + proper_unit (dcc->pos, pos, sizeof (pos)); + snprintf (kbs, sizeof (kbs), "%.1f", ((float)dcc->cps) / 1024); +/* proper_unit (dcc->ack, ack, sizeof (ack));*/ + snprintf (perc, sizeof (perc), "%.0f%%", per); + if (dcc->cps != 0) + { + to_go = (dcc->size - dcc->ack) / dcc->cps; + snprintf (eta, sizeof (eta), "%.2d:%.2d:%.2d", + to_go / 3600, (to_go / 60) % 60, to_go % 60); + } else + strcpy (eta, "--:--:--"); + + if (update_only) + gtk_list_store_set (store, iter, + COL_STATUS, _(dccstat[dcc->dccstat].name), + COL_POS, pos, + COL_PERC, perc, + COL_SPEED, kbs, + COL_ETA, eta, + COL_COLOR, + dccstat[dcc->dccstat].color == 1 ? + NULL : + colors + dccstat[dcc->dccstat].color, + -1); + else + gtk_list_store_set (store, iter, + COL_TYPE, pix_up, + COL_STATUS, _(dccstat[dcc->dccstat].name), + COL_FILE, file_part (dcc->file), + COL_SIZE, size, + COL_POS, pos, + COL_PERC, perc, + COL_SPEED, kbs, + COL_ETA, eta, + COL_NICK, dcc->nick, + COL_DCC, dcc, + COL_COLOR, + dccstat[dcc->dccstat].color == 1 ? + NULL : + colors + dccstat[dcc->dccstat].color, + -1); +} + +static void +dcc_prepare_row_recv (struct DCC *dcc, GtkListStore *store, GtkTreeIter *iter, + gboolean update_only) +{ + static char size[16], pos[16], kbs[16], perc[14], eta[16]; + float per; + int to_go; + + if (!pix_dn) + pix_dn = gtk_widget_render_icon (dccfwin.window, "gtk-go-down", + GTK_ICON_SIZE_MENU, NULL); + + proper_unit (dcc->size, size, sizeof (size)); + if (dcc->dccstat == STAT_QUEUED) + proper_unit (dcc->resumable, pos, sizeof (pos)); + else + proper_unit (dcc->pos, pos, sizeof (pos)); + snprintf (kbs, sizeof (kbs), "%.1f", ((float)dcc->cps) / 1024); + /* percentage recv'ed */ + per = (float) ((dcc->pos * 100.00) / dcc->size); + snprintf (perc, sizeof (perc), "%.0f%%", per); + if (dcc->cps != 0) + { + to_go = (dcc->size - dcc->pos) / dcc->cps; + snprintf (eta, sizeof (eta), "%.2d:%.2d:%.2d", + to_go / 3600, (to_go / 60) % 60, to_go % 60); + } else + strcpy (eta, "--:--:--"); + + if (update_only) + gtk_list_store_set (store, iter, + COL_STATUS, _(dccstat[dcc->dccstat].name), + COL_POS, pos, + COL_PERC, perc, + COL_SPEED, kbs, + COL_ETA, eta, + COL_COLOR, + dccstat[dcc->dccstat].color == 1 ? + NULL : + colors + dccstat[dcc->dccstat].color, + -1); + else + gtk_list_store_set (store, iter, + COL_TYPE, pix_dn, + COL_STATUS, _(dccstat[dcc->dccstat].name), + COL_FILE, file_part (dcc->file), + COL_SIZE, size, + COL_POS, pos, + COL_PERC, perc, + COL_SPEED, kbs, + COL_ETA, eta, + COL_NICK, dcc->nick, + COL_DCC, dcc, + COL_COLOR, + dccstat[dcc->dccstat].color == 1 ? + NULL : + colors + dccstat[dcc->dccstat].color, + -1); +} + +static gboolean +dcc_find_row (struct DCC *find_dcc, GtkTreeModel *model, GtkTreeIter *iter, int col) +{ + struct DCC *dcc; + + if (gtk_tree_model_get_iter_first (model, iter)) + { + do + { + gtk_tree_model_get (model, iter, col, &dcc, -1); + if (dcc == find_dcc) + return TRUE; + } + while (gtk_tree_model_iter_next (model, iter)); + } + + return FALSE; +} + +static void +dcc_update_recv (struct DCC *dcc) +{ + GtkTreeIter iter; + + if (!dccfwin.window) + return; + + if (!dcc_find_row (dcc, GTK_TREE_MODEL (dccfwin.store), &iter, COL_DCC)) + return; + + dcc_prepare_row_recv (dcc, dccfwin.store, &iter, TRUE); +} + +static void +dcc_update_chat (struct DCC *dcc) +{ + GtkTreeIter iter; + + if (!dcccwin.window) + return; + + if (!dcc_find_row (dcc, GTK_TREE_MODEL (dcccwin.store), &iter, CCOL_DCC)) + return; + + dcc_prepare_row_chat (dcc, dcccwin.store, &iter, TRUE); +} + +static void +dcc_update_send (struct DCC *dcc) +{ + GtkTreeIter iter; + + if (!dccfwin.window) + return; + + if (!dcc_find_row (dcc, GTK_TREE_MODEL (dccfwin.store), &iter, COL_DCC)) + return; + + dcc_prepare_row_send (dcc, dccfwin.store, &iter, TRUE); +} + +static void +close_dcc_file_window (GtkWindow *win, gpointer data) +{ + dccfwin.window = NULL; +} + +static void +dcc_append (struct DCC *dcc, GtkListStore *store, gboolean prepend) +{ + GtkTreeIter iter; + + if (prepend) + gtk_list_store_prepend (store, &iter); + else + gtk_list_store_append (store, &iter); + + if (dcc->type == TYPE_RECV) + dcc_prepare_row_recv (dcc, store, &iter, FALSE); + else + dcc_prepare_row_send (dcc, store, &iter, FALSE); +} + +static void +dcc_fill_window (int flags) +{ + struct DCC *dcc; + GSList *list; + GtkTreeIter iter; + int i = 0; + + gtk_list_store_clear (GTK_LIST_STORE (dccfwin.store)); + + if (flags & VIEW_UPLOAD) + { + list = dcc_list; + while (list) + { + dcc = list->data; + if (dcc->type == TYPE_SEND) + { + dcc_append (dcc, dccfwin.store, FALSE); + i++; + } + list = list->next; + } + } + + if (flags & VIEW_DOWNLOAD) + { + list = dcc_list; + while (list) + { + dcc = list->data; + if (dcc->type == TYPE_RECV) + { + dcc_append (dcc, dccfwin.store, FALSE); + i++; + } + list = list->next; + } + } + + /* if only one entry, select it (so Accept button can work) */ + if (i == 1) + { + gtk_tree_model_get_iter_first (GTK_TREE_MODEL (dccfwin.store), &iter); + gtk_tree_selection_select_iter (dccfwin.sel, &iter); + } +} + +/* return list of selected DCCs */ + +static GSList * +treeview_get_selected (GtkTreeModel *model, GtkTreeSelection *sel, int column) +{ + GtkTreeIter iter; + GSList *list = NULL; + void *ptr; + + if (gtk_tree_model_get_iter_first (model, &iter)) + { + do + { + if (gtk_tree_selection_iter_is_selected (sel, &iter)) + { + gtk_tree_model_get (model, &iter, column, &ptr, -1); + list = g_slist_prepend (list, ptr); + } + } + while (gtk_tree_model_iter_next (model, &iter)); + } + + return g_slist_reverse (list); +} + +static GSList * +dcc_get_selected (void) +{ + return treeview_get_selected (GTK_TREE_MODEL (dccfwin.store), + dccfwin.sel, COL_DCC); +} + +static void +resume_clicked (GtkWidget * wid, gpointer none) +{ + struct DCC *dcc; + char buf[512]; + GSList *list; + + list = dcc_get_selected (); + if (!list) + return; + dcc = list->data; + g_slist_free (list); + + if (dcc->type == TYPE_RECV && !dcc_resume (dcc)) + { + switch (dcc->resume_error) + { + case 0: /* unknown error */ + fe_message (_("That file is not resumable."), FE_MSG_ERROR); + break; + case 1: + snprintf (buf, sizeof (buf), + _( "Cannot access file: %s\n" + "%s.\n" + "Resuming not possible."), dcc->destfile, + errorstring (dcc->resume_errno)); + fe_message (buf, FE_MSG_ERROR); + break; + case 2: + fe_message (_("File in download directory is larger " + "than file offered. Resuming not possible."), FE_MSG_ERROR); + break; + case 3: + fe_message (_("Cannot resume the same file from two people."), FE_MSG_ERROR); + } + } +} + +static void +abort_clicked (GtkWidget * wid, gpointer none) +{ + struct DCC *dcc; + GSList *start, *list; + + start = list = dcc_get_selected (); + for (; list; list = list->next) + { + dcc = list->data; + dcc_abort (dcc->serv->front_session, dcc); + } + g_slist_free (start); +} + +static void +accept_clicked (GtkWidget * wid, gpointer none) +{ + struct DCC *dcc; + GSList *start, *list; + + start = list = dcc_get_selected (); + for (; list; list = list->next) + { + dcc = list->data; + if (dcc->type != TYPE_SEND) + dcc_get (dcc); + } + g_slist_free (start); +} + +static void +browse_folder (char *dir) +{ +#ifdef WIN32 + /* no need for file:// in ShellExecute() */ + fe_open_url (dir); +#else + char buf[512]; + + snprintf (buf, sizeof (buf), "file://%s", dir); + fe_open_url (buf); +#endif +} + +static void +browse_dcc_folder (void) +{ + if (prefs.dcc_completed_dir[0]) + browse_folder (prefs.dcc_completed_dir); + else + browse_folder (prefs.dccdir); +} + +static void +dcc_details_populate (struct DCC *dcc) +{ + char buf[128]; + + if (!dcc) + { + gtk_label_set_text (GTK_LABEL (dccfwin.file_label), NULL); + gtk_label_set_text (GTK_LABEL (dccfwin.address_label), NULL); + return; + } + + /* full path */ + if (dcc->type == TYPE_RECV) + gtk_label_set_text (GTK_LABEL (dccfwin.file_label), dcc->destfile); + else + gtk_label_set_text (GTK_LABEL (dccfwin.file_label), dcc->file); + + /* address and port */ + snprintf (buf, sizeof (buf), "%s : %d", net_ip (dcc->addr), dcc->port); + gtk_label_set_text (GTK_LABEL (dccfwin.address_label), buf); +} + +static void +dcc_row_cb (GtkTreeSelection *sel, gpointer user_data) +{ + struct DCC *dcc; + GSList *list; + + list = dcc_get_selected (); + if (!list) + { + gtk_widget_set_sensitive (dccfwin.accept_button, FALSE); + gtk_widget_set_sensitive (dccfwin.resume_button, FALSE); + gtk_widget_set_sensitive (dccfwin.abort_button, FALSE); + dcc_details_populate (NULL); + return; + } + + gtk_widget_set_sensitive (dccfwin.abort_button, TRUE); + + if (list->next) /* multi selection */ + { + gtk_widget_set_sensitive (dccfwin.accept_button, TRUE); + gtk_widget_set_sensitive (dccfwin.resume_button, TRUE); + dcc_details_populate (list->data); + } + else + { + /* turn OFF/ON appropriate buttons */ + dcc = list->data; + if (dcc->dccstat == STAT_QUEUED && dcc->type == TYPE_RECV) + { + gtk_widget_set_sensitive (dccfwin.accept_button, TRUE); + gtk_widget_set_sensitive (dccfwin.resume_button, TRUE); + } + else + { + gtk_widget_set_sensitive (dccfwin.accept_button, FALSE); + gtk_widget_set_sensitive (dccfwin.resume_button, FALSE); + } + + dcc_details_populate (dcc); + } + + g_slist_free (list); +} + +static void +dcc_dclick_cb (GtkTreeView *view, GtkTreePath *path, + GtkTreeViewColumn *column, gpointer data) +{ + struct DCC *dcc; + GSList *list; + + list = dcc_get_selected (); + if (!list) + return; + dcc = list->data; + g_slist_free (list); + + if (dcc->type == TYPE_RECV) + { + accept_clicked (0, 0); + return; + } + + switch (dcc->dccstat) + { + case STAT_FAILED: + case STAT_ABORTED: + case STAT_DONE: + dcc_abort (dcc->serv->front_session, dcc); + } +} + +static void +dcc_add_column (GtkWidget *tree, int textcol, int colorcol, char *title, gboolean right_justified) +{ + GtkCellRenderer *renderer; + + renderer = gtk_cell_renderer_text_new (); + if (right_justified) + g_object_set (G_OBJECT (renderer), "xalign", (float) 1.0, NULL); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree), -1, title, renderer, + "text", textcol, "foreground-gdk", colorcol, + NULL); + gtk_cell_renderer_text_set_fixed_height_from_font (GTK_CELL_RENDERER_TEXT (renderer), 1); +} + +static GtkWidget * +dcc_detail_label (char *text, GtkWidget *box, int num) +{ + GtkWidget *label; + char buf[64]; + + label = gtk_label_new (NULL); + snprintf (buf, sizeof (buf), "<b>%s</b>", text); + gtk_label_set_markup (GTK_LABEL (label), buf); + gtk_misc_set_alignment (GTK_MISC (label), 0, 0); + gtk_table_attach (GTK_TABLE (box), label, 0, 1, 0 + num, 1 + num, GTK_FILL, GTK_FILL, 0, 0); + + label = gtk_label_new (NULL); + gtk_label_set_selectable (GTK_LABEL (label), TRUE); + gtk_misc_set_alignment (GTK_MISC (label), 0, 0); + gtk_table_attach (GTK_TABLE (box), label, 1, 2, 0 + num, 1 + num, GTK_FILL, GTK_FILL, 0, 0); + + return label; +} + +static void +dcc_exp_cb (GtkWidget *exp, GtkWidget *box) +{ +#if GTK_CHECK_VERSION(2,20,0) + if (gtk_widget_get_visible (box)) +#else + if (GTK_WIDGET_VISIBLE (box)) +#endif + gtk_widget_hide (box); + else + gtk_widget_show (box); +} + +static void +dcc_toggle (GtkWidget *item, gpointer data) +{ + if (GTK_TOGGLE_BUTTON (item)->active) + { + view_mode = GPOINTER_TO_INT (data); + dcc_fill_window (GPOINTER_TO_INT (data)); + } +} + +static gboolean +dcc_configure_cb (GtkWindow *win, GdkEventConfigure *event, gpointer data) +{ + /* remember the window size */ + gtk_window_get_size (win, &win_width, &win_height); + return FALSE; +} + +int +fe_dcc_open_recv_win (int passive) +{ + GtkWidget *radio, *table, *vbox, *bbox, *view, *exp, *detailbox; + GtkListStore *store; + GSList *group; + + if (dccfwin.window) + { + if (!passive) + mg_bring_tofront (dccfwin.window); + return TRUE; + } + dccfwin.window = mg_create_generic_tab ("Transfers", _("XChat: Uploads and Downloads"), + FALSE, TRUE, close_dcc_file_window, NULL, + win_width, win_height, &vbox, 0); + gtk_container_set_border_width (GTK_CONTAINER (dccfwin.window), 3); + gtk_box_set_spacing (GTK_BOX (vbox), 3); + + store = gtk_list_store_new (N_COLUMNS, GDK_TYPE_PIXBUF, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_POINTER, GDK_TYPE_COLOR); + view = gtkutil_treeview_new (vbox, GTK_TREE_MODEL (store), NULL, -1); + gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (view), TRUE); + /* Up/Down Icon column */ + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), -1, NULL, + gtk_cell_renderer_pixbuf_new (), + "pixbuf", COL_TYPE, NULL); + dcc_add_column (view, COL_STATUS, COL_COLOR, _("Status"), FALSE); + dcc_add_column (view, COL_FILE, COL_COLOR, _("File"), FALSE); + dcc_add_column (view, COL_SIZE, COL_COLOR, _("Size"), TRUE); + dcc_add_column (view, COL_POS, COL_COLOR, _("Position"), TRUE); + dcc_add_column (view, COL_PERC, COL_COLOR, "%", TRUE); + dcc_add_column (view, COL_SPEED, COL_COLOR, "KB/s", TRUE); + dcc_add_column (view, COL_ETA, COL_COLOR, _("ETA"), FALSE); + dcc_add_column (view, COL_NICK, COL_COLOR, _("Nick"), FALSE); + + gtk_tree_view_column_set_expand (gtk_tree_view_get_column (GTK_TREE_VIEW (view), COL_FILE), TRUE); + gtk_tree_view_column_set_expand (gtk_tree_view_get_column (GTK_TREE_VIEW (view), COL_NICK), TRUE); + + dccfwin.list = view; + dccfwin.store = store; + dccfwin.sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (view)); + view_mode = VIEW_BOTH; + gtk_tree_selection_set_mode (dccfwin.sel, GTK_SELECTION_MULTIPLE); + + if (!prefs.windows_as_tabs) + g_signal_connect (G_OBJECT (dccfwin.window), "configure_event", + G_CALLBACK (dcc_configure_cb), 0); + g_signal_connect (G_OBJECT (dccfwin.sel), "changed", + G_CALLBACK (dcc_row_cb), NULL); + /* double click */ + g_signal_connect (G_OBJECT (view), "row-activated", + G_CALLBACK (dcc_dclick_cb), NULL); + + table = gtk_table_new (1, 3, FALSE); + gtk_table_set_col_spacings (GTK_TABLE (table), 16); + gtk_box_pack_start (GTK_BOX (vbox), table, 0, 0, 0); + + radio = gtk_radio_button_new_with_mnemonic (NULL, _("Both")); + g_signal_connect (G_OBJECT (radio), "toggled", + G_CALLBACK (dcc_toggle), GINT_TO_POINTER (VIEW_BOTH)); + gtk_table_attach (GTK_TABLE (table), radio, 3, 4, 0, 1, GTK_FILL, GTK_FILL, 0, 0); + group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio)); + + radio = gtk_radio_button_new_with_mnemonic (group, _("Uploads")); + g_signal_connect (G_OBJECT (radio), "toggled", + G_CALLBACK (dcc_toggle), GINT_TO_POINTER (VIEW_UPLOAD)); + gtk_table_attach (GTK_TABLE (table), radio, 1, 2, 0, 1, GTK_FILL, GTK_FILL, 0, 0); + group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio)); + + radio = gtk_radio_button_new_with_mnemonic (group, _("Downloads")); + g_signal_connect (G_OBJECT (radio), "toggled", + G_CALLBACK (dcc_toggle), GINT_TO_POINTER (VIEW_DOWNLOAD)); + gtk_table_attach (GTK_TABLE (table), radio, 2, 3, 0, 1, GTK_FILL, GTK_FILL, 0, 0); + + exp = gtk_expander_new (_("Details")); + gtk_table_attach (GTK_TABLE (table), exp, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0); + + detailbox = gtk_table_new (3, 3, FALSE); + gtk_table_set_col_spacings (GTK_TABLE (detailbox), 6); + gtk_table_set_row_spacings (GTK_TABLE (detailbox), 2); + gtk_container_set_border_width (GTK_CONTAINER (detailbox), 6); + g_signal_connect (G_OBJECT (exp), "activate", + G_CALLBACK (dcc_exp_cb), detailbox); + gtk_table_attach (GTK_TABLE (table), detailbox, 0, 4, 1, 2, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0); + + dccfwin.file_label = dcc_detail_label (_("File:"), detailbox, 0); + dccfwin.address_label = dcc_detail_label (_("Address:"), detailbox, 1); + + bbox = gtk_hbutton_box_new (); + gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_SPREAD); + gtk_box_pack_end (GTK_BOX (vbox), bbox, FALSE, FALSE, 2); + + dccfwin.abort_button = gtkutil_button (bbox, GTK_STOCK_CANCEL, 0, abort_clicked, 0, _("Abort")); + dccfwin.accept_button = gtkutil_button (bbox, GTK_STOCK_APPLY, 0, accept_clicked, 0, _("Accept")); + dccfwin.resume_button = gtkutil_button (bbox, GTK_STOCK_REFRESH, 0, resume_clicked, 0, _("Resume")); + dccfwin.open_button = gtkutil_button (bbox, 0, 0, browse_dcc_folder, 0, _("Open Folder...")); + gtk_widget_set_sensitive (dccfwin.accept_button, FALSE); + gtk_widget_set_sensitive (dccfwin.resume_button, FALSE); + gtk_widget_set_sensitive (dccfwin.abort_button, FALSE); + + dcc_fill_window (3); + gtk_widget_show_all (dccfwin.window); + gtk_widget_hide (detailbox); + + return FALSE; +} + +int +fe_dcc_open_send_win (int passive) +{ + /* combined send/recv GUI */ + return fe_dcc_open_recv_win (passive); +} + + +/* DCC CHAT GUIs BELOW */ + +static GSList * +dcc_chat_get_selected (void) +{ + return treeview_get_selected (GTK_TREE_MODEL (dcccwin.store), + dcccwin.sel, CCOL_DCC); +} + +static void +accept_chat_clicked (GtkWidget * wid, gpointer none) +{ + struct DCC *dcc; + GSList *start, *list; + + start = list = dcc_chat_get_selected (); + for (; list; list = list->next) + { + dcc = list->data; + dcc_get (dcc); + } + g_slist_free (start); +} + +static void +abort_chat_clicked (GtkWidget * wid, gpointer none) +{ + struct DCC *dcc; + GSList *start, *list; + + start = list = dcc_chat_get_selected (); + for (; list; list = list->next) + { + dcc = list->data; + dcc_abort (dcc->serv->front_session, dcc); + } + g_slist_free (start); +} + +static void +dcc_chat_close_cb (void) +{ + dcccwin.window = NULL; +} + +static void +dcc_chat_append (struct DCC *dcc, GtkListStore *store, gboolean prepend) +{ + GtkTreeIter iter; + + if (prepend) + gtk_list_store_prepend (store, &iter); + else + gtk_list_store_append (store, &iter); + + dcc_prepare_row_chat (dcc, store, &iter, FALSE); +} + +static void +dcc_chat_fill_win (void) +{ + struct DCC *dcc; + GSList *list; + GtkTreeIter iter; + int i = 0; + + gtk_list_store_clear (GTK_LIST_STORE (dcccwin.store)); + + list = dcc_list; + while (list) + { + dcc = list->data; + if (dcc->type == TYPE_CHATSEND || dcc->type == TYPE_CHATRECV) + { + dcc_chat_append (dcc, dcccwin.store, FALSE); + i++; + } + list = list->next; + } + + /* if only one entry, select it (so Accept button can work) */ + if (i == 1) + { + gtk_tree_model_get_iter_first (GTK_TREE_MODEL (dcccwin.store), &iter); + gtk_tree_selection_select_iter (dcccwin.sel, &iter); + } +} + +static void +dcc_chat_row_cb (GtkTreeSelection *sel, gpointer user_data) +{ + struct DCC *dcc; + GSList *list; + + list = dcc_chat_get_selected (); + if (!list) + { + gtk_widget_set_sensitive (dcccwin.accept_button, FALSE); + gtk_widget_set_sensitive (dcccwin.abort_button, FALSE); + return; + } + + gtk_widget_set_sensitive (dcccwin.abort_button, TRUE); + + if (list->next) /* multi selection */ + gtk_widget_set_sensitive (dcccwin.accept_button, TRUE); + else + { + /* turn OFF/ON appropriate buttons */ + dcc = list->data; + if (dcc->dccstat == STAT_QUEUED && dcc->type == TYPE_CHATRECV) + gtk_widget_set_sensitive (dcccwin.accept_button, TRUE); + else + gtk_widget_set_sensitive (dcccwin.accept_button, FALSE); + } + + g_slist_free (list); +} + +static void +dcc_chat_dclick_cb (GtkTreeView *view, GtkTreePath *path, + GtkTreeViewColumn *column, gpointer data) +{ + accept_chat_clicked (0, 0); +} + +int +fe_dcc_open_chat_win (int passive) +{ + GtkWidget *view, *vbox, *bbox; + GtkListStore *store; + + if (dcccwin.window) + { + if (!passive) + mg_bring_tofront (dcccwin.window); + return TRUE; + } + + dcccwin.window = + mg_create_generic_tab ("DCCChat", _("XChat: DCC Chat List"), + FALSE, TRUE, dcc_chat_close_cb, NULL, 550, 180, &vbox, 0); + gtk_container_set_border_width (GTK_CONTAINER (dcccwin.window), 3); + gtk_box_set_spacing (GTK_BOX (vbox), 3); + + store = gtk_list_store_new (CN_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_POINTER, GDK_TYPE_COLOR); + view = gtkutil_treeview_new (vbox, GTK_TREE_MODEL (store), NULL, -1); + + dcc_add_column (view, CCOL_STATUS, CCOL_COLOR, _("Status"), FALSE); + dcc_add_column (view, CCOL_NICK, CCOL_COLOR, _("Nick"), FALSE); + dcc_add_column (view, CCOL_RECV, CCOL_COLOR, _("Recv"), TRUE); + dcc_add_column (view, CCOL_SENT, CCOL_COLOR, _("Sent"), TRUE); + dcc_add_column (view, CCOL_START, CCOL_COLOR, _("Start Time"), FALSE); + + gtk_tree_view_column_set_expand (gtk_tree_view_get_column (GTK_TREE_VIEW (view), 1), TRUE); + gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (view), TRUE); + + dcccwin.list = view; + dcccwin.store = store; + dcccwin.sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (view)); + gtk_tree_selection_set_mode (dcccwin.sel, GTK_SELECTION_MULTIPLE); + + g_signal_connect (G_OBJECT (dcccwin.sel), "changed", + G_CALLBACK (dcc_chat_row_cb), NULL); + /* double click */ + g_signal_connect (G_OBJECT (view), "row-activated", + G_CALLBACK (dcc_chat_dclick_cb), NULL); + + bbox = gtk_hbutton_box_new (); + gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_SPREAD); + gtk_box_pack_end (GTK_BOX (vbox), bbox, FALSE, FALSE, 2); + + dcccwin.abort_button = gtkutil_button (bbox, GTK_STOCK_CANCEL, 0, abort_chat_clicked, 0, _("Abort")); + dcccwin.accept_button = gtkutil_button (bbox, GTK_STOCK_APPLY, 0, accept_chat_clicked, 0, _("Accept")); + gtk_widget_set_sensitive (dcccwin.accept_button, FALSE); + gtk_widget_set_sensitive (dcccwin.abort_button, FALSE); + + dcc_chat_fill_win (); + gtk_widget_show_all (dcccwin.window); + + return FALSE; +} + +void +fe_dcc_add (struct DCC *dcc) +{ + switch (dcc->type) + { + case TYPE_RECV: + if (dccfwin.window && (view_mode & VIEW_DOWNLOAD)) + dcc_append (dcc, dccfwin.store, TRUE); + break; + + case TYPE_SEND: + if (dccfwin.window && (view_mode & VIEW_UPLOAD)) + dcc_append (dcc, dccfwin.store, TRUE); + break; + + default: /* chat */ + if (dcccwin.window) + dcc_chat_append (dcc, dcccwin.store, TRUE); + } +} + +void +fe_dcc_update (struct DCC *dcc) +{ + switch (dcc->type) + { + case TYPE_SEND: + dcc_update_send (dcc); + break; + + case TYPE_RECV: + dcc_update_recv (dcc); + break; + + default: + dcc_update_chat (dcc); + } +} + +void +fe_dcc_remove (struct DCC *dcc) +{ + GtkTreeIter iter; + + switch (dcc->type) + { + case TYPE_SEND: + case TYPE_RECV: + if (dccfwin.window) + { + if (dcc_find_row (dcc, GTK_TREE_MODEL (dccfwin.store), &iter, COL_DCC)) + gtk_list_store_remove (dccfwin.store, &iter); + } + break; + + default: /* chat */ + if (dcccwin.window) + { + if (dcc_find_row (dcc, GTK_TREE_MODEL (dcccwin.store), &iter, CCOL_DCC)) + gtk_list_store_remove (dcccwin.store, &iter); + } + break; + } +} diff --git a/etc/wyatt8740/src/fe-gtk/editlist.c b/etc/wyatt8740/src/fe-gtk/editlist.c new file mode 100644 index 0000000..975f675 --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/editlist.c @@ -0,0 +1,435 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <fcntl.h> +#include <sys/types.h> +#include <sys/stat.h> +#include "fe-gtk.h" + +#include <gtk/gtkstock.h> +#include <gtk/gtkentry.h> +#include <gtk/gtkclist.h> +#include <gtk/gtkhbox.h> +#include <gtk/gtkvseparator.h> + +#include "../common/xchat.h" +#include "../common/cfgfiles.h" +#include "../common/xchatc.h" +#include "../common/fe.h" +#include "menu.h" +#include "gtkutil.h" +#include "maingui.h" +#include "editlist.h" + + +static GtkWidget *editlist_gui_entry_name; +static GtkWidget *editlist_gui_entry_cmd; +static GtkWidget *editlist_gui_window; +static GtkWidget *editlist_gui_list; +static GSList *editlist_list; +static char *editlist_file; +static char *editlist_help; + + + +static void +editlist_gui_load (GtkWidget * listgad) +{ + gchar *nnew[2]; + GSList *list = editlist_list; + struct popup *pop; + + while (list) + { + pop = (struct popup *) list->data; + nnew[0] = pop->name; + nnew[1] = pop->cmd; + gtk_clist_append (GTK_CLIST (listgad), nnew); + list = list->next; + } +} + +static void +editlist_gui_row_unselected (GtkWidget * clist, gint row, gint column, + GdkEventButton * even, gpointer none) +{ + gtk_entry_set_text (GTK_ENTRY (editlist_gui_entry_name), ""); + gtk_entry_set_text (GTK_ENTRY (editlist_gui_entry_cmd), ""); +} + +static void +editlist_gui_row_selected (GtkWidget * clist, gint row, gint column, + GdkEventButton * even, gpointer none) +{ + char *name, *cmd; + + row = gtkutil_clist_selection (editlist_gui_list); + if (row != -1) + { + gtk_clist_get_text (GTK_CLIST (clist), row, 0, &name); + gtk_clist_get_text (GTK_CLIST (clist), row, 1, &cmd); + + name = strdup (name); + cmd = strdup (cmd); + + gtk_entry_set_text (GTK_ENTRY (editlist_gui_entry_name), name); + gtk_entry_set_text (GTK_ENTRY (editlist_gui_entry_cmd), cmd); + + free (name); + free (cmd); + } else + { + editlist_gui_row_unselected (0, 0, 0, 0, 0); + } +} + +static void +editlist_gui_handle_cmd (GtkWidget * igad) +{ + int row; + const char *reply; + + row = gtkutil_clist_selection (editlist_gui_list); + if (row != -1) + { + reply = gtk_entry_get_text (GTK_ENTRY (igad)); + gtk_clist_set_text (GTK_CLIST (editlist_gui_list), row, 1, reply); + } +} + +static void +editlist_gui_handle_name (GtkWidget * igad) +{ + int row; + const char *ctcp; + + row = gtkutil_clist_selection (editlist_gui_list); + if (row != -1) + { + ctcp = gtk_entry_get_text (GTK_ENTRY (igad)); + gtk_clist_set_text (GTK_CLIST (editlist_gui_list), row, 0, ctcp); + } +} + +static void +editlist_gui_addnew (GtkWidget * igad) +{ + int i; + gchar *nnew[2]; + + nnew[0] = _("*NEW*"); + nnew[1] = _("EDIT ME"); + + i = gtk_clist_append (GTK_CLIST (editlist_gui_list), nnew); + gtk_clist_select_row (GTK_CLIST (editlist_gui_list), i, 0); + gtk_clist_moveto (GTK_CLIST (editlist_gui_list), i, 0, 0.5, 0); +} + +static void +editlist_gui_delete (GtkWidget * igad) +{ + int row; + + row = gtkutil_clist_selection (editlist_gui_list); + if (row != -1) + { + gtk_clist_unselect_all (GTK_CLIST (editlist_gui_list)); + gtk_clist_remove (GTK_CLIST (editlist_gui_list), row); + } +} + +static void +editlist_gui_save (GtkWidget * igad) +{ + int fh, i = 0; + ssize_t nb; + char buf[512]; + char *a, *b; + + char *file_tmp = malloc( strlen( editlist_file ) + strlen( ".bug147832" ) + 1 ); + if( ! file_tmp ) + return; + + fh = xchat_open_file (file_tmp, O_TRUNC | O_WRONLY | O_CREAT, 0600, XOF_DOMODE); + if (fh != -1) + { + nb = 1; + while (1) + { + if (!gtk_clist_get_text (GTK_CLIST (editlist_gui_list), i, 0, &a)) + break; + gtk_clist_get_text (GTK_CLIST (editlist_gui_list), i, 1, &b); + snprintf (buf, sizeof (buf), "NAME %s\nCMD %s\n\n", a, b); + if( nb > 0 ) nb = write (fh, buf, strlen (buf)); + i++; + } + if( nb <= 0 ) + { + fprintf( stderr, "editlist_gui_save: write() failed\n" ); + close( fh ); + free( file_tmp ); + return; + } + if( close (fh) != 0 ) + { + perror( "editlist_gui_save: close() failed" ); + free( file_tmp ); + return; + } + if( xchat_rename_file( file_tmp, editlist_file, XOF_DOMODE ) != 0 ) + { + perror( "editlist_gui_save: xchat_rename_file() failed" ); + free( file_tmp ); + return; + } + free( file_tmp ); + + gtk_widget_destroy (editlist_gui_window); + if (editlist_list == replace_list) + { + list_free (&replace_list); + list_loadconf (editlist_file, &replace_list, 0); + } else if (editlist_list == popup_list) + { + list_free (&popup_list); + list_loadconf (editlist_file, &popup_list, 0); + } else if (editlist_list == button_list) + { + GSList *list = sess_list; + struct session *sess; + list_free (&button_list); + list_loadconf (editlist_file, &button_list, 0); + while (list) + { + sess = (struct session *) list->data; + fe_buttons_update (sess); + list = list->next; + } + } else if (editlist_list == dlgbutton_list) + { + GSList *list = sess_list; + struct session *sess; + list_free (&dlgbutton_list); + list_loadconf (editlist_file, &dlgbutton_list, 0); + while (list) + { + sess = (struct session *) list->data; + fe_dlgbuttons_update (sess); + list = list->next; + } + } else if (editlist_list == ctcp_list) + { + list_free (&ctcp_list); + list_loadconf (editlist_file, &ctcp_list, 0); + } else if (editlist_list == command_list) + { + list_free (&command_list); + list_loadconf (editlist_file, &command_list, 0); + } else if (editlist_list == usermenu_list) + { + list_free (&usermenu_list); + list_loadconf (editlist_file, &usermenu_list, 0); + usermenu_update (); + } else + { + list_free (&urlhandler_list); + list_loadconf (editlist_file, &urlhandler_list, 0); + } + } +} + +static void +editlist_gui_help (GtkWidget * igad) +{ +/* if (editlist_help)*/ + fe_message (editlist_help, FE_MSG_INFO); +} + +static void +editlist_gui_sort (GtkWidget * igad) +{ + int row; + + row = gtkutil_clist_selection (editlist_gui_list); + if (row != -1) + gtk_clist_unselect_row (GTK_CLIST (editlist_gui_list), row, 0); + gtk_clist_sort (GTK_CLIST (editlist_gui_list)); +} + +static void +editlist_gui_movedown (GtkWidget * igad) +{ + int row; + char *temp; + + row = gtkutil_clist_selection (editlist_gui_list); + if (row != -1) + { + if (!gtk_clist_get_text (GTK_CLIST (editlist_gui_list), row + 1, 0, &temp)) + return; + gtk_clist_freeze (GTK_CLIST (editlist_gui_list)); + gtk_clist_swap_rows (GTK_CLIST (editlist_gui_list), row, row + 1); + gtk_clist_thaw (GTK_CLIST (editlist_gui_list)); + row++; + if (!gtk_clist_row_is_visible (GTK_CLIST (editlist_gui_list), row) != + GTK_VISIBILITY_FULL) + gtk_clist_moveto (GTK_CLIST (editlist_gui_list), row, 0, 0.9, 0); + } +} + +static void +editlist_gui_moveup (GtkWidget * igad) +{ + int row; + + row = gtkutil_clist_selection (editlist_gui_list); + if (row != -1 && row > 0) + { + gtk_clist_freeze (GTK_CLIST (editlist_gui_list)); + gtk_clist_swap_rows (GTK_CLIST (editlist_gui_list), row - 1, row); + gtk_clist_thaw (GTK_CLIST (editlist_gui_list)); + row--; + if (gtk_clist_row_is_visible (GTK_CLIST (editlist_gui_list), row) != + GTK_VISIBILITY_FULL) + gtk_clist_moveto (GTK_CLIST (editlist_gui_list), row, 0, 0.1, 0); + } +} + +static void +editlist_gui_close (void) +{ + editlist_gui_window = 0; +} + +void +editlist_gui_open (char *title1, char *title2, GSList * list, char *title, char *wmclass, + char *file, char *help) +{ + gchar *titles[2]; + GtkWidget *vbox, *hbox, *button; + + if (title1) + { + titles[0] = title1; + titles[1] = title2; + } else + { + titles[0] = _("Name"); + titles[1] = _("Command"); + } + + if (editlist_gui_window) + { + mg_bring_tofront (editlist_gui_window); + return; + } + + editlist_list = list; + editlist_file = file; + editlist_help = help; + + editlist_gui_window = + mg_create_generic_tab (wmclass, title, TRUE, FALSE, + editlist_gui_close, NULL, 450, 250, &vbox, 0); + + editlist_gui_list = gtkutil_clist_new (2, titles, vbox, GTK_POLICY_ALWAYS, + editlist_gui_row_selected, 0, + editlist_gui_row_unselected, 0, + GTK_SELECTION_BROWSE); + gtk_clist_set_column_width (GTK_CLIST (editlist_gui_list), 0, 90); + + hbox = gtk_hbox_new (0, 2); + gtk_box_pack_end (GTK_BOX (vbox), hbox, 0, 0, 0); + gtk_widget_show (hbox); + + button = gtkutil_button (hbox, GTK_STOCK_GO_UP, 0, editlist_gui_moveup, + 0, _("Move Up")); + gtk_widget_set_usize (button, 100, 0); + + button = gtkutil_button (hbox, GTK_STOCK_GO_DOWN, 0, editlist_gui_movedown, + 0, _("Move Dn")); + gtk_widget_set_usize (button, 100, 0); + + button = gtk_vseparator_new (); + gtk_container_add (GTK_CONTAINER (hbox), button); + gtk_widget_show (button); + + button = gtkutil_button (hbox, GTK_STOCK_CANCEL, 0, gtkutil_destroy, + editlist_gui_window, _("Cancel")); + gtk_widget_set_usize (button, 100, 0); + + button = gtkutil_button (hbox, GTK_STOCK_SAVE, 0, editlist_gui_save, + 0, _("Save")); + gtk_widget_set_usize (button, 100, 0); + + hbox = gtk_hbox_new (0, 2); + gtk_box_pack_end (GTK_BOX (vbox), hbox, 0, 0, 0); + gtk_widget_show (hbox); + + button = gtkutil_button (hbox, GTK_STOCK_ADD, 0, editlist_gui_addnew, + 0, _("Add New")); + gtk_widget_set_usize (button, 100, 0); + + button = gtkutil_button (hbox, GTK_STOCK_REMOVE, 0, editlist_gui_delete, + 0, _("Delete")); + gtk_widget_set_usize (button, 100, 0); + + button = gtk_vseparator_new (); + gtk_container_add (GTK_CONTAINER (hbox), button); + gtk_widget_show (button); + + button = gtkutil_button (hbox, GTK_STOCK_SORT_ASCENDING, 0, editlist_gui_sort, + 0, _("Sort")); + gtk_widget_set_usize (button, 100, 0); + + button = gtkutil_button (hbox, GTK_STOCK_HELP, 0, editlist_gui_help, + 0, _("Help")); + gtk_widget_set_usize (button, 100, 0); + + if (!help) + gtk_widget_set_sensitive (GTK_WIDGET (button), FALSE); + + hbox = gtk_hbox_new (0, 2); + gtk_box_pack_end (GTK_BOX (vbox), hbox, 0, 0, 0); + gtk_widget_show (hbox); + + editlist_gui_entry_name = gtk_entry_new_with_max_length (82); + gtk_widget_set_usize (editlist_gui_entry_name, 96, 0); + gtk_signal_connect (GTK_OBJECT (editlist_gui_entry_name), "changed", + GTK_SIGNAL_FUNC (editlist_gui_handle_name), 0); + gtk_box_pack_start (GTK_BOX (hbox), editlist_gui_entry_name, 0, 0, 0); + gtk_widget_show (editlist_gui_entry_name); + + editlist_gui_entry_cmd = gtk_entry_new_with_max_length (255); + gtk_signal_connect (GTK_OBJECT (editlist_gui_entry_cmd), "changed", + GTK_SIGNAL_FUNC (editlist_gui_handle_cmd), 0); + gtk_container_add (GTK_CONTAINER (hbox), editlist_gui_entry_cmd); + gtk_widget_show (editlist_gui_entry_cmd); + + hbox = gtk_hbox_new (0, 2); + gtk_box_pack_end (GTK_BOX (vbox), hbox, 0, 0, 0); + gtk_widget_show (hbox); + + editlist_gui_load (editlist_gui_list); + + gtk_widget_show (editlist_gui_window); +} diff --git a/etc/wyatt8740/src/fe-gtk/editlist.h b/etc/wyatt8740/src/fe-gtk/editlist.h new file mode 100644 index 0000000..f17cc2e --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/editlist.h @@ -0,0 +1 @@ +void editlist_gui_open (char *title1, char *title2, GSList * list, char *title, char *wmclass, char *file, char *help); diff --git a/etc/wyatt8740/src/fe-gtk/fe-gtk.c b/etc/wyatt8740/src/fe-gtk/fe-gtk.c new file mode 100644 index 0000000..a3a21aa --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/fe-gtk.c @@ -0,0 +1,1070 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <unistd.h> + +#include "fe-gtk.h" + +#include <gtk/gtkmain.h> +#include <gtk/gtkentry.h> +#include <gtk/gtkprogressbar.h> +#include <gtk/gtkbox.h> +#include <gtk/gtklabel.h> +#include <gtk/gtktogglebutton.h> +#include <gtk/gtkmessagedialog.h> +#include <gtk/gtkversion.h> + +#include "../common/xchat.h" +#include "../common/fe.h" +#include "../common/util.h" +#include "../common/text.h" +#include "../common/cfgfiles.h" +#include "../common/xchatc.h" +#include "../common/plugin.h" +#include "gtkutil.h" +#include "maingui.h" +#include "pixmaps.h" +#include "joind.h" +#include "xtext.h" +#include "palette.h" +#include "menu.h" +#include "notifygui.h" +#include "textgui.h" +#include "fkeys.h" +#include "plugin-tray.h" +#include "urlgrab.h" + +#ifdef USE_XLIB +#include <gdk/gdkx.h> +#include <gtk/gtkinvisible.h> +#endif + +#ifdef USE_GTKSPELL +#include <gtk/gtktextview.h> +#endif + +#ifdef WIN32 +#include <windows.h> +#endif + +GdkPixmap *channelwin_pix; + + +#ifdef USE_XLIB + +static void +redraw_trans_xtexts (void) +{ + GSList *list = sess_list; + session *sess; + int done_main = FALSE; + + while (list) + { + sess = list->data; + if (GTK_XTEXT (sess->gui->xtext)->transparent) + { + if (!sess->gui->is_tab || !done_main) + gtk_xtext_refresh (GTK_XTEXT (sess->gui->xtext), 1); + if (sess->gui->is_tab) + done_main = TRUE; + } + list = list->next; + } +} + +static GdkFilterReturn +root_event_cb (GdkXEvent *xev, GdkEventProperty *event, gpointer data) +{ + static Atom at = None; + XEvent *xevent = (XEvent *)xev; + + if (xevent->type == PropertyNotify) + { + if (at == None) + at = XInternAtom (xevent->xproperty.display, "_XROOTPMAP_ID", True); + + if (at == xevent->xproperty.atom) + redraw_trans_xtexts (); + } + + return GDK_FILTER_CONTINUE; +} + +#endif + +/* === command-line parameter parsing : requires glib 2.6 === */ + +static char *arg_cfgdir = NULL; +static gint arg_show_autoload = 0; +static gint arg_show_config = 0; +static gint arg_show_version = 0; +static gint arg_minimize = 0; + +static const GOptionEntry gopt_entries[] = +{ + {"no-auto", 'a', 0, G_OPTION_ARG_NONE, &arg_dont_autoconnect, N_("Don't auto connect to servers"), NULL}, + {"cfgdir", 'd', 0, G_OPTION_ARG_STRING, &arg_cfgdir, N_("Use a different config directory"), "PATH"}, + {"no-plugins", 'n', 0, G_OPTION_ARG_NONE, &arg_skip_plugins, N_("Don't auto load any plugins"), NULL}, + {"plugindir", 'p', 0, G_OPTION_ARG_NONE, &arg_show_autoload, N_("Show plugin auto-load directory"), NULL}, + {"configdir", 'u', 0, G_OPTION_ARG_NONE, &arg_show_config, N_("Show user config directory"), NULL}, + {"url", 0, 0, G_OPTION_ARG_STRING, &arg_url, N_("Open an irc://server:port/channel URL"), "URL"}, +#ifndef WIN32 /* uses DBUS */ + {"command", 'c', 0, G_OPTION_ARG_STRING, &arg_command, N_("Execute command:"), "COMMAND"}, + {"existing", 'e', 0, G_OPTION_ARG_NONE, &arg_existing, N_("Open URL or execute command in an existing XChat"), NULL}, +#endif + {"minimize", 0, 0, G_OPTION_ARG_INT, &arg_minimize, N_("Begin minimized. Level 0=Normal 1=Iconified 2=Tray"), N_("level")}, + {"version", 'v', 0, G_OPTION_ARG_NONE, &arg_show_version, N_("Show version information"), NULL}, + {NULL} +}; + +int +fe_args (int argc, char *argv[]) +{ + GError *error = NULL; + GOptionContext *context; + +#ifdef ENABLE_NLS + bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); + bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); + textdomain (GETTEXT_PACKAGE); +#endif + + context = g_option_context_new (NULL); + g_option_context_add_main_entries (context, gopt_entries, GETTEXT_PACKAGE); + g_option_context_add_group (context, gtk_get_option_group (FALSE)); + g_option_context_parse (context, &argc, &argv, &error); + + if (error) + { + if (error->message) + printf ("%s\n", error->message); + return 1; + } + + g_option_context_free (context); + + if (arg_show_version) + { + printf (PACKAGE_TARNAME" "PACKAGE_VERSION"\n"); + return 0; + } + + if (arg_show_autoload) + { +#ifdef WIN32 + /* see the chdir() below */ + char *sl, *exe = strdup (argv[0]); + sl = strrchr (exe, '\\'); + if (sl) + { + *sl = 0; + printf ("%s\\plugins\n", exe); + } +#else + printf ("%s\n", XCHATLIBDIR"/plugins"); +#endif + return 0; + } + + if (arg_show_config) + { + printf ("%s\n", get_xdir_fs ()); + return 0; + } + +#ifdef WIN32 + /* this is mainly for irc:// URL handling. When windows calls us from */ + /* I.E, it doesn't give an option of "Start in" directory, like short */ + /* cuts can. So we have to set the current dir manually, to the path */ + /* of the exe. */ + { + char *tmp = strdup (argv[0]); + char *sl; + + sl = strrchr (tmp, '\\'); + if (sl) + { + *sl = 0; + chdir (tmp); + } + free (tmp); + } +#endif + + if (arg_cfgdir) /* we want filesystem encoding */ + { + xdir_fs = strdup (arg_cfgdir); + if (xdir_fs[strlen (xdir_fs) - 1] == '/') + xdir_fs[strlen (xdir_fs) - 1] = 0; + g_free (arg_cfgdir); + } + + gtk_init (&argc, &argv); + +#ifdef USE_XLIB + gdk_window_set_events (gdk_get_default_root_window (), GDK_PROPERTY_CHANGE_MASK); + gdk_window_add_filter (gdk_get_default_root_window (), + (GdkFilterFunc)root_event_cb, NULL); +#endif + + return -1; +} + +const char cursor_color_rc[] = + "style \"xc-ib-st\"" + "{" +#ifdef USE_GTKSPELL + "GtkTextView::cursor-color=\"#%02x%02x%02x\"" +#else + "GtkEntry::cursor-color=\"#%02x%02x%02x\"" +#endif + "}" + "widget \"*.xchat-inputbox\" style : application \"xc-ib-st\""; + +GtkStyle * +create_input_style (GtkStyle *style) +{ + char buf[256]; + static int done_rc = FALSE; + + pango_font_description_free (style->font_desc); + style->font_desc = pango_font_description_from_string (prefs.font_normal); + + /* fall back */ + if (pango_font_description_get_size (style->font_desc) == 0) + { + snprintf (buf, sizeof (buf), _("Failed to open font:\n\n%s"), prefs.font_normal); + fe_message (buf, FE_MSG_ERROR); + pango_font_description_free (style->font_desc); + style->font_desc = pango_font_description_from_string ("sans 11"); + } + + if (prefs.style_inputbox && !done_rc) + { + done_rc = TRUE; + sprintf (buf, cursor_color_rc, (colors[COL_FG].red >> 8), + (colors[COL_FG].green >> 8), (colors[COL_FG].blue >> 8)); + gtk_rc_parse_string (buf); + } + + style->bg[GTK_STATE_NORMAL] = colors[COL_FG]; + style->base[GTK_STATE_NORMAL] = colors[COL_BG]; + style->text[GTK_STATE_NORMAL] = colors[COL_FG]; + + return style; +} + +void +fe_init (void) +{ + palette_load (); + key_init (); + pixmaps_init (); + + channelwin_pix = pixmap_load_from_file (prefs.background); + input_style = create_input_style (gtk_style_new ()); +} + +void +fe_main (void) +{ + gtk_main (); + + /* sleep for 3 seconds so any QUIT messages are not lost. The */ + /* GUI is closed at this point, so the user doesn't even know! */ + if (prefs.wait_on_exit) + sleep (3); +} + +void +fe_cleanup (void) +{ + /* it's saved when pressing OK in setup.c */ + /*palette_save ();*/ +} + +void +fe_exit (void) +{ + gtk_main_quit (); +} + +int +fe_timeout_add (int interval, void *callback, void *userdata) +{ + return g_timeout_add (interval, (GSourceFunc) callback, userdata); +} + +void +fe_timeout_remove (int tag) +{ + g_source_remove (tag); +} + +#ifdef WIN32 + +static void +log_handler (const gchar *log_domain, + GLogLevelFlags log_level, + const gchar *message, + gpointer unused_data) +{ + session *sess; + + if (getenv ("XCHAT_WARNING_IGNORE")) + return; + + sess = find_dialog (serv_list->data, "(warnings)"); + if (!sess) + sess = new_ircwindow (serv_list->data, "(warnings)", SESS_DIALOG, 0); + + PrintTextf (sess, "%s\t%s\n", log_domain, message); + if (getenv ("XCHAT_WARNING_ABORT")) + abort (); +} + +#endif + +/* install tray stuff */ + +static int +fe_idle (gpointer data) +{ + session *sess = sess_list->data; + + plugin_add (sess, NULL, NULL, tray_plugin_init, tray_plugin_deinit, NULL, FALSE); + + if (arg_minimize == 1) + gtk_window_iconify (GTK_WINDOW (sess->gui->window)); + else if (arg_minimize == 2) + tray_toggle_visibility (FALSE); + + return 0; +} + +void +fe_new_window (session *sess, int focus) +{ + int tab = FALSE; + + if (sess->type == SESS_DIALOG) + { + if (prefs.privmsgtab) + tab = TRUE; + } else + { + if (prefs.tabchannels) + tab = TRUE; + } + + mg_changui_new (sess, NULL, tab, focus); + +#ifdef WIN32 + g_log_set_handler ("GLib", G_LOG_LEVEL_CRITICAL|G_LOG_LEVEL_WARNING, (GLogFunc)log_handler, 0); + g_log_set_handler ("GLib-GObject", G_LOG_LEVEL_CRITICAL|G_LOG_LEVEL_WARNING, (GLogFunc)log_handler, 0); + g_log_set_handler ("Gdk", G_LOG_LEVEL_CRITICAL|G_LOG_LEVEL_WARNING, (GLogFunc)log_handler, 0); + g_log_set_handler ("Gtk", G_LOG_LEVEL_CRITICAL|G_LOG_LEVEL_WARNING, (GLogFunc)log_handler, 0); +#endif + + if (!sess_list->next) + g_idle_add (fe_idle, NULL); +} + +void +fe_new_server (struct server *serv) +{ + serv->gui = malloc (sizeof (struct server_gui)); + memset (serv->gui, 0, sizeof (struct server_gui)); +} + +void +fe_message (char *msg, int flags) +{ + GtkWidget *dialog; + int type = GTK_MESSAGE_WARNING; + + if (flags & FE_MSG_ERROR) + type = GTK_MESSAGE_ERROR; + if (flags & FE_MSG_INFO) + type = GTK_MESSAGE_INFO; + + dialog = gtk_message_dialog_new (GTK_WINDOW (parent_window), 0, type, + GTK_BUTTONS_OK, "%s", msg); + if (flags & FE_MSG_MARKUP) + gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (dialog), msg); + g_signal_connect (G_OBJECT (dialog), "response", + G_CALLBACK (gtk_widget_destroy), 0); + gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); + gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); + gtk_widget_show (dialog); + + if (flags & FE_MSG_WAIT) + gtk_dialog_run (GTK_DIALOG (dialog)); +} + +void +fe_idle_add (void *func, void *data) +{ + g_idle_add (func, data); +} + +void +fe_input_remove (int tag) +{ + g_source_remove (tag); +} + +int +fe_input_add (int sok, int flags, void *func, void *data) +{ + int tag, type = 0; + GIOChannel *channel; + +#ifdef WIN32 + if (flags & FIA_FD) + channel = g_io_channel_win32_new_fd (sok); + else + channel = g_io_channel_win32_new_socket (sok); +#else + channel = g_io_channel_unix_new (sok); +#endif + + if (flags & FIA_READ) + type |= G_IO_IN | G_IO_HUP | G_IO_ERR; + if (flags & FIA_WRITE) + type |= G_IO_OUT | G_IO_ERR; + if (flags & FIA_EX) + type |= G_IO_PRI; + + tag = g_io_add_watch (channel, type, (GIOFunc) func, data); + g_io_channel_unref (channel); + + return tag; +} + +void +fe_set_topic (session *sess, char *topic, char *stripped_topic) +{ + if (!sess->gui->is_tab || sess == current_tab) + { + gtk_entry_set_text (GTK_ENTRY (sess->gui->topic_entry), stripped_topic); + mg_set_topic_tip (sess); + } else + { + if (sess->res->topic_text) + free (sess->res->topic_text); + sess->res->topic_text = strdup (stripped_topic); + } +} + +void +fe_set_hilight (struct session *sess) +{ + if (sess->gui->is_tab) + fe_set_tab_color (sess, 3); /* set tab to blue */ + + if (prefs.input_flash_hilight) + fe_flash_window (sess); /* taskbar flash */ +} + +static void +fe_update_mode_entry (session *sess, GtkWidget *entry, char **text, char *new_text) +{ + if (!sess->gui->is_tab || sess == current_tab) + { + if (sess->gui->flag_wid[0]) /* channel mode buttons enabled? */ + gtk_entry_set_text (GTK_ENTRY (entry), new_text); + } else + { + if (sess->gui->is_tab) + { + if (*text) + free (*text); + *text = strdup (new_text); + } + } +} + +void +fe_update_channel_key (struct session *sess) +{ + fe_update_mode_entry (sess, sess->gui->key_entry, + &sess->res->key_text, sess->channelkey); + fe_set_title (sess); +} + +void +fe_update_channel_limit (struct session *sess) +{ + char tmp[16]; + + sprintf (tmp, "%d", sess->limit); + fe_update_mode_entry (sess, sess->gui->limit_entry, + &sess->res->limit_text, tmp); + fe_set_title (sess); +} + +int +fe_is_chanwindow (struct server *serv) +{ + if (!serv->gui->chanlist_window) + return 0; + return 1; +} + +int +fe_is_banwindow (struct session *sess) +{ + if (!sess->res->banlist_window) + return 0; + return 1; +} + +void +fe_notify_update (char *name) +{ + if (!name) + notify_gui_update (); +} + +void +fe_text_clear (struct session *sess, int lines) +{ + gtk_xtext_clear (sess->res->buffer, lines); +} + +void +fe_close_window (struct session *sess) +{ + if (sess->gui->is_tab) + mg_tab_close (sess); + else + gtk_widget_destroy (sess->gui->window); +} + +void +fe_progressbar_start (session *sess) +{ + if (!sess->gui->is_tab || current_tab == sess) + /* if it's the focused tab, create it for real! */ + mg_progressbar_create (sess->gui); + else + /* otherwise just remember to create on when it gets focused */ + sess->res->c_graph = TRUE; +} + +void +fe_progressbar_end (server *serv) +{ + GSList *list = sess_list; + session *sess; + + while (list) /* check all windows that use this server and * + * remove the connecting graph, if it has one. */ + { + sess = list->data; + if (sess->server == serv) + { + if (sess->gui->bar) + mg_progressbar_destroy (sess->gui); + sess->res->c_graph = FALSE; + } + list = list->next; + } +} + +void +fe_print_text (struct session *sess, char *text, time_t stamp) +{ + PrintTextRaw (sess->res->buffer, (unsigned char *)text, prefs.indent_nicks, stamp); + + if (!sess->new_data && sess != current_tab && + sess->gui->is_tab && !sess->nick_said && stamp == 0) + { + sess->new_data = TRUE; + if (sess->msg_said) + fe_set_tab_color (sess, 2); + else + fe_set_tab_color (sess, 1); + } +} + +void +fe_beep (void) +{ + gdk_beep (); +} + +#ifndef WIN32 +static int +lastlog_regex_cmp (char *a, regex_t *reg) +{ + return !regexec (reg, a, 1, NULL, REG_NOTBOL); +} +#endif + +void +fe_lastlog (session *sess, session *lastlog_sess, char *sstr, gboolean regexp) +{ +#ifndef WIN32 + regex_t reg; +#endif + + if (gtk_xtext_is_empty (sess->res->buffer)) + { + PrintText (lastlog_sess, _("Search buffer is empty.\n")); + return; + } + + if (!regexp) + { + gtk_xtext_lastlog (lastlog_sess->res->buffer, sess->res->buffer, + (void *) nocasestrstr, sstr); + return; + } + +#ifndef WIN32 + if (regcomp (®, sstr, REG_ICASE | REG_EXTENDED | REG_NOSUB) == 0) + { + gtk_xtext_lastlog (lastlog_sess->res->buffer, sess->res->buffer, + (void *) lastlog_regex_cmp, ®); + regfree (®); + } +#endif +} + +void +fe_set_lag (server *serv, int lag) +{ + GSList *list = sess_list; + session *sess; + gdouble per; + char lagtext[64]; + char lagtip[128]; + unsigned long nowtim; + + if (lag == -1) + { + if (!serv->lag_sent) + return; + nowtim = make_ping_time (); + lag = (nowtim - serv->lag_sent) / 100000; + } + + per = (double)((double)lag / (double)10); + if (per > 1.0) + per = 1.0; + + snprintf (lagtext, sizeof (lagtext) - 1, "%s%d.%ds", + serv->lag_sent ? "+" : "", lag / 10, lag % 10); + snprintf (lagtip, sizeof (lagtip) - 1, "Lag: %s%d.%d seconds", + serv->lag_sent ? "+" : "", lag / 10, lag % 10); + + while (list) + { + sess = list->data; + if (sess->server == serv) + { + if (sess->res->lag_tip) + free (sess->res->lag_tip); + sess->res->lag_tip = strdup (lagtip); + + if (!sess->gui->is_tab || current_tab == sess) + { + if (sess->gui->lagometer) + { + gtk_progress_bar_set_fraction ((GtkProgressBar *) sess->gui->lagometer, per); + add_tip (sess->gui->lagometer->parent, lagtip); + } + if (sess->gui->laginfo) + gtk_label_set_text ((GtkLabel *) sess->gui->laginfo, lagtext); + } else + { + sess->res->lag_value = per; + if (sess->res->lag_text) + free (sess->res->lag_text); + sess->res->lag_text = strdup (lagtext); + } + } + list = list->next; + } +} + +void +fe_set_throttle (server *serv) +{ + GSList *list = sess_list; + struct session *sess; + float per; + char tbuf[96]; + char tip[160]; + + per = (float) serv->sendq_len / 1024.0; + if (per > 1.0) + per = 1.0; + + while (list) + { + sess = list->data; + if (sess->server == serv) + { + snprintf (tbuf, sizeof (tbuf) - 1, _("%d bytes"), serv->sendq_len); + snprintf (tip, sizeof (tip) - 1, _("Network send queue: %d bytes"), serv->sendq_len); + + if (sess->res->queue_tip) + free (sess->res->queue_tip); + sess->res->queue_tip = strdup (tip); + + if (!sess->gui->is_tab || current_tab == sess) + { + if (sess->gui->throttlemeter) + { + gtk_progress_bar_set_fraction ((GtkProgressBar *) sess->gui->throttlemeter, per); + add_tip (sess->gui->throttlemeter->parent, tip); + } + if (sess->gui->throttleinfo) + gtk_label_set_text ((GtkLabel *) sess->gui->throttleinfo, tbuf); + } else + { + sess->res->queue_value = per; + if (sess->res->queue_text) + free (sess->res->queue_text); + sess->res->queue_text = strdup (tbuf); + } + } + list = list->next; + } +} + +void +fe_ctrl_gui (session *sess, fe_gui_action action, int arg) +{ + switch (action) + { + case FE_GUI_HIDE: + gtk_widget_hide (sess->gui->window); break; + case FE_GUI_SHOW: + gtk_widget_show (sess->gui->window); + gtk_window_present (GTK_WINDOW (sess->gui->window)); + break; + case FE_GUI_FOCUS: + mg_bring_tofront_sess (sess); break; + case FE_GUI_FLASH: + fe_flash_window (sess); break; + case FE_GUI_COLOR: + fe_set_tab_color (sess, arg); break; + case FE_GUI_ICONIFY: + gtk_window_iconify (GTK_WINDOW (sess->gui->window)); break; + case FE_GUI_MENU: + menu_bar_toggle (); /* toggle menubar on/off */ + break; + case FE_GUI_ATTACH: + mg_detach (sess, arg); /* arg: 0=toggle 1=detach 2=attach */ + break; + case FE_GUI_APPLY: + setup_apply_real (TRUE, TRUE); + } +} + +static void +dcc_saveas_cb (struct DCC *dcc, char *file) +{ + if (is_dcc (dcc)) + { + if (dcc->dccstat == STAT_QUEUED) + { + if (file) + dcc_get_with_destfile (dcc, file); + else if (dcc->resume_sent == 0) + dcc_abort (dcc->serv->front_session, dcc); + } + } +} + +void +fe_confirm (const char *message, void (*yesproc)(void *), void (*noproc)(void *), void *ud) +{ + /* warning, assuming fe_confirm is used by DCC only! */ + struct DCC *dcc = ud; + + if (dcc->file) + gtkutil_file_req (message, dcc_saveas_cb, ud, dcc->file, + FRF_WRITE|FRF_FILTERISINITIAL|FRF_NOASKOVERWRITE); +} + +int +fe_gui_info (session *sess, int info_type) +{ + switch (info_type) + { + case 0: /* window status */ +#if GTK_CHECK_VERSION(2,20,0) + if (!gtk_widget_get_visible (GTK_WINDOW (sess->gui->window))) +#else + if (!GTK_WIDGET_VISIBLE (GTK_WINDOW (sess->gui->window))) +#endif + return 2; /* hidden (iconified or systray) */ +#if GTK_CHECK_VERSION(2,4,0) + if (gtk_window_is_active (GTK_WINDOW (sess->gui->window))) +#else +#if GTK_CHECK_VERSION(2,2,0) + if (GTK_WINDOW (sess->gui->window)->is_active) +#endif +#endif + return 1; /* active/focused */ + + return 0; /* normal (no keyboard focus or behind a window) */ + } + + return -1; +} + +void * +fe_gui_info_ptr (session *sess, int info_type) +{ + switch (info_type) + { + case 0: /* native window pointer (for plugins) */ +#ifdef WIN32 + return GDK_WINDOW_HWND (sess->gui->window->window); +#else + return sess->gui->window; +#endif + } + return NULL; +} + +char * +fe_get_inputbox_contents (session *sess) +{ + /* not the current tab */ + if (sess->res->input_text) + return sess->res->input_text; + + /* current focused tab */ + return SPELL_ENTRY_GET_TEXT (sess->gui->input_box); +} + +int +fe_get_inputbox_cursor (session *sess) +{ + /* not the current tab (we don't remember the cursor pos) */ + if (sess->res->input_text) + return 0; + + /* current focused tab */ + return SPELL_ENTRY_GET_POS (sess->gui->input_box); +} + +void +fe_set_inputbox_cursor (session *sess, int delta, int pos) +{ + if (!sess->gui->is_tab || sess == current_tab) + { + if (delta) + pos += SPELL_ENTRY_GET_POS (sess->gui->input_box); + SPELL_ENTRY_SET_POS (sess->gui->input_box, pos); + } else + { + /* we don't support changing non-front tabs yet */ + } +} + +void +fe_set_inputbox_contents (session *sess, char *text) +{ + if (!sess->gui->is_tab || sess == current_tab) + { + SPELL_ENTRY_SET_TEXT (sess->gui->input_box, text); + } else + { + if (sess->res->input_text) + free (sess->res->input_text); + sess->res->input_text = strdup (text); + } +} + +#ifndef WIN32 + +static gboolean +try_browser (const char *browser, const char *arg, const char *url) +{ + const char *argv[4]; + char *path; + + path = g_find_program_in_path (browser); + if (!path) + return 0; + + argv[0] = path; + argv[1] = url; + argv[2] = NULL; + if (arg) + { + argv[1] = arg; + argv[2] = url; + argv[3] = NULL; + } + xchat_execv (argv); + g_free (path); + return 1; +} + +#endif + +static void +fe_open_url_inner (const char *url) +{ + char buf[256]; + +#ifdef WIN32 + ShellExecute (0, "open", url, NULL, NULL, SW_SHOWNORMAL); +#else + /* universal desktop URL opener (from xdg-utils). Supports gnome,kde,xfce4. */ + if (try_browser ("xdg-open", NULL, url)) + return; + fprintf( stderr, "fe_open_url_inner: failed to open %s with xdg-open\n", url ); + + /* try to detect GNOME */ + if (g_getenv ("GNOME_DESKTOP_SESSION_ID")) + { + if (try_browser ("gnome-open", NULL, url)) /* Gnome 2.4+ has this */ + return; + fprintf( stderr, "fe_open_url_inner: failed to open %s with gnome-open\n", url ); + } + + /* try to detect KDE */ + if (g_getenv ("KDE_FULL_SESSION")) + { + if (try_browser ("kfmclient", "exec", url)) + return; + fprintf( stderr, "fe_open_url_inner: failed to open %s with kfmclient\n", url ); + } + + /* everything failed, what now? just try firefox */ + if (try_browser ("firefox", NULL, url)) + return; + fprintf( stderr, "fe_open_url_inner: failed to open %s with firefox\n", url ); + + if (try_browser ("mozilla", NULL, url)) + return; + fprintf( stderr, "fe_open_url_inner: failed to open %s with mozilla\n", url ); + + /* fresh out of ideas... */ + snprintf (buf, sizeof (buf), "Failed to open url:\n\n%s", url); + fe_message (buf, FE_MSG_ERROR); +#endif +} + +static void +fe_open_url_locale (const char *url) +{ +#ifndef WIN32 + if (url[0] != '/' && strchr (url, ':') == NULL) + { + url = g_strdup_printf ("http://%s", url); + fe_open_url_inner (url); + g_free ((char *)url); + return; + } +#endif + fe_open_url_inner (url); +} + +void +fe_open_url (const char *url) +{ + char *loc; + + if (prefs.utf8_locale) + { + fe_open_url_locale (url); + return; + } + + /* the OS expects it in "locale" encoding. This makes it work on + unix systems that use ISO-8859-x and Win32. */ + loc = g_locale_from_utf8 (url, -1, 0, 0, 0); + if (loc) + { + fe_open_url_locale (loc); + g_free (loc); + } +} + +void +fe_server_event (server *serv, int type, int arg) +{ + GSList *list = sess_list; + session *sess; + + while (list) + { + sess = list->data; + if (sess->server == serv && (current_tab == sess || !sess->gui->is_tab)) + { + session_gui *gui = sess->gui; + + switch (type) + { + case FE_SE_CONNECTING: /* connecting in progress */ + case FE_SE_RECONDELAY: /* reconnect delay begun */ + /* enable Disconnect item */ + gtk_widget_set_sensitive (gui->menu_item[MENU_ID_DISCONNECT], 1); + break; + + case FE_SE_CONNECT: + /* enable Disconnect and Away menu items */ + gtk_widget_set_sensitive (gui->menu_item[MENU_ID_AWAY], 1); + gtk_widget_set_sensitive (gui->menu_item[MENU_ID_DISCONNECT], 1); + break; + + case FE_SE_LOGGEDIN: /* end of MOTD */ + gtk_widget_set_sensitive (gui->menu_item[MENU_ID_JOIN], 1); + /* if number of auto-join channels is zero, open joind */ + if (arg == 0) + joind_open (serv); + break; + + case FE_SE_DISCONNECT: + /* disable Disconnect and Away menu items */ + gtk_widget_set_sensitive (gui->menu_item[MENU_ID_AWAY], 0); + gtk_widget_set_sensitive (gui->menu_item[MENU_ID_DISCONNECT], 0); + gtk_widget_set_sensitive (gui->menu_item[MENU_ID_JOIN], 0); + /* close the join-dialog, if one exists */ + joind_close (serv); + } + } + list = list->next; + } +} + +void +fe_get_file (const char *title, char *initial, + void (*callback) (void *userdata, char *file), void *userdata, + int flags) + +{ + /* OK: Call callback once per file, then once more with file=NULL. */ + /* CANCEL: Call callback once with file=NULL. */ + gtkutil_file_req (title, callback, userdata, initial, flags | FRF_FILTERISINITIAL); +} diff --git a/etc/wyatt8740/src/fe-gtk/fe-gtk.h b/etc/wyatt8740/src/fe-gtk/fe-gtk.h new file mode 100644 index 0000000..1251625 --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/fe-gtk.h @@ -0,0 +1,197 @@ +#include "../../config.h" + +#ifdef WIN32 +/* If you're compiling this for Windows, your release is un-official + * and not condoned. Please don't use the XChat name. Make up your + * own name! */ +#define DISPLAY_NAME "XChat-Unofficial" +#else +#define DISPLAY_NAME "XChat" +#endif + +#ifndef WIN32 +#include <sys/types.h> +#include <regex.h> +#endif + +#if defined(ENABLE_NLS) && !defined(_) +# include <libintl.h> +# define _(x) gettext(x) +# ifdef gettext_noop +# define N_(String) gettext_noop (String) +# else +# define N_(String) (String) +# endif +#endif +#if !defined(ENABLE_NLS) && defined(_) +# undef _ +# define N_(String) (String) +# define _(x) (x) +#endif + +#include <gtk/gtkwidget.h> +#include <gtk/gtkcontainer.h> +#include <gtk/gtksignal.h> + +#undef gtk_signal_connect +#define gtk_signal_connect g_signal_connect + +#define flag_t flag_wid[0] +#define flag_n flag_wid[1] +#define flag_s flag_wid[2] +#define flag_i flag_wid[3] +#define flag_p flag_wid[4] +#define flag_m flag_wid[5] +#define flag_l flag_wid[6] +#define flag_k flag_wid[7] +#define flag_b flag_wid[8] +#define NUM_FLAG_WIDS 9 + +struct server_gui +{ + GtkWidget *rawlog_window; + GtkWidget *rawlog_textlist; + + /* join dialog */ + GtkWidget *joind_win; + GtkWidget *joind_entry; + GtkWidget *joind_radio1; + GtkWidget *joind_radio2; + GtkWidget *joind_check; + + /* chanlist variables */ + GtkWidget *chanlist_wild; /* GtkEntry */ + GtkWidget *chanlist_window; + GtkWidget *chanlist_list; + GtkWidget *chanlist_label; + GtkWidget *chanlist_min_spin; /* minusers GtkSpinButton */ + GtkWidget *chanlist_refresh; /* buttons */ + GtkWidget *chanlist_join; + GtkWidget *chanlist_savelist; + GtkWidget *chanlist_search; + + GSList *chanlist_data_stored_rows; /* stored list so it can be resorted */ + GSList *chanlist_pending_rows; + gint chanlist_tag; + gint chanlist_flash_tag; + + gboolean chanlist_match_wants_channel; /* match in channel name */ + gboolean chanlist_match_wants_topic; /* match in topic */ + +#ifndef WIN32 + regex_t chanlist_match_regex; /* compiled regular expression here */ + unsigned int have_regex; +#endif + + guint chanlist_users_found_count; /* users total for all channels */ + guint chanlist_users_shown_count; /* users total for displayed channels */ + guint chanlist_channels_found_count; /* channel total for /LIST operation */ + guint chanlist_channels_shown_count; /* total number of displayed + channels */ + + int chanlist_maxusers; + int chanlist_minusers; + int chanlist_minusers_downloaded; /* used by LIST IRC command */ + int chanlist_search_type; /* 0=simple 1=pattern/wildcard 2=regexp */ + gboolean chanlist_caption_is_stale; +}; + +/* this struct is persistant even when delinking/relinking */ + +typedef struct restore_gui +{ + /* banlist stuff */ + GtkWidget *banlist_window; + GtkWidget *banlist_treeview; + GtkWidget *banlist_butRefresh; + + void *tab; /* (chan *) */ + + /* information stored when this tab isn't front-most */ + void *user_model; /* for filling the GtkTreeView */ + void *buffer; /* xtext_Buffer */ + char *input_text; /* input text buffer (while not-front tab) */ + char *topic_text; /* topic GtkEntry buffer */ + char *key_text; + char *limit_text; + gfloat old_ul_value; /* old userlist value (for adj) */ + gfloat lag_value; /* lag-o-meter */ + char *lag_text; /* lag-o-meter text */ + char *lag_tip; /* lag-o-meter tooltip */ + gfloat queue_value; /* outbound queue meter */ + char *queue_text; /* outbound queue text */ + char *queue_tip; /* outbound queue tooltip */ + short flag_wid_state[NUM_FLAG_WIDS]; + unsigned int c_graph:1; /* connecting graph, is there one? */ +} restore_gui; + +typedef struct session_gui +{ + GtkWidget + *xtext, + *vscrollbar, + *window, /* toplevel */ + *topic_entry, + *note_book, + *main_table, + *user_tree, /* GtkTreeView */ + *user_box, /* userlist box */ + *button_box_parent, + *button_box, /* userlist buttons' box */ + *dialogbutton_box, + *topicbutton_box, + *meter_box, /* all the meters inside this */ + *lagometer, + *laginfo, + *throttlemeter, + *throttleinfo, + *topic_bar, + *hpane_left, + *hpane_right, + *vpane_left, + *vpane_right, + *menu, + *bar, /* connecting progress bar */ + *nick_box, /* contains label to the left of input_box */ + *nick_label, + *op_xpm, /* icon to the left of nickname */ + *namelistinfo, /* label above userlist */ + *input_box, + *flag_wid[NUM_FLAG_WIDS], /* channelmode buttons */ + *limit_entry, /* +l */ + *key_entry; /* +k */ + +#define MENU_ID_NUM 12 + GtkWidget *menu_item[MENU_ID_NUM+1]; /* some items we may change state of */ + + void *chanview; /* chanview.h */ + + int bartag; /*connecting progressbar timeout */ + + int pane_left_size; /*last position of the pane*/ + int pane_right_size; + + guint16 is_tab; /* is tab or toplevel? */ + guint16 ul_hidden; /* userlist hidden? */ + +} session_gui; + +extern GdkPixmap *channelwin_pix; +extern GdkPixmap *dialogwin_pix; + + +#ifdef USE_GTKSPELL +char *SPELL_ENTRY_GET_TEXT (GtkWidget *entry); +#define SPELL_ENTRY_SET_TEXT(e,txt) gtk_text_buffer_set_text (gtk_text_view_get_buffer(GTK_TEXT_VIEW(e)),txt,-1); +#define SPELL_ENTRY_SET_EDITABLE(e,v) gtk_text_view_set_editable(GTK_TEXT_VIEW(e), v) +int SPELL_ENTRY_GET_POS (GtkWidget *entry); +void SPELL_ENTRY_SET_POS (GtkWidget *entry, int pos); +void SPELL_ENTRY_INSERT (GtkWidget *entry, const char *text, int len, int *pos); +#else +#define SPELL_ENTRY_GET_TEXT(e) (GTK_ENTRY(e)->text) +#define SPELL_ENTRY_SET_TEXT(e,txt) gtk_entry_set_text(GTK_ENTRY(e),txt) +#define SPELL_ENTRY_SET_EDITABLE(e,v) gtk_editable_set_editable(GTK_EDITABLE(e),v) +#define SPELL_ENTRY_GET_POS(e) gtk_editable_get_position(GTK_EDITABLE(e)) +#define SPELL_ENTRY_SET_POS(e,p) gtk_editable_set_position(GTK_EDITABLE(e),p); +#define SPELL_ENTRY_INSERT(e,t,l,p) gtk_editable_insert_text(GTK_EDITABLE(e),t,l,p) +#endif diff --git a/etc/wyatt8740/src/fe-gtk/fkeys.c b/etc/wyatt8740/src/fe-gtk/fkeys.c new file mode 100644 index 0000000..358bec1 --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/fkeys.c @@ -0,0 +1,1863 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <unistd.h> +#include <string.h> +#include <fcntl.h> +#include <ctype.h> + +#include "fe-gtk.h" + +#include <gtk/gtklabel.h> +#include <gtk/gtkeditable.h> +#include <gtk/gtkmenu.h> +#include <gtk/gtkmenuitem.h> +#include <gtk/gtkoptionmenu.h> +#include <gtk/gtkvbox.h> +#include <gtk/gtkhbox.h> +#include <gtk/gtkclist.h> +#include <gtk/gtknotebook.h> +#include <gtk/gtkcheckbutton.h> +#include <gtk/gtkentry.h> +#include <gtk/gtkvscrollbar.h> + +#include "../common/xchat.h" +#include "../common/xchatc.h" +#include "../common/cfgfiles.h" +#include "../common/fe.h" +#include "../common/userlist.h" +#include "../common/outbound.h" +#include "../common/util.h" +#include "../common/text.h" +#include "../common/plugin.h" +#include <gdk/gdkkeysyms.h> +#include "gtkutil.h" +#include "menu.h" +#include "xtext.h" +#include "palette.h" +#include "maingui.h" +#include "textgui.h" +#include "fkeys.h" + +#ifdef USE_GTKSPELL +#include <gtk/gtktextview.h> +#endif + +static void replace_handle (GtkWidget * wid); +void key_action_tab_clean (void); + +/***************** Key Binding Code ******************/ + +/* NOTES: + + To add a new action: + 1) inc KEY_MAX_ACTIONS + 2) write the function at the bottom of this file (with all the others) + FIXME: Write about calling and returning + 3) Add it to key_actions + + --AGL + + */ + +/* Remember that the *number* of actions is this *plus* 1 --AGL */ +#define KEY_MAX_ACTIONS 14 +/* These are cp'ed from history.c --AGL */ +#define STATE_SHIFT GDK_SHIFT_MASK +#define STATE_ALT GDK_MOD1_MASK +#define STATE_CTRL GDK_CONTROL_MASK + +struct key_binding +{ + int keyval; /* GDK keynumber */ + char *keyname; /* String with the name of the function */ + int action; /* Index into key_actions */ + int mod; /* Flags of STATE_* above */ + char *data1, *data2; /* Pointers to strings, these must be freed */ + struct key_binding *next; +}; + +struct key_action +{ + int (*handler) (GtkWidget * wid, GdkEventKey * evt, char *d1, char *d2, + struct session * sess); + char *name; + char *help; +}; + +struct gcomp_data +{ + char data[CHANLEN]; + int elen; +}; + +static int key_load_kbs (char *); +static void key_load_defaults (); +static void key_save_kbs (char *); +static int key_action_handle_command (GtkWidget * wid, GdkEventKey * evt, + char *d1, char *d2, + struct session *sess); +static int key_action_page_switch (GtkWidget * wid, GdkEventKey * evt, + char *d1, char *d2, struct session *sess); +int key_action_insert (GtkWidget * wid, GdkEventKey * evt, char *d1, char *d2, + struct session *sess); +static int key_action_scroll_page (GtkWidget * wid, GdkEventKey * evt, + char *d1, char *d2, struct session *sess); +static int key_action_set_buffer (GtkWidget * wid, GdkEventKey * evt, + char *d1, char *d2, struct session *sess); +static int key_action_history_up (GtkWidget * wid, GdkEventKey * evt, + char *d1, char *d2, struct session *sess); +static int key_action_history_down (GtkWidget * wid, GdkEventKey * evt, + char *d1, char *d2, struct session *sess); +static int key_action_tab_comp (GtkWidget * wid, GdkEventKey * evt, char *d1, + char *d2, struct session *sess); +static int key_action_comp_chng (GtkWidget * wid, GdkEventKey * evt, char *d1, + char *d2, struct session *sess); +static int key_action_replace (GtkWidget * wid, GdkEventKey * evt, char *d1, + char *d2, struct session *sess); +static int key_action_move_tab_left (GtkWidget * wid, GdkEventKey * evt, + char *d1, char *d2, + struct session *sess); +static int key_action_move_tab_right (GtkWidget * wid, GdkEventKey * evt, + char *d1, char *d2, + struct session *sess); +static int key_action_move_tab_family_left (GtkWidget * wid, GdkEventKey * evt, + char *d1, char *d2, + struct session *sess); +static int key_action_move_tab_family_right (GtkWidget * wid, GdkEventKey * evt, + char *d1, char *d2, + struct session *sess); +static int key_action_put_history (GtkWidget * wid, GdkEventKey * evt, + char *d1, char *d2, + struct session *sess); + +static GtkWidget *key_dialog; +static struct key_binding *keys_root = NULL; + +static const struct key_action key_actions[KEY_MAX_ACTIONS + 1] = { + + {key_action_handle_command, "Run Command", + N_("The \002Run Command\002 action runs the data in Data 1 as if it has been typed into the entry box where you pressed the key sequence. Thus it can contain text (which will be sent to the channel/person), commands or user commands. When run all \002\\n\002 characters in Data 1 are used to deliminate seperate commands so it is possible to run more than one command. If you want a \002\\\002 in the actual text run then enter \002\\\\\002")}, + {key_action_page_switch, "Change Page", + N_("The \002Change Page\002 command switches between pages in the notebook. Set Data 1 to the page you want to switch to. If Data 2 is set to anything then the switch will be relative to the current position")}, + {key_action_insert, "Insert in Buffer", + N_("The \002Insert in Buffer\002 command will insert the contents of Data 1 into the entry where the key sequence was pressed at the current cursor position")}, + {key_action_scroll_page, "Scroll Page", + N_("The \002Scroll Page\002 command scrolls the text widget up or down one page or one line. Set Data 1 to either Up, Down, +1 or -1.")}, + {key_action_set_buffer, "Set Buffer", + N_("The \002Set Buffer\002 command sets the entry where the key sequence was entered to the contents of Data 1")}, + {key_action_history_up, "Last Command", + N_("The \002Last Command\002 command sets the entry to contain the last command entered - the same as pressing up in a shell")}, + {key_action_history_down, "Next Command", + N_("The \002Next Command\002 command sets the entry to contain the next command entered - the same as pressing down in a shell")}, + {key_action_tab_comp, "Complete nick/command", + N_("This command changes the text in the entry to finish an incomplete nickname or command. If Data 1 is set then double-tabbing in a string will select the last nick, not the next")}, + {key_action_comp_chng, "Change Selected Nick", + N_("This command scrolls up and down through the list of nicks. If Data 1 is set to anything it will scroll up, else it scrolls down")}, + {key_action_replace, "Check For Replace", + N_("This command checks the last word entered in the entry against the replace list and replaces it if it finds a match")}, + {key_action_move_tab_left, "Move front tab left", + N_("This command moves the front tab left by one")}, + {key_action_move_tab_right, "Move front tab right", + N_("This command moves the front tab right by one")}, + {key_action_move_tab_family_left, "Move tab family left", + N_("This command moves the current tab family to the left")}, + {key_action_move_tab_family_right, "Move tab family right", + N_("This command moves the current tab family to the right")}, + {key_action_put_history, "Push input line into history", + N_("Push input line into history but doesn't send to server")}, +}; + +void +key_init () +{ + keys_root = NULL; + if (key_load_kbs (NULL) == 1) + { + key_load_defaults (); + if (key_load_kbs (NULL) == 1) + fe_message (_("There was an error loading key" + " bindings configuration"), FE_MSG_ERROR); + } +} + +static char * +key_get_key_name (int keyval) +{ + return gdk_keyval_name (gdk_keyval_to_lower (keyval)); +} + +/* Ok, here are the NOTES + + key_handle_key_press now handles all the key presses and history_keypress is + now defunct. It goes thru the linked list keys_root and finds a matching + key. It runs the action func and switches on these values: + 0) Return + 1) Find next + 2) stop signal and return + + * history_keypress is now dead (and gone) + * key_handle_key_press now takes its role + * All the possible actions are in a struct called key_actions (in fkeys.c) + * it is made of {function, name, desc} + * key bindings can pass 2 *text* strings to the handler. If more options are nee + ded a format can be put on one of these options + * key actions are passed { + the entry widget + the Gdk event + data 1 + data 2 + session struct + } + * key bindings are stored in a linked list of key_binding structs + * which looks like { + int keyval; GDK keynumber + char *keyname; String with the name of the function + int action; Index into key_actions + int mod; Flags of STATE_* above + char *data1, *data2; Pointers to strings, these must be freed + struct key_binding *next; + } + * remember that is (data1 || data2) != NULL then they need to be free()'ed + + --AGL + + */ + +gboolean +key_handle_key_press (GtkWidget *wid, GdkEventKey *evt, session *sess) +{ + struct key_binding *kb, *last = NULL; + int keyval = evt->keyval; + int mod, n; + GSList *list; + + /* where did this event come from? */ + list = sess_list; + while (list) + { + sess = list->data; + if (sess->gui->input_box == wid) + { + if (sess->gui->is_tab) + sess = current_tab; + break; + } + list = list->next; + } + if (!list) + return FALSE; + current_sess = sess; + + if (plugin_emit_keypress (sess, evt->state, evt->keyval, evt->length, evt->string)) + return 1; + + /* maybe the plugin closed this tab? */ + if (!is_session (sess)) + return 1; + + mod = evt->state & (STATE_CTRL | STATE_ALT | STATE_SHIFT); + + kb = keys_root; + while (kb) + { + if (kb->keyval == keyval && kb->mod == mod) + { + if (kb->action < 0 || kb->action > KEY_MAX_ACTIONS) + return 0; + + /* Bump this binding to the top of the list */ + if (last != NULL) + { + last->next = kb->next; + kb->next = keys_root; + keys_root = kb; + } + /* Run the function */ + n = key_actions[kb->action].handler (wid, evt, kb->data1, + kb->data2, sess); + switch (n) + { + case 0: + return 1; + case 2: + g_signal_stop_emission_by_name (G_OBJECT (wid), + "key_press_event"); + return 1; + } + } + last = kb; + kb = kb->next; + } + + switch (keyval) + { + case GDK_space: + key_action_tab_clean (); + break; + +#if defined(USE_GTKSPELL) && !defined(WIN32) + /* gtktextview has no 'activate' event, so we trap ENTER here */ + case GDK_Return: + case GDK_KP_Enter: + if (!(evt->state & GDK_CONTROL_MASK)) + { + g_signal_stop_emission_by_name (G_OBJECT (wid), "key_press_event"); + mg_inputbox_cb (wid, sess->gui); + } +#endif + } + + return 0; +} + +/* Walks keys_root and free()'s everything */ +/*static void +key_free_all () +{ + struct key_binding *cur, *next; + + cur = keys_root; + while (cur) + { + next = cur->next; + if (cur->data1) + free (cur->data1); + if (cur->data2) + free (cur->data2); + free (cur); + cur = next; + } + keys_root = NULL; +}*/ + +/* Turns mod flags into a C-A-S string */ +static char * +key_make_mod_str (int mod, char *buf) +{ + int i = 0; + + if (mod & STATE_CTRL) + { + if (i) + buf[i++] = '-'; + buf[i++] = 'C'; + } + if (mod & STATE_ALT) + { + if (i) + buf[i++] = '-'; + buf[i++] = 'A'; + } + if (mod & STATE_SHIFT) + { + if (i) + buf[i++] = '-'; + buf[i++] = 'S'; + } + buf[i] = 0; + return buf; +} + +/* ***** GUI code here ******************* */ + +/* NOTE: The key_dialog defin is above --AGL */ +static GtkWidget *key_dialog_act_menu, *key_dialog_kb_clist; +static GtkWidget *key_dialog_tog_c, *key_dialog_tog_s, *key_dialog_tog_a; +static GtkWidget *key_dialog_ent_key, *key_dialog_ent_d1, *key_dialog_ent_d2; +static GtkWidget *key_dialog_text; + +static void +key_load_defaults () +{ + /* This is the default config */ +#define defcfg \ + "C\nPrior\nChange Page\nD1:-1\nD2:Relative\n\n"\ + "C\nNext\nChange Page\nD1:1\nD2:Relative\n\n"\ + "A\n9\nChange Page\nD1:9\nD2!\n\n"\ + "A\n8\nChange Page\nD1:8\nD2!\n\n"\ + "A\n7\nChange Page\nD1:7\nD2!\n\n"\ + "A\n6\nChange Page\nD1:6\nD2!\n\n"\ + "A\n5\nChange Page\nD1:5\nD2!\n\n"\ + "A\n4\nChange Page\nD1:4\nD2!\n\n"\ + "A\n3\nChange Page\nD1:3\nD2!\n\n"\ + "A\n2\nChange Page\nD1:2\nD2!\n\n"\ + "A\n1\nChange Page\nD1:1\nD2!\n\n"\ + "C\no\nInsert in Buffer\nD1:\nD2!\n\n"\ + "C\nb\nInsert in Buffer\nD1:\nD2!\n\n"\ + "C\nk\nInsert in Buffer\nD1:\nD2!\n\n"\ + "S\nNext\nChange Selected Nick\nD1!\nD2!\n\n"\ + "S\nPrior\nChange Selected Nick\nD1:Up\nD2!\n\n"\ + "None\nNext\nScroll Page\nD1:Down\nD2!\n\n"\ + "None\nPrior\nScroll Page\nD1:Up\nD2!\n\n"\ + "S\nDown\nScroll Page\nD1:+1\nD2!\n\n"\ + "S\nUp\nScroll Page\nD1:-1\nD2!\n\n"\ + "None\nDown\nNext Command\nD1!\nD2!\n\n"\ + "None\nUp\nLast Command\nD1!\nD2!\n\n"\ + "None\nTab\nComplete nick/command\nD1!\nD2!\n\n"\ + "None\nspace\nCheck For Replace\nD1!\nD2!\n\n"\ + "None\nReturn\nCheck For Replace\nD1!\nD2!\n\n"\ + "None\nKP_Enter\nCheck For Replace\nD1!\nD2!\n\n"\ + "C\nTab\nComplete nick/command\nD1:Up\nD2!\n\n"\ + "A\nLeft\nMove front tab left\nD1!\nD2!\n\n"\ + "A\nRight\nMove front tab right\nD1!\nD2!\n\n"\ + "CS\nPrior\nMove tab family left\nD1!\nD2!\n\n"\ + "CS\nNext\nMove tab family right\nD1!\nD2!\n\n"\ + "None\nF9\nRun Command\nD1:/GUI MENU TOGGLE\nD2!\n\n" + int fd; + + fd = xchat_open_file ("keybindings.conf", O_CREAT | O_TRUNC | O_WRONLY, 0x180, XOF_DOMODE); + if (fd < 0) + /* ???!!! */ + return; + + write (fd, defcfg, strlen (defcfg)); + close (fd); +} + +static void +key_dialog_close () +{ + key_dialog = NULL; + key_save_kbs (NULL); +} + +static void +key_dialog_add_new (GtkWidget * button, GtkCList * list) +{ + gchar *strs[] = { "", NULL, NULL, NULL, NULL }; + struct key_binding *kb; + + strs[1] = _("<none>"); + strs[2] = _("<none>"); + strs[3] = _("<none>"); + strs[4] = _("<none>"); + + kb = malloc (sizeof (struct key_binding)); + + kb->keyval = 0; + kb->keyname = NULL; + kb->action = -1; + kb->mod = 0; + kb->data1 = kb->data2 = NULL; + kb->next = keys_root; + + keys_root = kb; + + gtk_clist_set_row_data (GTK_CLIST (list), + gtk_clist_append (GTK_CLIST (list), strs), kb); + +} + +static void +key_dialog_delete (GtkWidget * button, GtkCList * list) +{ + struct key_binding *kb, *cur, *last; + int row = gtkutil_clist_selection ((GtkWidget *) list); + + if (row != -1) + { + kb = gtk_clist_get_row_data (list, row); + cur = keys_root; + last = NULL; + while (cur) + { + if (cur == kb) + { + if (last) + last->next = kb->next; + else + keys_root = kb->next; + + if (kb->data1) + free (kb->data1); + if (kb->data2) + free (kb->data2); + free (kb); + gtk_clist_remove (list, row); + return; + } + last = cur; + cur = cur->next; + } + printf ("*** key_dialog_delete: couldn't find kb in list!\n"); + /*if (getenv ("XCHAT_DEBUG")) + abort ();*/ + } +} + +static void +key_print_text (GtkXText *xtext, char *text) +{ + unsigned int old = prefs.timestamp; + prefs.timestamp = 0; /* temporarily disable stamps */ + gtk_xtext_clear (GTK_XTEXT (xtext)->buffer, 0); + PrintTextRaw (GTK_XTEXT (xtext)->buffer, text, 0, 0); + prefs.timestamp = old; +} + +static void +key_dialog_sel_act (GtkWidget * un, int num) +{ + int row = gtkutil_clist_selection (key_dialog_kb_clist); + struct key_binding *kb; + + if (row != -1) + { + kb = gtk_clist_get_row_data (GTK_CLIST (key_dialog_kb_clist), row); + kb->action = num; + gtk_clist_set_text (GTK_CLIST (key_dialog_kb_clist), row, 2, + _(key_actions[num].name)); + if (key_actions[num].help) + { + key_print_text (GTK_XTEXT (key_dialog_text), _(key_actions[num].help)); + } + } +} + +static void +key_dialog_sel_row (GtkWidget * clist, gint row, gint column, + GdkEventButton * evt, gpointer data) +{ + struct key_binding *kb = gtk_clist_get_row_data (GTK_CLIST (clist), row); + + if (kb == NULL) + { + printf ("*** key_dialog_sel_row: kb == NULL\n"); + abort (); + } + if (kb->action > -1 && kb->action <= KEY_MAX_ACTIONS) + { + gtk_option_menu_set_history (GTK_OPTION_MENU (key_dialog_act_menu), + kb->action); + if (key_actions[kb->action].help) + { + key_print_text (GTK_XTEXT (key_dialog_text), _(key_actions[kb->action].help)); + } + } + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (key_dialog_tog_c), + (kb->mod & STATE_CTRL) == STATE_CTRL); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (key_dialog_tog_s), + (kb->mod & STATE_SHIFT) == STATE_SHIFT); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (key_dialog_tog_a), + (kb->mod & STATE_ALT) == STATE_ALT); + + if (kb->data1) + gtk_entry_set_text (GTK_ENTRY (key_dialog_ent_d1), kb->data1); + else + gtk_entry_set_text (GTK_ENTRY (key_dialog_ent_d1), ""); + + if (kb->data2) + gtk_entry_set_text (GTK_ENTRY (key_dialog_ent_d2), kb->data2); + else + gtk_entry_set_text (GTK_ENTRY (key_dialog_ent_d2), ""); + + if (kb->keyname) + gtk_entry_set_text (GTK_ENTRY (key_dialog_ent_key), kb->keyname); + else + gtk_entry_set_text (GTK_ENTRY (key_dialog_ent_key), ""); +} + +static void +key_dialog_tog_key (GtkWidget * tog, int kstate) +{ + int state = GTK_TOGGLE_BUTTON (tog)->active; + int row = gtkutil_clist_selection (key_dialog_kb_clist); + struct key_binding *kb; + char buf[32]; + + if (row == -1) + return; + + kb = gtk_clist_get_row_data (GTK_CLIST (key_dialog_kb_clist), row); + if (state) + kb->mod |= kstate; + else + kb->mod &= ~kstate; + + gtk_clist_set_text (GTK_CLIST (key_dialog_kb_clist), row, 0, + key_make_mod_str (kb->mod, buf)); +} + +static GtkWidget * +key_dialog_make_toggle (char *label, void *callback, void *option, + GtkWidget * box) +{ + GtkWidget *wid; + + wid = gtk_check_button_new_with_label (label); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wid), 0); + gtk_signal_connect (GTK_OBJECT (wid), "toggled", + GTK_SIGNAL_FUNC (callback), option); + gtk_box_pack_end (GTK_BOX (box), wid, 0, 0, 0); + gtk_widget_show (wid); + + return wid; +} + +static GtkWidget * +key_dialog_make_entry (char *label, char *act, void *callback, void *option, + GtkWidget * box) +{ + GtkWidget *wid, *hbox;; + + hbox = gtk_hbox_new (0, 2); + if (label) + { + wid = gtk_label_new (label); + gtk_widget_show (wid); + gtk_box_pack_start (GTK_BOX (hbox), wid, 0, 0, 0); + } + wid = gtk_entry_new (); + if (act) + { + gtk_signal_connect (GTK_OBJECT (wid), act, GTK_SIGNAL_FUNC (callback), + option); + } + gtk_box_pack_start (GTK_BOX (hbox), wid, 0, 0, 0); + gtk_widget_show (wid); + gtk_widget_show (hbox); + + gtk_box_pack_start (GTK_BOX (box), hbox, 0, 0, 0); + + return wid; +} + +static void +key_dialog_set_key (GtkWidget * entry, GdkEventKey * evt, void *none) +{ + int row = gtkutil_clist_selection (key_dialog_kb_clist); + struct key_binding *kb; + + gtk_entry_set_text (GTK_ENTRY (entry), ""); + + if (row == -1) + return; + + kb = gtk_clist_get_row_data (GTK_CLIST (key_dialog_kb_clist), row); + kb->keyval = evt->keyval; + kb->keyname = key_get_key_name (kb->keyval); + gtk_clist_set_text (GTK_CLIST (key_dialog_kb_clist), row, 1, kb->keyname); + gtk_entry_set_text (GTK_ENTRY (entry), kb->keyname); + g_signal_stop_emission_by_name (G_OBJECT (entry), "key_press_event"); +} + +static void +key_dialog_set_data (GtkWidget * entry, int d) +{ + const char *text = gtk_entry_get_text (GTK_ENTRY (entry)); + int row = gtkutil_clist_selection (key_dialog_kb_clist); + struct key_binding *kb; + char *buf; + int len = strlen (text); + + len++; + + if (row == -1) + return; + + kb = gtk_clist_get_row_data (GTK_CLIST (key_dialog_kb_clist), row); + if (d == 0) + { /* using data1 */ + if (kb->data1) + free (kb->data1); + buf = (char *) malloc (len); + memcpy (buf, text, len); + kb->data1 = buf; + gtk_clist_set_text (GTK_CLIST (key_dialog_kb_clist), row, 3, text); + } else + { + if (kb->data2) + free (kb->data2); + buf = (char *) malloc (len); + memcpy (buf, text, len); + kb->data2 = buf; + gtk_clist_set_text (GTK_CLIST (key_dialog_kb_clist), row, 4, text); + } +} + +void +key_dialog_show () +{ + GtkWidget *vbox, *hbox, *list, *vbox2, *wid, *wid2, *wid3, *hbox2; + struct key_binding *kb; + gchar *titles[] = { NULL, NULL, NULL, "1", "2" }; + char temp[32]; + int i; + + titles[0] = _("Mod"); + titles[1] = _("Key"); + titles[2] = _("Action"); + + if (key_dialog) + { + mg_bring_tofront (key_dialog); + return; + } + + key_dialog = + mg_create_generic_tab ("editkeys", _("XChat: Keyboard Shortcuts"), + TRUE, FALSE, key_dialog_close, NULL, 560, 330, &vbox, 0); + + hbox = gtk_hbox_new (0, 2); + gtk_box_pack_start (GTK_BOX (vbox), hbox, 1, 1, 0); + + list = gtkutil_clist_new (5, titles, hbox, 0, key_dialog_sel_row, 0, NULL, + 0, GTK_SELECTION_SINGLE); + gtk_widget_set_usize (list, 400, 0); + key_dialog_kb_clist = list; + + gtk_widget_show (hbox); + + kb = keys_root; + + gtk_clist_set_column_width (GTK_CLIST (list), 1, 50); + gtk_clist_set_column_width (GTK_CLIST (list), 2, 120); + gtk_clist_set_column_width (GTK_CLIST (list), 3, 50); + gtk_clist_set_column_width (GTK_CLIST (list), 4, 50); + + while (kb) + { + titles[0] = key_make_mod_str (kb->mod, temp); + titles[1] = kb->keyname; + if (kb->action < 0 || kb->action > KEY_MAX_ACTIONS) + titles[2] = _("<none>"); + else + titles[2] = key_actions[kb->action].name; + if (kb->data1) + titles[3] = kb->data1; + else + titles[3] = _("<none>"); + + if (kb->data2) + titles[4] = kb->data2; + else + titles[4] = _("<none>"); + + gtk_clist_set_row_data (GTK_CLIST (list), + gtk_clist_append (GTK_CLIST (list), titles), + kb); + + kb = kb->next; + } + + vbox2 = gtk_vbox_new (0, 2); + gtk_box_pack_end (GTK_BOX (hbox), vbox2, 1, 1, 0); + wid = gtk_button_new_with_label (_("Add New")); + gtk_box_pack_start (GTK_BOX (vbox2), wid, 0, 0, 0); + gtk_signal_connect (GTK_OBJECT (wid), "clicked", + GTK_SIGNAL_FUNC (key_dialog_add_new), list); + gtk_widget_show (wid); + wid = gtk_button_new_with_label (_("Delete")); + gtk_box_pack_start (GTK_BOX (vbox2), wid, 0, 0, 0); + gtk_signal_connect (GTK_OBJECT (wid), "clicked", + GTK_SIGNAL_FUNC (key_dialog_delete), list); + gtk_widget_show (wid); + gtk_widget_show (vbox2); + + wid = gtk_option_menu_new (); + wid2 = gtk_menu_new (); + + for (i = 0; i <= KEY_MAX_ACTIONS; i++) + { + wid3 = gtk_menu_item_new_with_label (_(key_actions[i].name)); + gtk_widget_show (wid3); + gtk_menu_shell_append (GTK_MENU_SHELL (wid2), wid3); + gtk_signal_connect (GTK_OBJECT (wid3), "activate", + GTK_SIGNAL_FUNC (key_dialog_sel_act), + GINT_TO_POINTER (i)); + } + + gtk_option_menu_set_menu (GTK_OPTION_MENU (wid), wid2); + gtk_option_menu_set_history (GTK_OPTION_MENU (wid), 0); + gtk_box_pack_end (GTK_BOX (vbox2), wid, 0, 0, 0); + gtk_widget_show (wid); + key_dialog_act_menu = wid; + + key_dialog_tog_s = key_dialog_make_toggle (_("Shift"), key_dialog_tog_key, + (void *) STATE_SHIFT, vbox2); + key_dialog_tog_a = key_dialog_make_toggle (_("Alt"), key_dialog_tog_key, + (void *) STATE_ALT, vbox2); + key_dialog_tog_c = key_dialog_make_toggle (_("Ctrl"), key_dialog_tog_key, + (void *) STATE_CTRL, vbox2); + + key_dialog_ent_key = key_dialog_make_entry (_("Key"), "key_press_event", + key_dialog_set_key, NULL, + vbox2); + + key_dialog_ent_d1 = key_dialog_make_entry (_("Data 1"), "activate", + key_dialog_set_data, NULL, + vbox2); + key_dialog_ent_d2 = key_dialog_make_entry (_("Data 2"), "activate", + key_dialog_set_data, + (void *) 1, vbox2); + + hbox2 = gtk_hbox_new (0, 2); + gtk_box_pack_end (GTK_BOX (vbox), hbox2, 0, 0, 1); + + wid = gtk_xtext_new (colors, 0); + gtk_xtext_set_tint (GTK_XTEXT (wid), prefs.tint_red, prefs.tint_green, prefs.tint_blue); + gtk_xtext_set_background (GTK_XTEXT (wid), + channelwin_pix, + prefs.transparent); + gtk_widget_set_usize (wid, 0, 75); + gtk_box_pack_start (GTK_BOX (hbox2), wid, 1, 1, 1); + gtk_xtext_set_font (GTK_XTEXT (wid), prefs.font_normal); + gtk_widget_show (wid); + + wid2 = gtk_vscrollbar_new (GTK_XTEXT (wid)->adj); + gtk_box_pack_start (GTK_BOX (hbox2), wid2, 0, 0, 0); + gtk_widget_show (wid2); + + gtk_widget_show (hbox2); + key_dialog_text = wid; + + gtk_widget_show_all (key_dialog); +} + +static void +key_save_kbs (char *fn) +{ + int fd, i, rc; + ssize_t nb; + char buf[512]; + char *file_tmp = NULL; + struct key_binding *kb; + + if (!fn) + fd = xchat_open_file ("keybindings.conf.bug147832", O_CREAT | O_TRUNC | O_WRONLY, + 0x180, XOF_DOMODE); + else + { + file_tmp = malloc( strlen( fn ) + strlen( ".bug147832" ) + 1 ); + if( ! file_tmp ) + return; + strcpy( file_tmp, fn ); + strcat( file_tmp, ".bug147832" ); + + fd = xchat_open_file (file_tmp, O_CREAT | O_TRUNC | O_WRONLY, + 0x180, XOF_DOMODE | XOF_FULLPATH); + } + + if (fd < 0) + { + fe_message (_("Error opening keys config file\n"), FE_MSG_ERROR); + if( file_tmp ) + free( file_tmp ); + return; + } + nb = write (fd, buf, + snprintf (buf, 510, "# XChat key bindings config file\n\n")); + + kb = keys_root; + i = 0; + + while (kb) + { + if (kb->keyval == -1 || kb->keyname == NULL || kb->action < 0) + { + kb = kb->next; + continue; + } + i = 0; + if (kb->mod & STATE_CTRL) + { + i++; + if( nb > 0 ) nb = write (fd, "C", 1); + } + if (kb->mod & STATE_ALT) + { + i++; + if( nb > 0 ) nb = write (fd, "A", 1); + } + if (kb->mod & STATE_SHIFT) + { + i++; + if( nb > 0 ) nb = write (fd, "S", 1); + } + if (i == 0) + { + if( nb > 0 ) nb = write (fd, "None\n", 5); + } + else + if( nb > 0 ) nb = write (fd, "\n", 1); + + if( nb > 0 ) nb = write (fd, buf, snprintf (buf, 510, "%s\n%s\n", kb->keyname, + key_actions[kb->action].name)); + if (kb->data1 && kb->data1[0]) + { + if( nb > 0 ) nb = write (fd, buf, snprintf (buf, 510, "D1:%s\n", kb->data1)); + } + else + if( nb > 0 ) nb = write (fd, "D1!\n", 4); + + if (kb->data2 && kb->data2[0]) + { + if( nb > 0 ) nb = write (fd, buf, snprintf (buf, 510, "D2:%s\n", kb->data2)); + } + else + if( nb > 0 ) nb = write (fd, "D2!\n", 4); + + if( nb > 0 ) nb = write (fd, "\n", 1); + + kb = kb->next; + } + + if( nb <= 0 ) + { + fprintf( stderr, "key_save_kbs: write() failed\n" ); + close( fd ); + if( file_tmp ) + free( file_tmp ); + return; + } + + if( close (fd) != 0 ) + { + if( file_tmp ) + free( file_tmp ); + return; + } + + if( ! fn ) + rc = xchat_rename_file( "keybindings.conf.bug147832", "keybindings.conf", XOF_DOMODE ); + else + rc = xchat_rename_file( file_tmp, fn, XOF_DOMODE | XOF_FULLPATH ); + + if( rc != 0 ) + { + perror( "key_save_kbs: xchat_rename_file() failed" ); + if( file_tmp ) + free( file_tmp ); + return; + } + + if( file_tmp ) + free( file_tmp ); +} + +/* I just know this is going to be a nasty parse, if you think it's bugged + it almost certainly is so contact the XChat dev team --AGL */ + +static inline int +key_load_kbs_helper_mod (char *in, int *out) +{ + int n, len, mod = 0; + + /* First strip off the fluff */ + while (in[0] == ' ' || in[0] == '\t') + in++; + len = strlen (in); + while (in[len] == ' ' || in[len] == '\t') + { + in[len] = 0; + len--; + } + + if (strcmp (in, "None") == 0) + { + *out = 0; + return 0; + } + for (n = 0; n < len; n++) + { + switch (in[n]) + { + case 'C': + mod |= STATE_CTRL; + break; + case 'A': + mod |= STATE_ALT; + break; + case 'S': + mod |= STATE_SHIFT; + break; + default: + return 1; + } + } + + *out = mod; + return 0; +} + +/* These are just local defines to keep me sane --AGL */ + +#define KBSTATE_MOD 0 +#define KBSTATE_KEY 1 +#define KBSTATE_ACT 2 +#define KBSTATE_DT1 3 +#define KBSTATE_DT2 4 + +/* *** Warning, Warning! - massive function ahead! --AGL */ + +static int +key_load_kbs (char *filename) +{ + char *buf, *ibuf; + struct stat st; + struct key_binding *kb = NULL, *last = NULL; + int fd, len, pnt = 0, state = 0, n; + + if (filename == NULL) + fd = xchat_open_file ("keybindings.conf", O_RDONLY, 0, 0); + else + fd = xchat_open_file (filename, O_RDONLY, 0, XOF_FULLPATH); + if (fd < 0) + return 1; + if (fstat (fd, &st) != 0) + return 1; + ibuf = malloc (st.st_size); + read (fd, ibuf, st.st_size); + close (fd); + + while (buf_get_line (ibuf, &buf, &pnt, st.st_size)) + { + if (buf[0] == '#') + continue; + if (strlen (buf) == 0) + continue; + + switch (state) + { + case KBSTATE_MOD: + kb = (struct key_binding *) malloc (sizeof (struct key_binding)); + if (key_load_kbs_helper_mod (buf, &kb->mod)) + goto corrupt_file; + state = KBSTATE_KEY; + continue; + case KBSTATE_KEY: + /* First strip off the fluff */ + while (buf[0] == ' ' || buf[0] == '\t') + buf++; + len = strlen (buf); + while (buf[len] == ' ' || buf[len] == '\t') + { + buf[len] = 0; + len--; + } + + n = gdk_keyval_from_name (buf); + if (n == 0) + { + /* Unknown keyname, abort */ + if (last) + last->next = NULL; + free (ibuf); + ibuf = malloc (1024); + snprintf (ibuf, 1024, + _("Unknown keyname %s in key bindings config file\nLoad aborted, please fix %s/keybindings.conf\n"), + buf, get_xdir_utf8 ()); + fe_message (ibuf, FE_MSG_ERROR); + free (ibuf); + return 2; + } + kb->keyname = gdk_keyval_name (n); + kb->keyval = n; + + state = KBSTATE_ACT; + continue; + case KBSTATE_ACT: + /* First strip off the fluff */ + while (buf[0] == ' ' || buf[0] == '\t') + buf++; + len = strlen (buf); + while (buf[len] == ' ' || buf[len] == '\t') + { + buf[len] = 0; + len--; + } + + for (n = 0; n < KEY_MAX_ACTIONS + 1; n++) + { + if (strcmp (key_actions[n].name, buf) == 0) + { + kb->action = n; + break; + } + } + + if (n == KEY_MAX_ACTIONS + 1) + { + if (last) + last->next = NULL; + free (ibuf); + ibuf = malloc (1024); + snprintf (ibuf, 1024, + _("Unknown action %s in key bindings config file\nLoad aborted, Please fix %s/keybindings\n"), + buf, get_xdir_utf8 ()); + fe_message (ibuf, FE_MSG_ERROR); + free (ibuf); + return 3; + } + state = KBSTATE_DT1; + continue; + case KBSTATE_DT1: + case KBSTATE_DT2: + if (state == KBSTATE_DT1) + kb->data1 = kb->data2 = NULL; + + while (buf[0] == ' ' || buf[0] == '\t') + buf++; + + if (buf[0] != 'D') + { + free (ibuf); + ibuf = malloc (1024); + snprintf (ibuf, 1024, + _("Expecting Data line (beginning Dx{:|!}) but got:\n%s\n\nLoad aborted, Please fix %s/keybindings\n"), + buf, get_xdir_utf8 ()); + fe_message (ibuf, FE_MSG_ERROR); + free (ibuf); + return 4; + } + switch (buf[1]) + { + case '1': + if (state != KBSTATE_DT1) + goto corrupt_file; + break; + case '2': + if (state != KBSTATE_DT2) + goto corrupt_file; + break; + default: + goto corrupt_file; + } + + if (buf[2] == ':') + { + len = strlen (buf); + /* Add one for the NULL, subtract 3 for the "Dx:" */ + len++; + len -= 3; + if (state == KBSTATE_DT1) + { + kb->data1 = malloc (len); + memcpy (kb->data1, &buf[3], len); + } else + { + kb->data2 = malloc (len); + memcpy (kb->data2, &buf[3], len); + } + } else if (buf[2] == '!') + { + if (state == KBSTATE_DT1) + kb->data1 = NULL; + else + kb->data2 = NULL; + } + if (state == KBSTATE_DT1) + { + state = KBSTATE_DT2; + continue; + } else + { + if (last) + last->next = kb; + else + keys_root = kb; + last = kb; + + state = KBSTATE_MOD; + } + + continue; + } + } + if (last) + last->next = NULL; + free (ibuf); + return 0; + + corrupt_file: + /*if (getenv ("XCHAT_DEBUG")) + abort ();*/ + snprintf (ibuf, 1024, + _("Key bindings config file is corrupt, load aborted\n" + "Please fix %s/keybindings.conf\n"), + get_xdir_utf8 ()); + fe_message (ibuf, FE_MSG_ERROR); + free (ibuf); + return 5; +} + +/* ***** Key actions start here *********** */ + +/* See the NOTES above --AGL */ + +/* "Run command" */ +static int +key_action_handle_command (GtkWidget * wid, GdkEventKey * evt, char *d1, + char *d2, struct session *sess) +{ + int ii, oi, len; + char out[2048], d = 0; + + if (!d1) + return 0; + + len = strlen (d1); + + /* Replace each "\n" substring with '\n' */ + for (ii = oi = 0; ii < len; ii++) + { + d = d1[ii]; + if (d == '\\') + { + ii++; + d = d1[ii]; + if (d == 'n') + out[oi++] = '\n'; + else if (d == '\\') + out[oi++] = '\\'; + else + { + out[oi++] = '\\'; + out[oi++] = d; + } + continue; + } + out[oi++] = d; + } + out[oi] = 0; + + handle_multiline (sess, out, 0, 0); + return 0; +} + +static int +key_action_page_switch (GtkWidget * wid, GdkEventKey * evt, char *d1, + char *d2, struct session *sess) +{ + int len, i, num; + + if (!d1) + return 1; + + len = strlen (d1); + if (!len) + return 1; + + for (i = 0; i < len; i++) + { + if (d1[i] < '0' || d1[i] > '9') + { + if (i == 0 && (d1[i] == '+' || d1[i] == '-')) + continue; + else + return 1; + } + } + + num = atoi (d1); + if (!d2) + num--; + if (!d2 || d2[0] == 0) + mg_switch_page (FALSE, num); + else + mg_switch_page (TRUE, num); + return 0; +} + +int +key_action_insert (GtkWidget * wid, GdkEventKey * evt, char *d1, char *d2, + struct session *sess) +{ + int tmp_pos; + + if (!d1) + return 1; + + tmp_pos = SPELL_ENTRY_GET_POS (wid); + SPELL_ENTRY_INSERT (wid, d1, strlen (d1), &tmp_pos); + SPELL_ENTRY_SET_POS (wid, tmp_pos); + return 2; +} + +/* handles PageUp/Down keys */ +static int +key_action_scroll_page (GtkWidget * wid, GdkEventKey * evt, char *d1, + char *d2, struct session *sess) +{ + int value, end; + GtkAdjustment *adj; + enum scroll_type { PAGE_UP, PAGE_DOWN, LINE_UP, LINE_DOWN }; + int type = PAGE_DOWN; + + if (d1) + { + if (!strcasecmp (d1, "up")) + type = PAGE_UP; + else if (!strcasecmp (d1, "+1")) + type = LINE_DOWN; + else if (!strcasecmp (d1, "-1")) + type = LINE_UP; + } + + if (!sess) + return 0; + + adj = GTK_RANGE (sess->gui->vscrollbar)->adjustment; + end = adj->upper - adj->lower - adj->page_size; + + switch (type) + { + case LINE_UP: + value = adj->value - 1.0; + break; + + case LINE_DOWN: + value = adj->value + 1.0; + break; + + case PAGE_UP: + value = adj->value - (adj->page_size - 1); + break; + + default: /* PAGE_DOWN */ + value = adj->value + (adj->page_size - 1); + break; + } + + if (value < 0) + value = 0; + if (value > end) + value = end; + + gtk_adjustment_set_value (adj, value); + + return 0; +} + +static int +key_action_set_buffer (GtkWidget * wid, GdkEventKey * evt, char *d1, char *d2, + struct session *sess) +{ + if (!d1) + return 1; + if (d1[0] == 0) + return 1; + + SPELL_ENTRY_SET_TEXT (wid, d1); + SPELL_ENTRY_SET_POS (wid, -1); + + return 2; +} + +static int +key_action_history_up (GtkWidget * wid, GdkEventKey * ent, char *d1, char *d2, + struct session *sess) +{ + char *new_line; + + new_line = history_up (&sess->history, SPELL_ENTRY_GET_TEXT (wid)); + if (new_line) + { + SPELL_ENTRY_SET_TEXT (wid, new_line); + SPELL_ENTRY_SET_POS (wid, -1); + } + + return 2; +} + +static int +key_action_history_down (GtkWidget * wid, GdkEventKey * ent, char *d1, + char *d2, struct session *sess) +{ + char *new_line; + + new_line = history_down (&sess->history); + if (new_line) + { + SPELL_ENTRY_SET_TEXT (wid, new_line); + SPELL_ENTRY_SET_POS (wid, -1); + } + + return 2; +} + +/* old data that we reuse */ +static struct gcomp_data old_gcomp; + +/* work on the data, ie return only channels */ +static int +double_chan_cb (session *lsess, GList **list) +{ + if (lsess->type == SESS_CHANNEL) + *list = g_list_prepend(*list, lsess->channel); + return TRUE; +} + +/* convert a slist -> list. */ +static GList * +chanlist_double_list (GSList *inlist) +{ + GList *list = NULL; + g_slist_foreach(inlist, (GFunc)double_chan_cb, &list); + return list; +} + +/* handle commands */ +static int +double_cmd_cb (struct popup *pop, GList **list) +{ + *list = g_list_prepend(*list, pop->name); + return TRUE; +} + +/* convert a slist -> list. */ +static GList * +cmdlist_double_list (GSList *inlist) +{ + GList *list = NULL; + g_slist_foreach (inlist, (GFunc)double_cmd_cb, &list); + return list; +} + +static char * +gcomp_nick_func (char *data) +{ + if (data) + return ((struct User *)data)->nick; + return ""; +} + +void +key_action_tab_clean(void) +{ + if (old_gcomp.elen) + { + old_gcomp.data[0] = 0; + old_gcomp.elen = 0; + } +} + +/* Used in the followig completers */ +#define COMP_BUF 2048 + +/* For use in sorting the user list for completion */ +static int +talked_recent_cmp (struct User *a, struct User *b) +{ + if (a->lasttalk < b->lasttalk) + return -1; + + if (a->lasttalk > b->lasttalk) + return 1; + + return 0; +} + +static int +key_action_tab_comp (GtkWidget *t, GdkEventKey *entry, char *d1, char *d2, + struct session *sess) +{ + int len = 0, elen = 0, i = 0, cursor_pos, ent_start = 0, comp = 0, found = 0, + prefix_len, skip_len = 0, is_nick, is_cmd = 0; + char buf[COMP_BUF], ent[CHANLEN], *postfix = NULL, *result, *ch; + GList *list = NULL, *tmp_list = NULL; + const char *text; + GCompletion *gcomp = NULL; + + /* force the IM Context to reset */ + SPELL_ENTRY_SET_EDITABLE (t, FALSE); + SPELL_ENTRY_SET_EDITABLE (t, TRUE); + + text = SPELL_ENTRY_GET_TEXT (t); + if (text[0] == 0) + return 1; + + len = g_utf8_strlen (text, -1); /* must be null terminated */ + + cursor_pos = SPELL_ENTRY_GET_POS (t); + + buf[0] = 0; /* make sure we don't get garbage in the buffer */ + + /* handle "nick: " or "nick " or "#channel "*/ + ch = g_utf8_find_prev_char(text, g_utf8_offset_to_pointer(text,cursor_pos)); + if (ch && ch[0] == ' ') + { + skip_len++; + ch = g_utf8_find_prev_char(text, ch); + if (!ch) + return 2; + + cursor_pos = g_utf8_pointer_to_offset(text, ch); + if (cursor_pos && (g_utf8_get_char_validated(ch, -1) == ':' || + g_utf8_get_char_validated(ch, -1) == ',' || + g_utf8_get_char_validated(ch, -1) == prefs.nick_suffix[0])) + { + skip_len++; + } + else + cursor_pos = g_utf8_pointer_to_offset(text, g_utf8_offset_to_pointer(ch, 1)); + } + + comp = skip_len; + + /* store the text following the cursor for reinsertion later */ + if ((cursor_pos + skip_len) < len) + postfix = g_utf8_offset_to_pointer(text, cursor_pos + skip_len); + + for (ent_start = cursor_pos; ; --ent_start) + { + if (ent_start == 0) + break; + ch = g_utf8_offset_to_pointer(text, ent_start - 1); + if (ch && ch[0] == ' ') + break; + } + + if (ent_start == 0 && text[0] == prefs.cmdchar[0]) + { + ent_start++; + is_cmd = 1; + } + + prefix_len = ent_start; + elen = cursor_pos - ent_start; + + g_utf8_strncpy (ent, g_utf8_offset_to_pointer (text, prefix_len), elen); + + is_nick = (ent[0] == '#' || ent[0] == '&' || is_cmd) ? 0 : 1; + + if (sess->type == SESS_DIALOG && is_nick) + { + /* tab in a dialog completes the other person's name */ + if (rfc_ncasecmp (sess->channel, ent, elen) == 0) + { + result = sess->channel; + is_nick = 0; + } + else + return 2; + } + else + { + if (is_nick) + { + gcomp = g_completion_new((GCompletionFunc)gcomp_nick_func); + tmp_list = userlist_double_list(sess); /* create a temp list so we can free the memory */ + if (prefs.completion_sort == 1) /* sort in last-talk order? */ + tmp_list = g_list_sort (tmp_list, (void *)talked_recent_cmp); + } + else + { + gcomp = g_completion_new (NULL); + if (is_cmd) + { + tmp_list = cmdlist_double_list (command_list); + for(i = 0; xc_cmds[i].name != NULL ; i++) + { + tmp_list = g_list_prepend (tmp_list, xc_cmds[i].name); + } + tmp_list = plugin_command_list(tmp_list); + } + else + tmp_list = chanlist_double_list (sess_list); + } + tmp_list = g_list_reverse(tmp_list); /* make the comp entries turn up in the right order */ + g_completion_set_compare (gcomp, (GCompletionStrncmpFunc)rfc_ncasecmp); + if (tmp_list) + { + g_completion_add_items (gcomp, tmp_list); + g_list_free (tmp_list); + } + + if (comp && !(rfc_ncasecmp(old_gcomp.data, ent, old_gcomp.elen) == 0)) + { + key_action_tab_clean (); + comp = 0; + } + +#if GLIB_CHECK_VERSION(2,4,0) + list = g_completion_complete_utf8 (gcomp, comp ? old_gcomp.data : ent, &result); +#else + list = g_completion_complete (gcomp, comp ? old_gcomp.data : ent, &result); +#endif + + if (result == NULL) /* No matches found */ + { + g_completion_free(gcomp); + return 2; + } + + if (comp) /* existing completion */ + { + while(list) /* find the current entry */ + { + if(rfc_ncasecmp(list->data, ent, elen) == 0) + { + found = 1; + break; + } + list = list->next; + } + + if (found) + { + if (!(d1 && d1[0])) /* not holding down shift */ + { + if (g_list_next(list) == NULL) + list = g_list_first(list); + else + list = g_list_next(list); + } + else + { + if (g_list_previous(list) == NULL) + list = g_list_last(list); + else + list = g_list_previous(list); + } + g_free(result); + result = (char*)list->data; + } + else + { + g_free(result); + g_completion_free(gcomp); + return 2; + } + } + else + { + strcpy(old_gcomp.data, ent); + old_gcomp.elen = elen; + + /* Get the first nick and put out the data for future nickcompletes */ + if (prefs.completion_amount && g_list_length (list) <= prefs.completion_amount) + { + g_free(result); + result = (char*)list->data; + } + else + { + /* bash style completion */ + if (g_list_next(list) != NULL) + { + if (strlen (result) > elen) /* the largest common prefix is larger than nick, change the data */ + { + if (prefix_len) + g_utf8_strncpy (buf, text, prefix_len); + strncat (buf, result, COMP_BUF - prefix_len); + cursor_pos = strlen (buf); + g_free(result); +#if !GLIB_CHECK_VERSION(2,4,0) + g_utf8_validate (buf, -1, (const gchar **)&result); + (*result) = 0; +#endif + if (postfix) + { + strcat (buf, " "); + strncat (buf, postfix, COMP_BUF - cursor_pos -1); + } + SPELL_ENTRY_SET_TEXT (t, buf); + SPELL_ENTRY_SET_POS (t, g_utf8_pointer_to_offset(buf, buf + cursor_pos)); + buf[0] = 0; + } + else + g_free(result); + while (list) + { + len = strlen (buf); /* current buffer */ + elen = strlen (list->data); /* next item to add */ + if (len + elen + 2 >= COMP_BUF) /* +2 is space + null */ + { + PrintText (sess, buf); + buf[0] = 0; + len = 0; + } + strcpy (buf + len, (char *) list->data); + strcpy (buf + len + elen, " "); + list = list->next; + } + PrintText (sess, buf); + g_completion_free(gcomp); + return 2; + } + /* Only one matching entry */ + g_free(result); + result = list->data; + } + } + } + + if(result) + { + if (prefix_len) + g_utf8_strncpy(buf, text, prefix_len); + strncat (buf, result, COMP_BUF - (prefix_len + 3)); /* make sure nicksuffix and space fits */ + if(!prefix_len && is_nick) + strcat (buf, &prefs.nick_suffix[0]); + strcat (buf, " "); + cursor_pos = strlen (buf); + if (postfix) + strncat (buf, postfix, COMP_BUF - cursor_pos - 2); + SPELL_ENTRY_SET_TEXT (t, buf); + SPELL_ENTRY_SET_POS (t, g_utf8_pointer_to_offset(buf, buf + cursor_pos)); + } + if (gcomp) + g_completion_free(gcomp); + return 2; +} +#undef COMP_BUF + +static int +key_action_comp_chng (GtkWidget * wid, GdkEventKey * ent, char *d1, char *d2, + struct session *sess) +{ + key_action_tab_comp(wid, ent, d1, d2, sess); + return 2; +} + + +static int +key_action_replace (GtkWidget * wid, GdkEventKey * ent, char *d1, char *d2, + struct session *sess) +{ + replace_handle (wid); + return 1; +} + + +static int +key_action_move_tab_left (GtkWidget * wid, GdkEventKey * ent, char *d1, + char *d2, struct session *sess) +{ + mg_move_tab (sess, +1); + return 2; /* don't allow default action */ +} + +static int +key_action_move_tab_right (GtkWidget * wid, GdkEventKey * ent, char *d1, + char *d2, struct session *sess) +{ + mg_move_tab (sess, -1); + return 2; /* -''- */ +} + +static int +key_action_move_tab_family_left (GtkWidget * wid, GdkEventKey * ent, char *d1, + char *d2, struct session *sess) +{ + mg_move_tab_family (sess, +1); + return 2; /* don't allow default action */ +} + +static int +key_action_move_tab_family_right (GtkWidget * wid, GdkEventKey * ent, char *d1, + char *d2, struct session *sess) +{ + mg_move_tab_family (sess, -1); + return 2; /* -''- */ +} + +static int +key_action_put_history (GtkWidget * wid, GdkEventKey * ent, char *d1, + char *d2, struct session *sess) +{ + history_add (&sess->history, SPELL_ENTRY_GET_TEXT (wid)); + SPELL_ENTRY_SET_TEXT (wid, ""); + return 2; /* -''- */ +} + + +/* -------- */ + + +#define STATE_SHIFT GDK_SHIFT_MASK +#define STATE_ALT GDK_MOD1_MASK +#define STATE_CTRL GDK_CONTROL_MASK + +static void +replace_handle (GtkWidget *t) +{ + const char *text, *postfix_pnt; + struct popup *pop; + GSList *list = replace_list; + char word[256]; + char postfix[256]; + char outbuf[4096]; + int c, len, xlen; + + text = SPELL_ENTRY_GET_TEXT (t); + + len = strlen (text); + if (len < 1) + return; + + for (c = len - 1; c > 0; c--) + { + if (text[c] == ' ') + break; + } + if (text[c] == ' ') + c++; + xlen = c; + if (len - c >= (sizeof (word) - 12)) + return; + if (len - c < 1) + return; + memcpy (word, &text[c], len - c); + word[len - c] = 0; + len = strlen (word); + if (word[0] == '\'' && word[len] == '\'') + return; + postfix_pnt = NULL; + for (c = 0; c < len; c++) + { + if (word[c] == '\'') + { + postfix_pnt = &word[c + 1]; + word[c] = 0; + break; + } + } + + if (postfix_pnt != NULL) + { + if (strlen (postfix_pnt) > sizeof (postfix) - 12) + return; + strcpy (postfix, postfix_pnt); + } + while (list) + { + pop = (struct popup *) list->data; + if (strcmp (pop->name, word) == 0) + { + memcpy (outbuf, text, xlen); + outbuf[xlen] = 0; + if (postfix_pnt == NULL) + snprintf (word, sizeof (word), "%s", pop->cmd); + else + snprintf (word, sizeof (word), "%s%s", pop->cmd, postfix); + strcat (outbuf, word); + SPELL_ENTRY_SET_TEXT (t, outbuf); + SPELL_ENTRY_SET_POS (t, -1); + return; + } + list = list->next; + } +} + diff --git a/etc/wyatt8740/src/fe-gtk/fkeys.h b/etc/wyatt8740/src/fe-gtk/fkeys.h new file mode 100644 index 0000000..20cd4c7 --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/fkeys.h @@ -0,0 +1,5 @@ +void key_init (void); +void key_dialog_show (void); +int key_handle_key_press (GtkWidget * wid, GdkEventKey * evt, session *sess); +int key_action_insert (GtkWidget * wid, GdkEventKey * evt, char *d1, char *d2, + session *sess); diff --git a/etc/wyatt8740/src/fe-gtk/gtkutil.c b/etc/wyatt8740/src/fe-gtk/gtkutil.c new file mode 100644 index 0000000..63ab491 --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/gtkutil.c @@ -0,0 +1,675 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ +#define _FILE_OFFSET_BITS 64 /* allow selection of large files */ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <stdarg.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <unistd.h> +#include <fcntl.h> +#include "fe-gtk.h" + +#include <gtk/gtkbutton.h> +#include <gtk/gtkclist.h> +#include <gtk/gtkscrolledwindow.h> +#include <gtk/gtkmessagedialog.h> +#include <gtk/gtkwindow.h> +#include <gtk/gtkhbox.h> +#include <gtk/gtkimage.h> +#include <gtk/gtktooltips.h> +#include <gtk/gtklabel.h> +#include <gtk/gtkentry.h> +#include <gtk/gtkstock.h> +#include <gtk/gtkspinbutton.h> +#include <gtk/gtkclipboard.h> +#include <gtk/gtktreeview.h> +#include <gtk/gtktreeselection.h> +#include <gtk/gtkcellrenderertext.h> +#include <gtk/gtkcellrenderertoggle.h> +#include <gtk/gtkversion.h> +#include <gtk/gtkfilechooserdialog.h> + +#include "../common/xchat.h" +#include "../common/fe.h" +#include "../common/util.h" +#include "gtkutil.h" +#include "pixmaps.h" + +/* gtkutil.c, just some gtk wrappers */ + +extern void path_part (char *file, char *path, int pathlen); + + +struct file_req +{ + GtkWidget *dialog; + void *userdata; + filereqcallback callback; + int flags; /* FRF_* flags */ +}; + +static char last_dir[256] = ""; + + +static void +gtkutil_file_req_destroy (GtkWidget * wid, struct file_req *freq) +{ + freq->callback (freq->userdata, NULL); + free (freq); +} + +static void +gtkutil_check_file (char *file, struct file_req *freq) +{ + struct stat st; + int axs = FALSE; + + path_part (file, last_dir, sizeof (last_dir)); + + /* check if the file is readable or writable */ + if (freq->flags & FRF_WRITE) + { + if (access (last_dir, W_OK) == 0) + axs = TRUE; + } else + { + if (stat (file, &st) != -1) + { + if (!S_ISDIR (st.st_mode) || (freq->flags & FRF_CHOOSEFOLDER)) + axs = TRUE; + } + } + + if (axs) + { + char *utf8_file; + /* convert to UTF8. It might be converted back to locale by + server.c's g_convert */ + utf8_file = xchat_filename_to_utf8 (file, -1, NULL, NULL, NULL); + if (utf8_file) + { + freq->callback (freq->userdata, utf8_file); + g_free (utf8_file); + } else + { + fe_message ("Filename encoding is corrupt.", FE_MSG_ERROR); + } + } else + { + if (freq->flags & FRF_WRITE) + fe_message (_("Cannot write to that file."), FE_MSG_ERROR); + else + fe_message (_("Cannot read that file."), FE_MSG_ERROR); + } +} + +static void +gtkutil_file_req_done (GtkWidget * wid, struct file_req *freq) +{ + GSList *files, *cur; + GtkFileChooser *fs = GTK_FILE_CHOOSER (freq->dialog); + + if (freq->flags & FRF_MULTIPLE) + { + files = cur = gtk_file_chooser_get_filenames (fs); + while (cur) + { + gtkutil_check_file (cur->data, freq); + g_free (cur->data); + cur = cur->next; + } + if (files) + g_slist_free (files); + } else + { + if (freq->flags & FRF_CHOOSEFOLDER) + gtkutil_check_file (gtk_file_chooser_get_current_folder (fs), freq); + else + gtkutil_check_file (gtk_file_chooser_get_filename (fs), freq); + } + + /* this should call the "destroy" cb, where we free(freq) */ + gtk_widget_destroy (freq->dialog); +} + +static void +gtkutil_file_req_response (GtkWidget *dialog, gint res, struct file_req *freq) +{ + switch (res) + { + case GTK_RESPONSE_ACCEPT: + gtkutil_file_req_done (dialog, freq); + break; + + case GTK_RESPONSE_CANCEL: + /* this should call the "destroy" cb, where we free(freq) */ + gtk_widget_destroy (freq->dialog); + } +} + +void +gtkutil_file_req (const char *title, void *callback, void *userdata, char *filter, + int flags) +{ + struct file_req *freq; + GtkWidget *dialog; + extern char *get_xdir_fs (void); + + if (flags & FRF_WRITE) + { + dialog = gtk_file_chooser_dialog_new (title, NULL, + GTK_FILE_CHOOSER_ACTION_SAVE, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, + NULL); + if (filter && filter[0]) /* filter becomes initial name when saving */ + { + char temp[1024]; + path_part (filter, temp, sizeof (temp)); + gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), temp); + gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), file_part (filter)); + } +#if GTK_CHECK_VERSION(2,8,0) + if (!(flags & FRF_NOASKOVERWRITE)) + gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog), TRUE); +#endif + } + else + dialog = gtk_file_chooser_dialog_new (title, NULL, + GTK_FILE_CHOOSER_ACTION_OPEN, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, + NULL); + if (flags & FRF_MULTIPLE) + gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (dialog), TRUE); + if (last_dir[0]) + gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), last_dir); + if (flags & FRF_ADDFOLDER) + gtk_file_chooser_add_shortcut_folder (GTK_FILE_CHOOSER (dialog), + get_xdir_fs (), NULL); + if (flags & FRF_CHOOSEFOLDER) + { + gtk_file_chooser_set_action (GTK_FILE_CHOOSER (dialog), GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER); + gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), filter); + } + else + { + if (filter && (flags & FRF_FILTERISINITIAL)) + gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), filter); + } + + freq = malloc (sizeof (struct file_req)); + freq->dialog = dialog; + freq->flags = flags; + freq->callback = callback; + freq->userdata = userdata; + + g_signal_connect (G_OBJECT (dialog), "response", + G_CALLBACK (gtkutil_file_req_response), freq); + g_signal_connect (G_OBJECT (dialog), "destroy", + G_CALLBACK (gtkutil_file_req_destroy), (gpointer) freq); + gtk_widget_show (dialog); +} + +void +gtkutil_destroy (GtkWidget * igad, GtkWidget * dgad) +{ + gtk_widget_destroy (dgad); +} + +static void +gtkutil_get_str_response (GtkDialog *dialog, gint arg1, gpointer entry) +{ + void (*callback) (int cancel, char *text, void *user_data); + char *text; + void *user_data; + + text = (char *) gtk_entry_get_text (GTK_ENTRY (entry)); + callback = g_object_get_data (G_OBJECT (dialog), "cb"); + user_data = g_object_get_data (G_OBJECT (dialog), "ud"); + + switch (arg1) + { + case GTK_RESPONSE_REJECT: + callback (TRUE, text, user_data); + gtk_widget_destroy (GTK_WIDGET (dialog)); + break; + case GTK_RESPONSE_ACCEPT: + callback (FALSE, text, user_data); + gtk_widget_destroy (GTK_WIDGET (dialog)); + break; + } +} + +static void +gtkutil_str_enter (GtkWidget *entry, GtkWidget *dialog) +{ + gtk_dialog_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT); +} + +void +fe_get_str (char *msg, char *def, void *callback, void *userdata) +{ + GtkWidget *dialog; + GtkWidget *entry; + GtkWidget *hbox; + GtkWidget *label; + + dialog = gtk_dialog_new_with_buttons (msg, NULL, 0, + GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, + GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, + NULL); + gtk_box_set_homogeneous (GTK_BOX (GTK_DIALOG (dialog)->vbox), TRUE); + gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); + hbox = gtk_hbox_new (TRUE, 0); + + g_object_set_data (G_OBJECT (dialog), "cb", callback); + g_object_set_data (G_OBJECT (dialog), "ud", userdata); + + entry = gtk_entry_new (); + g_signal_connect (G_OBJECT (entry), "activate", + G_CALLBACK (gtkutil_str_enter), dialog); + gtk_entry_set_text (GTK_ENTRY (entry), def); + gtk_box_pack_end (GTK_BOX (hbox), entry, 0, 0, 0); + + label = gtk_label_new (msg); + gtk_box_pack_end (GTK_BOX (hbox), label, 0, 0, 0); + + g_signal_connect (G_OBJECT (dialog), "response", + G_CALLBACK (gtkutil_get_str_response), entry); + + gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), hbox); + + gtk_widget_show_all (dialog); +} + +static void +gtkutil_get_number_response (GtkDialog *dialog, gint arg1, gpointer spin) +{ + void (*callback) (int cancel, int value, void *user_data); + int num; + void *user_data; + + num = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (spin)); + callback = g_object_get_data (G_OBJECT (dialog), "cb"); + user_data = g_object_get_data (G_OBJECT (dialog), "ud"); + + switch (arg1) + { + case GTK_RESPONSE_REJECT: + callback (TRUE, num, user_data); + gtk_widget_destroy (GTK_WIDGET (dialog)); + break; + case GTK_RESPONSE_ACCEPT: + callback (FALSE, num, user_data); + gtk_widget_destroy (GTK_WIDGET (dialog)); + break; + } +} + +void +fe_get_int (char *msg, int def, void *callback, void *userdata) +{ + GtkWidget *dialog; + GtkWidget *spin; + GtkWidget *hbox; + GtkWidget *label; + GtkAdjustment *adj; + + dialog = gtk_dialog_new_with_buttons (msg, NULL, 0, + GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, + GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, + NULL); + gtk_box_set_homogeneous (GTK_BOX (GTK_DIALOG (dialog)->vbox), TRUE); + gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); + hbox = gtk_hbox_new (TRUE, 0); + + g_object_set_data (G_OBJECT (dialog), "cb", callback); + g_object_set_data (G_OBJECT (dialog), "ud", userdata); + + spin = gtk_spin_button_new (NULL, 1, 0); + adj = gtk_spin_button_get_adjustment ((GtkSpinButton*)spin); + adj->lower = 0; + adj->upper = 1024; + adj->step_increment = 1; + gtk_adjustment_changed (adj); + gtk_spin_button_set_value ((GtkSpinButton*)spin, def); + gtk_box_pack_end (GTK_BOX (hbox), spin, 0, 0, 0); + + label = gtk_label_new (msg); + gtk_box_pack_end (GTK_BOX (hbox), label, 0, 0, 0); + + g_signal_connect (G_OBJECT (dialog), "response", + G_CALLBACK (gtkutil_get_number_response), spin); + + gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), hbox); + + gtk_widget_show_all (dialog); +} + +GtkWidget * +gtkutil_button (GtkWidget *box, char *stock, char *tip, void *callback, + void *userdata, char *labeltext) +{ + GtkWidget *wid, *img, *bbox; + + wid = gtk_button_new (); + + if (labeltext) + { + gtk_button_set_label (GTK_BUTTON (wid), labeltext); + gtk_button_set_image (GTK_BUTTON (wid), gtk_image_new_from_stock (stock, GTK_ICON_SIZE_MENU)); + gtk_button_set_use_underline (GTK_BUTTON (wid), TRUE); + if (box) + gtk_container_add (GTK_CONTAINER (box), wid); + } + else + { + bbox = gtk_hbox_new (0, 0); + gtk_container_add (GTK_CONTAINER (wid), bbox); + gtk_widget_show (bbox); + + img = gtk_image_new_from_stock (stock, GTK_ICON_SIZE_MENU); + if (stock == GTK_STOCK_GOTO_LAST) + gtk_widget_set_usize (img, 10, 6); + gtk_container_add (GTK_CONTAINER (bbox), img); + gtk_widget_show (img); + gtk_box_pack_start (GTK_BOX (box), wid, 0, 0, 0); + } + + g_signal_connect (G_OBJECT (wid), "clicked", + G_CALLBACK (callback), userdata); + gtk_widget_show (wid); + if (tip) + add_tip (wid, tip); + + return wid; +} + +void +gtkutil_label_new (char *text, GtkWidget * box) +{ + GtkWidget *label = gtk_label_new (text); + gtk_container_add (GTK_CONTAINER (box), label); + gtk_widget_show (label); +} + +GtkWidget * +gtkutil_entry_new (int max, GtkWidget * box, void *callback, + gpointer userdata) +{ + GtkWidget *entry = gtk_entry_new_with_max_length (max); + gtk_container_add (GTK_CONTAINER (box), entry); + if (callback) + g_signal_connect (G_OBJECT (entry), "changed", + G_CALLBACK (callback), userdata); + gtk_widget_show (entry); + return entry; +} + +GtkWidget * +gtkutil_clist_new (int columns, char *titles[], + GtkWidget * box, int policy, + void *select_callback, gpointer select_userdata, + void *unselect_callback, + gpointer unselect_userdata, int selection_mode) +{ + GtkWidget *clist, *win; + + win = gtk_scrolled_window_new (0, 0); + gtk_container_add (GTK_CONTAINER (box), win); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (win), + GTK_POLICY_AUTOMATIC, policy); + gtk_widget_show (win); + + if (titles) + clist = gtk_clist_new_with_titles (columns, titles); + else + clist = gtk_clist_new (columns); + + gtk_clist_set_selection_mode (GTK_CLIST (clist), selection_mode); + gtk_clist_column_titles_passive (GTK_CLIST (clist)); + gtk_container_add (GTK_CONTAINER (win), clist); + if (select_callback) + { + g_signal_connect (G_OBJECT (clist), "select_row", + G_CALLBACK (select_callback), select_userdata); + } + if (unselect_callback) + { + g_signal_connect (G_OBJECT (clist), "unselect_row", + G_CALLBACK (unselect_callback), unselect_userdata); + } + gtk_widget_show (clist); + + return clist; +} + +int +gtkutil_clist_selection (GtkWidget * clist) +{ + if (GTK_CLIST (clist)->selection) + return GPOINTER_TO_INT(GTK_CLIST (clist)->selection->data); + return -1; +} + +static int +int_compare (const int * elem1, const int * elem2) +{ + return (*elem1) - (*elem2); +} + +int +gtkutil_clist_multiple_selection (GtkWidget * clist, int ** rows, const int max_rows) +{ + int i = 0; + GList *tmp_clist; + *rows = malloc (sizeof (int) * max_rows ); + memset( *rows, -1, max_rows * sizeof(int) ); + + for( tmp_clist = GTK_CLIST(clist)->selection; + tmp_clist && i < max_rows; tmp_clist = tmp_clist->next, i++) + { + (*rows)[i] = GPOINTER_TO_INT( tmp_clist->data ); + } + qsort(*rows, i, sizeof(int), (void *)int_compare); + return i; + +} + +void +add_tip (GtkWidget * wid, char *text) +{ + static GtkTooltips *tip = NULL; + if (!tip) + tip = gtk_tooltips_new (); + gtk_tooltips_set_tip (tip, wid, text, 0); +} + +void +show_and_unfocus (GtkWidget * wid) +{ + GTK_WIDGET_UNSET_FLAGS (wid, GTK_CAN_FOCUS); + gtk_widget_show (wid); +} + +void +gtkutil_set_icon (GtkWidget *win) +{ + gtk_window_set_icon (GTK_WINDOW (win), pix_xchat); +} + +extern GtkWidget *parent_window; /* maingui.c */ + +GtkWidget * +gtkutil_window_new (char *title, char *role, int width, int height, int flags) +{ + GtkWidget *win; + + win = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtkutil_set_icon (win); +#ifdef WIN32 + gtk_window_set_wmclass (GTK_WINDOW (win), "XChat", "xchat"); +#endif + gtk_window_set_title (GTK_WINDOW (win), title); + gtk_window_set_default_size (GTK_WINDOW (win), width, height); + gtk_window_set_role (GTK_WINDOW (win), role); + if (flags & 1) + gtk_window_set_position (GTK_WINDOW (win), GTK_WIN_POS_MOUSE); + if ((flags & 2) && parent_window) + { + gtk_window_set_type_hint (GTK_WINDOW (win), GDK_WINDOW_TYPE_HINT_DIALOG); + gtk_window_set_transient_for (GTK_WINDOW (win), GTK_WINDOW (parent_window)); + } + + return win; +} + +/* pass NULL as selection to paste to both clipboard & X11 text */ +void +gtkutil_copy_to_clipboard (GtkWidget *widget, GdkAtom selection, + const gchar *str) +{ + GtkWidget *win; + GtkClipboard *clip, *clip2; + + win = gtk_widget_get_toplevel (GTK_WIDGET (widget)); + if (GTK_WIDGET_TOPLEVEL (win)) + { + int len = strlen (str); + + if (selection) + { + clip = gtk_widget_get_clipboard (win, selection); + gtk_clipboard_set_text (clip, str, len); + } else + { + /* copy to both primary X selection and clipboard */ + clip = gtk_widget_get_clipboard (win, GDK_SELECTION_PRIMARY); + clip2 = gtk_widget_get_clipboard (win, GDK_SELECTION_CLIPBOARD); + gtk_clipboard_set_text (clip, str, len); + gtk_clipboard_set_text (clip2, str, len); + } + } +} + +/* Treeview util functions */ + +GtkWidget * +gtkutil_treeview_new (GtkWidget *box, GtkTreeModel *model, + GtkTreeCellDataFunc mapper, ...) +{ + GtkWidget *win, *view; + GtkCellRenderer *renderer = NULL; + GtkTreeViewColumn *col; + va_list args; + int col_id = 0; + GType type; + char *title, *attr; + + win = gtk_scrolled_window_new (0, 0); + gtk_container_add (GTK_CONTAINER (box), win); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (win), + GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + gtk_widget_show (win); + + view = gtk_tree_view_new_with_model (model); + /* the view now has a ref on the model, we can unref it */ + g_object_unref (G_OBJECT (model)); + gtk_container_add (GTK_CONTAINER (win), view); + + va_start (args, mapper); + for (col_id = va_arg (args, int); col_id != -1; col_id = va_arg (args, int)) + { + type = gtk_tree_model_get_column_type (model, col_id); + switch (type) + { + case G_TYPE_BOOLEAN: + renderer = gtk_cell_renderer_toggle_new (); + attr = "active"; + break; + case G_TYPE_STRING: /* fall through */ + default: + renderer = gtk_cell_renderer_text_new (); + attr = "text"; + break; + } + + title = va_arg (args, char *); + if (mapper) /* user-specified function to set renderer attributes */ + { + col = gtk_tree_view_column_new_with_attributes (title, renderer, NULL); + gtk_tree_view_column_set_cell_data_func (col, renderer, mapper, + GINT_TO_POINTER (col_id), NULL); + } else + { + /* just set the typical attribute for this type of renderer */ + col = gtk_tree_view_column_new_with_attributes (title, renderer, + attr, col_id, NULL); + } + gtk_tree_view_append_column (GTK_TREE_VIEW (view), col); + } + + va_end (args); + + return view; +} + +gboolean +gtkutil_treemodel_string_to_iter (GtkTreeModel *model, gchar *pathstr, GtkTreeIter *iter_ret) +{ + GtkTreePath *path = gtk_tree_path_new_from_string (pathstr); + gboolean success; + + success = gtk_tree_model_get_iter (model, iter_ret, path); + gtk_tree_path_free (path); + return success; +} + +/*gboolean +gtkutil_treeview_get_selected_iter (GtkTreeView *view, GtkTreeIter *iter_ret) +{ + GtkTreeModel *store; + GtkTreeSelection *select; + + select = gtk_tree_view_get_selection (view); + return gtk_tree_selection_get_selected (select, &store, iter_ret); +}*/ + +gboolean +gtkutil_treeview_get_selected (GtkTreeView *view, GtkTreeIter *iter_ret, ...) +{ + GtkTreeModel *store; + GtkTreeSelection *select; + gboolean has_selected; + va_list args; + + select = gtk_tree_view_get_selection (view); + has_selected = gtk_tree_selection_get_selected (select, &store, iter_ret); + + if (has_selected) { + va_start (args, iter_ret); + gtk_tree_model_get_valist (store, iter_ret, args); + va_end (args); + } + + return has_selected; +} + diff --git a/etc/wyatt8740/src/fe-gtk/gtkutil.h b/etc/wyatt8740/src/fe-gtk/gtkutil.h new file mode 100644 index 0000000..9bf9e05 --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/gtkutil.h @@ -0,0 +1,39 @@ +#include <gtk/gtktreeview.h> +#include <gtk/gtktreemodel.h> + +typedef void (*filereqcallback) (void *, char *file); + +#define FRF_WRITE 1 +#define FRF_MULTIPLE 2 +#define FRF_ADDFOLDER 4 +#define FRF_CHOOSEFOLDER 8 +#define FRF_FILTERISINITIAL 16 +#define FRF_NOASKOVERWRITE 32 + +void gtkutil_file_req (const char *title, void *callback, void *userdata, char *filter, int flags); +void gtkutil_destroy (GtkWidget * igad, GtkWidget * dgad); +GtkWidget *gtkutil_button (GtkWidget *box, char *stock, char *tip, void *callback, + void *userdata, char *labeltext); +void gtkutil_label_new (char *text, GtkWidget * box); +GtkWidget *gtkutil_entry_new (int max, GtkWidget * box, void *callback, + gpointer userdata); +GtkWidget *gtkutil_clist_new (int columns, char *titles[], GtkWidget * box, + int policy, void *select_callback, + gpointer select_userdata, + void *unselect_callback, + gpointer unselect_userdata, int selection_mode); +int gtkutil_clist_selection (GtkWidget * clist); +int gtkutil_clist_multiple_selection (GtkWidget * clist, + int ** rows, const int max_rows); +void add_tip (GtkWidget * wid, char *text); +void show_and_unfocus (GtkWidget * wid); +void gtkutil_set_icon (GtkWidget *win); +GtkWidget *gtkutil_window_new (char *title, char *role, int width, int height, int flags); +void gtkutil_copy_to_clipboard (GtkWidget *widget, GdkAtom selection, + const gchar *str); +GtkWidget *gtkutil_treeview_new (GtkWidget *box, GtkTreeModel *model, + GtkTreeCellDataFunc mapper, ...); +gboolean gtkutil_treemodel_string_to_iter (GtkTreeModel *model, gchar *pathstr, GtkTreeIter *iter_ret); +gboolean gtkutil_treeview_get_selected_iter (GtkTreeView *view, GtkTreeIter *iter_ret); +gboolean gtkutil_treeview_get_selected (GtkTreeView *view, GtkTreeIter *iter_ret, ...); + diff --git a/etc/wyatt8740/src/fe-gtk/ignoregui.c b/etc/wyatt8740/src/fe-gtk/ignoregui.c new file mode 100644 index 0000000..468476f --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/ignoregui.c @@ -0,0 +1,450 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include "fe-gtk.h" + +#include <gtk/gtkcheckbutton.h> +#include <gtk/gtkentry.h> +#include <gtk/gtkstock.h> +#include <gtk/gtkhbox.h> +#include <gtk/gtkhbbox.h> +#include <gtk/gtkframe.h> +#include <gtk/gtkhseparator.h> +#include <gtk/gtkversion.h> + +#include <gtk/gtkliststore.h> +#include <gtk/gtktreeview.h> +#include <gtk/gtktreeselection.h> +#include <gtk/gtkcelllayout.h> +#include <gtk/gtkcellrenderertext.h> +#include <gtk/gtkcellrenderertoggle.h> + +#include "../common/xchat.h" +#include "../common/ignore.h" +#include "../common/cfgfiles.h" +#include "../common/fe.h" +#include "gtkutil.h" +#include "maingui.h" + +enum +{ + MASK_COLUMN, + CHAN_COLUMN, + PRIV_COLUMN, + NOTICE_COLUMN, + CTCP_COLUMN, + DCC_COLUMN, + INVITE_COLUMN, + UNIGNORE_COLUMN, + N_COLUMNS +}; + +static GtkWidget *ignorewin = 0; + +static GtkWidget *num_ctcp; +static GtkWidget *num_priv; +static GtkWidget *num_chan; +static GtkWidget *num_noti; +static GtkWidget *num_invi; + +static GtkTreeModel * +get_store (void) +{ + return gtk_tree_view_get_model (g_object_get_data (G_OBJECT (ignorewin), "view")); +} + +static int +ignore_get_flags (GtkTreeModel *model, GtkTreeIter *iter) +{ + gboolean chan, priv, noti, ctcp, dcc, invi, unig; + int flags = 0; + + gtk_tree_model_get (model, iter, 1, &chan, 2, &priv, 3, ¬i, + 4, &ctcp, 5, &dcc, 6, &invi, 7, &unig, -1); + if (chan) + flags |= IG_CHAN; + if (priv) + flags |= IG_PRIV; + if (noti) + flags |= IG_NOTI; + if (ctcp) + flags |= IG_CTCP; + if (dcc) + flags |= IG_DCC; + if (invi) + flags |= IG_INVI; + if (unig) + flags |= IG_UNIG; + return flags; +} + +static void +mask_edited (GtkCellRendererText *render, gchar *path, gchar *new, gpointer dat) +{ + GtkListStore *store = GTK_LIST_STORE (get_store ()); + GtkTreeIter iter; + char *old; + int flags; + + gtkutil_treemodel_string_to_iter (GTK_TREE_MODEL (store), path, &iter); + gtk_tree_model_get (GTK_TREE_MODEL (store), &iter, 0, &old, -1); + + if (!strcmp (old, new)) /* no change */ + ; + else if (ignore_exists (new)) /* duplicate, ignore */ + fe_message (_("That mask already exists."), FE_MSG_ERROR); + else + { + /* delete old mask, and add new one with original flags */ + ignore_del (old, NULL); + flags = ignore_get_flags (GTK_TREE_MODEL (store), &iter); + ignore_add (new, flags); + + /* update tree */ + gtk_list_store_set (store, &iter, MASK_COLUMN, new, -1); + } + g_free (old); + +} + +static void +option_toggled (GtkCellRendererToggle *render, gchar *path, gpointer data) +{ + GtkListStore *store = GTK_LIST_STORE (get_store ()); + GtkTreeIter iter; + int col_id = GPOINTER_TO_INT (data); + gboolean active; + char *mask; + int flags; + + gtkutil_treemodel_string_to_iter (GTK_TREE_MODEL (store), path, &iter); + + /* update model */ + gtk_tree_model_get (GTK_TREE_MODEL (store), &iter, col_id, &active, -1); + gtk_list_store_set (store, &iter, col_id, !active, -1); + + /* update ignore list */ + gtk_tree_model_get (GTK_TREE_MODEL (store), &iter, 0, &mask, -1); + flags = ignore_get_flags (GTK_TREE_MODEL (store), &iter); + if (ignore_add (mask, flags) != 2) + g_warning ("ignore treeview is out of sync!\n"); + + g_free (mask); +} + +static GtkWidget * +ignore_treeview_new (GtkWidget *box) +{ + GtkListStore *store; + GtkWidget *view; + GtkTreeViewColumn *col; + GtkCellRenderer *render; + int col_id; + + store = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, + G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, + G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, + G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, + G_TYPE_BOOLEAN, G_TYPE_BOOLEAN); + g_return_val_if_fail (store != NULL, NULL); + + view = gtkutil_treeview_new (box, GTK_TREE_MODEL (store), + NULL, + MASK_COLUMN, _("Mask"), + CHAN_COLUMN, _("Channel"), + PRIV_COLUMN, _("Private"), + NOTICE_COLUMN, _("Notice"), + CTCP_COLUMN, _("CTCP"), + DCC_COLUMN, _("DCC"), + INVITE_COLUMN, _("Invite"), + UNIGNORE_COLUMN, _("Unignore"), + -1); + + gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (view), TRUE); + gtk_tree_view_column_set_expand (gtk_tree_view_get_column (GTK_TREE_VIEW (view), 0), TRUE); + + /* attach to signals and customise columns */ + for (col_id=0; (col = gtk_tree_view_get_column (GTK_TREE_VIEW (view), col_id)); + col_id++) + { + GList *list = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (col)); + GList *tmp; + + for (tmp = list; tmp; tmp = tmp->next) + { + render = tmp->data; + if (col_id > 0) /* it's a toggle button column */ + { + g_signal_connect (render, "toggled", G_CALLBACK (option_toggled), + GINT_TO_POINTER (col_id)); + } else /* mask column */ + { + g_object_set (G_OBJECT (render), "editable", TRUE, NULL); + g_signal_connect (render, "edited", G_CALLBACK (mask_edited), NULL); + /* make this column sortable */ + gtk_tree_view_column_set_sort_column_id (col, col_id); + gtk_tree_view_column_set_min_width (col, 272); + } + /* centre titles */ + gtk_tree_view_column_set_alignment (col, 0.5); + } + + g_list_free (list); + } + + gtk_widget_show (view); + return view; +} + +static void +ignore_delete_entry_clicked (GtkWidget * wid, struct session *sess) +{ + GtkTreeView *view = g_object_get_data (G_OBJECT (ignorewin), "view"); + GtkListStore *store = GTK_LIST_STORE (gtk_tree_view_get_model (view)); + GtkTreeIter iter; + GtkTreePath *path; + char *mask = NULL; + + if (gtkutil_treeview_get_selected (view, &iter, 0, &mask, -1)) + { + /* delete this row, select next one */ +#if (GTK_MAJOR_VERSION == 2) && (GTK_MINOR_VERSION == 0) + gtk_list_store_remove (store, &iter); +#else + if (gtk_list_store_remove (store, &iter)) + { + path = gtk_tree_model_get_path (GTK_TREE_MODEL (store), &iter); + gtk_tree_view_scroll_to_cell (view, path, NULL, TRUE, 1.0, 0.0); + gtk_tree_view_set_cursor (view, path, NULL, FALSE); + gtk_tree_path_free (path); + } +#endif + + ignore_del (mask, NULL); + g_free (mask); + } +} + +static void +ignore_store_new (int cancel, char *mask, gpointer data) +{ + GtkTreeView *view = g_object_get_data (G_OBJECT (ignorewin), "view"); + GtkListStore *store = GTK_LIST_STORE (get_store ()); + GtkTreeIter iter; + GtkTreePath *path; + int flags = IG_CHAN | IG_PRIV | IG_NOTI | IG_CTCP | IG_DCC | IG_INVI; + + if (cancel) + return; + /* check if it already exists */ + if (ignore_exists (mask)) + { + fe_message (_("That mask already exists."), FE_MSG_ERROR); + return; + } + + ignore_add (mask, flags); + + gtk_list_store_append (store, &iter); + /* ignore everything by default */ + gtk_list_store_set (store, &iter, 0, mask, 1, TRUE, 2, TRUE, 3, TRUE, + 4, TRUE, 5, TRUE, 6, TRUE, 7, FALSE, -1); + /* make sure the new row is visible and selected */ + path = gtk_tree_model_get_path (GTK_TREE_MODEL (store), &iter); + gtk_tree_view_scroll_to_cell (view, path, NULL, TRUE, 1.0, 0.0); + gtk_tree_view_set_cursor (view, path, NULL, FALSE); + gtk_tree_path_free (path); +} + +static void +ignore_clear_entry_clicked (GtkWidget * wid, gpointer unused) +{ + GtkListStore *store = GTK_LIST_STORE (get_store ()); + GtkTreeIter iter; + char *mask; + + if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter)) + { + /* remove from ignore_list */ + do + { + mask = NULL; + gtk_tree_model_get (GTK_TREE_MODEL (store), &iter, MASK_COLUMN, &mask, -1); + ignore_del (mask, NULL); + g_free (mask); + } + while (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter)); + + /* remove from GUI */ + gtk_list_store_clear (store); + } +} + +static void +ignore_new_entry_clicked (GtkWidget * wid, struct session *sess) +{ + fe_get_str (_("Enter mask to ignore:"), "nick!userid@host.com", + ignore_store_new, NULL); + +} + +static void +close_ignore_gui_callback () +{ + ignore_save (); + ignorewin = 0; +} + +static GtkWidget * +ignore_stats_entry (GtkWidget * box, char *label, int value) +{ + GtkWidget *wid; + char buf[16]; + + sprintf (buf, "%d", value); + gtkutil_label_new (label, box); + wid = gtkutil_entry_new (16, box, 0, 0); + gtk_widget_set_size_request (wid, 30, -1); + gtk_editable_set_editable (GTK_EDITABLE (wid), FALSE); + gtk_widget_set_sensitive (GTK_WIDGET (wid), FALSE); + gtk_entry_set_text (GTK_ENTRY (wid), buf); + + return wid; +} + +void +ignore_gui_open () +{ + GtkWidget *vbox, *box, *stat_box, *frame; + GtkWidget *view; + GtkListStore *store; + GtkTreeIter iter; + GSList *temp = ignore_list; + char *mask; + gboolean private, chan, notice, ctcp, dcc, invite, unignore; + + if (ignorewin) + { + mg_bring_tofront (ignorewin); + return; + } + + ignorewin = + mg_create_generic_tab ("IgnoreList", _("XChat: Ignore list"), + FALSE, TRUE, close_ignore_gui_callback, + NULL, 600, 256, &vbox, 0); + + view = ignore_treeview_new (vbox); + g_object_set_data (G_OBJECT (ignorewin), "view", view); + + frame = gtk_frame_new (_("Ignore Stats:")); + gtk_widget_show (frame); + + stat_box = gtk_hbox_new (0, 2); + gtk_container_set_border_width (GTK_CONTAINER (stat_box), 6); + gtk_container_add (GTK_CONTAINER (frame), stat_box); + gtk_widget_show (stat_box); + + num_chan = ignore_stats_entry (stat_box, _("Channel:"), ignored_chan); + num_priv = ignore_stats_entry (stat_box, _("Private:"), ignored_priv); + num_noti = ignore_stats_entry (stat_box, _("Notice:"), ignored_noti); + num_ctcp = ignore_stats_entry (stat_box, _("CTCP:"), ignored_ctcp); + num_invi = ignore_stats_entry (stat_box, _("Invite:"), ignored_invi); + + gtk_box_pack_start (GTK_BOX (vbox), frame, 0, 0, 5); + + box = gtk_hbutton_box_new (); + gtk_button_box_set_layout (GTK_BUTTON_BOX (box), GTK_BUTTONBOX_SPREAD); + gtk_box_pack_start (GTK_BOX (vbox), box, FALSE, FALSE, 2); + gtk_container_set_border_width (GTK_CONTAINER (box), 5); + gtk_widget_show (box); + + gtkutil_button (box, GTK_STOCK_NEW, 0, ignore_new_entry_clicked, 0, + _("Add...")); + gtkutil_button (box, GTK_STOCK_DELETE, 0, ignore_delete_entry_clicked, + 0, _("Delete")); + gtkutil_button (box, GTK_STOCK_CLEAR, 0, ignore_clear_entry_clicked, + 0, _("Clear")); + + store = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (view))); + + while (temp) + { + struct ignore *ignore = temp->data; + + mask = ignore->mask; + chan = (ignore->type & IG_CHAN); + private = (ignore->type & IG_PRIV); + notice = (ignore->type & IG_NOTI); + ctcp = (ignore->type & IG_CTCP); + dcc = (ignore->type & IG_DCC); + invite = (ignore->type & IG_INVI); + unignore = (ignore->type & IG_UNIG); + + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, + MASK_COLUMN, mask, + CHAN_COLUMN, chan, + PRIV_COLUMN, private, + NOTICE_COLUMN, notice, + CTCP_COLUMN, ctcp, + DCC_COLUMN, dcc, + INVITE_COLUMN, invite, + UNIGNORE_COLUMN, unignore, + -1); + + temp = temp->next; + } + gtk_widget_show (ignorewin); +} + +void +fe_ignore_update (int level) +{ + /* some ignores have changed via /ignore, we should update + the gui now */ + /* level 1 = the list only. */ + /* level 2 = the numbers only. */ + /* for now, ignore level 1, since the ignore GUI isn't realtime, + only saved when you click OK */ + char buf[16]; + + if (level == 2 && ignorewin) + { + sprintf (buf, "%d", ignored_ctcp); + gtk_entry_set_text (GTK_ENTRY (num_ctcp), buf); + + sprintf (buf, "%d", ignored_noti); + gtk_entry_set_text (GTK_ENTRY (num_noti), buf); + + sprintf (buf, "%d", ignored_chan); + gtk_entry_set_text (GTK_ENTRY (num_chan), buf); + + sprintf (buf, "%d", ignored_invi); + gtk_entry_set_text (GTK_ENTRY (num_invi), buf); + + sprintf (buf, "%d", ignored_priv); + gtk_entry_set_text (GTK_ENTRY (num_priv), buf); + } +} diff --git a/etc/wyatt8740/src/fe-gtk/joind.c b/etc/wyatt8740/src/fe-gtk/joind.c new file mode 100644 index 0000000..ee5c56d --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/joind.c @@ -0,0 +1,257 @@ +/* Copyright (c) 2005 Peter Zelezny + All Rights Reserved. + + joind.c - The Join Dialog. + + Popups up when you connect without any autojoin channels and helps you + to find or join a channel. +*/ + +#include <sys/types.h> +#include <sys/stat.h> +#include <unistd.h> +#include <string.h> +#include <stdio.h> + +#include <gtk/gtkbbox.h> +#include <gtk/gtkbutton.h> +#include <gtk/gtkdialog.h> +#include <gtk/gtkentry.h> +#include <gtk/gtkhbox.h> +#include <gtk/gtkimage.h> +#include <gtk/gtklabel.h> +#include <gtk/gtkradiobutton.h> +#include <gtk/gtkvbox.h> +#include <gtk/gtkwindow.h> + +#include "../common/xchat.h" +#include "../common/xchatc.h" +#include "../common/server.h" +#include "../common/fe.h" +#include "fe-gtk.h" +#include "chanlist.h" + + +static void +joind_radio2_cb (GtkWidget *radio, server *serv) +{ + if (GTK_TOGGLE_BUTTON (radio)->active) + { + gtk_widget_grab_focus (serv->gui->joind_entry); + gtk_editable_set_position (GTK_EDITABLE (serv->gui->joind_entry), 999); + } +} + +static void +joind_entryenter_cb (GtkWidget *entry, GtkWidget *ok) +{ + gtk_widget_grab_focus (ok); +} + +static void +joind_entryfocus_cb (GtkWidget *entry, GdkEventFocus *event, server *serv) +{ + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (serv->gui->joind_radio2), TRUE); +} + +static void +joind_destroy_cb (GtkWidget *win, server *serv) +{ + if (is_server (serv)) + serv->gui->joind_win = NULL; +} + +static void +joind_ok_cb (GtkWidget *ok, server *serv) +{ + if (!is_server (serv)) + { + gtk_widget_destroy (gtk_widget_get_toplevel (ok)); + return; + } + + /* do nothing */ + if (GTK_TOGGLE_BUTTON (serv->gui->joind_radio1)->active) + goto xit; + + /* join specific channel */ + if (GTK_TOGGLE_BUTTON (serv->gui->joind_radio2)->active) + { + char *text = GTK_ENTRY (serv->gui->joind_entry)->text; + if (strlen (text) < 2) + { + fe_message (_("Channel name too short, try again."), FE_MSG_ERROR); + return; + } + serv->p_join (serv, text, ""); + goto xit; + } + + /* channel list */ + chanlist_opengui (serv, TRUE); + +xit: + prefs.gui_join_dialog = 0; + if (GTK_TOGGLE_BUTTON (serv->gui->joind_check)->active) + prefs.gui_join_dialog = 1; + + gtk_widget_destroy (serv->gui->joind_win); + serv->gui->joind_win = NULL; +} + +static void +joind_show_dialog (server *serv) +{ + GtkWidget *dialog1; + GtkWidget *dialog_vbox1; + GtkWidget *vbox1; + GtkWidget *hbox1; + GtkWidget *image1; + GtkWidget *vbox2; + GtkWidget *label; + GtkWidget *radiobutton1; + GtkWidget *radiobutton2; + GtkWidget *radiobutton3; + GSList *radiobutton1_group; + GtkWidget *hbox2; + GtkWidget *entry1; + GtkWidget *checkbutton1; + GtkWidget *dialog_action_area1; + GtkWidget *okbutton1; + char buf[256]; + char buf2[256]; + + serv->gui->joind_win = dialog1 = gtk_dialog_new (); + gtk_window_set_title (GTK_WINDOW (dialog1), _("XChat: Connection Complete")); + gtk_window_set_type_hint (GTK_WINDOW (dialog1), GDK_WINDOW_TYPE_HINT_DIALOG); + gtk_window_set_position (GTK_WINDOW (dialog1), GTK_WIN_POS_MOUSE); + + dialog_vbox1 = GTK_DIALOG (dialog1)->vbox; + gtk_widget_show (dialog_vbox1); + + vbox1 = gtk_vbox_new (FALSE, 0); + gtk_widget_show (vbox1); + gtk_box_pack_start (GTK_BOX (dialog_vbox1), vbox1, TRUE, TRUE, 0); + + hbox1 = gtk_hbox_new (FALSE, 0); + gtk_widget_show (hbox1); + gtk_box_pack_start (GTK_BOX (vbox1), hbox1, TRUE, TRUE, 0); + + image1 = gtk_image_new_from_stock ("gtk-yes", GTK_ICON_SIZE_DIALOG); + gtk_widget_show (image1); + gtk_box_pack_start (GTK_BOX (hbox1), image1, FALSE, TRUE, 24); + gtk_misc_set_alignment (GTK_MISC (image1), 0.5, 0.06); + + vbox2 = gtk_vbox_new (FALSE, 10); + gtk_container_set_border_width (GTK_CONTAINER (vbox2), 6); + gtk_widget_show (vbox2); + gtk_box_pack_start (GTK_BOX (hbox1), vbox2, TRUE, TRUE, 0); + + snprintf (buf2, sizeof (buf2), _("Connection to %s complete."), + server_get_network (serv, TRUE)); + snprintf (buf, sizeof (buf), "\n<b>%s</b>", buf2); + label = gtk_label_new (buf); + gtk_widget_show (label); + gtk_box_pack_start (GTK_BOX (vbox2), label, FALSE, FALSE, 0); + gtk_label_set_use_markup (GTK_LABEL (label), TRUE); + gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); + + label = gtk_label_new (_("In the Server-List window, no channel (chat room) has been entered to be automatically joined for this network.")); + gtk_widget_show (label); + gtk_box_pack_start (GTK_BOX (vbox2), label, FALSE, FALSE, 0); + GTK_LABEL (label)->wrap = TRUE; + gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); + + label = gtk_label_new (_("What would you like to do next?")); + gtk_widget_show (label); + gtk_box_pack_start (GTK_BOX (vbox2), label, FALSE, FALSE, 0); + gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); + + serv->gui->joind_radio1 = radiobutton1 = gtk_radio_button_new_with_mnemonic (NULL, _("_Nothing, I'll join a channel later.")); + gtk_widget_show (radiobutton1); + gtk_box_pack_start (GTK_BOX (vbox2), radiobutton1, FALSE, FALSE, 0); + radiobutton1_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (radiobutton1)); + + hbox2 = gtk_hbox_new (FALSE, 0); + gtk_widget_show (hbox2); + gtk_box_pack_start (GTK_BOX (vbox2), hbox2, FALSE, FALSE, 0); + + serv->gui->joind_radio2 = radiobutton2 = gtk_radio_button_new_with_mnemonic (NULL, _("_Join this channel:")); + gtk_widget_show (radiobutton2); + gtk_box_pack_start (GTK_BOX (hbox2), radiobutton2, FALSE, FALSE, 0); + gtk_radio_button_set_group (GTK_RADIO_BUTTON (radiobutton2), radiobutton1_group); + radiobutton1_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (radiobutton2)); + + serv->gui->joind_entry = entry1 = gtk_entry_new (); + gtk_entry_set_text (GTK_ENTRY (entry1), "#"); + gtk_widget_show (entry1); + gtk_box_pack_start (GTK_BOX (hbox2), entry1, TRUE, TRUE, 8); + + snprintf (buf, sizeof (buf), "<small> %s</small>", + _("If you know the name of the channel you want to join, enter it here.")); + label = gtk_label_new (buf); + gtk_widget_show (label); + gtk_box_pack_start (GTK_BOX (vbox2), label, FALSE, FALSE, 0); + gtk_label_set_use_markup (GTK_LABEL (label), TRUE); + gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); + + radiobutton3 = gtk_radio_button_new_with_mnemonic (NULL, _("O_pen the Channel-List window.")); + gtk_widget_show (radiobutton3); + gtk_box_pack_start (GTK_BOX (vbox2), radiobutton3, FALSE, FALSE, 0); + gtk_radio_button_set_group (GTK_RADIO_BUTTON (radiobutton3), radiobutton1_group); + radiobutton1_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (radiobutton3)); + + snprintf (buf, sizeof (buf), "<small> %s</small>", + _("Retrieving the Channel-List may take a minute or two.")); + label = gtk_label_new (buf); + gtk_widget_show (label); + gtk_box_pack_start (GTK_BOX (vbox2), label, FALSE, FALSE, 0); + gtk_label_set_use_markup (GTK_LABEL (label), TRUE); + gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); + + serv->gui->joind_check = checkbutton1 = gtk_check_button_new_with_mnemonic (_("_Always show this dialog after connecting.")); + if (prefs.gui_join_dialog) + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton1), TRUE); + gtk_widget_show (checkbutton1); + gtk_box_pack_start (GTK_BOX (vbox1), checkbutton1, FALSE, FALSE, 0); + + dialog_action_area1 = GTK_DIALOG (dialog1)->action_area; + gtk_widget_show (dialog_action_area1); + gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area1), GTK_BUTTONBOX_END); + + okbutton1 = gtk_button_new_from_stock ("gtk-ok"); + gtk_widget_show (okbutton1); + gtk_box_pack_end (GTK_BOX (GTK_DIALOG (dialog1)->action_area), okbutton1, FALSE, TRUE, 0); + GTK_WIDGET_SET_FLAGS (okbutton1, GTK_CAN_DEFAULT); + + g_signal_connect (G_OBJECT (dialog1), "destroy", + G_CALLBACK (joind_destroy_cb), serv); + g_signal_connect (G_OBJECT (entry1), "focus_in_event", + G_CALLBACK (joind_entryfocus_cb), serv); + g_signal_connect (G_OBJECT (entry1), "activate", + G_CALLBACK (joind_entryenter_cb), okbutton1); + g_signal_connect (G_OBJECT (radiobutton2), "toggled", + G_CALLBACK (joind_radio2_cb), serv); + g_signal_connect (G_OBJECT (okbutton1), "clicked", + G_CALLBACK (joind_ok_cb), serv); + + gtk_widget_grab_focus (okbutton1); + gtk_widget_show_all (dialog1); +} + +void +joind_open (server *serv) +{ + if (prefs.gui_join_dialog) + joind_show_dialog (serv); +} + +void +joind_close (server *serv) +{ + if (serv->gui->joind_win) + { + gtk_widget_destroy (serv->gui->joind_win); + serv->gui->joind_win = NULL; + } +} diff --git a/etc/wyatt8740/src/fe-gtk/joind.h b/etc/wyatt8740/src/fe-gtk/joind.h new file mode 100644 index 0000000..aa0fd0a --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/joind.h @@ -0,0 +1,2 @@ +void joind_open (server *serv); +void joind_close (server *serv); diff --git a/etc/wyatt8740/src/fe-gtk/maingui.c b/etc/wyatt8740/src/fe-gtk/maingui.c new file mode 100644 index 0000000..994e8cd --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/maingui.c @@ -0,0 +1,3796 @@ +/* X-Chat + * Copyright (C) 1998-2005 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdlib.h> +#include <string.h> +#include <stdio.h> +#include <ctype.h> + +#include <gtk/gtkarrow.h> +#include <gtk/gtktogglebutton.h> +#include <gtk/gtkhbox.h> +#include <gtk/gtkvbox.h> +#include <gtk/gtkeventbox.h> +#include <gtk/gtkentry.h> +#include <gtk/gtkhpaned.h> +#include <gtk/gtkvpaned.h> +#include <gtk/gtkframe.h> +#include <gtk/gtklabel.h> +#include <gtk/gtkmenuitem.h> +#include <gtk/gtkprogressbar.h> +#include <gtk/gtkscrolledwindow.h> +#include <gtk/gtkstock.h> +#include <gtk/gtktable.h> +#include <gtk/gtknotebook.h> +#include <gtk/gtkimage.h> +#include <gtk/gtkmessagedialog.h> +#include <gtk/gtkcheckmenuitem.h> +#include <gtk/gtkcheckbutton.h> +#include <gtk/gtkbbox.h> +#include <gtk/gtkvscrollbar.h> + +#include "../common/xchat.h" +#include "../common/fe.h" +#include "../common/server.h" +#include "../common/xchatc.h" +#include "../common/outbound.h" +#include "../common/inbound.h" +#include "../common/plugin.h" +#include "../common/modes.h" +#include "../common/url.h" +#include "fe-gtk.h" +#include "banlist.h" +#include "gtkutil.h" +#include "joind.h" +#include "palette.h" +#include "maingui.h" +#include "menu.h" +#include "fkeys.h" +#include "userlistgui.h" +#include "chanview.h" +#include "pixmaps.h" +#include "plugin-tray.h" +#include "xtext.h" + +#ifdef USE_GTKSPELL +#include <gtk/gtktextview.h> +#include <gtkspell/gtkspell.h> +#endif + +#ifdef USE_LIBSEXY +#include "sexy-spell-entry.h" +#endif + +#define GUI_SPACING (3) +#define GUI_BORDER (0) +#define SCROLLBAR_SPACING (2) + +enum +{ + POS_INVALID = 0, + POS_TOPLEFT = 1, + POS_BOTTOMLEFT = 2, + POS_TOPRIGHT = 3, + POS_BOTTOMRIGHT = 4, + POS_TOP = 5, /* for tabs only */ + POS_BOTTOM = 6, + POS_HIDDEN = 7 +}; + +/* two different types of tabs */ +#define TAG_IRC 0 /* server, channel, dialog */ +#define TAG_UTIL 1 /* dcc, notify, chanlist */ + +static void mg_create_entry (session *sess, GtkWidget *box); +static void mg_link_irctab (session *sess, int focus); + +static session_gui static_mg_gui; +static session_gui *mg_gui = NULL; /* the shared irc tab */ +static int ignore_chanmode = FALSE; +static const char chan_flags[] = { 't', 'n', 's', 'i', 'p', 'm', 'l', 'k' }; + +static chan *active_tab = NULL; /* active tab */ +GtkWidget *parent_window = NULL; /* the master window */ + +GtkStyle *input_style; + +static PangoAttrList *away_list; +static PangoAttrList *newdata_list; +static PangoAttrList *nickseen_list; +static PangoAttrList *newmsg_list; +static PangoAttrList *plain_list = NULL; + + +#ifdef USE_GTKSPELL + +/* use these when it's a GtkTextView instead of GtkEntry */ + +char * +SPELL_ENTRY_GET_TEXT (GtkWidget *entry) +{ + static char *last = NULL; /* warning: don't overlap 2 GET_TEXT calls! */ + GtkTextBuffer *buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (entry)); + GtkTextIter start_iter, end_iter; + + gtk_text_buffer_get_iter_at_offset (buf, &start_iter, 0); + gtk_text_buffer_get_end_iter (buf, &end_iter); + g_free (last); + last = gtk_text_buffer_get_text (buf, &start_iter, &end_iter, FALSE); + return last; +} + +void +SPELL_ENTRY_SET_POS (GtkWidget *entry, int pos) +{ + GtkTextIter iter; + GtkTextBuffer *buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (entry)); + + gtk_text_buffer_get_iter_at_offset (buf, &iter, pos); + gtk_text_buffer_place_cursor (buf, &iter); +} + +int +SPELL_ENTRY_GET_POS (GtkWidget *entry) +{ + GtkTextIter cursor; + GtkTextBuffer *buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (entry)); + + gtk_text_buffer_get_iter_at_mark (buf, &cursor, gtk_text_buffer_get_insert (buf)); + return gtk_text_iter_get_offset (&cursor); +} + +void +SPELL_ENTRY_INSERT (GtkWidget *entry, const char *text, int len, int *pos) +{ + GtkTextIter iter; + GtkTextBuffer *buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (entry)); + + /* len is bytes. pos is chars. */ + gtk_text_buffer_get_iter_at_offset (buf, &iter, *pos); + gtk_text_buffer_insert (buf, &iter, text, len); + *pos += g_utf8_strlen (text, len); +} + +#endif + +static PangoAttrList * +mg_attr_list_create (GdkColor *col, int size) +{ + PangoAttribute *attr; + PangoAttrList *list; + + list = pango_attr_list_new (); + + if (col) + { + attr = pango_attr_foreground_new (col->red, col->green, col->blue); + attr->start_index = 0; + attr->end_index = 0xffff; + pango_attr_list_insert (list, attr); + } + + if (size > 0) + { + attr = pango_attr_scale_new (size == 1 ? PANGO_SCALE_SMALL : PANGO_SCALE_X_SMALL); + attr->start_index = 0; + attr->end_index = 0xffff; + pango_attr_list_insert (list, attr); + } + + return list; +} + +static void +mg_create_tab_colors (void) +{ + if (plain_list) + { + pango_attr_list_unref (plain_list); + pango_attr_list_unref (newmsg_list); + pango_attr_list_unref (newdata_list); + pango_attr_list_unref (nickseen_list); + pango_attr_list_unref (away_list); + } + + plain_list = mg_attr_list_create (NULL, prefs.tab_small); + newdata_list = mg_attr_list_create (&colors[COL_NEW_DATA], prefs.tab_small); + nickseen_list = mg_attr_list_create (&colors[COL_HILIGHT], prefs.tab_small); + newmsg_list = mg_attr_list_create (&colors[COL_NEW_MSG], prefs.tab_small); + away_list = mg_attr_list_create (&colors[COL_AWAY], FALSE); +} + +#ifdef WIN32 +#define WINVER 0x0501 /* needed for vc6? */ +#include <windows.h> +#include <gdk/gdkwin32.h> + +/* Flash the taskbar button on Windows when there's a highlight event. */ + +static void +flash_window (GtkWidget *win) +{ + FLASHWINFO fi; + static HMODULE user = NULL; + static BOOL (*flash) (PFLASHWINFO) = NULL; + + if (!user) + { + user = GetModuleHandleA ("USER32"); + if (!user) + return; /* this should never fail */ + } + + if (!flash) + { + flash = (void *)GetProcAddress (user, "FlashWindowEx"); + if (!flash) + return; /* this fails on NT4.0 and Win95 */ + } + + fi.cbSize = sizeof (fi); + fi.hwnd = GDK_WINDOW_HWND (win->window); + fi.dwFlags = FLASHW_ALL | FLASHW_TIMERNOFG; + fi.uCount = 0; + fi.dwTimeout = 500; + flash (&fi); + /*FlashWindowEx (&fi);*/ +} +#else + +#ifdef USE_XLIB +#include <gdk/gdkx.h> + +static void +set_window_urgency (GtkWidget *win, gboolean set) +{ + XWMHints *hints; + + hints = XGetWMHints(GDK_WINDOW_XDISPLAY(win->window), GDK_WINDOW_XWINDOW(win->window)); + if (set) + hints->flags |= XUrgencyHint; + else + hints->flags &= ~XUrgencyHint; + XSetWMHints(GDK_WINDOW_XDISPLAY(win->window), + GDK_WINDOW_XWINDOW(win->window), hints); + XFree(hints); +} + +static void +flash_window (GtkWidget *win) +{ + set_window_urgency (win, TRUE); +} + +static void +unflash_window (GtkWidget *win) +{ + set_window_urgency (win, FALSE); +} +#endif +#endif + +/* flash the taskbar button */ + +void +fe_flash_window (session *sess) +{ +#if defined(WIN32) || defined(USE_XLIB) + if (fe_gui_info (sess, 0) != 1) /* only do it if not focused */ + flash_window (sess->gui->window); +#endif +} + +/* set a tab plain, red, light-red, or blue */ + +void +fe_set_tab_color (struct session *sess, int col) +{ + struct session *server_sess = sess->server->server_session; + if (sess->gui->is_tab && (col == 0 || sess != current_tab)) + { + switch (col) + { + case 0: /* no particular color (theme default) */ + sess->new_data = FALSE; + sess->msg_said = FALSE; + sess->nick_said = FALSE; + chan_set_color (sess->res->tab, plain_list); + break; + case 1: /* new data has been displayed (dark red) */ + sess->new_data = TRUE; + sess->msg_said = FALSE; + sess->nick_said = FALSE; + chan_set_color (sess->res->tab, newdata_list); + + if (chan_is_collapsed (sess->res->tab)) + { + server_sess->new_data = TRUE; + server_sess->msg_said = FALSE; + server_sess->nick_said = FALSE; + chan_set_color (chan_get_parent (sess->res->tab), newdata_list); + } + + break; + case 2: /* new message arrived in channel (light red) */ + sess->new_data = FALSE; + sess->msg_said = TRUE; + sess->nick_said = FALSE; + chan_set_color (sess->res->tab, newmsg_list); + + if (chan_is_collapsed (sess->res->tab)) + { + server_sess->new_data = FALSE; + server_sess->msg_said = TRUE; + server_sess->nick_said = FALSE; + chan_set_color (chan_get_parent (sess->res->tab), newmsg_list); + } + + break; + case 3: /* your nick has been seen (blue) */ + sess->new_data = FALSE; + sess->msg_said = FALSE; + sess->nick_said = TRUE; + chan_set_color (sess->res->tab, nickseen_list); + + if (chan_is_collapsed (sess->res->tab)) + { + server_sess->new_data = FALSE; + server_sess->msg_said = FALSE; + server_sess->nick_said = TRUE; + chan_set_color (chan_get_parent (sess->res->tab), nickseen_list); + } + + break; + } + } +} + +static void +mg_set_myself_away (session_gui *gui, gboolean away) +{ + gtk_label_set_attributes (GTK_LABEL (GTK_BIN (gui->nick_label)->child), + away ? away_list : NULL); +} + +/* change the little icon to the left of your nickname */ + +void +mg_set_access_icon (session_gui *gui, GdkPixbuf *pix, gboolean away) +{ + if (gui->op_xpm) + { + if (pix == gtk_image_get_pixbuf (GTK_IMAGE (gui->op_xpm))) /* no change? */ + { + mg_set_myself_away (gui, away); + return; + } + + gtk_widget_destroy (gui->op_xpm); + gui->op_xpm = NULL; + } + + if (pix) + { + gui->op_xpm = gtk_image_new_from_pixbuf (pix); + gtk_box_pack_start (GTK_BOX (gui->nick_box), gui->op_xpm, 0, 0, 0); + gtk_widget_show (gui->op_xpm); + } + + mg_set_myself_away (gui, away); +} + +static gboolean +mg_inputbox_focus (GtkWidget *widget, GdkEventFocus *event, session_gui *gui) +{ + GSList *list; + session *sess; + + if (gui->is_tab) + return FALSE; + + list = sess_list; + while (list) + { + sess = list->data; + if (sess->gui == gui) + { + current_sess = sess; + if (!sess->server->server_session) + sess->server->server_session = sess; + break; + } + list = list->next; + } + + return FALSE; +} + +void +mg_inputbox_cb (GtkWidget *igad, session_gui *gui) +{ + char *cmd; + static int ignore = FALSE; + GSList *list; + session *sess = NULL; + + if (ignore) + return; + + cmd = SPELL_ENTRY_GET_TEXT (igad); + if (cmd[0] == 0) + return; + + cmd = strdup (cmd); + + /* avoid recursive loop */ + ignore = TRUE; + SPELL_ENTRY_SET_TEXT (igad, ""); + ignore = FALSE; + + /* where did this event come from? */ + if (gui->is_tab) + { + sess = current_tab; + } else + { + list = sess_list; + while (list) + { + sess = list->data; + if (sess->gui == gui) + break; + list = list->next; + } + if (!list) + sess = NULL; + } + + if (sess) + handle_multiline (sess, cmd, TRUE, FALSE); + + free (cmd); +} + +static gboolean +has_key (char *modes) +{ + if (!modes) + return FALSE; + /* this is a crude check, but "-k" can't exist, so it works. */ + while (*modes) + { + if (*modes == 'k') + return TRUE; + if (*modes == ' ') + return FALSE; + modes++; + } + return FALSE; +} + +void +fe_set_title (session *sess) +{ + char tbuf[512]; + int type; + + if (sess->gui->is_tab && sess != current_tab) + return; + + type = sess->type; + + if (sess->server->connected == FALSE && sess->type != SESS_DIALOG) + goto def; + + switch (type) + { + case SESS_DIALOG: + snprintf (tbuf, sizeof (tbuf), DISPLAY_NAME": %s %s @ %s", + _("Dialog with"), sess->channel, server_get_network (sess->server, TRUE)); + break; + case SESS_SERVER: + snprintf (tbuf, sizeof (tbuf), DISPLAY_NAME": %s @ %s", + sess->server->nick, server_get_network (sess->server, TRUE)); + break; + case SESS_CHANNEL: + /* don't display keys in the titlebar */ + if ((!(prefs.gui_tweaks & 16)) && has_key (sess->current_modes)) + snprintf (tbuf, sizeof (tbuf), + DISPLAY_NAME": %s @ %s / %s", + sess->server->nick, server_get_network (sess->server, TRUE), + sess->channel); + else + snprintf (tbuf, sizeof (tbuf), + DISPLAY_NAME": %s @ %s / %s (%s)", + sess->server->nick, server_get_network (sess->server, TRUE), + sess->channel, sess->current_modes ? sess->current_modes : ""); + if (prefs.gui_tweaks & 1) + snprintf (tbuf + strlen (tbuf), 9, " (%d)", sess->total); + break; + case SESS_NOTICES: + case SESS_SNOTICES: + snprintf (tbuf, sizeof (tbuf), DISPLAY_NAME": %s @ %s (notices)", + sess->server->nick, server_get_network (sess->server, TRUE)); + break; + default: + def: + gtk_window_set_title (GTK_WINDOW (sess->gui->window), DISPLAY_NAME); + return; + } + + gtk_window_set_title (GTK_WINDOW (sess->gui->window), tbuf); +} + +static gboolean +mg_windowstate_cb (GtkWindow *wid, GdkEventWindowState *event, gpointer userdata) +{ + prefs.gui_win_state = 0; + if (event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED) + prefs.gui_win_state = 1; + + if ((event->changed_mask & GDK_WINDOW_STATE_ICONIFIED) && + (event->new_window_state & GDK_WINDOW_STATE_ICONIFIED) && + (prefs.gui_tray_flags & 4)) + { + tray_toggle_visibility (TRUE); + gtk_window_deiconify (wid); + } + + return FALSE; +} + +static gboolean +mg_configure_cb (GtkWidget *wid, GdkEventConfigure *event, session *sess) +{ + if (sess == NULL) /* for the main_window */ + { + if (mg_gui) + { + if (prefs.mainwindow_save) + { + sess = current_sess; + gtk_window_get_position (GTK_WINDOW (wid), &prefs.mainwindow_left, + &prefs.mainwindow_top); + gtk_window_get_size (GTK_WINDOW (wid), &prefs.mainwindow_width, + &prefs.mainwindow_height); + } + } + } + + if (sess) + { + if (sess->type == SESS_DIALOG && prefs.mainwindow_save) + { + gtk_window_get_position (GTK_WINDOW (wid), &prefs.dialog_left, + &prefs.dialog_top); + gtk_window_get_size (GTK_WINDOW (wid), &prefs.dialog_width, + &prefs.dialog_height); + } + + if (((GtkXText *) sess->gui->xtext)->transparent) + gtk_widget_queue_draw (sess->gui->xtext); + } + + return FALSE; +} + +/* move to a non-irc tab */ + +static void +mg_show_generic_tab (GtkWidget *box) +{ + int num; + GtkWidget *f = NULL; + +#if defined(GTK_WIDGET_HAS_FOCUS) + if (current_sess && GTK_WIDGET_HAS_FOCUS (current_sess->gui->input_box)) +#else + if (current_sess && gtk_widget_has_focus (current_sess->gui->input_box)) +#endif + f = current_sess->gui->input_box; + + num = gtk_notebook_page_num (GTK_NOTEBOOK (mg_gui->note_book), box); + gtk_notebook_set_current_page (GTK_NOTEBOOK (mg_gui->note_book), num); + gtk_tree_view_set_model (GTK_TREE_VIEW (mg_gui->user_tree), NULL); + gtk_window_set_title (GTK_WINDOW (mg_gui->window), + g_object_get_data (G_OBJECT (box), "title")); + gtk_widget_set_sensitive (mg_gui->menu, FALSE); + + if (f) + gtk_widget_grab_focus (f); +} + +/* a channel has been focused */ + +static void +mg_focus (session *sess) +{ + if (sess->gui->is_tab) + current_tab = sess; + current_sess = sess; + + /* dirty trick to avoid auto-selection */ + SPELL_ENTRY_SET_EDITABLE (sess->gui->input_box, FALSE); + gtk_widget_grab_focus (sess->gui->input_box); + SPELL_ENTRY_SET_EDITABLE (sess->gui->input_box, TRUE); + + sess->server->front_session = sess; + + if (sess->server->server_session != NULL) + { + if (sess->server->server_session->type != SESS_SERVER) + sess->server->server_session = sess; + } else + { + sess->server->server_session = sess; + } + + if (sess->new_data || sess->nick_said || sess->msg_said) + { + sess->nick_said = FALSE; + sess->msg_said = FALSE; + sess->new_data = FALSE; + /* when called via mg_changui_new, is_tab might be true, but + sess->res->tab is still NULL. */ + if (sess->res->tab) + fe_set_tab_color (sess, 0); + } +} + +static int +mg_progressbar_update (GtkWidget *bar) +{ + static int type = 0; + static float pos = 0; + + pos += 0.05; + if (pos >= 0.99) + { + if (type == 0) + { + type = 1; + gtk_progress_bar_set_orientation ((GtkProgressBar *) bar, + GTK_PROGRESS_RIGHT_TO_LEFT); + } else + { + type = 0; + gtk_progress_bar_set_orientation ((GtkProgressBar *) bar, + GTK_PROGRESS_LEFT_TO_RIGHT); + } + pos = 0.05; + } + gtk_progress_bar_set_fraction ((GtkProgressBar *) bar, pos); + return 1; +} + +void +mg_progressbar_create (session_gui *gui) +{ + gui->bar = gtk_progress_bar_new (); + gtk_box_pack_start (GTK_BOX (gui->nick_box), gui->bar, 0, 0, 0); + gtk_widget_show (gui->bar); + gui->bartag = fe_timeout_add (50, mg_progressbar_update, gui->bar); +} + +void +mg_progressbar_destroy (session_gui *gui) +{ + fe_timeout_remove (gui->bartag); + gtk_widget_destroy (gui->bar); + gui->bar = 0; + gui->bartag = 0; +} + +/* switching tabs away from this one, so remember some info about it! */ + +static void +mg_unpopulate (session *sess) +{ + restore_gui *res; + session_gui *gui; + int i; + + gui = sess->gui; + res = sess->res; + + res->input_text = strdup (SPELL_ENTRY_GET_TEXT (gui->input_box)); + res->topic_text = strdup (GTK_ENTRY (gui->topic_entry)->text); + res->limit_text = strdup (GTK_ENTRY (gui->limit_entry)->text); + res->key_text = strdup (GTK_ENTRY (gui->key_entry)->text); + if (gui->laginfo) + res->lag_text = strdup (gtk_label_get_text (GTK_LABEL (gui->laginfo))); + if (gui->throttleinfo) + res->queue_text = strdup (gtk_label_get_text (GTK_LABEL (gui->throttleinfo))); + + for (i = 0; i < NUM_FLAG_WIDS - 1; i++) + res->flag_wid_state[i] = GTK_TOGGLE_BUTTON (gui->flag_wid[i])->active; + + res->old_ul_value = userlist_get_value (gui->user_tree); + if (gui->lagometer) + res->lag_value = gtk_progress_bar_get_fraction ( + GTK_PROGRESS_BAR (gui->lagometer)); + if (gui->throttlemeter) + res->queue_value = gtk_progress_bar_get_fraction ( + GTK_PROGRESS_BAR (gui->throttlemeter)); + + if (gui->bar) + { + res->c_graph = TRUE; /* still have a graph, just not visible now */ + mg_progressbar_destroy (gui); + } +} + +static void +mg_restore_label (GtkWidget *label, char **text) +{ + if (!label) + return; + + if (*text) + { + gtk_label_set_text (GTK_LABEL (label), *text); + free (*text); + *text = NULL; + } else + { + gtk_label_set_text (GTK_LABEL (label), ""); + } +} + +static void +mg_restore_entry (GtkWidget *entry, char **text) +{ + if (*text) + { + gtk_entry_set_text (GTK_ENTRY (entry), *text); + free (*text); + *text = NULL; + } else + { + gtk_entry_set_text (GTK_ENTRY (entry), ""); + } + gtk_editable_set_position (GTK_EDITABLE (entry), -1); +} + +static void +mg_restore_speller (GtkWidget *entry, char **text) +{ + if (*text) + { + SPELL_ENTRY_SET_TEXT (entry, *text); + free (*text); + *text = NULL; + } else + { + SPELL_ENTRY_SET_TEXT (entry, ""); + } + SPELL_ENTRY_SET_POS (entry, -1); +} + +void +mg_set_topic_tip (session *sess) +{ + char *text; + + switch (sess->type) + { + case SESS_CHANNEL: + if (sess->topic) + { + text = g_strdup_printf (_("Topic for %s is: %s"), sess->channel, + sess->topic); + add_tip (sess->gui->topic_entry, text); + g_free (text); + } else + add_tip (sess->gui->topic_entry, _("No topic is set")); + break; + default: + if (GTK_ENTRY (sess->gui->topic_entry)->text && + GTK_ENTRY (sess->gui->topic_entry)->text[0]) + add_tip (sess->gui->topic_entry, GTK_ENTRY (sess->gui->topic_entry)->text); + else + add_tip (sess->gui->topic_entry, NULL); + } +} + +static void +mg_hide_empty_pane (GtkPaned *pane) +{ +#if defined(GTK_WIDGET_VISIBLE) + if ((pane->child1 == NULL || !GTK_WIDGET_VISIBLE (pane->child1)) && + (pane->child2 == NULL || !GTK_WIDGET_VISIBLE (pane->child2))) +#else + if ((pane->child1 == NULL || !gtk_widget_get_visible (pane->child1)) && + (pane->child2 == NULL || !gtk_widget_get_visible (pane->child2))) +#endif + { + gtk_widget_hide (GTK_WIDGET (pane)); + return; + } + + gtk_widget_show (GTK_WIDGET (pane)); +} + +static void +mg_hide_empty_boxes (session_gui *gui) +{ + /* hide empty vpanes - so the handle is not shown */ + mg_hide_empty_pane ((GtkPaned*)gui->vpane_right); + mg_hide_empty_pane ((GtkPaned*)gui->vpane_left); +} + +static void +mg_userlist_showhide (session *sess, int show) +{ + session_gui *gui = sess->gui; + int handle_size; + + if (show) + { + gtk_widget_show (gui->user_box); + gui->ul_hidden = 0; + + gtk_widget_style_get (GTK_WIDGET (gui->hpane_right), "handle-size", &handle_size, NULL); + gtk_paned_set_position (GTK_PANED (gui->hpane_right), GTK_WIDGET (gui->hpane_right)->allocation.width - (prefs.gui_pane_right_size + handle_size)); + } + else + { + gtk_widget_hide (gui->user_box); + gui->ul_hidden = 1; + } + + mg_hide_empty_boxes (gui); +} + +static gboolean +mg_is_userlist_and_tree_combined (void) +{ + if (prefs.tab_pos == POS_TOPLEFT && prefs.gui_ulist_pos == POS_BOTTOMLEFT) + return TRUE; + if (prefs.tab_pos == POS_BOTTOMLEFT && prefs.gui_ulist_pos == POS_TOPLEFT) + return TRUE; + + if (prefs.tab_pos == POS_TOPRIGHT && prefs.gui_ulist_pos == POS_BOTTOMRIGHT) + return TRUE; + if (prefs.tab_pos == POS_BOTTOMRIGHT && prefs.gui_ulist_pos == POS_TOPRIGHT) + return TRUE; + + return FALSE; +} + +/* decide if the userlist should be shown or hidden for this tab */ + +void +mg_decide_userlist (session *sess, gboolean switch_to_current) +{ + /* when called from menu.c we need this */ + if (sess->gui == mg_gui && switch_to_current) + sess = current_tab; + + if (prefs.hideuserlist) + { + mg_userlist_showhide (sess, FALSE); + return; + } + + switch (sess->type) + { + case SESS_SERVER: + case SESS_DIALOG: + case SESS_NOTICES: + case SESS_SNOTICES: + if (mg_is_userlist_and_tree_combined ()) + mg_userlist_showhide (sess, TRUE); /* show */ + else + mg_userlist_showhide (sess, FALSE); /* hide */ + break; + default: + mg_userlist_showhide (sess, TRUE); /* show */ + } +} + +static void +mg_userlist_toggle_cb (GtkWidget *button, gpointer userdata) +{ + prefs.hideuserlist = !prefs.hideuserlist; + mg_decide_userlist (current_sess, FALSE); + gtk_widget_grab_focus (current_sess->gui->input_box); +} + +static int ul_tag = 0; + +static gboolean +mg_populate_userlist (session *sess) +{ + session_gui *gui; + + if (!sess) + sess = current_tab; + + if (is_session (sess)) + { + gui = sess->gui; + if (sess->type == SESS_DIALOG) + mg_set_access_icon (sess->gui, NULL, sess->server->is_away); + else + mg_set_access_icon (sess->gui, get_user_icon (sess->server, sess->me), sess->server->is_away); + userlist_show (sess); + userlist_set_value (sess->gui->user_tree, sess->res->old_ul_value); + } + + ul_tag = 0; + return 0; +} + +/* fill the irc tab with a new channel */ + +static void +mg_populate (session *sess) +{ + session_gui *gui = sess->gui; + restore_gui *res = sess->res; + int i, render = TRUE; + guint16 vis = gui->ul_hidden; + + switch (sess->type) + { + case SESS_DIALOG: + /* show the dialog buttons */ + gtk_widget_show (gui->dialogbutton_box); + /* hide the chan-mode buttons */ + gtk_widget_hide (gui->topicbutton_box); + /* hide the userlist */ + mg_decide_userlist (sess, FALSE); + /* shouldn't edit the topic */ + gtk_editable_set_editable (GTK_EDITABLE (gui->topic_entry), FALSE); + break; + case SESS_SERVER: + if (prefs.chanmodebuttons) + gtk_widget_show (gui->topicbutton_box); + /* hide the dialog buttons */ + gtk_widget_hide (gui->dialogbutton_box); + /* hide the userlist */ + mg_decide_userlist (sess, FALSE); + /* shouldn't edit the topic */ + gtk_editable_set_editable (GTK_EDITABLE (gui->topic_entry), FALSE); + break; + default: + /* hide the dialog buttons */ + gtk_widget_hide (gui->dialogbutton_box); + if (prefs.chanmodebuttons) + gtk_widget_show (gui->topicbutton_box); + /* show the userlist */ + mg_decide_userlist (sess, FALSE); + /* let the topic be editted */ + gtk_editable_set_editable (GTK_EDITABLE (gui->topic_entry), TRUE); + } + + /* move to THE irc tab */ + if (gui->is_tab) + gtk_notebook_set_current_page (GTK_NOTEBOOK (gui->note_book), 0); + + /* xtext size change? Then don't render, wait for the expose caused + by showing/hidding the userlist */ + if (vis != gui->ul_hidden && gui->user_box->allocation.width > 1) + render = FALSE; + + gtk_xtext_buffer_show (GTK_XTEXT (gui->xtext), res->buffer, render); + + if (gui->is_tab) + gtk_widget_set_sensitive (gui->menu, TRUE); + + /* restore all the GtkEntry's */ + mg_restore_entry (gui->topic_entry, &res->topic_text); + mg_restore_speller (gui->input_box, &res->input_text); + mg_restore_entry (gui->key_entry, &res->key_text); + mg_restore_entry (gui->limit_entry, &res->limit_text); + mg_restore_label (gui->laginfo, &res->lag_text); + mg_restore_label (gui->throttleinfo, &res->queue_text); + + mg_focus (sess); + fe_set_title (sess); + + /* this one flickers, so only change if necessary */ + if (strcmp (sess->server->nick, gtk_button_get_label (GTK_BUTTON (gui->nick_label))) != 0) + gtk_button_set_label (GTK_BUTTON (gui->nick_label), sess->server->nick); + + /* this is slow, so make it a timeout event */ + if (!gui->is_tab) + { + mg_populate_userlist (sess); + } else + { + if (ul_tag == 0) + ul_tag = g_idle_add ((GSourceFunc)mg_populate_userlist, NULL); + } + + fe_userlist_numbers (sess); + + /* restore all the channel mode buttons */ + ignore_chanmode = TRUE; + for (i = 0; i < NUM_FLAG_WIDS - 1; i++) + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gui->flag_wid[i]), + res->flag_wid_state[i]); + ignore_chanmode = FALSE; + + if (gui->lagometer) + { + gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (gui->lagometer), + res->lag_value); + if (res->lag_tip) + add_tip (sess->gui->lagometer->parent, res->lag_tip); + } + if (gui->throttlemeter) + { + gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (gui->throttlemeter), + res->queue_value); + if (res->queue_tip) + add_tip (sess->gui->throttlemeter->parent, res->queue_tip); + } + + /* did this tab have a connecting graph? restore it.. */ + if (res->c_graph) + { + res->c_graph = FALSE; + mg_progressbar_create (gui); + } + + /* menu items */ + GTK_CHECK_MENU_ITEM (gui->menu_item[MENU_ID_AWAY])->active = sess->server->is_away; + gtk_widget_set_sensitive (gui->menu_item[MENU_ID_AWAY], sess->server->connected); + gtk_widget_set_sensitive (gui->menu_item[MENU_ID_JOIN], sess->server->end_of_motd); + gtk_widget_set_sensitive (gui->menu_item[MENU_ID_DISCONNECT], + sess->server->connected || sess->server->recondelay_tag); + + mg_set_topic_tip (sess); + + plugin_emit_dummy_print (sess, "Focus Tab"); +} + +void +mg_bring_tofront_sess (session *sess) /* IRC tab or window */ +{ + if (sess->gui->is_tab) + chan_focus (sess->res->tab); + else + gtk_window_present (GTK_WINDOW (sess->gui->window)); +} + +void +mg_bring_tofront (GtkWidget *vbox) /* non-IRC tab or window */ +{ + chan *ch; + + ch = g_object_get_data (G_OBJECT (vbox), "ch"); + if (ch) + chan_focus (ch); + else + gtk_window_present (GTK_WINDOW (gtk_widget_get_toplevel (vbox))); +} + +void +mg_switch_page (int relative, int num) +{ + if (mg_gui) + chanview_move_focus (mg_gui->chanview, relative, num); +} + +/* a toplevel IRC window was destroyed */ + +static void +mg_topdestroy_cb (GtkWidget *win, session *sess) +{ +/* printf("enter mg_topdestroy. sess %p was destroyed\n", sess);*/ + + /* kill the text buffer */ + gtk_xtext_buffer_free (sess->res->buffer); + /* kill the user list */ + g_object_unref (G_OBJECT (sess->res->user_model)); + + session_free (sess); /* tell xchat.c about it */ +} + +/* cleanup an IRC tab */ + +static void +mg_ircdestroy (session *sess) +{ + GSList *list; + + /* kill the text buffer */ + gtk_xtext_buffer_free (sess->res->buffer); + /* kill the user list */ + g_object_unref (G_OBJECT (sess->res->user_model)); + + session_free (sess); /* tell xchat.c about it */ + + if (mg_gui == NULL) + { +/* puts("-> mg_gui is already NULL");*/ + return; + } + + list = sess_list; + while (list) + { + sess = list->data; + if (sess->gui->is_tab) + { +/* puts("-> some tabs still remain");*/ + return; + } + list = list->next; + } + +/* puts("-> no tabs left, killing main tabwindow");*/ + gtk_widget_destroy (mg_gui->window); + active_tab = NULL; + mg_gui = NULL; + parent_window = NULL; +} + +static void +mg_tab_close_cb (GtkWidget *dialog, gint arg1, session *sess) +{ + GSList *list, *next; + + gtk_widget_destroy (dialog); + if (arg1 == GTK_RESPONSE_OK && is_session (sess)) + { + /* force it NOT to send individual PARTs */ + sess->server->sent_quit = TRUE; + + for (list = sess_list; list;) + { + next = list->next; + if (((session *)list->data)->server == sess->server && + ((session *)list->data) != sess) + fe_close_window ((session *)list->data); + list = next; + } + + /* just send one QUIT - better for BNCs */ + sess->server->sent_quit = FALSE; + fe_close_window (sess); + } +} + +void +mg_tab_close (session *sess) +{ + GtkWidget *dialog; + GSList *list; + int i; + + if (chan_remove (sess->res->tab, FALSE)) + mg_ircdestroy (sess); + else + { + for (i = 0, list = sess_list; list; list = list->next) + if (((session *)list->data)->server == sess->server) + i++; + dialog = gtk_message_dialog_new (GTK_WINDOW (parent_window), 0, + GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, + _("This server still has %d channels or dialogs associated with it. " + "Close them all?"), i); + g_signal_connect (G_OBJECT (dialog), "response", + G_CALLBACK (mg_tab_close_cb), sess); + gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); + gtk_widget_show (dialog); + } +} + +static void +mg_menu_destroy (GtkWidget *menu, gpointer userdata) +{ + gtk_widget_destroy (menu); + g_object_unref (menu); +} + +void +mg_create_icon_item (char *label, char *stock, GtkWidget *menu, + void *callback, void *userdata) +{ + GtkWidget *item; + + item = create_icon_menu (label, stock, TRUE); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (callback), + userdata); + gtk_widget_show (item); +} + +static int +mg_count_networks (void) +{ + int cons = 0; + GSList *list; + + for (list = serv_list; list; list = list->next) + { + if (((server *)list->data)->connected) + cons++; + } + return cons; +} + +static int +mg_count_dccs (void) +{ + GSList *list; + struct DCC *dcc; + int dccs = 0; + + list = dcc_list; + while (list) + { + dcc = list->data; + if ((dcc->type == TYPE_SEND || dcc->type == TYPE_RECV) && + dcc->dccstat == STAT_ACTIVE) + dccs++; + list = list->next; + } + + return dccs; +} + +void +mg_open_quit_dialog (gboolean minimize_button) +{ + static GtkWidget *dialog = NULL; + GtkWidget *dialog_vbox1; + GtkWidget *table1; + GtkWidget *image; + GtkWidget *checkbutton1; + GtkWidget *label; + GtkWidget *dialog_action_area1; + GtkWidget *button; + char *text, *connecttext; + int cons; + int dccs; + + if (dialog) + { + gtk_window_present (GTK_WINDOW (dialog)); + return; + } + + dccs = mg_count_dccs (); + cons = mg_count_networks (); + if (dccs + cons == 0 || !prefs.gui_quit_dialog) + { + xchat_exit (); + return; + } + + dialog = gtk_dialog_new (); + gtk_container_set_border_width (GTK_CONTAINER (dialog), 6); + gtk_window_set_title (GTK_WINDOW (dialog), _("Quit XChat?")); + gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (parent_window)); + gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); + gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE); + + dialog_vbox1 = GTK_DIALOG (dialog)->vbox; + gtk_widget_show (dialog_vbox1); + + table1 = gtk_table_new (2, 2, FALSE); + gtk_widget_show (table1); + gtk_box_pack_start (GTK_BOX (dialog_vbox1), table1, TRUE, TRUE, 0); + gtk_container_set_border_width (GTK_CONTAINER (table1), 6); + gtk_table_set_row_spacings (GTK_TABLE (table1), 12); + gtk_table_set_col_spacings (GTK_TABLE (table1), 12); + + image = gtk_image_new_from_stock ("gtk-dialog-warning", GTK_ICON_SIZE_DIALOG); + gtk_widget_show (image); + gtk_table_attach (GTK_TABLE (table1), image, 0, 1, 0, 1, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (GTK_FILL), 0, 0); + + checkbutton1 = gtk_check_button_new_with_mnemonic (_("Don't ask next time.")); + gtk_widget_show (checkbutton1); + gtk_table_attach (GTK_TABLE (table1), checkbutton1, 0, 2, 1, 2, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 4); + + connecttext = g_strdup_printf (_("You are connected to %i IRC networks."), cons); + text = g_strdup_printf ("<span weight=\"bold\" size=\"larger\">%s</span>\n\n%s\n%s", + _("Are you sure you want to quit?"), + cons ? connecttext : "", + dccs ? _("Some file transfers are still active.") : ""); + g_free (connecttext); + label = gtk_label_new (text); + g_free (text); + gtk_widget_show (label); + gtk_table_attach (GTK_TABLE (table1), label, 1, 2, 0, 1, + (GtkAttachOptions) (GTK_EXPAND | GTK_SHRINK | GTK_FILL), + (GtkAttachOptions) (GTK_EXPAND | GTK_SHRINK), 0, 0); + gtk_label_set_use_markup (GTK_LABEL (label), TRUE); + gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); + + dialog_action_area1 = GTK_DIALOG (dialog)->action_area; + gtk_widget_show (dialog_action_area1); + gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area1), + GTK_BUTTONBOX_END); + + if (minimize_button) + { + button = gtk_button_new_with_mnemonic (_("_Minimize to Tray")); + gtk_widget_show (button); + gtk_dialog_add_action_widget (GTK_DIALOG (dialog), button, 1); + } + + button = gtk_button_new_from_stock ("gtk-cancel"); + gtk_widget_show (button); + gtk_dialog_add_action_widget (GTK_DIALOG (dialog), button, + GTK_RESPONSE_CANCEL); + gtk_widget_grab_focus (button); + + button = gtk_button_new_from_stock ("gtk-quit"); + gtk_widget_show (button); + gtk_dialog_add_action_widget (GTK_DIALOG (dialog), button, 0); + + gtk_widget_show (dialog); + + switch (gtk_dialog_run (GTK_DIALOG (dialog))) + { + case 0: + if (GTK_TOGGLE_BUTTON (checkbutton1)->active) + prefs.gui_quit_dialog = 0; + xchat_exit (); + break; + case 1: /* minimize to tray */ + if (GTK_TOGGLE_BUTTON (checkbutton1)->active) + { + prefs.gui_tray_flags |= 1; + /*prefs.gui_quit_dialog = 0;*/ + } + /* force tray icon ON, if not already */ + if (!prefs.gui_tray) + { + prefs.gui_tray = 1; + tray_apply_setup (); + } + tray_toggle_visibility (TRUE); + break; + } + + gtk_widget_destroy (dialog); + dialog = NULL; +} + +void +mg_close_sess (session *sess) +{ + if (sess_list->next == NULL) + { + mg_open_quit_dialog (FALSE); + return; + } + + fe_close_window (sess); +} + +static int +mg_chan_remove (chan *ch) +{ + /* remove the tab from chanview */ + chan_remove (ch, TRUE); + /* any tabs left? */ + if (chanview_get_size (mg_gui->chanview) < 1) + { + /* if not, destroy the main tab window */ + gtk_widget_destroy (mg_gui->window); + current_tab = NULL; + active_tab = NULL; + mg_gui = NULL; + parent_window = NULL; + return TRUE; + } + return FALSE; +} + +/* destroy non-irc tab/window */ + +static void +mg_close_gen (chan *ch, GtkWidget *box) +{ + char *title = g_object_get_data (G_OBJECT (box), "title"); + + if (title) + free (title); + if (!ch) + ch = g_object_get_data (G_OBJECT (box), "ch"); + if (ch) + { + /* remove from notebook */ + gtk_widget_destroy (box); + /* remove the tab from chanview */ + mg_chan_remove (ch); + } else + { + gtk_widget_destroy (gtk_widget_get_toplevel (box)); + } +} + +/* the "X" close button has been pressed (tab-view) */ + +static void +mg_xbutton_cb (chanview *cv, chan *ch, int tag, gpointer userdata) +{ + if (tag == TAG_IRC) /* irc tab */ + mg_close_sess (userdata); + else /* non-irc utility tab */ + mg_close_gen (ch, userdata); +} + +static void +mg_link_gentab (chan *ch, GtkWidget *box) +{ + int num; + GtkWidget *win; + + g_object_ref (box); + + num = gtk_notebook_page_num (GTK_NOTEBOOK (mg_gui->note_book), box); + gtk_notebook_remove_page (GTK_NOTEBOOK (mg_gui->note_book), num); + mg_chan_remove (ch); + + win = gtkutil_window_new (g_object_get_data (G_OBJECT (box), "title"), "", + GPOINTER_TO_INT (g_object_get_data (G_OBJECT (box), "w")), + GPOINTER_TO_INT (g_object_get_data (G_OBJECT (box), "h")), + 3); + /* so it doesn't try to chan_remove (there's no tab anymore) */ + g_object_steal_data (G_OBJECT (box), "ch"); + gtk_container_set_border_width (GTK_CONTAINER (box), 0); + gtk_container_add (GTK_CONTAINER (win), box); + gtk_widget_show (win); + + g_object_unref (box); +} + +static void +mg_detach_tab_cb (GtkWidget *item, chan *ch) +{ + if (chan_get_tag (ch) == TAG_IRC) /* IRC tab */ + { + /* userdata is session * */ + mg_link_irctab (chan_get_userdata (ch), 1); + return; + } + + /* userdata is GtkWidget * */ + mg_link_gentab (ch, chan_get_userdata (ch)); /* non-IRC tab */ +} + +static void +mg_destroy_tab_cb (GtkWidget *item, chan *ch) +{ + /* treat it just like the X button press */ + mg_xbutton_cb (mg_gui->chanview, ch, chan_get_tag (ch), chan_get_userdata (ch)); +} + +static void +mg_color_insert (GtkWidget *item, gpointer userdata) +{ + char buf[32]; + char *text; + int num = GPOINTER_TO_INT (userdata); + + if (num > 99) + { + switch (num) + { + case 100: + text = "\002"; break; + case 101: + text = "\037"; break; + case 102: + text = "\035"; break; + default: + text = "\017"; break; + } + key_action_insert (current_sess->gui->input_box, 0, text, 0, 0); + } else + { + sprintf (buf, "\003%02d", num); + key_action_insert (current_sess->gui->input_box, 0, buf, 0, 0); + } +} + +static void +mg_markup_item (GtkWidget *menu, char *text, int arg) +{ + GtkWidget *item; + + item = gtk_menu_item_new_with_label (""); + gtk_label_set_markup (GTK_LABEL (GTK_BIN (item)->child), text); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (mg_color_insert), GINT_TO_POINTER (arg)); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + gtk_widget_show (item); +} + +GtkWidget * +mg_submenu (GtkWidget *menu, char *text) +{ + GtkWidget *submenu, *item; + + item = gtk_menu_item_new_with_mnemonic (text); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + gtk_widget_show (item); + + submenu = gtk_menu_new (); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), submenu); + gtk_widget_show (submenu); + + return submenu; +} + +static void +mg_create_color_menu (GtkWidget *menu, session *sess) +{ + GtkWidget *submenu; + GtkWidget *subsubmenu; + char buf[256]; + int i; + + submenu = mg_submenu (menu, _("Insert Attribute or Color Code")); + + mg_markup_item (submenu, _("<b>Bold</b>"), 100); + mg_markup_item (submenu, _("<u>Underline</u>"), 101); + /*mg_markup_item (submenu, _("<i>Italic</i>"), 102);*/ + mg_markup_item (submenu, _("Normal"), 103); + + subsubmenu = mg_submenu (submenu, _("Colors 0-7")); + + for (i = 0; i < 8; i++) + { + sprintf (buf, "<tt><sup>%02d</sup> <span background=\"#%02x%02x%02x\">" + " </span></tt>", + i, colors[i].red >> 8, colors[i].green >> 8, colors[i].blue >> 8); + mg_markup_item (subsubmenu, buf, i); + } + + subsubmenu = mg_submenu (submenu, _("Colors 8-15")); + + for (i = 8; i < 16; i++) + { + sprintf (buf, "<tt><sup>%02d</sup> <span background=\"#%02x%02x%02x\">" + " </span></tt>", + i, colors[i].red >> 8, colors[i].green >> 8, colors[i].blue >> 8); + mg_markup_item (subsubmenu, buf, i); + } +} + +static void +mg_set_guint8 (GtkCheckMenuItem *item, guint8 *setting) +{ + session *sess = current_sess; + guint8 logging = sess->text_logging; + + *setting = SET_OFF; + if (item->active) + *setting = SET_ON; + + /* has the logging setting changed? */ + if (logging != sess->text_logging) + log_open_or_close (sess); +} + +static void +mg_perchan_menu_item (char *label, GtkWidget *menu, guint8 *setting, guint global) +{ + guint8 initial_value = *setting; + + /* if it's using global value, use that as initial state */ + if (initial_value == SET_DEFAULT) + initial_value = global; + + menu_toggle_item (label, menu, mg_set_guint8, setting, initial_value); +} + +static void +mg_create_perchannelmenu (session *sess, GtkWidget *menu) +{ + GtkWidget *submenu; + + submenu = menu_quick_sub (_("_Settings"), menu, NULL, XCMENU_MNEMONIC, -1); + + mg_perchan_menu_item (_("_Log to Disk"), submenu, &sess->text_logging, prefs.logging); + mg_perchan_menu_item (_("_Reload Scrollback"), submenu, &sess->text_scrollback, prefs.text_replay); + if (sess->type == SESS_CHANNEL) + mg_perchan_menu_item (_("_Hide Join/Part Messages"), submenu, &sess->text_hidejoinpart, prefs.confmode); +} + +static void +mg_create_alertmenu (session *sess, GtkWidget *menu) +{ + GtkWidget *submenu; + + submenu = menu_quick_sub (_("_Extra Alerts"), menu, NULL, XCMENU_MNEMONIC, -1); + + mg_perchan_menu_item (_("Beep on _Message"), submenu, &sess->alert_beep, prefs.input_beep_chans); + mg_perchan_menu_item (_("Blink Tray _Icon"), submenu, &sess->alert_tray, prefs.input_tray_chans); + mg_perchan_menu_item (_("Blink Task _Bar"), submenu, &sess->alert_taskbar, prefs.input_flash_chans); +} + +static void +mg_create_tabmenu (session *sess, GdkEventButton *event, chan *ch) +{ + GtkWidget *menu, *item; + char buf[256]; + + menu = gtk_menu_new (); + + if (sess) + { + char *name = g_markup_escape_text (sess->channel[0] ? sess->channel : _("<none>"), -1); + snprintf (buf, sizeof (buf), "<span foreground=\"#3344cc\"><b>%s</b></span>", name); + g_free (name); + + item = gtk_menu_item_new_with_label (""); + gtk_label_set_markup (GTK_LABEL (GTK_BIN (item)->child), buf); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + gtk_widget_show (item); + + /* separator */ + menu_quick_item (0, 0, menu, XCMENU_SHADED, 0, 0); + + /* per-channel alerts */ + mg_create_alertmenu (sess, menu); + + /* per-channel settings */ + mg_create_perchannelmenu (sess, menu); + + /* separator */ + menu_quick_item (0, 0, menu, XCMENU_SHADED, 0, 0); + + if (sess->type == SESS_CHANNEL) + menu_addfavoritemenu (sess->server, menu, sess->channel); + } + + mg_create_icon_item (_("_Detach"), GTK_STOCK_REDO, menu, + mg_detach_tab_cb, ch); + mg_create_icon_item (_("_Close"), GTK_STOCK_CLOSE, menu, + mg_destroy_tab_cb, ch); + if (sess && tabmenu_list) + menu_create (menu, tabmenu_list, sess->channel, FALSE); + menu_add_plugin_items (menu, "\x4$TAB", sess->channel); + + if (event->window) + gtk_menu_set_screen (GTK_MENU (menu), gdk_drawable_get_screen (event->window)); + g_object_ref (menu); + g_object_ref_sink (menu); + g_object_unref (menu); + g_signal_connect (G_OBJECT (menu), "selection-done", + G_CALLBACK (mg_menu_destroy), NULL); + gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 0, event->time); +} + +static gboolean +mg_tab_contextmenu_cb (chanview *cv, chan *ch, int tag, gpointer ud, GdkEventButton *event) +{ + /* shift-click to close a tab */ + if ((event->state & GDK_SHIFT_MASK) && event->type == GDK_BUTTON_PRESS) + { + mg_xbutton_cb (cv, ch, tag, ud); + return FALSE; + } + + if (event->button != 3) + return FALSE; + + if (tag == TAG_IRC) + mg_create_tabmenu (ud, event, ch); + else + mg_create_tabmenu (NULL, event, ch); + + return TRUE; +} + +void +mg_dnd_drop_file (session *sess, char *target, char *uri) +{ + char *p, *data, *next, *fname; + + p = data = strdup (uri); + while (*p) + { + next = strchr (p, '\r'); + if (strncasecmp ("file:", p, 5) == 0) + { + if (next) + *next = 0; + fname = g_filename_from_uri (p, NULL, NULL); + if (fname) + { + /* dcc_send() expects utf-8 */ + p = xchat_filename_to_utf8 (fname, -1, 0, 0, 0); + if (p) + { + dcc_send (sess, target, p, prefs.dcc_max_send_cps, 0); + g_free (p); + } + g_free (fname); + } + } + if (!next) + break; + p = next + 1; + if (*p == '\n') + p++; + } + free (data); + +} + +static void +mg_dialog_dnd_drop (GtkWidget * widget, GdkDragContext * context, gint x, + gint y, GtkSelectionData * selection_data, guint info, + guint32 time, gpointer ud) +{ + if (current_sess->type == SESS_DIALOG) + /* sess->channel is really the nickname of dialogs */ + mg_dnd_drop_file (current_sess, current_sess->channel, selection_data->data); +} + +/* add a tabbed channel */ + +static void +mg_add_chan (session *sess) +{ + GdkPixbuf *icon; + char *name = _("<none>"); + + if (sess->channel[0]) + name = sess->channel; + + switch (sess->type) + { + case SESS_CHANNEL: + icon = pix_channel; + break; + case SESS_SERVER: + icon = pix_server; + break; + default: + icon = pix_dialog; + } + + sess->res->tab = chanview_add (sess->gui->chanview, name, sess->server, sess, + sess->type == SESS_SERVER ? FALSE : TRUE, + TAG_IRC, icon); + if (plain_list == NULL) + mg_create_tab_colors (); + + chan_set_color (sess->res->tab, plain_list); + + if (sess->res->buffer == NULL) + { + sess->res->buffer = gtk_xtext_buffer_new (GTK_XTEXT (sess->gui->xtext)); + gtk_xtext_set_time_stamp (sess->res->buffer, prefs.timestamp); + sess->res->user_model = userlist_create_model (); + } +} + +static void +mg_userlist_button (GtkWidget * box, char *label, char *cmd, + int a, int b, int c, int d) +{ + GtkWidget *wid = gtk_button_new_with_label (label); + g_signal_connect (G_OBJECT (wid), "clicked", + G_CALLBACK (userlist_button_cb), cmd); + gtk_table_attach_defaults (GTK_TABLE (box), wid, a, b, c, d); + show_and_unfocus (wid); +} + +static GtkWidget * +mg_create_userlistbuttons (GtkWidget *box) +{ + struct popup *pop; + GSList *list = button_list; + int a = 0, b = 0; + GtkWidget *tab; + + tab = gtk_table_new (5, 2, FALSE); + gtk_box_pack_end (GTK_BOX (box), tab, FALSE, FALSE, 0); + + while (list) + { + pop = list->data; + if (pop->cmd[0]) + { + mg_userlist_button (tab, pop->name, pop->cmd, a, a + 1, b, b + 1); + a++; + if (a == 2) + { + a = 0; + b++; + } + } + list = list->next; + } + + return tab; +} + +static void +mg_topic_cb (GtkWidget *entry, gpointer userdata) +{ + session *sess = current_sess; + char *text; + + if (sess->channel[0] && sess->server->connected && sess->type == SESS_CHANNEL) + { + text = GTK_ENTRY (entry)->text; + if (text[0] == 0) + text = NULL; + sess->server->p_topic (sess->server, sess->channel, text); + } else + gtk_entry_set_text (GTK_ENTRY (entry), ""); + /* restore focus to the input widget, where the next input will most +likely be */ + gtk_widget_grab_focus (sess->gui->input_box); +} + +static void +mg_tabwindow_kill_cb (GtkWidget *win, gpointer userdata) +{ + GSList *list, *next; + session *sess; + +/* puts("enter mg_tabwindow_kill_cb");*/ + xchat_is_quitting = TRUE; + + /* see if there's any non-tab windows left */ + list = sess_list; + while (list) + { + sess = list->data; + next = list->next; + if (!sess->gui->is_tab) + { + xchat_is_quitting = FALSE; +/* puts("-> will not exit, some toplevel windows left");*/ + } else + { + mg_ircdestroy (sess); + } + list = next; + } + + current_tab = NULL; + active_tab = NULL; + mg_gui = NULL; + parent_window = NULL; +} + +static GtkWidget * +mg_changui_destroy (session *sess) +{ + GtkWidget *ret = NULL; + + if (sess->gui->is_tab) + { + /* avoid calling the "destroy" callback */ + g_signal_handlers_disconnect_by_func (G_OBJECT (sess->gui->window), + mg_tabwindow_kill_cb, 0); + /* remove the tab from the chanview */ + if (!mg_chan_remove (sess->res->tab)) + /* if the window still exists, restore the signal handler */ + g_signal_connect (G_OBJECT (sess->gui->window), "destroy", + G_CALLBACK (mg_tabwindow_kill_cb), 0); + } else + { + /* avoid calling the "destroy" callback */ + g_signal_handlers_disconnect_by_func (G_OBJECT (sess->gui->window), + mg_topdestroy_cb, sess); + /*gtk_widget_destroy (sess->gui->window);*/ + /* don't destroy until the new one is created. Not sure why, but */ + /* it fixes: Gdk-CRITICAL **: gdk_colormap_get_screen: */ + /* assertion `GDK_IS_COLORMAP (cmap)' failed */ + ret = sess->gui->window; + free (sess->gui); + sess->gui = NULL; + } + return ret; +} + +static void +mg_link_irctab (session *sess, int focus) +{ + GtkWidget *win; + + if (sess->gui->is_tab) + { + win = mg_changui_destroy (sess); + mg_changui_new (sess, sess->res, 0, focus); + mg_populate (sess); + xchat_is_quitting = FALSE; + if (win) + gtk_widget_destroy (win); + return; + } + + mg_unpopulate (sess); + win = mg_changui_destroy (sess); + mg_changui_new (sess, sess->res, 1, focus); + /* the buffer is now attached to a different widget */ + ((xtext_buffer *)sess->res->buffer)->xtext = (GtkXText *)sess->gui->xtext; + if (win) + gtk_widget_destroy (win); +} + +void +mg_detach (session *sess, int mode) +{ + switch (mode) + { + /* detach only */ + case 1: + if (sess->gui->is_tab) + mg_link_irctab (sess, 1); + break; + /* attach only */ + case 2: + if (!sess->gui->is_tab) + mg_link_irctab (sess, 1); + break; + /* toggle */ + default: + mg_link_irctab (sess, 1); + } +} + +static int +check_is_number (char *t) +{ + while (*t) + { + if (*t < '0' || *t > '9') + return FALSE; + t++; + } + return TRUE; +} + +static void +mg_change_flag (GtkWidget * wid, session *sess, char flag) +{ + server *serv = sess->server; + char mode[3]; + + mode[1] = flag; + mode[2] = '\0'; + if (serv->connected && sess->channel[0]) + { + if (GTK_TOGGLE_BUTTON (wid)->active) + mode[0] = '+'; + else + mode[0] = '-'; + serv->p_mode (serv, sess->channel, mode); + serv->p_join_info (serv, sess->channel); + sess->ignore_mode = TRUE; + sess->ignore_date = TRUE; + } +} + +static void +flagl_hit (GtkWidget * wid, struct session *sess) +{ + char modes[512]; + const char *limit_str; + server *serv = sess->server; + + if (GTK_TOGGLE_BUTTON (wid)->active) + { + if (serv->connected && sess->channel[0]) + { + limit_str = gtk_entry_get_text (GTK_ENTRY (sess->gui->limit_entry)); + if (check_is_number ((char *)limit_str) == FALSE) + { + fe_message (_("User limit must be a number!\n"), FE_MSG_ERROR); + gtk_entry_set_text (GTK_ENTRY (sess->gui->limit_entry), ""); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wid), FALSE); + return; + } + snprintf (modes, sizeof (modes), "+l %d", atoi (limit_str)); + serv->p_mode (serv, sess->channel, modes); + serv->p_join_info (serv, sess->channel); + } + } else + mg_change_flag (wid, sess, 'l'); +} + +static void +flagk_hit (GtkWidget * wid, struct session *sess) +{ + char modes[512]; + server *serv = sess->server; + + if (serv->connected && sess->channel[0]) + { + snprintf (modes, sizeof (modes), "-k %s", + gtk_entry_get_text (GTK_ENTRY (sess->gui->key_entry))); + + if (GTK_TOGGLE_BUTTON (wid)->active) + modes[0] = '+'; + + serv->p_mode (serv, sess->channel, modes); + } +} + +static void +mg_flagbutton_cb (GtkWidget *but, char *flag) +{ + session *sess; + char mode; + + if (ignore_chanmode) + return; + + sess = current_sess; + mode = tolower ((unsigned char) flag[0]); + + switch (mode) + { + case 'l': + flagl_hit (but, sess); + break; + case 'k': + flagk_hit (but, sess); + break; + case 'b': + ignore_chanmode = TRUE; + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sess->gui->flag_b), FALSE); + ignore_chanmode = FALSE; + banlist_opengui (sess); + break; + default: + mg_change_flag (but, sess, mode); + } +} + +static GtkWidget * +mg_create_flagbutton (char *tip, GtkWidget *box, char *face) +{ + GtkWidget *wid; + + wid = gtk_toggle_button_new_with_label (face); + gtk_widget_set_size_request (wid, 18, 0); + add_tip (wid, tip); + gtk_box_pack_start (GTK_BOX (box), wid, 0, 0, 0); + g_signal_connect (G_OBJECT (wid), "toggled", + G_CALLBACK (mg_flagbutton_cb), face); + show_and_unfocus (wid); + + return wid; +} + +static void +mg_key_entry_cb (GtkWidget * igad, gpointer userdata) +{ + char modes[512]; + session *sess = current_sess; + server *serv = sess->server; + + if (serv->connected && sess->channel[0]) + { + snprintf (modes, sizeof (modes), "+k %s", + gtk_entry_get_text (GTK_ENTRY (igad))); + serv->p_mode (serv, sess->channel, modes); + serv->p_join_info (serv, sess->channel); + } +} + +static void +mg_limit_entry_cb (GtkWidget * igad, gpointer userdata) +{ + char modes[512]; + session *sess = current_sess; + server *serv = sess->server; + + if (serv->connected && sess->channel[0]) + { + if (check_is_number ((char *)gtk_entry_get_text (GTK_ENTRY (igad))) == FALSE) + { + gtk_entry_set_text (GTK_ENTRY (igad), ""); + fe_message (_("User limit must be a number!\n"), FE_MSG_ERROR); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sess->gui->flag_l), FALSE); + return; + } + snprintf (modes, sizeof(modes), "+l %d", + atoi (gtk_entry_get_text (GTK_ENTRY (igad)))); + serv->p_mode (serv, sess->channel, modes); + serv->p_join_info (serv, sess->channel); + } +} + +static void +mg_apply_entry_style (GtkWidget *entry) +{ + gtk_widget_modify_base (entry, GTK_STATE_NORMAL, &colors[COL_BG]); + gtk_widget_modify_text (entry, GTK_STATE_NORMAL, &colors[COL_FG]); + gtk_widget_modify_font (entry, input_style->font_desc); +} + +static void +mg_create_chanmodebuttons (session_gui *gui, GtkWidget *box) +{ + gui->flag_t = mg_create_flagbutton (_("Topic Protection"), box, "T"); + gui->flag_n = mg_create_flagbutton (_("No outside messages"), box, "N"); + gui->flag_s = mg_create_flagbutton (_("Secret"), box, "S"); + gui->flag_i = mg_create_flagbutton (_("Invite Only"), box, "I"); + gui->flag_p = mg_create_flagbutton (_("Private"), box, "P"); + gui->flag_m = mg_create_flagbutton (_("Moderated"), box, "M"); + gui->flag_b = mg_create_flagbutton (_("Ban List"), box, "B"); + + gui->flag_k = mg_create_flagbutton (_("Keyword"), box, "K"); + gui->key_entry = gtk_entry_new (); + gtk_widget_set_name (gui->key_entry, "xchat-inputbox"); + gtk_entry_set_max_length (GTK_ENTRY (gui->key_entry), 16); + gtk_widget_set_size_request (gui->key_entry, 30, -1); + gtk_box_pack_start (GTK_BOX (box), gui->key_entry, 0, 0, 0); + g_signal_connect (G_OBJECT (gui->key_entry), "activate", + G_CALLBACK (mg_key_entry_cb), NULL); + + if (prefs.style_inputbox) + mg_apply_entry_style (gui->key_entry); + + gui->flag_l = mg_create_flagbutton (_("User Limit"), box, "L"); + gui->limit_entry = gtk_entry_new (); + gtk_widget_set_name (gui->limit_entry, "xchat-inputbox"); + gtk_entry_set_max_length (GTK_ENTRY (gui->limit_entry), 10); + gtk_widget_set_size_request (gui->limit_entry, 30, -1); + gtk_box_pack_start (GTK_BOX (box), gui->limit_entry, 0, 0, 0); + g_signal_connect (G_OBJECT (gui->limit_entry), "activate", + G_CALLBACK (mg_limit_entry_cb), NULL); + + if (prefs.style_inputbox) + mg_apply_entry_style (gui->limit_entry); +} + +/*static void +mg_create_link_buttons (GtkWidget *box, gpointer userdata) +{ + gtkutil_button (box, GTK_STOCK_CLOSE, _("Close this tab/window"), + mg_x_click_cb, userdata, 0); + + if (!userdata) + gtkutil_button (box, GTK_STOCK_REDO, _("Attach/Detach this tab"), + mg_link_cb, userdata, 0); +}*/ + +static void +mg_dialog_button_cb (GtkWidget *wid, char *cmd) +{ + /* the longest cmd is 12, and the longest nickname is 64 */ + char buf[128]; + char *host = ""; + char *topic; + + if (!current_sess) + return; + + topic = (char *)(GTK_ENTRY (current_sess->gui->topic_entry)->text); + topic = strrchr (topic, '@'); + if (topic) + host = topic + 1; + + auto_insert (buf, sizeof (buf), cmd, 0, 0, "", "", "", + server_get_network (current_sess->server, TRUE), host, "", + current_sess->channel); + + handle_command (current_sess, buf, TRUE); + + /* dirty trick to avoid auto-selection */ + SPELL_ENTRY_SET_EDITABLE (current_sess->gui->input_box, FALSE); + gtk_widget_grab_focus (current_sess->gui->input_box); + SPELL_ENTRY_SET_EDITABLE (current_sess->gui->input_box, TRUE); +} + +static void +mg_dialog_button (GtkWidget *box, char *name, char *cmd) +{ + GtkWidget *wid; + + wid = gtk_button_new_with_label (name); + gtk_box_pack_start (GTK_BOX (box), wid, FALSE, FALSE, 0); + g_signal_connect (G_OBJECT (wid), "clicked", + G_CALLBACK (mg_dialog_button_cb), cmd); + gtk_widget_set_size_request (wid, -1, 0); +} + +static void +mg_create_dialogbuttons (GtkWidget *box) +{ + struct popup *pop; + GSList *list = dlgbutton_list; + + while (list) + { + pop = list->data; + if (pop->cmd[0]) + mg_dialog_button (box, pop->name, pop->cmd); + list = list->next; + } +} + +static void +mg_create_topicbar (session *sess, GtkWidget *box) +{ + GtkWidget *hbox, *topic, *bbox; + session_gui *gui = sess->gui; + + gui->topic_bar = hbox = gtk_hbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (box), hbox, 0, 0, 0); + + if (!gui->is_tab) + sess->res->tab = NULL; + + gui->topic_entry = topic = gtk_entry_new (); + gtk_widget_set_name (topic, "xchat-inputbox"); + gtk_container_add (GTK_CONTAINER (hbox), topic); + g_signal_connect (G_OBJECT (topic), "activate", + G_CALLBACK (mg_topic_cb), 0); + + if (prefs.style_inputbox) + mg_apply_entry_style (topic); + + gui->topicbutton_box = bbox = gtk_hbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (hbox), bbox, 0, 0, 0); + mg_create_chanmodebuttons (gui, bbox); + + gui->dialogbutton_box = bbox = gtk_hbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (hbox), bbox, 0, 0, 0); + mg_create_dialogbuttons (bbox); + + if (!prefs.paned_userlist) + gtkutil_button (hbox, GTK_STOCK_GOTO_LAST, _("Show/Hide userlist"), + mg_userlist_toggle_cb, 0, 0); +} + +/* check if a word is clickable */ + +static int +mg_word_check (GtkWidget * xtext, char *word, int len) +{ + session *sess = current_sess; + int ret; + + ret = url_check_word (word, len); /* common/url.c */ + if (ret == 0) + { + if (( (word[0]=='@' || word[0]=='+' || word[0]=='%') && userlist_find (sess, word+1)) || userlist_find (sess, word)) + return WORD_NICK; + + if (sess->type == SESS_DIALOG) + return WORD_DIALOG; + } + + return ret; +} + +/* mouse click inside text area */ + +static void +mg_word_clicked (GtkWidget *xtext, char *word, GdkEventButton *even) +{ + session *sess = current_sess; + + if (even->button == 1) /* left button */ + { + if (word == NULL) + { + mg_focus (sess); + return; + } + + if ((even->state & 13) == prefs.gui_url_mod) + { + switch (mg_word_check (xtext, word, strlen (word))) + { + case WORD_URL: + case WORD_HOST: + fe_open_url (word); + } + } + return; + } + + if (even->button == 2) + { + if (sess->type == SESS_DIALOG) + menu_middlemenu (sess, even); + else if (even->type == GDK_2BUTTON_PRESS) + userlist_select (sess, word); + return; + } + + switch (mg_word_check (xtext, word, strlen (word))) + { + case 0: + menu_middlemenu (sess, even); + break; + case WORD_URL: + case WORD_HOST: + menu_urlmenu (even, word); + break; + case WORD_NICK: + menu_nickmenu (sess, even, (word[0]=='@' || word[0]=='+' || word[0]=='%') ? + word+1 : word, FALSE); + break; + case WORD_CHANNEL: + if (*word == '@' || *word == '+' || *word=='^' || *word=='%' || *word=='*') + word++; + menu_chanmenu (sess, even, word); + break; + case WORD_EMAIL: + { + char *newword = malloc (strlen (word) + 10); + if (*word == '~') + word++; + sprintf (newword, "mailto:%s", word); + menu_urlmenu (even, newword); + free (newword); + } + break; + case WORD_DIALOG: + menu_nickmenu (sess, even, sess->channel, FALSE); + break; + } +} + +void +mg_update_xtext (GtkWidget *wid) +{ + GtkXText *xtext = GTK_XTEXT (wid); + + gtk_xtext_set_palette (xtext, colors); + gtk_xtext_set_max_lines (xtext, prefs.max_lines); + gtk_xtext_set_tint (xtext, prefs.tint_red, prefs.tint_green, prefs.tint_blue); + gtk_xtext_set_background (xtext, channelwin_pix, prefs.transparent); + gtk_xtext_set_wordwrap (xtext, prefs.wordwrap); + gtk_xtext_set_show_marker (xtext, prefs.show_marker); + gtk_xtext_set_show_separator (xtext, prefs.indent_nicks ? prefs.show_separator : 0); + gtk_xtext_set_indent (xtext, prefs.indent_nicks); + if (!gtk_xtext_set_font (xtext, prefs.font_normal)) + { + fe_message ("Failed to open any font. I'm out of here!", FE_MSG_WAIT | FE_MSG_ERROR); + exit (1); + } + + gtk_xtext_refresh (xtext, FALSE); +} + +/* handle errors reported by xtext */ + +static void +mg_xtext_error (int type) +{ + switch (type) + { + case 0: + fe_message (_("Unable to set transparent background!\n\n" + "You may be using a non-compliant window\n" + "manager that is not currently supported.\n"), FE_MSG_WARN); + prefs.transparent = 0; + /* no others exist yet */ + } +} + +static void +mg_create_textarea (session *sess, GtkWidget *box) +{ + GtkWidget *inbox, *vbox, *frame; + GtkXText *xtext; + session_gui *gui = sess->gui; + static const GtkTargetEntry dnd_targets[] = + { + {"text/uri-list", 0, 1} + }; + static const GtkTargetEntry dnd_dest_targets[] = + { + {"XCHAT_CHANVIEW", GTK_TARGET_SAME_APP, 75 }, + {"XCHAT_USERLIST", GTK_TARGET_SAME_APP, 75 } + }; + + vbox = gtk_vbox_new (FALSE, 0); + gtk_container_add (GTK_CONTAINER (box), vbox); + + inbox = gtk_hbox_new (FALSE, SCROLLBAR_SPACING); + gtk_container_add (GTK_CONTAINER (vbox), inbox); + + frame = gtk_frame_new (NULL); + gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN); + gtk_container_add (GTK_CONTAINER (inbox), frame); + + gui->xtext = gtk_xtext_new (colors, TRUE); + xtext = GTK_XTEXT (gui->xtext); + gtk_xtext_set_max_indent (xtext, prefs.max_auto_indent); + gtk_xtext_set_thin_separator (xtext, prefs.thin_separator); + gtk_xtext_set_error_function (xtext, mg_xtext_error); + gtk_xtext_set_urlcheck_function (xtext, mg_word_check); + gtk_xtext_set_max_lines (xtext, prefs.max_lines); + gtk_container_add (GTK_CONTAINER (frame), GTK_WIDGET (xtext)); + mg_update_xtext (GTK_WIDGET (xtext)); + + g_signal_connect (G_OBJECT (xtext), "word_click", + G_CALLBACK (mg_word_clicked), NULL); + + gui->vscrollbar = gtk_vscrollbar_new (GTK_XTEXT (xtext)->adj); + gtk_box_pack_start (GTK_BOX (inbox), gui->vscrollbar, FALSE, TRUE, 0); +#ifndef WIN32 /* needs more work */ + gtk_drag_dest_set (gui->vscrollbar, 5, dnd_dest_targets, 2, + GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_LINK); + g_signal_connect (G_OBJECT (gui->vscrollbar), "drag_begin", + G_CALLBACK (mg_drag_begin_cb), NULL); + g_signal_connect (G_OBJECT (gui->vscrollbar), "drag_drop", + G_CALLBACK (mg_drag_drop_cb), NULL); + g_signal_connect (G_OBJECT (gui->vscrollbar), "drag_motion", + G_CALLBACK (mg_drag_motion_cb), gui->vscrollbar); + g_signal_connect (G_OBJECT (gui->vscrollbar), "drag_end", + G_CALLBACK (mg_drag_end_cb), NULL); + + gtk_drag_dest_set (gui->xtext, GTK_DEST_DEFAULT_ALL, dnd_targets, 1, + GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_LINK); + g_signal_connect (G_OBJECT (gui->xtext), "drag_data_received", + G_CALLBACK (mg_dialog_dnd_drop), NULL); +#endif +} + +static GtkWidget * +mg_create_infoframe (GtkWidget *box) +{ + GtkWidget *frame, *label, *hbox; + + frame = gtk_frame_new (0); + gtk_frame_set_shadow_type ((GtkFrame*)frame, GTK_SHADOW_OUT); + gtk_container_add (GTK_CONTAINER (box), frame); + + hbox = gtk_hbox_new (0, 0); + gtk_container_add (GTK_CONTAINER (frame), hbox); + + label = gtk_label_new (NULL); + gtk_container_add (GTK_CONTAINER (hbox), label); + + return label; +} + +static void +mg_create_meters (session_gui *gui, GtkWidget *parent_box) +{ + GtkWidget *infbox, *wid, *box; + + gui->meter_box = infbox = box = gtk_vbox_new (0, 1); + gtk_box_pack_start (GTK_BOX (parent_box), box, 0, 0, 0); + + if ((prefs.lagometer & 2) || (prefs.throttlemeter & 2)) + { + infbox = gtk_hbox_new (0, 0); + gtk_box_pack_start (GTK_BOX (box), infbox, 0, 0, 0); + } + + if (prefs.lagometer & 1) + { + gui->lagometer = wid = gtk_progress_bar_new (); + gtk_widget_set_size_request (wid, 1, 8); + + wid = gtk_event_box_new (); + gtk_container_add (GTK_CONTAINER (wid), gui->lagometer); + gtk_box_pack_start (GTK_BOX (box), wid, 0, 0, 0); + } + if (prefs.lagometer & 2) + { + gui->laginfo = wid = mg_create_infoframe (infbox); + gtk_label_set_text ((GtkLabel *) wid, "Lag"); + } + + if (prefs.throttlemeter & 1) + { + gui->throttlemeter = wid = gtk_progress_bar_new (); + gtk_widget_set_size_request (wid, 1, 8); + + wid = gtk_event_box_new (); + gtk_container_add (GTK_CONTAINER (wid), gui->throttlemeter); + gtk_box_pack_start (GTK_BOX (box), wid, 0, 0, 0); + } + if (prefs.throttlemeter & 2) + { + gui->throttleinfo = wid = mg_create_infoframe (infbox); + gtk_label_set_text ((GtkLabel *) wid, "Throttle"); + } +} + +void +mg_update_meters (session_gui *gui) +{ + gtk_widget_destroy (gui->meter_box); + gui->lagometer = NULL; + gui->laginfo = NULL; + gui->throttlemeter = NULL; + gui->throttleinfo = NULL; + + mg_create_meters (gui, gui->button_box_parent); + gtk_widget_show_all (gui->meter_box); +} + +static void +mg_create_userlist (session_gui *gui, GtkWidget *box) +{ + GtkWidget *frame, *ulist, *vbox; + + vbox = gtk_vbox_new (0, 1); + gtk_container_add (GTK_CONTAINER (box), vbox); + + frame = gtk_frame_new (NULL); + if (!(prefs.gui_tweaks & 1)) + gtk_box_pack_start (GTK_BOX (vbox), frame, 0, 0, GUI_SPACING); + + gui->namelistinfo = gtk_label_new (NULL); + gtk_container_add (GTK_CONTAINER (frame), gui->namelistinfo); + + gui->user_tree = ulist = userlist_create (vbox); + + if (prefs.style_namelistgad) + { + gtk_widget_set_style (ulist, input_style); + gtk_widget_modify_base (ulist, GTK_STATE_NORMAL, &colors[COL_BG]); + } + + mg_create_meters (gui, vbox); + + gui->button_box_parent = vbox; + gui->button_box = mg_create_userlistbuttons (vbox); +} + +static void +mg_leftpane_cb (GtkPaned *pane, GParamSpec *param, session_gui *gui) +{ + prefs.gui_pane_left_size = gtk_paned_get_position (pane); +} + +static void +mg_rightpane_cb (GtkPaned *pane, GParamSpec *param, session_gui *gui) +{ + int handle_size; + +/* if (pane->child1 == NULL || (!GTK_WIDGET_VISIBLE (pane->child1))) + return; + if (pane->child2 == NULL || (!GTK_WIDGET_VISIBLE (pane->child2))) + return;*/ + + gtk_widget_style_get (GTK_WIDGET (pane), "handle-size", &handle_size, NULL); + /* record the position from the RIGHT side */ + prefs.gui_pane_right_size = GTK_WIDGET (pane)->allocation.width - gtk_paned_get_position (pane) - handle_size; +} + +static gboolean +mg_add_pane_signals (session_gui *gui) +{ + g_signal_connect (G_OBJECT (gui->hpane_right), "notify::position", + G_CALLBACK (mg_rightpane_cb), gui); + g_signal_connect (G_OBJECT (gui->hpane_left), "notify::position", + G_CALLBACK (mg_leftpane_cb), gui); + return FALSE; +} + +static void +mg_create_center (session *sess, session_gui *gui, GtkWidget *box) +{ + GtkWidget *vbox, *hbox, *book; + + /* sep between top and bottom of left side */ + gui->vpane_left = gtk_vpaned_new (); + + /* sep between top and bottom of right side */ + gui->vpane_right = gtk_vpaned_new (); + + /* sep between left and xtext */ + gui->hpane_left = gtk_hpaned_new (); + gtk_paned_set_position (GTK_PANED (gui->hpane_left), prefs.gui_pane_left_size); + + /* sep between xtext and right side */ + gui->hpane_right = gtk_hpaned_new (); + + if (prefs.gui_tweaks & 4) + { + gtk_paned_pack2 (GTK_PANED (gui->hpane_left), gui->vpane_left, FALSE, TRUE); + gtk_paned_pack1 (GTK_PANED (gui->hpane_left), gui->hpane_right, TRUE, TRUE); + } + else + { + gtk_paned_pack1 (GTK_PANED (gui->hpane_left), gui->vpane_left, FALSE, TRUE); + gtk_paned_pack2 (GTK_PANED (gui->hpane_left), gui->hpane_right, TRUE, TRUE); + } + gtk_paned_pack2 (GTK_PANED (gui->hpane_right), gui->vpane_right, FALSE, TRUE); + + gtk_container_add (GTK_CONTAINER (box), gui->hpane_left); + + gui->note_book = book = gtk_notebook_new (); + gtk_notebook_set_show_tabs (GTK_NOTEBOOK (book), FALSE); + gtk_notebook_set_show_border (GTK_NOTEBOOK (book), FALSE); + gtk_paned_pack1 (GTK_PANED (gui->hpane_right), book, TRUE, TRUE); + + hbox = gtk_hbox_new (FALSE, 0); + gtk_paned_pack1 (GTK_PANED (gui->vpane_right), hbox, FALSE, TRUE); + mg_create_userlist (gui, hbox); + + gui->user_box = hbox; + + vbox = gtk_vbox_new (FALSE, 3); + gtk_notebook_append_page (GTK_NOTEBOOK (book), vbox, NULL); + mg_create_topicbar (sess, vbox); + mg_create_textarea (sess, vbox); + mg_create_entry (sess, vbox); + + g_idle_add ((GSourceFunc)mg_add_pane_signals, gui); +} + +static void +mg_change_nick (int cancel, char *text, gpointer userdata) +{ + char buf[256]; + + if (!cancel) + { + snprintf (buf, sizeof (buf), "nick %s", text); + handle_command (current_sess, buf, FALSE); + } +} + +static void +mg_nickclick_cb (GtkWidget *button, gpointer userdata) +{ + fe_get_str (_("Enter new nickname:"), current_sess->server->nick, + mg_change_nick, NULL); +} + +/* make sure chanview and userlist positions are sane */ + +static void +mg_sanitize_positions (int *cv, int *ul) +{ + if (prefs.tab_layout == 2) + { + /* treeview can't be on TOP or BOTTOM */ + if (*cv == POS_TOP || *cv == POS_BOTTOM) + *cv = POS_TOPLEFT; + } + + /* userlist can't be on TOP or BOTTOM */ + if (*ul == POS_TOP || *ul == POS_BOTTOM) + *ul = POS_TOPRIGHT; + + /* can't have both in the same place */ + if (*cv == *ul) + { + *cv = POS_TOPRIGHT; + if (*ul == POS_TOPRIGHT) + *cv = POS_BOTTOMRIGHT; + } +} + +static void +mg_place_userlist_and_chanview_real (session_gui *gui, GtkWidget *userlist, GtkWidget *chanview) +{ + int unref_userlist = FALSE; + int unref_chanview = FALSE; + + /* first, remove userlist/treeview from their containers */ + if (userlist && userlist->parent) + { + g_object_ref (userlist); + gtk_container_remove (GTK_CONTAINER (userlist->parent), userlist); + unref_userlist = TRUE; + } + + if (chanview && chanview->parent) + { + g_object_ref (chanview); + gtk_container_remove (GTK_CONTAINER (chanview->parent), chanview); + unref_chanview = TRUE; + } + + if (chanview) + { + /* incase the previous pos was POS_HIDDEN */ + gtk_widget_show (chanview); + + gtk_table_set_row_spacing (GTK_TABLE (gui->main_table), 1, 0); + gtk_table_set_row_spacing (GTK_TABLE (gui->main_table), 2, 2); + + /* then place them back in their new positions */ + switch (prefs.tab_pos) + { + case POS_TOPLEFT: + gtk_paned_pack1 (GTK_PANED (gui->vpane_left), chanview, FALSE, TRUE); + break; + case POS_BOTTOMLEFT: + gtk_paned_pack2 (GTK_PANED (gui->vpane_left), chanview, FALSE, TRUE); + break; + case POS_TOPRIGHT: + gtk_paned_pack1 (GTK_PANED (gui->vpane_right), chanview, FALSE, TRUE); + break; + case POS_BOTTOMRIGHT: + gtk_paned_pack2 (GTK_PANED (gui->vpane_right), chanview, FALSE, TRUE); + break; + case POS_TOP: + gtk_table_set_row_spacing (GTK_TABLE (gui->main_table), 1, GUI_SPACING-1); + gtk_table_attach (GTK_TABLE (gui->main_table), chanview, + 1, 2, 1, 2, GTK_FILL, GTK_FILL, 0, 0); + break; + case POS_HIDDEN: + gtk_widget_hide (chanview); + /* always attach it to something to avoid ref_count=0 */ + if (prefs.gui_ulist_pos == POS_TOP) + gtk_table_attach (GTK_TABLE (gui->main_table), chanview, + 1, 2, 3, 4, GTK_FILL, GTK_FILL, 0, 0); + + else + gtk_table_attach (GTK_TABLE (gui->main_table), chanview, + 1, 2, 1, 2, GTK_FILL, GTK_FILL, 0, 0); + break; + default:/* POS_BOTTOM */ + gtk_table_set_row_spacing (GTK_TABLE (gui->main_table), 2, 3); + gtk_table_attach (GTK_TABLE (gui->main_table), chanview, + 1, 2, 3, 4, GTK_FILL, GTK_FILL, 0, 0); + } + } + + if (userlist) + { + switch (prefs.gui_ulist_pos) + { + case POS_TOPLEFT: + gtk_paned_pack1 (GTK_PANED (gui->vpane_left), userlist, FALSE, TRUE); + break; + case POS_BOTTOMLEFT: + gtk_paned_pack2 (GTK_PANED (gui->vpane_left), userlist, FALSE, TRUE); + break; + case POS_BOTTOMRIGHT: + gtk_paned_pack2 (GTK_PANED (gui->vpane_right), userlist, FALSE, TRUE); + break; + /*case POS_HIDDEN: + break;*/ /* Hide using the VIEW menu instead */ + default:/* POS_TOPRIGHT */ + gtk_paned_pack1 (GTK_PANED (gui->vpane_right), userlist, FALSE, TRUE); + } + } + + if (unref_chanview) + g_object_unref (chanview); + if (unref_userlist) + g_object_unref (userlist); + + mg_hide_empty_boxes (gui); +} + +static void +mg_place_userlist_and_chanview (session_gui *gui) +{ + GtkOrientation orientation; + GtkWidget *chanviewbox = NULL; + int pos; + + mg_sanitize_positions (&prefs.tab_pos, &prefs.gui_ulist_pos); + + if (gui->chanview) + { + pos = prefs.tab_pos; + + orientation = chanview_get_orientation (gui->chanview); + if ((pos == POS_BOTTOM || pos == POS_TOP) && orientation == GTK_ORIENTATION_VERTICAL) + chanview_set_orientation (gui->chanview, FALSE); + else if ((pos == POS_TOPLEFT || pos == POS_BOTTOMLEFT || pos == POS_TOPRIGHT || pos == POS_BOTTOMRIGHT) && orientation == GTK_ORIENTATION_HORIZONTAL) + chanview_set_orientation (gui->chanview, TRUE); + chanviewbox = chanview_get_box (gui->chanview); + } + + mg_place_userlist_and_chanview_real (gui, gui->user_box, chanviewbox); +} + +void +mg_change_layout (int type) +{ + if (mg_gui) + { + /* put tabs at the bottom */ + if (type == 0 && prefs.tab_pos != POS_BOTTOM && prefs.tab_pos != POS_TOP) + prefs.tab_pos = POS_BOTTOM; + + mg_place_userlist_and_chanview (mg_gui); + chanview_set_impl (mg_gui->chanview, type); + } +} + +static void +mg_inputbox_rightclick (GtkEntry *entry, GtkWidget *menu) +{ + mg_create_color_menu (menu, NULL); +} + +static void +mg_create_entry (session *sess, GtkWidget *box) +{ + GtkWidget *sw, *hbox, *but, *entry; + session_gui *gui = sess->gui; + + hbox = gtk_hbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (box), hbox, 0, 0, 0); + + gui->nick_box = gtk_hbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (hbox), gui->nick_box, 0, 0, 0); + + gui->nick_label = but = gtk_button_new_with_label (sess->server->nick); + gtk_button_set_relief (GTK_BUTTON (but), GTK_RELIEF_NONE); + GTK_WIDGET_UNSET_FLAGS (but, GTK_CAN_FOCUS); + gtk_box_pack_end (GTK_BOX (gui->nick_box), but, 0, 0, 0); + g_signal_connect (G_OBJECT (but), "clicked", + G_CALLBACK (mg_nickclick_cb), NULL); + +#ifdef USE_GTKSPELL + gui->input_box = entry = gtk_text_view_new (); + gtk_widget_set_size_request (entry, 0, 1); + gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (entry), GTK_WRAP_NONE); + gtk_text_view_set_accepts_tab (GTK_TEXT_VIEW (entry), FALSE); + if (prefs.gui_input_spell) + gtkspell_new_attach (GTK_TEXT_VIEW (entry), NULL, NULL); + + sw = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw), + GTK_SHADOW_IN); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), + GTK_POLICY_NEVER, + GTK_POLICY_NEVER); + gtk_container_add (GTK_CONTAINER (sw), entry); + gtk_container_add (GTK_CONTAINER (hbox), sw); +#else +#ifdef USE_LIBSEXY + gui->input_box = entry = sexy_spell_entry_new (); + sexy_spell_entry_set_checked ((SexySpellEntry *)entry, prefs.gui_input_spell); +#else + gui->input_box = entry = gtk_entry_new (); +#endif + gtk_entry_set_max_length (GTK_ENTRY (gui->input_box), 2048); + g_signal_connect (G_OBJECT (entry), "activate", + G_CALLBACK (mg_inputbox_cb), gui); + gtk_container_add (GTK_CONTAINER (hbox), entry); +#endif + + gtk_widget_set_name (entry, "xchat-inputbox"); + g_signal_connect (G_OBJECT (entry), "key_press_event", + G_CALLBACK (key_handle_key_press), NULL); + g_signal_connect (G_OBJECT (entry), "focus_in_event", + G_CALLBACK (mg_inputbox_focus), gui); + g_signal_connect (G_OBJECT (entry), "populate_popup", + G_CALLBACK (mg_inputbox_rightclick), NULL); + gtk_widget_grab_focus (entry); + + if (prefs.style_inputbox) + mg_apply_entry_style (entry); +} + +static void +mg_switch_tab_cb (chanview *cv, chan *ch, int tag, gpointer ud) +{ + chan *old; + session *sess = ud; + + old = active_tab; + active_tab = ch; + + if (tag == TAG_IRC) + { + if (active_tab != old) + { + if (old && current_tab) + mg_unpopulate (current_tab); + mg_populate (sess); + } + } else if (old != active_tab) + { + /* userdata for non-irc tabs is actually the GtkBox */ + mg_show_generic_tab (ud); + if (!mg_is_userlist_and_tree_combined ()) + mg_userlist_showhide (current_sess, FALSE); /* hide */ + } +} + +/* compare two tabs (for tab sorting function) */ + +static int +mg_tabs_compare (session *a, session *b) +{ + /* server tabs always go first */ + if (a->type == SESS_SERVER) + return -1; + + /* then channels */ + if (a->type == SESS_CHANNEL && b->type != SESS_CHANNEL) + return -1; + if (a->type != SESS_CHANNEL && b->type == SESS_CHANNEL) + return 1; + + return strcasecmp (a->channel, b->channel); +} + +static void +mg_create_tabs (session_gui *gui) +{ + gboolean use_icons = FALSE; + + /* if any one of these PNGs exist, the chanview will create + * the extra column for icons. */ + if (pix_channel || pix_dialog || pix_server || pix_util) + use_icons = TRUE; + + gui->chanview = chanview_new (prefs.tab_layout, prefs.truncchans, + prefs.tab_sort, use_icons, + prefs.style_namelistgad ? input_style : NULL); + chanview_set_callbacks (gui->chanview, mg_switch_tab_cb, mg_xbutton_cb, + mg_tab_contextmenu_cb, (void *)mg_tabs_compare); + mg_place_userlist_and_chanview (gui); +} + +static gboolean +mg_tabwin_focus_cb (GtkWindow * win, GdkEventFocus *event, gpointer userdata) +{ + current_sess = current_tab; + if (current_sess) + { + gtk_xtext_check_marker_visibility (GTK_XTEXT (current_sess->gui->xtext)); + plugin_emit_dummy_print (current_sess, "Focus Window"); + } +#ifndef WIN32 +#ifdef USE_XLIB + unflash_window (GTK_WIDGET (win)); +#endif +#endif + return FALSE; +} + +static gboolean +mg_topwin_focus_cb (GtkWindow * win, GdkEventFocus *event, session *sess) +{ + current_sess = sess; + if (!sess->server->server_session) + sess->server->server_session = sess; + gtk_xtext_check_marker_visibility(GTK_XTEXT (current_sess->gui->xtext)); +#ifndef WIN32 +#ifdef USE_XLIB + unflash_window (GTK_WIDGET (win)); +#endif +#endif + plugin_emit_dummy_print (sess, "Focus Window"); + return FALSE; +} + +static void +mg_create_menu (session_gui *gui, GtkWidget *table, int away_state) +{ + GtkAccelGroup *accel_group; + + accel_group = gtk_accel_group_new (); + gtk_window_add_accel_group (GTK_WINDOW (gtk_widget_get_toplevel (table)), + accel_group); + g_object_unref (accel_group); + + gui->menu = menu_create_main (accel_group, TRUE, away_state, !gui->is_tab, + gui->menu_item); + gtk_table_attach (GTK_TABLE (table), gui->menu, 0, 3, 0, 1, + GTK_EXPAND | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); +} + +static void +mg_create_irctab (session *sess, GtkWidget *table) +{ + GtkWidget *vbox; + session_gui *gui = sess->gui; + + vbox = gtk_vbox_new (FALSE, 0); + gtk_table_attach (GTK_TABLE (table), vbox, 1, 2, 2, 3, + GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + mg_create_center (sess, gui, vbox); +} + +static void +mg_create_topwindow (session *sess) +{ + GtkWidget *win; + GtkWidget *table; + + if (sess->type == SESS_DIALOG) + win = gtkutil_window_new ("XChat", NULL, + prefs.dialog_width, prefs.dialog_height, 0); + else + win = gtkutil_window_new ("XChat", NULL, + prefs.mainwindow_width, + prefs.mainwindow_height, 0); + sess->gui->window = win; + gtk_container_set_border_width (GTK_CONTAINER (win), GUI_BORDER); + + g_signal_connect (G_OBJECT (win), "focus_in_event", + G_CALLBACK (mg_topwin_focus_cb), sess); + g_signal_connect (G_OBJECT (win), "destroy", + G_CALLBACK (mg_topdestroy_cb), sess); + g_signal_connect (G_OBJECT (win), "configure_event", + G_CALLBACK (mg_configure_cb), sess); + + palette_alloc (win); + + table = gtk_table_new (4, 3, FALSE); + /* spacing under the menubar */ + gtk_table_set_row_spacing (GTK_TABLE (table), 0, GUI_SPACING); + /* left and right borders */ + gtk_table_set_col_spacing (GTK_TABLE (table), 0, 1); + gtk_table_set_col_spacing (GTK_TABLE (table), 1, 1); + gtk_container_add (GTK_CONTAINER (win), table); + + mg_create_irctab (sess, table); + mg_create_menu (sess->gui, table, sess->server->is_away); + + if (sess->res->buffer == NULL) + { + sess->res->buffer = gtk_xtext_buffer_new (GTK_XTEXT (sess->gui->xtext)); + gtk_xtext_buffer_show (GTK_XTEXT (sess->gui->xtext), sess->res->buffer, TRUE); + gtk_xtext_set_time_stamp (sess->res->buffer, prefs.timestamp); + sess->res->user_model = userlist_create_model (); + } + + userlist_show (sess); + + gtk_widget_show_all (table); + + if (prefs.hidemenu) + gtk_widget_hide (sess->gui->menu); + + if (!prefs.topicbar) + gtk_widget_hide (sess->gui->topic_bar); + + if (!prefs.userlistbuttons) + gtk_widget_hide (sess->gui->button_box); + + if (prefs.gui_tweaks & 2) + gtk_widget_hide (sess->gui->nick_box); + + mg_decide_userlist (sess, FALSE); + + if (sess->type == SESS_DIALOG) + { + /* hide the chan-mode buttons */ + gtk_widget_hide (sess->gui->topicbutton_box); + } else + { + gtk_widget_hide (sess->gui->dialogbutton_box); + + if (!prefs.chanmodebuttons) + gtk_widget_hide (sess->gui->topicbutton_box); + } + + mg_place_userlist_and_chanview (sess->gui); + + gtk_widget_show (win); +} + +static gboolean +mg_tabwindow_de_cb (GtkWidget *widget, GdkEvent *event, gpointer user_data) +{ + GSList *list; + session *sess; + + if ((prefs.gui_tray_flags & 1) && tray_toggle_visibility (FALSE)) + return TRUE; + + /* check for remaining toplevel windows */ + list = sess_list; + while (list) + { + sess = list->data; + if (!sess->gui->is_tab) + return FALSE; + list = list->next; + } + + mg_open_quit_dialog (TRUE); + return TRUE; +} + +static void +mg_create_tabwindow (session *sess) +{ + GtkWidget *win; + GtkWidget *table; + + win = gtkutil_window_new ("XChat", NULL, prefs.mainwindow_width, + prefs.mainwindow_height, 0); + sess->gui->window = win; + gtk_window_move (GTK_WINDOW (win), prefs.mainwindow_left, + prefs.mainwindow_top); + if (prefs.gui_win_state) + gtk_window_maximize (GTK_WINDOW (win)); + gtk_container_set_border_width (GTK_CONTAINER (win), GUI_BORDER); + + g_signal_connect (G_OBJECT (win), "delete_event", + G_CALLBACK (mg_tabwindow_de_cb), 0); + g_signal_connect (G_OBJECT (win), "destroy", + G_CALLBACK (mg_tabwindow_kill_cb), 0); + g_signal_connect (G_OBJECT (win), "focus_in_event", + G_CALLBACK (mg_tabwin_focus_cb), NULL); + g_signal_connect (G_OBJECT (win), "configure_event", + G_CALLBACK (mg_configure_cb), NULL); + g_signal_connect (G_OBJECT (win), "window_state_event", + G_CALLBACK (mg_windowstate_cb), NULL); + + palette_alloc (win); + + sess->gui->main_table = table = gtk_table_new (4, 3, FALSE); + /* spacing under the menubar */ + gtk_table_set_row_spacing (GTK_TABLE (table), 0, GUI_SPACING); + /* left and right borders */ + gtk_table_set_col_spacing (GTK_TABLE (table), 0, 1); + gtk_table_set_col_spacing (GTK_TABLE (table), 1, 1); + gtk_container_add (GTK_CONTAINER (win), table); + + mg_create_irctab (sess, table); + mg_create_tabs (sess->gui); + mg_create_menu (sess->gui, table, sess->server->is_away); + + mg_focus (sess); + + gtk_widget_show_all (table); + + if (prefs.hidemenu) + gtk_widget_hide (sess->gui->menu); + + mg_decide_userlist (sess, FALSE); + + if (!prefs.topicbar) + gtk_widget_hide (sess->gui->topic_bar); + + if (!prefs.chanmodebuttons) + gtk_widget_hide (sess->gui->topicbutton_box); + + if (!prefs.userlistbuttons) + gtk_widget_hide (sess->gui->button_box); + + if (prefs.gui_tweaks & 2) + gtk_widget_hide (sess->gui->nick_box); + + mg_place_userlist_and_chanview (sess->gui); + + gtk_widget_show (win); +} + +void +mg_apply_setup (void) +{ + GSList *list = sess_list; + session *sess; + int done_main = FALSE; + + mg_create_tab_colors (); + + while (list) + { + sess = list->data; + gtk_xtext_set_time_stamp (sess->res->buffer, prefs.timestamp); + ((xtext_buffer *)sess->res->buffer)->needs_recalc = TRUE; + if (!sess->gui->is_tab || !done_main) + mg_place_userlist_and_chanview (sess->gui); + if (sess->gui->is_tab) + done_main = TRUE; + list = list->next; + } +} + +static chan * +mg_add_generic_tab (char *name, char *title, void *family, GtkWidget *box) +{ + chan *ch; + + gtk_notebook_append_page (GTK_NOTEBOOK (mg_gui->note_book), box, NULL); + gtk_widget_show (box); + + ch = chanview_add (mg_gui->chanview, name, NULL, box, TRUE, TAG_UTIL, pix_util); + chan_set_color (ch, plain_list); + /* FIXME: memory leak */ + g_object_set_data (G_OBJECT (box), "title", strdup (title)); + g_object_set_data (G_OBJECT (box), "ch", ch); + + if (prefs.newtabstofront) + chan_focus (ch); + + return ch; +} + +void +fe_buttons_update (session *sess) +{ + session_gui *gui = sess->gui; + + gtk_widget_destroy (gui->button_box); + gui->button_box = mg_create_userlistbuttons (gui->button_box_parent); + + if (prefs.userlistbuttons) + gtk_widget_show (sess->gui->button_box); + else + gtk_widget_hide (sess->gui->button_box); +} + +void +fe_clear_channel (session *sess) +{ + char tbuf[CHANLEN+6]; + session_gui *gui = sess->gui; + + if (sess->gui->is_tab) + { + if (sess->waitchannel[0]) + { + if (prefs.truncchans > 2 && g_utf8_strlen (sess->waitchannel, -1) > prefs.truncchans) + { + /* truncate long channel names */ + tbuf[0] = '('; + strcpy (tbuf + 1, sess->waitchannel); + g_utf8_offset_to_pointer(tbuf, prefs.truncchans)[0] = 0; + strcat (tbuf, "..)"); + } else + { + sprintf (tbuf, "(%s)", sess->waitchannel); + } + } + else + strcpy (tbuf, _("<none>")); + chan_rename (sess->res->tab, tbuf, prefs.truncchans); + } + + if (!sess->gui->is_tab || sess == current_tab) + { + gtk_entry_set_text (GTK_ENTRY (gui->topic_entry), ""); + + if (gui->op_xpm) + { + gtk_widget_destroy (gui->op_xpm); + gui->op_xpm = 0; + } + } else + { + if (sess->res->topic_text) + { + free (sess->res->topic_text); + sess->res->topic_text = NULL; + } + } +} + +void +fe_set_nonchannel (session *sess, int state) +{ +} + +void +fe_dlgbuttons_update (session *sess) +{ + GtkWidget *box; + session_gui *gui = sess->gui; + + gtk_widget_destroy (gui->dialogbutton_box); + + gui->dialogbutton_box = box = gtk_hbox_new (0, 0); + gtk_box_pack_start (GTK_BOX (gui->topic_bar), box, 0, 0, 0); + gtk_box_reorder_child (GTK_BOX (gui->topic_bar), box, 3); + mg_create_dialogbuttons (box); + + gtk_widget_show_all (box); + + if (current_tab && current_tab->type != SESS_DIALOG) + gtk_widget_hide (current_tab->gui->dialogbutton_box); +} + +void +fe_update_mode_buttons (session *sess, char mode, char sign) +{ + int state, i; + + if (sign == '+') + state = TRUE; + else + state = FALSE; + + for (i = 0; i < NUM_FLAG_WIDS - 1; i++) + { + if (chan_flags[i] == mode) + { + if (!sess->gui->is_tab || sess == current_tab) + { + ignore_chanmode = TRUE; + if (GTK_TOGGLE_BUTTON (sess->gui->flag_wid[i])->active != state) + gtk_toggle_button_set_active ( + GTK_TOGGLE_BUTTON (sess->gui->flag_wid[i]), state); + ignore_chanmode = FALSE; + } else + { + sess->res->flag_wid_state[i] = state; + } + return; + } + } +} + +void +fe_set_nick (server *serv, char *newnick) +{ + GSList *list = sess_list; + session *sess; + + while (list) + { + sess = list->data; + if (sess->server == serv) + { + if (current_tab == sess || !sess->gui->is_tab) + gtk_button_set_label (GTK_BUTTON (sess->gui->nick_label), newnick); + } + list = list->next; + } +} + +void +fe_set_away (server *serv) +{ + GSList *list = sess_list; + session *sess; + + while (list) + { + sess = list->data; + if (sess->server == serv) + { + if (!sess->gui->is_tab || sess == current_tab) + { + GTK_CHECK_MENU_ITEM (sess->gui->menu_item[MENU_ID_AWAY])->active = serv->is_away; + /* gray out my nickname */ + mg_set_myself_away (sess->gui, serv->is_away); + } + } + list = list->next; + } +} + +void +fe_set_channel (session *sess) +{ + if (sess->res->tab != NULL) + chan_rename (sess->res->tab, sess->channel, prefs.truncchans); +} + +void +mg_changui_new (session *sess, restore_gui *res, int tab, int focus) +{ + int first_run = FALSE; + session_gui *gui; + struct User *user = NULL; + + if (!res) + { + res = malloc (sizeof (restore_gui)); + memset (res, 0, sizeof (restore_gui)); + } + + sess->res = res; + + if (!sess->server->front_session) + sess->server->front_session = sess; + + if (!is_channel (sess->server, sess->channel)) + user = userlist_find_global (sess->server, sess->channel); + + if (!tab) + { + gui = malloc (sizeof (session_gui)); + memset (gui, 0, sizeof (session_gui)); + gui->is_tab = FALSE; + sess->gui = gui; + mg_create_topwindow (sess); + fe_set_title (sess); + if (user && user->hostname) + set_topic (sess, user->hostname, user->hostname); + return; + } + + if (mg_gui == NULL) + { + first_run = TRUE; + gui = &static_mg_gui; + memset (gui, 0, sizeof (session_gui)); + gui->is_tab = TRUE; + sess->gui = gui; + mg_create_tabwindow (sess); + mg_gui = gui; + parent_window = gui->window; + } else + { + sess->gui = gui = mg_gui; + gui->is_tab = TRUE; + } + + if (user && user->hostname) + set_topic (sess, user->hostname, user->hostname); + + mg_add_chan (sess); + + if (first_run || (prefs.newtabstofront == FOCUS_NEW_ONLY_ASKED && focus) + || prefs.newtabstofront == FOCUS_NEW_ALL ) + chan_focus (res->tab); +} + +GtkWidget * +mg_create_generic_tab (char *name, char *title, int force_toplevel, + int link_buttons, + void *close_callback, void *userdata, + int width, int height, GtkWidget **vbox_ret, + void *family) +{ + GtkWidget *vbox, *win; + + if (prefs.tab_pos == POS_HIDDEN && prefs.windows_as_tabs) + prefs.windows_as_tabs = 0; + + if (force_toplevel || !prefs.windows_as_tabs) + { + win = gtkutil_window_new (title, name, width, height, 3); + vbox = gtk_vbox_new (0, 0); + *vbox_ret = vbox; + gtk_container_add (GTK_CONTAINER (win), vbox); + gtk_widget_show (vbox); + if (close_callback) + g_signal_connect (G_OBJECT (win), "destroy", + G_CALLBACK (close_callback), userdata); + return win; + } + + vbox = gtk_vbox_new (0, 2); + g_object_set_data (G_OBJECT (vbox), "w", GINT_TO_POINTER (width)); + g_object_set_data (G_OBJECT (vbox), "h", GINT_TO_POINTER (height)); + gtk_container_set_border_width (GTK_CONTAINER (vbox), 3); + *vbox_ret = vbox; + + if (close_callback) + g_signal_connect (G_OBJECT (vbox), "destroy", + G_CALLBACK (close_callback), userdata); + + mg_add_generic_tab (name, title, family, vbox); + +/* if (link_buttons) + { + hbox = gtk_hbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (vbox), hbox, 0, 0, 0); + mg_create_link_buttons (hbox, ch); + gtk_widget_show (hbox); + }*/ + + return vbox; +} + +void +mg_move_tab (session *sess, int delta) +{ + if (sess->gui->is_tab) + chan_move (sess->res->tab, delta); +} + +void +mg_move_tab_family (session *sess, int delta) +{ + if (sess->gui->is_tab) + chan_move_family (sess->res->tab, delta); +} + +void +mg_set_title (GtkWidget *vbox, char *title) /* for non-irc tab/window only */ +{ + char *old; + + old = g_object_get_data (G_OBJECT (vbox), "title"); + if (old) + { + g_object_set_data (G_OBJECT (vbox), "title", strdup (title)); + free (old); + } else + { + gtk_window_set_title (GTK_WINDOW (vbox), title); + } +} + +void +fe_server_callback (server *serv) +{ + joind_close (serv); + + if (serv->gui->chanlist_window) + mg_close_gen (NULL, serv->gui->chanlist_window); + + if (serv->gui->rawlog_window) + mg_close_gen (NULL, serv->gui->rawlog_window); + + free (serv->gui); +} + +/* called when a session is being killed */ + +void +fe_session_callback (session *sess) +{ + if (sess->res->banlist_window) + mg_close_gen (NULL, sess->res->banlist_window); + + if (sess->res->input_text) + free (sess->res->input_text); + + if (sess->res->topic_text) + free (sess->res->topic_text); + + if (sess->res->limit_text) + free (sess->res->limit_text); + + if (sess->res->key_text) + free (sess->res->key_text); + + if (sess->res->queue_text) + free (sess->res->queue_text); + if (sess->res->queue_tip) + free (sess->res->queue_tip); + + if (sess->res->lag_text) + free (sess->res->lag_text); + if (sess->res->lag_tip) + free (sess->res->lag_tip); + + if (sess->gui->bartag) + fe_timeout_remove (sess->gui->bartag); + + if (sess->gui != &static_mg_gui) + free (sess->gui); + free (sess->res); +} + +/* ===== DRAG AND DROP STUFF ===== */ + +static gboolean +is_child_of (GtkWidget *widget, GtkWidget *parent) +{ + while (widget) + { + if (widget->parent == parent) + return TRUE; + widget = widget->parent; + } + return FALSE; +} + +static void +mg_handle_drop (GtkWidget *widget, int y, int *pos, int *other_pos) +{ + int height; + session_gui *gui = current_sess->gui; + + gdk_drawable_get_size (widget->window, NULL, &height); + + if (y < height / 2) + { + if (is_child_of (widget, gui->vpane_left)) + *pos = 1; /* top left */ + else + *pos = 3; /* top right */ + } + else + { + if (is_child_of (widget, gui->vpane_left)) + *pos = 2; /* bottom left */ + else + *pos = 4; /* bottom right */ + } + + /* both in the same pos? must move one */ + if (*pos == *other_pos) + { + switch (*other_pos) + { + case 1: + *other_pos = 2; + break; + case 2: + *other_pos = 1; + break; + case 3: + *other_pos = 4; + break; + case 4: + *other_pos = 3; + break; + } + } + + mg_place_userlist_and_chanview (gui); +} + +static gboolean +mg_is_gui_target (GdkDragContext *context) +{ + char *target_name; + + if (!context || !context->targets || !context->targets->data) + return FALSE; + + target_name = gdk_atom_name (context->targets->data); + if (target_name) + { + /* if it's not XCHAT_CHANVIEW or XCHAT_USERLIST */ + /* we should ignore it. */ + if (target_name[0] != 'X') + { + g_free (target_name); + return FALSE; + } + g_free (target_name); + } + + return TRUE; +} + +/* this begin callback just creates an nice of the source */ + +gboolean +mg_drag_begin_cb (GtkWidget *widget, GdkDragContext *context, gpointer userdata) +{ +#ifndef WIN32 /* leaks GDI pool memory - don't use on win32 */ + int width, height; + GdkColormap *cmap; + GdkPixbuf *pix, *pix2; + + /* ignore file drops */ + if (!mg_is_gui_target (context)) + return FALSE; + + cmap = gtk_widget_get_colormap (widget); + gdk_drawable_get_size (widget->window, &width, &height); + + pix = gdk_pixbuf_get_from_drawable (NULL, widget->window, cmap, 0, 0, 0, 0, width, height); + pix2 = gdk_pixbuf_scale_simple (pix, width * 4 / 5, height / 2, GDK_INTERP_HYPER); + g_object_unref (pix); + + gtk_drag_set_icon_pixbuf (context, pix2, 0, 0); + g_object_set_data (G_OBJECT (widget), "ico", pix2); +#endif + + return TRUE; +} + +void +mg_drag_end_cb (GtkWidget *widget, GdkDragContext *context, gpointer userdata) +{ + /* ignore file drops */ + if (!mg_is_gui_target (context)) + return; + +#ifndef WIN32 + g_object_unref (g_object_get_data (G_OBJECT (widget), "ico")); +#endif +} + +/* drop complete */ + +gboolean +mg_drag_drop_cb (GtkWidget *widget, GdkDragContext *context, int x, int y, guint time, gpointer user_data) +{ + /* ignore file drops */ + if (!mg_is_gui_target (context)) + return FALSE; + + switch (context->action) + { + case GDK_ACTION_MOVE: + /* from userlist */ + mg_handle_drop (widget, y, &prefs.gui_ulist_pos, &prefs.tab_pos); + break; + case GDK_ACTION_COPY: + /* from tree - we use GDK_ACTION_COPY for the tree */ + mg_handle_drop (widget, y, &prefs.tab_pos, &prefs.gui_ulist_pos); + break; + default: + return FALSE; + } + + return TRUE; +} + +/* draw highlight rectangle in the destination */ + +gboolean +mg_drag_motion_cb (GtkWidget *widget, GdkDragContext *context, int x, int y, guint time, gpointer scbar) +{ + GdkGC *gc; + GdkColor col; + GdkGCValues val; + int half, width, height; + int ox, oy; + GtkPaned *paned; + GdkDrawable *draw; + + /* ignore file drops */ + if (!mg_is_gui_target (context)) + return FALSE; + + if (scbar) /* scrollbar */ + { + ox = widget->allocation.x; + oy = widget->allocation.y; + width = widget->allocation.width; + height = widget->allocation.height; + draw = widget->window; + } + else + { + ox = oy = 0; + gdk_drawable_get_size (widget->window, &width, &height); + draw = widget->window; + } + + val.subwindow_mode = GDK_INCLUDE_INFERIORS; + val.graphics_exposures = 0; + val.function = GDK_XOR; + + gc = gdk_gc_new_with_values (widget->window, &val, GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW | GDK_GC_FUNCTION); + col.red = rand() % 0xffff; + col.green = rand() % 0xffff; + col.blue = rand() % 0xffff; + gdk_colormap_alloc_color (gtk_widget_get_colormap (widget), &col, FALSE, TRUE); + gdk_gc_set_foreground (gc, &col); + + half = height / 2; + +#if 0 + /* are both tree/userlist on the same side? */ + paned = (GtkPaned *)widget->parent->parent; + if (paned->child1 != NULL && paned->child2 != NULL) + { + gdk_draw_rectangle (draw, gc, 0, 1, 2, width - 3, height - 4); + gdk_draw_rectangle (draw, gc, 0, 0, 1, width - 1, height - 2); + g_object_unref (gc); + return TRUE; + } +#endif + + if (y < half) + { + gdk_draw_rectangle (draw, gc, FALSE, 1 + ox, 2 + oy, width - 3, half - 4); + gdk_draw_rectangle (draw, gc, FALSE, 0 + ox, 1 + oy, width - 1, half - 2); + gtk_widget_queue_draw_area (widget, ox, half + oy, width, height - half); + } + else + { + gdk_draw_rectangle (draw, gc, FALSE, 0 + ox, half + 1 + oy, width - 1, half - 2); + gdk_draw_rectangle (draw, gc, FALSE, 1 + ox, half + 2 + oy, width - 3, half - 4); + gtk_widget_queue_draw_area (widget, ox, oy, width, half); + } + + g_object_unref (gc); + + return TRUE; +} diff --git a/etc/wyatt8740/src/fe-gtk/maingui.h b/etc/wyatt8740/src/fe-gtk/maingui.h new file mode 100644 index 0000000..bc9aaef --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/maingui.h @@ -0,0 +1,33 @@ +extern GtkStyle *input_style; +extern GtkWidget *parent_window; + +void mg_changui_new (session *sess, restore_gui *res, int tab, int focus); +void mg_update_xtext (GtkWidget *wid); +void mg_open_quit_dialog (gboolean minimize_button); +void mg_switch_page (int relative, int num); +void mg_move_tab (session *, int delta); +void mg_move_tab_family (session *, int delta); +void mg_bring_tofront (GtkWidget *vbox); +void mg_bring_tofront_sess (session *sess); +void mg_decide_userlist (session *sess, gboolean switch_to_current); +void mg_set_topic_tip (session *sess); +GtkWidget *mg_create_generic_tab (char *name, char *title, int force_toplevel, int link_buttons, void *close_callback, void *userdata, int width, int height, GtkWidget **vbox_ret, void *family); +void mg_set_title (GtkWidget *button, char *title); +void mg_set_access_icon (session_gui *gui, GdkPixbuf *pix, gboolean away); +void mg_apply_setup (void); +void mg_close_sess (session *); +void mg_tab_close (session *sess); +void mg_detach (session *sess, int mode); +void mg_progressbar_create (session_gui *gui); +void mg_progressbar_destroy (session_gui *gui); +void mg_dnd_drop_file (session *sess, char *target, char *uri); +void mg_change_layout (int type); +void mg_update_meters (session_gui *); +void mg_inputbox_cb (GtkWidget *igad, session_gui *gui); +void mg_create_icon_item (char *label, char *stock, GtkWidget *menu, void *callback, void *userdata); +GtkWidget *mg_submenu (GtkWidget *menu, char *text); +/* DND */ +gboolean mg_drag_begin_cb (GtkWidget *widget, GdkDragContext *context, gpointer userdata); +void mg_drag_end_cb (GtkWidget *widget, GdkDragContext *context, gpointer userdata); +gboolean mg_drag_drop_cb (GtkWidget *widget, GdkDragContext *context, int x, int y, guint time, gpointer user_data); +gboolean mg_drag_motion_cb (GtkWidget *widget, GdkDragContext *context, int x, int y, guint time, gpointer user_data); diff --git a/etc/wyatt8740/src/fe-gtk/menu.c b/etc/wyatt8740/src/fe-gtk/menu.c new file mode 100644 index 0000000..d04be22 --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/menu.c @@ -0,0 +1,2270 @@ +/* X-Chat + * Copyright (C) 1998-2007 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <fcntl.h> +#include <string.h> +#include <unistd.h> + +#ifdef WIN32 +#include <windows.h> +#endif + +#include "fe-gtk.h" + +#include <gtk/gtkhbox.h> +#include <gtk/gtkcheckmenuitem.h> +#include <gtk/gtkentry.h> +#include <gtk/gtkimage.h> +#include <gtk/gtkimagemenuitem.h> +#include <gtk/gtkradiomenuitem.h> +#include <gtk/gtklabel.h> +#include <gtk/gtkmessagedialog.h> +#include <gtk/gtkmenu.h> +#include <gtk/gtkmenubar.h> +#include <gtk/gtkstock.h> +#include <gtk/gtkversion.h> +#include <gdk/gdkkeysyms.h> + +#include "../common/xchat.h" +#include "../common/xchatc.h" +#include "../common/cfgfiles.h" +#include "../common/outbound.h" +#include "../common/ignore.h" +#include "../common/fe.h" +#include "../common/server.h" +#include "../common/servlist.h" +#include "../common/notify.h" +#include "../common/util.h" +#include "xtext.h" +#include "about.h" +#include "ascii.h" +#include "banlist.h" +#include "chanlist.h" +#include "editlist.h" +#include "fkeys.h" +#include "gtkutil.h" +#include "maingui.h" +#include "notifygui.h" +#include "pixmaps.h" +#include "rawlog.h" +#include "palette.h" +#include "plugingui.h" +#include "search.h" +#include "textgui.h" +#include "urlgrab.h" +#include "userlistgui.h" +#include "menu.h" + +static GSList *submenu_list; + +enum +{ + M_MENUITEM, + M_NEWMENU, + M_END, + M_SEP, + M_MENUTOG, + M_MENURADIO, + M_MENUSTOCK, + M_MENUPIX, + M_MENUSUB +}; + +struct mymenu +{ + char *text; + void *callback; + char *image; + unsigned char type; /* M_XXX */ + unsigned char id; /* MENU_ID_XXX (menu.h) */ + unsigned char state; /* ticked or not? */ + unsigned char sensitive; /* shaded out? */ + guint key; /* GDK_x */ +}; + +#define XCMENU_DOLIST 1 +#define XCMENU_SHADED 1 +#define XCMENU_MARKUP 2 +#define XCMENU_MNEMONIC 4 + +/* execute a userlistbutton/popupmenu command */ + +static void +nick_command (session * sess, char *cmd) +{ + if (*cmd == '!') + xchat_exec (cmd + 1); + else + handle_command (sess, cmd, TRUE); +} + +/* fill in the %a %s %n etc and execute the command */ + +void +nick_command_parse (session *sess, char *cmd, char *nick, char *allnick) +{ + char *buf; + char *host = _("Host unknown"); + struct User *user; + int len; + +/* if (sess->type == SESS_DIALOG) + { + buf = (char *)(GTK_ENTRY (sess->gui->topic_entry)->text); + buf = strrchr (buf, '@'); + if (buf) + host = buf + 1; + } else*/ + { + user = userlist_find (sess, nick); + if (user && user->hostname) + host = strchr (user->hostname, '@') + 1; + } + + /* this can't overflow, since popup->cmd is only 256 */ + len = strlen (cmd) + strlen (nick) + strlen (allnick) + 512; + buf = malloc (len); + + auto_insert (buf, len, cmd, 0, 0, allnick, sess->channel, "", + server_get_network (sess->server, TRUE), host, + sess->server->nick, nick); + + nick_command (sess, buf); + + free (buf); +} + +/* userlist button has been clicked */ + +void +userlist_button_cb (GtkWidget * button, char *cmd) +{ + int i, num_sel, using_allnicks = FALSE; + char **nicks, *allnicks; + char *nick = NULL; + session *sess; + + sess = current_sess; + + if (strstr (cmd, "%a")) + using_allnicks = TRUE; + + if (sess->type == SESS_DIALOG) + { + /* fake a selection */ + nicks = malloc (sizeof (char *) * 2); + nicks[0] = g_strdup (sess->channel); + nicks[1] = NULL; + num_sel = 1; + } else + { + /* find number of selected rows */ + nicks = userlist_selection_list (sess->gui->user_tree, &num_sel); + if (num_sel < 1) + { + nick_command_parse (sess, cmd, "", ""); + return; + } + } + + /* create "allnicks" string */ + allnicks = malloc (((NICKLEN + 1) * num_sel) + 1); + *allnicks = 0; + + i = 0; + while (nicks[i]) + { + if (i > 0) + strcat (allnicks, " "); + strcat (allnicks, nicks[i]); + + if (!nick) + nick = nicks[0]; + + /* if not using "%a", execute the command once for each nickname */ + if (!using_allnicks) + nick_command_parse (sess, cmd, nicks[i], ""); + + i++; + } + + if (using_allnicks) + { + if (!nick) + nick = ""; + nick_command_parse (sess, cmd, nick, allnicks); + } + + while (num_sel) + { + num_sel--; + g_free (nicks[num_sel]); + } + + free (nicks); + free (allnicks); +} + +/* a popup-menu-item has been selected */ + +static void +popup_menu_cb (GtkWidget * item, char *cmd) +{ + char *nick; + + /* the userdata is set in menu_quick_item() */ + nick = g_object_get_data (G_OBJECT (item), "u"); + + if (!nick) /* userlist popup menu */ + { + /* treat it just like a userlist button */ + userlist_button_cb (NULL, cmd); + return; + } + + if (!current_sess) /* for url grabber window */ + nick_command_parse (sess_list->data, cmd, nick, nick); + else + nick_command_parse (current_sess, cmd, nick, nick); +} + +GtkWidget * +menu_toggle_item (char *label, GtkWidget *menu, void *callback, void *userdata, + int state) +{ + GtkWidget *item; + + item = gtk_check_menu_item_new_with_mnemonic (label); + gtk_check_menu_item_set_active ((GtkCheckMenuItem*)item, state); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (callback), userdata); + gtk_widget_show (item); + + return item; +} + +GtkWidget * +menu_quick_item (char *cmd, char *label, GtkWidget * menu, int flags, + gpointer userdata, char *icon) +{ + GtkWidget *img, *item; + char *path; + + if (!label) + item = gtk_menu_item_new (); + else + { + if (icon) + { + /*if (flags & XCMENU_MARKUP) + item = gtk_image_menu_item_new_with_markup (label); + else*/ + item = gtk_image_menu_item_new_with_mnemonic (label); + img = NULL; + if (access (icon, R_OK) == 0) /* try fullpath */ + img = gtk_image_new_from_file (icon); + else + { + /* try relative to ~/.xchat2 */ + path = g_strdup_printf ("%s/%s", get_xdir_fs (), icon); + if (access (path, R_OK) == 0) + img = gtk_image_new_from_file (path); + else + img = gtk_image_new_from_stock (icon, GTK_ICON_SIZE_MENU); + g_free (path); + } + + if (img) + gtk_image_menu_item_set_image ((GtkImageMenuItem *)item, img); + } + else + { + if (flags & XCMENU_MARKUP) + { + item = gtk_menu_item_new_with_label (""); + if (flags & XCMENU_MNEMONIC) + gtk_label_set_markup_with_mnemonic (GTK_LABEL (GTK_BIN (item)->child), label); + else + gtk_label_set_markup (GTK_LABEL (GTK_BIN (item)->child), label); + } else + { + if (flags & XCMENU_MNEMONIC) + item = gtk_menu_item_new_with_mnemonic (label); + else + item = gtk_menu_item_new_with_label (label); + } + } + } + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + g_object_set_data (G_OBJECT (item), "u", userdata); + if (cmd) + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (popup_menu_cb), cmd); + if (flags & XCMENU_SHADED) + gtk_widget_set_sensitive (GTK_WIDGET (item), FALSE); + gtk_widget_show_all (item); + + return item; +} + +static void +menu_quick_item_with_callback (void *callback, char *label, GtkWidget * menu, + void *arg) +{ + GtkWidget *item; + + item = gtk_menu_item_new_with_label (label); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (callback), arg); + gtk_widget_show (item); +} + +GtkWidget * +menu_quick_sub (char *name, GtkWidget *menu, GtkWidget **sub_item_ret, int flags, int pos) +{ + GtkWidget *sub_menu; + GtkWidget *sub_item; + + if (!name) + return menu; + + /* Code to add a submenu */ + sub_menu = gtk_menu_new (); + if (flags & XCMENU_MARKUP) + { + sub_item = gtk_menu_item_new_with_label (""); + gtk_label_set_markup (GTK_LABEL (GTK_BIN (sub_item)->child), name); + } + else + { + if (flags & XCMENU_MNEMONIC) + sub_item = gtk_menu_item_new_with_mnemonic (name); + else + sub_item = gtk_menu_item_new_with_label (name); + } + gtk_menu_shell_insert (GTK_MENU_SHELL (menu), sub_item, pos); + gtk_widget_show (sub_item); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (sub_item), sub_menu); + + if (sub_item_ret) + *sub_item_ret = sub_item; + + if (flags & XCMENU_DOLIST) + /* We create a new element in the list */ + submenu_list = g_slist_prepend (submenu_list, sub_menu); + return sub_menu; +} + +static GtkWidget * +menu_quick_endsub () +{ + /* Just delete the first element in the linked list pointed to by first */ + if (submenu_list) + submenu_list = g_slist_remove (submenu_list, submenu_list->data); + + if (submenu_list) + return (submenu_list->data); + else + return NULL; +} + +static void +toggle_cb (GtkWidget *item, char *pref_name) +{ + char buf[256]; + + if (GTK_CHECK_MENU_ITEM (item)->active) + snprintf (buf, sizeof (buf), "set %s 1", pref_name); + else + snprintf (buf, sizeof (buf), "set %s 0", pref_name); + + handle_command (current_sess, buf, FALSE); +} + +static int +is_in_path (char *cmd) +{ + char *prog = strdup (cmd + 1); /* 1st char is "!" */ + char *space, *path, *orig; + + orig = prog; /* save for free()ing */ + /* special-case these default entries. */ + /* 123456789012345678 */ + if (strncmp (prog, "gnome-terminal -x ", 18) == 0) + /* don't check for gnome-terminal, but the thing it's executing! */ + prog += 18; + + space = strchr (prog, ' '); /* this isn't 100% but good enuf */ + if (space) + *space = 0; + + path = g_find_program_in_path (prog); + if (path) + { + g_free (path); + g_free (orig); + return 1; + } + + g_free (orig); + return 0; +} + +/* syntax: "LABEL~ICON~STUFF~ADDED~LATER~" */ + +static void +menu_extract_icon (char *name, char **label, char **icon) +{ + char *p = name; + char *start = NULL; + char *end = NULL; + + while (*p) + { + if (*p == '~') + { + /* escape \~ */ + if (p == name || p[-1] != '\\') + { + if (!start) + start = p + 1; + else if (!end) + end = p + 1; + } + } + p++; + } + + if (!end) + end = p; + + if (start && start != end) + { + *label = g_strndup (name, (start - name) - 1); + *icon = g_strndup (start, (end - start) - 1); + } + else + { + *label = g_strdup (name); + *icon = NULL; + } +} + +/* append items to "menu" using the (struct popup*) list provided */ + +void +menu_create (GtkWidget *menu, GSList *list, char *target, int check_path) +{ + struct popup *pop; + GtkWidget *tempmenu = menu, *subitem = NULL; + int childcount = 0; + + submenu_list = g_slist_prepend (0, menu); + while (list) + { + pop = (struct popup *) list->data; + + if (!strncasecmp (pop->name, "SUB", 3)) + { + childcount = 0; + tempmenu = menu_quick_sub (pop->cmd, tempmenu, &subitem, XCMENU_DOLIST|XCMENU_MNEMONIC, -1); + + } else if (!strncasecmp (pop->name, "TOGGLE", 6)) + { + childcount++; + menu_toggle_item (pop->name + 7, tempmenu, toggle_cb, pop->cmd, + cfg_get_bool (pop->cmd)); + + } else if (!strncasecmp (pop->name, "ENDSUB", 6)) + { + /* empty sub menu due to no programs in PATH? */ + if (check_path && childcount < 1) + gtk_widget_destroy (subitem); + subitem = NULL; + + if (tempmenu != menu) + tempmenu = menu_quick_endsub (); + /* If we get here and tempmenu equals menu that means we havent got any submenus to exit from */ + + } else if (!strncasecmp (pop->name, "SEP", 3)) + { + menu_quick_item (0, 0, tempmenu, XCMENU_SHADED, 0, 0); + + } else + { + char *icon, *label; + + /* default command in xchat.c */ + if (pop->cmd[0] == 'n' && !strcmp (pop->cmd, "notify -n ASK %s")) + { + /* don't create this item if already in notify list */ + if (!target || notify_is_in_list (current_sess->server, target)) + { + list = list->next; + continue; + } + } + + menu_extract_icon (pop->name, &label, &icon); + + if (!check_path || pop->cmd[0] != '!') + { + menu_quick_item (pop->cmd, label, tempmenu, 0, target, icon); + /* check if the program is in path, if not, leave it out! */ + } else if (is_in_path (pop->cmd)) + { + childcount++; + menu_quick_item (pop->cmd, label, tempmenu, 0, target, icon); + } + + g_free (label); + g_free (icon); + } + + list = list->next; + } + + /* Let's clean up the linked list from mem */ + while (submenu_list) + submenu_list = g_slist_remove (submenu_list, submenu_list->data); +} + +static char *str_copy = NULL; /* for all pop-up menus */ +static GtkWidget *nick_submenu = NULL; /* user info submenu */ + +static void +menu_destroy (GtkWidget *menu, gpointer objtounref) +{ + gtk_widget_destroy (menu); + g_object_unref (menu); + if (objtounref) + g_object_unref (G_OBJECT (objtounref)); + nick_submenu = NULL; +} + +static void +menu_popup (GtkWidget *menu, GdkEventButton *event, gpointer objtounref) +{ +#if (GTK_MAJOR_VERSION != 2) || (GTK_MINOR_VERSION != 0) + if (event && event->window) + gtk_menu_set_screen (GTK_MENU (menu), gdk_drawable_get_screen (event->window)); +#endif + + g_object_ref (menu); + g_object_ref_sink (menu); + g_object_unref (menu); + g_signal_connect (G_OBJECT (menu), "selection-done", + G_CALLBACK (menu_destroy), objtounref); + gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, + 0, event ? event->time : 0); +} + +static void +menu_nickinfo_cb (GtkWidget *menu, session *sess) +{ + char buf[512]; + + if (!is_session (sess)) + return; + + /* issue a /WHOIS */ + snprintf (buf, sizeof (buf), "WHOIS %s %s", str_copy, str_copy); + handle_command (sess, buf, FALSE); + /* and hide the output */ + sess->server->skip_next_whois = 1; +} + +static void +copy_to_clipboard_cb (GtkWidget *item, char *url) +{ + gtkutil_copy_to_clipboard (item, NULL, url); +} + +/* returns boolean: Some data is missing */ + +static gboolean +menu_create_nickinfo_menu (struct User *user, GtkWidget *submenu) +{ + char buf[512]; + char unknown[96]; + char *real, *fmt; + struct away_msg *away; + gboolean missing = FALSE; + GtkWidget *item; + + /* let the translators tweak this if need be */ + fmt = _("<tt><b>%-11s</b></tt> %s"); + snprintf (unknown, sizeof (unknown), "<i>%s</i>", _("Unknown")); + + if (user->realname) + { + real = strip_color (user->realname, -1, STRIP_ALL|STRIP_ESCMARKUP); + snprintf (buf, sizeof (buf), fmt, _("Real Name:"), real); + g_free (real); + } else + { + snprintf (buf, sizeof (buf), fmt, _("Real Name:"), unknown); + } + item = menu_quick_item (0, buf, submenu, XCMENU_MARKUP, 0, 0); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (copy_to_clipboard_cb), + user->realname ? user->realname : unknown); + + snprintf (buf, sizeof (buf), fmt, _("User:"), + user->hostname ? user->hostname : unknown); + item = menu_quick_item (0, buf, submenu, XCMENU_MARKUP, 0, 0); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (copy_to_clipboard_cb), + user->hostname ? user->hostname : unknown); + + snprintf (buf, sizeof (buf), fmt, _("Country:"), + user->hostname ? country(user->hostname) : unknown); + item = menu_quick_item (0, buf, submenu, XCMENU_MARKUP, 0, 0); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (copy_to_clipboard_cb), + user->hostname ? country(user->hostname) : unknown); + + snprintf (buf, sizeof (buf), fmt, _("Server:"), + user->servername ? user->servername : unknown); + item = menu_quick_item (0, buf, submenu, XCMENU_MARKUP, 0, 0); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (copy_to_clipboard_cb), + user->servername ? user->servername : unknown); + + if (user->lasttalk) + { + char min[96]; + + snprintf (min, sizeof (min), _("%u minutes ago"), + (unsigned int) ((time (0) - user->lasttalk) / 60)); + snprintf (buf, sizeof (buf), fmt, _("Last Msg:"), min); + } else + { + snprintf (buf, sizeof (buf), fmt, _("Last Msg:"), unknown); + } + menu_quick_item (0, buf, submenu, XCMENU_MARKUP, 0, 0); + + if (user->away) + { + away = server_away_find_message (current_sess->server, user->nick); + if (away) + { + char *msg = strip_color (away->message ? away->message : unknown, -1, STRIP_ALL|STRIP_ESCMARKUP); + snprintf (buf, sizeof (buf), fmt, _("Away Msg:"), msg); + g_free (msg); + item = menu_quick_item (0, buf, submenu, XCMENU_MARKUP, 0, 0); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (copy_to_clipboard_cb), + away->message ? away->message : unknown); + } + else + missing = TRUE; + } + + return missing; +} + +void +fe_userlist_update (session *sess, struct User *user) +{ + GList *items, *next; + + if (!nick_submenu || !str_copy) + return; + + /* not the same nick as the menu? */ + if (sess->server->p_cmp (user->nick, str_copy)) + return; + + /* get rid of the "show" signal */ + g_signal_handlers_disconnect_by_func (nick_submenu, menu_nickinfo_cb, sess); + + /* destroy all the old items */ + items = ((GtkMenuShell *) nick_submenu)->children; + while (items) + { + next = items->next; + gtk_widget_destroy (items->data); + items = next; + } + + /* and re-create them with new info */ + menu_create_nickinfo_menu (user, nick_submenu); +} + +void +menu_nickmenu (session *sess, GdkEventButton *event, char *nick, int num_sel) +{ + char buf[512]; + struct User *user; + GtkWidget *submenu, *menu = gtk_menu_new (); + + if (str_copy) + free (str_copy); + str_copy = strdup (nick); + + submenu_list = 0; /* first time through, might not be 0 */ + + /* more than 1 nick selected? */ + if (num_sel > 1) + { + snprintf (buf, sizeof (buf), _("%d nicks selected."), num_sel); + menu_quick_item (0, buf, menu, 0, 0, 0); + menu_quick_item (0, 0, menu, XCMENU_SHADED, 0, 0); + } else + { + user = userlist_find (sess, nick); /* lasttalk is channel specific */ + if (!user) + user = userlist_find_global (current_sess->server, nick); + if (user) + { + nick_submenu = submenu = menu_quick_sub (nick, menu, NULL, XCMENU_DOLIST, -1); + + if (menu_create_nickinfo_menu (user, submenu) || + !user->hostname || !user->realname || !user->servername) + { + g_signal_connect (G_OBJECT (submenu), "show", G_CALLBACK (menu_nickinfo_cb), sess); + } + + menu_quick_endsub (); + menu_quick_item (0, 0, menu, XCMENU_SHADED, 0, 0); + } + } + + if (num_sel > 1) + menu_create (menu, popup_list, NULL, FALSE); + else + menu_create (menu, popup_list, str_copy, FALSE); + + if (num_sel == 0) /* xtext click */ + menu_add_plugin_items (menu, "\x5$NICK", str_copy); + else /* userlist treeview click */ + menu_add_plugin_items (menu, "\x5$NICK", NULL); + + menu_popup (menu, event, NULL); +} + +/* stuff for the View menu */ + +static void +menu_showhide_cb (session *sess) +{ + if (prefs.hidemenu) + gtk_widget_hide (sess->gui->menu); + else + gtk_widget_show (sess->gui->menu); +} + +static void +menu_topic_showhide_cb (session *sess) +{ + if (prefs.topicbar) + gtk_widget_show (sess->gui->topic_bar); + else + gtk_widget_hide (sess->gui->topic_bar); +} + +static void +menu_userlist_showhide_cb (session *sess) +{ + mg_decide_userlist (sess, TRUE); +} + +static void +menu_ulbuttons_showhide_cb (session *sess) +{ + if (prefs.userlistbuttons) + gtk_widget_show (sess->gui->button_box); + else + gtk_widget_hide (sess->gui->button_box); +} + +static void +menu_cmbuttons_showhide_cb (session *sess) +{ + switch (sess->type) + { + case SESS_CHANNEL: + if (prefs.chanmodebuttons) + gtk_widget_show (sess->gui->topicbutton_box); + else + gtk_widget_hide (sess->gui->topicbutton_box); + break; + default: + gtk_widget_hide (sess->gui->topicbutton_box); + } +} + +static void +menu_setting_foreach (void (*callback) (session *), int id, guint state) +{ + session *sess; + GSList *list; + int maindone = FALSE; /* do it only once for EVERY tab */ + + list = sess_list; + while (list) + { + sess = list->data; + + if (!sess->gui->is_tab || !maindone) + { + if (sess->gui->is_tab) + maindone = TRUE; + if (id != -1) + GTK_CHECK_MENU_ITEM (sess->gui->menu_item[id])->active = state; + if (callback) + callback (sess); + } + + list = list->next; + } +} + +void +menu_bar_toggle (void) +{ + prefs.hidemenu = !prefs.hidemenu; + menu_setting_foreach (menu_showhide_cb, MENU_ID_MENUBAR, !prefs.hidemenu); +} + +static void +menu_bar_toggle_cb (void) +{ + menu_bar_toggle (); + if (prefs.hidemenu) + fe_message (_("The Menubar is now hidden. You can show it again" + " by pressing F9 or right-clicking in a blank part of" + " the main text area."), FE_MSG_INFO); +} + +static void +menu_topicbar_toggle (GtkWidget *wid, gpointer ud) +{ + prefs.topicbar = !prefs.topicbar; + menu_setting_foreach (menu_topic_showhide_cb, MENU_ID_TOPICBAR, + prefs.topicbar); +} + +static void +menu_userlist_toggle (GtkWidget *wid, gpointer ud) +{ + prefs.hideuserlist = !prefs.hideuserlist; + menu_setting_foreach (menu_userlist_showhide_cb, MENU_ID_USERLIST, + !prefs.hideuserlist); +} + +static void +menu_ulbuttons_toggle (GtkWidget *wid, gpointer ud) +{ + prefs.userlistbuttons = !prefs.userlistbuttons; + menu_setting_foreach (menu_ulbuttons_showhide_cb, MENU_ID_ULBUTTONS, + prefs.userlistbuttons); +} + +static void +menu_cmbuttons_toggle (GtkWidget *wid, gpointer ud) +{ + prefs.chanmodebuttons = !prefs.chanmodebuttons; + menu_setting_foreach (menu_cmbuttons_showhide_cb, MENU_ID_MODEBUTTONS, + prefs.chanmodebuttons); +} + +void +menu_middlemenu (session *sess, GdkEventButton *event) +{ + GtkWidget *menu; + GtkAccelGroup *accel_group; + + accel_group = gtk_accel_group_new (); + menu = menu_create_main (accel_group, FALSE, sess->server->is_away, !sess->gui->is_tab, NULL); + menu_popup (menu, event, accel_group); +} + +static void +open_url_cb (GtkWidget *item, char *url) +{ + char buf[512]; + + /* pass this to /URL so it can handle irc:// */ + snprintf (buf, sizeof (buf), "URL %s", url); + handle_command (current_sess, buf, FALSE); +} + +void +menu_urlmenu (GdkEventButton *event, char *url) +{ + GtkWidget *menu; + char *tmp, *chop; + + if (str_copy) + free (str_copy); + str_copy = strdup (url); + + menu = gtk_menu_new (); + /* more than 51 chars? Chop it */ + if (g_utf8_strlen (str_copy, -1) >= 52) + { + tmp = strdup (str_copy); + chop = g_utf8_offset_to_pointer (tmp, 48); + chop[0] = chop[1] = chop[2] = '.'; + chop[3] = 0; + menu_quick_item (0, tmp, menu, XCMENU_SHADED, 0, 0); + free (tmp); + } else + { + menu_quick_item (0, str_copy, menu, XCMENU_SHADED, 0, 0); + } + menu_quick_item (0, 0, menu, XCMENU_SHADED, 0, 0); + + /* Two hardcoded entries */ + if (strncmp (str_copy, "irc://", 6) == 0 || + strncmp (str_copy, "ircs://",7) == 0) + menu_quick_item_with_callback (open_url_cb, _("Connect"), menu, str_copy); + else + menu_quick_item_with_callback (open_url_cb, _("Open Link in Browser"), menu, str_copy); + menu_quick_item_with_callback (copy_to_clipboard_cb, _("Copy Selected Link"), menu, str_copy); + /* custom ones from urlhandlers.conf */ + menu_create (menu, urlhandler_list, str_copy, TRUE); + menu_add_plugin_items (menu, "\x4$URL", str_copy); + menu_popup (menu, event, NULL); +} + +static void +menu_chan_cycle (GtkWidget * menu, char *chan) +{ + char tbuf[256]; + + if (current_sess) + { + snprintf (tbuf, sizeof tbuf, "CYCLE %s", chan); + handle_command (current_sess, tbuf, FALSE); + } +} + +static void +menu_chan_part (GtkWidget * menu, char *chan) +{ + char tbuf[256]; + + if (current_sess) + { + snprintf (tbuf, sizeof tbuf, "part %s", chan); + handle_command (current_sess, tbuf, FALSE); + } +} + +static void +menu_chan_join (GtkWidget * menu, char *chan) +{ + char tbuf[256]; + + if (current_sess) + { + snprintf (tbuf, sizeof tbuf, "join %s", chan); + handle_command (current_sess, tbuf, FALSE); + } +} + +void +menu_chanmenu (struct session *sess, GdkEventButton * event, char *chan) +{ + GtkWidget *menu; + int is_joined = FALSE; + + if (find_channel (sess->server, chan)) + is_joined = TRUE; + + if (str_copy) + free (str_copy); + str_copy = strdup (chan); + + menu = gtk_menu_new (); + + menu_quick_item (0, chan, menu, XCMENU_SHADED, str_copy, 0); + menu_quick_item (0, 0, menu, XCMENU_SHADED, str_copy, 0); + + if (!is_joined) + menu_quick_item_with_callback (menu_chan_join, _("Join Channel"), menu, + str_copy); + else + { + menu_quick_item_with_callback (menu_chan_part, _("Part Channel"), menu, + str_copy); + menu_quick_item_with_callback (menu_chan_cycle, _("Cycle Channel"), menu, + str_copy); + } + + menu_addfavoritemenu (sess->server, menu, str_copy); + + menu_add_plugin_items (menu, "\x5$CHAN", str_copy); + menu_popup (menu, event, NULL); +} + +static void +menu_delfav_cb (GtkWidget *item, server *serv) +{ + servlist_autojoinedit (serv->network, str_copy, FALSE); +} + +static void +menu_addfav_cb (GtkWidget *item, server *serv) +{ + servlist_autojoinedit (serv->network, str_copy, TRUE); +} + +void +menu_addfavoritemenu (server *serv, GtkWidget *menu, char *channel) +{ + if (!serv->network) + return; + + if (channel != str_copy) + { + if (str_copy) + free (str_copy); + str_copy = strdup (channel); + } + + if (joinlist_is_in_list (serv, channel)) + mg_create_icon_item (_("_Remove from Favorites"), GTK_STOCK_REMOVE, menu, menu_delfav_cb, serv); + else + mg_create_icon_item (_("_Add to Favorites"), GTK_STOCK_ADD, menu, menu_addfav_cb, serv); +} + +static void +menu_open_server_list (GtkWidget *wid, gpointer none) +{ + fe_serverlist_open (current_sess); +} + +static void +menu_settings (GtkWidget * wid, gpointer none) +{ + extern void setup_open (void); + setup_open (); +} + +static void +menu_usermenu (void) +{ + editlist_gui_open (NULL, NULL, usermenu_list, _("XChat: User menu"), + "usermenu", "usermenu.conf", 0); +} + +static void +usermenu_create (GtkWidget *menu) +{ + menu_create (menu, usermenu_list, "", FALSE); + menu_quick_item (0, 0, menu, XCMENU_SHADED, 0, 0); /* sep */ + menu_quick_item_with_callback (menu_usermenu, _("Edit This Menu..."), menu, 0); +} + +static void +usermenu_destroy (GtkWidget * menu) +{ + GList *items = ((GtkMenuShell *) menu)->children; + GList *next; + + while (items) + { + next = items->next; + gtk_widget_destroy (items->data); + items = next; + } +} + +void +usermenu_update (void) +{ + int done_main = FALSE; + GSList *list = sess_list; + session *sess; + GtkWidget *menu; + + while (list) + { + sess = list->data; + menu = sess->gui->menu_item[MENU_ID_USERMENU]; + if (sess->gui->is_tab) + { + if (!done_main && menu) + { + usermenu_destroy (menu); + usermenu_create (menu); + done_main = TRUE; + } + } else if (menu) + { + usermenu_destroy (menu); + usermenu_create (menu); + } + list = list->next; + } +} + +static void +menu_newserver_window (GtkWidget * wid, gpointer none) +{ + int old = prefs.tabchannels; + + prefs.tabchannels = 0; + new_ircwindow (NULL, NULL, SESS_SERVER, 0); + prefs.tabchannels = old; +} + +static void +menu_newchannel_window (GtkWidget * wid, gpointer none) +{ + int old = prefs.tabchannels; + + prefs.tabchannels = 0; + new_ircwindow (current_sess->server, NULL, SESS_CHANNEL, 0); + prefs.tabchannels = old; +} + +static void +menu_newserver_tab (GtkWidget * wid, gpointer none) +{ + int old = prefs.tabchannels; + int oldf = prefs.newtabstofront; + + prefs.tabchannels = 1; + /* force focus if setting is "only requested tabs" */ + if (prefs.newtabstofront == 2) + prefs.newtabstofront = 1; + new_ircwindow (NULL, NULL, SESS_SERVER, 0); + prefs.tabchannels = old; + prefs.newtabstofront = oldf; +} + +static void +menu_newchannel_tab (GtkWidget * wid, gpointer none) +{ + int old = prefs.tabchannels; + + prefs.tabchannels = 1; + new_ircwindow (current_sess->server, NULL, SESS_CHANNEL, 0); + prefs.tabchannels = old; +} + +static void +menu_rawlog (GtkWidget * wid, gpointer none) +{ + open_rawlog (current_sess->server); +} + +static void +menu_detach (GtkWidget * wid, gpointer none) +{ + mg_detach (current_sess, 0); +} + +static void +menu_close (GtkWidget * wid, gpointer none) +{ + mg_close_sess (current_sess); +} + +static void +menu_quit (GtkWidget * wid, gpointer none) +{ + mg_open_quit_dialog (FALSE); +} + +static void +menu_search () +{ + search_open (current_sess); +} + +static void +menu_resetmarker (GtkWidget * wid, gpointer none) +{ + gtk_xtext_reset_marker_pos (GTK_XTEXT (current_sess->gui->xtext)); +} + +static void +menu_flushbuffer (GtkWidget * wid, gpointer none) +{ + fe_text_clear (current_sess, 0); +} + +static void +savebuffer_req_done (session *sess, char *file) +{ + int fh; + + if (!file) + return; + + fh = open (file, O_TRUNC | O_WRONLY | O_CREAT, 0600); + if (fh != -1) + { + gtk_xtext_save (GTK_XTEXT (sess->gui->xtext), fh); + close (fh); + } +} + +static void +menu_savebuffer (GtkWidget * wid, gpointer none) +{ + gtkutil_file_req (_("Select an output filename"), savebuffer_req_done, + current_sess, NULL, FRF_WRITE); +} + +static void +menu_disconnect (GtkWidget * wid, gpointer none) +{ + handle_command (current_sess, "DISCON", FALSE); +} + +static void +menu_reconnect (GtkWidget * wid, gpointer none) +{ + if (current_sess->server->hostname[0]) + handle_command (current_sess, "RECONNECT", FALSE); + else + fe_serverlist_open (current_sess); +} + +static void +menu_join_cb (GtkWidget *dialog, gint response, GtkEntry *entry) +{ + switch (response) + { + case GTK_RESPONSE_ACCEPT: + menu_chan_join (NULL, entry->text); + break; + + case GTK_RESPONSE_HELP: + chanlist_opengui (current_sess->server, TRUE); + break; + } + + gtk_widget_destroy (dialog); +} + +static void +menu_join_entry_cb (GtkWidget *entry, GtkDialog *dialog) +{ + gtk_dialog_response (dialog, GTK_RESPONSE_ACCEPT); +} + +static void +menu_join (GtkWidget * wid, gpointer none) +{ + GtkWidget *hbox, *dialog, *entry, *label; + + dialog = gtk_dialog_new_with_buttons (_("Join Channel"), + GTK_WINDOW (parent_window), 0, + _("Retrieve channel list..."), GTK_RESPONSE_HELP, + GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, + GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, + NULL); + gtk_box_set_homogeneous (GTK_BOX (GTK_DIALOG (dialog)->vbox), TRUE); + gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); + hbox = gtk_hbox_new (TRUE, 0); + + entry = gtk_entry_new (); + GTK_ENTRY (entry)->editable = 0; /* avoid auto-selection */ + gtk_entry_set_text (GTK_ENTRY (entry), "#"); + g_signal_connect (G_OBJECT (entry), "activate", + G_CALLBACK (menu_join_entry_cb), dialog); + gtk_box_pack_end (GTK_BOX (hbox), entry, 0, 0, 0); + + label = gtk_label_new (_("Enter Channel to Join:")); + gtk_box_pack_end (GTK_BOX (hbox), label, 0, 0, 0); + + g_signal_connect (G_OBJECT (dialog), "response", + G_CALLBACK (menu_join_cb), entry); + + gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), hbox); + + gtk_widget_show_all (dialog); + + gtk_editable_set_editable (GTK_EDITABLE (entry), TRUE); + gtk_editable_set_position (GTK_EDITABLE (entry), 1); +} + +static void +menu_away (GtkCheckMenuItem *item, gpointer none) +{ + handle_command (current_sess, item->active ? "away" : "back", FALSE); +} + +static void +menu_chanlist (GtkWidget * wid, gpointer none) +{ + chanlist_opengui (current_sess->server, FALSE); +} + +static void +menu_banlist (GtkWidget * wid, gpointer none) +{ + banlist_opengui (current_sess); +} + +#ifdef USE_PLUGIN + +static void +menu_loadplugin (void) +{ + plugingui_load (); +} + +static void +menu_pluginlist (void) +{ + plugingui_open (); +} + +#else + +#define menu_pluginlist 0 +#define menu_loadplugin 0 + +#endif + +#define usercommands_help _("User Commands - Special codes:\n\n"\ + "%c = current channel\n"\ + "%e = current network name\n"\ + "%m = machine info\n"\ + "%n = your nick\n"\ + "%t = time/date\n"\ + "%v = xchat version\n"\ + "%2 = word 2\n"\ + "%3 = word 3\n"\ + "&2 = word 2 to the end of line\n"\ + "&3 = word 3 to the end of line\n\n"\ + "eg:\n"\ + "/cmd john hello\n\n"\ + "%2 would be \042john\042\n"\ + "&2 would be \042john hello\042.") + +#define ulbutton_help _("Userlist Buttons - Special codes:\n\n"\ + "%a = all selected nicks\n"\ + "%c = current channel\n"\ + "%e = current network name\n"\ + "%h = selected nick's hostname\n"\ + "%m = machine info\n"\ + "%n = your nick\n"\ + "%s = selected nick\n"\ + "%t = time/date\n") + +#define dlgbutton_help _("Dialog Buttons - Special codes:\n\n"\ + "%a = all selected nicks\n"\ + "%c = current channel\n"\ + "%e = current network name\n"\ + "%h = selected nick's hostname\n"\ + "%m = machine info\n"\ + "%n = your nick\n"\ + "%s = selected nick\n"\ + "%t = time/date\n") + +#define ctcp_help _("CTCP Replies - Special codes:\n\n"\ + "%d = data (the whole ctcp)\n"\ + "%e = current network name\n"\ + "%m = machine info\n"\ + "%s = nick who sent the ctcp\n"\ + "%t = time/date\n"\ + "%2 = word 2\n"\ + "%3 = word 3\n"\ + "&2 = word 2 to the end of line\n"\ + "&3 = word 3 to the end of line\n\n") + +#define url_help _("URL Handlers - Special codes:\n\n"\ + "%s = the URL string\n\n"\ + "Putting a ! infront of the command\n"\ + "indicates it should be sent to a\n"\ + "shell instead of XChat") + +static void +menu_usercommands (void) +{ + editlist_gui_open (NULL, NULL, command_list, _("XChat: User Defined Commands"), + "commands", "commands.conf", usercommands_help); +} + +static void +menu_ulpopup (void) +{ + editlist_gui_open (NULL, NULL, popup_list, _("XChat: Userlist Popup menu"), "popup", + "popup.conf", ulbutton_help); +} + +static void +menu_rpopup (void) +{ + editlist_gui_open (_("Text"), _("Replace with"), replace_list, _("XChat: Replace"), "replace", + "replace.conf", 0); +} + +static void +menu_urlhandlers (void) +{ + editlist_gui_open (NULL, NULL, urlhandler_list, _("XChat: URL Handlers"), "urlhandlers", + "urlhandlers.conf", url_help); +} + +static void +menu_evtpopup (void) +{ + pevent_dialog_show (); +} + +static void +menu_keypopup (void) +{ + key_dialog_show (); +} + +static void +menu_ulbuttons (void) +{ + editlist_gui_open (NULL, NULL, button_list, _("XChat: Userlist buttons"), "buttons", + "buttons.conf", ulbutton_help); +} + +static void +menu_dlgbuttons (void) +{ + editlist_gui_open (NULL, NULL, dlgbutton_list, _("XChat: Dialog buttons"), "dlgbuttons", + "dlgbuttons.conf", dlgbutton_help); +} + +static void +menu_ctcpguiopen (void) +{ + editlist_gui_open (NULL, NULL, ctcp_list, _("XChat: CTCP Replies"), "ctcpreply", + "ctcpreply.conf", ctcp_help); +} + +static void +menu_docs (GtkWidget *wid, gpointer none) +{ + fe_open_url ("http://xchat.org/docs/"); +} + +/*static void +menu_webpage (GtkWidget *wid, gpointer none) +{ + fe_open_url ("http://xchat.org"); +}*/ + +static void +menu_dcc_win (GtkWidget *wid, gpointer none) +{ + fe_dcc_open_recv_win (FALSE); + fe_dcc_open_send_win (FALSE); +} + +static void +menu_dcc_chat_win (GtkWidget *wid, gpointer none) +{ + fe_dcc_open_chat_win (FALSE); +} + +void +menu_change_layout (void) +{ + if (prefs.tab_layout == 0) + { + menu_setting_foreach (NULL, MENU_ID_LAYOUT_TABS, 1); + menu_setting_foreach (NULL, MENU_ID_LAYOUT_TREE, 0); + mg_change_layout (0); + } else + { + menu_setting_foreach (NULL, MENU_ID_LAYOUT_TABS, 0); + menu_setting_foreach (NULL, MENU_ID_LAYOUT_TREE, 1); + mg_change_layout (2); + } +} + +static void +menu_layout_cb (GtkWidget *item, gpointer none) +{ + prefs.tab_layout = 2; + if (GTK_CHECK_MENU_ITEM (item)->active) + prefs.tab_layout = 0; + + menu_change_layout (); +} + +static void +menu_apply_metres_cb (session *sess) +{ + mg_update_meters (sess->gui); +} + +static void +menu_metres_off (GtkWidget *item, gpointer none) +{ + if (GTK_CHECK_MENU_ITEM (item)->active) + { + prefs.lagometer = 0; + prefs.throttlemeter = 0; + menu_setting_foreach (menu_apply_metres_cb, -1, 0); + } +} + +static void +menu_metres_text (GtkWidget *item, gpointer none) +{ + if (GTK_CHECK_MENU_ITEM (item)->active) + { + prefs.lagometer = 2; + prefs.throttlemeter = 2; + menu_setting_foreach (menu_apply_metres_cb, -1, 0); + } +} + +static void +menu_metres_graph (GtkWidget *item, gpointer none) +{ + if (GTK_CHECK_MENU_ITEM (item)->active) + { + prefs.lagometer = 1; + prefs.throttlemeter = 1; + menu_setting_foreach (menu_apply_metres_cb, -1, 0); + } +} + +static void +menu_metres_both (GtkWidget *item, gpointer none) +{ + if (GTK_CHECK_MENU_ITEM (item)->active) + { + prefs.lagometer = 3; + prefs.throttlemeter = 3; + menu_setting_foreach (menu_apply_metres_cb, -1, 0); + } +} + +static struct mymenu mymenu[] = { + {N_("_XChat"), 0, 0, M_NEWMENU, 0, 0, 1}, + {N_("Network Li_st..."), menu_open_server_list, (char *)&pix_book, M_MENUPIX, 0, 0, 1, GDK_s}, + {0, 0, 0, M_SEP, 0, 0, 0}, + + {N_("_New"), 0, GTK_STOCK_NEW, M_MENUSUB, 0, 0, 1}, + {N_("Server Tab..."), menu_newserver_tab, 0, M_MENUITEM, 0, 0, 1, GDK_t}, + {N_("Channel Tab..."), menu_newchannel_tab, 0, M_MENUITEM, 0, 0, 1}, + {N_("Server Window..."), menu_newserver_window, 0, M_MENUITEM, 0, 0, 1}, + {N_("Channel Window..."), menu_newchannel_window, 0, M_MENUITEM, 0, 0, 1}, + {0, 0, 0, M_END, 0, 0, 0}, + {0, 0, 0, M_SEP, 0, 0, 0}, + +#ifdef USE_PLUGIN + {N_("_Load Plugin or Script..."), menu_loadplugin, GTK_STOCK_REVERT_TO_SAVED, M_MENUSTOCK, 0, 0, 1}, +#else + {N_("_Load Plugin or Script..."), 0, GTK_STOCK_REVERT_TO_SAVED, M_MENUSTOCK, 0, 0, 0}, +#endif + {0, 0, 0, M_SEP, 0, 0, 0}, /* 11 */ +#define DETACH_OFFSET (12) + {0, menu_detach, GTK_STOCK_REDO, M_MENUSTOCK, 0, 0, 1, GDK_I}, /* 12 */ +#define CLOSE_OFFSET (13) + {0, menu_close, GTK_STOCK_CLOSE, M_MENUSTOCK, 0, 0, 1, GDK_w}, + {0, 0, 0, M_SEP, 0, 0, 0}, + {N_("_Quit"), menu_quit, GTK_STOCK_QUIT, M_MENUSTOCK, 0, 0, 1, GDK_q}, /* 15 */ + + {N_("_View"), 0, 0, M_NEWMENU, 0, 0, 1}, +#define MENUBAR_OFFSET (17) + {N_("_Menu Bar"), menu_bar_toggle_cb, 0, M_MENUTOG, MENU_ID_MENUBAR, 0, 1, GDK_F9}, + {N_("_Topic Bar"), menu_topicbar_toggle, 0, M_MENUTOG, MENU_ID_TOPICBAR, 0, 1}, + {N_("_User List"), menu_userlist_toggle, 0, M_MENUTOG, MENU_ID_USERLIST, 0, 1, GDK_F7}, + {N_("U_serlist Buttons"), menu_ulbuttons_toggle, 0, M_MENUTOG, MENU_ID_ULBUTTONS, 0, 1}, + {N_("M_ode Buttons"), menu_cmbuttons_toggle, 0, M_MENUTOG, MENU_ID_MODEBUTTONS, 0, 1}, + {0, 0, 0, M_SEP, 0, 0, 0}, + {N_("_Channel Switcher"), 0, 0, M_MENUSUB, 0, 0, 1}, /* 23 */ +#define TABS_OFFSET (24) + {N_("_Tabs"), menu_layout_cb, 0, M_MENURADIO, MENU_ID_LAYOUT_TABS, 0, 1}, + {N_("T_ree"), 0, 0, M_MENURADIO, MENU_ID_LAYOUT_TREE, 0, 1}, + {0, 0, 0, M_END, 0, 0, 0}, + {N_("_Network Meters"), 0, 0, M_MENUSUB, 0, 0, 1}, /* 27 */ +#define METRE_OFFSET (28) + {N_("Off"), menu_metres_off, 0, M_MENURADIO, 0, 0, 1}, + {N_("Graph"), menu_metres_graph, 0, M_MENURADIO, 0, 0, 1}, + {N_("Text"), menu_metres_text, 0, M_MENURADIO, 0, 0, 1}, + {N_("Both"), menu_metres_both, 0, M_MENURADIO, 0, 0, 1}, + {0, 0, 0, M_END, 0, 0, 0}, /* 32 */ + + {N_("_Server"), 0, 0, M_NEWMENU, 0, 0, 1}, + {N_("_Disconnect"), menu_disconnect, GTK_STOCK_DISCONNECT, M_MENUSTOCK, MENU_ID_DISCONNECT, 0, 1}, + {N_("_Reconnect"), menu_reconnect, GTK_STOCK_CONNECT, M_MENUSTOCK, MENU_ID_RECONNECT, 0, 1}, + {N_("Join a Channel..."), menu_join, GTK_STOCK_JUMP_TO, M_MENUSTOCK, MENU_ID_JOIN, 0, 1}, + {N_("List of Channels..."), menu_chanlist, GTK_STOCK_INDEX, M_MENUITEM, 0, 0, 1}, + {0, 0, 0, M_SEP, 0, 0, 0}, +#define AWAY_OFFSET (39) + {N_("Marked Away"), menu_away, 0, M_MENUTOG, MENU_ID_AWAY, 0, 1, GDK_a}, + + {N_("_Usermenu"), 0, 0, M_NEWMENU, MENU_ID_USERMENU, 0, 1}, /* 40 */ + + {N_("S_ettings"), 0, 0, M_NEWMENU, 0, 0, 1}, + {N_("_Preferences"), menu_settings, GTK_STOCK_PREFERENCES, M_MENUSTOCK, 0, 0, 1}, + + {N_("Advanced"), 0, GTK_STOCK_JUSTIFY_LEFT, M_MENUSUB, 0, 0, 1}, + {N_("Auto Replace..."), menu_rpopup, 0, M_MENUITEM, 0, 0, 1}, + {N_("CTCP Replies..."), menu_ctcpguiopen, 0, M_MENUITEM, 0, 0, 1}, + {N_("Dialog Buttons..."), menu_dlgbuttons, 0, M_MENUITEM, 0, 0, 1}, + {N_("Keyboard Shortcuts..."), menu_keypopup, 0, M_MENUITEM, 0, 0, 1}, + {N_("Text Events..."), menu_evtpopup, 0, M_MENUITEM, 0, 0, 1}, + {N_("URL Handlers..."), menu_urlhandlers, 0, M_MENUITEM, 0, 0, 1}, + {N_("User Commands..."), menu_usercommands, 0, M_MENUITEM, 0, 0, 1}, + {N_("Userlist Buttons..."), menu_ulbuttons, 0, M_MENUITEM, 0, 0, 1}, + {N_("Userlist Popup..."), menu_ulpopup, 0, M_MENUITEM, 0, 0, 1}, + {0, 0, 0, M_END, 0, 0, 0}, /* 53 */ + + {N_("_Window"), 0, 0, M_NEWMENU, 0, 0, 1}, + {N_("Ban List..."), menu_banlist, 0, M_MENUITEM, 0, 0, 1}, + {N_("Character Chart..."), ascii_open, 0, M_MENUITEM, 0, 0, 1}, + {N_("Direct Chat..."), menu_dcc_chat_win, 0, M_MENUITEM, 0, 0, 1}, + {N_("File Transfers..."), menu_dcc_win, 0, M_MENUITEM, 0, 0, 1}, + {N_("Friends List..."), notify_opengui, 0, M_MENUITEM, 0, 0, 1}, + {N_("Ignore List..."), ignore_gui_open, 0, M_MENUITEM, 0, 0, 1}, + {N_("Plugins and Scripts..."), menu_pluginlist, 0, M_MENUITEM, 0, 0, 1}, + {N_("Raw Log..."), menu_rawlog, 0, M_MENUITEM, 0, 0, 1}, /* 62 */ + {N_("URL Grabber..."), url_opengui, 0, M_MENUITEM, 0, 0, 1}, + {0, 0, 0, M_SEP, 0, 0, 0}, + {N_("Reset Marker Line"), menu_resetmarker, 0, M_MENUITEM, 0, 0, 1, GDK_m}, + {N_("C_lear Text"), menu_flushbuffer, GTK_STOCK_CLEAR, M_MENUSTOCK, 0, 0, 1, GDK_l}, +#define SEARCH_OFFSET 67 + {N_("Search Text..."), menu_search, GTK_STOCK_FIND, M_MENUSTOCK, 0, 0, 1, GDK_f}, + {N_("Save Text..."), menu_savebuffer, GTK_STOCK_SAVE, M_MENUSTOCK, 0, 0, 1}, + + {N_("_Help"), 0, 0, M_NEWMENU, 0, 0, 1}, /* 69 */ + {N_("_Contents"), menu_docs, GTK_STOCK_HELP, M_MENUSTOCK, 0, 0, 1, GDK_F1}, +#if 0 + {N_("Check for updates"), menu_update, 0, M_MENUITEM, 0, 1}, +#endif + {N_("_About"), menu_about, GTK_STOCK_ABOUT, M_MENUSTOCK, 0, 0, 1}, + + {0, 0, 0, M_END, 0, 0, 0}, +}; + +GtkWidget * +create_icon_menu (char *labeltext, void *stock_name, int is_stock) +{ + GtkWidget *item, *img; + + if (is_stock) + img = gtk_image_new_from_stock (stock_name, GTK_ICON_SIZE_MENU); + else + img = gtk_image_new_from_pixbuf (*((GdkPixbuf **)stock_name)); + item = gtk_image_menu_item_new_with_mnemonic (labeltext); + gtk_image_menu_item_set_image ((GtkImageMenuItem *)item, img); + gtk_widget_show (img); + + return item; +} + +#if GTK_CHECK_VERSION(2,4,0) + +/* Override the default GTK2.4 handler, which would make menu + bindings not work when the menu-bar is hidden. */ +static gboolean +menu_canacaccel (GtkWidget *widget, guint signal_id, gpointer user_data) +{ + /* GTK2.2 behaviour */ +#if GTK_CHECK_VERSION(2,20,0) + return gtk_widget_is_sensitive (widget); +#else + return GTK_WIDGET_IS_SENSITIVE (widget); +#endif +} + +#endif + + +/* === STUFF FOR /MENU === */ + +static GtkMenuItem * +menu_find_item (GtkWidget *menu, char *name) +{ + GList *items = ((GtkMenuShell *) menu)->children; + GtkMenuItem *item; + GtkWidget *child; + const char *labeltext; + + while (items) + { + item = items->data; + child = GTK_BIN (item)->child; + if (child) /* separators arn't labels, skip them */ + { + labeltext = g_object_get_data (G_OBJECT (item), "name"); + if (!labeltext) + labeltext = gtk_label_get_text (GTK_LABEL (child)); + if (!menu_streq (labeltext, name, 1)) + return item; + } else if (name == NULL) + { + return item; + } + items = items->next; + } + + return NULL; +} + +static GtkWidget * +menu_find_path (GtkWidget *menu, char *path) +{ + GtkMenuItem *item; + char *s; + char name[128]; + int len; + + /* grab the next part of the path */ + s = strchr (path, '/'); + len = s - path; + if (!s) + len = strlen (path); + len = MIN (len, sizeof (name) - 1); + memcpy (name, path, len); + name[len] = 0; + + item = menu_find_item (menu, name); + if (!item) + return NULL; + + menu = gtk_menu_item_get_submenu (item); + if (!menu) + return NULL; + + path += len; + if (*path == 0) + return menu; + + return menu_find_path (menu, path + 1); +} + +static GtkWidget * +menu_find (GtkWidget *menu, char *path, char *label) +{ + GtkWidget *item = NULL; + + if (path[0] != 0) + menu = menu_find_path (menu, path); + if (menu) + item = (GtkWidget *)menu_find_item (menu, label); + return item; +} + +static void +menu_foreach_gui (menu_entry *me, void (*callback) (GtkWidget *, menu_entry *, char *)) +{ + GSList *list = sess_list; + int tabdone = FALSE; + session *sess; + + if (!me->is_main) + return; /* not main menu */ + + while (list) + { + sess = list->data; + /* do it only once for tab sessions, since they share a GUI */ + if (!sess->gui->is_tab || !tabdone) + { + callback (sess->gui->menu, me, NULL); + if (sess->gui->is_tab) + tabdone = TRUE; + } + list = list->next; + } +} + +static void +menu_update_cb (GtkWidget *menu, menu_entry *me, char *target) +{ + GtkWidget *item; + + item = menu_find (menu, me->path, me->label); + if (item) + { + gtk_widget_set_sensitive (item, me->enable); + /* must do it without triggering the callback */ + if (GTK_IS_CHECK_MENU_ITEM (item)) + GTK_CHECK_MENU_ITEM (item)->active = me->state; + } +} + +/* radio state changed via mouse click */ +static void +menu_radio_cb (GtkCheckMenuItem *item, menu_entry *me) +{ + me->state = 0; + if (item->active) + me->state = 1; + + /* update the state, incase this was changed via right-click. */ + /* This will update all other windows and menu bars */ + menu_foreach_gui (me, menu_update_cb); + + if (me->state && me->cmd) + handle_command (current_sess, me->cmd, FALSE); +} + +/* toggle state changed via mouse click */ +static void +menu_toggle_cb (GtkCheckMenuItem *item, menu_entry *me) +{ + me->state = 0; + if (item->active) + me->state = 1; + + /* update the state, incase this was changed via right-click. */ + /* This will update all other windows and menu bars */ + menu_foreach_gui (me, menu_update_cb); + + if (me->state) + handle_command (current_sess, me->cmd, FALSE); + else + handle_command (current_sess, me->ucmd, FALSE); +} + +static GtkWidget * +menu_radio_item (char *label, GtkWidget *menu, void *callback, void *userdata, + int state, char *groupname) +{ + GtkWidget *item; + GtkMenuItem *parent; + GSList *grouplist = NULL; + + parent = menu_find_item (menu, groupname); + if (parent) + grouplist = gtk_radio_menu_item_get_group ((GtkRadioMenuItem *)parent); + + item = gtk_radio_menu_item_new_with_label (grouplist, label); + gtk_check_menu_item_set_active ((GtkCheckMenuItem*)item, state); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (callback), userdata); + gtk_widget_show (item); + + return item; +} + +static void +menu_reorder (GtkMenu *menu, GtkWidget *item, int pos) +{ + if (pos == 0xffff) /* outbound.c uses this default */ + return; + + if (pos < 0) /* position offset from end/bottom */ + gtk_menu_reorder_child (menu, item, (g_list_length (GTK_MENU_SHELL (menu)->children) + pos) - 1); + else + gtk_menu_reorder_child (menu, item, pos); +} + +static GtkWidget * +menu_add_radio (GtkWidget *menu, menu_entry *me) +{ + GtkWidget *item = NULL; + char *path = me->path + me->root_offset; + + if (path[0] != 0) + menu = menu_find_path (menu, path); + if (menu) + { + item = menu_radio_item (me->label, menu, menu_radio_cb, me, me->state, me->group); + menu_reorder (GTK_MENU (menu), item, me->pos); + } + return item; +} + +static GtkWidget * +menu_add_toggle (GtkWidget *menu, menu_entry *me) +{ + GtkWidget *item = NULL; + char *path = me->path + me->root_offset; + + if (path[0] != 0) + menu = menu_find_path (menu, path); + if (menu) + { + item = menu_toggle_item (me->label, menu, menu_toggle_cb, me, me->state); + menu_reorder (GTK_MENU (menu), item, me->pos); + } + return item; +} + +static GtkWidget * +menu_add_item (GtkWidget *menu, menu_entry *me, char *target) +{ + GtkWidget *item = NULL; + char *path = me->path + me->root_offset; + + if (path[0] != 0) + menu = menu_find_path (menu, path); + if (menu) + { + item = menu_quick_item (me->cmd, me->label, menu, me->markup ? XCMENU_MARKUP|XCMENU_MNEMONIC : XCMENU_MNEMONIC, target, me->icon); + menu_reorder (GTK_MENU (menu), item, me->pos); + } + return item; +} + +static GtkWidget * +menu_add_sub (GtkWidget *menu, menu_entry *me) +{ + GtkWidget *item = NULL; + char *path = me->path + me->root_offset; + int pos; + + if (path[0] != 0) + menu = menu_find_path (menu, path); + if (menu) + { + pos = me->pos; + if (pos < 0) /* position offset from end/bottom */ + pos = g_list_length (GTK_MENU_SHELL (menu)->children) + pos; + menu_quick_sub (me->label, menu, &item, me->markup ? XCMENU_MARKUP|XCMENU_MNEMONIC : XCMENU_MNEMONIC, pos); + } + return item; +} + +static void +menu_del_cb (GtkWidget *menu, menu_entry *me, char *target) +{ + GtkWidget *item = menu_find (menu, me->path + me->root_offset, me->label); + if (item) + gtk_widget_destroy (item); +} + +static void +menu_add_cb (GtkWidget *menu, menu_entry *me, char *target) +{ + GtkWidget *item; + GtkAccelGroup *accel_group; + + if (me->group) /* have a group name? Must be a radio item */ + item = menu_add_radio (menu, me); + else if (me->ucmd) /* have unselect-cmd? Must be a toggle item */ + item = menu_add_toggle (menu, me); + else if (me->cmd || !me->label) /* label=NULL for separators */ + item = menu_add_item (menu, me, target); + else + item = menu_add_sub (menu, me); + + if (item) + { + gtk_widget_set_sensitive (item, me->enable); + if (me->key) + { + accel_group = g_object_get_data (G_OBJECT (menu), "accel"); + if (accel_group) /* popup menus don't have them */ + gtk_widget_add_accelerator (item, "activate", accel_group, me->key, + me->modifier, GTK_ACCEL_VISIBLE); + } + } +} + +char * +fe_menu_add (menu_entry *me) +{ + char *text; + + menu_foreach_gui (me, menu_add_cb); + + if (!me->markup) + return NULL; + + if (!pango_parse_markup (me->label, -1, 0, NULL, &text, NULL, NULL)) + return NULL; + + /* return the label with markup stripped */ + return text; +} + +void +fe_menu_del (menu_entry *me) +{ + menu_foreach_gui (me, menu_del_cb); +} + +void +fe_menu_update (menu_entry *me) +{ + menu_foreach_gui (me, menu_update_cb); +} + +/* used to add custom menus to the right-click menu */ + +static void +menu_add_plugin_mainmenu_items (GtkWidget *menu) +{ + GSList *list; + menu_entry *me; + + list = menu_list; /* outbound.c */ + while (list) + { + me = list->data; + if (me->is_main) + menu_add_cb (menu, me, NULL); + list = list->next; + } +} + +void +menu_add_plugin_items (GtkWidget *menu, char *root, char *target) +{ + GSList *list; + menu_entry *me; + + list = menu_list; /* outbound.c */ + while (list) + { + me = list->data; + if (!me->is_main && !strncmp (me->path, root + 1, root[0])) + menu_add_cb (menu, me, target); + list = list->next; + } +} + +/* === END STUFF FOR /MENU === */ + +GtkWidget * +menu_create_main (void *accel_group, int bar, int away, int toplevel, + GtkWidget **menu_widgets) +{ + int i = 0; + GtkWidget *item; + GtkWidget *menu = 0; + GtkWidget *menu_item = 0; + GtkWidget *menu_bar; + GtkWidget *usermenu = 0; + GtkWidget *submenu = 0; + int close_mask = GDK_CONTROL_MASK; + int away_mask = GDK_MOD1_MASK; + char *key_theme = NULL; + GtkSettings *settings; + GSList *group = NULL; + + if (bar) + menu_bar = gtk_menu_bar_new (); + else + menu_bar = gtk_menu_new (); + + /* /MENU needs to know this later */ + g_object_set_data (G_OBJECT (menu_bar), "accel", accel_group); + +#if GTK_CHECK_VERSION(2,4,0) + g_signal_connect (G_OBJECT (menu_bar), "can-activate-accel", + G_CALLBACK (menu_canacaccel), 0); +#endif + + /* set the initial state of toggles */ + mymenu[MENUBAR_OFFSET].state = !prefs.hidemenu; + mymenu[MENUBAR_OFFSET+1].state = prefs.topicbar; + mymenu[MENUBAR_OFFSET+2].state = !prefs.hideuserlist; + mymenu[MENUBAR_OFFSET+3].state = prefs.userlistbuttons; + mymenu[MENUBAR_OFFSET+4].state = prefs.chanmodebuttons; + + mymenu[AWAY_OFFSET].state = away; + + switch (prefs.tab_layout) + { + case 0: + mymenu[TABS_OFFSET].state = 1; + mymenu[TABS_OFFSET+1].state = 0; + break; + default: + mymenu[TABS_OFFSET].state = 0; + mymenu[TABS_OFFSET+1].state = 1; + } + + mymenu[METRE_OFFSET].state = 0; + mymenu[METRE_OFFSET+1].state = 0; + mymenu[METRE_OFFSET+2].state = 0; + mymenu[METRE_OFFSET+3].state = 0; + switch (prefs.lagometer) + { + case 0: + mymenu[METRE_OFFSET].state = 1; + break; + case 1: + mymenu[METRE_OFFSET+1].state = 1; + break; + case 2: + mymenu[METRE_OFFSET+2].state = 1; + break; + default: + mymenu[METRE_OFFSET+3].state = 1; + } + + /* change Close binding to ctrl-shift-w when using emacs keys */ + settings = gtk_widget_get_settings (menu_bar); + if (settings) + { + g_object_get (settings, "gtk-key-theme-name", &key_theme, NULL); + if (key_theme) + { + if (!strcasecmp (key_theme, "Emacs")) + { + close_mask = GDK_SHIFT_MASK | GDK_CONTROL_MASK; + mymenu[SEARCH_OFFSET].key = 0; + } + g_free (key_theme); + } + } + + /* Away binding to ctrl-alt-a if the _Help menu conflicts (FR/PT/IT) */ + { + char *help = _("_Help"); + char *under = strchr (help, '_'); + if (under && (under[1] == 'a' || under[1] == 'A')) + away_mask = GDK_MOD1_MASK | GDK_CONTROL_MASK; + } + + if (!toplevel) + { + mymenu[DETACH_OFFSET].text = N_("_Detach"); + mymenu[CLOSE_OFFSET].text = N_("_Close"); + } + else + { + mymenu[DETACH_OFFSET].text = N_("_Attach"); + mymenu[CLOSE_OFFSET].text = N_("_Close"); + } + + while (1) + { + item = NULL; + if (mymenu[i].id == MENU_ID_USERMENU && !prefs.gui_usermenu) + { + i++; + continue; + } + + switch (mymenu[i].type) + { + case M_NEWMENU: + if (menu) + gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_item), menu); + item = menu = gtk_menu_new (); + if (mymenu[i].id == MENU_ID_USERMENU) + usermenu = menu; + menu_item = gtk_menu_item_new_with_mnemonic (_(mymenu[i].text)); + /* record the English name for /menu */ + g_object_set_data (G_OBJECT (menu_item), "name", mymenu[i].text); + gtk_menu_shell_append (GTK_MENU_SHELL (menu_bar), menu_item); + gtk_widget_show (menu_item); + break; + + case M_MENUPIX: + item = create_icon_menu (_(mymenu[i].text), mymenu[i].image, FALSE); + goto normalitem; + + case M_MENUSTOCK: + item = create_icon_menu (_(mymenu[i].text), mymenu[i].image, TRUE); + goto normalitem; + + case M_MENUITEM: + item = gtk_menu_item_new_with_mnemonic (_(mymenu[i].text)); +normalitem: + if (mymenu[i].key != 0) + gtk_widget_add_accelerator (item, "activate", accel_group, + mymenu[i].key, + mymenu[i].key == GDK_F1 ? 0 : + mymenu[i].key == GDK_w ? close_mask : + GDK_CONTROL_MASK, + GTK_ACCEL_VISIBLE); + if (mymenu[i].callback) + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (mymenu[i].callback), 0); + if (submenu) + gtk_menu_shell_append (GTK_MENU_SHELL (submenu), item); + else + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + gtk_widget_show (item); + break; + + case M_MENUTOG: + item = gtk_check_menu_item_new_with_mnemonic (_(mymenu[i].text)); +togitem: + /* must avoid callback for Radio buttons */ + GTK_CHECK_MENU_ITEM (item)->active = mymenu[i].state; + /*gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), + mymenu[i].state);*/ + if (mymenu[i].key != 0) + gtk_widget_add_accelerator (item, "activate", accel_group, + mymenu[i].key, mymenu[i].id == MENU_ID_AWAY ? + away_mask : GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); + if (mymenu[i].callback) + g_signal_connect (G_OBJECT (item), "toggled", + G_CALLBACK (mymenu[i].callback), 0); + if (submenu) + gtk_menu_shell_append (GTK_MENU_SHELL (submenu), item); + else + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + gtk_widget_show (item); + gtk_widget_set_sensitive (item, mymenu[i].sensitive); + break; + + case M_MENURADIO: + item = gtk_radio_menu_item_new_with_mnemonic (group, _(mymenu[i].text)); + group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (item)); + goto togitem; + + case M_SEP: + item = gtk_menu_item_new (); + gtk_widget_set_sensitive (item, FALSE); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + gtk_widget_show (item); + break; + + case M_MENUSUB: + group = NULL; + submenu = gtk_menu_new (); + item = create_icon_menu (_(mymenu[i].text), mymenu[i].image, TRUE); + /* record the English name for /menu */ + g_object_set_data (G_OBJECT (item), "name", mymenu[i].text); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), submenu); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + gtk_widget_show (item); + break; + + /*case M_END:*/ default: + if (!submenu) + { + if (menu) + { + gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_item), menu); + menu_add_plugin_mainmenu_items (menu_bar); + } + if (usermenu) + usermenu_create (usermenu); + return (menu_bar); + } + submenu = NULL; + } + + /* record this GtkWidget * so it's state might be changed later */ + if (mymenu[i].id != 0 && menu_widgets) + /* this ends up in sess->gui->menu_item[MENU_ID_XXX] */ + menu_widgets[mymenu[i].id] = item; + + i++; + } +} diff --git a/etc/wyatt8740/src/fe-gtk/menu.h b/etc/wyatt8740/src/fe-gtk/menu.h new file mode 100644 index 0000000..7fef79c --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/menu.h @@ -0,0 +1,41 @@ +GtkWidget *menu_create_main (void *accel_group, int bar, int away, int toplevel, GtkWidget **menu_widgets); +void menu_urlmenu (GdkEventButton * event, char *url); +void menu_chanmenu (session *sess, GdkEventButton * event, char *chan); +void menu_addfavoritemenu (server *serv, GtkWidget *menu, char *channel); +void menu_nickmenu (session *sess, GdkEventButton * event, char *nick, int num_sel); +void menu_middlemenu (session *sess, GdkEventButton *event); +void userlist_button_cb (GtkWidget * button, char *cmd); +void nick_command_parse (session *sess, char *cmd, char *nick, char *allnick); +void usermenu_update (void); +GtkWidget *menu_toggle_item (char *label, GtkWidget *menu, void *callback, void *userdata, int state); +GtkWidget *menu_quick_item (char *cmd, char *label, GtkWidget * menu, int flags, gpointer userdata, char *icon); +GtkWidget *menu_quick_sub (char *name, GtkWidget *menu, GtkWidget **sub_item_ret, int flags, int pos); +GtkWidget *create_icon_menu (char *labeltext, void *stock_name, int is_stock); +void menu_create (GtkWidget *menu, GSList *list, char *target, int check_path); +void menu_bar_toggle (void); +void menu_add_plugin_items (GtkWidget *menu, char *root, char *target); +void menu_change_layout (void); + +/* for menu_quick functions */ +#define XCMENU_DOLIST 1 +#define XCMENU_SHADED 1 +#define XCMENU_MARKUP 2 +#define XCMENU_MNEMONIC 4 + +/* menu items we keep a GtkWidget* for (to change their state) */ +#define MENU_ID_AWAY 1 +#define MENU_ID_MENUBAR 2 +#define MENU_ID_TOPICBAR 3 +#define MENU_ID_USERLIST 4 +#define MENU_ID_ULBUTTONS 5 +#define MENU_ID_MODEBUTTONS 6 +#define MENU_ID_LAYOUT_TABS 7 +#define MENU_ID_LAYOUT_TREE 8 +#define MENU_ID_DISCONNECT 9 +#define MENU_ID_RECONNECT 10 +#define MENU_ID_JOIN 11 +#define MENU_ID_USERMENU 12 + +#if (MENU_ID_NUM < MENU_ID_USERMENU) +#error MENU_ID_NUM is set wrong +#endif diff --git a/etc/wyatt8740/src/fe-gtk/mmx_cmod.S b/etc/wyatt8740/src/fe-gtk/mmx_cmod.S new file mode 100644 index 0000000..12e866d --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/mmx_cmod.S @@ -0,0 +1,530 @@ +/* + * Copyright (C) 1997-2001, Michael Jennings + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies of the Software, its documentation and marketing & publicity + * materials, and acknowledgment shall be given in the documentation, materials + * and software packages that this Software was used. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* MMX routines for tinting XImages written by Willem Monsuwe <willem@stack.nl> */ + +/* Function calling conventions: + * shade_ximage_xx(void *data, int bpl, int w, int h, int rm, int gm, int bm); + */ + +#define data 8(%ebp) +#define bpl 12(%ebp) +#define w 16(%ebp) +#define h 20(%ebp) +#define rm 24(%ebp) +#define gm 28(%ebp) +#define bm 32(%ebp) + +#ifdef UNDERSCORE_SYMBOLS /* need this to link with msvc */ +#define SHADE_XIMAGE_15 _shade_ximage_15_mmx +#define SHADE_XIMAGE_16 _shade_ximage_16_mmx +#define SHADE_XIMAGE_32 _shade_ximage_32_mmx +#define HAVE_MMX _have_mmx +#else +#define SHADE_XIMAGE_15 shade_ximage_15_mmx +#define SHADE_XIMAGE_16 shade_ximage_16_mmx +#define SHADE_XIMAGE_32 shade_ximage_32_mmx +#define HAVE_MMX have_mmx +#endif + +.globl SHADE_XIMAGE_15 +.globl SHADE_XIMAGE_16 +.globl SHADE_XIMAGE_32 +.globl HAVE_MMX + +.bss +.text +.align 8 + +#define ENTER \ + pushl %ebp ;\ + movl %esp, %ebp ;\ + pushl %ebx ;\ + pushl %ecx ;\ + pushl %edx ;\ + pushl %edi ;\ + pushl %esi ;\ + movl data, %esi ;\ + movl w, %ebx ;\ + movl h, %edx + +#define LEAVE \ +4: ;\ + emms ;\ + popl %esi ;\ + popl %edi ;\ + popl %edx ;\ + popl %ecx ;\ + popl %ebx ;\ + movl %ebp, %esp ;\ + popl %ebp ;\ + ret + + +SHADE_XIMAGE_15: + ENTER + + leal -6(%esi, %ebx, 2), %esi + negl %ebx + jz 5f + + /* Setup multipliers */ + movd rm, %mm5 + movd gm, %mm6 + movd bm, %mm7 + punpcklwd %mm5, %mm5 /* 00 00 00 00 rm rm rm rm */ + punpcklwd %mm6, %mm6 /* 00 00 00 00 gm gm gm gm */ + punpcklwd %mm7, %mm7 /* 00 00 00 00 bm bm bm bm */ + punpckldq %mm5, %mm5 /* rm rm rm rm rm rm rm rm */ + punpckldq %mm6, %mm6 /* gm gm gm gm gm gm gm gm */ + punpckldq %mm7, %mm7 /* bm bm bm bm bm bm bm bm */ + + cmpl $256, rm + jg shade_ximage_15_mmx_saturate + cmpl $256, gm + jg shade_ximage_15_mmx_saturate + cmpl $256, bm + jg shade_ximage_15_mmx_saturate + +1: movl %ebx, %ecx + addl $3, %ecx + jns 3f +2: + movq (%esi, %ecx, 2), %mm0 + + movq %mm0, %mm1 /* rg gb */ + movq %mm0, %mm2 /* rg gb */ + psrlw $5, %mm1 /* 0r rg */ + psrlw $10, %mm0 /* 00 0r */ + psllw $11, %mm2 /* b0 00 */ + psllw $11, %mm1 /* g0 00 */ + psllw $8, %mm0 /* 0r 00 */ + psrlw $3, %mm1 /* 0g 00 */ + psrlw $3, %mm2 /* 0b 00 */ + + pmulhw %mm5, %mm0 /* 00 0r */ + pmulhw %mm6, %mm1 /* 00 0g */ + pmulhw %mm7, %mm2 /* 00 0b */ + + psllw $10, %mm0 /* r0 00 */ + psllw $5, %mm1 /* 0g g0 */ + por %mm2, %mm0 /* r0 0b */ + por %mm1, %mm0 /* rg gb */ + + movq %mm0, (%esi, %ecx, 2) + + addl $4, %ecx + js 2b + jmp 4f +3: + movw (%esi, %ecx, 2), %ax + movd %eax, %mm0 + + movq %mm0, %mm1 /* rg gb */ + movq %mm0, %mm2 /* rg gb */ + psrlw $5, %mm1 /* 0r rg */ + psrlw $10, %mm0 /* 00 0r */ + psllw $11, %mm2 /* b0 00 */ + psllw $11, %mm1 /* g0 00 */ + psllw $8, %mm0 /* 0r 00 */ + psrlw $3, %mm1 /* 0g 00 */ + psrlw $3, %mm2 /* 0b 00 */ + + pmulhw %mm5, %mm0 /* 00 0r */ + pmulhw %mm6, %mm1 /* 00 0g */ + pmulhw %mm7, %mm2 /* 00 0b */ + + psllw $10, %mm0 /* r0 00 */ + psllw $5, %mm1 /* 0g g0 */ + por %mm2, %mm0 /* r0 0b */ + por %mm1, %mm0 /* rg gb */ + + movd %mm0, %eax + movw %ax, (%esi, %ecx, 2) + + incl %ecx +4: + cmpl $2, %ecx + jng 3b + + addl bpl, %esi + decl %edx + jnz 1b +5: + LEAVE + + +shade_ximage_15_mmx_saturate: + + pcmpeqw %mm3, %mm3 + psllw $5, %mm3 /* ff e0 ff e0 ff e0 ff e0 */ + +1: movl %ebx, %ecx + addl $3, %ecx + jns 3f +2: + movq (%esi, %ecx, 2), %mm0 + + movq %mm0, %mm1 /* rg gb */ + movq %mm0, %mm2 /* rg gb */ + psrlw $5, %mm1 /* 0r rg */ + psrlw $10, %mm0 /* 00 0r */ + psllw $11, %mm2 /* b0 00 */ + psllw $11, %mm1 /* g0 00 */ + psllw $8, %mm0 /* 0r 00 */ + psrlw $3, %mm1 /* 0g 00 */ + psrlw $3, %mm2 /* 0b 00 */ + + pmulhw %mm5, %mm0 /* xx xr */ + pmulhw %mm6, %mm1 /* xx xg */ + pmulhw %mm7, %mm2 /* xx xb */ + + /* Saturate upper */ + paddusw %mm3, %mm0 /* ff er */ + paddusw %mm3, %mm1 /* ff eg */ + paddusw %mm3, %mm2 /* ff eb */ + + psubw %mm3, %mm0 /* 00 0r */ + psubw %mm3, %mm1 /* 00 0g */ + psubw %mm3, %mm2 /* 00 0b */ + + psllw $10, %mm0 /* r0 00 */ + psllw $5, %mm1 /* 0g g0 */ + por %mm2, %mm0 /* r0 0b */ + por %mm1, %mm0 /* rg gb */ + + movq %mm0, (%esi, %ecx, 2) + + addl $4, %ecx + js 2b + jmp 4f +3: + movw (%esi, %ecx, 2), %ax + movd %eax, %mm0 + + movq %mm0, %mm1 /* rg gb */ + movq %mm0, %mm2 /* rg gb */ + psrlw $5, %mm1 /* 0r rg */ + psrlw $10, %mm0 /* 00 0r */ + psllw $11, %mm2 /* b0 00 */ + psllw $11, %mm1 /* g0 00 */ + psllw $8, %mm0 /* 0r 00 */ + psrlw $3, %mm1 /* 0g 00 */ + psrlw $3, %mm2 /* 0b 00 */ + + pmulhw %mm5, %mm0 /* xx xr */ + pmulhw %mm6, %mm1 /* xx xg */ + pmulhw %mm7, %mm2 /* xx xb */ + + /* Saturate upper */ + paddusw %mm3, %mm0 /* ff er */ + paddusw %mm3, %mm1 /* ff eg */ + paddusw %mm3, %mm2 /* ff eb */ + + psubw %mm3, %mm0 /* 00 0r */ + psubw %mm3, %mm1 /* 00 0g */ + psubw %mm3, %mm2 /* 00 0b */ + + psllw $10, %mm0 /* r0 00 */ + psllw $5, %mm1 /* 0g g0 */ + por %mm2, %mm0 /* r0 0b */ + por %mm1, %mm0 /* rg gb */ + + movd %mm0, %eax + movw %ax, (%esi, %ecx, 2) + + incl %ecx +4: + cmpl $2, %ecx + jng 3b + + addl bpl, %esi + decl %edx + jnz 1b +5: + LEAVE + + +SHADE_XIMAGE_16: + ENTER + + leal -6(%esi, %ebx, 2), %esi + negl %ebx + jz 5f + + /* Setup multipliers */ + movd rm, %mm5 + movd gm, %mm6 + movd bm, %mm7 + punpcklwd %mm5, %mm5 /* 00 00 00 00 rm rm rm rm */ + punpcklwd %mm6, %mm6 /* 00 00 00 00 gm gm gm gm */ + punpcklwd %mm7, %mm7 /* 00 00 00 00 bm bm bm bm */ + punpckldq %mm5, %mm5 /* rm rm rm rm rm rm rm rm */ + punpckldq %mm6, %mm6 /* gm gm gm gm gm gm gm gm */ + punpckldq %mm7, %mm7 /* bm bm bm bm bm bm bm bm */ + + cmpl $256, rm + jg shade_ximage_16_mmx_saturate + cmpl $256, gm + jg shade_ximage_16_mmx_saturate + cmpl $256, bm + jg shade_ximage_16_mmx_saturate + +1: movl %ebx, %ecx + addl $3, %ecx + jns 3f +2: + movq (%esi, %ecx, 2), %mm0 + + movq %mm0, %mm1 /* rg gb */ + movq %mm0, %mm2 /* rg gb */ + psrlw $5, %mm1 /* 0r rg */ + psrlw $11, %mm0 /* 00 0r */ + psllw $11, %mm2 /* b0 00 */ + psllw $10, %mm1 /* g0 00 */ + psllw $8, %mm0 /* 0r 00 */ + psrlw $2, %mm1 /* 0g 00 */ + psrlw $3, %mm2 /* 0b 00 */ + + pmulhw %mm5, %mm0 /* 00 0r */ + pmulhw %mm6, %mm1 /* 00 0g */ + pmulhw %mm7, %mm2 /* 00 0b */ + + psllw $11, %mm0 /* r0 00 */ + psllw $5, %mm1 /* 0g g0 */ + por %mm2, %mm0 /* r0 0b */ + por %mm1, %mm0 /* rg gb */ + + movq %mm0, (%esi, %ecx, 2) + + addl $4, %ecx + js 2b + jmp 4f +3: + movw (%esi, %ecx, 2), %ax + movd %eax, %mm0 + + movq %mm0, %mm1 /* rg gb */ + movq %mm0, %mm2 /* rg gb */ + psrlw $5, %mm1 /* 0r rg */ + psrlw $11, %mm0 /* 00 0r */ + psllw $11, %mm2 /* b0 00 */ + psllw $10, %mm1 /* g0 00 */ + psllw $8, %mm0 /* 0r 00 */ + psrlw $2, %mm1 /* 0g 00 */ + psrlw $3, %mm2 /* 0b 00 */ + + pmulhw %mm5, %mm0 /* 00 0r */ + pmulhw %mm6, %mm1 /* 00 0g */ + pmulhw %mm7, %mm2 /* 00 0b */ + + psllw $11, %mm0 /* r0 00 */ + psllw $5, %mm1 /* 0g g0 */ + por %mm2, %mm0 /* r0 0b */ + por %mm1, %mm0 /* rg gb */ + + movd %mm0, %eax + movw %ax, (%esi, %ecx, 2) + + incl %ecx +4: + cmpl $2, %ecx + jng 3b + + addl bpl, %esi + decl %edx + jnz 1b +5: + LEAVE + + +shade_ximage_16_mmx_saturate: + + pcmpeqw %mm3, %mm3 + movq %mm3, %mm4 + psllw $5, %mm3 /* ff e0 ff e0 ff e0 ff e0 */ + psllw $6, %mm4 /* ff c0 ff c0 ff c0 ff c0 */ + +1: movl %ebx, %ecx + addl $3, %ecx + jns 3f +2: + movq (%esi, %ecx, 2), %mm0 + + movq %mm0, %mm1 /* rg gb */ + movq %mm0, %mm2 /* rg gb */ + psrlw $5, %mm1 /* 0r rg */ + psrlw $11, %mm0 /* 00 0r */ + psllw $11, %mm2 /* b0 00 */ + psllw $10, %mm1 /* g0 00 */ + psllw $8, %mm0 /* 0r 00 */ + psrlw $2, %mm1 /* 0g 00 */ + psrlw $3, %mm2 /* 0b 00 */ + + pmulhw %mm5, %mm0 /* xx xr */ + pmulhw %mm6, %mm1 /* xx xg */ + pmulhw %mm7, %mm2 /* xx xb */ + + /* Saturate upper */ + paddusw %mm3, %mm0 /* ff er */ + paddusw %mm4, %mm1 /* ff cg */ + paddusw %mm3, %mm2 /* ff eb */ + + psubw %mm4, %mm1 /* 00 0g */ + psubw %mm3, %mm2 /* 00 0b */ + + psllw $11, %mm0 /* r0 00 */ + psllw $5, %mm1 /* 0g g0 */ + por %mm2, %mm0 /* r0 0b */ + por %mm1, %mm0 /* rg gb */ + + movq %mm0, (%esi, %ecx, 2) + + addl $4, %ecx + js 2b + jmp 4f +3: + movw (%esi, %ecx, 2), %ax + movd %eax, %mm0 + + movq %mm0, %mm1 /* rg gb */ + movq %mm0, %mm2 /* rg gb */ + psrlw $5, %mm1 /* 0r rg */ + psrlw $11, %mm0 /* 00 0r */ + psllw $11, %mm2 /* b0 00 */ + psllw $10, %mm1 /* g0 00 */ + psllw $8, %mm0 /* 0r 00 */ + psrlw $2, %mm1 /* 0g 00 */ + psrlw $3, %mm2 /* 0b 00 */ + + pmulhw %mm5, %mm0 /* xx xr */ + pmulhw %mm6, %mm1 /* xx xg */ + pmulhw %mm7, %mm2 /* xx xb */ + + /* Saturate upper */ + paddusw %mm3, %mm0 /* ff er */ + paddusw %mm4, %mm1 /* ff cg */ + paddusw %mm3, %mm2 /* ff eb */ + + psubw %mm4, %mm1 /* 00 0g */ + psubw %mm3, %mm2 /* 00 0b */ + + psllw $11, %mm0 /* r0 00 */ + psllw $5, %mm1 /* 0g g0 */ + por %mm2, %mm0 /* r0 0b */ + por %mm1, %mm0 /* rg gb */ + + movd %mm0, %eax + movw %ax, (%esi, %ecx, 2) + + incl %ecx +4: + cmpl $2, %ecx + jng 3b + + addl bpl, %esi + decl %edx + jnz 1b +5: + LEAVE + + +SHADE_XIMAGE_32: + ENTER + + leal (%esi, %ebx, 4), %esi + negl %ebx + jz 3f + + movd rm, %mm4 + movd gm, %mm5 + movd bm, %mm6 + psllq $32, %mm4 + psllq $16, %mm5 + por %mm6, %mm4 + por %mm5, %mm4 + + pcmpeqw %mm6, %mm6 + psllw $15, %mm6 /* 80 00 80 00 80 00 80 00 */ + movq %mm6, %mm5 + pmulhw %mm4, %mm5 /* Get correction factor */ +1: + movl %ebx, %ecx +2: + movd (%esi, %ecx, 4), %mm1 /* 00 rr gg bb */ + pxor %mm0, %mm0 + punpcklbw %mm1, %mm0 /* 00 00 rr 00 gg 00 bb 00 */ + pxor %mm6, %mm0 /* Flip sign */ + + pmulhw %mm4, %mm0 /* 00 00 xx rr xx gg xx bb */ + psubw %mm5, %mm0 /* Correct range */ + packuswb %mm0, %mm0 /* 00 rr gg bb 00 rr gg bb */ + + movd %mm0, (%esi, %ecx, 4) + + incl %ecx + jnz 2b + + addl bpl, %esi + decl %edx + jnz 1b +3: + LEAVE + + +HAVE_MMX: + push %ebx +/* Check if bit 21 in flags word is writeable */ + pushfl + popl %eax + movl %eax,%ebx + xorl $0x00200000, %eax + pushl %eax + popfl + pushfl + popl %eax + + cmpl %eax, %ebx + je 8f + +/* OK, we have CPUID */ + + movl $1, %eax + cpuid + + test $0x00800000, %edx + jz 8f + + movl $1, %eax /* success, have mmx */ + popl %ebx + ret + +8: + xorl %eax,%eax /* failed, no mmx */ + popl %ebx + ret + +#if defined(__GNUC__) && !defined(_WIN32) +.section .note.GNU-stack, "", @progbits +.previous +#endif diff --git a/etc/wyatt8740/src/fe-gtk/mmx_cmod.h b/etc/wyatt8740/src/fe-gtk/mmx_cmod.h new file mode 100644 index 0000000..52d0710 --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/mmx_cmod.h @@ -0,0 +1,4 @@ +void shade_ximage_15_mmx(void *data, int bpl, int w, int h, int rm, int gm, int bm); +void shade_ximage_16_mmx(void *data, int bpl, int w, int h, int rm, int gm, int bm); +void shade_ximage_32_mmx(void *data, int bpl, int w, int h, int rm, int gm, int bm); +int have_mmx (void); diff --git a/etc/wyatt8740/src/fe-gtk/notifygui.c b/etc/wyatt8740/src/fe-gtk/notifygui.c new file mode 100644 index 0000000..5acb683 --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/notifygui.c @@ -0,0 +1,442 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <fcntl.h> +#include <time.h> + +#include "fe-gtk.h" + +#include <gtk/gtkhbox.h> +#include <gtk/gtkstock.h> +#include <gtk/gtkhbbox.h> +#include <gtk/gtkscrolledwindow.h> + +#include <gtk/gtklabel.h> +#include <gtk/gtkliststore.h> +#include <gtk/gtkentry.h> +#include <gtk/gtkmessagedialog.h> +#include <gtk/gtktable.h> +#include <gtk/gtktreeview.h> +#include <gtk/gtktreeselection.h> +#include <gtk/gtkcellrenderertext.h> + +#include "../common/xchat.h" +#include "../common/notify.h" +#include "../common/cfgfiles.h" +#include "../common/fe.h" +#include "../common/server.h" +#include "../common/util.h" +#include "../common/userlist.h" +#include "gtkutil.h" +#include "maingui.h" +#include "palette.h" +#include "notifygui.h" + + +/* model for the notify treeview */ +enum +{ + USER_COLUMN, + STATUS_COLUMN, + SERVER_COLUMN, + SEEN_COLUMN, + COLOUR_COLUMN, + NPS_COLUMN, /* struct notify_per_server * */ + N_COLUMNS +}; + + +static GtkWidget *notify_window = 0; +static GtkWidget *notify_button_opendialog; +static GtkWidget *notify_button_remove; + + +static void +notify_closegui (void) +{ + notify_window = 0; +} + +/* Need this to be able to set the foreground colour property of a row + * from a GdkColor * in the model -Vince + */ +static void +notify_treecell_property_mapper (GtkTreeViewColumn *col, GtkCellRenderer *cell, + GtkTreeModel *model, GtkTreeIter *iter, + gpointer data) +{ + gchar *text; + GdkColor *colour; + int model_column = GPOINTER_TO_INT (data); + + gtk_tree_model_get (GTK_TREE_MODEL (model), iter, + COLOUR_COLUMN, &colour, + model_column, &text, -1); + g_object_set (G_OBJECT (cell), "text", text, NULL); + g_object_set (G_OBJECT (cell), "foreground-gdk", colour, NULL); + g_free (text); +} + +static void +notify_row_cb (GtkTreeSelection *sel, GtkTreeView *view) +{ + GtkTreeIter iter; + struct notify_per_server *servnot; + + if (gtkutil_treeview_get_selected (view, &iter, NPS_COLUMN, &servnot, -1)) + { + gtk_widget_set_sensitive (notify_button_opendialog, servnot ? servnot->ison : 0); + gtk_widget_set_sensitive (notify_button_remove, TRUE); + return; + } + + gtk_widget_set_sensitive (notify_button_opendialog, FALSE); + gtk_widget_set_sensitive (notify_button_remove, FALSE); +} + +static GtkWidget * +notify_treeview_new (GtkWidget *box) +{ + GtkListStore *store; + GtkWidget *view; + GtkTreeViewColumn *col; + int col_id; + + store = gtk_list_store_new (N_COLUMNS, + G_TYPE_STRING, + G_TYPE_STRING, + G_TYPE_STRING, + G_TYPE_STRING, + G_TYPE_POINTER, /* can't specify colour! */ + G_TYPE_POINTER + ); + g_return_val_if_fail (store != NULL, NULL); + + view = gtkutil_treeview_new (box, GTK_TREE_MODEL (store), + notify_treecell_property_mapper, + USER_COLUMN, _("Name"), + STATUS_COLUMN, _("Status"), + SERVER_COLUMN, _("Network"), + SEEN_COLUMN, _("Last Seen"), -1); + gtk_tree_view_column_set_expand (gtk_tree_view_get_column (GTK_TREE_VIEW (view), 0), TRUE); + + for (col_id=0; (col = gtk_tree_view_get_column (GTK_TREE_VIEW (view), col_id)); + col_id++) + gtk_tree_view_column_set_alignment (col, 0.5); + + g_signal_connect (G_OBJECT (gtk_tree_view_get_selection (GTK_TREE_VIEW (view))), + "changed", G_CALLBACK (notify_row_cb), view); + + gtk_widget_show (view); + return view; +} + +void +notify_gui_update (void) +{ + struct notify *notify; + struct notify_per_server *servnot; + GSList *list = notify_list; + GSList *slist; + gchar *name, *status, *server, *seen; + int online, servcount; + time_t lastseen; + char agobuf[128]; + + GtkListStore *store; + GtkTreeView *view; + GtkTreeIter iter; + gboolean valid; /* true if we don't need to append a new tree row */ + + if (!notify_window) + return; + + view = g_object_get_data (G_OBJECT (notify_window), "view"); + store = GTK_LIST_STORE (gtk_tree_view_get_model (view)); + valid = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter); + + while (list) + { + notify = (struct notify *) list->data; + name = notify->name; + status = _("Offline"); + server = ""; + + online = FALSE; + lastseen = 0; + /* First see if they're online on any servers */ + slist = notify->server_list; + while (slist) + { + servnot = (struct notify_per_server *) slist->data; + if (servnot->ison) + online = TRUE; + if (servnot->lastseen > lastseen) + lastseen = servnot->lastseen; + slist = slist->next; + } + + if (!online) /* Offline on all servers */ + { + if (!lastseen) + seen = _("Never"); + else + { + snprintf (agobuf, sizeof (agobuf), _("%d minutes ago"), (int)(time (0) - lastseen) / 60); + seen = agobuf; + } + if (!valid) /* create new tree row if required */ + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, 0, name, 1, status, + 2, server, 3, seen, 4, &colors[4], 5, NULL, -1); + if (valid) + valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter); + + } else + { + /* Online - add one line per server */ + servcount = 0; + slist = notify->server_list; + status = _("Online"); + while (slist) + { + servnot = (struct notify_per_server *) slist->data; + if (servnot->ison) + { + if (servcount > 0) + name = ""; + server = server_get_network (servnot->server, TRUE); + + snprintf (agobuf, sizeof (agobuf), _("%d minutes ago"), (int)(time (0) - lastseen) / 60); + seen = agobuf; + + if (!valid) /* create new tree row if required */ + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, 0, name, 1, status, + 2, server, 3, seen, 4, &colors[3], 5, servnot, -1); + if (valid) + valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter); + + servcount++; + } + slist = slist->next; + } + } + + list = list->next; + } + + while (valid) + { + GtkTreeIter old = iter; + /* get next iter now because removing invalidates old one */ + valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (store), + &iter); + gtk_list_store_remove (store, &old); + } +} + +static void +notify_opendialog_clicked (GtkWidget * igad) +{ + GtkTreeView *view; + GtkTreeIter iter; + struct notify_per_server *servnot; + + view = g_object_get_data (G_OBJECT (notify_window), "view"); + if (gtkutil_treeview_get_selected (view, &iter, NPS_COLUMN, &servnot, -1)) + { + if (servnot) + open_query (servnot->server, servnot->notify->name, TRUE); + } +} + +static void +notify_remove_clicked (GtkWidget * igad) +{ + GtkTreeView *view; + GtkTreeModel *model; + GtkTreeIter iter; + GtkTreePath *path = NULL; + gboolean found = FALSE; + char *name; + + view = g_object_get_data (G_OBJECT (notify_window), "view"); + if (gtkutil_treeview_get_selected (view, &iter, USER_COLUMN, &name, -1)) + { + model = gtk_tree_view_get_model (view); + found = (*name != 0); + while (!found) /* the real nick is some previous node */ + { + g_free (name); /* it's useless to us */ + if (!path) + path = gtk_tree_model_get_path (model, &iter); + if (!gtk_tree_path_prev (path)) /* arrgh! no previous node! */ + { + g_warning ("notify list state is invalid\n"); + break; + } + if (!gtk_tree_model_get_iter (model, &iter, path)) + break; + gtk_tree_model_get (model, &iter, USER_COLUMN, &name, -1); + found = (*name != 0); + } + if (path) + gtk_tree_path_free (path); + if (!found) + return; + + /* ok, now we can remove it */ + gtk_list_store_remove (GTK_LIST_STORE (model), &iter); + notify_deluser (name); + g_free (name); + } +} + +static void +notifygui_add_cb (GtkDialog *dialog, gint response, gpointer entry) +{ + char *networks; + char *text; + + text = GTK_ENTRY (entry)->text; + if (text[0] && response == GTK_RESPONSE_ACCEPT) + { + networks = GTK_ENTRY (g_object_get_data (G_OBJECT (entry), "net"))->text; + if (strcasecmp (networks, "ALL") == 0 || networks[0] == 0) + notify_adduser (text, NULL); + else + notify_adduser (text, networks); + } + + gtk_widget_destroy (GTK_WIDGET (dialog)); +} + +static void +notifygui_add_enter (GtkWidget *entry, GtkWidget *dialog) +{ + gtk_dialog_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT); +} + +void +fe_notify_ask (char *nick, char *networks) +{ + GtkWidget *dialog; + GtkWidget *entry; + GtkWidget *label; + GtkWidget *wid; + GtkWidget *table; + char *msg = _("Enter nickname to add:"); + char buf[256]; + + dialog = gtk_dialog_new_with_buttons (msg, NULL, 0, + GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, + GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, + NULL); + if (parent_window) + gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (parent_window)); + gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); + + table = gtk_table_new (2, 3, FALSE); + gtk_container_set_border_width (GTK_CONTAINER (table), 12); + gtk_table_set_row_spacings (GTK_TABLE (table), 3); + gtk_table_set_col_spacings (GTK_TABLE (table), 8); + gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), table); + + label = gtk_label_new (msg); + gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 0, 1); + + entry = gtk_entry_new (); + gtk_entry_set_text (GTK_ENTRY (entry), nick); + g_signal_connect (G_OBJECT (entry), "activate", + G_CALLBACK (notifygui_add_enter), dialog); + gtk_table_attach_defaults (GTK_TABLE (table), entry, 1, 2, 0, 1); + + g_signal_connect (G_OBJECT (dialog), "response", + G_CALLBACK (notifygui_add_cb), entry); + + label = gtk_label_new (_("Notify on these networks:")); + gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 2, 3); + + wid = gtk_entry_new (); + g_object_set_data (G_OBJECT (entry), "net", wid); + g_signal_connect (G_OBJECT (wid), "activate", + G_CALLBACK (notifygui_add_enter), dialog); + gtk_entry_set_text (GTK_ENTRY (wid), networks ? networks : "ALL"); + gtk_table_attach_defaults (GTK_TABLE (table), wid, 1, 2, 2, 3); + + label = gtk_label_new (NULL); + snprintf (buf, sizeof (buf), "<i><span size=\"smaller\">%s</span></i>", _("Comma separated list of networks is accepted.")); + gtk_label_set_markup (GTK_LABEL (label), buf); + gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 3, 4); + + gtk_widget_show_all (dialog); +} + +static void +notify_add_clicked (GtkWidget * igad) +{ + fe_notify_ask ("", NULL); +} + +void +notify_opengui (void) +{ + GtkWidget *vbox, *bbox; + GtkWidget *view; + + if (notify_window) + { + mg_bring_tofront (notify_window); + return; + } + + notify_window = + mg_create_generic_tab ("Notify", _("XChat: Friends List"), FALSE, TRUE, + notify_closegui, NULL, 400, 250, &vbox, 0); + + view = notify_treeview_new (vbox); + g_object_set_data (G_OBJECT (notify_window), "view", view); + + bbox = gtk_hbutton_box_new (); + gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_SPREAD); + gtk_container_set_border_width (GTK_CONTAINER (bbox), 5); + gtk_box_pack_end (GTK_BOX (vbox), bbox, 0, 0, 0); + gtk_widget_show (bbox); + + gtkutil_button (bbox, GTK_STOCK_NEW, 0, notify_add_clicked, 0, + _("Add...")); + + notify_button_remove = + gtkutil_button (bbox, GTK_STOCK_DELETE, 0, notify_remove_clicked, 0, + _("Remove")); + + notify_button_opendialog = + gtkutil_button (bbox, NULL, 0, notify_opendialog_clicked, 0, + _("Open Dialog")); + + gtk_widget_set_sensitive (notify_button_opendialog, FALSE); + gtk_widget_set_sensitive (notify_button_remove, FALSE); + + notify_gui_update (); + + gtk_widget_show (notify_window); +} diff --git a/etc/wyatt8740/src/fe-gtk/notifygui.h b/etc/wyatt8740/src/fe-gtk/notifygui.h new file mode 100644 index 0000000..360834d --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/notifygui.h @@ -0,0 +1,2 @@ +void notify_gui_update (void); +void notify_opengui (void); diff --git a/etc/wyatt8740/src/fe-gtk/palette.c b/etc/wyatt8740/src/fe-gtk/palette.c new file mode 100644 index 0000000..a0a1136 --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/palette.c @@ -0,0 +1,246 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> + +#include "fe-gtk.h" +#include "palette.h" + +#include "../common/xchat.h" +#include "../common/util.h" +#include "../common/cfgfiles.h" + + +GdkColor colors[] = { + /* colors for xtext */ + {0, 0xcccc, 0xcccc, 0xcccc}, /* 16 white */ + {0, 0x0000, 0x0000, 0x0000}, /* 17 black */ + {0, 0x35c2, 0x35c2, 0xb332}, /* 18 blue */ + {0, 0x2a3d, 0x8ccc, 0x2a3d}, /* 19 green */ + {0, 0xc3c3, 0x3b3b, 0x3b3b}, /* 20 red */ + {0, 0xc7c7, 0x3232, 0x3232}, /* 21 light red */ + {0, 0x8000, 0x2666, 0x7fff}, /* 22 purple */ + {0, 0x6666, 0x3636, 0x1f1f}, /* 23 orange */ + {0, 0xd999, 0xa6d3, 0x4147}, /* 24 yellow */ + {0, 0x3d70, 0xcccc, 0x3d70}, /* 25 green */ + {0, 0x199a, 0x5555, 0x5555}, /* 26 aqua */ + {0, 0x2eef, 0x8ccc, 0x74df}, /* 27 light aqua */ + {0, 0x451e, 0x451e, 0xe666}, /* 28 blue */ + {0, 0xb0b0, 0x3737, 0xb0b0}, /* 29 light purple */ + {0, 0x4c4c, 0x4c4c, 0x4c4c}, /* 30 grey */ + {0, 0x9595, 0x9595, 0x9595}, /* 31 light grey */ + + {0, 0xcccc, 0xcccc, 0xcccc}, /* 16 white */ + {0, 0x0000, 0x0000, 0x0000}, /* 17 black */ + {0, 0x35c2, 0x35c2, 0xb332}, /* 18 blue */ + {0, 0x2a3d, 0x8ccc, 0x2a3d}, /* 19 green */ + {0, 0xc3c3, 0x3b3b, 0x3b3b}, /* 20 red */ + {0, 0xc7c7, 0x3232, 0x3232}, /* 21 light red */ + {0, 0x8000, 0x2666, 0x7fff}, /* 22 purple */ + {0, 0x6666, 0x3636, 0x1f1f}, /* 23 orange */ + {0, 0xd999, 0xa6d3, 0x4147}, /* 24 yellow */ + {0, 0x3d70, 0xcccc, 0x3d70}, /* 25 green */ + {0, 0x199a, 0x5555, 0x5555}, /* 26 aqua */ + {0, 0x2eef, 0x8ccc, 0x74df}, /* 27 light aqua */ + {0, 0x451e, 0x451e, 0xe666}, /* 28 blue */ + {0, 0xb0b0, 0x3737, 0xb0b0}, /* 29 light purple */ + {0, 0x4c4c, 0x4c4c, 0x4c4c}, /* 30 grey */ + {0, 0x9595, 0x9595, 0x9595}, /* 31 light grey */ + + {0, 0xffff, 0xffff, 0xffff}, /* 32 marktext Fore (white) */ + {0, 0x3535, 0x6e6e, 0xc1c1}, /* 33 marktext Back (blue) */ + {0, 0x0000, 0x0000, 0x0000}, /* 34 foreground (black) */ + {0, 0xf0f0, 0xf0f0, 0xf0f0}, /* 35 background (white) */ + {0, 0xcccc, 0x1010, 0x1010}, /* 36 marker line (red) */ + + /* colors for GUI */ + {0, 0x9999, 0x0000, 0x0000}, /* 37 tab New Data (dark red) */ + {0, 0x0000, 0x0000, 0xffff}, /* 38 tab Nick Mentioned (blue) */ + {0, 0xffff, 0x0000, 0x0000}, /* 39 tab New Message (red) */ + {0, 0x9595, 0x9595, 0x9595}, /* 40 away user (grey) */ +}; +#define MAX_COL 40 + + +void +palette_alloc (GtkWidget * widget) +{ + int i; + static int done_alloc = FALSE; + GdkColormap *cmap; + + if (!done_alloc) /* don't do it again */ + { + done_alloc = TRUE; + cmap = gtk_widget_get_colormap (widget); + for (i = MAX_COL; i >= 0; i--) + gdk_colormap_alloc_color (cmap, &colors[i], FALSE, TRUE); + } +} + +/* maps XChat 2.0.x colors to current */ +static const int remap[] = +{ + 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, + 33, /* 16:marktextback */ + 32, /* 17:marktextfore */ + 34, /* 18: fg */ + 35, /* 19: bg */ + 37, /* 20: newdata */ + 38, /* 21: blue */ + 39, /* 22: newmsg */ + 40 /* 23: away */ +}; + +void +palette_load (void) +{ + int i, j, l, fh, res; + char prefname[256]; + struct stat st; + char *cfg; + int red, green, blue; + int upgrade = FALSE; + + fh = xchat_open_file ("colors.conf", O_RDONLY, 0, 0); + if (fh == -1) + { + fh = xchat_open_file ("palette.conf", O_RDONLY, 0, 0); + upgrade = TRUE; + } + + if (fh != -1) + { + fstat (fh, &st); + cfg = malloc (st.st_size + 1); + if (cfg) + { + cfg[0] = '\0'; + l = read (fh, cfg, st.st_size); + if (l >= 0) + cfg[l] = '\0'; + + if (!upgrade) + { + /* mIRC colors 0-31 are here */ + for (i = 0; i < 32; i++) + { + snprintf (prefname, sizeof prefname, "color_%d", i); + cfg_get_color (cfg, prefname, &red, &green, &blue); + colors[i].red = red; + colors[i].green = green; + colors[i].blue = blue; + } + + /* our special colors are mapped at 256+ */ + for (i = 256, j = 32; j < MAX_COL+1; i++, j++) + { + snprintf (prefname, sizeof prefname, "color_%d", i); + cfg_get_color (cfg, prefname, &red, &green, &blue); + colors[j].red = red; + colors[j].green = green; + colors[j].blue = blue; + } + + } else + { + /* loading 2.0.x palette.conf */ + for (i = 0; i < MAX_COL+1; i++) + { + snprintf (prefname, sizeof prefname, "color_%d_red", i); + red = cfg_get_int (cfg, prefname); + + snprintf (prefname, sizeof prefname, "color_%d_grn", i); + green = cfg_get_int (cfg, prefname); + + snprintf (prefname, sizeof prefname, "color_%d_blu", i); + blue = cfg_get_int_with_result (cfg, prefname, &res); + + if (res) + { + colors[remap[i]].red = red; + colors[remap[i]].green = green; + colors[remap[i]].blue = blue; + } + } + + /* copy 0-15 to 16-31 */ + for (i = 0; i < 16; i++) + { + colors[i+16].red = colors[i].red; + colors[i+16].green = colors[i].green; + colors[i+16].blue = colors[i].blue; + } + } + free (cfg); + } + close (fh); + } +} + +void +palette_save (void) +{ + int i, j, fh; + ssize_t nb; + char prefname[256]; + + fh = xchat_open_file ("colors.conf.bug147832", O_TRUNC | O_WRONLY | O_CREAT, 0600, XOF_DOMODE); + if (fh != -1) + { + nb = 1; + + /* mIRC colors 0-31 are here */ + for (i = 0; i < 32; i++) + { + snprintf (prefname, sizeof prefname, "color_%d", i); + if( nb > 0 ) nb = cfg_put_color (fh, colors[i].red, colors[i].green, colors[i].blue, prefname); + } + + /* our special colors are mapped at 256+ */ + for (i = 256, j = 32; j < MAX_COL+1; i++, j++) + { + snprintf (prefname, sizeof prefname, "color_%d", i); + if( nb > 0 ) nb = cfg_put_color (fh, colors[j].red, colors[j].green, colors[j].blue, prefname); + } + + if( nb <= 0 ) + { + fprintf( stderr, "palette_save: cfg_put_color failed\n" ); + close( fh ); + return; + } + + if( close (fh) != 0 ) + { + perror( "palette_save: close() failed\n" ); + return; + } + + if( xchat_rename_file( "colors.conf.bug147832", "colors.conf", XOF_DOMODE ) != 0 ) + { + perror( "palette_save: xchat_rename_file() failed" ); + return; + } + } +} diff --git a/etc/wyatt8740/src/fe-gtk/palette.h b/etc/wyatt8740/src/fe-gtk/palette.h new file mode 100644 index 0000000..c97693b --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/palette.h @@ -0,0 +1,15 @@ +extern GdkColor colors[]; + +#define COL_MARK_FG 32 +#define COL_MARK_BG 33 +#define COL_FG 34 +#define COL_BG 35 +#define COL_MARKER 36 +#define COL_NEW_DATA 37 +#define COL_HILIGHT 38 +#define COL_NEW_MSG 39 +#define COL_AWAY 40 + +void palette_alloc (GtkWidget * widget); +void palette_load (void); +void palette_save (void); diff --git a/etc/wyatt8740/src/fe-gtk/pixmaps.c b/etc/wyatt8740/src/fe-gtk/pixmaps.c new file mode 100644 index 0000000..3d85c3b --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/pixmaps.c @@ -0,0 +1,123 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> + +#include "fe-gtk.h" +#include "../common/xchat.h" +#include "../common/fe.h" + +#include <gdk-pixbuf/gdk-pixbuf.h> +#include <gdk-pixbuf/gdk-pixdata.h> +#include <gtk/gtkstock.h> + +#include "../pixmaps/inline_pngs.h" + +GdkPixbuf *pix_xchat; +GdkPixbuf *pix_book; + +GdkPixbuf *pix_purple; +GdkPixbuf *pix_red; +GdkPixbuf *pix_op; +GdkPixbuf *pix_hop; +GdkPixbuf *pix_voice; + +GdkPixbuf *pix_tray_msg; +GdkPixbuf *pix_tray_hilight; +GdkPixbuf *pix_tray_file; + +GdkPixbuf *pix_channel; +GdkPixbuf *pix_dialog; +GdkPixbuf *pix_server; +GdkPixbuf *pix_util; + + +static GdkPixmap * +pixmap_load_from_file_real (char *file) +{ + GdkPixbuf *img; + GdkPixmap *pixmap; + + img = gdk_pixbuf_new_from_file (file, 0); + if (!img) + return NULL; + gdk_pixbuf_render_pixmap_and_mask (img, &pixmap, NULL, 128); + gdk_pixbuf_unref (img); + + return pixmap; +} + +GdkPixmap * +pixmap_load_from_file (char *filename) +{ + char buf[256]; + GdkPixmap *pix; + + if (filename[0] == '\0') + return NULL; + + pix = pixmap_load_from_file_real (filename); + if (pix == NULL) + { + strcpy (buf, "Cannot open:\n\n"); + strncpy (buf + 14, filename, sizeof (buf) - 14); + buf[sizeof (buf) - 1] = 0; + fe_message (buf, FE_MSG_ERROR); + } + + return pix; +} + +#define LOADPIX(vv,pp,ff) \ + vv = gdk_pixbuf_new_from_file (XCHATSHAREDIR"/xchat/"ff, 0); \ + if (!vv) \ + vv = gdk_pixbuf_new_from_inline (-1, pp, FALSE, 0); + +#define LOADPIX_DISKONLY(vv,ff) \ + vv = gdk_pixbuf_new_from_file (XCHATSHAREDIR"/xchat/"ff, 0); + +#define EXT ".png" + +void +pixmaps_init (void) +{ + pix_book = gdk_pixbuf_new_from_inline (-1, bookpng, FALSE, 0); + + /* used in About window, tray icon and WindowManager icon. */ + LOADPIX (pix_xchat, xchatpng, "xchat"EXT); + + /* userlist icons, with inlined defaults */ + LOADPIX (pix_hop, hoppng, "hop"EXT); + LOADPIX (pix_purple, purplepng, "purple"EXT); + LOADPIX (pix_red, redpng, "red"EXT); + LOADPIX (pix_op, oppng, "op"EXT); + LOADPIX (pix_voice, voicepng, "voice"EXT); + + /* tray icons, with inlined defaults */ + LOADPIX (pix_tray_msg, traymsgpng, "message"EXT); + LOADPIX (pix_tray_hilight, trayhilightpng, "highlight"EXT); + LOADPIX (pix_tray_file, trayfilepng, "fileoffer"EXT); + + /* treeview icons, no defaults, load from disk only */ + LOADPIX_DISKONLY (pix_channel, "channel"EXT); + LOADPIX_DISKONLY (pix_dialog, "dialog"EXT); + LOADPIX_DISKONLY (pix_server, "server"EXT); + LOADPIX_DISKONLY (pix_util, "util"EXT); +} diff --git a/etc/wyatt8740/src/fe-gtk/pixmaps.h b/etc/wyatt8740/src/fe-gtk/pixmaps.h new file mode 100644 index 0000000..91b9696 --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/pixmaps.h @@ -0,0 +1,19 @@ +extern GdkPixbuf *pix_book; +extern GdkPixbuf *pix_hop; +extern GdkPixbuf *pix_purple; +extern GdkPixbuf *pix_red; +extern GdkPixbuf *pix_op; +extern GdkPixbuf *pix_voice; +extern GdkPixbuf *pix_xchat; + +extern GdkPixbuf *pix_tray_msg; +extern GdkPixbuf *pix_tray_hilight; +extern GdkPixbuf *pix_tray_file; + +extern GdkPixbuf *pix_channel; +extern GdkPixbuf *pix_dialog; +extern GdkPixbuf *pix_server; +extern GdkPixbuf *pix_util; + +extern GdkPixmap *pixmap_load_from_file (char *file); +extern void pixmaps_init (void); diff --git a/etc/wyatt8740/src/fe-gtk/plugin-tray.c b/etc/wyatt8740/src/fe-gtk/plugin-tray.c new file mode 100644 index 0000000..2b3fea5 --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/plugin-tray.c @@ -0,0 +1,848 @@ +/* Copyright (C) 2006-2007 Peter Zelezny. */ + +#include <string.h> +#include <unistd.h> +#include "../common/xchat-plugin.h" +#include "../common/xchat.h" +#include "../common/xchatc.h" +#include "../common/inbound.h" +#include "../common/server.h" +#include "../common/fe.h" +#include "../common/util.h" +#include "fe-gtk.h" +#include "pixmaps.h" +#include "maingui.h" +#include "menu.h" +#include <gtk/gtk.h> + +#define LIBNOTIFY + +typedef enum /* current icon status */ +{ + TS_NONE, + TS_MESSAGE, + TS_HIGHLIGHT, + TS_FILEOFFER, + TS_CUSTOM /* plugin */ +} TrayStatus; + +typedef enum +{ + WS_FOCUSED, + WS_NORMAL, + WS_HIDDEN +} WinStatus; + +typedef GdkPixbuf* TrayIcon; +#define tray_icon_from_file(f) gdk_pixbuf_new_from_file(f,NULL) +#define tray_icon_free(i) g_object_unref(i) + +#define ICON_NORMAL pix_xchat +#define ICON_MSG pix_tray_msg +#define ICON_HILIGHT pix_tray_hilight +#define ICON_FILE pix_tray_file +#define TIMEOUT 500 + +static GtkStatusIcon *sticon; +static gint flash_tag; +static TrayStatus tray_status; +static xchat_plugin *ph; + +static TrayIcon custom_icon1; +static TrayIcon custom_icon2; + +static int tray_priv_count = 0; +static int tray_pub_count = 0; +static int tray_hilight_count = 0; +static int tray_file_count = 0; + + +void tray_apply_setup (void); + + +static WinStatus +tray_get_window_status (void) +{ + const char *st; + + st = xchat_get_info (ph, "win_status"); + + if (!st) + return WS_HIDDEN; + + if (!strcmp (st, "active")) + return WS_FOCUSED; + + if (!strcmp (st, "hidden")) + return WS_HIDDEN; + + return WS_NORMAL; +} + +static int +tray_count_channels (void) +{ + int cons = 0; + GSList *list; + session *sess; + + for (list = sess_list; list; list = list->next) + { + sess = list->data; + if (sess->server->connected && sess->channel[0] && + sess->type == SESS_CHANNEL) + cons++; + } + return cons; +} + +static int +tray_count_networks (void) +{ + int cons = 0; + GSList *list; + + for (list = serv_list; list; list = list->next) + { + if (((server *)list->data)->connected) + cons++; + } + return cons; +} + +void +fe_tray_set_tooltip (const char *text) +{ + if (sticon) + gtk_status_icon_set_tooltip (sticon, text); +} + +#ifdef LIBNOTIFY + +/* dynamic access to libnotify.so */ + +static void *nn_mod = NULL; +/* prototypes */ +static gboolean (*nn_init) (char *); +static void (*nn_uninit) (void); +/* recent versions of libnotify don't take the fourth GtkWidget argument, but passing an + * extra NULL argument will be fine */ +static void *(*nn_new) (const gchar *summary, const gchar *message, const gchar *icon, gpointer dummy); +static gboolean (*nn_show) (void *noti, GError **error); +static void (*nn_set_timeout) (void *noti, gint timeout); + +static void +libnotify_cleanup (void) +{ + if (nn_mod) + { + nn_uninit (); + g_module_close (nn_mod); + nn_mod = NULL; + } +} + +static gboolean +libnotify_notify_new (const char *title, const char *text, GtkStatusIcon *icon) +{ + void *noti; + + if (!nn_mod) + { + nn_mod = g_module_open ("libnotify.so.4", G_MODULE_BIND_LAZY); + if (!nn_mod) + return FALSE; + + if (!g_module_symbol (nn_mod, "notify_init", (gpointer)&nn_init)) + goto bad; + if (!g_module_symbol (nn_mod, "notify_uninit", (gpointer)&nn_uninit)) + goto bad; + if (!g_module_symbol (nn_mod, "notify_notification_new", (gpointer)&nn_new)) + goto bad; + if (!g_module_symbol (nn_mod, "notify_notification_show", (gpointer)&nn_show)) + goto bad; + if (!g_module_symbol (nn_mod, "notify_notification_set_timeout", (gpointer)&nn_set_timeout)) + goto bad; + if (!nn_init (PACKAGE_NAME)) + goto bad; + } + + text = strip_color (text, -1, STRIP_ALL|STRIP_ESCMARKUP); + title = strip_color (title, -1, STRIP_ALL); + noti = nn_new (title, text, XCHATSHAREDIR"/pixmaps/xchat.png", NULL); + g_free ((char *)title); + g_free ((char *)text); + + nn_set_timeout (noti, prefs.input_balloon_time*1000); + nn_show (noti, NULL); + g_object_unref (G_OBJECT (noti)); + + return TRUE; + +bad: + g_module_close (nn_mod); + nn_mod = NULL; + return FALSE; +} + +#endif + +void +fe_tray_set_balloon (const char *title, const char *text) +{ +#ifndef WIN32 + const char *argv[8]; + const char *path; + char time[16]; + WinStatus ws; + + /* no balloons if the window is focused */ + ws = tray_get_window_status (); + if (ws == WS_FOCUSED) + return; + + /* bit 1 of flags means "no balloons unless hidden/iconified" */ + if (ws != WS_HIDDEN && (prefs.gui_tray_flags & 2)) + return; + + /* FIXME: this should close the current balloon */ + if (!text) + return; + +#ifdef LIBNOTIFY + /* try it via libnotify.so */ + if (libnotify_notify_new (title, text, sticon)) + return; /* success */ +#endif + + /* try it the crude way */ + path = g_find_program_in_path ("notify-send"); + if (path) + { + sprintf(time, "%d000",prefs.input_balloon_time); + argv[0] = path; + argv[1] = "-i"; + argv[2] = "gtk-dialog-info"; + if (access (XCHATSHAREDIR"/pixmaps/xchat.png", R_OK) == 0) + argv[2] = XCHATSHAREDIR"/pixmaps/xchat.png"; + argv[3] = "-t"; + argv[4] = time; + argv[5] = title; + text = strip_color (text, -1, STRIP_ALL|STRIP_ESCMARKUP); + argv[6] = text; + argv[7] = NULL; + xchat_execv (argv); + g_free ((char *)path); + g_free ((char *)text); + } + else + { + /* show this error only once */ + static unsigned char said_it = FALSE; + if (!said_it) + { + said_it = TRUE; + fe_message (_("Cannot find 'notify-send' to open balloon alerts.\nPlease install libnotify."), FE_MSG_ERROR); + } + } +#endif +} + +static void +tray_set_balloonf (const char *text, const char *format, ...) +{ + va_list args; + char *buf; + + va_start (args, format); + buf = g_strdup_vprintf (format, args); + va_end (args); + + fe_tray_set_balloon (buf, text); + g_free (buf); +} + +static void +tray_set_tipf (const char *format, ...) +{ + va_list args; + char *buf; + + va_start (args, format); + buf = g_strdup_vprintf (format, args); + va_end (args); + + fe_tray_set_tooltip (buf); + g_free (buf); +} + +static void +tray_stop_flash (void) +{ + int nets, chans; + + if (flash_tag) + { + g_source_remove (flash_tag); + flash_tag = 0; + } + + if (sticon) + { + gtk_status_icon_set_from_pixbuf (sticon, ICON_NORMAL); + nets = tray_count_networks (); + chans = tray_count_channels (); + if (nets) + tray_set_tipf (_("XChat: Connected to %u networks and %u channels"), + nets, chans); + else + tray_set_tipf ("XChat: %s", _("Not connected.")); + } + + if (custom_icon1) + { + tray_icon_free (custom_icon1); + custom_icon1 = NULL; + } + + if (custom_icon2) + { + tray_icon_free (custom_icon2); + custom_icon2 = NULL; + } + + tray_status = TS_NONE; +} + +static void +tray_reset_counts (void) +{ + tray_priv_count = 0; + tray_pub_count = 0; + tray_hilight_count = 0; + tray_file_count = 0; +} + +static int +tray_timeout_cb (TrayIcon icon) +{ + if (custom_icon1) + { + if (gtk_status_icon_get_pixbuf (sticon) == custom_icon1) + { + if (custom_icon2) + gtk_status_icon_set_from_pixbuf (sticon, custom_icon2); + else + gtk_status_icon_set_from_pixbuf (sticon, ICON_NORMAL); + } + else + { + gtk_status_icon_set_from_pixbuf (sticon, custom_icon1); + } + } + else + { + if (gtk_status_icon_get_pixbuf (sticon) == ICON_NORMAL) + gtk_status_icon_set_from_pixbuf (sticon, icon); + else + gtk_status_icon_set_from_pixbuf (sticon, ICON_NORMAL); + } + return 1; +} + +static void +tray_set_flash (TrayIcon icon) +{ + if (!sticon) + return; + + /* already flashing the same icon */ + if (flash_tag && gtk_status_icon_get_pixbuf (sticon) == icon) + return; + + /* no flashing if window is focused */ + if (tray_get_window_status () == WS_FOCUSED) + return; + + tray_stop_flash (); + + gtk_status_icon_set_from_pixbuf (sticon, icon); + flash_tag = g_timeout_add (TIMEOUT, (GSourceFunc) tray_timeout_cb, icon); +} + +void +fe_tray_set_flash (const char *filename1, const char *filename2, int tout) +{ + tray_apply_setup (); + if (!sticon) + return; + + tray_stop_flash (); + + if (tout == -1) + tout = TIMEOUT; + + custom_icon1 = tray_icon_from_file (filename1); + if (filename2) + custom_icon2 = tray_icon_from_file (filename2); + + gtk_status_icon_set_from_pixbuf (sticon, custom_icon1); + flash_tag = g_timeout_add (tout, (GSourceFunc) tray_timeout_cb, NULL); + tray_status = TS_CUSTOM; +} + +void +fe_tray_set_icon (feicon icon) +{ + tray_apply_setup (); + if (!sticon) + return; + + tray_stop_flash (); + + switch (icon) + { + case FE_ICON_NORMAL: + break; + case FE_ICON_MESSAGE: + tray_set_flash (ICON_MSG); + break; + case FE_ICON_HIGHLIGHT: + case FE_ICON_PRIVMSG: + tray_set_flash (ICON_HILIGHT); + break; + case FE_ICON_FILEOFFER: + tray_set_flash (ICON_FILE); + } +} + +void +fe_tray_set_file (const char *filename) +{ + tray_apply_setup (); + if (!sticon) + return; + + tray_stop_flash (); + + if (filename) + { + custom_icon1 = tray_icon_from_file (filename); + gtk_status_icon_set_from_pixbuf (sticon, custom_icon1); + tray_status = TS_CUSTOM; + } +} + +gboolean +tray_toggle_visibility (gboolean force_hide) +{ + static int x, y; + static GdkScreen *screen; + GtkWindow *win; + + if (!sticon) + return FALSE; + + /* ph may have an invalid context now */ + xchat_set_context (ph, xchat_find_context (ph, NULL, NULL)); + + win = (GtkWindow *)xchat_get_info (ph, "win_ptr"); + + tray_stop_flash (); + tray_reset_counts (); + + if (!win) + return FALSE; + +#if GTK_CHECK_VERSION(2,20,0) + if (force_hide || gtk_widget_get_visible (win)) +#else + if (force_hide || GTK_WIDGET_VISIBLE (win)) +#endif + { + gtk_window_get_position (win, &x, &y); + screen = gtk_window_get_screen (win); + gtk_widget_hide (GTK_WIDGET (win)); + } + else + { + gtk_window_set_screen (win, screen); + gtk_window_move (win, x, y); + gtk_widget_show (GTK_WIDGET (win)); + gtk_window_present (win); + } + + return TRUE; +} + +static void +tray_menu_restore_cb (GtkWidget *item, gpointer userdata) +{ + tray_toggle_visibility (FALSE); +} + +static void +tray_menu_quit_cb (GtkWidget *item, gpointer userdata) +{ + mg_open_quit_dialog (FALSE); +} + +/* returns 0-mixed 1-away 2-back */ + +static int +tray_find_away_status (void) +{ + GSList *list; + server *serv; + int away = 0; + int back = 0; + + for (list = serv_list; list; list = list->next) + { + serv = list->data; + + if (serv->is_away || serv->reconnect_away) + away++; + else + back++; + } + + if (away && back) + return 0; + + if (away) + return 1; + + return 2; +} + +static void +tray_foreach_server (GtkWidget *item, char *cmd) +{ + GSList *list; + server *serv; + + for (list = serv_list; list; list = list->next) + { + serv = list->data; + if (serv->connected) + handle_command (serv->server_session, cmd, FALSE); + } +} + +static GtkWidget * +tray_make_item (GtkWidget *menu, char *label, void *callback, void *userdata) +{ + GtkWidget *item; + + if (label) + item = gtk_menu_item_new_with_mnemonic (label); + else + item = gtk_menu_item_new (); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (callback), userdata); + gtk_widget_show (item); + + return item; +} + +static void +tray_toggle_cb (GtkCheckMenuItem *item, unsigned int *setting) +{ + *setting = item->active; +} + +static void +blink_item (unsigned int *setting, GtkWidget *menu, char *label) +{ + menu_toggle_item (label, menu, tray_toggle_cb, setting, *setting); +} + +static void +tray_menu_destroy (GtkWidget *menu, gpointer userdata) +{ + gtk_widget_destroy (menu); + g_object_unref (menu); +} + +static void +tray_menu_cb (GtkWidget *widget, guint button, guint time, gpointer userdata) +{ + GtkWidget *menu; + GtkWidget *submenu; + GtkWidget *item; + int away_status; + + /* ph may have an invalid context now */ + xchat_set_context (ph, xchat_find_context (ph, NULL, NULL)); + + menu = gtk_menu_new (); + /*gtk_menu_set_screen (GTK_MENU (menu), gtk_widget_get_screen (widget));*/ + + if (tray_get_window_status () == WS_HIDDEN) + tray_make_item (menu, _("_Restore"), tray_menu_restore_cb, NULL); + else + tray_make_item (menu, _("_Hide"), tray_menu_restore_cb, NULL); + tray_make_item (menu, NULL, tray_menu_quit_cb, NULL); + + submenu = mg_submenu (menu, _("_Blink on")); + blink_item (&prefs.input_tray_chans, submenu, _("Channel Message")); + blink_item (&prefs.input_tray_priv, submenu, _("Private Message")); + blink_item (&prefs.input_tray_hilight, submenu, _("Highlighted Message")); + /*blink_item (BIT_FILEOFFER, submenu, _("File Offer"));*/ + + submenu = mg_submenu (menu, _("_Change status")); + away_status = tray_find_away_status (); + item = tray_make_item (submenu, _("_Away"), tray_foreach_server, "away"); + if (away_status == 1) + gtk_widget_set_sensitive (item, FALSE); + item = tray_make_item (submenu, _("_Back"), tray_foreach_server, "back"); + if (away_status == 2) + gtk_widget_set_sensitive (item, FALSE); + + tray_make_item (menu, NULL, tray_menu_quit_cb, NULL); + mg_create_icon_item (_("_Quit"), GTK_STOCK_QUIT, menu, tray_menu_quit_cb, NULL); + + menu_add_plugin_items (menu, "\x5$TRAY", NULL); + + g_object_ref (menu); + g_object_ref_sink (menu); + g_object_unref (menu); + g_signal_connect (G_OBJECT (menu), "selection-done", + G_CALLBACK (tray_menu_destroy), NULL); + + gtk_menu_popup (GTK_MENU (menu), NULL, NULL, gtk_status_icon_position_menu, + userdata, button, time); +} + +static void +tray_init (void) +{ + flash_tag = 0; + tray_status = TS_NONE; + custom_icon1 = NULL; + custom_icon2 = NULL; + + sticon = gtk_status_icon_new_from_pixbuf (ICON_NORMAL); + if (!sticon) + return; + g_signal_connect (G_OBJECT (sticon), "popup-menu", + G_CALLBACK (tray_menu_cb), sticon); + g_signal_connect (G_OBJECT (sticon), "activate", + G_CALLBACK (tray_menu_restore_cb), NULL); +} + +static int +tray_hilight_cb (char *word[], void *userdata) +{ + /*if (tray_status == TS_HIGHLIGHT) + return XCHAT_EAT_NONE;*/ + + if (prefs.input_tray_hilight) + { + tray_set_flash (ICON_HILIGHT); + + /* FIXME: hides any previous private messages */ + tray_hilight_count++; + if (tray_hilight_count == 1) + tray_set_tipf (_("XChat: Highlighted message from: %s (%s)"), + word[1], xchat_get_info (ph, "channel")); + else + tray_set_tipf (_("XChat: %u highlighted messages, latest from: %s (%s)"), + tray_hilight_count, word[1], xchat_get_info (ph, "channel")); + } + + if (prefs.input_balloon_hilight) + tray_set_balloonf (word[2], _("XChat: Highlighted message from: %s (%s)"), + word[1], xchat_get_info (ph, "channel")); + + return XCHAT_EAT_NONE; +} + +static int +tray_message_cb (char *word[], void *userdata) +{ + if (/*tray_status == TS_MESSAGE ||*/ tray_status == TS_HIGHLIGHT) + return XCHAT_EAT_NONE; + + if (prefs.input_tray_chans) + { + tray_set_flash (ICON_MSG); + + tray_pub_count++; + if (tray_pub_count == 1) + tray_set_tipf (_("XChat: New public message from: %s (%s)"), + word[1], xchat_get_info (ph, "channel")); + else + tray_set_tipf (_("XChat: %u new public messages."), tray_pub_count); + } + + if (prefs.input_balloon_chans) + tray_set_balloonf (word[2], _("XChat: New public message from: %s (%s)"), + word[1], xchat_get_info (ph, "channel")); + + return XCHAT_EAT_NONE; +} + +static void +tray_priv (char *from, char *text) +{ + const char *network; + + if (alert_match_word (from, prefs.irc_no_hilight)) + return; + + tray_set_flash (ICON_HILIGHT); + + network = xchat_get_info (ph, "network"); + if (!network) + network = xchat_get_info (ph, "server"); + + tray_priv_count++; + if (tray_priv_count == 1) + tray_set_tipf (_("XChat: Private message from: %s (%s)"), + from, network); + else + tray_set_tipf (_("XChat: %u private messages, latest from: %s (%s)"), + tray_priv_count, from, network); + + if (prefs.input_balloon_priv) + tray_set_balloonf (text, _("XChat: Private message from: %s (%s)"), + from, network); +} + +static int +tray_priv_cb (char *word[], void *userdata) +{ + /*if (tray_status == TS_HIGHLIGHT) + return XCHAT_EAT_NONE;*/ + + if (prefs.input_tray_priv) + tray_priv (word[1], word[2]); + + return XCHAT_EAT_NONE; +} + +static int +tray_invited_cb (char *word[], void *userdata) +{ + /*if (tray_status == TS_HIGHLIGHT) + return XCHAT_EAT_NONE;*/ + + if (prefs.input_tray_priv) + tray_priv (word[2], "Invited"); + + return XCHAT_EAT_NONE; +} + +static int +tray_dcc_cb (char *word[], void *userdata) +{ + const char *network; + +/* if (tray_status == TS_FILEOFFER) + return XCHAT_EAT_NONE;*/ + + network = xchat_get_info (ph, "network"); + if (!network) + network = xchat_get_info (ph, "server"); + + if (prefs.input_tray_priv) + { + tray_set_flash (ICON_FILE); + + tray_file_count++; + if (tray_file_count == 1) + tray_set_tipf (_("XChat: File offer from: %s (%s)"), + word[1], network); + else + tray_set_tipf (_("XChat: %u file offers, latest from: %s (%s)"), + tray_file_count, word[1], network); + } + + if (prefs.input_balloon_priv) + tray_set_balloonf ("", _("XChat: File offer from: %s (%s)"), + word[1], network); + + return XCHAT_EAT_NONE; +} + +static int +tray_focus_cb (char *word[], void *userdata) +{ + tray_stop_flash (); + tray_reset_counts (); + return XCHAT_EAT_NONE; +} + +static void +tray_cleanup (void) +{ + tray_stop_flash (); + + if (sticon) + { + g_object_unref ((GObject *)sticon); + sticon = NULL; + } +} + +void +tray_apply_setup (void) +{ + if (sticon) + { + if (!prefs.gui_tray) + tray_cleanup (); + } + else + { + if (prefs.gui_tray) + tray_init (); + } +} + +int +tray_plugin_init (xchat_plugin *plugin_handle, char **plugin_name, + char **plugin_desc, char **plugin_version, char *arg) +{ + /* we need to save this for use with any xchat_* functions */ + ph = plugin_handle; + + *plugin_name = ""; + *plugin_desc = ""; + *plugin_version = ""; + + xchat_hook_print (ph, "Channel Msg Hilight", -1, tray_hilight_cb, NULL); + xchat_hook_print (ph, "Channel Action Hilight", -1, tray_hilight_cb, NULL); + + xchat_hook_print (ph, "Channel Message", -1, tray_message_cb, NULL); + xchat_hook_print (ph, "Channel Action", -1, tray_message_cb, NULL); + xchat_hook_print (ph, "Channel Notice", -1, tray_message_cb, NULL); + + xchat_hook_print (ph, "Private Message", -1, tray_priv_cb, NULL); + xchat_hook_print (ph, "Private Message to Dialog", -1, tray_priv_cb, NULL); + xchat_hook_print (ph, "Notice", -1, tray_priv_cb, NULL); + xchat_hook_print (ph, "Invited", -1, tray_invited_cb, NULL); + + xchat_hook_print (ph, "DCC Offer", -1, tray_dcc_cb, NULL); + + xchat_hook_print (ph, "Focus Window", -1, tray_focus_cb, NULL); + + if (prefs.gui_tray) + tray_init (); + + return 1; /* return 1 for success */ +} + +int +tray_plugin_deinit (xchat_plugin *plugin_handle) +{ +#ifdef WIN32 + tray_cleanup (); +#elif defined(LIBNOTIFY) + libnotify_cleanup (); +#endif + return 1; +} diff --git a/etc/wyatt8740/src/fe-gtk/plugin-tray.h b/etc/wyatt8740/src/fe-gtk/plugin-tray.h new file mode 100644 index 0000000..d54be5a --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/plugin-tray.h @@ -0,0 +1,4 @@ +int tray_plugin_init (void *, char **, char **, char **, char *); +int tray_plugin_deinit (void *); +gboolean tray_toggle_visibility (gboolean force_hide); +void tray_apply_setup (void); diff --git a/etc/wyatt8740/src/fe-gtk/plugingui.c b/etc/wyatt8740/src/fe-gtk/plugingui.c new file mode 100644 index 0000000..de59e64 --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/plugingui.c @@ -0,0 +1,239 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <string.h> +#include <stdio.h> +#include <stdlib.h> + +#include "fe-gtk.h" + +#include <gtk/gtkdialog.h> +#include <gtk/gtkstock.h> +#include <gtk/gtkbox.h> +#include <gtk/gtkscrolledwindow.h> + +#include <gtk/gtkliststore.h> +#include <gtk/gtktreeview.h> +#include <gtk/gtktreeselection.h> +#include <gtk/gtkcellrenderertext.h> + +#include "../common/xchat.h" +#define PLUGIN_C +typedef struct session xchat_context; +#include "../common/xchat-plugin.h" +#include "../common/plugin.h" +#include "../common/util.h" +#include "../common/outbound.h" +#include "../common/fe.h" +#include "../common/xchatc.h" +#include "gtkutil.h" + +/* model for the plugin treeview */ +enum +{ + NAME_COLUMN, + VERSION_COLUMN, + FILE_COLUMN, + DESC_COLUMN, + N_COLUMNS +}; + +static GtkWidget *plugin_window = NULL; + + +static GtkWidget * +plugingui_treeview_new (GtkWidget *box) +{ + GtkListStore *store; + GtkWidget *view; + GtkTreeViewColumn *col; + int col_id; + + store = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING); + g_return_val_if_fail (store != NULL, NULL); + view = gtkutil_treeview_new (box, GTK_TREE_MODEL (store), NULL, + NAME_COLUMN, _("Name"), + VERSION_COLUMN, _("Version"), + FILE_COLUMN, _("File"), + DESC_COLUMN, _("Description"), -1); + gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (view), TRUE); + for (col_id=0; (col = gtk_tree_view_get_column (GTK_TREE_VIEW (view), col_id)); + col_id++) + gtk_tree_view_column_set_alignment (col, 0.5); + + gtk_widget_show (view); + return view; +} + +static void +plugingui_close_button (GtkWidget * wid, gpointer a) +{ + gtk_widget_destroy (plugin_window); +} + +static void +plugingui_close (GtkWidget * wid, gpointer a) +{ + plugin_window = NULL; +} + +extern GSList *plugin_list; + +void +fe_pluginlist_update (void) +{ + xchat_plugin *pl; + GSList *list; + GtkTreeView *view; + GtkListStore *store; + GtkTreeIter iter; + + if (!plugin_window) + return; + + view = g_object_get_data (G_OBJECT (plugin_window), "view"); + store = GTK_LIST_STORE (gtk_tree_view_get_model (view)); + gtk_list_store_clear (store); + + list = plugin_list; + while (list) + { + pl = list->data; + if (pl->version[0] != 0) + { + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, NAME_COLUMN, pl->name, + VERSION_COLUMN, pl->version, + FILE_COLUMN, file_part (pl->filename), + DESC_COLUMN, pl->desc, -1); + } + list = list->next; + } +} + +static void +plugingui_load_cb (session *sess, char *file) +{ + if (file) + { + char *buf = malloc (strlen (file) + 9); + + if (strchr (file, ' ')) + sprintf (buf, "LOAD \"%s\"", file); + else + sprintf (buf, "LOAD %s", file); + handle_command (sess, buf, FALSE); + free (buf); + } +} + +void +plugingui_load (void) +{ + gtkutil_file_req (_("Select a Plugin or Script to load"), plugingui_load_cb, + current_sess, NULL, FRF_ADDFOLDER); +} + +static void +plugingui_loadbutton_cb (GtkWidget * wid, gpointer unused) +{ + plugingui_load (); +} + +static void +plugingui_unload (GtkWidget * wid, gpointer unused) +{ + int len; + char *modname, *file, *buf; + GtkTreeView *view; + GtkTreeIter iter; + + view = g_object_get_data (G_OBJECT (plugin_window), "view"); + if (!gtkutil_treeview_get_selected (view, &iter, NAME_COLUMN, &modname, + FILE_COLUMN, &file, -1)) + return; + + len = strlen (file); +#ifdef WIN32 + if (len > 4 && strcasecmp (file + len - 4, ".dll") == 0) +#else +#if defined(__hpux) + if (len > 3 && strcasecmp (file + len - 3, ".sl") == 0) +#else + if (len > 3 && strcasecmp (file + len - 3, ".so") == 0) +#endif +#endif + { + if (plugin_kill (modname, FALSE) == 2) + fe_message (_("That plugin is refusing to unload.\n"), FE_MSG_ERROR); + } else + { + /* let python.so or perl.so handle it */ + buf = malloc (strlen (file) + 10); + if (strchr (file, ' ')) + sprintf (buf, "UNLOAD \"%s\"", file); + else + sprintf (buf, "UNLOAD %s", file); + handle_command (current_sess, buf, FALSE); + free (buf); + } + + g_free (modname); + g_free (file); +} + +void +plugingui_open (void) +{ + GtkWidget *view; + GtkWidget *vbox, *action_area; + + if (plugin_window) + { + gtk_window_present (GTK_WINDOW (plugin_window)); + return; + } + + plugin_window = gtk_dialog_new (); + g_signal_connect (G_OBJECT (plugin_window), "destroy", + G_CALLBACK (plugingui_close), 0); + gtk_window_set_default_size (GTK_WINDOW (plugin_window), 500, 250); + vbox = GTK_DIALOG (plugin_window)->vbox; + action_area = GTK_DIALOG (plugin_window)->action_area; + gtk_container_set_border_width (GTK_CONTAINER (vbox), 4); + gtk_window_set_position (GTK_WINDOW (plugin_window), GTK_WIN_POS_CENTER); + gtk_window_set_title (GTK_WINDOW (plugin_window), _("XChat: Plugins and Scripts")); + + view = plugingui_treeview_new (vbox); + g_object_set_data (G_OBJECT (plugin_window), "view", view); + + gtkutil_button (action_area, GTK_STOCK_REVERT_TO_SAVED, NULL, + plugingui_loadbutton_cb, NULL, _("_Load...")); + + gtkutil_button (action_area, GTK_STOCK_DELETE, NULL, + plugingui_unload, NULL, _("_UnLoad")); + + gtkutil_button (action_area, + GTK_STOCK_CLOSE, NULL, plugingui_close_button, + NULL, _("_Close")); + + fe_pluginlist_update (); + + gtk_widget_show (plugin_window); +} diff --git a/etc/wyatt8740/src/fe-gtk/plugingui.h b/etc/wyatt8740/src/fe-gtk/plugingui.h new file mode 100644 index 0000000..945d9a0 --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/plugingui.h @@ -0,0 +1,2 @@ +void plugingui_open (void); +void plugingui_load (void); diff --git a/etc/wyatt8740/src/fe-gtk/rawlog.c b/etc/wyatt8740/src/fe-gtk/rawlog.c new file mode 100644 index 0000000..56ca051 --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/rawlog.c @@ -0,0 +1,152 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <string.h> +#include <fcntl.h> +#include <unistd.h> +#include <stdlib.h> + +#include "fe-gtk.h" + +#include <gtk/gtkbutton.h> +#include <gtk/gtkhbbox.h> +#include <gtk/gtkhbox.h> +#include <gtk/gtkvscrollbar.h> +#include <gtk/gtkstock.h> + +#include "../common/xchat.h" +#include "../common/xchatc.h" +#include "../common/cfgfiles.h" +#include "../common/server.h" +#include "gtkutil.h" +#include "palette.h" +#include "maingui.h" +#include "rawlog.h" +#include "xtext.h" + + +static void +close_rawlog (GtkWidget *wid, server *serv) +{ + if (is_server (serv)) + serv->gui->rawlog_window = 0; +} + +static void +rawlog_save (server *serv, char *file) +{ + int fh = -1; + + if (file) + { + if (serv->gui->rawlog_window) + fh = xchat_open_file (file, O_TRUNC | O_WRONLY | O_CREAT, + 0600, XOF_DOMODE | XOF_FULLPATH); + if (fh != -1) + { + gtk_xtext_save (GTK_XTEXT (serv->gui->rawlog_textlist), fh); + close (fh); + } + } +} + +static int +rawlog_clearbutton (GtkWidget * wid, server *serv) +{ + gtk_xtext_clear (GTK_XTEXT (serv->gui->rawlog_textlist)->buffer, 0); + return FALSE; +} + +static int +rawlog_savebutton (GtkWidget * wid, server *serv) +{ + gtkutil_file_req (_("Save As..."), rawlog_save, serv, NULL, FRF_WRITE); + return FALSE; +} + +void +open_rawlog (struct server *serv) +{ + GtkWidget *hbox, *vscrollbar, *vbox; + char tbuf[256]; + + if (serv->gui->rawlog_window) + { + mg_bring_tofront (serv->gui->rawlog_window); + return; + } + + snprintf (tbuf, sizeof tbuf, _("XChat: Rawlog (%s)"), serv->servername); + serv->gui->rawlog_window = + mg_create_generic_tab ("RawLog", tbuf, FALSE, TRUE, close_rawlog, serv, + 640, 320, &vbox, serv); + + hbox = gtk_hbox_new (FALSE, 2); + gtk_container_add (GTK_CONTAINER (vbox), hbox); + gtk_container_set_border_width (GTK_CONTAINER (hbox), 4); + gtk_widget_show (hbox); + + serv->gui->rawlog_textlist = gtk_xtext_new (colors, 0); + gtk_xtext_set_tint (GTK_XTEXT (serv->gui->rawlog_textlist), prefs.tint_red, prefs.tint_green, prefs.tint_blue); + gtk_xtext_set_background (GTK_XTEXT (serv->gui->rawlog_textlist), + channelwin_pix, prefs.transparent); + + gtk_container_add (GTK_CONTAINER (hbox), serv->gui->rawlog_textlist); + gtk_xtext_set_font (GTK_XTEXT (serv->gui->rawlog_textlist), prefs.font_normal); + GTK_XTEXT (serv->gui->rawlog_textlist)->ignore_hidden = 1; + gtk_widget_show (serv->gui->rawlog_textlist); + + vscrollbar = gtk_vscrollbar_new (GTK_XTEXT (serv->gui->rawlog_textlist)->adj); + gtk_box_pack_start (GTK_BOX (hbox), vscrollbar, FALSE, FALSE, 0); + show_and_unfocus (vscrollbar); + + hbox = gtk_hbutton_box_new (); + gtk_button_box_set_layout (GTK_BUTTON_BOX (hbox), GTK_BUTTONBOX_SPREAD); + gtk_box_pack_end (GTK_BOX (vbox), hbox, 0, 0, 0); + gtk_widget_show (hbox); + + gtkutil_button (hbox, GTK_STOCK_CLEAR, NULL, rawlog_clearbutton, + serv, _("Clear rawlog")); + + gtkutil_button (hbox, GTK_STOCK_SAVE_AS, NULL, rawlog_savebutton, + serv, _("Save As...")); + + gtk_widget_show (serv->gui->rawlog_window); +} + +void +fe_add_rawlog (server *serv, char *text, int len, int outbound) +{ + char *new_text; + + if (!serv->gui->rawlog_window) + return; + + new_text = malloc (len + 7); + + len = sprintf (new_text, "\0033>>\017 %s", text); + if (outbound) + { + new_text[1] = '4'; + new_text[2] = '<'; + new_text[3] = '<'; + } + gtk_xtext_append (GTK_XTEXT (serv->gui->rawlog_textlist)->buffer, new_text, len); + free (new_text); +} diff --git a/etc/wyatt8740/src/fe-gtk/rawlog.h b/etc/wyatt8740/src/fe-gtk/rawlog.h new file mode 100644 index 0000000..db41e2a --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/rawlog.h @@ -0,0 +1 @@ +void open_rawlog (server *serv); diff --git a/etc/wyatt8740/src/fe-gtk/search.c b/etc/wyatt8740/src/fe-gtk/search.c new file mode 100644 index 0000000..d62e79c --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/search.c @@ -0,0 +1,159 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> + +#include "fe-gtk.h" + +#include <gtk/gtkentry.h> +#include <gtk/gtkhbox.h> +#include <gtk/gtkvbox.h> +#include <gtk/gtklabel.h> +#include <gtk/gtkstock.h> +#include <gtk/gtkhbbox.h> +#include <gtk/gtkhseparator.h> +#include <gtk/gtkvseparator.h> +#include <gtk/gtkradiobutton.h> +#include <gtk/gtktogglebutton.h> +#include <gdk/gdkkeysyms.h> + +#include "../common/xchat.h" +#include "../common/fe.h" +#include "../common/util.h" +#include "../common/xchatc.h" +#include "gtkutil.h" +#include "xtext.h" +#include "maingui.h" + + +static textentry *last; /* our last search pos */ +static int case_match = 0; +static int search_backward = 0; + + +static void +search_search (session * sess, const gchar *text) +{ + if (!is_session (sess)) + { + fe_message (_("The window you opened this Search " + "for doesn't exist anymore."), FE_MSG_ERROR); + return; + } + + last = gtk_xtext_search (GTK_XTEXT (sess->gui->xtext), text, + last, case_match, search_backward); + if (!last) + fe_message (_("Search hit end, not found."), FE_MSG_ERROR); +} + +static void +search_find_cb (GtkWidget * button, session * sess) +{ + GtkEntry *entry; + const gchar *text; + + entry = g_object_get_data (G_OBJECT (button), "e"); + text = gtk_entry_get_text (entry); + search_search (sess, text); +} + +static void +search_close_cb (GtkWidget * button, GtkWidget * win) +{ + gtk_widget_destroy (win); +} + +static void +search_entry_cb (GtkWidget * entry, session * sess) +{ + search_search (sess, gtk_entry_get_text (GTK_ENTRY (entry))); +} + +static gboolean +search_key_cb (GtkWidget * window, GdkEventKey * key, gpointer userdata) +{ + if (key->keyval == GDK_Escape) + gtk_widget_destroy (window); + return FALSE; +} + +static void +search_caseign_cb (GtkToggleButton * but, session * sess) +{ + case_match = (but->active)? 1: 0; +} + +static void +search_dirbwd_cb (GtkToggleButton * but, session * sess) +{ + search_backward = (but->active)? 1: 0; +} + +void +search_open (session * sess) +{ + GtkWidget *win, *hbox, *vbox, *entry, *wid; + + last = NULL; + win = mg_create_generic_tab ("search", _("XChat: Search"), TRUE, FALSE, + NULL, NULL, 0, 0, &vbox, 0); + gtk_container_set_border_width (GTK_CONTAINER (win), 12); + gtk_box_set_spacing (GTK_BOX (vbox), 4); + + hbox = gtk_hbox_new (0, 10); + gtk_container_add (GTK_CONTAINER (vbox), hbox); + gtk_widget_show (hbox); + + gtkutil_label_new (_("Find:"), hbox); + + entry = gtk_entry_new (); + g_signal_connect (G_OBJECT (entry), "activate", + G_CALLBACK (search_entry_cb), sess); + gtk_container_add (GTK_CONTAINER (hbox), entry); + gtk_widget_show (entry); + gtk_widget_grab_focus (entry); + + wid = gtk_check_button_new_with_mnemonic (_("_Match case")); + GTK_TOGGLE_BUTTON (wid)->active = case_match; + g_signal_connect (G_OBJECT (wid), "toggled", G_CALLBACK (search_caseign_cb), sess); + gtk_container_add (GTK_CONTAINER (vbox), wid); + gtk_widget_show (wid); + + wid = gtk_check_button_new_with_mnemonic (_("Search _backwards")); + GTK_TOGGLE_BUTTON (wid)->active = search_backward; + g_signal_connect (G_OBJECT (wid), "toggled", G_CALLBACK (search_dirbwd_cb), sess); + gtk_container_add (GTK_CONTAINER (vbox), wid); + gtk_widget_show (wid); + + hbox = gtk_hbutton_box_new (); + gtk_box_pack_start (GTK_BOX (vbox), hbox, 0, 0, 4); + gtk_widget_show (hbox); + + gtkutil_button (hbox, GTK_STOCK_CLOSE, 0, search_close_cb, win, + _("_Close")); + wid = gtkutil_button (hbox, GTK_STOCK_FIND, 0, search_find_cb, sess, + _("_Find")); + g_object_set_data (G_OBJECT (wid), "e", entry); + + g_signal_connect (G_OBJECT (win), "key-press-event", G_CALLBACK (search_key_cb), win); + + gtk_widget_show (win); +} diff --git a/etc/wyatt8740/src/fe-gtk/search.h b/etc/wyatt8740/src/fe-gtk/search.h new file mode 100644 index 0000000..8fa1b62 --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/search.h @@ -0,0 +1 @@ +void search_open (session * sess); diff --git a/etc/wyatt8740/src/fe-gtk/servlistgui.c b/etc/wyatt8740/src/fe-gtk/servlistgui.c new file mode 100644 index 0000000..b30d737 --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/servlistgui.c @@ -0,0 +1,1889 @@ +/* X-Chat + * Copyright (C) 2004-2008 Peter Zelezny. + */ + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <ctype.h> + +#include <gtk/gtkversion.h> +#include <gtk/gtkcheckbutton.h> +#include <gtk/gtkcellrenderertext.h> +#include <gtk/gtkcomboboxentry.h> +#include <gtk/gtkentry.h> +#include <gtk/gtkhbox.h> +#include <gtk/gtkhbbox.h> +#include <gtk/gtkhseparator.h> +#include <gtk/gtkimage.h> +#include <gtk/gtklabel.h> +#include <gtk/gtkliststore.h> +#include <gtk/gtkmenuitem.h> +#include <gtk/gtkmessagedialog.h> +#include <gtk/gtkscrolledwindow.h> +#include <gtk/gtkstock.h> +#include <gtk/gtktable.h> +#include <gtk/gtktogglebutton.h> +#include <gtk/gtktree.h> +#include <gtk/gtktreeselection.h> +#include <gtk/gtktreeview.h> +#include <gtk/gtkvbbox.h> +#include <gtk/gtkvbox.h> +#include <gtk/gtkwindow.h> +#include <gdk/gdkkeysyms.h> + +#include "../common/xchat.h" +#include "../common/xchatc.h" +#include "../common/servlist.h" +#include "../common/cfgfiles.h" +#include "../common/fe.h" + +#include "fe-gtk.h" +#include "gtkutil.h" +#include "menu.h" +#include "pixmaps.h" + + +/* servlistgui.c globals */ +static GtkWidget *serverlist_win = NULL; +static GtkWidget *networks_tree; /* network TreeView */ +static int ignore_changed = FALSE; +#ifdef WIN32 +static int win_width = 324; +static int win_height = 426; +#else +static int win_width = 364; +static int win_height = 478; +#endif + +/* global user info */ +static GtkWidget *entry_nick1; +static GtkWidget *entry_nick2; +static GtkWidget *entry_nick3; +static GtkWidget *entry_guser; +static GtkWidget *entry_greal; + +/* edit area */ +static GtkWidget *edit_win; +static GtkWidget *edit_entry_nick; +static GtkWidget *edit_entry_nick2; +static GtkWidget *edit_entry_user; +static GtkWidget *edit_entry_real; +static GtkWidget *edit_entry_join; +static GtkWidget *edit_entry_pass; +static GtkWidget *edit_entry_cmd; +static GtkWidget *edit_entry_nickserv; +static GtkWidget *edit_label_nick; +static GtkWidget *edit_label_nick2; +static GtkWidget *edit_label_real; +static GtkWidget *edit_label_user; +static GtkWidget *edit_tree; + +static ircnet *selected_net = NULL; +static ircserver *selected_serv = NULL; +static ircnet *fav_add_net = NULL; /* used in Add/Remove fav context menus */ +static session *servlist_sess; + +static void servlist_network_row_cb (GtkTreeSelection *sel, gpointer user_data); +static GtkWidget *servlist_open_edit (GtkWidget *parent, ircnet *net); + + +static const char *pages[]= +{ + "UTF-8 (Unicode)", + "IRC (Latin/Unicode Hybrid)", + "ISO-8859-15 (Western Europe)", + "ISO-8859-2 (Central Europe)", + "ISO-8859-7 (Greek)", + "ISO-8859-8 (Hebrew)", + "ISO-8859-9 (Turkish)", + "ISO-2022-JP (Japanese)", + "SJIS (Japanese)", + "CP949 (Korean)", + "KOI8-R (Cyrillic)", + "CP1251 (Cyrillic)", + "CP1256 (Arabic)", + "CP1257 (Baltic)", + "GB18030 (Chinese)", + "TIS-620 (Thai)", + NULL +}; + +static void +servlist_select_and_show (GtkTreeView *treeview, GtkTreeIter *iter, + GtkListStore *store) +{ + GtkTreePath *path; + GtkTreeSelection *sel; + + sel = gtk_tree_view_get_selection (treeview); + + /* select this network */ + gtk_tree_selection_select_iter (sel, iter); + /* and make sure it's visible */ + path = gtk_tree_model_get_path (GTK_TREE_MODEL (store), iter); + if (path) + { + gtk_tree_view_scroll_to_cell (treeview, path, NULL, TRUE, 0.5, 0.5); + gtk_tree_view_set_cursor (treeview, path, NULL, FALSE); + gtk_tree_path_free (path); + } +} + +static void +servlist_servers_populate (ircnet *net, GtkWidget *treeview) +{ + GtkListStore *store; + GtkTreeIter iter; + int i; + ircserver *serv; + GSList *list = net->servlist; + + store = (GtkListStore *)gtk_tree_view_get_model (GTK_TREE_VIEW (treeview)); + gtk_list_store_clear (store); + + i = 0; + while (list) + { + serv = list->data; + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, 0, serv->hostname, 1, 1, -1); + + if (net->selected == i) + /* select this server */ + servlist_select_and_show (GTK_TREE_VIEW (treeview), &iter, store); + + i++; + list = list->next; + } +} + +static void +servlist_networks_populate (GtkWidget *treeview, GSList *netlist) +{ + GtkListStore *store; + GtkTreeIter iter; + int i; + ircnet *net; + + if (!netlist) + { + net = servlist_net_add (_("New Network"), "", FALSE); + servlist_server_add (net, "newserver/6667"); + netlist = network_list; + } + store = (GtkListStore *)gtk_tree_view_get_model (GTK_TREE_VIEW (treeview)); + gtk_list_store_clear (store); + + i = 0; + while (netlist) + { + net = netlist->data; + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, 0, net->name, 1, 1, -1); + if (i == prefs.slist_select) + { + /* select this network */ + servlist_select_and_show (GTK_TREE_VIEW (treeview), &iter, store); + selected_net = net; + } + i++; + netlist = netlist->next; + } +} + +static void +servlist_server_row_cb (GtkTreeSelection *sel, gpointer user_data) +{ + GtkTreeModel *model; + GtkTreeIter iter; + ircserver *serv; + char *servname; + int pos; + + if (!selected_net) + return; + + if (gtk_tree_selection_get_selected (sel, &model, &iter)) + { + gtk_tree_model_get (model, &iter, 0, &servname, -1); + serv = servlist_server_find (selected_net, servname, &pos); + g_free (servname); + if (serv) + selected_net->selected = pos; + selected_serv = serv; + } +} + +static void +servlist_start_editing (GtkTreeView *tree) +{ + GtkTreeSelection *sel; + GtkTreeModel *model; + GtkTreeIter iter; + GtkTreePath *path; + + sel = gtk_tree_view_get_selection (tree); + + if (gtk_tree_selection_get_selected (sel, &model, &iter)) + { + path = gtk_tree_model_get_path (GTK_TREE_MODEL (model), &iter); + if (path) + { + gtk_tree_view_set_cursor (tree, path, + gtk_tree_view_get_column (tree, 0), TRUE); + gtk_tree_path_free (path); + } + } +} + +static void +servlist_addserver_cb (GtkWidget *item, GtkWidget *treeview) +{ + GtkTreeIter iter; + GtkListStore *store; + + if (!selected_net) + return; + + store = (GtkListStore *)gtk_tree_view_get_model (GTK_TREE_VIEW (treeview)); + servlist_server_add (selected_net, "newserver/6667"); + + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, 0, "newserver/6667", 1, 1, -1); + + /* select this server */ + servlist_select_and_show (GTK_TREE_VIEW (treeview), &iter, store); + /*servlist_start_editing (GTK_TREE_VIEW (treeview));*/ + + servlist_server_row_cb (gtk_tree_view_get_selection (GTK_TREE_VIEW (networks_tree)), NULL); +} + +static void +servlist_addnet_cb (GtkWidget *item, GtkTreeView *treeview) +{ + GtkTreeIter iter; + GtkListStore *store; + ircnet *net; + + net = servlist_net_add (_("New Network"), "", TRUE); + net->encoding = strdup ("IRC (Latin/Unicode Hybrid)"); + servlist_server_add (net, "newserver/6667"); + + store = (GtkListStore *)gtk_tree_view_get_model (treeview); + gtk_list_store_prepend (store, &iter); + gtk_list_store_set (store, &iter, 0, net->name, 1, 1, -1); + + /* select this network */ + servlist_select_and_show (GTK_TREE_VIEW (networks_tree), &iter, store); + servlist_start_editing (GTK_TREE_VIEW (networks_tree)); + + servlist_network_row_cb (gtk_tree_view_get_selection (GTK_TREE_VIEW (networks_tree)), NULL); +} + +static void +servlist_deletenetwork (ircnet *net) +{ + GtkTreeSelection *sel; + GtkTreeModel *model; + GtkTreeIter iter; + + /* remove from GUI */ + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (networks_tree)); + if (gtk_tree_selection_get_selected (sel, &model, &iter)) + gtk_list_store_remove (GTK_LIST_STORE (model), &iter); + + /* remove from list */ + servlist_net_remove (net); + + /* force something to be selected */ + gtk_tree_model_get_iter_first (model, &iter); + servlist_select_and_show (GTK_TREE_VIEW (networks_tree), &iter, + GTK_LIST_STORE (model)); + servlist_network_row_cb (sel, NULL); +} + +static void +servlist_deletenetdialog_cb (GtkDialog *dialog, gint arg1, ircnet *net) +{ + gtk_widget_destroy (GTK_WIDGET (dialog)); + if (arg1 == GTK_RESPONSE_OK) + servlist_deletenetwork (net); +} + +static void +servlist_move_server (ircserver *serv, int delta) +{ + int pos; + + pos = g_slist_index (selected_net->servlist, serv); + if (pos >= 0) + { + pos += delta; + if (pos >= 0) + { + selected_net->servlist = g_slist_remove (selected_net->servlist, serv); + selected_net->servlist = g_slist_insert (selected_net->servlist, serv, pos); + servlist_servers_populate (selected_net, edit_tree); + } + } +} + +static void +servlist_move_network (ircnet *net, int delta) +{ + int pos; + + pos = g_slist_index (network_list, net); + if (pos >= 0) + { + pos += delta; + if (pos >= 0) + { + /*prefs.slist_select += delta;*/ + network_list = g_slist_remove (network_list, net); + network_list = g_slist_insert (network_list, net, pos); + servlist_networks_populate (networks_tree, network_list); + } + } +} + +#if 0 +static gboolean +servlist_auto_find (GtkWidget *wid, GdkEventKey *evt, gpointer tree) +{ + GtkTreeModel *model = gtk_tree_view_get_model (tree); + GtkTreeIter iter; + unsigned char c; + unsigned char *net_name; + + if (evt->keyval > 0x7a || evt->keyval < 0x41) + return FALSE; + + c = toupper (evt->keyval); + + /* scroll to a network that starts with the letter pressed */ + if (gtk_tree_model_get_iter_first (model, &iter)) + { + do + { + gtk_tree_model_get (model, &iter, 0, &net_name, -1); + if (net_name) + { + if (toupper (net_name[0]) == c) + { + servlist_select_and_show (tree, &iter, GTK_LIST_STORE (model)); + g_free (net_name); + return TRUE; + } + g_free (net_name); + } + } + while (gtk_tree_model_iter_next (model, &iter)); + } + + return FALSE; +} +#endif + +static gboolean +servlist_net_keypress_cb (GtkWidget *wid, GdkEventKey *evt, gpointer tree) +{ +#if 0 /* GTK's auto-find does this better */ + if (servlist_auto_find (wid, evt, tree)) + return TRUE; +#endif + + if (!selected_net) + return FALSE; + + if (evt->state & GDK_SHIFT_MASK) + { + if (evt->keyval == GDK_Up) + { + servlist_move_network (selected_net, -1); + } + else if (evt->keyval == GDK_Down) + { + servlist_move_network (selected_net, +1); + } + } + + return FALSE; +} + +static gboolean +servlist_serv_keypress_cb (GtkWidget *wid, GdkEventKey *evt, gpointer userdata) +{ + if (!selected_net || !selected_serv) + return FALSE; + + if (evt->state & GDK_SHIFT_MASK) + { + if (evt->keyval == GDK_Up) + { + servlist_move_server (selected_serv, -1); + } + else if (evt->keyval == GDK_Down) + { + servlist_move_server (selected_serv, +1); + } + } + + return FALSE; +} + +static gint +servlist_compare (ircnet *net1, ircnet *net2) +{ + gchar *net1_casefolded, *net2_casefolded; + int result=0; + + net1_casefolded=g_utf8_casefold(net1->name,-1), + net2_casefolded=g_utf8_casefold(net2->name,-1), + + result=g_utf8_collate(net1_casefolded,net2_casefolded); + + g_free(net1_casefolded); + g_free(net2_casefolded); + + return result; + +} + +static void +servlist_sort (GtkWidget *button, gpointer none) +{ + network_list=g_slist_sort(network_list,(GCompareFunc)servlist_compare); + servlist_networks_populate (networks_tree, network_list); +} + +static gboolean +servlist_has_selection (GtkTreeView *tree) +{ + GtkTreeSelection *sel; + GtkTreeModel *model; + GtkTreeIter iter; + + /* make sure something is selected */ + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree)); + return gtk_tree_selection_get_selected (sel, &model, &iter); +} + +static void +servlist_update_from_entry (char **str, GtkWidget *entry) +{ + if (*str) + free (*str); + + if (GTK_ENTRY (entry)->text[0] == 0) + *str = NULL; + else + *str = strdup (GTK_ENTRY (entry)->text); +} + +static void +servlist_edit_update (ircnet *net) +{ + servlist_update_from_entry (&net->nick, edit_entry_nick); + servlist_update_from_entry (&net->nick2, edit_entry_nick2); + servlist_update_from_entry (&net->user, edit_entry_user); + servlist_update_from_entry (&net->real, edit_entry_real); + + servlist_update_from_entry (&net->autojoin, edit_entry_join); + servlist_update_from_entry (&net->command, edit_entry_cmd); + servlist_update_from_entry (&net->nickserv, edit_entry_nickserv); + servlist_update_from_entry (&net->pass, edit_entry_pass); +} + +static void +servlist_edit_close_cb (GtkWidget *button, gpointer userdata) +{ + if (selected_net) + servlist_edit_update (selected_net); + + gtk_widget_destroy (edit_win); + edit_win = NULL; +} + +static gint +servlist_editwin_delete_cb (GtkWidget *win, GdkEventAny *event, gpointer none) +{ + servlist_edit_close_cb (NULL, NULL); + return FALSE; +} + +static gboolean +servlist_configure_cb (GtkWindow *win, GdkEventConfigure *event, gpointer none) +{ + /* remember the window size */ + gtk_window_get_size (win, &win_width, &win_height); + return FALSE; +} + +static void +servlist_edit_cb (GtkWidget *but, gpointer none) +{ + if (!servlist_has_selection (GTK_TREE_VIEW (networks_tree))) + return; + + edit_win = servlist_open_edit (serverlist_win, selected_net); + gtkutil_set_icon (edit_win); + servlist_servers_populate (selected_net, edit_tree); + g_signal_connect (G_OBJECT (gtk_tree_view_get_selection (GTK_TREE_VIEW (edit_tree))), + "changed", G_CALLBACK (servlist_server_row_cb), NULL); + g_signal_connect (G_OBJECT (edit_win), "delete_event", + G_CALLBACK (servlist_editwin_delete_cb), 0); + g_signal_connect (G_OBJECT (edit_tree), "key_press_event", + G_CALLBACK (servlist_serv_keypress_cb), 0); + gtk_widget_show (edit_win); +} + +static void +servlist_deletenet_cb (GtkWidget *item, ircnet *net) +{ + GtkWidget *dialog; + + if (!servlist_has_selection (GTK_TREE_VIEW (networks_tree))) + return; + + net = selected_net; + if (!net) + return; + dialog = gtk_message_dialog_new (GTK_WINDOW (serverlist_win), + GTK_DIALOG_DESTROY_WITH_PARENT | + GTK_DIALOG_MODAL, + GTK_MESSAGE_QUESTION, + GTK_BUTTONS_OK_CANCEL, + _("Really remove network \"%s\" and all its servers?"), + net->name); + g_signal_connect (dialog, "response", + G_CALLBACK (servlist_deletenetdialog_cb), net); + gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); + gtk_widget_show (dialog); +} + +static void +servlist_deleteserver (ircserver *serv, GtkTreeModel *model) +{ + GtkTreeSelection *sel; + GtkTreeIter iter; + + /* don't remove the last server */ + if (selected_net && g_slist_length (selected_net->servlist) < 2) + return; + + /* remove from GUI */ + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (edit_tree)); + if (gtk_tree_selection_get_selected (sel, &model, &iter)) + gtk_list_store_remove (GTK_LIST_STORE (model), &iter); + + /* remove from list */ + if (selected_net) + servlist_server_remove (selected_net, serv); +} + +static void +servlist_editserverbutton_cb (GtkWidget *item, gpointer none) +{ + servlist_start_editing (GTK_TREE_VIEW (edit_tree)); +} + +static void +servlist_deleteserver_cb (GtkWidget *item, gpointer none) +{ + GtkTreeSelection *sel; + GtkTreeModel *model; + GtkTreeIter iter; + char *servname; + ircserver *serv; + int pos; + + /* find the selected item in the GUI */ + model = gtk_tree_view_get_model (GTK_TREE_VIEW (edit_tree)); + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (edit_tree)); + + if (gtk_tree_selection_get_selected (sel, &model, &iter)) + { + gtk_tree_model_get (model, &iter, 0, &servname, -1); + serv = servlist_server_find (selected_net, servname, &pos); + g_free (servname); + if (serv) + servlist_deleteserver (serv, model); + } +} + +static ircnet * +servlist_find_selected_net (GtkTreeSelection *sel) +{ + GtkTreeModel *model; + GtkTreeIter iter; + char *netname; + int pos; + ircnet *net = NULL; + + if (gtk_tree_selection_get_selected (sel, &model, &iter)) + { + gtk_tree_model_get (model, &iter, 0, &netname, -1); + net = servlist_net_find (netname, &pos, strcmp); + g_free (netname); + if (net) + prefs.slist_select = pos; + } + + return net; +} + +static void +servlist_network_row_cb (GtkTreeSelection *sel, gpointer user_data) +{ + ircnet *net; + + selected_net = NULL; + + net = servlist_find_selected_net (sel); + if (net) + selected_net = net; +} + +static int +servlist_savegui (void) +{ + char *sp; + + /* check for blank username, ircd will not allow this */ + if (GTK_ENTRY (entry_guser)->text[0] == 0) + return 1; + + if (GTK_ENTRY (entry_greal)->text[0] == 0) + return 1; + + strcpy (prefs.nick1, GTK_ENTRY (entry_nick1)->text); + strcpy (prefs.nick2, GTK_ENTRY (entry_nick2)->text); + strcpy (prefs.nick3, GTK_ENTRY (entry_nick3)->text); + strcpy (prefs.username, GTK_ENTRY (entry_guser)->text); + sp = strchr (prefs.username, ' '); + if (sp) + sp[0] = 0; /* spaces will break the login */ + strcpy (prefs.realname, GTK_ENTRY (entry_greal)->text); + servlist_save (); + + return 0; +} + +static gboolean +servlist_get_iter_from_name (GtkTreeModel *model, gchar *name, GtkTreeIter *iter) +{ + GtkTreePath *path = gtk_tree_path_new_from_string (name); + + if (!gtk_tree_model_get_iter (model, iter, path)) + { + gtk_tree_path_free (path); + return FALSE; + } + + gtk_tree_path_free (path); + return TRUE; +} + +static void +servlist_editchannel_cb (GtkCellRendererText *cell, gchar *name, gchar *newval, GtkTreeModel *model) +{ + GtkTreeIter iter; + static int loop_guard = FALSE; + + if (loop_guard) + return; + + if (!servlist_get_iter_from_name (model, name, &iter)) + return; + + loop_guard = TRUE; + /* delete empty item */ + if (newval[0] == 0) + gtk_list_store_remove (GTK_LIST_STORE (model), &iter); + else + gtk_list_store_set (GTK_LIST_STORE (model), &iter, 0, newval, -1); + loop_guard = FALSE; +} + +static void +servlist_editkey_cb (GtkCellRendererText *cell, gchar *name, gchar *newval, GtkTreeModel *model) +{ + GtkTreeIter iter; + + if (!servlist_get_iter_from_name (model, name, &iter)) + return; + + gtk_list_store_set (GTK_LIST_STORE (model), &iter, 1, newval, -1); +} + +static void +servlist_addchannel (GtkWidget *tree, char *channel) +{ + GtkTreeIter iter; + GtkListStore *store; + + store = (GtkListStore *)gtk_tree_view_get_model (GTK_TREE_VIEW (tree)); + + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, 0, channel, 1, "", 2, TRUE, -1); + + /* select this server */ + servlist_select_and_show (GTK_TREE_VIEW (tree), &iter, store); + servlist_start_editing (GTK_TREE_VIEW (tree)); +} + +static void +servlist_addchannel_cb (GtkWidget *item, GtkWidget *tree) +{ + servlist_addchannel (tree, _("#channel")); +} + +static void +servlist_deletechannel_cb (GtkWidget *item, GtkWidget *tree) +{ + GtkTreeSelection *sel; + GtkTreeModel *model; + GtkTreeIter iter; + + /* find the selected item in the GUI */ + model = gtk_tree_view_get_model (GTK_TREE_VIEW (tree)); + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree)); + + if (gtk_tree_selection_get_selected (sel, &model, &iter)) + gtk_list_store_remove (GTK_LIST_STORE (model), &iter); +} + +static void +servlist_editchannelbutton_cb (GtkWidget *item, GtkWidget *tree) +{ + servlist_start_editing (GTK_TREE_VIEW (tree)); +} + +/* save everything from the GUI to the GtkEntry */ + +static void +servlist_autojoineditok_cb (GtkWidget *button, GtkWidget *tree) +{ + GtkTreeModel *model; + GtkTreeIter iter; + char *channel, *key; + char *autojoin; + GSList *channels = NULL, *keys = NULL; + + model = gtk_tree_view_get_model (GTK_TREE_VIEW (tree)); + + if (gtk_tree_model_get_iter_first (model, &iter)) + { + do + { + gtk_tree_model_get (model, &iter, 0, &channel, 1, &key, -1); + channels = g_slist_append (channels, channel); + if (key && key[0] == 0) + { + /* NULL out empty keys */ + g_free (key); + keys = g_slist_append (keys, NULL); + } + else + keys = g_slist_append (keys, key); + } + while (gtk_tree_model_iter_next (model, &iter)); + } + + gtk_widget_destroy (gtk_widget_get_toplevel (button)); + + autojoin = joinlist_merge (channels, keys); + if (autojoin) + { + if (edit_win && selected_net) + gtk_entry_set_text (GTK_ENTRY (edit_entry_join), autojoin); + else + { + if (fav_add_net->autojoin) + free (fav_add_net->autojoin); + fav_add_net->autojoin = strdup (autojoin); + } + g_free (autojoin); + } + + /* this does g_free too */ + joinlist_free (channels, keys); + + if (fav_add_net) + servlist_save (); +} + +void +servlist_autojoinedit (ircnet *net, char *channel, gboolean add) +{ + GtkWidget *win; + GtkWidget *scrolledwindow; + GtkTreeModel *model; + GtkListStore *store; + GtkCellRenderer *renderer; + GtkWidget *tree; + GtkWidget *table; + GtkWidget *label; + GtkWidget *label2; + GtkWidget *bbox; + GtkWidget *wid; + + GtkWidget *vbuttonbox1; + GtkWidget *buttonadd; + GtkWidget *buttonremove; + GtkWidget *buttonedit; + + char buf[128]; + char lab[128]; + GSList *channels, *keys; + GSList *clist, *klist; + GtkTreeIter iter; + + if (edit_win && selected_net) + /* update net->autojoin */ + servlist_edit_update (selected_net); + + win = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_container_set_border_width (GTK_CONTAINER (win), 4); + gtk_window_set_title (GTK_WINDOW (win), _("XChat: Favorite Channels (Auto-Join List)")); + gtk_window_set_default_size (GTK_WINDOW (win), 354, 256); + gtk_window_set_position (GTK_WINDOW (win), GTK_WIN_POS_MOUSE); + if (edit_win) + gtk_window_set_transient_for (GTK_WINDOW (win), GTK_WINDOW (edit_win)); + gtk_window_set_modal (GTK_WINDOW (win), TRUE); + gtk_window_set_type_hint (GTK_WINDOW (win), GDK_WINDOW_TYPE_HINT_DIALOG); + gtk_window_set_role (GTK_WINDOW (win), "editserv"); + + table = gtk_table_new (1, 1, FALSE); + gtk_container_add (GTK_CONTAINER (win), table); + gtk_widget_show (table); + + snprintf (buf, sizeof (buf), _("These channels will be joined whenever you connect to %s."), net->name); + label = gtk_label_new (buf); + gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_CENTER); + gtk_table_attach (GTK_TABLE (table), label, 0, 2, 0, 1, GTK_FILL|GTK_EXPAND, GTK_FILL, 3, 3); + gtk_widget_show (label); + + label2 = gtk_label_new (""); + gtk_label_set_justify (GTK_LABEL (label2), GTK_JUSTIFY_CENTER); + gtk_table_attach (GTK_TABLE (table), label2, 0, 2, 1, 2, GTK_FILL, 0, 3, 3); + gtk_widget_show (label2); + + scrolledwindow = gtk_scrolled_window_new (NULL, NULL); + gtk_table_attach (GTK_TABLE (table), scrolledwindow, 0, 1, 2, 3, GTK_FILL|GTK_EXPAND, GTK_FILL|GTK_EXPAND, 0, 0); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow), + GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow), + GTK_SHADOW_IN); + gtk_widget_show (scrolledwindow); + + store = gtk_list_store_new (3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN); + model = GTK_TREE_MODEL (store); + + tree = gtk_tree_view_new_with_model (model); + g_object_unref (model); + gtk_container_add (GTK_CONTAINER (scrolledwindow), tree); + gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (tree), TRUE); + gtk_widget_show (tree); + + renderer = gtk_cell_renderer_text_new (); + g_signal_connect (G_OBJECT (renderer), "edited", + G_CALLBACK (servlist_editchannel_cb), model); + gtk_tree_view_insert_column_with_attributes ( + GTK_TREE_VIEW (tree), -1, + _("Channel"), renderer, + "text", 0, + "editable", 2, + NULL); + + renderer = gtk_cell_renderer_text_new (); + g_signal_connect (G_OBJECT (renderer), "edited", + G_CALLBACK (servlist_editkey_cb), model); + gtk_tree_view_insert_column_with_attributes ( + GTK_TREE_VIEW (tree), -1, + _("Key (Password)"), renderer, + "text", 1, + "editable", 2, + NULL); + + gtk_tree_view_column_set_expand (gtk_tree_view_get_column (GTK_TREE_VIEW (tree), 0), TRUE); + gtk_tree_view_column_set_expand (gtk_tree_view_get_column (GTK_TREE_VIEW (tree), 1), TRUE); + + gtk_tree_sortable_set_sort_column_id ((GtkTreeSortable *)model, 0, GTK_SORT_ASCENDING); + + /* ===BUTTONS=== */ + vbuttonbox1 = gtk_vbutton_box_new (); + gtk_box_set_spacing (GTK_BOX (vbuttonbox1), 3); + gtk_button_box_set_layout (GTK_BUTTON_BOX (vbuttonbox1), GTK_BUTTONBOX_START); + gtk_widget_show (vbuttonbox1); + gtk_table_attach (GTK_TABLE (table), vbuttonbox1, 1, 2, 2, 3, GTK_FILL, GTK_FILL, 3, 0); + + buttonadd = gtk_button_new_from_stock ("gtk-add"); + g_signal_connect (G_OBJECT (buttonadd), "clicked", + G_CALLBACK (servlist_addchannel_cb), tree); + gtk_widget_show (buttonadd); + gtk_container_add (GTK_CONTAINER (vbuttonbox1), buttonadd); + GTK_WIDGET_SET_FLAGS (buttonadd, GTK_CAN_DEFAULT); + + buttonremove = gtk_button_new_from_stock ("gtk-remove"); + g_signal_connect (G_OBJECT (buttonremove), "clicked", + G_CALLBACK (servlist_deletechannel_cb), tree); + gtk_widget_show (buttonremove); + gtk_container_add (GTK_CONTAINER (vbuttonbox1), buttonremove); + GTK_WIDGET_SET_FLAGS (buttonremove, GTK_CAN_DEFAULT); + + buttonedit = gtk_button_new_with_mnemonic (_("_Edit")); + g_signal_connect (G_OBJECT (buttonedit), "clicked", + G_CALLBACK (servlist_editchannelbutton_cb), tree); + gtk_widget_show (buttonedit); + gtk_container_add (GTK_CONTAINER (vbuttonbox1), buttonedit); + GTK_WIDGET_SET_FLAGS (buttonedit, GTK_CAN_DEFAULT); + + bbox = gtk_hbutton_box_new (); + gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_END); + gtk_box_set_spacing (GTK_BOX (bbox), 4); + gtk_table_attach (GTK_TABLE (table), bbox, 0, 1, 3, 4, GTK_FILL|GTK_EXPAND, GTK_FILL, 0, 4); + gtk_widget_show (bbox); + + wid = gtk_button_new_from_stock (GTK_STOCK_CANCEL); + g_signal_connect (G_OBJECT (wid), "clicked", G_CALLBACK (gtkutil_destroy), win); + gtk_container_add (GTK_CONTAINER (bbox), wid); + gtk_widget_show (wid); + + wid = gtk_button_new_from_stock (GTK_STOCK_OK); + g_signal_connect (G_OBJECT (wid), "clicked", G_CALLBACK (servlist_autojoineditok_cb), tree); + gtk_container_add (GTK_CONTAINER (bbox), wid); + gtk_widget_show (wid); + gtk_widget_grab_focus (wid); + /* =========== */ + + if (net->autojoin) + { + joinlist_split (net->autojoin, &channels, &keys); + + clist = channels; + klist = keys; + + while (clist) + { + if (channel && !add && !rfc_casecmp (channel, clist->data)) + { + snprintf (buf, sizeof (buf), _("%s has been removed."), channel); + snprintf (lab, sizeof (lab), "<span foreground=\"#2222DD\">%s</span>", buf); + gtk_label_set_markup (GTK_LABEL (label2), lab); + } + else + { + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, 0, clist->data, 1, klist->data, 2, TRUE, -1); + } + + klist = klist->next; + clist = clist->next; + } + + joinlist_free (channels, keys); + } + + if (channel && add) + { + servlist_addchannel (tree, channel); + snprintf (buf, sizeof (buf), _("%s has been added."), channel); + snprintf (lab, sizeof (lab), "<span foreground=\"#2222DD\">%s</span>", buf); + gtk_label_set_markup (GTK_LABEL (label2), lab); + } + + fav_add_net = net; + + gtk_widget_show (win); +} + +static void +servlist_autojoinedit_cb (GtkWidget *button, ircnet *net) +{ + servlist_autojoinedit (net, NULL, FALSE); +} + +static void +servlist_connect_cb (GtkWidget *button, gpointer userdata) +{ + if (!selected_net) + return; + + if (servlist_savegui () != 0) + { + fe_message (_("User name and Real name cannot be left blank."), FE_MSG_ERROR); + return; + } + + if (!is_session (servlist_sess)) + servlist_sess = NULL; /* open a new one */ + + { + GSList *list; + session *sess; + session *chosen = servlist_sess; + + servlist_sess = NULL; /* open a new one */ + + for (list = sess_list; list; list = list->next) + { + sess = list->data; + if (sess->server->network == selected_net) + { + servlist_sess = sess; + if (sess->server->connected) + servlist_sess = NULL; /* open a new one */ + break; + } + } + + /* use the chosen one, if it's empty */ + if (!servlist_sess && + chosen && + !chosen->server->connected && + chosen->server->server_session->channel[0] == 0) + { + servlist_sess = chosen; + } + } + + servlist_connect (servlist_sess, selected_net, TRUE); + + gtk_widget_destroy (serverlist_win); + serverlist_win = NULL; + selected_net = NULL; +} + +static void +servlist_celledit_cb (GtkCellRendererText *cell, gchar *arg1, gchar *arg2, + gpointer user_data) +{ + GtkTreeModel *model = (GtkTreeModel *)user_data; + GtkTreeIter iter; + GtkTreePath *path; + char *netname; + ircnet *net; + + if (!arg1 || !arg2) + return; + + path = gtk_tree_path_new_from_string (arg1); + if (!path) + return; + + if (!gtk_tree_model_get_iter (model, &iter, path)) + { + gtk_tree_path_free (path); + return; + } + gtk_tree_model_get (model, &iter, 0, &netname, -1); + + net = servlist_net_find (netname, NULL, strcmp); + g_free (netname); + if (net) + { + /* delete empty item */ + if (arg2[0] == 0) + { + servlist_deletenetwork (net); + gtk_tree_path_free (path); + return; + } + + netname = net->name; + net->name = strdup (arg2); + gtk_list_store_set (GTK_LIST_STORE (model), &iter, 0, net->name, -1); + free (netname); + } + + gtk_tree_path_free (path); +} + +static void +servlist_check_cb (GtkWidget *but, gpointer num_p) +{ + int num = GPOINTER_TO_INT (num_p); + + if (!selected_net) + return; + + if ((1 << num) == FLAG_CYCLE || (1 << num) == FLAG_USE_PROXY) + { + /* these ones are reversed, so it's compat with 2.0.x */ + if (GTK_TOGGLE_BUTTON (but)->active) + selected_net->flags &= ~(1 << num); + else + selected_net->flags |= (1 << num); + } else + { + if (GTK_TOGGLE_BUTTON (but)->active) + selected_net->flags |= (1 << num); + else + selected_net->flags &= ~(1 << num); + } + + if ((1 << num) == FLAG_USE_GLOBAL) + { + if (GTK_TOGGLE_BUTTON (but)->active) + { + gtk_widget_hide (edit_label_nick); + gtk_widget_hide (edit_entry_nick); + + gtk_widget_hide (edit_label_nick2); + gtk_widget_hide (edit_entry_nick2); + + gtk_widget_hide (edit_label_user); + gtk_widget_hide (edit_entry_user); + + gtk_widget_hide (edit_label_real); + gtk_widget_hide (edit_entry_real); + } else + { + gtk_widget_show (edit_label_nick); + gtk_widget_show (edit_entry_nick); + + gtk_widget_show (edit_label_nick2); + gtk_widget_show (edit_entry_nick2); + + gtk_widget_show (edit_label_user); + gtk_widget_show (edit_entry_user); + + gtk_widget_show (edit_label_real); + gtk_widget_show (edit_entry_real); + } + } +} + +static GtkWidget * +servlist_create_check (int num, int state, GtkWidget *table, int row, int col, char *labeltext) +{ + GtkWidget *but; + + but = gtk_check_button_new_with_label (labeltext); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (but), state); + g_signal_connect (G_OBJECT (but), "toggled", + G_CALLBACK (servlist_check_cb), GINT_TO_POINTER (num)); + gtk_table_attach (GTK_TABLE (table), but, col, col+2, row, row+1, + GTK_FILL|GTK_EXPAND, 0, 0, 0); + gtk_widget_show (but); + + return but; +} + +static GtkWidget * +servlist_create_entry (GtkWidget *table, char *labeltext, int row, + char *def, GtkWidget **label_ret, char *tip) +{ + GtkWidget *label, *entry; + + label = gtk_label_new_with_mnemonic (labeltext); + if (label_ret) + *label_ret = label; + gtk_widget_show (label); + gtk_table_attach (GTK_TABLE (table), label, 1, 2, row, row+1, + GTK_FILL, 0, 0, 0); + gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); + + entry = gtk_entry_new (); + add_tip (entry, tip); + gtk_widget_show (entry); + gtk_entry_set_text (GTK_ENTRY (entry), def ? def : ""); + gtk_label_set_mnemonic_widget (GTK_LABEL (label), entry); + + if (row == 15) /* for "Channels to Join:" */ + { + GtkWidget *button, *box; + + box = gtk_hbox_new (0, 0); + button = gtk_button_new_with_label ("..."); + g_signal_connect (G_OBJECT (button), "clicked", + G_CALLBACK (servlist_autojoinedit_cb), selected_net); + + gtk_box_pack_start (GTK_BOX (box), entry, TRUE, TRUE, 0); + gtk_box_pack_end (GTK_BOX (box), button, 0, 0, 0); + gtk_widget_show_all (box); + + gtk_table_attach (GTK_TABLE (table), box, 2, 3, row, row+1, + GTK_FILL|GTK_EXPAND, 0, 0, 0); + } + else + { + gtk_table_attach (GTK_TABLE (table), entry, 2, 3, row, row+1, + GTK_FILL|GTK_EXPAND, 0, 0, 0); + } + + return entry; +} + +static gint +servlist_delete_cb (GtkWidget *win, GdkEventAny *event, gpointer userdata) +{ + servlist_savegui (); + serverlist_win = NULL; + selected_net = NULL; + + if (sess_list == NULL) + xchat_exit (); + + return FALSE; +} + +static void +servlist_close_cb (GtkWidget *button, gpointer userdata) +{ + servlist_savegui (); + gtk_widget_destroy (serverlist_win); + serverlist_win = NULL; + selected_net = NULL; + + if (sess_list == NULL) + xchat_exit (); +} + +/* convert "host:port" format to "host/port" */ + +static char * +servlist_sanitize_hostname (char *host) +{ + char *ret, *c, *e; + + ret = strdup (host); + + c = strchr (ret, ':'); + e = strrchr (ret, ':'); + + /* if only one colon exists it's probably not IPv6 */ + if (c && c == e) + *c = '/'; + + return ret; +} + +static void +servlist_editserver_cb (GtkCellRendererText *cell, gchar *arg1, gchar *arg2, + gpointer user_data) +{ + GtkTreeModel *model = (GtkTreeModel *)user_data; + GtkTreeIter iter; + GtkTreePath *path; + char *servname; + ircserver *serv; + + if (!selected_net) + return; + + path = gtk_tree_path_new_from_string (arg1); + + if (!gtk_tree_model_get_iter (model, &iter, path)) + { + gtk_tree_path_free (path); + return; + } + + gtk_tree_model_get (model, &iter, 0, &servname, -1); + serv = servlist_server_find (selected_net, servname, NULL); + g_free (servname); + + if (serv) + { + /* delete empty item */ + if (arg2[0] == 0) + { + servlist_deleteserver (serv, model); + gtk_tree_path_free (path); + return; + } + + servname = serv->hostname; + serv->hostname = servlist_sanitize_hostname (arg2); + gtk_list_store_set (GTK_LIST_STORE (model), &iter, 0, serv->hostname, -1); + free (servname); + } + + gtk_tree_path_free (path); +} + +static void +servlist_combo_cb (GtkEntry *entry, gpointer userdata) +{ + if (!selected_net) + return; + + if (!ignore_changed) + { + if (selected_net->encoding) + free (selected_net->encoding); + selected_net->encoding = strdup (entry->text); + } +} + +static GtkWidget * +servlist_create_charsetcombo (void) +{ + GtkWidget *cb; + int i; + + cb = gtk_combo_box_entry_new_text (); + gtk_combo_box_append_text (GTK_COMBO_BOX (cb), "System default"); + i = 0; + while (pages[i]) + { + gtk_combo_box_append_text (GTK_COMBO_BOX (cb), (char *)pages[i]); + i++; + } + g_signal_connect (G_OBJECT (GTK_BIN (cb)->child), "changed", + G_CALLBACK (servlist_combo_cb), NULL); + + return cb; +} + +static void +no_servlist (GtkWidget * igad, gpointer serv) +{ + if (GTK_TOGGLE_BUTTON (igad)->active) + prefs.slist_skip = TRUE; + else + prefs.slist_skip = FALSE; +} + +static GtkWidget * +bold_label (char *text) +{ + char buf[128]; + GtkWidget *label; + + snprintf (buf, sizeof (buf), "<b>%s</b>", text); + label = gtk_label_new (buf); + gtk_label_set_use_markup (GTK_LABEL (label), TRUE); + gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); + gtk_widget_show (label); + + return label; +} + +static GtkWidget * +servlist_open_edit (GtkWidget *parent, ircnet *net) +{ + GtkWidget *editwindow; + GtkWidget *vbox5; + GtkWidget *table3; + GtkWidget *label17; + GtkWidget *label16; + GtkWidget *label21; + GtkWidget *label34; + GtkWidget *comboboxentry_charset; + GtkWidget *hbox1; + GtkWidget *scrolledwindow2; + GtkWidget *treeview_servers; + GtkWidget *vbuttonbox1; + GtkWidget *buttonadd; + GtkWidget *buttonremove; + GtkWidget *buttonedit; + GtkWidget *hseparator2; + GtkWidget *hbuttonbox4; + GtkWidget *button10; + GtkWidget *check; + GtkTreeModel *model; + GtkListStore *store; + GtkCellRenderer *renderer; + char buf[128]; + char buf2[128 + 8]; + + editwindow = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_container_set_border_width (GTK_CONTAINER (editwindow), 4); + snprintf (buf, sizeof (buf), _("XChat: Edit %s"), net->name); + gtk_window_set_title (GTK_WINDOW (editwindow), buf); + gtk_window_set_default_size (GTK_WINDOW (editwindow), 354, 0); + gtk_window_set_position (GTK_WINDOW (editwindow), GTK_WIN_POS_MOUSE); + gtk_window_set_transient_for (GTK_WINDOW (editwindow), GTK_WINDOW (parent)); + gtk_window_set_modal (GTK_WINDOW (editwindow), TRUE); + gtk_window_set_type_hint (GTK_WINDOW (editwindow), GDK_WINDOW_TYPE_HINT_DIALOG); + gtk_window_set_role (GTK_WINDOW (editwindow), "editserv"); + + vbox5 = gtk_vbox_new (FALSE, 0); + gtk_widget_show (vbox5); + gtk_container_add (GTK_CONTAINER (editwindow), vbox5); + + table3 = gtk_table_new (17, 3, FALSE); + gtk_widget_show (table3); + gtk_box_pack_start (GTK_BOX (vbox5), table3, TRUE, TRUE, 0); + gtk_table_set_row_spacings (GTK_TABLE (table3), 2); + gtk_table_set_col_spacings (GTK_TABLE (table3), 8); + + snprintf (buf, sizeof (buf), _("Servers for %s"), net->name); + snprintf (buf2, sizeof (buf2), "<b>%s</b>", buf); + label16 = gtk_label_new (buf2); + gtk_widget_show (label16); + gtk_table_attach (GTK_TABLE (table3), label16, 0, 3, 0, 1, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 3); + gtk_label_set_use_markup (GTK_LABEL (label16), TRUE); + gtk_misc_set_alignment (GTK_MISC (label16), 0, 0.5); + + check = servlist_create_check (0, !(net->flags & FLAG_CYCLE), table3, + 2, 1, _("Connect to selected server only")); + add_tip (check, _("Don't cycle through all the servers when the connection fails.")); + + label17 = bold_label (_("Your Details")); + gtk_table_attach (GTK_TABLE (table3), label17, 0, 3, 3, 4, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 3); + + servlist_create_check (1, net->flags & FLAG_USE_GLOBAL, table3, + 4, 1, _("Use global user information")); + + edit_entry_nick = + servlist_create_entry (table3, _("_Nick name:"), 5, net->nick, + &edit_label_nick, 0); + + edit_entry_nick2 = + servlist_create_entry (table3, _("Second choice:"), 6, net->nick2, + &edit_label_nick2, 0); + + edit_entry_user = + servlist_create_entry (table3, _("_User name:"), 7, net->user, + &edit_label_user, 0); + + edit_entry_real = + servlist_create_entry (table3, _("Rea_l name:"), 8, net->real, + &edit_label_real, 0); + + label21 = bold_label (_("Connecting")); + gtk_table_attach (GTK_TABLE (table3), label21, 0, 3, 9, 10, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 3); + + servlist_create_check (3, net->flags & FLAG_AUTO_CONNECT, table3, + 11, 1, _("Auto connect to this network at startup")); + servlist_create_check (4, !(net->flags & FLAG_USE_PROXY), table3, + 12, 1, _("Bypass proxy server")); + check = servlist_create_check (2, net->flags & FLAG_USE_SSL, table3, + 13, 1, _("Use SSL for all the servers on this network")); +#ifndef USE_OPENSSL + gtk_widget_set_sensitive (check, FALSE); +#endif + check = servlist_create_check (5, net->flags & FLAG_ALLOW_INVALID, table3, + 14, 1, _("Accept invalid SSL certificate")); +#ifndef USE_OPENSSL + gtk_widget_set_sensitive (check, FALSE); +#endif + + edit_entry_join = + servlist_create_entry (table3, _("_Favorite channels:"), 15, + net->autojoin, 0, + _("Channels to join, separated by commas, but not spaces!")); + + edit_entry_cmd = + servlist_create_entry (table3, _("Connect command:"), 16, + net->command, 0, + _("Extra command to execute after connecting. If you need more than one, set this to LOAD -e <filename>, where <filename> is a text-file full of commands to execute.")); + + edit_entry_nickserv = + servlist_create_entry (table3, _("Nickserv password:"), 17, + net->nickserv, 0, + _("If your nickname requires a password, enter it here. Not all IRC networks support this.")); + gtk_entry_set_visibility (GTK_ENTRY (edit_entry_nickserv), FALSE); + + edit_entry_pass = + servlist_create_entry (table3, _("Server password:"), 18, + net->pass, 0, + _("Password for the server, if in doubt, leave blank.")); + gtk_entry_set_visibility (GTK_ENTRY (edit_entry_pass), FALSE); + + label34 = gtk_label_new (_("Character set:")); + gtk_widget_show (label34); + gtk_table_attach (GTK_TABLE (table3), label34, 1, 2, 19, 20, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment (GTK_MISC (label34), 0, 0.5); + + comboboxentry_charset = servlist_create_charsetcombo (); + ignore_changed = TRUE; + gtk_entry_set_text (GTK_ENTRY (GTK_BIN (comboboxentry_charset)->child), net->encoding ? net->encoding : "System default"); + ignore_changed = FALSE; + gtk_widget_show (comboboxentry_charset); + gtk_table_attach (GTK_TABLE (table3), comboboxentry_charset, 2, 3, 19, 20, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (GTK_FILL), 0, 0); + + hbox1 = gtk_hbox_new (FALSE, 0); + gtk_widget_show (hbox1); + gtk_table_attach (GTK_TABLE (table3), hbox1, 1, 3, 1, 2, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); + + scrolledwindow2 = gtk_scrolled_window_new (NULL, NULL); + gtk_widget_show (scrolledwindow2); + gtk_box_pack_start (GTK_BOX (hbox1), scrolledwindow2, TRUE, TRUE, 0); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow2), + GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow2), + GTK_SHADOW_IN); + + store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_BOOLEAN); + model = GTK_TREE_MODEL (store); + + edit_tree = treeview_servers = gtk_tree_view_new_with_model (model); + g_object_unref (model); + gtk_widget_show (treeview_servers); + gtk_container_add (GTK_CONTAINER (scrolledwindow2), treeview_servers); + gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeview_servers), + FALSE); + + renderer = gtk_cell_renderer_text_new (); + g_signal_connect (G_OBJECT (renderer), "edited", + G_CALLBACK (servlist_editserver_cb), model); + gtk_tree_view_insert_column_with_attributes ( + GTK_TREE_VIEW (treeview_servers), -1, + 0, renderer, + "text", 0, + "editable", 1, + NULL); + + vbuttonbox1 = gtk_vbutton_box_new (); + gtk_box_set_spacing (GTK_BOX (vbuttonbox1), 3); + gtk_button_box_set_layout (GTK_BUTTON_BOX (vbuttonbox1), GTK_BUTTONBOX_START); + gtk_widget_show (vbuttonbox1); + gtk_box_pack_start (GTK_BOX (hbox1), vbuttonbox1, FALSE, FALSE, 3); + + buttonadd = gtk_button_new_from_stock ("gtk-add"); + g_signal_connect (G_OBJECT (buttonadd), "clicked", + G_CALLBACK (servlist_addserver_cb), edit_tree); + gtk_widget_show (buttonadd); + gtk_container_add (GTK_CONTAINER (vbuttonbox1), buttonadd); + GTK_WIDGET_SET_FLAGS (buttonadd, GTK_CAN_DEFAULT); + + buttonremove = gtk_button_new_from_stock ("gtk-remove"); + g_signal_connect (G_OBJECT (buttonremove), "clicked", + G_CALLBACK (servlist_deleteserver_cb), NULL); + gtk_widget_show (buttonremove); + gtk_container_add (GTK_CONTAINER (vbuttonbox1), buttonremove); + GTK_WIDGET_SET_FLAGS (buttonremove, GTK_CAN_DEFAULT); + + buttonedit = gtk_button_new_with_mnemonic (_("_Edit")); + g_signal_connect (G_OBJECT (buttonedit), "clicked", + G_CALLBACK (servlist_editserverbutton_cb), NULL); + gtk_widget_show (buttonedit); + gtk_container_add (GTK_CONTAINER (vbuttonbox1), buttonedit); + GTK_WIDGET_SET_FLAGS (buttonedit, GTK_CAN_DEFAULT); + + hseparator2 = gtk_hseparator_new (); + gtk_widget_show (hseparator2); + gtk_box_pack_start (GTK_BOX (vbox5), hseparator2, FALSE, FALSE, 8); + + hbuttonbox4 = gtk_hbutton_box_new (); + gtk_widget_show (hbuttonbox4); + gtk_box_pack_start (GTK_BOX (vbox5), hbuttonbox4, FALSE, FALSE, 0); + gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox4), + GTK_BUTTONBOX_END); + + button10 = gtk_button_new_from_stock ("gtk-close"); + g_signal_connect (G_OBJECT (button10), "clicked", + G_CALLBACK (servlist_edit_close_cb), 0); + gtk_widget_show (button10); + gtk_container_add (GTK_CONTAINER (hbuttonbox4), button10); + GTK_WIDGET_SET_FLAGS (button10, GTK_CAN_DEFAULT); + + if (net->flags & FLAG_USE_GLOBAL) + { + gtk_widget_hide (edit_label_nick); + gtk_widget_hide (edit_entry_nick); + + gtk_widget_hide (edit_label_nick2); + gtk_widget_hide (edit_entry_nick2); + + gtk_widget_hide (edit_label_user); + gtk_widget_hide (edit_entry_user); + + gtk_widget_hide (edit_label_real); + gtk_widget_hide (edit_entry_real); + } + + gtk_widget_grab_focus (button10); + gtk_widget_grab_default (button10); + + return editwindow; +} + +static GtkWidget * +servlist_open_networks (void) +{ + GtkWidget *servlist; + GtkWidget *vbox1; + GtkWidget *label2; + GtkWidget *table1; + GtkWidget *label3; + GtkWidget *label4; + GtkWidget *label5; + GtkWidget *label6; + GtkWidget *label7; + GtkWidget *entry1; + GtkWidget *entry2; + GtkWidget *entry3; + GtkWidget *entry4; + GtkWidget *entry5; + GtkWidget *vbox2; + GtkWidget *label1; + GtkWidget *table4; + GtkWidget *scrolledwindow3; + GtkWidget *treeview_networks; + GtkWidget *checkbutton_skip; + GtkWidget *vbuttonbox2; + GtkWidget *button_add; + GtkWidget *button_remove; + GtkWidget *button_edit; + GtkWidget *button_sort; + GtkWidget *hseparator1; + GtkWidget *hbuttonbox1; + GtkWidget *button_connect; + GtkWidget *button_close; + GtkTreeModel *model; + GtkListStore *store; + GtkCellRenderer *renderer; + + servlist = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_container_set_border_width (GTK_CONTAINER (servlist), 4); + gtk_window_set_title (GTK_WINDOW (servlist), _("XChat: Network List")); + gtk_window_set_default_size (GTK_WINDOW (servlist), win_width, win_height); + gtk_window_set_position (GTK_WINDOW (servlist), GTK_WIN_POS_MOUSE); + gtk_window_set_role (GTK_WINDOW (servlist), "servlist"); + gtk_window_set_type_hint (GTK_WINDOW (servlist), GDK_WINDOW_TYPE_HINT_DIALOG); + if (current_sess) + gtk_window_set_transient_for (GTK_WINDOW (servlist), GTK_WINDOW (current_sess->gui->window)); + + vbox1 = gtk_vbox_new (FALSE, 0); + gtk_widget_show (vbox1); + gtk_container_add (GTK_CONTAINER (servlist), vbox1); + + label2 = bold_label (_("User Information")); + gtk_box_pack_start (GTK_BOX (vbox1), label2, FALSE, FALSE, 0); + + table1 = gtk_table_new (5, 2, FALSE); + gtk_widget_show (table1); + gtk_box_pack_start (GTK_BOX (vbox1), table1, FALSE, FALSE, 0); + gtk_container_set_border_width (GTK_CONTAINER (table1), 8); + gtk_table_set_row_spacings (GTK_TABLE (table1), 2); + gtk_table_set_col_spacings (GTK_TABLE (table1), 4); + + label3 = gtk_label_new_with_mnemonic (_("_Nick name:")); + gtk_widget_show (label3); + gtk_table_attach (GTK_TABLE (table1), label3, 0, 1, 0, 1, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment (GTK_MISC (label3), 0, 0.5); + + label4 = gtk_label_new (_("Second choice:")); + gtk_widget_show (label4); + gtk_table_attach (GTK_TABLE (table1), label4, 0, 1, 1, 2, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment (GTK_MISC (label4), 0, 0.5); + + label5 = gtk_label_new (_("Third choice:")); + gtk_widget_show (label5); + gtk_table_attach (GTK_TABLE (table1), label5, 0, 1, 2, 3, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment (GTK_MISC (label5), 0, 0.5); + + label6 = gtk_label_new_with_mnemonic (_("_User name:")); + gtk_widget_show (label6); + gtk_table_attach (GTK_TABLE (table1), label6, 0, 1, 3, 4, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment (GTK_MISC (label6), 0, 0.5); + + label7 = gtk_label_new_with_mnemonic (_("Rea_l name:")); + gtk_widget_show (label7); + gtk_table_attach (GTK_TABLE (table1), label7, 0, 1, 4, 5, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment (GTK_MISC (label7), 0, 0.5); + + entry_nick1 = entry1 = gtk_entry_new (); + gtk_entry_set_text (GTK_ENTRY (entry1), prefs.nick1); + gtk_widget_show (entry1); + gtk_table_attach (GTK_TABLE (table1), entry1, 1, 2, 0, 1, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + entry_nick2 = entry2 = gtk_entry_new (); + gtk_entry_set_text (GTK_ENTRY (entry2), prefs.nick2); + gtk_widget_show (entry2); + gtk_table_attach (GTK_TABLE (table1), entry2, 1, 2, 1, 2, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + entry_nick3 = entry3 = gtk_entry_new (); + gtk_entry_set_text (GTK_ENTRY (entry3), prefs.nick3); + gtk_widget_show (entry3); + gtk_table_attach (GTK_TABLE (table1), entry3, 1, 2, 2, 3, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + entry_guser = entry4 = gtk_entry_new (); + gtk_entry_set_text (GTK_ENTRY (entry4), prefs.username); + gtk_widget_show (entry4); + gtk_table_attach (GTK_TABLE (table1), entry4, 1, 2, 3, 4, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + entry_greal = entry5 = gtk_entry_new (); + gtk_entry_set_text (GTK_ENTRY (entry5), prefs.realname); + gtk_widget_show (entry5); + gtk_table_attach (GTK_TABLE (table1), entry5, 1, 2, 4, 5, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + vbox2 = gtk_vbox_new (FALSE, 0); + gtk_widget_show (vbox2); + gtk_box_pack_start (GTK_BOX (vbox1), vbox2, TRUE, TRUE, 0); + + label1 = bold_label (_("Networks")); + gtk_box_pack_start (GTK_BOX (vbox2), label1, FALSE, FALSE, 0); + + table4 = gtk_table_new (2, 2, FALSE); + gtk_widget_show (table4); + gtk_box_pack_start (GTK_BOX (vbox2), table4, TRUE, TRUE, 0); + gtk_container_set_border_width (GTK_CONTAINER (table4), 8); + gtk_table_set_row_spacings (GTK_TABLE (table4), 2); + gtk_table_set_col_spacings (GTK_TABLE (table4), 3); + + scrolledwindow3 = gtk_scrolled_window_new (NULL, NULL); + gtk_widget_show (scrolledwindow3); + gtk_table_attach (GTK_TABLE (table4), scrolledwindow3, 0, 1, 0, 1, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow3), + GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow3), + GTK_SHADOW_IN); + + store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_BOOLEAN); + model = GTK_TREE_MODEL (store); + + networks_tree = treeview_networks = gtk_tree_view_new_with_model (model); + g_object_unref (model); + gtk_widget_show (treeview_networks); + gtk_container_add (GTK_CONTAINER (scrolledwindow3), treeview_networks); + gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeview_networks), + FALSE); + + renderer = gtk_cell_renderer_text_new (); + g_signal_connect (G_OBJECT (renderer), "edited", + G_CALLBACK (servlist_celledit_cb), model); + gtk_tree_view_insert_column_with_attributes ( + GTK_TREE_VIEW (treeview_networks), -1, + 0, renderer, + "text", 0, + "editable", 1, + NULL); + + checkbutton_skip = + gtk_check_button_new_with_mnemonic (_("Skip network list on startup")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton_skip), + prefs.slist_skip); + g_signal_connect (G_OBJECT (checkbutton_skip), "toggled", + G_CALLBACK (no_servlist), 0); + gtk_widget_show (checkbutton_skip); + gtk_table_attach (GTK_TABLE (table4), checkbutton_skip, 0, 2, 1, 2, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + vbuttonbox2 = gtk_vbutton_box_new (); + gtk_box_set_spacing (GTK_BOX (vbuttonbox2), 3); + gtk_button_box_set_layout (GTK_BUTTON_BOX (vbuttonbox2), GTK_BUTTONBOX_START); + gtk_widget_show (vbuttonbox2); + gtk_table_attach (GTK_TABLE (table4), vbuttonbox2, 1, 2, 0, 1, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (GTK_FILL), 0, 0); + + button_add = gtk_button_new_from_stock ("gtk-add"); + g_signal_connect (G_OBJECT (button_add), "clicked", + G_CALLBACK (servlist_addnet_cb), networks_tree); + gtk_widget_show (button_add); + gtk_container_add (GTK_CONTAINER (vbuttonbox2), button_add); + GTK_WIDGET_SET_FLAGS (button_add, GTK_CAN_DEFAULT); + + button_remove = gtk_button_new_from_stock ("gtk-remove"); + g_signal_connect (G_OBJECT (button_remove), "clicked", + G_CALLBACK (servlist_deletenet_cb), 0); + gtk_widget_show (button_remove); + gtk_container_add (GTK_CONTAINER (vbuttonbox2), button_remove); + GTK_WIDGET_SET_FLAGS (button_remove, GTK_CAN_DEFAULT); + + button_edit = gtk_button_new_with_mnemonic (_("_Edit...")); + g_signal_connect (G_OBJECT (button_edit), "clicked", + G_CALLBACK (servlist_edit_cb), 0); + gtk_widget_show (button_edit); + gtk_container_add (GTK_CONTAINER (vbuttonbox2), button_edit); + GTK_WIDGET_SET_FLAGS (button_edit, GTK_CAN_DEFAULT); + + button_sort = gtk_button_new_with_mnemonic (_("_Sort")); + add_tip (button_sort, _("Sorts the network list in alphabetical order. " + "Use SHIFT-UP and SHIFT-DOWN keys to move a row.")); + g_signal_connect (G_OBJECT (button_sort), "clicked", + G_CALLBACK (servlist_sort), 0); + gtk_widget_show (button_sort); + gtk_container_add (GTK_CONTAINER (vbuttonbox2), button_sort); + GTK_WIDGET_SET_FLAGS (button_sort, GTK_CAN_DEFAULT); + + hseparator1 = gtk_hseparator_new (); + gtk_widget_show (hseparator1); + gtk_box_pack_start (GTK_BOX (vbox1), hseparator1, FALSE, TRUE, 4); + + hbuttonbox1 = gtk_hbutton_box_new (); + gtk_widget_show (hbuttonbox1); + gtk_box_pack_start (GTK_BOX (vbox1), hbuttonbox1, FALSE, TRUE, 0); + gtk_container_set_border_width (GTK_CONTAINER (hbuttonbox1), 8); + + button_close = gtk_button_new_from_stock ("gtk-close"); + gtk_widget_show (button_close); + g_signal_connect (G_OBJECT (button_close), "clicked", + G_CALLBACK (servlist_close_cb), 0); + gtk_container_add (GTK_CONTAINER (hbuttonbox1), button_close); + GTK_WIDGET_SET_FLAGS (button_close, GTK_CAN_DEFAULT); + + button_connect = gtkutil_button (hbuttonbox1, GTK_STOCK_CONNECT, NULL, + servlist_connect_cb, NULL, _("C_onnect")); + GTK_WIDGET_SET_FLAGS (button_connect, GTK_CAN_DEFAULT); + + gtk_label_set_mnemonic_widget (GTK_LABEL (label3), entry1); + gtk_label_set_mnemonic_widget (GTK_LABEL (label6), entry4); + gtk_label_set_mnemonic_widget (GTK_LABEL (label7), entry5); + + gtk_widget_grab_focus (networks_tree); + gtk_widget_grab_default (button_close); + return servlist; +} + +void +fe_serverlist_open (session *sess) +{ + if (serverlist_win) + { + gtk_window_present (GTK_WINDOW (serverlist_win)); + return; + } + + servlist_sess = sess; + + serverlist_win = servlist_open_networks (); + gtkutil_set_icon (serverlist_win); + + servlist_networks_populate (networks_tree, network_list); + + g_signal_connect (G_OBJECT (serverlist_win), "delete_event", + G_CALLBACK (servlist_delete_cb), 0); + g_signal_connect (G_OBJECT (serverlist_win), "configure_event", + G_CALLBACK (servlist_configure_cb), 0); + g_signal_connect (G_OBJECT (gtk_tree_view_get_selection (GTK_TREE_VIEW (networks_tree))), + "changed", G_CALLBACK (servlist_network_row_cb), NULL); + g_signal_connect (G_OBJECT (networks_tree), "key_press_event", + G_CALLBACK (servlist_net_keypress_cb), networks_tree); + + gtk_widget_show (serverlist_win); +} diff --git a/etc/wyatt8740/src/fe-gtk/setup.c b/etc/wyatt8740/src/fe-gtk/setup.c new file mode 100644 index 0000000..f271d6e --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/setup.c @@ -0,0 +1,2134 @@ +/* X-Chat + * Copyright (C) 2004-2007 Peter Zelezny. + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/stat.h> +#include <sys/types.h> + +#include "../common/xchat.h" +#include "../common/cfgfiles.h" +#include "../common/fe.h" +#include "../common/text.h" +#include "../common/userlist.h" +#include "../common/util.h" +#include "../common/xchatc.h" +#include "fe-gtk.h" +#include "gtkutil.h" +#include "maingui.h" +#include "palette.h" +#include "pixmaps.h" +#include "menu.h" + +#include <gtk/gtkcolorseldialog.h> +#include <gtk/gtktable.h> +#include <gtk/gtkentry.h> +#include <gtk/gtklabel.h> +#include <gtk/gtkmisc.h> +#include <gtk/gtkhbox.h> +#include <gtk/gtkvbox.h> +#include <gtk/gtkalignment.h> +#include <gtk/gtknotebook.h> +#include <gtk/gtkframe.h> +#include <gtk/gtkfontsel.h> +#include <gtk/gtkcheckbutton.h> +#include <gtk/gtkscrolledwindow.h> +#include <gtk/gtkspinbutton.h> +#include <gtk/gtkstock.h> +#include <gtk/gtktreeview.h> +#include <gtk/gtkhbbox.h> +#include <gtk/gtkhseparator.h> +#include <gtk/gtkradiobutton.h> +#include <gtk/gtkcombobox.h> +#include <gtk/gtkliststore.h> +#include <gtk/gtktreestore.h> +#include <gtk/gtktreeselection.h> +#include <gtk/gtkcellrenderertext.h> +#include <gtk/gtkhscale.h> +#ifdef WIN32 +#include "../common/fe.h" +#endif +#ifdef USE_GTKSPELL +#include <gtk/gtktextview.h> +#include <gtkspell/gtkspell.h> +#endif +#ifdef USE_LIBSEXY +#include "sexy-spell-entry.h" +#endif + +GtkStyle *create_input_style (GtkStyle *); + +#define LABEL_INDENT 12 + +static int last_selected_page = 0; +static int last_selected_row = 0; /* sound row */ +static gboolean color_change; +static struct xchatprefs setup_prefs; +static GtkWidget *cancel_button; +static GtkWidget *font_dialog = NULL; + +enum +{ + ST_END, + ST_TOGGLE, + ST_TOGGLR, + ST_3OGGLE, + ST_ENTRY, + ST_EFONT, + ST_EFILE, + ST_EFOLDER, + ST_MENU, + ST_RADIO, + ST_NUMBER, + ST_HSCALE, + ST_HEADER, + ST_LABEL, + ST_ALERTHEAD +}; + +typedef struct +{ + int type; + char *label; + int offset; + char *tooltip; + char const *const *list; + int extra; +} setting; + + +static const setting textbox_settings[] = +{ + {ST_HEADER, N_("Text Box Appearance"),0,0,0}, + {ST_EFONT, N_("Font:"), P_OFFSETNL(font_normal), 0, 0, sizeof prefs.font_normal}, + {ST_EFILE, N_("Background image:"), P_OFFSETNL(background), 0, 0, sizeof prefs.background}, + {ST_NUMBER, N_("Scrollback lines:"), P_OFFINTNL(max_lines),0,0,100000}, + {ST_TOGGLE, N_("Colored nick names"), P_OFFINTNL(colorednicks), + N_("Give each person on IRC a different color"),0,0}, + {ST_TOGGLR, N_("Indent nick names"), P_OFFINTNL(indent_nicks), + N_("Make nick names right-justified"),0,0}, + {ST_TOGGLE, N_("Transparent background"), P_OFFINTNL(transparent),0,0,0}, + {ST_TOGGLR, N_("Show marker line"), P_OFFINTNL(show_marker), + N_("Insert a red line after the last read text."),0,0}, + {ST_HEADER, N_("Transparency Settings"), 0,0,0}, + {ST_HSCALE, N_("Red:"), P_OFFINTNL(tint_red),0,0,0}, + {ST_HSCALE, N_("Green:"), P_OFFINTNL(tint_green),0,0,0}, + {ST_HSCALE, N_("Blue:"), P_OFFINTNL(tint_blue),0,0,0}, + + {ST_HEADER, N_("Time Stamps"),0,0,0}, + {ST_TOGGLE, N_("Enable time stamps"), P_OFFINTNL(timestamp),0,0,2}, + {ST_ENTRY, N_("Time stamp format:"), P_OFFSETNL(stamp_format), + N_("See strftime manpage for details."),0,sizeof prefs.stamp_format}, + + {ST_END, 0, 0, 0, 0, 0} +}; + +static const char *const tabcompmenu[] = +{ + N_("A-Z"), + N_("Last-spoke order"), + NULL +}; + +static const setting inputbox_settings[] = +{ + {ST_HEADER, N_("Input box"),0,0,0}, + {ST_TOGGLE, N_("Use the Text box font and colors"), P_OFFINTNL(style_inputbox),0,0,0}, +#if defined(USE_GTKSPELL) || defined(USE_LIBSEXY) + {ST_TOGGLE, N_("Spell checking"), P_OFFINTNL(gui_input_spell),0,0,0}, +#endif + + {ST_HEADER, N_("Nick Completion"),0,0,0}, + {ST_TOGGLE, N_("Automatic nick completion (without TAB key)"), P_OFFINTNL(nickcompletion), + 0,0,0}, + {ST_ENTRY, N_("Nick completion suffix:"), P_OFFSETNL(nick_suffix),0,0,sizeof prefs.nick_suffix}, + {ST_MENU, N_("Nick completion sorted:"), P_OFFINTNL(completion_sort), 0, tabcompmenu, 0}, + +#if 0 /* obsolete */ + {ST_HEADER, N_("Input Box Codes"),0,0,0}, + {ST_TOGGLE, N_("Interpret %nnn as an ASCII value"), P_OFFINTNL(perc_ascii),0,0,0}, + {ST_TOGGLE, N_("Interpret %C, %B as Color, Bold etc"), P_OFFINTNL(perc_color),0,0,0}, +#endif + + {ST_END, 0, 0, 0, 0, 0} +}; + +/*static const char *const lagmenutext[] = +{ + N_("Off"), + N_("Graph"), + N_("Info text"), + N_("Both"), + NULL +};*/ + +static const char *const ulmenutext[] = +{ + N_("A-Z, Ops first"), + N_("A-Z"), + N_("Z-A, Ops last"), + N_("Z-A"), + N_("Unsorted"), + NULL +}; + +static const char *const cspos[] = +{ + N_("Left (Upper)"), + N_("Left (Lower)"), + N_("Right (Upper)"), + N_("Right (Lower)"), + N_("Top"), + N_("Bottom"), + N_("Hidden"), + NULL +}; + +static const char *const ulpos[] = +{ + N_("Left (Upper)"), + N_("Left (Lower)"), + N_("Right (Upper)"), + N_("Right (Lower)"), + NULL +}; + +static const setting userlist_settings[] = +{ + {ST_HEADER, N_("User List"),0,0,0}, + {ST_TOGGLE, N_("Show hostnames in user list"), P_OFFINTNL(showhostname_in_userlist), 0, 0, 0}, + {ST_TOGGLE, N_("Use the Text box font and colors"), P_OFFINTNL(style_namelistgad),0,0,0}, +/* {ST_TOGGLE, N_("Resizable user list"), P_OFFINTNL(paned_userlist),0,0,0},*/ + {ST_MENU, N_("User list sorted by:"), P_OFFINTNL(userlist_sort), 0, ulmenutext, 0}, + {ST_MENU, N_("Show user list at:"), P_OFFINTNL(gui_ulist_pos), 0, ulpos, 1}, + + {ST_HEADER, N_("Away tracking"),0,0,0}, + {ST_TOGGLE, N_("Track the Away status of users and mark them in a different color"), P_OFFINTNL(away_track),0,0,2}, + {ST_NUMBER, N_("On channels smaller than:"), P_OFFINTNL(away_size_max),0,0,10000}, + + {ST_HEADER, N_("Action Upon Double Click"),0,0,0}, + {ST_ENTRY, N_("Execute command:"), P_OFFSETNL(doubleclickuser), 0, 0, sizeof prefs.doubleclickuser}, + +/* {ST_HEADER, N_("Extra Gadgets"),0,0,0}, + {ST_MENU, N_("Lag meter:"), P_OFFINTNL(lagometer), 0, lagmenutext, 0}, + {ST_MENU, N_("Throttle meter:"), P_OFFINTNL(throttlemeter), 0, lagmenutext, 0},*/ + + {ST_END, 0, 0, 0, 0, 0} +}; + +static const char *const tabwin[] = +{ + N_("Windows"), + N_("Tabs"), + NULL +}; + +#if 0 +static const char *const focusnewtabsmenu[] = +{ + N_("Never"), + N_("Always"), + N_("Only requested tabs"), + NULL +}; +#endif + +static const char *const swtype[] = +{ + N_("Tabs"), /* 0 tabs */ + "", /* 1 reserved */ + N_("Tree"), /* 2 tree */ + NULL +}; + +static const setting tabs_settings[] = +{ + /*{ST_HEADER, N_("Channel Switcher"),0,0,0},*/ + {ST_RADIO, N_("Switcher type:"),P_OFFINTNL(tab_layout), 0, swtype, 0}, + {ST_TOGGLE, N_("Open an extra tab for server messages"), P_OFFINTNL(use_server_tab), 0, 0, 0}, + {ST_TOGGLE, N_("Open an extra tab for server notices"), P_OFFINTNL(notices_tabs), 0, 0, 0}, + {ST_TOGGLE, N_("Open a new tab when you receive a private message"), P_OFFINTNL(autodialog), 0, 0, 0}, + {ST_TOGGLE, N_("Sort tabs in alphabetical order"), P_OFFINTNL(tab_sort), 0, 0, 0}, + {ST_TOGGLE, N_("Smaller text"), P_OFFINTNL(tab_small), 0, 0, 0}, +#if 0 + {ST_MENU, N_("Focus new tabs:"), P_OFFINTNL(newtabstofront), 0, focusnewtabsmenu, 0}, +#endif + {ST_MENU, N_("Show channel switcher at:"), P_OFFINTNL(tab_pos), 0, cspos, 1}, + {ST_NUMBER, N_("Shorten tab labels to:"), P_OFFINTNL(truncchans), 0, (const char **)N_("letters."), 99}, + + {ST_HEADER, N_("Tabs or Windows"),0,0,0}, + {ST_MENU, N_("Open channels in:"), P_OFFINTNL(tabchannels), 0, tabwin, 0}, + {ST_MENU, N_("Open dialogs in:"), P_OFFINTNL(privmsgtab), 0, tabwin, 0}, + {ST_MENU, N_("Open utilities in:"), P_OFFINTNL(windows_as_tabs), N_("Open DCC, Ignore, Notify etc, in tabs or windows?"), tabwin, 0}, + + {ST_END, 0, 0, 0, 0, 0} +}; + +static const char *const dccaccept[] = +{ + N_("No"), + N_("Yes"), + N_("Browse for save folder every time"), + NULL +}; + +static const setting filexfer_settings[] = +{ + {ST_HEADER, N_("Files and Directories"), 0, 0, 0}, + {ST_MENU, N_("Auto accept file offers:"), P_OFFINTNL(autodccsend), 0, dccaccept, 0}, + {ST_EFOLDER,N_("Download files to:"), P_OFFSETNL(dccdir), 0, 0, sizeof prefs.dccdir}, + {ST_EFOLDER,N_("Move completed files to:"), P_OFFSETNL(dcc_completed_dir), 0, 0, sizeof prefs.dcc_completed_dir}, + {ST_TOGGLE, N_("Save nick name in filenames"), P_OFFINTNL(dccwithnick), 0, 0, 0}, + + {ST_HEADER, N_("Network Settings"), 0, 0, 0}, + {ST_TOGGLE, N_("Get my address from the IRC server"), P_OFFINTNL(ip_from_server), + N_("Asks the IRC server for your real address. Use this if you have a 192.168.*.* address!"), 0, 0}, + {ST_ENTRY, N_("DCC IP address:"), P_OFFSETNL(dcc_ip_str), + N_("Claim you are at this address when offering files."), 0, sizeof prefs.dcc_ip_str}, + {ST_NUMBER, N_("First DCC send port:"), P_OFFINTNL(first_dcc_send_port), 0, 0, 65535}, + {ST_NUMBER, N_("Last DCC send port:"), P_OFFINTNL(last_dcc_send_port), 0, + (const char **)N_("!Leave ports at zero for full range."), 65535}, + + {ST_HEADER, N_("Maximum File Transfer Speeds (bytes per second)"), 0, 0, 0}, + {ST_NUMBER, N_("One upload:"), P_OFFINTNL(dcc_max_send_cps), + N_("Maximum speed for one transfer"), 0, 1000000}, + {ST_NUMBER, N_("One download:"), P_OFFINTNL(dcc_max_get_cps), + N_("Maximum speed for one transfer"), 0, 1000000}, + {ST_NUMBER, N_("All uploads combined:"), P_OFFINTNL(dcc_global_max_send_cps), + N_("Maximum speed for all files"), 0, 1000000}, + {ST_NUMBER, N_("All downloads combined:"), P_OFFINTNL(dcc_global_max_get_cps), + N_("Maximum speed for all files"), 0, 1000000}, + + {ST_END, 0, 0, 0, 0, 0} +}; + +static const int balloonlist[3] = +{ + P_OFFINTNL(input_balloon_chans), P_OFFINTNL(input_balloon_priv), P_OFFINTNL(input_balloon_hilight) +}; + +static const int trayblinklist[3] = +{ + P_OFFINTNL(input_tray_chans), P_OFFINTNL(input_tray_priv), P_OFFINTNL(input_tray_hilight) +}; + +static const int taskbarlist[3] = +{ + P_OFFINTNL(input_flash_chans), P_OFFINTNL(input_flash_priv), P_OFFINTNL(input_flash_hilight) +}; + +static const int beeplist[3] = +{ + P_OFFINTNL(input_beep_chans), P_OFFINTNL(input_beep_priv), P_OFFINTNL(input_beep_hilight) +}; + +static const setting alert_settings[] = +{ + {ST_HEADER, N_("Alerts"),0,0,0}, + + {ST_ALERTHEAD}, +#ifndef WIN32 + {ST_3OGGLE, N_("Show tray balloons on:"), 0, 0, (void *)balloonlist, 0}, +#endif + {ST_3OGGLE, N_("Blink tray icon on:"), 0, 0, (void *)trayblinklist, 0}, + {ST_3OGGLE, N_("Blink task bar on:"), 0, 0, (void *)taskbarlist, 0}, + {ST_3OGGLE, N_("Make a beep sound on:"), 0, 0, (void *)beeplist, 0}, + + {ST_TOGGLE, N_("Enable system tray icon"), P_OFFINTNL(gui_tray), 0, 0, 0}, + + {ST_HEADER, N_("Highlighted Messages"),0,0,0}, + {ST_LABEL, N_("Highlighted messages are ones where your nickname is mentioned, but also:"), 0, 0, 0, 1}, + + {ST_ENTRY, N_("Extra words to highlight:"), P_OFFSETNL(irc_extra_hilight), 0, 0, sizeof prefs.irc_extra_hilight}, + {ST_ENTRY, N_("Nick names not to highlight:"), P_OFFSETNL(irc_no_hilight), 0, 0, sizeof prefs.irc_no_hilight}, + {ST_ENTRY, N_("Nick names to always highlight:"), P_OFFSETNL(irc_nick_hilight), 0, 0, sizeof prefs.irc_nick_hilight}, + {ST_LABEL, N_("Separate multiple words with commas.\nWildcards are accepted.")}, + {ST_END, 0, 0, 0, 0, 0} +}; + +static const setting general_settings[] = +{ + {ST_HEADER, N_("Default Messages"),0,0,0}, + {ST_ENTRY, N_("Quit:"), P_OFFSETNL(quitreason), 0, 0, sizeof prefs.quitreason}, + {ST_ENTRY, N_("Leave channel:"), P_OFFSETNL(partreason), 0, 0, sizeof prefs.partreason}, + {ST_ENTRY, N_("Away:"), P_OFFSETNL(awayreason), 0, 0, sizeof prefs.awayreason}, + + {ST_HEADER, N_("Away"),0,0,0}, + {ST_TOGGLE, N_("Announce away messages"), P_OFFINTNL(show_away_message), + N_("Announce your away messages to all channels"), 0, 0}, + {ST_TOGGLE, N_("Show away once"), P_OFFINTNL(show_away_once), N_("Show identical away messages only once"), 0, 0}, + {ST_TOGGLE, N_("Automatically unmark away"), P_OFFINTNL(auto_unmark_away), N_("Unmark yourself as away before sending messages"), 0, 0}, + {ST_END, 0, 0, 0, 0, 0} +}; + +#if 0 +static const setting advanced_settings[] = +{ + {ST_HEADER, N_("Advanced Settings"),0,0,0}, + {ST_NUMBER, N_("Auto reconnect delay:"), P_OFFINTNL(recon_delay), 0, 0, 9999}, + {ST_TOGGLE, N_("Display MODEs in raw form"), P_OFFINTNL(raw_modes), 0, 0, 0}, + {ST_TOGGLE, N_("Whois on notify"), P_OFFINTNL(whois_on_notifyonline), N_("Sends a /WHOIS when a user comes online in your notify list"), 0, 0}, + {ST_TOGGLE, N_("Hide join and part messages"), P_OFFINTNL(confmode), N_("Hide channel join/part messages by default"), 0, 0}, + {ST_HEADER, N_("Auto Open DCC Windows"),0,0,0}, + {ST_TOGGLE, N_("Send window"), P_OFFINTNL(autoopendccsendwindow), 0, 0, 0}, + {ST_TOGGLE, N_("Receive window"), P_OFFINTNL(autoopendccrecvwindow), 0, 0, 0}, + {ST_TOGGLE, N_("Chat window"), P_OFFINTNL(autoopendccchatwindow), 0, 0, 0}, + + {ST_END, 0, 0, 0, 0, 0} +}; +#endif + +static const setting logging_settings[] = +{ + {ST_HEADER, N_("Logging"),0,0,0}, + {ST_TOGGLE, N_("Display scrollback from previous session"), P_OFFINTNL(text_replay), 0, 0, 0}, + {ST_TOGGLE, N_("Enable logging of conversations to disk"), P_OFFINTNL(logging), 0, 0, 2}, + {ST_ENTRY, N_("Log filename:"), P_OFFSETNL(logmask), 0, 0, sizeof prefs.logmask}, + {ST_LABEL, N_("%s=Server %c=Channel %n=Network.")}, + + {ST_HEADER, N_("Time Stamps"),0,0,0}, + {ST_TOGGLE, N_("Insert timestamps in logs"), P_OFFINTNL(timestamp_logs), 0, 0, 2}, + {ST_ENTRY, N_("Log timestamp format:"), P_OFFSETNL(timestamp_log_format), 0, 0, sizeof prefs.timestamp_log_format}, + {ST_LABEL, N_("See strftime manpage for details.")}, + + {ST_END, 0, 0, 0, 0, 0} +}; + +static const char *const proxytypes[] = +{ + N_("(Disabled)"), + N_("Wingate"), + N_("Socks4"), + N_("Socks5"), + N_("HTTP"), +#ifdef USE_MSPROXY + N_("MS Proxy (ISA)"), +#endif + NULL +}; + +static const char *const proxyuse[] = +{ + N_("All Connections"), + N_("IRC Server Only"), + N_("DCC Get Only"), + NULL +}; + +static const setting network_settings[] = +{ + {ST_HEADER, N_("Your Address"), 0, 0, 0, 0}, + {ST_ENTRY, N_("Bind to:"), P_OFFSETNL(hostname), 0, 0, sizeof prefs.hostname}, + {ST_LABEL, N_("Only useful for computers with multiple addresses.")}, + + {ST_HEADER, N_("Proxy Server"), 0, 0, 0, 0}, + {ST_ENTRY, N_("Hostname:"), P_OFFSETNL(proxy_host), 0, 0, sizeof prefs.proxy_host}, + {ST_NUMBER, N_("Port:"), P_OFFINTNL(proxy_port), 0, 0, 65535}, + {ST_MENU, N_("Type:"), P_OFFINTNL(proxy_type), 0, proxytypes, 0}, + {ST_MENU, N_("Use proxy for:"), P_OFFINTNL(proxy_use), 0, proxyuse, 0}, + + {ST_HEADER, N_("Proxy Authentication"), 0, 0, 0, 0}, +#ifdef USE_MSPROXY + {ST_TOGGLE, N_("Use Authentication (MS Proxy, HTTP or Socks5 only)"), P_OFFINTNL(proxy_auth), 0, 0, 0}, +#else + {ST_TOGGLE, N_("Use Authentication (HTTP or Socks5 only)"), P_OFFINTNL(proxy_auth), 0, 0, 0}, +#endif + {ST_ENTRY, N_("Username:"), P_OFFSETNL(proxy_user), 0, 0, sizeof prefs.proxy_user}, + {ST_ENTRY, N_("Password:"), P_OFFSETNL(proxy_pass), 0, GINT_TO_POINTER(1), sizeof prefs.proxy_pass}, + + {ST_END, 0, 0, 0, 0, 0} +}; + +#define setup_get_str(pr,set) (((char *)pr)+set->offset) +#define setup_get_int(pr,set) *(((int *)pr)+set->offset) +#define setup_get_int3(pr,off) *(((int *)pr)+off) + +#define setup_set_int(pr,set,num) *((int *)pr+set->offset)=num +#define setup_set_str(pr,set,str) strcpy(((char *)pr)+set->offset,str) + + +static void +setup_3oggle_cb (GtkToggleButton *but, unsigned int *setting) +{ + *setting = but->active; +} + +static void +setup_headlabel (GtkWidget *tab, int row, int col, char *text) +{ + GtkWidget *label; + char buf[128]; + char *sp; + + snprintf (buf, sizeof (buf), "<b><span size=\"smaller\">%s</span></b>", text); + sp = strchr (buf + 17, ' '); + if (sp) + *sp = '\n'; + + label = gtk_label_new (NULL); + gtk_label_set_markup (GTK_LABEL (label), buf); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (tab), label, col, col + 1, row, row + 1, 0, 0, 4, 0); +} + +static void +setup_create_alert_header (GtkWidget *tab, int row, const setting *set) +{ + setup_headlabel (tab, row, 3, _("Channel Message")); + setup_headlabel (tab, row, 4, _("Private Message")); + setup_headlabel (tab, row, 5, _("Highlighted Message")); +} + +/* makes 3 toggles side-by-side */ + +static void +setup_create_3oggle (GtkWidget *tab, int row, const setting *set) +{ + GtkWidget *label, *wid; + int *offsets = (int *)set->list; + + label = gtk_label_new (_(set->label)); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (tab), label, 2, 3, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); + + wid = gtk_check_button_new (); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wid), + setup_get_int3 (&setup_prefs, offsets[0])); + g_signal_connect (G_OBJECT (wid), "toggled", + G_CALLBACK (setup_3oggle_cb), ((int *)&setup_prefs) + offsets[0]); + gtk_table_attach (GTK_TABLE (tab), wid, 3, 4, row, row + 1, 0, 0, 0, 0); + + wid = gtk_check_button_new (); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wid), + setup_get_int3 (&setup_prefs, offsets[1])); + g_signal_connect (G_OBJECT (wid), "toggled", + G_CALLBACK (setup_3oggle_cb), ((int *)&setup_prefs) + offsets[1]); + gtk_table_attach (GTK_TABLE (tab), wid, 4, 5, row, row + 1, 0, 0, 0, 0); + + wid = gtk_check_button_new (); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wid), + setup_get_int3 (&setup_prefs, offsets[2])); + g_signal_connect (G_OBJECT (wid), "toggled", + G_CALLBACK (setup_3oggle_cb), ((int *)&setup_prefs) + offsets[2]); + gtk_table_attach (GTK_TABLE (tab), wid, 5, 6, row, row + 1, 0, 0, 0, 0); +} + +static void +setup_toggle_cb (GtkToggleButton *but, const setting *set) +{ + GtkWidget *label, *disable_wid; + + setup_set_int (&setup_prefs, set, but->active ? 1 : 0); + + /* does this toggle also enable/disable another widget? */ + disable_wid = g_object_get_data (G_OBJECT (but), "nxt"); + if (disable_wid) + { + gtk_widget_set_sensitive (disable_wid, but->active); + label = g_object_get_data (G_OBJECT (disable_wid), "lbl"); + gtk_widget_set_sensitive (label, but->active); + } +} + +static void +setup_create_toggleR (GtkWidget *tab, int row, const setting *set) +{ + GtkWidget *wid; + + wid = gtk_check_button_new_with_label (_(set->label)); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wid), + setup_get_int (&setup_prefs, set)); + g_signal_connect (G_OBJECT (wid), "toggled", + G_CALLBACK (setup_toggle_cb), (gpointer)set); + if (set->tooltip) + add_tip (wid, _(set->tooltip)); + gtk_table_attach (GTK_TABLE (tab), wid, 4, 5, row, row + 1, + GTK_EXPAND | GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); +} + +static GtkWidget * +setup_create_toggleL (GtkWidget *tab, int row, const setting *set) +{ + GtkWidget *wid; + + wid = gtk_check_button_new_with_label (_(set->label)); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wid), + setup_get_int (&setup_prefs, set)); + g_signal_connect (G_OBJECT (wid), "toggled", + G_CALLBACK (setup_toggle_cb), (gpointer)set); + if (set->tooltip) + add_tip (wid, _(set->tooltip)); + gtk_table_attach (GTK_TABLE (tab), wid, 2, row==6 ? 6 : 4, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); + + return wid; +} + +#if 0 +static void +setup_create_toggle (GtkWidget *box, int row, const setting *set) +{ + GtkWidget *wid; + + wid = gtk_check_button_new_with_label (_(set->label)); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wid), + setup_get_int (&setup_prefs, set)); + g_signal_connect (G_OBJECT (wid), "toggled", + G_CALLBACK (setup_toggle_cb), (gpointer)set); + if (set->tooltip) + add_tip (wid, _(set->tooltip)); + gtk_box_pack_start (GTK_BOX (box), wid, 0, 0, 0); +} +#endif + +static GtkWidget * +setup_create_italic_label (char *text) +{ + GtkWidget *label; + char buf[256]; + + label = gtk_label_new (NULL); + snprintf (buf, sizeof (buf), "<i><span size=\"smaller\">%s</span></i>", text); + gtk_label_set_markup (GTK_LABEL (label), buf); + gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_CENTER); + + return label; +} + +static void +setup_spin_cb (GtkSpinButton *spin, const setting *set) +{ + setup_set_int (&setup_prefs, set, gtk_spin_button_get_value_as_int (spin)); +} + +static GtkWidget * +setup_create_spin (GtkWidget *table, int row, const setting *set) +{ + GtkWidget *label, *wid, *rbox, *align; + char *text; + + label = gtk_label_new (_(set->label)); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), label, 2, 3, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); + + align = gtk_alignment_new (0.0, 0.5, 0.0, 0.0); + gtk_table_attach (GTK_TABLE (table), align, 3, 4, row, row + 1, + GTK_EXPAND | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + + rbox = gtk_hbox_new (0, 0); + gtk_container_add (GTK_CONTAINER (align), rbox); + + wid = gtk_spin_button_new_with_range (0, set->extra, 1); + g_object_set_data (G_OBJECT (wid), "lbl", label); + if (set->tooltip) + add_tip (wid, _(set->tooltip)); + gtk_spin_button_set_value (GTK_SPIN_BUTTON (wid), + setup_get_int (&setup_prefs, set)); + g_signal_connect (G_OBJECT (wid), "value_changed", + G_CALLBACK (setup_spin_cb), (gpointer)set); + gtk_box_pack_start (GTK_BOX (rbox), wid, 0, 0, 0); + + if (set->list) + { + text = _((char *)set->list); + if (text[0] == '!') + label = setup_create_italic_label (text + 1); + else + label = gtk_label_new (text); + gtk_box_pack_start (GTK_BOX (rbox), label, 0, 0, 6); + } + + return wid; +} + +static gint +setup_apply_tint (int *tag) +{ + prefs.tint_red = setup_prefs.tint_red; + prefs.tint_green = setup_prefs.tint_green; + prefs.tint_blue = setup_prefs.tint_blue; + mg_update_xtext (current_sess->gui->xtext); + *tag = 0; + return 0; +} + +static void +setup_hscale_cb (GtkHScale *wid, const setting *set) +{ + static int tag = 0; + + setup_set_int (&setup_prefs, set, gtk_range_get_value(GTK_RANGE(wid))); + if(tag == 0) + tag = g_idle_add ((GSourceFunc)setup_apply_tint, &tag); +} + +static void +setup_create_hscale (GtkWidget *table, int row, const setting *set) +{ + GtkWidget *wid; + + wid = gtk_label_new (_(set->label)); + gtk_misc_set_alignment (GTK_MISC (wid), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), wid, 2, 3, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); + + wid = gtk_hscale_new_with_range (0., 255., 1.); + gtk_scale_set_value_pos (GTK_SCALE (wid), GTK_POS_RIGHT); + gtk_range_set_value (GTK_RANGE (wid), setup_get_int (&setup_prefs, set)); + g_signal_connect (G_OBJECT(wid), "value_changed", + G_CALLBACK (setup_hscale_cb), (gpointer)set); + gtk_table_attach (GTK_TABLE (table), wid, 3, 6, row, row + 1, + GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0); +} + + +static GtkWidget *proxy_user; /* username GtkEntry */ +static GtkWidget *proxy_pass; /* password GtkEntry */ + +static void +setup_menu_cb (GtkWidget *cbox, const setting *set) +{ + int n = gtk_combo_box_get_active (GTK_COMBO_BOX (cbox)); + + /* set the prefs.<field> */ + setup_set_int (&setup_prefs, set, n + set->extra); + + if (set->list == proxytypes) + { + /* only HTTP and Socks5 can use a username/pass */ + gtk_widget_set_sensitive (proxy_user, (n == 3 || n == 4 || n == 5)); + gtk_widget_set_sensitive (proxy_pass, (n == 3 || n == 4 || n == 5)); + } +} + +static void +setup_radio_cb (GtkWidget *item, const setting *set) +{ + if (GTK_TOGGLE_BUTTON (item)->active) + { + int n = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (item), "n")); + /* set the prefs.<field> */ + setup_set_int (&setup_prefs, set, n); + } +} + +static int +setup_create_radio (GtkWidget *table, int row, const setting *set) +{ + GtkWidget *wid, *hbox; + int i; + const char **text = (const char **)set->list; + GSList *group; + + wid = gtk_label_new (_(set->label)); + gtk_misc_set_alignment (GTK_MISC (wid), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), wid, 2, 3, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); + + hbox = gtk_hbox_new (0, 0); + gtk_table_attach (GTK_TABLE (table), hbox, 3, 4, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + + i = 0; + group = NULL; + while (text[i]) + { + if (text[i][0] != 0) + { + wid = gtk_radio_button_new_with_mnemonic (group, _(text[i])); + /*if (set->tooltip) + add_tip (wid, _(set->tooltip));*/ + group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (wid)); + gtk_container_add (GTK_CONTAINER (hbox), wid); + if (i == setup_get_int (&setup_prefs, set)) + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wid), TRUE); + g_object_set_data (G_OBJECT (wid), "n", GINT_TO_POINTER (i)); + g_signal_connect (G_OBJECT (wid), "toggled", + G_CALLBACK (setup_radio_cb), (gpointer)set); + } + i++; + row++; + } + + return i; +} + +/* +static const char *id_strings[] = +{ + "", + "*", + "%C4*%C18%B%B", + "%U" +}; + +static void +setup_id_menu_cb (GtkWidget *item, char *dest) +{ + int n = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (item), "n")); + + strcpy (dest, id_strings[n]); +} + +static void +setup_create_id_menu (GtkWidget *table, char *label, int row, char *dest) +{ + GtkWidget *wid, *menu, *item; + int i, def = 0; + static const char *text[] = + { + ("(disabled)"), + ("A star (*)"), + ("A red star (*)"), + ("Underlined") + }; + + wid = gtk_label_new (label); + gtk_misc_set_alignment (GTK_MISC (wid), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), wid, 2, 3, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); + + wid = gtk_option_menu_new (); + menu = gtk_menu_new (); + + for (i = 0; i < 4; i++) + { + if (strcmp (id_strings[i], dest) == 0) + { + def = i; + break; + } + } + + i = 0; + while (text[i]) + { + item = gtk_menu_item_new_with_label (_(text[i])); + g_object_set_data (G_OBJECT (item), "n", GINT_TO_POINTER (i)); + + gtk_widget_show (item); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (setup_id_menu_cb), dest); + i++; + } + + gtk_option_menu_set_menu (GTK_OPTION_MENU (wid), menu); + gtk_option_menu_set_history (GTK_OPTION_MENU (wid), def); + + gtk_table_attach (GTK_TABLE (table), wid, 3, 4, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); +} + +*/ + +static void +setup_create_menu (GtkWidget *table, int row, const setting *set) +{ + GtkWidget *wid, *cbox, *box; + const char **text = (const char **)set->list; + int i; + + wid = gtk_label_new (_(set->label)); + gtk_misc_set_alignment (GTK_MISC (wid), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), wid, 2, 3, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); + + cbox = gtk_combo_box_new_text (); + + for (i = 0; text[i]; i++) + gtk_combo_box_append_text (GTK_COMBO_BOX (cbox), _(text[i])); + + gtk_combo_box_set_active (GTK_COMBO_BOX (cbox), + setup_get_int (&setup_prefs, set) - set->extra); + g_signal_connect (G_OBJECT (cbox), "changed", + G_CALLBACK (setup_menu_cb), (gpointer)set); + + box = gtk_hbox_new (0, 0); + gtk_box_pack_start (GTK_BOX (box), cbox, 0, 0, 0); + gtk_table_attach (GTK_TABLE (table), box, 3, 4, row, row + 1, + GTK_EXPAND | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); +} + +static void +setup_filereq_cb (GtkWidget *entry, char *file) +{ + if (file) + { + if (file[0]) + gtk_entry_set_text (GTK_ENTRY (entry), file); + } +} + +static void +setup_browsefile_cb (GtkWidget *button, GtkWidget *entry) +{ + gtkutil_file_req (_("Select an Image File"), setup_filereq_cb, entry, NULL, 0); +} + +static void +setup_fontsel_destroy (GtkWidget *button, GtkFontSelectionDialog *dialog) +{ + font_dialog = NULL; +} + +static void +setup_fontsel_cb (GtkWidget *button, GtkFontSelectionDialog *dialog) +{ + GtkWidget *entry; + char *font_name; + + entry = g_object_get_data (G_OBJECT (button), "e"); + font_name = gtk_font_selection_dialog_get_font_name (dialog); + + gtk_entry_set_text (GTK_ENTRY (entry), font_name); + + g_free (font_name); + gtk_widget_destroy (GTK_WIDGET (dialog)); + font_dialog = NULL; +} + +static void +setup_fontsel_cancel (GtkWidget *button, GtkFontSelectionDialog *dialog) +{ + gtk_widget_destroy (GTK_WIDGET (dialog)); + font_dialog = NULL; +} + +static void +setup_browsefolder_cb (GtkWidget *button, GtkEntry *entry) +{ + gtkutil_file_req (_("Select Download Folder"), setup_filereq_cb, entry, entry->text, FRF_CHOOSEFOLDER); +} + +static void +setup_browsefont_cb (GtkWidget *button, GtkWidget *entry) +{ + GtkFontSelection *sel; + GtkFontSelectionDialog *dialog; + + dialog = (GtkFontSelectionDialog *) gtk_font_selection_dialog_new (_("Select font")); + font_dialog = (GtkWidget *)dialog; /* global var */ + + sel = (GtkFontSelection *) dialog->fontsel; + + if (GTK_ENTRY (entry)->text[0]) + gtk_font_selection_set_font_name (sel, GTK_ENTRY (entry)->text); + + g_object_set_data (G_OBJECT (dialog->ok_button), "e", entry); + + g_signal_connect (G_OBJECT (dialog), "destroy", + G_CALLBACK (setup_fontsel_destroy), dialog); + g_signal_connect (G_OBJECT (dialog->ok_button), "clicked", + G_CALLBACK (setup_fontsel_cb), dialog); + g_signal_connect (G_OBJECT (dialog->cancel_button), "clicked", + G_CALLBACK (setup_fontsel_cancel), dialog); + + gtk_widget_show (GTK_WIDGET (dialog)); +} + +static void +setup_entry_cb (GtkEntry *entry, setting *set) +{ + int size; + int pos; + int len = strlen (entry->text); + unsigned char *p = entry->text; + + /* need to truncate? */ + if (len >= set->extra) + { + len = pos = 0; + while (1) + { + size = g_utf8_skip [*p]; + len += size; + p += size; + /* truncate to "set->extra" BYTES */ + if (len >= set->extra) + { + gtk_editable_delete_text (GTK_EDITABLE (entry), pos, -1); + break; + } + pos++; + } + } + else + { + setup_set_str (&setup_prefs, set, entry->text); + } +} + +static void +setup_create_label (GtkWidget *table, int row, const setting *set) +{ + gtk_table_attach (GTK_TABLE (table), setup_create_italic_label (_(set->label)), + set->extra ? 1 : 3, 5, row, row + 1, GTK_FILL, + GTK_SHRINK | GTK_FILL, 0, 0); +} + +static GtkWidget * +setup_create_entry (GtkWidget *table, int row, const setting *set) +{ + GtkWidget *label; + GtkWidget *wid, *bwid; + + label = gtk_label_new (_(set->label)); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), label, 2, 3, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); + + wid = gtk_entry_new (); + g_object_set_data (G_OBJECT (wid), "lbl", label); + if (set->list) + gtk_entry_set_visibility (GTK_ENTRY (wid), FALSE); + if (set->tooltip) + add_tip (wid, _(set->tooltip)); + gtk_entry_set_max_length (GTK_ENTRY (wid), set->extra - 1); + gtk_entry_set_text (GTK_ENTRY (wid), setup_get_str (&setup_prefs, set)); + g_signal_connect (G_OBJECT (wid), "changed", + G_CALLBACK (setup_entry_cb), (gpointer)set); + + if (set->offset == P_OFFSETNL(proxy_user)) + proxy_user = wid; + if (set->offset == P_OFFSETNL(proxy_pass)) + proxy_pass = wid; + + /* only http and Socks5 can auth */ + if ( (set->offset == P_OFFSETNL(proxy_pass) || + set->offset == P_OFFSETNL(proxy_user)) && + (setup_prefs.proxy_type != 4 && setup_prefs.proxy_type != 3 && setup_prefs.proxy_type != 5) ) + gtk_widget_set_sensitive (wid, FALSE); + + if (set->type == ST_ENTRY) + gtk_table_attach (GTK_TABLE (table), wid, 3, 6, row, row + 1, + GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0); + else + { + gtk_table_attach (GTK_TABLE (table), wid, 3, 5, row, row + 1, + GTK_EXPAND | GTK_FILL, GTK_SHRINK, 0, 0); + bwid = gtk_button_new_with_label (_("Browse...")); + gtk_table_attach (GTK_TABLE (table), bwid, 5, 6, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_FILL, 0, 0); + if (set->type == ST_EFILE) + g_signal_connect (G_OBJECT (bwid), "clicked", + G_CALLBACK (setup_browsefile_cb), wid); + if (set->type == ST_EFONT) + g_signal_connect (G_OBJECT (bwid), "clicked", + G_CALLBACK (setup_browsefont_cb), wid); + if (set->type == ST_EFOLDER) + g_signal_connect (G_OBJECT (bwid), "clicked", + G_CALLBACK (setup_browsefolder_cb), wid); + } + + return wid; +} + +static void +setup_create_header (GtkWidget *table, int row, char *labeltext) +{ + GtkWidget *label; + char buf[128]; + + if (row == 0) + snprintf (buf, sizeof (buf), "<b>%s</b>", _(labeltext)); + else + snprintf (buf, sizeof (buf), "\n<b>%s</b>", _(labeltext)); + + label = gtk_label_new (NULL); + gtk_label_set_markup (GTK_LABEL (label), buf); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), label, 0, 4, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 5); +} + +static GtkWidget * +setup_create_frame (GtkWidget **left, GtkWidget *box) +{ + GtkWidget *tab, *hbox, *inbox = box; + + tab = gtk_table_new (3, 2, FALSE); + gtk_container_set_border_width (GTK_CONTAINER (tab), 6); + gtk_table_set_row_spacings (GTK_TABLE (tab), 2); + gtk_table_set_col_spacings (GTK_TABLE (tab), 3); + gtk_container_add (GTK_CONTAINER (inbox), tab); + + hbox = gtk_hbox_new (FALSE, 0); + gtk_container_add (GTK_CONTAINER (inbox), hbox); + + *left = gtk_vbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (hbox), *left, 0, 0, 0); + + return tab; +} + +static void +open_data_cb (GtkWidget *button, gpointer data) +{ + fe_open_url (get_xdir_utf8 ()); +} + +static GtkWidget * +setup_create_page (const setting *set) +{ + int i, row, do_disable; + GtkWidget *tab, *box, *left; + GtkWidget *wid = NULL, *prev; + + box = gtk_vbox_new (FALSE, 1); + gtk_container_set_border_width (GTK_CONTAINER (box), 6); + + tab = setup_create_frame (&left, box); + + i = row = do_disable = 0; + while (set[i].type != ST_END) + { + prev = wid; + + switch (set[i].type) + { + case ST_HEADER: + setup_create_header (tab, row, set[i].label); + break; + case ST_EFONT: + case ST_ENTRY: + case ST_EFILE: + case ST_EFOLDER: + wid = setup_create_entry (tab, row, &set[i]); + break; + case ST_TOGGLR: + row--; + setup_create_toggleR (tab, row, &set[i]); + break; + case ST_TOGGLE: + wid = setup_create_toggleL (tab, row, &set[i]); + do_disable = set[i].extra; + break; + case ST_3OGGLE: + setup_create_3oggle (tab, row, &set[i]); + break; + case ST_MENU: + setup_create_menu (tab, row, &set[i]); + break; + case ST_RADIO: + row += setup_create_radio (tab, row, &set[i]); + break; + case ST_NUMBER: + wid = setup_create_spin (tab, row, &set[i]); + break; + case ST_HSCALE: + setup_create_hscale (tab, row, &set[i]); + break; + case ST_LABEL: + setup_create_label (tab, row, &set[i]); + break; + case ST_ALERTHEAD: + setup_create_alert_header (tab, row, &set[i]); + } + + /* will this toggle disable the "next" widget? */ + do_disable--; + if (do_disable == 0) + { + /* setup_toggle_cb uses this data */ + g_object_set_data (G_OBJECT (prev), "nxt", wid); + /* force initial sensitive state */ + gtk_widget_set_sensitive (wid, GTK_TOGGLE_BUTTON (prev)->active); + gtk_widget_set_sensitive (g_object_get_data (G_OBJECT (wid), "lbl"), + GTK_TOGGLE_BUTTON (prev)->active); + } + + i++; + row++; + } + +#if 0 + if (set == general_settings) + { + setup_create_id_menu (tab, _("Mark identified users with:"), + row, setup_prefs.irc_id_ytext); + setup_create_id_menu (tab, _("Mark not-identified users with:"), + row + 1, setup_prefs.irc_id_ntext); + } +#endif + + if (set == logging_settings) + { + GtkWidget *but = gtk_button_new_with_label (_("Open Data Folder")); + gtk_box_pack_start (GTK_BOX (left), but, 0, 0, 0); + g_signal_connect (G_OBJECT (but), "clicked", + G_CALLBACK (open_data_cb), 0); + } + + return box; +} + +static void +setup_color_ok_cb (GtkWidget *button, GtkWidget *dialog) +{ + GtkColorSelectionDialog *cdialog = GTK_COLOR_SELECTION_DIALOG (dialog); + GdkColor *col; + GdkColor old_color; + GtkStyle *style; + + col = g_object_get_data (G_OBJECT (button), "c"); + old_color = *col; + + button = g_object_get_data (G_OBJECT (button), "b"); + + if (!GTK_IS_WIDGET (button)) + { + gtk_widget_destroy (dialog); + return; + } + + color_change = TRUE; + + gtk_color_selection_get_current_color (GTK_COLOR_SELECTION (cdialog->colorsel), col); + + gdk_colormap_alloc_color (gtk_widget_get_colormap (button), col, TRUE, TRUE); + + style = gtk_style_new (); + style->bg[0] = *col; + gtk_widget_set_style (button, style); + g_object_unref (style); + + /* is this line correct?? */ + gdk_colormap_free_colors (gtk_widget_get_colormap (button), &old_color, 1); + + gtk_widget_destroy (dialog); +} + +static void +setup_color_cb (GtkWidget *button, gpointer userdata) +{ + GtkWidget *dialog; + GtkColorSelectionDialog *cdialog; + GdkColor *color; + + color = &colors[GPOINTER_TO_INT (userdata)]; + + dialog = gtk_color_selection_dialog_new (_("Select color")); + cdialog = GTK_COLOR_SELECTION_DIALOG (dialog); + + gtk_widget_hide (cdialog->help_button); + g_signal_connect (G_OBJECT (cdialog->ok_button), "clicked", + G_CALLBACK (setup_color_ok_cb), dialog); + g_signal_connect (G_OBJECT (cdialog->cancel_button), "clicked", + G_CALLBACK (gtkutil_destroy), dialog); + g_object_set_data (G_OBJECT (cdialog->ok_button), "c", color); + g_object_set_data (G_OBJECT (cdialog->ok_button), "b", button); + gtk_widget_set_sensitive (cdialog->help_button, FALSE); + gtk_color_selection_set_current_color (GTK_COLOR_SELECTION (cdialog->colorsel), color); + gtk_widget_show (dialog); +} + +static void +setup_create_color_button (GtkWidget *table, int num, int row, int col) +{ + GtkWidget *but; + GtkStyle *style; + char buf[64]; + + if (num > 31) + strcpy (buf, "<span size=\"x-small\"> </span>"); + else + /* 12345678901 23456789 01 23456789 */ + sprintf (buf, "<span size=\"x-small\">%d</span>", num); + but = gtk_button_new_with_label (" "); + gtk_label_set_markup (GTK_LABEL (GTK_BIN (but)->child), buf); + /* win32 build uses this to turn off themeing */ + g_object_set_data (G_OBJECT (but), "xchat-color", (gpointer)1); + gtk_table_attach (GTK_TABLE (table), but, col, col+1, row, row+1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + g_signal_connect (G_OBJECT (but), "clicked", + G_CALLBACK (setup_color_cb), GINT_TO_POINTER (num)); + style = gtk_style_new (); + style->bg[GTK_STATE_NORMAL] = colors[num]; + gtk_widget_set_style (but, style); + g_object_unref (style); +} + +static void +setup_create_other_colorR (char *text, int num, int row, GtkWidget *tab) +{ + GtkWidget *label; + + label = gtk_label_new (text); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (tab), label, 5, 9, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); + setup_create_color_button (tab, num, row, 9); +} + +static void +setup_create_other_color (char *text, int num, int row, GtkWidget *tab) +{ + GtkWidget *label; + + label = gtk_label_new (text); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (tab), label, 2, 3, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); + setup_create_color_button (tab, num, row, 3); +} + +static GtkWidget * +setup_create_color_page (void) +{ + GtkWidget *tab, *box, *label; + int i; + + box = gtk_vbox_new (FALSE, 0); + gtk_container_set_border_width (GTK_CONTAINER (box), 6); + + tab = gtk_table_new (9, 2, FALSE); + gtk_container_set_border_width (GTK_CONTAINER (tab), 6); + gtk_table_set_row_spacings (GTK_TABLE (tab), 2); + gtk_table_set_col_spacings (GTK_TABLE (tab), 3); + gtk_container_add (GTK_CONTAINER (box), tab); + + setup_create_header (tab, 0, N_("Text Colors")); + + label = gtk_label_new (_("mIRC colors:")); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (tab), label, 2, 3, 1, 2, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); + + for (i = 0; i < 16; i++) + setup_create_color_button (tab, i, 1, i+3); + + label = gtk_label_new (_("Local colors:")); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (tab), label, 2, 3, 2, 3, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); + + for (i = 16; i < 32; i++) + setup_create_color_button (tab, i, 2, (i+3) - 16); + + setup_create_other_color (_("Foreground:"), COL_FG, 3, tab); + setup_create_other_colorR (_("Background:"), COL_BG, 3, tab); + + setup_create_header (tab, 5, N_("Marking Text")); + + setup_create_other_color (_("Foreground:"), COL_MARK_FG, 6, tab); + setup_create_other_colorR (_("Background:"), COL_MARK_BG, 6, tab); + + setup_create_header (tab, 8, N_("Interface Colors")); + + setup_create_other_color (_("New data:"), COL_NEW_DATA, 9, tab); + setup_create_other_colorR (_("Marker line:"), COL_MARKER, 9, tab); + setup_create_other_color (_("New message:"), COL_NEW_MSG, 10, tab); + setup_create_other_colorR (_("Away user:"), COL_AWAY, 10, tab); + setup_create_other_color (_("Highlight:"), COL_HILIGHT, 11, tab); + + return box; +} + +/* === GLOBALS for sound GUI === */ + +static GtkWidget *sndprog_entry; +static GtkWidget *sndfile_entry; +static GtkWidget *snddir_entry; +static int ignore_changed = FALSE; + +extern struct text_event te[]; /* text.c */ +extern char *sound_files[]; + +static void +setup_snd_apply (void) +{ + strcpy (setup_prefs.sounddir, GTK_ENTRY (snddir_entry)->text); + strcpy (setup_prefs.soundcmd, GTK_ENTRY (sndprog_entry)->text); +} + +static void +setup_snd_populate (GtkTreeView * treeview) +{ + GtkListStore *store; + GtkTreeIter iter; + GtkTreeSelection *sel; + GtkTreePath *path; + int i; + + sel = gtk_tree_view_get_selection (treeview); + store = (GtkListStore *)gtk_tree_view_get_model (treeview); + + for (i = NUM_XP-1; i >= 0; i--) + { + gtk_list_store_prepend (store, &iter); + if (sound_files[i]) + gtk_list_store_set (store, &iter, 0, te[i].name, 1, sound_files[i], 2, i, -1); + else + gtk_list_store_set (store, &iter, 0, te[i].name, 1, "", 2, i, -1); + if (i == last_selected_row) + { + gtk_tree_selection_select_iter (sel, &iter); + path = gtk_tree_model_get_path (GTK_TREE_MODEL (store), &iter); + if (path) + { + gtk_tree_view_scroll_to_cell (treeview, path, NULL, TRUE, 0.5, 0.5); + gtk_tree_view_set_cursor (treeview, path, NULL, FALSE); + gtk_tree_path_free (path); + } + } + } +} + +static int +setup_snd_get_selected (GtkTreeSelection *sel, GtkTreeIter *iter) +{ + int n; + GtkTreeModel *model; + + if (!gtk_tree_selection_get_selected (sel, &model, iter)) + return -1; + + gtk_tree_model_get (model, iter, 2, &n, -1); + return n; +} + +static void +setup_snd_row_cb (GtkTreeSelection *sel, gpointer user_data) +{ + int n; + GtkTreeIter iter; + + n = setup_snd_get_selected (sel, &iter); + if (n == -1) + return; + last_selected_row = n; + + ignore_changed = TRUE; + if (sound_files[n]) + gtk_entry_set_text (GTK_ENTRY (sndfile_entry), sound_files[n]); + else + gtk_entry_set_text (GTK_ENTRY (sndfile_entry), ""); + ignore_changed = FALSE; +} + +static void +setup_snd_add_columns (GtkTreeView * treeview) +{ + GtkCellRenderer *renderer; + GtkTreeModel *model; + + /* event column */ + renderer = gtk_cell_renderer_text_new (); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview), + -1, _("Event"), renderer, + "text", 0, NULL); + + /* file column */ + renderer = gtk_cell_renderer_text_new (); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview), + -1, _("Sound file"), renderer, + "text", 1, NULL); + + model = GTK_TREE_MODEL (gtk_list_store_new (3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT)); + gtk_tree_view_set_model (GTK_TREE_VIEW (treeview), model); + g_object_unref (model); +} + +static void +setup_autotoggle_cb (GtkToggleButton *but, GtkToggleButton *ext) +{ + if (but->active) + { + setup_prefs.soundcmd[0] = 0; + gtk_entry_set_text (GTK_ENTRY (sndprog_entry), ""); + gtk_widget_set_sensitive (sndprog_entry, FALSE); + } else + { + gtk_widget_set_sensitive (sndprog_entry, TRUE); + } +} + +static void +setup_snd_filereq_cb (GtkWidget *entry, char *file) +{ + if (file) + { + if (file[0]) + gtk_entry_set_text (GTK_ENTRY (entry), file); + } +} + +static void +setup_snd_browse_cb (GtkWidget *button, GtkEntry *entry) +{ + gtkutil_file_req (_("Select a sound file"), setup_snd_filereq_cb, entry, NULL, 0); +} + +static void +setup_snd_play_cb (GtkWidget *button, GtkEntry *entry) +{ + sound_play (entry->text, FALSE); +} + +static void +setup_snd_changed_cb (GtkEntry *ent, GtkTreeView *tree) +{ + int n; + GtkTreeIter iter; + GtkListStore *store; + GtkTreeSelection *sel; + + if (ignore_changed) + return; + + sel = gtk_tree_view_get_selection (tree); + n = setup_snd_get_selected (sel, &iter); + if (n == -1) + return; + + /* get the new sound file */ + if (sound_files[n]) + free (sound_files[n]); + sound_files[n] = strdup (GTK_ENTRY (ent)->text); + + /* update the TreeView list */ + store = (GtkListStore *)gtk_tree_view_get_model (tree); + gtk_list_store_set (store, &iter, 1, sound_files[n], -1); + + gtk_widget_set_sensitive (cancel_button, FALSE); +} + +static GtkWidget * +setup_create_sound_page (void) +{ + GtkWidget *vbox1; + GtkWidget *vbox2; + GtkWidget *table2; + GtkWidget *label2; + GtkWidget *label3; + GtkWidget *radio_external; + GSList *radio_group = NULL; + GtkWidget *radio_auto; + GtkWidget *label4; + GtkWidget *entry3; + GtkWidget *scrolledwindow1; + GtkWidget *sound_tree; + GtkWidget *table1; + GtkWidget *sound_label; + GtkWidget *sound_browse; + GtkWidget *sound_play; + GtkTreeSelection *sel; + + vbox1 = gtk_vbox_new (FALSE, 0); + gtk_container_set_border_width (GTK_CONTAINER (vbox1), 6); + gtk_widget_show (vbox1); + + vbox2 = gtk_vbox_new (FALSE, 0); + gtk_widget_show (vbox2); + gtk_container_add (GTK_CONTAINER (vbox1), vbox2); + + table2 = gtk_table_new (4, 3, FALSE); + gtk_widget_show (table2); + gtk_box_pack_start (GTK_BOX (vbox2), table2, FALSE, TRUE, 8); + gtk_table_set_row_spacings (GTK_TABLE (table2), 2); + gtk_table_set_col_spacings (GTK_TABLE (table2), 4); + + label2 = gtk_label_new (_("Sound playing method:")); + gtk_widget_show (label2); + gtk_table_attach (GTK_TABLE (table2), label2, 0, 1, 0, 1, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment (GTK_MISC (label2), 0, 0.5); + + label3 = + gtk_label_new_with_mnemonic (_("External sound playing _program:")); + gtk_widget_show (label3); + gtk_table_attach (GTK_TABLE (table2), label3, 0, 1, 2, 3, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment (GTK_MISC (label3), 0, 0.5); + + sndprog_entry = gtk_entry_new (); + if (setup_prefs.soundcmd[0] == 0) + gtk_widget_set_sensitive (sndprog_entry, FALSE); + else + gtk_entry_set_text (GTK_ENTRY (sndprog_entry), setup_prefs.soundcmd); + gtk_widget_show (sndprog_entry); + gtk_table_attach (GTK_TABLE (table2), sndprog_entry, 1, 3, 2, 3, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + radio_external = + gtk_radio_button_new_with_mnemonic (NULL, _("_External program")); + gtk_widget_show (radio_external); + gtk_table_attach (GTK_TABLE (table2), radio_external, 1, 3, 1, 2, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_radio_button_set_group (GTK_RADIO_BUTTON (radio_external), + radio_group); + radio_group = + gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio_external)); + + radio_auto = gtk_radio_button_new_with_mnemonic (NULL, _("_Automatic")); + g_signal_connect (G_OBJECT (radio_auto), "toggled", + G_CALLBACK (setup_autotoggle_cb), radio_external); + gtk_widget_show (radio_auto); + gtk_table_attach (GTK_TABLE (table2), radio_auto, 1, 3, 0, 1, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_radio_button_set_group (GTK_RADIO_BUTTON (radio_auto), + radio_group); + radio_group = + gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio_auto)); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio_auto), setup_prefs.soundcmd[0] == 0); + + label4 = gtk_label_new_with_mnemonic (_("Sound files _directory:")); + gtk_widget_show (label4); + gtk_table_attach (GTK_TABLE (table2), label4, 0, 1, 3, 4, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment (GTK_MISC (label4), 0, 0.5); + + snddir_entry = entry3 = gtk_entry_new (); + gtk_entry_set_text (GTK_ENTRY (entry3), setup_prefs.sounddir); + gtk_widget_show (entry3); + gtk_table_attach (GTK_TABLE (table2), entry3, 1, 3, 3, 4, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL); + gtk_widget_show (scrolledwindow1); + gtk_container_add (GTK_CONTAINER (vbox2), scrolledwindow1); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow1), + GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow1), + GTK_SHADOW_IN); + + sound_tree = gtk_tree_view_new (); + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (sound_tree)); + gtk_tree_selection_set_mode (sel, GTK_SELECTION_SINGLE); + setup_snd_add_columns (GTK_TREE_VIEW (sound_tree)); + setup_snd_populate (GTK_TREE_VIEW (sound_tree)); + g_signal_connect (G_OBJECT (sel), "changed", + G_CALLBACK (setup_snd_row_cb), NULL); + gtk_widget_show (sound_tree); + gtk_container_add (GTK_CONTAINER (scrolledwindow1), sound_tree); + gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (sound_tree), TRUE); + + table1 = gtk_table_new (2, 3, FALSE); + gtk_widget_show (table1); + gtk_box_pack_start (GTK_BOX (vbox2), table1, FALSE, TRUE, 8); + gtk_table_set_row_spacings (GTK_TABLE (table1), 2); + gtk_table_set_col_spacings (GTK_TABLE (table1), 4); + + sound_label = gtk_label_new_with_mnemonic (_("Sound file:")); + gtk_widget_show (sound_label); + gtk_table_attach (GTK_TABLE (table1), sound_label, 0, 1, 0, 1, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment (GTK_MISC (sound_label), 0, 0.5); + + sndfile_entry = gtk_entry_new (); + g_signal_connect (G_OBJECT (sndfile_entry), "changed", + G_CALLBACK (setup_snd_changed_cb), sound_tree); + gtk_widget_show (sndfile_entry); + gtk_table_attach (GTK_TABLE (table1), sndfile_entry, 0, 1, 1, 2, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + sound_browse = gtk_button_new_with_mnemonic (_("_Browse...")); + g_signal_connect (G_OBJECT (sound_browse), "clicked", + G_CALLBACK (setup_snd_browse_cb), sndfile_entry); + gtk_widget_show (sound_browse); + gtk_table_attach (GTK_TABLE (table1), sound_browse, 1, 2, 1, 2, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + +#ifdef GTK_STOCK_MEDIA_PLAY + sound_play = gtk_button_new_from_stock (GTK_STOCK_MEDIA_PLAY); +#else + sound_play = gtk_button_new_with_mnemonic (_("_Play")); +#endif + g_signal_connect (G_OBJECT (sound_play), "clicked", + G_CALLBACK (setup_snd_play_cb), sndfile_entry); + gtk_widget_show (sound_play); + gtk_table_attach (GTK_TABLE (table1), sound_play, 2, 3, 1, 2, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + gtk_label_set_mnemonic_widget (GTK_LABEL (label3), sndprog_entry); + gtk_label_set_mnemonic_widget (GTK_LABEL (label4), entry3); + setup_snd_row_cb (sel, NULL); + + return vbox1; +} + +static void +setup_add_page (const char *title, GtkWidget *book, GtkWidget *tab) +{ + GtkWidget *oframe, *frame, *label, *vvbox; + char buf[128]; + + /* frame for whole page */ + oframe = gtk_frame_new (NULL); + gtk_frame_set_shadow_type (GTK_FRAME (oframe), GTK_SHADOW_IN); + + vvbox = gtk_vbox_new (FALSE, 0); + gtk_container_add (GTK_CONTAINER (oframe), vvbox); + + /* border for the label */ + frame = gtk_frame_new (NULL); + gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_OUT); + gtk_box_pack_start (GTK_BOX (vvbox), frame, FALSE, TRUE, 0); + + /* label */ + label = gtk_label_new (NULL); + snprintf (buf, sizeof (buf), "<b><big>%s</big></b>", _(title)); + gtk_label_set_markup (GTK_LABEL (label), buf); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_misc_set_padding (GTK_MISC (label), 2, 1); + gtk_container_add (GTK_CONTAINER (frame), label); + + gtk_container_add (GTK_CONTAINER (vvbox), tab); + + gtk_notebook_append_page (GTK_NOTEBOOK (book), oframe, NULL); +} + +static const char *const cata[] = +{ + N_("Interface"), + N_("Text box"), + N_("Input box"), + N_("User list"), + N_("Channel switcher"), + N_("Colors"), + NULL, + N_("Chatting"), + N_("Alerts"), + N_("General"), + N_("Logging"), + N_("Sound"), +/* N_("Advanced"),*/ + NULL, + N_("Network"), + N_("Network setup"), + N_("File transfers"), + NULL, + NULL +}; + +static GtkWidget * +setup_create_pages (GtkWidget *box) +{ + GtkWidget *book; + + book = gtk_notebook_new (); + + setup_add_page (cata[1], book, setup_create_page (textbox_settings)); + setup_add_page (cata[2], book, setup_create_page (inputbox_settings)); + setup_add_page (cata[3], book, setup_create_page (userlist_settings)); + setup_add_page (cata[4], book, setup_create_page (tabs_settings)); + setup_add_page (cata[5], book, setup_create_color_page ()); + setup_add_page (cata[8], book, setup_create_page (alert_settings)); + setup_add_page (cata[9], book, setup_create_page (general_settings)); + setup_add_page (cata[10], book, setup_create_page (logging_settings)); + setup_add_page (cata[11], book, setup_create_sound_page ()); + setup_add_page (cata[14], book, setup_create_page (network_settings)); + setup_add_page (cata[15], book, setup_create_page (filexfer_settings)); + + gtk_notebook_set_show_tabs (GTK_NOTEBOOK (book), FALSE); + gtk_notebook_set_show_border (GTK_NOTEBOOK (book), FALSE); + gtk_container_add (GTK_CONTAINER (box), book); + + return book; +} + +static void +setup_tree_cb (GtkTreeView *treeview, GtkWidget *book) +{ + GtkTreeSelection *selection = gtk_tree_view_get_selection (treeview); + GtkTreeIter iter; + GtkTreeModel *model; + int page; + + if (gtk_tree_selection_get_selected (selection, &model, &iter)) + { + gtk_tree_model_get (model, &iter, 1, &page, -1); + if (page != -1) + { + gtk_notebook_set_current_page (GTK_NOTEBOOK (book), page); + last_selected_page = page; + } + } +} + +static gboolean +setup_tree_select_filter (GtkTreeSelection *selection, GtkTreeModel *model, + GtkTreePath *path, gboolean path_selected, + gpointer data) +{ + if (gtk_tree_path_get_depth (path) > 1) + return TRUE; + return FALSE; +} + +static void +setup_create_tree (GtkWidget *box, GtkWidget *book) +{ + GtkWidget *tree; + GtkWidget *frame; + GtkTreeStore *model; + GtkTreeIter iter; + GtkTreeIter child_iter; + GtkTreeIter *sel_iter = NULL; + GtkCellRenderer *renderer; + GtkTreeSelection *sel; + int i, page; + + model = gtk_tree_store_new (2, G_TYPE_STRING, G_TYPE_INT); + + i = 0; + page = 0; + do + { + gtk_tree_store_append (model, &iter, NULL); + gtk_tree_store_set (model, &iter, 0, _(cata[i]), 1, -1, -1); + i++; + + do + { + gtk_tree_store_append (model, &child_iter, &iter); + gtk_tree_store_set (model, &child_iter, 0, _(cata[i]), 1, page, -1); + if (page == last_selected_page) + sel_iter = gtk_tree_iter_copy (&child_iter); + page++; + i++; + } while (cata[i]); + + i++; + + } while (cata[i]); + + tree = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model)); + g_object_unref (G_OBJECT (model)); + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree)); + gtk_tree_selection_set_mode (sel, GTK_SELECTION_BROWSE); + gtk_tree_selection_set_select_function (sel, setup_tree_select_filter, + NULL, NULL); + g_signal_connect (G_OBJECT (tree), "cursor_changed", + G_CALLBACK (setup_tree_cb), book); + + renderer = gtk_cell_renderer_text_new (); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree), + -1, _("Categories"), renderer, "text", 0, NULL); + gtk_tree_view_expand_all (GTK_TREE_VIEW (tree)); + + frame = gtk_frame_new (NULL); + gtk_container_add (GTK_CONTAINER (frame), tree); + gtk_box_pack_start (GTK_BOX (box), frame, 0, 0, 0); + gtk_box_reorder_child (GTK_BOX (box), frame, 0); + + if (sel_iter) + { + gtk_tree_selection_select_iter (sel, sel_iter); + gtk_tree_iter_free (sel_iter); + } +} + +static void +setup_apply_entry_style (GtkWidget *entry) +{ + gtk_widget_modify_base (entry, GTK_STATE_NORMAL, &colors[COL_BG]); + gtk_widget_modify_text (entry, GTK_STATE_NORMAL, &colors[COL_FG]); + gtk_widget_modify_font (entry, input_style->font_desc); +} + +static void +setup_apply_to_sess (session_gui *gui) +{ +#ifdef USE_GTKSPELL + GtkSpell *spell; +#endif + + mg_update_xtext (gui->xtext); + + if (prefs.style_namelistgad) + gtk_widget_set_style (gui->user_tree, input_style); + + if (prefs.style_inputbox) + { + extern char cursor_color_rc[]; + char buf[256]; + sprintf (buf, cursor_color_rc, + (colors[COL_FG].red >> 8), + (colors[COL_FG].green >> 8), + (colors[COL_FG].blue >> 8)); + gtk_rc_parse_string (buf); + + setup_apply_entry_style (gui->input_box); + setup_apply_entry_style (gui->limit_entry); + setup_apply_entry_style (gui->key_entry); + setup_apply_entry_style (gui->topic_entry); + } + + if (prefs.userlistbuttons) + gtk_widget_show (gui->button_box); + else + gtk_widget_hide (gui->button_box); + +#ifdef USE_GTKSPELL + spell = gtkspell_get_from_text_view (GTK_TEXT_VIEW (gui->input_box)); + if (prefs.gui_input_spell) + { + if (!spell) + gtkspell_new_attach (GTK_TEXT_VIEW (gui->input_box), NULL, NULL); + } + else + { + if (spell) + gtkspell_detach (spell); + } +#endif + +#ifdef USE_LIBSEXY + sexy_spell_entry_set_checked ((SexySpellEntry *)gui->input_box, prefs.gui_input_spell); +#endif +} + +static void +unslash (char *dir) +{ + if (dir[0]) + { + int len = strlen (dir) - 1; +#ifdef WIN32 + if (dir[len] == '/' || dir[len] == '\\') +#else + if (dir[len] == '/') +#endif + dir[len] = 0; + } +} + +void +setup_apply_real (int new_pix, int do_ulist, int do_layout) +{ + GSList *list; + session *sess; + int done_main = FALSE; + + /* remove trailing slashes */ + unslash (prefs.dccdir); + unslash (prefs.dcc_completed_dir); + + mkdir_utf8 (prefs.dccdir); + mkdir_utf8 (prefs.dcc_completed_dir); + + if (new_pix) + { + if (channelwin_pix) + g_object_unref (channelwin_pix); + channelwin_pix = pixmap_load_from_file (prefs.background); + } + + input_style = create_input_style (input_style); + + list = sess_list; + while (list) + { + sess = list->data; + if (sess->gui->is_tab) + { + /* only apply to main tabwindow once */ + if (!done_main) + { + done_main = TRUE; + setup_apply_to_sess (sess->gui); + } + } else + { + setup_apply_to_sess (sess->gui); + } + + log_open_or_close (sess); + + if (do_ulist) + userlist_rehash (sess); + + list = list->next; + } + + mg_apply_setup (); + tray_apply_setup (); + + if (do_layout) + menu_change_layout (); +} + +static void +setup_apply (struct xchatprefs *pr) +{ + int new_pix = FALSE; + int noapply = FALSE; + int do_ulist = FALSE; + int do_layout = FALSE; + + if (strcmp (pr->background, prefs.background) != 0) + new_pix = TRUE; + +#define DIFF(a) (pr->a != prefs.a) + + if (DIFF (paned_userlist)) + noapply = TRUE; + if (DIFF (lagometer)) + noapply = TRUE; + if (DIFF (throttlemeter)) + noapply = TRUE; + if (DIFF (showhostname_in_userlist)) + noapply = TRUE; + if (DIFF (tab_small)) + noapply = TRUE; + if (DIFF (tab_sort)) + noapply = TRUE; + if (DIFF (use_server_tab)) + noapply = TRUE; + if (DIFF (style_namelistgad)) + noapply = TRUE; + if (DIFF (truncchans)) + noapply = TRUE; + if (DIFF (tab_layout)) + do_layout = TRUE; + + if (color_change || (DIFF (away_size_max)) || (DIFF (away_track))) + do_ulist = TRUE; + + if ((pr->tab_pos == 5 || pr->tab_pos == 6) && + pr->tab_layout == 2 && pr->tab_pos != prefs.tab_pos) + fe_message (_("You cannot place the tree on the top or bottom!\n" + "Please change to the <b>Tabs</b> layout in the <b>View</b>" + " menu first."), + FE_MSG_WARN | FE_MSG_MARKUP); + + memcpy (&prefs, pr, sizeof (prefs)); + + setup_apply_real (new_pix, do_ulist, do_layout); + + if (noapply) + fe_message (_("Some settings were changed that require a" + " restart to take full effect."), FE_MSG_WARN); + +#ifndef WIN32 + if (prefs.autodccsend == 1) + { + if (!strcmp ((char *)g_get_home_dir (), prefs.dccdir)) + { + fe_message (_("*WARNING*\n" + "Auto accepting DCC to your home directory\n" + "can be dangerous and is exploitable. Eg:\n" + "Someone could send you a .bash_profile"), FE_MSG_WARN); + } + } +#endif +} + +#if 0 +static void +setup_apply_cb (GtkWidget *but, GtkWidget *win) +{ + /* setup_prefs -> xchat */ + setup_apply (&setup_prefs); +} +#endif + +static void +setup_ok_cb (GtkWidget *but, GtkWidget *win) +{ + setup_snd_apply (); + gtk_widget_destroy (win); + setup_apply (&setup_prefs); + save_config (); + palette_save (); +} + +static GtkWidget * +setup_window_open (void) +{ + GtkWidget *wid, *win, *vbox, *hbox, *hbbox; + + win = gtkutil_window_new (_("XChat: Preferences"), "prefs", 0, 0, 3); + + vbox = gtk_vbox_new (FALSE, 5); + gtk_container_set_border_width (GTK_CONTAINER (vbox), 6); + gtk_container_add (GTK_CONTAINER (win), vbox); + + hbox = gtk_hbox_new (FALSE, 4); + gtk_container_add (GTK_CONTAINER (vbox), hbox); + + setup_create_tree (hbox, setup_create_pages (hbox)); + + hbox = gtk_hbox_new (FALSE, 0); + gtk_box_pack_end (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); + + /* prepare the button box */ + hbbox = gtk_hbutton_box_new (); + gtk_box_set_spacing (GTK_BOX (hbbox), 4); + gtk_box_pack_end (GTK_BOX (hbox), hbbox, FALSE, FALSE, 0); + + /* standard buttons */ + /* GNOME doesn't like apply */ +#if 0 + wid = gtk_button_new_from_stock (GTK_STOCK_APPLY); + g_signal_connect (G_OBJECT (wid), "clicked", + G_CALLBACK (setup_apply_cb), win); + gtk_box_pack_start (GTK_BOX (hbbox), wid, FALSE, FALSE, 0); +#endif + + cancel_button = wid = gtk_button_new_from_stock (GTK_STOCK_CANCEL); + g_signal_connect (G_OBJECT (wid), "clicked", + G_CALLBACK (gtkutil_destroy), win); + gtk_box_pack_start (GTK_BOX (hbbox), wid, FALSE, FALSE, 0); + + wid = gtk_button_new_from_stock (GTK_STOCK_OK); + g_signal_connect (G_OBJECT (wid), "clicked", + G_CALLBACK (setup_ok_cb), win); + gtk_box_pack_start (GTK_BOX (hbbox), wid, FALSE, FALSE, 0); + + wid = gtk_hseparator_new (); + gtk_box_pack_end (GTK_BOX (vbox), wid, FALSE, FALSE, 0); + + gtk_widget_show_all (win); + + return win; +} + +static void +setup_close_cb (GtkWidget *win, GtkWidget **swin) +{ + *swin = NULL; + + if (font_dialog) + { + gtk_widget_destroy (font_dialog); + font_dialog = NULL; + } +} + +void +setup_open (void) +{ + static GtkWidget *setup_window = NULL; + + if (setup_window) + { + gtk_window_present (GTK_WINDOW (setup_window)); + return; + } + + memcpy (&setup_prefs, &prefs, sizeof (prefs)); + + color_change = FALSE; + setup_window = setup_window_open (); + + g_signal_connect (G_OBJECT (setup_window), "destroy", + G_CALLBACK (setup_close_cb), &setup_window); +} diff --git a/etc/wyatt8740/src/fe-gtk/sexy-spell-entry.c b/etc/wyatt8740/src/fe-gtk/sexy-spell-entry.c new file mode 100644 index 0000000..d67ffe2 --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/sexy-spell-entry.c @@ -0,0 +1,1329 @@ +/* + * @file libsexy/sexy-icon-entry.c Entry widget + * + * @Copyright (C) 2004-2006 Christian Hammond. + * Some of this code is from gtkspell, Copyright (C) 2002 Evan Martin. + * + * 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 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., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <gtk/gtk.h> +#include "sexy-spell-entry.h" +#include <string.h> +#include <glib/gi18n.h> +#include <sys/types.h> +/*#include "gtkspell-iso-codes.h" +#include "sexy-marshal.h"*/ + +/* + * Bunch of poop to make enchant into a runtime dependency rather than a + * compile-time dependency. This makes it so I don't have to hear the + * complaints from people with binary distributions who don't get spell + * checking because they didn't check their configure output. + */ +struct EnchantDict; +struct EnchantBroker; + +typedef void (*EnchantDictDescribeFn) (const char * const lang_tag, + const char * const provider_name, + const char * const provider_desc, + const char * const provider_file, + void * user_data); + +static struct EnchantBroker * (*enchant_broker_init) (void); +static void (*enchant_broker_free) (struct EnchantBroker * broker); +static void (*enchant_broker_free_dict) (struct EnchantBroker * broker, struct EnchantDict * dict); +static void (*enchant_broker_list_dicts) (struct EnchantBroker * broker, EnchantDictDescribeFn fn, void * user_data); +static struct EnchantDict * (*enchant_broker_request_dict) (struct EnchantBroker * broker, const char *const tag); + +static void (*enchant_dict_add_to_personal) (struct EnchantDict * dict, const char *const word, ssize_t len); +static void (*enchant_dict_add_to_session) (struct EnchantDict * dict, const char *const word, ssize_t len); +static int (*enchant_dict_check) (struct EnchantDict * dict, const char *const word, ssize_t len); +static void (*enchant_dict_describe) (struct EnchantDict * dict, EnchantDictDescribeFn fn, void * user_data); +static void (*enchant_dict_free_suggestions) (struct EnchantDict * dict, char **suggestions); +static void (*enchant_dict_store_replacement) (struct EnchantDict * dict, const char *const mis, ssize_t mis_len, const char *const cor, ssize_t cor_len); +static char ** (*enchant_dict_suggest) (struct EnchantDict * dict, const char *const word, ssize_t len, size_t * out_n_suggs); +static gboolean have_enchant = FALSE; + +struct _SexySpellEntryPriv +{ + struct EnchantBroker *broker; + PangoAttrList *attr_list; + gint mark_character; + GHashTable *dict_hash; + GSList *dict_list; + gchar **words; + gint *word_starts; + gint *word_ends; + gboolean checked; +}; + +static void sexy_spell_entry_class_init(SexySpellEntryClass *klass); +static void sexy_spell_entry_editable_init (GtkEditableClass *iface); +static void sexy_spell_entry_init(SexySpellEntry *entry); +static void sexy_spell_entry_finalize(GObject *obj); +static void sexy_spell_entry_destroy(GtkObject *obj); +static gint sexy_spell_entry_expose(GtkWidget *widget, GdkEventExpose *event); +static gint sexy_spell_entry_button_press(GtkWidget *widget, GdkEventButton *event); + +/* GtkEditable handlers */ +static void sexy_spell_entry_changed(GtkEditable *editable, gpointer data); + +/* Other handlers */ +static gboolean sexy_spell_entry_popup_menu(GtkWidget *widget, SexySpellEntry *entry); + +/* Internal utility functions */ +static gint gtk_entry_find_position (GtkEntry *entry, + gint x); +static gboolean word_misspelled (SexySpellEntry *entry, + int start, + int end); +static gboolean default_word_check (SexySpellEntry *entry, + const gchar *word); +static gboolean sexy_spell_entry_activate_language_internal (SexySpellEntry *entry, + const gchar *lang, + GError **error); +static gchar *get_lang_from_dict (struct EnchantDict *dict); +static void sexy_spell_entry_recheck_all (SexySpellEntry *entry); +static void entry_strsplit_utf8 (GtkEntry *entry, + gchar ***set, + gint **starts, + gint **ends); + +static GtkEntryClass *parent_class = NULL; + +G_DEFINE_TYPE_EXTENDED(SexySpellEntry, sexy_spell_entry, GTK_TYPE_ENTRY, 0, G_IMPLEMENT_INTERFACE(GTK_TYPE_EDITABLE, sexy_spell_entry_editable_init)); + +enum +{ + WORD_CHECK, + LAST_SIGNAL +}; +static guint signals[LAST_SIGNAL] = {0}; + +static gboolean +spell_accumulator(GSignalInvocationHint *hint, GValue *return_accu, const GValue *handler_return, gpointer data) +{ + gboolean ret = g_value_get_boolean(handler_return); + /* Handlers return TRUE if the word is misspelled. In this + * case, it means that we want to stop if the word is checked + * as correct */ + g_value_set_boolean (return_accu, ret); + return ret; +} + +static void +initialize_enchant () +{ + GModule *enchant; + gpointer funcptr; + + enchant = g_module_open("libenchant", 0); + if (enchant == NULL) + { + enchant = g_module_open("libenchant.so.1", 0); + if (enchant == NULL) + return; + } + + have_enchant = TRUE; + +#define MODULE_SYMBOL(name, func) \ + g_module_symbol(enchant, (name), &funcptr); \ + (func) = funcptr; + + MODULE_SYMBOL("enchant_broker_init", enchant_broker_init) + MODULE_SYMBOL("enchant_broker_free", enchant_broker_free) + MODULE_SYMBOL("enchant_broker_free_dict", enchant_broker_free_dict) + MODULE_SYMBOL("enchant_broker_list_dicts", enchant_broker_list_dicts) + MODULE_SYMBOL("enchant_broker_request_dict", enchant_broker_request_dict) + + MODULE_SYMBOL("enchant_dict_add_to_personal", enchant_dict_add_to_personal) + MODULE_SYMBOL("enchant_dict_add_to_session", enchant_dict_add_to_session) + MODULE_SYMBOL("enchant_dict_check", enchant_dict_check) + MODULE_SYMBOL("enchant_dict_describe", enchant_dict_describe) + MODULE_SYMBOL("enchant_dict_free_suggestions", + enchant_dict_free_suggestions) + MODULE_SYMBOL("enchant_dict_store_replacement", + enchant_dict_store_replacement) + MODULE_SYMBOL("enchant_dict_suggest", enchant_dict_suggest) + +#undef MODULE_SYMBOL +} + +static void +sexy_spell_entry_class_init(SexySpellEntryClass *klass) +{ + GObjectClass *gobject_class; + GtkObjectClass *object_class; + GtkWidgetClass *widget_class; + GtkEntryClass *entry_class; + + initialize_enchant(); + + parent_class = g_type_class_peek_parent(klass); + + gobject_class = G_OBJECT_CLASS(klass); + object_class = GTK_OBJECT_CLASS(klass); + widget_class = GTK_WIDGET_CLASS(klass); + entry_class = GTK_ENTRY_CLASS(klass); + + if (have_enchant) + klass->word_check = default_word_check; + + gobject_class->finalize = sexy_spell_entry_finalize; + + object_class->destroy = sexy_spell_entry_destroy; + + widget_class->expose_event = sexy_spell_entry_expose; + widget_class->button_press_event = sexy_spell_entry_button_press; + + /** + * SexySpellEntry::word-check: + * @entry: The entry on which the signal is emitted. + * @word: The word to check. + * + * The ::word-check signal is emitted whenever the entry has to check + * a word. This allows the application to mark words as correct even + * if none of the active dictionaries contain it, such as nicknames in + * a chat client. + * + * Returns: %FALSE to indicate that the word should be marked as + * correct. + */ +/* signals[WORD_CHECK] = g_signal_new("word_check", + G_TYPE_FROM_CLASS(object_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET(SexySpellEntryClass, word_check), + (GSignalAccumulator) spell_accumulator, NULL, + sexy_marshal_BOOLEAN__STRING, + G_TYPE_BOOLEAN, + 1, G_TYPE_STRING);*/ +} + +static void +sexy_spell_entry_editable_init (GtkEditableClass *iface) +{ +} + +static gint +gtk_entry_find_position (GtkEntry *entry, gint x) +{ + PangoLayout *layout; + PangoLayoutLine *line; + const gchar *text; + gint cursor_index; + gint index; + gint pos; + gboolean trailing; + + x = x + entry->scroll_offset; + + layout = gtk_entry_get_layout(entry); + text = pango_layout_get_text(layout); + cursor_index = g_utf8_offset_to_pointer(text, entry->current_pos) - text; + + line = pango_layout_get_lines(layout)->data; + pango_layout_line_x_to_index(line, x * PANGO_SCALE, &index, &trailing); + + if (index >= cursor_index && entry->preedit_length) { + if (index >= cursor_index + entry->preedit_length) { + index -= entry->preedit_length; + } else { + index = cursor_index; + trailing = FALSE; + } + } + + pos = g_utf8_pointer_to_offset (text, text + index); + pos += trailing; + + return pos; +} + +static void +insert_underline(SexySpellEntry *entry, guint start, guint end) +{ + PangoAttribute *ucolor = pango_attr_underline_color_new (65535, 0, 0); + PangoAttribute *unline = pango_attr_underline_new (PANGO_UNDERLINE_ERROR); + + ucolor->start_index = start; + unline->start_index = start; + + ucolor->end_index = end; + unline->end_index = end; + + pango_attr_list_insert (entry->priv->attr_list, ucolor); + pango_attr_list_insert (entry->priv->attr_list, unline); +} + +static void +get_word_extents_from_position(SexySpellEntry *entry, gint *start, gint *end, guint position) +{ + const gchar *text; + gint i, bytes_pos; + + *start = -1; + *end = -1; + + if (entry->priv->words == NULL) + return; + + text = gtk_entry_get_text(GTK_ENTRY(entry)); + bytes_pos = (gint) (g_utf8_offset_to_pointer(text, position) - text); + + for (i = 0; entry->priv->words[i]; i++) { + if (bytes_pos >= entry->priv->word_starts[i] && + bytes_pos <= entry->priv->word_ends[i]) { + *start = entry->priv->word_starts[i]; + *end = entry->priv->word_ends[i]; + return; + } + } +} + +static void +add_to_dictionary(GtkWidget *menuitem, SexySpellEntry *entry) +{ + char *word; + gint start, end; + struct EnchantDict *dict; + + if (!have_enchant) + return; + + get_word_extents_from_position(entry, &start, &end, entry->priv->mark_character); + word = gtk_editable_get_chars(GTK_EDITABLE(entry), start, end); + + dict = (struct EnchantDict *) g_object_get_data(G_OBJECT(menuitem), "enchant-dict"); + if (dict) + enchant_dict_add_to_personal(dict, word, -1); + + g_free(word); + + if (entry->priv->words) { + g_strfreev(entry->priv->words); + g_free(entry->priv->word_starts); + g_free(entry->priv->word_ends); + } + entry_strsplit_utf8(GTK_ENTRY(entry), &entry->priv->words, &entry->priv->word_starts, &entry->priv->word_ends); + sexy_spell_entry_recheck_all(entry); +} + +static void +ignore_all(GtkWidget *menuitem, SexySpellEntry *entry) +{ + char *word; + gint start, end; + GSList *li; + + if (!have_enchant) + return; + + get_word_extents_from_position(entry, &start, &end, entry->priv->mark_character); + word = gtk_editable_get_chars(GTK_EDITABLE(entry), start, end); + + for (li = entry->priv->dict_list; li; li = g_slist_next (li)) { + struct EnchantDict *dict = (struct EnchantDict *) li->data; + enchant_dict_add_to_session(dict, word, -1); + } + + g_free(word); + + if (entry->priv->words) { + g_strfreev(entry->priv->words); + g_free(entry->priv->word_starts); + g_free(entry->priv->word_ends); + } + entry_strsplit_utf8(GTK_ENTRY(entry), &entry->priv->words, &entry->priv->word_starts, &entry->priv->word_ends); + sexy_spell_entry_recheck_all(entry); +} + +static void +replace_word(GtkWidget *menuitem, SexySpellEntry *entry) +{ + char *oldword; + const char *newword; + gint start, end; + gint cursor; + struct EnchantDict *dict; + + if (!have_enchant) + return; + + get_word_extents_from_position(entry, &start, &end, entry->priv->mark_character); + oldword = gtk_editable_get_chars(GTK_EDITABLE(entry), start, end); + newword = gtk_label_get_text(GTK_LABEL(GTK_BIN(menuitem)->child)); + + cursor = gtk_editable_get_position(GTK_EDITABLE(entry)); + /* is the cursor at the end? If so, restore it there */ + if (g_utf8_strlen(gtk_entry_get_text(GTK_ENTRY(entry)), -1) == cursor) + cursor = -1; + else if(cursor > start && cursor <= end) + cursor = start; + + gtk_editable_delete_text(GTK_EDITABLE(entry), start, end); + gtk_editable_set_position(GTK_EDITABLE(entry), start); + gtk_editable_insert_text(GTK_EDITABLE(entry), newword, strlen(newword), + &start); + gtk_editable_set_position(GTK_EDITABLE(entry), cursor); + + dict = (struct EnchantDict *) g_object_get_data(G_OBJECT(menuitem), "enchant-dict"); + + if (dict) + enchant_dict_store_replacement(dict, + oldword, -1, + newword, -1); + + g_free(oldword); +} + +static void +build_suggestion_menu(SexySpellEntry *entry, GtkWidget *menu, struct EnchantDict *dict, const gchar *word) +{ + GtkWidget *mi; + gchar **suggestions; + size_t n_suggestions, i; + + if (!have_enchant) + return; + + suggestions = enchant_dict_suggest(dict, word, -1, &n_suggestions); + + if (suggestions == NULL || n_suggestions == 0) { + /* no suggestions. put something in the menu anyway... */ + GtkWidget *label = gtk_label_new(""); + gtk_label_set_markup(GTK_LABEL(label), _("<i>(no suggestions)</i>")); + + mi = gtk_separator_menu_item_new(); + gtk_container_add(GTK_CONTAINER(mi), label); + gtk_widget_show_all(mi); + gtk_menu_shell_prepend(GTK_MENU_SHELL(menu), mi); + } else { + /* build a set of menus with suggestions */ + for (i = 0; i < n_suggestions; i++) { + if ((i != 0) && (i % 10 == 0)) { + mi = gtk_separator_menu_item_new(); + gtk_widget_show(mi); + gtk_menu_shell_append(GTK_MENU_SHELL(menu), mi); + + mi = gtk_menu_item_new_with_label(_("More...")); + gtk_widget_show(mi); + gtk_menu_shell_append(GTK_MENU_SHELL(menu), mi); + + menu = gtk_menu_new(); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(mi), menu); + } + + mi = gtk_menu_item_new_with_label(suggestions[i]); + g_object_set_data(G_OBJECT(mi), "enchant-dict", dict); + g_signal_connect(G_OBJECT(mi), "activate", G_CALLBACK(replace_word), entry); + gtk_widget_show(mi); + gtk_menu_shell_append(GTK_MENU_SHELL(menu), mi); + } + } + + enchant_dict_free_suggestions(dict, suggestions); +} + +static GtkWidget * +build_spelling_menu(SexySpellEntry *entry, const gchar *word) +{ + struct EnchantDict *dict; + GtkWidget *topmenu, *mi; + gchar *label; + + if (!have_enchant) + return NULL; + + topmenu = gtk_menu_new(); + + if (entry->priv->dict_list == NULL) + return topmenu; + +#if 1 + dict = (struct EnchantDict *) entry->priv->dict_list->data; + build_suggestion_menu(entry, topmenu, dict, word); +#else + /* Suggestions */ + if (g_slist_length(entry->priv->dict_list) == 1) { + dict = (struct EnchantDict *) entry->priv->dict_list->data; + build_suggestion_menu(entry, topmenu, dict, word); + } else { + GSList *li; + GtkWidget *menu; + gchar *lang, *lang_name; + + for (li = entry->priv->dict_list; li; li = g_slist_next (li)) { + dict = (struct EnchantDict *) li->data; + lang = get_lang_from_dict(dict); + lang_name = gtkspell_iso_codes_lookup_name_for_code(lang); + if (lang_name) { + mi = gtk_menu_item_new_with_label(lang_name); + g_free(lang_name); + } else { + mi = gtk_menu_item_new_with_label(lang); + } + g_free(lang); + + gtk_widget_show(mi); + gtk_menu_shell_append(GTK_MENU_SHELL(topmenu), mi); + menu = gtk_menu_new(); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(mi), menu); + build_suggestion_menu(entry, menu, dict, word); + } + } +#endif + + /* Separator */ + mi = gtk_separator_menu_item_new (); + gtk_widget_show(mi); + gtk_menu_shell_append(GTK_MENU_SHELL(topmenu), mi); + + /* + Add to Dictionary */ + label = g_strdup_printf(_("Add \"%s\" to Dictionary"), word); + mi = gtk_image_menu_item_new_with_label(label); + g_free(label); + + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(mi), gtk_image_new_from_stock(GTK_STOCK_ADD, GTK_ICON_SIZE_MENU)); + +#if 1 + dict = (struct EnchantDict *) entry->priv->dict_list->data; + g_object_set_data(G_OBJECT(mi), "enchant-dict", dict); + g_signal_connect(G_OBJECT(mi), "activate", G_CALLBACK(add_to_dictionary), entry); +#else + if (g_slist_length(entry->priv->dict_list) == 1) { + dict = (struct EnchantDict *) entry->priv->dict_list->data; + g_object_set_data(G_OBJECT(mi), "enchant-dict", dict); + g_signal_connect(G_OBJECT(mi), "activate", G_CALLBACK(add_to_dictionary), entry); + } else { + GSList *li; + GtkWidget *menu, *submi; + gchar *lang, *lang_name; + + menu = gtk_menu_new(); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(mi), menu); + + for (li = entry->priv->dict_list; li; li = g_slist_next(li)) { + dict = (struct EnchantDict *)li->data; + lang = get_lang_from_dict(dict); + lang_name = gtkspell_iso_codes_lookup_name_for_code(lang); + if (lang_name) { + submi = gtk_menu_item_new_with_label(lang_name); + g_free(lang_name); + } else { + submi = gtk_menu_item_new_with_label(lang); + } + g_free(lang); + g_object_set_data(G_OBJECT(submi), "enchant-dict", dict); + + g_signal_connect(G_OBJECT(submi), "activate", G_CALLBACK(add_to_dictionary), entry); + + gtk_widget_show(submi); + gtk_menu_shell_append(GTK_MENU_SHELL(menu), submi); + } + } +#endif + + gtk_widget_show_all(mi); + gtk_menu_shell_append(GTK_MENU_SHELL(topmenu), mi); + + /* - Ignore All */ + mi = gtk_image_menu_item_new_with_label(_("Ignore All")); + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(mi), gtk_image_new_from_stock(GTK_STOCK_REMOVE, GTK_ICON_SIZE_MENU)); + g_signal_connect(G_OBJECT(mi), "activate", G_CALLBACK(ignore_all), entry); + gtk_widget_show_all(mi); + gtk_menu_shell_append(GTK_MENU_SHELL(topmenu), mi); + + return topmenu; +} + +static void +sexy_spell_entry_populate_popup(SexySpellEntry *entry, GtkMenu *menu, gpointer data) +{ + GtkWidget *icon, *mi; + gint start, end; + gchar *word; + + if ((have_enchant == FALSE) || (entry->priv->checked == FALSE)) + return; + + if (g_slist_length(entry->priv->dict_list) == 0) + return; + + get_word_extents_from_position(entry, &start, &end, entry->priv->mark_character); + if (start == end) + return; + if (!word_misspelled(entry, start, end)) + return; + + /* separator */ + mi = gtk_separator_menu_item_new(); + gtk_widget_show(mi); + gtk_menu_shell_prepend(GTK_MENU_SHELL(menu), mi); + + /* Above the separator, show the suggestions menu */ + icon = gtk_image_new_from_stock(GTK_STOCK_SPELL_CHECK, GTK_ICON_SIZE_MENU); + mi = gtk_image_menu_item_new_with_label(_("Spelling Suggestions")); + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(mi), icon); + + word = gtk_editable_get_chars(GTK_EDITABLE(entry), start, end); + g_assert(word != NULL); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(mi), build_spelling_menu(entry, word)); + g_free(word); + + gtk_widget_show_all(mi); + gtk_menu_shell_prepend(GTK_MENU_SHELL(menu), mi); +} + +static void +sexy_spell_entry_init(SexySpellEntry *entry) +{ + entry->priv = g_new0(SexySpellEntryPriv, 1); + + entry->priv->dict_hash = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL); + + if (have_enchant) + sexy_spell_entry_activate_default_languages(entry); + + entry->priv->attr_list = pango_attr_list_new(); + + entry->priv->checked = TRUE; + + g_signal_connect(G_OBJECT(entry), "popup-menu", G_CALLBACK(sexy_spell_entry_popup_menu), entry); + g_signal_connect(G_OBJECT(entry), "populate-popup", G_CALLBACK(sexy_spell_entry_populate_popup), NULL); + g_signal_connect(G_OBJECT(entry), "changed", G_CALLBACK(sexy_spell_entry_changed), NULL); +} + +static void +sexy_spell_entry_finalize(GObject *obj) +{ + SexySpellEntry *entry; + + g_return_if_fail(obj != NULL); + g_return_if_fail(SEXY_IS_SPELL_ENTRY(obj)); + + entry = SEXY_SPELL_ENTRY(obj); + + if (entry->priv->attr_list) + pango_attr_list_unref(entry->priv->attr_list); + if (entry->priv->dict_hash) + g_hash_table_destroy(entry->priv->dict_hash); + if (entry->priv->words) + g_strfreev(entry->priv->words); + if (entry->priv->word_starts) + g_free(entry->priv->word_starts); + if (entry->priv->word_ends) + g_free(entry->priv->word_ends); + + if (have_enchant) { + if (entry->priv->broker) { + GSList *li; + for (li = entry->priv->dict_list; li; li = g_slist_next(li)) { + struct EnchantDict *dict = (struct EnchantDict*) li->data; + enchant_broker_free_dict (entry->priv->broker, dict); + } + g_slist_free (entry->priv->dict_list); + + enchant_broker_free(entry->priv->broker); + } + } + + g_free(entry->priv); + + if (G_OBJECT_CLASS(parent_class)->finalize) + G_OBJECT_CLASS(parent_class)->finalize(obj); +} + +static void +sexy_spell_entry_destroy(GtkObject *obj) +{ + SexySpellEntry *entry; + + entry = SEXY_SPELL_ENTRY(obj); + + if (GTK_OBJECT_CLASS(parent_class)->destroy) + GTK_OBJECT_CLASS(parent_class)->destroy(obj); +} + +/** + * sexy_spell_entry_new + * + * Creates a new SexySpellEntry widget. + * + * Returns: a new #SexySpellEntry. + */ +GtkWidget * +sexy_spell_entry_new(void) +{ + return GTK_WIDGET(g_object_new(SEXY_TYPE_SPELL_ENTRY, NULL)); +} + +GQuark +sexy_spell_error_quark(void) +{ + static GQuark q = 0; + if (q == 0) + q = g_quark_from_static_string("sexy-spell-error-quark"); + return q; +} + +static gboolean +default_word_check(SexySpellEntry *entry, const gchar *word) +{ + gboolean result = TRUE; + GSList *li; + + if (!have_enchant) + return result; + + if (g_unichar_isalpha(*word) == FALSE) { + /* We only want to check words */ + return FALSE; + } + for (li = entry->priv->dict_list; li; li = g_slist_next (li)) { + struct EnchantDict *dict = (struct EnchantDict *) li->data; + if (enchant_dict_check(dict, word, strlen(word)) == 0) { + result = FALSE; + break; + } + } + return result; +} + +static gboolean +word_misspelled(SexySpellEntry *entry, int start, int end) +{ + const gchar *text; + gchar *word; + gboolean ret; + + if (start == end) + return FALSE; + text = gtk_entry_get_text(GTK_ENTRY(entry)); + word = g_new0(gchar, end - start + 2); + + g_strlcpy(word, text + start, end - start + 1); + +#if 0 + g_signal_emit(entry, signals[WORD_CHECK], 0, word, &ret); +#else + ret = default_word_check (entry, word); +#endif + + g_free(word); + return ret; +} + +static void +check_word(SexySpellEntry *entry, int start, int end) +{ + PangoAttrIterator *it; + + /* Check to see if we've got any attributes at this position. + * If so, free them, since we'll readd it if the word is misspelled */ + it = pango_attr_list_get_iterator(entry->priv->attr_list); + if (it == NULL) + return; + do { + gint s, e; + pango_attr_iterator_range(it, &s, &e); + if (s == start) { + GSList *attrs = pango_attr_iterator_get_attrs(it); + g_slist_foreach(attrs, (GFunc) pango_attribute_destroy, NULL); + g_slist_free(attrs); + } + } while (pango_attr_iterator_next(it)); + pango_attr_iterator_destroy(it); + + if (word_misspelled(entry, start, end)) + insert_underline(entry, start, end); +} + +static void +sexy_spell_entry_recheck_all(SexySpellEntry *entry) +{ + GdkRectangle rect; + GtkWidget *widget = GTK_WIDGET(entry); + PangoLayout *layout; + int length, i; + + if ((have_enchant == FALSE) || (entry->priv->checked == FALSE)) + return; + + if (g_slist_length(entry->priv->dict_list) == 0) + return; + + /* Remove all existing pango attributes. These will get readded as we check */ + pango_attr_list_unref(entry->priv->attr_list); + entry->priv->attr_list = pango_attr_list_new(); + + /* Loop through words */ + for (i = 0; entry->priv->words[i]; i++) { + length = strlen(entry->priv->words[i]); + if (length == 0) + continue; + check_word(entry, entry->priv->word_starts[i], entry->priv->word_ends[i]); + } + + layout = gtk_entry_get_layout(GTK_ENTRY(entry)); + pango_layout_set_attributes(layout, entry->priv->attr_list); + + if (GTK_WIDGET_REALIZED(GTK_WIDGET(entry))) { + rect.x = 0; rect.y = 0; + rect.width = widget->allocation.width; + rect.height = widget->allocation.height; + gdk_window_invalidate_rect(widget->window, &rect, TRUE); + } +} + +static gint +sexy_spell_entry_expose(GtkWidget *widget, GdkEventExpose *event) +{ + SexySpellEntry *entry = SEXY_SPELL_ENTRY(widget); + GtkEntry *gtk_entry = GTK_ENTRY(widget); + PangoLayout *layout; + + if (entry->priv->checked) { + layout = gtk_entry_get_layout(gtk_entry); + pango_layout_set_attributes(layout, entry->priv->attr_list); + } + + return GTK_WIDGET_CLASS(parent_class)->expose_event (widget, event); +} + +static gint +sexy_spell_entry_button_press(GtkWidget *widget, GdkEventButton *event) +{ + SexySpellEntry *entry = SEXY_SPELL_ENTRY(widget); + GtkEntry *gtk_entry = GTK_ENTRY(widget); + gint pos; + + pos = gtk_entry_find_position(gtk_entry, event->x); + entry->priv->mark_character = pos; + + return GTK_WIDGET_CLASS(parent_class)->button_press_event (widget, event); +} + +static gboolean +sexy_spell_entry_popup_menu(GtkWidget *widget, SexySpellEntry *entry) +{ + /* Menu popped up from a keybinding (menu key or <shift>+F10). Use + * the cursor position as the mark position */ + entry->priv->mark_character = gtk_editable_get_position (GTK_EDITABLE (entry)); + return FALSE; +} + +static void +entry_strsplit_utf8(GtkEntry *entry, gchar ***set, gint **starts, gint **ends) +{ + PangoLayout *layout; + PangoLogAttr *log_attrs; + const gchar *text; + gint n_attrs, n_strings, i, j; + + layout = gtk_entry_get_layout(GTK_ENTRY(entry)); + text = gtk_entry_get_text(GTK_ENTRY(entry)); + pango_layout_get_log_attrs(layout, &log_attrs, &n_attrs); + + /* Find how many words we have */ + n_strings = 0; + for (i = 0; i < n_attrs; i++) + if (log_attrs[i].is_word_start) + n_strings++; + + *set = g_new0(gchar *, n_strings + 1); + *starts = g_new0(gint, n_strings); + *ends = g_new0(gint, n_strings); + + /* Copy out strings */ + for (i = 0, j = 0; i < n_attrs; i++) { + if (log_attrs[i].is_word_start) { + gint cend, bytes; + gchar *start; + + /* Find the end of this string */ + cend = i; + while (!(log_attrs[cend].is_word_end)) + cend++; + + /* Copy sub-string */ + start = g_utf8_offset_to_pointer(text, i); + bytes = (gint) (g_utf8_offset_to_pointer(text, cend) - start); + (*set)[j] = g_new0(gchar, bytes + 1); + (*starts)[j] = (gint) (start - text); + (*ends)[j] = (gint) (start - text + bytes); + g_utf8_strncpy((*set)[j], start, cend - i); + + /* Move on to the next word */ + j++; + } + } + + g_free (log_attrs); +} + +static void +sexy_spell_entry_changed(GtkEditable *editable, gpointer data) +{ + SexySpellEntry *entry = SEXY_SPELL_ENTRY(editable); + if (entry->priv->checked == FALSE) + return; + if (g_slist_length(entry->priv->dict_list) == 0) + return; + + if (entry->priv->words) { + g_strfreev(entry->priv->words); + g_free(entry->priv->word_starts); + g_free(entry->priv->word_ends); + } + entry_strsplit_utf8(GTK_ENTRY(entry), &entry->priv->words, &entry->priv->word_starts, &entry->priv->word_ends); + sexy_spell_entry_recheck_all(entry); +} + +static gboolean +enchant_has_lang(const gchar *lang, GSList *langs) { + GSList *i; + for (i = langs; i; i = g_slist_next(i)) { + if (strcmp(lang, i->data) == 0) { + return TRUE; + } + } + return FALSE; +} + +/** + * sexy_spell_entry_activate_default_languages: + * @entry: A #SexySpellEntry. + * + * Activate spell checking for languages specified in the $LANG + * or $LANGUAGE environment variables. These languages are + * activated by default, so this function need only be called + * if they were previously deactivated. + */ +void +sexy_spell_entry_activate_default_languages(SexySpellEntry *entry) +{ +#if GLIB_CHECK_VERSION (2, 6, 0) + const gchar* const *langs; + int i; + gchar *lastprefix = NULL; + GSList *enchant_langs; + + if (!have_enchant) + return; + + if (!entry->priv->broker) + entry->priv->broker = enchant_broker_init(); + + + langs = g_get_language_names (); + + if (langs == NULL) + return; + + enchant_langs = sexy_spell_entry_get_languages(entry); + + for (i = 0; langs[i]; i++) { + if ((g_strncasecmp(langs[i], "C", 1) != 0) && + (strlen(langs[i]) >= 2) && + enchant_has_lang(langs[i], enchant_langs)) { + if ((lastprefix == NULL) || (g_str_has_prefix(langs[i], lastprefix) == FALSE)) + sexy_spell_entry_activate_language_internal(entry, langs[i], NULL); + if (lastprefix != NULL) + g_free(lastprefix); + lastprefix = g_strndup(langs[i], 2); + } + } + if (lastprefix != NULL) + g_free(lastprefix); + + g_slist_foreach(enchant_langs, (GFunc) g_free, NULL); + g_slist_free(enchant_langs); + + /* If we don't have any languages activated, use "en" */ + if (entry->priv->dict_list == NULL) + sexy_spell_entry_activate_language_internal(entry, "en", NULL); +#else + gchar *lang; + + if (!have_enchant) + return; + + lang = (gchar *) g_getenv("LANG"); + + if (lang != NULL) { + if (g_strncasecmp(lang, "C", 1) == 0) + lang = NULL; + else if (lang[0] == '\0') + lang = NULL; + } + + if (lang == NULL) + lang = "en"; + + sexy_spell_entry_activate_language_internal(entry, lang, NULL); +#endif +} + +static void +get_lang_from_dict_cb(const char * const lang_tag, + const char * const provider_name, + const char * const provider_desc, + const char * const provider_file, + void * user_data) { + gchar **lang = (gchar **)user_data; + *lang = g_strdup(lang_tag); +} + +static gchar * +get_lang_from_dict(struct EnchantDict *dict) +{ + gchar *lang; + + if (!have_enchant) + return NULL; + + enchant_dict_describe(dict, get_lang_from_dict_cb, &lang); + return lang; +} + +static gboolean +sexy_spell_entry_activate_language_internal(SexySpellEntry *entry, const gchar *lang, GError **error) +{ + struct EnchantDict *dict; + + if (!have_enchant) + return FALSE; + + if (!entry->priv->broker) + entry->priv->broker = enchant_broker_init(); + + if (g_hash_table_lookup(entry->priv->dict_hash, lang)) + return TRUE; + + dict = enchant_broker_request_dict(entry->priv->broker, lang); + + if (!dict) { + g_set_error(error, SEXY_SPELL_ERROR, SEXY_SPELL_ERROR_BACKEND, _("enchant error for language: %s"), lang); + return FALSE; + } + + entry->priv->dict_list = g_slist_append(entry->priv->dict_list, (gpointer) dict); + g_hash_table_insert(entry->priv->dict_hash, get_lang_from_dict(dict), (gpointer) dict); + + return TRUE; +} + +static void +dict_describe_cb(const char * const lang_tag, + const char * const provider_name, + const char * const provider_desc, + const char * const provider_file, + void * user_data) +{ + GSList **langs = (GSList **)user_data; + + *langs = g_slist_append(*langs, (gpointer)g_strdup(lang_tag)); +} + +/** + * sexy_spell_entry_get_languages: + * @entry: A #SexySpellEntry. + * + * Retrieve a list of language codes for which dictionaries are available. + * + * Returns: a new #GList object, or %NULL on error. + */ +GSList * +sexy_spell_entry_get_languages(const SexySpellEntry *entry) +{ + GSList *langs = NULL; + + g_return_val_if_fail(entry != NULL, NULL); + g_return_val_if_fail(SEXY_IS_SPELL_ENTRY(entry), NULL); + + if (enchant_broker_list_dicts == NULL) + return NULL; + + if (!entry->priv->broker) + return NULL; + + enchant_broker_list_dicts(entry->priv->broker, dict_describe_cb, &langs); + + return langs; +} + +/** + * sexy_spell_entry_get_language_name: + * @entry: A #SexySpellEntry. + * @lang: The language code to lookup a friendly name for. + * + * Get a friendly name for a given locale. + * + * Returns: The name of the locale. Should be freed with g_free() + */ +gchar * +sexy_spell_entry_get_language_name(const SexySpellEntry *entry, + const gchar *lang) +{ + /*if (have_enchant) + return gtkspell_iso_codes_lookup_name_for_code(lang);*/ + return NULL; +} + +/** + * sexy_spell_entry_language_is_active: + * @entry: A #SexySpellEntry. + * @lang: The language to use, in a form enchant understands. + * + * Determine if a given language is currently active. + * + * Returns: TRUE if the language is active. + */ +gboolean +sexy_spell_entry_language_is_active(const SexySpellEntry *entry, + const gchar *lang) +{ + return (g_hash_table_lookup(entry->priv->dict_hash, lang) != NULL); +} + +/** + * sexy_spell_entry_activate_language: + * @entry: A #SexySpellEntry + * @lang: The language to use in a form Enchant understands. Typically either + * a two letter language code or a locale code in the form xx_XX. + * @error: Return location for error. + * + * Activate spell checking for the language specifed. + * + * Returns: FALSE if there was an error. + */ +gboolean +sexy_spell_entry_activate_language(SexySpellEntry *entry, const gchar *lang, GError **error) +{ + gboolean ret; + + g_return_val_if_fail(entry != NULL, FALSE); + g_return_val_if_fail(SEXY_IS_SPELL_ENTRY(entry), FALSE); + g_return_val_if_fail(lang != NULL && lang != '\0', FALSE); + + if (!have_enchant) + return FALSE; + + if (error) + g_return_val_if_fail(*error == NULL, FALSE); + + ret = sexy_spell_entry_activate_language_internal(entry, lang, error); + + if (ret) { + if (entry->priv->words) { + g_strfreev(entry->priv->words); + g_free(entry->priv->word_starts); + g_free(entry->priv->word_ends); + } + entry_strsplit_utf8(GTK_ENTRY(entry), &entry->priv->words, &entry->priv->word_starts, &entry->priv->word_ends); + sexy_spell_entry_recheck_all(entry); + } + + return ret; +} + +/** + * sexy_spell_entry_deactivate_language: + * @entry: A #SexySpellEntry. + * @lang: The language in a form Enchant understands. Typically either + * a two letter language code or a locale code in the form xx_XX. + * + * Deactivate spell checking for the language specifed. + */ +void +sexy_spell_entry_deactivate_language(SexySpellEntry *entry, const gchar *lang) +{ + g_return_if_fail(entry != NULL); + g_return_if_fail(SEXY_IS_SPELL_ENTRY(entry)); + + if (!have_enchant) + return; + + if (!entry->priv->dict_list) + return; + + if (lang) { + struct EnchantDict *dict; + + dict = g_hash_table_lookup(entry->priv->dict_hash, lang); + if (!dict) + return; + enchant_broker_free_dict(entry->priv->broker, dict); + entry->priv->dict_list = g_slist_remove(entry->priv->dict_list, dict); + g_hash_table_remove (entry->priv->dict_hash, lang); + } else { + /* deactivate all */ + GSList *li; + struct EnchantDict *dict; + + for (li = entry->priv->dict_list; li; li = g_slist_next(li)) { + dict = (struct EnchantDict *)li->data; + enchant_broker_free_dict(entry->priv->broker, dict); + } + + g_slist_free (entry->priv->dict_list); + g_hash_table_destroy (entry->priv->dict_hash); + entry->priv->dict_hash = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL); + entry->priv->dict_list = NULL; + } + + if (entry->priv->words) { + g_strfreev(entry->priv->words); + g_free(entry->priv->word_starts); + g_free(entry->priv->word_ends); + } + entry_strsplit_utf8(GTK_ENTRY(entry), &entry->priv->words, &entry->priv->word_starts, &entry->priv->word_ends); + sexy_spell_entry_recheck_all(entry); +} + +/** + * sexy_spell_entry_set_active_languages: + * @entry: A #SexySpellEntry + * @langs: A list of language codes to activate, in a form Enchant understands. + * Typically either a two letter language code or a locale code in the + * form xx_XX. + * @error: Return location for error. + * + * Activate spell checking for only the languages specified. + * + * Returns: FALSE if there was an error. + */ +gboolean +sexy_spell_entry_set_active_languages(SexySpellEntry *entry, GSList *langs, GError **error) +{ + GSList *li; + + g_return_val_if_fail(entry != NULL, FALSE); + g_return_val_if_fail(SEXY_IS_SPELL_ENTRY(entry), FALSE); + g_return_val_if_fail(langs != NULL, FALSE); + + if (!have_enchant) + return FALSE; + + /* deactivate all languages first */ + sexy_spell_entry_deactivate_language(entry, NULL); + + for (li = langs; li; li = g_slist_next(li)) { + if (sexy_spell_entry_activate_language_internal(entry, + (const gchar *) li->data, error) == FALSE) + return FALSE; + } + if (entry->priv->words) { + g_strfreev(entry->priv->words); + g_free(entry->priv->word_starts); + g_free(entry->priv->word_ends); + } + entry_strsplit_utf8(GTK_ENTRY(entry), &entry->priv->words, &entry->priv->word_starts, &entry->priv->word_ends); + sexy_spell_entry_recheck_all(entry); + return TRUE; +} + +/** + * sexy_spell_entry_get_active_languages: + * @entry: A #SexySpellEntry + * + * Retrieve a list of the currently active languages. + * + * Returns: A GSList of char* values with language codes (en, fr, etc). Both + * the data and the list must be freed by the user. + */ +GSList * +sexy_spell_entry_get_active_languages(SexySpellEntry *entry) +{ + GSList *ret = NULL, *li; + struct EnchantDict *dict; + gchar *lang; + + g_return_val_if_fail(entry != NULL, NULL); + g_return_val_if_fail(SEXY_IS_SPELL_ENTRY(entry), NULL); + + if (!have_enchant) + return NULL; + + for (li = entry->priv->dict_list; li; li = g_slist_next(li)) { + dict = (struct EnchantDict *) li->data; + lang = get_lang_from_dict(dict); + ret = g_slist_append(ret, lang); + } + return ret; +} + +/** + * sexy_spell_entry_is_checked: + * @entry: A #SexySpellEntry. + * + * Queries a #SexySpellEntry and returns whether the entry has spell-checking enabled. + * + * Returns: TRUE if the entry has spell-checking enabled. + */ +gboolean +sexy_spell_entry_is_checked(SexySpellEntry *entry) +{ + return entry->priv->checked; +} + +/** + * sexy_spell_entry_set_checked: + * @entry: A #SexySpellEntry. + * @checked: Whether to enable spell-checking + * + * Sets whether the entry has spell-checking enabled. + */ +void +sexy_spell_entry_set_checked(SexySpellEntry *entry, gboolean checked) +{ + GtkWidget *widget; + + if (entry->priv->checked == checked) + return; + + entry->priv->checked = checked; + widget = GTK_WIDGET(entry); + + if (checked == FALSE && GTK_WIDGET_REALIZED(widget)) { + PangoLayout *layout; + GdkRectangle rect; + + pango_attr_list_unref(entry->priv->attr_list); + entry->priv->attr_list = pango_attr_list_new(); + + layout = gtk_entry_get_layout(GTK_ENTRY(entry)); + pango_layout_set_attributes(layout, entry->priv->attr_list); + + rect.x = 0; rect.y = 0; + rect.width = widget->allocation.width; + rect.height = widget->allocation.height; + gdk_window_invalidate_rect(widget->window, &rect, TRUE); + } else { + if (entry->priv->words) { + g_strfreev(entry->priv->words); + g_free(entry->priv->word_starts); + g_free(entry->priv->word_ends); + } + entry_strsplit_utf8(GTK_ENTRY(entry), &entry->priv->words, &entry->priv->word_starts, &entry->priv->word_ends); + sexy_spell_entry_recheck_all(entry); + } +} diff --git a/etc/wyatt8740/src/fe-gtk/sexy-spell-entry.h b/etc/wyatt8740/src/fe-gtk/sexy-spell-entry.h new file mode 100644 index 0000000..61d1b79 --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/sexy-spell-entry.h @@ -0,0 +1,87 @@ +/* + * @file libsexy/sexy-spell-entry.h Entry widget + * + * @Copyright (C) 2004-2006 Christian Hammond. + * + * 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 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., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ +#ifndef _SEXY_SPELL_ENTRY_H_ +#define _SEXY_SPELL_ENTRY_H_ + +typedef struct _SexySpellEntry SexySpellEntry; +typedef struct _SexySpellEntryClass SexySpellEntryClass; +typedef struct _SexySpellEntryPriv SexySpellEntryPriv; + +#include <gtk/gtkentry.h> + +#define SEXY_TYPE_SPELL_ENTRY (sexy_spell_entry_get_type()) +#define SEXY_SPELL_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SEXY_TYPE_SPELL_ENTRY, SexySpellEntry)) +#define SEXY_SPELL_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SEXY_TYPE_SPELL_ENTRY, SexySpellEntryClass)) +#define SEXY_IS_SPELL_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SEXY_TYPE_SPELL_ENTRY)) +#define SEXY_IS_SPELL_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SEXY_TYPE_SPELL_ENTRY)) +#define SEXY_SPELL_ENTRY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), SEXY_TYPE_SPELL_ENTRY, SexySpellEntryClass)) + +#define SEXY_SPELL_ERROR (sexy_spell_error_quark()) + +typedef enum { + SEXY_SPELL_ERROR_BACKEND, +} SexySpellError; + +struct _SexySpellEntry +{ + GtkEntry parent_object; + + SexySpellEntryPriv *priv; + + void (*gtk_reserved1)(void); + void (*gtk_reserved2)(void); + void (*gtk_reserved3)(void); + void (*gtk_reserved4)(void); +}; + +struct _SexySpellEntryClass +{ + GtkEntryClass parent_class; + + /* Signals */ + gboolean (*word_check)(SexySpellEntry *entry, const gchar *word); + + void (*gtk_reserved1)(void); + void (*gtk_reserved2)(void); + void (*gtk_reserved3)(void); + void (*gtk_reserved4)(void); +}; + +G_BEGIN_DECLS + +GType sexy_spell_entry_get_type(void); +GtkWidget *sexy_spell_entry_new(void); +GQuark sexy_spell_error_quark(void); + +GSList *sexy_spell_entry_get_languages(const SexySpellEntry *entry); +gchar *sexy_spell_entry_get_language_name(const SexySpellEntry *entry, const gchar *lang); +gboolean sexy_spell_entry_language_is_active(const SexySpellEntry *entry, const gchar *lang); +gboolean sexy_spell_entry_activate_language(SexySpellEntry *entry, const gchar *lang, GError **error); +void sexy_spell_entry_deactivate_language(SexySpellEntry *entry, const gchar *lang); +gboolean sexy_spell_entry_set_active_languages(SexySpellEntry *entry, GSList *langs, GError **error); +GSList *sexy_spell_entry_get_active_languages(SexySpellEntry *entry); +gboolean sexy_spell_entry_is_checked(SexySpellEntry *entry); +void sexy_spell_entry_set_checked(SexySpellEntry *entry, gboolean checked); +void sexy_spell_entry_activate_default_languages(SexySpellEntry *entry); + +G_END_DECLS + +#endif diff --git a/etc/wyatt8740/src/fe-gtk/textgui.c b/etc/wyatt8740/src/fe-gtk/textgui.c new file mode 100644 index 0000000..604da44 --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/textgui.c @@ -0,0 +1,456 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <time.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> + +#include "fe-gtk.h" + +#include <gtk/gtkbutton.h> +#include <gtk/gtkentry.h> +#include <gtk/gtkhbox.h> +#include <gtk/gtkhbbox.h> +#include <gtk/gtkliststore.h> +#include <gtk/gtkstock.h> +#include <gtk/gtkvbox.h> +#include <gtk/gtkvpaned.h> +#include <gtk/gtkvscrollbar.h> + +#include "../common/xchat.h" +#include "../common/xchatc.h" +#include "../common/cfgfiles.h" +#include "../common/outbound.h" +#include "../common/fe.h" +#include "../common/text.h" +#include "gtkutil.h" +#include "xtext.h" +#include "maingui.h" +#include "palette.h" +#include "textgui.h" + +extern struct text_event te[]; +extern char *pntevts_text[]; +extern char *pntevts[]; + +static GtkWidget *pevent_dialog = NULL, *pevent_dialog_twid, + *pevent_dialog_entry, + *pevent_dialog_list, *pevent_dialog_hlist; + +enum +{ + COL_EVENT_NAME, + COL_EVENT_TEXT, + COL_ROW, + N_COLUMNS +}; + + +/* this is only used in xtext.c for indented timestamping */ +int +xtext_get_stamp_str (time_t tim, char **ret) +{ + return get_stamp_str (prefs.stamp_format, tim, ret); +} + +static void +PrintTextLine (xtext_buffer *xtbuf, unsigned char *text, int len, int indent, time_t timet) +{ + unsigned char *tab, *new_text; + int leftlen; + + if (len == 0) + len = 1; + + if (!indent) + { + if (prefs.timestamp) + { + int stamp_size; + char *stamp; + + if (timet == 0) + timet = time (0); + + stamp_size = get_stamp_str (prefs.stamp_format, timet, &stamp); + new_text = malloc (len + stamp_size + 1); + memcpy (new_text, stamp, stamp_size); + g_free (stamp); + memcpy (new_text + stamp_size, text, len); + gtk_xtext_append (xtbuf, new_text, len + stamp_size); + free (new_text); + } else + gtk_xtext_append (xtbuf, text, len); + return; + } + + tab = strchr (text, '\t'); + if (tab && tab < (text + len)) + { + leftlen = tab - text; + gtk_xtext_append_indent (xtbuf, + text, leftlen, tab + 1, len - (leftlen + 1), timet); + } else + gtk_xtext_append_indent (xtbuf, 0, 0, text, len, timet); +} + +void +PrintTextRaw (void *xtbuf, unsigned char *text, int indent, time_t stamp) +{ + char *last_text = text; + int len = 0; + int beep_done = FALSE; + + /* split the text into separate lines */ + while (1) + { + switch (*text) + { + case 0: + PrintTextLine (xtbuf, last_text, len, indent, stamp); + return; + case '\n': + PrintTextLine (xtbuf, last_text, len, indent, stamp); + text++; + if (*text == 0) + return; + last_text = text; + len = 0; + break; + case ATTR_BEEP: + *text = ' '; + if (!beep_done) /* beeps may be slow, so only do 1 per line */ + { + beep_done = TRUE; + if (!prefs.filterbeep) + gdk_beep (); + } + default: + text++; + len++; + } + } +} + +static void +pevent_dialog_close (GtkWidget *wid, gpointer arg) +{ + pevent_dialog = NULL; + pevent_save (NULL); +} + +static void +pevent_dialog_update (GtkWidget * wid, GtkWidget * twid) +{ + int len, m; + const char *text; + char *out; + int sig; + GtkTreeIter iter; + GtkListStore *store; + + if (!gtkutil_treeview_get_selected (GTK_TREE_VIEW (pevent_dialog_list), + &iter, COL_ROW, &sig, -1)) + return; + + text = gtk_entry_get_text (GTK_ENTRY (wid)); + len = strlen (text); + + if (pevt_build_string (text, &out, &m) != 0) + { + fe_message (_("There was an error parsing the string"), FE_MSG_ERROR); + return; + } + if (m > (te[sig].num_args & 0x7f)) + { + free (out); + out = malloc (4096); + snprintf (out, 4096, + _("This signal is only passed %d args, $%d is invalid"), + te[sig].num_args & 0x7f, m); + fe_message (out, FE_MSG_WARN); + free (out); + return; + } + + store = (GtkListStore *)gtk_tree_view_get_model (GTK_TREE_VIEW (pevent_dialog_list)); + gtk_list_store_set (store, &iter, COL_EVENT_TEXT, text, -1); + + if (pntevts_text[sig]) + free (pntevts_text[sig]); + if (pntevts[sig]) + free (pntevts[sig]); + + pntevts_text[sig] = malloc (len + 1); + memcpy (pntevts_text[sig], text, len + 1); + pntevts[sig] = out; + + out = malloc (len + 2); + memcpy (out, text, len + 1); + out[len] = '\n'; + out[len + 1] = 0; + check_special_chars (out, TRUE); + + PrintTextRaw (GTK_XTEXT (twid)->buffer, out, 0, 0); + free (out); + + /* save this when we exit */ + prefs.save_pevents = 1; +} + +static void +pevent_dialog_hfill (GtkWidget * list, int e) +{ + int i = 0; + char *text; + GtkTreeIter iter; + GtkListStore *store; + + store = (GtkListStore *)gtk_tree_view_get_model (GTK_TREE_VIEW (pevent_dialog_hlist)); + gtk_list_store_clear (store); + while (i < (te[e].num_args & 0x7f)) + { + text = _(te[e].help[i]); + i++; + if (text[0] == '\001') + text++; + gtk_list_store_insert_with_values (store, &iter, -1, + 0, i, + 1, text, -1); + } +} + +static void +pevent_dialog_unselect (void) +{ + gtk_entry_set_text (GTK_ENTRY (pevent_dialog_entry), ""); + gtk_list_store_clear ((GtkListStore *)gtk_tree_view_get_model (GTK_TREE_VIEW (pevent_dialog_hlist))); +} + +static void +pevent_dialog_select (GtkTreeSelection *sel, gpointer store) +{ + char *text; + int sig; + GtkTreeIter iter; + + if (!gtkutil_treeview_get_selected (GTK_TREE_VIEW (pevent_dialog_list), + &iter, COL_ROW, &sig, -1)) + { + pevent_dialog_unselect (); + } + else + { + gtk_tree_model_get (store, &iter, COL_EVENT_TEXT, &text, -1); + gtk_entry_set_text (GTK_ENTRY (pevent_dialog_entry), text); + g_free (text); + pevent_dialog_hfill (pevent_dialog_hlist, sig); + } +} + +static void +pevent_dialog_fill (GtkWidget * list) +{ + int i; + GtkListStore *store; + GtkTreeIter iter; + + store = (GtkListStore *)gtk_tree_view_get_model (GTK_TREE_VIEW (list)); + gtk_list_store_clear (store); + + i = NUM_XP; + do + { + i--; + gtk_list_store_insert_with_values (store, &iter, 0, + COL_EVENT_NAME, te[i].name, + COL_EVENT_TEXT, pntevts_text[i], + COL_ROW, i, -1); + } + while (i != 0); +} + +static void +pevent_save_req_cb (void *arg1, char *file) +{ + if (file) + pevent_save (file); +} + +static void +pevent_save_cb (GtkWidget * wid, void *data) +{ + if (data) + { + gtkutil_file_req (_("Print Texts File"), pevent_save_req_cb, NULL, + NULL, FRF_WRITE); + return; + } + pevent_save (NULL); +} + +static void +pevent_load_req_cb (void *arg1, char *file) +{ + if (file) + { + pevent_load (file); + pevent_make_pntevts (); + pevent_dialog_fill (pevent_dialog_list); + pevent_dialog_unselect (); + prefs.save_pevents = 1; + } +} + +static void +pevent_load_cb (GtkWidget * wid, void *data) +{ + gtkutil_file_req (_("Print Texts File"), pevent_load_req_cb, NULL, NULL, 0); +} + +static void +pevent_ok_cb (GtkWidget * wid, void *data) +{ + gtk_widget_destroy (pevent_dialog); +} + +static void +pevent_test_cb (GtkWidget * wid, GtkWidget * twid) +{ + int len, n; + char *out, *text; + + for (n = 0; n < NUM_XP; n++) + { + text = _(pntevts_text[n]); + len = strlen (text); + + out = malloc (len + 2); + memcpy (out, text, len + 1); + out[len] = '\n'; + out[len + 1] = 0; + check_special_chars (out, TRUE); + + PrintTextRaw (GTK_XTEXT (twid)->buffer, out, 0, 0); + free (out); + } +} + +void +pevent_dialog_show () +{ + GtkWidget *vbox, *hbox, *tbox, *wid, *bh, *th; + GtkListStore *store, *hstore; + GtkTreeSelection *sel; + + if (pevent_dialog) + { + mg_bring_tofront (pevent_dialog); + return; + } + + pevent_dialog = + mg_create_generic_tab ("edit events", _("Edit Events"), + TRUE, FALSE, pevent_dialog_close, NULL, + 600, 455, &vbox, 0); + + wid = gtk_vpaned_new (); + th = gtk_vbox_new (0, 2); + bh = gtk_vbox_new (0, 2); + gtk_widget_show (th); + gtk_widget_show (bh); + gtk_paned_pack1 (GTK_PANED (wid), th, 1, 1); + gtk_paned_pack2 (GTK_PANED (wid), bh, 0, 1); + gtk_box_pack_start (GTK_BOX (vbox), wid, 1, 1, 0); + gtk_widget_show (wid); + + store = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_INT); + pevent_dialog_list = gtkutil_treeview_new (th, GTK_TREE_MODEL (store), NULL, + COL_EVENT_NAME, _("Event"), + COL_EVENT_TEXT, _("Text"), -1); + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (pevent_dialog_list)); + g_signal_connect (G_OBJECT (sel), "changed", + G_CALLBACK (pevent_dialog_select), store); + + pevent_dialog_twid = gtk_xtext_new (colors, 0); + gtk_xtext_set_tint (GTK_XTEXT (pevent_dialog_twid), prefs.tint_red, prefs.tint_green, prefs.tint_blue); + gtk_xtext_set_background (GTK_XTEXT (pevent_dialog_twid), + channelwin_pix, prefs.transparent); + + pevent_dialog_entry = gtk_entry_new_with_max_length (255); + g_signal_connect (G_OBJECT (pevent_dialog_entry), "activate", + G_CALLBACK (pevent_dialog_update), pevent_dialog_twid); + gtk_box_pack_start (GTK_BOX (bh), pevent_dialog_entry, 0, 0, 0); + gtk_widget_show (pevent_dialog_entry); + + tbox = gtk_hbox_new (0, 0); + gtk_container_add (GTK_CONTAINER (bh), tbox); + gtk_widget_show (tbox); + + gtk_widget_set_usize (pevent_dialog_twid, 150, 20); + gtk_container_add (GTK_CONTAINER (tbox), pevent_dialog_twid); + gtk_xtext_set_font (GTK_XTEXT (pevent_dialog_twid), prefs.font_normal); + + wid = gtk_vscrollbar_new (GTK_XTEXT (pevent_dialog_twid)->adj); + gtk_box_pack_start (GTK_BOX (tbox), wid, FALSE, FALSE, 0); + show_and_unfocus (wid); + + gtk_widget_show (pevent_dialog_twid); + + hstore = gtk_list_store_new (2, G_TYPE_INT, G_TYPE_STRING); + pevent_dialog_hlist = gtkutil_treeview_new (bh, GTK_TREE_MODEL (hstore), + NULL, + 0, _("$ Number"), + 1, _("Description"), -1); + gtk_widget_show (pevent_dialog_hlist); + + pevent_dialog_fill (pevent_dialog_list); + gtk_widget_show (pevent_dialog_list); + + hbox = gtk_hbutton_box_new (); + gtk_box_pack_end (GTK_BOX (vbox), hbox, 0, 0, 2); + /*wid = gtk_button_new_with_label (_("Save")); + gtk_box_pack_end (GTK_BOX (hbox), wid, 0, 0, 0); + gtk_signal_connect (GTK_OBJECT (wid), "clicked", + GTK_SIGNAL_FUNC (pevent_save_cb), NULL); + gtk_widget_show (wid);*/ + gtkutil_button (hbox, GTK_STOCK_SAVE_AS, NULL, pevent_save_cb, + (void *) 1, _("Save As...")); + gtkutil_button (hbox, GTK_STOCK_OPEN, NULL, pevent_load_cb, + (void *) 0, _("Load From...")); + wid = gtk_button_new_with_label (_("Test All")); + gtk_box_pack_end (GTK_BOX (hbox), wid, 0, 0, 0); + g_signal_connect (G_OBJECT (wid), "clicked", + G_CALLBACK (pevent_test_cb), pevent_dialog_twid); + gtk_widget_show (wid); + + wid = gtk_button_new_from_stock (GTK_STOCK_OK); + gtk_box_pack_start (GTK_BOX (hbox), wid, 0, 0, 0); + g_signal_connect (G_OBJECT (wid), "clicked", + G_CALLBACK (pevent_ok_cb), NULL); + gtk_widget_show (wid); + + gtk_widget_show (hbox); + + gtk_widget_show (pevent_dialog); +} diff --git a/etc/wyatt8740/src/fe-gtk/textgui.h b/etc/wyatt8740/src/fe-gtk/textgui.h new file mode 100644 index 0000000..23db584 --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/textgui.h @@ -0,0 +1,2 @@ +void PrintTextRaw (void *xtbuf, unsigned char *text, int indent, time_t stamp); +void pevent_dialog_show (void); diff --git a/etc/wyatt8740/src/fe-gtk/urlgrab.c b/etc/wyatt8740/src/fe-gtk/urlgrab.c new file mode 100644 index 0000000..3ee0d50 --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/urlgrab.c @@ -0,0 +1,231 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> + +#include "fe-gtk.h" + +#include <gtk/gtkhbox.h> +#include <gtk/gtkstock.h> +#include <gtk/gtkhbbox.h> +#include <gtk/gtkscrolledwindow.h> + +#include <gtk/gtkliststore.h> +#include <gtk/gtktreeview.h> +#include <gtk/gtktreeselection.h> +#include <gtk/gtkcellrenderertext.h> + +#include "../common/xchat.h" +#include "../common/cfgfiles.h" +#include "../common/fe.h" +#include "../common/url.h" +#include "../common/tree.h" +#include "gtkutil.h" +#include "menu.h" +#include "maingui.h" +#include "urlgrab.h" + +/* model for the URL treeview */ +enum +{ + URL_COLUMN, + N_COLUMNS +}; + +static GtkWidget *urlgrabberwindow = 0; + + +static gboolean +url_treeview_url_clicked_cb (GtkWidget *view, GdkEventButton *event, + gpointer data) +{ + GtkTreeIter iter; + gchar *url; + + if (!event || + !gtkutil_treeview_get_selected (GTK_TREE_VIEW (view), &iter, + URL_COLUMN, &url, -1)) + { + return FALSE; + } + + switch (event->button) + { + case 1: + if (event->type == GDK_2BUTTON_PRESS) + fe_open_url (url); + break; + case 3: + menu_urlmenu (event, url); + break; + default: + break; + } + g_free (url); + + return FALSE; +} + +static GtkWidget * +url_treeview_new (GtkWidget *box) +{ + GtkListStore *store; + GtkWidget *view; + + store = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING); + g_return_val_if_fail (store != NULL, NULL); + + view = gtkutil_treeview_new (box, GTK_TREE_MODEL (store), NULL, + URL_COLUMN, _("URL"), -1); + g_signal_connect (G_OBJECT (view), "button_press_event", + G_CALLBACK (url_treeview_url_clicked_cb), NULL); + /* don't want column headers */ + gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (view), FALSE); + gtk_widget_show (view); + return view; +} + +static void +url_closegui (GtkWidget *wid, gpointer userdata) +{ + urlgrabberwindow = 0; +} + +static void +url_button_clear (void) +{ + GtkListStore *store; + + url_clear (); + store = GTK_LIST_STORE (g_object_get_data (G_OBJECT (urlgrabberwindow), + "model")); + gtk_list_store_clear (store); +} + +static void +url_button_copy (GtkWidget *widget, gpointer data) +{ + GtkTreeView *view = GTK_TREE_VIEW (data); + GtkTreeIter iter; + gchar *url = NULL; + + if (gtkutil_treeview_get_selected (view, &iter, URL_COLUMN, &url, -1)) + { + gtkutil_copy_to_clipboard (GTK_WIDGET (view), NULL, url); + g_free (url); + } +} + +static void +url_save_callback (void *arg1, char *file) +{ + if( ! file ) + return; + + char *file_tmp = malloc( strlen( file ) + strlen( ".bug147832" ) + 1 ); + if( ! file_tmp ) + return; + + strcpy( file_tmp, file ); + strcat( file_tmp, ".bug147832" ); + + if( url_save( file_tmp, "w", TRUE ) != TRUE ) + { + fprintf( stderr, "url_save_callback: url_save failed (%s)\n", file_tmp ); + free( file_tmp ); + return; + } + + if( xchat_rename_file( file_tmp, file, XOF_FULLPATH ) != 0 ) + { + perror( "url_save_callback: xchat_rename_file() failed" ); + free( file_tmp ); + return; + } + + free( file_tmp ); +} + +static void +url_button_save (void) +{ + gtkutil_file_req (_("Select an output filename"), + url_save_callback, NULL, NULL, FRF_WRITE); +} + +void +fe_url_add (const char *urltext) +{ + GtkListStore *store; + GtkTreeIter iter; + + if (urlgrabberwindow) + { + store = GTK_LIST_STORE (g_object_get_data (G_OBJECT (urlgrabberwindow), + "model")); + gtk_list_store_prepend (store, &iter); + gtk_list_store_set (store, &iter, + URL_COLUMN, urltext, + -1); + } +} + +static int +populate_cb (char *urltext, gpointer userdata) +{ + fe_url_add (urltext); + return TRUE; +} + +void +url_opengui () +{ + GtkWidget *vbox, *hbox, *view; + + if (urlgrabberwindow) + { + mg_bring_tofront (urlgrabberwindow); + return; + } + + urlgrabberwindow = + mg_create_generic_tab ("UrlGrabber", _("XChat: URL Grabber"), FALSE, + TRUE, url_closegui, NULL, 400, 256, &vbox, 0); + view = url_treeview_new (vbox); + g_object_set_data (G_OBJECT (urlgrabberwindow), "model", + gtk_tree_view_get_model (GTK_TREE_VIEW (view))); + + hbox = gtk_hbutton_box_new (); + gtk_button_box_set_layout (GTK_BUTTON_BOX (hbox), GTK_BUTTONBOX_SPREAD); + gtk_container_set_border_width (GTK_CONTAINER (hbox), 5); + gtk_box_pack_end (GTK_BOX (vbox), hbox, 0, 0, 0); + gtk_widget_show (hbox); + + gtkutil_button (hbox, GTK_STOCK_CLEAR, + _("Clear list"), url_button_clear, 0, _("Clear")); + gtkutil_button (hbox, GTK_STOCK_COPY, + _("Copy selected URL"), url_button_copy, view, _("Copy")); + gtkutil_button (hbox, GTK_STOCK_SAVE_AS, + _("Save list to a file"), url_button_save, 0, _("Save As...")); + + gtk_widget_show (urlgrabberwindow); + + tree_foreach (url_tree, (tree_traverse_func *)populate_cb, NULL); +} diff --git a/etc/wyatt8740/src/fe-gtk/urlgrab.h b/etc/wyatt8740/src/fe-gtk/urlgrab.h new file mode 100644 index 0000000..cc53424 --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/urlgrab.h @@ -0,0 +1,2 @@ +void url_autosave (void); +void url_opengui (void); diff --git a/etc/wyatt8740/src/fe-gtk/userlistgui.c b/etc/wyatt8740/src/fe-gtk/userlistgui.c new file mode 100644 index 0000000..f040a6a --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/userlistgui.c @@ -0,0 +1,718 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> + +#include "fe-gtk.h" + +#include <gtk/gtkbox.h> +#include <gtk/gtklabel.h> +#include <gtk/gtkdnd.h> +#include <gtk/gtkentry.h> +#include <gtk/gtktreeview.h> +#include <gtk/gtktreeselection.h> +#include <gtk/gtkscrolledwindow.h> +#include <gtk/gtkcellrendererpixbuf.h> +#include <gtk/gtkcellrenderertext.h> +#include <gtk/gtkliststore.h> +#include <gdk/gdkkeysyms.h> + +#include "../common/xchat.h" +#include "../common/util.h" +#include "../common/userlist.h" +#include "../common/modes.h" +#include "../common/notify.h" +#include "../common/xchatc.h" +#include "gtkutil.h" +#include "palette.h" +#include "maingui.h" +#include "menu.h" +#include "pixmaps.h" +#include "userlistgui.h" + +#ifdef USE_GTKSPELL +#include <gtk/gtktextview.h> +#endif + + +enum +{ + COL_PIX=0, // GdkPixbuf * + COL_NICK=1, // char * + COL_HOST=2, // char * + COL_USER=3, // struct User * + COL_GDKCOLOR=4 // GdkColor * +}; + + +GdkPixbuf * +get_user_icon (server *serv, struct User *user) +{ + char *pre; + int level; + + if (!user) + return NULL; + + /* these ones are hardcoded */ + switch (user->prefix[0]) + { + case 0: return NULL; + case '@': return pix_op; + case '%': return pix_hop; + case '+': return pix_voice; + } + + /* find out how many levels above Op this user is */ + pre = strchr (serv->nick_prefixes, '@'); + if (pre && pre != serv->nick_prefixes) + { + pre--; + level = 0; + while (1) + { + if (pre[0] == user->prefix[0]) + { + switch (level) + { + case 0: return pix_red; /* 1 level above op */ + case 1: return pix_purple; /* 2 levels above op */ + } + break; /* 3+, no icons */ + } + level++; + if (pre == serv->nick_prefixes) + break; + pre--; + } + } + + return NULL; +} + +void +fe_userlist_numbers (session *sess) +{ + char tbuf[256]; + + if (sess == current_tab || !sess->gui->is_tab) + { + if (sess->total) + { + snprintf (tbuf, sizeof (tbuf), _("%d ops, %d total"), sess->ops, sess->total); + tbuf[sizeof (tbuf) - 1] = 0; + gtk_label_set_text (GTK_LABEL (sess->gui->namelistinfo), tbuf); + } else + { + gtk_label_set_text (GTK_LABEL (sess->gui->namelistinfo), NULL); + } + + if (sess->type == SESS_CHANNEL && prefs.gui_tweaks & 1) + fe_set_title (sess); + } +} + +static void +scroll_to_iter (GtkTreeIter *iter, GtkTreeView *treeview, GtkTreeModel *model) +{ + GtkTreePath *path = gtk_tree_model_get_path (model, iter); + if (path) + { + gtk_tree_view_scroll_to_cell (treeview, path, NULL, TRUE, 0.5, 0.5); + gtk_tree_path_free (path); + } +} + +/* select a row in the userlist by nick-name */ + +void +userlist_select (session *sess, char *name) +{ + GtkTreeIter iter; + GtkTreeView *treeview = GTK_TREE_VIEW (sess->gui->user_tree); + GtkTreeModel *model = gtk_tree_view_get_model (treeview); + GtkTreeSelection *selection = gtk_tree_view_get_selection (treeview); + struct User *row_user; + + if (gtk_tree_model_get_iter_first (model, &iter)) + { + do + { + gtk_tree_model_get (model, &iter, COL_USER, &row_user, -1); + if (sess->server->p_cmp (row_user->nick, name) == 0) + { + if (gtk_tree_selection_iter_is_selected (selection, &iter)) + gtk_tree_selection_unselect_iter (selection, &iter); + else + gtk_tree_selection_select_iter (selection, &iter); + + /* and make sure it's visible */ + scroll_to_iter (&iter, treeview, model); + return; + } + } + while (gtk_tree_model_iter_next (model, &iter)); + } +} + +char ** +userlist_selection_list (GtkWidget *widget, int *num_ret) +{ + GtkTreeIter iter; + GtkTreeView *treeview = (GtkTreeView *) widget; + GtkTreeSelection *selection = gtk_tree_view_get_selection (treeview); + GtkTreeModel *model = gtk_tree_view_get_model (treeview); + struct User *user; + int i, num_sel; + char **nicks; + + *num_ret = 0; + /* first, count the number of selections */ + num_sel = 0; + if (gtk_tree_model_get_iter_first (model, &iter)) + { + do + { + if (gtk_tree_selection_iter_is_selected (selection, &iter)) + num_sel++; + } + while (gtk_tree_model_iter_next (model, &iter)); + } + + if (num_sel < 1) + return NULL; + + nicks = malloc (sizeof (char *) * (num_sel + 1)); + + i = 0; + gtk_tree_model_get_iter_first (model, &iter); + do + { + if (gtk_tree_selection_iter_is_selected (selection, &iter)) + { + gtk_tree_model_get (model, &iter, COL_USER, &user, -1); + nicks[i] = g_strdup (user->nick); + i++; + nicks[i] = NULL; + } + } + while (gtk_tree_model_iter_next (model, &iter)); + + *num_ret = i; + return nicks; +} + +void +fe_userlist_set_selected (struct session *sess) +{ + GtkListStore *store = sess->res->user_model; + GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (sess->gui->user_tree)); + GtkTreeIter iter; + struct User *user; + + /* if it's not front-most tab it doesn't own the GtkTreeView! */ + if (store != (GtkListStore*) gtk_tree_view_get_model (GTK_TREE_VIEW (sess->gui->user_tree))) + return; + + if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter)) + { + do + { + gtk_tree_model_get (GTK_TREE_MODEL (store), &iter, COL_USER, &user, -1); + + if (gtk_tree_selection_iter_is_selected (selection, &iter)) + user->selected = 1; + else + user->selected = 0; + + } while (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter)); + } +} + +static GtkTreeIter * +find_row (GtkTreeView *treeview, GtkTreeModel *model, struct User *user, + int *selected) +{ + static GtkTreeIter iter; + struct User *row_user; + + *selected = FALSE; + if (gtk_tree_model_get_iter_first (model, &iter)) + { + do + { + gtk_tree_model_get (model, &iter, COL_USER, &row_user, -1); + if (row_user == user) + { + if (gtk_tree_view_get_model (treeview) == model) + { + if (gtk_tree_selection_iter_is_selected (gtk_tree_view_get_selection (treeview), &iter)) + *selected = TRUE; + } + return &iter; + } + } + while (gtk_tree_model_iter_next (model, &iter)); + } + + return NULL; +} + +void +userlist_set_value (GtkWidget *treeview, gfloat val) +{ + gtk_adjustment_set_value ( + gtk_tree_view_get_vadjustment (GTK_TREE_VIEW (treeview)), val); +} + +gfloat +userlist_get_value (GtkWidget *treeview) +{ + return gtk_tree_view_get_vadjustment (GTK_TREE_VIEW (treeview))->value; +} + +int +fe_userlist_remove (session *sess, struct User *user) +{ + GtkTreeIter *iter; +/* GtkAdjustment *adj; + gfloat val, end;*/ + int sel; + + iter = find_row (GTK_TREE_VIEW (sess->gui->user_tree), + sess->res->user_model, user, &sel); + if (!iter) + return 0; + +/* adj = gtk_tree_view_get_vadjustment (GTK_TREE_VIEW (sess->gui->user_tree)); + val = adj->value;*/ + + gtk_list_store_remove (sess->res->user_model, iter); + + /* is it the front-most tab? */ +/* if (gtk_tree_view_get_model (GTK_TREE_VIEW (sess->gui->user_tree)) + == sess->res->user_model) + { + end = adj->upper - adj->lower - adj->page_size; + if (val > end) + val = end; + gtk_adjustment_set_value (adj, val); + }*/ + + return sel; +} + +void +fe_userlist_rehash (session *sess, struct User *user) +{ + GtkTreeIter *iter; + int sel; + int do_away = TRUE; + + iter = find_row (GTK_TREE_VIEW (sess->gui->user_tree), + sess->res->user_model, user, &sel); + if (!iter) + return; + + if (prefs.away_size_max < 1 || !prefs.away_track) + do_away = FALSE; + + gtk_list_store_set (GTK_LIST_STORE (sess->res->user_model), iter, + COL_HOST, user->hostname, + COL_GDKCOLOR, (do_away) + ? (user->away ? &colors[COL_AWAY] : NULL) + : (NULL), + -1); +} + +void +fe_userlist_insert (session *sess, struct User *newuser, int row, int sel) +{ + GtkTreeModel *model = sess->res->user_model; + GdkPixbuf *pix = get_user_icon (sess->server, newuser); + GtkTreeIter iter; + int do_away = TRUE; + char *nick; + + if (prefs.away_size_max < 1 || !prefs.away_track) + do_away = FALSE; + + nick = newuser->nick; + if (prefs.gui_tweaks & 64) + { + nick = malloc (strlen (newuser->nick) + 2); + nick[0] = newuser->prefix[0]; + if (!nick[0] || nick[0] == ' ') + strcpy (nick, newuser->nick); + else + strcpy (nick + 1, newuser->nick); + pix = NULL; + } + + gtk_list_store_insert_with_values (GTK_LIST_STORE (model), &iter, row, + COL_PIX, pix, + COL_NICK, nick, + COL_HOST, newuser->hostname, + COL_USER, newuser, + COL_GDKCOLOR, (do_away) + ? (newuser->away ? &colors[COL_AWAY] : NULL) + : (NULL), + -1); + + if (prefs.gui_tweaks & 64) + free (nick); + + /* is it me? */ + if (newuser->me && sess->gui->nick_box) + { + if (!sess->gui->is_tab || sess == current_tab) + mg_set_access_icon (sess->gui, pix, sess->server->is_away); + } + +#if 0 + if (prefs.hilitenotify && notify_isnotify (sess, newuser->nick)) + { + gtk_clist_set_foreground ((GtkCList *) sess->gui->user_clist, row, + &colors[prefs.nu_color]); + } +#endif + + /* is it the front-most tab? */ + if (gtk_tree_view_get_model (GTK_TREE_VIEW (sess->gui->user_tree)) + == model) + { + if (sel) + gtk_tree_selection_select_iter (gtk_tree_view_get_selection + (GTK_TREE_VIEW (sess->gui->user_tree)), &iter); + } +} + +void +fe_userlist_move (session *sess, struct User *user, int new_row) +{ + fe_userlist_insert (sess, user, new_row, fe_userlist_remove (sess, user)); +} + +void +fe_userlist_clear (session *sess) +{ + gtk_list_store_clear (sess->res->user_model); +} + +static void +userlist_dnd_drop (GtkTreeView *widget, GdkDragContext *context, + gint x, gint y, GtkSelectionData *selection_data, + guint info, guint ttime, gpointer userdata) +{ + struct User *user; + GtkTreePath *path; + GtkTreeModel *model; + GtkTreeIter iter; + + if (!gtk_tree_view_get_path_at_pos (widget, x, y, &path, NULL, NULL, NULL)) + return; + + model = gtk_tree_view_get_model (widget); + if (!gtk_tree_model_get_iter (model, &iter, path)) + return; + gtk_tree_model_get (model, &iter, COL_USER, &user, -1); + + mg_dnd_drop_file (current_sess, user->nick, selection_data->data); +} + +static gboolean +userlist_dnd_motion (GtkTreeView *widget, GdkDragContext *context, gint x, + gint y, guint ttime, gpointer tree) +{ + GtkTreePath *path; + GtkTreeSelection *sel; + + if (!tree) + return FALSE; + + if (gtk_tree_view_get_path_at_pos (widget, x, y, &path, NULL, NULL, NULL)) + { + sel = gtk_tree_view_get_selection (widget); + gtk_tree_selection_unselect_all (sel); + gtk_tree_selection_select_path (sel, path); + } + + return FALSE; +} + +static gboolean +userlist_dnd_leave (GtkTreeView *widget, GdkDragContext *context, guint ttime) +{ + gtk_tree_selection_unselect_all (gtk_tree_view_get_selection (widget)); + return TRUE; +} + +void * +userlist_create_model (void) +{ + return gtk_list_store_new (5, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_POINTER, GDK_TYPE_COLOR); +} + +static void +userlist_add_columns (GtkTreeView * treeview) +{ + GtkCellRenderer *renderer; + + /* icon column */ + renderer = gtk_cell_renderer_pixbuf_new (); + if (prefs.gui_tweaks & 32) + g_object_set (G_OBJECT (renderer), "ypad", 0, NULL); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview), + -1, NULL, renderer, + "pixbuf", 0, NULL); + + /* nick column */ + renderer = gtk_cell_renderer_text_new (); + if (prefs.gui_tweaks & 32) + g_object_set (G_OBJECT (renderer), "ypad", 0, NULL); + gtk_cell_renderer_text_set_fixed_height_from_font (GTK_CELL_RENDERER_TEXT (renderer), 1); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview), + -1, NULL, renderer, + "text", 1, "foreground-gdk", 4, NULL); + + if (prefs.showhostname_in_userlist) + { + /* hostname column */ + renderer = gtk_cell_renderer_text_new (); + if (prefs.gui_tweaks & 32) + g_object_set (G_OBJECT (renderer), "ypad", 0, NULL); + gtk_cell_renderer_text_set_fixed_height_from_font (GTK_CELL_RENDERER_TEXT (renderer), 1); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview), + -1, NULL, renderer, + "text", 2, NULL); + } +} + +static gint +userlist_click_cb (GtkWidget *widget, GdkEventButton *event, gpointer userdata) +{ + char **nicks; + int i; + GtkTreeSelection *sel; + GtkTreePath *path; + + if (!event) + return FALSE; + + if (!(event->state & GDK_CONTROL_MASK) && + event->type == GDK_2BUTTON_PRESS && prefs.doubleclickuser[0]) + { + nicks = userlist_selection_list (widget, &i); + if (nicks) + { + nick_command_parse (current_sess, prefs.doubleclickuser, nicks[0], + nicks[0]); + while (i) + { + i--; + g_free (nicks[i]); + } + free (nicks); + } + return TRUE; + } + + if (event->button == 3) + { + /* do we have a multi-selection? */ + nicks = userlist_selection_list (widget, &i); + if (nicks && i > 1) + { + menu_nickmenu (current_sess, event, nicks[0], i); + while (i) + { + i--; + g_free (nicks[i]); + } + free (nicks); + return TRUE; + } + if (nicks) + { + g_free (nicks[0]); + free (nicks); + } + + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (widget)); + if (gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (widget), + event->x, event->y, &path, 0, 0, 0)) + { + gtk_tree_selection_unselect_all (sel); + gtk_tree_selection_select_path (sel, path); + gtk_tree_path_free (path); + nicks = userlist_selection_list (widget, &i); + if (nicks) + { + menu_nickmenu (current_sess, event, nicks[0], i); + while (i) + { + i--; + g_free (nicks[i]); + } + free (nicks); + } + } else + { + gtk_tree_selection_unselect_all (sel); + } + + return TRUE; + } + + return FALSE; +} + +static gboolean +userlist_key_cb (GtkWidget *wid, GdkEventKey *evt, gpointer userdata) +{ + if (evt->keyval >= GDK_asterisk && evt->keyval <= GDK_z) + { + /* dirty trick to avoid auto-selection */ + SPELL_ENTRY_SET_EDITABLE (current_sess->gui->input_box, FALSE); + gtk_widget_grab_focus (current_sess->gui->input_box); + SPELL_ENTRY_SET_EDITABLE (current_sess->gui->input_box, TRUE); + gtk_widget_event (current_sess->gui->input_box, (GdkEvent *)evt); + return TRUE; + } + + return FALSE; +} + +GtkWidget * +userlist_create (GtkWidget *box) +{ + GtkWidget *sw, *treeview; + static const GtkTargetEntry dnd_dest_targets[] = + { + {"text/uri-list", 0, 1}, + {"XCHAT_CHANVIEW", GTK_TARGET_SAME_APP, 75 } + }; + static const GtkTargetEntry dnd_src_target[] = + { + {"XCHAT_USERLIST", GTK_TARGET_SAME_APP, 75 } + }; + + sw = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw), + GTK_SHADOW_ETCHED_IN); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), + prefs.showhostname_in_userlist ? + GTK_POLICY_AUTOMATIC : + GTK_POLICY_NEVER, + GTK_POLICY_AUTOMATIC); + gtk_box_pack_start (GTK_BOX (box), sw, TRUE, TRUE, 0); + gtk_widget_show (sw); + + treeview = gtk_tree_view_new (); + gtk_widget_set_name (treeview, "xchat-userlist"); + gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeview), FALSE); + gtk_tree_selection_set_mode (gtk_tree_view_get_selection + (GTK_TREE_VIEW (treeview)), + GTK_SELECTION_MULTIPLE); + + /* set up drops */ + gtk_drag_dest_set (treeview, GTK_DEST_DEFAULT_ALL, dnd_dest_targets, 2, + GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_LINK); + gtk_drag_source_set (treeview, GDK_BUTTON1_MASK, dnd_src_target, 1, GDK_ACTION_MOVE); + + /* file DND (for DCC) */ + g_signal_connect (G_OBJECT (treeview), "drag_motion", + G_CALLBACK (userlist_dnd_motion), treeview); + g_signal_connect (G_OBJECT (treeview), "drag_leave", + G_CALLBACK (userlist_dnd_leave), 0); + g_signal_connect (G_OBJECT (treeview), "drag_data_received", + G_CALLBACK (userlist_dnd_drop), treeview); + + g_signal_connect (G_OBJECT (treeview), "button_press_event", + G_CALLBACK (userlist_click_cb), 0); + g_signal_connect (G_OBJECT (treeview), "key_press_event", + G_CALLBACK (userlist_key_cb), 0); + + /* tree/chanview DND */ +#ifndef WIN32 /* leaks GDI pool memory, don't enable */ + g_signal_connect (G_OBJECT (treeview), "drag_begin", + G_CALLBACK (mg_drag_begin_cb), NULL); + g_signal_connect (G_OBJECT (treeview), "drag_drop", + G_CALLBACK (mg_drag_drop_cb), NULL); + g_signal_connect (G_OBJECT (treeview), "drag_motion", + G_CALLBACK (mg_drag_motion_cb), NULL); + g_signal_connect (G_OBJECT (treeview), "drag_end", + G_CALLBACK (mg_drag_end_cb), NULL); +#endif + + userlist_add_columns (GTK_TREE_VIEW (treeview)); + + gtk_container_add (GTK_CONTAINER (sw), treeview); + gtk_widget_show (treeview); + + return treeview; +} + +void +userlist_show (session *sess) +{ + gtk_tree_view_set_model (GTK_TREE_VIEW (sess->gui->user_tree), + sess->res->user_model); +} + +void +fe_uselect (session *sess, char *word[], int do_clear, int scroll_to) +{ + int thisname; + char *name; + GtkTreeIter iter; + GtkTreeView *treeview = GTK_TREE_VIEW (sess->gui->user_tree); + GtkTreeModel *model = gtk_tree_view_get_model (treeview); + GtkTreeSelection *selection = gtk_tree_view_get_selection (treeview); + struct User *row_user; + + if (gtk_tree_model_get_iter_first (model, &iter)) + { + if (do_clear) + gtk_tree_selection_unselect_all (selection); + + do + { + if (*word[0]) + { + gtk_tree_model_get (model, &iter, COL_USER, &row_user, -1); + thisname = 0; + while ( *(name = word[thisname++]) ) + { + if (sess->server->p_cmp (row_user->nick, name) == 0) + { + gtk_tree_selection_select_iter (selection, &iter); + if (scroll_to) + scroll_to_iter (&iter, treeview, model); + break; + } + } + } + + } + while (gtk_tree_model_iter_next (model, &iter)); + } +} diff --git a/etc/wyatt8740/src/fe-gtk/userlistgui.h b/etc/wyatt8740/src/fe-gtk/userlistgui.h new file mode 100644 index 0000000..b49e2b9 --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/userlistgui.h @@ -0,0 +1,8 @@ +void userlist_set_value (GtkWidget *treeview, gfloat val); +gfloat userlist_get_value (GtkWidget *treeview); +GtkWidget *userlist_create (GtkWidget *box); +void *userlist_create_model (void); +void userlist_show (session *sess); +void userlist_select (session *sess, char *name); +char **userlist_selection_list (GtkWidget *widget, int *num_ret); +GdkPixbuf *get_user_icon (server *serv, struct User *user); diff --git a/etc/wyatt8740/src/fe-gtk/xtext.c b/etc/wyatt8740/src/fe-gtk/xtext.c new file mode 100644 index 0000000..f545d79 --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/xtext.c @@ -0,0 +1,5454 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * ========================================================================= + * + * xtext, the text widget used by X-Chat. + * By Peter Zelezny <zed@xchat.org>. + * + */ + +#define XCHAT /* using xchat */ +#define TINT_VALUE 195 /* 195/255 of the brightness. */ +#define MOTION_MONITOR /* URL hilights. */ +#define SMOOTH_SCROLL /* line-by-line or pixel scroll? */ +#define SCROLL_HACK /* use XCopyArea scroll, or full redraw? */ +#undef COLOR_HILIGHT /* Color instead of underline? */ +/* Italic is buggy because it assumes drawing an italic string will have + identical extents to the normal font. This is only true some of the + time, so we can't use this hack yet. */ +#undef ITALIC /* support Italic? */ +#define GDK_MULTIHEAD_SAFE +#define USE_DB /* double buffer */ + +#define MARGIN 2 /* dont touch. */ +#define REFRESH_TIMEOUT 20 +#define WORDWRAP_LIMIT 24 + +#include <string.h> +#include <ctype.h> +#include <stdlib.h> +#include <time.h> +#include <unistd.h> +#include <gtk/gtkmain.h> +#include <gtk/gtksignal.h> +#include <gtk/gtkselection.h> +#include <gtk/gtkclipboard.h> +#include <gtk/gtkversion.h> +#include <gtk/gtkwindow.h> + +#ifdef XCHAT +#include "../../config.h" /* can define USE_XLIB here */ +#else +#define USE_XLIB +#endif + +#ifdef USE_XLIB +#include <gdk/gdkx.h> +#include <X11/Xlib.h> +#include <X11/Xatom.h> +#endif + +#ifdef USE_MMX +#include "mmx_cmod.h" +#endif + +#include "xtext.h" + +#define charlen(str) g_utf8_skip[*(guchar *)(str)] + +#ifdef WIN32 +#include <windows.h> +#include <gdk/gdkwin32.h> +#endif + +/* is delimiter */ +#define is_del(c) \ + (c == ' ' || c == '\n' || c == ')' || c == '(' || \ + c == '>' || c == '<' || c == ATTR_RESET || c == ATTR_BOLD || c == 0) + +#ifdef SCROLL_HACK +/* force scrolling off */ +#define dontscroll(buf) (buf)->last_pixel_pos = 0x7fffffff +#else +#define dontscroll(buf) +#endif + +static GtkWidgetClass *parent_class = NULL; + +struct textentry +{ + struct textentry *next; + struct textentry *prev; + unsigned char *str; + time_t stamp; + gint16 str_width; + gint16 str_len; + gint16 mark_start; + gint16 mark_end; + gint16 indent; + gint16 left_len; + gint16 lines_taken; +#define RECORD_WRAPS 4 + guint16 wrap_offset[RECORD_WRAPS]; + guchar mb; /* boolean: is multibyte? */ + guchar tag; + guchar pad1; + guchar pad2; /* 32-bit align : 44 bytes total */ +}; + +enum +{ + WORD_CLICK, + LAST_SIGNAL +}; + +/* values for selection info */ +enum +{ + TARGET_UTF8_STRING, + TARGET_STRING, + TARGET_TEXT, + TARGET_COMPOUND_TEXT +}; + +static guint xtext_signals[LAST_SIGNAL]; + +#ifdef XCHAT +char *nocasestrstr (const char *text, const char *tofind); /* util.c */ +int xtext_get_stamp_str (time_t, char **); +#endif +static void gtk_xtext_render_page (GtkXText * xtext); +static void gtk_xtext_calc_lines (xtext_buffer *buf, int); +#if defined(USE_XLIB) || defined(WIN32) +static void gtk_xtext_load_trans (GtkXText * xtext); +static void gtk_xtext_free_trans (GtkXText * xtext); +#endif +static char *gtk_xtext_selection_get_text (GtkXText *xtext, int *len_ret); +static textentry *gtk_xtext_nth (GtkXText *xtext, int line, int *subline); +static void gtk_xtext_adjustment_changed (GtkAdjustment * adj, + GtkXText * xtext); +static int gtk_xtext_render_ents (GtkXText * xtext, textentry *, textentry *); +static void gtk_xtext_recalc_widths (xtext_buffer *buf, int); +static void gtk_xtext_fix_indent (xtext_buffer *buf); +static int gtk_xtext_find_subline (GtkXText *xtext, textentry *ent, int line); +static char *gtk_xtext_conv_color (unsigned char *text, int len, int *newlen); +static unsigned char * +gtk_xtext_strip_color (unsigned char *text, int len, unsigned char *outbuf, + int *newlen, int *mb_ret, int strip_hidden); + +/* some utility functions first */ + +#ifndef XCHAT /* xchat has this in util.c */ + +static char * +nocasestrstr (const char *s, const char *tofind) +{ + register const size_t len = strlen (tofind); + + if (len == 0) + return (char *)s; + while (toupper(*s) != toupper(*tofind) || strncasecmp (s, tofind, len)) + if (*s++ == '\0') + return (char *)NULL; + return (char *)s; +} + +#endif + +/* gives width of a 8bit string - with no mIRC codes in it */ + +static int +gtk_xtext_text_width_8bit (GtkXText *xtext, unsigned char *str, int len) +{ + int width = 0; + + while (len) + { + width += xtext->fontwidth[*str]; + str++; + len--; + } + + return width; +} + +#ifdef WIN32 + +static void +win32_draw_bg (GtkXText *xtext, int x, int y, int width, int height) +{ + HDC hdc; + HWND hwnd; + HRGN rgn; + + if (xtext->shaded) + { + /* xtext->pixmap is really a GdkImage, created in win32_tint() */ + gdk_draw_image (xtext->draw_buf, xtext->bgc, (GdkImage*)xtext->pixmap, + x, y, x, y, width, height); + } else + { + hwnd = GDK_WINDOW_HWND (xtext->draw_buf); + hdc = GetDC (hwnd); + + rgn = CreateRectRgn (x, y, x + width, y + height); + SelectClipRgn (hdc, rgn); + + PaintDesktop (hdc); + + ReleaseDC (hwnd, hdc); + DeleteObject (rgn); + } +} + +static void +xtext_draw_bg (GtkXText *xtext, int x, int y, int width, int height) +{ + if (xtext->transparent) + win32_draw_bg (xtext, x, y, width, height); + else + gdk_draw_rectangle (xtext->draw_buf, xtext->bgc, 1, x, y, width, height); +} + +#else + +#define xtext_draw_bg(xt,x,y,w,h) gdk_draw_rectangle(xt->draw_buf, xt->bgc, \ + 1,x,y,w,h); + +#endif + +/* ========================================= */ +/* ========== XFT 1 and 2 BACKEND ========== */ +/* ========================================= */ + +#ifdef USE_XFT + +static void +backend_font_close (GtkXText *xtext) +{ + XftFontClose (GDK_WINDOW_XDISPLAY (xtext->draw_buf), xtext->font); +#ifdef ITALIC + XftFontClose (GDK_WINDOW_XDISPLAY (xtext->draw_buf), xtext->ifont); +#endif +} + +static void +backend_init (GtkXText *xtext) +{ + if (xtext->xftdraw == NULL) + { + xtext->xftdraw = XftDrawCreate ( + GDK_WINDOW_XDISPLAY (xtext->draw_buf), + GDK_WINDOW_XWINDOW (xtext->draw_buf), + GDK_VISUAL_XVISUAL (gdk_drawable_get_visual (xtext->draw_buf)), + GDK_COLORMAP_XCOLORMAP (gdk_drawable_get_colormap (xtext->draw_buf))); + XftDrawSetSubwindowMode (xtext->xftdraw, IncludeInferiors); + } +} + +static void +backend_deinit (GtkXText *xtext) +{ + if (xtext->xftdraw) + { + XftDrawDestroy (xtext->xftdraw); + xtext->xftdraw = NULL; + } +} + +static XftFont * +backend_font_open_real (Display *xdisplay, char *name, gboolean italics) +{ + XftFont *font = NULL; + PangoFontDescription *fontd; + int weight, slant, screen = DefaultScreen (xdisplay); + + fontd = pango_font_description_from_string (name); + + if (pango_font_description_get_size (fontd) != 0) + { + weight = pango_font_description_get_weight (fontd); + /* from pangoft2-fontmap.c */ + if (weight < (PANGO_WEIGHT_NORMAL + PANGO_WEIGHT_LIGHT) / 2) + weight = XFT_WEIGHT_LIGHT; + else if (weight < (PANGO_WEIGHT_NORMAL + 600) / 2) + weight = XFT_WEIGHT_MEDIUM; + else if (weight < (600 + PANGO_WEIGHT_BOLD) / 2) + weight = XFT_WEIGHT_DEMIBOLD; + else if (weight < (PANGO_WEIGHT_BOLD + PANGO_WEIGHT_ULTRABOLD) / 2) + weight = XFT_WEIGHT_BOLD; + else + weight = XFT_WEIGHT_BLACK; + + slant = pango_font_description_get_style (fontd); + if (slant == PANGO_STYLE_ITALIC) + slant = XFT_SLANT_ITALIC; + else if (slant == PANGO_STYLE_OBLIQUE) + slant = XFT_SLANT_OBLIQUE; + else + slant = XFT_SLANT_ROMAN; + + font = XftFontOpen (xdisplay, screen, + XFT_FAMILY, XftTypeString, pango_font_description_get_family (fontd), + XFT_CORE, XftTypeBool, False, + XFT_SIZE, XftTypeDouble, (double)pango_font_description_get_size (fontd)/PANGO_SCALE, + XFT_WEIGHT, XftTypeInteger, weight, + XFT_SLANT, XftTypeInteger, italics ? XFT_SLANT_ITALIC : slant, + NULL); + } + pango_font_description_free (fontd); + + if (font == NULL) + { + font = XftFontOpenName (xdisplay, screen, name); + if (font == NULL) + font = XftFontOpenName (xdisplay, screen, "sans-11"); + } + + return font; +} + +static void +backend_font_open (GtkXText *xtext, char *name) +{ + Display *dis = GDK_WINDOW_XDISPLAY (xtext->draw_buf); + + xtext->font = backend_font_open_real (dis, name, FALSE); +#ifdef ITALIC + xtext->ifont = backend_font_open_real (dis, name, TRUE); +#endif +} + +inline static int +backend_get_char_width (GtkXText *xtext, unsigned char *str, int *mbl_ret) +{ + XGlyphInfo ext; + + if (*str < 128) + { + *mbl_ret = 1; + return xtext->fontwidth[*str]; + } + + *mbl_ret = charlen (str); + XftTextExtentsUtf8 (GDK_WINDOW_XDISPLAY (xtext->draw_buf), xtext->font, str, *mbl_ret, &ext); + + return ext.xOff; +} + +static int +backend_get_text_width (GtkXText *xtext, guchar *str, int len, int is_mb) +{ + XGlyphInfo ext; + + if (!is_mb) + return gtk_xtext_text_width_8bit (xtext, str, len); + + XftTextExtentsUtf8 (GDK_WINDOW_XDISPLAY (xtext->draw_buf), xtext->font, str, len, &ext); + return ext.xOff; +} + +static void +backend_draw_text (GtkXText *xtext, int dofill, GdkGC *gc, int x, int y, + char *str, int len, int str_width, int is_mb) +{ + /*Display *xdisplay = GDK_WINDOW_XDISPLAY (xtext->draw_buf);*/ + void (*draw_func) (XftDraw *, XftColor *, XftFont *, int, int, XftChar8 *, int) = (void *)XftDrawString8; + XftFont *font; + + /* if all ascii, use String8 to avoid the conversion penalty */ + if (is_mb) + draw_func = (void *)XftDrawStringUtf8; + + if (dofill) + { +/* register GC xgc = GDK_GC_XGC (gc); + XSetForeground (xdisplay, xgc, xtext->xft_bg->pixel); + XFillRectangle (xdisplay, GDK_WINDOW_XWINDOW (xtext->draw_buf), xgc, x, + y - xtext->font->ascent, str_width, xtext->fontsize);*/ + XftDrawRect (xtext->xftdraw, xtext->xft_bg, x, + y - xtext->font->ascent, str_width, xtext->fontsize); + } + + font = xtext->font; +#ifdef ITALIC + if (xtext->italics) + font = xtext->ifont; +#endif + + draw_func (xtext->xftdraw, xtext->xft_fg, font, x, y, str, len); + + if (xtext->overdraw) + draw_func (xtext->xftdraw, xtext->xft_fg, font, x, y, str, len); + + if (xtext->bold) + draw_func (xtext->xftdraw, xtext->xft_fg, font, x + 1, y, str, len); +} + +/*static void +backend_set_clip (GtkXText *xtext, GdkRectangle *area) +{ + gdk_gc_set_clip_rectangle (xtext->fgc, area); + gdk_gc_set_clip_rectangle (xtext->bgc, area); +} + +static void +backend_clear_clip (GtkXText *xtext) +{ + gdk_gc_set_clip_rectangle (xtext->fgc, NULL); + gdk_gc_set_clip_rectangle (xtext->bgc, NULL); +}*/ + +/*static void +backend_set_clip (GtkXText *xtext, GdkRectangle *area) +{ + Region reg; + XRectangle rect; + + rect.x = area->x; + rect.y = area->y; + rect.width = area->width; + rect.height = area->height; + + reg = XCreateRegion (); + XUnionRectWithRegion (&rect, reg, reg); + XftDrawSetClip (xtext->xftdraw, reg); + XDestroyRegion (reg); + + gdk_gc_set_clip_rectangle (xtext->fgc, area); +} + +static void +backend_clear_clip (GtkXText *xtext) +{ + XftDrawSetClip (xtext->xftdraw, NULL); + gdk_gc_set_clip_rectangle (xtext->fgc, NULL); +} +*/ +#else /* !USE_XFT */ + +/* ======================================= */ +/* ============ PANGO BACKEND ============ */ +/* ======================================= */ + +static void +backend_font_close (GtkXText *xtext) +{ + pango_font_description_free (xtext->font->font); +#ifdef ITALIC + pango_font_description_free (xtext->font->ifont); +#endif +} + +static void +backend_init (GtkXText *xtext) +{ + if (xtext->layout == NULL) + { + xtext->layout = gtk_widget_create_pango_layout (GTK_WIDGET (xtext), 0); + if (xtext->font) + pango_layout_set_font_description (xtext->layout, xtext->font->font); + } +} + +static void +backend_deinit (GtkXText *xtext) +{ + if (xtext->layout) + { + g_object_unref (xtext->layout); + xtext->layout = NULL; + } +} + +static PangoFontDescription * +backend_font_open_real (char *name) +{ + PangoFontDescription *font; + + font = pango_font_description_from_string (name); + if (font && pango_font_description_get_size (font) == 0) + { + pango_font_description_free (font); + font = pango_font_description_from_string ("sans 11"); + } + if (!font) + font = pango_font_description_from_string ("sans 11"); + + return font; +} + +static void +backend_font_open (GtkXText *xtext, char *name) +{ + PangoLanguage *lang; + PangoContext *context; + PangoFontMetrics *metrics; + + xtext->font = &xtext->pango_font; + xtext->font->font = backend_font_open_real (name); + if (!xtext->font->font) + { + xtext->font = NULL; + return; + } +#ifdef ITALIC + xtext->font->ifont = backend_font_open_real (name); + pango_font_description_set_style (xtext->font->ifont, PANGO_STYLE_ITALIC); +#endif + + backend_init (xtext); + pango_layout_set_font_description (xtext->layout, xtext->font->font); + + /* vte does it this way */ + context = gtk_widget_get_pango_context (GTK_WIDGET (xtext)); + lang = pango_context_get_language (context); + metrics = pango_context_get_metrics (context, xtext->font->font, lang); + xtext->font->ascent = pango_font_metrics_get_ascent (metrics) / PANGO_SCALE; + xtext->font->descent = pango_font_metrics_get_descent (metrics) / PANGO_SCALE; + pango_font_metrics_unref (metrics); +} + +static int +backend_get_text_width (GtkXText *xtext, guchar *str, int len, int is_mb) +{ + int width; + + if (!is_mb) + return gtk_xtext_text_width_8bit (xtext, str, len); + + if (*str == 0) + return 0; + + pango_layout_set_text (xtext->layout, str, len); + pango_layout_get_pixel_size (xtext->layout, &width, NULL); + + return width; +} + +inline static int +backend_get_char_width (GtkXText *xtext, unsigned char *str, int *mbl_ret) +{ + int width; + + if (*str < 128) + { + *mbl_ret = 1; + return xtext->fontwidth[*str]; + } + + *mbl_ret = charlen (str); + pango_layout_set_text (xtext->layout, str, *mbl_ret); + pango_layout_get_pixel_size (xtext->layout, &width, NULL); + + return width; +} + +/* simplified version of gdk_draw_layout_line_with_colors() */ + +static void +xtext_draw_layout_line (GdkDrawable *drawable, + GdkGC *gc, + gint x, + gint y, + PangoLayoutLine *line) +{ + GSList *tmp_list = line->runs; + PangoRectangle logical_rect; + gint x_off = 0; + + while (tmp_list) + { + PangoLayoutRun *run = tmp_list->data; + + pango_glyph_string_extents (run->glyphs, run->item->analysis.font, + NULL, &logical_rect); + + gdk_draw_glyphs (drawable, gc, run->item->analysis.font, + x + x_off / PANGO_SCALE, y, run->glyphs); + + x_off += logical_rect.width; + tmp_list = tmp_list->next; + } +} + +static void +backend_draw_text (GtkXText *xtext, int dofill, GdkGC *gc, int x, int y, + char *str, int len, int str_width, int is_mb) +{ + GdkGCValues val; + GdkColor col; + PangoLayoutLine *line; + +#ifdef ITALIC + if (xtext->italics) + pango_layout_set_font_description (xtext->layout, xtext->font->ifont); +#endif + + pango_layout_set_text (xtext->layout, str, len); + + if (dofill) + { +#ifdef WIN32 + if (xtext->transparent && !xtext->backcolor) + win32_draw_bg (xtext, x, y - xtext->font->ascent, str_width, + xtext->fontsize); + else +#endif + { + gdk_gc_get_values (gc, &val); + col.pixel = val.background.pixel; + gdk_gc_set_foreground (gc, &col); + gdk_draw_rectangle (xtext->draw_buf, gc, 1, x, y - + xtext->font->ascent, str_width, xtext->fontsize); + col.pixel = val.foreground.pixel; + gdk_gc_set_foreground (gc, &col); + } + } + + line = pango_layout_get_lines (xtext->layout)->data; + + xtext_draw_layout_line (xtext->draw_buf, gc, x, y, line); + + if (xtext->overdraw) + xtext_draw_layout_line (xtext->draw_buf, gc, x, y, line); + + if (xtext->bold) + xtext_draw_layout_line (xtext->draw_buf, gc, x + 1, y, line); + +#ifdef ITALIC + if (xtext->italics) + pango_layout_set_font_description (xtext->layout, xtext->font->font); +#endif +} + +/*static void +backend_set_clip (GtkXText *xtext, GdkRectangle *area) +{ + gdk_gc_set_clip_rectangle (xtext->fgc, area); + gdk_gc_set_clip_rectangle (xtext->bgc, area); +} + +static void +backend_clear_clip (GtkXText *xtext) +{ + gdk_gc_set_clip_rectangle (xtext->fgc, NULL); + gdk_gc_set_clip_rectangle (xtext->bgc, NULL); +}*/ + +#endif /* !USE_PANGO */ + +static void +xtext_set_fg (GtkXText *xtext, GdkGC *gc, int index) +{ + GdkColor col; + + col.pixel = xtext->palette[index]; + gdk_gc_set_foreground (gc, &col); + +#ifdef USE_XFT + if (gc == xtext->fgc) + xtext->xft_fg = &xtext->color[index]; + else + xtext->xft_bg = &xtext->color[index]; +#endif +} + +#ifdef USE_XFT + +#define xtext_set_bg(xt,gc,index) xt->xft_bg = &xt->color[index] + +#else + +static void +xtext_set_bg (GtkXText *xtext, GdkGC *gc, int index) +{ + GdkColor col; + + col.pixel = xtext->palette[index]; + gdk_gc_set_background (gc, &col); +} + +#endif + +static void +gtk_xtext_init (GtkXText * xtext) +{ + xtext->pixmap = NULL; + xtext->io_tag = 0; + xtext->add_io_tag = 0; + xtext->scroll_tag = 0; + xtext->max_lines = 0; + xtext->col_back = XTEXT_BG; + xtext->col_fore = XTEXT_FG; + xtext->nc = 0; + xtext->pixel_offset = 0; + xtext->bold = FALSE; + xtext->underline = FALSE; + xtext->italics = FALSE; + xtext->hidden = FALSE; + xtext->font = NULL; +#ifdef USE_XFT + xtext->xftdraw = NULL; +#else + xtext->layout = NULL; +#endif + xtext->jump_out_offset = 0; + xtext->jump_in_offset = 0; + xtext->ts_x = 0; + xtext->ts_y = 0; + xtext->clip_x = 0; + xtext->clip_x2 = 1000000; + xtext->clip_y = 0; + xtext->clip_y2 = 1000000; + xtext->error_function = NULL; + xtext->urlcheck_function = NULL; + xtext->color_paste = FALSE; + xtext->skip_border_fills = FALSE; + xtext->skip_stamp = FALSE; + xtext->render_hilights_only = FALSE; + xtext->un_hilight = FALSE; + xtext->recycle = FALSE; + xtext->dont_render = FALSE; + xtext->dont_render2 = FALSE; + xtext->overdraw = FALSE; + xtext->tint_red = xtext->tint_green = xtext->tint_blue = TINT_VALUE; + + xtext->adj = (GtkAdjustment *) gtk_adjustment_new (0, 0, 1, 1, 1, 1); + g_object_ref (G_OBJECT (xtext->adj)); + g_object_ref_sink (G_OBJECT (xtext->adj)); + g_object_unref (G_OBJECT (xtext->adj)); + + xtext->vc_signal_tag = g_signal_connect (G_OBJECT (xtext->adj), + "value_changed", G_CALLBACK (gtk_xtext_adjustment_changed), xtext); + { + static const GtkTargetEntry targets[] = { + { "UTF8_STRING", 0, TARGET_UTF8_STRING }, + { "STRING", 0, TARGET_STRING }, + { "TEXT", 0, TARGET_TEXT }, + { "COMPOUND_TEXT", 0, TARGET_COMPOUND_TEXT } + }; + static const gint n_targets = sizeof (targets) / sizeof (targets[0]); + + gtk_selection_add_targets (GTK_WIDGET (xtext), GDK_SELECTION_PRIMARY, + targets, n_targets); + } + + if (getenv ("XCHAT_OVERDRAW")) + xtext->overdraw = TRUE; +} + +static void +gtk_xtext_adjustment_set (xtext_buffer *buf, int fire_signal) +{ + GtkAdjustment *adj = buf->xtext->adj; + + if (buf->xtext->buffer == buf) + { + adj->lower = 0; + adj->upper = buf->num_lines; + + if (adj->upper == 0) + adj->upper = 1; + + adj->page_size = + (GTK_WIDGET (buf->xtext)->allocation.height - + buf->xtext->font->descent) / buf->xtext->fontsize; + adj->page_increment = adj->page_size; + + if (adj->value > adj->upper - adj->page_size) + adj->value = adj->upper - adj->page_size; + + if (adj->value < 0) + adj->value = 0; + + if (fire_signal) + gtk_adjustment_changed (adj); + } +} + +static gint +gtk_xtext_adjustment_timeout (GtkXText * xtext) +{ + gtk_xtext_render_page (xtext); + xtext->io_tag = 0; + return 0; +} + +static void +gtk_xtext_adjustment_changed (GtkAdjustment * adj, GtkXText * xtext) +{ +#ifdef SMOOTH_SCROLL + if (xtext->buffer->old_value != xtext->adj->value) +#else + if ((int) xtext->buffer->old_value != (int) xtext->adj->value) +#endif + { + if (xtext->adj->value >= xtext->adj->upper - xtext->adj->page_size) + xtext->buffer->scrollbar_down = TRUE; + else + xtext->buffer->scrollbar_down = FALSE; + + if (xtext->adj->value + 1 == xtext->buffer->old_value || + xtext->adj->value - 1 == xtext->buffer->old_value) /* clicked an arrow? */ + { + if (xtext->io_tag) + { + g_source_remove (xtext->io_tag); + xtext->io_tag = 0; + } + gtk_xtext_render_page (xtext); + } else + { + if (!xtext->io_tag) + xtext->io_tag = g_timeout_add (REFRESH_TIMEOUT, + (GSourceFunc) + gtk_xtext_adjustment_timeout, + xtext); + } + } + xtext->buffer->old_value = adj->value; +} + +GtkWidget * +gtk_xtext_new (GdkColor palette[], int separator) +{ + GtkXText *xtext; + + xtext = g_object_new (gtk_xtext_get_type (), NULL); + xtext->separator = separator; + xtext->wordwrap = TRUE; + xtext->buffer = gtk_xtext_buffer_new (xtext); + xtext->orig_buffer = xtext->buffer; + + gtk_widget_set_double_buffered (GTK_WIDGET (xtext), FALSE); + gtk_xtext_set_palette (xtext, palette); + + return GTK_WIDGET (xtext); +} + +static void +gtk_xtext_destroy (GtkObject * object) +{ + GtkXText *xtext = GTK_XTEXT (object); + + if (xtext->add_io_tag) + { + g_source_remove (xtext->add_io_tag); + xtext->add_io_tag = 0; + } + + if (xtext->scroll_tag) + { + g_source_remove (xtext->scroll_tag); + xtext->scroll_tag = 0; + } + + if (xtext->io_tag) + { + g_source_remove (xtext->io_tag); + xtext->io_tag = 0; + } + + if (xtext->pixmap) + { +#if defined(USE_XLIB) || defined(WIN32) + if (xtext->transparent) + gtk_xtext_free_trans (xtext); + else +#endif + g_object_unref (xtext->pixmap); + xtext->pixmap = NULL; + } + + if (xtext->font) + { + backend_font_close (xtext); + xtext->font = NULL; + } + + if (xtext->adj) + { + g_signal_handlers_disconnect_matched (G_OBJECT (xtext->adj), + G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, xtext); + /* gtk_signal_disconnect_by_data (GTK_OBJECT (xtext->adj), xtext);*/ + g_object_unref (G_OBJECT (xtext->adj)); + xtext->adj = NULL; + } + + if (xtext->bgc) + { + g_object_unref (xtext->bgc); + xtext->bgc = NULL; + } + + if (xtext->fgc) + { + g_object_unref (xtext->fgc); + xtext->fgc = NULL; + } + + if (xtext->light_gc) + { + g_object_unref (xtext->light_gc); + xtext->light_gc = NULL; + } + + if (xtext->dark_gc) + { + g_object_unref (xtext->dark_gc); + xtext->dark_gc = NULL; + } + + if (xtext->thin_gc) + { + g_object_unref (xtext->thin_gc); + xtext->thin_gc = NULL; + } + + if (xtext->marker_gc) + { + g_object_unref (xtext->marker_gc); + xtext->marker_gc = NULL; + } + + if (xtext->hand_cursor) + { + gdk_cursor_unref (xtext->hand_cursor); + xtext->hand_cursor = NULL; + } + + if (xtext->resize_cursor) + { + gdk_cursor_unref (xtext->resize_cursor); + xtext->resize_cursor = NULL; + } + + if (xtext->orig_buffer) + { + gtk_xtext_buffer_free (xtext->orig_buffer); + xtext->orig_buffer = NULL; + } + + if (GTK_OBJECT_CLASS (parent_class)->destroy) + (*GTK_OBJECT_CLASS (parent_class)->destroy) (object); +} + +static void +gtk_xtext_unrealize (GtkWidget * widget) +{ + backend_deinit (GTK_XTEXT (widget)); + + /* if there are still events in the queue, this'll avoid segfault */ + gdk_window_set_user_data (widget->window, NULL); + + if (parent_class->unrealize) + (* GTK_WIDGET_CLASS (parent_class)->unrealize) (widget); +} + +static void +gtk_xtext_realize (GtkWidget * widget) +{ + GtkXText *xtext; + GdkWindowAttr attributes; + GdkGCValues val; + GdkColor col; + GdkColormap *cmap; + + GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED); + xtext = GTK_XTEXT (widget); + + attributes.x = widget->allocation.x; + attributes.y = widget->allocation.y; + attributes.width = widget->allocation.width; + attributes.height = widget->allocation.height; + attributes.wclass = GDK_INPUT_OUTPUT; + attributes.window_type = GDK_WINDOW_CHILD; + attributes.event_mask = gtk_widget_get_events (widget) | + GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK +#ifdef MOTION_MONITOR + | GDK_POINTER_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK; +#else + | GDK_POINTER_MOTION_MASK; +#endif + + cmap = gtk_widget_get_colormap (widget); + attributes.colormap = cmap; + attributes.visual = gtk_widget_get_visual (widget); + + widget->window = gdk_window_new (widget->parent->window, &attributes, + GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | + GDK_WA_COLORMAP); + + gdk_window_set_user_data (widget->window, widget); + + xtext->depth = gdk_drawable_get_visual (widget->window)->depth; + + val.subwindow_mode = GDK_INCLUDE_INFERIORS; + val.graphics_exposures = 0; + + xtext->bgc = gdk_gc_new_with_values (widget->window, &val, + GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW); + xtext->fgc = gdk_gc_new_with_values (widget->window, &val, + GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW); + xtext->light_gc = gdk_gc_new_with_values (widget->window, &val, + GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW); + xtext->dark_gc = gdk_gc_new_with_values (widget->window, &val, + GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW); + xtext->thin_gc = gdk_gc_new_with_values (widget->window, &val, + GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW); + xtext->marker_gc = gdk_gc_new_with_values (widget->window, &val, + GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW); + + /* for the separator bar (light) */ + col.red = 0xffff; col.green = 0xffff; col.blue = 0xffff; + gdk_colormap_alloc_color (cmap, &col, FALSE, TRUE); + gdk_gc_set_foreground (xtext->light_gc, &col); + + /* for the separator bar (dark) */ + col.red = 0x1111; col.green = 0x1111; col.blue = 0x1111; + gdk_colormap_alloc_color (cmap, &col, FALSE, TRUE); + gdk_gc_set_foreground (xtext->dark_gc, &col); + + /* for the separator bar (thinline) */ + col.red = 0x8e38; col.green = 0x8e38; col.blue = 0x9f38; + gdk_colormap_alloc_color (cmap, &col, FALSE, TRUE); + gdk_gc_set_foreground (xtext->thin_gc, &col); + + /* for the marker bar (marker) */ + col.pixel = xtext->palette[XTEXT_MARKER]; + gdk_gc_set_foreground (xtext->marker_gc, &col); + + xtext_set_fg (xtext, xtext->fgc, XTEXT_FG); + xtext_set_bg (xtext, xtext->fgc, XTEXT_BG); + xtext_set_fg (xtext, xtext->bgc, XTEXT_BG); + + /* draw directly to window */ + xtext->draw_buf = widget->window; + +#if defined(USE_XLIB) || defined(WIN32) + if (xtext->transparent) + { + gtk_xtext_load_trans (xtext); + } else +#endif + if (xtext->pixmap) + { + gdk_gc_set_tile (xtext->bgc, xtext->pixmap); + gdk_gc_set_ts_origin (xtext->bgc, 0, 0); + xtext->ts_x = xtext->ts_y = 0; + gdk_gc_set_fill (xtext->bgc, GDK_TILED); + } + +#if (GTK_MAJOR_VERSION == 2) && (GTK_MINOR_VERSION == 0) + xtext->hand_cursor = gdk_cursor_new (GDK_HAND1); + xtext->resize_cursor = gdk_cursor_new (GDK_LEFT_SIDE); +#else + xtext->hand_cursor = gdk_cursor_new_for_display (gdk_drawable_get_display (widget->window), GDK_HAND1); + xtext->resize_cursor = gdk_cursor_new_for_display (gdk_drawable_get_display (widget->window), GDK_LEFT_SIDE); +#endif + + gdk_window_set_back_pixmap (widget->window, NULL, FALSE); + widget->style = gtk_style_attach (widget->style, widget->window); + + backend_init (xtext); +} + +static void +gtk_xtext_size_request (GtkWidget * widget, GtkRequisition * requisition) +{ + requisition->width = 200; + requisition->height = 90; +} + +static void +gtk_xtext_size_allocate (GtkWidget * widget, GtkAllocation * allocation) +{ + GtkXText *xtext = GTK_XTEXT (widget); + int height_only = FALSE; + int do_trans = TRUE; + + if (allocation->width == xtext->buffer->window_width) + height_only = TRUE; + + if (allocation->x == widget->allocation.x && + allocation->y == widget->allocation.y && xtext->avoid_trans) + do_trans = FALSE; + + xtext->avoid_trans = FALSE; + + widget->allocation = *allocation; + if (GTK_WIDGET_REALIZED (widget)) + { + xtext->buffer->window_width = allocation->width; + xtext->buffer->window_height = allocation->height; + + gdk_window_move_resize (widget->window, allocation->x, allocation->y, + allocation->width, allocation->height); + dontscroll (xtext->buffer); /* force scrolling off */ + if (!height_only) + gtk_xtext_calc_lines (xtext->buffer, FALSE); + else + { + xtext->buffer->pagetop_ent = NULL; + gtk_xtext_adjustment_set (xtext->buffer, FALSE); + } +#if defined(USE_XLIB) || defined(WIN32) + if (do_trans && xtext->transparent && xtext->shaded) + { + gtk_xtext_free_trans (xtext); + gtk_xtext_load_trans (xtext); + } +#endif + if (xtext->buffer->scrollbar_down) + gtk_adjustment_set_value (xtext->adj, xtext->adj->upper - + xtext->adj->page_size); + } +} + +static void +gtk_xtext_selection_clear_full (xtext_buffer *buf) +{ + textentry *ent = buf->text_first; + while (ent) + { + ent->mark_start = -1; + ent->mark_end = -1; + ent = ent->next; + } +} + +static int +gtk_xtext_selection_clear (xtext_buffer *buf) +{ + textentry *ent; + int ret = 0; + + ent = buf->last_ent_start; + while (ent) + { + if (ent->mark_start != -1) + ret = 1; + ent->mark_start = -1; + ent->mark_end = -1; + if (ent == buf->last_ent_end) + break; + ent = ent->next; + } + + return ret; +} + +static int +find_x (GtkXText *xtext, textentry *ent, unsigned char *text, int x, int indent) +{ + int xx = indent; + int i = 0; + int rcol = 0, bgcol = 0; + int hidden = FALSE; + unsigned char *orig = text; + int mbl; + int char_width; + + while (*text) + { + mbl = 1; + if (rcol > 0 && (isdigit (*text) || (*text == ',' && isdigit (text[1]) && !bgcol))) + { + if (text[1] != ',') rcol--; + if (*text == ',') + { + rcol = 2; + bgcol = 1; + } + text++; + } else + { + rcol = bgcol = 0; + switch (*text) + { + case ATTR_COLOR: + rcol = 2; + case ATTR_BEEP: + case ATTR_RESET: + case ATTR_REVERSE: + case ATTR_BOLD: + case ATTR_UNDERLINE: + case ATTR_ITALICS: + text++; + break; + case ATTR_HIDDEN: + if (xtext->ignore_hidden) + goto def; + hidden = !hidden; + text++; + break; + default: + def: + char_width = backend_get_char_width (xtext, text, &mbl); + if (!hidden) xx += char_width; + text += mbl; + if (xx >= x) + return i + (orig - ent->str); + } + } + + i += mbl; + if (text - orig >= ent->str_len) + return ent->str_len; + } + + return ent->str_len; +} + +static int +gtk_xtext_find_x (GtkXText * xtext, int x, textentry * ent, int subline, + int line, int *out_of_bounds) +{ + int indent; + unsigned char *str; + + if (subline < 1) + indent = ent->indent; + else + indent = xtext->buffer->indent; + + if (line > xtext->adj->page_size || line < 0) + return 0; + + if (xtext->buffer->grid_dirty || line > 255) + { + str = ent->str + gtk_xtext_find_subline (xtext, ent, subline); + if (str >= ent->str + ent->str_len) + return 0; + } else + { + if (xtext->buffer->grid_offset[line] > ent->str_len) + return 0; + str = ent->str + xtext->buffer->grid_offset[line]; + } + + if (x < indent) + { + *out_of_bounds = 1; + return (str - ent->str); + } + + *out_of_bounds = 0; + + return find_x (xtext, ent, str, x, indent); +} + +static textentry * +gtk_xtext_find_char (GtkXText * xtext, int x, int y, int *off, + int *out_of_bounds) +{ + textentry *ent; + int line; + int subline; + + line = (y + xtext->pixel_offset) / xtext->fontsize; + ent = gtk_xtext_nth (xtext, line + (int)xtext->adj->value, &subline); + if (!ent) + return 0; + + if (off) + *off = gtk_xtext_find_x (xtext, x, ent, subline, line, out_of_bounds); + + return ent; +} + +static void +gtk_xtext_draw_sep (GtkXText * xtext, int y) +{ + int x, height; + GdkGC *light, *dark; + + if (y == -1) + { + y = 0; + height = GTK_WIDGET (xtext)->allocation.height; + } else + { + height = xtext->fontsize; + } + + /* draw the separator line */ + if (xtext->separator && xtext->buffer->indent) + { + light = xtext->light_gc; + dark = xtext->dark_gc; + + x = xtext->buffer->indent - ((xtext->space_width + 1) / 2); + if (x < 1) + return; + + if (xtext->thinline) + { + if (xtext->moving_separator) + gdk_draw_line (xtext->draw_buf, light, x, y, x, y + height); + else + gdk_draw_line (xtext->draw_buf, xtext->thin_gc, x, y, x, y + height); + } else + { + if (xtext->moving_separator) + { + gdk_draw_line (xtext->draw_buf, light, x - 1, y, x - 1, y + height); + gdk_draw_line (xtext->draw_buf, dark, x, y, x, y + height); + } else + { + gdk_draw_line (xtext->draw_buf, dark, x - 1, y, x - 1, y + height); + gdk_draw_line (xtext->draw_buf, light, x, y, x, y + height); + } + } + } +} + +static void +gtk_xtext_draw_marker (GtkXText * xtext, textentry * ent, int y) +{ + int x, width, render_y; + + if (!xtext->marker) return; + + if (xtext->buffer->marker_pos == ent) + { + render_y = y + xtext->font->descent; + } + else if (xtext->buffer->marker_pos == ent->next && ent->next != NULL) + { + render_y = y + xtext->font->descent + xtext->fontsize * ent->lines_taken; + } + else return; + + x = 0; + width = GTK_WIDGET (xtext)->allocation.width; + + gdk_draw_line (xtext->draw_buf, xtext->marker_gc, x, render_y, x + width, render_y); + +#if GTK_CHECK_VERSION(2,4,0) + if (gtk_window_has_toplevel_focus (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (xtext))))) +#else + if (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (xtext)))->has_focus) +#endif + { + xtext->buffer->marker_seen = TRUE; + } +} + +#ifdef USE_SHM +static int +have_shm_pixmaps(Display *dpy) +{ + int major, minor; + static int checked = 0; + static int have = FALSE; + + if (!checked) + { + XShmQueryVersion (dpy, &major, &minor, &have); + checked = 1; + } + + return have; +} +#endif + +static void +gtk_xtext_paint (GtkWidget *widget, GdkRectangle *area) +{ + GtkXText *xtext = GTK_XTEXT (widget); + textentry *ent_start, *ent_end; + int x, y; + +#if defined(USE_XLIB) || defined(WIN32) + if (xtext->transparent) + { + gdk_window_get_origin (widget->window, &x, &y); + /* update transparency only if it moved */ + if (xtext->last_win_x != x || xtext->last_win_y != y) + { + xtext->last_win_x = x; + xtext->last_win_y = y; +#ifndef WIN32 +#ifdef USE_SHM + if (xtext->shaded && !have_shm_pixmaps(GDK_WINDOW_XDISPLAY (xtext->draw_buf))) +#else + if (xtext->shaded) +#endif + { + xtext->recycle = TRUE; + gtk_xtext_load_trans (xtext); + xtext->recycle = FALSE; + } else +#endif + { + gtk_xtext_free_trans (xtext); + gtk_xtext_load_trans (xtext); + } + } + } +#endif + + if (area->x == 0 && area->y == 0 && + area->height == widget->allocation.height && + area->width == widget->allocation.width) + { + dontscroll (xtext->buffer); /* force scrolling off */ + gtk_xtext_render_page (xtext); + return; + } + + ent_start = gtk_xtext_find_char (xtext, area->x, area->y, NULL, NULL); + if (!ent_start) + { + xtext_draw_bg (xtext, area->x, area->y, area->width, area->height); + goto xit; + } + ent_end = gtk_xtext_find_char (xtext, area->x + area->width, + area->y + area->height, NULL, NULL); + if (!ent_end) + ent_end = xtext->buffer->text_last; + + /* can't set a clip here, because fgc/bgc are used to draw the DB too */ +/* backend_set_clip (xtext, area);*/ + xtext->clip_x = area->x; + xtext->clip_x2 = area->x + area->width; + xtext->clip_y = area->y; + xtext->clip_y2 = area->y + area->height; + + /* y is the last pixel y location it rendered text at */ + y = gtk_xtext_render_ents (xtext, ent_start, ent_end); + + if (y && y < widget->allocation.height && !ent_end->next) + { + GdkRectangle rect; + + rect.x = 0; + rect.y = y; + rect.width = widget->allocation.width; + rect.height = widget->allocation.height - y; + + /* fill any space below the last line that also intersects with + the exposure rectangle */ + if (gdk_rectangle_intersect (area, &rect, &rect)) + { + xtext_draw_bg (xtext, rect.x, rect.y, rect.width, rect.height); + } + } + + /*backend_clear_clip (xtext);*/ + xtext->clip_x = 0; + xtext->clip_x2 = 1000000; + xtext->clip_y = 0; + xtext->clip_y2 = 1000000; + +xit: + x = xtext->buffer->indent - ((xtext->space_width + 1) / 2); + if (area->x <= x) + gtk_xtext_draw_sep (xtext, -1); +} + +static gboolean +gtk_xtext_expose (GtkWidget * widget, GdkEventExpose * event) +{ + gtk_xtext_paint (widget, &event->area); + return FALSE; +} + +/* render a selection that has extended or contracted upward */ + +static void +gtk_xtext_selection_up (GtkXText *xtext, textentry *start, textentry *end, + int start_offset) +{ + /* render all the complete lines */ + if (start->next == end) + gtk_xtext_render_ents (xtext, end, NULL); + else + gtk_xtext_render_ents (xtext, start->next, end); + + /* now the incomplete upper line */ + if (start == xtext->buffer->last_ent_start) + xtext->jump_in_offset = xtext->buffer->last_offset_start; + else + xtext->jump_in_offset = start_offset; + gtk_xtext_render_ents (xtext, start, NULL); + xtext->jump_in_offset = 0; +} + +/* render a selection that has extended or contracted downward */ + +static void +gtk_xtext_selection_down (GtkXText *xtext, textentry *start, textentry *end, + int end_offset) +{ + /* render all the complete lines */ + if (end->prev == start) + gtk_xtext_render_ents (xtext, start, NULL); + else + gtk_xtext_render_ents (xtext, start, end->prev); + + /* now the incomplete bottom line */ + if (end == xtext->buffer->last_ent_end) + xtext->jump_out_offset = xtext->buffer->last_offset_end; + else + xtext->jump_out_offset = end_offset; + gtk_xtext_render_ents (xtext, end, NULL); + xtext->jump_out_offset = 0; +} + +static void +gtk_xtext_selection_render (GtkXText *xtext, + textentry *start_ent, int start_offset, + textentry *end_ent, int end_offset) +{ + textentry *ent; + int start, end; + + xtext->skip_border_fills = TRUE; + xtext->skip_stamp = TRUE; + + /* force an optimized render if there was no previous selection */ + if (xtext->buffer->last_ent_start == NULL && start_ent == end_ent) + { + xtext->buffer->last_offset_start = start_offset; + xtext->buffer->last_offset_end = end_offset; + goto lamejump; + } + + /* mark changed within 1 ent only? */ + if (xtext->buffer->last_ent_start == start_ent && + xtext->buffer->last_ent_end == end_ent) + { + /* when only 1 end of the selection is changed, we can really + save on rendering */ + if (xtext->buffer->last_offset_start == start_offset || + xtext->buffer->last_offset_end == end_offset) + { +lamejump: + ent = end_ent; + /* figure out where to start and end the rendering */ + if (end_offset > xtext->buffer->last_offset_end) + { + end = end_offset; + start = xtext->buffer->last_offset_end; + } else if (end_offset < xtext->buffer->last_offset_end) + { + end = xtext->buffer->last_offset_end; + start = end_offset; + } else if (start_offset < xtext->buffer->last_offset_start) + { + end = xtext->buffer->last_offset_start; + start = start_offset; + ent = start_ent; + } else if (start_offset > xtext->buffer->last_offset_start) + { + end = start_offset; + start = xtext->buffer->last_offset_start; + ent = start_ent; + } else + { /* WORD selects end up here */ + end = end_offset; + start = start_offset; + } + } else + { + /* LINE selects end up here */ + /* so which ent actually changed? */ + ent = start_ent; + if (xtext->buffer->last_offset_start == start_offset) + ent = end_ent; + + end = MAX (xtext->buffer->last_offset_end, end_offset); + start = MIN (xtext->buffer->last_offset_start, start_offset); + } + + xtext->jump_out_offset = end; + xtext->jump_in_offset = start; + gtk_xtext_render_ents (xtext, ent, NULL); + xtext->jump_out_offset = 0; + xtext->jump_in_offset = 0; + } + /* marking downward? */ + else if (xtext->buffer->last_ent_start == start_ent && + xtext->buffer->last_offset_start == start_offset) + { + /* find the range that covers both old and new selection */ + ent = start_ent; + while (ent) + { + if (ent == xtext->buffer->last_ent_end) + { + gtk_xtext_selection_down (xtext, ent, end_ent, end_offset); + /*gtk_xtext_render_ents (xtext, ent, end_ent);*/ + break; + } + if (ent == end_ent) + { + gtk_xtext_selection_down (xtext, ent, xtext->buffer->last_ent_end, end_offset); + /*gtk_xtext_render_ents (xtext, ent, xtext->buffer->last_ent_end);*/ + break; + } + ent = ent->next; + } + } + /* marking upward? */ + else if (xtext->buffer->last_ent_end == end_ent && + xtext->buffer->last_offset_end == end_offset) + { + ent = end_ent; + while (ent) + { + if (ent == start_ent) + { + gtk_xtext_selection_up (xtext, xtext->buffer->last_ent_start, ent, start_offset); + /*gtk_xtext_render_ents (xtext, xtext->buffer->last_ent_start, ent);*/ + break; + } + if (ent == xtext->buffer->last_ent_start) + { + gtk_xtext_selection_up (xtext, start_ent, ent, start_offset); + /*gtk_xtext_render_ents (xtext, start_ent, ent);*/ + break; + } + ent = ent->prev; + } + } + else /* cross-over mark (stretched or shrunk at both ends) */ + { + /* unrender the old mark */ + gtk_xtext_render_ents (xtext, xtext->buffer->last_ent_start, xtext->buffer->last_ent_end); + /* now render the new mark, but skip overlaps */ + if (start_ent == xtext->buffer->last_ent_start) + { + /* if the new mark is a sub-set of the old, do nothing */ + if (start_ent != end_ent) + gtk_xtext_render_ents (xtext, start_ent->next, end_ent); + } else if (end_ent == xtext->buffer->last_ent_end) + { + /* if the new mark is a sub-set of the old, do nothing */ + if (start_ent != end_ent) + gtk_xtext_render_ents (xtext, start_ent, end_ent->prev); + } else + gtk_xtext_render_ents (xtext, start_ent, end_ent); + } + + xtext->buffer->last_ent_start = start_ent; + xtext->buffer->last_ent_end = end_ent; + xtext->buffer->last_offset_start = start_offset; + xtext->buffer->last_offset_end = end_offset; + + xtext->skip_border_fills = FALSE; + xtext->skip_stamp = FALSE; +} + +static void +gtk_xtext_selection_draw (GtkXText * xtext, GdkEventMotion * event, gboolean render) +{ + textentry *ent; + textentry *ent_end; + textentry *ent_start; + int offset_start; + int offset_end; + int low_x; + int low_y; + int high_x; + int high_y; + int tmp; + + if (xtext->select_start_y > xtext->select_end_y) + { + low_x = xtext->select_end_x; + low_y = xtext->select_end_y; + high_x = xtext->select_start_x; + high_y = xtext->select_start_y; + } else + { + low_x = xtext->select_start_x; + low_y = xtext->select_start_y; + high_x = xtext->select_end_x; + high_y = xtext->select_end_y; + } + + ent_start = gtk_xtext_find_char (xtext, low_x, low_y, &offset_start, &tmp); + if (!ent_start) + { + if (xtext->adj->value != xtext->buffer->old_value) + gtk_xtext_render_page (xtext); + return; + } + + ent_end = gtk_xtext_find_char (xtext, high_x, high_y, &offset_end, &tmp); + if (!ent_end) + { + ent_end = xtext->buffer->text_last; + if (!ent_end) + { + if (xtext->adj->value != xtext->buffer->old_value) + gtk_xtext_render_page (xtext); + return; + } + offset_end = ent_end->str_len; + } + + /* marking less than a complete line? */ + /* make sure "start" is smaller than "end" (swap them if need be) */ + if (ent_start == ent_end && offset_start > offset_end) + { + tmp = offset_start; + offset_start = offset_end; + offset_end = tmp; + } + + /* has the selection changed? Dont render unless necessary */ + if (xtext->buffer->last_ent_start == ent_start && + xtext->buffer->last_ent_end == ent_end && + xtext->buffer->last_offset_start == offset_start && + xtext->buffer->last_offset_end == offset_end) + return; + + /* set all the old mark_ fields to -1 */ + gtk_xtext_selection_clear (xtext->buffer); + + ent_start->mark_start = offset_start; + ent_start->mark_end = offset_end; + + if (ent_start != ent_end) + { + ent_start->mark_end = ent_start->str_len; + if (offset_end != 0) + { + ent_end->mark_start = 0; + ent_end->mark_end = offset_end; + } + + /* set all the mark_ fields of the ents within the selection */ + ent = ent_start->next; + while (ent && ent != ent_end) + { + ent->mark_start = 0; + ent->mark_end = ent->str_len; + ent = ent->next; + } + } + + if (render) + gtk_xtext_selection_render (xtext, ent_start, offset_start, ent_end, offset_end); +} + +static gint +gtk_xtext_scrolldown_timeout (GtkXText * xtext) +{ + int p_y, win_height; + + gdk_window_get_pointer (GTK_WIDGET (xtext)->window, 0, &p_y, 0); + gdk_drawable_get_size (GTK_WIDGET (xtext)->window, 0, &win_height); + + if (p_y > win_height && + xtext->adj->value < (xtext->adj->upper - xtext->adj->page_size)) + { + xtext->adj->value++; + gtk_adjustment_changed (xtext->adj); + gtk_xtext_render_page (xtext); + return 1; + } + + xtext->scroll_tag = 0; + return 0; +} + +static gint +gtk_xtext_scrollup_timeout (GtkXText * xtext) +{ + int p_y; + + gdk_window_get_pointer (GTK_WIDGET (xtext)->window, 0, &p_y, 0); + + if (p_y < 0 && xtext->adj->value > 0.0) + { + xtext->adj->value--; + gtk_adjustment_changed (xtext->adj); + gtk_xtext_render_page (xtext); + return 1; + } + + xtext->scroll_tag = 0; + return 0; +} + +static void +gtk_xtext_selection_update (GtkXText * xtext, GdkEventMotion * event, int p_y, gboolean render) +{ + int win_height; + int moved; + + gdk_drawable_get_size (GTK_WIDGET (xtext)->window, 0, &win_height); + + /* selecting past top of window, scroll up! */ + if (p_y < 0 && xtext->adj->value >= 0) + { + if (!xtext->scroll_tag) + xtext->scroll_tag = g_timeout_add (100, + (GSourceFunc) + gtk_xtext_scrollup_timeout, + xtext); + return; + } + + /* selecting past bottom of window, scroll down! */ + if (p_y > win_height && + xtext->adj->value < (xtext->adj->upper - xtext->adj->page_size)) + { + if (!xtext->scroll_tag) + xtext->scroll_tag = g_timeout_add (100, + (GSourceFunc) + gtk_xtext_scrolldown_timeout, + xtext); + return; + } + + moved = (int)xtext->adj->value - xtext->select_start_adj; + xtext->select_start_y -= (moved * xtext->fontsize); + xtext->select_start_adj = xtext->adj->value; + gtk_xtext_selection_draw (xtext, event, render); +} + +static char * +gtk_xtext_get_word (GtkXText * xtext, int x, int y, textentry ** ret_ent, + int *ret_off, int *ret_len) +{ + textentry *ent; + int offset; + unsigned char *str; + unsigned char *word; + int len; + int out_of_bounds = 0; + + ent = gtk_xtext_find_char (xtext, x, y, &offset, &out_of_bounds); + if (!ent) + return 0; + + if (out_of_bounds) + return 0; + + if (offset == ent->str_len) + return 0; + + if (offset < 1) + return 0; + + /*offset--;*/ /* FIXME: not all chars are 1 byte */ + + str = ent->str + offset; + + while (!is_del (*str) && str != ent->str) + str--; + word = str + 1; + + len = 0; + str = word; + while (!is_del (*str) && len != ent->str_len) + { + str++; + len++; + } + + /* ignore trailing dots and commas. */ + /* FIXME: locales? */ + while (len > 0 && (word[len-1]=='.' || word[len-1]==',' || word[len-1]==';')) + { + len--; + str--; + } + + if (ret_ent) + *ret_ent = ent; + if (ret_off) + *ret_off = word - ent->str; + if (ret_len) + *ret_len = str - word; + + return gtk_xtext_strip_color (word, len, xtext->scratch_buffer, NULL, NULL, FALSE); +} + +#ifdef MOTION_MONITOR + +static void +gtk_xtext_unrender_hilight (GtkXText *xtext) +{ + xtext->render_hilights_only = TRUE; + xtext->skip_border_fills = TRUE; + xtext->skip_stamp = TRUE; + xtext->un_hilight = TRUE; + + gtk_xtext_render_ents (xtext, xtext->hilight_ent, NULL); + + xtext->render_hilights_only = FALSE; + xtext->skip_border_fills = FALSE; + xtext->skip_stamp = FALSE; + xtext->un_hilight = FALSE; +} + +static gboolean +gtk_xtext_leave_notify (GtkWidget * widget, GdkEventCrossing * event) +{ + GtkXText *xtext = GTK_XTEXT (widget); + + if (xtext->cursor_hand) + { + gtk_xtext_unrender_hilight (xtext); + xtext->hilight_start = -1; + xtext->hilight_end = -1; + xtext->cursor_hand = FALSE; + gdk_window_set_cursor (widget->window, 0); + xtext->hilight_ent = NULL; + } + + if (xtext->cursor_resize) + { + gtk_xtext_unrender_hilight (xtext); + xtext->hilight_start = -1; + xtext->hilight_end = -1; + xtext->cursor_resize = FALSE; + gdk_window_set_cursor (widget->window, 0); + xtext->hilight_ent = NULL; + } + + return FALSE; +} + +#endif + +/* check if we should mark time stamps, and if a redraw is needed */ + +static gboolean +gtk_xtext_check_mark_stamp (GtkXText *xtext, GdkModifierType mask) +{ + gboolean redraw = FALSE; + + if ((mask & GDK_SHIFT_MASK)) + { + if (!xtext->mark_stamp) + { + redraw = TRUE; /* must redraw all */ + xtext->mark_stamp = TRUE; + } + } else + { + if (xtext->mark_stamp) + { + redraw = TRUE; /* must redraw all */ + xtext->mark_stamp = FALSE; + } + } + return redraw; +} + +static gboolean +gtk_xtext_motion_notify (GtkWidget * widget, GdkEventMotion * event) +{ + GtkXText *xtext = GTK_XTEXT (widget); + GdkModifierType mask; + int redraw, tmp, x, y, offset, len, line_x; + unsigned char *word; + textentry *word_ent; + + gdk_window_get_pointer (widget->window, &x, &y, &mask); + + if (xtext->moving_separator) + { + if (x < (3 * widget->allocation.width) / 5 && x > 15) + { + tmp = xtext->buffer->indent; + xtext->buffer->indent = x; + gtk_xtext_fix_indent (xtext->buffer); + if (tmp != xtext->buffer->indent) + { + gtk_xtext_recalc_widths (xtext->buffer, FALSE); + if (xtext->buffer->scrollbar_down) + gtk_adjustment_set_value (xtext->adj, xtext->adj->upper - + xtext->adj->page_size); + if (!xtext->io_tag) + xtext->io_tag = g_timeout_add (REFRESH_TIMEOUT, + (GSourceFunc) + gtk_xtext_adjustment_timeout, + xtext); + } + } + return FALSE; + } + + if (xtext->button_down) + { + redraw = gtk_xtext_check_mark_stamp (xtext, mask); + gtk_grab_add (widget); + /*gdk_pointer_grab (widget->window, TRUE, + GDK_BUTTON_RELEASE_MASK | + GDK_BUTTON_MOTION_MASK, NULL, NULL, 0);*/ + xtext->select_end_x = x; + xtext->select_end_y = y; + gtk_xtext_selection_update (xtext, event, y, !redraw); + xtext->hilighting = TRUE; + + /* user has pressed or released SHIFT, must redraw entire selection */ + if (redraw) + { + xtext->force_stamp = TRUE; + gtk_xtext_render_ents (xtext, xtext->buffer->last_ent_start, + xtext->buffer->last_ent_end); + xtext->force_stamp = FALSE; + } + return FALSE; + } +#ifdef MOTION_MONITOR + + if (xtext->separator && xtext->buffer->indent) + { + line_x = xtext->buffer->indent - ((xtext->space_width + 1) / 2); + if (line_x == x || line_x == x + 1 || line_x == x - 1) + { + if (!xtext->cursor_resize) + { + gdk_window_set_cursor (GTK_WIDGET (xtext)->window, + xtext->resize_cursor); + xtext->cursor_resize = TRUE; + } + return FALSE; + } + } + + if (xtext->urlcheck_function == NULL) + return FALSE; + + word = gtk_xtext_get_word (xtext, x, y, &word_ent, &offset, &len); + if (word) + { + if (xtext->urlcheck_function (GTK_WIDGET (xtext), word, len) > 0) + { + if (!xtext->cursor_hand || + xtext->hilight_ent != word_ent || + xtext->hilight_start != offset || + xtext->hilight_end != offset + len) + { + if (!xtext->cursor_hand) + { + gdk_window_set_cursor (GTK_WIDGET (xtext)->window, + xtext->hand_cursor); + xtext->cursor_hand = TRUE; + } + + /* un-render the old hilight */ + if (xtext->hilight_ent) + gtk_xtext_unrender_hilight (xtext); + + xtext->hilight_ent = word_ent; + xtext->hilight_start = offset; + xtext->hilight_end = offset + len; + + xtext->skip_border_fills = TRUE; + xtext->render_hilights_only = TRUE; + xtext->skip_stamp = TRUE; + + gtk_xtext_render_ents (xtext, word_ent, NULL); + + xtext->skip_border_fills = FALSE; + xtext->render_hilights_only = FALSE; + xtext->skip_stamp = FALSE; + } + return FALSE; + } + } + + gtk_xtext_leave_notify (widget, NULL); + +#endif + + return FALSE; +} + +static void +gtk_xtext_set_clip_owner (GtkWidget * xtext, GdkEventButton * event) +{ + char *str; + int len; + + if (GTK_XTEXT (xtext)->selection_buffer && + GTK_XTEXT (xtext)->selection_buffer != GTK_XTEXT (xtext)->buffer) + gtk_xtext_selection_clear (GTK_XTEXT (xtext)->selection_buffer); + + GTK_XTEXT (xtext)->selection_buffer = GTK_XTEXT (xtext)->buffer; + + str = gtk_xtext_selection_get_text (GTK_XTEXT (xtext), &len); + if (str) + { +#if (GTK_MAJOR_VERSION == 2) && (GTK_MINOR_VERSION == 0) + gtk_clipboard_set_text (gtk_clipboard_get (GDK_SELECTION_CLIPBOARD), + str, len); +#else + gtk_clipboard_set_text (gtk_widget_get_clipboard (xtext, GDK_SELECTION_CLIPBOARD), + str, len); +#endif + free (str); + } + + gtk_selection_owner_set (xtext, GDK_SELECTION_PRIMARY, event->time); +} + +static void +gtk_xtext_unselect (GtkXText *xtext) +{ + xtext_buffer *buf = xtext->buffer; + + xtext->skip_border_fills = TRUE; + xtext->skip_stamp = TRUE; + + xtext->jump_in_offset = buf->last_ent_start->mark_start; + /* just a single ent was marked? */ + if (buf->last_ent_start == buf->last_ent_end) + { + xtext->jump_out_offset = buf->last_ent_start->mark_end; + buf->last_ent_end = NULL; + } + + gtk_xtext_selection_clear (xtext->buffer); + + /* FIXME: use jump_out on multi-line selects too! */ + gtk_xtext_render_ents (xtext, buf->last_ent_start, buf->last_ent_end); + + xtext->jump_in_offset = 0; + xtext->jump_out_offset = 0; + + xtext->skip_border_fills = FALSE; + xtext->skip_stamp = FALSE; + + xtext->buffer->last_ent_start = NULL; + xtext->buffer->last_ent_end = NULL; +} + +static gboolean +gtk_xtext_button_release (GtkWidget * widget, GdkEventButton * event) +{ + GtkXText *xtext = GTK_XTEXT (widget); + unsigned char *word; + int old; + + if (xtext->moving_separator) + { + xtext->moving_separator = FALSE; + old = xtext->buffer->indent; + if (event->x < (4 * widget->allocation.width) / 5 && event->x > 15) + xtext->buffer->indent = event->x; + gtk_xtext_fix_indent (xtext->buffer); + if (xtext->buffer->indent != old) + { + gtk_xtext_recalc_widths (xtext->buffer, FALSE); + gtk_xtext_adjustment_set (xtext->buffer, TRUE); + gtk_xtext_render_page (xtext); + } else + gtk_xtext_draw_sep (xtext, -1); + return FALSE; + } + + if (xtext->word_or_line_select) + { + xtext->word_or_line_select = FALSE; + xtext->button_down = FALSE; + return FALSE; + } + + if (event->button == 1) + { + xtext->button_down = FALSE; + + gtk_grab_remove (widget); + /*gdk_pointer_ungrab (0);*/ + + /* got a new selection? */ + if (xtext->buffer->last_ent_start) + { + xtext->color_paste = FALSE; + if (event->state & GDK_CONTROL_MASK) + xtext->color_paste = TRUE; + gtk_xtext_set_clip_owner (GTK_WIDGET (xtext), event); + } + + if (xtext->select_start_x == event->x && + xtext->select_start_y == event->y && + xtext->buffer->last_ent_start) + { + gtk_xtext_unselect (xtext); + xtext->mark_stamp = FALSE; + return FALSE; + } + + if (!xtext->hilighting) + { + word = gtk_xtext_get_word (xtext, event->x, event->y, 0, 0, 0); + g_signal_emit (G_OBJECT (xtext), xtext_signals[WORD_CLICK], 0, word ? word : NULL, event); + } else + { + xtext->hilighting = FALSE; + } + } + + + return FALSE; +} + +static gboolean +gtk_xtext_button_press (GtkWidget * widget, GdkEventButton * event) +{ + GtkXText *xtext = GTK_XTEXT (widget); + GdkModifierType mask; + textentry *ent; + unsigned char *word; + int line_x, x, y, offset, len; + + gdk_window_get_pointer (widget->window, &x, &y, &mask); + + if (event->button == 3 || event->button == 2) /* right/middle click */ + { + word = gtk_xtext_get_word (xtext, x, y, 0, 0, 0); + if (word) + { + g_signal_emit (G_OBJECT (xtext), xtext_signals[WORD_CLICK], 0, + word, event); + } else + g_signal_emit (G_OBJECT (xtext), xtext_signals[WORD_CLICK], 0, + "", event); + return FALSE; + } + + if (event->button != 1) /* we only want left button */ + return FALSE; + + if (event->type == GDK_2BUTTON_PRESS) /* WORD select */ + { + gtk_xtext_check_mark_stamp (xtext, mask); + if (gtk_xtext_get_word (xtext, x, y, &ent, &offset, &len)) + { + if (len == 0) + return FALSE; + gtk_xtext_selection_clear (xtext->buffer); + ent->mark_start = offset; + ent->mark_end = offset + len; + gtk_xtext_selection_render (xtext, ent, offset, ent, offset + len); + xtext->word_or_line_select = TRUE; + gtk_xtext_set_clip_owner (GTK_WIDGET (xtext), event); + } + + return FALSE; + } + + if (event->type == GDK_3BUTTON_PRESS) /* LINE select */ + { + gtk_xtext_check_mark_stamp (xtext, mask); + if (gtk_xtext_get_word (xtext, x, y, &ent, 0, 0)) + { + gtk_xtext_selection_clear (xtext->buffer); + ent->mark_start = 0; + ent->mark_end = ent->str_len; + gtk_xtext_selection_render (xtext, ent, 0, ent, ent->str_len); + xtext->word_or_line_select = TRUE; + gtk_xtext_set_clip_owner (GTK_WIDGET (xtext), event); + } + + return FALSE; + } + + /* check if it was a separator-bar click */ + if (xtext->separator && xtext->buffer->indent) + { + line_x = xtext->buffer->indent - ((xtext->space_width + 1) / 2); + if (line_x == x || line_x == x + 1 || line_x == x - 1) + { + xtext->moving_separator = TRUE; + /* draw the separator line */ + gtk_xtext_draw_sep (xtext, -1); + return FALSE; + } + } + + xtext->button_down = TRUE; + xtext->select_start_x = x; + xtext->select_start_y = y; + xtext->select_start_adj = xtext->adj->value; + + return FALSE; +} + +/* another program has claimed the selection */ + +static gboolean +gtk_xtext_selection_kill (GtkXText *xtext, GdkEventSelection *event) +{ +#ifndef WIN32 + if (xtext->buffer->last_ent_start) + gtk_xtext_unselect (xtext); +#endif + return TRUE; +} + +static char * +gtk_xtext_selection_get_text (GtkXText *xtext, int *len_ret) +{ + textentry *ent; + char *txt; + char *pos; + char *stripped; + int len; + int first = TRUE; + xtext_buffer *buf; + + buf = xtext->selection_buffer; + if (!buf) + return NULL; + + /* first find out how much we need to malloc ... */ + len = 0; + ent = buf->last_ent_start; + while (ent) + { + if (ent->mark_start != -1) + { + /* include timestamp? */ + if (ent->mark_start == 0 && xtext->mark_stamp) + { + char *time_str; + int stamp_size = xtext_get_stamp_str (ent->stamp, &time_str); + g_free (time_str); + len += stamp_size; + } + + if (ent->mark_end - ent->mark_start > 0) + len += (ent->mark_end - ent->mark_start) + 1; + else + len++; + } + if (ent == buf->last_ent_end) + break; + ent = ent->next; + } + + if (len < 1) + return NULL; + + /* now allocate mem and copy buffer */ + pos = txt = malloc (len); + ent = buf->last_ent_start; + while (ent) + { + if (ent->mark_start != -1) + { + if (!first) + { + *pos = '\n'; + pos++; + } + first = FALSE; + if (ent->mark_end - ent->mark_start > 0) + { + /* include timestamp? */ + if (ent->mark_start == 0 && xtext->mark_stamp) + { + char *time_str; + int stamp_size = xtext_get_stamp_str (ent->stamp, &time_str); + memcpy (pos, time_str, stamp_size); + g_free (time_str); + pos += stamp_size; + } + + memcpy (pos, ent->str + ent->mark_start, + ent->mark_end - ent->mark_start); + pos += ent->mark_end - ent->mark_start; + } + } + if (ent == buf->last_ent_end) + break; + ent = ent->next; + } + *pos = 0; + + if (xtext->color_paste) + { + /*stripped = gtk_xtext_conv_color (txt, strlen (txt), &len);*/ + stripped = txt; + len = strlen (txt); + } else + { + stripped = gtk_xtext_strip_color (txt, strlen (txt), NULL, &len, 0, FALSE); + free (txt); + } + + *len_ret = len; + return stripped; +} + +/* another program is asking for our selection */ + +static void +gtk_xtext_selection_get (GtkWidget * widget, + GtkSelectionData * selection_data_ptr, + guint info, guint time) +{ + GtkXText *xtext = GTK_XTEXT (widget); + char *stripped; + guchar *new_text; + int len; + gsize glen; + + stripped = gtk_xtext_selection_get_text (xtext, &len); + if (!stripped) + return; + + switch (info) + { + case TARGET_UTF8_STRING: + /* it's already in utf8 */ + gtk_selection_data_set_text (selection_data_ptr, stripped, len); + break; + case TARGET_TEXT: + case TARGET_COMPOUND_TEXT: + { + GdkAtom encoding; + gint format; + gint new_length; + +#if (GTK_MAJOR_VERSION == 2) && (GTK_MINOR_VERSION == 0) + gdk_string_to_compound_text ( +#else + gdk_string_to_compound_text_for_display ( + gdk_drawable_get_display (widget->window), +#endif + stripped, &encoding, &format, &new_text, + &new_length); + gtk_selection_data_set (selection_data_ptr, encoding, format, + new_text, new_length); + gdk_free_compound_text (new_text); + } + break; + default: + new_text = g_locale_from_utf8 (stripped, len, NULL, &glen, NULL); + gtk_selection_data_set (selection_data_ptr, GDK_SELECTION_TYPE_STRING, + 8, new_text, glen); + g_free (new_text); + } + + free (stripped); +} + +static gboolean +gtk_xtext_scroll (GtkWidget *widget, GdkEventScroll *event) +{ + GtkXText *xtext = GTK_XTEXT (widget); + gfloat new_value; + + if (event->direction == GDK_SCROLL_UP) /* mouse wheel pageUp */ + { + new_value = xtext->adj->value - (xtext->adj->page_increment / 10); + if (new_value < xtext->adj->lower) + new_value = xtext->adj->lower; + gtk_adjustment_set_value (xtext->adj, new_value); + } + else if (event->direction == GDK_SCROLL_DOWN) /* mouse wheel pageDn */ + { + new_value = xtext->adj->value + (xtext->adj->page_increment / 10); + if (new_value > (xtext->adj->upper - xtext->adj->page_size)) + new_value = xtext->adj->upper - xtext->adj->page_size; + gtk_adjustment_set_value (xtext->adj, new_value); + } + + return FALSE; +} + +static void +gtk_xtext_class_init (GtkXTextClass * class) +{ + GtkObjectClass *object_class; + GtkWidgetClass *widget_class; + GtkXTextClass *xtext_class; + + object_class = (GtkObjectClass *) class; + widget_class = (GtkWidgetClass *) class; + xtext_class = (GtkXTextClass *) class; + + parent_class = gtk_type_class (gtk_widget_get_type ()); + + xtext_signals[WORD_CLICK] = + g_signal_new ("word_click", + G_TYPE_FROM_CLASS (object_class), + G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, + G_STRUCT_OFFSET (GtkXTextClass, word_click), + NULL, NULL, + gtk_marshal_VOID__POINTER_POINTER, + G_TYPE_NONE, + 2, G_TYPE_POINTER, G_TYPE_POINTER); + object_class->destroy = gtk_xtext_destroy; + + widget_class->realize = gtk_xtext_realize; + widget_class->unrealize = gtk_xtext_unrealize; + widget_class->size_request = gtk_xtext_size_request; + widget_class->size_allocate = gtk_xtext_size_allocate; + widget_class->button_press_event = gtk_xtext_button_press; + widget_class->button_release_event = gtk_xtext_button_release; + widget_class->motion_notify_event = gtk_xtext_motion_notify; + widget_class->selection_clear_event = (void *)gtk_xtext_selection_kill; + widget_class->selection_get = gtk_xtext_selection_get; + widget_class->expose_event = gtk_xtext_expose; + widget_class->scroll_event = gtk_xtext_scroll; +#ifdef MOTION_MONITOR + widget_class->leave_notify_event = gtk_xtext_leave_notify; +#endif + + xtext_class->word_click = NULL; +} + +GType +gtk_xtext_get_type (void) +{ + static GType xtext_type = 0; + + if (!xtext_type) + { + static const GTypeInfo xtext_info = + { + sizeof (GtkXTextClass), + NULL, /* base_init */ + NULL, /* base_finalize */ + (GClassInitFunc) gtk_xtext_class_init, + NULL, /* class_finalize */ + NULL, /* class_data */ + sizeof (GtkXText), + 0, /* n_preallocs */ + (GInstanceInitFunc) gtk_xtext_init, + }; + + xtext_type = g_type_register_static (GTK_TYPE_WIDGET, "GtkXText", + &xtext_info, 0); + } + + return xtext_type; +} + +/* strip MIRC colors and other attribs. */ + +/* CL: needs to strip hidden when called by gtk_xtext_text_width, but not when copying text */ + +static unsigned char * +gtk_xtext_strip_color (unsigned char *text, int len, unsigned char *outbuf, + int *newlen, int *mb_ret, int strip_hidden) +{ + int i = 0; + int rcol = 0, bgcol = 0; + int hidden = FALSE; + unsigned char *new_str; + int mb = FALSE; + + if (outbuf == NULL) + new_str = malloc (len + 2); + else + new_str = outbuf; + + while (len > 0) + { + if (*text >= 128) + mb = TRUE; + + if (rcol > 0 && (isdigit (*text) || (*text == ',' && isdigit (text[1]) && !bgcol))) + { + if (text[1] != ',') rcol--; + if (*text == ',') + { + rcol = 2; + bgcol = 1; + } + } else + { + rcol = bgcol = 0; + switch (*text) + { + case ATTR_COLOR: + rcol = 2; + break; + case ATTR_BEEP: + case ATTR_RESET: + case ATTR_REVERSE: + case ATTR_BOLD: + case ATTR_UNDERLINE: + case ATTR_ITALICS: + break; + case ATTR_HIDDEN: + hidden = !hidden; + break; + default: + if (!(hidden && strip_hidden)) + new_str[i++] = *text; + } + } + text++; + len--; + } + + new_str[i] = 0; + + if (newlen != NULL) + *newlen = i; + + if (mb_ret != NULL) + *mb_ret = mb; + + return new_str; +} + +/* GeEkMaN: converts mIRC control codes to literal control codes */ + +static char * +gtk_xtext_conv_color (unsigned char *text, int len, int *newlen) +{ + int i, j = 2; + char cchar = 0; + char *new_str; + int mbl; + + for (i = 0; i < len;) + { + switch (text[i]) + { + case ATTR_COLOR: + case ATTR_RESET: + case ATTR_REVERSE: + case ATTR_BOLD: + case ATTR_UNDERLINE: + case ATTR_ITALICS: + case ATTR_HIDDEN: + j += 3; + i++; + break; + default: + mbl = charlen (text + i); + j += mbl; + i += mbl; + } + } + + new_str = malloc (j); + j = 0; + + for (i = 0; i < len;) + { + switch (text[i]) + { + case ATTR_COLOR: + cchar = 'C'; + break; + case ATTR_RESET: + cchar = 'O'; + break; + case ATTR_REVERSE: + cchar = 'R'; + break; + case ATTR_BOLD: + cchar = 'B'; + break; + case ATTR_UNDERLINE: + cchar = 'U'; + break; + case ATTR_ITALICS: + cchar = 'I'; + break; + case ATTR_HIDDEN: + cchar = 'H'; + break; + case ATTR_BEEP: + break; + default: + mbl = charlen (text + i); + if (mbl == 1) + { + new_str[j] = text[i]; + j++; + i++; + } else + { + /* invalid utf8 safe guard */ + if (i + mbl > len) + mbl = len - i; + memcpy (new_str + j, text + i, mbl); + j += mbl; + i += mbl; + } + } + if (cchar != 0) + { + new_str[j++] = '%'; + new_str[j++] = cchar; + cchar = 0; + i++; + } + } + + new_str[j] = 0; + *newlen = j; + + return new_str; +} + +/* gives width of a string, excluding the mIRC codes */ + +static int +gtk_xtext_text_width (GtkXText *xtext, unsigned char *text, int len, + int *mb_ret) +{ + unsigned char *new_buf; + int new_len, mb; + + new_buf = gtk_xtext_strip_color (text, len, xtext->scratch_buffer, + &new_len, &mb, !xtext->ignore_hidden); + + if (mb_ret) + *mb_ret = mb; + + return backend_get_text_width (xtext, new_buf, new_len, mb); +} + +/* actually draw text to screen (one run with the same color/attribs) */ + +static int +gtk_xtext_render_flush (GtkXText * xtext, int x, int y, unsigned char *str, + int len, GdkGC *gc, int is_mb) +{ + int str_width, dofill; + GdkDrawable *pix = NULL; + int dest_x, dest_y; + + if (xtext->dont_render || len < 1 || xtext->hidden) + return 0; + + str_width = backend_get_text_width (xtext, str, len, is_mb); + + if (xtext->dont_render2) + return str_width; + + /* roll-your-own clipping (avoiding XftDrawString is always good!) */ + if (x > xtext->clip_x2 || x + str_width < xtext->clip_x) + return str_width; + if (y - xtext->font->ascent > xtext->clip_y2 || (y - xtext->font->ascent) + xtext->fontsize < xtext->clip_y) + return str_width; + + if (xtext->render_hilights_only) + { + if (!xtext->in_hilight) /* is it a hilight prefix? */ + return str_width; +#ifndef COLOR_HILIGHT + if (!xtext->un_hilight) /* doing a hilight? no need to draw the text */ + goto dounder; +#endif + } + +#ifdef USE_DB +#ifdef WIN32 + if (!xtext->transparent) +#endif + { + pix = gdk_pixmap_new (xtext->draw_buf, str_width, xtext->fontsize, xtext->depth); + if (pix) + { +#ifdef USE_XFT + XftDrawChange (xtext->xftdraw, GDK_WINDOW_XWINDOW (pix)); +#endif + dest_x = x; + dest_y = y - xtext->font->ascent; + + gdk_gc_set_ts_origin (xtext->bgc, xtext->ts_x - x, xtext->ts_y - dest_y); + + x = 0; + y = xtext->font->ascent; + xtext->draw_buf = pix; + } + } +#endif + + dofill = TRUE; + + /* backcolor is always handled by XDrawImageString */ + if (!xtext->backcolor && xtext->pixmap) + { + /* draw the background pixmap behind the text - CAUSES FLICKER HERE!! */ + xtext_draw_bg (xtext, x, y - xtext->font->ascent, str_width, + xtext->fontsize); + dofill = FALSE; /* already drawn the background */ + } + + backend_draw_text (xtext, dofill, gc, x, y, str, len, str_width, is_mb); + +#ifdef USE_DB + if (pix) + { + GdkRectangle clip; + GdkRectangle dest; + + gdk_gc_set_ts_origin (xtext->bgc, xtext->ts_x, xtext->ts_y); + xtext->draw_buf = GTK_WIDGET (xtext)->window; +#ifdef USE_XFT + XftDrawChange (xtext->xftdraw, GDK_WINDOW_XWINDOW (xtext->draw_buf)); +#endif +#if 0 + gdk_draw_drawable (xtext->draw_buf, xtext->bgc, pix, 0, 0, dest_x, + dest_y, str_width, xtext->fontsize); +#else + clip.x = xtext->clip_x; + clip.y = xtext->clip_y; + clip.width = xtext->clip_x2 - xtext->clip_x; + clip.height = xtext->clip_y2 - xtext->clip_y; + + dest.x = dest_x; + dest.y = dest_y; + dest.width = str_width; + dest.height = xtext->fontsize; + + if (gdk_rectangle_intersect (&clip, &dest, &dest)) + /* dump the DB to window, but only within the clip_x/x2/y/y2 */ + gdk_draw_drawable (xtext->draw_buf, xtext->bgc, pix, + dest.x - dest_x, dest.y - dest_y, + dest.x, dest.y, dest.width, dest.height); +#endif + g_object_unref (pix); + } +#endif + + if (xtext->underline) + { +#ifdef USE_XFT + GdkColor col; +#endif + +#ifndef COLOR_HILIGHT +dounder: +#endif + +#ifdef USE_XFT + col.pixel = xtext->xft_fg->pixel; + gdk_gc_set_foreground (gc, &col); +#endif + if (pix) + y = dest_y + xtext->font->ascent + 1; + else + { + y++; + dest_x = x; + } + /* draw directly to window, it's out of the range of our DB */ + gdk_draw_line (xtext->draw_buf, gc, dest_x, y, dest_x + str_width - 1, y); + } + + return str_width; +} + +static void +gtk_xtext_reset (GtkXText * xtext, int mark, int attribs) +{ + if (attribs) + { + xtext->underline = FALSE; + xtext->bold = FALSE; + xtext->italics = FALSE; + xtext->hidden = FALSE; + } + if (!mark) + { + xtext->backcolor = FALSE; + if (xtext->col_fore != XTEXT_FG) + xtext_set_fg (xtext, xtext->fgc, XTEXT_FG); + if (xtext->col_back != XTEXT_BG) + xtext_set_bg (xtext, xtext->fgc, XTEXT_BG); + } + xtext->col_fore = XTEXT_FG; + xtext->col_back = XTEXT_BG; + xtext->parsing_color = FALSE; + xtext->parsing_backcolor = FALSE; + xtext->nc = 0; +} + +/* render a single line, which WONT wrap, and parse mIRC colors */ + +static int +gtk_xtext_render_str (GtkXText * xtext, int y, textentry * ent, + unsigned char *str, int len, int win_width, int indent, + int line, int left_only, int *x_size_ret) +{ + GdkGC *gc; + int i = 0, x = indent, j = 0; + unsigned char *pstr = str; + int col_num, tmp; + int offset; + int mark = FALSE; + int ret = 1; + + xtext->in_hilight = FALSE; + + offset = str - ent->str; + + if (line < 255 && line >= 0) + xtext->buffer->grid_offset[line] = offset; + + gc = xtext->fgc; /* our foreground GC */ + + if (ent->mark_start != -1 && + ent->mark_start <= i + offset && ent->mark_end > i + offset) + { + xtext_set_bg (xtext, gc, XTEXT_MARK_BG); + xtext_set_fg (xtext, gc, XTEXT_MARK_FG); + xtext->backcolor = TRUE; + mark = TRUE; + } +#ifdef MOTION_MONITOR + if (xtext->hilight_ent == ent && + xtext->hilight_start <= i + offset && xtext->hilight_end > i + offset) + { + if (!xtext->un_hilight) + { +#ifdef COLOR_HILIGHT + xtext_set_bg (xtext, gc, 2); +#else + xtext->underline = TRUE; +#endif + } + xtext->in_hilight = TRUE; + } +#endif + + if (!xtext->skip_border_fills && !xtext->dont_render) + { + /* draw background to the left of the text */ + if (str == ent->str && indent > MARGIN && xtext->buffer->time_stamp) + { + /* don't overwrite the timestamp */ + if (indent > xtext->stamp_width) + { + xtext_draw_bg (xtext, xtext->stamp_width, y - xtext->font->ascent, + indent - xtext->stamp_width, xtext->fontsize); + } + } else + { + /* fill the indent area with background gc */ + if (indent >= xtext->clip_x) + { + xtext_draw_bg (xtext, 0, y - xtext->font->ascent, + MIN (indent, xtext->clip_x2), xtext->fontsize); + } + } + } + + if (xtext->jump_in_offset > 0 && offset < xtext->jump_in_offset) + xtext->dont_render2 = TRUE; + + while (i < len) + { + +#ifdef MOTION_MONITOR + if (xtext->hilight_ent == ent && xtext->hilight_start == (i + offset)) + { + x += gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, ent->mb); + pstr += j; + j = 0; + if (!xtext->un_hilight) + { +#ifdef COLOR_HILIGHT + xtext_set_bg (xtext, gc, 2); +#else + xtext->underline = TRUE; +#endif + } + + xtext->in_hilight = TRUE; + } +#endif + + if ((xtext->parsing_color && isdigit (str[i]) && xtext->nc < 2) || + (xtext->parsing_color && str[i] == ',' && isdigit (str[i+1]) && xtext->nc < 3 && !xtext->parsing_backcolor)) + { + pstr++; + if (str[i] == ',') + { + xtext->parsing_backcolor = TRUE; + if (xtext->nc) + { + xtext->num[xtext->nc] = 0; + xtext->nc = 0; + col_num = atoi (xtext->num); + if (col_num == 99) /* mIRC lameness */ + col_num = XTEXT_FG; + else + col_num = col_num % XTEXT_MIRC_COLS; + xtext->col_fore = col_num; + if (!mark) + xtext_set_fg (xtext, gc, col_num); + } + } else + { + xtext->num[xtext->nc] = str[i]; + if (xtext->nc < 7) + xtext->nc++; + } + } else + { + if (xtext->parsing_color) + { + xtext->parsing_color = FALSE; + if (xtext->nc) + { + xtext->num[xtext->nc] = 0; + xtext->nc = 0; + col_num = atoi (xtext->num); + if (xtext->parsing_backcolor) + { + if (col_num == 99) /* mIRC lameness */ + col_num = XTEXT_BG; + else + col_num = col_num % XTEXT_MIRC_COLS; + if (col_num == XTEXT_BG) + xtext->backcolor = FALSE; + else + xtext->backcolor = TRUE; + if (!mark) + xtext_set_bg (xtext, gc, col_num); + xtext->col_back = col_num; + } else + { + if (col_num == 99) /* mIRC lameness */ + col_num = XTEXT_FG; + else + col_num = col_num % XTEXT_MIRC_COLS; + if (!mark) + xtext_set_fg (xtext, gc, col_num); + xtext->col_fore = col_num; + } + xtext->parsing_backcolor = FALSE; + } else + { + /* got a \003<non-digit>... i.e. reset colors */ + x += gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, ent->mb); + pstr += j; + j = 0; + gtk_xtext_reset (xtext, mark, FALSE); + } + } + + switch (str[i]) + { + case '\n': + /*case ATTR_BEEP:*/ + break; + case ATTR_REVERSE: + x += gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, ent->mb); + pstr += j + 1; + j = 0; + tmp = xtext->col_fore; + xtext->col_fore = xtext->col_back; + xtext->col_back = tmp; + if (!mark) + { + xtext_set_fg (xtext, gc, xtext->col_fore); + xtext_set_bg (xtext, gc, xtext->col_back); + } + if (xtext->col_back != XTEXT_BG) + xtext->backcolor = TRUE; + else + xtext->backcolor = FALSE; + break; + case ATTR_BOLD: + x += gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, ent->mb); + xtext->bold = !xtext->bold; + pstr += j + 1; + j = 0; + break; + case ATTR_UNDERLINE: + x += gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, ent->mb); + xtext->underline = !xtext->underline; + pstr += j + 1; + j = 0; + break; + case ATTR_ITALICS: + x += gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, ent->mb); + xtext->italics = !xtext->italics; + pstr += j + 1; + j = 0; + break; + case ATTR_HIDDEN: + x += gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, ent->mb); + xtext->hidden = (!xtext->hidden) & (!xtext->ignore_hidden); + pstr += j + 1; + j = 0; + break; + case ATTR_RESET: + x += gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, ent->mb); + pstr += j + 1; + j = 0; + gtk_xtext_reset (xtext, mark, !xtext->in_hilight); + break; + case ATTR_COLOR: + x += gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, ent->mb); + xtext->parsing_color = TRUE; + pstr += j + 1; + j = 0; + break; + default: + tmp = charlen (str + i); + /* invalid utf8 safe guard */ + if (tmp + i > len) + tmp = len - i; + j += tmp; /* move to the next utf8 char */ + } + } + i += charlen (str + i); /* move to the next utf8 char */ + /* invalid utf8 safe guard */ + if (i > len) + i = len; + + /* Separate the left part, the space and the right part + into separate runs, and reset bidi state inbetween. + Perform this only on the first line of the message. + */ + if (offset == 0) + { + /* we've reached the end of the left part? */ + if ((pstr-str)+j == ent->left_len) + { + x += gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, ent->mb); + pstr += j; + j = 0; + } + else if ((pstr-str)+j == ent->left_len+1) + { + x += gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, ent->mb); + pstr += j; + j = 0; + } + } + + /* have we been told to stop rendering at this point? */ + if (xtext->jump_out_offset > 0 && xtext->jump_out_offset <= (i + offset)) + { + gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, ent->mb); + ret = 0; /* skip the rest of the lines, we're done. */ + j = 0; + break; + } + + if (xtext->jump_in_offset > 0 && xtext->jump_in_offset == (i + offset)) + { + x += gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, ent->mb); + pstr += j; + j = 0; + xtext->dont_render2 = FALSE; + } + +#ifdef MOTION_MONITOR + if (xtext->hilight_ent == ent && xtext->hilight_end == (i + offset)) + { + x += gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, ent->mb); + pstr += j; + j = 0; +#ifdef COLOR_HILIGHT + if (mark) + { + xtext_set_bg (xtext, gc, XTEXT_MARK_BG); + xtext->backcolor = TRUE; + } else + { + xtext_set_bg (xtext, gc, xtext->col_back); + if (xtext->col_back != XTEXT_BG) + xtext->backcolor = TRUE; + else + xtext->backcolor = FALSE; + } +#else + xtext->underline = FALSE; +#endif + xtext->in_hilight = FALSE; + if (xtext->render_hilights_only) + { + /* stop drawing this ent */ + ret = 0; + break; + } + } +#endif + + if (!mark && ent->mark_start == (i + offset)) + { + x += gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, ent->mb); + pstr += j; + j = 0; + xtext_set_bg (xtext, gc, XTEXT_MARK_BG); + xtext_set_fg (xtext, gc, XTEXT_MARK_FG); + xtext->backcolor = TRUE; + mark = TRUE; + } + + if (mark && ent->mark_end == (i + offset)) + { + x += gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, ent->mb); + pstr += j; + j = 0; + xtext_set_bg (xtext, gc, xtext->col_back); + xtext_set_fg (xtext, gc, xtext->col_fore); + if (xtext->col_back != XTEXT_BG) + xtext->backcolor = TRUE; + else + xtext->backcolor = FALSE; + mark = FALSE; + } + + } + + if (j) + x += gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, ent->mb); + + if (mark) + { + xtext_set_bg (xtext, gc, xtext->col_back); + xtext_set_fg (xtext, gc, xtext->col_fore); + if (xtext->col_back != XTEXT_BG) + xtext->backcolor = TRUE; + else + xtext->backcolor = FALSE; + } + + /* draw background to the right of the text */ + if (!left_only && !xtext->dont_render) + { + /* draw separator now so it doesn't appear to flicker */ + gtk_xtext_draw_sep (xtext, y - xtext->font->ascent); + if (!xtext->skip_border_fills && xtext->clip_x2 >= x) + { + int xx = MAX (x, xtext->clip_x); + + xtext_draw_bg (xtext, + xx, /* x */ + y - xtext->font->ascent, /* y */ + MIN (xtext->clip_x2 - xx, (win_width + MARGIN) - xx), /* width */ + xtext->fontsize); /* height */ + } + } + + xtext->dont_render2 = FALSE; + + /* return how much we drew in the x direction */ + if (x_size_ret) + *x_size_ret = x - indent; + + return ret; +} + +#ifdef USE_XLIB + +/* get the desktop/root window */ + +static Window desktop_window = None; + +static Window +get_desktop_window (Display *xdisplay, Window the_window) +{ + Atom prop, type; + int format; + unsigned long length, after; + unsigned char *data; + unsigned int nchildren; + Window w, root, *children, parent; + + prop = XInternAtom (xdisplay, "_XROOTPMAP_ID", True); + if (prop == None) + { + prop = XInternAtom (xdisplay, "_XROOTCOLOR_PIXEL", True); + if (prop == None) + return None; + } + + for (w = the_window; w; w = parent) + { + if ((XQueryTree (xdisplay, w, &root, &parent, &children, + &nchildren)) == False) + return None; + + if (nchildren) + XFree (children); + + XGetWindowProperty (xdisplay, w, prop, 0L, 1L, False, + AnyPropertyType, &type, &format, &length, &after, + &data); + if (data) + XFree (data); + + if (type != None) + return (desktop_window = w); + } + + return (desktop_window = None); +} + +/* find the root window (backdrop) Pixmap */ + +static Pixmap +get_pixmap_prop (Display *xdisplay, Window the_window) +{ + Atom type; + int format; + unsigned long length, after; + unsigned char *data; + Pixmap pix = None; + static Atom prop = None; + + if (desktop_window == None) + desktop_window = get_desktop_window (xdisplay, the_window); + if (desktop_window == None) + desktop_window = DefaultRootWindow (xdisplay); + + if (prop == None) + prop = XInternAtom (xdisplay, "_XROOTPMAP_ID", True); + if (prop == None) + return None; + + XGetWindowProperty (xdisplay, desktop_window, prop, 0L, 1L, False, + AnyPropertyType, &type, &format, &length, &after, + &data); + if (data) + { + if (type == XA_PIXMAP) + pix = *((Pixmap *) data); + + XFree (data); + } + + return pix; +} + +/* slow generic routine, for the depths/bpp we don't know about */ + +static void +shade_ximage_generic (GdkVisual *visual, XImage *ximg, int bpl, int w, int h, int rm, int gm, int bm, int bg) +{ + int x, y; + int bgr = (256 - rm) * (bg & visual->red_mask); + int bgg = (256 - gm) * (bg & visual->green_mask); + int bgb = (256 - bm) * (bg & visual->blue_mask); + + for (x = 0; x < w; x++) + { + for (y = 0; y < h; y++) + { + unsigned long pixel = XGetPixel (ximg, x, y); + int r, g, b; + + r = rm * (pixel & visual->red_mask) + bgr; + g = gm * (pixel & visual->green_mask) + bgg; + b = bm * (pixel & visual->blue_mask) + bgb; + + XPutPixel (ximg, x, y, + ((r >> 8) & visual->red_mask) | + ((g >> 8) & visual->green_mask) | + ((b >> 8) & visual->blue_mask)); + } + } +} + +#endif + +/* Fast shading routine. Based on code by Willem Monsuwe <willem@stack.nl> */ + +#define SHADE_IMAGE(bytes, type, rmask, gmask, bmask) \ + unsigned char *ptr; \ + int x, y; \ + int bgr = (256 - rm) * (bg & rmask); \ + int bgg = (256 - gm) * (bg & gmask); \ + int bgb = (256 - bm) * (bg & bmask); \ + ptr = (unsigned char *) data + (w * bytes); \ + for (y = h; --y >= 0;) \ + { \ + for (x = -w; x < 0; x++) \ + { \ + int r, g, b; \ + b = ((type *) ptr)[x]; \ + r = rm * (b & rmask) + bgr; \ + g = gm * (b & gmask) + bgg; \ + b = bm * (b & bmask) + bgb; \ + ((type *) ptr)[x] = ((r >> 8) & rmask) \ + | ((g >> 8) & gmask) \ + | ((b >> 8) & bmask); \ + } \ + ptr += bpl; \ + } + +/* RGB 15 */ +static void +shade_ximage_15 (void *data, int bpl, int w, int h, int rm, int gm, int bm, int bg) +{ + SHADE_IMAGE (2, guint16, 0x7c00, 0x3e0, 0x1f); +} + +/* RGB 16 */ +static void +shade_ximage_16 (void *data, int bpl, int w, int h, int rm, int gm, int bm, int bg) +{ + SHADE_IMAGE (2, guint16, 0xf800, 0x7e0, 0x1f); +} + +/* RGB 24 */ +static void +shade_ximage_24 (void *data, int bpl, int w, int h, int rm, int gm, int bm, int bg) +{ + /* 24 has to be a special case, there's no guint24, or 24bit MOV :) */ + unsigned char *ptr; + int x, y; + int bgr = (256 - rm) * ((bg & 0xff0000) >> 16); + int bgg = (256 - gm) * ((bg & 0xff00) >> 8); + int bgb = (256 - bm) * (bg & 0xff); + + ptr = (unsigned char *) data + (w * 3); + for (y = h; --y >= 0;) + { + for (x = -(w * 3); x < 0; x += 3) + { + int r, g, b; + +#if (G_BYTE_ORDER == G_BIG_ENDIAN) + r = (ptr[x + 0] * rm + bgr) >> 8; + g = (ptr[x + 1] * gm + bgg) >> 8; + b = (ptr[x + 2] * bm + bgb) >> 8; + ptr[x + 0] = r; + ptr[x + 1] = g; + ptr[x + 2] = b; +#else + r = (ptr[x + 2] * rm + bgr) >> 8; + g = (ptr[x + 1] * gm + bgg) >> 8; + b = (ptr[x + 0] * bm + bgb) >> 8; + ptr[x + 2] = r; + ptr[x + 1] = g; + ptr[x + 0] = b; +#endif + } + ptr += bpl; + } +} + +/* RGB 32 */ +static void +shade_ximage_32 (void *data, int bpl, int w, int h, int rm, int gm, int bm, int bg) +{ + SHADE_IMAGE (4, guint32, 0xff0000, 0xff00, 0xff); +} + +static void +shade_image (GdkVisual *visual, void *data, int bpl, int bpp, int w, int h, + int rm, int gm, int bm, int bg, int depth) +{ + int bg_r, bg_g, bg_b; + + bg_r = bg & visual->red_mask; + bg_g = bg & visual->green_mask; + bg_b = bg & visual->blue_mask; + +#ifdef USE_MMX + /* the MMX routines are about 50% faster at 16-bit. */ + /* only use MMX routines with a pure black background */ + if (bg_r == 0 && bg_g == 0 && bg_b == 0 && have_mmx ()) /* do a runtime check too! */ + { + switch (depth) + { + case 15: + shade_ximage_15_mmx (data, bpl, w, h, rm, gm, bm); + break; + case 16: + shade_ximage_16_mmx (data, bpl, w, h, rm, gm, bm); + break; + case 24: + if (bpp != 32) + goto generic; + case 32: + shade_ximage_32_mmx (data, bpl, w, h, rm, gm, bm); + break; + default: + goto generic; + } + } else + { +generic: +#endif + switch (depth) + { + case 15: + shade_ximage_15 (data, bpl, w, h, rm, gm, bm, bg); + break; + case 16: + shade_ximage_16 (data, bpl, w, h, rm, gm, bm, bg); + break; + case 24: + if (bpp != 32) + { + shade_ximage_24 (data, bpl, w, h, rm, gm, bm, bg); + break; + } + case 32: + shade_ximage_32 (data, bpl, w, h, rm, gm, bm, bg); + } +#ifdef USE_MMX + } +#endif +} + +#ifdef USE_XLIB + +#ifdef USE_SHM + +static XImage * +get_shm_image (Display *xdisplay, XShmSegmentInfo *shminfo, int x, int y, + int w, int h, int depth, Pixmap pix) +{ + XImage *ximg; + + shminfo->shmid = -1; + shminfo->shmaddr = (char*) -1; + ximg = XShmCreateImage (xdisplay, 0, depth, ZPixmap, 0, shminfo, w, h); + if (!ximg) + return NULL; + + shminfo->shmid = shmget (IPC_PRIVATE, ximg->bytes_per_line * ximg->height, + IPC_CREAT|0600); + if (shminfo->shmid == -1) + { + XDestroyImage (ximg); + return NULL; + } + + shminfo->readOnly = False; + ximg->data = shminfo->shmaddr = (char *)shmat (shminfo->shmid, 0, 0); + if (shminfo->shmaddr == ((char *)-1)) + { + shmctl (shminfo->shmid, IPC_RMID, 0); + XDestroyImage (ximg); + return NULL; + } + + XShmAttach (xdisplay, shminfo); + XSync (xdisplay, False); + shmctl (shminfo->shmid, IPC_RMID, 0); + XShmGetImage (xdisplay, pix, ximg, x, y, AllPlanes); + + return ximg; +} + +static XImage * +get_image (GtkXText *xtext, Display *xdisplay, XShmSegmentInfo *shminfo, + int x, int y, int w, int h, int depth, Pixmap pix) +{ + XImage *ximg; + + xtext->shm = 1; + ximg = get_shm_image (xdisplay, shminfo, x, y, w, h, depth, pix); + if (!ximg) + { + xtext->shm = 0; + ximg = XGetImage (xdisplay, pix, x, y, w, h, -1, ZPixmap); + } + + return ximg; +} + +#endif + +static GdkPixmap * +shade_pixmap (GtkXText * xtext, Pixmap p, int x, int y, int w, int h) +{ + unsigned int dummy, width, height, depth; + GdkPixmap *shaded_pix; + Window root; + Pixmap tmp; + XImage *ximg; + XGCValues gcv; + GC tgc; + Display *xdisplay = GDK_WINDOW_XDISPLAY (xtext->draw_buf); + +#ifdef USE_SHM + int shm_pixmaps; + shm_pixmaps = have_shm_pixmaps(xdisplay); +#endif + + XGetGeometry (xdisplay, p, &root, &dummy, &dummy, &width, &height, + &dummy, &depth); + + if (width < x + w || height < y + h || x < 0 || y < 0) + { + gcv.subwindow_mode = IncludeInferiors; + gcv.graphics_exposures = False; + tgc = XCreateGC (xdisplay, p, GCGraphicsExposures|GCSubwindowMode, + &gcv); + tmp = XCreatePixmap (xdisplay, p, w, h, depth); + XSetTile (xdisplay, tgc, p); + XSetFillStyle (xdisplay, tgc, FillTiled); + XSetTSOrigin (xdisplay, tgc, -x, -y); + XFillRectangle (xdisplay, tmp, tgc, 0, 0, w, h); + XFreeGC (xdisplay, tgc); + +#ifdef USE_SHM + if (shm_pixmaps) + ximg = get_image (xtext, xdisplay, &xtext->shminfo, 0, 0, w, h, depth, tmp); + else +#endif + ximg = XGetImage (xdisplay, tmp, 0, 0, w, h, -1, ZPixmap); + XFreePixmap (xdisplay, tmp); + } else + { +#ifdef USE_SHM + if (shm_pixmaps) + ximg = get_image (xtext, xdisplay, &xtext->shminfo, x, y, w, h, depth, p); + else +#endif + ximg = XGetImage (xdisplay, p, x, y, w, h, -1, ZPixmap); + } + + if (!ximg) + return NULL; + + if (depth <= 14) + { + shade_ximage_generic (gdk_drawable_get_visual (GTK_WIDGET (xtext)->window), + ximg, ximg->bytes_per_line, w, h, xtext->tint_red, + xtext->tint_green, xtext->tint_blue, + xtext->palette[XTEXT_BG]); + } else + { + shade_image (gdk_drawable_get_visual (GTK_WIDGET (xtext)->window), + ximg->data, ximg->bytes_per_line, ximg->bits_per_pixel, + w, h, xtext->tint_red, xtext->tint_green, xtext->tint_blue, + xtext->palette[XTEXT_BG], depth); + } + + if (xtext->recycle) + shaded_pix = xtext->pixmap; + else + { +#ifdef USE_SHM + if (xtext->shm && shm_pixmaps) + { +#if (GTK_MAJOR_VERSION == 2) && (GTK_MINOR_VERSION == 0) + shaded_pix = gdk_pixmap_foreign_new ( + XShmCreatePixmap (xdisplay, p, ximg->data, &xtext->shminfo, w, h, depth)); +#else + shaded_pix = gdk_pixmap_foreign_new_for_display ( + gdk_drawable_get_display (xtext->draw_buf), + XShmCreatePixmap (xdisplay, p, ximg->data, &xtext->shminfo, w, h, depth)); +#endif + } else +#endif + { + shaded_pix = gdk_pixmap_new (GTK_WIDGET (xtext)->window, w, h, depth); + } + } + +#ifdef USE_SHM + if (!xtext->shm || !shm_pixmaps) +#endif + XPutImage (xdisplay, GDK_WINDOW_XWINDOW (shaded_pix), + GDK_GC_XGC (xtext->fgc), ximg, 0, 0, 0, 0, w, h); + XDestroyImage (ximg); + + return shaded_pix; +} + +#endif /* !USE_XLIB */ + +/* free transparency xtext->pixmap */ +#if defined(USE_XLIB) || defined(WIN32) + +static void +gtk_xtext_free_trans (GtkXText * xtext) +{ + if (xtext->pixmap) + { +#ifdef USE_SHM + if (xtext->shm && have_shm_pixmaps(GDK_WINDOW_XDISPLAY (xtext->draw_buf))) + { + XFreePixmap (GDK_WINDOW_XDISPLAY (xtext->pixmap), + GDK_WINDOW_XWINDOW (xtext->pixmap)); + XShmDetach (GDK_WINDOW_XDISPLAY (xtext->draw_buf), &xtext->shminfo); + shmdt (xtext->shminfo.shmaddr); + } +#endif + g_object_unref (xtext->pixmap); + xtext->pixmap = NULL; + xtext->shm = 0; + } +} + +#endif + +#ifdef WIN32 + +static GdkPixmap * +win32_tint (GtkXText *xtext, GdkImage *img, int width, int height) +{ + guchar *pixelp; + int x, y; + GdkPixmap *pix; + GdkVisual *visual = gdk_drawable_get_visual (GTK_WIDGET (xtext)->window); + guint32 pixel; + int r, g, b; + + if (img->depth <= 14) + { + /* slow generic routine */ + for (y = 0; y < height; y++) + { + for (x = 0; x < width; x++) + { + if (img->depth == 1) + { + pixel = (((guchar *) img->mem)[y * img->bpl + (x >> 3)] & (1 << (7 - (x & 0x7)))) != 0; + goto here; + } + + if (img->depth == 4) + { + pixelp = (guchar *) img->mem + y * img->bpl + (x >> 1); + if (x&1) + { + pixel = (*pixelp) & 0x0F; + goto here; + } + + pixel = (*pixelp) >> 4; + goto here; + } + + pixelp = (guchar *) img->mem + y * img->bpl + x * img->bpp; + + switch (img->bpp) + { + case 1: + pixel = *pixelp; break; + + /* Windows is always LSB, no need to check img->byte_order. */ + case 2: + pixel = pixelp[0] | (pixelp[1] << 8); break; + + case 3: + pixel = pixelp[0] | (pixelp[1] << 8) | (pixelp[2] << 16); break; + + case 4: + pixel = pixelp[0] | (pixelp[1] << 8) | (pixelp[2] << 16); break; + } + +here: + r = (pixel & visual->red_mask) >> visual->red_shift; + g = (pixel & visual->green_mask) >> visual->green_shift; + b = (pixel & visual->blue_mask) >> visual->blue_shift; + + /* actual tinting is only these 3 lines */ + pixel = ((r * xtext->tint_red) >> 8) << visual->red_shift | + ((g * xtext->tint_green) >> 8) << visual->green_shift | + ((b * xtext->tint_blue) >> 8) << visual->blue_shift; + + if (img->depth == 1) + if (pixel & 1) + ((guchar *) img->mem)[y * img->bpl + (x >> 3)] |= (1 << (7 - (x & 0x7))); + else + ((guchar *) img->mem)[y * img->bpl + (x >> 3)] &= ~(1 << (7 - (x & 0x7))); + else if (img->depth == 4) + { + pixelp = (guchar *) img->mem + y * img->bpl + (x >> 1); + + if (x&1) + { + *pixelp &= 0xF0; + *pixelp |= (pixel & 0x0F); + } else + { + *pixelp &= 0x0F; + *pixelp |= (pixel << 4); + } + } else + { + pixelp = (guchar *) img->mem + y * img->bpl + x * img->bpp; + + /* Windows is always LSB, no need to check img->byte_order. */ + switch (img->bpp) + { + case 4: + pixelp[3] = 0; + case 3: + pixelp[2] = ((pixel >> 16) & 0xFF); + case 2: + pixelp[1] = ((pixel >> 8) & 0xFF); + case 1: + pixelp[0] = (pixel & 0xFF); + } + } + } + } + } else + { + shade_image (visual, img->mem, img->bpl, img->bpp, width, height, + xtext->tint_red, xtext->tint_green, xtext->tint_blue, + xtext->palette[XTEXT_BG], visual->depth); + } + + /* no need to dump it to a Pixmap, it's one and the same on win32 */ + pix = (GdkPixmap *)img; + + return pix; +} + +#endif /* !WIN32 */ + +/* grab pixmap from root window and set xtext->pixmap */ +#if defined(USE_XLIB) || defined(WIN32) + +static void +gtk_xtext_load_trans (GtkXText * xtext) +{ +#ifdef WIN32 + GdkImage *img; + int width, height; + HDC hdc; + HWND hwnd; + + /* if not shaded, we paint directly with PaintDesktop() */ + if (!xtext->shaded) + return; + + hwnd = GDK_WINDOW_HWND (GTK_WIDGET (xtext)->window); + hdc = GetDC (hwnd); + PaintDesktop (hdc); + ReleaseDC (hwnd, hdc); + + gdk_window_get_size (GTK_WIDGET (xtext)->window, &width, &height); + img = gdk_image_get (GTK_WIDGET (xtext)->window, 0, 0, width+128, height); + xtext->pixmap = win32_tint (xtext, img, img->width, img->height); + +#else + + Pixmap rootpix; + GtkWidget *widget = GTK_WIDGET (xtext); + int x, y; + + rootpix = get_pixmap_prop (GDK_WINDOW_XDISPLAY (widget->window), GDK_WINDOW_XWINDOW (widget->window)); + if (rootpix == None) + { + if (xtext->error_function) + xtext->error_function (0); + xtext->transparent = FALSE; + return; + } + + gdk_window_get_origin (widget->window, &x, &y); + + if (xtext->shaded) + { + int width, height; + gdk_drawable_get_size (GTK_WIDGET (xtext)->window, &width, &height); + xtext->pixmap = shade_pixmap (xtext, rootpix, x, y, width+105, height); + if (xtext->pixmap == NULL) + { + xtext->shaded = 0; + goto noshade; + } + gdk_gc_set_tile (xtext->bgc, xtext->pixmap); + gdk_gc_set_ts_origin (xtext->bgc, 0, 0); + xtext->ts_x = xtext->ts_y = 0; + } else + { +noshade: +#if (GTK_MAJOR_VERSION == 2) && (GTK_MINOR_VERSION == 0) + xtext->pixmap = gdk_pixmap_foreign_new (rootpix); +#else + xtext->pixmap = gdk_pixmap_foreign_new_for_display (gdk_drawable_get_display (GTK_WIDGET (xtext)->window), rootpix); +#endif + gdk_gc_set_tile (xtext->bgc, xtext->pixmap); + gdk_gc_set_ts_origin (xtext->bgc, -x, -y); + xtext->ts_x = -x; + xtext->ts_y = -y; + } + gdk_gc_set_fill (xtext->bgc, GDK_TILED); +#endif /* !WIN32 */ +} + +#endif /* ! XLIB || WIN32 */ + +/* walk through str until this line doesn't fit anymore */ + +static int +find_next_wrap (GtkXText * xtext, textentry * ent, unsigned char *str, + int win_width, int indent) +{ + unsigned char *last_space = str; + unsigned char *orig_str = str; + int str_width = indent; + int rcol = 0, bgcol = 0; + int hidden = FALSE; + int mbl; + int char_width; + int ret; + int limit_offset = 0; + + /* single liners */ + if (win_width >= ent->str_width + ent->indent) + return ent->str_len; + + /* it does happen! */ + if (win_width < 1) + { + ret = ent->str_len - (str - ent->str); + goto done; + } + + while (1) + { + if (rcol > 0 && (isdigit (*str) || (*str == ',' && isdigit (str[1]) && !bgcol))) + { + if (str[1] != ',') rcol--; + if (*str == ',') + { + rcol = 2; + bgcol = 1; + } + limit_offset++; + str++; + } else + { + rcol = bgcol = 0; + switch (*str) + { + case ATTR_COLOR: + rcol = 2; + case ATTR_BEEP: + case ATTR_RESET: + case ATTR_REVERSE: + case ATTR_BOLD: + case ATTR_UNDERLINE: + case ATTR_ITALICS: + limit_offset++; + str++; + break; + case ATTR_HIDDEN: + if (xtext->ignore_hidden) + goto def; + hidden = !hidden; + limit_offset++; + str++; + break; + default: + def: + char_width = backend_get_char_width (xtext, str, &mbl); + if (!hidden) str_width += char_width; + if (str_width > win_width) + { + if (xtext->wordwrap) + { + if (str - last_space > WORDWRAP_LIMIT + limit_offset) + ret = str - orig_str; /* fall back to character wrap */ + else + { + if (*last_space == ' ') + last_space++; + ret = last_space - orig_str; + if (ret == 0) /* fall back to character wrap */ + ret = str - orig_str; + } + goto done; + } + ret = str - orig_str; + goto done; + } + + /* keep a record of the last space, for wordwrapping */ + if (is_del (*str)) + { + last_space = str; + limit_offset = 0; + } + + /* progress to the next char */ + str += mbl; + + } + } + + if (str >= ent->str + ent->str_len) + { + ret = str - orig_str; + goto done; + } + } + +done: + + /* must make progress */ + if (ret < 1) + ret = 1; + + return ret; +} + +/* find the offset, in bytes, that wrap number 'line' starts at */ + +static int +gtk_xtext_find_subline (GtkXText *xtext, textentry *ent, int line) +{ + int win_width; + unsigned char *str; + int indent, str_pos, line_pos, len; + + if (ent->lines_taken < 2 || line < 1) + return 0; + + /* we record the first 4 lines' wraps, so take a shortcut */ + if (line <= RECORD_WRAPS) + return ent->wrap_offset[line - 1]; + + gdk_drawable_get_size (GTK_WIDGET (xtext)->window, &win_width, 0); + win_width -= MARGIN; + +/* indent = ent->indent; + str = ent->str; + line_pos = str_pos = 0;*/ + + /* start from the last recorded wrap, and move forward */ + indent = xtext->buffer->indent; + str_pos = ent->wrap_offset[RECORD_WRAPS-1]; + str = str_pos + ent->str; + line_pos = RECORD_WRAPS; + + do + { + len = find_next_wrap (xtext, ent, str, win_width, indent); + indent = xtext->buffer->indent; + str += len; + str_pos += len; + line_pos++; + if (line_pos >= line) + return str_pos; + } + while (str < ent->str + ent->str_len); + + return 0; +} + +/* horrible hack for drawing time stamps */ + +static void +gtk_xtext_render_stamp (GtkXText * xtext, textentry * ent, + char *text, int len, int line, int win_width) +{ + textentry tmp_ent; + int jo, ji, hs; + int xsize, y; + + /* trashing ent here, so make a backup first */ + memcpy (&tmp_ent, ent, sizeof (tmp_ent)); + ent->mb = TRUE; /* make non-english days of the week work */ + jo = xtext->jump_out_offset; /* back these up */ + ji = xtext->jump_in_offset; + hs = xtext->hilight_start; + xtext->jump_out_offset = 0; + xtext->jump_in_offset = 0; + xtext->hilight_start = 0xffff; /* temp disable */ + + if (xtext->mark_stamp) + { + /* if this line is marked, mark this stamp too */ + if (ent->mark_start == 0) + { + ent->mark_start = 0; + ent->mark_end = len; + } + else + { + ent->mark_start = -1; + ent->mark_end = -1; + } + ent->str = text; + } + + y = (xtext->fontsize * line) + xtext->font->ascent - xtext->pixel_offset; + gtk_xtext_render_str (xtext, y, ent, text, len, + win_width, 2, line, TRUE, &xsize); + + /* restore everything back to how it was */ + memcpy (ent, &tmp_ent, sizeof (tmp_ent)); + xtext->jump_out_offset = jo; + xtext->jump_in_offset = ji; + xtext->hilight_start = hs; + + /* with a non-fixed-width font, sometimes we don't draw enough + background i.e. when this stamp is shorter than xtext->stamp_width */ + xsize += MARGIN; + if (xsize < xtext->stamp_width) + { + y -= xtext->font->ascent; + xtext_draw_bg (xtext, + xsize, /* x */ + y, /* y */ + xtext->stamp_width - xsize, /* width */ + xtext->fontsize /* height */); + } +} + +/* render a single line, which may wrap to more lines */ + +static int +gtk_xtext_render_line (GtkXText * xtext, textentry * ent, int line, + int lines_max, int subline, int win_width) +{ + unsigned char *str; + int indent, taken, entline, len, y, start_subline; + + entline = taken = 0; + str = ent->str; + indent = ent->indent; + start_subline = subline; + +#ifdef XCHAT + /* draw the timestamp */ + if (xtext->auto_indent && xtext->buffer->time_stamp && + (!xtext->skip_stamp || xtext->mark_stamp || xtext->force_stamp)) + { + char *time_str; + int len; + + len = xtext_get_stamp_str (ent->stamp, &time_str); + gtk_xtext_render_stamp (xtext, ent, time_str, len, line, win_width); + g_free (time_str); + } +#endif + + /* draw each line one by one */ + do + { + /* if it's one of the first 4 wraps, we don't need to calculate it, it's + recorded in ->wrap_offset. This saves us a loop. */ + if (entline < RECORD_WRAPS) + { + if (ent->lines_taken < 2) + len = ent->str_len; + else + { + if (entline > 0) + len = ent->wrap_offset[entline] - ent->wrap_offset[entline-1]; + else + len = ent->wrap_offset[0]; + } + } else + len = find_next_wrap (xtext, ent, str, win_width, indent); + + entline++; + + y = (xtext->fontsize * line) + xtext->font->ascent - xtext->pixel_offset; + if (!subline) + { + if (!gtk_xtext_render_str (xtext, y, ent, str, len, win_width, + indent, line, FALSE, NULL)) + { + /* small optimization */ + gtk_xtext_draw_marker (xtext, ent, y - xtext->fontsize * (taken + start_subline + 1)); + return ent->lines_taken - subline; + } + } else + { + xtext->dont_render = TRUE; + gtk_xtext_render_str (xtext, y, ent, str, len, win_width, + indent, line, FALSE, NULL); + xtext->dont_render = FALSE; + subline--; + line--; + taken--; + } + + indent = xtext->buffer->indent; + line++; + taken++; + str += len; + + if (line >= lines_max) + break; + + } + while (str < ent->str + ent->str_len); + + gtk_xtext_draw_marker (xtext, ent, y - xtext->fontsize * (taken + start_subline)); + + return taken; +} + +void +gtk_xtext_set_palette (GtkXText * xtext, GdkColor palette[]) +{ + int i; + GdkColor col; + + for (i = (XTEXT_COLS-1); i >= 0; i--) + { +#ifdef USE_XFT + xtext->color[i].color.red = palette[i].red; + xtext->color[i].color.green = palette[i].green; + xtext->color[i].color.blue = palette[i].blue; + xtext->color[i].color.alpha = 0xffff; + xtext->color[i].pixel = palette[i].pixel; +#endif + xtext->palette[i] = palette[i].pixel; + } + + if (GTK_WIDGET_REALIZED (xtext)) + { + xtext_set_fg (xtext, xtext->fgc, XTEXT_FG); + xtext_set_bg (xtext, xtext->fgc, XTEXT_BG); + xtext_set_fg (xtext, xtext->bgc, XTEXT_BG); + + col.pixel = xtext->palette[XTEXT_MARKER]; + gdk_gc_set_foreground (xtext->marker_gc, &col); + } + xtext->col_fore = XTEXT_FG; + xtext->col_back = XTEXT_BG; +} + +static void +gtk_xtext_fix_indent (xtext_buffer *buf) +{ + int j; + + /* make indent a multiple of the space width */ + if (buf->indent && buf->xtext->space_width) + { + j = 0; + while (j < buf->indent) + { + j += buf->xtext->space_width; + } + buf->indent = j; + } + + dontscroll (buf); /* force scrolling off */ +} + +static void +gtk_xtext_recalc_widths (xtext_buffer *buf, int do_str_width) +{ + textentry *ent; + + /* since we have a new font, we have to recalc the text widths */ + ent = buf->text_first; + while (ent) + { + if (do_str_width) + { + ent->str_width = gtk_xtext_text_width (buf->xtext, ent->str, + ent->str_len, NULL); + } + if (ent->left_len != -1) + { + ent->indent = + (buf->indent - + gtk_xtext_text_width (buf->xtext, ent->str, + ent->left_len, NULL)) - buf->xtext->space_width; + if (ent->indent < MARGIN) + ent->indent = MARGIN; + } + ent = ent->next; + } + + gtk_xtext_calc_lines (buf, FALSE); +} + +int +gtk_xtext_set_font (GtkXText *xtext, char *name) +{ + int i; + unsigned char c; + + if (xtext->font) + backend_font_close (xtext); + + /* realize now, so that font_open has a XDisplay */ + gtk_widget_realize (GTK_WIDGET (xtext)); + + backend_font_open (xtext, name); + if (xtext->font == NULL) + return FALSE; + + /* measure the width of every char; only the ASCII ones for XFT */ + for (i = 0; i < sizeof(xtext->fontwidth)/sizeof(xtext->fontwidth[0]); i++) + { + c = i; + xtext->fontwidth[i] = backend_get_text_width (xtext, &c, 1, TRUE); + } + xtext->space_width = xtext->fontwidth[' ']; + xtext->fontsize = xtext->font->ascent + xtext->font->descent; + +#ifdef XCHAT + { + char *time_str; + int stamp_size = xtext_get_stamp_str (time(0), &time_str); + xtext->stamp_width = + gtk_xtext_text_width (xtext, time_str, stamp_size, NULL) + MARGIN; + g_free (time_str); + } +#endif + + gtk_xtext_fix_indent (xtext->buffer); + + if (GTK_WIDGET_REALIZED (xtext)) + gtk_xtext_recalc_widths (xtext->buffer, TRUE); + + return TRUE; +} + +void +gtk_xtext_set_background (GtkXText * xtext, GdkPixmap * pixmap, gboolean trans) +{ + GdkGCValues val; + gboolean shaded = FALSE; + + if (trans && (xtext->tint_red != 255 || xtext->tint_green != 255 || xtext->tint_blue != 255)) + shaded = TRUE; + +#if !defined(USE_XLIB) && !defined(WIN32) + shaded = FALSE; + trans = FALSE; +#endif + + if (xtext->pixmap) + { +#if defined(USE_XLIB) || defined(WIN32) + if (xtext->transparent) + gtk_xtext_free_trans (xtext); + else +#endif + g_object_unref (xtext->pixmap); + xtext->pixmap = NULL; + } + + xtext->transparent = trans; + +#if defined(USE_XLIB) || defined(WIN32) + if (trans) + { + xtext->shaded = shaded; + if (GTK_WIDGET_REALIZED (xtext)) + gtk_xtext_load_trans (xtext); + return; + } +#endif + + dontscroll (xtext->buffer); + xtext->pixmap = pixmap; + + if (pixmap != 0) + { + g_object_ref (pixmap); + if (GTK_WIDGET_REALIZED (xtext)) + { + gdk_gc_set_tile (xtext->bgc, pixmap); + gdk_gc_set_ts_origin (xtext->bgc, 0, 0); + xtext->ts_x = xtext->ts_y = 0; + gdk_gc_set_fill (xtext->bgc, GDK_TILED); + } + } else if (GTK_WIDGET_REALIZED (xtext)) + { + g_object_unref (xtext->bgc); + val.subwindow_mode = GDK_INCLUDE_INFERIORS; + val.graphics_exposures = 0; + xtext->bgc = gdk_gc_new_with_values (GTK_WIDGET (xtext)->window, + &val, GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW); + xtext_set_fg (xtext, xtext->bgc, XTEXT_BG); + } +} + +void +gtk_xtext_save (GtkXText * xtext, int fh) +{ + textentry *ent; + int newlen; + char *buf; + + ent = xtext->buffer->text_first; + while (ent) + { + buf = gtk_xtext_strip_color (ent->str, ent->str_len, NULL, + &newlen, NULL, FALSE); + write (fh, buf, newlen); + write (fh, "\n", 1); + free (buf); + ent = ent->next; + } +} + +/* count how many lines 'ent' will take (with wraps) */ + +static int +gtk_xtext_lines_taken (xtext_buffer *buf, textentry * ent) +{ + unsigned char *str; + int indent, taken, len; + int win_width; + + win_width = buf->window_width - MARGIN; + + if (ent->str_width + ent->indent < win_width) + return 1; + + indent = ent->indent; + str = ent->str; + taken = 0; + + do + { + len = find_next_wrap (buf->xtext, ent, str, win_width, indent); + if (taken < RECORD_WRAPS) + ent->wrap_offset[taken] = (str + len) - ent->str; + indent = buf->indent; + taken++; + str += len; + } + while (str < ent->str + ent->str_len); + + return taken; +} + +/* Calculate number of actual lines (with wraps), to set adj->lower. * + * This should only be called when the window resizes. */ + +static void +gtk_xtext_calc_lines (xtext_buffer *buf, int fire_signal) +{ + textentry *ent; + int width; + int height; + int lines; + + gdk_drawable_get_size (GTK_WIDGET (buf->xtext)->window, &width, &height); + width -= MARGIN; + + if (width < 30 || height < buf->xtext->fontsize || width < buf->indent + 30) + return; + + lines = 0; + ent = buf->text_first; + while (ent) + { + ent->lines_taken = gtk_xtext_lines_taken (buf, ent); + lines += ent->lines_taken; + ent = ent->next; + } + + buf->pagetop_ent = NULL; + buf->num_lines = lines; + gtk_xtext_adjustment_set (buf, fire_signal); +} + +/* find the n-th line in the linked list, this includes wrap calculations */ + +static textentry * +gtk_xtext_nth (GtkXText *xtext, int line, int *subline) +{ + int lines = 0; + textentry *ent; + + ent = xtext->buffer->text_first; + + /* -- optimization -- try to make a short-cut using the pagetop ent */ + if (xtext->buffer->pagetop_ent) + { + if (line == xtext->buffer->pagetop_line) + { + *subline = xtext->buffer->pagetop_subline; + return xtext->buffer->pagetop_ent; + } + if (line > xtext->buffer->pagetop_line) + { + /* lets start from the pagetop instead of the absolute beginning */ + ent = xtext->buffer->pagetop_ent; + lines = xtext->buffer->pagetop_line - xtext->buffer->pagetop_subline; + } + else if (line > xtext->buffer->pagetop_line - line) + { + /* move backwards from pagetop */ + ent = xtext->buffer->pagetop_ent; + lines = xtext->buffer->pagetop_line - xtext->buffer->pagetop_subline; + while (1) + { + if (lines <= line) + { + *subline = line - lines; + return ent; + } + ent = ent->prev; + if (!ent) + break; + lines -= ent->lines_taken; + } + return 0; + } + } + /* -- end of optimization -- */ + + while (ent) + { + lines += ent->lines_taken; + if (lines > line) + { + *subline = ent->lines_taken - (lines - line); + return ent; + } + ent = ent->next; + } + return 0; +} + +/* render enta (or an inclusive range enta->entb) */ + +static int +gtk_xtext_render_ents (GtkXText * xtext, textentry * enta, textentry * entb) +{ + textentry *ent, *orig_ent, *tmp_ent; + int line; + int lines_max; + int width; + int height; + int subline; + int drawing = FALSE; + + if (xtext->buffer->indent < MARGIN) + xtext->buffer->indent = MARGIN; /* 2 pixels is our left margin */ + + gdk_drawable_get_size (GTK_WIDGET (xtext)->window, &width, &height); + width -= MARGIN; + + if (width < 32 || height < xtext->fontsize || width < xtext->buffer->indent + 30) + return 0; + + lines_max = ((height + xtext->pixel_offset) / xtext->fontsize) + 1; + line = 0; + orig_ent = xtext->buffer->pagetop_ent; + subline = xtext->buffer->pagetop_subline; + + /* used before a complete page is in buffer */ + if (orig_ent == NULL) + orig_ent = xtext->buffer->text_first; + + /* check if enta is before the start of this page */ + if (entb) + { + tmp_ent = orig_ent; + while (tmp_ent) + { + if (tmp_ent == enta) + break; + if (tmp_ent == entb) + { + drawing = TRUE; + break; + } + tmp_ent = tmp_ent->next; + } + } + + ent = orig_ent; + while (ent) + { + if (entb && ent == enta) + drawing = TRUE; + + if (drawing || ent == entb || ent == enta) + { + gtk_xtext_reset (xtext, FALSE, TRUE); + line += gtk_xtext_render_line (xtext, ent, line, lines_max, + subline, width); + subline = 0; + xtext->jump_in_offset = 0; /* jump_in_offset only for the 1st */ + } else + { + if (ent == orig_ent) + { + line -= subline; + subline = 0; + } + line += ent->lines_taken; + } + + if (ent == entb) + break; + + if (line >= lines_max) + break; + + ent = ent->next; + } + + /* space below last line */ + return (xtext->fontsize * line) - xtext->pixel_offset; +} + +/* render a whole page/window, starting from 'startline' */ + +static void +gtk_xtext_render_page (GtkXText * xtext) +{ + textentry *ent; + int line; + int lines_max; + int width; + int height; + int subline; + int startline = xtext->adj->value; + + if(!GTK_WIDGET_REALIZED(xtext)) + return; + + if (xtext->buffer->indent < MARGIN) + xtext->buffer->indent = MARGIN; /* 2 pixels is our left margin */ + + gdk_drawable_get_size (GTK_WIDGET (xtext)->window, &width, &height); + + if (width < 34 || height < xtext->fontsize || width < xtext->buffer->indent + 32) + return; + +#ifdef SMOOTH_SCROLL + xtext->pixel_offset = (xtext->adj->value - startline) * xtext->fontsize; +#else + xtext->pixel_offset = 0; +#endif + + subline = line = 0; + ent = xtext->buffer->text_first; + + if (startline > 0) + ent = gtk_xtext_nth (xtext, startline, &subline); + + xtext->buffer->pagetop_ent = ent; + xtext->buffer->pagetop_subline = subline; + xtext->buffer->pagetop_line = startline; + +#ifdef SCROLL_HACK +{ + int pos, overlap; + GdkRectangle area; + + if (xtext->buffer->num_lines <= xtext->adj->page_size) + dontscroll (xtext->buffer); + +#ifdef SMOOTH_SCROLL + pos = xtext->adj->value * xtext->fontsize; +#else + pos = startline * xtext->fontsize; +#endif + overlap = xtext->buffer->last_pixel_pos - pos; + xtext->buffer->last_pixel_pos = pos; + +#ifdef USE_DB +#ifdef WIN32 + if (!xtext->transparent && !xtext->pixmap && abs (overlap) < height) +#else + if (!xtext->pixmap && abs (overlap) < height) +#endif +#else + /* dont scroll PageUp/Down without a DB, it looks ugly */ +#ifdef WIN32 + if (!xtext->transparent && !xtext->pixmap && abs (overlap) < height - (3*xtext->fontsize)) +#else + if (!xtext->pixmap && abs (overlap) < height - (3*xtext->fontsize)) +#endif +#endif + { + /* so the obscured regions are exposed */ + gdk_gc_set_exposures (xtext->fgc, TRUE); + if (overlap < 1) /* DOWN */ + { + int remainder; + + gdk_draw_drawable (xtext->draw_buf, xtext->fgc, xtext->draw_buf, + 0, -overlap, 0, 0, width, height + overlap); + remainder = ((height - xtext->font->descent) % xtext->fontsize) + + xtext->font->descent; + area.y = (height + overlap) - remainder; + area.height = remainder - overlap; + } else + { + gdk_draw_drawable (xtext->draw_buf, xtext->fgc, xtext->draw_buf, + 0, 0, 0, overlap, width, height - overlap); + area.y = 0; + area.height = overlap; + } + gdk_gc_set_exposures (xtext->fgc, FALSE); + + if (area.height > 0) + { + area.x = 0; + area.width = width; + gtk_xtext_paint (GTK_WIDGET (xtext), &area); + } + xtext->buffer->grid_dirty = TRUE; + + return; + } +} +#endif + + xtext->buffer->grid_dirty = FALSE; + width -= MARGIN; + lines_max = ((height + xtext->pixel_offset) / xtext->fontsize) + 1; + + while (ent) + { + gtk_xtext_reset (xtext, FALSE, TRUE); + line += gtk_xtext_render_line (xtext, ent, line, lines_max, + subline, width); + subline = 0; + + if (line >= lines_max) + break; + + ent = ent->next; + } + + line = (xtext->fontsize * line) - xtext->pixel_offset; + /* fill any space below the last line with our background GC */ + xtext_draw_bg (xtext, 0, line, width + MARGIN, height - line); + + /* draw the separator line */ + gtk_xtext_draw_sep (xtext, -1); +} + +void +gtk_xtext_refresh (GtkXText * xtext, int do_trans) +{ + if (GTK_WIDGET_REALIZED (GTK_WIDGET (xtext))) + { +#if defined(USE_XLIB) || defined(WIN32) + if (xtext->transparent && do_trans) + { + gtk_xtext_free_trans (xtext); + gtk_xtext_load_trans (xtext); + } +#endif + gtk_xtext_render_page (xtext); + } +} + +static void +gtk_xtext_kill_ent (xtext_buffer *buffer, textentry *ent) +{ + if (ent == buffer->pagetop_ent) + buffer->pagetop_ent = NULL; + + if (ent == buffer->last_ent_start) + { + buffer->last_ent_start = ent->next; + buffer->last_offset_start = 0; + } + + if (ent == buffer->last_ent_end) + { + buffer->last_ent_start = NULL; + buffer->last_ent_end = NULL; + } + + if (buffer->marker_pos == ent) buffer->marker_pos = NULL; + + free (ent); +} + +/* remove the topline from the list */ + +static void +gtk_xtext_remove_top (xtext_buffer *buffer) +{ + textentry *ent; + + ent = buffer->text_first; + if (!ent) + return; + buffer->num_lines -= ent->lines_taken; + buffer->pagetop_line -= ent->lines_taken; + buffer->last_pixel_pos -= (ent->lines_taken * buffer->xtext->fontsize); + buffer->text_first = ent->next; + if (buffer->text_first) + buffer->text_first->prev = NULL; + else + buffer->text_last = NULL; + + buffer->old_value -= ent->lines_taken; + if (buffer->xtext->buffer == buffer) /* is it the current buffer? */ + { + buffer->xtext->adj->value -= ent->lines_taken; + buffer->xtext->select_start_adj -= ent->lines_taken; + } + + gtk_xtext_kill_ent (buffer, ent); +} + +static void +gtk_xtext_remove_bottom (xtext_buffer *buffer) +{ + textentry *ent; + + ent = buffer->text_last; + if (!ent) + return; + buffer->num_lines -= ent->lines_taken; + buffer->text_last = ent->prev; + if (buffer->text_last) + buffer->text_last->next = NULL; + else + buffer->text_first = NULL; + + gtk_xtext_kill_ent (buffer, ent); +} + +/* If lines=0 => clear all */ + +void +gtk_xtext_clear (xtext_buffer *buf, int lines) +{ + textentry *next; + + if (lines != 0) + { + if (lines < 0) + { + /* delete lines from bottom */ + lines *= -1; + while (lines) + { + gtk_xtext_remove_bottom (buf); + lines--; + } + } + else + { + /* delete lines from top */ + while (lines) + { + gtk_xtext_remove_top (buf); + lines--; + } + } + } + else + { + /* delete all */ + if (buf->xtext->auto_indent) + buf->indent = MARGIN; + buf->scrollbar_down = TRUE; + buf->last_ent_start = NULL; + buf->last_ent_end = NULL; + buf->marker_pos = NULL; + dontscroll (buf); + + while (buf->text_first) + { + next = buf->text_first->next; + free (buf->text_first); + buf->text_first = next; + } + buf->text_last = NULL; + } + + if (buf->xtext->buffer == buf) + { + gtk_xtext_calc_lines (buf, TRUE); + gtk_xtext_refresh (buf->xtext, 0); + } else + { + gtk_xtext_calc_lines (buf, FALSE); + } +} + +static gboolean +gtk_xtext_check_ent_visibility (GtkXText * xtext, textentry *find_ent, int add) +{ + textentry *ent; + int lines_max; + int line = 0; + int width; + int height; + + gdk_drawable_get_size (GTK_WIDGET (xtext)->window, &width, &height); + + lines_max = ((height + xtext->pixel_offset) / xtext->fontsize) + add; + ent = xtext->buffer->pagetop_ent; + + while (ent && line < lines_max) + { + if (find_ent == ent) + return TRUE; + line += ent->lines_taken; + ent = ent->next; + } + + return FALSE; +} + +void +gtk_xtext_check_marker_visibility (GtkXText * xtext) +{ + if (gtk_xtext_check_ent_visibility (xtext, xtext->buffer->marker_pos, 1)) + xtext->buffer->marker_seen = TRUE; +} + +textentry * +gtk_xtext_search (GtkXText * xtext, const gchar *text, textentry *start, gboolean case_match, gboolean backward) +{ + textentry *ent, *fent; + int line; + gchar *str, *nee, *hay; /* needle in haystack */ + + gtk_xtext_selection_clear_full (xtext->buffer); + xtext->buffer->last_ent_start = NULL; + xtext->buffer->last_ent_end = NULL; + + /* set up text comparand for Case Match or Ignore */ + if (case_match) + nee = g_strdup (text); + else + nee = g_utf8_casefold (text, strlen (text)); + + /* Validate that start gives a currently valid ent pointer */ + ent = xtext->buffer->text_first; + while (ent) + { + if (ent == start) + break; + ent = ent->next; + } + if (!ent) + start = NULL; + + /* Choose first ent to look at */ + if (start) + ent = backward? start->prev: start->next; + else + ent = backward? xtext->buffer->text_last: xtext->buffer->text_first; + + /* Search from there to one end or the other until found */ + while (ent) + { + /* If Case Ignore, fold before & free after calling strstr */ + if (case_match) + hay = g_strdup (ent->str); + else + hay = g_utf8_casefold (ent->str, strlen (ent->str)); + /* Try to find the needle in this haystack */ + str = g_strstr_len (hay, strlen (hay), nee); + g_free (hay); + if (str) + break; + ent = backward? ent->prev: ent->next; + } + fent = ent; + + /* Save distance to start, end of found string */ + if (ent) + { + ent->mark_start = str - hay; + ent->mark_end = ent->mark_start + strlen (nee); + + /* is the match visible? Might need to scroll */ + if (!gtk_xtext_check_ent_visibility (xtext, ent, 0)) + { + ent = xtext->buffer->text_first; + line = 0; + while (ent) + { + line += ent->lines_taken; + ent = ent->next; + if (ent == fent) + break; + } + while (line > xtext->adj->upper - xtext->adj->page_size) + line--; + if (backward) + line -= xtext->adj->page_size - ent->lines_taken; + xtext->adj->value = line; + xtext->buffer->scrollbar_down = FALSE; + gtk_adjustment_changed (xtext->adj); + } + } + + g_free (nee); + gtk_widget_queue_draw (GTK_WIDGET (xtext)); + + return fent; +} + +static int +gtk_xtext_render_page_timeout (GtkXText * xtext) +{ + GtkAdjustment *adj = xtext->adj; + + xtext->add_io_tag = 0; + + /* less than a complete page? */ + if (xtext->buffer->num_lines <= adj->page_size) + { + xtext->buffer->old_value = 0; + adj->value = 0; + gtk_xtext_render_page (xtext); + } else if (xtext->buffer->scrollbar_down) + { + g_signal_handler_block (xtext->adj, xtext->vc_signal_tag); + gtk_xtext_adjustment_set (xtext->buffer, FALSE); + gtk_adjustment_set_value (adj, adj->upper - adj->page_size); + g_signal_handler_unblock (xtext->adj, xtext->vc_signal_tag); + xtext->buffer->old_value = adj->value; + gtk_xtext_render_page (xtext); + } else + { + gtk_xtext_adjustment_set (xtext->buffer, TRUE); + if (xtext->indent_changed) + { + xtext->indent_changed = FALSE; + gtk_xtext_render_page (xtext); + } + } + + return 0; +} + +/* append a textentry to our linked list */ + +static void +gtk_xtext_append_entry (xtext_buffer *buf, textentry * ent, time_t stamp) +{ + unsigned int mb; + int i; + + /* we don't like tabs */ + i = 0; + while (i < ent->str_len) + { + if (ent->str[i] == '\t') + ent->str[i] = ' '; + i++; + } + + ent->stamp = stamp; + if (stamp == 0) + ent->stamp = time (0); + ent->str_width = gtk_xtext_text_width (buf->xtext, ent->str, ent->str_len, &mb); + ent->mb = FALSE; + if (mb) + ent->mb = TRUE; + ent->mark_start = -1; + ent->mark_end = -1; + ent->next = NULL; + + if (ent->indent < MARGIN) + ent->indent = MARGIN; /* 2 pixels is the left margin */ + + /* append to our linked list */ + if (buf->text_last) + buf->text_last->next = ent; + else + buf->text_first = ent; + ent->prev = buf->text_last; + buf->text_last = ent; + + ent->lines_taken = gtk_xtext_lines_taken (buf, ent); + buf->num_lines += ent->lines_taken; + + if (buf->reset_marker_pos || + ((buf->marker_pos == NULL || buf->marker_seen) && (buf->xtext->buffer != buf || +#if GTK_CHECK_VERSION(2,4,0) + !gtk_window_has_toplevel_focus (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (buf->xtext))))))) +#else + !(GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (buf->xtext))))->has_focus))) +#endif + { + buf->marker_pos = ent; + dontscroll (buf); /* force scrolling off */ + buf->marker_seen = FALSE; + buf->reset_marker_pos = FALSE; + } + + if (buf->xtext->max_lines > 2 && buf->xtext->max_lines < buf->num_lines) + { + gtk_xtext_remove_top (buf); + } + + if (buf->xtext->buffer == buf) + { +#ifdef SCROLL_HACK + /* this could be improved */ + if ((buf->num_lines - 1) <= buf->xtext->adj->page_size) + dontscroll (buf); +#endif + + if (!buf->xtext->add_io_tag) + { + /* remove scrolling events */ + if (buf->xtext->io_tag) + { + g_source_remove (buf->xtext->io_tag); + buf->xtext->io_tag = 0; + } + buf->xtext->add_io_tag = g_timeout_add (REFRESH_TIMEOUT * 2, + (GSourceFunc) + gtk_xtext_render_page_timeout, + buf->xtext); + } + } else if (buf->scrollbar_down) + { + buf->old_value = buf->num_lines - buf->xtext->adj->page_size; + if (buf->old_value < 0) + buf->old_value = 0; + } +} + +/* the main two public functions */ + +void +gtk_xtext_append_indent (xtext_buffer *buf, + unsigned char *left_text, int left_len, + unsigned char *right_text, int right_len, + time_t stamp) +{ + textentry *ent; + unsigned char *str; + int space; + int tempindent; + int left_width; + + if (left_len == -1) + left_len = strlen (left_text); + + if (right_len == -1) + right_len = strlen (right_text); + + if (right_len >= sizeof (buf->xtext->scratch_buffer)) + right_len = sizeof (buf->xtext->scratch_buffer) - 1; + + if (right_text[right_len-1] == '\n') + right_len--; + + ent = malloc (left_len + right_len + 2 + sizeof (textentry)); + str = (unsigned char *) ent + sizeof (textentry); + + memcpy (str, left_text, left_len); + str[left_len] = ' '; + memcpy (str + left_len + 1, right_text, right_len); + str[left_len + 1 + right_len] = 0; + + left_width = gtk_xtext_text_width (buf->xtext, left_text, left_len, NULL); + + ent->left_len = left_len; + ent->str = str; + ent->str_len = left_len + 1 + right_len; + ent->indent = (buf->indent - left_width) - buf->xtext->space_width; + + if (buf->time_stamp) + space = buf->xtext->stamp_width; + else + space = 0; + + /* do we need to auto adjust the separator position? */ + if (buf->xtext->auto_indent && ent->indent < MARGIN + space) + { + tempindent = MARGIN + space + buf->xtext->space_width + left_width; + + if (tempindent > buf->indent) + buf->indent = tempindent; + + if (buf->indent > buf->xtext->max_auto_indent) + buf->indent = buf->xtext->max_auto_indent; + + gtk_xtext_fix_indent (buf); + gtk_xtext_recalc_widths (buf, FALSE); + + ent->indent = (buf->indent - left_width) - buf->xtext->space_width; + buf->xtext->indent_changed = TRUE; + } + + gtk_xtext_append_entry (buf, ent, stamp); +} + +void +gtk_xtext_append (xtext_buffer *buf, unsigned char *text, int len) +{ + textentry *ent; + + if (len == -1) + len = strlen (text); + + if (text[len-1] == '\n') + len--; + + if (len >= sizeof (buf->xtext->scratch_buffer)) + len = sizeof (buf->xtext->scratch_buffer) - 1; + + ent = malloc (len + 1 + sizeof (textentry)); + ent->str = (unsigned char *) ent + sizeof (textentry); + ent->str_len = len; + if (len) + memcpy (ent->str, text, len); + ent->str[len] = 0; + ent->indent = 0; + ent->left_len = -1; + + gtk_xtext_append_entry (buf, ent, 0); +} + +gboolean +gtk_xtext_is_empty (xtext_buffer *buf) +{ + return buf->text_first == NULL; +} + +int +gtk_xtext_lastlog (xtext_buffer *out, xtext_buffer *search_area, + int (*cmp_func) (char *, void *), void *userdata) +{ + textentry *ent = search_area->text_first; + int matches = 0; + + while (ent) + { + if (cmp_func (ent->str, userdata)) + { + matches++; + /* copy the text over */ + if (search_area->xtext->auto_indent) + gtk_xtext_append_indent (out, ent->str, ent->left_len, + ent->str + ent->left_len + 1, + ent->str_len - ent->left_len - 1, 0); + else + gtk_xtext_append (out, ent->str, ent->str_len); + /* copy the timestamp over */ + out->text_last->stamp = ent->stamp; + } + ent = ent->next; + } + + return matches; +} + +void +gtk_xtext_foreach (xtext_buffer *buf, GtkXTextForeach func, void *data) +{ + textentry *ent = buf->text_first; + + while (ent) + { + (*func) (buf->xtext, ent->str, data); + ent = ent->next; + } +} + +void +gtk_xtext_set_error_function (GtkXText *xtext, void (*error_function) (int)) +{ + xtext->error_function = error_function; +} + +void +gtk_xtext_set_indent (GtkXText *xtext, gboolean indent) +{ + xtext->auto_indent = indent; +} + +void +gtk_xtext_set_max_indent (GtkXText *xtext, int max_auto_indent) +{ + xtext->max_auto_indent = max_auto_indent; +} + +void +gtk_xtext_set_max_lines (GtkXText *xtext, int max_lines) +{ + xtext->max_lines = max_lines; +} + +void +gtk_xtext_set_show_marker (GtkXText *xtext, gboolean show_marker) +{ + xtext->marker = show_marker; +} + +void +gtk_xtext_set_show_separator (GtkXText *xtext, gboolean show_separator) +{ + xtext->separator = show_separator; +} + +void +gtk_xtext_set_thin_separator (GtkXText *xtext, gboolean thin_separator) +{ + xtext->thinline = thin_separator; +} + +void +gtk_xtext_set_time_stamp (xtext_buffer *buf, gboolean time_stamp) +{ + buf->time_stamp = time_stamp; +} + +void +gtk_xtext_set_tint (GtkXText *xtext, int tint_red, int tint_green, int tint_blue) +{ + xtext->tint_red = tint_red; + xtext->tint_green = tint_green; + xtext->tint_blue = tint_blue; + + /*if (xtext->tint_red != 255 || xtext->tint_green != 255 || xtext->tint_blue != 255) + shaded = TRUE;*/ +} + +void +gtk_xtext_set_urlcheck_function (GtkXText *xtext, int (*urlcheck_function) (GtkWidget *, char *, int)) +{ + xtext->urlcheck_function = urlcheck_function; +} + +void +gtk_xtext_set_wordwrap (GtkXText *xtext, gboolean wordwrap) +{ + xtext->wordwrap = wordwrap; +} + +void +gtk_xtext_reset_marker_pos (GtkXText *xtext) +{ + xtext->buffer->marker_pos = NULL; + dontscroll (xtext->buffer); /* force scrolling off */ + gtk_xtext_render_page (xtext); + xtext->buffer->reset_marker_pos = TRUE; +} + +void +gtk_xtext_buffer_show (GtkXText *xtext, xtext_buffer *buf, int render) +{ + int w, h; + + buf->xtext = xtext; + + if (xtext->buffer == buf) + return; + +/*printf("text_buffer_show: xtext=%p buffer=%p\n", xtext, buf);*/ + + if (xtext->add_io_tag) + { + g_source_remove (xtext->add_io_tag); + xtext->add_io_tag = 0; + } + + if (xtext->io_tag) + { + g_source_remove (xtext->io_tag); + xtext->io_tag = 0; + } + + if (!GTK_WIDGET_REALIZED (GTK_WIDGET (xtext))) + gtk_widget_realize (GTK_WIDGET (xtext)); + + gdk_drawable_get_size (GTK_WIDGET (xtext)->window, &w, &h); + + /* after a font change */ + if (buf->needs_recalc) + { + buf->needs_recalc = FALSE; + gtk_xtext_recalc_widths (buf, TRUE); + } + + /* now change to the new buffer */ + xtext->buffer = buf; + dontscroll (buf); /* force scrolling off */ + xtext->adj->value = buf->old_value; + xtext->adj->upper = buf->num_lines; + if (xtext->adj->upper == 0) + xtext->adj->upper = 1; + /* sanity check */ + else if (xtext->adj->value > xtext->adj->upper - xtext->adj->page_size) + { + /*buf->pagetop_ent = NULL;*/ + xtext->adj->value = xtext->adj->upper - xtext->adj->page_size; + if (xtext->adj->value < 0) + xtext->adj->value = 0; + } + + if (render) + { + /* did the window change size since this buffer was last shown? */ + if (buf->window_width != w) + { + buf->window_width = w; + gtk_xtext_calc_lines (buf, FALSE); + if (buf->scrollbar_down) + gtk_adjustment_set_value (xtext->adj, xtext->adj->upper - + xtext->adj->page_size); + } else if (buf->window_height != h) + { + buf->window_height = h; + buf->pagetop_ent = NULL; + gtk_xtext_adjustment_set (buf, FALSE); + } + + gtk_xtext_render_page (xtext); + gtk_adjustment_changed (xtext->adj); + } else + { + /* avoid redoing the transparency */ + xtext->avoid_trans = TRUE; + } +} + +xtext_buffer * +gtk_xtext_buffer_new (GtkXText *xtext) +{ + xtext_buffer *buf; + + buf = malloc (sizeof (xtext_buffer)); + memset (buf, 0, sizeof (xtext_buffer)); + buf->old_value = -1; + buf->xtext = xtext; + buf->scrollbar_down = TRUE; + buf->indent = xtext->space_width * 2; + dontscroll (buf); + + return buf; +} + +void +gtk_xtext_buffer_free (xtext_buffer *buf) +{ + textentry *ent, *next; + + if (buf->xtext->buffer == buf) + buf->xtext->buffer = buf->xtext->orig_buffer; + + if (buf->xtext->selection_buffer == buf) + buf->xtext->selection_buffer = NULL; + + ent = buf->text_first; + while (ent) + { + next = ent->next; + free (ent); + ent = next; + } + + free (buf); +} diff --git a/etc/wyatt8740/src/fe-gtk/xtext.h b/etc/wyatt8740/src/fe-gtk/xtext.h new file mode 100644 index 0000000..fa490a6 --- /dev/null +++ b/etc/wyatt8740/src/fe-gtk/xtext.h @@ -0,0 +1,275 @@ +#ifndef __XTEXT_H__ +#define __XTEXT_H__ + +#include <gtk/gtkadjustment.h> +#ifdef USE_XFT +#include <X11/Xft/Xft.h> +#endif + +#ifdef USE_SHM +#include <X11/Xlib.h> +#include <sys/ipc.h> +#include <sys/shm.h> +#include <X11/extensions/XShm.h> +#endif + +#define GTK_TYPE_XTEXT (gtk_xtext_get_type ()) +#define GTK_XTEXT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GTK_TYPE_XTEXT, GtkXText)) +#define GTK_XTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_XTEXT, GtkXTextClass)) +#define GTK_IS_XTEXT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GTK_TYPE_XTEXT)) +#define GTK_IS_XTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_XTEXT)) +#define GTK_XTEXT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_XTEXT, GtkXTextClass)) + +#define ATTR_BOLD '\002' +#define ATTR_COLOR '\003' +#define ATTR_BLINK '\006' +#define ATTR_BEEP '\007' +#define ATTR_HIDDEN '\010' +#define ATTR_ITALICS2 '\011' +#define ATTR_RESET '\017' +#define ATTR_REVERSE '\026' +#define ATTR_ITALICS '\035' +#define ATTR_UNDERLINE '\037' + +/* these match palette.h */ +#define XTEXT_MIRC_COLS 32 +#define XTEXT_COLS 37 /* 32 plus 5 for extra stuff below */ +#define XTEXT_MARK_FG 32 /* for marking text */ +#define XTEXT_MARK_BG 33 +#define XTEXT_FG 34 +#define XTEXT_BG 35 +#define XTEXT_MARKER 36 /* for marker line */ + +typedef struct _GtkXText GtkXText; +typedef struct _GtkXTextClass GtkXTextClass; +typedef struct textentry textentry; + +typedef struct { + GtkXText *xtext; /* attached to this widget */ + + gfloat old_value; /* last known adj->value */ + textentry *text_first; + textentry *text_last; + guint16 grid_offset[256]; + + textentry *last_ent_start; /* this basically describes the last rendered */ + textentry *last_ent_end; /* selection. */ + int last_offset_start; + int last_offset_end; + + int last_pixel_pos; + + int pagetop_line; + int pagetop_subline; + textentry *pagetop_ent; /* what's at xtext->adj->value */ + + int num_lines; + int indent; /* position of separator (pixels) from left */ + + textentry *marker_pos; + + int window_width; /* window size when last rendered. */ + int window_height; + + unsigned int time_stamp:1; + unsigned int scrollbar_down:1; + unsigned int needs_recalc:1; + unsigned int grid_dirty:1; + unsigned int marker_seen:1; + unsigned int reset_marker_pos:1; +} xtext_buffer; + +struct _GtkXText +{ + GtkWidget widget; + + xtext_buffer *buffer; + xtext_buffer *orig_buffer; + xtext_buffer *selection_buffer; + +#ifdef USE_SHM + XShmSegmentInfo shminfo; +#endif + + GtkAdjustment *adj; + GdkPixmap *pixmap; /* 0 = use palette[19] */ + GdkDrawable *draw_buf; /* points to ->window */ + GdkCursor *hand_cursor; + GdkCursor *resize_cursor; + + int pixel_offset; /* amount of pixels the top line is chopped by */ + + int last_win_x; + int last_win_y; + int last_win_h; + int last_win_w; + + int tint_red; + int tint_green; + int tint_blue; + + GdkGC *bgc; /* backing pixmap */ + GdkGC *fgc; /* text foreground color */ + GdkGC *light_gc; /* sep bar */ + GdkGC *dark_gc; + GdkGC *thin_gc; + GdkGC *marker_gc; + gulong palette[XTEXT_COLS]; + + gint io_tag; /* for delayed refresh events */ + gint add_io_tag; /* "" when adding new text */ + gint scroll_tag; /* marking-scroll timeout */ + gulong vc_signal_tag; /* signal handler for "value_changed" adj */ + + int select_start_adj; /* the adj->value when the selection started */ + int select_start_x; + int select_start_y; + int select_end_x; + int select_end_y; + + int max_lines; + + int col_fore; + int col_back; + + int depth; /* gdk window depth */ + + char num[8]; /* for parsing mirc color */ + int nc; /* offset into xtext->num */ + + textentry *hilight_ent; + int hilight_start; + int hilight_end; + + guint16 fontwidth[128]; /* each char's width, only the ASCII ones */ + +#ifdef USE_XFT + XftColor color[XTEXT_COLS]; + XftColor *xft_fg; + XftColor *xft_bg; /* both point into color[20] */ + XftDraw *xftdraw; + XftFont *font; + XftFont *ifont; /* italics */ +#else + struct pangofont + { + PangoFontDescription *font; + PangoFontDescription *ifont; /* italics */ + int ascent; + int descent; + } *font, pango_font; + PangoLayout *layout; +#endif + + int fontsize; + int space_width; /* width (pixels) of the space " " character */ + int stamp_width; /* width of "[88:88:88]" */ + int max_auto_indent; + + unsigned char scratch_buffer[4096]; + + void (*error_function) (int type); + int (*urlcheck_function) (GtkWidget * xtext, char *word, int len); + + int jump_out_offset; /* point at which to stop rendering */ + int jump_in_offset; /* "" start rendering */ + + int ts_x; /* ts origin for ->bgc GC */ + int ts_y; + + int clip_x; /* clipping (x directions) */ + int clip_x2; /* from x to x2 */ + + int clip_y; /* clipping (y directions) */ + int clip_y2; /* from y to y2 */ + + /* current text states */ + unsigned int bold:1; + unsigned int underline:1; + unsigned int italics:1; + unsigned int hidden:1; + + /* text parsing states */ + unsigned int parsing_backcolor:1; + unsigned int parsing_color:1; + unsigned int backcolor:1; + + /* various state information */ + unsigned int moving_separator:1; + unsigned int word_or_line_select:1; + unsigned int button_down:1; + unsigned int hilighting:1; + unsigned int dont_render:1; + unsigned int dont_render2:1; + unsigned int cursor_hand:1; + unsigned int cursor_resize:1; + unsigned int skip_border_fills:1; + unsigned int skip_stamp:1; + unsigned int mark_stamp:1; /* Cut&Paste with stamps? */ + unsigned int force_stamp:1; /* force redrawing it */ + unsigned int render_hilights_only:1; + unsigned int in_hilight:1; + unsigned int un_hilight:1; + unsigned int recycle:1; + unsigned int avoid_trans:1; + unsigned int indent_changed:1; + unsigned int shm:1; + unsigned int color_paste:1; /* CTRL was pressed when selection finished */ + + /* settings/prefs */ + unsigned int auto_indent:1; + unsigned int thinline:1; + unsigned int transparent:1; + unsigned int shaded:1; + unsigned int marker:1; + unsigned int separator:1; + unsigned int wordwrap:1; + unsigned int overdraw:1; + unsigned int ignore_hidden:1; /* rawlog uses this */ +}; + +struct _GtkXTextClass +{ + GtkWidgetClass parent_class; + void (*word_click) (GtkXText * xtext, char *word, GdkEventButton * event); +}; + +GtkWidget *gtk_xtext_new (GdkColor palette[], int separator); +void gtk_xtext_append (xtext_buffer *buf, unsigned char *text, int len); +void gtk_xtext_append_indent (xtext_buffer *buf, + unsigned char *left_text, int left_len, + unsigned char *right_text, int right_len, + time_t stamp); +int gtk_xtext_set_font (GtkXText *xtext, char *name); +void gtk_xtext_set_background (GtkXText * xtext, GdkPixmap * pixmap, gboolean trans); +void gtk_xtext_set_palette (GtkXText * xtext, GdkColor palette[]); +void gtk_xtext_clear (xtext_buffer *buf, int lines); +void gtk_xtext_save (GtkXText * xtext, int fh); +void gtk_xtext_refresh (GtkXText * xtext, int do_trans); +int gtk_xtext_lastlog (xtext_buffer *out, xtext_buffer *search_area, int (*cmp_func) (char *, void *userdata), void *userdata); +textentry *gtk_xtext_search (GtkXText * xtext, const gchar *text, textentry *start, gboolean case_match, gboolean backward); +void gtk_xtext_reset_marker_pos (GtkXText *xtext); +void gtk_xtext_check_marker_visibility(GtkXText *xtext); + +gboolean gtk_xtext_is_empty (xtext_buffer *buf); +typedef void (*GtkXTextForeach) (GtkXText *xtext, unsigned char *text, void *data); +void gtk_xtext_foreach (xtext_buffer *buf, GtkXTextForeach func, void *data); + +void gtk_xtext_set_error_function (GtkXText *xtext, void (*error_function) (int)); +void gtk_xtext_set_indent (GtkXText *xtext, gboolean indent); +void gtk_xtext_set_max_indent (GtkXText *xtext, int max_auto_indent); +void gtk_xtext_set_max_lines (GtkXText *xtext, int max_lines); +void gtk_xtext_set_show_marker (GtkXText *xtext, gboolean show_marker); +void gtk_xtext_set_show_separator (GtkXText *xtext, gboolean show_separator); +void gtk_xtext_set_thin_separator (GtkXText *xtext, gboolean thin_separator); +void gtk_xtext_set_time_stamp (xtext_buffer *buf, gboolean timestamp); +void gtk_xtext_set_tint (GtkXText *xtext, int tint_red, int tint_green, int tint_blue); +void gtk_xtext_set_urlcheck_function (GtkXText *xtext, int (*urlcheck_function) (GtkWidget *, char *, int)); +void gtk_xtext_set_wordwrap (GtkXText *xtext, gboolean word_wrap); + +xtext_buffer *gtk_xtext_buffer_new (GtkXText *xtext); +void gtk_xtext_buffer_free (xtext_buffer *buf); +void gtk_xtext_buffer_show (GtkXText *xtext, xtext_buffer *buf, int render); +GType gtk_xtext_get_type (void); + +#endif diff --git a/etc/wyatt8740/src/fe-text/Makefile.am b/etc/wyatt8740/src/fe-text/Makefile.am new file mode 100644 index 0000000..ef48203 --- /dev/null +++ b/etc/wyatt8740/src/fe-text/Makefile.am @@ -0,0 +1,9 @@ +bin_PROGRAMS = xchat-text + +EXTRA_DIST = README + +INCLUDES = $(COMMON_CFLAGS) + +xchat_text_LDADD = ../common/libxchatcommon.a $(COMMON_LIBS) +xchat_text_SOURCES = fe-text.c fe-text.h + diff --git a/etc/wyatt8740/src/fe-text/Makefile.in b/etc/wyatt8740/src/fe-text/Makefile.in new file mode 100644 index 0000000..d032ee8 --- /dev/null +++ b/etc/wyatt8740/src/fe-text/Makefile.in @@ -0,0 +1,703 @@ +# Makefile.in generated by automake 1.16.5 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2021 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +bin_PROGRAMS = xchat-text$(EXEEXT) +subdir = src/fe-text +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +PROGRAMS = $(bin_PROGRAMS) +am_xchat_text_OBJECTS = fe-text.$(OBJEXT) +xchat_text_OBJECTS = $(am_xchat_text_OBJECTS) +am__DEPENDENCIES_1 = +xchat_text_DEPENDENCIES = ../common/libxchatcommon.a \ + $(am__DEPENDENCIES_1) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = ./$(DEPDIR)/fe-text.Po +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(xchat_text_SOURCES) +DIST_SOURCES = $(xchat_text_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp README +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COMMON_CFLAGS = @COMMON_CFLAGS@ +COMMON_LIBS = @COMMON_LIBS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DBUS_BINDING_TOOL = @DBUS_BINDING_TOOL@ +DBUS_CFLAGS = @DBUS_CFLAGS@ +DBUS_LIBS = @DBUS_LIBS@ +DBUS_SERVICES_DIR = @DBUS_SERVICES_DIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ETAGS = @ETAGS@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FILECMD = @FILECMD@ +GCONFTOOL = @GCONFTOOL@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLIB_CFLAGS = @GLIB_CFLAGS@ +GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GLIB_LIBS = @GLIB_LIBS@ +GLIB_MKENUMS = @GLIB_MKENUMS@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GOBJECT_QUERY = @GOBJECT_QUERY@ +GREP = @GREP@ +GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ +GTKSPELL_LIBS = @GTKSPELL_LIBS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_LIBS = @GTK_LIBS@ +GUI_CFLAGS = @GUI_CFLAGS@ +GUI_LIBS = @GUI_LIBS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSEXY_CFLAGS = @LIBSEXY_CFLAGS@ +LIBSEXY_LIBS = @LIBSEXY_LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL_CFLAGS = @PERL_CFLAGS@ +PERL_LDFLAGS = @PERL_LDFLAGS@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLUGIN_INCLUDES = @PLUGIN_INCLUDES@ +POSUB = @POSUB@ +PY_CFLAGS = @PY_CFLAGS@ +PY_LIBS = @PY_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TCL_CFLAGS = @TCL_CFLAGS@ +TCL_LIBS = @TCL_LIBS@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gdkpixbufcsourcepath = @gdkpixbufcsourcepath@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +perlpath = @perlpath@ +pkgconfigpath = @pkgconfigpath@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pythonpath = @pythonpath@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sedpath = @sedpath@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +unamepath = @unamepath@ +xchatlibdir = @xchatlibdir@ +EXTRA_DIST = README +INCLUDES = $(COMMON_CFLAGS) +xchat_text_LDADD = ../common/libxchatcommon.a $(COMMON_LIBS) +xchat_text_SOURCES = fe-text.c fe-text.h +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/fe-text/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/fe-text/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +xchat-text$(EXEEXT): $(xchat_text_OBJECTS) $(xchat_text_DEPENDENCIES) $(EXTRA_xchat_text_DEPENDENCIES) + @rm -f xchat-text$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(xchat_text_OBJECTS) $(xchat_text_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fe-text.Po@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f ./$(DEPDIR)/fe-text.Po + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f ./$(DEPDIR)/fe-text.Po + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ + clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \ + ctags ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-binPROGRAMS \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-binPROGRAMS + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/etc/wyatt8740/src/fe-text/README b/etc/wyatt8740/src/fe-text/README new file mode 100644 index 0000000..bb760aa --- /dev/null +++ b/etc/wyatt8740/src/fe-text/README @@ -0,0 +1,5 @@ +fe-text README +~~~~~~~~~~~~~~ + +This is an experimental text frontend for X-Chat. +If anyone wants to add ncurses support, they are welcome to. diff --git a/etc/wyatt8740/src/fe-text/fe-text.c b/etc/wyatt8740/src/fe-text/fe-text.c new file mode 100644 index 0000000..2bc2e64 --- /dev/null +++ b/etc/wyatt8740/src/fe-text/fe-text.c @@ -0,0 +1,862 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#ifdef HAVE_STRINGS_H +#include <strings.h> +#endif +#include <sys/time.h> +#include <sys/types.h> +#include <unistd.h> +#include <ctype.h> +#include "../common/xchat.h" +#include "../common/xchatc.h" +#include "../common/outbound.h" +#include "../common/util.h" +#include "../common/fe.h" +#include "fe-text.h" + + +static GSList *tmr_list; /* timer list */ +static int tmr_list_count; +static GSList *se_list; /* socket event list */ +static int se_list_count; +static int done = FALSE; /* finished ? */ + + +static void +send_command (char *cmd) +{ + handle_multiline (sess_list->data, cmd, TRUE, FALSE); +} + +static void +read_stdin (void) +{ + int len, i = 0; + static int pos = 0; + static char inbuf[1024]; + char tmpbuf[512]; + + len = read (STDIN_FILENO, tmpbuf, sizeof tmpbuf - 1); + + while (i < len) + { + switch (tmpbuf[i]) + { + case '\r': + break; + + case '\n': + inbuf[pos] = 0; + pos = 0; + send_command (inbuf); + break; + + default: + inbuf[pos] = tmpbuf[i]; + if (pos < (sizeof inbuf - 2)) + pos++; + } + i++; + } +} + +static int done_intro = 0; + +void +fe_new_window (struct session *sess, int focus) +{ + char buf[512]; + + sess->gui = malloc (4); + + if (!sess->server->front_session) + sess->server->front_session = sess; + if (!sess->server->server_session) + sess->server->server_session = sess; + if (!current_tab) + current_tab = sess; + + if (done_intro) + return; + done_intro = 1; + + snprintf (buf, sizeof (buf), + "\n" + " \017xchat \00310"PACKAGE_VERSION"\n" + " \017Running on \00310%s \017glib \00310%d.%d.%d\n" + " \017This binary compiled \00310"__DATE__"\017\n", + get_cpu_str(), + glib_major_version, glib_minor_version, glib_micro_version); + fe_print_text (sess, buf, 0); + + fe_print_text (sess, "\n\nCompiled in Features\0032:\017 " +#ifdef USE_PLUGIN + "Plugin " +#endif +#ifdef ENABLE_NLS + "NLS " +#endif +#ifdef USE_OPENSSL + "OpenSSL " +#endif +#ifdef USE_IPV6 + "IPv6" +#endif + "\n\n", 0); + fflush (stdout); + fflush (stdin); +} + +static int +get_stamp_str (time_t tim, char *dest, int size) +{ + return strftime (dest, size, prefs.stamp_format, localtime (&tim)); +} + +static int +timecat (char *buf) +{ + char stampbuf[64]; + + get_stamp_str (time (0), stampbuf, sizeof (stampbuf)); + strcat (buf, stampbuf); + return strlen (stampbuf); +} + +/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */ +static const short colconv[] = { 0, 7, 4, 2, 1, 3, 5, 11, 13, 12, 6, 16, 14, 15, 10, 7 }; + +void +fe_print_text (struct session *sess, char *text, time_t stamp) +{ + int dotime = FALSE; + char num[8]; + int reverse = 0, under = 0, bold = 0, + comma, k, i = 0, j = 0, len = strlen (text); + unsigned char *newtext = malloc (len + 1024); + + if (prefs.timestamp) + { + newtext[0] = 0; + j += timecat (newtext); + } + while (i < len) + { + if (dotime && text[i] != 0) + { + dotime = FALSE; + newtext[j] = 0; + j += timecat (newtext); + } + switch (text[i]) + { + case 3: + i++; + if (!isdigit (text[i])) + { + newtext[j] = 27; + j++; + newtext[j] = '['; + j++; + newtext[j] = 'm'; + j++; + i--; + goto jump2; + } + k = 0; + comma = FALSE; + while (i < len) + { + if (text[i] >= '0' && text[i] <= '9' && k < 2) + { + num[k] = text[i]; + k++; + } else + { + int col, mirc; + num[k] = 0; + newtext[j] = 27; + j++; + newtext[j] = '['; + j++; + if (k == 0) + { + newtext[j] = 'm'; + j++; + } else + { + if (comma) + col = 40; + else + col = 30; + mirc = atoi (num); + mirc = colconv[mirc]; + if (mirc > 9) + { + mirc += 50; + sprintf ((char *) &newtext[j], "%dm", mirc + col); + } else + { + sprintf ((char *) &newtext[j], "%dm", mirc + col); + } + j = strlen (newtext); + } + switch (text[i]) + { + case ',': + comma = TRUE; + break; + default: + goto jump; + } + k = 0; + } + i++; + } + break; + case '\026': /* REVERSE */ + if (reverse) + { + reverse = FALSE; + strcpy (&newtext[j], "\033[27m"); + } else + { + reverse = TRUE; + strcpy (&newtext[j], "\033[7m"); + } + j = strlen (newtext); + break; + case '\037': /* underline */ + if (under) + { + under = FALSE; + strcpy (&newtext[j], "\033[24m"); + } else + { + under = TRUE; + strcpy (&newtext[j], "\033[4m"); + } + j = strlen (newtext); + break; + case '\002': /* bold */ + if (bold) + { + bold = FALSE; + strcpy (&newtext[j], "\033[22m"); + } else + { + bold = TRUE; + strcpy (&newtext[j], "\033[1m"); + } + j = strlen (newtext); + break; + case '\007': + if (!prefs.filterbeep) + { + newtext[j] = text[i]; + j++; + } + break; + case '\017': /* reset all */ + strcpy (&newtext[j], "\033[m"); + j += 3; + reverse = FALSE; + bold = FALSE; + under = FALSE; + break; + case '\t': + newtext[j] = ' '; + j++; + break; + case '\n': + newtext[j] = '\r'; + j++; + if (prefs.timestamp) + dotime = TRUE; + default: + newtext[j] = text[i]; + j++; + } + jump2: + i++; + jump: + i += 0; + } + newtext[j] = 0; + write (STDOUT_FILENO, newtext, j); + free (newtext); +} + +void +fe_timeout_remove (int tag) +{ + timerevent *te; + GSList *list; + + list = tmr_list; + while (list) + { + te = (timerevent *) list->data; + if (te->tag == tag) + { + tmr_list = g_slist_remove (tmr_list, te); + free (te); + return; + } + list = list->next; + } +} + +int +fe_timeout_add (int interval, void *callback, void *userdata) +{ + struct timeval now; + timerevent *te = malloc (sizeof (timerevent)); + + tmr_list_count++; /* this overflows at 2.2Billion, who cares!! */ + + te->tag = tmr_list_count; + te->interval = interval; + te->callback = callback; + te->userdata = userdata; + + gettimeofday (&now, NULL); + te->next_call = now.tv_sec * 1000 + (now.tv_usec / 1000) + te->interval; + + tmr_list = g_slist_prepend (tmr_list, te); + + return te->tag; +} + +void +fe_input_remove (int tag) +{ + socketevent *se; + GSList *list; + + list = se_list; + while (list) + { + se = (socketevent *) list->data; + if (se->tag == tag) + { + se_list = g_slist_remove (se_list, se); + free (se); + return; + } + list = list->next; + } +} + +int +fe_input_add (int sok, int flags, void *func, void *data) +{ + socketevent *se = malloc (sizeof (socketevent)); + + se_list_count++; /* this overflows at 2.2Billion, who cares!! */ + + se->tag = se_list_count; + se->sok = sok; + se->rread = flags & FIA_READ; + se->wwrite = flags & FIA_WRITE; + se->eexcept = flags & FIA_EX; + se->callback = func; + se->userdata = data; + se_list = g_slist_prepend (se_list, se); + + return se->tag; +} + +int +fe_args (int argc, char *argv[]) +{ + if (argc > 1) + { + if (!strcasecmp (argv[1], "--version") || !strcasecmp (argv[1], "-v")) + { + puts (PACKAGE_VERSION); + return 0; + } + } + return -1; +} + +void +fe_init (void) +{ + se_list = 0; + se_list_count = 0; + tmr_list = 0; + tmr_list_count = 0; + prefs.autosave = 0; + prefs.use_server_tab = 0; + prefs.autodialog = 0; + prefs.lagometer = 0; + prefs.slist_skip = 1; +} + +void +fe_main (void) +{ + struct timeval timeout, now; + socketevent *se; + timerevent *te; + fd_set rd, wd, ex; + GSList *list; + guint64 shortest, delay; + + if (!sess_list) + new_ircwindow (NULL, NULL, SESS_SERVER, 0); + +#ifdef ENABLE_NLS + bindtextdomain (GETTEXT_PACKAGE, PREFIX"/share/locale"); + bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); + textdomain (GETTEXT_PACKAGE); +#endif + + while (!done) + { + FD_ZERO (&rd); + FD_ZERO (&wd); + FD_ZERO (&ex); + + list = se_list; + while (list) + { + se = (socketevent *) list->data; + if (se->rread) + FD_SET (se->sok, &rd); + if (se->wwrite) + FD_SET (se->sok, &wd); + if (se->eexcept) + FD_SET (se->sok, &ex); + list = list->next; + } + + FD_SET (STDIN_FILENO, &rd); /* for reading keyboard */ + + /* find the shortest timeout event */ + shortest = 0; + list = tmr_list; + while (list) + { + te = (timerevent *) list->data; + if (te->next_call < shortest || shortest == 0) + shortest = te->next_call; + list = list->next; + } + gettimeofday (&now, NULL); + delay = shortest - ((now.tv_sec * 1000) + (now.tv_usec / 1000)); + timeout.tv_sec = delay / 1000; + timeout.tv_usec = (delay % 1000) * 1000; + + select (FD_SETSIZE, &rd, &wd, &ex, &timeout); + + if (FD_ISSET (STDIN_FILENO, &rd)) + read_stdin (); + + /* set all checked flags to false */ + list = se_list; + while (list) + { + se = (socketevent *) list->data; + se->checked = 0; + list = list->next; + } + + /* check all the socket callbacks */ + list = se_list; + while (list) + { + se = (socketevent *) list->data; + se->checked = 1; + if (se->rread && FD_ISSET (se->sok, &rd)) + { + se->callback (NULL, 1, se->userdata); + } else if (se->wwrite && FD_ISSET (se->sok, &wd)) + { + se->callback (NULL, 2, se->userdata); + } else if (se->eexcept && FD_ISSET (se->sok, &ex)) + { + se->callback (NULL, 4, se->userdata); + } + list = se_list; + if (list) + { + se = (socketevent *) list->data; + while (se->checked) + { + list = list->next; + if (!list) + break; + se = (socketevent *) list->data; + } + } + } + + /* now check our list of timeout events, some might need to be called! */ + gettimeofday (&now, NULL); + list = tmr_list; + while (list) + { + te = (timerevent *) list->data; + list = list->next; + if (now.tv_sec * 1000 + (now.tv_usec / 1000) >= te->next_call) + { + /* if the callback returns 0, it must be removed */ + if (te->callback (te->userdata) == 0) + { + fe_timeout_remove (te->tag); + } else + { + te->next_call = now.tv_sec * 1000 + (now.tv_usec / 1000) + te->interval; + } + } + } + + } +} + +void +fe_exit (void) +{ + done = TRUE; +} + +void +fe_new_server (struct server *serv) +{ + serv->gui = malloc (4); +} + +void +fe_message (char *msg, int flags) +{ + puts (msg); +} + +void +fe_close_window (struct session *sess) +{ + session_free (sess); + done = TRUE; +} + +void +fe_beep (void) +{ + putchar (7); +} + +void +fe_add_rawlog (struct server *serv, char *text, int len, int outbound) +{ +} +void +fe_set_topic (struct session *sess, char *topic, char *stripped_topic) +{ +} +void +fe_cleanup (void) +{ +} +void +fe_set_hilight (struct session *sess) +{ +} +void +fe_set_tab_color (struct session *sess, int col) +{ +} +void +fe_update_mode_buttons (struct session *sess, char mode, char sign) +{ +} +void +fe_update_channel_key (struct session *sess) +{ +} +void +fe_update_channel_limit (struct session *sess) +{ +} +int +fe_is_chanwindow (struct server *serv) +{ + return 0; +} + +void +fe_add_chan_list (struct server *serv, char *chan, char *users, char *topic) +{ +} +void +fe_chan_list_end (struct server *serv) +{ +} +int +fe_is_banwindow (struct session *sess) +{ + return 0; +} +void +fe_add_ban_list (struct session *sess, char *mask, char *who, char *when, int is_exemption) +{ +} +void +fe_ban_list_end (struct session *sess, int is_exemption) +{ +} +void +fe_notify_update (char *name) +{ +} +void +fe_notify_ask (char *name, char *networks) +{ +} +void +fe_text_clear (struct session *sess, int lines) +{ +} +void +fe_progressbar_start (struct session *sess) +{ +} +void +fe_progressbar_end (struct server *serv) +{ +} +void +fe_userlist_insert (struct session *sess, struct User *newuser, int row, int sel) +{ +} +int +fe_userlist_remove (struct session *sess, struct User *user) +{ + return 0; +} +void +fe_userlist_rehash (struct session *sess, struct User *user) +{ +} +void +fe_userlist_move (struct session *sess, struct User *user, int new_row) +{ +} +void +fe_userlist_numbers (struct session *sess) +{ +} +void +fe_userlist_clear (struct session *sess) +{ +} +void +fe_userlist_set_selected (struct session *sess) +{ +} +void +fe_dcc_add (struct DCC *dcc) +{ +} +void +fe_dcc_update (struct DCC *dcc) +{ +} +void +fe_dcc_remove (struct DCC *dcc) +{ +} +void +fe_clear_channel (struct session *sess) +{ +} +void +fe_session_callback (struct session *sess) +{ +} +void +fe_server_callback (struct server *serv) +{ +} +void +fe_url_add (const char *text) +{ +} +void +fe_pluginlist_update (void) +{ +} +void +fe_buttons_update (struct session *sess) +{ +} +void +fe_dlgbuttons_update (struct session *sess) +{ +} +void +fe_dcc_send_filereq (struct session *sess, char *nick, int maxcps, int passive) +{ +} +void +fe_set_channel (struct session *sess) +{ +} +void +fe_set_title (struct session *sess) +{ +} +void +fe_set_nonchannel (struct session *sess, int state) +{ +} +void +fe_set_nick (struct server *serv, char *newnick) +{ +} +void +fe_change_nick (struct server *serv, char *nick, char *newnick) +{ +} +void +fe_ignore_update (int level) +{ +} +int +fe_dcc_open_recv_win (int passive) +{ + return FALSE; +} +int +fe_dcc_open_send_win (int passive) +{ + return FALSE; +} +int +fe_dcc_open_chat_win (int passive) +{ + return FALSE; +} +void +fe_userlist_hide (session * sess) +{ +} +void +fe_lastlog (session * sess, session * lastlog_sess, char *sstr, gboolean regexp) +{ +} +void +fe_set_lag (server * serv, int lag) +{ +} +void +fe_set_throttle (server * serv) +{ +} +void +fe_set_away (server *serv) +{ +} +void +fe_serverlist_open (session *sess) +{ +} +void +fe_get_str (char *prompt, char *def, void *callback, void *ud) +{ +} +void +fe_get_int (char *prompt, int def, void *callback, void *ud) +{ +} +void +fe_idle_add (void *func, void *data) +{ +} +void +fe_ctrl_gui (session *sess, fe_gui_action action, int arg) +{ +} +int +fe_gui_info (session *sess, int info_type) +{ + return -1; +} +void * +fe_gui_info_ptr (session *sess, int info_type) +{ + return NULL; +} +void fe_confirm (const char *message, void (*yesproc)(void *), void (*noproc)(void *), void *ud) +{ +} +char *fe_get_inputbox_contents (struct session *sess) +{ + return NULL; +} +void fe_set_inputbox_contents (struct session *sess, char *text) +{ +} +int fe_get_inputbox_cursor (struct session *sess) +{ + return 0; +} +void fe_set_inputbox_cursor (struct session *sess, int delta, int pos) +{ +} +void fe_open_url (const char *url) +{ +} +void fe_menu_del (menu_entry *me) +{ +} +char *fe_menu_add (menu_entry *me) +{ + return NULL; +} +void fe_menu_update (menu_entry *me) +{ +} +void fe_uselect (struct session *sess, char *word[], int do_clear, int scroll_to) +{ +} +void +fe_server_event (server *serv, int type, int arg) +{ +} +void +fe_flash_window (struct session *sess) +{ +} +void fe_get_file (const char *title, char *initial, + void (*callback) (void *userdata, char *file), void *userdata, + int flags) +{ +} +void fe_tray_set_flash (const char *filename1, const char *filename2, int timeout){} +void fe_tray_set_file (const char *filename){} +void fe_tray_set_icon (feicon icon){} +void fe_tray_set_tooltip (const char *text){} +void fe_tray_set_balloon (const char *title, const char *text){} +void fe_userlist_update (session *sess, struct User *user){} diff --git a/etc/wyatt8740/src/fe-text/fe-text.h b/etc/wyatt8740/src/fe-text/fe-text.h new file mode 100644 index 0000000..b8afa28 --- /dev/null +++ b/etc/wyatt8740/src/fe-text/fe-text.h @@ -0,0 +1,29 @@ + +typedef int (*socket_callback) (void *source, int condition, void *user_data); +typedef int (*timer_callback) (void *user_data); + +struct socketeventRec +{ + socket_callback callback; + void *userdata; + int sok; + int tag; + int rread:1; + int wwrite:1; + int eexcept:1; + int checked:1; +}; + +typedef struct socketeventRec socketevent; + + +struct timerRec +{ + timer_callback callback; + void *userdata; + int interval; + int tag; + guint64 next_call; /* miliseconds */ +}; + +typedef struct timerRec timerevent; diff --git a/etc/wyatt8740/src/pixmaps/Makefile.am b/etc/wyatt8740/src/pixmaps/Makefile.am new file mode 100644 index 0000000..5476f9d --- /dev/null +++ b/etc/wyatt8740/src/pixmaps/Makefile.am @@ -0,0 +1,20 @@ +## Process this file with automake to produce Makefile.in + +LIST = traymsgpng $(srcdir)/message.png \ + trayhilightpng $(srcdir)/highlight.png \ + trayfilepng $(srcdir)/fileoffer.png \ + bookpng $(srcdir)/book.png \ + hoppng $(srcdir)/hop.png \ + oppng $(srcdir)/op.png \ + purplepng $(srcdir)/purple.png \ + redpng $(srcdir)/red.png \ + voicepng $(srcdir)/voice.png \ + xchatpng $(srcdir)/../../xchat.png + +PNGS = message.png highlight.png fileoffer.png book.png hop.png op.png purple.png red.png voice.png +noinst_HEADERS = inline_pngs.h +CLEANFILES = $(noinst_HEADERS) +EXTRA_DIST = $(PNGS) + +inline_pngs.h: $(PNGS) + @gdkpixbufcsourcepath@ --raw --build-list $(LIST) > $(srcdir)/inline_pngs.h diff --git a/etc/wyatt8740/src/pixmaps/Makefile.in b/etc/wyatt8740/src/pixmaps/Makefile.in new file mode 100644 index 0000000..51e723a --- /dev/null +++ b/etc/wyatt8740/src/pixmaps/Makefile.in @@ -0,0 +1,585 @@ +# Makefile.in generated by automake 1.16.5 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2021 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = src/pixmaps +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \ + $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COMMON_CFLAGS = @COMMON_CFLAGS@ +COMMON_LIBS = @COMMON_LIBS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DBUS_BINDING_TOOL = @DBUS_BINDING_TOOL@ +DBUS_CFLAGS = @DBUS_CFLAGS@ +DBUS_LIBS = @DBUS_LIBS@ +DBUS_SERVICES_DIR = @DBUS_SERVICES_DIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ETAGS = @ETAGS@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FILECMD = @FILECMD@ +GCONFTOOL = @GCONFTOOL@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLIB_CFLAGS = @GLIB_CFLAGS@ +GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GLIB_LIBS = @GLIB_LIBS@ +GLIB_MKENUMS = @GLIB_MKENUMS@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GOBJECT_QUERY = @GOBJECT_QUERY@ +GREP = @GREP@ +GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ +GTKSPELL_LIBS = @GTKSPELL_LIBS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_LIBS = @GTK_LIBS@ +GUI_CFLAGS = @GUI_CFLAGS@ +GUI_LIBS = @GUI_LIBS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSEXY_CFLAGS = @LIBSEXY_CFLAGS@ +LIBSEXY_LIBS = @LIBSEXY_LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL_CFLAGS = @PERL_CFLAGS@ +PERL_LDFLAGS = @PERL_LDFLAGS@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLUGIN_INCLUDES = @PLUGIN_INCLUDES@ +POSUB = @POSUB@ +PY_CFLAGS = @PY_CFLAGS@ +PY_LIBS = @PY_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TCL_CFLAGS = @TCL_CFLAGS@ +TCL_LIBS = @TCL_LIBS@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gdkpixbufcsourcepath = @gdkpixbufcsourcepath@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +perlpath = @perlpath@ +pkgconfigpath = @pkgconfigpath@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pythonpath = @pythonpath@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sedpath = @sedpath@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +unamepath = @unamepath@ +xchatlibdir = @xchatlibdir@ +LIST = traymsgpng $(srcdir)/message.png \ + trayhilightpng $(srcdir)/highlight.png \ + trayfilepng $(srcdir)/fileoffer.png \ + bookpng $(srcdir)/book.png \ + hoppng $(srcdir)/hop.png \ + oppng $(srcdir)/op.png \ + purplepng $(srcdir)/purple.png \ + redpng $(srcdir)/red.png \ + voicepng $(srcdir)/voice.png \ + xchatpng $(srcdir)/../../xchat.png + +PNGS = message.png highlight.png fileoffer.png book.png hop.png op.png purple.png red.png voice.png +noinst_HEADERS = inline_pngs.h +CLEANFILES = $(noinst_HEADERS) +EXTRA_DIST = $(PNGS) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/pixmaps/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/pixmaps/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(HEADERS) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool cscopelist-am ctags ctags-am distclean \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am + +.PRECIOUS: Makefile + + +inline_pngs.h: $(PNGS) + @gdkpixbufcsourcepath@ --raw --build-list $(LIST) > $(srcdir)/inline_pngs.h + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/etc/wyatt8740/src/pixmaps/book.png b/etc/wyatt8740/src/pixmaps/book.png new file mode 100644 index 0000000000000000000000000000000000000000..1f1e43015e05f9b2e35c65650323a52fee9ab436 GIT binary patch literal 841 zcmV-P1GfB$P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004XF*Lt006O% z3;baP00006VoOIv0RI600RN!9r;`8x010qNS#tmY3labT3lag+-G2N4000McNliru z(g70%0wI)oc5(m!0>(*1K~#90ZIexJTSXLxpP4(3W9L&Qu_NpdNUhMKBp^k6q(OjG zK!{4HT_J(QiVge%)~E{>`~bEr5J)T#Y$z=#P*PR2QixD7K~O1e>NIWAxW2Y;?wvay zEaIB*@k(bgqchJLz2_XkKP7-ifLS2Re`Np*IA9H^i+?2yE-bzD{jvEcXB%NNn<Sbf zNzhv3yhjLOq?Fbs9k;%A`Qz5!t@qTS$5Lgo@1K6_-G#6d6K&KnQG^LYQW+m4NU4HA zC>_U0Df)mhc?dA`#M95en9t|9+h}1-ib+$9F?jFs-s7CZ7>(0y-`w3wfUpM`E0teA z{=&<1o44)~wmT#`MQe?<=D-{QnT(>jeS>OcT)gt?$vI%?J|J6}ntrD^d4xu@g)s(` zrlj5K2kr{2j#0Mb0-ST!N<c|K0Uy2g#@nUNeo7SWqqRnBO`7Vz4U(|m+M`q$kcDDd zp8Mu(0AwUked^g03qzyh?1gQNwFf`2wpSfMc!v&e^XQRjuKrqcz$&0srBXTd%+hlY zsX#I^(2sCKMEwDMfydZ>0G#tQwysew<Vi)wt=F#BfzN?Es(NhhO_d!Oxv=~l&RMK= zSZj$BjmP%@`M^@0dYC^qZ~J>Y^|L@7XsfW*p54B_&e3woJw87#CnhGy<#G%Tj}WJh zAP9(}h~3>CR(|@KE1!K(bJm^*ZUR;Xfg)ch(_~N<9-L-oW(p}K!aJPvcsvc^SYEEN zy1HsQVPgfT0Wm<ZwYl-z+LcR%DD~MNFI_fYp1;`l%O9Kc=W=fMUP~0m9}pYYZxA*c zET8*&d*{yf8Q}N(00Hy?lfWWS$q$Xr4Ht@w8I>6;PFB_8@uf_uIPNd5Trl5$_30-@ z#~%XMx{Jl(Wm4V90HZ(|cnmnvJ>LYr0Db`Wd+p`_C4rzD!$7`!-vai4-hliCz2{L@ TGlAHS00000NkvXXu0mjfqknqO literal 0 HcmV?d00001 diff --git a/etc/wyatt8740/src/pixmaps/fileoffer.png b/etc/wyatt8740/src/pixmaps/fileoffer.png new file mode 100644 index 0000000000000000000000000000000000000000..fb16cb22500a86ee18aa6772607e575c07891d45 GIT binary patch literal 5637 zcmV+g7W(OlP)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00004b3#c}2nYxW zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H16@p1bK~!jgm6~~!Rn?Wof9Krs4fS4Cy(%aMp_pe>Z~&D^i*wX= zXpGSqlQ>0<!I)@tWw1<)(nd{)+KHlV8^=hDq@zJa5gdXVM^Hf!D5#>K=6dsR?>(pg zcr^+b`>b`=TkEZR_x`>;owN74V(g|%0BD@{fS>_E3kFj$dr~-+;Nsw-u>n~G<tT~> z3K$fcTPcl>;{l2Wbp57FG+$!%=~@eNVKoMM>`Z_gRk#>9XiNfh(Zq9#6jD&gXDAMj z;_)#7Poe5JmvxD;n=TmuKLUe2Sj2EC5hWnzYhq}^Y0q#foS;BJPC?3+q*6ZF7!+v1 zV<f?sA<?f3Bw*s=<O)O#g9@pMSr(Dcx{Y{!JjfAH&<1Jck#cO(l*j|6!6bx+e(<eZ zv4=+qVNiidH9ocf+ZdUB%Nz0Uw&jem<176QHy+vZKPQaIZ}KD^mZS^aEBH&0Xq@(d zKm#{p04Cr9(UPP}YHHex#>gcvCoX(@kG&{j>Et<6vQOT0RL=`q(Gi$*I+`RN*?tl$ zP)0)ovd{8Sn{d$}t~Is5$QO3HM_l(x^$pzxW4H#<RgiUScDYASPk4>>aX%LXXhRcV zp$MY@#X`7d@q7ICdvpFJ_`FF4kdT79ly8h%yt4MEA9dJAXoM^UBD|s9Ijj`O($OOe zZ9<_X1eho?Xhxx^1*2gyCITxBVaFk62Gkmok*_qlhh4KKac$O<(Rqgyc<{D%wlv!8 zXtA8NO`*f)4liyW9Sd@SN#F$pc?;!4P!!RhC(#Ff?adhVy<vkz1wIKO7?D@9e(}oM z>pttTCk;yk{PB)<Dk~K4eB_AtTAkT}mfrl)g;pg{QWFp&K%p3h7WytiqzGXU_cX(# zVAQ%Mckb0MCzhm3GBWSr0{8!-gOH=i<^|vW$uQpk#HQL+JrAAQe&_7k(nbSzW6(j7 z6fyFo1`-<p4YaR|5Se}~(mo#a41^dCqE>6dsca!q^a4`~sEh>|M%ioGoFG?_0K~#} z-gTTJg^o9ich_Iz1auQ2D@ozt67>WLDXDw4$(_>=es+QTf8IgJ(BMPF(mdGE&Ws5q zx(c%LlILrFu&KkG9%x2-0X3LZkRn733y?G*$h6kt7k^3h(Hn6pAHWQqkLezQFh|1x zcp)HO5n#w(!WtqWP1sccq;jQDp;&Y%BppLjgFyuzuFwtCl_a%>!RWO+-6NO0ocLj? zB%||Y6}bPWWy^nl^`s>i{A3tgc3F&w2JKIr-uCOUF@LjCv{;f33{q5&Eb{HoE=Sr| z0TIw_Z2m~T{P7y`&bEIVxkB1(Y}p;^%495|p*jkeo^T--e&u|^cBt&Q{03BdHIF_0 z5zGIaqr0<1T{NZj(d!TIS?NKO1+7NIB5DnjniqG3=KNqy;)ZldR?M4O;Qkvs2w9rm z)Eu&1OLOwPJTJc!qN&r2ytFek>*R5T%`sb*0!d&@`l`#h>+ZsEF3?)rt3G*AT=Ccv zxqkawR@9BUlj|lqt;tU3)0Q2U6fmO3<<4*ZlCzIE1Iw^bsnz(6mlCx84xM?EnFnpB zy(7gxHc0W#UT0RuGg1pi6}C&ri{h<Jl>uW8eR$NP$)c>CH>1Gv>-TT@&#%3m2In;l zqq*IrKIS+7>Gak+hK-%jY+ShhdYp>-o_tDQwc=V@y7!pp&OIko;Z(@g8=nu}+Wb!| zUkq#%jI45b__BMLR5ua)F8m$eL#JQeufAVD5$C?Y#*hMa&+(mCo;Er6ro_is+vL_I zi?Y^`aL@NU37HxK{^hQ#40!Y>?bKBVG^Wha-&j@m1AY1vKgJ48{H$%OJm;bFjS0gi zgqIwDb!7A2&1&g$w-jFgbiI}H0~-ldF}VHfH<iKXx8Q&BRdmm*2h?}nxk(P4R6=Rw zbKApnyb`9gO@bpv7TT*_wI@*U>nAGF9^ikuJ-W*0ksr5_hy@&b)@5Te&Ovj!vK{7C zf4$Z``_MBZ<7?{8|9s)L;;N6I4GNwY@|3U<P!UmFe%yr|Gig3}UHF?WLT8)4P}hrZ zh1jsoMhYFASfBgQG6;+tk0%xpIEEoo>s#FU8+O=6bDPPc*?FYiH~#mxtHO%o4v%ug zY0D7Olvh4;t#RUv<BjT2m0Y&=x20shODG?==m`e_@ra_XvWlf=-i&2f_@7*iPH+4| z9e-ON=Gyye2ox+DTX^nAhbN!+HC@tC<V%9ocV?&F{Mr1TdmTfUp7}?FYyObHFN!bi ziOF-n%ZM76HI1(ljaHjuD(mg%KV79VrKF)0ZqXMGM%nVVqq+E~ZxFUa=+4#Xj#s}> z_KI~8ez-h=AHd1ua;ul0-0_GO^e92jOr|L~E-7Kse&O`=Yhg?Av)8JwSoLn$DV7BH zT+)ec{)>b*LdX#pAf;yIXOFRX_P6m=Al_<x&r(Vlc^?Z26^_ESG_K)t*6cGtL$Kwx zGSCC8N7qHUc|{dk!&#HEFWhxp*CQHQm88eD$;!A((X~k{O{doEIcHM#joXjyyf<R$ z{F;p+F8_TEg`7b69B|9{F$n3hx#Lsf;TWzZX-&70@q8oi3kxZTgft;nBLo~db}p{z zKym{lw;WLJ120z4@KhCO_}bLW-|srE>oG&K+tjrCB~oN4NLujdqTm^%0!6#l>^^N` z{vXSZ@4UOhR@v7!yL{*OwPZ2}4kuZC8~|&Z-eCIhnMet3`6dvcB}77sNJxVeXbDG; zpAUd)U41~Azx#WPrGKqN2=q5+rdKXKw);sfXf7GFA?b;P%C}O<NCGBNidy76n`EG9 zSFn3geg3U`j_+Jn>8kYG+Z`^tZy2eJ+`q!;RM7C=-VdmYjRXPh*=FJqMc7e<9gP-% z0EA#-VmxTjZEx;Z-tGSzXW0vJq(EOfEA@24{GO)`O_LI|+L~@WvNTg-I)S7C%^m_` zy(Eexm8RW*-CsGV@XqoRJAYH{s^kZ|Y%cgiEnUfdNeFj106l(&m>UORce)A3)<i?P z+`9C70|~W}L^;5-twZE!4}P(-lKa-hkV31g=A@pyaei{8VbTP&`kHP`GIUa80X~aS zvVPMgdI$-RoD+~llt~;`S9t%SQ`_&X2?brB?6Eojfnl`w7(+?ewPlNnGA^YREtzKe z`>wuU%FiT1)#c|i0|b-@KV4bP!|N+Bqz-;~c<Rw>=OmvsD1#@UJ8Y7nnG$=;;OjSE zq9wo(5|bzaIW)<lPlpn;%&skMc<i)}J4Zx<_N{Fe=RG)#J)Hw2gi*eH8HNo4n$t~q z+AD+J&vs3>%%+e9AA%BG_m>1uz7xTc+P~q*<il4UntI+aX)5`&q3I^q8#a6K2lvFX zuUriwF#?YgdB-McY1$2gmdRD6PaZq1?XJ-kerscw$=4npMsuf$2nI@C*a-u$vF-hG zxb(&S=SlP~5kTMxmOPzc<%Tehf%o&Hdj98<+3A<Gq?v#=+v<(^FvZV<XQ;T(k!UHC zz#vtGP9@koF7AK!=QG>y9Uu4h?oOJV`^RByZ!`Pv?_n!KSD};l+ukk5d>;V@krDJi zUn&Z|yCT7=&0$<qd$)e2^O0}N%)F*GdrW9Y(nFFQpKIg?V;(|a2#Jxsp0Fr5CK)a1 zF(jR}A;0C%|K9fa^hBw>HDmC#$A{sUdk#Kme~-J~SxVN=^jll^?jfG&<#6$e8rEzJ z5w)~;&k3E+oHIH1p#hzyMK_8x9(nQy2EShd{UmNeuib;jK#|4Q0iGXFlA2<*tFpgc z)cuwzweHLrWJ+Z*89#%s{Q=N}_K=VQ@}A(0UFBT3^x*WT$BoVJMp8sk#G{0RM}&YP ziW%sBPktE!jnf_w+>BV*f*?R<z;wVwV`E_N%9!zsS0%pUD<NjqmWVlOpbCirO?q$+ z^p;WG8$w}IbKdkU0KfmBV%n<D!eh|b0oX_^6ebGENCY1r2>yNu3>iF4#UzUpbqITc zxUi_&oiazA|F_!no6=@%O0~xyPi-F%V)R<t5JN40fF!=<=q}Ehl%wDa<A-aj&v<rQ zcqW=^1o2`(lmM3u7RQ(S>&9sh>_cP-fzMCPl0{rxqMo8!N`|$j<hTo-8+Ju=+N_xn z_jv5&cB%~3pOk$e((j30Z|K3^7?i|D0KYz_lT+(+6ntS_zqb0KRgIy!fuhcU1OYLk zgxG^c3&#FP$RXf$|9>Xn#si{WiG)<tb!X-H^Pd~OWM|SCF(&Hs=n3s4%wXtEa!{fU z<bl}dB<^2+nZ&XMT`U@%C+7+0y0z7puWbs=Rf>@q)Zh?HLzt2KCowP^)j;4q2;vmb z0<8sFNpv8!3XEhXA1(RHkOHcl0AoK<IcwFipg{C_q_-gweT|XUpy9*C`}VwAL$V|( zDS;G1S5>%K!!$jF5g?>ONL`ksS96Q?t-cYa+&O4!h6;Mm_<g`f`oY@)27>_h?saYJ zhlWtuz!a1~i=her+Mf0Myf1*bt+1p<X)U@lg-GE07CJD>SX5bxRt^m0gwPtn3M6|m z8F6Zila}9ro461i7;pBxZCv@`O_7}MnK2_w#&1HXpsY|0Shyd=AglYnAX$<q1yNHG zmU@sk^w4(($<i8<1&J33Mn>xN-KR8U<{dQ8M@XMs+vBYK)>67&N%l?ujD{H)?8O9} ze9P9bwf?S8l@r-RV(Of@u1kEi>Lhb#u8Einmrl5Zsqtx;(xSE0N}$!?stLV$>nTBx zCsDosd4WI(uzGVrFp%Jb-=o(_w$z+Ze-d~7+fp$qGTO3&Y>#~R?q%YcGoK;ZSV9pH zlxZ6cGq3<BS0HLCs<fakXnfhd?Dl65E`>*qm@#o0|50}|F==uCt_PVIo5C@*3z%1P z6t;9|E$qcprT*&D2Oa^IsRPF*@B(3Ys*KPcd>85~@4Al|RM-{#YW`2S`jBrTgu|*A zSBoEg|MKF|rIoM8Eme>vJ^?;90Wp-(un-4HSSczE!EjSD`l9ECUGd6xJ!k#8mpR+{ znA#afF)=oU6RH>R<nE`~lH1O-ifK%WP2%Wb3y9m5Y|Ct=5NMLVL<5$keb=QZ4SXrk zejv<J9|?p06IqCX<9Xij!}$HeJ2|*!2BMIr^wf3y_%{#nS(hJP-58pE(zxQLsHyT& z;{hIuz_?~15m!*54Qixd)OS|ZUcR=;J<5@qhYsmrcIHF$dn;koOrkYYIKAcsdWu~< z*z^daLZhj)Dj6L)i28~tyx#sXp7yXT?O87QK%%rj3rS!YsK6JN*IVEmIdHA94Vxd$ zzKR<Uy@se6L2p}+zVCdT9dB_`ZJrm~Lp0~i=u3_6jFZOaHbiWllbRw>GM1i5MM+R8 zHN!7|zUI=GcZN=|gy#O49W1CUloKqMhPR)FViqy!C=QOzVt&OOmhbv+I=pViM8*@b zs+e6holml#c)nH0DIt_X1PY<F5Ly~2!$c1uVQ8jSPT~*q@8H<FqY#0Q{@ZQnKivq~ z6ex&F%?XJD&v%5`oik%E?F>&}JSFoFSCYk|U^FbCQb{UTZi&vl?}Li(83OTNQ#x5x zRruU+NyD~x&>LQa2}hEsp2%4>r|^Dq6Aw21m5I@DjEW9dN7T+yALX`qJwYbWvRshM zg;`)2D8oPnfv^G$E*$@LemnPP)VS5?mQT_5UH~6FU)D89cT6gdtIG5Djxc-jW>rhp z%AGnszoAefXZ&~}aS5^id^^6lF=@_PRF&rkqf!T+k|jIfjVHkgQyP0XGowc`*&W9{ zE%%p%Noh)SvYZj0E?@6?t5hmqwDmx)3WR|kTQNfYX67yC8KX`YT1%`o%VGI<p}Y0K z(?3ID30RkO$$7%MXjW#Gtw_sI2xS=r^Xdv40oL?{SlJr>!a0yAlz4dAom_au_i1Zu z<Je(`6<;{wkz66j7nbe1KWj>h^GBcSXeqQZgjR-7N}`m3I(zgP!HdT}Ra`V?Uaq6P zO@HUgtGVJ=_u}WhFVwjuZE;Ua41lrmU@M9MP{xmrA!M7_bB3348{6&b?MZ9W>SUNP zrq49T+pjh5+grgec308T(n4s*(=RMqblh$yI%e1@wa2SUyE3?S=kJPRoKfZn>5skM zlUY<*mE1GyR+db-499SgJzL*?|G&<8{*kr2W^Kw@)<;>JQ(}3{{mf&x<Sf3vwU$ob zU~J6W_J<QY?vA>;wIoRyw=Tpgm>5E1o;f+!_-U72y|vpKzdALD#GoU8S!;~jTgwBd zi)N)){_L=pr__hbpOs@4Zl<#SkSXCw)|s`Z@I>n~USnxDXjoW1pA~bKi@EWGL6D~9 z?c0Js&U>QX>F%0V<2Aps%RS`NoMpe4u{pIOkHvt#tp$tow$;)Z7>tj5JN|NJ`_kHQ zuuJ)Lx+ZC(VIk5qz*h(%5vPsMHE!*(E4Or6<5s7`j4^zs*=0}M-Wun39lZmm*{Kyb z%}=gWnr7wGW^8)oU53y33yH~7qGojT;^AjdWyV>QSisWBKc&Kqg3xc$yzbjPe%yOr zi9j0o6RP~wtQv3Unq8qox8^P9?X1J8;T$&bS;6AG#xnQ`m0sghXSCf>TcLLN0d0;+ zPe+ox(XbHFVMEMB`3fx*`l}Oj+qZPt@h#ofxYgM(l|u1kPn7@esXz*?t~@mL`1MDo z{wAT>hc-JzH<Bzb|EZI@))kC6H7k(w=f-9mb7Qj+2oI%h<Mm(Nz*`q5@lk~gN?HU+ zg0XQweQ>R}ea)`WA=~nn`&!l|E;Qe3Nzf4(Osw*@KXpdior#FrAtiealP(0=aDt-H zi!rFfB!QEIXxOIG_ZV&()Lr~S?YCApx+nG>IEK){)pOGiESZyhNelLxnsx$`g!Y}; zG)`SU4XuCCd))rKe)FZ9hJ4bn6+0azWIM#9M?wmQzq{9&cG>Eh>$~!@rcdYiN`K3r z&uqJ+(hYWLXtgw*_@sdX;19ixcHv+VK@j&LAp#QLUz0fdpL^T|mQ;l$hov4qcS?4n z7to~yU5-nVcJhQNe$nJ$@Y?6Q44Y7)M1>)#5`x6ev^DbjwN)2v=`v@JkNY3pe{$!8 z2{+iQG@Z6XH#QlPW$=J1H#Acp7$A|y&iaH+MN~>EL_h=s8-><_f+fflJTfk1dadw< zV~>AHB8y28H(w+YvWa>=6+#k1U=ZMI$XO=oT!~EBB};)~A9xzjqW^Q7J`$f`5Wymg zlLI&GU>Cu3d^8pw0Y$v>J%kZ>yoCDyfZvD2KnrVQ<6z*B$1XZZ$0x`Kcp)edqDY7m fUFG`U*OC1nS(z|K`psM=00000NkvXXu0mjf&57%J literal 0 HcmV?d00001 diff --git a/etc/wyatt8740/src/pixmaps/highlight.png b/etc/wyatt8740/src/pixmaps/highlight.png new file mode 100644 index 0000000000000000000000000000000000000000..818f60f15b394a34c0ccd01f8571b56c620ddb07 GIT binary patch literal 5544 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 literal 0 HcmV?d00001 diff --git a/etc/wyatt8740/src/pixmaps/hop.png b/etc/wyatt8740/src/pixmaps/hop.png new file mode 100644 index 0000000000000000000000000000000000000000..30a8460115f3e14d818dfabcb53c46032200a341 GIT binary patch literal 262 zcmV+h0r~!kP)<h;3K|Lk000e1NJLTq000L7000LF1^@s6#8Ow&0002ZNkl<Zc-jTQ zKT85(0Knnj`^P+b^XL=_QPiYz&~tQXYH8{VL>zqvKY-t-hHwcdmzK7+iZH}QYsle6 zjzll+-kwKzMeiW#*lQ7UDN<@qv2+C{d+))$-uCT{>=NZJc#tQ|vl*@AiQBEQQj37- z@Cs*IoGR$1A-i9LvtLA7R_K(P(D145YqB&$PMZYl3g~>9MY~9NUcmPSsQ{@2>buOV zHZh}PX!IPmzGJq^QU8P^6Ejkq=i!eCNj7Jg50B*SkM+x#$LWB(e}}|CFZwW0-2eap M07*qoM6N<$f?j}jp8x;= literal 0 HcmV?d00001 diff --git a/etc/wyatt8740/src/pixmaps/message.png b/etc/wyatt8740/src/pixmaps/message.png new file mode 100644 index 0000000000000000000000000000000000000000..de09c2ae03bbbf9d574f15edd2b26ac0496665f8 GIT binary patch literal 5152 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 O0000<MNUMnLSTYVZ2J8G literal 0 HcmV?d00001 diff --git a/etc/wyatt8740/src/pixmaps/op.png b/etc/wyatt8740/src/pixmaps/op.png new file mode 100644 index 0000000000000000000000000000000000000000..8b2f4f9f7e1ba2688cf362a68b9761086c729e80 GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^>>$j+1|*LJg<l3zdp%toLn>~u9<=Q`<iOByQGc@H zD~o@vD_ByQowUC4gxzygsj%eM6`QSVdpIvyyJ?4aL8!|X14X}@^GPk&7$=7xx*@U4 z=|i@7g#9<2rQ$|ww{?^pSe~=#wBHxG>NHn&#n8?Z{3k;v2OKz1;-SS?S*AY8)p!59 z#^o<9gpzrb&SlOq@mOo|!?ew@JL}-H)JTrR#N%DPS2VT7neIP*rM2z5y8QDQWvZ#E u>f--i$6i|F^ONJ{$Nt+7+t<Ih>^5g*u)6i;UR)H=BMhFdelF{r5}E*aO=8~w literal 0 HcmV?d00001 diff --git a/etc/wyatt8740/src/pixmaps/purple.png b/etc/wyatt8740/src/pixmaps/purple.png new file mode 100644 index 0000000000000000000000000000000000000000..5910d3f0d22c8c5a2cf6e2c40155434daa342ec8 GIT binary patch literal 240 zcmV<M01y9(P)<h;3K|Lk000e1NJLTq000L7000LF1^@s6#8Ow&0002DNkl<Zc-jTQ zL2AN47=Y1l#($KVXh;Gk5UWBVtG37J9f}06rwei8&K{$yfOMm)QIL{_snVqHse)oS zX8iHs@!rurDb&eeKF^%jl9MkIk}@UTj2L~_)XyHjG#D)wTTYpF5mBK~uMYP+V9?#T zmEv$OF)<<GM3A<n)e03m9AdG@i0CaN3kCTDv_|(V_Dg_mpZ+`{xdsG>hGur*k^$RZ qP3=?CyTJqv&E4aFDyrR{{pugh)-(ujfPP*80000<MNUMnLSTYs@Mf3* literal 0 HcmV?d00001 diff --git a/etc/wyatt8740/src/pixmaps/red.png b/etc/wyatt8740/src/pixmaps/red.png new file mode 100644 index 0000000000000000000000000000000000000000..cb940a33fe8f035da944092b707c653e8d75650f GIT binary patch literal 212 zcmV;_04x8AP)<h;3K|Lk000e1NJLTq000L7000LF1^@s6#8Ow&0001+Nkl<Zc-jTQ zu}VTw007W)pZ67NiV7-JC<wYl{YB6xh=jkVL%6in)+f|dh)YgS!NkQ3eVr5fTr?T} zai4P?Sf;$Ln8r&+4IW!ORaorkWsFmj@W9)EyvBRrJm>d^yDvg4aZ^W?tH|j@5~!CD zi+tC(ZBvaLkt7s~d_>I7=r-7tneXYWX=7H{k+nFal=mDmwx2w|F!=|8&nG-F_csv$ O0000<MNUMnLSTaTtXPZy literal 0 HcmV?d00001 diff --git a/etc/wyatt8740/src/pixmaps/voice.png b/etc/wyatt8740/src/pixmaps/voice.png new file mode 100644 index 0000000000000000000000000000000000000000..8bbf7a57c6d6e8d828d8110d96090b5e6b29c119 GIT binary patch literal 267 zcmV+m0rdWfP)<h;3K|Lk000e1NJLTq000L7000LF1^@s6#8Ow&0002eNkl<Zc-jTQ zO-sUX0Knnj+`q|U%uT0)cnHHt5{5)Uc#u3ux9(m%_+dQv2|6p}ty3L31%ijb!_-3& zLPAkG@?~su_&gFI)h@7O2ek89%0Iuje#o8k!9Z?YV`nY8w^z)nr#zn(SZ+c(TaSsb zG;XRDil#u>t|$vgoF9|+eOe-EVCFOyBH&%fEOrrYGLB{?(1jW?RVC&bi?5W<_sT<a zL(E{zP<|b;)DMYWmPnoC`HLcy-V>kqkMt!#1&*3^YNkPay&-sb;qBkU*#j*jKweKc R>O24d002ovPDHLkV1iFcZ<zo9 literal 0 HcmV?d00001 diff --git a/etc/wyatt8740/src/version-script b/etc/wyatt8740/src/version-script new file mode 100644 index 0000000..048c1f5 --- /dev/null +++ b/etc/wyatt8740/src/version-script @@ -0,0 +1,34 @@ +EXPORTED { + global: + xchat_hook_command; + xchat_hook_server; + xchat_hook_print; + xchat_hook_timer; + xchat_hook_fd; + xchat_unhook; + xchat_print; + xchat_printf; + xchat_command; + xchat_commandf; + xchat_nickcmp; + xchat_set_context; + xchat_find_context; + xchat_get_context; + xchat_get_info; + xchat_get_prefs; + xchat_list_get; + xchat_list_free; + xchat_list_fields; + xchat_list_next; + xchat_list_str; + xchat_list_int; + xchat_plugingui_add; + xchat_plugingui_remove; + xchat_emit_print; + xchat_list_time; + xchat_gettext; + xchat_send_modes; + xchat_strip; + xchat_free; + local: *; +}; diff --git a/etc/wyatt8740/xchat.desktop b/etc/wyatt8740/xchat.desktop new file mode 100644 index 0000000..e744cd1 --- /dev/null +++ b/etc/wyatt8740/xchat.desktop @@ -0,0 +1,23 @@ +[Desktop Entry] +Encoding=UTF-8 +Name=XChat IRC +Name[zh_TW]=網路清談 +Comment[de]=IRC-Client +Comment[es]=Aplicación de IRC +Comment[fi]=IRC-sovellus +Comment[fr]=Client IRC +Comment[hu]=IRC-kliens +Comment[lt]=IRC klientas +Comment[no]=IRC-klient +Comment[pt_BR]=Cliente de IRC +Comment[sl]=Odjemalec IRC +Comment[sv]=IRC-klient +Comment[ro]=Client de IRC +Comment[zh_TW]=X-Chat 聊天程式 +Comment=Chat with other people using Internet Relay Chat +Exec=xchat +Icon=xchat +Terminal=false +Type=Application +Categories=Network; +StartupNotify=true diff --git a/etc/wyatt8740/xchat.ico b/etc/wyatt8740/xchat.ico new file mode 100644 index 0000000000000000000000000000000000000000..e80a99dade3f642dcacd3cf1d1b3a838c9acb0c1 GIT binary patch literal 26694 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 X&4@UdU?&9LC?_!$?}~G%)%*VenU43@ literal 0 HcmV?d00001 diff --git a/etc/wyatt8740/xchat.png b/etc/wyatt8740/xchat.png new file mode 100644 index 0000000000000000000000000000000000000000..814c899d1ddc00cbb9ca7a04b0144f82fc86f52b GIT binary patch literal 3144 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 literal 0 HcmV?d00001 diff --git a/etc/wyatt8740/xchat.spec b/etc/wyatt8740/xchat.spec new file mode 100644 index 0000000..406d986 --- /dev/null +++ b/etc/wyatt8740/xchat.spec @@ -0,0 +1,141 @@ +%define _default_patch_fuzz 2 +%define gconf_version 2.14 + +Summary: A popular and easy to use graphical IRC (chat) client +Name: xchat +Version: 2.8.8 +Release: 0%{?dist} +Epoch: 1 +Group: Applications/Internet +License: GPLv2+ +URL: http://www.xchat.org +Source: http://www.xchat.org/files/source/2.8/xchat-%{version}.tar.bz2 +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) + +# Patches 0-9 reserved for official xchat.org patches + +BuildRequires: perl perl(ExtUtils::Embed) python-devel openssl-devel pkgconfig, tcl-devel +BuildRequires: GConf2-devel +BuildRequires: dbus-devel >= 0.60, dbus-glib-devel >= 0.60 +BuildRequires: glib2-devel >= 2.10.0, gtk2-devel >= 2.10.0, bison >= 1.35 +BuildRequires: gettext /bin/sed +BuildRequires: libtool +BuildRequires: libsexy-devel +BuildRequires: desktop-file-utils >= 0.10 +# For gconftool-2: +Requires(post): GConf2 >= %{gconf_version} +Requires(preun): GConf2 >= %{gconf_version} + +# Ensure that a compatible libperl is installed +Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) + +Provides: xchat-perl = %{epoch}:%{version}-%{release} +Obsoletes: xchat-perl < %{epoch}:%{version}-%{release} +Provides: xchat-python = %{epoch}:%{version}-%{release} +Obsoletes: xchat-python < %{epoch}:%{version}-%{release} + +%description +X-Chat is an easy to use graphical IRC chat client for the X Window System. +It allows you to join multiple IRC channels (chat rooms) at the same time, +talk publicly, private one-on-one conversations etc. Even file transfers +are possible. + +This includes the plugins to run the Perl and Python scripts. + +%package tcl +Summary: Tcl script plugin for X-Chat +Group: Applications/Internet +Requires: %{name} = %{epoch}:%{version}-%{release} +%description tcl +This package contains the X-Chat plugin providing the Tcl scripting interface. + +%prep +%setup -q + +%build +# Remove CVS files from source dirs so they're not installed into doc dirs. +find . -name CVS -type d | xargs rm -rf + +export CFLAGS="$RPM_OPT_FLAGS $(perl -MExtUtils::Embed -e ccopts)" +export LDFLAGS=$(perl -MExtUtils::Embed -e ldopts) + +%configure --disable-textfe \ + --enable-gtkfe \ + --enable-openssl \ + --enable-python \ + --enable-tcl=%{_libdir} \ + --enable-ipv6 \ + --enable-spell=libsexy \ + --enable-shm + +# gtkspell breaks Input Method commit with ENTER + +make %{?_smp_mflags} + + +%install +%{__rm} -rf $RPM_BUILD_ROOT +%{__make} install DESTDIR=$RPM_BUILD_ROOT GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 + +# Get rid of libtool archives +%{__rm} -f $RPM_BUILD_ROOT%{_libdir}/xchat/plugins/*.la + +# Install the .desktop file properly +%{__rm} -f $RPM_BUILD_ROOT%{_datadir}/applications/xchat.desktop +desktop-file-install --vendor="" \ + --dir $RPM_BUILD_ROOT%{_datadir}/applications \ + --add-category=IRCClient \ + --add-category=GTK xchat.desktop + +%find_lang %{name} + +# do not Provide plugins .so +%define _use_internal_dependency_generator 0 +%{__cat} << \EOF > %{name}.prov +#!%{_buildshell} +%{__grep} -v %{_docdir} - | %{__find_provides} $* \ + | %{__sed} '/\.so\(()(64bit)\)\?$/d' +EOF +%define __find_provides %{_builddir}/%{name}-%{version}/%{name}.prov +%{__chmod} +x %{__find_provides} + + +%post +# Install schema +export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source` +gconftool-2 --makefile-install-rule /etc/gconf/schemas/apps_xchat_url_handler.schemas >& /dev/null || : + + +%pre +if [ "$1" -gt 1 ]; then + export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source` + gconftool-2 --makefile-uninstall-rule /etc/gconf/schemas/apps_xchat_url_handler.schemas >& /dev/null || : +fi + +%preun +if [ "$1" -eq 0 ]; then + export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source` + gconftool-2 --makefile-uninstall-rule /etc/gconf/schemas/apps_xchat_url_handler.schemas >& /dev/null || : +fi + +%clean +%{__rm} -rf $RPM_BUILD_ROOT + +%files -f %{name}.lang +%defattr(-,root,root) +%doc README ChangeLog +%doc plugins/plugin20.html plugins/perl/xchat2-perl.html +%{_bindir}/xchat +%dir %{_libdir}/xchat +%dir %{_libdir}/xchat/plugins +%{_libdir}/xchat/plugins/perl.so +%{_libdir}/xchat/plugins/python.so +%{_datadir}/applications/xchat.desktop +%{_datadir}/pixmaps/* +%{_sysconfdir}/gconf/schemas/apps_xchat_url_handler.schemas +%{_datadir}/dbus-1/services/org.xchat.service.service + +%files tcl +%defattr(-,root,root) +%{_libdir}/xchat/plugins/tcl.so + diff --git a/hexchat/.editorconfig b/hexchat/.editorconfig new file mode 100644 index 0000000..3fa759e --- /dev/null +++ b/hexchat/.editorconfig @@ -0,0 +1,19 @@ +# EditorConfig is awesome: http://EditorConfig.org + +# top-most EditorConfig file +root = true + +[*.{c,cpp,h,hpp,m}] +indent_style = tab +indent_size = 4 +end_of_line = lf + +[*.cs] +indent_style = space +indent_size = 4 +end_of_line = lf + +[{meson.build,meson_options.txt}] +indent_size = 2 +indent_style = space +insert_final_newline = true diff --git a/hexchat/.gitignore b/hexchat/.gitignore new file mode 100644 index 0000000..92ab91c --- /dev/null +++ b/hexchat/.gitignore @@ -0,0 +1,29 @@ +/build +builddir/ +doxygen*.tmp +html/ +*.patch +tags +# Win32 generated files +plugins/wmpa/wmpa_h.h +plugins/wmpa/wmpa_i.c +src/htm/obj/* +win32/ipch/* +win32/ext/perl/perl-x86-cache +win32/ext/perl/perl-x86-SetupFiles +win32/ext/perl/perl-x64-cache +win32/ext/perl/perl-x64-SetupFiles +win32/installer/hexchat.iss +resource.h +*.opensdf +*.sdf +*.suo +*.user +*.exe +# OSX +osx/HexChat.app +osx/.HexChat.app +*.zip +*.dmg +*.VC.db +*.VC.opendb diff --git a/hexchat/.lgtm.yml b/hexchat/.lgtm.yml new file mode 100644 index 0000000..eb33bb6 --- /dev/null +++ b/hexchat/.lgtm.yml @@ -0,0 +1,5 @@ +extraction: + cpp: + prepare: + packages: + - python3-cffi diff --git a/hexchat/.mailmap b/hexchat/.mailmap new file mode 100644 index 0000000..c075d3b --- /dev/null +++ b/hexchat/.mailmap @@ -0,0 +1,10 @@ +Berke Viktor <github.bviktor@outlook.com> <berkeviktor@aol.com> +Berke Viktor <github.bviktor@outlook.com> <bviktor@hexchat.org> +Berke Viktor <github.bviktor@outlook.com> <bviktor@outlook.com> +Berke Viktor <github.bviktor@outlook.com> berkeviktor@aol.com +Patrick Griffis <tingping@tingping.se> TingPing <tingping@fedoraproject.org> +Patrick Griffis <tingping@tingping.se> TingPing <tingping@tingping.se> +Patrick Griffis <tingping@tingping.se> TingPing <tngpng@gmail.com> +Patrick Griffis <tingping@tingping.se> TingPing <TingPing@users.noreply.github.com> +Arnav Singh <arnavion@gmail.com> Arnavion +Eustachy Kapusta <Eustachy.kapusta@gmail.com> tomek diff --git a/hexchat/.tx/config b/hexchat/.tx/config new file mode 100644 index 0000000..5cc1970 --- /dev/null +++ b/hexchat/.tx/config @@ -0,0 +1,8 @@ +[main] +host = https://www.transifex.com + +[hexchat.main] +file_filter = po/<lang>.po +source_file = po/hexchat.pot +source_lang = en +type = PO diff --git a/hexchat/.tx/howto.md b/hexchat/.tx/howto.md new file mode 100644 index 0000000..d9fe5a0 --- /dev/null +++ b/hexchat/.tx/howto.md @@ -0,0 +1,65 @@ +Go to the [Transifex client documentation](http://help.transifex.com/features/client/index.html) for more info. + +## Initializing a new project on Transifex + +<pre> +tx init +tx set --auto-local -r hexchat.main "po\<lang>.po" --source-lang en --source-file po\hexchat.pot --execute +</pre> + +Append `type = PO` to _.tx\config_. + +Push the resources to Transifex: + +<pre> +tx push --source --translation +</pre> + + +## Updating online translations with the template + +Regenerate the source file ( _hexchat.pot_ ) on a Unix machine: + +<pre> +rm po/hexchat.pot && ./autogen.sh && ./configure --enable-nls && cd src/common && make textevents.h && cd../.. && make +</pre> + +Push the updated source file to Transifex (this automatically updates all translation files): + +<pre> +tx push --source +</pre> + + +## Updating the repo with online translations + +Update local copy with Transifex updates: + +<pre> +tx pull +</pre> + +Update GitHub repo: + +<pre>git add po/ +git commit +git push +</pre> + + +## Updating just one translation with local changes + +<pre> +tx push --translation --language xy +</pre> + +Where _xy_ is the language code. + + +## Forcing translation updates + +<pre> +tx pull --force +</pre> + +This might be required when the repo is freshly cloned and thus timestamps are newer than on Transifex. diff --git a/hexchat/COPYING b/hexchat/COPYING new file mode 100644 index 0000000..48c9fe9 --- /dev/null +++ b/hexchat/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) 19yy <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/hexchat/data/hexchat.gresource.xml b/hexchat/data/hexchat.gresource.xml new file mode 100644 index 0000000..08b7910 --- /dev/null +++ b/hexchat/data/hexchat.gresource.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<gresources> + <gresource prefix="/icons"> + <file alias="hexchat.png" preprocess="to-pixdata">icons/hexchat.png</file> + <file alias="book.png" preprocess="to-pixdata">icons/book.png</file> + + <file alias="ulist_voice.png" preprocess="to-pixdata">icons/ulist_voice.png</file> + <file alias="ulist_halfop.png" preprocess="to-pixdata">icons/ulist_halfop.png</file> + <file alias="ulist_op.png" preprocess="to-pixdata">icons/ulist_op.png</file> + <file alias="ulist_owner.png" preprocess="to-pixdata">icons/ulist_owner.png</file> + <file alias="ulist_founder.png" preprocess="to-pixdata">icons/ulist_founder.png</file> + <file alias="ulist_netop.png" preprocess="to-pixdata">icons/ulist_netop.png</file> + + <file alias="tray_normal.png" preprocess="to-pixdata">icons/hexchat.png</file> + <file alias="tray_fileoffer.png" preprocess="to-pixdata">icons/tray_fileoffer.png</file> + <file alias="tray_highlight.png" preprocess="to-pixdata">icons/tray_highlight.png</file> + <file alias="tray_message.png" preprocess="to-pixdata">icons/tray_message.png</file> + + <file alias="tree_channel.png" preprocess="to-pixdata">icons/tree_channel.png</file> + <file alias="tree_dialog.png" preprocess="to-pixdata">icons/tree_dialog.png</file> + <file alias="tree_server.png" preprocess="to-pixdata">icons/tree_server.png</file> + <file alias="tree_util.png" preprocess="to-pixdata">icons/tree_util.png</file> + </gresource> +</gresources> diff --git a/hexchat/data/icons/book.png b/hexchat/data/icons/book.png new file mode 100644 index 0000000000000000000000000000000000000000..1f1e43015e05f9b2e35c65650323a52fee9ab436 GIT binary patch literal 841 zcmV-P1GfB$P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004XF*Lt006O% z3;baP00006VoOIv0RI600RN!9r;`8x010qNS#tmY3labT3lag+-G2N4000McNliru z(g70%0wI)oc5(m!0>(*1K~#90ZIexJTSXLxpP4(3W9L&Qu_NpdNUhMKBp^k6q(OjG zK!{4HT_J(QiVge%)~E{>`~bEr5J)T#Y$z=#P*PR2QixD7K~O1e>NIWAxW2Y;?wvay zEaIB*@k(bgqchJLz2_XkKP7-ifLS2Re`Np*IA9H^i+?2yE-bzD{jvEcXB%NNn<Sbf zNzhv3yhjLOq?Fbs9k;%A`Qz5!t@qTS$5Lgo@1K6_-G#6d6K&KnQG^LYQW+m4NU4HA zC>_U0Df)mhc?dA`#M95en9t|9+h}1-ib+$9F?jFs-s7CZ7>(0y-`w3wfUpM`E0teA z{=&<1o44)~wmT#`MQe?<=D-{QnT(>jeS>OcT)gt?$vI%?J|J6}ntrD^d4xu@g)s(` zrlj5K2kr{2j#0Mb0-ST!N<c|K0Uy2g#@nUNeo7SWqqRnBO`7Vz4U(|m+M`q$kcDDd zp8Mu(0AwUked^g03qzyh?1gQNwFf`2wpSfMc!v&e^XQRjuKrqcz$&0srBXTd%+hlY zsX#I^(2sCKMEwDMfydZ>0G#tQwysew<Vi)wt=F#BfzN?Es(NhhO_d!Oxv=~l&RMK= zSZj$BjmP%@`M^@0dYC^qZ~J>Y^|L@7XsfW*p54B_&e3woJw87#CnhGy<#G%Tj}WJh zAP9(}h~3>CR(|@KE1!K(bJm^*ZUR;Xfg)ch(_~N<9-L-oW(p}K!aJPvcsvc^SYEEN zy1HsQVPgfT0Wm<ZwYl-z+LcR%DD~MNFI_fYp1;`l%O9Kc=W=fMUP~0m9}pYYZxA*c zET8*&d*{yf8Q}N(00Hy?lfWWS$q$Xr4Ht@w8I>6;PFB_8@uf_uIPNd5Trl5$_30-@ z#~%XMx{Jl(Wm4V90HZ(|cnmnvJ>LYr0Db`Wd+p`_C4rzD!$7`!-vai4-hliCz2{L@ TGlAHS00000NkvXXu0mjfqknqO literal 0 HcmV?d00001 diff --git a/hexchat/data/icons/hexchat-b.svg b/hexchat/data/icons/hexchat-b.svg new file mode 100644 index 0000000..6f9a87d --- /dev/null +++ b/hexchat/data/icons/hexchat-b.svg @@ -0,0 +1,610 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + sodipodi:docname="hexchat4.svg" + version="1.0" + inkscape:version="0.48.3.1 r9886" + sodipodi:version="0.32" + id="svg2" + height="64" + width="64" + inkscape:export-filename="D:\Downloads\hexchat3.png" + inkscape:export-xdpi="22.5" + inkscape:export-ydpi="22.5"> + <defs + id="defs4"> + <linearGradient + id="linearGradient2289"> + <stop + style="stop-color:#ff2600;stop-opacity:1;" + offset="0" + id="stop2291" /> + <stop + style="stop-color:#ffd600;stop-opacity:1;" + offset="1" + id="stop2293" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2289" + id="linearGradient1335" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.545166,0,0,0.544959,0.186963,35.29511)" + x1="16.88862" + y1="77.796608" + x2="72.348671" + y2="20.59322" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2289" + id="linearGradient1337" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.545166,0,0,0.544959,0.186963,35.29511)" + x1="16.88862" + y1="77.796608" + x2="16.88862" + y2="19.001091" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2289" + id="linearGradient1317" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.735969,0,0,0.735801,-2.052758,-16.66733)" + x1="16.88862" + y1="77.796608" + x2="72.348671" + y2="20.59322" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2289" + id="linearGradient1319" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.735969,0,0,0.735801,-2.052758,-16.66733)" + x1="16.88862" + y1="77.796608" + x2="16.88862" + y2="19.001091" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2289" + id="linearGradient1320" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.735969,0,0,0.735801,-2.172329,-1.111016)" + x1="16.88862" + y1="77.796608" + x2="72.348671" + y2="20.59322" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2289" + id="linearGradient1322" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.735969,0,0,0.735801,-2.172329,-1.111016)" + x1="16.88862" + y1="77.796608" + x2="16.88862" + y2="19.001091" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2289" + id="linearGradient2997" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.735969,0,0,0.735801,-160.10656,-7.1914058)" + x1="130.2673" + y1="78.743134" + x2="129.2081" + y2="25.771122" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2289" + id="linearGradient3011" + x1="34.62241" + y1="53.508884" + x2="34.466503" + y2="5.4893961" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2289" + id="linearGradient3030" + gradientUnits="userSpaceOnUse" + x1="34.62241" + y1="53.508884" + x2="34.466503" + y2="5.4893961" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2289" + id="linearGradient3070" + gradientUnits="userSpaceOnUse" + x1="34.62241" + y1="53.508884" + x2="34.466503" + y2="5.4893961" + gradientTransform="matrix(0.99894925,0,0,0.97549134,-3.1829063,4.465557)" /> + <filter + id="filter3281" + style="color-interpolation-filters:sRGB;" + inkscape:label="Drop Shadow"> + <feFlood + id="feFlood3283" + flood-opacity="0.33" + flood-color="rgb(0,0,0)" + result="flood" /> + <feComposite + id="feComposite3285" + in2="SourceGraphic" + in="flood" + operator="in" + result="composite1" /> + <feGaussianBlur + id="feGaussianBlur3287" + in="composite" + stdDeviation="2" + result="blur" /> + <feOffset + id="feOffset3289" + dx="4" + dy="1" + result="offset" /> + <feComposite + id="feComposite3291" + in2="offset" + in="SourceGraphic" + operator="over" + result="composite2" /> + </filter> + <filter + id="filter3293" + style="color-interpolation-filters:sRGB;" + inkscape:label="Drop Shadow"> + <feFlood + id="feFlood3295" + flood-opacity="0.33" + flood-color="rgb(0,0,0)" + result="flood" /> + <feComposite + id="feComposite3297" + in2="SourceGraphic" + in="flood" + operator="in" + result="composite1" /> + <feGaussianBlur + id="feGaussianBlur3299" + in="composite" + stdDeviation="2" + result="blur" /> + <feOffset + id="feOffset3301" + dx="4" + dy="1" + result="offset" /> + <feComposite + id="feComposite3303" + in2="offset" + in="SourceGraphic" + operator="over" + result="composite2" /> + </filter> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2289" + id="linearGradient4089" + x1="99.348503" + y1="59.934135" + x2="100.40916" + y2="10.613438" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2289" + id="linearGradient4093" + gradientUnits="userSpaceOnUse" + x1="99.348503" + y1="59.934135" + x2="100.40916" + y2="10.613438" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2289" + id="linearGradient4096" + gradientUnits="userSpaceOnUse" + x1="99.348503" + y1="59.934135" + x2="100.40916" + y2="10.613438" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2289" + id="linearGradient4098" + gradientUnits="userSpaceOnUse" + x1="99.348503" + y1="59.934135" + x2="100.40916" + y2="10.613438" + gradientTransform="translate(-70.003571,-2.298097)" /> + <filter + id="filter4111" + style="color-interpolation-filters:sRGB;" + inkscape:label="Drop Shadow"> + <feFlood + id="feFlood4113" + flood-opacity="0.33" + flood-color="rgb(0,0,0)" + result="flood" /> + <feComposite + id="feComposite4115" + in2="SourceGraphic" + in="flood" + operator="in" + result="composite1" /> + <feGaussianBlur + id="feGaussianBlur4117" + in="composite" + stdDeviation="2" + result="blur" /> + <feOffset + id="feOffset4119" + dx="4" + dy="1" + result="offset" /> + <feComposite + id="feComposite4121" + in2="offset" + in="SourceGraphic" + operator="over" + result="composite2" /> + </filter> + <filter + id="filter4123" + style="color-interpolation-filters:sRGB;" + inkscape:label="Drop Shadow"> + <feFlood + id="feFlood4125" + flood-opacity="0.33" + flood-color="rgb(0,0,0)" + result="flood" /> + <feComposite + id="feComposite4127" + in2="SourceGraphic" + in="flood" + operator="in" + result="composite1" /> + <feGaussianBlur + id="feGaussianBlur4129" + in="composite" + stdDeviation="2" + result="blur" /> + <feOffset + id="feOffset4131" + dx="4" + dy="1" + result="offset" /> + <feComposite + id="feComposite4133" + in2="offset" + in="SourceGraphic" + operator="over" + result="composite2" /> + </filter> + <linearGradient + y2="19.001091" + x2="16.88862" + y1="77.796608" + x1="16.88862" + gradientTransform="matrix(0.735969,0,0,0.735801,-2.172329,-1.111016)" + gradientUnits="userSpaceOnUse" + id="linearGradient1330" + xlink:href="#linearGradient2289-4" + inkscape:collect="always" /> + <linearGradient + y2="20.59322" + x2="72.348671" + y1="77.796608" + x1="16.88862" + gradientTransform="matrix(0.735969,0,0,0.735801,-2.172329,-1.111016)" + gradientUnits="userSpaceOnUse" + id="linearGradient1328" + xlink:href="#linearGradient2289-4" + inkscape:collect="always" /> + <linearGradient + y2="19.001091" + x2="16.88862" + y1="77.796608" + x1="16.88862" + gradientTransform="matrix(0.735969,0,0,0.735801,-2.172329,-1.111016)" + gradientUnits="userSpaceOnUse" + id="linearGradient1322-5" + xlink:href="#linearGradient2289-4" + inkscape:collect="always" /> + <linearGradient + y2="20.59322" + x2="72.348671" + y1="77.796608" + x1="16.88862" + gradientTransform="matrix(0.735969,0,0,0.735801,-2.172329,-1.111016)" + gradientUnits="userSpaceOnUse" + id="linearGradient1320-4" + xlink:href="#linearGradient2289-4" + inkscape:collect="always" /> + <linearGradient + y2="19.001091" + x2="16.88862" + y1="77.796608" + x1="16.88862" + gradientTransform="matrix(0.735969,0,0,0.735801,-2.052758,-16.66733)" + gradientUnits="userSpaceOnUse" + id="linearGradient1319-2" + xlink:href="#linearGradient2289-4" + inkscape:collect="always" /> + <linearGradient + y2="20.59322" + x2="72.348671" + y1="77.796608" + x1="16.88862" + gradientTransform="matrix(0.735969,0,0,0.735801,-2.052758,-16.66733)" + gradientUnits="userSpaceOnUse" + id="linearGradient1317-8" + xlink:href="#linearGradient2289-4" + inkscape:collect="always" /> + <linearGradient + y2="19.001091" + x2="16.88862" + y1="77.796608" + x1="16.88862" + gradientTransform="matrix(0.545166,0,0,0.544959,0.186963,35.29511)" + gradientUnits="userSpaceOnUse" + id="linearGradient1337-8" + xlink:href="#linearGradient2289-4" + inkscape:collect="always" /> + <linearGradient + y2="20.59322" + x2="72.348671" + y1="77.796608" + x1="16.88862" + gradientTransform="matrix(0.545166,0,0,0.544959,0.186963,35.29511)" + gradientUnits="userSpaceOnUse" + id="linearGradient1335-4" + xlink:href="#linearGradient2289-4" + inkscape:collect="always" /> + <linearGradient + id="linearGradient2289-4"> + <stop + id="stop2291-0" + offset="0" + style="stop-color:#ff2600;stop-opacity:1;" /> + <stop + id="stop2293-9" + offset="1" + style="stop-color:#ffd600;stop-opacity:1;" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2289-4" + id="linearGradient3133" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.51445624,0,0,0.53856587,8.0977348,6.9450134)" + x1="46.881573" + y1="91.824585" + x2="48.19709" + y2="-1.4575793" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2289-4" + id="linearGradient3136" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.51445624,0,0,0.53856587,-120.3871,-29.360443)" + x1="16.88862" + y1="77.796608" + x2="72.348671" + y2="20.59322" /> + <filter + id="filter3138" + style="color-interpolation-filters:sRGB;" + inkscape:label="Drop Shadow"> + <feFlood + id="feFlood3140" + flood-opacity="0.33" + flood-color="rgb(0,0,0)" + result="flood" /> + <feComposite + id="feComposite3142" + in2="SourceGraphic" + in="flood" + operator="in" + result="composite1" /> + <feGaussianBlur + id="feGaussianBlur3144" + in="composite" + stdDeviation="2" + result="blur" /> + <feOffset + id="feOffset3146" + dx="4" + dy="1" + result="offset" /> + <feComposite + id="feComposite3148" + in2="offset" + in="SourceGraphic" + operator="over" + result="composite2" /> + </filter> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2289-4" + id="linearGradient3055" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.94969205,0,0,0.89326813,2.4216955,2.7025635)" + x1="31.372862" + y1="60.111893" + x2="30.769272" + y2="4.0104952" /> + <filter + id="filter3057" + style="color-interpolation-filters:sRGB;" + inkscape:label="Drop Shadow"> + <feFlood + id="feFlood3059" + flood-opacity="0.33" + flood-color="rgb(0,0,0)" + result="flood" /> + <feComposite + id="feComposite3061" + in2="SourceGraphic" + in="flood" + operator="in" + result="composite1" /> + <feGaussianBlur + id="feGaussianBlur3063" + in="composite" + stdDeviation="2" + result="blur" /> + <feOffset + id="feOffset3065" + dx="4" + dy="1" + result="offset" /> + <feComposite + id="feComposite3067" + in2="offset" + in="SourceGraphic" + operator="over" + result="composite2" /> + </filter> + <filter + id="filter3069" + style="color-interpolation-filters:sRGB;" + inkscape:label="Drop Shadow"> + <feFlood + id="feFlood3071" + flood-opacity="0.33" + flood-color="rgb(0,0,0)" + result="flood" /> + <feComposite + id="feComposite3073" + in2="SourceGraphic" + in="flood" + operator="in" + result="composite1" /> + <feGaussianBlur + id="feGaussianBlur3075" + in="composite" + stdDeviation="2" + result="blur" /> + <feOffset + id="feOffset3077" + dx="4" + dy="1" + result="offset" /> + <feComposite + id="feComposite3079" + in2="offset" + in="SourceGraphic" + operator="over" + result="composite2" /> + </filter> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="8.0000001" + inkscape:cx="38.519547" + inkscape:cy="37.177925" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1270" + inkscape:window-height="972" + inkscape:window-x="619" + inkscape:window-y="10" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-maximized="0"> + <inkscape:grid + type="xygrid" + id="grid3001" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + <dc:creator> + <cc:Agent> + <dc:title>Guglielmi David</dc:title> + </cc:Agent> + </dc:creator> + <cc:license + rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" /> + <dc:rights> + <cc:Agent> + <dc:title>Peter Zelezny</dc:title> + </cc:Agent> + </dc:rights> + </cc:Work> + <cc:License + rdf:about="http://creativecommons.org/licenses/GPL/2.0/"> + <cc:permits + rdf:resource="http://web.resource.org/cc/Reproduction" /> + <cc:permits + rdf:resource="http://web.resource.org/cc/Distribution" /> + <cc:requires + rdf:resource="http://web.resource.org/cc/Notice" /> + <cc:permits + rdf:resource="http://web.resource.org/cc/DerivativeWorks" /> + <cc:requires + rdf:resource="http://web.resource.org/cc/ShareAlike" /> + <cc:requires + rdf:resource="http://web.resource.org/cc/SourceCode" /> + </cc:License> + </rdf:RDF> + </metadata> + <g + inkscape:label="Calque 1" + inkscape:groupmode="layer" + id="layer1"> + <path + inkscape:connector-curvature="0" + id="path4107" + d="m 32.154792,4.6214684 c -6.271873,0.05843 -14.928,0.744277 -16.110377,1.388109 C 13.679661,7.297237 0.77557733,29.32852 0.80334443,31.859522 c 0.02777,2.531005 13.46215957,24.293967 15.85468157,25.537309 2.392519,1.243342 29.481,1.287521 31.845753,-1.41e-4 C 50.868531,56.109028 63.897618,33.765246 63.869851,31.234242 63.842081,28.703238 50.157689,6.540262 47.765167,5.2969214 46.568907,4.6752504 38.426665,4.5630384 32.154792,4.6214684 z m 0.30429,8.4025596 c 4.90437,-0.047 9.661849,0.425368 10.597281,0.92538 1.870861,1.000021 10.667726,15.499216 10.689439,17.534904 C 53.767512,33.52 44.703434,48.643484 42.854286,49.67915 41.005138,50.714818 23.631044,50.742687 21.760184,49.742667 19.889321,48.742646 10.449106,33.795226 10.427392,31.759537 10.405682,29.72385 19.860508,15.185189 21.709656,14.14952 c 0.924575,-0.517833 5.845056,-1.078498 10.749426,-1.125492 z" + style="fill:#000000;fill-opacity:1;filter:url(#filter3057)" + sodipodi:nodetypes="ssssssssssssssss" /> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccccccc" + id="path2297" + d="m 12.848737,18.660684 6.998916,-7.560243 12.488019,13.136676 12.867701,-13.261676 7.451909,7.435243 -13.544847,13.503584 13.341856,13.152864 -6.670928,6.94334 L 32.335672,39.351071 19.323785,52.010472 12.426724,45.086347 25.565591,32.039268 z" + style="fill:url(#linearGradient3133);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.31593215;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;filter:url(#filter3069)" + inkscape:transform-center-x="2.25" + inkscape:transform-center-y="2.25" /> + <path + style="fill:url(#linearGradient3055);fill-opacity:1" + d="M 31.793607,5.7202825 C 24.936514,5.7854875 18.319304,6.2021256 17.026601,6.9206116 14.441196,8.3575834 2.2463386,29.063913 2.2766972,31.888398 2.3070579,34.712884 14.945039,54.814527 17.560803,56.20204 20.176566,57.589553 45.00941,57.359866 47.594814,55.922894 50.180219,54.485922 62.625078,34.154591 62.594719,31.330106 62.564358,28.505621 49.613876,7.8135634 46.998112,6.4260506 45.690231,5.732294 38.650699,5.6550774 31.793607,5.7202825 z m 0.18436,5.9275485 c 5.36199,-0.05245 10.575046,0.320704 11.597761,0.878694 2.045429,1.115978 11.686445,16.671419 11.710184,18.943154 0.02374,2.271736 -9.523004,18.3578 -11.544693,19.513557 -2.02169,1.155758 -20.789608,0.763657 -22.835036,-0.352353 C 18.86075,49.514938 8.8958589,34.166602 8.8721197,31.894866 8.8483797,29.62313 19.328834,13.7806 21.350523,12.624842 c 1.010846,-0.577879 5.26545,-0.924567 10.627444,-0.977011 z" + id="path3305" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ssssssssssssssss" /> + <path + style="fill:none" + d="M 15.390198,55.682743 C 10.447144,47.360612 3.6450957,35.733851 3.6919881,35.686959 c 0.031272,-0.03127 0.5023581,0.289334 1.0468575,0.712459 0.5444994,0.423125 1.0414462,0.769317 1.1043264,0.769317 0.06288,0 2.6329414,4.276521 5.711247,9.50338 l 5.59692,9.503379 2.159128,0.007 2.159126,0.007 -0.34365,-0.584653 C 20.936937,55.28323 18.053514,50.518786 14.718339,45.017137 11.383164,39.515488 8.6543842,34.929294 8.6543842,34.825595 c 0,-0.103699 0.2455542,-0.59277 0.545676,-1.086823 0.3001218,-0.494053 0.545676,-0.941721 0.545676,-0.994816 0,-0.05309 -0.2788317,-0.09654 -0.619626,-0.09654 -0.8505388,0 -1.0953557,-0.488405 -1.0953557,-2.185211 0,-1.90734 -0.048411,-1.868066 2.3051195,-1.870072 l 1.982335,-0.0017 1.052375,-1.721616 c 0.578806,-0.94689 1.052375,-1.785869 1.052375,-1.8644 0,-0.07853 -0.829918,-0.162484 -1.844262,-0.186561 l -1.844263,-0.04378 4.480955,-7.327649 4.480953,-7.32765 12.466741,-0.0399 12.466738,-0.0399 0.517892,0.854518 0.517892,0.854518 2.335995,0.04287 2.335994,0.04287 2.742626,4.521316 c 1.508447,2.486723 4.136212,6.819001 5.839482,9.627283 1.703268,2.808283 3.157599,5.105969 3.231846,5.105969 0.256907,0 0.13186,-0.393635 -0.411085,-1.294044 -0.299901,-0.497351 -0.545275,-0.935841 -0.545275,-0.974422 0,-0.03858 0.310833,-0.07015 0.69074,-0.07015 0.575204,0 0.699074,-0.05324 0.740561,-0.318272 0.03599,-0.229934 0.273254,0.06215 0.854835,1.052375 0.702767,1.196557 0.780303,1.410253 0.610448,1.682462 -0.107012,0.171499 -0.377881,0.627528 -0.601929,1.013399 l -0.407361,0.701583 0.533953,0.857491 c 0.293674,0.47162 0.535536,0.950306 0.537472,1.063747 0.0019,0.113441 -3.098537,5.322698 -6.889942,11.576127 l -6.893462,11.36987 -16.876654,0 -16.876655,0 -1.226996,-2.065773 z" + id="path3077" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/hexchat/data/icons/hexchat-shadowless.svg b/hexchat/data/icons/hexchat-shadowless.svg new file mode 100644 index 0000000..943510e --- /dev/null +++ b/hexchat/data/icons/hexchat-shadowless.svg @@ -0,0 +1,63 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + height="64" + width="64"> + <metadata> + <rdf:RDF> + <cc:Work> + <dc:format>image/svg+xml</dc:format> + <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:creator> + <cc:Agent> + <dc:title>Guglielmi David</dc:title> + </cc:Agent> + </dc:creator> + <cc:license rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" /> + <dc:rights> + <cc:Agent> + <dc:title>Peter Zelezny</dc:title> + </cc:Agent> + </dc:rights> + <dc:contributor> + <cc:Agent> + <dc:title>Samuel Messner</dc:title> + </cc:Agent> + </dc:contributor> + </cc:Work> + <cc:License rdf:about="http://creativecommons.org/licenses/GPL/2.0/"> + <cc:requires rdf:resource="http://web.resource.org/cc/Notice" /> + <cc:requires rdf:resource="http://web.resource.org/cc/ShareAlike" /> + <cc:requires rdf:resource="http://web.resource.org/cc/SourceCode" /> + <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction" /> + <cc:permits rdf:resource="http://web.resource.org/cc/Distribution" /> + <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks" /> + </cc:License> + </rdf:RDF> + </metadata> + <defs> + <linearGradient id="hexchatGradient" x1="0" y1="1" x2="0" y2="0"> + <stop id="hgRedStop" offset="0" style="stop-color: #FF2600; stop-opacity: 1;" /> + <stop id="hgYellowStop" offset="1" style="stop-color: #FFD600; stop-opacity: 1;" /> + </linearGradient> + <filter inkscape:collect="always" id="dropshadow"> + <feGaussianBlur inkscape:collect="always" stdDeviation="1.9736701" id="dropshadowGaussian" /> + </filter> + </defs> + <path + style="fill: #000000; fill-opacity: 1;" + d="m 31.62506,4.4248023 c -7.285288,0.0713 -14.595323,0.526836 -15.96875,1.3125 C 12.909458,7.3086297 -0.0321942,29.523731 6.0185229e-5,32.612303 0.0323162,35.700876 13.470952,57.688808 16.25006,59.206053 c 2.779105,1.517245 29.159399,1.258827 31.90625,-0.3125 2.746852,-1.571328 15.688504,-23.786428 15.65625,-26.875 C 63.7803,28.929981 50.372918,6.9107967 47.59381,5.3935523 46.204258,4.6349293 38.910347,4.3535003 31.62506,4.4248023 z m -0.1875,9.2500007 c 3.386631,-0.03246 6.676687,0.05409 8.75,0.28125 l -8.71875,9.71875 -9.0625,-9.5 c 2.055746,-0.283043 5.521157,-0.466366 9.03125,-0.5 z m 17.34375,9.84375 c 2.298293,3.744897 4.302354,7.392556 4.3125,8.34375 0.01126,1.055883 -2.358157,5.507241 -4.875,9.6875 l -9.03125,-8.03125 z m -34.46875,0.25 8.75,9.75 -8.1875,7.875 c -2.482342,-3.992634 -4.707927,-8.110307 -4.71875,-9.125 -0.01021,-0.95736 1.927117,-4.687748 4.15625,-8.5 z m 17.15625,16.90625 9.8125,9.21875 c -4.111037,0.67314 -16.108253,0.781873 -19.46875,0.125 z" + id="outline" + sodipodi:nodetypes="ssssssssscccscsccccccsccccc" /> + <path + style="fill: url(#hexchatGradient); fill-opacity: 1;" + d="m 31.25006,6.4873027 c -6.857093,0.06521 -13.707297,0.469014 -15,1.1875 -2.585405,1.4369712 -14.780358,21.7692653 -14.75,24.5937503 0.03036,2.824486 12.665486,22.924987 15.28125,24.3125 2.615763,1.387513 27.445846,1.186972 30.03125,-0.25 2.585405,-1.436972 14.780359,-21.769265 14.75,-24.59375 C 61.5322,28.912818 48.897074,8.7810649 46.28131,7.3935527 44.973429,6.6997957 38.107152,6.4220967 31.25006,6.4873027 z m 0.0625,5.0625003 c 5.36199,-0.05245 10.696035,0.19201 11.71875,0.75 0.06132,0.03346 0.143803,0.127745 0.21875,0.1875 l -11.28125,12.59375 -0.5,0.53125 -0.46875,-0.53125 -11.75,-12.3125 c 0.10903,-0.09884 0.228263,-0.201843 0.3125,-0.25 1.010846,-0.577879 6.38801,-0.916306 11.75,-0.96875 z m 18.0625,9.46875 c 2.883844,4.661341 5.612556,9.652893 5.625,10.84375 0.01348,1.290331 -3.064699,7.087557 -6.09375,12.09375 l -11.09375,-9.90625 -0.53125,-0.46875 0.5,-0.46875 11.59375,-12.09375 z m -35.78125,0.03125 10.84375,12.0625 0.4375,0.46875 -0.46875,0.4375 -10.28125,9.90625 c -3.04689,-4.86606 -6.049362,-10.36778 -6.0625,-11.625 -0.01271,-1.216102 2.689239,-6.451996 5.53125,-11.25 z m 17.875,17.78125 0.4375,0.4375 12.34375,11.59375 c -0.318014,0.365376 -0.587006,0.638955 -0.78125,0.75 -2.02169,1.155758 -21.423322,1.397228 -23.46875,0.28125 -0.228202,-0.124506 -0.601742,-0.47821 -1,-0.9375 l 12,-11.6875 0.46875,-0.4375 z" + id="coloredX" /> +</svg> diff --git a/hexchat/data/icons/hexchat.ico b/hexchat/data/icons/hexchat.ico new file mode 100644 index 0000000000000000000000000000000000000000..83ff6a738853cf8088a02c41e0e1f5ba0c4aa204 GIT binary patch literal 128609 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 literal 0 HcmV?d00001 diff --git a/hexchat/data/icons/hexchat.png b/hexchat/data/icons/hexchat.png new file mode 100644 index 0000000000000000000000000000000000000000..b6de34655be0ee8b1ce4dc10b114136c47472171 GIT binary patch literal 2443 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 JPDHLkV1jJ^y&M1l literal 0 HcmV?d00001 diff --git a/hexchat/data/icons/hexchat.svg b/hexchat/data/icons/hexchat.svg new file mode 100644 index 0000000..07be27f --- /dev/null +++ b/hexchat/data/icons/hexchat.svg @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns="http://www.w3.org/2000/svg" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:xlink="http://www.w3.org/1999/xlink" + height="64" + width="64"> + <metadata> + <rdf:RDF> + <cc:Work> + <dc:format>image/svg+xml</dc:format> + <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:creator> + <cc:Agent> + <dc:title>Guglielmi David</dc:title> + </cc:Agent> + </dc:creator> + <cc:license rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" /> + <dc:rights> + <cc:Agent> + <dc:title>Peter Zelezny</dc:title> + </cc:Agent> + </dc:rights> + <dc:contributor> + <cc:Agent> + <dc:title>Samuel Messner</dc:title> + </cc:Agent> + </dc:contributor> + </cc:Work> + <cc:License rdf:about="http://creativecommons.org/licenses/GPL/2.0/"> + <cc:requires rdf:resource="http://web.resource.org/cc/Notice" /> + <cc:requires rdf:resource="http://web.resource.org/cc/ShareAlike" /> + <cc:requires rdf:resource="http://web.resource.org/cc/SourceCode" /> + <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction" /> + <cc:permits rdf:resource="http://web.resource.org/cc/Distribution" /> + <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks" /> + </cc:License> + </rdf:RDF> + </metadata> + <defs> + <linearGradient id="hexchatGradient" x1="0" y1="0" x2="0" y2="1"> + <stop id="hgYellowStop" offset="0" style="stop-color: #FFD600" /> + <stop id="hgRedStop" offset="1" style="stop-color: #FF2600" /> + </linearGradient> + </defs> + <use xlink:href="#outline" style="opacity:0.15" transform="translate(0,2)" id="shadow" /> + <path + style="fill:#000000; fill-opacity: 1;" + d="M 31.71875,4.1088109 C 24.433462,4.1801109 17.123427,4.6356469 15.75,5.4213109 13.003148,6.9926379 0.06149557,29.207739 0.09374996,32.296311 0.12600597,35.384884 13.564642,57.372816 16.34375,58.890061 19.122855,60.407306 45.503149,60.148888 48.25,58.577561 50.996852,57.006233 63.938504,34.791133 63.90625,31.702561 63.87399,28.613989 50.466608,6.5948049 47.6875,5.0775609 46.297948,4.3189379 39.004037,4.0375089 31.71875,4.1088109 Z m -0.1875,9.2500001 c 3.386631,-0.03246 6.676687,0.05409 8.75,0.28125 l -8.71875,9.71875 -9.0625,-9.5 c 2.055746,-0.283043 5.521157,-0.466366 9.03125,-0.5 z m 17.34375,9.84375 c 2.298293,3.744897 4.302354,7.392556 4.3125,8.34375 0.01126,1.055883 -2.358157,5.507241 -4.875,9.6875 l -9.03125,-8.03125 z m -34.46875,0.25 8.75,9.75 -8.1875,7.875 c -2.482342,-3.992634 -4.707927,-8.110307 -4.71875,-9.125 -0.01021,-0.95736 1.927117,-4.687748 4.15625,-8.5 z m 17.15625,16.90625 9.8125,9.21875 c -4.111037,0.67314 -16.108253,0.781873 -19.46875,0.125 z" + id="outline" /> + <path + style="fill:url(#hexchatGradient); fill-opacity: 1;" + d="m 31.34375,6.1713109 c -6.857093,0.06521 -13.707297,0.469014 -15,1.1875 C 13.758345,8.7957819 1.5633917,29.128076 1.5937497,31.952561 c 0.03036,2.824486 12.6654863,22.924987 15.2812503,24.3125 2.615763,1.387513 27.445846,1.186972 30.03125,-0.25 2.585405,-1.436972 14.780359,-21.769265 14.75,-24.59375 C 61.62589,28.596826 48.990764,8.4650729 46.375,7.0775609 45.067119,6.3838039 38.200842,6.1061049 31.34375,6.1713109 Z m 0.0625,5.0625001 c 5.36199,-0.05245 10.696035,0.19201 11.71875,0.75 0.06132,0.03346 0.143803,0.127745 0.21875,0.1875 l -11.28125,12.59375 -0.5,0.53125 -0.46875,-0.53125 -11.75,-12.3125 c 0.10903,-0.09884 0.228263,-0.201843 0.3125,-0.25 1.010846,-0.577879 6.38801,-0.916306 11.75,-0.96875 z m 18.0625,9.46875 c 2.883844,4.661341 5.612556,9.652893 5.625,10.84375 0.01348,1.290331 -3.064699,7.087557 -6.09375,12.09375 l -11.09375,-9.90625 -0.53125,-0.46875 0.5,-0.46875 11.59375,-12.09375 z m -35.78125,0.03125 10.84375,12.0625 0.4375,0.46875 -0.46875,0.4375 -10.28125,9.90625 c -3.04689,-4.86606 -6.0493623,-10.36778 -6.0625003,-11.625 -0.01271,-1.216102 2.6892393,-6.451996 5.5312503,-11.25 z m 17.875,17.78125 0.4375,0.4375 12.34375,11.59375 c -0.318014,0.365376 -0.587006,0.638955 -0.78125,0.75 -2.02169,1.155758 -21.423322,1.397228 -23.46875,0.28125 -0.228202,-0.124506 -0.601742,-0.47821 -1,-0.9375 l 12,-11.6875 0.46875,-0.4375 z" + id="coloredX" /> +</svg> diff --git a/hexchat/data/icons/meson.build b/hexchat/data/icons/meson.build new file mode 100644 index 0000000..710e004 --- /dev/null +++ b/hexchat/data/icons/meson.build @@ -0,0 +1,11 @@ +icondir = join_paths(get_option('datadir'), 'icons/hicolor') +install_data( + 'hexchat.png', + rename: 'io.github.Hexchat.png', + install_dir: join_paths(icondir, '48x48/apps') +) +install_data( + 'hexchat.svg', + rename: 'io.github.Hexchat.svg', + install_dir: join_paths(icondir, 'scalable/apps') +) diff --git a/hexchat/data/icons/tray_fileoffer.png b/hexchat/data/icons/tray_fileoffer.png new file mode 100644 index 0000000000000000000000000000000000000000..6f6e12b1647b62a137091ac9d746a3c667108fe2 GIT binary patch literal 2453 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 TUl(d<00000NkvXXu0mjfE9{G< literal 0 HcmV?d00001 diff --git a/hexchat/data/icons/tray_highlight.png b/hexchat/data/icons/tray_highlight.png new file mode 100644 index 0000000000000000000000000000000000000000..2199c4f3c9556ac08dbeb86a111c3b901e36e3e4 GIT binary patch literal 2821 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 XQsj-H+5#Ug00000NkvXXu0mjf`BfCv literal 0 HcmV?d00001 diff --git a/hexchat/data/icons/tray_message.png b/hexchat/data/icons/tray_message.png new file mode 100644 index 0000000000000000000000000000000000000000..9f70386facb32301513c5b0cab70c0b0d8003b2d GIT binary patch literal 2170 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 literal 0 HcmV?d00001 diff --git a/hexchat/data/icons/tree_channel.png b/hexchat/data/icons/tree_channel.png new file mode 100644 index 0000000000000000000000000000000000000000..f6e83254b638a2b939e71f07b182dae793009080 GIT binary patch literal 422 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE<hRxemd{22U45`9+AaB z9oIpa(Me-=1yGQ^#M9T6{VE$9FRS%~70g8p42;H}E{-7<r>9PK^lLGYXua=0dqb|0 z(0Aed#4mEkrXFFQVIkRU)!iwO@P)-K`H`TB-dCnMEei~^#gkV`ducIu)E`>3<^AjG zztK&BfkHBj6^DMzTFe^of29Ve$ooUjD*2X*ObOZ>y?Y%u!-GJf7{-VfofVRNRrl^& zA4u7ByT`KOXwIvCK3V<4ybKHqr#Hn33O05;u<$d!$H2qsdoZIxGtYU;WIu=L8{Rt1 zcMa9-|9(@J`Qv$g`5*Dqb~CuG?wq}|YY~H>BZuJ)ub;a966xg(BCQv{ZcM%SH|N!2 z9dFH+1n23Q)!EOlecrSASW_MIFQcQU1?I~ieR%rw>)mljBv$9#p2l!3b5<Q=#OzoF z<Lj$p=Bj->8*Q7;IDui+ui&r$;~AC~$Nu>2&ag&oQ<d-4CJ*CF{JlIA7o<!%mJJGS MPgg&ebxsLQ0P=#Sq5uE@ literal 0 HcmV?d00001 diff --git a/hexchat/data/icons/tree_dialog.png b/hexchat/data/icons/tree_dialog.png new file mode 100644 index 0000000000000000000000000000000000000000..9d2d500813c206d6735ea53e47ff2c56428ea0a6 GIT binary patch literal 911 zcmV;A191F_P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru)dmn2ED&u|AqxNi05x<) zSad^gZEa<4bO0!0DIhX1Ff<@aVQY0_AX9W@X>Mh53JODVWnpw>WFU8GbZ8({Xk{Qr zNlj3Y*^6%g00P@dL_t(I%YBneXk2v^#(($TnR}B-G7U*PrUTYAO-$_~)`SY0g;DBQ zQSd=%U5p#0rCSRvf-7|?=t|wWF(@ulNPHHB5F!+#1F<R^GMGm*nK+Zo<38rj|33cL zO)^c9`mGL!^L?CiK0bv5$Ysgiu=KYMsq&;i@sDWo=TmLrcVkn$%RQhRB*zl5%f?t{ zTy!2mHcf2PlKF+X)saMaVQh-r{|bEait+su=bk@X^dbTw5Y{$Y%_LqgN1aYhiB!c= zWOM^qI=E46zbJ|5Y{io_ZIdwGL(+8!%>o1C&nVpwJw|91JDi>Ji-p;#bS}#``x~kI z0s;lstrNJr$VQoFb(`U*UZQL8VVrsiYbTG9I;!@JK0XF~w9jh^tV?~3ribfmSd|S@ zO_SvPLkQO<-ZKQ6fxU4Py?-DMJbITvW^y8%sEzc`E!r50LR{};2bE@{iYVQ}EG*$w zmXWBqZes<gwtkSAoX7&7Dx)@Qc8PFxm}+Sezqgyg!WKqq0DFBNEs>(pJ{Y;Tw|dLX z?scdEpq)6?|Lf^thfpc=!0`u(^(oXto%ZEX3jb6XN~;9PV|d0fYE`NHIA7G)c8{jh zhcnTwt=xRe1<!W@*jy=L{xZ(-H(uxW>Cf?h+U7~?Gb*x+d~*;%Qp-Pm4X#hWojr5O zP%@Jf(dl6a(_IC?UU->DuDr$<3!A7~oHw6MGxPD6oI5{G*xtbhKWq{Pf{_z_1lOnU zxKMYy5W)f7;<vRrGW3x$poY%X_b)QD0eMRyk|8n(SSdPp+t{B<k<?Fu*F_XbqA)-P z9v{yB#ot>sqQGbN<|;A_P_@?OsKBdB%N^wYXy?z{hX9B|AAm%qhztbZF0Qk@v5O2m zI%*||<bSiUhj{kPCC_{A1!M$%p@4t5kA?_a18tQOqBlh>rg7igS9h|o2VVr@J>%<{ ls{n0#&7ONiSw`}me*w>=TB^eO7GMAX002ovPDHLkV1j#Olc4|r literal 0 HcmV?d00001 diff --git a/hexchat/data/icons/tree_server.png b/hexchat/data/icons/tree_server.png new file mode 100644 index 0000000000000000000000000000000000000000..acddccc92c6b3729dbcfc0f315f0fa138e022fb6 GIT binary patch literal 568 zcmV-80>}M{P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3labT3lag+-G2N4000McNliru*8&m|GA9<HVjchh0mVr~ zK~y-)jgq~JB2f^9zw0*I1_olRppggz{;>wa;y%E}Mg#W+jD`(-0w2H^5cUx^7Gweg zH<2|pk@hbTG0}@nch?3x-K(QAd*DKG?>(pLRF&cyPg?8We1O4V@EQ2U9kMK!OYwbQ zeBT$(^Tc&saa~u8F=C97@pvp+YXQDqv9;E6KA*41_XJL-lkE5VPz38zL@C8+H2TN^ ztyU|Ft@n?o(}{Aq{E$4IPBF&(6VO_J0ltS9$z&2^3?hPv5Cj1tg75o(36@0=1flJp zR=3*)px5gGa6BHF&*uP$NR%mzLm_}pr!%ucVu(hg5q%0PP)Z>p7-NXX<0z#7==b|i z)?hGr1zxq*Vp$f$;gHp8MLwUWR4TFEZt;CTsz5}@X0zcwe2cwrlH)iOi$!L$8A>VQ z@i>J-Av%{9Zl)k26bc0<lL_s18{4*VU6;jT5mjK@HiyIE@fhp%I@M}5>U=JjyW7k+ ze7dpVc^*L!MBW|8!Sg&E#{q~&_=ZI6(ZcL@I{-GD4T(g8^?FS#7K=7E+`B6ahr@wP zCIdjFQX!Q}(QGzJrBc*tHPY$yO`=PI=a-k4AN)U_0sa7dP!az6a|M$C0000<MNUMn GLSTX=knq0% literal 0 HcmV?d00001 diff --git a/hexchat/data/icons/tree_util.png b/hexchat/data/icons/tree_util.png new file mode 100644 index 0000000000000000000000000000000000000000..9460dfc746be14e4b2a6a94f91d002fa4a56318f GIT binary patch literal 611 zcmV-p0-XJcP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru)d?C56FG}x!bkuB0q{vg zK~y-)rIJf%6JZpEznS<<icJ&>f=aN=#)Y=sMXW9~6k=xULU18eq^Pwm5>f&c14BZf zYe95nK#JnRiH*==SAx<uiAfg~f>mkLmxdrjL^?BWW`;2x>%z19x#ygF@3}wxCj{ps zol&BI3dr$TBKH?fG@Vgwj@VLE`>*x`sHT~#`1-X0&1|$C>5O7D8g(O`Q4IH5!>UCA z#B@f9T4bxM*W2c190hpr@ILWaLI!dGBA^c595S9hn=k<N_N@^%*Vm9bCF=FB_gb@w z-5C`uF@RtdZww3?nzkkAx^C#YMqz$VD7-HM$U6lqv~;i$>AOg|QenCF1t1xZCGP(7 zj844Dzcfmf65S_zD3%MD6HEfSt3fc5It<jT_mz-N*9nQEM~=~KHhDMq7PmD#PVx9~ zn7&Xa9RV-dnN5zje@iZXUOLx(s)v9-z)EfT@`dpE`RS?GRloocgOOAhP<u2cGh1F{ zw!BEkK_39--f}Mg0!flMd%D;9WOg1RP#hl)Gxes#mZl@_^RrQJ+9R4H%h@N7IneIs zOsE%N%xM6??p+@C_zv;&$1k$^1%Pm?NiMHa{aF1YY!P5(<2(C(0owL@cs}z1ApB`^ xblOQYO_FQts|!HVzCtjPx&%x(xZA`#;Wszp)%NPVRJ;HH002ovPDHLkV1mE{2~q$6 literal 0 HcmV?d00001 diff --git a/hexchat/data/icons/ulist_founder.png b/hexchat/data/icons/ulist_founder.png new file mode 100644 index 0000000000000000000000000000000000000000..0e30f8d09594745a0d801284317ef95091c4992c GIT binary patch literal 660 zcmV;F0&D$=P)<h;3K|Lk000e1NJLTq000gE000gM1^@s6A4o0H00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru+zSm8FD+#;<_Q1*0wGC6 zK~yNuWs=WJRB;r=Klgs$Jk4?JhbT@HVY*49sBqS<EC?j1P2jH81kpC4zo3<yR@S0i z*`gwh774A&QcEzXC=1b;7>1c_#+iAee&74H7!|X-x^T}q_i*kN_SBU$=aMa4Mo5K@ zQohFQ#2gQR(r%pW>Qk>WO;ab%r252b+L^9b1EyzI!l$33YZLR_yLr)*JI|~$09Vr- zeSD++d-ti{uGK;i{w`Lfy0#&;%DVIXnCm~?ZTeg5!yohY;L&vS2EYK^ABn$B9`EVO z{wO#XMe6%TJkK~|RIGJW%K;s!cIoxXLob)Z`5@q%j-)x?-G8L7_-i#(gBVX7Xv3+3 zs$h&zTMJxoPY0QkWPld$;65%{3mfZJjVA~S0wRKJC7`Mzf@?d}Mo$NWKvH8uDsteQ z6Olb60ae{ePmM&P5(g6ACX^ZgaUvqy1W;6H2&m8)AkGm2Mhi7&ZGDq?qS?8v6R0Rg zL5%E>R292v<xj;e0)bA<@o@J2N*F(oP#n&v{<B53VcYX#l3mU-w!kD%G(g=-luLJR z4tE|)iruh8Q6$<B5K%*{$(Ks0%J@`n=J_W^fvf@elH<d>Y!D2zmWMi%`=vRNAm;nd z^L;{V<>yk4@u}R*=xc5Pi@>S?T)&`l_eJDrWBB#}nX`v=FmS|O=)!#2EsiZP`8CTE uU<oJyq40mT07)RR^;rQ>1gbz~8}t{+T+fV6<|5<(0000<MNUMnLSTZRf+pPn literal 0 HcmV?d00001 diff --git a/hexchat/data/icons/ulist_halfop.png b/hexchat/data/icons/ulist_halfop.png new file mode 100644 index 0000000000000000000000000000000000000000..ac5a516224b6f1650ee6e58b883b7336e5f7b76b GIT binary patch literal 668 zcmV;N0%QG&P)<h;3K|Lk000e1NJLTq000gE000gM1^@s6A4o0H00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru+zSm8FdtyNxfcKc0x3yE zK~yNuWstp3Q(+W`pYy)=()N~$iIB8ZEE)#E!OfMaIGDySjFZgx2N-p5a?nji69y3n zHy4yaHWNc2fv6z{Er}8Y38A5tdwW~k_r4D0D{`ijbAHe8dxZZcK9U>K$;3?*S!<$7 zRISg~CRZnb%F&!0t~#4}K0MQXVYpv8?by9%Ev&Gy@WKR(OLuFp*T<8Ou1N6soz(z| zJ3VLmp4?x_p1+meDVL02*_5#AOBnpIs?D>f2d?X=(<@XfOJQx|%SQkWkiB<%Hhu1D z`uEy58)1}o6QZ?am3G9KCPA>x$@E2Obd>YemEs~L^IgS9a+kaNuJxC;){JOGY1ba~ z5QP$jBW;A$l1=sIN#=V-0Z%C}cH?iPXfy*Q+C>0`LPQ}r2oAK)c&T38OlA<sC=r#l z5m;kHp%4^EON=NG_n;BVkw_$#1X7N*Q3VA`Yl|Q)z}XY6kLY&+#9|DfRaC9dH|iB) z-YLsIq>n>Nxip)hM7!l85USeb>dVc~uS_b{rL4ua0DTCEiwHPQLMj`x_%q8>KuH5N zbHd-$Jza&a%q3|w8d%#9!9@fSadBhq68al#O^?mh-)=tx)-{0n>M!h;K7}S7<~z~@ z5|4M{IG%M}4-++H=hp|erpM-j@t+TYBCyla{9s6`Pv2W|u|j(xH=4+u9gHkV8yRED zrJ_HxJY^QbH^2{I8!*E0@qi4F+AA9ZB_II&{m?(*nBAr`pn%)}0000<MNUMnLSTYV Cl_OIC literal 0 HcmV?d00001 diff --git a/hexchat/data/icons/ulist_netop.png b/hexchat/data/icons/ulist_netop.png new file mode 100644 index 0000000000000000000000000000000000000000..aba96858ce32d8053de76f1665f879d5d27fd32b GIT binary patch literal 593 zcmV-X0<QguP)<h;3K|Lk000e1NJLTq000gE000gM1^@s6A4o0H00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru+zSm8F$D9%LAn3{0p3YO zK~yNub&@}5Q&AMgf9Kx!(l(OV6iQP9rT*!VHbc?HO&!#!6&1umJ2=@6cGanL=;AI& zT@)NtBp{`z4WSNIXw{;Fb!Y|AAQTDBzn53jzIPpbDM_qnI`^LM$NBEZ6<TT<&PL#p zf`kvnGOSF&1EAQblX}w!iD!`Mxi*??6!?zA_jJ}<fbki){~Y8z7!B|O`feUSve7+u zC0_fw;q7d0idQU(UoIQf5jOG57xdw8Ya?#)w|fiT>}_0)uoj;fPgdS88L=!;p%8!x z<^~{ibU=RIeZ+Mb{S0$z3eI(pT}`?lS3R*T5!*Jc@0PYUc5**V*QsG9;RX;^QMl-r zO8B*!65B>Z{(<Vw+J{o~!%3jm(vZOOz!+(S0w6dDqAdVl!vP>-dG(k@3?Tmj_HI1z z0If=};%{$b#kx!rVA;)(5=^x!Td)qeY8oEq(pj&4Fr@&q9{`}Eol?kTxCe7UUIB%9 zn8-hUOvmss5!-GJ72O$QH~)*pTzPpB(tx7@mf%A*@3=#s-k%Al1|`&g2rCvdI(iU{ zFNKAdyn463JPEh?Yjq2NbP)FdjLgFPYp7(wWMTISd^rtwfD=Fupqu_`Lxq7}AQFgN fAP+b|r7rpd@Nk`3r++qL00000NkvXXu0mjf7=8Mg literal 0 HcmV?d00001 diff --git a/hexchat/data/icons/ulist_op.png b/hexchat/data/icons/ulist_op.png new file mode 100644 index 0000000000000000000000000000000000000000..ef3c04cf7dc42970ffe1f7568f5707677fa5db76 GIT binary patch literal 691 zcmV;k0!;mhP)<h;3K|Lk000e1NJLTq000gE000gM1^@s6A4o0H00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru+zSm8D<uzxt3Ln$0zgSb zK~yNuWs=KFRB;@|Ki}{7-kI?|KA@Qf70WQeHbI0TxYB}flP%k4e?se4ty;EdQ{Xb% zxat9dAfZsG6_QG+X^!P+GtR@SbMLQ(7E)((&f**n2afO$+6S73Yg=nZBS!`o<;(eC zc5^EK6v&_U$tj%~e%SlE?^<`SuRiKLu!x;<j>VVj;mUOOUUs_lr0-5jK8|Od0nkIo z-N!dpdiy(5>suS)#@43n6mpU)?z(u)cNYgbtfnnCl3m)ZtWV~r0SsXD!PU22m(Qf; z7ZzO<qKUe=#ABZG)g%ax$QO#Fx|8DkXz0g>!u#rhThh!x)AjBv>E17^YoQ<W#ZQ=1 zfyjZF;wKE>GYWe}m+EWcY=3eLsMVTe{8lvzsT>`u`TBRcd5U_12%t_BXiV4Aa=v~L zNP8$5Ju+N16pb4ws3{@>>W&#e1&d3hF{uL@JfbKcX^5CP^;AR!aG)R}sDh{<Vkjaw zLcp|K2xf~xnda6;=UfCh!~|0?lammL3BmrM6tf4*Kt;b#?LS+5vk^8Yn=~YHW`fE| zi-M?u80M>NFBMsv%uN6}0}jfErEE)g{m8is87Wl{a8V?x$2DSt7gH&0SC|`Lo%uOm zegte9KzXzJZfzl3iMRSgo$VQ^Y4)*%IX__pr9iem6_^`eomqYL>prjy><K{6?Kb)R ze8=H4a_(kwtm{&GFbEIpT<F5xZ{_9n$=pO~>*xjW71#kn;eXTuX`tccSrs4$lz`$N Z({B}x=vIx>PEY^<002ovPDHLkV1oQpGMfMZ literal 0 HcmV?d00001 diff --git a/hexchat/data/icons/ulist_owner.png b/hexchat/data/icons/ulist_owner.png new file mode 100644 index 0000000000000000000000000000000000000000..e0fe13a6b93e53b171c80b20762e79381c4efe0d GIT binary patch literal 678 zcmV;X0$KfuP)<h;3K|Lk000e1NJLTq000gE000gM1^@s6A4o0H00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru+zSm8EjT*bU|;|M0y9ZO zK~yNuWs=QHRACs!f9HMgTxB91No_`>MNwE8x@_mF4+tTQs7>vP3Thct(85JVe?XfG z${-4&O%O@TP_Yl85TYiSpdibcoKa^+NAG=F%tTRVbr$D5=kRdEKR9+GwJ(`$K8)x# zqg1UdzkD!SyaSZ}*6BBCOVd4aZTIuOzMdUU0fqpvx>jQRMK*f<>f4z|_ZMzn8qVnI zm2c(&E|0MJ{J8_4dUx$iFD`wJ%GFubR_C?4S~BlL>+j$0H)h;mp-`xf-YSj*cz~0q z_DuHlY)OC5&zKRrAZV6%33JXXwi@NiB3+q{YHh3Soq4-3T`I;O-O=Nz{k^?gcNFG7 zM^YfCgb87Q<Zue{E}&dqux;BqIC!Y_G>~-3WH?l-#jHgu&dGxW5>6iQNCJ?>j#OI< z9UUzLKqioL-DWXnvE&jU&>utngAMLT#BzQeus*QZN`{cUNludc#~>s}y}m?j5#U{= zvhp&H%QS~618W#)h#mDqLh?k>vdWc87O1+1_lkEXCO$=}RI4*Hs|)K1$RP<K!Z6V1 z+#F+1^G|?+1Bz3VU(RN;UufU3S>6YYo~|*0fTpI9%JMv8&vH}mrfZLZvIlrSQ+qR) zpRIPLZEt6Lw^~|~B*KIx!VpwZE;q~LM<1qc-}reE$O7{MxNxOY*N1;tW)p)$N7_$! zb)^TQcx|1TMN3PI*|DejCyk^WkOw01KaxNOSl?Jy6(|5@VClE$7vRp`?JmNKCIA2c M07*qoM6N<$f?X>puK)l5 literal 0 HcmV?d00001 diff --git a/hexchat/data/icons/ulist_voice.png b/hexchat/data/icons/ulist_voice.png new file mode 100644 index 0000000000000000000000000000000000000000..dbc13ad875bca241f58ae15919a33f190af89848 GIT binary patch literal 670 zcmV;P0%84$P)<h;3K|Lk000e1NJLTq000gE000gM1^@s6A4o0H00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru+zSm8E;8{V+Pwe(0xL;G zK~yNuWs<>5(_t9LKhOKVb8B-piPmf;nn@XC1%gLU78HV1m!Lnuf-XUaJQaffLWeGO z7DABn5Op$Rq9x>^T&5UKr>^<a&AILO+uOmZS<mU=d7cl?_xbV&|HSdGp=<s?@HV32 zwo-9Q#hpnfG4K*_{+^S=^j!Q(|MPck9cSCcXAZiByvy9wthYKlb>I0i_#)c(M%G4d zS`AR&`K+n?;nN>&9nG=zjgptm?n*9KmVCZ!wa?h|ms_;1i}!A%rQl3F`Us!_uHGH| z)O?{aHve<Wde$nRG2+wOYNf?>En7~B=;?ZKO|&PoH2;~xuQ?Uz8oJ(kG2Wg^6+ER8 zqqIG^LxEOcjADCx*G5|#Id$nyKM*w9AG}p`HN{dvX{AwB0031@6e5BRN5X_oHgy9H zMvIEu3Rqhat@NQ+3Pg_DXEYU*4gq1~*@}Y#rIZC^4^RiL?!zLoSFsfj(8?|DOcr-t zLZKQ9RY>;aiaLa}hH|+mrQBu`C@3c}@G3d|&8v$9lm#p5=oV1|0zTuH^`$H;GsB}m zMgg0tuj3Dv7t+MyVKF|zQk5p4H3R~F@>@GBPJBqXsj=5UUIP?Y$EVZFwjiO#o@hh8 z9IN$HQ)8^Z#!z;xq!-ut{(da6HvaetkOZ;<aN@>@WZw2!YCC&lo%i}9XIi>lkC3(2 zD>=WDD>K8R)lCb)2H*+*M-XTL!qv|z02v?;<o1XD0M>EU;(3Ko$N&HU07*qoM6N<$ Eg8$?$vH$=8 literal 0 HcmV?d00001 diff --git a/hexchat/data/man/hexchat.1.in b/hexchat/data/man/hexchat.1.in new file mode 100644 index 0000000..1445cc9 --- /dev/null +++ b/hexchat/data/man/hexchat.1.in @@ -0,0 +1,55 @@ +.TH HEXCHAT "1" "April 2013" "HexChat @VERSION@" "User Commands" +.SH NAME +HexChat \- IRC Client +.SH DESCRIPTION +.SS "Usage:" +.IP +hexchat [OPTION...] URL +.SS "Help Options:" +.TP +\fB\-h\fR, \fB\-\-help\fR +Show help options +.TP +\fB\-\-help\-all\fR +Show all help options +.TP +\fB\-\-help\-gtk\fR +Show GTK+ Options +.SS "Application Options:" +.TP +\fB\-a\fR, \fB\-\-no\-auto\fR +Don't auto connect to servers +.TP +\fB\-d\fR, \fB\-\-cfgdir\fR=\fIPATH\fR +Use a different config directory +.TP +\fB\-n\fR, \fB\-\-no\-plugins\fR +Don't auto load any plugins +.TP +\fB\-p\fR, \fB\-\-plugindir\fR +Show plugin auto\-load directory +.TP +\fB\-u\fR, \fB\-\-configdir\fR +Show user config directory +.TP +\fB\-\-url\fR=\fIURL\fR +Open an irc://server:port/channel?key URL +.TP +\fB\-c\fR, \fB\-\-command\fR=\fICOMMAND\fR +Execute command: +.TP +\fB\-e\fR, \fB\-\-existing\fR +Open URL or execute command in an existing HexChat +.TP +\fB\-\-minimize\fR=\fIlevel\fR +Begin minimized. Level 0=Normal 1=Iconified 2=Tray +.TP +\fB\-v\fR, \fB\-\-version\fR +Show version information +.TP +\fB\-\-display\fR=\fIDISPLAY\fR +X display to use + +.SH AUTHOR +This manual page was written by Davide Puricelli <evo@debian.org> for the Debian GNU/Linux system (but +may be used by others). diff --git a/hexchat/data/man/meson.build b/hexchat/data/man/meson.build new file mode 100644 index 0000000..8f07f55 --- /dev/null +++ b/hexchat/data/man/meson.build @@ -0,0 +1,10 @@ +man_conf = configuration_data() +man_conf.set('VERSION', meson.project_version()) + +configure_file( + input: 'hexchat.1.in', + output: 'hexchat.1', + configuration: man_conf, + install: true, + install_dir: join_paths(get_option('mandir'), 'man1') +) diff --git a/hexchat/data/meson.build b/hexchat/data/meson.build new file mode 100644 index 0000000..6c6b1a9 --- /dev/null +++ b/hexchat/data/meson.build @@ -0,0 +1,11 @@ +if get_option('plugin') + subdir('pkgconfig') +endif + +if get_option('gtk-frontend') + subdir('icons') + subdir('misc') + subdir('man') +elif get_option('theme-manager') + subdir('misc') +endif diff --git a/hexchat/data/misc/io.github.Hexchat.Plugin.metainfo.xml.in b/hexchat/data/misc/io.github.Hexchat.Plugin.metainfo.xml.in new file mode 100644 index 0000000..b32a919 --- /dev/null +++ b/hexchat/data/misc/io.github.Hexchat.Plugin.metainfo.xml.in @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<component type="addon"> + <id>io.github.Hexchat.Plugin.@NAME@</id> + <extends>io.github.Hexchat</extends> + <name>@NAME@ Plugin</name> + <summary>@SUMMARY@</summary> + <url type="homepage">https://hexchat.github.io/</url> + <project_license>@LICENSE@</project_license> + <metadata_license>CC0-1.0</metadata_license> + <update_contact>tingping_AT_fedoraproject.org</update_contact> +</component> \ No newline at end of file diff --git a/hexchat/data/misc/io.github.Hexchat.ThemeManager.desktop.in b/hexchat/data/misc/io.github.Hexchat.ThemeManager.desktop.in new file mode 100644 index 0000000..705f24b --- /dev/null +++ b/hexchat/data/misc/io.github.Hexchat.ThemeManager.desktop.in @@ -0,0 +1,8 @@ +[Desktop Entry] +Name=HexChat Theme Manager +Comment=A simple theme manager for HexChat +Exec=thememan %f +Icon=hexchat +Terminal=false +Type=Application +MimeType=application/x-hct; diff --git a/hexchat/data/misc/io.github.Hexchat.ThemeManager.xml b/hexchat/data/misc/io.github.Hexchat.ThemeManager.xml new file mode 100644 index 0000000..f76b689 --- /dev/null +++ b/hexchat/data/misc/io.github.Hexchat.ThemeManager.xml @@ -0,0 +1,8 @@ +<?xml version="1.0"?> + <mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'> + <mime-type type="application/x-hct"> + <comment>HexChat theme archives</comment> + <icon name="hexchat" /> + <glob pattern="*.hct" weight="100" /> + </mime-type> + </mime-info> diff --git a/hexchat/data/misc/io.github.Hexchat.appdata.xml.in b/hexchat/data/misc/io.github.Hexchat.appdata.xml.in new file mode 100644 index 0000000..0d67a0b --- /dev/null +++ b/hexchat/data/misc/io.github.Hexchat.appdata.xml.in @@ -0,0 +1,163 @@ +<?xml version="1.0" encoding="UTF-8"?> +<component type="desktop-application"> + <id>io.github.Hexchat</id> + <name>HexChat</name> + <launchable type="desktop-id">io.github.Hexchat.desktop</launchable> + <developer_name>HexChat</developer_name> + <metadata_license>CC0-1.0</metadata_license> + <project_license>GPL-2.0+</project_license> + <translation type="gettext">hexchat</translation> + <summary>IRC Client</summary> + <description> + <p>HexChat is an easy to use yet extensible IRC Client. It allows you to securely join multiple networks and talk to users privately or in channels using a customizable interface. You can even transfer files.</p> + <p>HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, logging, custom themes, and Python/Perl scripts.</p> + </description> + <url type="homepage">http://hexchat.github.io</url> + <url type="bugtracker">https://github.com/hexchat/hexchat</url> + <url type="donation">https://goo.gl/jESZvU</url> + <url type="help">https://hexchat.readthedocs.io/en/latest/</url> + <screenshots> + <screenshot type="default"> + <image>http://i.imgur.com/tLMguQz.png</image> + <caption>Main Chat Window</caption> + </screenshot> + </screenshots> + <provides> + <!-- Renamed from this --> + <id>hexchat.desktop</id> + </provides> + <releases> + <release date="2024-02-07" version="2.16.2"> + <description> + <p>This is a minor release with small improvements and fixes:</p> + <ul> + <li>Add support for SCRAM SASL mechanisms</li> + <li>Add option to hide nick from window title</li> + <li>Change SERVER command to default to TLS, adding an "-insecure" argument</li> + <li>Increase max server password length to 1024</li> + <li>Fix detecting some URLS causing a crash</li> + </ul> + </description> + </release> + <release date="2022-02-12" version="2.16.1"> + <description> + <p>This is a minor release with mostly bug-fixes:</p> + <ul> + <li>Add `-NOOVERRIDE` flag to the `GUI COLOR` command</li> + <li>Add `-q` (quiet) flag to the `EXECWRITE` command</li> + <li>Rename installed icon to match app-id (Fixes notification icon)</li> + <li>Fix escaping already escaped URLs when opening them</li> + <li>Fix Python scripts not being opened as UTF-8</li> + <li>Fix `TIMER` command supporting decimals regardless of locale</li> + </ul> + </description> + </release> + <release date="2021-10-01" version="2.16.0"> + <description> + <p>This is a feature release:</p> + <ul> + <li>Add support for IRCv3 SETNAME, invite-notify, account-tag, standard replies, and UTF8ONLY</li> + <li>Add support for strikethrough formatting</li> + <li>Fix text clipping issues by respecting font line height</li> + <li>Fix URLs not being escaped when opened</li> + <li>Fix possible hang when showing notifications</li> + <li>Print ChanServ notices in the front tab by default</li> + <li>Update network list</li> + <li>python: Rewrite plugin improving memory usage and compatibility</li> + <li>fishlim: Add support for CBC and other improvements</li> + </ul> + </description> + </release> + <release date="2019-12-20" version="2.14.3"> + <description> + <p>This is a bug-fix release:</p> + <ul> + <li>Fix various incorrect parsing of IRC messages relating to trailing parameters</li> + <li>Fix SASL negotiation combined with multi-line cap</li> + <li>Fix input box theming with Yaru theme</li> + <li>python: Work around Python 3.7 regression causing crash on unload</li> + <li>sysinfo: Add support for /etc/os-release</li> + <li>sysinfo: Ignore irrelevant mounts when calculating storage size</li> + </ul> + </description> + </release> + <release date="2018-08-29" version="2.14.2"> + <description> + <p>This is a minor release:</p> + <ul> + <li>Remove shift+click to close tab binding</li> + <li>Always unminimize when opening from tray</li> + <li>Fix some translations containing invalid text events</li> + <li>Fix sending server passwords starting with ":"</li> + </ul> + </description> + </release> + <release date="2018-03-13" version="2.14.1"> + <description> + <p>This is a very minor bug-fix release:</p> + <ul> + <li>Fix performance regression</li> + </ul> + </description> + </release> + <release date="2018-03-10" version="2.14.0"> + <description> + <p>This is largely a bug fix release though it has some large behind the scenes changes:</p> + <ul> + <li>Rename data files to use *io.github.Hexchat* name</li> + <li>Add option (irc_reconnect_rejoin) to disable auto-rejoin on reconnect</li> + <li>Add ability to set custom tray icon separate of app icon</li> + <li>Fix Enchant 2.0+ support</li> + <li>Fix input box theming with Adwaita-dark</li> + <li>Fix custom sounds not respecting omit if away option</li> + <li>Fix detecting if a tray doesn't exist on x11</li> + <li>Fix cutting off ctcp text after ending \01</li> + <li>Fix /ignore not accepting full hosts</li> + <li>Fix characters getting cut off when their width changes</li> + <li>Fix various possible crashes</li> + <li>Change preference window to be scroll-able</li> + <li>Remove ctrl+w binding by default</li> + <li>doat: Fix channels with / in them</li> + <li>fishlim: Fix key exchange</li> + <li>fishlim: Fix building against LibreSSL</li> + <li>sysinfo: Fix pci.ids file not being found on some distros</li> + <li>sysinfo: Make libpci optional</li> + <li>lua: Avoid loading the same script multiple times</li> + <li>Update translations</li> + </ul> + </description> + </release> + <release date="2016-12-10" version="2.12.4"> + <description> + <p>This is another bug fix release:</p> + <ul> + <li>Fix issue with timers causing ping timeouts</li> + <li>Fix building against OpenSSL 1.1</li> + <li>Fix /exec output printing invalid utf8</li> + <li>Replace doat plugin with an internal command</li> + <li>Change how tab colors interact with plugins</li> + <li>Enable filtering the beep character by default</li> + </ul> + </description> + </release> + <release date="2016-10-22" version="2.12.3"> + <description> + <p>This is a minor bug fix release just cleaning up a few issues:</p> + <ul> + <li>Fix crash with bad translations</li> + <li>Add new mhop command</li> + <li>Change ping timeout to 60 by default</li> + </ul> + </description> + </release> + </releases> + <kudos> + <kudo>UserDocs</kudo> + <kudo>HiDpiIcon</kudo> + <kudo>Notifications</kudo> + </kudos> + <content_rating type="oars-1.1"> + <content_attribute id="social-chat">intense</content_attribute> + </content_rating> + <update_contact>tingping_at_fedoraproject.org</update_contact> +</component> diff --git a/hexchat/data/misc/io.github.Hexchat.desktop.in.in b/hexchat/data/misc/io.github.Hexchat.desktop.in.in new file mode 100644 index 0000000..5e00ce8 --- /dev/null +++ b/hexchat/data/misc/io.github.Hexchat.desktop.in.in @@ -0,0 +1,19 @@ +[Desktop Entry] +Name=HexChat +GenericName=IRC Client +Comment=Chat with other people online +Keywords=IM;Chat; +Exec=@exec_command@ +Icon=io.github.Hexchat +Terminal=false +Type=Application +Categories=GTK;Network;IRCClient; +StartupNotify=true +StartupWMClass=Hexchat +X-GNOME-UsesNotifications=true +MimeType=x-scheme-handler/irc;x-scheme-handler/ircs; +Actions=SafeMode; + +[Desktop Action SafeMode] +Name=Open Safe Mode +Exec=hexchat --no-auto --no-plugins diff --git a/hexchat/data/misc/meson.build b/hexchat/data/misc/meson.build new file mode 100644 index 0000000..2abf307 --- /dev/null +++ b/hexchat/data/misc/meson.build @@ -0,0 +1,127 @@ +appdir = join_paths(get_option('datadir'), 'applications') +metainfodir = join_paths(get_option('datadir'), 'metainfo') +desktop_utils = find_program('desktop-file-validate', required: false) + +if get_option('gtk-frontend') + if get_option('install-appdata') + hexchat_appdata = i18n.merge_file( + input: 'io.github.Hexchat.appdata.xml.in', + output: 'io.github.Hexchat.appdata.xml', + po_dir: '../../po', + install: true, + install_dir: metainfodir + ) + + appstream_util = find_program('appstream-util', required: false) + if appstream_util.found() + test('Validate io.github.Hexchat.appdata.xml', appstream_util, + args: ['validate-relax', hexchat_appdata] + ) + endif + endif + + desktop_conf = configuration_data() + if dbus_glib_dep.found() + desktop_conf.set('exec_command', 'hexchat --existing %U') + else + desktop_conf.set('exec_command', 'hexchat %U') + endif + + desktop_file = configure_file( + input: 'io.github.Hexchat.desktop.in.in', + output: 'io.github.Hexchat.desktop.in', + configuration: desktop_conf + ) + + hexchat_desktop = i18n.merge_file( + input: desktop_file, + output: 'io.github.Hexchat.desktop', + po_dir: '../../po', + type: 'desktop', + install: true, + install_dir: appdir + ) + + if desktop_utils.found() + test('Validate io.github.Hexchat.desktop', desktop_utils, + args: [hexchat_desktop] + ) + endif +endif + +if get_option('theme-manager') + htm_desktop = i18n.merge_file( + input: 'io.github.Hexchat.ThemeManager.desktop.in', + output: 'io.github.Hexchat.ThemeManager.desktop', + po_dir: '../../po', + type: 'desktop', + install: true, + install_dir: appdir + ) + + if desktop_utils.found() + test('Validate io.github.Hexchat.ThemeManager.desktop', desktop_utils, + args: [htm_desktop] + ) + endif + + install_data('io.github.Hexchat.ThemeManager.xml', + install_dir: join_paths(get_option('datadir'), 'mime/packages') + ) +endif + +if get_option('plugin') + plugin_metainfo = [] + + # FIXME: These should all get translated somewhere + if get_option('with-checksum') + plugin_metainfo += [ + ['Checksum', 'Calculates a checksum for all sent and recieved DCC files', 'MIT'] + ] + endif + + if get_option('with-fishlim') + plugin_metainfo += [ + ['Fishlim', 'Allows setting a key for encrypted conversations', 'MIT AND GPL-2.0+'] + ] + endif + + if get_option('with-lua') != 'false' + plugin_metainfo += [ + ['Lua', 'Provides a scripting interface in Lua', 'MIT'] + ] + endif + + if get_option('with-perl') != 'false' + plugin_metainfo += [ + ['Perl', 'Provides a scripting interface in Perl', 'GPL-2.0+'] + ] + endif + + if get_option('with-python') != 'false' + plugin_metainfo += [ + ['Python', 'Provides a scripting interface in Python', 'GPL-2.0+'] + ] + endif + + if get_option('with-sysinfo') + plugin_metainfo += [ + ['Sysinfo', 'Adds command to display system information', 'GPL-2.0+'] + ] + endif + + foreach metainfo : plugin_metainfo + name = metainfo[0] + conf = configuration_data() + conf.set('NAME', name) + conf.set('SUMMARY', metainfo[1]) + conf.set('LICENSE', metainfo[2]) + + configure_file( + input: 'io.github.Hexchat.Plugin.metainfo.xml.in', + output: 'io.github.Hexchat.Plugin.@0@.metainfo.xml'.format(name), + configuration: conf, + install_dir: get_option('install-plugin-metainfo') ? metainfodir : '', + ) + endforeach +endif diff --git a/hexchat/data/pkgconfig/hexchat-plugin.pc.in b/hexchat/data/pkgconfig/hexchat-plugin.pc.in new file mode 100644 index 0000000..2395723 --- /dev/null +++ b/hexchat/data/pkgconfig/hexchat-plugin.pc.in @@ -0,0 +1,9 @@ +prefix=@prefix@ +exec_prefix=${prefix} +includedir=@includedir@ +hexchatlibdir=@hexchatlibdir@ + +Name: HexChat plugins +Description: Header and path for HexChat plugins +Version: @VERSION@ +Cflags: -I${includedir} diff --git a/hexchat/data/pkgconfig/meson.build b/hexchat/data/pkgconfig/meson.build new file mode 100644 index 0000000..079e398 --- /dev/null +++ b/hexchat/data/pkgconfig/meson.build @@ -0,0 +1,14 @@ +pkg_conf = configuration_data() +prefix = get_option('prefix') +pkg_conf.set('prefix', prefix) +pkg_conf.set('VERSION', meson.project_version()) +pkg_conf.set('hexchatlibdir', join_paths('${prefix}', plugindir)) +pkg_conf.set('includedir', join_paths('${prefix}', get_option('includedir'))) + +configure_file( + input: 'hexchat-plugin.pc.in', + output: 'hexchat-plugin.pc', + configuration: pkg_conf, + install: true, + install_dir: join_paths(get_option('libdir'), 'pkgconfig'), +) diff --git a/hexchat/plugins/checksum/checksum.c b/hexchat/plugins/checksum/checksum.c new file mode 100644 index 0000000..4db14c9 --- /dev/null +++ b/hexchat/plugins/checksum/checksum.c @@ -0,0 +1,204 @@ +/* HexChat + * Copyright (c) 2010-2012 Berke Viktor. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "config.h" + +#include <gio/gio.h> + +#include "hexchat-plugin.h" + +static hexchat_plugin *ph; /* plugin handle */ +static char name[] = "Checksum"; +static char desc[] = "Calculate checksum for DCC file transfers"; +static char version[] = "4.0"; + + +typedef struct { + gboolean send_message; + char *servername; + char *channel; +} ChecksumCallbackInfo; + + +static void +print_sha256_result (ChecksumCallbackInfo *info, const char *checksum, const char *filename, GError *error) +{ + // So then we get the next best available channel, since we always want to print at least somewhere, it's fine + hexchat_context *ctx = hexchat_find_context(ph, info->servername, info->channel); + if (!ctx) { + // before we print a private message to the wrong channel, we exit early + if (info->send_message) { + return; + } + + // if the context isn't found the first time, we search in the server + ctx = hexchat_find_context(ph, info->servername, NULL); + if (!ctx) { + // The second time we exit early, since printing in another server isn't desireable + return; + } + } + + hexchat_set_context(ph, ctx); + + if (error) { + hexchat_printf (ph, "Failed to create checksum for %s: %s\n", filename, error->message); + } else if (info->send_message) { + hexchat_commandf (ph, "quote PRIVMSG %s :SHA-256 checksum for %s (remote): %s", hexchat_get_info (ph, "channel"), filename, checksum); + } else { + hexchat_printf (ph, "SHA-256 checksum for %s (local): %s\n", filename, checksum); + } +} + +static void +file_sha256_complete (GFile *file, GAsyncResult *result, gpointer user_data) +{ + ChecksumCallbackInfo * callback_info = user_data; + GError *error = NULL; + char *sha256 = NULL; + const char *filename = g_task_get_task_data (G_TASK (result)); + + sha256 = g_task_propagate_pointer (G_TASK (result), &error); + print_sha256_result (callback_info, sha256, filename, error); + + g_free(callback_info->servername); + g_free(callback_info->channel); + g_free(callback_info); + g_free (sha256); + g_clear_error (&error); +} + +static void +thread_sha256_file (GTask *task, GFile *file, gpointer task_data, GCancellable *cancellable) +{ + GChecksum *checksum; + GFileInputStream *istream; + guint8 buffer[32768]; + GError *error = NULL; + gssize ret; + + istream = g_file_read (file, cancellable, &error); + if (error) { + g_task_return_error (task, error); + return; + } + + checksum = g_checksum_new (G_CHECKSUM_SHA256); + + while ((ret = g_input_stream_read (G_INPUT_STREAM (istream), buffer, sizeof(buffer), cancellable, &error)) > 0) + g_checksum_update (checksum, buffer, ret); + + if (error) { + g_checksum_free (checksum); + g_task_return_error (task, error); + return; + } + + g_task_return_pointer (task, g_strdup (g_checksum_get_string (checksum)), g_free); + g_checksum_free (checksum); +} + +static int +dccrecv_cb (char *word[], void *userdata) +{ + GTask *task; + char *filename_fs; + GFile *file; + const char *dcc_completed_dir; + char *filename; + + if (hexchat_get_prefs (ph, "dcc_completed_dir", &dcc_completed_dir, NULL) == 1 && dcc_completed_dir[0] != '\0') + filename = g_build_filename (dcc_completed_dir, word[1], NULL); + else + filename = g_strdup (word[2]); + + filename_fs = g_filename_from_utf8 (filename, -1, NULL, NULL, NULL); + if (!filename_fs) { + hexchat_printf (ph, "Checksum: Invalid filename (%s)\n", filename); + g_free (filename); + return HEXCHAT_EAT_NONE; + } + + ChecksumCallbackInfo *callback_data = g_new (ChecksumCallbackInfo, 1); + callback_data->servername = g_strdup(hexchat_get_info(ph, "server")); + callback_data->channel = g_strdup(hexchat_get_info(ph, "channel")); + callback_data->send_message = FALSE; + + + file = g_file_new_for_path (filename_fs); + task = g_task_new (file, NULL, (GAsyncReadyCallback) file_sha256_complete, (gpointer)callback_data); + g_task_set_task_data (task, filename, g_free); + g_task_run_in_thread (task, (GTaskThreadFunc) thread_sha256_file); + + g_free (filename_fs); + g_object_unref (file); + g_object_unref (task); + + return HEXCHAT_EAT_NONE; +} + +static int +dccoffer_cb (char *word[], void *userdata) +{ + GFile *file; + GTask *task; + char *filename; + + ChecksumCallbackInfo *callback_data = g_new (ChecksumCallbackInfo, 1); + callback_data->servername = g_strdup(hexchat_get_info(ph, "server")); + callback_data->channel = g_strdup(hexchat_get_info(ph, "channel")); + callback_data->send_message = TRUE; + + filename = g_strdup (word[3]); + file = g_file_new_for_path (filename); + task = g_task_new (file, NULL, (GAsyncReadyCallback) file_sha256_complete, (gpointer)callback_data); + g_task_set_task_data (task, filename, g_free); + g_task_run_in_thread (task, (GTaskThreadFunc) thread_sha256_file); + + g_object_unref (file); + g_object_unref (task); + + return HEXCHAT_EAT_NONE; +} + +int +hexchat_plugin_init (hexchat_plugin *plugin_handle, char **plugin_name, char **plugin_desc, char **plugin_version, char *arg) +{ + ph = plugin_handle; + + *plugin_name = name; + *plugin_desc = desc; + *plugin_version = version; + + hexchat_hook_print (ph, "DCC RECV Complete", HEXCHAT_PRI_NORM, dccrecv_cb, NULL); + hexchat_hook_print (ph, "DCC Offer", HEXCHAT_PRI_NORM, dccoffer_cb, NULL); + + hexchat_printf (ph, "%s plugin loaded\n", name); + return 1; +} + +int +hexchat_plugin_deinit (void) +{ + hexchat_printf (ph, "%s plugin unloaded\n", name); + return 1; +} diff --git a/hexchat/plugins/checksum/checksum.def b/hexchat/plugins/checksum/checksum.def new file mode 100644 index 0000000..e560f50 --- /dev/null +++ b/hexchat/plugins/checksum/checksum.def @@ -0,0 +1,3 @@ +EXPORTS +hexchat_plugin_init +hexchat_plugin_deinit diff --git a/hexchat/plugins/checksum/checksum.vcxproj b/hexchat/plugins/checksum/checksum.vcxproj new file mode 100644 index 0000000..fba08cc --- /dev/null +++ b/hexchat/plugins/checksum/checksum.vcxproj @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup Label="Configuration"> + <PlatformToolset>v142</PlatformToolset> + <ConfigurationType>DynamicLibrary</ConfigurationType> + </PropertyGroup> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{5EF7F47D-D09C-43C4-BF64-B28B11A0FF91}</ProjectGuid> + <Keyword>Win32Proj</Keyword> + <RootNamespace>checksum</RootNamespace> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + <Import Project="..\..\win32\hexchat.props" /> + <PropertyGroup> + <TargetName>hcchecksum</TargetName> + <OutDir>$(HexChatRel)plugins\</OutDir> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;CHECKSUM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>$(DepsRoot)\include;$(Glib);..\..\src\common;$(HexChatLib);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <ModuleDefinitionFile>checksum.def</ModuleDefinitionFile> + <AdditionalLibraryDirectories>$(DepsRoot)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + <AdditionalDependencies>$(DepLibs);%(AdditionalDependencies)</AdditionalDependencies> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <ClCompile> + <PreprocessorDefinitions>WIN32;_WIN64;_AMD64_;NDEBUG;_WINDOWS;_USRDLL;CHECKSUM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>$(DepsRoot)\include;$(Glib);..\..\src\common;$(HexChatLib);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <ModuleDefinitionFile>checksum.def</ModuleDefinitionFile> + <AdditionalLibraryDirectories>$(DepsRoot)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + <AdditionalDependencies>$(DepLibs);%(AdditionalDependencies)</AdditionalDependencies> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <ClCompile Include="checksum.c" /> + </ItemGroup> + <ItemGroup> + <None Include="checksum.def" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> +</Project> diff --git a/hexchat/plugins/checksum/checksum.vcxproj.filters b/hexchat/plugins/checksum/checksum.vcxproj.filters new file mode 100644 index 0000000..e6ef5e8 --- /dev/null +++ b/hexchat/plugins/checksum/checksum.vcxproj.filters @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Source Files"> + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> + <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> + </Filter> + <Filter Include="Resource Files"> + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> + </Filter> + </ItemGroup> + <ItemGroup> + <ClCompile Include="checksum.c"> + <Filter>Source Files</Filter> + </ClCompile> + </ItemGroup> + <ItemGroup> + <None Include="checksum.def"> + <Filter>Resource Files</Filter> + </None> + </ItemGroup> +</Project> \ No newline at end of file diff --git a/hexchat/plugins/checksum/meson.build b/hexchat/plugins/checksum/meson.build new file mode 100644 index 0000000..e3008f7 --- /dev/null +++ b/hexchat/plugins/checksum/meson.build @@ -0,0 +1,7 @@ +shared_module('checksum', 'checksum.c', + dependencies: [libgio_dep, hexchat_plugin_dep], + install: true, + install_dir: plugindir, + name_prefix: '', + vs_module_defs: 'checksum.def', +) diff --git a/hexchat/plugins/exec/exec.c b/hexchat/plugins/exec/exec.c new file mode 100644 index 0000000..d83a4d7 --- /dev/null +++ b/hexchat/plugins/exec/exec.c @@ -0,0 +1,160 @@ +/* HexChat + * Copyright (c) 2011-2012 Berke Viktor. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include <windows.h> +#include <time.h> + +#include "hexchat-plugin.h" + +static hexchat_plugin *ph; /* plugin handle */ +static char name[] = "Exec"; +static char desc[] = "Execute commands inside HexChat"; +static char version[] = "1.2"; + +static int +run_command (char *word[], char *word_eol[], void *userdata) +{ + char commandLine[1024]; + char buffer[4096]; + DWORD dwRead = 0; + DWORD dwLeft = 0; + DWORD dwAvail = 0; + time_t start; + double timeElapsed; + + char *token; + char *context = NULL; + int announce = 0; + + HANDLE readPipe; + HANDLE writePipe; + STARTUPINFO sInfo; + PROCESS_INFORMATION pInfo; + SECURITY_ATTRIBUTES secattr; + + ZeroMemory (&secattr, sizeof (secattr)); + secattr.nLength = sizeof (secattr); + secattr.bInheritHandle = TRUE; + + timeElapsed = 0.0; + + if (strlen (word[2]) > 0) + { + strcpy (commandLine, "cmd.exe /c "); + + if (!stricmp("-O", word[2])) + { + strcat (commandLine, word_eol[3]); + announce = 1; + } + else + { + strcat (commandLine, word_eol[2]); + } + + CreatePipe (&readPipe, &writePipe, &secattr, 0); /* might be replaced with MyCreatePipeEx */ + + ZeroMemory (&sInfo, sizeof (sInfo)); + ZeroMemory (&pInfo, sizeof (pInfo)); + sInfo.cb = sizeof (sInfo); + sInfo.dwFlags = STARTF_USESTDHANDLES; + sInfo.hStdInput = NULL; + sInfo.hStdOutput = writePipe; + sInfo.hStdError = writePipe; + + CreateProcess (0, commandLine, 0, 0, TRUE, NORMAL_PRIORITY_CLASS | CREATE_NO_WINDOW, 0, 0, &sInfo, &pInfo); + CloseHandle (writePipe); + + start = time (0); + while (PeekNamedPipe (readPipe, buffer, 1, &dwRead, &dwAvail, &dwLeft) && timeElapsed < 10) + { + if (dwRead) + { + if (ReadFile (readPipe, buffer, sizeof (buffer) - 1, &dwRead, NULL) && dwRead != 0 ) + { + /* avoid garbage */ + buffer[dwRead] = '\0'; + + if (announce) + { + /* Say each line seperately, TODO: improve... */ + token = strtok_s (buffer, "\n", &context); + while (token != NULL) + { + hexchat_commandf (ph, "SAY %s", token); + token = strtok_s (NULL, "\n", &context); + } + } + else + hexchat_printf (ph, "%s", buffer); + } + } + else + { + /* this way we'll more likely get full lines */ + SleepEx (100, TRUE); + } + timeElapsed = difftime (time (0), start); + } + + /* display a newline to separate things */ + if (!announce) + hexchat_printf (ph, "\n"); + + if (timeElapsed >= 10) + { + hexchat_printf (ph, "Command took too much time to run, execution aborted.\n"); + } + + CloseHandle (readPipe); + CloseHandle (pInfo.hProcess); + CloseHandle (pInfo.hThread); + } + else + { + hexchat_command (ph, "help exec"); + } + + return HEXCHAT_EAT_HEXCHAT; +} + +int +hexchat_plugin_init (hexchat_plugin *plugin_handle, char **plugin_name, char **plugin_desc, char **plugin_version, char *arg) +{ + ph = plugin_handle; + + *plugin_name = name; + *plugin_desc = desc; + *plugin_version = version; + + hexchat_hook_command (ph, "EXEC", HEXCHAT_PRI_NORM, run_command, "Usage: /EXEC [-O] - execute commands inside HexChat", 0); + hexchat_printf (ph, "%s plugin loaded\n", name); + + return 1; /* return 1 for success */ +} + +int +hexchat_plugin_deinit (void) +{ + hexchat_printf (ph, "%s plugin unloaded\n", name); + return 1; +} diff --git a/hexchat/plugins/exec/exec.def b/hexchat/plugins/exec/exec.def new file mode 100644 index 0000000..e560f50 --- /dev/null +++ b/hexchat/plugins/exec/exec.def @@ -0,0 +1,3 @@ +EXPORTS +hexchat_plugin_init +hexchat_plugin_deinit diff --git a/hexchat/plugins/exec/exec.vcxproj b/hexchat/plugins/exec/exec.vcxproj new file mode 100644 index 0000000..ceb1184 --- /dev/null +++ b/hexchat/plugins/exec/exec.vcxproj @@ -0,0 +1,55 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup Label="Configuration"> + <PlatformToolset>v142</PlatformToolset> + <ConfigurationType>DynamicLibrary</ConfigurationType> + </PropertyGroup> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{17E4BE39-76F7-4A06-AD21-EFD0C5091F76}</ProjectGuid> + <Keyword>Win32Proj</Keyword> + <RootNamespace>exec</RootNamespace> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + <Import Project="..\..\win32\hexchat.props" /> + <PropertyGroup> + <TargetName>hcexec</TargetName> + <OutDir>$(HexChatRel)plugins\</OutDir> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;EXEC_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>..\..\src\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <ModuleDefinitionFile>exec.def</ModuleDefinitionFile> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <ClCompile> + <PreprocessorDefinitions>WIN32;_WIN64;_AMD64_;NDEBUG;_WINDOWS;_USRDLL;EXEC_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>..\..\src\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <ModuleDefinitionFile>exec.def</ModuleDefinitionFile> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <None Include="exec.def" /> + </ItemGroup> + <ItemGroup> + <ClCompile Include="exec.c" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> +</Project> diff --git a/hexchat/plugins/exec/exec.vcxproj.filters b/hexchat/plugins/exec/exec.vcxproj.filters new file mode 100644 index 0000000..f800df9 --- /dev/null +++ b/hexchat/plugins/exec/exec.vcxproj.filters @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Source Files"> + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> + <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> + </Filter> + <Filter Include="Resource Files"> + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> + </Filter> + </ItemGroup> + <ItemGroup> + <None Include="exec.def"> + <Filter>Resource Files</Filter> + </None> + </ItemGroup> + <ItemGroup> + <ClCompile Include="exec.c"> + <Filter>Source Files</Filter> + </ClCompile> + </ItemGroup> +</Project> \ No newline at end of file diff --git a/hexchat/plugins/exec/meson.build b/hexchat/plugins/exec/meson.build new file mode 100644 index 0000000..782814d --- /dev/null +++ b/hexchat/plugins/exec/meson.build @@ -0,0 +1,6 @@ +shared_module('exec', 'exec.c', + dependencies: hexchat_plugin_dep, + install: true, + install_dir: plugindir, + vs_module_defs: 'exec.def', +) diff --git a/hexchat/plugins/fishlim/LICENSE b/hexchat/plugins/fishlim/LICENSE new file mode 100644 index 0000000..a3e0474 --- /dev/null +++ b/hexchat/plugins/fishlim/LICENSE @@ -0,0 +1,21 @@ + +Copyright (c) 2010-2011 Samuel Lidén Borell <samuel@kodafritt.se> + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + diff --git a/hexchat/plugins/fishlim/dh1080.c b/hexchat/plugins/fishlim/dh1080.c new file mode 100644 index 0000000..2bf6af7 --- /dev/null +++ b/hexchat/plugins/fishlim/dh1080.c @@ -0,0 +1,238 @@ +/* HexChat +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2 of the License, or +* (at your option) any later version. +* +* This program 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 General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA +*/ + +/* + * For Diffie-Hellman key-exchange a 1080bit germain prime is used, the + * generator g=2 renders a field Fp from 1 to p-1. Therefore breaking it + * means to solve a discrete logarithm problem with no less than 1080bit. + * + * Base64 format is used to send the public keys over IRC. + * + * The calculated secret key is hashed with SHA-256, the result is converted + * to base64 for final use with blowfish. + */ + +#include "config.h" +#include "dh1080.h" + +#include <openssl/bn.h> +#include <openssl/dh.h> +#include <openssl/sha.h> + +#include <string.h> +#include <glib.h> + +#define DH1080_PRIME_BITS 1080 +#define DH1080_PRIME_BYTES 135 +#define SHA256_DIGEST_LENGTH 32 +#define B64ABC "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" +#define MEMZERO(x) memset(x, 0x00, sizeof(x)) + +/* All clients must use the same prime number to be able to keyx */ +static const guchar prime1080[DH1080_PRIME_BYTES] = +{ + 0xFB, 0xE1, 0x02, 0x2E, 0x23, 0xD2, 0x13, 0xE8, 0xAC, 0xFA, 0x9A, 0xE8, 0xB9, 0xDF, 0xAD, 0xA3, 0xEA, + 0x6B, 0x7A, 0xC7, 0xA7, 0xB7, 0xE9, 0x5A, 0xB5, 0xEB, 0x2D, 0xF8, 0x58, 0x92, 0x1F, 0xEA, 0xDE, 0x95, + 0xE6, 0xAC, 0x7B, 0xE7, 0xDE, 0x6A, 0xDB, 0xAB, 0x8A, 0x78, 0x3E, 0x7A, 0xF7, 0xA7, 0xFA, 0x6A, 0x2B, + 0x7B, 0xEB, 0x1E, 0x72, 0xEA, 0xE2, 0xB7, 0x2F, 0x9F, 0xA2, 0xBF, 0xB2, 0xA2, 0xEF, 0xBE, 0xFA, 0xC8, + 0x68, 0xBA, 0xDB, 0x3E, 0x82, 0x8F, 0xA8, 0xBA, 0xDF, 0xAD, 0xA3, 0xE4, 0xCC, 0x1B, 0xE7, 0xE8, 0xAF, + 0xE8, 0x5E, 0x96, 0x98, 0xA7, 0x83, 0xEB, 0x68, 0xFA, 0x07, 0xA7, 0x7A, 0xB6, 0xAD, 0x7B, 0xEB, 0x61, + 0x8A, 0xCF, 0x9C, 0xA2, 0x89, 0x7E, 0xB2, 0x8A, 0x61, 0x89, 0xEF, 0xA0, 0x7A, 0xB9, 0x9A, 0x8A, 0x7F, + 0xA9, 0xAE, 0x29, 0x9E, 0xFA, 0x7B, 0xA6, 0x6D, 0xEA, 0xFE, 0xFB, 0xEF, 0xBF, 0x0B, 0x7D, 0x8B +}; + +static DH *g_dh; + +int +dh1080_init (void) +{ + g_return_val_if_fail (g_dh == NULL, 0); + + if ((g_dh = DH_new())) + { + int codes; + BIGNUM *p, *g; + + p = BN_bin2bn (prime1080, DH1080_PRIME_BYTES, NULL); + g = BN_new (); + + if (p == NULL || g == NULL) + return 1; + + BN_set_word (g, 2); + +#ifndef HAVE_DH_SET0_PQG + g_dh->p = p; + g_dh->g = g; +#else + if (!DH_set0_pqg (g_dh, p, NULL, g)) + return 1; +#endif + + if (DH_check (g_dh, &codes)) + return codes == 0; + } + + return 0; +} + +void +dh1080_deinit (void) +{ + g_clear_pointer (&g_dh, DH_free); +} + +static inline int +DH_verifyPubKey (BIGNUM *pk) +{ + int codes; + return DH_check_pub_key (g_dh, pk, &codes) && codes == 0; +} + +static guchar * +dh1080_decode_b64 (const char *data, gsize *out_len) +{ + GString *str = g_string_new (data); + guchar *ret; + + if (str->len % 4 == 1 && str->str[str->len - 1] == 'A') + g_string_truncate (str, str->len - 1); + + while (str->len % 4 != 0) + g_string_append_c (str, '='); + + ret = g_base64_decode_inplace (str->str, out_len); + g_string_free (str, FALSE); + return ret; +} + +static char * +dh1080_encode_b64 (const guchar *data, gsize data_len) +{ + char *ret = g_base64_encode (data, data_len); + char *p; + + if (!(p = strchr (ret, '='))) + { + char *new_ret = g_new(char, strlen(ret) + 2); + strcpy (new_ret, ret); + strcat (new_ret, "A"); + g_free (ret); + ret = new_ret; + } + else + { + *p = '\0'; + } + + return ret; +} + +int +dh1080_generate_key (char **priv_key, char **pub_key) +{ + guchar buf[DH1080_PRIME_BYTES]; + int len; + DH *dh; + const BIGNUM *dh_priv_key, *dh_pub_key; + + g_assert (priv_key != NULL); + g_assert (pub_key != NULL); + + dh = DHparams_dup (g_dh); + if (!dh) + return 0; + + if (!DH_generate_key (dh)) + { + DH_free (dh); + return 0; + } + +#ifndef HAVE_DH_GET0_KEY + dh_pub_key = dh->pub_key; + dh_priv_key = dh->priv_key; +#else + DH_get0_key (dh, &dh_pub_key, &dh_priv_key); +#endif + + MEMZERO (buf); + len = BN_bn2bin (dh_priv_key, buf); + *priv_key = dh1080_encode_b64 (buf, len); + + MEMZERO (buf); + len = BN_bn2bin (dh_pub_key, buf); + *pub_key = dh1080_encode_b64 (buf, len); + + OPENSSL_cleanse (buf, sizeof (buf)); + DH_free (dh); + return 1; +} + +int +dh1080_compute_key (const char *priv_key, const char *pub_key, char **secret_key) +{ + char *pub_key_data; + gsize pub_key_len; + BIGNUM *pk; + DH *dh; +#ifdef HAVE_DH_SET0_KEY + BIGNUM *temp_pub_key = BN_new(); +#endif + + g_assert (secret_key != NULL); + + /* Verify base64 strings */ + if (strspn (priv_key, B64ABC) != strlen (priv_key) + || strspn (pub_key, B64ABC) != strlen (pub_key)) + return 0; + + dh = DHparams_dup (g_dh); + + pub_key_data = dh1080_decode_b64 (pub_key, &pub_key_len); + pk = BN_bin2bn (pub_key_data, pub_key_len, NULL); + + if (DH_verifyPubKey (pk)) + { + guchar shared_key[DH1080_PRIME_BYTES] = { 0 }; + guchar sha256[SHA256_DIGEST_LENGTH] = { 0 }; + char *priv_key_data; + gsize priv_key_len; + int shared_len; + BIGNUM *priv_key_num; + + priv_key_data = dh1080_decode_b64 (priv_key, &priv_key_len); + priv_key_num = BN_bin2bn(priv_key_data, priv_key_len, NULL); +#ifndef HAVE_DH_SET0_KEY + dh->priv_key = priv_key_num; +#else + DH_set0_key (dh, temp_pub_key, priv_key_num); +#endif + + shared_len = DH_compute_key (shared_key, pk, dh); + SHA256(shared_key, shared_len, sha256); + *secret_key = dh1080_encode_b64 (sha256, sizeof(sha256)); + + OPENSSL_cleanse (priv_key_data, priv_key_len); + g_free (priv_key_data); + } + + BN_free (pk); + DH_free (dh); + g_free (pub_key_data); + return 1; +} diff --git a/hexchat/plugins/fishlim/dh1080.h b/hexchat/plugins/fishlim/dh1080.h new file mode 100644 index 0000000..7566218 --- /dev/null +++ b/hexchat/plugins/fishlim/dh1080.h @@ -0,0 +1,24 @@ +/* HexChat +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2 of the License, or +* (at your option) any later version. +* +* This program 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 General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA +*/ + +#pragma once + +int dh1080_generate_key (char **, char **); +int dh1080_compute_key (const char *, const char *, char **); +int dh1080_init (void); +void dh1080_deinit (void); + diff --git a/hexchat/plugins/fishlim/fish.c b/hexchat/plugins/fishlim/fish.c new file mode 100644 index 0000000..0b24ed4 --- /dev/null +++ b/hexchat/plugins/fishlim/fish.c @@ -0,0 +1,563 @@ +/* + + Copyright (c) 2010 Samuel Lidén Borell <samuel@kodafritt.se> + Copyright (c) 2019-2020 <bakasura@protonmail.ch> + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +#ifdef __APPLE__ +#define __AVAILABILITYMACROS__ +#define DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER +#endif + +#include <stdint.h> +#include <stdlib.h> +#include <string.h> +#include <openssl/evp.h> +#include <openssl/blowfish.h> +#include <openssl/rand.h> + +#include "keystore.h" +#include "fish.h" +#include "utils.h" + +#define IB 64 +/* rfc 2812; 512 - CR-LF = 510 */ +static const int MAX_COMMAND_LENGTH = 510; +static const char fish_base64[] = "./0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; +static const char base64_chars[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; +static const signed char fish_unbase64[256] = { + IB,IB,IB,IB,IB,IB,IB,IB, IB,IB,IB,IB,IB,IB,IB,IB, + IB,IB,IB,IB,IB,IB,IB,IB, IB,IB,IB,IB,IB,IB,IB,IB, +/* ! " # $ % & ' ( ) * + , - . / */ + IB,IB,IB,IB,IB,IB,IB,IB, IB,IB,IB,IB,IB,IB, 0, 1, +/* 0 1 2 3 4 5 6 7 8 9 : ; < = > ? */ + 2, 3, 4, 5, 6, 7, 8, 9, 10,11,IB,IB,IB,IB,IB,IB, +/* @ A B C D E F G H I J K L M N O */ + IB,38,39,40,41,42,43,44, 45,46,47,48,49,50,51,52, +/* P Q R S T U V W X Y Z [ \ ] ^ _*/ + 53,54,55,56,57,58,59,60, 61,62,63,IB,IB,IB,IB,IB, +/* ` a b c d e f g h i j k l m n o */ + IB,12,13,14,15,16,17,18, 19,20,21,22,23,24,25,26, +/* p q r s t u v w x y z { | } ~ <del> */ + 27,28,29,30,31,32,33,34, 35,36,37,IB,IB,IB,IB,IB, +}; + +/** + * Convert Int to 4 Bytes (Big-endian) + * + * @param int source + * @param char* dest + */ +#define GET_BYTES(dest, source) do { \ + *((dest)++) = ((source) >> 24) & 0xFF; \ + *((dest)++) = ((source) >> 16) & 0xFF; \ + *((dest)++) = ((source) >> 8) & 0xFF; \ + *((dest)++) = (source) & 0xFF; \ +} while (0); + +/** + * Convert 4 Bytes to Int (Big-endian) + * + * @param char* source + * @param int dest + */ +#define GET_LONG(dest, source) do { \ + dest = ((uint8_t)*((source)++) << 24); \ + dest |= ((uint8_t)*((source)++) << 16); \ + dest |= ((uint8_t)*((source)++) << 8); \ + dest |= (uint8_t)*((source)++); \ +} while (0); + +#if OPENSSL_VERSION_NUMBER >= 0x30000000L +#include <openssl/provider.h> +static OSSL_PROVIDER *legacy_provider; +static OSSL_PROVIDER *default_provider; +static OSSL_LIB_CTX *ossl_ctx; +#endif + +int fish_init(void) +{ +#if OPENSSL_VERSION_NUMBER >= 0x30000000L + ossl_ctx = OSSL_LIB_CTX_new(); + if (!ossl_ctx) + return 0; + + legacy_provider = OSSL_PROVIDER_load(ossl_ctx, "legacy"); + if (!legacy_provider) { + fish_deinit(); + return 0; + } + + default_provider = OSSL_PROVIDER_load(ossl_ctx, "default"); + if (!default_provider) { + fish_deinit(); + return 0; + } +#endif + return 1; +} + +void fish_deinit(void) +{ +#if OPENSSL_VERSION_NUMBER >= 0x30000000L + if (legacy_provider) { + OSSL_PROVIDER_unload(legacy_provider); + legacy_provider = NULL; + } + + if (default_provider) { + OSSL_PROVIDER_unload(default_provider); + default_provider = NULL; + } + + if (ossl_ctx) { + OSSL_LIB_CTX_free(ossl_ctx); + ossl_ctx = NULL; + } +#endif +} + +/** + * Encode ECB FiSH Base64 + * + * @param [in] message Bytes to encode + * @param [in] message_len Size of bytes to encode + * @return Array of char with encoded string + */ +char *fish_base64_encode(const char *message, size_t message_len) { + BF_LONG left = 0, right = 0; + int i; + size_t j; + char *encoded = NULL; + char *end = NULL; + char *msg = NULL; + + if (message_len == 0) + return NULL; + + /* Each 8-byte block becomes 12 bytes (fish base64 format) and add 1 byte for \0 */ + encoded = g_malloc(((message_len - 1) / 8) * 12 + 12 + 1); + end = encoded; + + /* Iterate over each 8-byte block (Blowfish block size) */ + for (j = 0; j < message_len; j += 8) { + msg = (char *) message; + + /* Set left and right longs */ + GET_LONG(left, msg); + GET_LONG(right, msg); + + for (i = 0; i < 6; ++i) { + *end++ = fish_base64[right & 0x3fu]; + right = (right >> 6u); + } + + for (i = 0; i < 6; ++i) { + *end++ = fish_base64[left & 0x3fu]; + left = (left >> 6u); + } + + /* The previous for'd ensure fill all bytes of encoded, we don't need will with zeros */ + message += 8; + } + + *end = '\0'; + return encoded; +} + +/** + * Decode ECB FiSH Base64 + * + * @param [in] message Base64 encoded string + * @param [out] final_len Real length of message + * @return Array of char with decoded message + */ +char *fish_base64_decode(const char *message, size_t *final_len) { + BF_LONG left, right; + int i; + char *bytes = NULL; + char *msg = NULL; + char *byt = NULL; + size_t message_len; + + message_len = strlen(message); + + /* Ensure blocks of 12 bytes each one and valid characters */ + if (message_len == 0 || message_len % 12 != 0 || strspn(message, fish_base64) != message_len) + return NULL; + + /* Each 12 bytes becomes 8-byte block and add 1 byte for \0 */ + *final_len = ((message_len - 1) / 12) * 8 + 8 + 1; + (*final_len)--; /* We support binary data */ + bytes = (char *) g_malloc0(*final_len); + byt = bytes; + + msg = (char *) message; + + while (*msg) { + right = 0; + left = 0; + for (i = 0; i < 6; i++) right |= (uint8_t) fish_unbase64[(int)*msg++] << (i * 6u); + for (i = 0; i < 6; i++) left |= (uint8_t) fish_unbase64[(int)*msg++] << (i * 6u); + GET_BYTES(byt, left); + GET_BYTES(byt, right); + } + + return bytes; +} + +/** + * Encrypt or decrypt data with Blowfish cipher, support binary data. + * + * Good documentation for EVP: + * + * - https://wiki.openssl.org/index.php/EVP_Symmetric_Encryption_and_Decryption + * + * - https://stackoverflow.com/questions/5727646/what-is-the-length-parameter-of-aes-evp-decrypt + * + * - https://stackoverflow.com/questions/26345175/correct-way-to-free-allocate-the-context-in-the-openssl + * + * - https://stackoverflow.com/questions/29874150/working-with-evp-and-openssl-coding-in-c + * + * @param [in] plaintext Bytes to encrypt or decrypt + * @param [in] plaintext_len Size of plaintext + * @param [in] key Bytes of key + * @param [in] keylen Size of key + * @param [in] encode 1 or encrypt 0 for decrypt + * @param [in] mode EVP_CIPH_ECB_MODE or EVP_CIPH_CBC_MODE + * @param [out] ciphertext_len The bytes written + * @return Array of char with data encrypted or decrypted + */ +char *fish_cipher(const char *plaintext, size_t plaintext_len, const char *key, size_t keylen, int encode, int mode, size_t *ciphertext_len) { + EVP_CIPHER_CTX *ctx; + EVP_CIPHER *cipher = NULL; + int bytes_written = 0; + unsigned char *ciphertext = NULL; + unsigned char *iv_ciphertext = NULL; + unsigned char *iv = NULL; + size_t block_size = 0; + + *ciphertext_len = 0; + + if (plaintext_len == 0 || keylen == 0 || encode < 0 || encode > 1) + return NULL; + + block_size = plaintext_len; + + if (mode == EVP_CIPH_CBC_MODE) { + if (encode == 1) { + iv = (unsigned char *) g_malloc0(8); + RAND_bytes(iv, 8); + } else { + if (plaintext_len <= 8) /* IV + DATA */ + return NULL; + + iv = (unsigned char *) plaintext; + block_size -= 8; + plaintext += 8; + plaintext_len -= 8; + } + +#if OPENSSL_VERSION_NUMBER >= 0x30000000L + cipher = EVP_CIPHER_fetch(ossl_ctx, "BF-CBC", NULL); +#else + cipher = (EVP_CIPHER *) EVP_bf_cbc(); +#endif + + } else if (mode == EVP_CIPH_ECB_MODE) { + +#if OPENSSL_VERSION_NUMBER >= 0x30000000L + cipher = EVP_CIPHER_fetch(ossl_ctx, "BF-ECB", NULL); +#else + cipher = (EVP_CIPHER *) EVP_bf_ecb(); +#endif + } + + /* Zero Padding */ + if (block_size % 8 != 0) { + block_size = block_size + 8 - (block_size % 8); + } + + ciphertext = (unsigned char *) g_malloc0(block_size); + memcpy(ciphertext, plaintext, plaintext_len); + + /* Create and initialise the context */ + if (!(ctx = EVP_CIPHER_CTX_new())) + return NULL; + + /* Initialise the cipher operation only with mode */ + if (!EVP_CipherInit_ex(ctx, cipher, NULL, NULL, NULL, encode)) + return NULL; + + /* Set custom key length */ + if (!EVP_CIPHER_CTX_set_key_length(ctx, keylen)) + return NULL; + + /* Finish the initiation the cipher operation */ + if (1 != EVP_CipherInit_ex(ctx, NULL, NULL, (const unsigned char *) key, iv, encode)) + return NULL; + + /* We will manage this */ + EVP_CIPHER_CTX_set_padding(ctx, 0); + + /* Do cipher operation */ + if (1 != EVP_CipherUpdate(ctx, ciphertext, &bytes_written, ciphertext, block_size)) + return NULL; + + *ciphertext_len = bytes_written; + + /* Finalise the cipher. Further ciphertext bytes may be written at this stage */ + if (1 != EVP_CipherFinal_ex(ctx, ciphertext + bytes_written, &bytes_written)) + return NULL; + + *ciphertext_len += bytes_written; + + /* Clean up */ + EVP_CIPHER_CTX_free(ctx); + + + if (mode == EVP_CIPH_CBC_MODE && encode == 1) { + /* Join IV + DATA */ + iv_ciphertext = g_malloc0(8 + *ciphertext_len); + + memcpy(iv_ciphertext, iv, 8); + memcpy(&iv_ciphertext[8], ciphertext, *ciphertext_len); + *ciphertext_len += 8; + + g_free(ciphertext); + g_free(iv); + + return (char *) iv_ciphertext; + } else { + return (char *) ciphertext; + } +} + +/** + * Return a fish or standard Base64 encoded string with data encrypted + * is binary safe + * + * @param [in] key Bytes of key + * @param [in] keylen Size of key + * @param [in] message Bytes to encrypt + * @param [in] message_len Size of message + * @param [in] mode Chiper mode + * @return Array of char with data encrypted + */ +char *fish_encrypt(const char *key, size_t keylen, const char *message, size_t message_len, enum fish_mode mode) { + size_t ciphertext_len = 0; + char *ciphertext = NULL; + char *b64 = NULL; + + if (keylen == 0 || message_len == 0) + return NULL; + + ciphertext = fish_cipher(message, message_len, key, keylen, 1, mode, &ciphertext_len); + + if (ciphertext == NULL || ciphertext_len == 0) + return NULL; + + switch (mode) { + case FISH_CBC_MODE: + b64 = g_base64_encode((const unsigned char *) ciphertext, ciphertext_len); + break; + + case FISH_ECB_MODE: + b64 = fish_base64_encode((const char *) ciphertext, ciphertext_len); + } + + g_free(ciphertext); + + if (b64 == NULL) + return NULL; + + return b64; +} + +/** + * Return an array of bytes with data decrypted + * is binary safe + * + * @param [in] key Bytes of key + * @param [in] keylen Size of key + * @param [in] data Fish or standard Base64 encoded string + * @param [in] mode Chiper mode + * @param [out] final_len Length of returned array + * @return Array of char with data decrypted + */ +char *fish_decrypt(const char *key, size_t keylen, const char *data, enum fish_mode mode, size_t *final_len) { + size_t ciphertext_len = 0; + char *ciphertext = NULL; + char *plaintext = NULL; + + *final_len = 0; + + if (keylen == 0 || strlen(data) == 0) + return NULL; + + switch (mode) { + case FISH_CBC_MODE: + if (strspn(data, base64_chars) != strlen(data)) + return NULL; + ciphertext = (char *) g_base64_decode(data, &ciphertext_len); + break; + + case FISH_ECB_MODE: + ciphertext = fish_base64_decode(data, &ciphertext_len); + } + + if (ciphertext == NULL || ciphertext_len == 0) + return NULL; + + plaintext = fish_cipher(ciphertext, ciphertext_len, key, keylen, 0, mode, final_len); + g_free(ciphertext); + + if (*final_len == 0) + return NULL; + + return plaintext; +} + +/** + * Similar to fish_decrypt, but pad with zeros any after the first zero in the decrypted data + * + * @param [in] key Bytes of key + * @param [in] keylen Size of key + * @param [in] data Fish or standard Base64 encoded string + * @param [in] mode Chiper mode + * @return Array of char with data decrypted + */ +char *fish_decrypt_str(const char *key, size_t keylen, const char *data, enum fish_mode mode) { + char *decrypted = NULL; + char *plaintext_str = NULL; + size_t decrypted_len = 0; + + decrypted = fish_decrypt(key, strlen(key), data, mode, &decrypted_len); + + if (decrypted == NULL || decrypted_len == 0) + return NULL; + + plaintext_str = g_strndup(decrypted, decrypted_len); + g_free(decrypted); + + return plaintext_str; +} + +/** + * Determine if a nick have a key + * + * @param [in] nick Nickname + * @return TRUE if have a key or FALSE if not + */ +gboolean fish_nick_has_key(const char *nick) { + gboolean has_key = FALSE; + char *key; + enum fish_mode mode; + + key = keystore_get_key(nick, &mode); + if (key) { + has_key = TRUE; + g_free(key); + }; + + return has_key; +} + +/** + * Encrypts a message (see fish_encrypt). The key is searched for in the key store + * + * @param [in] nick Nickname + * @param [in] data Plaintext to encrypt + * @param [out] omode Mode of encryption + * @param [in] command_len Length of command to use without the message part + * @return A list of encoded strings with the message encrypted or NULL if any error occurred + */ +GSList *fish_encrypt_for_nick(const char *nick, const char *data, enum fish_mode *omode, size_t command_len) { + char *key; + GSList *encrypted_list = NULL; + char *encrypted = NULL; + enum fish_mode mode; + int max_len, max_chunks_len, chunks_len; + + /* Look for key */ + key = keystore_get_key(nick, &mode); + if (!key) return NULL; + + *omode = mode; + + /* Calculate max length of each line */ + max_len = MAX_COMMAND_LENGTH - command_len; + /* Add '*' */ + if (mode == FISH_CBC_MODE) max_len--; + + max_chunks_len = max_text_command_len(max_len, mode); + + const char *data_chunk = data; + + while(foreach_utf8_data_chunks(data_chunk, max_chunks_len, &chunks_len)) { + encrypted = fish_encrypt(key, strlen(key), data_chunk, chunks_len, mode); + + if (mode == FISH_CBC_MODE) { + /* Add '*' for CBC */ + encrypted_list = g_slist_append(encrypted_list, g_strdup_printf("*%s", encrypted)); + g_free(encrypted); + } else { + encrypted_list = g_slist_append(encrypted_list, encrypted); + } + + /* Next chunk */ + data_chunk += chunks_len; + } + + return encrypted_list; +} + +/** + * Decrypts a message (see fish_decrypt). The key is searched for in the key store + * + * @param [in] nick Nickname + * @param [in] data Plaintext to encrypt + * @param [out] omode Mode of encryption + * @return Plaintext message or NULL if any error occurred + */ +char *fish_decrypt_from_nick(const char *nick, const char *data, enum fish_mode *omode) { + char *key; + char *decrypted; + enum fish_mode mode; + + /* Look for key */ + key = keystore_get_key(nick, &mode); + if (!key) return NULL; + + *omode = mode; + + if (mode == FISH_CBC_MODE) + ++data; + + /* Decrypt */ + decrypted = fish_decrypt_str(key, strlen(key), data, mode); + g_free(key); + + return decrypted; +} + + diff --git a/hexchat/plugins/fishlim/fish.h b/hexchat/plugins/fishlim/fish.h new file mode 100644 index 0000000..7582906 --- /dev/null +++ b/hexchat/plugins/fishlim/fish.h @@ -0,0 +1,51 @@ +/* + + Copyright (c) 2010 Samuel Lidén Borell <samuel@kodafritt.se> + Copyright (c) 2019-2020 <bakasura@protonmail.ch> + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +#ifndef FISH_H +#define FISH_H + +#include <stddef.h> + +#include <glib.h> + +enum fish_mode { + FISH_ECB_MODE = 0x1, + FISH_CBC_MODE = 0x2 +}; + +int fish_init(void); +void fish_deinit(void); +char *fish_base64_encode(const char *message, size_t message_len); +char *fish_base64_decode(const char *message, size_t *final_len); +char *fish_encrypt(const char *key, size_t keylen, const char *message, size_t message_len, enum fish_mode mode); +char *fish_decrypt(const char *key, size_t keylen, const char *data, enum fish_mode mode, size_t *final_len); +char *fish_decrypt_str(const char *key, size_t keylen, const char *data, enum fish_mode mode); +gboolean fish_nick_has_key(const char *nick); +GSList *fish_encrypt_for_nick(const char *nick, const char *data, enum fish_mode *omode, size_t command_len); +char *fish_decrypt_from_nick(const char *nick, const char *data, enum fish_mode *omode); + +#endif + + diff --git a/hexchat/plugins/fishlim/fishlim.def b/hexchat/plugins/fishlim/fishlim.def new file mode 100644 index 0000000..6ce04e9 --- /dev/null +++ b/hexchat/plugins/fishlim/fishlim.def @@ -0,0 +1,4 @@ +EXPORTS +hexchat_plugin_init +hexchat_plugin_deinit +hexchat_plugin_get_info diff --git a/hexchat/plugins/fishlim/fishlim.vcxproj b/hexchat/plugins/fishlim/fishlim.vcxproj new file mode 100644 index 0000000..3661e1e --- /dev/null +++ b/hexchat/plugins/fishlim/fishlim.vcxproj @@ -0,0 +1,72 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup Label="Configuration"> + <PlatformToolset>v142</PlatformToolset> + <ConfigurationType>DynamicLibrary</ConfigurationType> + </PropertyGroup> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{3C4F42FC-292A-420B-B63D-C03DFBDD8E4E}</ProjectGuid> + <Keyword>Win32Proj</Keyword> + <RootNamespace>fishlim</RootNamespace> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + <Import Project="..\..\win32\hexchat.props" /> + <PropertyGroup> + <TargetName>hcfishlim</TargetName> + <OutDir>$(HexChatRel)plugins\</OutDir> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;FISHLIM_EXPORTS;HAVE_DH_SET0_PQG;HAVE_DH_GET0_KEY;HAVE_DH_SET0_KEY;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>$(DepsRoot)\include;$(Glib);..\..\src\common;$(HexChatLib);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <ModuleDefinitionFile>fishlim.def</ModuleDefinitionFile> + <AdditionalLibraryDirectories>$(DepsRoot)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + <AdditionalDependencies>$(DepLibs);%(AdditionalDependencies)</AdditionalDependencies> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <ClCompile> + <PreprocessorDefinitions>WIN32;_WIN64;_AMD64_;NDEBUG;_WINDOWS;_USRDLL;FISHLIM_EXPORTS;HAVE_DH_SET0_PQG;HAVE_DH_GET0_KEY;HAVE_DH_SET0_KEY;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>$(DepsRoot)\include;$(Glib);..\..\src\common;$(HexChatLib);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <ModuleDefinitionFile>fishlim.def</ModuleDefinitionFile> + <AdditionalLibraryDirectories>$(DepsRoot)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + <AdditionalDependencies>$(DepLibs);%(AdditionalDependencies)</AdditionalDependencies> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <None Include="fishlim.def" /> + </ItemGroup> + <ItemGroup> + <ClInclude Include="dh1080.h" /> + <ClInclude Include="fish.h" /> + <ClInclude Include="utils.h" /> + <ClInclude Include="irc.h" /> + <ClInclude Include="keystore.h" /> + <ClInclude Include="plugin_hexchat.h" /> + </ItemGroup> + <ItemGroup> + <ClCompile Include="dh1080.c" /> + <ClCompile Include="fish.c" /> + <ClCompile Include="utils.c" /> + <ClCompile Include="irc.c" /> + <ClCompile Include="keystore.c" /> + <ClCompile Include="plugin_hexchat.c" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> +</Project> diff --git a/hexchat/plugins/fishlim/fishlim.vcxproj.filters b/hexchat/plugins/fishlim/fishlim.vcxproj.filters new file mode 100644 index 0000000..ee4e855 --- /dev/null +++ b/hexchat/plugins/fishlim/fishlim.vcxproj.filters @@ -0,0 +1,65 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Source Files"> + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> + <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> + </Filter> + <Filter Include="Header Files"> + <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> + <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions> + </Filter> + <Filter Include="Resource Files"> + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> + </Filter> + </ItemGroup> + <ItemGroup> + <None Include="fishlim.def"> + <Filter>Resource Files</Filter> + </None> + </ItemGroup> + <ItemGroup> + <ClInclude Include="bool.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="dh1080.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="fish.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="utils.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="irc.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="keystore.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="plugin_hexchat.h"> + <Filter>Header Files</Filter> + </ClInclude> + </ItemGroup> + <ItemGroup> + <ClCompile Include="dh1080.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="fish.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="utils.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="irc.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="keystore.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="plugin_hexchat.c"> + <Filter>Source Files</Filter> + </ClCompile> + </ItemGroup> +</Project> \ No newline at end of file diff --git a/hexchat/plugins/fishlim/irc.c b/hexchat/plugins/fishlim/irc.c new file mode 100644 index 0000000..19b810e --- /dev/null +++ b/hexchat/plugins/fishlim/irc.c @@ -0,0 +1,82 @@ +/* + + Copyright (c) 2010 Samuel Lidén Borell <samuel@kodafritt.se> + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +#include "config.h" + +#include <glib.h> +#include "irc.h" + +/** + * Parses an IRC message. The words array should contain the message splitted + * at spaces. The prefix and command is extracted from the message, and + * parameters_offset is set to the index of the first parameter. + */ +gboolean irc_parse_message(const char *words[], + const char **prefix, const char **command, + size_t *parameters_offset) { + size_t w = 1; + if (prefix) *prefix = NULL; + if (command) *command = NULL; + + /* See if the message starts with a prefix (sender user) */ + if (words[w][0] == ':') { + if (prefix) *prefix = &words[w][1]; + w++; + } + + /* Check command */ + if (words[w][0] == '\0') return FALSE; + if (command) *command = words[w]; + w++; + + if (parameters_offset) + *parameters_offset = w; + + return TRUE; +} + + +/** + * Finds the nick part of a "IRC prefix", which can have any + * of the following forms: + * + * nick + * nick@host + * nick!ident + * nick!ident@host + */ +char *irc_prefix_get_nick(const char *prefix) { + const char *end; + size_t length; + + if (!prefix) return NULL; + + /* Find end of nick */ + end = prefix; + while (*end != '\0' && *end != '!' && *end != '@') end++; + + /* Allocate string */ + length = end - prefix; + return g_strndup (prefix, length); +} diff --git a/hexchat/plugins/fishlim/irc.h b/hexchat/plugins/fishlim/irc.h new file mode 100644 index 0000000..c564923 --- /dev/null +++ b/hexchat/plugins/fishlim/irc.h @@ -0,0 +1,38 @@ +/* + + Copyright (c) 2010 Samuel Lidén Borell <samuel@kodafritt.se> + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +#ifndef IRC_H +#define IRC_H + +#include <stddef.h> +#include <glib.h> + +gboolean irc_parse_message(const char *words[], + const char **prefix, const char **command, + size_t *parameters_offset); +char *irc_prefix_get_nick(const char *prefix); + +#endif + + diff --git a/hexchat/plugins/fishlim/keystore.c b/hexchat/plugins/fishlim/keystore.c new file mode 100644 index 0000000..adefc70 --- /dev/null +++ b/hexchat/plugins/fishlim/keystore.c @@ -0,0 +1,278 @@ +/* + + Copyright (c) 2010 Samuel Lidén Borell <samuel@kodafritt.se> + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +#include "config.h" + +#include <glib.h> +#include <stdlib.h> +#include <string.h> +#include "irc.h" +#include "fish.h" +#include "keystore.h" +#include "plugin_hexchat.h" + + +static char *keystore_password = NULL; + + +/** + * Opens the key store file: ~/.config/hexchat/addon_fishlim.conf + */ +static GKeyFile *getConfigFile(void) { + gchar *filename = get_config_filename(); + + GKeyFile *keyfile = g_key_file_new(); + g_key_file_load_from_file(keyfile, filename, + G_KEY_FILE_KEEP_COMMENTS | + G_KEY_FILE_KEEP_TRANSLATIONS, NULL); + + g_free(filename); + return keyfile; +} + + +/** + * Returns the key store password, or the default. + */ +static const char *get_keystore_password(void) { + return (keystore_password != NULL ? + keystore_password : + /* Silly default value... */ + "blowinikey"); +} + + +static char *escape_nickname(const char *nick) { + char *escaped = g_strdup(nick); + char *p = escaped; + + while (*p) { + if (*p == '[') + *p = '~'; + else if (*p == ']') + *p = '!'; + + ++p; + } + + return escaped; +} + +/** + * Gets a value for a nick/channel from addon_fishlim.conf. Unlike + * g_key_file_get_string, this function is case insensitive. + */ +static gchar *get_nick_value(GKeyFile *keyfile, const char *nick, const char *item) { + gchar **group; + gchar **groups = g_key_file_get_groups(keyfile, NULL); + gchar *result = NULL; + + for (group = groups; *group != NULL; group++) { + if (!irc_nick_cmp(*group, nick)) { + result = g_key_file_get_string(keyfile, *group, item, NULL); + break; + } + } + + g_strfreev(groups); + return result; +} + + +/** + * Extracts a key from the key store file. + */ +char *keystore_get_key(const char *nick, enum fish_mode *mode) { + GKeyFile *keyfile; + char *escaped_nick; + gchar *value, *key_mode; + int encrypted_mode; + char *password; + char *encrypted; + char *decrypted; + + /* Get the key */ + keyfile = getConfigFile(); + escaped_nick = escape_nickname(nick); + value = get_nick_value(keyfile, escaped_nick, "key"); + key_mode = get_nick_value(keyfile, escaped_nick, "mode"); + g_key_file_free(keyfile); + g_free(escaped_nick); + + /* Determine cipher mode */ + *mode = FISH_ECB_MODE; + if (key_mode) { + if (*key_mode == '1') + *mode = FISH_ECB_MODE; + else if (*key_mode == '2') + *mode = FISH_CBC_MODE; + g_free(key_mode); + } + + if (!value) + return NULL; + + if (strncmp(value, "+OK ", 4) == 0) { + /* Key is encrypted */ + encrypted = (char *) value; + encrypted += 4; + + encrypted_mode = FISH_ECB_MODE; + + if (*encrypted == '*') { + ++encrypted; + encrypted_mode = FISH_CBC_MODE; + } + + password = (char *) get_keystore_password(); + decrypted = fish_decrypt_str((const char *) password, strlen(password), (const char *) encrypted, encrypted_mode); + g_free(value); + return decrypted; + } else { + /* Key is stored in plaintext */ + return value; + } +} + +/** + * Deletes a nick and the associated key in the key store file. + */ +static gboolean delete_nick(GKeyFile *keyfile, const char *nick) { + gchar **group; + gchar **groups = g_key_file_get_groups(keyfile, NULL); + gboolean ok = FALSE; + + for (group = groups; *group != NULL; group++) { + if (!irc_nick_cmp(*group, nick)) { + ok = g_key_file_remove_group(keyfile, *group, NULL); + break; + } + } + + g_strfreev(groups); + return ok; +} + +#if !GLIB_CHECK_VERSION(2,40,0) +/** + * Writes the key store file to disk. + */ +static gboolean keyfile_save_to_file (GKeyFile *keyfile, char *filename) { + gboolean ok; + + /* Serialize */ + gsize file_length; + gchar *file_data = g_key_file_to_data(keyfile, &file_length, NULL); + if (!file_data) + return FALSE; + + /* Write to file */ + ok = g_file_set_contents (filename, file_data, file_length, NULL); + g_free(file_data); + return ok; +} +#endif + +/** + * Writes the key store file to disk. + */ +static gboolean save_keystore(GKeyFile *keyfile) { + char *filename; + gboolean ok; + + filename = get_config_filename(); +#if !GLIB_CHECK_VERSION(2,40,0) + ok = keyfile_save_to_file (keyfile, filename); +#else +G_GNUC_BEGIN_IGNORE_DEPRECATIONS /* Hide false positive */ + ok = g_key_file_save_to_file (keyfile, filename, NULL); +G_GNUC_END_IGNORE_DEPRECATIONS +#endif + g_free (filename); + + return ok; +} + +/** + * Sets a key in the key store file. + */ +gboolean keystore_store_key(const char *nick, const char *key, enum fish_mode mode) { + const char *password; + char *encrypted; + char *wrapped; + gboolean ok = FALSE; + GKeyFile *keyfile = getConfigFile(); + char *escaped_nick = escape_nickname(nick); + + /* Remove old key */ + delete_nick(keyfile, escaped_nick); + + /* Add new key */ + password = get_keystore_password(); + if (password) { + /* Encrypt the password */ + encrypted = fish_encrypt(password, strlen(password), key, strlen(key), FISH_CBC_MODE); + if (!encrypted) goto end; + + /* Prepend "+OK " */ + wrapped = g_strconcat("+OK *", encrypted, NULL); + g_free(encrypted); + + /* Store encrypted in file */ + g_key_file_set_string(keyfile, escaped_nick, "key", wrapped); + g_free(wrapped); + } else { + /* Store unencrypted in file */ + g_key_file_set_string(keyfile, escaped_nick, "key", key); + } + + /* Store cipher mode */ + g_key_file_set_integer(keyfile, escaped_nick, "mode", mode); + + /* Save key store file */ + ok = save_keystore(keyfile); + + end: + g_key_file_free(keyfile); + g_free(escaped_nick); + return ok; +} + +/** + * Deletes a nick from the key store. + */ +gboolean keystore_delete_nick(const char *nick) { + GKeyFile *keyfile = getConfigFile(); + char *escaped_nick = escape_nickname(nick); + + /* Delete entry */ + gboolean ok = delete_nick(keyfile, escaped_nick); + + /* Save */ + if (ok) save_keystore(keyfile); + + g_key_file_free(keyfile); + g_free(escaped_nick); + return ok; +} diff --git a/hexchat/plugins/fishlim/keystore.h b/hexchat/plugins/fishlim/keystore.h new file mode 100644 index 0000000..4af4669 --- /dev/null +++ b/hexchat/plugins/fishlim/keystore.h @@ -0,0 +1,38 @@ +/* + + Copyright (c) 2010 Samuel Lidén Borell <samuel@kodafritt.se> + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +#ifndef KEYSTORE_H +#define KEYSTORE_H + +#include <stddef.h> + +#include <glib.h> +#include "fish.h" + +char *keystore_get_key(const char *nick, enum fish_mode *mode); +gboolean keystore_store_key(const char *nick, const char *key, enum fish_mode mode); +gboolean keystore_delete_nick(const char *nick); + +#endif + diff --git a/hexchat/plugins/fishlim/meson.build b/hexchat/plugins/fishlim/meson.build new file mode 100644 index 0000000..232c9a3 --- /dev/null +++ b/hexchat/plugins/fishlim/meson.build @@ -0,0 +1,23 @@ +if not libssl_dep.found() + error('fish plugin requires openssl') +endif + +# Run tests +subdir('tests') + +fishlim_sources = [ + 'dh1080.c', + 'fish.c', + 'utils.c', + 'irc.c', + 'keystore.c', + 'plugin_hexchat.c' +] + +shared_module('fishlim', fishlim_sources, + dependencies: [libgio_dep, hexchat_plugin_dep, libssl_dep], + install: true, + install_dir: plugindir, + name_prefix: '', + vs_module_defs: 'fishlim.def', +) diff --git a/hexchat/plugins/fishlim/plugin_hexchat.c b/hexchat/plugins/fishlim/plugin_hexchat.c new file mode 100644 index 0000000..a8b127f --- /dev/null +++ b/hexchat/plugins/fishlim/plugin_hexchat.c @@ -0,0 +1,839 @@ +/* + + Copyright (c) 2010-2011 Samuel Lidén Borell <samuel@kodafritt.se> + Copyright (c) 2015 <the.cypher@gmail.com> + Copyright (c) 2019-2020 <bakasura@protonmail.ch> + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +#include "config.h" + +#include <glib.h> +#include <stdlib.h> +#include <string.h> +#include "hexchat-plugin.h" + +#include "fish.h" +#include "dh1080.h" +#include "keystore.h" +#include "irc.h" + +static const char *fish_modes[] = {"", "ECB", "CBC", NULL}; + +static const char plugin_name[] = "FiSHLiM"; +static const char plugin_desc[] = "Encryption plugin for the FiSH protocol. Less is More!"; +static const char plugin_version[] = "1.0.0"; + +static const char usage_setkey[] = "Usage: SETKEY [<nick or #channel>] [<mode>:]<password>, sets the key for a channel or nick. Modes: ECB, CBC"; +static const char usage_delkey[] = "Usage: DELKEY [<nick or #channel>], deletes the key for a channel or nick"; +static const char usage_keyx[] = "Usage: KEYX [<nick>], performs DH1080 key-exchange with <nick>"; +static const char usage_topic[] = "Usage: TOPIC+ <topic>, sets a new encrypted topic for the current channel"; +static const char usage_notice[] = "Usage: NOTICE+ <nick or #channel> <notice>"; +static const char usage_msg[] = "Usage: MSG+ <nick or #channel> <message>"; + + +static hexchat_plugin *ph; +static GHashTable *pending_exchanges; + + +/** + * Compare two nicks using the current plugin + */ +int irc_nick_cmp(const char *a, const char *b) { + return hexchat_nickcmp (ph, a, b); +} + +/** + * Returns the path to the key store file. + */ +gchar *get_config_filename(void) { + char *filename_fs, *filename_utf8; + + filename_utf8 = g_build_filename(hexchat_get_info(ph, "configdir"), "addon_fishlim.conf", NULL); + filename_fs = g_filename_from_utf8 (filename_utf8, -1, NULL, NULL, NULL); + + g_free (filename_utf8); + return filename_fs; +} + +static inline gboolean irc_is_query (const char *name) { + const char *chantypes = hexchat_list_str (ph, NULL, "chantypes"); + + return strchr (chantypes, name[0]) == NULL; +} + +static hexchat_context *find_context_on_network (const char *name) { + hexchat_list *channels; + hexchat_context *ret = NULL; + int id; + + if (hexchat_get_prefs(ph, "id", NULL, &id) != 2) + return NULL; + + channels = hexchat_list_get(ph, "channels"); + if (!channels) + return NULL; + + while (hexchat_list_next(ph, channels)) { + int chan_id = hexchat_list_int(ph, channels, "id"); + const char *chan_name = hexchat_list_str(ph, channels, "channel"); + + if (chan_id == id && chan_name && irc_nick_cmp (chan_name, name) == 0) { + ret = (hexchat_context*)hexchat_list_str(ph, channels, "context"); + break; + } + }; + + hexchat_list_free(ph, channels); + return ret; +} + +/** + * Retrive the field for own user in current context + * @return the field value + */ +char *get_my_info(const char *field, gboolean find_in_other_context) { + char *result = NULL; + const char *own_nick; + hexchat_list *list; + hexchat_context *ctx_current, *ctx_channel; + + /* Display message */ + own_nick = hexchat_get_info(ph, "nick"); + + if (!own_nick) + return NULL; + + /* Get field for own nick if any */ + list = hexchat_list_get(ph, "users"); + if (list) { + while (hexchat_list_next(ph, list)) { + if (irc_nick_cmp(own_nick, hexchat_list_str(ph, list, "nick")) == 0) + result = g_strdup(hexchat_list_str(ph, list, field)); + } + hexchat_list_free(ph, list); + } + + if (result) { + return result; + } + + /* Try to get from a channel (we are outside a channel) */ + if (!find_in_other_context) { + return NULL; + } + + list = hexchat_list_get(ph, "channels"); + if (list) { + ctx_current = hexchat_get_context(ph); + while (hexchat_list_next(ph, list)) { + ctx_channel = (hexchat_context *) hexchat_list_str(ph, list, "context"); + + hexchat_set_context(ph, ctx_channel); + result = get_my_info(field, FALSE); + hexchat_set_context(ph, ctx_current); + + if (result) { + break; + } + } + hexchat_list_free(ph, list); + } + + return result; +} + +/** + * Retrive the prefix character for own nick in current context + * @return @ or + or NULL + */ +char *get_my_own_prefix(void) { + return get_my_info("prefix", FALSE); +} + +/** + * Retrive the mask for own nick in current context + * @return Host name in the form: user@host (or NULL if not known) + */ +char *get_my_own_host(void) { + return get_my_info("host", TRUE); +} + +/** + * Calculate the length of prefix for current user in current context + * + * @return Length of prefix + */ +int get_prefix_length(void) { + char *own_host; + int prefix_len = 0; + + /* ':! ' + 'nick' + 'ident@host', e.g. ':user!~name@mynet.com ' */ + prefix_len = 3 + strlen(hexchat_get_info(ph, "nick")); + own_host = get_my_own_host(); + if (own_host) { + prefix_len += strlen(own_host); + } else { + /* https://stackoverflow.com/questions/8724954/what-is-the-maximum-number-of-characters-for-a-host-name-in-unix */ + prefix_len += 64; + } + g_free(own_host); + + return prefix_len; +} + +/** + * Try to decrypt the first occurrence of fish message + * + * @param message Message to decrypt + * @param key Key of message + * @return Array of char with decrypted message or NULL. The returned string + * should be freed with g_free() when no longer needed. + */ +char *decrypt_raw_message(const char *message, const char *key) { + const char *prefixes[] = {"+OK ", "mcps ", NULL}; + char *start = NULL, *end = NULL; + char *left = NULL, *right = NULL; + char *encrypted = NULL, *decrypted = NULL; + int length = 0; + int index_prefix; + enum fish_mode mode; + GString *message_decrypted; + char *result = NULL; + + if (message == NULL || key == NULL) + return NULL; + + for (index_prefix = 0; index_prefix < 2; index_prefix++) { + start = g_strstr_len(message, strlen(message), prefixes[index_prefix]); + if (start) { + /* Length ALWAYS will be less that original message + * add '[CBC] ' length */ + message_decrypted = g_string_sized_new(strlen(message) + 6); + + /* Left part of message */ + left = g_strndup(message, start - message); + g_string_append(message_decrypted, left); + g_free(left); + + /* Encrypted part */ + start += strlen(prefixes[index_prefix]); + end = g_strstr_len(start, strlen(message), " "); + if (end) { + length = end - start; + right = end; + } + + if (length > 0) { + encrypted = g_strndup(start, length); + } else { + encrypted = g_strdup(start); + } + decrypted = fish_decrypt_from_nick(key, encrypted, &mode); + g_free(encrypted); + + if (decrypted == NULL) { + g_string_free(message_decrypted, TRUE); + return NULL; + } + + /* Add encrypted flag */ + g_string_append(message_decrypted, "["); + g_string_append(message_decrypted, fish_modes[mode]); + g_string_append(message_decrypted, "] "); + /* Decrypted message */ + g_string_append(message_decrypted, decrypted); + g_free(decrypted); + + /* Right part of message */ + if (right) { + g_string_append(message_decrypted, right); + } + + result = message_decrypted->str; + g_string_free(message_decrypted, FALSE); + return result; + } + } + + return NULL; +} + +/*static int handle_debug(char *word[], char *word_eol[], void *userdata) { + hexchat_printf(ph, "debug incoming: "); + for (size_t i = 1; word[i] != NULL && word[i][0] != '\0'; i++) { + hexchat_printf(ph, ">%s< ", word[i]); + } + hexchat_printf(ph, "\n"); + return HEXCHAT_EAT_NONE; +}*/ + +/** + * Called when a message is to be sent. + */ +static int handle_outgoing(char *word[], char *word_eol[], void *userdata) { + char *prefix; + enum fish_mode mode; + char *message; + GString *command; + GSList *encrypted_list, *encrypted_item; + + const char *channel = hexchat_get_info(ph, "channel"); + + /* Check if we can encrypt */ + if (!fish_nick_has_key(channel)) return HEXCHAT_EAT_NONE; + + command = g_string_new(""); + g_string_printf(command, "PRIVMSG %s :+OK ", channel); + + encrypted_list = fish_encrypt_for_nick(channel, word_eol[1], &mode, get_prefix_length() + command->len); + if (!encrypted_list) { + g_string_free(command, TRUE); + return HEXCHAT_EAT_NONE; + } + + /* Get prefix for own nick if any */ + prefix = get_my_own_prefix(); + + /* Add encrypted flag */ + message = g_strconcat("[", fish_modes[mode], "] ", word_eol[1], NULL); + + /* Display message */ + hexchat_emit_print(ph, "Your Message", hexchat_get_info(ph, "nick"), message, prefix, NULL); + g_free(message); + + /* Send encrypted messages */ + encrypted_item = encrypted_list; + while (encrypted_item) + { + hexchat_commandf(ph, "%s%s", command->str, (char *)encrypted_item->data); + + encrypted_item = encrypted_item->next; + } + + g_free(prefix); + g_string_free(command, TRUE); + g_slist_free_full(encrypted_list, g_free); + + return HEXCHAT_EAT_HEXCHAT; +} + +/** + * Called when a channel message or private message is received. + */ +static int handle_incoming(char *word[], char *word_eol[], hexchat_event_attrs *attrs, void *userdata) { + const char *prefix; + const char *command; + const char *recipient; + const char *raw_message = word_eol[1]; + char *sender_nick; + char *decrypted; + size_t parameters_offset; + GString *message; + + if (!irc_parse_message((const char **)word, &prefix, &command, ¶meters_offset)) + return HEXCHAT_EAT_NONE; + + /* Topic (command 332) has an extra parameter */ + if (!strcmp(command, "332")) + parameters_offset++; + + /* Extract sender nick and recipient nick/channel and try to decrypt */ + recipient = word[parameters_offset]; + decrypted = decrypt_raw_message(raw_message, recipient); + if (decrypted == NULL) { + sender_nick = irc_prefix_get_nick(prefix); + decrypted = decrypt_raw_message(raw_message, sender_nick); + g_free(sender_nick); + } + + /* Nothing to decrypt */ + if (decrypted == NULL) + return HEXCHAT_EAT_NONE; + + /* Build decrypted message */ + + /* decrypted + 'RECV ' + '@time=YYYY-MM-DDTHH:MM:SS.fffffZ ' */ + message = g_string_sized_new (strlen(decrypted) + 5 + 33); + g_string_append (message, "RECV "); + + if (attrs->server_time_utc) + { + GTimeVal tv = { (glong)attrs->server_time_utc, 0 }; + char *timestamp = g_time_val_to_iso8601 (&tv); + + g_string_append (message, "@time="); + g_string_append (message, timestamp); + g_string_append (message, " "); + g_free (timestamp); + } + + g_string_append (message, decrypted); + g_free(decrypted); + + /* Fake server message + * RECV command will throw this function again, if message have multiple + * encrypted data, we will decrypt all */ + hexchat_command(ph, message->str); + g_string_free (message, TRUE); + + return HEXCHAT_EAT_HEXCHAT; +} + +static int handle_keyx_notice(char *word[], char *word_eol[], void *userdata) { + const char *dh_message = word[4]; + const char *dh_pubkey = word[5]; + hexchat_context *query_ctx; + const char *prefix; + char *sender, *secret_key, *priv_key = NULL; + enum fish_mode mode = FISH_ECB_MODE; + + if (!*dh_message || !*dh_pubkey || strlen(dh_pubkey) != 181) + return HEXCHAT_EAT_NONE; + + if (!irc_parse_message((const char**)word, &prefix, NULL, NULL) || !prefix) + return HEXCHAT_EAT_NONE; + + sender = irc_prefix_get_nick(prefix); + query_ctx = find_context_on_network(sender); + if (query_ctx) + g_assert(hexchat_set_context(ph, query_ctx) == 1); + + dh_message++; /* : prefix */ + + if (g_strcmp0 (word[6], "CBC") == 0) + mode = FISH_CBC_MODE; + + if (!strcmp(dh_message, "DH1080_INIT")) { + char *pub_key; + + hexchat_printf(ph, "Received public key from %s (%s), sending mine...", sender, fish_modes[mode]); + if (dh1080_generate_key(&priv_key, &pub_key)) { + hexchat_commandf(ph, "quote NOTICE %s :DH1080_FINISH %s%s", sender, pub_key, (mode == FISH_CBC_MODE) ? " CBC" : ""); + g_free(pub_key); + } else { + hexchat_print(ph, "Failed to generate keys"); + goto cleanup; + } + } else if (!strcmp (dh_message, "DH1080_FINISH")) { + char *sender_lower = g_ascii_strdown(sender, -1); + /* FIXME: Properly respect irc casing */ + priv_key = g_hash_table_lookup(pending_exchanges, sender_lower); + g_hash_table_steal(pending_exchanges, sender_lower); + g_free(sender_lower); + + if (!priv_key) { + hexchat_printf(ph, "Received a key exchange response for unknown user: %s", sender); + goto cleanup; + } + } else { + /* Regular notice */ + g_free(sender); + return HEXCHAT_EAT_NONE; + } + + if (dh1080_compute_key(priv_key, dh_pubkey, &secret_key)) { + keystore_store_key(sender, secret_key, mode); + hexchat_printf(ph, "Stored new key for %s (%s)", sender, fish_modes[mode]); + g_free(secret_key); + } else { + hexchat_print(ph, "Failed to create secret key!"); + } + +cleanup: + g_free(sender); + g_free(priv_key); + return HEXCHAT_EAT_ALL; +} + +/** + * Command handler for /setkey + */ +static int handle_setkey(char *word[], char *word_eol[], void *userdata) { + const char *nick; + const char *key; + enum fish_mode mode; + + /* Check syntax */ + if (*word[2] == '\0') { + hexchat_printf(ph, "%s\n", usage_setkey); + return HEXCHAT_EAT_HEXCHAT; + } + + if (*word[3] == '\0') { + /* /setkey password */ + nick = hexchat_get_info(ph, "channel"); + key = word_eol[2]; + } else { + /* /setkey #channel password */ + nick = word[2]; + key = word_eol[3]; + } + + mode = FISH_ECB_MODE; + if (g_ascii_strncasecmp("cbc:", key, 4) == 0) { + key = key+4; + mode = FISH_CBC_MODE; + } else if (g_ascii_strncasecmp("ecb:", key, 4) == 0) { + key = key+4; + } + + /* Set password */ + if (keystore_store_key(nick, key, mode)) { + hexchat_printf(ph, "Stored key for %s (%s)\n", nick, fish_modes[mode]); + } else { + hexchat_printf(ph, "\00305Failed to store key in addon_fishlim.conf\n"); + } + + return HEXCHAT_EAT_HEXCHAT; +} + +/** + * Command handler for /delkey + */ +static int handle_delkey(char *word[], char *word_eol[], void *userdata) { + char *nick = NULL; + int ctx_type = 0; + + /* Delete key from input */ + if (*word[2] != '\0') { + nick = g_strstrip(g_strdup(word_eol[2])); + } else { /* Delete key from current context */ + nick = g_strdup(hexchat_get_info(ph, "channel")); + ctx_type = hexchat_list_int(ph, NULL, "type"); + + /* Only allow channel or dialog */ + if (ctx_type < 2 || ctx_type > 3) { + hexchat_printf(ph, "%s\n", usage_delkey); + return HEXCHAT_EAT_HEXCHAT; + } + } + + /* Delete the given nick from the key store */ + if (keystore_delete_nick(nick)) { + hexchat_printf(ph, "Deleted key for %s\n", nick); + } else { + hexchat_printf(ph, "\00305Failed to delete key in addon_fishlim.conf!\n"); + } + g_free(nick); + + return HEXCHAT_EAT_HEXCHAT; +} + +static int handle_keyx(char *word[], char *word_eol[], void *userdata) { + const char *target = word[2]; + hexchat_context *query_ctx = NULL; + char *pub_key, *priv_key; + int ctx_type; + + if (*target) + query_ctx = find_context_on_network(target); + else { + target = hexchat_get_info(ph, "channel"); + query_ctx = hexchat_get_context (ph); + } + + if (query_ctx) { + g_assert(hexchat_set_context(ph, query_ctx) == 1); + ctx_type = hexchat_list_int(ph, NULL, "type"); + } + + if ((query_ctx && ctx_type != 3) || (!query_ctx && !irc_is_query(target))) { + hexchat_print(ph, "You can only exchange keys with individuals"); + return HEXCHAT_EAT_ALL; + } + + if (dh1080_generate_key(&priv_key, &pub_key)) { + g_hash_table_replace (pending_exchanges, g_ascii_strdown(target, -1), priv_key); + + hexchat_commandf(ph, "quote NOTICE %s :DH1080_INIT %s CBC", target, pub_key); + hexchat_printf(ph, "Sent public key to %s (CBC), waiting for reply...", target); + + g_free(pub_key); + } else { + hexchat_print(ph, "Failed to generate keys"); + } + + return HEXCHAT_EAT_ALL; +} + +/** + * Command handler for /topic+ + */ +static int handle_crypt_topic(char *word[], char *word_eol[], void *userdata) { + const char *target; + const char *topic = word_eol[2]; + enum fish_mode mode; + GString *command; + GSList *encrypted_list; + + if (!*topic) { + hexchat_print(ph, usage_topic); + return HEXCHAT_EAT_ALL; + } + + if (hexchat_list_int(ph, NULL, "type") != 2) { + hexchat_printf(ph, "Please change to the channel window where you want to set the topic!"); + return HEXCHAT_EAT_ALL; + } + + target = hexchat_get_info(ph, "channel"); + + /* Check if we can encrypt */ + if (!fish_nick_has_key(target)) { + hexchat_printf(ph, "/topic+ error, no key found for %s", target); + return HEXCHAT_EAT_ALL; + } + + command = g_string_new(""); + g_string_printf(command, "TOPIC %s +OK ", target); + + encrypted_list = fish_encrypt_for_nick(target, topic, &mode, get_prefix_length() + command->len); + if (!encrypted_list) { + g_string_free(command, TRUE); + hexchat_printf(ph, "/topic+ error, can't encrypt %s", target); + return HEXCHAT_EAT_ALL; + } + + hexchat_commandf(ph, "%s%s", command->str, (char *) encrypted_list->data); + + g_string_free(command, TRUE); + g_slist_free_full(encrypted_list, g_free); + + return HEXCHAT_EAT_ALL; +} + +/** + * Command handler for /notice+ + */ +static int handle_crypt_notice(char *word[], char *word_eol[], void *userdata) { + const char *target = word[2]; + const char *notice = word_eol[3]; + char *notice_flag; + enum fish_mode mode; + GString *command; + GSList *encrypted_list, *encrypted_item; + + if (!*target || !*notice) { + hexchat_print(ph, usage_notice); + return HEXCHAT_EAT_ALL; + } + + /* Check if we can encrypt */ + if (!fish_nick_has_key(target)) { + hexchat_printf(ph, "/notice+ error, no key found for %s.", target); + return HEXCHAT_EAT_ALL; + } + + command = g_string_new(""); + g_string_printf(command, "quote NOTICE %s :+OK ", target); + + encrypted_list = fish_encrypt_for_nick(target, notice, &mode, get_prefix_length() + command->len); + if (!encrypted_list) { + g_string_free(command, TRUE); + hexchat_printf(ph, "/notice+ error, can't encrypt %s", target); + return HEXCHAT_EAT_ALL; + } + + notice_flag = g_strconcat("[", fish_modes[mode], "] ", notice, NULL); + hexchat_emit_print(ph, "Notice Send", target, notice_flag); + + /* Send encrypted messages */ + encrypted_item = encrypted_list; + while (encrypted_item) { + hexchat_commandf(ph, "%s%s", command->str, (char *) encrypted_item->data); + + encrypted_item = encrypted_item->next; + } + + g_free(notice_flag); + g_string_free(command, TRUE); + g_slist_free_full(encrypted_list, g_free); + + return HEXCHAT_EAT_ALL; +} + +/** + * Command handler for /msg+ + */ +static int handle_crypt_msg(char *word[], char *word_eol[], void *userdata) { + const char *target = word[2]; + const char *message = word_eol[3]; + char *message_flag; + char *prefix; + hexchat_context *query_ctx; + enum fish_mode mode; + GString *command; + GSList *encrypted_list, *encrypted_item; + + if (!*target || !*message) { + hexchat_print(ph, usage_msg); + return HEXCHAT_EAT_ALL; + } + + /* Check if we can encrypt */ + if (!fish_nick_has_key(target)) { + hexchat_printf(ph, "/msg+ error, no key found for %s", target); + return HEXCHAT_EAT_ALL; + } + + command = g_string_new(""); + g_string_printf(command, "PRIVMSG %s :+OK ", target); + + encrypted_list = fish_encrypt_for_nick(target, message, &mode, get_prefix_length() + command->len); + if (!encrypted_list) { + g_string_free(command, TRUE); + hexchat_printf(ph, "/msg+ error, can't encrypt %s", target); + return HEXCHAT_EAT_ALL; + } + + /* Send encrypted messages */ + encrypted_item = encrypted_list; + while (encrypted_item) { + hexchat_commandf(ph, "%s%s", command->str, (char *) encrypted_item->data); + + encrypted_item = encrypted_item->next; + } + + g_string_free(command, TRUE); + g_slist_free_full(encrypted_list, g_free); + + query_ctx = find_context_on_network(target); + if (query_ctx) { + g_assert(hexchat_set_context(ph, query_ctx) == 1); + + prefix = get_my_own_prefix(); + + /* Add encrypted flag */ + message_flag = g_strconcat("[", fish_modes[mode], "] ", message, NULL); + hexchat_emit_print(ph, "Your Message", hexchat_get_info(ph, "nick"), message_flag, prefix, NULL); + g_free(prefix); + g_free(message_flag); + } else { + hexchat_emit_print(ph, "Message Send", target, message); + } + + return HEXCHAT_EAT_ALL; +} + +static int handle_crypt_me(char *word[], char *word_eol[], void *userdata) { + const char *channel = hexchat_get_info(ph, "channel"); + enum fish_mode mode; + GString *command; + GSList *encrypted_list, *encrypted_item; + + /* Check if we can encrypt */ + if (!fish_nick_has_key(channel)) { + return HEXCHAT_EAT_NONE; + } + + command = g_string_new(""); + g_string_printf(command, "PRIVMSG %s :\001ACTION +OK ", channel); + + /* 2 = ' \001' */ + encrypted_list = fish_encrypt_for_nick(channel, word_eol[2], &mode, get_prefix_length() + command->len + 2); + if (!encrypted_list) { + g_string_free(command, TRUE); + hexchat_printf(ph, "/me error, can't encrypt %s", channel); + return HEXCHAT_EAT_ALL; + } + + hexchat_emit_print(ph, "Your Action", hexchat_get_info(ph, "nick"), word_eol[2], NULL); + + /* Send encrypted messages */ + encrypted_item = encrypted_list; + while (encrypted_item) { + hexchat_commandf(ph, "%s%s \001", command->str, (char *) encrypted_item->data); + + encrypted_item = encrypted_item->next; + } + + g_string_free(command, TRUE); + g_slist_free_full(encrypted_list, g_free); + + return HEXCHAT_EAT_ALL; +} + +/** + * Returns the plugin name version information. + */ +void hexchat_plugin_get_info(const char **name, const char **desc, + const char **version, void **reserved) { + *name = plugin_name; + *desc = plugin_desc; + *version = plugin_version; +} + +/** + * Plugin entry point. + */ +int hexchat_plugin_init(hexchat_plugin *plugin_handle, + const char **name, + const char **desc, + const char **version, + char *arg) { + ph = plugin_handle; + + /* Send our info to HexChat */ + *name = plugin_name; + *desc = plugin_desc; + *version = plugin_version; + + /* Register commands */ + hexchat_hook_command(ph, "SETKEY", HEXCHAT_PRI_NORM, handle_setkey, usage_setkey, NULL); + hexchat_hook_command(ph, "DELKEY", HEXCHAT_PRI_NORM, handle_delkey, usage_delkey, NULL); + hexchat_hook_command(ph, "KEYX", HEXCHAT_PRI_NORM, handle_keyx, usage_keyx, NULL); + hexchat_hook_command(ph, "TOPIC+", HEXCHAT_PRI_NORM, handle_crypt_topic, usage_topic, NULL); + hexchat_hook_command(ph, "NOTICE+", HEXCHAT_PRI_NORM, handle_crypt_notice, usage_notice, NULL); + hexchat_hook_command(ph, "MSG+", HEXCHAT_PRI_NORM, handle_crypt_msg, usage_msg, NULL); + hexchat_hook_command(ph, "ME", HEXCHAT_PRI_NORM, handle_crypt_me, NULL, NULL); + + /* Add handlers */ + hexchat_hook_command(ph, "", HEXCHAT_PRI_NORM, handle_outgoing, NULL, NULL); + hexchat_hook_server(ph, "NOTICE", HEXCHAT_PRI_HIGHEST, handle_keyx_notice, NULL); + hexchat_hook_server_attrs(ph, "NOTICE", HEXCHAT_PRI_NORM, handle_incoming, NULL); + hexchat_hook_server_attrs(ph, "PRIVMSG", HEXCHAT_PRI_NORM, handle_incoming, NULL); + /* hexchat_hook_server(ph, "RAW LINE", HEXCHAT_PRI_NORM, handle_debug, NULL); */ + hexchat_hook_server_attrs(ph, "TOPIC", HEXCHAT_PRI_NORM, handle_incoming, NULL); + hexchat_hook_server_attrs(ph, "332", HEXCHAT_PRI_NORM, handle_incoming, NULL); + + if (!fish_init()) + return 0; + + if (!dh1080_init()) + return 0; + + pending_exchanges = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); + + hexchat_printf(ph, "%s plugin loaded\n", plugin_name); + /* Return success */ + return 1; +} + +int hexchat_plugin_deinit(void) { + g_clear_pointer(&pending_exchanges, g_hash_table_destroy); + dh1080_deinit(); + fish_deinit(); + + hexchat_printf(ph, "%s plugin unloaded\n", plugin_name); + return 1; +} + diff --git a/hexchat/plugins/fishlim/plugin_hexchat.h b/hexchat/plugins/fishlim/plugin_hexchat.h new file mode 100644 index 0000000..d619d23 --- /dev/null +++ b/hexchat/plugins/fishlim/plugin_hexchat.h @@ -0,0 +1,32 @@ +/* + + Copyright (c) 2010 Samuel Lidén Borell <samuel@kodafritt.se> + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +#ifndef PLUGIN_HEXCHAT_H +#define PLUGIN_HEXCHAT_H + +gchar *get_config_filename(void); +int irc_nick_cmp (const char *, const char *); + +#endif + diff --git a/hexchat/plugins/fishlim/tests/meson.build b/hexchat/plugins/fishlim/tests/meson.build new file mode 100644 index 0000000..1a0394a --- /dev/null +++ b/hexchat/plugins/fishlim/tests/meson.build @@ -0,0 +1,16 @@ +fishlim_test_sources = [ + 'tests.c', + 'mock-keystore.c', + '../fish.c', + '../utils.c', +] + +fishlim_tests = executable('fishlim_tests', fishlim_test_sources, + dependencies: [libgio_dep, libssl_dep, hexchat_plugin_dep], + include_directories: include_directories('..'), +) + +test('Fishlim Tests', fishlim_tests, + protocol: 'tap', + timeout: 600, +) diff --git a/hexchat/plugins/fishlim/tests/mock-keystore.c b/hexchat/plugins/fishlim/tests/mock-keystore.c new file mode 100644 index 0000000..57a9884 --- /dev/null +++ b/hexchat/plugins/fishlim/tests/mock-keystore.c @@ -0,0 +1,51 @@ +/* + Copyright (c) 2010 Samuel Lidén Borell <samuel@kodafritt.se> + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +#include "fish.h" + +/** + * Extracts a key from the key store file. + */ +char * +keystore_get_key(const char *nick, enum fish_mode *mode) +{ + return NULL; +} + +/** + * Sets a key in the key store file. + */ +gboolean +keystore_store_key(const char *nick, const char *key, enum fish_mode mode) +{ + return TRUE; +} + +/** + * Deletes a nick from the key store. + */ +gboolean +keystore_delete_nick(const char *nick) +{ + return TRUE; +} diff --git a/hexchat/plugins/fishlim/tests/tests.c b/hexchat/plugins/fishlim/tests/tests.c new file mode 100644 index 0000000..553816d --- /dev/null +++ b/hexchat/plugins/fishlim/tests/tests.c @@ -0,0 +1,285 @@ +/* + Copyright (c) 2020 <bakasura@protonmail.ch> + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +#include <string.h> +#include <glib.h> + +#include "fish.h" +#include "utils.h" + +/** + * Auxiliary function: Generate a random string + * @param out Preallocated string to fill + * @param len Size of bytes to fill + */ +static void +random_string(char *out, size_t len) +{ + GRand *rand = NULL; + size_t i = 0; + + rand = g_rand_new(); + for (i = 0; i < len; ++i) { + out[i] = g_rand_int_range(rand, 1, 256); + } + + out[len] = 0; + + g_rand_free(rand); +} + +/** + * Check encrypt and decrypt in ECB mode + */ +static void +test_ecb(void) +{ + char *b64 = NULL; + char *de = NULL; + int key_len, message_len = 0; + char key[57]; + char message[1000]; + + /* Generate key 32–448 bits (Yes, I start with 8 bits) */ + for (key_len = 1; key_len < 57; ++key_len) { + + random_string(key, key_len); + + for (message_len = 1; message_len < 1000; ++message_len) { + random_string(message, message_len); + + /* Encrypt */ + b64 = fish_encrypt(key, key_len, message, message_len, FISH_ECB_MODE); + g_assert_nonnull(b64); + + /* Decrypt */ + /* Linear */ + de = fish_decrypt_str(key, key_len, b64, FISH_ECB_MODE); + g_assert_cmpstr (de, ==, message); + g_free(de); + + /* Mixed */ + de = fish_decrypt_str(key, key_len, b64, FISH_ECB_MODE); + g_assert_cmpstr (de, ==, message); + g_free(de); + + g_free(b64); + } + } +} + +/** + * Check encrypt and decrypt in CBC mode + */ +static void +test_cbc(void) +{ + char *b64 = NULL; + char *de = NULL; + int key_len, message_len = 0; + char key[57]; + char message[1000]; + + /* Generate key 32–448 bits (Yes, I start with 8 bits) */ + for (key_len = 1; key_len < 57; ++key_len) { + + random_string(key, key_len); + + for (message_len = 1; message_len < 1000; ++message_len) { + random_string(message, message_len); + + /* Encrypt */ + b64 = fish_encrypt(key, key_len, message, message_len, FISH_CBC_MODE); + g_assert_nonnull(b64); + + /* Decrypt */ + /* Linear */ + de = fish_decrypt_str(key, key_len, b64, FISH_CBC_MODE); + g_assert_cmpstr (de, ==, message); + g_free(de); + + g_free(b64); + } + } +} + +/** + * Check the calculation of final length from an encoded string in Base64 + */ +static void +test_base64_len (void) +{ + char *b64 = NULL; + char message[1000]; + int message_end = sizeof (message) - 1; + + random_string(message, message_end); + + for (; message_end >= 0; --message_end) { + message[message_end] = '\0'; /* Truncate instead of generating new strings */ + b64 = g_base64_encode((const unsigned char *) message, message_end); + g_assert_nonnull(b64); + g_assert_cmpuint(strlen(b64), == , base64_len(message_end)); + g_free(b64); + } +} + +/** + * Check the calculation of final length from an encoded string in BlowcryptBase64 + */ +static void +test_base64_fish_len (void) +{ + char *b64 = NULL; + int message_len = 0; + char message[1000]; + + for (message_len = 1; message_len < 1000; ++message_len) { + random_string(message, message_len); + b64 = fish_base64_encode(message, message_len); + g_assert_nonnull(b64); + g_assert_cmpuint(strlen(b64), == , base64_fish_len(message_len)); + g_free(b64); + } +} + +/** + * Check the calculation of final length from an encrypted string in ECB mode + */ +static void +test_base64_ecb_len(void) +{ + char *b64 = NULL; + int key_len, message_len = 0; + char key[57]; + char message[1000]; + + /* Generate key 32–448 bits (Yes, I start with 8 bits) */ + for (key_len = 1; key_len < 57; ++key_len) { + + random_string(key, key_len); + + for (message_len = 1; message_len < 1000; ++message_len) { + random_string(message, message_len); + b64 = fish_encrypt(key, key_len, message, message_len, FISH_ECB_MODE); + g_assert_nonnull(b64); + g_assert_cmpuint(strlen(b64), == , ecb_len(message_len)); + g_free(b64); + } + } +} + +/** + * Check the calculation of final length from an encrypted string in CBC mode + */ +static void +test_base64_cbc_len(void) +{ + char *b64 = NULL; + int key_len, message_len = 0; + char key[57]; + char message[1000]; + + /* Generate key 32–448 bits (Yes, I start with 8 bits) */ + for (key_len = 1; key_len < 57; ++key_len) { + + random_string(key, key_len); + + for (message_len = 1; message_len < 1000; ++message_len) { + random_string(message, message_len); + b64 = fish_encrypt(key, key_len, message, message_len, FISH_CBC_MODE); + g_assert_nonnull(b64); + g_assert_cmpuint(strlen(b64), == , cbc_len(message_len)); + g_free(b64); + } + } +} + +/** + * Check the calculation of length limit for a plaintext in each encryption mode + */ +static void +test_max_text_command_len(void) +{ + int max_encoded_len, plaintext_len; + enum fish_mode mode; + + for (max_encoded_len = 0; max_encoded_len < 10000; ++max_encoded_len) { + for (mode = FISH_ECB_MODE; mode <= FISH_CBC_MODE; ++mode) { + plaintext_len = max_text_command_len(max_encoded_len, mode); + g_assert_cmpuint(encoded_len(plaintext_len, mode), <= , max_encoded_len); + } + } +} + +/** + * Check the calculation of length limit for a plaintext in each encryption mode + */ +static void +test_foreach_utf8_data_chunks(void) +{ + GRand *rand = NULL; + GString *chunks = NULL; + int max_chunks_len, chunks_len; + char ascii_message[1001]; + char *data_chunk = NULL; + + rand = g_rand_new(); + max_chunks_len = g_rand_int_range(rand, 2, 301); + random_string(ascii_message, 1000); + + data_chunk = ascii_message; + + chunks = g_string_new(NULL); + + while (foreach_utf8_data_chunks(data_chunk, max_chunks_len, &chunks_len)) { + g_string_append(chunks, g_strndup(data_chunk, chunks_len)); + /* Next chunk */ + data_chunk += chunks_len; + } + /* Check data loss */ + g_assert_cmpstr(chunks->str, == , ascii_message); + + g_string_free(chunks, TRUE); + g_rand_free (rand); +} + +int +main(int argc, char *argv[]) { + + g_test_init(&argc, &argv, NULL); + + g_test_add_func("/fishlim/ecb", test_ecb); + g_test_add_func("/fishlim/cbc", test_cbc); + g_test_add_func("/fishlim/base64_len", test_base64_len); + g_test_add_func("/fishlim/base64_fish_len", test_base64_fish_len); + g_test_add_func("/fishlim/base64_ecb_len", test_base64_ecb_len); + g_test_add_func("/fishlim/base64_cbc_len", test_base64_cbc_len); + g_test_add_func("/fishlim/max_text_command_len", test_max_text_command_len); + g_test_add_func("/fishlim/foreach_utf8_data_chunks", test_foreach_utf8_data_chunks); + + fish_init(); + int ret = g_test_run(); + fish_deinit(); + return ret; +} diff --git a/hexchat/plugins/fishlim/utils.c b/hexchat/plugins/fishlim/utils.c new file mode 100644 index 0000000..17ed4c2 --- /dev/null +++ b/hexchat/plugins/fishlim/utils.c @@ -0,0 +1,151 @@ +/* + + Copyright (c) 2020 <bakasura@protonmail.ch> + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +#include <string.h> + +#include "utils.h" +#include "fish.h" + +/** + * Calculate the length of Base64-encoded string + * + * @param plaintext_len Size of clear text to encode + * @return Size of encoded string + */ +unsigned long base64_len(size_t plaintext_len) { + int length_unpadded = (4 * plaintext_len) / 3; + /* Add padding */ + return length_unpadded % 4 != 0 ? length_unpadded + (4 - length_unpadded % 4) : length_unpadded; +} + +/** + * Calculate the length of BlowcryptBase64-encoded string + * + * @param plaintext_len Size of clear text to encode + * @return Size of encoded string + */ +unsigned long base64_fish_len(size_t plaintext_len) { + int length_unpadded = (12 * plaintext_len) / 8; + /* Add padding */ + return length_unpadded % 12 != 0 ? length_unpadded + (12 - length_unpadded % 12) : length_unpadded; +} + +/** + * Calculate the length of fish-encrypted string in CBC mode + * + * @param plaintext_len Size of clear text to encode + * @return Size of encoded string + */ +unsigned long cbc_len(size_t plaintext_len) { + /*IV + DATA + Zero Padding */ + return base64_len(8 + (plaintext_len % 8 != 0 ? plaintext_len + 8 - (plaintext_len % 8) : plaintext_len)); +} + +/** + * Calculate the length of fish-encrypted string in ECB mode + * + * @param plaintext_len Size of clear text to encode + * @return Size of encoded string + */ +unsigned long ecb_len(size_t plaintext_len) { + return base64_fish_len(plaintext_len); +} + +/** + * Calculate the length of encrypted string in 'mode' mode + * + * @param plaintext_len Length of plaintext + * @param mode Encryption mode + * @return Size of encoded string + */ +unsigned long encoded_len(size_t plaintext_len, enum fish_mode mode) { + switch (mode) { + + case FISH_CBC_MODE: + return cbc_len(plaintext_len); + break; + + case FISH_ECB_MODE: + return ecb_len(plaintext_len); + } + + return 0; +} + +/** + * Determine the maximum length of plaintext for a 'max_len' limit taking care the overload of encryption + * + * @param max_len Limit for plaintext + * @param mode Encryption mode + * @return Maximum allowed plaintext length + */ +int max_text_command_len(size_t max_len, enum fish_mode mode) { + int len; + + for (len = max_len; encoded_len(len, mode) > max_len; --len); + return len; +} + +/** + * Iterate over 'data' in chunks of 'max_chunk_len' taking care the UTF-8 characters + * + * @param data Data to iterate + * @param max_chunk_len Size of biggest chunk + * @param [out] chunk_len Current chunk length + * @return Pointer to current chunk position or NULL if not have more chunks + */ +const char *foreach_utf8_data_chunks(const char *data, int max_chunk_len, int *chunk_len) { + int data_len, last_chunk_len = 0; + + if (!*data) { + return NULL; + } + + /* Last chunk of data */ + data_len = strlen(data); + if (data_len <= max_chunk_len) { + *chunk_len = data_len; + return data; + } + + *chunk_len = 0; + const char *utf8_character = data; + + /* Not valid UTF-8, but maybe valid text, just split into max length */ + if (!g_utf8_validate(data, -1, NULL)) { + *chunk_len = max_chunk_len; + return utf8_character; + } + + while (*utf8_character && *chunk_len <= max_chunk_len) { + last_chunk_len = *chunk_len; + *chunk_len = (g_utf8_next_char(utf8_character) - data) * sizeof(*utf8_character); + utf8_character = g_utf8_next_char(utf8_character); + } + + /* We need the previous length before overflow the limit */ + *chunk_len = last_chunk_len; + + return utf8_character; +} \ No newline at end of file diff --git a/hexchat/plugins/fishlim/utils.h b/hexchat/plugins/fishlim/utils.h new file mode 100644 index 0000000..623c67a --- /dev/null +++ b/hexchat/plugins/fishlim/utils.h @@ -0,0 +1,39 @@ +/* + + Copyright (c) 2020 <bakasura@protonmail.ch> + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +#ifndef PLUGIN_HEXCHAT_FISHLIM_UTILS_H +#define PLUGIN_HEXCHAT_FISHLIM_UTILS_H + +#include <stddef.h> +#include "fish.h" + +unsigned long base64_len(size_t plaintext_len); +unsigned long base64_fish_len(size_t plaintext_len); +unsigned long cbc_len(size_t plaintext_len); +unsigned long ecb_len(size_t plaintext_len); +unsigned long encoded_len(size_t plaintext_len, enum fish_mode mode); +int max_text_command_len(size_t max_len, enum fish_mode mode); +const char *foreach_utf8_data_chunks(const char *data, int max_chunk_len, int *chunk_len); + +#endif \ No newline at end of file diff --git a/hexchat/plugins/lua/lua.c b/hexchat/plugins/lua/lua.c new file mode 100644 index 0000000..f8f051f --- /dev/null +++ b/hexchat/plugins/lua/lua.c @@ -0,0 +1,1771 @@ +/* + * Copyright (c) 2015-2016 mniip + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and + * associated documentation files (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT + * LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ + +#include <stdlib.h> +#include <stdint.h> +#include <string.h> + +#include <lua.h> +#include <lauxlib.h> +#include <lualib.h> + +#include <glib.h> +#include <gmodule.h> + +#ifndef G_OS_WIN32 +#include <pwd.h> +#endif + +#include <hexchat-plugin.h> + +#define WORD_ARRAY_LEN 32 + +static char plugin_name[] = "Lua"; +static char plugin_description[] = "Lua scripting interface"; +static char plugin_version[16] = "1.3"; + +static char console_tab[] = ">>lua<<"; +static char command_help[] = + "Usage: /lua load <filename>\n" + " unload <filename>\n" + " reload <filename>\n" + " exec <code>\n" + " inject <filename> <code>\n" + " reset\n" + " list\n" + " console"; + +static char registry_field[] = "plugin"; + +static hexchat_plugin *ph; + +#if LUA_VERSION_NUM < 502 +#define lua_rawlen lua_objlen +#define luaL_setfuncs(L, r, n) luaL_register(L, NULL, r) +#endif + +typedef struct +{ + hexchat_hook *hook; + lua_State *state; + int ref; +} +hook_info; + +typedef struct +{ + char *name; + char *description; + char *version; + hexchat_plugin *handle; + char *filename; + lua_State *state; + GPtrArray *hooks; + GPtrArray *unload_hooks; + int traceback; + int status; +} +script_info; + +#define STATUS_ACTIVE 1 +#define STATUS_DEFERRED_UNLOAD 2 +#define STATUS_DEFERRED_RELOAD 4 + +static void check_deferred(script_info *info); + +static inline script_info *get_info(lua_State *L) +{ + script_info *info; + + lua_getfield(L, LUA_REGISTRYINDEX, registry_field); + info = lua_touserdata(L, -1); + lua_pop(L, 1); + + return info; +} + +static int api_hexchat_register(lua_State *L) +{ + char const *name, *version, *description; + script_info *info = get_info(L); + if(info->name) + return luaL_error(L, "script is already registered as '%s'", info->name); + + name = luaL_checkstring(L, 1); + version = luaL_checkstring(L, 2); + description = luaL_checkstring(L, 3); + + info->name = g_strdup(name); + info->description = g_strdup(description); + info->version = g_strdup(version); + info->handle = hexchat_plugingui_add(ph, info->filename, info->name, info->description, info->version, NULL); + + return 0; +} + +static int api_hexchat_command(lua_State *L) +{ + hexchat_command(ph, luaL_checkstring(L, 1)); + return 0; +} + +static int tostring(lua_State *L, int n) +{ + luaL_checkany(L, n); + switch (lua_type(L, n)) + { + case LUA_TNUMBER: + lua_pushstring(L, lua_tostring(L, n)); + break; + case LUA_TSTRING: + lua_pushvalue(L, n); + break; + case LUA_TBOOLEAN: + lua_pushstring(L, (lua_toboolean(L, n) ? "true" : "false")); + break; + case LUA_TNIL: + lua_pushliteral(L, "nil"); + break; + default: + lua_pushfstring(L, "%s: %p", luaL_typename(L, n), lua_topointer(L, n)); + break; + } + return 1; +} + +static int api_hexchat_print(lua_State *L) +{ + int i, args = lua_gettop(L); + luaL_Buffer b; + luaL_buffinit(L, &b); + for(i = 1; i <= args; i++) + { + if(i != 1) + luaL_addstring(&b, " "); + tostring(L, i); + luaL_addvalue(&b); + } + luaL_pushresult(&b); + hexchat_print(ph, lua_tostring(L, -1)); + return 0; +} + +static int api_hexchat_emit_print(lua_State *L) +{ + hexchat_emit_print(ph, luaL_checkstring(L, 1), luaL_optstring(L, 2, NULL), luaL_optstring(L, 3, NULL), luaL_optstring(L, 4, NULL), luaL_optstring(L, 5, NULL), luaL_optstring(L, 6, NULL), NULL); + return 0; +} + +static int api_hexchat_emit_print_attrs(lua_State *L) +{ + hexchat_event_attrs *attrs = *(hexchat_event_attrs **)luaL_checkudata(L, 1, "attrs"); + hexchat_emit_print_attrs(ph, attrs, luaL_checkstring(L, 2), luaL_optstring(L, 3, NULL), luaL_optstring(L, 4, NULL), luaL_optstring(L, 5, NULL), luaL_optstring(L, 6, NULL), luaL_optstring(L, 7, NULL), NULL); + return 0; +} + +static int api_hexchat_send_modes(lua_State *L) +{ + size_t i, n; + int modes; + char const *mode; + char const **targets; + + luaL_checktype(L, 1, LUA_TTABLE); + n = lua_rawlen(L, 1); + mode = luaL_checkstring(L, 2); + if(strlen(mode) != 2) + return luaL_argerror(L, 2, "expected sign followed by a mode letter"); + modes = luaL_optinteger(L, 3, 0); + targets = g_new(char const *, n); + + for(i = 0; i < n; i++) + { + lua_rawgeti(L, 1, i + 1); + if(lua_type(L, -1) != LUA_TSTRING) + { + g_free(targets); + return luaL_argerror(L, 1, "expected an array of strings"); + } + targets[i] = lua_tostring(L, -1); + lua_pop(L, 1); + } + hexchat_send_modes(ph, targets, n, modes, mode[0], mode[1]); + g_free(targets); + return 0; +} + +static int api_hexchat_nickcmp(lua_State *L) +{ + lua_pushinteger(L, hexchat_nickcmp(ph, luaL_checkstring(L, 1), luaL_checkstring(L, 2))); + return 1; +} + +static int api_hexchat_strip(lua_State *L) +{ + size_t len; + char const *text; + gboolean leave_colors, leave_attrs; + char *result; + + luaL_checktype(L, 1, LUA_TSTRING); + text = lua_tolstring(L, 1, &len); + leave_colors = lua_toboolean(L, 2); + leave_attrs = lua_toboolean(L, 3); + result = hexchat_strip(ph, text, len, (leave_colors ? 0 : 1) | (leave_attrs ? 0 : 2)); + if(result) + { + lua_pushstring(L, result); + hexchat_free(ph, result); + return 1; + } + return 0; +} + +static void register_hook(hook_info *hook) +{ + script_info *info = get_info(hook->state); + g_ptr_array_add(info->hooks, hook); +} + +static void free_hook(hook_info *hook) +{ + if(hook->state) + luaL_unref(hook->state, LUA_REGISTRYINDEX, hook->ref); + if(hook->hook) + hexchat_unhook(ph, hook->hook); + g_free(hook); +} + +static int unregister_hook(hook_info *hook) +{ + script_info *info = get_info(hook->state); + + if(g_ptr_array_remove_fast(info->hooks, hook)) + return 1; + + if(g_ptr_array_remove_fast(info->unload_hooks, hook)) + return 1; + + return 0; +} + +static int api_command_closure(char *word[], char *word_eol[], void *udata) +{ + int base, i, ret; + hook_info *info = udata; + lua_State *L = info->state; + script_info *script = get_info(L); + + lua_rawgeti(L, LUA_REGISTRYINDEX, script->traceback); + base = lua_gettop(L); + lua_rawgeti(L, LUA_REGISTRYINDEX, info->ref); + lua_newtable(L); + for(i = 1; i < WORD_ARRAY_LEN && *word_eol[i]; i++) + { + lua_pushstring(L, word[i]); + lua_rawseti(L, -2, i); + } + lua_newtable(L); + for(i = 1; i < WORD_ARRAY_LEN && *word_eol[i]; i++) + { + lua_pushstring(L, word_eol[i]); + lua_rawseti(L, -2, i); + } + script->status |= STATUS_ACTIVE; + if(lua_pcall(L, 2, 1, base)) + { + char const *error = lua_tostring(L, -1); + lua_pop(L, 2); + hexchat_printf(ph, "Lua error in command hook: %s", error ? error : "(non-string error)"); + check_deferred(script); + return HEXCHAT_EAT_NONE; + } + ret = lua_tointeger(L, -1); + lua_pop(L, 2); + check_deferred(script); + return ret; +} + +static int api_hexchat_hook_command(lua_State *L) +{ + hook_info *info, **u; + char const *command, *help; + int ref, pri; + + command = luaL_optstring(L, 1, ""); + lua_pushvalue(L, 2); + ref = luaL_ref(L, LUA_REGISTRYINDEX); + help = luaL_optstring(L, 3, NULL); + pri = luaL_optinteger(L, 4, HEXCHAT_PRI_NORM); + info = g_new(hook_info, 1); + info->state = L; + info->ref = ref; + info->hook = hexchat_hook_command(ph, command, pri, api_command_closure, help, info); + u = lua_newuserdata(L, sizeof(hook_info *)); + *u = info; + luaL_newmetatable(L, "hook"); + lua_setmetatable(L, -2); + register_hook(info); + return 1; +} + +static int api_print_closure(char *word[], void *udata) +{ + hook_info *info = udata; + lua_State *L = info->state; + script_info *script = get_info(L); + int i, j, base, ret; + + lua_rawgeti(L, LUA_REGISTRYINDEX, script->traceback); + base = lua_gettop(L); + lua_rawgeti(L, LUA_REGISTRYINDEX, info->ref); + + for(j = 31; j >= 1; j--) + { + if(*word[j]) + break; + } + lua_newtable(L); + for(i = 1; i <= j; i++) + { + lua_pushstring(L, word[i]); + lua_rawseti(L, -2, i); + } + script->status |= STATUS_ACTIVE; + if(lua_pcall(L, 1, 1, base)) + { + char const *error = lua_tostring(L, -1); + lua_pop(L, 2); + hexchat_printf(ph, "Lua error in print hook: %s", error ? error : "(non-string error)"); + check_deferred(script); + return HEXCHAT_EAT_NONE; + } + ret = lua_tointeger(L, -1); + lua_pop(L, 2); + check_deferred(script); + return ret; +} + +static int api_hexchat_hook_print(lua_State *L) +{ + char const *event = luaL_checkstring(L, 1); + hook_info *info, **u; + int ref, pri; + + lua_pushvalue(L, 2); + ref = luaL_ref(L, LUA_REGISTRYINDEX); + pri = luaL_optinteger(L, 3, HEXCHAT_PRI_NORM); + info = g_new(hook_info, 1); + info->state = L; + info->ref = ref; + info->hook = hexchat_hook_print(ph, event, pri, api_print_closure, info); + u = lua_newuserdata(L, sizeof(hook_info *)); + *u = info; + luaL_newmetatable(L, "hook"); + lua_setmetatable(L, -2); + register_hook(info); + return 1; +} + +static hexchat_event_attrs *event_attrs_copy(const hexchat_event_attrs *attrs) +{ + hexchat_event_attrs *copy = hexchat_event_attrs_create(ph); + copy->server_time_utc = attrs->server_time_utc; + return copy; +} + +static int api_print_attrs_closure(char *word[], hexchat_event_attrs *attrs, void *udata) +{ + hook_info *info = udata; + lua_State *L = info->state; + script_info *script = get_info(L); + int base, i, j, ret; + hexchat_event_attrs **u; + + lua_rawgeti(L, LUA_REGISTRYINDEX, script->traceback); + base = lua_gettop(L); + lua_rawgeti(L, LUA_REGISTRYINDEX, info->ref); + for(j = 31; j >= 1; j--) + { + if(*word[j]) + break; + } + lua_newtable(L); + for(i = 1; i <= j; i++) + { + lua_pushstring(L, word[i]); + lua_rawseti(L, -2, i); + } + u = lua_newuserdata(L, sizeof(hexchat_event_attrs *)); + *u = event_attrs_copy(attrs); + luaL_newmetatable(L, "attrs"); + lua_setmetatable(L, -2); + script->status |= STATUS_ACTIVE; + if(lua_pcall(L, 2, 1, base)) + { + char const *error = lua_tostring(L, -1); + lua_pop(L, 2); + hexchat_printf(ph, "Lua error in print_attrs hook: %s", error ? error : "(non-string error)"); + check_deferred(script); + return HEXCHAT_EAT_NONE; + } + ret = lua_tointeger(L, -1); + lua_pop(L, 2); + check_deferred(script); + return ret; +} + +static int api_hexchat_hook_print_attrs(lua_State *L) +{ + hook_info *info, **u; + int ref, pri; + char const *event = luaL_checkstring(L, 1); + + lua_pushvalue(L, 2); + ref = luaL_ref(L, LUA_REGISTRYINDEX); + pri = luaL_optinteger(L, 3, HEXCHAT_PRI_NORM); + info = g_new(hook_info, 1); + info->state = L; + info->ref = ref; + info->hook = hexchat_hook_print_attrs(ph, event, pri, api_print_attrs_closure, info); + u = lua_newuserdata(L, sizeof(hook_info *)); + *u = info; + luaL_newmetatable(L, "hook"); + lua_setmetatable(L, -2); + register_hook(info); + return 1; +} + +static int api_server_closure(char *word[], char *word_eol[], void *udata) +{ + hook_info *info = udata; + lua_State *L = info->state; + script_info *script = get_info(L); + int base, i, ret; + + lua_rawgeti(L, LUA_REGISTRYINDEX, script->traceback); + base = lua_gettop(L); + lua_rawgeti(L, LUA_REGISTRYINDEX, info->ref); + lua_newtable(L); + for(i = 1; i < WORD_ARRAY_LEN && *word_eol[i]; i++) + { + lua_pushstring(L, word[i]); + lua_rawseti(L, -2, i); + } + lua_newtable(L); + for(i = 1; i < WORD_ARRAY_LEN && *word_eol[i]; i++) + { + lua_pushstring(L, word_eol[i]); + lua_rawseti(L, -2, i); + } + script->status |= STATUS_ACTIVE; + if(lua_pcall(L, 2, 1, base)) + { + char const *error = lua_tostring(L, -1); + lua_pop(L, 2); + hexchat_printf(ph, "Lua error in server hook: %s", error ? error : "(non-string error)"); + check_deferred(script); + return HEXCHAT_EAT_NONE; + } + ret = lua_tointeger(L, -1); + lua_pop(L, 2); + check_deferred(script); + return ret; +} + +static int api_hexchat_hook_server(lua_State *L) +{ + char const *command = luaL_optstring(L, 1, "RAW LINE"); + hook_info *info, **u; + int ref, pri; + + lua_pushvalue(L, 2); + ref = luaL_ref(L, LUA_REGISTRYINDEX); + pri = luaL_optinteger(L, 3, HEXCHAT_PRI_NORM); + info = g_new(hook_info, 1); + info->state = L; + info->ref = ref; + info->hook = hexchat_hook_server(ph, command, pri, api_server_closure, info); + u = lua_newuserdata(L, sizeof(hook_info *)); + *u = info; + luaL_newmetatable(L, "hook"); + lua_setmetatable(L, -2); + register_hook(info); + return 1; +} + +static int api_server_attrs_closure(char *word[], char *word_eol[], hexchat_event_attrs *attrs, void *udata) +{ + hook_info *info = udata; + lua_State *L = info->state; + script_info *script = get_info(L); + int base, i, ret; + hexchat_event_attrs **u; + + lua_rawgeti(L, LUA_REGISTRYINDEX, script->traceback); + base = lua_gettop(L); + lua_rawgeti(L, LUA_REGISTRYINDEX, info->ref); + lua_newtable(L); + for(i = 1; i < WORD_ARRAY_LEN && *word_eol[i]; i++) + { + lua_pushstring(L, word[i]); + lua_rawseti(L, -2, i); + } + lua_newtable(L); + for(i = 1; i < WORD_ARRAY_LEN && *word_eol[i]; i++) + { + lua_pushstring(L, word_eol[i]); + lua_rawseti(L, -2, i); + } + + u = lua_newuserdata(L, sizeof(hexchat_event_attrs *)); + *u = event_attrs_copy(attrs); + luaL_newmetatable(L, "attrs"); + lua_setmetatable(L, -2); + script->status |= STATUS_ACTIVE; + if(lua_pcall(L, 3, 1, base)) + { + char const *error = lua_tostring(L, -1); + lua_pop(L, 2); + hexchat_printf(ph, "Lua error in server_attrs hook: %s", error ? error : "(non-string error)"); + check_deferred(script); + return HEXCHAT_EAT_NONE; + } + ret = lua_tointeger(L, -1); + lua_pop(L, 2); + check_deferred(script); + return ret; +} + +static int api_hexchat_hook_server_attrs(lua_State *L) +{ + char const *command = luaL_optstring(L, 1, "RAW LINE"); + int ref, pri; + hook_info *info, **u; + + lua_pushvalue(L, 2); + ref = luaL_ref(L, LUA_REGISTRYINDEX); + pri = luaL_optinteger(L, 3, HEXCHAT_PRI_NORM); + info = g_new(hook_info, 1); + info->state = L; + info->ref = ref; + info->hook = hexchat_hook_server_attrs(ph, command, pri, api_server_attrs_closure, info); + u = lua_newuserdata(L, sizeof(hook_info *)); + *u = info; + luaL_newmetatable(L, "hook"); + lua_setmetatable(L, -2); + register_hook(info); + return 1; +} + +static int api_timer_closure(void *udata) +{ + hook_info *info = udata; + lua_State *L = info->state; + script_info *script = get_info(L); + int base, ret; + + lua_rawgeti(L, LUA_REGISTRYINDEX, script->traceback); + base = lua_gettop(L); + lua_rawgeti(L, LUA_REGISTRYINDEX, info->ref); + script->status |= STATUS_ACTIVE; + if(lua_pcall(L, 0, 1, base)) + { + char const *error = lua_tostring(L, -1); + lua_pop(L, 2); + hexchat_printf(ph, "Lua error in timer hook: %s", error ? error : "(non-string error)"); + check_deferred(script); + return 0; + } + ret = lua_toboolean(L, -1); + lua_pop(L, 2); + check_deferred(script); + return ret; +} + +static int api_hexchat_hook_timer(lua_State *L) +{ + int ref, timeout = luaL_checkinteger (L, 1); + hook_info *info, **u; + + lua_pushvalue(L, 2); + ref = luaL_ref(L, LUA_REGISTRYINDEX); + info = g_new(hook_info, 1); + info->state = L; + info->ref = ref; + info->hook = hexchat_hook_timer(ph, timeout, api_timer_closure, info); + u = lua_newuserdata(L, sizeof(hook_info *)); + *u = info; + luaL_newmetatable(L, "hook"); + lua_setmetatable(L, -2); + register_hook(info); + return 1; +} + +static int api_hexchat_hook_unload(lua_State *L) +{ + script_info *script; + hook_info *info, **u; + int ref; + + lua_pushvalue(L, 1); + ref = luaL_ref(L, LUA_REGISTRYINDEX); + info = g_new(hook_info, 1); + info->state = L; + info->ref = ref; + info->hook = NULL; + u = lua_newuserdata(L, sizeof(hook_info *)); + *u = info; + luaL_newmetatable(L, "hook"); + lua_setmetatable(L, -2); + script = get_info(info->state); + + g_ptr_array_add(script->unload_hooks, info); + return 1; +} + +static int api_hexchat_unhook(lua_State *L) +{ + hook_info **info = (hook_info **)luaL_checkudata(L, 1, "hook"); + if(*info) + { + unregister_hook(*info); + *info = 0; + return 0; + } + else + { + tostring(L, 1); + return luaL_error(L, "hook %s is already unhooked", lua_tostring(L, -1)); + } +} + +static int api_hexchat_find_context(lua_State *L) +{ + char const *server = luaL_optstring(L, 1, NULL); + char const *channel = luaL_optstring(L, 2, NULL); + hexchat_context *context = hexchat_find_context(ph, server, channel); + if(context) + { + hexchat_context **u = lua_newuserdata(L, sizeof(hexchat_context *)); + *u = context; + luaL_newmetatable(L, "context"); + lua_setmetatable(L, -2); + return 1; + } + else + { + lua_pushnil(L); + return 1; + } +} + +static int api_hexchat_get_context(lua_State *L) +{ + hexchat_context *context = hexchat_get_context(ph); + hexchat_context **u = lua_newuserdata(L, sizeof(hexchat_context *)); + *u = context; + luaL_newmetatable(L, "context"); + lua_setmetatable(L, -2); + return 1; +} + +static int api_hexchat_set_context(lua_State *L) +{ + hexchat_context *context = *(hexchat_context **)luaL_checkudata(L, 1, "context"); + int success = hexchat_set_context(ph, context); + lua_pushboolean(L, success); + return 1; +} + +static int wrap_context_closure(lua_State *L) +{ + hexchat_context *old, *context = *(hexchat_context **)luaL_checkudata(L, 1, "context"); + lua_pushvalue(L, lua_upvalueindex(1)); + lua_replace(L, 1); + old = hexchat_get_context(ph); + if(!hexchat_set_context(ph, context)) + return luaL_error(L, "could not switch into context"); + lua_call(L, lua_gettop(L) - 1, LUA_MULTRET); + hexchat_set_context(ph, old); + return lua_gettop(L); +} + +static inline void wrap_context(lua_State *L, char const *field, lua_CFunction func) +{ + lua_pushcfunction(L, func); + lua_pushcclosure(L, wrap_context_closure, 1); + lua_setfield(L, -2, field); +} + +static int api_hexchat_context_meta_eq(lua_State *L) +{ + hexchat_context *this = *(hexchat_context **)luaL_checkudata(L, 1, "context"); + hexchat_context *that = *(hexchat_context **)luaL_checkudata(L, 2, "context"); + lua_pushboolean(L, this == that); + return 1; +} + +static int api_hexchat_get_info(lua_State *L) +{ + char const *key = luaL_checkstring(L, 1); + char const *data = hexchat_get_info(ph, key); + if(data) + { + if(!strcmp(key, "gtkwin_ptr") || !strcmp(key, "win_ptr")) + lua_pushlightuserdata(L, (void *)data); + else + lua_pushstring(L, data); + return 1; + } + lua_pushnil(L); + return 1; +} + +static int api_hexchat_attrs(lua_State *L) +{ + hexchat_event_attrs *attrs = hexchat_event_attrs_create(ph); + hexchat_event_attrs **u = lua_newuserdata(L, sizeof(hexchat_event_attrs *)); + *u = attrs; + luaL_newmetatable(L, "attrs"); + lua_setmetatable(L, -2); + return 1; +} + +static int api_iterate_closure(lua_State *L) +{ + hexchat_list *list = *(hexchat_list **)luaL_checkudata(L, lua_upvalueindex(1), "list"); + if(hexchat_list_next(ph, list)) + { + lua_pushvalue(L, lua_upvalueindex(1)); + return 1; + } + else + return 0; +} + +static int api_hexchat_iterate(lua_State *L) +{ + char const *name = luaL_checkstring(L, 1); + hexchat_list *list = hexchat_list_get(ph, name); + if(list) + { + hexchat_list **u = lua_newuserdata(L, sizeof(hexchat_list *)); + *u = list; + luaL_newmetatable(L, "list"); + lua_setmetatable(L, -2); + lua_pushcclosure(L, api_iterate_closure, 1); + return 1; + } + else + return luaL_argerror(L, 1, "invalid list name"); +} + +static int api_hexchat_prefs_meta_index(lua_State *L) +{ + char const *key = luaL_checkstring(L, 2); + char const *string; + int number; + int ret = hexchat_get_prefs(ph, key, &string, &number); + switch(ret) + { + case 0: + lua_pushnil(L); + return 1; + case 1: + lua_pushstring(L, string); + return 1; + case 2: + lua_pushnumber(L, number); + return 1; + case 3: + lua_pushboolean(L, number); + return 1; + default: + return 0; + } +} + +static int api_hexchat_prefs_meta_newindex(lua_State *L) +{ + return luaL_error(L, "hexchat.prefs is read-only"); +} + +static inline int list_marshal(lua_State *L, const char *key, hexchat_list *list) +{ + char const *str = hexchat_list_str(ph, list, key); + int number; + if(str) + { + if(!strcmp(key, "context")) + { + hexchat_context **u = lua_newuserdata(L, sizeof(hexchat_context *)); + *u = (hexchat_context *)str; + luaL_newmetatable(L, "context"); + lua_setmetatable(L, -2); + return 1; + } + lua_pushstring(L, str); + return 1; + } + number = hexchat_list_int(ph, list, key); + if(number != -1) + { + lua_pushinteger(L, number); + return 1; + } + if (list != NULL) + { + time_t tm = hexchat_list_time(ph, list, key); + if(tm != -1) + { + lua_pushinteger(L, tm); + return 1; + } + } + + lua_pushnil(L); + return 1; +} + +static int api_hexchat_props_meta_index(lua_State *L) +{ + char const *key = luaL_checkstring(L, 2); + return list_marshal(L, key, NULL); +} + +static int api_hexchat_props_meta_newindex(lua_State *L) +{ + return luaL_error(L, "hexchat.props is read-only"); +} + +static int api_hexchat_pluginprefs_meta_index(lua_State *L) +{ + script_info *script = get_info(L); + const char *key; + hexchat_plugin *h; + char str[512]; + int r; + + if(!script->name) + return luaL_error(L, "cannot use hexchat.pluginprefs before registering with hexchat.register"); + + key = luaL_checkstring(L, 2); + h = script->handle; + r = hexchat_pluginpref_get_int(h, key); + if(r != -1) + { + lua_pushinteger(L, r); + return 1; + } + if(hexchat_pluginpref_get_str(h, key, str)) + { + /* Wasn't actually a failure */ + if (!strcmp(str, "-1")) + lua_pushinteger(L, r); + else + lua_pushstring(L, str); + return 1; + } + lua_pushnil(L); + return 1; +} + +static int api_hexchat_pluginprefs_meta_newindex(lua_State *L) +{ + script_info *script = get_info(L); + const char *key; + hexchat_plugin *h; + + if(!script->name) + return luaL_error(L, "cannot use hexchat.pluginprefs before registering with hexchat.register"); + + key = luaL_checkstring(L, 2); + h = script->handle; + switch(lua_type(L, 3)) + { + case LUA_TSTRING: + hexchat_pluginpref_set_str(h, key, lua_tostring(L, 3)); + return 0; + case LUA_TNUMBER: + hexchat_pluginpref_set_int(h, key, lua_tointeger(L, 3)); + return 0; + case LUA_TNIL: case LUA_TNONE: + hexchat_pluginpref_delete(h, key); + return 0; + default: + return luaL_argerror(L, 3, "expected string, number, or nil"); + } +} + +static int api_hexchat_pluginprefs_meta_pairs_closure(lua_State *L) +{ + char *dest = lua_touserdata(L, lua_upvalueindex(1)); + hexchat_plugin *h = get_info(L)->handle; + + if(dest && *dest) + { + int r; + char str[512]; + char *key = dest; + + dest = strchr(dest, ','); + if(dest) + *(dest++) = 0; + lua_pushlightuserdata(L, dest); + lua_replace(L, lua_upvalueindex(1)); + lua_pushstring(L, key); + r = hexchat_pluginpref_get_int(h, key); + if(r != -1) + { + lua_pushinteger(L, r); + return 2; + } + if(hexchat_pluginpref_get_str(h, key, str)) + { + lua_pushstring(L, str); + return 2; + } + lua_pushnil(L); + return 2; + } + else + return 0; +} + +static int api_hexchat_pluginprefs_meta_pairs(lua_State *L) +{ + script_info *script = get_info(L); + char *dest; + hexchat_plugin *h; + + if(!script->name) + + return luaL_error(L, "cannot use hexchat.pluginprefs before registering with hexchat.register"); + + dest = lua_newuserdata(L, 4096); + + h = script->handle; + if(!hexchat_pluginpref_list(h, dest)) + strcpy(dest, ""); + lua_pushlightuserdata(L, dest); + lua_pushlightuserdata(L, dest); + lua_pushcclosure(L, api_hexchat_pluginprefs_meta_pairs_closure, 2); + lua_insert(L, -2); // Return the userdata (second return value from pairs), + // even though it's not used by the closure (first return + // value from pairs), so that Lua knows not to GC it. + return 2; +} + +static int api_attrs_meta_index(lua_State *L) +{ + hexchat_event_attrs *attrs = *(hexchat_event_attrs **)luaL_checkudata(L, 1, "attrs"); + char const *key = luaL_checkstring(L, 2); + if(!strcmp(key, "server_time_utc")) + { + lua_pushinteger(L, attrs->server_time_utc); + return 1; + } + else + { + lua_pushnil(L); + return 1; + } +} + +static int api_attrs_meta_newindex(lua_State *L) +{ + hexchat_event_attrs *attrs = *(hexchat_event_attrs **)luaL_checkudata(L, 1, "attrs"); + char const *key = luaL_checkstring(L, 2); + if(!strcmp(key, "server_time_utc")) + { + attrs->server_time_utc = luaL_checkinteger(L, 3); + return 0; + } + else + return 0; +} + +static int api_attrs_meta_gc(lua_State *L) +{ + hexchat_event_attrs *attrs = *(hexchat_event_attrs **)luaL_checkudata(L, 1, "attrs"); + hexchat_event_attrs_free(ph, attrs); + return 0; +} + +static int api_list_meta_index(lua_State *L) +{ + hexchat_list *list = *(hexchat_list **)luaL_checkudata(L, 1, "list"); + char const *key = luaL_checkstring(L, 2); + return list_marshal(L, key, list); +} + +static int api_list_meta_newindex(lua_State *L) +{ + return luaL_error(L, "hexchat.iterate list is read-only"); +} + +static int api_list_meta_gc(lua_State *L) +{ + hexchat_list *list = *(hexchat_list **)luaL_checkudata(L, 1, "list"); + hexchat_list_free(ph, list); + return 0; +} + +static luaL_Reg api_hexchat[] = { + {"register", api_hexchat_register}, + {"command", api_hexchat_command}, + {"print", api_hexchat_print}, + {"emit_print", api_hexchat_emit_print}, + {"emit_print_attrs", api_hexchat_emit_print_attrs}, + {"send_modes", api_hexchat_send_modes}, + {"nickcmp", api_hexchat_nickcmp}, + {"strip", api_hexchat_strip}, + {"get_info", api_hexchat_get_info}, + {"hook_command", api_hexchat_hook_command}, + {"hook_print", api_hexchat_hook_print}, + {"hook_print_attrs", api_hexchat_hook_print_attrs}, + {"hook_server", api_hexchat_hook_server}, + {"hook_server_attrs", api_hexchat_hook_server_attrs}, + {"hook_timer", api_hexchat_hook_timer}, + {"hook_unload", api_hexchat_hook_unload}, + {"unhook", api_hexchat_unhook}, + {"get_context", api_hexchat_get_context}, + {"find_context", api_hexchat_find_context}, + {"set_context", api_hexchat_set_context}, + {"attrs", api_hexchat_attrs}, + {"iterate", api_hexchat_iterate}, + {NULL, NULL} +}; + +static luaL_Reg api_hexchat_props_meta[] = { + {"__index", api_hexchat_props_meta_index}, + {"__newindex", api_hexchat_props_meta_newindex}, + {NULL, NULL} +}; + +static luaL_Reg api_hexchat_prefs_meta[] = { + {"__index", api_hexchat_prefs_meta_index}, + {"__newindex", api_hexchat_prefs_meta_newindex}, + {NULL, NULL} +}; + +static luaL_Reg api_hexchat_pluginprefs_meta[] = { + {"__index", api_hexchat_pluginprefs_meta_index}, + {"__newindex", api_hexchat_pluginprefs_meta_newindex}, + {"__pairs", api_hexchat_pluginprefs_meta_pairs}, + {NULL, NULL} +}; + +static luaL_Reg api_hook_meta_index[] = { + {"unhook", api_hexchat_unhook}, + {NULL, NULL} +}; + +static luaL_Reg api_attrs_meta[] = { + {"__index", api_attrs_meta_index}, + {"__newindex", api_attrs_meta_newindex}, + {"__gc", api_attrs_meta_gc}, + {NULL, NULL} +}; + +static luaL_Reg api_list_meta[] = { + {"__index", api_list_meta_index}, + {"__newindex", api_list_meta_newindex}, + {"__gc", api_list_meta_gc}, + {NULL, NULL} +}; + +static int luaopen_hexchat(lua_State *L) +{ + lua_newtable(L); + luaL_setfuncs(L, api_hexchat, 0); + + lua_pushinteger(L, HEXCHAT_PRI_HIGHEST); lua_setfield(L, -2, "PRI_HIGHEST"); + lua_pushinteger(L, HEXCHAT_PRI_HIGH); lua_setfield(L, -2, "PRI_HIGH"); + lua_pushinteger(L, HEXCHAT_PRI_NORM); lua_setfield(L, -2, "PRI_NORM"); + lua_pushinteger(L, HEXCHAT_PRI_LOW); lua_setfield(L, -2, "PRI_LOW"); + lua_pushinteger(L, HEXCHAT_PRI_LOWEST); lua_setfield(L, -2, "PRI_LOWEST"); + lua_pushinteger(L, HEXCHAT_EAT_NONE); lua_setfield(L, -2, "EAT_NONE"); + lua_pushinteger(L, HEXCHAT_EAT_HEXCHAT); lua_setfield(L, -2, "EAT_HEXCHAT"); + lua_pushinteger(L, HEXCHAT_EAT_PLUGIN); lua_setfield(L, -2, "EAT_PLUGIN"); + lua_pushinteger(L, HEXCHAT_EAT_ALL); lua_setfield(L, -2, "EAT_ALL"); + + lua_newtable(L); + lua_newtable(L); + luaL_setfuncs(L, api_hexchat_prefs_meta, 0); + lua_setmetatable(L, -2); + lua_setfield(L, -2, "prefs"); + + lua_newtable(L); + lua_newtable(L); + luaL_setfuncs(L, api_hexchat_props_meta, 0); + lua_setmetatable(L, -2); + lua_setfield(L, -2, "props"); + + lua_newtable(L); + lua_newtable(L); + luaL_setfuncs(L, api_hexchat_pluginprefs_meta, 0); + lua_setmetatable(L, -2); + lua_setfield(L, -2, "pluginprefs"); + + luaL_newmetatable(L, "hook"); + lua_newtable(L); + luaL_setfuncs(L, api_hook_meta_index, 0); + lua_setfield(L, -2, "__index"); + lua_pop(L, 1); + + luaL_newmetatable(L, "context"); + lua_newtable(L); + lua_pushcfunction(L, api_hexchat_set_context); + lua_setfield(L, -2, "set"); + wrap_context(L, "find_context", api_hexchat_find_context); + wrap_context(L, "print", api_hexchat_print); + wrap_context(L, "emit_print", api_hexchat_emit_print); + wrap_context(L, "emit_print_attrs", api_hexchat_emit_print_attrs); + wrap_context(L, "command", api_hexchat_command); + wrap_context(L, "nickcmp", api_hexchat_nickcmp); + wrap_context(L, "get_info", api_hexchat_get_info); + wrap_context(L, "iterate", api_hexchat_iterate); + lua_setfield(L, -2, "__index"); + lua_pushcfunction(L, api_hexchat_context_meta_eq); + lua_setfield(L, -2, "__eq"); + lua_pop(L, 1); + + + luaL_newmetatable(L, "attrs"); + luaL_setfuncs(L, api_attrs_meta, 0); + lua_pop(L, 1); + + luaL_newmetatable(L, "list"); + luaL_setfuncs(L, api_list_meta, 0); + lua_pop(L, 1); + + return 1; +} + +static int pairs_closure(lua_State *L) +{ + lua_settop(L, 1); + if(luaL_getmetafield(L, 1, "__pairs")) + { + lua_insert(L, 1); + lua_call(L, 1, LUA_MULTRET); + return lua_gettop(L); + } + else + { + lua_pushvalue(L, lua_upvalueindex(1)); + lua_insert(L, 1); + lua_call(L, 1, LUA_MULTRET); + return lua_gettop(L); + } +} + +static void patch_pairs(lua_State *L) +{ + lua_getglobal(L, "pairs"); + lua_pushcclosure(L, pairs_closure, 1); + lua_setglobal(L, "pairs"); +} + +static void patch_clibs(lua_State *L) +{ + lua_pushnil(L); + while(lua_next(L, LUA_REGISTRYINDEX)) + { + if(lua_type(L, -2) == LUA_TLIGHTUSERDATA && lua_type(L, -1) == LUA_TTABLE) + { + lua_setfield(L, LUA_REGISTRYINDEX, "_CLIBS"); + lua_pop(L, 1); + break; + } + lua_pop(L, 1); + } +} + +static GPtrArray *scripts; + +static char *expand_buffer = NULL; +static char const *expand_path(char const *path) +{ + if(g_path_is_absolute(path)) + return path; +#ifndef G_OS_WIN32 + if(path[0] == '~') + { + if(!path[1] || path[1] == '/') + { + g_free(expand_buffer); + expand_buffer = g_build_filename(g_get_home_dir(), path + 1, NULL); + return expand_buffer; + } + else + { + char *user = g_strdup(path + 1); + char *slash_pos = strchr(user, '/'); + struct passwd *pw; + if(slash_pos) + *slash_pos = 0; + pw = getpwnam(user); + g_free(user); + if(pw) + { + slash_pos = strchr(path, '/'); + if(!slash_pos) + return pw->pw_dir; + + g_free(expand_buffer); + expand_buffer = g_strconcat(pw->pw_dir, slash_pos, NULL); + return expand_buffer; + } + else + { + return path; + } + } + } + else +#endif + { + g_free(expand_buffer); + expand_buffer = g_build_filename(hexchat_get_info(ph, "configdir"), "addons", path, NULL); + return expand_buffer; + } +} + +static inline int is_lua_file(char const *file) +{ + return g_str_has_suffix(file, ".lua") || g_str_has_suffix(file, ".luac"); +} + +static void prepare_state(lua_State *L, script_info *info) +{ + luaL_openlibs(L); + if(LUA_VERSION_NUM < 502) + patch_pairs(L); + if(LUA_VERSION_NUM > 502) + patch_clibs(L); + lua_getglobal(L, "debug"); + lua_getfield(L, -1, "traceback"); + info->traceback = luaL_ref(L, LUA_REGISTRYINDEX); + lua_pop(L, 1); + lua_pushlightuserdata(L, info); + lua_setfield(L, LUA_REGISTRYINDEX, registry_field); + luaopen_hexchat(L); + lua_setglobal(L, "hexchat"); + lua_getglobal(L, "hexchat"); + lua_getfield(L, -1, "print"); + lua_setglobal(L, "print"); + lua_pop(L, 1); +} + +static void run_unload_hook(hook_info *hook, lua_State *L) +{ + int base = lua_gettop(L); + + lua_rawgeti(L, LUA_REGISTRYINDEX, hook->ref); + if(lua_pcall(L, 0, 0, base)) + { + char const *error = lua_tostring(L, -1); + hexchat_printf(ph, "Lua error in unload hook: %s", error ? error : "(non-string error)"); + } + lua_settop(L, base); +} + +static void run_unload_hooks(script_info *info, void *unused) +{ + lua_State *L = info->state; + lua_rawgeti(L, LUA_REGISTRYINDEX, info->traceback); + g_ptr_array_foreach(info->unload_hooks, (GFunc)run_unload_hook, L); + lua_pop(L, 1); +} + +static void destroy_script(script_info *info) +{ + if (info) + { + g_clear_pointer(&info->hooks, g_ptr_array_unref); + g_clear_pointer(&info->unload_hooks, g_ptr_array_unref); + g_clear_pointer(&info->state, lua_close); + if (info->handle) + hexchat_plugingui_remove(ph, info->handle); + g_free(info->filename); + g_free(info->name); + g_free(info->description); + g_free(info->version); + g_free(info); + } +} + +static script_info *create_script(char const *file) +{ + int base; + char *filename_fs; + lua_State *L; + script_info *info = g_new0(script_info, 1); + info->hooks = g_ptr_array_new_with_free_func((GDestroyNotify)free_hook); + info->unload_hooks = g_ptr_array_new_with_free_func((GDestroyNotify)free_hook); + info->filename = g_strdup(expand_path(file)); + L = luaL_newstate(); + info->state = L; + if(!L) + { + hexchat_print(ph, "\00304Could not allocate memory for the script"); + destroy_script(info); + return NULL; + } + prepare_state(L, info); + lua_rawgeti(L, LUA_REGISTRYINDEX, info->traceback); + base = lua_gettop(L); + filename_fs = g_filename_from_utf8(info->filename, -1, NULL, NULL, NULL); + if(!filename_fs) + { + hexchat_printf(ph, "Invalid filename: %s", info->filename); + destroy_script(info); + return NULL; + } + if(luaL_loadfile(L, filename_fs)) + { + g_free(filename_fs); + hexchat_printf(ph, "Lua syntax error: %s", luaL_optstring(L, -1, "")); + destroy_script(info); + return NULL; + } + g_free(filename_fs); + info->status |= STATUS_ACTIVE; + if(lua_pcall(L, 0, 0, base)) + { + char const *error = lua_tostring(L, -1); + hexchat_printf(ph, "Lua error: %s", error ? error : "(non-string error)"); + destroy_script(info); + return NULL; + } + lua_pop(L, 1); + if(!info->name) + { + hexchat_printf(ph, "Lua script didn't register with hexchat.register"); + destroy_script(info); + return NULL; + } + return info; +} + +static script_info *get_script_by_file(char const *filename) +{ + char const *expanded = expand_path(filename); + guint i; + for(i = 0; i < scripts->len; i++) + { + script_info *script = scripts->pdata[i]; + if(!strcmp(script->filename, expanded)) + { + return script; + } + } + + return NULL; +} + +static int load_script(char const *file) +{ + script_info *info = get_script_by_file(file); + + if (info != NULL) + { + hexchat_print(ph, "Lua script is already loaded"); + return 0; + } + + info = create_script(file); + if (info) + { + g_ptr_array_add(scripts, info); + check_deferred(info); + } + + return 1; +} + +static int unload_script(char const *filename) +{ + script_info *script = get_script_by_file(filename); + + if (!script) + return 0; + + if(script->status & STATUS_ACTIVE) + script->status |= STATUS_DEFERRED_UNLOAD; + else + { + run_unload_hooks(script, NULL); + g_ptr_array_remove_fast(scripts, script); + } + + return 1; + +} + +static int reload_script(char const *filename) +{ + script_info *script = get_script_by_file(filename); + + if (!script) + return 0; + + if(script->status & STATUS_ACTIVE) + { + script->status |= STATUS_DEFERRED_RELOAD; + } + else + { + char *filename = g_strdup(script->filename); + run_unload_hooks(script, NULL); + g_ptr_array_remove_fast(scripts, script); + load_script(filename); + g_free(filename); + } + + return 1; +} + +static void autoload_scripts(void) +{ + char *path = g_build_filename(hexchat_get_info(ph, "configdir"), "addons", NULL); + GDir *dir = g_dir_open(path, 0, NULL); + if(dir) + { + char const *filename; + while((filename = g_dir_read_name(dir))) + { + if(is_lua_file(filename)) + load_script(filename); + } + g_dir_close(dir); + } + g_free(path); +} + +static script_info *interp = NULL; +static void create_interpreter(void) +{ + lua_State *L; + interp = g_new0(script_info, 1); + interp->hooks = g_ptr_array_new_with_free_func((GDestroyNotify)free_hook); + interp->unload_hooks = g_ptr_array_new_with_free_func((GDestroyNotify)free_hook); + interp->name = "lua interpreter"; + interp->description = ""; + interp->version = ""; + interp->handle = ph; + interp->filename = ""; + L = luaL_newstate(); + interp->state = L; + if(!L) + { + hexchat_print(ph, "\00304Could not allocate memory for the interpreter"); + g_free(interp); + interp = NULL; + return; + } + prepare_state(L, interp); +} + +static void destroy_interpreter(void) +{ + if(interp) + { + g_clear_pointer(&interp->hooks, g_ptr_array_unref); + g_clear_pointer(&interp->unload_hooks, g_ptr_array_unref); + g_clear_pointer(&interp->state, lua_close); + g_clear_pointer(&interp, g_free); + } +} + +static void inject_string(script_info *info, char const *line) +{ + lua_State *L = info->state; + int base, top; + char *ret_line; + gboolean force_ret = FALSE; + + if(line[0] == '=') + { + line++; + force_ret = TRUE; + } + ret_line = g_strconcat("return ", line, NULL); + + lua_rawgeti(L, LUA_REGISTRYINDEX, info->traceback); + base = lua_gettop(L); + if(luaL_loadbuffer(L, ret_line, strlen(ret_line), "@interpreter")) + { + if(!force_ret) + lua_pop(L, 1); + if(force_ret || luaL_loadbuffer(L, line, strlen(line), "@interpreter")) + { + hexchat_printf(ph, "Lua syntax error: %s", luaL_optstring(L, -1, "")); + lua_pop(L, 2); + g_free(ret_line); + return; + } + } + g_free(ret_line); + info->status |= STATUS_ACTIVE; + if(lua_pcall(L, 0, LUA_MULTRET, base)) + { + char const *error = lua_tostring(L, -1); + lua_pop(L, 2); + hexchat_printf(ph, "Lua error: %s", error ? error : "(non-string error)"); + return; + } + top = lua_gettop(L); + if(top > base) + { + int i; + luaL_Buffer b; + luaL_buffinit(L, &b); + for(i = base + 1; i <= top; i++) + { + if(i != base + 1) + luaL_addstring(&b, " "); + tostring(L, i); + luaL_addvalue(&b); + } + luaL_pushresult(&b); + hexchat_print(ph, lua_tostring(L, -1)); + lua_pop(L, top - base + 1); + } + lua_pop(L, 1); + check_deferred(info); +} + +static int command_load(char *word[], char *word_eol[], void *userdata) +{ + if(is_lua_file(word[2])) + { + load_script(word[2]); + return HEXCHAT_EAT_ALL; + } + else + return HEXCHAT_EAT_NONE; +} + +static int command_unload(char *word[], char *word_eol[], void *userdata) +{ + if(unload_script(word[2])) + return HEXCHAT_EAT_ALL; + else + return HEXCHAT_EAT_NONE; +} + +static int command_reload(char *word[], char *word_eol[], void *userdata) +{ + if(reload_script(word[2])) + return HEXCHAT_EAT_ALL; + else + return HEXCHAT_EAT_NONE; +} + +static int command_console_exec(char *word[], char *word_eol[], void *userdata) +{ + char const *channel = hexchat_get_info(ph, "channel"); + if(channel && !strcmp(channel, console_tab)) + { + if(interp) + { + hexchat_printf(ph, "> %s", word_eol[1]); + inject_string(interp, word_eol[1]); + } + return HEXCHAT_EAT_ALL; + } + return HEXCHAT_EAT_NONE; +} + +static void check_deferred(script_info *info) +{ + info->status &= ~STATUS_ACTIVE; + if(info->status & STATUS_DEFERRED_UNLOAD) + { + run_unload_hooks(info, NULL); + g_ptr_array_remove_fast(scripts, info); + } + else if(info->status & STATUS_DEFERRED_RELOAD) + { + if(info == interp) + { + run_unload_hooks(interp, NULL); + destroy_interpreter(); + create_interpreter(); + } + else + { + char *filename = g_strdup(info->filename); + run_unload_hooks(info, NULL); + g_ptr_array_remove_fast(scripts, info); + load_script(filename); + g_free(filename); + } + } +} + +static int command_lua(char *word[], char *word_eol[], void *userdata) +{ + if(!strcmp(word[2], "load")) + { + load_script(word[3]); + } + else if(!strcmp(word[2], "unload")) + { + if(!unload_script(word[3])) + hexchat_printf(ph, "Could not find a script by the name '%s'", word[3]); + } + else if(!strcmp(word[2], "reload")) + { + if(!reload_script(word[3])) + hexchat_printf(ph, "Could not find a script by the name '%s'", word[3]); + } + else if(!strcmp(word[2], "exec")) + { + if(interp) + inject_string(interp, word_eol[3]); + } + else if(!strcmp(word[2], "inject")) + { + script_info *script = get_script_by_file(word[3]); + if (script) + { + inject_string(script, word_eol[4]); + } + else + { + hexchat_printf(ph, "Could not find a script by the name '%s'", word[3]); + } + } + else if(!strcmp(word[2], "reset")) + { + if(interp) + { + if(interp->status & STATUS_ACTIVE) + { + interp->status |= STATUS_DEFERRED_RELOAD; + } + else + { + run_unload_hooks(interp, NULL); + destroy_interpreter(); + create_interpreter(); + } + } + } + else if(!strcmp(word[2], "list")) + { + guint i; + hexchat_print(ph, + "Name Version Filename Description\n" + "---- ------- -------- -----------\n"); + for(i = 0; i < scripts->len; i++) + { + script_info *info = scripts->pdata[i]; + char *basename = g_path_get_basename(info->filename); + hexchat_printf(ph, "%-16s %-8s %-20s %-10s\n", info->name, info->version, + basename, info->description); + g_free(basename); + } + if(interp) + hexchat_printf(ph, "%-16s %-8s", interp->name, plugin_version); + } + else if(!strcmp(word[2], "console")) + { + hexchat_commandf(ph, "query %s", console_tab); + } + else + { + hexchat_command(ph, "help lua"); + } + return HEXCHAT_EAT_ALL; +} + +/* Reinitialization safegaurd */ +static int initialized = 0; + +G_MODULE_EXPORT int hexchat_plugin_init(hexchat_plugin *plugin_handle, char **name, char **description, char **version, char *arg) +{ + if(initialized != 0) + { + hexchat_print(plugin_handle, "Lua interface already loaded\n"); + return 0; + } + + if (g_str_has_prefix(LUA_VERSION, "Lua ")) + { + strcat(plugin_version, "/"); + g_strlcat(plugin_version, LUA_VERSION + 4, sizeof(plugin_version)); + } + + *name = plugin_name; + *description = plugin_description; + *version = plugin_version; + + ph = plugin_handle; + initialized = 1; + + hexchat_hook_command(ph, "", HEXCHAT_PRI_NORM, command_console_exec, NULL, NULL); + hexchat_hook_command(ph, "LOAD", HEXCHAT_PRI_NORM, command_load, NULL, NULL); + hexchat_hook_command(ph, "UNLOAD", HEXCHAT_PRI_NORM, command_unload, NULL, NULL); + hexchat_hook_command(ph, "RELOAD", HEXCHAT_PRI_NORM, command_reload, NULL, NULL); + hexchat_hook_command(ph, "lua", HEXCHAT_PRI_NORM, command_lua, command_help, NULL); + + hexchat_printf(ph, "%s version %s loaded.\n", plugin_name, plugin_version); + + scripts = g_ptr_array_new_with_free_func((GDestroyNotify)destroy_script); + create_interpreter(); + + if(!arg) + autoload_scripts(); + return 1; +} + +G_MODULE_EXPORT int hexchat_plugin_deinit(hexchat_plugin *plugin_handle) +{ + guint i; + gboolean active = FALSE; + for(i = 0; i < scripts->len; i++) + { + if(((script_info*)scripts->pdata[i])->status & STATUS_ACTIVE) + { + active = TRUE; + break; + } + } + if(interp && interp->status & STATUS_ACTIVE) + active = TRUE; + if(active) + { + hexchat_print(ph, "\00304Cannot unload the lua plugin while there are active states"); + return 0; + } + if(interp) + run_unload_hooks(interp, NULL); + destroy_interpreter(); + g_ptr_array_foreach(scripts, (GFunc)run_unload_hooks, NULL); + g_clear_pointer(&scripts, g_ptr_array_unref); + g_clear_pointer(&expand_buffer, g_free); + return 1; +} diff --git a/hexchat/plugins/lua/lua.vcxproj b/hexchat/plugins/lua/lua.vcxproj new file mode 100644 index 0000000..5c0be68 --- /dev/null +++ b/hexchat/plugins/lua/lua.vcxproj @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup Label="Configuration"> + <PlatformToolset>v142</PlatformToolset> + <ConfigurationType>DynamicLibrary</ConfigurationType> + </PropertyGroup> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{4C0F3940-2EEE-4646-82F7-6CE75B9A72F4}</ProjectGuid> + <Keyword>Win32Proj</Keyword> + <RootNamespace>lua</RootNamespace> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + <Import Project="..\..\win32\hexchat.props" /> + <PropertyGroup> + <TargetName>$(LuaOutput)</TargetName> + <OutDir>$(HexChatRel)plugins\</OutDir> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;$(OwnFlags);%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>$(Glib);$(LuaInclude);..\..\src\common;$(HexChatLib);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <AdditionalDependencies>"$(LuaLib).lib";$(DepLibs);%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalLibraryDirectories>$(DepsRoot)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <ClCompile> + <PreprocessorDefinitions>WIN32;_WIN64;_AMD64_;NDEBUG;_WINDOWS;_USRDLL;$(OwnFlags);%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>$(Glib);$(LuaInclude);..\..\src\common;$(HexChatLib);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <AdditionalDependencies>"$(LuaLib).lib";$(DepLibs);%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalLibraryDirectories>$(DepsRoot)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <ClCompile Include="lua.c" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> +</Project> \ No newline at end of file diff --git a/hexchat/plugins/lua/lua.vcxproj.filters b/hexchat/plugins/lua/lua.vcxproj.filters new file mode 100644 index 0000000..9b41ebc --- /dev/null +++ b/hexchat/plugins/lua/lua.vcxproj.filters @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Source Files"> + <UniqueIdentifier>{f4eaf231-f095-42d3-8427-b2b6006cacb1}</UniqueIdentifier> + </Filter> + <Filter Include="Resource Files"> + <UniqueIdentifier>{0166c0f9-7968-4a09-9ef5-a5179c7746eb}</UniqueIdentifier> + </Filter> + </ItemGroup> + <ItemGroup> + <ClCompile Include="lua.c" /> + </ItemGroup> +</Project> \ No newline at end of file diff --git a/hexchat/plugins/lua/meson.build b/hexchat/plugins/lua/meson.build new file mode 100644 index 0000000..7faa305 --- /dev/null +++ b/hexchat/plugins/lua/meson.build @@ -0,0 +1,12 @@ +if cc.get_id() == 'msvc' + lua_dep = cc.find_library('lua51') +else + lua_dep = dependency(get_option('with-lua')) +endif + +shared_module('lua', 'lua.c', + dependencies: [libgio_dep, hexchat_plugin_dep, lua_dep], + install: true, + install_dir: plugindir, + name_prefix: '', +) diff --git a/hexchat/plugins/perl/generate_header b/hexchat/plugins/perl/generate_header new file mode 100644 index 0000000..7dd437c --- /dev/null +++ b/hexchat/plugins/perl/generate_header @@ -0,0 +1,58 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +sub header { + my $file = shift; + open my $input, "<", $file or die "Couldn't open '$file':$!"; + my @file = <$input>; + close $file; + return toc(@file); +} + +sub toc { + my @lines = @_; + for( @lines ) { + if( /^\s*$/s ) { $_ = qq{"\\n"\n}; next; } + if( /^\s*#/ ) { $_ = qq{"\\n"\n}; next; } + s/\\/\\\\/g; # double the number of \'s + s/"/\\"/g; + s/^\s*/"/; + s/\n/\\n"\n/; + } + return @lines; +} + +for my $files ( + [ "hexchat.pm.h", # output file + "lib/HexChat.pm", # input files + "lib/Xchat.pm", + "lib/HexChat/Embed.pm", + "lib/HexChat/List/Network.pm", + "lib/HexChat/List/Network/Entry.pm", + "lib/HexChat/List/Network/AutoJoin.pm", + ], + [ "irc.pm.h", # output file + "lib/IRC.pm" # input file + ] +) { + my ($output,@inputs) = @$files; + + open my $header, ">", $output or die "Couldn't open '$output': $!"; + + print $header qq["BEGIN {\\n"\n]; + for my $input ( @inputs ) { + (my $trimmed = $input) =~ s{^lib/}{}; + print $header qq["\$INC{'$trimmed'} = 'Compiled into the plugin.';\\n"\n]; + } + print $header qq["}\\n"\n]; + + for my $input ( @inputs ) { + print $header qq["{\\n"\n]; + print $header qq{"#line 1 \\"$input\\"\\n"\n}; + print $header header( $input ); + print $header qq["}\\n"\n]; + } + close $header; +} diff --git a/hexchat/plugins/perl/generate_header.py b/hexchat/plugins/perl/generate_header.py new file mode 100755 index 0000000..ba7e02a --- /dev/null +++ b/hexchat/plugins/perl/generate_header.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python3 + +import sys +from os.path import basename + +out_file = sys.argv[1] +in_files = sys.argv[2:] + + +def escape_perl(file): + ret = '' + for line in file: + # Escape " and \, strip empty space, shove in C strings. + ret += '"' + line.strip().replace('\\', '\\\\').replace('"', '\\"') + '\\n"\n' + return ret + + +with open(out_file, 'w') as o: + o.write('"BEGIN {\\n"\n') + for in_file in in_files: + o.write("\"$INC{{'{}'}} = 'Compiled into the plugin.';\\n\"\n".format(basename(in_file))) + o.write('"}\\n"\n') + + for in_file in in_files: + o.write('"{\\n"\n') + o.write('"#line 1 \\"{}\\"\\n"\n'.format(basename(in_file))) + with open(in_file) as i: + o.write(escape_perl(i)) + o.write('"}\\n"\n') diff --git a/hexchat/plugins/perl/lib/HexChat.pm b/hexchat/plugins/perl/lib/HexChat.pm new file mode 100644 index 0000000..d428a30 --- /dev/null +++ b/hexchat/plugins/perl/lib/HexChat.pm @@ -0,0 +1,556 @@ +$SIG{__WARN__} = sub { + my $message = shift @_; + my ($package) = caller; + + # redirect Gtk/Glib errors and warnings back to STDERR + my $message_levels = qr/ERROR|CRITICAL|WARNING|MESSAGE|INFO|DEBUG/i; + if( $message =~ /^(?:Gtk|GLib|Gdk)(?:-\w+)?-$message_levels/i ) { + print STDERR $message; + } else { + + if( defined &HexChat::Internal::print ) { + HexChat::print( $message ); + } else { + warn $message; + } + } +}; + +use File::Spec (); +use File::Basename (); +use File::Glob (); +use List::Util (); +use Symbol(); +use Time::HiRes (); +use Carp (); + +package HexChat; +use base qw(Exporter); +use strict; +use warnings; + +sub PRI_HIGHEST (); +sub PRI_HIGH (); +sub PRI_NORM (); +sub PRI_LOW (); +sub PRI_LOWEST (); + +sub EAT_NONE (); +sub EAT_HEXCHAT (); +sub EAT_PLUGIN (); +sub EAT_ALL (); + +sub KEEP (); +sub REMOVE (); +sub FD_READ (); +sub FD_WRITE (); +sub FD_EXCEPTION (); +sub FD_NOTSOCKET (); + +sub get_context; +sub HexChat::Internal::context_info; +sub HexChat::Internal::print; + +#keep compatibility with Xchat scripts +sub EAT_XCHAT (); +BEGIN { + *Xchat:: = *HexChat::; +} + +our %EXPORT_TAGS = ( + constants => [ + qw(PRI_HIGHEST PRI_HIGH PRI_NORM PRI_LOW PRI_LOWEST), # priorities + qw(EAT_NONE EAT_HEXCHAT EAT_XCHAT EAT_PLUGIN EAT_ALL), # callback return values + qw(FD_READ FD_WRITE FD_EXCEPTION FD_NOTSOCKET), # fd flags + qw(KEEP REMOVE), # timers + ], + hooks => [ + qw(hook_server hook_command hook_print hook_timer hook_fd unhook), + ], + util => [ + qw(register nickcmp strip_code send_modes), # misc + qw(print prnt printf prntf command commandf emit_print), # output + qw(find_context get_context set_context), # context + qw(get_info get_prefs get_list context_info user_info), # input + qw(plugin_pref_set plugin_pref_get plugin_pref_delete plugin_pref_list), #settings + ], +); + +$EXPORT_TAGS{all} = [ map { @{$_} } @EXPORT_TAGS{qw(constants hooks util)}]; +our @EXPORT = @{$EXPORT_TAGS{constants}}; +our @EXPORT_OK = @{$EXPORT_TAGS{all}}; + +sub register { + my ($package, $calling_package) = HexChat::Embed::find_pkg(); + my $pkg_info = HexChat::Embed::pkg_info( $package ); + my $filename = $pkg_info->{filename}; + my ($name, $version, $description, $callback) = @_; + + if( defined $pkg_info->{gui_entry} ) { + HexChat::print( "HexChat::register called more than once in " + . $pkg_info->{filename} ); + return (); + } + + $description = "" unless defined $description; + if( $callback ) { + $callback = HexChat::Embed::fix_callback( + $package, $calling_package, $callback + ); + } + $pkg_info->{shutdown} = $callback; + unless( $name && $name =~ /[[:print:]\w]/ ) { + $name = "Not supplied"; + } + unless( $version && $version =~ /\d+(?:\.\d+)?/ ) { + $version = "NaN"; + } + $pkg_info->{gui_entry} = + HexChat::Internal::register( $name, $version, $description, $filename ); + # keep with old behavior + return (); +} + +sub _process_hook_options { + my ($options, $keys, $store) = @_; + + unless( @$keys == @$store ) { + die 'Number of keys must match the size of the store'; + } + + my @results; + + if( ref( $options ) eq 'HASH' ) { + for my $index ( 0 .. @$keys - 1 ) { + my $key = $keys->[$index]; + if( exists( $options->{ $key } ) && defined( $options->{ $key } ) ) { + ${$store->[$index]} = $options->{ $key }; + } + } + } + +} + +sub hook_server { + return undef unless @_ >= 2; + my $message = shift; + my $callback = shift; + my $options = shift; + my ($package, $calling_package) = HexChat::Embed::find_pkg(); + + $callback = HexChat::Embed::fix_callback( + $package, $calling_package, $callback + ); + + my ($priority, $data) = ( HexChat::PRI_NORM, undef ); + _process_hook_options( + $options, + [qw(priority data)], + [\($priority, $data)], + ); + + my $pkg_info = HexChat::Embed::pkg_info( $package ); + my $hook = HexChat::Internal::hook_server( + $message, $priority, $callback, $data, $package + ); + push @{$pkg_info->{hooks}}, $hook if defined $hook; + return $hook; +} + +sub hook_command { + return undef unless @_ >= 2; + my $command = shift; + my $callback = shift; + my $options = shift; + my ($package, $calling_package) = HexChat::Embed::find_pkg(); + + $callback = HexChat::Embed::fix_callback( + $package, $calling_package, $callback + ); + + my ($priority, $help_text, $data) = ( HexChat::PRI_NORM, undef, undef ); + _process_hook_options( + $options, + [qw(priority help_text data)], + [\($priority, $help_text, $data)], + ); + + my $pkg_info = HexChat::Embed::pkg_info( $package ); + my $hook = HexChat::Internal::hook_command( + $command, $priority, $callback, $help_text, $data, $package + ); + push @{$pkg_info->{hooks}}, $hook if defined $hook; + return $hook; +} + +sub hook_print { + return undef unless @_ >= 2; + my $event = shift; + my $callback = shift; + my $options = shift; + my ($package, $calling_package) = HexChat::Embed::find_pkg(); + + $callback = HexChat::Embed::fix_callback( + $package, $calling_package, $callback + ); + + my ($priority, $run_after, $filter, $data) = ( HexChat::PRI_NORM, 0, 0, undef ); + _process_hook_options( + $options, + [qw(priority run_after_event filter data)], + [\($priority, $run_after, $filter, $data)], + ); + + if( $run_after and $filter ) { + Carp::carp( "HexChat::hook_print's run_after_event and filter options are mutually exclusive, you can only use of them at a time per hook" ); + return; + } + + if( $run_after ) { + my $cb = $callback; + $callback = sub { + my @args = @_; + hook_timer( 0, sub { + $cb->( @args ); + + if( ref $run_after eq 'CODE' ) { + $run_after->( @args ); + } + return REMOVE; + }); + return EAT_NONE; + }; + } + + if( $filter ) { + my $cb = $callback; + $callback = sub { + my @args = @{$_[0]}; + my $event_data = $_[1]; + my $event_name = $event; + my $last_arg = @args - 1; + + my @new = $cb->( \@args, $event_data, $event_name ); + + # allow changing event by returning the new value + if( @new > @args ) { + $event_name = pop @new; + } + + # a filter can either return the new results or it can modify + # @_ in place. + if( @new == @args ) { + emit_print( $event_name, @new[ 0 .. $last_arg ] ); + return EAT_ALL; + } elsif( + join( "\0", @{$_[0]} ) ne join( "\0", @args[ 0 .. $last_arg ] ) + ) { + emit_print( $event_name, @args[ 0 .. $last_arg ] ); + return EAT_ALL; + } + + return EAT_NONE; + }; + + } + + my $pkg_info = HexChat::Embed::pkg_info( $package ); + my $hook = HexChat::Internal::hook_print( + $event, $priority, $callback, $data, $package + ); + push @{$pkg_info->{hooks}}, $hook if defined $hook; + return $hook; +} + +sub hook_timer { + return undef unless @_ >= 2; + my ($timeout, $callback, $data) = @_; + my ($package, $calling_package) = HexChat::Embed::find_pkg(); + + $callback = HexChat::Embed::fix_callback( + $package, $calling_package, $callback + ); + + if( + ref( $data ) eq 'HASH' && exists( $data->{data} ) + && defined( $data->{data} ) + ) { + $data = $data->{data}; + } + + my $pkg_info = HexChat::Embed::pkg_info( $package ); + my $hook = HexChat::Internal::hook_timer( $timeout, $callback, $data, $package ); + push @{$pkg_info->{hooks}}, $hook if defined $hook; + return $hook; +} + +sub hook_fd { + return undef unless @_ >= 2; + my ($fd, $callback, $options) = @_; + return undef unless defined $fd && defined $callback; + + my $fileno = fileno $fd; + return undef unless defined $fileno; # no underlying fd for this handle + + my ($package, $calling_package) = HexChat::Embed::find_pkg(); + $callback = HexChat::Embed::fix_callback( + $package, $calling_package, $callback + ); + + my ($flags, $data) = (HexChat::FD_READ, undef); + _process_hook_options( + $options, + [qw(flags data)], + [\($flags, $data)], + ); + + my $cb = sub { + my $userdata = shift; + return $userdata->{CB}->( + $userdata->{FD}, $userdata->{FLAGS}, $userdata->{DATA}, + ); + }; + + my $pkg_info = HexChat::Embed::pkg_info( $package ); + my $hook = HexChat::Internal::hook_fd( + $fileno, $cb, $flags, { + DATA => $data, FD => $fd, CB => $callback, FLAGS => $flags, + }, + $package + ); + push @{$pkg_info->{hooks}}, $hook if defined $hook; + return $hook; +} + +sub unhook { + my $hook = shift @_; + my $package = shift @_; + ($package) = caller unless $package; + my $pkg_info = HexChat::Embed::pkg_info( $package ); + + if( defined( $hook ) + && $hook =~ /^\d+$/ + && grep { $_ == $hook } @{$pkg_info->{hooks}} ) { + $pkg_info->{hooks} = [grep { $_ != $hook } @{$pkg_info->{hooks}}]; + return HexChat::Internal::unhook( $hook ); + } + return (); +} + +sub _do_for_each { + my ($cb, $channels, $servers) = @_; + + # not specifying any channels or servers is not the same as specifying + # undef for both + # - not specifying either results in calling the callback inthe current ctx + # - specifying undef for for both results in calling the callback in the + # front/currently selected tab + if( @_ == 3 && !($channels || $servers) ) { + $channels = [ undef ]; + $servers = [ undef ]; + } elsif( !($channels || $servers) ) { + $cb->(); + return 1; + } + + $channels = [ $channels ] unless ref( $channels ) eq 'ARRAY'; + + if( $servers ) { + $servers = [ $servers ] unless ref( $servers ) eq 'ARRAY'; + } else { + $servers = [ undef ]; + } + + my $num_done = 0; + my $old_ctx = HexChat::get_context(); + for my $server ( @$servers ) { + for my $channel ( @$channels ) { + if( HexChat::set_context( $channel, $server ) ) { + $cb->(); + $num_done++ + } + } + } + HexChat::set_context( $old_ctx ); + return $num_done; +} + +sub print { + my $text = shift @_; + return "" unless defined $text; + if( ref( $text ) eq 'ARRAY' ) { + if( $, ) { + $text = join $, , @$text; + } else { + $text = join "", @$text; + } + } + + return _do_for_each( + sub { HexChat::Internal::print( $text ); }, + @_ + ); +} + +sub printf { + my $format = shift; + HexChat::print( sprintf( $format, @_ ) ); +} + +# make HexChat::prnt() and HexChat::prntf() as aliases for HexChat::print() and +# HexChat::printf(), mainly useful when these functions are exported +sub prnt { + goto &HexChat::print; +} + +sub prntf { + goto &HexChat::printf; +} + +sub command { + my $command = shift; + return "" unless defined $command; + my @commands; + + if( ref( $command ) eq 'ARRAY' ) { + @commands = @$command; + } else { + @commands = ($command); + } + + return _do_for_each( + sub { HexChat::Internal::command( $_ ) foreach @commands }, + @_ + ); +} + +sub commandf { + my $format = shift; + HexChat::command( sprintf( $format, @_ ) ); +} + +sub plugin_pref_set { + my $setting = shift // return 0; + my $value = shift // return 0; + + return HexChat::Internal::plugin_pref_set($setting, $value); +} + +sub plugin_pref_get { + my $setting = shift // return 0; + + return HexChat::Internal::plugin_pref_get($setting); +} + +sub plugin_pref_delete { + my $setting = shift // return 0; + + return HexChat::Internal::plugin_pref_delete($setting); +} + +sub plugin_pref_list { + my %list = HexChat::Internal::plugin_pref_list(); + + return \%list; +} + +sub set_context { + my $context; + if( @_ == 2 ) { + my ($channel, $server) = @_; + $context = HexChat::find_context( $channel, $server ); + } elsif( @_ == 1 ) { + if( defined $_[0] && $_[0] =~ /^\d+$/ ) { + $context = $_[0]; + } else { + $context = HexChat::find_context( $_[0] ); + } + } elsif( @_ == 0 ) { + $context = HexChat::find_context(); + } + return $context ? HexChat::Internal::set_context( $context ) : 0; +} + +sub get_info { + my $id = shift; + my $info; + + if( defined( $id ) ) { + if( grep { $id eq $_ } qw(state_cursor id) ) { + $info = HexChat::get_prefs( $id ); + } else { + $info = HexChat::Internal::get_info( $id ); + } + } + return $info; +} + +sub user_info { + my $nick = HexChat::strip_code(shift @_ || HexChat::get_info( "nick" )); + my $user; + for (HexChat::get_list( "users" ) ) { + if ( HexChat::nickcmp( $_->{nick}, $nick ) == 0 ) { + $user = $_; + last; + } + } + return $user; +} + +sub context_info { + my $ctx = shift @_ || HexChat::get_context; + my $old_ctx = HexChat::get_context; + my @fields = ( + qw(away channel charset host id inputbox libdirfs modes network), + qw(nick nickserv server topic version win_ptr win_status), + qw(configdir xchatdir xchatdirfs state_cursor), + ); + + if( HexChat::set_context( $ctx ) ) { + my %info; + for my $field ( @fields ) { + $info{$field} = HexChat::get_info( $field ); + } + + my $ctx_info = HexChat::Internal::context_info; + @info{keys %$ctx_info} = values %$ctx_info; + + HexChat::set_context( $old_ctx ); + return \%info; + } else { + return undef; + } +} + +sub get_list { + unless( grep { $_[0] eq $_ } qw(channels dcc ignore notify users networks) ) { + Carp::carp( "'$_[0]' does not appear to be a valid list name" ); + } + if( $_[0] eq 'networks' ) { + return HexChat::List::Network->get(); + } else { + return HexChat::Internal::get_list( $_[0] ); + } +} + +sub strip_code { + my $pattern = qr< + \cB| #Bold + \cC\d{0,2}(?:,\d{1,2})?| #Color + \e\[(?:\d{1,2}(?:;\d{1,2})*)?m| # ANSI color code + \cG| #Beep + \cO| #Reset + \cV| #Reverse + \c_ #Underline + >x; + + if( defined wantarray ) { + my $msg = shift; + $msg =~ s/$pattern//g; + return $msg; + } else { + $_[0] =~ s/$pattern//g if defined $_[0]; + } +} + +1 diff --git a/hexchat/plugins/perl/lib/HexChat/Embed.pm b/hexchat/plugins/perl/lib/HexChat/Embed.pm new file mode 100644 index 0000000..c033d3c --- /dev/null +++ b/hexchat/plugins/perl/lib/HexChat/Embed.pm @@ -0,0 +1,348 @@ +package HexChat::Embed; +use strict; +use warnings; +use Data::Dumper; +# list of loaded scripts keyed by their package names +# The package names are generated from the filename of the script using +# the file2pkg() function. +# The values of this hash are hash references with the following keys: +# filename +# The full path to the script. +# gui_entry +# This is hexchat_plugin pointer that is used to remove the script from +# Plugins and Scripts window when a script is unloaded. This has also +# been converted with the PTR2IV() macro. +# hooks +# This is an array of hooks that are associated with this script. +# These are pointers that have been converted with the PTR2IV() macro. +# inner_packages +# Other packages that are defined in a script. This is not recommended +# partly because these will also get removed when a script is unloaded. +# loaded_at +# A timestamp of when the script was loaded. The value is whatever +# Time::HiRes::time() returns. This is used to retain load order when +# using the RELOADALL command. +# shutdown +# This is either a code ref or undef. It will be executed just before a +# script is unloaded. +our %scripts; + +# This is a mapping of "inner package" => "containing script package" +our %owner_package; + +# used to keep track of which package a hook belongs to, if the normal way of +# checking which script is calling a hook function fails this will be used +# instead. When a hook is created this will be copied to the HookData structure +# and when a callback is invoked this it will be used to set this value. +our $current_package; + +sub load { + my $file = expand_homedir( shift @_ ); + my $package = file2pkg( $file ); + + if( exists $scripts{$package} ) { + my $pkg_info = pkg_info( $package ); + my $filename = File::Basename::basename( $pkg_info->{filename} ); + HexChat::printf( + qq{'%s' already loaded from '%s'.\n}, + $filename, $pkg_info->{filename} + ); + HexChat::print( + 'If this is a different script then it rename and try '. + 'loading it again.' + ); + return 2; + } + + if( open my $source_handle, $file ) { + my $source = do {local $/; <$source_handle>}; + close $source_handle; + # we shouldn't care about things after __END__ + $source =~ s/^__END__.*//ms; + + # this must come before the eval or the filename will not be found in + # HexChat::register + $scripts{$package}{filename} = $file; + $scripts{$package}{loaded_at} = Time::HiRes::time(); + + # this must be done before the error check so the unload will remove + # any inner packages defined by the script. if a script fails to load + # then any inner packages need to be removed as well. + my @inner_packages = $source =~ + m/^\s*package \s+ + ((?:[^\W:]+(?:::)?)+)\s*? # package name + # strict version number + (?:\d+(?:[.]\d+) # positive integer or decimal-fraction + |v\d+(?:[.]\d+){2,})? # dotted-decimal v-string + [{;] + /mgx; + + # check if any inner package defined in the to be loaded script has + # already been defined by another script + my @conflicts; + for my $inner ( @inner_packages ) { + if( exists $owner_package{ $inner } ) { + push @conflicts, $inner; + } + } + + # report conflicts and bail out + if( @conflicts ) { + my $error_message = + "'$file' won't be loaded due to conflicting inner packages:\n"; + for my $conflict_package ( @conflicts ) { + $error_message .= " $conflict_package already defined in " . + pkg_info($owner_package{ $conflict_package })->{filename}."\n"; + } + HexChat::print( $error_message ); + + return 2; + } + + my $full_path = File::Spec->rel2abs( $file ); + $source =~ s/^/#line 1 "$full_path"\n\x7Bpackage $package;/; + + # make sure we add the closing } even if the last line is a comment + if( $source =~ /^#.*\Z/m ) { + $source =~ s/^(?=#.*\Z)/\x7D/m; + } else { + $source =~ s/\Z/\x7D/; + } + + $scripts{$package}{inner_packages} = [ @inner_packages ]; + @owner_package{ @inner_packages } = ($package) x @inner_packages; + _do_eval( $source ); + + unless( exists $scripts{$package}{gui_entry} ) { + $scripts{$package}{gui_entry} = + HexChat::Internal::register( + "", "unknown", "", $file + ); + } + + if( $@ ) { + # something went wrong + $@ =~ s/\(eval \d+\)/$file/g; + HexChat::print( "Error loading '$file':\n$@\n" ); + # make sure the script list doesn't contain false information + unload( $scripts{$package}{filename} ); + return 1; + } + } else { + HexChat::print( "Error opening '$file': $!\n" ); + return 2; + } + + return 0; +} + +sub _do_eval { + no strict; + no warnings; + eval $_[0]; +} + +sub unload { + my $file = shift @_; + my $package = file2pkg( $file ); + my $pkg_info = pkg_info( $package ); + + if( $pkg_info ) { + # take care of the shutdown callback + if( exists $pkg_info->{shutdown} ) { + # allow incorrectly written scripts to be unloaded + eval { + if( ref $pkg_info->{shutdown} eq 'CODE' ) { + $pkg_info->{shutdown}->(); + } elsif ( $pkg_info->{shutdown} ) { + no strict 'refs'; + &{$pkg_info->{shutdown}}; + } + }; + } + + if( exists $pkg_info->{hooks} ) { + for my $hook ( @{$pkg_info->{hooks}} ) { + HexChat::unhook( $hook, $package ); + } + } + + if( exists $pkg_info->{gui_entry} ) { + plugingui_remove( $pkg_info->{gui_entry} ); + } + + delete @owner_package{ @{$pkg_info->{inner_packages}} }; + for my $inner_package ( @{$pkg_info->{inner_packages}} ) { + Symbol::delete_package( $inner_package ); + } + Symbol::delete_package( $package ); + delete $scripts{$package}; + return HexChat::EAT_ALL; + } else { + HexChat::print( qq{"$file" is not loaded.\n} ); + return HexChat::EAT_NONE; + } +} + +sub unload_all { + for my $package ( keys %scripts ) { + unload( $scripts{$package}->{filename} ); + } + + return HexChat::EAT_ALL; +} + +sub reload { + my $file = shift @_; + my $package = file2pkg( $file ); + my $pkg_info = pkg_info( $package ); + my $fullpath = $file; + + if( $pkg_info ) { + $fullpath = $pkg_info->{filename}; + unload( $file ); + } + + load( $fullpath ); + return HexChat::EAT_ALL; +} + +sub reload_all { + my @dirs = HexChat::get_info( "configdir" ); + push @dirs, File::Spec->catdir( $dirs[0], "plugins" ); + for my $dir ( @dirs ) { + my $auto_load_glob = File::Spec->catfile( $dir, "*.pl" ); + my @scripts = map { $_->{filename} } + sort { $a->{loaded_at} <=> $b->{loaded_at} } values %scripts; + push @scripts, File::Glob::bsd_glob( $auto_load_glob ); + + my %seen; + @scripts = grep { !$seen{ $_ }++ } @scripts; + + unload_all(); + for my $script ( @scripts ) { + if( !pkg_info( file2pkg( $script ) ) ) { + load( $script ); + } + } + } +} + +sub evaluate { + my ($code) = @_; + + my @results = eval $code; + HexChat::print $@ if $@; #print warnings + + local $Data::Dumper::Sortkeys = 1; + local $Data::Dumper::Terse = 1; + + if (@results > 1) { + HexChat::print Dumper \@results; + } + elsif (ref $results[0] || !$results[0]) { + HexChat::print Dumper $results[0]; + } + else { + HexChat::print $results[0]; + } + + return HexChat::EAT_HEXCHAT; +}; + +sub expand_homedir { + my $file = shift @_; + + if ( $^O eq "MSWin32" ) { + $file =~ s/^~/$ENV{USERPROFILE}/; + } else { + $file =~ s{^~}{ + (getpwuid($>))[7] || $ENV{HOME} || $ENV{LOGDIR} + }ex; + } + return $file; +} + +sub file2pkg { + my $string = File::Basename::basename( shift @_ ); + $string =~ s/\.pl$//i; + $string =~ s|([^A-Za-z0-9/])|'_'.unpack("H*",$1)|eg; + return "HexChat::Script::" . $string; +} + +sub pkg_info { + my $package = shift @_; + return $scripts{$package}; +} + +sub find_external_pkg { + my $level = 1; + + while( my @frame = caller( $level ) ) { + return @frame if $frame[0] !~ /(?:^IRC$|^HexChat)/; + $level++; + } + return; +} + +sub find_pkg { + my $level = 1; + + while( my ($package, $file, $line) = caller( $level ) ) { + return $package if $package =~ /^HexChat::Script::/; + $level++; + } + + my $current_package = get_current_package(); + if( defined $current_package ) { + return $current_package; + } + + my @frame = find_external_pkg(); + my $location; + + if( $frame[0] or $frame[1] ) { + my $calling_package = $frame[0]; + if( defined( my $owner = $owner_package{ $calling_package } ) ) { + return ($owner, $calling_package); + } + + $location = $frame[1] ? $frame[1] : "package $frame[0]"; + $location .= " line $frame[2]"; + } else { + $location = "unknown location"; + } + + die "Unable to determine which script this hook belongs to. at $location\n"; + +} + +# convert function names into code references +sub fix_callback { + my ($package, $calling_package, $callback) = @_; + + unless( ref $callback ) { + unless( $callback =~ /::/ ) { + my $prefix = defined $calling_package ? $calling_package : $package; + $callback =~ s/^/${prefix}::/; + } + + no strict 'subs'; + $callback = \&{$callback}; + } + + return $callback; +} + +sub get_current_package { + return $current_package; +} + +sub set_current_package { + my $old_package = $current_package; + $current_package = shift; + + return $old_package; +} + +1 diff --git a/hexchat/plugins/perl/lib/HexChat/List/Network.pm b/hexchat/plugins/perl/lib/HexChat/List/Network.pm new file mode 100644 index 0000000..64b3d14 --- /dev/null +++ b/hexchat/plugins/perl/lib/HexChat/List/Network.pm @@ -0,0 +1,33 @@ +package HexChat::List::Network; +use strict; +use warnings; +use Storable qw(dclone); +my $last_modified; +my @servers; + +sub get { + my $server_file = HexChat::get_info( "configdir" ) . "/servlist.conf"; + + # recreate the list only if the server list file has changed + if( -f $server_file && + (!defined $last_modified || $last_modified != -M $server_file ) ) { + $last_modified = -M _; + + @servers = (); + if( open my $fh, "<", $server_file ) { + local $/ = "\n\n"; + while( my $record = <$fh> ) { + chomp $record; + next if $record =~ /^v=/; # skip the version line + push @servers, HexChat::List::Network::Entry::parse( $record ); + } + } else { + warn "Unable to open '$server_file': $!"; + } + } + + my $clone = dclone( \@servers ); + return @$clone; +} + +1 diff --git a/hexchat/plugins/perl/lib/HexChat/List/Network/AutoJoin.pm b/hexchat/plugins/perl/lib/HexChat/List/Network/AutoJoin.pm new file mode 100644 index 0000000..cc51af2 --- /dev/null +++ b/hexchat/plugins/perl/lib/HexChat/List/Network/AutoJoin.pm @@ -0,0 +1,80 @@ +package HexChat::List::Network::AutoJoin; +use strict; +use warnings; + +use overload +# '%{}' => \&as_hash, +# '@{}' => \&as_array, + '""' => 'as_string', + '0+' => 'as_bool'; + +sub new { + my $class = shift; + + my @autojoins; + + return bless \@autojoins, $class; +} + +sub add { + my $self = shift; + + my $line = shift; + + my ( $channel, $key ) = split /,/, $line, 2; + $key = $key || ''; + + push @$self, { + channel => $channel, + key => $key, + }; +} + +sub channels { + my $self = shift; + + if( wantarray ) { + return map { $_->{channel} } @$self; + } else { + return scalar @$self; + } +} + +sub keys { + my $self = shift; + return map { $_->{key} } @$self ; + +} + +sub pairs { + my $self = shift; + + my @channels = $self->channels; + my @keys = $self->keys; + + my @pairs = map { $_ => shift @keys } @channels; +} + +sub as_hash { + my $self = shift; + return +{ $self->pairs }; +} + +sub as_string { + my $self = shift; + return join " ", + join( ",", $self->channels ), + join( ",", $self->keys ); +} + +sub as_array { + my $self = shift; + return [ map { \%$_ } @$self ]; +} + +sub as_bool { + my $self = shift; + return $self->channels ? 1 : ""; +} + +1 diff --git a/hexchat/plugins/perl/lib/HexChat/List/Network/Entry.pm b/hexchat/plugins/perl/lib/HexChat/List/Network/Entry.pm new file mode 100644 index 0000000..828a779 --- /dev/null +++ b/hexchat/plugins/perl/lib/HexChat/List/Network/Entry.pm @@ -0,0 +1,106 @@ +package HexChat::List::Network::Entry; +use strict; +use warnings; + +my %key_for = ( + I => "irc_nick1", + i => "irc_nick2", + U => "irc_user_name", + R => "irc_real_name", + P => "server_password", + B => "nickserv_password", + N => "network", + D => "selected", + E => "encoding", +); +my $letter_key_re = join "|", keys %key_for; + +sub parse { + my $data = shift; + my $entry = { + irc_nick1 => undef, + irc_nick2 => undef, + irc_user_name => undef, + irc_real_name => undef, + server_password => undef, + + # the order of the channels need to be maintained + # list of { channel => .., key => ... } + autojoins => HexChat::List::Network::AutoJoin->new( '' ), + connect_commands => [], + flags => {}, + selected => undef, + encoding => undef, + servers => [], + nickserv_password => undef, + network => undef, + }; + + my @fields = split /\n/, $data; + chomp @fields; + + $entry->{ autojoins } = HexChat::List::Network::AutoJoin->new(); + + for my $field ( @fields ) { + SWITCH: for ( $field ) { + /^($letter_key_re)=(.*)/ && do { + $entry->{ $key_for{ $1 } } = $2; + last SWITCH; + }; + + /^J.(.*)/ && do { + $entry->{ autojoins }->add( $1 ); + }; + + /^F.(.*)/ && do { + $entry->{ flags } = parse_flags( $1 ); + }; + + /^S.(.+)/ && do { + push @{$entry->{servers}}, parse_server( $1 ); + }; + + /^C.(.+)/ && do { + push @{$entry->{connect_commands}}, $1; + }; + } + } + +# $entry->{ autojoins } = $entry->{ autojoin_channels }; + return $entry; +} + +sub parse_flags { + my $value = shift || 0; + my %flags; + + $flags{ "cycle" } = $value & 1 ? 1 : 0; + $flags{ "use_global" } = $value & 2 ? 1 : 0; + $flags{ "use_ssl" } = $value & 4 ? 1 : 0; + $flags{ "autoconnect" } = $value & 8 ? 1 : 0; + $flags{ "use_proxy" } = $value & 16 ? 1 : 0; + $flags{ "allow_invalid" } = $value & 32 ? 1 : 0; + + return \%flags; +} + +sub parse_server { + my $data = shift; + if( $data ) { + my ($host, $port) = split /\//, $data; + unless( $port ) { + my @parts = split /:/, $host; + + # if more than 2 then we are probably dealing with a IPv6 address + # if less than 2 then no port was specified + if( @parts == 2 ) { + $port = $parts[1]; + } + } + + $port ||= 6667; + return { host => $host, port => $port }; + } +} + +1 diff --git a/hexchat/plugins/perl/lib/IRC.pm b/hexchat/plugins/perl/lib/IRC.pm new file mode 100644 index 0000000..e642fa3 --- /dev/null +++ b/hexchat/plugins/perl/lib/IRC.pm @@ -0,0 +1,257 @@ + +package IRC; +sub IRC::register { + my ($script_name, $version, $callback) = @_; + my $package = caller; + $callback = Xchat::Embed::fix_callback( $package, undef, $callback) if $callback; + Xchat::register( $script_name, $version, undef, $callback ); +} + + +sub IRC::add_command_handler { + my ($command, $callback) = @_; + my $package = caller; + + $callback = Xchat::Embed::fix_callback( $package, undef, $callback ); + + # starting index for word_eol array + # this is for compatibility with '' as the command + my $start_index = $command ? 1 : 0; + + Xchat::hook_command( $command, + sub { + no strict 'refs'; + return &{$callback}($_[1][$start_index]); + } + ); + return; +} + +sub IRC::add_message_handler { + my ($message, $callback) = @_; + my $package = caller; + $callback = Xchat::Embed::fix_callback( $package, undef, $callback ); + + Xchat::hook_server( $message, + sub { + no strict 'refs'; + return &{$callback}( $_[1][0] ); + } + ); + return; +} + +sub IRC::add_print_handler { + my ($event, $callback) = @_; + my $package = caller; + $callback = Xchat::Embed::fix_callback( $package, undef, $callback ); + Xchat::hook_print( $event, + sub { + my @word = @{$_[0]}; + no strict 'refs'; + return &{$callback}( join( ' ', @word[0..3] ), @word ); + } + ); + return; +} + +sub IRC::add_timeout_handler { + my ($timeout, $callback) = @_; + my $package = caller; + $callback = Xchat::Embed::fix_callback( $package, undef, $callback ); + Xchat::hook_timer( $timeout, + sub { + no strict 'refs'; + &{$callback}; + return 0; + } + ); + return; +} + +sub IRC::command { + my $command = shift; + if( $command =~ m{^/} ) { + $command =~ s{^/}{}; + Xchat::command( $command ); + } else { + Xchat::command( qq[say $command] ); + } +} + +sub IRC::command_with_channel { + my ($command, $channel, $server) = @_; + my $old_ctx = Xchat::get_context; + my $ctx = Xchat::find_context( $channel, $server ); + + if( $ctx ) { + Xchat::set_context( $ctx ); + IRC::command( $command ); + Xchat::set_context( $ctx ); + } +} + +sub IRC::command_with_server { + my ($command, $server) = @_; + my $old_ctx = Xchat::get_context; + my $ctx = Xchat::find_context( undef, $server ); + + if( $ctx ) { + Xchat::set_context( $ctx ); + IRC::command( $command ); + Xchat::set_context( $ctx ); + } +} + +sub IRC::dcc_list { + my @dccs; + for my $dcc ( Xchat::get_list( 'dcc' ) ) { + push @dccs, $dcc->{nick}; + push @dccs, $dcc->{file} ? $dcc->{file} : ''; + push @dccs, @{$dcc}{qw(type status cps size)}; + push @dccs, $dcc->{type} == 0 ? $dcc->{pos} : $dcc->{resume}; + push @dccs, $dcc->{address32}; + push @dccs, $dcc->{destfile} ? $dcc->{destfile} : ''; + } + return @dccs; +} + +sub IRC::channel_list { + my @channels; + for my $channel ( Xchat::get_list( 'channels' ) ) { + push @channels, @{$channel}{qw(channel server)}, + Xchat::context_info( $channel->{context} )->{nick}; + } + return @channels; +} + +sub IRC::get_info { + my $id = shift; + my @ids = qw(version nick channel server configdir xchatdir away network host topic); + + if( $id >= 0 && $id <= 8 && $id != 5 ) { + my $info = Xchat::get_info($ids[$id]); + return defined $info ? $info : ''; + } else { + if( $id == 5 ) { + return Xchat::get_info( 'away' ) ? 1 : 0; + } else { + return 'Error2'; + } + } +} + +sub IRC::get_prefs { + return 'Unknown variable' unless defined $_[0]; + my $result = Xchat::get_prefs(shift); + return defined $result ? $result : 'Unknown variable'; +} + +sub IRC::ignore_list { + my @ignores; + for my $ignore ( Xchat::get_list( 'ignore' ) ) { + push @ignores, $ignore->{mask}; + my $flags = $ignore->{flags}; + push @ignores, $flags & 1, $flags & 2, $flags & 4, $flags & 8, $flags & 16, + $flags & 32, ':'; + } + return @ignores; +} + +sub IRC::print { + Xchat::print( $_ ) for @_; + return; +} + +sub IRC::print_with_channel { + Xchat::print( @_ ); +} + +sub IRC::send_raw { + Xchat::commandf( qq[quote %s], shift ); +} + +sub IRC::server_list { + my @servers; + for my $channel ( Xchat::get_list( 'channels' ) ) { + push @servers, $channel->{server} if $channel->{server}; + } + return @servers; +} + +sub IRC::user_info { + my $user; + if( @_ > 0 ) { + $user = Xchat::user_info( shift ); + } else { + $user = Xchat::user_info(); + } + + my @info; + if( $user ) { + push @info, $user->{nick}; + if( $user->{host} ) { + push @info, $user->{host}; + } else { + push @info, 'FETCHING'; + } + push @info, $user->{prefix} eq '@' ? 1 : 0; + push @info, $user->{prefix} eq '+' ? 1 : 0; + } + return @info; +} + +sub IRC::user_list { + my ($channel, $server) = @_; + my $ctx = Xchat::find_context( $channel, $server ); + my $old_ctx = Xchat::get_context; + + if( $ctx ) { + Xchat::set_context( $ctx ); + my @users; + for my $user ( Xchat::get_list( 'users' ) ) { + push @users, $user->{nick}; + if( $user->{host} ) { + push @users, $user->{host}; + } else { + push @users, 'FETCHING'; + } + push @users, $user->{prefix} eq '@' ? 1 : 0; + push @users, $user->{prefix} eq '+' ? 1 : 0; + push @users, ':'; + } + Xchat::set_context( $old_ctx ); + return @users; + } else { + return; + } +} + +sub IRC::user_list_short { + my ($channel, $server) = @_; + my $ctx = Xchat::find_context( $channel, $server ); + my $old_ctx = Xchat::get_context; + + if( $ctx ) { + Xchat::set_context( $ctx ); + my @users; + for my $user ( Xchat::get_list( 'users' ) ) { + my $nick = $user->{nick}; + my $host = $user->{host} || 'FETCHING'; + push @users, $nick, $host; + } + Xchat::set_context( $old_ctx ); + return @users; + } else { + return; + } + +} + +sub IRC::add_user_list {} +sub IRC::sub_user_list {} +sub IRC::clear_user_list {} +sub IRC::notify_list {} +sub IRC::perl_script_list {} + +1 diff --git a/hexchat/plugins/perl/lib/Xchat.pm b/hexchat/plugins/perl/lib/Xchat.pm new file mode 100644 index 0000000..2a95674 --- /dev/null +++ b/hexchat/plugins/perl/lib/Xchat.pm @@ -0,0 +1 @@ +require HexChat; diff --git a/hexchat/plugins/perl/meson.build b/hexchat/plugins/perl/meson.build new file mode 100644 index 0000000..ebcf35b --- /dev/null +++ b/hexchat/plugins/perl/meson.build @@ -0,0 +1,92 @@ +generate_perl_header = find_program('generate_header.py') + +hexchat_perl_module = custom_target('hexchat-perl-header', + input: [ + 'lib/HexChat.pm', + 'lib/Xchat.pm', + 'lib/HexChat/Embed.pm', + 'lib/HexChat/List/Network.pm', + 'lib/HexChat/List/Network/Entry.pm', + 'lib/HexChat/List/Network/AutoJoin.pm', + ], + output: 'hexchat.pm.h', + command: [generate_perl_header, '@OUTPUT@', '@INPUT@'] +) + +perl_cflags = [] +irc_perl_module = [] + +if get_option('with-perl-legacy-api') + irc_perl_module = custom_target('irc-perl-header', + input: 'lib/IRC.pm', + output: 'irc.pm.h', + command: [generate_perl_header, '@OUTPUT@', '@INPUT@'] + ) + perl_cflags += '-DOLD_PERL' +endif + +perl = find_program(get_option('with-perl')) + +ret = run_command([perl, '-MExtUtils::Embed', '-e', 'ccopts']) +if ret.returncode() != 0 + error('perl: Failed to get cflags') +endif +foreach flag : ret.stdout().strip().split(' ') + if flag.startswith('-I') or flag.startswith('-D') + perl_cflags += flag + endif +endforeach + +ret = run_command([perl, '-MExtUtils::Embed', '-e', 'ldopts']) +if ret.returncode() != 0 + error('perl: Failed to get ldflags') +endif +perl_ldflags = [] +perl_rpath = '' +foreach flag : ret.stdout().strip().split(' ') + if flag.startswith('-L') or flag.startswith('-l') + perl_ldflags += flag + endif + if flag.startswith('-Wl,-rpath,') + # Install rpath + split = flag.split(',') + perl_rpath = split[split.length() - 1] + + # For in tree + perl_ldflags += flag + endif +endforeach + +perl_cflags += [ + # Perl has its own 'config.h' that we must override + # TODO: Just rename ours to something more unique. + '-include', meson.build_root() + '/config.h' +] + +if not cc.links(''' +#define PERL_NO_INLINE_FUNCTIONS +#include <EXTERN.h> +#include <perl.h> + +int main(void) { + PerlInterpreter *my_perl = perl_alloc(); + return 0; +} +''', args: perl_cflags + perl_ldflags) + error('found perl not suitable for plugin') +endif + +perl_dep = declare_dependency( + compile_args: perl_cflags, + link_args: perl_ldflags +) + +shared_module('perl', + sources: ['perl.c', hexchat_perl_module, irc_perl_module], + dependencies: [libgio_dep, hexchat_plugin_dep, perl_dep], + install: true, + install_dir: plugindir, + install_rpath: perl_rpath, + name_prefix: '', + vs_module_defs: 'perl.def', +) diff --git a/hexchat/plugins/perl/perl.c b/hexchat/plugins/perl/perl.c new file mode 100644 index 0000000..6f30400 --- /dev/null +++ b/hexchat/plugins/perl/perl.c @@ -0,0 +1,1647 @@ +/* X-Chat 2.0 PERL Plugin + * Copyright (C) 1998-2002 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "config.h" + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#ifdef ENABLE_NLS +#include <locale.h> +#endif +#ifdef WIN32 +#include <windows.h> +#include <stdbool.h> +#else +#include <dirent.h> +#endif + +#include <glib.h> + +#undef PACKAGE + +#include "hexchat-plugin.h" + +static hexchat_plugin *ph; /* plugin handle */ + +static int perl_load_file (char *script_name); + +#ifdef WIN32 +/* STRINGIFY is from perl's CORE/config.h */ +#ifndef PERL_REQUIRED_VERSION + #define PERL_REQUIRED_VERSION STRINGIFY(PERL_REVISION) "." STRINGIFY(PERL_VERSION) +#endif + +#ifndef PERL_DLL + #define PERL_DLL "perl" STRINGIFY(PERL_REVISION) STRINGIFY(PERL_VERSION) ".dll" +#endif + +static DWORD +child (char *str) +{ + MessageBoxA (0, str, "Perl DLL Error", + MB_OK | MB_ICONHAND | MB_SETFOREGROUND | MB_TASKMODAL); + return 0; +} + +static void +thread_mbox (char *str) +{ + DWORD tid; + + CloseHandle (CreateThread (NULL, 0, (LPTHREAD_START_ROUTINE) child, + str, 0, &tid)); +} + +#endif + +/* leave this before XSUB.h, to avoid readdir() being redefined */ + +#ifdef WIN32 +static void +perl_auto_load_from_path (const char *path) +{ + char *search_path = g_build_filename (path, "*.pl", NULL); + WIN32_FIND_DATAA find_data; + HANDLE find_handle = FindFirstFileA (search_path, &find_data); + + if (find_handle != INVALID_HANDLE_VALUE) + { + do + { + if ((find_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0 && (find_data.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN) == 0) + { + char *full_path = g_build_filename (path, find_data.cFileName, NULL); + perl_load_file (full_path); + g_free (full_path); + } + } + while (FindNextFileA (find_handle, &find_data) != 0); + FindClose (find_handle); + } + + g_free (search_path); +} +#else +static void +perl_auto_load_from_path (const char *path) +{ + DIR *dir; + struct dirent *ent; + + dir = opendir (path); + if (dir) + { + while ((ent = readdir (dir))) + { + int len = strlen (ent->d_name); + if (len > 3 && strcasecmp (".pl", ent->d_name + len - 3) == 0) + { + char *file = g_build_filename (path, ent->d_name, NULL); + perl_load_file (file); + g_free (file); + } + } + closedir (dir); + } +} +#endif + +static int +perl_auto_load (void *unused) +{ + const char *xdir; + char *sub_dir; +#ifdef WIN32 + int copied = 0; + char *slash = NULL; +#endif + + /* get the dir in local filesystem encoding (what opendir() expects!) */ + xdir = hexchat_get_info (ph, "configdir"); + + /* don't pollute the filesystem with script files, this only causes misuse of the folders + * only use ~/.config/hexchat/addons/ and %APPDATA%\HexChat\addons */ + sub_dir = g_build_filename (xdir, "addons", NULL); + perl_auto_load_from_path (sub_dir); + g_free (sub_dir); + + return 0; +} + +#include <EXTERN.h> +#define WIN32IOP_H +#include <perl.h> +#include <XSUB.h> + +typedef struct +{ + SV *callback; + SV *userdata; + hexchat_hook *hook; /* required for timers */ + hexchat_context *ctx; /* allow timers to remember their context */ + SV *package; /* need to track the package name when removing hooks + by returning REMOVE + */ + unsigned int depth; +} HookData; + +static PerlInterpreter *my_perl = NULL; +extern void boot_DynaLoader (pTHX_ CV * cv); + +/* + this is used for autoload and shutdown callbacks +*/ +static int +execute_perl (SV * function, char *args) +{ + + int count, ret_value = 1; + + dSP; + ENTER; + SAVETMPS; + + PUSHMARK (SP); + XPUSHs (sv_2mortal (newSVpv (args, 0))); + PUTBACK; + + count = call_sv (function, G_EVAL | G_SCALAR); + SPAGAIN; + if (SvTRUE (ERRSV)) { + hexchat_printf(ph, "Perl error: %s\n", SvPV_nolen (ERRSV)); + if (!SvOK (POPs)) {} /* remove undef from the top of the stack */ + } else if (count != 1) { + hexchat_printf (ph, "Perl error: expected 1 value from %s, " + "got: %d\n", SvPV_nolen (function), count); + } else { + ret_value = POPi; + } + PUTBACK; + FREETMPS; + LEAVE; + + return ret_value; +} + +static char * +get_filename (char *word[], char *word_eol[]) +{ + int len; + char *file; + + /* if called as /load "filename.pl" the only difference between word and + * word_eol will be the two quotes + */ + + if (strchr (word[2], ' ') != NULL + || (strlen (word_eol[2]) - strlen(word[2])) == 2 ) + { + file = word[2]; + } else { + file = word_eol[2]; + } + + len = strlen (file); + + if (len > 3 && strncasecmp (".pl", file + len - 3, 3) == 0) { + return file; + } + + return NULL; +} + +static SV * +list_item_to_sv ( hexchat_list *list, const char *const *fields ) +{ + HV *hash = newHV(); + SV *field_value; + const char *field; + int field_index = 0; + const char *field_name; + int name_len; + + while (fields[field_index] != NULL) { + field_name = fields[field_index] + 1; + name_len = strlen (field_name); + + switch (fields[field_index][0]) { + case 's': + field = hexchat_list_str (ph, list, field_name); + if (field != NULL) { + field_value = newSVpvn (field, strlen (field)); + } else { + field_value = &PL_sv_undef; + } + break; + case 'p': + field_value = newSViv (PTR2IV (hexchat_list_str (ph, list, + field_name))); + break; + case 'i': + field_value = newSVuv (hexchat_list_int (ph, list, field_name)); + break; + case 't': + /* From perldoc for Perl's own timelocal() and timegm(): + * <quote> + * On perl versions older than 5.12.0, the range of dates that can be actually be handled depends on the size of time_t (usually a signed integer) on the given platform. + * As of version 5.12.0, perl has stopped using the underlying time library of the operating system it's running on and has its own implementation of those routines with a + * safe range of at least +/ 2**52 (about 142 million years). + * </quote> + * + * This is further confirmed from looking at the source for Time::Local - it's a Perl module and the implementations of timelocal() and timegm() use simple addition and + * subtraction of numbers. Perl automatically promotes numbers from int32_t (IV) to uint32_t (UV) to 64-bit IEEE754 double (NV) as required. + * + * This means that using a double (NV) for our own time_t suffers from the same assumptions that Perl's own functions do. + */ + field_value = newSVnv ((const NV) hexchat_list_time (ph, list, field_name)); + break; + default: + field_value = &PL_sv_undef; + } + (void)hv_store (hash, field_name, name_len, field_value, 0); + field_index++; + } + return sv_2mortal (newRV_noinc ((SV *) hash)); +} + +#define WORD_ARRAY_LEN 32 + +static AV * +array2av (char *array[]) +{ + int count = 0; + SV *temp = NULL; + AV *av = newAV(); + sv_2mortal ((SV *)av); + + for ( + count = 1; + count < WORD_ARRAY_LEN && array[count] != NULL && array[count][0] != 0; + count++ + ) { + temp = newSVpv (array[count], 0); + SvUTF8_on (temp); + av_push (av, temp); + } + + return av; +} + +/* sets $HexChat::Embed::current_package */ +static void +set_current_package (SV *package) +{ + SV *current_package = get_sv ("HexChat::Embed::current_package", 1); + SvSetSV_nosteal (current_package, package); +} + +static int +fd_cb (int fd, int flags, void *userdata) +{ + HookData *data = (HookData *) userdata; + int retVal = 0; + int count = 0; + + dSP; + ENTER; + SAVETMPS; + + PUSHMARK (SP); + XPUSHs (data->userdata); + PUTBACK; + + set_current_package (data->package); + count = call_sv (data->callback, G_EVAL); + set_current_package (&PL_sv_undef); + SPAGAIN; + + if (SvTRUE (ERRSV)) { + hexchat_printf (ph, "Error in fd callback %s", SvPV_nolen (ERRSV)); + if (!SvOK (POPs)) {} /* remove undef from the top of the stack */ + retVal = HEXCHAT_EAT_ALL; + } else { + if (count != 1) { + hexchat_print (ph, "Fd handler should only return 1 value."); + retVal = HEXCHAT_EAT_NONE; + } else { + retVal = POPi; + if (retVal == 0) { + /* if 0 is returned, the fd is going to get unhooked */ + PUSHMARK (SP); + XPUSHs (sv_2mortal (newSViv (PTR2IV (data->hook)))); + PUTBACK; + + call_pv ("HexChat::unhook", G_EVAL); + SPAGAIN; + + SvREFCNT_dec (data->callback); + + if (data->userdata) { + SvREFCNT_dec (data->userdata); + } + g_free (data); + } + } + + } + + PUTBACK; + FREETMPS; + LEAVE; + + return retVal; +} + +static int +timer_cb (void *userdata) +{ + HookData *data = (HookData *) userdata; + int retVal = 0; + int count = 0; + + dSP; + ENTER; + SAVETMPS; + + PUSHMARK (SP); + XPUSHs (data->userdata); + PUTBACK; + + if (data->ctx) { + hexchat_set_context (ph, data->ctx); + } + + set_current_package (data->package); + count = call_sv (data->callback, G_EVAL | G_KEEPERR); + set_current_package (&PL_sv_undef); + SPAGAIN; + + if (SvTRUE (ERRSV)) { + hexchat_printf (ph, "Error in timer callback %s", SvPV_nolen (ERRSV)); + if (!SvOK (POPs)) {} /* remove undef from the top of the stack */ + retVal = HEXCHAT_EAT_ALL; + } else { + if (count != 1) { + hexchat_print (ph, "Timer handler should only return 1 value."); + retVal = HEXCHAT_EAT_NONE; + } else { + retVal = POPi; + if (retVal == 0) { + /* if 0 is return the timer is going to get unhooked */ + PUSHMARK (SP); + XPUSHs (sv_2mortal (newSViv (PTR2IV (data->hook)))); + XPUSHs (sv_mortalcopy (data->package)); + PUTBACK; + + call_pv ("HexChat::unhook", G_EVAL); + SPAGAIN; + } + } + + } + + PUTBACK; + FREETMPS; + LEAVE; + + return retVal; +} + +static int +server_cb (char *word[], char *word_eol[], void *userdata) +{ + HookData *data = (HookData *) userdata; + int retVal = 0; + int count = 0; + + dSP; + ENTER; + SAVETMPS; + + if (data->depth) + return HEXCHAT_EAT_NONE; + + /* hexchat_printf (ph, */ + /* "Received %d words in server callback", av_len (wd)); */ + PUSHMARK (SP); + XPUSHs (newRV_noinc ((SV *) array2av (word))); + XPUSHs (newRV_noinc ((SV *) array2av (word_eol))); + XPUSHs (data->userdata); + PUTBACK; + + data->depth++; + set_current_package (data->package); + count = call_sv (data->callback, G_EVAL | G_KEEPERR); + set_current_package (&PL_sv_undef); + data->depth--; + SPAGAIN; + if (SvTRUE (ERRSV)) { + hexchat_printf (ph, "Error in server callback %s", SvPV_nolen (ERRSV)); + if (!SvOK (POPs)) {} /* remove undef from the top of the stack */ + retVal = HEXCHAT_EAT_NONE; + } else { + if (count != 1) { + hexchat_print (ph, "Server handler should only return 1 value."); + retVal = HEXCHAT_EAT_NONE; + } else { + retVal = POPi; + } + + } + + PUTBACK; + FREETMPS; + LEAVE; + + return retVal; +} + +static int +command_cb (char *word[], char *word_eol[], void *userdata) +{ + HookData *data = (HookData *) userdata; + int retVal = 0; + int count = 0; + + dSP; + ENTER; + SAVETMPS; + + if (data->depth) + return HEXCHAT_EAT_NONE; + + /* hexchat_printf (ph, "Received %d words in command callback", */ + /* av_len (wd)); */ + PUSHMARK (SP); + XPUSHs (newRV_noinc ((SV *) array2av (word))); + XPUSHs (newRV_noinc ((SV *) array2av (word_eol))); + XPUSHs (data->userdata); + PUTBACK; + + data->depth++; + set_current_package (data->package); + count = call_sv (data->callback, G_EVAL | G_KEEPERR); + set_current_package (&PL_sv_undef); + data->depth--; + SPAGAIN; + if (SvTRUE (ERRSV)) { + hexchat_printf (ph, "Error in command callback %s", SvPV_nolen (ERRSV)); + if (!SvOK (POPs)) {} /* remove undef from the top of the stack */ + retVal = HEXCHAT_EAT_HEXCHAT; + } else { + if (count != 1) { + hexchat_print (ph, "Command handler should only return 1 value."); + retVal = HEXCHAT_EAT_NONE; + } else { + retVal = POPi; + } + + } + + PUTBACK; + FREETMPS; + LEAVE; + + return retVal; +} + +static int +print_cb (char *word[], void *userdata) +{ + + HookData *data = (HookData *) userdata; + SV *temp = NULL; + int retVal = 0; + int count = 1; + int last_index = 31; + /* must be initialized after SAVETMPS */ + AV *wd = NULL; + + dSP; + ENTER; + SAVETMPS; + + if (data->depth) + return HEXCHAT_EAT_NONE; + + wd = newAV (); + sv_2mortal ((SV *) wd); + + /* need to scan backwards to find the index of the last element since some + events such as "DCC Timeout" can have NULL elements in between non NULL + elements */ + + while (last_index >= 0 + && (word[last_index] == NULL || word[last_index][0] == 0)) { + last_index--; + } + + for (count = 1; count <= last_index; count++) { + if (word[count] == NULL) { + av_push (wd, &PL_sv_undef); + } else if (word[count][0] == 0) { + av_push (wd, newSVpvn ("",0)); + } else { + temp = newSVpv (word[count], 0); + SvUTF8_on (temp); + av_push (wd, temp); + } + } + + /*hexchat_printf (ph, "Received %d words in print callback", av_len (wd)+1); */ + PUSHMARK (SP); + XPUSHs (newRV_noinc ((SV *) wd)); + XPUSHs (data->userdata); + PUTBACK; + + data->depth++; + set_current_package (data->package); + count = call_sv (data->callback, G_EVAL | G_KEEPERR); + set_current_package (&PL_sv_undef); + data->depth--; + SPAGAIN; + if (SvTRUE (ERRSV)) { + hexchat_printf (ph, "Error in print callback %s", SvPV_nolen (ERRSV)); + if (!SvOK (POPs)) {} /* remove undef from the top of the stack */ + retVal = HEXCHAT_EAT_NONE; + } else { + if (count != 1) { + hexchat_print (ph, "Print handler should only return 1 value."); + retVal = HEXCHAT_EAT_NONE; + } else { + retVal = POPi; + } + + } + + PUTBACK; + FREETMPS; + LEAVE; + + return retVal; +} + +/* custom IRC perl functions for scripting */ + +/* HexChat::Internal::register (scriptname, version, desc, shutdowncallback, filename) + * + */ + +static +XS (XS_HexChat_register) +{ + char *name, *version, *desc, *filename; + void *gui_entry; + dXSARGS; + if (items != 4) { + hexchat_printf (ph, + "Usage: HexChat::Internal::register(scriptname, version, desc, filename)"); + } else { + name = SvPV_nolen (ST (0)); + version = SvPV_nolen (ST (1)); + desc = SvPV_nolen (ST (2)); + filename = SvPV_nolen (ST (3)); + + gui_entry = hexchat_plugingui_add (ph, filename, name, + desc, version, NULL); + + XSRETURN_IV (PTR2IV (gui_entry)); + + } +} + + +/* HexChat::print(output) */ +static +XS (XS_HexChat_print) +{ + + char *text = NULL; + + dXSARGS; + if (items != 1) { + hexchat_print (ph, "Usage: HexChat::Internal::print(text)"); + } else { + text = SvPV_nolen (ST (0)); + hexchat_print (ph, text); + } + XSRETURN_EMPTY; +} + +static +XS (XS_HexChat_emit_print) +{ + char *event_name; + int RETVAL; + int count; + + dXSARGS; + if (items < 1) { + hexchat_print (ph, "Usage: HexChat::emit_print(event_name, ...)"); + } else { + event_name = (char *) SvPV_nolen (ST (0)); + RETVAL = 0; + + /* we need to figure out the number of defined values passed in */ + for (count = 0; count < items; count++) { + if (!SvOK (ST (count))) { + break; + } + } + + switch (count) { + case 1: + RETVAL = hexchat_emit_print (ph, event_name, NULL); + break; + case 2: + RETVAL = hexchat_emit_print (ph, event_name, + SvPV_nolen (ST (1)), NULL); + break; + case 3: + RETVAL = hexchat_emit_print (ph, event_name, + SvPV_nolen (ST (1)), + SvPV_nolen (ST (2)), NULL); + break; + case 4: + RETVAL = hexchat_emit_print (ph, event_name, + SvPV_nolen (ST (1)), + SvPV_nolen (ST (2)), + SvPV_nolen (ST (3)), NULL); + break; + case 5: + RETVAL = hexchat_emit_print (ph, event_name, + SvPV_nolen (ST (1)), + SvPV_nolen (ST (2)), + SvPV_nolen (ST (3)), + SvPV_nolen (ST (4)), NULL); + break; + + } + + XSRETURN_IV (RETVAL); + } +} + +static +XS (XS_HexChat_send_modes) +{ + AV *p_targets = NULL; + int modes_per_line = 0; + char sign; + char mode; + int i = 0; + const char **targets; + int target_count = 0; + SV **elem; + + dXSARGS; + if (items < 3 || items > 4) { + hexchat_print (ph, + "Usage: HexChat::send_modes( targets, sign, mode, modes_per_line)" + ); + } else { + if (SvROK (ST (0))) { + p_targets = (AV*) SvRV (ST (0)); + target_count = av_len (p_targets) + 1; + targets = g_new (const char *, target_count); + for (i = 0; i < target_count; i++ ) { + elem = av_fetch (p_targets, i, 0); + + if (elem != NULL) { + targets[i] = SvPV_nolen (*elem); + } else { + targets[i] = ""; + } + } + } else{ + targets = g_new (const char *, 1); + targets[0] = SvPV_nolen (ST (0)); + target_count = 1; + } + + if (target_count == 0) { + g_free ((char**) targets); + XSRETURN_EMPTY; + } + + sign = (SvPV_nolen (ST (1)))[0]; + mode = (SvPV_nolen (ST (2)))[0]; + + if (items == 4 ) { + modes_per_line = (int) SvIV (ST (3)); + } + + hexchat_send_modes (ph, targets, target_count, modes_per_line, sign, mode); + g_free ((char**) targets); + } +} +static +XS (XS_HexChat_get_info) +{ + SV *temp = NULL; + dXSARGS; + if (items != 1) { + hexchat_print (ph, "Usage: HexChat::get_info(id)"); + } else { + SV *id = ST (0); + const char *RETVAL; + + RETVAL = hexchat_get_info (ph, SvPV_nolen (id)); + if (RETVAL == NULL) { + XSRETURN_UNDEF; + } + + if (!strncmp ("win_ptr", SvPV_nolen (id), 7) + || !strncmp ("gtkwin_ptr", SvPV_nolen (id), 10)) + { + XSRETURN_IV (PTR2IV (RETVAL)); + } else { + + if ( + !strncmp ("libdirfs", SvPV_nolen (id), 8) || + !strncmp ("xchatdirfs", SvPV_nolen (id), 10) || + !strncmp ("configdir", SvPV_nolen (id), 9) + ) { + XSRETURN_PV (RETVAL); + } else { + temp = newSVpv (RETVAL, 0); + SvUTF8_on (temp); + PUSHMARK (SP); + XPUSHs (sv_2mortal (temp)); + PUTBACK; + } + } + } +} + +static +XS (XS_HexChat_context_info) +{ + const char *const *fields; + dXSARGS; + + if (items > 0 ) { + hexchat_print (ph, "Usage: HexChat::Internal::context_info()"); + } + fields = hexchat_list_fields (ph, "channels" ); + XPUSHs (list_item_to_sv (NULL, fields)); + XSRETURN (1); +} + +static +XS (XS_HexChat_get_prefs) +{ + const char *str; + int integer; + SV *temp = NULL; + dXSARGS; + if (items != 1) { + hexchat_print (ph, "Usage: HexChat::get_prefs(name)"); + } else { + + + switch (hexchat_get_prefs (ph, SvPV_nolen (ST (0)), &str, &integer)) { + case 0: + XSRETURN_UNDEF; + break; + case 1: + temp = newSVpv (str, 0); + SvUTF8_on (temp); + SP -= items; + sp = mark; + XPUSHs (sv_2mortal (temp)); + PUTBACK; + break; + case 2: + XSRETURN_IV (integer); + break; + case 3: + if (integer) { + XSRETURN_YES; + } else { + XSRETURN_NO; + } + } + } +} + +/* HexChat::Internal::hook_server(name, priority, callback, userdata) */ +static +XS (XS_HexChat_hook_server) +{ + + char *name; + int pri; + SV *callback; + SV *userdata; + SV *package; + hexchat_hook *hook; + HookData *data; + + dXSARGS; + + if (items != 5) { + hexchat_print (ph, + "Usage: HexChat::Internal::hook_server(name, priority, callback, userdata, package)"); + } else { + name = SvPV_nolen (ST (0)); + pri = (int) SvIV (ST (1)); + callback = ST (2); + userdata = ST (3); + package = ST (4); + data = NULL; + data = g_new (HookData, 1); + data->callback = newSVsv (callback); + data->userdata = newSVsv (userdata); + data->depth = 0; + data->package = newSVsv (package); + + hook = hexchat_hook_server (ph, name, pri, server_cb, data); + + XSRETURN_IV (PTR2IV (hook)); + } +} + +/* HexChat::Internal::hook_command(name, priority, callback, help_text, userdata) */ +static +XS (XS_HexChat_hook_command) +{ + char *name; + int pri; + SV *callback; + char *help_text = NULL; + SV *userdata; + SV *package; + hexchat_hook *hook; + HookData *data; + + dXSARGS; + + if (items != 6) { + hexchat_print (ph, + "Usage: HexChat::Internal::hook_command(name, priority, callback, help_text, userdata, package)"); + } else { + name = SvPV_nolen (ST (0)); + pri = (int) SvIV (ST (1)); + callback = ST (2); + + /* leave the help text as NULL if the help text is undefined to avoid + * overriding the default help message for builtin commands */ + if (SvOK(ST (3))) { + help_text = SvPV_nolen (ST (3)); + } + + userdata = ST (4); + package = ST (5); + data = NULL; + + data = g_new (HookData, 1); + data->callback = newSVsv (callback); + data->userdata = newSVsv (userdata); + data->depth = 0; + data->package = newSVsv (package); + hook = hexchat_hook_command (ph, name, pri, command_cb, help_text, data); + + XSRETURN_IV (PTR2IV (hook)); + } + +} + +/* HexChat::Internal::hook_print(name, priority, callback, [userdata]) */ +static +XS (XS_HexChat_hook_print) +{ + + char *name; + int pri; + SV *callback; + SV *userdata; + SV *package; + hexchat_hook *hook; + HookData *data; + dXSARGS; + if (items != 5) { + hexchat_print (ph, + "Usage: HexChat::Internal::hook_print(name, priority, callback, userdata, package)"); + } else { + name = SvPV_nolen (ST (0)); + pri = (int) SvIV (ST (1)); + callback = ST (2); + data = NULL; + userdata = ST (3); + package = ST (4); + + data = g_new (HookData, 1); + data->callback = newSVsv (callback); + data->userdata = newSVsv (userdata); + data->depth = 0; + data->package = newSVsv (package); + hook = hexchat_hook_print (ph, name, pri, print_cb, data); + + XSRETURN_IV (PTR2IV (hook)); + } +} + +/* HexChat::Internal::hook_timer(timeout, callback, userdata) */ +static +XS (XS_HexChat_hook_timer) +{ + int timeout; + SV *callback; + SV *userdata; + hexchat_hook *hook; + SV *package; + HookData *data; + + dXSARGS; + + if (items != 4) { + hexchat_print (ph, + "Usage: HexChat::Internal::hook_timer(timeout, callback, userdata, package)"); + } else { + timeout = (int) SvIV (ST (0)); + callback = ST (1); + data = NULL; + userdata = ST (2); + package = ST (3); + + data = g_new (HookData, 1); + data->callback = newSVsv (callback); + data->userdata = newSVsv (userdata); + data->ctx = hexchat_get_context (ph); + data->package = newSVsv (package); + hook = hexchat_hook_timer (ph, timeout, timer_cb, data); + data->hook = hook; + + XSRETURN_IV (PTR2IV (hook)); + } +} + +/* HexChat::Internal::hook_fd(fd, callback, flags, userdata) */ +static +XS (XS_HexChat_hook_fd) +{ + int fd; + SV *callback; + int flags; + SV *userdata; + SV *package; + hexchat_hook *hook; + HookData *data; + + dXSARGS; + + if (items != 5) { + hexchat_print (ph, + "Usage: HexChat::Internal::hook_fd(fd, callback, flags, userdata)"); + } else { + fd = (int) SvIV (ST (0)); + callback = ST (1); + flags = (int) SvIV (ST (2)); + userdata = ST (3); + package = ST (4); + data = NULL; + +#ifdef WIN32 + if ((flags & HEXCHAT_FD_NOTSOCKET) == 0) { + /* this _get_osfhandle if from win32iop.h in the perl distribution, + * not the one provided by Windows + */ + fd = _get_osfhandle(fd); + if (fd < 0) { + hexchat_print(ph, "Invalid file descriptor"); + XSRETURN_UNDEF; + } + } +#endif + + data = g_new (HookData, 1); + data->callback = newSVsv (callback); + data->userdata = newSVsv (userdata); + data->depth = 0; + data->package = newSVsv (package); + hook = hexchat_hook_fd (ph, fd, flags, fd_cb, data); + data->hook = hook; + + XSRETURN_IV (PTR2IV (hook)); + } +} + +static +XS (XS_HexChat_unhook) +{ + hexchat_hook *hook; + HookData *userdata; + int retCount = 0; + dXSARGS; + if (items != 1) { + hexchat_print (ph, "Usage: HexChat::unhook(hook)"); + } else { + hook = INT2PTR (hexchat_hook *, SvUV (ST (0))); + userdata = (HookData *) hexchat_unhook (ph, hook); + + if (userdata != NULL) { + if (userdata->callback != NULL) { + SvREFCNT_dec (userdata->callback); + } + + if (userdata->userdata != NULL) { + XPUSHs (sv_mortalcopy (userdata->userdata)); + SvREFCNT_dec (userdata->userdata); + retCount = 1; + } + + if (userdata->package != NULL) { + SvREFCNT_dec (userdata->package); + } + + g_free (userdata); + } + XSRETURN (retCount); + } + XSRETURN_EMPTY; +} + +/* HexChat::Internal::command(command) */ +static +XS (XS_HexChat_command) +{ + char *cmd = NULL; + + dXSARGS; + if (items != 1) { + hexchat_print (ph, "Usage: HexChat::Internal::command(command)"); + } else { + cmd = SvPV_nolen (ST (0)); + hexchat_command (ph, cmd); + + } + XSRETURN_EMPTY; +} + +static +XS (XS_HexChat_find_context) +{ + char *server = NULL; + char *chan = NULL; + hexchat_context *RETVAL; + + dXSARGS; + if (items > 2) + hexchat_print (ph, "Usage: HexChat::find_context ([channel, [server]])"); + { + + switch (items) { + case 0: /* no server name and no channel name */ + /* nothing to do, server and chan are already NULL */ + break; + case 1: /* channel name only */ + /* change channel value only if it is true or 0 */ + /* otherwise leave it as null */ + if (SvTRUE (ST (0)) || SvNIOK (ST (0))) { + chan = SvPV_nolen (ST (0)); + /* hexchat_printf( ph, "XSUB - find_context( %s, NULL )", chan ); */ + } + /* else { hexchat_print( ph, "XSUB - find_context( NULL, NULL )" ); } */ + /* chan is already NULL */ + break; + case 2: /* server and channel */ + /* change channel value only if it is true or 0 */ + /* otherwise leave it as NULL */ + if (SvTRUE (ST (0)) || SvNIOK (ST (0))) { + chan = SvPV_nolen (ST (0)); + /* hexchat_printf( ph, "XSUB - find_context( %s, NULL )", SvPV_nolen(ST(0) )); */ + } + + /* else { hexchat_print( ph, "XSUB - 2 arg NULL chan" ); } */ + /* change server value only if it is true or 0 */ + /* otherwise leave it as NULL */ + if (SvTRUE (ST (1)) || SvNIOK (ST (1))) { + server = SvPV_nolen (ST (1)); + /* hexchat_printf( ph, "XSUB - find_context( NULL, %s )", SvPV_nolen(ST(1) )); */ + } + /* else { hexchat_print( ph, "XSUB - 2 arg NULL server" ); } */ + break; + } + + RETVAL = hexchat_find_context (ph, server, chan); + if (RETVAL != NULL) { + /* hexchat_print (ph, "XSUB - context found"); */ + XSRETURN_IV (PTR2IV (RETVAL)); + } else { + /* hexchat_print (ph, "XSUB - context not found"); */ + XSRETURN_UNDEF; + } + } +} + +static +XS (XS_HexChat_get_context) +{ + dXSARGS; + if (items != 0) { + hexchat_print (ph, "Usage: HexChat::get_context()"); + } else { + XSRETURN_IV (PTR2IV (hexchat_get_context (ph))); + } +} + +static +XS (XS_HexChat_set_context) +{ + hexchat_context *ctx; + dXSARGS; + if (items != 1) { + hexchat_print (ph, "Usage: HexChat::set_context(ctx)"); + } else { + ctx = INT2PTR (hexchat_context *, SvUV (ST (0))); + XSRETURN_IV ((IV) hexchat_set_context (ph, ctx)); + } +} + +static +XS (XS_HexChat_nickcmp) +{ + dXSARGS; + if (items != 2) { + hexchat_print (ph, "Usage: HexChat::nickcmp(s1, s2)"); + } else { + XSRETURN_IV ((IV) hexchat_nickcmp (ph, SvPV_nolen (ST (0)), + SvPV_nolen (ST (1)))); + } +} + +static +XS (XS_HexChat_get_list) +{ + SV *name; + hexchat_list *list; + const char *const *fields; + int count = 0; /* return value for scalar context */ + dXSARGS; + + if (items != 1) { + hexchat_print (ph, "Usage: HexChat::get_list(name)"); + } else { + SP -= items; /*remove the argument list from the stack */ + + name = ST (0); + + list = hexchat_list_get (ph, SvPV_nolen (name)); + + if (list == NULL) { + XSRETURN_EMPTY; + } + + if (GIMME_V == G_SCALAR) { + while (hexchat_list_next (ph, list)) { + count++; + } + hexchat_list_free (ph, list); + XSRETURN_IV ((IV) count); + } + + fields = hexchat_list_fields (ph, SvPV_nolen (name)); + while (hexchat_list_next (ph, list)) { + XPUSHs (list_item_to_sv (list, fields)); + } + hexchat_list_free (ph, list); + + PUTBACK; + return; + } +} + +static +XS (XS_HexChat_Embed_plugingui_remove) +{ + void *gui_entry; + dXSARGS; + if (items != 1) { + hexchat_print (ph, "Usage: HexChat::Embed::plugingui_remove(handle)"); + } else { + gui_entry = INT2PTR (void *, SvUV (ST (0))); + hexchat_plugingui_remove (ph, gui_entry); + } + XSRETURN_EMPTY; +} + +static +XS (XS_HexChat_plugin_pref_set) +{ + dMARK; + dAX; + + XSRETURN_IV ((IV) hexchat_pluginpref_set_str (ph, SvPV_nolen (ST (0)), + SvPV_nolen (ST (1)))); +} + +static +XS (XS_HexChat_plugin_pref_get) +{ + int result; + char value[512]; + + dMARK; + dAX; + + result = hexchat_pluginpref_get_str (ph, SvPV_nolen (ST (0)), value); + + if (result) + XSRETURN_PV (value); + + XSRETURN_UNDEF; +} + +static +XS (XS_HexChat_plugin_pref_delete) +{ + dMARK; + dAX; + + XSRETURN_IV ((IV) hexchat_pluginpref_delete (ph, SvPV_nolen (ST (0)))); +} + +static +XS (XS_HexChat_plugin_pref_list) +{ + char list[4096]; + char value[512]; + char *token; + + dSP; + dMARK; + dAX; + + if (!hexchat_pluginpref_list (ph, list)) + XSRETURN_EMPTY; + + PUSHMARK (SP); + + token = strtok (list, ","); + while (token != NULL) + { + hexchat_pluginpref_get_str (ph, token, value); + + XPUSHs (sv_2mortal (newSVpv (token, 0))); + XPUSHs (sv_2mortal (newSVpv (value, 0))); + + token = strtok (NULL, ","); + } + + PUTBACK; +} + +/* xs_init is the second argument perl_parse. As the name hints, it + initializes XS subroutines (see the perlembed manpage) */ +static void +xs_init (pTHX) +{ + HV *stash; + SV *version; + /* This one allows dynamic loading of perl modules in perl + scripts by the 'use perlmod;' construction */ + newXS ("DynaLoader::boot_DynaLoader", boot_DynaLoader, __FILE__); + /* load up all the custom IRC perl functions */ + newXS ("HexChat::Internal::register", XS_HexChat_register, __FILE__); + newXS ("HexChat::Internal::hook_server", XS_HexChat_hook_server, __FILE__); + newXS ("HexChat::Internal::hook_command", XS_HexChat_hook_command, __FILE__); + newXS ("HexChat::Internal::hook_print", XS_HexChat_hook_print, __FILE__); + newXS ("HexChat::Internal::hook_timer", XS_HexChat_hook_timer, __FILE__); + newXS ("HexChat::Internal::hook_fd", XS_HexChat_hook_fd, __FILE__); + newXS ("HexChat::Internal::unhook", XS_HexChat_unhook, __FILE__); + newXS ("HexChat::Internal::print", XS_HexChat_print, __FILE__); + newXS ("HexChat::Internal::command", XS_HexChat_command, __FILE__); + newXS ("HexChat::Internal::set_context", XS_HexChat_set_context, __FILE__); + newXS ("HexChat::Internal::get_info", XS_HexChat_get_info, __FILE__); + newXS ("HexChat::Internal::context_info", XS_HexChat_context_info, __FILE__); + newXS ("HexChat::Internal::get_list", XS_HexChat_get_list, __FILE__); + + newXS ("HexChat::Internal::plugin_pref_set", XS_HexChat_plugin_pref_set, __FILE__); + newXS ("HexChat::Internal::plugin_pref_get", XS_HexChat_plugin_pref_get, __FILE__); + newXS ("HexChat::Internal::plugin_pref_delete", XS_HexChat_plugin_pref_delete, __FILE__); + newXS ("HexChat::Internal::plugin_pref_list", XS_HexChat_plugin_pref_list, __FILE__); + + newXS ("HexChat::find_context", XS_HexChat_find_context, __FILE__); + newXS ("HexChat::get_context", XS_HexChat_get_context, __FILE__); + newXS ("HexChat::get_prefs", XS_HexChat_get_prefs, __FILE__); + newXS ("HexChat::emit_print", XS_HexChat_emit_print, __FILE__); + newXS ("HexChat::send_modes", XS_HexChat_send_modes, __FILE__); + newXS ("HexChat::nickcmp", XS_HexChat_nickcmp, __FILE__); + + newXS ("HexChat::Embed::plugingui_remove", XS_HexChat_Embed_plugingui_remove, + __FILE__); + + stash = get_hv ("HexChat::", TRUE); + if (stash == NULL) { + exit (1); + } + + newCONSTSUB (stash, "PRI_HIGHEST", newSViv (HEXCHAT_PRI_HIGHEST)); + newCONSTSUB (stash, "PRI_HIGH", newSViv (HEXCHAT_PRI_HIGH)); + newCONSTSUB (stash, "PRI_NORM", newSViv (HEXCHAT_PRI_NORM)); + newCONSTSUB (stash, "PRI_LOW", newSViv (HEXCHAT_PRI_LOW)); + newCONSTSUB (stash, "PRI_LOWEST", newSViv (HEXCHAT_PRI_LOWEST)); + + newCONSTSUB (stash, "EAT_NONE", newSViv (HEXCHAT_EAT_NONE)); + newCONSTSUB (stash, "EAT_HEXCHAT", newSViv (HEXCHAT_EAT_HEXCHAT)); + newCONSTSUB (stash, "EAT_XCHAT", newSViv (HEXCHAT_EAT_HEXCHAT)); /* for compatibility */ + newCONSTSUB (stash, "EAT_PLUGIN", newSViv (HEXCHAT_EAT_PLUGIN)); + newCONSTSUB (stash, "EAT_ALL", newSViv (HEXCHAT_EAT_ALL)); + newCONSTSUB (stash, "FD_READ", newSViv (HEXCHAT_FD_READ)); + newCONSTSUB (stash, "FD_WRITE", newSViv (HEXCHAT_FD_WRITE)); + newCONSTSUB (stash, "FD_EXCEPTION", newSViv (HEXCHAT_FD_EXCEPTION)); + newCONSTSUB (stash, "FD_NOTSOCKET", newSViv (HEXCHAT_FD_NOTSOCKET)); + newCONSTSUB (stash, "KEEP", newSViv (1)); + newCONSTSUB (stash, "REMOVE", newSViv (0)); + + version = get_sv( "HexChat::VERSION", 1 ); + sv_setpv( version, PACKAGE_VERSION ); +} + +static void +perl_init (void) +{ + int warn; + int arg_count; + char *perl_args[] = { "", "-e", "0", "-w" }; + char *env[] = { "" }; + static const char xchat_definitions[] = { + /* Redefine the $SIG{__WARN__} handler to have HexChat + printing warnings in the main window. (TheHobbit) */ +#include "hexchat.pm.h" + }; +#ifdef OLD_PERL + static const char irc_definitions[] = { +#include "irc.pm.h" + }; +#endif +#ifdef ENABLE_NLS + + /* Problem is, dynamicaly loaded modules check out the $] + var. It appears that in the embedded interpreter we get + 5,00503 as soon as the LC_NUMERIC locale calls for a comma + instead of a point in separating integer and decimal + parts. I realy can't understant why... The following + appears to be an awful workaround... But it'll do until I + (or someone else :)) found the "right way" to solve this + nasty problem. (TheHobbit <thehobbit@altern.org>) */ + + setlocale (LC_NUMERIC, "C"); + +#endif + + warn = 0; + hexchat_get_prefs (ph, "perl_warnings", NULL, &warn); + arg_count = warn ? 4 : 3; + + PERL_SYS_INIT3 (&arg_count, (char ***)&perl_args, (char ***)&env); + my_perl = perl_alloc (); + perl_construct (my_perl); + PL_exit_flags |= PERL_EXIT_DESTRUCT_END; + perl_parse (my_perl, xs_init, arg_count, perl_args, (char **)NULL); + + /* + Now initialising the perl interpreter by loading the + perl_definition array. + */ + + eval_pv (xchat_definitions, TRUE); +#ifdef OLD_PERL + eval_pv (irc_definitions, TRUE); +#endif + +} + + +static int +perl_load_file (char *filename) +{ +#ifdef WIN32 + static HMODULE lib = NULL; + + if (!lib) { + lib = LoadLibraryA (PERL_DLL); + if (!lib) { + if (GetLastError () == ERROR_BAD_EXE_FORMAT) + /* http://forum.xchat.org/viewtopic.php?t=3277 */ + thread_mbox ("Cannot use this " PERL_DLL "\n\n" +#ifdef _WIN64 + "64-bit HexChat Perl is required."); +#else + "32-bit HexChat Perl is required."); +#endif + else { + /* a lot of people install this old version */ + lib = LoadLibraryA ("perl56.dll"); + if (lib) { + FreeLibrary (lib); + lib = NULL; + thread_mbox ("Cannot open " PERL_DLL "!\n\n" + "You must have a Visual C++ build of Perl " + PERL_REQUIRED_VERSION " installed in order to\n" + "run Perl scripts. A reboot may be required.\n\n" + "http://hexchat.github.io/downloads.html\n\n" + "I have found Perl 5.6, but that is too old."); + } else { + thread_mbox ("Cannot open " PERL_DLL "!\n\n" + "You must have a Visual C++ build of Perl " + PERL_REQUIRED_VERSION " installed in order to\n" + "run Perl scripts. A reboot may be required.\n\n" + "http://hexchat.github.io/downloads.html\n\n" + "Make sure Perl's bin directory is in your PATH."); + } + } + /* failure */ + return FALSE; + } + + /* success */ + FreeLibrary (lib); + } +#endif + + if (my_perl == NULL) { + perl_init (); + } + + return execute_perl (sv_2mortal (newSVpv ("HexChat::Embed::load", 0)), + filename); + +} + +static void +perl_end (void) +{ + + if (my_perl != NULL) { + execute_perl (sv_2mortal (newSVpv ("HexChat::Embed::unload_all", 0)), ""); + PL_perl_destruct_level = 1; + perl_destruct (my_perl); + perl_free (my_perl); + PERL_SYS_TERM(); + my_perl = NULL; + } + +} + +static int +perl_command_unloadall (char *word[], char *word_eol[], void *userdata) +{ + if (my_perl != NULL) { + execute_perl (sv_2mortal (newSVpv ("HexChat::Embed::unload_all", 0)), ""); + return HEXCHAT_EAT_HEXCHAT; + } + + return HEXCHAT_EAT_HEXCHAT; +} + +static int +perl_command_reloadall (char *word[], char *word_eol[], void *userdata) +{ + if (my_perl != NULL) { + execute_perl (sv_2mortal (newSVpv ("HexChat::Embed::reload_all", 0)), ""); + + return HEXCHAT_EAT_HEXCHAT; + } else { + perl_auto_load( NULL ); + } + return HEXCHAT_EAT_HEXCHAT; +} + +static int +perl_command_load (char *word[], char *word_eol[], void *userdata) +{ + char *file = get_filename (word, word_eol); + + if (file != NULL ) + { + perl_load_file (file); + return HEXCHAT_EAT_HEXCHAT; + } + + return HEXCHAT_EAT_NONE; +} + +static int +perl_command_unload (char *word[], char *word_eol[], void *userdata) +{ + char *file = get_filename (word, word_eol); + + if (my_perl != NULL && file != NULL) { + execute_perl (sv_2mortal (newSVpv ("HexChat::Embed::unload", 0)), file); + return HEXCHAT_EAT_HEXCHAT; + } + + return HEXCHAT_EAT_NONE; +} + +static int +perl_command_reload (char *word[], char *word_eol[], void *eat) +{ + char *file = get_filename (word, word_eol); + + if (my_perl != NULL && file != NULL) { + execute_perl (sv_2mortal (newSVpv ("HexChat::Embed::reload", 0)), file); + return HEXCHAT_EAT_HEXCHAT; + } + + if (eat) + return HEXCHAT_EAT_HEXCHAT; + else + return HEXCHAT_EAT_NONE; +} + +static int +perl_command_eval (char *word[], char *word_eol[], void *userdata) +{ + if (my_perl != NULL) + execute_perl (sv_2mortal (newSVpv ("HexChat::Embed::evaluate", 0)), word_eol[2]); + + return HEXCHAT_EAT_HEXCHAT; +} + +void +hexchat_plugin_get_info (char **name, char **desc, char **version, + void **reserved) +{ + *name = "Perl"; + *desc = "Perl scripting interface"; + *version = PACKAGE_VERSION; + if (reserved) + *reserved = NULL; +} + + +/* Reinit safeguard */ + +static int initialized = 0; + +int +hexchat_plugin_init (hexchat_plugin * plugin_handle, char **plugin_name, + char **plugin_desc, char **plugin_version, char *arg) +{ + if (initialized != 0) { + hexchat_print (plugin_handle, "Perl interface already loaded\n"); + return 0; + } + + ph = plugin_handle; + initialized = 1; + + *plugin_name = "Perl"; + *plugin_desc = "Perl scripting interface"; + *plugin_version = PACKAGE_VERSION; + + hexchat_hook_command (ph, "load", HEXCHAT_PRI_NORM, perl_command_load, 0, 0); + hexchat_hook_command (ph, "unload", HEXCHAT_PRI_NORM, perl_command_unload, 0, + 0); + hexchat_hook_command (ph, "reload", HEXCHAT_PRI_NORM, perl_command_reload, 0, + 0); + hexchat_hook_command (ph, "pl_reload", HEXCHAT_PRI_NORM, perl_command_reload, + "Reloads a Perl script. Syntax: /pl_reload <filename.pl>", (int*)1); + hexchat_hook_command (ph, "unloadall", HEXCHAT_PRI_NORM, + perl_command_unloadall, "Unloads all loaded Perl scripts.", 0); + hexchat_hook_command (ph, "reloadall", HEXCHAT_PRI_NORM, + perl_command_reloadall, "Realoads all loaded Perl scripts.", 0); + + hexchat_hook_command (ph, "pl", HEXCHAT_PRI_NORM, + perl_command_eval, "Evaluates Perl code. Syntax: /pl <perl code>", 0); + + /*perl_init (); */ + hexchat_hook_timer (ph, 0, perl_auto_load, NULL ); + + hexchat_print (ph, "Perl interface loaded\n"); + + return 1; +} + +int +hexchat_plugin_deinit (hexchat_plugin * plugin_handle) +{ + perl_end (); + + initialized = 0; + hexchat_print (plugin_handle, "Perl interface unloaded\n"); + + return 1; +} diff --git a/hexchat/plugins/perl/perl.def b/hexchat/plugins/perl/perl.def new file mode 100644 index 0000000..8589b9c --- /dev/null +++ b/hexchat/plugins/perl/perl.def @@ -0,0 +1,4 @@ +EXPORTS + hexchat_plugin_init + hexchat_plugin_deinit + hexchat_plugin_get_info \ No newline at end of file diff --git a/hexchat/plugins/perl/perl.vcxproj b/hexchat/plugins/perl/perl.vcxproj new file mode 100644 index 0000000..92c2740 --- /dev/null +++ b/hexchat/plugins/perl/perl.vcxproj @@ -0,0 +1,77 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup Label="Configuration"> + <PlatformToolset>v142</PlatformToolset> + <ConfigurationType>DynamicLibrary</ConfigurationType> + </PropertyGroup> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{D90BC3E3-1341-4849-9354-5F40489D39D1}</ProjectGuid> + <Keyword>Win32Proj</Keyword> + <RootNamespace>perl520</RootNamespace> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + <Import Project="..\..\win32\hexchat.props" /> + <PropertyGroup> + <TargetName>hcperl</TargetName> + <OutDir>$(HexChatRel)plugins\</OutDir> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;PERL520_EXPORTS;HAS_BOOL;$(OwnFlags);%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>$(IntDir);..\..\src\common;$(HexChatLib);$(PerlPath)\lib\CORE;$(Glib);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <AdditionalLibraryDirectories>$(IntDir);$(DepsRoot)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + <AdditionalDependencies>$(PerlLib).lib;$(DepLibs);%(AdditionalDependencies)</AdditionalDependencies> + <ModuleDefinitionFile>perl.def</ModuleDefinitionFile> + <DelayLoadDLLs>$(PerlLib).dll;%(DelayLoadDLLs)</DelayLoadDLLs> + </Link> + <PreBuildEvent> + <Command>"$(GendefPath)\gendef" "$(PerlPath)\bin\$(PerlLib).dll" +move $(PerlLib).def "$(IntDir)" +lib /nologo /machine:x86 "/def:$(IntDir)$(PerlLib).def" "/out:$(IntDir)\$(PerlLib).lib" +"$(PerlPath)\bin\perl.exe" generate_header +move irc.pm.h "$(IntDir)" +move hexchat.pm.h "$(IntDir)"</Command> + </PreBuildEvent> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <ClCompile> + <PreprocessorDefinitions>WIN32;_WIN64;_AMD64_;NDEBUG;_WINDOWS;_USRDLL;PERL520_EXPORTS;HAS_BOOL;$(OwnFlags);%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>$(IntDir);..\..\src\common;$(HexChatLib);$(PerlPath)\lib\CORE;$(Glib);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <AdditionalLibraryDirectories>$(IntDir);$(DepsRoot)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + <AdditionalDependencies>$(PerlLib).lib;$(DepLibs);%(AdditionalDependencies)</AdditionalDependencies> + <ModuleDefinitionFile>perl.def</ModuleDefinitionFile> + <DelayLoadDLLs>$(PerlLib).dll;%(DelayLoadDLLs)</DelayLoadDLLs> + </Link> + <PreBuildEvent> + <Command>"$(GendefPath)\gendef" "$(PerlPath)\bin\$(PerlLib).dll" +move $(PerlLib).def "$(IntDir)" +lib /nologo /machine:x64 "/def:$(IntDir)$(PerlLib).def" "/out:$(IntDir)\$(PerlLib).lib" +"$(PerlPath)\bin\perl.exe" generate_header +move irc.pm.h "$(IntDir)" +move hexchat.pm.h "$(IntDir)"</Command> + </PreBuildEvent> + </ItemDefinitionGroup> + <ItemGroup> + <None Include="perl.def" /> + </ItemGroup> + <ItemGroup> + <ClCompile Include="perl.c" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> +</Project> diff --git a/hexchat/plugins/perl/perl.vcxproj.filters b/hexchat/plugins/perl/perl.vcxproj.filters new file mode 100644 index 0000000..f6d00b5 --- /dev/null +++ b/hexchat/plugins/perl/perl.vcxproj.filters @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Source Files"> + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> + <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> + </Filter> + <Filter Include="Resource Files"> + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> + </Filter> + </ItemGroup> + <ItemGroup> + <None Include="perl.def"> + <Filter>Resource Files</Filter> + </None> + </ItemGroup> + <ItemGroup> + <ClCompile Include="perl.c"> + <Filter>Source Files</Filter> + </ClCompile> + </ItemGroup> +</Project> \ No newline at end of file diff --git a/hexchat/plugins/python/_hexchat.py b/hexchat/plugins/python/_hexchat.py new file mode 100644 index 0000000..5e4b0c6 --- /dev/null +++ b/hexchat/plugins/python/_hexchat.py @@ -0,0 +1,386 @@ +import inspect +import sys +from contextlib import contextmanager + +from _hexchat_embedded import ffi, lib + +__all__ = [ + 'EAT_ALL', 'EAT_HEXCHAT', 'EAT_NONE', 'EAT_PLUGIN', 'EAT_XCHAT', + 'PRI_HIGH', 'PRI_HIGHEST', 'PRI_LOW', 'PRI_LOWEST', 'PRI_NORM', + '__doc__', '__version__', 'command', 'del_pluginpref', 'emit_print', + 'find_context', 'get_context', 'get_info', + 'get_list', 'get_lists', 'get_pluginpref', 'get_prefs', 'hook_command', + 'hook_print', 'hook_print_attrs', 'hook_server', 'hook_server_attrs', + 'hook_timer', 'hook_unload', 'list_pluginpref', 'nickcmp', 'prnt', + 'set_pluginpref', 'strip', 'unhook', +] + +__doc__ = 'HexChat Scripting Interface' +__version__ = (2, 0) +__license__ = 'GPL-2.0+' + +EAT_NONE = 0 +EAT_HEXCHAT = 1 +EAT_XCHAT = EAT_HEXCHAT +EAT_PLUGIN = 2 +EAT_ALL = EAT_HEXCHAT | EAT_PLUGIN + +PRI_LOWEST = -128 +PRI_LOW = -64 +PRI_NORM = 0 +PRI_HIGH = 64 +PRI_HIGHEST = 127 + + +# We need each module to be able to reference their parent plugin +# which is a bit tricky since they all share the exact same module. +# Simply navigating up to what module called it seems to actually +# be a fairly reliable and simple method of doing so if ugly. +def __get_current_plugin(): + frame = inspect.stack()[1][0] + while '__plugin' not in frame.f_globals: + frame = frame.f_back + assert frame is not None + + return frame.f_globals['__plugin'] + + +# Keeping API compat +if sys.version_info[0] == 2: + def __decode(string): + return string + +else: + def __decode(string): + return string.decode() + + +# ------------ API ------------ +def prnt(string): + lib.hexchat_print(lib.ph, string.encode()) + + +def emit_print(event_name, *args, **kwargs): + time = kwargs.pop('time', 0) # For py2 compat + cargs = [] + for i in range(4): + arg = args[i].encode() if len(args) > i else b'' + cstring = ffi.new('char[]', arg) + cargs.append(cstring) + + if time == 0: + return lib.hexchat_emit_print(lib.ph, event_name.encode(), *cargs) + + attrs = lib.hexchat_event_attrs_create(lib.ph) + attrs.server_time_utc = time + ret = lib.hexchat_emit_print_attrs(lib.ph, attrs, event_name.encode(), *cargs) + lib.hexchat_event_attrs_free(lib.ph, attrs) + return ret + + +# TODO: this shadows itself. command should be changed to cmd +def command(command): + lib.hexchat_command(lib.ph, command.encode()) + + +def nickcmp(string1, string2): + return lib.hexchat_nickcmp(lib.ph, string1.encode(), string2.encode()) + + +def strip(text, length=-1, flags=3): + stripped = lib.hexchat_strip(lib.ph, text.encode(), length, flags) + ret = __decode(ffi.string(stripped)) + lib.hexchat_free(lib.ph, stripped) + return ret + + +def get_info(name): + ret = lib.hexchat_get_info(lib.ph, name.encode()) + if ret == ffi.NULL: + return None + if name in ('gtkwin_ptr', 'win_ptr'): + # Surely there is a less dumb way? + ptr = repr(ret).rsplit(' ', 1)[1][:-1] + return ptr + + return __decode(ffi.string(ret)) + + +def get_prefs(name): + string_out = ffi.new('char**') + int_out = ffi.new('int*') + _type = lib.hexchat_get_prefs(lib.ph, name.encode(), string_out, int_out) + if _type == 0: + return None + + if _type == 1: + return __decode(ffi.string(string_out[0])) + + if _type in (2, 3): # XXX: 3 should be a bool, but keeps API + return int_out[0] + + raise AssertionError('Out of bounds pref storage') + + +def __cstrarray_to_list(arr): + i = 0 + ret = [] + while arr[i] != ffi.NULL: + ret.append(ffi.string(arr[i])) + i += 1 + + return ret + + +__FIELD_CACHE = {} + + +def __get_fields(name): + return __FIELD_CACHE.setdefault(name, __cstrarray_to_list(lib.hexchat_list_fields(lib.ph, name))) + + +__FIELD_PROPERTY_CACHE = {} + + +def __cached_decoded_str(string): + return __FIELD_PROPERTY_CACHE.setdefault(string, __decode(string)) + + +def get_lists(): + return [__cached_decoded_str(field) for field in __get_fields(b'lists')] + + +class ListItem: + def __init__(self, name): + self._listname = name + + def __repr__(self): + return '<{} list item at {}>'.format(self._listname, id(self)) + + +# done this way for speed +if sys.version_info[0] == 2: + def get_getter(name): + return ord(name[0]) + +else: + def get_getter(name): + return name[0] + + +def get_list(name): + # XXX: This function is extremely inefficient and could be interators and + # lazily loaded properties, but for API compat we stay slow + orig_name = name + name = name.encode() + + if name not in __get_fields(b'lists'): + raise KeyError('list not available') + + list_ = lib.hexchat_list_get(lib.ph, name) + if list_ == ffi.NULL: + return None + + ret = [] + fields = __get_fields(name) + + def string_getter(field): + string = lib.hexchat_list_str(lib.ph, list_, field) + if string != ffi.NULL: + return __decode(ffi.string(string)) + + return '' + + def ptr_getter(field): + if field == b'context': + ptr = lib.hexchat_list_str(lib.ph, list_, field) + ctx = ffi.cast('hexchat_context*', ptr) + return Context(ctx) + + return None + + getters = { + ord('s'): string_getter, + ord('i'): lambda field: lib.hexchat_list_int(lib.ph, list_, field), + ord('t'): lambda field: lib.hexchat_list_time(lib.ph, list_, field), + ord('p'): ptr_getter, + } + + while lib.hexchat_list_next(lib.ph, list_) == 1: + item = ListItem(orig_name) + for _field in fields: + getter = getters.get(get_getter(_field)) + if getter is not None: + field_name = _field[1:] + setattr(item, __cached_decoded_str(field_name), getter(field_name)) + + ret.append(item) + + lib.hexchat_list_free(lib.ph, list_) + return ret + + +# TODO: 'command' here shadows command above, and should be renamed to cmd +def hook_command(command, callback, userdata=None, priority=PRI_NORM, help=None): + plugin = __get_current_plugin() + hook = plugin.add_hook(callback, userdata) + handle = lib.hexchat_hook_command(lib.ph, command.encode(), priority, lib._on_command_hook, + help.encode() if help is not None else ffi.NULL, hook.handle) + + hook.hexchat_hook = handle + return id(hook) + + +def hook_print(name, callback, userdata=None, priority=PRI_NORM): + plugin = __get_current_plugin() + hook = plugin.add_hook(callback, userdata) + handle = lib.hexchat_hook_print(lib.ph, name.encode(), priority, lib._on_print_hook, hook.handle) + hook.hexchat_hook = handle + return id(hook) + + +def hook_print_attrs(name, callback, userdata=None, priority=PRI_NORM): + plugin = __get_current_plugin() + hook = plugin.add_hook(callback, userdata) + handle = lib.hexchat_hook_print_attrs(lib.ph, name.encode(), priority, lib._on_print_attrs_hook, hook.handle) + hook.hexchat_hook = handle + return id(hook) + + +def hook_server(name, callback, userdata=None, priority=PRI_NORM): + plugin = __get_current_plugin() + hook = plugin.add_hook(callback, userdata) + handle = lib.hexchat_hook_server(lib.ph, name.encode(), priority, lib._on_server_hook, hook.handle) + hook.hexchat_hook = handle + return id(hook) + + +def hook_server_attrs(name, callback, userdata=None, priority=PRI_NORM): + plugin = __get_current_plugin() + hook = plugin.add_hook(callback, userdata) + handle = lib.hexchat_hook_server_attrs(lib.ph, name.encode(), priority, lib._on_server_attrs_hook, hook.handle) + hook.hexchat_hook = handle + return id(hook) + + +def hook_timer(timeout, callback, userdata=None): + plugin = __get_current_plugin() + hook = plugin.add_hook(callback, userdata) + handle = lib.hexchat_hook_timer(lib.ph, timeout, lib._on_timer_hook, hook.handle) + hook.hexchat_hook = handle + return id(hook) + + +def hook_unload(callback, userdata=None): + plugin = __get_current_plugin() + hook = plugin.add_hook(callback, userdata, is_unload=True) + return id(hook) + + +def unhook(handle): + plugin = __get_current_plugin() + return plugin.remove_hook(handle) + + +def set_pluginpref(name, value): + if isinstance(value, str): + return bool(lib.hexchat_pluginpref_set_str(lib.ph, name.encode(), value.encode())) + + if isinstance(value, int): + return bool(lib.hexchat_pluginpref_set_int(lib.ph, name.encode(), value)) + + # XXX: This should probably raise but this keeps API + return False + + +def get_pluginpref(name): + name = name.encode() + string_out = ffi.new('char[512]') + if lib.hexchat_pluginpref_get_str(lib.ph, name, string_out) != 1: + return None + + string = ffi.string(string_out) + # This API stores everything as a string so we have to figure out what + # its actual type was supposed to be. + if len(string) > 12: # Can't be a number + return __decode(string) + + number = lib.hexchat_pluginpref_get_int(lib.ph, name) + if number == -1 and string != b'-1': + return __decode(string) + + return number + + +def del_pluginpref(name): + return bool(lib.hexchat_pluginpref_delete(lib.ph, name.encode())) + + +def list_pluginpref(): + prefs_str = ffi.new('char[4096]') + if lib.hexchat_pluginpref_list(lib.ph, prefs_str) == 1: + return __decode(ffi.string(prefs_str)).split(',') + + return [] + + +class Context: + def __init__(self, ctx): + self._ctx = ctx + + def __eq__(self, value): + if not isinstance(value, Context): + return False + + return self._ctx == value._ctx + + @contextmanager + def __change_context(self): + old_ctx = lib.hexchat_get_context(lib.ph) + if not self.set(): + # XXX: Behavior change, previously used wrong context + lib.hexchat_print(lib.ph, b'Context object refers to closed context, ignoring call') + return + + yield + lib.hexchat_set_context(lib.ph, old_ctx) + + def set(self): + # XXX: API addition, C plugin silently ignored failure + return bool(lib.hexchat_set_context(lib.ph, self._ctx)) + + def prnt(self, string): + with self.__change_context(): + prnt(string) + + def emit_print(self, event_name, *args, **kwargs): + time = kwargs.pop('time', 0) # For py2 compat + with self.__change_context(): + return emit_print(event_name, *args, time=time) + + def command(self, string): + with self.__change_context(): + command(string) + + def get_info(self, name): + with self.__change_context(): + return get_info(name) + + def get_list(self, name): + with self.__change_context(): + return get_list(name) + + +def get_context(): + ctx = lib.hexchat_get_context(lib.ph) + return Context(ctx) + + +def find_context(server=None, channel=None): + server = server.encode() if server is not None else ffi.NULL + channel = channel.encode() if channel is not None else ffi.NULL + ctx = lib.hexchat_find_context(lib.ph, server, channel) + if ctx == ffi.NULL: + return None + + return Context(ctx) diff --git a/hexchat/plugins/python/generate_plugin.py b/hexchat/plugins/python/generate_plugin.py new file mode 100755 index 0000000..5c52b37 --- /dev/null +++ b/hexchat/plugins/python/generate_plugin.py @@ -0,0 +1,89 @@ +#!/usr/bin/env python3 + +import sys +import cffi + +builder = cffi.FFI() + +# hexchat-plugin.h +with open(sys.argv[1]) as f: + output = [] + eat_until_endif = 0 + # This is very specific to hexchat-plugin.h, it is not a cpp + for line in f: + if line.startswith('#define'): + continue + elif line.endswith('HEXCHAT_PLUGIN_H\n'): + continue + elif 'time.h' in line: + output.append('typedef int... time_t;') + elif line.startswith('#if'): + eat_until_endif += 1 + elif line.startswith('#endif'): + eat_until_endif -= 1 + elif eat_until_endif and '_hexchat_context' not in line: + continue + else: + output.append(line) + builder.cdef(''.join(output)) + +builder.embedding_api(''' +extern "Python" int _on_py_command(char **, char **, void *); +extern "Python" int _on_load_command(char **, char **, void *); +extern "Python" int _on_unload_command(char **, char **, void *); +extern "Python" int _on_reload_command(char **, char **, void *); +extern "Python" int _on_say_command(char **, char **, void *); + +extern "Python" int _on_command_hook(char **, char **, void *); +extern "Python" int _on_print_hook(char **, void *); +extern "Python" int _on_print_attrs_hook(char **, hexchat_event_attrs *, void *); +extern "Python" int _on_server_hook(char **, char **, void *); +extern "Python" int _on_server_attrs_hook(char **, char **, hexchat_event_attrs *, void *); +extern "Python" int _on_timer_hook(void *); + +extern "Python" int _on_plugin_init(char **, char **, char **, char *, char *); +extern "Python" int _on_plugin_deinit(void); + +static hexchat_plugin *ph; +''') + +builder.set_source('_hexchat_embedded', ''' +/* Python's header defines these.. */ +#undef HAVE_MEMRCHR +#undef HAVE_STRINGS_H + +#include "config.h" +#include "hexchat-plugin.h" + +static hexchat_plugin *ph; +CFFI_DLLEXPORT int _on_plugin_init(char **, char **, char **, char *, char *); +CFFI_DLLEXPORT int _on_plugin_deinit(void); + +int hexchat_plugin_init(hexchat_plugin *plugin_handle, + char **name_out, char **description_out, + char **version_out, char *arg) +{ + if (ph != NULL) + { + puts ("Python plugin already loaded\\n"); + return 0; /* Prevent loading twice */ + } + + ph = plugin_handle; + return _on_plugin_init(name_out, description_out, version_out, arg, HEXCHATLIBDIR); +} + +int hexchat_plugin_deinit(void) +{ + int ret = _on_plugin_deinit(); + ph = NULL; + return ret; +} +''') + +# python.py +with open(sys.argv[2]) as f: + builder.embedding_init_code(f.read()) + +# python.c +builder.emit_c_code(sys.argv[3]) diff --git a/hexchat/plugins/python/hexchat.py b/hexchat/plugins/python/hexchat.py new file mode 100644 index 0000000..6922490 --- /dev/null +++ b/hexchat/plugins/python/hexchat.py @@ -0,0 +1 @@ +from _hexchat import * diff --git a/hexchat/plugins/python/meson.build b/hexchat/plugins/python/meson.build new file mode 100644 index 0000000..1e9b41a --- /dev/null +++ b/hexchat/plugins/python/meson.build @@ -0,0 +1,32 @@ +python_opt = get_option('with-python') +if python_opt.startswith('python3') + # Python 3.8 introduced a new -embed variant + if not python_opt.endswith('-embed') + python_dep = dependency(python_opt + '-embed', version: '>= 3.3', required: false) + if not python_dep.found() + python_dep = dependency(python_opt, version: '>= 3.3') + endif + else + python_dep = dependency(python_opt, version: '>= 3.3') + endif +else + python_dep = dependency(python_opt, version: '>= 2.7') +endif + +python3_source = custom_target('python-bindings', + input: ['../../src/common/hexchat-plugin.h', 'python.py'], + output: 'python.c', + command: [find_program('generate_plugin.py'), '@INPUT@', '@OUTPUT@'] +) + +install_data(['_hexchat.py', 'hexchat.py', 'xchat.py'], + install_dir: join_paths(get_option('libdir'), 'hexchat/python') +) + +shared_module('python', python3_source, + dependencies: [hexchat_plugin_dep, python_dep], + install: true, + install_dir: plugindir, + name_prefix: '', + vs_module_defs: 'python.def' +) diff --git a/hexchat/plugins/python/python.def b/hexchat/plugins/python/python.def new file mode 100644 index 0000000..e560f50 --- /dev/null +++ b/hexchat/plugins/python/python.def @@ -0,0 +1,3 @@ +EXPORTS +hexchat_plugin_init +hexchat_plugin_deinit diff --git a/hexchat/plugins/python/python.py b/hexchat/plugins/python/python.py new file mode 100644 index 0000000..9eca7d6 --- /dev/null +++ b/hexchat/plugins/python/python.py @@ -0,0 +1,566 @@ +from __future__ import print_function + +import importlib +import os +import pydoc +import signal +import sys +import traceback +import weakref +from contextlib import contextmanager + +from _hexchat_embedded import ffi, lib + +if sys.version_info < (3, 0): + from io import BytesIO as HelpEater +else: + from io import StringIO as HelpEater + +if not hasattr(sys, 'argv'): + sys.argv = ['<hexchat>'] + +VERSION = b'2.0' # Sync with hexchat.__version__ +PLUGIN_NAME = ffi.new('char[]', b'Python') +PLUGIN_DESC = ffi.new('char[]', b'Python %d.%d scripting interface' % (sys.version_info[0], sys.version_info[1])) +PLUGIN_VERSION = ffi.new('char[]', VERSION) + +# TODO: Constants should be screaming snake case +hexchat = None +local_interp = None +hexchat_stdout = None +plugins = set() + + +@contextmanager +def redirected_stdout(): + sys.stdout = sys.__stdout__ + sys.stderr = sys.__stderr__ + yield + sys.stdout = hexchat_stdout + sys.stderr = hexchat_stdout + + +if os.getenv('HEXCHAT_LOG_PYTHON'): + def log(*args): + with redirected_stdout(): + print(*args) + +else: + def log(*args): + pass + + +class Stdout: + def __init__(self): + self.buffer = bytearray() + + def write(self, string): + string = string.encode() + idx = string.rfind(b'\n') + if idx != -1: + self.buffer += string[:idx] + lib.hexchat_print(lib.ph, bytes(self.buffer)) + self.buffer = bytearray(string[idx + 1:]) + else: + self.buffer += string + + def flush(self): + lib.hexchat_print(lib.ph, bytes(self.buffer)) + self.buffer = bytearray() + + def isatty(self): + return False + + +class Attribute: + def __init__(self): + self.time = 0 + + def __repr__(self): + return '<Attribute object at {}>'.format(id(self)) + + +class Hook: + def __init__(self, plugin, callback, userdata, is_unload): + self.is_unload = is_unload + self.plugin = weakref.proxy(plugin) + self.callback = callback + self.userdata = userdata + self.hexchat_hook = None + self.handle = ffi.new_handle(weakref.proxy(self)) + + def __del__(self): + log('Removing hook', id(self)) + if self.is_unload is False: + assert self.hexchat_hook is not None + lib.hexchat_unhook(lib.ph, self.hexchat_hook) + + +if sys.version_info[0] == 2: + def compile_file(data, filename): + return compile(data, filename, 'exec', dont_inherit=True) + + + def compile_line(string): + try: + return compile(string, '<string>', 'eval', dont_inherit=True) + + except SyntaxError: + # For some reason `print` is invalid for eval + # This will hide any return value though + return compile(string, '<string>', 'exec', dont_inherit=True) +else: + def compile_file(data, filename): + return compile(data, filename, 'exec', optimize=2, dont_inherit=True) + + + def compile_line(string): + # newline appended to solve unexpected EOF issues + return compile(string + '\n', '<string>', 'single', optimize=2, dont_inherit=True) + + +class Plugin: + def __init__(self): + self.ph = None + self.name = '' + self.filename = '' + self.version = '' + self.description = '' + self.hooks = set() + self.globals = { + '__plugin': weakref.proxy(self), + '__name__': '__main__', + } + + def add_hook(self, callback, userdata, is_unload=False): + hook = Hook(self, callback, userdata, is_unload=is_unload) + self.hooks.add(hook) + return hook + + def remove_hook(self, hook): + for h in self.hooks: + if id(h) == hook: + ud = h.userdata + self.hooks.remove(h) + return ud + + log('Hook not found') + return None + + def loadfile(self, filename): + try: + self.filename = filename + with open(filename, 'rb') as f: + data = f.read().decode('utf-8') + compiled = compile_file(data, filename) + exec(compiled, self.globals) + + try: + self.name = self.globals['__module_name__'] + + except KeyError: + lib.hexchat_print(lib.ph, b'Failed to load module: __module_name__ must be set') + + return False + + self.version = self.globals.get('__module_version__', '') + self.description = self.globals.get('__module_description__', '') + self.ph = lib.hexchat_plugingui_add(lib.ph, filename.encode(), self.name.encode(), + self.description.encode(), self.version.encode(), ffi.NULL) + + except Exception as e: + lib.hexchat_print(lib.ph, 'Failed to load module: {}'.format(e).encode()) + traceback.print_exc() + return False + + return True + + def __del__(self): + log('unloading', self.filename) + for hook in self.hooks: + if hook.is_unload is True: + try: + hook.callback(hook.userdata) + + except Exception as e: + log('Failed to run hook:', e) + traceback.print_exc() + + del self.hooks + if self.ph is not None: + lib.hexchat_plugingui_remove(lib.ph, self.ph) + + +if sys.version_info[0] == 2: + def __decode(string): + return string + +else: + def __decode(string): + return string.decode() + + +# There can be empty entries between non-empty ones so find the actual last value +def wordlist_len(words): + for i in range(31, 0, -1): + if ffi.string(words[i]): + return i + + return 0 + + +def create_wordlist(words): + size = wordlist_len(words) + return [__decode(ffi.string(words[i])) for i in range(1, size + 1)] + + +# This function only exists for compat reasons with the C plugin +# It turns the word list from print hooks into a word_eol list +# This makes no sense to do... +def create_wordeollist(words): + words = reversed(words) + accum = None + ret = [] + for word in words: + if accum is None: + accum = word + + elif word: + last = accum + accum = ' '.join((word, last)) + + ret.insert(0, accum) + + return ret + + +def to_cb_ret(value): + if value is None: + return 0 + + return int(value) + + +@ffi.def_extern() +def _on_command_hook(word, word_eol, userdata): + hook = ffi.from_handle(userdata) + word = create_wordlist(word) + word_eol = create_wordlist(word_eol) + return to_cb_ret(hook.callback(word, word_eol, hook.userdata)) + + +@ffi.def_extern() +def _on_print_hook(word, userdata): + hook = ffi.from_handle(userdata) + word = create_wordlist(word) + word_eol = create_wordeollist(word) + return to_cb_ret(hook.callback(word, word_eol, hook.userdata)) + + +@ffi.def_extern() +def _on_print_attrs_hook(word, attrs, userdata): + hook = ffi.from_handle(userdata) + word = create_wordlist(word) + word_eol = create_wordeollist(word) + attr = Attribute() + attr.time = attrs.server_time_utc + return to_cb_ret(hook.callback(word, word_eol, hook.userdata, attr)) + + +@ffi.def_extern() +def _on_server_hook(word, word_eol, userdata): + hook = ffi.from_handle(userdata) + word = create_wordlist(word) + word_eol = create_wordlist(word_eol) + return to_cb_ret(hook.callback(word, word_eol, hook.userdata)) + + +@ffi.def_extern() +def _on_server_attrs_hook(word, word_eol, attrs, userdata): + hook = ffi.from_handle(userdata) + word = create_wordlist(word) + word_eol = create_wordlist(word_eol) + attr = Attribute() + attr.time = attrs.server_time_utc + return to_cb_ret(hook.callback(word, word_eol, hook.userdata, attr)) + + +@ffi.def_extern() +def _on_timer_hook(userdata): + hook = ffi.from_handle(userdata) + if hook.callback(hook.userdata) == True: + return 1 + + try: + # Avoid calling hexchat_unhook twice if unnecessary + hook.is_unload = True + except ReferenceError: + # hook is a weak reference, it might have been destroyed by the callback + # in which case it has already been removed from hook.plugin.hooks and + # we wouldn't be able to test it with h == hook anyway. + return 0 + + for h in hook.plugin.hooks: + if h == hook: + hook.plugin.hooks.remove(h) + break + + return 0 + + +@ffi.def_extern(error=3) +def _on_say_command(word, word_eol, userdata): + channel = ffi.string(lib.hexchat_get_info(lib.ph, b'channel')) + if channel == b'>>python<<': + python = ffi.string(word_eol[1]) + lib.hexchat_print(lib.ph, b'>>> ' + python) + exec_in_interp(__decode(python)) + return 1 + + return 0 + + +def load_filename(filename): + filename = os.path.expanduser(filename) + if not os.path.isabs(filename): + configdir = __decode(ffi.string(lib.hexchat_get_info(lib.ph, b'configdir'))) + + filename = os.path.join(configdir, 'addons', filename) + + if filename and not any(plugin.filename == filename for plugin in plugins): + plugin = Plugin() + if plugin.loadfile(filename): + plugins.add(plugin) + return True + + return False + + +def unload_name(name): + if name: + for plugin in plugins: + if name in (plugin.name, plugin.filename, os.path.basename(plugin.filename)): + plugins.remove(plugin) + return True + + return False + + +def reload_name(name): + if name: + for plugin in plugins: + if name in (plugin.name, plugin.filename, os.path.basename(plugin.filename)): + filename = plugin.filename + plugins.remove(plugin) + return load_filename(filename) + + return False + + +@contextmanager +def change_cwd(path): + old_cwd = os.getcwd() + os.chdir(path) + yield + os.chdir(old_cwd) + + +def autoload(): + configdir = __decode(ffi.string(lib.hexchat_get_info(lib.ph, b'configdir'))) + addondir = os.path.join(configdir, 'addons') + try: + with change_cwd(addondir): # Maintaining old behavior + for f in os.listdir(addondir): + if f.endswith('.py'): + log('Autoloading', f) + # TODO: Set cwd + load_filename(os.path.join(addondir, f)) + + except FileNotFoundError as e: + log('Autoload failed', e) + + +def list_plugins(): + if not plugins: + lib.hexchat_print(lib.ph, b'No python modules loaded') + return + + tbl_headers = [b'Name', b'Version', b'Filename', b'Description'] + tbl = [ + tbl_headers, + [(b'-' * len(s)) for s in tbl_headers] + ] + + for plugin in plugins: + basename = os.path.basename(plugin.filename).encode() + name = plugin.name.encode() + version = plugin.version.encode() if plugin.version else b'<none>' + description = plugin.description.encode() if plugin.description else b'<none>' + tbl.append((name, version, basename, description)) + + column_sizes = [ + max(len(item) for item in column) + for column in zip(*tbl) + ] + + for row in tbl: + lib.hexchat_print(lib.ph, b' '.join(item.ljust(column_sizes[i]) + for i, item in enumerate(row))) + lib.hexchat_print(lib.ph, b'') + + +def exec_in_interp(python): + global local_interp + + if not python: + return + + if local_interp is None: + local_interp = Plugin() + local_interp.locals = {} + local_interp.globals['hexchat'] = hexchat + + code = compile_line(python) + try: + ret = eval(code, local_interp.globals, local_interp.locals) + if ret is not None: + lib.hexchat_print(lib.ph, '{}'.format(ret).encode()) + + except Exception as e: + traceback.print_exc(file=hexchat_stdout) + + +@ffi.def_extern() +def _on_load_command(word, word_eol, userdata): + filename = ffi.string(word[2]) + if filename.endswith(b'.py'): + load_filename(__decode(filename)) + return 3 + + return 0 + + +@ffi.def_extern() +def _on_unload_command(word, word_eol, userdata): + filename = ffi.string(word[2]) + if filename.endswith(b'.py'): + unload_name(__decode(filename)) + return 3 + + return 0 + + +@ffi.def_extern() +def _on_reload_command(word, word_eol, userdata): + filename = ffi.string(word[2]) + if filename.endswith(b'.py'): + reload_name(__decode(filename)) + return 3 + + return 0 + + +@ffi.def_extern(error=3) +def _on_py_command(word, word_eol, userdata): + subcmd = __decode(ffi.string(word[2])).lower() + + if subcmd == 'exec': + python = __decode(ffi.string(word_eol[3])) + exec_in_interp(python) + + elif subcmd == 'load': + filename = __decode(ffi.string(word[3])) + load_filename(filename) + + elif subcmd == 'unload': + name = __decode(ffi.string(word[3])) + if not unload_name(name): + lib.hexchat_print(lib.ph, b'Can\'t find a python plugin with that name') + + elif subcmd == 'reload': + name = __decode(ffi.string(word[3])) + if not reload_name(name): + lib.hexchat_print(lib.ph, b'Can\'t find a python plugin with that name') + + elif subcmd == 'console': + lib.hexchat_command(lib.ph, b'QUERY >>python<<') + + elif subcmd == 'list': + list_plugins() + + elif subcmd == 'about': + lib.hexchat_print(lib.ph, b'HexChat Python interface version ' + VERSION) + + else: + lib.hexchat_command(lib.ph, b'HELP PY') + + return 3 + + +@ffi.def_extern() +def _on_plugin_init(plugin_name, plugin_desc, plugin_version, arg, libdir): + global hexchat + global hexchat_stdout + + signal.signal(signal.SIGINT, signal.SIG_DFL) + + plugin_name[0] = PLUGIN_NAME + plugin_desc[0] = PLUGIN_DESC + plugin_version[0] = PLUGIN_VERSION + + try: + libdir = __decode(ffi.string(libdir)) + modpath = os.path.join(libdir, '..', 'python') + sys.path.append(os.path.abspath(modpath)) + hexchat = importlib.import_module('hexchat') + + except (UnicodeDecodeError, ImportError) as e: + lib.hexchat_print(lib.ph, b'Failed to import module: ' + repr(e).encode()) + + return 0 + + hexchat_stdout = Stdout() + sys.stdout = hexchat_stdout + sys.stderr = hexchat_stdout + pydoc.help = pydoc.Helper(HelpEater(), HelpEater()) + + lib.hexchat_hook_command(lib.ph, b'', 0, lib._on_say_command, ffi.NULL, ffi.NULL) + lib.hexchat_hook_command(lib.ph, b'LOAD', 0, lib._on_load_command, ffi.NULL, ffi.NULL) + lib.hexchat_hook_command(lib.ph, b'UNLOAD', 0, lib._on_unload_command, ffi.NULL, ffi.NULL) + lib.hexchat_hook_command(lib.ph, b'RELOAD', 0, lib._on_reload_command, ffi.NULL, ffi.NULL) + lib.hexchat_hook_command(lib.ph, b'PY', 0, lib._on_py_command, b'''Usage: /PY LOAD <filename> + UNLOAD <filename|name> + RELOAD <filename|name> + LIST + EXEC <command> + CONSOLE + ABOUT''', ffi.NULL) + + lib.hexchat_print(lib.ph, b'Python interface loaded') + autoload() + return 1 + + +@ffi.def_extern() +def _on_plugin_deinit(): + global local_interp + global hexchat + global hexchat_stdout + global plugins + + plugins = set() + local_interp = None + hexchat = None + hexchat_stdout = None + sys.stdout = sys.__stdout__ + sys.stderr = sys.__stderr__ + pydoc.help = pydoc.Helper() + + for mod in ('_hexchat', 'hexchat', 'xchat', '_hexchat_embedded'): + try: + del sys.modules[mod] + + except KeyError: + pass + + return 1 diff --git a/hexchat/plugins/python/python3.vcxproj b/hexchat/plugins/python/python3.vcxproj new file mode 100644 index 0000000..3eb86c2 --- /dev/null +++ b/hexchat/plugins/python/python3.vcxproj @@ -0,0 +1,70 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup Label="Configuration"> + <PlatformToolset>v142</PlatformToolset> + <ConfigurationType>DynamicLibrary</ConfigurationType> + </PropertyGroup> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{C2321A03-0BA7-45B3-8740-ABD82B36B0BF}</ProjectGuid> + <Keyword>Win32Proj</Keyword> + <RootNamespace>python3</RootNamespace> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + <Import Project="..\..\win32\hexchat.props" /> + <PropertyGroup> + <TargetName>$(Python3Output)</TargetName> + <OutDir>$(HexChatRel)plugins\</OutDir> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;PYTHON_EXPORTS;$(OwnFlags);%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>$(Glib);$(Python3Path)\include;..\..\src\common;$(HexChatLib);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <ModuleDefinitionFile>python.def</ModuleDefinitionFile> + <AdditionalDependencies>"$(Python3Lib).lib";$(DepLibs);%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalLibraryDirectories>$(DepsRoot)\lib;$(Python3Path)\libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + </Link> + <PreBuildEvent> + <Command>"$(Python3Path)\python.exe" generate_plugin.py ..\..\src\common\hexchat-plugin.h python.py "$(IntDir)python.c"</Command> + </PreBuildEvent> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <ClCompile> + <PreprocessorDefinitions>WIN32;_WIN64;_AMD64_;NDEBUG;_WINDOWS;_USRDLL;PYTHON_EXPORTS;$(OwnFlags);%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>$(Glib);$(Python3Path)\include;..\..\src\common;$(HexChatLib);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <ModuleDefinitionFile>python.def</ModuleDefinitionFile> + <AdditionalDependencies>"$(Python3Lib).lib";$(DepLibs);%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalLibraryDirectories>$(DepsRoot)\lib;$(Python3Path)\libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + </Link> + <PreBuildEvent> + <Command>"$(Python3Path)\python.exe" generate_plugin.py ..\..\src\common\hexchat-plugin.h python.py "$(IntDir)python.c"</Command> + </PreBuildEvent> + </ItemDefinitionGroup> + <ItemGroup> + <None Include="generate_plugin.py" /> + <None Include="hexchat.py" /> + <None Include="python.def" /> + <None Include="python.py" /> + <None Include="xchat.py" /> + <None Include="_hexchat.py" /> + </ItemGroup> + <ItemGroup> + <ClCompile Include="$(IntDir)python.c" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> +</Project> \ No newline at end of file diff --git a/hexchat/plugins/python/python3.vcxproj.filters b/hexchat/plugins/python/python3.vcxproj.filters new file mode 100644 index 0000000..5c5834b --- /dev/null +++ b/hexchat/plugins/python/python3.vcxproj.filters @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Source Files"> + <UniqueIdentifier>{f4eaf231-f095-42d3-8427-b2b6006cacb1}</UniqueIdentifier> + </Filter> + <Filter Include="Resource Files"> + <UniqueIdentifier>{0166c0f9-7968-4a09-9ef5-a5179c7746eb}</UniqueIdentifier> + </Filter> + </ItemGroup> + <ItemGroup> + <ClCompile Include="$(IntDir)python.c" /> + </ItemGroup> + <ItemGroup> + <None Include="python.def"> + <Filter>Resource Files</Filter> + </None> + <None Include="_hexchat.py"> + <Filter>Source Files</Filter> + </None> + <None Include="generate_plugin.py"> + <Filter>Source Files</Filter> + </None> + <None Include="hexchat.py"> + <Filter>Source Files</Filter> + </None> + <None Include="python.py"> + <Filter>Source Files</Filter> + </None> + <None Include="xchat.py"> + <Filter>Source Files</Filter> + </None> + </ItemGroup> +</Project> \ No newline at end of file diff --git a/hexchat/plugins/python/python_style_guide.md b/hexchat/plugins/python/python_style_guide.md new file mode 100644 index 0000000..41db247 --- /dev/null +++ b/hexchat/plugins/python/python_style_guide.md @@ -0,0 +1,26 @@ +# HexChat Python Module Style Guide + +(This is a work in progress). + +## General rules + +- PEP8 as general fallback recommendations +- Max line length: 120 +- Avoid overcomplex compound statements. i.e. dont do this: `somevar = x if x == y else z if a == b and c == b else x` + +## Indentation style + +### Multi-line functions + +```python +foo(really_long_arg_1, + really_long_arg_2) +``` + +### Mutli-line lists/dicts + +```python +foo = { + 'bar': 'baz', +} +``` diff --git a/hexchat/plugins/python/xchat.py b/hexchat/plugins/python/xchat.py new file mode 100644 index 0000000..6922490 --- /dev/null +++ b/hexchat/plugins/python/xchat.py @@ -0,0 +1 @@ +from _hexchat import * diff --git a/hexchat/plugins/sysinfo/format.c b/hexchat/plugins/sysinfo/format.c new file mode 100644 index 0000000..741c43e --- /dev/null +++ b/hexchat/plugins/sysinfo/format.c @@ -0,0 +1,90 @@ +/* + * SysInfo - sysinfo plugin for HexChat + * Copyright (c) 2015 Patrick Griffis. + * + * This program is free software you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <glib.h> + +char * +sysinfo_format_uptime (gint64 uptime) +{ + char buffer[128]; + + gint64 weeks = uptime / 604800; + int days = (uptime / 86400) % 7; + int hours = (uptime / 3600) % 24; + int minutes = (uptime / 60) % 60; + int seconds = uptime % 60; + + if (weeks != 0) + { + g_snprintf (buffer, sizeof(buffer), "%" G_GINT64_FORMAT "w %dd %dh %dm %ds", weeks, days, hours, minutes, seconds); + } + else if (days != 0) + { + g_snprintf (buffer, sizeof(buffer), "%dd %dh %dm %ds", days, hours, minutes, seconds); + } + else if (hours != 0) + { + g_snprintf (buffer, sizeof(buffer), "%dh %dm %ds", hours, minutes, seconds); + } + else if (minutes != 0) + { + g_snprintf (buffer, sizeof(buffer), "%dm %ds", minutes, seconds); + } + else + { + g_snprintf (buffer, sizeof(buffer), "%ds", seconds); + } + + return g_strdup (buffer); +} + +char * +sysinfo_format_memory (guint64 totalmem, guint64 freemem) +{ + char *total_fmt, *free_fmt, *ret; + + total_fmt = g_format_size_full (totalmem, G_FORMAT_SIZE_IEC_UNITS); + free_fmt = g_format_size_full (freemem, G_FORMAT_SIZE_IEC_UNITS); + ret = g_strdup_printf ("%s Total (%s Free)", total_fmt, free_fmt); + + g_free (total_fmt); + g_free (free_fmt); + return ret; +} + +char * +sysinfo_format_disk (guint64 total, guint64 free) +{ + char *total_fmt, *free_fmt, *used_fmt, *ret; + GFormatSizeFlags format_flags = G_FORMAT_SIZE_DEFAULT; + +#ifdef WIN32 /* Windows uses IEC size (with SI format) */ + format_flags = G_FORMAT_SIZE_IEC_UNITS; +#endif + + total_fmt = g_format_size_full (total, format_flags); + free_fmt = g_format_size_full (free, format_flags); + used_fmt = g_format_size_full (total - free, format_flags); + ret = g_strdup_printf ("%s / %s (%s Free)", used_fmt, total_fmt, free_fmt); + + g_free (total_fmt); + g_free (free_fmt); + g_free (used_fmt); + return ret; +} diff --git a/hexchat/plugins/sysinfo/format.h b/hexchat/plugins/sysinfo/format.h new file mode 100644 index 0000000..5fe209b --- /dev/null +++ b/hexchat/plugins/sysinfo/format.h @@ -0,0 +1,28 @@ +/* + * SysInfo - sysinfo plugin for HexChat + * Copyright (c) 2015 Patrick Griffis. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + + +#ifndef FORMAT_H +#define FORMAT_H + +char *sysinfo_format_uptime(gint64 uptime); +char *sysinfo_format_memory(guint64 totalmem, guint64 freemem); +char *sysinfo_format_disk(guint64 total, guint64 free); + +#endif diff --git a/hexchat/plugins/sysinfo/meson.build b/hexchat/plugins/sysinfo/meson.build new file mode 100644 index 0000000..08f08c2 --- /dev/null +++ b/hexchat/plugins/sysinfo/meson.build @@ -0,0 +1,61 @@ +sysinfo_sources = [ + 'format.c', + 'sysinfo.c', +] + +sysinfo_deps = [ + libgio_dep, + hexchat_plugin_dep, + common_sysinfo_deps, +] + +sysinfo_includes = [] +sysinfo_cargs = [] + +system = host_machine.system() +if system == 'linux' or system == 'gnu' or system.startswith('gnu/') or system == 'darwin' or system == 'freebsd' + sysinfo_includes += 'shared' + sysinfo_sources += [ + 'shared/df.c' + ] + + if system == 'linux' or system == 'gnu' or system.startswith('gnu/') or system == 'freebsd' + libpci = dependency('libpci', required: false, method: 'pkg-config') + if libpci.found() + sysinfo_deps += libpci + sysinfo_cargs += '-DHAVE_LIBPCI' + sysinfo_sources += 'unix/pci.c' + + picidsdir = libpci.get_pkgconfig_variable('idsdir') + pciids = join_paths(picidsdir, 'pci.ids') + sysinfo_cargs += '-DPCIIDS_FILE="@0@"'.format(pciids) + endif + sysinfo_includes += 'unix' + sysinfo_sources += [ + 'unix/backend.c', + 'unix/match.c', + 'unix/parse.c', + ] + elif system == 'darwin' + add_languages('objc') + sysinfo_sources += 'osx/backend.m' + endif + +elif system == 'windows' + sysinfo_sources += [ + 'win32/backend.c', + '../../src/common/sysinfo/win32/backend.c' + ] +else + error('sysinfo: Unknown system?') +endif + +shared_module('sysinfo', sysinfo_sources, + dependencies: sysinfo_deps, + include_directories: include_directories(sysinfo_includes), + c_args: sysinfo_cargs, + install: true, + install_dir: plugindir, + name_prefix: '', + vs_module_defs: 'sysinfo.def', +) diff --git a/hexchat/plugins/sysinfo/osx/backend.m b/hexchat/plugins/sysinfo/osx/backend.m new file mode 100644 index 0000000..73bdf99 --- /dev/null +++ b/hexchat/plugins/sysinfo/osx/backend.m @@ -0,0 +1,275 @@ +/* + * SysInfo - sysinfo plugin for HexChat + * Copyright (c) 2015 Patrick Griffis. + * + * This program is free software you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + + /* + * Some snippets based upon Textual's System Profiler plugin. + * https://github.com/Codeux-Software/Textual + */ + +#import <Cocoa/Cocoa.h> + +#include <sys/sysctl.h> +#include <mach/mach.h> +#include <mach/mach_host.h> +#include <mach/host_info.h> +#include <mach/mach_vm.h> + +#include <glib.h> + +#include "format.h" +#include "df.h" + +static char * +get_os (void) +{ + NSDictionary *systemversion = [NSDictionary dictionaryWithContentsOfFile:@"/System/Library/CoreServices/SystemVersion.plist"]; + NSString *build = [systemversion objectForKey:@"ProductBuildVersion"]; + if (!build) + return NULL; + NSString *version = [systemversion objectForKey:@"ProductUserVisibleVersion"]; + if (!version) + { + [build release]; + return NULL; + } + + NSDictionary *profiler = [NSDictionary dictionaryWithContentsOfFile:[@"~/Library/Preferences/com.apple.SystemProfiler.plist" stringByExpandingTildeInPath]]; + NSDictionary *names = [profiler objectForKey:@"OS Names"]; + NSString *os_name = nil; + + for (NSString *name in names) + { + if ([name hasPrefix:build]) + { + os_name = [names objectForKey:name]; + break; + } + } + [build release]; + + if (!os_name) + { + [version release]; + return NULL; + } + + char *ret = g_strdup_printf ("%s %s", [os_name UTF8String], [version UTF8String]); + [version release]; + + return ret; +} + +static char * +get_os_fallback (void) +{ +#if !defined (MAC_OS_X_VERSION_10_9) || MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_9 + SInt32 ver_major = 0, + ver_minor = 0, + ver_patch = 0; + + Gestalt (gestaltSystemVersionMajor, &ver_major); + Gestalt (gestaltSystemVersionMinor, &ver_minor); + Gestalt (gestaltSystemVersionBugFix, &ver_patch); + + return g_strdup_printf ("OS X %d.%d.%d", ver_major, ver_minor, ver_patch); +#else + NSProcessInfo *info = [NSProcessInfo processInfo]; + NSOperatingSystemVersion version = [info operatingSystemVersion]; + + return g_strdup_printf ("OS X %ld.%ld.%ld", version.majorVersion, version.minorVersion, version.patchVersion); +#endif +} +char * +sysinfo_backend_get_os(void) +{ + static char *os_str = NULL; + if (!os_str) + { + os_str = get_os(); + if (!os_str) + os_str = get_os_fallback(); + } + return g_strdup (os_str); +} + +char * +sysinfo_backend_get_disk(void) +{ + gint64 total, free_space; + + if (xs_parse_df (&total, &free_space)) + { + return NULL; + } + + return sysinfo_format_disk (total, free_space); +} + +static guint64 +get_free_memory (void) +{ + mach_msg_type_number_t infoCount = (sizeof(vm_statistics_data_t) / sizeof(natural_t)); + + vm_size_t pagesize; + vm_statistics_data_t vm_stat; + + host_page_size(mach_host_self(), &pagesize); + + if (host_statistics(mach_host_self(), HOST_VM_INFO, (host_info_t)&vm_stat, &infoCount) == KERN_SUCCESS) + return ((vm_stat.inactive_count + vm_stat.free_count) * pagesize); + + return 0; +} + +char * +sysinfo_backend_get_memory(void) +{ + NSProcessInfo *info = [NSProcessInfo processInfo]; + guint64 totalmem, freemem; + + totalmem = [info physicalMemory]; + + if ((freemem = get_free_memory()) == 0) + return NULL; + + return sysinfo_format_memory (totalmem, freemem); +} + +char * +sysinfo_backend_get_cpu(void) +{ + guint64 cpu_clock_uint = 0; + double cpu_clock; + char cpu_string[256]; + gsize len; + gboolean giga = FALSE; + + len = sizeof(cpu_string); + if (sysctlbyname ("machdep.cpu.brand_string", cpu_string, &len, NULL, 0) != 0) + return NULL; + cpu_string[sizeof(cpu_string) - 1] = '\0'; + + len = sizeof(cpu_clock_uint); + if (sysctlbyname("hw.cpufrequency", &cpu_clock_uint, &len, NULL, 0) < 0) + return NULL; + + cpu_clock = cpu_clock_uint / 1000000; + if (cpu_clock > 1000) + { + cpu_clock /= 1000; + giga = TRUE; + } + + if (giga) + return g_strdup_printf ("%s (%.2fGHz)", cpu_string, cpu_clock); + else + return g_strdup_printf ("%s (%.0fMHz)", cpu_string, cpu_clock); +} + +static char * +get_gpu(void) +{ + CFMutableDictionaryRef pciDevices = IOServiceMatching("IOPCIDevice"); + io_iterator_t entry_iterator, serviceObject; + + if (IOServiceGetMatchingServices(kIOMasterPortDefault, pciDevices, &entry_iterator) != kIOReturnSuccess) + return NULL; + + GString *gpu_list = g_string_new(NULL); + while ((serviceObject = IOIteratorNext(entry_iterator))) + { + CFMutableDictionaryRef serviceDictionary; + + kern_return_t status = IORegistryEntryCreateCFProperties(serviceObject, &serviceDictionary, + kCFAllocatorDefault, kNilOptions); + + if (status != kIOReturnSuccess) + { + IOObjectRelease(serviceObject); + continue; + } + + const void *class = CFDictionaryGetValue(serviceDictionary, @"class-code"); + if (!class || *(guint32*)CFDataGetBytePtr(class) != 0x30000) /* DISPLAY_VGA */ + { + CFRelease(serviceDictionary); + continue; + } + + const void *model = CFDictionaryGetValue(serviceDictionary, @"model"); + if (model) + { + if (CFGetTypeID(model) == CFDataGetTypeID() && CFDataGetLength(model) > 1) + { + if (gpu_list->len != 0) + g_string_append (gpu_list, ", "); + g_string_append_len (gpu_list, (const char*)CFDataGetBytePtr(model), CFDataGetLength(model) - 1); + } + } + + CFRelease(serviceDictionary); + } + + if (gpu_list->len == 0) + { + g_string_free (gpu_list, TRUE); + return NULL; + } + + /* The string may contain nul-chars we must replace */ + int i; + for (i = 0; i < gpu_list->len; i++) + { + if (gpu_list->str[i] == '\0') + gpu_list->str[i] = ' '; + } + + return g_string_free (gpu_list, FALSE); +} + +char * +sysinfo_backend_get_gpu(void) +{ + static char *gpu_str = NULL; + if (!gpu_str) + gpu_str = get_gpu(); + + return g_strdup (gpu_str); +} + +char * +sysinfo_backend_get_sound(void) +{ + return NULL; +} + +char * +sysinfo_backend_get_uptime(void) +{ + NSProcessInfo *info = [NSProcessInfo processInfo]; + double uptime = [info systemUptime]; + + return sysinfo_format_uptime ((gint64)uptime); +} + +char * +sysinfo_backend_get_network(void) +{ + return NULL; +} diff --git a/hexchat/plugins/sysinfo/shared/df.c b/hexchat/plugins/sysinfo/shared/df.c new file mode 100644 index 0000000..bb2c213 --- /dev/null +++ b/hexchat/plugins/sysinfo/shared/df.c @@ -0,0 +1,53 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <glib.h> + +#include "sysinfo.h" + +int xs_parse_df(gint64 *out_total, gint64 *out_free) +{ + FILE *pipe; + char buffer[bsize]; + + pipe = popen("df -k -l -P --exclude-type=squashfs --exclude-type=devtmpfs --exclude-type=tmpfs", "r"); + if(pipe==NULL) + return 1; + + *out_total = *out_free = 0; + + while(fgets(buffer, bsize, pipe) != NULL) + { + long long int avail, total; + + /* Filesystem 1024-blocks Used Available Capacity Mounted-on */ + if (sscanf (buffer, "%*s %lld %*s %lld %*s %*s", &total, &avail) == 2) + { + *out_total += total; + *out_free += avail; + } + } + + /* Convert to bytes */ + *out_total *= 1000; + *out_free *= 1000; + + pclose(pipe); + return 0; +} diff --git a/hexchat/plugins/sysinfo/shared/df.h b/hexchat/plugins/sysinfo/shared/df.h new file mode 100644 index 0000000..5f7f329 --- /dev/null +++ b/hexchat/plugins/sysinfo/shared/df.h @@ -0,0 +1,23 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + + +#ifndef SYSINFO_SHARED_H +#define SYSINFO_SHARED_H + +int xs_parse_df(gint64 *total_bytes, gint64 *free_bytes); + +#endif diff --git a/hexchat/plugins/sysinfo/sysinfo-backend.h b/hexchat/plugins/sysinfo/sysinfo-backend.h new file mode 100644 index 0000000..c69a085 --- /dev/null +++ b/hexchat/plugins/sysinfo/sysinfo-backend.h @@ -0,0 +1,33 @@ +/* + * SysInfo - sysinfo plugin for HexChat + * Copyright (c) 2015 Patrick Griffis. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + + +#ifndef SYSINFO_BACKEND_H +#define SYSINFO_BACKEND_H + +char *sysinfo_backend_get_os(void); +char *sysinfo_backend_get_disk(void); +char *sysinfo_backend_get_memory(void); +char *sysinfo_backend_get_cpu(void); +char *sysinfo_backend_get_gpu(void); +char *sysinfo_backend_get_sound(void); +char *sysinfo_backend_get_uptime(void); +char *sysinfo_backend_get_network(void); + +#endif diff --git a/hexchat/plugins/sysinfo/sysinfo.c b/hexchat/plugins/sysinfo/sysinfo.c new file mode 100644 index 0000000..a09e476 --- /dev/null +++ b/hexchat/plugins/sysinfo/sysinfo.c @@ -0,0 +1,249 @@ +/* + * SysInfo - sysinfo plugin for HexChat + * Copyright (c) 2012 Berke Viktor. + * + * xsys.c - main functions for X-Sys 2 + * by mikeshoup + * Copyright (C) 2003, 2004, 2005 Michael Shoup + * Copyright (C) 2005, 2006, 2007 Tony Vroon + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "config.h" + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <glib.h> + +#include "hexchat-plugin.h" +#include "sysinfo-backend.h" +#include "sysinfo.h" + +#define _(x) hexchat_gettext(ph,x) +#define DEFAULT_ANNOUNCE TRUE + +static hexchat_plugin *ph; + +static char name[] = "Sysinfo"; +static char desc[] = "Display info about your hardware and OS"; +static char version[] = "1.0"; +static char sysinfo_help[] = "SysInfo Usage:\n /SYSINFO [-e|-o] [CLIENT|OS|CPU|RAM|DISK|VGA|SOUND|ETHERNET|UPTIME], print various details about your system or print a summary without arguments\n /SYSINFO SET <variable>\n"; + +typedef struct +{ + const char *name; /* Lower case name used for prefs */ + const char *title; /* Used for the end formatting */ + char *(*callback) (void); + gboolean def; /* Hide by default? */ +} hwinfo; + +static char * +get_client (void) +{ + return g_strdup_printf ("HexChat %s", hexchat_get_info(ph, "version")); +} + +static hwinfo hwinfos[] = { + {"client", "Client", get_client}, + {"os", "OS", sysinfo_backend_get_os}, + {"cpu", "CPU", sysinfo_backend_get_cpu}, + {"memory", "Memory", sysinfo_backend_get_memory}, + {"storage", "Storage", sysinfo_backend_get_disk}, + {"vga", "VGA", sysinfo_backend_get_gpu}, + {"sound", "Sound", sysinfo_backend_get_sound, TRUE}, + {"ethernet", "Ethernet", sysinfo_backend_get_network, TRUE}, + {"uptime", "Uptime", sysinfo_backend_get_uptime}, + {NULL, NULL}, +}; + +static gboolean sysinfo_get_bool_pref (const char *pref, gboolean def); + +static gboolean +should_show_info (hwinfo info) +{ + char hide_pref[32]; + + g_snprintf (hide_pref, sizeof(hide_pref), "hide_%s", info.name); + return !sysinfo_get_bool_pref (hide_pref, info.def); +} + +static void +print_summary (gboolean announce) +{ + char **strings = g_new0 (char*, G_N_ELEMENTS(hwinfos)); + int i, x; + char *output; + + for (i = 0, x = 0; hwinfos[i].name != NULL; i++) + { + if (should_show_info (hwinfos[i])) + { + char *str = hwinfos[i].callback(); + if (str) + { + strings[x++] = g_strdup_printf ("\002%s\002: %s", hwinfos[i].title, str); + g_free (str); + } + } + } + + output = g_strjoinv (" \002\342\200\242\002 ", strings); + hexchat_commandf (ph, "%s %s", announce ? "SAY" : "ECHO", output); + + g_strfreev (strings); + g_free (output); +} + +static void +print_info (char *info, gboolean announce) +{ + int i; + + for (i = 0; hwinfos[i].name != NULL; i++) + { + if (!g_ascii_strcasecmp (info, hwinfos[i].name)) + { + char *str = hwinfos[i].callback(); + if (str) + { + hexchat_commandf (ph, "%s \002%s\002: %s", announce ? "SAY" : "ECHO", + hwinfos[i].title, str); + g_free (str); + } + else + hexchat_print (ph, _("Sysinfo: Failed to get info. Either not supported or error.")); + return; + } + } + + hexchat_print (ph, _("Sysinfo: No info by that name\n")); +} + +static gboolean +sysinfo_get_bool_pref (const char *pref, gboolean def) +{ + int value = hexchat_pluginpref_get_int (ph, pref); + + if (value != -1) + return value; + + return def; +} + +static void +sysinfo_set_pref_real (const char *pref, char *value, gboolean def) +{ + if (value && value[0]) + { + guint64 i = g_ascii_strtoull (value, NULL, 0); + hexchat_pluginpref_set_int (ph, pref, i != 0); + hexchat_printf (ph, _("Sysinfo: %s is set to: %d\n"), pref, i != 0); + } + else + { + hexchat_printf (ph, _("Sysinfo: %s is set to: %d\n"), pref, + sysinfo_get_bool_pref(pref, def)); + } +} + +static void +sysinfo_set_pref (char *key, char *value) +{ + if (!key || !key[0]) + { + hexchat_print (ph, _("Sysinfo: Valid settings are: announce and hide_* for each piece of information. e.g. hide_os. Without a value it will show current (or default) setting.\n")); + return; + } + + if (!strcmp (key, "announce")) + { + sysinfo_set_pref_real (key, value, DEFAULT_ANNOUNCE); + return; + } + else if (g_str_has_prefix (key, "hide_")) + { + int i; + for (i = 0; hwinfos[i].name != NULL; i++) + { + if (!strcmp (key + 5, hwinfos[i].name)) + { + sysinfo_set_pref_real (key, value, hwinfos[i].def); + return; + } + } + } + + hexchat_print (ph, _("Sysinfo: Invalid variable name\n")); +} + +static int +sysinfo_cb (char *word[], char *word_eol[], void *userdata) +{ + gboolean announce = sysinfo_get_bool_pref("announce", DEFAULT_ANNOUNCE); + int offset = 0, channel_type; + char *cmd; + + /* Allow overriding global announce setting */ + if (!strcmp ("-e", word[2])) + { + announce = FALSE; + offset++; + } + else if (!strcmp ("-o", word[2])) + { + announce = TRUE; + offset++; + } + + /* Cannot send to server tab */ + channel_type = hexchat_list_int (ph, NULL, "type"); + if (channel_type != 2 /* SESS_CHANNEL */ && channel_type != 3 /* SESS_DIALOG */) + announce = FALSE; + + cmd = word[2+offset]; + if (!g_ascii_strcasecmp ("SET", cmd)) + sysinfo_set_pref (word[3+offset], word_eol[4+offset]); + else if (!cmd || !cmd[0]) + print_summary (announce); + else + print_info (cmd, announce); + + return HEXCHAT_EAT_ALL; +} + +int +hexchat_plugin_init (hexchat_plugin *plugin_handle, char **plugin_name, char **plugin_desc, char **plugin_version, char *arg) +{ + ph = plugin_handle; + *plugin_name = name; + *plugin_desc = desc; + *plugin_version = version; + + hexchat_hook_command (ph, "SYSINFO", HEXCHAT_PRI_NORM, sysinfo_cb, sysinfo_help, NULL); + + hexchat_command (ph, "MENU ADD \"Window/Send System Info\" \"SYSINFO\""); + hexchat_printf (ph, _("%s plugin loaded\n"), name); + return 1; +} + +int +hexchat_plugin_deinit (void) +{ + hexchat_command (ph, "MENU DEL \"Window/Display System Info\""); + hexchat_printf (ph, _("%s plugin unloaded\n"), name); + return 1; +} diff --git a/hexchat/plugins/sysinfo/sysinfo.def b/hexchat/plugins/sysinfo/sysinfo.def new file mode 100644 index 0000000..e560f50 --- /dev/null +++ b/hexchat/plugins/sysinfo/sysinfo.def @@ -0,0 +1,3 @@ +EXPORTS +hexchat_plugin_init +hexchat_plugin_deinit diff --git a/hexchat/plugins/sysinfo/sysinfo.h b/hexchat/plugins/sysinfo/sysinfo.h new file mode 100644 index 0000000..16ec03e --- /dev/null +++ b/hexchat/plugins/sysinfo/sysinfo.h @@ -0,0 +1,26 @@ +/* + * SysInfo - sysinfo plugin for HexChat + * Copyright (c) 2015 Patrick Griffis. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + + +#ifndef SYSINFO_H +#define SYSINFO_H + +#define bsize 1024 + +#endif diff --git a/hexchat/plugins/sysinfo/sysinfo.vcxproj b/hexchat/plugins/sysinfo/sysinfo.vcxproj new file mode 100644 index 0000000..a3ff0f8 --- /dev/null +++ b/hexchat/plugins/sysinfo/sysinfo.vcxproj @@ -0,0 +1,71 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup Label="Configuration"> + <PlatformToolset>v142</PlatformToolset> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{6C0CA980-97C5-427A-BE61-5BCECAFABBDA}</ProjectGuid> + <Keyword>Win32Proj</Keyword> + <RootNamespace>sysinfo</RootNamespace> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + <Import Project="..\..\win32\hexchat.props" /> + <PropertyGroup> + <TargetName>hcsysinfo</TargetName> + <OutDir>$(HexChatRel)plugins\</OutDir> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;SYSINFO_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>..\..\src\common;$(DepsRoot)\include;$(Glib);$(HexChatLib);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType> + </ClCompile> + <Link> + <AdditionalLibraryDirectories>$(DepsRoot)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + <AdditionalDependencies>$(HexChatLib)common.lib;wbemuuid.lib;comsupp.lib;$(DepLibs);%(AdditionalDependencies)</AdditionalDependencies> + <IgnoreSpecificDefaultLibraries>comsupp.lib</IgnoreSpecificDefaultLibraries> + <ModuleDefinitionFile>sysinfo.def</ModuleDefinitionFile> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <ClCompile> + <PreprocessorDefinitions>WIN32;_WIN64;_AMD64_;NDEBUG;_WINDOWS;_USRDLL;SYSINFO_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>..\..\src\common;$(DepsRoot)\include;$(Glib);$(HexChatLib);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType> + </ClCompile> + <Link> + <AdditionalLibraryDirectories>$(DepsRoot)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + <AdditionalDependencies>$(HexChatLib)common.lib;wbemuuid.lib;comsupp.lib;$(DepLibs);%(AdditionalDependencies)</AdditionalDependencies> + <IgnoreSpecificDefaultLibraries>comsupp.lib</IgnoreSpecificDefaultLibraries> + <ModuleDefinitionFile>sysinfo.def</ModuleDefinitionFile> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <None Include="sysinfo.def" /> + </ItemGroup> + <ItemGroup> + <ClCompile Include="format.c" /> + <ClCompile Include="sysinfo.c" /> + <ClCompile Include="win32\backend.c" /> + </ItemGroup> + <ItemGroup> + <ClInclude Include="format.h" /> + <ClInclude Include="sysinfo-backend.h" /> + <ClInclude Include="sysinfo.h" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> +</Project> \ No newline at end of file diff --git a/hexchat/plugins/sysinfo/sysinfo.vcxproj.filters b/hexchat/plugins/sysinfo/sysinfo.vcxproj.filters new file mode 100644 index 0000000..aa173bb --- /dev/null +++ b/hexchat/plugins/sysinfo/sysinfo.vcxproj.filters @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Source Files"> + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> + <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> + </Filter> + <Filter Include="Resource Files"> + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> + </Filter> + <Filter Include="Header Files"> + <UniqueIdentifier>{c873eb6b-aca6-434d-8ec9-199838b80838}</UniqueIdentifier> + </Filter> + </ItemGroup> + <ItemGroup> + <None Include="sysinfo.def"> + <Filter>Resource Files</Filter> + </None> + </ItemGroup> + <ItemGroup> + <ClCompile Include="sysinfo.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="win32\backend.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="format.c"> + <Filter>Source Files</Filter> + </ClCompile> + </ItemGroup> + <ItemGroup> + <ClInclude Include="sysinfo.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="sysinfo-backend.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="format.h"> + <Filter>Header Files</Filter> + </ClInclude> + </ItemGroup> +</Project> \ No newline at end of file diff --git a/hexchat/plugins/sysinfo/unix/backend.c b/hexchat/plugins/sysinfo/unix/backend.c new file mode 100644 index 0000000..b687645 --- /dev/null +++ b/hexchat/plugins/sysinfo/unix/backend.c @@ -0,0 +1,170 @@ +/* + * SysInfo - sysinfo plugin for HexChat + * Copyright (c) 2015 Patrick Griffis. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <glib.h> +#include "parse.h" +#include "match.h" +#include "sysinfo.h" +#include "format.h" +#include "df.h" + +char *sysinfo_backend_get_os(void) +{ + char name[bsize]; + + if (xs_parse_distro (name) != 0) + { + return NULL; + } + + return g_strdup(name); +} + +char *sysinfo_backend_get_disk(void) +{ + gint64 total, free; + + if (xs_parse_df (&total, &free)) + { + return NULL; + } + + return sysinfo_format_disk (total, free); +} + +char *sysinfo_backend_get_memory(void) +{ + unsigned long long mem_total; + unsigned long long mem_free; + unsigned long long swap_total; + unsigned long long swap_free; + char *swap_fmt = NULL, *mem_fmt, *ret; + + if (xs_parse_meminfo (&mem_total, &mem_free, 0) == 1) + { + return NULL; + } + if (xs_parse_meminfo (&swap_total, &swap_free, 1) != 1 && swap_total != 0) + { + swap_fmt = sysinfo_format_memory (swap_total, swap_free); + } + + mem_fmt = sysinfo_format_memory (mem_total, mem_free); + + if (swap_fmt) + { + ret = g_strdup_printf ("Physical: %s Swap: %s", mem_fmt, swap_fmt); + g_free (mem_fmt); + g_free (swap_fmt); + } + else + ret = mem_fmt; + + return ret; +} + +char *sysinfo_backend_get_cpu(void) +{ + char model[bsize]; + char vendor[bsize]; + char buffer[bsize]; + double freq; + int giga = 0; + + if (xs_parse_cpu (model, vendor, &freq) != 0) + { + return NULL; + } + + if (freq > 1000) + { + freq /= 1000; + giga = 1; + } + + if (giga) + { + g_snprintf (buffer, bsize, "%s (%.2fGHz)", model, freq); + } + else + { + g_snprintf (buffer, bsize, "%s (%.0fMHz)", model, freq); + } + + return g_strdup (buffer); +} + +char *sysinfo_backend_get_gpu(void) +{ + char vid_card[bsize]; + char agp_bridge[bsize]; + char buffer[bsize]; + int ret; + + if ((ret = xs_parse_video (vid_card)) != 0) + { + return NULL; + } + + if (xs_parse_agpbridge (agp_bridge) != 0) + { + g_snprintf (buffer, bsize, "%s", vid_card); + } + else + { + g_snprintf (buffer, bsize, "%s @ %s", vid_card, agp_bridge); + } + + return g_strdup (buffer); +} + +char *sysinfo_backend_get_sound(void) +{ + char sound[bsize]; + + if (xs_parse_sound (sound) != 0) + { + return NULL; + } + return g_strdup (sound); +} + +char *sysinfo_backend_get_uptime(void) +{ + gint64 uptime; + + if ((uptime = xs_parse_uptime ()) == 0) + { + return NULL; + } + + return sysinfo_format_uptime (uptime); +} + +char *sysinfo_backend_get_network(void) +{ + char ethernet_card[bsize]; + + if (xs_parse_ether (ethernet_card)) + { + g_strlcpy (ethernet_card, "None found", bsize); + } + + return g_strdup (ethernet_card); +} diff --git a/hexchat/plugins/sysinfo/unix/match.c b/hexchat/plugins/sysinfo/unix/match.c new file mode 100644 index 0000000..2ef51f3 --- /dev/null +++ b/hexchat/plugins/sysinfo/unix/match.c @@ -0,0 +1,98 @@ +/* + * match.c - matching functions for X-Sys + * Copyright (C) 2005, 2006, 2007 Tony Vroon + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <glib.h> +#include "sysinfo.h" + +#define delims ":=" + +void find_match_char(char *buffer, char *match, char *result) +{ + char *position; + g_strchug(buffer); + if(strstr(buffer, match) == strstr(buffer, buffer)) + { + position = strpbrk(buffer, delims); + if (position != NULL) + { + position += 1; + strcpy(result, position); + position = strstr(result, "\n"); + *(position) = '\0'; + g_strchug(result); + } + else + strcpy(result, "\0"); + } +} + +void find_match_double(char *buffer, char *match, double *result) +{ + char *position; + g_strchug(buffer); + if(strstr(buffer, match) == strstr(buffer, buffer)) + { + position = strpbrk(buffer, delims); + if (position != NULL) + { + position += 1; + *result = strtod(position, NULL); + } + else + *result = 0; + } +} + +void find_match_double_hex(char *buffer, char *match, double *result) +{ + char *position; + g_strchug(buffer); + if(strstr(buffer, match) == strstr(buffer, buffer)) + { + position = strpbrk(buffer, delims); + if (position != NULL) + { + memcpy(position,"0x",2); + *result = strtod(position,NULL); + } + else + *result = 0; + } +} + +void find_match_ll(char *buffer, char *match, unsigned long long *result) +{ + char *position; + g_strchug(buffer); + if(strstr(buffer, match) == strstr(buffer, buffer)) + { + position = strpbrk(buffer, delims); + if (position != NULL) + { + position += 1; + *result = strtoll(position, NULL, 10); + } + else + *result = 0; + } +} + diff --git a/hexchat/plugins/sysinfo/unix/match.h b/hexchat/plugins/sysinfo/unix/match.h new file mode 100644 index 0000000..16999fa --- /dev/null +++ b/hexchat/plugins/sysinfo/unix/match.h @@ -0,0 +1,29 @@ +/* + * match.h - matching header for X-Sys + * Copyright (C) 2005 Tony Vroon + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef _MATCH_H_ +#define _MATCH_H_ + +void find_match_char(char *buffer, char *match, char *result); +void find_match_double(char *buffer, char *match, double *result); +void find_match_double_hex(char *buffer, char *match, double *result); +void find_match_ll(char *buffer, char *match, unsigned long long *result); +void remove_leading_whitespace(char *buffer); + +#endif diff --git a/hexchat/plugins/sysinfo/unix/parse.c b/hexchat/plugins/sysinfo/unix/parse.c new file mode 100644 index 0000000..8e1e8bb --- /dev/null +++ b/hexchat/plugins/sysinfo/unix/parse.c @@ -0,0 +1,357 @@ +/* + * parse.c - parsing functions for X-Sys + * by mike9010 + * Copyright (C) 2003, 2004, 2005 Michael Shoup + * Copyright (C) 2005, 2006, 2007 Tony Vroon + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <ctype.h> +#ifdef HAVE_LIBPCI + #include <pci/header.h> + #include "pci.h" +#endif +#include <glib.h> + +#ifdef __sparc__ +#include <dirent.h> +#endif + +#include "match.h" +#include "parse.h" +#include "sysinfo.h" + +int xs_parse_cpu(char *model, char *vendor, double *freq) +{ +#if defined(__i386__) || defined(__x86_64__) || defined(__powerpc__) || defined(__alpha__) || defined(__ia64__) || defined(__parisc__) || defined(__sparc__) + char buffer[bsize]; +#endif + FILE *fp; + + fp = fopen("/proc/cpuinfo", "r"); + if(fp == NULL) + return 1; + +#if defined(__i386__) || defined(__x86_64__) + + while(fgets(buffer, bsize, fp) != NULL) + { + find_match_char(buffer, "model name", model); + find_match_char(buffer, "vendor_id", vendor); + find_match_double(buffer, "cpu MHz", freq); + } + +#elif defined(__powerpc__) + { + char *pos; + + while(fgets(buffer, bsize, fp) != NULL) + { + find_match_char(buffer, "cpu", model); + find_match_char(buffer, "machine", vendor); + find_match_double(buffer, "clock", freq); + } + pos = strstr(model, ","); + if (pos != NULL) + *pos = '\0'; + } +#elif defined( __alpha__) + + while(fgets(buffer, bsize, fp) != NULL) + { + find_match_char(buffer, "cpu model", model); + find_match_char(buffer, "system type", vendor); + find_match_double(buffer, "cycle frequency [Hz]", freq); + } + *freq = *freq / 1000000; + +#elif defined(__ia64__) + + while(fgets(buffer, bsize, fp) != NULL) + { + find_match_char(buffer, "model", model); + find_match_char(buffer, "vendor", vendor); + find_match_double(buffer, "cpu MHz", freq); + } + +#elif defined(__parisc__) + + while(fgets(buffer, bsize, fp) != NULL) + { + find_match_char(buffer, "cpu ", model); + find_match_char(buffer, "cpu family", vendor); + find_match_double(buffer, "cpu MHz", freq); + } + +#elif defined(__sparc__) + { + DIR *dir; + struct dirent *entry; + FILE *fp2; + + while(fgets(buffer, bsize, fp) != NULL) + { + find_match_char(buffer, "cpu ", model); + find_match_char(buffer, "type ", vendor); + find_match_double_hex(buffer, "Cpu0ClkTck", freq); + } + *freq = *freq / 1000000; + } +#else + + fclose(fp); + return 1; /* Unsupported */ + +#endif + + fclose(fp); + return 0; +} + +gint64 xs_parse_uptime(void) +{ + char buffer[bsize]; + gint64 uptime = 0; + FILE *fp = fopen("/proc/uptime", "r"); + if(fp == NULL) + return 0; + + if(fgets(buffer, bsize, fp) != NULL) + uptime = g_ascii_strtoll(buffer, NULL, 0); + + fclose(fp); + + return uptime; +} + +int xs_parse_sound(char *snd_card) +{ +#ifndef HAVE_LIBPCI + return 1; +#else + char buffer[bsize], cards[bsize] = "\0", vendor[7] = "\0", device[7] = "\0", *pos; + u16 class = PCI_CLASS_MULTIMEDIA_AUDIO; + + FILE *fp = NULL; + if((fp = fopen("/proc/asound/cards", "r"))== NULL) + { + if (pci_find_by_class(&class, vendor, device) == 0) + { + pci_find_fullname(snd_card, vendor, device); + return 0; + } + else + return 1; + } + + + while(fgets(buffer, bsize, fp) != NULL) + { + if(isdigit(buffer[0]) || isdigit(buffer[1])) + { + char card_buf[bsize]; + gint64 card_id = 0; + pos = strstr(buffer, ":"); + card_id = g_ascii_strtoll(buffer, NULL, 0); + if (card_id == 0) + g_snprintf(card_buf, bsize, "%s", pos+2); + else + g_snprintf(card_buf, bsize, "%"G_GINT64_FORMAT": %s", card_id, pos+2); + pos = strstr(card_buf, "\n"); + *pos = '\0'; + strcat(cards, card_buf); + } + } + + strcpy(snd_card, cards); + + fclose(fp); + return 0; +#endif +} + +int xs_parse_video(char *vid_card) +{ +#ifndef HAVE_LIBPCI + return 1; +#else + char vendor[7] = "\0", device[7] = "\0"; + u16 class = PCI_CLASS_DISPLAY_VGA; + if (pci_find_by_class(&class, vendor, device)) + return 1; + else + pci_find_fullname(vid_card, vendor, device); + return 0; +#endif +} + +int xs_parse_ether(char *ethernet_card) +{ +#ifndef HAVE_LIBPCI + return 1; +#else + char vendor[7] = "\0", device[7] = "\0"; + u16 class = PCI_CLASS_NETWORK_ETHERNET; + if (pci_find_by_class(&class, vendor, device)) + return 1; + else + pci_find_fullname(ethernet_card, vendor, device); + return 0; +#endif +} + +int xs_parse_agpbridge(char *agp_bridge) +{ +#ifndef HAVE_LIBPCI + return 1; +#else + char vendor[7] = "\0", device[7] = "\0"; + u16 class = PCI_CLASS_BRIDGE_HOST; + if (pci_find_by_class(&class, vendor, device)) + return 1; + else + pci_find_fullname(agp_bridge, vendor, device); + return 0; +#endif +} + +int xs_parse_meminfo(unsigned long long *mem_tot, unsigned long long *mem_free, int swap) +{ + FILE *fp; + char buffer[bsize]; + unsigned long long freemem = 0, buffers = 0, cache = 0; + *mem_tot = 0; + *mem_free = 0; + + if((fp = fopen("/proc/meminfo", "r")) == NULL) + return 1; + + while(fgets(buffer, bsize, fp) != NULL) + { + if(!swap) + { + find_match_ll(buffer, "MemTotal:", mem_tot); + find_match_ll(buffer, "MemFree:", &freemem); + find_match_ll(buffer, "Buffers:", &buffers); + find_match_ll(buffer, "Cached:", &cache); + } + else + { + find_match_ll(buffer, "SwapTotal:", mem_tot); + find_match_ll(buffer, "SwapFree:", mem_free); + } + } + if (!swap) + { + *mem_free = freemem + buffers + cache; + } + fclose(fp); + + /* Convert to bytes */ + *mem_free *= 1000; + *mem_tot *= 1000; + return 0; +} + +static void strip_quotes(char *string) +{ + size_t len = strlen(string); + if (string[len - 1] == '"') + string[--len] = '\0'; + + if (string[0] == '"') + memmove(string, string + 1, len); +} + +int xs_parse_distro(char *name) +{ + FILE *fp = NULL; + char buffer[bsize], *pos = NULL; + + if((fp = fopen("/etc/redhat-release", "r")) != NULL) + fgets(buffer, bsize, fp); + else if((fp = fopen("/etc/mageia-release", "r")) != NULL) + fgets(buffer, bsize, fp); + else if((fp = fopen("/etc/slackware-version", "r")) != NULL) + fgets(buffer, bsize, fp); + else if((fp = fopen("/etc/mandrake-release", "r")) != NULL) + fgets(buffer, bsize, fp); + else if((fp = fopen("/etc/SuSE-release", "r")) != NULL) + fgets(buffer, bsize, fp); + else if((fp = fopen("/etc/turbolinux-release", "r")) != NULL) + fgets(buffer, bsize, fp); + else if((fp = fopen("/etc/arch-release", "r")) != NULL) + g_snprintf(buffer, bsize, "ArchLinux"); + else if((fp = fopen("/etc/lsb-release", "r")) != NULL) + { + char id[bsize], codename[bsize], release[bsize]; + strcpy(id, "?"); + strcpy(codename, "?"); + strcpy(release, "?"); + while(fgets(buffer, bsize, fp) != NULL) + { + find_match_char(buffer, "DISTRIB_ID", id); + find_match_char(buffer, "DISTRIB_CODENAME", codename); + find_match_char(buffer, "DISTRIB_RELEASE", release); + } + g_snprintf(buffer, bsize, "%s \"%s\" %s", id, codename, release); + } + else if((fp = fopen("/etc/debian_version", "r")) != NULL) + { + char release[bsize]; + fgets(release, bsize, fp); + g_snprintf(buffer, bsize, "Debian %s", release); + } + else if((fp = fopen("/etc/portage/make.conf", "r")) != NULL || + (fp = fopen("/etc/make.conf", "r")) != NULL) + { + char keywords[bsize]; + while(fgets(buffer, bsize, fp) != NULL) + find_match_char(buffer, "ACCEPT_KEYWORDS", keywords); + /* cppcheck-suppress uninitvar */ + if (strstr(keywords, "\"") == NULL) + g_snprintf(buffer, bsize, "Gentoo Linux (stable)"); + else + g_snprintf(buffer, bsize, "Gentoo Linux %s", keywords); + } + else if((fp = fopen("/etc/os-release", "r")) != NULL) + { + char name[bsize], version[bsize]; + strcpy(name, "?"); + strcpy(version, "?"); + while(fgets(buffer, bsize, fp) != NULL) + { + find_match_char(buffer, "NAME=", name); + find_match_char(buffer, "VERSION=", version); + } + strip_quotes(name); + strip_quotes(version); + g_snprintf(buffer, bsize, "%s %s", name, version); + } + else + g_snprintf(buffer, bsize, "Unknown Distro"); + if(fp != NULL) + fclose(fp); + + pos=strchr(buffer, '\n'); + if(pos != NULL) + *pos = '\0'; + strcpy(name, buffer); + return 0; +} diff --git a/hexchat/plugins/sysinfo/unix/parse.h b/hexchat/plugins/sysinfo/unix/parse.h new file mode 100644 index 0000000..c7cb571 --- /dev/null +++ b/hexchat/plugins/sysinfo/unix/parse.h @@ -0,0 +1,35 @@ +/* + * parse.h - parsing header for X-Sys + * by mikeshoup + * Copyright (C) 2003, 2004, 2005 Michael Shoup + * Copyright (C) 2005, 2006 Tony Vroon + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + + +#ifndef _PARSE_H_ +#define _PARSE_H_ + +int xs_parse_cpu(char *model, char *vendor, double *freq); +gint64 xs_parse_uptime(void); +int xs_parse_sound(char *snd_card); +int xs_parse_meminfo(unsigned long long *mem_tot, unsigned long long *mem_free, int swap); +int xs_parse_video(char *vid_card); +int xs_parse_agpbridge(char *agp_bridge); +int xs_parse_ether(char *ethernet_card); +int xs_parse_distro(char *name); + +#endif diff --git a/hexchat/plugins/sysinfo/unix/pci.c b/hexchat/plugins/sysinfo/unix/pci.c new file mode 100644 index 0000000..528afd9 --- /dev/null +++ b/hexchat/plugins/sysinfo/unix/pci.c @@ -0,0 +1,171 @@ +/* + * pci.c - PCI functions for X-Sys + * Copyright (C) 1997-1999 Martin Mares <mj@atrey.karlin.mff.cuni.cz> [PCI routines from lspci] + * Copyright (C) 2000 Tom Rini <trini@kernel.crashing.org> [XorgAutoConfig pci.c, based on lspci] + * Copyright (C) 2005, 2006 Tony Vroon + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <ctype.h> +#include <pci/pci.h> +#include <glib.h> + +#include "sysinfo.h" + +static struct pci_filter filter; /* Device filter */ +static struct pci_access *pacc; +int bus, dev, func; /* Location of the card */ + +struct device { + struct device *next; + struct pci_dev *dev; + unsigned int config_cnt; + u8 config[256]; +}; + +static struct device *first_dev; + +static struct device *scan_device(struct pci_dev *p) +{ + int how_much = 64; + struct device *d; + + if (!pci_filter_match(&filter, p)) + return NULL; + d = g_new0 (struct device, 1); + d->dev = p; + if (!pci_read_block(p, 0, d->config, how_much)) + exit(1); + if (how_much < 128 && (d->config[PCI_HEADER_TYPE] & 0x7f) == PCI_HEADER_TYPE_CARDBUS) + { + /* For cardbus bridges, we need to fetch 64 bytes more to get the full standard header... */ + if (!pci_read_block(p, 64, d->config+64, 64)) + exit(1); + how_much = 128; + } + d->config_cnt = how_much; + pci_setup_cache(p, d->config, d->config_cnt); + pci_fill_info(p, PCI_FILL_IDENT); + return d; +} + +static void scan_devices(void) +{ + struct device *d; + struct pci_dev *p; + + pci_scan_bus(pacc); + for(p=pacc->devices; p; p=p->next) + { + if ((d = scan_device(p))) + { + d->next = first_dev; + first_dev = d; + } + } +} + +static u16 get_conf_word(struct device *d, unsigned int pos) +{ + return d->config[pos] | (d->config[pos+1] << 8); +} + +int pci_find_by_class(u16 *class, char *vendor, char *device) +{ + struct device *d; + struct pci_dev *p; + int nomatch = 1; + + /* libpci has no way to report errors it calls exit() + * so we need to manually avoid potential failures like this one */ + if (!g_file_test ("/proc/bus/pci", G_FILE_TEST_EXISTS)) + return 1; + + pacc = pci_alloc(); + pci_filter_init(pacc, &filter); + pci_init(pacc); + scan_devices(); + + for(d=first_dev; d; d=d->next) + { + p = d->dev; + /* Acquire vendor & device ID if the class matches */ + if(get_conf_word(d, PCI_CLASS_DEVICE) == *class) + { + nomatch = 0; + g_snprintf(vendor,7,"%04x",p->vendor_id); + g_snprintf(device,7,"%04x",p->device_id); + break; + } + } + + pci_cleanup(pacc); + return nomatch; +} + +void pci_find_fullname(char *fullname, char *vendor, char *device) +{ + char buffer[bsize]; + char vendorname[bsize/2] = ""; + char devicename[bsize/2] = ""; + char *position; + int cardfound = 0; + FILE *fp; + + fp = fopen (PCIIDS_FILE, "r"); + if(fp == NULL) + { + g_snprintf(fullname, bsize, "%s:%s", vendor, device); + //sysinfo_print_error ("pci.ids file not found! You might want to adjust your pciids setting with /SYSINFO SET pciids (you can query its current value with /SYSINFO LIST).\n"); + return; + } + + while(fgets(buffer, bsize, fp) != NULL) + { + if (!isspace(buffer[0]) && strstr(buffer, vendor) != NULL) + { + position = strstr(buffer, vendor); + position += 6; + g_strlcpy(vendorname, position, sizeof (vendorname)); + position = strstr(vendorname, "\n"); + *(position) = '\0'; + break; + } + } + while(fgets(buffer, bsize, fp) != NULL) + { + if(strstr(buffer, device) != NULL) + { + position = strstr(buffer, device); + position += 6; + g_strlcpy(devicename, position, sizeof (devicename)); + position = strstr(devicename, " ("); + if (position == NULL) + position = strstr(devicename, "\n"); + *(position) = '\0'; + cardfound = 1; + break; + } + } + if (cardfound == 1) + g_snprintf(fullname, bsize, "%s %s", vendorname, devicename); + else + g_snprintf(fullname, bsize, "%s:%s", vendor, device); + fclose(fp); +} diff --git a/hexchat/plugins/sysinfo/unix/pci.h b/hexchat/plugins/sysinfo/unix/pci.h new file mode 100644 index 0000000..673f0a0 --- /dev/null +++ b/hexchat/plugins/sysinfo/unix/pci.h @@ -0,0 +1,28 @@ +/* + * pci.h - PCI header for X-Sys + * Copyright (C) 2005 Tony Vroon + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + + +#ifndef _PCI_H_ +#define _PCI_H_ + +#include <pci/pci.h> +void pci_find_fullname(char *fullname, char *vendor, char *device); +int pci_find_by_class(u16 *class, char *vendor, char *device); + +#endif diff --git a/hexchat/plugins/sysinfo/win32/backend.c b/hexchat/plugins/sysinfo/win32/backend.c new file mode 100644 index 0000000..9bf949c --- /dev/null +++ b/hexchat/plugins/sysinfo/win32/backend.c @@ -0,0 +1,105 @@ +/* HexChat + * Copyright (c) 2011-2012 Berke Viktor. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include <stdio.h> +#include <windows.h> +#include <wbemidl.h> + +#include <glib.h> + +#include "../../../src/common/sysinfo/sysinfo.h" + +#include "../format.h" + +static char *get_memory_info (void); + +char * +sysinfo_backend_get_sound (void) +{ + return NULL; +} + +char * +sysinfo_backend_get_network (void) +{ + return NULL; +} + +char * +sysinfo_backend_get_uptime (void) +{ + return sysinfo_format_uptime (GetTickCount64 () / 1000); +} + +char * +sysinfo_backend_get_disk (void) +{ + guint64 hdd_capacity; + guint64 hdd_free_space; + + sysinfo_get_hdd_info (&hdd_capacity, &hdd_free_space); + + if (hdd_capacity != 0) + { + return sysinfo_format_disk(hdd_capacity, hdd_free_space); + } + + return NULL; +} + +char * +sysinfo_backend_get_cpu (void) +{ + return sysinfo_get_cpu (); +} + +char * +sysinfo_backend_get_memory (void) +{ + /* Memory information is always loaded dynamically since it includes the current amount of free memory */ + return get_memory_info (); +} + +char * +sysinfo_backend_get_gpu (void) +{ + return sysinfo_get_gpu (); +} + +char * +sysinfo_backend_get_os (void) +{ + return sysinfo_get_os (); +} + +static char *get_memory_info (void) +{ + MEMORYSTATUSEX meminfo = { 0 }; + meminfo.dwLength = sizeof (meminfo); + + if (!GlobalMemoryStatusEx (&meminfo)) + { + return NULL; + } + + return sysinfo_format_memory (meminfo.ullTotalPhys, meminfo.ullAvailPhys); +} diff --git a/hexchat/plugins/upd/meson.build b/hexchat/plugins/upd/meson.build new file mode 100644 index 0000000..68217b3 --- /dev/null +++ b/hexchat/plugins/upd/meson.build @@ -0,0 +1,9 @@ +winsparkle_dep = cc.find_library('WinSparkle') + +shared_module('upd', 'upd.c', + dependencies: [winsparkle_dep, hexchat_plugin_dep], + install: true, + install_dir: plugindir, + name_prefix: '', + vs_module_defs: 'upd.def', +) diff --git a/hexchat/plugins/upd/upd.c b/hexchat/plugins/upd/upd.c new file mode 100644 index 0000000..2a93859 --- /dev/null +++ b/hexchat/plugins/upd/upd.c @@ -0,0 +1,70 @@ +/* HexChat + * Copyright (c) 2010-2012 Berke Viktor. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include <winsparkle.h> + +#include "hexchat-plugin.h" + +#define APPCAST_URL "https://hexchat.github.io/appcast.xml" + +static hexchat_plugin *ph; /* plugin handle */ +static char name[] = "Update Checker"; +static char desc[] = "Check for HexChat updates automatically"; +static char version[] = "5.0"; +static const char upd_help[] = "Update Checker Usage:\n /UPDCHK, check for HexChat updates\n"; + +static int +check_cmd (char *word[], char *word_eol[], void *userdata) +{ + win_sparkle_check_update_with_ui (); + + return HEXCHAT_EAT_ALL; +} + +int +hexchat_plugin_init (hexchat_plugin *plugin_handle, char **plugin_name, char **plugin_desc, char **plugin_version, char *arg) +{ + ph = plugin_handle; + + *plugin_name = name; + *plugin_desc = desc; + *plugin_version = version; + + win_sparkle_set_appcast_url (APPCAST_URL); + win_sparkle_init (); + + hexchat_hook_command (ph, "UPDCHK", HEXCHAT_PRI_NORM, check_cmd, upd_help, NULL); + hexchat_command (ph, "MENU -ishare\\download.png ADD \"Help/Check for Updates\" \"UPDCHK\""); + hexchat_printf (ph, "%s plugin loaded\n", name); + + return 1; +} + +int +hexchat_plugin_deinit (void) +{ + win_sparkle_cleanup (); + + hexchat_command (ph, "MENU DEL \"Help/Check for updates\""); + hexchat_printf (ph, "%s plugin unloaded\n", name); + return 1; +} diff --git a/hexchat/plugins/upd/upd.def b/hexchat/plugins/upd/upd.def new file mode 100644 index 0000000..e560f50 --- /dev/null +++ b/hexchat/plugins/upd/upd.def @@ -0,0 +1,3 @@ +EXPORTS +hexchat_plugin_init +hexchat_plugin_deinit diff --git a/hexchat/plugins/upd/upd.vcxproj b/hexchat/plugins/upd/upd.vcxproj new file mode 100644 index 0000000..5dc497b --- /dev/null +++ b/hexchat/plugins/upd/upd.vcxproj @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup Label="Configuration"> + <PlatformToolset>v142</PlatformToolset> + <ConfigurationType>DynamicLibrary</ConfigurationType> + </PropertyGroup> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{461DC24A-A410-4171-8C02-CCDBF3702C2A}</ProjectGuid> + <Keyword>Win32Proj</Keyword> + <RootNamespace>upd</RootNamespace> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + <Import Project="..\..\win32\hexchat.props" /> + <PropertyGroup> + <TargetName>hcupd</TargetName> + <OutDir>$(HexChatRel)plugins\</OutDir> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;UPD_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>..\..\src\common;$(WinSparklePath);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <ModuleDefinitionFile>upd.def</ModuleDefinitionFile> + <AdditionalDependencies>$(DepLibs);WinSparkle.lib;%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalLibraryDirectories>$(DepsRoot)\lib;$(WinSparklePath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <ClCompile> + <PreprocessorDefinitions>WIN32;_WIN64;_AMD64_;NDEBUG;_WINDOWS;_USRDLL;UPD_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>..\..\src\common;$(WinSparklePath);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <ModuleDefinitionFile>upd.def</ModuleDefinitionFile> + <AdditionalDependencies>$(DepLibs);WinSparkle.lib;%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalLibraryDirectories>$(DepsRoot)\lib;$(WinSparklePath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <None Include="upd.def" /> + </ItemGroup> + <ItemGroup> + <ClCompile Include="upd.c" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> +</Project> diff --git a/hexchat/plugins/upd/upd.vcxproj.filters b/hexchat/plugins/upd/upd.vcxproj.filters new file mode 100644 index 0000000..e3d7397 --- /dev/null +++ b/hexchat/plugins/upd/upd.vcxproj.filters @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Source Files"> + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> + <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> + </Filter> + <Filter Include="Resource Files"> + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> + </Filter> + </ItemGroup> + <ItemGroup> + <None Include="upd.def"> + <Filter>Resource Files</Filter> + </None> + </ItemGroup> + <ItemGroup> + <ClCompile Include="upd.c"> + <Filter>Source Files</Filter> + </ClCompile> + </ItemGroup> +</Project> \ No newline at end of file diff --git a/hexchat/po/LINGUAS b/hexchat/po/LINGUAS new file mode 100644 index 0000000..f3bd51b --- /dev/null +++ b/hexchat/po/LINGUAS @@ -0,0 +1,53 @@ +af +am +ast +az +be +bg +ca +cs +da +de +el +en_GB +es +et +eu +fi +fr +gl +gu +hi +hu +id +it +ja_JP +kn +ko +lt +lv +mk +ml +ms +nb +nl +no +pa +pl +pt +pt_BR +ru +rw +sk +sl +sq +sr +sr@latin +sv +th +tr +uk +vi +wa +zh_CN +zh_TW diff --git a/hexchat/po/POTFILES b/hexchat/po/POTFILES new file mode 100644 index 0000000..0d1795d --- /dev/null +++ b/hexchat/po/POTFILES @@ -0,0 +1,46 @@ +data/misc/io.github.Hexchat.appdata.xml.in +data/misc/io.github.Hexchat.desktop.in.in +data/misc/io.github.Hexchat.ThemeManager.desktop.in +src/common/cfgfiles.c +src/common/chanopt.c +src/common/dcc.c +src/common/hexchat.c +src/common/ignore.c +src/common/inbound.c +src/common/notify.c +src/common/outbound.c +src/common/plugin.c +src/common/plugin-identd.c +src/common/plugin-timer.c +src/common/server.c +src/common/servlist.c +src/common/textevents.h +src/common/text.c +src/common/util.c +src/common/dbus/dbus-client.c +src/common/dbus/dbus-plugin.c +src/fe-gtk/ascii.c +src/fe-gtk/banlist.c +src/fe-gtk/chanlist.c +src/fe-gtk/dccgui.c +src/fe-gtk/editlist.c +src/fe-gtk/fe-gtk.c +src/fe-gtk/fkeys.c +src/fe-gtk/gtkutil.c +src/fe-gtk/ignoregui.c +src/fe-gtk/joind.c +src/fe-gtk/maingui.c +src/fe-gtk/menu.c +src/fe-gtk/notifygui.c +src/fe-gtk/plugin-notification.c +src/fe-gtk/plugin-tray.c +src/fe-gtk/plugingui.c +src/fe-gtk/rawlog.c +src/fe-gtk/servlistgui.c +src/fe-gtk/setup.c +src/fe-gtk/sexy-spell-entry.c +src/fe-gtk/textgui.c +src/fe-gtk/urlgrab.c +src/fe-gtk/userlistgui.c +src/fe-text/fe-text.c +plugins/sysinfo/sysinfo.c diff --git a/hexchat/po/POTFILES.skip b/hexchat/po/POTFILES.skip new file mode 100644 index 0000000..d3018f4 --- /dev/null +++ b/hexchat/po/POTFILES.skip @@ -0,0 +1 @@ +data/misc/io.github.Hexchat.desktop.in.in diff --git a/hexchat/po/af.po b/hexchat/po/af.po new file mode 100644 index 0000000..f3956e3 --- /dev/null +++ b/hexchat/po/af.po @@ -0,0 +1,6254 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Petri Jooste <rkwjpj@puk.ac.za>, 2004 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-03 20:10+0000\n" +"Last-Translator: TingPing <tingping@tingping.se>\n" +"Language-Team: Afrikaans (http://www.transifex.com/hexchat/hexchat/language/af/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: af\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Ek is besig" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Verlaat..." + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Network" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Besig om te wag" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Aktief" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Gefaal" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Klaar" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Konnekteer" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Gekanselleer" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "Kan nie toegang verkry na %s nie\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "Geen aktiewe DCCs\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "" + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "" + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* Om IRC as root te loop is onnosel! Jy moet\n 'n gebruiker-ID skep en dit gebruik om aan te teken.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "JA" + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "NEE" + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr "" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr "" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "" + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "" + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "Hierdie inprop kon nie gevind word nie.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "" + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "" + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "" + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "" + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "" + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "" + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "" + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "" + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "" + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "" + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "" + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "" + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "" + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "" + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "" + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "" + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "" + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "" + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "" + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "" + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "" + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "" + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "" + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "" + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "IP-adres" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "" + +#: src/common/text.c:980 +msgid "The action" +msgstr "" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "" + +#: src/common/text.c:987 +msgid "The text" +msgstr "Teks" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Teks" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Gebruikers" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Poort" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "" + +#: src/common/util.c:738 +msgid "China" +msgstr "" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "" + +#: src/common/util.c:770 +msgid "France" +msgstr "" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "" + +#: src/common/util.c:782 +msgid "Government" +msgstr "" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Griekeland" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Ierland" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Israel" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "" + +#: src/common/util.c:801 +msgid "India" +msgstr "Indië" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "" + +#: src/common/util.c:803 +msgid "International" +msgstr "Internasionaal" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Irak" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "Iran" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Ysland" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Italië" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Japan" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Kenia" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Libanon" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "St. Lucia" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Liberië" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Libië" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "" + +#: src/common/util.c:843 +msgid "Military" +msgstr "" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Mongolië" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Mosambiek" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Namibië" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Nigerië" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Noorweë" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Pole" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Portugal" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Romenië" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Sudan" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Swede" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Singapoer" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "St. Helena" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Slovenië" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Somalië" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Sirië" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Swaziland" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Tunisië" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Ukraďne" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Uganda " + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Vereenigde Koninkryk" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Viëtnam" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Yemen" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Suid-Afrika" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Zambië" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "" + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "" + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "" + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "" + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "" + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Beide" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "" + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Peru" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "" + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "" + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "" + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "" + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "" + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "" + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "" + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "" + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "" + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "" + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "" + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "" + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "" + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "" + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Af" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "Grafiek" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "" + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "" + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Wagwoord:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "Indië" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Viëtnam" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Algemeen" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Font:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "" + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "" + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "" + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "" + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Bo" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Onder" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Weggesteek" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Vensters" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "letters." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "" + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "" + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "" + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URL" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "" + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "" + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "" + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "Masjiennaam:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Poort:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Tipe:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "Gebruikerskode:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "Kies 'n beeldlęer" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Kies font" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Blaai..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Kies kleur" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "mIRC kleure:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Voorgrond:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Agtergrond:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "Verlig:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Gebeurtenis" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "" + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Koppelvlak" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Gebruikerslys" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Kleure" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Netwerkopstelling" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Lęeroordragte" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Katagorieë" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "" + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "" + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "Daar was 'n fout met die ontleding van die string" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ Nommer" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Redigeer gebeurtenisse" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "" + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Toets almal" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Maak lys skoon" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Kopieer geselkteerde URL" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Kopieer" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Stoor lys in 'n lęer" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "" diff --git a/hexchat/po/am.po b/hexchat/po/am.po new file mode 100644 index 0000000..e13bf33 --- /dev/null +++ b/hexchat/po/am.po @@ -0,0 +1,6254 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Ge'ez Frontier Foundation <locales@geez.org>, 2002 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-03 20:10+0000\n" +"Last-Translator: TingPing <tingping@tingping.se>\n" +"Language-Team: Amharic (http://www.transifex.com/hexchat/hexchat/language/am/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: am\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "መረብ" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<ምንም>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "ጣቢያ" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "ጨርሷል" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "አገናኝ" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "ውድቅ ሆኗል" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "ስህተት" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "" + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "ሰርዝ" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "" + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "አዎ " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "አይ " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr "" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr "" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "" + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "" + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "" + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "" + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "" + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "" + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "አጠቃቀም፦ %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "" + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "" + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "" + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "" + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "" + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "" + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "" + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "" + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "" + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "" + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "" + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "" + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "" + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "" + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "" + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "" + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "" + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "" + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "" + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "" + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "IP አድራሻ" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "የተጠቃሚ ስም" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "እንግዳ ተቀባይ" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "ቅጽል ስም" + +#: src/common/text.c:980 +msgid "The action" +msgstr "ትግባር" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "" + +#: src/common/text.c:987 +msgid "The text" +msgstr "ጽሑፉ" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "መልእክቱ" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "የሰርቨር ስም" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "አሮጌ ቅጽል ስም" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "አዲስ ቅጽል ስም" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "ጉዳዩ" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "ጣቢያው ሰዓቱ" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "ቅጽል" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "እንግዳ ተቀባይ" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "ድምፁ" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "ቁልፉ" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "ሙሉ ስም" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "መልእክት" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "የጣቢያ ስም" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "ጽሑፍ" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "ተጠቃሚዎች" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "ፖርት" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "DCC ዓይነት" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "የፋይል ስም" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "የመተላለፊያ ስም" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "ቦታ" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "መጠን" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "DCC ሐረግ" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "አሮጌ የፋይል ስም" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "አዲስ የፋይል ስም" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "የእንግዳ ተቀባይ ስም" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "ሴኮንዶች" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "አንዶራ" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "የተባበሩት አረብ ኤምሬትስ" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "አፍጋኒስታን" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "አንቲጓ እና ባሩዳ" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "አንጉኢላ" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "አልባኒያ" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "አርሜኒያ" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "ኔዘርላንድስ አንቲልስ" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "አንጐላ" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "አንታርክቲካ" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "አርጀንቲና" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "የአሜሪካ ሳሞአ" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "ኦስትሪያ" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "አውስትሬሊያ" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "አሩባ" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "አዘርባጃን" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "ቦስኒያ እና ሄርዞጎቪኒያ" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "ባርቤዶስ" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "ባንግላዲሽ" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "ቤልጄም" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "ቡርኪና ፋሶ" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "ቡልጌሪያ" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "ባህሬን" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "ብሩንዲ" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "ቤኒን" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "ቤርሙዳ" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "ብሩኒ ዳሩሳላም" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "ቦሊቪያ" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "ብራዚል" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "ባሃማስ" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "ቡህታን" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "የቦውቬት ደሴት" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "ቦትስዋና" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "ቤላሩስ" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "ቤሊዘ" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "ካናዳ" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "የኮኮስ ደሴቶች" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "የመካከለኛው አፍሪካ ሪፐብሊክ" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "ኮንጐ" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "ስዊዘርላንድ" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "ኩክ ደሴቶች" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "ቺሊ" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "ካሜሩን" + +#: src/common/util.c:738 +msgid "China" +msgstr "ቻይና" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "ኮሎምቢያ" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "ኮስታ ሪካ" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "ኩባ" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "ኬፕ ቬርዴ" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "የገና ደሴቶች" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "ሳይፕረስ" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "ቼክ ሪፑብሊክ" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "ጀርመን" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "ጂቡቲ" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "ዴንማርክ" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "ዶሚኒካ" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "ዶሚኒክ ሪፑብሊክ" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "አልጄሪያ" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "ኢኳዶር" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "ኤስቶኒያ" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "ግብጽ" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "ምዕራባዊ ሳህራ" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "ኤርትራ" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "ስፔን" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "ኢትዮጵያ" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "ፊንላንድ" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "ፊጂ" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "የፎልክላንድ ደሴቶች" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "ሚክሮኔዢያ" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "የፋሮይ ደሴቶች" + +#: src/common/util.c:770 +msgid "France" +msgstr "ፈረንሳይ" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "ጋቦን" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "ታላቋ ብሪታኒያ" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "ግሬናዳ" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "ጆርጂያ" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "የፈረንሳይ ጉዊአና" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "ጋና" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "ጊብራልታር" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "ግሪንላንድ" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "ጋምቢያ" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "ጊኒ" + +#: src/common/util.c:782 +msgid "Government" +msgstr "መንግስት" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "ጉዋደሉፕ" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "ኢኳቶሪያል ጊኒ" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "ግሪክ" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "ጉዋቲማላ" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "ጉዋም" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "ጊኒ ቢሳዎ" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "ጉያና" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "ሆንግ ኮንግ" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "የኧርድ እና የማክዶናልድ ደሴቶች" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "ሆንዱራስ" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "ክሮኤሽያ" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "ሀይቲ*" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "ሀንጋሪ" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "ኢንዶኔዢያ" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "አየርላንድ" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "እስራኤል" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "" + +#: src/common/util.c:801 +msgid "India" +msgstr "ህንድ" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "" + +#: src/common/util.c:803 +msgid "International" +msgstr "" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "የብሪታኒያ ህንድ ውቂያኖስ ግዛት" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "ኢራቅ" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "ኢራን" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "አይስላንድ" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "ጣሊያን" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "ጃማይካ" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "ጆርዳን" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "ጃፓን" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "ኬንያ" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "ካምቦዲያ" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "ኪሪባቲ" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "ኮሞሮስ" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "ቅዱስ ኪትስ እና ኔቪስ" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "ሰሜን ኮሪያ" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "ደቡብ ኮሪያ" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "ክዌት" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "ካይማን ደሴቶች" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "ካዛኪስታን" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "ላኦስ" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "ሊባኖስ" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "ሴንት ሉቺያ" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "ሊችተንስታይን" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "ሲሪላንካ" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "ላይቤሪያ" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "ሌሶቶ" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "ሊቱዌኒያ" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "ሉክሰምበርግ" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "ላትቪያ" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "ሊቢያ" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "ሞሮኮ" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "ሞናኮ" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "ሞልዶቫ" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "ማዳጋስካር" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "ማርሻል አይላንድ" + +#: src/common/util.c:843 +msgid "Military" +msgstr "ወታደራዊ" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "ማከዶኒያ" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "ማሊ" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "ማያንማር" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "ሞንጎሊያ" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "ማካዎ" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "የሰሜናዊ ማሪያና ደሴቶች" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "ማርቲኒክ" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "ሞሪቴኒያ" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "ሞንትሴራት" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "ማልታ" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "ማሩሸስ" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "ማልዲቭስ" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "ማላዊ" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "ሜክሲኮ" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "ማሌዢያ" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "ሞዛምቢክ" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "ናሚቢያ" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "ኒው ካሌዶኒያ" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "ኒጀር" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "ኖርፎልክ ደሴት" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "ናይጄሪያ" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "ኒካራጓ" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "ኔዘርላንድ" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "ኖርዌ" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "ኔፓል" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "ናኡሩ" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "ኒኡይ" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "ኒው ዚላንድ" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "ኦማን" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "ፓናማ" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "ፔሩ" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "የፈረንሳይ ፖሊኔዢያ" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "ፓፑዋ ኒው ጊኒ" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "ፊሊፒንስ" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "ፓኪስታን" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "ፖላንድ" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "ቅዱስ ፒዬር እና ሚኩኤሎን" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "ፒትካኢርን" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "ፖርታ ሪኮ" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "ፖርቱጋል" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "ፓላው" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "ፓራጓይ" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "ኳታር" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "ውህደት" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "ሮሜኒያ" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "ራሺያ" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "ሩዋንዳ" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "ሳውድአረቢያ" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "ሰሎሞን ደሴት" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "ሲሼልስ" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "ሱዳን" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "ስዊድን" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "ሲንጋፖር" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "ሴንት ሄለና" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "ስሎቬኒያ" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "የስቫልባርድ እና ዣን ማየን ደሴቶች" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "ስሎቫክ ሪፐብሊክ" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "ሴራሊዮን" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "ሳን ማሪኖ" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "ሴኔጋል" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "ሱማሌ" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "ሱሪናም" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "ሳኦ ቶሜ እና ፕሪንሲፔ" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "ኤል ሳልቫዶር" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "ሲሪያ" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "ሱዋዚላንድ" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "የቱርኮችና የካኢኮስ ደሴቶች" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "ቻድ" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "የፈረንሳይ ደቡባዊ ግዛቶች" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "ቶጐ" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "ታይላንድ" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "ታጃኪስታን" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "ቶክላው" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "ምስራቅ ቲሞር" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "ቱርክሜኒስታን" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "ቱኒዚያ" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "ቶንጋ" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "ቱርክ" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "ትሪኒዳድ እና ቶባጎ" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "ቱቫሉ" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "ታይዋን" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "ታንዛኒያ" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "ዩክሬን" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "ዩጋንዳ" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "እንግሊዝ" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "አሜሪካ" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "ኡራጓይ" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "ዩዝበኪስታን" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "ቫቲካን ከተማ" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "ቬንዙዌላ" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "የእንግሊዝ ድንግል ደሴቶች" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "የአሜሪካ ቨርጂን ደሴቶች" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "ቬትናም" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "ቫኑአቱ" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "ዋሊስ እና ፉቱና ደሴቶች" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "ሳሞአ" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "የመን" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "ሜይኦቴ" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "ዩጎዝላቪያ" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "ደቡብ አፍሪካ" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "ዛምቢያ" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "ዚምቧቤ" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "" + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "" + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "ከ" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "ቀን" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "አስወግድ" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "በድጋሚ ጀምር" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "" + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "የጣቢያን ስም" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "ፈልግ፦" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "" + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "" + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "ሁኔታ" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "ፋይል" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "ሁለትም" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "ውድቅ" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "ቀጥል" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "" + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "ተልኳል" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "አጥፉ" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "ተወው" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "አስቀምጥ" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "" + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "" + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "" + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "ጣቢያ፦" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "" + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "" + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "" + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "" + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "" + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "" + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "" + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "" + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "ቁልፍ ቃላት" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "" + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "" + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "" + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "ያልታወቀ" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "የውነት ስም፦" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "ጣቢያ አትጫን" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "አጥፋ" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "_ሰርቨር" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "_ምርጫዎች" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "_መስኮት" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "ጽሑፉ _ሰርዝ" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "_መረጃ" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "ስም" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "በፍጹም" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "ኦንላይን" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "ዝርያ" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "መግለጫ" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "_ጫን..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "" + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "አዲስ መረብ" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "መረቦች" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "_አገናኝ" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "አልባኒያ" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "አዘርባጃን" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "ቤላሩስ" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "ቡልጌሪያ" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "ኤስቶኒያ" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "ህንድ" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "ማሌዢያ" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "ታይላንድ" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "ቬትናም" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "አጠቃላይ" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "የፊደል ቅርጽ፦" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "" + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "የመደቡ ምስል፦" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "" + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "" + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "" + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "ወደ ላይ" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "ወደ ታች" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "የተደበቀ" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "የተጠቃሚ ዝርዝር" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "መስኮቶች" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "መክፈቻዎች" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "" + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "" + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "" + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "" + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(የተበላሸ)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "" + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "" + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "" + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "የፊደል ቅርጹ ምረጡ" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "ቃኝ..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "ቀለም ምረጡ" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "የmIRC ቀለሞች፦" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "ፊት ለፊት፦" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "መደቡ፦" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "አቅልም፦" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "" + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "የተጠቃሚ ዝርዝር" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "ቀለሞች" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "ወሪ" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "የመረብ ቅንጅት" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "ምድብ" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "" + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "" + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ ቍጥር" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "" + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "ሁሉም ሙከራ" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "" diff --git a/hexchat/po/ast.po b/hexchat/po/ast.po new file mode 100644 index 0000000..db45a28 --- /dev/null +++ b/hexchat/po/ast.po @@ -0,0 +1,6255 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Marcos <maacub@gmail.com>, 2008 +# Marcos <maacub@gmail.com>, 2008 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-03 20:10+0000\n" +"Last-Translator: TingPing <tingping@tingping.se>\n" +"Language-Team: Asturian (http://www.transifex.com/hexchat/hexchat/language/ast/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ast\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Toi ocupáu" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Abandonando" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Rede" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<dengún>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Canal" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Esperando" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Activu" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Falló" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Fináu" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Coneutar" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Albortáu" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "Nun pue accedese a %s\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Fallu" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s ta ufriendo «%s». ¿Quies aceutalo?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "Nun hai dengún DCC activu\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "_Abrir la ventana de diálogu" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "_Unviar un ficheru" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "Información d'u_suariu (WHOIS)" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "_Amestar a la Llista de Collacios" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "Aiciones d'O_perador" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Dar Op" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Tomar Op" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "Dar la voz" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "Tomar la voz" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Echar/Banear" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Echar" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "Banear" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "Banear" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Colar de la canal" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Entrar a canal…" + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "Introduz la canal pa xunite:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Enllaces del sirvidor" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Ping al sirvidor" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Anubrir versión" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Op" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "talluéu" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Introduz una razón pa echar a %s:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "Diálogu" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Unviar" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Charra" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Llimpiar" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "" + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* ¡Executar IRC como superusuariu ye de fatos! Tendríes\n de crear una cuenta d'usuariu y usala pa coneutate.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "SÍ " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "NON " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Tas recibiendo abondos CTCP de %s, inorando a %s\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s coneutaos\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s desconeutaos\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Nun entraste en denguna canal. Intenta /join #<canal>\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Nun tas coneutáu. Intenta /server <agospiador> [<puertu>]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Yá ta marcáu como ausente: %s\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "Yá ta marcáu como de vuelta.\n" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "¡Necesito /bin/sh pa poder executalo!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "Órdenes disponibles:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "Órdenes definíes pol usuariu" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "Órdenes definíes pol complementu:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Escribi /HELP <orde> o /HELP -l pa más información" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Argumentu desconocíu '%s' inoráu." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "" + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "Nun s'atopó'l complementu.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "Esti complementu niégase a ser desactiváu.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <nome> <aición>, amiesta un botón baxo la llista d'usuariu" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <cmd>, unvia una orde a toles canales nes que tas" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <cmd>, unvia una orde a tolos sirvidores nos que tas" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "BACK, afítate de vuelta (non ausente)" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <mázcara> [<triba de vetu>], veta a toos aquellos que concasen cola mázcara de la canal actual. Si yá tán na canal esto nun los espulsa (ye necesario ser operador de la canal)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <variable> [<valor>]" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "" + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY <códigu|comodín>, gueta un códigu de país, ex: au = australia" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <nomatu> <mensax>, unvia'l mensax CTCP al nomatu, los mensaxes comunes son VERSION y USERINFO" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "CYCLE [<canal>], marchaste de la canal actual y vuelves a entrar darréu" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <nomatu> - recibe un ficheru ufríu\nDCC SEND [-maxcps=#] <nomatu> [ficheru] - unvia un ficheru a dalguien\nDCC PSEND [-maxcps=#] <nomatu> [ficheru] - unvia un ficheru a dalguien usando mou pasivu\nDCC LIST - amuesa la llista DCC\nDCC CHAT <nomatu> - ufierta'l DCC CHAT a dalguien\nDCC PCHAT <nomatu> - ufierta'l DCC CHAT a dalguien usando mou pasivu\nDCC CLOSE <triba> <nomatu> <ficheru> - exemplu:\n /dcc close send xuancostales ficheru.tar.gz" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <nomatu>, quita l'estáu de semi-operador de la canal al nomatu na canal actual (necesites ser operador de la canal)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <name>, desanicia un botón baxo la llista d'usuarios" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <nomatu>, quita l'estáu d'operador al nomatu na canal actual (necesites ser operador de la canal)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <nomatu>, quita l'estáu de voz del nomatu na canal actual (necesites ser operador de la canal)" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, desconeutase del sirvidor" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <testu>, Imprenta testu llocalmente" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <orde>, executa la orde. Si usaste la etiqueta -o entós la salida únviase a la canal actual, si non, impréntase na caxa de testu actual" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, unvia al procesu la señal de siguir" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9], mata un executable corriendo na sesión actual. Si s'indicase -9 el procesu mátase pola fuercia" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, unvia al procesu la señal de detenese" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, unvia los datos a la entrada standard del procesu" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, desanicia la cola d'unvíu actual del sirvidor" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <agospiador> [<puertu>], usa un proxy a traviés d'un agospiador, el puertu predetermináu ye'l 23" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <nomatu> [contraseña], desconeuta a un usuariu pantasma" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <nomatu>, otorga estáu de semi-operador al nomatu (necesites ser operador de la canal)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <contraseña>, identifícate nel sirvidor de nomatos" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <mázcara> <tribes..> <opciones..>\n mázcara - mázcara d'anfitrión a inorar, ex: *!*@*.aol.com\n tribes - tribes de datos a inorar, un o toos de:\n PRIV, CHAN, NOTI, CTCP, INVI, ALL\n opciones - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <nomatu> [<canal>], invita a dalguien a una canal, por omisión la canal actual (necesites ser operador de la canal)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <canal>, entra a la canal" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, fuercia una nueva prueba d'allanciu" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <ficheru>, carga una estensión (complementu) o script" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, quita masivamente l'estáu de semi-operador na canal actual (necesites ser operador de la canal)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, quita masivamente l'estáu de operador na canal actual (necesites ser operador de la canal)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <aición>, unvia l'aición a la canal actual (les aiciones tán escrites en tercer persona del inglés, como /me jumps)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, espulsa masivamente a toos, sacante a ti, na canal actual (necesites ser operador de la canal)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, otorga masivamente l'estáu d'operador de la canal actual (necesites ser operador de la canal)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <nomatu> <mensax>, unvia una noticia CTCP" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <nome del agospiador> [<puertu>]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <nomatu>, afita'l to nomatu" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [-n network1[,network2,…]][<nomatu>, llista la to llista de notificaciones o amiesta a dalguien a ella" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <nomatu>, otorga l'estáu d'operador de la canal al nomatu (necesites ser operador de la canal)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<canal>] [<razón>], abandona la canal, por omisión de la canal actual" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <nomatu | canal>, unvia pings CTCP al nomatu o canal" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "" + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<razón>], desconeutase del sirvidor actual" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <testu>, unvia'l testu en formatu planu pal sirvidor" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<agospiador>] [<puertu>] [<contraseña>], pue llamase sólo como /RECONNECT pa reconeutase al sirvidor actual o con /RECONNECT_ALL pa reconeutase a tolos sirvidores abiertos" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<agospiador>] [<puertu>] [<contraseña>], pue llamase sólo como /RECONNECT pa reconeutase al sirvidor actual o con /RECONNECT ALL pa reconeutase a tolos sirvidores abiertos" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <testu>, unvia'l testu pa un oxetu de la ventana actual" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <nomatu> [<ficheru>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <agospiador> <puertu> <canal>, conéutate y entra nuna canal" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <agospiador> <puertu> <canal>, conéutate y entra nuna canal" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <agospiador> [<puertu>] [<contraseña>], conéutate a un sirvidor, el puertu predetermináu ye 6667" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <variable> [<valor>]" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<asuntu>], afita l'asuntu si se provee ún, si non, amuesa l'asuntu actual" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "\nTRAY -f <timeout> <ficheru1> [<ficheru2>] parpaguéu de la bandexa ente dos iconos.\nTRAY -f <ficheru> afitar la bandexa a un iconu fixu.\nTRAY -i <númberu> parpaguéu de la bandexa con un iconu internu .\nTRAY -t <testu> afitar l'iconu de la bandexa.\nTRAY -b <título> <testu> afitar la burbuxa de la bandexa." + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <mázcara> [<mázcara>…], reincorpora les mázcares especificaes." + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <mázcara> [QUIET]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <nome>, desactiva una estensión (complementu) o un guión (script)" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "" + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, abre una URL nel to restolador" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "USELECT [-a] [-s] <nomatu1> <nomatu2> etc, resalta los nomatos na llista d'usuarios" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <nomatu>, da l'estáu de voz a dalguien (necesites ser operador de la canal)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <mensax>, escribe'l mensaxe en toles canales" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <mensaxe>, unvia'l mensax a tolos operadores de la canal na canal actual" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "Usu: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nNun hai ayuda disponible pa esa orde.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "Nun esiste esa orde.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "Argumentos inválidos pa la orde d'usuariu.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "Abondos comandos recursivos d'usuariu, albortando." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "¿Tas seguru que ye un sirvidor y puertu SSL?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "Nun pudo resolvese'l nome d'agospiador %s\n¡Verifica la to configuración d'IP!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "Falló'l proxy traversal.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Intentando nel siguiente sirvidor en %s...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "Avisu: el conxuntu de caráuteres \"%s\" desconozse. Nun s'aplicará conversión pa la rede %s." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "" + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "" + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%UTema de los usuarios de la canal" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "" + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "" + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "" + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "" + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "" + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "" + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "" + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "" + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "" + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "" + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "" + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "" + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tLa llista de notificaciones ta erma." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "" + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "" + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "" + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "" + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "Rexistru cargáu dende" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** FINANDO CONEXÓN EN %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** ANICIANDO CONEXÓN EN %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "Mensax a manzorga" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "Mensax a mandrecha" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "Direición IP" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Nome d'usuariu" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "El nomatu de la persona qu'entra" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "La canal a la que tas entrando" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "L'agospiador de la persona" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Nomatu" + +#: src/common/text.c:980 +msgid "The action" +msgstr "L'aición" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "Mou caráuter" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "Testu Identificativu" + +#: src/common/text.c:987 +msgid "The text" +msgstr "El testu" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "El mensax" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Nome del sirvidor" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Nomatu antiguu" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Nuevu nomatu" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "Nomatu de la persona que camudó l'asuntu" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Asuntu" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "El nomatu del qu'espulsa" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "La persona a la que s'espulsa" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "La canal" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "La razón" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "El nomatu de la persona que marcha" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "El tiempu" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "El creador" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Nomatu" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Razón" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Agospiador" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "De quién vien" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "El tiempu nel formatu x.x (mira embaxo)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "La canal vase a" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "El soníu" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "El nomatu de la persona" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "L'eventu CTCP" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "El nomatu de la persona qu'afita la contraseña" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "La contraseña" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "El nomatu de la persona qu'afita'l llímite" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "El llímite" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "El nomatu de la persona qu'otorgó los permisos d'operador" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "El nomatu de la persona que se convirtió n'operador" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "El nomatu de la persona que se convirtió en semi-operador" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "El nomatu de la persona qu'otorgó los permisos de semi-operador" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "El nomatu de la persona qu'otorgó los permisos de voz" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "El nomatu de la persona que se convirtió en voz" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "El nomatu de la persona que fizo'l vetu (banning)" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "La mázcara de vetos" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "El nomatu de quien desanició la contraseña" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "El nomatu de quien desanició'l llímite" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "El nomatu de la persona a la que se-y quitó'l permisu d'operador" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "El nomatu de la persona a la que se-y quitó los permisos de semi-operador" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "El nomatu de la persona a la que se-y quitó los permisos de voz" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "El nomatu de la persona qu'otorgó la exención" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "La mázcara d'exención" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "El nomatu de la persona que quitó la exención" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "El nomatu de la persona que fizo la invitación" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "La mázcara d'invitación" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "El nomatu de la persona que desanició la invitación" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "El nomatu de la persona que afitó'l mou" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "El signu del mou (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "La lletra del mou" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "La canal ta configurándose" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Nome completu" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Membresía de canal/es ye un operador d'IRC" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Información del sirvidor" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Tiempu inactivu" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Tiempu de conexón" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Razón d'ausencia" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Mensax" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Cuenta" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "usuariu@agospiador braeru" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "Braera IP" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Nome de la canal" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "Númberu Raw o Identificador" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Testu" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Nomatu de la persona que t'invitó" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Usuarios" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "Nomatu n'usu" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Intentando usar el nomatu" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Puertu" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "Cadena de modos" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "Triba DCC" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Nome de ficheru" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Nome de ficheru de destín" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "Camín" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Posición" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Tamañu" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "Cadena DCC" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "Númberu d'elementos de notificación" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Nome anterior del ficheru" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Nome nuevu del ficheru" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Receutor" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Mázcara d'anfitrión" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Nome d'agospiador" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "El paquete" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "Segundos" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "Nomatu de la persona invitada" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Mázcara de vetu" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "Quien afitó'l vetu" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Tiempu de vetu" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "Nun puede lleese'l ficheru de soníu:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "Puertu zarráu nel agospiador remotu" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "Conexón refugada" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "Ensin camín fasta l'agospiador" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Espiró la conexón" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "Nun pue asignase esa direición" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "Conexón reaniciada pol par" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "Islla d'Ascensión" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Emiratos Árabes Xuníos" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Afganistán" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Antigua y Barbuda" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Albania" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Armenia" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Antilles Holandeses" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Antártida" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Arxentina" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "DNS inversu" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Samoa Americana" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Austria" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "OTAN" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Australia" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "Islles Aland" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Azerbaixán" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Bosnia y Herzegovina" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Bangladex" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Bélxica" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Bulgaria" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Baḥréin" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "Negocios" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Brunéi" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Bolivia" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Brasil" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Bahames" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Bután" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Islla Bouvet" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Bielorrusia" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Belice" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Canadá" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Islles Cocos" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "República Democrática del Congu" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "República Centru Africana" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Congu" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "Suiza" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "Costa de Marfil" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Islles Cook" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Chile" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Camerún" + +#: src/common/util.c:738 +msgid "China" +msgstr "China" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Colombia" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Anunciu d'Internic" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "Serbia y Montenegru" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Cuba" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Cabu Verde" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Islla Natividá" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Chipre" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "República Checa" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Alemaña" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Dibuti" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Dinamarca" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Dominica" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "República Dominicana" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Arxelia" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Ecuador" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Institución educativa" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Estonia" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Exiptu" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Sáhara Occidental" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "España" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Etiopía" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "Xunión Europea" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Finlandia" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Fixi" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Islles Malvines" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Micronesia" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Islles Feroe" + +#: src/common/util.c:770 +msgid "France" +msgstr "Francia" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Gabón" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Gran Bretaña" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Granada" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Xeorxa" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Guayana Francesa" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "Islles del Canal de la Mancha" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Gana" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Xibraltar" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Groenlandia" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Gobiernu" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Guadalupe" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Guinea Ecuatorial" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Grecia" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Islles Xeorxa y Sandwich del Sur" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Guinea-Bissau" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Guayana" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Ḥong Kong" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Islles Heard y McDonald" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Hondures" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Croacia" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Haití" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Hungría" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Indonesia" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Irlanda" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Israel" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "Islla de Man" + +#: src/common/util.c:801 +msgid "India" +msgstr "India" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "Informativu" + +#: src/common/util.c:803 +msgid "International" +msgstr "Internacional" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Territoriu Oceánicu Indiu Británicu" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Iraq" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "Irán" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Islandia" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Italia" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "Xerséi" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Xamaica" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Xordania" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Xapón" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Kenia" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Kirguistán" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Camboya" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Comores" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "San Kitts y Nevis" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Corea del Norte" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Corea del Sur" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Kuwait" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Islles Caimán" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Kazakstán" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Líbanu" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Santa Llucía" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Liberia" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Lesothu" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Lituania" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Luxemburgo" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Lletonia" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Libia" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Marruecos" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Mónacu" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Moldavia" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "Serviciu médicu d'Estaos Xuníos" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Madagascar" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Islles Marshall" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Militar" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Macedonia" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Mongolia" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Macao" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Islles Marianes del Norte" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Martinica" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Mauritania" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Mauriciu" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Maldives" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "Méxicu" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Malasia" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Mozambique" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Namibia" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Nueva Caledonia" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Níxer" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Rede d'Internic" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Islla Norfolk" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Nixeria" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Holanda" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Noruega" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "Nueva Zelanda" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Omán" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "Organización ensin ánimu de llucru Internic" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Panamá" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Perú" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Polinesia Francesa" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Papúa Nueva Guinea" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Filipines" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Paquistán" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Polonia" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "San Pierre y Miquelon" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Puertu Ricu" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "Territoriu Oceánicu Indiu Británicu" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Portugal" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Paraguái" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Qatar" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Reunión" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Rumania" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "Vieya escuela d'ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Federación Rusa" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Ruanda" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Arabia Saudí" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Islles Salomón" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Seyxeles" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Sudán" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Suecia" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Singapur" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "Santa Helena" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Eslovenia" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Islles Svalbard y Jan Mayen" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "República d'Eslovaquia" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Sierra Lleona" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "San Marinu" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Somalia" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Surinam" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "Santu Tomé y Príncipe" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Antigua URSS" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Siria" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Swazilandia" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Islles Turks y Caicos" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Chad" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "Territorios Franceses del Sur" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Tailandia" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Taxiquistán" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "Tokeláu" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Timor Oriental" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Turkmenistán" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Túnez" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Turquía" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Trinidá y Tobagu" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Taiwán" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Tanzania" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Ucraína" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Reinu Xuníu" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "Estaos Xuníos" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Uruguái" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Uzbequistán" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Ciudá Estáu del Vaticanu" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "San Vicente y les Granadines" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "Islles Vírxenes Britániques" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "Islles Vírxenes Norteamericanes" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "Islles Wallis y Futuna" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Yeme" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Yugoslavia" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Sudáfrica" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Zambia" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Zimbabue" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "Nun pudo coneutase a la sesión bus" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "Imposible completar NameHasOwner" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "Imposible completar comandu" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "accesu remotu" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "complementu p'accesu remotu usando DBUS" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Nun pudo coneutase al bus de la sesión: %s\n" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Fallu al alquirir %s: %s\n" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Llista de caráuteres" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "Banear" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Invitar" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "Non coneutáu." + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "Tienes de seleicionar dalgún baneáu" + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Mázcara" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "De" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Data" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Namái pues abrir la llista de baneaos mentanto hai llingüeta de canal." + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Desaniciar" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Amenorgar" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Refrescar" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Estadístiques d'usuarios y canales: %d/%d Usuarios en %d/%d Canales" + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Escueyi un ficheru de salida" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "_Entrar a la canal" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "_Copiar Nome de Canal" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "Copiar Testu _Tema" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "_Guetar" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "Descargar _llista" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "Guardar _Llista..." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "Amosar namái:" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "canales de" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "a" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "usuarios." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "Mirar en:" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Nome de la canal" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "Guetar triba:" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "Gueta Simple" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "Concasar con patrón (Comodines)" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "Espresión Regular" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Guetar:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Unviar ficheru a %s" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "Esi ficheru nun pue retomase" + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "Nun pudo accedese al ficheru: %s\n%s.\nNun ye dable retomar." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "El ficheru nel direutoriu de baxada ye más grande que'l ficheru ufríu. Nun ye dable retomar." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "Nun puede retomase'l mesmu ficheru de dos persones." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Estáu" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Ficheru" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Dambos" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "Xubíos" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "Baxaes" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "Detalles" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "Ficheru:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "Direición:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Albortar" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Aceutar" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Siguir" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "Abrir carpeta..." + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Recibíu" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Unviáu" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "Tiempu d'aniciu" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Desaniciar" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Encaboxar" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Guardar" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "Nun reconeutase al sirvidor automáticamente" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "usar un direutoriu de configuración distintu" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "Nun activar automáticamente dengún complementu" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "Amosar direutoriu de configuración d'usuariu" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "Executar orde:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Aniciar minimizáu. Nivel 0=Normal 1=Iconificáu 2=Estaya de Notificación" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "nivel" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "Amosar información de la versión" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "falló l'apertura de la fonte:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "El búffer de gueta ta ermu.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d bytes" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Unviar la cola de la rede: %d bytes" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "El comandu Insert in Buffer inxertará'l conteníu de Data 1 na entrada onde se calcó la secuencia de tecles na posición actual del cursor" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "El comandu Set Buffer afita la entrada au la secuencia de tecles s'introduxo a los conteníos de Data 1" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "El comandu Last Command afita la entrada pa caltener el caberu comandu ingresáu al igual que calcar la tecla p'arriba na llinia de comandos" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "El comandu Next Command afita la entrada pa que caltenga'l siguiente comandu ingresáu al igual qu'al calcar la tecla abaxo na llinia de comandos" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "Esti comandu camuda'l testu na entrada pa completar un nomatu incompletu o un comandu. Si Data 1 ta afitáu entós al calcar dos vegaes la tecla TAB sobro una cadena seleicionará'l caberu nomatu, non el siguiente." + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "Esti comandu desplaza p'arriba y p'abaxo la llista de nomatos. Si Data 1 ta afitáu a cualesquiera entós desplazaráse p'arriba, sinon desplazaráse p'abaxo" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "Esti comandu comprueba la cabera pallabra introducida na entrada escontra la llista de reemplazos y trócala si alcuentra una coincidencia" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "Esti comandu mueve una vegada la llingüeta superior a manzorga" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "Esti comandu mueve una posición la llingüeta superior a mandrecha" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "Esti comandu mueve la familia actual de llingüetes a manzorga" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "Esti comandu mueve la familia actual de llingüetes a mandrecha" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "Colocar la llinia d'entrada nel hestorial pero ensin unviala al sirvidor" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "Ocurrió un fallu cargando la configuración de les combinaciones de tecles" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "Nun pue escribise a esi ficheru." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "Nun pue lleese esi ficheru." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "Esa mázcara yá esiste." + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Priváu" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Noticia" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "Nun inorar" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "Introduz la mázcara que quies inorar:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Estadístiques d'inoraos:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Canal:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Priváu:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Noticia:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Invitar:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "Amestar..." + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "Nome de canal enforma curtiu, intenta de nuevu." + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "Conexón a %s completada." + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "¿Qué quies facer agora?" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "_Nada, yá me coneutaré dempués." + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "Entrar a esta canal:" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Si conoces el nome de la canal a la que quies xunite, escríbilu equí." + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "" + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "_Amosar siempre esti diálogu dempués de la conexón." + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "Diálogu con" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "El tema pa %s ye: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "Nun hai definíu dengún tema" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "Esti sirvidor entá tien %d canales o diálogos asociaos con elli. ¿Quies zarralos toos?" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "Nun entrugar más." + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Tas coneutáu a %i redes IRC" + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "¿De xuru que quies colar?" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "Dalgunes tresferencies de ficheros siguen actives." + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "_Minimizar a bandexa" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "Inxertar atributu o códigu de color" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>Negrina</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>Solliñáu</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "Normal" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "Colores 0-7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "Colores 8-15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "C_onfiguración" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "_Rexistrar nel discu" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "_Recargar hestorial anterior" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "An_ubrir mensaxes d'entrar/colar" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "Alertes _Estra" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "Pitar al llegar un _mensax" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "Chisbar _Iconu na Estaya de Notificación" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "Chisbar na _Barra de Xeres" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "_Dixebrar" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "_Zarrar" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "¡El llímite d'usuarios tien de ser un númberu!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "Nun hai mensaxes esternos" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "Proteición del tema" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "Namái invitaos" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "Moderáu" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "Llista de Baneaos" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Pallabra contraseña" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "Llímite d'usuarios" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Introduz el nomatu nuevu:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "" + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "" + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "" + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Equipu desconocíu" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Desconocíu" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Nome Real:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "Usuariu:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "País:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "Sirvidor:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "fai %u minutos" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "Caberu mensaxe:" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "Mensax d'ausencia:" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "%d nomatos seleicionaos." + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "Abrir enllaz nel restolador" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "Copiar URL seleicionada" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Entrar a la canal" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "Invitar Canal" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "Ciclar canal" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "Rempuestes CTCP - Códigos especiales:\n\n%d = datos (el ctcp completu)\n%m = información de la máquina\n%s = nomatu de quien unvió'l ctcp\n%t = hora/data\n%2 = pallabra 2\n%3 = pallabra 3\n&2 = pallabra 2 fasta'l fin de llinia\n&3 = pallabra 3 fasta'l fin de llinia\n\n" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "Camudar con" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "_Nuevu" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "_Colar" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "_Ver" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "Barra del _menú" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "Barra del _tema" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "Llista d'_usuarios" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "Botones de M_ou" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "Camudar _Canal" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "Llingüe_tes" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "Árbol" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "_Métriques de Rede" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Apagar" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "Gráficu" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "_Sirvidor" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "_Desconeutar" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "_Reconeutar" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "Menú d'_usuariu" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "A_xustes" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "_Preferencies" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "_Ventana" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "Reaniciar la llinia de marcáu" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "_Llimpiar testu" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "Ayu_da" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "Índi_z" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "Tocante _a" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "_Axuntar" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Nome" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Vistu por cabera vegada" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "Desconeutáu" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Enxamás" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "fai %d minutos" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "Coneutáu" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "Introduz el nomatu p'amestar:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "Notificar sobre eses redes:" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "Acéutase una coma como separtador na llista de redes." + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "Abrir ventana" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "_Parpaguiar" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "Mensax de Canal" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "Mensaxe Priváu" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "Mensaxes resaltaos" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "_Camudar estáu" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "_Ausente" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "_P'atrás" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Versión" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Descripción" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Escueyi una estensión o guión a cargar" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "_Cargar..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "Guardar como..." + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Nueva rede" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "¿Daveres que quies desaniciar la rede \"%s\" y tolos sos sirvidores?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "Contraseña:" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "_Editar" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "Coneutar únicamente al sirvidor escoyíu" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Nun recorrer tolos sirvidores cuando la conexón falle." + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "Usar un sirvidor proxy" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "Usar SSL con tolos sirvidores d'esta rede" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "Usar información global d'usuariu" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "_Nomatu:" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "Segunda opción:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "Nome rea_l:" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "Nome d'_usuariu:" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Contraseña:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "Xuegu de caráuteres:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "Información sobre usuariu" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "Tercer opción:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Redes" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "Saltar llista de redes al aniciar" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "_Editar..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "Axe_itar" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "C_oneutar" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Albania" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Azerbaixán" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Bielorrusia" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Bulgaria" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Estonia" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "India" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Malasia" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Tailandia" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Vietnam" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Xeneral" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Fonte:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "Nomatos coloreaos" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "Dar a cada persona nel IRC un color distintu" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "Indentar nomatos" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "Xustificar los nomatos a mandrecha" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "Amosar llinia de marcar" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "Inxertar una llinia colorada dempués del caberu testu lleíu" + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Imaxe de fondu:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "Configuración de tresparencia" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "" + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "" + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "Finó caberu falante" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "Comprobación ortográfica" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "Completar nomatu" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "Sufixu al completar el nomatu:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "Nomatu al completar ordenáu:" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "" + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "Desordenada" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Arriba" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Abaxo" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Anubríu" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "Llista d'usuarios" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "Amosar nomes agospiadores na llista d'usuarios" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "Usar la fonte de la caxa de testu y colores" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "Llista d'usuarios ordenada por:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "Amosar llista d'usuarios en:" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "Nes canales más pequeñes que:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "Comportamientu del duble clic" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Ventanes" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Llingüetes" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "Siempre" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "Namái llingüetes solicitaes" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "Árbol" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "Camudar triba:" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "Abrir llingüeta estra pa los mensaxes del sirvidor" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "Abrir nueva llingüeta cuando recibas un mensax priváu" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "Tresnar llingüetes alfabéticamente" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "Testu pequeñu" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "Centrase en nueves llingüetes:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "Amosar camudar canal en:" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "Amenorgar llingüetes a:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "lletres." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "Ventana del caberu rexistru" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "Abrir canales en:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "Abrir diálogos en:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "Abrir utilidaes en:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "¿Abrir DCC, Inorar, Notificar etc, en llingüetes o en ventanes?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "Ficheros y direutorios" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "Aceutar ficheros automáticamente:" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Baxar ficheros en:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "Mover ficheros completaos a:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "Guardar el nomatu nos nomes de ficheros" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "Abrir les ventanes de diálogu automáticamente" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "Ventana d'unviu" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "Ventana de recepción" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "Ventana de canal" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "Una xuba:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "Velocidá máx. pa una tresferencia" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "Una baxada" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "Toles xubes amestaes:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "Velocidá máx. pa tol tráficu" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "Toles baxaes amestaes:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "Alertes" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "Parpaguiar iconu na estaya notificación en:" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "Parpaguiar barra de xeres en:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "Facer soníu en:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "Activar iconu na estaya de notificaciones" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "" + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "Mensaxes Resaltaos" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Resaltar mensaxes cuando nomen el to nomatu, pero cuando:" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "Pallabres adicionales pa resaltar:" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "Nomatos que nun resaltarán:" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "Nomatos que siempre van rescamplase:" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Dixebrar multiples pallabres con comes.\nComodines aceutaos." + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "Mensaxes predeterminaos:" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "Colar:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "Abandonar canal:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "Ausente:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "Ausente" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Amosar namái una vegada" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "Desmarcar ausencia automática" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "" + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "Amosar los MODOs en forma plana" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "Anubrir mensaxes d'entrar/colar" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "Allanciu de reconexón automática:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Rexistros" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "Amosar charres de la to sesión previa" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "Llinies de desplazamientu:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "Activar rexistru de charres a discu" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "Nome de ficheru de rexistru:" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Sirvidor %c=Canal %n=Rede." + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "Inxertar marques de data/hora nos rexistros" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "Formatu de data/hora pal rexistru:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URL" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(Desactiváu)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "La to direición" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "Asociar a:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "Namái ye útil pa ordenadores con direiciones múltiples." + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "Obtener la mio IP del sirvidor IRC" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "Entruga la to direición real al sirvidor IRC. ¡Úsalo si tienes una direición de la triba 192.168.*.*!" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "Direición IP DCC:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "Pretender tar nesta direición cuando tes ufriendo ficheros." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "!Dexar los puertos en cero pal rangu completu." + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "Sirvidor proxy" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "Nome d'equipu:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Puertu:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Triba:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "Usar un sirvidor proxy pa:" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "Autenticación nel sirvidor proxy" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "Nome d'usuariu:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "Escueyi un ficheru d'imaxe" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "Seleicionar carpeta de baxaes" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Seleicionar fonte" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Desaminar..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "Abrir carpeta de datos..." + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Seleicionar color" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "Colores de testu" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "Colores de mIRC:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "Colores llocales:" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Primer planu:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Fondu:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "Colores de la interface" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "Dato nuevu:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "Llinia pa señalar:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "Mensax nuevu:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "Usuariu ausente:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "Resaltar:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Eventu" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "Ficheru de soníu:" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "Escueyi un ficheru de soníu" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "Ficheru de soníu:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "R_estolar..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "_Reproducir" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Interface" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Caxa d'entrada" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Llista d'usuarios" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "Camudar Canal" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Colores" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Charra" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "Avanzáu" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Configuración de rede" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Tresferencies de ficheros" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Categoríes" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "¡Nun pues poner l'árbol arriba o abaxo!\nPor favor, camuda la disposición de les <b>Llingüetes</> nel menú <b>Ver</b> primero." + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "" + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Dalgunes opciones que camudaron requieren un reaniciu pa tener efeutu." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*ALVERTENCIA*\nAceutar automáticamente DCC haza'l to direutoriu d'aniciu\npue ser peligroso y ye esplotable. Por exemplu: Dalguien \npue unviate un ficheru .bash_profile" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "" + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "Ocurrió un fallu analizando la cadena" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Esta señal namái pasó %d argumentos, $%d nun ye válidu" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "Imprentar ficheros de testos" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ Númberu" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Editar eventos" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "Cargar dende..." + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Testear too" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Llimpiar la llista" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Copiar URL seleicionada" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Copiar" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Guardar llista nun ficheru." + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d ops, %d total" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "Abrir una URL irc://server:port/channel" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "" diff --git a/hexchat/po/az.po b/hexchat/po/az.po new file mode 100644 index 0000000..313f5f3 --- /dev/null +++ b/hexchat/po/az.po @@ -0,0 +1,6254 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Metin Amiroff <metin@karegen.com>, 2004 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-03 20:10+0000\n" +"Last-Translator: TingPing <tingping@tingping.se>\n" +"Language-Team: Azerbaijani (http://www.transifex.com/hexchat/hexchat/language/az/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: az\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Məşğulam" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Gedirəm" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Şəbəkə" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<boş>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Kanal" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Gözləyir" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Fəal" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Bacarılmadı" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Oldu" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Bağlan" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Ləğv Edildi" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "%s ünvanına yetişilə bilmir\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Xəta" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "Fəal DCC-lər yoxdur\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Op Ver" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Op Al" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "Voice Ver" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "Voice Al" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Kick/Ban" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Kick-lə" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "Ban-la" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "KickBan-la" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Kanaldan Çıx" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Kanala Daxil Ol..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "Daxil Olunacaq Kanalı Bildir:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Verici Körpüləri" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Vericini Pinglə" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Buraxılışı Gizlət" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Op" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "Di ha!" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Kickləmə səbəbi %s:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "Dialoq" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Yolla" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Söhbət" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Təmizlə" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "" + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "IRC-ni Ali İstifadəçi olaraq işlətmək dəlilikdir.\n Xahiş edirik istifadəçi hesabı yaradın.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "BƏLİ " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "XEYİR " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s xətdədir\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s xətdə deyil\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Heç bir kanalda deyilsiniz. /join #<kanal> əmrini verin\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Bağlı deyilsiniz. /server <qovşaq> [<port>] əmrini verin\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "/bin/sh əmrini icra etməliyəm!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "" + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "" + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "" + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "" + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "" + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "" + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "İstifadə Qaydası: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nBu əmrlə əlaqəli yardım mövcud deyil.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "Belə əmr yoxdur.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "" + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "%s qovşaq adı tapıla bilmir\nIP qurğularınızı yoxlayın!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "Vəkil traversalı bacarılmadı.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "%s üstündəki növbəti vericiyə keçilir...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "" + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "" + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "" + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "" + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "" + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "" + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "" + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "" + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "" + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "" + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "" + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "" + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "" + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "" + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "" + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "" + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "" + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "" + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "" + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "Sol ismarış" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "Sağ ismarış" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "IP ünvanı" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "İstifadəçi adı" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "Daxil olan şəxsin ləqəbi" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "Daxil olunan kanal" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "Şəxsin qovşağı" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Ləqəb" + +#: src/common/text.c:980 +msgid "The action" +msgstr "Gedişat" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "Mod hərfi" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "" + +#: src/common/text.c:987 +msgid "The text" +msgstr "Mətn" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "İsmarış" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Verici Adı" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Köhnə ləqəb" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Yeni ləqəb" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "Mövzunu dəyişdirən şəxsin ləqəbi" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Mövzu" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "Atanın ləqəbi" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "Atılanın ləqəbi" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "Kanal" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "Səbəb" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "Ayrılan şəxsin ləqəbi" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "Vaxt" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "Yaradıcı" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Ləqəb" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Səbəb" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Qovşaq" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "Mənşəyi" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "x.x şəklində vaxt (alta baxın)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "Getdiyi kanal" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "Səs" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "Şəxsin ləqəbi" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "CTCP hadisəsi" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "Üçarı seçən şəxsin ləqəbi" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "Açar" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "Hüdudu seçən şəxsin ləqəbi" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "Hüdud" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "Oplayan şəxsin ləqəbi" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "Oplanan şəxsin ləqəbi" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "Yarı oplanan şəxsin ləqəbi" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "Yarı oplayan şəxsin ləqəbi" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "Voice-layan şəxsin ləqəbi" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "Voice-lanan şəxsin ləqəbi" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "Banlayan şəxsin ləqəbi" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "Ban maskası" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "Açarı ləğv edənin ləqəbi" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "Hüdüdu ləğv edənin ləqəbi" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "Exempt maskası" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "Dəvət maskası" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "Modun işarəsi (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "Mod hərfi" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Tam ad" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Verici Haqqında" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Passiv olma vaxtı" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Giriş vaxtı" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Uzaqlaşma səbəbi" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "İsmarış" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Hesab" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "Həqiqi istifadəçi@qovşaq" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "Həqiqi IP" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Kanal Adı" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Mətn" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Sizi dəvət edən şəxsin ləqəbi" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "İstifadəçilər" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "Ləqəb istifadədədir" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Ləqəb sınanır" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Port" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "Mod qatarı" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "DCC Növü" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Fayl adı" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Hədəf fayl adı" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "Cığır adı" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Mövqe" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Böyüklük" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "DCC Qatarı" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "Bildiriş üzvləri ədədi" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Köhnə Fayl Adı" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Yeni Fayl Adı" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Alıcı" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Qovşaq Maskası" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Qovşaq Adı" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "Paket" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "Saniyə" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "Dəvət edilən şəxsin ləqəbi" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Ban Maskası" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "Banı qoyan" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Ban vaxtı" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "Uzaq qovşaq soketi bağladı" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "Bağlantı rədd edildi" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "Uzaq qovşaq yoxdur" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Bağlantı vaxtı doldu" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "Bu ünvan verilə bilməz" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "Bağlantı düyün tərəfindən sıfırlandı" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Birləşmiş Ərəb Əmirlikləri" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Əfqanıstan" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Antiqua və Barbuda" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Anquilla" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Albaniya" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Ermənistan" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Holland Antilləri" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Anqola" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Antarktika" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Argentina" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "Reverse DNS" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Amerikan Samoa" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Avstriya" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Avstraliya" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Azərbaycan" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Bosniya və Herzoqovina" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Banqladeş" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Belçika" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Bolqarıstan" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Bahreyn" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "Təşkilatlar" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Bruney Darüssəlim" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Boliviya" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Braziliya" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Bahamalar" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Butan" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Buvet Adası" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Botsvana" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Belarusiya" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Beliz" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Kanada" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Kakos Adaları" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "Mərkəzi Afrika Respublikası" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Konqo" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "İsveçrə" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Kuku Adaları" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Çili" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Kamerun" + +#: src/common/util.c:738 +msgid "China" +msgstr "Çin" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Kolumbiya" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Internic Təşkilatı" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Kosta Rika" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Kuba" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Keyp Verde" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Kristmas Adası" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Kipr" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "Çex Respublikası" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Almaniya" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Cibuti" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Danimarka" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Dominik" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "Dominikan Respublikası" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Əlcəzair" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Ekvador" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Tədris Təşkilatı" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Estoniya" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Misir" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Qərbi Saxara" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Eritre" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "İspaniya" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Efiopiya" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Finlandiya" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Fici" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Falkland Adaları" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Mikroneziya" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Faro Adaları" + +#: src/common/util.c:770 +msgid "France" +msgstr "Fransa" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Qabon" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Böyük Britaniya" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Qrenada" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Gürcüstan" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Fransız Gvineyası" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "Britaniya Kanal Adaları" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Qana" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Qrinland" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Qambiya" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Qvineya" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Hökümət" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Quadelup" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Ekvatorial Qvineya" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Yunanıstan" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Quatemala" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Quam" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Qvineya Bissau" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Quyana" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Honq Konq" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Hird Adası və Mkdonald Adaları" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Xırvatıstan" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Macarıstan" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "İndoneziya" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "İrlandiya" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "İsrail" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "" + +#: src/common/util.c:801 +msgid "India" +msgstr "Hindistan" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "Məlumat verici" + +#: src/common/util.c:803 +msgid "International" +msgstr "Beynəlmilləl" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Britaniya Hind Okeanı Sahəsi" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "İraq" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "İran" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "İslandiya" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "İtaliya" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Yamayka" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "İordaniya" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Yaponiya" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Kenya" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Qırğızıstan" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Kambodiya" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Komor" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "St. Kitts və Nevis" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Şimali Koreya" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Cənubi Koreya" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Küveyt" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Kayman Adaları" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Qazaxstan" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Livan" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Müqəddəs Lusiya" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Lixtenşteyn" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Şri Lanka" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Liberiya" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Lesoto" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Litva" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Lüksemburq" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Latviya" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Liviya" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Mərakeş" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Monako" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Moldova" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "ABŞ Medikalı" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Madaqaskar" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Marşal Adaları" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Silahlı Qüvvələr" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Makedoniya" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Monqolustan" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Makau" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Şimali Marian Adaları" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Martiniq" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Mavritaniya" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Maurit" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Maldiv" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Malavi" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "Meksika" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Malayziya" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Mozambiq" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Namibiya" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Yeni Kaledoniya" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Internic Şəbəkəsi" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Norfolk Adaları" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Nigeriya" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Nikaraqua" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Hollandiya" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Norveç" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Niu" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "Yeni Zellandiya" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "Internic Təşkilatı" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Fransız Poloneziyası" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Papua Yeni Qvineya" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Filippinlər" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Polşa" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "St. Pierre və Miquelon" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Pitkairn" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Puerto Riko" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Portuqaliya" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Paraqvay" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Katar" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Reyunion" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Rumıniya" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "Old School ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Rusiya Federasiyası" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Ruanda" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Səudiyyə Ərəbistan" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Solomon Adaları" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Seyşel" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Sudan" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "İsveç" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Sinqapur" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "St. Helena" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Sloveniya" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard və Jan Mayen Adaları" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "Slovakiya Respublikası" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Siera Lione" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Seneqal" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Somali" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Surinam" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "Sao Tome və Prinsip" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Köhnə SSSR" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Siriya" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Svaziland" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Türk və Kaykos Adaları" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Çad" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "Cənubi Fransız Sahələri" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Toqo" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Tayland" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Tacikistan" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "Tokelo" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Şərqi Timor" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Türkmənistan" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Tunis" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Tonqa" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Türkiyə" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Trinidad və Tobaqo" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Tayvan" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Tanzaniya" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Ukrayna" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Uqanda" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Birləşmiş Krallıq" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "Amerika Birləşmiş Ştatları" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Uruqvay" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Özbəkistan" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Vatikan Şəhər Höküməti" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "Britaniya Virgin Adaları" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "ABŞ Virgin Adaları" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Vyetnam" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "Vallis və Futuna Adaları" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Yəmən" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Mayot" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Yuqoslaviya" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Cənubi Afrika" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Zambiya" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Zimbabve" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Hərf Cədvəli" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "Ban-la" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Dəvət Et" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "" + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "Bir iki ban seçməlisiniz." + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Maska" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "Göndərən" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Tarix" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Sil" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Kəs" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Yenilə" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "" + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Çıxış fay adını seç" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Kanal adı" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Axtar:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Faylı %s-a yolla" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "Bu fayl davam etdirilə bilən deyil." + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "Fayla yetişilə bilmir: %s\n%s.\nDavam etdirmə mümkün olmayacaqdır." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "Endirilən fayl təklif olunandan daha böyükdür. Davam etdirmə mümkün deyil." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "Eyni fayl iki nəfərdən davam etdirilə bilməz." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Vəziyyət" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Fayl" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Hər ikisi də" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Ləğv Et" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Qəbul Et" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Davam Et" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "" + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Alc" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Gnd" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Sil" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Ləğv Et" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Qeyd Et" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "Yazə növü açıla bilmədi:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "Axtarış bufferi boşdur.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d bayt" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "Bu fayla yazıla bilmir." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "Bu fayl oxuna bilmir." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "Bu maska onsuz da mövcuddur." + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Şəxsi" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Bildiriş" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "Qəbul Et" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "Rədd ediləcək maskanı bildir:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Rədd Statistikaları:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Kanal:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Şəxsi:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Bildiriş:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Dəvət:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "" + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "" + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "" + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "" + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "" + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "" + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "%s mövzusu: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "Mövzu seçilməyib" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "" + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "" + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "_Bağla" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "İstifadəçi hüdüdu nömrə olmalıdır!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "Xarici ismarışlar göstərilməsin" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "Mövzu Qoruması" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "Ancaq Dəvət Et" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "Modereytlənmiş" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "Ban Siyahısı" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Açar Kəlmə" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "İstifadəçi Hüdüdu" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Yeni ləqəb bildir:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "" + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "" + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "" + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Namə'lum qovşaq" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Namə'lum" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Həqiqi Adınız:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Kanala Daxil Ol" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "Part Kanalı" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "Cycle Kanalı" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Bağlı" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "Qrafika" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "_Verici" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "_Qurğular" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "_Pəncərə" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "Mətni _Təmizlə" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "_Yardım" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "_Məzmun" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "_Haqqında" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Ad" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Son Görülmüşdür" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "Xətdən Xaric" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Qətiyyən" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "Xətdə" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "Əlavə ediləcək ləqəbi yazın:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Buraxılış" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "İzahat" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Yüklənəcək Əlavə ya da Skripti Seç" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "_Yüklə..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "" + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Yeni Şəbəkə" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Həqiqətən də \"%s\" şəbəkəsi və bütün onun vericiləri silinsin?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Şifrə:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Şəbəkələr" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "_Bağlan" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Albaniya" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Azərbaycan" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Belarusiya" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Bolqarıstan" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Estoniya" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "Hindistan" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Malayziya" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Tayland" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Vyetnam" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Ümumi" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Yazı növü:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "" + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Arxa plan rəsmi:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "" + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "" + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "" + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "Nizamsız" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Üstdə" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Altda" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Göstərmə" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "İstifadəçi Siyahısı" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "Söhbət pəncərəsi yazı növü və rənglərini işlət" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Pəncərələrdə" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Səkmələrdə" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "hərf." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "Kanalların açılma şəkli:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "Dialoqların açılma şəkli:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "Vasitələrin açılma şəkli:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "DCC Açılması, Rədd Etmə, Bildirişlər səkmələrdəmi yoxsa pəncərələrdəmi açılsın?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Faylları buraya endir:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "Tamamlanan faylları buraya daşı:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "" + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Uzaqda cəziyyətini bir dəfə göstər" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "" + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Qeyd" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "Geri dönüş sətiri miqdarı:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "" + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "Qeydlərə tarix mühürünü daxil et" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URL" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(Qeyri fəaldır)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "" + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "DCC IP ünvanı:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "Fayl təklif edəndə bu ünvanda olduğunu bildir." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "" + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "Qovşaq adı:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Qapı:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Növ:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "İstifadəçi adı:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "Rəsm faylı seç" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Yazı növü seç" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Gəz..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Rəng seç" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "mIRC rəngləri:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Ön plan:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Arxa plan:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "İşıqlandırma:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Hadisə" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "" + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Ara üz" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Giriş qutusu" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "İstifadəçi siyahısı" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Rənglər" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Söhbət" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Şəbəkə qurğusu" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Fayl transferləri" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Kateqoriyalar" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "" + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Bə'zi seçimlərin tətbiq edilməsi üçün proqramı yenidən başlatmalısınız." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "" + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "Qatar oxunanda xəta yarandı" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "Mətn Faylını Çap Et" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ Nömrəsi" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Hadisələri Dəyişdir" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "" + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Hamısı Sına" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Siyahını təmizlə" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Seçili URL-ni Köçür" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Köçür" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Siyahını fayla qeyd et" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d op, %d toplam" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "" diff --git a/hexchat/po/be.po b/hexchat/po/be.po new file mode 100644 index 0000000..9fa1c13 --- /dev/null +++ b/hexchat/po/be.po @@ -0,0 +1,6253 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-03 20:10+0000\n" +"Last-Translator: TingPing <tingping@tingping.se>\n" +"Language-Team: Belarusian (http://www.transifex.com/hexchat/hexchat/language/be/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: be\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Я заняты" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Выходжу" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Сеціва" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<ніякі>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Канал" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Чаканне" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Актыўны" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Памылка" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Выканана" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Злучэнне" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Перарвана" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "Няма доступу да %s\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Памылка" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s прапануе \"%s\". Вы згодны?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "Няма актыўных каналаў данніх (DCC)\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Даць аператара" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Забраць аператара" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "Даць голас" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "Забраць голас" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Выпхнуць/забараніць" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Выпхнуць" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "Забараніць" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "Выпхнуць і забараніць" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Выйсці з канала" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Увайсці на канал..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "Вызначце канал для ўваходу:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Спасылкі сервера" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Пінгаваць сервер" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Схаваць версію" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Аператар" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "Адабраць аператара" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "пакуль" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Увядзіце прычыну выпіхвання %s:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "Дыялог" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "Хто ёсць" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Даслаць" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Размова" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Ачысціць" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "" + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* Выконваць IRC з-пад root'a - глупства.\n Вы павінны стварыць карыстальніцкі\n рахунак у сістэме і ўжываць яго\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "Так " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "Не " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Вас затапліваюць CTCP запытамі з %s, %s ігнаруецца\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s у сеціве\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s адключаны\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Не зайшлі на канал. Паспрабуйце /join #<channel>\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Няма злучэння. Паспрабуйце /server <вузел> [<порт>]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Ужо пазначаны адышэдшым: %s\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "Ужо пазначаны вярнуўшымся.\n" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "Для запуску патрэбна праграма /bin/sh !\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "Даступныя каманды:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "Вызначаныя карыстальнікам каманды:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "Вызначаныя плагінам каманды:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Набярыце /HELP <каманда> для даведкі ці /HELP -l" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Невядомы аргумент '%s' праігнараваны." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "" + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "Плагін не знойдзены.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "Гэты плагін немагчыма выгрузіць.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <імя> <дзеянне>, дадае кнопку пад спісам карыстальнікаў" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <каманда>, дасылае каманду на ўсе каналы, куды вы зайшлі" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <каманда>, дасылае каманду на ўсе серверы, з якімі вы злучаны" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "BACK, пазначае вас вярнуўшымся (не адышэдшым)" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <маска> [<тыпзабароны>], забараняе доступ да канала кожнаму, хто адпавядае маске. Калі гэткія карыстальнікі ўжо на канале, яны не будуць выпхнутыя. (Трэба правы аператара)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "" + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <код|маска>, шукае код краіны, напрыклад: au = australia" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <мянушка> <паведамленне>, дасылае мянушцы CTCP-паведамленне, напрыклад, VERSION ці USERINFO" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <мянушка> - дазволіць прапанаваны файл\nDCC SEND [-maxcps=#] <мянушка> [файл] - даслаць файл камусьці\nDCC PSEND [-maxcps=#] <мянушка> [файл] - даслаць файл у пасіўным рэжыме\nDCC LIST - паказаць спіс DCC\nDCC CHAT <мянушка> - прапанаваць DCC CHAT камусьці\nDCC PCHAT <мянушка> - прапанаваць DCC CHAT у пасіўным рэжыме\nDCC CLOSE <тып> <мянушка> <файл> напрыклад:\n /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <мянушка>, выдаляе статус паўаператара ў мянушкі на бягучым канале (патрэбен статус аператара)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <імя>, выдаляе кнопку пад спісам карыстальнікаў" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <мянушка>, выдаляе статус аператара ў мянушкі на бягучым канале (патрэбен статус аператара)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <мянушка>, выдаляе права голасу ў мянушкі на бягучым канале (патрэбен статус аператара)" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, Адлучыцца ад сервера" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <тэкст>, Выводзіць тэкст на лакальнай машыне" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <каманда>, запускае каманду. Калі ўжыты параметр -o, вывад будзе дасланы ў бягучы канал, інакш у бягучае тэкставае акно" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, дасылае працэсу сігнал SIGCONT" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9], забівае выконваючуюся каманду ў бягучай сесіі. Калі адзначаны флаг -9, працэсу дасылается сігнал SIGKILL" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, дасылае працэсу сігнал SIGSTOP" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, дасылае данні на стандартны ўваход працэса (stdin)" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, скінуць чаргу дасылкі на бягучы сервер" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <вузел> [<порт>], далучыцца праз вузел, прадвызначаны порт 23" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <мянушка>, даць правы паў-аператара карыстальніку (патрэбна мець правы аператара)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <пароль>, ідэнтыфікаваць сябе nickserv" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <маска> <тыпы..> <уласцівасці..>\n маска - маска для ігнаравання, напрыклад: *!*@*.aol.com\n тыпы - тыпы дадзеных для ігнаравання:\n PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n уласцівасці - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <мянушка> [<канал>], запрасіць кагосьці на канал, калі назва канала не пазначана - на бягучы канал (патрэбен статус аператара)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <канал>, увайсці на канал" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, выканаць праверку сігнала" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <файл>, загрузіць плагін ці скрыпт" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, Адабраць паў-аператара ва ўсіх карыстальнікаў бягучага канала (патрэбен статус аператара)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, Адабраць аператара ва ўсіх карыстальнікаў бягучага канала (патрабуе статус аператара)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <дзеянне>, дасылае дзеянне на бягучы канал (дзеянні пішуцца ад трэцяй асобы, напрыклад, /me скача)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, Выпхнуць усіх карыстальнікаў з бягучага канала, акрамя вас (патрэбен статус аператара)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, Надаць усім карыстальнікам бягучага канала статус аператара (патрэбен статус аператара)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <мянушка> <паведамленне>, Дасылае CTCP-абвяшчэнне" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <hostname> [<port>]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <мянушка>, змяняе вашую мянушку" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [-n сеціва1[,сеціва2]] [<мянушка>], пералічвае ваш спіс абвяшчэнняў ці дадае некага ў яго" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <nick>, дае мянушцы статус аператара канала (патрэбен статус аператара)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<канал>] [<прычына>], выйсці з канала, калі канал не вызначаны, то з бягучага" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <мянушка | канал>, CTCP пінг мянушкі ці канала" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "" + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<прычына>], адлучыцца ад бягучага сервера" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <тэкст>, даслаць тэкст у неапрацованай форме да сервера" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<вузел>] [<порт>] [<пароль>], Можа быць выклікана як /RECONNECT для перадалучэння да бягучага сервера ці /RECONNECT ALL для перадалучэння да ўсіх адкрытых сервераў" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [-ssl] [<вузел>] [<порт>] [<пароль>], Можа быць выклікана як /RECONNECT для перадалучэння да бягучага сервера ці /RECONNECT ALL для перадалучэння да ўсіх адкрытых сервераў" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <тэкст>, дасылае тэкст аб'екту ў бягучым акне" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <nick> [<file>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <вузел> <порт> <канал>, злучыцца і ўвайсці на канал" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <вузел> <порт> <канал>, злучыцца і ўвайсці на канал" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <вузел> [<порт>] [<пароль>], злучыцца з серверам, прадвызначаны порт 6667" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<тэма>], усталяваць тэму, калі яна вызначана, інакш вывесці бягучую тэму" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "\nTRAY -f <timeout> <file1> [<file2>] Мірганне ў сподку між двума значкамі.\nTRAY -f <filename> Замацаваць значку ў сподкавым элеменце.\nTRAY -i <number> Мірганне ў сподку ўнутранай значкай.\nTRAY -t <text> Усталяваць тэкст сподкавага элемента.\nTRAY -b <title> <text> Усталяваць выплыўны тэкст сподкавага элемента." + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <маска> [<маска>...], зняць забарону з вызначаных масак." + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <mask> [QUIET]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <імя>, выгрузіць плагін ці скрыпт" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "" + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, адкрыць URL у вашым браўзеры" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "USELECT [-a] [-s] <мянушка1> <мянушка2> і г.д., падсвечваць вызначаную(ыя) мянушку(і) ў спісе карыстальнікаў" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <мянушка>, даць голас камусьці (патрэбен статус аператара канала)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <паведамленне>, напісаць паведамленне ва ўсіх каналах" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <паведамленне>, даслаць паведамленне ўсім аператарам бягучага канала" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "Карыстанне: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nНіякай даведкі не існуе для гэтай каманды.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "Няма гэткай каманды.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "Дрэнныя аргументы карыстальніцкай каманды.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "Зашмат рэкурсіўных падкаманд, перарываюся." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Ці вы ўпэўнены, што гэта сумяшчальны з SSL сервер і порт?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "Немагчыма знайсці імя %s\nПраверце вашыя наладкі IP!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "Не атрымліваецца злучыцца з проксі.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Спрабую іншы сервер %s...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "Увага: \"%s\" знаказбор невядомы. Ніякага пераўтварэння знакаў для сеціва %s не будзе." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "" + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "" + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%UКанал Карыст. Тэма" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "" + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "" + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "" + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "" + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "" + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "" + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "" + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "" + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "" + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "" + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "" + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "" + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tСпіс абвяшчэнняў пусты." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "" + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "" + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "" + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "" + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** КАНЕЦ УВАХОДУ НА %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** ПАЧАТАК УВАХОДУ НА %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "Левае паведамленне" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "Правае паведамленне" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "IP адрас" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Імя карыстальніка" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "Мянушка ўваходзячай асобы" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "Канал для ўваходу" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "Хост гэтай асобы" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Мянушка" + +#: src/common/text.c:980 +msgid "The action" +msgstr "Дзеянне" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "Знак рэжыму" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "Вылучаны тэкст" + +#: src/common/text.c:987 +msgid "The text" +msgstr "Тэкст" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "Паведамленне" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Назва сервера" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Старая мянушка" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Новая мянушка" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "Мянушка асобы, якая змяніла тэму" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Тэма" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "Мянушка асобы, якая выпхнула вас" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "Асоба, якую выпхнулі" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "Канал" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "Прычына" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "Мянушка асобы, што выходзіць" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "Час" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "Стваральнік" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Мянушка" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Прычына" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Хост" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "Адкуль" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "Час у фармаце x.x (глядзі ніжэй)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "Спіс каналаў" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "Гук" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "Мянушка гэтай асобы" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "CTCP падзея" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "Мянушка асобы, якая ўсталявала ключ" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "Ключ" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "Мянушка асобы, якая ўсталявала абмежаванне" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "Абмежаванне" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "Мянушка асобы, якая дала статус аператара" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "Мянушка асобы, якая атрымала статус аператара" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "Мянушка асобы, якая атрымала статус паў-аператара" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "Мянушка асобы, якая дала статус паў-аператара" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "Мянушка асобы, якая дала голас" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "Мянушка асобы, якая атрымала голас" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "Мянушка асобы, якая ўсталявала забарону" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "Маска забароны" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "Мянушка, якая выдаліла ключ" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "Мянушка, якая выдаліла абмежаванне" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "Мянушка асобы, у якой быў адабраны статус аператара" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Мянушка асобы, у якой быў адабраны статус паў-аператара" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "Мянушка асобы, у якой быў адабраны голас" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "Мянушка асобы, якая ўсталявала выключэнне" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "Маска выключэння" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "Мянушка асобы, якая выдаліла выключэнне" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "Мянушка асобы, якая зрабіла запрашэнне" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "Маска запрашэння" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "Мянушка асобы, якая выдаліла запрашэнне" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "Мянушка асобы, якая ўсталявала рэжым" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "Знак рэжыму (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "Сімвал рэжыму" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "Канал для ўжыцця" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Поўнае імя" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Член канала /\"аператар IRC\"" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Інфармацыя аб серверы" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Час бяздзеяння" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Час з уваходу" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Прычына адыходу" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Паведамленне" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Рахунак" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "Сапраўдны user@host" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "Сапраўдны IP" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Назва канала" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Тэкст" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Мянушка асобы, якая запрасіла вас" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Карыстальнікі" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "Мянушка выкарыстоўваецца" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Спрабуемая мянушка" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Порт" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "Радок рэжымаў" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "Тып DCC" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Імя файла" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Назва файла ў атрымальніка" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS(знакаў у секунду)" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "Шлях" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Пазіцыя" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Памер" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "Радок DCC" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "Колькасць абвяшчэнняў" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Старое імя файла" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Новае імя файла" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Атрымальнік" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Маска камп'ютэра" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Назва камп'ютэра" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "Пакет" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "Секунды" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "Мянушка запрошанай асобы" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Маска забароны" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "Хто ўсталяваў забарону" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Час забароны" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "Немагчыма прачытаць гукавы файл:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "Аддалены вузел закрыў сокет" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "У злучэнні адмоўлена" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "Няма шляху да вузла" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Час злучэння выйшаў" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "Немагчыма ўжыць гэта адрас" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "Злучэнне пераўсталяваны тым бокам" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "Узнясення астравы" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Андора" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Злучаныя Арабскія Эміраты" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Аўганістан" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Антыгуа і Барбуда" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Ангілья" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Албанія" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Арменія" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Нідэрландскія Антылы" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Ангола" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Антарктыка" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Аргентына" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "Адваротны DNS" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Амерыканскае Самоа" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Аўстрыя" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "НАТО Фэйл" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Аўстралія" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Аруба" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "Аланавы астравы" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Азербайджан" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Боснія і Герцагавіна" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Барбадос" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Бангладэш" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Бельгія" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Буркіна Фасо" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Баўгарыя" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Бахрэйн" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Бурундзі" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "Бізнесовыя" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Бенін" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Бэрмуды" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Брунэй" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Балівія" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Бразілія" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Багамы" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Бутан" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Востраў Бувет" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Батсвана" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Беларусь" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Белізе" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Канада" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Какос астравы" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "Дэмакратычная Рэспубліка Конга" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "Цэнтральна-Афрыканская Рэспубліка" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Конга" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "Швейцарыя" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "Кот д'Івуар" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Астравы Кука" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Чылі" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Камерун" + +#: src/common/util.c:738 +msgid "China" +msgstr "Кітай" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Калумбія" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Камерцыйныя Адрасы" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Коста Рыка" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "Сербія і Чарнагорыя" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Куба" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Кабо Вердэ" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Востраў Каляд" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Кіпр" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "Чэхія" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Нямеччына" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Джыбуці" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Данія" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Дамініка" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "Дамініканская Рэспубліка" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Алжыр" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Эквадор" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Адукацыйныя" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Эстонія" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Егіпет" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Заходняя Сахара" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Эрытрэя" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "Гішпанія" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Эфіёпія" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "Еўразвяз" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Фінляндыя" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Фіджы" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Фалклендскія астравы (Мальвіны)" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Федэрацыя Мiкранэзіі" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Астравы Фароэ" + +#: src/common/util.c:770 +msgid "France" +msgstr "Францыя" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Габон" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Вялікая Брытанія" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Грэнада" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Грузія" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Французская Грэнада" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "Брытанскія астравы Канала" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Гана" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Гібралтар" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Грынланд" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Гамбія" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Гвінея" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Урад" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Гвадэлупа" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Экватарыяльная Гвінэя" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Грэцыя" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Св.Георгія і Св.Сэндвіча астравы" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Гватэмала" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Гуам" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Гвінея-Бісаў" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Гвіяна" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Гонг-Конг" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Астравы Гэарда і МакДональда " + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Гандурас" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Харватыя" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Гаіці" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Вугоршчына" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Інданэзія" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Ірландыя" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Ізраіль" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "Востраў Мэн" + +#: src/common/util.c:801 +msgid "India" +msgstr "Індыя" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "Інфармацыйныя" + +#: src/common/util.c:803 +msgid "International" +msgstr "Міжнародныя" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Брытанская тэрыторыя Індыйскага акіяна" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Ірак" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "Іран" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Ісландыя" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Італія" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "Джэрсі" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Ямайка" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Ярданія" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Японія" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Кенія" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Кыргызстан" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Камбоджа" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Кiрыбацi" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Каморы" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "Сэнт-Кітс і Нэвіс" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Паўночная Карэя" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Паўднёвая Карэя" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Кувэйт" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Кайманавы астравы" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Казахстан" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Лаос" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Ліван" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Сэнт-Люсія" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Ліхтэнштэйн" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Шры-Ланка" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Лібэрыя" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Лесота" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Літва" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Люксэмбург" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Латвія" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Лівія" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Марока" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Манака" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Малдова" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "Злучаныя Штаты, медыцына" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Мадагаскар" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Маршалавы астравы" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Вайсковыя" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Македонія" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Малі" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "М'янма" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Манголія" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Макау" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Паўночныя Марыянскія астравы" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Мартыніка" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Маўрытанія" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Мантсэрат" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Мальта" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Маўрыцы" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Мальдывы" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Малаві" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "Мэксыка" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Малайзыя" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Мазамбік" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Намібія" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Новая Каледонія" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Нігер" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Унутраныя сецівы" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Норфалк" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Нігерыя" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Нікарагуа" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Галяндыя" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Нарвэгія" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Нэпал" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Науру" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Ніўэ" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "Новая Зеландыя" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Аман" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "Унутраныя некамерцыйныя арганізацыі" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Панама" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Пэру" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Французская Палінэзія" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Папуа Новая Гвінея" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Філіпіны" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Пакістан" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Польшча" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "Сэн-П'ер і Мікелон" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Піткэрн" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Пуэрта Рыка" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "Палестынская тэрыторыя" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Партугалія" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Палаў" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Парагвай" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Катар" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Рэюньён" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Румынія" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "Старое сеціва ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Расія" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Руанда" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Саўдаўская Арабія" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Саламонавы астравы" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Сэйшэлы" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Судан" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Швецыя" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Сінгапур" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "Востраў Сьвятой Алены" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Славенія" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Астравы Свальбард і Яна Майхема" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "Славакія" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Сьера-Леонэ" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "Сан-Марына" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Сенегал" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Самалі" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Сурынам" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "Сан-Тамэ і Прынсіпі" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Былы СССР" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "Сальвадор" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Сырыя" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Свазылэнд" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Астравы Тэркс і Кайкас" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Чад" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "Французскія паўднёвыя тэрыторыі" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Тога" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Тайланд" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Таджыкістан" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "Такелаў" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Усходні Тымор" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Туркменістан" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Туніс" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Тонга" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Турцыя" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Трынідад і Табага" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Тувалу" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Тайвань" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Злучаная Рэспубліка Танзанія" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Украіна" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Уганда" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Аб'яднанае Каралеўства" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "Злучаныя Штаты Амерыкі" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Уругвай" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Узбекістан" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Ватыкан" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "Св.Вінсент і Грэнадзіны" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Венесуэла" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "Брытанскія астравы Вірджын" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "ЗША астравы Вірджын" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "В'етнам" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Вануату" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "Воліс і Футуна астравы" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Самоа" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Йемен" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Маёт" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Югаславія" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Паўдневая Афрыка" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Забмія" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Зімбабвэ" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "Немагчыма злучыцца з шынай сесій (session bus)" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "Немагчыма скончыць NameHasOwner" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "Немагчыма скончыць Command" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "аддалены доступ" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "Плагін для аддаленага доступу (выкарыстоўвае DBUS)" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Немагчыма злучыцца з шынай сесій : %s\n" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Немагчыма дасягнуць %s : %s\n" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Палітра літар" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "Забараніць" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Запрашэнне" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "Не злучана." + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "Трэба выбраць некалькі забаронаў." + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Маска" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "Адкуль" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Дата" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Вы можаце адкрыць акно са спісам забаронаў толькі пры адкрытай укладцы канала." + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Выдаліць" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Сціснуць" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Аднавіць" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Паказ %d/%d карыстальнікаў на %d/%d каналах." + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Абярыце імя файла для вываду" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "У_вайсці на канал" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "_Капіяваць назву канала" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "Капіяваць тэкст _тэмы" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "_Пошук" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "Спіс спа_мповак" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "Захаваць _спіс як..." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "Паказаць толькі:" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "каналы з ад" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "да" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "карыстальнікамі" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "Глядзець у" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Назва канала" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "Тып пошуку:" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "Просты пошук" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "Узор адпавядае (Wildcards)" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "Рэгулярны выраз" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Знайсці:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Даслаць файл %s" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "Працяг гэтага файла немагчымы." + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "Немагчыма атрымаць доступ да файла: %s\n%s.\nПрацяг немагчымы." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "Файл у тэчцы спампоўванняў большы за прапанаваны файл. Працяг немагчымы." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "Немагчыма працягнуць той жа самы файл з двух чалавек." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Статус" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Файл" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "Прайшло часу" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Абодва" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "Запампоўкі" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "Спампоўкі" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "Падрабязнасці" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "Файл:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "Адрас:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Перарваць" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Прыняць" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Працягнуць" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "Адкрыць тэчку..." + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Прын" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Дасл" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "Час пачатку" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Выдаліць" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Адмяніць" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Захаваць" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "Не злучацца з серверамі аўтаматычна" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "Выкарыстоўваць іншую тэчку наладак" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "Не загружаць плагіны аўтаматычна" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "Паказаць тэчку карыстальніцкіх наладак" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "Выканаць каманду:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "Паказаць звесткі аб версіі" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "Памылка адкрыцця шрыфту:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "Буфер пошуку пусты.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d байтаў" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Сеціўная чарга дасылкі: %d байтаў" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "Каманда Ўставіць у буфер уставіць змест Данніх 1 у поле, дзе была націснута камбінацыя клавішаў, у бягучую пазіцыю курсора" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "Каманда Усталяваць Буфер усталёўвае значэнне поля поля, дзе была націснута камбінацыя клавішаў, у значэнне Данніх 1" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "Каманда Апошняя Каманда вяртае ў поле апошнюю каманду, гэтаксама ж, як у каманднай абалонцы націсканне кнопкі Ўверх" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "Каманда Наступная Каманда вяртае ў поле наступную каманду, гэтаксама ж, як у каманднай абалонцы націсканне кнопкі Ўніз" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "Гэта каманда змяняе тэкст у полі для дапаўнення нескончанай мянушкі ці каманы. Калі Данні 1 усталяваныя, двайны націск табуляцыі выбярэ не наступную, а апошнюю мянушку" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "Гэта каманда пракручвае ўніз і ўверх спіс карыстальнікаў. Калі Данні 1 усталяваны, будзе пракрутка ўверх, інакш - уніз" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "Гэта каманда правярае апошняе ўведзенае слова ў спіс заменаў і замяняе ў выпадку знаходжання адпаведнасці" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "Гэта каманда перамяшчае пярэднюю ўкладку на адну пазіцыю ўлева" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "Гэта каманда перамяшчае пярэднюю ўкладку на адну пазіцыю ўправа" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "Гэта каманда перамяшчае бягучую групу ўкладак на адну пазіцыю ўлева" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "Гэта каманда перамяшчае бягучую групу ўкладак на адну пазіцыю ўправа" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "Запісаць радок у журнал, але не дасылаць да сервера" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "Памылка загрузкі наладак камбінацыяў клавішаў" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "Немагчыма запісаць у гэты файл" + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "Немагчыма прачытаць гэты файл" + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "Гэта маска ўжо існуе" + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Асабісты" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Абвяшчэнне" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "Не ігнараваць" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "Увядзіце маску для ігнаравання:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Статыстыка ігнараванняў:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Канал:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Асабісты:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Абвяшчэнне:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Запрашэнне:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "Дадаць..." + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "Імя канала занадта кароткае, паспрабуйце зноў." + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "Злучэнне з %s выканана." + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "Што вы маеце рабіць наступным?" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "_Нічога, Я ўвайду на канал пазней." + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "_Увайсці на канал:" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Калі вы ведаеце імя канала для ўваходу, увядзіце яго тут." + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "" + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "_Заўсёды паказваць гэты дыялог пасля злучэння." + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "Дыялог з" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Тэма для %s : %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "Ніякай тэмы не ўсталявана" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "Гэты сервер мае %d адкрытых каналаў ці дыялогаў. Ці закрыць іх усе?" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "" + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "" + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "Пакіньце ўласцівасць ці код колеру" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>Тлусты</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>Падкрэслены</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "Звычайны" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "Колеры 0-7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "Колеры 8-15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "_Закрыць" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "Абмежаванне карыстальніка павінна быць лічбай!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "Няма вонкавых паведамленняў" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "Ахова тэмы" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "Толькі па запрашэннях" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "Мадэраваны" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "Спіс забарон" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Ключавое слова" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "Абмежаванне карыстальніка" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Увядзіце новую мянушку:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "" + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "" + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "" + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Вузел невядомы" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Невядома" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Сапраўднае імя:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "Карыстальнік:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "Краіна:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "Сервер:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "%u хвілін таму" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "Апошняе паведамленне:" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "Паведамленне адыходу:" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "Адкрыць спасылку ў браўзеры" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "Капіяваць пазначаную спасылку" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Увайсці на канал" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "Выйсці з канала" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "Каналы па кругу" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "Адказы CTCP - Спецыянальныя кады::\n\n%d = данні (ctcp цалкам)\n%e = назва бягучага сеціва\n%m = інфармацыя пра машыну\n%s = мянушка таго, хто даслаў ctcp\n%t = час/дата\n%2 = слова 2\n%3 = слова 3\n&2 = слова 2 ад канцу радка\n&3 = слова 3 ад канцу радка\n\n" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "Замяніць" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "_Новы" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "_Выйсці" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "Пра_гляд" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "Кнопкі рэжыму" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "Укладкі" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "Дрэва" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "Вымярэнне сеціва" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Выкл" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "Графік" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "_Сервер" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "_Разлучыцца" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "_Перадалучыцца" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "_Меню карыстальніка" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "Наладкі" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "_Асаблівасці" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "Акно" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "Скінуць маркер" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "А_чысціць тэкст" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "_Дапамога" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "_Змест" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "Аб праграме" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Імя" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Апошні прагляд" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "Разлучаны" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Ніколі" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "%d хвілін таму" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "Злучаны" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "Увядзіце мянушку:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "Абвяшчаць у гэтых сецівах:" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "Прымаецца спіс сеціваў, падзеленых коскамі." + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "Пачаць дыялог" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "_Міргаць пры" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "Канальным паведамленні" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "Асабістым паведамленні" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "Падсвечаным паведамленні" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Версія" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Апісанне" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Выберыце плагін ці скрыпт для загрузкі" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "_Загрузіць" + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "Захаваць як..." + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Новае сеціва" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Сапраўды выдаліць сеціва \"%s\" і ўсе яго серверы?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "_Рэдагаваць" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "Злучацца толькі з абранымі серверамі" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Не зацыклівацца на серверах, калі злучэнні абрываюцца" + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "Ужываць SSL для ўсіх сервераў у гэтым сеціве" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "Выкарыстоўваць глабальная звесткі" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "_Мянушка" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "Другі выбар" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "Сапраўднае _імя" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "_Імя карыстальніка" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Пароль:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "Знаказбор:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "Звесткі аб карыстальніку" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "Трэці выбар" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Сецівы" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "Не паказваць спіс сервераў пры старце" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "_Змяніць..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "_Упарадкаваць" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "_Злучыцца" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Албанія" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Азербайджан" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Беларусь" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Баўгарыя" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Эстонія" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "Індыя" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Малайзыя" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Тайланд" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "В'етнам" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Агульнае" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Шрыфт:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "Каляровыя мянушкі" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "Пазначыць кожнай персоне розны колер" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "Рабіць водступ перад мянушкамі" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "Выраўняць мянушкі па правым краі" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "Паказваць маркер" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "Устаўляць чырвоную лінію пасля апошняга прагледжанага тэксту" + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Фонавая выява:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "Параметры празрыстасці" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "" + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "" + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "Апошнесказаны парадак " + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "Праверка правапісу" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "Дапаўненне мянушак" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "Суфікс дапаўнення мянушак" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "Дапаўненне сартавана" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "" + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "Не сартаваць" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Верх" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Ніз" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Схаваць" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "Спіс карыстальнікаў" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "Паказваць імёны хастоў у спісе карыстальнікаў" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "Шрыфт і колер як у тэкставым акне" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "Сартаваць спіс карыстальнікаў па:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "На каналах менш за" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "Рэакцыя на падвоены націск мышы" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Вокны" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Укладкі" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "Заўсёды" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "Толькі запрошаныя ўкладкі" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "Адкрываць дадатковыя ўкладкі для паведамленняў сервера (message)" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "Адкрываць новую ўкладку для атрымання асабістага паведамлення" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "Сартаваць укладкі ў алфавітным парадку" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "Фокус на новыя ўкладкі:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "Скарачаць укладкі да:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "знакаў" + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "Укладкі ці вокны:" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "Адкрываць каналы ў:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "Адкрываць дыялогі ў:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "Адкрываць сродкі ў:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Адкрываць DCC, Ігнараванне, Абвяшчэнні і г.д. ва ўкладках ці вокнах?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "Файлы і тэчкі" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "Аўтаматычна згаджацца з прапановамі файлаў" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Спампоўваць файлы ў:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "Перамяшчаць завершаныя файлы ў:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "Захоўваць мянушкі ў імёнах файлаў" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "Аўтаматычна адкрываць вокны DCC" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "Акно дасылкі" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "Акно атрымання" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "Акно размовы" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "Адно запампоўванне:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "Найвялікшая хуткасць для адной перадачы" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "Адно спампоўванне:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "Усе запампоўванні:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "Найвялікшая хуткасць" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "Усе спампоўванні:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "Тэрміновыя паведамленні" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "Міргаць сподкавай значкай пры:" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "Міргаць сподкам пры:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "Паведаміць піскам пры:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "Задзейнічаць значку ў сістэмным сподку" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "" + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "Падсвечаныя паведамленні" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Падсвечваць паведамленні, дзе згадана ваша мянушка і:" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "Дадатковыя словы для падсветкі:" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "Мянушкі, тэкст ад якіх не падсвечваць" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "Мянушкі, тэкст ад якіх заўжды падсвечваць" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "Прадвызначаныя паведамленні" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "Выхад:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "Выйсці з канала: " + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "Адыйсці:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "Адыход" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Паказваць \"Адышэдшы\" толькі адзін раз" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "Аўтаматычна здымаць статус \"Адышэдшы\"" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "" + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "Паказваць рэжымы ў чыстым выглядзе " + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "Схаваць паведамленні аб уваходзе і адыходзе" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "Затрымка паміж спробамі злучыцца" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Журнал" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "Лініі пракруткі:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "Імя файла журналу:" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "(%s=Сервер %c=Канал %n=Сеціва)." + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "Устаўляць адзнакі часу ў журнал" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "Фармат адзнакаў часу:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URL" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(Адключана)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "Ваш адрас" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "Ужываць адрас:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "Карысна толькі для кампутараў з некалькімі адрасамі." + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "Атрымаць мой адрас ад IRC-сервера" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "Запытаць IRC-сервер аб вашым сапраўдным адрасе. Выкарыстоувайце, калі вы маеце адрас кшталту 192.168.*.*!" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "DCC IP адрас:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "Абвяшчаць аб гэтым адрасе пры прапанове файлаў." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "!Пакіньце парты нулявымі для поўнага дыяпазону." + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "Проксі-сервер" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "Хост:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Порт:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Тып:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "Выкарыстоўваць проксі для:" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "Спраўжванне на проксі" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "Імя карыстальніка:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "Абярыце файл выявы" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "Абярыце тэчку для спамповак" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Абярыце шрыфт" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Агляд.." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "Адкрыць тэчку данніх" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Вылучце колер" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "Колеры тэксту" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "Колеры mIRC:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "Лакальныя колеры:" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Колер літар:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Фон:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "Колеры інтэрфейсу" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "Новыя дадзеныя:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "Лінія-адзнака:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "Новае паведамленне:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "Адышэдшы карыстальнік:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "Падсветка:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Падзея" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "Гукавы файл" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "Абярыце гукавы файл" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "Гукавы файл:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "_Знайсці..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "_Граць" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Інтэрфейс" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Акно ўводу" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Спіс карыстальнікаў" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Колеры" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Размовы" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "Адмысловыя" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Сеціўныя наладкі" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Абмен файламі" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Катэгорыі" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "Вы не можаце размясціць дрэва ўверсе ці ўнізе!\nСпачатку змяніце Асяроддзе на <b>Ўкладкі</b> ў меню <b>Прагляд</b>." + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "" + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Некаторыя наладкі будуць зменены толькі пасля рэстарту." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*УВАГА*\nАўтапрыманне DCC у вашу хатнюю тэчку ёсць\nнебяспечным і можа быць выкарыставана, напрыклад,\nнехта можа даслаць вам .bash_profile" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "" + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "Узнікла памылка пры апрацоўцы радка" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Гэты сігнал прымае толькі %d аргументаў, $%d няправільны" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "Друкаваць тэкставы файл" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ Лічба" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Рэдагаваць падзеі" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "Загрузіць з..." + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Праверыць усё" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Ачысціць спіс" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Капіяваць выбраны URL" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Капіяваць" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Захаваць спіс у файл" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d апер, %d усяго" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "Адкрыць URL, irc://server:port/channel" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "" diff --git a/hexchat/po/bg.po b/hexchat/po/bg.po new file mode 100644 index 0000000..02f2f41 --- /dev/null +++ b/hexchat/po/bg.po @@ -0,0 +1,6256 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# n0kS Phr33d0m <shibam@v-gz.cz.cc>, 2012 +# Rostislav Raykov <zbrox@i-space.org>, 2005 +# n0kS Phr33d0m <shibam@v-gz.cz.cc>, 2012 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-03 20:10+0000\n" +"Last-Translator: TingPing <tingping@tingping.se>\n" +"Language-Team: Bulgarian (http://www.transifex.com/hexchat/hexchat/language/bg/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: bg\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Зает съм" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Напускам" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Мрежа" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<няма>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Стая" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Чакам" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Активна" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Пропадна" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Готово" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Свързване" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Прекъснато" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "Няма достъп до %s\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Грешка" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s ви предлага \"%s\". Приемате ли?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "Няма активни DCC-та\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Даване на операторски статус" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Взимане на операторски статус" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "Даване на Voice статус" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "Взимане на Voice статус" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Изхвърляне/Забрана" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Изхвърляне" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "Забрана" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "Изхвърляне и Забрана" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Напускане на стаята" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Влизане в стая ..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "Въведете име на стая:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Сървърни връзки" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Пингване на сървър" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Скриване на версията" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Даване на оп. статус" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "Взимане на оп. статус" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "чао" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Причина за изхвърлянето на %s:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "Разговор" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "Кой е ...?" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Изпращане" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Разговор" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Изчистване" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Пинг" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "" + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* Да влизате в IRC като root е ГЛУПАВО! Направете си\n потребител и използвайте него.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "ДА" + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "НЕ" + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Вие сте CTCP flood-нати от %s, игнорира се %s\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s онлайн\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s офлайн\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Не сте влезли в стая. Опитайте с /join #<стая>\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Не сте свързани. Опитайте с /server <хост> [<порт>]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "Сървърът %s вече съществува в мрежата %s.\n" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "Добавен сървър %s към мрежа %s.\n" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Вече сте маркиран като отсъстващ: %s\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "Вече сте маркиран като завърнал.\n" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "Нужен е /bin/sh, за да се изпълни!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "Налични команди:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "Дефинирани команди от потребителя:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "Дефинирани команди от добавки:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Напишете /HELP <команда> за повече информация, или /HELP -l" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Непознатия аргумент '%s' се игнорира." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "" + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "Няма намерен такъв плъгин.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "Този плъгин не иска да се отзарежда.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <име> <действие>, добавя бутон под списъка с потребители" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <команда>, изпраща команда към всички присъединени стаи" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <команда>, изпраща команда към всички сървъри, към които сте свързан" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "BACK, маркира ви като завърнал (не отсъстващ)" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "" + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY <код>, намира код на страна, пример: au = Австралия" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <име>, изтрива бутон от тези, които са под списъка с потребителите" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, прекъсва връзката към сървъра" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <текст>, Принтира текст в прозореца" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <ник>, давате half-op статус на ник (нужен е op статус)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <парола>, идентифицира Ви към nickserv" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <стая>, влизане в дадена стая" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, пуска нова проверка на забавянето на репликите" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <действие>, изпраща действието към текущата стая (действията трябва да са в трето лице. пример: /me скача)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, масово дава операторски статус на всички потребители в дадената стая (изисква същия статус)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <хост/IP> [<порт>]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <прякор>, настройва прякора ви" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <прякор>, дава операторски статус на прякора (изисква същия статус)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<стая>] [<причина>], напуска стаята, по подразбиране текущата" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <прякор | стая>, CTCP пинг към прякор или стая" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "" + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<причина>], разкача се от текущия сървър" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <текст>, праща текста в чиста форма към сървъра" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <текст>, праща текста към обекта в текущия прозорец" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <ник> [<файл>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <хост> <порт> <стая>, свързва се и влиза в стая" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <хост> <порт> <стая>, свързва се и влиза в стая" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <хост> [<порт>] [<парола>], свързва се със сървър, стандартния порт е 6667" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<тема>], настройва темата ако е дадената такава, ако не-показва текущата" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <маска> [<маска>...], маха забраната от избраните маски" + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <име>, отзарежда плъгин или скрипт" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "" + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, отваря URL-то в браузъра ви" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <прякор>, дава статуса \"voice\" на някой (изисква операторски статус в стаята)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <съобщение>, изпраща съобщението до всички канали" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <съобщение>, изпраща съобщение до всички оператори в текущата стая" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "Употреба: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nНяма налична помощ за тази команда.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "Няма такава команда.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "Грешни аргументи за потребителската команда.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "Прекалено много рекурсивни потребителски команди, прекъсва се..." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Сигурни ли сте, че това е SSL сървър и правилния порт?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "Не може да се разбере името на хоста %s\nПроверете вашите IP настройки!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "Пренасянето към проксито пропадна.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Минава се към следващия сървър в %s...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "Внимание: Кодовата таблица \"%s\" е непозната. Няма да има преобразуване за мрежата %s." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "" + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "" + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%UСтая Потребители Тема" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "" + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "" + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "" + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "" + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "" + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "" + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "" + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "" + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "" + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "" + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "" + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "" + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tСписъка с приятелчета е празен." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "" + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "" + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "" + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "" + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** КРАЙ НА ЗАПИСВАНЕ НА РАЗГОВОРА В %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** НАЧАЛО НА ЗАПИСВАНЕ НА РАЗГОВОРА В %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "Ляво съобщение" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "Дясно съобщение" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "IP адрес" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Потребителско име" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "Прякора на човека, който влиза" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "Стаята, в която се влиза" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "Хоста на човека" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Прякор" + +#: src/common/text.c:980 +msgid "The action" +msgstr "Действието" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "" + +#: src/common/text.c:987 +msgid "The text" +msgstr "Текстът" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "Съобщението" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Име на сървъра" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Стар прякор" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Нов прякор" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "Прякорът на човека, който смени темата" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Тема" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "Прякора на човека, който е изхвърлил някой" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "Човека, който е бил изхвърлен от стаята" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "Стаята" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "Причината" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "Прякорът на човека, който излиза" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "Времето" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "Създателят" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Прякор" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Причина" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Хост" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "От кой е" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "Времето във х.х формат (вижте долу)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "Стаята, към която отива" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "Звукът" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "Прякорът на човека" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "CTCP събитието" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "Прякорът на човека, който е поставил ключа" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "Ключът" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "Прякора на този, който е настроил лимита" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "Лимитът" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "Прякорът на човека, който е дал операторския статус" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "Прякорът на човека, който е получил операторски статус" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "Прякорът на човека, който е получил полу-операторски статус" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "Прякора на човека, който е дал полу-операторския статус" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "Прякора на човека, който е дал статус \"Voice\"" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "Прякора на човека, който е получил статус \"Voice\"" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "Прякора на този, който е сложил забраната" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "Маската на забраната" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "Прякорът, който е премахнал ключа" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "Прякорът, който премахва лимита" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "Прякорът на човека, на който му е бил взет операторския статус" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Прякорът на човека, на който му е бил взет полу-операторския статус" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "Прякорът на човека, на който е бил взет статус \"Voice\"" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "Маската на exempt статуса" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "Прякорът на човека, който е отправил поканата" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "Маската за поканата" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "Прякорът на човека, който е махнал поканата" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "Прякорът на човека, който е настроил режима" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "Знакът на режима (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "Буквата на режима" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "Стаята, за която се настройва" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Пълно име" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Информация за сървъра" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Време без активност" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Време на влизане" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Причина за отсъствието" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Съобщение" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Абонамент" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "истински потребител@хост" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "Истинско IP" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Име на стаята" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Текст" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Прякора на този, който ви е поканил" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Потребители" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "Прякора е зает" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Опитва се с този прякор" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Порт" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "DCC Вид" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Име на файла" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Име, под което да се запази файла" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Позиция" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Размер" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "DCC низ" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "Брой на обектите за уведомяване" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Старо име на файла" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Ново име на файла" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Получател" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Хостмаска" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Име на хоста" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "Пакетът" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "Секунди" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "Прякор на човека, който е поканен" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Маска на забраната" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "Кой е настроил бана" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Време на забраната" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "Звуковият файл не може да бъде прочетен:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "Връзката отказана" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "Няма път то хоста" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Връзката се разпадна (Connection timed out)" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "Не може да се назначи този адрес" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Андора" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "ОАЕ" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Афганистан" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Атигуа и Барбуда" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Ангила" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Албания" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Армения" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Холандски антили" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Ангола" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Антарктика" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Аржентина" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Американска Самоа" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Австрия" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "НАТО" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Австралия" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Аруба" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Азербайджан" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Босна и Херцеговина" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Барбадос" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Бангладеш" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Белгия" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Буркина Фасо" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "България" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Бахрейн" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Бурунди" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "Бизнеси" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Бенин" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Бермуда" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Бруней Дарусалам" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Боливия" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Бразилия" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Бахамите" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Бутан" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Острови Буве" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Ботсвана" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Беларус" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Белиз" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Канада" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Кокосови острови" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "Демократична република Конго" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "Централна Африканска Република" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Конго" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "Швейцария" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "Кот Д'Ивоар" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Островите Кук" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Чили" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Камерун" + +#: src/common/util.c:738 +msgid "China" +msgstr "Китай" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Колумбия" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Интерник Комерсиален" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Коста Рика" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "Сърбия и Черна гора" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Куба" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Капе Верде" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Коледния остров" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Кипър" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "Чехия" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Германия" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Джибути" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Дания" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Доминика" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "Доминиканската република" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Алжир" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Еквадор" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Образователна институция" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Естония" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Египет" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Задана сахара" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Еритрея" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "Испания" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Етиопия" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Финландия" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Фиджи" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Фолкландските острови" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Микронезия" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Фарьорските острови" + +#: src/common/util.c:770 +msgid "France" +msgstr "Франция" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Габон" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Великобритания" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Гренада" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Грузия" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Френска Гвиана" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "О-ви при Британския канал" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Гана" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Гибралтар" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Гренландия" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Гамбия" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Гвинея" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Правителствен" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Гваделупа" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Екваториалня Гвинея" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Гърция" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Св. Джорджия и Св. Сандичеви о-ви" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Гватемала" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Гуам" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Гвинея-Бисау" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Гияна" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Хонг Конг" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Хърд и Макдоналдови о-ви" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Хондурас" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Хърватска" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Хаити" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Унгария" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Индонезия" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Ирландия" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Израел" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "" + +#: src/common/util.c:801 +msgid "India" +msgstr "Индия" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "Информационен" + +#: src/common/util.c:803 +msgid "International" +msgstr "Международен" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Британска територия в Индийския океан" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Ирак" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "Иран" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Исландия" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Италия" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Ямайка" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Йордания" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Япония" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Кения" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Киргистан" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Камбоджа" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Кирибати" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Коморос" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "Св. Китс и Невис" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Северна Корея" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Южна Корея" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Кувейт" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Каймановите острови" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Казакстан" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Лаос" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Ливан" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Св. Лучия" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Лихтенщайн" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Шри Ланка" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Либерия" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Лесото" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Литва" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Люксембург" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Латвия" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Либия" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Мароко" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Монако" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Молдова" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "Медицински САЩ" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Мадагаскар" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Маршаловите острови" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Военен" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Македония" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Мали" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Мианмар" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Монголия" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Макао" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Северни Мариански острови" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Мартиника" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Мавритания" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Монсера" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Малта" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Маврициус" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Малдивите" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Малави" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "Мексико" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Малайзия" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Мозамбик" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Намибия" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Нова Каледония" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Нигер" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Мрежата на InterNIC" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Норфолксите острови" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Нигерия" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Никарагуа" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Холандия" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Норвегия" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Непал" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Науру" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "Нова Зеландия" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Оман" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "InterNIC огранизация с идеална цел" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Панама" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Перу" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Френска полинезия" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Папуа Нова Гвинея" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Филипините" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Пакистан" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Полша" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "Св. Пиер и Микелон" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Пуерто Рико" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "Палестински територии" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Португалия" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Палау" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Парагвай" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Катар" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Reunion" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Румъния" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "Old School ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Руската федерация" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Руанда" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Саудитска Арабия" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Соломоновите острови" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Сейшелските острови" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Судан" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Швеция" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Сингапур" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "Св. Елена" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Словения" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "О-ви Свалбард и Ян Майен" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "Словакия" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Сиера Леоне" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "Сан Марино" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Сенегал" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Сомалия" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Суринам" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "Сао Томе и Принцип" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Бившият СССР" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "Ел Салвадор" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Сирия" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Свазиленд" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Турски и Кайко о-ви" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Чад" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "Френски южни територии" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Того" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Тайланд" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Таджикистан" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "Токелау" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Източен Тимор" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Туркменистан" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Тунис" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Тонга" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Турция" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Тринидад и Тобаго" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Тувалу" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Тайван" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Танзания" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Украйна" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Уганда" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Обединеното Кралство" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "САЩ" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Уругвай" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Узбекистан" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Ватикана" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "Св. Винсент и гренадините" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Венецуела" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "Британските Вирджински острови" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "Американските Вирджински острови" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Виетнам" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Вануату" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "Wallis and Futuna Islands" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Самоа" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Йемен" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Майот" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Югославия" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Южна Африка" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Замбия" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Зимбабве" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Таблица със символи" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "Забрана" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Покана" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "" + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "Трябва да изберете някои забрани." + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Маска" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "От" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Дата" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Премахване" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Изрязване" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Опресняване" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "" + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Изберете изходно файлово име" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Име на стаята" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Търсене:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Изпращане на файл на %s" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "Приемането на файла не може да бъде продължено." + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "Няма достъп до файл: %s\n%s.\nПродължаването не възможно." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "Файлът в папката за сваляне и по-голям от предлагания файл. Продължаването не е възможно." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "Не може да се продължава същия файл от различни хора." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Статус" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Файл" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "И двете" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Прекъсване" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Приемане" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Продължаване" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "" + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Изпратено" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Изтриване" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Отмяна" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Запазване" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "Изпълнение на команда:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "Неуспех при отваряне на шрифта:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "Буфера за търсенето е празен.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d байта" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "Тази команда премества избрания таб с една позиция на ляво" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "Тази команда премества избрания таб с една позиция на дясно" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "Тази команда премества избраната група табове на ляво" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "Тази команда премества избраната група табове надясно" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "Внасяне на реда написан в полето за писане в историята, но без да се изпраща на сървъра" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "Не може да се пише в този файл." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "Не може да се чете от този файл." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "Тази маска вече съществува." + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Частен" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Уведомяване" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "Махане на игнорирането" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "Въведете маската, която да се игнорира:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Статистика за игнорирането:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Стая:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Частен:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Уведомяване:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Покана:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "" + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "" + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "" + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "" + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "" + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "" + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "Разговор с" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Темата на %s е: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "Няма настроена тема" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "" + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "" + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "Затваряне" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "Лимита на потребители трябва да е номер!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "Без външни съобщения" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "Защита на темата" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "Само с покана" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "Модериран" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "Списък със забранени потребители/адреси" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Ключова дума" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "Потребителски лимит" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Въведете нов прякор:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "" + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "" + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "" + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Непознат хост" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Непознат" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Влизане в стая" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "Напускане на стаята" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "Излизане и влизане в стаята" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Изкл." + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "Графа" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "Сървър" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "Настройки" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "Прозорец" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "Зануляване на отбелязващата линия" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "Изчистване на текста" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "Помощ" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "_Потребителско ръководство" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "_Относно" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Име" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Последно видян" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "Не е на линия" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Никога" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "На линия" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "Въведете прякор за добавяне:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Версия" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Описание" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Избор на плъгин или скрипт за зареждане" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "Зареждане..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "" + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Нова мрежа" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Наистина ли да се изтрие мрежата \"%s\" и всичките и сървъри?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "_Редактиране" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "Свързване САМО към избрания сървър" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Да не се пробват един по един сървърите, ако връзката пропада." + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "Използване на SSL за всички сървъри от тази мрежа" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "Използване на глобална потребителска информация" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "Прякор:" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "Втори избор:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "Истинско име:" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "Потребител:" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Парола:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "Кодиране:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "Потребителска информация" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "Трети избор:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Мрежи" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "_Редактиране..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "_Подреждане" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "Свързване" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Албания" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Азербайджан" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Беларус" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "България" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Естония" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "Индия" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Малайзия" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Тайланд" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Виетнам" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Общи" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Шрифт:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "Цветни прякори" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "Всеки прякор да има назначен различен цвят" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "Прякорите да са подравнени в дясно" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "Показва маркиращата линия" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "Вмъкване на червена линия след последно прочетения текст" + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Изображение за фон:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "" + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "" + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "Довършване на прякорите" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "Допълнение след довършените прякори:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "" + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "Неподреден" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Горе" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Долу" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Скрит" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "Списък с потребители" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "Показва хостовете в списъка с потребители" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "Използване на шрифта и цветовете на полето за текста" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "Списък с потребителите сортиран по:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "В стаи по-малки от:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "Действие при двойно натискане" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Прозорци" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Табове" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "Винаги" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "Само изискани табове" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "Отваряне на допълнителен таб за сървърни съобщения" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "Подрежда табовете по азбучен ред" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "Фокусиране на новите табове:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "Скъсява табовете до:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "букви." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "Табове или Прозорци" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "Отваряне на стаи в:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "Отваряне на разговори в:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "Отваряне на инструментите в:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Отваряне на DCC, Игнориране, Списък с приятелчета и т.н. в отделни табове или прозорци?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "Файлове и папки" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Сваляне на файловете в:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "Преместване на завършените файлове в:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "Запазване на прякора в името на файла" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "Автоматично отваряне на DCC прозорци" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "Прозореца за изпращане на файлове" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "Прозореца за получване на файлове" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "Прозореца за разговори" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "Едно качване:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "Максимална скорост за един трансфер" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "Едно сваляне:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "Всички качвания комбинирано:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "Маскимална скорост за всички файлове" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "Всички сваляния комбинирано:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "Звукови уведомявания" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "" + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "Стандартни съобщения" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "Изход:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "Напускане на стая" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "Няма ме:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "\"Няма ме\"" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Показване на съобщението за липса само веднъж" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "Автоматично махане на статуса \"Няма ме\"" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "" + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "Показване на режимите в чиста форма" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "Скриване на кой влиза и излиза" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "Изчакване преди автоматично свързване:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Записване на разговори" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "Запазени редове назад:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "" + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "Вмъква времето на репликите\nв записаните разговори(логовете)" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "Формат на отбелязване на времето:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URL" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(изключено)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "Вашият адрес" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "Вързване към:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "" + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "Взимане на собствения адрес от IRC сървъра" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "Пита IRC сървъра за истинския ви адрес. Използвайте това ако имате адрес от вида 192.168.*.*!" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "DCC IP адрес:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "Заявяване, че сте на този адрес при изпращането на файлове" + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "" + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "Прокси сървър" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "Хост:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Порт:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Вид:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "Потребител:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "Избор на файл с Изображение" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Избор на шрифт" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Разглеждане..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Избор на цвят" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "Цветове за текста" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "Цветове на mIRC:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Цвят:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Фон:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "Цветовете на интерфейса" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "Нови данни:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "Отбелязваща линия:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "Ново съобщение:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "Липсващ потребител:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "Осветявания:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Събитие" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "Звуков файл" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "Избор на звуков файл" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "Звуков файл:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "_Разглеждане..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "_Изпълнение" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Интерфейс" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Поле за писане" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Списък с потребителите" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Цветове" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Разговаряне" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "Допълнителни" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Настройки на мрежата" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Файлови трансфери" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Категории" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "" + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Някои от променените настройки изискват рестартиране на програмата преди да влезнат в действие." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*ВНИМАНИЕ*\nАвтоматично приемане на DCC във вашата домашна папка\nможе да бъде опасно и използваемо от други. Пример:\nНякой може да ви прати .bash_profile" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "" + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "Имаше грешка при обработването на низа" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "На този сигнал се подават само %d аргумента, $%d е невалиден" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "Разпечатване на текстов файл" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ Номер" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Редактиране на събития" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "" + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Тестване на всички" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Изчистване на списъка" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Копиране на избрания URL" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Копиране" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Запазване на списък във файл" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d оператора, %d общо" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "" diff --git a/hexchat/po/ca.po b/hexchat/po/ca.po new file mode 100644 index 0000000..d53d21f --- /dev/null +++ b/hexchat/po/ca.po @@ -0,0 +1,6260 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# David Planella Molas <david.planella@gmail.com>, 2007 +# Ernest Adrogué Calveras <eadrogue@gmx.net>, 2004,2007 +# NeoMahler <roc.humet@gmail.com>, 2015-2016 +# Robert Antoni Buj Gelonch <rbuj@fedoraproject.org>, 2017-2018 +# NeoMahler <roc.humet@gmail.com>, 2015 +# Softcatalà <info@softcatala.org>, 2001 +# Yannick Garcia <ygp@tinet.fut.es>, 2001 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-03 20:10+0000\n" +"Last-Translator: TingPing <tingping@tingping.se>\n" +"Language-Team: Catalan (http://www.transifex.com/hexchat/hexchat/language/ca/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ca\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "HexChat" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "Client IRC" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "HexChat és un client IRC extensible i fàcil d'utilitzar. Et permet unir-te a múltiples xarxes amb seguretat i parlar amb altres usuaris en privat o en canals utilitzant una interfície personalitzable. Fins i tot pots transferir fitxers." + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "HexChat té suport per: DCC, SASL, proxis, correcció d'escriptura, notificacions, registre, temes personalitzats i scripts en Python o Perl." + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "Finestra de xat principal" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "Xategeu amb altres persones en línia" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "MI;Xat;" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "hexchat" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "Obre el mode segur" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "Gestor de temes d'HexChat" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Ara estic ocupat" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Me'n vaig" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "OFF" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "ON" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "{unset}" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Xarxa" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<cap>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Canal" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Esperant" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Actiu" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Ha fallat" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Fet" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Connecta" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Avortat" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "No es pot accedir a %s\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Error" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s us està oferint «%s». Voleu acceptar-lo?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "No hi ha connexions DCC actives\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "_Obre una finestra de diàleg" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "Envia un _fitxer" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "Informació de l'_usuari (whois)" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "_Afegeix a la Llista d'amics" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "_Ignora" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "Accions d'operador" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Dóna l'estatus d'operador" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Treu l'estatus d'operador" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "Dóna l'estatus de veu" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "Treu l'estatus de veu" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Fes fora/Bandeja" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Fes fora" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "Bandeja" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "Fes fora i bandeja" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Deixa el canal" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Uneix-te al canal..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "Introduïu el canal per unir-vos:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Enllaços del servidor" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Ping al servidor" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Oculta la versió" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Op" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "adéu" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Introduïu el motiu per a fer fora a %s:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "Envia un fitxer" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "Diàleg" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Envia" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Xat" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Neteja" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "No tens permís d'escriptura a %s. No es pot desar res d'aquesta sessió." + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* L'execució d'IRC com a root és estúpid! Hauríeu de crear\n  un compte d'usuari i utilitzar-lo per identificar-vos.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "SÍ " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "NO " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Esteu sent bombardejat amb peticions CTCP des de %s, s'ignorarà %s\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "Esteu sent bombardejat amb missatges de %s, s'estableix l'opció gui_autoopen_dialog OFF.\n" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "Resolt a %s" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "No trobat" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "S'ha resolt a:" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "S'està buscant %s..." + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s connectat\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s no connectat\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "No esteu a cap canal. Proveu amb /join #<canal>\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "No connectat. Proveu amb /server <amfitrió> [<port>]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "El servidor %s ja existeix a la xarxa %s.\n" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "Afegit el servidor %s a la xarxa %s.\n" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Ja està marcat com a absent: %s\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "Ja està marcat com he tornat.\n" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "Es necessita /bin/sh per a executar-lo!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "Ordres disponibles:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "Ordres definides per l'usuari:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "Ordres definides pels connectors:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Per a més informació teclegeu /HELP <ordre>, o /HELP -l" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "S'ignorarà l'argument desconegut «%s»." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "El silenciament no està admès per aquest servidor." + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "No s'ha trobat tal connector.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "Aquest connector refusa ser descarregat.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <nom> <acció>, afegeix un botó a sota de la llista d'usuaris" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "ADDSERVER <NovaXarxa> <nouservidor/6667>, afegeix una xarxa nova amb un servidor nou a la llista de xarxes" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <cmd>, envia una ordre a tots els canals on estigueu" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "ALLCHANL <cmd>, envia una ordre a tots els canals del servidor actual" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <cmd>, envia una ordre a tots els servidors on estigueu" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "AWAY [<motiu>], us estableix com a absent (utilitzeu /BACK per desestablir-ho)" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "BACK, us estableix com a he tornat (no absent)" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <mask> [<bantype>], bandeja tots els usuaris que coincideixin amb la màscara. Si ja es troben al canal amb això no els fareu fora (requereix chanop)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <variable> [<valor>]" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "CHARSET [<encoding>], obtén o estableix la codificació utilitzada per la connexió actual" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "CLEAR [ALL|HISTORY|[-]<amount>], neteja el text actual de la finestra o l'historial d'ordres" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "CLOSE [-m], tanca la pestanya actual, amb el tancament de la finestra si aquesta és l'única pestanya oberta, o amb l'indicador \"-m\", tanca tots els missatges." + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <codi|comodí>, troba un codi de país, p. ex.: au = Austràlia" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <sobrenom> <missatge>, envia el missatge CTCP al sobrenom indicat, els missatges més comuns són VERSION i USERINFO" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "CYCLE [<canal>], abandona el canal actual o especificat i immediatament torna a unir-se" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <sobrenom> - accepta un fitxer ofert\nDCC SEND [-maxcps=#] <sobrenom> [fitxer] - envia un fitxer a algú\nDCC PSEND [-maxcps=#] <sobrenom> [fitxer] -envia un fitxer utilitzant el mode passiu\nDCC LIST - mostra la llista DCC\nDCC CHAT <sobrenom> - ofereix un xat DCC a algú\nDCC PCHAT <sobrenom> - ofereix un xat DCC utilitzant el mode passiu\nDCC CLOSE <tipus> <sobrenom> <fitxer> exemple:\n/dcc close send johnsmith fitxer.tar.gz" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <sobrenom>, treu l'estatus de semioperador de canal del sobrenom indicat al canal actual (requereix chanop)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <nom>, elimina un botó de sota la llista d'usuaris" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <sobrenom>, treu l'estatus d'operador del canal al sobrenom indicat (requereix chanop)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <sobrenom>, treu l'estatus de veu al sobrenom indicat (requereix chanop)" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, Desconnecta del servidor" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "DNS <sobrenom|amfitrió|ip>, resol una IP o nom d'amfitrió" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "DOAT <canal,llista,/xarxa> <ordre>" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <text>, Imprimeix localment el text" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <ordre>, executa l'ordre. Si utilitzeu l'indicador -o s'enviarà la sortida cap al canal actual, si no es mostrarà al quadre de text actual" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, envia un senyal SIGCONT al procés" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9], mata un procés que s'estigui executant en la sessió actual. Si es dóna -9, el senyal serà SIGKILL" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, envia un senyal SIGSTOP al procés" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, envia dades a l'stdin dels processos" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "EXPORTCONF, exporta els paràmetres d'HexChat" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, neteja la cua d'enviaments al servidor actual" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <amfitrió> [<port>], servidors intermediaris a través d'un amfitrió, el port per defecte és el 23" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <sobrenom> [contrasenya], mata un sobrenom fantasma" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <sobrenom>, dóna l'estatus de semioperador de canal al sobrenom indicat (requereix chanop)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <contrasenya>, us identificarà al servidor de sobrenoms" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <màscara> <tipus..> <opcions..>\n màscara - màscara d'amfitrió a ignorar, p. ex.: *!*@*.pooles.rima-tde.net\n tipus - tipus de dades a ignorar, una de les següents o totes:\n PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n opcions - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <sobrenom> [<canal>], convida algú al canal, per defecte al canal actual (requereix chanop)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <canal>, s'uneix al canal" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "KICK <sobrenom> [motiu], expulsa el sobrenom del canal actual (requereix chanop)" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "KICKBAN <sobrenom> [motiu], bandeja i expulsa el sobrenom del canal actual (requereix chanop)" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, força una nova comprovació de desfasament" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "LASTLOG [-h] [-m] [-r] [--] <cadena>, cerca un text al registre\n Utilitzeu -h per ressaltar les cadenes trobades\n Utilitzeu -m per distingir entre majúscules i minúscules\n Utilitzeu -r si la cadena és una expressió regular\n Utilitzeu -- (doble guió) per marcar el final de les opcions quan se cerca una cadena, per exemple, '-r'" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <fitxer>, carrega un connector o script" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, Treu l'estatus a tots els semioperadors del canal en el canal actual (requereix chanop)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, Treu l'estatus a tots els operadors del canal en el canal actual (requereix chanop)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <acció>, anuncia una acció al canal actual (les accions s'escriuen en tercera persona, com ara /me salta d'alegria)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, Fa fora tots els usuaris del canal actual (requereix chanop)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, Dóna l'estatus d'operador a tots els usuaris en el canal actual (necessiteu ser operador del canal)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "MSG <sobrenom> <missatge>, envia un missatge privat, envia \".\" per enviar-lo a l'últim sobrenom o prefixa'l amb \"=\" per un xat dcc" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "NAMES [canal], Llista els usuaris que hi ha al canal actual" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <sobrenom> <missatge>, Envia un avís per CTCP" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <nom_amfitrió> [<port>]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <sobrenom>, estableix el vostre sobrenom" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "NOTICE <sobrenom/canal> <missatge>, envia una 'notice'" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [-n xarxa1[,xarxa2,...]] [<sobrenom>], mostra la vostra llista de notificacions o afegeix algú a ella" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <sobrenom>, dóna l'estat chanop al sobrenom (requereix chanop)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<canal>] [<motiu>], abandona el canal, per defecte és l'actual" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <sobrenom | canal>, envia un ping CTCP a l'usuari o canal indicat" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "QUERY [-nofocus] <sobrenom> [missatge], obre una nova finestra de missatge privat amb algú i, opcionalment, envia un missatge" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "QUIET <màscara> [<tipus de quiet>], silencia tots els que concorden amb la màscara al canal actual si el servidor ho admet." + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<motiu>], desconnecta del servidor actual" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <text>, envia el text «en cru» cap al servidor" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONENCT [-ssl] [<amfitrió>] [<port>] [<contrasenya>], Pot invocar-se sols amb /RECONNECT per així reconnectar-se al servidor actual o amb /RECONNECT ALL per a reconnectar-se a tots els servidors oberts" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONENCT [<amfitrió>] [<port>] [<contrasenya>], Pot invocar-se sols amb /RECONNECT per així reconnectar-se al servidor actual o amb /RECONNECT ALL per a reconnectar-se a tots els servidors oberts" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "RECV <text>, envia dades en cru a HexChat, com si haguessin set enviades des del servidor IRC" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "RELOAD <nom>, recarrega un connector o script" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <text>, envia el text a l'objecte a la finestra actual" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <sobrenom> [<fitxer>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <amfitrió> <port> <canal>, es connecta i uneix a un canal" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <amfitrió> <port> <canal>, connecta i uneix-te a un canal" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "SERVER [-ssl] <amfitrió> [<port>] [contrasenya>], connecta a un servidor, el port per defecte és 6667 per a les connexions normals, i 6697 per a les connexions ssl" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <amfitrió> [<port>] [<contrasenya>], connecta amb un servidor, el port per defecte és el 6667" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "SETCURSOR [-|+]<posició>, recol·loca el cursor a la caixa de text" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "SETTAB <nou nom>, canvia el nom de la pestanya, el límit tab_trunc s'aplica igualment" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "SETTEXT <nou text>, substitueix el text al quadre d'entrada" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<tema>], estableix o mostra el tema del canal actual" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <màscara> [<màscara>...], readmet els usuaris indicats al canal." + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <màscara> [QUIET]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <fitxer>, descarrega un connector o script" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "UNQUIET <màscara> [<màscara>...], treu el silenciament a les màscares especificades si el servidor ho admet." + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, obre un URL al vostre navegador" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "USELECT [-a] [-s] <sobrenom1> <sobrenom2> etc,, ressalta el(s) sobrenom(s) a la llista d'usuaris del canal" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <sobrenom>, dóna l'estat voice a algú (requereix chanop)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <missatge>, escriu un missatge a tots els canals" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <message>, envia un missatge a tots els operadors del canal actual" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "Ordre d'usuari per: %s\n" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "Sintaxi: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nNo hi ha ajuda disponible per a aquesta ordre.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "No existeix tal ordre.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "Els arguments per a l'ordre d'usuari no són vàlids.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "Massa ordres d'usuari recursives, s'avorta." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "%s: Ordre desconeguda. prova /help\n" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "No hi ha cap símbol hexchat_plugin_init; realment és un connector d'HexChat?" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "*\tError en iniciar el servidor identd: %s" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "IDENTD <port> <nom_usuari>" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "No hi ha cap temporitzador instal·lat.\n" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "%5d %8.1f %7d %s\n" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Esteu segur que aquest servidor permet l'ús de SSL i que el port és correcte?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "No s'ha pogut resoldre el nom d'amfitrió %s\nComproveu els vostres paràmetres IP\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "Ha fallat la connexió amb el servidor intermediari.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Passant al següent servidor de %s...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "Atenció: El joc de caràcters «%s» és desconegut. No es farà cap conversió per la xarxa %s." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "%C18*%O$t%C18$1%O s'ha afegit a la llista de notificacions." + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "%C22*%O$t%C22$1%O: %C18$2%O a %C24$4%O per %C26$3%O" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "%C22*%O$tNo pot unir-se a %C22$1 %O(%C20Esteu bandejat%O)." + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "%C29*%O$tCapacitats reconegudes: %C29$2%O" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "%C29*%O$tS'han suprimit les capacitats: %C29$2%O" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "%C23*%O$tCapacitats admeses: %C29$2%O" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "%C23*%O$tCapacitats sol·licitades: %C29$1%O" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "%C24*%O$t%C28$1%O és conegut com a %C18$2%O" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O estableix el bandejament a %C18$2%O" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "%C22*%O$tS'ha creat el canal %C22$1%O a %C24$2%O" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%UCanal Usuaris Tema" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "%C22*%O$t%C26$1%O estableix el mode %C24$2$3%O a %C22$4%O" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "%C22*%O$t%C26$1%O suprimeix la paraula clau del canal" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "%C22*%O$t%C26$1%O suprimeix el límit d'usuaris" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O estableix la paraula clau del canal a %C24$2%O" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O estableix el límit del canal a %C24$2%O" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O suprimeix el bandejament a %C18$2%O" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "%C22*%O$tURL del canal %C22$1%O: %C24$2" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "%C23*%O$tS'ha connectat. Ara s'està identificant." + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "%C23*%O$tS'està connectant a %C29$1%C (%C23$2:$3%O)" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "%C20*%O$tHa fallat la connexió (%C20$1%O)" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "%C24*%O$tS'ha rebut un so de CTCP %C24$1%C de %C18$2%C (a %C22$3%O)" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "%C24*%O$tDCC CHAT s'ha establert la connexió a %C18$1%C %C30[%C24$2%C30]%O" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "" + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$tDCC RECV s'ha establert la connexió a %C18$1 %C30[%O%C24$2%C30]%O" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "%C20*%O$tDCC RECV: No es pot obrir '%C23$1%C' per a l'escriptura (%C20$2%O)" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "" + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "%C24*%O$t%C18$1%C ha sol·licitat reprendre '%C23$2%C' del %C24$3%O." + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$tDCC SEND s'ha establert la connexió a %C18$1 %C30[%O%C24$2%C30]%O" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "" + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "" + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "%C24*%O$t%C18$1%O s'ha suprimit de la llista de notificacions." + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "%C20*%O$tDesconnectat (%C20$1%O)" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "%C24*%O$tS'ha trobat la vostra IP: %C30[%C24$1%C30]%O" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "%O%C18$1%O s'ha afegit a la llista d'ignorats." + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "" + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "%O%C18$1%O s'ha suprimit de la llista d'ignorats." + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "%OLa la llista d'ignorats està buida." + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "%C23*$t$1 ($3%C23) s'ha unit" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "%C22*%O$t%C26$1%C ha fet fora %C18$2%C de %C22$3%C (%C24$4%O)" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "%C19*%O$t%C19Heu estat morts per %C26$1%C (%C20$2%O)" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "" + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "%C23*%O$tNotifica: %C18$1%C està absent (%C24$2%O)" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "%C23*%O$tNotifca: %C18$1%C ha tornat" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tLa llista de notificacions està buida." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "%C16,17 Llista de notificacions" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "%C23*%O$t%C23$1%O usuaris a la llista de notificacions." + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "%C23*%O$tNotifcació: %C18$1%C està desconnectat (%C29$3%O)" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "%C23*%O$tNotifcació: %C18$1%C està connectat (%C29$3%O)" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "%C24*%O$tJa hi ha un procés en execució" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "%C24*$t$1 ha sortit ($2)" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "%C24*%O$t%C26$1%C estableix els modes %C30[%C24$2%C30]%O" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "%C24*%O$tS'està buscant el número IP per %C18$1%O..." + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "%C23*%O$tS'està autentificant a través de SASL com %C18$1%O (%C24$2%O)" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "%C29*%O$tConnectat." + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "%C29*%O$tS'està buscant %C29$1%O" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "%C22*%O$tEl tema per %C22$1%C és: $2%O" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "%C22*%O$tEl tema per %C22$1%C l'ha establert %C26$2%C (%C24$3%O)" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C20*%O$tAmfitrió desconegut. Potser l'heu escrit malament?" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "%C20*%O$tNo es pot unir a %C22$1%C (%C20S'ha assolit el límit d'usuaris%O)" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%C està absent %C30(%C23$2%O%C30)%O" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "%C23*%O$t%C28[%C18$1%C28] %OFinal de la llista WHOIS." + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "%C19*%O$tAra esteu parlant a %C22$2%O" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "%C20*%O$tAra se us coneix com a %C18$2%O" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "S'ha carregat el registre del" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** FINAL DEL REGISTRE A %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** INICI EL REGISTRE A %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "Missatge de l'esquerra" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "Missatge de la dreta" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "Adreça IP" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Nom d'usuari" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "El sobrenom de la persona que s'uneix" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "Canal al qual s'uneix" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "L'amfitrió de la persona" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "El compte de la persona" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Sobrenom" + +#: src/common/text.c:980 +msgid "The action" +msgstr "Acció" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "Caràcter de mode" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "Text identificat" + +#: src/common/text.c:987 +msgid "The text" +msgstr "Text" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "Missatge" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Nom del servidor" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "Capacitats reconegudes" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "Capacitats suprimides" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "Capacitats del servidor" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "Capacitats sol·licitades" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Sobrenom antic" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Sobrenom nou" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "Sobrenom de la persona que ha canviat el tema" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Tema" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "Sobrenom de qui l'ha fet fora" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "Persona expulsada" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "Canal" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "Motiu" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "Sobrenom de la persona que surt" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "Hora" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "Creador" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Sobrenom" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Motiu" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Amfitrió" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "De qui prové" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "Hora en format x.x (vegeu més avall)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "Canal de destinació" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "So" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "Sobrenom de la persona" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "Esdeveniment CTCP" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "Sobrenom de la persona que estableix la contrasenya" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "La contrasenya" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "El sobrenom de la persona que estableix el límit" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "Límit" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "Sobrenom de la persona que dóna l'estatus d'operador" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "Sobrenom de la persona a qui s'ha fet operador" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "Sobrenom de la persona a qui s'ha fet semioperador" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "Sobrenom de la persona que dóna l'estatus de semioperador" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "Sobrenom de la persona que dóna l'estatus de veu" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "Sobrenom de la persona a qui s'ha donat veu" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "El sobrenom de la persona que ha fet el bandejament" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "La màscara de bandejament" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "Sobrenom de qui ha eliminat la contrasenya" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "Sobrenom de qui ha eliminat el límit" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "Sobrenom de la persona a qui s'ha tret l'estatus d'operador" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Sobrenom de la persona a qui s'ha tret l'estatus de semioperador" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "Sobrenom de la persona a qui s'ha tret l'estatus de veu" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "El sobrenom de la persona que ha desfet el bandejament" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "Sobrenom de la persona que dóna l'estatus d'exempt" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "Màscara d'usuaris als quals es dóna l'estatus d'exempt" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "Sobrenom de la persona a qui s'ha eliminat l'exempció" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "Sobrenom de la persona que dóna l'estatus de convidat" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "Màscara de convidats" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "Sobrenom de la persona que ha tret l'estatus de convidat" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "Sobrenom de la persona que estableix el mode" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "Senyal del mode (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "Lletra del mode" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "Canal al qual s'estableix" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Nom complet" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Membre del canal/\"és un operador IRC\"" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Informació del servidor" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Temps inactiu" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Temps d'accés" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Motiu de l'absència" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Missatge" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Compte" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "usuari@amfitrió" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "IP real" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Nom del canal" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "Mecanisme" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Text" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Sobrenom de la persona que us ha convidat" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Usuaris" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "Sobrenom en ús" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Provant el sobrenom escollit" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Port" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "Cadena de modes" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "Tipus de DCC" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Nom del fitxer" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Nom del fitxer de destí" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "Ubicació" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Posició" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Mida" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "Cadena DCC" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "Motiu de l'absència" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "Nombre d'elements notificats" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Nom del fitxer antic" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Nom del fitxer nou" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Receptor" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Màscara d'amfitrió" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Nom d'amfitrió" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "Paquet" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "Segons" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "Sobrenom de la persona que ha estat convidada" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Màscara de bandejament" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "Qui ha establert el bandejament" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Duració del bandejament" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "No s'ha pogut llegir el fitxer de so:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "L'amfitrió remot ha tancat el sòcol" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "Connexió refusada" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "No hi ha cap encaminament a l'amfitrió" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "S'ha excedit el temps d'espera" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "No s'ha pogut assignar aquesta adreça" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "Connexió reiniciada des de l'altre costat" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "Illa Ascensió" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Emirats Àrabs Units" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Afganistan" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Antigua i Barbuda" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Albània" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Armènia" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Antilles Holandeses" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Antàrtida" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Argentina" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "DNS invers" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Samoa Americana" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Àustria" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "Camp de l'OTAN" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Austràlia" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "Illes Aland" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Azerbaitjan" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Bòsnia i Hercegovina" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Bangladesh" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Bèlgica" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Bulgària" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Bahrain" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "Negocis" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Benín" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Brunei Darussalam" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Bolívia" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Brasil" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Bahames" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Bhutan" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Illa Bouvet" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Bielorússia" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Canadà" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "Català" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Illes Cocos" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "República Democràtica del Congo" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "República Centreafricana" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Congo" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "Suïssa" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "Costa d'Ivori" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Illes Cook" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Xile" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Camerun" + +#: src/common/util.c:738 +msgid "China" +msgstr "Xina" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Colòmbia" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Internic Comercial" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "Sèrbia i Montenegro" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Cuba" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Cap Verd" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Illa Christmas" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Xipre" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "República Txeca" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Alemanya" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Djibouti" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Dinamarca" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Dominica" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "República Dominicana" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Algèria" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Equador" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Institució educativa" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Estònia" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Egipte" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Sàhara Occidental" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "Espanya" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Etiòpia" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "Unió Europea" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Finlàndia" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Fiji" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Illes Malvines" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Micronèsia" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Illes Faroe" + +#: src/common/util.c:770 +msgid "France" +msgstr "França" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Gran Bretanya" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Granada" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Geòrgia" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Guaiana Francesa" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "Illes del Canal Britànic" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Ghana" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Groenlàndia" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Gàmbia" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Institució governamental" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Guadalupe" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Guinea Equatorial" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Grècia" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Illes Geòrgia del Sud i Sandwich del Sud" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Guinea Bissau" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Guyana" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Illes Heard i McDonald" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Hondures" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Croàcia" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Haití" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Hongria" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Indonèsia" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Irlanda" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Israel" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "Illa de Man" + +#: src/common/util.c:801 +msgid "India" +msgstr "Índia" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "Informatiu" + +#: src/common/util.c:803 +msgid "International" +msgstr "Internacional" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Territori Britànic de l'Oceà Índic" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Iraq" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "Iran" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Islàndia" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Itàlia" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Jamaica" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Jordània" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "Treballs de l'empresa" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Japó" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Kenya" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Kyrgyzstan" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Cambodja" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Comoros" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "St. Kitts i Nevis" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Corea del Nord" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Corea del Sud" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Kuwait" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Illes Caiman" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Kazakhstan" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Líban" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Saint Lucia" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Libèria" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Lituània" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Luxemburg" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Letònia" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Líbia" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Marroc" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Mònaco" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Moldàvia" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "Servei mèdic dels Estats Units" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Madagascar" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Illes Marshall" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Institució militar" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Macedònia" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Mongòlia" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Macau" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "Dispositius mòbils" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Illes Marianes del Nord" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Martinica" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Mauritània" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Maurici" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "Museus" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Maldives" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "Mèxic" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Malàisia" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Moçambic" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Namíbia" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "Noms dels individus" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Nova Caledònia" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Níger" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Xarxa Internic" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Illes Norfolk" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Nigèria" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Països Baixos" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Noruega" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "Nova Zelanda" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "Organització Internic sense ànim de lucre" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Panamà" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Perú" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Polinèsia Francesa" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Papua Nova Guinea" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Filipines" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Polònia" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "St. Pierre i Miquelon" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Puerto Rico" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "Professions" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "Palestina" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Portugal" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Paraguai" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Qatar" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Reunion" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Romania" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "ARPAnet de l'antiga escola" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Rússia" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Rwanda" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Aràbia Saudita" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Illes Salomó" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Seychelles" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Sudan" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Suècia" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Singapur" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "St. Helena" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Eslovènia" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Illes Svalbard i Jan Mayen" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "República Eslovaca" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Somàlia" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Surinam" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "Sao Tomé i Príncipe" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Antiga URSS" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Síria" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Swazilàndia" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Illes Turks i Caicos" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Txad" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "Territoris Francesos del Sud" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Tailàndia" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Tadjikistan" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Timor Oriental" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Tunísia" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Turquia" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "Viatge i turisme" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Trinitat i Tobago" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Tanzània" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Ucraïna" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Regne Unit" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "Estats Units d'Amèrica" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Uruguai" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Uzbekistan" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Ciutat Estat del Vaticà" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "St. Vincent i les Granadines" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Veneçuela" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "Illes Verge Britàniques" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "Illes Verge Americanes" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "Illes Wallis i Futuna" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Iemen" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Iugoslàvia" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Sud Àfrica" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Zàmbia" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "No s'ha pogut establir connexió amb el bus de la sessió" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "accés remot" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "connector per a l'accés remot a través del DBUS" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "No s'ha pogut establir connexió amb el bus de la sessió: %s\n" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "No s'ha pogut adquirir %s: %s\n" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Taula de caràcters" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "Bandejaments" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Invitacions" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "Copia la màscara" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "%s el %s per %s" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "Copia l'entrada" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "No connectat." + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "Heu de seleccionar algun bandejament." + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "Esteu segur que voleu suprimir tots els ítems llistats a %s?" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "Tipus" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Màscara" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "Per" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Data" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Només podeu obrir la llista de bandejaments mentre esteu a la pestanya d'un canal." + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "Llista de bandejaments (%s) - %s" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Elimina" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Escurça" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Refresca" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Es mostren %d/%d usuaris en %d/%d canals." + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Seleccioneu un nom de fitxer" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "_Uneix-te al canal" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "Copia el nom del canal" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "Copia el text del _tema" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "Llista de canals (%s) - %s" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "_Cerca" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "_Baixa la llista" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "Desa la _llista..." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "Mostra només:" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "canals amb" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "a" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "usuaris." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "Mira a:" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Nom del canal" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "Tipus de cerca:" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "Cerca simple" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "Coincidència de patrons (comodins)" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "Expressió regular" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Cerca:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Envia un fitxer a %s" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "La transferència d'aquest fitxer no es pot reprendre." + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "No s'ha pogut accedir al fitxer: %s\n%s.\nNo es pot reprendre." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "El fitxer al directori de baixades és més gran que el fitxer ofert. No es pot reprendre." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "No es pot reprendre la recepció del mateix fitxer des de dues persones diferents." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "Pujades i baixades - %s" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Estat" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Fitxer" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Ambdós" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "Pujades" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "Baixades" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "Detalls" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "Fitxer:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "Adreça:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Avorta" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Accepta" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Reprèn" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "Obre la carpeta..." + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Rebut" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Enviat" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "Hora d'inici" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "Afegeix" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Suprimeix" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Cancel·la" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Desa" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "No t'autoconnectis als servidors" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "Utilitza un directori diferent de configuració" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "No autocarreguis cap connector" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "Mostra el directori d'autocàrrega de connectors o scripts" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "Mostra el directori de configuració de l'usuari" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "Obre un URL irc://servidor:port/canal?clau" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "Executa l'ordre:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "Obre un URL o executa una ordre en un HexChat existent" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Comença minimitza. Nivell 0=normal 1=iconificat 2=safata" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "nivell" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "Mostra la informació de la versió" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "No s'ha pogut obrir lletra:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "La memòria intermèdia de cerca està buida.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d octets" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "L'ordre ^BInsert in Buffer^B inserirà el contingut de Dades 1 a l'entrada on hàgiu premut la seqüència de tecles a la posició del cursor" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "L'ordre ^BSet Buffer^B col·loca el contingut de Dades 1 a l'objecte on heu premut la seqüència de tecles" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "L'ordre ^BLast Command^B col·loca l'última ordre executada a la línia - igual que prémer la fletxa amunt al shell" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "L'ordre ^BNext Command^B col·loca la següent ordre a la línia - igual que prémer la fletxa avall al shell" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "Aquesta ordre canvia el text de la línia per a completar un sobrenom o ordre incompleta. Si Dades 1 no està en blanc una doble tabulació seleccionarà l'anterior sobrenom i no el següent" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "Aquesta ordre desplaça amunt o avall la llista de sobrenoms. Si Dades 1 està en blanc es desplaçarà avall, i en cas contrari, amunt" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "Aquesta ordre cerca l'última paraula escrita a la llista de substitucions i la substitueix en cas de trobar-la" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "Aquesta ordre mou la pestanya davantera una posició cap a l'esquerra" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "Aquesta ordre mou la pestanya davantera una posició cap a la dreta" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "Aquesta ordre mou el conjunt de pestanyes actual cap a l'esquerra" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "Aquesta ordre mou el conjunt de pestanyes actual cap a la dreta" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "Introdueix la línia a l'historial però no l'envia al servidor" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "Hi ha hagut un error en carregar la configuració dels vincles de tecla" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "Dreceres de teclat - %s" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "No es pot escriure a aquest fitxer." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "Aquest fitxer no es pot llegir." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "Aquesta màscara ja existeix." + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Privats" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Avisos" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "Deixa d'ignorar" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "Esteu segur que voleu suprimir tots els ignorats?" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "Introduïu una màscara a ignorar:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "Llista d'ignorats - %s" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Estatus d'ignorat:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Canal:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privats:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Avisos:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Invitacions:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "Afegeix..." + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "El nom del canal és massa curt, torneu-ho a intentar." + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "Connexió completada - %s" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "S'ha completat la connexió a %s." + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "A la finestra de la llista de servidors, no heu introduït cap canal (sala de xat) per a l'autounió per a aquesta xarxa." + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "Què us agradaria fer a continuació?" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "_Res, m'uniré més tard a un canal." + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "_M'uneixo a aquest canal:" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Si coneixeu el nom del canal al que voleu unir-vos, introduïu-lo aquí." + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "O_bre la llista de canals." + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "La recuperació de la llista de canals pot trigar un minut o dos." + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "_Mostra sempre aquest diàleg després de connectar." + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "Diàleg amb" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "El tema per a %s és: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "No hi ha cap tema establert" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "Aquest canal encara té %d canals o diàlegs associats amb ell. Tancar-los tots?" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "Sortir d'HexChat?" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "No ho preguntis la pròxima vegada." + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Esteu connectat a %i xarxa(es) IRC." + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "Esteu segur que voleu sortir?" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "Encara estan actives algunes transferències de fitxers." + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "_Minimitza a la safata" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>Negreta</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>Subratllat</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "<i>Cursiva</i>" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "Normal" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "Colors 0-7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "Colors 8-15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "_Paràmetres" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "Enregistra a_l disc" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "_Recarrega el desplaçament cap enrere" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "_Oculta els missatges d'unions i abandonaments" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "Alertes _extres" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "Parpelleja la _icona de la safata" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "Parpelleja la _barra de tasques" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "_Separar" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "_Tanca" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "El límit d'usuaris ha de ser un número!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "Cap missatge de fora" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "Protecció del tema" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "Només convidats" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "Moderat" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "Llista de bandejaments" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Contrasenya" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "Límit d'usuaris" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Introduïu el nou sobrenom:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "No s'ha trobat cap resultat." + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "" + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "Ressalta-_ho tot" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "" + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "Expressió _regular" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Amfitrió desconegut" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "Compte desconegut" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Desconegut" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Nom real:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "Usuari:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "Compte:" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "País:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "Servidor:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "fa %u minuts" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "Últim missatge:" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "Missatge d'absència:" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "%d sobrenoms seleccionats." + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "Obre l'enllaç al navegador" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "Copia l'enllaç seleccionat" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Uneix-te al canal" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "Abandona el canal" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "Canvia de canal" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "Autouneix-te al canal" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "_Autoconnecta" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "Menú d'usuari - %s" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "Edita aquest menú" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "Recupera la llista de canals" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr " ha estat construït sense la compatibilitat per als connectors." + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "Botons de la llista d'usuaris: codis especials:\n\n%a = tots els sobrenoms seleccionats\n%c = el canal actual\n%e = el nom de la xarxa actual\n%h = el nom d'amfitrió del sobrenom seleccionat\n%m = la informació de la màquina\n%n = el vostre sobrenom\n%s = el sobrenom seleccionat\n%t = l'hora/data\n%u = els comptes dels usuaris seleccionats" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "Botons del diàleg: codis especials:\n\n%a = tots els sobrenoms seleccionats\n%c = el canal actual\n%e = el nom de la xarxa actual\n%h = el nom d'amfitrió del sobrenom seleccionat\n%m = la informació de la màquina\n%n = el vostre sobrenom\n%s = el sobrenom seleccionat\n%t = l'hora/data\n%u = els comptes dels usuaris seleccionats" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "Substitueix - %s" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "Substitueix amb" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "Gestor dels URL - %s" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "Botons de llista d'usuaris - %s" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "Botons de diàleg - %s" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "He_xChat" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "Lli_sta de xarxes" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "_Nou" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "Pestanya de servidor" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "Pestanya de canal" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "Finestra del servidor" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "Finestra de canals" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "_Carrega un connector o script" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "_Surt" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "_Visualitza" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "Barra de _menú" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "Barra de _tema" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "Llista d'_usuaris" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "Botons de llista d'u_suaris" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "Botons de m_ode" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "_Canviador de canal" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "Pes_tanyes" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "A_rbre" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "_Mètriques de xarxa" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Desactivat" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "Gràfic" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "_Pantalla completa" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "_Servidor" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "_Desconnecta" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "_Reconnecta" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "_Uneix-te a un canal" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "_Llista de canals" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "Menú d'_usuari" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "Conf_iguració" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "_Preferències" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "Botons de diàleg" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "Dreceres de teclat" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "Esdeveniments de text" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "Gestor dels URL" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "Ordres de l'usuari" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "Botons de llista d'usuaris" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "_Finestra" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "Llista de _bandejaments" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "Xat directe" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "_Transferències de fitxers" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "Llista d'amics" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "Llista d'ignorats" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "C_onnectors i scripts" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "_Registre en brut" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "Agafador dels _URL" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "Restableix la línia de separació" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "Mou a la línia de separació" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "_Copia la selecció" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "_Neteja el text" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "Desa el text" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "Cerca" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "Cerca el text" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "Cerca el següent" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "Cerca l'anterior" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "_Ajuda" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "_Contingut" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "_Quant a" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "_Adjunta" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Nom" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Vist per últim cop" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "Desconnectat" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Mai" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "fa %d minuts" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "fa una hora" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "fa %d hores" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "Connectat" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "Introduïu el sobrenom a afegir:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "Notifica en aquestes xarxes:" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "Llista d'amics - %s" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "Obre el diàleg" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "Missatge de canal de: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "S'ha invitat al canal per: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "Avís de: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "Missatge privat de: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "S'ha connectat a %u xarxes i %u canals - %s" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "_Restaura la finestra" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "_Oculta la finestra" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "_Parpelleig engegat" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "Missatge de canal" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "Missatge privat" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "Missatge ressaltat" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "_Canvia l'estat" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "_Absent" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "_He tornat" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "Missatge de canal de: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "%u missatge de canal. - %s" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "Missatge privat de: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Versió" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Descripció" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Seleccioneu el connector o script a carregar" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "Connectors i scripts - %s" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "_Carrega..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "_Descarrega" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "_Recarrega" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "Anomena i desa" + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Xarxa nova" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Realment voleu suprimir la xarxa \"%s\" i tots els seus servidors?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "El nom d'usuari no es pot deixar en blanc." + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "No podeu tenir un sobrenom en blanc." + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "Heu de tenir dos sobrenoms únics." + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "Edita %s - %s" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "Servidors" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "Autouneix-te als canals" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "Ordres de connexió" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "Clau (contrasenya)" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "Edita" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "Connecta només al servidor seleccionat" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Quan falla la connexió, no ho reintenta amb cada un dels servidors." + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "Connecta automàticament a aquesta xarxa" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "Utilitza SSL amb tots els servidors d'aquesta xarxa" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "Accepta els certificats SSL no vàlids" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "Utilitza la informació global d'usuari" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "Sobrenom:" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "Segona opció:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "Nom real:" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "Nom d'usuari" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "Mètode d'identificació:" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Contrasenya:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "La contrasenya que s'utilitza per a la identificació. Si dubteu, deixeu-ho en blanc." + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "Joc de caràcters:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "Llista de xarxes - %s" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "Informació de l'usuari" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "Tercera opció:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Xarxes" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "A l'inici, omet la llista de xarxes" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "Mostra només les preferides" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "Edita..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "Ordena" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "Ordena la llista de xarxes per ordre alfabètic. Utilitzeu les tecles Majúscules+Amunt i Majúscules+Avall per moure una fila." + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "Pre_ferida" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "Marca o desmarca aquesta xarxa com a preferida." + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "Connecta" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Albània" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "Asturià" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Azerbaitjan" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "Basc" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Bielorússia" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Bulgària" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "Xinès (simplificat)" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "Xinès (tradicional)" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "Anglès" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Estònia" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "Francès" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "Gallec" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "Alemany" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "Grec" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "Índia" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "Hongarès" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "Italià" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "Japonès" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "Coreà" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "Lituà" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Malàisia" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "Polonès" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "Portuguès" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "Portuguès (Brasil)" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "Rus" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "Eslovè" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "Espanyol" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Tailàndia" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "Turc" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Vietnam" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "General" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "Idioma" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "Lletra principal:" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Lletra:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "Quadre de text" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "Acoloreix els sobrenoms" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "Assigna un color diferent a cada persona" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "Sagna els sobrenoms" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "Alinea els sobrenoms a la dreta" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "Mostra una línia de separació" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "Insereix una línia vermella després de l'últim text llegit" + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Imatge de fons:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "Paràmetres de la transparència" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "Opacitat de la finestra:" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "Marques de temps" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "Habilita les marques de temps" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "Format de la marca de temps:" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "" + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "" + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "Barra de títol" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "Mostra els modes de canal" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "Mostra el nombre d'usuaris" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "Quadre d'entrada" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "Utilitza la lletra i els colors del quadre de text" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "Renderitza els colors i els atributs" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "Mostra el quadre del sobrenom" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "Mostra la icona del mode d'usuari al quadre del sobrenom" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "Comprovació de l'ortografia" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "Diccionari a utilitzar:" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "Utilitzeu els codis d'idioma (com en \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\nSepareu diverses entrades amb comes." + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "Utilitzeu els codis d'idioma. Separeu diverses entrades amb comes." + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "Compleció de sobrenoms" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "Sufix de compleció de sobrenoms:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "Ordenació de la compleció de sobrenoms:" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "Nombre de sobrenoms de la compleció:" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "sobrenoms." + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "Gràfic" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "Desordenat" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "Esquerra (amunt)" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "Esquerra (avall)" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "Dreta (amunt)" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "Dreta (avall)" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Dalt" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Baix" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Oculta" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "Llista d'usuaris" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "Mostra els noms d'amfitrió a la llista d'usuaris" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "Utilitza la lletra i els colors del quadre de text" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "Mostra les icones per als modes d'usuari" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "Utilitza icones gràfiques en lloc de símbols de text a la llista d'usuaris." + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "Acoloreix els sobrenoms a la llista d'usuaris" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "Mostra el nombre d'usuaris al canal" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "Ordenació de la llista d'usuaris:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "Mostra la llista d'usuaris a:" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "Seguiment d'absències" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "Segueix l'estatus d'absència dels usuaris i marca'ls amb un color diferent" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "En canals més petits de:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "Acció per al doble-clic" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "Estris extres" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "Mesurador de desfasament:" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "Mesurador d'accelerament:" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Finestres" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Pestanyes" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "Sempre" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "Només les pestanyes demanades" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "Automàtic" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "En una pestanya extra" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "Arbre" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "Tipus de canviador:" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "Obre una pestanya addicional per als missatges del servidor" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "Obre una pestanya nova quan rebeu un missatge privat" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "Ordena les pestanyes per ordre alfabètic" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "Mostra les icones a l'arbre de canals" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "Mostra línies amb punts a l'arbre de canals" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "Desplaçament de la roda del ratolí per canviar de pestanya" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "Clic amb el botó del mig per tancar la pestanya" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "Text més petit" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "Dóna el focus a les pestanyes noves:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "Ubicació de les notícies:" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "Mostra el canviador de canal a:" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "Abreuja el títol a:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "lletres com a màxim." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "Pestanyes o finestres" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "Obre els canals en:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "Obre els diàlegs en:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "Obre les utilitats en:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Voleu obrir DCCs, notificacions, etc. en pestanyes o finestres?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "Missatges" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "Desplaçament cap enrere" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "Demana la confirmació" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "Demana la carpeta per a la baixada" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "Desa sense cap interacció" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "Fitxers i directoris" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "Accepta automàticament els fitxers oferts:" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Baixa els fitxers a:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "Mou els fitxers completats a:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "Desa el sobrenom als noms de fitxers" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "Obre automàticament les finestres DCC" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "Finestra d'enviament" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "Finestra de recepció" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "Finestra de xat" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "Un únic enviament:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "Velocitat màxima per a una transferència" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "Una baixada:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "Tots els enviaments combinats:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "Velocitat màxima per a tot el tràfic" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "Totes les baixades combinades:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "Alertes" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "Mostra una notificació amb:" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "Parpelleja la icona de la safata amb:" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "Parpelleja la barra de tasques amb:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "Reprodueix un avís sonor en:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "Fes cas omís de les alertes quan s'ha marcat com a absent" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "Fes cas omís de les alertes quan la finestra té el focus" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "Comportament de la safata" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "Habilita la icona de la safata del sistema" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "Minimitza a la safata" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "Tanca a la safata" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "" + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "Mostra només les notificacions quan estigui ocultada o iconificada" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "Missatges ressaltats" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "Paraules extres a ressaltar:" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "Sobrenoms a no ressaltar:" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "Sobrenoms a ressaltar sempre:" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Separeu diverses paraules amb comes.\nS'admeten comodins." + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "Missatges predeterminats" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "Surt:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "Abandona el canal:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "Absent:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "Absència" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Anuncia l'absència una sola vegada" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "Treu automàticament l'estatus d'absent" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "" + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "Altres" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "Mostra els MODEs en brut" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "WHOIS amb la notificació" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "Oculta els missatges d'unions i abandonaments" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "Per defecte oculta els missatges d'unions i abandonaments." + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "Oculta els missatges de canvi de sobrenom" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "*!*@*.amfitrió" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "*!*@domini" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "*!*usuari@*.amfitrió" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "*!*usuari@domini" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "Comportament de la còpia automàtica" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "Copia automàticament el text" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "Inclou automàticament les marques de temps" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "Inclou automàticament la informació del color" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "Nom real:" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "Lletres alternatives:" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "Visualitza les llistes al mode compacte" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "Utilitza menys espaiat entre les files de l'arbre de canals i la llista d'usuaris." + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "Utilitza l'hora del servidor si ho admet" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "Retard de reconnexió automàtica:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "Retard d'autounió:" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "Tipus de bandejament:" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Enregistrament" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "Línies fora la finestra:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "Habilita l'enregistrament de les converses al disc" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "Nom de fitxer del registre:" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=servidor %c=canal %n=xarxa." + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "Insereix les marques de temps als registres" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "Format de la marca de temps del registre:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URL" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "Habilita l'enregistrament dels URL al disc" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "Habilita l'agafador dels URL" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "Nombre màxim d'URL a agafar:" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(Inhabilitat)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "Totes les connexions" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "Només servidor IRC" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "Només DCC" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "La vostra adreça" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "Vincula a:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "" + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "Transferències de fitxers" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "Obtén la meva adreça del servidor IRC" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "Pregunta al servidor per la vostra adreça real. Useu això si teniu una adreça 192.168.*.*" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "Adreça IP" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "Anuncia aquesta adreça com a pròpia quan s'ofereixin fitxers." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "Primer port d'escolta DCC:" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "Últim port d'escolta DCC:" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "!Deixeu els ports a zero per a l'interval complet." + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "Servidor intermediari" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "Nom d'amfitrió:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Port:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Tipus:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "Utilitza el servidor intermediari per:" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "Autenticació del servidor intermediari" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "Nom d'usuari:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "Servidor d'identd" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "Habilitat" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "Seleccioneu un fitxer d'imatge" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "Selecciona la carpeta de baixades" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Seleccioneu una lletra" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Vés a..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "Obre la carpeta de dades" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Seleccioneu un color" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "Colors del text" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "Colors de mIRC:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "Colors locals:" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Lletra:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Fons:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "Text seleccionat" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "Colors de la interfície" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "Dades noves:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "Línia de separació:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "Missatge nou:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "Usuari absent:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "Ressaltat:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "Corrector ortogràfic:" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Esdeveniment" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "Fitxer d'àudio" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "Seleccioneu un fitxer d'àudio" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "Fitxer d'àudio:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "_Vés a..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "Re_produeix" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Interfície" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "Aparença" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Línia d'entrada" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Llista d'usuaris" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "Canviador de canal" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Colors" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Conversacions" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "Sons" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "Avançat" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Configuració de la xarxa" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Transferències de fitxers" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "Identd" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Categories" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "" + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Alguns dels paràmetres que han canviat requereixen un reinici perquè tinguin un efecte complet." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*ATENCIÓ*\nAcceptar automàticament els DCC al vostre\ndirectori personal pot ser perillós. P. ex.:\nAlgú podria enviar-vos un .bash_profile" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "Preferències - %s" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "<i>(sense suggeriments)</i>" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "Més..." + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "Afegeix \"%s\" al diccionari" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "Ignora-ho tot" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "Suggeriments d'escriptura" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "error d'enchant per a l'idioma: %s" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "S'ha produït un error en analitzar la cadena" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Aquest senyal sols ha passat %d arguments, $%d no és vàlid" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "Imprimeix un fitxer de text" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ Número" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Edició d'esdeveniments" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "Carrega de..." + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Comprova-ho tot" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "Agafador dels URL - %s" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Neteja la llista" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Copia l'URL seleccionat" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Copia" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Desa la llista a un fitxer" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d operador(s), %d en total" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "Obre un URL irc://servidor:port/canal" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "Sysinfo: ha fallat l'obtenció de la informació. O bé no està admesa o bé és un error." + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "Sysinfo: %s està establert a: %d\n" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "Sysinfo: nom de variable no vàlid\n" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "S'ha carregat el connector %s\n" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "S'ha descarregat el connector %s\n" diff --git a/hexchat/po/cs.po b/hexchat/po/cs.po new file mode 100644 index 0000000..14abd3a --- /dev/null +++ b/hexchat/po/cs.po @@ -0,0 +1,6260 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Ascii Wolf <mail@asciiwolf.com>, 2018 +# Ascii Wolf <mail@asciiwolf.com>, 2018 +# David Hrdlička <hrdlickadavid@outlook.com>, 2015 +# Jakub Moc <Jakub.Moc@volny.cz>, 1999 +# jirislaby <jirislaby@gmail.com>, 2019 +# jirislaby <jirislaby@gmail.com>, 2019 +# Martin Urbanec <martin@urbanec.cz>, 2018 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2019-05-20 09:29+0000\n" +"Last-Translator: jirislaby <jirislaby@gmail.com>\n" +"Language-Team: Czech (http://www.transifex.com/hexchat/hexchat/language/cs/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: cs\n" +"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "HexChat" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "IRC klient" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "HexChat je snadno použitelný a rozšířitelný IRC klient. Umožňuje vám se bezpečně připojit k více sítím a psát si s lidmi soukromě nebo v kanálech pomocí přizpůsobitelného prostředí. Dokonce můžete přenášet soubory." + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "HexChat podporuje funkce jako DCC, SASL, brány proxy, kontrolu pravopisu, ukládání záznamů, vlastní motivy a skripty v jazycích Python nebo Perl." + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "Hlavní okno chatu" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "Chatujte online s ostatními lidmi" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr " IM;Chat;" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "hexchat" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "Otevřít Nouzový režim" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "HexChat manažer témat" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Jsem zaneprázdněn" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Odcházím" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "VYP" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "ZAP" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "{nenastaveno}" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Síť" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<žádný>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Kanál" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Čekám" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Aktivní" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Selhalo" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Hotovo" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Připojit" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Přerušeno" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "Nemohu přistoupit k %s\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Chyba" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s nabízí \"%s\". Souhlasíte?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "Žádné aktivní DCC\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "_Otevřít dialogové okno" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "_Poslat soubor" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "Info o _uživateli (WhoIs)" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "Přid_at do seznamu přátel" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "_Ignorovat" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "O_perátorské akce" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Dát práva operátora" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Vzít práva operátora" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "Dát hlas" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "Vzít hlas" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Kick/Ban" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Kick" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "Ban" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "KickBan" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Opustit kanál" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Vstoupit do kanálu..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "Zadat kanál pro připojení:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Odkazy serveru" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Ping serveru" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Ukrýt verzi" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Op" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "hoj" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Zadat důvod vyhození %s:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "Poslat soubor" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "Dialog" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "KdoJe" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Poslat" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Chat" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Smazat" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "Nemáš právo zápisu do %s. Z tohoto sezení nebude nic uloženo." + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* Spuštění klienta pod uživatelským účtem root není dobrý nápad! \nMěli byste si vytvořit nový uživatelský účet a ten používat pro přihlášení.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "ANO " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "NE " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Jste zavalen CTCP od %s, ignoruji %s\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "Přeloženo na %s" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "Nenalezeno" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "Přeloženo na:" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "Vyhledávám %s..." + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s online\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s offline\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Nejste připojeni k žádnému kanálu. Zkuste /join #<channel>\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Nepřipojeno. Zkuste /server <host> [<port>]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "Server %s už existuje v sítí %s.\n" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "Přidán server %s k síti %s.\n" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Označen jako pryč: %s\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "Označen jako zpět.\n" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "Pro spuštění potřebuji /bin/sh !\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "Dostupné příkazy:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "Uživatelské příkazy:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "Příkazy obsažené v pluginu:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Pro více informací zadejte /HELP <command>, nebo /HELP -l" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Ignorován neznámý argument '%s'." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "Tento server nepodporuje umlčení." + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "Nebyl nalezen žádný plugin.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "Tento plugin se odmítá uvolnit z paměti.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <name> <action>, přidá tlačítko pod uživatelským seznamem." + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "ADDSERVER <NewNetwork> <newserver/6667>, přidá novou síť s novým serverem do seznamu sítí" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <cmd>, pošle příkaz na všechny kanály, na kterých jste" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "ALLCHANL <cmd>, vyšle příkaz do všech kanálů na aktuálním serveru" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <cmd>, pošle příkaz na všechny servery, na kterých jste" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "AWAY [<reason>], nastaví, že jsi pryč (použij /BACK ke změně zpět)" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "BACK, vás nastaví zpět (přítomen)" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <mask> [<bantype>], zakáže každého, kdo odpovídá masce na aktuálním kanálu. Pokud se již nacházíte na kanálu, nedojde k jeho vyhození (na to je potřeba chanop)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <variable> [<value>]" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "CHARSET [<encoding>], vypíše nebo nastaví kódování pro aktuální připojení" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "CLEAR [ALL|HISTORY|[-]<amount>], vymaže aktuální textové okno nebo historii příkazů" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "CLOSE [-m], Zavře aktuální záložku, nebo celé okno, pokud to byla poslední otevřená záložka, nebo s přiznakem \"-m\" zavře všechny požadavky." + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <code|wildcard>, nalezne kód země, např: cs = CR" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <nick> <zpráva>, pošle zprávu CTCP dané přezdívce, běžné zprávy jsou VERSION a USERINFO" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "CYCLE [<channel>], odejde z aktuálního nebo zadaného kanálu a ihned se zas připojí" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <nick> - přijme nabízený soubor\nDCC SEND [-maxcps=#] <nick> [file] - pošle někomu soubor\nDCC PSEND [-maxcps=#] <nick> [file] - pošle soubor pomocí pasivního módu\nDCC LIST - zobrazí seznam DCC\nDCC CHAT <nick> - nabídne někomu DCC CHAT\nDCC PCHAT <nick> - nabídne DCC CHAT v pasivní režimu\nDCC CLOSE <type> <nick> <file> příklad:\n /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <nick>, odstraní právo chanhalf-op z přezdívky na aktuálním kanálu (vyžaduje chanop)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <name>, smaže tlačítko pod uživatelským seznamem" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <nick>, odstraní právo chanop z přezdívky na aktuálním kanálu (vyžaduje chanop)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <nick>, odstraní právo voice z přezdívky na aktuálním kanálu (vyžaduje chanop)" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, odpojí se od serveru" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "DNS <nick|host|ip>, Přeloží IP adresu nebo jméno" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "DOAT <channel,list,/network> <command>" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <text>, napíše text lokálně" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <command>, spustí příkaz. Je-li nastavena značka -o, bude výstup zobrazen na aktuálním kanálu, jinak se vytiskne do aktuálního textového pole" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, pošle procesu SIGCONT" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9], zabije spuštěný příkaz v současném sezení. Pokud předáte procesu -9, bude proces SIGKILLed" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, pošle procesu signál SIGSTOP" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, pošle data z procesu na stdin" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "EXPORTCONF, exportuje nastavení HexChatu" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, vymaže aktuální frontu zpráv serveru" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <host> [<port>], použije proxy hostitele, výchozí port je 23" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <nick> [password], Zruší ghost přezdívku" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <nick>, předá právo chanhalf-op přezdívce (vyžaduje chanop)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <password>, identifikuje vás pro nickserv" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <mask> <types..> <options..>\n mask - maska hostitele, kterého chcete ignorovat, např: *!*@*.aol.com\n types - typ igrnorování, jeden nebo všechny z:\n PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n options - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <nick> [<channel>], pozve někoho na kanál, výchozí je aktuální aktuální kanál (vyžaduje chanop)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <channel>, připojí se ke kanálu" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "KICK <nick> [reason], Vyhodí přezdívku z aktuálního kanálu (nutné chanop oprávnění)" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "KICKBAN <nick> [reason], zakáže vyhazování přezdívek z aktuálního kanálu (nutné chanop oprávnění)" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, vynutí novou kontrolu lagu" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <file>, nahraje plugin nebo skript" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, hromadný deop všech chanhalf-op v aktuálním kanálu (vyžaduje chanop)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEHOP, hromadný deop všech chanop v aktuálním kanálu (vyžaduje chanop)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <action>, pošle na aktuální kanál nějakou akci (akce jsou psány v třetí osobě, např. /me jumps)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, hromadný vyhozov všech kromě vás aktuálním kanálu (vyžaduje chanop)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, hromadný op všech uživatelů na aktuálním kanálu (vyžaduje chanop)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <nick> <message>, pošle poznámku CTCP" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <hostname> [<port>]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <nickname>, nastaví váš nick" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [-n network1[,network2,...]] [<nick>], zobrazí váš seznam upozornění nebo tam někoho přidá" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <nick>, dá právo chanop určené přezdívce (vyžaduje chanop)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<channel>] [<reason>], opustí kanál, ve výchozím nastavení ten aktuální" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <nick | channel>, CTCP ping přezdívky nebo kanálu" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "" + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<reason>], odpojí se od aktuálního serveru" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <text>, pošle text serveru" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<host>] [<port>] [<password>], Může být volán stejně jako /RECONNECT pro nové připojení k aktuálnímu serveru nebo pomocí /RECONNECT ALL pro připojení ke všem otevřeným serverům" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<host>] [<port>] [<password>], Může být volán stejně jako /RECONNECT pro nové připojení k aktuálnímu serveru nebo pomocí /RECONNECT ALL pro připojení ke všem otevřeným serverům" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <text>, pošle text do aktuálního okna" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <nick> [<file>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <host> <port> <channel>, připojí se a vstoupí do kanálu" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <host> <port> <channel>, připojí se a vstoupí do kanálu" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <host> [<port>] [<password>], připojí se k serveru na výchozím portu 6667" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<topic>], nastaví téma kanálu, jinak ukáže aktuální téma" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "\nTRAY -f <timeout> <file1> [<file2>] Změní ikonu podle jmen souborů.\nTRAY -f <filename> Nastaví ikonu na pevnou.\nTRAY -i <number> Zabliká ikonou v daném intervalu.\nTRAY -t <text> Nastaví tip ikony.\nTRAY -b <title> <text> Nastaví kontextovou nápovědu ikony.." + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <mask> [<mask>...], povolí danou masku." + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <mask> [QUIET]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <name>, uvolní z paměti plugin nebo skript" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "" + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, otevře URL ve vašem prohlížeči" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "USELECT [-a] [-s] <nick1> <nick2> atd, zvýrazní nick v uživatelském seznamu kanálu" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <nick>, přidá právo hlasování někomu (vyžaduje chanop)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <message>, napíše zpráva všem na kanálu" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <message>, pošle zprávu všem chanop na aktuálním kanálu" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "Uživatelský příkaz pro: %s\n" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "Použití: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nK přikazu není k dispozici žádná nápověda.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "Takový příkaz neexistuje.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "Špatné argumenty přikazu.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "Příliš mnoho rekurzivních příkazů, ruším." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "Neznámý příkaz %s. Zkus /help\n" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "Nenalezen symbol hexchat_plugin_init; je tohle opravu HexChat plugin?" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "*\tObsluhuji požadavek ident z %s jako %s" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "IDENTD <port> <username>" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "Časovač %d smazán.\n" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "Takové referenční číslo nenalezeno.\n" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "Žádné časové nejsou nastavené.\n" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "%5d %8.1f %7d %s\n" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Jste si jistí, že server podporuje SSL a tento port?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "Nemohu přeložit hostitele %s\nZkontrolujte vaše nastavení IP!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "Překlad proxy selhal.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Zkouším další server v %s...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "Čekám: symbol \"%s\" je neznámý. Pro síť %s nebude použita žádná konverze." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "%C18*%O$t%C18$1%O přidáno do seznamu notifikací." + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "%C22*%O$t%C22$1%O: %C18$2%O na %C24$4%O od %C26$3%O" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "%C22*%O$tNelze se připojit do %C22$1 %O(%C20Jsi zakázaný%O)." + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%UKanál Uživatelé Téma" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "" + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "" + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "" + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "" + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "" + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "" + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "" + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "%O%C18$1%O přidán do seznamu ignorovaných." + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "" + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "%C16,17" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "%O%C18$1%O odstraněn ze seznamu ignorovaných." + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "%OSeznam ignorovaných je prázdný." + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "" + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tSeznam upozornění je prázdný." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "%C16,17 Seznam notifikací" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "" + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "%C24*$t$1 odešel ($2)" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "" + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "%C29*%O$tPřipojen." + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "" + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "Načtený log z" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** KONČÍM ZÁZNAM V %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** ZAČÍNÁM ZÁZNAM V %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "* Nelze otevřít logovací soubor(y) pro zápis. Zkontroluj\npřístupová práva na %s" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "Zpráva při ukončení" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "Zpráva při ukončení" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "IP adresa" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Uživatelské jméno" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "Přezdívka připojujícího se člověka" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "Připojili jste se ke kanálu" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "Osobní počítač" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "Účet osoby" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Přezdívka" + +#: src/common/text.c:980 +msgid "The action" +msgstr "Akce" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "Znak módu" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "Textová identifikace" + +#: src/common/text.c:987 +msgid "The text" +msgstr "Text" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "Zpráva" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Jméno serveru" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Stará přezdívka" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Nová přezdívka" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "Přezdívka osoby, která změnila téma" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Téma" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "Přezdívka vyhazovače" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "Osoba bude vyhozena" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "Kanál" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "Důvod" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "Přezdívka odcházející osoby" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "Čas" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "Autor" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Nick" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Důvod" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Hostitel" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "Odkud je" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "Čas ve formátu x.x (podívejte se dále)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "Kanál k" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "Zvuk" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "Přezdívka osoby" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "Událost CTCP" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "Přezdívka osoby, která nastavila klíč" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "Klíč" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "Přezdívka osoby, která nastavila limit" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "Limit" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "Přezdívka osoby, která může op-ovat" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "Přezdívka osoby, která byla op-ována" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "Přezdívka osoby, která byla halfop-ována" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "Přezdívka osoby, která může halfop-ovat" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "Přezdívka osoby, o které bylo hlasováno" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "Přezdívka osoby, která byla hlasována" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "Přezdívka osoby, která byla vykázána" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "Maska banu" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "Přezdívka osoby, která utišovala" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "Utišovací maska" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "Přezdívka toho, kdo odstranil klíč" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "Přezdívka toho, kdo odstranil limit" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "Přezdívka osoby, která udělala deop" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "Přezdívka toho, kdo byl deop-ován" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "Přezdívka osoby, která udělala halfdeop" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Přezdívka toho, kdo byl dehalfop-ován" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "Přezdívka osoby, která udělala devoice" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "Přezdívka toho, kdo byl zbaven hlasování" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "Přezdívka osoby, která udělala unban" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "Přezdívka osoby, která udělala unquiet" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "Přezdívka toho, kdo může osvobodit" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "Vyňatá maska" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "Přezdívka osoby, která odstranila výjimku" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "Přezdívka osoby, která provedla pozvání" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "Maska pro pozvání" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "Přezdívka osoby, která odstranila pozvání" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "Přezdívka osoby, která nastavuje mód" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "Znaménka módu (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "Znaky módu" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "Kanál na kterém to bude nastaveno" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Celé jméno" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Příslušenství ke kanálu/\"je operátor IRC\"" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Informace o serveru" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Doba nečinnosti" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Čas přihlášení" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Důvod nepřítomnosti" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Zpráva" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Účet" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "Skutený uživatel@počítač" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "Skutečná IP" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Jméno kanálu" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "Mechanismus" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "Surové číslo nebo identifikátor" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Text" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Přezdívka uživatele, který vás pozval" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Uživatelé" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "Přezdívka se používá" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Přezdívka bude vyzkoušena" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Port" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "Módy" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "Typ DCC" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Jméno souboru" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Požadované jméno souboru" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "Cesta" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Pozice" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Velikost" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "Řetězec DCC" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "Důvod pro Pryč" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "Počet položek k oznámení" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Původní název souboru" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Nový název souboru" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Přijímač" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Maska hostitele" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Hostitelský název" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "Balíček" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "Sekund" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "Přezdívka pozvaného uživatele" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Maska pro ban" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "Kdo nastavil ban" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Trvání banu" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "Nemůžu přečíst zvkukový soubor:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "Vzdálený počítač zavřel soket" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "Připojení odmítnuto" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "Není cesta k počítači" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Připojení vypršelo" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "Nemohu přiřadit tuto adresu" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "Připojení resetováno hostitelem" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "Ostrov Nanebevstoupení" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Andora" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Spojené arabské emiráty" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Afgánistán" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Antigua a Barbuda" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Albánie" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Arménie" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Nizozemské Antily" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Antarktida" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Argentina" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "Reverzní DNS" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Americká Samoa" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "Asijko-pacifická oblast" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Rakousko" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Austrálie" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "Alandské ostrovy" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Ázerbájdžán" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Bosna a Hercegovina" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Bangladéš" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Belgie" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Bulharsko" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Bahrain" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "Businesses" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Bermudy" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Brunei Darussalam" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Bolívie" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Brazílie" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Bahamy" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Bhutan" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Bouvet Island" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Bělorusko" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Kanada" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "Katalánsko" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Kokosové ostrovy" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "Demokratická republika Kongo" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "Středoafrická republika" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Kongo" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "Švýcarsko" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "Cote d'Ivoire" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Cook Islands" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Chile" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Kamerun" + +#: src/common/util.c:738 +msgid "China" +msgstr "Čína" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Kolombie" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Internic Commercial" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "Srbsko a Černá hora" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Kuba" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Cape Verde" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Vánoční ostrov" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Kypr" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "Česká republika" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "Východní Německo" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Německo" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Djibouti" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Dánsko" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Dominica" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "Dominkánská republika" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Algeria" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Ekvádor" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Vzdělávací instituce" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Estonsko" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Egypt" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Západní Sahara" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "Španělsko" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Etiopie" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "Evropská unie" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Finsko" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Fidži" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Falklandské ostrovy" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Mikronésie" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Faroe Islands" + +#: src/common/util.c:770 +msgid "France" +msgstr "Francie" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Velká Británie" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Gruzie" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Francouzská Guayana" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "Britské satelitní ostrovy" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Ghana" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Grónsko" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Vláda" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Guadeloupe" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Rovníková Guinea" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Řecko" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "S. Georgia a S. Sandwich Isles" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Guinea-Bissau" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Guyana" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Heard a McDonald Islands" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Chorvatsko" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Maďarsko" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Indonésie" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Irsko" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Israel" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "Isle of Man" + +#: src/common/util.c:801 +msgid "India" +msgstr "Indie" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "Infromační" + +#: src/common/util.c:803 +msgid "International" +msgstr "Mezinárodní" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Britské teritorium Indického oceánu" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Irák" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "Irán" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Island" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Itálie" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Jamajka" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Jordánsko" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "Pracovní pozice" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Japonsko" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Keňa" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Kyrgyzstán" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Kambodža" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Comoros" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "St. Kitts and Nevis" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Severní Korea" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Jižní Korea" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Kuvajt" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Cayman Islands" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Kazachstán" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Libanon" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Saint Lucia" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Lichtenštejnsko" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Srí Lanka" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Libérie" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Litva" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Lucembursko" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Lotyšsko" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Libya" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Maroko" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Monako" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Moldávie" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "Černá Hora" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "United States Medical" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Madagaskar" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Marshall Islands" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Vojenské" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Makedonie" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Mongolsko" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Macau" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "Mobilní zařízení" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Northern Mariana Islands" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Martinique" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Mauretánie" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Mauritius" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "Musea" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Maldivy" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "Mexiko" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Malajsie" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Mozambik" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Namibie" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "Jména jednotlivců" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Nová Kaledonie" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Internic Network" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Norfolk Island" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Nigérie" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Holandsko" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Norsko" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Nepál" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "Nový Zéland" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Omán" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "Internic Non-Profit Organization" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Francouzská Polynésie" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Papua-Nová Guinea" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Filipíny" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Pákistán" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Polsko" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "St. Pierre and Miquelon" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Puerto Rico" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "Profese" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "Palestinské teritorium" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Portugalsko" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Paraguay" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Qatar" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Sjednocení" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Rumunsko" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "Starý školní ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "Srbsko" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Ruská federace" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Rwanda" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Saudská arábie" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Šalamounovy ostrovy" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Seychelles" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Súdán" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Švédsko" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Singapur" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "St. Helena" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Slovinsko" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard and Jan Mayen Islands" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "Slovenská republika" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Somálsko" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Surinam" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "Jižní Súdán" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "Sao Tome and Principe" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Bývalé USSR" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "El Salvádor" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Sýrie" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Swaziland" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Turks and Caicos Islands" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Čad" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "Internetové komunikační služby" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "Francouzská jižní teritoria" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Thajsko" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Tajikistan" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Východní Timor" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Turkménistán" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Tunis" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Turecko" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "Cestování a turismus" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Trinidad a Tobago" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Tanzánie" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Ukrajina" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Spojené Království" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "USA" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Uruguay" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Uzbekistán" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Městský stát Vatikán" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "St. Vincent and the Grenadines" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "British Virgin Islands" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "US Virgin Islands" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "Wallis and Futuna Islands" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "Zábava pro dospělé" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Yemen" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Jugoslávie" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Jižní Afrika" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Zambie" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "Nemohu se připojit k sezení" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "Chyba při vykonávání NameHasOwner" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "Chyba při vykonávání Command" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "vzdálený přístup" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "plugin pro vzdálený přístup používá DBUS" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Nemohu se připojit k sezení: %s\n" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Chyba při získání %s: %s\n" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Mapa znaků" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "Ban" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "Pozvánky" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Pozvat" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "Utišení" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "Utišení" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "Maska kopírování" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "%s na %s od %s" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "Zkopírovat položku" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "Nepřipojen" + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "Musíte vybrat nějaký ban." + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "Jsi si jistý, že chceš odebrat všechny položky vypsané v %s?" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "Typ" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Maska" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "Z" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Datum" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Okno se seznamem banů lze otevřít pouze pokud se nacházíte na kanálu." + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "Seznam banů (%s) - %s" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Odstranit" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Sbalit" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Aktualizovat" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "%d/%d uživatelů na %d/%d kanálech." + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Vyberte požadovaný název souboru" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "_Připojit se ke kanálu" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "_Zkopírovat jméno kanálu" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "Zkopíruje _téma kanálu" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "Seznam kanálu (%s) - %s" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "_Vyhledávání" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "_Stáhnout seznam" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "_Uložit seznam..." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "Pouze zobrazit:" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "kanály s" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "do" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "uživatelů." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "Hledat v:" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Jméno kanálu" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "Typ hledání:" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "Jednoduché vyhledávání" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "Maska odpovídá (Wildcards)" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "Regulární výraz" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Najít:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Poslat soubor %s" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "Nové odeslání souboru není možné." + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "Nemohu přistoupit k souboru: %s\n%s.\nNové poslání není možné." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "Stahovaný soubor je větší než se vejde na disk. Pokračování ve stahování není možné." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "Nemohu pokračovat ve stahování souboru od dvou lidí." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "Upload a Download - %s" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Stav" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Soubor" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Obě" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "Upload" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "Download" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "Detaily" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "Soubor:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "Adresa:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Zrušit" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Přijmout" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Pokračovat" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "Otevřít adresář" + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "Seznam DCC Chat - %s" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Přijmuto" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Odesláno" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "Čas" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "Přidat" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Smazat" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Zrušit" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Uložit" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "Nepřipojovat se automaticky k serverům" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "Použít jiný konfigurační adresář" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "Nenačítat automaticky žádné pluginy" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "Ukázat adresář pro automatické nahrávání pluginů/skriptů" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "Zobrazit uživatelský konfigurační adresář" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "Otevřít URL irc://server:port/channel?key" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "Vykonat příkaz:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "Otevřít URL nebo spustit příkaz v existujícím HexChatu" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Spustit minimalizované. Úroveň 0=Normální 1=Ikona 2=Oznamovací oblast" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "úroveň" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "Zobrazit informace o verzi" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "Chyba při otvírání písma:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "Zjistit zda je buffer prázdný.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d bytů" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Zbývá po síti poslat: %d bytů" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "Příkaz pro vkládání do bufferu - vloží obsah Data 1 do položky, kde byla stisknuta klíčová sekvence. Vloží to na místo aktuální pozice kurzoru" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "Příkaz nastavení bufferu - nastaví položku, kde byla zadána řídící sekvence na obsah Data 1" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "Příkaz pro poslední příkaz nastaví položku na obsah posledního příkazu, který jsme zadali. Toho docílíme stiskem klávesy nahoru v shellu." + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "Příkaz další nastaví položku na obsah dalšího příkazu, který jsme zadali. Toho docílíme stiskem klávesy dolů v shellu" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "Tento příkaz změní text a provede jeho kompletaci z původně neúplné přezdívky nebo příkazu. Pokud jsou Data 1 nastavena, můžeme stisknout Tabulátor a vybrat nick." + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "Tento příkaz umožní pohyb nahoru a dolů v seznamu přezdívek. Pokud jsou Data 1na něco nastavena, bude se pohybovat nahoru, jinak to bude dolů" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "Tento příkaz zkontroluje poslední zadané slovo ve vstupním poli proti seznamu náhrad a nahradí ho, pokud najde odpovídající náhradu" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "Tento příkaz přesune otevřenou záložku o jednu doleva" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "Tento příkaz přesune otevřenou záložku o jednu doprava" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "Tento příkaz přesune aktuální rodinu záložek doleva" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "Tento příkaz přesune aktuální rodinu záložek doprava" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "Přesune vstupní řádek do historie, ale nepošle ho na server" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "Při načítání konfigurace klávesových zkratek došlo k chybě" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "Klávesové zkratky - %s" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "Nemohu do tohoto souboru zapisovat." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "Nemohu z tohoto souboru číst." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "Maska již existuje." + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Důvěrné" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Poznámka" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "Zrušit ignoraci" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "Jsii si jistý, že chceš odstranit všechny ignorace?" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "Zadejte masku pro ignorování:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "Seznam ignorovaných - %s" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Stav ignorování:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Kanál:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Důvěrné:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Poznámka:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Pozvat:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "Přidat..." + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "Název kanálu je příliš krátký, zkuste to znovu." + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "Dokončení připojení - %s" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "Připojení k %s je hotovo." + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "Přejete si provést další?" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "_Ne, ke kanálu se připojím později." + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "_Připojit se k tomuto kanálu:" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Pokud víte jméno kanálu, kte kterému se chcete připojit, pak ho zde zadejte." + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "O_tevřít seznam kanálů." + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "Získávám seznam kanálů, to může chvíli trvat." + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "_Vždy zobrazit tento dialog po po připojení." + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "Dialog k" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Téma pro %s je: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "Žádné téma není nastaveno" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "Tento server má s tím asociováno %d kanálů nebo dialogů. Zavřít všechny?" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "Zavřít HexChat?" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "Příště se neptat." + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Jste připojeni k %i sítím IRC." + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "Určitě chcete skončit?" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "Některé přenosy souborů jsou stále aktivní." + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "_Schovat do ikony" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "Vložit atributy nebo barvy" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>Tučně</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>Podtrženo</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "<i>Kurzíva</i>" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "Normální" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "Barvy 0-7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "Barvy 8-15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "Na_stavení" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "_Logovat na disk" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "Znovu nah_rát historii" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "_Extra upozornění" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "_Pípnout při zprávě" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "Zablikat _ikonou v nástrojové liště" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "Zablikat lištou úloh" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "_Odpojit" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "_Zavřít" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "Uživatelský limit musí být číslo!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "Filtrovat barvy" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "Žádné zprávy zvenku" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "Ochrana tématu" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "Pouze pozvat" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "Moderováno" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "Seznam banů" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Klíčové slovo" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "Uživatelský limit" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Zadejte novou přezdívku:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "Nic nenalezeno." + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "Prohledávání narazilo na konec nebo nic nenalezeno." + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "_Zvýraznit vše" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "_Respektovat velikost písmen" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "Provede hledání s respektovaním velikostí písmen." + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "_Regulární výraz" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "Považuje hledací řetězec za regulární výraz." + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Počítač není znám" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "Účet neznámý" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Neznámé" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Skutečné jméno:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "Uživatel:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "Účet:" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "Země:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "Server:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "před %u minutami" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "Poslední zpráva:" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "Zpráva pryč:" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "%d přezdívek vybráno." + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "Otevřít odkaz v prohlížeči" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "Kopírovat vybraný odkaz" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Připojit se ke kanálu" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "Opustit kanál" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "Otočit kanál" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "_Automaticky připojit" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "_Automaticky se připojit ke kanálu" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "_Automaticky připojit" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "Uživatelské menu - %s" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "Upravit toto menu" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "Získat seznam kanálů" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr " byl přeložen bez podpory pluginů." + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "Odpovědi CTCP - Speciální kódy:\n\n%d = data (kompletní ctcp)\n%e = jméno aktuální sítě\n%m = informace o počítači\n%s = nick, který poslal ctcp\n%t = čas/datum\n%2 = slovo 2\n%3 = slovo 3\n&2 = slovo 2 do konce řádku\n&3 = slovo 3 do konce řádku\n\n" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "Uživatelem definované příkazy - %s" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "Menu upozornění se seznamem uživatelů - %s" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "Nahrazení - %s" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "Nahradit s" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "Obsluhy URL - %s" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "Tlačítka seznamu uživatelů - %s" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "Dialogová tlačítka - %s" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "Odpovědi CTCP - %s" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "He_xChat" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "Se_znam sítí" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "_Nový" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "Záložka serveru" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "Záložka kanálu" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "Okno serveru" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "Okno kanálu" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "_Nahrát plugin nebo skript" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "_Konec" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "Z_obrazit" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "Panel _menu" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "Panel _téma" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "Seznam _uživatelů" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "_Tlačítka seznamu uživatelů" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "T_lačítka módů" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "_Přepínač kanálu" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "_Záložky" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "Stro_m" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "_Měření sítě" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Vypnuto" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "Graf" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "_Celá obrazovka" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "_Server" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "_Odpojit" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "_Znovu připojit" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "_Připojit se ke kanálu" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "Seznam kanálů" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "Označen _Pryč" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "_Uživatelské menu" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "Nas_tavení" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "_Předvolby" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "Automaticky nahradit" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "CTCP odpovědi" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "Dialogová tlačítka" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "Klávesové zkratky" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "Textové události" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "Obsluhy URL adres" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "Uživatelské příkazy" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "Tlačítka seznamu uživatelů" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "Upozornění se seznamem uživatelů" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "_Okno" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "_Seznam banů" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "Přímý rozhovor" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "_Přenosy souborů" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "Seznam přátel" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "Seznam ignorovaných" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "_Pluginy a skripty" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "_Surový log" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "Lapač _URL" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "Resetovat označený řádek" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "_Kopírovat výběr" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "_Smazat text" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "Uložit text" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "Vyhledávání" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "Hledat text" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "Hledat další" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "Hledat předchozí" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "_Nápověda" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "_Obsah" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "_O programu" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "_Připojit" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "JMÉNO" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Naposledy viděn" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "Offline" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Nikdy" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "před %d minutami" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "Před hodinou" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "Před %d hodinami" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "Online" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "Zadejte přezdívku pro přidání:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "Oznámit na těchto sítích:" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "Čárkou oddělený seznam zvolených sítí." + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "Seznam přátel - %s" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "Otevřít dialog" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "Připojen k %u sítím a %u kanálům - %s" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "_Obnovit okno" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "_Skrýt okno" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "_Zablikat při" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "Zpráva kanálu" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "Soukromá zpráva" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "Zvýrazněná zpráva" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "_Změnit stav" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "_Pryč" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "_Zpět" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "Zvýrazněná zpráva od: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "%u zvýrazněných zpráv, poslední od: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "%u zpráv kanálu. - %s" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "Soukromá zpráva od: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "%u soukromých zpráv, poslední od: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "Nabídka souboru od: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "%u nabídnutých souborů, poslední od: %s (%s) - %s" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Verze" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Popis" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Zvolit plugin nebo skript pro načtení" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "Pluginy a skripty - %s" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "_Načíst..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "_Odebrat" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "_Znovu načíst" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "Uložit jako..." + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "Surový Log (%s) - %s" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "Vyčistit surový log" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Nová síť" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Skutečně chcete odstranit síť \"%s\" a všechny servery, které obsahuje?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "Uživatelské jméno nemůže být prázdné." + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "Nemůžeš mít prázdnou přezdívku." + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "Musíš mít dvě unikátní přezdívky." + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "Upravit %s - %s" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "Servery" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "Automaticky připojit kanály" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "%n=přezdívka\n%p=heslo\n%r=reálné jméno\n%u=uživatelské jméno" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "Klíč (heslo)" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "_Editovat" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "Připojit pouze k vybraným serverům" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Neopakovat znovu všechny servery, pokud selže připojení." + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "Použít SSL pro všechny servery v této síti" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "Použít globální informace o uživateli" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "_Přezdívka:" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "Druhá volba:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "_Skutečné jméno:" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "_Uživatelské jméno:" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "Metoda přihlášení:" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Heslo:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "Znaková sada:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "Seznam sítí - %s" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "Uživatelské informace" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "Třetí volba:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Sítě" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "Přeskočit seznam serverů při startu" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "Zobrazit pouze oblíbené" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "_Editovat..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "_Setřídit" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "Seřadí seznam sítí podle abecedy. Pro posun použijte klávesy SHIFT-NAHORU a SHIFT-DOLŮ." + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "_Oblíbit" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "_Připojení" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Albánie" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Ázerbájdžánština" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "Baskičtina" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Bělorusko" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Bulharština" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "Zjednodušená čínstina" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "Tradiční čínstina" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "Čestina" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "Dánština" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "Angličtina (UK)" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "Angličtina" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Estonsko" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "Finština" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "Francouzština" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "Galština" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "Němčina" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "Řečtina" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "Indie" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "Maďarština" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "Indonéština" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "Italština" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "Japonština" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "Korejština" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "Litevština" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "Lotyšština" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "Makedonština" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Malajsie" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "Norština (Bokmal)" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "Norština (Nynorsk)" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "Polština" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "Portugalština" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "Portugalština (brazilská)" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "Pandžábi" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "Ruština" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "Srbština" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "Slovenština" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "Slovinština" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "Španělština" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "Švédština" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Thajsko" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "Turečtina" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "Ukrajinština" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Vietnam" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Obecné" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "Jazyk:" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "Hlavní font:" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Písmo:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "Textové pole" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "Barevné přezdívky" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "Přiřadí každému člověku na IRC jinou barvu" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "Odsazovat přezdívky" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "Zarovnávat přezdívky vpravo" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "Zobrazit dělící čáru" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "Vloží červenou čáru za poslední řádek textu." + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Obrázek na pozadí:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "Nastavení průhlednosti" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "Průhlednost okna:" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "Časové značky" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "Povolit časové značky" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "Formát časových značek:" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "" + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "" + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "Titulkový pruh" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "Zobrazit módy kanálů" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "Zobrazit počet uživatelů" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "Poslední řečené pořadí" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "Vpisovací pole" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "Použít v textu písmo a barvy" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "Zobrazovat pole přezdívek" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "Kontrola pravopisu" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "Použité slovníky:" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "Dokončování přezdívky" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "Přípona dokončení přezdívky:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "Dokončování přezdívky setříděno:" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "přezdívky." + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "Grafický" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "A-Z, Opové jsou první" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "Z-a, Opové jsou poslední" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "Netřídit" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "Levý (horní)" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "Levý (dolní)" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "Pravý (horní)" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "Pravý (dolní)" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Nahoře" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Dole" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Skryté" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "Seznam uživatelů" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "Zobrazit hostitelské názvy v seznamu uživatelů" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "Použít v textu písmo a barvy" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "Zobrazovat ikony pro uživateské módy" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "Barvit přezdívky v seznamu uživatelů" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "Seznam uživatelů setříděný podle:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "Zobrazit seznam uživatelů:" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "Sledování stavu pryč" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "Sleduje stav away (pryč) uživatelů a označuje je jinou barvou" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "Na kanálech menších jak:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "Akce při dvojkliku" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "Měřič prodlevy spojení:" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Okna" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Záložky" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "Vždy" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "Pouze požadované záložky" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "Automatický" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "V samostatném panelu" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "V panelu v popředí" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "Strom" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "Otevřít speciální záložku pro zprávy serveru" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "Otevřít novou záložku jakmile přijde soukromá zpráva" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "Třídit záložky v abecedním pořadí" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "Prostřední tlačítko zavíra záložku" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "Menší text" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "Zaměřit se na nové záložky:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "Umísťování poznámek:" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "Zobrazit přepínač kanálu:" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "Zkrácené popisky záložek na:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "znaky." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "Záložky nebo okna" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "Otevřít kanály v:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "Otevřít dialogy v:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "Otevřít utility v:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Otevřít DCC, ignorace, oznámení, atd. v záložkách nebo oknech?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "Zprávy" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "Historie" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "Dotázat se na potvrzení" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "Dotázat se na adresář pro stahování" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "Uložit bez interakce" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "Soubory a adresáře" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "Automaticky přijmout nabídku souboru:" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Stáhnout soubory do:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "Přesunout kompletní soubory do:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "Uložit přezdívku ve jméně souborů" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "Automaticky otevřít okna DCC" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "Poslat okno" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "Obdržet okno" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "Okno hovoru" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "Jeden upload:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "Maximální rychlost jednoho přenosu" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "Jeden download:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "Kombinace všech uploadů:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "Maximální rychlost pro všechny soubory" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "Kombinace všech downloadů:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "Upozornění" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "Zobrazit notifikace když:" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "Zablikat oznamovací ikonou při:" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "Zablikat pruhem úlohy při:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "Vydat zvuk při:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "Chování panelu nástrojů" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "Povolit ikonu panelu nástrojů" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "Minimalizovat do panelu nástrojů" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "Zavřít do panelu nástrojů" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "Automaticky označit pryč/zpět" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "Automaticky změnit stav při schování do panelu nástrojů." + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "Zvýrazněné zprávy" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Zvýrazněné zprávy jsou ty, kde je zmíněna vaše přezdívka a také:" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "Další slova pro zvýraznění:" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "Přezdívky, které se nebudou zvýrazňovat:" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "Přezdívky, které se budou zvýrazňovat:" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "Výchozí zpráva" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "Konec:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "Opuštění kanálu:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "Pryč" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "Away" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Zobrazovat away jednou" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "Automaticky zrušit stav away" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "" + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "Různé" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "Zobrazit módy v jejich podobě" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "WHOIS při notifikaci" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "Skrývat zprávy o připojení a odchodu" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "*!*@*.host" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "*!*@doména" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "*!*uživatel@*.host" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "*!*uživatel@doména" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "Automatické kopírování" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "Automaticky zahrnout časové značky" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "Skutečné jméno:" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "Alternativní fonty:" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "Použít čas serveru, je-li podporován" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "Automaticky připojit k serverům při odpojení" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "Zpoždění při opakovaném automatickém připojení:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "Druh zákazu:" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Protokolování" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "Zobrazit historii z předchozího sezení" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "Posuvníky:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "Jméno logu:" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Server %c=Kanál %n=Síť." + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "Přidat do logů časové značky" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "Formát časových značek v logu:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URL" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "Povolit lapač URL" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(Vypnuto)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "SOCKS4" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "SOCKS5" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "Auto" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "Všechna připojení" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "Pouze server IRC" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "Pouze DCC" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "Vaše adresa" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "Přiřadit k:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "Užitečné pouze v případě počítačů s více adresami." + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "Přenosy souborů" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "Vzít moji adresu ze serveru IRC" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "Zeptat se IRC serveru na skutečnou adresu. Použít tuto pokud máte nějakou 192.168.*.*!" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "DCC IP adresa:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "V okamžiku nabízení souboru tvrdit, že máte tuto adresu." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "První port pro poslech DCC:" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "Poslední port pro poslech DCC:" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "!Nechat porty na nule pro nulové rozmezí." + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "Proxy server" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "Jméno počítače:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Port:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Typ:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "Použít proxy" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "Autentikace Proxy" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "Použít ověření (jen HTTP nebo SOCKS5)" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "Uživatelské jméno:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "Server identd" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "Povoleno" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "Zvolit soubor s obrázkem" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "Zvolit adresář pro stažení" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Výběr písma" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Procházet..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "Otevřít adresář s daty" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Výběr barvy" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "Barvy textu" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "barvy mIRC" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "Místní barvy:" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Popředí:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Pozadí:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "Označený text" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "Barvy rozhraní" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "Nová data:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "Značící čára" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "Nová zpráva:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "Uživatel je pryč:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "Zvýraznění:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "Kontrolor pravopisu:" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Událost" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "Soubor se zvukem" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "Zvolit soubor se zvukem" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "Zvukový soubor:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "_Procházet..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "Př_ehrát" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Uživatelské rozhraní" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "Vzhled" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Vstupní pole" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Seznam uživatelů" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "Přepínač kanálu" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Barvy" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Chatování" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "Zvuky" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "Pokročilá nastavení" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Nastavení sítě" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Přenosy souboru" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "Identd" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Kategorie" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "Strom není možné umístit nahoru nebo dospod!\nZměňte prosím nejprve rozložení <b>Záložek</b> v nabídce <b>Zobrazit</b>." + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "" + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Některá z nastavení, která byla změněna, vyžadují restart aplikace." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*UPOZORNĚNÍ*\nAutomatické přijmutí DCC do vašeho domovského adresáře\nmůže být nebezpečné a zneužitelné. Např.:\nNěkdo vám může poslat soubor .bash_profile" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "Nastavení - %s" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "<i>(žádné návrhy)</i>" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "Více..." + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "Přidat \"%s\" do slovníku" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "Ignorovat všechny" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "Návrhy oprav" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "Při zpracování textu došlo k chybě" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Tento signál obsahoval pouze %d argumenty, $%d je neplatné" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "Tiskne textové soubory" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ Počet" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Editovat události" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "Nahrát z..." + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Vyzkoušet všechny" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "OK" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "Grabování URL - %s" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Smazat seznam" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Kopírovat vybranou adresu URL" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Kopírovat" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Uložit seznam do souboru" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d op, %d celkem" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "Otevřít URL irc://server:port/channel" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "%s plugin nahrán\n" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "%s plugin odebrán\n" diff --git a/hexchat/po/da.po b/hexchat/po/da.po new file mode 100644 index 0000000..bfbab46 --- /dev/null +++ b/hexchat/po/da.po @@ -0,0 +1,6265 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Birger Langkjer <birger.langkjer@image.dk>, 1999 +# bviktor, 2012 +# bviktor, 2012 +# Daniel Nylander <po@danielnylander.se>, 2007-2008,2010 +# Incendia <dennisskovhermannsen@gmail.com>, 2012-2013 +# Incendia <dennisskovhermannsen@gmail.com>, 2014,2017 +# Henrik Hansen <hh@mailserver.dk>, 1999 +# Keld Simonsen, <keld2keldix.com>, 2011 +# Louis Tim Larsen <louis@louis.dk>, 2014 +# Morten Brix Pedersen <morten@wtf.dk>, 2001 +# scootergrisen, 2016 +# scootergrisen, 2017-2018 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-11-27 22:25+0000\n" +"Last-Translator: scootergrisen\n" +"Language-Team: Danish (http://www.transifex.com/hexchat/hexchat/language/da/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: da\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "HexChat" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "IRC-klient" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "HexChat er en IRC-klient, der er nem at bruge, men som alligevel også kan udvides. Den tillader dig sikkert at forbinde til flere netværk og tale med brugere privat eller i kanaler ved brug af en tilpasselig grænseflade. Du kan endda overføre filer." + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "HexChat understøtter funktioner som: DCC, SASL, proxyer, stavekontrol, underretninger, logning, tilpassede temaer og Python-/Perl-scripts." + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "Primære chatvindue" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "Chat med andre personer online" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "IM;Chat;" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "hexchat" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "Åbn fejlsikret tilstand" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "HexChat-temahåndtering" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Jeg er optaget" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Forlader" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "FRA" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "TIL" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "{usat}" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Netværk" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<ingen>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Kanal" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Venter" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Aktiv" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Fejlede" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Færdig" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Opret forbindelse" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Afbrudt" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "Kan ikke tilgå %s\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Fejl" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s tilbyder \"%s\". Accepterer du?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "Ingen aktive DCC'er\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "_Åbn dialogvindue" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "_Send en fil" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "_Brugerinfo (WhoIs)" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "_Tilføj til venneliste" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "_Ignorer" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "O_peratørhandlinger" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Giv operatørstatus" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Fratag operatørstatus" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "Giv Tale" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "Fratag stemme" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Spark/udeluk" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Spark" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "Udeluk" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "SparkUdeluk" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Forlad kanal" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Deltag i kanal..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "Skriv kanal, der skal deltages i:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Serverlink" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Ping server" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Skjul version" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Giv OP" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "Fjern OP" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "farvel" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Indtast begrundelse til at sparke %s:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "Send fil" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "Dialog" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Send" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Chat" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Ryd" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "Du har ikke skriveadgang til %s. Intet fra denne session kan gemmes." + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* At køre IRC som root er dumt! Du bør oprette\n en almindelig bruger og bruge den til at logge ind.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "JA " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "NEJ " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Du bliver CTCP-flooded fra %s, ignorerer %s\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "Du bliver MSG-flooded af %s, sætter gui_autoopen_dialog til TIL.\n" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "Oversat til %s" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "Ikke fundet" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "Oversat til:" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "Slår %s op..." + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s online\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s offline\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Deltager ikke i nogen kanal. Prøv /join #<kanal>\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Ikke forbundet. Prøv /server <værtsnavn> [<port>]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "Serveren %s eksisterer allerede på netværket %s.\n" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "Tilføjede serveren %s til netværket %s.\n" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Allerede markeret som fraværende: %s\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "Allerede markeret som tilbage.\n" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "Jeg har brug for /bin/sh for at køre!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "Tilgængelige kommandoer:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "Brugerdefinerede kommandoer:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "Plugindefinerede kommandoer:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Skriv /HELP <kommando> for yderligere information, eller /HELP -l" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Ukendt argument '%s' ignoreret." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "Stille understøttes ikke af denne server." + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "Intet sådant plugin fundet.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "Pluginet nægter at blive fjernet.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <navn> <handling>, tilføj en knap under brugerlisten" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "ADDSERVER <NytNetværk> <nyserver/6667>, tilføjer et nyt netværk med en ny server til netværkslisten" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <kommando>, sender en kommando til alle de kanaler du er i" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "ALLCHANL <kommando>, sender en kommando til alle kanaler på den nuværende server" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <kommando>, sender en kommando til alle de servere du er i" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "AWAY [<begrundelse>], sætter dig fraværende (brug /BACK til at fjerne)" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "BACK, sætter dig som tilbage (ikke fraværende)" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <maske> [<udelukkelsestype>], udelukker alle, der matcher masken, fra den aktuelle kanal. Hvis de allerede er på kanalen vil dette ikke sparke dem ud (kræver kanaloperatorstatus)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <variabel> [<værdi>]" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "CHARSET [<kodning>], hent eller sæt kodningen, der bruges til den nuværende forbindelse" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "CLEAR [ALL|HISTORY[-]<mængde>], Rydder det aktive tekstvindue eller kommandohistorie" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "CLOSE [-m], lukker den nuværende fane. Vinduet lukkes, hvis dette er den eneste åbne fane. Er \"-m\"-flaget angivet, lukkes alle anmodninger." + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <kode|jokertegn>, finder en landekode, eksempelvis: dk = danmark" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <kaldenavn> <meddelelse>, sender CTCP-meddelelsen til kaldenavnet, typiske meddelelser er VERSION og USERINFO" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "CYCLE [<kanal>], forlader aktuelle eller angiven kanal og deltager igen med det samme" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <kaldenavn> - acceptér en tilbudt fil\nDCC SEND [-maxcps=#] <kaldenavn> [fil] - sender en fil til nogen\nDCC PSEND [-maxcps=#] <kaldenavn> [fil] - sender en fil ved at bruge passiv-tilstand\nDCC LIST - vis DCC-liste\nDCC CHAT <kaldenavn> - tilbyd DCC-CHAT til nogen\nDCC PCHAT <kaldenavn> - tilbyder DCC-CHAT ved at bruge passiv-tilstand\nDCC CLOSE <type> <kaldenavn> <fil> eksempel:\n /dcc close send johnhansen fil.tar.gz" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <kaldenavn>, fjerner halvkanaloperatørstatus fra kaldenavnet på den aktuelle kanal (kræver kanaloperatørstatus)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <navn>, fjerner en knap under brugerlisten" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <kaldenavn>, fjerner kanaloperatørsstatus fra kaldenavnet på den aktuelle kanal (kræver kanaloperatørsstatus)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <kaldenavn>, fjerner stemmestatus fra kaldenavnet på den aktuelle kanal (kræver kanaloperatørsstatus)" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, hopper af server" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "DNS <kaldenavn|vært|ip>, oversætter en IP eller et værtsnavn" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "DOAT <kanal,liste,/netværk> <kommando>" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <tekst>, udskriver tekst lokalt" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <kommando>, kører kommandoen. Hvis flaget -o er brugt, sendes output til den aktuelle kanal, ellers skrives den ud i det aktuelle tekstfelt" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, sender SIGCONT til processen" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9], dræber en kørende eksekvering i den aktuelle session. Hvis -9 angives bliver processen SIGKILL'et" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, sender SIGSTOP til processen" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, sender data til processens standard ind" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "EXPORTCONF, eksporterer HexChat-indstillinger" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, tømmer den aktuelle servers sendekø" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <vært> [<port>], tunnellerer via en vært, standardværdi på port er 23" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <kaldenavn> [adgangskode], Dræber et kaldenavnsspøgelse" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <kaldenavn>, giver halvkanaloperatørsstatus til kaldenavn (kræver kanaloperatørsstatus)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <adgangskode>, identificér dig selv over for nickserv" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <maske> <typer..> <tilvalg..>\n maske - værtsmaske, der skal ignoreres, eksempelvis: *!*@*.aol.com\n typer - datatyper, der skal ignoreres, en eller alle af:\n PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n alternativer - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <kaldenavn> [<kanal>], indbyder nogen til en kanal, standardalternativet er den aktuelle kanal (kræver kanaloperatørsstatus)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <kanal>, deltag i kanalen" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "KICK <kaldenavn> [begrundelse], sparker kaldenavn ud fra den aktuelle kanal (kræver kanaloperatørsstatus)" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "KICKBAN <kaldenavn> [begrundelse], udelukker og sparker derefter kaldenavn ud fra den aktuelle kanal (kræver kanaloperatørsstatus)" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, tvinger et nyt lag-tjek" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "LASTLOG [-h] [-m] [-r] [--] <streng>, søger efter en streng i bufferen\n Brug -h for at fremhæve de(n) fundne streng(e)\n Brug -m for at skelne mellem store og små bogstaver\n Brug -r, når strengen er et regulært udtryk\n Brug -- (dobbelt bindestreg), for at afslutte tilvalg, når du f.eks. søger efter strengen '-r'" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <fil>, indlæser et plugin eller et script" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, Masse-deop'er alle kanalhalvoperatører i den nuværende kanal (kræver kanaloperatørstatus)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, Masse-deop'er alle kanaloperatører i den nuværende kanal (kræver kanaloperatørstatus)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <handling>, sender handlingen til den nuværende kanal (handlinger er skrevet i tredjeperson, f.eks. /me hopper)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "MHOP, Masse-op'er alle brugere i den nuværende kanal (kræver kanaloperatørsstatus)" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, Massesparker alle undtagen dig selv ud af den aktuelle kanal (kræver kanaloperatørsstatus)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, Masse-op'er alle brugere i den nuværende kanal (kræver kanaloperatørsstatus)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "MSG <kaldenavn> <meddelelse>, sender en privat meddelelse. Send \".\" for at skrive til sidste kaldenavn, eller præfiks med \"=\" for dcc-chat" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "NAMES [kanal], Lister kaldenavnene i kanalen" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <kaldenavn> <meddelelse>, sender en CTCP-notits" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <værtsnavn> [<port>]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <kaldenavn>, bestemmer dit kaldenavn på serveren" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "NOTICE <kaldenavn/kanal> <meddelelse>, sender en notits" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [-n netværk1[,netværk2,...]] [<kaldenavn>], viser din notifikationsliste eller tilføjet nogen til den" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <kaldenavn>, giver kanaloperatørsstatus til kaldenavnet (kræver kanaloperatørsstatus)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<kanal>] [<begrundelse>], forlader kanalen, ved standard er det den nuværende kanal" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <kaldenavn | kanal>, CTCP pinger nick eller kanal" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "QUERY [-nofocus] <kaldenavn> [meddelelse], åbner et nyt privat meddelelse-vindue til nogen og eventuelt sender en meddelelse" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "QUIET <maske> [<stilletype>], sæt alle, der matcher masken, på stille i den aktuelle kanal, hvis serveren understøtter det." + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<begrundelse>], afbryder forbindelsen til den aktuelle server" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <tekst>, sender teksten i rå form til serveren" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<vært>] [<port>] [<adgangskode>], kan kaldes blot som /RECONNECT for at genoprette forbindelse til den aktuelle server eller med /RECONNECT ALL for at genoprette forbindelse til alle de åbne servere" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<vært>] [<port>] [<adgangskode>], kan kaldes blot som /RECONNECT for at genoprette forbindelse til den aktuelle server eller med /RECONNECT ALL for at genoprette forbindelse til alle de åbne servere" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "RECV <tekst>, send rådata til HexChat, som var den modtaget fra IRC-serveren" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "RELOAD <navn>, genindlæser et plugin eller script" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <tekst>, sender teksten til det nuværende vindue" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <kaldenavn> [<fil>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <vært> <port> <kanal>, opretter forbindelse til og deltager i en kanal" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <vært> <port> <kanal>, opretter forbindelse til og deltager i en kanal" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "SERVER [-ssl] <vært> [<port>] [<adgangskode>], opretter forbindelse til en server. Standardporten er 6667 for normale forbindelser og 6697 for ssl-forbindelser" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <vært> [<port>] [<adgangskode>], opretter forbindelse til en server. Standardporten er 6667" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-off|-on] [-quiet] <variabel> [<værdi>]" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "SETCURSOR [-|+]<position>, genpositionerer markøren i inputboksen" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "SETTAB <nyt navn>, skift navnet på et faneblad, tab_trunc-grænse gælder fortsat" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "SETTEXT <ny tekst>, erstat teksten i inputboksen" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<emne>], sætter emne, hvis et bliver skrevet. Hvis ikke vises det nuværende emne" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "\nTRAY -f <timeout> <fil1> [<fil2>] Blink bakke mellem to ikoner.\nTRAY -f <filnavn> Sæt bakke til et fast ikon.\nTRAY -i <nummer> Blink bakke med et internt ikon.\nTRAY -t <tekst> Sæt bakkens værktøjstip.\nTRAY -b <titel> <tekst> Sæt bakkens ballon." + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <maske> [<maske>...], fjerner udelukke af den angivne maske." + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <maske> [STILLE]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <navn>, fjerner et plugin eller et script" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "UNQUIET <maske> [<maske>...], fjerner stille for de angivne masker, hvis serveren understøtter det." + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, åbner en URL i din browser" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "USELECT [-a] [-s] <kaldenavn1> <kaldenavn2> osv., fremhæver kaldenavn(e) i kanalens brugerliste" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <kaldenavn>, giver stemmestatus til nogen (kræver kanaloperatørsstatus)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <meddelelse>, skriver meddelelsen til alle kanaler" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <meddelelse>, sender meddelelsen til alle kanaloperatører på den nuværende kanal" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "Brugerkommando for: %s\n" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "Anvendelse: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nDer er ingen hjælp til den kommando.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "Ingen kommando der hedder det.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "Forkerte argumenter for brugerkommando.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "For mange rekursive brugerkommandoer, afbryder." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "Ukendt kommando %s. Prøv /help\n" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "Intet hexchat_plugin_init-symbol; er det virkeligt et HexChat-plugin?" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "*\tServicerer ident-anmodning fra %s som %s" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "*\tFejl ved start af identd-server: %s" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "IDENTD <port> <brugernavn>" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "Timer %d slettet.\n" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "Intet sådan ref-nummer fundet.\n" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "Ingen timere installeret.\n" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr " Ref# Sekunder Gentag Kommando \n" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "%5d %8.1f %7d %s\n" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Er du sikker på, dette er en SSL-kompatibel server og port?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "Kan ikke oversætte værtsnavnet %s\nTjek dine IP-indstillinger!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "Proxy-gennemløb fejlede.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Skifter til næste server i %s...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "Advarsel: tegnsættet \"%s\" er ukendt. Ingen konvertering vil blive anvendt for netværket %s." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "%C18*%O$t%C18$1%O tilføjet til notifikationsliste." + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "%C22*%O$t%C22$1%O: %C18$2%O på %C24$4%O af %C26$3%O" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "%C22*%O$tKan ikke deltage i %C22$1 %O(%C20Du er udelukket%O)." + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "%C29*%O$tKendte formåenheder: %C29$2%O" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "%C29*%O$tFjernet formåenheder: %C29$2%O" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "%C23*%O$tUnderstøttede formåenheder: %C29$2%O" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "%C23*%O$tAnmodede formåenheder: %C29$1%O" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "%C24*%O$t%C28$1%O er nu kendt som %C18$2%O" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O sætter udelukkelse på %C18$2%O" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "%C22*%O$tKanal %C22$1%O oprettet på %C24$2%O" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O fjerner kanal halv-operatørstatus fra %C18$2%O" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O fjerner kanaloperatørstatus fra %C18$2%O" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O fjerner stemme fra %C18$2%O" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%C sætter undtagelse på %C18$2%O" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O giver kanal halv-operatørstatus til %C18$2%O" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%C sætter invitationsundtagelse på %C18$2%O" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%UKanal Brugere Emne" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "%C22*%O$t%C26$1%O sætter tilstand %C24$2$3%O på %C22$4%O" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "%C22*%O$tKanal %C22$1%O tilstande: %C24$2" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O giver kanaloperatørstatus til %C18$2%O" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O sætter stille på %C18$2%O" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O fjerner undtagelse på %C18$2%O" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O fjerner invitationsundtagelse på %C18$2%O" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "%C22*%O$t%C26$1%O fjerner kanal-nøgleord" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "%C22*%O$t%C26$1%O fjerner brugergrænse" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O sætter kanal-nøgleord til %C24$2%O" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O sætter kanalgrænse til %C24$2%O" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O fjerner udelukkelse på %C18$2%O" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O fjerner stille på %C18$2%O" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "%C22*%O$tKanal %C22$1%O url: %C24$2" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O giver stemme til %C18$2%O" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "%C23*%O$tForbundet. Logger ind nu." + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "%C23*%O$tOpretter forbindelse til %C29$1%C (%C23$2:$3%O)" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "%C20*%O$tForbindelse fejlede (%C20$1%O)" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "%C24*%O$tModtog en CTCP %C24$1%C fra %C18$2%O" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "%C24*%C$tModtog en CTCP %C24$1%C fra %C18$2%C (til %C22$3%C)%O" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "%C24*%O$tModtog en CTCP-lyd %C24$1%C fra %C18$2%O" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "%C24*%O$tModtog en CTCP-lyd %C24$1%C fra %C18$2%C (til %C22$3%O)" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "%C23*%O$tDCC-CHAT til %C18$1%O afbrudt." + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "%C24*%O$tDCC-CHAT-forbindelse etableret til %C18$1%C %C30[%C24$2%C30]%O" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "%C20*%O$tDCC-CHAT til %C18$1%O tabt (%C20$4%O)" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "%C24*%O$tModtog et DCC-CHAT-tilbud fra %C18$1%O" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "%C24*%O$tTilbyder DCC-CHAT til %C18$1%O" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "%C24*%O$tTilbyder allerede CHAT til %C18$1%O" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "%C20*%O$tDCC $1 forbindelsesforsøg til %C18$2%O fejlede (%C20$3%O)" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "%C23*%O$tModtog '%C23$1%C' fra %C18$2%O" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "%C16,17 Type Til/fra Status Størrelse Pla Fil" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "%C20*%O$tModtog en forkert udformet DCC-anmodning fra %C18$1%O.$a010%C23*%O$tIndhold af pakke: %C23$2%O" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "%C24*%O$tTilbyder '%C24$1%O' til %C18$2%O" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "%C23*%O$tIntet sådan DCC-tilbud." + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "%C23*%O$tDCC RECV '%C23$2%O' til %C18$1%O afbrudt." + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "%C24*%O$tDCC RECV '%C23$1%O' fra %C18$3%O fuldført %C30[%C24$4%O cps%C30]%O" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$tDCC RECV-forbindelse etableret til %C18$1 %C30[%O%C24$2%C30]%O" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "%C20*%O$tDCC RECV '%C23$1%O' fra %C18$3%O fejlede (%C20$4%O)" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "%C20*%O$tDCC RECV: Kan ikke åbne '%C23$1%C' til skrivning (%C20$2%O)" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "%C23*%O$tFilen '%C24$1%C' findes allerede. Gemmer den i stedet som '%C23$2%O'." + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "%C24*%O$t%C18$1%C har anmodet at genoptage '%C23$2%C' fra %C24$3%O." + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "%C23*%O$tDCC SEND '%C23$2%C' til %C18$1%O afbrudt." + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "%C24*%O$tDCC SEND '%C23$1%C' til %C18$2%C fuldført %C30[%C24$3%C cps%C30]%O" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$tDCC SEND-forbindelse etableret til %C18$1 %C30[%O%C24$2%C30]%O" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "%C20*%O$tDCC SEND '%C23$1%C' til %C18$2%C fejlede (%C20$3%O)" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "%C24*%O$t%C18$1%C har tilbudt '%C23$2%C' (%C24$3%O byte)" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "%C20*%O$tDCC $1 '%C23$2%C' til %C18$3%O stoppede, afbryder." + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "%C20*%O$tDCC $1 '%C23$2%C' til %C18$3%O fik timeout, afbryder." + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "%C24*%O$t%C18$1%O slettet fra notifikationsliste." + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "%C20*%O$tForbindelse afbrudt (%C20$1%O)" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "%C24*%O$tFandt din IP: %C30[%C24$1%C30]%O" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "%O%C18$1%O tilføjet til ignorerliste." + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "%OIgnorer på %C18$1%O ændret." + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "%C16,17" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "%C16,17 Værtsmaske PRIV NOTI CHAN CTCP DCC INVI UNIG" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "%O%C18$1%O fjernet fra ignorerliste." + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "%OIgnorerliste er tom." + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "%C20*%O$tKan ikke deltage i %C22$1%C (%C20kanalen er kun per invitation%O)" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "%C24*%O$tDu er blevet inviteret til %C22$1%O af %C18$2%O (%C29$3%O)" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "%C23*$t$1 ($3%C23) deltager" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "%C20*%O$tKan ikke deltage i %C22$1%C (%C20kræver nøgleord%O)" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "%C22*%O$t%C26$1%C har sparket %C18$2%C fra %C22$3%C (%C24$4%O)" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "%C19*%O$t%C19Du er blevet dræbt af %C26$1%C (%C20$2%O)" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "%C29*%O$t%C29MOTD sprunget over%O" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "%C23*%O$t%C28$1%C er allerede i brug. Prøver igen med %C18$2%O..." + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "%C23*%O$t%C28$1%C er fejlbehæftet. Prøver igen med %C18$2%O..." + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "%C20*%O$tKaldenavn er fejlbehæftet eller allerede i brug. Brug /NICK for at prøve et andet." + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "%C20*%O$tIngen sådan DCC." + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "%C23*%O$tIngen proces kører i øjeblikket" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "%C23*%O$tNotifikation: %C18$1%C er fraværende (%C24$2%O)" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "%C23*%O$tNotifikation: %C18$1%C er tilbage" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tNotifikationsliste er tom." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "%C16,17 Notifikationsliste" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "%C23*%O$t%C23$1%O brugere i notifikationsliste." + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "%C23*%O$tNotifikation: %C18$1%C er offline (%C29$3%O)" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "%C23*%O$tNotifikation: %C18$1%C er online (%C29$3%O)" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "%C24*$t$1 ($2%C24) er gået" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "%C24*$t$1 ($2%C24) er gået ($4)" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "%C24*%O$tPing-svar fra %C18$1%C: %C24$2%O sekund(er)" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "%C20*%O$tIntet ping-svar i %C24$1%O sekunder, afbryder forbindelsen." + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "%C24*%O$tA proces kører allerede" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "%C24*$t$1 har afsluttet ($2)" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "%C24*%O$t%C26$1%C sætter tilstande %C30[%C24$2%C30]%O" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "%O-%C29$1/Wallops%O-$t$2" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "%C24*%O$tSlår IP-numre op for %C18$1%O..." + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "%C23*%O$tGodkendelse via SASL som %C18$1%O (%C24$2%O)" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "%C29*%O$tForbundet." + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "%C29*%O$tOpslag efter %C29$1%O" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "%C23*%O$tStoppede forrige forbindelsesforsøg (%C24$1%O)" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "%C22*%O$tEmne for %C22$1%C er: $2%O" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "%C22*%O$t%C26$1%C har ændret emnet til: $2%O" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "%C22*%O$tEmne for %C22$1%C sat af %C26$2%C (%C24$3%O)" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C20*%O$tUkendt vært. Skrev du forkert?" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "%C20*%O$tKan ikke deltage i %C22$1%C (%C20brugergrænse nået%O)" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "%C22*%O$tBrugere på %C22$1%C: %C24$2%O" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%C er fraværende %C30(%C23$2%O%C30)%O" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "%C23*%O$t%C28[%C18$1%C28] %OSlut på WHOIS-liste." + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O passiv %C23$2%O" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O passiv %C23$2%O, indlogning: %C23$3%O" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O Rigtig vært: %C23$2%O, rigtig IP: %C30[%C23$3%C30]%O" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "%C19*%O$tTaler nu på %C22$2%O" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "%C19*%O$tDu er blevet sparket fra %C22$2%C af %C26$3%O (%C20$4%O)" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "%C19*%O$tDu har forladt kanalen %C22$3%O" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "%C19*%O$tDu har forladt kanalen %C22$3%C (%C24$4%O)" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "%C20*%O$tDu har inviteret %C18$1%O til %C22$2%O (%C24$3%O)" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "%C20*%O$tDu er nu kendt som %C18$2%O" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "Indlæs log fra" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** AFSLUTTER LOGNING KL. %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** BEGYNDER LOGNING KL. %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "* Kan ikke åbne logfil(er) til skrivning. Tjek\ntilladelserne på %s" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "Venstre meddelelse" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "Højre meddelelse" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "IP-adresse" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Brugernavn" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "Kaldenavnet på personen som deltager" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "Kanalen der bliver deltaget i" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "Personens vært" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "Personens konto" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Kaldenavn" + +#: src/common/text.c:980 +msgid "The action" +msgstr "Handlingen" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "Mode-tegn" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "Identificeret tekst" + +#: src/common/text.c:987 +msgid "The text" +msgstr "Teksten" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "Meddelelsen" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Servernavn" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "Kendte formåenheder" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "Fjernede formåenheder" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "Server-formåenheder" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "Anmodet formåenheder" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Tidligere kaldenavn" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Nyt kaldenavn" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "Kaldenavnet på personen der ændrede emnet" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Emne" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "Kaldenavnet på den som sparkede" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "Personen der bliver sparket" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "Kanalen" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "Grunden" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "Kaldenavnet på personen som forlader" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "Tiden" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "Opretteren" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Kaldenavn" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Grund" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Vært" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "Hvem er det fra" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "Tiden i x.x format (se nedenfor)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "Kanalen det går til" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "Lyden" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "Kaldenavnet på personen" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "CTCP-hændelsen" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "Kaldenavnet på personen som satte nøglen" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "Nøglen" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "Kaldenavnet på personen som satte grænsen" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "Grænseværdien" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "Kaldenavnet på personen som foretog op'ingen" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "Kaldenavnet på personen som er blevet op'et" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "Kaldenavnet på personen som er blevet halvop'et" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "Kaldenavnet på personen som foretog halvop'ingen" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "Kaldenavnet på personen som foretog stemme'ingen" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "Kaldenavnet på personen som er blevet stemme'et" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "Kaldenavnet på personen som foretog udelukkelsen" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "Udelukkelsesmasken" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "Kaldenavnet på personen som satte på stille" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "Stille-masken" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "Kaldenavnet som fjernede nøglen" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "Kaldenavnet som fjernede grænsen" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "Kaldenavnet på personen som foretog afop'ingen" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "Kaldenavnet på personen som er blevet afop'et" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "Kaldenavnet på personen som foretog dehalfop'ingen" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Kaldenavnet på personen som er blevet dehalfop'et" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "Kaldenavnet på personen som foretog fjernelse af stemme" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "Kaldenavnet på personen som har fået fjernet sin stemme" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "Kaldenavnet på personen som fjernede udelukkelsen" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "Kaldenavnet på personen som fjernede stilleningen" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "Kaldenavnet på personen som foretog undtagelse" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "Undtagelsesmasken" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "Kaldenavnet på personen som fjernede undtagelse" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "Kaldenavnet på personen som foretog invitationen" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "Invitationsmasken" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "Kaldenavnet på personen som fjernede invitationen" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "Kaldenavnet på personen som satte tilstanden" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "Tilstandens fortegn (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "Tilstandsbogstavet" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "Kanalen som den sættes på" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Fuldt navn" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Kanalmedlemsskab/\"er en IRC-operatør\"" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Serverinformation" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Passiv-tid" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Tilslutningstid" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Fraværs-grund" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Meddelelse" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Konto" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "Rigtige bruger@vært" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "Rigtige IP" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Kanalnavn" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "Mekanisme" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "Rå numerisk eller identifikator" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Tekst" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Kaldenavn på person som inviterede dig" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Brugerliste" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "Kaldenavn i brug" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Afprøver kaldenavn" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Port" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "Tilstande-streng" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "DCC-type" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Filnavn" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Filnavn på mål" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "Stinavn" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Vinduesplacering" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Størrelse" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "DCC-streng" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "Begrundelse for fravær" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "Antal notifikationsposter" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Gammelt filnavn" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Nyt filnavn" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Modtager" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Værtsmaske" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Værtsnavn" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "Netpakken" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "Sekunder" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "Kaldenavn på person som er blevet inviteret" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Udelukkelsesmaske" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "Hvem satte udelukkelsen" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Udelukkelsestid" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "Kan ikke læse lydfil:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "Fjern-vært lukkede socket" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "Forbindelse nægtet" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "Ingen rute til værten" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Forbindelsen fik timeout" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "Kan ikke tildele denne adresse" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "Forbindelse nulstillet af ligemand" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "Ascension" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Forenede Arabiske Emirater" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "Luftfartsrelaterede områder" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Afghanistan" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Antigua og Barbuda" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Albanien" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Armenien" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Nederlandske antiller" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Antarktis" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Argentina" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "Omvendt DNS" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Samoa" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "Asien-stillehavsregion" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Østrig" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "Nato" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Australien" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "Åland" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Azerbajdzjan" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Bosnien og Hercegovina" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Bangladesh" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Belgien" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Bulgarien" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Bahrain" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "Virksomheder" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Brunei Darussalam" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Bolivia" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Brasilien" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Bahamas" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Bhutan" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Bouvetøen" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Hviderusland" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Canada" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "Catalansk" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Kokosøerne" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "Demokratiske republik Kongo" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "Centralafrikanske republik" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Kongo" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "Schweitz" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "Elfenbenskysten" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Cook-øerne" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Chile" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Kamerun" + +#: src/common/util.c:738 +msgid "China" +msgstr "Kina" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Colombia" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Internic, kommercielt" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "Kooperativer" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "Serbien og Montenegro" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Cuba" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Kap Verde" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Juleøen" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Cypern" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "Tjekkiet" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "Østtyskland" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Tyskland" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Djibouti" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Danmark" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Dominica" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "Dominikanske republik" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Algeriet" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Ecuador" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Uddannelsesinstitution" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Estland" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Ægypten" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Vestsahara" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "Spanien" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Etiopien" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "Europæiske Union" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Finland" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Fiji" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Falklandsøerne" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Mikronesien" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Færøerne" + +#: src/common/util.c:770 +msgid "France" +msgstr "Frankrig" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Storbritanien" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Georgien" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Fransk Guyana" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "Britiske kanaløer" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Ghana" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Grønland" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Regering" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Guadeloupe" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Ækvatorialguinea" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Grækenland" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Sydgeorgien og Sødre Sandwichøer" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Guinea-Bissau" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Guyana" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Heard- og McDonald-øerne" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Kroatien" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Haďti" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Ungarn" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Indonesien" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Irland" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Israel" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "Isle of Man" + +#: src/common/util.c:801 +msgid "India" +msgstr "Indien" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "Informativ" + +#: src/common/util.c:803 +msgid "International" +msgstr "Internationalt" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Britisk territorium i Indiske Ocean" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Irak" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "Iran" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Island" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Italien" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Jamaica" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Jordan" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "Firmajobs" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Japan" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Kenya" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Kirgizistan" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Cambodia" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Comorerne" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "St. Kitts og Nevis" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Nordkorea" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Sydkorea" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Kuwait" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Caymanøerne" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Kazakstan" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Libanon" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Sankt Lucia" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Liberia" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Litauen" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Luxemborg" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Letland" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Libyen" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Marokko" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Monaco" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Moldavien" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "Montenegro" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "Forenede Stater, medicinskt" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Madagaskar" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Marshalløerne" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Militær" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Makedonien" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Myanmar (Burma)" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Mongoliet" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Macau" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "Mobile enheder" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Nordlige Marianerøerne" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Martinique" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Mauretanien" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Mauritius" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "Museer" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Maldiverne" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "Mexico" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Malaysia" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Moçambique" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Namibia" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "Individers navne" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Ny Kaledonien" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Nigeria" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Internic, netværk" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Norfolkøerne" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Nigeria" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Nederlandene" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Norge" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "New Zealand" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "Internic, nonprofitorganisation" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Perú" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Fransk Polynesien" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Papua Ny Guinea" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Filippinerne" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Polen" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "St. Pierre og Miquelon" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Puerto Rico" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "Stillinger" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "Palestinske territorie" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Portugal" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Paraguay" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Qatar" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Réunion" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Rumænien" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "Gamle ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "Serbien" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Russiske Føderation" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Rwanda" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Saudiarabien" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Solomonøerne" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Seychellerne" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Sudan" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Sverige" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Singapore" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "St. Helena" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Slovenien" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard og Jan Mayen-øerne" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "Slovakiet" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Somalia" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Surinam" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "Sydsudan" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "Săo Tomé og Principe" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Tidligere USSR" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Syrien" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Swaziland" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Turks- og Caicos-øerne" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Tchad" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "Tjenester til internetkommunikation" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "Franske Sydterritorier" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Thailand" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Tadzjikistan" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Řsttimor" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Tunesien" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Tyrkiet" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "Rejse og turisme" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Trinidad og Tobago" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Tanzania" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Ukraine" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Storbritannien" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "Amerikas Forenede Stater" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Uruguay" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Uzbekistan" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Vatikanstaten" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "St. Vincent og Grenadinerne" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "Britiske Jomfruøer" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "Jomfruøerne (USA)" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "Wallis- og Futuna-øerne" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "Voksenunderholdning" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Jemen" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Jugoslavien" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Sydafrika" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Zambia" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "Kunne ikke oprette forbindelse til sessionsbus" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "Kunne ikke fuldføre NameHasOwner" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "Kunne ikke fuldføre kommando" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "fjernadgang" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "plugin for fjernadgang via DBUS" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Kunne ikke oprette forbindelse til sessionsbus: %s\n" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Kunne ikke overtage %s: %s\n" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Tegnoversigt" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "Udelukkelser" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "Undtagelser" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "Undtagelse" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "Invitationer" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Inviter" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "Stiller" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "Stille" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "Kopiér maske" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "%s på %s af %s" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "Kopiér post" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "Ikke tilsluttet." + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "Du skal vælge nogle udelukkelser." + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "Er du sikker på, at du vil fjerne alle viste poster i %s?" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "Type" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Maske" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "Fra" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Dato" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Du kan kun åbne udelukkelseslisten inde fra et kanalfaneblad." + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "Udelukkelsesliste (%s) - %s" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Fjern" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Beskær" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Genopfrisk" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Viser %d/%d brugere på %d/%d kanaler." + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Vælg et outputfilnavn" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "_Deltag i kanal" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "_Kopiér kanalnavn" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "Kopiér _emnetekst" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "Kanalliste (%s) - %s" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "_Søg" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "_Download liste" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "Gem _liste..." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "Vis kun:" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "kanaler med" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "til" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "brugere." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "Led i:" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Kanalnavn" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "Søgetype:" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "Simpel søgning" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "Mønstermatchning (jokertegn)" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "Regulært udtryk" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Find:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Send fil til %s" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "Den fil kan ikke genoptages." + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "Kan ikke få adgang til fil: %s\n%s.\nGenoptagelse ikke mulig." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "Filen i downloadmappen er større end filen som blev tilbudt. Genoptagelse ikke mulig." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "Kan ikke genoptage samme fil fra to personer." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "Uploads og downloads - %s" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Status" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Fil" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Begge" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "Uploads" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "Downloads" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "Detaljer" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "Fil:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "Adresse:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Afbryd" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Acceptér" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Genoptag" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "Åbn mappe..." + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "DCC-chatliste - %s" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Modtaget" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Sendt" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "Starttid" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "Tilføj" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Slet" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Annuller" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Gem" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "Opret ikke automatisk forbindelse til servere" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "Brug en anden konfigurationsmappe" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "Indlæs ikke automatisk nogen plugins" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "Vis auto-indlæs-mappe med plugin/script" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "Vis mappe for brugerkonfiguration" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "Åbn en irc://server:port/kanal?nøgle-URL" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "Eksekveringskommando:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "Åbn URL eller eksekver kommando i en eksisterende HexChat" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Start minimeret. Niveau 0=Normal 1=Ikonificeret 2=Aktivitetsfelt" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "niveau" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "Vis versionsinformation" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "Kunne ikke åbne skrifttype:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "Søgebuffer er tom.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d byte" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Sendekø for netværket: %d byte" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "Kør kommando-handlingen kører dataene i data 1 som var det indtastet i indtastningsboksen hvor du trykkede tastesekvensen. Dermed kan den indeholde tekst (som vil blive sendt til kanalen/personen), kommandoer eller brugerkommandoer. Når det køres bruges, alle \\n-tegn i data 1 til at afgrænse kommandoer, så det er muligt at køre mere end én kommando. Hvis du vil have et \\ i teksten i tekstkørslen så indtast \\\\" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "Kommandoen Skift side skifter mellem sider i notesbogen. Sæt data 1 til siden som du vil skifte til. Hvis data 2 er sat til noget så vil skiftet være relativt til den aktuelle position. Sæt data 1 til auto for at skifte til siden med den seneste og vigtigste aktivitet (anmodninger først, så kanaler med fremhævning, kanaler med dialoger, kanaler med andre data)" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "Kommandoen Indsæt i buffer vil indsætte indholdet af data 1 i feltet, hvor tastkombinationen tryktes ved nuværende markørposition" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "Kommandoen Rul side ruller tekst-widget'en én side eller én linje op eller ned. Sæt data 1 til enten Top, Bottom, Up, Down, +1 eller -1." + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "Kommandoen Sæt buffer sætter posten hvor nøglesekvensen blev indtastet til indholdet af data 1" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "Kommandoen Seneste kommando gør at feltet indeholder den senest angivne kommando - samme som at trykke opadpil i skallen" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "Kommandoen Næste kommando gør at feltet indeholder næste kommando som blev angivet - samme som at trykke på ned i en skal" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "Denne kommando ændre teksten i posten til at færdiggøre et ufuldstændigt kaldenavn eller kommando. Hvis data 1 er sat, så vil dobbelttryk i en streng vælge det sidste kaldenavn, ikke det næste" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "Denne kommando ruller op og ned i listen over kaldenavne. Hvis data 1 er sat til noget som helst ruller det op, ellers ruller det ned" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "Denne kommando kontrollerer det senest angivne ord i feltet op mod erstatningslisten og erstatter det hvis det finder en træffer" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "Denne kommando flytter det forreste faneblad et trin til venstre" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "Denne kommando flytter det forreste faneblad et trin til højre" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "Denne kommando flytter det aktuelle faneblad et trin til venstre" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "Denne kommando flytter det aktuelle faneblad et trin til højre" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "Skub inputlinjen ind i historikken, men send den ikke til serveren" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "Der var en fejl ved indlæsning af konfigurationen for tastebindinger" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "Vælg en række for at få hjælp til dens handling." + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "Tastaturgenveje - %s" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "Kan ikke skrive til dén fil." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "Kan ikke læse dén fil." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "Den maske findes allerede." + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Privat" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Bemærk" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "Afignorér" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "Er du sikker på, at du vil fjerne alle ignoreringer?" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "Angiv maske at ignorere:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "Ignorerliste - %s" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Ignoreringsstatistikker:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Kanal:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privat:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Bemærk:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Inviter:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "Tilføj..." + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "Kanalnavn er for kort, prøv igen." + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "Forbindelse færdig - %s" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "Forbindelse til %s færdig." + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "Der er ikke indtastet nogen kanal (chatrum) i serverlistevinduet til automatisk deltagelse for dette netværk." + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "Hvad vil du gøre herefter?" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "_Intet, jeg deltager i en kanal senere." + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "_Deltag i denne kanal:" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Hvis du kender navnet på kanalen, du vil gå ind i, så indtast den her." + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "_Åbn kanallisten." + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "Hentning af kanallisten kan tage et minut eller to." + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "_Vis altid denne dialog efter tilslutning." + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "Dialog med" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Emne for %s er: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "Intet emne er sat" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "Denne server har stadig %d tilknyttede kanaler eller dialoger. Luk dem alle?" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "Afslut HexChat?" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "Spørg ikke næste gang." + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Du er forbundet til %i IRC-netværk." + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "Er du sikker på, at du vil afslutte?" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "En del filoverførsler er stadigvæk aktive." + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "_Minimér til aktivitetsfelt" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "Indsæt attribut eller farvekode" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>Fed</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>Understreget</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "<i>Kursiv</i>" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "Normal" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "Farverne 0-7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "Farverne 8-15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "_Indstillinger" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "_Log til disk" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "_Genindlæs historik" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "Fjern _farver" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "_Skjul meddelelser om indgang/udgang" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "Yderligere _underretninger" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "Bip ved _meddelelse" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "Blink felt_ikonen" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "Blink _værktøjslinjen" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "_Frigør" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "_Luk" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "Brugergrænse skal være et nummer!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "Filterfarver" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "Ingen meddelelser udefra" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "Emnebeskyttelse" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "Kun for inviterede" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "Modereret" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "Udelukkelsesliste" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Nøgleord" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "Brugergrænse" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Indtast nyt kaldenavn:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "Ingen resultater fundet." + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "Søgning nåede slutning eller ikke fundet." + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "_Fremhæv alle" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "Fremhæv alle forekomster og understreg den aktuelle forekomst." + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "_Forskel på store og små bogstaver" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "Udfør en søgning, hvor der skelnes mellem store og små bogstaver." + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "_Regulært udtryk" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "Betragt søgestreng som et regulært udtryk." + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Ukendt vært" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "Konto ukendt" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Ukendt" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Rigtige navn:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "Bruger:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "Konto:" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "Land:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "Server:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "%u minutter siden" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "Sidste meddelelse:" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "Fraværende-meddelelse:" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "%d kaldenavne valgt." + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "Menulinjen er skjult nu. Du kan vise den igen ved at trykke på Control+F9 eller højreklik på en tom del af det primære tekstområde." + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "Åbn link i browser" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "Kopiér valgte link" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Deltag i kanal" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "Forlad kanal" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "Skift kanal" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "_Auto-deltag" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "Auto-deltag i kanal" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "_Auto-opret forbindelse" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "Brugermenu - %s" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "Rediger denne menu" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "Markeringslinje deaktiveret." + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "Markeringslinje aldrig sat." + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "Markeringslinje nulstillet manuelt." + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "Markeringslinje nulstillet pga. at tilbagerulningsgrænsen blev overskredet." + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "Markeringslinje nulstillet af CLEAR-kommando." + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "Ukendt tilstand for markeringslinje." + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "Hent kanalliste" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr " er blevet bygget uden understøttelse af plugins." + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "Brugerkommandoer - specielle koder:\n\n%c = aktuelle kanal\n%e = aktuelle netværksnavn\n%m = maskininfo\n%n = dit kaldenavn\n%t = klokkeslæt/dato\n%v = HexChat version\n%2 = ord 2\n%3 = ord 3\n&2 = ord 2 til slutningen af linjen\n&3 = ord 3 til slutningen af linjen\n\neksempelvis:\n/kommando john hej\n\n%2 vil være \"john\"\n&2 vil være \"john hej\"." + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "Brugerlisteknapper - specielle koder:\n\n%a = alle valgte kaldenavne\n%c = aktuelle kanal\n%e = aktuelle netværksnavn\n%h = valgte kaldenavns værtsnavn\n%m = maskininfo\n%n = dit kaldenavn\n%s = valgte kaldenavn\n%t = klokkeslæt/dato\n%u = valgte brugers konto" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "Dialogknapper - specielle koder:\n\n%a = alle valgte kaldenavne\n%c = aktuelle kanal\n%e = aktuelle netværksnavn\n%h = valgte kaldenavns værtsnavn\n%m = maskininfo\n%n = dit kaldenavn\n%s = valgte kaldenavn\n%t = klokkeslæt/dato\n%u = valgte brugers konto" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "CTCP-svar - specialkoder:\n\n%d = data (hele ctcp-kommandoen)\n%e = aktuelt netværksnavn\n%m = maskininformation\n%s = kaldenavnet som sendte ctcp-kommandoen\n%t = tid/dato\n%2 = ord 2\n%3 = ord 3\n&2 = ord 2 til slutningen på linjen\n&3 = ord 3 til slutningen på linjen\n\n" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "URL-behandlere - specielle koder:\n\n%s = URL-strengen\n\nEt ! foran kommandoen\nindikerer at den skal sendes\ntil en skal i stedet for HexChat" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "Brugerdefinerede kommandoer - %s" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "Brugerliste pop op-menu - %s" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "Erstat - %s" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "Erstat med" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "URL-behandlere - %s" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "Brugerlisteknapper - %s" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "Dialogknapper - %s" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "CTCP-svar - %s" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "He_xChat" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "_Netværksliste" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "_Ny" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "Server-faneblad" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "Kanal-faneblad" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "Server-vindue" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "Kanal-vindue" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "_Indlæs plugin eller script" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "_Afslut" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "_Vis" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "_Menulinje" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "_Emnelinje" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "_Brugerliste" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "_Brugerliste-knapper" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "_Tilstandsknapper" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "_Kanalskifter" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "_Faneblade" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "T_ræ" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "_Netværksmålere" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Fra" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "Graf" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "_Fuldskærm" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "_Server" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "_Afbryd forbindelse" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "_Genopret forbindelse" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "_Deltag i en kanal" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "_Kanalliste" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "_Fraværende" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "_Brugermenu" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "_Indstillinger" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "_Præferencer" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "Erstat automatisk" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "CTCP-svar" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "Dialogknapper" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "Tastaturgenveje" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "Teksthændelser" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "URL-behandlere" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "Brugerkommandoer" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "Brugerliste-knapper" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "Brugerliste-pop op" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "_Vindue" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "_Udelukkelsesliste" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "Direkte chat" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "_Filoverførsler" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "Venneliste" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "Ignorerliste" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "_Plugins og scripts" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "_Rå log" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "_URL-opfanger" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "Nulstil markeringslinje" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "Flyt til markeringslinje" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "_Kopiér valgte" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "_Ryd tekst" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "Gem tekst" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "Søg" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "Søg i tekst" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "Søg næste" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "Søg forrige" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "_Hjælp" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "_Indhold" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "_Om" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "_Tilkobl" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Navn" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Sidst set" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "Offline" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Aldrig" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "%d minutter siden" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "En time siden" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "%d timer siden" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "Online" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "Indtast kaldenavn som skal tilføjes:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "Giv besked på disse netværk:" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "Kommasepareret liste over netværk accepteres." + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "Venneliste - %s" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "Åbning af dialog" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "Fremhævet meddelelse fra: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "Kanalmeddelelse fra: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "Fil-tilbud fra: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "Invitation til kanal af: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "Notits fra: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "Privat meddelelse fra: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "Forbundet til %u netværk og %u kanaler - %s" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "_Gendan vindue" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "_Skjul vindue" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "_Blink ved" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "Kanalmeddelelse" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "Privat meddelelse" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "Fremhævet meddelelse" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "_Ændr status" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "_Fraværende" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "_Tilbage" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "Fremhævet meddelelse fra: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "%u fremhævede meddelelser, seneste fra: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "Kanalmeddelelse fra: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "%u kanalmeddelelser. - %s" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "Privat meddelelse fra: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "%u private meddelelser, seneste fra: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "Fil-tilbud fra: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "%u fil-tilbud, seneste fra: %s (%s) - %s" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Version" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Beskrivelse" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Vælg et plugin eller script som skal indlæses" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "Plugins og scripts - %s" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "Ind_læs..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "_Fjern" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "_Genindlæs" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "Gem som..." + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "Rå log (%s) - %s" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "Ryd rå log" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Nyt netværk" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Vil du virkelig fjerne netværket \"%s\" og alle dets servere?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "Brugernavn må ikke være tomt." + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "Du kan ikke have et tomt kaldenavn." + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "Du skal have to unikke kaldenavne." + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "Måden hvorpå du identificerer dig overfor serveren. Brug connect-kommandoer for brugerdefinerede loginmetoder." + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "Rediger %s - %s" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "Servere" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "Auto-deltag i kanaler" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "Connect-kommandoer" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "%n=Kaldenavn\n%p=Adgangskode\n%r=Rigtige navn\n%u=Brugernavn" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "Nøgleord (adgangskode)" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "_Rediger" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "Opret kun forbindelse til valgte server" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Skift ikke mellem alle serverne når forbindelsen fejler." + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "Opret automatisk forbindelse til dette netværk" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "Forbigå proxyserver" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "Brug SSL til alle servere på dette netværk" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "Acceptér ugyldige SSL-certifikater" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "Brug global brugerinfo" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "_Kaldenavn:" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "Andet valg:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "_Rigtige navn:" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "_Brugernavn:" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "Loginmetode:" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Adgangskode:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "Adgangskode brugt ved login. Lad være tom, hvis i tvivl." + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "Tegnsæt:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "Netværksliste - %s" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "Brugerinformation" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "Tredje valg:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Netværk" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "Ingen netværksliste ved opstart" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "Vis kun favoritter" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "_Rediger..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "_Sortér" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "Sorterer netværkslisten i alfabetisk rækkefølge. Brug tasterne Skift+Op og Skift+Ned for at flytte en række." + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "Sæt som _favorit" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "Markér eller fjern markering af dette netværk som en favorit." + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "_Opret forbindelse" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "Afrikaans" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Albansk" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "Amharisk" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "Asturisk" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Azerbajdzjan" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "Baskisk" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Hviderussisk" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Bulgarsk" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "Kinesisk (forenklet)" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "Kinesisk (traditionel)" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "Tjekkisk" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "Dansk" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "Nederlandsk" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "Engelsk (britisk)" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "Engelsk" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Estisk" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "Finsk" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "Fransk" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "Galicisk" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "Tysk" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "Græsk" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "Gujaratisk" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "Hindi" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "Ungarsk" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "Indonesisk" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "Italiensk" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "Japansk" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "Kannada" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "Kinyarwanda" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "Koreansk" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "Lettisk" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "Litauisk" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "Makedonsk" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Malaysia" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "Malayalam" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "Norsk (bokmål)" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "Norsk (nynorsk)" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "Polsk" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "Portugisisk" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "Portugisisk (brasiliansk)" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "Punjabi" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "Russisk" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "Serbisk" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "Slovakisk" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "Slovensk" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "Spansk" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "Svensk" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Thai" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "Tyrkisk" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "Ukrainsk" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Vietnamesisk" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "Walloon" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Generelt" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "Sprog:" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "Primære skrifttype:" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Skrifttype:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "Tekstboks" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "Farvede kaldenavne" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "Giv hver person på IRC en forskellig farve" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "Indryk kaldenavne" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "Højrejuster kaldenavne" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "Vis markeringslinje" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "Indsæt en rød linje efter den sidst læste tekst." + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Baggrundsbillede:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "Indstillinger for gennemsigtighed" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "Vinduesopacity:" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "Tidsstempler" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "Aktivér tidsstempler" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "Tidsstempelformat:" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "Se strftime MSDN-artiklen for detaljer." + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "Se strftime-mansiden for detaljer." + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "Titellinje" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "Vis kanaltilstande" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "Vis antal brugere" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Å" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "Senest talte rækkefølge" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "Inputboks" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "Brug tekstboksens skrifttype og farver" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "Gengiv farver og attributter" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "Vis kaldenavnsboks" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "Vis brugertilstandsikon i kaldenavnsboks" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "Stavekontrol" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "Ordbøger, der skal bruges:" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "Brug sprogkoder (som i \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\nAdskil flere poster med kommaer." + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "Brug sprogkoder. Adskil flere poster med kommaer." + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "Fuldførsel af kaldenavn" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "Suffiks for fuldførsel af kaldenavn:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "Rækkefølge for fuldførsel af kaldenavn:" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "Mængde for fuldførsel af kaldenavn:" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "Tærskel af kaldenavne til start af visning i stedet for fuldførsel" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "kaldenavne." + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "Grafisk" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "A-Å, operatører først" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "Å-A, operatører sidst" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Å-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "Usorteret" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "Venstre (øvre)" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "Venstre (nedre)" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "Højre (øvre)" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "Højre (nedre)" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Top" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Bund" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Skjult" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "Brugerliste" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "Vis værtsnavne i brugerlisten" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "Brug tekstboksens skrifttype og farver" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "Vis ikoner for brugertilstande" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "Brug grafiske ikoner fremfor tekstsymboler i brugerlisten." + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "Farvelæg brugenavne i brugerliste" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "Farvelægger kaldenavne som i chat." + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "Vis antal brugere i kanaler" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "Brugerliste sorteret efter:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "Vis brugerliste på:" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "Fraværende-sporing" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "Spor fraværstatus for brugere og markér dem i en anden farve" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "På kanaler mindre end:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "Handling ved dobbeltklik" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "Ekstra gadgets" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "Lagmåler:" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "Throttlemåler:" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Vinduer" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Faneblade" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "Altid" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "Kun anmodede faneblade" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "Automatisk" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "I et ekstra faneblad" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "I det forreste faneblad" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "Træ" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "Skiftertype:" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "Åbn et ekstra faneblad til servermeddelelser" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "Åbn et nyt faneblad når du modtager en privat meddelelse" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "Sortér faneblade i alfabetisk orden" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "Vis ikoner i kanaltræet" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "Vis prikkede linjer i kanaltræet" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "Rul musehjul for at skifte faneblade" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "Midterklik for at lukke faneblad" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "Mindre tekst" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "Giv fokus til nye faneblade:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "Placering af notitser:" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "Vis kanalskifter ved:" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "Afkort fanebladsnavne til:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "tegn." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "Faneblade eller vinduer" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "Åbn kanaler i:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "Åbn dialoger i:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "Åbn værktøjer i:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Åbn DCC, ignorering, notifikation osv. i faneblade eller vinduer?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "Meddelelser" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "Tilbagerulning" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "Spørg efter bekræftelse" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "Spørg efter downloadmappe" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "Gem uden interaktion" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "Filer og kataloger" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "Acceptér automatisk fil-tilbud:" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Download filer til:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "Flyt færdige filer til:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "Gem kaldenavn i filnavne" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "Åbn automatisk DCC-vinduer" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "Send-vindue" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "Modtagelsesvindue" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "Chatvindue" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "Maksimum hastigheder for filoverførsel (byte pr. sekund)" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "En upload:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "Maximal hastighed for en overførsel" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "En download:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "Alle uploads lagt sammen:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "Maximal hastighed for alle filer" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "Alle downloads lagt sammen:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "Underretninger" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "Vis notifikationer ved:" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "Blink bakkeikon ved:" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "Blink værktøjslinjen ved:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "Lav en biplyd ved:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "Afspil systemlyden \"Instant Message Notification\" ved de valgte begivenheder" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "Afspil \"message-new-instant\" fra freedesktop.org-lydtemaet ved de valgte begivenheder" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "Afspil et GTK-bip ved de valgte begivenheder" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "Udelad underretninger når markeret som fraværende" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "Udelad underretninger når vinduet har fokus" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "Bakke-opførsel" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "Aktivér ikon for systembakke" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "Minimer til bakke" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "Luk til bakke" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "Markér automatisk fraværende/tilbage" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "Skift automatisk status ved når der skjules til bakke." + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "Vis kun notifikationer når skjult eller vist som ikon" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "Fremhævede meddelelser" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Fremhævede meddelelser er dem hvor dit kaldenavn er nævnt, men også:" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "Ekstra ord som skal fremhæves:" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "Kaldenavne som ikke skal fremhæves:" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "Kaldenavne som altid skal fremhæves:" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Separér flere ord med kommategn.\nJokertegn accepteres." + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "Hop dok-ikon ved:" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "Standardmeddelelser" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "Afslut:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "Forlad kanal:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "Fraværende:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "Fraværende" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Vis fraværende én gang" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "Vis kun identiske fraværende-meddelelser én gang." + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "Automatisk markering af fraværende" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "Fjern dig selv som fraværende før meddelelser sendes." + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "Diverse" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "Vis MODE i rå form" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "WHOIS ved notifikation" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "Sender et /WHOIS, når en bruger fra din notifikationsliste kommer online." + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "Skjul deltag-/forlad-meddelelser" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "Skjul deltag-/forlad-meddelelser som standard." + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "Skjul meddelelser om ændring af kaldenavn" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "*!*@*.vært" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "*!*@domæne" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "*!*bruger@*.vært" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "*!*bruger@domæne" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "Auto-kopiér opførsel" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "Kopiér automatisk den valgte tekst" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "Kopiér den valgte tekst til udklipsholder, når der ikke længere trykkes på venstre museknap. Ellers vil Ctrl-Skift-C kopiere den valgte tekst til udklipsholderen." + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "Inkluder automatisk tidsstempler" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "Inkluder automatisk tidsstempler i kopierede linjer af tekst. Ellers inkluder tidsstempler hvis Shift-tasten holdes nede ved valg." + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "Inkluder automatisk farve information" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "Inkluder automatisk farveinformation i kopierede linjer af tekst. Ellers inkluder farveinformation hvis Ctrl-tasten holdes nede ved valg." + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "Rigtige navn:" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "Alternative skrifttyper:" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "Adskil flere poster med kommaer uden mellemrum før eller efter." + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "Vis lister i kompakt tilstand" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "Brug mindre mellemrum mellem brugerliste/kanaltræ-rækker." + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "Bruger servertid hvis det understøttes" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "Vis tidsstempler hentet fra server hvis den understøtter time-server-udvidelsen." + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "Genopret automatisk forbindelse til servere når forbindelsen afbrydes" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "Forsinkelse ved autogentilslutning:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "Auto-deltagforsinkelse:" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "Udelukkelsestype:" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "Prøv at bruge denne udelukkelsesmaske, når der udelukkes eller sættes på stille. (kræver irc_who_join)" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Logning" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "Vis historik fra forrige session" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "Tilbagerulning:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "Aktivér samtalelogning på disk" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "Logfilens navn:" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Server %c=Kanal %n=Netværk." + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "Indsæt tidsstempler i logfiler" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "Logtidsstempelformat:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URL'er" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "Aktivér logning af URL'er til disk" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "Aktivér URL-opfanger" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "Maksimum antal af URL'er som skal opfanges:" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(deaktiveret)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "SOCKS4" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "SOCKS5" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "Auto" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "Alle forbindelser" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "Kun IRC-server" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "Kun DCC" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "Din adresse" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "Bind til:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "Kun nyttig til computere med flere adresser." + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "Filoverførsler" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "Hent min IP-adresse fra IRC-serveren" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "Spørger IRC-serveren om din virkelige adresse. Brug dette, hvis du har en adresse af typen 192.168.*.*!" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "DCC-IP-adresse:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "Udgiv dig for at være på denne adresse, når du tilbyder filer." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "Første DCC-lytteport:" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "Sidste DCC-lytteport:" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "!Opgiv værdien af porte til nul for fuldstændigt interval." + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "Proxyserver" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "Værtsnavn:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Port:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Type:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "Brug proxy for:" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "Proxy-godkendelse" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "Brug godkendelse (kun HTTP eller SOCKS5)" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "Brugernavn:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "Identd-server" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "Aktiveret" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "Server vil svare med netværkenes brugernavn" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "Du skal have tilladelser til at lytte til denne port. Hvis ikke 113 (0 bruger denne som standard) så skal du konfigurerer port-forwarding." + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "Vælg billedfil" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "Vælg downloadmappe" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Vælg skrifttype" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Gennemse..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "Åbn datamappe" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Vælg farve" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "Tekstfarver" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "mIRC-farver:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "Lokale farver:" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Forgrund:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Baggrund:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "Markeret tekst" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "Brugerfladens farver" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "Ny data:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "Markeringslinje:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "Ny meddelelse:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "Fraværende bruger:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "Fremhævning:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "Stavekontrol:" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "Fjernelse af farver" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Hændelse" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "Lydfil" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "Vælg en lydfil" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "Lydfil:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "_Gennemse..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "_Afspil" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Brugerflade" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "Udseende" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Inputboks" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Brugerliste" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "Kanalskifter" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Farver" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Chatning" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "Lyde" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "Avanceret" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Netværksopsætning" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Filoverførsler" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "Identd" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Kategorier" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "Du kan ikke placere træet i toppen eller i bunden!\nSkift venligst først til <b>Faneblade</b>-layout i <b>Vis</b>-menuen." + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "Tilvalget rigtige navn må ikke være tomt. Falder tilbage til \"rigtige navn\"." + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Nogle indstillinger som blev ændret kræver en genstart, før de træder i kraft." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*ADVARSEL*\nAt auto-acceptering af DCC til din hjemmemappe\nkan være farligt og kan udnyttes. Eksempelvis:\nNogen kunne sende dig en .bash_profile" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "Præferencer - %s" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "<i>(ingen forslag)</i>" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "Mere..." + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "Tilføj \"%s\" til ordbog" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "Ignorér alle" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "Staveforslag" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "enchant-fejl for sprog: %s" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "Der var en fejl, da strengen skulle fortolkes" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Dette signal videregiver kun %d argumenter, $%d er ugyldig" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "Udskriv tekstfil" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ tal" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Rediger hændelser" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "Indlæs fra..." + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Afprøv alle" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "OK" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "URL-opfanger - %s" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Ryd liste" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Kopiér valgte URL" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Kopiér" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Gem liste i en fil" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d kanaloperatører, %d total" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "Åbn en irc://server:port/kanal URL" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "Sysinfo: kunne ikke hente info. Enten ikke understøttet eller fejl." + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "Sysinfo: ingen info med det navn\n" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "Sysinfo: %s er sat til: %d\n" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "Sysinfo: gyldige indstillinger er: announce eller hide_* for hver stykke information. F.eks. hide_os. Uden en værdi vil det vise aktuelle (eller standard) indstilling.\n" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "Sysinfo: ugyldigt variabelnavn\n" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "%s plugin indlæst\n" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "%s plugin fjernet\n" diff --git a/hexchat/po/de.po b/hexchat/po/de.po new file mode 100644 index 0000000..d0e152e --- /dev/null +++ b/hexchat/po/de.po @@ -0,0 +1,6290 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# SSL <albkert@gmail.com>, 2013 +# Alf Gaida <agaida@siduction.org>, 2014 +# Wuzzy <almikes@aol.com>, 2015-2018 +# Aray <dataray@web.de>, 2014 +# Benedikt Roth <Benedikt.Roth@gmx.net>, 2000 +# Christian Meyer <linux@chrisim.de>, 2000 +# Aray <dataray@web.de>, 2014 +# evil_pro <evil_pro@live.at>, 2012-2013,2017 +# evil_pro <evil_pro@live.at>, 2013,2017 +# evil_pro <evil_pro@live.at>, 2012 +# Jakob Kramer <jakob.kramer@gmx.de>, 2012-2013 +# Karl Eichwalder <ke@gnu.franken.de>, 2003 +# Klaas <klaasdemter@googlemail.com>, 2013 +# Klaas <klaasdemter@googlemail.com>, 2013 +# RJ ., 2012 +# Marcel Metz <mmetz@adrian-broher.net>, 2013 +# Matthias Warkus <mawa@iname.com>, 1999 +# RJ ., 2014 +# Richard Schwab <mail@w.tf-w.tf>, 2013-2014 +# RJ ., 2012,2014 +# sfan5 <sfan5@ymail.com>, 2017 +# sfan5 <sfan5@ymail.com>, 2017 +# SSL <albkert@gmail.com>, 2013 +# Synchunk, 2015 +# Synchunk, 2015 +# Tamer Fahmy <e9526976@stud2.tuwien.ac.at>, 1999 +# TheX <xerus@live.de>, 2013 +# TingPing <tingping@tingping.se>, 2017-2018 +# TheX <xerus@live.de>, 2013 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-23 21:28+0000\n" +"Last-Translator: Wuzzy <almikes@aol.com>\n" +"Language-Team: German (http://www.transifex.com/hexchat/hexchat/language/de/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: de\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "HexChat" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "IRC-Client" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "HexChar ist ein einfach zu benutzender, aber dennoch erweiterbarer IRC-Client. Er erlaubt es, sicher mehreren Netzwerken beizutreten und sich mithilfe der anpassbaren Benutzerschnittstelle privat oder auch in Kanälen zu unterhalten. Sogar Dateiübertragungen sind möglich." + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "HexChat unterstützt Features wie: DCC, SASL, Proxies, Rechtschreibprüfung, Benachrichtigungen, Logging, Benutzerdesigns und Python/Perl-Skripte" + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "Hauptchatfenster" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "Online mit anderen Menschen chatten" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "IM;Chat;" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "hexchat" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "Im sicheren Modus öffnen" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "HexChat-Themenverwalter" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Ich bin beschäftigt" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Verlassend" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "AUS" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "EIN" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "{nicht gesetzt}" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Netzwerk" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<leer>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Channel" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Wartend" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Aktiv" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Gescheitert" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Erledigt" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Verbindung" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Abgebrochen" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "Kann nicht auf %s zugreifen\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Fehler" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s bietet die Datei »%s« an. Wollen Sie annehmen?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "Keine aktiven DCCs\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "Dialogfenster ö_ffnen" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "Datei ver_schicken" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "_Benutzerinformationen (»Whois«)" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "Zu Freundesliste _hinzufügen" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "_Ignorieren" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "Operatoraktionen" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Op geben" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Op nehmen" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "Voice geben" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "Voice nehmen" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Kicken/Bannen" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Kicken" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "Bannen" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "Kickbann" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Channel verlassen" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Channel betreten …" + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "Zu betretender Channel:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Serververbindungen" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Server anpingen" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Version verstecken" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Op" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "bye" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Kickgrund für %s eingeben:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "Datei senden" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "Dialog" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Sende" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Chat" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Leeren" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "Sie haben keinen Schreibzugriff auf %s. Von dieser Sitzung kann nichts gespeichert werden." + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* IRC als Root laufen zu lassen ist dumm! Sie sollten\n ein Benutzerkonto anlegen und dieses zum Einloggen verwenden.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "JA " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "NEIN " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "CTCP-Flut von %s, %s wird jetzt ignoriert\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "Sie werden gerade von %s mit MSG-Nachrichten überhäuft. Die Einstellung gui_autoopen_dialog wird ausgeschaltet.\n" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "Aufgelöst zu %s" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "Nicht gefunden" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "Aufgelöst zu:" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "Schlage %s nach …" + +#: src/common/inbound.c:1992 +msgid "Could not create SCRAM session with digest %s" +msgstr "Es konnte keine SCRAM-Sitzung mit der Hashfunktion %s erstellt werden" + +#: src/common/inbound.c:2024 +msgid "SASL SCRAM authentication failed: %s" +msgstr "SASL SCRAM Authentifizierung fehlgeschlagen: %s" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s online\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s offline\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Kein Channel betreten. Versuchen Sie /join #<channel>\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Nicht verbunden. Versuchen Sie /server <Host> [<Port>]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "Der Server %s existiert bereits auf dem Netzwerk %s.\n" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "Server %s zum Netzwerk %s hinzugefügt.\n" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Bereits als abwesend markiert: %s\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "Bereits als anwesend markiert.\n" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "/bin/sh wird benötigt!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "Verfügbare Befehle:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "Benutzerdefinierte Befehle:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "Durch Plugins definierte Befehle:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Geben Sie /HELP <Befehl> oder /HELP -l für mehr Informationen ein" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Unbekanntes Argument »%s« ignoriert." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "Ruhigstellen wird von diesem Server nicht unterstützt." + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "Kein solches Plugin gefunden.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "Dieses Plugin kann nicht entladen werden.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <Name> <Aktion>, fügt einen Knopf unter der Benutzerliste hinzu" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "ADDSERVER <NeuesNetzwerk> <NeuerServer/6667>, fügt der Netzwerkliste ein neues Netzwerk mit neuem Server hinzu" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <Befehl>, sendet einen Befehl an alle Channels, in denen Sie sich befinden" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "ALLCHANL <Befehl>, sendet einen Befehl an alle Channels auf dem aktuellen Server" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <Befehl>, sendet einen Befehl an alle Server auf denen Sie sich befinden" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "AWAY [<Grund>] kündigt Sie als abwesend an (benutzen Sie /BACK, um das rückgängig zu machen)" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "BACK, setzt Sie auf anwesend (nicht »abwesend«)" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <Maske> [<Banntyp>], bannt jeden mit der entsprechenden Maske aus dem aktuellen Channel. Wenn diese bereits im Channel sind, werden sie nicht gekickt (Erfordert Op-Status)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <Variable> [<Wert>]" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "CHARSET [<encoding>], hole oder setze die Codierung für die momentane Verbindung" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "CLEAR [ALL|HISTORY][-]<anzahl>, Leert das aktuelle Textfenster oder die Befehlschronik" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "CLOSE [-m], Schließt den aktuellen Tab, welches das Fenster schließt, falls dies das einzige geöffnete Tab war, oder, mit dem „-m“-Flag, schließt es alle Dialogfenster." + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <Code|Wildcard>, findet einen Ländercode, z.B.: de = Deutschland" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <Nick> <Nachricht>, sendet die CTCP-Nachricht an den Nick, übliche Nachrichten sind VERSION und USERINFO" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "CYCLE [<Channel>], verlässt den aktuellen oder angegebenen Channel und betritt ihn direkt wieder" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <Nick> - akzeptiere eine angebotene Datei\nDCC SEND [-maxcps=#] <Nick> [Datei] - Sendet eine Datei an jemanden\nDCC PSEND [-maxcps=#] <Nick> [Datei] - Sendet eine Datei im passiven Modus an jemanden\nDCC LIST - zeigt die DCC-Liste\nDCC CHAT <Nick> - bietet jemandem einen DCC-CHAT an\nDCC PCHAT <Nick> - bietet jemandem einen DCC-CHAT im passiven Modus an\nDCC CLOSE <Typ> <Nick> <Datei> - Schließt einen DCC-Transfer\n Beispiel: /dcc close send markus datei.zip" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <Nick>, entfernt den HalbOp-Status bei Nick im aktuellen Channel (Erfordert Op-Status)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <Name>, entfernt einen Knopf unter der Benutzerliste" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <Nick>, entfernt den Op-Status bei Nick im aktuellen Channel (Erfordert Op-Status)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <Nick>, entfernt den Voice-Status bei Nick im aktuellen Channel (Erfordert Op-Status)" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, Trennt die Server-Verbindung" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "DNS <Nick|Host|IP>, löst eine IP-Adresse oder einen Hostnamen auf" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "DOAT <Kanal,Liste,/Netzwerk> <Befehl>" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <Text>, Zeigt Text lokal an" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <Befehl>, führt den Befehl aus. Wenn -o angegeben wurde, wird die Ausgabe in das aktuelle Fenster gesendet, ansonsten wird sie lokal gezeigt" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, sendet das Signal SIGCONT" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9], killt einen laufenden exec in der aktuellen Sitzung. Wenn -9 angegeben wurde, wird der Prozess SIGKILLed" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, sendet dem Prozess das Signal SIGSTOP" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, sendet Daten an den stdin des Prozesses" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "EXPORTCONF, exportiert HexChat-Einstellungen" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, löscht die Sendewarteschlange des aktuellen Servers" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <Host> [<Port>], verbindet durch einen Proxy, Standardport ist 23" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <Nick> [<Passwort>], Trennt einen verwaisten Nick" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <Nick>, gibt dem Nutzer Halfop-Status (erfordert Op-Status)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <Passwort>, meldet Sie bei NickServ an" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <Maske> <Typen> <Optionen>\n Maske - Hostmaske, die zu ignorieren ist, z.B.: *!*@*.aol.com\n Typen - Datentypen, die zu ignorieren sind, einer oder alle von:\n PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n Optionen - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <Nick> [<Channel>], lädt jemanden in einen Channel ein, standardmäßig den aktuellen (Erfordert Op-Status)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <Channel>, betritt einen Channel" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "KICK <Nick>, kickt den Nick aus dem aktuellen Channel (Erfordert Op-Status)" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "KICKBAN <Nick>, bannt den Nick und kickt ihn dann aus dem aktuellen Channel (Erfordert Op-Status)" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, erzwingt eine neue Lag-Prüfung" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "LASTLOG [-h] [-m] [-r] [--] <Zeichenkette>, sucht nach einer Zeichenkette im buffer\\n Nutze -h um gefundene Zeichenkette(n) hervorzuheben\\n Nutze -m um Groß/Kleinschreibung zu beachten\\n Nutze -r when die Zeichenkette ein regulärer Ausdruck ist\\n Nutze -- (doppel minus) um Optionen abzuschließen um zB. nach der Zeichenkette '-r' zu suchen" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <Datei>, lädt ein Plugin oder ein Skript" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, Nimmt allen HalbOps im aktuellen Channel den HalbOp-Status (Erfordert Op-Status)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, Nimmt allen Ops im aktuellen Channel den Op-Status (Erfordert Op-Status)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <Aktion>, sendet die Aktion in den aktuellen Channel (Aktionen werden in der 3. Person geschrieben, wie /me springt)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "MHOP, nimmt einen Massen-Hop für alle Benutzer im aktuellen Kanal vor (erfordert Op-Status)" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, Kickt alle außer Ihnen im aktuellen Channel (erfordert Op-Status)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, gibt allen Benutzern im aktuellen Channel Op (Erfordert Op-Status)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "MSG <nick> <Nachricht>, sendet eine Privatnachricht" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "NAMES [Kanal], Listet die Nicks im Kanal auf" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <Nick> <Nachricht>, Sendet eine CTCP-Notiz" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <Hostname> [<Port>], verbindet mit einem Server in einem neuen Reiter" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <Nickname>, setzt Ihren Nick" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "NOTIZ <nick/channel> <message>, sendet eine Notiz" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [-n network1[,network2,...]] [<nick>], zeigt Ihre Benachrichtigungsliste oder fügt jemanden hinzu" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <Nick>, gibt Nick Op-Status (Erfordert Op-Status)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<Channel>] [<Grund>], verlässt den Channel, standardmäßig den aktuellen" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <Nick | Channel>, pingt den Nick oder Channel per CTCP an" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "QUERY [-nofocus] <Nick >, öffnet ein neues Dialogfenster [im Hintergrund] zu jemandem und sendet optional eine Nachricht." + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "QUIET <mask>[<quiettype>], stellt jeden im aktuellen Kanal ruhig, der auf diese Maske passt, wenn der Server Ruhigstellen unterstützt." + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<Grund>], trennt die Verbindung zum aktuellen Server" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <Text>, sendet den Text in Rohform an den Server" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<Host>] [<Port>] [<Passwort>], Kann einfach als /RECONNECT aufgerufen werden um sich mit dem aktuellen Server wiederzuverbinden, oder als /RECONNECT ALL um sich mit allen aktiven Servern wiederzuverbinden" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<Host>] [<Port>] [<Passwort>], Kann einfach als /RECONNECT aufgerufen werden um sich mit dem aktuellen Server wiederzuverbinden, oder als /RECONNECT ALL um sich mit allen aktiven Servern wiederzuverbinden" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "RECV <Text>, sendet Rohdaten an HexChat, als ob sie vom IRC-Server empfangen wurden" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "Reload <Name>, Lädt ein Plugin oder Script neu" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <Text>, sendet den Text ans Ziel im aktuellen Fenster" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <Nick> [<Datei>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <Host> <Port> <Channel>, verbindet und betritt einen Channel" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <Host> <Port> <Channel>, verbindet und betritt einen Channel" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "SERVER [-ssl] <host> [<port>] [<password>], Verbindet zu einem Server, der standard Port ist 6667 für normale Verbindungen, und 6697 für ssl Verbindungen" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <Host> [<Port>] [<Passwort>], verbindet mit einem Server, der Standard-Port ist 6667" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-off|-on] [-quiet] <Variable> [<Wert>]" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "SETCURSOR [-|+]<Position>, ändert die Position des Cursors in der Eingabezeile" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "SETTAB <neue Bezeichnung>, ändert die Bezeichnung eines Reiters, tab_trunc-Limit besteht weiterhin" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "SETTEXT <neuer Text>, Text in der Eingabezeile ersetzen" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<Thema>], setzt das Thema, wenn eins angegeben wurde, oder zeigt das aktuelle" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "\nTRAY -f <Zeitüberschreitung> <Datei1> [<Datei2>] Wechselt im Benachrichtigungsbereich zwischen zwei Symbolen.\nTRAY -f <Dateiname> Setzt Benachrichtigungssymbol auf ein festes Symbol.\nTRAY -i <Nummer> Blinkt im Benachrichtigungsbereich mit einem internen Symbol.\nTRAY -t <Text> Setzt den Tooltip für den Benachrichtigungsbereich.\nTRAY -b <Titel> <Text> Setzt den Ballontext für den Benachrichtigungsbereich." + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <Maske> [<Maske>...], entfernt den Bann für eine spezielle Hostmaske" + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <Maske> [QUIET], hört auf, die angegebene Hostmaske zu ignorieren" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <Name>, entfernt ein Plugin oder Skript" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "UNQUIET <mask> [<mask>...], hebt eine Maske auf, die für automatische Ruhigstellung benutzt wird, wenn der Server es unterstützt." + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, öffnet einen URL in Ihrem Browser" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "USELECT [-a] [-s] <Nick1> <Nick2> ... <Nickn>, markiert Nick(s) in der Channel-Benutzerliste" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <Nick>, gibt jemandem Voice-Status (Erfordert Op-Status)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <Nachricht>, schreibt eine Nachricht in alle Channels" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <Nachricht>, sendet eine Nachricht an alle Ops im aktuellen Channel" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "Benutzerkommando für: %s\n" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "Benutzung: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nKeine Hilfe für diesen Befehl verfügbar.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "Kein solcher Befehl.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "Ungültige Argumente für den Benutzerbefehl.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "Zu viele rekursive Benutzerbefehle - Abbruch." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "Unbekannter Befehl %s. Versuchen Sie es mit /help\n" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "Kein hexchat_plugin_init-Symbol; ist dies wirklich ein HexChat-Plugin?" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "*\tIdent-Anfrage von %s wird als %s verarbeitet" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "*\tFehler beim Starten des identd-Servers: %s" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "IDENTD <Port> <Benutzername>" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "Timer %d gelöscht.\n" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "Keine derartige ref-Nummer gefunden.\n" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "Keine Timer installiert.\n" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr " Ref# Sekund. Wieder Befehl \n" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "%5d %8.1f %7d %s\n" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Sind Sie sicher, dass dies ein SSL-fähiger Server und Port ist?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "Kann Hostname %s nicht auflösen\nPrüfe Ihre IP-Einstellungen!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "Durchlaufen der Proxys gescheitert.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Zum nächsten Server wird gesprungen in %s …\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "Warnung: Zeichensatz »%s« ist unbekannt. Es wird keine Konvertierung für Netzwerk %s vorgenommen." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "%C18*%O$t%C18$1%O zur Benachrichtigungsliste hinzugefügt." + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "%C22*%O$t%C22$1%O: %C18$2%O auf %C24$4%O von %C26$3%O" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "%C22*%O$t Kann nicht betreten: %C22$1 %O(%C20Du wurdest gebannt%O)." + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "%C29*%O$tRechte erteilt: %C29$2%O" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "%C29*%O$tEntfernte Fähigkeiten: %C29$2%O" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "%C23*%O$tRechte unterstützt: %C29$2%O" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "%C23*%O$tRechte erbeten: %C29$1%O" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "%C24*%O$t%C28$1%O heißt jetzt %C18$2%O" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O setzt einen Bann auf %C18$2%O" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "%C22*%O$tKanal %C22$1%O wurde erstellt am %C24$2%O" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O entfernt Half-Operator Status von %C18$2%O" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O entfernt Op-Status bei%C26 $2" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O entfernt Voice-Status bei%C26 $2" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%C setzt Ausnahme für %C18$2%O" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O erteilt %C18$2%O Halb-Operator-Status" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%C setzt Invite-Ausnahme für %C18$2%O" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%UChannel Nutzer Thema%O" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "%C22*%O$t%C26$1%O setzt Modus %C24$2$3%O auf %C22$4%O" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "%C22*%O$tChannel %C22$1%O Modes: %C24$2" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O gibt Channel-Operator-Status an %C18$2%O" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O stellt %C18$2%O ruhig" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O entfernt die Ausnahme von %C18$2%O" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O entfernt die Einladungs-Ausnahme für %C18$2%O" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "%C22*%O$t$1 entfernt das Channel-Schlüsselwort" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "%C22*%O$t$1 entfernt die Benutzerobergrenze" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O setzt das Channel-Schlüsselwort auf %C24$2%O." + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O setzt die Benutzerobergrenze auf %C24$2%O." + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O entfernt den Bann auf %C18$2%O." + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O entfernt den Quiet-Status von %C18$2%O." + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "%C22*%O$tChannel %C22$1%O URL: %C24$2" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O gibt Voice-Status an %C18$2%O." + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "%C23*%O$tVerbunden. Anmeldevorgang läuft." + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "%C23*%O$tVerbinden zu %C29$1%C (%C23$2:$3%O)" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "%C20*%O$tVerbindung fehlgeschlagen (%C20$1%O)" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "%C24*%O$tEin CTCP %C24$1%C von %C18$2%O wurde erhalten." + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "%C24*%C$tEin CTCP %C24$1%C von %C18$2%C (nach %C22$3%C) wurde erhalten.%O" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "%C24*%O$tCTCP-Sound %C24$1%C von %C18$2%O empfangen." + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "%C24*%O$tCTCP-Sound %C24$1%C von %C18$2%C (nach %C22$3%O) empfangen." + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "%C23*%O$tDCC CHAT mit %C18$1%O abgebrochen." + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "%C24*%O$tDCC-CHAT-Verbindung mit %C18$1%C %C30[%C24$2%C30]%O aufgebaut." + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "%C20*%O$tDCC CHAT mit %C18$1%O verloren (%C20$4%O)." + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "%C24*%O$tDCC-CHAT-Angebot von %C18$1%O empfangen." + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "%C24*%O$tDCC-CHAT an %C18$1%O angeboten." + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "%C24*%O$tEin CHAT an %C18$1%O wird bereits angeboten." + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "%C20*%O$tEin DCC-$1-Verbindungsversuch mit %C18$2%O ist gescheitert(%C20$3%O)." + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "%C23*%O$t»%C23$1%C« von %C18$2%O empfangen." + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "%C16,17 Typ Zu/Von Status Größe Pos Datei" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "%C20*%O$tFehlformatierte DCC Anforderung von %C18$1%O.$a010%C23*%O$tInhalt des Pakets: %C23$2%O" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "%C24*%O$tEs wird »%C24$1%O« an %C18$2%O angeboten." + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "%C23*%O$tKein solches DCC-Angebot." + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "%C23*%O$tDCC RECV »%C23$2%O« nach %C18$1%O abgebrochen." + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "%C24*%O$tDCC RECV »%C23$1%O« von %C18$3%O abgeschlossen %C30[%C24$4%O cps%C30]%O" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$tDCC-RECV-Verbindung mit %C18$1 aufgebaut %C30[%O%C24$2%C30]%O" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "%C20*%O$tDCC RECV »%C23$1%O« von %C18$3%O fehlgeschlagen (%C20$4%O)" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "%C20*%O$tDCC RECV: »%C23$1%C« konnte zum Schreiben nicht geöffnet werden (%C20$2%O)." + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "%C23*%O$tDie Datei »%C24$1%C« existiert bereits, sie wird stattdessen als »%C23$2%O« gespeichert." + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "%C24*%O$t%C18$1%C hat angefragt, »%C23$2%C« von %C24$3%O fortzusetzen." + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "%C23*%O$tDCC SEND »%C23$2%C« nach %C18$1%O abgebrochen." + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "%C24*%O$tDCC SEND »%C23$1%C« nach %C18$2%C abgeschlossen %C30[%C24$3%C cps%C30]%O" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$tDCC-SEND-Verbindung mit %C18$1 hergestellt %C30[%O%C24$2%C30]%O" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "%C20*%O$tDCC SEND »%C23$1%C« nach %C18$2%C fehlgeschlagen (%C20$3%O)." + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "%C24*%O$t%C18$1%C hat »%C23$2%C« (%C24$3%O Bytes) angeboten." + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "%C20*%O$tDCC $1 »%C23$2%C« nach %C18$3%O steckt fest. Es wird abgebrochen." + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "%C20*%O$tZeitüberschreitung: DCC $1 »%C23$2%C« nach %C18$3%O dauerte zu lange. Es wird abgebrochen." + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "%C24*%O$t%C18$1%O von der Benachrichtigungsliste entfernt." + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "%C20*%O$tGetrennt (%C20$1%O)." + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "%C24*%O$tIhre IP-Adresse wurde gefunden: %C30[%C24$1%C30]%O." + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "%O%C18$1%O wurde auf die Ignorierliste gesetzt." + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "%OIgnorierstatus auf %C18$1%O geändert." + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "%C16,17" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "%O%C18$1%O wurde von der Ignorierliste entfernt." + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "%ODie Ignorierliste ist leer." + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "%C20*%O$t%C22$1%C kann nicht beigetreten werden (%C20Der Channel ist nur auf Einladung zu betreten%O)." + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "%C24*%O$tSie wurden von %C18$2%O nach %C22$1%O eingeladen (%C29$3%O)." + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "%C23*$t$1 ($3%C23) ist beigetreten." + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "%C20*%O$t%C22$1%C kann nicht beigetreten werden (%C20Erfordert Schlüsselwort%O)." + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "%C22*%O$t%C26$1%C hat %C18$2%C aus %C22$3%C hinausgeworfen (%C24$4%O)." + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "%C19*%O$t%C19Sie wurden von %C26$1%C gekillt (%C20$2%O)." + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "%C29*%O$t%C29MOTD übersprungen%O" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "%C23*%O$t%C28$1%C wird bereits verwendet. Erneurter Versuch mit %C18$2%O …" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "%C23*%O$t%C28$1%C ist fehlerhaft. Erneuter Versuch mit %C18$2%O …" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "%C20*%O$tDer Nickname ist fehlerhaft oder wird bereits verwendet. Benutzen Sie »/NICK«, um einen anderen auszuprobieren." + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "%C20*%O$tKein solches DCC." + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "%C23*%O$tMomentan läuft kein Prozess." + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "%C23*%O$tBenarichtigung: %C18$1%C ist abwesend (%C24$2%O)." + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "%C23*%O$tBenachrichtigung: %C18$1%C ist wieder anwesend." + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tDie Benachrichtigungsliste ist leer." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "%C16,17 Benachrichtigungsliste" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "%C23*%O$t%C23$1%O Benutzer in Benachrichtigungsliste." + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "%C23*%O$tBenachrichtigung: %C18$1%C ist offline (%C29$3%O)." + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "%C23*%O$tBenachrichtigung: %C18$1%C ist online (%C29$3%O)." + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "%C24*$t$1 ($2%C24) ist gegangen." + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "%C24*$t$1 ($2%C24) ist gegangen ($4)." + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "%C24*%O$tPing-Antwort von %C18$1%C: %C24$2%O Sekunde(n)" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "%C20*%O$tKeine Ping-Antwort für %C24$1%O Sekunden. Die Verbindung wird getrennt." + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "%C24*%O$tEs läuft bereits ein Prozess." + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "%C24*$t$1 hat die Verbindung getrennt ($2)." + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "%C24*%O$t%C26$1%C setzt Modi %C30[%C24$2%C30]%O" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "%O-%C29$1/Wallops%O-$t$2" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "%C24*%O$tDie IP-Nummer für %C18$1%O wird nachgeschlagen …" + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "%C23*%O$tAuthentifizierrung mit SASL als %C18$1%O (%C24$2%O) …" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "%C29*%O$tVerbunden." + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "%C29*%O$tSuche nach %C29$1%O" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "%C23*%O$tDer vorherige Verbindungsversucht wurde abgebrochen (%C24$1%O)." + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "%C22*%O$tDas Thema für %C22$1%C ist: $2%O" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "%C22*%O$t%C26$1%C hat das Thema geändert zu: $2%O" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "%C22*%O$tDas Thema für %C22$1%C wurde von %C26$2%C (%C24$3%O) gesetzt." + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C20*%O$tUnbekannter Host. Vielleicht haben Sie sich vertippt?" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "%C20*%O$t%C22$1%C kann nicht beigetreten werden (%C20Benutzerobergrenze erreicht%O)." + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "%C22*%O$tBenutzer auf %C22$1%C: %C24$2%O." + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%C ist abwesend %C30(%C23$2%O%C30)%O" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "%C23*%O$t%C28[%C18$1%C28] %OEnde der WHOIS-Liste." + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O untätig %C23$2%O" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O untätig %C23$2%O, signon: %C23$3%O" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O Wahrer Host: %C23$2%O, wahre IP: %C30[%C23$3%C30]%O" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "%C19*%O$tSie sprechen jetzt in %C22$2%O" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "%C19*%O$tSie wurden aus %C22$2%C von %C26$3%O hinausgeworfen (%C20$4%O)." + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "%C19*%O$tSie haben den Kanal %C22$3%O verlassen." + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "%C19*%O$tSie haben den Kanal %C22$3%C verlassen (%C24$4%O)." + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "%C20*%O$tSie haben %C18$1%O nach %C22$2%O eingeladen (%C24$3%O)." + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "%C20*%O$tSie sind jetzt als %C18$2%O bekannt." + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "Logbuch geladen vom" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** BEENDE LOGBUCH UM %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** BEGINNE LOGBUCH UM %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "Kann log Datei(en) nicht schreiben. Überprüfe die\\n Freigaben von %s" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "Linke Nachricht" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "Rechte Nachricht" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "IP-Adresse" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Benutzername" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "Der Nick der Person, die den Channel betritt" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "Der Channel, der betreten wird" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "Die Hostmask der Person" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "Benutzerkonto der Person" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Nickname" + +#: src/common/text.c:980 +msgid "The action" +msgstr "Die Aktion" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "Moduszeichen" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "Identifierter Text" + +#: src/common/text.c:987 +msgid "The text" +msgstr "Der Text" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "Die Nachricht" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Server-Name" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "Verliehene Rechte" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "Fähigkeiten entfernt" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "Server-Fähigkeiten" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "Angeforderte Rechte" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Alter Nickname" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Neuer Nickname" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "Nick der Person, die das Thema geändert hat" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Thema" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "Der Nickname des Kickenden" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "Die Person, die gekickt wird" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "Der Channel" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "Der Grund" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "Der Nick der Person, die den Channel verlässt" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "Die Zeit" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "Der Erzeuger" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Nick" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Grund" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Host" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "Von wem es ist" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "Die Zeit im x.x-Format (siehe unten)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "Der Channel an den es geht" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "Der Klang" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "Der Nick der Person" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "Das CTCP-Ereignis" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "Der Nick der Person, die den Schlüssel gesetzt hat" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "Der Schlüssel" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "Der Nick der Person, die das Limit gesetzt hat" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "Das Limit" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "Der Nick der Person, die Op-Status erteilte" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "Der Nick der Person, die Op-Status erhielt" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "Der Nick der Person, die HalfOp-Status erhielt" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "Der Nick der Person, die HalfOp-Status erteilte" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "Der Nick der Person, die Voice erteilte" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "Der Nick der Person, die Voice erhielt" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "Der Nick der Person, die verbannte" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "Die Bannmaske" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "Der Nick der Person, die ruhig stellte" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "Die Ruhigstellungsmaske" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "Der Nick, der den Schlüssel entfernte" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "Der Nick, der das Limit entfernte" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "Der Spitzname der Person, welche den Op-Status entzog" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "Der Nick der Person, die Op abgenommen bekam" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "Der Spitzname der Person, welche den Halb-Op-Status entzog" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Der Nick der Person, die HalfOp abgenommen bekam" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "Der Spitzname der Person, welche die Stimme entzog" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "Der Nick der Person, die Voice abgenommen bekam" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "Der Spitzname der Person, welche den Bann zurückzog" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "Der Spitzname der Person, welche die Stimme wieder aktiviert hat" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "Der Nick der Person, die die Ausnahme setzte" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "Die Ausnahme-Maske" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "Der Nick der Person, die die Ausnahme entfernte" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "Der Nick der Person, die die Einladung aussprach" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "Die Einladungs-Maske" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "Der Nick der Person, die die Einladung zurücknahm" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "Der Nick der Person, die den Modus setzte" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "Das Moduszeichen (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "Der Modusbuchstabe" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "Der Channel, der eingestellt wird" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Voller Name" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Channelinformation/»ist ein IRC-Operator«" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Server-Information" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Untätig" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Zeitpunkt der Einwahl" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Abwesenheitsgrund" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Nachricht" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Konto" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "Echter Benutzer@Host" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "Echte IP" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Channel-Name" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "Mechanismus" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "Zahl oder Bezeichner" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Text" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Nick der Person, die Sie einlud" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Benutzer" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "Nickname in Benutzung" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Nick wird versucht" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Port" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "Modusfolge" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "DCC-Typ" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Dateiname" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Zieldateiname" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "Pfadname" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Position" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Größe" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "DCC-Zeichenfolge" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "Abwesenheitsgrund" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "Anzahl der Benachrichtigungseinträge" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Alter Dateiname" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Neuer Dateiname" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Empfänger" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Hostmaske" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Hostname" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "Das Paket" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "Sekunden" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "Nick der Person, die eingeladen wurde" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Bann-Maske" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "Wer den Bann setzte" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Bannzeit" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "Kann diese Sounddatei nicht lesen:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "Gegenseite hat den Socket geschlossen" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "Verbindung verweigert" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "Keine Route zum Host" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Verbindung wegen Zeitüberschreitung geschlossen" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "Kann diese Adresse nicht zuteilen" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "Verbindung von der Gegenseite zurückgesetzt" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "Himmelfahrtsinsel" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Vereinigte Arabische Emirate" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "Felder bezüglich Aviation" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Afghanistan" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Antigua und Barbuda" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Albanien" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Armenien" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Niederländische Antillen" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Antarktis" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Argentinien" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "Reverse DNS" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Amerikanisch-Samoa" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "Asiatisch-pazifische Region" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Österreich" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "NATO" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Australien" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "Åland" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Aserbaidschan" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Bosnien und Herzegowina" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Bangladesch" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Belgien" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Bulgarien" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Bahrain" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "Geschäft" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Brunei" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Bolivien" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Brasilien" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Bahamas" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Bhutan" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Bouvetinsel" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Belarus (Weißrussland)" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Kanada" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "Katalanische Sprache" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Kokosinseln" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "Demokratische Republik Kongo" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "Zentralafrikanische Republik" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Kongo" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "Schweiz" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "Elfenbeinküste" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Cookinseln" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Chile" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Kamerun" + +#: src/common/util.c:738 +msgid "China" +msgstr "China" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Kolumbien" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "InterNIC – geschäftlich" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "Kooperativen" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "Serbien und Montenegro" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Kuba" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Kap Verde" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Weihnachtsinsel" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Zypern" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "Tschechische Republik" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "Deutsche Demokratische Republik" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Bundesrepublik Deutschland" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Dschibuti" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Dänemark" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Dominica" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "Dominikanische Republik" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Algerien" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Ecuador" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Bildungseinrichtung" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Estland" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Arabische Republik Ägypten" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Westliche Sahara" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "Spanien" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Äthiopien" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "Europäische Union" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Finnland" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Fidschi" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Falkland-Inseln" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Mikronesien" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Färör-Inseln" + +#: src/common/util.c:770 +msgid "France" +msgstr "Frankreich" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Gabun" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Großbritannien" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Georgien" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Französisch Guyana" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "Britische Kanalinseln" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Ghana" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Grönland" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Amerikanische Regierung" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Guadeloupe" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Äquatorial-Guinea" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Griechenland" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "S. Georgia- und S. Sandwich-Inseln" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Guinea-Bissau" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Guyana" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Heard- und McDonald-Inseln" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Kroatien" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Ungarn" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Indonesien" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Irland" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Israel" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "Isle of Man" + +#: src/common/util.c:801 +msgid "India" +msgstr "Indien" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "Informative Domain" + +#: src/common/util.c:803 +msgid "International" +msgstr "International" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Britische Gebiete im indischen Ozean" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Irak" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "Iran" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Island" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Italien" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Jamaika" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Jordanien" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "Unternehmensjobs" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Japan" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Kenia" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Kirgisistan" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Kambodscha" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Komoren" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "St. Kitts und Nevis" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Nordkorea" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Südkorea" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Kuwait" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Cayman-Inseln" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Kasachstan" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Libanon" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Saint Lucia" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Liberia" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Litauen" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Luxemburg" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Lettland" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Libyen" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Marokko" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Monaco" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Moldawien" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "Montenegro" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "Vereinigte Staaten medizinisch" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Madagaskar" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Marshallinseln" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Militärisch" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Mazedonien" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Mongolei" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Macau" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "Mobile Geräte" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Nördliche Mariana-Inseln" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Martinique" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Mauretanien" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Mauritius" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "Museen" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Malediven" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "Mexiko" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Malaysia" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Mosambik" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Namibia" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "Namen von Individueen" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Neu Kaledonien" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "InterNIC – Netzwerk" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Norfolk-Insel" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Nigeria" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Niederlande" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Norwegen" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "Neuseeland" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "InterNIC – Non-Profit-Organisation" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Französisch Polynesien" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Papua-Neuguinea" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Philippinen" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Polen" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "St. Pierre und Miquelon" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Puerto Rico" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "Berufe" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "Palästinensergebiete" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Portugal" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Paraguay" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Katar" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Reunion" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Rumänien" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "Old School ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "Serbien" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Russische Föderation" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Ruanda" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Saudi-Arabien" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Salomonen" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Seychellen" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Sudan" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Schweden" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Singapur" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "St. Helena" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Slowenien" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard- und Jan-Mayen-Inseln" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "Slowakische Republik" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Somalia" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Suriname" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "Südsudan" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "São Tomé und Príncipe" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Ehemalige UdSSR" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Syrien" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Swasiland" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Turks und Caicoc Inseln" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Tschad" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "Internetkommunikationsdienste" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "Südliche französische Gebiete" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Thailand" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Tadschikistan" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Osttimor" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Tunesien" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Türkei" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "Reisen und Tourismus" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Trinidad und Tobago" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Tansania" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Ukraine" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Vereinigtes Königreich" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "Vereinigte Staaten von Amerika" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Uruguay" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Usbekistan" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Vatikanstadt" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "St. Vincent und die Grenadinen" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "Britische Jungferninseln" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "Amerikanische Jungferninseln" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "Wallis- und Futuna-Inseln" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "Erwachsenenunterhaltung" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Jemen" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Jugoslawien" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Südafrika" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Sambia" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Simbabwe" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "Fehler beim Verbinden zum Session-Bus" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "»NameHasOwner« konnte nicht abgeschlossen werden" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "Befehl konnte nicht abgeschlossen werden" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "Fernzugriff" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "Plugin für den Fernzugriff mittels D-Bus" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Fehler beim Verbinden zum Session-Bus: %s\n" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Ermittlung von %s scheiterte: %s\n" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Zeichentabelle" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "Bannen" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "Ausnahmen" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "Ausnahme" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "Einladungen" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Einlad." + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "Ruhigstellungen" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "Ruhigstellen" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "Kopiermaske" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "%s auf %s von %s" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "Eintrag kopieren" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "Nicht verbunden." + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "Sie müssen mindestens einen Bann auswählen" + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "Sind Sie sicher, dass Sie alle Einträge entfernen wollen, die in %s aufgelistet sind?" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "Typ" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Maske" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "Von" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Datum" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Sie können die Bannliste nur öffnen, während Sie sich in einem Channelreiter befinden." + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "Ban-Liste (%s) – %s" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Entfernen" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Abschneiden" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Aktualisieren" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Zeige %d/%d Benutzer in %d/%d Channels." + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Geben Sie einen Dateinamen für die Ausgabe an" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "Channel betreten (_Join)" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "_Channel-Name kopieren" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "_Thementext kopieren" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "Kanalliste (%s) – %s" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "_Suche" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "Liste herunterla_den" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "_Liste speichern …" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "Zeige nur:" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "Channels mit" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "bis" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "Benutzern." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "Suche in:" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Channel-Name" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "Suchart:" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "Einfache Suche" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "Suchmasken-Entsprechung" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "Regulärer Ausdruck" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Finde:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Sende Datei an %s" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "Diese Datei ist nicht fortsetzbar." + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "Kann nicht auf die Datei %s zugreifen\n%s.\nFortsetzen nicht möglich." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "Datei im Downloadverzeichnis ist größer als die angebotene Datei. Fortsetzen nicht möglich." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "Kann dieselbe Datei nicht von zwei Leuten fortsetzen." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "Uploads und Downloads – %s" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Status" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Datei" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Beides" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "Uploads" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "Downloads" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "Details" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "Datei:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "Adresse:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Abbrechen" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Annehmen" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Fortsetzen" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "Verzeichnis öffnen …" + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "DCC Chatliste – %s" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Rein" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Raus" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "Startzeit" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "Hinzufügen" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Löschen" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Abbruch" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Speichern" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "Nicht automatisch mit Servern verbinden" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "Benutze ein anderes Konfigurationsverzeichnis" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "Plugins nicht automatisch laden" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "Zeige automatisches Ladeverzeichnis für Plugins/Scripte" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "Benutzerkonfigurationsverzeichnis anzeigen" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "Öffne eine irc://server:port/kanal?passwort URL" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "Befehl ausführen:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "URL oder Befehl in einem bestehenden HexChat öffnen bzw. ausführen" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Minimiert starten. STUFE 0=Normal 1=Minimiert 2=Im Benachrichtigungsbereich" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "Stufe" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "Versionsinformationen anzeigen" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "Kann Schriftartdatei nicht öffnen:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "Suchpuffer ist leer.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d Bytes" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Netzwerk-Sendewarteschlange: %d Bytes" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "Die Aktion Run Command führt die Daten in »Data 1« aus, als ob sie in die Eingabezeile eingegeben worden wären, in der die Tastenfolge gedrückt wurde. Daher kann »Data 1« Text, der in den Channel/Dialog gesendet wird, Befehle oder benutzerdefinierte Befehle enthalten. \\n trennt Befehle, so dass es möglich ist, mehrere Befehle auszuführen. Wenn Sie ein \\ im Text benötigen, geben Sie \\\\ ein." + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "Der »Seite ändern«-Befehl wechselt zwischen den Seiten im Notizblock. Setzen Sie »Data 1« auf die Seite, zu der Sie wechseln möchtesn. Wenn »Data 2« festgelegt wurde, wird der Wechsel relativ zur aktuellen Position erfolgen. Setzen Sie »Data 1«, um automatisch zu der Seite mit den neuesten und wichtigsten Aktivitäten (Privatchats zuerst, dann Kanäle mit Highlight, Kanäle mit Dialog, Kanäle mit anderen Daten) zu wechseln." + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "Die Aktion Insert in Buffer fügt den Inhalt von »Data 1«, in die Zeile der Historie, in dem die Tastenfolge gedrückt wurde, an der gegenwärtigen Cursor-Position ein." + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "Der Bildlauf-Befehl verschiebt das Text-Widget um eine Seite oder eine Zeile aufwärts oder abwärts. Setzen Sie »Data 1« entweder auf Anfang, Ende oder Auf, Ab um +1 oder -1." + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "Die Aktion Set Buffer setzt die Zeile der Historie, in der die Tastenkombination gedrückt wurde, auf den Wert von »Data 1«." + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "Die Aktion Last Command blättert eine Zeile in der Historie hoch." + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "Die Aktion Next Command blättert eine Zeile in der Historie abwärts." + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "Diese Aktion vervollständigt einen unvöllständigen Nick oder Befehl. Wenn »Data 1« gesetzt ist, springt 2× [Tab] auf die letzte, nicht die nächste Möglichkeit." + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "Diese Aktion blättert durch die Liste der Nicknamen. Wenn »Data 1« gesetzt ist, wird hochgeblättert, sonst runter. " + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "Diese Aktion vergleicht das zuletzt Eingegebene mit der Textersetzungsliste und ersetzt es, wenn sie eine Entsprechung findet." + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "Diese Aktion bewegt den aktiven Reiter eine Position nach links." + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "Diese Aktion bewegt den aktiven Reiter eine Position nach rechts." + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "Diese Aktion bewegt die aktuelle Reitergruppe nach links." + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "Diese Aktion bewegt die aktuelle Reitergruppe nach rechts." + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "Eingabezeile in der Historie speichern, aber nicht absenden." + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "Fehler beim Laden der Tastaturkürzel-Konfiguration" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "Markiere eine Zeile, für Hilfestellung über die jeweilige Aktion." + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "Tastenkombinationen – %s" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "Kann in diese Datei nicht schreiben." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "Kann diese Datei nicht lesen." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "Diese Maske gibt es bereits." + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Privat" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Notiz" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "Nicht mehr ignorieren" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "Sind Sie sicher, dass alle Einträge in Ihrer Ignorierliste entfernt werden sollen?" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "Maske zum Ignorieren eingeben:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "Ignorierliste – %s" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Ignore-Status" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Channel:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privat:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Notiz:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Einladungen" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "Hinzufügen …" + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "Channelname zu kurz, bitte erneut versuchen." + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "Verbindung hergestellt – %s" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "Verbindung zu %s fertiggestellt." + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "Im Serverlistenfenster wurde kein Channel (Chatraum) eingegeben, der in diesem Netzwerk automatisch betreten werden soll." + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "Was möchten Sie als Nächstes tun?" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "_Nichts, ich werde später einen Channel betreten." + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "Diesen Channel _betreten" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Wenn Sie den Namen des Channels wissen, den Sie betreten willst, geben Sie ihn hier ein." + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "Kanalliste ö_ffnen." + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "Die Abholung der Kanalliste könnte eine Minute oder zwei dauern." + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "_Diesen Dialog nach jeder Verbindung anzeigen." + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "Unterhaltung mit" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Thema für %s ist: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "Kein Thema gesetzt" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "Diesem Server sind noch %d Channels oder Dialoge zugeordnet. Alle schließen?" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "HexChat beenden?" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "Beim nächsten Mal nicht nachfragen." + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Sie sind mit %i IRC-Netzwerken verbunden." + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "Sind Sie sicher, dass Sie HexChat beenden wollen?" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "Einige Dateitransfers sind noch aktiv." + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "Ins Benachrichtigungsfeld _minimieren" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "Attribut oder Farbcode einsetzen" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>Fett</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>Unterstrichen</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "<i>Kursiv</i>" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "Normal" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "Farben 0–7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "Farben 8–15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "_Einstellungen" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "Auf die Festp_latte aufzeichnen" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "Textpuffer neu _laden" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "Farbcodes entfernen" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "Nachrichten beim Betreten/Verlassen _verstecken" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "_Extrawarnungen" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "Bei Nachricht _piepsen" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "_Benachrichtigungssymbol blinken lassen bei:" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "_Taskleiste blinken lassen bei:" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "Reiter _lösen" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "S_chließen" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "Benutzerlimit muss eine Zahl sein!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "Filterfarben" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "Keine Nachrichten von außen" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "Themenschutz" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "Nur auf Einladung" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "Moderiert" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "Bannliste" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Schlüsselwort" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "Benutzerlimit" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Neuen Nicknamen eingeben:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "Keine Ergebnisse gefunden." + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "Suche beendet, kein Treffer." + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "Alle _hervorheben" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "Hebe alle Vorkommnisse hervor und unterstreiche das aktuelle Vorkommnis." + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "Groß-/Kleins_chreibung angleichen" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "Eine Suche unter der Beachtung der Groß-/Kleinschreibung ausführen." + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "_Regulärer Ausdruck" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "Behandle Such-Strings wie reguläre Ausdrücke" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Host unbekannt" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "Unbekanntes Benutzerkonto" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Unbekannt" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Wahrer Name:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "Benutzer:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "Konto:" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "Land:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "Server:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "vor %u Minuten" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "Letzte Nachricht:" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "Abwesenheitsgrund:" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "%d Nicks ausgewählt." + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "Die Menüzeile ist jetzt versteckt. Sie können sie durch Druck auf F9 oder Rechtsklick in einem freien Bereich des Textfeldes wieder sichtbar machen." + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "Link im Browser öffnen" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "Ausgewählte URL kopieren" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Channel betreten" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "Channel verlassen" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "Channel rotieren" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "_Autojoin" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "Automatisches Betreten" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "_Automatisches Verbinden" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "Benutzermenü – %s" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "Dieses Menü bearbeiten" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "Markierungslinie ausgeschaltet." + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "Markierungslinie niemals setzen." + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "Markierungslinie manuell zurücksetzen" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "Markierungslinie wurde zurückgesetzt, weil die Begrenzung des Scrollbalkens überschritten wurde." + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "Markierungslinie durch Benutzung von CLEAR zurückgesetzt." + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "Status der Markierungslinie unbekannt." + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "Kanalliste abholen" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "wurde ohne Plugin-Support erstellt" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "Benutzerbefehle - Spezielle Codes:\n\n%c = aktueller Channel\n%e = aktuelles Netzwerk\n%m = Computerinfo\n%n = Ihr Nick\n%t = Zeit/Datum\n%v = HexChat-Version\n%2 = Wort 2\n%3 = Wort 3\n&2 = Wort 2 bis zum Ende der Zeile\n&3 = Wort 3 bis zum Ende der Zeile\n\nz.B.:\n/cmd john hallo\n\n%2 wäre \"john\"\n&2 wäre \"john hallo\"." + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "Benutzerlisten-Knöpfe – Spezielle Codes:\n\n%a = alle ausgewählten Nicks\n%c = aktueller Channel\n%e = aktuelles Netzwerk\n%h = die Hostmaske des ausgewählten Nicks\n%m = Computerinfo\n%n = Ihr Nick\n%s = ausgewählter Nick\n%t = Zeit/Datum\n%u = ausgewähltes Benutzerkonto" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "Dialog-Knöpfe – Spezielle Codes:\n\n%a = alle ausgewählten Nicks\n%c = aktueller Channel\n%e = aktuelles Netzwerk\n%h = die Hostmaske des ausgewählten Nicks\n%m = Computerinfo\n%n = Ihr Nick\n%s = ausgewählter Nick\n%t = Zeit/Datum\n%u = ausgewähltes Benutzerkonto" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "CTCP-Antworten - Spezielle Codes:\n\n%d = Daten (Der gesamte CTCP)\n%e = aktuelles Netzwerk\n%m = Computerinfo\n%s = Der Nick des Absenders\n%t = Zeit/Datum\n%2 = Wort 2\n%3 = Wort 3\n&2 = Wort 2 bis zum Ende der Zeile\n&3 = Wort 3 bis zum Ende der Zeile\n\n" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "Befehle für URLs - Spezielle Codes:\n\n%s = die URL\n\nEin »!« am Anfang des Befehls sagt\naus, dass der Befehl in der Shell\nstatt in HexChat ausgeführt wird" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "Benutzerdefinierte Befehle – %s" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "Benutzerlisten-Popup-Menü – %s" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "Ersetzen - %s" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "Ersetzen durch" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "URL-Handler – %s" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "Benutzerlistenknöpfe - %s" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "Dialog-Buttons – %s" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "CTCP-Antworten – %s" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "He_xChat" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "Netzwerkli_ste" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "_Neu" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "Server-Registerkarte" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "Kanal-Registerkarte" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "Serverfenster" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "Kanalfenster" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "Plugin oder Skript _laden" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "_Beenden" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "A_nsicht" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "_Menüzeile" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "_Themenzeile" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "Ben_utzerliste" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "Benutzerli_sten-Buttons" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "M_odusknöpfe" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "_Channelumschalter" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "_Reiter" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "_Baum" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "_Netzwerkmeter" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Aus" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "Grafisch" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "_Vollbild" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "_Server" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "_Trennen" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "_Wiederverbinden" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "Einem Kanal _beitreten" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "Kanal_liste" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "Als _Abwesend markiert" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "_Benutzermenü" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "_Einstellungen" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "_Optionen" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "Auto-Ersetzen" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "CTCP-Antworten" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "Dialog-Buttons" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "Tastenkürzel" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "Textereignisse" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "URL-Handler" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "Benutzerbefehle" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "Benutzerlisten-Buttons" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "Benutzerlisten-Popup" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "_Fenster" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "_Ban-Liste" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "Direct Chat" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "Dateiüber_tragungen" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "Freundesliste" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "Ignorierliste" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "_Plugins und Skripte" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "_Rohprotokoll" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "_URL-Sammler" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "Markierungslinie zurücksetzen" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "Springe zu Markierungslinie" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "Auswahl _kopieren" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "Text _löschen" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "Test speichern" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "Suche" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "Text suchen" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "Nächstes Ergebnis" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "Vorheriges Ergebnis" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "_Hilfe" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "_Inhalt" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "Ü_ber" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "Fenster _anhängen" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Name" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Zuletzt gesehen" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "Offline" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Niemals" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "vor %d Minuten" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "Vor einer Stunde" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "vor %d Stunden" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "Online" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "Hinzuzufügenden Nickname eingeben:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "In diesen Netzwerken benachrichtigen:" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "Eine kommagetrennte Liste von Netzen wird akzeptiert" + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "Freundesliste – %s" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "Dialogfenster öffnen" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr ": Hervorgehobene Nachricht von: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "Kanal-Nachricht von: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr ": Dateiangebot von: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "Zum Kanal von %s (%s) eingeladen" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "Benachrichtigung von: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr ": Private Nachricht von: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "Verbunden mit %u Netzwerken und %u Kanälen – %s" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "Fenster _wiederherstellen" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "Fenster _verstecken" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "_Blinke bei" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "Channelnachricht" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "Private Nachricht" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "Hervorgehobene Nachricht" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "Status ä_ndern" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "_Abwesend" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "_Zurück" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "Hervorgehobene Nachricht von: %s (%s) – %s" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "%u hervorgehobene Nachrichten, neueste von: %s (%s) – %s" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "Kanalnachricht von: %s (%s) – %s" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "%u Kanalnachricht. – %s" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "Private Mitteilung von: %s (%s) – %s" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "%u private Mitteilungen, neueste von: %s (%s) – %s" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "Dateiangebot von: %s (%s) – %s" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "%u Dateiangebote, neuestes von: %s (%s) – %s" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Version" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Beschreibung" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Wählen Sie ein Plugin oder Skript zum Laden" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "Plugins und Skripte – %s" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "_Laden …" + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "_Entladen" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "_Neu laden" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "Speichern als …" + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "Rohprotokoll (%s) – %s" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "Rohdatenlogbuch leeren" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Neues Netzwerk" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Wirklich das Netzwerk »%s« und alle seine Server löschen?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "Benutzername darf nicht leer sein." + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "Sie können keinen leeren Spitznamen haben." + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "Sie benötigen zwei einzigartige Nicknamen." + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "Die Art, wie Sie sich auf dem Server identifizieren. Für spezielle Login-Methoden, benutzen sie das Autoperform." + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "%s bearbeiten – %s" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "Server" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "Automatisches Betreten" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "Verbindungsbefehle" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "%n=Spitzname\n%p=Passwort\n%r=Wahrer Name\n%u=Benutzername" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "Passwort" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "_Editieren" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "Nur mit dem angegebenen Server verbinden" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Nicht alle Server durchlaufen, wenn die Verbindung scheitert." + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "Automatisch mit diesem Netzwerk verbinden" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "Proxyserver umgehen" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "SSL für alle Server dieses Netzwerks benutzen" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "Ungültiges SSL-Zertifikat akzeptieren" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "Globale Benutzerinformationen benutzen" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "_Nickname:" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "Zweite Wahl:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "Wahrer Name:" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "Ben_utzer:" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "Login-Methode:" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Passwort:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "Passwort zum Einloggen. Im Zweifel leer lassen." + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "Zeichensatz:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "Netzwerkliste – %s" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "Benutzer-Information" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "Dritte Wahl:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Netzwerke" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "Keine Netzwerkliste beim Start" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "Nur Favoriten anzeigen" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "Änd_ern …" + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "_Sortieren" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "Sortiert die Netzwerkliste in alphabetischer Reihenfolge. Benutze Umschalt+Oben und Umschalt+Unten, um eine Zeile weiterzugehen." + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "_Favorisieren" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "Dieses Netzwerk zu Favoriten hinzufügen bzw. von ihnen entfernen." + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "_Verbinden" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "Afrikanisch" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Albanisch" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "Amharisch" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "Asturian" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Aserbeidschanisch" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "Baskisch" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Weißrussisch" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Bulgarisch" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "Chinesisch (Vereinfacht)" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "Chinesisch (Traditionell)" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "Tschechisch" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "Dänisch" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "Niederländisch" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "Englisch (Britisch)" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "Englisch" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Estnisch" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "Finnisch" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "Französisch" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "Galizisch" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "Deutsch" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "Griechisch" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "Gujarati" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "Hindi" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "Ungarisch" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "Indonesisch" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "Italienisch" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "Japanisch" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "Kannada" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "Kinyarwanda" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "Koreanisch" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "Lettisch" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "Litauisch" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "Mazedonisch" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Malayisch" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "Malayalam" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "Norwegisch (Bokmal)" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "Norwegisch (Nynorsk)" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "Polnisch" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "Portugisisch" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "Portugisisch (Brazilien)" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "Pandschabisch" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "Russisch" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "Serbisch" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "Slowakisch" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "Slowenisch" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "Spanisch" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "Schwedisch" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Thailändisch" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "Türkisch" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "Ukrainisch" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Vietnamesisch" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "Wallonisch" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Allgemein" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "Sprache:" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "Hauptschriftart:" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Schriftart:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "Textfeld" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "Farbige Nicknamen" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "Jeder Person im IRC eine Farbe zuordnen" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "Nicks einrücken" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "Nicknamen rechts ausrichten" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "Markierungslinie zeigen" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "Eine rote Linie nach der zuletzt gelesenen Nachricht einfügen." + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Hintergrundbild:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "Transparenzseinstellungen" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "Fensterundurchsichtigkeit:" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "Zeitstempel" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "Zeitstempel aktivieren" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "Zeitstempelformat:" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "Siehe den MSDN-Artikel über strftime für Details." + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "Siehe die strftime-Manpage für Details." + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "Titelleiste" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "Zeige Channelmodes" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "Zeige Anzahl an Benutzern" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "Alphabet" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "Zuletzt geschriebener Nachricht" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "Eingabefeld" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "Textfeld-Schrift und -farben benutzen" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "Farben und Attribute rendern" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "Nick-Box anzeigen" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "Symbol für Benutzermodus in Nick-Box anzeigen" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "Rechtschreibung überprüfen" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "Zu benutzende Wörterbücher:" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "Sprachcodes (wie in »%LOCALAPPDATA%\\enchant\\myspell\\dicts«) benutzen.\nTrennen Sie mehrere Einträge durch Kommata." + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "Verwenden Sie durch Kommata getrennte Sprachcodes." + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "Nickvervollständigung" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "Anhang für Nickvervollständigung:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "Nickvervollständigung sortiert nach:" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "Anzahl Nickvervollständigung" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "Schwellwert zum Auflisten von Nicks anstatt Vervollständigung" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "Nicks" + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "Grafisch" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "A-Z, Ops zuerst" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "Z-A, Ops zuletzt" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "Unsortiert" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "Links (oben)" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "Links (unten)" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "Rechts (oben)" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "Rechts (unten)" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Oben" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Unten" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Versteckt" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "Benutzerliste" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "Hostnamen in Benutzerliste zeigen" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "Schrift und Farben des Eingabefelds nutzen" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "Zeige Icons für Usermodi" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "Nutze grafische Icons antstatt Textsymbole in der Userliste." + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "Farbige Nicknamen in der Benutzerliste" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "Färbt Nicknamen so, wie im Chat ein." + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "Zeige Benutzeranzahl in Kanälen" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "Benutzerliste sortiert nach:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "Benutzerliste zeigen:" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "Abwesenheitsverfolgung" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "Den Abwesenheitsstatus von Benutzern verfolgen und sie in einer anderen Farbe anzeigen" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "In Channels mit weniger Nutzern als:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "Aktion bei Doppelklick" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "Zusätzliche Gadgets" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "Verzögerungsmesser:" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "Drosselmesser:" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Fenster" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Reiter" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "Immer" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "Nur angeforderte Reiter" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "Automatisch" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "In neuem Tab" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "Im aktuellen Tab" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "Baumansicht" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "Art des Umschalters:" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "Reiter für Servermeldungen öffnen" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "Öffne einen neuen Reiter für empfangene private Nachrichten" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "Reiter alphabetisch sortieren" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "Zeige Symbole im Kanalbaum" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "Zeige gestrichelte Linien im Kanalbaum" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "Mausrad zum Wechseln zwischen Tabs" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "Mittelklick, um Registerkarte zu schließen" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "Kleinerer Text" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "Neue Reiter im Vordergrund:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "Platzierung von Notizen:" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "Channelumschalter anzeigen:" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "Reiternamen kürzen auf:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "Zeichen." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "Reiter oder Fenster" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "Öffne Channels in:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "Öffne Dialoge in:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "Öffne Hilfsmittel in:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "DCC, Ignore, Notify usw. in Reitern oder Fenstern öffnen?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "Nachrichten" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "Textpuffer" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "Nach einer Bestätigung fragen" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "Frage nach dem Download-Ordner" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "Speichern ohne Dialog" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "Dateien und Verzeichnisse" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "Dateiangebote automatisch annehmen:" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Dateien ziehen nach:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "Fertige Downloads verschieben nach:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "Speichere Nick in Dateinamen" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "DCC-Fenster automatisch öffnen" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "Versandfenster" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "Empfangsfenster" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "Chatfenster" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "Maximale Dateiübertragungsgeschwindigkeiten (Byte pro Sekunde)" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "Ein Upload:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "Max. Geschw. für einen Transfer" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "Ein Download:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "Alle Uploads zusammen:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "Max. Geschw. für alle Transfers" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "Alle Downloads zusammen:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "Benachrichtigungen" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "Benachrichtigungen zeigen bei:" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "Symbol im Benachrichtigungsbereich blinken lassen bei:" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "Taskleiste blinken lassen bei:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "Piepsen bei:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "Den Sofortnachrichtenbenachrichtigungssystemton bei folgenden Ereignissen abspielen:" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "Den »message-new-instant«-Ton aus dem freedesktop.org-Soundthema bei ausgewählten Ereignissen abspielen" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "Einen GTK-Piepton bei den ausgewählten Ereignissen abspielen" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "Benachrichtigungen unterdrücken, während man abwesend ist" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "Klänge abspielen, wenn das Programm im Vordergrund ist" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "Verhalten des Benachrichtungsfeldes" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "Symbol im Benachrichtigungsbereich aktivieren." + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "Ins Benachrichtigungsfeld minimieren" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "Ins Infofeld schließen" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "Automatisch als abwesend/zurück markieren" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "Status automatisch wechseln, wenn das Programm in den Tray geschlossen wird." + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "Benachrichtigungen nur zeigen, wenn versteckt oder minimiert" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "Hervorgehobene Nachrichten" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Hervorgehobene Nachrichten sind solche, in denen der eigene Nick fällt, aber auch:" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "Extrawörter zum Hervorheben:" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "Nicht hervorzuhebende Nicks:" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "Immer hervorzuhebende Nicks:" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Mehrere Wörter durch Kommata trennen.\nWildcards werden unterstützt." + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "Dock-Icon springen lassen bei:" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "Standardnachrichten" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "Beenden:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "Channel verlassen:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "Abwesend:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "Abwesend" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Abwesenheit einmal zeigen" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "Identische Abwesenheitsbenachrichtigungen nur einmal zeigen." + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "Automatisch Abwesenheit beenden" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "Beende Abwesenheit vor dem Nachrichtenversand." + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "Verschiedenes" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "Modi in Rohform anzeigen" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "WHOIS bei Notizen" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "Sendet ein /WHOIS, wenn ein Nutzer aus Ihrer Notify-Liste kommt" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "Join/Part-Nachrichten verstecken" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "Join/Part-Nachrichten standardmäßig verstecken." + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "Namensänderungsnachrichten verstecken " + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "*!*@*.host" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "*!*@domain" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "*!*user@*.host" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "*!*user@domain" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "Automatisches Kopierverhalten" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "Ausgewählten Text automatisch kopieren" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "Gewählten Text in die Zwischenablage kopieren, wenn die linke Maustaste losgelassen wird. Ansonsten wird Strg+Umschalt+C den ausgewählten Text in die Zwischenablage kopieren." + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "Zeitstempel automatisch einbinden" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "Automatisch Zeitstempel in den kopierten Textzeilen einbinden. Ansonsten werden Zeitstempel eingebunden, wenn die Umschalttaste während der Auswahl gedrückt gehalten wird." + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "Automatisch Farbinformationen mitkopieren" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "Automatisch Farbinformationen im ausgewählten Text mitkopieren. Sonst werden Farbinformationen kopiert, wenn die Strg-Taste beim Auswählen gedrückt gehalten wird." + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "Wahrer Name:" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "Alternative Schriftarten:" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "Mehre Einträge mit Kommata trennen (keine Leerzeichen davor oder dahinter)." + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "Zeige Listen im kompakten Modus" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "Benutze kleinere Abstände zwischen Benutzerliste und Kanalbaumreihen." + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "Benutze Serverzeit, wenn unterstützt" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "Zeitstempel vom Server holen, wenn die Zeitservererweiterung unterstützt wird." + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "Bei Verbindungsverlust automatisch neu verbinden" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "Wiederverbindungsverzögerung:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "Verzögerung beim automatischen Betreten:" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "Bannart:" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "Versuchen, diese Bannmaske zu benutzen, wenn gebannt oder ruhiggestellt wird. (benötigt irc_who_join)" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Logbücher" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "Textpuffer der letzten Sitzung anzeigen" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "Textpufferzeilen:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "Unterhaltungen auf der Festplatte aufzeichnen" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "Logbuchname:" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Server %c=Channel %n=Netzwerk." + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "Datumsstempel in Logs einfügen" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "Datumsstempelformat:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "Links" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "Protokollierung von URLs auf der Festplatte aktivieren" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "Sammlung von URLs aktivieren" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "Max. Anz. URL in Sammlung" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(Deaktiviert)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "SOCKS4" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "SOCKS5" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "Automatisch" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "Alle Verbindungen" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "Nur IRC-Server" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "Nur DCC" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "Ihre Adresse" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "Binden an:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "Nur für Computer mit mehreren Adressen sinnvoll." + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "Dateiübertragungen" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "Meine IP vom IRC-Server holen" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "Fragt den IRC-Server nach Ihrer wahren IP-Adresse. Benutzen Sie dies, falls Sie eine 192.168.*.*-Adresse haben!" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "DCC-IP-Adresse:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "Behaupten Sie, diese Adresse zu verwenden, wenn Sie Dateien anbieten." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "Erster DCC-Lausch-Port:" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "Letzter DCC-Lausch-Port:" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "(Belasse die Ports bei 0 für die gesamte Breite." + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "Proxy-Server:" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "Hostname:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Port:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Typ:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "Proxy benutzen für:" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "Proxy-Authentifizierung" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "Authentifizierung benutzen (Nur HTTP oder SOCKS5)" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "Benutzer:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "Identd-Server" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "Aktiviert" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "Der Server wird mit dem Netzwerk-Benutzernamen antworten" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "Sie müssen Erlaubnis dafür haben, um an diesem Port lauschen zu dürfen. Wenn das nicht 113 ist (0 ist die Standardeinstellung dafür), dann müssen Sie Port-Forwarding konfigurieren." + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "Bilddatei auswählen" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "Ordner für heruntergeladene Dateien wählen" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Schriftart auswählen" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Suchen …" + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "Datenverzeichnis öffnen" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Farbe wählen" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "Textfarben" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "mIRC-Farben:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "Lokale Farben:" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Vordergrund:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Hintergrund:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "Ausgewählter Text" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "Schnittstellenfarben" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "Neue Daten:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "Markierungslinie:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "Neue Nachricht:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "Abwesender Benutzer:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "Hervorhebung:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "Rechtschreibprüfung:" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "Farben unterdrücken" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Ereignis" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "Klangdatei:" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "Wählen Sie eine Klangdatei aus" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "Klangdatei:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "_Durchsuchen …" + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "Abs_pielen" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Schnittstelle" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "Aussehen" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Eingabezeile" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Benutzerliste" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "Channelumschalter" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Farben" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Chatten" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "Töne" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "Fortgeschritten" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Netzwerk-Setup" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Dateitransfers" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "Identd" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Kategorien" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "Sie können die Baumansicht nicht oben oder unten anzeigen! Bitte\nwechseln Sie erst im <b>Ansicht</b>-Menü zur <b>Reiter</b>-Ansicht." + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "Das Feld für den echten Namen darf nicht leer sein. Es wird »realname« verwendet." + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Einige Einstellungen wurden geändert, die einen Neustart erfordern." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*WARNUNG*\nAutomatisches Annehmen von DCCs in Ihr Home-\nVerzeichnis kann gefährlich sein und ist\nausnutzbar. Zum Beispiel könnte Ihnen jemand\nein .bash_profile schicken." + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "Optionen – %s" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "<i>(keine Vorschläge)</i>" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "Mehr …" + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "»%s« zum Wörterbuch hinzufügen" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "Ignoriere alles" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "Rechtschreibvorschläge" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "Fehler in der enchant-Bibliothek in Sprache: %s" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "Fehler beim Auswerten des Strings" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Diesem Signal werden nur %d Argumente übergeben, $%d ist ungültig" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "Textdatei drucken" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ Nummer" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Ereignis ändern" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "Lade von …" + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Alle testen" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "OK" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "URL-Sammler – %s" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Liste leeren" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Ausgewählte URL kopieren" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Kopieren" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Liste in Datei speichern" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d Ops, %d gesamt" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "Öffne eine irc:://Server:Port/Channel-URL" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "Sysinfo: Information konnte nicht gehollt werden. Entweder nicht unterstützt oder Fehler." + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "Sysinfo: Keine Information nach diesem Namen\n" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "Sysinfo: %s ist gesetzt auf %d\n" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "Sysinfo: Gültige Einstellungen sind: announce und hide_* für jede Informationseinheit. Z.B. hide_os. Ohne Wert wird die aktuelle (oder Standard-)Einstellung gezeigt.\n" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "Sysinfo: Ungültiger Variablenname\n" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "Plugin %s geladen\n" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "Plugin %s entladen\n" diff --git a/hexchat/po/el.po b/hexchat/po/el.po new file mode 100644 index 0000000..c61f17a --- /dev/null +++ b/hexchat/po/el.po @@ -0,0 +1,6261 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Efstathios Iosifidis <iefstathios@gmail.com>, 2015,2017 +# Efstathios Iosifidis <iosifidis@opensuse.org>, 2015 +# txapollo243, 2013 +# Stathis Kamperis <ekamperi@auth.gr>, 2006 +# txapollo243, 2013 +# Αλέξανδρος Καπετάνιος <alexandros@gnugr.org>, 2017 +# Γιάννης Ανθυμίδης, 2013,2015 +# Yannis Anthymidis, 2013,2015 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-04 23:28+0000\n" +"Last-Translator: TingPing <tingping@tingping.se>\n" +"Language-Team: Greek (http://www.transifex.com/hexchat/hexchat/language/el/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: el\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "HexChat" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "Πελάτης IRC" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "Το HexChat υποστηρίζει λειτουργίες όπως: DCC, SASL, διαμεσολαβητές, ορθογραφική διόρθωση, ειδοποιήσεις, logging, προσαρμοσμένα θέματα, και Python/Perl scripts." + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "Κεντρικό Παράθυρο Συζήτησης" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "Συνομιλήστε με άλλους χρήστες σε απευθείας σύνδεση" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "IM;Chat;" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "Άνοιγμα ασφαλούς λειτουργίας" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "Διαχειριστής θεμάτων HexChat" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Είμαι απασχολημένος/η" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Αποχώρησε" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "ΚΛΕΙΣΤΟ" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "ΑΝΟΙΧΤΟ" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "{unset}" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Δίκτυο" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<κανένα>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Κανάλι" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Αναμονή" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Ενεργό" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Απέτυχε" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Έγινε" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Σύνδεση" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Ματαιώθηκε" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "Αδυναμία πρόσβασης στο %s\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Σφάλμα" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "Ο/Η %s σας προσφέρει το «%s». Θέλετε να το δεχτείτε;" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "Δεν υπάρχουν ενεργά DCC\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "_Άνοιγμα Παραθύρου Διαλόγου" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "_Αποστολή ενός Αρχείου" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "_Πληροφορίες Χρήστη (Whois)" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "_Προσθήκη στην Λίστα Φίλων" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "_Αγνόηση" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "Χ_ειριστής Δράσης" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Απόδοση Chanops" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Αφαίρεση Chanops" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "Απόδοση Voice" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "Αφαίρεση Voice" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Kick/Ban" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Kick" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "Πάρε μπούλο" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "KickBan" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Εγκατάλειψη καναλιού" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Σύνδεση σε κανάλι...." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "Εισάγετε το κανάλι προς σύνδεση:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Συνδέσεις διακομιστών" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Ping στο διακομιστή" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Απόκρυψη έκδοσης" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Op" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "αντίο" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Εισάγετε αιτία για το kick του %s:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "Διάλογος" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "ΠοιοςΕίναι" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Αποστολή" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Διάλογος" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Καθαρισμός" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "Δεν έχετε πρόσβαση εγγραφής στο%s. Δεν μπορεί τίποτα να σωθεί από αυτή τη συνεδρία." + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* Το να χρησιμοποιείτε το IRC ως root είναι ηλίθιο!\n Πρέπει να δημιουργήσετε έναν λογαριασμό απλού χρήστη\n και να χρησιμοποιείτε αυτόν.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "ΝΑΙ " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "ΟΧΙ " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Πλημμυρίζεστε με μηνύματα CTCP από τον/την %s. Αγνοώ τον/την %s\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "Αποφασισμένος να %s" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "Δεν βρέθηκε" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "Αποφασισμένος να:" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "Αναζήτηση για %s..." + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s συνδέθηκε\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s αποσυνδέθηκε\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Δεν έχετε συνδεθεί σε κανάλι. Δοκιμάστε /join #<κανάλι>\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Δεν έχετε συνδεθεί. Δοκιμάστε /server <διακομιστής> [<θύρα>]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "Ο εξυπηρετητής %s υπάρχει ήδη στο δίκτυο %s.⏎\n" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "Προστέθηκε ο εξυπηρετητής %s στο δίκτυο %s.⏎\n" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Είστε ήδη απομακρυσμένος/η: %s\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "Έχετε επιστρέψει ήδη.\n" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "Το /bin/sh χρειάζεται για την εκτέλεση!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "Διαθέσιμες Εντολές:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "Εντολές ορισμένες από τον χρήστη:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "Εντολές ορισμένες από πρόσθετα:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Πληκτρολογείστε /HELP <εντολή> για περισσότερες πληροφορίες, ή /HELP -l" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Το άγνωστο όρισμα «%s» αγνοήθηκε." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "Η ελάττωση δεν υποστηρίζεται από αυτό το διακομιστή." + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "Δε βρέθηκε τέτοιο πρόσθετο.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "Αυτό το πρόσθετο αρνείται να αποφορτωθεί.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <όνομα> <ενέργεια>, προσθέτει ένα κουμπί στη λίστα χρηστών" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "ΠΡΟΣΘΗΚΗΔΙΑΚΟΜΙΣΤΗ <NewNetwork> <newserver/6667>, πρόσθεση ενός νέου δικτύου με ένα νέο διακομιστή στη λίστα δικτύου" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <εντολή>, στέλνει μια εντολή σε όλα τα κανάλια που βρίσκεστε" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "ALLCHANL <cmd>, στέλνει μια εντολή σε όλα τα κανάλια στον τρέχοντα εξυπηρετητή" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <εντολή>, στέλνει μια εντολή στους διακομιστές που βρίσκεστε" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "ΑΠΟΥΣΙΑΖΕΙ [<reason>], η ρύθμισης σας για απουσία (χρήση/ΠΙΣΩ για αναίρεση)" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "BACK, ορίζει ότι έχετε επιστρέψει (όχι απομακρυσμένος/η)" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <μάσκα> [<τύπος ban>], κάνει ban σε όποιον ταιριάζει στη μάσκα από το τρέχον κανάλι. Εάν είναι ήδη στο κανάλι δεν τους κάνει kick (χρειάζεται chanop)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <μεταβλητή> [<τιμή>]" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "CHARSET [<κωδικοποίηση>], ανακτήστε ή θέστε την κωδικοποίηση που χρησιμοποιείται για την τρέχουσα σύνδεση" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "ΕΚΚΑΘΑΡΙΣΗ [ΟΛΟ ΤΟ ΣΤΟΡΙΚΟ[-]<amount>, Καθαρισμός του τρέχων παράθυρου κειμένου ή διαχείριση ιστορικού" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "ΚΛΕΙΣΙΜΟ [-m], Κλείνει την τρέχουσα καρτέλα, το κλείσιμο του παραθύρου εάν αυτή είναι η μόνη ανοιχτή καρτέλα, ή με την σήμανση \"-m\" , κλείνει όλα τα ερωτήματα." + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <κωδικός>, βρίσκει τον κωδικό μιας χώρας, πχ: gr = Ελλάδα" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <nick> <μήνυμα>, στέλνει ένα μήνυμα CTCP στο nick, συνηθέστερα μηνύματα είναι τα VERSION και USERINFO" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "CYCLE [<κανάλι>], αποχωρεί το τρέχον ή ορισμένο κανάλι και ξαναμπένει αμέσως" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <nick> - λήψη ενός προσφερθέντος αρχείου\nDCC SEND [-maxcps=#] <nick> [αρχείο] - αποστολή ενός αρχείου σε κάποιον\nDCC PSEND [-maxcps=#] <nick> [αρχείο] - αποστολή ενός αρχείου σε παθητική κατάσταση λειτουργίας\nDCC LIST - εμφάνιση της λίστας DCC\nDCC CHAT <nick> - προσφορά συνομιλίας DCC σε κάποιον\nDCC PCHAT <nick> - προσφορά συνομιλίας DCC σε παθητική κατάσταση λειτουργίας\nDCC CLOSE <τύπος> <nick> <αρχείο> παράδειγμα:\n /dcc close send mixalhs file.tar.gz" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <nick>, αφαίρεση της κατάστασης chanhalf-op από το nick στο τρέχον κανάλι (χρειάζεται chanop)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <όνομα>, διαγραφή ενός κουμπιού κάτω από τη λίστα χρηστών" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <nick>, αφαίρεση της κατάστασης chanop από το nick στο τρέχον κανάλι (χρειάζεται chanop)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <nick>, αφαίρεση της κατάστασης voice από το nick στο τρέχον κανάλι (χρειάζεται chanop)" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, Αποσυνδέει από τον διακομιστή" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "DNS <nick|host|ip>, Αναλύει την IP ή το όνομα κεντρικού υπολογιστή" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <κείμενο>, Τοπική εκτύπωση κειμένου" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <εντολή>, εκτελεί την εντολή. Εάν δοθεί το -o τότε η έξοδος θα σταλθεί στο τρέχον κανάλι, αλλιώς στέλνεται στο τρέχον κουτί κειμένου" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, στέλνει στη διεργασία ένα σήμα SIGCONT" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9], σκοτώνει ένα εκτελούμενο exec στη τρέχουσα συνεδρία. Εάν δοθεί το -9 τότε στέλνει στη διεργασία ένα σήμα SIGKILL" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, στέλνει στη διεργασία ένα σήμα SIGSTOP" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, στέλνει δεδομένα στο ρεύμα stdin της διεργασίας" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "EXPORTCONF, εξαγωγή ρυθμίσεων HexChat" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, καθαρίζει σειρά αποστολής του τρέχοντος διακομιστή" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <διακομιστής> [<θύρα>], θέτει proxy ένα διακομιστή, εξ'ορισμού θύρα 23" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <ψευδώνυμο> <κωδικός πρόσβασης>, σκοτώνει ένα ψευδώνυμο-φάντασμα" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <nick>, δίνει κατάσταση chanhalf-op στο nick (χρειάζεται chanop)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <κωδικός>, σας ταυτοποιεί με το nickserv" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <μάσκα> <τύποι..> <επιλογές..>\n μάσκα - μάσκα διακομιστή για ignore πχ: *!*@*.otenet.gr\n τύποι - τύποι δεδομένων για ignore, ένα από:\n PRIV, CHAN, NOTI, CTCP, INVI, ALL\n επιλογές - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "/INVITE <nick> [<κανάλι>], καλεί κάποιον σε ένα κανάλι, εξ'ορισμού το τρέχον κανάλι (χρειάζεται chanop)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <κανάλι>, συνδέεται στο κανάλι" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "KICK <ψευδώνυμο> [λόγος], διώχνει το ψευδώνυμο από το τρέχον κανάλι (χρειάζεται chanop)" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "KICKBAN <ψευδώνυμο> [λόγος], κάνει αποκλεισμό και διώχνει το ψευδώνυμο από το τρέχον κανάλι (χρειάζεται chanop)" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, απαίτηση νέου ελέγχου για lag" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <αρχείο>, φορτώνει ένα πρόσθετο ή ένα script" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, Μαζικό deop όλων των chanhalf-ops στο τρέχον κανάλι (χρειάζεται chanop)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, Μαζικό deop όλων των chanops στο τρέχον κανάλι (χρειάζεται chanop)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <δράση>, στέλνει τη δράση στο τρέχον κανάλι (οι δράσεις γράφονται στο τρίτο πρόσωπο, πχ. /me kanei mia toumpa)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, Μαζικό kick όλων εκτός από εσένα στο τρέχον κανάλι (χρειάζεται chanop)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, Δίνει μαζικά op σε όλους τους χρήστες στο τρέχον κανάλι (χρειάζεται chanop)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "ΟΝΟΜΑΤΑ [κανάλι], Να τοποθετήσει τα ονόματα στο κανάλι" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <nick> <μήνυμα>, Στέλνει μία CTCP αναγγελία" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <διακομιστής> [<θύρα>]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <ψευδώνυμο>, θέτει το ψευδώνυμο σας" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "ΠΡΟΕΙΔΟΠΟΙΗΣΗ <όνομα/κανάλι> <μήνυμα>, στέλνει μια προειδοποίηση " + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [-n δίκτυο1[,δίκτυο2,...]][ <ψευδώνυμο>], δείχνει τη λίστα ειδοποίησης ή προσθέτει κάποιον σε αυτήν" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <nick>, δίνει κατάσταση chanop στο nick, (χρειάζεται chanop)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<κανάλι>] [<αιτία>], φεύγει από το κανάλι, εξ'ορισμού το τρέχον" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <nick | κανάλι>, κάνει ένα CTCP ping στο nick ή το κανάλι" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "ΕΡΩΤΗΜΑ [-nofocus] <όνομα> [μήνυμα], ανοίγει ένα νέο παράθυρο ιδιωτικού μηνύματος σε κάποιον και προαιρετικά στέλνει μήνυμα" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "" + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<αιτία>], αποσύνδεση από τον τρέχοντα διακομιστή" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <κείμενο>, στέλνει ένα κείμενο σε ωμή μορφή στο διακομιστή" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONΝECT [-ssl] [<διακομιστής>] [<port>] [<password>] , Μπορεί να κληθεί απλά σαν /reconnect για επανασύνδεση στον τρέχοντα διακομιστή ή με /reconnect all για όλους τους ανοικτούς διακομιστές" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONΝECT [<διακομιστής>] [<port>] [<password>], Μπορεί να κληθεί απλά σαν /reconnect για επανασύνδεση στον τρέχοντα διακομιστή ή με /reconnect all για όλους τους ανοικτούς διακομιστές" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <κείμενο>, στέλνει το κείμενο στο αντικείμενο στο παράθυρο" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <ψευδώνυμο> [<αρχείο>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <διακομιστής> <port> <κανάλι>, σύνδεση σε διακομιστή και κανάλι" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <διακομιστής> <port> <κανάλι>, σύνδεση σε διακομιστή και κανάλι" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "ΔΙΑΚΟΜΙΣΤΗΣ <host> [<port>] [<password>], συνδέεται σε ένα διακομιστή, η προεπιλεγμένη θύρα είναι η 6667" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<θέμα>], θέτει το θέμα αν δοθεί κάποιο, αλλιώς δείχνει το τρέχον" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "\nTRAY -f <χρονικό όριο> <αρχείο1> [<αρχείο2>] Αναβόσβημα με τα 2 εικονίδια.\nTRAY -f <όνομα αρχείου> Ορισμός εικονιδίου συστήματος.\nTRAY -i <αριθμός> Αναβόσβημα με το προεπιλεγμένο\n εικονίδιο.\nTRAY -t <κείμενο> Ορισμός αναδυόμενου κειμένου.\nTRAY -b <τίτλος> <κείμενο> Ορισμός του μπαλονιού." + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <mask> [<mask>...], κάνει unban με τις ορισμένες επιλογές" + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <μάσκα> [QUIET]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <αρχείο>, αποφορτώνει ένα Perl script" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "" + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, ανοίγει ένα URL στον περιηγητή σας" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "USELECT [-a] [-s] <χρήστης1> <χρήστης2> κλπ, επισημαίνει τον(ους) χρήστη(ες) στη λίστα χρηστών" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <nick>, δίνει κατάσταση voice σε κάποιον (θέλει chanop)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <μήνυμα>, αποστολή του μηνύματος σε όλα τα κανάλια" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <μήνυμα>, αποστολή του μηνύματος σε όλους τους chanops στο τρέχον κανάλι" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "Εντολές Χρήστη για: %s\n" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "Χρήση: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nΔεν υπάρχει διαθέσιμη βοήθεια για αυτή την εντολή.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "Δεν υπάρχει τέτοια εντολή.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "Κακές επιλογές για την εντολή χρήστη.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "Εγκατάλειψη, πάρα πολλές επαναλαμβανόμενες εντολές χρήστη." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "Άγνωστη Εντολή %s. Δοκίμασε /βοήθεια\n" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "Δεν υπάρχει το σύμβολο xchat_plugin_init· σίγουρα είναι πρόσθετο xchat;" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "ΓΝΩΣΤΟΠΟΙΗΣΗ <πόρτα> <όνομαχρήστη>" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "Χρονομετρητής %d έχει διαγραφεί.\n" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "Κανένας εγκατεστημένος χρονοδιακόπτης\n" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "%5d %8.1f %7d %s\n" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Είστε σίγουρος/η ότι αυτός ο διακομιστής και η θύρα είναι ικανά για SSL;\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "Δεν ήταν δυνατή η εύρεση του ονόματος διακομιστή %s\nΕλέγξτε τις ρυθμίσεις IP σας!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "Απέτυχε η διάβαση από το proxy\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Μετάβαση στον επόμενο διακομιστή σε %s...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "Προειδοποίηση: Το σύνολο χαρακτήρων \"%s\" είναι άγνωστο. Δεν θα γίνει καμία μετατροπή για το δίκτυο %s." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "%C18*%O$t%C18$1%O προστέθηκε στην λίστα ειδοποίησης." + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "%C22*%O$t%C22$1%O: %C18$2%O κατά συνέχεια %C24$4%O από %C26$3%O" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "%C22*%O$tΑδυναμία εισαγωγής %C22$1 %O(%C20Είστε μπλοκαρισμένος%O)." + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "%C29*%O$tΑναγνώριση δυνατοτήτων: %C29$2%O" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "%C29*%O$tΑφαίρεση δυνατοτήτων: %C29$2%O" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "%C23*%O$tΥποτηρίχθηκαν δυνατότητες: %C29$2%O" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "%C23*%O$tζητήθηκαν δυνατότητες: %C29$1%O" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "%C24*%O$t%C28$1%O τώρα είναι ως %C18$2%O" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O θέτει σε αποκλεισμό σε %C18$2%O" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "%C22*%O$tΚανάλι %C22$1%O έχει δημιουργηθεί %C24$2%O" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O αφαίρεση της κατάστασης half-operator από %C18$2%O" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O αφαίρεση της κατάστασης διαχειριστή καναλιού από %C18$2%O" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O αφαίρεση voice από %C18$2%O" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%C θέτει σε εξαίρεση σε %C18$2%O" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O δίνει την κατάσταση διαχειριστή καναλιού σε %C18$2%O" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%C θέτει σε εξαίρεση πρόσκλησης σε %C18$2%O" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%UΚανάλι Χρήστες Θέμα" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "%C22*%O$t%C26$1%O ορίζει κατάσταση %C24$2$3%O σε %C22$4%O" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "%C22*%O$tΚανάλι %C22$1%O λειτουργίες: %C24$2" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O ορίζει σε κατάσταση διαχειριστή καναλιού σε %C18$2%O" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O αφαιρεί τις εξαιρέσεις σε %C18$2%O" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "%C22*%O$t%C26$1%O αφαιρεί την λέξι-κλειδί καναλιού" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "%C22*%O$t%C26$1%O αφαιρεί το όριο χρηστών" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "" + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "" + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "" + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "" + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "" + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "" + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "" + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "" + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "" + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "" + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "" + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "%C23*$t$1 ($3%C23) έχει εισέλθει" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "" + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tΗ λίστα ειδοποίησης είναι άδεια." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "" + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "%C24*$t$1 ($2%C24) αποχώρησε" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "%C24*$t$1 ($2%C24) αποχώρησε ($4)" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "%C24*%O$tA Η διεργασία εκτελείτε ήδη" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "%C24*$t$1 εγκατέλειψε ($2)" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "" + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "%C29*%O$tΣυνδεδεμένος." + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "" + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "%C19*%O$tΤώρα μιλάτε στο %C22$2%O" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "Φορτώθηκε το αρχείο καταγραφής από" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** ΛΗΞΗ ΤΗΣ ΚΑΤΑΓΡΑΦΗΣ ΣΤΙΣ %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** ΕΝΑΡΞΗ ΤΗΣ ΚΑΤΑΓΡΑΦΗΣ ΣΤΙΣ %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "Αριστερό μήνυμα" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "Δεξί μήνυμα" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "Διεύθυνση IP" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Όνομα χρήστη" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "Το ψευδώνυμο του συνδεόμενου ατόμου" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "Το συνδεόμενο κανάλι" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "Ο διακομιστής του ατόμου" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Ψευδώνυμο" + +#: src/common/text.c:980 +msgid "The action" +msgstr "Η δράση" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "Χαρακτήρας κατάστασης" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "Στοιχισμένο κείμενο" + +#: src/common/text.c:987 +msgid "The text" +msgstr "Το κείμενο" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "Το μήνυμα" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Όνομα διακομιστή" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Παλιό ψευδώνυμο" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Νέο ψευδώνυμο" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "Το ψευδώνυμο του ατόμου που άλλαξε το θέμα" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Θέμα" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "Το ψευδώνυμο του ατόμου που έκανε kick" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "Το άτομο που έγινε kick" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "Το κανάλι" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "Η αιτία" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "Το ψευδώνυμο του ατόμου που φεύγει" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "Η ώρα" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "Ο δημιουργός" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Ψευδώνυμο" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Αιτία" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Διακομιστής" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "Από ποιον είναι" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "Η ώρα σε x.x μορφή (δείτε παρακάτω)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "Το κανάλι πρόκειται να" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "Ο ήχος" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "Το ψευδώνυμο του ατόμου" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "Το γεγονός CTCP" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "Το ψευδώνυμο του ατόμου που έθεσε το κλειδί" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "Το κλειδί" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "Το ψευδώνυμο του ατόμου που έθεσε το όριο" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "Το όριο" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "Το ψευδώνυμο του ατόμου που έδωσε το op" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "Το ψευδώνυμο του ατόμου που του δόθηκε op" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "Το ψευδώνυμο του ατόμου που του δόθηκε halfop" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "Το ψευδώνυμο του ατόμου που έδωσε το halfop" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "Το ψευδώνυμο του ατόμου που έδωσε το voice" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "Το ψευδώνυμο του ατόμου που του δόθηκε voice" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "Το ψευδώνυμο του ατόμου που έκανε το ban" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "Η μάσκα του ban" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "Το ψευδώνυμο που αφαίρεσε το κλειδί" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "Το ψευδώνυμο που αφαίρεσε το όριο" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "Το ψευδώνυμο του ατόμου που του έγινε deop" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Το ψευδώνυμο του ατόμου που του έγινε dehalfop" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "Το ψευδώνυμο του ατόμου που του έγινε devoice" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "Το ψευδώνυμο του ατόμου που έκανε την εξαίρεση" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "Η μάσκα της εξαίρεσης" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "Το ψευδώνυμο του ατόμου που αφαίρεσε την εξαίρεση" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "Το ψευδώνυμο του ατόμου που έκανε το invite" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "Η μάσκα invite" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "Το ψευδώνυμο του ατόμου που αφαίρεσε το invite" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "Το ψευδώνυμο του ατόμου που θέτει τη κατάσταση" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "Το πρόσημο της κατάστασης (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "Το γράμμα της κατάστασης" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "Το κανάλι στο οποίο ρυθμίστηκε" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Πλήρες όνομα" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Μέλη καναλιού/\"είναι ένας IRC operator\"" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Πληροφορίες διακομιστή" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Χρόνος αδράνειας" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Ώρα σύνδεσης" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Αιτία απουσίας" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Μήνυμα" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Λογαριασμός" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "Πραγματικά χρήστης@διακομιστής" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "Πραγματική διεύθυνση IP" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Όνομα καναλιού" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "Μηχανισμός" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Κείμενο" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Το ψευδώνυμο του ατόμου που σας προσκάλεσε" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Χρήστες" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "Το ψευδώνυμο είναι σε χρήση" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Το ψευδώνυμο δοκιμάζεται" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Θύρα" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "Μεταβολή καταστάσεων" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "Σύνδεσμος" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "Τύπος DCC" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Όνομα αρχείου" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Όνομα αρχείου προορισμού" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "Όνομα διαδρομής" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Θέση" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Μέγεθος" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "Αναγνωριστικό DCC" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "Αριθμός ειδοποιούμενων αντικειμένων" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Παλιό όνομα αρχείου" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Νέο όνομα αρχείου" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Παραλήπτης" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Μάσκα διακομιστή" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Όνομα διακομιστή" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "Το πακέτο" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "Δευτερόλεπτα" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "Το ψευδώνυμο του ατόμου που έχει προσκληθεί" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Μάσκα ban" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "Ποιος έθεσε το ban" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Ώρα ban" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "Αδυναμία ανάγνωσης του αρχείου ήχου:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "Ο απομακρυσμένος διακομιστής έκλεισε το socket" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "Άρνηση σύνδεσης" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "Δεν υπάρχει διαδρομή προς το διακομιστή" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Λήξη χρόνου σύνδεσης" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "Αδυναμία παραχώρησης αυτής της διεύθυνσης" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "Κλείσιμο της σύνδεσης από το ταίρι" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "Ascension Island" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Ανδόρα" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Ηνωμένα Αραβικά Εμιράτα" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Αφγανιστάν" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Αντίγκουα και Μπαρμπούντα" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Αγκίλα" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Αλβανία" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Αρμενία" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Ολλανδικές Αντίλλες" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Αγκόλα" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Ανταρκτική" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Αργεντινή" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "Αντίστροφο DNS" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Αμερικάνικη Σαμόα" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "Περιοχή Ασίας-Ειρηνικού" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Αυστρία" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "Πεδίο ΝΑΤΟ" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Αυστραλία" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Αρούμπα" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "Νησιά Αλαντ" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Αζερμπαιζάν" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Βοσνία και Ερζεγοβίνη" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Νησιά Μπαρμπάντος" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Μπαγκλαντές" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Βέλγιο" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Μπουρκίνα Φάσο" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Βουλγαρία" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Μπαχραίν" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Μπουρουντί" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "Επιχειρήσεις" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Μπενίν" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Νησιά Βερμούδων" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Μπρούνει Νταρουσαλλέμ" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Βολιβία" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Βραζιλία" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Νησιά Μπαχάμες" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Μουτάν" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Νησί Μουβέτ" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Μποτσουάνα" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Λευκορωσία" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Μπελίζ" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Καναδάς" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "Καταλανικά" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Νησιά Κοκος" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "Λαϊκή Δημοκρατία του Κονγκό" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "Δημοκρατία της Κεντρικής Αφρικής" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Κονγκο" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "Ελβετία" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "Ακτή Ελεφαντοστού" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Νησιά Κουκ" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Χιλή" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Καμερούν" + +#: src/common/util.c:738 +msgid "China" +msgstr "Λαϊκή Δημοκρατία της Κίνας" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Κολομβία" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Εμπορικό Internic" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Κόστα Ρίκα" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "Σερβία και Μαυροβούνιο" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Κούβα" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Ακρωτήριο Verde" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Νησί των Χριστουγέννων" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Κύπρος" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "Τσέχικη Δημοκρατία" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "Ανατολική Γερμανία" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Γερμανία" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Τζιμπουτί" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Δανία" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Δομινικη" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "Δομινικανή Δημοκρατία" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Αλγερία" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Ισημερινός" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Εκπαιδευτικό Ίδρυμα (ΗΠΑ)" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Εσθονία" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Αίγυπτος" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Δυτική Σαχάρα" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Ερυθρέα" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "Ισπανία" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Αιθιοπία" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "Ευρωπαϊκή Ένωση" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Φινλανδία" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Νησιά Φίτζι" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Νησιά Φώκλαντ" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Μικρονησία" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Νησιά Φαρόε" + +#: src/common/util.c:770 +msgid "France" +msgstr "Γαλλία" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Γκαμπόν" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Μεγάλη Βρετανία" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Γρανάδα" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Γεωργία" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Γαλλική Γουινέα" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "Βρετανικοί Νήσοι Καναλιού" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Γκάνα" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Γιβλαρτάρ" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Γροιλανδία" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Γκάμπια" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Γουινέα" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Κυβέρνηση" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Γουαδελούπη" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Ισημερινή Γουινέα" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Ελλάς" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "S. Georgia and S. Sandwich Isles." + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Γουατεμάλα" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Γκουάμ" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Γουινέα" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Γουιάνα" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Χονγκ Κονγκ" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Νησιά Χερντ και ΜακΝτόναλντ" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Ονδούρας" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Κροατία" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Αϊτή" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Ουγγαρία" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Ινδονησία" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Ιρλανδία" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Δρακονιανοί" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "Isle of Man" + +#: src/common/util.c:801 +msgid "India" +msgstr "Ινδία" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "Πληροφοριακό" + +#: src/common/util.c:803 +msgid "International" +msgstr "Διεθνές" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Βρετανική Περιοχή Δυτικού Ωκεανού" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Ιράκ" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "Ιράν" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Ισλανδία" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Ιταλία" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "Τζέρσεϋ" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Τζαμάικα" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Ιορδανία" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Ιαπωνία" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Κένυα" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Κουρτζεκισταν" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Καμπότζη" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Κιριμπάτι" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Κομόρες" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "St. Kitts and Nevis" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Βόρεια Κορέα" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Νότια Κορέα" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Κουβέιτ" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Νησιά Κέυμαν" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Καζακστάν" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Λάος" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Λίβανο" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Άγιος Λουκάς" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Λιχτενστάιν" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Σρι Λάνκα" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Λιβερία" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Λεσότο" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Λιθουανία" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Λουξεμβούργο" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Λεττονία" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Λιβύη" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Μαρόκο" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Μονακό" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Μολδαβία" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "Μαυροβούνιο" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "Ιατρικό (ΗΠΑ)" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Μαδαγασκάρη" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Νησιά Μάρσαλ" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Στρατιωτικό (ΗΠΑ)" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Βαρδάσκα" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Μαλί" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Μιαμάρ" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Μογγολία" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Μακάο" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "Φορητές Συσκευές" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Νήσοι Βόρειας Μαριάνας" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Μαρτινίκα" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Μαυριτανία" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Μονσεράτ" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Μάλτα" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Μαυριτία" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "Μουσεία" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Μαλβίδες" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Μαλάουι" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "Μεξικό" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Μαλαισία" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Μοζαμβίκη" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Ναμίμπια" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Νέα Καληδονία" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Νίγηρας" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Δίκτυο Internic" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Νήσοι Νόρφολκ" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Νιγηρία" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Νικαράγουα" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Ολλανδία" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Νορβηγία" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Νεπάλ" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Ναούρου" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Νιούε" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "Νέα Ζηλανδία" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Ομάν" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "Μη Κερδοσκοπικός Οργανισμός Internic" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Παναμάς" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Περού" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Γαλλική Πολυνησία" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Παπούα Νέα Γουινέα" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Φιλιππίνες" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Πακιστάν" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Πολωνία" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "Αγ. Πιερ και Μικελλόν" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Πιτκάιρν" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Πουέρτο Ρίκο" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "Επαγγέλματα" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "Παλαιστινιακά Εδάφη" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Πορτογαλία" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Παλάο" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Παραγουάη" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Κατάρ" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Επανένωση" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Ρουμανία" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "ARPAnet παλιάς σχολής" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "Σερβία" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Ρωσική Ομοσπονδία" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Ρουάντα" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Σαουδική Αραβία" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Νησιά Σολομώντα" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Σευχέλλες" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Σουδάν" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Σουηδία" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Σιγκαπούρη" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "Αγία Ελένη" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Σλοβενία" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Νήσοι Svalbard και Jan Mayen" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "Δημοκρατία της Σλοβακίας" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Σιέρα Λεόνε" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "Σαν Μαρίνο" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Σενεγάλη" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Σομαλία" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Σουρινάμ" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "Νότιο Σουδάν" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "Sao Tome και Principe" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Πρώην ΕΣΣΔ" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "Ελ Σαλβαδόρ" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Συρία" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Σουαζιλάνδη" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Νήσοι Turks και Caicos" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Τσαντ" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "Γαλλικές Νότιες Περιοχές" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Τόγκο" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Ταΐλάνδη" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Τατζικιστάν" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "Τοκελάου" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Ανατολικό Τιμούρ" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Τουρκμενιστάν" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Τυνησία" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Τόνγκα" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Τουρκία" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "Ταξίδι και Τουρισμός" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Τρινιδάδ και Τομπάγκο" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Τουβάλου" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Ταϊβάν" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Τανζανία" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Ουκρανία" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Ουγκάντα" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Ηνωμένο Βασίλειο" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "Ηνωμένες Πολιτείες της Αμερικής" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Ουρουγουάη" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Ουζμπεκιστάν" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Πόλη του Βατικανού" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "Άγιος Βικέντιος και Γρεναδίνη" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Βενεζουέλα" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "Βρετανικοί Παρθένοι Νήσοι" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "Αμερικάνικοι Παρθένοι Νήσοι" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Βιετνάμ" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Βανουάτου" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "Νήσοι Wallis και Futuna" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Σαμόα" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "Ψυχαγωγία Ενηλίκων" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Υεμένη" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Μα-γιοτ" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Γιουγκοσλαβία" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Νότιος Αφρική" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Ζάμπια" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Ζιμπάμπουε" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "Δεν ήταν δυνατή η σύνδεση στο δίαυλο μηνυμάτων" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "Η ολοκλήρωση της εντολής NameHasOwner απέτυχε" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "Η εκτέλεση της εντολής απέτυχε" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "απομακρυσμένη πρόσβαση" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "πρόσθετο για απομακρυσμένη πρόσβαση μέσω DBUS" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Δεν ήταν δυνατή η σύνδεση στο δίαυλο μηνυμάτων: %s\n" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Η λήψη του %s απέτυχε: %s\n" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Χάρτης χαρακτήρων" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "Ban" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Πρόσκληση" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "Δεν υπάρχει σύνδεση." + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "Πρέπει να επιλέξετε μερικά ban." + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "Τύπος" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Μάσκα" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "Από" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Ημερομηνία" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Μπορείτε να ανοίξετε τη λίστα ban μόνο μέσα από μια καρτέλα καναλιού." + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "Λίστα Ban (%s) - %s" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Αφαίρεση" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Απομάκρυνση υπολοίπων" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Ανανέωση" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "%d/%d χρήστες σε %d/%d κανάλια." + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Επιλέξτε όνομα αρχείου" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "_Σύνδεση σε κανάλι" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "_Αντιγραφή ονόματος καναλιού" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "Αν_τιγραφή κειμένου θέματος" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "Λίστα καναλιών (%s) - %s" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "_Αναζήτηση" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "_Λήψεις αρχείων" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "Αποθήκευση _λίστας..." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "Να εμφανιστεί μόνο:" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "κανάλια με" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "σε" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "χρήστες." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "Αναζήτηση σε:" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Όνομα καναλιού" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "Τύπος αναζήτησης:" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "Απλή αναζήτηση" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "Ταίριασμα μοτίβου (χαρακτήρες μπαλαντέρ)" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "Κανονική έκφραση" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Εύρεση:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Αποστολή αρχείου στο %s" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "Αυτό το αρχείο δεν μπορεί να συνεχιστεί." + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "Αδύνατη η πρόσβαση στο αρχείο: %s\n%s.\nΗ συνέχιση είναι αδύνατη." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "Το αρχείο στον κατάλογο ληφθέντων αρχείων είναι μεγαλύτερο από αυτό που προσφέρεται. Η συνέχιση είναι αδύνατη." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "Η συνέχιση λήψης του ίδιου αρχείου από δυο ανθρώπους είναι αδύνατη." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "Λήψεις και αποστολές αρχείων - %s" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Κατάσταση" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Αρχείο" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "Απομένει" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Και τα δύο" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "Αποστολές" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "Λήψεις αρχείων" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "Λεπτομέρειες" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "Αρχείο:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "Διεύθυνση:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Ακύρωση" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Αποδοχή" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Συνέχιση" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "Άνοιγμα Φακέλου..." + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "Λίστα συνομιλίας DCC - %s" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Λήψη" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Απεσταλμένο" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "Ώρα έναρξης" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "Προσθήκη" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Διαγραφή" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Άκυρο" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Αποθήκευση" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "Δεν είναι αυτόματη σύνδεση στους διακομιστές" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "Χρήση διαφορετικού καταλόγου ρυθμίσεων" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "Όχι αυτόματο φόρτωμα προσθέτων" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "Εμφάνιση καταλόγου ρυθμίσεων χρήστη" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "Άνοιγμα του URL irc://server:port/channel?key" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "Εκτέλεση εντολής:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "επίπεδο" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "Προβολή πληροφοριών έκδοσης" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "Αδυναμία ανοίγματος γραμματοσειράς:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "Η μνήμη εύρεσης είναι άδεια.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d bytes" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Ουρά αποστολής: %d bytes" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "Η εντολή Εισαγωγή στη Προσωρινή Μνήμη θα εισάγει τα περιεχόμενα του Data 1 στην εγγραφή όπου η ακολουθία πλήκτρων πατήθηκε στη τρέχουσα θέση του κέρσορα" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "Η εντολή Καθορισμός Προσωρινής Μνήμης θέτει την εγγραφή όπου η ακολουθία πλήκτρων πατήθηκε στα περιεχόμενα του Data 1" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "Η εντολή Περασμένη Εντολή θέτει την εγγραφή να περιέχει την τελευταία εντολή που εισήχθηκε - όμοιο σαν το πάνω βέλος στο κέλυφος" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "Η εντολή Επόμενη Εντολή θέτει την εγγραφή να περιέχει την επόμενη εντολή που εισήχθηκε - όμοιο σαν το κάτω βέλος στο κέλυφος" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "Αυτή η εντολή αλλάζει το κείμενο της εγγραφής να συμπληρώνει ένα μη πλήρες ψευδώνυμο ή εντολή. Αν το Data 1 είναι καθορισμένο τότε το διπλό-tab σε ένα κορδόνι (string) θα επιλέξει το τελευταίο nick και όχι το επόμενο" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "Αυτή η εντολή μετακινεί πάνω και κάτω μέσα στη λίστα των ψευδωνύμων. Αν το Data 1 είναι καθορισμένο τότε μετακινεί πάνω αλλιώς κάτω" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "Αυτή η εντολή ελέγχει εάν υπάρχει η τελευταία λέξη που γράφτηκε στη λίστα αντικαταστάσεων και την αντικαθιστά εάν βρει ταίρι" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "Αυτή η εντολή μετακινεί την επιλεγμένη καρτέλα μια θέση αριστερά" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "Αυτή η εντολή μετακινεί την επιλεγμένη καρτέλα μια θέση δεξιά" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "Αυτή η εντολή μετακινεί την τρέχουσα ομάδα καρτελών στα αριστερά" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "Αυτή η εντολή μετακινεί την τρέχουσα ομάδα καρτελών στα δεξιά" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "Προώθηση της γραμμής εισαγωγής στο ιστορικό αλλά όχι αποστολή στο διακομιστή" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "Σφάλμα κατά το φόρτωμα των ρυθμίσεων των πλήκτρων συντόμευσης" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "Συντομεύσεις πληκτρολογίου - %s" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "Δεν ήταν δυνατή η εγγραφή σε αυτό το αρχείο." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "Δεν ήταν δυνατή η ανάγνωση αυτού του αρχείου." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "Αυτή η μάσκα υπάρχει ήδη" + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Προσωπικό" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Ειδοποίηση" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "Αποαγνόηση" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "Εισάγετε μάσκα προς αγνόηση:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "Λίστα αγνοημένων - %s" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Στατιστικά αγνοημένων:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Κανάλι:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Προσωπικό:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Ειδοποίηση:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Πρόσκληση:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "Προσθήκη..." + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "Το όνομα του καναλιού είναι πολύ μικρό, προσπαθήσετε ξανά." + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "Η σύνδεση ολοκληρώθηκε - %s" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "Η σύνδεση στο %s ολοκληρώθηκε" + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "Τι θέλετε να κάνετε τώρα;" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "_Τίποτα, θα συνδεθώ σε ένα κανάλι αργότερα." + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "_Σύνδεση στο κανάλι:" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Εάν γνωρίζετε το όνομα του καναλιού που θέλετε να συνδεθείτε, εισάγετε το εδώ." + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "" + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "_Να εμφανίζεται πάντα αυτό το πλαίσιο διαλόγου μετά τη σύνδεση." + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "Διάλογος με" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Το θέμα για το %s είναι: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "Δεν έχει οριστεί θέμα" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "Αυτός ο διακομιστής έχει ακόμα %d κανάλια ή συνομιλίες ανοιχτά. Να κλείσουν όλα;" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "Έξοδος από το HexChat;" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "Μην με ρωτήσεις την επόμενη φορά." + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "" + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "Είστε σίγουρος ότι θέλετε να βγείτε;" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "Μερικές μεταφορές αρχίων είναι ακόμα ενεργές." + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "Εισαγωγή ιδιότητας ή χρωματικού κώδικα" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>Έντονα</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>Υπογραμμισμένο</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "<i>Πλάγια γραφή</i>" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "Κανονικό" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "Χρώματα 0-7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "Χρώματα 8-15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "_Ρυθμίσεις" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "_Κλείσιμο" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "Το όριο χρηστών πρέπει να είναι αριθμός!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "Όχι εξωτερικά μηνύματα" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "Προστασία θέματος" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "Μόνο επί πρόσκληση" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "Ελεγχόμενο" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "Λίστα Ban" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Λέξη κλειδί" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "Όριο χρηστών" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Εισάγετε νέο ψευδώνυμο:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "" + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "" + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "" + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Άγνωστος διακομιστής" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "Άγνωστος λογαριασμός" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Άγνωστο" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Αληθινό όνομα:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "Χρήστης:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "Λογαριασμός:" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "Χώρα:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "Διακομιστής:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "πριν από %u λεπτά" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "Τελευταίο μήνυμα:" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "Μήνυμα απουσίας:" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "Άνοιγμα συνδέσμου στον περιηγητή" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "Αντιγραφή επιλεγμένου συνδέσμου" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Σύνδεση στο κανάλι" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "Εγκατάλειψη καναλιού" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "Επανασύνδεση στο κανάλι" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "_Αυτόματη σύνδεση" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "Μενού χρήστη - %s" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "Απαντήσεις CTCP - Ειδικοί κώδικες:\n\n%d = δεδομένα (ολόκληρο το ctcp)\n%e = όνομα τρέχοντος δικτύου\n%m = πληροφορίες συστήματος\n%s = ψευδώνυμο αυτού που έστειλε το ctcp\n%t = ώρα/ημερομηνία\n%2 = λέξη 2\n%3 = λέξη 3\n&2 = λέξη 2 μέχρι το τέλος της γραμμής\n&3 = λέξη 3 μέχρι το τέλος της γραμμής\n\n" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "Εντολές καθορισμένες από το χρήστη - %s" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "Αντικατάσταση - %s" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "Αντικατάσταση με" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "Χειριστές διευθύνσεων - %s" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "Κουμπιά λίστας χρηστών - %s" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "Κουμπιά διαλόγου - %s" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "Απαντήσεις CTCP - %s" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "He_xChat" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "_Νέο" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "_Έξοδος" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "_Προβολή" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "Λίστα _χρήστη" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "Κουμπιά _λειτουργιών " + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "_Καρτέλες" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "Δεντ_ροδιάταξη" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "Μ_ετρητές δικτύου" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Κλειστό" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "Γράφημα" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "_Πλήρης οθόνη" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "Διακομι_στής" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "_Αποσύνδεση" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "_Επανασύνδεση" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "Μενού _χρήστη" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "Ρυθμίσ_εις" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "Προτιμήσεις" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "_Παράθυρα" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "Επαναφορά διαχωριστικής γραμμής" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "_Αντιγραφή επιλογής" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "Καθα_ρισμός κειμένου" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "Αναζήτηση" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "Εύρεση Επομένου" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "Εύρεση Προηγούμενου" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "_Βοήθεια" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "Περι_εχόμενα" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "_Περί" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Όνομα" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Τελευταία εμφάνιση" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "Αποσυνδεδεμένος" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Ποτέ" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "πριν από %d λεπτά" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "Μία ώρα πριν" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "%d ώρες πριν" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "Συνδεδεμένος" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "Εισάγετε ψευδώνυμο για προσθήκη:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "Ειδοποίηση σε αυτά τα δίκτυα:" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "Είναι αποδεκτή μια λίστα δικτύων χωρισμένη με κόμματα." + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "Λίστα φίλων - %s" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "Άνοιγμα διαλόγου" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "Προσωπικό μήνυμα από: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "Συνδεδεμένο σε %u δίκτυα και %u κανάλια - %s" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "Μήνυμα σε κανάλι" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "Προσωπικό μήνυμα" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "Επισημασμένο μήνυμα" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "%u επισημασμένα μηνύματα, τελευταίο από: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "Προσωπικό μήνυμα από: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "%u προσωπικά μηνύματα, το τελευταίο από: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "Προσφορά αρχείου από: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "%u προσφορές αρχείων, τελευταία από: %s (%s) - %s" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Έκδοση" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Περιγραφή" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Επιλογή ενός πρόσθετου ή δέσμης ενεργειών για φόρτωμα" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "Πρόσθετα και δέσμες ενεργειών - %s" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "_Άνοιγμα..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "Αποθήκευση ως..." + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Νέο δίκτυο" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Επιβεβαίωση διαγραφής του δικτύου \"%s\" και των διακομιστών του;" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "Το όνομα χρήστη δεν μπορεί να είναι κενό." + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "Πρέπει να έχετε δυο μοναδικά ψευρώνυμα χρήστη." + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "Επεξεργασία %s - %s" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "Διακομιστές" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "Εντολές σύνδεσης" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "%n=Ψευδώνυμο χρήστη\n%p=Κωδικός\n%r=Αληθινό όνομα\n%u=Όνομα χρήστη" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "Κλειδί (Κωδικός)" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "_Επεξεργασία" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "Σύνδεση μόνο στον επιλεγμένο διακομιστή" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Όχι προσπάθεια σε όλους τους διακομιστές όταν αποτύχει η σύνδεση." + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "Αυτόματη σύνδεση σε αυτό το δίκτυο" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "Χρήση SSL για όλους τους διακομιστές σε αυτό το δίκτυο" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "Αποδοχή μη έγκυρων πιστοποιητικών SSL" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "Χρήση γενικών πληροφοριών χρήστη" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "Ψευδώ_νυμο:" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "Δεύτερη επιλογή:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "Πρ_αγματικό όνομα:" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "Όν_ομα χρήστη:" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "Μέθοδος εισόδου:" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Συνθηματικό διακομιστή:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "Σετ χαρακτήρων:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "Λίστα δικτύων - %s" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "Πληροφορίες χρήστη" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "Τρίτη επιλογή:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Δίκτυα" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "Να μην εμφανίζεται η λίστα δικτύων στην εκκίνηση" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "_Επεξεργασία..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "Ταξινόμη_ση" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "Σύν_δεση" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "Αφρικάνς" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Αλβανία" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "Αστουριανά" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Αζερμπαιζάν" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "Βασκικά" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Λευκορωσία" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Βουλγαρία" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "Κινεζικά (Απλοποιημένα)" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "Κινεζικά (Παραδοσιακά)" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "Τσεχικά" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "Δανέζικα " + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "Ολλανδικά" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "Αγγλικά (Βρετανίας)" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "Αγγλικά" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Εσθονία" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "Φινλανδικά" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "Γαλλικά" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "Γαλικιακά" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "Γερμανικά" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "Ελληνικά" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "Ινδία" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "Ουγγρικά" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "Ινδονησιακά" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "Ιταλικά" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "Ιαπωνικά" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "Κορεάτικα" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "Λεττονικά" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "Λιθουανικά" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "Βαρτασκικά" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Μαλαισία" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "Πολωνικά" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "Πορτογαλικά" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "Πορτογαλικά (Βραζιλίας)" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "Ρωσικά" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "Σερβικά" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "Σλοβάκικα" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "Σλοβενικά" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "Ισπανικά" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "Σουηδικά" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Ταΐλάνδη" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "Τουρκικά" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "Ουκρανικά" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Βιετνάμ" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Γενικές" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "Γλώσσα:" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "Κύρια γραμματοσειρά:" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Γραμματοσειρά:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "Πεδίο Κειμένου" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "Χρωματισμένα ψευδώνυμα" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "Δίνει στο ψευδώνυμο του καθένα διαφορετικό χρώμα" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "Στοίχιση ψευδωνύμων" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "Στοιχίζει δεξιά τα ψευδώνυμα" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "Χρήση διαχωριστικής γραμμής" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "Εισάγει μια κόκκινη γραμμή μετά το κείμενο που έχει διαβαστεί." + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Εικόνα παρασκηνίου:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "Ρυθμίσεις διαφάνειας" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "" + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "" + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "Αυτός που μίλησε τελευταίος" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "Πεδίο Εισαγωγής" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "Έλεγχος ορθογραφίας" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "Λεξικά προς χρήση:" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "Συμπλήρωση ψευδωνύμων" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "Επίθεμα συμπλήρωσης ψευδωνύμων:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "Η αυτόματη συμπλήρωση ταξινομείται κατά:" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "ψευδώνυμα." + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "Αταξινόμητο" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Κορυφή" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Βάση" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Κρυφό" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "Λίστα χρηστών" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "Προβολή ονομάτων διακομιστών στη λίστα χρηστών" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "Χρήση γραμματοσειράς και χρωμάτων του πλαισίου κειμένου" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "Χρήση χρωμάτων ψευδωνύμων στην λίστα χρηστών" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "Ταξινόμηση λίστας χρηστών κατά:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "Σε κανάλια μικρότερα από:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "Ενέργεια κατά το διπλό κλικ" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Παράθυρα" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Καρτέλες" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "Πάντα" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "Μόνο οι καρτέλες που ζητήθηκαν" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "Αυτόματο" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "Άνοιγμα καρτέλας για τα μηνύματα διακομιστή" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "Άνοιγμα καρτέλας για τα νέα προσωπικά μηνύματα" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "Ταξινόμηση καρτελών με αλφαβητική σειρά" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "Μικρότερο κείμενο" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "Εστίαση νέων καρτελών:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "Συντόμευση καρτελών σε:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "χαρακτήρες." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "Καρτέλες ή παράθυρα" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "Άνοιγμα καναλιών σε:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "Άνοιγμα διαλόγων σε:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "Άνοιγμα εργαλείων σε:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Καρτέλες ή παράθυρα για τα DCC, Ignore, Notify κλπ.;" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "Μηνύματα" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "Αρχεία και Κατάλογοι" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "Αυτόματη αποδοχή αρχείων:" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Αποθήκευση αρχείων στο:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "Μετακίνηση ολοκληρωμένων αρχείων στο:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "Αποθήκευση ψευδωνύμων στα ονόματα αρχείων" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "Αυτόματο άνοιγμα παραθύρων DCC" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "Παράθυρο αποστολής" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "Παράθυρο λήψης" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "Παράθυρο συζήτησης" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "Αποστολή ενός αρχείου:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "Μέγιστη ταχύτητα για μια μεταφορά" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "Λήψη ενός αρχείου:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "Όλες οι αποστολές αρχείων μαζί:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "Μέγιστη ταχύτητα για όλα τα αρχεία" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "Όλες οι λήψεις αρχείων συνδυασμένες:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "Συναγερμοί" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "Ενεργοποίηση εικονιδίου συστήματος" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "" + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "Επισημασμένα μηνύματα" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "Προκαθορισμένα μηνύματα" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "Έξοδος:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "Εγκατάλειψη καναλιού:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "Απουσία:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "Απουσία" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Εμφάνιση του μηνύματος απουσίας μια φορά" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "Αυτόματη απενεργοποίηση της απουσίας" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "" + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "Διάφορα" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "Εμφάνιση των καταστάσεων (MODE) σε ωμή μορφή" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "Απόκρυψη μηνυμάτων εισόδου/εξόδου" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "Πραγματικό όνομα:" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "Εναλλακτικές γραμματοσειρές:" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "Χρήση ώρας διακομιστή εάν υποστηρίζεται" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "Αυτόματη επανασύνδεση στους διακομιστές μετά την αποσύνδεση" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "Καθυστέρηση στην αυτόματη επανασύνδεση:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Καταγραφή" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "Συγκράτηση γραμμών:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "Όνομα αρχείων καταγραφής:" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Διακομιστής %c=Κανάλι %n=Δίκτυο." + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "Χρονοσήμανση των αρχείων καταγραφής" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "Μορφή καταγραφόμενης ώρας:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "Σύνδεσμος" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(Απενεργοποιημένο)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "Η διεύθυνσή σας" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "Διεύθυνση για τη σύνδεση:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "Χρήσιμο μόνο για υπολογιστές με πολλαπλές διευθύνσεις." + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "Μεταφορές Αρχείων" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "Λήψη της διεύθυνσης IP από τον διακομιστή IRC" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "Ερώτηση στον διακομιστή IRC για την πραγματική σας διεύθυνση. Χρησιμοποιείστε το όταν έχετε διεύθυνση IP της μορφής 192.168.*.* ή 10.*.*.* !" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "DCC διεύθυνση IP:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "Απαίτηση τής χρήσης αυτής της διευθύνσης κατα την προσφορά αρχείων." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "!Αφήστε τις θύρες στο 0 για πλήρες εύρος." + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "Διακομιστής Proxy" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "Όνομα διακομιστή:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Θύρα:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Τύπος:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "Χρήση διακομιστή proxy για:" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "Πιστοποίηση proxy" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "Όνομα χρήστη:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "Επιλογή ενός αρχείου εικόνας" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "Επιλογή φακέλου αρχείων" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Επιλογή γραμματοσειράς" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Περιήγηση..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "Άνοιγμα φακέλου δεδομένων" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Επιλογή χρώματος" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "Χρώματα κειμένου" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "χρώματα mIRC:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "Τοπικά χρώματα:" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Πλάνο:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Φόντο:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "Επιλεγμένο Κείμενο" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "Χρώματα διεπαφής" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "Νέα δεδομένα:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "Γραμμή επισήμανσης:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "Νέο μήνυμα:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "Χρήστης απουσίας:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "Επισήμανση:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Γεγονός" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "Αρχείο ήχου" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "Επιλογή αρχείου ήχου" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "Αρχείο ήχου:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "_Περιήγηση..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "_Αναπαραγωγή" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Διεπαφή" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "Εμφάνιση" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Πλαίσιο εισόδου" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Λίστα χρηστών" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Χρώματα" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Συνομιλία" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "Ήχοι" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "Για προχωρημένους" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Ρυθμίσεις δικτύου" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Μεταφορές αρχείων" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Κατηγορίες" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "Δε μπορείτε να τοποθετήσετε το δέντρο πάνω ή κάτω!\nΠαρακαλώ αλλάξτε πρώτα σε διάταξη <b>καρτέλες</b> στο μενού <b>προβολή</b>." + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "" + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Άλλαξαν ορισμένες ρυθμίσεις που απαιτούν επανεκκίνηση για να ενεργοποιηθούν." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*ΠΡΟΕΙΔΟΠΟΙΗΣΗ*\nΗ αυτόματη αποδοχή DCC στο αρχικό κατάλογό σας\nείναι επικίνδυνη και εκμεταλλεύσιμη. Πχ:\nΚάποιος μπορεί να σας στείλει ένα .bash_profile" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "Προτιμήσεις - %s" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "Περισσότερα..." + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "Προσθήκη του «%s» στο Λεξικό" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "Παράβλεψη Όλων" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "Προτάσεις Ορθογραφίας" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "Σφάλμα κατά την ανάλυση του αλφαριθμητικού" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Αυτό το σήμα παίρνει μόνο %d επιλογές, $%d δεν είναι έγκυρο" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "Τυπώνει αρχεία κειμένου" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ Αριθμός" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Επεξεργασία γεγονότων" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "Άνοιγμα από..." + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Δοκιμή όλων" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "Εντάξει" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "Καταγραφέας διευθύνσεων - %s" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Καθαρισμός λίστας" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Αντιγραφή επιλεγμένου συνδέσμου" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Αντιγραφή" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Αποθήκευση λίστας σε αρχείο" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d ops, %d σύνολο" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "Άνοιγμα ενός URL τύπου irc://server:port/channel" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "" diff --git a/hexchat/po/en_GB.po b/hexchat/po/en_GB.po new file mode 100644 index 0000000..99775c0 --- /dev/null +++ b/hexchat/po/en_GB.po @@ -0,0 +1,6269 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Alfred Daw <sacarasc@gmail.com>, 2012-2013 +# Sir_Burpalot <doctor.z01db3rg@gmail.com>, 2014,2016-2018 +# Gareth Owen <gowen72@yahoo.com>, 2004 +# Ivan Srbulov <Srbulov.Ivan@gmail.com>, 2013 +# Richard Hitt <rbh00@netcom.com>, 2013 +# Alfred Daw <sacarasc@gmail.com>, 2012 +# TheEndermen <theendermenofdoom@gmail.com>, 2012 +# TheEndermen <theendermenofdoom@gmail.com>, 2012 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-16 15:03+0000\n" +"Last-Translator: Sir_Burpalot <doctor.z01db3rg@gmail.com>\n" +"Language-Team: English (United Kingdom) (http://www.transifex.com/hexchat/hexchat/language/en_GB/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: en_GB\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "HexChat" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "IRC Client" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "HexChat is an easy to use yet extensible IRC Client. It allows you to securely join multiple networks and talk to users privately or in channels using a customisable interface. You can even transfer files." + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, logging, custom themes, and Python/Perl scripts." + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "Main Chat Window" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "Chat with other people online" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "IM;Chat;" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "hexchat" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "Open Safe Mode" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "HexChat Theme Manager" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "I'm busy" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Leaving" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "OFF" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "ON" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "{unset}" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Network" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<none>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Channel" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Waiting" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Active" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Failed" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Done" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Connect" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Aborted" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "Cannot access %s\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Error" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s is offering \"%s\". Do you wish to accept?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "No active DCCs\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "_Open Dialogue Window" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "_Send a File" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "_User Info (WhoIs)" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "_Add to Friends List" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "_Ignore" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "O_perator Actions" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Give Ops" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Take Ops" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "Give Voice" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "Take Voice" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Kick/Ban" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Kick" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "Ban" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "KickBan" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Leave Channel" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Join Channel..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "Enter Channel to Join:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Server Links" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Ping Server" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Hide Version" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Op" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "bye" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Enter reason to kick %s:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "Send File" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "Dialogue" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Send" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Chat" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Clear" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "You do not have write access to %s. Nothing from this session can be saved." + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* Running IRC as root is stupid! You should\n create a User Account and use that to login.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "YES " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "NO " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "You are being CTCP flooded from %s, ignoring %s\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.⏎\n" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "Resolved to %s" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "Not found" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "Resolved to:" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "Looking up %s..." + +#: src/common/inbound.c:1992 +msgid "Could not create SCRAM session with digest %s" +msgstr "Could not create SCRAM session with digest %s" + +#: src/common/inbound.c:2024 +msgid "SASL SCRAM authentication failed: %s" +msgstr "SASL SCRAM authentication failed: %s" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s online\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s offline\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "No channel joined. Try /join #<channel>\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Not connected. Try /server <host> [<port>]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "Server %s already exists on network %s.\n" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "Added server %s to network %s.\n" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Already marked away: %s\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "Already marked back.\n" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "I need /bin/sh to run!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "Commands Available:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "User defined commands:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "Plugin defined commands:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Type /HELP <command> for more information, or /HELP -l" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Unknown arg '%s' ignored." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "Quiet is not supported by this server." + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "No such plugin found.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "That plugin is refusing to unload.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <name> <action>, adds a button under the user-list" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new server to the network list" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <cmd>, sends a command to all channels you're in" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "ALLCHANL <cmd>, sends a command to all channels on the current server" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <cmd>, sends a command to all servers you're in" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "AWAY [<reason>], sets you away (use /BACK to unset)" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "BACK, sets you back (not away)" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <mask> [<bantype>], bans everyone matching the mask from the current channel. If they are already on the channel this doesn't kick them (needs chanop)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <variable> [<value>]" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "CHARSET [<encoding>], get or set the encoding used for the current connection" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command history" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "CLOSE [-m], Closes the current tab, closing the window if this is the only open tab, or with the \"-m\" flag, closes all queries." + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <nick> <message>, send the CTCP message to nick, common messages are VERSION and USERINFO" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "CYCLE [<channel>], parts the current or given channel and immediately rejoins" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <nick> - accept an offered file\nDCC SEND [-maxcps=#] <nick> [file] - send a file to someone\nDCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\nDCC LIST - show DCC list\nDCC CHAT <nick> - offer DCC CHAT to someone\nDCC PCHAT <nick> - offer DCC CHAT using passive mode\nDCC CLOSE <type> <nick> <file> example:\n /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <nick>, removes chanhalf-op status from the nick on the current channel (needs chanop)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <name>, deletes a button from under the user-list" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <nick>, removes chanop status from the nick on the current channel (needs chanop)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <nick>, removes voice status from the nick on the current channel (needs chanop)" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, Disconnects from server" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "DNS <nick|host|ip>, Resolves an IP or hostname" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "DOAT <channel,list,/network> <command>" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <text>, Prints text locally" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <command>, runs the command. If -o flag is used then output is sent to current channel, else is printed to current text box" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, sends the process SIGCONT" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9], kills a running exec in the current session. If -9 is given the process is SIGKILL'ed" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, sends the process SIGSTOP" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, sends data to the processes stdin" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "EXPORTCONF, exports HexChat settings" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, flushes the current server's send queue" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <host> [<port>], proxies through a host, port defaults to 23" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <nick> [password], Kills a ghosted nickname" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <password>, identifies yourself to nickserv" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <mask> <types..> <options..>\n mask - host mask to ignore, eg: *!*@*.aol.com\n types - types of data to ignore, one or all of:\n PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n options - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <nick> [<channel>], invites someone to a channel, by default the current channel (needs chanop)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <channel>, joins the channel" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "KICKBAN <nick> [reason], bans then kicks the nick from the current channel (needs chanop)" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, forces a new lag check" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n Use -h to highlight the found string(s)\n Use -m to match case\n Use -r when string is a Regular Expression\n Use -- (double hyphen) to end options when searching for, say, the string '-r'" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <file>, loads a plugin or script" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <action>, sends the action to the current channel (actions are written in the 3rd person, like /me jumps)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "MHOP, Mass hop's all users in the current channel (needs chanop)" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, Mass kicks everyone except you in the current channel (needs chanop)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, Mass op's all users in the current channel (needs chanop)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "MSG <nick> <message>, sends a private message, message \".\" to send to last nick or prefix with \"=\" for dcc chat" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "NAMES [channel], Lists the nicks on the channel" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <nick> <message>, Sends a CTCP notice" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <hostname> [<port>]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <nickname>, sets your nick" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "NOTICE <nick/channel> <message>, sends a notice" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or adds someone to it" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <nick>, gives chanop status to the nick (needs chanop)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<channel>] [<reason>], leaves the channel, by default the current one" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <nick | channel>, CTCP pings nick or channel" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone and optionally sends a message" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current channel if supported by the server." + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<reason>], disconnects from the current server" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <text>, sends the text in raw form to the server" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /RECONNECT to reconnect to the current server or with /RECONNECT ALL to reconnect to all the open servers" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT to reconnect to the current server or with /RECONNECT ALL to reconnect to all the open servers" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "RECV <text>, send raw data to HexChat, as if it was received from the IRC server" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "RELOAD <name>, reloads a plugin or script" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <text>, sends the text to the object in the current window" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <nick> [<file>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <host> <port> <channel>, connects and joins a channel" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the default port is 6667 for normal connections, and 6697 for ssl connections" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <host> [<port>] [<password>], connects to a server, the default port is 6667" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "SETTEXT <new text>, replace the text in the input box" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<topic>], sets the topic if one is given, else shows the current topic" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "\nTRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\nTRAY -f <filename> Set tray to a fixed icon.\nTRAY -i <number> Blink tray with an internal icon.\nTRAY -t <text> Set the tray tooltip.\nTRAY -b <title> <text> Set the tray balloon." + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <mask> [<mask>...], unbans the specified masks." + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <mask> [QUIET]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <name>, unloads a plugin or script" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the server." + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, opens a URL in your browser" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <nick>, gives voice status to someone (needs chanop)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <message>, writes the message to all channels" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <message>, sends the message to all chanops on the current channel" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "User Command for: %s\n" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "Usage: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nNo help available on that command.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "No such command.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "Bad arguments for user command.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "Too many recursive user commands, aborting." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "Unknown Command %s. Try /help\n" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "No hexchat_plugin_init symbol; is this really a HexChat plugin?" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "*\tServicing ident request from %s as %s" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "*\tError starting identd server: %s" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "IDENTD <port> <username>" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "Timer %d deleted.\n" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "No such ref number found.\n" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "No timers installed.\n" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr " Ref# Seconds Repeat Command \n" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "%5d %8.1f %7d %s\n" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Are you sure this is a SSL capable server and port?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "Cannot resolve hostname %s\nCheck your IP Settings!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "Proxy traversal failed.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Cycling to next server in %s...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "Warning: \"%s\" character set is unknown. No conversion will be applied for network %s." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "%C18*%O$t%C18$1%O added to notify list." + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "%C29*%O$tCapabilities acknowledged: %C29$2%O" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "%C29*%O$tCapabilities removed: %C29$2%O" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "%C23*%O$tCapabilities supported: %C29$2%O" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "%C23*%O$tCapabilities requested: %C29$1%O" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "%C24*%O$t%C28$1%O is now known as %C18$2%O" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O sets ban on %C18$2%O" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "%C22*%O$tChannel %C22$1%O created on %C24$2%O" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O removes voice from %C18$2%O" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%UChannel Users Topic" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "%C22*%O$tChannel %C22$1%O modes: %C24$2" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "%C22*%O$t%C26$1%O removes channel keyword" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "%C22*%O$t%C26$1%O removes user limit" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O removes ban on %C18$2%O" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "%C22*%O$tChannel %C22$1%O url: %C24$2" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O gives voice to %C18$2%O" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "%C23*%O$tConnected. Now logging in." + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "%C20*%O$tConnection failed (%C20$1%O)" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "%C23*%O$tDCC CHAT to %C18$1%O aborted." + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "%C24*%O$tOffering DCC CHAT to %C18$1%O" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "%C24*%O$tAlready offering CHAT to %C18$1%O" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "%C16,17 Type To/From Status Size Pos File" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "%C20*%O$tReceived a malformed DCC request from %C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "%C23*%O$tNo such DCC offer." + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' instead." + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "%C24*%O$t%C18$1%O deleted from notify list." + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "%C20*%O$tDisconnected (%C20$1%O)" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "%O%C18$1%O added to ignore list." + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "%OIgnore on %C18$1%O changed." + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "%C16,17" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "%O%C18$1%O removed from ignore list." + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "%OIgnore list is empty." + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "%C23*$t$1 ($3%C23) has joined" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "%C29*%O$t%C29MOTD Skipped%O" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "%C23*%O$t%C28$1%C is errorneous. Retrying with %C18$2%O..." + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "%C20*%O$tNo such DCC." + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "%C23*%O$tNo process is currently running" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "%C23*%O$tNotify: %C18$1%C is back" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tNotify list is empty." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "%C16,17 Notify List" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "%C23*%O$t%C23$1%O users in notify list." + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "%C24*$t$1 ($2%C24) has left" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "%C24*$t$1 ($2%C24) has left ($4)" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "%C24*%O$tA process is already running" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "%C24*$t$1 has quit ($2)" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "%O-%C29$1/Wallops%O-$t$2" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "%C24*%O$tLooking up IP number for %C18$1%O..." + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "%C29*%O$tConnected." + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "%C29*%O$tLooking up %C29$1%O" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "%C23*%O$tStopped previous connection attempt (%C24$1%O)" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "%C22*%O$tTopic for %C22$1%C is: $2%O" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "%C22*%O$t%C26$1%C has changed the topic to: $2%O" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C20*%O$tUnknown host. Maybe you misspelt it?" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "%C22*%O$tUsers on %C22$1%C: %C24$2%O" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "%C19*%O$tNow talking on %C22$2%O" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "%C19*%O$tYou have left channel %C22$3%O" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "%C20*%O$tYou are now known as %C18$2%O" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "Loaded log from" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** ENDING LOGGING AT %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** BEGIN LOGGING AT %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "* Can't open log file(s) for writing. Check the\npermissions on %s" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "Left message" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "Right message" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "IP address" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Username" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "The nick of the joining person" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "The channel being joined" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "The host of the person" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "The account of the person" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Nickname" + +#: src/common/text.c:980 +msgid "The action" +msgstr "The action" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "Mode char" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "Identified text" + +#: src/common/text.c:987 +msgid "The text" +msgstr "The text" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "The message" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Server Name" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "Acknowledged Capabilities" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "Removed Capabilities" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "Server Capabilities" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "Requested Capabilities" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Old nickname" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "New nickname" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "Nick of person who changed the topic" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Topic" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "The nickname of the kicker" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "The person being kicked" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "The channel" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "The reason" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "The nick of the person leaving" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "The time" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "The creator" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Nick" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Reason" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Host" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "Who it's from" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "The time in x.x format (see below)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "The Channel it's going to" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "The sound" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "The nick of the person" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "The CTCP event" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "The nick of the person who set the key" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "The key" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "The nick of the person who set the limit" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "The limit" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "The nick of the person who did the op'ing" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "The nick of the person who has been op'ed" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "The nick of the person who has been halfop'ed" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "The nick of the person who did the halfop'ing" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "The nick of the person who did the voice'ing" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "The nick of the person who has been voice'ed" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "The nick of the person who did the banning" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "The ban mask" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "The nick of the person who did the quieting" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "The quiet mask" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "The nick who removed the key" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "The nick who removed the limit" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "The nick of the person who did the deop'ing" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "The nick of the person who has been deop'ed" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "The nick of the person who did the dehalfop'ing" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "The nick of the person who has been dehalfop'ed" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "The nick of the person who did the devoice'ing" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "The nick of the person who has been devoice'ed" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "The nick of the person who did the unban'ing" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "The nick of the person who did the unquiet'ing" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "The nick of the person who did the exempt" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "The exempt mask" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "The nick of the person removed the exempt" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "The nick of the person who did the invite" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "The invite mask" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "The nick of the person removed the invite" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "The nick of the person setting the mode" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "The mode's sign (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "The mode letter" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "The channel it's being set on" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Full name" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Channel Membership/\"is an IRC operator\"" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Server Information" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Idle time" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Signon time" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Away reason" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Message" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Account" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "Real user@host" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "Real IP" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Channel Name" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "Mechanism" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "Raw Numeric or Identifier" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Text" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Nick of person who invited you" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Users" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "Nickname in use" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Nick being tried" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Port" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "Modes string" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "DCC Type" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Filename" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Destination filename" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "Pathname" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Position" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Size" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "DCC String" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "Away Reason" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "Number of notify items" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Old Filename" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "New Filename" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Receiver" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Hostmask" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Hostname" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "The Packet" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "Seconds" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "Nick of person who have been invited" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Banmask" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "Who set the ban" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Ban time" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "Cannot read sound file:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "Remote host closed socket" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "Connection refused" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "No route to host" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Connection timed out" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "Cannot assign that address" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "Connection reset by peer" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "Ascension Island" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "United Arab Emirates" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "Aviation-Related Fields" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Afghanistan" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Antigua and Barbuda" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Albania" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Armenia" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Netherlands Antilles" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Antarctica" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Argentina" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "Reverse DNS" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "American Samoa" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "Asia-Pacific Region" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Austria" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Australia" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "Aland Islands" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Azerbaijan" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Bosnia and Herzegovina" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Bangladesh" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Belgium" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Bulgaria" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Bahrain" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "Businesses" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Brunei Darussalam" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Bolivia" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Brazil" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Bahamas" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Bhutan" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Bouvet Island" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Belarus" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Canada" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "Catalan" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Cocos Islands" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "Democratic Republic of Congo" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "Central African Republic" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Congo" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "Switzerland" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "Cote d'Ivoire" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Cook Islands" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Chile" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Cameroon" + +#: src/common/util.c:738 +msgid "China" +msgstr "China" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Colombia" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Internic Commercial" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "Cooperatives" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "Serbia and Montenegro" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Cuba" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Cape Verde" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Christmas Island" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Cyprus" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "Czech Republic" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "East Germany" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Germany" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Djibouti" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Denmark" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Dominica" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "Dominican Republic" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Algeria" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Ecuador" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Educational Institution" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Estonia" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Egypt" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Western Sahara" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "Spain" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Ethiopia" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "European Union" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Finland" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Fiji" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Falkland Islands" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Micronesia" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Faroe Islands" + +#: src/common/util.c:770 +msgid "France" +msgstr "France" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Great Britain" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Georgia" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "French Guiana" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "British Channel Isles" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Ghana" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Greenland" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Government" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Guadeloupe" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Equatorial Guinea" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Greece" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "S. Georgia and S. Sandwich Isles" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Guinea-Bissau" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Guyana" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Heard and McDonald Islands" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Croatia" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Hungary" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Indonesia" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Ireland" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Israel" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "Isle of Man" + +#: src/common/util.c:801 +msgid "India" +msgstr "India" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "Informational" + +#: src/common/util.c:803 +msgid "International" +msgstr "International" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "British Indian Ocean Territory" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Iraq" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "Iran" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Iceland" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Italy" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Jamaica" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Jordan" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "Company Jobs" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Japan" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Kenya" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Kyrgyzstan" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Cambodia" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Comoros" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "St. Kitts and Nevis" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "North Korea" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "South Korea" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Kuwait" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Cayman Islands" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Kazakhstan" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Lebanon" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Saint Lucia" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Liberia" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Lithuania" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Luxembourg" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Latvia" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Libya" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Morocco" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Monaco" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Moldova" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "Montenegro" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "United States Medical" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Madagascar" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Marshall Islands" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Military" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Macedonia" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Mongolia" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Macau" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "Mobile Devices" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Northern Mariana Islands" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Martinique" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Mauritania" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Mauritius" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "Museums" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Maldives" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "Mexico" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Malaysia" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Mozambique" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Namibia" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "Individual's Names" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "New Caledonia" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Internic Network" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Norfolk Island" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Nigeria" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Netherlands" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Norway" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "New Zealand" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "Internic Non-Profit Organisation" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "French Polynesia" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Papua New Guinea" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Philippines" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Poland" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "St. Pierre and Miquelon" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Puerto Rico" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "Professions" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "Palestinian Territory" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Portugal" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Paraguay" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Qatar" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Reunion" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Romania" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "Old School ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "Serbia" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Russian Federation" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Rwanda" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Saudi Arabia" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Solomon Islands" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Seychelles" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Sudan" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Sweden" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Singapore" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "St. Helena" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Slovenia" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard and Jan Mayen Islands" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "Slovak Republic" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Somalia" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Suriname" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "South Sudan" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "Sao Tome and Principe" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Former USSR" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Syria" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Swaziland" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Turks and Caicos Islands" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Chad" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "Internet Communication Services" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "French Southern Territories" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Thailand" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Tajikistan" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "East Timor" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Tunisia" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Turkey" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "Travel and Tourism" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Trinidad and Tobago" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Tanzania" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Ukraine" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "United Kingdom" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "United States of America" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Uruguay" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Uzbekistan" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Vatican City State" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "St. Vincent and the Grenadines" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "British Virgin Islands" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "US Virgin Islands" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "Wallis and Futuna Islands" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "Adult Entertainment" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Yemen" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Yugoslavia" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "South Africa" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Zambia" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "Couldn't connect to session bus" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "Failed to complete NameHasOwner" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "Failed to complete Command" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "remote access" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "plugin for remote access using DBUS" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Couldn't connect to session bus: %s\n" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Failed to acquire %s: %s\n" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Character Chart" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "Ban" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "Exempts" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "Exempt" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "Invites" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Invite" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "Quiets" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "Quiet" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "Copy mask" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "%s on %s by %s" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "Copy entry" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "Not connected." + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "You must select some bans." + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "Are you sure you want to remove all listed items in %s?" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "Type" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Mask" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "From" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Date" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "You can only open the Ban List window while in a channel tab." + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "Ban List (%s) - %s" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Remove" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Crop" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Refresh" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Displaying %d/%d users on %d/%d channels." + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Select an output filename" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "_Join Channel" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "_Copy Channel Name" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "Copy _Topic Text" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "Channel List (%s) - %s" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "_Search" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "_Download List" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "Save _List..." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "Show only:" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "channels with" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "to" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "users." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "Look in:" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Channel name" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "Search type:" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "Simple Search" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "Pattern Match (Wildcards)" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "Regular Expression" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Find:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Send file to %s" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "That file is not resumable." + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "Cannot access file: %s\n%s.\nResuming not possible." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "File in download directory is larger than file offered. Resuming not possible." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "Cannot resume the same file from two people." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "Uploads and Downloads - %s" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Status" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "File" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Both" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "Uploads" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "Downloads" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "Details" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "File:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "Address:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Abort" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Accept" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Resume" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "Open Folder..." + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "DCC Chat List - %s" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Recv" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Sent" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "Start Time" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "Add" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Delete" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Cancel" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Save" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "Don't auto connect to servers" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "Use a different config directory" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "Don't auto load any plugins" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "Show plugin/script auto-load directory" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "Show user config directory" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "Open an irc://server:port/channel?key URL" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "Execute command:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "Open URL or execute command in an existing HexChat" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Begin minimised. Level 0=Normal 1=Iconified 2=Tray" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "level" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "Show version information" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "Failed to open font:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "Search buffer is empty.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d bytes" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Network send queue: %d bytes" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "The Run Command action runs the data in Data 1 as if it had been typed into the entry box where you pressed the key sequence. Thus it can contain text (which will be sent to the channel/person), commands or user commands. When run all \\n characters in Data 1 are used to deliminate separate commands so it is possible to run more than one command. If you want a \\ in the actual text run then enter \\\\" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "The Change Page command switches between pages in the notebook. Set Data 1 to the page you want to switch to. If Data 2 is set to anything then the switch will be relative to the current position. Set Data 1 to auto to switch to the page with the most recent and important activity (queries first, then channels with hilight, channels with dialogue, channels with other data)." + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "The Insert in Buffer command will insert the contents of Data 1 into the entry where the key sequence was pressed at the current cursor position" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "The Scroll Page command scrolls the text widget up or down one page or one line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "The Set Buffer command sets the entry where the key sequence was entered to the contents of Data 1" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "The Last Command command sets the entry to contain the last command entered - the same as pressing up in a shell" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "The Next Command command sets the entry to contain the next command entered - the same as pressing down in a shell" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "This command changes the text in the entry to finish an incomplete nickname or command. If Data 1 is set then double-tabbing in a string will select the last nick, not the next" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "This command scrolls up and down through the list of nicks. If Data 1 is set to anything it will scroll up, else it scrolls down" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "This command checks the last word entered in the entry against the replace list and replaces it if it finds a match" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "This command moves the front tab left by one" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "This command moves the front tab right by one" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "This command moves the current tab family to the left" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "This command moves the current tab family to the right" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "Push input line into history but doesn't send to server" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "There was an error loading key bindings configuration" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "Select a row to get help information on its Action." + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "Keyboard Shortcuts - %s" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "Cannot write to that file." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "Cannot read that file." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "That mask already exists." + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Private" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Notice" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "Unignore" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "Are you sure you want to remove all ignores?" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "Enter mask to ignore:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "Ignore list - %s" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Ignore Stats:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Channel:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Private:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Notice:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Invite:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "Add..." + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "Channel name too short, try again." + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "Connection Complete - %s" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "Connection to %s complete." + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "In the server list window, no channel (chat room) has been entered to be automatically joined for this network." + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "What would you like to do next?" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "_Nothing, I'll join a channel later." + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "_Join this channel:" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "If you know the name of the channel you want to join, enter it here." + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "O_pen the channel list." + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "Retrieving the channel list may take a minute or two." + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "_Always show this dialog after connecting." + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "Dialogue with" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Topic for %s is: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "No topic is set" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "This server still has %d channels or dialogues associated with it. Close them all?" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "Quit HexChat?" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "Don't ask next time." + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "You are connected to %i IRC networks." + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "Are you sure you want to quit?" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "Some file transfers are still active." + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "_Minimise to Tray" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "Insert Attribute or Colour Code" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>Bold</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>Underline</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "<i>Italic</i>" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "Normal" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "Colours 0-7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "Colours 8-15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "_Settings" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "_Log to Disk" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "_Reload Scrollback" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "Strip _Colours" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "_Hide Join/Part Messages" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "_Extra Alerts" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "Beep on _Message" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "Blink Tray _Icon" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "Blink Task _Bar" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "_Detach" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "_Close" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "User limit must be a number!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "Filter Colours" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "No outside messages" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "Topic Protection" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "Invite Only" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "Moderated" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "Ban List" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Keyword" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "User Limit" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Enter new nickname:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "No results found." + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "Search hit end or not found." + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "_Highlight all" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "Highlight all occurrences, and underline the current occurrence." + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "Mat_ch case" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "Perform a case-sensitive search." + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "_Regex" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "Regard search string as a regular expression." + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Host unknown" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "Account unknown" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Unknown" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Real Name:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "User:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "Account:" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "Country:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "Server:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "%u minutes ago" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "Last Msg:" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "Away Msg:" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "%d nicks selected." + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "The Menubar is now hidden. You can show it again by pressing Control+F9 or right-clicking in a blank part of the main text area." + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "Open Link in Browser" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "Copy Selected Link" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Join Channel" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "Part Channel" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "Cycle Channel" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "_Autojoin" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "Autojoin Channel" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "_Auto-Connect" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "User menu - %s" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "Edit This Menu" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "Marker line disabled." + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "Marker line never set." + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "Marker line reset manually." + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "Marker line reset because exceeded scrollback limit." + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "Marker line reset by CLEAR command." + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "Marker line state unknown." + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "Retrieve channel list" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr " has been build without plugin support." + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "User Commands - Special codes:\n\n%c = current channel\n%e = current network name\n%m = machine info\n%n = your nick\n%t = time/date\n%v = HexChat version\n%2 = word 2\n%3 = word 3\n&2 = word 2 to the end of line\n&3 = word 3 to the end of line\n\neg:\n/cmd john hello\n\n%2 would be \"john\"\n&2 would be \"john hello\"." + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "Userlist Buttons - Special codes:\n\n%a = all selected nicks\n%c = current channel\n%e = current network name\n%h = selected nick's hostname\n%m = machine info\n%n = your nick\n%s = selected nick\n%t = time/date\n%u = selected users account" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "Dialogue Buttons - Special codes:\n\n%a = all selected nicks\n%c = current channel\n%e = current network name\n%h = selected nick's hostname\n%m = machine info\n%n = your nick\n%s = selected nick\n%t = time/date\n%u = selected users account" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "CTCP Replies - Special codes:\n\n%d = data (the whole ctcp)\n%e = current network name\n%m = machine info\n%s = nick who sent the ctcp\n%t = time/date\n%2 = word 2\n%3 = word 3\n&2 = word 2 to the end of line\n&3 = word 3 to the end of line\n\n" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "URL Handlers - Special codes:\n\n%s = the URL string\n\nPutting a ! in front of the command\nindicates it should be sent to a\nshell instead of HexChat" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "User Defined Commands - %s" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "Userlist Popup menu - %s" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "Replace - %s" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "Replace with" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "URL Handlers - %s" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "Userlist buttons - %s" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "Dialog buttons - %s" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "CTCP Replies - %s" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "He_xChat" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "Network Li_st" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "_New" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "Server Tab" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "Channel Tab" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "Server Window" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "Channel Window" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "_Load Plugin or Script" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "_Quit" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "_View" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "_Menu Bar" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "_Topic Bar" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "_User List" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "U_ser List Buttons" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "M_ode Buttons" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "_Channel Switcher" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "_Tabs" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "T_ree" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "_Network Meters" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Off" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "Graph" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "_Fullscreen" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "_Server" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "_Disconnect" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "_Reconnect" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "_Join a Channel" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "Channel _List" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "Marked _Away" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "_Usermenu" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "S_ettings" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "_Preferences" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "Auto Replace" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "CTCP Replies" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "Dialog Buttons" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "Keyboard Shortcuts" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "Text Events" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "URL Handlers" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "User Commands" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "User List Buttons" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "User List Popup" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "_Window" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "_Ban List" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "Direct Chat" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "File _Transfers" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "Friends List" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "Ignore List" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "_Plugins and Scripts" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "_Raw Log" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "_URL Grabber" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "Reset Marker Line" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "Move to Marker Line" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "_Copy Selection" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "C_lear Text" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "Save Text" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "Search" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "Search Text" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "Search Next" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "Search Previous" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "_Help" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "_Contents" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "_About" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "_Attach" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Name" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Last Seen" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "Offline" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Never" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "%d minutes ago" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "An hour ago" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "%d hours ago" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "Online" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "Enter nickname to add:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "Notify on these networks:" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "Comma separated list of networks is accepted." + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "Friends List - %s" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "Open Dialogue" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "Highlighted message from: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "Channel message from: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "File offer from: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "Invited to channel by: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "Notice from: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "Private message from: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "Connected to %u networks and %u channels - %s" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "_Restore Window" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "_Hide Window" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "_Blink on" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "Channel Message" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "Private Message" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "Highlighted Message" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "_Change status" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "_Away" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "_Back" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "Highlighted message from: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "%u highlighted messages, latest from: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "Channel message from: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "%u channel messages. - %s" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "Private message from: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "%u private messages, latest from: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "File offer from: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "%u file offers, latest from: %s (%s) - %s" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Version" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Description" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Select a Plugin or Script to load" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "Plugins and Scripts - %s" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "_Load..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "_Unload" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "_Reload" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "Save As..." + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "Raw Log (%s) - %s" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "Clear Raw Log" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "New Network" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Really remove network \"%s\" and all its servers?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "User name cannot be left blank." + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "You cannot have an empty nick name." + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "You must have two unique nick names." + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "The way you identify yourself to the server. For custom login methods use connect commands." + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "Edit %s - %s" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "Servers" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "Autojoin channels" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "Connect commands" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "%n=Nick name\n%p=Password\n%r=Real name\n%u=User name" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "Key (Password)" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "_Edit" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "Connect to selected server only" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Don't cycle through all the servers when the connection fails." + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "Connect to this network automatically" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "Bypass proxy server" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "Use SSL for all the servers on this network" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "Accept invalid SSL certificates" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "Use global user information" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "_Nick name:" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "Second choice:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "Rea_l name:" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "_User name:" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "Login method:" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Password:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "Password used for login. If in doubt, leave blank." + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "Character set:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "Network List - %s" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "User Information" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "Third choice:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Networks" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "Skip network list on startup" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "Show favourites only" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "_Edit..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "_Sort" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down keys to move a row." + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "_Favour" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "Mark or unmark this network as a favourite." + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "C_onnect" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "Afrikaans" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Albanian" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "Amharic" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "Asturian" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Azerbaijani" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "Basque" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Belarusian" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Bulgarian" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "Chinese (Simplified)" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "Chinese (Traditional)" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "Czech" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "Danish" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "Dutch" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "English (British)" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "English" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Estonian" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "Finnish" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "French" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "Galician" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "German" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "Greek" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "Gujarati" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "Hindi" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "Hungarian" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "Indonesian" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "Italian" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "Japanese" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "Kannada" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "Kinyarwanda" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "Korean" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "Latvian" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "Lithuanian" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "Macedonian" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Malay" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "Malayalam" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "Norwegian (Bokmal)" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "Norwegian (Nynorsk)" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "Polish" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "Portuguese" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "Portuguese (Brazilian)" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "Punjabi" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "Russian" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "Serbian" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "Slovak" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "Slovenian" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "Spanish" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "Swedish" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Thai" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "Turkish" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "Ukrainian" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Vietnamese" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "Walloon" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "General" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "Language:" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "Main font:" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Font:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "Text Box" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "Coloured nick names" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "Give each person on IRC a different colour" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "Indent nick names" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "Make nick names right-justified" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "Show marker line" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "Insert a red line after the last read text." + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Background image:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "Transparency Settings" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "Window opacity:" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "Timestamps" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "Enable timestamps" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "Timestamp format:" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "See the strftime MSDN article for details." + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "See the strftime manpage for details." + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "Title Bar" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "Show channel modes" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "Show number of users" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "Last-spoke order" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "Input Box" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "Use the text box font and colours" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "Render colours and attributes" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "Show nick box" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "Show user mode icon in nick box" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "Spell checking" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "Dictionaries to use:" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\nSeparate multiple entries with commas." + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "Use language codes. Separate multiple entries with commas." + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "Nick Completion" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "Nick completion suffix:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "Nick completion sorted:" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "Nick completion amount:" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "Threshold of nicks to start listing instead of completing" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "nicks." + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "Graphical" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "A-Z, ops first" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "Z-A, ops last" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "Unsorted" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "Left (upper)" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "Left (lower)" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "Right (upper)" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "Right (lower)" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Top" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Bottom" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Hidden" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "User List" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "Show hostnames in user list" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "Use the Text box font and colours" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "Show icons for user modes" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "Use graphical icons instead of text symbols in the user list." + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "Colour nicknames in userlist" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "Will colour nicknames the same as in chat." + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "Show user count in channels" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "User list sorted by:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "Show user list at:" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "Away Tracking" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "Track the away status of users and mark them in a different colour" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "On channels smaller than:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "Action Upon Double Click" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "Extra Gadgets" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "Lag meter:" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "Throttle meter:" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Windows" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Tabs" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "Always" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "Only requested tabs" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "Automatic" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "In an extra tab" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "In the front tab" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "Tree" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "Switcher type:" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "Open an extra tab for server messages" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "Open a new tab when you receive a private message" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "Sort tabs in alphabetical order" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "Show icons in the channel tree" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "Show dotted lines in the channel tree" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "Scroll mouse-wheel to change tabs" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "Middle click to close tab" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "Smaller text" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "Focus new tabs:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "Placement of notices:" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "Show channel switcher at:" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "Shorten tab labels to:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "letters." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "Tabs or Windows" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "Open channels in:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "Open dialogues in:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "Open utilities in:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Open DCC, Ignore, Notify etc, in tabs or windows?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "Messages" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "Scrollback" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "Ask for confirmation" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "Ask for download folder" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "Save without interaction" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "Files and Directories" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "Auto accept file offers:" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Download files to:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "Move completed files to:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "Save nick name in filenames" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "Auto Open DCC Windows" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "Send window" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "Receive window" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "Chat window" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "Maximum File Transfer Speeds (Byte per Second)" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "One upload:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "Maximum speed for one transfer" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "One download:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "All uploads combined:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "Maximum speed for all files" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "All downloads combined:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "Alerts" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "Show notifications on:" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "Blink tray icon on:" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "Blink task bar on:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "Make a beep sound on:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "Play the \"Instant Message Notification\" system sound upon the selected events" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "Play \"message-new-instant\" from the \"freedesktop.org\" sound theme upon the selected events" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "Play a GTK beep upon the selected events" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "Omit alerts when marked as being away" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "Omit alerts while the window is focused" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "Tray Behaviour" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "Enable system tray icon" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "Minimise to tray" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "Close to tray" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "Automatically mark away/back." + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "Automatically change status when hiding to tray." + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "Only show notifications when hidden or iconified" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "Highlighted Messages" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Highlighted messages are ones where your nickname is mentioned, but also:" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "Extra words to highlight:" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "Nick names not to highlight:" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "Nick names to always highlight:" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Separate multiple words with commas.\nWildcards are accepted." + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "Bounce dock icon on:" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "Default Messages" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "Quit:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "Leave channel:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "Away:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "Away" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Show away once" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "Show identical away messages only once." + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "Automatically unmark away" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "Unmark yourself as away before sending messages." + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "Miscellaneous" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "Display MODEs in raw form" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "WHOIS on notify" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "Sends a /WHOIS when a user comes online in your notify list." + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "Hide join and part messages" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "Hide channel join/part messages by default." + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "Hide nick change messages" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "*!*@*.host" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "*!*@domain" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "*!*user@*.host" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "*!*user@domain" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "Auto Copy Behaviour" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "Automatically copy selected text" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "Copy selected text to clipboard when left mouse button is released. Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "Automatically include timestamps" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "Automatically include timestamps in copied lines of text. Otherwise, include timestamps if the Shift key is held down while selecting." + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "Automatically include colour information" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "Automatically include colour information in copied lines of text. Otherwise, include colour information if the Ctrl key is held down while selecting." + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "Real name:" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "Alternative fonts:" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "Separate multiple entries with commas without spaces before or after." + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "Display lists in compact mode" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "Use less spacing between user list/channel tree rows." + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "Use server time if supported" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "Display timestamps obtained from server if it supports the time-server extension." + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "Automatically reconnect to servers on disconnect" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "Auto reconnect delay:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "Auto join delay:" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "Ban Type:" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "Attempt to use this banmask when banning or quieting. (requires irc_who_join)" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Logging" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "Display scrollback from previous session" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "Scrollback lines:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "Enable logging of conversations to disk" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "Log filename:" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Server %c=Channel %n=Network." + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "Insert timestamps in logs" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "Log timestamp format:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URLs" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "Enable logging of URLs to disk" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "Enable URL grabber" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "Maximum number of URLs to grab:" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(Disabled)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "SOCKS4" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "SOCKS5" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "Auto" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "All connections" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "IRC server only" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "DCC only" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "Your Address" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "Bind to:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "Only useful for computers with multiple addresses." + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "File Transfers" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "Get my address from the IRC server" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "Asks the IRC server for your real address. Use this if you have a 192.168.*.* address!" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "DCC IP address:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "Claim you are at this address when offering files." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "First DCC listen port:" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "Last DCC listen port:" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "!Leave ports at zero for full range." + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "Proxy Server" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "Hostname:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Port:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Type:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "Use proxy for:" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "Proxy Authentication" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "Use authentication (HTTP or SOCKS5 only)" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "Username:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "Identd Server" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "Enabled" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "Server will respond with the networks username" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "You must have permissions to listen on this port. If not 113 (0 defaults to this) then you must configure port-forwarding." + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "Select an Image File" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "Select Download Folder" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Select font" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Browse..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "Open Data Folder" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Select colour" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "Text Colours" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "mIRC colours:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "Local colours:" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Foreground:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Background:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "Selected Text" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "Interface Colours" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "New data:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "Marker line:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "New message:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "Away user:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "Highlight:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "Spell checker:" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "Colour Stripping" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Event" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "Sound file" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "Select a sound file" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "Sound file:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "_Browse..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "_Play" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Interface" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "Appearance" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Input box" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "User list" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "Channel switcher" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Colours" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Chatting" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "Sounds" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "Advanced" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Network setup" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "File transfers" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "Identd" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Categories" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "You cannot place the tree on the top or bottom!\nPlease change to the <b>Tabs</b> layout in the <b>View</b> menu first." + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "The Real name option cannot be left blank. Falling back to \"realname\"." + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Some settings were changed that require a restart to take full effect." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*WARNING*\nAuto accepting DCC to your home directory\ncan be dangerous and is exploitable. Eg:\nSomeone could send you a .bash_profile" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "Preferences - %s" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "<i>(no suggestions)</i>" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "More..." + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "Add \"%s\" to Dictionary" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "Ignore All" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "Spelling Suggestions" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "enchant error for language: %s" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "There was an error parsing the string" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "This signal is only passed %d args, $%d is invalid" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "Print Texts File" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ Number" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Edit Events" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "Load From..." + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Test All" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "OK" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "URL Grabber - %s" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Clear list" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Copy selected URL" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Copy" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Save list to a file" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d ops, %d total" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "Open an irc://server:port/channel URL" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "Sysinfo: Failed to get info. Either not supported or error." + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "Sysinfo: No info by that name\n" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "Sysinfo: %s is set to: %d\n" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "Sysinfo: Valid settings are: announce and hide_* for each piece of information. e.g. hide_os. Without a value it will show current (or default) setting.\n" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "Sysinfo: Invalid variable name\n" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "%s plugin loaded\n" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "%s plugin unloaded\n" diff --git a/hexchat/po/es.po b/hexchat/po/es.po new file mode 100644 index 0000000..aeb6403 --- /dev/null +++ b/hexchat/po/es.po @@ -0,0 +1,6267 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Alejandro López-Valencia, 2016-2017 +# Pedro A. López-Valencia, 2017 +# bviktor, 2012 +# bviktor, 2012 +# Gato Loko, 2016 +# Gato Loko, 2016-2017 +# hard ware, 2018 +# Pedro A. López-Valencia, 2016 +# Pedro A. López-Valencia, 2016 +# Víctor Vega <vegadark@protonmail.com>, 2013-2014 +# Víctor Vega <vegadark@protonmail.com>, 2012-2013 +# Víctor Vega <vegadark@protonmail.com>, 2014-2017 +# Víctor Vega <vegadark@protonmail.com>, 2014,2018-2019 +# Víctor Vega <vegadark@protonmail.com>, 2014 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2019-01-28 21:28+0000\n" +"Last-Translator: Víctor Vega <vegadark@protonmail.com>\n" +"Language-Team: Spanish (http://www.transifex.com/hexchat/hexchat/language/es/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "HexChat" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "Cliente de IRC" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "HexChat es un cliente de IRC fácil de usar. Permite unirse a múltiples redes de manera segura y hablar con los usuarios en privado o en los canales usando una interfaz personalizable. Incluso puede enviar archivos." + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "HexChat soporta características como: DCC, SASL, proxies, autocorrector, alertas, registro automático, temas personalizados, y scripts en Python/Perl." + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "Ventana principal de charla" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "Charlar con otras personas en línea" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "IM;Chat;" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "hexchat" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "Abrir en modo seguro" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "Administrador de temas de HexChat" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Estoy ocupado" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Saliendo" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "OFF" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "ON" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "{sin establecer}" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Red" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<ninguno>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Canal" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Esperando" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Activo" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Fallido" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Terminado" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Conectar" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Abortado" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "No se puede acceder a %s\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Error" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s está ofreciendo «%s». ¿Desea aceptar?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "No hay DCCs activos\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "_Abrir ventana de diálogo" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "_Enviar un archivo" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "Información del _usuario (WhoIs)" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "_Añadir a la lista de amigos" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "_Ignorar" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "Acciones de operador" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Dar Op" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Quitar Op" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "Dar voz" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "Quitar voz" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Expulsar/Banear" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Expulsar" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "Banear" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "Expulsar y banear" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Abandonar canal" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Unirse al canal..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "Introduce el canal a unirte:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Enlaces del servidor" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Ping al servidor" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Ocultar la versión" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Dar Op" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "Quitar Op" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "adiós" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Introduce el motivo para expulsar a %s:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "Enviar archivo" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "Diálogo" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Enviar" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Chat" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Limpiar" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "No tienes acceso de escritura a %s. No se guardará nada de esta sesión." + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* ¡Ejecutar IRC como root es peligroso! Debería\n crear una cuenta de usuario y usarla para conectarse.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "SÍ " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "NO " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Estás siendo inundado de CTCP de %s, ignorando a %s\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "Estás siendo inundado de MSG de %s, poniendo gui_autoopen_dialog a OFF.\n" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "Resuelto para %s" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "No encontrado" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "Resuelto para:" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "Buscando %s..." + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s en línea\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s fuera de línea\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "No se ha unido a ningún canal. Intente /join #<canal>\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "No está conectado. Intente /server <host> [<puerto>]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "El servidor %s ya existe en la red %s.\n" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "Servidor %s añadido a la red %s.\n" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Ausencia ya marcada: %s\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "Ausencia ya desmarcada.\n" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "¡Se necesita /bin/sh para poder ejecutarse!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "Órdenes disponibles:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "Órdenes definidas por el usuario:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "Órdenes definidas por el complemento:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Escriba /HELP <orden> para obtener más información, ó /HELP -l" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Argumento desconocido '%s' ignorado." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "Silenciar no está soportado en este servidor." + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "Complemento no encontrado.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "El complemento no permite ser descargado.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <nombre> <acción>, añade un botón debajo de la lista de usuarios" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "ADDSERVER <RedNueva> <servidor/6667>, añade una red nueva con un servidor nuevo a la lista de redes" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <cmd>, envía una orden a todos los canales a los que se ha unido" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "ALLCHANL <orden>, envía una orden a todos los canales del servidor actual" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <cmd>, envía una orden a todos los servidores a los que se ha conectado" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "AWAY [<motivo>], establece tu ausencia (utiliza /BACK para quitarla)" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "BACK, establece tu regreso (no ausente)" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <máscara> [<tipo de baneo>], banea del canal actual a todos aquellos que concuerden con la máscara. Si ya están en el canal esto no les expulsa (es necesario ser operador del canal)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <variable> [<valor>]" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "CHARSET [<codificación>], obtiene o configura la codificación usada en la conexión actual" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "CLEAR [ALL|HISTORY|[-]<valor>], limpia la ventana de texto actual o el historial de órdenes" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "CLOSE [-m], Cierra la pestaña activa, incluyendo la ventana si esta es la única abierta. Con la opción «-m» cierra todas las pestañas de consulta (QUERY)." + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <código|comodín>, busca un código de país, ej: au = Australia" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <apodo> <mensaje>, envía el mensaje CTCP al apodo, los mensajes comunes son VERSION y USERINFO" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "CYCLE [<canal>], abandona el canal actual o el dado y se reincorpora inmediatamente" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <apodo> - acepta un archivo\nDCC SEND [-maxcps=#] <apodo> [archivo] - envía un archivo a alguien\nDCC PSEND [-maxcps=#] <apodo> [archivo] - envía un archivo usando el modo pasivo\nDCC LIST - muestra la lista DCC\nDCC CHAT <apodo> - ofrece una CHARLA DCC a alguien\nDCC PCHAT <apodo> - ofrece una CHARLA DCC usando el modo pasivo\nDCC CLOSE <tipo> <apodo> <archivo> - ejemplo:\n /dcc close send juanperez archivo.tar.gz" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <apodo>, quita el estado de semioperador del canal al apodo en el canal actual (necesita ser operador del canal)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <nombre>, borra un botón de debajo de la lista de usuarios" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <apodo>, quita el estado de operador al apodo en el canal actual (necesita ser operador del canal)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <apodo>, quita el estado de voz del apodo en el canal actual (necesita ser operador del canal)" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, se desconecta del servidor" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "DNS <apodo|host|ip>, resuelve una dirección IP o un nombre de host" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "DOAT <canal,lista,/red> <comando>" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <texto>, imprime texto localmente" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <orden>, ejecuta la orden. Si se usa la bandera -o entonces la salida es enviada al canal actual, si no, se imprime en el cuadro de texto actual" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, envía al proceso la señal de continuar" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9], finaliza un ejecutable de la sesión actual. Si se indica -9 el proceso es finalizado por la fuerza" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, envía al proceso la señal de detenerse" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, envía los datos a los procesos stdin" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "EXPORTCONF, exporta la configuración de HexChat" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, borra la cola de envío actual del servidor" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <host> [<puerto>], utiliza un proxy a través de un host, el puerto predeterminado es el 23" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <apodo> [contraseña], libera la sesión fantasma de un apodo" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <apodo>, pone estado de semioperador al apodo (necesita ser operador del canal)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <contraseña>, se identifica con NickServ" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <máscara> <tipos..> <opciones..>\n máscara - máscara de hosts a ignorar, ej: *!*@*.aol.com\n tipos - tipos de datos a ignorar, uno o todos de:\n PRIV, CHAN, NOTI, CTCP, INVI, ALL\n opciones - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <apodo> [<canal>], invita a alguien a un canal, por omisión el canal actual (necesita ser operador del canal)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <canal>, se une al canal" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "KICK <apodo> [motivo], expulsa del canal actual al apodo (necesita ser operador del canal)" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "KICKBAN <apodo> [motivo], banea y luego expulsa del canal actual al apodo (necesita ser operador del canal)" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, fuerza una nueva prueba de retardo" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "LASTLOG [-h] [-m] [-r] [--] <cadena>, busca una cadena en el búfer\n Usa -h para resaltar la(s) cadena(s) encontrada(s)\n Usa -m para coincidencias\n Usa -r cuando la cadena es una expresión regular\n Usa -- (guion doble) para poner fin a las opciones de búsqueda, por ejemplo, la cadena '-r'" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <archivo>, carga un complemento o guion (script)" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, quita masivamente el estado de semioperador en el canal actual (necesita ser operador del canal)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, quita masivamente el estado de operador en el canal actual (necesita ser operador del canal)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <acción>, envía la acción al canal actual (las acciones están escritas en tercera persona del inglés, como /me salta)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "MHOP, pone masivamente el estado de semioperador en el canal actual (necesita ser operador del canal)" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, Expulsa masivamente del canal actual a todos excepto a usted (necesita ser operador del canal)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, pone masivamente el estado de operador del canal actual (necesita ser operador del canal)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "MSG <apodo> <mensaje>, envía un mensaje privado, mensaje «.» para enviarselo al último apodo o ponga el prefijo «=» para una charla dcc" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "NAMES [canal], lista los apodos en el canal" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <apodo> <mensaje>, envía un aviso CTCP" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <nombre de host> [<puerto>]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <apodo>, establece su apodo" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "NOTICE <apodo/canal> <mensaje>, envía un aviso" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [-n red1[,red2,...]] [<apodo>], muestra tu lista de notificaciones o agrega a alguien en ella" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <apodo>, pone el estado de operador del canal al apodo (necesita ser operador del canal)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<canal>] [<razón>], abandona un canal, por defecto, el canal actual" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <apodo | canal>, envía pings CTCP al apodo o canal" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "QUERY [-nofocus] <apodo> [mensaje], abre una nueva ventana privada de mensajes a alguien y, opcionalmente, envía un mensaje" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "QUIET <máscara> [<tipo de silencio>], silencia a todos los que coincidan con la máscara en el canal actual, si el servidor lo soporta." + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<razón>], se desconecta del servidor actual" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <texto>, envía el texto en bruto al servidor" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<host>] [<puerto>] [<contraseña>], puede ser invocado como /RECONNECT para reconectarse al servidor actual o con /RECONNECT ALL para reconectarse a todos los servidores abiertos" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<host>] [<puerto>] [<contraseña>], puede ser invocado como /RECONNECT para reconectarse al servidor actual o con /RECONNECT ALL para reconectarse a todos los servidores abiertos" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "RECV <texto>, envía datos en bruto a HexChat, como si los recibiese del servidor IRC" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "RELOAD <nombre>, recarga un complemento o script" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <texto>, envía el texto al objeto en la ventana actual" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <apodo> [<archivo>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <host> <puerto> <canal>, se conecta y entra al canal" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <host> <puerto> <canal>, se conecta y entra al canal" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "SERVER [-ssl] <host> [<puerto>] [<contraseña>], se conecta a un servidor, el puerto predeterminado es 6667 para conexiones normales y 6697 para conexiones ssl" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <host> [<puerto>] [<contraseña>], se conecta a un servidor, el puerto predeterminado es 6667" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-off|-on] [-quiet] <variable> [<valor>]" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "SETCURSOR [-|+]<posición>, reposicionar el cursor en cuadro de entrada" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "SETTAB <nombre nuevo>, cambia el nombre a una pestaña, el límite tab_trunc sigue siendo válido" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "SETTEXT <texto nuevo>, reemplaza el texto en el cuadro de entrada" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<tema>], establece el tema si se proporciona uno, de lo contrario muestra el tema actual" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "\nTRAY -f <tiempo de espera> <archivo1> [<archivo2>] La bandeja parpadea entre dos iconos.\nTRAY -f <nombre de archivo> Configura en la bandeja como icono fijo.\nTRAY -i <número> La bandeja parpadea con un icono interno.\nTRAY -t <texto> Configura la descripción de la bandeja.\nTRAY -b <título> <texto> Configura el globo de la bandeja." + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <máscara> [<máscara>...], desbanea las máscaras especificadas." + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <máscara> [QUIET]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <nombre>, descarga un complemento o guion (script)" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "UNQUIET <máscara> [<máscara>...], quita el silencio a la máscara especificada, si el servidor lo soporta." + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, abre una URL en su navegador" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "USELECT [-a] [-s] <apodo1> <apodo2> etc, resalta apodo(s) de la lista de usuarios del canal" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <apodo>, pone el estado de voz a alguien (necesita ser operador del canal)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <mensaje>, escribe el mensaje en todos los canales" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <mensaje>, envía el mensaje a todos los operadores del canal en el canal actual" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "Orden de usuario para: %s\n" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "Uso: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nNo hay ayuda disponible para esa orden.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "No existe esa orden.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "Argumentos erróneos para la orden de usuario.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "Demasiadas órdenes de usuario recursivas, abortando." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "Orden %s desconocida. Intente /help\n" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "Sin distintivo hexchat_plugin_init; ¿realmente es un complemento de HexChat?" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "*\tSolicitud de servicio de ident de %s como %s" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "*\tError al iniciar el servidor identd: %s" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "IDENTD <puerto> <usuario>" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "Temporizador %d eliminado.\n" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "No se encontró el número de referencia.\n" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "No hay temporizadores instalados.\n" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr " Ref# Segundos Repeticiones Orden \n" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "%5d %8.1f %7d %s\n" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "¿Está seguro de que se trata de un servidor y puerto compatibles con SSL?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "No se pudo resolver el nombre de host %s\n¡Verifique su configuración IP!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "Ha fallado el proxy transversal.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Ciclando al siguiente servidor en %s...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "Advertencia: el conjunto de caracteres «%s» es desconocido. No se aplicará ninguna conversión a la red %s." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "%C18*%O$t%C18$1%O añadido a lista de notificaciones." + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "%C22*%O$t%C22$1%O: %C18$2%O el %C24$4%O por %C26$3%O" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "%C22*%O$tNo puede entrar a %C22$1 %O(%C20Está baneado%O)." + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "%C29*%O$tCapacidades reconocidas: %C29$2%O" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "%C29*%O$tCapacidades eliminadas: %C29$2%O" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "%C23*%O$tCapacidades soportadas: %C29$2%O" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "%C23*%O$tCapacidades solicitadas: %C29$1%O" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "%C24*%O$t%C28$1%O ahora es conocido como %C18$2%O" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O banea a %C18$2%O" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "%C22*%O$tCanal %C22$1%O creado el %C24$2%O" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O quita semiop a %C18$2%O" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O quita op a %C18$2%O" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O quita voz a %C18$2%O" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "%C22*%O$t%C26 $1%C pone exención a %C18$2%O" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O da semiop a %C18$2%O" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%C pone modo +I a %C18$2%O" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%UCanal Usuarios Tema" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "%C22*%O$t%C26$1%O pone modo %C24$2$3%O en %C22$4%O" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "%C22*%O$tCanal %C22$1%O modos: %C24$2" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O da op a %C18$2%O" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O pone silencio a %C18$2%O" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O quita exención a %C18$2%O" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O quita modo -I en %C18$2%O" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "%C22*%O$t%C26$1%O quita la contraseña del canal" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "%C22*%O$t%C26$1%O quita el límite de usuarios" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O pone la contraseña del canal a %C24$2%O" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O pone el límite de usuarios del canal a %C24$2%O" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O quita el baneo a %C18$2%O" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O quita silencio a %C18$2%O" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "%C22*%O$tCanal %C22$1%O url: %C24$2" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O da voz a %C18$2%O" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "%C23*%O$tConectado. Iniciando sesión." + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "%C23*%O$tConectando a %C29$1%C (%C23$2:$3%O)" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "%C20*%O$tLa conexión falló (%C20$1%O)" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "%C24*%O$tRecibido un CTCP %C24$1%C de %C18$2%O" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "%C24*%C$tRecibido un CTCP %C24$1%C de %C18$2%C (en %C22$3%C)%O" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "%C24*%O$tRecibido un sonido CTCP %C24$1%C de %C18$2%O" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "%C24*%O$tRecibido un sonido CTCP %C24$1%C de %C18$2%C (en %C22$3%O)" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "%C23*%O$tCHARLA DCC con %C18$1%O cancelada." + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "%C24*%O$tCHARLA DCC conexión establecida con %C18$1%C %C30[%C24$2%C30]%O" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "%C20*%O$tCHARLA DCC con %C18$1%O perdida (%C20$4%O)" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "%C24*%O$tRecibida una petición de CHARLA DCC de %C18$1%O" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "%C24*%O$tOfreciendo CHARLA DCC a %C18$1%O" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "%C24*%O$tYa se envió una petición de CHARLA a %C18$1%O" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "%C20*%O$tDCC $1 intento de conexión con %C18$2%O fallido (%C20$3%O)" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "%C23*%O$tRecibido '%C23$1%C' de %C18$2%O" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "%C16,17 Tipo Hacia/Desde Estado Tamaño Pos Archivo" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "%C20*%O$tRecibida una petición DCC malformada de %C18$1%O.$a010%C23*%O$tContenido del paquete: %C23$2%O" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "%C24*%O$tOfreciendo '%C24$1%O' a %C18$2%O" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "%C23*%O$tNo se ofreció ningún DCC." + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "%C23*%O$tDCC RECV '%C23$2%O' a %C18$1%O cancelado." + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "%C24*%O$tDCC RECV '%C23$1%O' de %C18$3%O completado %C30[%C24$4%O cps%C30]%O" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$tDCC RECV conexión establecida con %C18$1 %C30[%O%C24$2%C30]%O" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "%C20*%O$tDCC RECV '%C23$1%O' de %C18$3%O fallido (%C20$4%O)" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "%C20*%O$tDCC RECV: No se pudo abrir '%C23$1%C' como escritura (%C20$2%O)" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "%C23*%O$tEl archivo '%C24$1%C' ya existe, guardándo como '%C23$2%O' en su lugar." + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "%C24*%O$t%C18$1%C ha solicitado reanudar '%C23$2%C' de %C24$3%O." + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "%C23*%O$tDCC SEND '%C23$2%C' a %C18$1%O cancelado." + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "%C24*%O$tDCC SEND '%C23$1%C' a %C18$2%C completado %C30[%C24$3%C cps%C30]%O" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$tDCC SEND conexión establecida con %C18$1 %C30[%O%C24$2%C30]%O" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "%C20*%O$tDCC SEND '%C23$1%C' a %C18$2%C fallido (%C20$3%O)" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "%C24*%O$t%C18$1%C ha ofrecido '%C23$2%C' (%C24$3%O bytes)" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "%C20*%O$tDCC $1 '%C23$2%C' a %C18$3%O perdida, cancelando." + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "%C20*%O$tDCC $1 '%C23$2%C' a %C18$3%O tiempo agotado, cancelando." + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "%C24*%O$t%C18$1%O borrado de la lista de notificaciones." + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "%C20*%O$tDesconectado (%C20$1%O)" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "%C24*%O$tEncontrada tu IP: %C30[%C24$1%C30]%O" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "%O%C18$1%O añadido a la lista de ignorados." + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "%OIgnorar a %C18$1%O cambiado." + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "%C16,17" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "%C16,17 Host PRIV NOTI CHAN CTCP DCC INVI UNIG" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "%O%C18$1%O borrado de la lista de ignorados." + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "%OLa lista de ignorados está vacía." + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "%C20*%O$tNo se pudo unir a %C22$1%C (%C20El canal es solo para invitados%O)" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "%C24*%O$tHa sido invitado a %C22$1%O por %C18$2%O (%C29$3%O)" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "%C23*$t$1 ($3%C23) se ha unido" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "%C20*%O$tNo se pudo unir a %C22$1%C (%C20Se necesita contraseña%O)" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "%C22*%O$t%C26$1%C ha expulsado a %C18$2%C de %C22$3%C (%C24$4%O)" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "%C19*%O$t%C19Has sido expulsado por %C26$1%C (%C20$2%O)" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "%C29*%O$t%C29MOTD omitido%O" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "%C23*%O$t%C28$1%C ya está en uso. Intentando con %C18$2%O..." + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "%C23*%O$t%C28$1%C es erróneo. Intentando con %C18$2%O..." + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "%C20*%O$tEl apodo es erróneo o ya está en uso. Use /NICK para probar con otro." + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "%C20*%O$tNo hay ningún DCC." + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "%C23*%O$tNo se está ejecutando ningún proceso" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "%C23*%O$tNotificación: %C18$1%C está ausente (%C24$2%O)" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "%C23*%O$tNotificación: %C18$1%C está en línea" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tLa lista de notificaciones está vacía." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "%C16,17 Lista de notificaciones" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "%C23*%O$t%C23$1%O usuarios en la lista de notificaciones." + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "%C23*%O$tNotificación: %C18$1%C está fuera de línea (%C29$3%O)" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "%C23*%O$tNotificación: %C18$1%C está en línea (%C29$3%O)" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "%C24*$t$1 ($2%C24) ha salido" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "%C24*$t$1 ($2%C24) ha salido ($4)" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "%C24*%O$tRespuesta ping de %C18$1%C: %C24$2%O segundo(s)" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "%C20*%O$tSin respuesta ping de %C24$1%O segundos, desconectando." + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "%C24*%O$tYa se está ejecutando el proceso" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "%C24*$t$1 se ha marchado ($2)" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "%C24*%O$t%C26$1%C pone modos %C30[%C24$2%C30]%O" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "%O-%C29$1/Wallops%O-$t$2" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "%C24*%O$tBuscando número de IP para %C18$1%O..." + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "%C23*%O$tAutenticando vía SASL como %C18$1%O (%C24$2%O)" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "%C29*%O$tConectado." + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "%C29*%O$tBuscando %C29$1%O" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "%C23*%O$tDetenido el anterior intento de conexión (%C24$1%O)" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "%C22*%O$tTema de %C22$1%C: $2%O" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "%C22*%O$t%C26$1%C ha cambiado el tema a: $2%O" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "%C22*%O$tTema de %C22$1%C puesto por %C26$2%C (%C24$3%O)" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C20*%O$tHost desconocido. ¿Lo escribió mal?" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "%C20*%O$tNo se pudo unir a %C22$1%C (%C20Se alcanzó el límite de usuarios%O)" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "%C22*%O$tUsuarios en %C22$1%C: %C24$2%O" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%C está ausente %C30(%C23$2%O%C30)%O" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "%C23*%O$t%C28[%C18$1%C28] %OFin de la lista WHOIS." + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O inactivo %C23$2%O" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O inactivo %C23$2%O, entró el: %C23$3%O" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O Host real: %C23$2%O, IP real: %C30[%C23$3%C30]%O" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "%C19*%O$tUnido a %C22$2%O" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "%C19*%O$tHa sido expulsado de %C22$2%C por %C26$3%O (%C20$4%O)" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "%C19*%O$tHa abandonado el canal %C22$3%O" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "%C19*%O$tHa abandonado el canal %C22$3%C (%C24$4%O)" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "%C20*%O$tHa invitado a %C18$1%O al canal %C22$2%O (%C24$3%O)" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "%C20*%O$tAhora es conocido como %C18$2%O" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "Registro cargado desde" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** FINALIZANDO CONEXIÓN EN %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** INICIANDO CONEXIÓN EN %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "* Imposible abrir el registro(s) de escritura. Revise los\npermisos en %s" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "Dejar mensaje" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "Mensaje correcto" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "Dirección IP" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Nombre de usuario" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "El apodo de la persona que se une" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "El canal al que se está uniendo" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "El host de la persona" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "La cuenta de la persona" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Apodo" + +#: src/common/text.c:980 +msgid "The action" +msgstr "La acción" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "Modo carácter" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "Texto identificado" + +#: src/common/text.c:987 +msgid "The text" +msgstr "El texto" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "El mensaje" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Nombre del servidor" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "Capacidades reconocidas" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "Capacidades eliminadas" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "Capacidades del servidor" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "Capacidades solicitadas" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Apodo anterior" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Nuevo apodo" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "Apodo de la persona que ha cambiado el tema" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Tema" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "El apodo del que expulsó" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "La persona que fue expulsada" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "El canal" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "La razón" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "El apodo de la persona que abandonó" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "La fecha" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "El creador" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Apodo" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Razón" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Host" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "De quién viene" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "La fecha en formato x.x (ver debajo)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "El canal al que va" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "El sonido" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "El apodo de la persona" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "El evento CTCP" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "El apodo de la persona que puso la clave" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "La clave" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "El apodo de la persona que puso el límite" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "El limite" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "El apodo de la persona que dio el op" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "El apodo de la persona que recibió el op" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "El apodo de la persona que recibió el semiop" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "El apodo de la persona que dio el semiop" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "El apodo de la persona que dio la voz" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "El apodo de la persona que recibió la voz" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "El apodo de la persona que puso el baneo" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "La máscara de baneo" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "El apodo del usuario que puso el silencio" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "La máscara de silencio" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "El apodo de quién eliminó la clave" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "El apodo de quién eliminó el límite" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "El apodo de la persona que quitó el op" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "El apodo de la persona a la que se quitó el op" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "El apodo de la persona que quitó el semiop" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "El apodo de la persona a la que se quitó el semiop" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "El apodo de la persona que quitó la voz" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "El apodo de la persona a la que se quitó la voz" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "El apodo de la persona que quitó el baneo" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "El apodo de la persona que quitó el silencio" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "El apodo de la persona que puso la excención" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "La máscara de excención" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "El apodo de la persona que quitó la exención" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "El apodo de la persona que dio la invitación" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "La máscara de invitación" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "El apodo de la persona que quitó la invitación" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "El apodo de la persona que puso el modo" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "El signo del modo (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "La letra del modo" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "El canal esta siendo configurado" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Nombre completo" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Membresía del canal/«es un operador de IRC»" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Información del servidor" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Tiempo inactivo" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Tiempo de conexión" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Razón de la ausencia" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Mensaje" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Cuenta" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "Real usuario@host" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "Real IP" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Nombre del canal" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "Mecanismo" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "Identificador o número en bruto" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Texto" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Apodo de la persona que le ha invitado" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Usuarios" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "Apodo en uso" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Intentando usar el apodo" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Puerto" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "Cadena de modos" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "Tipo DCC" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Nombre de archivo" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Nombre de archivo de destino" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "Ruta" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Posición" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Tamaño" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "Cadena DCC" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "Motivo de ausencia" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "Número de elementos de notificación" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Nombre anterior del archivo" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Nombre nuevo del archivo" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Receptor" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Máscara de host" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Nombre de host" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "El paquete" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "Segundos" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "Apodo de la persona que ha sido invitada" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Máscara de baneo" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "Quién ha puesto el baneo" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Fecha del baneo" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "No se puede leer el archivo de sonido:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "Puerto cerrado en el equipo remoto" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "Conexión rechazada" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "No hay ruta hacia el host" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Tiempo de espera de la conexión agotado" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "No se puede asignar esa dirección" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "Conexión reiniciada por el par" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "Isla Ascensión" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Emiratos Arabes Unidos" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "Campos relacionados con la aviación" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Afganistán" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Antigua y Barbuda" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Albania" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Armenia" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Antillas Holandesas" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Antártida" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Argentina" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "DNS inverso" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Samoa Americano" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "Región Asia-Pacífico" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Austria" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "Fiel a la OTAN" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Australia" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "Islas de Aland" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Azerbaiyán" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Bosnia y Herzegovina" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Bangladesh" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Bélgica" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Bulgaria" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Bahrain" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "Negocios" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Brunei" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Bolivia" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Brasil" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Bahamas" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Bután" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Isla Bouvet" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Bielorrusia" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Belice" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Canadá" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "Catalán" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Islas Cocos" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "República Democrática del Congo" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "República Centro Africana" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Congo" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "Suiza" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "Costa de Marfil" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Islas Cook" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Chile" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Camerún" + +#: src/common/util.c:738 +msgid "China" +msgstr "China" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Colombia" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Anuncio de Internic" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "Cooperativas" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "Serbia y Montenegro" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Cuba" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Cabo Verde" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Isla Natividad" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Chipre" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "República Checa" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "Alemania del Este" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Alemania" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Dibuti" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Dinamarca" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Dominica" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "República Dominicana" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Argelia" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Ecuador" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Institución educativa" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Estonia" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Egipto" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Sahara Occidental" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "España" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Etiopía" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "Unión Europea" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Finlandia" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Fiji" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Islas Malvinas" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Micronesia" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Islas Feroe" + +#: src/common/util.c:770 +msgid "France" +msgstr "Francia" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Gabón" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Gran Bretaña" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Granada" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Georgia" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Guayana Francesa" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "Islas del Canal de la Mancha" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Gana" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Groenlandia" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Gobierno" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Guadalupe" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Guinea Ecuatorial" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Grecia" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Islas Georgia y Sandwich del Sur" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Guinea-Bissau" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Guayana" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Islas Heard y McDonald" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Croacia" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Haití" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Hungría" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Indonesia" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Irlanda" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Israel" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "Isla de Man" + +#: src/common/util.c:801 +msgid "India" +msgstr "India" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "Informativo" + +#: src/common/util.c:803 +msgid "International" +msgstr "Internacional" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Territorio Oceánico Indio Británico" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Iraq" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "Irán" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Islandia" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Italia" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Jamaica" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Jordania" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "Empleos" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Japón" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Kenia" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Kyrgyzstan" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Camboya" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Comores" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "San Kitts y Nevis" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Corea del Norte" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Corea del Sur" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Kuwait" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Islas Caimán" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Kazajistán" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Líbano" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Santa Lucía" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Liberia" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Lesoto" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Lituania" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Luxemburgo" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Letonia" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Libia" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Marruecos" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Mónaco" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Moldavia" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "Montenegro" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "Servicio médico de Estados Unidos" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Madagascar" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Islas Marshall" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Militar" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Macedonia" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Mongolia" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Macao" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "Dispositivos móviles" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Islas Marianas del Norte" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Martinica" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Mauritania" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Mauricio" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "Museos" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Maldivas" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "México" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Malasia" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Mozambique" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Namibia" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "Nombres individuales" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Nueva Caledonia" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Níger" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Red de Internic" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Isla Norfolk" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Nigeria" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Holanda" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Noruega" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "Nueva Zelanda" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Omán" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "Organización sin ánimo de lucro Internic" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Panamá" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Perú" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Polinesia Francesa" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Papau Nueva Guinea" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Filipinas" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Pakistán" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Polonia" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "San Pierre y Miquelon" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Puerto Rico" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "Profesiones" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "Territorio Palestino" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Portugal" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Paraguay" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Qatar" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Reunión" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Rumania" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "Vieja escuela de ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "Serbia" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Federación Rusa" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Ruanda" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Arabia Saudí" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Islas Salomón" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Seychelles" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Sudán" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Suecia" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Singapur" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "Santa Helena" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Eslovenia" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Islas Svalbard y Jan Mayen" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "República de Eslovaquia" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Sierra Leona" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Somalia" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Surinam" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "Sudán del Sur" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "Santo Tomé y Principe" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Antigua URSS" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Siria" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Swazilandia" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Islas Turks y Caicos" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Chad" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "Dispositivos de comunicación de internet" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "Territorios Franceses del Sur" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Tailandia" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Tayikistán" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Timor Oriental" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Túnez" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Turquía" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "Viajes y turismo" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Trinidad y Tobago" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Tanzania" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Ucrania" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Reino Unido" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "Estados Unidos" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Uruguay" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Uzbekistán" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Ciudad Estado del Vaticano" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "San Vicente y las Granadinas" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "Islas Virgenes Británicas" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "Islas Virgenes Norteamericanas" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "Islas Wallis y Futuna" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "Entretenimiento adulto" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Yemen" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Yugoslavia" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Sudáfrica" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Zambia" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "No se ha podido conectar al bus de la sesión" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "No se pudo completar NombreTieneDueño" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "No se pudo completar la orden" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "acceso remoto" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "complemento de acceso remoto usando DBUS" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "No se pudo conectar la conexión al bus: %s\n" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Imposible adquirir %s: %s\n" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Lista de caracteres" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "Baneos" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "Exenciones" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "Exención" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "Invitados" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Invitar" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "Silenciados" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "Silenciar" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "Copiar máscara" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "%s el %s por %s" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "Copiar entrada" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "No conectado." + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "Debe seleccionar algún baneado." + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "¿Seguro de que desea eliminar todos los elementos de la lista de %s?" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "Tipo" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Máscara" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "Por" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Fecha" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Sólo puede abrir la lista de baneos en una pestaña de canal." + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "Lista de baneos (%s) - %s" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Quitar" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Mantener" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Refrescar" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Mostrando %d/%d usuarios en %d/%d canales." + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Seleccione un archivo de salida" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "_Unirse al canal" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "_Copiar el nombre del canal" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "Copiar el texto del _tema" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "Lista de canales (%s) - %s" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "_Buscar" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "_Descargar lista" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "Guardar _lista..." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "Mostrar solo:" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "canales de" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "a" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "usuarios." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "Buscar en:" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Nombre del canal" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "Tipo de búsqueda:" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "Búsqueda simple" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "Patrón (con comodines)" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "Expresión regular" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Buscar:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Enviar archivo a %s" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "Ese archivo no se puede reanudar." + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "No se pudo acceder al archivo: %s\n%s.\nNo es posible reanudar." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "El archivo del directorio de descarga es más grande que el archivo ofrecido. No es posible reanudar." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "No se puede reanudar el mismo archivo desde dos personas." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "Subidas y descargas - %s" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Estado" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Archivo" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "Tiempo" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Ambos" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "Subidas" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "Descargas" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "Detalles" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "Archivo:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "Dirección:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Abortar" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Aceptar" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Reanudar" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "Abrir carpeta..." + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "Lista de charlas DCC - %s" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Recibido" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Enviado" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "Hora de inicio" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "Añadir" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Borrar" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Cancelar" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Guardar" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "No conectar automáticamente a los servidores" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "Usar un directorio de configuración diferente" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "No cargar automáticamente ningún complemento" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "Mostrar directorio de carga automática de complementos y scripts" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "Mostrar directorio de configuración de usuario" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "Abrir una dirección irc://server:port/channel?key" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "Ejecutar orden:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "Abrir URL o ejecutar una orden en una sesión existente de HexChat" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Iniciar minimizado. Nivel 0=Normal 1=Iconificado 2=Bandeja" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "nivel" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "Mostrar información de la versión" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "Error al abrir la fuente:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "El buffer de búsqueda esta vacio.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d bytes" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Cola de envío de red: %d bytes" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "La acción Run Command ejecuta los datos de Data 1 como si hubieran sido escritos en el cuadro de entrada, donde se introducen las secuencias. Por lo tanto, puede contener texto (que se enviará al canal/persona), órdenes de sistema o de usuario. Cuando se ejecuta, se usan los caracteres \\n de Data 1 para delimitar órdenes, por lo que es posible ejecutar más de una orden. Si quiere poner un caracter \\ en el texto, entonces introduzca \\\\" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "La orden Change Page alterna entre las páginas del selector de canal. Configure en Data 1 la página a la que desea cambiar. Si Data 2 no está configurado, el cambio será relativo a la posición actual. Configure Data 1 en auto para cambiar a la página con la actividad más reciente e importante (primero privados, después canales con resaltado, canales con diálogo, canales con otros datos)" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "La ordenInsert in Buffer insertará el contenido de Data 1 en la posición actual del cursor, en la entrada donde esté tecleando" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "La orden Scroll Page desplaza el cuadro de texto arriba o abajo, una página o una línea. Configure Data 1 como Top, Bottom, Up, Down, +1 ó -1." + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "La orden Set Buffer introduce el contenido de Data 1 en la entrada donde esté tecleando" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "La orden Last Command pone en la entrada la última orden ingresada, es lo mismo que presionar la tecla arriba en en la línea de órdenes" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "La orden Next Command pone en la entrada la siguiente orden ingresada, es lo mismo que presionar la tecla abajo en en la línea de órdenes" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "Esta orden cambia el texto en la entrada para completar una orden o apodo incompleto. Si se configura Data 1, entonces la doble tabulación en una cadena seleccionará el último apodo, no el siguiente" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "Esta orden desplaza hacia arriba y abajo la lista de apodos. Si se configura Data 1 con algo, entonces se desplazará hacia arriba, sino se desplazará hacia abajo" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "Esta orden comprueba la última palabra introducida en la entrada contra la lista de reemplazos y la reemplaza si encuentra una coincidencia" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "Esta orden mueve una vez la pestaña superior hacia la izquierda" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "Esta orden mueve una posición la pestaña superior hacia la derecha" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "Esta orden mueve la familia actual de pestañas hacia la izquierda" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "Esta orden mueve la familia actual de pestañas hacia la izquierda" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "Colocar la linea de entrada en el historial pero sin enviarla al servidor" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "Ha ocurrido un error cargando la configuración de las combinaciones de teclas" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "Selecciona una fila para obtener ayuda en su acción." + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "Atajos de teclado - %s" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "No se puede escribir en ese archivo." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "No se puede leer ese archivo." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "Esa máscara ya existe." + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Privado" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Aviso" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "No ignorar" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "¿Seguro de que quieres borrar todos los ignorados?" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "Introduzca la máscara que quiere ignorar:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "Lista de ignorados - %s" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Estadísticas de ignorados:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Canal:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privado:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Aviso:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Invitar:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "Añadir..." + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "Nombre de canal muy corto, pruebe de nuevo." + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "Conexión completa - %s" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "Conexión a %s completa." + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "En la ventana de la lista de servidores, no se ha introducido ningún canal (sala de chat) en esta red al que unirse automáticamente." + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "¿Qué desea hacer después?" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "_Nada, me uniré a un canal después." + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "Unirme a este canal:" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Si conoce el nombre del canal al que desea unirse, introdúzcalo aquí." + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "Abrir la lista de canales." + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "Recuperando la lista de canales, puede tardar un minuto o dos." + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "Mostrar siempre este diálogo después de conectar." + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "Diálogo con" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "El tema de %s es: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "No hay tema establecido" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "Este servidor aún tiene %d canales o diálogos asociados en él. ¿Desea cerrarlos todos?" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "¿Salir de HexChat?" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "No preguntar la próxima vez." + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Estás conectado a %i redes de IRC." + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "¿Estás seguro que quieres salir?" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "Algunas transferencias todavía están activas." + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "_Minimizar en la bandeja" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "Insertar atributo o código de color" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>Negrita</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>Subrayado</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "<i>cursiva</i>" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "Normal" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "Colores 0-7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "Colores 8-15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "_Configuración" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "_Registrar en el disco" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "Recargar registro de _mensajes" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "Eliminar _colores" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "_Ocultar mensajes de entrada/salida" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "_Alertas extra" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "Pitar en _mensajes" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "Parpadear _icono en la bandeja" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "Parpadear en la _barra de tareas" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "_Desanclar" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "_Cerrar" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "¡El límite de usuarios debe ser un número!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "Filtrar colores" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "Sin mensajes externos" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "Protección del tema" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "Solo para invitados" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "Moderado" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "Lista de baneos" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Palabra clave" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "Límite de usuarios" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Introduzca el apodo nuevo:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "No se encontraron resultados." + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "Finalizó la búsqueda o no se encontró." + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "_Resaltar todo" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "Resalta todos los resultados y subraya el resultado actual." + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "Mayúsculas y minúsculas" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "Realiza una búsqueda sensible a mayúsculas y minúsculas." + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "Expresión regular" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "Considera la cadena de búsqueda como una expresión regular." + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Host desconocido" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "Cuenta desconocida" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Desconocido" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Nombre real:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "Usuario:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "Cuenta:" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "País:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "Servidor:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "hace %u minutos" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "Último mensaje:" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "Mensaje de ausencia:" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "%d apodos seleccionados." + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "La barra de menú ahora está oculta. Puede volver a mostrarla presionando Ctrl+F9 o pulsando el botón derecho en una parte libre del área de texto principal." + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "Abrir enlace en el navegador" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "Copiar URL seleccionada" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Unirse al canal" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "Salir del canal" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "Ciclar canal" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "_Entrar automáticamente" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "Entrar automáticamente al canal" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "_Conectar automáticamente" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "Menú de usuario - %s" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "Editar este menú" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "Línea de marcador deshabilitada." + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "Línea de marcador no configurada." + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "Línea de marcador reiniciada manualmente." + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "Línea de marcador reiniciada porque excedió el límite del registro de mensajes." + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "Línea de marcador reiniciada por la orden CLEAR." + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "Estado desconocido de la línea de marcador." + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "Recuperar lista de canales" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr " ha sido programado sin soporte para complementos." + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "Órdenes de Usuario - Códigos especiales:\n\n%c = canal actual\n%e = nombre de red actual\n%m = información de máquina\n%n = su apodo\n%t = hora/fecha\n%v = versión de HexChat\n%2 = palabra 2\n%3 = palabra 3\n&2 = palabra 2 hasta el final de la línea\n&3 = palabra 3 hasta el final de la línea\n\nej:\n/cmd juan hola\n\n%2 sería «juan»\n&2 sería «juan hola»." + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "Botones de lista de usuarios - Códigos especiales:\n\n%a = todos los apodos seleccionados\n%c = canal actual\n%e = nobre de la red actual\n%h = nombre de host del apodo seleccionado\n%m = información de máquina\n%n = su apodo\n%s = apodo seleccionado\n%t = hora/fecha\n%u = cuentas de los usuarios seleccionados" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "Botones de diálogo - Códigos especiales:\n\n%a = todos los apodos seleccionados\n%c = canal actual\n%e = nobre de la red actual\n%h = nombre de host del apodo seleccionado\n%m = información de máquina\n%n = su apodo\n%s = apodo seleccionado\n%t = hora/fecha\n%u = cuentas de los usuarios seleccionados" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "Respuestas CTCP - Códigos especiales:\n\n%d = datos (el ctcp completo)\n%e = nobre de la red actual\n%m = información de máquina\n%s = apodo que envió el ctcp\n%t = hora/fecha\n%2 = palabra 2\n%3 = palabra 3\n&2 = palabra 2 hasta el final de la línea\n&3 = palabra 3 hasta el final de la línea\n\n" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "Manejadores de URL - Códigos especiales:\n\n%s = cadena de la URL\n\nPoniendo una ! delante de la orden\nindica que se debe enviar a una\nshell en lugar de a HexChat" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "Órdenes definidas por el usuario - %s" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "Menú emergente de lista de usuarios - %s" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "Reemplazar - %s" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "Reemplazar con" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "Manejadores de URL - %s" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "Botones de la lista de usuarios - %s" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "Botones de diálogo - %s" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "Respuestas CTCP - %s" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "He_xChat" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "Li_sta de redes" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "_Nuevo" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "Pestaña de servidor" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "Pestaña de canal" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "Ventana de servidor" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "Ventana de canal" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "Cargar comp_lemento o script" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "_Salir" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "_Ver" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "Barra de _menú" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "Barra de _tema" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "Lista de _usuarios" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "Botone_s de lista de usuarios" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "B_otones de modo del canal" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "Selector de _canal" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "Pes_tañas" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "Á_rbol" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "Medidores de _red" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Apagar" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "Gráfico" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "Pantalla completa" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "_Servidor" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "_Desconectar" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "_Reconectar" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "Unirse a un canal" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "_Lista de canales" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "_Ausencia marcada" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "Menú de _usuario" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "Configuración" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "_Preferencias" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "Reemplazos automáticos" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "Respuestas CTCP" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "Botones de diálogo" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "Atajos de teclado" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "Texto de eventos" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "Manejadores de URL" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "Órdenes de usuario" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "Botones de lista de usuarios" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "Ventana de lista de usuarios" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "_Ventana" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "Lista de baneos" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "Charla directa" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "Transferencias de archivos" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "Lista de amigos" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "Lista de ignorados" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "Com_plementos y scripts" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "_Registro en bruto" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "Capturador de _URL" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "Reiniciar la línea de marcador" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "Ir a la línea de marcador" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "_Copiar selección" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "_Limpiar texto" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "Guardar texto" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "Buscar" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "Buscar texto" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "Buscar siguiente" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "Buscar anterior" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "A_yuda" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "_Contenidos" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "_Acerca de" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "_Adjuntar" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Nombre" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Visto por última vez" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "Fuera de línea" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Nunca" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "hace %d minutos" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "Hace una hora" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "Hace %d horas" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "En línea" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "Introduzca el apodo a añadir:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "Notificar en estas redes:" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "Se acepta una lista de redes separadas por comas." + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "Lista de amigos - %s" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "Abrir diálogo" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "Mensaje resaltado de: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "Mensaje en el canal de: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "Archivo de: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "Invitado al canal por: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "Aviso de: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "Mensaje privado de: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "Conectado a %u redes y %u canales - %s" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "_Restaurar ventana" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "_Ocultar ventana" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "_Parpadeo encendido" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "Mensaje en el canal" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "Mensaje privado" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "Mensaje resaltado" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "_Cambiar estado" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "_Ausente" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "_Conectado" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "Mensaje resaltado de: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "%u mensajes resaltados, el último de: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "Mensaje en el canal de: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "%u mensajes en el canal. - %s" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "Mensaje privado de: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "%u mensajes privados, el último de: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "Archivo de: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "%u archivos, el último de: %s (%s) - %s" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Versión" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Descripción" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Seleccione qué complemento o guion cargar" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "Complementos y guiones - %s" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "_Cargar..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "_Decargar" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "_Recargar" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "Guardar como..." + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "Registro en bruto (%s) - %s" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "Limpiar el registro en bruto" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Nueva red" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "¿Realmente desea eliminar la red «%s» y todos sus servidores?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "El nombre de usuario no puede estar en blanco." + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "No puede tener un apodo en blanco." + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "Debe tener dos apodos únicos." + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "La manera en que se identifica al servidor. Para usar un método distinto utilice las órdenes de conexión." + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "Editar %s - %s" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "Servidores" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "Unirse automáticamente a los canales" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "Órdenes de conexión" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "%n=Apodo\n%p=Contraseña\n%r=Nombre real\n%u=Nombre de usuario" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "Clave (contraseña)" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "_Editar" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "Conectar únicamente al servidor seleccionado" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "No recorrer todos los servidores cuando la conexión falle." + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "Conectar a esta red automáticamente" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "Eludir servidor proxy" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "Usar SSL en todos los servidores de esta red" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "Aceptar certificados SSL inválidos" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "Usar información global de usuario" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "Apodo:" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "Segunda opción:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "Nombre rea_l:" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "Nombre de _usuario:" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "Método de inicio de sesión:" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Contraseña:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "Contraseña usada para iniciar sesión. En caso de duda, dejar en blanco." + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "Juego de caracteres:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "Lista de redes - %s" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "Informacion de usuario" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "Tercera opción:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Redes" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "Saltar lista de redes al iniciar" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "Mostrar solo favoritos" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "_Editar..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "Ordenar" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "Ordena la lista de redes en orden alfabético. Use las teclas Mayús+Arriba y Mayús+Abajo para mover una fila." + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "_Favorita" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "Marcar o desmarcar esta red como favorita." + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "C_onectar" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "Afrikáans" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Albanés" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "Amárico" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "Asturiano" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Azerí" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "Vasco" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Bielorruso" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Búlgaro" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "Chino (simplificado)" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "Chino (tradicional)" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "Checo" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "Danés" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "Holandés" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "Inglés (Británico)" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "Inglés" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Estonio" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "Finlandés" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "Francés" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "Galicio" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "Alemán" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "Griego" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "Gujarati" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "Hindi" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "Húngaro" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "Indonesio" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "Italiano" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "Japonés" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "Canarés" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "Kinyarwanda" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "Coreano" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "Letón" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "Lituano" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "Macedonio" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Malayo" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "Malayalam" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "Noruego (Bokmål)" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "Noruego (Nynorsk)" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "Polaco" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "Portugués" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "Portugués (Brasileño)" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "Punjabi" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "Ruso" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "Serbio" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "Eslovaco" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "Eslovenio" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "Español" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "Sueco" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Tailandés" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "Turco" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "Ucraniano" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Vietnamita" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "Valonia" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "General" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "Idioma:" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "Fuente principal:" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Fuente:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "Cuadro de texto" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "Apodos coloreados" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "Dar a cada persona en el IRC un color diferente" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "Sangría en apodos" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "Justificar los apodos a la derecha" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "Mostrar línea de marcador" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "Insertar una línea roja después del último texto leído." + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Imagen de fondo:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "Configuración de trasparencia" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "Opacidad de ventana:" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "Marcas de tiempo" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "Habilitar marcas de tiempo" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "Formato de marcas de tiempo:" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "Ver strftime del artículo MSDN para más información." + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "Ver strftime en la página del manual para más información." + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "Barra de título" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "Mostrar modos de canal" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "Mostrar número de usuarios" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "Última orden dada" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "Cuadro de entrada" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "Usar fuentes y colores del cuadro de entrada" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "Renderizar colores y atributos" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "Mostrar cuadro de apodos" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "Mostrar iconos de modo en el cuadro de apodos" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "Corrector ortográfico" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "Diccionarios que se usarán:" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "Usar códigos de idioma (como en «%LOCALAPPDATA%\\enchant\\myspell\\dicts»).\nSeparar varias entradas con comas." + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "Usar códigos de idioma. Separar varias entradas con comas." + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "Completar apodos" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "Sufijo al completar el apodo:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "Orden al completar el apodo:" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "Cantidad al completar el apodo:" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "Límite de apodos para para comenzar a listar en lugar de completar" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "apodos." + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "Gráfico" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "A-Z, operadores al principio" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "Z-A, operadores al final" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "Desordenada" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "Izquierda (superior)" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "Izquierda (inferior)" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "Derecha (superior)" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "Derecha (inferior)" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Arriba" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Abajo" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Oculto" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "Lista de usuarios" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "Mostrar nombres de host en la lista de usuarios" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "Usar fuentes y colores del cuadro de texto" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "Mostrar iconos en modos de usuario" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "Usar iconos gráficos en lugar de símbolos en la lista de usuarios." + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "Colorear apodos en la lista de usuarios" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "Colorear los apodos igual que en la charla." + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "Mostrar contador de usuarios en canales" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "Lista de usuarios ordenada por:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "Mostrar lista de usuarios en la parte:" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "Seguimiento de ausencia" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "Seguir el estado de ausencia de los usuarios y marcarlos con un color diferente" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "En canales con menos de:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "Comportamiento del doble clic" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "Gadgets extra" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "Medidor de lag:" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "Medidor de aceleración:" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Ventanas" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Pestañas" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "Siempre" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "Solo pestañas solicitadas" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "Automático" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "En una pestaña nueva" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "En la pestaña actual" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "Árbol" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "Cambiar tipo:" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "Abrir los mensajes del servidor en una pestaña nueva" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "Abrir los mensajes privados en una pestaña nueva" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "Ordenar las pestañas en orden alfabético" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "Mostrar iconos en el árbol de canales" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "Mostrar líneas punteadas en el árbol de canales" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "Usar la rueda del ratón para cambiar entre pestañas" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "Haga clic con el botón del medio para cerrar la pestaña" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "Texto pequeño" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "Enfocar nuevas pestañas:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "Ubicación de avisos:" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "Mostrar selector de canal en:" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "Reducir las pestañas a:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "letras." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "Pestañas o ventanas" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "Abrir canales en:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "Abrir diálogos en:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "Abrir utilidades en:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "¿Abrir DCC, Ignorar, Avisos etc en pestañas o en ventanas?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "Mensajes" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "Registro de mensajes" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "Pedir confirmación" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "Preguntar la carpeta de descarga" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "Guardar sin interacción" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "Archivos y directorios" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "Aceptar archivos automáticamente:" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Descargar archivos en:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "Mover archivos completados a:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "Guardar el apodo en los nombres de archivo" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "Abrir ventanas de diálogo automáticamente" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "Ventana de envío" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "Ventana de recepción" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "Ventana de charla" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "Velocidad máxima de transferencia de archivos (Byte por segundo)" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "Por archivo subido:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "Velocidad máx. de transferencia por archivo" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "Por archivo descargado:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "Para todas las subidas:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "Velocidad máx. de todas las transferencias" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "Para todas las descargas:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "Alertas" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "Mostrar notificaciones de:" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "Parpadeo del icono en la bandeja:" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "Parpadeo en barra de tareas:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "Emitir un pitido:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "Reproducir el sonido «Notificación de mensaje instantáneo» en las alertas seleccionadas" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "Reproducir el sonido «message-new-instant» de freedesktop.org en las alertas seleccionadas" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "Reproducir un sonido GTK en las alertas seleccionadas" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "Omitir alertas cuando esté ausente" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "Omitir alertas cuando la ventana esté activa" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "Comportamiento de la bandeja" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "Activar el icono en la bandeja del sistema" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "Minimizar en la bandeja" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "Al cerrar, minimizar en la bandeja" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "Cambiar el estado de ausencia automáticamente" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "Cambia automáticamente el estado cuando se oculte en la bandeja." + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "Mostrar notificaciones solo cuando esté oculto o iconificado" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "Mensajes resaltados" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Se resaltarán los mensajes que mencionan su apodo, pero también se pueden resaltar:" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "Resaltar las siguientes palabras:" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "No resaltar estos apodos:" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "Resaltar siempre estos apodos:" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Separar varias palabras con comas.\nPuede usar comodines." + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "Rebotar icono en la bandeja:" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "Mensajes predefinidos" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "Al salir:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "Al abandonar un canal:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "Al marcar como ausente:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "Ausencia" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Mostrar ausencia solo una vez" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "Mostrar mensajes idénticos de ausencia solo una vez." + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "Desmarcar ausencia automáticamente" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "Desmarcar ausencia antes de enviar mensajes." + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "Varios" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "Mostrar los MODOs en bruto" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "WHOIS en las notificaciones" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "Envía /WHOIS cuando un usuario de la lista de notificaciones se conecta." + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "Ocultar los mensajes de entrada y salida" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "Por defecto oculta los mensajes cuando algien entra o sale del canal." + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "Ocultar los mensajes de cambio de apodo" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "*!*@*.host" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "*!*@dominio" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "*!*usuario@*.host" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "*!*usuario@dominio" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "Comportamiento de copia automática" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "Copiar automáticamente el texto seleccionado" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "Copia el texto seleccionado al portapapeles cuando se suelta el botón izquierdo del ratón. Como alternativa, usar Ctrl+Mayús+C para copiar el texto." + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "Incluir automáticamente marcas de tiempo" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "Incluir automáticamente las marcas de tiempo de las líneas de texto copiadas. Como alternativa, mantener presionada la tecla Mayús al seleccionar el texto." + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "Incluir automáticamente información de color" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "Incluir automáticamente la información de color en las líneas de texto copiadas. Como alternativa, mantener presionada la tecla Ctrl al seleccionar el texto." + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "Nombre real:" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "Fuentes alternativas:" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "Separa varias entradas con comas y sin espacios entre ellas." + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "Mostrar listas en modo compacto" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "Usar menos espaciado entre la lista de usuarios y las filas del árbol de canales." + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "Usar la hora del servidor si se puede" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "Mostrar marcas de tiempo obtenidas del servidor si soporta la extensión time-server." + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "Reconectar automáticamente a los servidores al desconectarse" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "Retardo de reconexión automática:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "Retardo de unión automática:" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "Tipo de baneo:" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "Intentar usar esta máscara al banear o silenciar. (requiere irc_who_join)" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Registros" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "Mostrar registro de mensajes de sesiones anteriores" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "Líneas de registro:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "Activar el registro de conversaciones en el disco" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "Nombre del archivo de registro:" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Servidor %c=Canal %n=Red." + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "Insertar marcas de tiempo en los registros" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "Formato de las marcas de tiempo del registro:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URLs" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "Activar registro de URLs en el disco" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "Activar capturador de URL" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "Número máximo de URLs a capturar:" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(Deshabilitado)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "SOCKS4" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "SOCKS5" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "Auto" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "Todas las conexiones" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "Solo servidor IRC" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "Solo DCC" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "Su dirección" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "Asociar a:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "Solo es útil en computadoras con múltiples direcciones." + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "Transferencias de archivos" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "Obtener mi IP del servidor IRC" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "Preguntar su dirección real al servidor IRC. ¡Úselo si tiene una dirección del tipo 192.168.*.*!" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "Dirección IP DCC:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "Reclamar esta dirección cuando ofrezca archivos." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "Primer puerto de envío DCC:" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "Último puerto de envío DCC:" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "!Dejar los puertos a cero para el rango completo." + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "Servidor proxy" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "Nombre de host:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Puerto:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Tipo:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "Usar el servidor proxy para:" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "Autenticación del servidor proxy" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "Usar autenticación (solo HTTP o SOCKS5)" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "Nombre de usuario:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "Servidor Identd" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "Habilitado" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "El servidor responderá con el nombre de usuario de la red" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "Debe tener permisos para escuchar en este puerto. Si no es 113 (0 por defecto), entonces deberá configurar el puerto de reenvío." + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "Seleccionar archivo de imagen" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "Seleccionar carpeta de descargas" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Seleccionar fuente" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Explorar..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "Abrir carpeta de datos" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Seleccionar color" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "Colores de texto" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "Colores de mIRC: " + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "Colores locales:" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Primer plano:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Fondo:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "Texto seleccionado" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "Colores de la interfaz" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "Dato nuevo:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "Marcador:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "Mensaje nuevo:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "Ausencia:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "Mensaje resaltado:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "Corretor:" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "Eliminar colores" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Evento" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "Archivo de sonido" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "Seleccione un archivo de sonido" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "Archivo de sonido:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "_Explorar..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "_Reproducir" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Interfaz" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "Apariencia" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Cuadro de entrada" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Lista de usuarios" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "Selector de canal" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Colores" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Charlando" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "Sonidos" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "Avanzado" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Configuración de red" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Transferencias de archivos" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "Identd" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Categorías" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "¡No puede colocar el árbol en la parte superior o inferior!\nPor favor cambie al modo <b>Pestañas</b> en el menú <b>Ver</b>." + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "La opción de nombre real no puede estar en blanco. Retroceda a «nombre real»." + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Se cambiaron algunas configuraciones que requieren un reinicio para tener efecto." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*ADVERTENCIA*\nAceptar automáticamente DCC hacia su directorio de usuario\npuede ser peligroso y es explotable. Por ejemplo: Alguien\npuede enviarle un archivo .bash_profile" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "Preferencias - %s" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "<i>(sin sugerencias)</i>" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "Más..." + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "Añadir «%s» al diccionario" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "Ignorar todo" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "Sugerencias de ortografía" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "realzar error en el idioma: %s" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "Ha ocurrido un error analizando la cadena" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Esta señal sólo ha pasado %d argumentos, $%d es inválido" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "Imprimir archivo de textos" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ Número" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Editar eventos" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "Cargar desde..." + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Probar todo" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "Ok" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "Capturador de URL - %s" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Limpiar la lista" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Copiar URL seleccionada" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Copiar" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Guardar lista en un archivo" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d ops, %d total" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "Abrir una URL irc://servidor:puerto/canal" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "Sysinfo: No se pudo obtener información. No soportado o hubo un error." + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "Sysinfo: No hay información con ese nombre\n" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "Sysinfo: %s está configurado para: %d\n" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "Sysinfo: Ajustes válidos son: anunciar y ocultar_* para cada pieza de información. Por ejemplo, ocultar_os. Sin un valor se mostrará la configuración actual (o por defecto).\n" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "Sysinfo: Nombre de variable no válida\n" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "%s complemento cargado\n" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "%s complemento descargado\n" diff --git a/hexchat/po/et.po b/hexchat/po/et.po new file mode 100644 index 0000000..3308b66 --- /dev/null +++ b/hexchat/po/et.po @@ -0,0 +1,6257 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Ekke Vasli <ekke@chamber.ee>, 2001 +# Ilmar Kerm <ikerm@hot.ee>, 2002 +# jasva, 2014 +# jasva, 2014 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-03 20:10+0000\n" +"Last-Translator: TingPing <tingping@tingping.se>\n" +"Language-Team: Estonian (http://www.transifex.com/hexchat/hexchat/language/et/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: et\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "HexChat" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "IRC klient" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "HexChat on lihtne ja paljude võimalustega IRC klient. See võimaldab turvaliselt ühenduda mitme võrguda samaaegselt ja suhelda inimestega privaatselt või liituda vestluskanalitega, kasutades selleks kohandatavat rakendust. Samuti on võimalus failivahetuseks." + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "HexChat toetab kasutamiseks: DCC, SASL, hoiatusi, logide koguminst, kohandatud teemasid ja Python/Perl skripte." + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "Vestle teiste kasutajatega internetis" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "Ava turvarežiim" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "HexChat teemahaldur" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "On tegemist" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Lahkun" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Võrk" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<tühi>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Kanal" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Ootamine" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Aktiivne" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Ei õnnestunud" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Valmis" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Ühenda" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Katkestatud" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "Puudub ligipääs failile %s\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Viga" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s pakub sulle faili \"%s\". Kas soovid selle vastu võtta?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "Ei ole ühtegi aktiivset DCCd\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "_Ava dialoogiaken" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "_Saada fail" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "_Kasutaja info (Whois)" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "_Lisa sõprade nimekirja" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "_Ignoreeri" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "O_peraatori toimingud" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Tee operaatoriks" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Tee mitteoperaatoriks" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "Anna hääleõigus" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "Võta hääleõigus" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Viska välja/bänni" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Viska välja" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "Bänni" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "KikkBänni" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Lahku kanalist" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Liitu kanaliga..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "Kanal, millega liituda:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Serverite lingid" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Pingi serverit" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Peida versioon" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Op" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "tsau" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Põhjus %s väljaviskamiseks:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "Dialoog" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "KesOn" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Saada" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Vestlus" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Puhasta" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "Sul puuduvad kirjutamisõigused asukohta %s. Sellest sessioonist ei salvestata midagi." + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* root-kasutajana IRCus istumine on lollus! Sa peaksid\n looma tavakasutaja konto ja sellega sisse logima.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "JAH " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "EI " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "%s ujutab sind CTCP päringutega üle, ignoreerin kasutajat %s\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "%s uputab sind üle massiliste sõnumitega, mistõttu lülitame gui_autoopen_dialog VÄLJA.\n" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s onlain\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s offlain\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Pole ühinetud ühegi kanaliga. Proovi /join #<kanal>\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Pole ühendatud. Proovi /server <host> [<port>]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "Server %s eksisteerib juba võrguloendis %s.\n" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "Server %s on võrkuda nimekirja %s lisatud.\n" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Sa oled juba eemal: %s\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "Sa oled juba tagasi.\n" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "Vajan käivitamiseks programmi /bin/sh!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "Võimalikud käsud: " + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "Kasutaja tekitatud käsud: " + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "Pluginate poolt tekitatud käsud: " + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Rohkem infot saad käsuga /HELP <käsk>, või proovi /HELP -l" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Tundmatut parameetrit '%s' ignoreeriti." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "Vaigistamine pole antud serveris toetatud." + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "Sellist pluginat ei leitud.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "See plugin ei taha end eemaldada.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <nimi> <tegevus>, lisab kasutajate nimekirja alla uue nupu" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "ADDSERVER <UusVõrk> <uusserver/6667> lisab uue võrgu koos uue serveriga võrguloendisse." + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <käsk>, saadab käsu kõikidele kanalitele, kus oled" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "ALLCHANL <käsk>, saadab käsu kõikidesse kanalitesse antud serveris" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <käsk>, saadab käsu kõikidele serverite, kus oled" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "BACK, oled tagasi (mitte eemal)" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <mask> [<keelu tüüp>], keelab hosti maskiga sobivatel kasutajatel kanaliga liitumise. Kui mõni selline kasutaja on kanalis, siis see käsk ei viska neid automaatselt välja (selleks vajad chanop-õigusi)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "" + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <kood>, leiab koodi järgi riigi nime, näiteks ee = eesti" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <kasutaja> <teade>, saadab kasutajale CTCP teate. Levinud teateid on näiteks VERSION ja USERINFO" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "CYCLE [<kanal>], Lahkub aktiivsest või antud kanalist ja naaseb kohe" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <kasutaja> - võta kasutajalt pakutav fail vastu\nDCC SEND [-maxcps=#] <kasutaja> <fail> - saada kasutajale fail\nDCC PSEND [-maxcps=#] <kasuatja> <fail> - saada fail passiivses režiimis\nDCC LIST - näita DCC'de nimekirja\nDCC CHAT <kasutaja> - paku kasutajale DCC vestlust\nDCC PCHAT <kasutaja> - paku kasutajale passivses režiimis\n DCC vestlust\nDCC CLOSE <tüüp> <kasutaja> <fail> näide:\n /dcc close send toomas fail.tar.gz" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <kasutaja>, eemaldab aktiivse kanali kasutajalt chanhalf-op õiguse (vajab chanop õigust)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <nimi>, kustutab kasutajate nimekirja aluse nupu" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <kasutaja>, eemaldab aktiivse kanali kasutajalt chanop õiguse (vajab chanop õigust)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <hüüdnimi>, võtab kasutajalt hääleõiguse" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, katkestab ühenduse serveriga" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <tekst>, väljastab teksti samas masinas" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <programm>, käivitab programmi. Kui -o lipp on kasutusel, siis saadetakse programmi väljund kanalisse, muul juhul näidatakse ainult sulle endale." + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, saadab protsessile SIGCONT signaali" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9], tapab EXEC käsuga käivitatud protsessi. Kui -9 võti on antud, saadetakse protsessile SIGKILL." + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, saadab protsessile SIGSTOP signaali" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, saadab andmeid protsessi sisendisse" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, tühjendab serveri saatejärjekorra" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <host> [<port>], loob proksiühenduse hosti kaudu, vaikeport on 23" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <kasutaja>, annab kasutajale chanhalf-op õiguse (vajab chanop õigust)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <parool>, identifitseerib sind nickservile." + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <mask> <tüübid..> <..>\n mask - hostmask mida ignoreerida - näiteks: *!*@*.starman.ee\n tüübid - andmete tüübid, mida eirata. võib valida ühe või rohkem:\n PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n options - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <kasutaja> [<kanal>], kutsub kasutaja kanalisse, vaikimisi aktiivsesse kanalisse (vajab chanop õigust)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <kanal>, ühineb kanaliga" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, teeb sundkorras võrgu viite kontrolli" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <fail>, laeb plugina või skripti" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, võtab kõigilt kanalis viibijatelt pool-operaatori õigused (vajab kanali operaatori õigusi)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, võtab kõigilt kanalist viibijatelt operaatori õigused (vajab kanali operaatori õigusi)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <tegevus>, saadab tegevuse aktiivsesse kanalisse (tegevused kirjutatakse kolmandas isikus, näiteks /me hüppab)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, viskab kanalist välja kõik peale sinu (vajab chanop õigust)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, annab kõigile aktiivses kanalis olijatele chanop õigused (vajab chanop õigust)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <kasutaja> <sõnum>, saadab CTCP teate" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <hostinimi> [<port>]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <hüüdnimi>, muudab su hüüdnime" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [-n võrk1[,võrk2,...]] [<hüüdnimi>], kuvab või täiendab märguandenimekirja" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <kasutaja>, annab kasutajale chanop üigused (vajab chanop'i)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<kanal>] [<põhjus>], lahkub kanalist. Vaikimisi hetkel avatud kanalist" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <hüüdnimi|kanal>, saadab CTCP pingi kasutajale või kanalisse" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "" + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<põhjus>], katkestab ühenduse serveriga" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <tekst>, saadab teksti toorel kujul serverisse" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<host>] [<port>] [<salasõna>], võib kasutada ka lihtsalt kujul /RECONNECT, et uuesti samasse serverisse ühenduda, või /RECONNECT ALL, et luua kõigisse serveritesse uuesti ühendus." + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<host>] [<port>] [<salasõna>], võib kasutada ka lihtsalt kujul /RECONNECT, et uuesti samasse serverisse ühenduda, või /RECONNECT ALL, et luua kõigisse serveritesse uuesti ühendus." + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <tekst>, saadab teksti aktiivsesse aknasse" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <hüüdnimi> [<failinimi>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <host> <port> <kanal>, ühendub serverisse ja liitub kanaliga." + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <host> <port> <kanal>, ühendab serverisse ja liitub kanaliga" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <host> [<port>] [<salasõna>], loob serveriga ühenduse, vaikimisi port on 6667" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<teema>]. määrab uue teema või näitab praegust" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "\nTRAY -f <taimaut> <fail1> [<fail2>] Vaheta kahe salveikooni vahel.\nTRAY -f <filename> Määra üks kindel ikoon.\nTRAY -i <number> Vaheta salveikooni seesmise ikooniga.\nTRAY -t <text> Määra salveikooni abitekst.\nTRAY -b <peakliri> <tekst> Määra salve mullike." + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <mask> [<mask>...], võtab määratud maskidelt keelu maha." + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <mask> [QUIET]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <nimi>, eemaldab plugina või skripti" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "" + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, avab url'i brauseris" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "USELECT [-a] [-s] <hüüdnimi1> <hüüdnimi2> jne, märgistab kasutajate nimekirjas hüüdnime(d)" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <kasutaja>, annab kasutajale voice staatuse (vajab chanop õigust)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <sõnum>, saadab sõnumi kõikidele kanalitele, kus oled" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <sõnum>, saadab sõnumi kõigile aktiivse kanali chanop-idele" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "Kasutus: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nSelle käsu kohta pole abimaterjale.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "Sellist käsku pole olemas\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "Halvad argumendid kasutaja määratud käsule.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "Liiga rekursiivne käsk, katkestan." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Oled sa kindel et selle serveri selles pordis töötab SSL?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "Ei saa lahendada hostinime %s\nPalun kontrolli oma IP sätteid!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "Proksi kaudu ühendumine ebaõnnestus.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Lähen võrgu %s järgmise serveri juurde...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "Hoiatus: Tundmatu kooditabel \"%s\". Võrgu %s sõnumeid ei kodeerita ümber." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "" + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "" + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%UKanal Liikmeid Teema" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "" + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "" + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "" + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "" + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "" + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "" + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "" + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "" + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "" + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "" + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "" + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "" + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tMärguandenimekiri on tühi." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "" + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "" + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "" + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "" + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "Logi laetud failist" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** LÕPETAN LOGIMISE %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** ALUSTAN LOGIMIST %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "Vasakpoolne sõnum" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "Parempoolne sõnum" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "IP aadress" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Kasutajanimi" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "Liituja kasutajanimi" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "Liitutav kanal" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "Kasutaja host" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Kasutajanimi" + +#: src/common/text.c:980 +msgid "The action" +msgstr "Tegevus" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "Moodi sümbol" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "Tuvastatud tekst" + +#: src/common/text.c:987 +msgid "The text" +msgstr "Tekst" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "Teade" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Serveri nimi" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Endine nimi" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Uus nimi" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "Kasutaja, kes muutis teemat" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Teema" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "Väljaviskaja nimi" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "Kasutaja, kes välja visati" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "Kanal" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "Põhjus" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "Lahkuja nimi" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "Aeg" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "Looja" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Nimi" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Põhjus" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Host" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "Kellelt see tuleb" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "Aeg x.x formaadis (vaata allapoole)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "Sihtkanal" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "Heli" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "Inimese nimi" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "CTCP sündmus" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "Võtme seadnud kasutaja nimi" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "Võti" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "Piirangu seadnud kasutaja nimi" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "Piirang" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "Oppija nimi" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "Opitud kasutaja nimi" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "Poolopitud kasutaja nimi" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "Poolop'i teinud kasutaja" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "Voice'i teinud kasutaja" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "Voice saanud kasutaja nimi" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "Bännija hüüdnimi" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "Keelu mask" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "Võtme eemaldanud kasutaja" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "Piirangu eemaldanud kasutaja" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "Deop'itud kasutaja" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Dehalfop'itud kasutaja" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "Devoice'tud kasutaja" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "Erandi tegija hüüdnimi" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "Erandi mask" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "Erandi kustutaja hüüdnimi" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "Kutsuja hüüdnimi" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "Kutsete mask" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "Kutse eemaldanud kasutaja" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "Moodi määraja hüüdnimi" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "Moodi märk (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "Moodi sümbol" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "Muudetava kanali nimi" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Täisnimi" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Serveri info" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Jõude oldud" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Ühendumise aeg" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Eemaloleku põhjus" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Sõnum" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Konto" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "Päris kasutaja@host" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "Päris IP" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Kanali nimi" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Tekst" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Sind kutsunud kasutaja" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Kasutajad" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "Kasutajanimi on juba kasutusel" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Proovitav hüüdnimi" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Port" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "DCC tüüp" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Faili nimi" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Sihtfaili nimi" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Positsioon" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Suurus" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "DCC string" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Vana failinimi" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Uus failinimi" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Vastuvõtja" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Hosti mask" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Hosti nimi" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "Pakett" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "Sekundit" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "Kutsutud nimede hulk" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Bänni mask" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "Kes bännis" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Bänni aeg" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "Helifaili lugemine nurjus:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "Kaugmasin katkestas ühenduse" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "Ühendusest keelduti" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "Ei leia teed hostini" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Ühendus aegus" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "Ei saa määrata seda aadressi" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "Peer katkestas ühenduse" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Araabia Ühendemiraadid" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Afganistaan" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Antigua ja Barbuda" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Albaania" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Armeenia" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Hollandi antillid" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Antarktika" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Argentina" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Ameerika samoa" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Austria" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Austraalia" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "Ahvenamaa" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Aserbaidžaan" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Bosnia ja Hertsegoviina" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Bangladesh" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Belgia" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Bulgaaria" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Bahrein" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "Äriline" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Brunei Darussalam" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Boliivia" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Brasiilia" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Bahama" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Bhutan" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Bouvet' saar" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Valgevene" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Kanada" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Kookossaared" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "Kongo demokraatlik vabariik" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "Kesk-Aafrika vabariik" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Kongo" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "Šveits" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "Elevandriluurannik" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Cooki saared" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Tšiili" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Kamerun" + +#: src/common/util.c:738 +msgid "China" +msgstr "Hiina" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Kolumbia" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "Serbia ja Montenegro" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Kuuba" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Cabo verde" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Jõulusaar" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Küpros" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "Tšehhi" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Saksamaa" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Djibouti" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Taani" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Dominica" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "Dominikaani vabariik" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Alžeeria" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Ecuador" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Haridusasutus" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Eesti" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Egiptus" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Lääne-Sahara" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "Hispaania" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Etioopia" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "Euroopa Liit" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Soome" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Fidži" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Falklandi saared" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Mikroneesia" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Fääri saared" + +#: src/common/util.c:770 +msgid "France" +msgstr "Prantsusmaa" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Suurbritannia" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Gruusia" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Prantsuse Guajaana" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "Briti Kanali Saared" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Ghana" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Gröönimaa" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Valitsus" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Guadeloupe" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Ekvatoriaal-Guinea" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Kreeka" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Guinea-Bissau" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Guyana" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Hong-Kong" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Heard ja McDonald" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Horvaatia" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Ungari" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Indoneesia" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Iirimaa" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Iisrael" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "Man'i saar" + +#: src/common/util.c:801 +msgid "India" +msgstr "India" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "Informatiivne" + +#: src/common/util.c:803 +msgid "International" +msgstr "Ülemaailmne" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Briti India ookeani ala" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Iraak" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "Iraan" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Island" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Itaalia" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Jamaica" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Jordaania" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Jaapan" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Kenya" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Kõrgõzstan" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Kambodža" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Komoorid" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "Saint Kitts ja Nevis" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Põhja-Korea" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Lõunda-Korea" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Kuveit" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Kaimanisaared" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Kasahstan" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Liibanon" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Saint Lucia" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Libeeria" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Leedu" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Luksemburg" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Läti" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Liibüa" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Morocco" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Monaco" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Moldova" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Madagaskar" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Marshalli saared" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Sõjaväeline" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Makedoonia" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Mongoolia" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Macau" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Põhja-Mariaanid" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Martinique" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Marutaania" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Mauritius" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Maldiivid" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "Mehhiko" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Malaisia" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Mosambiik" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Namiibia" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Uus-Kaledoonia" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Norfolk" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Nigeeria" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Holland" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Norra" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "Uus-Meremaa" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Omaan" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Peruu" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Prantsuse Polüneesia" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Paapua Uus-Guinea" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Filipiinid" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Poola" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "saint-Pierre ja Miquelon" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Puerto Rico" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "Palestiina alad" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Portugal" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Paraguay" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Katar" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Reunion" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Rumeenia" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "Vanakooli ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Venemaa" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Ruanda" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Saudi Araabia" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Saalomoni Saared" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Seišellid" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Sudaan" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Rootsi" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Singapur" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "Saint Helena" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Sloveenia" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Teravmäed" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "Slovakkia Vabariik" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Somaalia" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Surinam" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "São Tomé ja Príncipe" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Endine SSSR" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Süüria" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Svaasimaa" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Turks ja Caicos" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Tšaad" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "Prantsuse Lõunaalad" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Tai" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Tadžikistan" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Ida-Timor" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Türkmenistan" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Tuneesia" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Türgi" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Trinidad ja Tobago" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Tansaania" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Ukraina" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Ühendkuningriik" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "Ameerika Ühendriigid" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Uruguay" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Usbekistan" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Vatikani linnriik" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "Saint Vincent ja Grenadiinid" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Venetsueela" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "Briti Neitsisaared" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "Neitsisaared, USA" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "Wallis ja Futuna" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Jeemen" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Jugoslaavia" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Lõuna-Aafrika Vabariik" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Sambia" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "Käsu täitmine ebaõnnestus" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "kaugligipääs" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Märgitabel" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "Bänni" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Kutsumised" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "Lahti ühendatud." + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "Sa pead mõned bännid valima." + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Mask" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "Kasutajalt" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Kuupäev" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Bännitute nimekirja saab vaadata ainult siis, kui mõni kanal aktiivne on." + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "bännitute nimekiri (%s) - %s" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Eemalda" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Värskenda" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Kuvan %d/%d kasutajat %d/%d kanalis." + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Vali väljundfaili nimi" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "_Liitu kanaliga" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "_Kopeeri kanali nimi" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "Kopeeri _teemaväli" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "kanalid (%s) - %s" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "_Otsi" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "Allalaadimised" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "Salvesta _nimekiri..." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "Näita ainult:" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "kanalid, kus on" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "kasutajat." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Kanali nimi" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "Otsingu tüüp:" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "Lihtne otsing" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "Regulaaravaldis" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Otsi:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Saada fail kasutajale %s" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "Seda faili ei saa jätkata" + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "Ei pääse failile ligi: %s\n%s.\nJätkamine on võimatu." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "Fail allalaadimiste kataloogis on suurem, kui pakutav fail. Jätkamine pole võimalik." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "Ei saa jätkata sama faili tõmbamist kahelt inimeselt." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "Üles- ja allalaadimised - %s" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Olek" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Fail" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "Saabub" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Mõlemad" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "Üleslaadimised" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "Allalaadimised" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "Detailid" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "Fail:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "Aadress:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Katkesta" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Võta vastu" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Jätka" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "Ava kataloog..." + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "DCC vestluste nimekiri - %s" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Siia" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Sinna" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "Algusaeg" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Kustuta" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Loobu" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Salvesta" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "Ära taasühenda serveriga automaatselt" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "Kasuta teist seadistuste kausta" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "Ära lae pluginaid automaatselt" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "Näita kasutaja seadistuste kausta" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "Käivita käsk:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Käivitu peidetult. Tase 0=tavaline 1=tegumiribal 2=süsteemisalves" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "tase" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "Näita versiooniinfot" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "Ei suuda avada fonti:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "Otsingu puhver on tühi.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d baiti" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Võrgu saatmisjärjekord: %d baiti" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "See korraldus liigutab aktiivset sakki koha võrra vasakule." + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "See korraldus liigutab aktiivset sakki koha võrra paremale." + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "See käsk liigutab aktiivse sakigrupi vasakule" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "See käsk liigutab aktiivse sakigrupi paremale" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "Salvesta sisestatud rida ajalukku seda serverisse saatmata" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "Klahviseoste faili laadimisel tekkis probleem" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "klaviatuuriotseteed - %s" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "Sellese faili ei saa kirjutada." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "Sellest failist ei saa lugeda." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "See mask on juba kasutusel." + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Privaatne" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Teated" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "Ära ignoreeri" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "Ignoreeritav hostimask:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "ignoreeritavate nimekiri - %s" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Ignoreerimise statistika:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Kanalile:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privaatne:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Teateid:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Kutsumisi:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "Lisa..." + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "Kanali nimi on liiga lühike, proovi uuesti." + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "Ühendatud - %s" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "" + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "Mida sa sooviksid järgmiseks teha?" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "_Mitte midagi, ma ühinen kanaliga hiljem." + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "_Liitu kanaliga:" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Kui sa tead kanali nime millega ühineda, siis kirjuta see siia." + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "" + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "_Alati näita seda akent peale ühendumist." + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "Vestlus kasutajaga" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Kanali %s teema on: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "Teemat ei ole määratud" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "Selle serveriga on veel seotud %d kanalit või dialoogiakent. Sulgen kõik?" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "Ära järgmine kord küsi." + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Sa oled ühendatud %i IRC-võrguga." + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "Kas sa tahad kindlasti väljuda?" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "" + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "_Peida süsteemisalve" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "Lisa atribuut või värvikood" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>Paks</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>Jooni alla</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "Tavaline" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "Värvid 0-7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "Värvid 8-15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "_Sulge" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "Kasutajapiirang peab olema number!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "Ära luba väljast teateid" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "Teema kaitse" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "Ainult kutsetega" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "Modereeritav" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "Keelatute nimekiri" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Märgusõna" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "Kasutajate piirang" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Sisesta uus hüüdnimi:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "" + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "" + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "" + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Tundmatu host" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Tundmatu" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Pärisnimi:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "Kasutaja:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "Riik:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "Server:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "%u minutit tagasi" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "Viimane sõnum:" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "Eemal:" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "Ava link brauseris" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "Kopeeri valitud link" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Liitu kanaliga" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "Lahku kanalist" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "Kasutja menüü - %s" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "CTCP vastused - spetsiaalkoodid:\n\n%d = andmed (kogu CTCP)\n%e = aktiivse võrgu nimi\n%m = masina info\n%s = CTCP saatja hüüdnimi\n%t = kell/kuupäev\n%2 = sõna 2\n%3 = sõna 3\n&2 = alates 2. sõnast kuni rea lõpuni\n&3 = alates 3. sõnast kuni rea lõpuni\n\n" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "kasutaja määratud käsud - %s" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "asenda - %s" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "URLi käsitlejad - %s" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "kasutajate nimekirja nupud - %s" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "dialooginupud - %s" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "CTCP vastused - %s" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "Lisa _uus" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "_Välju" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "Vaa_de" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "Menüüriba" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "Teemariba" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "Kasutajate nimekiri" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "R_ežiiminupud" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "Kanalite _nimekiri" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "Sakid" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "_Puu" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "Võrgumõõdikud" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Väljas" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "Graafik" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "Server" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "Ühenda lahti" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "Taasühenda" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "Kasutaja menüü" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "S_ätted" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "Seadistus" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "_Aken" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "Lähtesta järjehoidja" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "_Tühjenda aken" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "A_bi" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "_Sisu" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "_Programmist" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Nimi" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Viimati nähtud" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "Offlain" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Ei iialgi" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "%d minutit tagasi" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "Onlain" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "Sisesta lisatav hüüdnimi:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "Jälgi neis võrkudes:" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "Mitu võrgunime eralda komadega." + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "Ava dialoog" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "Ühendatud %u võrgu ja %u kanaliga - %s" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "Sõnum kanalis" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "Privaatne sõnum" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "Esiletõstetud sõnum" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "Esiletõstetud sõnum: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "%u esiletõstetud sõnumit, viimane: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "Privaatsõnum: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "%u privaatsõnumit. Viimane kasutajalt: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "Faili pakkumine kasutajalt: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "%u faili pakkumist. Viimane kasutajalt: %s (%s) - %s" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Versioon" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Kirjeldus" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Vali laetav plugin või skript" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "pluginad ja skriptid - %s" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "_Lae..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "Salvesta kui..." + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Uus võrk" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "kas tõesti soovid eemaldada võrgu \"%s\" ja kõik selle serverid?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "Muuda %s - %s" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "_Muuda" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "Ühendu ainult valitud serverisse" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Ära proovi kõiki servereid, kui ühendumine nurjub." + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "Kasuta SSL ühendust kõigi selle võrgu serverite jaoks" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "Kasuta üldist kasutaja infot" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "Hüüdnimi:" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "Teine valik: " + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "Pärisnimi:" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "Kasutajanimi:" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Parool:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "Märgistik:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "serverite nimekiri - %s" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "Kasutaja info" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "Kolmas valik:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Võrgud" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "Ära näita serverite nimekirja käivitumisel" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "_Muuda..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "_Sorteeri" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "Ü_henda" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Albaania" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Aserbaidžaan" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Valgevene" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Bulgaaria" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Eesti" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "India" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Malaisia" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Tai" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Vietnam" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Üldine" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Kirjatüüp:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "Värvilised nimed" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "Värvi iga hüüdnimi eri värvi" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "Joonda nimed" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "Joondab nimed paremale" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "Näita järjehoidjat" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "Tõmba punane joon viimase loetud rea alla." + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Taustapilt:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "Läbipaistvuse seaded" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "" + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "" + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Ü" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "Viimati rääkinud ees" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "Õigekirjakontroll" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "Hüüdnime lõpetamine" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "Hüüdnime lõpetamise suffiks:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "Hüüdnimede järjekord:" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "" + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Ü-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "Sorteerimata" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Üleval" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "All" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Peidus" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "Kasutajate nimekiri" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "Näita kanali kasutajate nimekirjas liikmete hosti" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "Kasuta tekstikasti kirjatüüpi" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "Kasutajate sorteerimise alus:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "Näita kasutajate nimekirja:" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "Kanalites, kus on vähem liikmeid kui:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "Topeltkliki tegevus" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Aknad" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Sakid" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "Alati" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "Ainult ise loodud sakid" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "Ava sakk serveri sõnumite jaoks" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "Ava uus sakk privaatsõnumi saabumisel" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "Sorteeri sakid tähestiku järgi" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "Fookus uuele sakile:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "Näita kanalite valikut:" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "Lühenda sakkide nimed:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "täheni." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "Sakid või aknad" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "Ava kanalid:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "Ava dialoogid:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "Ava utiliidid:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Ava DCC, ignoreerimised, märguanded jne. sakkides või akendes?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "Failid ja kataloogid" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "Võta küsimata vastu DCC failisaatmised" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Allalaadimisel failid salvesta:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "Alla laetud failid tõsta ümber:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "Salvesta hüüdnimi failinimedesse" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "Ava DCC aknad automaatselt" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "Saatmisaken" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "Vastuvõtmiste aken" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "Vestlusaken" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "Üks üleslaadimine:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "Ühe edastamise maksimaalne kiirus" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "Üks allalaadimine:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "Kõik üleslaadimised kokku:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "Maksimaalne kiirus kogu liikluse jaoks" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "Kõik allalaadimised kokku:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "Hoiatused" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "Tee piiks:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "Süsteemisalve ikoon" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "" + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "Esiletõstetud sõnumid:" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Peale enda hüüdnime mainimiste tõsta esile veel:" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "Esiletõstetavad sõnad:" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "Hüüdnimed, mida mitte esile tõsta:" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "Hüüdnimed mida alati esile tõsta:" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "Vaikimisi põhjendused:" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "Väljumine:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "Kanalist lahkumine:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "Eemale minek:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "Eemal" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Näita ainult ühe korra" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "Võta eemalolek automaatselt maha" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "" + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "Peida tulijad ja lahkujad" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "Ooteaeg enne autoühendust:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Logimine" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "Tagasikeritavate ridade arv:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "Logi failinimi:" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=server %c=kanal %n=võrk." + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "Lisa logidesse kellaaeg" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "Logi kellaaja formaat:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URL" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(Keelatud)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "Sinu IP aadress" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "Seo aadressiga:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "Kasulik ainult arvutitele, millel on mitu aadressi." + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "Võta mu IP aadress IRC serverilt" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "Küsi serverilt oma tõeline aadressi. Kasuta seda juhul, kui sul on 192.168.*.* aadress!" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "DCC IP aadress:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "Väida, failide pakkumisel, et sul on see aadress." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "!0, et kasutada kõiki porte." + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "Proksi server:" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "Hostinimi:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Port:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Tüüp:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "Kasuta vaheserverit:" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "Proksiga autentimine" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "Kasutajanimi:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "Vali pilti" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "Vali tõmmatud failide kaust" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Vali kirjatüüp" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Vali..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "Ava andmete kataloog" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Vali värv" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "Teksti värvid" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "mIRC värvid:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "Kohalikud värvid:" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Tekst:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Taust:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "Kasutajaliidese värvid" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "Uued andmed:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "Järjehoidja joon:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "Uus sõnum:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "Eemal olev kasutaja:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "Esiletõstetud:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Sündmus" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "Helifail:" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "Vali helifail" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "Helifail: " + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "_Vali..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "_Mängi" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Kasutajaliides" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Sisestuskast" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Kasutajate nimekiri" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "Kanalite vahetaja" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Värvid" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Vestlemine" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "Täpsemad" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Võrgu häälestus" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Failide edastus" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Kategooriad" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "Puud ei saa paigutada akna ülemisse või alumisse äärde!\nPalun vali <b>Vaade</b> menüüst <b>Sakid</b>, kui seda teha soovid." + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "" + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Muudeti mõnesid seadeid, mis vajavad programmi taaskäivitust mõjumiseks." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*HOIATUS*\nDCC failide automaatne kodukataloogi salvestamine\non ohtlik ja ära kasutatav. Näiteks võin keegi\nsaata sulle faili .bash_profile" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "häälestus - %s" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "" + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "Viga stringi töötlemisel" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ number" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Muuda sündmuseid" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "Lae..." + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Testi kõike" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "URLipüüdja - %s" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Puhasta nimekiri" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Kopeeri valitud URL" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Kopeeri" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Salvesta nimekiri faili" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d op'i, %d kokku" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "Ava irc://server:port/kanal URL" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "" diff --git a/hexchat/po/eu.po b/hexchat/po/eu.po new file mode 100644 index 0000000..4deb17b --- /dev/null +++ b/hexchat/po/eu.po @@ -0,0 +1,6256 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Mikel Olasagasti <hey_neken@euskal.org>, 2004 +# Mikel Olasagasti Uranga <mikel@olasagasti.info>, 2012 +# Mikel Olasagasti Uranga <mikel@olasagasti.info>, 2012,2014 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-03 20:10+0000\n" +"Last-Translator: TingPing <tingping@tingping.se>\n" +"Language-Team: Basque (http://www.transifex.com/hexchat/hexchat/language/eu/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: eu\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "HexChat" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "IRC bezeroa" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "IM;Chat;Txat;" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Lanpetuta nabil" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Irteten" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Sarea" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<bat ere ez>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Kanala" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Itxaroten" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Aktibo" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Huts egin da" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Eginda" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Konektatu" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Abortatua" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "Ezin da %s-ra sartu\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Errorea" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "Ez dago DCC aktiborik\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "Ir_eki elkarrizketa leihoa" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "_Bidali fitxategi bat" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "_Erabiltzailearen informazioa (WhoIs)" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "_Gehitu lagun zerrendara" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Eman Opak" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Hartu Op" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "Eman ahotsa" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "Hartu ahotsa" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Kanporatu/debekatu" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Kanporatu" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "Debekatu" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "Kanporatu-debekatu" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Irten kanaletik" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Sartu kanalera..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "Sartu elkartu nahi duzun kanalaren izena:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Zerbitzari estekak" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Ping egin zerbitzariari" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Ezkutatu bertsioa" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Op" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "OP kendu" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "agur" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Sartu %s botatzeko arrazoia:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "Elkarrizketa" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Bidali" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Berriketa" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Garbitu" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "" + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* root bezala IRCa erabiltzia ez da ona! Erabiltzaile kontu\n berri bat sortu beharko zenuke eta honekin sartu.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "BAI " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "EZ" + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "CTCP ugariegi jasotzen hari zara %s(r)engandik, %s ignoratu egingo da.\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s online\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s offline\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Kanaletara sartu gabe. Saiatu /join #<kanala>-rekin\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Konektatu gabe. Saiatu /server <ostalaria> [<ataka>]-rekin\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "/bin/sh behar dut abiatzeko!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Argumentu ezezaguna '%s', ezikusia." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "" + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "Ez da alako plugin-ik aurkitu.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "Plugin hori kargatzeari uko egiten ari da.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <izena> <ekintza>, botoi bat gehitzen du erabiltzaile zerrendaren azpian" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <komandoa>, zauden kanal guztietara komando bat bidaltzen du" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <cmd>, zauden zerbitzari guztietara komando bat bidaltzen du" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "" + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <izena>, erabiltzaile zerrendaren azpitik botoi bat ezabatzen du" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <ezizena>, uneko kanalean chanop egoera kentzen dio aukeratutako ezizenari (chanop egoera behar da)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <ezizena>, uneko kanalean voice egoera kentzen dio aukeratutako ezizenari <chanop egoera behar da>" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, zerbitzaritik deskonektatzen da" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <kanala>, kanalera sartzen da" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <ezizena> <mezua>, CTCP mezua bidaltzen dio ezizenari" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <ezizena>, zure ezizena ezartzen du" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <ezizena>, chanop egoera ematen dio erabiltzaileari (chanop behar da)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<kanala>] [<arrazoia>], kanaletik irteten da, unekotik lehenetsita" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <ezizena | kanala>, CTCP ping egin ezizen edo kanalari" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "" + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<arrazoia>], deskonektatu egiten da uneko zerbitzaritik" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <mezua>, mezua era lauean bidaltzen dio zerbitzariari" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <testua>, uneko leihoko objektuari testua bidaltzen dio" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <ostalaria> [<ataka>] [<pasahitza>], zerbitzari batera konektatzen da, lehenetsitako ataka 6667 da" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<gaia>], zerbait ematen bada gaia hori ezartzen du, bestela uneko gaia erakusten du" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <maskara> [<maskara>...], espezifikatutako maskarei debekua kentzen die" + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <maskara> [IXILIK]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <izena>, plugin edo skript-a deskargatzen du" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "" + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <ezizena>, ahots egoera ematen dio norbaiti (chanop-a behar da)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <mezua>, mezua kanal guztietan idazten du" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <mezua>, uneko kanaleko chanop guztiei mezua bidaltzen die" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "Erabilera: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nEz dago laguntzarik eskuragarri komando horrentzat.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "Ez dago honelako komandorik.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "Argumentu akastunak erabiltzaile komandoentzat.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "" + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Ziur zaude SSL erabiltzeko gai den zerbitzari eta ataka dela?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "Ezin da ebatzi %s ostalari-izena\nEgiaztatu zure IP ezarpenak!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "Proxy trasbersalak huts egin du.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Hurrengo zerbitzarira %s-n ziklatzen...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "Oharra: \"%s\" karaktere-jokoa ezezaguna da. Ez da konbertsiorik aplikatu %s sarearentzat." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "" + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "" + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%UKanala Erabiltzaileak Gaia" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "" + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "" + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "" + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "" + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "" + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "" + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "" + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "" + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "" + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "" + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "" + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "" + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tNotifikazio zerrenda hutsik dago." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "" + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "" + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "" + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "" + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** %s-n SAIOA HASTEN\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "Ezkerreko mezua" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "Eskuineko mezua" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "IP helbidea" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Erabiltzaile izena" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "Sartu den pertsonaren ezizena" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "Sartzen hari den kanala" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "Pertsonaren ostalaria" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Ezizena" + +#: src/common/text.c:980 +msgid "The action" +msgstr "akzioa" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "Identifikatutako testua" + +#: src/common/text.c:987 +msgid "The text" +msgstr "Testua" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "Mezua" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Zerbitzariaren izena" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Ezizen zaharra" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Ezizen berria" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "Gaia aldatu duenaren ezizena" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Gaia" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "Bidaltzailearen ezizena" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "Kaleratuko den pertsona" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "Kanala" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "Arrazoia" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "Irten den pertsonaren ezizena" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "Ordua" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "Sortzailea" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Ezizena" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Arrazoia" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Ostalaria" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "Norengandik den" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "Ordua x.x formatuan (ikusi azpian)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "Kanalean hau gertatuko da" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "Soinua" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "Pertsonaren ezizena" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "CTCP gertaera" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "Pasahitza jarri duenaren ezizena" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "Giltza" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "Muga jarri duenaren ezizena" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "Muga" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "Op egoera eman duen pertsonaren ezizena" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "Op egoera eman zaion pertsonaren ezizena" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "Erdi-Op egoera eman zaion pertsonaren ezizena" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "Erdi-Op egoera eman duen pertsonaren ezizena" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "Ahotsa eman duen pertsonaren ezizena" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "Ahotsa eman zaion pertsonaren ezizena" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "Debekuaren maskara" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "Pasahitza kendu duenaren ezizena" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "Muga ezabatu duenaren ezizena" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "Op egoera kendu zaion pertsonaren ezizena" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Erdi-Op egoera kendu zaion pertsonaren ezizena" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "Ahotsa kendu zaion pertsonaren ezizena" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "Gonbidapena luzatu duen pertsonaren ezizena" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "Gonbidapenaren maskara" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "Egoeraren seinua (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "Egoeraren letra" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "Kanala honela ezarriko da" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Izen osoa" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Kanaleko kidea /\"IRC operatzaile bat da\"" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Zerbitzariaren informazioa" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Inaktibitate denbora" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Konektatutako ordua" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Aldentzearen arrazoia" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Mezua" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Kontua" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "Benetazko erabiltzaile@ostalaria" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "Benetazko IPa" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Kanalaren izena" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Testua" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Gonbidatu zaituenaren ezizena" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Erabiltzaileak" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "Ezizena erabilita" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Saiatzen hari den ezizena" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Ataka" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "DCC mota" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Fitxategi-izena" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Helmuga fitxategia" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "Bide-izena" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Posizioa" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Tamainua" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "DCC katea" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "Notifikazio kopurua" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Fitxategi zaharra" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Fitxategi berria" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Jasotzailea" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Ostalariaren maskara" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Ostalariaren izena" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "Paketea" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "Segunduak" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "Gonbidatua izan denaren ezizena" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Debeku maskara" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "Nork ezarri duen debekua" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Debekuaren denbora" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "Ezin da soinu fitxategia irakurri:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "Ostalari urrunak socket-a itxi du" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "Konexio ukatua" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "Ez dago biderik ostalariraino" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Konexioa denboraz kanpo" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "Ezin da helbide hori eman" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "Konexioa bikoteak berrezarria" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Arabiar Emirerri Batuak" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Afganistan" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Antigua eta Barbuda" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Albania" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Armenia" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Antilla Nederlandarrak" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Antarktika" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Argentina" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "Alderantzizko DNSa" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Samoa Estatubatuarra" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Austria" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Australia" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Azerbaijan" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Bosnia-Herzegovina" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Bangladesh" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Belgika" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Bulgaria" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Bahrein" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "Negozioak" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Bermudak" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Brunei Darussalam" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Bolivia" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Brasil" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Bahamak" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Bhutan" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Bouvet Uhartea" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Bielorrusia" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Kanada" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Cocos Uharteak" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "Ertafrikar Errepublika" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Kongo" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "Suitza" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Cook Uharteak" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Txile" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Kamerun" + +#: src/common/util.c:738 +msgid "China" +msgstr "Txina" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Kolombia" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Internic Komertziala" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Kuba" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Cabo Verde" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Christmas Uhartea" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Txipre" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "Txekiar Errepublika" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Alemania" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Djituti" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Danimarka" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Dominika" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "Dominikar Errepublika" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Algeria" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Ekuador" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Instituzio Edukatiboa" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Estonia" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Egipto" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Mendebaldeko Sahara" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "Espainia" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Etiopia" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Finlandia" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Fiji" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Malvina Uharteak (Falkland)" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Maine" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Faroe Uharteak" + +#: src/common/util.c:770 +msgid "France" +msgstr "Frantzia" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Britania Handia" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Granada" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Georgia" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Guyana Frantsesa" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "Channel Uharte Britaniarrak" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Ghana" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Groenlandia" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Ginea" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Gobernua" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Guadelupe" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Ekuatore-Ginea" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Grezia" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Hegoaldeko Georgia eta Hegoaldeko Sandwich Uharteak" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Ginea Bissau" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Guyana" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Heard Uhartea eta McDonald Uharteak" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Kroazia" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Hungaria" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Indonesia" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Irlanda" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Israel" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "" + +#: src/common/util.c:801 +msgid "India" +msgstr "India" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "Informatiboa" + +#: src/common/util.c:803 +msgid "International" +msgstr "Internazionala" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Indiar Ozeanoko Lurralde Britainiarra" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Irak" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "Iran" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Islandia" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Italia" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Jamaika" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Jordania" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Japonia" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Kenya" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Kirgizstan" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Kanbodia" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Komoreak" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "Saint Kitts eta Nevis" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Korea, Herri-Errepublika Demokratikoa (Ipar Korea)" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Korea Errepublika (Hego Korea)" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Kuwait" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Cayman Uharteak" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Kazakhstan" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Libano" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Santa Luzia" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Liberia" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Lituania" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Luxemburgo" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Letonia" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Liberia" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Maroko" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Monako" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Moldavia" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "Estatu Batuak Medizinala" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Madagaskar" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Marshall Uharteak" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Militarra" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Macedonia" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Birmania" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Mongolia" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Macau" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Iparraldeko Mariana Uharteak" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Martinika" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Mauritania" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Maurizio" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Mali" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "Mexiko" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Malaysia" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Mozambike" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Namibia" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Kaledonia Berria" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Internic Sarea" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Norfolk Uhartea" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Nigeria" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Nikaragua" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Herbereak" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Norvegia" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "Zeelanda Berria" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "Papua Ginea Berria" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Polinesia Frantsesa" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Papua Ginea Berria" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Filipinak" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Polonia" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "Saint Pierre eta Miquelon" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Puerto Rico" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Portugal" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Belau (lehen Palaos)" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Paraguay" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Katar" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Reunion" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Errumania" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "ARPAnet zaharra" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Errusiako Federazioa" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Ruanda" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Saudi Arabia" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Salomon Uharteak" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Seychelleak" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Sudan" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Suedia" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Singapur" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "Santa Elena" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Eslovenia" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard eta Jan Mayen Uharteak" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "Eslovakia" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Sierra Leona" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Somalia" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Surinam" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "Sao Tome eta Printze" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Lehenago USSR" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Siria" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Swazilandia" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Turk eta Caicoak Uharteak" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Txad" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "Hegoaldeko Lurralde Frantsesak" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Tailandia" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Tadjikistan" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Ekialdeko Timor" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Tunisia" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Turkia" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Trinidad eta Tobago" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Tanzania" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Ukraina" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Erresuma Batua" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "Amerikako Estatu Batuak" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Uruguay" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Uzbekistan" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Vatikanoko Hiria" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "San Bizente eta Grenadinak" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "Birjina Uharteak (Err. Ba.)" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "Birjina Uharteak (EEBB)" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "Wallis and Futuna Uharteak" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Jemen" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Jugoslavia" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Hegoafrikar Errepublika" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Zambia" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Karaktere taula" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "Debekatu" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Gonbidatu" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "Konektatu gabe." + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "Debeku batzuk aukeratu behar dituzu." + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Maskara" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "Nork" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Data" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Kendu" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Moztu" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Freskatu" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "" + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Aukeratu irteera fitxategi bat" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "_Sartu gelara" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "_Kopiatu gelaren izena" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "Kopiatu g_aiaren testua" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "_Bilatu" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "Gorde _zerrenda..." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Kanalaren izena" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "Bilaketa mota:" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "Bilaketa sinplea" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Bilatu:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Bidali fitxategia %s-ri" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "Fitxategi hau ez da jarraigaitza" + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "Ezin da fitxategira iritsi: %s\n%s.\nBerrekitea ezinezkoa." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "Ezin da bi pertsonen fitxategi berdinarekin jarraitu" + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Egoera" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Fitxategia" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Biak" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "Bidalketak" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "Deskargak" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "Xehetasunak" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "Fitxategia:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "Helbidea:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Abortatu" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Onartu" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Berrekin" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "Ireki karpeta..." + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Jasotakoak" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Bidaliak" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "Hasiera data" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Ezabatu" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Utzi" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Gorde" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "Exekutatu komandoa:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "maila" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "Huts egin da letra tipoa irekitzen:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "Bilaketa bufferra hutsik dago.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d byte" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "Errore bat egon da tekla-mapa konfigurazioa kargatzerakoan" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "Ezin idatzi fitxategi hortan." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "Ezin irakurri fitxategi hori." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "Maskara hau dagoeneko exisititzen da." + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Pribatua" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Oharra" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "Ezikusia kendu" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "Sartu ignoratu nahi duzun maskara:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Ignoratuen estatistikak" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Kanala:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Pribatua:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Oharra:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Gonbidatu:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "Gehitu..." + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "" + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "" + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "" + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "_Sartu gela honetara:" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "" + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "" + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "Elkarrizketatu honekin" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "%s-ren gaia honakoa da: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "Ez dago gairik" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "HexChat-etik irten?" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "Ez galdetu gehiago" + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "%i IRC sareetara konektatuta zaude." + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "Ziur zaude irten nahi duzula?" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "" + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "Normala" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "Koloreak 0-7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "Koloreak 8-15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "_Ezarpenak" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "_Itxi" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "Erabiltzaile mugak zenbakia izan behar du!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "Ez dago kanpoko mezurik" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "Gaia babestua" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "Gonbidapenarekin bakarrik" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "Moderatua" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "Debekatuen zerrenda" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Gako-hitza" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "Erabiltzaile limitea" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Sartu ezizen berria:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "" + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "" + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "" + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Ostalari ezezaguna" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Ezezaguna" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Benetako izena:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "Erabiltzailea" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "Herrialdea:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "Zerbitzaria:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "Orain dela %u minutu" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "Azken mezua:" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "Ireki esteka nabigatzailean" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "Kopiatu aukeratutako esteka" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Sartu kanalera" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "Irten kanaletik" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "Kanal zikloa" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "Ordeztu - %s" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "Ordeztu honekin" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "He_xChat" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "_Berria" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "_Irten" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "I_kusi" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "_Erabiltzaile zerrenda" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "Zu_haitza" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Off" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "Grafikoa" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "_Zerbitzaria" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "_Deskonektatu" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "_Ezarpenak" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "_Hobespenak" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "_Leihoa" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "Reseteatu marka-lerroa" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "_Kopiatu aukeraketa" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "G_arbitu testua" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "Bilatu" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "Bilatu hurrengoa" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "Bilatu aurrekoa" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "_Laguntza" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "_Edukia" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "_Honi buruz" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Izena" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Azkenekoz ikusia" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "Lineaz kanpo" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Inoiz" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "Orain dela %d minutu" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "Linean" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "Sartu gehitu nahi den ezizena:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "Ireki elkarrizketa" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "Gela mezua" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "Mezu pribatua" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "_Joan" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "_Itzuli" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Bertsioa" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Azalpena" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Aukeratu kargatzeko plugin edo skript bat" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "_Kargatu..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "Gorde honela..." + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Sare berria" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Benetan ezabatu nahi duzu \"%s\" eta honen zerbitzari guztiak?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "Gakoa (Pasahitza)" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "_Editatu" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "Erabili SSL sare hontako zerbitzari guztietan" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "Erabili erabiltzailearen informazio globala" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "_Ezizena:" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "Bigarren aukera:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "Benetazko _izena:" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "_Erabiltzaile izena:" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Pasahitza:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "Karaktere-jokoa:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "Erabiltzailearen informazioa" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "Hirugarren aukera" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Sareak" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "_Editatu..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "_Sailkatu" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "K_onektatu" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Albania" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Azerbaijan" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "Euskara" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Bielorrusia" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Bulgaria" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Estonia" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "Frantsesa" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "Galiziera" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "Alemaniera" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "India" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "Italiera" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "Japoniera" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Malaysia" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "Espainiera" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "Suediera" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Tailandia" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Vietnam" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Orokorra" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "Hizkuntza:" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "Letra-tipo nagusia:" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Letra-tipoa" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "Koloreztatutako ezizenak" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "Koskatu ezizenak" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "Erakutsi lerro-marka" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "" + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Atzeko planoko irudia:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "" + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "" + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "Titulu barra" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "Sarrera kaxa" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "Izen betetzea" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "Ezizen betetzearen atzizkia:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "" + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "Grafikoa" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "Sailkatu gabe" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Goian" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Behean" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Ezkutatu" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "Erabiltzaile zerrenda" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "Erakutsi ostalari izenak erabiltzaile zerrendan" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "Erabili textu kaxaren letra-tipo eta koloreak" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "Erabiltzaile-zerrenda honela sailkatua:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "Hau baino txikiagoak diren kanaletan:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "Klik bikoitza egin ondorengo ekintza" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Windows" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Fitxak" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "Beti" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "Eskaria egiten den fitxetan soilik" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "Automatikoa" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "Zuhaitza" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "Ireki fitxa extra bat zerbitzariaren mezuentzat" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "Sailkatu fitxak orden alfabetikoan" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "Fitxen luzera murriztu:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "letra." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "Fitxak ala leihoak" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "Ireki kanalak hemen:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "Ireki elkarrizketak hemen:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "Iriki utilitateak hemen:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Ireki DCC, ezikusi, notifikazio etab. fitxetan ala leihoetan?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "Mezuak" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Hona jaitsi fitxategiak:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "Mugitu amaitutako fitxategiak hona:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "Gorde ezizenak fitxategietan" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "Automatikoki ireki DCC leihoak" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "Bidalketa leihoa" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "Jaso leihoa" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "Elkarrizketa leihoa" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "Igoera bat:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "Jaitsiera bat:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "Igoera guztiak konbinatuta:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "Jaitsiera guztiak konbinatuta:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "Alertak" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "" + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "Lehenetsitako mezuak" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "Irten:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "Irten kanaletik:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "Aldenduta:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "Aldenduta" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Erakutsi aldendu mezua behin" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "Automatikoki desmarkatu aldendu egoera" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "" + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "Erakutsi MODEak era lauean" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "Ezkutatu sartze/irtete mezuak" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "Automatikoki berriz konektatzeko atzerapena:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Logeatzen" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "Atzera korritze lerro kopurua:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "" + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "Txertatu ordu arrastoak log-etan" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URLak" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(Desgaitua)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "Automatikoa" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "Zure helbidea" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "Lotu honi:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "" + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "Hartu nire IPa IRC zerbitzaritik" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "Galdetu IRC zerbitzariari zure benetako helbidea. Erabili hau 192.168.*.* moduko helbidea baduzu." + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "DCCaren IP helbidea:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "" + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "" + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "Proxy zerbitzaria" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "Ostalari-izena" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Ataka:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Mota:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "Erabili proxy-a honentzat:" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "Proxy autentikazioa:" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "Erabiltzaile izena:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "Aukeratu irudi fitxategi bat" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "Aukeratu deskarga karpeta" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Aukeratu letra-tipoa" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Arakatu..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "Ireki datuen karpeta" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Aukeratu kolorea" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "Testu koloreak" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "mIRC koloreak:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Aurreko planoa:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Atzeko planoa:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "Interfazearen koloreak" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "Datu berria:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "Mezu berria:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "Aldendutako erabiltzailea:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "Nabarmendu:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Gertaera" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "Soinu fitxategia" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "Aukeratu soinu fitxategi bat" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "Soinu fitxategia:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "_Arakatu..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "_Jo" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Interfazea" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "Itxura" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Sarrera kaxa" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Erabiltzaile zerrenda" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Koloreak" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Elkarrizketan" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "Soinuak" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "Aurreratua" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Sare konfigurazioa" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Fitxategi transferentziak" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Kategoriak" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "" + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Egindako ezarpen aldaketa batzuk berrabiaraztea behar dute guztizko efektua egin dezaten." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*OHARRA*\nDCCak automatikoki onartzea zure etxe karpetara\nkaltegarria izan daiteke. Adibidez norbaitek\n.bash_profile fitxategia bidali dezake" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "Hobespenak - %s" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "Gehiago..." + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "Errore bat gertatu da karaktere-katea parseatzean" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Seinale honek %d argumentu pasa ditu, $%d baliogabekoa da" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "Inprimatu testuen fitxategia" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ Zenbakia" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Editatu gertaerak" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "" + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Egiaztatu denak" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "Ados" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Garbitu zerrenda" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Kopiatu aukeratutako URLa" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Kopiatu" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Gorde zerrenda fitxategi batean" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d op, %d guztira" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "" diff --git a/hexchat/po/fi.po b/hexchat/po/fi.po new file mode 100644 index 0000000..3048f62 --- /dev/null +++ b/hexchat/po/fi.po @@ -0,0 +1,6256 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Jiri Grönroos <jiri.gronroos@iki.fi>, 2014,2016 +# Toni Willberg <toni@willberg.fi>, 2014 +# Toni Willberg <toni@willberg.fi>, 2014 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-03 20:10+0000\n" +"Last-Translator: TingPing <tingping@tingping.se>\n" +"Language-Team: Finnish (http://www.transifex.com/hexchat/hexchat/language/fi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fi\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "HexChat" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "IRC-asiakassovellus" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "HexChat on helppokäyttäinen IRC-asiakassovellus, joka on helposti laajennettavissa. Sen avulla voit liittyä lukuisiin eri verkkoihin ja keskustella muiden kanssa kanavilla tai yksityiskeskusteluissa. Voit myös siirtää tiedostoja muiden käyttäjien kanssa." + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "HexChat tukee muun muassa seuraavia ominaisuuksia: DCC, SASL, välityspalvelimet, oikoluku, hälytykset, lokitus, mukautettavat teemat ja Python-/Perl-skriptit." + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "Keskustele muiden kanssa verkossa" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "IM;Chat;pikaviestin;keskustelu;" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "HexChat-teemojen hallinta" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Olen kiireinen" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Lähdössä" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Verkko" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<ei mitään>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Kanava" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Odottaa" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Aktiivinen" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Epäonnistui" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Valmis" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Yhdistetty" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Keskeytetty" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "Tiedostoa %s ei voi käyttää\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Virhe" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s tarjoaa tiedostoa \"%s\". Hyväksytäänkö?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "Ei aktiivisia DCC-yhteyksiä\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "Avaa keskusteluikkuna" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "Lähetä tiedo_sto" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "Käyttäjätiedot (Whois)" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "Lisää k_averilistalle" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Anna opit" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Poista opit" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "Anna puheoikeus" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "Poista puheoikeus" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Potkaise/Bannaa" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Potkaise" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "Bannaa" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "Potkaise ja bannaa" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Poistu kanavalta" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Liity kanavalle..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "Anna liityttävän kanavan nimi:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Palvelinlinkit" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Pingaa palvelinta" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Piilota versionumero" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Oppaa" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "Opit pois" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "heihei" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Anna syy miksi %s potkaistaan:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "Keskustele" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "KukaOn" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Lähetä" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Keskustelu" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Tyhjennä" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "" + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* IRCin ajaminen pääkäyttäjänä on typerää!\n Luo tavallinen käyttäjätunnus ja kirjaudu sillä.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "JAA " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "EI " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "CTCP-tulva käyttäjältä %s, ei huomioida osoitetta %s\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-14s tavoitettavissa\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-14s tavoittamattomissa\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Millekään kanavalle ei ole liitytty. Kokeile /join #<kanava>\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Mihinkään palvelimeen ei ole yhteyttä. Kokeile /server <isäntä> [<portti>]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "Palvelin %s on jo verkossa %s.\n" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "Lisättiin palvelin %s verkoon %s.\n" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Merkitty jo poissaolevaksi: %s\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "Merkitty jo läsnäolevaksi.\n" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "Ajamiseen vaaditaan /bin/sh!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "Käytettävissä olevat komennot:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "Käyttäjän määrittelemät komennot:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "Liitännäisten komennot:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Lisätietoja saat kirjoittamalla /HELP <komento> tai /HELP -l." + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Tuntematonta argumenttia \"%s\" ei huomioida." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "" + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "Liitännäistä ei löydy.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "Liitännäinen ei suostu poistumaan käytöstä.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <nimi> <toiminto>, lisää painikkeen käyttäjäluettelon alapuolelle" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <komento>, lähettää komennon kaikille kanaville, joilla ollaan" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <komento>, lähettää komennon kaikille palvelimille, joilla ollaan" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "BACK, merkitsee läsnäolevaksi" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <peite> [<bannityyppi>], bannaa jokaisen peitteeseen täsmäävän käyttäjän nykyiseltä kanavalta. Jos käyttäjät ovat jo kanavalla, tämä komento ei potkaise heitä (vaatii opit)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "" + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <koodi|jokeri>, etsii maakoodin, esim. au = Australia." + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <käyttäjä> <viesti>, lähettää CTCP-viestin käyttäjälle, yleiset viestit ovat VERSION ja USERINFO" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "CYCLE, poistuu nykyiseltä kanavalta ja palaa heti takaisin" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <kutsumanimi> - hyväksy tarjottu tiedosto\nDCC SEND [-maxcps=#] <knimi> [tiedosto] - lähetä tiedosto jollekulle\nDCC PSEND [-maxcps=#] <knimi> [tiedosto] - lähetä tiedosto passiivitilaisena\nDCC LIST - näytä DCC-luettelo\nDCC CHAT <kutsumanimi> - ehdota DCC-keskustelua jollekulle\nDCC PCHAT <kutsumanimi> - ehdota DCC-keskustelua passiivitilaisena\nDCC CLOSE <tyyppi> <knimi> <tiedosto> - keskeytä DCC-siirto, esimerkiksi:\n /dcc close send jarkkoranta tiedosto.tar.gz" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <käyttäjä>, poistaa puoliopit käyttäjältä nykyisellä kanavalla (vaatii opit)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <nimi>, poistaa painikkeen käyttäjäluettelon alta" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <käyttäjä>, poistaa opit käyttäjältä nykyisellä kanavalla (vaatii opit)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <käyttäjä>, poistaa puheoikeuden käyttäjältä nykyisellä kanavalla (vaatii opit)" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, Katkaisee yhteyden palvelimelle" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <teksti>, tulostaa tekstiä paikallisesti" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <komento>, ajaa komennon. Käytettäessä valitsinta -o tuloste lähetetään nykyiselle kanavalle, muutoin nykyiseen ikkunaan" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, lähettää prosessille signaalin SIGCONT" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9], tappaa nykyisestä istunnosta käynnistetyn ohjelman. Käytettäessä valitsinta -9, prosessille lähetetään signaali SIGKILL" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, lähettää prosessille signaalin SIGSTOP" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, lähettää dataa prosessin vakiosyötteeseen" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, tyhjentää nykyisen palvelimen lähetysjonon" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <isäntä> [<portti>], käyttää isäntää välipalvelimena, oletusportti 23" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <käyttäjä>, antaa puoliopit käyttäjälle (vaatii opit)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <salasana>, tunnistautuu NickServ-palvelulle." + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <peite> <tyypit..> <valitsimet..>\n peite - peite, jonka mukaan jätetään huomiotta, esim: *!*@*.aol.com\n tyypit - viestityypit, jotka jätetään huomiotta, yksi tai useampi:\n PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n valitsimet - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <käyttäjä> [<kanava>], kutsuu käyttäjän kanavalle, oletuksena nykyiselle (vaatii opit)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <kanava>, liittyy kanavalle" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, pakottaa uuden viivetarkistuksen" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <tiedosto>, lataa liitännäisen tai komentotiedoston." + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, poistaa opit kaikilta nykyisen kanavan puoliopeilta (vaatii opit)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, poistaa opit kaikilta nykyisen kanavan opeilta (vaatii opit)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <toiminta>, lähettää toiminnan nykyiselle kanavalle (toiminnat kirjoitetaan kolmannessa persoonassa, kuten /me hyppää)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, potkaisee kaikki muut kanavalta (vaatii opit)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, antaa kanavaoperaattorin oikeudet kanavan kaikille käyttäjille (vaatii opit)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "NAMES [kanava], luettelee kanavalla olevat käyttäjät" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <käyttäjä> <viesti>, lähettää CTCP-tiedotteen" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <isäntä> [<portti>]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <kutsumanimi>, asettaa oman kutsumanimesi" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [-n verkko1[,verkko2]] [<kutsumanimi>], näyttää ilmoitusluettelon tai lisää siihen jonkun" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <käyttäjä>, antaa kanavaoperaattorin oikeudet käyttäjälle (vaatii opit)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<kanava>] [<syy>], poistuu kanavalta, oletuksena nykyiseltä" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <käyttäjä | kanava>, CTCP-pingaa käyttäjää tai kanavaa" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "" + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<syy>], katkaisee yhteyden nykyiseen palvelimeen" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <teksti>, lähettää tekstin raa'assa muodossa palvelimelle" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<isäntä>] [<portti>] [<salasana>], voidaan kutsua /RECONNECT nykyiseen palvelimeen uudelleen yhdistämiseksi, tai /RECONNECT ALL kaikkiin avoimiin palvelimiin uudelleen yhdistämiseksi" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<isäntä>] [<portti>] [<salasana>], voidaan kutsua /RECONNECT nykyiseen palvelimeen uudelleen yhdistämiseksi, tai /RECONNECT ALL kaikkiin avoimiin palvelimiin uudelleen yhdistämiseksi" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <teksti>, lähettää tekstin nykyisen ikkunan kanavalle/henkilölle" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <käyttäjä> [<tiedosto>], lähettää käyttäjälle tiedoston" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <isäntä> <portti> <kanava>, yhdistää ja liittyy kanavalle" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <isäntä> <portti> <kanava>, yhdistää ja liittyy kanavalle" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <isäntä> [<portti>] [<salasana>], yhdistää palvelimelle, oletusportti on 6667" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<aihe>], asettaa aiheen, jos se annetaan, muutoin näyttää nykyisen aiheen" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "\nTRAY -f <aika> <tied1> [<tied2>] Vuorottelee kahta kuvaketta ilmoitusalueella (välkyttää).\nTRAY -f <tiedostonimi> Muuttumaton kuvake ilmoitusalueelle.\nTRAY -i <numero> Välkyttää sisäänrakennettua kuvaketta.\nTRAY -t <teksti> Asettaa ilmoitusalueen vihjetekstin.\nTRAY -b <otsikko> <teksti> Asettaa ilmoitusalueen puhekuplan tekstin." + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <peite> [<peite>...], poistaa annettujen peitteiden bannin." + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <peite> [QUIET]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <nimi>, poistaa käytöstä liitännäisen tai skriptin" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "" + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, avaa URLin selaimeen" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "USELECT [-a] [-s] <nimi1> <nimi2> jne., valitsee nimet kanavan käyttäjäluettelosta" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <käyttäjä>, antaa puheoikeuden käyttäjälle (vaatii opit)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <viesti>, kirjoittaa viestin kaikille kanaville" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <viesti>, lähettää viestin kaikille nykyisen kanavan opeille" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "Käyttö: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nKomennolle ei ole saatavissa ohjetta.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "Komentoa ei ole.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "Virheelliset argumentit käyttäjäkomennolle.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "Liian monta rekursiivista käyttäjäkomentoa, keskeytetään." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "Ei hexchat_plugin_init-symbolia; onko varmasti kyseessä HexChat-liitännäinen?" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Onko tämä varmasti SSL:ää tukeva palvelin ja portti?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "Isäntänimen %s selvitys ei onnistu\nTarkista IP-asetukset!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "Välipalvelimen kauttakulku epäonnistui.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Siirrytään seuraavalle %s-verkon palvelimelle...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "Varoitus: merkistö \"%s\" on tuntematon. Verkossa %s ei käytetä mitään muunnosta." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "" + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "" + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%UKanava Käyttäjät Aihe%O" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "" + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "" + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "" + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "" + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "" + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "" + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "" + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "" + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "" + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "" + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "" + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "%C23*$t$1 ($3%C23) liittyi" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "%C20*%O$tNimi on virheellinen tai jo käytössä. Käytä /NICK -komentoa yrittääksesi uudelleen." + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "" + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "%C23*%O$tNotify: %C18$1%C on poissa (%C24$2%O)" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "%C23*%O$tNotify: %C18$1%C tuli takaisin" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tIlmoitusluettelo on tyhjä." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "" + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "%C24*$t$1 ($2%C24) poistui" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "%C24*$t$1 ($2%C24) poistui ($4)" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "%C24*$t$1 lopetti ($2)" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "" + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "%C29*%O$tYhdistetty." + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "" + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "%C19*%O$tPoistuit kanavalta %C22$3%O" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "%C19*%O$tPoistuit kanavalta %C22$3%C (%C24$4%O)" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "%C20*%O$tNimimerkkisi on nyt %C18$2%O" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "Loki luettiin tiedostosta" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** LOKIKIRJOITUS LOPPUU %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** LOKIKIRJOITUS ALKAA %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "Vasen viesti" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "Oikea viesti" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "IP-osoite" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Käyttäjänimi" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "Liittyvän henkilön nimimerkki" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "Kanava, jolle liitytään" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "Henkilön isäntänimi" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Nimimerkki" + +#: src/common/text.c:980 +msgid "The action" +msgstr "Toiminto" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "Tilamerkki" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "Korostettava teksti" + +#: src/common/text.c:987 +msgid "The text" +msgstr "Teksti" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "Viesti" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Palvelinnimi" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "Palvelimen kyvyt" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "Pyydetyt kyvyt" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Vanha nimimerkki" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Uusi nimimerkki" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "Aihetta muuttaneen henkilön nimimerkki" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Aihe" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "Potkaisijan nimimerkki" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "Potkaistava henkilö" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "Kanava" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "Syy" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "Poistuvan henkilön nimimerkki" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "Aika" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "Luoja" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Nimimerkki" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Syy" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Isäntä" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "Keneltä se on" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "Aika x.x-muodossa (katso alta)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "Kanava, jolle se on menossa" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "Ääni" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "Henkilön nimimerkki" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "CTCP-tapahtuma" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "Tunnussanan asettaneen henkilön nimimerkki" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "Tunnussana" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "Rajan asettaneen henkilön nimimerkki" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "Raja" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "Opit antaneen henkilön nimimerkki" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "Opit saaneen henkilön nimimerkki" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "Puoliopit saaneen henkilön nimimerkki" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "Puoliopit antaneen henkilön nimimerkki" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "Puheoikeuden antaneen henkilön nimimerkki" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "Puheoikeuden saaneen henkilön nimimerkki" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "Bannin asettajan nimimerkki" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "Bannipeite" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "Tunnussanan poistajan nimimerkki" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "Rajan poistajan nimimerkki" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "Opit menettäneen henkilön nimimerkki" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Puoliopit poistaneen henkilön nimimerkki" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "Puheoikeuden menettäneen henkilön nimimerkki" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "Erivapauden asettaneen henkilön nimimerkki" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "Erivapauspeite" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "Erivapauden poistaneen henkilön nimimerkki" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "Kutsun esittäneen henkilön nimimerkki" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "Kutsupeite" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "Kutsun poistaneen henkilön nimimerkki" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "Tilan asettaneen henkilön nimimerkki" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "Tilan etumerkki (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "Tilakirjain" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "Kanava, jolle se asetetaan" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Koko nimi" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Kanavan jäsenyys/\"on IRC-operaattori\"" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Palvelintiedot" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Joutenoloaika" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Kirjautumisaika" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Poissaolon syy" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Viesti" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Tunnus" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "Todellinen käyttäjä@isäntä" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "Todellinen IP" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Kanavanimi" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Teksti" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Sinut kutsuneen henkilön nimi" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Käyttäjiä" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "Nimimerkki on käytössä" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Kokeiltava nimimerkki" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Portti" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "Tilamerkkijono" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "DCC-tyyppi" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Tiedostonimi" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Kohdetiedostonimi" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "t/s" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "Polku" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Sijainti" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Koko" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "DCC-merkkijono" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "Poissaolon syy" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "Ilmoitusmerkintöjen määrä" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Vanha tiedostonimi" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Uusi tiedostonimi" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Vastaanottaja" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Isännän peite" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Isäntänimi" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "Paketti" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "Sekuntia" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "Kutsutun henkilön nimimerkki" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Bannipeite" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "Kuka asetti bannin" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Bannausaika" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "Äänitiedostoa ei voi lukea:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "Vastapää sulki pistokkeen" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "Yhteys torjuttu" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "Ei reititystä isäntään" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Yhteys aikakatkaistu" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "Osoitetta ei voi asettaa" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "Vastapää katkaisi yhteyden" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "Ascension Island" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Yhdistyneet Arabiemiraatit" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Afganistan" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Antigua ja Barbuda" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Albania" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Armenia" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Alankomaiden Antillit" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Etelämanner" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Argentiina" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "Käänteisnimipalvelu" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Amerikan Samoa" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Itävalta" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "NATO" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Australia" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "Ahvenanmaa" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Azerbaidzan" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Bosnia ja Herzegovina" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Bangladesh" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Belgia" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Bulgaria" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Bahrain" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "Liike-elämä" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Brunei" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Bolivia" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Brasilia" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Bahamasaaret" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Bhutan" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Bouvet'n saari" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Valko-Venäjä" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Kanada" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "Katalaani" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Kookossaaret" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "Kongon demokraattinen tasavalta" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "Keski-Afrikan tasavalta" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Kongo" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "Sveitsi" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "Norsunluurannikko" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Cooksaaret" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Chile" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Kamerun" + +#: src/common/util.c:738 +msgid "China" +msgstr "Kiina" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Kolumbia" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Kaupallinen" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "Serbia ja Montenegro" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Kuuba" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Kap Verde" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Joulusaari" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Kypros" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "Tšekinmaa" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Saksa" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Djibouti" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Tanska" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Dominica" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "Dominikaaninen tasavalta" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Algeria" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Ecuador" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Koulutuksellinen laitos (Yhdysvallat)" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Viro" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Egypti" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Länsi-Sahara" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "Espanja" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Etiopia" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "Euroopan unioni" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Suomi" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Fidzi" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Falklandsaaret" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Mikronesia" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Färsaaret" + +#: src/common/util.c:770 +msgid "France" +msgstr "Ranska" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Iso-Britannia" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Georgia" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Ranskan Guyana" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "Englannin kanaalin saaret" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Ghana" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Grönlanti" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Valtio (Yhdysvallat)" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Guadeloupe" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Päiväntasaajan Guinea" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Kreikka" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Etelä-Georgia ja Eteläiset Sandwichsaaret" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Guinea-Bissau" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Guyana" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Hongkong" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Heard ja McDonaldinsaaret" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Kroatia" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Unkari" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Indonesia" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Irlanti" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Israel" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "Mansaari" + +#: src/common/util.c:801 +msgid "India" +msgstr "Intia" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "Tiedotuksellinen" + +#: src/common/util.c:803 +msgid "International" +msgstr "Kansainvälinen" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Brittiläinen Intian valtameren alue" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Irak" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "Iran" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Islanti" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Italia" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Jamaika" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Jordania" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Japani" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Kenia" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Kirgisia" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Kambodža" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Komorit" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "Saint Kitts ja Nevis" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Pohjois-Korea" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Etelä-Korea" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Kuwait" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Caymansaaret" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Kazakstan" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Libanon" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Saint Lucia" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Liberia" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Liettua" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Luxemburg" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Latvia" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Libya" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Marokko" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Monaco" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Moldova" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "Montenegro" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "Lääketieteellinen (Yhdysvallat)" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Madagaskar" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Marshallsaaret" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Sotilaallinen (Yhdysvallat)" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Makedonia" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Mongolia" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Macao" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "Mobiililaitteet" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Pohjois-Mariaanit" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Martinique" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Mauritania" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Mauritius" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Malediivit" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "Meksiko" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Malesia" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Mosambik" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Namibia" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Uusi-Kaledonia" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Verkko" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Norfolkin saari" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Nigeria" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Alankomaat" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Norja" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "Uusi-Seelanti" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "Aatteellinen järjestö" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Ranskan Polynesia" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Papua-Uusi-Guinea" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Filippiinit" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Puola" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "Saint-Pierre ja Miquelon" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Puerto Rico" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "Brittiläinen Intian valtameren alue" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Portugali" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Paraguay" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Qatar" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Réunion" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Romania" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "Vanha ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "Serbia" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Venäjän Federaatio" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Ruanda" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Saudi-Arabia" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Salomosaaret" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Seychellit" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Sudan" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Ruotsi" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Singapore" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "Saint Helena" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Slovenia" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard- ja Jan Mayen -saaret" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "Slovakia" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Somalia" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Surinam" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "Sao Tome ja Principe" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Entinen Neuvostoliitto" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Syyria" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Swasimaa" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Turks- ja Cairossaaret" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Tšad" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "Ranskan eteläiset maa-alueet" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Thaimaa" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Tadzikistan" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Itä-Timor" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Tunisia" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Turkki" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Trinidad ja Tobago" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Tansania" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Ukraina" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Iso-Britannia" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "Yhdysvallat" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Uruguay" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Uzbekistan" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Vatikaanivaltio" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "Saint Vincent ja Grenadiinit" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "Brittiläiset Neitsytsaaret" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "Neitsytsaaret" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "Wallis ja Futuna" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "Aikuisviihde" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Jemen" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Jugoslavia" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Etelä-Afrikka" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Sambia" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "Istuntoväylään ei saatu yhteyttä" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "NameHasOwner-komennon suoritus epäonnistui" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "Komennon suoritus epäonnistui" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "etäkäyttö" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "Liitännäinen, joka mahdollistaa etäkäytön DBUS-yhteyden yli." + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Istuntoväylään ei saatu yhteyttä: %s\n" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Virhe palvelussa %s: %s\n" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Merkistökartta" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "Bannaa" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Kutsut" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "Palvelimeen ei ole yhteyttä." + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "Valitse vähintään yksi banni." + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Peite" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "Keneltä" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Päiväys" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Banniluettelon voi avata vain, kun jokin kanavaikkuna on valittuna." + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Poista" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Poista muut" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Päivitä" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Näkyvillä on %d/%d käyttäjää %d/%d kanavalla." + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Valitse tulostiedoston nimi" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "Liity kanavalle" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "Kopioi kanavanimi" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "Kopioi kanavan aihepiiriteksti" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "Hae" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "Lataa luettelo" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "Tallenna luettelo..." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "Näytä vain:" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "kanavat, joilla on" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "—" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "käyttäjää." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "Käy läpi:" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Kanavanimi" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "Hakutapa:" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "Yksinkertainen haku" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "Hakulauseke (jokerimerkit)" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "Säännöllinen lauseke" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Etsi:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Lähetä tiedosto käyttäjälle %s" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "Tämän tiedoston siirtoa ei voi jatkaa." + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "Tiedostoa ei voi käsitellä: %s\n%s.\nJatkaminen ei ole mahdollista." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "Tiedosto latauskansiossa on suurempi kuin tarjottu tiedosto. Jatkaminen ei ole mahdollista." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "Saman tiedoston siirtoa ei voi jatkaa kahdelta käyttäjältä." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Tila" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Tiedosto" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "Arvioitu aika" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Molemmat" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "Lähetykset" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "Lataukset" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "Lisätiedot" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "Tiedosto:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "Osoite:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Keskeytä" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Hyväksy" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Jatka" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "Avaa kansio..." + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Saapunut" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Lähetetty" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "Aloitusaika" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "Lisää" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Poista" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Peru" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Tallenna" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "ei ota yhteyttä palvelimiin" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "käyttää erityistä asetushakemistoa" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "ei lataa liitännäisiä" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "näyttää käyttäjän asetushakemiston" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "Suorita komento:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "Avaa URL tai suorita komento käynnissä olevassa HexChatissa" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Aloita pienennettynä. Taso: 0=tavallinen, 1=kuvakkeena, 2=ilmoitusalueella" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "taso" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "näyttää versiotiedot" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "Kirjasimen avaaminen ei onnistunut:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "Hakupuskuri on tyhjä.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d tavua" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Verkon lähetysjonossa on %d tavua." + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "Insert in Buffer -komento lisää Data 1:n sisällön syöteriville kohdistimen kohdalle" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "Set Buffer -komento asettaa syöteriviksi Data 1:n sisällön" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "Last Command -komento asettaa syöteriviksi edellisen annetun komennon - vastaa ylänuolen painamista kuoressa" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "Next Command -komento asettaa syöteriviksi seuraavan annetun komennon - vastaa alanuolen painamista kuoressa" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "Tämä komento täydentää syöterivillä osoittimen edellä olevan epätäydellisen kutsumanimen tai komennon. Jos Data 1 on asetettu, kaksi kertaa painaminen valitsee edellisen kutsumanimen, ei seuraavaa" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "Tämä komento vierittää käyttäjäluetteloa ylös ja alas. Jos Data 1 on asetettu, luetteloa vieritetään ylös, muutoin alas" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "Tämä komento vertaa viimeistä annettua sanaa korvauslistaan ja muuttaa sen,jos löytyy täsmäävyys." + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "Tämä komento siirtää päällimmäistä välilehteä yhden vasemmalle" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "Tämä komento siirtää päällimmäistä välilehteä yhden oikealle" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "Tämä komento siirtää nykyistä välilehtiötä vasemmalle" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "Tämä komento siirtää nykyistä välilehtiötä oikealle" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "Lisää syöterivin historiaan, mutta ei lähetä palvelimelle" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "Virhe ladattaessa näppäinsidonta-asetuksia" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "Antamaasi tiedostoon ei voi kirjoittaa." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "Antamaasi tiedostoa ei voi lukea." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "Kyseinen peite on jo olemassa." + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Yksityiset" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Tiedotteet" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "Huomioi toistaiseksi" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "Anna peite huomiotta jätettäville:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Huomioimattomuustilastot:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Kavavia:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Yksityisiä:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Ilmoituksia:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Kutsuja:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "Lisää uusi..." + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "Kanavan nimi on liian lyhyt. Yritä uudestaan." + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "Yhteys palvelimeen %s on valmis." + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "Mitä haluat tehdä?" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "_En mitään, liityn kanaville itse." + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "_Liittyä kanavalle:" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Jos tiedät mille kanavalle haluat liittyä, kirjoita sen nimi tähän." + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "" + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "Näytä tämä valintaikkuna _aina, kun yhteys on muodostettu." + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "Keskustelijana" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Kanavan %s aihe on: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "Kanavalla ei ole aihetta." + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "Palvelimelta on edelleen auki %d kanavaa tai keskustelua. Suljetaanko kaikki?" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "Suljetaanko HexChat?" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "Älä kysy jatkossa." + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Ollaan yhteydessä %i IRC-verkkoon." + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "Lopetetaanko varmasti?" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "Tiedostonsiirtoja on vielä käynnissä." + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "Pienennä ilmoitusalueelle" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "Lisää määre tai värikoodi" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>Lihavoitu</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>Alleviivattu</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "<i>Kursiivi</i>" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "Tavallinen" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "Värit 0–7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "Värit 8–15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "A_setukset" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "Tallenna _lokitiedosto levylle" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "Piilota liittymis- ja poistumisviestit" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "Anna ääni_merkki kun uusi viesti saapuu" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "_Sulje" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "Käyttäjärajan tulee olla numero!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "Suodata värit" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "Ei ulkopuolisia viestejä" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "Aiheensuojaus" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "Vain kutsutuille" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "Moderoitu" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "Banniluettelo" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Tunnussana" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "Käyttäjäraja" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Anna uusi nimimerkki:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "Ei osumia." + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "" + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "_Huomioi kirjainkoko" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "Suorita kirjainkoon huomioiva haku." + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "_Regex" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Tuntematon isäntä" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "Tuntematon tili" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Tuntematon" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Oikea nimi:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "Käyttäjä:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "Tili:" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "Maa:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "Palvelin:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "%u minuuttia sitten" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "Puhunut kanavalla:" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "Poissaoloviesti:" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "%d nimeä valittu." + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "Valikkopalkki on nyt piilossa. Sen saa taas esiin painamalla Ctrl-F9:ää tai hiiren oikeaa painiketta tekstialueen tyhjässä kohdassa." + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "Avaa linkki selaimeen" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "Kopioi valittu linkki" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Liity kanavalle" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "Poistu kanavalta" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "Liity kanavalle uudelleen" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "_Liity automaattisesti" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "Liity kanavalle automaattisesti" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "_Yhdistä automaattisesti" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "CTCP-vastaukset - Erikoiskoodit:\n\n%d = data (koko ctcp)\n%e = nykyinen verkko\n%m = koneen tiedot\n%s = ctcp:n lähettäjän nimimerkki\n%t = aika/päiväys\n%2 = 2. sana\n%3 = 3. sana\n&2 = 2. sanasta rivin loppuun\n&3 = 3. sanasta rivin loppuun\n\n" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "Korvaava teksti" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "He_xChat" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "_Uusi" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "_Lopeta" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "_Näytä" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "_Valikkopalkki" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "_Aihepalkki" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "_Käyttäjäluettelo" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "Tila_painikkeet" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "Kanava_valitsin" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "Välile_htinä" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "P_uuna" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "Verkko_mittarit" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Poissa" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "Graafinen" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "_Koko näyttö" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "_Palvelin" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "Katkaise _yhteys" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "Yh_distä uudelleen" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "Käyttä_jävalikko" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "A_setukset" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "_Ominaisuudet" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "_Ikkuna" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "Siirrä lukumerkki loppuun" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "_Kopioi valinta" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "P_yyhi teksti" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "Etsi" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "Etsi seuraava" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "Etsi edellinen" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "_Ohje" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "_Sisältö" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "_Tietoja" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Nimi" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Nähty viimeksi" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "Tavoittamattomissa" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Ei koskaan" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "%d minuuttia sitten" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "Tunti sitten" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "%d tuntia sitten" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "Tavoitettavissa" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "Anna lisättävä nimimerkki:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "Ilmoita seuraavissa verkoissa:" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "Pilkuilla eroteltu luettelo IRC-verkkoja." + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "Aloita keskustelu" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "_Palauta ikkuna" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "Pii_lota ikkuna" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "Välkytä kun tulee" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "Kanavaviesti" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "Yksityisviesti" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "Korostettu viesti" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "_Vaihda tilaa" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "_Poissa" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "Palaa _takaisin" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Versio" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Kuvaus" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Valitse ladattava skripti tai liitännäinen" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "_Lataa..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "Lataa _uudelleen" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "Tallenna..." + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "Tyhjennä raakaloki" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Uusi verkko" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Haluatko todella poistaa verkon \"%s\" ja kaikki sen palvelimet?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "Käyttäjätunnus ei voi olla tyhjä." + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "Nimimerkkien pitää olla uniikkeja." + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "Palvelimet" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "Liity kanaville automaattisesti" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "Yhdistämiskomennot" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "Avain (salasana)" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "_Muokkaa" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "Yhdistä vain valittuun palvelimeen" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Älä yritä yhdistää muihin palvelimiin, jos valittuun palvelimeen ei saada yhteyttä." + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "Yhdistä tähän verkkoon automaattisesti" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "Ohita välityspalvelin" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "Käytä SSL-yhteyttä tässä verkossa" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "Hyväksy virheelliset SSL-varmenteet" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "Käytä yleisiä käyttäjätietoja" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "_Nimimerkki:" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "2. vaihtoehto:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "Oikea nimi:" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "Käyttäjätunnus:" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "Kirjautumistapa:" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Salasana:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "Kirjautumiseen käytettävä salasana. Jätä tyhjäksi, jos et ole varma." + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "Merkistö:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "Käyttäjätiedot" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "3. vaihtoehto:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "IRC-verkot" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "Aloita ilman verkkoluetteloa" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "Näytä vain suosikit" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "_Muokkaa..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "Lajittele" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "_Suosi" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "Merkitse tämä verkko suosikiksi tai poista suosikkimerkintä." + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "_Yhdistä" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Albania" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Azerbaidzan" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Valko-Venäjä" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Bulgaria" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "Tsekki" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "Hollanti" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "Englanti (Brittiläinen)" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Viro" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "Suomi" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "Ranska" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "Galego" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "Saksa" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "Kreikka" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "Intia" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "Unkari" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "Italia" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "Japani" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "Kannada" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "Korea" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "Latvia" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "Liettua" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "Makedonia" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Malesia" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "Norja (Bokmal)" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "Norja (Nynorsk)" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "Puola" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "Portugali" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "Portugali (Brasilian)" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "Punjabi" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "Venäjä" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "Serbia" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "Slovakki" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "Sloveeni" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "Espanja" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "Ruotsi" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Thaimaa" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "Turkki" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "Ukraina" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Vietnam" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "Valloni" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Yleiset" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "Kieli:" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "Pääfontti:" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Kirjasin:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "Väritä nimimerkit" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "Anna kullekin käyttäjälle oma väri." + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "Sisennä nimimerkit" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "Tasaa nimimerkit oikealle." + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "Näytä lukumerkki" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "Erottaa luetun ja lukemattoman tekstin punaisella viivalla." + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Taustakuva:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "Läpikuultavuuden säätö" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "" + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "" + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "Otsikkorivi" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "Näytä käyttäjämäärä" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "Puhumisajankohdan mukaan" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "Syötekenttä" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "Oikoluku" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "Käytettävät sanakirjat:" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "Nimimerkin täydennys" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "Täydennyksen jälkiliite:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "Nimimerkkitäydennys aakkosjärjestyksessä:" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "nimeä." + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "Lajittelematon" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Ylhäällä" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Alhaalla" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Piilotettu" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "Käyttäjäluettelo" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "Näytä isäntänimet käyttäjäluettelossa" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "Käytä tekstilaatikon kirjasinta ja värejä" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "Väritä nimimerkit käyttäjäluettelossa" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "Näytä käyttäjämäärä kanavilla" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "Lajittelutapa:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "Näytä käyttäjäluettelo:" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "kun kanavalla on käyttäjiä alle:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "Kaksoisnapsautuksen toiminto" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Ikkunat" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Välilehdet" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "Aina" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "Vain itse avatut" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "Automaattinen" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "Palvelinviestit omaan välilehteensä" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "Avaa uusi välilehti yksityisviestin saapuessa" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "Välilehdet aakkosjärjestykseen" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "Uudet välilehdet etualalle:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "Näytä kanavavalitsin:" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "Typistä välilehtien nimet:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "merkin pituisiksi." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "Välilehti vai ikkuna" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "Kanavien avaamispaikka:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "Keskusteluiden avaamispaikka:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "Apuvälineiden avaamispaikka:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "DCC:t, huomioimattomuudet, ilmoitukset jne." + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "Viestit" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "Kysy vahvistusta" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "Kysy tallennuskansiota" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "Tallenna ilman kyselyitä" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "Tiedostot ja hakemistot" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "Hyväksy tarjotut tiedostot automaattisesti:" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Lataa hakemistoon:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "Siirrä valmiit tiedostot hakemistoon:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "Liitä lähettäjän nimimerkki tiedostonimiin" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "Avaa DCC-ikkunat automaattisesti" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "Lähetysikkuna" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "Vastaanottoikkuna" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "Kanavaikkuna" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "Yksittäinen lähetys:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "Yksittäisen siirron suurin sallittu nopeus." + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "Yksittäinen lataus:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "Kaikki lähetykset yhteensä:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "Yhteenlaskettujen siirtojen suurin sallittu nopeus." + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "Kaikki lataukset yhteensä:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "Hälytykset" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "Välkytä ilmoitusalueella, kun tulee:" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "Välkytä tehtäväpalkkia, kun tulee:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "Piipauta, kun tulee:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "Ilmoitusalueen toiminta" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "Ota ilmoitusalueen kuvake käyttöön" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "Pienennä ilmoitusalueelle" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "Sulje ilmoitusalueelle" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "Päivitä paikalla/poissa -statuksesi automaattisesti" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "Vaihda tilaa automaattisesti ilmoitusalueelle piilottaessa." + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "Korostettu viesti" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Viesti korostetaan, kun siinä mainitaan nimimerkkisi tai:" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "Muut korostettavat sanat:" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "Älä korosta viestejä käyttäjiltä:" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "Korosta aina viestit käyttäjiltä:" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "Oletusilmoitukset" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "Lopetus:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "Kanavalta poistuminen:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "Poissaolo:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "Poissaolo" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Näytä poissaoloviestit kerran" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "Näyttää identtiset poissaoloviestit vain kerran." + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "Lopeta oma poissaolo automaattisesti" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "" + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "Sekalaiset" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "Näytä tilat raakamuodossa" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "Piilota liittymis- ja poistumisviestit" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "Piilota oletuksena kanavan liittymis- ja poistumisviestit." + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "Piilota nimimerkin vaihtamisesta aiheutuvat viestit" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "Automaattisen kopioinnin toiminta" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "Kopioi automaattisesti valittu teksti" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "Sisällytä väritiedot automaattisesti" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "Oikea nimi:" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "Vaihtoehtoiset fontit:" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "Käytä palvelimen aikaa jos tuettu" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "Yhdistä palvelimeen uudestaan automaattisesti" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "Automaattisen yhdistämisen viive:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "Automaattisen liittymisen viive:" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Lokiasetukset" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "Vieritettäviä rivejä:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "Lokitiedoston nimi:" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=palvelin %c=kanava %n=verkko." + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "Lisää lokeihin aikaleimat" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "Lokitiedoston aikaleiman muoto:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URL" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(Pois käytöstä)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "Oma IP-osoite" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "Sido osoitteeseen:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "Käyttökelpoinen vain, kun tietokoneessa on monta osoitetta." + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "Tiedostojen siirrot" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "Hae IP-osoite IRC-palvelimelta" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "Tiedustelee osoittettasi IRC-palvelimelta. Rastita, mikäli osoitteesi on esimerkiksi muotoa 192.168.*.*!" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "DCC:n IP-osoite:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "Tiedostoja väitetään lähetettävän tästä osoitteesta." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "Jätä nolliksi, jos haluat käyttöön kaikki portit." + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "Välipalvelin" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "Isäntänimi:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Portti:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Tyyppi:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "Käytä välipalvelinta:" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "Välipalvelimelle tunnistautuminen" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "Käyttäjänimi:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "Identd-palvelin" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "Valitse kuvatiedosto" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "Valitse latauskansio" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Valitse kirjasin" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Selaa..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "Avaa datakansio" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Valitse väri" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "Tekstin värit" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "mIRC-värit:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "Omat värit" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Edustaväri:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Taustaväri:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "Valittu teksti" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "Käyttöliittymän värit" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "Uusi data:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "Lukumerkkiviiva:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "Uusi viesti:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "Poissaolijat:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "Korostus:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Tapahtuma" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "Äänitiedosto" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "Valitse äänitiedosto" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "Äänitiedosto: " + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "Selaa..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "Soita" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Käyttöliittymä" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "Ulkoasu" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Syötekenttä" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Käyttäjäluettelo" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "Kanavavalitsin" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Värit" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Keskustelu" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "Äänet" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "Lisäasetukset" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Verkkoasetukset" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Tiedostonsiirrot" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "Identd" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Asetusryhmät" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "Puuta ei voi laittaa ylös eikä alas!\nMuuta ensin välilehtiasettelua <b>Näytä</b>-valikosta." + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "Oikeaa nimeä ei voi jättää tyhjäksi." + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Osa muutoksista tulee voimaan vasta kun ohjelma käynnistetään uudestaan." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*VAROITUS*\nDCC-siirtojen automaattinen hyväksyminen\nkotihakemistoon voi olla vaarallista. Esim:\nJoku voi lähettää tiedoston .bash_profile." + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "<i>(ei ehdotuksia)</i>" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "Lisää..." + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "Lisää \"%s\" sanakirjaan" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "Virhe jäsennettäessä merkkijonoa" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Tälle signaalille annetaan vain %d argumenttia, $%d on virheellinen" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "Tallenna tekstitiedosto" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ Numero" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Muokkaa tapahtumatekstejä" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "Lataa..." + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Kokeile kaikki" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "OK" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Tyhjennä luettelo" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Kopioi valittu URL" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Kopioi" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Tallenna luettelo tiedostoon" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d oppia, %d yhteensä" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "avaa URLin (irc://palvelin:portti/kanava)" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "" diff --git a/hexchat/po/fr.po b/hexchat/po/fr.po new file mode 100644 index 0000000..6ae5b8a --- /dev/null +++ b/hexchat/po/fr.po @@ -0,0 +1,6264 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Benjamin Sonntag <benjamin@alternc.org>, 2007 +# Benjamin Sonntag <benjamin@sonntag.fr>, 2007,2012 +# Hugo Locurcio, 2014 +# Hugo Locurcio, 2014 +# Hugo Locurcio, 2013-2014 +# Misdre <misdre@hexchat.misdre.info>, 2013 +# Misdre <misdre@hexchat.misdre.info>, 2013 +# Misdre <misdre@hexchat.misdre.info>, 2013 +# Towinet, 2014,2016-2017 +# Hugo Locurcio, 2013 +# Yannick Le Guen <leguen.yannick@gmail.com>, 2014,2016-2018,2020 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2020-01-14 13:11+0000\n" +"Last-Translator: Yannick Le Guen <leguen.yannick@gmail.com>\n" +"Language-Team: French (http://www.transifex.com/hexchat/hexchat/language/fr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "HexChat" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "Client IRC" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "HexChat est un client IRC facile à utiliser et extensible. Il vous permet de rejoindre en toute sécurité plusieurs réseaux et de parler à d'autres utilisateurs en privé ou dans des canaux grâce à une interface personnalisable. Vous pouvez même transférer des fichiers." + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "HexChat prend en charge des fonctionnalités telles que : DCC, SASL, serveurs mandataires, vérification orthographique, alertes, journalisation, thèmes personnalisés et scripts Python et Perl." + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "Fenêtre de conversation principale" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "Discutez avec d'autres personnes en ligne" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "IM;Chat;" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "hexchat" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "Ouvrir le mode sans échec" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "Gestionnaire de thèmes HexChat" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Occupé" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Quitte" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "OFF" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "ON" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Réseau" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<aucun>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Canal" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Attente" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Actif" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Échec" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Terminé" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Connecter" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Interrompu" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "Impossible d'accéder à %s\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Erreur" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s vous propose « %s ». Voulez-vous l'accepter ?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "Aucun DCC actif\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "_Ouvrir la fenêtre de dialogue" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "_Envoyer un fichier" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "Informations de l'_utilisateur (WhoIs)" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "_Ajouter à la liste d'amis" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "_Ignorer" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "Actions de l'o_pérateur" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Donner l'état d'opérateur" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Prendre l'état d'opérateur" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "Donner la parole" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "Prendre la parole" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Expulser/Bannir" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Expulser" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "Bannir" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "ExpulserBannir" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Quitter le canal" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Rejoindre un canal…" + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "Entrer le canal à rejoindre :" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Liens du serveur" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Envoyer une requête ping au serveur" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Cacher la version" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Op" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "Suppr. Op." + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "au revoir" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Entrer la raison pour expulser %s :" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "Envoyer un fichier" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "Dialogue" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Send" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Conversation" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Clear" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "Vous n'avez pas les droits d'écriture vers %s. Rien ne sera enregistré de cette session." + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* Utiliser IRC sous un compte root est idiot !\n Vous devriez créer un compte utilisateur « standard » et\n l'utiliser pour vous connecter.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "OUI " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "NON " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Vous êtes arrosé de requêtes CTCP par %s, %s va être ignoré\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "Vous êtes bombardé de MSG par %s, désactivation de l'option gui_autoopen_dialog.\n" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "Résolu en %s" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "Non trouvé" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "Résolu en :" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "Recherche de %s..." + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s connecté\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s déconnecté\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Vous n'avez encore rejoint aucun canal. Essayez /join #<canal>\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Vous n'êtes pas encore connecté. Essayez /server <hôte> [<port>]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "Le serveur %s existe déjà dans le réseau %s.\n" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "Serveur %s ajouté au réseau %s.\n" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Vous êtes déjà considéré comme absent : %s\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "Vous êtes déjà considéré comme présent : %s\n" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "/bin/sh est nécessaire au fonctionnement\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "Commandes disponibles :" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "Commandes définies par l'utilisateur :" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "Commandes définies par un greffon :" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Taper /HELP <commande> pour plus d'informations, ou /HELP -l" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Paramètre inconnu « %s », ignoré." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "Rendre muet n'est pas pris en charge sur ce serveur." + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "Aucun greffon de ce type n'a été trouvé.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "Impossible de décharger ce greffon.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <nom> <action>, ajouter un bouton au-dessous de la liste des utilisateurs" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "ADDSERVER <Nouveau Réseau> <nouveauserveur/6667>, ajoute un nouveau réseau avec un nouveau serveur dans sa liste." + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <cmd>, envoyer une commande à tous les canaux sur lesquels vous êtes présent" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "ALLCHANL <cmd>, envoyer une commande à tous les canaux sur le serveur courant" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <cmd>, envoyer une commande à tous les serveurs auxquels vous êtes connecté" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "AWAY [<raison>], indique que vous êtes absent (utilisez /BACK pour le démettre)" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "BACK signale que vous êtes de retour (plus absent)" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <masque> [<typeban>], bannir du canal en cours tous ceux qui correspondent au masque. S'ils sont déjà sur ce canal, ils ne seront pas expulsés (nécessite d'être opérateur [chanop])" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <variable> [<valeur>]" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "CHARSET [<encodage>], retourne ou modifie le jeu de caractère utilisé pour la connexion en cours" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "CLEAR [ALL|HISTORY|[-]<nombre>], vider la fenêtre de texte actuelle ou l'historique de commandes" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "CLOSE [-m], ferme l'onglet actuel, en fermant la fenêtre s'il s'agit du seul onglet ouvert, ou si utilisé avec le paramètre « -m », ferme toutes les requêtes." + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <code|joker>, rechercher un code de pays, par exemple : au = Australie" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <pseudo> <message>, envoyer au pseudo un message CTCP, « VERSION » et « USERINFO » sont des messages usuels." + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "CYCLE [<canal>], quitte et rejoint à nouveau le canal donné" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <nick> - accepter un fichier proposé\nDCC SEND [-maxcps=#] <nick> [file] - envoyer un fichier à quelqu'un\nDCC PSEND [-maxcps=#] <nick> [file] - envoyer un fichier en mode passif\nDCC LIST - afficher les connexions DCC\nDCC CHAT <nick> - proposer une discussion DCC à quelqu'un\nDCC PCHAT <nick> - proposer une discussion DCC en mode passif\nDCC CLOSE <type> <nick> <file> exemple :\n /dcc close send paul file.tar.gz" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <pseudo>, supprimer l'état demi-opérateur « chanhalf-op » d'un pseudo sur le canal actuel (nécessite être opérateur [chanop])" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <nom>, supprimer un des boutons situés au-dessous de la liste des utilisateurs" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <pseudo>, supprimer l'état opérateur (« chanop ») d'un pseudo sur le canal actuel (nécessite d'être opérateur [chanop])" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <pseudo>, supprimer la parole donnée à un pseudo sur le canal actuel (nécessite d'être opérateur [chanop])" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, se déconnecter du serveur" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "DNS <pseudo|hôte|IP>, résout une adresse IP ou un nom d'hôte" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <texte>, afficher un texte en local" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <commande>, exécuter une commande. Si l'option -o est utilisée, la sortie est envoyée sur le canal actuel, sinon elle est affichée dans la zone de texte actuelle" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, envoyer un signal « SIGCONT » au processus" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9], tuer une exécution en cours dans la session actuelle. Si -9 est fourni, le processus est tué par le signal « SIGKILL »" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, envoyer un signal « SIGSTOP » au processus" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, envoyer des données à l'entrée standard des processus" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "EXPORTCONF, exporte les paramètres d'HexChat" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, vider la file d'envoi du serveur actuel" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <hôte> [<port>], utiliser un hôte comme serveur mandataire (proxy), le port 23 est utilisé par défaut" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <pseudo> [<mot-de-passe>], tuer un pseudonyme fantôme" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <pseudo>, donner l'état de demi-opérateur de canal « chanhalf-op » au pseudo (nécessite d'être opérateur [chanop)]" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <mot de passe>, vous identifie auprès de nickserv" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <masque> <types...> <options...>\n masque - masque d'hôtes à exclure, par ex. : *!*@*.aol.com\n types - types de données à exclure, un seul ou tous :\n PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n options - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <pseudo> [<canal>], inviter quelqu'un sur un canal, par défaut le canal actuel (nécessite d'être opérateur [chanop])" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <canal>, rejoindre le canal" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "KICK <pseudo> [raison], expulse le pseudo du canal actuel (nécessite d'être opérateur [chanop])" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "KICKBAN <pseudo> [raison], bannit puis expulse le pseudo du canal actuel (nécessite d'être opérateur [chanop])" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, forcer une nouvelle vérification de latence (lag)" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "LASTLOG [-h] [-m] [-r] [--] <chaîne>, cherche la chaîne dans le tampon\n Utiliser -h pour mettre en surbrillance les chaînes trouvées\n Utiliser -m pour respecter la casse\n Utiliser -r si la chaîne est une Expression Rationnelle\n Utiliser -- (double tiret) pour terminer les options, par exemple si vous cherchez '-r'" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <fichier>, charger un greffon ou un script" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, retirer globalement les droits d'opérateur à tous les demi-opérateurs (halfops) du canal actuel (nécessite d'être opérateur [chanop])" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, retirer globalement tous les droits d'opérateur à tous les opérateurs du canal actuel (nécessite d'être opérateur [chanop])" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <action>, envoyer l'action sur le canal actuel (les actions sont écrites à la 3ème personne, comme /me est content)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, jeter (kick) massivement tout le monde sauf vous hors du canal actuel (nécessite d'être opérateur [chanop])" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, donner globalement les droits d'opérateur à tous les utilisateurs du canal actuel (nécessite d'être opérateur [chanop])" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "MSG <pseudo> <message>, envoie un message privé, envoyez un message à « . » pour envoyer au dernier pseudo utilisé ou préfixez avec « = » pour une conversation DCC" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "NAMES [canal], liste les pseudonymes dans le canal" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <pseudo> <message>, envoyer une notification CTCP" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noreconnect] <nom_hôte> [<port>]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <pseudo>, définir votre pseudonyme" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "NOTICE <pseudo/canal> <message>, envoie une notification" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [-n réseau1[,réseau2,…]] [<pseudo>], affiche la liste des notifications ou ajoute quelqu'un à cette liste." + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <pseudo>, donner l'état d'opérateur « chanop » au pseudo (nécessite d'être opérateur [chanop])" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<canal>] [<raison>], quitter le canal, par défaut le canal actuel" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <pseudo | canal>, envoyer un ping CTCP au pseudo ou au canal" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "QUERY [-nofocus] <pseudo> [message], ouvre une fenêtre de message privé vers le pseudo et envoie optionnellement un message" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "QUIET <masque> [<quiettype>], rendre muet toutes les personnes qui correspondent au masque dans le canal courant si pris en charge par le serveur." + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<raison>], se déconnecter du serveur actuel" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <texte>, transmettre le texte au serveur sous forme brute" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<hôte>] [<port>] [<mot_de_passe>], peut être appelée exactement comme /RECONNECT pour se reconnecter au serveur actuel ou avec /RECONNECT ALL pour se reconnecter à tous les serveurs ouverts" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<hôte>] [<port>] [<mot_de_passe>], peut être appelée exactement comme /RECONNECT pour se reconnecter au serveur actuel ou avec /RECONNECT ALL pour se reconnecter à tous les serveurs ouverts" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "RECV <texte>, envoie des données brutes à HexChat, comme si elles étaient reçues du serveur IRC." + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "RELOAD <nom>, recharge un greffon ou script" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <texte>, envoyer un texte à l'objet de la fenêtre actuelle" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <pseudo> [<fichier>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <hôte> <port> <canal>, se connecter et rejoindre un canal" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <hôte> <port> <canal>, se connecter et rejoindre un canal" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "SERVER [-ssl] <hôte> [<port>] [<mot de passe>], se connecter à un serveur, le port par défaut est 6667 pour les connexions normales, et 6697 pour les connexions ssl" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <hôte> [<port>] [<mot_de_passe>], se connecter à un serveur, le port par défaut est 6667" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-off|-on] [-quiet] <variable> [<valeur>]" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "SETCURSOR [-|+]<position>, repositionne le curseur dans la zone de saisie" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "SETTAB <nouveau nom>, change le nom d'un onglet, la limite tab_trunc s'applique toutefois." + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "SETTEXT <nouveau texte>, remplace le texte dans la zone de saisie" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<sujet>], définir le sujet si on en fournit un, sinon afficher le sujet actuel" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "\nTRAY -f <délai> <fichier1> [<fichier2>] Définit les fichiers à utiliser pour faire clignoter l'icône de barre d'état.\nTRAY -f <fichier> Définit le fichier à utiliser pour l'icône de barre d'état.\nTRAY -i <numéro> Définit une icône interne pour le clignotement de la barre d'état.\nTRAY -t <texte> Définit le message d'aide de l'icône de barre d'état.\nTRAY -b <titre> <texte> Définit le message flottant de l'icône de barre d'état." + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <masque> [<masque>…], supprime le bannissement pour les masques fournis." + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <masque> [QUIET]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <nom>, décharger un greffon ou un script" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "UNQUIET <masque> [<masque>…], enlève l'état « muet » pour les masques spécifiés si cela est pris en charge par le serveur." + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, ouvrir une URL dans votre navigateur" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "USELECT [-a] [-s] <pseudo1> <npseudo2> etc., mettre en surbrillance le(s) pseudonyme(s) dans la liste des utilisateurs du canal" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <pseudo>, donner la parole à quelqu'un (nécessite d'être opérateur [chanop])" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <message>, écrire le message sur tous les canaux" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <message>, envoyer le message à tous les opérateurs du canal actuel (chanops)" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "Commande utilisateur pour : %s\n" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "Utilisation : %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nAucune aide n'est disponible pour cette commande.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "Cette commande n'existe pas.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "Paramètres de la commande utilisateur erronés.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "Trop de commandes utilisateur récursives, abandon." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "Commande %s inconnue. Essayez /help\n" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "La méthode hexchat_plugin_init n'a pas été trouvée. Est-ce réellement un greffon HexChat ?" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "*\tErreur au lancement du serveur identd : %s" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "IDENTD <port> <username>" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "Minuteur %d effacé.\n\n" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "Aucun numéro de réf correspondant n'a été trouvé.\n" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "Aucun minuteur installé.\n" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Êtes-vous sûr que ce serveur et ce port gèrent SSL ?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "Résolution du nom d'hôte %s impossible.\nVeuillez vérifier vos réglages IP.\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "La traversée du serveur mandataire (proxy) a échoué.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Passage au serveur suivant dans %s…\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "Attention : le jeu de caractères « %s » est inconnu. Aucune conversion ne sera effectuée pour le réseau %s." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "%C18*%O$t%C18$1%O ajouté à la liste de notifications." + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "%C22*%O$t%C22$1%O: %C18$2%O sur %C24$4%O par %C26$3%O" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "%C22*%O$tNe peut rejoindre%C22 $1 %O(%C20Vous êtes banni%O)." + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "%C29*%O$tAutorisations bien reçues : %C29$2%O" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "%C29*%O$tAutorisations retirées : %C29$2%O" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "%C23*%O$tAutorisations disponibles :%C29$2%O" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "%C23*%O$tAutorisations demandées :%C29$1%O" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "%C24*%O$t%C28$1%O est maintenant connu sous le nom de %C18$2%O" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O a banni %C18$2%O" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "%C22*%O$tCanal %C22$1%O créé le %C24$2%O" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O a enlevé l'état de semi-opérateur de canal à %C18$2%O" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O a enlevé l'état d'opérateur de canal à %C18$2%O" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O a enlevé la parole à %C18$2%O" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%C a mis une exception sur %C18$2%O" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O a donné l'état de semi-opérateur de canal à %C18$2%O" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%C définit l'exemption d'invitation sur %C18$2%O" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%UCanal Utilisateurs Sujet" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "%C22*%O$t%C26$1%O a mis le mode %C24$2$3%O sur %C22$4%O" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "%C22*%O$tCanal %C22$1%O mode : %C24$2" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O a donné l'état d'opérateur de canal à %C18$2%O" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O rend %C18$2%O muet" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O a enlevé l'exception sur %C18$2%O" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O supprime l'exemption d'invitation sur %C18$2%O" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "%C22*%O$t%C26$1%O a enlevé le mot de passe du canal" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "%C22*%O$t%C26$1%O a enlevé la limite du nombre d'utilisateurs" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O définit le mot-clé du canal à %C24$2%O" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O a mis la limite du canal à %C24$2%O" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O supprime l'état de bannissement de %C18$2%O" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O ne rend plus %C18$2%O muet" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "%C22*%O$tCanal %C22$1%O URL : %C24$2" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O a donné la parole à %C18$2%O" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "%C23*%O$tConnecté. Maintenant entrons..." + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "%C23*%O$tConnexion à %C29$1%C (%C23$2 :$3%O)" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "%C20*%O$tLa connexion a échoué (%C20$1%O)" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "%C24*%O$tRéception d'un CTCP %C24$1%C de %C18$2%O" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "%C24*%C$tRéception d'un CTCP %C24$1%C de %C18$2%C (à %C22$3%C)%O" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "%C24*%O$tRéception d'un son CTCP %C24$1%C de %C18$2%O" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "%C24*%O$tRéception d'un son CTCP %C24$1%C de %C18$2%C (à %C22$3%O)" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "%C23*%O$tConversation DCC vers %C18$1%O annulée." + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "%C24*%O$tConversation DCC, connexion établie avec %C18$1%C %C30[%C24$2%C30]%O" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "%C20*%O$tConversation DCC avec %C18$1%O perdue (%C20$4%O)" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "%C24*%O$tRéception d'un demande de conversation DCC de %C18$1%O" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "%C24*%O$tEnvoi d'une proposition de conversation DCC à %C18$1%O" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "%C24*%O$tVous avez déjà envoyé une demande de conversation à %C18$1%O" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "%C20*%O$tTentative de connexion DCC $1 à %C18$2%O échouée (%C20$3%O)" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "%C23*%O$tRéception de '%C23$1%C' de %C18$2%O" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "%C20*%O$tRéception d'une requête DCC mal formée de %C18$1%O.$a010%C23*%O$tContenu de la trame : %C23$2%O" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "%C24*%O$tProposition '%C24$1%O' à %C18$2%O" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "%C23*%O$tProposition DCC non trouvée." + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "%C23*%O$tDCC RECV '%C23$2%O' à %C18$1%O annulé." + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "%C24*%O$tDCC RECV '%C23$1%O' de %C18$3%O terminé %C30[%C24$4%O cps%C30]%O" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$tDCC RECV connexion établie vers %C18$1 %C30[%O%C24$2%C30]%O" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "%C20*%O$tDCC RECV '%C23$1%O' de %C18$3%O échoué (%C20$4%O)" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "%C20*%O$tDCC RECV : Impossible d'ouvrir '%C23$1%C' en écriture (%C20$2%O)" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "%C23*%O$tLe fichier '%C24$1%C' existe déjà, il sera enregistré sous « %C23$2%O » à la place." + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "%C24*%O$t%C18$1%C a demandé la reprise de '%C23$2%C' de %C24$3%O." + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "%C23*%O$tDCC SEND '%C23$2%C' vers %C18$1%O annulé." + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "%C24*%O$tDCC SEND '%C23$1%C' vers %C18$2%C terminé %C30[%C24$3%C cps%C30]%O" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$tDCC SEND connexion établie vers %C18$1 %C30[%O%C24$2%C30]%O" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "%C20*%O$tDCC SEND '%C23$1%C' vers %C18$2%C échoué (%C20$3%O)" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "%C24*%O$t%C18$1%C a offert '%C23$2%C' (%C24$3%O octets)" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "%C20*%O$tDCC $1 '%C23$2%C' vers %C18$3%O bloqué, annulation." + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "%C20*%O$tDCC $1 '%C23$2%C' vers %C18$3%O temps d'attente écoulé, annulation." + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "%C24*%O$t%C18$1%O effacé de la liste de notifications." + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "%C20*%O$tDéconnecté (%C20$1%O)" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "%C24*%O$tVotre IP a été trouvée :%C30[%C24$1%C30]%O" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "%O%C18$1%O ajouté à la liste à ignorer." + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "%OIgnore sur %C18$1%O modifié." + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "%O%C18$1%O enlevé de la liste à ignorer." + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "%OLa liste à ignorer est vide." + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "%C20*%O$tImpossible de rejoindre le canal %C22$1%C (%C20Vous devez être invité%O)" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "%C24*%O$tVous avez été invité sur %C22$1%O par %C18$2%O (%C29$3%O)" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "%C23*$t$1 ($3%C23) vient de rentrer" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "%C20*%O$tImpossible de rejoindre %C22$1%C (%C20Un mot de passe est demandé%O)" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "%C22*%O$t%C26$1%C a expulsé %C18$2%C de %C22$3%C (%C24$4%O)" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "%C19*%O$t%C19Vous avez été expulsé par %C26$1%C (%C20$2%O)" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "%C29*%O$t%C29MOTD passé%O" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "%C23*%O$t%C28$1%C est déjà utilisé. Tentative avec %C18$2%O…" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "%C23*%O$t%C28$1%C est erroné. Tentative avec %C18$2%O…" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "%C20*%O$tPseudonyme erroné ou déjà utilisé. Utilisez /NICK pour en essayer un autre." + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "%C20*%O$tDCC non trouvé." + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "%C23*%O$tAucun processus ne tourne pour l'instant" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "%C23*%O$tNotification : %C18$1%C est absent (%C24$2%O)" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "%C23*%O$tNotification : %C18$1%C est de retour" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tLa liste de notification est vide." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "%C23*%O$t%C23$1%O utilisateurs dans la liste de notifications." + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "%C23*%O$tInformation : %C18$1%C est déconnecté (%C29$3%O)" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "%C23*%O$tInformation : %C18$1%C est connecté (%C29$3%O)" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "%C24*$t$1 ($2%C24) est parti" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "%C24*$t$1 ($2%C24) est parti ($4)" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "%C24*%O$tRéponse au ping de %C18$1%C : %C24$2%O seconde(s)" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "%C20*%O$tPas de réponse au ping pendant %C24$1%O secondes, déconnexion." + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "%C24*%O$tLe processus tourne déjà" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "%C24*$t$1 a quitté ($2)" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "%C24*%O$t%C26$1%C a activé le mode %C30[%C24$2%C30]%O" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "%O-%C29$1/Wallops%O-$t$2" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "%C24*%O$tRecherche de l'adresse IP de %C18$1%O…" + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "%C23*%O$tAuthentification par SASL en tant que %C18$1%O (%C24$2%O)" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "%C29*%O$tConnecté." + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "%C29*%O$tRecherche de %C29$1%O" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "%C23*%O$tArrêt de la tentative de connexion précédente (%C24$1%O)" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "%C22*%O$tLe sujet de %C22$1%C est : $2%O" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "%C22*%O$t%C26$1%C a modifié le sujet pour : $2%O" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "%C22*%O$tSujet de %C22$1%C choisi par %C26$2%C (%C24$3%O)" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C20*%O$tHôte inconnu. Peut-être l'avez-vous mal orthographié ?" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "%C20*%O$tImpossible de rejoindre %C22$1%C (%C20La limite d'utilisateurs est atteinte%O)" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "%C22*%O$tUtilisateurs sur %C22$1%C : %C24$2%O" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%C est absent %C30(%C23$2%O%C30)%O" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "%C23*%O$t%C28[%C18$1%C28] %OFin de la liste WHOIS." + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O inactif %C23$2%O" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O inactif %C23$2%O, connexion : %C23$3%O" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O Hôte réel : %C23$2%O, IP réelle : %C30[%C23$3%C30]%O" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "%C19*%O$tVous parlez maintenant sur %C22$2%O" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "%C19*%O$tVous avez été expulsé de %C22$2%C par %C26$3%O (%C20$4%O)" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "%C19*%O$tVous avez quitté le canal %C22$3%O" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "%C19*%O$tVous avez quitté le canal %C22$3%C (%C24$4%O)" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "%C20*%O$tVous avez invité %C18$1%O sur le canal %C22$2%O (%C24$3%O)" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "%C20*%O$tVotre pseudonyme est maintenant %C18$2%O" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "Historique chargé depuis" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** FIN DU JOURNAL À %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** DÉBUT DU JOURNAL À %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "* Impossible d'ouvrir le(s) fichier(s) journaux en écriture.\nVeuillez vérifier les permissions de %s" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "Message de gauche" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "Message de droite" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "Adresse IP" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Nom d'utilisateur" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "Pseudo de la personne qui arrive" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "Canal à rejoindre" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "Hôte de la personne" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "Le compte de la personne" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Pseudonyme" + +#: src/common/text.c:980 +msgid "The action" +msgstr "Action" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "Caractère de mode" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "Texte identifié" + +#: src/common/text.c:987 +msgid "The text" +msgstr "Texte" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "Message" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Nom du serveur" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "Autorisations reçues" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "Autorisations retirées" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "Autorisations du serveur" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "Autorisations demandées" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Ancien pseudonyme" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Nouveau pseudonyme" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "Pseudonyme de la personne qui a changé le sujet" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Sujet" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "Pseudonyme de celui qui a expulsé" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "Personne qui se fait expulser" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "Canal" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "Raison" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "Pseudonyme de la personne qui part" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "Heure" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "Créateur" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Pseudonyme" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Raison" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Hôte" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "Émetteur" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "Heure au format x.x (voir ci-dessous)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "Canal de destination" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "Son" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "Pseudonyme de la personne" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "Événement CTCP" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "Pseudonyme de la personne qui a défini la clé" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "Clé" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "Pseudonyme de la personne qui a défini la limite" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "Limite" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "Pseudonyme de la personne qui a donné l'état d'opérateur" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "Pseudonyme de la personne qui a reçu l'état d'opérateur" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "Pseudonyme de la personne qui a reçu l'état de demi-opérateur" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "Pseudonyme de la personne qui a donné l'état de demi-opérateur" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "Pseudonyme de la personne qui a donné la parole" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "Pseudonyme de la personne à qui a été donnée la parole" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "Pseudonyme de la personne qui a fait le bannissement" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "Masque de bannissement" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "Pseudonyme de la personne qui a rendu muet" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "Le masque « quiet »" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "Pseudonyme de la personne qui a supprimé la clé" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "Pseudonyme de la personne qui a supprimé la limite" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "Pseudonyme de la personne qui a retiré l'état d'opérateur" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "Pseudonyme de la personne à qui on a supprimé l'état d'opérateur" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "Pseudonyme de la personne qui a retiré l'état de demi-opérateur" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Pseudonyme de la personne à qui on a supprimé l'état de demi-opérateur" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "Pseudonyme de la personne qui a retiré la parole" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "Pseudonyme de la personne à qui on a supprimé la parole" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "Pseudonyme de la personne qui a retiré le bannissement " + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "Pseudonyme de la personne qui a retiré l'état muet" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "Pseudonyme de la personne qui a fait l' « exempt »" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "Masque d'exempt" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "Pseudonyme de la personne qui a supprimé l'exempt" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "Pseudonyme de la personne qui a fait l'invite" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "Masque d'invite" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "Pseudonyme de la personne qui a enlevé l'invite" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "Pseudonyme de la personne qui a défini le mode" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "Signe du mode (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "Lettre de mode" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "Canal de destination" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Nom complet" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Membre des canaux (opérateur IRC)" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Informations serveur" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Durée d'inactivité" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Heure de connexion" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Raison de l'absence" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Message" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Compte" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "utilisateur réel@hôte" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "IP réelle" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Nom du canal" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "Mécanisme" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "Nombre ou identifiant" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Texte" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Pseudonyme de la personne qui vous a invité" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Utilisateurs" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "Pseudonyme déjà utilisé" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Pseudonyme en essai" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Port" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "Chaîne de modes" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "Type de DCC" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Nom de fichier" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Nom du fichier de destination" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "cps" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "Chemin" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Position" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Taille" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "Chaîne DCC" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "Raison de l'absence" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "Nombre de notifications" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Ancien nom de fichier" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Nouveau nom de fichier" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Destinataire" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Masque d'hôte" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Nom d'hôte" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "Paquet" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "Secondes" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "Pseudonyme de la personne qui a été invitée" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Masque de bannissement" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "qui a défini le bannissement" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Heure du bannissement" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "Impossible de lire le fichier audio :\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "L'hôte distant a fermé la socket" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "Connexion refusée" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "Pas de route vers l'hôte" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Expiration du délai de connexion" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "Ne peut assigner cette adresse" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "Connexion réinitialisée à l'autre extrémité" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "Ascension, île" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Andorre" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Émirats Arabes Unis" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "Domaine de l'aviation" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Afghanistan" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Antigua-et-barbuda" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Albanie" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Arménie" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Antilles néerlandaises" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Antarctique" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Argentine" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "DNS inverse" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Samoa américaines" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "Région Asie-Pacifique" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Autriche" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Australie" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "Aland, îles" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Azerbaïdjan" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Bosnie-herzégovine" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Barbade" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Bangladesh" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Belgique" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Burkina faso" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Bulgarie" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Bahreïn" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "Businesses" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Bénin" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Bermudes" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Brunéi darussalam" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Bolivie" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Brésil" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Bahamas" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Bhoutan" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Bouvet, île" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Bélarus" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Canada" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "Catalan" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Cocos (keeling), îles" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "République Démocratique du Congo" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "Centrafricaine, république" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Congo" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "Suisse" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "Côte d'Ivoire" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Cook, îles" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Chili" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Cameroun" + +#: src/common/util.c:738 +msgid "China" +msgstr "Chine" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Colombie" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Internic commercial" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "Coopératives" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Costa rica" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "Serbie Montenegro" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Cuba" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Cap-vert" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Christmas, île" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Chypre" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "Tchèque, république" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "Allemagne de l'Est" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Allemagne" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Djibouti" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Danemark" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Dominique" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "Dominicaine, république" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Algérie" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Équateur" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Institution éducative" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Estonie" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Égypte" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Sahara occidental" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Érythrée" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "Espagne" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Éthiopie" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "Union Européenne" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Finlande" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Fidji" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Falkland, îles (malvinas)" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Micronésie, états fédérés de" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Féroé, îles" + +#: src/common/util.c:770 +msgid "France" +msgstr "France" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Grande Bretagne" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Grenade" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Géorgie" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Guyane française" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "Îles anglo-normandes" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Ghana" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Groenland" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Gambie" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Guinée" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Gouvernement" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Guadeloupe" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Guinée équatoriale" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Grèce" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Géorgie du sud et les îles Sandwich du sud" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Guinée-bissau" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Guyana" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Hong-kong" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Heard, île et McDonald, îles" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Croatie" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Haïti" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Hongrie" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Indonésie" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Irlande" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Israël" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "Île de Man" + +#: src/common/util.c:801 +msgid "India" +msgstr "Inde" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "Informatif" + +#: src/common/util.c:803 +msgid "International" +msgstr "International" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Océan indien, territoire britannique de l'" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Iraq" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "Iran, république islamique d'" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Islande" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Italie" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Jamaïque" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Jordanie" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "Relatif au travail" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Japon" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Kenya" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Kirghizistan" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Cambodge" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Comores" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "Saint-kitts-et-nevis" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Corée, république populaire démocratique de" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Corée, république de" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Koweït" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Caïmanes, îles" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Kazakhstan" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Lao, République Démocratique Populaire" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Liban" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Sainte-lucie" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Sri lanka" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Libéria" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Lituanie" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Luxembourg" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Lettonie" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Libyenne, jamahiriya arabe" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Maroc" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Monaco" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Moldova, république de" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "Montenegro" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "Médical États-Unis" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Madagascar" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Marshall, îles" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Militaire" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Macédoine, l'ex-République Yougoslave de" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Mongolie" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Macao" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "Périphériques mobiles" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Mariannes du nord, îles" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Martinique" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Mauritanie" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Malte" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Maurice" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "Musées" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Maldives" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "Mexique" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Malaisie" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Mozambique" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Namibie" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "Noms propres" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Nouvelle-Calédonie" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Réseau Internic" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Norfolk, île" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Nigéria" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Pays-Bas" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Norvège" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Népal" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Niué" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "Nouvelle-Zélande" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "Internic Organisation non-lucrative" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Pérou" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Polynésie française" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Papouasie-nouvelle-Guinée" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Philippines" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Pologne" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "Saint-Pierre-et-Miquelon" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Porto Rico" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "Professions" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "Territoires Palestiniens" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Portugal" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Palaos" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Paraguay" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Qatar" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Réunion" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Roumanie" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "Ancien ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "Serbie" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Russie, fédération de" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Rwanda" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Arabie saoudite" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Salomon, îles" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Seychelles" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Soudan" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Suède" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Singapour" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "Sainte-Hélène" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Slovénie" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard et île jan mayen" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "Slovaquie" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Sierra Léone" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "Saint-Marin" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Sénégal" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Somalie" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Suriname" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "Sud-Soudan" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "Sao Tomé-et-Principe" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Ex URSS" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Syrienne, république arabe" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Swaziland" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Turks et caïques, îles" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Tchad" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "Services de communication téléphonique" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "Terres australes françaises" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Thaïlande" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Tadjikistan" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Timor-Leste" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Turkménistan" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Tunisie" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Turquie" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "Voyage et tourisme" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Trinité-et-Tobago" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Taïwan, province de chine" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Tanzanie, République-Unie de" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Ukraine" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Ouganda" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Royaume-Uni" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "États-Unis" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Uruguay" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Ouzbékistan" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Saint-Siège (État de la Cité du Vatican)" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "Saint-Vincent et les Grenadines" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Vénézuela" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "Îles Vierges Britanniques" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "Îles Vierges des États-Unis" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Viet Nam" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "Wallis et Futuna" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "Divertissements pour adultes" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Yémen" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Yougoslavie" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Afrique du Sud" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Zambie" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "Impossible de se connecter au bus de session" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "Impossible de compléter NameHasOwner" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "Impossible de terminer la commande" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "accès distant" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "greffon pour l'accès à distance en utilisant DBUS" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Impossible de se connecter au bus: %s\n" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Échec de l'acquisition de %s : %s\n" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Table de caractères" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "Bannissements" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "Exceptions" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "Exception" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "Invitations" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Inviter" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "Muets" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "Muet" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "Copier le masque" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "%s sur %s par %s" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "Copier l'entrée" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "Non connecté." + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "Vous devez sélectionner des bannissements." + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "Voulez-vous vraiment enlever tous les éléments de %s ?" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "Type" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Masque" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "De" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Date" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Vous pouvez ouvrir la fenêtre de la liste des bannissements uniquement lorsque vous vous trouvez dans un onglet de canal." + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "Liste des bannissements (%s) - %s" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Enlever" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Scinder" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Rafraîchir" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Affichage de %d/%d utilisateurs sur %d/%d canaux." + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Choisir un nom de fichier de sortie" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "Re_joint le canal" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "_Copie le nom du canal" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "Copie le suje_t du canal" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "Liste des canaux (%s) - %s" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "_Recherche" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "_Télécharger" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "Enregistrer la _liste…" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "Seuls les canaux " + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "ayant entre" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "et" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "utilisateurs." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "Chercher dans :" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Nom du canal" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "Type de recherche :" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "Recherche simple" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "Recherche par motif (*)" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "Expression rationnelle" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Rechercher :" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Envoyer le fichier à %s" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "Ce fichier ne peut être repris." + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "Impossible d'accéder au fichier : %s\n%s.\nReprise impossible." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "Le fichier dans le répertoire des téléchargements est plus gros que le fichier proposé. La reprise est impossible." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "Impossible de reprendre le même fichier en provenance de deux personnes différentes." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "Envois et récupérations - %s" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "État" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Fichier" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "Heure de fin estimée" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Les deux" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "Envois" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "Récupérations" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "Détails" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "Fichier : " + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "Adresse : " + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Interrompre" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Accepter" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Reprendre" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "Ouvrir le dossier…" + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "Liste de conversations DCC - %s" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Recv" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Envoyé" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "Heure de début" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "Ajouter" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Supprimer" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Annuler" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Enregistrer" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "Ne pas se connecter automatiquement aux serveurs" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "Utiliser un répertoire de configuration différent" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "Ne charger aucun greffon automatiquement" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "Afficher le répertoire de chargement automatique des greffons/scripts" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "Afficher le répertoire de configuration de l'utilisateur" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "Ouvrir une URL irc://server:port/channel?key" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "Exécuter la commande :" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "Ouvrir l'URL ou exécuter la commande dans un HexChat existant" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Démarré minimisé. 0=Normal 1=Minimisé 2=Dans l'icône d'état" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "niveau" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "Afficher la version" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "L'ouverture de la police a échoué :\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "Le tampon de recherche est vide.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d octets" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "File d'envoi du serveur : %d octets" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "La commande d'action Exécuter (Run) lance la donnée dans Data 1 telle que si elle avait été tapée dans la boîte de saisie dans laquelle vous pressez la séquence de touches. Ainsi elle peut contenir du texte (qui sera envoyé à la chaîne/personne), des commandes ou des commandes d'utilisateur. Lorsqu'elle est exécutée tous les caractères \\n dans Données 1 sont utilisés pour délimiter les commandes séparées, afin qu'il soit possible de faire fonctionner davantage qu'une commande. Si vous voulez un \\n dans le texte réel alors entrez \\\\" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "La page changements (Change Page) commande le basculement entre les pages du carnet. Si Donnée 2 est paramétrée à n'importe quoi alors le commutateur sera relatif à la position actuelle. Paramétrer Donnée 1 à auto afin de commuter vers la page ayant l'activité la plus récente et la plus fréquente (requêtes d'abord, puis canaux mis en évidence, canaux avec des dialogues, canaux avec d'autres données)" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "La commande Insert in Buffer insérera le contenu de Données 1 dans la zone où la séquence de touches a été pressée à la position actuelle du curseur" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "La commande Scroll Page fait défiler le widget textuel vers le haut ou vers le bas d'une page ou d'une ligne. Définir Data 1 soit à Top, Bottom, Up, Down, +1 ou -1." + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "La commande Set Buffer met le contenu de Données 1 dans la zone où la séquence de touches a été pressée" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "La commande Last Command met dans la zone la dernière commande entrée - même comportement que la flèche vers le haut du pavé numérique dans un interpréteur de commandes" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "La commande Next Command met dans la zone la prochaine commande entrée - même comportement que la flèche vers le bas du pavé numérique dans un interpréteur de commandes" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "Cette commande change le texte de la zone de saisie pour compléter un pseudo ou une commande incomplet. Si Données 1 est défini, alors un double appui dans une chaîne sélectionnera le dernier pseudo, pas le suivant" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "Cette commande parcourt vers le haut ou le bas la liste des pseudonymes. Si Données 1 est défini elle parcourt vers le haut, sinon elle parcourt vers le bas" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "Cette commande vérifie si le dernier mot saisi dans la zone est présent dans la liste de remplacements et le remplace si elle trouve une correspondance" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "Cette commande déplace l'onglet de devant d'un cran vers la gauche" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "Cette commande déplace l'onglet de devant d'un cran vers la droite" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "Cette commande déplace l'ensemble des onglets vers la gauche" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "Cette commande déplace l'ensemble des onglets vers la droite" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "Placer la ligne de saisie dans l'historique mais ne pas l'afficher sur le serveur" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "Il y a eu une erreur au chargement de la configuration des raccourcis clavier" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "Sélectionner une ligne pour obtenir des informations sur son action." + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "Raccourcis clavier - %s" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "Impossible d'écrire dans ce fichier." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "Impossible de lire ce fichier." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "Ce masque existe déjà." + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Privé" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Notice" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "Ne plus ignorer" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "Voulez-vous vraiment enlever tous les éléments à ignorer ?" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "Entrer le masque d'exclusion :" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "Liste d'ignorance - %s" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Statistiques d'ignorance :" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Canal :" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privé :" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Notice :" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP :" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Invite :" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "Ajouter…" + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "Le nom de canal est trop court, veuillez réessayer." + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "Connexion complète - %s" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "Connecté à %s." + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "Dans la fenêtre de liste des serveurs, aucun canal (salon de conversation) n'a été entré pour être rejoint automatiquement sur ce réseau." + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "Que désirez-vous faire maintenant ?" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "_Rien, je rejoindrai un canal plus tard." + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "Re_joindre le canal :" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Si vous connaissez le nom du canal que vous désirez rejoindre, entrez-le ici." + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "Ou_vrir la liste des canaux." + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "Récupérer la liste des canaux peut prendre une minute ou deux." + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "_Toujours afficher ce dialogue après la connexion." + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "Dialoguer avec" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Le sujet de %s est : %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "Aucun sujet n'est défini" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "Ce serveur comporte déjà %d canaux ou dialogues qui lui sont associés. Faut-il tous les fermer ?" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "Quitter HexChat ?" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "Ne plus me demander." + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Vous êtes connecté à %i réseaux IRC." + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "Voulez-vous vraiment quitter ?" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "Des transferts de fichiers sont en cours." + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "_Minimiser dans la barre d'état" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "Insérer un attribut ou un code de couleur" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>Gras</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>Souligné</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "<i>Italique</i>" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "Normal" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "Couleurs 0-7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "Couleurs 8-15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "Paramètre_s" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "Journa_liser sur le disque" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "_Recharger le tampon" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "Enlever les _couleurs" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "Cac_her les messages entrée/sortie" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "Al_ertes supplémentaires" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "Biper sur les _messages" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "Faire clignoter l'_icône de barre d'état" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "Faire clignoter la _barre des tâches" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "_Détacher" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "_Fermer" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "La limite d'utilisateurs doit être un nombre !\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "Filtrer les couleurs" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "Aucun message de l'extérieur" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "Protection du sujet (Topic)" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "Invite seulement" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "Modéré" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "Liste des bannissements" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Mot-clé" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "Limite d'utilisateurs" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Entrer le nouveau pseudonyme :" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "Aucun résultat trouvé." + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "Fin atteinte lors de la recherche ou non trouvé." + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "Mettre tout en _Surbrillance" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "Mettre en surbrillance toutes les occurrences et souligner l'occurrence actuelle." + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "Sensible à la _casse" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "Réaliser une recherche sensible à la casse." + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "Expression _rationnelle" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "Traiter la chaîne de recherche comme une expression rationnelle." + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Hôte inconnu" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "Compte inconnu" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Inconnu" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Nom réel :" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "Utilisateur :" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "Compte :" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "Pays :" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "Serveur :" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "il y a %u minutes" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "Dernier message :" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "Message d'absence :" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "%d pseudonymes sélectionnés." + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "La barre de menu est maintenant masquée. Vous pouvez l'afficher en appuyant sur Contrôle+F9 ou en faisant un clic droit sur une zone vide de la fenêtre principale." + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "Ouvrir le lien dans un navigateur" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "Copier le lien sélectionné" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Rejoindre le canal" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "Partir du canal" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "Cycler canal" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "Rejoindre _automatiquement" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "Rejoindre le canal automatiquement" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "Connexion _automatique" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "Menu utilisateur - %s" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "Éditer ce menu" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "Ligne de repérage désactivée." + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "Ligne de repérage jamais définie." + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "Ligne de repérage repositionnée manuellement." + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "Ligne de repérage repositionnée à cause de la limite de défilement." + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "Ligne de repérage repositionnée avec la commande CLEAR." + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "État de la ligne de repérage inconnu." + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "Récupérer la liste des canaux" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "a été compilé sans prise en charge des greffons." + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "Commandes utilisateur - Codes d'échappement :\n\n%c = canal actuel\n%e = nom du réseau actuel\n%m = informations de la machine\n%n = votre pseudo\n%t = heure/date\n%v = version de HexChat\n%2 = mot 2\n%3 = mot 3\n&2 = du 2ème mot à la fin de la ligne\n&3 = du 3ème mot à la fin de la ligne\n\nexemple :\n/cmd yves bonjour\n\n%2 sera \"yves\"\n&2 sera \"yves bonjour\"." + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "Boutons de la liste d'utilisateurs - codes spéciaux :\n\n%a = tous les pseudos sélectionnés\n%c = canal actuel\n%e = nom du réseau actuel\n%h = hôte des pseudos sélectionnés\n%m = informations sur la machine\n%n = votre pseudo\n%s = pseudo sélectionné\n%t = date et heure\n%u = nom de compte des pseudos sélectionnés" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "Boutons de dialogue - codes spéciaux :\n\n%a = tous les pseudos sélectionnés\n%c = canal actuel\n%e = nom du réseau actuel\n%h = hôte du pseudo sélectionné\n% = informations sur la machine\n%n = votre pseudo\n%s = pseudo sélectionné\n%t = date et heure\n%u = nom de compte du pseudo sélectionné" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "Réponses CTCP - Codes d'échappement :\n\n%d = données (toute la réponse CTCP)\n%e = réseau actuel\n%m = informations sur la machine\n%s = pseudo ayant envoyé le CTCP\n%t = date/heure\n%2 = 2e mot\n%3 = 3e mot\n&2 = du 2e mot à la fin de la ligne\n&3 = du 3e mot à la fin de la ligne\n\n" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "Gestionnaire d'URL - Codes d'échappement :\n\n%s = la chaîne URL\n\nSi vous mettez un ! devant la commande\ncela signifie qu'elle sera envoyée\nau terminal plutôt qu'à HexChat." + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "Commandes définies par l'utilisateur - %s" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "Menu contextuel de la liste des utilisateurs - %s" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "Remplacer - %s" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "Remplacer par" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "Gestionnaires d'URL - %s" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "Boutons de la liste des utilisateurs - %s" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "Boutons de dialogue - %s" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "Réponses CTCP - %s" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "He_xChat" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "Li_ste des réseaux" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "_Nouveau" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "Onglet de serveur" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "Onglet de canal" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "Fenêtre de serveur" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "Fenêtre de canal" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "_Charger un greffon ou un script" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "_Quitter" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "_Vue" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "Barre de _menu" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "Barre de suje_t" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "Liste d'_utilisateurs" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "Boutons de la liste des utili_sateurs" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "Boutons de m_ode" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "Sélecteur de _canaux" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "_Onglets" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "_Arbre" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "_Indicateurs du réseau" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Aucun" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "Graphique" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "_Plein écran" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "_Serveur" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "Se _déconnecter" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "Se _reconnecter" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "Re_joindre un canal" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "_Liste des canaux" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "Se marquer _absent" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "Menu de l'_utilisateur" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "_Paramètres" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "_Préférences" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "Remplacement automatique" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "Réponses CTCP" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "Boutons de dialogue" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "Raccourcis clavier" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "Événements textuels" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "Gestionnaires d'URL" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "Commandes utilisateur" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "Boutons de la liste des utilisateurs" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "Menu contextuel de la liste des utilisateurs" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "_Fenêtre" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "Liste des _bannissements" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "Conversation directe" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "_Transferts de fichiers" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "Liste d'amis" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "Liste d'ignorance" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "_Greffons et scripts" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "Journal b_rut" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "Récupération d'_URL" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "Repositionner la ligne de repérage" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "Aller à la ligne de repérage" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "_Copier la sélection" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "_Effacer le texte" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "Enregistrer le texte" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "Recherche" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "Rechercher du texte" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "Chercher le suivant" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "Chercher le précédent" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "_Aide" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "_Contenu" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "À _propos" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "_Attacher" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Nom" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Dernière apparition" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "Déconnecté" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Jamais" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "il y a %d minutes" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "Il y a une heure" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "il y a %d heures" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "Connecté" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "Entrer le pseudonyme à ajouter :" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "Notifier depuis les réseaux suivants :" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "Une liste de réseaux séparés par une virgule est acceptée." + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "Liste d'amis - %s" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "Ouvrir la fenêtre de dialogue" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "Message en surbrillance de : %s (%s)" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "Message de canal de : %s (%s)" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "Proposition de fichier de : %s (%s)" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "Invité sur le canal par : %s (%s)" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "Notification depuis : %s (%s)" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "Message privé de : %s (%s)" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "Connecté à %u réseau(x) et %u canal(aux) - %s" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "_Restaurer la fenêtre" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "Cac_her la Fenêtre" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "_Clignoter lors des" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "Messages de canaux" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "Messages privés" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "Messages en surbrillance" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "_Changer d'état" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "_Absent" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "_Retour" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "Message en surbrillance de : %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "%u messages en surbrillance, le dernier de : %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "Message de canal de : %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "%u messages de canal. - %s" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "Message privé de : %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "%u messages privés, le dernier de : %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "Proposition de fichier de : %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "%u propositions de fichier, la dernière de : %s (%s) - %s" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Version" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Description" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Sélectionner un greffon ou un script à charger" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "Greffons et scripts - %s" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "_Charger…" + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "_Décharger" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "_Recharger" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "Enregistrer sous…" + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "Journal brut (%s) - %s" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "Effacer le journal brut" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Nouveau réseau" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Voulez-vous vraiment supprimer le réseau « %s » et tous ses serveurs ?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "Le nom d'utilisateur ne peut être vide." + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "Vous ne pouvez pas avoir un pseudonyme vide." + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "Vous devez avoir deux pseudonymes uniques." + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "La façon qui permet de vous identifier sur le serveur. Pour des méthodes d'identification personnalisées, utilisez des commandes de connexion." + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "Édition %s - %s" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "Serveurs" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "Joindre automatiquement ces canaux" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "Commandes de connexion" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "%n=Pseudonyme\n%p=Mot de passe\n%r=Nom réel\n%u=Nom d'utilisateur" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "Clé (Mot de passe)" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "_Éditer" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "Ne se connecter qu'aux serveurs sélectionnés" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Ne pas passer au serveur suivant lorsque la connexion échoue." + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "Se connecter à ce réseau automatiquement" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "Ne pas utiliser le serveur mandataire" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "Utiliser SSL pour tous les serveurs de ce réseau" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "Accepter les certificats SSL non valides" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "Utiliser les informations utilisateur globales" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "_Pseudonyme :" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "Second choix :" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "Nom _réel :" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "Nom d'_utilisateur :" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "Méthode d'identification :" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Mot de passe :" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "Le mot de passe utilisé pour se connecter. En cas de doute, le laisser blanc." + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "Jeu de caractères :" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "Liste des réseaux - %s" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "Informations utilisateur" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "Troisième choix :" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Réseaux" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "Sauter la liste des réseaux au démarrage" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "Montrer uniquement les favoris" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "Édit_er…" + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "_Trier" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "Trie la liste des réseaux par ordre alphabétique. Utiliser les touches Maj+Haut et Maj+Bas pour déplacer une ligne." + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "_Favori" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "Mettre ou enlever ce réseau des favoris." + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "C_onnecter" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "Sud-Africain" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Albanais" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "Amharique" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "Asturien" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Azerbaïdjanais" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "Basque" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Biélorusse" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Bulgare" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "Chinois (Simplifié)" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "Chinois (Traditionnel)" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "Tchèque" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "Danois" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "Néerlandais" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "Anglais (Royaume-Uni)" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "Anglais" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Estonien" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "Finnois" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "Français" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "Galicien" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "Allemand" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "Grec" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "Gujarati" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "Hindou" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "Hongrois" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "Indonésien" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "Italien" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "Japonais" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "Kannada" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "Kinyarwanda" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "Coréen" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "Lettonien" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "Lituanien" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "Macédonien" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Malais" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "Malayalam" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "Norvégien (Bokmal)" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "Norvégien (Nynorsk)" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "Polonais" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "Portugais" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "Portugais (du Brésil)" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "Punjabi" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "Russe" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "Serbe" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "Slovaque" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "Slovène" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "Espagnol" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "Suédois" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Thaï" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "Turc" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "Ukrainien" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Vietnamien" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "Wallon" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Général" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "Langue :" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "Police principale :" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Police :" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "Zone de texte" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "Colorer les pseudonymes" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "Attribuer une couleur différente à chaque personne sur l'IRC" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "Indenter les pseudonymes" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "Afficher les pseudonymes en les justifiant à droite" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "Afficher la ligne de repérage" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "Insérer une ligne rouge après le dernier texte lu." + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Image d'arrière-plan :" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "Paramètres de transparence" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "Opacité de la fenêtre :" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "Horodatage" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "Activer l'horodatage" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "Format de l'horodatage :" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "Voir l'article MSDN de strftime pour plus de détails." + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "Voir la page de manuel de strftime pour plus de détails." + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "Barre de titre" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "Afficher le mode du canal" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "Afficher le nombre d'utilisateurs" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "Le dernier ayant parlé d'abord" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "Boîte de saisie" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "Utiliser la police et les couleurs de la zone de texte" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "Couleurs de rendu et attributs" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "Afficher la boite de pseudonyme" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "Afficher l'icône utilisateur dans la liste des pseudos" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "Vérification orthographique" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "Dictionnaire à utiliser : " + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "Utiliser des codes de langues (comme dans « %LOCALAPPDATA%\\enchant\\myspell\\dicts »).\nSéparer les entrées multiples avec des virgules." + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "Utiliser des codes de langue. Séparer les entrées multiples avec des virgules." + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "Complétion des pseudonymes" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "Suffixe pour la complétion des pseudonymes :" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "Tri de la complétion des pseudonymes :" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "Maximum pour la complétion de pseudonymes :" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "Lister les pseudonymes au lieu de les compléter au-delà de ce seuil" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "pseudonymes." + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "Graphique" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "A-Z, les opérateurs en premier" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "Z-A, les opérateurs en dernier" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "Non classé" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "Gauche (en haut)" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "Gauche (en bas)" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "Droite (en haut)" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "Droite (en bas)" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Haut" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Bas" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Masqués" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "Liste d'Utilisateurs" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "Afficher les noms d'hôtes dans la liste des utilisateurs" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "Utiliser la police et les couleurs de la boîte de texte" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "Afficher des icônes pour les modes utilisateurs" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "Afficher des icônes plutôt que du texte dans la liste des utilisateurs." + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "Colorer les pseudonymes de la liste d'utilisateurs" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "Les pseudonymes seront de la même couleur que dans la zone de conversation." + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "Afficher le nombre d'utilisateurs dans les canaux" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "Liste des utilisateurs classée par :" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "Position de la liste des utilisateurs :" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "Suivi de l'absence" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "Suivre le statut d'absence des utilisateurs et les afficher dans une couleur différente" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "Sur les canaux plus petits que :" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "Action sur un double clic" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "Gadgets supplémentaires" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "Mesure de latence :" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "Afficher le limiteur :" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Fenêtres" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Onglets" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "Toujours" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "Uniquement les onglets nécessaires" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "Automatique" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "Dans un onglet supplémentaire" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "Dans l'onglet courant" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "Arbre" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "Type de liste des canaux :" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "Ouvrir un onglet supplémentaire pour les messages du serveur" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "Ouvrir un nouvel onglet lors de la réception de message privé" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "Trier les onglets par ordre alphabétique" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "Afficher des icônes dans l'arbre des canaux" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "Afficher des lignes en pointillé dans l'arbre des canaux" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "Tourner la molette de la souris pour changer d'onglet" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "Clic du milieu pour fermer l'onglet" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "Texte plus petit" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "Focus sur les nouveaux onglets :" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "Affichage des notifications (notices) :" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "Position de la liste des canaux :" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "Réduire les étiquettes des onglets à :" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "lettres." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "Onglets ou fenêtres" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "Ouvrir les canaux dans :" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "Ouvrir les boîtes de dialogue dans :" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "Ouvrir les utilitaires dans :" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Faut-il DCC, Ignore, Notify, etc., dans des onglets ou des fenêtres ?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "Messages" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "Tampon" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "Demander confirmation" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "Demander le dossier de téléchargement" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "Sauver automatiquement" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "Fichiers et répertoires" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "Accepter automatiquement les propositions de fichiers :" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Télécharger les fichiers vers :" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "Déplacer les fichiers complets vers :" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "Enregistrer le pseudonyme dans les noms de fichiers" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "Ouvrir automatiquement les fenêtres DCC" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "Fenêtre d'envoi" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "Fenêtre de réception" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "Fenêtre de conversation" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "Vitesses de transfert de fichiers maximales (octets par seconde)" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "Par envoi :" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "Vitesse maximale pour un transfert" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "Par téléchargement :" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "Tous les transferts combinés :" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "Vitesse maximale pour tous les fichiers" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "Tous les téléchargements combinés :" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "Alertes" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "Afficher les notifications pour :" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "Faire clignoter l'icône de barre d'état pour :" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "Faire clignoter la barre des tâches pour :" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "Émettre un bip pour :" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "Jouer le son système « Notification de messagerie instantanée » quand les événements sélectionnés surviennent" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "Jouer « message-new-instant » depuis le thème de sons freedesktop.org quand les événements sélectionnés surviennent" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "Jouer un bip GTK sur les événements sélectionnés" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "Passer les alertes quand vous êtes absent" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "Omettre les alertes quand la fenêtre est focalisée" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "Comportement de la barre d'état" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "Activer l'icône de barre d'état" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "Réduire dans la barre d'icônes" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "Fermer dans la barre d'icônes" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "Gérer le statut absent/présent automatiquement" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "Automatiquement changer d'état en cachant l'application dans la barre de tâches." + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "Afficher les notifications uniquement en mode masqué ou iconifié" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "Messages en surbrillance" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Les messages en surbrillance sont ceux où apparait votre pseudo, mais aussi :" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "Mots déclenchant une surbrillance :" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "Pseudos à ne pas mettre en surbrillance :" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "Pseudos à toujours mettre en surbrillance :" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Séparer les mots avec une virgule.\nLes jokers sont acceptés." + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "Faire rebondir l'icône du dock pour :" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "Messages par défaut" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "Quitter :" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "Quitter le canal :" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "Absent :" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "Absent" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "N'afficher qu'une seule fois le message d'absence" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "Afficher des messages d'absence identique une seule fois." + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "Enlever la marque d'absence automatiquement" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "Vous sortir du mode absent avant d'envoyer des messages." + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "Autres" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "Afficher les MODEs sous forme brute" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "WHOIS sur les notifications" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "Envoyer un /WHOIS quand un utilisateur arrive, et qu'il est dans votre liste de notification." + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "Cacher les messages d'entrée et de sortie" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "Cacher les messages d'entrée/sortie par défaut." + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "Cacher les messages de changement de pseudonyme" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "*!*@*.hôte" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "*!*@domaine" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "*!*utilisateur@*.hôte" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "*!*utilisateur@domaine" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "Comportement de la copie automatique" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "Copie automatiquement le texte sélectionné" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "Copier le texte sélectionné vers le presse-papiers quand le bouton gauche de la souris est relâché. Autrement, Ctrl+Maj+C copie le texte sélectionné vers le presse-papiers." + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "Automatiquement inclure l'horodatage" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "Automatiquement inclure l'horodatage dans les lignes de texte copiées. Sinon, inclure l'horodatage lorsque la touche Maj est pressée pendant la sélection." + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "Ajouter automatiquement les informations de couleur" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "Inclure automatiquement les informations de couleur dans les lignes de texte copiées. Autrement, inclure les informations de couleur si la touche Ctrl est pressée lors de la sélection." + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "Nom réel :" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "Police alternative :" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "Séparer plusieurs entrées avec des virgules sans espaces avant ou après la virgule." + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "Afficher des listes compactes" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "Utiliser moins d'espace entre la liste des utilisateurs et l'arbre des canaux." + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "Utiliser le temps serveur si pris en charge" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "Afficher les horodatages obtenus depuis le serveur s'il prend en charge l'extension serveur de temps." + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "Automatiquement se reconnecter aux serveurs en cas de déconnexion" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "Délai de reconnexion automatique :" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "Délai pour rejoindre les canaux :" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "Type de bannissement :" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "Essayer d'utiliser ce masque de bannissement en banissant ou en rendant muet (requiert irc_who_join)." + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Journalisation" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "Afficher le tampon de la session précédente" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "Lignes de défilement :" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "Activer l'enregistrement des conversations" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "Nom du fichier journal :" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Serveur %c=Canal %n=Réseau." + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "Insérer l'horodatage dans les journaux" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "Format de l'horodatage du journal :" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URLs" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "Activer l'enregistrement des URLs " + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "Activer la récupération d'URL" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "Nombre maximum d'URL à récupérer : " + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(Désactivé)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "SOCKS4" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "SOCKS5" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "Auto" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "Toutes les connexions" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "Serveur IRC seulement" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "DCC seulement" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "Votre adresse" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "Lier à :" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "N'est utile que pour les ordinateurs ayant plusieurs adresses." + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "Transferts de fichiers" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "Obtenir mon adresse depuis le serveur IRC" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "Demander au serveur IRC votre adresse réelle. À utiliser si vous avez une adresse du style 192.168.*.* !" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "Adresse IP DCC :" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "Prétendre que vous êtes à cette adresse quand vous proposez des fichiers." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "Premier port d'écoute DCC :" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "Dernier port d'écoute DCC :" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "Laisser les ports à zéro pour la plage complète." + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "Serveur mandataire (proxy)" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "Nom d'hôte :" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Port :" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Type :" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "Utiliser le serveur mandataire (proxy) pour :" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "Authentification par le proxy" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "Utiliser l'authentification (HTTP ou SOCKS5 uniquement)" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "Nom d'utilisateur :" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "Serveur Identd" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "Activé" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "Le serveur répondra par le nom d'utilisateur de réseaux" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "Vous devez avoir les permissions pour écouter sur ce port. Si sa valeur n'est pas 113 (0 renvoie à cette valeur par défaut), vous devez alors configurer la redirection de port." + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "Sélectionner une image" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "Choisir le dossier pour la réception de fichiers" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Choisir une police" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Parcourir…" + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "Ouvrir le dossier des données" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Choisir la couleur" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "Couleurs du texte" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "Couleurs mIRC :" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "Couleurs locales :" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Premier plan :" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Arrière-plan :" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "Texte sélectionné" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "Couleurs de l'interface" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "Nouvelles données :" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "Ligne de repérage :" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "Nouveau message :" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "Utilisateur absent :" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "Surbrillance :" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "Vérification orthographique : " + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "Enlever les couleurs" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Événement" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "Fichier son" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "Sélectionner un fichier son" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "Fichier son :" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "_Parcourir…" + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "_Jouer" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Interface" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "Apparence" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Boîte de saisie" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Liste des utilisateurs" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "Liste des canaux" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Couleurs" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Conversation" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "Sons" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "_Avancés" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Réglages relatifs au réseau" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Transferts de fichiers" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "Identd" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Catégories" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "Vous ne pouvez pas placer l'arbre en haut ou en bas !\nMerci de passer en mode <b>Onglets</b> dans le menu <b>Vue</b> d'abord." + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "L'option Nom réel ne peut être laissée blanche. Le nom réel \"realname\" sera utilisé." + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Certains réglages qui ont été modifiés nécessitent un redémarrage afin d'être effectifs." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*ATTENTION*\nAccepter automatiquement les DCC dans votre répertoire personnel\npeut être dangereux et peut être exploité. Par exemple :\nquelqu'un pourrait vous envoyer un .bash_profile" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "Préférences - %s" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "<i>(pas de suggestion)</i>" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "Plus…" + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "Ajouter « %s » au dictionnaire" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "Ignorer tout" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "Suggestion d'orthographe" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "Erreur Enchant pour la langue %s" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "Il y a eu une erreur d'analyse de la chaîne" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Ce signal n'a reçu que %d paramètres, $%d n'est pas valable" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "Afficher le fichier de texte" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ Numéro" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Éditer les événements" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "Charger depuis…" + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Tout tester" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "OK" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "Récupération d'URL - %s" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Effacer la liste" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Copier l'URL sélectionnée" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Copier" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Enregistrer la liste dans un fichier" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d ops, %d total" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "Ouvrir une URL irc://serveur:port/canal" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "Sysinfo : erreur lors de l'obtention des infos. Défaut de prise en charge ou erreur." + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "Sysinfo : aucune information de ce nom\n" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "Sysinfo : %s est défini à : %d\n" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "Sysinfo : des réglages valables sont : announce (annoncer) et hide_* (cacher) pour chaque morceau d'information. Par exemple hide_os. S'il n'y a pas de valeur définie, il montrera le réglage actuel (ou par défaut).\n" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "Sysinfo : nom de variable invalide\n" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "Greffon %s chargé\n" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "Greffon %s déchargé\n" diff --git a/hexchat/po/gl.po b/hexchat/po/gl.po new file mode 100644 index 0000000..a8ef55e --- /dev/null +++ b/hexchat/po/gl.po @@ -0,0 +1,6254 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Leandro Regueiro <leandro.regueiro@gmail.com>, 2015 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-03 20:10+0000\n" +"Last-Translator: TingPing <tingping@tingping.se>\n" +"Language-Team: Galician (http://www.transifex.com/hexchat/hexchat/language/gl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: gl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "HexChat" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "Cliente de IRC" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "Xestor de temas de HexChat" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Estou ocupado" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Abandonando" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Rede" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<ningún>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Canle" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Agardando" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Activo" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Fallou" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Rematado" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Conectar" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Abortado" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "Non foi posíbel acceder a %s\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Erro" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s ofrécelle \"%s\". Quere aceptar?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "Non hai DCCs activos\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "_Ignorar" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Dar Op" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Tomar Op" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "Dar Voz" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "Tomar Voz" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Botar/Vetar" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Botar" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "Vetar" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "Botar e vetar" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Abandonar a canle" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Entrar á canle..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "Introduza a canle á que quere entrar:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Ligazóns do servidor" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Ping ao servidor" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Agochar versión" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Op" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "Quitar Op" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "adeus" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Introduza razón para expulsar a %s:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "Diálogo" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Enviar" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Chat" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Limpar" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "" + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* Executar o IRC como root é estúpido! Debería\n crear unha conta de usuario e usala para conectarse.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "Si " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "Non.." + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Está recibindo demasiados CTCP de %s, ignorando %s\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s conectados\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s desconectados\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Non entrou en ningún canal. Tente /join #<canal>\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Non conectado. Tente /server <equipo> [<porto>]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Xa está marcado como ausente: %s\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "Necesítase /bin/sh para executarse!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "Comandos dispoñibles:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "Comandos definidos polo usuario:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "Compoñentes definidos polo usuario:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Escriba /HELP <comando> para máis información, ou /HELP -l" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Argumento descoñecido '%s' ignorado." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "" + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "Non se atopou dito complemento.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "Ese complemento négase a ser desactivado.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <nome> <acción>, engade un botón debaixo da lista de usuarios" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <cmd>, envía unha orde a todos as canles aos que se uniu" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <cmd>, envía un comando a todos os servidores aos que está conectado" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <máscara> [<tipo de veto>], veta a todos aqueles que concorden coa máscara da canle actual. Se xa están na canle isto non os expulsa (é necesario ser operador da canle)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "" + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <code|wildcard>, busca o código de país, ex: au = australia" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <alcume> <mensaxe>, envía a mensaxe CTCP ao alcume, as mensaxes comúns son VERSION e USERINFO" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "CYCLE [<canle>], márchase da canle actual e inmediatamente volve a entrar" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <alcume> - acepta un ficheiro ofrecido\nDCC SEND [-maxcps=#] <alcume> [ficheiro] - envía un ficheiro a alguén\nDCC PSEND [-maxcps=#] <alcume> [ficheiro] - envía un ficheiro a alguén usando o modo pasivo\nDCC LIST - amosa a lista DCC\nDCC CHAT <alcume> - ofrece o DCC CHAT a alguén\nDCC PCHAT <alcume> - ofrece o DCC CHAT usando modo pasivo\nDCC CLOSE <tipo> <alcume> <ficheiro> exemplo:\n /dcc close send xoándapena ficheiro.tar.gz" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <alcume>, elimina o estado de semi-operador da canle ao alcume na canle actual (necesita ser operador da canle)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <nome>, borra un botón de debaixo da lista de usuarios" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <alcume>, quita o estado de operador da canle ao alcume na canle actual (necesita ser operador da canle)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <alcume>, quita o estado de voz do alcume na canle actual (necesita ser operador da canle)" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, Desconéctase do servidor" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <texto>, Imprime texto localmente" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <comando>, executa o comando. Se se usa a bandeira -o entón a saída envíase á canle actual, se non, imprímese na caixa de texto actual" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, envía o proceso SIGCONT" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9], mata un executable correndo na sesión actual. Se se indica -9 o proceso é matado pola forza" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, envía ao proceso o sinal de deterse" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, envía os datos á entrada estándar do proceso" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, borra a cola de envío actual do servidor" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <equipo> [<porto>], utiliza un proxy a través dun equipo, o porto por defecto é o 23" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <alcume>, da o estado de semi-operador ao alcume (necesita ser operador da canle)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <contrasinal>, identifícate no servidor" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <máscara> <tipos..> <opcións..>\n máscara - máscara de equipos a ignorar, ex: *!*@*.aol.com\n tipos - tipos de datos a ignorar, un ou todos:\n PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n opcións - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <alcume> [<canle>], invita a alguén a unha canle, por omisión a canle actual (necesita ser operador da canle)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <canle>, entra á canle" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, forza unha nova comprobación de retardo" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <ficheiro>, carga un complemento ou script" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, Quita masivamente o estado de semi-operador na canle actual (necesita ser operador da canle)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, Quita masivamente o estado de operador na canle actual (necesita ser operador da canle)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <acción>, envía a acción á canle actual (as accións están escritas en terceira persoa, como /me jumps)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, Expulsa masivamente a todos excepto a vostede na canle actual (necesita ser operador da canle)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, Otorga masivamente o estado de operador da canle actual (necesita ser operador da canle)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <alcume> <mensaxe>, Envía unha noticia CTCP" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <nome do equipo> [<porto>]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <alcume>, establece seu alcume" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [-n network1[,network2,...]] [<alcume>], lista súa lista de notificacións ou agrega a alguén a ela" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <alcume>, otorga o estado de operador da canle ao alcume (necesita ser operador da canle)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<canle>] [<razón>], abandona a canle, por defecto a canle actual" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <alcume | canle>, Envía pings CTCP ao alcume ou canle" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "" + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<razón>], desconéctase do servidor actual" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <texto>, envía o texto en formato chan hacia o servidor" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<equipo>] [<porto>] [<contrasinal>], Pode ser chamado só como /RECONNECT para reconectarse ao servidor actual ou con /RECONNECT ALL para reconectarse a todos os servidores abertos" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<equipo>] [<porto>] [<contrasinal>], Pode ser chamado só como /RECONNECT para reconectarse ao servidor actual ou con /RECONNECT ALL para reconectarse a todos os servidores abertos" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <texto>, envía texto hacia un obxecto da ventá actual" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <nick> [<ficheiro>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <equipo> <porto> <canle>, Conéctao e entra nunha canle" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <equipo> <porto> <canle>, Conéctao e entra nunha canle" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <equipo> [<porto>] [<contrasinal>], conéctao ao servidor, por defecto o porto é 6667" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<tópico>], estable o tópico se se provee un, se non mostra o tópico actual " + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <máscara> [<máscara>...], reincorpora as máscaras especificadas." + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <máscara> [QUIET]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <nome>, desactiva un complemento ou script" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "" + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, abre unha URL no seu navegador" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "USELECT [-a] [-s] <alcume1> <alcume2> etc, resalta o(s) alcume(s) na lista de usuarios da canle" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <alcume>, otorga o estado de voz a alguén (necesita ser operador da canle)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <mensaxe>, escribe a mensaxe a todos as canles" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <mensaxe>, envía a mensaxe a todos os operadores da canle na canle actual" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "Uso: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nNon hai axuda dispoñible para ese comando.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "Non existe ese comando.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "Argumentos erróneos para o comando de usuario.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "Demasiados comandos recursivos de usuario, abortando." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Está seguro de que é un servidor e porto SSL?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "Non se pode resolver o nome do equipo %s\nComprobe súa configuración de IP!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "Fallou o proxy traversal.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Ciclando ao seguinte servidor en %s...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "Aviso: O conxunto de caracteres \"%s\" é descoñecido. Non se aplicará conversión para a rede %s." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "" + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "" + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%UCanle Usuarios Tópico" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "" + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "" + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "" + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "" + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "" + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "" + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "" + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "" + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "" + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "" + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "" + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "" + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tA lista de notificacións está baleira." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "" + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "" + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "" + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "" + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "Rexistro cargado desde" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** FINALIZANDO CONEXIÓN EN %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** INICIANDO CONEXIÓN EN %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "Mensaxe de ausencia" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "A mensaxe" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "Enderezo IP" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Nome de usuario" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "O alcume da persoa que entra" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "A canle á que está entrando" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "O equipo da persoa" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Alcume" + +#: src/common/text.c:980 +msgid "The action" +msgstr "A acción" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "Modo carácter" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "Texto de identificación" + +#: src/common/text.c:987 +msgid "The text" +msgstr "O texto" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "A mensaxe" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Nome do servidor" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Alcume antigo" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Novo alcume" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "Alcume da persoa que cambiou o tópico" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Tópico" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "O alcume do que expulsa" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "A persoa que está sendo expulsada" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "A canle" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "A razón" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "O alcume da persoa que abandona" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "O tempo" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "O creador" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Alcume" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Razón" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Equipo" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "De quén ven" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "O tempo no formato x.x (vexa debaixo)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "A canle vaise a" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "O son" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "O alcume da persoa" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "O evento CTCP" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "O alcume da persoa que establece a clave" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "A clave" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "O alcume da persoa que establece o límite" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "O límite" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "O alcume da persoa que otorgou os permisos de operador" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "O alcume da persoa que foi convertida en operador" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "O alcume da persoa que foi convertida en semi-operador" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "O alcume da persoa que otorgou os permisos de semi-operador" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "O alcume da persoa que otorgou os permisos de voz" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "O alcume da persoa que foi convertida en voz" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "O alcume da persoa que realizou o veto (banning)" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "A máscara de vetos" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "O alcume de quen eliminou a clave" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "O alcume de quen eliminou o límite" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "O alcume da persoa á que se lle quitou o permiso de operador" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "O alcume da persoa á que se lle quitou os permisos de semi-operador" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "O alcume da persoa á que se lle quitaron os permisos de voz" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "O alcume da persoa que otorgou a execpción" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "A máscara de exención" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "O alcume da persoa que quitou a exención" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "O alcume da persoa que realizou a invitación" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "A máscara de invitación" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "O alcume da persoa que eliminou a invitación" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "O alcume da persoa que estableceu o modo" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "O signo do modo (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "A letra do modo" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "A canle está sendo configurada" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Nome completo" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Membro especial da canle/\"é un operador de IRC\"" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Información do servidor" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Tempo inactivo" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Tempo de conexión" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Razón de ausencia" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Mensaxe" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Conta" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "Verdadeiro usuario@equipo" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "Verdadeira IP" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Nome da canle" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Texto" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Alcume da persoa que lle invitou" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Usuarios" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "Alcume en uso" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Tentando usar o alcume" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Porto" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "Cadea de modos" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "Tipo DCC" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Nome de ficheiro" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Nome do ficheiro de destino" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "Nome da ruta" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Posición" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Tamaño" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "Cadea DCC" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "Número de elementos de notificación" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Nome anterior do ficheiro" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Nome novo do ficheiro" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Receptor" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Máscara de equipo" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Nome de equipo" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "O paquete" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "Segundos" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "Alcume da persoa que foi invitada" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Máscara de veto" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "Quen estableceu o veto" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Tempo de veto" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "Non se pode ler o ficheiro de son:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "Porto pechado no equipo remoto" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "Conexión rechazada" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "Non hai ruta hacia o equipo" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Tempo de espera da conexión agotado" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "Non se pode asignar ese enderezo" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "Conexión reiniciada polo par" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "Illa Ascensión" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Emiratos Árabes Unidos" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Afganistán" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Antiga e Barbuda" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Anguila" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Albania" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Armenia" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Antilas holandesas" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Antártida" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Arxentina" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "DNS inverso" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Samoa Americana" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Austria" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "Fiel á OTAN" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Australia" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "Islas Aland" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Azerbaián" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Bosnia e Herzegovina" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Bangladesh" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Bélxica" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Bulgaria" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Bahrain" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "Negocios" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Brunei Darussalam" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Bolivia" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Brasil" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Bahamas" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Bután" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Isla Bouvet" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Bielorusia" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Belice" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Canadá" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Islas Cocos" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "República Democrática do Congo" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "República Centro Africana" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Congo" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "Suiza" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "Costa d'Ivoire" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Islas Cook" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Chile" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Camerón" + +#: src/common/util.c:738 +msgid "China" +msgstr "China" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Colombia" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Internic Commercial" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "Serbia e Montenegro" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Cuba" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Cabo Verde" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Isla Navidade" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Chipre" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "República Checa" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "Alemaña Occidental" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Alemaña" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Dibuti" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Dinamarca" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Dominica" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "República Dominicana" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Arxelia" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Ecuador" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Institución Educativa" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Estonia" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Exipto" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Sahara Occidental" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "España" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Etiopía" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "Unión Europea" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Finlandia" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Fixi" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Islas Malvinas" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Micronesia" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Islas Feroe" + +#: src/common/util.c:770 +msgid "France" +msgstr "Francia" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Gabón" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Gran Bretaña" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Granada" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Xeorxia" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Guaiana Francesa" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "Islas da Canle da Mancha" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Gana" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Xibraltar" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Groenlandia" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Governo" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Guadalupe" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Guinea Ecuatorial" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Grecia" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "S. Xeorxia e S. Islas Sandwich" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Guinea-Bissau" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Guaiana" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Islas Heard e McDonald" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Croacia" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Haití" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Hungría" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Indonesia" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Irlanda" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Israel" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "Illa de Man" + +#: src/common/util.c:801 +msgid "India" +msgstr "India" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "Informativo" + +#: src/common/util.c:803 +msgid "International" +msgstr "Internacional" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Territorio Oceánico Indio Británico" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Iraq" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "Irán" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Islandia" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Italia" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "Xersei" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Xamaica" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Xordania" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Xapón" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Kenia" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Kyrgyzstan" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Camboia" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Comoros" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "San Kitts e Nevis" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Corea do Norte" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Corea do Sur" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Kuwait" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Illas Caimán" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Kazakhstan" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Líbano" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Santa Lucía" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Liberia" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Lesoto" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Lituania" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Luxemburgo" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Letonia" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Libia" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Marrocos" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Mónaco" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Moldavia" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "Montenegro" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "Servizo Médico de Estados Unidos" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Madagascar" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Illas Marshall" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Militar" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Macedonia" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Mongolia" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Macao" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Islas Marianas do Norte" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Martinica" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Mauritania" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Mauricio" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "Museos" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Maldivas" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "México" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Malasia" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Mozambique" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Namibia" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Nova Caledonia" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Níxer" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Rede de Internic" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Isla Norfolk" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Nixeria" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Holanda" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Noruega" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "Nova Zelanda" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Omán" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "Organización sen ánimo de lucro Internic" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Panamá" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Perú" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Polinesia Francesa" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Papua Nova Guinea" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Filipinas" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Pakistán" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Polonia" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "San Pierre e Miquelón" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Porto Rico" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "Territorio Palestino" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Portugal" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Paraguai" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Qatar" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Reunión" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Romanía" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "Antiga escola de ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "Serbia" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Federación Rusa" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Ruanda" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Arabia Saudí" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Illas Salomón" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Seychelles" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Sudán" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Suecia" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Singapur" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "Santa Helena" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Eslovenia" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Islas Svalbard e Jan Mayen" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "República de Eslovaquia" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Serra Leona" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "San Mariño" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Somalia" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Suriname" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "Sudán do sur" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "Santo Tomé e Principe" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Antiga URSS" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "O Salvador" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Siria" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Swaziland" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Islas Turks e Caicos" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Chad" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "Territorios Franceses do Sur" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Tailandia" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Tajikistan" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Timor Oriental" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Túnez" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Turquía" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Trinidade e Tobago" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Tanzania" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Ucraína" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Reino Unido" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "Estados Unidos de América" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Uruguai" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Uzbekistan" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Cidade Estado do Vaticano" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "San Vicente e as Granadinas" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "Islas Vírxenes Británicas" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "Islas Vírxenes Norteamericanas" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "Illas Wallis e Futuna" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Iemen" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Maiote" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Iugoslavia" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Sudáfrica" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Zambia" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "Non se puido conectar ao bus de sesión" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "Fallou ao completar NameHasOwner" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "Fallou ao completar o Comando" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "acceso remoto" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "complemento para acceso remoto usando DBUS" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Non se puido conectar ao bus de sesión: %s\n" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Fallou ao adquirir %s: %s\n" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Mapa de caracteres" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "Vetar" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Invitar" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "Non conectado." + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "Debe seleccionar algún vetado." + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Máscara" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "De" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Data" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Só podes abrir a ventá da lista de vetados nunha solapa da canle." + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "Lista de vetados (%s) - %s" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Eliminar" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Achicar" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Refrescar" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Amosando %d/%d usuarios en %d/%d canles." + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Seleccione un nome de ficheiro de saída" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "_Entrar á canle" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "_Copiar o nome da canle" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "Copiar texto do _tema" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "Lista de Canles (%s) - %s" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "_Procurar" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "_Descargar lista" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "Gardar _lista..." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "Amosar só:" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "canles con" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "a" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "usuarios." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "Procurar en:" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Nome da canle" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "Buscar tipo..." + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "Busca simple" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "Patrón de coincidencia (Comodíns)" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "Expresión regular" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Buscar:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Enviar ficheiro a %s" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "Ese ficheiro non se pode continuar." + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "Non se pode acceder ao ficheiro: %s\n%s.\nNon é posible continuar." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "O ficheiro no directorio de descarga é máis grande que o ficheiro ofrecido. Non é posible continuar." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "Non se pode reanudar o mesmo ficheiro de dúas persoas." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "Cargas e descargas - %s" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Estado" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Ficheiro" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "Tempo" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Ambos" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "Subidas" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "Descargas" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "Detalles" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "Ficheiro:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "Enderezo:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Abortar" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Aceptar" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Continuar" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "Abrir cartafol..." + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "Lista de Chat DCC - %s" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Recibido" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Enviado" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "Tempo de comezo" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "Engadir" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Borrar" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Cancelar" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Gardar" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "Non reconectarse ao servidor automaticamente" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "Usar un directorio de configuración diferente" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "Non cargar automaticamente ningún complemento" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "Amosar o directorio de configuración de usuario" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "Executar comando:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Iniciar minimizado. Nivel 0=Normal 1=Iconificado 2=Bandexa" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "nivel" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "Amosar a información da versión" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "Fallou ao abrir a fonte:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "O búfer de busca está baleiro.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d bytes" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Cola de envío de rede: %d bytes" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "O comando Inserir no Búfer insertará o contido de Data 1 na entrada onde a secuencia de teclas foi pulsada na posicón actual do cursor" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "O comando Establecer búfer establece a entrada onde a secuencia de teclas foi introducida aos contidos de Data 1" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "O comando Último Comando establece a entrada para conter o último comando introducido á igual que premer a tecla enriba na liña de comandos" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "O comando Seguinte Comando establece a entrada que conteña o seguinte comando ingresado á igual que ao premer a tecla abaixo na liña de comandos" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "Este comando cambia o texto na entrada para completar un alcume incompleto ou un comando. Se Data 1 está establecido entón ao premer dúas veces a tecla TAB sobre unha cadea seleccionará o último alcume, non o seguinte." + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "Este comando despraza hacia arriba e abaixo a lista de alcumes. Se Data 1 está establecido a calquera entón desprazarase hacia arriba, se non desprazarase hacia abaixo" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "Este comando comproba a última palabra introducida na entrada contra a lista de remprazos e a rempraza se atopa unha coincidencia" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "Este comando move unha vez solapa superior á esquerda" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "Este comando move unha vez solapa superior á dereita" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "Este comando move a familia actual de solapas á esquerda" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "Este comando move a familia actual de solapas á dereita" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "Colocar a liña de entrada no historial pero sen enviala ao servidor" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "Houbo un erro cargando a configuración das combinacións de teclas" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "Atallos de teclado - %s" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "Non se pode escribir nese ficheiro." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "Non se pode ler ese ficheiro." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "Esa máscara xa existe." + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Privado" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Noticia" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "Non ignorar" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "Introduza a máscara que quere ignorar:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "Lista de ignorados - %s" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Estatísticas de ignorados:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Canle:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privado:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Noticia:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Invitar:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "Engadir..." + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "O nome da canle é demasiado corto, ténteo de novo." + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "Conexión completada - %s" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "Conexión a %s completada." + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "Que quere facer despois?" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "_Nada, unireime a unha canle máis tarde." + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "_Entrar nesta canle:" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Se coñece o nome da canle na que quere entrar, introdúcea aquí." + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "" + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "Amosar este diálogo _sempre despois de conectar." + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "Diálogo con" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "O tópico para %s é: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "Non está establecido ningún tópico" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "Este servidor ten todavía %d canles ou diálogos asociados. Pechalos todos?" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "Non preguntar a próxima vez." + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Está conectado a %i redes IRC." + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "Está seguro de que quere saír?" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "Algunhas transferencias de ficheiros seguen activas." + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "_Minimizar á bandexa" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "Inserir atributo ou código de cor" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>Grosa</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>Subraiado</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "Normal" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "Cores 0-7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "Cores 8-15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "_Pechar" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "O límite de usuarios debe ser un número!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "Non hai mensaxes externas" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "Protección do tópico" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "Só para invitados" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "Moderado" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "Lista de vetados" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Palabra clave" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "Límite de usuarios" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Introduza o novo alcume:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "" + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "" + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "" + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Equipo descoñecido" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Descoñecido" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Nome real:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "Usuario:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "Conta:" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "País: " + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "Servidor:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "Hai %u minutos" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "Última mensaxe: " + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "Mensaxe de ausencia: " + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "Abrir ligazón no navegador" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "Copiar a ligazón seleccionada" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Entrar á canle" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "Invitar canle" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "Ciclar canle" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "Menú de usuario - %s" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "Respostas CTCP - Códigos especiais:\n\n%d = datos (o ctcp completo)\n%e = nome da rede actual\n%m = información da máquina\n%s = alcume de quen enviou o ctcp\n%t = hora/data\n%2 = palabra 2\n%3 = palabra 3\n&2 = palabra 2 do fin de liña\n&3 = palabra 3 do fin de liña\n\n" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "Comandos definidos polo usuario - %s" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "Reemprazar - %s" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "Reemprazar con" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "Manexadores de URL - %s" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "Botóns da lista de usuarios - %s" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "Botóns de diálogo - %s" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "Respostas CTCP - %s" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "_Novo" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "_Saír" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "_Ver" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "Barra de _menú" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "Barra de _tópico" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "Lista de _usuarios" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "Botóns de m_odo" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "Cambiar _canles" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "_Solapas" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "Á_rbore" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "Configuración de _rede" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Apagar" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "Gráfico" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "_Servidor" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "_Desconectar" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "_Reconectar" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "Menú de _usuario" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "C_onfiguración" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "Preferencias" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "_Ventá" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "Reiniciar marcador de liña" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "_Limpar texto" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "A_xuda" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "_Contidos" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "_Acerca de" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Nome" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Visto por última vez" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "Desconectado" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Nunca" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "hai %d minutos" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "Conectado" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "Introduza o alcume a engadir:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "Notificar nestas redes:" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "Abrir diálogo" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "Conectado a %u redes e %u canles - %s" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "_Intermitencia en" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "Mensaxe de canle" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "Mensaxe privada" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "Resaltar mensaxe" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "Resaltar mensaxe de %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "%u mensaxes resaltadas, a última de: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "Mensaxe privada desde %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "%u mensaxes privadas, a última de: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "Ofrécese ficheiro desde: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "%u ficheiro ofrecidos, o último de: %s (%s) - %s" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Versión" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Descrición" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Seleccione un Complemento ou Script a cargar" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "Complementos e Scripts - %s" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "_Cargar..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "Gardar como..." + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Nova rede" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Realmente desexa eliminar a rede \"%s\" e todos os seus servidores?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "Editar %s - %s" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "E_ditar" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "Conectar só ao servidor seleccionado" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Non ciclar a non ser que todos os servidores aos que está conectando fallen." + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "Usar SSL para todos os servidores desta rede" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "Usar información global de usuario" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "_Alcume:" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "Segunda elección:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "Nome _verdadeiro:" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "Nome de _usuario:" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Contrasinal:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "Conxunto de caracteres:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "Lista de redes - %s" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "Información de usuario" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "Terceira elección:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Redes" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "Saltar a lista de servidores ao inicio" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "_Editar..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "_Ordenar" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "C_onectar" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Albania" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Azerbaián" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Bielorusia" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Búlgaro" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "Checo" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "Dinamarqués" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "Neerlandés" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "Inglés" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Estoniano" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "Finés" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "Francés" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "Galego" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "Alemán" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "Grego" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "Hindi" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "Húngaro" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "Indonesio" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "Italiano" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "Xaponés" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "Coreano" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "Letón" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "Lituano" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "Macedonio" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Malaio" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "Polaco" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "Portugués" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "Ruso" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "Serbio" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "Eslovaco" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "Eslovenio" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "Español" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "Sueco" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "Turco" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "Ucraíno" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "Valón" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Xeral" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "Idioma:" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Tipo de letra:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "Alcumes con cores" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "Dar a cada persoa unha cor diferente no IRC" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "Indentar alcumes" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "Xustificar alcumes á dereita." + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "Mostrar liña de marcado" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "Inserir unha liña vermella despois do último texto lido." + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Imaxe de fondo:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "Configuración de transparencia" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "" + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "" + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "Comprobar ortografía" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "Completado de alcume" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "Sufixo de completado para o alcume:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "Completado de alcume ordenado:" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "" + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "Desordenada" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Enriba" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Abaixo" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Oculto" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "Lista de usuarios" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "Mostrar os nomes dos equipos na lista de usuarios" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "Usar a fonte e cores da caixa de texto" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "Lista de usuarios ordenada por:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "Mostrar lista de usuarios a:" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "Nas canles máis pequenas que:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "Acción facendo dobre pulsación" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Xanelas" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Lapelas" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "Sempre" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "Só retomar solapas" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "Árbore" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "Cambiar tipo:" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "Abrir unha solapa extra para as mensaxes do servidor" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "Abrir unha solapa nova cando reciba unha mensaxe privada" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "Ordenar solapas en orde alfabético" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "Enfocar as novas solapas:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "Reducir etiquetas das solapas a:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "letras." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "Solapas ou Ventás" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "Abrir canles en:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "Abrir diálogos en:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "Abrir utilidades en:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Abrir DCC, Ignorar, Notificar etc, en solapas ou ventás?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "Ficheiros e directorios" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "Aceptar ofrecementos de ficheiros:" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Descargar ficheiros en:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "Mover ficheiros completados a:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "Gardar o alcume nos nomes de ficheiros" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "Abrir automaticamente ventás DCC" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "Ventá de envío" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "Ventá de recepción" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "Ventá de Chat" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "Unha subida:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "Velocidade máxima para unha transferencia" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "Unha descarga:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "Todas as subidas mesturadas:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "Velocidade máxima para todos os ficheiros" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "Todas as descargas mesturadas:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "Alertas" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "Intermitencia da icona da bandexa en:" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "Intermitencia da barra de tarefas en:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "Emitir un son en:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "Activar icona da bandexa do sistema" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "" + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "Mensaxes resaltadas" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "As mensaxes resaltadas son nas que se menciona o seu alcume, pero tamén:" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "Palabras adicionais para resaltar:" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "Os alcumes a non resaltar:" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "Os alcumes para resaltar sempre:" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "Mensaxes predeterminadas" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "Saír:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "Abandonar a canle:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "Ausente:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "Ausente" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Mostrar ausencia unha soa vez" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "Desmarcar ausencia automaticamente" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "" + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "Mostrar os MODOs en forma crú" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "Ocultar mensaxes de entrada e saída" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "Retraso de reconexión automática:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Rexistros" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "Liñas de desprazamento:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "Nome do ficheiro de rexistro:" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Servidor %c=Canle %n=Rede." + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "Inserir marcas de data/hora nos rexistros" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "Formato de data/hora para o rexistro:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URL" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(Desactivado)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "Seu enderezo" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "Ligar a:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "Só é útil para computadoras con enderezos múltiples." + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "Obter o meu enderezo do servidor IRC" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "Preguntarlle ao servidor IRC o teu enderezo verdadeiro. Usa isto se tes un enderezo 192.168.*.*!" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "Enderezo IP DCC:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "Pretender estar neste enderezo cando está ofrecendo ficheiros." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "Deixar os portos en cero para o rango completo." + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "Servidor proxy" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "Nome do equipo:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Porto:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Tipo:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "Usar proxy para:" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "Autenticación de Proxy" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "Nome de usuario:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "Seleccionar un ficheiro de imaxe" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "Seleccionar cartafol de descarga" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Seleccionar fonte" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Examinar..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "Abrir cartafol de datos" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Seleccionar cor" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "Cores do texto" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "Cores de mIRC:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "Cores locais:" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Primeiro plano:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Fondo:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "Cores da interface" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "Dato novo:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "Liña marcada:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "Nova mensaxe:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "Usuario ausente:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "Resaltado:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Evento" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "Ficheiro de son" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "Seleccionar un ficheiro de son" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "Ficheiro de son:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "_Examinar..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "_Reproducir" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Interface" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Caixa de entrada" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Lista de usuarios" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Cores" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Chateo" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "Avanzado" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Configuración de rede" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Transferencias de ficheiros" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Categorías" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "" + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Algunhas opcións que cambiou requiren un reinicio para ter efecto completamente." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*AVISO*\nAceptar automaticamente DCC ao seu directorio de inicio\npode ser peligroso e é explotable. Por exemplo:\nAlguén pode enviarlle un ficheiro .bash_profile" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "Preferencias - %s" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "Máis..." + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "Houbo un erro analizando a cadea" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Esta sinal só analizou %d argumentos, $%d é inválido" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "Imprimir ficheiros de texto" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ Número" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Editar eventos" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "Cargar de..." + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Probar todo" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "Aceptar" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "Capturador de URL - %s" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Limpar lista" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Copiar a URL seleccionada" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Copiar" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Gardar lista nun ficheiro" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d ops, %d total" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "Abrir unha URL irc://servidor:porto/canle" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "" diff --git a/hexchat/po/gu.po b/hexchat/po/gu.po new file mode 100644 index 0000000..d3a9ae4 --- /dev/null +++ b/hexchat/po/gu.po @@ -0,0 +1,6253 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-03 20:10+0000\n" +"Last-Translator: TingPing <tingping@tingping.se>\n" +"Language-Team: Gujarati (http://www.transifex.com/hexchat/hexchat/language/gu/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: gu\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "હું વ્યસ્ત છું" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "છોડી રહ્યા છીએ" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "નેટવર્ક" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<none>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "ચેનલ" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "રાહ જોઇ રહ્યા છે" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "સક્રિય" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "નિષ્ફળ" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "પૂરુ થયું" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "સાંકળવું" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "અડધેથી બંધ કરાયેલ" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "%s વાપરી શકતા નથી\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "ભૂલ" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "કોઈ સક્રિય DCC નથી\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "ચાલક સ્થિતિ આપો" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "ચાલક સ્થિતિ લો" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "અવાજ આપો" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "અવાજ લો" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "કિક/બેન" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "કિક" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "બેન" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "કિકબેન" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "ચેનલ છોડો" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "ચેનલ જોડો..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "જોડાવા માટે ચેનલ દાખલ કરો:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "સર્વર કડીઓ" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Ping સર્વર" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "આવૃત્તિ છુપાવો" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "ચાલક" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "ચાલક દૂર કરો" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "આવજો" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "%s ને કિક કરવાનું કારણ દાખલ કરો:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "સંવાદ" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "મોકલો" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "સંવાદ" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "સાફ" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "" + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* IRC ને રુટ તરીકે ચલાવવાનું ગાંડપણ છે! તમારે વપરાશકર્તા\n ખાતું બનાવવું જોઈએ અને તેનો ઉપયોગ પ્રવેશ માટે કરવો જોઈએ.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "હા " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "ના " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "તમને %s માંથી CTCP પૂર આવ્યું છે, %s અવગણી રહ્યા છીએ\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s ઓનલાઈન\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s ઓફલાઈન\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "કોઈ ચેનલમાં જોડાયા નથી. /join #<channel> પ્રયત્ન કરો\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "જોડાયેલ નથી. /server <host> [<port>] પ્રયત્ન કરો\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "મને ચલાવવા માટે /bin/sh ની જરૂર છે!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "આદેશો ઉપલબ્ધ:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "વપરાશકર્તા વ્યાખ્યાયિત આદેશો:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "પ્લગઈન વ્યાખ્યાયિત આદેશો:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "વધુ જાણકારી માટે /HELP <command>, અથવા /HELP -l લખો" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "અજ્ઞાત દલીલ '%s' અવગણવામાં આવી." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "" + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "આવું કોઈ પ્લગઈન મળ્યુ નથી.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "નહિં લાવવા માટે તે પ્લગઈન અટકાવી રહ્યું છે.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <name> <action>, વપરાશકર્તા-યાદી હેઠળ બટન ઉમેરે છે" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <cmd>, તમે જે ચેનલોમાં છો તે બધીમાં આદેશ મોકલે છે" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <cmd>, તમે જે સર્વરોમાં છો તે બધામાં આદેશ મોકલે છે" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <mask> [<bantype>], દરેકને વર્તમાન ચેનલમાંથી માસ્ક જોડણી કરવામાં બેન કરે છે. જો તેઓ પહેલાથી જ ચેનલ પર હોય તો આ તેમને કિક કરતું નથી (ચેનલ ચાલક જરૂરી છે)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "" + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <code|wildcard>, દેશ કોડ શોધે છે, દાત: au = ઓસ્ટ્રેલિયા" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <nick> <message>, નામને CTCP સંદેશો મોકલે છે, સામાન્ય સંદેશો VERSION અને USERINFO છે" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <nick> - તક અપાયેલ ફાઈલ સ્વીકારો\nDCC SEND [-maxcps=#] <nick> [file] - કોઈકને ફાઈલ મોકલો\nDCC PSEND [-maxcps=#] <nick> [file] - પેસીવ સ્થિતિની મદદથી ફાઈલ મોકલો\nDCC LIST - DCC યાદી બતાવો\nDCC CHAT <nick> - કોઈકને DCC CHAT ની તક આપો\nDCC PCHAT <nick> - પેસીવ સ્થિતિની મદદથી DCC CHAT ની તક આપો\nDCC CLOSE <type> <nick> <file> ઉદાહરણ:\n /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <nick>, વર્તમાન ચેનલ પરના નામમાંથી અડધો-ચેનલ ચાલક સ્થિતિ દૂર કરે છે (ચેનલ ચાલક જરૂરી છે)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <name>, વપરાશકર્તા-યાદી હેઠળના બટનને કાઢે છે" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <nick>, વર્તમાન ચેનલ પરના નામમાંથી ચેનલ ચાલક સ્થિતિ દૂર કરે છે (ચેનલ ચાલક જરૂરી છે)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <nick>, વર્તમાન ચેનલ પરના નામમાંથી અવાજ સ્થિતિ દૂર કરે છે (ચેનલ ચાલક જરૂરી છે)" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, સર્વરથી જોડાણ તોડે છે" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <text>, લખાણ સ્થાનિક રીતે છાપે છે" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <command>, આદેશ ચલાવે છે. જો -o ફ્લેગ વપરાય છે તો પછી આઉટપુટ વર્તમાન ચેનલને મોકલાય છે, નહિંતર તે વર્તમાન લખાણ બોક્સમાં છપાય છે" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, પ્રક્રિયા SIGCONT મોકલે છે" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9], વર્તમાન સત્રમાં ચાલતું exec મારી નાંખે છે. જો -9 ને SIGKILL વાળી પ્રક્રિયા અપાયેલ હોય" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, પ્રક્રિયા SIGSTOP મોકલે છે" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, પ્રક્રિયાઓ stdin ને માહિતી મોકલે છે" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, વર્તમાન સર્વરની મોકલો કતરા ફ્લશ કરે છે" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <host> [<port>], યજમાન મારફતે પ્રોક્સીઓ, પોર્ટ માટે મૂળભુત ૨૩ છે" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <nick>, નામને અડધો-ચેનલ ચાલક સ્થિતિ આપે છે (ચેનલ ચાલક જરૂરી છે)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <password>, તમને nickserv પ્રતિ ઓળખાવો" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <mask> <types..> <options..>\n mask - અવગણવા માટે યજમાન માસ્ક, દાત: *!*@*.aol.com\n types - અવગણવા માટે માહિતીના પ્રકારો, એક અથવા બધા:\n PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n options - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <nick> [<channel>], કોઈકને ચેનલમાં આમંત્રિત કરે છે, મૂળભુત રીતે વર્તમાન ચેનલ (ચેનલ ચાલક જરૂરી છે)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <channel>, ચેનલ જોડાય છે" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, નવા લેગ ચકાસણીને દબાણ કરે છે" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <file>, પ્લગઈન અથવા સ્ક્રિપ્ટ લાવે છે" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, વર્તમાન ચેનલમાં બધા અડધા-ચેનલ ચાલકની ચાલક સ્થિતિ દૂર કરે છે (ચેનલ ચાલક જરૂરી છે)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, વર્તમાન ચેનલમાં માસ ડિઓપના બધા ચેનલ ચાલકs (ચેનલ ચાલક જરૂરી)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <action>, વર્તમાન ચેનલને ક્રિયા મોકલે છે (ક્રિયાઓ ૩જી વ્યક્તિને લખાય છે, /me jumps ની જેમ)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, વર્તમાન ચેનલમાં તમારા સિવાય બધાને માસ કિક કરે છે (ચેનલ ચાલક જરૂરી છે)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, વર્તમાન ચેનલમાં માસ ઓપના વર્તમાન વપરાશકર્તાઓ (ચેનલ ચાલક જરૂરી છે)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <nick> <message>, CTCP સૂચના મોકલે છે" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <nickname>, તમારું નામ સુયોજિત કરે છે" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <nick>, નામને ચેનલ ઓપરેટર સ્થિતિ આપે છે (ચેનલ ઓપરેટરની જરૂર છે)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<channel>] [<reason>], ચેનલ છોડે છે, મૂળભુત રીતે વર્તમાન" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <nick | channel>, CTCP નામ અથવા ચેનલને પીંગ કરે છે" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "" + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<reason>], વર્તમાન સર્વરમાંથી જોડાણ તોડે છે" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <text>, સર્વરને કાચા બંધારણમાં લખાણ મોકલે છે" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<host>] [<port>] [<password>], વર્તમાન સર્વર સાથે ખાલી /RECONNECT તરીકે બોલાવી શકાય છે અથવા બધા ખૂલેલા સર્વરો માટે /RECONNECT ALL સાથે" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<host>] [<port>] [<password>], વર્તમાન સર્વર સાથે ખાલી /RECONNECT તરીકે બોલાવી શકાય છે અથવા બધા ખૂલેલા સર્વરો માટે /RECONNECT ALL સાથે" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <text>, વર્તમાન વિન્ડોમાં ઓબ્જેક્ટને લખાણ મોકલે છે" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <host> <port> <channel>, ચેનલ સાથે સંપર્ક કરે છે અને જોડાય છે" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <host> <port> <channel>, ચેનલ સાથે સંપર્ક કરે અને જોડાય છે" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <host> [<port>] [<password>], સર્વર સાથે જોડાય છે, 6667 મૂળભૂત પોર્ટ છે" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<topic>], મુદ્દો સુયોજિત કરે છે જો કોઈ આપેલ હોય, નહિંતર વર્તમાન મુદ્દો બતાવે છે" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <mask> [<mask>...], ચોક્કસ માસ્ક પરથી બેન દૂર કરે છે" + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <mask> [QUIET]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <name>, પ્લગઈન અથવા સ્ક્રિપ્ટ અનલોડ કરે છે" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "" + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, તમારા બ્રાઉઝરમાં URL ખોલે છે" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <nick>, કોઈકને અવાજ સ્થિતિ આપે છે (ચેનલ ચાલક જરૂરી છે)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <message>, બધી ચેનલોને સંદેશો લખે છે" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <message>, વર્તમાન ચેનલ પરના બધા ચેનલ ચાલકs ને સંદેશો મોકલે છે" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "વપરાશ: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nતે આદેશ પર કોઈ મદદ ઉપલબ્ધ નથી.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "આવો કોઈ આદેશ નથી.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "વપરાશકર્તા આદેશ માટે ખોટી દલીલો.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "ઘણા બધા પુનરાવર્તિત વપરાશકર્તા આદેશો, અડધેથી બંધ કરી રહ્યા છીએ." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "શું તમે ચોક્કસ છો કે આ SSL સક્ષમ સર્વર અને પોર્ટ છે?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "યજમાન નામ %s ઉકેલી શક્યા નહિં\nતમારા IP સુયોજનો ચકાસો!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "પ્રોક્સી પરિવહન નિષ્ફળ.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "%s માં આગળના સર્વર સુધી ફેરવી રહ્યા છીએ...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "ચેતવણી: \"%s\" અક્ષર સમૂહ અજ્ઞાત છે. નેટવર્ક %s માટે કોઈ રૂપાંતરણ લાગુ પડશે નહિં." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "" + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "" + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%Uચેનલ વપરાશકર્તાઓ મુદ્દો" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "" + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "" + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "" + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "" + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "" + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "" + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "" + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "" + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "" + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "" + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "" + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "" + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$t સૂચન યાદી ખાલી છે." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "" + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "" + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "" + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "" + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** ENDING LOGGING AT %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** BEGIN LOGGING AT %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "ડાબો સંદેશો" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "જમણો સંદેશો" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "IP સરનામું" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "વપરાશકર્તા નામ" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "જોડાયેલ વ્યક્તિનું નામ" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "ચેનલમાં જોડાઈ ગયા છો" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "વ્યક્તિનો યજમાન" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "લાડકું નામ" + +#: src/common/text.c:980 +msgid "The action" +msgstr "ક્રિયા" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "સ્થિતિ અક્ષર" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "ઓળખાયેલ લખાણ" + +#: src/common/text.c:987 +msgid "The text" +msgstr "લખાણ" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "સંદેશો" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "સર્વર નામ" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "જૂનું નામ" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "નવું નામ" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "વ્યક્તિનું નામ કે જેણે મુદ્દો બદલ્યો છે" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "મુદ્દો" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "કિક કરનારનું નામ" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "વ્યક્તિને કિક મરાઈ ગઈ છે" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "ચેનલ" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "કારણ" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "છોડી રહેલ વ્યક્તિનું નામ" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "સમય" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "બનાવનાર" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "નામ" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "કારણ" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "યજમાન" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "તે ક્યાંથી છે" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "સમય x.x બંધારણમાં છે (નીચે જુઓ)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "ચેનલ કે જે ચાલુ છે" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "સાઉન્ડ" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "વ્યક્તિનું નામ" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "CTCP ઘટના" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "વ્યક્તિનું નામ કે જેણે કી સુયોજિત કરી છે" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "કી" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "વ્યક્તિનું નામ કે જે મર્યાદા સુયોજિત કરે છે" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "મર્યાદા" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "વ્યક્તિનું નામ કે જેણે કારકપદ મેળવ્યું હતું" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "વ્યક્તિનું નામ કે જે કારક રહી ચૂક્યો છે" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "વ્યક્તિનું નામ કે જે અડધો કારક રહી ચૂક્યો છે" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "વ્યક્તિનું નામ કે જેણે અડધું કારક પદ કર્યું હતું" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "વ્યક્તિનું નામ કે જેણે અવાજ આપ્યો હતો" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "વ્યક્તિનું નામ કે જેને અવાજ અપાયેલો હતોે" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "વ્યક્તિનું નામ કે જેણે બેનીંગ કર્યું હતું" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "બેન માસ્ક" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "નામ કે જેણે કી દૂર કરી હતી" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "નામ કે જેણે મર્યાદા દૂર કરી હતી" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "વ્યક્તિનું નામ કે જે ડિઓપ થયેલ હતો" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "વ્યક્તિનું નામ કે જેની અડધી ચાલક સ્થિતિ દૂર થઈ ગયેલ છે" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "વ્યક્તિનું નામ કે જેનો અવાજ લેવાઈ ગયેલ હતો" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "વ્યક્તિનું નામ કે જેણે એક્ઝેમ્પ્ટ કર્યું હતું" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "એક્ઝેમ્પ્ટ માસ્ક" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "વ્યક્તિનું નામ કે જેણે એક્ઝેમ્પ્ટ દૂર કર્યું હતું" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "વ્યક્તિનું નામ કે જેણે આમંત્રણ કર્યું હતું" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "આમંત્રણ માસ્ક" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "વ્યક્તિનું નામ કે જેણે આમંત્રણ દૂર કર્યું હતું" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "વ્યક્તિનું નામ સ્થિતિ સુયોજિત કરી રહ્યું" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "સ્થિતિનું ચિહ્ન (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "સ્થિતિ પત્ર" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "ચેનલ કે જે સુયોજિત થઈ ગયેલ છે" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "પૂરું નામ" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "ચેનલ ઉમેદવારી/\"એ IRC ચાલક છે\"" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "સર્વર જાણકારી" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "ફાજલ સમય" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "પ્રવેશ સમય" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "દૂર જવાનું કારણ" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "સંદેશો" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "ખાતુ" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "વાસ્તવિક user@host" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "વાસ્તવિક IP" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "ચેનલ નામ" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "લખાણ" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "વ્યક્તિનું નામ કે જેણે તમને આમંત્રિત કર્યો છે" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "વપરાશકર્તાઓ" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "નામ વપરાશમાં છે" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "નામનો પ્રયાસ થયેલ છે" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "પોર્ટ" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "સ્થિતિઓ શબ્દમાળા" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "DCC પ્રકાર" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "ફાઈલનું નામ" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "લક્ષ્ય ફાઈલ નામ" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "પાથનામ" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "જગ્યા" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "માપ" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "DCC શબ્દમાળા" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "સૂચન વસ્તુઓની સંખ્યા" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "જૂની ફાઈલનામ" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "નવી ફાઈલનામ" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "મેળવનાર" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "હોસ્ટમાસ્ક" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "યજમાનનામ" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "પેકેટ" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "સેકન્ડો" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "વ્યક્તિનું નામ કે જે આમંત્રિત થયેલ છે" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "બેનમાસ્ક" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "કોણે બેન સુયોજિત કર્યું છે" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "બેન સમય" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "સાઉન્ડ ફાઈલ વાંચી શકતા નથી:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "દૂરસ્થ યજમાને સોકેટ બંધ કરેલ છે" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "જોડાણ તૂટી ગયું" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "યજમાનનો કોઈ રુટ નથી" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "જોડાણ સમય સમાપ્તિ" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "તે સરનામું સોંપી શકતા નથી" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "પીયર દ્વારા જોડાણ પુનઃસુયોજિત થયેલ છે" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "અન્ડોરા" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "યુનાયટેડ આરબ અમીરાત્સ" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "અફઘાનિસ્તાન" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "એન્ટીગ્વા અને બર્બ્યુડા" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "એન્ગ્યુઈલ્લા" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "અલ્બેનિયા" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "અર્મેનિયા" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "નેધરલેન્ડઝ એન્ટીલીસ" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "અન્ગોલા" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "એન્ટાર્કટિકા" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "આર્જેન્ટિના" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "ઉલટું DNS" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "અમેરિકન સામોઆ" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "ઓસ્ટ્રિયા" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "નાટો ફીયલ" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "ઓસ્ટ્રેલિયા" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "અરુબા" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "અઝરબૈજાન" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "બોસ્નિયા અને હર્ઝેગોવિના" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "બાર્બાડોસ" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "બાંગલાદેશ" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "બેલ્જિયમ" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "બર્કિના ફાસો" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "બલ્ગેરિયા" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "બહેરીન" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "બુરુન્દી" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "વ્યવસાયો" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "બેનીન" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "બેરમ્યુડા" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "બ્રુનેઈ દારુસલામ" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "બોલિવિયા" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "બ્રાઝિલ" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "બહામસ" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "ભુતાન" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "બૌવેટ ટાપુ" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "બોટ્સવાના" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "બેલારુસ" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "બેલિઝ" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "કેનેડા" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "કોકોસ ટાપુઓ" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "સામ્યવાદી કોન્ગોનું ગણતંત્ર" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "કેન્દ્રિય આફ્રિકન ગણતંત્ર" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "કોન્ગો" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "સ્વીત્ઝરલેન્ડ" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "કોટે ડિવોઈર" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "કુક ટાપુઓ" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "ચિલે" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "કેમેરુન" + +#: src/common/util.c:738 +msgid "China" +msgstr "ચીન" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "કોલમ્બિયા" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "આંતરિક વ્યવસાયિક" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "કોસ્ટા રીકા" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "સર્બીયા અને મોન્ટેનેગ્રો" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "ક્યુબા" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "કેપ વર્ડે" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "ક્રિસમસ ટાપુ" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "સાયપ્રસ" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "ચેક રીપબ્લીક" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "જર્મની" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "ડીજીબૌટી" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "ડેન્માર્ક" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "ડોમિનિકા" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "ડોમિનિકન ગણતંત્ર" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "અલ્જેરિયા" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "ઈક્વેડોર" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "શૈક્ષણિક સંસ્થા" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "ઈસ્ટોનિયા" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "ઈજીપ્ત" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "પશ્ચિમિ સહારા" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "એરીટ્રીઆ" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "સ્પેન" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "ઈથીઓપિયા" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "ફિનલેન્ડ" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "ફીજી" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "ફોલ્કલેન્ડ ટાપુઓ" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "માઈક્રોનેસિયા" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "ફેરો ટાપુઓ" + +#: src/common/util.c:770 +msgid "France" +msgstr "ફ્રાંસ" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "ગેબન" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "ગ્રેટ બ્રિટન" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "ગ્રેનાડા" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "જ્યોર્જિયા" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "ફ્રેંચ જીનેવા" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "બ્રિટિશ ચેનલ ઈસલ્સ" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "ઘાના" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "ગિબ્રાલ્ટાર" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "ગ્રીનલેન્ડ" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "ગામ્બિયા" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "જીનેવા" + +#: src/common/util.c:782 +msgid "Government" +msgstr "સરકાર" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "ગ્યુઆડેલોપ" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "ઈક્વેટોરિયલ જીનેવા" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "ગ્રીસ" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "એસ. જ્યોર્જિયા અને એસ. સેન્ડવીચ ઈસ્લ્સ" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "ગૌટેમાલા" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "ગ્યુઆમ" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "જીનેવા-બિસાઉ" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "ગાયાના" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "હોંગ કોંગ" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "હીયર્ડ અને મેકડોનાલ્ડ ટાપુઓ" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "હોન્ડુરાસ" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "ક્રોટીઆ" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "હાઈટી" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "હંગરી" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "ઈન્ડોનેશિયા" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "આર્યભૂમિ" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "ઈઝરાયલ" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "" + +#: src/common/util.c:801 +msgid "India" +msgstr "ભારત" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "જાણકારી" + +#: src/common/util.c:803 +msgid "International" +msgstr "આંતરરાષ્ટ્રિય" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "બ્રિટિશ ભારતીય સમુદ્રી ફરવાના સ્થળો" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "ઈરાક" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "ઈરાન" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "ટાપુ" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "ઈટાલી" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "જમૈકા" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "જોર્ડન" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "જાપાન" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "કેન્યા" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "કીર્ગીસ્તાન" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "કમ્બોડિયા" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "કિરીબાટી" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "કોમોરોસ" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "સંત. કિટ્સ અને નેવીસ" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "ઉત્તર કોરિયા" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "દક્ષિણ કોરિયા" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "કુવૈત" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "કેમેન ટાપુઓ" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "કઝાકિસ્તાન" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "લાઓસ" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "લેબનોન" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "સંત લ્યુસીઆ" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "લીચટેન્સ્ટેન" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "શ્રીલંકા" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "લિબેરિયા" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "લેસોથો" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "લિથુઆનિયા" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "લક્ઝેમ્બર્ગ" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "લેટવિયા" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "લિબ્યા" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "મોરોક્કો" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "મોનેકો" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "મોલ્ડોવા" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "યુનાઈટેડ સ્ટેટ્સ મેડિકલ" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "મડાગાસ્કાર" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "માર્શલ ટાપુઓ" + +#: src/common/util.c:843 +msgid "Military" +msgstr "સેના" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "મેકેડોનિયા" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "માલી" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "મ્યાનમાર" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "મોંગોલિયા" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "મકાઉ" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "ઉત્તરી મારીઆના ટાપુઓ" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "માર્ટીનીક" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "મૌરીટાનિયા" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "મોન્ટસેરાટ" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "માલ્ટા" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "મોરેશિયસ" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "માલદીવ" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "માલાવી" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "મેક્સિકો" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "મલેશિયા" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "મોઝામ્બીક" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "નામિબિયા" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "ન્યુ કેલેડોનિયા" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "નાઈજર" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "આંતરિક નેટવર્ક" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "નોરફોલ્ક ટાપુ" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "નાઈજીરીયા" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "નાઈકારાગ્યુઆ" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "નેધરલેન્ડઝ" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "નોર્વે" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "નેપાળ" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "નૌરુ" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "નિયુ" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "ન્યુ ઝીલેન્ડ" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "ઓમાન" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "આંતરિક બિન-લાભ સંસ્થા" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "પનામા" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "પેરુ" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "ફ્રેંચ પોલિનેસિયા" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "પપુઆ ન્યુ જીનેઆ" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "ફિલિપાઈન્સ" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "પાકિસ્તાન" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "પોલેન્ડ" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "સંત્. પીયરે અને મીકેલોન" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "પિટકેર્ન" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "પ્યુએર્ટો રેકો" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "ફરવાનું સ્થળ પેલેસ્ટિયન" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "પોર્ટુગલ" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "પાલાઉ" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "પેરાગ્યુઆ" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "કતાર" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "રીયુનિયન" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "રોમાનિયા" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "જૂની શાળા ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "રશિયાઈ ફીડરેશન" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "ર્વાન્ડા" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "સાઉદી અરેબિયા" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "સોલોમન ટાપુઓ" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "સીચેલેસ" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "સુદાન" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "સ્વીડન" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "સિંગાપોર" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "સંત હેલેના" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "સ્લોવેનિયા" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "સ્વાલબેર્ડ અને જન મેયેન ટાપુઓ" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "સ્લોવેક ગણતંત્ર" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "સીયારા લીયોન" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "સંત મારિનો" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "સેનેગલ" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "સોમાલિયા" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "સુરીનામ" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "સંત ટોમ અને પ્રિન્સીપ" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "જૂના USSR" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "ઈઆઈ સાલ્વાડોર" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "સીરીયા" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "સ્વાઝીલેન્ડ" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "તુર્ક્સ અને કેઈકોસ ટાપુઓ" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "ચાડ" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "ફ્રેંચ દક્ષિણી ફરવાના સ્થળો" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "ટોગો" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "થાઈલેન્ડ" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "તાજીકિસ્તાન" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "ટોકેલાઉ" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "પૂર્વીય ટિમોર" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "તુર્કમેનિસ્તાન" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "તનીસિયા" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "ટોન્ગા" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "તુર્કી" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "ટ્રીનીદાદ અને ટોબેગો" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "તુવાલુ" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "તાઈવાન" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "તાન્ઝાનીયા" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "યુક્રેનિયા" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "યુગાન્ડા" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "યુનાઈટેડ કિંગડમ" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "યુનાઈટેડ સ્ટેટ્સ ઓફ અમેરિકા" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "ઉરુગ્વે" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "ઉઝ્બેકિસ્તાન" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "વાટીકન શહેર રાજ્ય" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "સંત. વિન્સેન્ટ અને ગ્રેનેડીનેસ" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "વેનેઝુએલા" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "બ્રિટિશ વર્જીન ટાપુઓ" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "US વર્જિન ટાપુઓ" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "વિયેતનામ" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "વાનુઆટુ" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "વાલિસ અને ફુટુના ટાપુઓ" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "સામોઆ" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "યેમેન" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "મેયોટે" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "યુગોસ્લાવીયા" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "દક્ષિણ આફ્રિકા" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "ઝામ્બિયા" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "ઝિમ્બાબ્વે" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "અક્ષર ચાર્ટ" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "બેન" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "આમંત્રણ આપો" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "" + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "તમારે અમુક બેન પસંદ કરવા જ પડશે." + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "સંતાડવુ" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "તરફથી" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "તારીખ" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "દૂર કરો" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "કાપવું" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "ફરી તાજું કરો" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "" + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "આઉટપુટ ફાઈલનામ પસંદ કરો" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "શોધો:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "%s ને ફાઈલ મોકલો" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "તે ફાઈલ અટકાવી શકાય તેવી નથી." + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "ફાઈલ વાપરી શકતા નથી: %s\n%s.\nઅટકાવવાનું શક્ય નથી." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "ડાઉનલોડ ડિરેક્ટરીમાંની ફાઈલ તક અપાયેલ કરતાં મોટી છે. અટકાવવાનું શક્ય નથી." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "એ જ ફાઈલ બે વ્યક્તિમાંથી અટકાવી શકાતી નથી." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "સ્થિતિ" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "ફાઇલ" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "ઇટા" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "બંને" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "ફાઈલ:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "સરનામું:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "અધૂરુ રાખીને જવુ" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "સ્વીકારો" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "ફરી ચાલુ કરો" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "" + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "મેળવો" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "મોકલાયેલ" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "દૂર કરો" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "રદ કરો" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "સંગ્રહ કરો" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "આદેશ ચલાવો:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "ફોન્ટ ખોલવામાં નિષ્ફળ:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "શોધ બફર ખાલી છે.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d બાઈટો" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "બફરમાં દાખલ કરો આદેશ માહિતી ૧ ના સમાવિષ્ટો પ્રવેશમાં દાખલ કરશે કે જ્યાં કી હરોળ વર્તમાન કર્સર સ્થાને દબાવાયેલ હતી" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "બફર સુયોજિત કરો આદેશ પ્રવેશ સુયોજિત કરે છે કે જ્યાં કી હરોળ માહિતી ૧ ના સમાવિષ્ટોમાં દાખલ થયેલ હતું" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "છેલ્લો આદેશ આદેશ દાખલ થયેલ છેલ્લો આદેશ સમાવવા માટે પ્રવેશ સુયોજિત કરે છે - એવું જ શેલમાં ઉપર દબાવીને" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "આગળનો આદેશ આદેશ દાખલ થયેલ આગળનો આદેશ સમાવવા માટે પ્રવેશ સુયોજિત કરે છે - એવું જ શેલમાં નીચે દબાવીને" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "આ આદેશ અપૂર્ણ નામ અથવા આદેશ પૂર્ણ કરવા માટે પ્રવેશમાં લખાણ બદલે છે. જો માહિતી ૧ સુયોજિત થયેલ હોય તો પછી શબ્દમાળામાં દ્વિ-ટેબ કરવાનું છેલ્લું નામ પસંદ કરશે, નહિં કે આગળનું" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "આ આદેશ ઉપર અને નીચે નામોની યાદીમાં સરકે છે. જો માહિતી ૧ સુયોજિત હોય કે જે કંઈપણ ઉપર ખસશે નહિં, નહિંતર તે નીચે ખસશે" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "આ આદેશ દાખલ થયેલ છેલ્લો શબ્દ પ્રવેશમાં બદલો યાદી વિરુદ્ધ ચકાસે છે અને તેને જોડણી શોધવા માટે બદલે છે" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "આ આદેશ આગળની ટેબ ડાબેથી એક જેટલી ખસે છે" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "આ આદેશ આગળની ટેબ જમણેથી એક જેટલી ખસે છે" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "આ આદેશ વર્તમાન ટેબ પરિવારને ડાબે ખસેડે છે" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "આ આદેશ વર્તમાન ટેબ પરિવારને જમણએ ખસેડે છે" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "ઈતિહાસમાં ઈનપુટ વાક્યનો દબાણ કરો પરંતુ તે સર્વરને મોકલાતું નથી" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "કી બાઈન્ડીંગ રૂપરેખાંકન લાવવામાં ભૂલ હતી" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "તે ફાઈલ પર લખી શકતા નથી." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "તે ફાઈલ વાંચી શકતા નથી." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "તે માસ્ક પહેલાથી જ હાજર છે." + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "ખાનગી" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "સૂચના" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "અવગણો નહિં" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "અવગણવા માટે માસ્ક દાખલ કરો:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "અવગણો સ્થિતિ:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "માધ્યમ:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "ખાનગી:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "સૂચના:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "આમંત્રિત કરો:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "" + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "" + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "" + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "" + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "" + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "" + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "આની સાથે સંવાદ" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "%s માટેનો મુદ્દો આ છે: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "કોઈ મુદ્દો સુયોજિત નથી" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "" + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "" + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "બંધ કરો (_C)" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "વપરાશકર્તા મર્યાદા નંબર હોવી જ જોઈએ!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "કોઈ બાહ્ય સંદેશાઓ નથી" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "મુદ્દા સુરક્ષા" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "માત્ર આમંત્રિત કરો" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "મોડરેટ થયેલ" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "બેન યાદી" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "મુખ્ય શબ્દ" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "વપરાશકર્તા મર્યાદા" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "નવું નામ દાખલ કરો:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "" + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "" + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "" + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "યજમાન અજ્ઞાત" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "અજ્ઞાત" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "વાસ્તવિક નામ:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "વપરાશકર્તા:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "દેશ:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "સર્વર:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "છેલ્લો સંદેશો:" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "દૂર સંદેશો:" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "ચેનલમાં જોડાવ" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "વિભાગ ચેનલ" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "ચક્ર ચેનલ" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "બંધ" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "ગ્રાફ" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "સર્વર (_S)" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "સુયોજનો (_e)" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "વિન્ડો (_W)" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "માર્કર લીટી પુનઃસુયોજિત કરો" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "લખાણ સાફ કરો (_l)" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "મદદ (_H)" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "સમાવિષ્ટો (_C)" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "વિશે (_A)" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "નામ" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "છેલ્લું દૃશ્ય" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "ઓફલાઈન" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "ક્યારેય નહી" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "ઓનલાઈન" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "ઉમેરવા માટે નામ દાખલ કરો:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "આવૃત્તિ" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "વર્ણન" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "લાવવા માટે પ્લગઈન અથવા સ્ક્રિપ્ટ પસંદ કરો" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "લોડ કરો (_L)..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "" + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "નવું નેટવર્ક" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "શું ખરેખર નેટવર્ક \"%s\" અને તેના બધા સર્વરો દૂર કરવા માંગો છો?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "ફેરફાર કરો (_E)" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "માત્ર પસંદિત સર્વરમાં જ જોડાવ" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "જ્યારે જોડાણ નિષ્ફળ જાય ત્યારે બધા સર્વરો મારફતે ફેરવશો નહિં." + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "આ નેટવર્ક પરના બધા સર્વરો માટે SSL વાપરો" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "વૈશ્વિક વપરાશકર્તા જાણકારી વાપરો" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "હુલામણું નામ (_N):" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "બીજી પસંદગી:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "વાસ્તવિક નામ (_l):" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "વપરાશકર્તા નામ (_U):" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "પાસવર્ડ:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "અક્ષર સમૂહ:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "વપરાશકર્તા જાણકારી" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "ત્રીજી પસંદગી:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "નેટવર્કો" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "ફેરફાર કરો (_E)..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "ક્રમમાં ગોઠવો (_S)" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "જોડો (_o)" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "અલ્બેનિયા" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "અઝરબૈજાન" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "બેલારુસ" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "બલ્ગેરિયા" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "ઈસ્ટોનિયા" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "ભારત" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "મલેશિયા" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "થાઈલેન્ડ" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "વિયેતનામ" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "સામાન્ય" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "ફોન્ટ:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "રંગીન નામો" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "IRC પરના દરેક વ્યક્તિને અલગ રંગ આપો" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "નામોના હાંસિયાથી અંતર રાખો" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "નામોને જમણી-બાજુઓ રાખો" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "માર્કલ લીટી બતાવો" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "છેલ્લા વાંચન લખાણ પછી લાલ લીટી દાખલ કરો." + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "પાશ્વ ભાગ ઈમેજ:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "" + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "" + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "નામ પૂર્ણતા" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "નામ પૂર્ણતા પ્રત્યય:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "" + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "ક્રમમાં ગોઠવાયેલ નથી" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "ઉપર" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "નીચે" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "છુપુ" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "વપરાશકર્તા યાદી" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "વપરાશકર્તા યાદીમાં યજમાનનામો બતાવો" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "લખાણ બોક્સ ફોન્ટ અને રંગો વાપરો" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "વપરાશકર્તા યાદી આના દ્વારા ક્રમમાં ગોઠવાયેલ છે:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "આના કરતાં નાની ચેનલો પર:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "બે વાર ક્લિક કરવા પરની ક્રિયા" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "વિન્ડો" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "ટેબો" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "હંમેશા" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "માત્ર અરજી થયેલ ટેબો" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "સર્વર સંદેશાઓ માટે વધારાની ટેબ ખોલો" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "ટેબોને બારાક્ષરી ક્રમમાં ગોઠવો" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "નવી ટેબો પર ફોકસ કરો:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "ટુંકાવેલ ટેબ લેબલો આમાં:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "અક્ષરો." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "ટેબો અથવા વિન્ડો" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "ચેનલો આમાં ખોલો:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "સંવાદો આમાં ખોલો:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "ઉપયોગીતાઓ આમાં ખોલો:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "શું DCC, અવગણો, સૂચવો વગેરે, ને ટેબો અથવા વિન્ડોમાં ખોલવા છે?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "ફાઈલો અને ડિરેક્ટરીઓ" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "ફાઈલોને આમાં ડાઉનલોડ કરો:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "પૂર્ણ થયેલ ફાઈલોને આમાં ખસેડો:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "નામોને ફાઈલનામોમાં સંગ્રહો" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "DCC વિન્ડો આપોઆપ ખોલો" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "મોકલો વિન્ડો" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "મેળવો વિન્ડો" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "સંવાદ વિન્ડો" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "એક અપલોડ:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "એક પરિવહન માટે મહત્તમ ઝડપ" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "એક ડાઉનલોડ:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "બધા અપલોડ જોડાયેલ છે:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "બધી ફાઈલો માટે મહત્તમ ઝડપ" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "બધા ડાઉનલોડ જોડાયેલ છે:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "ચેતવણીઓ" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "" + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "મૂળભૂત સંદેશાઓ" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "બહાર નીકળો:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "ચેનલ છોડો:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "દૂર જાવ:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "દૂર જાવ" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "એકવાર દૂર જવાનું બતાવો" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "આપોઆપ દૂર થઈ ગયેલાનો સંકેત દૂર કરો" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "" + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "હરોળ બંધારણમાં MODE પ્રદર્શિત કરે છે" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "જોડવાના અને છોડવાના સંદેશાઓ છુપાવો" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "આપોઆપ પુનઃજોડાણનો વિલંબ:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "લોગ રાખવાનું" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "લીટીઓ સરકાવો:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "" + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "લોગમાં ટાઈમસ્ટેમ્પ દાખલ કરો" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "લોગ ટાઈમસ્ટેમ્પ બંધારણ:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URL" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(નિષ્ક્રિય)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "તમારું સરનામું" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "ને જોડો:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "" + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "IRC સર્વરમાંથી મારું સરનામું મેળવો" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "તમારા વાસ્તવિક સરનામા માટે IRC સર્વરને પૂછે છે. આ વાપરો જે તમારી પાસે 192.168.*.* સરનામું હોય!" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "DCC IP સરનામું:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "જ્યારે ફાઈલોની તક આપી રહ્યા હોય ત્યારે તમે આ સરનામે દાવો કરો." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "" + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "પ્રોક્સી સર્વર" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "યજમાન નામ:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "પોર્ટ:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "પ્રકાર:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "વપરાશકર્તા નામ:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "ઈમેજ ફાઈલ પસંદ કરો" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "ફોન્ટ પસંદ કરો..." + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "શોધો..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "રંગ પસંદ કરો" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "લખાણ રંગો" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "mIRC રંગો:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "અગ્ર ભાગ:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "પાશ્વ ભાગ:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "ઈન્ટરફેસ રંગો" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "નવી માહિતી:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "માર્કર લાઈન:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "નવો સંદેશો:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "દૂર ગયેલ વપરાશકર્તા:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "પ્રકાશિત કરો:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "ઘટના" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "સાઉન્ડ ફાઈલ" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "સાઉન્ડ ફાઈલ પસંદ કરો" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "ધ્વનિ ફાઈલ:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "શોધો (_B)..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "વગાડો (_P)" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "ઈન્ટરફેસ" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "ઈનપુટ બોક્સ" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "વપરાશકર્તા યાદી" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "રંગો" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "વાર્તાલાપ" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "ઉન્નત" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "નેટવર્ક સુયોજન" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "ફાઈલ પરિવહનો" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "વર્ગો" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "" + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "અમુક સુયોજનો બદલવાની જરૂર હતી કે જેને સંપૂર્ણપણે અસર આપવા માટે ફરી શરૂ થવાની જરૂર છે." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*WARNING*\nતમારી ઘર ડિરેક્ટરીમાં DCC ને આપોઆપ સ્વીકારવાનું\nએ ભયજનક અને વિનાશકારી હોઈ શકે. દાત:\nકોઈક તમને .bash_profile મોકલી શક્યું હોય" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "" + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "શબ્દમાળાનું પદચ્છેદન કરવામાં ભૂલ હતી" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "આ સંકેત માત્ર %d દલીલો પસાર કરશે, $%d અયોગ્ય છે" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "લખાણ ફાઈલ છાપો" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ નંબર" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "ઘટનાઓમાં ફેરફાર કરો" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "" + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "બધું ચકાસો" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "યાદી સાફ કરો" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "પસંદિત URL ની નકલ કરો" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "નકલ કરો" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "યાદી ફાઈલમાં સંગ્રહો" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d ચાલકો, %d કુલ" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "" diff --git a/hexchat/po/hi.po b/hexchat/po/hi.po new file mode 100644 index 0000000..1847c9d --- /dev/null +++ b/hexchat/po/hi.po @@ -0,0 +1,6255 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Rajesh Ranjan <rajesh672@gmail.com>, 2005 +# Rajesh Ranjan <rajesh672@gmail.com>, 2005 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-03 20:10+0000\n" +"Last-Translator: TingPing <tingping@tingping.se>\n" +"Language-Team: Hindi (http://www.transifex.com/hexchat/hexchat/language/hi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: hi\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "मैं व्यस्त हूँ" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "छोड़ रहा है" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "संजाल" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<कोई नहीं>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "चैनेल" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "प्रतीक्षारत" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "सक्रिय" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "असफल" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "सम्पन्न" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "जोड़ें" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "छोड़ा गया" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "%s का अभिगम नहीं कर सकता\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "त्रुटि" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "कोई सक्रिय DCC नहीं\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "ऑपरेटर दर्जा दें" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "ऑपरेटर दर्जा लें" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "आवाज दें" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "आवाज लें" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "किक/प्रतिबंध" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "किक" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "प्रतिबंध" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "KickBan" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "चैनल छोड़ें" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "चैनल से जुड़ें..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "शामिल होने के लिये चैनल में दाखिल हों:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "सर्वर लिंक" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "सर्वर पिंग करें" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "संस्करण छुपायें" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Op" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "bye" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "किक करने का कारण दें %s:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "संवाद" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "भेजें" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "गपशप" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "खाली" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "पिंग" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "" + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* बतौर रूट IRC चलाना वेबकूफी है! आपको एक उपयोक्ता \n खाता बनाना चाहिये और उसे लॉगिन के लिये प्रयोग करना चाहिये.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "हां " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "नहीं " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "%s से आप CTCP फ्लडेड हो रहे हैं, %s को नजरअंदाज कर रहा है\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s ऑनलाइन\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s ऑफलाइन\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "कोई चैनल से जुड़ा नहीं है. /join #<channel> की कोशिश करें\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "संबंधित नहीं. /server <host> [<port>] की कोशिश करें\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "मुझे /bin/sh चलाने की जरूरत है!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "अज्ञात arg '%s' अनदेखा किया गया." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "" + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "ऐसा कोई प्लगिन नहीं मिला.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "प्लगिन अनलोड होने से मना कर रहा है.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <name> <action>, उपयोक्ता सूची में बटन जोड़ें" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <cmd>, आपके द्वारा शामिल सभी चैनल में समादेश भेजें" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <cmd>, आपके द्वारा शामिल सभी सर्वर में समादेश भेजें" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <mask> [<bantype>], मौजूदा चैनल से मास्क से मिलान करने वाले हर को प्रतिबंधित करता है. अगर वे पहले से चैनल पर हैं तो यह उनको किक नहीं करता है (chanop होना आवश्यक)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "" + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <code|wildcard>, देश कोड प्राप्त करता है, उदाहरण के लिये: au = australia" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <nick> <message>, CTCP संदेश निक को भेजें, सामान्य संदेश VERSION और USERINFO हैं" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <nick>, मौजूदा चैनल पर उपनाम से चैनल आधा ऑपरेटर स्थिति हटाता है (chanop होना जरूरी)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <name>, उपयोक्ता सूची के अंदर एक बटन मिटाता है" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <nick>, मौजूदा चैनल पर उपनाम से चैनल ऑपरेटर स्थिति हटाता है (chanop होना जरूरी)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <nick>, मौजूदा चैनल पर उपनाम से ध्वनि स्थिति हटाता है (chanop होना जरूरी)" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, सर्वर से विसंबंधित करता है" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <text>, स्थानीय रूप से पाठ मुद्रित करता है" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <command>, समादेश चलाता है. अगर -o फ्लैग का प्रयोग होता है तो आउटपुट मौजूदा चैनल को जाता है, नहीं तो मौजूदा पाठ बॉक्स में मुद्रित हो जाता है" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, SIGCONT प्रक्रिया भेजता है" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9], मौजूदा सत्र में एक चलायमान निष्पादन को मारता है. अगर -9 दिया जाता है तो प्रक्रिया SIGKILL हो जाता है" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, SIGSTOP प्रक्रिया भेजता है" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, stdin प्रक्रिया को आंकड़ा भेजता है" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, मौजूदा सर्वर के प्रेषण कतार को फ्लश करता है" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <host> [<port>], मेजबान के द्वारा प्रॉक्सी करता है, 23 में मूलभूत पोर्ट करता है" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <nick>, chanhalf-op स्थिति उपनाम को देता है (chanop होना जरूरत है)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <mask> <types..> <options..>\n मास्क - अनदेखा करने के लिये मेजबान मास्क करें, उदा: *!*@*.aol.com\n प्रकार - अनदेखा करने के लिये आंकड़ा प्रकार, एक या सभी का:\n PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n विकल्प - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <nick> [<channel>], किसी को चैनल में आमंत्रित करता है, मूलभूत रूप से मौजूदा चैनल में (chanop आवश्यक)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <channel>, चैनल से जोड़ता है" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, एक नये lag जांच के लिये दबाव डालता है" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, मौजूदा चैनल में सभी चैनलहाफ ऑपरेटर की ऑपरेटर स्थिति लेना (chanop होना जरूरी है)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, मौजूदा चैनल में सभी चैनल ऑपरेटर की ऑपरेटर स्थिति लेना (chanop होना जरूरी है)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <action>, मौजूदा चैनल में एक्शन भेजता है (एक्शन तृतीय पुरूष के रूप में लिखा जाता है, जैसे /me jumps)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, आपको छोड़ सभी को किक करता है चैनल में (chanop आवश्यक)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, मौजूदा चैनल में सभी उपयोक्ता को मास ऑपरेटर (chanop आवश्यक)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <nick> <message>, एक CTCP सूचना भेजता है" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <nickname>, आपका उपनाम सेट करता है" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <nick>, उपनाम को चैनल ऑपरेटर स्थिति देता है (chanop की आवश्यकता है)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<channel>] [<reason>], चैनल छोड़ता है, मूलभूत रूप से मौजूदा चैनल को" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <nick | channel>, CTCP उपनाम या चैनल पिंग करता है" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "" + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<reason>], मौजूदा सर्वर से विसंबंधित करता है" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <text>, सर्वर में पाठ कच्चे रूप में भेजता है" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<host>] [<port>] [<password>], मौजूदा सर्वर में पुनः जुड़ने के लिये /RECONNECT के रूप में लाया सकता है या /RECONNECT ALL से सभी खुले सर्वर से फिर से जोड़कर" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<host>] [<port>] [<password>], मौजूदा सर्वर में पुनः जुड़ने के लिये /RECONNECT के रूप में लाया सकता है या /RECONNECT ALL से सभी खुले सर्वर से फिर से जोड़कर" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <text>, मौजूदा विंडो में वस्तु को पाठ भेजता है" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <host> <port> <channel>, एक चैनल से संबंधित होता है औऱ शामिल होता है" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <host> <port> <channel>, एक चैनल से संबंधित होता है औऱ शामिल होता है" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <host> [<port>] [<password>], एक सर्वर से जोड़ता है, मूलभूत पोर्ट 6667 है" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<topic>], अगर एक दिया हुआ है तो टॉपिक सेट करता है, अन्यथा मौजूदा टॉपिक दिखाता है" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <mask> [<mask>...], निर्दिष्ट मास्क पर से प्रतिबंध हटाता है." + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <mask> [QUIET]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <name>, एक प्लगिन या स्क्रिप्ट अनलोड करता है" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "" + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, URL में ब्रॉउजर खोलता है" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <nick>, किसी को ध्वनि स्थिति देता है (chanop की आवश्यकता है)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <message>, सभी चैनल में संदेश लिखता है" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <message>, सभी चैनल ऑपरेटर को मौजूदा चैनल पर संदेश भेजता है" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "उपयोग: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nउस समादेश पर कोई सहायता उपलब्ध है.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "ऐसा कोई समादेश नहीं.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "उपयोक्ता समादेश के लिये गलत तर्क.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "कई recursive उपयोक्ता समादेश, विफल कर रहा है." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "क्या आप निश्चित हैं कि यह एक SSL सक्षम सर्वर व पोर्ट है?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "%s मेजबाननाम हल नहीं कर सकता है\nअपना IP सेटिंग जांचें!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "प्रॉक्सी लेनदेन विफल.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "%s में अगला सर्वर में चक्रीय कर रहा है...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "चेतावनी: \"%s\" संप्रतीक सेट अज्ञात है. %s संजाल के लिये कोई वार्तालाप लागू नहीं होगी." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "" + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "" + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%UChannel उपयोक्ता विषय" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "" + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "" + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "" + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "" + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "" + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "" + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "" + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "" + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "" + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "" + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "" + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "" + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tसूचना सूची खाली है." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "" + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "" + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "" + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "" + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** इसपर लॉगिंग समाप्त कर रहा है %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** इसपर लॉगिंग शुरू करें %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "बांया संदेश" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "दाहिना संदेश" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "IP पता" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "उपयोक्तानाम" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "शामिल व्यक्ति का नाम" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "शामिल हुआ चैनल" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "व्यक्ति का मेजबान" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "उपनाम" + +#: src/common/text.c:980 +msgid "The action" +msgstr "क्रिया" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "मोड चार" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "पहचाना गया पाठ" + +#: src/common/text.c:987 +msgid "The text" +msgstr "पाठ" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "संदेश" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "सर्वर नाम" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "पुराना उपनाम" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "नया उपनाम" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "विषय बदलने वाले का उपनाम" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "विषय" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "किक किया गये का उपनाम" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "किक किया गया व्यक्ति" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "चैनल" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "तर्क" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "छोड़ रहे व्यक्ति का उपनाम" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "समय" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "निर्माता" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "उपनाम" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "कारण" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "होस्ट" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "यह कहां से है" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "x.x प्रारूप में समय (नीचे देखें)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "चैनल जिसमें यह जा रहा है" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "ध्वनि" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "व्यक्ति का नाम" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "CTCP घटना" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "कुंजी सेट करने वाले का उपनाम" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "कुंजी" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "सीमा सेट करने वाले का उपनाम" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "सीमा" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "ऑपरेटिंग करने वाले का उपनाम" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "उसका उपनाम जिसन ऑपरेट किया है" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "उसका उपनाम जिसन आधा ऑपरेट किया है" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "उसका उपनाम जिसने आधा ऑपरेट किया है" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "उसका उपनाम जिसने घ्वनि किया है" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "उसका उपनाम जिसने व्यायस्ड किया है" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "प्रतिबंध लगाने वाले का उपनाम" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "प्रतिबंध मास्क" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "कुंजी हटाने वाले का उपनाम" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "सीमा हटाने वाले का उपनाम" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "उसका उपनाम जिसने डिऑपरेटिंग किया है" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "उसका उपनाम जिसने डिहाफऑपरेटिंग किया है" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "उसका उपनाम जिसने डिव्यायसिंग किया गया है" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "उसका उपनाम जिसने exempt किया है" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "exempt मास्क" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "exempt हटाने वाले का उपनाम" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "आमंत्रण देने वाले का उपनाम" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "आमंत्रण मास्क" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "आमंत्रण हटाने वाले का उपनाम" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "मोड सेट करने वाले का उपनाम" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "मोड हस्ताक्षर (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "मोड पत्र" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "चैनल जिसपर सेट है" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "पूरा नाम" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "चैनल सदस्यता/\"एक IRC ऑपरेटर है\"" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "सर्वर जानकारी" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "सुस्त समय" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "साइनऑन समय" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "दूर का कारण" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "संदेश" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "खाता" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "वास्तविक user@host" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "वास्तविक IP" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "चैनल नाम" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "पाठ" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "आपको आमंत्रित करने वाले का उपनाम" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "उपयोक्ता" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "उपयोग में उपनाम" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "उपनाम के लिये कोशिश की गई" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "आईपी" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "पोर्ट" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "मोड स्ट्रिंग" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "डीसीसी क़िस्म" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "फ़ाइलनाम" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "गंतव्य फाइलनाम" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "पाथनेम" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "स्थिति" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "आकार" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "DCC स्ट्रिंग" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "सूचना मद की संख्या" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "पुराना फाइलनाम" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "नया फाइलनाम" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "पाने वाला" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "होस्टमास्क" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "मेजबाननाम" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "पैकेट" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "सेकेंड" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "उपनाम जिसने आमंत्रण दिया है" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "बैनमास्क" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "किसने प्रतिबंध सेट किया है" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "प्रतिबंध समय" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "ध्वनि फाइल नहीं पढ़ सकता है:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "दूरस्थ मेजबान बंद सॉकेट" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "कनेक्शन अस्वीकृत" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "मेजबान में कोई रूट नहीं" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "कनेक्शन टाइम आउट हो गया" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "वह पता नियत नहीं कर सकता है" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "संबंधी द्वारा संबंधन फिर सेट" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "अंडोरा" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "संयुक्त अरब अमीरात" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "अफगानिस्तान" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "एंटिगुआ और बर्बुडा" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "एंग्विला" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "अलबानिया" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "आर्मेनिया" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "नीदरलैंड्स एंटीलेस" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "अंगोला" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "अंटार्कटिका" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "अर्जेन्टिना" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "विलोम DNS" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "अमेरिकन समोआ" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "आस्ट्रिया" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "आस्ट्रेलिया" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "अरूबा" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "अजरबैजान" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "बोस्निया और हर्जेगोविना" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "बारबोडस" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "बांग्लादेश" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "बेल्जियम" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "बुर्किना फासो" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "बल्गारिया" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "बहरीन" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "बुरूंडी" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "व्यापार" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "बेनिन" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "बरमुडा" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "ब्रुनेई दारूसलाम" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "बोलिविया" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "ब्राजील" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "बहामा" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "भूटान" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "बौभेट द्वीप" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "बोत्सवाना" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "बेलारूस" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "बेलाइज" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "कनाडा" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "कोकोस द्वीप" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "कांगो लोकतांत्रिक गणतंत्र" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "केंद्रीय अफ्रीकी गणतंत्र" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "कांगो" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "स्विट्जरलैंड" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "कोटे डि इवायर" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "कुक द्वीप" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "चिली" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "कैमरून" + +#: src/common/util.c:738 +msgid "China" +msgstr "चीन" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "कोलंबिया" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "इंटरनिक वाणिज्यिक" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "कोस्टा रिका" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "सर्बीया अने मोन्टेनेग्रो" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "क्यूबा" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "केप वर्डे" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "क्रिसमस द्वीप" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "साइप्रस" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "चेक गणतंत्र" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "जर्मनी" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "दिबॉती" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "डेनमार्क" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "डोमिनिका" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "डोमिनिकन गणतंत्र" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "अल्जीरिया" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "इक्वेडर" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "शैक्षणिक संस्थायें" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "इस्टोनिया" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "मिश्र" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "पश्चिम सहारा" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "इरीट्रिया" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "स्पेन" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "इथोपिया" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "फिनलैंड" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "फिजी" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "फाकलैंड द्वीप" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "माइक्रोनेशिया" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "फैरो द्वीप" + +#: src/common/util.c:770 +msgid "France" +msgstr "फ्रांस" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "गैबन" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "ग्रेट ब्रिटेन" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "ग्रेनाडा" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "जार्जिया" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "फ्रेंच गायना" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "ब्रिटिश चैनल द्वीप" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "घाना" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "जिब्राल्टर" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "ग्रीनलैंड" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "गैंबिया" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "गायना" + +#: src/common/util.c:782 +msgid "Government" +msgstr "सरकार" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "गुआडेलोप" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "भूमध्यरेखीय गायना" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "ग्रीस" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "दक्षिणी ज्यार्जिया व दक्षिणी सैंडविच द्वीप" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "गुआटेमाला" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "गुआम" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "गाइना बिसाउ" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "गुयाना" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "हांग कांग" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "हर्ड व मैकडोनाल्ड द्वीप" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "होंडुरास" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "क्रोशिया" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "हैती" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "हंगरी" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "इंडोनेशिया" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "आयरलैंड" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "इज़राइल" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "" + +#: src/common/util.c:801 +msgid "India" +msgstr "भारत" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "जानकारीपरक" + +#: src/common/util.c:803 +msgid "International" +msgstr "अंतर्राष्ट्रीय" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "ब्रिटिश इंडियन समुद्री क्षेत्र" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "इराक" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "इरान" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "आइसलैंड" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "इटली" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "जमैका" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "जोर्डन" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "जापान" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "कीनिया" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "किर्गीस्तान" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "कंबोडिया" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "किरीबाती" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "कोमोरोस" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "सेंट किट्स तथा नेविस" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "उत्तर कोरिया" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "दक्षिण कोरिया" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "कुवैत" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "कैमन द्वीप" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "कजाखस्तान" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "लाओस" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "लेबनान" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "सेंट लुसिया" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "लिचेंस्टाइन" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "श्रीलंका" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "लाइबेरिया" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "लेसोथो" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "लिथुआनिया" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "लक्समबर्ग" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "लाटविया" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "लीबिया" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "मोरोक्को" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "मोनाको" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "माल्डोवा" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "संयुक्त राज्य मेडिकल" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "मेडागास्कर" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "मार्शल द्वीप" + +#: src/common/util.c:843 +msgid "Military" +msgstr "सैना" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "मेसीडोनिया" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "माली" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "म्यनमार" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "मंगोलिया" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "मकाउ" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "उत्तरी मरियाना द्वीप" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "मार्टीनीक" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "मारीटेनिया" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "मोंट्सेराट" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "माल्टा" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "मॉरीशस" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "मालदीव" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "मलावी" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "मेक्सिको" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "मलेशिया" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "मोजांबिक" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "नामीबिया" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "न्यू कैलिडोनिया" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "नाइजर" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "इंटरनिक संजाल" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "नॉरफॉक द्वीप" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "नाइजीरिया" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "निकारागुआ" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "नीदरलैंड्स" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "नार्वे" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "नेपाल" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "नौरू" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "निवे" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "न्यू जीलैंड" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "ओमान" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "इंटरनिक गैर लाभकारी संगठन" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "पनामा" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "पेरू" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "फ्रेंच पोलीनेशिया" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "पापुआ न्यू गिनी" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "फिलीपीन" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "पाकिस्तान" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "पोलेंड" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "सेंट पियरे व मिकेलन" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "पिटकैर्न" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "प्यूरिटो रिको" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "फिलीस्तीनी क्षेत्र" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "पुर्तगाल" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "पलाऊ" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "पराग्वे" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "कातार" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "रीयूनियन" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "रोमानिया" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "ओल्ड स्कूल ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "रूस परिसंघ" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "रवांडा" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "सऊदी अरब" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "सोलोमन द्वीप" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "सिचेलीस" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "सूडान" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "स्वीडन" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "सिंगापुर" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "सेंट हेलेना" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "स्लोवेनिया" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "स्वालबर्ड और जेन मयेन द्वीप" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "स्लोवाक गणतंत्र" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "सियरा लियोन" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "सैन मेरिनो" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "सेनेगल" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "सोमालिया" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "सुरीनाम" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "साओ टोम अने प्रिन्साईप" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "भूतपूर्व USSR" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "अल सल्वाडोर" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "सीरिया" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "स्वाजीलैंड" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "तुर्क्स अने केईकोस द्वीपओ" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "चाड" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "फ्रेंच दक्षिण परिक्षेत्र" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "टोगो" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "थाइलैंड" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "ताजीकिस्तान" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "टोकेलाऊ" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "पूर्वीय टाईमोर" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "तुर्कमेनिस्तान" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "ट्यूनीशिया" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "टोन्गा" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "तुर्की" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "ट्रिनीदाद अने टोबेगो" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "तुवालू" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "ताइवान" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "तान्झानीया" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "उक्रेन" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "यूगांडा" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "यूनाइटेड किंगडम" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "युनाइटेड स्टेट आफ अमेरिका" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "उरुगवे" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "उजबेकिस्तान" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "वेटिकन सिटी स्टेट" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "सेंट विंसेंट तथा ग्रेनेडाइन्स" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "वेनेजुएला" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "ब्रिटिश बर्जिन द्वीप" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "US वर्जिन द्वीप" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "विएतनाम" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "वैनुआटु" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "वेलिश और फुटूना द्वीप" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "समोआ" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "यमन" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "मयोटे" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "युगोस्लाविया" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "दक्षिण अफ्रीका" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "जांबिया" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "जिंबाबवे" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "संप्रतीक चार्ट" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "प्रतिबंध" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "निमंत्रित करें" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "" + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "आपको अवश्य कुछ प्रतिबंध चुनना चाहिये" + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "मास्क" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "से" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "तारीख़" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "हटाएं" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "क्रॉप" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "ताज़ा करें" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "" + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "एक आउटपुट फाइल नाम चुनें" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "चैनल नाम" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "ढूंढें:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "%s में फाइल भेजें" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "वह फाइल नहीं संभव है." + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "फाइल अभिगम नहीं कर सकता: %s\n%s.\nपुनर्बहाली संभव नहीं." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "डाउनलोड निर्देशिका का फाइल दिये गये फाइल से बड़ा है. पुनर्बहाली संभव नहीं." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "दो व्यक्ति से समान फाइल नहीं ले सकता." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "स्थिति" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "फाइल" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "दोनों" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "छोड़ें" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "स्वीकारें" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "पुनरारंभ" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "" + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Recv" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "भेजी-डाक" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "मिटाओ" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "रद्द" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "सहेजें" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "समादेस चलायें:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "पोर्ट खोलने में विफल:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "ढूंढें बफर खाली है.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d बाइट्" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "The Insert in Buffer command will insert the contents of Data 1 into the entry where the key sequence was pressed at the current cursor position" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "The Set Buffer command sets the entry where the key sequence was entered to the contents of Data 1" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "The Last Command command sets the entry to contain the last command entered - the same as pressing up in a shell" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "The Next Command command sets the entry to contain the next command entered - the same as pressing down in a shell" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "This command changes the text in the entry to finish an incomplete nickname or command. If Data 1 is set then double-tabbing in a string will select the last nick, not the next" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "This command scrolls up and down through the list of nicks. If Data 1 is set to anything it will scroll up, else it scrolls down" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "This command checks the last word entered in the entry against the replace list and replaces it if it finds a match" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "This command moves the front tab left by one" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "This command moves the front tab right by one" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "मौजूदा टैब परिवार को यह समादेश बांयी ओर बढ़ाता है" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "मौजूदा टैब परिवार को यह समादेश दाहिनी ओर बढ़ाता है" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "इतिहास में इनपुट लाइन डालें लेकिन सर्वर में मत भेजें" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "कुंजी बाइंडिंग विन्यास के भारण में त्रुटि थी." + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "उस फाइल में नहीं लिख सकता है" + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "उस फाइल को पढ़ नहीं सकता है" + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "वह मास्क पहले से मौजूद है" + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "निजी" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "सूचना" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "सीटीसीपी" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "डीसीसी" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "अनदेखा न करें" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "अनदेखा करने के लिये मास्क दें: " + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "अनदेखा स्थिति:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "चैनलः" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "निजी:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "सूचना:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "आमंत्रण करें:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "" + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "" + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "" + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "" + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "" + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "" + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "इसके साथ संवाद" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "%s के लिये टॉपिक है: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "कोई टापिक सेच नहीं है" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "" + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "" + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "बंद करें (_C)" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "उपयोक्ता सीमा अवश्य एक संख्या होनी चाहिये!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "कोई बाहरी संदेश नहीं" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "टॉपिक सुरक्षा" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "सिर्फ आमंत्रण" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "Moderated" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "प्रतिबंध सूची" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "कीवर्ड" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "उपयोक्ता सीमा" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "नया उपनाम दें:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "" + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "" + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "" + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "मेजबान नाम" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "अज्ञात" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "चैनल में शामिल हों" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "चैनल छोड़ें" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "चक्रीय चैनल" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "बंद" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "ग्राफ" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "सर्वर (_S)" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "जमावट (_e)" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "विंडो (_W)" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "मार्कर पंक्ति फिर सेट करें" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "पाठ साफ करें" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "मदद (_H)" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "विषय सूची (_C)" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "के बारे में (_A)" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "नाम" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "पिछली बार देखा गया" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "ऑफ़लाइन" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "कभी नहीं" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "ऑनलाइन" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "पता में उपनाम जोड़ें:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "संस्करण" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "वर्णन" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "भारित करने के लिये प्लगिन या स्क्रिप्ट चुनें" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "लोड (_L)..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "" + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "नया संजाल" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "वास्तव में संजाल \"%s\" और इसके सारे सर्वर को हटाता है?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "संपादन (_E)" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "चुने गये सर्वर से सिर्फ जुड़ें" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "संबंधन विफल होने पर सभी सर्वर से चक्रीय न होयें." + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "इस संजाल पर सभी सर्वर के लिये SSL का प्रयोग करें" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "वैश्विक उपयोक्ता सूचना का प्रयोग करें" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "उपनाम (_N):" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "दूसरा विकल्प:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "वास्तविक नाम (_l):" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "उपयोक्ता नाम (_U):" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "शब्दकूट:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "संप्रतीक सेट:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "उपयोक्ता जानकारी" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "तीसरा विकल्प:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "संजाल" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "संपादित करें (_E)..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "क्रमबद्ध करें (_S)" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "जोड़ें (_o)" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "अलबानिया" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "अजरबैजान" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "बेलारूस" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "बल्गारिया" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "इस्टोनिया" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "भारत" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "मलेशिया" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "थाइलैंड" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "विएतनाम" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "सामान्य" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "फ़ॉन्टः" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "रंग किया गया उपनाम" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "IRC पर हर आदमी को अलग रंग दें" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "प्रमाणित उपनाम" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "उपनाम को राइट जस्टीफाइड बनायें" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "मार्कर पंक्ति दिखायें" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "अंतिम पढ़े गये पाठ के बाद लाल रेखा दें" + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "पृष्ठभूमि चित्र:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "" + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "" + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "उपनाम समाप्ति" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "उपनाम समाप्ति प्रत्यय:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "" + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "बिना छांटा" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "ऊपर" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "नीचे" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "छुपा हुआ" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "उपयोक्ता सूची" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "उपयोक्ता सूची में मेजबाननाम दिखायें" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "पाठ बॉक्स फंट व रंग का प्रयोग करें" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "इस रूप में उपयोक्ता सूची छांटी गई:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "इससे छोटे चैनल पर:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "दोहरे क्लिक पर क्रिया" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "विंडोज़" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "टॉब्स" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "हमेशा" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "सिर्प आग्रहित टैब" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "सर्वर संदेश के लिये एक अलग टैब खोलें" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "अकारादि क्रम में सजायें" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "नया टैब पर फोकस करें:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "इसमें टैब लेबल का छोटा करें:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "अक्षर" + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "टैब या विंडो" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "इसमें चैनल खोलें:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "इसमें संवाद खोलें:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "इसमें उपयोगिता खोलें:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Open DCC, Ignore, Notify etc, in tabs or windows?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "फाइल और निर्देशिका" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "यहां फाइल डाउनलोड करें:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "यहां पूरी की गई फाइल भेजें:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "फाइलनाम में उपनाम सहेजें" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "स्वतः खोलें DCC विंडो" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "भेजें विंडो" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "विंडो पायें" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "बातचीत विंडो" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "एक अपलोड:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "एक स्थानांतरण के लिये अधिकतम गति" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "एक डाउनलोड:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "संयुक्त रूप से सभी अपलोड:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "सभी फाइल के लिये सर्वाधिक गति" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "सभी डाउनलोड संयुक्त रूप से:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "चेतावनी" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "" + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "मूलभूत संदेश" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "छोड़ें:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "चैनल छोड़े:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "दूर:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "दूर" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "एकबार दूर दिखायें" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "बतौर दूर स्वतः अचिह्नित करें" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "" + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "MODEs कच्चे प्रारूप में दिखायें" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "शामिल व अलग संदेश छुपायें" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "स्वतः रूप से फिर जुड़ने में विलंब:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "लॉगिंग" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "स्क्रॉलबैक पंक्ति:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "" + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "लॉग में टाइमस्टैंप दाखिल करें" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "टाइमस्टैंप प्रारूप को लॉग करें:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URL" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(निष्क्रिय)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "आपका पता" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "इससे जोड़ें:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "" + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "IRC सर्वर से मेरा पता लीजिये" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "आपके वास्तविक पता के लिये IRC सर्वर से पूछता है. इसका उपयोग करें अगर आपके पास 192.168.*.* पता है!" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "DCC IP पता:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "दावा करें कि आप इस सूची पर हैं जब आप फाइल का प्रस्ताव भेज रहे हैं." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "" + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "प्रॉक्सी सर्वर" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "मेजबाननाम:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "पोर्टः" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "प्रकार:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "उपयोक्ता नाम:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "चित्र फाइल चुनें" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "फंट चुनें" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "ब्राउज़..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "रंग चुनें" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "पाठ रंग" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "mIRC रंग:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "अग्रभूमि:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "पृष्ठभूमि:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "अंतरफलक रंग" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "नया आंकड़ा:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "मार्कर पंक्ति:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "नया संदेश:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "दूर उपयोक्ता:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "उभारें:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "घटना" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "ध्वनि फाइल" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "ध्वनि फाइल चुनें" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "ध्वनि फाइल:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "ब्राउज...(_B)" + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "बजाएँ (_P)" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "अंतरफलक" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "इनपुट बॉक्स" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "उपयोक्ता सूची" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "रंग" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "बातचीत" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "विस्तृत" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "संजाल सेटअप" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "फाइल स्थानांतरण" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "श्रेणियां" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "" + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Some settings were changed that require a restart to take full effect." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*WARNING*\nAuto accepting DCC to your home directory\ncan be dangerous and is exploitable. Eg:\nSomeone could send you a .bash_profile" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "" + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "स्ट्रिंग की व्याख्या में त्रुटि थी" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "यह संकेत सिर्फ भेजा गया %d args है, $%d अमान्य है" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "पाठ फाइल मुद्रित करें" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ संख्या" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "घटना संपादित करें" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "" + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "सबको जांचें" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "सूची साफ करें" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "चुनें गये URL को कॉपी करें" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "कॉपी" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "फाइल में सूची सहेजें" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d ऑपरेटर, %d कुल" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "" diff --git a/hexchat/po/hu.po b/hexchat/po/hu.po new file mode 100644 index 0000000..c99b659 --- /dev/null +++ b/hexchat/po/hu.po @@ -0,0 +1,6260 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# bviktor, 2012 +# bviktor, 2012-2013 +# bviktor, 2013 +# bviktor, 2012 +# Gabor Hosszu <hosszu.gabor90@gmail.com>, 2015 +# Horvath Szabolcs <horvathsz@penguinpowered.com>, 1999-2000, 2005 +# Kata Konkoly <kata@linuxforum.hu>, 2005 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-03 20:13+0000\n" +"Last-Translator: TingPing <tingping@tingping.se>\n" +"Language-Team: Hungarian (http://www.transifex.com/hexchat/hexchat/language/hu/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: hu\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "IRC kliens" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Elfoglalt vagyok" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Távozom" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Hálózat" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<nincs>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Csatorna" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Várakozás" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Aktív" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Sikertelen" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Kész" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Kapcsolódás" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Megszakítva" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "%s nem érhető el\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Hiba" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s felajánlja a következőt: \"%s\". El kívánja fogadni?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "Nincs aktív DCC\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "Párbeszédablak _nyitása" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "_Fájl küldése" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "Felhasz_nálóinformációk (WHOIS)" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "Hozzá_adás a barátok listájához" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "_Mellőzés" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "O_perátori műveletek" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Op-jog adása" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Op-jog elvétele" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "Voice jog adása" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "Voice jog elvétele" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Kirúgás/kitiltás" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Kirúgás" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "Kitiltás" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "Kirúgás és kitiltás" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Csatorna elhagyása" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Csatlakozás csatornához..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "Írja be a csatorna nevét, amelyhez csatlakozni akar:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Kiszolgáló hivatkozások" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Kiszolgáló pingelése" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Verzió elrejtése" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Op" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "viszlát" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Adja meg %s kirúgásának okát:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "Párbeszéd" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Küldés" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Csevegés" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Összes törlése" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "" + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* Rootként IRC-zni nem okos dolog! Hozzon létre\n egy felhasználót és úgy lépjen be.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "IGEN" + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "NEM" + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "%s CTCP floodol, %s figyelmen kívül lesz hagyva\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "%s MSG floodol, automatikus ablakmegnyitás kikapcsolva.\n" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s online\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s offline\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Nincs benn egy csatornán sem. Próbálja meg a /join #<csatorna> parancsot.\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Nincs kapcsolat. Próbálja ezt: /server <host> [<port>]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "A %s szerver már létezik a %s hálózaton.\n" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "A %s szerver a %s hálózathoz hozzáadva.\n" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Már megjelölve távollévőként: %s\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "Már megjelölve visszatértként.\n" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "A /bin/sh-ra szükség van a futáshoz!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "Elérhető parancsok:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "Felhasználó által megadott parancsok:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "Bővítmény által megadott parancsok:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "További információkért adja ki a /HELP <parancs> vagy /HELP -l parancsot" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "\"%s\" ismeretlen argumentum, mellőzve." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "" + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "Nem található ilyen bővítmény.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "Ezt a bővítményt nem lehet kikapcsolni.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <név> <akció>, a felhasználólista alá helyez el egy gombot" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "ADDSERVER <ÚjHálózat> <újszerver/6667>, létrehoz egy új hálózatot egy új szerverrel a hálózatlistában" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <parancs>, parancs küldése minden csatornára, ahol benn van" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "ALLCHANL <parancs>, parancs küldése minden csatornára az aktuális kiszolgálón" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <parancs>, parancs küldése minden kiszolgálóra, ahol benn van" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "BACK, visszatértnek (nem távollévőnek) jelöli" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <maszk> [<kitiltástípus>], kitilt mindenkit, akire illik a maszk az adott csatornán. Ha már benn vannak a csatornán, nem rúgja ki őket (ehhez chanop-jog kell)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <változó> [<érték>]" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "CHARSET [<kódolás>], a jelenlegi kapcsolat karakterkódolásának lekérdezése vagy beállítása" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "" + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <kód|helyettesítőkarakter>, országkód keresése, például au = Ausztrália" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <becenév> <üzenet>, CTCP üzenet küldése a becenévnek, gyakori üzenetek: VERSION és USERINFO" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "CYCLE [<csatorna>], kilép és azonnal visszalép az aktuális vagy a megadott csatornára" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <becenév> - küldött fájl elfogadása\nDCC SEND [-maxcps=#] <becenév> [fájl] - fájlküldés\nDCC PSEND [-maxcps=#] <becenév> [fájl] - fájlküldés passzív módban\nDCC LIST - DCC lista mutatása\nDCC CHAT <becenév> - DCC CHAT meghívás\nDCC PCHAT <becenév> - DCC CHAT meghívás passzív módban\nDCC CLOSE <típus> <becenév> <fájl> DCC átvitel bezárása; példa:\n /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <becenév>, elveszi a fél-op státuszt az adott csatornán a becenévtől (op-jog szükséges)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <név>, gomb törlése a felhasználólista alól" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <becenév>, op-jog megvonása a becenévtől az adott csatornán (op-jog szükséges)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <becenév>, megvonja a voice státuszt a becenévtől az adott csatornán (op-jog szükséges)" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, bontja a kapcsolatot a kiszolgálóval" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <szöveg>, szöveg helyi megjelenítése" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <parancs>, parancs futtatása. Ha -o -val használja, a kimenet az aktuális csatornára megy, egyébként az aktuális szövegdobozba" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, SIGCONT küldése a folyamatnak" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9], futó exec kilövése az aktuális munkafolyamatban. Ha a -9 kapcsolóval használja, a folyamat SIGKILL szignált kap" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, SIGSTOP küldése a folyamatnak" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, adatok küldése a folyamat szabványos bemenetére" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "EXPORTCONF, HexChat beállítások exportálása" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, törli az aktuális kiszolgáló küldési várakozási sorát" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <kiszolgáló> [<port>], a kiszolgáló beállítása proxyként, az alapértelmezett portszám a 23" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <becenév> <jelszó>, Egy ghost-olt becenév kilövése" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <becenév>, fél-op státuszt ad a becenévnek (op-jog szükséges)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <jelszó>, azonosítja a becenév-kiszolgáló felé" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <maszk> <típusok..> <opciók..>\n maszk - a mellőzendő gépek maszkja, például *!*@*.aol.com\n típusok - a mellőzendő adatok típusa, a következők legalább egyike:\n PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n opciók - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <becenév> [<csatorna>], meghívja a becenevet egy csatornára, alapértelmezésben az aktuálisra (op-jog szükséges)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <csatorna>, belépés a csatornára" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, új lag ellenőrzés kikényszerítése" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "LASTLOG [-h] [-m] [-r] [--] <szöveg>, szöveg keresése a pufferben\n Használd a -h kapcsolót a találat(ok) kiemeléséhez\n Használd az -m kapcsolót a kis/nagybetű érzékenységhez\n Használd az -r kapcsolót reguláris kifejezés használatához\n Használd a -- (dupla kötőjel) kapcsolót az opciók lezárásához, például ha az '-r' szövegre keresel" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <fájl>, bővítmény vagy parancsfájl betöltése" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, minden fél-op-tól elveszi a fél-op jogot az adott csatornán (op-jog szükséges)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, minden op-tól elveszi az op-jogot az adott csatornán (op-jog szükséges)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <akció>, az adott tevékenységet az aktuális csatornára küldi (az igék 3. személyben írandók, például: /me ugrál)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, tömegesen kirúg mindenkit az adott csatornáról, kivéve Önt (op-jog szükséges)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, tömeges op-jog adása mindenkinek az adott csatornán (op-jog szükséges)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <becenév> <üzenet>, CTCP figyelmeztetés küldése" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <kiszolgálónév> [<port>]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <becenév>, beállítja a becenevét" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [-n hálózat1[,hálózat2,...]] [<becenév>], megjeleníti az értesítési listát vagy hozzáad valakit" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <becenév>, op-jogot ad a becenévnek (op-jog szükséges)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<csatorna>] [<indoklás>], kilép a csatornáról, alapértelmezésben az aktuálisról" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <becenév | csatorna>, CTCP-pingeli a becenevet vagy a csatornát" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "" + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<indoklás>], bontja a kapcsolatot az aktuális kiszolgálóval" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <szöveg>, nyers formában küldi a szöveget a kiszolgálóra" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<kiszolgáló>] [<port>] [<jelszó>], Ugyanúgy használható, mint a /RECONNECT (újracsatlakozás az aktuális kiszolgálóhoz) vagy /RECONNECT ALL (minden nyitott kiszolgálóhoz csatlakozik)" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<host>] [<port>] [<jelszó>], Ugyanúgy használható, mint a /RECONNECT (újracsatlakozás az aktuális kiszolgálóhoz) vagy /RECONNECT ALL (minden nyitott kiszolgálóhoz csatlakozik)" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "RECV <szöveg>, nyers adatok küldése a HexChat-nek, mintha az IRC kiszolgálótól érkezett volna" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <szöveg>, szöveget küld az aktuális ablakban lévő objektumba" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <becenév> [<fájl>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <host> <port> <csatorna>, csatlakozik és belép egy adott csatornára" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <host> <port> <csatorna>, csatlakozik és belép az adott csatornára" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "SERVER [-ssl] <host> [<port>] [<jelszó>], csatlakozik a kiszolgálóhoz, az alapértelmezett port 6667 normál kapcsolathoz, és 6697 SSL kapcsolathoz" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <host> [<port>] [<jelszó>], csatlakozik az adott kiszolgálóhoz, az alapértelmezett port a 6667" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-off|-on] [-quiet] <változó> [<érték>]" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "SETCURSOR [-|+]<pozíció>, a kurzor átmozgatása a beviteli mezőben" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "SETTAB <új név>, egy fül nevének megváltoztatása, a tab_trunc korlát továbbra is érvényes" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "SETTEXT <új szöveg>, a beviteli mező szövegének cseréje" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<téma>], beállítja a témát, ha megadja, vagy megmutatja az aktuális témát" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "\nTRAY -f <időkorlát> <fájl1> [<fájl2>] Villogjon a tálcán a két ikon között.\nTRAY -f <fájlnév> A tálca beállítása rögzített ikonra.\nTRAY -i <szám> Tálca villogtatása belső ikonnal.\nTRAY -t <szöveg> A tálca gyorstippjének beállítása.\nTRAY -b <cím> <szöveg> A tálca feliratának beállítása." + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <maszk> [<maszk>...], kitiltás feloldása az adott maszkokra." + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <maszk> [QUIET] az adott maszk mellőzésének megszüntetése" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <név>, kikapcsol egy bővítményt vagy parancsfájlt" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "" + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, megnyitja az adott URL-t a böngészőben" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "USELECT [-a] [-s] <nick1> <nick2> stb, kiemeli a beceneve(ke)t a csatorna felhasználólistájában" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <becenév>, voice státuszt ad valakinek (op-jog szükséges)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <üzenet>, kiírja az üzenetet az összes csatornára" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <üzenet>, elküldi az üzenetet az aktuális csatorna összes opjának" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "Használat: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nEhhez a parancshoz nincs súgó.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "Nincs ilyen parancs.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "Hibás argumentum a felhasználói parancs mellett.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "Túl sok rekurzív felhasználói parancs, kilépek." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "Nem találom a hexchat_plugin_init szimbólumot; biztos, hogy ez egy HexChat plugin?" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Biztos, hogy ez SSL-re képes kiszolgáló és port?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "Nem lehet feloldani a(z) %s gépnevet\nEllenőrizze az IP-beállításait!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "Nem sikerült átjutni a proxyn.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Ugrás a következő kiszolgálóra %s múlva...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "Figyelem: a \"%s\" karakterkészlet ismeretlen. Nem lesz konverzió a(z) %s hálózaton." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "%C18*%O$t%C18$1%O az értesítési listához adva." + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "%C22*%O$tNem tudok csatlakozni ide: %C22$1 %O(%C20Ki vagy tiltva%O)." + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "%C29*%O$tJóváhagyott képességek: %C29$2%O" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "%C23*%O$tTámogatott képességek: %C29$2%O" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "%C23*%O$tIgényelt képességek: %C29$1%O" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "%C24*%O$t%C28$1%O mostantól a %C18$2%O néven ismert" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O beállítja %C18$2%O tiltását" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "%C22*%O$tA(z) %C22$1%O csatorna létrehozva ekkor: %C24$2%O" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O elveszi %C18$2%O féloperátor jogát" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O elveszi %C18$2%O operátor jogát" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O elveszi %C18$2%O hangját" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%C felmenti %C18$2%O-t" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O féloperátor jogot ad %C18$2%O részére" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%UCsatorna Felhasználók Téma" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "%C22*%O$t%C26$1%O beállítja a %C24$2$3%O módot ezen: %C22$4%O" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "%C22*%O$t%C22$1%O csatorna módjai: %C24$2" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O operátor jogot ad %C18$2%O részére" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O törli %C18$2%O felmentését" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "%C22*%O$t%C26$1%O törli a csatorna kulcsszavát" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "%C22*%O$t%C26$1%O megszünteti a létszámkorlátot" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O beállítja a csatorna kulcsszavát (%C24$2%O)" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O beállítja a csatorna létszámkorlátját ennyire: %C24$2%O" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O törli %C18$2%O tiltását" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O hangot ad %C18$2%O részére" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "%C23*%O$tKapcsolódva. Most bejelentkezem." + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "%C23*%O$tCsatlakozás ide: %C29$1%C (%C23$2:$3%O)" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "%C20*%O$tCsatlakozás sikertelen (%C20$1%O)" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "%C24*%O$tCTCP %C24$1%C érkezett %C18$2%O felől" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "%C24*%C$tCTCP %C24$1%C érkezett %C18$2%C felől (%C22$3%C szobában)%O" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "%C24*%O$tCTCP Sound %C24$1%C érkezett %C18$2%O felől" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "%C24*%O$tCTCP Sound %C24$1%C érkezett %C18$2%C felől (%C22$3%O szobában)" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "%C23*%O$t%C18$1%O DCC CHAT-je megszakítva." + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "%C24*%OLétrejött a DCC CHAT kapcsolat $t%C18$1%C felé %C30[%C24$2%C30]%O" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "%C20*%O$tA %C18$1%O felé nyitott DCC CHAT megszakadt (%C20$4%O)" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "%C24*%O$t%C18$1%O DCC CHAT felkérést küldött" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "%C24*%O$tDCC CHAT kezdeményezése %C18$1%O felé" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "%C24*%O$tMár kezdeményeztél CHAT-et %C18$1%O felé" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "%C20*%OA kezdeményezett $tDCC $1 kapcsolódási kísérlet kudarcba fulladt %C18$2%O felé (%C20$3%O)" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "%C23*%O$t'%C23$1%C' érkezett %C18$2%O felől" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "%C20*%O$tÉrvénytelen formátumú DCC kérés érkezett %C18$1%O felől.$a010%C23*%O$tA csomag tartalma: %C23$2%O" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "%C24*%O$t'%C24$1%O' felajánlása %C18$2%O részére" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "%C23*%O$tNincs ilyen DCC ajánlat." + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "%C23*%O$t%C18$1%O felé küldött DCC RECV '%C23$2%O' megszakítva." + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "%C24*%O$tDCC RECV '%C23$1%O' %C18$3%O felől befejeződött %C30[%C24$4%O cps%C30]%O" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$tA DCC RECV kapcsolat létrejött %C18$1 felé %C30[%O%C24$2%C30]%O" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "%C20*%O$t%C18$3%O felől érkező DCC RECV '%C23$1%O' sikertelen (%C20$4%O)" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "%C20*%O$tDCC RECV: '%C23$1%C' írása sikertelen (%C20$2%O)" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "%C23*%O$tMár létezik '%C24$1%C' nevű fájl, mentés '%C23$2%O' néven." + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "%C24*%O$t%C18$1%C '%C23$2%C' folytatását kérte innen: %C24$3%O." + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "%C23*%O$t%C18$1%O felé küldött DCC SEND '%C23$2%C' megszakítva." + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "%C24*%O$tDCC SEND '%C23$1%C' %C18$2%C felé befejeződött %C30[%C24$3%C cps%C30]%O" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$tDCC SEND kapcsolat kiépítve %C18$1 felé %C30[%O%C24$2%C30]%O" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "%C20*%O$tDCC SEND '%C23$1%C' %C18$2%C felé sikertelen (%C20$3%O)" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "%C24*%O$t%C18$1%C felajánlotta: '%C23$2%C' (%C24$3%O bájt)" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "%C20*%O$tDCC $1 '%C23$2%C' %C18$3%O felé megakadt, leállítás." + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "%C20*%O$tDCC $1 '%C23$2%C' %C18$3%O felé túllépte az időkorlátot, leállítás." + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "%C24*%O$t%C18$1%O törölve az értesítési listáról." + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "%C20*%O$tLecsatlakozva (%C20$1%O)" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "%C24*%O$tMegtaláltam az IP címed: %C30[%C24$1%C30]%O" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "%O%C18$1%O a mellőzési listához adva." + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "%O%C18$1%O mellőzési beállításai megváltoztak." + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "%O%C18$1%O törölve a mellőzési listáról." + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "%OA mellőzési lista üres." + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "%C20*%O$t%C22$1%C szobához csatlakozás sikertelen (%C20Meghívás szükséges%O)" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "%C24*%O$t%C18$2%O meghívott téged a %C22$1%O szobába (%C29$3%O)" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "%C20*%O$tNem tudok a %C22$1%C szobába belépni (%C20kulcsszó szükséges%O)" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "%C22*%O$t%C18$2%C ki lett rúgva %C26$1%C által a %C22$3%C szobából (%C24$4%O)" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "%C19*%O$t%C19%C26$1%C legyilkolt téged (%C20$2%O)" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "%C29*%O$t%C29MOTD kihagyva%O" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "%C20*%O$tNincs ilyen DCC." + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "%C23*%O$tJelenleg nem futnak folyamatok" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tAz értesítési lista üres." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "%C23*%O$t%C23$1%O felhasználó az értesítési listán." + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "%C23*%O$tÉrtesítés: %C18$1%C kijelentkezett (%C29$3%O)" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "%C23*%O$tÉrtesítés: %C18$1%C bejelentkezett (%C29$3%O)" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "%C24*%O$tPing válasz %C18$1%C felől: %C24$2%O másodperc" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "%C20*%O$tNem érkezett ping válasz %C24$1%O másodpercig, szétkapcsolódás." + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "%C24*%O$tMár fut egy folyamat" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "%C24*$t$1 kijelentkezett ($2)" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "%C24*%O$t%C26$1%C beállítja a módokat %C30[%C24$2%C30]%O" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "%O-%C29$1/Wallops%O-$t$2" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "%C24*%O$t%C18$1%O IP címének megkeresése..." + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "%C29*%O$tKapcsolódva." + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "%C29*%O$t%C29$1%O megkeresése" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "%C23*%O$tElőző kapcsolódási kísérlet félbehagyva (%C24$1%O)" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "%C22*%O$t%C22$1%C csatorna témája: $2%O" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "%C22*%O$t%C26$1%C megváltoztatta a csatorna témáját erre: $2%O" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "%C22*%O$t%C22$1%C témája beállítva %C26$2%C által (%C24$3%O)" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C20*%O$tIsmeretlen gép. Talán elírtad?" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "%C20*%O$tSikertelen a csatlakozás %C22$1%C szobához (%C20Túllépett létszámkorlát%O)" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "%C22*%O$t%C22$1%C felhasználói: %C24$2%O" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%C távol van %C30(%C23$2%O%C30)%O" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "%C23*%O$t%C28[%C18$1%C28] %OWHOIS lista vége." + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O %C23$2%O óta tétlen" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O %C23$2%O óta tétlen, belépett: %C23$3%O" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O Valódi gépnév: %C23$2%O, Valódi IP: %C30[%C23$3%C30]%O" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "%C19*%O$tMostantól a %C22$2%O csatornán beszélgetsz" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "%C19*%O$t%C26$3%O kirúgott a %C22$2%C csatornából (%C20$4%O)" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "%C19*%O$tElhagytad a %C22$3%O csatornát" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "%C19*%O$tElhagytad a %C22$3%C csatornát (%C24$4%O)" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "%C20*%O$tMeghívtad %C18$1%O-t a %C22$2%O csatornába (%C24$3%O)" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "%C20*%O$tMostantól a %C18$2%O néven beszélgetsz" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "Napló betöltve" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** NAPLÓZÁS BEFEJEZÉSE EKKOR: %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** NAPLÓZÁS KEZDETE EKKOR: %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "* Nem lehet írni a naplófájl(oka)t. Ellenőrizd a\n jogokat a(z) %s fájlon" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "Bal oldali üzenet" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "Jobb oldali üzenet" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "IP cím" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Felhasználónév" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "A csatlakozó személy beceneve" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "A csatorna, amelyre belép" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "A személy gépe" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Becenév" + +#: src/common/text.c:980 +msgid "The action" +msgstr "A művelet" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "Mód karakter" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "Azonosított szöveg" + +#: src/common/text.c:987 +msgid "The text" +msgstr "A szöveg" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "Az üzenet" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Kiszolgáló neve" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "Jóváhagyott képességek" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "Szerver képességek" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "Igényelt képességek" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Régi becenév" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Új becenév" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "A témát megváltoztató személy beceneve" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Téma" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "A kirúgó beceneve" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "A kirúgott személy" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "A csatorna" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "Az indoklás" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "A kilépő személy beceneve" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "Az idő" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "A létrehozó" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Becenév" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Indoklás" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Kiszolgáló" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "Kitől jött" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "Az idő x.x formátumban (lásd lejjebb)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "A csatorna, amelyre megy" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "A hang" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "A személy beceneve" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "A CTCP esemény" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "A személy beceneve, aki a kulcsot beállította" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "A kulcs" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "A személy beceneve, aki beállította a limitet" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "A limit" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "Annak a beceneve, aki az op-jogot adta" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "Annak a beceneve, aki op-jogot kapott" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "Annak a beceneve, aki fél-op jogot kapott" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "Annak a beceneve, aki a fél-op jogot adta" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "Annak a beceneve, aki voice jogot adott" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "Annak a beceneve, aki voice jogot kapott" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "Annak a beceneve, aki a kitiltást végezte" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "A kitiltásmaszk" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "Annak a beceneve, aki eltávolította a kulcsot" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "Annak a beceneve, aki eltávolította a limitet" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "Annak a beceneve, akitől elvették az op-jogot" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Annak a beceneve, akitől elvették a fél-op jogot" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "Annak a beceneve, akitől megvonták a voice jogot" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "Annak a beceneve, aki a kivételezést beállította" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "A kivételezés maszkja" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "Annak a beceneve, aki a kivételezést eltávolította" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "Annak a beceneve, aki a meghívást küldte" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "A meghívás maszkja" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "Annak a beceneve, aki a meghívást visszavonta" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "Annak a beceneve, aki a módot beállította" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "A mód előjele (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "A mód betűjele" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "A csatorna, amelyre beállítják" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Teljes név" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Csatornatagság/\"IRC operátor\"" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Kiszolgálóinformáció" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Tétlenség ideje" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Bejelentkezés ideje" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Távollét oka" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Üzenet" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Fiók" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "Valós user@host" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "Valós IP" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Csatorna neve" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "Nyers szám vagy azonosító" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Szöveg" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Annak a beceneve, aki meghívta" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Felhasználók" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "A becenév használatban van" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Próbált becenév" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Port" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "Módok karakterlánca" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "DCC típus" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Fájlnév" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Cél fájlnév" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "Elérési út" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Pozíció" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Méret" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "DCC karakterlánc" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "Az értesítési bejegyzések száma" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Régi fájlnév" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Új fájlnév" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Címzett" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Kiszolgálómaszk" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Kiszolgálónév" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "A csomag" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "másodperc" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "Annak a beceneve, akit meghívtak" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Kitiltásmaszk" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "Ki állította be a kitiltást" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Kitiltás ideje" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "Nem lehet olvasni ezt a hangfájlt:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "A távoli gép lezárta a foglalatot" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "Kapcsolódás elutasítva" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "Nincs útvonal a kiszolgálóhoz" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Időtúllépés miatt a kapcsolat megszakadt" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "Ezt a címet nem lehet kiosztani" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "A kapcsolatot a túloldali gép visszaállította" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "Ascension-sziget" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Egyesült Arab Emirátusok" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "Repüléssel kapcsolatos területek" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Afganisztán" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Antigua és Barbuda" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Albánia" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Örményország" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Holland Antillák" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Antarktisz" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Argentína" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "Fordított DNS" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Amerikai Szamoa" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "Ázsia-Csendes-óceáni térség" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Ausztria" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "NATO" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Ausztrália" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "Aland-szigetek" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Azerbajdzsán" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Bosznia-Hercegovina" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Banglades" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Belgium" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Bulgária" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Bahrein" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "Üzleti" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Brunei Szultánátus" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Bolívia" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Brazília" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Bahama-szigetek" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Bhután" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Bouvet-sziget" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Fehéroroszország" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Belizé" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Kanada" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "Katalán" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Kókusz-szigetek" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "Kongói Demokratikus Köztársaság" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "Közép-Afrikai Köztársaság" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Kongó" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "Svájc" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "Elefántcsont-part" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Cook-szigetek" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Chile" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Kamerun" + +#: src/common/util.c:738 +msgid "China" +msgstr "Kína" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Kolumbia" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Internic kereskedelmi" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "Együttműködők" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "Szerbia és Montenegro" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Kuba" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Cape Verde" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Karácsony-szigetek" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Ciprus" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "Cseh Köztársaság" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "Kelet-Németország" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Németország" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Dzsibuti" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Dánia" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Dominika" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "Dominikai Köztársaság" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Algéria" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Ecuador" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Oktatási intézmény" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Észtország" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Egyiptom" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Nyugat-Szahara" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "Spanyolország" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Etiópia" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "Európai Unió" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Finnország" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Fidzsi" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Falkland-szigetek" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Micronesia" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Faroe-szigetek" + +#: src/common/util.c:770 +msgid "France" +msgstr "Franciaország" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Nagy-Britannia" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Grúzia" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Francia Guyana" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "Brit Csatorna-szigetek" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Ghána" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Gibraltár" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Grönland" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Kormányzat" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Guadeloupe" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Egyenlítői Guinea" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Görögország" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Szt. György- és S. Sandwich-szigetek" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Bissau-Guinea" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Guyana" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Heard- és McDonald-szigetek" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Horvátország" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Magyarország" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Indonézia" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Írország" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Izrael" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "Man szigete" + +#: src/common/util.c:801 +msgid "India" +msgstr "India" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "Információs tartomány" + +#: src/common/util.c:803 +msgid "International" +msgstr "Nemzetközi" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Brit Indiai-óceáni terület" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Irak" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "Irán" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Izland" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Olaszország" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Jamaica" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Jordánia" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "Céges állások" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Japán" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Kenya" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Kirgizisztán" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Kambodzsa" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Comore-szigetek" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "St. Kitts és Nevis" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Észak-Korea" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Dél-Korea" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Kuvait" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Kajmán-szigetek" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Kazahsztán" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Laosz" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Libanon" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Saint Lucia" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Libéria" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Litvánia" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Luxemburg" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Lettország" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Líbia" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Marokkó" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Monaco" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Moldova" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "Montenegró" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "Egyesült Államok (egészségügy)" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Madagaszkár" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Marshall-szigetek" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Katonai" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Macedónia" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Mianmar" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Mongólia" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Makaó" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "Mobil eszközök" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Északi Mariana-szigetek" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Martinique" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Mauritánia" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Málta" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Mauritius" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "Múzeumok" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Maldív-szigetek" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "Mexikó" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Malajzia" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Mozambik" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Namíbia" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "Magánszemélyek nevei" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Új-Kaledónia" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Internic hálózat" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Norfolk-szigetek" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Nigéria" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Hollandia" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Norvégia" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Nepál" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "Új-Zéland" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "Internic non-profit szervezet" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Francia Polinézia" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Pápua Új-Guinea" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Fülöp-szigetek" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Pakisztán" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Lengyelország" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "St. Pierre és Miquelon" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Puerto Rico" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "Mesterségek" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "Palesztin terület" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Portugália" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Paraguay" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Katar" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Réunion" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Románia" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "Régimódi ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "Szerbia" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Orosz Föderáció" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Ruanda" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Szaúd-Arábia" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Salamon-szigetek" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Seychelle-szigetek" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Szudán" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Svédország" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Szingapúr" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "Szt. Ilona" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Szlovénia" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard és Jan Mayen szigetek" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "Szlovák Köztársaság" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Szenegál" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Szomália" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Suriname" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "Dél-Szudán" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "Sao Tome és Principe" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Korábbi Szovjetunió" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Szíria" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Szváziföld" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Turks és Caicos szigetek" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Csád" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "Internetes kommunikációs szolgáltatások" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "Déli Francia Területek" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Togó" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Thaiföld" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Tadzsikisztán" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Kelet-Timor" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Türkmenisztán" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Tunézia" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Törökország" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "Utazás és turizmus" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Trinidad és Tobago" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Tajvan" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Tanzánia" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Ukrajna" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Egyesült Királyság" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "Amerikai Egyesült Államok" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Uruguay" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Üzbegisztán" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Vatikán Állam" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "St. Vincent és a Grenadines" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "Brit Virgin-szigetek" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "USA Virgin-szigetek" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "Wallis és Futuna szigetek" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Szamoa" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "Felnőtt tartalmak" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Jemen" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Jugoszlávia" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Dél-Afrika" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Zambia" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "Nem lehet csatlakozni a munkamenet buszhoz" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "Nem sikerült a NameHasOwner befejezése" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "Nem sikerült a parancs végrehajtása" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "távoli elérés" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "DBUS-t használó bővítmény távoli eléréshez" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Nem lehet csatlakozni a munkamenetbuszhoz: %s\n" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "A(z) %s lekérése nem sikerült: %s\n" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Karaktertábla" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "Tiltások" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "Felmentettek" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "Felmentett" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "Meghívások" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Meghívás" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "Némítások" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "Némítás" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "Nincs kapcsolat." + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "Ki kell választania néhány kitiltást." + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "Biztosan törölni akarod %s összes kilistázott elemét?" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "Típus" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Maszk" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "Kitől" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Dátum" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Csak a csatornafülön nyithatja meg a kitiltáslistát." + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Eltávolítás" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Levágás" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Frissítés" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "%d/%d felhasználó megjelenítése %d/%d csatornán." + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Válasszon egy kimeneti fájlnevet" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "Belépés _csatornára" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "Csatornané_v másolása" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "Té_ma szövegének másolása" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "_Keresés" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "_Lista letöltése" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "List_a mentése..." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "Megjelenítés:" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "csak a(z)" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "és" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "közötti felhasználószámú csatornák." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "Keresés:" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Csatorna neve" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "Keresés típusa:" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "Egyszerű keresés" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "Mintaillesztés (helyettesítő karakterek)" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "Reguláris kifejezés" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Keresés:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Fájl küldése %s számára" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "Ezt a fájlt nem lehet folytatni." + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "Nem lehet hozzáférni a következő fájlhoz: %s\n%s.\nA folytatás nem lehetséges." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "A letöltési könyvtárban lévő fájl nagyobb, mint a felkínált. A folytatás nem lehetséges." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "Nem lehet ugyanazt a fájlt két embertől folytatni." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Állapot" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Fájl" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Mindkettő" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "Feltöltések" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "Letöltések" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "Részletek" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "Fájl:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "Cím:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Megszakítás" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Elfogadás" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Folytatás" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "Mappa megnyitása..." + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Bejövő" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Elküldött" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "Kezdés időpontja" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Törlés" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Mégsem" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Mentés" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "Ne csatlakozzon újra automatikusan a kiszolgálókra" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "Másik konfigurációs könyvtár használata" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "Ne töltsön be automatikusan egy bővítményt sem" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "Az automatikusan betöltődő bővítmények mappájának mutatása" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "Mutassa a felhasználói konfigurációs könyvtárat" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "Parancs végrehajtása:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "URL megnyitása vagy parancs végrehajtása egy már futó HexChat-ben" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Indítás minimalizálva. Lehetséges értékek: 0=normál, 0=ikonméret 2=tálca" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "szint" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "Mutassa a verzióinformációt" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "Nem sikerült a következő betűkészlet megnyitása:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "A keresési puffer üres.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d bájt" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Hálózati küldési sor: %d bájt" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "Az \"Oldal váltása\" parancs a noteszlapok közt vált. Állítsd be az Adat1-et arra az oldalra, amelyre váltani akarsz. Ha az Adat2 bármire be van állítva, akkor a váltás a jelenlegi pozícióhoz képest megy végbe. Adat1 automatikusra állításával a legújabb és legfontosabb aktivitáshoz fogsz ugrani (először lekérdezések, majd csatornák kiemeléssel, csatornák beszélgetéssel, csatornák egyéb tartalommal)." + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "A \"Beszúrás a pufferbe\" parancs az Adat1 tartalmát szúrja be az aktuális kurzorpozícióba, ahol a billentyűkombinációt lenyomta" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "A \"Puffer beállítása\" parancs a billentyűlenyomáskor bevitt adatokat adja hozzá az Adat1 tartalmához" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "Az \"Utolsó parancs\" az utoljára bevitt parancsot állítja be - ugyanaz, mint amikor egy parancsértelmezőben megnyomja a felfelé nyilat" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "A \"Következő parancs\" a következő bevitt parancsot jeleníti meg - ugyanaz, mint amikor egy parancsértelmezőben megnyomja a lefelé nyilat" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "Ez a parancs kiegészíti a megkezdett becenevet vagy parancsot. Ha az Adat1 be van állítva, akkor a TAB kétszeri lenyomása az utolsó becenevet választja ki, nem a következőt" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "Ez a parancs fel- vagy lefelé görgeti a becenevek listáját. Ha az Adat1 bármire be van állítva, akkor felfelé görget, egyéb esetben lefelé" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "Ez a parancs összehasonlítja az utolsó bevitt szót a cserelista tartalmával és lecseréli, ha egyezést talál" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "Ez a parancs eggyel balra mozgatja az első fület" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "Ez a parancs eggyel jobbra mozgatja az első fület" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "Ez a parancs az aktuális fülek csoportját balra mozgatja" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "Ez a parancs az aktuális fülek csoportját jobbra mozgatja" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "A beviteli mező tartalmát hozzáadja az előzményekhez, de nem küldi el a kiszolgálónak" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "Hiba történt a billentyűkombinációk betöltésekor" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "Nem lehet írni ezt a fájlt." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "Nem lehet olvasni ezt a fájlt." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "Ez a maszk már létezik." + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Privát üzenet" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Figyelmeztetés" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "Mellőzés megszüntetése" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "Biztosan törölni szeretnéd az összes mellőzést?" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "Írja be a mellőzendő maszkot:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Mellőzési statisztika:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Csatorna:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privát:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Figyelmeztetés:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Meghívás:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "Hozzáadás..." + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "A csatornanév túl rövid, próbálja újra." + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "A kapcsolódás kész a következőhöz: %s." + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "Mit szeretne tenni ezután?" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "_Semmit, később lépek be egy csatornára." + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "_Belépés erre a csatornára:" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Ha tudja a csatorna nevét, amelyre be kíván lépni, adja meg itt." + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "" + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "_Mindig jelenjen meg ez a párbeszédablak csatlakozás után." + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "Párbeszéd" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "A(z) %s témája: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "Nincs beállítva téma" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "Ehhez a kiszolgálóhoz még %d csatorna vagy párbeszéd van társítva. Az összeset bezárja?" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "Kilépsz a HexChat-ből?" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "Ne kérdezze újra." + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "%i IRC hálózathoz van kapcsolódva." + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "Biztos, hogy ki szeretne lépni?" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "Még vannak aktív fájlátvitelek." + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "_Minimalizálás a tálcára" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "Attribútum vagy színkód beszúrása" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>Félkövér</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>Aláhúzott</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "Normál" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "Színek 0-7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "Színek 8-15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "_Beállítások" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "_Naplózás" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "Visszatekintés új_ratöltése" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "A csatlakozási/távozási üzenetek elre_jtése" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "_Extra figyelmeztetések" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "Üzenetkor _csipog" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "_Tálcaikon villogtatása" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "_Feladatsáv villogtatása" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "_Leválasztás" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "Be_zárás" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "A felhasználó-limit egy szám legyen!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "Nincs külső üzenet" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "Témavédelem" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "Csak meghívásra" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "Moderált" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "Kitiltási lista" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Kulcsszó" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "Felhasználó-limit" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Írja be az új becenevet:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "" + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "" + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "_Mind kiemelése" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "" + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Ismeretlen gépnév" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Ismeretlen" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Valódi név:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "Felhasználó:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "Ország:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "Kiszolgáló:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "%u perccel ezelőtt" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "Utolsó üzenet:" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "Távol üzenet:" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "%d becenév kiválasztva." + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "Hivatkozás megnyitása böngészőben" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "Kijelölt hivatkozás másolása" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Belépés csatornára" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "Kilépés a csatornáról" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "Ki- és belépés a csatornára" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "Felhasználói parancsok - Speciális kódok:\n\n%c = jelenlegi csatorna\n%e = jelenlegi hálózat neve\n%m = gép információ\n%n = a beceneved\n%t = idő/dátum\n%v = HexChat verzió\n%2 = 2. szó\n%3 = 3. szó\n&2 = 2. szótól a sor végéig\n&3 = 3. szótól a sor végéig\n\npl.:\n/cmd john hello\n\n%2 lenne \"john\"\n&2 lenne \"john hello\"." + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "CTCP válaszok - Különleges kódok:\n\n%d = adatok (a teljes ctcp)\n%e = jelenlegi hálózat neve\n%m = gép infó\n%s = a ctcp-t küldő becenév\n%t = idő/dátum\n%2 = 2. szó\n%3 = 3. szó\n&2 = 2. szótól a sor végéig\n&3 = 3. szótól a sor végéig\n\n" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "URL kezelők - Speciális kódok:\n\n%s = az URL szöveg\n\nA parancs elé !-t téve a HexChat\nhelyett egy shell kapja meg" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "Csere" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "He_xChat" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "Ú_j" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "_Kilépés" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "_Nézet" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "_Menüsáv" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "_Témasáv" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "_Felhasználólista" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "_Mód gombok" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "_Csatornaváltó" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "_Fülek" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "F_a" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "_Hálózatfigyelők" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Ki" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "Grafikon" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "_Kiszolgáló" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "_Szétkapcsolás" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "Ú_jrakapcsolódás" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "_Felhasználói menü" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "B_eállítások" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "_Beállítások" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "_Ablak" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "Jelzővonal visszaállítása" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "_Kijelölés másolása" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "Szöveg _törlése" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "Keresés" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "Következő találat" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "Előző keresése" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "_Súgó" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "_Tartalom" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "_Névjegy" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "_Csatolás" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Név" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Utolsó jelenléte" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "Offline" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Soha" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "%d perccel ezelőtt" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "Online dokumentáció" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "Írja be a hozzáadandó becenevet:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "Értesítés ezeken a hálózatokon:" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "Hálózatok vesszőkkel elválasztott listája adható meg." + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "Megnyitás párbeszédablak" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "Ablak _helyreállítása" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "Ablak _elrejtése" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "_Villogjon" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "Csatornaüzenet esetén" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "Privát üzenet esetén" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "Kiemelt üzenet esetén" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "Álla_pot módosítása" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "_Távol" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "_Vissza" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Verzió" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Leírás" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Válassza ki a betöltendő bővítményt vagy parancsfájlt" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "_Betöltés..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "Mentés másként..." + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "Nyers napló törlése" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Új hálózat" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Valóban törli a(z) \"%s\" hálózatot és összes kiszolgálóját?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "Kulcs (Jelszó)" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "_Szerkesztés" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "Csak a kiválasztott kiszolgálókhoz kapcsolódjon" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Ne járja körbe a kiszolgálókat, ha nem sikerül a kapcsolódás." + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "Ne használjon proxy kiszolgálót" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "SSL használata a hálózat összes kiszolgálójához" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "Használja a globális felhasználói információkat" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "Be_cenév:" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "Második lehetőség:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "Való_di név:" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "_Felhasználónév:" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Jelszó:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "Karakterkészlet:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "Felhasználói információk" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "Harmadik lehetőség:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Hálózatok" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "Ne jelenjen meg a hálózatlista indításkor" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "Csak a kedvencek mutatása" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "_Szerkesztés..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "_Rendezés" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "_Kedvenc" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "A hálózat kedvencek közé vétele" + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "K_apcsolódás" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "Búr" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Albán" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "Amhara" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "Aszturleóni" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Azeri" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "Baszk" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Fehérorosz" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Bolgár" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "Kínai (egyszerűsített)" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "Kínai (hagyományos)" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "Cseh" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "Dán" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "Holland" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "Angol (Brit)" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "Angol" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Észt" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "Finn" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "Francia" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "Galiciai" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "Német" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "Görög" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "Gudzsaráti" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "Hindi" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "Magyar" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "Indonéz" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "Olasz" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "Japán" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "Kannada" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "Kinyarwanda" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "Koreai" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "Lett" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "Litván" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "Macedón" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Maláj" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "Malajálam" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "Norvég (Bokmal)" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "Norvég (Nynorsk)" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "Lengyel" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "Portugál" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "Portugál (brazil)" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "Pandzsábi" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "Orosz" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "Szerb" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "Szlovák" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "Szlovén" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "Spanyol" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "Svéd" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Thai" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "Ukrán" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Vietnami" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "Vallon" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Általános" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "Nyelv:" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "Fő betűkészlet:" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Betűtípus:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "Szövegdoboz" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "Színes becenevek" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "Mindenkinek külön szín" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "Becenevek behúzása" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "A beceneveket jobbra igazítja" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "Jelzővonal mutatása" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "Vörös vonalat szúr be az utolsó olvasott szöveg után." + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Háttérkép:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "Áttetszőség beállításai" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "Részletekért lásd az MSDN cikket." + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "Lásd az strftime kézikönyvoldalát." + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "Címsor" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "Csatorna módok mutatása" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "Létszám mutatása" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "Utolsó hozzászólás sorrendjében" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "Beviteli mező" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "Névdoboz mutatása" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "Felhasználói mód ikon mutatása a becenév dobozban" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "Helyesírás-ellenőrzés" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "Használandó szótárak:" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "Használj nyelvi kódokat. Több értéket vesszővel válassz el." + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "Becenév-kiegészítés" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "Becenév-kiegészítés utótagja:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "Becenév-kiegészítés rendezése:" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "" + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "Grafikus" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "Rendezetlen" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Felül" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Alul" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Rejtett" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "Felhasználólista" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "A kiszolgálónevek megjelenítése a felhasználólistában" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "Használja a Szövegdoboz betűkészletét és színeit" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "Ikonok megjelenítése a felhasználói módokhoz" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "Grafikus ikonok használata szöveges szimbólumok helyett a felhasználólistában." + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "Becenevek színezése a felhasználólistában" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "Beszínezi a neveket, mint a beszélgetőablakban." + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "Létszám mutatása a csatornákban" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "Felhasználólista rendezése:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "Felhasználólista megjelenítése:" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "Távollét követés" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "Olyan csatornákon, amelyek kisebbek, mint:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "Művelet kettős kattintáskor" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "Extra kütyük" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "Késés mérő" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "Lassítás mérő" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Ablakok" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Fülek" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "Mindig" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "Csak a kívánt fülek" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "Automatikus" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "Új fülön" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "Az aktív fülön" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "Fastruktúra" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "Csatornaváltó típusa:" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "Nyisson új fület a kiszolgáló üzeneteihez" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "Nyisson új fület privát üzenetek fogadásakor" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "Fülek rendezése betűrendbe" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "Ikonok mutatása fa nézetben" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "Pöttyözött vonalak mutatása a csatornafán" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "Kisebb szöveg" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "Új fül fókuszt kap:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "Figyelmeztetések helye:" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "A csatornaváltó megjelenítése:" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "Fülek címkéjének rövidítése:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "betűre." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "Fülek vagy ablakok" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "Csatornák megnyitása:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "Párbeszédablakok megnyitása:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "Segédalkalmazások megnyitása:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "A DCC, mellőzési, értesítési stb. ablakokat füleken vagy ablakokban nyissa meg?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "Üzenetek" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "Visszatekintő" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "Megerősítés kérése" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "Célmappa kérése" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "Mentés kérdés nélkül" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "Fájlok és könyvtárak" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "Fájlajánlatok automatikus elfogadása:" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Fájlok letöltése ide:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "Kész fájlok átmozgatása ide:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "A bejövő fájlokhoz fűzze hozzá a küldő becenevét" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "Közvetlen csevegésablakok automatikus megnyitása" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "Küldés ablak" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "Fogadás ablak" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "Csevegésablak" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "Egy feltöltés:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "Maximális sebesség egy átvitelhez" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "Egy letöltés:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "Összes feltöltés együtt:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "Maximális sebesség az összes fájlhoz" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "Az összes letöltés együtt:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "Figyelmeztetések" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "Tálcaikon villogtatása:" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "Feladatsáv villogtatása:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "Hangjelzés:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "Értesítések mellőzése távollét alatt" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "Tálca viselkedés" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "Rendszertálcaikon engedélyezése" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "Minimalizálás a tálcára" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "Becsukás a tálcára" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "Távol/elérhető állapot beállítása automatikusan" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "Állapot automatikus beállítása tálcára minimalizáláskor." + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "Kiemelt üzenetek" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Kiemelt üzenetek azokon kívül, amelyekben említik a becenevét:" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "További kiemelendő szavak:" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "Nem kiemelendő becenevek:" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "Mindig kiemelendő becenevek:" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Több szót vesszőkkel választhat el egymástól.\nHelyettesítő karakterek használhatók." + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "Alapértelmezett üzenetek" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "Kilépés:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "Kilépés csatornáról:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "Távol:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "Távol" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Távol mutatása egyszer" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "Azonos távol-üzeneteket csak egyszer mutasson." + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "Automatikusan vonja vissza a távol állapotot" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "Távol jelzés visszavonása üzenetküldés előtt." + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "A MODE-okat nyers formában mutatja" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "Küld egy /WHOIS-t, ha a barátlistán szereplő valamelyik felhasználó online lesz." + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "Elrejti a belépés és kilépés üzeneteket" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "Csatorna be/kilépési üzenetekeinek elrejtése alapból." + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "Automatikus másolás" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "Kijelölt szöveg automatikus másolása" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "Színkódok automatikus másolása" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "Valós név:" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "Alternatív betűkészletek:" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "Listák megjelenítése tömörített formában" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "Kevesebb térköz használata a felhasználólista/csatornafa sorai között." + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "A kiszolgálóhoz újracsatlakozás késleltetése:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "Automatikus belépés késleltesése:" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Naplózás" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "Visszatekintés megjelenítése az előző folyamatból" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "Visszagörgethető sorok:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "Csevegések naplózásának engedélyezése" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "Naplófájl neve:" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=kiszolgáló %c=csatorna %n=hálózat." + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "Időbélyeg beillesztése a naplófájlokba" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "Napló időbélyegének formátuma:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URL-ek" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "URL-ek lemezre naplózásának engedélyezése" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "URL elfogó engedélyezése" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "Maximálisan elfogott URL-ek száma:" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(Letiltva)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "Auto" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "Saját cím" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "Kötés:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "Csak több címmel rendelkező gépek esetén hasznos." + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "Saját IP lekérdezése az IRC kiszolgálótól" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "Lekéri az IRC kiszolgálótól a valós IP címét. Akkor használja, ha 192.168.*.* alakú címe van!" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "DCC IP  cím:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "Ha fájlt küld, ezt mutatja a címeként." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "!hagyja nullán a portokat a teljes tartomány használatához." + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "Proxy kiszolgáló" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "Gép neve:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Port:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Típus:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "Proxy használata ehhez:" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "Proxyhitelesítés" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "Felhasználónév:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "Válasszon egy képfájlt" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "Válasszon letöltési mappát" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Válasszon egy betűtípust" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Tallózás..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "Adatmappa megnyitása" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Válasszon színt" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "Szövegszín" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "mIRC színek:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "Helyi színek:" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Előtér:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Háttér:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "Kijelölt szöveg" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "Megjelenés színe" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "Új adatok:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "Jelölő vonal:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "Új üzenet:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "Távollévő felhasználó:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "Kiemelés:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "Helyesírás-ellenőrző:" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "Színkódok eltávolítása" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Esemény" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "Hangfájl" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "Válasszon hangfájlt" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "Hangfájl:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "_Tallózás..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "_Lejátszás" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Felület" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "Megjelenés" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Beviteli doboz" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Felhasználólista" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "Csatornaváltó" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Színek" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Csevegés" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "Haladó" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Hálózat beállítása" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Fájlátvitel" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Kategóriák" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "Nem helyezheti alulra vagy felülre a fát!\nElőször váltson a <b>Nézet</b> menü <b>Fülek</b> elrendezésére." + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "" + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Néhány beállítás érvényesítéséhez újraindítás szükséges." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*FIGYELMEZTETÉS*\nDCC automatikus elfogadása a home könyvtárába\nveszélyes és kihasználható lehet. Például:\nValaki küldhet Önnek egy .bash_profile-t" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "<i>(nincs javaslat)</i>" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "Több..." + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "\"%s\" hozzáadása a szótárhoz" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "Mind figyelmen kívül hagyása" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "Helyesírási javaslatok" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "enchant hiba a %s nyelvvel" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "Hiba történt a karakterlánc feldolgozása közben" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Ez a szignál csak %d argumentumot kapott, $%d érvénytelen" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "Szöveges fájl nyomtatása" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ szám" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Események szerkesztése" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "Betöltés innen..." + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Mindet tesztelje" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Lista törlése" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Kijelölt URL másolása" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Másolás" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Lista mentése fájlba" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d op, %d összesen" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "Egy irc://kiszolgáló:port/csatorna URL megnyitása" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "" diff --git a/hexchat/po/id.po b/hexchat/po/id.po new file mode 100644 index 0000000..330b482 --- /dev/null +++ b/hexchat/po/id.po @@ -0,0 +1,6257 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Andhika Padmawan <andhika.padmawan@gmail.com>, 2010 +# Rahmat Bambang <doplank@gmx.com>, 2012-2013 +# Rahmat Bambang <doplank@gmx.com>, 2013 +# Rendiyono Wahyu Saputro <rendi.7936@gmail.com>, 2015 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-03 20:12+0000\n" +"Last-Translator: TingPing <tingping@tingping.se>\n" +"Language-Team: Indonesian (http://www.transifex.com/hexchat/hexchat/language/id/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: id\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "HexChat" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "Klien IRC" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "HexChat adalah klien IRC yang mudah digunakan tetapi bisa diperluas. Hal ini memungkinkan anda aman dalam bergabung ke beberapa jaringan dan berbicara ke pengguna secara pribadi atau dalam saluran dengan menggunakan antarmuka yang dapat disesuaikan. Anda bahkan dapat mentransfer berkas." + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "HexChat mendukung fitur seperti: DCC, SASL, proksi, periksa ejaan, peringatan, pencatatan, tema kustom, dan skrip Python/Perl." + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "Mengobrol dengan orang lain daring" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "IM;Obrolan;" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "Buka Mode Aman" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "Pengelola Tema HexChat" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Saya sibuk" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Pergi" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Jaringan" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<tak ada>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Kanal" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Menunggu" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Aktif" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Gagal" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Selesai" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Konek" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Dibatalkan" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "Tak dapat mengakses %s\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Galat" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s menawarkan \"%s\". Apakah Anda ingin menerimanya?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "Tak ada DCC aktif\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "_Buka Jendela Dialog" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "_Kirim Berkas" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "_Info Pengguna (WhoIs)" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "_Tambah ke Daftar Teman" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "_Abaikan" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "A_ksi Operator" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Berikan Operator" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Cabut Operator" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "Berikan Suara" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "Cabut Suara" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Keluarkan/Hukum" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Keluarkan" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "Hukum" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "KeluarkanHukum" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Tinggalkan Kanal" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Gabung Kanal..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "Masukkan nama kanal untuk bergabung:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Tautan Server" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Ping Server" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Sembunyikan Versi" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Operator" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "Lepas Operator" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "sampai jumpa" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Masukkan alasan untuk menendang %s:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "Dialog" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Kirim" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Obrol" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Bersihkan" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "Anda tidak memiliki akses tulis ke %s. Tidak ada dari sesi ini yang dapat disimpan." + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* Menjalankan IRC sebagai root adalah salah! Kamu harus\n membuat Akun Pengguna untuk loginn.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "YA " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "TIDAK " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Anda sedang dibanjiri CTCP dari %s, mengabaikan %s\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "Kamu sedang di Spam dari %s, atur gui_autoopen_dialog menjadi mati.\n" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s terhubung\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s terputus\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Tak ada kanal yang dimasuki. Coba /join #<nama kanal>\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Tidak terhubung. Coba /server <host> [<pangkalan>]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "Server %s sudah ada di dalam jaringan %s.\n" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "Tambahkan server %s ke jaringan %s.\n" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Telah ditandai sedang pergi: %s\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "Telah ditandai sebagai kembali.\n" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "Saya butuh /bin/sh untuk berjalan!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "Perintah Tersedia:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "Perintah yang ditentukan pengguna:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "Perintah yang ditentukan plugin:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Ketik /HELP <perintah> untuk informasi lebih lanjut, atau /HELP -l" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Argumen tak diketahui '%s' diabaikan." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "Diam tidak didukung oleh server ini." + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "Tak ada plugin yang ditemukan.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "Plugin tersebut menolak untuk dimuat ulang.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <nama> <aksi>, tambah tombol di bawah dartar pengguna" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "ADDSERVER <Nama Jaringan> <newserver/6667>, tambahkan jaringan baru ke daftar jaringan" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <perintah>, kirim perintah ke semua kanal yang anda masuki" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "ALLCHANL <perintah>, mengirim perintah ke semua kanal yang terhubung di server" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <perintah>, kirim perintah ke semua server yang anda masuki" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "BACK, mengatur kembalinya anda (tidak pergi)" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <mask> [<tipe hukuman>], hukum setiap orang yang cocok dengan mask pada kanal saat ini. Jika mereka ada di kanal, maka mereka tidak langsung dikeluarkan (memerlukan chanop)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <variabel> [<nilai>]" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "CHARSET [<encoding>], atur encoding untuk koneksi yang digunakan saat ini" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "CLEAR [ALL|HISTORY|[-]<amount>], Membersihkan jendela teks saat ini atau riwayat perintah" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "" + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <kode|kartu as>, mencari kode negara, misalnya: au = australia" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <pengguna> <pesan>, kirim pesan CTCP ke pengguna, pesan yang umum adalah VERSION dan USERINFO" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "CYCLE [<kanal>], keluar dari kanal saat ini atau yang diberikan lalu segera bergabung kembali" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <pengguna> - menerima berkas yang ditawarkan\nDCC SEND [-maxcps=#] <pengguna> [berkas] - kirim berkas ke seseorang\nDCC PSEND [-maxcps=#] <pengguna> [berkas] - kirim berkas menggunakan mode pasif\nDCC LIST - tampilkan daftar DCC\nDCC CHAT <pengguna> - tawarkan DCC CHAT ke seseorang\nDCC PCHAT <pengguna> - tawarkan DCC CHAT menggunakan mode pasif\nDCC CLOSE <tipe> <pengguna> <berkas> contoh:\n /dcc close send johnsmith berkas.tar.gz" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <pengguna>, cabut hak ½ operator dari pengguna di kanal saat ini (memerlukan chanop)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <nama>, hapus tombol dari bawah daftar pengguna" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <pengguna>, hapus status operator kanal dari pengguna di kanal saat ini (memerlukan chanop)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <pengguna>, hapus status suara dari pengguna di kanal saat ini (memerlukan chanop)" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, Putuskan koneksi dari server" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "DNS <nick|host|ip>, Mengetahui IP atau hostname" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <teks>, Cetak teks lokal" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <perintah>, menjalankan perintah. Jika opsi -o digunakan maka keluarannya dikirim ke kanal saat ini, atau dicetak ke kotak teks saat ini" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, kirim proses SIGCONT" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9], matikan eksekusi yang berjalan di sesi saat ini. Jika -9 diberikan maka proses akan di-SIGKILL" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, kirim proses SIGSTOP" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, kirim data ke proses masukan standar" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "EXPORTCONF, ekspor pengaturan HexChat" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, buang antrian pengiriman server saat ini" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <host> [<pangkalan>], proxy melewati host, standar pangkalan adalah 23" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <nama> [sandi], Matikan nama pengguna hantu" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <pengguna>, memberikan hak ½ operator ke pengguna (memerlukan chanop)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <sandi>, identifikasikan diri anda ke nickserv" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <mask> <tipe..> <opsi..>\n mask - host mask yang akan diabaikan, misalnya: *!*@*.aol.com\n tipe - tipe data yang akan diabaikan, salah satu atau semua dari:\n PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n opsi - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <pengguna> [<kanal>], undang seseorang ke kanal, standarnya adalah kanal saat ini (memerlukan chanop)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <kanal>, gabung ke kanal" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "KICK <nick> [reason], tendang nick dari saluran saat ini (memerlukan chanop)" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "KICKBAN <nick> [reason], larang kemudian tendang nick dari saluran saat ini (memerlukan chanop)" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, memaksa pemeriksaan jeda baru" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "LASTLOG [-h] [-m] [-r] [--] <string>, mencari kata di dalam log\n Pakai -h untuk menyoroti kata yang ingin dicari(ditemukan)\n Pakai -m untuk menemukan kata yang cocok\n Pakai -r untuk mencari kata dengan ekspresi reguler\n Pakai -- (tanda penghubung ganda) ketika mencari kata pada akhir opsi, contoh, '-r'" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <berkas>, membuka plugin atau skrip" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, Cabut hak ½ operator secara masal di kanal saat ini (memerlukan chanop)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, Cabut hak operator secara masal di kanal saat ini (memerlukan chanop)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <aksi>, mengirim aksi ke kanal saat ini (aksi ditulis dalam sudut pandang orang ketiga, seperti /me lompat)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, Keluarkan semua orang kecuali kamu (memerlukan chanop)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, Operator massal semua pengguna di kanal saat ini (memerlukan chanop)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "MSG <nick> <message>, mengirimkan pesan pribadi, pesan \".\" untuk mengirim ke nick terakhir atau awalan dengan \"=\" untuk obrolan dcc" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "NAMES [channel], Mendaftar nick yang ada pada saluran" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <pengguna> <pesan>, Mengirim pemberitahuan CTCP" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <nama host> [<pangkalan>]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <nama>, ganti/atur nama anda" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "NOTICE <nick/channel> <message>, mengirimkan pemberitahuan" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [-n jaringan1[,jaringan2,...]] [<pengguna>], tampilkan daftar pemberitahuan anda atau tambah seseorang ke dalamnya" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <pengguna>, berikan status operator kanal ke pengguna (memerlukan chanop)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<kanal>] [<alasan>], meninggalkan kanal, standarnya kanal yang sekarang" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <pengguna | kanal>, ping CTCP pengguna atau kanal" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "QUERY [-nofocus] <nick> [message], membuka jendela pesan pribadi baru ke seseorang dan opsional mengirim sebuah pesan" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "QUIET <mask> [<quiettype>], diamkan semua orang yang cocok dengan tanda di saluran saat ini jika didukung oleh server." + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<alasan>], putus koneksi pada server saat ini" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <teks>, kirim teks dalam bentuk mentah ke server" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<host>] [<pangkalan>] [<sandi>], Dapat dipanggil cukup dengan /RECONNECT untuk menyambung ulang ke server saat ini atau dengan /RECONNECT ALL untuk menyambung ulang ke semua server yang terbuka" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<host>] [<pangkalan>] [<sandi>], Dapat dipanggil cukup dengan /RECONNECT untuk menyambung ulang ke server saat ini atau dengan /RECONNECT ALL untuk menyambung ulang ke semua server yang terbuka" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "RECV <teks>, kirim data asli le HexChat, seolah-olah itu diterima dari server IRC" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "RELOAD <name>, memuat ulang sebuah plugin atau skrip" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <teks>, kirim teks ke objek di jendela saat ini" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <pengguna> [<berkas>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <host> <pangkalan> <kanal>, konek dan gabung ke kanal" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <host> <pangkalan> <kanal>, konek dan gabung ke kanal" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "SERVER [-ssl] <host> [<port>] [<password>], terhubung ke server, untuk jaringan normal gunakan port 6667, dan gunakan 6697 untuk jaringan yang terenskripsi" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <host> [<pangkalan>] [<sandi>], konek ke server, port standar adalah 6667" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-off|-on] [-quiet] <variabel> [<nilai>]" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "SETCURSOR [-|+]<position>, posisikan ulang kursor di dalam inputbox" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "SETTAB <new name>, ubah nama tab, tab_trunc masih dibatasi" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "SETTEXT <new text>, ganti teks di dalam inputbox" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<topik>], tetapkan topik jika ada yang diberikan, atau tampilkan topik saat ini" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "\nTRAY -f <waktu> <berkas1> [<berkas2>] Kedipkan baki diantara dua ikon.\nTRAY -f <nama berkas> Atur baki ke ikon tetap.\nTRAY -i <nomor> Kedipkan baki dengan ikon internal.\nTRAY -t <teks> Atur tip alat baki.\nTRAY -b <judul> <teks> Atur balon baki." + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <mask> [<mask>...], lepas hukuman mask yang ditentukan." + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <mask> [QUIET]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <nama>, tutup plugin atau skrip" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "UNQUIET <mask> [<mask>...], batalkan tanda tertentu jika didukung oleh server." + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, buka tautan ke browser." + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "USELECT [-a] [-s] <pengguna1> <pengguna2> dll, sorot pengguna di daftar pengguna kanal" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <pengguna>, berikan status suara ke seseorang (memerlukan chanop)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <pesan>, tulis pesan ke semua kanal" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <pesan>, kirim pesan ke semua operator kanal di kanal saat ini" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "Perintah Pengguna untuk: %s\n" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "Penggunaan: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nTak ada bantuan yang tersedia untuk perintah tersebut.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "Tak ada perintah seperti itu.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "Argumen buruk untuk perintah pengguna.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "Terlalu banyak perintah pengguna rekursif, dibatalkan." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "Tidak ada hexchat_plugin_init symbol; benarkan ini plugin HexChat?" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Anda yakin ini adalah server dan pangkalan yang mendukung SSL?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "Tak dapat memecahkan nama host %s\nCek Pengaturan IP anda!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "Transversi proxy gagal.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Daur ke server selanjutnya di %s...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "Peringatan: set karakter \"%s\" tak diketahui. Tak ada konversi yang akan diterapkan untuk jaringan %s." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "%C18*%O$t%C18$1%O ditambahkan ke daftar pemberitahuan." + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "%C22*%O$t%C22$1%O: %C18$2%O pada %C24$4%O oleh %C26$3%O" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "%C22*%O$tTidak dapat bergabung %C22$1 %O(%C20Kamu telah dihukum%O)." + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "%C29*%O$tKemampuan diakui: %C29$2%O" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "%C23*%O$tKemampuan didukung: %C29$2%O" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "%C23*%O$tKemampuan diminta: %C29$1%O" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "%C24*%O$t%C28$1%O sekarang namanya adalah %C18$2%O" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O atur hukuman ke %C18$2%O" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "%C22*%O$tSaluran %C22$1%O dibuat pada %C24$2%O" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O mencabut hak ½ operator dari %C18$2%O" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O mencabut hak operator dari %C18$2%O" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O mencabut hak suara dari %C18$2%O" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%C atur hak bebas pada %C18$2%O" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O memberikan hak ½ operator pada %C18$2%O" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%UKanal Pengguna Topik" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "%C22*%O$t%C26$1%O mengatur mode %C24$2$3%O pada %C22$4%O" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "%C22*%O$tKanal %C22$1%O mode: %C24$2" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O memberikan hak operator pada %C18$2%O" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O tetapkan diam pada %C18$2%O" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O menghapus hak bebas pada %C18$2%O" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "%C22*%O$t%C26$1%O menghapus password kanal" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "%C22*%O$t%C26$1%O menghapus limit pengguna" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O tetapkan kata kunci saluran ke %C24$2%O" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O mengatur batasan kanal menjadi %C24$2%O" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O melepas larangan pada %C18$2%O" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O melepaskan diam pada %C18$2%O" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "%C22*%O$tSaluran %C22$1%O url: %C24$2" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O memberikan hak suara pada %C18$2%O" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "%C23*%O$tTerhubung. Memproses..." + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "%C23*%O$tTerhubung ke %C29$1%C (%C23$2:$3%O)" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "%C20*%O$tKoneksi gagal(%C20$1%O)" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "%C24*%O$tMenerima CTCP %C24$1%C dari %C18$2%O" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "%C24*%C$tMenerimaCTCP %C24$1%C dari %C18$2%C (ke %C22$3%C)%O" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "%C24*%O$tMenerima suara CTCP %C24$1%C dari %C18$2%O" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "%C24*%O$tMenerima suara CTCP %C24$1%C dari %C18$2%C (ke %C22$3%O)" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "%C23*%O$tDCC CHAT %C18$1%O dibatalkan." + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "%C24*%O$tKoneksi DCC CHAT terpasang kembali pada %C18$1%C %C30[%C24$2%C30]%O" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "%C20*%O$tDCC CHAT pada %C18$1%O hilang (%C20$4%O)" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "%C24*%O$tMemerima tawaran DCC CHAT dari %C18$1%O" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "%C24*%O$tMenawarkan DCC Chat pada %C18$1%O" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "%C24*%O$tSudah menawarkan CHAT pada %C18$1%O" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "%C20*%O$tDCC $1 mencoba konek ke %C18$2%O gagal (%C20$3%O)" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "%C23*%O$tMenerima '%C23$1%C' dari %C18$2%O" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "%C20*%O$tMenerima permintaan DCC cacat dari %C18$1%O.$a010%C23*%O$tPaket konten: %C23$2%O" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "%C24*%O$tMenawarkan'%C24$1%O' ke %C18$2%O" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "%C23*%O$tTidak ada DCC yang ditawarkan." + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "%C23*%O$tDCC RECV '%C23$2%O' ke %C18$1%O dibatalkan." + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "%C24*%O$tDCC RECV '%C23$1%O' dari %C18$3%O selesai %C30[%C24$4%O cps%C30]%O" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$tDCC RECV koneksi terpasang lagi pada %C18$1 %C30[%O%C24$2%C30]%O" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "%C20*%O$tDCC RECV '%C23$1%O' dari %C18$3%O gagal (%C20$4%O)" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "%C20*%O$tDCC RECV: Tidak dapat dibuka '%C23$1%C' untuk ditulis (%C20$2%O)" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "%C23*%O$tThe file '%C24$1%C' sudah ada, disimpan dengan nama '%C23$2%O'." + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "%C24*%O$t%C18$1%C telah meminta kembali '%C23$2%C' dari %C24$3%O." + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "%C23*%O$tDCC SEND '%C23$2%C' ke %C18$1%O dibatalkan." + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C selesai %C30[%C24$3%C cps%C30]%O" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$tDCC SEND koneksi terpasang lagi pada %C18$1 %C30[%O%C24$2%C30]%O" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "%C20*%O$tDCC SEND '%C23$1%C' ke %C18$2%C gagal (%C20$3%O)" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "%C24*%O$t%C18$1%C menawarkan '%C23$2%C' (%C24$3%O bytes)" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "%C20*%O$tDCC $1 '%C23$2%C' ke %C18$3%O terhenti, proses dibatalkan." + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "%C20*%O$tDCC $1 '%C23$2%C' ke %C18$3%O terputus, proses dibatalkan." + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "%C24*%O$t%C18$1%O dipaus dari daftar pemberitahuan." + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "%C20*%O$tTerputus (%C20$1%O)" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "%C24*%O$tDitemukan IP kamu: %C30[%C24$1%C30]%O" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "%O%C18$1%O ditambahkan ke daftar pengabaian." + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "%Odiabaikan %C18$1%O berubah." + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "%O%C18$1%O dihapus dari daftar pengabaian." + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "%ODaftar pengabaian kosong." + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "%C20*%O$tTidak dapat bergabung%C22$1%C (%C20Kanal tersebut hanya untuk undangan%O)" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "%C24*%O$tKamu telah diundang ke %C22$1%O by %C18$2%O (%C29$3%O)" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "%C23*$t$1 ($3%C23) telah bergabung" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "%C20*%O$tTidak dapat bergabung %C22$1%C (%C20Membutuhkan sandi%O)" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "%C22*%O$t%C26$1%C telah dikeluarkan %C18$2%C dari %C22$3%C (%C24$4%O)" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "%C19*%O$t%C19Kamu telah dibunuh oleh %C26$1%C (%C20$2%O)" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "%C29*%O$t%C29MOTD Lewati%O" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "%C23*%O$t%C28$1%C sudah digunakan. Mencoba dengan %C18$2%O..." + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "%C23*%O$t%C28$1%C adalah salah. Mencoba dengan %C18$2%O..." + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "%C20*%O$tJulukan ini salah atau sudah digunakan. Gunakan /NICK untuk mencoba yang lain." + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "%C20*%O$tTidak ada DCC." + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "%C23*%O$tTidak ada proses yang sedang berjalan" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "%C23*%O$tPemberitahuan: %C18$1%C telah pergi (%C24$2%O)" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "%C23*%O$tPemberitahuan: %C18$1%C telah kembali" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tDaftar kosong." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "%C23*%O$t%C23$1%O jumlah user dalam daftar pemberitahuan." + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "%C23*%O$tNotify: %C18$1%C sedang offline (%C29$3%O)" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "%C23*%O$tNotify: %C18$1%C sedang online (%C29$3%O)" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "%C24*$t$1 ($2%C24) telah meninggalkan" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "%C24*$t$1 ($2%C24) telah meninggalkan ($4)" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "%C24*%O$tbalasan Ping dari %C18$1%C: %C24$2%O detik" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "%C20*%O$tTidak ada balasan Ping dari %C24$1%O detik, terputus." + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "%C24*%O$tProses dengan berjalan" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "%C24*$t$1 telah keluar ($2)" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "%C24*%O$t%C26$1%C atur mode %C30[%C24$2%C30]%O" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "%O-%C29$1/Wallops%O-$t$2" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "%C24*%O$tMencari nomor IP untuk %C18$1%O..." + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "%C23*%O$tOtentifikasi melalui SASL sebagai %C18$1%O (%C24$2%O)" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "%C29*%O$tTerhubung." + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "%C29*%O$tMencari %C29$1%O" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "%C23*%O$tUpaya menghentikan koneksi sebelumnya (%C24$1%O)" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "%C22*%O$tTopik %C22$1%C adalah: $2%O" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "%C22*%O$t%C26$1%C telah mengubah topik menjadi: $2%O" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "%C22*%O$tTopik %C22$1%C dibuat oleh %C26$2%C (%C24$3%O)" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C20*%O$tHost tidak dikenali. Apa mungkin kamu salah tulis?" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "%C20*%O$tTidak dapat bergabung %C22$1%C (%C20Sudah mencapat Limit%O)" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "%C22*%O$tUser di %C22$1%C: %C24$2%O" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%C sedang tidak ada ditempat %C30(%C23$2%O%C30)%O" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "%C23*%O$t%C28[%C18$1%C28] %OAkhir dari daftar WHOIS." + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O diam %C23$2%O" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O diam selama %C23$2%O, terdaftar pada: %C23$3%O" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O Host asli: %C23$2%O, IP asli: %C30[%C23$3%C30]%O" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "%C19*%O$tSekarang kamu berbicara di %C22$2%O" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "%C19*%O$tKamu telah dikeluarkan dari %C22$2%C oleh %C26$3%O (%C20$4%O)" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "%C19*%O$tKamu telah meninggalkan kanal %C22$3%O" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "%C19*%O$tKamu telah meninggalkan kanal %C22$3%C (%C24$4%O)" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "%C20*%O$tKamu diundang %C18$1%O pada %C22$2%O (%C24$3%O)" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "%C20*%O$tSekarang nama kamu adalah %C18$2%O" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "Memuat log dari" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** AKHIRI PENCATATAN PADA %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** MULAI PENCATATAN PADA %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "* Tidak dapat membuka berkas log. Mohon cek\nizin berkas pada %s" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "Pesan kiri" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "Pesan kanan" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "Alamat IP" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Nama Pengguna" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "Nama pengguna orang yang bergabung" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "Kanal tempat bergabung" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "Host dari orang tersebut" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "Akun dari orang" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Panggilan" + +#: src/common/text.c:980 +msgid "The action" +msgstr "Aksi" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "Mode karakter" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "Teks teridentifikasi" + +#: src/common/text.c:987 +msgid "The text" +msgstr "Teks" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "Pesan" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Nama Server" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "Kemampuan Diakui" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "Kemampuan Server" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "Kemampuan diminta" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Panggilan lama" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Nama pengguna baru" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "Nama pengguna yang mengubah topik" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Topik" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "Nama pengguna yang menendang" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "Orang yang dikeluarkan" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "Kanal" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "Alasan" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "Nama pengguna yang telah pergi" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "Waktu" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "Pembuat" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Nama pengguna" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Alasan" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Host" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "Dari siapa itu" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "Waktu dalam format x.x (lihat di bawah)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "Kanal tujuan itu" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "Suara" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "Nama pengguna dari orang" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "Event CTCP" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "Nama pengguna yang mengatur kunci" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "Kunci" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "Nama pengguna yang mengatur batas" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "Batas" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "Nama pengguna yang memberikan operator" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "Nama pengguna yang telah di-operator-kan" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "Nama pengguna yang telah diberi hak ½ operator" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "Nama pengguna yang memberikan ½ operator" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "Nama pengguna yang memberikan voice" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "Nama pengguna yang telah diberikan suara" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "Nama pengguna yang melakukan hukuman" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "Hukum mask" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "Julukan dari orang yang melakukan diam" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "Tanda diam" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "Nama pengguna yang menghapus kunci" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "Nama pengguna yang menghapus batasan" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "Nama pengguna yang telah dicabut hak operator" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Nama pengguna yang telah dicabut hak ½ operator" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "Nama pengguna yang telah dicabut hak suaranya" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "Nama pengguna yang telah dicabut hukumannya" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "Mask pembebasan" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "Nama pengguna yang menghapus pembebasan" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "Nama pengguna yang melakukan undangan" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "Mask undangan" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "Nama pengguna dari orang yang menghapus undangan" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "Nama pengguna dari orang yang mengatur mode" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "Tanda mode (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "Huruf mode" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "Kanal sedang diatur" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Nama lengkap" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Keanggotaan Kanal/\"adalah operator IRC\"" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Informasi Server" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Waktu diam" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Waktu masuk" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Alasan Pergi" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Pesan" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Akun" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "pengguna@host asli" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "IP asli" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Nama Kanal" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "Mekanisme" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "Numerik atau Pengidentifikasi Mentah" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Teks" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Nama pengguna dari orang yang mengundang anda" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Pengguna" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "Nama panggilan yang dipakai" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Nama panggilan sedang dicoba" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Port" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "Tali mode" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "Tautan" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "Tipe DCC" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Nama berkas" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Tujuan berkas" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "Nama alamat" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Posisi" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Ukuran" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "Tali DCC" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "Alasan Meninggalkan" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "Jumlah item pemberitahuan" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Nama Berkas Lama" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Nama Berkas Baru" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Penerima" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Mask Host" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Nama Mask" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "Paket" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "Detik" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "Nama pengguna dari orang yang telah diundang" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Hukuman mask" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "Siapa yang mengatur hukuman" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Waktu Hukuman" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "Tak dapat membaca berkas suara:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "Host jarang jauh menutup soket" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "Koneksi ditolak" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "Tak ada rute ke host" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Waktu koneksi habis" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "Tak dapat menugaskan alamat tersebut" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "Koneksi ditata ulang oleh peer" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "Pulau Ascension" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Andora" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Uni Emirat Arab" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "Aviation-Bidang yang terkait" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Afghanistan" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Antigua dan Barbuda" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Albania" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Armenia" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Antilles Belanda" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Antartika" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Argentina" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "DNS Kebalikan" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Samoa Amerika" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "Wilayah Asia Pasifik" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Austria" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Australia" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "Kepulauan Aland" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Azerbaijan" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Bosnia dan Herzegovina" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Banglades" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Belgia" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Bulgaria" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Bahrain" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "Bisnis" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Brunei Darussalam" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Bolivia" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Brazil" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Bahama" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Bhutan" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Pulau Bouvet" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Belarus" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Kanada" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "Catalan" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Kepulauan Cocos" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "Republik Demokratik Kongo" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "Republik Afrika Tengah" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Kongo" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "Swiss" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "Pantai Gading" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Kepulauan Cook" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Cili" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Kamerun" + +#: src/common/util.c:738 +msgid "China" +msgstr "China" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Kolombia" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Internic Komersial" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "Koperatif" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Kosta Rika" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "Serbia dan Montenegro" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Kuba" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Tanjung Verde" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Pulau Christmas" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Siprus" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "Republik Ceko" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "Jerman Timur" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Jerman" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Djibouti" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Denmark" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Dominika" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "Republik Dominika" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Algeria" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Ekuador" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Institusi Pendidikan" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Estonia" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Mesir" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Sahara Barat" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "Spanyol" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Etiopia" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "Uni Eropa" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Finlandia" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Fiji" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Kepulauan Falkland" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Mikronesia" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Kepulauan Faroe" + +#: src/common/util.c:770 +msgid "France" +msgstr "Prancis" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Britania Raya" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Georgia" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Guyana Prancis" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "Kepulauan Selat Inggris" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Ghana" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Greenland" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Pemerintah" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Guadeloupe" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Guinea Khatulistiwa" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Yunani" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Kepulauan S. Georgia dan S. Sandwich" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Guinea-Bissau" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Guyana" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Kepulauan Heard dan McDonald" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Kroasia" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Hongaria" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Indonesia" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Irlandia" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Israel" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "Isle of Man" + +#: src/common/util.c:801 +msgid "India" +msgstr "India" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "Informasional" + +#: src/common/util.c:803 +msgid "International" +msgstr "Internasional" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Wilayah Lautan Hindia Milik Inggris" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Irak" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "Iran" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Islandia" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Italia" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Jamaika" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Yordania" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "Perusahaan" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Jepang" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Kenya" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Kirgistan" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Kamboja" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Komoro" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "St. Kitts dan Nevis" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Korea Utara" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Korea Selatan" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Kuwait" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Kepulauan Cayman" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Kazakstan" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Libanon" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Santa Lucia" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Liberia" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Lithuania" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Luxemburg" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Latvia" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Libya" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Maroko" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Monako" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Moldova" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "Montenegro" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "Medik Amerika Serikat" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Madagaskar" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Kepulauan Marshall" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Militer" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Makedonia" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Mongolia" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Makau" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "Perangkat Mobile" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Kepulauan Mariana Utara" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Martinique" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Mauritania" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Mauritius" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "Museum" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Maladewa" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "Meksiko" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Malaysia" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Mozambique" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Namibia" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "Nama Individual" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Kaledonia Baru" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Nigeria" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Jaringan Internic" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Pulau Norfolk" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Nigeria" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Nikaragua" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Belanda" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Norwegia" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "Selandia Baru" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "Internic Organisasi Nirlaba" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Polinesia Prancis" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Papua Nugini" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Filipina" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Polandia" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "St. Pierre dan Miquelon" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Puerto Rico" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "Profesi" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "Wilayah Palestina" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Portugal" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Paraguay" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Qatar" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Reuni" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Rumania" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "Sekolah Tua ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "Serbia" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Federasi Rusia" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Rwanda" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Arab Saudi" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Kepulauan Solomon" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Seychelles" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Sudan" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Swedia" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Singapura" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "St. Helena" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Slovenia" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Kepulauan Svalbard dan Jan Mayen" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "Republik Slovakia" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Somalia" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Suriname" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "Sudah Selatan" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "Sao Tome dan Principe" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Dahulu USSR (Uni Soviet)" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Suriah" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Swaziland" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Kepulauan Turks dan Caicos" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Chad" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "Internet Communication Services" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "Wilayah Selatan Prancis" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Thailand" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Tajikistan" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Timor Timur" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Tunisia" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Turki" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "Travel dan Tourism" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Trinidad dan Tobago" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Tanzania" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Ukraina" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Inggris" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "Amerika Serikat" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Uruguay" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Uzbekistan" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Negara Kota Vatikan" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "St. Vincent dan Grenadines" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "Kepulauan Virgin Inggris" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "Kepulauan Virgin AS" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "Kepulauan Wallis dan Futuna" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "Hiburan Dewasa" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Yaman" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Yugoslavia" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Afrika Selatan" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Zambia" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "Tak dapat menyambung ke bus sesi" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "Gagal menyelesaikan NameHasOwner" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "Gagal menyelesaikan Perintah" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "akses jarak jauh" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "plugin untuk akses jarak jauh menggunakan DBUS" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Tak dapat menyambung ke bus sesi: %s\n" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Gagal mendapatkan %s: %s\n" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Bagan Karakter" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "Hukum" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Undang" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "Tanda salin" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "%s pada %s oleh %s" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "Salin entri" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "Tidak terhubung." + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "Anda harus memilih beberapa hukuman." + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "Apakah anda yakin ingin melepas semua item tedaftar di %s?" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "Tipe" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Mask" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "Dari" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Tanggal" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Anda hanya dapat membuka jendela Daftar Hukuman ketika di tab kanal." + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "Daftar Hukuman (%s) - %s" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Hapus" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Potong" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Segarkan" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Menampilkan %d/%d pengguna di %d/%d kanal." + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Pilih nama berkas keluaran" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "_Gabung Kanal" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "_Salin Nama Kanal" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "Salin _Teks Topik" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "Daftar Kanal (%s) - %s" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "Te_lusuri" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "_Tampilkan Kanal" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "S_impan Daftar..." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "Tampilkan hanya:" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "kanal dengan" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "ke" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "pengguna." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "Cari di:" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Nama kanal" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "Tipe penelusuran:" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "Penelusuran Sederhana" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "Kecocokan Pola (Kartu As)" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "Ekspresi Reguler" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Temukan:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Kirim berkas ke %s" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "Berkas tersebut tak dapat dilanjutkan" + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "Tak dapat mengakses berkas: %s\n%s.\nTidak mungkin melanjutkan." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "Berkas di direktori unduh lebih besar dari berkas yang ditawarkan. Tidak mungkin melanjutkan." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "Tak dapat melanjutkan berkas yang sama dari dua orang." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "Unggah dan Unduh - %s" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Status" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Berkas" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "Kira-kira" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Keduanya" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "Unggah" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "Unduh" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "Detail" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "Berkas:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "Alamat:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Batal" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Terima" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Lanjutkan" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "Buka Foler..." + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "Daftar Chat DCC - %s" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Terima" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Kirim" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "Waktu Mulai" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "Tambah" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Hapus" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Batal" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Simpan" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "Jangan lakukan koneksi otomatis ke server" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "Gunakan direktori pengaturan yang berbeda" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "jangan otomatis buka plugin apapun" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "Tampilkan direktori plugin/skrip" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "Tampilkan direktori pengaturan pengguna" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "Membuka sebuah irc://server:port/channel?key URL" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "Eksekusi perintah:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "Buka Tautan atau jalankan perintah di HexChat" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Mulai minimalkan. Level 0=Normal 1=Jadikan Ikon 2=Baki" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "level" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "Tampilkan informasi versi" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "Gagal membuka font:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "Penyangga penelusuran kosong.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d byte" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Antrean kirim jaringan: %d byte" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "Perintah Sisipkan di Penyangga akan menyisipkan isi Data 1 ke dalam entri tempat kombinasi kunci ditekan pada posisi kursor saat ini" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "Perintah Atur Penyangga mengatur entri tempat kombinasi tombol dimasukkan ke isi dari Data 1" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "Perintah Ganti Perintah mengatur entri agar berisi perintah terakhir yang dimasukkan - sama seperti menekan tanda panah atas di shell" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "Perintah Perintah Selanjutnya mengatur entri agar berisi perintah selanjutnya yang dimasukkan - sama seperti menekan tanda panah bawah di shell" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "Perintah ini mengganti teks di entri untuk menyelesaikan nama pengguna atau perintah yang belum lengkap. Jika Data 1 diatur maka tab ganda di tali akan memilih nama pengguna terakhir, bukan yang setelahnya" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "Perintah ini menggulung ke atas dan bawah melewati daftar pengguna. Jika Data 1 diatur ke apapun maka perintah akan menggulung ke atas, atau ke bawah" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "Perintah ini memeriksa kata terakhir yang dimasukkan di entri melawan daftar ganti lalu menggantinya bila menemukan kecocokan" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "Perintah ini memindahkan tab depan ke kiri satu tab" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "Perintah ini memindahkan tab depan ke kanan satu tab" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "Perintah ini memindahkan keluarga tab saat ini ke kiri" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "Perintah ini memindahkan keluarga tab saat ini ke kanan" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "Dorong baris masukan ke riwayat tapi tidak mengirim ke server" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "Terjadi galat ketika memuat konfigurasi pengikat kunci" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "Pilih sebuah baris untuk mendapatkan informasi tentang tindakannya." + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "Tombol Cepat Keyboard - %s" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "Tak dapat menulis ke berkas tersebut." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "Tak dapat membaca berkas tersebut." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "Mask tersebut sudah ada." + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Pribadi" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Pemberitahuan" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "Tak abaikan" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "Apakah anda yakin ingin melepas semua abaian?" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "Masukkan mask yang akan diabaikan:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "Daftar Pengabaian - %s" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Abaikan Statistik:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Kanal:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Pribadi:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Pemberitahuan" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Undang:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "Tambah..." + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "Nama kanal terlalu pendek, coba lagi." + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "Koneksi Selesai - %s" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "Koneksi ke %s selesai." + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "Apa yang Anda ingin lakukan selanjutnya?" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "_Tak ada, Saya akan bergabung ke kanal nanti." + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "_Gabung ke kanal ini:" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Jika anda tahu nama kanal yang ingin anda masuki, masukkan namanya di sini." + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "" + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "_Selalu tampilkan dialog ini setelah terhubung." + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "Dialog dengan" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Topik untuk %s adalah: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "Tak ada topik" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "Server ini masih memiliki %d kanal atau dialog yang terhubung dengannya. Tutup mereka semua?" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "Keluar dari HexChat?" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "Jangan tanyakan lagi." + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Anda terhubung ke %i jaringan IRC." + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "Anda yakin ingin keluar?" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "Beberapa transfer berkas masih aktif." + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "_Cuitkan ke Tray" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "Masukkan Atribut atau Kode Warna" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>Tebal</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>Garis Bawah</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "<i>Miring</i>" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "Normal" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "Warna 0-7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "Warna 8-15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "_Pengaturan" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "_Log ke Harddisk" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "_Buka Ulang Scrollback" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "_Sembunyikan Gabung/Pisah Pesan" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "Peringatan _Ekstra" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "_Bip pada Pesan" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "Kedip _Ikon Baki" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "Kedip Bar _Task" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "_Lepas" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "_Tutup" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "Batas pengguna harus merupakan nomor!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "Tak ada pesan dari luar" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "Perlindungan Topik" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "Hanya Undangan" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "Dimoderasi" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "Daftar Hukuman" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Sandi" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "Batas Pengguna" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Masukkan nama pengguna baru:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "" + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "" + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "_Soroti semua" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "" + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Host tak diketahui" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Tak Diketahui" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Nama Asli:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "Pengguna:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "Negara" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "Server:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "%u menit yang lalu" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "Pesan Terakhir:" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "Pesan Pergi:" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "%d pengguna terpilih." + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "Buka Tautan di Browser" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "Salin Taut Terpilih" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Gabung Kanal" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "Tinggalkan Kanal" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "Daur Kanal" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "Menu pengguna - %s" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "Perintah User - Kode Spesial:\n\n%c = kanal saat ini\n%e = nama jaringan saat ini\n%m = informasi mesin\n%n = nick kamu\n%t = waktu/tanggal\n%v = versi HexChat\n%2 = 2 kata\n%3 = 3 kata\n&2 = 2 kata dari akhir baris\n&3 = 3 kata dari akhir baris\n\ncontoh:\n/cmd john hello\n\n%2 hasilnya \"john\"\n&2 hasilnya \"john hello\"." + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "Balasan CTCP - Kode khusus:\n\n%d = data (seluruh ctcp)\n%e = nama jaringan saat ini\n%m = informasi mesin\n%s = pengguna yang mengirim ctcp\n%t = waktu/tanggal\n%2 = kata 2\n%3 = kata 3\n&2 = kata 2 sampai akhir baris\n&3 = word 3 sampai akhir baris\n\n" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "Pengendali Tautan - Kode Spesial:\n\n%s = Tautan\n\nMenaruh ! di depan perintah\nmenunjukkan hal tersebut harus dikirim ke \nshell bukan HexChat" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "Kustom Perintah - %s" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "Ganti - %s" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "Ganti dengan " + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "Pengendali Tautan - %s" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "Daftar Tombol Kustom - %s" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "Tombol Dialog - %s" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "Balasan CTCP - %s" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "He_xChat" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "_Baru" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "_Keluar" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "_Tampilan" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "_Bar Menu" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "Bar _Topik" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "_Daftar Pengguna" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "Tombol M_ode" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "Peng_ganti Kanal" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "_Tab" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "P_ohon" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "_Meteran Jaringan" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Matikan" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "Grafik" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "_Server" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "_Putuskan koneksi" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "_Konek" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "Menu _Pengguna" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "Pe_ngaturan" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "Peng_aturan" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "_Jendela" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "Atur Ulang Penanda Baris" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "_Salin Seleksi" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "Bersi_hkan Teks" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "Cari" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "Cari Selanjutnya" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "Cari Sebelumnya" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "_Bantuan" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "_Konten" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "_Tentang" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "_Lampiran" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Nama" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Terakhir Terlihat" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "Terputus" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Tak Pernah" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "%d menit yang lalu" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "Terhubung" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "Masukkan nama pengguna yang akan ditambah:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "Pemberitahuan di jaringan ini:" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "Koma yang memisahkan daftar jaringan dapat diterima." + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "Daftar Teman - %s" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "Buka Dialog" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "Terhubung ke %u jaaringan dan %u kanal - %s" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "_Kembalikan Jendela" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "_Sembunyikan Jendela" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "_Bip pada" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "Pesan Kanal" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "Pesan Pribadi" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "Pesan Tersorot" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "_Ubah status" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "_Pergi" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "_Kembali" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "Soroti pesan dari: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "%u pesan disoroti, terakhir dari: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "Pesan rahasia dari: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "%u pesan rahasia, terakhir dari: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "Berkas dikirim dari: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "%u berkas kiriman, terakhir dari: %s (%s) - %s" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Versi" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Keterangan" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Pilih Plugin atau Skrip yang akan dibuka" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "Skrip dan Plugin - %s" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "_Buka..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "Simpan Sebagai..." + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "Log Asli (%s) - %s" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "Bersihkan Log" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Jaringan Baru" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Yakin hapus jaringan \"%s\" dan semua servernya?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "Sunting %s - %s" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "Kunci (Sandi)" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "Suntin_g" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "Hanya konek ke server terpilih" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Jangan daur melewati semua server jika koneksi gagal." + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "Lewati server proxy" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "Gunakan SSL untuk semua server di jaringan ini" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "Gunakan informasi pengguna global" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "_Nama Panggilan:" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "Pilihan kedua:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "Na_ma asli:" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "Nama _Pengguna:" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Sandi:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "Set karakter:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "Daftar Jaringan - %s" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "Informasi Pengguna" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "Pilihan ketiga:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Jaringan" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "Lewati daftar jaringan pada saat mulai" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "Tampilkan favorit saja" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "_Sunting..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "_Urut" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "_Favorit" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "Beri tanda atau tidak jaringan ini sebagai jaringan favorit." + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "M_asuk" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "Bahasa Afrikaans" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Albania" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "Amhar" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "Bahasa Asturia" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Azerbaijan" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "Basque" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Belarus" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Bulgaria" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "Hanzi (Sederhana)" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "Hanzi (Traditional)" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "Ceko" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "Bahasa Denmark" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "Belanda" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "Inggris (Britania)" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "Inggris" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Estonia" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "Finlandia" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "Prancis" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "Galisia" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "Jerman" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "Yunani" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "Bahasa Gujarat" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "India" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "Hungaria" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "Bahasa Indonesia" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "Itali" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "Jepang" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "Kannada" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "Bahasa Kinyarwanda" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "Korea" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "Latvi" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "Lituavi" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "Makedonia" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Malaysia" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "Bahasa Melayu" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "Norwegia (Bokmål)" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "Norwegia (Nynorsk)" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "Polandia" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "Portugis" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "Portugis (Barzil)" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "Punjabi" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "Rusia" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "Serbia" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "Slovakia" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "Slovania" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "Spanyol" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "Swedia" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Thailand" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "Ukraina" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Vietnam" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "Walonia" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Umum" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "Bahasa" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "Font utama" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Font:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "Kotak Teks" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "Nama pengguna diwarnai" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "Tampilkan nama pangguna dengan warna yang berbeda-beda" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "Rata kanan" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "Buat nama pengguna rata kanan" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "Tampilkan garis pembatas" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "Tampilkan garis merah setelah pesan terakhir ditulis" + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Gambar background:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "Pengaturan Transparansi" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "Lihat artikel strftime MSDN untuk lebih jelasnya." + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "Lihat halaman utama strftime untuk lebih jelasnya." + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "Nama Bar" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "Tampilkan mode kanal" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "Tampilkan jumlah user" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "Urutan yang terakhir dibicarakan" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "Input Box" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "Tampilkan kotak panggilan" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "Tampilkan ikon mode pada kotak panggilan pengguna" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "Pengecek ejaan" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "Kamus yang digunakan:" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "Pakai kode bahasa. Pisahkan beberapa kata dengan tanda koma." + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "Penyelesai Nama Pengguna" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "Awalan penyelesai nama pengguna:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "Urutan penyelesai nama pengguna:" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "" + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "Grafis" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "Tak diurutkan" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Atas" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Bawah" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Tersembunyi" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "Daftar Pengguna" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "Tampilkan nama host di daftar pengguna" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "Gunakan font dan warna kotak Teks" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "Tampilkan ikon untuk mode user" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "Gunakan ikon untuk daftar user" + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "Tampilkan jumlah kanal user" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "Daftar pengguna diurutkan menurut:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "Tampilkan daftar pengguna pada:" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "Telusuri \"Sibuk\" " + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "Di kanal yang lebih kecil dari:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "Aksi Pada Klik Ganda" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "Gadget Tambahan" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "Meteran Lag" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "Meteran Throttle" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Jendela" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Tab" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "Selalu" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "Hanya tab yang diminta" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "Pohon" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "Tipe pengganti:" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "Buka tab ekstra untuk pesan server" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "Buka tab baru ketika anda menerima pesan pribadi" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "Urutkan tab dalam urutan alfabetis" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "Tampilkan ikon di kanal" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "Tampilkan garis dot pada model pohon kanal" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "Teks lebih kecil" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "Fokus tab baru:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "Tampilkan kanal di:" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "Urutkan label tab ke:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "huruf." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "Tab atau Jendela" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "Buka kanal di:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "Buka dialog di:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "Buka utilitas di:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Buka DCC, Abaikan, Pemberitahuan, dll di tab atau jendela?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "Pesan" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "Gulir kebelakang" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "Tanyakan terdahulu" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "Tanyakan lokasi folder unduhan" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "Simpan tanpa interaksi" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "Berkas dan Direktori" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "Terima otomatis tawaran berkas:" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Unduh berkas ke:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "Pindahkan berkas yang telah selesai ke:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "Simpan nama pengguna di nama berkas" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "Buka Otomatis Jendela DCC" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "Jendela kirim" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "Jendela terima" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "Jendela bincang" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "Satu unggah:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "Kecepatan maksimum untuk satu transfer" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "Satu unduh:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "Semua unggah digabungkan:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "Kecepatan maksimum untuk semua berkas" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "Semua unduh digabungkan:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "Peringatan" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "Kedipkan ikon baki di:" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "Kedipkan bar tugas di:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "Buat suara bip di:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "Jangan beri peringatan ketika ditandai sedang pergi" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "Mode Tray" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "Aktifkan ikon baki sistem" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "Susutkan ke Tray" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "Tutup ke Tray" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "Otomatis tandai sedang pergi/kembali" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "" + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "Pesan Tersorot" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Pesan tersorot adalah pesan dimana nama pengguna anda disebutkan, tapi juga:" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "Kata tambahan untuk disorot:" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "Nama pengguna yang tidak disorot:" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "Nama pengguna yang selalu disorot:" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Pisahkan banyak kata dengan koma.\nWildcards juga diterima." + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "Pesan Standar" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "Keluar:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "Tinggalkan kanal:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "Pergi:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "Pergi" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Tampilkan kepergian sekali saja" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "Tampilkan pesan identik pergi sekali saja" + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "Otomatis menghapus tanda kepergian" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "Jangan tandai saya sedang pergi sebelum mengirim pesan" + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "Tampilkan MODE dalam bentuk mentah" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "Kirim /WHOIS ketika seseorang terhubung di daftar pemberitahuan anda" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "Sembunyikan pesan gabung dan pisah" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "Sembunyikan pesan kanal gabung/pisah secara standar" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "Auto Salin" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "Otomatis menyalin teks yang terpilih" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "Otomatis masukkan informasi warna" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "Font alternatif" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "Tampilkan daftar dengan mode kompak" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "Gunakan lebih sedikit spasi antara baris daftar user/pohon kanal " + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "Jeda koneksi ulang otomatis:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "Terjadi jeda ketika auto join:" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Pencatatan" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "Tampilkan gulung balik dari sesi sebelumnya" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "Gulung baris:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "Aktifkan pencatatan percakapan ke harddisk" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "Nama berkas catatan:" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Server %c=Kanal %n=Jaringan." + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "Sisipkan stempel waktu di catatan" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "Format stempel waktu catatan:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "Tautan" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "Hidupkan pencatat tautan" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "Hidupkan perekam tautan" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "Jumlah maksimum perekam tautan" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(Non aktifkan)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "Auto" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "Alamat Anda" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "Ikat ke:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "Hanya berguna bagi komputer dengan banyak alamat." + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "Dapatkan alamat saya dari server IRC" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "Tanyakan server IRC alamat asli anda. Gunakan ini jika anda memiliki alamat 192.168.*.*!" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "Alamat IP DCC:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "Klaim diri anda di alamat ini ketika menawarkan berkas." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "!Tinggalkan pangkalan pada nol untuk jangkauan penuh." + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "Server Proxy" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "Nama host:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Pangkalan:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Tipe:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "Gunakan proxy untuk:" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "Otentikasi Proxy" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "Nama pengguna:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "Pilih Berkas Gambar" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "Pilih Folder Unduh" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Pilih font" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Ramban..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "Buka Folder Data" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Pilih warna" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "Warna Teks" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "Warna mIRC:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "Warna lokal:" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Latar depan:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Latar belakang:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "Teks yang terpilih" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "Warna Antarmuka" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "Data baru:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "Garis penanda:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "Pesan baru:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "Pengguna Pergi:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "Sorot:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "Pengecek ejaan" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "Warna " + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Event" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "Berkas suara" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "Pilih berkas suara" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "Berkas suara:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "_Ramban" + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "P_utar" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Antarmuka" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "Penampilan" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Kotak input" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Daftar pengguna" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "Pengaturan Kanal" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Warna" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Obrolan" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "Tingkat Tinggi" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Pengaturan jaringan" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Transfer berkas" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Kategori" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "Anda tak dapat menempatkan pohon di atas atau bawah!\nSilakan ganti tata letak <b>Tab</b> di menu <b>Tampilan</b> dahulu." + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "" + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "HexChat harus dijalankan ulang agar pengaturan baru dapat digunakan." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*PERINGATAN*\nOtomatis menerima DCC ke direktori home\nanda dapat berbahaya dan mudah dieksploitasi. Misalnya: \nSeseorang dapat mengirimi anda .bash_profile" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "<i>(tidak ada saran)</i>" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "Lagi..." + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "Tambahkan \"%s\" pada kamus" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "Abaikan semua" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "Saran Ejaan" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "perbaikin kesalahan bahasa pada: %s" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "Ada galat ketika menganalisa tali" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Sinyal ini hanya melewati %d argumen, $%d tidak sah" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "Cetak Berkas Teks" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ Nomor" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Sunting Event" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "Buka Dari..." + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Tes Semua" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "Perekam Tautan - %s" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Bersihkan daftar" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Salin tautan yang terpilih" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Salin" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Simpan daftar ke berkas" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d operator, %d total" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "Buka tautan irc://server:pangkalan/kanal" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "" diff --git a/hexchat/po/it.po b/hexchat/po/it.po new file mode 100644 index 0000000..76f0472 --- /dev/null +++ b/hexchat/po/it.po @@ -0,0 +1,6266 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Claudio Arseni <claudio.arseni@gmail.com>, 2013-2014,2016-2018 +# Eros Palberti - Fabio Viola : How-Tux Team <admin@how-tux.com>, 2006 +# Marina Latini <marina.latini@libreoffice.org>, 2016 +# Random_R, 2013 +# Random_R, 2013,2016-2018 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-12-15 12:53+0000\n" +"Last-Translator: Claudio Arseni <claudio.arseni@gmail.com>\n" +"Language-Team: Italian (http://www.transifex.com/hexchat/hexchat/language/it/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: it\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "HexChat" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "Client IRC" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "HexChat è un client IRC semplice ed estensibile. Consente di accedere in modo sicuro a più reti e comunicare con altri utenti privatamente o nei canali usando una interfaccia personalizzabile. È inoltre possibile trasferire file." + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "HexChat supporta caratteristiche come: DCC, SASL, proxy, controllo ortografico, avvisi, registrazione delle conversazioni, temi personalizzati e script Python e Perl." + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "Finestra di chat principale" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "Chiacchiera con altri utenti online" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "IM;Chat;Messaggistica Istantanea;IRC;" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "hexchat" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "Apri modalità sicura" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "Gestore temi di HexChat" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Non disponibile" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Sto andando via" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "OFF" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "ON" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "{unset}" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Rete" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<vuoto>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Canale" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "In attesa" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Attivo" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Non riuscito" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Completato" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Connetti" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Interrotto" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "Impossibile accedere a %s\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Errore" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s sta offrendo «%s». Accettare?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "Nessun DCC attivo\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "_Apri finestra di dialogo" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "_Invia un file" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "Informazioni _utente (WHOIS)" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "A_ggiungi all'elenco degli amici" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "_Ignora" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "Azioni dell'o_peratore" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Dai lo stato di operatore" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Togli lo stato di operatore" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "Dai la parola" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "Togli la parola" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Kick/Ban" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Kick" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "Ban" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "KickBan" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Esci dal canale" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Entra nel canale..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "Digitare il canale in cui entrare:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Collegamenti ai server" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Ping server" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Nascondi versione" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Op" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "ciao" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Motivo per il kick a %s:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "Invia file" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "Dialogo" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "WHOIS" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Invia" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Chat" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Pulisci" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "Non si possiedono i permessi di scrittura per %s. Nulla di questa sessione potrà essere salvato." + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* Eseguire IRC come l'utente root non è consigliato.\n È preferibile creare un account utente\n e utilizzare tale utente per effettuare l'accesso.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "SI " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "NO " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Hai ricevuto un flood CTCP da parte di %s. %s viene ignorato\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "Hai ricevuto un flood MSG da parte di %s. gui_autoopen_dialog impostato a OFF.\n" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "Risolto a %s" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "Non trovato" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "Risolto a:" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "Ricerca di %s..." + +#: src/common/inbound.c:1992 +msgid "Could not create SCRAM session with digest %s" +msgstr "Impossibile creare una sessione SCRAM con la funzione hash %s" + +#: src/common/inbound.c:2024 +msgid "SASL SCRAM authentication failed: %s" +msgstr "SASL SCRAM autenticazione fallita: %s" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s in linea\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s non in linea\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Nessun canale aperto. Provare /join #<canale>\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Non connessi. Provare /server <host> [<porta>]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "Il server %s esiste già sulla rete %s.\n" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "Server %s aggiunto alla rete %s.\n" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Già impostato come assente: %s\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "Già tolto lo stato di assenza.\n" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "È necessario /bin/sh per l'esecuzione.\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "Comandi disponibili:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "Comandi definiti dall'utente:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "Comandi definiti dal plugin:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Digitare /HELP <comando> per ulteriori informazioni, oppure /HELP -l" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Argomento «%s» sconosciuto ignorato." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "Il quiet non è supportato da questo server." + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "Plugin non trovato.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "Impossibile disattivare questo plugin.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <nome> <azione>, aggiunge un pulsante nell'elenco utenti" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "ADDSERVER <NuovaRete> <nuovo_server/6667>, aggiunge una nuova rete con un nuovo server all'elenco delle reti" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <cmd>, invia un comando a tutti i canali in cui si è presenti" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "ALLCHANL <cmd>, invia un comando a tutti i canali del server attuale" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <cmd>, invia un comando a tutti i server ai quali si è collegati" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "AWAY [<motivo>], imposta lo stato di assenza (usare /BACK per ripristinare la presenza)" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "BACK, imposta lo stato di presenza" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <mask> [<tipo_di_ban>], allontana dal canale attuale tutti coloro che corrispondono alla maschera di rete specificata. Se sono già connessi al canale, questo non li espelle (kick). Bisogna essere operatore." + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <variabile> [<valore>]" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "CHARSET [<codifica>], rileva o imposta la codifica usata per la connessione attuale" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "CLEAR [ALL|HISTORY|[-]<quantità>], pulisce la finestra di testo corrente o la cronologia dei comandi" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "CLOSE [-m], chiude la scheda corrente, chiudendo la finestra se questa è l'unica scheda aperta , o con l'opzione «-m», per chiudere tutte le query." + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <codice|wildcard>, cerca un codice paese, per es.: it = Italia" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <soprannome> <messaggio>, invia il messaggio CTCP al soprannome indicato, messaggi comuni sono VERSION e USERINFO" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "CYCLE [<canale>], abbandona il canale attuale o quello dato e vi rientra immediatamente" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <soprannome> - accetta un file offerto\nDCC SEND [-maxcps=#] <soprannome> [file] - invia un file a qualcuno\nDCC PSEND [-maxcps=#] <soprannome> [file] - invia un file utilizzando la modalità passiva\nDCC LIST - visualizza l'elenco dei collegamenti DCC\nDCC CHAT <soprannome> - propone una CHAT DCC a qualcuno\nDCC PCHAT <soprannome> - propone una CHAT DCC utilizzando la modalità passiva\nDCC CLOSE <tipo> <soprannome> <file> per esempio:\n /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <soprannome>, rimuove lo stato di semi-operatore sul canale attuale al soprannome indicato (bisogna essere operatore)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <nome>, elimina un pulsante pulsante dall'elenco utenti" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <soprannome>, rimuove lo stato di operatore sul canale attuale al soprannome indicato (bisogna essere operatore)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <soprannome>, toglie la parola al soprannome indicato sul canale attuale (bisogna essere operatore)" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, disconnette dal server" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "DNS <soprannome|host|ip>, risolve un IP o un nome host" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "DOAT <canale,elenco,/rete> <command>" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <testo>, stampa un testo localmente" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <comando>, esegue il comando. Se si utilizza l'opzione -o, l'output è inviato al canale attuale, altrimenti è stampato nell'area di testo attuale" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, invia un SIGCONT al processo" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9], termina un'istanza exec nella sessione attuale. Se è specificato -9, il processo è ucciso con SIGKILL" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, invia un SIGSTOP al processo" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, invia dati allo stdin del processo" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "EXPORTCONF, esporta le impostazioni di HexChat" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, svuota la coda di invio del server attuale" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <host> [<porta>], utilizza un host come proxy, la porta predefinita è la 23" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <soprannome> [password], uccide un soprannome fantasma" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <nick>, dà lo stato di semi-operatore al soprannome (bisogna essere operatore)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <password>, ti identifica presso il nickserv" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <maschera> <tipi..> <opzioni..>\n maschera - host maschera da ignorare, per es.: *!*@*.aol.com\n tipi - tipi di dati da ignorare, uno o più tra:\n PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n opzioni - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <soprannome> [<canale>], invita qualcuno in un canale, la regola predefinita è per il canale attuale (bisogna essere operatore)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <canale>, entra nel canale" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "KICK <soprannome> [motivo], espelle l'utente dal canale attuale (è necessario essere operatore)" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "KICKBAN <soprannome> [motivo], allontana ed espelle l'utente dal canale attuale (è necessario essere operatore)" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, forza un nuovo controllo del ritardo (lag)" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "LASTLOG [-h] [-m] [-r] [--] <stringa>, cerca una stringa nel buffer\nUsare -h per evidenziare le stringhe trovate\nUsare -m quando la stringa è un'espressione regolare\nUsare -- (doppio trattino) per terminare le opzioni quando si cerca, per esempio, la stringa «-r»" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <file>, carica un plugin o uno script" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, toglie lo stato a tutti i semi-operatori del canale attuale (bisogna essere operatore)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, toglie lo stato a tutti gli operatori del canale attuale (bisogna essere operatore)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <azione>, invia l'azione al canale attuale (le azioni sono scritte in terza persona, es. /me saluta tutti)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "MHOP, imposta lo stato hop per tutti gli utenti presenti nel canale attuale (è necessario essere operatore del canale)" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, espelle dal canale attuale tutti gli utenti tranne te (bisogna essere operatore)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, rende operatori tutti gli utenti nel canale attuale (bisogna essere operatore)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "MSG <soprannome> <messaggio>, invia un messaggio privato, messaggio \".\" per inviarlo all'ultimo soprannome contattato o con il prefisso \"=\" per avviare una chat DCC" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "NAMES [canale], elenca i soprannomi presenti nel canale" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <soprannome> <messaggio>, invia una notifica CTCP" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <nome host> [<porta>]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <soprannome>, imposta il tuo soprannome" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "NOTICE <soprannome/canale> <messaggio>, invia una notifica" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [-n rete1[,rete2,...]] [<soprannome>], mostra l'elenco di notifica o aggiunge qualcuno a esso" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <soprannome>, dà lo stato di operatore al soprannome indicato (bisogna essere operatore)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<canale>] [<motivo>], abbandona il canale. Se non specificato, quello attuale" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <soprannome | canale>, invia un ping CTCP al soprannome o al canale" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "QUERY [-nofocus] <soprannome> [messaggio], apre una nuova finestra per messaggi privati con qualcuno e opzionalmente invia un messaggio" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "QUIET <mask> [<quiettype>], imposta il quiet per il canale su tutti tutti coloro che corrispondono alla maschera se la funzione è supportata dal server." + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<motivo>], disconnette dal server attuale" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <testo>, invia il testo in forma grezza al server" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<host>] [<porta>] [<password>], può essere richiamato semplicemente come /RECONNECT per riconnettersi al server attuale o con /RECONNECT ALL per riconnettersi a tutti i server aperti" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<host>] [<porta>] [<password>], può essere richiamato semplicemente come /RECONNECT per riconnettersi al server attuale o con /RECONNECT ALL per riconnettersi a tutti i server aperti" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "RECV <testo>, invia dati in forma grezza a HexChat, come se venissero ricevuti dal server IRC" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "RELOAD <nome>, ricarica un plugin o uno script" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <testo>, invia il testo all'oggetto a cui corrisponde la finestra corrente" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <soprannome> [<file>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <host> <porta> <canale>, si connette ed entra nel canale" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <host> <porta> <canale>, si connette ed entra nel canale" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "SERVER [-ssl] <host> [<porta>] [<password>], si connette al server, la porta predefinita è la 6667 per le connessioni normali e la 6697 per le connessioni ssl" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <host> [<porta>] [<password>], si connette al server, la porta predefinita è la 6667" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-off|-on] [-quiet] <variabile> [<valore>]" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "SETCURSOR [-|+]<posizione>, riposiziona il cursore nella casella di immissione" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "SETTAB <nuovo nome>, cambia il nome della scheda. Se troppo lungo verrà troncato automaticamente" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "SETTEXT <nuovo testo>, sostituisce il testo nella casella di immissione" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<argomento>], imposta l'argomento, se specificato, altrimenti mostra quello attuale" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "\nTRAY -f <timeout> <file1> [<file2>] Lampeggia l'area di notifica tra due icone.\nTRAY -f <nomefile> Imposta l'area di notifica a un'icona fissa.\nTRAY -i <numero> Lampeggia l'area di notifica con un'icona interna.\nTRAY -t <testo> Imposta il suggerimento dell'area di notifica.\nTRAY -b <titolo> <testo> Imposta l'avviso per l'area di notifica." + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <maschera> [<maschera>...], rimuove il ban per la maschera specificata" + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <maschera> [QUIET]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <nome>, termina un plugin o uno script" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "UNQUIET <mask> [<mask>...], toglie il quiet alla maschera specificata se la funzione è supportata dal server." + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, apre uno URL nel browser" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "USELECT [-a] [-s] <soprannome1> <soprannome2> ecc., evidenzia i/il soprannomi/e nell'elenco utenti del canale" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <soprannome>, dà la parola a qualcuno (bisogna essere operatore)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <messaggio>, scrive il messaggio su tutti i canali" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <messaggio>, invia il messaggio a tutti gli operatori del canale attuale" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "Comando utente per: %s\n" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "Uso: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nNessun aiuto disponibile per questo comando.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "Comando non esistente.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "Argomenti del comando non corretti.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "Troppi comandi ricorsivi. Interruzione." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "Comando sconosciuto %s. Prova /help\n" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "Nessun simbolo hexchat_plugin_init; è veramente un plugin di HexChat?" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "*\tRichiesta di identificazione al servizio da %s come %s" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "*\tErrore nell'avvio del server identd: %s" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "IDENTD <porta> <nome_utente>" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "Timer %d eliminato.\n" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "Nessun numero di riferimento trovato.\n" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "Nessun timer installato.\n" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr " Riferimento# Secondi Ripetizione Comando \n" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "%5d %8.1f %7d %s\n" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Il server e la porta supportano veramente SSL?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "Impossibile risolvere il nome host %s.\nControllare le impostazioni dell'IP.\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "Attraversamento del proxy non riuscito.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Nuovo tentativo con il server successivo di %s...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "Attenzione: il set di caratteri «%s» non è conosciuto. Non verrà effettuata alcuna conversione per la rete %s." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "%C18*%O$t%C18$1%O aggiunto all'elenco di notifica." + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "%C22*%O$t%C22$1%O: %C18$2%O su %C24$4%O su %C26$3%O" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "%C22*%O$tImpossibile entrare in %C22$1 %O(%C20Hai ricevuto un ban%O)." + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "%C29*%O$tFunzionalità accettate: %C29$2%O" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "%C29*%O$tFunzionalità rimosse: %C29$2%O" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "%C23*%O$tFunzionalità supportate: %C29$2%O" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "%C23*%O$tFunzionalità richieste: %C29$1%O" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "%C24*%O$t%C28$1%O è ora conosciuto come %C18$2%O" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O ha impostato un ban su %C18$2%O" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "%C22*%O$tCanale %C22$1%O creato su %C24$2%O" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O ha tolto lo stato di semi-operatore del canale a %C18$2%O" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O ha tolto lo stato di operatore del canale a %C18$2%O" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O ha tolto la parola a %C18$2%O" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%C ha impostato l'exempt su %C18$2%O" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O ha dato lo stato di semi-operatore del canale a %C18$2%O" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%C ha impostato l'exempt per l'invito su %C18$2%O" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%UCanale Utenti Argomento" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "%C22*%O$t%C26$1%O ha impostato la modalità %C24$2$3%O su %C22$4%O" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "%C22*%O$tCanale %C22$1%O modalità: %C24$2" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O ha dato lo stato di operatore del canale a %C18$2%O" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O ha impostato il quiet su %C18$2%O" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O ha rimosso l'exempt su %C18$2%O" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O ha rimosso l'exempt per l'invito su %C18$2%O" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "%C22*%O$t%C26$1%O ha rimosso la parola chiave del canale" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "%C22*%O$t%C26$1%O ha rimosso il limite di utenti" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O ha impostato come parola chiave del canale %C24$2%O" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O ha impostato il limite utenti del canale a %C24$2%O" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O ha rimosso il ban da %C18$2%O" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O ha rimosso il quiet su %C18$2%O" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "%C22*%O$tCanale %C22$1%O url: %C24$2" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O ha dato la parola a %C18$2%O" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "%C23*%O$tConnesso. Accesso in corso." + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "%C23*%O$tConnessione a %C29$1%C (%C23$2:$3%O)" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "%C20*%O$tC21Connessione non riuscita (%C20$1%O)" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "%C24*%O$tRicevuto un CTCP %C24$1%C da %C18$2%O" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "%C24*%C$tRicevuto un CTCP %C24$1%C da %C18$2%C (per %C22$3%C)%O" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "%C24*%O$tRicevuto un suono CTCP %C24$1%C da %C18$2%O" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "%C24*%O$tRicevuto un suono CTCP %C24$1%C da %C18$2%C (per %C22$3%O)" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "%C23*%O$tCHAT DCC con %C18$1%O interrotta." + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "%C24*%O$tConnessione CHAT DCC con %C18$1%C %C30[%C24$2%C30]%O stabilita" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "%C20*%O$tCHAT DCC con %C18$1%O persa (%C20$4%O)" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "%C24*%O$tRicevuta una richiesta di CHAT DCC da %C18$1%O" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "%C24*%O$tInvito a una CHAT DCC per %C18$1%O" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "%C24*%O$tInvito alla CHAT per %C18$1%O già effettuato" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "%C20*%O$tTentativo di connessione DCC $1 a %C18$2%O non riuscito (%C20$3%O)" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "%C23*%O$tRicevuto «%C23$1%C» da %C18$2%O" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "%C16,17 Tipo A/Da Stato Dim Pos File" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "%C20*%O$tRicevuta una richiesta DCC mal formata da %C18$1%O.$a010%C23*%O$tContenuto del pacchetto: %C23$2%O" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "%C24*%O$tOfferta di «%C24$1%O» per %C18$2%O" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "%C23*%O$tOfferta DCC inesistente." + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "%C23*%O$tDCC RECV «%C23$2%O» a %C18$1%O interrotto." + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "%C24*%O$tDCC RECV «%C23$1%O» da %C18$3%O completato %C30[%C24$4%O cps%C30]%O" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$tDCC RECV connessione stabilita con %C18$1 %C30[%O%C24$2%C30]%O" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "%C20*%O$tDCC RECV «%C23$1%O» da %C18$3%O non riuscito (%C20$4%O)" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "%C20*%O$tDCC RECV: impossibile aprire «%C23$1%C» in scrittura (%C20$2%O)" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "%C23*%O$tIl file «%C24$1%C» esiste già, verrà salvato come «%C23$2%O»." + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "%C24*%O$t%C18$1%C ha richiesto di ripristinare «%C23$2%C» da %C24$3%O." + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "%C23*%O$tDCC SEND «%C23$2%C» a %C18$1%O interrotto." + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "%C24*%O$tDCC SEND «%C23$1%C» a %C18$2%C completato %C30[%C24$3%C cps%C30]%O" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$tDCC SEND connessione stabilita con %C18$1 %C30[%O%C24$2%C30]%O" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "%C20*%O$tDCC SEND «%C23$1%C» a %C18$2%C non riuscito (%C20$3%O)" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "%C24*%O$t%C18$1%C ha offerto «%C23$2%C» (%C24$3%O byte)" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "%C20*%O$tDCC $1 «%C23$2%C» a %C18$3%O bloccato, interruzione." + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "%C20*%O$tDCC $1 «%C23$2%C» a %C18$3%O scaduto, interruzione." + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "%C24*%O$t%C18$1%O rimosso dall'elenco di notifica." + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "%C20*%O$tDisconnessi (%C20$1%O)" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "%C24*%O$tTrovato l'indirizzo IP: %C30[%C24$1%C30]%O" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "%O%C18$1%O aggiunto all'elenco degli utenti ignorati." + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "%OLo stato degli utenti ignorati su %C18$1%O è cambiato." + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "%C16,17" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "%C16,17 Maschera host PRIV NOTI CHAN CTCP DCC INVI UNIG" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "%O%C18$1%O rimosso dall'elenco degli utenti ignorati." + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "%OL'elenco utenti ignorati è vuoto." + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "%C20*%O$tImpossibile entrare in %C22$1%C (%C20L'accesso al canale è solamente su invito%O)" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "%C24*%O$tHai ricevuto un invito per %C22$1%O da %C18$2%O (%C29$3%O)" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "%C23*$t$1 ($3%C23) è entrato" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "%C20*%O$tImpossibile entrare in %C22$1%C (%C20Richiesta parola chiave%O)" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "%C22*%O$t%C26$1%C ha esplulso %C18$2%C da %C22$3%C (%C24$4%O)" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "%C19*%O$t%C19%C26$1%C ti ha ucciso (kill) %C26$1%C (%C20$2%O)" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "%C29*%O$t%C29MOTD saltato%O" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "%C23*%O$t%C28$1%C è già in uso. Nuovo tentativo con %C18$2%O..." + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "%C23*%O$t%C28$1%C è errato. Nuovo tentativo con %C18$2%O..." + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "%C20*%O$tSoprannome errato o già in uso. Usare /NICK per provarne un altro." + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "%C20*%O$tDCC inesistente." + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "%C23*%O$tNessun processo attualmente in esecuzione" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "%C23*%O$tNotifica: %C18$1%C è assente (%C24$2%O)" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "%C23*%O$tNotifica: %C18$1%C ha tolto lo stato di assenza" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tL'elenco di notifica è vuoto." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "%C16,17 Notifica elenco" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "%C23*%O$t%C23$1%O utenti nell'elenco di notifica." + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "%C23*%O$tNotifica: %C18$1%C non è in linea (%C29$3%O)" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "%C23*%O$tNotifica: %C18$1%C è in linea (%C29$3%O)" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "%C24*$t$1 ($2%C24) abbandona" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "%C24*$t$1 ($2%C24) ha abbandonato ($4)" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "%C24*%O$tRisposta al ping da %C18$1%C: %C24$2%O secondi" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "%C20*%O$tNessuna risposta al ping per %C24$1%O secondi, disconnessione in corso." + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "%C24*%O$tUn processo è già in esecuzione" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "%C24*$t$1 ha chiuso la connessione ($2)" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "%C24*%O$t%C26$1%C ha impostato le modalità %C30[%C24$2%C30]%O" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "%O-%C29$1/Wallops%O-$t$2" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "%C24*%O$tRicerca dell'indirizzo IP per %C18$1%O..." + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "%C23*%O$tAutenticazione SASL come %C18$1%O (%C24$2%O)" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "%C29*%O$tConnessi." + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "%C29*%O$tRicerca di %C29$1%O" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "%C23*%O$tIl tentativo di connessione precedente è stato interrotto (%C24$1%O)" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "%C22*%O$tL'argomento di %C22$1%C è: $2%O" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "%C22*%O$t%C26$1%C ha scelto come argomento: $2%O" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "%C22*%O$tArgomento per %C22$1%C impostato da %C26$2%C (%C24$3%O)" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C20*%O$tHost sconosciuto. Forse è scritto male?" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "%C20*%O$tImpossibile entrare in %C22$1%C (%C20Raggiunto il limite di utenti%O)" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "%C22*%O$tUtenti in %C22$1%C: %C24$2%O" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%C è assente %C30(%C23$2%O%C30)%O" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "%C23*%O$t%C28[%C18$1%C28] %OFine dell'elenco WHOIS." + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O inattivo da %C23$2%O" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O inattivo %C23$2%O, connesso da: %C23$3%O" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O host efettivo: %C23$2%O, IP effettivo: %C30[%C23$3%C30]%O" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "%C19*%O$tParla in %C22$2%O" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "%C19*%O$t%C26$3%O ti ha espulso da %C22$2%C (%C20$4%O)" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "%C19*%O$tHai lasciato il canale %C22$3%O" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "%C19*%O$tHai lasciato il canale %C22$3%C (%C24$4%O)" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "%C20*%O$tHai invitato %C18$1%O in %C22$2%O (%C24$3%O)" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "%C20*%O$tIl tuo soprannome è ora %C18$2%O" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "Registro caricato da" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** FINE REGISTRAZIONE: %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** INIZIO REGISTRAZIONE: %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "* Impossibile aprire i file di registro in scrittura.\n Verificare i permessi su %s" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "Messaggio a sinistra" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "Messaggio a destra" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "Indirizzo IP" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Nome utente" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "Il soprannome della persona che è entrata" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "Il canale nel quale sta entrando" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "L'host della persona" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "L'account della persona" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Soprannome" + +#: src/common/text.c:980 +msgid "The action" +msgstr "L'azione" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "Il carattere della modalità" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "Testo identificato" + +#: src/common/text.c:987 +msgid "The text" +msgstr "Il testo" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "Il messaggio" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Nome del server" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "Funzionalità accettate" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "Funzionalità rimosse" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "Funzionalità del server" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "Funzionalità richieste" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Vecchio soprannome" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Nuovo soprannome" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "Soprannome dell'utente che ha cambiato l'argomento" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Argomento" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "Il soprannome di chi ha effettuato il kick" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "La persona che ha ricevuto il kick" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "Il canale" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "Il motivo" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "Il soprannome della persona che è andata via" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "L'ora" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "Il creatore" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Soprannome" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Motivo" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Host" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "Da chi è stato fatto" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "L'ora nel formato x.x (vedi sotto)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "Il canale al quale è destinato" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "Il suono" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "Il soprannome della persona" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "L'evento CTCP" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "Il soprannome della persona che ha impostato la chiave" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "La chiave" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "Il soprannome della persona che ha impostato il limite" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "Il limite" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "Il soprannome della persona che ha impostato lo stato di operatore" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "Il soprannome della persona che è stata resa operatore" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "Il soprannome della persona che è stata resa semi-operatore" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "Il soprannome della persona che ha impostato lo stato di semi-operatore" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "Il soprannoome della persona che ha dato la parola" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "Il soprannome della persona che ha ricevuto la parola" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "Il soprannome della persona che ha impostato il ban" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "La maschera del ban" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "Il soprannome della persona che ha impostato il quiet" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "La maschera del quiet" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "Il soprannome della persona che ha rimosso la chiave" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "Il soprannome della persona che ha rimosso il limite" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "Il soprannome della persona che ha tolto lo stato di operatore" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "Il soprannome della persona che è stata rimossa dallo stato di operatore" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "Il soprannome della persona che ha tolto lo stato di semi-operatore" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Il soprannome della persona che è stata rimossa dallo stato si semi-operatore" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "Il soprannome della persona che ha tolto la parola" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "Il soprannome della persona a cui è stata tolta la parola" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "Il soprannome della persona che ha rimosso il ban" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "Il soprannome della persona che ha rimosso il quiet" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "Il soprannome della persona che ha impostato l'exempt" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "La maschera di exempt" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "Il soprannome della persona che ha rimosso l'exempt" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "Il soprannome della persona che ha fatto l'invito" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "La maschera di invito" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "Il soprannome della persona che ha rimosso l'invito" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "Il soprannome della persona che ha impostato la modalità" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "Il segno della modalità (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "La lettera della modalità" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "Il canale su cui ha effetto l'impostazione" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Nome completo" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Appartenenza al canale / \"è un operatore IRC\"" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Informazioni sul server" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Tempo di inattività" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Orario di connessione" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Motivo dell'assenza" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Messaggio" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Account" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "Utente@host effettivo" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "IP effettivo" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Nome del canale" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "Meccanismo" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "Numerico grezzo o identificatore" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Testo" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Nick della persona che ti ha invitato" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Utenti" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "Soprannome in uso" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Soprannome in via di prova" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Porta" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "Stringhe modalità" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "Tipo DCC" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Nome del file" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Nome del file di destinazione" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "Percorso" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Posizione" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Dimensione" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "Stringa DCC" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "Motivo dell'assenza" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "Numero degli utenti nell'elenco di notifica" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Vecchio nome del file" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Nuovo nome del file" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Destinatario" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Maschera dell'host" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Nome dell'host" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "Il pacchetto" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "Secondi" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "Soprannome della persona che è stata invitata" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Maschera dei ban" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "Chi ha impostato il ban" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Ora del ban" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "Impossibile leggere il file audio:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "L'host remoto ha chiuso il socket" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "Connessione rifiutata" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "Nessun instradamento per l'host" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Connessione scaduta" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "Impossibile assegnare l'indirizzo" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "Connessione interrotta dall'host remoto" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "Isole Ascensione" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Emirati Arabi Uniti" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "Relativo ai trasporti aerei" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Afghanistan" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Antigua e Barbuda" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Albania" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Armenia" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Antille Olandesi" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Antartide" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Argentina" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "DNS inverso" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Samoa Americane" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "Regione dell'Asia Pacifica" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Austria" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Australia" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "Isole Aland" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Azerbaigian" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Bosnia ed Erzegovina" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Bangladesh" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Belgio" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Bulgaria" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Bahrain" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "Businesses" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Brunei Darussalam" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Bolivia" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Brasile" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Bahamas" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Bhutan" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Isola Bouvet" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Bielorussia" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Canada" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "Catalano" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Isole Cocos" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "Repubblica Democratica del Congo" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "Repubblica Centrafricana" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Congo" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "Svizzera" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "Costa d'Avorio" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Isole Cook" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Cile" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Camerun" + +#: src/common/util.c:738 +msgid "China" +msgstr "Cina" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Colombia" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Internic, commerciale" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "Cooperative" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "Serbia e Montenegro" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Cuba" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Capo Verde" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Isole di Natale" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Cipro" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "Repubblica Ceca" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "Germania Est" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Germania" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Gibuti" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Danimarca" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Dominica" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "Repubblica Dominicana" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Algeria" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Ecuador" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Istituzione educativa" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Estonia" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Egitto" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Sahara occidentale" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "Spagna" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Etiopia" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "Unione Europea" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Finlandia" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Fiji" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Isole Falkland" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Micronesia" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Isole Faroe" + +#: src/common/util.c:770 +msgid "France" +msgstr "Francia" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Gran Bretagna" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Georgia" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Guyana Francese" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "Isole del Canale Britannico" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Ghana" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Gibilterra" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Groenlandia" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Governativo" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Guadalupa" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Guinea equatoriale" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Grecia" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Isole S.Georgia e S.Sandwich" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Guinea-Bissau" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Guyana" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Isole Heard e McDonald" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Croazia" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Ungheria" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Indonesia" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Irlanda" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Israele" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "Isola di Man" + +#: src/common/util.c:801 +msgid "India" +msgstr "India" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "Informativo" + +#: src/common/util.c:803 +msgid "International" +msgstr "Internazionale" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Territori Britannici dell'Oceano Indiano" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Iraq" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "Iran" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Islanda" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Italia" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Giamaica" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Giordania" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "Imprese che pubblicizzano posti di lavoro" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Giappone" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Kenya" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Kirghizistan" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Cambogia" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Comore" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "S. Kitts e Nevis" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Corea del Nord" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Corea del Sud" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Kuwait" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Isole Cayman" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Kazakistan" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Libano" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Santa Lucia" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Liberia" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Lituania" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Lussemburgo" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Lettonia" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Libia" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Marocco" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Monaco" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Moldavia" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "Montenegro" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "Stati Uniti, sanità" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Madagascar" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Isole Marshall" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Militare" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Macedonia" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Mongolia" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Macao" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "Dispositivi mobili" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Isole Marianne settentrionali" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Martinica" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Mauritania" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Muritius" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "Musei" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Maldive" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "Messico" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Malesia" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Mozambico" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Namibia" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "Individuali (nome)" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Nuova Caledonia" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Rete Internic" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Isola Norfolk" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Nigeria" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Paesi Bassi" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Norvegia" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "Nuova Zelanda" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "Internic, associazione no-profit" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Perù" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Polinesia Francese" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Papua Nuova Guinea" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Filippine" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Polonia" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "St. Pierre e Miquelon" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Porto Rico" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "Professioni" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "Territori palestinesi" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Portogallo" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Paraguay" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Qatar" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Reunion" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Romania" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "ARPAnet vecchio tipo" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "Serbia" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Federazione Russa" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Ruanda" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Arabia Saudita" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Isole Salomone" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Seychelles" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Sudan" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Svezia" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Singapore" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "S. Helena" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Slovenia" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Isole Svalbard e Jan Mayen" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "Repubblica Slovacca" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Somalia" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Suriname" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "Sudan del Sud" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "Sao Tome e Principe" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Ex URSS" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Siria" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Swaziland" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Isole Turks e Caicos" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Chad" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "Servizi di comunicazione Internet" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "Terre Australi Francesi" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Thailandia" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Tajikistan" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Timor Est" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Tunisia" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Turchia" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "Viaggi e turismo" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Trinidad e Tobago" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Tanzania" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Ucraina" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Regno Unito" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "Stati Uniti d'America" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Uruguay" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Uzbekistan" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Città del Vaticano" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "S. Vincent e le Grenadine" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "Isole Vergini Britanniche" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "Isole Vergini Americane" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "Isole Wallis e Futuna" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "Intrattenimento per adulti" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Yemen" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Iugoslavia" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Sud Africa" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Zambia" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Zimbawe" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "Impossibile connettersi al bus di sessione" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "Completamento di NameHasOwner non riuscito" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "Completamento del comando non riuscito" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "accesso remoto" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "plugin per l'accesso remoto usando D-BUS" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Impossibile connettersi al bus di sessione: %s\n" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Acquisizione di %s non riuscita: %s\n" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Tabella caratteri" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "Ban" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "Exempt" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "Exempt" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "Inviti" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Invita" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "Quiet" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "Quiet" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "Copia maschera" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "%s su %s da %s" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "Copia elemento" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "Non connesso." + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "È necessario selezionare alcuni ban." + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "Rimuovere veramente tutti gli elementi elencati in %s?" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "Tipo" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Maschera" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "Da" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Data" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "È possibile aprire la finestra con l'elenco dei ban solo mentre si è nella scheda di un canale" + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "elenco dei ban (%s) - %s" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Rimuovi" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Crop" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Aggiorna" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Mostra utenti %d/%d su %d/%d canali" + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Scegliere il nome del file di output" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "_Entra nel canale" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "_Copia il nome del canale" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "Copia l'argomen_to del canale" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "elenco canali (%s) - %s" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "Ce_rca" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "E_lenco scaricamenti" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "Salva e_lenco..." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "Mostra solo:" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "canali con, da" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "a" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "utenti." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "Cerca in:" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Nome canale" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "Tipo di ricerca:" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "Ricerca semplice" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "Corrispondenza modello (meta-caratteri)" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "Espressione regolare" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Trova:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Invia file a %s" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "Impossibile ripristinare il file." + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "Impossibile accedere al file: %s\n%s.\nImpossibile ripristinarlo." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "Il file nella directory di scaricamento è più grande di quello offerto. Impossibile ripristinarlo." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "Impossibile ripristinare lo stesso file da due persone." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "trasferimenti file - %s" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Stato" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "File" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "Tempo mancante" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Entrambi" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "Caricamenti" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "Scaricamenti" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "Dettagli" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "File:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "Indirizzo:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Interrompi" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Accetta" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Ripristina" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "Apri cartella..." + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "elenco chat DCC - %s" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Ricevuto" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Inviato" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "Ora d'inizio" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "Aggiungi" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Cancella" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Annulla" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Salva" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "Non connettere automaticamente ai server" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "Usa una cartella di configurazione diversa" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "Non caricare automaticamente i plugin" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "Mostra directory di plugin e script caricati automaticamente" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "Mostra la cartella di configurazione utente" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "Apre un URL irc://server:port/channel?key" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "Eseguire comando:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "Apri URL o esegui comando in una istanza di HexChat esistente" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Avvia minimizzato. Livello 0=normale 1=ridotto a icona 2=nell'area di notifica" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "livello" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "Mostra informazioni sulla versione" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "Impossibile aprire il carattere:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "Buffer di ricerca vuoto.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d byte" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Coda di invio rete: %d byte" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "La funzione Run Command esegue il contenuto di «Dati 1» come se fosse stato digitato nella casella di testo dove è stata premuta la combinazione di tasti. Può contenere testo (che verrà inviato ad un canale/utente), comandi o comandi utente. Quando in «Dati 1» sono presenti più comandi, i caratteri \\n vengono utilizzati per separali, in modo da eseguire più di un comando. Per inserire una \\ nell'attuale esecuzione testuale digitare \\\\" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "La funzione Change Page consente di spostarsi tra le pagine aperte. Inserire in «Dati 1» la pagina a cui si vuole accedere. Se «Dati 2» è impostato il cambio sarà relativo alla posizione attuale. Impostare «Dati 1» ad «auto» per spostarsi nella pagina con l'attività più recente e importante (prima le query, poi i canali con messaggi evidenziati, i canali con dialoghi, quindi i canali con altri dati)" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "La funzione Insert in Buffer inserirà il contenuto di «Dati 1» nella casella di testo dove è stata eseguita la combinazione di tasti nella posizione attuale del cursore" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "Il comando Scroll Page scorre l'oggetto testo su o giù di una pagina o di una riga. Impostare Data 1 a Top, Bottom, Up, Down, +1 o -1." + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "La funzione Set Buffer inserisce nella casella di testo dove viene premuta la combinazione di tasti il valore contenuto in «Dati 1»" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "La funzione Last Command inserisce nella casella di testo l'ultimo comando disponibile digitato - così come accade premendo il tasto «freccia su» in un terminale" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "La funzione Next Command inserisce nella casella di testo il successivo comando disponibile - così come accade premendo il tasto «freccia giù» in un terminale" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "Questo comando modifica il testo digitato per completare automaticamente un soprannome o un comando. Se «Dati 1» è configurato, la doppia pressione del tasto «Tab» in una stringa selezionerà l'ultimo soprannome e non il successivo" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "Questo comando scorre l'elenco dei soprannomi. Se «Dati 1» è impostato lo scorrimento avverrà verso l'altro, altrimenti verso il basso" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "Questo comando controlla l'ultima parola inserita nella casella di testo con l'elenco delle risposte, se viene trovata una corrispondenza viene sostituita" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "Questo comando sposta la scheda verso sinistra" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "Questo comando sposta la scheda verso destra" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "Questo comando sposta il gruppo di schede attuale verso sinistra" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "Questo comando sposta il gruppo di schede attuale verso destra" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "Inserisci la riga di inserimento nella cronologia ma senza inviarla al server" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "Si è verificato un errore caricando la configurazione delle combinazioni di tasti" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "Selezionare una riga per ottenere infromazioni sull'azione" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "scorciatoie da tastiera - %s" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "Impossibile scrivere su quel file." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "Impossibile leggere quel file." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "Maschera già esistente." + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Privato" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Avviso" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "Non ignorare" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "Rimuovere veramente tutti gli utenti ignorati?" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "Inserire maschera da ignorare:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "elenco utenti ignorati - %s" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Statistiche utenti ignorati:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Canale:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privato:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Avviso:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Invita:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "Aggiungi..." + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "Nome del canale troppo corto, riprovare." + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "connessione completata - %s" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "Connessione a %s completata." + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "Nella finestra con l'elenco dei server, nessun canale (stanza) è stato scelto per l'ingresso automatico in questa rete." + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "Cosa fare successivamente?" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "_Niente, verrà selezionato successivamente un canale." + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "_Entrare in questo canale:" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Se si conosce il nome del canale nel quale si vuole entrare, digitarlo qui." + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "A_pri l'elenco dei canali." + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "La rilevazione dell'elenco dei canali può durare uno o due minuti." + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "Mostr_are sempre questo dialogo dopo la connessione" + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "Dialoga con" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "L'argomento di %s è: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "Nessun argomento impostato" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "Questo server ha ancora %d canali o dialoghi associati. Chiudere tutto?" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "Chiusura di HexChat" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "Non chiedere la prossima volta." + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Reti IRC connesse %i." + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "Chiudere veramente l'applicazione?" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "Alcuni trasferimenti di file sono ancora in corso." + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "_Minimizza nell'area di notifica" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "Inserisci attributo o codice colore" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>Grassetto</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>Sottolineato</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "<i>Corsivo</i>" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "Normale" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "Colori 0-7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "Colori 8-15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "Impo_stazioni" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "Registra su_l disco" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "_Ricarica conversazioni precedenti" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "_Colori di strip" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "_Nascondi messaggi di entrata e uscita" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "Avvisi a_ggiuntivi" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "Suono sul _messaggio" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "_Icona lampeggiante nell'area di notifica" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "_Barra delle attività lampeggiante" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "_Separa" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "_Chiudi" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "Il limite utenti deve essere un numero.\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "Filtra colori" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "Nessun messaggio esterno" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "Argomento protetto" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "Solo su invito" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "Moderato" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "Elenco dei ban" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Parola chiave" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "Limite utenti" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Nuovo soprannome:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "Nessun risultato trovato." + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "Ricerca finita o non trovato." + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "E_videnzia tutti" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "Evidenzia tutte le ricorrenze e sottolinea quella attuale." + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "_Corrispondenza MAIUSCOLO/minuscolo" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "Esegue una ricerca distinguendo maiuscole e minuscole." + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "_Regex" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "Considera la stringa di ricerca come un'espressione regolare." + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Host sconosciuto" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "Account sconosciuto" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Sconosciuto" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Nome vero:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "Utente:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "Account:" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "Nazione:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "Server:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "%u minuti fa" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "Ultimo messaggio:" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "Messaggio di assenza:" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "%d soprannomi selezionati." + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "La barra dei menù è ora nascosta. È possibile mostrarla nuovamente premendo Ctrl+F9 o facendo clic con il pulsante destro in uno spazio vuoto dell'area di testo principale." + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "Apri il collegamento nel browser" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "Copia collegamento selezionato" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Entra nel canale" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "Abbandona il canale" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "Prova il canale" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "_Accesso automatico" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "Accesso automatico al canale" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "Connetti _automaticamente" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "menù utente - %s" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "Modifica questo menu" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "Linea di demarcazione disabilitata." + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "Linea di demarcazione mai impostata." + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "Linea di demarcazione reimpostata manualmente." + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "Linea di demarcazione reimpostata a causa del superamento del limite per le conversazioni precedenti." + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "Linea di demarcazione reimpostata dal comando CLEAR." + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "Stato della linea di demarcazione sconosciuto." + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "Recupera elenco canali" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "è stato compilato senza il supporto ai plugin." + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "Comandi utente - Codici speciali:\n\n%c = canale attuale\n%e = nome della rete attuale\n%m = informazioni sulla macchina\n%n = proprio soprannome\n%t = ora/data\n%v = versione HexChat\n%2 = parola 2\n%3 = parola 3\n&2 = parola 2 alla fine della riga\n&3 = parola 3 alla fine della riga\n\nesempio:\n/cmd john ciao\n\n%2 dovrebbe essere \"john\"\n&2 dovrebbe essere \"john ciao\"" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "Pulsanti elenco utente - codici speciali:\n\n%a = tutti i soprannomi selezionati\n%c = canale attuale\n%e = nome rete attuale\n%h = nomi host dei soprannomi selezionati\n%m = informazioni sulla macchina\n%n = proprio soprannome\n%s = soprannome selezionato\n%t = orario/data\n%u = account utenti selezionati" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "Pulsanti dialogo - codici speciali:\n\n\n%a = tutti i soprannomi selezionati\n%c = canale attuale\n%e = nome rete attuale\n%h = nomi host dei soprannomi selezionati\n%m = informazioni sulla macchina\n%n = proprio soprannome\n%s = soprannome selezionato\n%t = orario/data\n%u = account utenti selezionati" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "Risposte CTCP - Codici speciali:\n\n%d = dati (tutto il ctcp)\n%e = nome della rete attuale\n%m = informazioni sulla macchina\n%s = soprannome di chi ha inviato il ctcp\n%t = ora/data\n%2 = parola 2\n%3 = parola 3\n&2 = parola 2 alla fine della riga\n&3 = parola 3 alla fine della riga\n\n" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "Gestori URL - Codici speciali:\n\n%s = stringa dell'URL\n\nInserire un «!» davanti al comando\nindica che deve essere inviato\nad un terminale invece che ad HexChat" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "comandi definiti dall'utente - %s" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "Menu popup lista utenti - %s" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "sostituisci - %s" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "Sostituisci con" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "gestori URL - %s" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "pulsanti elenco utenti - %s" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "pulsanti dialogo - %s" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "risposte CTCP - %s" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "He_xChat" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "Elenco _rete" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "_Nuova" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "Scheda server" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "Scheda canale" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "Finestra server" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "Finestra canale" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "Carica p_lugin o script" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "_Esci" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "_Visualizza" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "Barra dei _menù" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "Barra dell'argomen_to" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "Elenco _utenti" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "Pul_santi elenco utenti" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "Pulsanti m_odalità" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "Elenco _canali" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "_Schede" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "Albe_ro" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "A_nalizzatore rete" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Disattivato" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "Grafico" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "Sc_hermo intero" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "_Server" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "_Disconnetti" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "_Riconnetti" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "_Entra in un canale" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "E_lenco canali" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "Contrassegna come _Assente" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "Menù _utente" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "_Impostazioni" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "_Preferenze" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "Sostituzione automatica" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "Risposte CTCP" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "Pulsanti di dialogo" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "Scorciatoie da tastiera" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "Eventi testuali" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "Gestori URL" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "Comandi utente" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "Pulsanti elenco utenti" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "Popup elenco utenti" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "_Finestra" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "Elenco dei _ban" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "Chat diretta" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "_Trasferimenti di file" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "Elenco amici" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "Elenco utenti ignorati" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "_Plugin e script" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "_Registro grezzo" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "Cattura _URL" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "Azzera linea di demarcazione" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "Spostarsi alla linea di demarcazione" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "_Copia selezione" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "Pu_lisci testo" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "Salva testo" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "Cerca" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "Cerca testo" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "Ricerca successivo" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "Ricerca precedente" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "A_iuto" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "_Contenuti" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "_Informazioni" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "_Riunisci" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Nome" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Ultima volta visto" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "Non in linea" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Mai" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "%d minuti fa" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "Un'ora fa" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "%d ore fa" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "In linea" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "Inserire soprannome da aggiungere:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "Notificare su queste reti:" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "Elenco di reti, separate da virgole." + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "elenco amici - %s" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "Apri dialogo" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "Messaggio evidenziato da: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "Messaggio del canale da: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "File offerto da: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "Invitato nel canale da: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "Notizia da: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "Messaggio privato da: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "reti connesse %u, canali %u - %s" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "_Ripristina finestra" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "_Nascondi finestra" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "_Lampeggia per" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "Messaggio del canale" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "Messaggio privato" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "Messaggio evidenziato" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "_Cambia stato" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "_Assente" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "_Presente" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "messaggio evidenziato da: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "%u messaggi evidenziati, l'ultimo da: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "messaggio del canale da: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "%u messaggi dal canale. - %s" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "messaggio privato da: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "%u messaggi privati, l'ultimo da: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "file offerto da: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "%u file offerti, l'ultimo da: %s (%s) - %s" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Versione" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Descrizione" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Seleziona il plugin o lo script da caricare" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "plugin e script - %s" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "_Carica..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "_Disattiva" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "_Ricarica" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "Salva come..." + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "registro in forma grezza (%s) - %s" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "Pulisci registro" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Nuova rete" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Rimuovere veramente la rete «%s» e tutti i relativi server?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "Il nome utente non può essere vuoto." + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "Non è possibile avere un soprannome vuoto." + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "È necessario avere due soprannomi univoci." + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "Il metodo usato per autenticarsi sul server. Per metodi di accesso personalizzati usare i comandi di connessione." + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "modifica %s - %s" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "Server" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "Canali a cui accedere automaticamente" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "Comandi dopo la connessione" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "%n=Soprannome\n%p=Password\n%r=Nome vero\n%u=Nome utente" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "Chiave (password):" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "_Modifica" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "Connettere solo al server selezionato" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Non provare tutti i server quando la connessione non riesce." + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "Connettere automaticamente a questa rete" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "Scavalcare il server proxy" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "Usare SSL per tutti i server di questa rete" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "Accettare certificati SSL non validi" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "Usare informazioni utente globali" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "Sopra_nnome:" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "Seconda scelta:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "Nome _vero:" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "Nome _utente:" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "Metodo di accesso:" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Password:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "Password usata per effettuare l'accesso. In caso di subbio, lasciare vuoto." + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "Set di caratteri:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "elenco reti - %s" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "Informazioni utente" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "Terza scelta:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Reti" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "Non visualizzare l'elenco reti all'avvio" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "Visualizzare solo reti preferite" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "_Modifica..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "_Ordina" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "Ordina l'elenco delle reti alfabeticamente. Usare i tasti Maiusc+Freccia sù e Maiusc+Freccia giù per spostare una riga." + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "Pre_ferita" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "Contrassegna la rete selezionata come preferita." + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "Co_nnetti" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "Africano" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Albanese" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "Amarico" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "Asturiano" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Azero" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "Basco" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Bielorusso" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Bulgaro" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "Cinese (semplificato)" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "Cinese (tradizionale)" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "Ceco" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "Danese" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "Olandese" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "Inglese (britannico)" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "Inglese" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Estone" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "Finlandese" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "Francese" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "Galiziano" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "Tedesco" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "Greco" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "Gujarati" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "Indi" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "Ungherese" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "Indonesiano" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "Italiano" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "Giapponese" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "Kannada" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "Kinyarwanda" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "Coreano" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "Lettone" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "Lituano" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "Macedone" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Malese" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "Malayalam" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "Norvegese (Bokmal)" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "Norvegese (Nynorsk)" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "Polacco" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "Portoghese" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "Portoghese (brasiliano)" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "Punjabi" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "Russo" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "Serbo" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "Slovacco" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "Sloveno" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "Spagnolo" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "Svedese" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Thai" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "Turco" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "Ucraino" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Vietnamita" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "Vallone" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Generale" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "Lingua:" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "Carattere principale:" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Carattere:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "Area di testo" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "Soprannomi colorati" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "Assegna a ciascun utente su IRC un colore differente" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "Indentare soprannomi" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "Allinea i soprannomi a destra" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "Mostrare riga di demarcazione" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "Inserisce una riga rossa dopo l'ultimo messaggio letto." + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Immagine di sfondo:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "Impostazioni trasparenza" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "Opacità finestra:" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "Marcatura temporale" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "Abilita marcatura temporale" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "Formato marcatura temporale:" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "Per maggiori informazioni, consultare l'articolo MSDN di strftime." + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "Per maggiori informazioni, consultare il manuale di strftime." + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "Barra del titolo" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "Mostrare la modalità del canale" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "Mostrare il numero di utenti" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "alfabeticamente (A-Z)" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "prima l'ultimo che ha parlato" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "Area di input" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "Usa i caratteri e i colori della casella di testo" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "Resa a schermo di colori e attributi" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "Mostrare casella soprannome" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "Mostrare icona modalità utente nella casella del soprannome" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "Controllo del periodo" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "Dizionario da usare:" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "Usa codici lingua (come in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\nSeparare le voci con un virgola." + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "Usare i codici della lingua. Separare voci multiple con una virgola." + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "Completamento dei soprannomi" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "Suffisso al completamento dei soprannomi:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "Ordinare i soprannomi completati:" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "Numero di soprannomi completati:" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "Soglia di soprannomi da iniziare a elencare invece di completarli" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "soprannomi." + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "Grafico" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "A-Z, prima gli operatori" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "Z-A, operatori alla fine" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "alfabeticamente (Z-A)" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "non ordinare" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "Sinistra (più alto)" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "Sinistra (più basso)" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "Destra (più alto)" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "Destra (più basso)" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "in alto" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "in basso" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "nascosto" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "Elenco utenti" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "Mostrare nome host nell'elenco utenti" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "Usa carattere e colori dell'area testo" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "Mostrare icone per le modalità utente" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "Usa icone al posto dei simboli di testo nell'elenco utenti." + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "Colorare i soprannomi nell'elenco utente" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "I soprannomi verranno colorati come nella finestra di chat." + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "Mostrare il numero di utenti nei canali" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "Ordinare elenco utenti:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "Posizionare elenco utenti:" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "Stato di assenza" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "Tieni traccia degli stati di assenza degli utenti e contrassegnali con un colore differente" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "Sui canali più piccoli di:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "Azione da eseguire sul doppio-clic" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "Funzioni aggiuntive" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "Misuratore del ritardo (lag):" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "Misuratore velocità trasferimento:" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Finestre" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Schede" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "Sempre" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "Solo schede richieste" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "automaticamente" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "in una scheda aggiuntiva" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "nella scheda aperta" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "Albero" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "Tipo di selettore canali:" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "Aprire una scheda aggiuntiva per i messaggi del server" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "Aprire una nuova scheda quando si riceve un messaggio privato" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "Ordinare le schede in modo alfabetico" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "Mostrare le icone nell'albero dei canali" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "Mostrare linee tratteggiate nell'albero dei canali" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "Usare la rotellina del mouse per combiare scheda" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "Clic centrale per chiudere la scheda" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "Ridurre le dimensioni del testo" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "Focus nuove schede:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "Posizionare le notizie:" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "Posizionare elenco canali:" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "Etichette schede abbreviate a:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "lettere." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "Schede o finestre" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "Aprire canali in:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "Aprire dialoghi in:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "Aprire utilità in:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Aprire DCC, elenco ignorati, notifiche ecc, in schede o finestre?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "Messaggi" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "Conversazioni precedenti" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "Chiedi conferma" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "Chiedi quale cartella usare" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "Salva senza chiedere conferma" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "File e cartelle" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "Accettare automaticamente i file offerti:" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Scaricare i file in:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "Spostare i file completi in:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "Salvare il soprannome nei nomi dei file" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "Apri automaticamente finestre DCC" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "Finestra d'invio" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "Finestra di ricezione" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "Finestra di chat" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "Velocità massima di trasferimento (byte al secondo)" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "Un caricamento:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "Velocità massima per un trasferimento" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "Uno scaricamento:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "Tutti i caricamenti combinati:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "Velocità massima per tutti i file" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "Tutti gli scaricamenti combinati:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "Avvisi" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "Mostrare notifiche per:" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "Icona lampeggiante nell'area di notifica per:" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "Barra delle attività lampeggiante per:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "Emettere un suono per:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "Riproduce il suono di sistema per le notifiche di messaggistica istantanea per gli eventi selezionati" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "Riproduce il suono per le notifiche di messaggistica istantanea dal tema freedesktop.org per gli eventi selezionati" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "Riprodurre un suono per gli eventi selezionati" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "Omettere gli avvisi quando assente" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "Omettere gli avvisi quando la finestra ha il focus" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "Comportamento dell'area di notifica" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "Abilitare icona nell'area di notifica" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "Minimizzare nell'area di notifica" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "Chiudere nell'area di notifica" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "Assegnare e rimuovere automaticamente lo stato di assenza" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "Cambia automaticamente lo stato quando si minimizza la finestra nel vassoio." + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "Mostrare le notifiche solo quando nascosto o ridotto a icona" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "Messaggi evidenziati" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "I messaggi evidenziati sono quelli in cui compare il proprio soprannome, ma anche:" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "Altre parole da evidenziare:" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "Soprannomi da non evidenziare:" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "Soprannomi da evidenziare sempre:" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Separare le parole con virgole.\nSono ammessi i meta-caratteri." + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "Icona rimbalzante nella barra per:" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "Messaggi predefiniti" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "Uscita:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "Abbandono del canale:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "Assenza:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "Assenza" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Mostrare lo stato di assenza una sola volta" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "Mostra i messaggi di assenza identici una sola volta." + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "Togliere automaticamente lo stato di assenza" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "Toglie lo stato di assenza prima di inviare messaggi." + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "Varie" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "Mostrare le «modalità» in forma grezza" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "WHOIS su notifica" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "Invia il comando /WHOIS quando un utente presente nell'elenco di notifica si collega." + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "Nascondere i messaggi di entrata e uscita" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "Nasconde i messaggi di entrata e uscita nei canali in maniera predefinita." + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "Nascondere i messaggi del cambio di soprannome" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "*!*@*.host" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "*!*@dominio" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "*!*utente@*.host" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "*!*utente@dominio" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "Comportamento per la copia automatica" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "Copiare automaticamente il testo selezionato" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "Copia il testo selezionato negli appunti quando il pulsante sinistro del mouse viene rilasciato. In alternativa, usare Ctrl+Maiusc+C per copiare il testo selezionato negli appunti" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "Includere automaticamente marcatura temporale" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "Include automaticamente la marcaura temporale nelle righe di testo copiate. In alternativa, include la marcatura temporale se li tasto Maiusc è premuto durante la selezione." + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "Includere automaticamente le informazioni sul colore" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "Include automaticamente le informazioni sul colore nelle righe di testo copiate. In alternativa, include le informazioni sul colore se il tasto Ctrl è premuto durante la selezione." + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "Nome vero:" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "Caratteri alternativi:" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "Separare le voci con virgole, senza spazi né prima né dopo." + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "Mostrare gli elenchi in modalità compatta" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "Usa una spaziatura inferiore tra l'elenco utenti e l'albero dei canali" + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "Usare l'ora del server se supportata" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "Mostra l'orario ottenuto dal server se è supportata l'estensione \"time-server\"." + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "Riconnettere automaticamente ai server se disconnessi" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "Attesa prima della nuova connessione automatica:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "Attesa prima dell'accesso automatico" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "Tipo di ban:" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "Tenta di usare questa maschera per i ban e i quiet. (È richiesto irc_who_join)" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Registrazione" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "Mostrare conversazioni della sessione precedente" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "Righe precedenti visibili:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "Abilitare registrazione delle conversazioni sul disco" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "Nome file del registro:" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Server %c=Canale %n=Rete." + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "Inserire orario nei registri" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "Formato orario del registro:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URL" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "Abilitare la registrazione degli URL sul disco" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "Abilitare la collezione degli URL" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "Numero massimo di URL da collezionare:" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(disabilitato)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "SOCKS4" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "SOCKS5" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "Automatico" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "Tutte le connessioni" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "Solo server IRC" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "Solo DCC" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "Proprio indirizzo" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "Associare a:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "Utile solo per computer con indirizzi multipli." + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "Trasferimenti di file" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "Ottenere l'indirizzo dal server IRC" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "Chiede al server IRC il vero indirizzo. Abilitare questa funzione se si utilizza un indirizzo 192.168.*.*" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "Indirizzo IP per DCC:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "Mostra questo indirizzo quando si offrono file." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "Prima porta di ascolto DCC:" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "Ultima porta di ascolto DCC:" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "!Impostare le porte a zero per utilizzare l'intervallo completo." + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "Server proxy" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "Nome host:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Porta:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Tipo:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "Usa proxy per:" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "Autenticazione proxy" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "Usa autenticazione (solo HTTP o SOCKS5)" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "Nome utente:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "Server identd" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "Attivo" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "Il server risponderà con il nome utente delle reti" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "Sono necessari i permessi per ascoltare su questa porta. Se non è la 113 (0 equivale a questa) allora è necessario configurare il port forwarding." + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "Seleziona un'immagine" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "Seleziona la cartella di scaricamento" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Seleziona il carattere" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Sfoglia..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "Apri cartella dati..." + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Seleziona un colore" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "Colori del testo" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "Colori di mIRC:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "Colori locali:" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Primo piano:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Sfondo:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "Testo selezionato" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "Colori dell'interfaccia" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "Nuova data:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "Seleziona linea:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "Nuovo messaggio:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "Utente assente:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "Evidenziazione:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "Controllo ortografico:" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "Strip del colore" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Evento" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "File sonoro" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "Seleziona un file sonoro" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "File sonoro:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "_Sfoglia..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "Ri_produci" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Interfaccia" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "Aspetto" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Area di testo" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Elenco utenti" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "Elenco canali" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Colori" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Finestra di chat" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "Suoni" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "Avanzate" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Impostazioni rete" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Trasferimenti di file" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "Identd" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Categorie" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "Impossibile posizionare l'albero in alto o in basso.\nSelezionare prima la vista a <b>Schede</b> nel menù <b>Visualizza</b>." + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "L'opzione del vero nome non può essere vuota. Verrà ripristinato il valore \"realname\"." + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Alcune impostazioni sono state modificate e richiedono il riavvio per essere applicate." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*ATTENZIONE*\nAccettare automaticamente DCC nella propria home\npotrebbe essere pericoloso. Esempio:\nQualcuno potrebbe inserire un file .bash_profile" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "preferenze - %s" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "<i>(nessun suggerimento)</i>" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "Altro..." + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "Aggiungi «%s» al dizionario" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "Ignora tutto" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "Suggerimenti ortografici" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "errore di enchant per la lingua: %s" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "Si è verificato un errore analizzando la stringa" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "A questo segnale vengono passati solo %d argomenti, $%d non è valido" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "Salva in un file di testo" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ Numero" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Modifica eventi" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "Carica da..." + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Prova tutto" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "OK" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "URL collezionati - %s" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Pulisci elenco" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Copia l'URL selezionato" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Copia" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Salva l'elenco in un file" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d op, %d totali" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "Apri un URL irc://server:porta/canale" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "Sysinfo: impossibile ottenere informazioni. Non supportato o errore." + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "Sysinfo: nessuna informazione per quel nome\n" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "Sysinfo: %s è impostato a: %d\n" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "Sysinfo: le impostazioni valide sono: announce e hide_* per ogni parte delle informazioni. Per esempio hide_os. Senza un valore verrà mostrato il contenuto attuale (o predefinito).\n" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "Sysinfo: nome variabile non valido\n" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "Plugin %s attivato\n" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "Plugin %s disattivato\n" diff --git a/hexchat/po/ja_JP.po b/hexchat/po/ja_JP.po new file mode 100644 index 0000000..7160556 --- /dev/null +++ b/hexchat/po/ja_JP.po @@ -0,0 +1,6260 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# k725, 2014 +# Emmanuel Chanel <emmanuelchanel@gmail.com>, 2013-2014 +# Itsuki Toyota <titsuki@cpan.org>, 2020 +# k725, 2014 +# Ooyama Yosiyuki <qqke6wd9k@apricot.ocn.ne.jp>, 2016 +# pabook_32 <inactive+pabook_32@transifex.com>, 2015 +# pabook_32 <inactive+pabook_32@transifex.com>, 2015 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2020-01-03 01:18+0000\n" +"Last-Translator: Itsuki Toyota <titsuki@cpan.org>\n" +"Language-Team: Japanese (Japan) (http://www.transifex.com/hexchat/hexchat/language/ja_JP/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ja_JP\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "HexChat" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "IRCクライアント" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "HexChatは使いやすく、しかも拡張可能なIRCクライアントです。安全に複数のネットワークに参加でき、カスタマイズ可能なインターフェイスを使用してチャネルのユーザーと話すことが可能、さらにファイルを転送することができます。" + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "HexChatは、次の機能をサポートしています: DCC, SASL, プロキシ, スペルチェック, アラート, カスタムテーマ, Python/Perl スクリプト" + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "他の人とオンラインチャットをします" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "セーフモードで開く" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "HexChatテーママネージャー" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "多忙" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "さようなら" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "ネットワーク" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<なし>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "チャンネル" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "待機中" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "アクティブ" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "失敗" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "終了" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "接続" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "中断" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "%s へアクセスできません。\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "エラー" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s が「%s」を提案しています。受け付けますか?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "アクティブな DCC はありません\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "ダイアログウィンドウを開く(_O)" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "ファイルを送信(_S)" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "ユーザー情報(Whois)(_U)" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "フレンドリストに追加(_A)" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "無視(_I)" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "オペレーターアクション(_P)" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "オペレーター権限を与える" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "オペレーター権限を奪う" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "発言権を与える" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "発言権を奪う" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "キック/バン" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "キック" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "バン" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "キックバン" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "チャンネルを離れる" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "チャンネルへ参加..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "参加するチャンネルを入力:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "サーバーリンク" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "ピングサーバー" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "バージョンを隠す" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "オペレーター" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "オペレーター権限剥奪" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "さようなら" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "%s をキックする理由を入力:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "ダイアログ" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "送信" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Chat" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "消去" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "%s へのに書き込み許可がありません。このセッションの何も保存されません。" + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* IRC を root 権限で立ち上げるなんて愚かにも程があります!\n きちんとユーザーアカウント作成してから そのユーザーで\n ログインしなおしてください。\n\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "はい " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "いいえ " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "%s から大量の CTCP が来ました。%s を無視します。\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s オンライン\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s オフライン\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "チャンネルに参加していません。「/join #<チャンネル>」を実行してください。\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "サーバーと接続していません。「/server <ホスト> [<ポート>]」を実行してください。\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "サーバー %s はすでに %s ネットワークに存在しています。\n" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "サーバー %s を %s ネットワークに追加しました。\n" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "すでに離席状態です: %s\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "すでに着席状態です。\n" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "実行には /bin/sh が必要です!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "以下のコマンドが利用できます:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "ユーザー定義コマンド:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "プラグイン定義コマンド:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "詳細は「/HELP <コマンド>」もしくは「/HELP -l」と入力してください。" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "不明な引数 '%s' を無視します。" + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "Quiet 機能はこのサーバーではサポートしていません。" + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "そのようなプラグインはありません。\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "そのプラグインの読み込み解除を拒絶しています。\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <名前> <動作>, ユーザーリストの下にボタンを加える" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <コマンド>, 参加している全チャンネルへコマンドを送信する" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "ALLCHANL <コマンド> 現在のサーバーの全てのチャンネルにコマンドを送ります。" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <コマンド>, 入っている全サーバーにコマンドを送信する" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "Back, 着席状態(離席でない状態)にセットします。" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <マスク> [<禁止タイプ>], 現在のチャンネルから, マスクに一致するニックをバンする. 既にチャンネルに参加しているニックに関しては効果がない (オペレーター権限が必要)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <変数> [<値>]" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "CHARSET [<文字コード>], 現在の接続の文字コードを取得あるいはセットします。" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "" + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <国別コード|ワイルドカード>, 国別コードを表示します。 eg: au = オーストラリア" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <ニック> <メッセージ>, CTCP メッセージを指定のニックへ送信する。メッセージは普通, VERSION や USERINFO を使う" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "CYCLE [<チャンネル>], チャンネルを離席し、即時に再入室します。" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <ニック> - 差し出されたファイルを受け取る\nDCC SEND [-maxcps=#] <ニック> <ファイル> - ファイルを送信する\nDCC PSEND [-maxcps=#] <nick> [file] - パッシブモードでファイルを送信する\nDCC LIST - DCC 一覧を表示する\nDCC CHAT <ニック> - DCC CHAT を申し込む\nDCC PCHAT <ニック> - パッシブモードで DCC CHAT を申し込む\nDCC CLOSE <種類> <ニック> <ファイル> 例:\n /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <ニック>, 現在のチャンネルの指定ニックからハーフオペレーター権限を剥奪する (オペレーター権限が必要)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <ボタン名>, ユーザーリストの下のボタンを削除する" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <ニック>, 現在のチャンネルの指定ニックからオペレーター権限を剥奪する (オペレーター権限が必要)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <ニック>, 現在のチャンネルの指定ニックから, 発言権を削除する (オペレーター権限が必要)" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, サーバーからの接続を切断する" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO テキスト, テキストをローカル上に表示する" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <コマンド>, コマンドを実行する. -o フラグを利用すると出力は現在のチャンネルへ送信する。それ以外は現在のテキスト・ボックスに表示する" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, プロセスに対して SIGCONT を発行する" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9], 現在のプロセスに対してシグナルを発行する。-9 を指定した場合、プロセスは SIGKILL される" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, プロセスに対して SIGSTOP を発行する" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, プロセスの標準入力へデータを送信する" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, 現在サーバーの送信キューをフラッシュする" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <ホスト> [<ポート>], 指定ホストを通したプロキシ。標準ポートは 23" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <ニック> [パスワード], 幽霊化したニックを Kill します。" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <ニック>, 指定のニックにハーフオペレーター権限を与える (オペレーター権限が必要)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <パスワード>, nickserv に自分を確認します" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "/IGNORE <マスク> <種類...> <オプション...>\n マスク - 無視するホスト名のマスク, 例: *!*@*.ne.jp\n 種類 - 無視するデータの種類, 以下の一つもしくは全部:\n PRIV, CHAN, NOTI, CTCP, INVI, ALL\n オプション - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <ニック> [<チャンネル>], 指定のチャンネルへ招待する。標準では現在のチャンネル名 (オペレーター権限が必要)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <チャンネル>, チャンネルに参加する" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, 新規ラグチェックを強制する" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "LASTLOG [-h] [-m] [-r] [--] <文字列>, バッファ中から文字列を検索する。\n -h で、ヒットした文字列にハイライトをつけます。\n -m で大文字・小文字の区別をします。\n -r は正規表現文字列で検索する事を表します。\n -- (ダブル・ハイフン)は、 '-r' オプションで検索文字列の終了を表します。" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <ファイル>, スクリプトかプラグインを読み込む" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, 現在のチャンネルの全員のハーフオペレーター権限を剥奪する (オペレーター権限が必要)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, 現在のチャンネルの全員のオペレーター権限を剥奪する (オペレーター権限が必要)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <行動>, 現在のチャンネルに対して, 指定の ACTION を送信する (行動は 『/me jumps』のように第3者側で書かれる)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "MHOP, 現在のチャンネルの全員にハーフオペレーター権限を与える (オペレーター権限が必要)" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, 現在のチャンネルの自分以外の全員をキックする (オペレーター権限が必要)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, 現在のチャンネルの全員のオペレーター権限を剥奪する (オペレーター権限が必要)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <ニック> <メッセージ>, CTCP NOTICE を送信する" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <ホスト名> [<ポート>]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <ニック>, 自分のニックを設定する" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [-n network1[,network2,...]] [<ニック>], 通知リストを表示したり、通知リストにニックを追加します。" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <ニック>, 指定のニックにオペレーター権限を与える (オペレーター権限が必要)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<チャンネル>] [<理由>], チャンネルを去る。デフォルトでは現在のチャンネル" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <ニック | チャンネル>, ニックかチャンネルへ CTCP PING をかける" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "" + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<理由>], 現在のサーバーから接続を切断する" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <テキスト>, サーバーへ生形式のテキストを送信する" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<ホスト>] [<ポート>] [<パスワード>], /RECONNECTだけで現在のサーバーに接続しなおすこともできるし、/RECONNECT ALLで開いているサーバーすべてに接続しなおすこともできる" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<ホスト>] [<ポート>] [<パスワード>], /RECONNECTだけで現在のサーバーに接続しなおすこともできるし、/RECONNECT ALLで開いているサーバーすべてに接続しなおすこともできる" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <テキスト>, カレントウィンドウのオブジェクトへテキストを送信する" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <ニック> [<ファイル>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <ホスト> <ポート> <チャンネル>, 接続およびチャンネルへ参加する" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <ホスト> <ポート> <チャンネル>, 接続およびチャンネルへ参加する" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "SERVER [-ssl] <ホスト> [<ポート>] [<パスワード>], サーバーに接続します。デフォールトのポートは、通常は 6667 、SSL接続の場合は 6697 です。" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <ホスト> [<ポート>] [<パスワード>], サーバーへ接続する。標準ポート番号は6667" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-off|-on] [-quiet] <変数> [<値>]" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "SETCURSOR [-|+]<position>, カーソルを入力ボックスに合わせます。" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<トピック>], トピックを設定する。引数がなければ現在のトピックを表示する" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <マスク> [<マスク>...], 指定したマスクのBanを解除する" + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <マスク> [QUIET]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <名前> プラグインかスクリプトの読み込みをやめる" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "" + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, ブラウザーで URL を開く" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "USELECT [-a] [-s] <ニック1> <ニック2> など、チャンネルのユーザー一覧のニックをハイライトにします" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <ニック>, 発言権を指定のニックへ与える (オペレーター権限が必要)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <メッセージ>, 全チャンネルへメッセージを送信する" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <メッセージ>, 現在のチャンネルのオペレーター権限保持者全員へメッセージを送信する" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "使い方: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nこのコマンドのヘルプは利用できません.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "そのようなコマンドはありません.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "ユーザーコマンドに対して不正な引数を与えています.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "ユーザーコマンドの再帰が多すぎます。アボートします。" + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "このサーバーとポートが SSL 対応なのは確かですか?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "ホスト名「%s」を解決できません。\nIP 設定を確認してください!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "" + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "" + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%Uチャンネル ユーザー トピック" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "" + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "" + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "" + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "" + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "" + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "" + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "" + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "" + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "" + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "" + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "" + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "%C23*$t$1 ($3%C23) が参加" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "" + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$t通知リストの内容が空です。" + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "" + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "" + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "" + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "" + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** %s でログ記録終了\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** %s からログ記録開始\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "左メッセージ" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "右メッセージ" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "IP アドレス" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "ユーザー名" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "参加したニック" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "参加したチャンネル" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "ニックのホスト" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "個人のアカウント" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "ニックネーム" + +#: src/common/text.c:980 +msgid "The action" +msgstr "アクション" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "モード文字" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "識別テキスト" + +#: src/common/text.c:987 +msgid "The text" +msgstr "テキスト" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "メッセージ" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "サーバー名" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "サーバーの機能" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "要求された機能" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "旧ニックネーム" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "新ニックネーム" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "トピックを変更したニック" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "トピック" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "キックしたニック" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "キックされたニック" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "チャンネル" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "理由" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "離脱したニック" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "時間" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "作成者" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "ニック" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "理由" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "ホスト" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "誰から" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "x.x 形式による時刻 (下参照)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "発行されたチャンネル" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "サウンド" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "ニック" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "CTCP イベント" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "キーワードを設定したニック" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "キーワード" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "制限を設定したニック" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "制限" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "オペレーター権限をもらったニック" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "ハーフオペレーター権限をもらったニック" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "発言権をもらったニック" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "バンされたニック" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "バンマスク" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "キーワードを削除したニック" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "制限を削除したニック" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "オペレーター権限を取られたニック" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "ハーフオペレーター権限を取られたニック" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "発言権を取り上げられたニック" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "免除を行ったニック" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "免除マスク" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "免除を削除したニック" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "招待したニック" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "招待マスク" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "招待マスクを削除したニック" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "モードを設定したニック" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "モードの符号 (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "モード文字" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "チャンネルのモードは" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "フルネーム" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "チャンネル メンバシップ /\"はIRC 管理者\"" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "サーバー情報" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "アイドル時間" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Signon 時間" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "離席理由" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "メッセージ" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "アカウント" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "リアル user@host" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "リアル IP" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "チャンネル名" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "メカニズム" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "テキスト" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "自分を招待したニック" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "ユーザー" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "使用するニック" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "次に試行するニック" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IPアドレス" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "ポート" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "モード文字列" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "DCC タイプ" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "ファイル名" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "目的先ファイル名" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "パス名" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "場所" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "サイズ" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "DCC 文字列" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "離席理由" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "通知アイテム数" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "旧ファイル名" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "新ファイル名" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "受取人" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "ホストマスク" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "ホスト名" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "パケット" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "秒" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "自分を招待したニック" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "バンマスク" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "バンを設定した人" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "バン時間" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "サウンドファイルの読み込みができません:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "リモートホストがソケットを閉じました。" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "接続が拒否されました。" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "ホストへの経路がありません。" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "接続時間アウト" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "そのアドレスは予約できません。" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "peerによって接続がリセットされました。" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "アセンション島" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "アンドラ" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "アラブ首長国連邦" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "アフガニスタン" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "アンティグアバーブーダ" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "アンギラ" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "アルバニア" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "アルメニア" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "蘭領アンティル諸島" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "アンゴラ" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "南極大陸" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "アルゼンチン" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "逆引きDNS" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "米領サモア" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "アジア太平洋地域" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "オーストリア" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "NATO領地" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "オーストラリア" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "アルーバ" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "オーランド諸島" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "アゼルバイジャン" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "ボスニア・ヘルツェゴビナ" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "バルバドス" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "バングラディシュ" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "ベルギー" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "ブルキナファソ" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "ブルガリア" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "バーレーン" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "ブルンジ" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "ビジネス" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "ベニン" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "バミューダ" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "ブルネイ・ダルサラーム国" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "ボリビア" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "ブラジル" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "バハマ" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "ブータン" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "ブーベ島" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "ボツワナ" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "ベラルーシ" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "ベリーズ" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "カナダ" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "カタルーニャ" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "ココス諸島" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "コンゴの民主主義共和国" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "中央アフリカ共和国" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "コンゴ" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "スイス" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "コートジボワール" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "クック諸島" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "チリ" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "カメルーン" + +#: src/common/util.c:738 +msgid "China" +msgstr "中国" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "コロンビア" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "企業" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "協同組合" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "コスタリカ" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "セルビアとモンテネグロ" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "キューバ" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "ケープベルデ" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "クリスマス諸島" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "キプロス" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "チェコ共和国" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "東ドイツ" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "ドイツ" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "ジブチ" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "デンマーク" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "ドミニカ" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "ドミニカ共和国" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "アルジェリア" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "エクアドル" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "学術機関" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "エストニア" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "エジプト" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "西サハラ" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "エリトリア" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "スペイン" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "エチオピア" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "欧州連合" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "フィンランド" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "フィジー" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "フォークランド諸島" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "ミクロネシア" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "フェロー諸島" + +#: src/common/util.c:770 +msgid "France" +msgstr "フランス" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "ガボン" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "イギリス" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "グレナダ" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "ジョージア" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "仏領ギアナ" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "英領チャネル諸島" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "ガーナ" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "ジブラルタル" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "グリーンランド" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "ガンビア" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "ギニア" + +#: src/common/util.c:782 +msgid "Government" +msgstr "政治" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "グアドループ" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "赤道ギニア" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "ギリシャ" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "サウスジョージア・サウスサンドウィッチ諸島" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "グァテマラ" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "グアム" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "ギニアビサウ" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "ギアナ" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "香港" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "ハードマクドナルド諸島" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "ホンジュラス" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "クロアチア" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "ハイチ" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "ハンガリー" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "インドネシア" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "アイルランド" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "イスラエル" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "マン島" + +#: src/common/util.c:801 +msgid "India" +msgstr "インド" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "情報" + +#: src/common/util.c:803 +msgid "International" +msgstr "国際" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "英領インド洋領域" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "イラク" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "イラン" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "アイスランド" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "イタリア" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "ジャージー" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "ジャマイカ" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "ヨルダン" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "仕事関連" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "日本" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "ケニア" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "キルギスタン" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "カンボジア" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "キリバス" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "コモロ" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "セントキッツネビス" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "北朝鮮" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "韓国" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "クエート" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "ケイマン諸島" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "カザフスタン" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "ラオス" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "レバノン" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "セントルシア" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "リヒテンシュタイン" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "スリランカ" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "リベリア" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "レソト" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "リトアニア" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "ルクセンブルク" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "ラトビア" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "リビア" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "モロッコ" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "モナコ" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "モルドバ" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "モンテネグロ" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "合衆国医療機関" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "マダガスカル" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "マーシャル諸島" + +#: src/common/util.c:843 +msgid "Military" +msgstr "軍事" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "マケドニア" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "マリ" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "ミャンマー" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "モンゴル" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "マカオ" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "モバイル端末" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "北マリアナ諸島" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "マルティニク" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "モーリタニア" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "モントセラト" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "マルタ" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "モーリシャス" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "博物館" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "モルジブ" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "マラウィ" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "メキシコ" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "マレーシア" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "モザンビーク" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "ナミビア" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "個人名" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "ニューカレドニア" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "ニジェール" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "ネットワーク" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "ノーフォーク諸島" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "ナイジェリア" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "ニカラグア" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "オランダ" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "ノルウェー" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "ネパール" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "ナウル" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "ニウエ" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "ニュージーランド" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "オマーン" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "非営利組織" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "パナマ" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "ペルー" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "ポリネシア フランス領" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "パプアニューギニア" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "フィリピン" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "パキスタン" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "ポーランド" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "セントピエールおよびミクロン" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "ピトケイン" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "プエルトリコ" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "専門家" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "パレスチナ自治区" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "ポルトガル" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "パラオ" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "パラグアイ" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "カタール" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "レユニオン" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "ルーマニア" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "昔ながらの ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "セルビア" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "ロシア連邦" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "ルワンダ" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "サウジアラビア" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "ソロモン諸島" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "セーシェル" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "スーダン" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "スウェーデン" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "シンガポール" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "セントヘレナ" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "スロベニア" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "スヴァールバルヤンマイエン諸島" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "スロバキア共和国" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "シェラレオネ" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "サンマリノ" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "セネガル" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "ソマリア" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "スリナム" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "南スーダン" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "サオトーメプリンシペ" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "旧ソビエト連邦" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "エルサルバドル" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "シリア" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "スワジランド" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "タークスカイコス諸島" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "チャド" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "インターネットコミュニケーションサービス" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "仏領サザンテリトリー" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "トーゴ" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "タイ" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "タジキスタン" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "トケラウ" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "東チモール" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "トルクメニスタン" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "チュニジア" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "トンガ" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "トルコ" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "旅行" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "トリニダードトバゴ" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "ツバル" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "台湾" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "タンザニア" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "ウクライナ" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "ウガンダ" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "イギリス" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "アメリカ合衆国" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "ウルグアイ" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "ウズベキスタン" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "バチカン市国" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "セントビンセントおよびグレナディーン諸島" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "ベネズエラ" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "英領バージン諸島" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "米バージン諸島" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "ベトナム" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "ヴァヌアトゥ" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "ヴァリスフトゥーナ諸島" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "サモア" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "アダルト娯楽" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "イエメン" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "マヨット" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "旧ユーゴスラビア" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "南アフリカ" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "ザンビア" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "ジンバブエ" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "セッションバスに接続できません" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "コマンドを完了できませんでした" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "リモートアクセス" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "DBUS を用いてリモートアクセスのプラグイン" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "%s の取得に失敗しました: %s\n" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "文字集合" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "バン" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "招待" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "招待" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "接続していません。" + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "いくつかのバンを選ばなければなりません。" + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "種類" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "マスク" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "送り元" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "日付" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "チャンネルタブの間だけバン一覧ウィンドウを開くことができます。" + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "削除" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "更新" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "" + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "出力ファイル名の選択" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "チャンネルへ参加(_J)" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "チャンネル名をコピー(_C)" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "トピックテキストをコピー(_T)" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "検索(_S)" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "ダウンロードリスト(_D)" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "リストを保存(_L)" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "チャンネル名" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "検索タイプ:" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "単純検索" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "パターン・マッチ(ワイルドカード)" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "正規表現" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "検索語:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "%s へ送信するファイル名の選択" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "ファイルはリジュームできません。" + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "ファイルにアクセスできません: %s\n%s.\nおそらく継続できません。" + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "ダウンロード・フォルダーにあるファイルは、提案されているファイルより大きいので、レジューム出来ません。" + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "2 人から同じファイルを再開できません。" + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "状態" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "ファイル" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "残り" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "両方" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "アップロード" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "ダウンロード" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "詳細" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "ファイル:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "アドレス:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "中断" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "許可" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "再開" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "フォルダーを開く..." + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "受取" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "送信" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "開始時間" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "追加" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "削除" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "キャンセル" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "保存" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "自動的にサーバーに再接続しない" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "異なる設定ディレクトリを使う" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "いくつかのプラグインは自動読み込まないa" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "プラグイン/スクリプトの自動ロードディレクトリを表示する" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "ユーザー設定ディレクトリを表示する" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "コマンド実行:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "レベル" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "バージョン情報を表示する" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "フォントを開けません:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "検索バッファが空です。\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d バイト" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "ネットワーク送信キュー: %d バイト" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "バッファへ挿入 コマンドはデータ1の内容を, 入力行中のカーソルの場所へ挿入します。" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "バッファ設定コマンドは, テキスト入力行の内容を, データ1の内容として置き換えます。" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "最後のコマンドはテキスト入力行に, 最後に入力されたコマンド内容を含ませます. シェル上で, コマンドを直接実行するのと同じです。" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "次のコマンドはテキスト入力行に, 次に入力されたコマンド内容を含ませます. シェル上で, コマンドを直接実行するのと同じです。" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "このコマンドは, 入力行中の不完全なニックやコマンドを補完します. データ1が設定されていると, タブキーを2回押した場合に, 次の補完候補でなく, 最後に入力されたニックが補完されます。" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "このコマンドは, ニックリストを上下へスクロールさせます. データ1に何か設定されていれば上へスクロールし, そうでなければ下へスクロールします。" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "このコマンドはフロントタブを一つずつ左に移動します" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "このコマンドはフロントタブを一つずつ右に移動します" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "このコマンドは現在のタブファミリーを左に移動します" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "このコマンドは現在のタブファミリーを右に移動します" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "入力ラインを履歴に記録するが、サーバーには送信しません" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "キーバインド設定にエラーがあります" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "そのファイルには書き込めません。" + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "そのファイルには読み込めません。" + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "そのマスクは既に存在します。" + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "プライベート" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "通知" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "無視解除" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "すべての無視を削除してもよろしいですか?" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "無視するマスクを入力:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "無視状態:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "チャンネル:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "プライベート:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "通知:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "招待:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "追加..." + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "チャンネル名が短すぎます。もう一度試してください。" + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "%s へ接続完了です。" + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "あなたは何を次に行いたいですか?" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "何もしません。後でチャンネルに参加します。(_N)" + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "チャンネルへ参加:" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "参加したいチャンネルの名前を分かっている場合は、ここで入力してください。" + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "" + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "常にこのダイアログを接続後に表示します。(_A)" + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "%s のトピックは: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "トピックを設定していません" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "HexChatを終了しますか?" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "次回以降聞かないでください。" + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "あなたは、%i 個のIRCネットワークに接続されています。" + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "本当に終了してもよろしいですか?" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "いくつかのファイル転送は、まだアクティブになっています。" + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "トレイに最小化(_M)" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "色コードか属性を挿入する" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>強調</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>下線</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "<i>斜体</i>" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "通常" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "色 0 から 7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "色 8 から 15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "設定(_S)" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "ログをディスクに(_L)" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "参加と退出メッセージを隠す(_H)" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "追加の警告(_E)" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "メッセージでビープ音(_M)" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "トレイアイコンを点滅(_I)" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "タスクバーを点滅(_B)" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "デタッチ(_D)" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "閉じる(_C)" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "ユーザー制限は数字でなければなりません!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "フィルター色" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "チャンネル外からのメッセージ禁止" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "トピック保護" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "招待のみ" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "モデレート" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "バン一覧" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "キーワード" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "ユーザー数制限" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "新ニックネームを入力:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "結果が見つかりません。" + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "" + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "すべての出現をハイライトし、現在の出現に下線を引きます。" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "大文字と小文字を区別(_C)" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "大文字と小文字を区別する検索を実行します。" + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "正規表現(_R)" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "正規表現と見なす検索文字列。" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "不明なホスト" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "不明なアカウント" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "不明" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "本名:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "ユーザー:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "アカウント:" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "国:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "サーバー:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "%u 分前" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "最後のメッセージ: %s" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "離席メッセージ:" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "メニューバーは現在非表示です。再表示する場合は Control+F9 を押すか、またはメインテキストエリアの空白部分で右クリックします。" + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "ブラウザーでリンクを開く" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "選択したリンクをコピーする" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "チャンネルへ参加" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "チャンネルを離れる" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "チャンネルをサイクルする" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "自動参加(_A)" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "チャンネルへ自動参加" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "自動接続(_A)" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "マーカー行が無効。" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "ユーザーコマンド - 特殊なコード:\n\n%c = 現在のチャンネル\n%e = 現在のネットワーク名\n%m = マシン情報\n%n = 自分のニック\n%t = 時間/日付\n%v = HexChatのバージョン\n%2 = 単語 2\n%3 = 単語 3\n&2 = 行の末尾にある単語 2\n&3 = 行の末尾にある単語 3\n\n例:\n/cmd john hello\n\n%2 \"john\" になります\n&2 \"john hello\" になります" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "置換" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "He_xChat" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "新規(_N)" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "終了(_Q)" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "閲覧(_V)" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "メニューバー(_M)" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "トピックバー(_T)" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "ユーザーリスト(_U)" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "モードボタン(_O)" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "チャンネル切り替え(_C)" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "タブ(_T)" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "ツリー(_R)" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "ネットワークメーター(_N)" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "オフ" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "グラフ" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "フルスクリーン(_F)" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "サーバー(_S)" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "切断する(_D)" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "再接続する(_R)" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "席を離れる(_A)" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "ユーザーメニュー(_U)" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "設定(_E)" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "設定(_P)..." + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "ウィンドウ(_W)" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "マーカー行をリセット" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "マーカー行に移動" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "選択した部分をコピー(_C)" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "通常テキスト(_L)" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "検索" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "次を検索" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "前を検索" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "ヘルプ(_H)" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "コンテンツ(_C)" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "HexChat について(_A)" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "アタッチ(_A)" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "名前" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "最近の出会い" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "オフライン" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "一度もなし" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "%d 分前" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "1 時間前" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "%d 時間前" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "オンライン" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "新ニックネームを入力:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "これらのネットワークで通知:" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "ダイアログウィンドウを開く" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "ウィンドウを元のサイズに戻す(_R)" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "ウィンドウを隠す(_H)" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "点滅(_B)" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "チャンネルメッセージ" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "プライベートメッセージ" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "ハイライトされたメッセージ" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "ステータスを変更(_C)" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "離席(_A)" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "着席(_B)" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "バージョン" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "詳細" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "読み込むプラグインかスクリプトを選択する" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "ロード...(_L)" + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "アンロード(_U)" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "再読み込み(_R)" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "別名で保存..." + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "生ログをクリア" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "新規ネットワーク" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "本当にネットワーク \"%s\" とそのすべてのサーバーを削除しますか?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "ユーザー名は空にできません。" + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "あなたは2つのユニークなニックネームを持っている必要があります。" + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "サーバー" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "チャンネルへ自動参加" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "接続コマンド" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "キー(パスワード)" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "編集(_E)" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "選択したサーバーのみに接続する" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "起動時にこのネットワークに自動接続する" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "プロキシサーバをバイパス" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "このネットワークのすべてのサーバーへは SSL を使う" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "不正なSSL証明書を受け入れる" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "全体ユーザー情報を使う" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "ニックネーム(_N):" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "2 つ目を選択:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "本名(_L):" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "ユーザー名(_U):" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "ログイン方法:" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "パスワード:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "ログインに使用するパスワード。疑問がある場合は空白のままにします。" + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "文字集合:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "ユーザー情報" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "3 つめを選択:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "ネットワーク" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "起動時にネットワーク一覧を飛ばす" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "お気に入りのみ表示" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "編集...(_E)" + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "ソート(_S)" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "お気に入り(_F)" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "このネットワークのお気に入りマークを付けはずしします。" + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "接続(_O)" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "アフリカーンス語" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "アルバニア" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "ダリー語" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "アストゥリアス語" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "アゼルバイジャン" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "バスク語" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "ベラルーシ" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "ブルガリア" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "中国語(簡体字)" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "中国語(繁体字)" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "チェコ語" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "デンマーク語" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "オランダ語" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "英語(英国)" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "英語" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "ストニア" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "フィンランド語" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "フランス語" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "ガリシア語" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "ドイツ語" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "ギリシャ語" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "グジャラート語" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "ヒンディー語" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "ハンガリー語" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "インドネシア語" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "イタリア語" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "日本語" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "カンナダ語" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "キニヤルワンダ語" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "韓国語" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "ラトビア語" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "リトアニア語" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "マケドニア語" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "マレーシア" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "マラヤーラム語" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "ノルウェー語(ブークモール)" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "ノルウェー語(ニーノシュク)" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "ポーランド語" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "ポルトガル語" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "ブラジルポルトガル語" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "パンジャブ語" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "ロシア語" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "セルビア語" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "スロバキア語" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "スロベニア語" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "スペイン語" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "スウェーデン語" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "タイ" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "トルコ語" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "ウクライナ語" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "ベトナム" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "ワロン語" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "一般" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "言語:" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "メインフォント:" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "フォント:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "テキストボックス" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "ニックに色を付ける" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "IRC の各個人に異なる色を与える" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "ニックをインデントして揃える" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "ニックを右揃えする." + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "マーカーラインを表示" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "最後に読んだテキストの後に赤い線を挿入します。" + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "背景の絵:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "ファイル転送設定" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "詳細はMSDNのstrftimeを参照してください。" + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "詳細はmanページのstrftimeを参照してください。" + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "タイトルバー" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "チャネルモードを表示" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "ユーザーの数を表示" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "昇順" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "入力ボックス" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "ニックボックスを表示" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "ニックボックスにユーザーモードアイコンを表示" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "スペルの確認中" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "辞書を使用:" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "使用している言語のコードは次の場所にあります (\"%LOCALAPPDATA%\\enchant\\myspell\\dicts\")\n複数のエントリはコンマで区切ります。" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "使用している言語コード。複数のエントリはコンマで区切ります。" + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "ニックを補完する" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "ニックの補完接頭語:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "ニック補完の並べ替え:" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "ニックを補完する量:" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "ニック" + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "グラフィカル" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "降順" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "ソートしない" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "上部" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "ボタン" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "隠す" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "ユーザーリスト" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "ユーザーリストのホスト名を表示する" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "テキストボックスに使用するフォントと色" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "ユーザーモードのアイコンを表示する" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "ユーザリスト内のグラフィックアイコンではなく、テキストシンボルを使用してください。" + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "ユーザリストのニックに色" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "チャンネル内のユーザー数を表示" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "ユーザーリストのソート基準:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "ユーザーリストの表示位置:" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "離席を追跡" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "より小さいチャネルの場合:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "ダブルクリックでの動作" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "余分なガジェット" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "遅延メーター" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "ウィンドウ" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "タブ" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "常に" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "要求があったタブのみ" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "自動" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "ツリー" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "切り替えの種類:" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "サーバーからのメッセージは別のタブを開く" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "プライベートメッセージを受信したときに新しいタブを開く" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "アルファベットオーダーでタブをソート" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "チャネルツリー内のアイコンを表示" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "チャネルツリーの点線を表示する" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "タブを変更するには、マウスホイールをスクロール" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "小さいテキスト" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "新規タブにフォーカス:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "チャンネル切り替えの表示位置:" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "指定文字数でタブラベルを縮める:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "文字" + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "タブかウィンドウ" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "チャンネルの開き方:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "ダイアログの開き方:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "ユーティリティの開き方:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "メッセージ" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "スクロール" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "確認を求める" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "ダウンロードフォルダを尋ねる" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "ファイルかディレクトリ" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "定時のファイルを自動的に受理する:" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "ダウンロードしたファイルの保存先:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "移動を完了したファイルの保存先:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "ファイル名にニックを保存" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "自動で DCC ウィンドウを開く" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "送信ウィンドウ" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "受信ウィンドウ" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "チャットウィンドウ" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "ひとつのアップロード" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "ひとつ転送するときの最大速度" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "ひとつダウンロード:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "すべてのアップロードの合計:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "すべてのファイルの最大速度" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "すべてのダウンロードの合計:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "警告" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "トレイアイコンの点滅:" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "タスクバーの点滅:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "ビープ音:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "選択したイベントの際に、GTKのビープ音を再生する" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "離席している時にマークされた場合アラートを省略" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "フォーカスがあるウィンドウの警告を省略します" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "トレイの動作" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "システムトレイアイコンを有効にする" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "トレイに最小化" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "トレイに閉じる" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "" + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "ハイライトされたメッセージ" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "ニックをハイライトしない:" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "ニックを常にハイライトする:" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "複数の単語はカンマで区切ります。\nワイルドカードも使用できます。" + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "デフォルトメッセージ:" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "終了:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "チャンネルを離れる:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "離席:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "離席" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "一度だけ離席を表示" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "同一の離席メッセージは一度だけ表示。" + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "自動離席解除" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "" + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "その他" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "WHOISに関する通知" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "参加と退出メッセージを隠す" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "デフォルトで参加と退出メッセージを隠す" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "ニック変更メッセージを隠す" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "*!*@*.ホスト" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "*!*@ドメイン" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "*!*ユーザー@*.ホスト" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "*!*ユーザー@ドメイン" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "自動コピーの挙動" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "自動的に選択されたテキストをコピーする" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "自動的に色情報を含める" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "本名:" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "代替フォント:" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "コンパクトモードのリストを表示" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "サポートされている場合、サーバーの時間を使用" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "切断時に自動的にサーバーに再接続" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "自動再接続の遅延時間:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "自動参加の遅延時間" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "BANの種類:" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "ログを残す" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "以前のセッションのログを表示" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "スクロール保存行:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "ディスクへのログの書き込みを有効にします" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "ログファイル:" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=サーバー %c=チャンネル %n=ネットワークです。" + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "常にタイムスタンプを挿入" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "ログタイムスタンプのフォーマット:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URL" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "ディスクへのURLのログの書き込みを有効にします" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "URL 取り込みを有効にします" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "取得するURLの最大数:" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(無効)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "自動" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "あなたのアドレス" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "割り当て:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "複数のアドレスを持つコンピューターにのみ適しています。" + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "ファイル転送" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "IRC サーバーから自分の IP アドレスを取得する" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "DCC IP アドレス:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "" + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "" + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "プロキシサーバー" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "ホスト名:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "ポート:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "種類:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "プロキシの使用:" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "プロキシ認証" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "ユーザー名:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "画像ファイル名の選択" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "ダウンロードフォルダーを選択する" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "フォント選択" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "参照..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "データフォルダを開く" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "色選択" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "テキスト色" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "mIRC 色:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "ローカルの色:" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "前景色:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "背景色:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "選択されたテキスト" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "インタフェース色" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "新規データ:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "マーカー行:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "新規メッセージ:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "離席ユーザー:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "ハイライト:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "スペルの確認:" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "色を除去" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "イベント" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "サウンドファイル" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "出力ファイルの選択" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "サウンドファイル:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "参照...(_B)" + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "再生(_P)" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "インタフェース" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "外観" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "入力ボックス" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "ユーザーリスト" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "チャンネル切り替え" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "色" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "チャット" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "サウンド" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "高度な設定" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "ネットワークセットアップ" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "ファイル転送" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "カテゴリ" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "本名オプションを空にすることはできません。 「本名」にフォールバック。" + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "一部の設定を有効にするには再起動が必要です。" + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*警告*\nホーム・ディレクトリへ自動DCC受け取りを有効にする\nことは悪戯される危険があり, 勧められません. 例えば,\n誰からがあなたへ『.bash_profile』ファイルを転送す\nると, 勝手にシェルの設定が上書きされてしまいます。" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "<i>(提案はありません)</i>" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "その他..." + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "辞書に「%s」を追加" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "すべて無視" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "スペル候補" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "文字列解析にエラーがありました." + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "このシグナルは %d 個の引数を通します, $%d 個は不適当です。" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "テキストファイルの表示" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ 番号" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "イベント編集" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "読み込み元..." + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "全てを試行" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "OK" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "リスト消去" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "選択した URL をコピー" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "コピー" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "ファイルにリストを保存" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d 人のオペレーター、合計 %d 人" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "" diff --git a/hexchat/po/kn.po b/hexchat/po/kn.po new file mode 100644 index 0000000..02d0945 --- /dev/null +++ b/hexchat/po/kn.po @@ -0,0 +1,6255 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# shankar <svenkate@redhat.com>, 2010 +# shankar <svenkate@redhat.com>, 2010 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-03 20:10+0000\n" +"Last-Translator: TingPing <tingping@tingping.se>\n" +"Language-Team: Kannada (http://www.transifex.com/hexchat/hexchat/language/kn/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: kn\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "ನಾನು ಕಾರ್ಯನಿರತವಾಗಿದ್ದೇನೆ" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "ಹೊರಹೋಗಲಾಗುತ್ತಿದೆ" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "ಜಾಲಬಂಧ" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<ಏನೂ ಇಲ್ಲ>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "ಚಾನಲ್" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "ಕಾಯಲಾಗುತ್ತಿದೆ" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "ಸಕ್ರಿಯ" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "ವಿಫಲವಾಗಿದೆ" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "ಆಯಿತು" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "ಸಂಪರ್ಕಿತಗೊಂಡಿದೆ" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "ನಿಲ್ಲಿಸಿದೆ" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "%s ಅನ್ನು ನಿಲುಕಿಸಕೊಳ್ಳಲು ಸಾಧ್ಯವಿಲ್ಲ\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "ದೋಷ" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s ರವರು \"%s\" ಅನ್ನು ನೀಡುತ್ತಿದ್ದಾರೆ. ನೀವು ಸ್ವೀಕರಿಸಲು ಬಯಸುತ್ತೀರೆ?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "ಯಾವುದೆ ಸಕ್ರಿಯ DCCಗಳಿಲ್ಲ\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "ಸಂವಾದ ವಿಂಡೊವನ್ನು ತೆರೆ(_O)" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "ಕಡತವನ್ನು ಕಳುಹಿಸು(_S)" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "ಬಳಕೆದಾರ ಮಾಹಿತಿ (WhoIs)(_U)" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "ಗೆಳೆಯರ ಪಟ್ಟಿಗೆ ಸೇರಿಸು(_A)" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "ನಿರ್ವಾಹಕರ ಕ್ರಿಯೆಗಳು(_p)" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Ops ಅನ್ನು ನೀಡಿ" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Ops ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "ಧ್ವನಿಯನ್ನು ನೀಡಿ" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "ಧ್ವನಿಯನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "ಹೊರಗಟ್ಟು/ನಿಶೇಧಿಸು" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "ಹೊರಗಟ್ಟು" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "ನಿಶೇಧಿಸು" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "ಹೊರಗಟ್ಟಿ ನಿಶೇಧಿಸು" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "ಚಾನಲ್‌ನಿಂದ ಹೊರನಡೆಯಿರಿ" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "ಒಂದು ಚಾನಲ್ ಅನ್ನು ಸೇರು..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "ಸೇರಬೇಕಿರುವ ಚಾನಲ್‌ ಅನ್ನು ನಮೂದಿಸಿ:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "ಪರಿಚಾರಕದ ಕೊಂಡಿಗಳು" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "ಪರಿಚಾರಕವನ್ನು ಪಿಂಗ್‌ ಮಾಡು" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "ಆವೃತ್ತಿಯನ್ನು ಅಡಗಿಸು" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Op" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "ಶುಭವಾಗಲಿ" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "%s ಅನ್ನು ಹೊರಗಟ್ಟಲು ಕಾರಣ ಕೊಡಿ:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "ಸಂವಾದ" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "ಕಳುಹಿಸು" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "ಮಾತುಕತೆ" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "ಖಾಲಿಮಾಡಿ" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "ಪಿಂಗ್" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "" + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* IRC ಅನ್ನು ನಿರ್ವಾಹಕರಾಗಿ ಚಲಾಯಿಸುವುದು ಮೂರ್ಖತನ! \n ನೀವು ಒಂದು ಬಳಕೆದಾರ ಖಾತೆಯನ್ನು ರಚಿಸಿ ನಂತರ ಒಳಕ್ಕೆ ಪ್ರವೇಶಿಸಬೇಕು.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "ಹೌದು " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "ಇಲ್ಲ " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "ನಿಮ್ಮತ್ತ %s ಇಂದ CTCP ಹರಿಸುತ್ತಿದ್ದಾರೆ, %s ಅನ್ನು ಆಲಕ್ಷಿಸಲಾಗುತ್ತಿದೆ\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s ಆನ್‌ಲೈನ್\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s ಆಫ್‍ಲೈನ್\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "ಯಾವುದೆ ಚಾನಲ್‌ಗೆ ಸೇರ್ಪಡೆಗೊಂಡಿಲ್ಲ. /join #<channel> ಅನ್ನು ಪ್ರಯತ್ನಿಸಿ ನೋಡಿ\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "ಸಂಪರ್ಕಿತಗೊಂಡಿಲ್ಲ. /server <host> [<port>] ಅನ್ನು ಪ್ರಯತ್ನಿಸಿ ನೋಡಿ\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "ಈಗಾಗಲೆ ಆಚೆ ಹೋಗಿದ್ದಾರೆ ಎಂದು ಗುರುತು ಹಾಕಲಾಗಿದೆ: %s\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "ಮರಳಿಬಂದಿದ್ದಾರೆ ಎಂದು ಈಗಾಗಲೆ ಗುರುತುಹಾಕಲಾಗಿದೆ.\n" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "ಚಲಾಯಿಸಲು ನನಗೆ /bin/sh ನ ಅಗತ್ಯವಿದೆ!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "ಲಭ್ಯವಿರುವ ಆಜ್ಞೆಗಳು:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "ಬಳಕೆದಾರರಿಂದ ಸೂಚಿಸಲಾದ ಆಜ್ಞೆಗಳು:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "ಪ್ಲಗ್‌ಇನ್‌ನಿಂದ ಸೂಚಿಸಲಾದ ಆಜ್ಞೆಗಳು:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ /HELP <command> ಅನ್ನು, ಅಥವ /HELP -l ಅನ್ನು ಪ್ರಯತ್ನಿಸಿ" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "'%s' ಎಂಬ ಆಜ್ಞಾತ ಆಜ್ಞೆಯನ್ನು ಆಲಕ್ಷಿಸಲಾಗಿದೆ." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "" + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "ಅಂತಹ ಯಾವುದೆ ಪ್ಲಗ್‌ಇನ್ ಕಂಡುಬಂದಿಲ್ಲ.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "ಆ ಪ್ಲಗ್‌ಇನ್ ಲೋಡ್ ಆಗಲು ನಿರಾಕರಿಸಿದೆ.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <name> <action>, ಇದು ಬಳಕೆದಾರ ಪಟ್ಟಿಯಲ್ಲಿ ಒಂದು ಗುಂಡಿಯನ್ನು ಸೇರಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <cmd>, ನೀವು ಇರುವ ಎಲ್ಲಾ ಚಾನಲ್‌ಗೂ ಒಂದು ಆಜ್ಞೆಯನ್ನು ಕಳುಹಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <cmd>, ನೀವು ಇರುವ ಎಲ್ಲಾ ಪರಿಚಾರಕಕ್ಕೂ ಒಂದು ಆಜ್ಞೆಯನ್ನು ಕಳುಹಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "BACK, ಮರಳಿದ್ದಾರೆ ಎಂದು ಗುರುತುಹಾಕುತ್ತದೆ (ಆಚೆ ಎಂದಲ್ಲ)" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <mask> [<bantype>], ಮುಸುಕಿಗೆ(ಮಾಸ್ಕ್) ತಾಳೆಯಾಗುವ ಪ್ರಸಕ್ತ ಚಾನಲ್‌ನಲ್ಲಿನ ಎಲ್ಲರನ್ನೂ ನಿರ್ಬಂಧಿಸಲಾಗುತ್ತದೆ. ಅವರು ಈಗಾಗಲೆ ಚಾನಲ್‌ನಲ್ಲಿದ್ದಲ್ಲಿ ಇದು ಅವರನ್ನು ಹೊರಹಾಕುವುದಿಲ್ಲ (chanop ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <variable> [<value>]" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "" + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <code|wildcard>, ಒಂದು ದೇಶದ ಸಂಕೇತವನ್ನು ಹುಡುಕುತ್ತದೆ, ಉದಾ: au = australia" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <nick> <message>, ನಿಗದಿತ ಅಡ್ಡಹೆಸರಿಗೆ CTCP ಸಂದೇಶವನ್ನು ಕಳುಹಿಸುತ್ತದೆ, ಸಾಮಾನ್ಯ ಸಂದೇಶಗಳೆಂದರೆ VERSION ಹಾಗು USERINFO ಆಗಿರುತ್ತದೆ" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "CYCLE [<channel>], ಪ್ರಸಕ್ತ ಅಥವ ಸೂಚಿಸಲಾದ ಚಾನಲ್‌ನಿಂದ ನಿರ್ಗಮಿಸಿ ನಂತರ ತಕ್ಷಣ ಮರಳಿ ಸೇರಿಕೊಳ್ಳಲಾಗುತ್ತದೆ" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <nick> - ಕಳುಹಿಸಲಾದ ಕಡತವನ್ನು ಸ್ವೀಕರಿಸಿ\nDCC SEND [-maxcps=#] <nick> [ಕಡತ] - ನಿಗದಿತ ವ್ಯಕ್ತಿಗೆ ಕಡತವನ್ನು ಕಳುಹಿಸಿ\nDCC PSEND [-maxcps=#] <nick> [ಕಡತ] - ನಿಷ್ಕ್ರಿಯ ಕ್ರಮದಲ್ಲಿ ಒಂದು ಕಡತವನ್ನು ಕಳುಹಿಸಿ\nDCC LIST - DCC ಪಟ್ಟಿಯನ್ನು ತೋರಿಸಿ\nDCC CHAT <nick> - ನಿಗದಿತ ವ್ಯಕ್ತಿಯೊಂದಿಗೆ DCC CHAT ನಡೆಸಿ\nDCC PCHAT <nick> - ನಿಗದಿತ ವ್ಯಕ್ತಿಯೊಂದಿಗೆ ನಿಷ್ಕ್ರಿಯ ಕ್ರಮದಲ್ಲಿ DCC CHAT ನಡೆಸಿ\nDCC CLOSE <type> <nick> <file> ಉದಾಹರಣೆ:\n /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <nick>, ಪ್ರಸಕ್ತ ಚಾನಲ್‌ನಲ್ಲಿ ಅಡ್ಡಹೆಸರಿನಿಂದ chanhalf-op ಸ್ಥಿತಿಯನ್ನು ತೆಗೆದು ಹಾಕುತ್ತದೆ (chanop ನ ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <name>, ಇದು ಬಳಕೆದಾರ ಪಟ್ಟಿಯಲ್ಲಿನ ಒಂದು ಗುಂಡಿಯನ್ನು ಅಳಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <nick>, ಪ್ರಸಕ್ತ ಚಾನಲ್‌ನಲ್ಲಿ ಅಡ್ಡಹೆಸರಿನಿಂದ chanop ಸ್ಥಿತಿಯನ್ನು ತೆಗೆದು ಹಾಕುತ್ತದೆ (chanop ನ ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <nick>, ಪ್ರಸಕ್ತ ಚಾನಲ್‌ನಲ್ಲಿ ಅಡ್ಡಹೆಸರಿನಿಂದ ಧ್ವನಿ ಸ್ಥಿತಿಯನ್ನು ತೆಗೆದು ಹಾಕುತ್ತದೆ (chanop ನ ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, ಪರಿಚಾರಕದಿಂದ ಸಂಪರ್ಕವನ್ನು ಕಡಿದು ಹಾಕುತ್ತದೆ" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <text>, ಪಠ್ಯವನ್ನು ನಿಮಗೆ ಮಾತ್ರ ಕಾಣಿಸುವಂತೆ ಗೋಚರಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <command>, ಆಜ್ಞೆಯನ್ನು ಚಲಾಯಿಸುತ್ತದೆ. -o ಫ್ಲಾಗ್‌ ಅನ್ನು ಬಳಸಲಾಗಿದ್ದರೆ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಪ್ರಸಕ್ತ ಚಾನಲ್‌ಗೆ ಕಳುಹಿಸಲಾಗುತ್ತದೆ, ಇಲ್ಲದೆ ಹೋದಲ್ಲಿ ಪ್ರಸಕ್ತ ಪಠ್ಯ ಚೌಕಕ್ಕೆ ಮುದ್ರಿಸಲಾಗುತ್ತದೆ" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, ಪ್ರಕ್ರಿಯೆ SIGCONT ಅನ್ನು ಕಳುಹಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9], ಚಾಲನೆಯಲ್ಲಿರುವ exec ಅನ್ನು ಅಂತ್ಯಗೊಳಿಸುತ್ತದೆ. -9 ಅನ್ನು ನೀಡಲಾಗಿದ್ದರೆ SIGKILL ಆಗುತ್ತದೆ" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECCONT, ಪ್ರಕ್ರಿಯೆ SIGSTOP ಅನ್ನು ಕಳುಹಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, ಪ್ರಕ್ರಿಯೆಗಳ stdin ಗೆ ದತ್ತಾಂಶವನ್ನು ಕಳುಹಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, ಇದು ಪ್ರಸಕ್ತ ಪರಿಚಾರಕದ ಕಳುಹಿಸುವ ಸರತಿಯನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <host> [<port>], ಒಂದು ಆತಿಥೇಯದ ಮೂಲಕ ಪ್ರಾಕ್ಸಿಗಳು, ಪೂರ್ವನಿಯೋಜಿತ ಸಂಪರ್ಕಸ್ಥಾನವು 23 ಆಗಿರುತ್ತದೆ" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <nick>, ಅಡ್ಡಹೆಸರಿಗೆ chanhalf-op ಸ್ಥಿತಿಯನ್ನು ಒದಗಿಸುತ್ತದೆ (chanop ನ ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <password>, nickserv ನಿಮ್ಮನ್ನು ಗುರುತಿಸುತ್ತದೆ" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <mask> <types..> <options..>\n mask - ಕಡೆಗಣಿಸಬೇಕಿರುವ ಆತಿಥೇಯ ಮುಸುಕು, ಉದಾ: *!*@*.aol.com\n types - ಕಡೆಗಣಿಸಬೇಕಿರುವ ದತ್ತಾಂಶದ ಬಗೆಗಳು, ಇವುಗಳಲ್ಲಿ ಒಂದು ಅಥವ ಎಲ್ಲವೂ:\n PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n options - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <nick> [<channel>], ನಿಗದಿತ ವ್ಯಕ್ತಿಯನ್ನು ಚಾನಲ್‌ಗೆ ಆಮಂತ್ರಿಸುತ್ತದೆ, ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಪ್ರಸಕ್ತ ಚಾನಲ್‌ ಆಗಿರುತ್ತದೆ (chanop ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <channel>, ಚಾನಲ್‌ಗೆ ಸೇರ್ಪಡೆಗೊಳ್ಳುತ್ತದೆ" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, ಹೊಸ ಲ್ಯಾಗ್ ಪರಿಶೀಲನೆಯನ್ನು ಒತ್ತಾಯಿಸುತ್ತದೆ" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <file>, ಪ್ಲಗ್‌ಇನ್ ಅಥವ ಸ್ಕ್ರಿಪ್ಟನ್ನು ಲೋಡ್ ಮಾಡುತ್ತದೆ" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, ಪ್ರಸಕ್ತ ಚಾನಲ್‌ನಲ್ಲಿನ ಎಲ್ಲಾ chanhalf-op ಗಳನ್ನು ಒಟ್ಟಿಗೆ deop ಮಾಡುತ್ತದೆ (chanop ನ ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, ಪ್ರಸಕ್ತ ಚಾನಲ್‌ನಲ್ಲಿನ ಎಲ್ಲಾ chanop ಗಳನ್ನು ಒಟ್ಟಿಗೆ deop ಮಾಡುತ್ತದೆ (chanop ನ ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <action>, ಕ್ರಿಯೆಯನ್ನು ಪ್ರಸಕ್ತ ಚಾನಲ್‌ಗೆ ಕಳುಹಿಸುತ್ತದೆ (ಕ್ರಿಯೆಗಳನ್ನು ಮೂರನೆ ವ್ಯಕ್ತಿ ಹೇಳುವಂತೆ ಬರೆಯಲಾಗುತ್ತದೆ, ಉದಾ., /me jumps)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, ನಿಮ್ಮನ್ನು ಹೊರತು ಪಡಿಸಿ ಎಲ್ಲರನ್ನೂ ಪ್ರಸಕ್ತ ಚಾನಲ್‌ನಿಂದ ಹೊರಹಾಕುತ್ತದೆ (chanop ನ ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, ಚಾನಲ್‌ನಲ್ಲಿನ ಎಲ್ಲಾ ಬಳಕೆದಾರರಿಗೂ ಒಟ್ಟಿಗೆ op ಮಾಡಲಾಗುತ್ತದೆ (chanop ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <nick> <message>, ಒಂದು CTCP ಸೂಚನೆಯನ್ನು ಕಳುಹಿಸುತ್ತದೆ" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <hostname> [<port>]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <nickname>, ನಿಮ್ಮ ಅಡ್ಡಹೆಸರನ್ನು ಹೊಂದಿಸುತ್ತದೆ" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [-n network1[,network2,...]] [<nick>], ನಿಮ್ಮ ಸೂಚನಾ ಪಟ್ಟಿಯನ್ನು ತೋರಿಸುತ್ತದೆ ಅಥವ ಅದಕ್ಕೆ ನಿಶ್ಚಿತ ವ್ಯಕ್ತಿಯನ್ನು ಸೇರಿಸುತ್ತದೆ" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <nick>, ಅಡ್ಡಹೆಸರಿಗೆ chanop ಸ್ಥಿತಿಯನ್ನು ನೀಡುತ್ತದೆ (chanop ನ ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<channel>] [<reason>], ಚಾನಲ್‌ನಿಂದ ಹೊರಹೋಗಲಾಗುತ್ತದೆ, ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಪ್ರಸಕ್ತ ಚಾನಲ್ ಆಗಿರುತ್ತದೆ" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <nick | channel>, ಅಡ್ಡಹೆಸರಿಗೆ ಅಥವ ಚಾನಲ್‌ಗೆ CTCP ಪಿಂಗ್‌ಗಳನ್ನು ಕಳುಹಿಸುತ್ತದೆ" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "" + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<reason>], ಪರಿಚಾರಕದಿಂದ ಸಂಪರ್ಕವನ್ನು ಕಡಿದು ಹಾಕುತ್ತದೆ" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <text>, ಇದು ಪಠ್ಯವನ್ನು ಕಚ್ಛಾ ರೂಪದಲ್ಲಿ ಪರಿಚಾರಕಕ್ಕೆ ಕಳುಹಿಸುತ್ತದೆ" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<host>] [<port>] [<password>], ಪ್ರಸಕ್ತ ಪರಿಚಾರಕದೊಂದಿಗೆ ಮರಳಿ ಸಂಪರ್ಕ ಹೊಂದಲು /RECONNECT ಬಳಸಬಹುದು ಅಥವ ಲಭ್ಯವಿರುವ ಎಲ್ಲಾ ಮುಕ್ತ ಪರಿಚಾರಕಗಳೊಂದಿಗೆ ಸಂಪರ್ಕಸಾಧಿಸಲು /RECONNECT ALL ಅನ್ನು ಬಳಸಬಹುದು" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<host>] [<port>] [<password>], ಪ್ರಸಕ್ತ ಪರಿಚಾರಕದೊಂದಿಗೆ ಮರಳಿ ಸಂಪರ್ಕ ಹೊಂದಲು /RECONNECT ಬಳಸಬಹುದು ಅಥವ ಲಭ್ಯವಿರುವ ಎಲ್ಲಾ ಮುಕ್ತ ಪರಿಚಾರಕಗಳೊಂದಿಗೆ ಸಂಪರ್ಕಸಾಧಿಸಲು /RECONNECT ALL ಅನ್ನು ಬಳಸಬಹುದು" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <text>, ಪ್ರಸಕ್ತ ವಿಂಡೊದಲ್ಲಿ ಪಠ್ಯವನ್ನು ವಸ್ತುವಾಗಿ ಪರಿವರ್ತಿಸುತ್ತದೆ" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <nick> [<file>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <host> <port> <channel>, ಒಂದು ಚಾನಲ್‌ಗೆ ಸಂಪರ್ಕಿತಗಗೊಂಡು ನಂತರ ಸೇರ್ಪಡೆಗೊಳ್ಳುತ್ತದೆ" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <host> <port> <channel>, ಒಂದು ಚಾನಲ್‌ಗೆ ಸಂಪರ್ಕಿತಗಗೊಂಡು ನಂತರ ಸೇರ್ಪಡೆಗೊಳ್ಳುತ್ತದೆ" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <host> [<port>] [<password>], ಒಂದು ಪರಿಚಾರಕಕ್ಕೆ ಸಂಪರ್ಕಿತಗೊಳ್ಳುತ್ತದೆ, ಪೂರ್ವನಿಯೋಜಿತ ಸಂಪರ್ಕಸ್ಥಾನವು 6667 ಆಗಿರುತ್ತದೆ" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<topic>], ಸೂಚಿಸಿದ ವಿಷಯವನ್ನು ಹೊಂದಿಸುತ್ತದೆ, ಅಥವ ಪ್ರಸಕ್ತ ವಿಷಯವನ್ನು ತೋರಿಸುತ್ತದೆ " + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "\nTRAY -f <timeout> <file1> [<file2>] ಎರಡು ಚಿಹ್ನೆಗಳ ನಡುವೆ ಟ್ರೇಯನ್ನು ಮಿನುಗಿಸುತ್ತದೆ.\nTRAY -f <filename> ಟ್ರೇ ಅನ್ನು ಒಂದು ನಿಶ್ಚಿತ ಚಿಹ್ನೆಗೆ ಹೊಂದಿಸುತ್ತದೆ.\nTRAY -i <number> ಒಂದು ಆಂತರಿಕ ಚಿಹ್ನೆಯೊಂದಿಗೆ ಟ್ರೇಯನ್ನು ಮಿನುಗಿಸುತ್ತದೆ.\nTRAY -t <text> ಟ್ರೇಯ ಸಲಹೆಉಪಕರಣವನ್ನು ಹೊಂದಿಸುತ್ತದೆ.\nTRAY -b <title> <text> ಟ್ರೇ ಬಲೂನ್ ಅನ್ನು ಹೊಂದಿಸುತ್ತದೆ." + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <mask> [<mask>...], ಸೂಚಿತ ಮುಸುಕುಗಳ(ಮಾಸ್ಕ್) ನಿಶೇಧವನ್ನು ರದ್ದುಗೊಳಿಸುತ್ತದೆ" + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <mask> [QUIET]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <name>, ಪ್ಲಗ್‌ಇನ್ ಅಥವ ಸ್ಕ್ರಿಪ್ಟನ್ನು ಅನ್‌ಲೋಡ್ ಮಾಡುತ್ತದೆ" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "" + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, ಒಂದು URL ಅನ್ನು ನಿಮ್ಮ ಜಾಲವೀಕ್ಷಕದಲ್ಲಿ ತೆರೆಯುತ್ತದೆ" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "USELECT [-a] [-s] <nick1> <nick2> ಇತರೆ, ಚಾನಲ್‌ನ ಬಳಕೆದಾರಪಟ್ಟಿಯಲ್ಲಿ ಅಡ್ಡಹೆಸರನ್ನು೯(ಗಳನ್ನು) ಹೈಲೈಟ್ ಮಾಡುತ್ತದೆ" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <nick>, ಬೇರೆಯೊಬ್ಬರಿಗೆ ಧ್ವನಿ ಸ್ಥಿತಿಯನ್ನು ಒದಗಿಸುತ್ತದೆ (chanop ನ ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <message>, ಎಲ್ಲಾ ಚಾನಲ್‌ಗಳಲ್ಲಿಯೂ ಸಂದೇಶವನ್ನು ಬರೆಯುತ್ತದೆ" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <message>, ಪ್ರಸಕ್ತ ಚಾನಲ್‌ನಲ್ಲಿನ ಎಲ್ಲಾ chanops ಸಂದೇಶವನ್ನು ಕಳುಹಿಸುತ್ತದೆ" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "ಬಳಕೆ: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nಆ ಆಜ್ಞೆಗೆ ಯಾವುದೆ ನೆರವು ಲಭ್ಯವಿಲ್ಲ.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "ಅಂತಹ ಯಾವುದೇ ಆಜ್ಞೆ ಇಲ್ಲ.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "ಬಳಕೆದಾರ ಆಜ್ಞೆಯಲ್ಲಿ ಸರಿಯಲ್ಲದ ಆರ್ಗುಮೆಂಟ್‌ಗಳು.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "ಬಹಳಷ್ಟು ಪುನರಾವರ್ತಿತ ಬಳಕೆದಾರ ಆಜ್ಞೆಗಳು, ನಿಲ್ಲಿಸಲಾಗುತ್ತಿದೆ." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "ಇದು ಒಂದು SSL ಸಮರ್ಥವಾದ ಪರಿಚಾರಕ ಹಾಗು ಸಂಪರ್ಕಸ್ಥಾನ ಎಂದು ನೀವು ಖಚಿತವೆ?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "%s ಎಂಬ ಆತಿಥೇಯ ಹೆಸರನ್ನು ಪರಿಹರಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ\nನಿಮ್ಮ IP ಸಿದ್ಧತೆಗಳನ್ನು ಪರಿಶೀಲಿಸಿ!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "ಪ್ರಾಕ್ಸಿ ಚಲನೆಯು ವಿಫಲಗೊಂಡಿದೆ.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "%s ನಲ್ಲಿ ಮುಂದಿನ ಪರಿಚಾರಕಕ್ಕೆ ಪ್ರಯತ್ನಿಸಲಾಗುತ್ತದೆ...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "ಎಚ್ಚರಿಕೆ: \"%s\" ಅಕ್ಷರದ ಸೆಟ್‌ ತಿಳಿದಿಲ್ಲ. %s ಎಂಬ ಜಾಲಬಂಧಕ್ಕೆ ಯಾವುದೆ ಮಾತುಕತೆಯನ್ನು ಅನ್ವಯಿಸಲಾಗಿಲ್ಲ." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "" + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "" + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%Uಚಾನಲ್ ಬಳಕೆದಾರರ ವಿಷಯ" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "" + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "" + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "" + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "" + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "" + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "" + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "" + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "" + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "" + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "" + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "" + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "" + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tಸೂಚನಾ ಪಟ್ಟಿ ಖಾಲಿ ಇದೆ." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "" + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "" + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "" + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "" + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "ಇಲ್ಲಿಂದ ದಾಖಲೆಯನ್ನು ಲೋಡ್ ಮಾಡಲಾಗಿದೆ" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** ದಾಖಲೆಯನ್ನು %s ಎಂಬಲ್ಲಿ ಕೊನೆಗೊಳಿಸಲಾಗಿದೆ\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** %s ಯಲ್ಲಿ ದಾಖಲೆಯನ್ನು ಆರಂಭಿಸಲಾಗಿದೆ\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "ಎಡ ಸಂದೇಶ" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "ಬಲ ಸಂದೇಶ" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "IP ವಿಳಾಸ" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "ಬಳಕೆದಾರರ ಹೆಸರು " + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "ಸೇರ್ಪಡೆಗೊಂಡ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "ಸೇರಲಾಗುತ್ತಿರುವ ಚಾನಲ್" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "ವ್ಯಕ್ತಿಯ ಆತಿಥೇಯ ಗಣಕ" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:980 +msgid "The action" +msgstr "ಕ್ರಿಯೆ" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "ಕ್ರಮ char" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "ಗುರುತಿಸಲಾದ ಪಠ್ಯ" + +#: src/common/text.c:987 +msgid "The text" +msgstr "ಪಠ್ಯ" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "ಸಂದೇಶ" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "ಪರಿಚಾರಕದ ಹೆಸರು" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "ಹಳೆಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "ಹೊಸ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "ವಿಷಯವನ್ನು ಬದಲಾಯಿಸಿದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "ವಿಷಯ" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "ಹೊರಗಟ್ಟಿದವರ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "ಹೊರಹಾಕಲಾಗುತ್ತಿರುವ ವ್ಯಕ್ತಿ" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "ಚಾನಲ್" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "ಕಾರಣ" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "ಹೊರಹೋದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "ಸಮಯ" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "ರಚಿಸಿದವರು" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "ಕಾರಣ" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "ಅತಿಥೇಯ" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "ಇದು ಯಾರಿಂದ ಬಂದಿದೆ" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "x.x ವಿನ್ಯಾಸದಲ್ಲಿ ಸಮಯ (ಕೆಳಗೆ ನೋಡಿ)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "ಇದು ಹೋಗಲಿರುವ ಚಾನಲ್" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "ಧ್ವನಿ" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "CTCP ಘಟನೆ" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "ಕೀಲಿಯನ್ನು ಹೊಂದಿಸಿದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "ಕೀಲಿ" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "ಮಿತಿಯನ್ನು ಹೊಂದಿಸಿದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "ಮಿತಿ" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "op ಅನ್ನು ಮಾಡಿದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "ಯಾರಿಗೆ op ಮಾಡಲಾಯಿತೊ ಆ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "ಯಾರಿಗೆ halfop ಮಾಡಲಾಯಿತೊ ಅವರ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "halfop ಅನ್ನು ಮಾಡಿದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "ಯಾರು voice ಮಾಡಿದರೊ ಆ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "ಯಾವ ವ್ಯಕ್ತಿಗೆ ಧ್ವನಿ ನೀಡಲಾದೆಯೋ ಆ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "ನಿಶೇಧಿಸಿದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "ನಿಶೇಧ ಮುಸುಕು(ಮಾಸ್ಕ್)" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "ಕೀಲಿಯನ್ನು ತೆಗೆದು ಹಾಕಲಾಗದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "ಮಿತಿಯನ್ನು ತೆಗೆದು ಹಾಕಿದೆ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "ಯಾರಿಗೆ deop ಮಾಡಲಾಯಿತೊ ಆ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "ಯಾರಿಗೆ dehalfop ಮಾಡಲಾಯಿತೊ ಆ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "devoice ಮಾಡಲ್ಪಟ್ಟ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "ವಿನಾಯಿತಿಯನ್ನು ಹೊಂದಿಸಿದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "ವಿನಾಯಿತಿ ಮುಸುಕು" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "ವಿನಾಯಿತಿಯನ್ನು ತೆಗೆದು ಹಾಕಿದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "ಆಮಂತ್ರಣವನ್ನು ನೀಡಿದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "ಆಮಂತ್ರಣ ಮುಸುಕು" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "ಆಮಂತ್ರಣವನ್ನು ತೆಗೆದು ಹಾಕಿದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "ಕ್ರಮವನ್ನು ಹೊಂದಿಸಿದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "ಕ್ರಮದ ಚಿಹ್ನೆಗಳು (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "ಕ್ರಮದ ಅಕ್ಷರ" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "ಇದನ್ನು ಹೊಂದಿಸಲಾದ ಚಾನಲ್‌" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "ಪೂರ್ಣ ಹೆಸರು" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "ಚಾನಲ್ ಸದಸ್ಯತ್ವ/\"IRC ಕಾರ್ಯನಿರ್ವಾಹಕರಾಗಿದ್ದಾರೆ\"" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "ಪರಿಚಾರಕ(ಸರ್ವರ್‍) ಮಾಹಿತಿ" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "ನಿಶ್ಚಲ ಸಮಯ" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "ಪ್ರವೇಶದ ಸಮಯ" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "ಆಚೆ ಹೋಗಲು ಕಾರಣ" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "ಸಂದೇಶ" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "ಖಾತೆ" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "ನಿಜವಾದ ಬಳಕೆದಾರ@ಆತಿಥೇಯ" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "ನಿಜವಾದ IP" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "ಚಾನಲ್ ಹೆಸರು" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "ಪಠ್ಯ" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "ನಿಮ್ಮನ್ನು ಆಮಂತ್ರಿಸಲಾದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "ಬಳಕೆದಾರರು" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "ಬಳಕೆಯಲ್ಲಿರುವ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "ಪ್ರಯತ್ನಿಸಲಾಗುತ್ತಿರುವ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "ಸಂಪರ್ಕಸ್ಥಾನ" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "ಕ್ರಮಗಳ ವಾಕ್ಯ" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "DCC ಬಗೆ" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "ಕಡತದ ಹೆಸರು" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "ನಿರ್ದೇಶಿತ ಕಡತದ ಹೆಸರು" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "ಮಾರ್ಗದ ಹೆಸರು" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "ಸ್ಥಾನ" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "ಗಾತ್ರ" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "DCC ವಾಕ್ಯ" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "ಸೂಚನಾ ಅಂಶಗಳ ಸಂಖ್ಯೆ" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "ಹಳೆಯ ಕಡತದ ಹೆಸರು" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "ಹೊಸ ಕಡತದ ಹೆಸರು" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "ಸ್ವೀಕರಿಸುವವರು" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "ಅತಿಥೇಯಮುಸುಕು" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "ಆತಿಥೇಯಗಣಕ" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "ಪ್ಯಾಕೆಟ್" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "ಸೆಕೆಂಡುಗಳು" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "ಆಮಂತ್ರಿತಗೊಂಡ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "ನಿಶೇಧಮುಸುಕು" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "ನಿಶೇಧವನ್ನು ವಿಧಿಸಿದವರು" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "ನಿಶೇಧದ ಸಮಯ" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "ಧ್ವನಿ ಕಡತವನ್ನು ಓದಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "ದೂರಸ್ಥ ಅತಿಥೇಯವು ಸಾಕೆಟ್ ಅನ್ನು ಮುಚ್ಚಿದೆ" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "ಸಂಪರ್ಕವನ್ನು ನಿರಾಕರಿಸಲಾಗಿದೆ" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "ಅತಿಥೇಯಕ್ಕೆ ಯಾವುದೆ ಮಾರ್ಗವಿಲ್ಲ" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "ಸಂಪರ್ಕದ ಸಮಯ ಮೀರಿದೆ" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "ಆ ವಿಳಾಸವನ್ನು ನಿಯೋಜಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "ಪೀರ್ ಇಂದ ಸಂಪರ್ಕವನ್ನು ಮರಳಿ ಹೊಂದಿಸಲಾಗಿದೆ" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "ಅಸೆನ್ಶನ್ ದ್ವೀಪ" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "ಅಂಡೋರ" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "ಯುನೈಟೆಡ್ ಅರಬ್ ಎಮಿರೈಟ್ಸ್‍" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "ಅಫ್ಘಾನಿಸ್ಥಾನ್" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "ಆಂಟಿಗುವಾ ಹಾಗು ಬಾರ್ಬುಡ" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "ಆಂಗ್ವಿಲ್ಲಾ" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "ಅಲ್ಬೇನಿಯಾ" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "ಅರ್ಮೇನಿಯಾ" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "ನೆದರ್ಲ್ಯಾಂಡ್ಸ್‍ ಆಂಟಿಲ್ಲಿಸ್" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "ಅಂಗೋಲಾ" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "ಅಂಟಾರ್ಟಿಕಾ" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "ಅರ್ಜೆಂಟಿನಾ" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "ರಿವರ್ಸ್ DNS" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "ಅಮೇರಿಕನ್ ಸಮೋವಾ" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "ಆಸ್ಟ್ರಿಯಾ" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "ನ್ಯಾಟೊ ಫಿಯೆಲ್" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "ಆಸ್ಟ್ರೇಲಿಯಾ" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "ಅರುಬಾ" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "ಅಲಂದ್ ದ್ವೀಪಗಳು" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "ಅಝರ್ಬೈಜಾನ್" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "ಬೋಸ್ನಿಯಾ ಹಾಗು ಹರ್ಝೆಗೋವಿನಾ" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "ಬಾರ್ಬಡೋಸ್" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "ಬಾಂಗ್ಲಾದೇಶ" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "ಬೆಲ್ಜಿಯಮ್" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "ಬರ್ಕಿನಾ ಫಾಸೋ" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "ಬಲ್ಜೇರಿಯಾ" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "ಬಹರೈನ್" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "ಬುರುಂಡಿ" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "ಬಿಸ್‌ನೆಸಸ್" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "ಬೆನಿನ್" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "ಬರ್ಮುಡಾ" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "ಬ್ರೂನೈ ದರುಸೆಲಂ" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "ಬೊಲಿವಿಯಾ" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "ಬ್ರಝಿಲ್" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "ಬಹಮಾಸ್" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "ಭೂತಾನ್" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "ಬೋವೆಟ್ ಐಲ್ಯಾಂಡ್" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "ಬೋಟ್ಸ್‍ವಾನಾ" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "ಬೆಲಾರಸ್" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "ಬೆಲೀಸ್" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "ಕೆನಡ" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "ಕೊಕೊಸ್ ದ್ವೀಪಗಳು" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "ಡೆಮೊಕ್ರಟಿಕ್ ರಿಪಬ್ಲಿಕ್ ಆಫ್ ಕಾಂಗೊ" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "ಮಧ್ಯ ಆಫ್ರಿಕನ್ ರಿಪಬ್ಲಿಕ್" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "ಕಾಂಗೊ" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "ಸ್ವಿಡ್ಜರ್ಲ್ಯಾಂಡ್" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "ಕೋಟ್ ಡೆವಾಯರ್" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "ಕುಕ್ ದ್ವೀಪಗಳು" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "ಚಿಲಿ" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "ಕ್ಯಾಮೆರೂನ್‌" + +#: src/common/util.c:738 +msgid "China" +msgstr "ಚೈನ" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "ಕೊಲಂಬಿಯ" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "ಇಂಟರ್ನಿಕ್ ಕಮರ್ಶಿಯಲ್" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "ಕೋಸ್ಟಾ ರಿಕಾ" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "ಸರ್ಬಿಯ ಹಾಗು ಮಾಂಟೆನಿಗ್ರೊ" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "ಕ್ಯೂಬ" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "ಕೇಪ್ ವರ್ಡ್" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "ಕ್ರಿಸ್‌ಮಸ್ ದ್ವೀಪ" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "ಸೈಪ್ರಸ್" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "ಜೆಕ್ ರಿಪಬ್ಲಿಕ್‌" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "ಜರ್ಮನಿ" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "ಜಿಬೋಟಿ" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "ಡೆನ್ಮಾರ್ಕ್" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "ಡೊಮನಿಕಾ" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "ಡೊಮನಿಕನ್ ರಿಪಬ್ಲಿಕ್‌" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "ಅಲ್ಜೀರಿಯ" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "ಈಕ್ವೆಡಾರ್" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "ಶೈಕ್ಷಣಿಕ ಸಂಸ್ಥೆ" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "ಎಸ್ಟೊನಿಯ" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "ಈಜಿಪ್ಟ್" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "ಪಶ್ಚಿಮ ಸಹಾರ" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "ಎರಿಟ್ರಿಯಾ" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "ಸ್ಪೇನ್" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "ಇತಿಯೋಪಿಯ" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "ಯುರೋಪಿಯನ್ ಒಕ್ಕೂಟ" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "ಫಿನ್‌ಲ್ಯಾಂಡ್" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "ಫಿಜಿ" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "ಫಾಕ್‌ಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳು" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "ಮೈಕ್ರೋನೇಸಿಯ" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "ಫರೊ ದ್ವೀಪಗಳು" + +#: src/common/util.c:770 +msgid "France" +msgstr "ಫ್ರಾನ್ಸ್" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "ಗೆಬೋನ್" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "ಗ್ರೇಟ್ ಬ್ರಿಟನ್" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "ಗ್ರೆನೆಡ" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "ಜಾರ್ಜಿಯ" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "ಫ್ರೆಂಚ್ ಗಿನಿ" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "ಬ್ರಿಟಿಷ್‌ ಚಾನಲ್ ಐಲ್‌ಗಳು" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "ಘಾನ" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "ಜಿಬ್ರಾಲ್ಟರ್" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "ಗ್ರೀನ್‌ಲ್ಯಾಂಡ್‌" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "ಗೇಂಬಿಯ" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "ಗಿನಿ" + +#: src/common/util.c:782 +msgid "Government" +msgstr "ಸರಕಾರಿ" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "ಗ್ವಾಡೆಲೋಪ್" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "ಈಕ್ವೆಟೋರಿಯಲ್ ಗಿನಿ" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "ಗ್ರೀಸ್" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "ಸೈ. ಜಾರ್ಜಿಯ ಹಾಗು ಸೈ. ಸ್ಯಂಡ್‌ವಿಚ್ ಐಲ್‌ಗಳು" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "ಗ್ವಾಟೆಮಾಲ" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "ಗುವಾಮ್" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "ಗಿನಿ-ಬಿಸಾವು" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "ಗಯಾನ" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "ಹಾಂಕ್‌ಕಾಂಗ್" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "ಹರ್ಡ್ ಹಾಗು ಮ್ಯಾಕ್‌ಡೊನಾಲ್ಡ್ ದ್ವೀಪಗಳು" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "ಹೋಂಡುರಾಸ್" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "ಕ್ರೊಯೇಶಿಯ" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "ಹೈತಿ" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "ಹಂಗೆರಿ" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "ಇಂಡೋನೇಶಿಯ" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "ಐರ್ಲ್ಯಾಂಡ್" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "ಇಸ್ರೇಲ್" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "ಐಲ್ ಆಫ್ ಮ್ಯಾನ್" + +#: src/common/util.c:801 +msgid "India" +msgstr "ಭಾರತ" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "ಇನ್‌ಫಾರ್ಮೇಶನಲ್" + +#: src/common/util.c:803 +msgid "International" +msgstr "ಅಂತರಾಷ್ಟ್ರೀಯ" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "ಬ್ರಿಟಿಷ್ ಇಂಡಿಯನ್ ಓಶಿಯನ್ ಟೆರಿಟರಿ" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "ಇರಾಕ್" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "ಇರಾನ್" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "ಐಸ್‌ಲ್ಯಾಂಡ್" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "ಇಟಲಿ" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "ಜರ್ಸಿ" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "ಜಮೈಕಾ" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "ಜೋರ್ಡಾನ್" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "ಜಪಾನ್" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "ಕೀನ್ಯಾ" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "ಕಿರ್ಗಿಸ್ತಾನ್" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "ಕಾಂಬೊಡಿಯ" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "ಕಿರಿಬಾಟಿ" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "ಕೊಮೊರೊಸ್" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "ಸೈಂಟ್ ಕಿಟ್ಸ್ ಹಾಗು ನೆವಿಸ್" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "ಉತ್ತರ ಕೊರಿಯ" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "ದಕ್ಷಿಣ ಕೊರಿಯ" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "ಕುವೈತ್" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "ಕೇಮ್ಯಾನ್ ದ್ವೀಪಗಳು" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "ಕಝಕಿಸ್ತಾನ್" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "ಲಾವೊಸ್" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "ಲೆಬೆನಾನ್" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "ಸೈಂಟ್ ಲೂಸಿಯ" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "ಲೈಕ್ಟಿಸ್ಟೆನ್" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "ಶ್ರೀಲಂಕ" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "ಲಿಬಿರಿಯ" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "ಲೆಸೊತೊ" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "ಲಿತುವಾನಿಯ" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "ಲಕ್ಸೆಂಬರ್ಗ್" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "ಲಾಟ್ವಿಯ" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "ಲಿಬಿಯ" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "ಮೊರೊಕ್ಕೊ" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "ಮೊನ್ಯಾಕೊ" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "ಮಾಲ್ಡೋವ" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "ಯನೈಟೆಡ್ ಸ್ಟೇಟ್ಸ್ ಆಫ್ ಮೆಡಿಕಲ್" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "ಮಡಗಾಸ್ಕರ್" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "ಮಾರ್ಶಲ್ ದ್ವೀಪಗಳು" + +#: src/common/util.c:843 +msgid "Military" +msgstr "ಮಿಲಿಟರಿ" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "ಮೆಸೆಡೋನಿಯ" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "ಮಾಲಿ" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "ಮಿಯನ್ಮಾರ್" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "ಮಂಗೊಲಿಯ" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "ಮಕಾವು" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "ನಾರ್ತರ್ನ್ ಮರಿಯಾನ ದ್ವೀಪಗಳು" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "ಮಾರ್ಟಿನೀಕ್" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "ಮಾರ್ಟೀನಿಯಾ" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "ಮೊಂಟ್ಸೆರಾಟ್" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "ಮಾಲ್ಟಾ" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "ಮಾರಿಶಸ್" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "ಮಾಲ್ಡೀವ್ಸ್" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "ಮಲಾವಿ" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "ಮೆಕ್ಸಿಕೊ" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "ಮಲೇಶಿಯ" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "ಮೊಝಾಂಬಿಕ್" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "ನಮಿಬಿಯ" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "ನ್ಯೂ ಕೆಲಡೋನಿಯ" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "ನೈಜರ್" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "ಇಂಟರ್ನಿಕ್ ನೆಟ್‌ವರ್ಕ್" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "ನಾರ್ಫೋಕ್ ದ್ವೀಪ" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "ನೈಜೀರಿಯ" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "ನಿಕರಾಗುವ" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "ನೆದರ್ಲ್ಯಾಂಡ್ಸ್" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "ನಾರ್ವೆ" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "ನೇಪಾಲ್" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "ನೌರು" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "ನಿಯು" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "ನ್ಯೂಜಿಲ್ಯಾಂಡ್" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "ಒಮನ್" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "ಇಂಟರ್ನಿಕ್ ನಾನ್-ಪ್ರಾಫಿಟ್ ಆರ್ಗನೈಸೇಶನ್" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "ಪನಾಮ" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "ಪೆರು" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "ಫ್ರೆಂಚ್ ಪಾಲಿನೆಸಿಯಾ" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "ಪಪುವಾ ನ್ಯೂ ಗಿನಿ" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "ಫಿಲಿಪೀನ್ಸ್" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "ಪಾಕಿಸ್ತಾನ್" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "ಪೋಲ್ಯಾಂಡ್" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "ಸೈಂಟ್ ಪಿಯರೆ ಹಾಗು ಮಿಕ್ಯೂಲಾನ್" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "ಪಿಟ್‍ಕೈರ್ನ್" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "ಪೂರ್ಟೊ ರಿಕೊ" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "ಪ್ಯಾಲೆಸ್ತೀನಿಯನ್ ಟೆರಿಟರಿ" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "ಪೋರ್ಚುಗಲ್" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "ಪಲಾವು" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "ಪರುಗ್ವೆ" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "ಕತಾರ್" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "ರಿಯೂನಿಯನ್" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "ರೋಮೇನಿಯ" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "ಓಲ್ಡ್ ಸ್ಕೂಲ್ ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "ರಶೀಯನ್ ಫೆಡರೇಶನ್" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "ರುವಾಂಡ" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "ಸೌದಿ ಅರೇಬಿಯಾ" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "ಸೊಲೊಮನ್ ದ್ವೀಪಗಳು" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "ಸಿಶೇಲ್ಸ್" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "ಸುಡಾನ್" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "ಸ್ವೀಡನ್" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "ಸಿಂಗಪೂರ್" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "ಸೈಂಟ್ ಹೆಲೆನಾ" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "ಸ್ಲೋವೆನಿಯಾ" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "ಸ್ವಾಲ್ಬಾರ್ಡ್ ಹಾಗು ಜಾನ್ ಮೇಯನ್ ದ್ವೀಪಗಳು" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "ಸ್ಲೋವಾಕ್ ರಿಪಬ್ಲಿಕ್‌" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "ಸಿಯರಾ ಲಿಯೋನ್" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "ಸ್ಯಾನ್ ಮಾರಿನೊ" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "ಸೆನೆಗಲ್" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "ಸೋಮಾಲಿಯ" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "ಸುರಿನೇಮ್" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "ಸಾವೋ ಟೋಮ್ ಹಾಗು ಪ್ರಿನ್ಸಿಪಿ" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "ಫಾರ್ಮರ್ USSR" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "ಎಲ್‌ ಸಾಲ್ವಾಡಾರ್" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "ಸಿರಿಯ" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "ಸ್ವಾಝಿಲ್ಯಾಂಡ್" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "ಟರ್ಕ್ಸ್‍ ಹಾಗು ಕೈಕೋಸ್ ಐಲ್ಯಾಂಡ್ಸ್‍" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "ಚಾಡ್" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "ಫ್ರೆಂಚ್ ಸದರ್ನ್ ಪ್ರದೇಶಗಳು" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "ಟೊಗೊ" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "ತೈಲ್ಯಾಂಡ್" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "ತಜಿಕ್‌ಸ್ತಾನ್" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "ಟೊಕೆಲಾವ್" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "ಪೂರ್ವ ತಿಮೋರ್" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "ಟರ್ಕಮೆನಿಸ್ತಾನ್" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "ಟುನೀಸಿಯಾ" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "ಟೋಂಗಾ" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "ಟರ್ಕಿ" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "ಟ್ರಿನಿಡಾಡ್ ಹಾಗು ಟೊಬ್ಯಾಗೊ" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "ಟುವಾಲು" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "ತೈವಾನ್" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "ಟಾಂಝಾನಿಯಾ" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "ಉಕ್ರೇನ್" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "ಉಗಾಂಡ" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "ಯುನೈಟೆಡ್ ಕಿಂಗ್‌ಡಮ್" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "ಯನೈಟೆಡ್ ಸ್ಟೇಟ್ಸ್ ಆಫ್ ಅಮೇರಿಕಾ" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "ಉರುಗ್ವೆ" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "ಉಜ್ಬೇಕಿಸ್ತಾನ್" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "ವ್ಯಾಟಿಕನ್ ಸಿಟಿ ಸ್ಟೇಟ್" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "ಸೈಂಟ್ ವಿನ್ಸೆಂಟ್ ಹಾಗು ಗ್ರೆನಾಡೈನ್ಸ್" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "ವೆನಿಝುವಲಾ" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "ಬ್ರಿಟಿಷ್ ವರ್ಜಿನ್ ದ್ವೀಪಗಳು" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "ಯುಎಸ್ ವರ್ಜಿನ್ ಐಲ್ಯಾಂಡ್‌ಗಳು" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "ವಿಯೆಟ್ನಾನ್" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "ವನುವಾತು" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "ವಾಲಿಸ್ ಹಾಗು ಫುಟುನಾ ದ್ವೀಪಗಳು" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "ಸಮೊವಾ" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "ಯೆಮೆನ್" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "ಮೆಯೋಟ್" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "ಯಗೋಸ್ಲಾವಿಯ" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "ಸೌತ್ ಆಫ್ರಿಕಾ" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "ಜಾಂಬಿಯಾ" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "ಜಿಂಬಾಬ್ವೆ" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "ಅಧಿವೇಶನದ ಬಸ್‌ನೊಂದಿಗೆ ಸಂಪರ್ಕ ಸಾಧಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "NameHasOwner ಅನ್ನು ಪೂರ್ಣಗೊಳಿಸುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "ಆಜ್ಞೆಯನ್ನು ಪೂರ್ಣಗೊಳಿಸುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "ದೂರಸ್ಥ ನಿಲುಕಣೆ" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "DBUS ಅನ್ನು ಬಳಸಿಕೊಂಡು ದೂರದಿಂದ ಬಳಸುವ ಸಲುವಾಗಿನ ಪ್ಲಗ್‌ಇನ್" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "ಅಧಿವೇಶನದ ಬಸ್‌ನೊಂದಿಗೆ ಸಂಪರ್ಕ ಸಾಧಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ: %s\n" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "%s ಅನ್ನು ಪಡೆಯಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ: %s\n" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "ಚಿಹ್ನೆಯ ನಕ್ಷೆ" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "ನಿಶೇಧಿಸು" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "ಆಮಂತ್ರಿಸಿ" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "ಸಂಪರ್ಕಿತಗೊಂಡಿಲ್ಲ." + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "ಕೆಲವು ನಿಶೇಧಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡಲೆ ಬೇಕು." + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "ಮುಸುಕು" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "ಇವರಿಂದ" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "ದಿನಾಂಕ" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "ಒಂದು ಚಾನಲ್‌ ಹಾಳೆಯಲ್ಲಿದ್ದಾಗ ಮಾತ್ರ ನೀವು ನಿಶೇಧ ಪಟ್ಟಿಯ ವಿಂಡೊವನ್ನು ತೆರೆಯಬಹುದು." + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "ತೆಗೆದು ಹಾಕಿ" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "ಕತ್ತರಿಸು" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "ಪುನಶ್ಚೇತನಗೊಳಿಸು" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "%d/%d ಬಳಕೆದಾರರನ್ನು ತೋರಿಸಲಾಗುತ್ತಿದೆ(%d/%d ಚಾನಲ್‌ಗಳಲ್ಲಿ)." + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "ಔಟ್‌ಪುಟ್‌ ಕಡತದ ಹೆಸರನ್ನು ಆಯ್ಕೆ ಮಾಡಿ" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "ಚಾನಲ್ ಅನ್ನು ಸೇರು(_J)" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "ಚಾನಲ್‌ನ ಹೆಸರನ್ನು ಕಾಪಿ ಮಾಡು(_C)" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "ವಿಷಯದ ಪಠ್ಯವನ್ನು ಕಾಪಿ ಮಾಡು(_T)" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "ಹುಡುಕು(_S)" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "ಡೌನ್‌ಲೋಡ್‌ ಪಟ್ಟಿ(_D)" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "ಪಟ್ಟಿಯನ್ನು ಉಳಿಸು(_L)..." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "ಇದನ್ನು ಮಾತ್ರ ತೋರಿಸು:" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "ಇದರೊಂದಿಗಿನ ಚಾನಲ್" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "ಗೆ" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "ಬಳಕೆದಾರರು." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "ಇದರಲ್ಲಿ ನೋಡು:" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "ಚಾನಲ್ ಹೆಸರು" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "ಹುಡುಕುವ ಬಗೆ:" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "ಸರಳ ಹುಡುಕಾಟ" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "ನಮೂನೆಯು ತಾಳೆಯಾಗುವಿಕೆ (ವೈಲ್ಡ್ ಕಾರ್ಡುಗಳು)" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "ರೆಗ್ಯುಲರ್ ಎಕ್ಸ್‍ಪ್ರೆಶನ್" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "ಹುಡುಕು:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "%s ಗೆ ಕಡತವನ್ನು ಕಳುಹಿಸು" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "ಆ ಕಡತವನ್ನು ಮರಳಿ ಆರಂಭಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ." + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "ಕಡತವನ್ನು ನಿಲುಕಿಸಿಕೊಳ್ಳಲು ಸಾಧ್ಯವಿಲ್ಲ: %s\n%s.\nಮರಳಿ ಆರಂಭಿಸುವುದು ಸಾಧ್ಯವಿಲ್ಲ." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "ಡೌನ್‌ಲೋಡ್ ಕೋಶದಲ್ಲಿನ ಕಡತದ ಗಾತ್ರವು ನೀಡಲು ಬಯಸಿರುವ ಕಡತಕ್ಕಿಂತ ದೊಡ್ಡದಾಗಿದೆ. ಮರಳಿ ಆರಂಭಿಸುವುದು ಸಾಧ್ಯವಿಲ್ಲ." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "ಒಂದೇ ಕಡತವನ್ನು ಎರಡು ವ್ಯಕ್ತಿಗಳಿಗಾಗಿ ಮರಳಿ ಆರಂಭಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "ಸ್ಥಿತಿ" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "ಕಡತ" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "ಎರಡೂ" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "ಅಪ್‌ಲೋಡ್‌ಗಳು" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "ಡೌನ್‌ಲೋಡ್‌ಗಳು" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "ವಿವರಗಳು" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "ಕಡತ:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "ವಿಳಾಸ:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "ಸ್ಥಗಿತಗೊಳಿಸು" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "ಅಂಗೀಕರಿಸು" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "ಮರಳಿ ಆರಂಭಿಸು" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "ಕಡತಕೋಶವನ್ನು ತೆರೆ..." + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Recv" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "ಕಳುಹಿಸಲಾದ" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "ಆರಂಭಿಸಿದ ಸಮಯ" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "ಅಳಿಸಿಹಾಕಿ" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "ರದ್ದುಗೊಳಿಸಿ" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "ಉಳಿಸಿ" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "ಪರಿಚಾರಕಗಳೊಂದಿಗೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸಂಪರ್ಕ ಸಾಧಿಸಬೇಡ" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "ಒಂದು ಪ್ರತ್ಯೇಕವಾದ ಸಂರಚನಾ ಕೋಶವನ್ನು ಬಳಸು" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "ಯಾವುದೆ ಪ್ಲಗ್‌ಇನ್ ಅನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಲೋಡ್ ಮಾಡಬೇಡ" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "ಬಳಕೆದಾರ ಸಂರಚನಾ ಕೋಶವನ್ನು ತೋರಿಸು" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "ಈ ಆಜ್ಞೆಯನ್ನು ಚಲಾಯಿಸು:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "ಕಿರಿದಾಗಿಸಲಾದುದರಿಂದ ಆರಂಭಿಸು. ಹಂತ 0=ಸಾಮಾನ್ಯ 1=ಚಿಹ್ನೆ ಮಾಡಲಾದ 2=ಟ್ರೇ" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "ಮಟ್ಟ" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "ಆವೃತ್ತಿಯ ಮಾಹಿತಿಯನ್ನು ತೋರಿಸು" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "ಅಕ್ಷರಶೈಲಿಯನ್ನು ತೆರೆಯಲು ವಿಫಲಗೊಂಡಿದೆ:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "ಹುಡುಕು ಬಫರ್ ಖಾಲಿ ಇದೆ.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d ಬೈಟ್‌ಗಳು" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "ಜಾಲಬಂಧ ಕಳುಹಿಸುವ ಸರತಿ: %d ಬೈಟ್‌ಗಳು" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "Insert in Buffer ಆಜ್ಞೆಯು ದತ್ತಾಂಶ 1 ರಲ್ಲಿರುವುದನ್ನು ಪ್ರಸಕ್ತ ತೆರೆಸೂಚಕದ ಸ್ಥಳದಲ್ಲಿ ಒತ್ತಲಾದ ಕೀಲಿ ಅನುಕ್ರಮದ ನಮೂದಿಗೆ ಸೇರಿಸುತ್ತದೆ." + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "Set Buffer ಆಜ್ಞೆಯು ದತ್ತಾಂಶ 1 ಕ್ಕೆ ನಮೂದಿಸಲಾದ ವಿಷಯಕ್ಕೆ ನಮೂದಿಸಲಾದ ಕೀಲಿ ಅನುಕ್ರಮಕ್ಕೆ ನಮೂದನ್ನು ಹೊಂದಿಸುತ್ತದೆ" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "ಕೊನೆಯ ಆಜ್ಞೆ ಆಜ್ಞೆಯು ಕೊನೆಯ ಬಾರಿಗೆ ನಮೂದಿಸಲಾದ ಆಜ್ಞೆಯನ್ನು ನಮೂದಿನಲ್ಲಿ ಇರುವಂತೆ ಹೊಂದಿಸುತ್ತದೆ - ಶೆಲ್‌ನಲ್ಲಿ ಮಾಡುವ ರೀತಿಯಲ್ಲಿಯೆ" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "ಕೊನೆಯ ಆಜ್ಞೆ ಆಜ್ಞೆಯು ಮುಂದಿನ ಆಜ್ಞೆಯನ್ನು ನಮೂದಿನಲ್ಲಿ ಇರುವಂತೆ ಹೊಂದಿಸುತ್ತದೆ - ಶೆಲ್‌ನಲ್ಲಿ ಮಾಡುವ ರೀತಿಯಲ್ಲಿಯೆ" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "ಈ ಆಜ್ಞೆಯು ಅಪೂರ್ಣಗೊಂಡ ಅಡ್ಡಹೆಸರು ಅಥವ ಆಜ್ಞೆಯನ್ನು ಪೂರ್ಣಗೊಳಿಸುವ ನಮೂದಿನ ಪಠ್ಯವನ್ನು ಬದಲಾಯಿಸುತ್ತದೆ. ದತ್ತಾಂಶ 1 ಅನ್ನು ಹೊಂದಿಸಲಾಗಿದ್ದಲ್ಲಿ, ಎರಡು ಬಾರಿ ಟ್ಯಾಬ್ ಅನ್ನು ಒತ್ತುವುದರಿಂದ ಕೊನೆಯ ಬಾರಿಯ ಅಡ್ಡಹೆಸರನ್ನು ಆರಿಸುತ್ತದೆಯೆ ಹೊರತು ಮುಂದಿನದ್ದಲ್ಲ" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "ಈ ಆಜ್ಞೆಯು ಅಡ್ಡಹೆಸರುಗಳ ಪಟ್ಟಿಯಲ್ಲಿ ಮೇಲಕ್ಕೆ ಹಾಗು ಕೆಳಕ್ಕೆ ಚಲಿಸುತ್ತದೆ. ದತ್ತಾಂಶ 1 ನ್ನು ಯಾವುದಕ್ಕಾದರೂ ಹೊಂದಿಸಿದಲ್ಲಿ ಇದು ಮೇಲಕ್ಕೆ ಚಲಿಸುತ್ತದೆ ಇಲ್ಲದೆ ಹೋದಲ್ಲಿ ಕೆಳಕ್ಕೆ ಚಲಿಸುತ್ತದೆ" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "ಈ ಆಜ್ಞೆಯು ಬದಲಾಯಿಸುವ ಪಟ್ಟಿಯಲ್ಲಿನ ನಮೂದಿನಲ್ಲಿ ಕಡೆಯದಾಗಿ ನಮೂದಿಸಲಾದ ಹುಡುಕುತ್ತದೆ ಹಾಗು ತಾಳೆಯಾಗುವುದು ಕಂಡು ಬಂದಲ್ಲಿ ಬದಲಾಯಿಸುತ್ತದೆ" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "ಈ ಆಜ್ಞೆಯು ಎದುರಿನ ಹಾಳೆಯನ್ನು ಎಡಕ್ಕೆ ಒಂದು ಹಂತ ಸ್ಥಳಾಂತರಿಸುತ್ತದೆ" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "ಈ ಆಜ್ಞೆಯು ಎದುರಿನ ಹಾಳೆಯನ್ನು ಬಲಕ್ಕೆ ಒಂದು ಹಂತ ಸ್ಥಳಾಂತರಿಸುತ್ತದೆ" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "ಈ ಆಜ್ಞೆಯು ಪ್ರಸಕ್ತ ಹಾಳೆಯ ಸಂಕುಲವನ್ನು ಎಡಕ್ಕೆ ಒಂದು ಹಂತ ಸ್ಥಳಾಂತರಿಸುತ್ತದೆ" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "ಈ ಆಜ್ಞೆಯು ಪ್ರಸಕ್ತ ಹಾಳೆಯ ಸಂಕುಲವನ್ನು ಬಲಕ್ಕೆ ಒಂದು ಹಂತ ಸ್ಥಳಾಂತರಿಸುತ್ತದೆ" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "ಇನ್‌ಪುಟ್ ಸಾಲನ್ನು ಇತಿಹಾಸಕ್ಕೆ ತಳ್ಳುತ್ತದೆ ಆದರೆ ಪರಿಚಾರಕಕ್ಕೆ ಕಳುಹಿಸುವುದಿಲ್ಲ" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "ಕೀಲಿ ಬೈಂಡಿಂಗ್‌ಗಳ ಸಂರಚನೆಯನ್ನು ಲೋಡ್ ಮಾಡುವಲ್ಲಿ ಒಂದು ದೋಷ ಉಂಟಾಗಿದೆ" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "ಆ ಕಡತಕ್ಕೆ ಬರೆಯಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "ಆ ಕಡತವನ್ನು ಓದಲಾಗಿಲ್ಲ." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "ಆ ಮುಸುಕು ಈಗಾಗಲೇ ಇದೆ." + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "ಖಾಸಗಿ" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "ಸೂಚನೆ" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "ಕಡೆಗಣಿಸಿದ್ದನ್ನು ರದ್ದುಗೊಳಿಸು" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "ಕಡೆಗಣಿಸಲು ಮುಸುಕನ್ನು ನಮೂದಿಸಿ:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "ಕಡೆಗಣಿಸುವ ಅಂಕಿಅಂಶಗಳು:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "ಚಾನಲ್:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "ಖಾಸಗಿ:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "ಸೂಚನೆ:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "ಆಮಂತ್ರಿಸಿ:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "ಸೇರಿಸು..." + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "ಚಾನಲ್ ಹೆಸರು ಬಹಳ ಸಣ್ಣದಾಗಿದೆ, ಇನ್ನೊಮ್ಮೆ ಪ್ರಯತ್ನಿಸಿ." + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "%s ಗಾಗಿನ ಸಂಪರ್ಕವು ಪೂರ್ಣಗೊಂಡಿದೆ." + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "ನೀವು ಇದರ ನಂತರ ಏನು ಮಾಡಲು ಬಯಸುವಿರಿ?" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "ಏನೂ ಇಲ್ಲ, ನಾನು ಆಮೇಲೆ ಚಾನಲ್‌ನಲ್ಲಿ ಸೇರಿಕೊಳ್ಳುತ್ತೇನೆ(_N)." + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "ಚಾನಲ್‌ ಅನ್ನು ಸೇರು(_J):" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "ನೀವು ಸೇರಲು ಬಯಸುವ ಚಾನಲ್‌ನ ಹೆಸರು ತಿಳಿದಿದ್ದಲ್ಲಿ, ಇಲ್ಲಿ ಬರೆಯಿರಿ." + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "" + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "ಯಾವಾಗಲೂ ಸಂಪರ್ಕಿತಗೊಂಡ ನಂತರ ಈ ಸಂವಾದವನ್ನು ತೋರಿಸು(_A)." + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "ಇದರೊಂದಿಗಿನ ಸಂವಾದ" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "%s ಗಾಗಿನ ವಿಷಯ %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "ವಿಷಯವನ್ನು ಗೊತ್ತುಪಡಿಸಿಲ್ಲ" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "ಈ ಪರಿಚಾರಕವು ಇನ್ನೂ ಸಹ %d ಚಾನಲ್‌ಗಳನ್ನು ಅಥವ ಸಂವಾದಗಳನ್ನು ಹೊಂದಿದೆ. ಎಲ್ಲವನ್ನೂ ಮುಚ್ಚಬೇಕೆ?" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "ಮುಂದಿನ ಬಾರಿ ಕೇಳಬೇಡ." + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "ನೀವು %i IRC ಜಾಲಬಂಧಗಳೊಂದಿಗೆ ಸಂಪರ್ಕಿತಗೊಂಡಿದ್ದೀರಿ." + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "ನೀವು ಖಚಿತಾವಾಗಿಯೂ ನಿರ್ಗಮಿಸಲು ಬಯಸುತ್ತೀರೆ?" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "ಕೆಲವು ಕಡತ ವರ್ಗಾವಣೆಗಳು ಇನ್ನೂ ಸಹ ಸಕ್ರಿಯವಾಗಿದೆ." + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "ಟ್ರೇಗೆ ಕಿರಿದಾಗಿಸು(_M)" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "ವೈಶಿಷ್ಟ್ಯವನ್ನು ಅಥವ ಬಣ್ಣದ ಸಂಕೇತವನ್ನು ಸೇರಿಸು" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>ಬೋಲ್ಡ್</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>ಅಡಿಗೆರೆ ಎಳೆ</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "ಸಾಮಾನ್ಯ" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "ಬಣ್ಣಗಳು 0-7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "ಬಣ್ಣಗಳು 8-15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "ಸಿದ್ಧತೆಗಳು(_S)" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "ಡಿಸ್ಕಿಗೆ ದಾಖಲಿಸು(_L)" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "ಸ್ಕ್ರಾಲ್‌ಬ್ಯಾಕನ್ನು ಮರಳಿ ಲೋಡ್ ಮಾಡು(_R)" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "ಸೇರ್ಪಡೆಗೊಂಡ/ಹೊರಕ್ಕೆ ತೆರಳಿದ ಸಂದೇಶಗಳನ್ನು ಅಡಗಿಸು(_H)" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "ಹೆಚ್ಚುವರಿ ಎಚ್ಚರಿಕೆಗಳು(_E)" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "ಸಂದೇಶ ಬಂದಾಗ ಬೀಪ್ ಮಾಡು(_M)" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "ಟ್ರೇ ಚಿಹ್ನೆಯನ್ನು ಮಿನುಗಿಸು(_I)" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "ಕಾರ್ಯ ಪಟ್ಟಿಯನ್ನು ಮಿನುಗಿಸು(_B)" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "ಕಳಚು(_D)" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "ಮುಚ್ಚು(_C)" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "ಬಳಕೆದಾರರ ಮಿತಿಯು ಒಂದು ಸಂಖ್ಯೆಯಾಗಿರಬೇಕು!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "ಯಾವುದೆ ಹೊರಗಿನ ಸಂದೇಶಗಳಿಲ್ಲ" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "ವಿಷಯದ ಸಂರಕ್ಷಣೆ" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "ಆಮಂತ್ರಣದ ಮೇರೆಗೆ ಮಾತ್ರ" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "ನಿರ್ಣಯಿಸಲಾದ" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "ನಿಷೇಧಪಟ್ಟಿ" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "ಕೀಲಿಪದ" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "ಬಳಕೆದಾರ ಮಿತಿ" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "ಹೊಸ ಅಡ್ಡಹೆಸರನ್ನು ಸೇರಿಸಿ:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "" + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "" + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "" + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "ಅಜ್ಞಾತ ಆತಿಥೇಯ" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "ಗೊತ್ತಿಲ್ಲದ" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "ನಿಜವಾದ ಹೆಸರು:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "ಬಳಕೆದಾರ:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "ದೇಶ:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "ಪರಿಚಾರಕ(ಸರ್ವರ್‍):" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "%u ನಿಮಿಷಗಳ ಹಿಂದೆ" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "ಕಡೆಯ ಸಂದೇಶ:" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "ಆಚೆ ಹೋಗಲಾದಾಗಿನ ಸಂದೇಶ:" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "%d ಅಡ್ಡಹೆಸರುಗಳನ್ನು ಆರಿಸಲಾಗಿದೆ." + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "ಕೊಂಡಿಯನ್ನ್ನು ವೀಕ್ಷಕದಲ್ಲಿ ತೆರೆ" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "ಆಯ್ಕೆ ಮಾಡಲಾದ ಸಂಪರ್ಕಕೊಂಡಿಯನ್ನು ಕಾಪಿ ಮಾಡಿ" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "ಒಂದು ಚಾನಲ್ ಅನ್ನು ಸೇರು" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "ಚಾನಲ್‌ನಿಂದ ಹೊರಹೋಗು" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "ಚಾನಲ್‌ನಲ್ಲಿ ಆವರ್ತನಗೊಳಿಸು" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "CTCP ಪ್ರತ್ಯುತ್ತರಗಳು - ವಿಶೇಷ ಸಂಕೇತಗಳು:\n\n%d = ದತ್ತಾಂಶ (ಸಂಪೂರ್ಣ ctcp)\n%e = ಪ್ರಸಕ್ತ ಜಾಲಬಂಧದ ಹೆಸರು\n%m = ಗಣಕದ ಹೆಸರು\n%s = ctcp ಅನ್ನು ಕಳುಹಿಸಿದವರ ಅಡ್ಡಹೆಸರು\n%t = ಸಮಯ/ದಿನಾಂಕ\n%2 = ಪದ 2\n%3 = ಪದ 3\n&2 = ಪದ 2 ರಿಂದ ಸಾಲಿನ ಕೊನೆಯವರೆಗೆ\n&3 = ಪದ 3 ರಿಂದ ಸಾಲಿನ ಕೊನೆಯವರೆಗೆ\n\n" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "ಇದರೊಂದಿಗೆ ಬದಲಿಸು" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "ಹೊಸ(_N)" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "ಹೊರನಡೆ(_Q)" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "ನೋಟ(_V)" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "ಮೆನು ಪಟ್ಟಿ(_M)" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "ವಿಷಯದ ಪಟ್ಟಿ(_T)" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "ಬಳಕೆದಾರರ ಪಟ್ಟಿ(_U)" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "ಕ್ರಮದ ಗುಂಡಿಗಳು(_o)" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "ಚಾನಲ್ ಬದಲಾವಣೆಗಾರ(_C)" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "ಹಾಳೆಗಳು(_T)" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "ವೃಕ್ಷ(_r)" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "ಜಾಲಬಂಧ ಮೀಟರುಗಳು(_N)" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "ಆಫ್" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "ನಕ್ಷೆ(ಗ್ರಾಫ್)" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "ಪರಿಚಾರಕ(ಸರ್ವರ್‍)(_S) " + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "ಸಂಪರ್ಕ ಕಡಿದುಹಾಕು(_D)" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "ಮರಳಿ ಸಂಪರ್ಕಸಾಧಿಸು(_R)" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "ಬಳಕೆದಾರ ಮೆನು(_U)" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "ಸಿದ್ಧತೆಗಳು(_e)" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "ಆದ್ಯತೆಗಳು(_P)" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "ವಿಂಡೊ(_W)" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "ಗುರುತಿನ ಗೆರೆಯನ್ನು ಮರಳಿ ಹೊಂದಿಸು" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "ಪಠ್ಯವನ್ನು ಅಳಿಸು(_l)" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "ನೆರವು(_H)" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "ವಿಷಯಗಳು(_C)" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "ಇದರ ಬಗ್ಗೆ(_A)" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "ಲಗತ್ತಿಸು(_A)" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "ಹೆಸರು" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "ಕೊನೆಯ ಬಾರಿಗೆ ಕಂಡಿದ್ದು" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "ಆಫ್‍ಲೈನ್" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "ಎಂದಿಗೂ ಇಲ್ಲ" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "%d ನಿಮಿಷಗಳ ಹಿಂದೆ" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "ಆನ್‍ಲೈನ್" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "ಸೇರಿಸಲು ಅಡ್ಡಹೆಸರುಗಳನ್ನು ನಮೂದಿಸಿ:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "ಈ ಜಾಲಬಂಧಗಳಲ್ಲಿ ಸೂಚಿಸಿ:" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "ವಿರಾಮಚಿಹ್ನೆಗಳಿಂದ ಬೇರ್ಪಡಿಸಲಾದ ಅಂಗೀಕರಿಸಲಾದ ಜಾಲಬಂಧಗಳ ಪಟ್ಟಿ." + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "ಸಂವಾದಚೌಕವನ್ನು ತೆರೆ" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "ಮಿನುಗಿಸು(_B)" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "ಚಾನಲ್ ಸಂದೇಶ" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "ಖಾಸಗಿ ಸಂದೇಶ" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "ಹೈಲೈಟ್ ಮಾಡಲಾದ ಸಂದೇಶ" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "ಸ್ಥಿತಿಯನ್ನು ಬದಲಾಯಿಸು(_C)" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "ಆಚೆ ಹೋಗಲಾಗಿದೆ(_A)" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "ಹಿಂದೆ(_B)" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "ಆವೃತ್ತಿ" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "ವಿವರಣೆ" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "ಅನುಸ್ಥಾಪಿಸಲು ಪ್ಲಗ್‌ಇನ್ ಅಥವ ಸ್ಕ್ರಿಪ್ಟನ್ನು ಆಯ್ಕೆ ಮಾಡಿ" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "ಲೋಡ್‌ ಮಾಡು(_L)..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "ಹೀಗೆ ಉಳಿಸು..." + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "ಹೊಸ ಜಾಲಬಂಧ" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "ಜಾಲಬಂಧ \"%s\" ಹಾಗು ಅದರ ಎಲ್ಲಾ ಪರಿಚಾರಕಗಳನ್ನು ನಿಜವಾಗಿಯೂ ತೆಗೆದುಹಾಕಬೇಕೆ?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "ಕೀಲಿ(ಗುಪ್ತಪದ)" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "ಸಂಪಾದನೆ(_E)" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "ಆಯ್ದ ಪರಿಚಾರಕದೊಂದಿಗೆ(ಸರ್ವರ್‍) ಮಾತ್ರ ಸಂಪರ್ಕ ಜೋಡಿಸು" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "ಸಂಪರ್ಕವು ವಿಫಲಗೊಂಡಲ್ಲಿ ಎಲ್ಲಾ ಪರಿಚಾರಕದಾದ್ಯಂತ ಆವರ್ತನಗೊಳಿಸಬೇಡ. " + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "ಪ್ರಾಕ್ಸಿ ಪರಿಚಾರಕವನ್ನು ಬೈಪಾಸ್ ಮಾಡು" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "ಈ ಜಾಲಬಂಧದಲ್ಲಿರುವ ಎಲ್ಲಾ ಪರಿಚಾರಕಗಳಿಗಾಗಿಯೂ SSL ಅನ್ನು ಬಳಸು" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "ಜಾಗತಿಕ ಬಳಕೆದಾರ ಮಾಹಿತಿಯನ್ನು ಬಳಸು" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "ಅಡ್ಡ ಹೆಸರು(_N):" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "ಎರಡನೆಯ ಆಯ್ಕೆ:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "ನಿಜವಾದ ಹೆಸರು(_l):" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "ಬಳಕೆದಾರ ಹೆಸರು(_U):" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "ಗುಪ್ತಪದ:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "ಚಿಹ್ನೆಯ ನಕ್ಷೆ:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "ಬಳಕೆದಾರ ಮಾಹಿತಿ" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "ಮೂರನೆ ಆಯ್ಕೆ:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "ಜಾಲಬಂಧಗಳು" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "ಆರಂಭಿಸುವಾಗ ಜಾಲಬಂಧ ಪಟ್ಟಿಯನ್ನು ಬಿಟ್ಟುಬಿಡು" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "ಸಂಪಾದನೆ (_E)..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "ವಿಂಗಡಣೆ(_S)" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "ಸಂಪರ್ಕ ಕಲ್ಪಿಸು (_o)" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "ಅಲ್ಬೇನಿಯಾ" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "ಅಝರ್ಬೈಜಾನ್" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "ಬೆಲಾರಸ್" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "ಬಲ್ಜೇರಿಯಾ" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "ಎಸ್ಟೊನಿಯ" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "ಭಾರತ" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "ಮಲೇಶಿಯ" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "ತೈಲ್ಯಾಂಡ್" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "ವಿಯೆಟ್ನಾನ್" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "ಸಾಮಾನ್ಯ" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "ಅಕ್ಷರಶೈಲಿ:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "ಬಣ್ಣಯುಕ್ತ ಅಡ್ಡಹೆಸರುಗಳು" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "IRC ಯಲ್ಲಿನ ಪ್ರತಿಯೊಬ್ಬರಿಗೂ ಪ್ರತ್ಯೇಕ ಬಣ್ಣವನ್ನು ನೀಡು" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "ಅಡ್ಡಹೆಸರುಗಳನ್ನು ಇಂಡೆಂಟ್ ಮಾಡು" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "ಅಡ್ಡಹೆಸರುಗಳನ್ನು ಬಲಕ್ಕೆ ಜೋಡಿಸಿ ಇರಿಸು" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "ಗುರುತಿನ ಗೆರೆಯನ್ನು ತೋರಿಸು" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "ಕೊನೆಯ ಬಾರಿಗೆ ಓದಲಾದ ಪಠ್ಯದ ಕೆಳಗೆ ಕೆಂಪು ಗೆರೆಯನ್ನು ಎಳೆ." + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "ಹಿನ್ನಲೆ ಚಿತ್ರ:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "ಪಾರದರ್ಶಕತೆಯ ಸಿದ್ಧತೆಗಳು" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "" + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "" + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "ಕೊನೆಯದಾಗಿ ಮಾತನಾಡಿದ ಕ್ರಮ" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "ಕಾಗುಣಿತ ಪರೀಕ್ಷೆ" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "ಅಡ್ಡಹೆಸರಿನ ಪೂರ್ಣಗೊಳಿಕೆ" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "ಅಡ್ಡಹೆಸರು ಪೂರ್ಣಗೊಳಿಕೆಯ ಸಂಜ್ಞೆ:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "ಅಡ್ಡಹೆಸರಿನ ಪೂರ್ಣಗೊಳಿಕೆಯ ವಿಂಗಡಣೆ:" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "" + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "ವಿಂಗಡಿಸದೆ ಇರುವ" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "ಮೇಲೆ" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "ಕೆಳಗೆ" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "ಅಡಗಿಸಲಾದ" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "ಬಳಕೆದಾರರ ಪಟ್ಟಿ" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "ಬಳಕೆದಾರರ ಪಟ್ಟಿಯಲ್ಲಿ ಆತಿಥೇಯ ಹೆಸರುಗಳನ್ನು ತೋರಿಸು" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "ಪಠ್ಯ ಚೌಕದ ಅಕ್ಷರಗಳು ಹಾಗು ಬಣ್ಣಗಳನ್ನು ಬಳಸು" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "ಇದರ ಆಧಾರದಲ್ಲಿ ವಿಭಜಿಸಲಾದ ಬಳಕೆದಾರ ಪಟ್ಟಿ:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "ಇಲ್ಲಿರುವ ಬಳಕೆದಾರರ ಪಟ್ಟಿಯನ್ನು ತೋರಿಸು:" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "ಇದಕ್ಕಿಂತ ಚಿಕ್ಕದಾದ ಚಾನಲ್‌ಗಳಲ್ಲಿ:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "ಎರಡು ಬಾರಿ ಕ್ಲಿಕ್ ಮಾಡಿದಾಗಿನ ಕ್ರಿಯೆ" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "ವಿಂಡೊಗಳು" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "ಹಾಳೆಗಳು" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "ಯಾವಾಗಲೂ" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "ಮನವಿ ಸಲ್ಲಿಸಲಾದ ಹಾಳೆಗಳು ಮಾತ್ರ" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "ವೃಕ್ಷ" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "ಸ್ವಿಚರ್ ಬಗೆ:" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "ಪರಿಚಾರಕ ಸಂದೇಶಗಳಿಗಾಗಿ ಒಂದು ಹೊಸ ಹಾಳೆಯನ್ನು ತೆರೆ" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "ಖಾಸಗಿ ಸಂದೇಶವು ಬಂದಾಗ ಒಂದು ಹೊಸ ಹಾಳೆಯನ್ನು ತೆರೆ" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "ಹಾಳೆಗಳನ್ನು ವರ್ಣಮಾಲೆ ಅಕ್ಷರದ ಆಧಾರದಲ್ಲಿ ವಿಂಗಡಿಸಿ" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "ಸಣ್ಣ ಅಕ್ಷರಗಳು" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "ಹೊಸ ಹಾಳೆಗಳತ್ತ ಗಮನ ಹರಿಸು:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "ಇಲ್ಲಿ ಚಾನಲ್ ಬದಲಾವಣೆಗಾರನನ್ನು ತೋರಿಸು:" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "ಹಾಳೆಯ ಲೇಬಲ್‌ ಅನ್ನು ಇಷ್ಟು ಚಿಕ್ಕದಾಗಿಸಿ" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "ಅಕ್ಷರಗಳು." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "ಹಾಳೆಗಳು ಹಾಗು ವಿಂಡೊಗಳು" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "ಚಾನಲ್‌ಗಳನ್ನು ಇದರಲ್ಲಿ ತೆರೆ:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "ಸಂವಾದ ಚೌಕಗಳನ್ನು ಇದರಲ್ಲಿ ತೆರೆ:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "ಸವಲತ್ತುಗಳನ್ನು ಇದರಲ್ಲಿ ತೆರೆ:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "DCC, ಕಡೆಗಣಿಸು, ಸೂಚಿಸು ಇತ್ಯಾದಿಗಳನ್ನು ಹೊಸ ಹಾಳೆಗಳಲ್ಲಿ ಅಥವ ವಿಂಡೊಗಳಲ್ಲಿ ತೆರೆಯಬೇಕೆ?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "ಕಡತಗಳು ಹಾಗು ಕೋಶಗಳು" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "ಕಡತವನ್ನು ನೀಡಿದಾಗ ತಾನಾಗಿಯೆ ಒಪ್ಪಿಕೊ:" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "ಕಡತಗಳನ್ನು ಇಲ್ಲಿಗೆ ಡೌನ್‌ಲೋಡ್ ಮಾಡು:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "ಪೂರ್ಣಗೊಂಡ ಕಡತಗಳನ್ನು ಇಲ್ಲಿಗೆ ಸ್ಥಳಾಂತರಿಸು:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "ಅಡ್ಡಹೆಸರನ್ನು ಕಡತದ ಹೆಸರುಗಳಲ್ಲಿ ಉಳಿಸಿಕೊ" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "DCC ವಿಂಡೊಗಳನ್ನು ತಾನಾಗಿಯೆ ತೆರೆ" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "ಕಳುಹಿಸುವ ವಿಂಡೊ" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "ಸ್ವೀಕರಿಸುವ ವಿಂಡೊ" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "ಮಾತುಕತೆಯ ವಿಂಡೊ" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "ಒಂದು ಅಪ್‌ಲೋಡ್:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "ಒಂದು ವರ್ಗಾವಣೆಗಾಗಿನ ಗರಿಷ್ಟ ವೇಗ" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "ಒಂದು ಡೌನ್‌ಲೋಡ್:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "ಎಲ್ಲಾ ಅಪ್‌ಲೋಡ್‌ಗಳೂ ಸೇರಿ:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "ಎಲ್ಲಾ ಕಡತಗಳುಗಾಗಿನ ಗರಿಷ್ಟ ವೇಗ" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "ಎಲ್ಲಾ ಡೌನ್‌ಲೋಡ್‌ಗಳನ್ನು ಒಟ್ಟಿಗೆ ಸೇರಿಸಿ:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "ಎಚ್ಚರಿಕೆಗಳು" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "ಈ ಸಮಯದಲ್ಲಿ ಟ್ರೇ ಚಿಹ್ನೆಯನ್ನು ಮಿನುಗಿಸು:" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "ಈ ಸಮಯದಲ್ಲಿ ಕಾರ್ಯಪಟ್ಟಿಯನ್ನು ಮಿನುಗಿಸು:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "ಈ ಸಮಯದಲ್ಲಿ ಬೀಪ್ ಸದ್ದೊಂದನ್ನು ಮಾಡು:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "ವ್ಯವಸ್ಥೆಯ ಟ್ರೇ ಚಿಹ್ನೆಯನ್ನು ಶಕ್ತಗೊಳಿಸು" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "" + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "ಹೈಲೈಟ್ ಮಾಡಲಾದ ಸಂದೇಶಗಳು" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "ಹೈಲೈಟ್ ಮಾಡಲಾದ ಸಂದೇಶಗಳು ನಿಮ್ಮ ಅಡ್ಡಹೆಸರನ್ನು ಉಲ್ಲೇಖಿಸಲಾದವುಗಳಾಗಿರುತ್ತವೆ, ಅದರ ಜೊತೆಗೆ:" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "ಹೈಲೈಟ್ ಮಾಡಲು ಹೆಚ್ಚುವರಿ ಪದಗಳು:" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "ಹೈಲೈಟ್ ಮಾಡಬೇಕಿರುವ ಅಡ್ಡಹೆಸರುಗಳು:" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "ಯಾವಾಗಲೂ ಹೈಲೈಟ್ ಮಾಡಬೇಕಿರುವ ಅಡ್ಡಹೆಸರುಗಳು:" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "ಅನೇಕ ಪದಗಳನ್ನು ವಿರಾಮ ಚಿಹ್ನೆಗಳ ಮೂಲಕ ಪ್ರತ್ಯೇಕಿಸಿ.\nವೈಲ್ಡ್‌ಕಾರ್ಡುಗಳಿಗೆ ಬೆಂಬಲವಿರುತ್ತದೆ." + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "ಪೂರ್ವನಿಯೋಜಿತ ಸಂದೇಶಗಳು" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "ಹೊರನಡೆ:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "ಚಾನಲ್‌ನಿಂದ ಹೊರನಡೆಯಿರಿ:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "ಆಚೆ ಹೋಗಲಾಗಿದೆ:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "ಆಚೆ ಹೋಗಲಾಗಿದೆ" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "ಒಮ್ಮೆ ಮಾತ್ರ ಆಚೆಹೋದುದನ್ನು ತೋರಿಸು" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಆಚೆ ಹೋದುದನ್ನು ತೆಗೆದು ಹಾಕಿ" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "" + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "MODEಗಳನ್ನು ಕಚ್ಛಾ ರೂಪದಲ್ಲಿ ತೋರಿಸು" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "ಸೇರ್ಪಡೆಗೊಂಡ/ಹೊರಕ್ಕೆ ತೆರಳುವ ಸಂದೇಶಗಳನ್ನು ಅಡಗಿಸು" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸಂಪರ್ಕಿತಗೊಳ್ಳುವುದರಲ್ಲಿನ ವಿಳಂಬ:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "ದಾಖಲಾತಿ" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "ಹಿಂದಿನ ಅಧಿವೇಶನದಿಂದ ಸ್ಕ್ರಾಲ್‌ಬ್ಯಾಕನ್ನು ತೋರಿಸು" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "ಸ್ಕ್ರಾಲ್‌ಬ್ಯಾಕ್‌ ಸಾಲುಗಳು:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "ಸಂಭಾಷಣೆಗಳನ್ನು ಡಿಸ್ಕಿಗೆ ಬರೆಯುವುದನ್ನು ಶಕ್ತಗೊಳಿಸು" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "ದಾಖಲೆ ಕಡತದ ಹೆಸರು:" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=ಪರಿಚಾರಕ %c=ಚಾನಲ್ %n=ಜಾಲಬಂಧ." + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "ಸಮಯಮುದ್ರೆಗಳನ್ನು ದಾಖಲೆಗಳಲ್ಲಿ ಸೇರಿಸು" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "ಸಮಯಮುದ್ರೆ ಸ್ವರೂಪವನ್ನು ದಾಖಲಿಸು:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URL" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(ಅಶಕ್ತಗೊಳಿಸಲಾದ)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "ನಿಮ್ಮ ವಿಳಾಸ" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "ಇದಕ್ಕೆ ಬೈಂಡ್ ಮಾಡು:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "ಅನೇಕ ವಿಳಾಸವನ್ನು ಹೊಂದಿರುವ ಗಣಕಗಳಲ್ಲಿ ಮಾತ್ರ ಸಹಾಯಕವಾಗುತ್ತದೆ." + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "IRC ಪರಿಚಾರಕದಿಂದ ನನ್ನ ವಿಳಾಸವನ್ನು ಪಡೆದುಕೊ" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "IRC ಪರಿಚಾರಕವನ್ನು ನಿಜವಾದ ವಿಳಾಸಕ್ಕಾಗಿ ಕೇಳುತ್ತದೆ. ನಿಮ್ಮಲ್ಲಿ 192.168.*.* ವಿಳಾಸವಿದ್ದಲ್ಲಿ ಇದನ್ನು ಬಳಸಿ!" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "DCC IP ವಿಳಾಸ:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "ಕಡತಗಳನ್ನು ನೀಡುತ್ತಿರುವಾಗ ನೀವು ಈ ವಿಳಾಸದಲ್ಲಿ ಇದ್ದೀರೆಂದು ತಿಳಿಸಿ" + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "!Lಸಂಪೂರ್ಣ ವ್ಯಾಪ್ತಿಗಾಗಿ ಸೊನ್ನೆಯಲ್ಲಿಯೆ ಉಳಿಸಿ." + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "ಪ್ರಾಕ್ಸಿ ಪರಿಚಾರಕ" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "ಆತಿಥೇಯಗಣಕ:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "ಸಂಪರ್ಕಸ್ಥಾನ:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "ಬಗೆ:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "ಇದಕ್ಕಾಗಿ ಪ್ರಾಕ್ಸಿ ಬಳಸಿ:" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "ಪ್ರಾಕ್ಸಿ ದೃಢೀಕರಣ" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "ಬಳಕೆದಾರ ಹೆಸರು:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "ಒಂದು ಚಿತ್ರವನ್ನು ಆಯ್ದುಕೊಳ್ಳಿ" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "ಡೌನ್‌ಲೋಡ್ ಕಡತಕೋಶವನ್ನು ಆಯ್ಕೆ ಮಾಡಿ" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "ಅಕ್ಷರ ಶೈಲಿಯನ್ನು ಆಯ್ದುಕೊಳ್ಳಿ" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "ವೀಕ್ಷಿಸು..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "ದತ್ತಾಂಶವನ್ನು ಹೊಂದಿರುವ ಕಡತಕೋಶವನ್ನು ತೆರೆ" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "ಬಣ್ಣವನ್ನು ಆಯ್ಕೆಮಾಡಿ" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "ಪಠ್ಯ ಬಣ್ಣಗಳು" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "mIRC ಬಣ್ಣಗಳು:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "ಸ್ಥಳೀಯ ಬಣ್ಣಗಳು:" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "ಮುನ್ನೆಲೆ:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "ಹಿನ್ನಲೆ:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "ಸಂಪರ್ಕಸಾಧನದ ಬಣ್ಣಗಳು" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "ಹೊಸ ದತ್ತಾಂಶ:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "ಗುರುತಿನ ಗೆರೆ:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "ಹೊಸ ಸಂದೇಶ" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "ಆಚೆ ಹೋದ ಬಳಕೆದಾರ:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "ಹೈಲೈಟ್:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "ಘಟನೆ" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "ಧ್ವನಿ ಕಡತ" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "ಧ್ವನಿ ಕಡತವನ್ನು ಆಯ್ದುಕೊಳ್ಳಿ" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "ಧ್ವನಿ ಕಡತ:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "ಜಾಲವೀಕ್ಷಣೆ(_B)..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "ಚಲಾಯಿಸು(_P)" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "ಸಂಪರ್ಕಸಾಧನ" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "ಇನ್‌ಪುಟ್ ಚೌಕ" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "ಬಳಕೆದಾರರ ಪಟ್ಟಿ" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "ಚಾನಲ್ ಬದಲಾವಣೆಗಾರ" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "ಬಣ್ಣಗಳು" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "ಮಾತುಕತೆ" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "ಸುಧಾರಿತ" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "ಜಾಲಬಂಧ ಸಿದ್ಧತೆ" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "ಕಡತ ವರ್ಗಾವಣೆಗಳು" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "ಪಂಗಡಗಳು" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "ವೃಕ್ಷವನ್ನು ನೀವು ಮೇಲೆ ಅಥವ ಕೆಳಗೆ ಇರಿಸುವಂತಿಲ್ಲ!\nದಯವಿಟ್ಟು ಮೊದಲು <b>ನೋಟ</b>ದ ಮೆನುವಿನಲ್ಲಿ <b>ಹಾಳೆಗಳ</b> ವಿನ್ಯಾಸಕ್ಕೆ ಬದಲಾಯಿಸಿ." + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "" + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "ಮಾಡಲಾದ ಕೆಲವು ಬದಲಾವಣೆಗಳು ಸಂಪೂರ್ಣವಾಗಿ ಕಾರ್ಯರೂಪಕ್ಕೆ ಬರಲು ಮರಳಿ ಆರಂಭಿಸುವ ಅಗತ್ಯವಿರುತ್ತದೆ." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*ಎಚ್ಚರಿಕೆ*\nDCC ಅನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗು ನಿಮ್ಮ ನೆಲೆ ಕೋಶಕ್ಕೆ ಒಪ್ಪಿಕೊಳ್ಳುವುದು\nಅಪಾಯಕಾರಿ ಹಾಗು ಮೋಸದ ಬಳಕೆಗೆ ಕಾರಣವಾಗಬಹುದು. ಉದಾ:\nಯಾರಾದರೂ ನಿಮಗೆ ಒಂದು .bash_profile ಅನ್ನು ಕಳುಹಿಸಬಹುದು" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "" + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "ವಾಕ್ಯಾಂಶವನ್ನು ಪಾರ್ಸ್ ಮಾಡುವಲ್ಲಿ ದೋಷ ಉಂಟಾಗಿದೆ" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "ಈ ಸಂಜ್ಞೆಯು ಕೇವಲ %d args ಅನ್ನು ರವಾನಿಸಿದೆ, $%d ಅಮಾನ್ಯವಾಗಿದೆ" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "ಪಠ್ಯ ಕಡತವನ್ನು ಮುದ್ರಿಸು" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ ಸಂಖ್ಯೆ" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "ಘಟನೆಗಳನ್ನು ಸಂಪಾದಿಸು" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "ಇದರಿಂದ ಲೋಡ್ ಮಾಡು..." + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "ಎಲ್ಲವನ್ನೂ ಪರೀಕ್ಷಿಸಿ" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "ಪಟ್ಟಿಯನ್ನು ಅಳಿಸಿ ಹಾಕಿ" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "ಆಯ್ಕೆ ಮಾಡಲಾದ URL ಅನ್ನು ಕಾಪಿ ಮಾಡಿ" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "ಕಾಪಿ ಮಾಡು" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "ಪಟ್ಟಿಯನ್ನು ಕಡತಕ್ಕೆ ಉಳಿಸಿ" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d ops, %d ಒಟ್ಟು" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "ಒಂದು irc://server:port/channel URL ಅನ್ನು ತೆರೆ" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "" diff --git a/hexchat/po/ko.po b/hexchat/po/ko.po new file mode 100644 index 0000000..6a74b84 --- /dev/null +++ b/hexchat/po/ko.po @@ -0,0 +1,6257 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Seong-ho Cho <darkcircle.0426@gmail.com>, 2014 +# Intrainos, 2016 +# Intrainos, 2016 +# Seong-ho Cho <darkcircle.0426@gmail.com>, 2014,2016-2017,2019 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2019-04-02 01:54+0000\n" +"Last-Translator: Seong-ho Cho <darkcircle.0426@gmail.com>\n" +"Language-Team: Korean (http://www.transifex.com/hexchat/hexchat/language/ko/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ko\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "헥스채트" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "IRC 클라이언트" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "헥스채트는 사용하기 쉽고 확장성이 뛰어난 IRC 클라이언트 입니다. 여러 네트워크에 안전하게 참여할 수 있으며, 여러분이 직접 유연하게 꾸밀 수 있는 인터페이스를 사용하여 다른 사람과 개인적으로 대화하거나 대화방에서 대화할 수 있습니다. 게다가 파일도 보낼 수 있습니다." + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "핵스채트는 DCC, SASL, 프록시 서버, 철자 검사, 경고, 기록, 사용자 정의 테마, 파이썬/펄 스크립트 같은 기능을 지원합니다." + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "주 대화 창" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "온라인에 있는 여러 사람과 대화합니다" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "IM;인스턴트 메신저;Chat;대화;" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "hexchat" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "공개 안전 모드" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "핵스채트 테마 관리자" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "바빠요~" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "전 이만 갑니다." + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "끔" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "켬" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "{설정 안 함}" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "네트워크" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<없음>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "대화방" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "대기 중" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "활성" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "실패" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "확인" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "연결" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "중지됨" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "%s에 접근할 수 없습니다.\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "오류" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s님이 \"%s\"(을)를 전송합니다. 수락하시겠습니까?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "DCC가 활성화되지 않았습니다\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "귓속말 창 열기(_O)" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "파일 전송(_S)" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "사용자 정보(WhoIs)(_U)" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "친구 목록에 추가(_A)" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "무시(_I)" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "관리자 명령(_P)" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "관리 권한 주기" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "관리 권한 박탈" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "발언권 주기" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "발언권 뺏기" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "퇴장/입장 금지" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "퇴장" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "입장 금지" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "퇴장 후 입장 금지" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "대화방 나가기" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "대화방 입장..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "입장할 대화방을 입력하십시오:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "서버 연결" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "서버에 핑" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "버전 숨기기" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "관리 권한" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "관리권 뺏기" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "안녕" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "%s님을 강제로 퇴장시키는 이유:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "파일 보내기" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "귓속말" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "사용자 정보" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "보내기" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "대화" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "지우기" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "핑" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "%s에 쓰기 권한이 없습니다. 이 세션에서 저장할 수 없습니다." + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* IRC를 루트 계정으로 실행했습니다!!\n 새로운 사용자 계정을 만든후 로그인하여 실행하십시오.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "예 " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "아니요 " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "%s님에게서 너무 많은 CTCP 요청을 받고 있으므로 %s님을 무시합니다.\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "%s에서 과도한 양의 메시지가 오고 있습니다. gui_autoopen_dialog를 OFF로 설정하십시오.\n" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "%s(으)로 해석했습니다" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "없음" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "해석 결과:" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "%s 찾는중..." + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s 연결됨\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s 종료함\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "입장한 대화방이 없습니다. \"/join #대화방이름\"으로 대화방에 입장하세요.\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "연결하지 못했습니다. \"/server <서버 주소> [<포트>]\"명령으로 연결하세요.\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "%s 네트워크에 이미 %s 서버가 있습니다.\n" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "%s 네트워크에 %s 서버를 추가했습니다.\n" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "이미 자리 비움으로 설정함: %s\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "이미 돌아옴으로 설정함.\n" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "실행하려면 /bin/sh가 필요합니다!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "사용 가능한 명령:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "사용자 정의 명령:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "추가 기능 정의 명령:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "/HELP <명령>, 또는 /HELP -l 명령을 치면 더 많은 정보를 볼 수 있습니다." + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "'%s' 인자는 알 수 없으므로 무시합니다." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "이 서버에서 발언권 박탈 기능을 지원하지 않습니다." + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "추가 기능을 찾을 수 없습니다.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "해당 추가 기능을 제거했습니다.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <버튼이름> <동작>, 사용자 목록에 버튼을 추가합니다" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "ADDSERVER <새네트워크> <새서버주소/6667>, 네트워크 목록에 새 서버주소와 새 네트워크를 추가합니다" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <명령>, 입장한 모든 대화방에 명령을 수행합니다" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "ALLCHANL <명령>, 현재 서버의 모든 채널에 명령을 전달합니다" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <명령>. 연결 중인 모든 서버에서 명령을 수행합니다" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "AWAY [<reason>], 명령은 자리비움을 설정합니다(설정을 해제하려면 /BACK 명령 사용)" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "BACK, 돌아옴으로 설정(자리 비우지 않음)" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <마스크> [<입장금지형식>], 현재 대화방에서 해당되는 마스크에 속한 모든 사람을 대화방에 입장하지 못하게 합니다. 이미 대화방에 있는 참여자는 강제 퇴장되지 않습니다(관리 권한 필요)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <변수> [<값>]" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "CHARSET [<인코딩>], 현재 연결에 사용할 인코딩 설정을 가져오거나 설정합니다" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "CLEAR [ALL|HISTORY|[-]<개수>], 현재 텍스트 창 또는 명령 기록을 지웁니다" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "CLOSE [-m], 열린 탭이 하나만 있을 경우 창을 닫거나, \"-m\" 플래그로 모든 요청문을 닫는 식으로 현재 탭을 닫습니다." + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <코드|와일드카드>, 국가 코드를 찾습니다. 예: au = 오스트레일리아" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <대화명> <메시지>, CTCP 메시지를 해당 사용자에게 보냅니다. 널리 쓰이는 메시지는 VERSION과 USERINFO입니다" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "CYCLE [<대화방>], 현재 대화방 또는 주어진 대화방을 나갔다가 바로 다시 들어옵니다" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <대화명> - 해당 사용자에게 파일 받기를 시도합니다\nDCC SEND [-maxcps=#] <대화명> [파일] - 해당 사용자에게 파일을 전송합니다\nDCC PSEND [-maxcps=#] <대화명> [파일] - 해당 사용자에게 파일을 Passive 모드로 전송합니다\nDCC LIST - DCC 목록을 표시합니다\nDCC CHAT <대화명> - 해당 사용자와 1:1 대화를 시도합니다\nDCC PCHAT <대화명> - 해당 사용자와 1:1 대화를 Passive 모드로 시도합니다\nDCC CLOSE <명령> <대화명> <파일> 예제:\n /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <대화명>, 현재 대화방에서 제한된 관리 권한을 박탈합니다(관리 권한 필요)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <버튼이름>, 사용자 목록에서 버튼을 지웁니다" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <대화명>, 현재 대화방에서 관리 권한을 박탈합니다(관리 권한 필요)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <대화명>, 현재 대화방에서 해당 사용자의 발언권을 박탈합니다(관리 권한 필요)" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, 서버와 연결을 끊습니다" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "DNS <대화명|호스트|IP>, IP 또는 호스트 이름을 해석합니다" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "DOAT <channel,list,/network> <command>" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <텍스트>, 텍스트를 대화창에 출력합니다" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <명령>, 명령을 실행합니다. 만약 -o 인자를 사용하면 현재 대화방에 결과를 출력하고, 그렇지 않다면 자신에게만 보여줍니다" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, 프로세스 SIGCONT를 보냅니다" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9], 현재 실행 중인 세션을 종료시킵니다. 만약 -9가 주어진다면 프로세스는 SIGKILL을 받아 강제 종료됩니다" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, 프로세스 SIGSTOP을 보냅니다" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, 프로세스의 표준 입력으로 데이터를 보냅니다" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "EXPORTCONF, 헥스채트 설정을 내보냅니다" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, 현재 서버에 보낼 목록을 제거합니다" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <호스트> [<포트>], 해당 호스트를 프록시로 사용합니다. 포트의 기본값은 23입니다." + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <대화명> [암호], 유령처럼 남은 대화명의 사용자를 죽입니다" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <대화명>, 해당 사용자에게 제한된 관리 권한을 부여합니다(관리 권한 필요)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <암호>, 자신을 NickServ에 인증합니다" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <마스크> <형식..> <추가 인자..>\n 마스크 - 무시할 호스트 마스크, 예: *!*@*.aol.com\n 형식 - 무시할 형식, 사용가능한 값:\n PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n 추가 인자 - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <대화명> [<대화방>], 누군가를 대화방에 초대합니다. 대화방의 기본값은 현재 대화방 입니다(관리 권한 필요)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <대화방> [<암호>], 대화방에 입장합니다" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "KICK <대화명> [이유], 현재 대화방에서 대화명을 가진 사용자를 강제 퇴장시킵니다(관리 권한 필요)" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "KICKBAN <대화명> [이유], 현재 대화방에서 대화명을 가진 사용자를 입장 금지한 후 강제 퇴장시킵니다(관리 권한 필요)" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, 강제로 새로운 랙을 확인합니다" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "LASTLOG [-h] [-m] [-r] [--] <문자열>, 버퍼의 문자열을 검색합니다\n -h: 찾은 문자열을 강조합니다\n -m: 대소문자을 일치시킵니다\n -r: 문자열이 정규표현식일 경우입니다\n --: 문자열 '-r'의 검색 옵션을 끝내려면 사용합니다" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <파일>, 추가 기능 또는 스크립트를 불러옵니다" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, 현재 대화방에서 모든 관리자의 권한을 박탈합니다(관리 권한 필요)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, 현재 대화방에서 모든 관리자의 권한을 박탈합니다(관리 권한 필요)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <동작>, 현재 대화방에서 동작을 취합니다(동작은 3자에게 사용합니다. 예: /me 후다다닭==33)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "MOP, 현재 대화방의 모든 사용자에게 일부 관리 권한을 부여합니다(관리 권한 필요)" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, 현재 대화방에서 모든 사람을 강제 퇴장시킵니다.(관리 권한 필요)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, 현재 대화방의 모든 사용자에게 관리 권한을 부여합니다(관리 권한 필요)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "MSG <대화명> <메시지>, 귓속말 메시지를 보냅니다. 메시지를 보내려면 대화명 마지막에 메시지 \".\"을 붙이든지, DCC 대화를 하려면 \"=\"를 메시지 앞에 붙이십시오" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "NAMES [대화방], 대화방의 대화명 목록을 조회합니다" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <대화명> <메시지>, CTCP 알림 메시지를 보냅니다" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <호스트이름> [<포트>]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <대화명>, 대화명을 설정하거나 변경합니다" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "NOTICE <대화명/대화방> <메시지>, 알림을 보냅니다" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [-n 네트워크1[,네트워크2,...]] [<대화명>], 알림 목록을 표시하거나 목록에 대화명을 추가합니다" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <대화명>, 해당 사용자에게 대화방 관리 권한을 부여합니다(관리 권한 필요)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<대화방>] [<이유>], 대화방을 나갑니다. 대화방의 기본값은 현재 대화방입니다" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <대화명 | 대화방>, 사용자나 대화방에 CTCP 핑을 보냅니다" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "QUERY [-nofocus] <대화명> [메시지], 새 귓속말 창을 열고 추가적으로 메시지를 보냅니다" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "QUIET <마스크> [<발언권박탈형식>], 서버에서 지원하는 경우 현재 대화방에서 조건에 일치하는 모두의 발언권을 박탈합니다." + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<이유>], 서버와 연결을 종료합니다" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <텍스트>, 서버에 원시 메시지를 보냅니다" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<호스트>] [<포트>] [<암호>], 그냥 /RECONNECT는 현재 서버를 다시 연결하고, /RECONNECT ALL을 사용하면 연결되어 있는 모든 서버에 다시 연결합니다" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<호스트>] [<포트>] [<암호>], 그냥 /RECONNECT는 현재 서버를 다시 연결하고, /RECONNECT ALL을 사용하면 연결되어 있는 모든 서버에 다시 연결합니다" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "RECV <텍스트>, IRC 서버의 데이터와 같은 원시 데이터를 헥스채트에 보냅니다" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "RELOAD <이름>, 플러그인 또는 스크립트를 다시 불러옵니다" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <텍스트>, 현재 창의 객체에 텍스트를 보냅니다" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <대화명> [<파일>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <호스트> <포트> <대화방>, 연결 후, 대화방에 자동 입장하거나 대화방을 개설합니다" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <호스트> <포트> <대화방>, 연결 후, 대화방에 자동 입장하거나 대화방을 개설합니다" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "SERVER [-ssl] <호스트> [<포트>] [<암호>], 서버에 연결합니다. 기본 포트는 일반 연결시 6667이며, ssl 연결시 6697입니다" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <호스트> [<포트>] [<암호>], 서버에 연결합니다. 일반 연결용 포트는 6667입니다" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-off|-on] [-quiet] <변수> [<값>]" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "SETCURSOR [-|+]<위치>, 입력 창의 커서 위치를 다시 정합니다" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "SETTAB <새이름>, 탭 이름을 바꿉니다. tab_trunc 제한값이 적용됩니다" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "SETTEXT <새텍스트>, 입력 창의 텍스트 내용을 바꿉니다" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<주제>], 주제가 주어지면 주어진 주제를 설정하고, 그렇지 않다면 현재 주제를 보여줍니다" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "\nTRAY -f <제한시간> <파일1> [<파일2>] 트레이에서 두 개의 아이콘을 깜빡이게 합니다.\nTRAY -f <파일 이름> 트레이에 해당 아이콘으로 설정합니다.\nTRAY -i <번호> 내장 아이콘을 깜빡입니다.\nTRAY -t <텍스트> 트레이에 도움말을 표시합니다.\nTRAY -b <제목> <텍스트> 트레이에 제목을 표시합니다." + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <마스크> [<마스크>...], 지정한 마스크를 입장 금지 목록에서 해제합니다." + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <마스크> [QUIET]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <이름>, 추가 기능 또는 스크립트의 사용을 중지합니다" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "UNQUIET <마스크> [<마스크>...], 서버에서 지원하는 경우 지정한 마스크와 일치하는 사용자의 발언권 박탈을 해제합니다." + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <URL>, URL을 브라우저에서 엽니다" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "USELECT [-a] [-s] <대화명1> <대화명2> 등, 대화방의 참여자 목록에서 해당 대화명을 강조하여 표시합니다" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <대화명>, 해당 사용자에게 발언권을 부여합니다(관리 권한 필요)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <메시지>, 모든 대화방에 메시지를 보냅니다" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <메시지>, 현재 대화방의 모든 관리자에게 메시지를 보냅니다" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "다음에 대한 사용자 명령: %s\n" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "사용법: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\n이 명령은 도움말이 없습니다.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "해당 명령이 없습니다.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "사용자 명령에 잘못된 인자가 있습니다.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "사용자 명령의 재귀 단계가 너무 많습니다. 중지하는 중." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "알 수 없는 %s 명령입니다. /help 명령을 사용하십시오\n" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "hexchat_plugin_init 심볼이 없습니다. 헥스채트 추가 기능이 맞습니까?" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "*\t%s에서 ident 요청을 %s(으)로 제공중" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "*\tidentd 서버 시작 오류: %s" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "IDENTD <port> <username>" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "%d 타이머를 삭제했습니다.\n" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "참조 번호를 찾을 수 없습니다.\n" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "타이머를 설치하지 않았습니다.\n" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "Ref# 초 반복 명령\n" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "%5d %8.1f %7d %s\n" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "정말 SSL을 사용할 수 있는 서버와 포트입니까?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "%s 호스트 이름을 해석 할 수 없습니다.\nIP 설정을 확인하십시오!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "Proxy 순회에 실패했습니다.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "%s의 다음 서버로 진행합니다....\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "경고: 알 수 없는 \"%s\" 문자세트입니다. %s 네트워크에서는 문자열 변환이 적용되지 않습니다." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "%C18*%O$t%C18$1%O님을 알림 목록에 추가했습니다." + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "%C22*%O$t%C22$1%O: %C26$3%O이(가) %C24$4%O에서 %C18$2%O" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "%C22*%O$t%C22$1%O에 입장할 수 없습니다(%C20강제 퇴장 당했습니다%O)." + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "%C29*%O$t확인한 명세: %C29$2%O" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "%C29*%O$t제거한 명세: %C29$2%O" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "%C23*%O$t지원하는 명세: %C29$2%O" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "%C23*%O$t요청한 명세: %C29$1%O" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "%C24*%O$t%C28$1%O님의 대화명은 이제 %C18$2%O 입니다" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O님이 %C18$2%O에 입장 금지했습니다." + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "%C22*%O$t%C22$1%O 대화방은 %C24$2%O에 개설했습니다" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O님이 %C18$2%O님의 대화방 제한된 관리 권한을 박탈했습니다" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O님이 %C18$2%O님의 대화방 운영자 권한을 박탈했습니다" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O님이 %C18$2%O님의 발언권을 박탈했습니다" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%C님이 %C18$2%O의 제외 조건을 설정했습니다" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O님이 %C18$2%O님께 대화방 제한된 관리 권한을 부여했습니다" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%C님이 %C18$2%O의 초대 제외 대상 조건을 설정했습니다" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%U대화방 사용자 주제" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "%C22*%O$t%C26$1%O님이 %C22$4%O의 모드를 %C24$2$3%O(으)로 설정했습니다" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "%C22*%O$t%C22$1%O 대화방의 상태: %C24$2" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O님이 %C18$2%O님께 대화방 관리 권한을 부여했습니다." + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O님이 %C18$2%O의 발언권 박탈 대상 조건을 설정했습니다" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O님이 대화방에서%C18$2%O을(를) 해제했습니다" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O님이 %C18$2%O의 초대 제외를 제거했습니다" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "%C22*%O$t%C26$1%O님이 대화방 암호를 제거했습니다" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "%C22*%O$t%C26$1%O님이 사용자 제한을 제거했습니다" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O님이 대화방 암호를 %C24$2%O(으)로 지정했습니다" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O님이 대화방 제한을 %C24$2%O(으)로 설정했습니다" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O님이 %C18$2%O님의 강제 퇴장을 해제했습니다." + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O님이 %C18$2%O의 발언권 박탈 대상 조건을 해제했습니다" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "%C22*%O$t%C22$1%O 대화방 URL: %C24$2" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O님이 %C18$2%O님께 발언권을 부여했습니다." + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "%C23*%O$t연결했습니다. 로그인 중입니다." + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "%C23*%O$t%C29$1%C에 연결중(%C23$2:$3%O)" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "%C20*%O$t연결에 실패했습니다 (%C20$1%O)" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "%C24*%O$t%C18$2%C에서 %C24$1%O CTCP를 받았습니다" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "%C24*%C$t%C18$2%C에서 (%C22$3%C 으로의) %C24$1%O CTCP를 받았습니다" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "%C24*%O$t%C18$2%C님에게 %C24$1%O CTCP 소리를 받았습니다" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "%C24*%O$t%C18$2%C님에게 %C24$1%C CTCP 소리를 (%C22$3%O(으)로) 받았습니다" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "%C23*%O$t%C18$1%O님과의 DCC CHAT을 중단했습니다." + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "%C24*%O$t%C18$1%C에 대한 DCC CHAT 연결이 성립되었습니다. %C30[%C24$2%C30]%O" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "%C20*%O$t%C18$1%O에 대한 DCC CHAT을 잃었습니다(%C20$4%O)" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "%C24*%O$t%C18$1님의 DCC CHAT 전달을 받았습니다%O" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "%C24*%O$t%C18$1%O 님께 DCC CHAT 전달중" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "%C24*%O$t이미 %C18$1%O님께 CHAT 전달중" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "%C20*%O$t%C18$2%O님에게로의 DCC $1 연결 시도에 실패했습니다(%C20$3%O)" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "%C23*%O$t%C18$2%O님에게 '%C23$1%C'을(를) 받았습니다" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "%C16,17 형식 송/수신 상태 크기 위치 파일 " + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "%C20*%O$t%C18$1%O님에게 잘못된 DCC 요청을 받았습니다.$a010%C23*%O$t패킷 내용: %C23$2%O" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "%C24*%O$t%C18$2%O님께 '%C24$1%O' 전달중" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "%C23*%O$t전달한 DCC가 없습니다." + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "%C23*%O$t%C18$1%O으로의 DCC RECV '%C23$2%O'을(를) 중단했습니다." + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "%C24*%O$t%C18$3%O님의 DCC RECV '%C23$1%O'을(를) 완료했습니다. %C30[%C24$4%O cps%C30]%O" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$t%C18$1%O님께 DCC RECV 연결을 만들었습니다 %C30[%O%C24$2%C30]%O" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "%C20*%O$t%C18$3%O님의 DCC RECV '%C23$1%O'에 실패했습니다(%C20$4%O)" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "%C20*%O$tDCC RECV: 기록용 '%C23$1%C' 파일을 열 수 없습니다(%C20$2%O)" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "%C23*%O$t'%C24$1%C' 파일이 있어, 대신 '%C23$2%O' 이름으로 저장합니다." + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "%C24*%O$t%C18$1%C님이 %C24$3%C(으)로부터 '%C23$2%C'을(를) 재개하도록 요청했습니다." + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "%C23*%O$t%C18$1%C님에 대한 '%C23$2%O' DCC SEND를 취소했습니다." + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "%C24*%O$t%C18$2%C님께 DCC SEND '%C23$1%C'을(를) 완료했습니다. %C30[%C24$3%C cps%C30]%O" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$t%C18$1 %C30[%O%C24$2%C30]로 DCC SEND 연결이 만들어졌습니다 %O" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "%C20*%O$t%C18$2%C님에 대한 DCC SEND '%C23$1%C'에 실패했습니다 (%C20$3%O)" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "%C24*%O$t%C18$1%C님이 '%C23$2%C'을(를) 보냈습니다(%C24$3%O bytes)" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "%C20*%O$t%C18$3%O님에 대한 DCC $1 '%C23$2%C'을(를) 멈췄습니다. 중지합니다." + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "%C20*%O$t%C18$3%O님에 대한 DCC $1 '%C23$2%C' 처리 시간이 초과되었습니다. 중지합니다." + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "%C24*%O$t%C18$1%O님을 알림 목록에서 지웠습니다." + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "%C20*%O$t연결 끊어짐(%C20$1%O)" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "%C24*%O$t발견한 IP: %C30[%C24$1%C30]%O" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "%O%C18$1%O님을 무시 목록에 추가했습니다." + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "%O%C18$1%O의 무시 항목이 바뀌었습니다." + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "%C16,17" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "%C16,17 호스트마스크 PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "%O%C18$1%O을(를) 무시 목록에서 제거했습니다." + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "%O무시 목록이 비어 있습니다." + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "%C20*%O$t%C22$1%C에 입장할 수 없습니다(%C20초대만 가능한 대화방%O)" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "%C24*%O$t%C18$2%O님이 %C22$1%O 대화방으로 초대했습니다(%C29$3%O)" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "%C23*$t$1 ($3%C23)님이 입장하였습니다" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "%C20*%O$t%C22$1%C에 입장할 수 없습니다(%C20암호 필요%O)" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "%C22*%O$t%C26$1%C님께서 %C22$3%C에서 %C18$2%C님을 추방했습니다(%C24$4%O)" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "%C18$1%C%C19*%O$t%C19%C26$1%C님이 당신의 연결을 강제로 끊었습니다(%C20$2%O)" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "%C29*%O$t%C29MOTD 무시함%O" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "%C23*%O$t%C28$1%C은(는) 이미 사용중입니다. %C18$2%O(으)로 재시도중..." + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "%C23*%O$t%C28$1%C에 문제가 있습니다. %C18$2%O(으)로 재시도중..." + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "%C20*%O$t대화명에 문제가 있거나 이미 사용중입니다. /NICK을 사용하여 다른 대화명을 사용해보십시오." + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "%C20*%O$tDCC가 없습니다." + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "%C23*%O$t현재 실행중인 프로세스가 없습니다" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "%C23*%O$t알림: %C18$1%C님은 자리 비움 상태입니다(%C24$2%O)" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "%C23*%O$t알림: %C18$1%C님이 돌아왔습니다" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$t알림 목록은 비어 있습니다." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "%C16,17 알림 목록" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "%C23*%O$t%C23$1%O 참여자는 알림 목록에 있습니다." + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "%C23*%O$t알림: %C18$1%C님은 연결되어 있지 않습니다(%C29$3%O)" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "%C23*%O$t알림: %C18$1%C님은 연결되어 있습니다(%C29$3%O)" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "%C24*$t$1 ($2%C24)님이 나갔습니다" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "%C24*$t$1 ($2%C24)님이 나갔습니다($4)" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "%C24*%O$t%C18$1%C의 핑 응답: %C24$2%O초" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "%C20*%O$t%C24$1%O 초 동안 핑 응답이 없습니다. 연결 끊는중." + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "%C24*%O$t프로세스가 이미 실행중입니다" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "%C24*$t$1님이 끝내셨습니다($2)" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "%C24*%O$t%C26$1%C님이 상태를%C30[%C24$2%C30](으)로 바꿨습니다%O" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "%O-%C29$1/Wallops%O-$t$2" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "%C24*%O$t%C18$1%O의 IP 번호 찾는중..." + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "%C23*%O$t%C18$1%O(으)로 SASL 인증했습니다(%C24$2%O)" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "%C29*%O$t연결했습니다." + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "%C29*%O$t%C29$1%O 찾는중" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "%C23*%O$t이전 연결 시도를 멈췄습니다(%C24$1%O)" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "%C22*%O$t%C22$1%C의 주제는 $2입니다%O" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "%C22*%O$t%C26$1%C님이 주제를 $2(으)로 바꿨습니다.%O" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "%C22*%O$t%C26$2%C님이 %C22$1%C 대화방의 주제를 설정함(%C24$3%O)" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C20*%O$t알 수 없는 호스트입니다. 잘못 입력하셨습니까?" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "%C20*%O$t%C22$1%C에 입장할 수 없습니다(%C20참여자 수 제한에 도달했습니다%O)" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "%C22*%O$t%C22$1%C의 참여자: %C24$2%O" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%C님은 자리 비움 상태입니다 %C30(%C23$2%O%C30)%O" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "%C23*%O$t%C28[%C18$1%C28] %OWHOIS 목록의 끝입니다." + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O 대기 %C23$2%O" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O 대기 %C23$2%O, 접속: %C23$3%O" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O 실제 호스트: %C23$2%O, 실제 IP: %C30[%C23$3%C30]%O" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "%C19*%O$t현재 %C22$2%O에서 대화중입니다" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "%C19*%O$t%C26$3%C님이 %C22$2%O에서 강제 퇴장시켰습니다(%C20$4%O)" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "%C19*%O$t%C22$3%O 대화방에서 나왔습니다" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "%C19*%O$t%C22$3%C 대화방에서 나왔습니다(%C24$4%O)" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "%C20*%O$t%C18$1%O님을 %C22$2%O 대화방에 초대했습니다 (%C24$3%O)" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "%C20*%O$t이제부터 대화명은 %C18$2%O 입니다" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "로그를 불러온 일시:" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** 기록 종료: %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** 기록 시작: %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "* 기록용으로 로그 파일을 열 수 없습니다.\n%s의 권한을 확인하십시오" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "왼쪽 메시지" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "오른쪽 메시지" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "IP 주소" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "사용자 이름" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "참여자 대화명" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "입장한 대화방" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "사용자 호스트" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "사용자 계정" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "대화명" + +#: src/common/text.c:980 +msgid "The action" +msgstr "동작" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "상태" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "정보 텍스트" + +#: src/common/text.c:987 +msgid "The text" +msgstr "텍스트" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "메시지" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "서버명" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "확인한 명세" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "제거한 명세" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "서버 명세" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "요청한 명세" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "이전 대화명" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "새 대화명" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "주제를 바꾼 사용자의 대화명" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "주제" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "입장 금지한 사람의 대화명" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "퇴장한 사람" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "대화방" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "이유" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "퇴장하는 사람의 대화명" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "시간" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "만든이" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "대화명" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "이유" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "호스트" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "사용자의 위치" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "x.x 형식의 시간(하단 참조)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "대화방 이동" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "소리" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "사용자의 대화명" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "CTCP 이벤트" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "암호를 설정한 사용자의 대화명" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "암호" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "인원 제한을 설정한 사용자의 대화명" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "인원 제한" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "관리 권한을 주는 사용자의 대화명" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "관리 권한을 받는 사용자의 대화명" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "제한된 관리 권한을 받은 사용자의 대화명" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "제한된 관리 권한을 주는 사용자의 대화명" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "발언권을 주는 사용자의 대화명" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "발언권을 받는 사용자의 대화명" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "입장 금지 설정을 한 사용자의 대화명" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "입장 금지 마스크" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "발언권을 박탈한 사용자의 대화명" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "발언권 박탈 마스크" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "암호를 해제한 사용자의 대화명" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "인원 제한을 해제한 사용자의 대화명" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "옵을 제거한 사람의 별명" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "관리 권한을 박탈당한 사용자의 대화명" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "하프옵을 제거한 사람의 별명" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "일부 관리 권한을 박탈당한 사용자의 대화명" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "발언권을 박탈한 사람의 별명" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "발언권을 박탈당한 사용자의 대화명" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "추방 해제한 사람의 별명" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "발언권을 허용한 사람의 별명" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "제외된 사용자의 대화명" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "제외 마스크" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "제외를 제거한 사용자의 대화명" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "초대한 사용자의 대화명" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "초대할 마스크" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "초대전용 설정을 해제한 사용자의 대화명" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "대화방 상태를 설정한 사용자의 대화명" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "상태 설정 기호는 (+/-) 입니다." + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "상태 기호" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "대화방 설정 변경" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "전체 이름" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "대화방 이용자는 /\"IRC 관리자\"입니다" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "서버 정보" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "잠수 시간" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "연결 시간" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "자리 비움 이유" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "메시지" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "계정" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "실제 user@host" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "실제 IP" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "대화방 이름" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "매커니즘" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "원시 숫자값 또는 ID" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "텍스트" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "초대한 사용자의 대화명" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "참여자" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "사용할 대화명" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "시도중인 대화명" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "포트" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "상태 문자" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "주소" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "DCC 형식" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "파일 이름" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "받을 위치" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "경로" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "위치" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "크기" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "DCC 문자" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "자리 비움 이유" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "알림 항목의 수" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "이전 파일 이름" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "새 파일 이름" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "받는 이" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "호스트 마스크" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "호스트" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "패킷" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "초" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "초대할 참여자의 대화명" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "입장 금지 마스크" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "입장 금지를 설정한 사람" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "입장 금지 시간" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "소리 파일을 읽지 못함:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "원격 호스트에서 소켓이 닫혔습니다" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "연결이 거부되었습니다" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "호스트로 갈 경로가 없습니다" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "연결 시간을 초과했습니다" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "해당 주소로 접근할 수 없습니다" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "연결이 초기화되었습니다" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "어센션 섬" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "안도라" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "아랍 국가 연합" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "비행 관련 구역" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "아프카니스탄" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "안티과와 바부다" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "앙귈라" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "알바니아" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "아르메니아" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "네덜란드" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "앙골라" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "안타티카" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "아르헨티나" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "DNS 역추적" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "아메리칸 사모아" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "아태지역" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "오스트리아" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "북대서양 조약기구" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "오스트레일리아" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "아루바" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "올란드 제도" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "아케르바이젠" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "보스니아와 헬제고비나" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "바베이도스" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "방글라데시" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "벨기에" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "부르키나 파소" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "불가리아" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "바레인" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "브룬디" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "비지니스" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "베닌" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "버뮤다" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "브루나이 달루살람" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "볼리비아" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "브라질" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "바하마" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "부탄" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "부벳섬" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "보츠와나" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "벨라루스" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "벨리즈" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "캐나다" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "카탈루니아어" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "코코스 섬" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "콩고 민주 공화국" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "중앙 아프리카 공화국" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "콩고" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "스위스" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "코테 드이보르" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "쿡 제도" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "칠레" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "카메룬" + +#: src/common/util.c:738 +msgid "China" +msgstr "중국" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "콜롬비아" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "상업용 인터닉" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "협업체" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "코스타리카" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "세르비아와 몬테니그로" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "쿠바" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "카보베르데" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "크리스마스 섬" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "키프러스 공화국" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "체코 공화국" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "동부 독일" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "독일" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "지부티" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "덴마크" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "도미니카" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "도미니카 공확국" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "알제리" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "에콰도르" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "교육 재단" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "에스토니아" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "이집트" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "서사하라" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "에리트리아" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "스페인" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "에디오피아" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "유렵국가 연합" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "핀란드" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "피지" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "포크랜드 제도" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "미크로네시아" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "파로에 제도" + +#: src/common/util.c:770 +msgid "France" +msgstr "프랑스" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "가봉" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "영국" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "그레나다" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "조지아" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "프랑스령 가이아나" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "영국령 제도" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "가나" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "지브롤터" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "그린란드" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "잠비아" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "기니" + +#: src/common/util.c:782 +msgid "Government" +msgstr "정부" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "과들루프" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "적도 기니" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "그리스" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "세인트조지아와 세인트샌드위치 제도" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "과테말라" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "괌" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "기니비사우" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "가이아나" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "홍콩" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "허드와 맥도날드 제도" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "온두라스" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "크로아티아" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "아이티" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "헝가리" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "인도네시아" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "아일랜드" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "이스라엘" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "맨 섬" + +#: src/common/util.c:801 +msgid "India" +msgstr "인도" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "정보" + +#: src/common/util.c:803 +msgid "International" +msgstr "국제" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "영연방 인도양" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "이라크" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "이란" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "아이슬란드" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "이탈리아" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "저지 섬" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "자메이카" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "조단" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "회사 직업" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "일본" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "케냐" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "키르기스스탄" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "캄보디아" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "키리바티" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "코모로스" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "세인트키츠네비스" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "조선민주주의인민공화국" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "대한민국" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "쿠웨이트" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "케이멘 군도" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "카자흐스탄" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "라오스" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "레바논" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "세인트루치아" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "리히텐슈타인" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "스리랑카" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "리베리아" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "레소토" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "리투아니아" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "룩셈부르크" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "라트비아" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "리비아" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "모로코" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "모나코" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "몰도바" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "몬테네그로" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "미국 의료" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "마다가스카르" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "마샬 제도" + +#: src/common/util.c:843 +msgid "Military" +msgstr "국방" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "마케도니아" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "말리" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "미얀마" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "몽고" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "마카오" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "모바일 장치" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "노턴 마리아나 섬" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "마르티니크" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "모리타니아" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "몬테세라트" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "말타" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "모리셔스" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "박물관" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "몰디브" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "말라위" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "멕시코" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "말레이지아" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "모잠비크" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "나미비아" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "개인 이름" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "뉴 칼레도니아" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "니제르" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "인터닉 네트워크" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "노퍽 섬" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "나이지리아" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "니카르과" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "네덜란드" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "노르웨이" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "네팔" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "나우루" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "나우에섬" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "뉴질랜드" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "오만" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "인터닉 비영리 기관" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "파나마" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "페루" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "프랑스령 폴리네시아" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "파푸아 뉴기니" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "필리핀" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "파키스탄" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "폴란드" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "생 피에르에 미클롱" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "핏케언섬" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "푸에르토리코" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "직업" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "팔레스타인 자치구" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "포르투갈" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "팔라우" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "파라과이" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "콰타르" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "레위니옹" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "로마니아" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "전통 ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "세르비아" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "러시아 연방" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "르완다" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "사우디아라비아" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "솔로몬 제도" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "세이셸 제도" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "수단" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "스웨덴" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "싱가폴" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "세인트헬레나" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "슬로베니아" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "스발바르 제도와 얀 마이엔 군도" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "슬로바키아공화국" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "시에라리온" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "산마리노" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "세네갈" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "소말리아" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "수리남" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "남수단" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "상투메 프린시페" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "옛 소비에트 연방 공화국" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "엘살바도르" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "시리아" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "스와질란드" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "터크스카이코스 제도" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "차드" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "인터넷 통신 서비스" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "프랑스 남부 지역" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "토고 공화국" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "타이" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "타지크스탄" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "토켈라우 제도" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "동티모르" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "투르크메니스탄" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "튀니지" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "통가" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "터키" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "관광" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "트리니다드 토바고" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "투발루" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "대만" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "탄자니아" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "우크라이나" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "우간다" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "영국" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "미국" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "우루과이" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "우즈베키스탄" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "바티칸 시국" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "세인트빈센트 그레나딘 제도" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "베네수엘라" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "영국령 버진 제도" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "미국령 버진 제도" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "베트남" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "바누아투" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "윌리스와 푸투나 제도" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "사모아" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "성인 유흥" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "예멘" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "마요트" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "유고슬라비아" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "남아프리카 공화국" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "잠비아" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "짐바브웨" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "세션 버스에 연결할 수 없습니다." + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "NameHasOwner를 마치는 데 실패했습니다" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "명령을 끝내는 데 실패했습니다" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "원격 접근" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "DBUS을 이용한 원격 추가 기능" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "세션 버스에 연결할 수 없습니다: %s\n" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "%s 가져오기 실패: %s\n" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "문자표" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "입장 금지" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "제외" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "제외" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "초대" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "초대" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "발언권 박탈" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "발언권 박탈" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "마스크 복사" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "%3$s이(가) %2$s에서 %1$s" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "항목 복사" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "연결되어 있지 않습니다." + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "먼저 입장 금지 목록에서 선택 하십시오." + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "%s의 모든 목록의 항목을 제거하시겠습니까?" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "형식" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "마스크" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "보낸이" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "날짜" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "대화방 탭에서만 입장 금지 목록을 열 수 있습니다." + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "영구 추방 목록(%s) - %s" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "제거" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "잘라내기" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "새로 고침" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "전체 대화방 %4$d개 중 %3$d개, 전체 참여자 %2$d명 중 %1$d명을 나타냅니다." + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "출력할 파일 이름을 선택하십시오" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "대화방 입장(_J)" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "대화방 이름 복사(_C)" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "주제 복사(_T)" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "채널 목록(%s) - %s" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "검색(_S)" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "목록 다운로드(_D)" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "목록 저장(_L)..." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "검색 대상:" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "대화방 인원 수: " + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "명 부터" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "명 까지의 참여자." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "검색 결과:" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "대화방 이름" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "검색 형식:" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "단순 검색" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "패턴 일치(와일드카드)" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "정규 표현식" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "검색 단어:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "%s님께 파일 보내기" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "그 파일은 이어받을 수 없습니다." + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "파일에 접근할 수 없습니다: %s\n%s.\n이어받을 수 없습니다." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "받을 디렉터리의 파일이 전송 받을 파일보다 큽니다. 이어 받을 수 없습니다." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "두 사람에게서 같은 파일을 받을 경우 이어 받을 수 없습니다." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "업로드/다운로드 - %s" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "상태" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "파일" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "모두" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "파일 보내기" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "파일 받기" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "자세히" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "파일:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "주소:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "중지" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "허용" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "이어받기" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "디렉터리 열기..." + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "DCC 대화 목록 - %s" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "받음" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "보냄" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "시작 시간" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "추가" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "삭제" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "취소" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "저장" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "서버에 자동으로 연결하지 않기" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "다른 설정 디렉터리 사용" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "추가 기능을 사용하지 않음" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "추가 기능/스크립트 자동 불러오기 디렉터리 표시" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "사용자 설정 디렉터리 표시" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "irc://server:port/channel?key URL 열기" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "연결시 명령:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "URL을 열거나 헥스채트의 명령을 실행합니다" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "최소화를 시작합니다. 단계 0=보통 1=아이콘화 2=알림영역" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "레벨" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "버전 정보 표시" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "글꼴 열기 실패:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "검색할 버퍼가 비어있습니다.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d 바이트" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "네트워크 전송 큐: %d 바이트" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "명령 실행 동작은 단축키를 눌렀을때 항목 상자에 입력한 데이터 1의 데이터로 실행합니다. 따라서 텍스트(대화방 참여자로 보냄), 명령 또는 사용자 명령을 넣을 수 있습니다. 실행할 때 데이터 1 \\n 에 입력한 모든 문자는 명령을 구분하는데 사용하여, 하나 이상의 명령을 실행할 수 있습니다. 실제 텍스트에 \\ 를 넣으려면, 실행후 \\\\를 입력하십시오" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "페이지 전환 명령은 노트북의 페이지 사이를 전환하는 명령입니다. 데이터 1에는 전환할 페이지를 설정합니다. 데이터 2에 어떤 값을 설정하면 설정한 현재 위치와 관련된 곳으로 전환합니다. 데이터 1에 최근 페이지 및 중요한 동작으로 자동 전환하도록 설정하십시오(먼저 요청한 다음, 채널을 강조하고, 채널을 대화창으로 띄우거나, 채널에 다른 데이터를 채우십시오)" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "버퍼에 입력 명령은 데이터 1의 내용을 마치 현재 커서 위치에 키로 입력한 것처럼 입력 창에 넣습니다." + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "페이지 스크롤 명령은 한 페이지 또는 한 줄 단위로 텍스트 위젯 스크롤을 위아래로 움직입니다. 데이터 1에 Top, Bottom, Up, Down, +1, -1 중 하나를 입력하십시오." + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "버퍼 설정 명령은 입력창의 내용을 데이터 1의 내용으로 설정합니다." + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "최근 명령 명령은 입력 창의 내용을 최근에 입력한 명령어로 설정합니다. 쉘에서 위 화살표 키를 누른 것과 같습니다." + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "다음 명령 명령은 입력 창의 내용을 다음 명령으로 설정합니다. 쉘에서 아래 화살표 키를 누른 것과 같습니다." + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "이 명령은 입력 창의 텍스트를 대화명 또는 명령어로 완성합니다. 데이터 1을 설정하면 문자열에 탭을 두번 누르는 경우에 다음 대화명이 아니라 최근 대화명을 선택합니다." + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "이 명령은 대화명 목록의 스크롤을 올리거나 내립니다. 만약 데이터 1을 어떤 값으로든 설정하면 스크롤을 올리고, 아닐 경우 내립니다." + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "이 명령은 입력 창에서 입력한 마지막 단어를 목록의 단어와 비교해서 일치하면 다른 단어로 바꿉니다." + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "이 명령은 앞의 탭을 왼쪽으로 이동 시킵니다." + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "이 명령은 앞의 탭을 오른쪽으로 이동 시킵니다." + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "이 명령은 현재 탭을 왼쪽으로 이동 시킵니다." + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "이 명령은 현재 탭을 오른쪽으로 이동 시킵니다." + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "입력된 줄은 기록은 했지만 서버로 전송하지 못했습니다." + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "단축키 설정 불러오는 중 오류가 발생 했습니다." + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "이 동작에 대한 도움말을 보시려면 항목을 선택하십시오." + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "바로 가기 키 - %s" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "해당 파일을 쓸 수 없습니다." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "해당 파일은 열 수 없습니다." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "해당 마스크가 이미 존재합니다." + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "개인:" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "알림" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "무시해제" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "정말로 모든 무시 항목을 제거하시겠습니까?" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "무시할 마스크 입력:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "무시 목록 - %s" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "무시 상태:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "대화방:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "개인:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "알림:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "초대:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "추가..." + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "대화방 이름이 너무 짧습니다. 다시 시도하십시오." + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "연결 완료 - %s" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "%s에 연결 완료했습니다." + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "서버 목록 창에서, 이 네트워크에서 자동으로 참여할 채널(대화방)에 들어가지 않았습니다." + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "다음에는 무엇을 하시겠습니까?" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "아무것도 안 함. 다음에 대화방에 입장하겠습니다.(_N)." + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "이 대화방에 입장(_J):" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "대화방 이름을 알고 있다면, 이곳에 입력하십시오." + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "채널 목록을 엽니다(_O)." + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "대화방 목록 받기에 1~2분 정도 걸립니다." + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "연결 후 이 창을 항상 표시합니다(_A)." + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "대화창" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "대화방 %s의 주제는 %s입니다" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "주제가 정해져 있지 않습니다." + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "이 서버에 대화방 또는 참여자 %d개(명)과 연결되어 있습니다. 모두 닫으시겠습니까?" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "헥스채트를 끝낼까요?" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "다음에 물어보지 마십시오." + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "IRC 네트워크 %i개에 연결중입니다." + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "정말로 끝내시겠습니까?" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "아직 파일 전송이 진행 중입니다." + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "알림 영역으로 최소화(_M)" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "색상 코드 또는 속성 삽입" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>굵게</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>밑줄</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "<i>기울임</i>" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "보통" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "색상 0-7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "색상 8-15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "설정(_S)" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "디스크에 기록(_L)" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "이전 대화 내용 다시 불러오기(_R)" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "색상 추출(_C)" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "입장/퇴장 메시지 숨기기(_H)" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "알림(_E)" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "메시지 비프음(_M)" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "알림 영역 아이콘 깜빡거림(_I)" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "작업 표시줄 깜빡거림(_B)" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "탭 분리(_D)" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "닫기(_C)" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "참여자 제한은 숫자만 입력할 수 있습니다.\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "색상 필터" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "외부 메시지 받지 않음" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "주제 잠금" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "초대만 가능" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "중재식 대화" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "입장 금지 목록" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "암호" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "참여자 제한" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "새 대화명 입력:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "결과가 없습니다." + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "마지막까지 검색했으며 찾을 수 없습니다." + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "모두 강조(_H)" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "일치하는 모든 부분을 강조하고 현재 일치 부분에 밑줄 표시합니다." + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "대소문자 일치(_C)" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "대소문자 일치 검색을 수행합니다." + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "정규표현식(_R)" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "정규표현식으로 관심있는 문자열을 검색합니다." + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "알 수 없는 호스트" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "계정을 알 수 없음" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "알 수 없음" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "실제 이름:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "사용자:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "계정:" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "국가:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "서버:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "%u분 전" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "마지막 메시지:" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "자리 비움 메시지:" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "대화명 %d개를 선택했습니다." + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "메뉴 표시줄을 숨깁니다. 다시 보시려면 Ctrl-F9를 누르거나 메인 텍스트 구역에서 마우스 오른쪽 버튼을 누르십시오." + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "브라우저로 열기" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "선택한 링크 복사" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "대화방 입장" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "대화방 나가기" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "나갔다 들어오기" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "자동 입장(_A)" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "자동 입장 대화방" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "자동 연결(_A)" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "사용자 메뉴 - %s" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "이 메뉴 편집" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "표시 줄을 껐습니다." + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "표시 줄을 설정하지 않음." + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "표시 줄을 직접 다시 설정했습니다." + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "스크롤 행수 제한을 넘어서 표시 줄을 다시 설정했습니다." + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "CLEAR 명령으로 표시 줄을 다시 설정했습니다." + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "표시 줄 상태를 알 수 없습니다." + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "채널 목록 가져오기" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "플러그인 지원을 제외한 채로 빌드했습니다." + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "사용자 명령 - 특수 코드:\n\n%c = 현재 채널\n%e = 현재 네트워크 이름\n%m = 머신 정보\n%n = 자신의 대화명\n%t = 날짜/시간\n%v = 헥스채트 버전\n%2 = 단어 2\n%3 = 단어 3\n&2 = 단어 2부터 줄 끌까지\n&3 = 단어 3부터 줄 끝까지\n\n예:\n/cmd john hello\n\n%2는 \"john\"\n&2는 \"john hello\"이 됩니다." + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "참여자 목록 버튼 - 특수 코드:\n\n%a = 선택한 모든 대화명\n%c = 현재 대화방\n%e = 현재 네트워크 이름\n%h = 선택한 대화명의 호스트 이름\n%m = 머신 정보\n%n = 자신의 대화명\n%s = 선택한 대화명\n%t = 날짜/시간\n%u = 선택한 참여자 계정" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "대화 상자 버튼 - 특수 코드:\n\n%a = 선택한 모든 대화명\n%c = 현재 채널\n%e = 현재 네트워크 이름\n%h = 선택한 대화명의 호스트 이름\n%m = 머신 정보\n%n = 자신의 대화명\n%s = 선택한 대화명\n%t = 날짜/시간\n%u = 선택한 참여자 계정" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "CTCP 응답 - 특수 코드:\n\n%d = 데이터(전체 CTCP)\n%e = 현재 네트워크 이름\n%m = 컴퓨터 정보\n%s = CTCP를 보낸 대화명\n%t = 날짜/시각\n%2 = 단어 2\n%3 = 단어 3\n&2 = 단어 2에서 줄 끝까지\n&3 = 단어 3에서 줄 끝까지\n\n" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "URL 처리기 - 특수 코드:\n\n%s = URL 문자열\n\n명령 앞에 ! 문자를 놓으십시오\n헥스채트 대신 쉘로 보내야 함을\n나타냅니다" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "사용자 지정 명령 - %s" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "사용자 목록 단축 메뉴 - %s" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "바꾸기 - %s" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "바꿀 텍스트" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "URL 핸들러 - %s" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "사용자 목록 단추 - %s" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "대화 상자 단추 - %s" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "CTCP 응답 - %s" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "헥스채트(_X)" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "네트워크 목록(_S)" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "새로 만들기(_N)" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "서버 탭" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "채널 탭" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "서버 창" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "채널 창" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "플러그인 또는 스크립트 불러오기(_L)" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "끝내기(_Q)" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "보기(_V)" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "메뉴 모음(_M)" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "주제 표시줄(_T)" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "참여자 목록(_U)" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "사용자 목록 단추(_S)" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "상태 버튼(_O)" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "서버/대화방 표시 형식(_C)" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "탭(_T)" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "트리(_R)" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "네트워크 미터 표시(_N)" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "끔" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "그래프" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "전체 화면(_F)" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "서버(_S)" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "연결 해제(_D)" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "다시 연결(_R)" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "채널에 참여(_J)" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "채널 목록(_L)" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "자리 비움으로 표시(_A)" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "사용자 메뉴(_U)" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "설정(_E)" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "기본 설정(_P)" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "자동으로 바꾸기" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "CTCP 응답" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "대화 상자 단추" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "바로 가기 키" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "텍스트 이벤트" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "URL 핸들러 " + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "사용자 명령" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "사용자 목록 단추" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "사용자 목록 팝업" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "창(_W)" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "영구 추방 목록(_B)" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "직접 대화" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "파일 전송(_T)" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "친구 목록" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "무시 목록" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "추가 기능과 스크립트(_P)" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "원시 로그(_R)" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "URL 감지(_U)" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "표시선 초기화" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "표시 줄로 이동" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "선택 영역 복사(_C)" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "텍스트 지우기(_L)" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "텍스트 저장" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "검색" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "텍스트 검색" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "다음 검색" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "이전 검색" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "도움말(_H)" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "내용(_C)" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "정보(_A)" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "붙이기(_A)" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "이름" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "최근 연결" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "연결 안함" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "안함" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "%d분 전" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "1시간 전" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "%d시간 전" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "연결함" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "추가할 대화명:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "다음 네트워크 알림:" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "쉼표로 구분한 네트워크 목록을 허용합니다." + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "친구 목록 - %s" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "대화창 열기" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "강조 메시지: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "대화방 메시지: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "파일 제공함: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "%s님이 채널로 초대했습니다(%s)" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "%s에서 공지를 전달했습니다(%s)" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "개인 메시지: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "네트워크 %u 곳과 채널 %u 개에 연결했습니다 - %s" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "창 복원(_R)" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "창 숨기기(_H)" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "깜빡임(_B)" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "대화방 메시지" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "개인 메시지" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "강조 메시지" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "상태 바꾸기(_C)" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "자리 비움(_A)" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "돌아옴(_B)" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "다음에서 강조한 메시지: %s(%s) - %s" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "%u 최근 다음에서 강조한 메시지: %s(%s) - %s" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "다음의 채널 메시지: %s(%s) - %s" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "채널 메시지 %u건 - %s." + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "개인 메시지 도착: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "개인 메시지 %u개 도착, 마지막 송신: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "파일 제공: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "파일 %u개 제공, 마지막 송신: %s (%s) - %s" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "버전" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "설명" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "불러올 추가 기능 또는 스크립트를 선택하십시오" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "추가 기능과 스크립트 - %s" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "열기(_L)..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "사용 안 함(_U)" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "다시 읽기(_R)" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "다른 이름으로 저장..." + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "원시 로그(%s) -%s" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "원시 로그 지우기" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "새 네트워크" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "\"%s\" 네트워크와 모든 서버를 정말 제거하시겠습니까?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "사용자 이름을 비울 수 없습니다." + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "빈 대화명은 사용할 수 없습니다." + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "두 개의 유일한 대화명을 설정해야 합니다." + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "서버에 자신을 인증하는 방법입니다. 사용자 정의 로그인 방식을 사용하려면 연결 명령을 사용하십시오." + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "%s 편집 - %s" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "서버" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "자동 입장 대화방" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "연결 명령" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "%n=대화명\n%p=암호\n%r=실명\n%u=사용자 이름" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "키(암호)" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "편집(_E)" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "선택한 서버만 연결" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "연결이 실패했을 때 모든 서버를 대상으로 연결 시도하지 않습니다." + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "이 네트워크에 자동 연결" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "프록시 서버 사용" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "이 네트워크의 모든 서버에 SSL 사용" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "유효하지 않은 인증서 허용" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "기본 사용자 정보 사용" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "대화명(_N):" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "두번째 선택:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "실제 이름(_L):" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "사용자 이름(_U):" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "로그인 방식:" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "암호:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "로그인에 사용한 암호입니다. 의심될 경우 비워두십시오." + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "문자세트:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "네트워크 목록 - %s" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "사용자 정보" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "세번째 선택:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "네트워크" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "시작할 때 네트워크 목록 건너 뛰기" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "즐겨찾는 목록만 표시" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "편집(_E)..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "정렬(_S)" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "네트워크 목록을 철자순으로 정렬합니다. 줄을 이동하려면 Shift+Up 키와 Shift+Down 키를 사용하십시오." + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "즐겨찾기(_F)" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "이 네트워크를 즐겨찾기로 표시를 하거나 지웁니다." + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "연결(_O)" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "아프리칸스어" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "알바니아" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "암하라어" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "아스투리아어" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "아케르바이젠" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "바스크어" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "베라루스" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "불가리아" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "중국어(간체)" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "중국어(번체)" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "체코어" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "덴마크어" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "독일어" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "영어(영국)" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "영어" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "에스토니아" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "핀란드어" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "프랑스어" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "갈리시아어" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "독일어" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "그리스어" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "구자라티어" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "인도" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "헝가리어" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "인도네시아어" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "이탈리아어" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "일본어" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "칸나다어" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "키냐르완다어" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "한국어" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "라트비아어" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "리투아니아어" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "마케도이아어" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "말레이지아" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "말라야람어" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "노르웨이어(보크몰)" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "노르웨이어(뉘노르스크)" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "폴란드어" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "포르투갈어" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "포르투갈어(브라질)" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "펀자브어" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "러시아어" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "세르비아어" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "슬로바키아어" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "슬로베니아어" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "스페인어" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "스웨덴어" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "타이" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "터키어" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "우크라니아어" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "베트남" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "왈론어" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "일반" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "언어:" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "주 글꼴:" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "글꼴:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "텍스트 창" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "대화명에 색상 사용" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "IRC의 각 사용자에게 다른 색상 사용" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "대화명 자동 완성" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "대화명을 오른쪽으로 정렬" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "구분선 표시" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "마지막으로 읽은 텍스트 뒤에 빨간색 줄을 삽입합니다." + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "배경 이미지:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "투명도 설정" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "창 투명도:" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "타임스탬프" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "타임스탬프 활성화" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "타임스탬프 형식:" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "자세한 내용은 strftime MSDN 게시물을 보십시오." + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "자세한 내용은 strftime 맨 페이지를 보십시오." + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "제목 표시줄" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "대화방 모드 표시" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "사용자 수 표시" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "이름순" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "마지막으로 말한 사용자" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "입력 창" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "텍스트 상자에 글꼴, 색상 사용" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "표현 색상 및 속성" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "대화명 창 표시" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "대화명 상자에 참여자 상태 아이콘 표시" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "맞춤법 확인" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "활용할 사전:" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "언어 코드를 사용하십시오(\"%LOCALAPPDATA%\\enchant\\myspell\\dicts\"처럼).\n여러 항목을 쉼표로 구분하십시오." + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "언어 코드를 사용합니다. 여러 항목은 쉼표로 구분합니다." + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "자동 구성에 추가할 문자:" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "자동 구성에 추가할 문자:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "대화명 자동 완성 정렬:" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "대화명 자동 완성 갯수:" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "닉을 자동으로 완성하는 대신 목록으로 보여줄 닉의 최대 갯수입니다" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "개 대화명." + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "그래픽" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "이름순(관리자 먼저)" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "이름역순(관리자 나중)" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "이름역순" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "정렬 안함" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "왼쪽(위)" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "왼쪽(아래)" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "오른쪽(위)" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "오른쪽(아래)" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "위" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "아래" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "숨김" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "사용자 목록" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "사용자 목록에 호스트 이름 표시" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "입력 상자에 지정 글꼴과 색상 사용" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "사용자 모드 아이콘 표시" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "사용자 목록에서 문자 기호 대신 그래픽 아이콘을 표시합니다." + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "사용자 목록 대화명에 색 입히기" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "대화할 때와 같이 대화명에 색을 넣습니다." + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "대화방 사용자 수 표시" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "사용자 목록 정렬:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "사용자 목록을 표시할 위치:" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "자리 비움 추적" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "자리 비움 상태인 사용자를 추적하여 다른 색상으로 표시합니다" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "대화방의 자리 비움 상태 인원 수가 다음보다 작을 때:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "두번 눌렀을 때 동작" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "추가 가젯" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "랙 측정기:" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "스로틀 측정기:" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "창" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "탭" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "항상" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "요청한 탭만" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "자동" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "추가 탭" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "탭 앞으로" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "트리" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "서버/대화방 표시 형식:" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "서버 메시지를 탭으로 표시" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "귓속말 메시지를 받으면 새 탭 열기" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "탭을 알파벳으로 정렬" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "대화방 트리에 아이콘 표기" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "대화방 트리에 점선 표시" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "탭 전환시 마우스 휠 스크롤" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "가운데 단추를 누르면 탭 닫기" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "작은 글자 사용" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "새 탭에 포커스:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "알림 위치:" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "서버/대화방을 표시할 위치:" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "탭 제목 표시 제한:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "글자 이하로 표시." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "창 또는 탭" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "대화방:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "귓속말:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "도구:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "DCC, 목록, 알림 등을 탭으로 열 것인지, 창으로 열 것인지를 선택하십시오." + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "메시지" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "스크롤백" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "확인 질문" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "파일 받기 폴더 질문" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "묻지 않고 저장" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "파일과 디렉터리" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "자동으로 파일 전송을 허용할 사용자:" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "다음 위치에 받은 파일 저장:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "다음 위치에 받기 완료한 파일 이동:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "파일 이름에 대화명 저장" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "자동으로 대화창 열기" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "파일 보내기 창" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "파일 받기 창" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "대화 창" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "최대 파일 전송 속도(초당 바이트)" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "개별 파일의 보내는 속도:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "보내는 파일 하나당 최대 속도" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "개별 파일의 받는 속도:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "모든 보내기를 합친 속도:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "전체 속도" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "모든 파일 받기를 합친 속도:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "경고 알림" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "다음 위치에 알림 표시:" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "알림 영역 아이콘 깜빡거림:" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "작업 표시줄 깜빡거림:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "비프음:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "선택한 이벤트에 대해 \"인스턴트 메시지 알림\" 시스템 소리 재생" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "선택한 이벤트에 대해 freedesktop.org 소리 테마의 \"message-new-instant\"를 재생합니다." + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "선택한 이벤트에 대해 GTK 비프음 재생" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "자리 비움 상태일 경우 경고 알림 생략" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "창을 활성화 했을 경우 경고 알림 생략" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "알림 영역 동작" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "시스템 트레이 아이콘 사용" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "알림 영역으로 최소화" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "알림 영역에 위치 후 닫기" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "자동으로 자리 비움/돌아옴 표시" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "알림 영역에 숨기면 자동으로 상태를 바꿉니다." + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "숨기거나 아이콘 표시했을 때만 알림 표시" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "강조 메시지" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "강조 메시지는 자기 대화명이 언급되는 메시지 및 다음 메시지입니다:" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "추가로 강조할 단어:" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "강조하지 않을 대화명:" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "항상 강조할 대화명:" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "단어 여러개를 쉼표로 구분합니다. 와일드카드도 허용합니다." + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "튕김 도크 아이콘 위치:" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "기본 메시지" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "종료:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "대화방 나가기:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "자리 비움:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "자리 비움" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "자리 비움 한 번만 표시" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "자리 비움 메시지를 한 번만 표시합니다." + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "자동으로 자리 비움 해제" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "메시지를 보내기 전 자리 비움 상태를 해제합니다." + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "기타" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "원시 양식에서 상태 표시" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "알릴 때 WHOIS 명령 실행" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "알림 목록에서 사용자가 연결 상태가 되면 /WHOIS 명령을 실행합니다." + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "입장/퇴장 메시지 숨김" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "기본적으로 대화방에 입장/퇴장 메시지를 숨깁니다." + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "대화명 바뀜 메시지 숨김" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "*!*@*.host" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "*!*@domain" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "*!*user@*.host" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "*!*user@domain" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "자동 복사 동작" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "선택한 텍스트를 자동으로 복사" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "왼쪽 마우스 버튼을 떼면 클립보드로 텍스트를 복사합니다. 이 방법을 사용하지 않으면, Ctrl+Shift+C키를 눌러 클립보드로 텍스트를 복사합니다." + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "타임스탬프 자동으로 포함" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "복사한 텍스트 줄에 타임스탬프를 자동으로 넣습니다. 이 방식을 사용하지 않으면, Shift 키를 누르면서 선택할 때 타임스탬프를 넣습니다." + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "색상 정보 자동으로 포함" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "복사한 텍스트 줄의 색상 정보를 자동으로 넣습니다. 이 방식을 사용하지 않으면, Ctrl키를 누르면서 선택할 때 색상 정보를 넣습니다." + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "실명:" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "대체 글꼴:" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "여러 항목은 전후로 공백이 아닌 쉼표로 구분합니다." + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "최소 모드로 목록 표시" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "사용자 목록과 대화방 트리 줄수간의 줄 간격을 좁힙니다." + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "서버 시간을 지원하면 사용" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "타임 서버 확장을 지원할 때 서버에서 얻은 타임스탬프를 포시합니다." + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "연결이 끊어질 경우 서버에 자동으로 다시 연결" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "자동 연결 지연 시간:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "자동 입장 지연 시간:" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "입장 금지 형식:" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "입장 금지 및 발언권 박탈 조치시 입장 금지 마스크 사용. (irc_who_join 필요)" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "기록" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "이전 세션에서 저장한 대화 내용 표시" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "스크롤할 줄 개수:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "대화 내용을 디스크에 저장" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "로그 파일 이름:" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=서버 %c=대화방 %n=네트워크." + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "로그에 타임스탬프 삽입" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "로그에 사용할 타임스탬프 형식:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "주소" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "디스크에 URL 로깅 활성화" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "URL 잡기 도구 활성화" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "잡아둘 URL 최대 갯수:" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(사용 안 함)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "윈게이트" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "SOCKS4" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "SOCKS5" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "자동" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "모든 연결" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "IRC 서버만" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "DCC만" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "IP 주소" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "바인딩할 주소:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "여러 개의 주소를 사용하는 컴퓨터에서만 사용합니다." + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "파일 전송" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "IRC 서버에서 내 IP 가져오기" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "IRC 서버가 실제 주소를 요청합니다. 192.168.*.* 주소를 가지고 있다면 이 주소를 사용하십시오!" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "DCC IP 주소:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "파일을 전송할 때 이 주소를 사용합니다." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "DCC 수신 시작 포트:" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "DCC 수신 마지막 포트:" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "!전체 영역을 사용하려면 0으로 설정하십시오." + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "프록시 서버" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "호스트:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "포트:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "형식:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "프록시 사용:" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "프록시 인증" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "인증 사용(HTTP 또는 SOCKS5만)" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "사용자 이름:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "Identd 서버" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "활성화 함" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "서버는 네트워크 사용자 이름에 응답합니다" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "이 포트로 대기하려면 권한이 있어야합니다. 113 번이 아니면(0 값은 기본값) 포트 포워딩을 설정해야합니다." + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "이미지 파일 선택" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "파일 받기 디렉터리 선택" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "글꼴 선택" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "찾아보기..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "데이터 디렉터리 열기" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "색상 선택" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "글자 색상" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "mIRC 색상:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "로컬 색상:" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "글자:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "배경:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "선택한 텍스트" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "사용자 환경 색상" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "새 데이터:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "이후 표시:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "새 메시지:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "자리 비움 사용자:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "강조:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "철자 검사:" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "색상 추출" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "상황" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "소리 파일:" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "출력할 파일을 선택하세요." + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "소리 파일:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "찾아보기(_B)..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "재생(_P)" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "사용자 환경" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "모양새" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "입력창" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "사용자 목록" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "대화방 바꾸기" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "색상" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "대화" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "소리" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "고급 기능" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "네트워크 설정" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "파일 전송" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "Identd" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "항목" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "상단 또는 하단에 트리를 놓을 수 없습니다!\n<b>보기</b>메뉴의 <b>탭</b> 배치를 먼저 바꾸십시오." + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "실명 옵션은 비워둔 채로 둘 수 없습니다. \"realname\"으로 대신합니다." + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "어떤 설정은 다시 시작해야 효과를 볼 수 있습니다." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*경고*\n홈 디렉터리로 자동 받기를 할 경우 상당히 위험합니다.\n예:\n어떤 사용자가 .bash_profile을 전송했을 때" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "기본 설정 - %s" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "<i>(제안 없음)</i>" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "더 보기..." + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "\"%s\"을(를) 사전에 추가" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "모두 무시" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "철자 제안" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "언어에 이상한 오류가 있습니다: %s" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "문자열 분석중 오류가 있습니다" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "이 신호는 오직 %d 인자에서 동작하며, $%d은(는) 올바르지 않습니다." + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "문서 파일 출력" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ 숫자" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "상황 편집" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "불러오기 위치..." + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "모두 시험" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "확인" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "URL 감지 - %s" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "목록 지우기" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "선택한 URL을 복사" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "복사" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "목록을 파일로 저장합니다" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d명의 관리자, 총 %d명" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "irc://서버:포트/대화방 형태의 URL을 엽니다." + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "Sysinfo: 정보 가져오기에 실패했습니다. 지원하지 않거나 오류입니다." + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "Sysinfo: 이름 정보 없음\n" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "Sysinfo: %s을(를) %d(으)로 설정했습니다\n" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "Sysinfo: 올바른 설정은 hide_os와 같이 각 정보에 대해 hide_*를 설정하는 방식입니다. 값을 두지 않으면 현재 설정값 (또는 기본값)을 보여줍니다.\n" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "Sysinfo: 잘못된 변수 이름\n" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "%s 플러그인 불러옴\n" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "%s 플러그인 불러오기 해제함\n" diff --git a/hexchat/po/lt.po b/hexchat/po/lt.po new file mode 100644 index 0000000..2b0c5ec --- /dev/null +++ b/hexchat/po/lt.po @@ -0,0 +1,6260 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Eldar Šabanovič <eldux777@gmail.com>, 2014 +# Gediminas Paulauskas <menesis@delfi.lt>, 2000 +# Marius Gedminas <mgedmin@b4net.lt>, 2007 +# Mindaugas Butkevicius <promind@live.com>, 2016 +# Moo, 2015-2018 +# Vaidrius Petrauskas <vaidrius@delfi.lt>, 2005 +# Žygimantas Beručka <zygis@gnome.org>, 2006 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-06-02 21:01+0000\n" +"Last-Translator: Moo\n" +"Language-Team: Lithuanian (http://www.transifex.com/hexchat/hexchat/language/lt/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: lt\n" +"Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "HexChat" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "IRC klientas" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "HexChat yra paprastas naudoti IRC klientas, leidžiantis jums saugiai prisijungti prie kelių tinklų, privačiai kalbėtis su atskirais naudotojais arba kanaluose, naudojant tinkinamą sąsają. Jūs netgi galite persiųsti failus." + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "HexChat palaiko tokias galimybes kaip: DCC, SASL, įgaliotuosius serverius, rašybos tikrinimą, signalizavimą, registravimą, tinkintas temas bei Phyton/Perl scenarijus." + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "Pagrindinis pokalbių langas" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "Kalbėkite su kitais žmonėmis internete" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "IM;Pokalbiai;" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "hexchat" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "Atvira saugi veiksena" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "HexChat temų tvarkytuvė" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Užsiėmęs" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Išeinu" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "Išjungtas" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "Įjungtas" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "{nenustatyta}" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Tinklas" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<joks>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Kanalas" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Laukiu" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Aktyvus" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Nepavyko" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Baigtas" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Susijungti" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Nutrauktas" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "Nepavyksta pasiekti %s\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Klaida" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s siūlo „%s“. Ar norite priimti?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "Nėra aktyvių DCC sesijų\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "_Atverti dialogo langą" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "_Išsiųsti failą" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "Na_udotojo informacija („WhoIs“)" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "_Pridėti į draugų sąrašą" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "_Ignoruoti" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "V_aldytojo veiksmai" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Suteikti operatoriaus statusą" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Pašalinti operatoriaus statusą" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "Suteikti balsą" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "Pašalinti balsą" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Išmesti/Blokuoti" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Išmesti" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "Blokuoti" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "Išmesti ir blokuoti" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Palikti kanalą" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Prisijungti prie kanalo..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "Įveskite kanalą prisijungti:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Serverio ryšiai" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "„Ping“ serveris" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Paslėpti versiją" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Skirti operatoriu" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "Pašalinti operatorių" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "viso gero" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Įveskite %s išmetimo priežastį:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "Siųsti failą" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "Dialogas" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "„WhoIs“" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Siųsti" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Kalbėti" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Išvalyti" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "„Ping“" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "Jus neturite rašymo teisės į %s. Nieko iš šios sesijos negalima išsaugoti. " + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "Neprotinga vykdyti IRC „root“ teisėmis! Susikurkite naudotojo paskyrą ir jungiantis naudokitės ja.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "TAIP " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "NE " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "%s us užpilė CTCP pranešimais, %s ignoruojamas\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "%s us užpildė MSG pranešimais, gui_autoopen_dialog OFF.\n" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "Įtvirtinta į %s" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "Nerasta" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "Įtvirtinta į:" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "Ieškoma %s..." + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s yra prisijungęs\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s yra atsijungęs\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Neesate prisijungę jokiame kanale. Badykite /join #<kanalas>\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Esate nesusijungę. Bandykite /server <hostas> [<prievadas>]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "Serveris %s jau yra tinkle %s.\n" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "Serveris %s pridėtas prie tinko %s.\n" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Jau pažymėtas kaip pasišalinęs: %s\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "Jau pažymėtas kaip sugrįžes.\n" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "Man reikia /bin/sh, kad galėčiau vykdyti!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "Galimos komandos:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "Vartotojo apibrėžtos komandos:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "Įskiepio apibrėžtos komandos:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Surinkite /HELP <komanda> norėdami gauti daugiau informacijos arba /HELP -l" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Nežinomas parametras '%s' ignoruojamas." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "Šis serveris nepalaiko tyliojo režimo." + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "Toks įskiepis nerastas.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "Šis įskiepis atsisako būti iškraunamas.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <vardas> <veiksmas> - prideda mygtuką po vartotojų sąrašu" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "ADDSERVER <NaujasTinklas><naujasserveris/6667>, prideda naują tinklą su nauju serveriu į tinklų sąrašą" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <komanda> - siunčia komandą į visus kanalus, kuriuose jus prisijungę" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "ALLCHAN <komanda> - siunčia komandą į visus kanalus aktyviame serveryje" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <komanda> - nusiunčia komandą visiems serveriams, prie kurių tu esi prisijungęs" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "AWAY [<priežastis>], pažymi jus kaip NĖRA (naudokite /BACK grįžimui)" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "BACK, nustato statūsą sugrižęs (ne pasišalinęs)" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <kaukė> [<bloko tipas>] - užblokuoja visus esančius aktyviame kanale, kurie atitnka užduotą kaukę. Jei jie jau yra kanale, ši komanda neišmeta jų (reikia kanalo operatoriaus teisių)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <kintamasis>[<reikšmė>]" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "CHARSET[<kodavimas>], gauti arba nustatyti kodavimą naudojamą aktyviam susijungimui" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "CLEAR [ALL|HISTORY|[-]<kiekis>], išvalo aktyvų tekstinį langą arba komandų istoriją" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "CLOSE [-m], Uždaro aktyvią kortelę, uždaro langą jei tai vienintelė kortelė, arba naudojant \"-m\" žymą, uždaro visus žinučių langus." + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <kodas|pakaita>, randa šalies kodą, pvz.: au = australija" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <slapyvardis> <žinutė> - siųsti CTCP žinutę vartotojui, dažniausios žinutės yra VERSION ir USERINFO" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "CYCLE [<kanalas>], padaliną aktyvų arba nurodytą kanalą ir tuojpat persijungia" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <slapyvardis> - priimti siūlomą failą\n\nDCC SEND [-maxcps=#] <slapyvardis> [failas] - nusiųsti kažkam failą\n\nDCC PSEND [-maxcps=#] <slapyvardis> [failas] - siųsti failą, naudojant pasyvią veikseną\n\nDCC LIST - parodyti „DCC“ sąrašą\n\nDCC CHAT <slapyvardis> - pasiūlyti kažkam „DCC CHAT“\n\nDCC PCHAT <slapyvardis> - pasiūlyti „DCC CHAT“, naudojant pasyvią veikseną\n\nDCC CLOSE <tipas> <slapyvardis> <failas> pavyzdys:\n\n/dcc close send jonassmitas failas.tar.gz" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <slapyvardis> - panaikina kanalo pusiau-operatoriaus teises vartotojui aktyviame kanale (reikia kanalo operatoriaus teisių)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <vardas> - ištrina mygtuką iš po vartotojo sąrašu" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <slapyvardis> - panaikina kanalo operatoriaus teises vartotojui aktyviame kanale (reikia kanalo operatoriaus teisių)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <slapyvardis> - panaikina balso teisę vartotojui aktyviame kanale (reikia kanalo operatoriaus teisių)" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON - atsijungia nuo serverio" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "DNS <slapyvardis|hostas|ip>, nustato IP ir hosto vardą" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <tekstas> - lokaliai atspausdina tekstą" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <komanda> - įvykdo komandą. Jei nurodoma -o žymė, komandos grąžinamas tekstas bus nusiųstas į aktyvų kanalą, kitu atveju jis atvaziduojamas aktyviame teksto lauke" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT - nusiunčia procesui SIGCONT signalą" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9] - nutraukia aktyvioje sesijoje vykdomą komandą. Jei nurodomas parametras -9, procesui bus nusiųstas SIGKILL signalas" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP - nusiunčia procesui SIGSTOP signalą" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE - nusiunčia duomenis proceso stdin įrenginiui" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "EXPORTCONF, eksportuoja HexChat nustatymus" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHHQ - panaikina aktyvaus serverio siuntimo eilę" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <hostas> [<prievadas>] - jungiasi per proxy serverį. Nutylimas portas - 23" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <slapyvardis> [slaptažodis], pašalina sudvejintą psiaudonimą" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <slapyvardis> - suteikia vartotojui kanalo pusiau-operatoriaus teises (reikia kanalo operatoriaus teisių)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <slaptažodis> - identifikuoja jus vardų serveriui" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <kaukė><tipai...><pasirinkimai...>\nkaukė - ignoruojamų hostų kaukė, pvz.: *!*@*.aol.com\ntipai - ignoruojamų duomenų tipai, vienas arba visi iš:\nPRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\npasirinkimai - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <slapyvardis> [<kanalas>] - pakviečia varotoją į kanalą, pagal nutilėjimą į aktyvųjį kanalą (reikia kanalo operatoriaus teisių)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <kanalas> - prisijungia prie kanalo" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "KICK <slapyvardis> [priežastis], išmeta vartotoją iš aktyvaus kanalo (reikia kanalo operatoriaus teisių)" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "KICKBAN <slapyvardis> [priežastis], užblokuoja ir išmeta vartotoją iš aktyvaus kanalo (reikia kanalo operatoriaus teisių)" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK - iššaukia naują užlaikymo patikrinimą" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n\n-h naudojamas paryškinti rastas eilute(s)\n\n-m naudojamas registro tapatinimui\n\n-r kai eilutė yra paieškos formato išraiška\n\n-- (dvygubas brukšnys) naudojamas pasirinkimų pabaigai indikuoti, kpavyzdžiui, kai ieškoma eilutės '-r'" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <byla>, pakrauna įskiepį arba skriptą" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP - atima kanalo pusiau-operatoriaus teises iš visų aktyviame kanale jas turinčių (reikia kanalo operatoriaus teisių)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP - atima kanalo operatoriaus teises iš visų aktyviame kanale jas turinčių (reikia kanalo operatoriaus teisių)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <veiksmas> - siunčia veiksmą į aktyvų kanalą (veiksmai rašomi 3-ju asmeniu, pvz.: /me pašoka)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK - išmeta iš aktyvaus kanalo visus išskyrus jus (reikia kanalo operatoriaus teisių)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MDEOP - atima kanalo operatoriaus teises iš visų aktyviame kanale jas turinčių (reikia kanalo operatoriaus teisių)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "MSG <slapyvardis> <žinutė>, siunčia privačią žinutę, išsiųskite \".\" norėdami persiųsti paskutiniam vartotojui arba pridėkite \"=\" pražioje DCC pokalbiui " + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "NAMES [kanalas], parodo kanalo vartotojų sąrašą" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <slapyvardis> <žinutė> - nusiunčia vartotojui CTCP įspėjimą" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <hostovardas> [<prievadas>]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <slapyvardis> - nustato jūsų psiaudonimą" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "NOTICE <slapyvardis/kanalas> <žinutė>, siunčia įspėjimą" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [-n tinklas1[,tinklas2,...]] [<slapyvardis>], parodo jūsų informuojamųjų sąrašą arba pridedą kažką į jį" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <slapyvardis> - suteikia vartotojui kanalo operatoriaus teises (reikia kanalo operatoriaus teisių)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<kanalas>] [<priežastis>] - palieka kanalą, pagal nutylėjimą - aktyvųjį" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <slapyvardis | kanalas> - siunčia CTCP „ping“ vartotojui arba kanalui " + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "QUERY [-nofocus] <slapyvardis> [žinutė], atveria naują privačios žinutės langą kažkam ir pasirintktinai išsiunčia žinutę" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "QUIET <kaukė> [<tilumotipas>], nutildo kiekvieną atitinkantį kaukę aktyviame kanale jei serveris palaiko." + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<priežastis>] - atsijungia nuo aktyvaus serverio" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <tekstas> - nusiunčia neformatuotą tekstą serveriui" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<hostas>] [<prievadas>] [<slaptažodis>], gali būti naudojamas kaip /RECONNECT persijungimui prie aktyvaus serverio arba kaip /RECONNECT ALL persijungimui prie visų atvirų serverių" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<hostas>] [<prievadas>] [<slaptažodis>], gali būti naudojamas kaip /RECONNECT persijungimui prie aktyvaus serverio arba kaip /RECONNECT ALL persijungimui prie visų atvirų serverių" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "RECV <tekstas>, siunčia neformatuotus duomenis į HexChat, tarsi jie būtų gauti iš IRC serverio" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "RELOAD <pavadinimas>, pakrauna išnaujp įskiepį arba skriptą" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <tekstas> - nusiunčia tekstą objektui aktyviame lange" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <slapyvardis> [<byla>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <hostas> <prievadas> <kanalas> - susijungia ir prisijungia prie kanalo" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <hostas> <prievadas> <kanalas> - susijungia ir prisijungia prie kanalo" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "SERVER [-ssl] <hostas> [<prievadas>] [<slaptažodis>],susijungia su serveriu, pagal nutylėjimą įprastiems sujungimams naudojamas portas 6667, o ssl sujungimams 6697" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <serveris> [<prievadas>] [<slaptažodis>] - susijungia su serveriu, pagal nutylėjimą naudojamas portas 6667" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-off|-on] [-quiet] <kintamasis> [<reikšmė>]" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "SETCURSOR [-|+]<pozicija>, pakeičia kursoriaus pozicija įveties lauke" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "SETTAB <naujas pavadinimas>, keičia kortelės pavadinima, galioja kortelės pavadinimo ilgio ryba tab_trunc" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "SETTEXT <naujas tekstas>, pakeičia tekstą įvesties lauke" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<tema>], nustato kanalo temą, jei ji duota, arba parodo aktyvią temą" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "\nTRAY -f <periodas> <byla1> [<byla2>] keičia užduočių juostos piktogramą tarp dviejų paveikslėlių nustatytu periodu.\n\nTRAY -f <filename> nustato fiksuotą užduočių juostos piktogramą.\n\nTRAY -i <number> keičia užduočių juostos piktogramą vidiniu paveikslėliu.\n\nTRAY -t <text> nustato užduočių juostos patarimą.\n\nTRAY -b <title> <text> nustato užduočių juostos pranešimo baliono tekstą." + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <kaukė> [<kaukė>...], nuima bloką vartotojams atitinkantiems nurodytą kaukę arba kaukęs." + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <kaukė> [QUIET]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <pavadinimas> - iškrauna įskiepį ar skriptą" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "UNQUIET <kaukė> [<kaukė>...], nuima nutyldyma vartotojams atitinkantiems nurodytas kaukes, jei serveris palaiko." + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <adresas> - atveria adresą naršyklėje" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "USELECT [-a] [-s] <slapyvardis1> <slapyvardis2> ir t.t. - paryškina vartotojo(-ų) slapyvardžius kanalo vartotojų sąraše" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <slapyvardis> - suteikia vartotojui balso teisę (reikia kanalo operatoriaus teisių)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <žinutė> - nusiunčia žinutę į visus kanalus" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <žinutė> - siunčia žinutę visiems aktyvaus kanalo operatoriams" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "Vartotojo komanda skirta: %s\n" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "Naudojimas: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nŠiai komandai nėra pagalbos įrašo.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "Nėra tokios komandos.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "Netinki parametrai vartotojo komandai.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "Per daug rekursinių vartotojo komandų, vykdymas nutraukiamas." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "Nežinoma komanda %s. Bandykite /help\n" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "Nėra hexchat_plugin_init simbolio; ar tai tikrai HexChat įskiepis?" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "*⇥Teikiamo ident užklausa nuo %s kaip %s" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "*\tKlaida, paleidžiant identd serverį: %s" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "IDENTD <portas> <vartotojas>" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "Laikmatis %d ištrintas.\n" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "Toks įrašo numeris nerastas.\n" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "Įdiegtų laikmačių nėra.\n" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "Ref# Sekundžių Kartojimo Komanda\n" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "%5d %8.1f %7d %s\n" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Ar jus įsitikinę, kad tai SSL šifravimą palaikantis serveris ir prievadas?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "Nepavyksta nustatyti hosto vardą: %s\nPatikrinkite jūsų IP nustatymus!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "Proxy jungimasis nepavyko.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Bandomas kitas serveris esantis „%s“...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "Dėmesio: „%s“ koduotė nežinoma. Konvertavimas tinkle „%s“ nebus vykdomas." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "%C18*%O$t%C18$1%O pridėtas į informuojamųjų sąrašą." + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "%C22*%O$t%C22$1%O: %C18$2%O esantis %C24$4%O per %C26$3%O" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "%C22*%O$tNegaliu prisijungti %C22$1 %O(%C20Jus esate užblokuotas%O)." + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "%C29*%O$tPripažintos galimybės: %C29$2%O" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "%C29*%O$tGalimybės pašalintos: %C29$2%O" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "%C23*%O$tPalaikomos galimybės: %C29$2%O" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "%C23*%O$tUžklaustos galimybės: %C29$1%O" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "%C24*%O$t%C28$1%O dabar žinomos kaip %C18$2%O" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O blokuoja %C18$2%O" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "%C22*%O$tKanalas %C22$1%O sukurtas %C24$2%O" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O atima kanalo pusiau-operatoriaus statusą iš %C18$2%O" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O atima kanalo operatoriaus statusą iš %C18$2%O" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O atima balsą iš %C18$2%O" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%C nustato išimtį draudimui %C18$2%O" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O suteikia kanalo pusiau-operatoriaus statusą %C18$2%O" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%C nustato išimti kvietimo draudimui %C18$2%O" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%UKanalo vartotojų tema" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "%C22*%O$t%C26$1%O nustato veikseną %C24$2$3%O %C22$4%O" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "%C22*%O$tKanalas %C22$1%O veiksenos: %C24$2" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O suteikia kanalo operatoriaus statusą %C18$2%O" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O nustato nutildymą %C18$2%O" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%C pašalina išimti draudimui %C18$2%O" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%C pašalina išimtį pakvietimo draudimui %C18$2%O" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "%C22*%O$t%C26$1%O pašalina kanalo raktažodį" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "%C22*%O$t%C26$1%O pašalina vartotojų ribą" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O nustato kanalo raktažodį į %C24$2%O" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O nustato kanalo ribą į %C24$2%O" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O pašalina bloką %C18$2%O" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O pašalina nutildymą %C18$2%O" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "%C22*%O$tKanalo %C22$1%O url: %C24$2" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O suteikia balsą %C18$2%O" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "%C23*%O$tSusijungta. Dabar registruojamasi." + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "%C23*%O$tSusijungiama su %C29$1%C (%C23$2:$3%O)" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "%C20*%O$tSusijungimas nepavyko (%C20$1%O)" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "%C24*%O$tGautas CTCP %C24$1%C nuo %C18$2%O" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "%C24*%C$tCTCP Užklausa %C24$1%C nuo %C18$2%C (kam %C22$3%C)%O" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "%C24*%O$tGautas CTCP Garsas %C24$1%C nuo %C18$2%O" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "%C24*%O$tCTCP Garso Siuntimas %C24$1%C nuo %C18$2%C (kam %C22$3%O)" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "%C23*%O$tDCC POKALBIS su %C18$1%O nutrauktas." + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "%C24*%O$tSėkminga DCC POKALBIO jungtis su %C18$1%C %C30[%C24$2%C30]%O" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "%C20*%O$tDCC POKALBIS su %C18$1%O prarastas (%C20$4%O)" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "%C24*%O$tGautas DCC POKALBIO pasiūlymas nuo %C18$1%O" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "%C24*%O$tSiūlomas DCC POKALBIS su %C18$1%O" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "%C24*%O$tJau siūlote POKALBĮ su %C18$1%O" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "%C20*%O$tDCC $1 jungtis su %C18$2%O nepavyko (%C20$3%O)" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "%C23*%O$tGauta '%C23$1%C' nuo %C18$2%O" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "%C20*%O$tGauta netaisyklinga DCC užklausa nuo %C18$1%O.$a010%C23*%O$tPaketo turinys: %C23$2%O" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "%C24*%O$tSiūloma '%C24$1%O' į %C18$2%O" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "C23*%O$tTokios DCC užklausos nėra." + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "%C23*%O$tDCC RECV '%C23$2%O' į %C18$1%O nutraukta." + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "%C24*%O$tDCC RECV '%C23$1%O' nuo %C18$3%O užbaigta %C30[%C24$4%O cps%C30]%O" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$tSėkminga DCC RECV jungtis su %C18$1 %C30[%O%C24$2%C30]%O" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "%C20*%O$tDCC RECV '%C23$1%O' nuo %C18$3%O nepavyko (%C20$4%O)" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "%C20*%O$tDCC RECV: Atidaryti '%C23$1%C' rašymui nepavyko (%C20$2%O)" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "%C23*%O$tFailas '%C24$1%C' jau yra, išsaugoma kaip '%C23$2%O'." + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "%C24*%O$t%C18$1%C užklausė tęsimo '%C23$2%C' nuo %C24$3%O." + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "%C23*%O$tDCC SEND '%C23$2%C' į %C18$1%O nutraukta." + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "%C24*%O$tDCC SEND '%C23$1%C' į %C18$2%C užbaigta %C30[%C24$3%C cps%C30]%O" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$tSėkminga DCC SEND jungtis su %C18$1 %C30[%O%C24$2%C30]%O" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "%C20*%O$tDCC SEND '%C23$1%C' į %C18$2%C nepavyko (%C20$3%O)" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "%C24*%O$t%C18$1%C siūlo '%C23$2%C' (%C24$3%O baitai)" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "%C20*%O$tDCC $1 '%C23$2%C' į %C18$3%O užvilkinta, nutraukiama." + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "%C20*%O$tDCC $1 '%C23$2%C' į %C18$3%O užklausos laikas baigėsi, nutraukiama." + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "%C24*%O$t%C18$1%O ištrinta iš pranešimų sąrašo." + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "%C20*%O$tAtsijungta (%C20$1%O)" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "%C24*%O$tRadome Jūsų IP: %C30[%C24$1%C30]%O" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "%O%C18$1%O prideta į ignoruojamųjų sąrašą." + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "%O%C18$1 Ignoravimas%O pakeistas." + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "Pašalinote %O%C18$1%O iš ignoravimo sąrašo." + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "%OIgnoravimo sąrašas yra tuščias." + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "%C20*%O$tNegalite įeiti į %C22$1%C (%C20Kanalas tik su pakvietimais%O)" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "%C24*%O$tJus pakvietė į %C22$1%O - %C18$2%O (%C29$3%O)" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "%C23*$t$1 ($3%C23) atėjo" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "%C20*%O$tNegalite įeiti %C22$1%C (%C20Reikia raktažodžio%O)" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "%C22*%O$t%C26$1%C išspyrė %C18$2%C iš %C22$3%C (%C24$4%O)" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "%C19*%O$t%C19Buvote atjungti - %C26$1%C (%C20$2%O)" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "%C29*%O$t%C29MOTD Praleistas%O" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "%C23*%O$t%C28$1%C jau naudojamas. Bandome %C18$2%O..." + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "%C23*%O$t%C28$1%C yra netinkamas ar klaidingas. Bandome %C18$2%O..." + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "%C20*%O$tSlapyvardis yra klaidingas arba jau naudojamas. Bandykite kitą slapyvardį naudodami /NICK." + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "%C20*%O$tTokio DCC nėra." + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "%C23*%O$tŠiuo metu jokių procesų nevykdome" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "%C23*%O$tPranešimas: %C18$1%C yra AWAY (%C24$2%O)" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "%C23*%O$tPranešimas: %C18$1%C grįžo" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tPranešimų sąrašas yra tuščias" + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "%C23*%O$t%C23$1%O vartotojų pranešimų sąraše" + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "%C23*%O$tPranešimas: %C18$1%C yra atsijungę (%C29$3%O)" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "%C23*%O$tPranešimas: %C18$1%C prisijungė (%C29$3%O)" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "%C24*$t$1 ($2%C24) išėjo" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "%C24*$t$1 ($2%C24) išėjo ($4)" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "%C24*%O$tPing atsakymas nuo %C18$1%C: %C24$2%O sekundė(s)" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "%C20*%O$tNėra PING atsakymo jau %C24$1%O sekundžių, atsijungiama." + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "%C24*%O$tA procesas jau veiksnus" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "%C24*$t$1 atsijungė ($2)" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "%C24*%O$t%C26$1%C nustato %C30[%C24$2%C30]%O" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "%O-%C29$1/Wallops%O-$t$2" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "%C24*%O$tPeržiūrime Jūsų IP - %C18$1%O..." + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "%C23*%O$tAutorizuojama per SASL kaip %C18$1%O (%C24$2%O)" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "%C29*%O$tPrisijungėte." + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "%C29*%O$tPeržiūrima %C29$1%O" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "%C23*%O$tPirminė jungties užklausa sustabdyta (%C24$1%O)" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "%C22*%O$tTema %C22$1%C yra: $2%O" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "%C22*%O$t%C26$1%C pakeitė temą į: $2%O" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "%C22*%O$tTemą %C22$1%C nustatė %C26$2%C (%C24$3%O)" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C20*%O$tNežinomas tinklas. Patikrinkite ar nėra klaidos įvestyje." + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "%C20*%O$tĮeiti negalite į %C22$1%C (%C20Pasiektas lankytojų limitas%O)" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "%C22*%O$tLankytojų kanale %C22$1%C: %C24$2%O" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%C pasišalino %C30(%C23$2%O%C30)%O" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "%C23*%O$t%C28[%C18$1%C28] %OWHOIS sąrašo pabaiga." + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O neutralus %C23$2%O" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O neutralus %C23$2%O, prisijungta: %C23$3%O" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O tikras Tinklas: %C23$2%O, Tikras IP: %C30[%C23$3%C30]%O" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "%C19*%O$tDabar kalba %C22$2%O" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "%C19*%O$tBuvote išspirti iš %C22$2%C - %C26$3%O (%C20$4%O)" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "%C19*%O$tIšėjote iš kanalo %C22$3%O" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "%C19*%O$tIšėjote iš kanalo %C22$3%C (%C24$4%O)" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "%C20*%O$tPakvietėte %C18$1%O į %C22$2%O (%C24$3%O)" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "%C20*%O$tJūs dabar esate žinomi kaip %C18$2%O" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "Įkelti įrašai iš" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** REGISTRAVIMAS UŽBAIGIAMAS %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** REGISTRAVIMAS PRADEDAMAS %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "* Negalime atidaryti įrašų failų. patikrinkite\nprieigą %s" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "Kairioji žinutė" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "Dešinioji žinutė" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "IP adresas" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Vartotojo vardas" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "Prisijungiančio vartotojo slapyvardis" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "Kanalas, prie kurio jungiamasi" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "Vartotojo kompiuteris" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "Vartotojo paskyra" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Slapyvardis" + +#: src/common/text.c:980 +msgid "The action" +msgstr "Veiksmas" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "Veiksenos simbolis" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "Identifikuotas tekstas" + +#: src/common/text.c:987 +msgid "The text" +msgstr "Tekstas" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "Žinutė" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Serverio vardas" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "Pripažintos galimybės" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "Pašalintos Galimybės" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "Serverio galimybės" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "Užklaustos galimybės" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Senas slapyvardis" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Naujas slapyvardis" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "Vartotojo, pakeitusio temą, slapyvardis" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Tema" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "Išmetusio vartotojo slapyvardis" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "Išmestas vartotojas" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "Kanalas" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "Priežastis" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "Paliekančiojo kanalą vartotojo slapyvardis" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "Laikas" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "Kūrėjas" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Slapyvardis" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Priežastis" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Adresas" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "Nuo ko" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "Laikas x.x formatu (žr. žemiau)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "Kanalas eina į" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "Garsas" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "Asmens slapyvardis" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "CTCP įvykis" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "Nustačiusio raktą asmens slapyvardis" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "Raktas" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "Nustačiusio riba asmens slapyvardis" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "Riba" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "Suteikusio oeratoriaus statusą asmens slapyvardis" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "Gavusiojo operatoriaus statuso asmens psiaudonimas" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "Gavusiojo pusiau-operatoriaus asmens slapyvardis" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "Suteikusio pusiau operatoriaus statusą asmens slapyvardis" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "Suteikusio balsą asmens slapyvardis" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "Gavusiojo balsą asmens slapyvardis" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "Užblokavusio asmens slapyvardis" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "Blokavimo kaukė" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "Nutildžiusio asmens slapyvardis" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "Nutildymo kaukė" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "Pašalinusio raktą asmens slapyvardis" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "Pašalinusio ribą asmens slapyvardis" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "Asmens, kuris panaudojo DEOP, slapyvardis" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "Netekusio operatoriaus statuso asmens slapyvardis" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "Asmens, kuris panaudojo DEHALFOP, slapyvardis" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Netekusio pusiau-operatoriaus statuso asmens slapyvardis" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "Asmens, kuris panaudojo DEVOICE, slapyvardis" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "Netekusiojo balso asmens slapyvardis" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "Asmens, kuris nuėmė ban'ą, slapyvardis" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "Asmens, kuris nuėmė tylos režimą, slapyvardis" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "Padariusiojo išimtį draudimui asmens slapyvardis" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "Išimties draudimui kaukė" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "Pašalinusiojo išimtį draudimui asmens slapyvardis" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "Pakvietusiojo slapyvardis" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "Kvietimo formatas" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "Atšaukusiojo kvietimą slapyvardis" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "Nustačiusiojo veikseną slapyvardis" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "Veiksenos ženklas (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "Veiksenos raidė" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "Kanalas, kuriame jis nustatomas" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Tikrasis vardas" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Kanalo narys/IRC operatorius" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Serverio informacija" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Neveiklumo laikas" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Prisijungimo laikas" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Pasišalinimo priežastis" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Žinutė" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Paskyra..." + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "Realus vartotojas@hostas" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "Tikras IP" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Kanalo pavadinimas" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "Mechanizmas" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "Pradinis numeris arba identifikatorius" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Tekstas" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Pakvietusio Jus slapyvardis" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Naudotojai" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "Slapyvardis užimtas" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Bandomas slapyvardis" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Prievadas" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "Veiksenų eilutė" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "DCC tipas" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Failo vardas" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Paskirties failo pavad." + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "greitis" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "Kelias" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Pozicija" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Dydis" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "DCC eilutė" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "Pasišalinimo priežastis" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "Stebimųjų skaičius" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Ankstesnysis failo pavad." + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Naujasis failo pavad." + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Gavėjas" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Adreso formatas" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Adresas" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "Paketas" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "sekundžių" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "Pakviestojo slapyvardis" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Draudimo formatas" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "Uždraudusysis" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Draudimo laikas" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "Nepavyko perskaityti garso failo:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "Serveris nutraukė ryšį" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "Jungimasis atmestas" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "Maršrutas nerastas" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Susijungimo laikas išseko" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "Nepavyko priskirti šio adreso" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "Jungimasis nutrūko" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "Dangun žengimo sala" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Andora" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Jungtiniai Arabų Emyratai" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "Su aviacija susijusios sritys" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Afganistanas" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Antigva ir Barbuda" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Angilija" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Albanija" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Armėnija" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Olandijos Antilai" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Antraktida" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Argentina" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "Atvirkštinis DNS" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Rytų Samoa" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "Azijos-Ramiojo vandenyno regionas" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Autrija" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Australija" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "Alando salos" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Azerbaidžanas" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Bosnija ir Hercegovina" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Barbadosas" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Bangladešas" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Belgija" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Burkina Fasas" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Bulgarija" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Bahreinas" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Burundis" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "Verslo" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Beninas" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Bermudos" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Brunėjus" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Bolivija" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Brazilija" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Bahamos" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Butanas" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Buvė sala" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Botsvana" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Gudija" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Belizas" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Kanada" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "Katalonų" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Kokosų salos" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "Demokratinė Kongo respublika" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "Centrinės Afrikos respublika" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Kongas" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "Šveicarija" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "Dramblio Kaulo Krantas" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Kuko salos" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Čilė" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Kamerūnas" + +#: src/common/util.c:738 +msgid "China" +msgstr "Kinija" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Kolumbija" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Komercinė įstaiga" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "Kooperatyvai" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Kosta Rika" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "Serbija ir Juodkalnija" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Kuba" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Žaliojo Kyšulio salos" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Kalėdų sala" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Kipras" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "Čekija" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "Rytų Vokietija" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Vokietija" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Džibutis" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Danija" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Dominika" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "Dominikana" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Alžyras" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Ekvadoras" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Švietimo įstaiga" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Estija" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Egiptas" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Vakarų Sachara" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Eritrėja" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "Ispanija" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Etiopija" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "Europos Sąjunga" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Suomija" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Fidžis" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Folklando salos" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Mikronezija" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Farerų salos" + +#: src/common/util.c:770 +msgid "France" +msgstr "Prancūzija" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Gabonas" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Didžioji Britanija" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Gruzija" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Prancūzijos Gviana" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "Normanų salos" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Gana" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Gibraltaras" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Grenlandija" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Gambija" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Gvinėja" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Vyriausybinė institucija" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Gvadelupė" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Pusiaujo Gvinėja" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Graikija" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Pietų Georgijos ir Pietų Sandvičo salos" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Gvatemala" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Guamas" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Bisau Gvinėja" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Gajana" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Honkongas" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Herdo ir Makdonaldo salos" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Hondūras" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Kroatija" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Haitis" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Vengrija" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Indonezija" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Airija" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Izraelis" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "Meno sala" + +#: src/common/util.c:801 +msgid "India" +msgstr "Indija" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "Informacinis" + +#: src/common/util.c:803 +msgid "International" +msgstr "Tarptautinis" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Britų teritorija Indijos vandenyne" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Irakas" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "Iranas" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Islandija" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Italija" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "Džersis" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Jamaika" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Jordanija" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "Kompanijos darbai" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Japonija" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Kenija" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Kirgizija" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Kambodža" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Kiribatis" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Kanarų salos" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "Sent Kitsas ir Nevis" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Šiaurės Korėja" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Pietų Korėja" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Kuveitas" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Kaimanų salos" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Kazachstanas" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Laosas" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Libanas" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Sent Lusija" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Lichtenšteinas" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Šri Lanka" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Liberija" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Lesotas" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Lietuva" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Liuksemburgas" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Latvija" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Libija" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Morokas" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Monakas" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Moldavija" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "Juodkalnija" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "JAV medicinos įstaiga" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Madagaskaras" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Maršalo salos" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Karinė institucija" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Makedonija" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Malis" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Birma" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Mongolija" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Makau" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "Mobilieji prietaisai" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Šiaurinės Marianų salos" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Martinika" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Mauritanija" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Monseratas" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Mauricijus" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "Muziejai" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Maldyvai" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Malavis" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "Meksika" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Malaizija" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Mozambikas" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Namibija" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "Individų vardai" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Naujoji Kaledonija" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Nigeris" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Tinklo įstaiga" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Norfolko sala" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Nigerija" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Nikaragva" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Olandija" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Norvegija" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Nepalas" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Niujė" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "Naujoji Zelandija" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Omanas" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "Ne pelno įstaiga" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Prancūzijos Polinezija" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Papua Naujoji Gvinėja" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Filipinai" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Pakistanas" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Lenkija" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "Sent Pjeras ir Mikelonai" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Pitkerno salos" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Puerto Rikas" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "Profesijos" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "Palestinos teritorija" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Portugalija" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Paragvajus" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Kataras" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Rejunjonas" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Rumunija" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "Senosios mokyklos ARPAnetas" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "Serbija" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Rusijos federacija" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Ruanda" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Saudo Arabija" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Saliamono salos" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Seišeliai" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Sudanas" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Švedija" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Singapūras" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "Šv. Elenos kolonija" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Slovėnija" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbardo ir Jano Majaus salos" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "Slovakija" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Siera Leonė" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "San Marinas" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Senegalas" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Somalis" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Surinamas" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "Pietų Sudanas" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "San Tomė ir Prinsipė" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Buvusi SSRS" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "Salvadoras" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Sirija" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Svazilandas" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Turkso ir Kaikoso salos" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Čadas" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "Interneto Komunikacijų Paslaugos" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "Indijos vandenyno pietų teritorijos" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Togas" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Tailandas" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Tadžikija" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Rytų Timoras" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Turkmėnija" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Tunisas" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Turkija" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "Kelionės ir turizmas" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Trinidadas ir Tobagas" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Taivanas" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Tanzanija" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Ukraina" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Jungtinė Karalystė" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "Jungtinės Amerikos Valstijos" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Urugvajus" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Uzbekistanas" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Vatikanas" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "Sent Vinsentas ir Grenadinos" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Venesuela" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "Mergelės salos (D. Brit.)" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "Mergelės salos (JAV)" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Vietnamas" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "Valiso ir Futunos salos" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "Suaugusiųjų pramogos" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Jemenas" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Majota" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Jugoslavija" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Pietų Afrika" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Zambija" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Zimbabvė" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "Nepavyko prisijungti prie sesijos magistralės" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "Nepavyko pabaigti NameHasOwner" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "Nepavyko pabaigti Command" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "Nuotolė prieiga" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "įskiepis nuotoliniam priėjimui per DBUS" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Nepavyko prisijungti prie sesijos magistralės: %s\n" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Nepavyko gauti %s: %s\n" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Simbolių lentelė" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "Blokai" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "Išimtys draudimams" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "Išimtis draudimui" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "Pakvietimai" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Pakvietimas" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "Nutildymai" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "Nutildymas" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "Kopijuoti kaukę" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "%s ant %s per %s" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "Kopijuoti įvestį" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "Neprisijungęs" + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "Jus turite išrinkti kelis blokus" + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "Ar tikrai norite pašalinti išvardintus punktus esančius %s?" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "Tipas" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Šablonas" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "Nuo" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Data" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Jus galite tik atidaryti Blokų sąrašo langą kol esate kanalo kortelėje" + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Pašalinti" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Apkirpti" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Atnaujinti" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Rodoma %d/%d naudotojų, esančių %d/%d kanaluose." + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Pasirinkite išvesties failą" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "Prisi_jungti prie kanalo" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "_Kopijuoti kanalo pavadinimą" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "Kopijuoti _temos tekstą" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "I_eškoti" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "_Atsisiųsti sąrašą" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "_Išsaugoti sąrašą..." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "Rodyti tik:" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "kanalus su" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "iki" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "naudotojų." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "Kur ieškoti:" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Kanalo pavadinimas" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "Paieškos tipas:" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "Paprasta paieška" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "Šablono atitikmuo (pakaitos simboliai)" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "Reguliarusis reiškinys" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Rasti:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Siųsti %s failą" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "Failas yra netęstinas" + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "Failo prieiga negalima: %s\n%s.\nTęsti neįmanoma." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "Failas parsisiuntimo kataloge yra didesnis nei siūlomas failas. Tęsti neįmanoma." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "Negalite tęsti to paties failo iš kelių skirtingų žmonių." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Būsena" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Failas" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Abu" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "Išsiuntimai" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "Parsisiuntimai" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "Išsamiau" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "Byla:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "Adresas:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Nutraukti" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Priimti" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Pratęsti" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "Atverti aplanką..." + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Gauti" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Siųsti" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "Pradžios laikas" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "Pridėti" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Ištrinti" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Atšaukti" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Išsaugoti" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "Nesijungti prie serverių automatiškai" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "Naudoti kitą konfiguracijos katalogą" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "Nekrauti automatiškai įskiepių" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "Parodyti įskiepių automatinio pakrovimo katalogą" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "Parodyti vartotojo konfiguracijos katalogą" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "Atidaryti irc://serveris:prievadas/kanalas?raktas adresą" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "Įvykdyti komandą:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "Atidaryti adresą arba įvykdyti komandą egzistuojančiame HexChat" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Pradėti minimizuojant langą. Lygis 0=normalus 1=piktograma 2=užduočių juosta" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "lygis" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "Rodyti versijos informaciją" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "Nepavyko atidaryti šriftą:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "Paieškos buferis yra tuščias.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d baitų" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Tinklo išsiuntimo eilė: %d baitų" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "Nepavyksta įrašyti į tą failą." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "Nepavyksta perskaityti to failo." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "" + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Privatus" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Įspėjimas" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "Nebeignoruoti" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "Ar jus užtikrinti, kad norite pašalinti visus ignoravimus?" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "Įveskite ignoravimo kaukę:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Ignoravimo statistika:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Kanalas:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privatus:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Įspėjimas:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Pakvietimas:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "Pridėti..." + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "kanalo pavadinimas per trumpas, bandykite dar kartą." + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "Ryšys užbaigtas - %s" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "Prisijungimas prie %s užbaigtas." + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "Ką norėtumėte daryti toliau?" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "_Nieko, aš prisijungsiu prie kanalo vėliau." + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "Prisi_jungti prie šio kanalo:" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Jeigu žinote kanalo, prie kurio norėtumėte jungtis, pavadinimą, įrašykite jį čia." + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "A_tverti kanalų sąrašą." + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "Kanalų sąrašo gavimas gali užimti vieną ar dvi minutes." + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "V_isada po prisijungimo rodyti šį dialogą." + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "%s tema yra: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "Tema nenustatyta" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "Baigti HexChat darbą?" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "Kitą kartą neklausti." + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Esate prisijungę prie %i IRC tinklų." + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "Ar tikrai norite išeiti?" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "Yra aktyvių failų siuntimų." + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "_Sumažinti į dėklą" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "Įterpti atributą arba spalvos kodą" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>Pastorintas</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>Pabrauktas</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "<i>Pasvyręs</i>" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "Normalus" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "Spalvos 0-7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "Spalvos 8-15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "_Nustatymai" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "_Registruoti į diską" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "Pap_ildomi signalai" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "_Atskirti" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "_Užverti" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "Filtruoti spalvas" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "Blokų sąrašas" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Raktažodis" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Įveskite naują slapyvardį:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "Rezultatų nerasta." + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "Paieška priėjo pabaigą arba nieko nerasta." + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "_Paryškinti visus" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "Paryškinti visus atitikmenis ir pabraukti dabartinį." + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "Ski_rti raidžių dydį" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "Atlikti paiešką skiriant raidžių dydį." + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Nežinoma" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Tikras vardas:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "Naudotojas:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "Paskyra:" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "Šalis:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "Serveris:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "prieš %u minučių" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "Dabar, meniu juosta yra paslėpta. Jūs galite parodyti ją vėl, nuspausdami Control+F9 (Vald+F9) arba spusteldami dešiniu pelės mygtuku tuščioje pagrindinio teksto srities dalyje." + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "Atidaryti nuorodą naršyklėje" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "Kopijuoti pasirinktą nuorodą" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "Kuo pakeisti" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "He_xChat" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "_Nauja" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "Serverio langas" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "Kanalo langas" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "_Baigti" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "_Rodinys" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "_Meniu juosta" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "_Temos juosta" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "Na_udotojų sąrašas" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "Veiksen_os mygtukai" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "_Kanalų perjungiklis" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "Kor_telės" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "M_edis" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "Ti_nklo matuokliai" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Išjungta" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "Grafikas" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "_Visas ekranas" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "_Serveris" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "_Atsijungti" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "P_risijungti iš naujo" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "Nus_tatymai" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "_Nuostatos" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "Lan_gas" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "_Kopijuoti žymėjimą" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "Išva_lyti tekstą" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "_Pagalba" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "_Turinys" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "_Apie" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Pavadinimas" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Paskutinį kartą matytas" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Niekada" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "prieš %d minučių" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "Prieš valandą" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "prieš %d valandų" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "Atidaryti dialogą" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "Privati žinutė nuo: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "Atku_rti langą" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "_Slėpti langą" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "Kanalo žinutė" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "Privati žinutė" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "Paryškinta žinutė" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Versija" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Aprašas" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Pasirinkite norimą įkelti įskiepį ar scenarijų" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "Į_kelti" + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "Išsaugoti kaip..." + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "Išvalyti neapdorotą žurnalą" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Naujas tinklas" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Ar tikrai pašalinti \"%s\" tinklą ir visus jo serverius?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "Būdas kaip prisistatote serveriui. Tinkintiems prisijungimo metodams naudokite susijungimo komandas." + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "Serveriai" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "Autosusijungimo kanalai" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "Susijungimo komandos" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "%n=Slapyvardis\n%p=Slaptažodis\n%r=Tikras vardas\n%u=Naudotojo vardas" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "Raktas (Slaptažodis)" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "R_edaguoti" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "Jungtis tik prie pasirinkto serverio" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "Automatiškai jungtis prie šio tinklo" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "Naudoti visuotinę naudotojo informaciją" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "_Slapyvardis:" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "Antras pasirinkimas:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "Tikras _vardas:" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "Na_udotojo vardas:" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "Prisijungimo metodas:" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Slaptažodis:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "Prisijungimui naudojamas slaptažodis. Jei abejojate, palikite tuščią." + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "Simbolių rinkinys:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "Naudotojo Informacija" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "Trečias pasirinkimas:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Tinklai" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "Paleidus, praleisti tinklų sąrašą" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "Rodyti tik mėgstamus" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "R_edaguoti..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "_Rikiuoti" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "_Mėgstamas" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "Pažymėti ar nežymėti šio tinklo kaip mėgstamo." + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "Afriekiečių" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Albanų" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Azerbaidžanų" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "Baskų" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Gudų" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Bulgarija" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "Kinų (Supaprastinta)" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "Kinų (Tradicinė)" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "Čekų" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "Danų" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "Olandų" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "Anglų (Britų)" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "Anglų" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Estų" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "Suomių" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "Prancuzų" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "Vokiečių" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "Graikų" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "Indija" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "Vengrų" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "Indoneziečių" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "Italų" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "Japonų" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "Korėjiečių" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "Latvių" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "Lietuvių" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "Makedonų" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Malajų" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "Norvegų (Bokmal)" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "Norvegų (Nynorsk)" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "Lenkų" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "Portugalų" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "Protugalų (Brazilų)" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "Pudžabų" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "Rusų" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "Serbų" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "Slovakų" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "Slovėnų" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "Ispanų" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "Švedų" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Tailandiečių" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "Turkų" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "Ukrainiečių" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Vietnamiečių" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "Valonų" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Pagrindinė" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "Kalba:" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "Pagrindinis šriftas:" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Šriftas:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "Teksto langas" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "Spalvoti slapyvardžiai" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "Suteikti kiekvienam asmeniui IRC skirtingą spalvą" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "" + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Fono paveikslas:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "Permatomumo nustatymai" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "Laiko žymos" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "Įjungti laiko žymas" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "Laiko žymų formatas:" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "" + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "" + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "Antraštės juosta" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "Rodyti kanalo veiksenas" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "Rodyti naudotojų skaičių" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "Rašybos tikrinimas" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "" + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "Nerikiuotas" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Aukščiausia" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Žemiausia" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Paslėpta" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "Vartotojų sąrašas" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "Spalvinti slapyvardžius naudotojų sąraše" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Langai" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Kortelės" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "Visada" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "Papildomoje kortelėje" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "Priekinėje kortelėje" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "Atidaryti papildomą kortelę serverio žinutėms" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "Atidaryti naują kortelę, kai gaunate privačią žinutę" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "Rikiuoti korteles abėcėlės tvarka" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "Rodyti piktogramas kanalo medyje" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "Mažesnis tekstas" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "" + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "Kortelės ar langai" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "Žinutės" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "Klausti patvirtinimo" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "Failai ir katalogai" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Atsiųsti failus į:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "Perkelti užbaigtus failus į:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "Signalai" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "Dėklo elgsena" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "Įjungti sistemos dėklą" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "Sumažinti į dėklą" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "Uždaryti į dėklą" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "Automatiškai keisti būseną, kai slepiama į dėklą." + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "Nėra" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Rodyti „nėra“ vieną kartą" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "" + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "Automatiškai įtraukti spalvų informaciją" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "Tikras vardas:" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "Alternatyvūs šriftai:" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "Atsijungus, automatiškai iš naujo prisijungti prie serverių" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "Automatinio prisijungimo iš naujo delsa:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Loginimas" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "Įjungti pokalbių registravimą į diską" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Serveris %c=Kanalas %n=Tinklas." + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URL" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "Įjungti URL registravimą į diską" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(Uždraustas)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "Tik DCC" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "Jūsų adresas" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "" + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "Failų persiuntimai" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "DCC IP adresas:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "" + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "" + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Prievadas:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Tipas:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "Naudotojo vardas:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "Įjungta" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Pasirinkti šriftą" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Naršyti..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "Atidaryti duomenų aplanką" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Pasirinkti spalvą" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "Teksto spalvos" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "mIRC spalvos:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Priekinis planas:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Fonas:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "Sąsajos spalvos" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "Nauja žinutė:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Įvykis" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "Pasirinkti garso failą" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "Garso failas:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "_Naršyti..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "_Groti" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Sąsaja" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "Išvaizda" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Įvesties laukas" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Vartotojų sąrašas" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "Kanalų perjungiklis" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Spalvos" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Kalbėjimas" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "Garsai" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "Pažangus" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Tinklo nustatymas" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Failų persiuntimai" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Kategorijos" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "" + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "Nuostatos - %s" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "<i>(nėra užuominų)</i>" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "Daugiau..." + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "Įtraukti \"%s\" į žodyną" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "Ignoruoti visus" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "Rašybos užuominos" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "Spausdinti tekstinę bylą" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ Skaičius" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Redaguoti įvykius" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "Pakrauti iš..." + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Patikrinti visus" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "Gerai" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Išvalyti sąrašą" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Kopijuoti pasirinktą adresą" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Kopijuoti" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Išsaugoti sąrašą į bylą" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d operatorių, %d iš viso" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "%s įskiepis įkeltas\n" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "%s įskiepis iškeltas\n" diff --git a/hexchat/po/lv.po b/hexchat/po/lv.po new file mode 100644 index 0000000..b289354 --- /dev/null +++ b/hexchat/po/lv.po @@ -0,0 +1,6255 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Artis Trops <hornet@navigators>, 2001 +# Zigmars Dzenis <zigmars@gmail.com>, 2016 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-03 20:10+0000\n" +"Last-Translator: TingPing <tingping@tingping.se>\n" +"Language-Team: Latvian (http://www.transifex.com/hexchat/hexchat/language/lv/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: lv\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "HexChat" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "IRC klients" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "Tērzēt ar citiem cilvēkiem tiešsaistē" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "TZ;Tērzēšana" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "Atvērt drošo režīmu" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "HexChat motīvu pārvaldnieks" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Esmu aizņemts" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Atstāj" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "IZSLĒGTS" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "IESLĒGTS" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "{atiestatīt}" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Tīkls" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<nekas>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Kanāls" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Gaidu" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Aktīvs" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Neizdevās" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Paveikts" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Pieslēgties" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Pārtraukts" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "Nevar piekļūt %s\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Kļūda" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "Nav aktīvu DCC\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "_Sūtīt failu" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "_Ignorēt" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Izspert/izraidīt" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Izspert" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "Izraidīt" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Pamest kanālu" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Pievienoties kanālam" + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Servera saites" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Ehotestēt serveri" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Slēpt versiju" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "atā" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Sūtīt" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Tērzēšana" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Attīrīt" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ehotestēt" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "" + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* Lietot IRC kā rootam ir muļķīgi! Jums vajadzētu\n Izveidot Lietotāja Kontu un lietot to, lai pieteiktos.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "JĀ" + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "NĒ " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "Nav atrasts" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "Atrisināts uz:" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s tiešsaistē\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s nav bezsaistē\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Neesi pievienojies nevienam kanālam. Pamēģini /join #<kanāls>\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Neesi pieslēdzies. Pamēģini /server <resursdators> [<ports>]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "Lai darbotos, man vajag /bin/sh!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "Pieejamās komandas:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "Lietotāja definētās komandas:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "Spraudņa definētās komandas:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Nezināmais arguments '%s' ignorēts." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "" + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "Tāds iespraudnis nav atrasts.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "Šis iespraudnis atsakās izlādēties.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <nosaukums> <darbība>, pievieno pogu zem lietotājzvēlnes" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <komada>, sūta komandu uz visiem kanāliem, kuros esat" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <komanda>, sūta komandu uz visiem serveriem, kuros esat" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <maska> [<bantype>], izraida visus, kuri atbilst maskai no pašreizējā kanāla. Ja viņi jau ir kanālā, tas viņus neizmet (vajag būt kanālop)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "" + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <segvārds> <ziņa>, sūta CTCP ziņu segvārdam, izplatītākās ziņas ir VERSION un USERINFO" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <segvāds>, noņem kanālpus-op statusu segvārdam pašreizējā kanālā (vajag būt kanālop)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <nosaukums>, izdzēš pogu no lietotājsaraksta" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <segvāds>, noņem kanālop statusu segvārdam pašreizējā kanālā (vajag būt kanālop)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <segvārds>, noņem balss statusu segvārdam pašreizējā kanāla (vajag būt kanālop)" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, Atslēdzas no servera" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <teksts>, Izvada tekstu lokāli" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <komanda>, palaiž komandu. Ja -o karodziņš tiek lietots, tad izvade tiek sūtīta uz pašreizējo kanālu, citādāk tā tiek izvadīta uz pašreizējo teksta lodziņu" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, sūta procesam SIGCONT" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9], nokauj palaisto exec pašreizējā sesijā. Ja tiek dots -9, process tiek SIGKILL'ots" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, sūta procesam SIGSTOP" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, sūta datus uz procesa stdin" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, noflašo pašreizējā servera sūtīšanas rindu" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <hostdators> [<ports>], caur resursdatoru kā starpserveri, noklusētais ports ir 23" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <segvārds>, piešķir kanālpus-op'a statusu segvārdam (vajag būt kanālop)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <segvārds> [<kanāls>], ielūdz kādu kanālā, pēc noklusējuma uz pašreizējo kanālu (vajag kanālop)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <kanāls>, pievienojas kanālam" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, rosina jaunu aiztures pārbaudi" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, Masveidā deop'o visus kanālpus-op'us pašreizējā kanālā (vajag būt kanālop)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, Masveidā deop'o visus kanālop'us pašreizējā kanālā (vajag būt kanālop)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <darbība>, sūta darbību uz pašreizējo kanālu (darbības tiek rakstītas trešajā personā, kā /me smaida)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, Masveidā izmet visus, izņemot tevi, pašreizējā kanālā (vajag būt kanālop)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <segvārds> <ziņa>, Sūta CTCP paziņojumu" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <segvārds>, uzstāda jums segvārdu" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <segvārds>, piešķir kanālop statusu segvārdam (vajag būt kanālop)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<kanāls>] [<iemesls>], pamet kanālu, pēc noklusējuma pašreizējo" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <segvārds | kanāls>, CTCP pingo segvārdu vai kanālu" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "" + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<iemesls>], atslēdzas no pašreizējā servera" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <teksts>, sūta tekstu jēlā formā serverim" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<hostdators>] [<ports>] [<parole>], Var izsaukt arī vienkārši kā /RECONNECT, lai vēlreiz pārslēgtos uz pašreizējo serveri vai ar /RECONNECT ALL uz visiem atvērtajiem serveriem" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<hostdators>] [<ports>] [<parole>], Var izsaukt arī vienkārši kā /RECONNECT, lai vēlreiz pārslēgtos uz pašreizējo serveri vai ar /RECONNECT ALL uz visiem atvērtajiem serveriem" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <teksts>, sūta tekstu objektam pašreizējā logā" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <segvārds> [<datne>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <hostdators> <ports> <kanāls>, pieslēdzas un pievienojas kanālam" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <hostdators> <ports> <kanāls>, pieslēdzas un pievienojas kanālam" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <hostdators> [<ports>] [<parole>], pieslēdzas serverim, noklusētais ports ir 6667" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<temats>], uzstāda tematu, ja tāds ir dots, savādāk parāda pašreizējo tematu" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <maska> [<maska>...], noņem izraidījumu norādītajām maskām." + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <maska> [QUIET]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <nosaukums>, izlādē iespraudni vai skriptu" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "" + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <segvārds>, piešķir kādam balss statusu (vajag būt kanālop)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <ziņa>, raksta ziņu visiem kanāliem" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <ziņa>, aizsūta ziņu visiem pašreizējā kanāla kanālopiem" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "Lietotāja komanda priekš: %s\n" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "Lietošana: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nŠādai komandai palīdzība nav pieejama.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "Nav tādas komandas.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "Slikti argumenti lietotāja komandai.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "Pārāk daudz rekursīvu pietotājkomandu, pārtraucu" + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "Nezināma komanda %s. Mēģiniet /help\n" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "Taimeris %d dzēsts.\n" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "Nevaru atšķetināt hostdatora vārdu %s\nPārbauiet savus IP Uzstādījumus!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "Starpservera šķērsošana neizdevās.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "" + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "" + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%UKanāls Lietotāji Temats" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "" + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "" + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "" + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "" + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "" + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "" + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "" + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "" + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "" + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "" + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "" + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "" + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "" + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "" + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "" + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "" + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "" + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "Ielādēja žurnālu no" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** BEIDZU IEGRĀMATOŠANU IEKŠ %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** SĀKU IEGRĀMATOŠANU IEKŠ %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "Kreisais ziņojumsKreisais ziņojums" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "Labais ziņojums" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "IP adrese" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Lietotājvārds" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "Pievienojušās personas segvārds" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "Kanāls, kuram pievienojas" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "Personas hostdators" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "Personas konts" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Segvārds" + +#: src/common/text.c:980 +msgid "The action" +msgstr "Darbība" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "Režīma burts" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "Identificēts teksts" + +#: src/common/text.c:987 +msgid "The text" +msgstr "Teksts" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "Ziņojums" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Servera nosaukums" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "Apstiprinātās spējas" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "Noņemtās spējas" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "Servera spējas" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "Pieprasītās spējas" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Vecais segvārds" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Jauns segvārds" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "Personas segvārds, kura izmainīja tematu" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Temats" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "Izmetēja segvārds" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "Persona, kuru izmeta" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "Kanāls" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "Iemesls" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "Personas segvārds, kura atstāj" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "Laiks" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "Veidotājs" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Segvārds" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Iemesls" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Hostdators" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "No kā tas ir" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "Laiks x.x formātā (skaties zemāk)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "Kanāls gatavojas" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "Skaņa" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "Personas segvārds" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "CTCP notikums" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "Personas segvārds, kura uzstādīja atslēgu" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "Atslēga" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "Personas segvārds, kura uzstādīja limitu" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "Limits" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "Personas segvārds, kura op'oja" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "Personas segvārds, kuru op'oja" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "Personas segvārds, kuru pus-op'oja" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "Personas segvārds, kura pus-op'oja" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "Personas segvārds, kura iedeva balsi" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "Personas segvārds, kurai iedeva balsi" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "Personas segvārds, kura izraidīja" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "Izraidījuma maska" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "Segvārds, kurš noņēma atslēgu" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "Segvārds, kurš noņēma limitu" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "Personas segvārds, kuru deop'oja" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Personas segvārds, kuru pus-op'oja" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "Personas segvārds, kurai noņēma balsi" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "Personas segvārds, kura atbrīvoja" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "Atbrīvošanas maska" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "Personas segvārds, kura noņēma atbrīvojumu" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "Personas segvārds, kura ielūdza" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "Ielūguma maska" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "Personas segvārds, kura noņēma ielūgumu" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "Personas segvārds, kura uzstadīja režīmu" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "Režīma zīme (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "Režīma burts" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "Kanāls, kuram tas tika uzstādīts" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Pilns vārds" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Kanāla Piederība/\"ir IRC operātors\"" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Serva Informācija" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Dīkstāves laiks" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Ierašanās laiks" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Prombūtnes iemesls" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Ziņojums" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Konts" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "Īstā IP" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Kanāla Nosaukums" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "Mehānisms" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Teksts" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Personas segvārds, kura jūs ielūdza" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Lietotāji" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "Segvārds jau lietošanā" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Mēģināmais segvārds" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Ports" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "Režīma rinda" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "DCC Tips" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Datnes nosaukums" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Mērķa datnes nosaukums" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "Ceļa nosaukums" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Pozīcija" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Izmērs" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "DCC Virkne" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "Prombūtnes iemesls" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "Paziņojamo priekšmetu skaits" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Vecais datnes nosaukums" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Jaunais datnes nosaukums" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Saņēmējs" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Hostdatora maska" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Hostdatora vārds" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "Pakete" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "Sekundes" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "Personas segvārds, kura tikusi ielūgta" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Izraidījuma maska" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "Kurš uzstādīja izraidījumu" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Izraidījuma laiks" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "Attālinātais hostdators aizvēra ligzdu" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "Savienojums atteikts" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "Nav maršruta uz resursdatoru" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Savinojuma taimauts" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "Nevaru piešķirt to adresi" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "Savienojuma pārtraukums" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "Debesbraukšanas sala" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Andora" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Apvienotie Arābu Emirāti" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "Ar aviāciju saistītās nozares" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Afganistāna" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Antigva un Barbuda" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Angilja" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Albānija" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Armēnija" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Nīderlandes Antiļas" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Antarktika" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Argentīna" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "Reverss DNS" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Amerikāņu Samoa" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "Āzijas un Klusā okeāna reģions" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Austrija" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Austrālija" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "Ālandu Salas" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Azerbaidžāna" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Bosnija un Hercogovina" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Barbadosa" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Bangladeša" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Beļģija" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Burkinafaso" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Bulgārija" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Bahreina" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "Darījumi" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Benina" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Bruneja" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Bolīvija" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Brazīlija" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Bahamas" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Butāna" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Bovetu salas" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Botsvāna" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Baltkrievija" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Beliza" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Kanāda" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "Katalāņu" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Kokosu salas" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "Kongo Demokrātiskā Republika" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "Centrālāfrikas Republika" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Kongo" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "Šveice" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "Kotdivuāra" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Kuka salas" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Čīle" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Kamerūna" + +#: src/common/util.c:738 +msgid "China" +msgstr "Ķīna" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Kolumbija" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Starptautiskā Komercsabiedrība" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "Kooperatīvi" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Kostarika" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "Serbija un Melnkalne" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Kuba" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Kapoverde" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Ziemassvētku Salas" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Kipra" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "Čehija" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "Austrumvācija" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Vācija" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Džibutija" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Dānija" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Dominika" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "Dominikānas Republika" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Alžīrija" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Ekvadora" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Mācību Iestāde" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Igaunija" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Ēģipte" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Rietumsahāra" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Eritreja" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "Spānija" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Etiopija" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "Eiropas Savienība" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Somija" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Fidži" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Folklenda salas" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Mikronēzija" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Farēru salas" + +#: src/common/util.c:770 +msgid "France" +msgstr "Francija" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Gabona" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Lielbritānija" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Džordžija" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Franču Gviāna" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "Britu Kanāla salas" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Gana" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Gibraltārs" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Grenlande" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Gambija" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Gvineja" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Valdība" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Gvadelupa" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Ekvatoriālā Gvineja" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Grieķija" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Dienviddžordžija un Dienvidsendviču Salas" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Gvatemala" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Guama" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Gvineja-Bisava" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Gajāna" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Hongkonga" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Herda un Makdonalda salas" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Hondurasa" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Horvātija" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Ungārija" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Indonēzija" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Īrija" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Izraēla" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "Menas Sala" + +#: src/common/util.c:801 +msgid "India" +msgstr "Indija" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "Informatīvs" + +#: src/common/util.c:803 +msgid "International" +msgstr "Starptautisks" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Britu Indija okeāna teritorija" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Irāka" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "Irāna" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Islande" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Itālija" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "Džērsija" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Jamaika" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Jordānija" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Japāna" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Kenija" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Kirgizstāna" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Kambodža" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Komoros salas" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "Svētā Kita un Nevis salas" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Ziemeļkoreja" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Dienvidkoreja" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Kuveita" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Kaimanu salas" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Kazahstāna" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Laosa" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Libāna" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Sentlūsija" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Lihtenšteina" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Šrilanka" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Libērija" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Lesoto" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Lietuva" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Luksemburga" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Latvija" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Libāna" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Maroko" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Monako" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Moldāvija" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "Melnkalne" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "Savienoto Valstu Medicīnas" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Madagaskara" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Maršalu Salas" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Militārs" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Maķedonija" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Mjanma" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Mongolija" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Makao" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "Mobilās ierīces" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Ziemeļmarina" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Martinika" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Mauritānija" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Montserata" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Mauritānija" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "Muzeji" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Maldīvija" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Malāvija" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "Mexico" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Malaizija" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Mozambika" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Namībija" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Jaunkaldonija" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Nigēra" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Starptautiskais Tīkls" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Norfolkas salas" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Nigērija" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Nikaragva" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Nīderlande" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Norvēģija" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Nepāla" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "Jaunzēlande" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Omāna" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "Starptautiska Bezpeļņas Organizācija" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Franču Polinēzija" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Papua Jaungvineja" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Filipīnas" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Pakistāna" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Polija" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "Svētā Pjēra un Mikvelona salas" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Pitkērna" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Puertoriko" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "Profesijas" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "Palestīnas teritorija" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Portugāle" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Paragvaja" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Katara" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Reinjona" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Rumānija" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "Vecās Skolas ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "Serbija" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Krievijas Federācija" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Ruanda" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Saūda Arābija " + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Zālamana salas" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Seišelas" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Sudāna" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Zviedrija" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Singapūra" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "Svētās Helēnas sala" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Slovēnija" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svelbāna un Žana Maijena salas" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "Slovākija" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Sjerra Leone" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Senegāla" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Somālija" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Surinama" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "Dienvidsudāna" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "Santome un Prinsipi" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Bijušā PSRS" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "Salvadora" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Sīrija" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Šveice" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Tērksas un Kaikosas salas" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Čada" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "Interneta sakaru pakalpojumi" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "Francijas Dienvidu Teritorijas" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Taizeme" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Tadžikistāna" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Austrumtimora" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Turkmenistāna" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Tunisija" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Turcija" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "Ceļošana un tūrisms" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Trinidada un Tobago" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Taivāna" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Tanzānija" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Ukraina" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Apvienotā Karaliste" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "Amērikas Savienotās Valstis" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Urugvaja" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Uzbekistāna" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Vatikānas Pilsētvalsts" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Venecuēla" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "Britu Virdžīnu Salas" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "ASV Virdžīnu Salas" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Vjetnama" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "Volisa un Futuna salas" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "Pieaugušo izklaide" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Jemena" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Majota" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Dienvidslāvija" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Dienvidāfrija" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Zambija" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Zimbabve" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Rakstzīmju Tabula" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "Atbrīvo" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "Atbrīvot" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "Ielūdz" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Ielūgt" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "Klusina" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "Kluss" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "Kopēt ierakstu" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "" + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "" + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "Tips" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Maska" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "No" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Datums" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Izņemt" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Apcirpt" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Atjaunināt" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "" + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Atlasiet izvades datnes nosaukumu" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Kanāla nosaukums" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "Regulārā izteiksme" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Atrast:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Sūtīt datni %s" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "" + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "" + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Satuss" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Datne" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Abi" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "Augšupielādes" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "Lejupielādes" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "Detaļas" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "Datne:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "Adrese:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Pārtraukt" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Pieņemt" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Atsākt" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "Atvērt mapi..." + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Saņ" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Aizs" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "Sākuma laiks" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "Pievienot" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Dzēst" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Atcelt" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Saglabāt" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "Izpildīt komandu:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "līmenis" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "Meklēšanas buferis ir tukšs.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d baiti" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "Komanda Ievietot Buferī ievietos Dati 1 saturu ierakstā, kur taustiņi tika nospiesti secībā, konkrētajā kursora pozīcijā" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "Komanda Iestatīt Buferi iestata ierakstu, kur taustiņu secība tika ievadīta atbiltoši Dati 1 saturam" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "Komanda Iepriekšējā Komanda iestata rindiņu, lai tā satur iepriekšējo ievadīto komandu - tas pats, kas nospiežot augšup čaulā" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "Komanda Nākamā Komanda iestata rindiņu, lai tā satur nākamo ievadīto komandu - tas pats, kas nospiežot lejup čaulā" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "Šī komanda maina ieraksta tekstu, lai pabeigtu nepilnu segvārdu vai komandu. Ja Dati 1 ir iestatīti, tad dubult-tabulācija rindiņā izvēlēsies pēdējo segvārdu, nevis nākamo" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "Šī komanda ritina augšup un lejup pa segvārdu sarakstu. Ja Dati 1 ir iestatīti uz kaut ko, tā ritināsies augšup, citādi tā ritināsies lejup" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "Ievietot ievades līniju vēsturē, bet nesūtīt serverim" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "Atgadījās kļūda, lādējot taustiņu atbilstību konfigurāciju" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "Nevar ierakstīt tajā datnē." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "Nevar nolasīt to datni." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "" + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Privāts" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Paziņot" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "Neignorēt" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Ignorēšānas Statistika:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Kanāls:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privāts:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Paziņojums:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Ielūgt:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "Pievienot..." + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "" + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "" + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "" + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "" + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "" + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Temats %s ir: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "Temats nav uzstādīts" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "" + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "" + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "Lietotāju limitam ir jābūt skaitlim!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "Bez ārējām ziņām" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "Temata Aizsardzība" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "Tikai ar ielūgumu" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "Apvaldīts" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "Izraidīto Saraksts" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Atslēgvārds" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "Lietotāju Limits" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Ievadiet jaunu segvārdu:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "Nav atrastu rezultātu." + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "" + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "_Izgaismot visu" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "" + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "_Regulārā izteiksme" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Nezināms hostdators" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "Konts nezināms" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Nezināms" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Īstais vārds:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "Lietotājs:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "Konts:" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "Valsts:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "Serveris:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "Atvērt saiti pārlūkā" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "Kopēt atlasīto saiti" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Pievienoties Kanālam" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "Atstāt Kanālu" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "Ciklēt Kanālā" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "_Automātiski pievienoties" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "Automātiski pievienoties kanālam" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "_Automātiski pieslēgties" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "Marķiera līnija izslēgta." + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "Aizstāt ar" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "He_xChat" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "Jau_ns" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "_Iziet" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "_Skats" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "_Izvēlnes josla" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "_Temata josla" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "_Lietotāju saraksts" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Izslēgt" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "Grafika" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "_Pilnekrāna" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "_Serveris" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "U_zstādījumi" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "_Logs" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "Atstatīt marķiera līniju" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "Pārvietot uz marķiera līniju" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "_Kopēt atlasi" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "_Attīrīt tekstu" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "Meklēt" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "Meklēt nākošo" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "Meklēt iepriekšējo" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "_Palīdzība" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "P_ar" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Nosaukums" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Pēdējoreiz redzēts" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "Bezsaistē" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Nekad" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "pirms %d minūtēm" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "Pirms stundas" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "pirms %d stundām" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "Tiešsaistē" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "Ievadiet pievienojamo segvārdu:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "Atvērt dialogu" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Versija" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Apraksts" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Izvēlieties Iespraudni vai Skriptu, ko ielādēt" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "_Ielādēt..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "" + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Jauns Tīkls" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Patiesi izņemt tīklu \"%s\" un visus tā serverus?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Tīkli" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "_Pieslēgties" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "Afrikandu" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Albāņu" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "Amharu" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "Astūriešu" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Azerbaidžāņu" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "Basku" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Baltkrievu" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Bulgāru" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "Ķīniešu vienkāršotā" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "Ķīniešu tradicionālā" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "Čehu" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "Dāņu" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "Holandiešu" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "Britu angļu" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "Angļu" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Igauņu" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "Somu" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "Franču" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "Galisiešu" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "Vācu" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "Grieķu" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "Gudžaratu" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "Hindi" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "Ungāru" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "Indonēziešu" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "Itāļu" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "Japāņu" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "Kannadu" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "Kiņaruanda" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "Korejiešu" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "Latviešu" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "Lietuviešu" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "Maķedoniešu" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Malajiešu" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "Malajalu" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "Norvēģu būkmols" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "Norvēģu jaunnorvēģu" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "Poļu" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "Portugāļu" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "Portugāļu (Brazīlija)" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "Pandžabu" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "Krievu" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "Serbu" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "Slovāku" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "Slovēņu" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "Spāņu" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "Zviedru" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Taju" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "Turku" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "Ukraiņu" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Vjetnamiešu" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Vispārīgi" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Fonts:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "" + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Fona attēls:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "" + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "" + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "Segvārdu pabeigšanas priedēklis:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "" + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "Nesakārtoti" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Augšā" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Lejā" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Paslēpts" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "Lietotāju Saraksts" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Logi" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Sadaļas" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "" + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "Atvērt kanālus iekš:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "Atvērt dialogus iekš:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "Atvērt utilītas iekš:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Atvērt DCC, Ignorēšanu, Paziņošanas utt. sadaļās vai logos?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Lejupielādēt datnes uz:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "Pārvietot pabeigtās datnes uz:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "" + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Parādīt prombūtni vienreiz" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "Automāiski atstatīt prombūtni" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "" + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "Parādīt MODEs jēlā formā" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "Auto pārpieslēgšanās aizture:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Iegrāmatošana" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "Atritināmas rindiņas:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "" + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "Pretējas laikatzīmes žurnālos" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "Žurnāla laikatzīmes formāts:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "Vietrāži URL" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(Atslēgts)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "Automātiski" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "" + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "DCC IP adrese:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "Apgalvot, ka jūs atrodaties pēc šīs adreses, kad piedāvājat datnes." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "" + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Izvēlieties fontu" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Lūkoties.." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Izvēlies krāsu" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "mIRC krāsas:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Priekšplāns:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Fons:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "Izgaismot:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Notikums" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "Skaņas datne" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "Atlasiet skaņas datni" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "Skaņas datne:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "_Pārlūkot..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "_Atskaņot" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Saskarne" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "Izskats" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Ievades lodziņš" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Lietotāja saraksts" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "Kanālu pārslēdzējs" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Krāsas" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Tērzēju" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "Skaņas" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "Paplašināti" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Tīkla uzstādīšana" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Datņu pārsūtīšanas" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Kategorijas" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "" + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*BRĪDINĀJUMS*\nAutomātiski akceptēt DCC uz savu mājas direktoriju\nvar būt bīstami un viegli exploitējams. Piem.:\nKāds var atsūtīt tev .bash_profile" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "Vairāk..." + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "Ignorēt visus" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "Atgadījās kļūda parsējot virkni" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Šis signāls izdeva tikai %d argumentus, $%d ir nepareizs" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "Drukāt tekstu datni" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ Numurs" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Rediģēt Notikumus" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "" + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Testēt Visus" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "" diff --git a/hexchat/po/meson.build b/hexchat/po/meson.build new file mode 100644 index 0000000..f292c4d --- /dev/null +++ b/hexchat/po/meson.build @@ -0,0 +1,9 @@ +i18n.gettext('hexchat', preset: 'glib') + +validate_translations = find_program('validate-textevent-translations') +test('Validate translations', validate_translations, + args: [ + join_paths(meson.current_source_dir(), 'LINGUAS'), + meson.current_source_dir(), + ] +) diff --git a/hexchat/po/mk.po b/hexchat/po/mk.po new file mode 100644 index 0000000..db0cffc --- /dev/null +++ b/hexchat/po/mk.po @@ -0,0 +1,6254 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Jovan Naumovski <jovan@lugola.net>, 2007 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-03 20:13+0000\n" +"Last-Translator: TingPing <tingping@tingping.se>\n" +"Language-Team: Macedonian (http://www.transifex.com/hexchat/hexchat/language/mk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: mk\n" +"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Зафатен сум" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Си одам" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Мрежа" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<none>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Канал" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Чекам" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Активно" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Неуспешно" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Завршив" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Врзи се" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Откажано" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "Не можам да пристапам на %s\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Грешка" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s ви нуди „%s“. Дали сакате да прифатите?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "Нема активни DCC\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Дај op" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Одземи op" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "Дај глас" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "Одземи глас" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Исфрли/Банирај" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Исфрли" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "Банирај" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "Исфрли и банирај" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Напушти канал" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Приклучи се на канал..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "Внеси канал за да се приклучиш:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Врски до серверот" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Пингувај го серверот" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Сокриј верзија" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Оp" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "Земи оp" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "чао" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Внеси причина за исфрлувањето %s:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "Дијалог" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "КојЕ" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Испрати" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Разговор" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Исчисти" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Пинг" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "" + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* Користењето на IRC како root е глупаво! Подобро е\n да си создадете корисничка сметка и да ја користите неа.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "ДА " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "НЕ " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Вие сте CTCP поплавени од %s, игнорирам %s\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s присутни\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s офлајн\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Не сте присутни на некој канал. Пробајте со /join #<channel>\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Не сте поврзани. Пробајте со /server <host> [<порта>]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Веќе сте означени како отсутни: %s\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "Веќе сте означени како присутни.\n" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "Ми треба /bin/sh за да извршам!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "Достапни команди:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "Команди дефинирани од корисникот:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "Команди дефинирани од приклучокот:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Напишете /HELP <команда> за повеќе информации, или /HELP -l" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Непознатиот аргумент „%s“ е игнориран." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "" + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "Не најдов таков додаток.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "Тој додаток одбива да се исклучи. \n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <име> <акција>, додава копче под корисничката листа" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <командата>, испраќа команда до сите канали на кои што сте" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <командата>, испраќа команда на сите сервери на кои што сте" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "BACK, ве обележува како присутен (не отсутен)" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <маска> [<тип>], ги банира сите кои што одговарат на маската на сегашниот канал. Ако се веќе на каналот ова не ги исфрла (треба оператор)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "" + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <code|wildcard>, ја наоѓа кратенката на земјата, пр: au = австралија" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <прекар> <порака>, испрати ја CTCP пораката до прекарот, вообичаени пораки се VERSION и USERINFO" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "CYCLE [<channel>], го напушта тековниот канал и се приклучува повторно" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <прекар> - прифатете понудена датотека\nDCC SEND [-maxcps=#] <прекар> [датотека] - испратете датотека некому\nDCC PSEND [-maxcps=#] <прекар> [датотека] - испратете датотека во пасивен режим\nDCC LIST - покажи DCC листа\nDCC CHAT <прекар> - понуди DCC CHAT некому\nDCC PCHAT <nick> - понуди DCC CHAT со користење на пасивен режим\nDCC CLOSE <тип> <прекар> <датотека> пример:\n /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <прекар>, отстранува операторски статус од прекарот на тековниот канал (потребно е да имате операторски статус)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <име>, брише копче под корисничката листа" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <прекар>, отстранува операторски статус од прекарот на тековниот канал (потребно е да имате операторски статус)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <прекар>, отстранува глас од прекарот на тековниот канал (потребно е да имате операторски статус)" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, Ја прекинува врската со серверот" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <text>, Печати текст локално" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <command>, ја извршува командата. Ако користите -o тогаш испраќате на тековниот канал" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, го испраќа процесот SIGCONT" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9], убива извршена програма во тековната сесија. Ако -9 е даден тогаш процесот е SIGKILL'ed" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, го испраќа процесот SIGSTOP" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, испраќа податоци до stdin процесите" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, го испушта тековното чекање на серверот" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <host> [<port>],proxy-јата преку host, стандардна порта 23" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <прекар> дава chanhalf-op статус на прекарот (потребен е операторски статус)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <password>, ве идентификува кај nickserv" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <mask> <types..> <options..>\n маска - host маска за игнорирање, пр: *!*@*.mt.net.mk\n типови - типови на податоци за игнорирање, еден или сите од:\n PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n опции - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <прекар> [<канал>], кани некого на каналот, стандардно тоа е тековниот канал (потребен е операторски статус)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <channel>, се приклучува на каналот" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, форсира проверка за лаг" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <датотека>, вчитува додаток или скрипта" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, одзема опер. статус на сите оператори во тековниот канал (потребен е операторски статус)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, одзема опер. статус на сите оператори во тековниот канал (потребен е операторски статус)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <акција>, ја испраќа акцијата на тековниот канал (акциите се испишани во трето лице, на пр. /me скокна)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, ги исфрла сите од каналот (потребен е операторски статус)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, дава опер. статус на сите корисници во тековниот канал (потребен е операторски статус)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <прекар> <порака>, испраќа CTCP забелешка" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <hostname> [<port>]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <прекар>, го поставува прекарот" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [-n network1[,network2,...]] [<nick>], ја покажува вашата листа за известување или додава некој на неа" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <прекар>, дава опер. статус на прекарот (потребен е операторски статус)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<канал>] [<причина>], го напушта тековниот канал" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <прекар | канал>, CTCP го пингува прекарот или каналот" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "" + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<причина>], се одврзува од тековниот сервер" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <текст>, праќа текст до серверот во суров формат" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<host>] [<port>] [<password>], може да се стартува само со /RECONNECT за повторно врзување на истиот сервер или /RECONNECT ALL за врзување на сите отворени сервери" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<host>] [<port>] [<password>], може да се стартува само со /RECONNECT за повторно врзување на истиот сервер или /RECONNECT ALL за врзување на сите отворени сервери" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <текст>, го испраќа текстот до објектот во тековниот прозорец" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <прекар> [<датотека>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <host> <port> <channel>, се врзува и се приклучува на канал" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <host> <port> <channel>, се врзува и се приклучува на канал" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <host> [<port>] [<password>], се врзува на сервер, стандардната порта е 6667" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<наслов>], поставува наслов на каналот" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "\nTRAY -f <timeout> <file1> [<file2>] Во фиоката трепка помеѓу двете икони.\nTRAY -f <filename> Постави ја иконата во фоката на некоја фиксна икона.\nTRAY -i <number> Иконата светка со внатрешна икона.\nTRAY -t <text> Постави го балончето со совет на фиоката.\nTRAY -b <title> <text> Постави го балончето со совет на фиоката." + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <маска> [<маска>...], одбанира дадена маска." + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <маска> [QUIET]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <име> исклучува додаток или скрипта" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "" + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, отвора URL во вашиот прелистувач" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "USELECT [-a] [-s] <nick1> <nick2> итн, означува прекар(и) во листата на присутни на каналот" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <прекар>, дава глас некому (потребен е операторски статус)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <порака>, ја пишува пораката на сите канали" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <порака>, ја испраќа пораката на сите оператори на тековниот канал" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "Користење: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nНе постои помош за таа команда.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "Не постои таква команда.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "Лош аргумент за корисничката команда.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "Премногу рекурзивни кориснички команди, прекинувам." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Дали сте сигурни дека ова е SSL способена порта и сервер?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "Не можам да го резолвирам hostname %s\nПроверете ги вашите IP подесувања!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "Proxy traversal откажа.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Ќе пробам на следниот сервер за %s...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "Предупредување: \"%s\" дадениот карактер е непознат. Нема да биде применет разговор за мрежата %s." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "" + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "" + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%UКанал Корисници Наслов" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "" + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "" + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "" + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "" + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "" + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "" + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "" + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "" + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "" + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "" + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "" + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "" + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tЛистата за известување е празна." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "" + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "" + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "" + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "" + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "Вчитав лог од" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** ЗАВРШУВАМ СНИМАЊЕ НА %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** ЗАПОЧНУВАМ СНИМАЊЕ НА %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "Лева порака" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "Десна порака" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "IP адреса" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Корисничко име" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "Прекарот на личноста што се приклучува" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "Каналот на кој што се приклучува" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "Host на личноста" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Прекар" + +#: src/common/text.c:980 +msgid "The action" +msgstr "Акцијата" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "Режим за знак" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "Идентификуван текст" + +#: src/common/text.c:987 +msgid "The text" +msgstr "Текстот" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "Пораката" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Име на серверот" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Стар прекар" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Нов прекар" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "Прекар на личноста која го променила насловот" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Наслов" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "Прекарот на исфрлувачот" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "Личноста што е исфрлена" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "Каналот" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "Причината" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "Прекарот на личноста што си оди" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "Времето" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "Создавачот" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Прекар" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Причината" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Host" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "Од кого е" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "Времето во x.x формат (види подолу)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "Каналот до кој што оди" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "Звукот" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "Прекарот на личноста" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "CTCP настанот" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "Прекарот на личноста кој го поставила клучот" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "Клучот" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "Името на личноста која што го поставила ограничувањето" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "Ограничувањето" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "Името на личноста која дала op" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "Прекарот на личноста која што добила op" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "Прекарот на личноста која добила halfop" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "Прекарот на личноста која направила halfop" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "Прекарот на личноста која што дала глас" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "Прекарот на личноста која што добила глас" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "Прекарот на личноста која што банирала" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "Бан маската" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "Прекарот кој што го отстранил клучот" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "Прекарот кој што го отстранил ограничувањето" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "Прекарот на личноста на која што и е земен op" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Прекарот на личноста на која и е одземен halfop" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "Прекарот на личноста на која и е одземен гласот" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "Прекарот на личноста која направила exempt" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "Exempt маска" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "Прекарот на личноста која отстранила exempt" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "Прекарот на личноста која поканила" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "Маската за покана" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "Прекарот на личноста која ја отстранила поканата" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "Прекарот на личноста која што го поставува режимот" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "Знаците за режим (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "Буквата за режим" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "Каналот се подесува" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Целосно име" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Членство на каналот/\"е IRC оператор\"" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Информации за серверот" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Неактивност" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Време на вклучување" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Причина за отсуство" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Порака" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Сметка" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "Вистински корисник@host" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "Вистинска IP" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Име на каналот" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Текст" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Прекар на личноста која те поканила" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Корисници" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "Прекарот е употребен" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Се обидувам со прекарот" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Порта" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "Стринг на режими" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "DCC тип" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Име на датотеката" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Дестинација на датотеката" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "Име на патеката" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Позиција" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Големина" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "DCC стринг" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "Број на предмети за известување" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Старо име на датотеката" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Ново име на датотеката" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Примач" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Маска на Host-от" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Име на host" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "Пакетот" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "Секунди" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "Прекарот на личноста што е поканета" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Бан маска" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "Кој го ставил банот" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Време на банот" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "Неможам да ја прочитам звучната датотека:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "Затворен socket на мрежниот host" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "Врската е одбиена" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "Нема рута до host-от" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Конекцијата истече" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "Не можам да ја назначам таа адреса" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "Конекцијата е ресетирана од peer" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "Островот Асенсион" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Андора" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Обединети Арапски Емирати" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Авганистан" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Антигvа и Барбуда" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Ангуила" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Албанија" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Ерменија" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Холандски Антили" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Ангола" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Антартик" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Аргентина" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "Обратен DNS" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Американски Самоа" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Австрија" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Австралија" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Аруба" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "Фолкландски Острови" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Азербејџан" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Босна и Херцеговина" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Барбадос" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Бангладеш" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Белгија" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Буркина Фасо" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Бугарија" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Бахреин" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Бурунди" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "Бизниси" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Бенин" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Бермуда" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Брунеи Дарусалам" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Боливија" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Бразил" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Бахами" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Бутан" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Бувет Острови" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Боцвана" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Белорусија" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Белиз" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Канада" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Кокосови Острови" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "Демократска Репубика Конго" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "Централно Африканска Република" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Конго" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "Швајцарија" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "Брегот на Слоновата Коска" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Кук острови" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Чиле" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Камерун" + +#: src/common/util.c:738 +msgid "China" +msgstr "Кина" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Колумбија" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Internic Commercial" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Костарика" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "Србија и Црна Гора" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Куба" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Кејп Верде" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Божиќни острови" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Кипар" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "Чешка" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Германија" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Џибути" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Данска" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Доминика" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "Доминиканска република" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Алжир" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Еквадор" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Образовна институција" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Естонија" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Египет" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Западна Сахара" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Еритреја" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "Шпанија" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Етиопија" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "Европска Унија" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Финска" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Фиџи" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Фолкландски острови" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Микронезија" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Фарски острови" + +#: src/common/util.c:770 +msgid "France" +msgstr "Франција" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Габон" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Велика Британија" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Гренада" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Грузија" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Француска Гвинеја" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "Британски каналски острови" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Гана" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Гибралтар" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Гренланд" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Гамбија" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Гвинеја" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Влада" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Гвадалупе" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Екваторијална Гвинеја" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Грција" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "С. Џорџија и С. Сендвич Острови" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Гватемала" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Гвам" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Гвинеја-Бисао" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Гвајана" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Хонг Конг" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Хард и МекДоналд острови" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Хондурас" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Хрватска" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Хаити" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Унгарија" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Индонезија" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Ирска" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Израел" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "Островот Ман" + +#: src/common/util.c:801 +msgid "India" +msgstr "Индија" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "Информативен" + +#: src/common/util.c:803 +msgid "International" +msgstr "Интернационално" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Територија на Британскиот Индискиот океан" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Ирак" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "Иран" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Исланд" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Италија" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "Џерзи" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Јамајка" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Јордан" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Јапонија" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Кенија" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Киргистан" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Камбоџа" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Кирибати" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Коморос" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "Св. Кит и Невис" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Северна Кореја" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Јужна Кореја" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Кувајт" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Кајмански острови" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Казакстан" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Лаос" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Либан" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Света Луција" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Линхенштајн" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Шри Ланка" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Либерија" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Лесото" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Литванија" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Луксембург" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Латвија" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Либија" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Мароко" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Монако" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Молдавија" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "United States Medical" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Мадагаскар" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Маршалски острови" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Воена" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Македонија" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Мали" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Мјанмар" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Монголија" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Макао" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Острови Северна Маријана" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Мартиник" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Мавританија" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Монсерат" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Малта" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Маурициус" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Малдиви" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Малави" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "Мексико" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Малезија" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Мозамбик" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Намибија" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Нова Каледонија" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Нигер" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Интерна мрежа" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Норфолски острови" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Нигерија" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Никарагва" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Холандија" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Норвешка" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Непал" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Науру" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Ниуе" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "Нов Зеланд" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Оман" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "уИнтерна непрофитна организација" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Панама" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Перу" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Француска Полинезија" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Папуа Нова Гвинеја" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Филипини" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Пакистан" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Полска" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "Св. Пјер и Микелон" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Питкаим" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Порторико" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "Палестинска територија" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Португалија" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Палау" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Парагвај" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Катар" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Reunion" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Романија" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "Old School ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Руска Федерација" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Руанда" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Саудиска Арабија" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Соломонски острови" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Сејшели" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Судан" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Шведска" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Сингапур" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "Св. Елена" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Словенија" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Свалбалд и Јан Маен острови" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "Словачка" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Сиера Леоне" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "Сан Марино" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Сенегал" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Сомалија" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Суринам" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "Сао Томе и Принципе" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Бивш СССР" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "Салвадор" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Сирија" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Свазиленд" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Turks and Caicos Islands" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Чад" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "Француски јужни територии" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Того" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Тајланд" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Таџикистан" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Источен Тимор" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Туркменистан" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Тунис" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Тонга" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Турција" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Тринидад и Тобаго" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Тувалу" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Тајван" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Танзанија" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Украина" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Уганда" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Обединето Кралство" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "Соединетите Американски Држави" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Уругвај" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Узбекистан" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Ватикан" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "Св. Винсент и Гренадин" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Венецуела" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "Британски девствени острови" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "Американски девствени острови" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Виетнам" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Вануату" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "Волис и Футуна острови" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Самоа" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Јемен" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Мајота" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Југославија" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Јужна Африка" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Замбија" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Зимбабве" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "Не можев да се порвзам со магистралата на сесијата" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "Не успеав да го довршам NameHasOwner" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "Не успеав да ја довршам командата" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "оддалечен пристап" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "приклучок за оддалечен пристап со користење на DBUS" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Не можев да се порвзам со магистралата на сесијата: %s\n" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Не успеав да го добијам %s: %s\n" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Табела со карактери" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "Банирај" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Покана" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "Не сум поврзан." + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "Мораш да избереш неколку банови." + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Маска" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "Од" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Дата" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Можете да го отворите прозорецот на листата со банирани додека сте во јазичето на каналот." + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Отстрани" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Скрати" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Освежи" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Прикажувам %d/%d корисници на %d/%d канали." + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Избери излезно име на датотека" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "_Приклучи се на канал" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "_Копирај го името на каналот" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "Копирај го текстот од _насловот" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "_Барај" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "_Симни листа" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "Зачувај ја _листата..." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "Прикажи само:" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "канали со" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "до" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "корисници" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "Барај во:" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Име на каналот" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "Барај тип:" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "Едноставно пребарување" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "Совпаѓање на шаблони (Wildcards)" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "Регуларни изрази" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Најди:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Испрати датотека на %s" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "Дадотеката не може да доиспрати" + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "Не можам да пристапам до датотеката: %s\n%s.\nДоиспраќањето е невозможно." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "Датотеката во директориумот за преземање е поголема од понудената. Доиспраќањето не е возможно." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "Не можам да ја примам истата датотека од двајца." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Статус" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Датотека" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "ЕТА" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "И двете" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "Качувања" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "Преземања" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "Детали" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "Датотека:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "Адреса:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Прекини" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Прифати" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Продолжи" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "Отвори папка..." + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Примени" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Испратени" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "Почетно време" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Избриши" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Откажи" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Сними" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "Не се поврзувај автоматски на серверот" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "Користи друг конфигурациски директориум" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "Не вчитувај додатоци автоматски" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "Покажи го директориумот за конфигурациите на корисникот" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "Изврши команда:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Започни минимизирано. Ниво 0=нормално 1=иконизирано 2=место за известување" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "ниво" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "Покажи информации за верзијата" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "Не можам да го отворам фонтот:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "Баферот за пребарување е празен.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d бајти" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Редица за испраќање на мрежата: %d бајти" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "Командата за внесување во бафер ќе ја внесе содржината на податок 1 во записот каде што главната секвенца била притисната, односно на тековната позиција на стрелката." + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "Командата за поставување на бафер го поставува записот каде што била внесена содржината за главната секвенца на податокот 1." + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "Команда" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "Команда" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "Оваа команда го менува текстот во полето со цел да доврши некомплетен прекар или команда." + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "Оваа команда овозможува лизгање, горе и долу по листата со прекари." + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "Командата ги проверува последните внесени зборови и ги заменува ако најде совпаѓање" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "Оваа команда го преместува предното јазиче лево за едно место" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "Оваа команда го преместува предното јазиче десно за едно место" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "Оваа команда ја преместува тековната фамилија на јазичиња налево" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "Оваа команда ја преместува тековната фамилија на јазичиња надесно" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "Ја става линијата за внесување во историја но не ја испраќа на серверот" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "Се појави грешка при вчитувањето на конфигурацијата за копчињата" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "Не можам да запишам во таа датотека" + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "Не можам да ја прочитам датотеката" + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "Таа маска веќе постои" + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Приватно" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Забелешка" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "Не игнорирај" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "Внеси маска за игнорирање:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Статистики за игнорирани:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Канал:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Приватно:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Забелешка:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Покани:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "Додај..." + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "Името на каналот е прекратно, обидете се повторно." + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "Врската со %s е целосна." + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "Што сакате да правите следно?" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "_Ништо, ќе се приклучам на некој канал подоцна." + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "_Приклучи се на овој канал:" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Ако го знаете името на каналот на кој што сакате да се приклучите, внесете го тука." + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "" + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "_Секогаш прикажувај го овој дијалог прозорец после поврзување." + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "Дијалог со" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Насловот на %s е: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "Нема поставено наслов" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "Овој сервер има %d канали и дијалози поврзани со него. Да ги затворам сите?" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "Не прашувај наредниот пат." + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Вие сте поврзани на %i IRC мрежи." + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "Дали сигурно сакате да напуштите?" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "Некои податоци сеуште се пренесуваат." + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "_Минимизирај се во местото за известување" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "Внеси атрибут или код за боја" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>Задебелено</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>Потцртано</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "Нормално" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "Бои 0-7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "Бои 8-15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "_Затвори" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "Корисничкото ограничување мора да биде број!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "Без надворешни пораки" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "Заштита на наслов" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "Само со покани" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "Модерирано" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "Бан листа" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Збор" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "Корисничко ограничување" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Внеси нов прекар" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "" + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "" + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "" + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Непознат host" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Непознато" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Вистинско име:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "Корисник:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "Земја:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "Сервер:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "пред %u минути" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "Последна порака:" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "Порака за отсуство:" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "Отвори ја врската во прелистувач" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "Копирај ја избраната врска" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Приклучи се на канал" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "Напушти канал" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "Промени канал" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "CTCP одговори - специјални кодови:\n\n%d = дата (целиот ctcp)\n%e = име на тековната мрежа\n%m = инфо за машината\n%s = прекар кој испрати ctcp\n%t = време/дата\n%2 = збор 2\n%3 = збор 3\n&2 = збор 2 на крај на линијата\n&3 = збор 3 на крај на линијата\n\n" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "Замени со" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "_Нов" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "_Излез" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "_Поглед" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "_Мени лента" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "_Насловна лента" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "_Корисничка листа" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "Копчиња за р_ежим" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "Менувач на _канали" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "_Јазичиња" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "Д_рво" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "Мерења на _мрежата" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Исклучено" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "Графа" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "_Сервер" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "_Исклучи се" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "_Поврзи се пак" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "_Корисничко мени" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "П_оставувања" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "_Преференции" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "_Прозорец" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "Ресетирај ја линијата за означување" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "И_счисти текст" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "_Помош" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "_Содржина" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "_За" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Име" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Последен пат виден" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "Offline" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Никогаш" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "пред %d минути" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "Присутен" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "Внеси прекар за додавање:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "Извести на овие мрежи:" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "Се прифаќа листа на мрежи разделена со запирки." + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "Отвори дијалог" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "_Трепни на" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "Порака на каналот" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "Приватна порака" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "Осветлена порака" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Верзија" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Опис" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Избери додаток или скрипта за вчитување" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "_Вчитај..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "Сними како..." + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Нова мрежа" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Сигурно сакаш да ја отстраниш мрежата \"%s\" и сите нејзини сервери?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "_Уреди" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "Поврзи се само на избраниот сервер" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Не кружи низ сите сервери ако врската се прекине." + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "Користи SSL за сите сервери на оваа мрежа" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "Корисни глобални кориснички информации" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "_Прекар:" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "Втор избор:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "Вистинск_о име:" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "_Корисничко име:" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Лозинка:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "Множество на знаци:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "Информации за корисникот" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "Трет избор:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Мрежи" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "Прескокни ја листата на мрежи при подигнување на програмот" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "_Уреди..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "_Подреди" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "В_рзи се" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Албанија" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Азербејџан" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Белорусија" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Бугарија" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Естонија" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "Индија" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Малезија" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Тајланд" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Виетнам" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Општо" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Фонт:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "Обоени прекари" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "Давај му на секоја личност на IRC различна боја" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "Порамнети прекари" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "Направи ги прекарите подредени кон десно" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "Покажи линија за означување" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "Вметни црвена линија после последниот прочитан текст." + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Позадинска слика:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "Поставување за провидноста" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "" + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "" + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Ш" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "Ред по последно зборување" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "Проверка на правопис" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "Довршување на прекарите" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "Суфикс на комплетирање на прекарот:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "Суфикс на комплетирање на прекарот:" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "" + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Ш-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "Неподредени" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Врв" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Дно" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Скриен" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "Корисничка листа" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "Покажи ги имињата на хостовите во корисничката листа" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "Користи ги фонтовите и боите од кутијата за текст" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "Корисничката листа подредена по:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "Покажи корисничка листа за:" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "На канали помали од:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "Дејство после двојното кликнување" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Прозорци" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Јазичиња" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "Секогаш" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "Само бараните јазичиња" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "Отвори додатно јазиче за серверските пораки" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "Отвори ново јазиче кога примам приватна порака" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "Подреди ги јазичињата по азбучен редослед" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "Фокус на новите јазичиња:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "Покажи менувач на канали за:" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "Скрати ги ознаките на јазичето на:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "букви." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "Јазичиња или прозорци" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "Отворај ги канали во:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "Отворај ги дијалозите во:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "Отворај ги алатките во:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Да отворам DCC, игнорирани, известувања итн, во јазичиња или прозорци?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "Датотеки и директориуми" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "Автоматско прифаќање на датотеки:" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Преземај датотеки во:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "Поместувај ги завршените датотеки во:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "Зачувај го прекарот во имиња на датотеки" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "Автоматско отворање на DCC прозорците" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "Прозорец за испраќање" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "Прозорец за примање" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "Прозорец на разговорот" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "Едно качување:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "Макс. брзина за еден трансфер" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "Едно преземање:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "Сите качувања заедно:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "Макс. брзина за целиот сообраќај" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "Сите преземања заедно:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "Известувања" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "Трепкај ја иконата при:" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "Трепкај на лентата со задачи на:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "Бипкај на:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "Овозможи икона во местото за известување" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "" + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "Осветлени пораки" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Осветлените пораки се оние каде вашето име е спомнато, но исто така:" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "Додатни зборови за осветлување:" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "Прекари кои нема да се осветлуваат:" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "Прекарите кои секогаш ќе се осветлуваат:" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "Стандардни пораки" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "Излез:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "Напушти канал:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "Отсутен:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "Отсуство" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Покажи отсуство еднаш" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "Автоматски одбележи отсуство" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "" + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "Режим за прикажување во сурова форма" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "Сокриј ги пораките за приклучување и напуштање" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "Доцнење на автоматското поврзување:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Снимање" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "Лизгачки линии:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "Име на датотеката со лог:" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Сервер %c=Канал %n=Мрежа." + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "Внесувај временски формат во записите" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "Временски формат за запис:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URL" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(Оневозможено)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "Вашата адреса" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "Поврзи се со:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "Корисно само за компјутери со повеќе адреси." + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "Земи ја мојата адреса од IRC серверот" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "Го прашува IRC серверот за вашата вистинска адреса. Користете го ова ако имате 192.168.*.* адреса!" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "DCC IP адреса:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "Тврди дека си на оваа адреса кога нудиш датотеки." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "!Оставете ги портите на нула за целосен опсег." + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "Прокси сервер" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "Име на host:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Порта:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Тип:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "Користи прокси за:" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "Автентикација на прокси" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "Корисничко име:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "Избери слика датотека" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "Одберете папка за преземања" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Избери фонт" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Прелистувај..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "Отвори папка со податоци" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Избери боја" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "Бои на текст" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "mIRC боја:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "Локални бои:" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Напред:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Позадина:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "Бои на интерфејсот" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "Нови податоци:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "Линија за означување:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "Нова порака:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "Отсутен корисник:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "Подвлечени:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Настан" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "Звучна датотека" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "Одберете датотека со звук" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "Звучна датотека:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "_Прелистај..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "_Пушти" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Интерфејс" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Поле за внесување" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Корисничка листа" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "Менувач на канали" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Бои" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Разговор" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "Напредно" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Подесувања на мрежата" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Трансфер на датотеки" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Категории" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "Не можете да го поставите дрвото на дното или најгоре!\nВе молам, прво направете промена во распоредот на <b>Јазичињата</b> во менито <b>Поглед</b>." + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "" + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Поради направените промени мораш да го рестартираш xchat." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*ПРЕДУПРЕДУВАЊЕ*\nАвтоматско прифаќање на DCC во твојот домашен директориум\nможе да биде опасно. Пр:\nНекој може да ти испрати „.bash_profile“" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "" + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "Грешка" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Овој сигнал помина само %d аргументи, $%d е невалиден" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "Печати текстуална датотека" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ Број" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Уреди настани" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "Вчитај од..." + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Тестирај се" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Исчисти листа" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Копирај го избраното URL" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Копирај" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Сними ја листата во датотека" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d оператори, %d вкупно" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "Отвори URL како irc://server:port/channel" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "" diff --git a/hexchat/po/ml.po b/hexchat/po/ml.po new file mode 100644 index 0000000..4912f5a --- /dev/null +++ b/hexchat/po/ml.po @@ -0,0 +1,6258 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# bviktor, 2012 +# bviktor, 2012 +# Thorne Heathenspring <thorne@null.net>, 2012-2013 +# Thorne Heathenspring <thorne@null.net>, 2012 +# Thorne Heathenspring <thorne@null.net>, 2012-2013 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-03 20:10+0000\n" +"Last-Translator: TingPing <tingping@tingping.se>\n" +"Language-Team: Malayalam (http://www.transifex.com/hexchat/hexchat/language/ml/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ml\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "ഞാൻ തിരക്കിലാണ് " + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "പോകുന്നു " + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "കാത്തിരിക്കുന്നു" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "സജീവം " + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "പരാജയപ്പെട്ടു " + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "കഴിഞ്ഞു " + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "ബന്ധം സ്ഥാപിക്കുക " + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "റദ്ദാക്കി " + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "പ്രവേശിക്കാനാവുന്നില്ല %s⏎\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "പിശക് " + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s \"%s\" നല്‍കുന്നു. സ്വീകരിക്കണോ?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "" + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "" + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "റൂട്ട് ആയി IRC ഉപയോഗിക്കുന്നത് മണ്ടത്തരമാണ് . പുതിയ ഒരു അക്കൗണ്ട്‌ ഉണ്ടാക്കി അതുപയോഗിക്കുക.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "അതെ " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "അല്ല " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr "" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr "" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "" + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "" + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "" + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "" + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "" + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "" + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "" + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "" + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "" + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "" + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "" + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "" + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "" + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "" + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "" + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "" + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "" + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "" + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "" + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "" + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "" + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "" + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "" + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "" + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "" + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "" + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "" + +#: src/common/text.c:980 +msgid "The action" +msgstr "" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "" + +#: src/common/text.c:987 +msgid "The text" +msgstr "" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "" + +#: src/common/util.c:738 +msgid "China" +msgstr "" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "" + +#: src/common/util.c:770 +msgid "France" +msgstr "" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "" + +#: src/common/util.c:782 +msgid "Government" +msgstr "" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "" + +#: src/common/util.c:801 +msgid "India" +msgstr "" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "" + +#: src/common/util.c:803 +msgid "International" +msgstr "" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "" + +#: src/common/util.c:843 +msgid "Military" +msgstr "" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "" + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "" + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "" + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "" + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "" + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "" + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "" + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "" + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "" + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "" + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "" + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "" + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "" + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "" + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "" + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "" + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "" + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "" + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "" + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "" + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "" + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "" + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "" + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "" + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "" + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "" + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "" + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "" + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "" + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "" + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "" + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "" + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "" + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "" + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "" + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "" + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "" + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "" + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "" diff --git a/hexchat/po/ms.po b/hexchat/po/ms.po new file mode 100644 index 0000000..a314fe2 --- /dev/null +++ b/hexchat/po/ms.po @@ -0,0 +1,6254 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Hasbullah Bin Pit <sebol@ikhlas.com>, 2003 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-03 20:10+0000\n" +"Last-Translator: TingPing <tingping@tingping.se>\n" +"Language-Team: Malay (http://www.transifex.com/hexchat/hexchat/language/ms/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ms\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Saya sibuk" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Rangkaian" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<tiada>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Saluran" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Menunggu" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Aktif" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Gagal" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Selesai" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Sambung" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Dibatalkan" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "Tak dapat mengakses %s\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Ralat" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "Tiada DCC aktif\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Beri Ops" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Ambil Ops" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Tendang/Ban" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Tendang" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Sertai Saluran..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Pautan Pelayan" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Ping Pelayan" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Sorok Versi" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Op" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Masukkan alasan untuk tendang %s:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "Dialog" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Kosongkan" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "" + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* Melaksanakan IRC sebagai root adalah bodoh! Anda sepatutnya\n mencipta satu akaun pengguna dan menggunakannya untuk logmasuk\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "YA" + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "TIDAK" + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s dalamtalian\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s luartalian\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Tiada saluran disertai. Cuba /join #<saluran>\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Tidak disambung. Cuba /server <hos [<liang>]>\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "Saya perlukan /bin/sh untuk dilaksanakan!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Hujah tidak diketahui '%s' diabaikan." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "" + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "Tiada plugin dijumpai.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "Plugin ini enggan dinyahmuatkan.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <nama> <aksi>, tambah butang dibawah senarai-pengguna" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <arahan>, hantar arahan ke semua saluran yang anda sertai" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <arahan>, hantar arahan ke semua pelkayan yang anda masuk" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "" + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, Putus daripada pelayan" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "" + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <teks>, hantar teks ke objek pada tetingkap semasa" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "" + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "" + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "Penggunaan: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nTiada bantuan yang ada bagi larahan itu.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "Tiada arahan sebegitu.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "Hujah teruk ke arahan pengguna\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "Terlalu banyak arahanpengguna rekursif, dibatalkan." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "" + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "" + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "" + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "" + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "" + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "" + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "" + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "" + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "" + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "" + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "" + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "" + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "" + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "" + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "" + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "" + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "" + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "" + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "" + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** AKHIR LOG PADA %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** BEGIN LOGGING AT %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "Alamat IP" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Namapengguna" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "Gelaran bagi orang yang masuk" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "Saluran yang disertai" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "Hos orang itu" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Gelaran" + +#: src/common/text.c:980 +msgid "The action" +msgstr "Aksi" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "Aksara mod" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "" + +#: src/common/text.c:987 +msgid "The text" +msgstr "Teks" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "Mesej" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Nama Pelayan" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Gelaran lama" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Gelaran baru" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "Gelaran orang yang menukar topik" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Topik" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "Namagelaran penendang" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "Orang yang ditendang" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "Saluran" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "Alasan" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "Gelaran orang yang keluar" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "Masa" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "Pencipta" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Gelaran" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Alasan" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Hos" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "Masa dalam format x.x (lihat bawah)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "Saluran ini akan" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "Bunyi" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "Gelaran orang itu" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "Acara CTCP" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "Gelaran orang yang menetapkan kekunci" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "Kekunci" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "Gelaran orang yang menetapkan had" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "Had" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "Gelaran orang yang memberi op" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "Gelaran orang yang di'semi-op'kan" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "Gelaran orang yang melakukan semi-op" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "Gelaran orang yang melakukan voice" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "Gelaran orang yang telah di'voice'kan" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "Gelaran orang yang membuang kekunci" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Nama penuh" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Maklumat Pelayan" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Masa leka" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Alasan away" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Mesej" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Nama Saluran" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Teks" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Gelaran orang yang anda ingin jemput" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Pengguna" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "Gelaran sudah digunakan" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Gelaran sedang dicuba" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Liang" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "Rentetan mod" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "Jenis DCC" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Namafail" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Fail destinasi" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "Nama path" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Posisi" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Saiz" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "Rentetan DCC" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "Bilangan item makluman" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Namafail Lama" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Namafail Baru" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Penerima" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Hosmask" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Namahos" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "Paket" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "Saat" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "TGelaran bagi siapa yang telah dijemput" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Banmask" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "Siapa yang menetapkan ban" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Masa ban" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "Sambungan ditolak" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "Tiada route ke hos" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Sambungan melebihi hadmasa " + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "Tak dapat mengumpukkan alamat" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Emiriah Arab Bersatu" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Afghanistan" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Albania" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Armenia" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Netherlands Antilles" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Antarctika" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Argentina" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "DNS Songsang" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Samoa Amerika" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Austria" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Australia" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Azerbaijan" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Bosnia Herzegovina" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Bangladesh" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Belgium" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Bulgaria" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Bahrain" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Brunei Darussalam" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Bolivia" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Brazil" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Bahamas" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Bhutan" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Bouvet Island" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Belarus" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Kanada" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Kepulauan Coco" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "Republik Afrika Tengah" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Kongo" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "Switzerland" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Kepulauan Cook" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Chile" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Cameroon" + +#: src/common/util.c:738 +msgid "China" +msgstr "China" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Kolombia" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Internic Komersil" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Cuba" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Cape Verde" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Kepulauan Krismas" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Cyprus" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "Republik Czech" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Jerman" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Djibouti" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Denmark" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Dominica" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "Republik Dominica" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Algeria" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Ecuador" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Istitusi Pendidikan" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Estonia" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Mesir" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Sahara Barat" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "Sepanyol" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Ethiopia" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Finland" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Fiji" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Kepulauan Falkland" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Micronesia" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Kepulauan Faroe" + +#: src/common/util.c:770 +msgid "France" +msgstr "Perancis" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Britain" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Georgia" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "French Guiana" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Ghana" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Greenland" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Kerajaan" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Guadeloupe" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Equitorial Guinea" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Greek" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Guinea-Bissau" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Guyana" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Croatia" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Hungary" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Indonesia" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Ireland" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Israel" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "" + +#: src/common/util.c:801 +msgid "India" +msgstr "India" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "" + +#: src/common/util.c:803 +msgid "International" +msgstr "Antarabangsa" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Iraq" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "Iran" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Iceland" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Itali" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Jamaica" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Jordan" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Jepun" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Kenya" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Kyrgyzstan" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Cambodia" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Comoros" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "St. Kitts dan Nevis" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Korea Utara" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Korea Selatan" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Kuwait" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Kepulauan Cayman" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Kazakhstan" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Lebanon" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Saint Lucia" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Liberia" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Lithuania" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Luxembourg" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Latvia" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Libya" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Morocco" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Monaco" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Moldova" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "Perubatan Amerika Syarikat" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Madagascar" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Kepulauan Marshall" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Tentera" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Macedonia" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Mongolia" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Macau" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Martinique" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Mauritania" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Mauritius" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Maldives" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "Mexico" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Malaysia" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Mozambique" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Namibia" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "New Caledonia" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Rangkaian Internic" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Kepulauan Norfolk" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Nigeria" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Belanda" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Norway" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "New Zealand" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "Oraganisasi bukan-komersil Internic" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "French Polynesia" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Papua New Guinea" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Filipina" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Poland" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "St. Perre and Miquelon" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Puerto Rico" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Portugal" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Paraguay" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Qatar" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Romania" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "ARPAnet Sekolah Lama" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Persekutuan Rusia" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Rwanda" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Arab Saudi" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Kepulauan Solomon" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Seychelles" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Sudan" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Sweden" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Singapura" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "St. Helena" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Slovenia" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard and Jan Mayen Islands" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "Republik Slovak" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Somalia" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Surinam" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "Sao Tome and Principe" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Bekas Soviet" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Syria" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Swaziland" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Kepulauan Caicos dan Turks" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Chad" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Thailand" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Tajikistan" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Timor Larose" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Tunisia" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Turki" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Trinidad dan Tobago" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Tanzania" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Ukraine" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "United Kingdom" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "Amerika Syarikat" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Uruguay" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Uzbekistan" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "British Virgin Islands" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "Pulau Virgin Amerika Syarikat" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "Kepulauan Futuna dan Wallis" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Yaman" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Yugoslavia" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Afrika Selatan" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Zambia" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Carta Aksara" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Jemput" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "" + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "" + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Topengan" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "Daripada" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Tarikh" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Buang" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Crop" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Segarkan" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "" + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Pilih fail output" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Nama saluran" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Cari:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Kirim fail kepada %s" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "" + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "" + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Status" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Fail" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Abai" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Terima" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Sambung" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "" + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Terima" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Hantar" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Padam" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Batal" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Simpan" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "Gagal membuka font:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "Penimbal carian kosong.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "Arahan ini memindah tab hadapan ke kiri satu langkah" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "Arahan ini memindah tab hadapan ke kanan satu langkah" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "Arahan ini memindah keluarga tab semasa ke kiri" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "Arahan ini memindah keluarga tab semasa ke kanan" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "Tolak baris input ke sejarah tapi tidak hantar ke pelayan" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "Terdapat ralat memuatkan konfigurasi ikatan kekunci" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "Tidak dapat menulis ke fail itu." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "Tidak dapat membaca fail itu." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "" + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Notis" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "Nyah-abai" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Abaikan Stat:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Saluran:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Notis:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Jemput:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "" + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "" + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "" + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "" + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "" + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "" + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Topik bagi %s ialah: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "Tiada topik ditetapkan" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "" + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "" + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "_Tutup" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "Perlindungan Topik" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "Jemputan Sahaja" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "katakunci" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "Had Pengguna" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "" + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "" + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "" + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Hos tak diketahui" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Entah" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Nama Sebenar:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Sertai Saluran" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "LuarTalian" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "Graf" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "_Pelayan" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "_Tetapan" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "_Tetingkap" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "Teks Je_rnih" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "_Bantuan" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "_Kandungan" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "_Perihal" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Nama" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Terakhir Dilihat" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "LuarTalian" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Tidak sekali" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "DalamTalian" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "Masukkan nama gelaran untuk ditambah:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Versi" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Huraian" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Pilih Plugin atau skrip untuk dimuatkan" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "_Muat ..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "" + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Rangkaian Baru" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Rangkaian" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "S_ambung" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Albania" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Azerbaijan" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Belarus" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Bulgaria" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Estonia" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "India" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Malaysia" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Thailand" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Vietnam" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Umum" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Font:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "" + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Imej latarbelakang:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "" + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "" + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "Suffik penyempurnaan gelaran" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "" + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "Tidak Diisih" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Atas" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Bawah" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Tersembunyi" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "Senarai Pengguna" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Tetingkap" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Tab" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "" + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "Buka saluran pada:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Muatturun fail ke:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "" + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Papar away sekali" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "" + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "Selang masa Auto ulang sambung:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Menglog" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "Baris skrol belakang:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "" + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(Dimatikan)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "" + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "Alamat IP DCC:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "" + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "" + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Pilih font" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Lungsur..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Pilih warna" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "Warna mIRC:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "LatarDepan:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Latar _Belakang" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Acara" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "" + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Antaramuka" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "kotak input" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Senarai pengguna" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Warna" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Berchat" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Tetapan rangkaian" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Pemindahan fail" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Kategori" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "" + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "" + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "Terdapat ralat menghantar rentetan" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "Cetak Fail Teks" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ Nombor" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Edit Acara" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "" + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Uji Semua" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Kosongkan senarai" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Salin" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Simpan senarai ke satu fail" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "" diff --git a/hexchat/po/nb.po b/hexchat/po/nb.po new file mode 100644 index 0000000..963eb65 --- /dev/null +++ b/hexchat/po/nb.po @@ -0,0 +1,6263 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Allan Nordhøy <epost@anotheragency.no>, 2016-2017 +# Johnny A. Solbu <johnny@solbu.net>, 2015,2017 +# Johnny A. Solbu <transifex@solbu.net>, 2015 +# Johnny A. Solbu <transifex@solbu.net>, 2015 +# Xtreme Power <neethan98@hotmail.ca>, 2013 +# pere <pere-transifex@hungry.com>, 2016 +# pere <pere-transifex@hungry.com>, 2016 +# Thor K. H. <nitrolinken@gmail.com>, 2012-2013,2015 +# Thor K. H. <nitrolinken@gmail.com>, 2012-2013 +# Xtreme Power <neethan98@hotmail.ca>, 2013 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-03 20:12+0000\n" +"Last-Translator: TingPing <tingping@tingping.se>\n" +"Language-Team: Norwegian Bokmål (http://www.transifex.com/hexchat/hexchat/language/nb/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: nb\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "HexChat" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "IRC-klient" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "HexChat er en enkel og fleksibel IRC-klient. Den gir deg muligheten til å sikkert koble deg til nettverk, ha samtaler i kanaler eller privat med brukere, og dette med et tilpassbart grensesnitt. Du kan også utføre filoverføringer." + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "HexChat støtter funksjoner som: DCC, SASL, mellomtjenere, stavekontroll, varslinger, logging, tilpassbare temaer, samt Python-/Perl-skript." + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "Hovedsludrevinduet " + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "Prat med andre folk på nettet" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "IM;Chat;" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "hexchat" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "Åpne i sikker modus" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "Temabehandler for HexChat" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Jeg er opptatt" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Forlater kanalen" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "AV" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "PÅ" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "{fravelg}" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Nettverk" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<ingen>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Kanal" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Venter" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Aktiv" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Feilet" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Ferdig" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Koble til" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Avbrutt" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "Kan ikke aksessere %s\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Feil" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s tilbyr \"%s\". Ønsker du å godta?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "Ingen aktive DCC\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "Åpne dial_ogvindu" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "_Send en fil" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "Br_ukerinfo (WhoIs)" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "_Legg til i vennelisten" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "_Ignorer" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "O_peratorhandlinger" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Gi operatørstatus" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Ta operatørstatus" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "Gi stemme" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "Ta stemme" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Spark ut/utesteng" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Spark ut" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "Utesteng" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "Spark og steng ute" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Forlat kanal" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Bli med i kanal..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "Skriv inn kanal:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Lenker til tjenere" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Ping tjener" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Skjul versjon" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Op" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "adjø" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Skriv inn årsaken til å sparke ut %s:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "Send fil" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "Dialog" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Send" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Chat" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Tøm" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "Du har ikke skrivetilgang til %s. Ingenting fra denne sesjonen kan lagres." + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* Det er ikke lurt å kjøre IRC som root! Du bør\n opprette en vanlig brukerkonto og bruke denne.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "JA " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "NEI " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Du mottar en flom av CTCP-forespørsler fra %s, ignorerer %s\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "Du blir oversvømt av MSG-meldinger fra %s, Slår av gui_autoopen_dialog.\n" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "Peker til %s" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "Ikke funnet" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "Peker til:" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "Slår opp %s..." + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr "%-20s tilkoblet\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr "%-20s frakoblet\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Ikke med i noe kanal. Prøv /join #<kanalnavn>\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Ikke tilkoblet. Prøv /server <tjener> [<port>]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "Serveren %s eksisterer allerede på netverket %s.\n" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "La serveren %s til i nettverket %s.\n" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Allerede markert som borte: %s\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "Allerede markert som tilbake.\n" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "/bin/sh trengs for at dette skal kjøres!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "Tilgjengelige kommandoer:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "Brukerdefinerte kommandoer:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "Kommandoer definert av tillegg:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Prøv /HELP <kommando> for mer informasjon, eller /HELP -I" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Ukjent argument «%s» ble ignorert." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "Demping er ikke støttet av denne verten." + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "Tillegg ikke funnet.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "Tillegget vil ikke lastes ut.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <navn> <hendelse>, legger til en knapp under brukerlisten" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "ADDSERVER <NyttNettverk> <NyVert/6667>, legger til et nytt nettverk med en ny vert i nettverkslisten" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <kommando>, sender en kommando til alle kanaler du er med i" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "ALLCHANL <kommando>, sender en kommando til alle kanalene på den nåværende tjeneren" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <kommando>, sender en kommando til alle tilkoblede tjenere" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "AWAY [<årsak>], markerer at du er borte (bruk /BACK for å nullstille)" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "BACK, markerer deg som tilbake (ikke borte)" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <maske> [<type>], utestenger alle som passer masken i den nåværende kanalen. Om de allerede er i kanalen vil de ikke bli kastet ut samtidig. (Krever chanop.)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <variabel> [<verdi>]" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "CHARSET [<tegnsett>], hent ut eller sett tegnsettet som brukes for den nåværende tilkoblingen" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "CLEAR [ALL|HISTORY|[-]<mengde>], Fjerner gjeldende tekstvindu eller kommandohistorie" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "CLOSE [-m], Lukker gjeldende fane, lukker vinduet hvis det er den eneste åpne fanen, eller med \"-m\"-flagget, lukker alle forespørsler." + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <kode|maske>, finner en landskode, f.eks.: au = australia" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <kallenavn> <melding>, sender CTCP-meldingen til kallenavnet. Ofte brukte meldinger er VERSION og USERINFO" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "CYCLE [<kanal>], forlater aktiv eller spesifisert kanal og blir øyeblikkelig med igjen" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <kallenavn> - godta tilbudt fil\nDCC SEND [-maxcps=#] <kallenavn> [<file>] - send en fil til noen\nDCC PSEND [-maxcps=#] <kallenavn> [<file>] - send en fil i passiv modus\nDCC LIST - vis DCC-liste\nDCC CHAT <kallenavn> - tilby DCC-sludring med noen\nDCC PCHAT <kallenavn> - tilby DCC-sludring i passiv modus\nDCC CLOSE <type> <kallenavn> <file> eksempel:\n /dcc close send olanormann fil.tar.gz" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <kallenavn>, fjerner chanhalf-op status fra kallenavnet i den aktive kanalen (krever chanop)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <navn>, fjerner en knapp under brukerlisten" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <kallenavn>, fjerner chanop status fra kallenavnet i den aktive kanalen. (Krever chanop)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <kallenavn>, fjerner stemme-status fra kallenavnet i den aktive kanalen. (krever chanop)" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, kobler fra tjener" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "DNS <kallenavn|host|ip>, Løser en IP eller vertsnavn" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "DOAT <kanal,liste,/nettverk> <kommando>" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <tekst>, viser tekst lokalt" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <kommando>, kjører kommandoen. Hvis -o flagget brukes, så vil utdata bli sendt til den aktive kanalen, hvis ikke vises det lokalt" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, sender SIGCONT til prosessen" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9] , dreper en kommando som kjører i den aktive sesjonen. Hvis -9 brukes, så vil prosessen bli SIGKILL-drept." + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, sender SIGSTOP til prosessen" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, sender data til prosessens stdin" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "EXPORTCONF, eksporterer innstillingene til HexChat" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, tømmer den aktive vertens sende-kø" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <vert> [<port>], bruker en vert som mellommann, standard port er 23" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <kallenavn> [<passord>], dreper et GHOST-et kallenavn" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <kallenavn>, gir chanhalf-op status til kallenavnet i den aktive kanalen (krever chanop)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <passord>, identifiserer deg til NickServ " + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <maske> <typer..> <alternativer..>\n maske - vertsmaske som skal ignoreres, f.eks.: *!*@*.aol.com\n typer - datatyper som skal ignoreres, en eller alle av:\n PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n alternativer - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITER <kallenavn> [<kanal>], inviterer noen til en kanal, hvor aktiv kanal er standarden (krever chanop)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <kanal>, blir med i kanalen" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "KICK <kallenavn> [reason], sparker kallenavn fra den aktuelle kanalen (Krever chanop)" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "KICKBAN <kallenavn> [reason], utestenger og deretter sparker kallenavn fra den aktuelle kanalen (Krever chanop)" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, tvinger frem en ny sjekk av lag" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "LASTLOG [-h] [-m] [-r] [--] <tekst>, søker etter en tekst i mellomlageret\n Bruk -h for å framheve funnet tekst\n Bruk -m for sensitivitet til store og små bokstaver\n Bruk -r når tekst er et regulært uttrykk\n Bruk -- (dobbel bindestrek) for å avslutte alternativer når du f.eks. søker etter teksten '-r'" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <fil>, laster et tillegg eller skript" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, fjerner samtlige chanhalf-op statuser i den aktive kanalen (krever chanop)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, fjerner samtlige chanops i den aktive kanalen (krever chanop)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <handling>, sender handlingen til den aktive kanalen (handlinger skrives i tredjeperson, som f.eks. /me hoppet)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "MHOP <kallenavn>, gir chanhalf-op status til alle brukere i den aktive kanalen (krever chanop)" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, kaster ut samtlige personer i den aktive kanalen, bortsett fra deg (krever chanop)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, gir samtlige personer chanop i den aktive kanalen (krever chanop)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "MSG <kallenavn> <message>, sender en privat melding, melding «.» for å sende til siste kallenavn eller prefiks med «=» for DCC-sludring" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "NAMES [channel], Lister kallenavnene i kanalen" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <kallenavn> <melding>, sender et CTCP-varsel" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <vertsnavn> [<port>]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <kallenavn>, endrer kallenavnet ditt" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "NOTICE <kallenavn/kanal> <melding>, sender ett varsel" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [-n nettverk1[,nettverk2,...]] [<kallenavn>], viser varslingslisten din eller legger noen til den" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <kallenavn>, gir chanop status til kallenavnet i den aktive kanalen (krever chanop)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<kanal>] [<grunn>], forlater kanalen, som standard den aktive" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <kallenavn | kanal>, CTCP-pinger et kallenavn eller en kanal" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "QUERY [-nofocus] <kallenavn> [message], åpner opp et nytt privmsg vindu til noen og eventuelt send en melding" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "QUIET <treffmaske> [<stillhetstype>], demper alle som samsvarer med treffmasken i den nåværende kanal, hvis det støttes av tjeneren." + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<grunn>], kobler deg fra den nåværende verten" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <tekst>, sender teksten i rå form til verten" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<vert>] [<port>] [<passord>], kan bli brukt som /RECONNECT for å koble til nåværende vert på ny eller med /RECONNECT ALL for å koble til alle" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<vert>] [<port>] [<passord>], kan bli brukt som /RECONNECT for å koble til nåværende vert på ny eller med /RECONNECT ALL for å koble til alle" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "RECV <tekst>, send rå data til HexChat, som om det var mottatt fra IRC-verten" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "RELOAD <name>, laster et tillegg eller skript på nytt" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <tekst>, sender teksten til objektet i det aktive vinduet" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <kallenavn> [<fil>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <vert> <port> <kanal>, kobler til og blir med i en kanal" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <vert> <port> <kanal>, kobler til og blir med i en kanal" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "SERVER [-ssl] <vert> [<port>] [<passord>], kobler til en vert med standard port som 6667 for vanlige tilkoblinger, og 6697 for SSL-tilkoblinger" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <vert> [<port>] [<passord>], kobler til en vert med standard port som 6667" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-off|-on] [-quiet] <variabel> [<verdi>]" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "SETCURSOR [-|+]<posisjon>, endre posisjonen til markøren i inndataboksen" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "SETTAB <nytt navn>, endre navnet til en fane, tab_trunc-grensen gjelder fortsatt" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "SETTEXT <ny tekst>, erstatter teksten i inndataboksen" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<topic>], endrer kanalens emne om gitt, hvis ikke vises det nåværende emnet" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "\nTRAY -f <tidsavbrud> <fil1> [<fil2>] Blink systemkurvikonet mellom to ikoner.\nTRAY -f <filnavn> Sett systemkurvikonet til et ikon.\nTRAY -i <nummer> Blink systemkurvikonet med et internt ikon.\nTRAY -t <tekst> Sett systemkurvens infoboble.\nTRAY -b <tittel> <tekst> Sett systemkurves varslingsboble." + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <maske> [<maske>...], fjerner utestengingen av de spesifiserte maskene." + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <maske> [QUIET]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <navn>, laster ut et tillegg eller skript" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "UNQUIET <treffmaske> [<treffmaske>...], fjerner dempingen av de spesifiserte maskene, hvis støttet av tjeneren." + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, åpner en URL i din nettleser" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "USELECT [-a] [-s] <kallenavn1> <kallenavn2> osv, framhever kallenavn(er) i kanalens brukerliste" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOIE <kallenavn>, gir stemme-status til kallenavnet i den aktive kanalen (krever chanop)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <melding>, sender en melding til alle åpne kanaler" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <melding>, sender meldingen til alle chanops i den aktive kanalen" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "Brukerkommandoer for: %s\n" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "Bruk: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nIngen hjelp tilgjengelig for kommandoen.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "Kommandoen finnes ikke.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "Ugyldige argumenter for brukerkommandoen.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "For mange rekursive brukerkommandoer, avbryter." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "Ukjent kommando %s. Forsøk /help\n" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "Ingen startpunkt for hexchat_plugin_init; er dette egentlig et HexChat-tillegg?" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "*\tBetjener ident-forespørsel fra %s som %s" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "*\tFeil ved oppstart av identd-tjener: %s" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "IDENTD <port> <brukernavn>" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "Tidtaker %d slettet.\n" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "Fant intet slikt referansenummer.\n" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "Ingen tidtaker installert.\n" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr " Ref# Sekunder Repeter Kommando \n" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "%5d %8.1f %7d %s\n" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Sikker på at denne verten støtter SSL og porten valgt?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "Kunne ikke løse vertsnavnet %s\nSjekk din Internett-konfigurasjon!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "Proxy-traversering feilet.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Går videre til neste vert i %s...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "Advarsel: tegnsettet «%s» er ukjent. Ingen konvertering vil bli brukt for nettverket %s." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "%C18*%O$t%C18$1%O er nå lagt til i varslingslisten." + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "%C22*%O$t%C22$1%O: %C18$2%O på %C24$4%O av %C26$3%O" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "%C22*%O$tKan ikke bli med i %C22$1 %O(%C20Du er utestengt%O)." + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "%C29*%O$tErkjente funksjoner: %C29$2%O" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "%C29*%O$tFjernede funksjoner: %C29$2%O" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "%C23*%O$tStøttede funksjoner: %C29$2%O" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "%C23*%O$tForespurte funksjoner: %C29$1%O" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "%C24*%O$t%C28$1%O er nå kjent som %C18$2%O" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O utestenger %C18$2%O" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "%C22*%O$tKanal %C22$1%O opprettet den %C24$2%O" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O fjerner halv-operatørprivilegiet fra %C18$2%O" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O fjerner operatørprivilegiet fra %C18$2%O" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O fjerner stemmeprivilegiet fra %C18$2%O" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%C setter unntak på %C18$2%O" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O gir halv-operatørprivilegiet til %C18$2%O" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%C setter invitasjonsunntak på %C18$2%O" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%UKanal Brukere Emne" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "%C22*%O$t%C26$1%O setter flagg %C24$2$3%O på %C22$4%O" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "%C22*%O$tKanalflagg for %C22$1%O: %C24$2" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O gir operatørprivilegiet til %C18$2%O" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O Setter demping på %C18$2%O" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O fjerner unntak for %C18$2%O" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O Fjernet invitasjonsunntak på %C18$2%O" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "%C22*%O$t%C26$1%O fjerner kanalpassord" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "%C22*%O$t%C26$1%O fjerner grense på antall brukere" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O Setter kanalnøkkelordet til %C24$2%O" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O setter kanalens brukergrense til %C24$2%O" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O fjerner utestengelse på %C18$2%O" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O fjerner demping på %C18$2%O" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "%C22*%O$tKanal %C22$1%O url: %C24$2" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O gir stemmeprivilegiet til %C18$2%O" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "%C23*%O$tTilkoblet... logger nå inn." + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "%C23*%O$tKobler til %C29$1%C (%C23$2:$3%O)" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "%C20*%O$tTilkoblingen var ikke vellykket (%C20$1%O)" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "%C24*%O$tMottok én CTCP-melding %C24$1%C fra %C18$2%O" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "%C24*%C$tMottok en CTCP-melding %C24$1%C fra %C18$2%C (til %C22$3%C)%O" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "%C24*%O$tMottok én CTCP-lyd %C24$1%C fra %C18$2%O" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "%C24*%O$tMottok én CTCP-lyd %C24$1%C fra %C18$2%C (til %C22$3%O)" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "%C23*%O$tDCC CHAT til %C18$1%O ble avbrutt." + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "%C24*%O$tTilkobling for DCC CHAT ble etablert mot %C18$1%C %C30[%C24$2%C30]%O" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "%C20*%O$tDCC CHAT til %C18$1%O ble frakoblet (%C20$4%O)" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "%C24*%O$tMottok ett DCC CHAT tilbud fra %C18$1%O" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "%C24*%O$tTilbyr DCC CHAT til %C18$1%O" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "%C24*%O$tTilbyr allerede DCC CHAT til %C18$1%O" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "%C20*%O$tDCC $1 tilkoblingsforsøk %C18$2%O feilet (%C20$3%O)" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "%C23*%O$tMottok '%C23$1%C' fra %C18$2%O" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "%C16,17 Type Til/fra Status Størrelse Pos Fil" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "%C20*%O$tMottok en ugyldig DCC-forespørsel fra %C18$1%O.$a010%C23*%O$tPakkeinnholdet: %C23$2%O" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "%C24*%O$tTilbyr '%C24$1%O' til %C18$2%O" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "%C23*%O$tInget slikt DCC-tilbud." + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "%C23*%O$tDCC RECV '%C23$2%O' til %C18$1%O ble avbrutt." + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "%C24*%O$tDCC RECV '%C23$1%O' fra %C18$3%O fullført %C30[%C24$4%O cps%C30]%O" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$tDCC RECV-tilkobling etablert til %C18$1 %C30[%O%C24$2%C30]%O" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "%C20*%O$tDCC RECV '%C23$1%O' fra %C18$3%O mislyktes (%C20$4%O)" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "%C20*%O$tDCC RECV: Kan ikke åpne '%C23$1%C' for skriving (%C20$2%O)" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "%C23*%O$tThe file '%C24$1%C' finnes allerede, lagrer som '%C23$2%O' i stedet." + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "%C24*%O$t%C18$1%C har bedt om å gjenoppta '%C23$2%C' fra %C24$3%O." + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "%C23*%O$tDCC SEND '%C23$2%C' til %C18$1%O avbrutt." + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "%C24*%O$tDCC SEND '%C23$1%C' til %C18$2%C fullført %C30[%C24$3%C cps%C30]%O" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$tDCC SEND-tilkobling etablert til %C18$1 %C30[%O%C24$2%C30]%O" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "%C20*%O$tDCC SEND '%C23$1%C' til %C18$2%C mislyktes (%C20$3%O)" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "%C24*%O$t%C18$1%C har tilbudt '%C23$2%C' (%C24$3%O bytes)" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stanset opp, avbryter." + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O ble tidsavbrutt, avbryter." + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "%C24*%O$t%C18$1%O slettet fra varslingslisten." + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "%C20*%O$tFrakoblet (%C20$1%O)" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "%C24*%O$tFant din IP-adresse: %C30[%C24$1%C30]%O" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "%O%C18$1%O lagt til i ignoreringslisten." + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "%OIgnorering av %C18$1%O ble forandret." + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "%C16,17" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "%C16,17 Vertsmaske PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "%O%C18$1%O ble fjernet fra ignoreringslisten." + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "%OIgnoreringslisten er tom." + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "%C20*%O$tKan ikke bli med i %C22$1%C (%C20Kanalen er i invitasjonsmodus%O)" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "%C24*%O$tDu er invitert til %C22$1%O av %C18$2%O (%C29$3%O)" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "%C23*$t$1 ($3%C23) har blitt med" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "%C20*%O$tKan ikke bli med i %C22$1%C (%C20Krever nøkkelord/passord%O)" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "%C22*%O$t%C26$1%C har kastet ut %C18$2%C fra %C22$3%C (%C24$4%O)" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "%C19*%O$t%C19Du ble drept av %C26$1%C (%C20$2%O)" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "%C29*%O$t%C29MOTD hoppet over%O" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "%C23*%O$t%C28$1%C er allerede i bruk. Forsøker igjen med %C18$2%O..." + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "%C23*%O$t%C28$1%C er feilaktige. Forsøker igjen med %C18$2%O..." + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "%C20*%O$tKallenavnet er ikke støttet, eller allerede i bruk. Bruk /NICK for å velge ett annet kallenavn." + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "%C20*%O$tIngen slik DCC." + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "%C23*%O$tIngen prosess kjører for øyeblikket" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "%C23*%O$tVarsle: %C18$1%C er fraværende (%C24$2%O)" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "%C23*%O$tVarsle: %C18$1%C er tilbake" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tVarslingsliste er tom." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "%C16,17 Varsle liste" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "%C23*%O$t%C23$1%O brukere i varslingslisten." + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "%C23*%O$tVarsle: %C18$1%C er frakoblet (%C29$3%O)" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "%C23*%O$tVarsle: %C18$1%C er tilkoblet (%C29$3%O)" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "%C24*$t$1 ($2%C24) har forlatt" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "%C24*$t$1 ($2%C24) forlot ($4)" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "%C24*%O$tPing-svar fra %C18$1%C: %C24$2%O sekund(er)" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "%C20*%O$tIngen ping-svar etter %C24$1%O sekunder, frakobler." + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "%C24*%O$tEn prosess kjører allerede" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "%C24*$t$1 har avsluttet ($2)" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "%C24*%O$t%C26$1%C setter modus %C30[%C24$2%C30]%O" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "%O-%C29$1/Wallops%O-$t$2" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "%C24*%O$tSlår opp IP-nummer for %C18$1%O..." + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "%C23*%O$tAutentisering via SASL som %C18$1%O (%C24$2%O)" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "%C29*%O$tTilkoblet." + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "%C29*%O$tSlår opp %C29$1%O" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "%C23*%O$tStoppet forrige tilkoblingsforsøk (%C24$1%O)" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "%C22*%O$tEmne for %C22$1%C er: $2%O" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "%C22*%O$t%C26$1%C endret emnet til: $2%O" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "%C22*%O$tEnmet for %C22$1%C satt av %C26$2%C (%C24$3%O)" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C20*%O$tUkjent vert. Kanskje du feilstavet den?" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "%C20*%O$tKan ikke bli med i %C22$1%C (%C20Brukergrensen er nådd%O)" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "%C22*%O$tBrukere i %C22$1%C: %C24$2%O" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%C er borte %C30(%C23$2%O%C30)%O" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "%C23*%O$t%C28[%C18$1%C28] %OSlutt på WHOIS-liste." + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O inaktiv %C23$2%O" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O inaktiv %C23$2%O, logget på: %C23$3%O" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O Ekte vert: %C23$2%O, Ekte IP: %C30[%C23$3%C30]%O" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "%C19*%O$tSnakker nå i %C22$2%O" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "%C19*%O$tDu har blitt kastet ut fra %C22$2%C av %C26$3%O (%C20$4%O)" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "%C19*%O$tDu har forlatt kanalen %C22$3%O" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "%C19*%O$tDu har forlatt kanalen %C22$3%C (%C24$4%O)" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "%C20*%O$tInviterte %C18$1%O til %C22$2%O (%C24$3%O)" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "%C20*%O$tDu er nå kjent som %C18$2%O" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "Lastet logg fra" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** AVSLUTTER LOGGING PÅ %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** BEGYNNER LOGGING PÅ %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "* Kan ikke åpne loggfilen(e) for skriving. Sjekk\ntilgangene til %s" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "Venstre melding" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "Høyre melding" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "IP-adresse" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Brukernavn" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "Kallenavnet til brukeren som blir med" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "Kanalen man går inn i" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "Personens vert" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "Kontoen til personen" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Kallenavn" + +#: src/common/text.c:980 +msgid "The action" +msgstr "Handlingen" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "Modus-tegn" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "Identifisert tekst" + +#: src/common/text.c:987 +msgid "The text" +msgstr "Teksten" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "Meldingen" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Navn på tjener" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "Erkjente funksjoner" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "Fjernede funksjoner" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "Vert-funksjonalitet" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "Forespurte funksjoner" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Gammelt kallenavn" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Nytt kallenavn" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "Kallenavn for personen som endret emnet" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Emne" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "Kallenavn på den som sparker" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "Personen som sparkes ut" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "Kanalen" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "Årsaken" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "Kallenavn for personen som forlater kanalen" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "Tiden" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "Skaperen" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Kallenavn" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Årsak" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Vert" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "Hvem er det fra" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "Tiden i x.x-format (se nedenfor)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "Kanalen det går til" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "Lyden" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "Personens kallenavn" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "CTCP-hendelse" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "Kallenavnet til brukeren som satt nøkkelen" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "Nøkkelen" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "Kallenavnet til personen som satt grensen" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "Grensen" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "Kallenavnet til brukeren som ga operatørstatus" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "Kallenavnet til brukeren som fikk operatørstatus" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "Kallenavnet til brukeren som fikk halv-operatørstatus" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "Kallenavnet til brukeren som ga halv-operatørstatus" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "Kallenavnet til brukeren som ga stemmestatus" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "Kallenavnet til brukeren som fikk stemmestatus" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "Kallenavnet til brukeren som opprettet en utestengelse" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "Utestengelsesmasken" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "Kallenavnet til brukeren som dempet" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "Dempningsmasken" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "Kallenavnet som fjernet nøkkelen" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "Kallenavnet som fjernet brukergrensen" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "Kallenavnet til personen som gjorde deop" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "Kallenavnet til brukeren som mistet operatørstatus" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "Kallenavnet til personen som gjorde dehalfop" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Kallenavnet til brukeren som mistet halv-operatørstatus" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "Kallenavnet til personen som gjorde devoice" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "Kallenavnet til brukeren som mistet stemmestatus" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "Kallenavnet til personen som gjorde unban" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "Kallenavnet til personen som gjorde unquiet" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "Kallenavnet til brukeren som opprettet unntaket" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "Unntaksmasken" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "Kallenavnet til brukeren som fjernet unntaket" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "Kallenavnet til brukeren som sendte en invitasjon" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "Inviteringsmasken" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "Kallenavnet til brukeren som trakk tilbake invitasjonen" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "Kallenavnet til brukeren som satt modi" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "Modi-tegnet (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "Modi-bokstaven" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "Kanalen modi blir satt i" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Fullt navn" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Kanalmedlemskap/«er en IRC-operatør»" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Informasjon om tjener" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Inaktiv for" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Påloggingstid" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Borteårsak" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Melding" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Konto" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "Ekte bruker@vert" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "Ekte IP" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Navn på kanal" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "Mekanisme" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "Rå-tall eller identifikator" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Tekst" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Kallenavn for personen som inviterte deg" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Brukere" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "Kallenavn i bruk" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Kallenavn prøves" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Port" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "Modusstreng" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "Type DCC" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Filnavn" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Filnavn for mål" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "Stinavn" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Posisjon" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Størrelse" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "DCC-streng" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "Bortemelding" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "Antall varslinger" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Gammelt filnavn" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Nytt filnavn" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Mottaker" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Vertsmaske" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Vertsnavn" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "Pakken" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "Sekunder" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "Kallenavnet til brukeren som har blitt invitert" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Utestengelsesmaske" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "Hvem satte bannlysningen" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Utestengelsesvarighet" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "Kan ikke lese lydfil:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "Ekstern vert lukket pluggen" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "Tilkobling nektet" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "Ingen rute til verten" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Tidsavbrudd for tilkobling" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "Kan ikke tildele den adressen" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "Tilkobling nullstillt av vert" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "Ascension" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Forente arabiske emirater" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "Aviasjonsrelaterte felter" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Afghanistan" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Antigua og Barbuda" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Albania" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Armenia" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "De nederlandske antiller" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Antarktis" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Argentina" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "Revers DNS" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Amerikansk Samoa" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "Asia-Pacific" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Østerrike" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "NATO-felt" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Australia" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "Ålandøyene" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Aserbajdsjan" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Bosnia og Herzegovina" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Bangladesh" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Belgia" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Bulgaria" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Bahrain" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "Bedrifter" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Brunei Darussalam" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Bolivia" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Brasil" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Bahamas" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Bhutan" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Bouvetøya" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Hviterussland" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Kanada" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "Katalansk" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Cocosøyene" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "Den demokratiske republikken Kongo" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "Den sentralafrikanske republikk" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Kongo" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "Sveits" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "Elfenbenskysten" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Cook-øyene" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Chile" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Kamerun" + +#: src/common/util.c:738 +msgid "China" +msgstr "Kina" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Colombia" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Internic kommersiell" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "Cooperatives" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "Serbia og Montenegro" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Kuba" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Kapp Verde" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Juleøya" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Kypros" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "Den tsjekkiske republikk" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "Øst-Tyskland" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Tyskland" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Djibouti" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Danmark" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Dominica" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "Dominikanske republikk" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Algerie" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Ekvador" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Utdanningsinstitusjon" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Estland" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Egypt" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Vest-Sahara" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "Spania" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Etiopia" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "Den Europeiske union" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Finland" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Fiji" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Falklandsøyene" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Mikronesia" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Færøyene" + +#: src/common/util.c:770 +msgid "France" +msgstr "Frankrike" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Storbritannia" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Georgia" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Fransk Guyana" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "Kanaløyene" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Ghana" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Grønland" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Regjering" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Guadeloupe" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Ekvatorial-Guinea" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Hellas" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Sør-Georgia og Sør-Sandwichøyene" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Guinea-Bissau" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Guyana" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Heard- og McDonaldøyene" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Kroatia" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Ungarn" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Indonesia" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Irland" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Israel" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "Man" + +#: src/common/util.c:801 +msgid "India" +msgstr "India" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "Informativ" + +#: src/common/util.c:803 +msgid "International" +msgstr "Internasjonal" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Det britiske territoriet i Indiahavet" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Irak" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "Iran" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Island" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Italia" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Jamaica" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Jordan" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "Bedriftsjobber" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Japan" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Kenya" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Kyrgyzstan" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Kambodsja" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Komorene" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "St. Kitts og Nevis" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Nord-Korea" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Sør-Korea" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Kuwait" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Caymanøyene" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Kazakhstan" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Libanon" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Saint Lucia" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Liberia" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Litauen" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Luxembourg" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Latvia" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Libya" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Marokko" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Monaco" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Moldova" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "Montenegro" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "United States medisinske" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Madagaskar" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Marshall-øyene" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Militær" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Makedonia" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Mongolia" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Macau" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "Mobile enheter" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Nord-Marianene" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Martinique" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Mauritania" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Mauritius" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "Museum" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Maldivene" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "Mexico" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Malaysia" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Mosambik" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Namibia" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "Individuelle navn" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Ny-Caledonia" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Internic nettverk" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Norfolkøya" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Nigeria" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Nederland" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Norge" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "New Zealand" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "Internic ideell organisasjon" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Fransk polynesia" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Papua Ny-Guinea" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Filippinene" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Polen" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "Saint-Pierre og Miquelon" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Puerto Rico" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "Profesjon" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "Palestinsk territoria" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Portugal" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Paraguay" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Qatar" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Reunion" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Romania" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "Gammeldags ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "Serbia" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Russiske føderasjon" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Rwanda" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Saudi Arabia" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Solomonøyene" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Seychellene" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Sudan" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Sverige" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Singapore" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "St. Helena" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Slovenia" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard og Jan Mayen" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "Den slovakiske republikk" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Somalia" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Surinam" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "Sør-Sudan" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "Sao Tome og Principe" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Tidligere USSR" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Syria" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Swaziland" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Turks- og Caicosøyene" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Tsjad" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "Internet Communication Services" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "De franske sørterritorier" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Thailand" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Tajikistan" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Øst-Timor" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Tunis" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Tyrkia" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "Reiseliv og turisme" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Trinidad og Tobago" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Tanzania" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Ukraina" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Storbritannia" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "De Forente stater" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Uruguay" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Usbekistan" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Vatikanstaten" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "St. Vincent og Grenadinene" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "Jomfruøyene (UK)" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "Jomfruøyene (USA)" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "Wallis- og Futuna-øyene" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "Voksenunderholdning" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Jemen" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Jugoslavia" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Sør-Afrika" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Zambia" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "Kunne ikke koble til sesjons-bussen" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "NameHasOwner kunne ikke fullføres" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "Command kunne ikke fullføres" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "ekstern tilgang" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "tillegg for fjerntilgang via DBUS" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Kunne ikke koble til sesjons-busen: %s\n" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Innhenting av %s feilet: %s\n" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Tegnkart" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "Bannlys" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "Unntak" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "Unnta" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "Invitasjoner" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Inviter" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "Dempninger" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "Dempet" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "Kopiér maske" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "%s på %s av %s" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "Kopiér oppføring" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "Ikke koblet til" + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "Du må velge en bannlysing." + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "Er du sikker på at du ønsker å fjerne alle elementene fra %s?" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "Type" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Maske" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "Fra" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Dato" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Listen for utestengelser kan kun åpnes opp mens du er i en kanal." + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "Utestengelsesliste (%s) - %s" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Fjern" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Beskjær" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Oppdater" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Viser %d/%d brukere på %d/%d kanaler." + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Velg et filnavn for utdata" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "_Bli med i kanal" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "_Kopier navn på kanal" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "Kopier emne_tekst" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "Kanalliste (%s) - %s" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "_Søk" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "Last ne_d liste" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "Lagre _liste..." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "Vis kun:" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "kanaler med" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "til" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "brukere." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "Se i:" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Navn på kanal" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "Type søk:" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "Enkelt søk" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "Mønster-treff (wildcards)" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "Regulært uttrykk" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Finn:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Send fil til %s" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "Filen kan ikke gjenopptas." + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "Kan ikke åpne filen: %s\n%s.\n Gjenopptaking ikke mulig." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "Filen i nedlastningsmappen er større enn filen tilbudt. Gjenopptaking er ikke mulig." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "Kan ikke gjenoppta samme fil fra to personer." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "Opplastinger og nedlastinger - %s" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Status" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Fil" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Begge" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "Opplastninger" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "Nedlastninger" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "Detaljer" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "Fil:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "Adresse:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Avbryt" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Godta" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Gjenoppta" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "Åpne mappe..." + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "DCC-kanalliste - %s" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Mottatt" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Sendt" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "Starttid" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "Legg til" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Slett" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Avbryt" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Lagre" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "Ikke koble til tjenere automatisk" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "Bruk en annen konfigurasjonsmappe" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "Ikke last inn tillegg automatisk" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "Vis mappe for automatisk lasting av tillegg/skript" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "Vis mappe for brukerens konfigurasjon" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "Åpne irc://-nettadresser" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "Utfør kommando:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "Åpne en URL eller kjør en kommando i en eksisterende HexChat" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Start minimert. Nivå 0 er normalt, nivå 1 er ikonifisert og nivå 2 er i systemkurven" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "nivå" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "Vis versjonsinformasjon" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "Mislyktes med å åpne skrift:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "Søk i buffer er tomt.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d bytes" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Nettverkskø for sending: %d bytes" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "Run Command-handlinga kjører dataene i data 1 som om det hadde blitt skrevet inn i boksen der du trykket tastesekvensen. Dermed kan den inneholde tekst (som vil bli sendt til kanalen/personen), kommandoer eller brukerkommandoer. Ved kjøring vil alle \\n tegnene i Data 1 brukes til å dele opp separate kommandoer slik at det er mulig å kjøre mer enn en kommando. Hvis du ønsker en\\ i selve teksten kjøre deretter inn\\\\" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "Change Page-kommandoen veksler mellom sidene i notatboken. Sett Data 1 til den siden du ønsker å bytte til. Hvis data 2 er satt til noe vil byttingen være i forhold til den aktuelle posisjonen. Sett Data 1 til auto for å bytte til siden med den nyeste og viktig aktiviteten (private vinduer først, deretter kanaler med Utheving, kanaler med dialog og kanaler med andre data)" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "Insert in Buffer-kommandoen vil sette innholdet i data 1 i posten der tastesekvensen ble trykket ved markørposisjonen" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "Scroll Page-kommandoen ruller tekstfeltet (text-widget opp eller ned en side eller en linje. Sett Data 1 til enten Top, Bottom, Up, Down, +1 eller -1." + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "Set Buffer-kommandoen setter oppføringen der tastesekvensen ble oppgitt til innholdet i data 1" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "Last Command-kommandoen setter oppføringen til å inneholde den forige angitte kommandoen - det samme som å trykke opp i et skall" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "Next Command-kommandoen setter oppføringen til å inneholde den neste angitte kommandoen - det samme som å trykke ned i et skall" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "Denne kommandoen endrer teksten i oppføringen for å fullføre et ufullstendig kallenavn eller kommando. Hvis Data 1 er satt vil dobbelt-tabbing i en streng velge det siste kallenavnet, ikke det neste" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "Denne kommandoen ruller opp og ned gjennom listen over kallenavn. Hvis Data 1 er satt til noe vil det bla opp, ellers blar det ned" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "Denne kommandoen sjekker det siste ordet oppgitt i oppføringen mot erstatningslisten og erstatter den hvis den finner et treff" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "Kommandoen flytter front-tab ett steg til venstre" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "Kommandoen flytter front-tab ett steg til høyre" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "Kommandoen flytter nåværende tab-familie til venstre" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "Kommandoen flytter nåværende tab-familie til høyre" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "Send inndatalinjen til historikken, men sender ikke til verten" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "En feil oppstod under lasting av tastatursnarveiene" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "Velg en rad for å få hjelpeinformasjon om dens handling." + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "Tastatursnarveier - %s" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "Kan ikke skrive til den filen." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "Kan ikke lese den filen." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "Masken eksisterer allerede." + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Privat" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Varsel" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "Stopp ignorering" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "Er du sikker på at du har lyst å tømme ignoreringslisten?" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "Skriv ignoreringsmaske:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "Ignoreringsliste - %s" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Ignoreringsstatistikk:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Kanal:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privat:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Varsel:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Inviter:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "Legg til..." + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "Kanalnavn for kort, prøv igjen." + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "Tilkobling fullført - %s" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "Tilkobling til %s fullført." + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "I nettverksvinduet har ingen kanal (sludrerom) blitt satt for å automatisk bli med i for dette nettverket." + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "Hva vil du gjøre nå?" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "I_ngenting, jeg blir med i en kanal senere." + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "_Bli med i denne kanalen:" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Hvis du vet hvilken kanal du ønsker å bli med i, så kan du skrive inn navnet her." + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "Å_pne kanalliste." + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "Å hente kanallisten kan ta et minutt eller to." + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "_Alltid vis dette vinduet etter tilkobling." + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "Dialog med" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Emne for %s er: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "Emne er ikke satt" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "Denne verten har fortsatt %d kanaler eller dialoger assosiert med den. Vil du lukke alle?" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "Avslutt HexChat?" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "Ikke spør neste gang." + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Du er tilkoblet %i IRC-nettverk." + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "Er du sikker på at du vil avslutte?" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "Noen filoverføringer er fremdeles aktive." + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "_Minimer til systemkurven" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "Sett inn egenskap eller fargekode" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>Fet</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>Understrek</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "<i>Kursiv</i>" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "Normal" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "Farge 0-7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "Farge 8-15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "Inn_stillinger" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "_Loggfør til harddisk" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "Last inn tidligere _historikk" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "Fjern _farger" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "S_kjul ankomst- og forlatelses-meldinger" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "_Ekstra varsler" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "Bip ved _meldinger" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "Blink _i systemkurven" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "_Blink oppgavelinjen" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "_Løsne" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "L_ukk" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "Brukergrense må være et nummer!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "Filterfarger" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "Ingen eksterne meldinger" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "Emne-beskyttelse" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "Kun ved invitasjon" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "Moderert" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "Utestengelsesliste" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Nøkkelord" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "Brukergrense" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Oppgi nytt kallenavn:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "Ingen resultater funnet." + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "Søket nådde slutten, eller fant ingen treff." + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "_Framhev alt" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "Framhev alle treff, og understrek nåværende treff." + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "Match små og store bokstaver" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "Utfør et størrelsessensitivt søk." + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "_Regex" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "Behandle søkestrengen som et regulært uttrykk." + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Ukjent vert" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "Ukjent konto" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Ukjent" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Fullt navn:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "Bruker:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "Konto:" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "Land:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "Tjener:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "%u minutter siden" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "Siste melding:" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "Bortemelding:" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "%d kallenavn valgt." + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "Menylinjen er nå skjult. For å vise den igjen kan du trykke Control+F9, eller ved å høyre-klikke i en blank del av hovedområdet for tekst." + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "Åpne lenke i nettleser" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "Kopier valgt lenke" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Bli med i kanal" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "Forlat kanal" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "Hopp kanal" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "_Automatisk bli med i kanal" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "Bli automatisk med i kanal" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "_Automatisk koble til" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "Brukermeny - %s" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "Rediger denne menyen" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "Markeringslinje slått av." + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "Markeringslinje ikke brukt ennå." + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "Markeringslinje ble manuelt tilbakestilt." + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "Markeringslinje nullstilt fordi den overskred rulleminnegrensen." + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "Markeringslinje nullstilt av CLEAR-kommando." + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "Markeringslinjetilstand ukjent." + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "Hent kanalliste" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr " har blitt bygget uten støtte for tillegg." + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "Brukerkommandoer - spesialkoder:\n\n%c = gjeldende kanal\n%e = gjeldende nettverksnavn\n%m = maskininformasjon\n%n = kallenavnet ditt\n%t = tid/dato\n%v = HexChat-versjon\n%2 = ord 2\n%3 = ord 3\n&2 = ord 2 til enden av linjen\n&3 = ord 3 til enden av linjen\n\nf.eks.:\n/cmd john hallo\n\n%2 vil bli «john»\n&2 vil bli «john hallo»." + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "Brukerknapper - spesialkoder:\n\n%a = Alle valgte kallenavn\n%c = gjeldende kanal\n%e = gjeldende nettverksnavn\n%h = valgte kallenavns vertsnavn\n%m = maskininformasjon\n%n = kallenavnet ditt\n%s = valgte kallenavn\n%t = tid/dato\n%u = valgte kallenavns konto" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "Dialogknapper - spesialkoder:\n\n%a = Alle valgte kallenavn\n%c = gjeldende kanal\n%e = gjeldende nettverksnavn\n%h = valgte kallenavns vertsnavn\n%m = maskininformasjon\n%n = kallenavnet ditt\n%s = valgte kallenavn\n%t = tid/dato\n%u = valgte kallenavns konto" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "CTCP-svar - spesialkoder:\n\n%d = data (hele ctcp)\n%e = gjeldende nettverksnavn\n%m = maskininformasjon\n%s = kallenavnet som sendte ctcp-en\n%t = tid/dato\n%2 = ord 2\n%3 = ord 3\n&2 = ord 2 til enden av linjen\n&3 = ord 3 til enden av linjen\n\n" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "URL-behandlere - spesialkoder:\n\n%s = URL-strengen\n\nPlassering av ! foran kommandoen\nindikerer at den skal sendes til et\nshell i steden for HexChat" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "Brukerdefinerte kommandoer - %s" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "Oppsprettsmeny for brukerliste - %s" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "Erstatt - %s" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "Erstatt med" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "URL-håndterere - %s" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "Brukerlisteknapper - %s" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "Dialogknapper - %s" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "CTCP-svar - %s" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "He_xChat" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "Nettverksli_ste" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "_Ny" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "Tjenerfane" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "Kanalfane" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "Tjenervindu" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "Kanalvindu" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "_Last tillegg eller skript" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "A_vslutt" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "_Vis" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "_Menylinje" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "_Emnelinje" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "Br_ukerliste" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "B_rukerlisteknapper" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "M_odus-knapper" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "_Kanalbytter" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "_Faner" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "T_re" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "_Nettverksindikatorer" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Av" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "Graf" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "_Fullskjerm" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "_Tjener" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "Koble _fra" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "Ko_ble til igjen" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "_Bli med i en kanal" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "Kanal_liste" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "M_arkert som borte" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "Br_ukermeny" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "_Innstillinger" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "_Brukervalg" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "Automatisk erstatning" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "CTCP-svar" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "Dialogknapper" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "Tastatursnarveier" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "Teksthendelser" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "URL-håndterere" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "Brukerkommandoer" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "Brukerlisteknapper" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "Oppsprettsbrukerliste" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "_Vindu" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "_Utestengelsesliste" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "Direktesludring" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "Fil_overføringer" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "Venneliste" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "Ignoreringsliste" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "_Tillegg og skript" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "_Rå logg" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "_URL-henter" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "Tilbakestill markeringslinje" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "Flytt til markeringslinje" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "K_opier utvalget" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "Tøm tekst" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "Lagre tekst" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "Søk" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "Søk tekst" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "Søk etter neste" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "Søk etter forrige" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "_Hjelp" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "_Innhold" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "_Om" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "_Legg ved" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Navn" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Sist sett" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "Frakoblet" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Aldri" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "%d minutter siden" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "Én time siden" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "%d timer siden" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "Tilkoblet" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "Skriv inn kallenavnet du vil legge til:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "Varsle meg på følgende nettverk:" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "Komma-separert liste av nettverk aksepteres." + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "Venneliste - %s" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "Åpne dialog" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "Framhevet melding fra: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "Kanalmelding fra: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "Filtilbud fra: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "Invitert til kanal av: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "Merknad fra: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "Privat melding fra: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "Tilkoblet %u nettverk og %u kanaler - %s" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "Gjenopp_rett vindu" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "Sk_jul vindu" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "_Blink på" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "Kanalmelding" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "Privat melding" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "Framhevet melding" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "_Endre status" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "_Borte" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "_Tilbake" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "Framhevet medling fra: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "%u framhevet melding, senest fra: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "Kanalmelding fra: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "%u kanalmeldinger. -%s" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "Privat melding fra: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "%u private meldinger, senest fra: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "Filtilbud fra: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "%u filtilbud, senest fra: %s (%s) - %s" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Versjon" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Beskrivelse" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Last et tillegg eller skript" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "Tillegg og skript - %s" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "_Last..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "Last _ut" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "Last på _nytt" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "Lagre som..." + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "Rå logg (%s) - %s" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "Tøm rå-loggen" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Nytt nettverk" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Virkelig fjerne nettverket «%s» og alle dens verter?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "Brukernavn kan ikke være tomt." + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "Du kan ikke ha et tomt kallenavn." + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "Du må ha to unike kallenavn." + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "Fremgangsmåte for identifikasjon mot tjener. For egendefinerte innloggingsmetoder kan du bruke tilkoblingskommandoer." + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "Rediger %s - %s" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "Tjenere" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "Kanaler man automatisk blir med" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "Tilkoblingskommandoer" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "%n = kallenavn\n%p = passord\n%r = ekte navn\n%u = brukernavn" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "Nøkkel (passord)" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "R_ediger" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "Koble kun til valgt vert" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Ikke prøv neste vert i listen når tilkoblingen feiler." + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "Koble automatisk til dette nettverket" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "Omgå proxy-tjener" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "Bruk SSL for alle vertene på nettverket" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "Akseptér ugyldige SSL-sertifikater" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "Bruk global brukerinformasjon" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "Kalle_navn:" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "Andrevalg:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "Virke_lig navn:" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "Br_ukernavn:" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "Innloggingsmetode:" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Passord:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "Passord som brukes for innlogging. Ved tvil, la være blank." + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "Tegnsett:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "Nettverksliste - %s" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "Informasjon om bruker" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "Tredjevalg:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Nettverk" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "Hopp over nettverkslisten ved oppstart" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "Vis kun favoritter" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "R_ediger..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "_Sorter" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "Sorterer nettverkslisten i alfabetisk rekkefølge. Bruk Shift+↑ og Shift+↓ -tastene for å flytte en rad." + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "_Favoritt" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "Marker som, eller fjern markeringen som favoritt fra nettverket." + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "K_oble til" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "afrikaans" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "albansk" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "amharisk" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "asturisk" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "aserbajdsjansk" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "baskisk" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "hviterussisk" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "bulgarsk" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "Kinesisk (forenklet)" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "Kinesisk (tradisjonell)" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "Tsjekkisk" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "Dansk" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "Nederlandsk" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "Engelsk (Britisk)" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "Engelsk" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Estisk" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "Finsk" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "Fransk" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "Gallisk" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "Tysk" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "Gresk" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "Gujarati" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "Hindi" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "Ungarsk" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "Indonesisk" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "Italiensk" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "Japansk" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "Kanaresisk" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "Kinyarwanda" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "Koreansk" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "Latvisk" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "Litauisk" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "Makedonsk" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Malayisk" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "Malayalam" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "Norsk (bokmål)" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "Norsk (nynorsk)" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "Polsk" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "Portugisisk" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "Portugisisk (brasiliansk)" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "Panjabi" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "Russisk" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "Serbisk" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "Slovakisk" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "Slovensk" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "Spansk" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "Svensk" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Thai" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "Tyrkisk" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "Ukrainsk" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Vietnamesisk" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "Vallonsk" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Generelt" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "Språk:" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "Skrifttype:" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Skrifttype:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "Tekstboks" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "Fargede kallenavn" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "Fargelegg hvert enkelt kallenavn forskjellig" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "Rykk inn kallenavn" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "Høyrejuster kallenavn" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "Vis markeringslinje" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "Sett inn en rød linje etter den sist leste teksten." + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Bakgrunnsbilde:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "Gjennomsiktighet" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "Vindus-dekkevne:" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "Tidsstempel" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "Aktiver tidsstempler" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "Tidsstempelformat:" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "See MSDN-artikkelen på strftime for detaljer." + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "Se manpage for strftime for detaljer." + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "Tittellinje" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "Vis kanal-modi" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "Vis antall brukere" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Å" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "Sist-snakket rekkefølge" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "Inndataboks" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "Bruk skrifttypen og fargene fra tekstboksen" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "Gjengi farger og attributter" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "Vis boks for kallenavn" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "Vis ikon for brukermodus ved kallenavnet" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "Stavekontroll" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "Ordbøker i bruk:" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "Bruk språkkoder (som i «%LOCALAPPDATA%\\enchant\\myspell\\dicts»).\nSkill flere oppføringer med komma." + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "Bruk språkkoder. Separer flere valg med komma." + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "Fullføring av kallenavn" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "Suffiks for fullførte kallenavn:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "Prioriteringsrekkefølge til fullføring:" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "Kallenavnfullføringsmengde:" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "Terskel for å liste kallenavn i stedet for å fullføre" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "kallenavn." + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "Grafisk" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "A-Å, operatører først" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "Å-A, operatører sist" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Å-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "Usortert" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "Venstre (øvre)" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "Venstre (nedre)" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "Høyre (øvre)" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "Høyre (nedre)" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Topp" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Bunn" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Skjult" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "Brukerliste" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "Vis vertsnavn i brukerlisten" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "Bruk skrifttypen og fargene fra tekstboksen" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "Vis ikoner for brukerprivilegier" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "Vis grafiske ikoner i stedet for tekstsymboler i listen over brukere." + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "Fargelegg kallenavn i brukerlisten" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "Gir kallenavnene samme farge som i kanalen." + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "Vis opptelling av antall brukere i kanaler" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "Brukerliste sortert etter:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "Vis brukerlisten ved:" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "Borte-sporing" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "Sporer brukere med borte-status og markerer dem i en annen farge" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "På kanaler mindre enn:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "Handling på dobbelklikk" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "Ekstrafunksjoner" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "Forsinkelsesindikator:" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "Begrensningsmeter:" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Vinduer" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Faner" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "Alltid" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "Kun forespurte faner" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "Automatisk" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "I en egen fane" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "I fanen med fokus" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "Tre" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "Bytte-type:" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "Åpne en ekstra fane for vertsmeldinger" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "Åpne en ny fane når du motar en privat melding" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "Sorter faner etter alfabetisk rekkefølge" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "Vis ikoner i kanaltreet" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "Vis prikket linje i kanaltreet" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "Rull musehjulet for å endre faner" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "Midtklikk for å lukke fane" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "Mindre tekst" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "Fokuser på nye faner:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "Plasser notiser:" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "Vis kanal-bytter ved:" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "Forkort fane-etiketter til:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "bokstaver." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "Faner eller vinduer" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "Åpne kanaler i:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "Åpne dialoger i:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "Åpne verktøy i:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Åpne DCC, ignorering, varsling osv., i faner eller vinduer?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "Meldinger" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "Samtalehistorikk" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "Spør om bekreftelse" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "Spør om nedlastingsmappe" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "Lagre uten bekreftelse" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "Filer og mapper" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "Autoaksepter fil overføringer:" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Last ned filer til:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "Flytt fullførte filer til:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "Lagre kallenavn i filnavn" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "Automatisk åpne DCC-vinduer" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "Sendevindu" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "Mottakelsesvindu" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "Samtalevindu" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "Maksimum filoverføringshastighet (bytes per sekund)" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "En nedlastning:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "Maksimum overførelseshastighet for en overføring" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "En nedlastning:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "Alle opplastingene satt sammen:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "Maksimum overføringshastighet totalt:" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "Alle nedlastingene satt sammen:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "Varslinger" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "Vis merknader på:" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "Sett systemkurvikonet til å blinke ved:" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "Blink oppgavelinjen på:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "Lag et beep ved:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "Spill systemlyden «lynmeldingsvarsling» på de utvalgte hendelser" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "Spill «message-new-instant» fra freedesktop.org lydtema på de utvalgte hendelser" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "Spill et GTK-pip på de utvalgte hendelser" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "Hopp over varsler når merket som borte" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "Ignorér varsling mens vinduet er i fokus" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "Oppførsel for systemkurvikon" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "Aktiver systemkurvikon" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "Minimer til systemkurv" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "Lukk ned til systemkurv" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "Merk borte/tilbake automatisk" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "Automatisk bytt status ved skjuling til systemkurv." + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "Vis kun merknader når skjult eller ikonifisert" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "Framhevede meldinger" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Framhevede meldinger er de hvor kallenavnet ditt er nevnt, men også:" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "Ekstra fremhevningsord:" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "Kallenavn som ikke skal fremheves:" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "Kallenavn som alltid skal fremheves:" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Separer flere ord med komma.\nJokertegn kan brukes." + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "systemkurvikonet til å hoppe ved:" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "Standardmeldinger" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "Quit:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "Forlat kanal:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "Borte:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "Borte" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Vis borte én gang" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "Kun vis identiske borte-meldinger én gang." + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "Automatisk fjern markering som borte" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "Sett deg selv som tilgjengelig før meldinger sendes." + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "Annet" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "Vis MODEs i rå-form" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "WHOIS ved mottakelse av varslingsmelding" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "Sender en /WHOIS når en bruker som ligger i varslingslisten din kobler seg på." + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "Skjul meldinger om brukere som blir med og forlater kanalen" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "Skjul join/part-meldinger som standard." + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "Skjul kallenavnendringsmeldinger" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "*!*@*.vert" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "*!*@domene" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "*!*bruker@*.vert" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "*!*bruker@domene" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "Autokopier oppførsel" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "Kopier valgt tekst automatisk" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "Kopier valgt tekst til utklippstavlen når venstre museknappen slippes. Ellers vil Ctrl+Shift+C kopiere den markerte teksten til utklippstavlen." + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "Inkluder tidsstempel automatisk" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "Inkluder tidsstempler automatisk i tekst som blir kopiert. Ellers, inkluder tidsstempler hvis Shift-tasten er nede." + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "Inkluder farge informasjon automatisk" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "Inkluder farge informasjon automatisk i tekst som blir kopiert. Ellers, inkluder farge informasjon hvis Ctrl-tasten er nede." + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "Ekte navn:" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "Alternative fonter:" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "Skill flere oppføringer med komma uten mellomrom før eller etter." + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "Viser listene i kompakt modus" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "Bruk mindre mellomrom mellom brukerlisten og radene for kanaltreet." + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "Bruk servertid hvis det støttes" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "Vis tidsstempler hentet fra serveren hvis den støtter «time-server»-utvidelsen." + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "Automatisk gjenopprett tilkoblinger til tjenere ved frakobling" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "Forsinkelse for auto-tilkobling:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "Auto-deltagelsesforsinkelse" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "Utestengelsestype:" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "Forsøk å bruke denne banmasken ved utestengelse eller demping. (krever irc_who_join)" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Logging" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "Vis samtalehistorikk fra forrige sesjon" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "Samtalehistorikk:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "Slå på loggføring av samtaler til disk" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "Filnavn for logg:" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Server %c=Kanal %n=Nettverk." + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "Bruk tidsstempling i logger" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "Format for tidsstempling i logger:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URL-er" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "Slå på loggføring av URL-er til disk" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "Aktiver URL-logger" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "Maksimalt antall URL-er for logging:" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(Slått av)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "SOCKS4" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "SOCKS5" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "Automatisk" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "Alle tilkoblinger" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "Kun IRC-tjener" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "Kun DCC" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "Din adresse" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "Binde til:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "Nyttig kun for datamaskiner med flere nettverksadresser." + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "Filoverføringer" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "Hent adressen min fra IRC-verten" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "Spør IRC-tjeneren for din ekte adresse. Bruk dette hvis du har en 192.168.*.* adresse!" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "IP-adresse for DCC:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "Send påstått lokasjon ved tilbyding av filer." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "Første DCC-lytteport:" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "Siste DCC-lytteport:" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "!La det stå null for portene for å bruke hele spekteret." + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "Proxy-tjener" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "Vertsnavn:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Port:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Type:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "Bruk proxy for:" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "Proxy-autentisering" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "Bruk autentisering (Kun HTTP eller SOCKS5)" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "Brukernavn:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "Identd-tjener" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "Aktiv" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "Tjener vil svare med nettverkets brukernavn" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "Du må ha rettigheter til å lytte på denne porten. Hvis det ikke er 113 (0 er forhåndsvalgt til dette) så må du sette opp port-videresending." + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "Velg ett bilde" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "Velg nedlastningsmappe" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Velg skrift" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Bla gjennom..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "Åpne datamappe" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Velg farge" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "Tekstfarger" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "mIRC-farger:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "Lokale farger:" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Forgrunn:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Bakgrunn:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "Markert tekst" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "Farger for grensesnitt" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "Nye data:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "Markeringslinje:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "Ny melding:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "Fraværende bruker:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "Framhev:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "Stavekontroll:" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "Fargefjerning" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Hendelse" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "Lydfil" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "Velg en lydfil" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "Lydfil:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "_Bla gjennom..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "S_pill av" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Grensesnitt" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "Utseende" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Inndataboks" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Brukerliste" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "Kanalbytter" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Farger" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Sludring" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "Lyder" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "Avansert" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Nettverksoppsett" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Filoverføringer" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "Identd" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Kategorier" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "Du kan ikke plassere tre-navigasjonen på toppen eller bunnen!\nBytt til <b>Faner</B>-oppsettet fra <b>Vis</b>-menyen først." + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "Alternativet for ekte navn kan ikke være tomt. Faller derfor tilbake til «realname»." + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Noen innstillinger som krever en omstart for å få full effekt, ble endret." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*ADVARSEL*\nAuto akseptere DCC til hjemmekatalogen\nkan være farlig og kan utnyttes. Eks:\nNoen kunne sende deg en .bash_profile" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "Brukervalg - %s" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "<i>(ingen forslag)</i>" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "Mer..." + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "Legg «%s» til i ordboken" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "Ignorer alle" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "Staveforslag" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "enchant-feil for språk: %s" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "Det oppsto en feil ved tolking av strengen" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Dette signalet sendes bare %d argumenter, $%d er ugyldig" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "Skriv ut tekstfil" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ tall" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Rediger hendelser" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "Last fra..." + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Test alle" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "OK" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "URL-henter - %s" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Tøm listen" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Kopier valgt URL" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Kopier" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Lagre listen til en fil" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d operatører, %d totalt" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "Åpne en URL med irc://vert:port/kanal" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "Sysinfo: Klarte ikke få informasjon. Enten ikke støtter eller feil." + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "Sysinfo: Ingen informasjon ved ved navnet\n" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "Sysinfo: %s satt til: %d\n\n\n" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "Sysinfo: Gyldige verdier er: announce og hide_* for hver bit informasjon, f.eks. hide_os. Uten en verdi vil den vise gjeldende (eller forhåndsvalgt) oppsett.\n" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "Sysinfo: Ugyldig variabelnavn\n" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "Tillegg %s lastet\n" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "Tillegg %s tatt vekk\n" diff --git a/hexchat/po/nl.po b/hexchat/po/nl.po new file mode 100644 index 0000000..31b73fb --- /dev/null +++ b/hexchat/po/nl.po @@ -0,0 +1,6259 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Arjan Scherpenise <acscherp@wins.uva.nl>, 2000 +# Bart Coppens <coppensbart@pi.be>, 2002 +# ooze <evankorlaar@gmail.com>, 2012 +# Luk Claes <luk.claes@ugent.be>, 2005 +# ooze <evankorlaar@gmail.com>, 2012 +# Taco Witte <T.C.Witte@phys.uu.nl>, 2003 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-03 20:10+0000\n" +"Last-Translator: TingPing <tingping@tingping.se>\n" +"Language-Team: Dutch (http://www.transifex.com/hexchat/hexchat/language/nl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: nl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Ik ben bezig" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Ik ga weg" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Netwerk" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<geen>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Kanaal" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Bezig met wachten" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Actief" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Mislukt" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Klaar" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Verbinden" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Afgebroken" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "Kan %s niet benaderen\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Fout" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s bied je \"%s\" aan. Wil je dit accepteren?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "Geen DCC's actief\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Ops geven" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Ops nemen" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "Stem geven" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "Stem nemen" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Wegschoppen/Verbannen" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Wegschoppen" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "Verbannen" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "Wegschoppen/Verbannen" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Kanaal verlaten" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Kanaal openen..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "Geef het te openen kanaal:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Server koppelingen" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Server pingen" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Versie verbergen" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Op" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "doei" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Geef reden voor wegschoppen %s:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "Dialoog" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "Whois" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Verzenden" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Chatten" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Wissen" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "" + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* IRC uitvoeren als root is dom! U moet een\n gebruikersaccount aanmaken en daarmee inloggen.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "JA " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "NEE " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "U wordt overspoeld met CTCP-verkeer van %s, nu wordt %s genegeerd\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s online\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s offline\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Niet in een kanaal. Probeer /join #<kanaal>\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Niet verbonden. Probeer /server <host> [<poort>]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "Server %s bestaat al op het netwerk %s.\n" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "Server %s toegevoegd bij netwerk %s.\n" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Al reeds weg gemarkeerd: %s.\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "Al reeds terug gemarkeerd.\n" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "Ik heb /bin/sh nodig om te werken!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "Beschikbare opdrachten: " + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "Door de gebruiker gedefinieerde opdrachten: " + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "Plugin gedefinieerde opdrachten: " + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Tik /HELP <opdracht> voor meer informatie of /HELP -l" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Onbekend argument '%s' genegeerd." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "" + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "Plugin niet gevonden.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "Deze plugin weigert te ontladen.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <naam> <actie>, voegt een knop toe onder de gebruikerslijst" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <opdr>, stuurt een opdracht naar alle kanalen waar in zit" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <opdr>, stuurt een opdracht naar alle servers waar je op zit" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <masker> [<verbansoort>], verbant iedereen die voldoet aan het masker uit het huidige kanaal. Als ze al in het huidige kanaal zitten worden ze niet weggeschopt (kanaal-operator vereist)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "" + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <code|wildcard>, zoek een landcode, bijvoorbeeld be = België en nl = Nederland" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <persoon> <bericht>, een CTCP bericht naar de persoon sturen. Veel voorkomende berichten zijn VERSION en USERINFO" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <persoon> - een aangeboden bestand accepteren\nDCC SEND [-maxcps=#] <persoon> [bestand] - een bestand naar iemand sturen\nDCC PSEND [-maxcps=#] <persoon> [bestand] - een bestand sturen gebruik makend van de passieve modus\nDCC LIST - DCC lijst weergeven\nDCC CHAT <persoon> - iemand DCC CHAT aanbieden\nDCC PCHAT <persoon> - DCC CHAT aanbieden gebruikmakend van de passieve modus\nDCC CLOSE <soort> <persoon> <bestand> voorbeeld:\n /dcc close send janjanssen bestand.tar.gz" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <persoon>, de kanaal-halfoperator status van de persoon in het huidige kanaal verwijderen (kanaal-operator vereist)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <naam>, een knop van de gebruikerslijst wissen" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <persoon>, kanaal-operatorstatus van de persoon in het huidige kanaal verwijderen (kanaal-operator vereist)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <persoon>, de stemstatus van de persoon in het huidige kanaal verwijderen (kanaal-operator vereist)" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, de verbinding met de server verbreken" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <tekst>, lokaal een tekst afdrukken" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <opdracht>, een opdracht uitvoeren. Als de -o vlag meegegeven is, wordt de uitvoer naar het huidige kanaal gestuurd, anders naar het huidige tekstvenster" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, het proces SIGCONT sturen" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9], een lopende exec in de huidige sessie stoppen. Als -9 is meegegeven wordt het proces geSIGKILLd" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, het proces SIGSTOP sturen" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, gegevens naar stdin sturen van het proces" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, de verzendrij van de huidige server doerspoelen" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <host> [<poort>], verbinding maken door een proxy, de poort is standaard 23" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <persoon>, geeft kanaal-halfoperator status aan de persoon (kanaal-operator vereist)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <wachtwoord>, identificeert u bij nickserv" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <masker> <soorten..> <opties..>\n masker - host masker om te negeren, bijv.: *!*@*.aol.com\n soorten - soorten gegevens om te negeren, een of meer van:\n PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n opties - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <persoon> [<kanaal>], iemand uitnodigen een kanaal te openen, standaard het huidige kanaal (kanaal-operator vereist)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <kanaal>, het kanaal binnengaan" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, een nieuwe controle op achterstand forceren" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <bestand>, laadt een plugin of script" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, massaal van alle kanaal-halfops op-status verwijderen in huidige kanaal (kanaal-operator vereist)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, massaal van alle kanaal-ops op-status verwijderen in huidige kanaal (kanaal-operator vereist)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <actie>, stuurt de actie naar het huidige kanaal (acties worden geschreven in de 3e persoon, bijv: /me springt)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, massaal iedereen behalve jezelf uit huidige kanaal schoppen (kanaal-operator vereist)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, massaal alle gebruikers in huidige kanaal op-status geven (kanaal-operator vereist)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <persoon> <bericht>, een CTCP-melding sturen" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <hostnaam> [<poort>]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <bijnaam>, je bijnaam instellen" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <persoon>, de kanaal-operator status aan de persoon geven (kanaal-operator vereist)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<kanaal>] [<reden>], het kanaal verlaten, standaard het huidige kanaal." + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <persoon | kanaal>, een persoon of kanaal CTCP pingen" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "" + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<reden>], verbinding met de huidige server verbreken" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <tekst>, tekst in ruw formaat naar de server sturen" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<host>] [<poort>] [<wachtwoord>], kan net als /RECONNECT gebruikt worden om opnieuw te verbinden met de huidige server, of met /RECONNECT ALL om met alle open servers een nieuwe verbinding te maken" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<host>] [<poort>] [<wachtwoord>], kan net als /RECONNECT gebruikt worden om opnieuw te verbinden met de huidige server, of met /RECONNECT ALL om met alle open servers een nieuwe verbinding te maken" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <tekst>, de tekst naar het object in het huidige venster sturen" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <bijnaam> [<bestand>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <host> <poort> <kanaal>, verbinding maken en een kanaal openen" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <host> <poort> <kanaal>, verbinding maken en een kanaal openen" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <host> [<poort>] [<paswoord>], verbinding maken met een server, de standaard poort is 6667 voor gewone verbindingen" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<topic>], het onderwerp opeven als topic gespecifiëerd is, anders het huidige onderwerp laten zien" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <masker> [<masker>...], de opgegeven maskers weer toelaten" + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <mask> [QUIET]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <naam>, een plugin of script laden" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "" + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url> opent een URL in uw browser" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "USELECT [-a] [-s] <bijnaam1> <bijnaam2> enz, laat bijnamen oplichten in gebruikerslijst van het kanaal" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <persoon>, geef de stemstatus aan iemand (kanaal operator vereist)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <bericht>, het bericht naar alle kanalen sturen" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <bericht>, een bericht naar alle kanaaloperatoren op het huidige kanaal" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "Gebruik: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nGeen help beschikbaar over die opdracht.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "Nietbestaande opdracht.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "Foute argumenten voor gebruikersgedefiniëerde opdracht.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "Teveel recursieve gebruikersgedefiniëerde opdrachten, afbrekende." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Weet u zeker dat deze server en poort SSL ondersteunen?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "Kan hostnaam %s niet oplossen\nControleer uw IP instellingen!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "Proxy doorkruising mislukt.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Overschakelen naar volgende server in %s...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "Waarschuwing: tekenset \"%s\" is onbekend. Er zal geen conversie worden toegepast voor netwerk %s." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "" + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "" + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%UKanaal Gebruikers Onderwerp" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "" + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "" + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "" + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "" + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "" + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "" + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "" + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "" + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "" + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "" + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "" + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "" + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tWaarschuwingslijst is leeg." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "" + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "" + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "" + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "" + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "Geladen log van" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** LOGGEN GESTOPT OM %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** LOGGEN GESTART OP %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "* Kan log bestand(en) niet schrijven. Controleer de\npermissies op %s." + +#: src/common/text.c:960 +msgid "Left message" +msgstr "Linkerbericht" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "Rechterbericht" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "IP-Adres" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Gebruikersnaam" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "De bijnaam van de persoon die binnenkomt" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "Het kanaal dat geopend wordt" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "De host van de persoon" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Bijnaam" + +#: src/common/text.c:980 +msgid "The action" +msgstr "De actie" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "Moduskarakter" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "Geïdentificeerde tekst" + +#: src/common/text.c:987 +msgid "The text" +msgstr "De tekst" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "Het bericht" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Servernaam" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Oude bijnaam" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Nieuwe bijnaam" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "Bijnaam van de persoon die het onderwerp veranderde" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Onderwerp" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "Bijnaam van de kicker" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "De persoon die gekickt wordt" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "Het kanaal" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "De reden" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "De bijnaam van de persoon die weggaat" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "De tijd" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "De maker" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Bijnaam" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Reden" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Host" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "Van wie het is" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "De tijd in x.x-formaat" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "Het kanaal waar het heen gaat" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "Het geluid" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "De bijnaam van de persoon" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "De CTCP-gebeurtenis" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "De bijnaam van de persoon die de sleutel instelde" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "De sleutel" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "De bijnaam van de persoon die de limiet instelde" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "De limiet" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "De bijnaam van de persoon die de op heeft uitgevoerd" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "De bijnaam van de persoon die is ge'opt" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "De bijnaam van de persoon die is ge'halfopt" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "De bijnaam van de persoon die de halfop heeft uitgevoerd" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "De bijnaam van de persoon die de voice heeft uitgevoerd" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "De bijnaam van de persoon die is ge'voicet" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "De bijnaam van de persoon die de ban heeft uitgevoerd" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "Het ban-masker" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "De bijnaam die de sleutel heeft verwijderd" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "De bijnaam die de limiet heeft verwijderd" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "De bijnaam van de persoon die is ge'deopt" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "De bijnaam van de persoon die is ge'dehalfopt" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "De bijnaam van de persoon die is ge'devoicet" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "De bijnaam van de persoon die de exempt heeft uitgevoerd" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "Het exempt-masker" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "De bijnaam van de persoon die de exempt heeft verwijderd" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "De bijnaam van de persoon die de uitnodiging heeft gedaan" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "Het uitnodigingsmasker" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "De bijnaam van de persoon die de uitnodiging heeft verwijderd" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "De bijnaam van de persoon die de modus heeft ingesteld" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "Het teken van de modus (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "De letter van de modus" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "Het kanaal waarop het wordt ingesteld" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Volledige naam" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Kanaal deelnemerschap/\"is een IRC operator\"" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Serverinformatie" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Inactieve tijd" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Aanmeldtijd" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Reden van afwezigheid:" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Bericht" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Account" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "Echte gebruiker@host" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "Echte IP" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Kanaalsnaam" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Tekst" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Bijnaam van de persoon die je uitnodigde" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Gebruikers" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "Gebruikte bijnaam" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Bijnaam die geprobeerd wordt" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Poort" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "Modistring" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "DCC-type" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Bestandsnaam" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Doelbestandsnaam" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "Padnaam" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Positie" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Grootte" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "DCC Tekst" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "Aantal meldingen" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Oude bestandsnaam" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Nieuwe bestandsnaam" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Ontvanger" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Hostmasker" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Hostnaam" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "Het pakket" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "Seconden" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "Bijnaam van de persoon die uitgenodigd is" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Banmasker" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "Degene die de ban heeft ingesteld" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Bantijd" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "Kan geluidsbestand niet lezen:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "Host op afstand heeft socket gesloten" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "Verbinding geweigerd" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "Geen route naar host" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Verbinding kreeg een timeout" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "Kan dat adres niet toewijzen" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "Verbinding verbroken door peer" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "Ascension" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Verenigde Arabische Emiraten" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Afganistan" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Antigua en Barbuda" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Albanië" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Armenië" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Nederlandse Antillen" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Antarctica" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Argentinië" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "Omgekeerde DNS" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Amerikaans Samoa" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Oostenrijk" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Australië" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "Alandseilanden" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Azerbeidjan" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Bosnië en Herzegovina" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Bangladesh" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "België" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Bulgarije" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Bahrein" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "Bedrijven" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Brunei Darussalam" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Bolivië" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Brazilië" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Bahama's" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Bhutan" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Bouvet-eiland" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Wit-Rusland" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Canada" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "Catalaans" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Cocoseilanden" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "Democratische Republiek Congo" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "Centraal-Afrikaanse Republiek" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Congo" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "Zwitserland" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "Ivoorkust" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Cookeilanden" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Chili" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Kameroen" + +#: src/common/util.c:738 +msgid "China" +msgstr "China" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Colombia" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Internic Commercieel" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "Servië en Montenegro" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Cuba" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Kaapverdische Eilanden" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Kerstmis-eiland" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Cyprus" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "Tsjechië" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "Oost-Duitsland" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Duitsland" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Djibouti" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Denemarken" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Dominica" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "Dominicaanse Republiek" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Algerije" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Ecuador" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Educatieve instelling" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Estland" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Egypte" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Westelijke Sahara" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "Spanje" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Ethiopië" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "Europese Unie" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Finland" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Fiji" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Falkland eilanden" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Micronesië" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Faroër Eilanden" + +#: src/common/util.c:770 +msgid "France" +msgstr "Frankrijk" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "England" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Georgië" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Frans Guyana" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "Briste kanaaleilanden" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Ghana" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Groenland" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Overheid" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Guadeloupe" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Equatoriaal Guinee" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Griekenland" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Z.-Georgië en de Z. Sandwich-eilanden" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Guinee-Bissau" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Guyana" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Heard en McDonald eilanden" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Kroatië" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Haïti" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Hongarije" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Indonesië" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Ierland" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Israel" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "Eiland Man" + +#: src/common/util.c:801 +msgid "India" +msgstr "India" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "Informatie" + +#: src/common/util.c:803 +msgid "International" +msgstr "Internationaal" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Brits-Indische Oceaan Territorium" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Irak" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "Iran" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "IJsland" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Italië" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Jamaica" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Jordanië" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Japan" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Kenia" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Kirgizië" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Cambodja" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Komoren" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "St.-Kitts en Nevis" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Noord-Korea" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Zuid-Korea" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Koeweit" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Kaaimaneilanden" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Kazachstan" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Libanon" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Santa Lucia" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Liberia" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Litouwen" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Luxemburg" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Letland" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Libië" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Marokko" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Monaco" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Moldavië" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "Montenegro" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "Verenigde Staten Medisch" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Madagascar" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Marshall-eilanden" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Militair" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Macedonië" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Mongolië" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Macaõ" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "Mobiele apparaten" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Noordelijke Mariana-eilanden" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Martinique" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Mauritanië" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Mauritius" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "Musea" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Malediven" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "Mexico" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Maleisië" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Mozambique" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Namibië" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Nieuw Caledonië" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Internic Netwerk" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Norfolk-eiland" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Nigeria" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Nederland" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Noorwegen" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "Nieuw-Zeeland" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "Internic Non-profit organisatie" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Frans-Polinesië" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Papoea Nieuw-Guinee" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Filipijnen" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Polen" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "St.-Pierre en Miquelon" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Puerto Rico" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "Beroepen" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "Bezette Palestijnse Gebieden" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Portugal" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Paraguay" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Qatar" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Reunion" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Roemenië" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "Oude school ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "Servië" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Rusland" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Rwanda" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Saoedi-Arabië" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Solomon-eilanden" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Seychellen" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Soedan" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Zweden" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Singapore" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "St.-Helena" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Slovenië" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard en Jan Mayen eilanden" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "Slowakije" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Somalië" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Suriname" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "Zuid-Soedan" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "Sao Tome en Principe" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Vroegere USSR" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Syrië" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Swaziland" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Turkse en Caicos-eilanden" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Tsjaad" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "Franse Zuidelijke Territoriën" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Thailand" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Tadjikistan" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Oost-Timor" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Tunesië" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Turkije" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "Reizen en Toerisme" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Trinidad en Tobago" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Tanzanië" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Oekraïne" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Oeganda" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Verenigd Koninkrijk" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "Verenigde Staten van Amerika" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Uruguay" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Oezbekistan" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Vaticaanstad" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "Sint-Vincent en de Grenadines" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "Britse Maagdeneilanden" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "VS Maagdeneilanden" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "Wallis and Futuna-eilanden" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Jemen" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Joegoslavië" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Zuid-Afrika" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Zambia" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "Kon niet connecteren op sessie-bus" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "Mislukt om Opdracht te voltooien" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "plugin voor toegang op afstand gebruikmakend van DBUS" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Faalde bij het ophalen van %s: %s\n" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Overzicht tekens" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "Verbannen" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Uitnodigen" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "Niet verbonden." + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "Het is nodig om enkele verbanningen selecteren." + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Masker" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "Van" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Datum" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "U kunt het Ban List venster enkel openen wanneer u zich in een kanaaltab bevindt." + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "verbanlijst (%s) - %s" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Verwijderen" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Knippen" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Verversen" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "" + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Kies een bestandsnaam" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "Kanaallijst (%s) - %s" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Kanaalnaam" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Zoeken:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Bestand versturen naar %s" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "Dat bestand is niet pauzeerbaar." + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "Kan geen toegang krijgen tot bestand: %s\n%s.\nPauzeren is niet mogelijk." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "Bestand in downloadmap is groter dan aangeboden bestand. Pauzeren is niet mogelijk." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "Kan hetzelfde bestand van twee personen niet pauzeren." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Status" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Bestand" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Beide" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "Uploads" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "Downloads" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "Details" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "Bestand:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "Adres:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Afbreken" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Accepteren" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Doorgaan" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "Open Map..." + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "DCC Chat lijst - %s" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Recv" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Verzonden" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "Starttijd" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Verwijder" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Annuleren" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Bewaar" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "Niet automatisch herverbinden met servers" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "Gebruik een andere configmap" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "Geen plugins auto-laden" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "Toon gebruikersconfiguratiemap" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "Opdracht uitvoeren:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "Versie-informatie weergeven" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "Openen lettertype mislukt:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "De zoekbuffer is leeg.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d bytes" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Netwerk zendwachtrij: %d bytes" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "De Invoegen in buffer opdracht zal de inhoud van Data 1 invoegen in de ingang waar de toetsencombinatie was ingedrukt op de huidige aanwijzerpositie" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "De Buffer instellen opdracht stelt de ingang waar de toetsencombinatie is ingedrukt in op de inhoud van Data 1" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "De Laatste opdracht opdracht stelt de ingang in op de laatst ingevoerde opdracht - hetzelfde als pijltje omhoog in een shell" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "De Volgende opdracht opdracht stelt de ingang in op de volgend ingevoerde opdracht - hetzelfde als pijltje omlaag in een shell" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "Deze opdracht wijzigt de tekst in de ingang zodat een incomplete bijnaam of opdracht wordt voltooid. Als Data 1 is ingesteld, dan selecteert tweemaal tab indrukken de laatste bijnaam, niet de volgende" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "Deze opdracht schuift omhoog en omlaag in de lijst met bijnamen. Als Data 1 ergens op is ingesteld, wordt er omhoog geschoven, anders omlaag." + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "Deze opdracht vergelijkt het laatst ingevoerde woord ingevoerd in de ingang, met de vervangingslijst, en vervangt als er een overeenkomst is" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "Deze opdracht verplaatst het voorste tabblad een stap naar links" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "Deze opdracht verplaatst het voorste tabblad een stap naar rechts" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "Deze opdracht verplaatst de huidige tabblad-familie naar links" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "Deze opdracht verplaatst de huidige tabblad-familie naar rechts" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "Invoerregel naar geschiedenis duwen maar niet naar server verzenden" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "Er is een fout opgetreden bij het laden van de configuratie van de toetsenbordkoppelingen" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "Sneltoetsen - %s" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "Kan niet schrijven naar dat bestand." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "Kan dat bestand niet lezen." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "Dat masker bestaat al." + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Prive" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Melding" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "Niet langer negeren" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "Geef het te negeren masker:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "Negeerlijst - %s" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Negeer stats:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Kanaal:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privé:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Melding:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Uitnodigen:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "Voeg toe..." + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "Naam van kanaal is te kort, probeer opnieuw." + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "verbinding vervolledigd - %s" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "Verbinding naar %s vervolledigd." + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "Wat wilt u vervolgens doen?" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "_Niets, ik zal later een kanaal vervoegen." + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "Kanaal vervoegen (_J):" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Als u de naam van het kanaal dat u wilt vervoegen kent, geef het dan hier op." + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "" + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "_Altijd deze dialoog tonen na het verbinden." + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "Dialoog met" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Onderwerp van %s is: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "Er is geen onderwerp ingesteld" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "Er zijn nog steeds %d kanalen of dialogen met deze server geassocieerd. Wilt u ze allemaal sluiten?" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "HexChat afsluiten ?" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "Niet meer vragen volgende keer." + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "" + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "Weet u zeker dat u wil afsluiten ?" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "Sommige bestands overdrachten zijn nog actief." + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "Attribuut- of kleurcode invoegen" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>Vet</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>Onderstreept</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "Normaal" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "Kleuren 0-7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "Kleuren 8-15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "Sluiten (_C)" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "Gebruikersgrens moet een getal zijn!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "Geen berichten van buiten" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "Onderwerp bescherming" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "Alleen-uitnodigen" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "Gemodereerd" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "Banlijst" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Sleutelwoord" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "Gebruikerslimiet" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Nieuwe bijnaam invullen" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "" + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "" + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "" + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Host onbekend" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Onbekend" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Echte naam:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "Gebruiker:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "Land:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "Server:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "%u minuten geleden" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "Laatste bericht:" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "Afwezigheidsboodschap:" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "%d namen geselecteerd." + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "Open Link in Browser" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "Geselecteerde URL kopiëren" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Kanaal binnengaan" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "Kanaal verlaten" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "Kanaal ronddraaien" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "Gebruikersmenu - %s" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "Door gebruiker gedefinieerde opdrachten - %s" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "Vervangen - %s" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "Vervang met" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "URL Programma's - %s" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "Gebruikerslijst Knoppen - %s" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "Dialoogknoppen - %s" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "CTCP Antwoorden - %s" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "_Nieuw" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "Afsluiten (_Q)" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "Beeld (_V)" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "M_odus knoppen" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "_Tabs" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "Boom (_r)" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "_Netwerkinstellingen" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Offline" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "Grafiek" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "_Server" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "Verbin_ding verbreken" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "Opnieuw ve_rbinden" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "Gebr_uikersmenu" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "Inst_ellingen" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "Voorkeuren (_P)" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "Venster (_W)" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "Markeringslijn opnieuw instellen" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "Tekst wissen (_l)" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "Zoeken" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "Volgende zoeken" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "Vorige zoeken" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "_Hulp" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "Inhoud (_C)" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "Info (_A)" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Naam" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Laatst gezien" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "Offline" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Nooit" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "Online" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "Geef bijnaam om toe te voegen:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "Vrienden Lijst - %s" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "Dialoogvenster openen" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "Kanaal Bericht" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Versie" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Omschrijving" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Kies een Plugin of Script om te laden" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "Plugins en scripts - %s" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "_Laden..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "Opslaan Als..." + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Nieuw Netwerk" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Zeker het netwerk \"%s\" en al zijn servers verwijderen?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "%s bewerken - %s" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "B_ewerken" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "Verbind enkel met geselecteerde server" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Niet alle servers afgaan wanneer verbinden mislukt." + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "SSL gebruiken voor alle servers op dit netwerk" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "Algemene gebruikersinfo gebruiken" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "Bij_naam:" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "Tweede keuze:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "Echte naam (_l):" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "Gebr_uikersnaam:" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Wachtwoord:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "Tekenset:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "Netwerklijst - %s" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "Gebruikersinformatie" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "Derde keuze:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Netwerken" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "Netwerklijst overslaan bij opstarten" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "B_ewerken..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "_Sorteren" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "Verbinden (_o)" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "Afrikaans" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Albanees" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "Amhaars" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Azerbeidjan" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "Baskisch" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Wit-Russisch" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Bulgaars" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "Chinees (vereenvoudigd)" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "Chinees (traditioneel)" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "Tsjechisch" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "Deens" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "Nederlands" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "Engels" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Estisch" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "Fins" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "Frans" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "Galicisch" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "Duits" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "Grieks" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "India" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "Hongaars" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "Indonesisch" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "Italiaans" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "Japans" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "Koreaans" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "Lets" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "Litouws" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "Macedonisch" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Maleis" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "Pools" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "Portugees" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "Portugees (Braziliaans)" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "Russisch" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "Servisch" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "Slowaaks" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "Sloveens" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "Spaans" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "Zweeds" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Thais" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "Oekraïens" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Vietnamees" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "Waals" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Algemeen" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "Taal:" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Lettertype:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "Gekleurde bijnamen" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "Elke persoon op IRC een andere kleur geven" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "Bijnamen inspringen" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "Bijnamen rechts uitlijnen" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "Markeringslijn weergeven" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "Rode lijn invoegen na laatste gelezen tekst." + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Achtergrond Afbeelding:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "Instellingen transparantheid" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "" + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "" + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "Titelbalk" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "Toon kanaal modes" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "Toon aantal gebruikers" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "spelling checken" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "Woordenboeken te gebruiken:" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "Bijnaam-afmaken" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "Nicknaam-aanvullen achtervoegsel:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "" + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "Grafisch" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "Ongesorteerd" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Bovenkant" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Onderkant" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Verborgen" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "Gebruikers Lijst" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "Hostnamen in gebruikerslijst weergeven" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "Tekstvak lettertype en kleuren gebruiken" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "Gebruik grafische pictogrammen in plaats van tekstsymbolen in de gebruikerslijst." + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "Toon aantal gebruikers in kanalen" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "Gebruikerslijst gesorteerd op:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "Bij kanalen kleiner dan:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "Activeren met dubbel-klikken" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Vensters" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Tabs" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "Altijd" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "Alleen gevraagde tabbladen" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "Extra tabblad openen voor serverberichten" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "Tabbladen alfabetisch ordenen" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "Kleinere tekst" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "Nieuwe tabbladen focusseren:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "Tabbladlabels verkorten tot:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "letters." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "Tabbladen of Vensters" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "Open kanalen in:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "Open dialoog vensters in:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "Gereedschappen openen in:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "DCC, Negeren, berichten openen in tabbladen of vensters?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "Berichten" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "Vraag om bevestiging" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "Vragen om de download map" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "Opslaan zonder interactie" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "Bestanden en mappen" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "Auto accepteren bestandsaanbiedingen:" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Gedownloade bestanden opslaan in:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "Volledig gedownloade bestanden verplaatsen naar:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "Bijnaam opslaan in bestandsnamen" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "DCC-vensters auto-openen" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "Verzendvenster" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "Ontvangstvenster" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "Chatvenster" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "Eén upload:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "Maximumsnelheid voor één overdracht" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "Eén download:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "Alle uploads samen:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "Maximumsnelheid voor alle bestanden" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "Alle downloads samen:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "Waarschuwingen" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "" + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "Standaardberichten" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "Afsluiten:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "Kanaal verlaten:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "Weg:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "Weg" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Laat 'away' slechts een keer" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "Automatisch afwezig de-markeren" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "" + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "MODEs weergeven in ruwe vorm" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "Binnengaan/verlaten berichten verbergen" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "Automatisch geselecteerde tekst kopiëren" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "Alternatieve lettertypen:" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "Vertraging bij auto-herverbinden:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Loggen" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "Terugschuif regels:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "Logbestandsnaam:" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Server %c=Kanaal %n=Netwerk." + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "Tijdsstempels in logs invoegen" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "Log tijdsstempel formaat:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URL 's" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(Uitgezet)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "Uw adres" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "Verbinden met:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "Alleen bruikbaar voor computers met meerdere adressen." + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "Mijn adres van de IRC server halen" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "De IRC-server om uw echte adres vragen. Gebruik dit als u een 192.168.*.* adres heeft!" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "DCC IP Adres:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "Doe alsof u op dit adres bent bij het aanbieden van bestanden." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "!Poorten op nul laten voor volledig bereik." + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "Proxy-server" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "Hostnaam:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Poort:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Soort" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "Een Proxy Server gebruiken voor:" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "Proxy-authenticatie" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "Gebruikersnaam:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "Selecteer een afbeeldingsbestand" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "Kies downloadmap" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Kies een Lettertype" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Bladeren..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Kies een kleur" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "Tekstkleuren" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "mIRC kleuren:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "Lokale kleuren:" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Voorgrond:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Achtergrond:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "Geselecteerde tekst" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "Interfacekleuren" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "Nieuwe gegevens:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "Markeringslijn:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "Nieuw bericht:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "Gebruiker weg:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "Oplichting:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "Spellingcontrole:" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Gebeurtenis" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "Geluidsbestand" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "Kies een geluidsnaam" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "Geluidsbestand:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "_Bladeren..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "Afs_pelen" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Uiterlijk" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Invoervak" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Gebruikerslijst" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Kleuren" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Chatten" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "Uitgebreid" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Netwerkinstellingen" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Bestandsoverdrachten" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Categorieën" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "" + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Sommige instellingen die zijn veranderd worden pas actief na het opnieuw starten." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*WAARSCHUWING*\nAuto accepteren van DCC naar uw persoonlijke\nmap is gevaarlijk en er kan misbruik van worden\ngemaakt.\nIemand kan u bijvoorbeeld een .bash_profile\nbestand opsturen." + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "Voorkeuren - %s" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "Meer..." + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "Spellingsuggesties" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "Er is een fout opgetreden bij het parsen van de string" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Dit signaal is slechts %d argumenten gegeven, $%d is onjuist" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "Tekstbestand afdrukken" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ Getal" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Gebeurtenissen bewerken" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "Laden vanaf..." + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Allemaal Testen" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "URL Grijper - %s" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Lijst wissen" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Geselecteerde URL kopiëren" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Kopiëren" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Lijst opslaan naar een bestand" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d ops, %d totaal" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "Open een irc://server:poort/kanaal URL" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "" diff --git a/hexchat/po/no.po b/hexchat/po/no.po new file mode 100644 index 0000000..79b0d81 --- /dev/null +++ b/hexchat/po/no.po @@ -0,0 +1,6254 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Kjartan Maraas <kmaraas@online.no>, 1999 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-03 20:10+0000\n" +"Last-Translator: TingPing <tingping@tingping.se>\n" +"Language-Team: Norwegian (http://www.transifex.com/hexchat/hexchat/language/no/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: no\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Jeg er opptatt" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Nettverk" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Kanal" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Venter" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Aktiv" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Feilet" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Ferdig" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Koble til" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Avbrutt" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "Kan ikke aksessere %s\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Feil" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "Ingen aktive DCC\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Spark" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Bli med i kanal..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Lenker til tjenere" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Ping tjener" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Skjul versjon" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Op" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "hadet" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Tøm" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "" + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "JA " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "NEI " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr "" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr "" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "" + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "" + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "" + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "" + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "" + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "" + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "" + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "" + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "" + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "" + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "" + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "" + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "" + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "" + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "" + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "" + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "" + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "" + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "" + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "" + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "" + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "" + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "" + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "" + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "" + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "" + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "IP-adresse" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "Vert" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Kallenavn" + +#: src/common/text.c:980 +msgid "The action" +msgstr "Handlingen" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "" + +#: src/common/text.c:987 +msgid "The text" +msgstr "Teksten" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "Meldingen" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Navn på tjener" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Gammelt kallenavn" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Nytt kallenavn" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Emne" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "Kanalen" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "Årsaken" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "Tiden" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Kallenavn" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Årsak" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Vert" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "Hvem er det fra" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "Lyden" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Borteårsak" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Melding" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Navn på kanal" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Tekst" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Brukere" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Port" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Filnavn" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "Stinavn" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Posisjon" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Størrelse" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Gammelt filnavn" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Nytt filnavn" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Mottaker" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Vertsmaske" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Vertsnavn" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "Pakken" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "Sekunder" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Tidsavbrudd for tilkobling" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Bhutan" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Chile" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "" + +#: src/common/util.c:738 +msgid "China" +msgstr "" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "" + +#: src/common/util.c:770 +msgid "France" +msgstr "Frankrike" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Grønland" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:782 +msgid "Government" +msgstr "" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Hellas" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "" + +#: src/common/util.c:801 +msgid "India" +msgstr "" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "" + +#: src/common/util.c:803 +msgid "International" +msgstr "" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "" + +#: src/common/util.c:843 +msgid "Military" +msgstr "" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Singapore" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Tegnkart" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Inviter" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "" + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "" + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Maske" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Fjern" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "" + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Navn på kanal" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Finn:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "" + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "" + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Begge" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "" + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Avbryt" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "Søk i buffer er tomt.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "" + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "" + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "" + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Kanal:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privat:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Inviter:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "" + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "" + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "" + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "" + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "" + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "" + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "" + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "" + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "Brukergrense" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Oppgi nytt kallenavn:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "" + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "" + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "" + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Ukjent vert" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Virkelig navn:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Frakoblet" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "_Tjener" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "_Innstillinger" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "_Vindu" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "_Hjelp" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Sist sett" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "Frakoblet" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Aldri" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "Tilkoblet" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Versjon" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Beskrivelse" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "_Last..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "" + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Nytt nettverk" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Generelt" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Skrifttype:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "" + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Bakgrunnsbilde:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "" + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "" + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Å" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "" + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Å-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "Usortert" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Topp" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Bunn" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Skjult" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "Brukerliste" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Vinduer" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Faner" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "bokstaver." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "Åpne dialoger i:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "" + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Vis borte én gang" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "" + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Logging" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "" + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(Slått av)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "" + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "" + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "" + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Velg skrift" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Bla gjennom..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Velg farge" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "mIRC-farger:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Forgrunn:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Bakgrunn:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "Uthev:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "" + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Grensesnitt" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Inndataboks" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Brukerliste" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Farger" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Prating" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Nettverksoppsett" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Filoverføringer" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Kategorier" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "" + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "" + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Rediger hendelser" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "" + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Test alle" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "" diff --git a/hexchat/po/pa.po b/hexchat/po/pa.po new file mode 100644 index 0000000..1feedd6 --- /dev/null +++ b/hexchat/po/pa.po @@ -0,0 +1,6255 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Amanpreet Singh Alam <amanpreetalam@yahoo.com>, 2005 +# A S Alam <aalam@users.sf.net>, 2009 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-03 20:10+0000\n" +"Last-Translator: TingPing <tingping@tingping.se>\n" +"Language-Team: Panjabi (Punjabi) (http://www.transifex.com/hexchat/hexchat/language/pa/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pa\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "ਮੈਂ ਰੁੱਝਿਆ ਹਾਂ" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "ਹਟ ਪਿੱਛੇ ਫੇਰ ਮਿਲਾਗੇਂ" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "ਨੈੱਟਵਰਕ" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<none>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "ਚੈਨਲ" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "ਉਡੀਕ ਜਾਰੀ ਹੈ" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "ਐਕਟਿਵ" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "ਅਸਫਲ" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "ਸਮਾਪਤ" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "ਕੁਨੈਕਟ" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "ਛੱਡਿਆ" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "%s ਨੂੰ ਖੋਲ੍ਹਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ ਹੈ\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "ਗਲਤੀ" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s \"%s\" ਭੇਜ ਰਿਹਾ ਹੈ। ਕੀ ਤੁਸੀਂ ਮਨਜ਼ੂਰ ਕਰਦੇ ਹੋ?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "ਕੋਈ ਸਰਗਰਮ DCCs ਨਹੀਂ\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "ਡਾਈਲਾਗ ਵਿੰਡੋ ਖੋਲ੍ਹੋ(_O)" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "ਫਾਇਲ ਭੇਜੋ(_S)" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "ਯੂਜ਼ਰ ਜਾਣਕਾਰੀ(_U)(WhoIs)" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "ਦੋਸਤ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ(_A)" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "ਓਪਰੇਟਰ ਐਕਸ਼ਨ(_p)" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Ops ਦਿਓ" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Ops ਹਟਾਓ" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "ਆਵਾਜ਼ ਦਿਓ" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "ਆਵਾਜ਼ ਲਵੋ" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "ਕਿੱਕ/ਪਾਬੰਦੀ" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "ਕਿੱਕ" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "ਪਾਬੰਦੀ" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "ਕਿੱਕ-ਪਾਬੰਦੀ" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "ਚੈਨਲ ਛੱਡੋ" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "ਚੈਨਲ ਜੁਆਇੰਨ ਕਰੋ..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "ਜੁਆਇੰਨ ਕਰਨ ਲਈ ਚੈਨਲ ਦਿਓ:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "ਸਰਵਰ ਲਿੰਕ" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "ਸਰਵਰ ਪਿੰਗ" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "ਵਰਜਨ ਓਹਲੇ" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Op" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "ਅਲਵਿਦਾ" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "%s ਸੁੱਟਣ ਲਈ ਕਾਰਨ:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "ਡਾਈਲਾਗ" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "ਕੌਣ ਹੈ" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "ਭੇਜੋ" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "ਗੱਲਬਾਤ" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "ਸਾਫ਼" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "ਪਿੰਗ" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "" + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* IRC ਨੂੰ ਰੂਟ ਦੇ ਤੌਰ ਤੇ ਚਲਾਉਣਾ ਮੂਰਖਤਾ ਹੈ! ਤੁਹਾਨੂੰ ਇੱਕ\n ਯੂਜ਼ਰ ਅਕਾਊਂਟ ਬਣਾਉਣਾ ਚਾਹੀਦਾ ਹੈ ਅਤੇ ਮੁੜ ਕੋਸ਼ਿਸ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ।\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "ਹਾਂ " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "ਨਹੀਂ " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "ਤੁਹਾਨੂੰ %s ਤੋਂ CTCP ਹੜ੍ਹ ਨਾਲ ਭਰਨ ਦੀ ਕੋਸ਼ਿਸ, %s ਅਣਡਿੱਠਾ\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s ਮੌਕੇ ਤੇ ਹੈ\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s ਮੌਕੇ ਤੇ ਨਹੀਂ ਹੈ\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "ਕੋਈ ਚੈਨਲ ਵਿੱਚ ਸ਼ਾਮਿਲ ਨਹੀਂ, ਕੋਸ਼ਿਸ ਕਰੋ /join #<channel>\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "ਕੁਨੈਕਟ ਨਹੀਂ ਹੈ, ਕੋਸ਼ਿਸ ਕਰੋ /server <host> [<port>]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "ਹਮੇਸ਼ਾ ਦੂਰ ਨਿਸ਼ਾਨਬੱਧ ਕਰੋ: %s\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "ਮੈਨੂੰ ਚੱਲਣ ਲਈ /bin/sh ਚਾਹੀਦੀ ਹੈ!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "ਉਪਲੱਬਧ ਕਮਾਂਡਾਂ:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "ਯੂਜ਼ਰ ਰਾਹੀਂ ਪ੍ਰਭਾਸ਼ਿਤ ਕਮਾਂਡਾਂ:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "ਪਲੱਗਇਨ ਰਾਹੀਂ ਪ੍ਰਭਾਸ਼ਿਤ ਕਮਾਂਡਾਂ:\n\n " + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਲਈ ਲਿਖੋ /HELP <command> , ਜਾਂ /HELP -l" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "ਅਣਜਾਣ ਆਰਗੂਮੈਂਟ '%s' ਅਣਡਿੱਠਾ ਕੀਤਾ।" + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "" + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "ਇਸ ਤਰ੍ਹਾਂ ਦੀ ਕੋਈ ਪਲੱਗਇਨ ਨਹੀਂ ਹੈ।\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "ਇਹ ਪਲੱਗਇਨ ਅਨਲੋਡ ਨਹੀਂ ਹੋ ਸਕਦੀ।\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <name> <action>, ਯੂਜ਼ਰ ਲਿਸਟ ਹੇਠ ਬਟਨ ਸ਼ਾਮਿਲ ਕਰੋ" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <cmd>, ਉਹਨਾਂ ਸਭ ਚੈਨਲਾਂ ਨੂੰ ਕਮਾਂਡ ਭੇਜੋ, ਜਿੱਥੇ ਤੁਸੀਂ ਹੋ" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <cmd>, ਉਹਨਾਂ ਸਭ ਸਰਵਰਾਂ ਨੂੰ ਕਮਾਂਡ ਭੇਜੋ, ਜਿੱਥੇ ਤੁਸੀਂ ਹੋ" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <variable> [<value>]" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "" + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <code|wildcard>, ਦੇਸ਼ ਕੋਡ ਲੱਭੋ, ਜਿਵੇਂ ਕਿ au = australia" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <name>, ਯੂਜ਼ਰ ਲਿਸਟ ਹੇਠ ਬਟਨ ਹਟਾਓ" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, ਸਰਵਰ ਨਾਲ ਸੰਬੰਧ ਖਤਮ" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <text>, ਲੋਕਲ ਟੈਕਸਟ ਛਾਪਿਆ ਜਾਵੇਗਾ" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <password>, ਨੈਕਸਰਵਰ ਨਾਲ ਆਪਣੀ ਪਛਾਣ ਕਰਵਾਓ" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <nick> [<channel>], ਕਿਸੇ ਨੂੰ ਇੱਕ ਚੈਨਲ ਵਿੱਚ ਆਉਣ ਲਈ ਸੱਦਾ ਦਿਓ, ਮੂਲ ਰੂਪ ਵਿੱਚ ਮੌਜੂਦਾ ਚੈਨਲ ਲਈ (ਮੁੱਖੀ ਹੋਣਾ ਲਾਜ਼ਮੀ)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <channel>, ਚੈਨਲ ਵਿੱਚ ਸ਼ਾਮਿਲ ਹੋਣ ਲਈ" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <file>, ਪਲੱਗਇਨ ਜਾਂ ਸਕ੍ਰਿਪਟ ਲੋਡ ਕਰੋ" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <action>, ਚੈਨਲ ਵਿੱਚ ਕਾਰਵਾਈ ਕਰੋ (ਕਾਰਵਾਈ ਤੀਜੇ ਵਿਅਕਤੀ ਦੇ ਤੌਰ ਤੇ ਕੀਤੀ ਜਾਵੇਗੀ, ਜਿਵੇਂ /me ਚੱਲਿਆ)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, ਮਾਸ ਕਿੱਕ, ਮੌਜੂਦਾ ਚੈਨਲ ਵਿੱਚ ਆਪਣੇ ਆਪ ਨੂੰ ਛੱਡ ਕੇ ਸਭ ਨੂੰ ਬਾਹਰ ਸੁੱਟੋ (ਮੁੱਖੀ ਹੋਣਾ ਲਾਜ਼ਮੀ ਹੈ)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <nick> <message>, ਇੱਕ CTCP ਸੂਚਨਾ ਭੇਜੋ" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <hostname> [<port>]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <nickname>, ਆਪਣਾ ਨਾਂ ਦਿਓ" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <nick>, ਚੈਨਲ ਮੁੱਖੀ ਸਥਿਤੀ ਨਾਂ ਨੂੰ ਦਿਓ (ਚੈਨਲ ਮੁੱਖੀ ਹੋਣਾ ਲਾਜ਼ਮੀ)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<channel>] [<reason>], ਚੈਨਲ ਛੱਡੋ, ਮੂਲ ਰੂਪ ਵਿੱਚ ਮੌਜੂਦਾ" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <nick | channel>, CTCP ਨਾਂ ਜਾਂ ਚੈਨਲ ਨੂੰ ਪਿੰਗ ਕਰੇਗਾ" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "" + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<reason>], ਮੌਜੂਦਾ ਸਰਵਰ ਨਾਲੋਂ ਵੱਖ" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <text>, ਮੌਜੂਦਾ ਝਰੋਖੇ ਵਿੱਚ ਇਕਾਈ ਨੂੰ ਲਿਖੋ" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <nick> [<file>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <host> <port> <channel>, ਕੁਨੈਕਟ ਅਤੇ ਚੈਨਲ ਵਿੱਚ ਸ਼ਾਮਲ" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <host> <port> <channel>, ਕੁਨੈਕਟ ਅਤੇ ਚੈਨਲ ਵਿੱਚ ਸ਼ਾਮਲ" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <host> [<port>] [<password>], ਸਰਵਰ ਨਾਲ ਜੁੜੋ, ਮੂਲ ਪੋਰਟ 6667 ਹੈ।" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<topic>], ਜੇਕਰ ਕੋਈ ਦਿੱਤਾ ਹੋਵੇ ਤਾਂ ਲਗਾਉ, ਨਹੀਂ ਤਾਂ ਮੌਜੂਦਾ ਵੇਖਾਇਆ ਜਾਵੇਗਾ" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <mask> [<mask>...], ਖਾਸ ਮਾਸਕ ਤੇ ਪਾਬੰਦੀ ਹਟਾਓ।" + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <mask> [QUIET]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <name>, ਪਲੱਗਇਨ ਜਾਂ ਸਕ੍ਰਿਪਟ ਹਟਾਓ" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "" + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, ਆਪਣੇ ਬਰਾਊਜ਼ਰ ਵਿੱਚ URL ਖੋਲ੍ਹੋ" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <nick>, ਕਿਸੇ ਨੂੰ ਆਵਾਜ਼ ਦਿਓ (chanop ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <message>, ਸਭ ਚੈਨਲ ਵਿੱਚ ਸੁਨੇਹਾ ਲਿਖੋ" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <message>, ਮੌਜੂਦਾ ਚੈਨਲ ਵਿੱਚ ਸਭ ਚੈਨਲ ਮੁੱਖੀਆਂ ਨੂੰ ਸੁਨੇਹਾ ਭੇਜੋ" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "ਵਰਤੋਂ: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nਇਸ ਕਮਾਂਡ ਲਈ ਕੋਈ ਮੱਦਦ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ।\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "ਇਸਤਰਾਂ ਦੀ ਕੋਈ ਕਮਾਂਡ ਨਹੀਂ ਹੈ।\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "ਯੂਜ਼ਰ ਕਮਾਂਡ ਲਈ ਗਲਤ ਆਰਗੂਮੈਂਟ।\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "ਲਗਾਤਾਰ ਕਈ ਯੂਜ਼ਰ ਕਮਾਡਾਂ, ਅਧੂਰਾ ਛੱਡਿਆ।" + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "ਕੀ ਤੁਸੀਂ SSL ਅਨੁਕੂਲ ਸਰਵਰ ਤੇ ਪੋਰਟ ਹੋਣ ਦੀ ਪੁਸ਼ਟੀ ਕਰਦੇ ਹੋ?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "ਹੋਸਟ %s ਨਹੀਂ ਲੱਭਿਆ ਜਾ ਸਕਿਆ\nਆਪਣੀ IP ਸੈਟਿੰਗ ਵੇਖੋ!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "ਪਰਾਕਸੀ ਸੰਚਾਰ ਅਸਫਲ।\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "%s ਵਿੱਚ ਅਗਲੇ ਸਰਵਰ ਨਾਲ ਕੋਸ਼ਿਸ ਜਾਰੀ...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "ਚੇਤਾਵਨੀ: \"%s\" ਅੱਖਰ ਸਮੂਹ ਅਣਜਾਣ ਹੈ। ਨੈੱਟਵਰਕ %s ਲਈ ਅਨੁਵਾਦ ਲਾਗੂ ਨਹੀਂ ਹੈ।" + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "" + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "" + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%Uਚੈਨਲ ਯੂਜ਼ਰ ਵਿਸ਼ਾ" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "" + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "" + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "" + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "" + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "" + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "" + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "" + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "" + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "" + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "" + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "" + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "" + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tਸੂਚਨਾ ਲਿਸਟ ਖਾਲੀ ਹੈ।" + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "" + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "" + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "" + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "" + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** %s ਉੱਤੇ ਲਾਗ ਸਮਾਪਤ\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** %s ਉਤੇ ਲਾਗ ਸ਼ੁਰੂ \n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "ਖੱਬਾ ਸੁਨੇਹਾ" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "ਸੱਜਾ ਸੁਨੇਹਾ" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "IP ਐਡਰੈੱਸ" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "ਯੂਜ਼ਰ ਨਾਂ" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "ਜੁਆਇੰਨ ਹੋਏ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "ਚੈਲਨ ਵਿੱਚ ਜੁਆਇੰਨ ਕੀਤਾ" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "ਵਿਅਕਤੀ ਦਾ ਹੋਸਟ" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "ਆਮ ਨਾਂ" + +#: src/common/text.c:980 +msgid "The action" +msgstr "ਕਾਰਵਾਈ" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "ਮੋਡ ਅੱਖਰ" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "ਪਛਾਣ ਟੈਕਸਟ" + +#: src/common/text.c:987 +msgid "The text" +msgstr "ਟੈਕਸਟ" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "ਸੁਨੇਹਾ" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "ਸਰਵਰ ਨਾਂ" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "ਪੁਰਾਣਾ ਨਾਂ" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "ਨਵਾਂ ਨਾਂ" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "ਜਿਸ ਨੇ ਵਿਸ਼ਾ ਤਬਦੀਲ ਕੀਤਾ ਹੈ, ਉਸ ਦਾ ਨਾਂ" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "ਵਿਸ਼ਾ" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "ਸੁੱਟਣ ਵਾਲੇ ਦਾ ਨਾਂ" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "ਸੁੱਟਿਆ ਗਿਆ ਵਿਅਕਤੀ" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "ਚੈਨਲ" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "ਕਾਰਨ" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "ਜਾ ਰਹੇ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "ਸਮਾਂ" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "ਨਿਰਮਾਤਾ" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "ਨਾਂ" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "ਕਾਰਨ" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "ਹੋਸਟ" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "ਕਿਸ ਵੱਲੋਂ ਹੈ" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "ਸਮਾਂ x.x ਫਾਰਮੈਟ ਵਿੱਚ (ਹੇਠਾਂ ਵੇਖੋ)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "ਚੈਨਲ ਇਹ ਜਾ ਰਿਹਾ ਹੈ" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "ਸਾਊਂਡ" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "CTCP ਘਟਨਾ" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "ਕੁੰਜੀ ਦੇਣ ਵਾਲੇ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "ਕੁੰਜੀ" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "ਲਿਮਟ ਲਗਾਉਣ ਵਾਲੇ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "ਲਿਮਟ" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "ਆਵਾਜ਼ ਦੇਣ ਵਾਲੇ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "ਆਵਾਜ਼ ਪ੍ਰਾਪਤ ਵਾਲੇ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "ਪਾਬੰਦੀ ਲਗਾਉਣ ਵਾਲੇ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "ਪਾਬੰਦੀ ਮਾਸਕ" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "ਕੁੰਜੀ ਹਟਾਉਣ ਵਾਲੇ ਦਾ ਨਾਂ" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "ਲਿਮਟ ਹਟਾਉਣ ਵਾਲੇ ਦਾ ਨਾਂ" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "ਨਾ-ਆਵਾਜ਼ ਕੀਤੇ ਜਾਣ ਵਾਲੇ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "ਸੱਦਾ ਭੇਜਣ ਵਾਲੇ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "ਸੱਦਾ ਮਾਸਕ" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "ਸੱਦੇ ਨੂੰ ਹਟਾਉਣ ਵਾਲੇ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "ਢੰਗ ਦੇਣ ਵਾਲੇ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "ਢੰਗ ਨਿਸ਼ਾਨ (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "ਢੰਗ ਅੱਖਰ" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "ਚੈਨਲ ਦਿੱਤਾ ਜਾ ਰਿਹਾ ਹੈ" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "ਪੂਰਾ ਨਾਂ" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "ਚੈਨਲ ਮੈਂਬਰੀ /\"ਇੱਕ IRC ਓਪਰੇਟਰ ਹੈ\"" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "ਸਰਵਰ ਜਾਣਕਾਰੀ" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "ਵਿਹਲਾ ਸਮਾਂ" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "ਦਾਖਲਾ ਸਮਾਂ" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "ਜਾਣ ਦਾ ਕਾਰਨ " + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "ਸੁਨੇਹਾ" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "ਅਕਾਊਂਟ" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "ਅਸਲੀ user@host" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "ਅਸਲੀ IP" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "ਚੈਨਲ ਨਾਂ" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "ਟੈਕਸਟ" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "ਸੱਦਣ ਲਈ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "ਯੂਜ਼ਰ" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "ਵਰਤੋਂ ਵਿੱਚ ਆਮ ਨਾਂ" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "ਕੋਸ਼ਿਸ ਕੀਤਾ ਨਾਂ" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "ਪੋਰਟ" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "ਢੰਗ ਸਤਰ" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "DCC ਕਿਸਮ" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "ਫਾਇਲ ਨਾਂ" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "ਨਿਯਤ ਫਾਇਲ ਨਾਂ" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "ਰਸਤਾ ਨਾਂ" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "ਸਥਿਤੀ" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "ਸਾਈਜ਼" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "DCC ਸਤਰ" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "ਸੂਚਨਾ ਇਕਾਈਆਂ ਦੀ ਗਿਣਤੀ" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "ਪੁਰਾਣਾ ਫਾਇਲ ਨਾਂ" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "ਨਵਾਂ ਫਾਇਲ ਨਾਂ" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "ਪ੍ਰਾਪਤ ਕਰਤਾ" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "ਹੋਸਟ-ਮਾਸਕ" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "ਹੋਸਟ-ਨਾਂ" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "ਪੈਕਟ" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "ਸਕਿੰਟ" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "ਸੱਦਣ ਲਈ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "ਪਾਬੰਦੀ-ਮਾਸਕ" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "ਕਿਸ ਨੇ ਪਾਬੰਦੀ ਲਗਾਈ" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "ਪਾਬੰਦੀ ਸਮਾਂ" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "ਸਾਊਂਡ ਫਾਇਲ ਪੜ੍ਹੀ ਨਹੀਂ ਜਾ ਸਕੀ:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "ਰਿਮੋਟ ਹੋਸਟ ਬੰਦ ਸਾਕਟ" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "ਕੁਨੈਕਸ਼ਨ ਤੋਂ ਇਨਕਾਰ" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "ਹੋਸਟ ਲਈ ਮਾਰਗ ਨਹੀਂ" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "ਕੁਨੈਕਸ਼ਨ ਲਈ ਸਮਾਂ ਸਮਾਪਤ" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "ਇਹ ਸਿਰਨਾਵਾਂ ਦਿੱਤਾ ਨਹੀਂ ਜਾ ਸਕਦਾ" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "ਪੀਅਰ ਨੇ ਕੁਨੈਕਸ਼ਨ ਮੁੜ ਬਣਾਇਆ" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "ਅਡੂਰਾ" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "ਮਿਸਰ" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "ਅਫਗਾਨਿਸਤਾਨ" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "ਐਟੀਗੋਆ ਤੇ ਬਾਰਬੂਡਾ" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "ਐਗੂਲਾ" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "ਅਲਬਾਨੀਆ" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "ਅਰਮੀਨੀਆ" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "ਨੀਂਦਰਲੈਂਡ ਐਟੀਲਾਇਸ" + +#: src/common/util.c:695 +msgid "Angola" +msgstr " ਅੰਗੋਲਾ" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "ਐਟਾਰਟਿਕਾ" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "ਅਰਜਨਟੀਨਾ" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "ਉਲਟ DNS" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "ਅਮਰੀਕਨ ਸਾਮੋਕਾ" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "ਆਸਟਾਰੀਆ" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "ਨੈਟੋ ਫਿਲ" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "ਅਸਟਰੇਲੀਆ" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "ਅਰੂਬਾ" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "ਅਲੈਂਡ ਟਾਪੂ" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "ਅਜਰਬਾਈਜਾਨ" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "ਬੋਸਨੀਆ ਤੇ ਹਰਜੀਗੋਵੀਨਾ" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "ਬਾਰਬਾਰਡੋਸ" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "ਬੰਗਲਾਦੇਸ਼" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "ਬੈਲਜੀਅਮ" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr " " + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "ਬੁਲਗਾਰੀਆ" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "ਬਹਰੀਨ" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "ਬੂਰੂਮਾਡੀ" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "ਵਪਾਰਿਕ" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "ਬੀਨਾਨ" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "ਬਾਰਮੂਡਾ" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "ਬਰੂਨਈ ਡਾਰੂਸ਼ਲਾਮ" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "ਬੋਲੋਵੀਆ" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "ਬਰਾਜ਼ੀਲ" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "ਬਾਹਾਮਾਸ" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "ਭੁਟਾਨ" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "ਬੂਟਵਟ ਟਾਪੂ" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "ਬੂਟਸਵਾਨਾ" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "ਬੇਲਾਰੂਸ" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "ਬੀਲੀਜ਼ੀ" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "ਕੈਨੇਡਾ" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "ਕੋਕਸ ਟਾਪੂ" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "ਕਾਗੋਂ ਗਣਰਾਜ" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "ਕੇਂਦਰੀ ਅਫਰੀਕੀ ਗਣਰਾਜ" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "ਕਾਂਗੋ" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "ਸਵਿਟਰਜ਼ਰਲੈਂਡ" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "ਕੋਟੀ ਡੀਵੋਰਆ" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "ਕੂਕ ਟਾਪੂ" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "ਚਿੱਲੀ" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "ਕੈਮਰੂਨ" + +#: src/common/util.c:738 +msgid "China" +msgstr "ਚੀਨ" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "ਕੋਲੰਬੀਆ" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "ਅੰਦਰੂਨੀ ਵਣਜ" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "ਕਾਸਟ ਰੀਕਾ" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "ਸਰਬੀਆ ਅਤੇ ਮੋਨਟੇਨੇਗਰੋ" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "ਕਿਊਬਾ" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "ਕੇਪ ਵਾਰਡੀ" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "ਕ੍ਰਿਸਮਸ ਟਾਪੂ" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "ਕਿਊਰੂਸ" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "ਚੈੱਕ ਗਣਰਾਜ" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "ਜਰਮਨੀ" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "ਡਜੀਬੂਟੀ" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "ਡੈਨਮਾਰਕ" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "ਡੋਮੀਨੀਆ" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "ਡੋਮੀਨੀਆਨ ਗਣਰਾਜ਼" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "ਅਲਜੀਰੀਆ" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "ਏਕਵੇਡਰ" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "ਵਿਦਿਅਕ ਸੰਗਠਨ" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "ਈਸਟੋਨੀਆ" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "ਮਿਸਰ" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "ਦੱਖਣੀ ਸਹਾਰਾ" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "ਈਰਟੀਰਆ" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "ਸਪੇਨ " + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "ਈਥੋਪਈਆ" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "ਯੂਰਪੀ ਯੂਨੀਅਨ" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "ਫਿਨਲੈਂਡ" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "ਫਿਜੀ" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "ਫਾਕਲੈਡ ਟਾਪੂ" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "ਮਾਕਰੋਨੀਸ਼ੀਆ" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "ਫਾਰੀਓ ਟਾਪੂ" + +#: src/common/util.c:770 +msgid "France" +msgstr "ਫਰਾਂਸ" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "ਗਾਬੋਨ" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "ਬਰਤਾਨੀਆ" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "ਗਰੀਨਾਡਾਆ" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "ਜਾਰਜੀਆ" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "ਫਰੈਂਚ ਗੁਆਨਾ" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "ਘਾਨਾ" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "ਗੀਬਰਾਲਟਰ" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "ਗਰੀਨਲੈਂਡ" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "ਗਾਬੀਆ" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "ਗੂਈਨੀਆ" + +#: src/common/util.c:782 +msgid "Government" +msgstr "ਸਰਕਾਰੀ" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "ਗੁਆਡੀਲੂਪੀ" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "ਭੂ-ਖੰਡੀ ਗੁਆਨਾ" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "ਗਰੀਸ" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "ਦੱਖਣ ਜਾਰਜੀਆ ਦੱਖਣ" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "ਗੂਆਟੇਮਾਲਾ" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "ਗੁਆਮ" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "ਗੁਨੇਆ-ਬਿਸਾਉ" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "ਗੁਆਨਾ" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "ਹਾਂਗਕਾਂਗ" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "ਹੀਅਰਡ ਅਤੇ ਮੈਕਡੋਨਾਲਡ ਆਈਸਲੈਂਡ" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "ਹਾਨਡੂਰਸ" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "ਕਰੋਟੀਆ" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "ਹਾਈਟੀ" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "ਹੰਗਰੀ" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "ਇੰਡੋਨੇਸ਼ੀਆ" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "ਆਇਰਲੈਂਡ" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "ਇਜ਼ਰਾਈਲ" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "" + +#: src/common/util.c:801 +msgid "India" +msgstr "ਭਾਰਤ" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "ਜਾਣਕਾਰੀ" + +#: src/common/util.c:803 +msgid "International" +msgstr "ਅੰਤਰਰਾਸ਼ਟਰੀ" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "ਬਰਤਾਨੀਆ ਭਾਰਤੀ ਸਮੁੰਦਰੀ ਖੇਤਰ" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "ਇਰਾਕ" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "ਈਰਾਨ" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "ਆਈਸਲੈਂਡ" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "ਇਟਲੀ" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "ਜਰਸੀ" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "ਜੈਮਾਈਕਾ" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "ਜਾਰਡਨ" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "ਜਾਪਾਨ" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "ਕੀਨੀਆ" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "ਕਿਰਗਸਤਾਨ" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "ਕੋਲੰਬੀਆ" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "ਕੀਰੀਬਾਟੀ" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "ਕੋਮੋਰਸ" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "ਸੇਂਟ ਕਿੱਟ ਅਤੇ ਨੀਵਿਸ" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "ਉੱਤਰੀ ਕੋਰੀਆ" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "ਦੱਖਣੀ ਕੋਰੀਆ" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "ਕੁਵੈਤ" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "ਕਾਯਮਨ ਟਾਪੂ" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "ਕਜ਼ਾਕਸਤਾਨ" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "ਲਿਉਸ" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "ਲੀਬਨਾਨ" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "ਸੇਂਟ ਲੂਸੀਆ" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "ਲੀਚਟੀਨੀਆ" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "ਸ੍ਰੀਲੰਕਾ" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "ਲੀਬੀਰੀਆ" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "ਲੀਸੋਥੋ" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "ਲੀਥੂਨੀਆ" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "ਲ਼ਕਸ਼ਮਬਰਗ" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "ਲਾਟੀਵਾਆ" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "ਲੀਬੀਆ" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "ਮੋਰੋਸ਼ਸ" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "ਮੋਨਸ਼ੀਆ" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "ਮੋਲਡੋਵਾ" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "ਅਮਰੀਕੀ ਮੈਂਡੀਕਲ" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "ਮੈਡਾਗਾਸਕਰ" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "ਮਾਰਸ਼ਲ ਟਾਪੂ" + +#: src/common/util.c:843 +msgid "Military" +msgstr "ਮਿਲਟਰੀ" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "ਮੈਕਡੋਨੀਆ" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "ਮਾਲੀ" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "ਮਿਆਂਮਾਰ" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "ਮੰਗੋਲੀਆ" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "ਮਕਾਉ" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "ਉੱਤਰੀ ਮਰੀਵੀਆਨਾ ਟਾਪੂ" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "ਮਾਰਟੀਨੀਕਿਊ" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "ਮਾਓਰੀਟਆਨਾ" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "ਮੋਨਟਸ਼ਟੀਟ" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "ਮਾਲਟਾ" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "ਮਾਓਟੀਸ" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "ਮਾਲਦੀਪ" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "ਮਾਲਾਵੀਆ" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "ਮੈਕਸੀਕੋ" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "ਮਲੇਸ਼ੀਆ" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "ਮੋਜ਼ਾਮਬੀਕਿਉ" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "ਨੀਮੀਬੀਆ" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "ਨੀਜ਼ਰ" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "ਨੈੱਟਵਰਕ" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "ਨੋਰਫੋਕ ਟਾਪੂ" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "ਨੀਜ਼ੀਰਆ" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "ਨਿਕਾਰਗੁਆ" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "ਨੀਂਦਰਲੈਂਡ" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "ਨਾਰਵੇ" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "ਨੇਪਾਲ" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "ਨੀਓਰੂ" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "ਨੀਊਈ" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "ਨਿਊਜ਼ੀਲੈਂਡ" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "ਓਮਾਨ" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "ਅੰਦਰੂਨੀ ਨਾ-ਲਾਭ ਸੰਗਠਨ" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "ਪੈਨਾਮਾ" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "ਪੇਰੂ" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "ਫਰੈਚ ਪੋਲੀਸੇਲੇਵੀਆ" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "ਪਾਪੂਆ ਨਵਾਂ ਗੂਈਨਿਆ" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "ਫਿਲਿਪੀਨੀਜ਼" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "ਪਾਕਿਸਤਾਨ" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "ਪੋਲੈਂਡ" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "ਸੇਂਟ ਪਰੇਰਾ ਅਤੇ ਮਿਕਿਊਲੋਨ" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "ਪਿਟਸਾਰਨ" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "ਪੁਈਰਟੋ ਰੀਸੋ" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "ਫਿਲੀਸਤੀਨ ਭਾਗ" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "ਪੁਰਤਗਾਲ" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "ਪਾਲਾਊ" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "ਪੇਰੂਗਵੇ" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "ਕਤਰ" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "ਰੀਯੁਨੀਅਨ" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "ਰੋਮਾਨੀਆ" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "ਪੁਰਾਣਾ ਸਕੂਲ ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "ਸੰਘੀ ਰੂਸ " + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "ਰਵਾਂਡਾਂ" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "ਸਾਊਦੀ ਅਰਬ" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "ਸੋਲੋਮੋਨ ਟਾਪੂ" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "ਸੀਆਚਿਲਸ" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "ਸੂਡਾਨ" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "ਸਵੀਡਨ" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "ਸਿੰਘਾਪੁਰ" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "ਸੇਂਟ ਹੀਲੀਨਆ" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "ਸਲੋਵੀਨੀਆ" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "ਸਵਾਲਬੋਰਡ ਅਤੇ ਜਾਨ ਮਾਈਨ ਆਈਸਲੈਂਡ" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "ਸਲੋਵਾਕ ਲੋਕਤੰਤਰ" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "ਸੀਈਰਆ ਲਿਏਨ" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "ਸਾਨ ਮਾਰੀਨੂ" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "ਸੈਨੇਗਾਲ" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "ਸੋਮਾਲੀਆ" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "ਸੂਰੀਨਾਂ" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "ਸਾਓ ਟੋਮ ਅਤੇ ਪ੍ਰਿਨਸਾਈਪ" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "ਪੁਰਾਣਾ ਸੋਵੀਅਤ ਯੂਨੀਅਨ" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "ਈਲ ਸਾਲੇਵਡੋਰ" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "ਸੀਰੀਆ" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "ਸਵਰਜ਼ਲੈਂਡ" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "ਤੁਰਕਸ ਅਤੇ ਕੇਈਕੋਸ ਟਾਪੂ" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "ਚੰਦ" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "ਫਰੈਂਚ ਦੱਖਣੀ ਖੇਤਰ" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "ਟੂਗੂ" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "ਥਾਈਲੈਂਡ" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "ਤਜ਼ਾਕਸਤਾਨ" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "ਟੂਕੀਲਾਊ" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "ਪੂਰਬੀ ਟੀਮੋਰ" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "ਤੁਰਕਸਤਾਨ" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "ਟੁਨੀਸ਼ੀਆ" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "ਟੂਨਗਾ" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "ਤੁਰਕੀ" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "ਟਰਿਨੀਦਾਦ ਅਤੇ ਟੋਬੇਗੋ" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "ਟੂਵਾਲੂ" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "ਤਾਈਵਾਨ" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "ਤਾਨਜ਼ੀਆ" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "ਯੂਕਰੇਨ" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "ਯੂਗਾਂਡਾ" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "ਬਰਤਾਨੀਆ" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "ਸੰਯੁਕਤ ਰਾਜ ਅਮਰੀਕਾ" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "ਉਰੂਗਵੇ" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "ਉਜ਼ੇਬਕਸਤਾਨ" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "ਵਾਟਕੈਨ ਸ਼ਹਿਰ ਪ੍ਰਾਂਤ" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "ਸੇਂਟ ਵੀਨਸੈਂਟ ਅਤੇ ਗਰੀਨਾਡੀਨਸ" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "ਵੈਨੂਜੇਏਲਾ" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "ਬ੍ਰਿਟਿਸ਼ ਵੀਰਗਿਨ ਟਾਪੂ" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "ਅਮਰੀਕੀ ਵਰਜਿਨ ਟਾਪੂ" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "ਵੀਅਤਨਾਮ" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "ਵਾਨੂਟੂ" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "ਵੈਲਿਸ ਅਤੇ ਫੂਟੂਨਾ ਆਈਸਲੈਂਡ" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "ਸਾਮੀਆ" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "ਯਮਨ" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "ਮਾਈਟੀ" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "ਯੂਗੋਸਲਾਵੀਆ" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "ਦੱਖਣੀ ਅਫਰੀਕਾ" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "ਜ਼ੈਬੀਆ" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "ਜਿੰਬਾਬਾਵੇੰ" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "ਸ਼ੈਸ਼ਨ ਬਸ ਨਾਲ ਜੁੜ ਨਹੀਂ ਸਕਿਆ" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "ਕਮਾਂਡ ਪੂਰੀ ਕਰਨ ਲਈ ਫੇਲ੍ਹ" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "ਰਿਮੋਟ ਅਸੈੱਸ" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "ਸ਼ੈਸ਼ਨ ਬਸ ਨਾਲ ਜੁੜਨ ਲਈ ਅਸਫ਼ਲ: %s\n" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "ਅੱਖਰ ਚਾਰਟ" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "ਪਾਬੰਦੀ" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "ਸੱਦਾ" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "ਕੁਨੈਕਟ ਨਹੀਂ ਹੈ।" + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "ਤੁਹਾਨੂੰ ਕੁਝ ਪਾਬੰਦੀਆਂ ਦੀ ਚੋਣ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ।" + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "ਮਾਸਕ" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "ਵੱਲੋਂ" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "ਮਿਤੀ" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "ਤੁਸੀਂ ਇੱਕ ਪਾਬੰਦੀ ਮੇਨੂ ਵਿੰਡੋ ਤਾਂ ਹੀ ਖੋਲ੍ਹ ਸਕਦੇ ਹੋ, ਜੇਕਰ ਤੁਸੀਂ ਚੈਨਲ ਟੈਬ ਵਿੱਚ ਹੋ।" + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "ਹਟਾਓ" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "ਉਭਾਰੋ" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "ਤਾਜ਼ਾ" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "" + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "ਆਉਟਪੁੱਟ ਫਾਇਲ ਨਾਂ ਚੁਣੋ" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "ਚੈਨਲ ਜੁਆਇੰਨ ਕਰੋ(_J)" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "ਚੈਨਲ ਨਾਂ ਕਾਪੀ ਕਰੋ(_C)" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "ਵਿਸ਼ਾ ਟੈਕਸਟ ਕਾਪੀ ਕਰੋ(_T)" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "ਖੋਜ(_S)" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "ਡਾਊਨਲੋਡ ਲਿਸਟ(_D)" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "ਲਿਸਟ ਸੰਭਾਲੋ(_L)..." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "ਕੇਵਲ ਵੇਖੋ:" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "ਇਸ ਨਾਲ ਚੈਨਲ" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "ਤੋਂ" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "ਯੂਜ਼ਰ" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "ਖੋਜ:" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "ਚੈਨਲ ਨਾਂ" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "ਖੋਜ ਟਾਈਪ:" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "ਸਧਾਰਨ ਖੋਜ" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "ਰੈਗੂਲਰ ਸਮੀਕਰਨ" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "ਖੋਜ:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "%s ਨੂੰ ਫਾਇਲ ਭੇਜੋ" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "ਇਹ ਫਾਇਲ ਮੁੜ-ਪ੍ਰਾਪਤੀ ਯੋਗ ਨਹੀਂ।" + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "ਫਾਇਲ ਲਈ ਅਧਿਕਾਰ ਨਹੀਂ: %s\n%s.\nਮੁੜ-ਪ੍ਰਾਪਤੀ ਸੰਭਵ ਨਹੀਂ।" + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "ਡਾਊਨਲੋਡ ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਫਾਇਲ ਦਿੱਤੇ ਅਕਾਰ ਤੋਂ ਵੱਡੀ ਹੈ। ਮੁੜ-ਪ੍ਰਾਪਤੀ ਸੰਭਵ ਨਹੀਂ ਹੈ।" + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "ਦੋ ਲੋਕਾਂ ਤੋਂ ਇੱਕੋ ਫਾਇਲ ਮੁੜ ਪ੍ਰਾਪਤ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ।" + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "ਹਾਲਤ" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "ਫਾਇਲ" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "ਦੋਵੇਂ" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "ਅੱਪਲੋਡ" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "ਡਾਊਨਲੋਡ" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "ਵੇਰਵਾ" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "ਫਾਇਲ:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "ਐਡਰੈੱਸ:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "ਅਧੂਰਾ ਛੱਡੋ" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "ਮਨਜ਼ੂਰ" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "ਮੁੜ-ਪ੍ਰਾਪਤ" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "...ਫੋਲਡਰ ਖੋਲ੍ਹੋ" + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "ਪ੍ਰਾਪਤ" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "ਭੇਜੀ" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "ਸ਼ੁਰੂ ਸਮਾਂ" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "ਹਟਾਓ" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "ਰੱਦ ਕਰੋ" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "ਸੰਭਾਲੋ" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "ਸਰਵਰ ਨਾਲ ਆਟੋਮੈਟਿਕ ਕੁਨੈਕਟ ਨਾ ਕਰੋ" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "ਇੱਕ ਵੱਖਰੀ ਸੰਰਚਨਾ ਡਾਇਰੈਕਟਰੀ ਵਰਤੋਂ" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "ਕੋਈ ਪਲੱਗਇਨ ਆਟੋਮੈਟਿਕ ਲੋਡ ਨਾ ਕਰੋ" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "ਯੂਜ਼ਰ ਸੰਰਚਨਾ ਡਾਇਰੈਕਟਰੀ ਵੇਖਾਓ" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "ਕਮਾਂਡ ਚਲਾਓ:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "ਲੈਵਲ" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "ਵਰਜਨ ਜਾਣਕਾਰੀ ਵੇਖਾਓ" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "ਫੋਂਟ ਖੋਲ੍ਹਣ ਲਈ ਅਸਫ਼ਲ:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "ਖੋਜ ਬਫ਼ਰ ਖਾਲੀ ਹੈ।\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d ਬਾਇਟ" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "ਨੈੱਟਵਰਕ ਨੇ ਕਤਾਰ ਭੇਜੀ: %d ਬਾਈਟ" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "ਇਹ ਕਮਾਂਡ ਮੌਜੂਦਾ ਟੈਬ ਨੂੰ ਇੱਕ ਖੱਬੇ ਅੱਗੇ ਖਿਸਕਾਏਗੀ" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "ਇਹ ਕਮਾਂਡ ਮੌਜੂਦਾ ਟੈਬ ਨੂੰ ਇੱਕ ਸੱਜੇ ਅੱਗੇ ਖਿਸਕਾਏਗੀ" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "ਇਹ ਕਮਾਂਡ ਮੌਜੂਦਾ ਟੈਬ ਵਰਗ ਨੂੰ ਖੱਬੇ ਪਾਸੇ ਖਿਸਕਾਏਗੀ" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "ਇਹ ਕਮਾਂਡ ਮੌਜੂਦਾ ਟੈਬ ਵਰਗ ਨੂੰ ਸੱਜੇ ਪਾਸੇ ਖਿਸਕਾਏਗੀ" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "ਇੰਪੁੱਟ ਸਤਰ ਨੂੰ ਅਤੀਤ ਵਿੱਚ ਰੱਖੋ, ਪਰ ਸਰਵਰ `ਤੇ ਨਾ ਭੇਜੋ" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "ਸਵਿੱਚ ਬੰਧਨ ਸੰਰਚਨਾ ਲੋਡ ਕਰਨ ਦੌਰਾਨ ਗਲਤੀ ਹੈ" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "ਉਹ ਫਾਇਲ ਲਿਖੀ ਨਹੀਂ ਜਾ ਸਕੀ ਹੈ" + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "ਉਹ ਫਾਇਲ ਪੜ੍ਹੀ ਨਹੀਂ ਜਾ ਸਕੀ ਹੈ" + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "ਇਹ ਮਾਸਕ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ।" + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "ਪ੍ਰਾਈਵੇਟ" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "ਨੋਟਿਸ" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "ਨਾ-ਅਣਡਿੱਠਾ" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "ਅਣਡਿੱਠਾ ਕਰਨ ਲਈ ਮਾਸਕ ਦਿਓ:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "ਅਣਡਿੱਠੀ ਸਥਿਤੀ:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "ਚੈਨਲ:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "ਪ੍ਰਾਈਵੇਟ:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "ਸੂਚਨਾ:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "ਸੱਦਾ:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "ਸ਼ਾਮਲ..." + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "ਚੈਨਲ ਨਾਂ ਬਹੁਤ ਛੋਟਾ ਹੈ, ਫੇਰ ਟਰਾਈ ਕਰੋ ਜੀ।" + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "%s ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਪੂਰਾ ਹੋਇਆ।" + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "ਤੁਸੀਂ ਅੱਗੇ ਕੀ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "ਕੁਝ ਨਹੀਂ, ਮੈਂ ਚੈਨਲ ਬਾਅਦ 'ਚ ਜੁਆਇੰਨ ਕਰਾਂਗਾ(_N)" + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "ਇਹ ਚੈਨਲ ਜੁਆਇੰਨ ਕਰੋ(_J):" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "" + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "ਕੁਨੈਕਟ ਕਰਨ ਸਮੇਂ ਇਹ ਡਾਈਲਾਗ ਹਮੇਸ਼ਾ ਵੇਖਾਓ(_A)" + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "ਡਾਈਲਾਗ" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "%s ਲਈ ਵਿਸ਼ਾ ਹੈ: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "ਕੋਈ ਵਿਸ਼ਾ ਦਿੱਤਾ ਨਹੀਂ ਗਿਆ" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "ਇਹ ਸਰਵਰ ਨਾਲ ਪਹਿਲਾਂ ਹੀ %d ਚੈਨਲ ਜਾਂ ਡਾਈਲਾਗ ਜੁੜੇ ਹੋਏ ਹਨ। ਕੀ ਸਭ ਨੂੰ ਬੰਦ ਕਰਨਾ ਹੈ?" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "ਅਗਲੀ ਵਾਰ ਨਾ ਪੁੱਛੋ।" + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "ਤੁਸੀਂ %i IRC ਨੈੱਟਵਰਕਾਂ ਨਾਲ ਕੁਨੈਕਟ ਹੋ।" + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "ਕੀ ਤੁਸੀਂ ਬੰਦ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "ਕੁਝ ਫਾਇਲ ਟਰਾਂਸਫਰ ਹਾਲੇ ਚਾਲੂ ਹਨ।" + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "ਟਰੇ ਵਿੱਚ ਭੇਜੋ(_M)" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "ਗੁਣ ਜਾਂ ਰੰਗ ਕੋਡ ਸ਼ਾਮਿਲ" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>ਗੂੜਾ</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>ਹੇਠਾਂ ਰੇਖਾ</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "ਸਧਾਰਨ" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "ਰੰਗ ੦-੭" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "ਰੰਗ ੮-੧੫" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "ਸੈਟਿੰਗ(_S)" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "ਡਿਸਕ ਉੱਤੇ ਲਾਗ(_L)" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "ਸਕਰੋਲ ਰੀ-ਲੋਡ ਕਰੋ(_R)" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "ਜੁਆਇੰਨ/ਛੱਡਣ ਸੁਨੇਹੇ ਓਹਲੇ(_H)" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "ਹੋਰ ਚੇਤਾਵਨੀਆਂ(_E)" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "ਸੁਨੇਹੇ ਉੱਤੇ ਆਵਾਜ਼(_M)" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "ਟਰੇ ਆਈਕਾਨ ਝਪਕਾਓ(_I)" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "ਟਾਸਕ ਬਾਰ ਝਪਕਾਓ(_B)" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "ਵੱਖ ਕਰੋ(_D)" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "ਬੰਦ ਕਰੋ(_C)" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "ਯੂਜ਼ਰ ਲਿਮਟ ਅੰਕ ਹੀ ਹੋ ਸਕਦਾ ਹੈ!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "ਕੋਈ ਬਾਹਰੀ ਸੁਨੇਹਾ ਨਹੀਂ" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "ਵਿਸ਼ਾ ਸੁਰੱਖਿਆ" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "ਸਿਰਫ਼ ਸੱਦਾ" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "ਵਿਚੋਲਾ" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "ਪਾਬੰਦੀ ਲਿਸਟ" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "ਕੀ-ਵਰਡ" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "ਯੂਜ਼ਰ ਲਿਮਟ" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "ਨਵਾਂ ਨਾਂ ਦਿਓ:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "" + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "" + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "" + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "ਅਣਜਾਣ ਹੋਸਟ" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "ਅਣਜਾਣ" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "ਅਸਲੀ ਨਾਂ:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "ਯੂਜ਼ਰ:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "ਦੇਸ਼:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "ਸਰਵਰ:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "%u ਮਿੰਟ ਪਹਿਲਾਂ" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "ਆਖਰੀ ਸੁਨੇਹਾ:" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "ਦੂਰ ਸੁਨੇਹਾ:" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "ਲਿੰਕ ਬਰਾਊਜ਼ਰ ਵਿੱਚ ਖੋਲ੍ਹੋ" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "ਚੁਣਿਆ ਲਿੰਕ ਕਾਪੀ ਕਰੋ" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "ਚੈਨਲ ਜੁਆਇੰਨ ਕਰੋ" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "ਚੈਨਲ ਛੱਡੋ" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "ਚੱਕਰੀ ਚੈਨਲ" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "ਇਸ ਨਾਲ ਤਬਦੀਲ" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "ਨਵਾਂ(_N)" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "ਬਾਹਰ(_Q)" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "ਵੇਖੋ(_V)" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "ਮੇਨੂ ਬਾਰ(_M)" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "ਵਿਸ਼ਾ ਬਾਰ(_T)" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "ਯੂਜ਼ਰ ਬਾਰ(_U)" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "ਮੋਡ ਬਟਨ(_O)" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "ਚੈਨਲ ਸਵਿੱਚਰ(_C)" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "ਟੈਬਾਂ(_T)" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "ਲੜੀ(_r)" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "ਨੈੱਟਵਰਕ ਮੀਟਰ(_N)" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "ਬੰਦ" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "ਗਰਾਫ਼" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "ਸਰਵਰ(_S)" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "ਕੁਨੈਕਸ਼ਨ ਬੰਦ(_D)" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "ਫੇਰ ਕੁਨੈਕਟ ਕਰੋ(_R)" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "ਯੂਜ਼ਰ ਮੇਨੂ(_U)" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "ਸੈਟਿੰਗ(_e)" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "ਮੇਰੀ ਪਸੰਦ(_P)" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "ਵਿੰਡੋ(_W)" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "ਮਾਰਕਰ ਲਾਈਨ ਮੁੜ-ਸੈੱਟ" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "ਟੈਕਸਟ ਸਾਫ਼(_l)" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "ਮੱਦਦ(_H)" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "ਸਮੱਗਰੀ(_C)" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "ਇਸ ਬਾਰੇ(_A)" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "ਅਟੈਚ ਕਰੋ(_A)" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "ਨਾਂ" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "ਆਖਰੀ ਵਾਰ ਵੇਖਿਆ" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "ਆਫਲਾਇਨ" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "ਕਦੇ ਨਹੀਂ" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "%d ਮਿੰਟ ਪਹਿਲਾਂ" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "ਆਨਲਾਇਨ" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਨਾਂ ਦਿਓ:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "ਇਹ ਨੈੱਟਵਰਕਾਂ ਉੱਤੇ ਸੂਚਨਾ ਦਿਓ:" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "ਡਾਈਲਾਗ ਖੋਲ੍ਹੋ" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "ਝਪਕੋ(_B)" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "ਚੈਨਲ ਸੁਨੇਹਾ" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "ਪ੍ਰਾਈਵੇਟ ਸੁਨੇਹਾ" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "ਹਾਈਲਾਈਟ ਕੀਤਾ ਸੁਨੇਹਾ" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "ਹਾਲਤ ਬਦਲੋ(_C)" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "ਦੂਰ(_A)" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "ਵਾਪਸ(_B)" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "ਵਰਜਨ" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "ਵੇਰਵਾ" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "ਲੋਡ ਕਰਨ ਲਈ ਪਲੱਗਇਨ ਤੇ ਸਕ੍ਰਿਪਟ ਚੁਣੋ" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "ਲੋਡ(_L)..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "ਇੰਞ ਸੰਭਾਲੋ..." + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "ਨਵਾਂ ਨੈੱਟਵਰਕ" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "ਕੀ ਅਸਲ ਵਿੱਚ \"%s\" ਨੈਟਵਰਕ ਅਤੇ ਇਸ ਦੇ ਸਰਵਰ ਹਟਾਉਣੇ ਹਨ?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "ਕੁੰਜੀ (ਪਾਸਵਰਡ)" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "ਸੋਧ(_E)" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "ਚੁਣੇ ਸਰਵਰਾਂ ਨਾਲ ਹੀ ਜੁੜੋ" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "ਕੁਨੈਕਸ਼ਨ ਅਸਫਲ ਹੋਣ ਤੇ ਸਰਵਰਾਂ ਵਿੱਚ ਚੱਕਰ ਨਾ ਲਗਾਉ।" + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "ਪਰਾਕਸੀ ਸਰਵਰ ਬਾਏਪਾਸ ਕਰੋ" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "ਇਸ ਨੈਟਵਰਕ ਤੇ ਸਭ ਸਰਵਰਾਂ ਲਈ SSL ਵਰਤੋਂ" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "ਗਲੋਬਲ ਯੂਜ਼ਰ ਜਾਣਕਾਰੀ ਵਰਤੋਂ" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "ਨਾਂ(_N):" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "ਦੂਜੀ ਚੋਣ:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "ਅਸਲੀ ਨਾਂ(_l):" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "ਯੂਜ਼ਰ ਨਾਂ(_U):" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "ਪਾਸਵਰਡ:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "ਕਰੈਕਟਰ ਸੈੱਟ:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "ਯੂਜ਼ਰ ਜਾਣਕਾਰੀ" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "ਤੀਜੀ ਚੋਣ:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "ਨੈੱਟਵਰਕ" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "ਸ਼ੁਰੂ ਵੇਲੇ ਨੈੱਟਵਰਕ ਲਿਸਟ ਨਾ ਵੇਖਾਓ" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "ਸੋਧ(_E)..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "ਲੜੀਬੱਧ(_S)" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "ਕੁਨੈਕਟ ਕਰੋ(_C)" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "ਅਲਬਾਨੀਆ" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "ਅਜਰਬਾਈਜਾਨ" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "ਬੇਲਾਰੂਸ" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "ਬੁਲਗਾਰੀਆ" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "ਈਸਟੋਨੀਆ" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "ਭਾਰਤ" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "ਮਲੇਸ਼ੀਆ" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "ਥਾਈਲੈਂਡ" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "ਵੀਅਤਨਾਮ" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "ਸਧਾਰਨ" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "ਫੋਂਟ:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "ਰੰਗਦਾਰ ਨਾਂ" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "IRC ਤੇ ਹਰ ਵਿਅਕਤੀ ਨੂੰ ਵੱਖਰਾ ਰੰਗ ਦਿਓ" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "ਨਾਂਵਾਂ ਨੂੰ ਸੱਜੇ ਪਾਸੇ ਰੱਖੋ" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "ਮਾਰਕਰ ਲਾਈਨ ਵੇਖੋ" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "ਆਖਰੀ ਪੜ੍ਹੇ ਪਾਠ ਬਾਅਦ ਲਾਲ ਰੰਗ ਦੀ ਰੇਖਾ ਖਿੱਚੋ।" + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "ਬੈਕਗਰਾਊਂਡ ਚਿੱਤਰ:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "ਪਾਰਦਰਸ਼ਤਾ ਸੈਟਿੰਗ" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "" + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "" + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "ਸਪੈਲ ਚੈਕਿੰਗ" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "ਨਾਂ ਪੂਰਤੀ" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "ਨਾਂ ਪੂਰਤੀ ਅਗੇਤਰ:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "ਨਾਂ ਪੂਰਨ ਲੜੀਬੱਧ:" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "" + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "ਨਾ-ਕ੍ਰਮਬੱਧ" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "ਉੱਤੇ" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "ਹੇਠਾਂ" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "ਓਹਲੇ" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "ਯੂਜ਼ਰ ਲਿਸਟ" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "ਯੂਜ਼ਰ ਲਿਸਟ ਵਿੱਚ ਹੋਸਟ ਨਾਂ" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "ਟੈਕਸਟ ਬਕਸਾ ਫੋਂਟ ਤੇ ਰੰਗ ਵਰਤੋਂ" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "ਯੂਜ਼ਰ ਲਿਸਟ ਕ੍ਰਮਬੱਧ:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "ਯੂਜ਼ਰ ਲਿਸਟ ਵੇਖੋ:" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "ਇਸ ਤੋਂ ਛੋਟੇ ਚੈਨਲ ਲਈ:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "ਦੋ ਵਾਰ ਦਬਾਉਣ ਤੇ ਕਾਰਵਾਈ" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "ਵਿੰਡੋ" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "ਟੈਬਾਂ" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "ਹਮੇਸ਼ਾ" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "ਸਿਰਫ਼ ਮੰਗੀਆਂ ਟੈਬਾਂ" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "ਲੜੀ" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "ਸਵਿੱਚਰ ਟਾਈਪ:" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "ਸਰਵਰ ਸੁਨੇਹਿਆਂ ਲਈ ਵੱਖਰੀ ਟੈਬ ਖੋਲ੍ਹੋ" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "ਜਦੋਂ ਪ੍ਰਾਈਵੇਟ ਸੁਨੇਹਾ ਆਵੇ ਤਾਂ ਨਵੀਂ ਟੈਬ ਵਿੱਚ ਖੋਲ੍ਹੋ" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "ਟੈਬਾਂ ਨੂੰ ਅੱਖਰ-ਕ੍ਰਮ ਅਨੁਸਾਰ ਰੱਖੋ " + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "ਛੋਟਾ ਟੈਕਸਟ" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "ਨਵੀਂ ਟੈਬਾਂ ਲਈ ਫੋਕਸ:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "ਚੈਨਲ ਸਵਿੱਚਰ ਵੇਖੋ:" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "ਛੋਟਾ ਟੈਬ ਨਾਂ:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "ਅੱਖਰ" + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "ਟੈਬਾਂ ਜਾਂ ਵਿੰਡੋਜ਼" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "ਚੈਨਲ ਖੋਲ੍ਹੋ:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "ਡਾਈਲਾਗ ਵਿੱਚ ਖੋਲ੍ਹੋ:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "ਸਹੂਲਤਾਂ ਨੂੰ ਖੋਲ੍ਹੋ:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "ਫਾਇਲਾਂ ਅਤੇ ਡਾਇਰੈਕਟਰੀਆਂ" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "ਫਾਇਲਾਂ ਡਾਊਨਲੋਡ ਕਰੋ:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "ਮੁਕੰਮਲ ਫਾਇਲਾਂ ਨੂੰ ਭੇਜੋ:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "ਫਾਇਲ ਨਾਂ ਵਿੱਚ ਨਾਂ ਸੰਭਾਲੋ" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "ਖੁਦ ਹੀ DCC ਵਿੰਡੋਜ਼ ਖੋਲ੍ਹੋ" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "ਭੇਜਣ ਵਿੰਡੋ" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "ਪ੍ਰਾਪਤੀ ਵਿੰਡੋ" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "ਗੱਲਬਾਤ ਵਿੰਡੋ" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "ਇੱਕ ਅੱਪਲੋਡ:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "ਇੱਕ ਸੰਚਾਰ ਲਈ ਵੱਧੋ-ਵੱਧ ਗਤੀ" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "ਇੱਕ ਡਾਊਨਲੋਡ:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "ਸਭ ਅੱਪਲੋਡ ਜੋੜ:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "ਸਭ ਫਾਇਲਾਂ ਲਈ ਵੱਧੋ-ਵੱਧ ਗਤੀ" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "ਸਭ ਡਾਊਨਲੋਡ ਜੋੜ:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "ਚੇਤਾਵਨੀ" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "ਟਰੇ ਆਈਕਾਨ ਝਪਕਾਓ:" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "ਟਾਸਕ ਬਾਰ ਝਪਕਾਓ:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "ਬੀਪ ਸਾਊਂਡ ਦਿਓ:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "ਸਿਸਟਮ ਟਰੇ ਆਈਕਾਨ ਚਾਲੂ" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "" + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "ਹਾਈਲਾਈਟ ਕੀਤੇ ਸੁਨੇਹੇ" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "ਹਾਈਲਾਈਟ ਕਰਨ ਲਈ ਹੋਰ ਸ਼ਬਦ:" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "ਨਾ ਹਾਈਲਾਈਟ ਕਰਨ ਵਾਲੇ ਨਾਂ:" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "ਹਮੇਸ਼ਾ ਹਾਈਲਾਈਟ ਕਰਨ ਵਾਲੇ ਨਾਂ:" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "ਡਿਫਾਲਟ ਸੁਨੇਹੇ" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "ਬਾਹਰ:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "ਚੈਨਲ ਛੱਡਣਾ:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "ਦੂਰ:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "ਦੂਰ" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "ਦੂਰ ਇੱਕ ਵਾਰ ਹੀ ਵੇਖਾਓ" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "ਖੁਦ ਹੀ ਦੂਰ ਨੂੰ ਨਾ-ਮਾਸਕ ਕਰੋ" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "" + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "MODE ਨੂੰ ਕੱਚੇ ਰੂਪ ਵਿੱਚ ਵੇਖਾਓ" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "ਦਾਖਲਾ ਤੇ ਛੱਡਣਾ ਸੁਨੇਹੇ ਓਹਲੇ" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "ਅੰਤਰਾਲ ਬਾਅਦ ਮੁੜ-ਕੁਨੈਕਟ:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "ਲਾਗ ਰੱਖਣਾ" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "ਪਿਛਲੇ ਸ਼ੈਸ਼ਨ ਤੋਂ ਸਕਰੋਲਬੈਕ ਵੇਖਾਓ" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "ਸਕਰੋਲਬੈਕ ਲਾਈਨਾਂ:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "ਗੱਲਾਂਬਾਤਾਂ ਲਈ ਡਿਸਕ ਉੱਤੇ ਲਾਗ ਰੱਖਣਾ ਚਾਲੂ" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "ਲਾਗ ਫਾਇਲ ਨਾਂ:" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Server %c=Channel %n=Network" + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "ਲਾਗ ਵਿੱਚ ਸਮਾਂ ਮੋਹਰ ਸ਼ਾਮਿਲ ਕਰੋ" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "ਲਾਗ ਸਮਾਂ ਮੋਹਰ ਫਾਰਮੈਟ:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URL" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(ਆਯੋਗ)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "ਤੁਹਾਡਾ ਐਡਰੈਸ" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "ਸਬੰਧਿਤ:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "ਕਈ ਐਡਰੈਸਾਂ ਵਾਲਿਆਂ ਲਈ ਹੀ ਫਾਇਦੇਮੰਦ।" + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "IRC ਸਰਵਰ ਤੋਂ ਮੇਰਾ ਐਡਰੈੱਸ ਪ੍ਰਾਪਤ ਕਰੋ" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "DCC IP ਐਡਰੈੱਸ:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "" + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "" + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "ਸਰਵਰ ਸਰਵਰ" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "ਹੋਸਟ ਨਾਂ:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "ਪੋਰਟ:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "ਕਿਸਮ:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "ਯੂਜ਼ਰ ਨਾਂ:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "ਇੱਕ ਤਸਵੀਰ ਫਾਇਲ ਚੁਣੋ" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "ਡਾਊਨਲੋਡ ਫੋਲਡਰ ਚੁਣੋ" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "ਫੋਂਟ ਚੁਣੋ" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "ਝਲਕ..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "ਡਾਟਾ ਫੋਲਡਰ ਖੋਲ੍ਹੋ" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "ਚੋਣ ਰੰਗ" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "ਪਾਠ ਰੰਗ" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "mIRC ਰੰਗ:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "ਲੋਕਲ ਰੰਗ:" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "ਫਾਰਗਰਾਊਂਡ:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "ਬੈਕਗਰਾਊਂਡ:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "ਇੰਟਰਫੇਸ ਰੰਗ" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "ਨਵਾਂ ਡਾਟਾ:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "ਮਾਰਕਰ ਲਾਈਨ:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "ਨਵਾਂ ਸੁਨੇਹਾ:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "ਦੂਰ ਯੂਜ਼ਰ:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "ਹਾਈਲਾਈਟ:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "ਈਵੈਂਟ" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "ਸਾਊਂਡ ਫਾਇਲ" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "ਸਾਊਂਡ ਫਾਇਲ ਚੁਣੋ" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "ਸਾਊਂਡ ਫਾਇਲ:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "ਝਲਕ(_B)..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "ਚਲਾਓ(_P)" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "ਇੰਟਰਫੇਸ" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "ਇੰਪੁੱਟ ਬਕਸਾ" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "ਯੂਜ਼ਰ ਲਿਸਟ" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "ਚੈਨਲ ਸਵਿੱਚਰ" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "ਰੰਗ" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "ਗੱਲਬਾਤ ਜਾਰੀ ਹੈ" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "ਤਕਨੀਕੀ" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "ਨੈੱਟਵਰਕ ਸੈੱਟਅੱਪ" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "ਫਾਇਲ ਟਰਾਂਸਫਰ" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "ਕੈਟਾਗਰੀਆਂ" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "" + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "ਕੁਝ ਅਜਿਹੀਆਂ ਤਬਦੀਲੀਆਂ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ, ਜੋ ਕਿ ਮੁੜ ਚਾਲੂ ਕਰਨ ਉਪਰੰਤ ਹੀ ਲਾਗੂ ਹੋ ਸਕਣਗੀਆਂ।" + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "" + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "ਸਤਰ ਪਾਰਸ ਕਰਨ ਦੌਰਾਨ ਗਲਤੀ" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "ਇਹ ਸੰਕੇਤ ਨੂੰ ਕੇਵਲ %d ਮੁੱਲ ਦਿੱਤੇ ਜਾ ਸਕਦੇ ਹਨ, $%d ਗਲਤ ਹੈ" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "ਟੈਕਸਟ ਫਾਇਲ ਛਾਪੋ" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ ਅੰਕ" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "ਘਟਨਾ ਸੋਧ" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "ਇਥੋਂ ਲੋਡ..." + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "ਸਭ ਦੀ ਜਾਂਚ" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "ਲਿਸਟ ਸਾਫ਼" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "ਚੁਣੇ URL ਦੀ ਕਾਪੀ ਕਰੋ" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "ਕਾਪੀ ਕਰੋ" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "ਲਿਸਟ ਫਾਇਲ `ਚ ਸੰਭਾਲੋ" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d ops, %d ਕੁੱਲ" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "ਇੱਕ irc://server:port/channel URL ਖੋਲ੍ਹੋ" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "" diff --git a/hexchat/po/pl.po b/hexchat/po/pl.po new file mode 100644 index 0000000..5fde04e --- /dev/null +++ b/hexchat/po/pl.po @@ -0,0 +1,6269 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Marcin Szymański <cysioland@gmail.com>, 2014 +# Marcin Szymański <cysioland@gmail.com>, 2014 +# Eustachy_Kapusta <eustachy.kapusta@gmail.com>, 2012 +# Eustachy_Kapusta <eustachy.kapusta@gmail.com>, 2013-2014 +# Hubert Ślósarski <inactive+hsslosars@transifex.com>, 2018 +# Jakub Wasielewski <jakub@wasielewski.info>, 2005 +# Krzysztof Blachnicki <necrokris@gmail.com>, 2013 +# Krzysztof Blachnicki <necrokris@gmail.com>, 2013 +# lipvig <p@ryciuk.com>, 2014 +# Marcin Mikołajczak <me@mkljczk.pl>, 2016 +# Marcin Mikołajczak <me@mkljczk.pl>, 2016 +# Marcin Szymański <cysioland@gmail.com>, 2014 +# Michał Sidor <michcioperz@gmail.com>, 2017 +# Michał Sidor <michcioperz@gmail.com>, 2017 +# lipvig <p@ryciuk.com>, 2014 +# Eustachy_Kapusta <eustachy.kapusta@gmail.com>, 2012 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-05-13 14:45+0000\n" +"Last-Translator: Hubert Ślósarski <inactive+hsslosars@transifex.com>\n" +"Language-Team: Polish (http://www.transifex.com/hexchat/hexchat/language/pl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pl\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "HexChat" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "Klient IRC" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "HexChat jest prostym, lecz dowolnie poszerzalnym klientem IRC. Pozwala na bezpieczne dołączenie do wielu sieci i rozmawianie z użytkownikami prywatnie bądź na kanałach. Można nawet przesyłać pliki." + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "HexChat wspiera takie funkcje, jak: DCC, SASL, serwery proxy, sprawdzanie pisowni, alerty, logi, własne motywy i skrypty w Pythonie/Perlu." + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "Główne okno czatu" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "Rozmawiaj z innymi ludźmi przez internet" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "IM;Chat;" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "hexchat" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "Otwórz tryb bezpieczny" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "Menedżer motywów HexChat" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Jestem zajęty" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Wychodzi" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "{nieustawione}" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Sieć" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<brak>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Kanał" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Czekam" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Aktywne" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Nieudane" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Ukończone" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Połącz" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Przerwane" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "Nie mogę odczytać %s\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Błąd" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s proponuje \"%s\". Czy zgadzasz się?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "Brak aktywnych DCC\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "_Otwórz okno rozmowy" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "_Wyślij plik" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "Informacje o _użytkowniku (WhoIs)" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "_Dodaj do listy znajomych" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "_Ignoruj" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "Akcje o_peratora" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Nadaj status operatora" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Zabierz status operatora" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "Pozwól mówić podczas moderacji" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "Zabroń mówić podczas moderacji" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Wypraszanie/banowanie" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Wyproś" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "Zbanuj" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "Wyproś i zbanuj" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Wyjdź z kanału" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Dołącz do kanału..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "Podaj kanał do dołączenia:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Połączenia szkieletowe" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Serwer pingu" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Ukryj wersję" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Op" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "<papa>" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Podaj powód wyproszenia %s z kanału:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "Rozmowa" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Wyślij" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Czat bezpośredni" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Wyczyść" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "Nie możesz zapisywać %s. Nic z tej sesji nie może być zapisanego." + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* Używanie IRC-a jako root to głupota! Utwórz \nkonto użytkownika, aby logować się z niego.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "TAK" + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "NIE" + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "%s zasypuje Cię pakietami CTCP! Ignoruję %s\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "Zostałeś/aś zasypany/a wiadomościami przez %s, ustawiam gui_autoopen_dialog OFF.\n" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "Nie znaleziono" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s podłączony\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s niepodłączony\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Nie jesteś na żadnym kanale. Użyj polecenia /join #<nazwa_kanalu>\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Brak połączenia z serwerem. Użyj polecenia /server <nazwa_hosta> [<port>]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "Serwer %s już jest dodany do sieci %s.\n" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "Dodano serwer %s do sieci %s.\n" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Już zaznaczony jako nieobecny: %s\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "Już zaznaczony jako obecny.\n" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "Do uruchomienia tego potrzebna jest powłoka /bin/sh!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "Dostępne polecenia:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "Polecenia użytkownika:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "Polecenia wtyczek:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Wpisz /HELP <polecenie> aby uzyskać więcej informacji lub /HELP -l" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Nierozpoznany argument '%s' zignorowany." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "Wyciszanie nie jest wpierane przez serwer." + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "Nie znaleziono danej wtyczki.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "Ta wtyczka odmawia wyładowania.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <nazwa> <akcja>, dodaje przycisk pod listą użytkowników" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "ADDSERVER <NowaSiec> <nowyserver/6667>, dodaje nową siec z nowym serwerem do listy sieci" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <polecenie>, wysyła polecenie do wszystkich kanałów, w których się znajdujesz" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "ALLCHANL <polecenie>, wysyła polecenie do wszystkich kanałów na aktualnym serwerze" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <polecenia>, wysyła polecenie do wszystkich serwerów, z którymi jesteś połączony/a" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "BACK, ustawia status obecności (nie nieobecności)" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <maska> [<rodzaj>], banuje wszystkich pasujących do maski na danym kanale. Jeśli są oni obecni w tym kanale te polecenie nie spowoduje ich wyproszenia (musisz być operatorem kanału)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <zmienna> [<wartość>]" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "CHARSET [<kodowanie>], wyświetl albo ustaw kodowanie dla bieżącegopołączenia" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "CLEAR [ALL|HISTORY]|[-]<ilosc>, czyści aktualną zawartość okna lub historię poleceń" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "" + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <kod|maska>, odszukuje kod kraju, np.: pl = Polska" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <nick> <wiadomość>, wysyła wiadomość CTCP do użytkownika o podanym nicku. Typowe wiadomości to VERSION (wersja) oraz USERINFO (informacje o użytkowniku)" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "CYCLE [<kanał>], wyjście i natychmiastowy powrót do kanału" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <nick> - przyjmuje zaoferowany plik\nDCC SEND [-makszns=#] <nick> [plik] - wysyła plik do kogoś o podanym nicku\nDCC PSEND [-makszns=#] <nick> [plik] - wysyła plik w trybie pasywnym\nDCC LIST - wyświetla listę połączeń bezpośrednich\nDCC CHAT <nick> - oferuje użytkownikowi o podanym nicku czat bezpośredni\nDCC PCHAT <nick> - oferuje użytkownikowi o podanym nicku\n czat bezpośredni w trybie pasywnym\nDCC CLOSE <rodzaj> <nick> <plik> - zamyka określone połączenie bezpośrednie\n przykład:\n/dcc close send jasio plik.zip" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <nick>, zabiera uprawnienia półoperatora użytkownikowi o podanym nicku w aktualnym kanale (musisz być operatorem kanału)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <nazwa>, usuwa przycisk spod listy użytkowników" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <nick>, zabiera uprawnienia operatora użytkownikowi o podanym nicku na aktualnym kanale (musisz być operatorem kanału)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <nick>, zabiera prawo głosu użytkownikowi o podanym nicku na aktualnym kanale (musisz być operatorem kanału)" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, zamknięcie połączenia z serwerem" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "DNS <nick|host|ip>, odszukuje adres IP użytkownika" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <tekst>, wypisuje lokalnie zadany tekst" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <polecenie>, uruchamia polecenie. Jeśli podana jest opcja -o wówczas wynik jest wysyłany do aktualnego kanału, w innym wypadku jest wyświetlany lokalnie" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, wysyła procesowi sygnał SIGCONT" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9], zabija uruchomiony proces w aktualnej sesji. Jeśli podana jest opcja -9, proces otrzymuje sygnał SIGKILL" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, wysyła procesowi sygnał SIGSTOP" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, wysyła dane na standardowe wejście procesu" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "EXPORTCONF, eksportuje ustawienia HexChata" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHHQ, opróżnia aktualną kolejkę wysyłkową serwera" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <host> [<port>], włączenie pośredniczenia przez host, domyślny portto 23" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <nick> [hasło], Pozbywa się martwego nicka" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <nick>, nadaje status półoperatora kanału (musisz być operatorem kanału)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <hasło>, identyfikuje Cię wobec serwera" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <maska> <rodzaje..> <opcje..>\n maska - maska ignorowanego hosta, przykład: *!*@*.tpnet.pl\n rodzaje - zakres ignorowania, jeden rodzaj lub ALL:\n PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n opcje - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <nick> [<kanal>], wysyła zaproszenie do kanału, domyślnie jest to aktualny kanał (musisz być operatorem kanału)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <kanał>, dołączenie do kanału" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "KICK <nick> [powód], wyprasza użytkownika z aktualnego kanału (musisz być operatorem kanału)" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "KICKBAN <nick> [powód], banuje a następnie wyprasza użytkownika z aktualnego kanału (musisz być operatorem kanału)" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, wymuszenie sprawdzenia opóźnienia w komunikacji z serwerem" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "LASTLOG [-h] [-m] [-r] [--] <ciąg>, szuka danego ciągu w buforze\n Użyj -h aby podświetlić znaleziony/ne ciąg/i\n Użyj -m aby wielkość znaków miała znaczenie\n Użyj -r gdy ciąg jest Wyrażeniem Regularnym\tUżyj -- (podwójna kreska) aby zakończyć opcje gdy szukasz, na przykład, ciąg '-r'" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <plik>, załadowanie wtyczki lub skryptu" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, masowe odebranie statusu półoperatora wszystkim na aktualnym kanale (musisz być operatorem kanału)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, masowe odebranie statusu operatora wszystkim na aktualnym kanale (musisz być operatorem kanału)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <akcja>, wysyła akcję do aktualnego kanału (akcje pisane są 3. osobie, tak jak /me skacze)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, wyrzuca wszystkich oprócz ciebie w bieżącym kanale (musisz być operatorem kanału)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, daje wszystkim użytkownikom status operatora na bieżącym kanale (musisz być operatorem kanału)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "MSG <nick> <wiadomośc>, wysyła prywatną wiadomość, użyj \".\" aby wysąć wiadomośc do ostatnio uzytego nicka albo użyj \"=\" aby rozpocząć dcc chat" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "NAMES, [kanał] wyświetla listę nicków na bieżącym kanale" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <nick> <wiadomość>, wysyła ogłoszenie CTCP" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <nazwa hostu> [<port>]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <nick>, zmiana nicka" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "NOTICE <nick/kanał> <wiadomość>, wysyła ogłoszenie" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [-n network1[,network2,...]] [<nick>], wyświetla listę powiadomień lub dodaje kogoś do niej" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <nick>, daje nicku status operatora kanału (musisz być operatorem kanału)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<kanal>] [<powód>], opuszcza kanał, domyślnie obecny" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <nick | kanal>, wysyła ping do nicka lub kanału za pomocą CTCP" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "QUERY [-nofocus] <nick> [wiadomość], otwiera nowe okno rozmowy" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "QUITE <maska> [<rodzaj>], wycisza wszystkich pasujących do maski w danym pokoju - jeśli jest to wspierane przez serwer." + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<powód>], odłącza się od obecnego serwera" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <tekst>, wysyła surowy tekst do serwera" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<host>] [<port>] [<hasło>], można użyć jako /RECONNECT aby ponownie połączyć się do bieżącego serwera lub /RECONNECT ALL aby ponownie połączyć się do wszystkich otwartych serwerów" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<host>] [<port>] [<hasło>], można użyć jako /RECONNECT aby ponownie połączyć się do bieżącego serwera lub /RECONNECT ALL aby ponownie połączyć się do wszystkich otwartych serwerów" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "RECV <tekst>, wyślij surowe dane do HexChata, tak jakby zostały odebrane od serwera IRC" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "RELOAD <nazwa>, przeładowuje plugin lub skrypt" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <tekst>, wysyła tekst do obiektu w bieżącym oknie" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <nick> [<plik>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <host> <port> <kanal>, łączy i dołącza do kanału" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <host> <port> <kanal>, łączy i dołącza do kanału" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "SERVER [-ssl] <host> [<port>] [<hasło>], łączy Cię z serwerem, domyślny port to 6667 dla zwykłych połączeń, 6697 dla połączeń ssl" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <host> [<port>] [<hasło>], łączy się z serwerem, domyślny port to 6667" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-off|-on] [-quiet] <zmienna> [<wartość>]" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "SETCURSOR [-|+]<pozycja>, przestawia kursor w polu wprowadzania" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "SETTAB <nowa nazwa>, zmienia nazwę zakładki, nadal obowiązuje limit z tab_trunc" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "SETTEXT <nowy tekst>, zmienia tekst w polu wprowadzania" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<temat>], określa temat jeśli jest podany, inaczej pokazuje bieżący temat" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "\nTRAY -f <limit czasu> <plik1> [<plik2>] Miga w zasobniku pomiędzy dwoma ikonami.\nTRAY -f <nazwa pliku> Ustawia zasobnik do ustalonej ikony.\nTRAY -i <numer> Miga w zasobniku wewnętrzną ikoną.\nTRAY -t <tekst> Ustawia tooltip zasobnika.\nTRAY -b <tytuł> <tekst> Ustawia balon zasobnika." + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <maska> [<maska>...], odbanuje podane maski." + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <maska> [QUIET]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <nazwa>, usuwa wtyczkę lub skrypt" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "UNQUIET <maska> [<maska>...], usuwa wyciszenie - jeśli jest to wspierane przez serwer." + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, otwiera URL w twojej przeglądarce" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "USELECT [-a] [-s] <nick1> <nick2> itp, podświetla nick(i) w liście użytkowników kanału" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <nick>, przyznaje komuś prawo głosu (musisz być operatorem kanału)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <wiadomość>, pisze wiadomość do wszystkich kanałów" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <wiadomość>, wysyła wiadomość do wszystkich operatorów w bieżącym kanale" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "Polecenie Użytkownika dla: %s\n" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "Wykorzystanie: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nNie ma pomocy do tego polecenia.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "Polecenie nieznane.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "Złe argumenty przekazane temu poleceniu.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "Zbyt wiele rekursywnych poleceń użytkownika, przerywam." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "Brak symbolu hexchat_plugin_init; czy to na pewno plugin HexChata" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Czy jesteś pewien/pewna, że ten serwer i/lub port obsługuje SSL?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "Nie można rozwiązać nazwy hosta %s\nSprawdź twoje ustawienia IP!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "Nieudane połączenie z serwerem pośredniczącym.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Skocz do następnego serwera w %s...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "Uwaga: nieznane kodowanie \"%s\". Nie będzie stosowanej konwersji dla sieci %s." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "%C18*%O$t%C18$1%O dodany do listy powiadomień." + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "%C22*%O$t%C22$1%O: %C18$2%O na %C24$4%O przez %C26$3%O" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "%C22*%O$tNie można dołączyć %C22$1 %O(%C20Jesteś zbanowany%O)." + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "%C29*%O$tPotwierdzone funkcje: %C29$2%O" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "%C23*%O$tWspierane funkcje: %C29$2%O" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "%C23*%O$tŻądane funkcje: %C29$1%O" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "%C24*%O$t%C28$1%O jest znany teraz jako %C18$2%O" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O ustawia bana na %C18$2%O" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "%C22*%O$tKanał %C22$1%O został założony %C24$2%O" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O usuwa status półoperatora kanału %C18$2%O" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O usuwa status operatora kanału %C18$2%O" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O usuwa głos %C18$2%O" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%C ustawił/a wyjątek w %C18$2%O" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O daje status półoperatora kanału dla %C18$2%O" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%C ustawia wyjątek na %C18$2%O" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%UPokój Użyt. Temat" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "%C22*%O$t%C26$1%O ustawia status %C24$2$3%O na %C22$4%O" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "%C22*%O$tKanał %C22$1%O tryby: %C24$2" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O daje status operatora kanału dla %C18$2%O" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O ustawia wyciszenie na %C18$2%O" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O usuwa wyjątek %C18$2%O" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O usuwa wyjątek dla %C18$2%O" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "%C22*%O$t%C26$1%O usuwa hasło kanału" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "%C22*%O$t%C26$1%O usuwa limit użytkowników" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O ustawia hasło kanału na %C24$2%O" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O ustawia limit na kanale do %C24$2%O" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O usuwa bana na %C18$2%O" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O usuwa wyciszenie dla %C18$2%O" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "%C22*%O$tURL %C22$1%O kanału: %C24$2" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O daje głos dla %C18$2%O" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "%C23*%O$tPołączono. Logowanie." + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "%C23*%O$tŁączenie z %C29$1%C (%C23$2:$3%O)" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "%C20*%O$tPołączenie nieudane (%C20$1%O)" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "%C24*%O$tOtrzymano CTCP %C24$1%C od %C18$2%O" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "%C24*%C$tOtrzymano CTCP %C24$1%C od %C18$2%C (do %C22$3%C)%O" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "%C24*%O$tOtrzymano CTCP Sound %C24$1%C od %C18$2%O" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "%C24*%O$tOtrzymano CTCP Sound %C24$1%C od %C18$2%O (do %C22$3%O)" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "%C23*%O$tPrzerwano czat bezpośredni z %C18$1%O." + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "%C24*%O$tPołączenie czatu bezpośredniego z %C18$1%C %C30[%C24$2%C30]%O ustanowione" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "%C20*%O$tUtracono (%C20$4%O) połączenie czatu bezpośredniego z %C18$1%O" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "%C24*%O$tOtrzymano ofertę czatu bezpośredniego od %C18$1%O" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "%C24*%O$tOferowanie czatu bezpośredniego dla %C18$1%O" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "%C24*%O$tJuż oferujesz czat dla %C18$1%O" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "%C20*%O$tPróba czatu bezpośredniego $1 do %C18$2%O zawiodła (%C20$3%O)" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "%C23*%O$tOtrzymano '%C23$1%C' od %C18$2%O" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "%C20*%O$tOtrzymano uszkodzone żądanie czatu bezpośredniego od %C18$1%O.$a010%C23*%O$tZawartość pakietu: %C23$2%O" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "%C24*%O$tOferowanie '%C24$1%O' dla %C18$2%O" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "%C23*%O$tNie ma takiego żądania czatu bezpośredniego." + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "%C23*%O$tPrzerwano DCC RECV '%C23$2%O' do %C18$1%O" + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "%C24*%O$tUkończono DCC RECV '%C23$1%O' od %C18$3%O %C30[%C24$4%O cps%C30]%O" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$tUstanowiono DCC RECV do %C18$1 %C30[%O%C24$2%C30]%O" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "%C20*%O$tDCC RECV '%C23$1%O' od %C18$3%O nie powiodło się (%C20$4%O) " + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "%C20*%O$tDCC RECV: Nie można otworzyć '%C23$1%C' do zapisu (%C20$2%O) " + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "%C23*%O$tPlik '%C24$1%C' już istnieje, zostanie zapisywany jako '%C23$2%O'" + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "%C24*%O$t%C18$1%C zażądał wznowienia '%C23$2%C' od %C24$3%O." + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "%C23*%O$tPrzerwano DCC SEND '%C23$2%C' do %C18$1%O" + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "%C24*%O$tUkończono DCC SEND '%C23$1%C' do %C18$2%C %C30[%C24$3%C cps%C30]%O" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$tUstanowiono połączenie DCC SEND do %C18$1 %C30[%O%C24$2%C30]%O" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "%C20*%O$tDCCSEND '%C23$1%C' do %C18$2%C nie powiodło się (%C20$3%O)" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "%C24*%O$t%C18$1%C oferuje '%C23$2%C' (%C24$3%O bajtów)" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "%C20*%O$tDCC $1 '%C23$2%C' do %C18$3%O wstrzymane, przerywanie." + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "%C20*%O$tDCC $1 '%C23$2%C' do %C18$3%O przekroczyło limit czasu żadania, przerywanie." + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "%C24*%O$t%C18$1%O usunięto z listy powiadomień." + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "%C20*%O$tRozłączono (%C20$1%O)" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "%C24*%O$tWykryto Twoje IP: %C30[%C24$1%C30]%O" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "%O%C18$1%O dodano do listy ignorowanych." + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "%OZmieniono %C18$1%O w liście ignorowanych." + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "%O%C18$1%O usunięto z listy ignorowanych." + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "%OLista ignorowanych jest pusta." + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "%C20*%O$tNie można dołączyć do %C22$1%C (%C20Kanał jest tylko dla zaproszonych%O)" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "%C24*%O$tZostałeś/aś zaproszony/na do %C22$1%O przez %C18$2%O (%C29$3%O)" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "%C23*$t$1 ($3%C23) dołączył/a" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "%C20*%O$tNie można dołączyć do %C22$1%C (%C20Hasło jest wymagane%O)" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "%C22*%O$t%C26$1%C wyrzucił/ła %C18$2%C z %C22$3%C (%C24$4%O)" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "%C19*%O$t%C19Zostałes usunięty przez %C26$1%C (%C20$2%O)" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "%C29*%O$t%C29MOTD Pominiete%O" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "%C23*%O$t%C28$1%C jest obecnie używany. Próbuję ponownie z %C18$2%O..." + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "%C23*%O$t%C28$1%C jest błędny. PRóbuje ponownie z %C18$2%O..." + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "%C20*%O$tNick jest błędny albo w uzyciu. Użyj /NICK aby wybrać inny." + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "%C20*%O$tNie ma takiego DCC." + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "%C23*%O$tŻaden taki proces nie jest aktualnie uruchomiony" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "%C23*%O$tPowiadomienie: %C18$1%C jest nieobecny (%C24$2%O)" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "%C23*%O$tPowiadomienie: %C18$1%C wrócił/a" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tLista powiadomień jest pusta." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "%C23*%O$t%C23$1%O użytkowników w liscie powiadomień." + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "%C23*%O$tPowiadomienie: %C18$1%C jest offline (%C29$3%O)" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "%C23*%O$tPowiadomienie: %C18$1%C jest online (%C29$3%O)" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "%C24*$t$1 ($2%C24) wyszedł/a" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "%C24*$t$1 ($2%C24) wyszedł/a ($4)" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "%C24*%O$tOdpowiedź ping od %C18$1%C: %C24$2%O sekund" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "%C20*%O$tBrak odpowiedzi PING przez %C24$1%O sekund, rozłączanie." + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "%C24*%O$tProces jest aktualnie uruchomiony" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "%C24*$t$1 rozłączył/a się ($2)" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "%C24*%O$t%C26$1%C ustawia tryb %C30[%C24$2%C30]%O" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "%O-%C29$1/Wallops%O-$t$2" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "%C24*%O$tSprawdzanie adresu IP dla %C18$1%O..." + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "%C23*%O$tUwierzytelnianie przez SASL jako %C18$1%O (%C24$2%O)" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "%C29*%O$tPołączono." + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "%C29*%O$tSprawdzanie %C29$1%O" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "%C23*%O$tPrzerwano poprzednią próbe połączenia (%C24$1%O)" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "%C22*%O$tTemat dla %C22$1%C to: $2%O" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "%C22*%O$t%C26$1%C zmienił temat na: $2%O" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "%C22*%O$tTemat %C22$1%C ustawiony przez %C26$2%C (%C24$3%O)" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C20*%O$tNieznany host. Może źle go napisałeś/aś?" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "%C20*%O$tNie można dołączyć do %C22$1%C (%C20Osiągnięto limit użytkowników%O)" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "%C22*%O$tUżytkowników na %C22$1%C: %C24$2%O" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%C jest nieobecny %C30(%C23$2%O%C30)%O" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "%C23*%O$t%C28[%C18$1%C28] %OKoniec listy WHOIS." + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, połaczono: %C23$3%O" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O Prawdziwy Host: %C23$2%O, Prawdziwe IP: %C30[%C23$3%C30]%O" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "%C19*%O$tRozmawiasz na %C22$2%O" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "%C19*%O$tZostałeś/aś wyrzucony/na z %C22$2%C przez %C26$3%O (%C20$4%O)" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "%C19*%O$tOpuściłeś/aś kanał %C22$3%O" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "%C19*%O$tOpuściłeś/aś kanał %C22$3%C (%C24$4%O)" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "%C20*%O$tZostałeś/aś zaproszona %C18$1%O do %C22$2%O (%C24$3%O)" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "%C20*%O$tJesteś teraz znany/na jako %C18$2%O" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "Załadowany dziennik z" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** ZAKOŃCZ LOGOWANIE O %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** ZACZNIJ LOGOWANIE O %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "* Nie można otworzyć pliku z logiem do zapisu. Sprawdź\nuprawnienia dla %s" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "Wiadomość z lewej" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "Wiadomość z prawej" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "Adres IP" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Użytkownik" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "Nick wchodzącej osoby" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "Zostaje połączony kanał" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "Host" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "Konto osoby" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Nick" + +#: src/common/text.c:980 +msgid "The action" +msgstr "Akcja" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "Znak trybu" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "Rozpoznany tekst" + +#: src/common/text.c:987 +msgid "The text" +msgstr "Tekst" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "Wiadomość" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Nazwa Serwera" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "Potwierdzono funkcje" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "Funkcje serwera" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "Żądane funkcje" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Stary nick" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Nowy nick" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "Nick osoby, która zmieniła temat" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Temat rozmowy" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "Nick wypraszającego" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "Wypraszana osoba" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "Kanał" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "Powód" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "Nick osoby wychodzącej" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "Czas" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "Twórca" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Nick" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Powód" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Host" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "Kto jest z" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "Czas w postaci x.x (zobacz poniżej)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "Kanał o który chodzi" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "Dzwięk" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "Nick osoby" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "Żądanie CTCP" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "Nick osoby, która ustawiła hasło dostępu" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "Hasło" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "Nick osoby, która ustawiła limit" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "Limit" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "Nick osoby, która dała prawa operatora" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "Nick osoby, która otrzymała prawa operatora" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "Nick osoby, która otrzymała prawa półoperatora" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "Nick osoby, która dała prawa półoperatora" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "Nick osoby, która miała prawo głosu" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "Nick osoby, której dano prawo głosu" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "Nick banującej osoby" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "Maska bana" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "Nick osoby, która użyła wyciszenia" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "Maska wyciszenia" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "Nick, który ustawił hasło" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "Nick, który ustawił limit" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "Nick osoby, której zabrano prawa operatora" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Nick osoby, której zabrano prawa półoperatora" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "Nick osoby, której zabrano prawo głosu" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "Nick osoby, która ustawiła wyjątek" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "Maska wyjątku" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "Nick osoby, która usunęła wyjątek" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "Nick osoby, która wysłała zaproszenie" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "Maska zaproszenia" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "Nick osoby, która usunęła zaproszenie" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "Nick osoby, która ustawiła tryb" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "Znak trybu (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "Litera trybu" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "Kanał który będzie ustawiony" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Personalia" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Członkostwo kanału/\"jest operatorem IRC\"" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Informacje o serwerze" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Czas nieaktywności" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Data wejścia" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Powód nieobecności" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Wiadomość" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Konto" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "Prawdziwy user@host" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "Prawdziwy adres IP" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Nazwa kanału" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "Metoda" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "Czyste numeryczne albo identyfikator" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Tekst" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Nick osoby wysyłającej zaproszenie" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Użytkownicy" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "Używany nick" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Próbowany nick" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Port" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "Opcje" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "Adres URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "Rodzaj DCC" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Nazwa pliku" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Docelowa nazwa pliku" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "Ścieżka" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Wysłane" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Rozmiar" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "String DCC" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "Powód nieobecności" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "Liczba pozycji powiadamiających" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Stara nazwa pliku" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Nowa nazwa pliku" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Odbiorca" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Maska hosta" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Nazwa hosta" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "Pakiet" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "Sekundy" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "Nick zaproszonej osoby" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Maska bana" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "Kto ustawił bana" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Czas bana" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "Nie można odczytać pliku dźwiękowego:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "Zdalny host zamknął połączenie" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "Odmowa połączenia" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "Brak drogi do hosta" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Połączenie wygasło" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "Nie można przypisać tego adresu" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "Połączenie zerwane przez drugą stronę" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "Wyspa Wniebowstąpienia" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Andora" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Zjednoczone Emiraty Arabskie" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "Obszary związane z lotnictwem" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Afganistan" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Antigua i Barbuda" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Albania" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Armenia" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Antyle Holenderskie" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Antarktyka" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Argentyna" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "Odwrotny DNS" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Samoa Amerykańskie" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "Region Azjii i Pacyfiku" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Austria" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Australia" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "Wyspy Alandzkie" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Azerbejdżan" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Bośnia i Hercegowina" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Bangladesz" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Belgia" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Bułgaria" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Bahrajn" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "Przedsiębiorstwa" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Bermudy" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Brunei Darussalam" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Boliwia" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Brazylia" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Bahamy" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Bhutan" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Wyspa Bouveta" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Białoruś" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Kanada" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "Katalonia" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Wyspy Kokosowe" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "Demokratyczna Republika Kongo" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "Republika Środkowoafrykańska" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Kongo" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "Szwajcaria" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "Wybrzeże Kości Słoniowej" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Wyspy Kuka" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Czile" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Kamerun" + +#: src/common/util.c:738 +msgid "China" +msgstr "Chiny" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Kolumbia" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Domena komercyjna" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "Spółdzielnie" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Kostaryka" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "Serbia i Czarnogóra" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Kuba" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Republika Zielonego Przylądka" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Wyspa Wielkanocna" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Cypr" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "Czechy" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "Niemcy Zachodnie" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Niemcy" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Dżibuti" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Dania" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Dominika" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "Republika Dominikany" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Algieria" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Ekwador" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Instytucja Naukowa" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Estonia" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Egipt" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Zachodnia Sahara" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Erytrea" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "Hiszpania" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Etiopia" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "Unia Europejska" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Finlandia" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Fidżi" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Falklandy" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Mikronezja" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Wyspy Owcze" + +#: src/common/util.c:770 +msgid "France" +msgstr "Francja" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Wielka Brytania" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Gruzja" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Gujana Francuska" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "Brytyjskie Wyspy Kanału" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Ghana" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Grenlandia" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Gwinea" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Domena Rządowa" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Gwadelupa" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Gwinea Równikowa" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Grecja" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Georgia Południowa i Sandwich Południowy" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Gwatemala" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Gwinea Bissau" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Gujana" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Wyspy Heard i McDonalda" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Chorwacja" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Węgry" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Indonezia" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Irlandia" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Izrael" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "Wyspa Man" + +#: src/common/util.c:801 +msgid "India" +msgstr "Indie" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "Informacyjne" + +#: src/common/util.c:803 +msgid "International" +msgstr "Międzynarodowe" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Brytyjskie Terytorium Oceanu Indyjskiego" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Irak" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "Iran" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Islandia" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Włochy" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Jamajka" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Jordania" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "Korporacje" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Japonia" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Kenia" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Kirgistan" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Kambodża" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Komory" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "Saint Kitts i Nevis" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Korea Północna" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Korea Południowa" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Kuwejt" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Kajmany (wyspy)" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Kazachstan" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Liban" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Saint Lucia" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Liberia" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Litwa" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Luksemburg" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Łotwa" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Libia" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Maroko" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Monako" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Mołdawia" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "Czarnogóra" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "Medycyna Stanów Zjednoczonych" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Madagaskar" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Wyspy Marshalla" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Domena wojskowa" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Macedonia" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Mongolia" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Makau" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "Urządzenia Mobilne" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Mariany Północne" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Martynika" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Mauretania" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Montserrat (wyspa)" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Mauritius" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "Muzea" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Malediwy" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "Meksyk" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Malezia" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Mozambik" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Namibia" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "Nazwy jednostek" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Nowa Kaledonia" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Sieć Internic" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Norfolk" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Nigeria" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Nikaragua" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Holandia" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Norwegia" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "Nowa Zelandia" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "Organizacja Internic non-profit" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Polinezja Francuska" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Papua-Nowa Gwinea" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Filipiny" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Polska" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "Saint-Pierre i Miquelon" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Portoryko" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "Branża" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "Terytorium Palestyńskie" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Portugalia" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Paragwaj" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Katar" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Reunion" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Rumunia" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "ARPAnet starej szkoły" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "Serbia" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Rosja" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Rwanda" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Arabia Saudyjska" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Wyspy Salomona" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Seszele" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Sudan" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Szwecja" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Singapur" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "Święta Helena" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Słowenia" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Wyspy Svalbard i Jana Mayena" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "Słowacja" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Somalia" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Surinam" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "Południowy Sudan" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "Wyspy Świętego Tomasza i Książęca" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Były ZSRR" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "Salwador" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Syria" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Suazi" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Wyspy Turks i Caicos" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Czad" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "Usługi Telekomunikacyjne" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "Francuskie Terytoria Południowe" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Tajlandia" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Tadżykistan" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Timor Wschodni" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Tunezia" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Turcja" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "Podróże i Turystyka" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Trynidad i Tobago" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Tanzania" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Ukraina" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Wielka Brytania" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "Chameryka" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Urugwaj" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Uzbekistan" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Watykan" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "Saint Vincent i Grenadyny" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Wenezuela" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "Brytyjskie Wyspy Dziewicze" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "Wyspy Dziewicze Stanów Zjednoczonych" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Wietnam" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "Wyspy Wallis i Futuna" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "Branża dla dorosłych" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Jemen" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Majotta" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Jugosławia" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Afryka Południowa" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Zambia" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "Nie można połączyć się z magistralą sesji" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "Nie można zakończyć NazwęMaWłaściciel" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "Nie można zakończyć polecenia" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "zdalny dostęp" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "wtyczka do zdalnego dostępu za pomocą DBUS" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Nie można połączyć się z busem sesji: %s\n" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Nie można nabyć %s: %s\n" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Tablica znaków" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "Bany" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "Wyjątki" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "Wyjątek" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "Zaproszenia" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Zaproś" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "Wyciszeni" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "Wyciszenia" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "Maska kopiowania" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "%s na %s przez %s" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "Wpis kopiowania" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "Połącz ponownie" + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "Musisz zaznaczyć jakieś bany." + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "Czy jesteś pewnien, że chcesz usunać wszystkie rzeczy z listy w %s?" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "Typy" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Maska" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "Od" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Data" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Możesz otworzyć okno listy banów tylko wtedy gdy znajdujesz się na karcie kanału." + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Usuń" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Skróć" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Odśwież" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Wyświetlanych %d/%d użytkowników na %d/%d kanałach." + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Wybierz nazwę pliku wyjściowego" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "_Dołącz do kanału" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "_Kopiuj nazwę kanału" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "Kopiuj tekst _tematu" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "_Szukaj" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "_Lista pobierania" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "Zapisz _listę..." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "Pokaż tylko:" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "kanały z" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "do" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "użytkownicy." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "Zobacz w:" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Nazwa kanału" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "Typ wyszukiwania:" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "Proste wyszukiwanie" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "Dopasowanie do wzorca (maski)" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "Wyrażenie regularne" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Szukaj:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Wyślij plik do %s" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "Ten plik nie może być wznawiany." + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "Nie można uzyskać dostępu do pliku: %s\n%s.\nWznawianie nie jest możliwe." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "Plik w katalogu pobierania jest większy niż zaoferowany. Wznawianie nie jest możliwe." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "Nie można wznowić tego samego pliku od dwóch osób." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Status" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Plik" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "Pozostało" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Obydwa" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "Wysyłania" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "Pobieraj pliki do:" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "Informacje o tobie" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "Plik:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "Adres IP:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Przerwij" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Przyjmij" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Wznów" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "Otwórz folder..." + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Odebrane" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Wysłane" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "Początek" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "Dodaj" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Usuń" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Anuluj" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Zapisz" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "Nie łącz automatycznie z serwerem" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "Użyj innego katalogu konfiguracyjnego" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "Nie ładuj automatycznie żadnych wtyczek" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "Wyswietl folder z automatycznie ładowanymi pluginami/skryptami" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "Pokaż katalog ustawień użytkownika" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "Otwórz adres irc://server:port/kanał?klucz URL" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "Uruchom polecenie:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "Otwórz link albo uruchom komendę w otwartym HexChatcie" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Rozpocznij zminimalizowanie. Poziom 0=normalny 1=minimalizowany 2=w zasobniku" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "poziom" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "Pokaż informacje o wersji" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "Nie można otworzyć czcionki:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "Bufor szukania jest pusty.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d bajtów" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Kolejka sieci wysłania: %d bajtów" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "Polecenie Run Command uruchamia dane w Dane 1 tak jakby były wpisane w linii poleceń, w kolejności wciśniętych klawiszy. Tak więc mogą zawierać one tekst (który zostanie wysłany do kanału/osoby), polecenia lub polecenia użytkownika\\n\n oddziela polecenia, tak że można uruchomić kilka poleceń. Jeśli potrzebujesz \\ w tekście, wpisz \\\\" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "Polecenie Change Page przełącza pomiędzy stronami w notatniku. Ustaw w Dane 1 stronę do której chcesz przełączyć. Jeśli podane jest coś w Dane 2 przełącza to w stosunku do aktualnej pozycji. Ustaw Data 1 na auto aby przełączyć się do strony z aktywnością i ważnymi wydarzeniami (pierwsze są okienka rozmowy, później kanały z podświetleniami, kanały z rozmowami, kanały z innymi danymi)" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "Polecenie Insert in Buffer wstawia zawartość \"Dane 1\" do miejsca wciśnięta kolejności klawiszy przy pozycji kursora" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "Polecenie Scroll Page przewija tekst widżetu o jedną stronę w górę lub w dół. Możliwe wartości dla \"Dane 1\": Top, Bottom, Up, Down, +1 lub -1." + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "Polecenie Set Buffer ustawia wpis gdzie została podana kolejność klawiszy do zawartości \"Dane 1\"" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "Polecenie Last Command ustawia wpis zawierający ostatnie polecenie - tak samo jak naciśnięcie w górę w shellu" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "Polecenie Next Command ustawia wpis zawierający następne polecenie - tak samo jak naciśnięcie w dół w shellu" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "To polecenie zmienia tekst w wpisie aby uzupełnić niekompletny nicku lub polecenie. Jeśli podane są \"Dane 1\" dwukrotny tab wybiera ostatni nick, a nie następny" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "To polecenie przewija w górę i w dół, poprzez listę nicków. Jeśli podane są \"Dane 1\" wszystko przewija w górę, inaczej w dół" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "To polecenie sprawdza ostatnie wpisane słowo w liście zastąpień a następnie wymienia je, jeżeli znajdzie zgodę" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "To polecenie przenosi bieżącą kartę o jedną pozycję w lewo" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "To polecenie przenosi bieżącą kartę o jedną pozycję w prawo" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "To polecenie przenosi bieżącą grupę kart o jedną pozycję w lewo" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "To polecenie przenosi bieżącą grupę kart o jedną pozycję w prawo" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "Wstaw linię wejściową do historii, ale nie wysyłaj do serwera" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "Wystąpił błąd podczas ładowania konfiguracji klawiszy" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "Wybierz wiersz by uzyskać informacje o akcji" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "Nie można zapisać do tego pliku." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "Nie może odczytać tego pliku." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "Ta maska już istnieje." + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Prywatne" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Ogłoszenia" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "Nie ignoruj" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "Czy jesteś pewien, że chcesz wyczyścić listę ignorowanych?" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "Podaj maskę którą zignorować:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Statystyki zignorowanych:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Kanał:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Prywatne:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Ogłoszenia:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Zaproszenia:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "Dodaj..." + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "Nazwa kanału jest za krótka, spróbuj ponownie." + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "Połączenie z %s zakończone." + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "Co chcesz następnie zrobić?" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "_Nic, dołączę do kanału później." + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "We_jdź do Kanału:" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Jeśli znasz nazwę kanału, do którego chcesz dołączyć, wpisz ją tutaj." + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "" + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "_Zawsze pokazuj to okno rozmowy po podłączeniu." + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "Rozmowa z" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Temat rozmowy kanału %s to: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "Brak tematu rozmowy" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "Ten serwer ma wciąż %d otwartych kanałów lub rozmów. Zamknąć je wszystkie?" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "Wyłączyć HexChata?" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "Nie pytaj następnym razem." + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Jesteś połączony z %i sieciami IRC." + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "Czy na pewno chcesz wyjść?" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "Niektóre transfery plików są nadal aktywne." + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "_Minimalizuj do zasobnika" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "Wstaw atrybut lub kod koloru" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>Pogrubione</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>Podkreślone</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "<>Kursywa</i>" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "Normalny" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "Kolory 0-7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "Kolory 8-15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "_Ustawienia" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "_Loguj na dysku" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "_Wczytaj ponowne przewijanie w tył" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "Usuń _kolory" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "_Ukryj wiadomości dołączania/opuszczania" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "_Dodatkowe powiadomienia" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "Pojedynczy dzwonek gdy przyjdzie _wiadomość" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "Migaj _ikoną w zasobniku" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "Migaj _paskiem zadań" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "O_dczep" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "_Zamknij" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "Limit użytkowników podaj w formie liczby!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "Filtruj kolory" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "Blokada wiadomości z zewnątrz" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "Blokada zmiany tematu" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "Wymagane zaproszenie" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "Moderowany" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "Lista banów" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Hasło" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "Limit użytkowników" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Podaj nowy nick:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "Nic nie znaleziono." + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "Szukanie zakończone lub niczego nie znaleziono." + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "_Podświetl wszystkie" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "Podświetl wszystkie wystąpienia oraz podkreśl aktualne wystąpenie." + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "_Rozróżniaj wielkość liter" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "Szukanie z uwzgędnieniem wielkości znaków." + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "Wy_rażenie regularne" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "Używaj wyrażeń regularnych." + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Nieznany host" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "Nieznane konto" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Nieznany" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Personalia:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "Użytkownik:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "Konto:" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "Kraj:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "Serwer:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "%u minut temu" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "Ost. Wiad.:" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "Usprawiedliwienie:" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "%d wybranych nicków." + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "Pasek menu jest teraz ukryty. Możesz przywrócić go ponownie, naciskając klawisz Control+F9 lub klikając prawym przyciskiem myszy w pustej części obszaru tekstu głównego." + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "Otwórz link w przeglądarce" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "Kopiuj zaznaczony link" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Wejdź na kanał" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "Wyjdź z kanału" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "Wyjdź i wejdź spowrotem do kanału" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "_Autodołączanie" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "Kanały do automatycznego dołączenia" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "_Autopołączenie" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "Linia odkreślająca jest wyłączona." + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "Linia odkreślająca nie została ustawiona." + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "Linia odkreślająca została ręcznie zresetowana." + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "Linia odkreślająca została zresetowana, ponieważ przekroczono rozmiar " + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "Linia odkreślająca została zresetowana za pomocą komendy CLEAR." + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "Stan linii odkreślającej jest nieznany." + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "został skompilowany bez wsparcia dla wtyczek." + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "Komendy użytkownika - Kody specjalne:\n\n%c = bieżący kanał\n%e = nazwa bieżącej sieci\n%m = informacje o maszynie\n%n = Twój nick\n%t = godzina/data\n%v = wersja HexChata\n%2 = 2 słowo\n%3 = 3 słowo\n&2 = 2 słowo do końca linii\n&3 = 3 słowo do końca linii\n\nnp.:\n/cmd jan czesc\n\n&2 było by \"jan\"\n&3 było by \"jan czesc\"." + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "Przyciski użytkownika - Specjalne kody:\n\n%a = wszystkie wybrane nicki\n%c = bieżący kanał\n%e = bieżąca nazwa sieci\n%h = wybrana nazwa hosta nicku\n%m = informacje komputera\n%n = twój nick\n%s = wybrany nick\n%t = czas/data\n%u = wybrane konto użytkownika" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "Przyciski rozmowy - Specjalne kody:\n\n%a = wszystkie wybrane nicki\n%c = bieżący kanał\n%e = bieżąca nazwa sieci\n%h = wybrana nazwa hosta nicku\n%m = informacje komputera\n%n = twój nick\n%s = wybrany nick\n%t = czas/data\n%u = wybrane konto użytkownika" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "Odpowiedzi CTCP - Specjalne kody:\n\n%d = dane (w całym CTCP)\n%e = bieżąca nazwa sieci\n%m = informacje komputera\n%s = nick, który wysłał CTCP\n%t = time/date\n%2 = słowo 2\n%3 = słowo 3\n&2 = słowo 2 do końca linii\n&3 = słowo 3 do końca linii\n\n" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "Zarządanie Linkami - Kody specjalne:\n\n%s = ciąg z linkiem\n\nDodanie ! na początku komendy\noznacza, że zostanie ona wysłana\ndo terminala zamiast do HexChata" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "Zamień na" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "He_xChat" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "_Nowe" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "_Wyjście" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "_Widok" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "Pasek _menu" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "Pasek _tematu kanału" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "Lista _użytkowników na kanale" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "Przyciski _opcji kanału" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "_Rodzaj przełącznika kanałów" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "_Zakładki" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "_Drzewo" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "Mier_niki sieciowe" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Wyłączone" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "Graficzny" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "_Pełny ekran" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "_Serwer" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "_Rozłącz" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "Połącz _ponownie" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "Ozn_acz się jako nieobecny" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "_Użytkownik" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "Ustawi_enia" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "_Preferencje" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "_Okno" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "Zresetuj linię odkreślającą" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "Przejdź do linii odkreślającej" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "_Skopiuj zaznaczenie" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "Wy_czyść tekst" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "Szukaj" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "Znajdź następny" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "Znajdź poprzedni" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "_Pomoc" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "_Zawartość pomocy" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "_O programie" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "_Przyczep" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Nazwa" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Ostatnio widziany" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "Rozłączony" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Nigdy" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "%d minut temu" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "Godzinę temu" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "%d godzin temu" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "Dostępny" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "Wpisz nicki do dodania:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "Zawiadamiaj na tych sieciach:" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "Akceptowana jest lista sieci, dzielonych przecinkami." + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "Otwórz rozmowę" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "Podświetl wiadomość od: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "Wiadomość kanału od: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "Oferta pliku od: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "Prywatna wiadomość od: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "_Przywróć okno" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "_Ukryj okno" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "_Migaj przy" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "Wiadomość na kanale" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "Prywatna wiadomość" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "Podświetlona wiadomość" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "_Zmień status" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "_Nieobecność" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "_Wstecz" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Wersja" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Opis" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Wybierz wtyczkę lub skrypt do załadowania" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "Za_ładuj..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "_Wyładuj" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "_Przeładuj" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "Zapisz jako..." + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "Wyczyść surowy log" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Nowa sieć" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Czy naprawdę usunąć sieć \"%s\" i wszystkie jej serwery?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "Nazwa użytkownika nie może być pusta." + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "Musisz mieć dwa różne nicki." + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "Metody identyfikacji z serwerem. Dla własnej metody użyj komend po podłączeniu." + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "Serwery" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "Kanały do automatycznego dołączenia" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "Komendy po podłączeniu" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "%n=Nick⏎\n%p=Hasło⏎\n%r=Prawdziwe imię⏎\n%u=Nazwa użytkownika" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "Klucz (hasło)" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "_Edycja" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "Połącz się wyłącznie z zaznaczonym serwerem" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Nie skacz po wszystkich serwerach, gdy połączenie się nie uda." + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "Połącz się z tą siecią przy starcie" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "Nie używaj serwera proxy" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "Używaj SSL dla wszystkich serwerów w tej sieci" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "Akceptuj nieprawidłowe certyfikaty SSL" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "Użyj globalnych informacji o użytkowniku" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "_Nick:" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "Drugi wybór:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "Persona_lia:" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "_Użytkownik:" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "Metoda logowania:" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Hasło:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "Hasło używane do logowania, jeśli nie wiesz o co chodzi, zostaw puste." + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "Zestaw znaków:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "Informacje o Użytkowniku" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "Trzeci wybór:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Sieci" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "Pomiń listę sieci przy starcie" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "Wyświetlaj tylko ulubione" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "_Edycja..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "_Sortowanie" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "_Polub" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "Oznacz lub odznacz tę sieć jako ulubioną" + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "P_ołącz" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "Afrykanerski" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Albański" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "Amharski" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "Asturyjski" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Azerski" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "Baskijski" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Białoruski" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Bułgarski" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "Chiński (Uproszczony)" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "Chiński (Tradycyjny)" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "Czeski" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "Duński" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "Niderlandzki" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "Angielski (Brytyjski)" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "Angielski" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Estoński" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "Fiński" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "Francuzki" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "Galicyjski" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "Niemiecki" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "Grecki" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "Gudźarati" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "Hindi" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "Węgierski" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "Indonezyjski" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "Włoski" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "Japoński" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "Kannada" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "Ruanda-rundi" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "Koreański" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "Łotewski" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "Litewski" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "Macedoński" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Malajski" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "Malayalam" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "Norweski (Bokmål)" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "Norweski (Nynorsk)" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "Polski" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "Portugalski" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "Portugalski (Brazylijski)" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "Pendżabski" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "Rosyjski" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "Serbski" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "Słowacki" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "Słoweński" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "Hiszpański" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "Szwedzki" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Tajski" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "Turecki" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "Ukraiński" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Wietnamski" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "Waloński" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Podstawy" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "Język" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "Główna czcionka:" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Czcionka:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "Pole tekstowe" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "Kolorowe nicki" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "Nadaje każdej osobie na czacie inny kolor" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "Dodawaj wcięcia przed nickami" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "Dodawaj wcięcia przed nickami aby wszystkie były wyrównane do prawej" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "Pokazuj linię odkreślającą" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "Dodaj czerwoną linię oddzielającą ostatnio przeczytany tekst." + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Obrazek w tle:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "Ustawienia przezroczystości" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "Aby uzyskać więcej informacji zobacz artykuł MSDN na temat strftime." + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "Aby uzyskać więcej informacji zobacz stronę pomocy na temat strftime." + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "Pasek tytułu" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "Wyświetlaj tryby kanału" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "Wyświetlaj liczbę użytkowników" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "Ostatni porządek wypowiedzi" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "Pole wprowadzania" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "Wyświetlaj kolory i atrybuty" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "Wyświetlaj pole z nickiem" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "Wyświetlaj ikonkę trybu użytkownika w polu nicka" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "Włącz sprawdzanie pisowni" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "Słowniki do użycia:" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "Używaj kodów języka (jak tutaj \"share\\myspell\\dicts\").\nOddzielaj różne wpisy przecinkami." + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "Używaj kodów języków. Oddzielaj wiele wpisów przecinkami." + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "Uzupełnianie nicków" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "Sufiks uzupełnionego nicku:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "Sortowanie uzupełnionego nicku:" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "Uzupełniaj gdy znaleziono co najwyżej" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "Ilość nicków to wyświetlania zamiast uzupełniania" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "nicków." + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "Graficzny" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "Nieposortowane" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Na górze" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Na dole" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Ukryty" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "Lista użytkowników" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "Pokaż nazwy hostów na liście użytkowników" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "Użyj czcionki i koloru tekstu ramki" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "Wyświetlaj ikonki dla trybów użytkownika" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "Używaj graficznych ikonek zamiast symboli tekstowych w liście użytkowników." + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "Koloruj nicki w liście użytkowników" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "Nicki będą kolorowane tak samo jak na czacie." + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "Wyświetlaj liczbę użytkowniów kanału" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "Sposób sortowania listy użytkowników:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "Położenie listy użytkowników:" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "Śledzenie nieobecności" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "Na kanałach mniejszych niż:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "Akcja w przypadku podwójnego kliknięcia" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "Dodatkowe gadżety" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "Miernik opóźnienia:" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "Miernik obciążenia" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Okna" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Zakładki" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "Zawsze" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "Tylko żądane karty" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "Automatycznie" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "W nowej zakładce" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "W aktualnie widocznej zakładce" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "Drzewo" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "Rodzaj przełącznika:" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "Otwórz osobną zakładkę na wiadomości serwera" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "Otwórz osobną zakładkę, po otrzymaniu prywatnej wiadomości" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "Układaj zakładki alfabetycznie" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "Wyświetlaj ikonki w drzewku kanałów" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "Wyświetlaj kropkowane linie w drzewku kanałów" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "Używaj rolki myszki do zmiany zakładek" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "Mały tekst" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "Nowe karty na wierzchu:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "Położenie powiadomień:" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "Położenie przełącznika kanałów:" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "Skracaj etykiety zakładek do:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "liter." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "Zakładki lub okna" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "Otwórz kanały w:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "Otwórz okna rozmów w:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "Otwórz narzędzia w:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Otwórz czat bezpośredni, ignoruj, powiadom itp, w kartach czy w oknach?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "Wiadomość" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "Przewijanie w tył" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "Pytaj o potwierdzenie" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "Pytaj o folder do ściągania" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "Zapisuj bez pytania" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "Pliki i katalogi" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "Automatycznie przyjmuj oferowane pliki:" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Pobieraj pliki do:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "Przenieś ukończone pliki do:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "Umieść nick w nazwach plików" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "Automatycznie otwieraj okna DCC" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "Okno wysyłania" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "Okno odbiorcze" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "Okno czatu" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "Jedno wysyłanie pliku:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "Maksymalna prędkość dla pojedynczego połączenia" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "Jedno pobieranie pliku:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "Wszystkie wysyłania plików jednocześnie:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "Maksymalna prędkość dla wszystkich plików" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "Wszystkie pobierania plików jednocześnie:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "Powiadomienia" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "Migaj ikoną w zasobniku przy:" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "Migaj paskiem zadań przy:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "Wykonaj sygnał dźwiękowy na:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "Odtwarzaj \"Instant Message Notification\" przy wybranych wydarzeniach" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "Odtwarzaj \"message-new-instant\" z freedesktop.org przy wybranych wydarzeniach" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "Odtważaj dzwięk GTK przy wybranych wydarzeniach" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "Ignoruj powiadomienia gdy jesteś oznaczony jako nieobecny" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "Ignoruj powiadomienia gdy okno jest aktywne" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "Ustawienia związane z obszarem powiadomień" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "Włącz ikonę w obszarze powiadomień" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "Minimalizuj do obszaru powiadomień" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "Zamykaj do obszaru powiadomień" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "Automatycznie oznacz jako nieobecny/obecny" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "Automatycznie zmień status w trakcie ukrywania do zasobnika." + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "Podświetlone wiadomości" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Podświetlone wiadomości to te, w których ktoś używa twojego nicku, ale także:" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "Dodatkowe słowa które podświetlić:" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "Nie podświetlaj tych nicków:" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "Zawsze podświetlaj te nicki:" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Oddziel kilka słów przecinkami.\nAkceptowane są symbole wieloznaczne." + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "Podskakiwanie ikony gdy:" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "Domyślne wiadomości" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "Opuszczenie sieci:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "Opuszczenie kanału:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "Nieobecność:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "Nieobecność" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Pokaż nieobecności raz" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "Wyświetlaj identyczne powody nieobecności tylko raz" + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "Automatycznie wyłącz nieobecność" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "Odznacz siebie jako nieobecnego przed wysłaniem wiadomości" + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "Różne" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "Wyświetlaj opcje kanału w surowej formie" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "Polecenie /WHOIS w reakcji na ogłoszenie" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "Wyślij /WHOIS gdy użytkownik z twojej listy powiadomień pojawi się online" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "Nie informuj o wchodzących/wychodzących" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "Domyślnie ukrywaj wiadomości wejścia/wyjścia" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "Ukryj powiadomienia o zmianie nicka" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "*!*@*.host" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "*!*@domena" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "*!*uzytkownik*.host" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "*!*użytkownik@domena" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "Zachowanie autokopiowanie" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "Automatycznie kopiuj zaznaczony tekst" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "Automatycznie dodawaj informacje o kolorach" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "Prawdziwe imię:" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "Alternatywne czcionki:" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "Oddziel wiele wpisów używając przecinków bez spacji na początku lub końcu" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "Wyświetlaj listy w trybie kompaktowym" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "Używaj mniejszego rozstawu w drzewku między listą użytkowników/kanałów" + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "Używaj czasu z serwera jeśli jest to wspierane" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "Wyświetlaj znaczkiki czasu otrzymane od serweraja jesli serwer wspiera rozszerzenie time-server" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "Automatycznie połącz ponownie z serwerem po rozłączeniu" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "Opóźnienie ponowienia automatycznego połączenia:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "Opóźnienie automatycznego dołączania:" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "Rodzaj bana:" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "Spróbuj użyć tej maski podzas banowania lub wyciszania. (wymaga irc_who_join)" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Logowanie" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "Wyświetl przewijanie w tył poprzedniej sesji" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "Przewijanie linii w tył:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "Włącz zapisywanie rozmów na dysk" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "Plik loga:" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Serwer %c=Kanał %n=Sieć." + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "Dodawaj znacznik czasu w logach" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "Format znacznika czasu w logu:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "Linki" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "Włącz logowanie linków na dysku" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "Włącz zbieracz linków" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "Maksymalna liczba linków do zebrania:" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(Wyłączone)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "Auto" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "Twój adres" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "Przypnij do:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "Tylko użyteczne komputerom z wieloma adresami IP." + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "Transfery plików" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "Pobierz mój adres IP z serwera IRCa" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "Prosi serwer IRC o Twój prawdziwy (publiczny/zewnętrzny) adres IP. Użyj tej opcji jeśli Twoja sieć znajduje się za firewallem a Twój lokalny adres to 192.168.*.* lub 10.*.*.*!" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "Adres IP dla DCC:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "Zatwierdź że jesteś pod tym adresem, gdy oferujesz plików." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "!Pozostaw porty na zero dla pełnego zakresu." + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "Serwer proxy" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "Host:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Port:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Rodzaj:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "Używaj serwera pośredniczącego (proxy) dla:" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "Uwierzytelnienie proxy" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "Użytkownik:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "Wybierz plik obrazka" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "Wybierz folder pobierania" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Wybierz czcionkę" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Przeglądaj..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "Otwórz folder danych" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Wybierz kolor" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "Kolory tekstu" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "Kolory mIRCa:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "Kolory lokalne:" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Pierwszy plan:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Tło:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "Zaznaczony tekst" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "Kolory interfejsu" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "Nowe dane:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "Linia odkreślająca:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "Nowa wiadomość:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "Nieobecny użytkownik:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "Podświetl:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "Sprawdzanie pisowni" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "Usuwanie kolorów" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Zdarzenie" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "Plik dźwiękowy" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "Wybierz plik dźwiękowy" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "Plik dźwiękowy:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "_Przeglądaj..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "_Odtwórz" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Interfejs" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "Wygląd" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Pole wpisywania tekstu" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Lista użytkowników" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "Przełącznik kanałów" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Kolory" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Pogawędki" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "Dzwięki" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "Zaawansowane" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Ustawienia sieci" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Transfery plików" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Kategorie" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "Nie można umieścić drzewa na górze lub na dole!\nProszę zmień najpierw styl <b>kart</b> w punkcie menu <b>widok</b>." + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "Pole z Prawdziwym imieniem nie może być puste. Ustawiam je na \"realname\"" + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Niektóre zmienione ustawienia wymagają ponownego uruchomienia." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*OSTRZEŻENIE*\nAutomatyczne przyjmowanie Czatu Bezpośredniego do twojego\nkatalogu domowego może być niebezpieczne i jest wykorzystywane.\nNp.: Ktoś mógłby ci wysłać profil .bash" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "<i>(brak sugestii)</i>" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "Więcej..." + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "Dodaj \"%s\" do słownika" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "Ignoruj Wszystkie" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "Sugestie Sprawdzania" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "błąd enchant dla języka: %s" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "Wystąpił błąd podczas interpretacji ciągu znaków" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Sygnał otrzymuje tylko %d argumentów, $%d jest nieprawidłowa" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "Drukuj plik z tekstami" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ Liczba" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Edycja zdarzeń" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "Załaduj z..." + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Przetestuj wszystkie" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "OK" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Wyczyść listę" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Kopiuj zaznaczony URL" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Kopiuj" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Zapisz adresy do pliku" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d op(ów), %d razem" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "Otwórz adres URL irc://serwer:port/kanal " + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "" diff --git a/hexchat/po/pt.po b/hexchat/po/pt.po new file mode 100644 index 0000000..acec879 --- /dev/null +++ b/hexchat/po/pt.po @@ -0,0 +1,6259 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# artur simões <artursimoes.pt@gmail.com>, 2013 +# artur simões <artursimoes.pt@gmail.com>, 2012-2013 +# Sandro Amaral <sandro123iv@gmail.com>, 2013-2014 +# Vitor Antunes <vhda@mega.ist.utl.pt>, 2004 +# Vitor Luis <droider.pc@gmail.com>, 2018 +# Vitor Luis <droider.pc@gmail.com>, 2018 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-05-09 13:02+0000\n" +"Last-Translator: Vitor Luis <droider.pc@gmail.com>\n" +"Language-Team: Portuguese (http://www.transifex.com/hexchat/hexchat/language/pt/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "HexChat" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "Cliente de IRC" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "O HexChat é um Cliente de IRC fácil de usar, mas também fácil de expandir. Ele permite que te juntes de forma segura a várias redes e que fales com outros utilizadores em privado ou em canais através de uma interface personalizável. Se quiseres, podes até transferir ficheiros!" + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "O HexChat suporta funcionalidades como: DCC, SASL, proxies, verificação de erros ortográficos, alertas, registos, temas personalizados, e scripts em Python/Perl." + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "Janela de Chat Principal" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "Conversa com outras pessoas online" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "IM;Chat;" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "hexchat" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "Abrir Modo Seguro" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "Gestor de Temas do HexChat" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Estou ocupado" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Saindo" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "DESLIGADO" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "LIGADO" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "{nao colocado}" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Rede" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<nenhum>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Canal" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "À espera" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Activo" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Falhou" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Terminado" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Ligar" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Cancelado" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "Não é possível aceder a %s\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Erro" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s está a oferecer \"%s\". Aceitar?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "Sem DCCs ativos\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "_Abrir Janela de Diálogo" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "_Enviar Ficheiro" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "_Info. do Utilizador (WHOIS)" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "_Adicionar à Lista de Amigos" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "_Ignorar" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "Ações de O_perador" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Dar Ops" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Retirar Ops" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "Dar Voice" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "Retirar Voice" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Expulsar/Banir" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Expulsar" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "Banir" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "Expulsar&Banir" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Sair do Canal" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Entrar num Canal..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "Introduz o Canal a Entrar:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Endereços de Servidor" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Ping ao Servidor" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Ocultar Versão" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Op" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "adeus" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Introduz a razão da expulsão de %s:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "Enviar Ficheiro" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "Diálogo" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "WHOIS" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Enviar" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Conversa" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Limpar" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "Não tens permissões de escrita para %s. Nada desta sessão poderá ser guardado." + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* Correr o IRC como root é estúpido! Deve\n criar outro utilizador e usá-lo.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "SIM " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "NÃO " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Está a sofrer uma grande afluência de CTCP de %s, ignorando %s\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "Estás a receber demasiadas mensagens de %s, a desligar as definições gui_autoopen_dialog.\n" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "Resolvido para %s" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "Nao encontrado" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "Resolvido para:" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "Resolvendo %s..." + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s está ligado\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s não está ligado\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Não estás em nenhum canal. Usa /join #<canal>\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Nao estas ligado. Tenta /servidor <endereço> [porta]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "Servidor %s já existe na rede %s.\n" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "Adicionado servidor %s na rede %s.\n" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Já estás como ausente: %s⏎\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "Já estás como de volta.\n" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "Preciso de /bin/sh para operar!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "Comandos Disponíveis:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "Comandos definidos pelo utilizador:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "Comandos definidos pelos plugins:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Escreve /HELP <comando> para mais informações, ou /HELP -l" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Argumento desconhecido '%s' ignorado." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "Silêncio não é suportado por este servidor." + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "O plugin não foi encontrado.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "O plugin recusa-se a desligar.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <nome> <ação>, adiciona um botão à lista de utilizadores" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "ADDSERVER <NovaRede> <novoservidor/6667>, adiciona uma nova rede com um novo servidor à lista de redes" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <cmd>, envia um comando para todos os canais onde está" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "ALLCHANL <cmd>, envia comando a todos os canais no servidor corrente" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <cmd>, envia um comando para todos os servidores onde está" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "AWAY [razao], marca-o como ausente (utilize /BACK para reverter)" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "BACK, marca-o como de volta (não ausente)" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <máscara> [<tipo de ban>], bane do canal todos os utilizadores correspondentes à máscara. Se o utilizador estiver no canal este comando não o expulsa (necessita do estatuto operador)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <variável> [<valor>]" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "CHARSET [<codificação>], obtêm ou ativa a codificação usada na corrente ligação" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "CLEAR [ALL|HISTORY|[-]<quantidade>], Limpa a janela de texto atual ou histórico de comandos" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "CLOSE [-m], Fecha a aba actual, fechando a janela se essa é a única aba aberta, ou com a opçao \"-m\", fecha todas as janelas." + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <código|universal>, procura o código de pais, ex: au = austrália" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <nick> <mensagem>, envia uma mensagem CTCP para o nick. Mensagens comuns são VERSION e USERINFO" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "CYCLE [<canal>], sair e imediatamente entrar no canal" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <nick> - aceita um ficheiro oferecido\nDCC SEND [-maxcps=#] <nick> [file] - envia um ficheiro a nick\nDCC PSEND [-maxcps=#] <nick> [file] - envia um ficheiro usando o modo passivo\nDCC LIST - mostra a lista de DCCs\nDCC CHAT <nick> - oferece uma conversa DCC a nick\nDCC PCHAT <nick> - oferece uma conversa DCC usando o modo passivo\nDCC CLOSE <type> <nick> <file> exemplo:\n /dcc close send artur_pt ficheiro.tar.gz" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <nick>, retira o modo semi-operador ao nick no canal atual (necessita do estatuto operador)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <nome>, apaga um botão da lista de utilizador" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <nick>, retira o estatuto de operador ao nick dado no canal atual (necessita do estatuto operador)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <nick>, retira o estatuto voz do nick dado no canal atual (necessita do estatuto operador)" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, Desliga-se do servidor atual" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "DNS <nick|host|ip>, Resolve um IP ou hostname" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "DOAT <canal, lista, /rede> <comando>" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <texto>, Escreve na janela local o texto inserido" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <comando>, executa o comando de shell. Se a opção -o for usada o resultado é enviado para o canal atual, caso contrário é escrito na janela de texto atual" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, envia a um processo em execução o sinal CONT" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9], pára a execução de um processo da sessão atual. Se a opção -9 for usada é enviado o sinal KILL em vez do sinal TERM" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, envia a um processo em execução o sinal STOP" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, envia dados para o canal stdin do processo em execução" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "EXPORTCONF, exporta preferências do HexChat" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, despeja a fila de dados a enviar do servidor atual" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <endereço> [<porta>], utiliza o proxy dado para a comunicação, a porta é por omissão 23" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <nick> [palavrapasse], exclui um nick fantasma" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <nick>, dá o estatuto semi-operador ao nick(necessita do estatuto operador)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <palavrapasse>, identifica-te perante o nickserv" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <máscara> <tipos..> <opções..>\n máscara - máscara a ser ignorada, ex: *!*@*.iol.pt\n tipos - tipos de dados a ignorar, um ou todos de:\n PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n opções - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <nick> [<canal>], convida alguém para o canal, por defeito o canal atual (necessita do estatuto operador)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <canal>, entra no canal" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "KICK <nick> [motivo], expulsa o nick do canal atual (necessita do estatuto operador)" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "KICKBAN <nick> [motivo], bane e expulsa o nick do canal atual (necessita do estatuto operador)" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, força uma nova verificação de latência" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "LASTLOG [-h] [-m] [-r] [--] <string>, procura pela string na buffer⏎ Use -h para marcar o resultado da(s) procura⏎ Use -m para igual a⏎ Use -r quando a string for uma Expressão Regular⏎ Use -- (duplo hífen) para acabar com opções para procurar, por exemplo, a sequência de '-r'" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <ficheiro>, carrega o plugin ou script" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, Retira o estatuto semi-operador a todos os utilizadores no canal actual (necessita do modo operador)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, Retira o estatuto operador a todos os utilizadores no canal actual (necessita do modo operador)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <ação>, envia a ação para o canal atual (as ações devem ser escritas na 3ª pessoa, como '/eu salta')" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "MHOP, Da halfop a todos os utilizadores do canal actual (necessita ser operador de canal)" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, Expulsa todo os utilizadores, excepto tu, do canal actual (necessita do modo operador)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, Coloca o estatuto operador a todos os utilizadores do canal (necessita do modo operador)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "MSG <nick> <mensagem>, envia uma mensagem privada, mensagem \".\" para enviar para o último nick ou prefixo com \"=\" para o dcc chat" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "NAMES [namal], Gera uma lista dos nicks no canal" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <nick> <mensagem>, Envia a CTCP notificação" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <endereço> [<porta>]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <nick>, muda o nick atual" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "NOTICE <nick/canal> <mensagem>, envia uma notificação" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [-n rede1[,rede2,...]] [<nick>], mostra a lista de notificações ou adiciona alguém." + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <nick>, adiciona o estatuto operador a nick (necessita do modo operador)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<canal>] [<razão>], sai do canal, por omissão o canal atual" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <nick | canal>, envia um CTCP a nick ou canal" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "QUERY [-nofocus] <nick> [message], abre um novo chat privado com alguém e, opcionalmente, enviar uma mensagem" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "QUIET <máscara> [<tipo_de_silêncio>], silência todos os que correspondem à máscara no canal atual se suportado pelo servidor." + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<razão>], desliga-se do servidor atual" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <texto>, envia o texto diretamente ao servidor" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<endereço>] [<porta>] [<palavrapasse>], Usado para reiniciar a ligação ao servidor dado, servidor atual por omissão, ou na forma /RECONNECT ALL para reiniciar a ligação a todos os servidores" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<endereço>] [<porta>] [<palavrapasse>], Usado para reiniciar a ligação ao servidor dado, servidor atual por omissão, ou na forma /RECONNECT ALL para reiniciar a ligação a todos os servidores" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "RECV <texto>, envio raw data para HexChat,como se fosse recebido do servidor de IRC" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "RELOAD <nome>, recarrega um plugin ou script" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <texto>, envia o texto para o objecto da janela actual" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <nick> [<ficheiro>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <endereço> <porta> <canal>, liga-se ao servidor entrando de seguida no canal" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <endereço> <porta> <canal>, liga-se ao servidor entrando de seguida no canal" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "SERVER [-ssl] <endereço> [<porta>] [<palavrapasse>], ligação a servidor, por omissão porta 6667 usada em ligações normais, ligações por ssl 6697" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <endereço> [<porta>] [<palavrapasse>], ligação ao servidor por omissão porta 6667" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-off|-on] [-quiet] <variável> [<valor>]" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "SETCURSOR [-|+]<posição>, reposiciona o cursor na caixa de entrada" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "SETTAB <novo nome>, troca o nome do separador, tab_trunc limite ainda se aplica " + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "SETTEXT <novo texto>, troca o texto na caixa de entrada" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<tópico>], muda o tópico do canal atual, ou mostra o tópico atual" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "\n⏎ TRAY -f <limitetempo> <ficheiro1> [<ficheiro2>] Pisca tabuleiro entre dois ícones.⏎ TRAY -f <nomeficheiro> Definir tabuleiro para um ícone fixo.⏎ TRAY -i <número> Pisca tabuleiro com icóne interno.⏎ TRAY -t <texto> Define tabuleiro com dica.⏎ TRAY -b <titulo> <texto> Define tabuleiro balão." + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <máscara> [<máscara>...]>, reautoriza o acesso ao canal aos utilizadores que correspondem a/as máscara/s necessita estatuto operador " + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <máscara> [QUIET], deixa de ignorar a máscara dada" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <nome>, desliga o plugin ou script" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "UNQUIET <máscara> [<mascara>...], de-silência as máscaras especificas se suportado pelo servidor." + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, abre o URL no teu browser" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "USELECT [-a] [-s] <nick1> <nick2> etc, sublinha o(s) nick(s) na lista de utilizadores do canal" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <nick>, coloca o modo voz a nick (necessita do estatuto operador)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <mensagem>, escreve uma mensagem em todos os canais em que entraste" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <mensagem>, envia uma mensagem a todos os utilizadores com estatuto operador no canal atual" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "Comandos de utilizador para: %s\n" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "Utilização: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nNão existe ajuda para esse comando.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "Comando inexistente.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "Opções incorrectas para comando de utilizador.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "Excessiva recursividade de comandos de utilizador, cancelando." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "Comando desconhecido %s. Tenta /help\n" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "inexistent hexchat_plugin_init symbol; isto é realmente um plugin HexChat?" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "*\tRespondendo ao pedido de ident de %s como %s" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "*\tErro ao iniciar o servidor de identd: %s" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "IDENTD <porta> <nome de utilizador>" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "Temporizador %d removido.\n" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "Nenhum numero de referencia encontrado.\n" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "Sem temporizadores instalados.\n" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr " Ref# Segundos Repeticao Comando \n" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "%5d %8.1f %7d %s\n" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Tens a certeza que este servidor e/ou porta suportam SSL?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "Não foi possível resolver o endereço %s\nVerifique as configurações de IP!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "A transferência através da proxy falhou.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "A mudar para o servidor seguinte em %s...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "Aviso: o carácter \"%s\" é desconhecido. Não vai ser aplicada conversão à rede %s." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "%C18*%O$t%C18$1%O foi adicionado à lista de notificações." + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "%C22*%O$t%C22$1%O: %C18$2%O em %C24$4%O por %C26$3%O" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "%C22*%O$tConexão negada %C22$1 %O(%C20Estás banido%O)." + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "%C29*%O$tCapacidades reconhecidas: %C29$2%O" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "%C29*%O$tRecursos removidos: %C29$2%O" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "%C23*%O$tCapacidades suportadas: %C29$2%O" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "%C23*%O$tCapacidades solicitadas: %C29$1%O" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "%C24*%O$t%C28$1%O agora é %C18$2%O" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O banido em %C18$2%O" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "%C22*%O$tCanal %C22$1%O criado em %C24$2%O" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O removeu o modo de semi-operator a %C18$2%O" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O removeu o modo de operator a %C18$2%O" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O remover voice de %C18$2%O" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%C exenção em %C18$2%O" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O canal estatuto half-operator a %C18$2%O" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%C define isentos de convite em %C18$2%O" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%UCanal Utilizadores Tópico" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "%C22*%O$t%C26$1%O definiu o modo %C24$2$3%O em %C22$4%O" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "%C22*%O$tModos do canal %C22$1%O: %C24$2" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O estatuto operador canal a %C18$2%O" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O define o silêncio em %C18$2%O" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O remover isenção a %C18$2%O" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O remove a isenção de convite em %C18$2%O" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "%C22*%O$t%C26$1%O remover channel keyword" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "%C22*%O$t%C26$1%O remover limite utilizadores" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O definiu a keyword do canal a %C24$2%O" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O definiu o limite do canal para %C24$2%O" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O removeu o banimento em %C18$2%O" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O remove o silêncio em %C18$2%O" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "%C22*%O$tCanal %C22$1%O url: %C24$2" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O deu voz a %C18$2%O" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "%C23*%O$tLigado. A iniciar sessão." + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "%C23*%O$tLigando a %C29$1%C (%C23$2:$3%O)" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "%C20*%O$tLigação falhada (%C20$1%O)" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "%C24*%O$tRecebido CTCP %C24$1%C de %C18$2%O" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "%C24*%C$tRecebido CTCP %C24$1%C de %C18$2%C (to %C22$3%C)%O" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "%C24*%O$tRecebido som CTCP %C24$1%C de %C18$2%O" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "%C24*%O$tRecebido som CTCP %C24$1%C de %C18$2%C (to %C22$3%O)" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "%C23*%O$tDCC CHAT para %C18$1%O abortado." + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "%C24*%O$tDCC CHAT ligação estabalecida com %C18$1%C %C30[%C24$2%C30]%O" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "%C20*%O$tDCC CHAT com %C18$1%O perdida (%C20$4%O)" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "%C24*%O$tConvite DCC CHAT recebido de %C18$1%O" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "%C24*%O$tConvite DCC CHAT enviado a %C18$1%O" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "%C24*%O$tCHAT enviado a %C18$1%O" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "%C20*%O$tDCC $1 tentativa de ligação a %C18$2%O falhada (%C20$3%O)" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "%C23*%O$tRecebida '%C23$1%C' de %C18$2%O" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "%C16,17 Tipo Para/De Estado Tamanho Posiçao Ficheiro" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "%C20*%O$tRecebido pedido mal-formado DCC de %C18$1%O.$a010%C23*%O$tConteúdo do pacote: %C23$2%O" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "%C24*%O$tOferta '%C24$1%O' a %C18$2%O" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "%C23*%O$tOferta inexistente DCC." + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "%C23*%O$tDCC RECV '%C23$2%O' para %C18$1%O abortado." + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "%C24*%O$tDCC RECV '%C23$1%O' de %C18$3%O completo %C30[%C24$4%O cps%C30]%O" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$tDCC RECV ligação estabelecida a %C18$1 %C30[%O%C24$2%C30]%O" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "%C20*%O$tDCC RECV '%C23$1%O' de %C18$3%O falhado (%C20$4%O)" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "%C20*%O$tDCC RECV: Impossível abrir '%C23$1%C' para escrita (%C20$2%O)" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "%C23*%O$tFicheiro '%C24$1%C' já existe, a guardar como '%C23$2%O' em vez." + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "%C24*%O$t%C18$1%C pedido para resumir '%C23$2%C' de %C24$3%O." + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "%C23*%O$tDCC SEND '%C23$2%C' para %C18$1%O abortado." + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "%C24*%O$tDCC SEND '%C23$1%C' a %C18$2%C completo %C30[%C24$3%C cps%C30]%O" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$tDCC SEND ligação estabelecida a %C18$1 %C30[%O%C24$2%C30]%O" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "%C20*%O$tDCC SEND '%C23$1%C' para %C18$2%C falhado (%C20$3%O)" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "%C24*%O$t%C18$1%C ofereceu '%C23$2%C' (%C24$3%O bytes)" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "%C20*%O$tDCC $1 '%C23$2%C' a %C18$3%O parado, abortado." + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "%C20*%O$tDCC $1 '%C23$2%C' a %C18$3%O limite, abortado." + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "%C24*%O$t%C18$1%O foi removido da lista de notificações." + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "%C20*%O$tDesligado (%C20$1%O)" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "%C24*%O$tEncontrado IP: %C30[%C24$1%C30]%O" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "%O%C18$1%O foi adicionado à lista de ignorados." + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "%OA Lista de Ignorados foi alterada em %C18$1%O." + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "%C16,17" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "%C16,17 Mascara PRIV NOTI CHAN CTCP DCC INVI UNIG" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "%O%C18$1%O remover da lista ignorados." + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "%OLista ignorados vazia." + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "%C20*%O$tEntrada interdita %C22$1%C (%C20Canal só por convite%O)" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "%C24*%O$tFoi convidado para %C22$1%O por %C18$2%O (%C29$3%O)" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "%C23*$t$1 ($3%C23) entrou" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "%C20*%O$tEntrada interdita %C22$1%C (%C20Precisa de keyword%O)" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "%C22*%O$t%C26$1%C expulsou %C18$2%C de %C22$3%C (%C24$4%O)" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "%C19*%O$t%C19Eliminado por %C26$1%C (%C20$2%O)" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "%C29*%O$t%C29MOTD Ignorado%O" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "%C23*%O$t%C28$1%C já está em uso. Tentando com %C18$2%O..." + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "%C23*%O$t%C28$1%C está errado. Tentando com %C18$2%O..." + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "%C20*%O$tO Nickname está errado ou já está em uso. Usa /NICK para tentar outro." + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "%C20*%O$tDCC inexistente." + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "%C23*%O$tSem processos a correr" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "%C23*%O$tNotificação: %C18$1%C está ausente (%C24$2%O)" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "%C23*%O$tNotificação: %C18$1%C voltou" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tLista de notificações vazia." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "%C16,17 Lista de notificaçoes" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "%C23*%O$t%C23$1%O utilizadores na lista de notificações." + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "%C23*%O$tNotificação: %C18$1%C saiu (%C29$3%O)" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "%C23*%O$tNotificação: %C18$1%C entrou (%C29$3%O)" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "%C24*$t$1 ($2%C24) saiu" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "%C24*$t$1 ($2%C24) saiu ($4)" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "%C24*%O$tPing devolvido de %C18$1%C: %C24$2%O segundo(s)" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "%C20*%O$tResposta ping inexistente para %C24$1%O segundos, disconetar." + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "%C24*%O$tProcess já a correr" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "%C24*$t$1 saiu ($2)" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "%C24*%O$t%C26$1%C definiu os modos %C30[%C24$2%C30]%O" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "%O-%C29$1/Wallops%O-$t$2" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "%C24*%O$tPesquisando número IP para %C18$1%O..." + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "%C23*%O$tAutenticando via SASL como %C18$1%O (%C24$2%O)" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "%C29*%O$tLigado." + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "%C29*%O$tA procurar %C29$1%O" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "%C23*%O$tParada tentativa de ligação anterior (%C24$1%O)" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "%C22*%O$tO tópico de %C22$1%C é: $2%O" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "%C22*%O$t%C26$1%C alterou o tópico para: $2%O" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "%C22*%O$tTópico %C22$1%C por %C26$2%C (%C24$3%O)" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C20*%O$tHost desconhecido. Talvez esteja mal escrito?" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "%C20*%O$tEntrada interdita %C22$1%C (%C20Limite máximo de utilizadores%O)" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "%C22*%O$tUtilizadores %C22$1%C: %C24$2%O" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%C ausente %C30(%C23$2%O%C30)%O" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "%C23*%O$t%C28[%C18$1%C28] %OFim da lista WHOIS." + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O inativo à %C23$2%O" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O inativo à %C23$2%O, identificado em %C23$3%O" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "%C19*%O$tA conversar em %C22$2%O" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "%C19*%O$tTu foste expulso de %C22$2%C por %C26$3%O (%C20$4%O)" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "%C19*%O$tSaiu do canal %C22$3%O" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "%C19*%O$tSaiu do canal %C22$3%C (%C24$4%O)" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "%C20*%O$tFoi convidado %C18$1%O para %C22$2%O (%C24$3%O)" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "%C20*%O$tAgora és conhecido como %C18$2%O" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "Registo aberto de" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** REGISTO TERMINADO EM %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** REGISTO INICIADO EM %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "* Impossivel abrir ficheiro(s) registo para escrita. Verifique as ⏎ permissões em %s" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "Mensagem da esquerda" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "Mensagem da direita" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "Endereço IP" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Nome de utilizador" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "O nick do utilizador que entra" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "O canal em que vai entrar" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "O endereço do utilizador" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "A conta da pessoa" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Nick" + +#: src/common/text.c:980 +msgid "The action" +msgstr "A ação" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "Modo carácter" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "Texto identificado" + +#: src/common/text.c:987 +msgid "The text" +msgstr "O texto" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "A mensagem" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Nome do Servidor" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "Capacidades reconhecidas" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "Recursos removidos" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "Recursos do Servidor" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "Recursos Solicitados" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Nick antigo" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Novo nick" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "Nick do utilizador que mudou o tópico" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Tópico" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "O nick de quem expulsou" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "O utilizador a ser expulso" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "O canal" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "A razão" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "O nick do utilizador a sair" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "A hora" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "O criador" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Nick" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Razão" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Endereço" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "De quem é" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "A hora no formato x.x (ver em baixo)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "O canal para onde vai" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "O som" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "O nick do utilizador" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "O evento CTCP" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "O nick do utilizador que colocou a chave" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "A chave" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "O nick do utilizador que colocou o limite" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "O limite" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "O nick do utilizador que deu o estatuto operador" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "O nick do utilizador que recebeu o estatuto operador" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "O nick do utilizador que recebeu o estatuto semi-operador" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "O nick do utilizador que deu o estatuto semi-operador" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "O nick do utilizador que deu o estatuto voz" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "O nick do utilizador que recebeu o estatuto voz" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "O nick do utilizador que baniu" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "A máscara de banimento" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "The nick of the person who did the quieting" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "A máscara de silêncio" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "O nick do utilizador que retirou a chave" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "O nick do utilizador que retirou o limite" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "O nick da pessoa que tirou o op" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "O nick do utilizador a quem foi retirado o estatuto operador" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "O nick da pessoa que tirou o halfop" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "O nick do utilizador a quem foi retirado o estatuto semi-operador" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "O nick da pessoa que tirou o voice" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "O nick do utilizador a quem foi retirado o estatuto voz" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "O nick da pessoa que tirou o ban" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "O nick da pessoa que removeu o silencio" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "O nick do utilizador que criou a isenção" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "A máscara da isenção" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "O nick do utilizador que retirou a isenção" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "O nick do utilizador que efetuou o convite" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "A máscara do convite" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "O nick do utilizador que retirou o convite" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "O nick do utilizador que colocou o estatuto" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "O sinal do modo (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "A letra do estatuto" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "O canal em que está a ser colocado" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Nome completo" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Nível no Canal/\"é um operador de IRC\"" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Informação do servidor" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Tempo inativo" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Hora de ligação" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Razão da ausência" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Mensagem" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Conta" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "utilizador real@endereço" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "IP real" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Nome do canal" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "Mecanismo" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "Numérico primo ou Identificador" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Texto" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Nick do utilizador que o convidou" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Utilizadores" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "Nick em uso" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Nick a ser tentado" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Porta" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "Frase de modos" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "Tipo de DCC" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Nome do ficheiro" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Nome do ficheiro de destino" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "Nome de diretoria" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Posição" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Tamanho" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "Frase de DCC" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "Razão da Ausência" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "Número de notificações" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Antigo nome do ficheiro" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Novo nome do ficheiro" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Receptor" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Máscara de Endereço" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Endereço" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "O pacote" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "Segundos" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "Nick do utilizador que foi convidado" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Máscara de Banimento" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "Quem baniu" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Hora do Banimento" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "Não foi possível ler ficheiro de som:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "Cliente remoto desligou" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "Ligação recusada" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "Não existe caminho para o endereço" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Ligação excedeu o tempo limite" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "Não é possível atribuir o endereço" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "Ligação terminada no destino" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "Ilha da Ascenção" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Emirados Árabes Unidos" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "Aviation-Related Fields" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Afeganistão" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Antígua e Barbuda" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Anguila" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Albânia" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Arménia" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Antilhas Neerlandesas" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Antartica" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Argentina" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "DNS Inverso" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Samoa Americana" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "Asia-Região Pacifico " + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Áustria" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Austrália" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "Aland Islands" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Azerbaijão" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Bósnia e Herzegovina" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Bangladeche" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Bélgica" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Burquina Faso" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Bulgária" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Barém" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "Negócios" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Benim" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Bermudas" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Brunei" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Bolívia" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Brasil" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Baamas" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Butão" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Ilha Bouvet" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Botsuana" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Bielorrússia" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Canadá" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "Catalão" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Ilhas Cocos" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "República Democrática do Congo" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "República Centro-Africana" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Congo" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "Suiça" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "Costa do Marfim" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Ilhas Cook" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Chile" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Camarões" + +#: src/common/util.c:738 +msgid "China" +msgstr "China" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Colômbia" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Internic Commercial" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "Cooperativas" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "Sérvia e Montenegro" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Cuba" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Cabo Verde" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Ilha do Natal" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Chipre" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "República Checa" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "East Germany" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Alemanha" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Jibuti" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Dinamarca" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Domínica" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "República Dominicana" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Algéria" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Equador" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Instituição Educacional" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Estónia" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Egipto" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Sahara Oeste" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Eritreia" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "Espanha" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Etiópia" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "União Europeia" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Filândia" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Fiji" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Ilhas Falkland" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Micronésia" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Faroé" + +#: src/common/util.c:770 +msgid "France" +msgstr "França" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Gabão" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Grã Bretanha" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Granada" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Geórgia" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Guiana Francesa" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "Ilhas do Canal Inglês" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Gana" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Gronelândia" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Gâmbia" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Guiné" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Governo" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Guadalupe" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Guiné Equatorial" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Grécia" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Ilhas Geórgia do Sul e Sandwich do Sul" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Guiné-Bissau" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Guiana" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Ilhas Heard e McDonald" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Croácia" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Hungria" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Indonésia" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Irlanda" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Israel" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "Ilha de Man" + +#: src/common/util.c:801 +msgid "India" +msgstr "Índia" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "Informativo" + +#: src/common/util.c:803 +msgid "International" +msgstr "Internacional" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Território Britânico do Oceano Índico" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Iraque" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "Irão" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Islândia" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Itália" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Jamaica" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Jordânia" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "Emprego Empresa" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Japão" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Quénia" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Quirguizistão" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Camboja" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Quiribati" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Comores" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "São Cristóvão e Nevis" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Coreia do Norte" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Coreia do Sul" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Koweit" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Ilhas Caimão" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Cazaquistão" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Líbano" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Santa Lúcia" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Listenstaine" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Sri Lanca" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Libéria" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Lesoto" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Lituânia" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Luxemburgo" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Letónia" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Líbia" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Marrocos" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Mónaco" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Moldávia" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "Montenegro" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "United States Medical" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Madagáscar" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Ilhas Marshall" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Militar" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Antiga República Jugoslava da Macedónia" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Mianmar" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Mongólia" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Macau" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "Equipamentos Moveis" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Marianas do Norte" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Martinica" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Mauritânia" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Monserrate" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Maurícia" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "Museus" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Maldivas" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Malavi" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "México" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Malásia" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Moçambique" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Namíbia" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "Nomes Individuais" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Nova Caledónia" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Níger" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Internic Network" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Ilha Norfolk" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Nigéira" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Nicarágua" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Países Baixos" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Noruega" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "Nova Zelândia" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Omã" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "Internic Non-Profit Organization" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Panamá" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Perú" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Polinésia Francesa" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Papuásia-Nova Guiné" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Filipinas" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Paquistão" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Polónia" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "São Pedro e Miquelon" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Porto Rico" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "Profissões" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "Território Palestiano" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Portugal" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Paraguai" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Catar" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Reunião" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Roménia" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "Old School ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "Sérvia" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Rússia" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Ruanda" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Arábia Saudita" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Ilhas Salomão" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Seicheles" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Sudão" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Suécia" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Singapura" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "Santa Helena" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Eslovénia" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard e Jan Mayen" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "Eslováquia" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Serra Leoa" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "São Marino" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Sumália" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Suriname" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "South Sudan" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "São Tomé e Príncipe" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Antiga USSR" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "Salvador" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Síria" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Suazilândia" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Ilhas Turcas e Caicos" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Chade" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "Internet Communication Services" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "Territórios Austrais Franceses" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Tailândia" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Tajiquistão" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Timor Leste" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Turquemenistão" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Tunísia" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Turquia" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "Travel and Tourism" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Trindade e Tobago" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Tanzânia" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Ucrânia" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Reino Unido" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "Estados Unidos da América" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Uruguai" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Usbequistão" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Santa Sé" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "São Vicente e Granadinas" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "Ilhas Virgens Britânicas" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "Ilhas Virgens Americanas" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Vietname" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "Wallis e Futuna" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "Adult Entertainment" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Iémen" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Jugoslávia" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "África do Sul" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Zâmbia" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Zimbabué" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "Impossível ligar à sessão de bus" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "Não conseguiu concluir NomeComoDono" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "Não conseguiu concluir Comando" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "acesso remoto" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "extensão para acesso remoto utilizando DBUS" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Impossível ligação a sessão de bus:%s ⏎\n" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Falha ao adquirir %s: %s⏎\n" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Tabela de Caracteres" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "Ban" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "Isentos" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "Isento" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "Convite" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Convite" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "Calmo" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "Silencioso" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "Copiar máscara" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "%s em %s por %s" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "Copiar entrada" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "Não está ligado." + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "Tem de selecionar alguns banimentos." + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "Tens a certeza que queres remover todos os banimentos de %s?" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "Tipo:" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Máscara" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "De" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Data" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Só podes ver a Lista de banimentos enquanto estás num canal." + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "Lista de Bans (%s) - %s" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Remover" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Marcar" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Atualizar" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Mostrando %d/%d utilizadores nos canais %d/%d." + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Seleccionar o nome ficheiro de saída" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "_Entrar em Canal" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "_Copiar Nome Canal" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "Copiar Texto do _Tópico " + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "Lista de Canais (%s) - %s" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "_Procurar" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "_Lista de Transferências" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "Guardar _Lista..." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "Mostrar apenas:" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "canais com" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "para" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "utilizadores." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "Procurar em:" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Nome canal" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "Tipo de Procura:" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "Procura Simples" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "Corresponde ao padrão (caracteres universais)" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "Expressão Regular" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Procurar:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Enviar ficheiro para %s" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "Não é possível continuar este ficheiro." + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "Impossível aceder ao ficheiro: %s\n%s.\nNão é possível continuar." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "Ficheiro da pasta de transferências é maior que o ficheiro oferecido. Impossível continuar." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "Impossível continuar o mesmo ficheiro de dois utilizadores." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "Uploads e Downloads - %s" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Estado" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Ficheiro" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Ambos" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "Envios" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "Transferências" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "Detalhes" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "Ficheiro:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "Endereço:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Cancelar" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Aceitar" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Continuar" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "Abrir Pasta..." + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "Lista de DCC Chat - %s" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Recebido" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Enviado" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "Hora de Ínicio" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "Adicionar" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Apagar" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Cancelar" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Salvar" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "Não ligar aos servidores automaticamente" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "Usa outra pasta de configuração" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "Não carregar nenhum plugin automaticamente" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "Ver plugin/script na pasta de auto-carregamento" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "Mostrar pasta de configuração do utilizador" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "Abre um URL irc://servidor:porta/canal?chave" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "Executar comando:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "Abra URL ou execute o comando em um HexChat existente" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "iniciar minimizado. Nível 0=Normal 1=Minimizado 2=Barra de notificações" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "nivel" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "Mostrar informação de versão" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "Não foi possível abrir a fonte:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "Pesquisa de buffer vazia .⏎\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d bytes" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Fila de envio da rede: %d bytes" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "A ação do Comando Executar executa a informação em Data 1 como se tivesse sido escrita na caixa de entrada em que tenhas pressionado a sequência de teclas. Pode conter texto (que será enviado para o canal/pessoa), comandos ou comandos de utilizador. Os caracteres \\n em Data 1 são usados para delimitar comandos separados, de forma a ser possível executar mais de um comando. Se quiseres adicionar um caracter \\ literal ao texto, escreve \\\\" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "O comando Change Page alterna entre as páginas do notebook. Conjunto de data 1 para a página que desejas alterar. Se Data 2 estiver definido para qualquer coisa, então a opção será relativa à posição atual. Conjunto de dados de 1 para mudar automaticamente para a página com a atividade mais recente e importante (consultas primeiro, depois os canais com realçes, canais de diálogo ativos, canais com outros dados)" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "O comando Inserir no Buffer introduz o conteúdo de Dados 1 na posição atual do cursor da entrada onde a sequência de teclas foi pressionada" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "O comando Scroll Page desloca o widget de texto para cima ou para baixo uma página ou uma linha. Define Data 1 para Top (Topo), Bottom (Fundo), Up (Cima), Down (Baixo), +1 ou -1." + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "Set Buffer comando define a entrada, com a sequência de teclas introduzida para o conteúdo Dados 1" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "Last Command comando define a entrada para conter o último comando inserido - o mesmo que pressionar Cima num shell" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "Next Command comando define a entrada para conter o próximo comando a inserir - o mesmo que pressionar Baixo num shell" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "Este comando altera o texto na entrada para completar um nick ou comando incompleto. Se Dados 1 está definido então ao carregar duas vezes na tecla TAB numa palavra irá seleccionar o último nick e não o próximo" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "Este comando percorre a lista de nicks. Se Dados 1 está definido então a lista é percorrido para cima, caso contrário é percorrida para baixo" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "Este comando verifica a última palavra introduzida na entrada contra a lista de substituições e substitui-a se encontrar uma" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "Este comando move o separador actual uma posição para a esquerda" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "Este comando move o separador actual uma posição para a direita" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "Este comando move a família de separadores actual uma posição para a esquerda" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "Este comando move a família de separadores actual uma posição para a direita" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "Coloca a linha de entrada para o historial mas não a envia para o servidor" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "Erro durante o carregamento da configuração de atalhos de teclas" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "Seleciona uma linha para obter ajuda sobre a sua Ação." + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "Atalhos de teclado - %s" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "Não foi possível gravar ficheiro." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "Não foi possível ler ficheiro." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "A máscara já existe." + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Privado" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Noticia" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "Não ignorar" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "Tens a certeza que pretendes remover todos os ignorados?" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "Introduzir máscara a ignorar:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "Lista de ignorados - %s" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Estado:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Canal:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privado:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Noticia:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Convite:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "Adicionar..." + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "Nome do canal é demasiado pequeno, tenta outra vez." + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "Ligaçao completada - %s" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "Ligação a %s concluída." + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "Na janela da lista de servidores, nenhum canal (sala de chat) foi adicionado para entrada automatica nesta rede." + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "Que queres fazer a seguir?" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "_Nada, entro num canal mais tarde." + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "_Entrar neste canal:" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Se sabes o nome do canal onde queres entrar, escreve-o aqui." + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "_Abrir a lista de canais." + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "A recuperação da lista de canais pode demorar um ou dois minutos." + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "_Sempre mostrar este diálogo depois de conetar." + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "Diálogo com" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Tópico para %s é: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "Nenhum tópico introduzido" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "Este servidor ainda tem %d canais ou diálogos associados. Fechar todos?" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "Sair HexChat?" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "Não pergunte próxima vez." + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Está ligado a %i redes de IRC." + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "Tens a certeza que pretendes sair?" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "Algumas transferências ainda estão ativas." + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "_Minimizar para Tabuleiro" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "Inserir Código de Atributo ou Côr" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>Negrito</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>Sublinhado</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "<i>Itálico</i>" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "Normal" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "Cores 0-7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "Cores 8-15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "_Preferências" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "_Guardar no Disco" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "_Atualizar Scrollback" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "Excluir _Cores" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "_Ocultar mensagens de entrada e saída" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "_Alertas Extras" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "Som em _Mensagem" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "Piscar na barra de not_ificações" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "Piscar na _barra de _tarefas" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "_Separar" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "_Fechar" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "Limite de utilizadores deve ser um número!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "Filtrar Cores" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "Não recebe mensagens exteriores" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "Protecção do Tópico" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "Convite Apenas" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "Moderado" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "Lista de Banimentos" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Palavra Chave" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "Limite de Utilizadores" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Introduzir novo nick:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "Nenhum resultado encontrado." + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "A pesquisa chegou ao fim ou nada foi encontrado." + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "_Destacar tudo" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "Marca todas as ocorrências, e sublinha a ocorrência atual." + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "_Correspondência" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "Realizar uma pesquisa sensível a maiúsculas." + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "Expressão _regular" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "Respeitar texto a procurar como uma expressão regular." + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Host desconhecido" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "Conta desconhecida" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Desconhecido" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Nome Real:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "Utilizador" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "Conta:" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "País:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "Servidor:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "%u minutos atrás" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "Última Msg:" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "Msg Ausência:" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "%d nicks selecionados." + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "A Barra de Menu está agora oculta. Podes mostra-la de novo pressionando Control+F9 ou clicando com o botão direito numa zona em branco da área de texto principal." + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "Abrir Link no Browser" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "Copiar Link Selecionado" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Entrar no Canal" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "Sair do Canal" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "Alternar entre Canais" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "Entrar _Automaticamente" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "Entrar Automaticamente no Canal" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "Ligar _Automaticamente" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "Menu de utilizador - %s" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "Editar este Menu" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "A linha de marcador foi desativada." + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "A linha de marcador nunca foi definida." + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "A linha de marcador foi redefinida manualmente." + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "A linha de marcador foi redefinida porque excedia o limite de retrocesso." + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "A linha de marcador foi redefinida pelo comando CLEAR." + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "Estado da linha de marcador é desconhecido." + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "Mostrar a lista de canais" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr " foi construído sem suporte para plugins." + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "Comandos Utilizador - Códigos especiais:\n\n%c = canal em uso\n%e = rede em uso\n%m = info máquina\n%n = meu nick\n%t = hora/data\n%v = Versão HexChat\n%2 = palavra 2\n%3 = palavra 3\n&2 = palavra 2 no final da linha\n&3 = palavra 3 no final da linha\n\nex:\n/cmd artur olá\n\n%2 será \"artur\"\n&2 será \"artur olá\"." + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "Botões da lista de utilizador - Códigos especiais:\n\n%a = todos os nicks selecionados\n%c = nome do canal atual\n%e = nome da rede atual\n%h = hostname do nick selecionado\n%m = informação da máquina\n%n = teu nick\n%s = nick selecionado\n%t = tempo/data\n%u = conta dos utilizadores selecionados" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "Botões de diálogo - Códigos especiais:\n\n%a = todos os nicks selecionados\n%c = nome do canal atual\n%e = nome da rede atual\n%h = hostname do nick selecionado\n%m = informação da máquina\n%n = teu nick\n%s = nick selecionado\n%t = tempo/data\n%u = conta dos utilizadores selecionados" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "Respostas CTCP - Códigos especiais:⏎ ⏎ %d = data (todo ctcp)⏎ %e = nome rede em uso⏎ %m = info máquina⏎ %s = nick do envio ctcp⏎ %t = hora/data⏎ %2 = palavra 2⏎ %3 = palavra 3⏎ &2 = palavra 2 no final da linha⏎ &3 = palavra 3 no final da linha⏎ ⏎\n" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "URL Manipuladores- Códigos especiais:\n\n%s = string URL \nInserir um! na frente do comando\nindica que deve ser enviado para uma\nshell em vez HexChat" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "Comandos definidos pelo utilizador - %s" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "Menu pop-up da lista de utilizadores - %s" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "Substituir - %s" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "Substituir por" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "Manipuladores de URL - %s" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "Botoes da lista de utilizadores - %s" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "Botoes de dialogo - %s" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "Respostas CTCP - %s" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "He_xChat" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "_Lista de redes" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "_Novo" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "Aba de servidor" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "Aba de canal" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "Janela de servidor" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "Janela de canal" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "_Carregar Plugin ou Script" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "_Sair" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "_Ver" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "_Barra Menu" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "Barra de _Tópico" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "_Lista Utilizador" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "_Lista de botoes de utilizador" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "Botões de M_odo" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "_Alternador Canal" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "_Separadores" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "Á_rvore" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "Medidores de _Rede" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Desligado" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "Imagem" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "_Ecrã inteiro" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "_Servidor" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "_Desligar" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "_Reconetar" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "_Entrar num canal" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "_Lista de canais" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "Marcado _Ausente" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "Menu de _Utilizador" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "_Configurações" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "_Preferências" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "Auto substituiçao" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "Respostas CTCP" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "Botoes de dialogo" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "Atalhos de teclado" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "Eventos de texto" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "Manipuladores de URL" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "Comandos de utilizador" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "Lista de botoes de utilizador" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "Lista de popup de utilizador" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "_Janela" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "_Lista de bans" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "Chat directo" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "_Transferencias de ficheiros" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "Lista de amigos" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "Lista de ignorados" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "_Plugins e Scripts" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "_Registo RAW" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "_Colector de URLs" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "Limpar Linha de Marcador" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "Mover para Linha de Marcador" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "_Copiar Selecionado" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "_Limpar Texto" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "Salvar Texto" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "Procurar" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "Procurar Texto" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "Procurar Próximo" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "Procurar Anterior" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "_Ajuda" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "_Conteúdos" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "_Sobre" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "_Anexar" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Nome" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Última vez visto" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "Offline" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Nunca" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "%d minutos atrás" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "À uma hora atrás" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "%d horas atrás" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "Online" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "Introduz o nick a adicionar:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "Notificar-me nestas redes:" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "Lista separada por vírgula de redes permitida." + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "Lista de amigos - %s" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "Abrir Diálogo" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "Mensagem marcada de: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "Mensagem de canal de: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "Oferta de ficheiro de: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "Convidado para o canal por: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "Notice de: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "Mensagem privada de: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "Ligado a %u redes e %u canais - %s" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "_Restaurar Janela" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "_Ocultar Janela" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "_Piscar" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "Mensagem de Canal" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "Mensagem Privada" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "Mensagem marcada" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "_Trocar estado" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "_Ausente" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "_de Volta" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "Mensagens com menções de: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "%umensagens com menções, ultima de %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "Mensagem de canal de: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "%u mensagens de canal. - %s" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "Mensagem privada de: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "%u mensagens privadas, ultima de %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "Oferta de ficheiro de: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "%u ofertas de ficheiros, ultima de: %s (%s) - %s" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Versão" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Descrição" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Seleccionar um Plugin ou Script para carregar" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "Plugins e Scripts - %s" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "_Carregar..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "_Terminar" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "_Recarregar" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "Guardar como..." + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "Registo bruto (%s) - %s" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "Limpar registo Raw" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Nova Rede" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Quer mesmo remover a rede \"%s\" e todos os seus servidores?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "O nome de utilizador não pode ficar em branco." + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "Você não pode ter uma alcunha vazia." + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "Tens de ter dois nomes de utilizador únicos." + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "A forma como te identificas ao servidor. Para métodos de login personalizados usa os comandos de conexão." + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "Editar %s - %s" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "Servidores" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "Entrar automaticamente nos canais" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "Comandos de ligação" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "%n=Nick\n%p=Senha\n%r=Nome real\n%u=Nome de utilizador" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "Palavra Passe" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "_Editar" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "Ligar apenas ao servidor seleccionado" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Não testar todos os servidores quando a ligação falha." + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "Conectar a esta rede automaticamente" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "Ignorar servidor proxy" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "Utilizar SSL para todos os servidores desta rede" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "Aceitar certificados SSL inválidos" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "Usar informação global do utilizador" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "_Nick:" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "Segunda escolha:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "Nome _Verdadeiro:" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "Nome de _Utilizador:" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "Método de login:" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Palavra passe:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "Senha usada para o login. Se na dúvida, deixa em branco." + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "Conjunto de caracteres:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "Lista de redes - %s" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "Informação do Utilizador" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "Terceira escolha:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Redes" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "Não mostrar lista de redes no arranque" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "Mostrar apenas favoritos" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "_Editar..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "_Ordenar" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "Classifica a lista de redes em ordem alfabética. Use as teclas Shift+Cima e Shift+Baixo para mover uma fila." + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "_Favorecer" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "Marcar ou desmarcar esta rede como favorita" + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "_Ligar" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "Afrikaans" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Albanês" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "Amharic" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "Asturian" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Azerbaijani" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "Basco" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Biela Russia" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Bulgaro" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "Chinês (Simplificado)" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "Chinês (Tradicional)" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "Checo" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "Danish" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "Holandês" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "Inglês (UK)" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "English" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Estónio" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "Finnish" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "Francês" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "Galego" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "Alemão" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "Grego" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "Gujarati" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "Hindu" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "Hungaro" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "Indonésio" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "Italiano" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "Japonês" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "Kannada" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "Kinyarwanda" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "Coreano" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "Latvian" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "Lituano" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "Macedonio" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Malaio" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "Malayalam" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "Norueguês (Bokmal)" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "Norueguês (Nynorsk)" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "Polaco" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "Português" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "Português (Brasil) " + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "Punjabi" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "Russo" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "Sérvio" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "Slovak" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "Slovenian" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "Espanhol" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "Sueco" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Thai" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "Turco" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "Ucraniano" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Vietenamita" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "Walloon" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Geral" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "Linguagem:" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "Fonte principal:" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Fonte:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "Caixa Texto" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "Nicks coloridos" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "Dar a cada utilizador no IRC uma cor diferente" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "Indentar nicks" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "Justificar nicks à direita." + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "Mostrar linha de marcação" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "Inserir linha vermelha após último texto lido." + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Imagem de fundo:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "Configurações de Transparência" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "Opacidade da janela:" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "Horas" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "Activar horas" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "Formato das horas:" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "Veja o artigo do MSDN strftime para mais detalhes." + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "Veja a página de manual strftime para mais detalhes." + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "Barra de título" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "Ver modos do canal" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "Mostrar número de utilizadores" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "Último utilizado" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "Caixa Entrada" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "Use a fonte e as cores da caixa de texto" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "Mostrar cores e atributos" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "Mostar caixa nick" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "Ver ícone do modo de utilizador na caixa de nick" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "Corretor ortográfico" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "Dicionários a utilizar:" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "Usa códigos de idioma (como em \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\nSepara múltiplas entradas com vírgulas." + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "Usa códigos de idioma. Separa múltiplas entradas com vírgulas." + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "Completar Nick" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "Sufixo para completar nick:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "Nick classificados por:" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "Quant. da conclusão de Nick:" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "Limite de nicks em que começa a listar em vez de completar" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "nicks." + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "Gráfico" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "A-Z, ops primeiro" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "Z-A, ops em ultimo" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "Desordenado" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "Esquerda (superior)" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "Esquerda (inferior)" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "Direito (superior)" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "Direita (inferior)" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Cima" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Baixo" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Escondido" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "Lista de Utilizadores" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "Mostrar endereço na lista de utilizadores" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "Utilizar as fontes e cores da caixa de texto" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "Ver ícones para os modos de utilizador" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "Usar ícones gráficos em vez de símbolos de texto na lista de utilizadores." + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "Nick em uso" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "Deseja nicks da mesma cor como no chat." + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "Mostrar contagem de utilizadores nos canais" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "Lista de utilizadores ordenada por:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "Mostrar lista de utilizadores em:" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "Controlar Ausência" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "Acompanha o estado de ausência dos utilizadores e marca-os em uma cor diferente" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "Em canais menores que:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "Ação de Duplo Clique" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "Gadgets Extra" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "Medidor atraso:" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "Medidor aceleração:" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Janelas" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Separadores" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "Sempre" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "Apenas separadores pedidos" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "Automático" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "Num separador extra" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "No separador inicial" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "Árvore" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "Alternador tipo:" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "Abrir separador para mensagens do servidor" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "Abrir nova guia quando receber mensagem privada" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "Ordenar separadores por ordem alfabética" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "Ver ícones na árvore do canal" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "Mostrar linhas pontilhadas na árvore de canal" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "Usa a roda do rato para mudar entre separadores" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "Clique no meio para fechar a guia" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "Texto pequeno" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "Focar separadores novos:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "Colocação de noticias:" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "Mostrar alternador de canal em:" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "Diminuir nome dos separadores para:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "letras." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "Separadores ou Janelas" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "Abrir canais em:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "Abrir diálogos em:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "Abrir utilitários em:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Abrir DCC, Ignorados, Notificações, etc, em separadores ou janelas?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "Mensagens" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "Scrollback" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "Pedir confirmação" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "Pedir pasta de transferências" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "Salvar sem interação" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "Ficheiros e Directorias" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "Aceitar automaticamente ficheiros:" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Receber ficheiros para:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "Mover ficheiros concluídos para:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "Gravar nick no nome do ficheiro" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "Abrir Automaticamente Janelas de DCC" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "Janela de Envio" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "Janela de Recepção" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "Janela de conversa" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "Velocidades Máximas de Transferência de Arquivos (Byte por Segundo)" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "Um envio:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "Velocidade máx. numa transferência" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "Uma transferência:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "Todas os envios combinados:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "Velocidade máx. para todo o tráfego" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "Todas as transfrências combinadas:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "Alertas" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "Mostrar notificações em:" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "Piscar o ícone de tarefas em:" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "Piscar na barra de tarefas em:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "Som de beep em:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "Tocar o som do sistema \"Notificação de Mensagem Instantânea\" mediante os eventos selecionados" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "Tocar \"message-new-instant\" do tema de sons de freedesktop.org mediante os eventos selecionados" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "Tocar um beep do GTK nos eventos selecionados" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "Omitir alertas quando ausente" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "Omitir alertas enquanto a janela está em foco" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "Comportamento da barra de notificações" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "Ativar ícone na barra de notificações" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "Minimiza para barra de notificações" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "Fecha para barra de notificações" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "Marcar como ausente/de volta automaticamente" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "Mudar automaticamente de status quando na bandeja." + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "Mostrar apenas notificações quando ocultas ou iconificadas" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "Mensagens marcadas" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Mensagens Marcadas onde seu nick é mencionado, mas também:" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "Palavras extra para marcar:" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "Nick para nunca marcar:" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "Nick para marcar sempre:" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Separe múltiplas palavras com vírgulas. caracteres universais ⏎ são aceites." + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "Piscar na barra de notificações em:" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "Mensagens Padrão" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "Desligar:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "Sair do canal:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "Ausente:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "Ausente" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Mostrar ausências uma única vez" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "Mostrar mensagens de ausência idênticas apenas uma vez." + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "Retirar ausência automaticamente" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "Desmarcar-se como ausente antes de enviar mensagens." + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "Variados" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "Mostrar os MODOs na forma natural" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "WHOIS após notificação" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "Envia um /WHOIS quando um utilizador da tua lista de notificação ficar online." + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "Ocultar mensagens de entrada e saída de canal" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "Ocultar mensagens de entrada/saída do canal por padrão." + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "Ocultar mensagens de alteração de nome de utilizador" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "*!*@*.host" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "*!*@domain" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "*!*user@*.host" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "*!*user@domain" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "Comportamento de cópia automática" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "Copiar texto selecionado automaticamente" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "Copie o texto selecionado para a área de transferência quando o botão esquerdo do rato é libertado. Caso contrário, Ctrl+Shift+C copiará o texto selecionado para a área de transferência." + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "Incluir horas automaticamente" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "Incluir automaticamente data e hora em linhas de texto copiadas. Caso contrário, inclui data e hora apenas se a tecla Shift estiver pressionada durante a seleção." + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "Incluir informações de cor" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "Incluir automaticamente informações de cor em linhas copiadas de texto. Caso contrário, inclui informações sobre cores apenas se a tecla Ctrl estiver pressionada durante a seleção." + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "Nome _Verdadeiro:" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "Fontes Alternativas:" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "Separa múltiplas entradas com vírgulas e sem espaços antes ou depois." + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "Ver listas compactadas" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "Use menos espaçamento entre as linhas de lista utilizadores / árvores de canal." + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "Usar tempo do servidor se suportado" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "Mostrar data e hora obtidos do servidor se ele suportar a extensão time-server." + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "Reconectar automaticamente aos servidores após desconexão" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "Período para re-ligar:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "Período para ligar:" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "Tipo de Banimento:" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "Tenta usar esta máscara de banimento para banir ou silenciar. (requer irc_who_join)" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Registos" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "Ver scrollback da sessão anterior" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "Scrollback linhas:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "Ativar registro de conversas para o disco" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "Nome do ficheiro de registos" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Servidor %c=Canal %n=rede." + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "Inserir hora das mensagens nos registos" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "Formato hora das mensagens do registo:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URLs" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "Ativar registro de URLs para o disco" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "Ativar apanha URL" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "Número máximo de URLs para apanhar:" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(Desligado)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "SOCKS4" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "SOCKS5" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "Automático" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "Todas as conexões" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "Apenas servidor de IRC" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "Somente DCC" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "Seu Endereço IP" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "Ligar a:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "Útil apenas para computadores com vários endereços." + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "Transferência de Ficheiros" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "Obter endereço através do servidor de IRC" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "Pergunta ao servidor de IRC o teu endereço real. Utiliza se tiveres um endereço 192.168.*.*!" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "Endereço IP de DCC" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "Utilizar este endereço quando oferta ficheiros." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "Primeira porta de escuta do DCC:" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "Última porta de escuta do DCC:" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "!Deixar portas a zero para alcance máximo." + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "Servidor Proxy:" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "Host:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Porta:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Tipo:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "Utilizar proxy para:" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "Autenticação Proxy" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "Use autenticação (somente HTTP ou SOCKS5)" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "Utilizador:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "Servidor de Identidade" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "Activado" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "O servidor responderá com o nome de utilizador da rede" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "Você deve ter permissões para escutar nesta porta. Se não for 113 (o padrão é 0), você deverá configurar o reencaminhamento de porta." + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "Selecionar um Ficheiro de Imagem" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "Selecionar Pasta de Transferências" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Selecionar fonte" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Selecionar..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "Abrir Pasta Data" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Seleccionar cor" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "Cores de Texto" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "Cores do mIRC:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "Cores locais:" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Frente:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Fundo:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "Texto Selecionado" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "Cores da Interface" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "Novos dados:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "Linha de marcador:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "Nova mensagem:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "Utilizador ausente:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "Marcar:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "Corretor ortográfico:" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "Exclusão Cor " + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Evento" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "Ficheiro de som:" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "Seleccionar um ficheiro de som" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "Ficheiro de som:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "_Percorrer..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "_Tocar" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Interface" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "Aparência" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Caixa de entrada" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Lista de utilizadores" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "Mudar de canal" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Cores" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Conversar" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "Sons" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "Avançadas" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Configuração de Rede" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Transferência de ficheiros" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "Identidade" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Categorias" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "Você não pode colocar a árvore na parte superior ou inferior! ⏎ por favor mude para as <b>Guias</ b> disposição no <b>Ver</ b> primeiro menu." + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "A opção Nome real não pode ser deixada em branco. Voltando a \"realname\"." + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Algumas alterações necessitam que reinicie o programa." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*AVISO*\nAceitar automaticamente DCC no diretório do utilizador pode ser perigoso. Por exemplo, uma pessoal mal intencionada pode enviar-te um .bash_profile" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "Preferências - %s" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "<i>(sem sugestões)</i>" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "Mais..." + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "Juntar \"%s\" a Dicionário" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "Ignorar tudo" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "Sugestões Ortografia" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "encantar erro para a linguagem: %s" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "Houve um erro ao processar a frase" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Este sinal apenas passa %d argumentos, $%d é inválido" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "Escrever Ficheiro de Textos" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ Número" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Editar Eventos" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "Carregar De..." + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Testar todos" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "OK" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "Coletor de URLs - %s" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Limpar lista" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Copiar URL seleccionado" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Copiar" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Gravar lista para ficheiro" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d ops, %d total" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "Abrir um URL irc://servidor:porta/canal" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "Sysinfo: Falha ao obter informações. Não suportado ou erro." + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "Sysinfo: Nenhuma informação com esse nome\n" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "Sysinfo: %s definido como: %d\n" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "Sysinfo: As configurações válidas são: announce e hide_ * para cada informação. por exemplo: hide_os. Sem um valor, ele mostrará a configuração atual (ou padrão).\n" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "Sysinfo: nome da variável inválido\n" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "%s plugin carregado\n" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "%s plugin descarregado\n" diff --git a/hexchat/po/pt_BR.po b/hexchat/po/pt_BR.po new file mode 100644 index 0000000..71a1bb0 --- /dev/null +++ b/hexchat/po/pt_BR.po @@ -0,0 +1,6265 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Aníbal Deboni Neto <adneto@outlook.com>, 2014-2016,2018 +# Flamarion Jorge <flamarilinux@yahoo.com.br>, 2009 +# Flamarion Jorge <jorge.flamarion@gmail.com>, 2012 +# Flamarion Jorge <jorge.flamarion@gmail.com>, 2012 +# Frédéric L. W. Meunier <fredlwm@olympiquedemarseille.org>, 20, 2009 +# Leonardo Pires Felix <leonardo@piresfelix.com>, 2013 +# Matheus Felipe Braga, 2014,2016 +# Matheus Felipe Braga, 2014,2016 +# Matheus Macabu <mkbu95@gmail.com>, 2012 +# Matheus Macabu <mkbu95@gmail.com>, 2012 +# Rodrigo de Araujo <araujorodrigo1984@gmail.com>, 2016 +# Rodrigo de Araujo <araujorodrigo1984@gmail.com>, 2016 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-05-13 01:10+0000\n" +"Last-Translator: Aníbal Deboni Neto <adneto@outlook.com>\n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/hexchat/hexchat/language/pt_BR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "HexChat" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "Cliente IRC" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "HexChat é um cliente IRC extensível e fácil de usar. Ele permite que, de forma segura, você acesse múltiplas redes e tenha conversas privadas com outros usuários ou ainda em canais públicos, tudo isso através de uma interface personalizável. Você poderá até mesmo transferir arquivos." + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "HexChat suporta recursos como: DCC, SASL, proxies, corretor ortográfico, alertas, registros, temas personalizados, e scripts em Python/Perl" + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "Janela principal de bate-papo" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "Converse com outras pessoas na rede" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "IM;Chat;" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "hexchat" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "Abrir modo seguro" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "Gerenciador de temas" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Estou ocupado" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Saindo..." + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "Desligar" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "Ligar" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "{nãodefinido}" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Rede" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<nenhum>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Canal" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Aguardando" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Ativo" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Sem sucesso" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Pronto" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Conectar" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Cancelado" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "Impossível acessar %s\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Erro" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s te oferece \"%s\". Quer aceitar?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "Nenhum DCC ativo\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "Iniciar c_onversa" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "_Enviar arquivo" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "_Informações (Whois)" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "_+ Amigos" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "_Ignorar" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "O_perador" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "+ op" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "- op" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "+v" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "-v" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Chutar/Banir" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Chutar" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "Banir" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "Chutar & banir" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Sair do canal" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Entrar num canal" + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "Informe o canal a entrar:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Links de servidores" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Pingar servidor" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Esconder a versão" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Op" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "tchau" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Qual o motivo para chuta--lo(a) %s:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "Enviar arquivo" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "Conversa" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "Quem É" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Enviar" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Conversar" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Limpar" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Pingar" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "Você não tem permissão de escrita a %s. Nada desta sessão poderá ser salvo." + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* Executar um IRC como root é estupidez. Você deve\n criar uma conta de usuário e usá-la para fazer o login.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "SIM " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "NÃO " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Você está recebendo um CTCP flood de %s, ignorando %s\n\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "Você está recebendo muitas mensagens consecutivas de %s, o parâmetro gui_autoopen_dialog será DESATIVADO.\n" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "Resolvido para %s" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "Não encontrado" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "Resolvido para:" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "Procurando %s..." + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s conectou-se\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s desconectou-se\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Você não entrou em canal algum. Tente /join #<canal>\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Não conectado. Tente /server <host> [porta]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "Servidor %s já existe na rede %s.\n" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "Servidor %s adicionado a rede %s.\n" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Já está ausente: %s\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "Já está de volta\n" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "Eu preciso do /bin/sh para executar!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "Comandos disponíveis:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "Comandos definidos pelo usuário:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "Comandos definidos por plugins:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Digite /HELP <comando> para mais informações, ou /HELP -l" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Argumento desconhecido ignorado '%s'." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "Silêncio não é suportado por este servidor." + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "Plugin não encontrado\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "Este plugin se recusa a descarregar\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <nome> <ação>, adiciona um botão abaixo da lista de usuários" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "ADDSERVER <NovaRede> <novoservidor/6667>, adiciona uma nova rede com um novo servidor a lista de redes" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <comando>, envia um comando para todos os canais em que você estiver" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "ALLCHANL <comando>, envia um comando para todos os canais no servidor atual" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <comando>, envia um comando para todos os servidores em que você estiver" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "AWAY [<razão>], torna você ausenta (use /BACK para voltar)" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "BACK, trás você de volta (não ausente)" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAM <mask> [<bantype>], bane todos os usuários com a máscara correspondente no canal atual. Esse comando não os expulsará caso eles ainda estejam no canal (necessário ChanOp)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <variável> [<valor>]" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "CHARSET [<codificação>], obtém ou altera a codificação usada na conexão atual" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "CLEAR [ALL|HISTORY|[-]<quantidade>], Limpa o texto da janela atual ou histórico de comandos" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "CLOSE [-m], Fecha a janela/aba atual, fechando a janela se esta for a única aba aberta, ou com \"-m\", fecha todas as conversas privadas. " + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <código|valor coringa>, procura pelo código de um país, ex: br = brasil" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <usuário> <mensagem>, envia uma mensagem CTCP ao usuário, mensagens comuns são VERSION e USERINFO" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "CYCLE [<canal>], Sai do canal atual, ou de um escolhido, e entra novamente" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <apelido> - aceita uma oferta de arquivo\nDCC SEND [-maxcps=#] <apelido> [arquivo] - envia um arquivo a um usuário\nDCC PSEND [-maxcps=#] <apelido> [arquivo] - envia um arquivo em modo passivo a um usuário\nDCC LIST - exibe a lista de DCCs\nDCC CHAT <apelido> - oferece um DCC CHAT\nDCC PCHAT <apelido> - oferece um DCC CHAT em modo passivo\nDCC CLOSE <tipo> <apelido> <arquivo> exemplo:\n /dcc close send josesilva arquivo.tar.gz" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <usuário>, remove o estado de meio-operador do usuário no canal ativo (necessita ChanOp)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <nome> apaga um botão da parte inferior da lista de usuários" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <usuário>, remove o estado de operador de um usuário no canal ativo (necessita ChanOp)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <usuário>, remove o estado de voz de um usuário no canal ativo (necessita ChanOp)" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, Desconecta do servidor" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "DNS <usuário|host|ip>, Resolve um IP ou hostname" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "DOAT <channel,list,/network> <command>" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <texto>, Exibe um texto localmente" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <comando>, executa um comando na shell. Se o modo -o for usado, então o resultado do comando será enviado ao canal ativo, ou então exibido na caixa de texto ativa" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, envia SIGCONT ao processo" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9], elimina um comando exec ativo na sessão atual. Se o modo -9 for utilizado, o processo designado é terminado com SIGKILL" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, envia SIGSTOP ao processo" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, envia dados ao stdin do processo" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "EXPORTCONF, exporta as configurações do HexChat" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, esvazia a lista de envios do servidor ativo" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <host> [<porta>], cria uma conexão proxy através de um host, a porta padrão é 23" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <usuário) [senha], Encerra a conexão de um usuário fantasma" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <usuário>, concede estado de meio-operador a um usuário (necessita ChanOp)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <senha>, faz identificação do apelido junto ao NickServ" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <máscara> <tipos> <opções>\nmáscara - máscara do host a ignorar, ex: *!*@*.telesp.net.br\ntipos - tipo de dado a ignorar, dentre as opções:\nPRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\nopções - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <usuário> [<canal>], convida alguém para entrar no canal, por padrão o canal ativo (necessita ChanOp)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <canal>, entra no canal" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "KICK <usuário> [motivo], chuta o usuário do canal ativo (necessita ChanOp)" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "KICKBAN <usuário> [motivo], bane e então chuta o usuário do canal ativo (necessita ChanOp)" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, força uma nova verificação do lag" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "LASTLOG [-h] [-m] [-r] [--] <fragmento>, pesquisa por um dado fragmento nos registros\nUse -h para dar destaque ao fragmento encontrado\nUse -m para somente palavras inteiras\nUse -r quando o fragmento for um Expressão Regular\nUse -- (duplo hífen) para encerrar as opções quando pesquisando, use, a opção '-r'" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <arquivo>, carrega um plug-in ou script" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, Remove, em massa, o estado dos meio-operadores no canal ativo (necessita ChanOp)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, Remove, em massa, o estado de todos os operadores do canal ativo (necessita ChanOp)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <ação>, envia a ação para o canal ativo (ações são geralmente escritas em 3ª pessoa, ex: /me pula)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "MHOP, Concede estado de meio-operador em massa no canal ativo (é necessário ser operador)" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, Chuta todos os usuário do canal ativo com exceção de você (necessita ChanOp)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, Concede modo de operador a todos os usuários do canal ativo (necessita ChanOp)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "MSG <usuário> <mensagem>, envia uma mensagem privada. Ao utilizar \".\", no lugar de um apelido de usuário, a mensagem é encaminhado ao último usuário, ou prefixe com \"=\" para enviar a um dcc chat" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "NAMES [canal], Lista os usuários presentes em um canal" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <usuário> <mensagem>, Envia uma notificação CTCP" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <hostname> [<porta>]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <nickname>, altera seu apelido" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "NOTICE <usuário/canal> <mensagem>, envia uma aviso" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [-n rede1[,rede2,...]] [<usuário>], exibe sua lista de amigos ou adiciona alguém a ela" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <nick>, concede estado de operador ao usuário (necessita ChanOp)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<canal>] [<motivo>], sai do canal, por padrão o canal ativo" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <usuário | canal>, envia um CTCP ping a um usuário ou canal" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "QUERY [-nofocus] <usuário> [mensagem], abre uma nova janela de conversa privada e, opcionalmente, também envia uma mensagem" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "QUIET <máscara> [<tipodesilencio>], silencia todos os usuários que possuam uma dada máscara no canal ativo, contanto que esta ação seja suportada pelo servidor" + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<motivo>], desconecta do servidor atual" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <texto>, envia um texto em formato puro para o servidor" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<host>] [<porta>] [<senha>], Pode ser usado apenas digitando /RECONNECT para reconectar ao servidor atual ou com /RECONNECT ALL para reconectar a todos os servidores ativos" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<host>] [<porta>] [<senha>], Pode ser usado apenas digitando /RECONNECT para reconectar ao servidor atual ou com /RECONNECT ALL para reconectar a todos os servidores ativos" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "RECV <texto>, envia dados puros ao HexChat, como se estes fossem recebidos diretamente do servidor IRC" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "RELOAD <nome>, recarrega um plugin ou script" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <texto>, envia texto para a janela ativa" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <nick> [<arquivo>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <host> <porta> <canal>, conecta e entra em um canal" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <host> <porta> <canal>, conecta e entra em um canal" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "SERVER [-ssl] <host> [<porta>] [<senha>], conecta a um servidor. Por padrão, a porta 6667 é para conexões normais e a 6697 para conexões com SSL" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <host> [<porta>] [<senha>], conecta a um servidor, a portão padrão é 6667" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-off|-on] [-quiet] <variável> [<valor>]" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "SETCURSOR [-|+]<posição>, reposiciona o cursos na caixa de entrada " + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "SETTAB <novo nome>, altera o nome da aba, no entando o valor ajustado para tab_trunc ainda será respeitado" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "SETTEXT <novo texto>, muda o texto da caixa de entrada" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<topic>], ajusta um novo tópico, caso nenhum seja informado, exibe o tópico atual" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "\nTRAY -f <timeout> <file1> [<file2>] Alterna a bandeja piscando entre dois ícones.\nTRAY -f <arquivo> Ajusta a bandeja para um ícone.\nTRAY -i <número> Pisca a bandeja com o ícone interno.\nTRAY -t <texto> Ajusta as dicas da bandeja.\nTRAY -b <titulo> <texto> Ajusta o balão da bandeja" + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <mascara> [<mascara>...], tira o banimento das mascaras escolhidas." + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <mascara> [QUIET]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <nome>, descarrega um plug-in ou script" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "UNQUIET <mascara> [<mascara>...], tira o silêncio das máscaras escolhidas quando suportado pelo servidor." + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, abre a URL no seu navegador" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "USELECT [-a] [-s] <apelido1> <apelido2> etc, destaca o usuário(s) na lista do canal" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <nick>, concede voz a alguém (necessita ChanOp)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <mensagem>, envia uma mensagem a todos os canais" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <mensagem>, envia uma mensagem a todos os operadores do canal ativo" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "Comando personalizado para: %s\n" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "Uso: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nNenhuma ajuda disponível para este comando.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "Comando inexistente.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "Argumento inválido para o comando.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "Excesso de comandos recursivos, cancelando." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "Comando desconhecido %s. Tente /help\n" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "O símbolo para hexchat_plugin_init não foi encontrando. Este arquivo é realmente um plugin do HexChat?" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "*\tServiço de ident requisitado de %s como %s" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "*\tErro ao iniciar servidor identd: %s" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "IDENTD <porta> <usuário>" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "Timer %d apagado.\n" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "Número de referência não encontrado.\n" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "Nenhum timer em funcionamento.\n" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr " Ref# Segundos Repetições Comando \n" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "%5d %8.1f %7d %s\n" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Tem certeza que esse é um servidor e porta que suportam SSL?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "Impossível resolver hostname %s\nVerifique suas configurações de IP!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "Travessia de proxy mal sucedida.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Rodando para o próximo servidor em %s...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "Aviso: o conjunto de caracteres \"%s\" é desconhecido. Não será utilizada nenhuma conversão para rede %s." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "%C18*%O$t%C18$1%O adicionado(a) ao amigos" + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "%C22*%O$t%C22$1%O: %C18$2%O por %C24$4%O em %C26$3%O" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "%C22*%O$tNão foi possível entrar no canal %C22$1 %O(%C20Você está banido%O)." + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "%C29*%O$tCapacidade aprendidas: %C29$2%O" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "%C29*%O$tCapacidades removidas: %C29$2%O" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "%C23*%O$tCapacidades suportadas: %C29$2%O" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "%C23*%O$tCapacidades requeridas: %C29$1%O" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "%C24*%O$t%C28$1%O mudou de apelido para %C18$2%O" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O baniu %C18$2%O" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "%C22*%O$tCanal %C22$1%O criado em %C24$2%O" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O retirou o estado de meio-operador de %C18$2%O" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O retirou o estado de operador de %C18$2%O" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O retirou a voz de %C18$2%O" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%C isentou %C18$2%O" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O concedeu estado de meio-operador a %C18$2%O" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%C ajustou isenção de convites em %C18$2%O" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%UCanal Usuários Tópico" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "%C22*%O$t%C26$1%O ajustou os modos %C24$2$3%O em %C22$4%O" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "%C22*%O$tCanal %C22$1%O modos: %C24$2" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O concedeu estado de operador a %C18$2%O" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O definiu silêncio em %C18$2%O" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O removeu a isenção em %C18$2%O" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O removeu a isenção de convites em %C18$2%O" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "%C22*%O$t%C26$1%O removeu a palavra-chave do canal" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "%C22*%O$t%C26$1%O removeu o limite de usuários" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O mudou a palavra-chave do canal para %C24$2%O" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O limitou o canal a %C24$2%O usuários" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O tirou banimento de %C18$2%O" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O removeu silêncio de %C18$2%O" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "%C22*%O$tCanal %C22$1%O url: %C24$2" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O concedeu voz a %C18$2%O" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "%C23*%O$tConectado. Agora, identificando-se." + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "%C23*%O$tConectando a %C29$1%C (%C23$2:$3%O)" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "%C20*%O$tFalha na conexão (%C20$1%O)" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "%C24*%O$tVocê recebeu um CTCP %C24$1%C de %C18$2%O" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "%C24*%C$tVocê recebeu um CTCP %C24$1%C de %C18$2%C (para %C22$3%C)%O" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "%C24*%O$tVocê recebeu um CTCP Sound %C24$1%C de %C18$2%O" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "%C24*%O$tVocê recebeu um CTCP Sound %C24$1%C de %C18$2%C (para %C22$3%O)" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "%C23*%O$tDCC CHAT com %C18$1%O cancelado." + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "%C24*%O$tDCC CHAT conexão estabelecida com %C18$1%C %C30[%C24$2%C30]%O" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "%C20*%O$tDCC CHAT com %C18$1%O foi perdido (%C20$4%O)" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "%C24*%O$tVocê recebeu uma proposta de DCC CHAT de %C18$1%O" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "%C24*%O$tPropondo DCC CHAT para %C18$1%O" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "%C24*%O$tVocê já propôs um CHAT com %C18$1%O" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "%C20*%O$tDCC $1 a tentativa de se conectar a %C18$2%O foi mal sucedida (%C20$3%O)" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "%C23*%O$tRecebido '%C23$1%C' de %C18$2%O" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "%C16,17 Tipo De/Para Estado Tamanho Pos Arquivo" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "%C20*%O$tVocê recebeu um pedido de DCC mal formado vindo de %C18$1%O.$a010%C23*%O$tConteúdo dos pacotes: %C23$2%O" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "%C24*%O$tPropondo '%C24$1%O' para %C18$2%O" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "%C23*%O$tNão existe a proposta de DCC." + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "%C23*%O$tDCC RECV '%C23$2%O' para %C18$1%O cancelado." + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "%C24*%O$tDCC RECV '%C23$1%O' de %C18$3%O concluído %C30[%C24$4%O cps%C30]%O" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$tDCC RECV conexão estabelecida com %C18$1 %C30[%O%C24$2%C30]%O" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "%C20*%O$tDCC RECV '%C23$1%O' de %C18$3%O mal sucedido (%C20$4%O)" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "%C20*%O$tDCC RECV: Não foi possível abrir '%C23$1%C' para gravação (%C20$2%O)" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "%C23*%O$tO arquivo '%C24$1%C' já existe, no entanto, salvaremos como '%C23$2%O'." + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "%C24*%O$t%C18$1%C solicitou continuar '%C23$2%C' de %C24$3%O." + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "%C23*%O$tDCC SEND '%C23$2%C' para %C18$1%O cancelado." + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "%C24*%O$tDCC SEND '%C23$1%C' para %C18$2%C concluído %C30[%C24$3%C cps%C30]%O" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$tDCC SEND conexão estabelecida com %C18$1 %C30[%O%C24$2%C30]%O" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "%C20*%O$tDCC SEND '%C23$1%C' para %C18$2%C mal sucedido (%C20$3%O)" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "%C24*%O$t%C18$1%C ofereceu '%C23$2%C' (%C24$3%O bytes)" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "%C20*%O$tDCC $1 '%C23$2%C' para %C18$3%O estagnou-se e será cancelado." + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "%C20*%O$tDCC $1 '%C23$2%C' para %C18$3%O esgotou o tempo e será cancelado." + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "%C24*%O$t%C18$1%O removido dos amigos" + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "%C20*%O$tDesconectado (%C20$1%O)" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "%C24*%O$tSeu IP foi encontrado: %C30[%C24$1%C30]%O" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "%O%C18$1%O será ignorado." + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "%OAlterada forma de ignorar %C18$1%O." + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "%C16,17" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "%O%C18$1%O não será mais ignorado." + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "%ONinguém sendo ignorado." + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "%C20*%O$tNão foi possível entrar no canal %C22$1%C (%C20Entrada somente por convite%O)" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "%C24*%O$tVocê foi convidado a entrar no canal %C22$1%O por %C18$2%O (%C29$3%O)" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "%C23*$t$1 ($3%C23) entrou" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "%C20*%O$tNão foi possível entrar no canal %C22$1%C (%C20Necessita palavra-chave%O)" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "%C22*%O$t%C26$1%C chutou %C18$2%C do %C22$3%C (%C24$4%O)" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "%C19*%O$t%C19Sua conexão foi encerrado por %C26$1%C (%C20$2%O)" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "%C29*%O$t%C29O MOTD não será exibido%O" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "%C23*%O$t%C28$1%C já está em uso. Tentando novamente com %C18$2%O..." + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "%C23*%O$t%C28$1%C está incorreto. Tentando novamente com %C18$2%O..." + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "%C20*%O$tO apelido está incorreto ou já esta em uso. Use /NICK para tentar outro." + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "%C20*%O$tO DCC não existe." + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "%C23*%O$tNão há processo em execução" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "%C23*%O$tNotificação: %C18$1%C está ausente (%C24$2%O)" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "%C23*%O$tNotificação: %C18$1%C voltou" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tLista de amigos vazia." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "%C16,17 Lista de notificações" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "%C23*%O$t%C23$1%O amigos." + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "%C23*%O$tNotificação: %C18$1%C desconectou-se (%C29$3%O)" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "%C23*%O$tNotificação: %C18$1%C conectou-se (%C29$3%O)" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "%C24*$t$1 ($2%C24) saiu" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "%C24*$t$1 ($2%C24) saiu ($4)" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "%C24*%O$tResposta do ping de %C18$1%C: %C24$2%O segundo(s)" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "%C20*%O$tSem resposta de ping por %C24$1%O segundos, desconectando." + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "%C24*%O$tUm processo já está em execução" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "%C24*$t$1 desconectou-se ($2)" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "%C24*%O$t%C26$1%C definiu os modos %C30[%C24$2%C30]%O" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "%O-%C29$1/Wallops%O-$t$2" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "%C24*%O$tProcurando IP de %C18$1%O..." + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "%C23*%O$tAutenticando via SASL como %C18$1%O (%C24$2%O)" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "%C29*%O$tConectado." + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "%C29*%O$tLocalizando %C29$1%O" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "%C23*%O$tA tentativa prévia de conexão interrompida (%C24$1%O)" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "%C22*%O$tTópico para %C22$1%C é: $2%O" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "%C22*%O$t%C26$1%C alterou o tópico para: $2%O" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "%C22*%O$tTópico do %C22$1%C definido por %C26$2%C (%C24$3%O)" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C20*%O$tEndereço desconhecido. Será que você não errou na digitação?" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "%C20*%O$tNão foi possível entrar em %C22$1%C (%C20O limite de usuários foi atingido%O)" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "%C22*%O$tUsuários em %C22$1%C: %C24$2%O" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%C está ausente %C30(%C23$2%O%C30)%O" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "%C23*%O$t%C28[%C18$1%C28] %OFim do WHOIS." + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O inativo %C23$2%O" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O inativo %C23$2%O, entrada: %C23$3%O" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O Endereço verdadeiro: %C23$2%O, IP verdadeiro: %C30[%C23$3%C30]%O" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "%C19*%O$tAgora falando em %C22$2%O" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "%C19*%O$tVocê foi chutado de %C22$2%C por %C26$3%O (%C20$4%O)" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "%C19*%O$tVocê saiu do canal %C22$3%O" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "%C19*%O$tVocê saiu do canal %C22$3%C (%C24$4%O)" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "%C20*%O$tVocê convidou %C18$1%O para %C22$2%O (%C24$3%O)" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "%C20*%O$tVocê mudou de apelido para %C18$2%O" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "Registro carregado de" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** REGISTRO FINALIZANDO EM %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** REGISTRO COMEÇANDO EM %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "* Não foi possível abrir os registros para escrita. Verifique\nsuas permissões em %s" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "Mensagem da esquerda" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "Mensagem da direita" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "Endereço de IP" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Usuário" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "O apelido da pessoa que está entrando" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "O canal que se está entrando" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "Host da pessoa" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "Conta da pessoa" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Apelido" + +#: src/common/text.c:980 +msgid "The action" +msgstr "Ação" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "Modo char" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "Texto identificado" + +#: src/common/text.c:987 +msgid "The text" +msgstr "Texto" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "Mensagem" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Servidor" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "Habilidades aprendidas" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "Habilidades removidas" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "Habilidades do servidor" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "Habilidades requeridas" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Apelido antigo" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Novo apelido" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "Apelido da pessoa que alterou o tópico" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Tópico" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "Apelido de quem chutou" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "Apelido de quem foi chutado" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "Canal" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "Motivo" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "Apelido da pessoa que está saindo" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "Tempo" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "Criador" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Apelido" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Motivo" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Host" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "De quem é isso" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "Hora no formato x.x (veja abaixo)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "O canal para onde isso vai" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "Som" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "Apelido da pessoa" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "Evento CTCP" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "Apelido da pessoa que definiu a chave" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "Chave" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "Apelido da pessoa que definiu o limite" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "Limite" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "Apelido da pessoa que definiu o estado de operador" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "Apelido da pessoa que recebeu o estado de operador" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "Apelido da pessoa que recebeu estado de meio-operador" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "Apelido da pessoa de concedeu modo de meio-operador" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "Apelido da pessoa que concedeu voz" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "Apelido da pessoa que recebeu voz" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "Apelido da pessoa que baniu" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "Máscara do banimento" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "Apelido da pessoa que silenciou" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "Máscara silenciada" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "Apelido de quem removeu a chave" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "Apelido de quem removeu o limite" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "Apelido da pessoa que fez o deop" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "Apelido da pessoa que teve o estado de operador removido" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "Apelido da pessoa que fez o dehalfop" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Apelido da pessoa que teve o modo de meio-operador removido" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "Apelido da pessoa que fez o devoice" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "Apelido da pessoa que teve a voz removida" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "Apelido da pessoa que desbaniu" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "Apelido da pessoa que remove o silenciamento" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "Apelido da pessoa que fez a isenção" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "Máscara de isenção" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "Apelido da pessoa que removeu a isenção" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "Apelido da pessoa que fez o convite" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "Máscara de convite" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "Apelido da pessoa que removeu o convite" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "Apelido da pessoa de definiu o modo" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "Sinal do modo (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "Letra do modo" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "O canal foi configurado em" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Nome completo" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Afiliação de Canal/\"É um operador IRC\"" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Informações do servidor" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Tempo inativo" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Tempo conectado" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Motivo da ausência" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Mensagem" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Conta" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "Endereço usuario@host verdadeiro" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "IP verdadeiro" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Nome do canal" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "Mecanismo" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "Número ou identificador" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Texto" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Apelido da pessoa que te convidou" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Usuários" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "Apelido em uso" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Apelido em tentativa" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Porta" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "Linha dos modos" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "Tipo de DCC" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Nome do arquivo" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Nome do arquivo destino" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "Caminho" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Posição" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Tamanho" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "String de DCC" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "Motivo da ausência" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "Número de itens notificados" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Antigo nome do arquivo" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Novo nome do arquivo" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Recebidos" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Máscara do host" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Hostname" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "Pacote" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "Segundos" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "Apelido da pessoa que foi convidada" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Máscara banida" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "Quem baniu" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Hora do banimento" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "Não foi possível reproduzir o som:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "O computador remoto encerrou a conexão" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "Conexão recusada" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "Sem rota para o host" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Tempo esgotado para conexão" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "Não foi possível associar o endereço" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "Conexão terminada pela outra ponta" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "Ilha de Ascensão" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Emirados Árabes Unidos" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "Aviação-Áreas relacionadas" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Afeganistão" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Antigua e Barbuda" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Albânia" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Armênia" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Antilhas Holandesas" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Antarctica" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Argentina" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "DNS reverso" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Samoa Americana" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "Região da Ásia-Pacífico" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Austria" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "Fiel OTAN" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Austrália" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "Ilhas Aland" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Azerbaijão" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Bosnia e Herzegovina" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Bangladesh" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Bélgica" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Bulgaria" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Bahrain" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "Negócios" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Brunei Darussalam" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Bolívia" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Brasil" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Bahamas" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Butão" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Ilha Bouvet" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Belarus" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Canadá" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "Catalão" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Ilhas Côco" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "República Democrática do Congo" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "República Centro-Africana" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Congo" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "Suíça" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "Costa do Marfim" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Ilhas Cook" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Chile" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Camarões" + +#: src/common/util.c:738 +msgid "China" +msgstr "China" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Colombia" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Comercial InterNIC" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "Cooperativas" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "Sérvia e Montenegro" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Cuba" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Cabo Verde" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Ilhas Natal" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Chipre" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "República Tcheca" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "Alemanha oriental" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Alemanha" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Djibouti" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Dinamarca" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Dominica" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "República Dominicana" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Argélia" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Equador" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Instituição Educacional" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Estônia" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Egito" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Saara Ocidental" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Eritreia" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "Espanha" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Etiópia" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "União Europeia" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Finlândia" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Fiji" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Ilhas Falkland" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Micronésia" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Ilhas Faroé" + +#: src/common/util.c:770 +msgid "France" +msgstr "França" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Gabão" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Grã-Bretanha" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Granada" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Georgia" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Guiana Francesa" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "Ilhas do Canal Inglês" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Gana" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Groenlândia" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Gâmbia" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Guiné" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Governamental" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Guadalupe" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Guiné Equatorial" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Grécia" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Ilhas Geórgia do Sul e Sandwich do Sul" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Guiné-Bissau" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Guiana" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Ilha Heard e Ilhas McDonald" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Croácia" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Hungria" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Indonésia" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Irlanda" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Israel" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "Ilha de Man" + +#: src/common/util.c:801 +msgid "India" +msgstr "Índia" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "Informativo" + +#: src/common/util.c:803 +msgid "International" +msgstr "Internacional" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Territórios Britânicos no Oceano Indico" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Iraque" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "Irã" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Islândia" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Itália" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Jamaica" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Jordânia" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "Empregos em companhias" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Japão" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Quênia" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Quirguistão" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Camboja" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Quiribáti" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Comores" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "São Cristóvão e Nevis" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Coreia do Norte" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Coreia do Sul" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Kuwait" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Ilhas Cayman" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Cazaquistão" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Líbano" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Santa Lucia" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Libéria" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Lesoto" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Lituânia" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Luxemburgo" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Letônia" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Líbia" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Marrocos" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Mônaco" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Moldávia" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "Montenegro" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "Medicina dos Estados Unidos" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Madagascar" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Ilhas Marshall" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Militar" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Macedônia" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Mongólia" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Macau" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "Dispositivos móveis" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Ilhas Marianas do Norte" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Martinica" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Mauritânia" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Maurício" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "Museus" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Maldivas" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Malaui" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "México" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Malásia" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Moçambique" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Namíbia" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "Nomes de indivíduos" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Nova Caledônia" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Níger" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Rede InterNIC" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Ilha Norfolk" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Nigéria" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Países Baixos" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Noruega" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Niuê" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "Nova Zelândia" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Omã" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "Organização sem fins lucrativos InterNIC" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Panamá" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Polinésia Francesa" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Papua Nova Guiné" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Filipinas" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Paquistão" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Polônia" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "São Pedro e Miquelão" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Ilhas Pitcairn" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Porto Rico" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "Profissões" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "Território Palestino" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Portugal" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Paraguai" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Catar" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Reunião" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Romênia" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "Estilo antigo da ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "Sérvia" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Federação Russa" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Ruanda" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Arábia Saudita" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Ilhas Salomão" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Seicheles" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Sudão" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Suécia" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Singapura" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "Santa Helena" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Eslovênia" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Ilhas Svalbard e Jan Mayen" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "República Eslovaca" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Serra Leoa" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Somália" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Suriname" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "Sudão do Sul" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "São Tomé e Príncipe" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Extinta União Soviética" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Síria" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Suazilândia" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Ilhas Turks e Caicos" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Chade" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "Serviços de Comunicação da Internet" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "Territórios Franceses do Sul" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Tailândia" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Tajiquistão" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "Toquelau" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Timor-Leste" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Turcomenistão" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Tunísia" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Turquia" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "Viagem e Turismo" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Trinidad e Tobago" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Tanzânia" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Ucrânia" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Reino Unido" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "Estados Unidos da América" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Uruguai" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Uzbequistão" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Cidade Estado do Vaticano" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "São Vicente e Granadinas" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "Ilhas Virgens Britânicas" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "Ilhas Virgens dos EUA" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Vietnã" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "Ilhas Wallis e Futuna" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "Entretenimento Adulto" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Iêmen" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Iugoslávia" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "África do Sul" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Zâmbia" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Zimbábue" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "Não foi possível conectar a sessão" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "Falha ao completar NameHasOwner" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "Falha ao completar comando" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "acesso remoto" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "plugin para acesso remoto via DBUS" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Não foi possível conectar a sessão: %s\n" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Falha ao adquirir %s: %s\n" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Mapa de caracteres" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "Banimentos" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "Isenções" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "Isento" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "Convites" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Convidar" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "Silenciados" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "Silenciar" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "Copiar máscara" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "%s em %s por %s" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "Copiar entrada" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "Não conectado." + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "Você precisa selecionar alguns banimentos" + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "Tem certeza que deseja remover todo conteúdo listado em %s?" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "Tipo" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Máscara" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "De" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Data" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Só é possível abrir a lista de banimentos enquanto a janela do canal estiver ativa." + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "Lista de banimentos (%s) - %s" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Remover" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Cortar" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Atualizar" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Exibindo %d/%d usuários em %d/%d canais." + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Selecione um arquivo de saída" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "_Entrar no canal" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "_Copiar nome do canal" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "Copiar _tópico" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "Lista de canais (%s) - %s" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "_Localizar" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "_Downloads" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "Salvar _lista" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "Exibir apenas:" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "canais com" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "para" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "usuários." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "Procurar em:" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Nome do canal" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "Tipo de busca:" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "Busca simples" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "Padrão de busca (coringas)" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "Expressão Regular" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Procurar:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Enviar arquivo para %s" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "Este arquivo não pode ser continuado." + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "Falha ao acessar arquivo: %s\n%s.\nNão é possível continuar." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "O arquivo encontrado no diretório de download é maior do que o oferecido. Não é possível continuar a baixar." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "Não é possível continuar a baixar o mesmo arquivo de pessoas diferentes." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "Envios e recebimentos - %s" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Status" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Arquivo" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "TEF" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Ambos" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "Uploads" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "Downloads" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "Detalhes" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "Arquivo:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "Endereço:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Cancelar" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Aceitar" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Continuar" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "Abrir pasta" + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "Lista de conversas por DCC - %s" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Rcbd" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Enviado" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "Hora de início" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "Adicionar" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Apagar" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Cancelar" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Salvar" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "Não conectar automaticamente aos servidores" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "Usar um diretório diferente para as configurações" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "Não carregar complementos automaticamente" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "Mostrar diretório de carregamento automático de complementos" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "Mostrar diretório de configurações do usuário" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "Abrir URL chave irc://servidor:porta/canal?" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "Executar comando:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "Abrir URL ou comando num HexChat que já estiver em execução" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Iniciar minimizado. Nível 0=Normal 1=Ícone 2=Bandeja" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "nível" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "Exibir informação da versão" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "Falha ao abrir fonte:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "Buffer de pesquisa está vazio.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d bytes" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Envios em espera da rede: %d bytes" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "A ação Run Command executa os dados em Dados 1 como se tivessem sido digitados na caixa de entrada onde você digitou a sequência. Ademais, ele pode conter texto (que será enviado para o canal/pessoa), comandos ou comandos de usuários. Quando for executado, todos os caracteres \\n contidos no Dados 1 delimitarão comando, dessa forma é possível executar mais de um comando. Se você quiser um caractere \"\\\" no texto utilize \"\\\\\"" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "O comando Change Page alterna entre as páginas do notebook. Conjunto de dados 1 para a página que desejar alterar. Se Dados 2 estiver definido para qualquer coisa, então a opção será relativa à posição atual. Conjunto de dados de 1 para mudar automaticamente para a página com a atividade mais recente e importante (consultas primeiro, depois os canais com destaque, canais de conversa ativos, canais com outros dados)" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "O comando Inserir no Buffer introduz o conteúdo de Dados 1 na posição atual do cursor da entrada onde a sequência de teclas foi pressionada" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "O comando Scroll Page desloca o widget de texto para cima ou para baixo uma página ou uma linha. Define Data 1 para Top (Topo), Bottom (Fundo), Up (Cima), Down (Baixo), +1 ou -1." + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "Set Buffer comando define a entrada, com a sequência de teclas introduzida para o conteúdo Dados 1" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "Last Command comando define a entrada para conter o último comando inserido-o mesmo que pressionar Cima num shell" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "Next Command comando define a entrada para conter o próximo comando a inserir - o mesmo que pressionar Baixo num shell" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "Este comando altera o texto na entrada para completar um apelido ou comando incompleto. Se Dados 1 está definido então ao carregar duas vezes na tecla TAB numa palavra irá seleccionar o último apelido e não o próximo" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "Este comando percorre a lista de nicks. Se Dados 1 está definido então a lista é percorrido para cima, caso contrário é percorrida para baixo" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "Este comando verifica a ultima palavra informada contra a lista de substituição e a substitui se houver coincidência" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "Este comando move a aba fronta para esquerda em uma unidade" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "Este comando move a aba fronta para direita em uma unidade" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "Este comando move a família de abas ativa para esquerda" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "Este comando move a família de abas ativa para direita" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "Por linha de entrada no histórico mas não enviar ao servidor" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "Houve um erro ao carregar as configurações das chaves de ligação" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "Selecione uma linha para obter ajuda em suas ações" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "Atalhos de teclado - %s" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "Não foi possível escrever no arquivo." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "Não foi possível ler o arquivo" + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "A máscara já existe." + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Privado" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Notificação" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "Não ignorar" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "Tem certeza que deseja remover todos os usuários ignorados?" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "Informe a máscara a ignorar:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "Lista de ignorados - %s" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Estatísticas de ignorados:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Canal:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privado:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Notificação:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Convidar:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "Adicionar" + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "Nome do canal pequeno demais, tente outro maior." + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "Conexão completa - %s" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "Conexão com %s concluída." + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "Na janela da lista de servidores, nenhum canal (sala de bate-papo) foi adicionado para entrada automática nessa rede." + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "O quê gostaria de fazer em seguida?" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "_Nada, entrarei em um canal depois." + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "_Entrar neste canal:" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Se você sabe o nome de algum canal que deseja entrar, digite aqui." + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "A_brir lista de canais." + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "Requisitando lista de canais, isso pode levar alguns minutos" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "_Sempre mostrar essa janela depois de conectar." + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "Conversando com" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Tópico para %s é: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "Nenhum tópico ajustado" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "Esse servidor ainda tem %d canais ou conversas abertas. Fechar assim mesmo?" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "Sair do HexChat?" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "Não perguntar novamente." + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Você está conectado a %i rede(s) IRC." + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "Tem certeza que deseja sair?" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "Algumas transferências continuam ativas." + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "_Minimizar para bandeja" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "Insira um atributo ou código de cor" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>Negrito</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>Sublinhado</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "<i>Itálico</i>" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "Normal" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "Cores 0-7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "Cores 8-15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "_Configurações" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "_Registrar dados" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "_Recarregar conversas" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "Limpar _cores" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "_Ocultar entradas e saídas do canal" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "Alertas _adicionais" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "Apitar nas mensagens" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "Piscar ícone na bandeja" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "Piscar barra de tarefas" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "_Separar" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "_Fechar" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "O limite de usuários deve ser um número!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "Filtrar cores" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "Não receber mensagens externas" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "Tópico protegido" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "Apenas convidados" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "Moderado" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "Banimentos" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Palavra-chave" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "Limite" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Informe o apelido:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "Nada foi encontrado" + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "A pesquisa esgotou as possibilidades ou nada foi encontrado." + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "_Destacar tudo" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "Destacar todas as ocorrência e sublinhar a atual." + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "_Coincidir palavra" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "Diferenciar capitalização na busca." + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "_Regex" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "Utilizar termo de busca como expressão regular." + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Host desconhecido" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "Conta desconhecida" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Desconhecido" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Nome verdadeiro:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "Usuário:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "Conta:" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "País:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "Servidor:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "%u minutos atrás" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "Ultima msg:" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "Motivo da ausência:" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "%d usuários selecionados." + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "A barra de menu ficará escondida. Para acessá-la você deve apertar CTRL+F9 ou então clicar com o botão direito do mouse na caixa de texto principal desta interface." + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "Abrir no navegador" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "Copiar" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Entrar no canal" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "Sair do canal" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "Rodar o canal" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "_Entrada automática" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "Entrar em canais" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "_Conexão automática" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "Menu do usuário - %s" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "Editar este menu" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "Linha de marcação desativada." + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "A linha de marcação nunca foi configurada." + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "Linha de marcação reajustada manualmente." + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "Linha de marcação reajustada pois excedeu o limite do registro de conversas." + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "A linha de marcação é reajustada através do comando CLEAR." + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "O estado da linha de marcação é desconhecido" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "Requisitar lista de canais" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "foi feito sem suporte a complementos." + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "Comandos do usuário - códigos especiais:\n\n%c = canal ativo\n%e = nome da rede ativa\n%m = informações sobre o computador\n%n = seu apelido\n%t = hora/data\n%v = versão do HexChat\n%2 = 2ª palavra\n%3 = 3ª palavra\n&2 = da 2ª palavra até o fim da linha\n&3 = da 3ª palavra até o fim da linha\n\nex:\n/cmd jose olá\n\n%2 seria \"jose\"\n&2 seria \"josé olá\"." + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "Botões da lista de usuários - códigos especiais:\n\n%a = todos os usuários selecionados\n%c = canal ativo\n%e = nome da rede ativa\n%h = hostname dos usuários selecionados\n%m = informações sobre o computador\n%n = seu apelido\n%s = usuários selecionados\n%t = hora/data\n%u = conta dos usuários selecionados" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "Botões da janela de conversa - códigos especiais:\n\n%a = todos os usuários selecionados\n%c = canal ativo\n%e = nome da rede ativa\n%h = hostname dos usuários selecionados\n%m = informações sobre o computador\n%n = seu apelido\n%s = usuários selecionados\n%t = hora/data\n%u = conta dos usuários selecionados" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "Respostas de CTCP - códigos especiais:\n\n%d = data (todo o ctcp)\n%e = nome da rede ativa\n%m = informações sobre o computador\n%s = apelido do usuário que enviou o ctcp\n%t = hora/data\n%2 = 2ª palavra\n%3 = 3ª palavra\n&2 = da 2ª palavra até o fim da linha\n&3 = da 3ª palavra até o fim da linha\n\n\n\n" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "Manipuladores de URL - códigos especiais:\n\n%s = linha da URL\n\nAdicionando ! na frente do comando\nque ele deve ser executado em\nshell ao invés do HexChat" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "Comandos definidos pelo usuário - %s" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "Menu da lista de usuários - %s" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "Substituir - %s" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "Substituir com" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "Gestores de URL - %s" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "Botões da lista de usuários - %s" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "Botões de diálogo - %s" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "Respostas de CTCP - %s" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "He_xChat" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "Li_sta de redes" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "_Nova" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "Aba de servidores" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "Aba de canais" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "Janela de servidores" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "Janela de canais" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "_Carregar complemento" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "_Sair" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "_Ver" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "_Barra de menu" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "Barra de _tópico" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "Lista de _usuários" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "Botões da lista de u_suários" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "Botões dos m_odos do canal" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "Alternador de _canais" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "_Abas" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "Á_rvore" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "Medidores de _rede" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Desligar" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "Gráfico" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "Tela _cheia" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "_Servidor" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "_Desconectar" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "_Reconectar" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "_Entrar em um canal" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "_Lista de canais" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "_Ausentar-se" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "Menu do _usuário" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "Configuraçõ_es" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "_Preferências" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "Auto substituir" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "Respostas de CTCP" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "Botões de diálogo" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "Atalhos de teclado" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "Eventos de texto" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "Gestores de URL" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "Comandos de usuário" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "Botões da lista de usuário" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "Menu da lista de usuários" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "_Ferramentas" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "Lista de _banimentos" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "Conversa direta" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "_Transferência de arquivos" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "Lista de amigos" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "Lista de ignorados" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "_Complementos" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "_Registro puro" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "Registrador de _URL" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "Reiniciar linha de marcação" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "Ir para linha de marcação" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "_Copiar seleção" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "_Limpar texto" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "Salvar texto" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "Localizar" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "Pesquisar" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "Próxima" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "Anterior" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "_Ajuda" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "_Conteúdos" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "_Sobre" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "_Anexar" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Nome" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Visto pela última vez:" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "Desconectado" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Nunca" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "%d minutos atrás" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "Uma hora atrás" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "%d horas atrás" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "Conectado" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "Informe o apelido:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "Notificar nessas redes:" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "Você pode utilizar uma lista de redes separadas por vírgulas." + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "Lista de amigos - %s" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "Conversar" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "Mensagem de: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "Mensagens no canal de: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "Oferta de arquivo de: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "Convidado ao canal por: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "Notificação de: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "Mensagem privada de: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "Conectado a %u redes e %u canais - %s" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "_Restaurar janela" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "_Ocultar janela" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "_Piscar nas mensagens" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "Canal" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "Privadas" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "Destacadas" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "_Alterar estado" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "_Ausentar-se" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "_Voltar" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "Mensagem destacada de: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "%u mensagens destacadas, ultima de: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "Mensagem em canal de: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "%u mensagens em canais. - %s" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "Mensagem privada de: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "%u mensagens privadas, ultima de: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "Oferta de arquivo de: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "%u oferta de arquivos, ultima de: %s (%s) - %s" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Versão" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Descrição" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Escolha um complemento para carregar" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "Complementos - %s" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "_Carregar" + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "_Descarregar" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "_Recarregar" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "Salvar como..." + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "Registro puro (%s) - %s" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "Limpar" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Nova rede" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Deseja realmente remover a rede \"%s\" e todos seus servidores?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "O nome de usuário não pode ser deixado em branco" + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "Você não pode ter um apelido em branco." + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "Você precisa de dois apelidos diferentes" + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "Forma como você se identifica com o servidor. Para métodos personalizados de conexão, utilize os comandos de conexão" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "Editar %s - %s" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "Servidores" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "Entrada automática" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "Comandos de conexão" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "%n=Apelido\n%p=Senha\n%r=Nome verdadeiro\n%u=Nome de usuário" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "Chave (senha)" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "_Editar" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "Conectar somente ao servidor escolhido" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Não alternar entre todos os servidores quando a conexão for mal sucedida" + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "Conectar a esta rede automaticamente" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "Evitar servidor de proxy" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "Utilizar SSL para todos os servidores nesta rede" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "Aceitar certificados SSL inválidos" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "Utilizar informações globais de usuário" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "_Apelido:" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "Segunda opção:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "Nome _verdadeiro:" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "Nome de _usuário:" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "Método de identificação:" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Senha:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "Senha de identificação. Deixe em branco se não souber do que se trata." + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "Codificação:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "Lista de redes - %s" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "Informações do usuário" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "Terceira opção:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Redes" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "Ocultar lista de redes no início" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "Mostrar somente favoritos" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "_Editar" + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "_Ordenar" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "Organiza a lista de redes em ordem alfabética. Use as teclas Shift+Up e Shift+Down para mover a linha." + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "_Adc. Favoritos" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "Marca ou desmarca a rede como favorita." + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "C_onectar" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "Africano" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Albano" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "Amárico" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "Asturiano" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Azerbaijano " + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "Basco" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Bielorusso " + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Búlgaro" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "Chinês (simplificado)" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "Chinês (tradicional)" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "Tcheco" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "Dinamarquês" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "Holandês" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "Inglês (britânico)" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "Inglês" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Estônio" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "Finlandês" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "Francês" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "Galego" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "Alemão" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "Grego" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "Gujarati" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "Hindi" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "Húngaro" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "Indonésio" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "Italiano" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "Japonês" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "Canadense" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "Kinyarwanda" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "Coreano" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "Letão" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "Lituano" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "Macedônio" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Malaio" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "Malaiala" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "Norueguês (Bokmal)" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "Norueguês (Nynorsk)" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "Polonês" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "Português" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "Português (Brasil)" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "Punjabi" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "Russo" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "Sérvio" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "Eslovaco" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "Esloveno" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "Espanhol" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "Sueco" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Tailandês" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "Turco" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "Ucraniano" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Vietnamita" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "Walloon" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Geral" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "Idioma:" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "Fonte principal:" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Fonte:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "Caixa de texto" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "Apelidos coloridos" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "Dar uma cor distinta a cada pessoa no IRC" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "Indentar apelidos" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "Alinhar apelidos a direita-justificada nos canais" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "Mostrar linha de marcação" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "Inserir uma linha vermelha ao final do ultimo texto lido." + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Imagem de fundo:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "Ajuste de transparência" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "Opacidade de janela:" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "Marca da hora" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "Habilitar marcação de hora" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "Formato da marcação de hora:" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "Veja o artigo da MSDN sobre strftime para maiores informações." + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "Veja o manpage sobre strftime para maiores informações." + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "Barra de título" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "Exibir modos do canal" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "Exibir número de usuários" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "Ultima ordem" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "Caixa de entrada" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "Usar fonte e cores da caixa de texto" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "Renderizar cores e atributos" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "Mostrar caixa de apelido" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "Mostrar ícone do modo de usuário junto a caixa de apelido" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "Verificação ortográfica" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "Dicionários a utilizar:" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "Utilize os códigos de idioma (como em \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\nSepare múltiplas entradas com vírgula." + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "Utilize códigos de idioma. Separe múltiplas entradas com vírgula." + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "Autocompletar apelido" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "Sufixo para autocompletar" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "Ordenamento do autocompletar:" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "Tamanho do autocompletar:" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "Limiar dos apelidos para começar a listar ao invés de completar" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "apelidos." + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "Gráfico" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "A-Z, operadores primeiro" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "Z-A, operadores no final" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "Não ordenado" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "Esquerda (superior)" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "Esquerda (inferior)" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "Direita (superior)" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "Direita (inferior)" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Alto" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Baixo" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Oculto" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "Lista de usuários" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "Exibir hostnames na lista de usuários" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "Utilizar fonte e cores da caixa de texto" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "Exibir ícones para os modos de usuário" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "Utilizar ícones gráficos ao invés de símbolos na lista de usuários." + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "Colorir apelidos na lista de usuários" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "Colorir apelidos com a mesma cor das conversas." + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "Exibir número de usuários no canal" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "Lista de usuários ordenada por:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "Mostrar lista de usuários em:" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "Monitorar ausências" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "Monitorar ausência dos usuários e marca-los com um cor diferente" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "Em canais com número de usuários menor que:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "Ação para o clique duplo" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "Dispositivos adicionais" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "Medidor de atraso:" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "Medidor de aceleração:" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Janelas" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Abas" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "Sempre" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "Somente abas selecionadas" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "Automático" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "Em aba adicional" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "Na aba frontal" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "Árvore" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "Tipo de alternador:" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "Abrir aba adicional para mensagens do servidor" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "Abrir uma aba nova ao receber mensagens privadas" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "Ordenar abas por ordem alfabética" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "Exibir ícones na árvore de canais" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "Exibir linha pontilhada na árvore de canais" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "Utilizar roda do mouse para alternar abas" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "Clique com o botão do meio para fechar a aba" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "Texto pequeno" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "Focar em novas abas:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "Local das notificações:" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "Exibir alternador de canais em:" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "Encurtar rótulos para:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "letras." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "Abas ou janelas" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "Abrir canais em:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "Abrir conversas em:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "Abrir utilitários em:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Abrir DCC, Ignorados, Notificações etc, em abas ou janelas?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "Mensagens" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "Registro de conversa" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "Pedir confirmação" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "Perguntar onde salvar arquivos" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "Salvar automaticamente" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "Arquivos e diretórios" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "Aceitar oferta de arquivos automaticamente:" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Baixar arquivos em:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "Mover arquivos completos para:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "Salvar apelido nos nomes de arquivos" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "Abrir janela de DCC automaticamente" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "Envios" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "Recebimento" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "Conversa" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "Velocidade máxima de transferência de arquivos (byte por segundo)" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "Um envio:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "Velocidade máxima para transferência única" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "Um download:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "Todos os envios combinados:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "Velocidade máxima de todos os arquivos" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "Todos os arquivos baixados combinados:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "Alertas" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "Mostrar notificações em:" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "Piscar ícone da bandeja em:" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "Piscar barra de tarefa em:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "Produzir bip em:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "Reproduzir o som do sistema \"Instant Message Notification\" para os eventos selecionados" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "Reproduzir o tema de som \"message-new-instant\" do freedesktop.org para os eventos selecionados" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "Reproduzir um bip GTK para os eventos selecionados" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "Não exibir alertas quando estiver ausente" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "Não exibir alertas quando a janela estiver em foco" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "Comportamento da bandeja" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "Utilizar ícone na bandeja" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "Minimizar para bandeja" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "Fechar para bandeja" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "Voltar automaticamente da ausência" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "Ausentar-se ao minimizar para bandeja" + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "Somente mostrar notificações quando escondido ou minimizado na bandeja" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "Mensagens destacadas" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Mensagens destacadas são aquelas onde seu apelido aparece, mas também:" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "Palavras adicionais para destaque:" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "Usuários a não destacar:" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "Usuários a sempre destacar" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Palavras distintas devem ser separadas por vírgula.\nCoringas também são aceitos." + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "Ressaltar ícone do dock em:" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "Mensagens padrão" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "Saída:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "Sair do canal:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "Ausência" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "Ausentar-se" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Mostrar motivo da ausência somente uma vez" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "Mostrar motivos de ausência idênticos apenas uma vez." + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "Voltar automaticamente do período de ausência" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "Voltar do período de ausência automaticamente antes de enviar mensagens." + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "Diversos" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "Exibir modos na forma pura" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "Verificar WHOIS ao ser notificado" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "Verificar WHOIS quando um amigo se conecta" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "Não exibir mensagens de entrada e saída nos canais" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "Não exibir mensagens de entrada e saída nos canais por padrão." + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "Não exibir mudanças de apelido" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "*!*@*.host" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "*!*@domínio" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "*!*usuario@*.host" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "*!*usuario@dominio" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "Comportamento da cópia automática" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "Copiar o texto selecionado automaticamente" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "Copiar texto selecionado quando ao soltar o botão esquerdo do mouse. De toda forma, Ctrl+Shift+c copiará o texto selecionado." + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "Incluir marcação de hora automaticamente" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "Incluir marcação de hora automaticamente ao copiar linhas de texto. Caso contrário, a marcação de texto será incluída no texto copiado se a tecla Shift for pressionada enquanto o texto é selecionado." + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "Incluir cores" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "Incluir automaticamente os códigos de cor as linhas de texto copiadas. Caso contrário, os códigos de cor será incluídos no texto copiado se a tecla Crl for pressionado enquanto o texto é selecionado." + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "Nome verdadeiro:" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "Fontes alternativas:" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "Entradas distintas devem ser separadas por vírgulas e sem espaço, antes ou depois." + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "Exibir listas em modo compacto" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "Utilizar menos espaço entre as linhas da lista de usuários/canal." + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "Utilizar hora do servidor caso seja suportado" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "Exibe a hora obtida do servidor caso ele suporte a extensão time-server." + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "Reconecta automaticamente ao servidor" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "Espera para reconexão automática:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "Espera para reentrada automática nos canais:" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "Tipo de banimento:" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "Tente utilizar essa máscara quando estiver banindo ou silenciando. (necessita de irc_who_join)" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Registrando" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "Exibe o registro de conversa da sessão anterior" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "Linhas de registro de conversa:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "Registrar conteúdo das conversas para o disco" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "Nome do arquivo de registro:" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Servidor %c=Canal %n=Rede." + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "Incluir hora nos registros" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "Formato da hora nos registros:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URLs" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "Registrar URLs em arquivo do disco" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "Utilizar registrador de URLs" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "Número máximo de URLs para registrar:" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(Desligado)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "SOCKS4" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "SOCKS5" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "Auto" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "Todas as conexões" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "Somente servidores de IRC" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "Somente DCC" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "Seu endereço" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "Ligar a:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "Só é útil a computadores com múltiplos endereços." + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "Transferência de arquivos" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "Obter meu endereço através do servidor IRC" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "Pede seu endereço verdadeiro ao servidor IRC. Utilize caso seu endereço se pareça com 192.168.*.*" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "Endereço IP do DCC:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "Declara que você está neste endereço quando estiver oferecendo arquivos." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "Primeira porta DCC:" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "Ultima porta DCC:" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "!Deixe 0 para máximo alcance." + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "Servidor proxy" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "Hostname:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Porta:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Tipo:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "Utilizar proxy para:" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "Autenticação de proxy" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "Usar autenticação (HTTP ou somente SOCKS5)" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "Usuário:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "Servidor Identd" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "Ligado" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "O servidor responderá com os nomes de usuário da rede" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "Você precisa estar autorizado a ouvir nesta porta. Se não for a 113 (0 é o padrão) então você deve configurar o encaminhamento de porta (port-forwarding)" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "Selecionar imagem" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "Selecionar pasta de downloads" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Selecionar fonte" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Navegar..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "Abrir diretório de dados" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Selecionar cor" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "Cor do texto" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "Cores do mIRC:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "Cores locais:" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Plano de frente:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Plano de fundo:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "Texto selecionado" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "Cores da interface" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "Novo dado:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "Linha de marcação:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "Nova mensagem:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "Usuário ausente:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "Destacado:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "Verificador ortográfico:" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "Limpeza de cores" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Evento" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "Arquivo de som" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "Selecionar arquivo de som" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "Arquivo de som:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "_Navegar" + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "_Reproduzir" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Interface" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "Aparência" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Caixa de entrada" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Lista de usuários" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "Alternador de canais" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Cores" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Conversando" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "Sons" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "Avançado" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Configurações de rede" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Transferência de arquivos" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "Identd" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Categorias" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "A exibição do alternador em árvore não pode ser colocado na parte de cima ou de baixo!\nPor favor altere a exibição para <b>Abas</b> no menu <b>Ver</b>." + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "O nome verdadeiro não pode ser deixado em branco. Retornando para \"nomeverdadeiro\"." + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Foram feitas algumas alterações que requerem que o programa seja reiniciado para que tenham efeito." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*AVISO*\nAceitar DCC automaticamente para seu diretório pessoal\npode ser extremamente perigoso e altamente explorável.\nEx: alguém pode lhe enviar um novo arquivo .bash_profile" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "Preferências - %s" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "<i>(sem sugestão)</i>" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "Mais..." + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "Adicionar \"%s\" ao dicionário" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "Ignorar tudo" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "Sugestões de escrita" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "esconder erros para o idioma: %s" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "Um erro ocorreu quando a linha estava sendo analisada" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Este sinal passou os argumentos %d, e portanto %d é invalida" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "Imprimir arquivo texto" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ Número" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Editar eventos" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "Carregar de..." + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Testar tudo" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "OK" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "Registrador de URL - %s" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Limpar lista" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Copiar URL selecionada" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Copiar" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Salvar lista em um arquivo" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d ops, %d total" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "Abre uma URL irc://servidor:porta/canal" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "Sysinfo: Falha ao obter informações. Talvez não suportado ou incorreta." + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "Sysinfo: Nenhuma informação com esse nome\n" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "Sysinfo: %s está configurado para: %d\n" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "Sysinfo: Configurações válidas são: announce e hide_* para cada pedaço de informação. e.x. hide_os. Sem nenhuma parâmetro ele mostrará a configuração atual (ou padrão).\n" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "Sysinfo: nome de variável invalida\n" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "%s plugin carregado\n" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "%s plugin descarregado\n" diff --git a/hexchat/po/remove-potcdate.sin b/hexchat/po/remove-potcdate.sin new file mode 100644 index 0000000..2436c49 --- /dev/null +++ b/hexchat/po/remove-potcdate.sin @@ -0,0 +1,19 @@ +# Sed script that remove the POT-Creation-Date line in the header entry +# from a POT file. +# +# The distinction between the first and the following occurrences of the +# pattern is achieved by looking at the hold space. +/^"POT-Creation-Date: .*"$/{ +x +# Test if the hold space is empty. +s/P/P/ +ta +# Yes it was empty. First occurrence. Remove the line. +g +d +bb +:a +# The hold space was nonempty. Following occurrences. Do nothing. +x +:b +} diff --git a/hexchat/po/ru.po b/hexchat/po/ru.po new file mode 100644 index 0000000..668e25d --- /dev/null +++ b/hexchat/po/ru.po @@ -0,0 +1,6268 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Aleksandr P, 2010 +# Aleksey <aleksdem@aleksdem.com>, 2016 +# Aleksey <aleksdem@aleksdem.com>, 2014-2015 +# Aleksandr P, 2010 +# Andrey Vihrov <andrey.vihrov@gmail.com>, 2013 +# Igor <f2404@yandex.ru>, 2017 +# Ilyas B Arinov <arinov.ilyas@gmail.com>, 2016 +# InfernalKnight <infernal.knight666@gmail.com>, 2016 +# InfernalKnight <infernal.knight666@gmail.com>, 2016 +# Магретов Никита <huku111a@gmail.com>, 2016 +# Valek Filippov <frob@df.ru>, 2001 +# Volosenkov Dmitry <_bil_@mail.ru>, 1999 +# Aleksey <aleksdem@aleksdem.com>, 2016 +# Артем Малофеев <79067635919@yandex.ru>, 2019 +# Магретов Никита <huku111a@gmail.com>, 2016 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2019-03-18 18:38+0000\n" +"Last-Translator: Артем Малофеев <79067635919@yandex.ru>\n" +"Language-Team: Russian (http://www.transifex.com/hexchat/hexchat/language/ru/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ru\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "HexChat" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "IRC Клиент" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "HexChat - это лёгкий в использовании, но расширяемый IRC Клиент. Он позволяет безопасно соединяться со множеством сетей и общаться с пользователями лично или на каналах, используя настраиваемый интерфейс. Вы даже можете передавать файлы." + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "HexChat поддерживает следующие функции: DCC, SASL, прокси, проверка орфографии, уведомления, ведение логов, настраиваемые темы и скрипты на Python/Perl." + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "Главное окно чата" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "Общаться с другими людьми онлайн" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "IM;Чат;" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "Открыть безопасный режим" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "Управление темами HexChat" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Я занят" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Ухожу я от вас" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "ВЫКЛ" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "ВКЛ" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "{unset}" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Сеть" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<нет>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Канал" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Ожидание" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Активен" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Ошибка" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Готово" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Соединение" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Остановлено" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "Нет доступа к %s\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Ошибка" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s предлагает \"%s\". Будете принимать?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "Нет активных DCC\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "Начать ра_зговор" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "Отправить _файл" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "_Информация (WHOIS)" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "Добавить в дру_зья" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "_Игнорировать" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "Действия опе_ратора" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Дать оператора" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Снять оператора" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "Дать голос" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "Забрать голос" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Кик/Бан" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Кик" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "Бан" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "Кик+Бан" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Уйти с канала" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Зайти на канал..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "Введите канал для входа:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Ссылки сервера" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Ping Server" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Не показывать версию" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Оператор" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "Снять оператора" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "пока" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Введите причину кика %s:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "Диалог" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "Кто " + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Послать" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Разговор" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Очистить" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "У вас нет права записи в %s. Ничего нельзя сохранить в текущей сессии." + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* Глупо запускать IRC под пользователем root! Вы должны\n создать пользовательскую учетную запись и работать под ним.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "ДА " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "НЕТ " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Вас забрасывают CTCP запросами от %s, %s игнорируется.\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "Вас забрасывают MSG запросами от %s, изменение переменной gui_autoopen_dialog на ВЫКЛ.\n" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "Разрешение %s" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "Не найдено" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "Разрешение:" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "Поиск %s..." + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s на канале\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s отключен\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Вы не зашли на канал. Наберите /join #<канал>\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Нет соединения. Наберите /server <адрес> [<порт>]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "Сервер %s уже есть в сети %s.\n" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "Сервер %s добавлен к сети %s.\n" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Вы уже отсутствуете: %s\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "Вы уже вернулись.\n" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "Отсутствует /bin/sh для запуска!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "Доступные команды:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "Определённые пользователем команды:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "Определённые расширениями команды:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Наберите /HELP <имя команды> для более полной информации, или /HELP -l" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Игнорируется неизвестный аргумент \"%s\"." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "Ответ не поддерживается этим сервером." + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "Плагин не найден.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "Плагин невозможно выгрузить.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <название> <действие>, добавляет кнопку под списком пользователей" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "ADDSERVER <НоваяСеть> <новыйсервер/6667>, добавляет новую сеть с новым сервером в список сетей" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <команда>, посылает команду во все каналы, где вы есть " + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "ALLCHANL <команда>, посылает команду во все каналы на текущем сервере" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <команда>, посылает команду на всех серверах, где вы есть " + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "AWAY [<причина>], устанавливает флаг отсутствия (используйте /BACK для отключения)" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "BACK сбрасывает флаг отсутствия" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <маска> [<тип>], блокирует доступ на текущий канал для каждого, совпадающего с маской. Если они уже на канале, то они не будут скинуты (для этого нужно быть оператором канала)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <переменная> [<значение>]" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "CHARSET [<кодировка>], показать или изменить кодировку для текущего соединения" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "CLEAR [ALL|HISTORY|[-]<количество>], Очищает текущее текстовое окно или командную строку" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "CLOSE [-m], Закрывает текущую вкладку, закрывая окно, если это единственная открытая вкладка, или с флагом \"-m\", закрывает все беседы." + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <код|маска>, находит код страны, например: au = Австралия" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <ник> <сообщение>, посылает пользователю с указанным ником CCTP-сообщение, обычные сообщения -- VERSION и USERINFO" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "CYCLE [<channel>], выйти с текущего канала и немедленно зайти" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <имя> - принять отправляемый файл\nDCC SEND [-maxcps=#] <имя> <файл> - отправить файл получателю\nDCC PSEND [-maxcps=#] <имя> [файл] - отправить файл в пассивном режиме\nDCC LIST - показать список DCC\nDCC CHAT <имя> - запросить разговор через DCC\nDCC PCHAT <nick> - запросить разговор в пассивном режиме\nDCC CLOSE <тип> <имя> <файл> пример:\n /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <имя>, удаляет chanhalf-op статус у имени на текущем канале\n(нужны права администратора канала)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <имя>, удаляет кнопку из-под списка пользователей" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <nick>, убирает права администратора канала у пользователя на текущем канале (требует права администратора)." + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <nick>, удаляет право голоса у пользователя с переданным именем на текущем\nканале. Для использования нужны права администратора канала" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, отсоединиться от сервера" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "DNS <ник|хост|ip>, Разрешает IP или имя хоста" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <текст>, вывести текст на локальной машине" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <Команда>, выполняет команду. При передаче опции -o вывод \nкоманды перенаправляется в текущий канал. Иначе вывод печатается в текущем окне" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, sends the process SIGCONT" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9], уничтожает выполняющийся процесс в текущей сессии. Если -9 процессу перадается сигнал SIGKILL" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, посылает процессу сигнал SIGSTOP" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, посылает процессу данные на stdin" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "EXPORTCONF, экспортирует настройки HexChat" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, сбрасывает текущую очередь отправки сервера" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <адрес> [<порт>], прокси через хост, порт по умолчанию - 23" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <ник> [пароль], Убивает ник, ставший призраком" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <Ник>, дает статус полуоператора канала пользователю (требуются права оператора)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <пароль>, представиться nickserv-у" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <маска> <типы..> <параметры..>\n маска - маска игнорируемого хоста, например: *!*@*.aol.com\n типы - типы игнорируемых данных, один или несколько из следующих:\n PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n параметры - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <Ник> [<канал>], приглашает кого-либо на канал, по умолчанию, на текущий (требует права оператора)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <канал>, зайти на канал" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "KICK <Ник>, [причина]удаляет человека с текущего канала (нужны права оператора)" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "KICKBAN <ник> [причина], банит и затем выпинывает ник с текущего канала (требуется право оператора)" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, инициирует новую проверку канала" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "LASTLOG [-h] [-m] [-r] [--] <строка>, ищет заданную строку в буфере канала\n-h подсвечивает найденные строки;\n-m учитывает регистр символов;\n-r считает строку регулярным выражением;\n-- (двойной дефис) отменяет обработку параметров (например, когда надо найти строку «-r»)" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <ИмяФайла>, загружает скрипт или плагин" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, убирает у всех на текущем канале права полуоператора (требуются права оператора)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, убирает у всех права оператора на текущем канале (требуются права оператора)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <action>, посылает действие на текущий канал (действие пишется от третьего лица, например, /me прыгает)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, удаляет всех, кроме себя, с канала (требуются права оператора)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, Устанавливает всем пользователям текущего канала права оператора (требуются права оператора канала)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "MSG <ник> <сообщение>, посылает приватное сообщение, подставьте \".\" чтобы отправить на последний ник или префикс с \"=\" для dcc-чата" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "NAMES [канал], Выводит список ников на канале" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <Ник> <сообщение>, отправляет CTCP сообщение" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <ИмяСервера> [<порт>]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "/NICK <Ник>, меняет ваш ник" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "NOTICE <ник/канал> <сообщение>, посылает уведомление" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [-n network1[,network2,...]] [<Ник>], показывает список ваших уведомлений или добавляет что-либо к ним" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <Ник>, дает пользователю статус оператора канала (требуются права администратора)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<Канал>] [<Причина>], выйти с канала, по умолчанию - с текущего" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <Ник | канал>, CTCP-пинг пользователя или канала" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "QUERY [-nofocus] <ник> [сообщение], открывает новое окно приватных сообщений с кем-нибудь и, опционально, отправляет сообщение" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "QUIET <маска> [<типтишины>], заставляет замолчать каждого, кто проходит по маске на текущем канале, если это поддерживается сервером." + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<причина>] - отсоединение от текущего сервера" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <Текст>, отсылает текст в чистом виде на сервер" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<Сервер>] [<Порт>] [<Пароль>]. Может использоваться только как /RECONNECT для переподключения к текущему серверу или с /RECONNECT ALL для переподключения ко всем серверам" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [-ssl] [<Сервер>] [<Порт>] [<Пароль>]. Может использоваться только как /RECONNECT для переподключения к текущему серверу или с /RECONNECT ALL для переподключения ко всем серверам" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "RECV <текст>, отправляет сырые (raw) данные в HexChat, как будто бы они были получены с IRC севера" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "RELOAD <имя>, перезагружает плагин или скрипт" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <Текст>, посылает текст объекту в текущем окне" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <псевдоним> [<файл>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <Сервер> <порт> <канал>, подключиться к серверу, а затем к каналу" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <Сервер> <порт> <канал>, подключиться к серверу, а затем к каналу" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "SERVER [-ssl] <адрес> [<порт>] [<пароль>], подключается к серверу; для обычных соединений порт по умолчанию — 6667, для SSL-соединений — 6697" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <адрес> [<порт>] [<пароль>] соединяет с сервером. Порт по умолчанию 6667" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-off|-on] [-quiet] <переменная> [<значение>]" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "SETCURSOR [-|+]<позиция>, перемещает курсор в поле ввода" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "SETTAB <новое название>, меняет название вкладки (ограничение tab_trunc остаётся в силе)" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "SETTEXT <новый текст>, заменяет текст в поле ввода" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<тема>], устанавливает тему, если она указана. Иначе отображает текущую тему" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "\nTRAY -f <интервал> <файл1> [<файл2>] Blink tray between two icons.\nTRAY -f <имя_файла> Set tray to a fixed icon.\nTRAY -i <число> Blink tray with an internal icon.\nTRAY -t <текст> Set the tray tooltip.\nTRAY -b <заголовок> <текст> Set the tray balloon." + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <маска> [<маска>...], снять запрет для специфической маски" + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <маска> [QUIET]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <имя>, выгрузить плагин или скрипт" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "UNQUIET <маска> [<маска>...], снимает молчание по указанной маске, если поддерживается сервером." + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <адрес>, открыть ссылку в браузере" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "USELECT [-a] [-s] <имя1> <имя2> и т.д., выделить имена в списке пользователей" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <Ник>, дает право голоса кому-либо (требуются права оператора)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <Сообщение>, посылает сообщение на все каналы" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <Сообщение>, посылает сообщение всемl операторам текущего канала" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "Пользовательская команда для: %s\n" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "Использование: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nПо этой команде нет помощи.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "Команда не существует\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "Недопустимые аргументы команды пользователя.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "Очень много рекурсивных команд пользователя, прерывание." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "Неизвестная команда %s. Попробуйте /help\n" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "Нет символа hexchat_plugin_init; это точно плагин для HexChat?" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "*\tОбслуживаю запрос идентификации от %s как %s" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "*\tОшибка запуска сервера identd: %s" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "IDENTD <порт> <имяпользователя>" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "Таймер %d удален.\n" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "Такой номер ссылки не найден.\n" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "Таймеры не установлены.\n" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "%5d %8.1f %7d %s\n" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Вы уверены, что сервер и порт поддерживают SSL?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "Не могу разрешить имя %s\nПроверьте ваши сетевые настройки!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "Ошибка прохождения через прокси.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Переключаемся к следующему серверу %s...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "Предупреждение: кодировка \"%s\" неизвестна. Трансляции для %s сети не будет." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "%C18*%O$t%C18$1%O добавлен в список друзей." + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "%C22*%O$tНевозможно зайти на канал %C22$1 %O(%C20Вы забанены%O)." + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "%C24*%O$t%C28$1%O теперь известен как %C18$2%O" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O забанил некоего %C18$2%O" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "%C22*%O$tКанал %C22$1%O создан %C24$2%O" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O убрал права полуоператора канала с %C18$2%O" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O убрал права оператора канала с %C18$2%O" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O забрал голос у %C18$2%O" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O дал права полуоператора канала %C18$2%O" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%UКанал Пользователи Тема" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "%C22*%O$t%C26$1%O установил режим %C24$2$3%O для %C22$4%O" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "%C22*%O$tРежимы канала %C22$1%O: %C24$2" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O дал права оператора канала %C18$2%O" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O убрал исключение для %C18$2%O" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "%C22*%O$t%C26$1%O убрал ключевое слово канала" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "%C22*%O$t%C26$1%O убрал лимит пользователей" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O установил лимит канала в %C24$2%O" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O удалил бан на %C18$2%O" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O дал голос %C18$2%O" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "%C23*%O$tСоединение установлено. Входим в систему." + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "%C23*%O$tСоединение с %C29$1%C (%C23$2:$3%O)" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "%C20*%O$tОшибка соединения (%C20$1%O)" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "%C23*%O$tDCC-приглащений не найдено." + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "" + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "" + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "" + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "" + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "%C24*%O$t%C18$1%O удалён из списка уведомлений." + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "%C20*%O$tСоединение разорвано (%C20$1%O)" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "%C24*%O$tВаш IP найден: %C30[%C24$1%C30]%O" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "%O%C18$1%O добавлен в список игнорирования." + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "%OИгнорирование %C18$1%O изменено." + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "%O%C18$1%O удалён из игнор-листа." + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "%OСписок игнорирования пуст." + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "%C20*%O$tНевозможно подключиться к %C22$1%C (%C20Канал только по приглашениям%O)" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "%C24*%O$tВы приглашены на %C22$1%O пользователем %C18$2%O (%C29$3%O)" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "%C23*$t$1 ($3%C23) был добавлен" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "%C22*%O$t%C26$1%C был выкинут %C18$2%C с %C22$3%C (%C24$4%O)" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "%C23*%O$t%C28$1%C уже занято, пробуем %C18$2%O..." + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "%C20*%O$tDCC не найден." + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "%C23*%O$tПроцесс не запущен" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "%C23*%O$tNotify: %C18$1%C ушёл (%C24$2%O)" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "%C23*%O$tNotify: %C18$1%C вернулся!" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tСписок уведомлений пуст." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "%C23*%O$t%C23$1%O пользователей в списке уведомлений." + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "%C23*%O$tNotify: %C18$1%C в офлайне (%C29$3%O)" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "%C23*%O$tNotify: %C18$1%C снова тут (%C29$3%O)" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "%C24*$t$1 ($2%C24) вышел" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "%C24*$t$1 ($2%C24) вышел ($4)" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "%C24*%O$tПинг получен с %C18$1%C: %C24$2%O секунд(ы)" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "%C24*%O$tA процесс уже запущен" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "%C24*$t$1 вышел ($2)" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "%C24*%O$t%C26$1%C изменён режим %C30[%C24$2%C30]%O" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "" + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "%C29*%O$tСоединение установлено." + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "%C23*%O$tОстановлена предыдущая попытка соединения (%C24$1%O)" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "%C22*%O$tТема канала %C22$1%C: $2%O" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "%C22*%O$t%C26$1%C поменял топик на: $2%O" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "%C22*%O$tТопик для %C22$1%C изменён пользователем %C26$2%C (%C24$3%O)" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C20*%O$tХост неизвестен. Может быть есть ошибка?" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "%C22*%O$tПользователей на %C22$1%C: %C24$2%O" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "" + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "%C19*%O$tТеперь может вести беседу на %C22$2%O" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "%C19*%O$tВы были удалены с %C22$2%C инициатором %C26$3%O (%C20$4%O)" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "%C19*%O$tВы покинули канал %C22$3%O" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "%C19*%O$tВы вышли с канала %C22$3%C (%C24$4%O)" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "%C20*%O$tВы были приглашены %C18$1%O на %C22$2%O (%C24$3%O)" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "%C20*%O$tТеперь вас зовут %C18$2%O" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "Загружен протокол от" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** ЗАКАНЧИВАЕТСЯ ВХОЖДЕНИЕ НА %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** НАЧАЛО ВХОЖДЕНИЯ НА %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "* Не удалось открыть файл(ы) журнала для записи. Проверьте права доступа на %s" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "Сообщение слева" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "Сообщение справа" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "IP Адрес" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Имя пользователя" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "Имя зашедшей персоны" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "Вы уже на канале" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "Адрес компьютера человека" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "Учётная запись человека" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Ник" + +#: src/common/text.c:980 +msgid "The action" +msgstr "Действие" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "Символ режима" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "Выявленный текст" + +#: src/common/text.c:987 +msgid "The text" +msgstr "Текст" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "Сообщение" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Имя сервера" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "Подтверждённые возможности" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "Удалённые возможности" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "Возможности Сервера" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "Запрошенные Возможности" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Старый ник" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Новый ник" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "Ник человека, который поменял Топик" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Топик" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "Ник выкинувшего" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "Персона выкинута" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "Канал" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "Причина" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "Ник вышедшего" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "Время" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "Создатель" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Ник" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Причина" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Адрес машины" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "Откуда этот" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "Время в формате x.x (см. ниже)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "Список каналов..." + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "Звук" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "Ник персоны" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "CTCP событие" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "Ник персоны, установившей ключ" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "Ключ" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "Ник персоны, установившей лимит" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "Ограничение" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "Ник человека, установившего оператора" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "Ник персоны, кому дали права оператора" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "Ник персоны, кому дали права полуоператора" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "Ник человека, который дал права полуоператора" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "Ник человека, который дал право голоса" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "Ник человека, которому дали право голоса" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "Ник забанившего" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "Маска бана" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "Ник персоны, сделавшей запрос" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "Маска тишины" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "Ник удалившего ключ" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "Ник удалившего ограничение" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "Ник персоны, которая де-опила." + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "Ник персоны, которого де-опили." + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "Ник персоны, которая дала статус полуоператора" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Ник персоны, с которой сняли статус полуоператора" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "Ник персоны, которая дала право голоса" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "Ник персоны, с которой сняли право голоса" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "Ник персоны, которая разбанила" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "Ник персоны, вызвавшей исключение" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "Маска исключения" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "Ник персоны, убравшей исключение" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "Ник персоны, сделавшей приглашение" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "Маска приглашения" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "Ник персоны, удалившей приглашение" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "Ник персоны, установившего режим" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "Знаки режима (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "Буквы режима" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "Канал установлен" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Полное имя" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Член канала/\"IRC - оператор\"" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Информация о сервере" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Время простоя" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Время ввода пароля" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Причина ухода:" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Сообщение" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Учетная запись" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "Фактический пользователь@компьютер" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "Фактический IP" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Имя канала" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "Механизм" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Текст" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Ник персоны, пригласившей вас" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Пользователи" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "Ник используется" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Пробуем ник" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Порт" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "Строка режимов" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "Тип DCC" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Имя файла" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Имя файла у получателя" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "Путь" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Положение" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Размер" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "Строка DCC" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "Причина выхода" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "Количество уведомлений" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Старое имя файла" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Новое имя файла" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Получатель" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Маска компьютера" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Имя машины" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "Пакет" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "Секунд." + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "Ник приглашенного" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Маска бана" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "Кто установил бан" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Продолжительность бана" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "Невозможно прочитать звуковой файл:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "Удаленная машина закрыла сокет" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "Соединение отвергнуто" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "Нет маршрута к хосту" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Истечение времени ожидания соединения" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "Не могу назначить этот адрес" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "Соединение оборвано" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "Остров Вознесения" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Андорра" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Объединенные арабские эмираты" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Афганистан" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Антигуа и Барбуда" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Албания" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Армения" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Нидерланды " + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Ангола" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Антарктика" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Аргентина" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "Обратный DNS" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Американское Самоа" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "Азия и Океания" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Австрия" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Австралия" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Аруба" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "Аландские острова" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Азербайджан" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Босния и Герцеговина" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Барбадос" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Бангладеш" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Бельгия" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Буркина Фасо" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Болгария" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Бахрейн" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Бурунди" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "Businesses" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Бенин" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Бермуды" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Бруней " + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Боливия" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Бразилия" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Багамы" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Бутан" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Острова Буве" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Ботсвана" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Беларусь" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Белиз" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Канада" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "Каталония" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Кокосовые о-ва" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "Республика Конго" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "Центральная Африканская Республика" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Конго" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "Швейцария" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "Кот'Д'Ивуар" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Острова Кука" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Чили" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Камерун" + +#: src/common/util.c:738 +msgid "China" +msgstr "Китай" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Колумбия" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Коммерческие" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "Кооперативы" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Коста Рика" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "Сербия и Черногория" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Куба" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Капо-Верде" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Рождественские острова" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Кипр" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "Чешская республика" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "Восточная Германия" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Германия" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Джибути" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Дания" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Доминика" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "Доминиканская республика" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Алжир" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Эквадор" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Образовательные учреждения" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Эстония" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Египет" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Западная сахара" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Эритрея" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "Испания" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Эфиопия" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "Европейский Союз" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Финляндия" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Фиджи" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Фолклендские о-ва" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Микронезия" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Острова Фарое" + +#: src/common/util.c:770 +msgid "France" +msgstr "Франция" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Габон" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Великобритания" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Гренада" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Грузия" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Французская Гвиана" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "Британские острова" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Гана" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Гибралтар" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Гренландия" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Гамбия" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Гвинея" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Правительственные" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Гваделупа" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Экваториальная Гвинея" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Греция" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Южная Георгия и Южные Сандвичевы острова" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Гватемала" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Гуам" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Гвинея-Биссау" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Гайаня" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Гонк Конг" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Heard and McDonald Islands" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Гондурас" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Хорватия" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Гаити" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Венгрия" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Индонезия" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Ирландия" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Израиль" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "Остров Мэн" + +#: src/common/util.c:801 +msgid "India" +msgstr "Индия" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "Информационные" + +#: src/common/util.c:803 +msgid "International" +msgstr "Интернациональные" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Британская индоокеанская территория" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Ирак" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "Иран" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Исландия" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Италия" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "Джерси (Нормандские острова)" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Ямайка" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Иордания" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "Трудоустройство" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Япония" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Кения" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Киргизстан" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Камбоджа" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Кирибати" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Коморос" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "St. Kitts and Nevis" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Северная Корея" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Южная Корея" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Кувейт" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Каймановы о-ва" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Казахстан" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Лаос" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Ливан" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Санта Лючия" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Лихтенштейн" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Шри Ланка" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Либерия" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Лесото" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Литва" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Люксембург" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Латвия" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Ливия" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Марокко" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Монако" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Молдова" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "Монтенегро" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "Медучреждения США" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Мадагаскар" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Маршаловы о-ва" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Военные" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Македония" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Мали" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Мьянма" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Монголия" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Макао" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "Мобильные устройства" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Северные Марианские острова" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Мартиника" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Мавритания" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Монтсерат" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Мальта" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Маврикий" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "Музеи" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Мальдивы" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Малави" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "Мексика" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Малайзия" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Мозамбик" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Намибия" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "Личные имена" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Новая Каледония" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Нигер" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Сети" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Норфолкские острова" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Нигерия" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Никарагуа" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Нидерланды" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Норвегия" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Непал" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Науру" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Ниуе" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "Новая зеландия" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Оман" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "Сетевые некоммерческие организации" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Панама" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Перу" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Французская Полинезия" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Новая Гвинея" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Филлипины" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Пакистан" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Польша" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "St. Pierre and Miquelon" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Пуэрто Рико" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "Профессии" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "Палестинские территории" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Португалия" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Палау" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Парагвай" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Катар" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Реунион" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Румыния" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "Старая сеть ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "Сербия" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Россия" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Руанда" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Саудовская Аравия" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Соломоновы о-ва" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Сейшелы" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Судан" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Швеция" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Сингапур" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "Святая Елена" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Словения" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard and Jan Mayen Islands" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "Словацкая Республика" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Сьера Леоне" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "Сан Марино" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Сенегал" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Сомали" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Суринам" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "Южный Судан" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "Сен-Томе и Принсипи" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Бывш. СССР" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "Сальвадор" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Сирия" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Свазиленд" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "о-ва Тёркс и Кайкос" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Чад" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "Контактная информация" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "Франзузские Южные Территории" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Того" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Таиланд" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Таджикистан" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "о-ва Токелау" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Восточный Тимор" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Туркменистан" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Тунис" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Тонга" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Турция" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "Путешествия и туризм" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Тринидад и Тобаго" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Тувалу" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Тайвань" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Танзания" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Украина" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Уганда" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Объединенное королевство" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "США" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Уругвай" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Узбекистан" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Ватикан" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "Сент-Винсент и Гренадины" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Венесуэла" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "Британские Виргинские о-ва" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "Американские Виргинские о-ва" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Вьетнам" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Вануату" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "Wallis and Futuna Islands" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Самоа" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "Cайты порнографического содержания" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Йемен" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Югославия" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Южная Африка" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Замбия" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Зимбабве" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "Не удалось подключиться к сеансовой шине" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "Не удалось завершить NameHasOwner" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "Не удалось выполнить команду" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "удаленный доступ" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "модуль для удаленного доступа через DBUS" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Не удалось подключиться к сеансовой шине: %s\n" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Не удалось получить %s: %s\n" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Кодировка" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "Бан" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "Исключения" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "Исключение" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "Приглашения" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Приглашен" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "Копировать маску" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "%s на %s от %s" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "Копировать запись" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "Нет соединения." + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "Вы должны выбрать баны." + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "Вы уверены, что хотите удалить все отмеченные пункты в %s?" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "Тип" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Маска" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "От" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Дата" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Список банов можно отктыть только при открытой вкладке канала." + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "Список банов (%s) - %s" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Удалить" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Сжать" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Обновить" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Статистика: %d/%d пользователей на %d/%d каналах" + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Выберите файл для вывода" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "Зайти на канал" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "Копировать имя _канала" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "Скопировать _тему общения" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "Список каналов (%s) - %s" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "Поиск" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "_Загрузить список" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "Со_хранить список..." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "Показывать только:" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "Открывать каналы как:" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "к" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "пользователи." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "Поиск в:" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Имя канала" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "Тип поиска:" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "Простой поиск" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "Использовать шаблоны" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "Регулярное выражение" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Поиск:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Отправить файл %s" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "Файл нельзя продолжить." + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "Нет доступа к файлу: %s\n%s.\nПродолжение не доступно." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "Файл во входном каталоге больше запрошенного. Продолжение невозможно." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "Не могу продолжить одинаковый файл от 2 пользователей." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "Прием и передача файлов - %s" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Статус" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Файл" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "Осталось" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Оба" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "Отгрузки" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "Загрузки" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "Подробно" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "Файл:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "Адрес:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Прервать" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Подтвердить" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Продолж." + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "Открыть папку..." + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "Список разговоров по DCC - %s" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Прин" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Отпр" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "Время Начала" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "Добавить" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Удалить" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Отмена" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Записать" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "Не подключаться к серверам" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "используется другой конфигурационный каталог" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "Не загружать автоматически плагины" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "Показать каталог автозагрузки плагина/скрипта" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "показать каталог пользовательских настроек" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "Открыть irc://server:port/channel?key URL" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "Выполнить команду:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "Открыть URL или выполнить команду в текущем HexChat" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Вид окна при запуске. Ур. 0=обычное 1=свернутое 2=значок" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "уровень" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "Показать информацию о версии" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "Ошибка открытия шрифта:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "Буфер поиска пуст.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d байт" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Очередь отправки, байт: %d" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "Команда  Вставить в буфер вставит содержимое Данные 1 в текущую позицию курсора" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "Команда  Установить буфер содержит последовательность, содержащуюся в Данные 1" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "Команда  Последняя команда одержит последнюю введеную команду - такую же, как в оболочке." + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "Команда  Следующая команда содержит следующую введеную команду, - такую же, как и в оболочке." + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "Команда заменяет текст, дополняя ники и команды. Если Данные 1 установлены, двойной Tab выбирает последний ник, не следующий." + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "Команда прокручивает список ников. Если Данные 1 установлены - прокручивает вверх, иначе - вниз." + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "Команда проверяет последнее введенное слово в список замены и заменяет, если находит соответствие." + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "Эта команда перемещает текущую закладку влево." + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "Эта команда перемещает текущую закладку вправо." + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "Эта команда перемещает текущую группу закладок влево" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "Эта команда перемещает текущую группу закладок вправо" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "Записать строку в журнал, но не посылать на сервер" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "Ошибка загрузки конфигурации клавиш" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "Клавиатурные сокращения - %s" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "Невозможно записать в этот файл." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "Невозможно прочитать этот файл." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "Такая маска уже существует." + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Личный" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Сообщение" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "Не игнорировать" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "Вы действительно хотите очистить список всех игнорирований?" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "Введите маску для игнорирования:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "Черный список - %s" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Состояние игнорирования:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Канал:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Приватный:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Сообщение:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Пригласить:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "Добавить..." + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "Имя канала недостаточно длинное." + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "Соединение завершено - %s" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "Соединение с %s завершено." + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "Что вы хотите сделать теперь?" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "_Ничего, я войду на канал позднее." + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "Зайти на канал:" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Если вы знаете имя канала, на который хотите зайти, укажите его здесь." + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "" + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "Пока_зывать этот диалог при соединении." + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "Диалог с" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Тема для %s : %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "Тема не установлена" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "Для этого сервера открыто %d каналов или разговоров. Закрыть их все?" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "Выйти из HexChat?" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "Не спрашивать в следующий раз" + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Вы подключены к %i IRC-сетям." + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "Вы действительно хотите выйти?" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "Некоторые передачи файлов еще активны." + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "Свернуть в з_начок" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "Вставить аттрибут или код цвета" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>Жирный</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>Подчеркнутый</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "<i>Italic</i>" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "Обычный" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "Цвета 0-7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "Цвета 8-15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "_Настройки" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "Запись _журнала" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "За_гружать буфер" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "_Скрыть сообщения о приходе/уходе" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "Опове_щения" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "_Звуковой сигнал при личном сообщении" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "_Мигание значка при личном сообщении" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "Мерцание _окна" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "Отсо_единить" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "Закрыть" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "Лимит пользователей должен содержать номер!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "Фильтр цвета" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "Нет последних сообщений" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "Защитить тему" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "Только приглашенные" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "Модерируемый" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "Список банов" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Ключевое слово" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "Ограничение пользователей" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Введите новый ник:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "Ничего не найдено" + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "" + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "_Выделить все" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "С учётом _регистра" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "Искать с учётом регистра." + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "_Регулярное выражение" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "Считать искомую строку регулярным выражением." + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Хост неизвестен" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "Данная запись неизвестна" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Неизвестно" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Настоящее имя:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "Пользователь:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "Учётная запись:" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "Страна:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "Сервер:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "%u минут назад" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "Последнее сообщение:" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "Сообщение об отсутствии:" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "Выделено имен: %d." + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "Строка меню скрыта. Чтобы увидеть ее снова, нажмите Control+F9 или щёлкните правой кнопкой по свободному месту в окне." + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "Открыть ссылку в браузере" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "Копировать выбранную ссылку" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Зайти на канал" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "Покинуть канал" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "Каналы по кругу" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "_Автозаход" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "Автозаход на канал" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "_Автосоединение" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "Пользовательское меню - %s" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "Линия отметки удалена" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "Линия отметки не установлена" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "Линия отметки сброшена вручную." + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "Линия отметки удалена командой CLEAR" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "Статус линии отметки неизвестен." + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "был собран без поддержки дополнений" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "Ответы CTCP - Специальные коды:\n\n%d = данные (целый ctcp)\n%e = имя текущей сети\n%m = инфо о компьютере\n%s = ник пославшего ctcp\n%t = время/дата\n%2 = слово 2\n%3 = слово 3\n&2 = слово 2 до конца строки\n&3 = слово 3 до конца строки\n\n" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "Определенные пользователем команды - %s" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "Замена - %s" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "Заменить на" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "Обработчики URL - %s" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "Кнопки списка пользователей - %s" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "Кнопки диалога - %s" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "Ответы CTCP - %s" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "He_xChat" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "Новая..." + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "Выход" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "_Вид" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "Панел_ь меню" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "Т_ема" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "Список _пользователей" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "Кнопки _режима канала" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "Список _каналов" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "Закладки" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "Де_рево" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "_Монитор сети" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Выключено" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "График:" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "_Полноэкранка" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "Сервер" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "Отключиться" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "Пересоединиться" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "Помечен как _Отошёл" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "_Меню пользователя" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "Настройка" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "Установки" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "Окно" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "Сбросить маркерную линию" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "Перейти к маркерной линии" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "_Копировать выделение" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "Очистить" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "Поиск" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "Перейти к следующему" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "Перейти к предыдущему" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "Помощь" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "Содержание" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "О программе" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "Присо_единить" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Имя" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Последний раз" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "Отключен" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Никогда" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "%d минут назад" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "Час назад" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "%d часов назад" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "Подключен" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "Введите ник для добавления:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "Уведомлять на данных сетях:" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "Укажите разделенный запятыми список сетей." + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "Список друзей - %s" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "Начать разговор" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "Выделенное сообщение от %s (%s)" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "Канал, сообщение от %s (%s)" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "Предложен файл: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "Приглашён на канал: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "Сообщение с: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "Индивидуальное сообщение от %s (%s)" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "Подключен; сети: %u, каналы: %u - %s" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "_Восстановить окно" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "_Спрятать окно" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "_Мигать при сообщениях" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "Сообщение канала" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "Личное сообщение" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "Выделенные сообщения" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "Состо_яние" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "Ото_шел" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "_Вернулся" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "Выделенное сообщение от %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "%u выделенных сообщения, последнее от %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "Канал, сообщение от %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "%u сообщений канала. - %s" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "Личное сообщение от %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "%u личных сообщения, последнее от %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "Предложен файл: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "%u предложения файлов, последнее от %s (%s) - %s" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Версия" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Описание" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Выберите плагин или скрипт для загрузки" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "Скрипты и плагины - %s" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "Загрузить..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "Выгрузить" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "Перезагрузить" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "Сохранить как..." + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "Лог без фильтрации (%s) - %s" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "Очистить лог" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Новая сеть" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Удалить сеть \"%s\" и все ее сервера?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "Имя пользователя не может быть пустым" + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "Вы не можете существовать без ника." + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "У вас должно быть минимум 2 уникальных имени" + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "Редактирование: %s - %s" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "Сервера" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "Автоматический заход на канал" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "Команды при соединении" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "%n=Ник\n%p=Пароль\n%r=Настоящее имя\n%u=Имя пользователя" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "Ключ (пароль):" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "Редактировать" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "Соединиться только с выделенным сервером" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Не перебирать сервера при ошибке соединения." + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "Подключится к этой сети автоматически" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "Обходить прокси-сервер" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "Использовать SSL для всех серверов в этой сети" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "Согласиться на некорректный сертификат" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "Использовать глобальные установки пользователя:" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "Ник:" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "Второй выбор:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "Настоящее имя:" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "Имя пользователя:" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "Метод авторизации:" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Пароль:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "Пароль для входа, если сомневаетесь - оставьте пустым." + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "Кодировка:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "Список сетей - %s" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "Информация о пользователе" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "Третий выбор:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Сети" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "Не показывать список сетей при запуске" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "Показывать только фавориты" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "Править..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "Сортировать" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "_В фавориты" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "Добавляет или убирает эту сеть из фаворитов" + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "Подключить" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "Африканский" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Албанский" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "Амхарский" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "Австрийский" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Азербайджанский" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "Баскский" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Белорусский" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Болгарский" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "Китайский (упрощённый)" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "Китайский (традиционный)" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "Чешский" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "Датский" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "Датский" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "Английский (Великобритания)" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "Английский" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Эстонский" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "Финский" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "Французский" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "Галисийский" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "Немецкий" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "Греческий" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "Хинди" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "Венгерский" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "Индонезийский" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "Итальянский" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "Японский" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "Каннада" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "Корейский" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "Латышский" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "Литовский" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "Македонский" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Малайский" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "Норвежский (букмол)" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "Норвежский (нюнорск)" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "Польский" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "Португальский" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "Португальский (Бразилия)" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "Панджаби" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "Русский" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "Сербский" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "Словацкий" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "Словенский" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "Испанский" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "Шведский" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Тайский" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "Туркский" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "Украинский" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Вьетнамский" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "Валлонский" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Главный" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "Язык:" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "Основной шрифт:" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Шрифт:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "Текстовая область" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "Цветные ники" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "Дать каждому участнику канала свой цвет" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "Выравнивать ники" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "Выравнивает ники по правому краю." + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "Показывать разделительную черту" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "Вставить красную линию после последней прочитанной строки." + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Фоновое изображение:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "Настройки прозрачности" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "См. статью о strftime в MSDN." + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "См. страницу руководства по strftime." + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "Показать режимы канала" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "Показать номера пользователей" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "По времени" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "Поле ввода " + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "Показать строку для имени" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "Проверка орфографии" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "Использовать словари:" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "Используйте коды языков. Разделяйте коды запятыми." + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "Автодополнение ников" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "Суффикс дополнения ников:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "Сортировать варианты имен:" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "Количество вариантов имён:" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "имена." + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "Графический" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "Не сортировать" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Вверху" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Внизу" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Скрыто" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "Список Пользователей" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "Показывать хост пользователя в списке пользователей" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "Использовать цвета и шрифт текстовой надписи" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "Показать иконки прав пользователей" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "Цветные имена пользователей в списке" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "Показать кол-во пользователей на канале" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "Сортировать спиоса пользователе пой " + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "Список пользователей:" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "Слежение за отсутствием" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "На каналах меньше, чем:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "Действие по двойному щелчку" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "Ещё дополнения" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "Уровень лагов:" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Окна" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Закладки" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "Всегда" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "Только запрошенные закладки" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "Автоматически" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "Дерево" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "Вид списка:" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "Открыть вкладку для сообщений сервера" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "Открыть новую вкладку при получении частных сообщений" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "Сортировать вкладки в алфавитном порядке" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "Показывать значки в дереве каналов" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "Мелкий шрифт" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "Переходить на новые вкладки:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "Переключатель каналов:" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "Сократить метки вкладок до:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "букв." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "Вкладки или окна" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "Открывать каналы как:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "Открывать разговоры как:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "Открывать утилиты как:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Открыть как закладки DCC, Игнорирования, Уведомлений и т.д. или в окне?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "Сообщения" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "Прошлые разговоры" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "Запрос подтверждения" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "Запрос папки загрузки" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "Файлы и каталоги" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "Автоматически принимать файлы:" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Загрузить файлы в:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "Переместить завершенные файлы в:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "Записать ники в файл" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "Автоматически открывать окна DCC" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "Окно отправления" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "Окно приема" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "Окно канала..." + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "Одна заливка:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "Макс. скорость для одной передачи" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "Одна закачка:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "Все передачи объединены:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "Максимальная скорость для всех файлов" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "Все закачки объединены:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "Предупреждения" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "Показывать уведомления на:" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "Мигание значка при:" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "Мигание окна при:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "Звуковой сигнал при:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "Не показывать уведомления во время отсутствия" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "Значок в области уведомлений" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "Свернуть в трей" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "Закрыть в трей" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "Автоматически отмечать \"ушёл/вернулся\"" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "" + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "Выделенные сообщения" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Выделяются сообщения, в которых упомянуто ваше имя, кроме того:" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "Выделять следующие слова:" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "Не выделять имена:" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "Всегда выделять имена:" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Разделяйте слова запятыми.\nМожно использовать шаблоны." + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "Сообщения по умолчанию" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "Выход:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "Уйти с канала:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "Отошел:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "Отошел" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Показывать сообщение 'Ушёл' 1 раз" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "Автоматически снимать статус \"Отошел\"" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "" + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "Дополнительные настройки" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "Отображать режимы в чистом виде" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "Скрыть сообщения о приходе/уходе" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "Скрыть сообщения о смене ника" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "*!*@*.host" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "*!*@domain" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "*!*user@*.host" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "*!*user@domain" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "Автоматическое копирование в буфер обмена" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "Автоматически копировать выделенный текст" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "Включать цвета" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "Настоящее имя:" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "Альтернативные шрифты:" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "Показать лист в сокращённом режиме" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "Использовать время сервера, если возможно" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "Автоматически переподключаться, если соединение оборвалось" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "Задержка авто восстановления соединения:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "Тип бана:" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Протоколирование" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "Загрузить буфер прошлого разговора" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "Строк в буфере:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "Запись журнала разговора" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "Имя файла журнала:" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Сервер %c=Канал %n=Сеть." + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "Добавлять время в протокол" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "Формат времени/даты для протокола:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URL" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "Включить запись URL на диск" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "Включить сборщик URL" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(Выключено)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "Авто" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "Ваш адрес" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "Назначить:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "Используется только на компьютерах с несколькими адресами." + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "Передачи файлов" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "Получить свой IP от IRC сервера" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "Запросить у сервера свой реальный адрес. Используйте, если ваш адрес вида 192.168.*.*!" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "DCC IP адрес:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "Заявить этот адрес для предложения файлов." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "!Оставьте 0 для всего диапазона портов." + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "Прокси сервер" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "Имя машины:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Порт:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Тип:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "Использовать прокси для:" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "Авторизация прокси" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "Имя пользователя:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "Сервер Identd" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "Включено" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "Выберите файл картинки" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "Загрузить файлы в" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Выберите шрифт" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Выбрать..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "Открыть каталог с данными" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Выбрать цвет" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "Цвета текста" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "Цвета mIRC:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "Локальные цвета:" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Передний план:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Фон:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "Выбранный текст" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "Интерфейс" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "Новые данные:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "Отмеченый передний план:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "Новое Сообщение:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "Отошедший пользователь:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "Выделение:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "Проверка орфографии:" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "Обесцвечивание" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Событие" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "Звуковой файл" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "Выберите звуковой файл" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "Звуковой файл:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "Выбрать..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "Воспрои_звести" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Интерфейс" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "Внешний вид" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Поле ввода " + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Список пользователей" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "Список каналов" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Цвета" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Общение" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "Звук" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "Дополнительно" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Настройки сети" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Передача файла" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "Identd" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Категории" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "Дерево нельзя поместить сверху или снизу!\nСначала замените его на <b>Вкладки</b> в меню <b>Вид</b>." + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "Опция реального имени не может оставаться пустой. Откатываю значение до \"realname\"." + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Изменение некоторых настроек требует перезапуска программы для их использования." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*ПРЕДУПРЕЖДЕНИЕ*\nАвтоматический прием DCC в ваш домашний каталог\nможет быть опасным и создавать уязвимости. Например:\nКто-нибудь пришлет вам .bash_profile" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "Настройки - %s" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "<i>(нет вариантов)</i>" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "Ещё...." + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "Добавить \"%s\" в словарь" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "Игнорировать всё" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "Варианты правописания" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "Ошибка в библиотеке enchant для языка: %s" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "Ошибка при разборе строки" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Этот сигнал передал только %d аргумента, $%d отсутствует." + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "Печатать текстовый файл" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ номер" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Редактировать события" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "Загрузить из..." + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Проверить все" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "ОК" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "Сборщик URL - %s" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Очистить список" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Копировать выбранный URL" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Копировать" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Записать список в файл" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d оп-ов, %d всего" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "Открывает URL вида irc://сервер:порт/канал" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "Sysinfo: Ошибка при получении информации. Либо не поддерживается или ошибка." + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "Sysinfo: Информация по этому имени отсутствует\n" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "Sysinfo: %s установлен в %d\n" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "Sysinfo: Корректные настройки: announce и hide_* для каждой информационной части. Например: hide_os. Без указания значения будет показана текущая (по умолчанию) настройка.\n" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "Sysinfo: Неверное имя переменной\n" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "%s плагин загружен\n" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "%s плагин выгружен\n" diff --git a/hexchat/po/rw.po b/hexchat/po/rw.po new file mode 100644 index 0000000..95c6e47 --- /dev/null +++ b/hexchat/po/rw.po @@ -0,0 +1,6262 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Antoine Bigirimana <antoine@e-tools.com>, 2005 +# Augustin KIBERWA <akiberwa@yahoo.co.uk>, 2005 +# Carole Karema <karemacarole@hotmail.com>, 2005 +# Donatien NSENGIYUMVA <ndonatienuk@yahoo.co.uk>, 2005 +# JEAN BAPTISTE NGENDAHAYO <ngenda_denis@yahoo.co.uk>, 2005 +# Noëlla Mupole <s24211045@tuks.co.za>, 2005 +# Philibert Ndandali <ndandali@yahoo.fr>, 2005 +# Steve Murphy <murf@e-tools.com>, 2005 +# Viateur MUGENZI <muvia1@yahoo.fr>, 2005 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-03 20:10+0000\n" +"Last-Translator: TingPing <tingping@tingping.se>\n" +"Language-Team: Kinyarwanda (http://www.transifex.com/hexchat/hexchat/language/rw/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: rw\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "urusobe" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<tacyo>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Tegereza" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Gikora" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Byanze" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Byakozwe" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Kwihuza" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Ikosa" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "" + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "Ikiganiro" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Kohereza" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Gusiba" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "" + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "" + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "" + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr "" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr "" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "" + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "" + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "" + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "" + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "" + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "" + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "" + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "" + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "" + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "" + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "" + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "" + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "" + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "" + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "" + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "" + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "" + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "" + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "" + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "" + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "" + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "" + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "" + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "" + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "" + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "" + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Izina ry'ukoresha" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "Ubuturo" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Irihimbano" + +#: src/common/text.c:980 +msgid "The action" +msgstr "Igikorwa" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "" + +#: src/common/text.c:987 +msgid "The text" +msgstr "Umwandiko" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "Ubutumwa" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Insanganyamatsiko" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Ubuturo" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Amakuru ya seriveri" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Ubutumwa" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "konti" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Umwandiko" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Umuyoboro" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Izina ry'idosiye" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Ibirindiro" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Ingano" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Umwakirizi" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Andora" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Leta Zunze Ubumwe z'Abarabu" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Afuganisita" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Antigwa na Baribuda" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Angwiya" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Arubaniya" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Arumeniya" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Antiye za nederilande" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Antarigitika" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Arijantine" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Samowa Nyamerika" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Otirishi" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Ositarariya" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Azeribayijani" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Bosiniya na Herizegovina" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Barubado" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Bangaladeshi" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Ububirigi" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Burukina Faso" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Burugariya" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Bahirayini" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Uburundi" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Bene" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Berimuda" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Buruneyi Darisalamu" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Boriviya" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Bureziri" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Ibirwa bya Bahama" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Butani" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Ikirwa cya Bouve" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Berarusi" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Kanada" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "Repuburika ya Santarafurika" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Kongo" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "UBusuwisi" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "kotedivuwari" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Ibirwa bya Kuke" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Shiri" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Kameruni" + +#: src/common/util.c:738 +msgid "China" +msgstr "Ubushinwa" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Korombiya" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Kosita Rika" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "Seribiya na Montenegoro" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Kiba" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Kapu Veri" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Ikirwa cya Noheli" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Shipure" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "Repuburika ya Ceki" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Ubudage" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Jibuti" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Danemarike" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Dominika" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "Repuburika ya Dominikani" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Arijeriya" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Ekwateri" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Esitoniya" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Misiri" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Sahara y'Uburengerazuba" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Eritereya" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "Esipanye" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Etiyopiya" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Finirandi" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Fiji" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Ibirwa bya Farowe" + +#: src/common/util.c:770 +msgid "France" +msgstr "Ubufaransa" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Gabo" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Gerenada" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Jeworujiya" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Guyane Nyamfaransa" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Gana" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Giburalitari" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Goronulande" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Gambiya" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Gineya" + +#: src/common/util.c:782 +msgid "Government" +msgstr "" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Gwaderupe" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Gineya Ekwatoriyale" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Ubugereki" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Gwatemara" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Gwami" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Guneya-Biso" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Giyane" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Hong Kongo" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Hondurasi" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Korowasiya" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Hayiti" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Hongiriya" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Indonesiya" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Irirandi" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Isiraheri" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "" + +#: src/common/util.c:801 +msgid "India" +msgstr "Ubuhindi" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "" + +#: src/common/util.c:803 +msgid "International" +msgstr "Mpuzamahanga" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Teritwari y'Inyanja y'Abahinde Nyongereza" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Irake" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Isirandi" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Ubutariyani" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Jamayika" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Yorudaniya" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Ubuyapani" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Kenya" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Kirigizasitani" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Kambodiya" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Komore" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Iwani rya Koreya y'Amajyaruguru" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Koreya y'epfo" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Koweti" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Ibirwa bya Kayima" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Kazakisitani" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Libani" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Mutagatifu Lusiya" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Siri Lanka" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Liberiya" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Lesoto" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Lituwaniya" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Lugusamburu" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Letoniya" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Libiya" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Maroke" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Monako" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Madagasikari" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Ibirwa bya Marishali" + +#: src/common/util.c:843 +msgid "Military" +msgstr "" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Masedoniya" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Mongoliya" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Ibirwa bya Mariyana y'Amajyaruguru" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Maritike" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Moritaniya" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Monserati" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Marita" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Ibirwa bya Morisi" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Malidivezi" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "Megizike" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Mareziya" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Mozambike" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Namibiya" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Nuveli Kalidoniya" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Nigeri" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Ibirwa bya Norufoluki" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Nijeriya" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Nikaragwa" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "UBuhorandi" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Noruveji" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Nepari" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Ikinawuru" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Niyuwe" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "Nouvelle Zelande" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Omani" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Polinesiya Nyamfaransa" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Papouasie Nouvelle Guinée" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Firipine" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Pakisitani" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Poronye" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Piticayirine" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Puwerito Riko" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Porutigari" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Palawu" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Paragwe" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Katari" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Reyiniyo" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Rumaniya" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "UBurusiya" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Rwanda" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Arabiya Sawudite" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Ibirwa bya Solomoni" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Seyishele" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Sudani" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Suwedi" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Singapure" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Soroveniya" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "Repubulika ya Silovakiya" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Siyera Lewone" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "Mutagatifu Marino" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Senegali" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Somaliya" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Surinamu" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "Sawo Tome na Purensipe" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Ikinyasiriya" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Suwazirandi" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Ibirwa bya Takisi na Kayikosi" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Cade" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "Ibihugu by'Amajyepfo Nyamfaransa" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Tayirandi" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Tajikisitani" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "Tokelawu" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Turukumenisitani" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Tuniziya" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Turukiya" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Tirinite na Tabago" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Tayiwani" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Ukereni" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Yuganda" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Ubwongereza" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "Leta Zunze Ubumwe z'Amerika" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Irigwe" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Uzubekisitani" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Venezuwera" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "Ibirwa bya Virigini Nyongereza" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Viyetinamu" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Vanuwatu" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Samowa" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Yemeni" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Mayoti" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Yugosiraviya" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Afurika y'epfo" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Zambiya" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Gutumira" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "" + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "" + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "Bivuye" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Itariki" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Gukuraho" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Gukataho" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Kugira gishya" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "" + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Shaka:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "" + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "" + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Imimerere" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Idosiye" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Byombi" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Ntibyakunze" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Kwemera" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Guca make" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "" + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Byoherejwe" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Gusiba" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Kureka" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Kubika" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "" + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "" + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "" + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "By'umwihariko" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "" + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "" + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "" + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "" + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "" + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "" + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "" + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "" + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Ijambo-banze" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "" + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "" + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "" + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Kitazwi" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Bidakora" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Izina" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "Ntibicometse kuri interineti" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Nta narimwe" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "kiri kuri interineti" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Verisiyo" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Isobanuramiterere" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "" + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "" + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Ijambobanga:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Arubaniya" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Azeribayijani" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Berarusi" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Burugariya" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Esitoniya" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "Ubuhindi" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Mareziya" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Tayirandi" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Viyetinamu" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Rusange" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Intego-nyuguti:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "" + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Ishusho mbuganyuma:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "" + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "" + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "" + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Hejuru" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Indiba" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Birahishe" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Amasimbuka" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "Buri gihe" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "" + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "" + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "" + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "" + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URL" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "" + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "" + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "" + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Impagikiro:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Ubwoko" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Gushakisha..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Mbuganyuma:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Icyabaye" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "" + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Amabara" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "Urwego rwo hejuru" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Ibyiciro" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "" + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "" + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "" + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Gukoporora" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "" diff --git a/hexchat/po/sk.po b/hexchat/po/sk.po new file mode 100644 index 0000000..5515c3f --- /dev/null +++ b/hexchat/po/sk.po @@ -0,0 +1,6256 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Martin Pekar <cortex@nextra.sk>, 2000 +# Stanislav Visnovsky <visnovsky@kde.org>, 2003 +# Stanislav Visnovsky <visnovsky@nenya.ms.mff.cuni.cz>, 2002 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-03 20:10+0000\n" +"Last-Translator: TingPing <tingping@tingping.se>\n" +"Language-Team: Slovak (http://www.transifex.com/hexchat/hexchat/language/sk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sk\n" +"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Pracujem" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Odchádzam" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Sieť" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<žiadny>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Kanál" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Čakám" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Aktívny" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Zlyhal" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Hotovo" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Pripojiť" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Prerušené" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "Nepodaril sa prístup k %s\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Chyba" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "Žiadne DCC spojenie nie je aktívne\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Dať op" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Zobrať op" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "Dať voice" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "Zobrať voice" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Vykopnúť/Zakázať" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Vykopnúť" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "Zakázať" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "Vykopnúť a zakázať" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Opustiť kanál" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Prihlásiť sa na kanál..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "Zadajte kanál:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Serverové pripojenia" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Ping na server" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Skryť verziu" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Op" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "bye" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Zadajte dôvod pre vykopnutie %s:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "Dialóg" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Odoslať" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Chat" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Vymazať" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "" + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* Spúšťať IRC ako root nie je dobrý nápad! Mali by ste\n si vytvoriť používateľský účet a prihlasovať sa pod ním.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "ÁNO " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "NIE " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Ste cieľom CTCP floodu od %s, ignorujem %s\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s online\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s offline\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Nie ste na žiadnom kanáli. Použite /join #<kanál>\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Nie ste pripojený. Použite /server <hostiteľ> [<port>]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "Je potrebný program /bin/sh !\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Neznámy argument '%s' ignorovaný." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "" + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "Plugin sa nenašiel.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "Plugin sa odmieta odobrať.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <meno> <akcia>, pridá tlačidlo pod zoznam používateľov" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <príkaz>, pošle príkaz do všetkých kanálov, v ktorých ste" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <príkaz>, pošle príkaz na všetky servery, na ktorých ste" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <maska> [<typ>], zakáže každého, kto odpovedá maske, z aktuálneho kanála. Ak už sú prihlásení v kanáli, nevykopne ich to (musíte byť chanop)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "" + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <kód|maska>, nájde kód krajiny, napr. sk = Slovensko" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <prezývka> <správa>, pošle správu CTCP používateľovi, obvyklé správy sú VERSION a USERINFO" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <prezývka>, odstráni stav chanhalf-op pre prezývku v aktuálnom kanáli (vyžaduje chanop)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <meno>, odstráni tlačidlo pod zoznamom používateľov" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <prezývka>, odstráni stav chanop pre prezývku v aktuálnom kanáli (vyžaduje chanop)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <prezývka>, odstráni stav voice pre prezývku v aktuálnom kanáli (vyžaduje chanop)" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, odpojí od serveru" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <text>, Zobrazí text lokálne" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <príkaz>, spustí príkaz. Ak je použitý prepínač -o, výstup sa posiela do aktuálneho kanálu, inak sa zobrazí do aktuálneho textového poľa" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, pošle procesu SIGCONT" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9], zabije programy bežiace v aktuálnom sedení. Ak je zadané -9, pošle sa signál SIGKILL" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, pošle procesu SIGSTOP" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, pošle procesu dáta na štandardný vstup" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, vyčistí aktuálnu frontu serveru pre posielanie" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <hostiteľ> [<port>], nastaví proxy na hostiteľa, port je štandardne 23" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <prezývka>, nastaví stav chanhalf-op pre používateľa (vyžaduje chanop)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <maska> <typy..> <možnosti..>\n maska - maska ignorovaných hostiteľov, napr.: *!*@*.aol.com\n typy - typy ignorovaný dát, jedna alebo všetky z:\n PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n možnosti - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <prezývka> [<kanál>], pozve niekoho na kanál, štandardne na aktuálny kanál (vyžaduje chanop)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <kanál>, vstúpi na kanál" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, vynúti novú kontrolu lagu" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, hromadne zruší stav všetkým chanhalf-op v aktuálnom kanáli (vyžaduje chanop)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, hromadne zruší stav všetkým chanop v aktuálnom kanáli (vyžaduje chanop)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <akcia>, pošle akciu do aktuálneho kanálu (akcie sa píšu v tretej osobe, napríklad /me skáče)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, hromadne vykopne každého okrem vás z aktuálneho kanálu (vyžaduje chanop)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, hromadne nastaví stav všetkým používateľom v aktuálnom kanáli (vyžaduje chanop)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <prezývka> <správa>, pošle poznámku CTCP" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <prezývka>, nastaví vašu prezývku" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <prezývka>, dá stav chanop používateľovi (vyžaduje chanop)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<kanál>] [<dôvod>], opustí kanál, štandardne aktuálny" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <prezývka | kanál>, pošle CTCP ping používateľovi alebo na kanál" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "" + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<dôvod>], odpojí sa od aktuálneho serveru" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <text>, pošle text tak ako je na server" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<hostiteľ>] [<port>] [<heslo>], môže sa použiť aj bez parametrov ako /RECONNECT pre znovupripojenie k aktuálnemu serveru alebo ako /RECONNECT ALL pre znovupripojenie ku všetkým aktívným serverom" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<hostiteľ>] [<port>] [<heslo>], môže sa použiť aj bez parametrov ako /RECONNECT pre znovupripojenie k aktuálnemu serveru alebo ako /RECONNECT ALL pre znovupripojenie ku všetkým aktívnym serverom" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <text>, pošle text objektu v aktuálnom okne" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <hostiteľ> <port> <kanál>, pripojí sa a vstúpi na kanál" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <hostiteľ> <port> <kanál>, pripojí sa a vstúpi kanál" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "/SERVER <hostiteľ> [<port>] [<heslo>], pripojí sa na server, štandardný port je 6667" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<téma>], nastaví tému, ak je zadaná, inak zobrazí aktuálnu tému" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <maska> [<maska>...], zruší zákaz pre zadané masky." + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <maska> [QUIET]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <súbor>, odoberie plugin alebo skript" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "" + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <adresa>, otvorí URL adresu vo vašom prehliadači" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <prezývka>, udelí niekomu stav voice (vyžaduje chanop)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <správa>, napíše správu do všetkých kanálov" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <správa>, pošle správu všetkým so stavom chanop v aktuálnom kanáli" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "Použitie: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nPre tento príkaz nie je žiadna pomoc.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "Neznámy príkaz.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "Chybné argumenty pre používateľský príkaz.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "Príliš veľa vnorených používateľských príkazov, končím." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Ste si istý, že tento server podporuje SSL na tomto porte?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "Nemôžem zistiť meno hostiteľa %s\nSkontrolujte si IP nastavenia!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "Spojenie cez proxy zlyhalo.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Skúšam ďalší server v %s...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "Pozor: kódová stránka \"%s\" je neznáma. Na sieť %s nebude aplikovaná žiadna konverzia." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "" + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "" + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%UKanál Používatelia Téma" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "" + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "" + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "" + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "" + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "" + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "" + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "" + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "" + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "" + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "" + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "" + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "" + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tZoznam upozornení prázdny." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "" + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "" + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "" + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "" + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** KONIEC ZÁZNAMU %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** ZAČIATOK ZÁZNAMU %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "Ľavá správa" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "Pravá správa" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "IP adresa" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Používateľ" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "Prezývka vstupujúcej osoby" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "Kanál, na ktorý sa vstupuje" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "Hostiteľ osoby" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Prezývka" + +#: src/common/text.c:980 +msgid "The action" +msgstr "Akcia" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "Znak módu" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "Identifikovaný text" + +#: src/common/text.c:987 +msgid "The text" +msgstr "Text" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "Správa" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Názov serveru" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Stará prezývka" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Nová prezývka" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "Prezývka osoby ktorá zmenila tému" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Téma" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "Prezývka kopajúceho" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "Osoba ktorá bola vykopnutá" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "Kanál" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "Dôvod" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "Prezývka odchádzajúcej osoby" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "Čas" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "Autor" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Prezývka" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Dôvod" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Hostiteľ" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "Od koho to je" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "Čas vo formáte x.x (viď nižšie)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "Kanál, kam ide" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "Zvuk" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "Prezývka osoby" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "Udalosť CTCP" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "Prezývka osoby, ktorá nastavila heslo" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "Heslo" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "Prezývka osoby, ktorá nastavila limit" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "Limit" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "Prezývka osoby, ktorá nastavila operátora" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "Prezývka osoby, ktorá sa stala operátorom" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "Prezývka osoby, ktorá sa stala čiastočným operátorom" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "Prezývka osoby, ktorá nastavila čiastočného operátora" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "Prezývka osoby, ktorá nastavila voice" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "Prezývka osoby, ktorá dostala voice" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "Prezývka osoby, ktorá nastavila zákaz" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "Maska zákazu" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "Prezývka osoby, ktorá odstránila heslo" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "Prezývka osoby, ktorá odstránila limit" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "Prezývka osoby, ktorej bol odobratý operátor" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Prezývka osoby, ktorej bol odobratý čiastočný operátor" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "Prezývka osoby, ktorej bol odobratý voice" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "Prezývka osoby, ktorá nastavila výnimku" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "Maska výnimky" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "Prezývka osoby, ktorá odstránila výnimku" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "Prezývka osoby, ktorá pozvala" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "Maska pozvania" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "Prezývka osoby, ktorá odstránila pozvanie" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "Prezývka osoby, ktorá nastavila mód" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "Znamienko módu (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "Písmeno módu" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "Kanál, na ktorom to bolo nastavené" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Celé meno" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Členstvo v kanáli/\"is an IRC operator\"" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Informácie o serveri" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Čas nečinnosti" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Čas prihlásenia" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Dôvod neprítomnosti" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Správa" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Konto" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "Skutočný user@host" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "Skutočná IP" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Názov kanálu" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Text" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Prezývka osoby, ktorá vás pozvala" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Používatelia" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "Používaná prezývka" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Skúšaná prezývka" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Port" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "Reťazec módov" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "Typ DCC" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Názov súboru" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Cieľový súbor" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "Cesta" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Pozícia" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Veľkosť" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "Reťazec DCC" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "Počet položiek upozornenia" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Staré meno súboru" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Nové meno súboru" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Príjemca" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Maska hostiteľa" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Hostiteľ" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "Paket" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "Sekundy" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "Prezývka osoby, ktorá bola pozvaná" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Maska zákazu" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "Kto nastavil zákaz" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Čas zákazu" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "Nemôžem prečítať zvukový súbor:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "Vzdialený hostiteľ zatvoril soket" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "Spojenie odmietnuté" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "Cesta k hostiteľovi neexistuje" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Časový limit pre spojenie vypršal" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "Nepodarilo sa priradiť adresu" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "Spojenie zrušené druhou stranou" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Spojené Arabské Emiráty" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Afganistan" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Antigua a Barbuda" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Albánsko" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Arménsko" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Holandské Antily" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Antarktída" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Argentína" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "Reverzné DNS" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Americká Samoa" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Rakúsko" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Austrália" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Azerbajdžan" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Bosna a Hercegovina" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Bangladéš" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Belgicko" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Bulharsko" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Bahrajn" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "Obchodné" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Bermudy" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Brunei Darussalam" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Bolívia" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Brazília" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Bahamy" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Bhután" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Bouvet Island" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Bielorusko" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Kanada" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Kokosové ostrovy" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "Demokratická republika Kongo" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "Stredoafrická Republika" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Kongo" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "Švajčiarsko" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "Pobrežie slonoviny" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Cookove ostrovy" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Chile" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Kamerun" + +#: src/common/util.c:738 +msgid "China" +msgstr "Čína" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Kolumbia" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Komerčné" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Kostarika" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "Srbsko a Čierna Hora" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Kuba" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Kapverdy" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Vianočné ostrovy" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Cyprus" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "Česká Republika" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Nemecko" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Džibuti" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Dánsko" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Dominika" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "Dominikánska Republika" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Alžírsko" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Ekvádor" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Školstvo" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Estónsko" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Egypt" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Západná Sahara" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "Španielsko" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Etiópia" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Fínsko" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Fidži" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Falklandské ostrovy" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Mikronézia" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Faerské ostrovy" + +#: src/common/util.c:770 +msgid "France" +msgstr "Francúzsko" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Veľká Británia" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Gruzínsko" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Francúzska guayana" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "Britské ostrovy v kanáli" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Ghana" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Gibraltár" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Grónsko" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Vládne" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Guadeloupe" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Rovníková Guinea" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Grécko" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "S. Georgia a S. Sandwich Isles" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Guinea-Bissau" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Guayana" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Hongkong" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Heard a McDonald Islands" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Chorvátsko" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Maďarsko" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Indonézia" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Írsko" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Izrael" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "" + +#: src/common/util.c:801 +msgid "India" +msgstr "India" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "Informačné" + +#: src/common/util.c:803 +msgid "International" +msgstr "Medzinárodné" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Britské teritórium Indický oceán" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Irak" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "Irán" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Island" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Taliansko" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Jamajka" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Jordánsko" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Japonsko" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Keňa" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Kirgistán" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Kambodža" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Komory" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "Svätý Krištof a Nevis" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Severná Kórea" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Južná Kórea" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Kuvajt" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Kajmanské ostrovy" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Kazachstan" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Libanon" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Svätá Lucia" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Lichtenštajnsko" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Srí Lanka" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Libéria" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Litva" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Luxemburgsko" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Lotyšsko" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Líbya" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Maroko" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Monako" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Moldavsko" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "USA zdravotníctvo" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Madagaskar" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Marshallove ostrovy" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Vojenské" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Makedónia" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Myanmar (Barma)" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Mongolsko" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Macao" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Severné Mariánske Ostrovy" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Martinik" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Mauritania" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Maurícius" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Maledivy" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "Mexiko" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Malajzia" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Mozambik" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Namíbia" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Nová Kaledónia" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Sieť Internic" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Ostrov Norfolk" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Nigéria" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Nikaragua" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Holandsko" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Nórsko" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Nepál" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "Nový Zéland" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Omán" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "Nezisková organizácia" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Francúzska Polynézia" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Papua Nová Guinea" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Filipíny" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Poľsko" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "St. Pierre a Miquelon" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Portoriko" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "Palestínske teritórium" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Portugalsko" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Paraguaj" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Katar" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Reunion" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Rumunsko" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "Starý ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Ruská federácia" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Rwanda" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Saudská Arábia" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Šalamúnove Ostrovy" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Seychely" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Sudán" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Švédsko" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Singapur" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "Svätá Helena" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Slovinsko" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard a ostrovy Jan Mayen" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "Slovensko" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Somálsko" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Surinam" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "Svätý Tomáš" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Bývalý Sovietsky zväz" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "Salvádor" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Sýria" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Svazijsko" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Turks a Kaikské Ostrovy" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Čad" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "Francúzske južné teritóriá" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Thajsko" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Tadžikistan" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Východný Timor" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Turkmenistán" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Tunisko" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Turecko" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Trinidad a Tobago" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Tanzánia" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Ukrajina" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Spojené kráľovstvo" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "USA" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Uruguaj" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Uzbekistán" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Vatikán" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "Sv. Vincent a Grenada" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "Britské panenské ostrovy" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "US Panenské ostrovy" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Vanuatu (Nové Hebridy)" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "Ostrovy Wallis a Futuna" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Jemen" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Juhoslávia" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Južná Afrika" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Zambia" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Znaková Tabuľka" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "Zakázať" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Pozvať" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "" + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "Musíte vybrať nejaké zákazy." + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Maska" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "Od" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Dátum" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Odstrániť" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Vytiahnuť" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Aktualizovať" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "" + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Vyberte meno výstupného súboru" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Názov kanálu" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Hľadať:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Poslať súbor používateľovi %s" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "V prenose tohoto súboru nie je možné pokračovať." + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "Nemôžem pristupovať k súboru: %s\n%s.\nPokračovanie nie je možné." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "Nedokončený súbor je väčší ako ponúkaný súbor. Pokračovanie nie je možné." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "Nemôžem sťahovať ten istý súbor od dvoch používateľov." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Stav" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Súbor" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Oboje" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Zrušiť" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Akceptovať" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Pokračovať" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "" + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Príjem" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Odoslané" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Odstrániť" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Zrušiť" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Uložiť" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "Vykonať príkaz:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "Nepodarilo sa načítať písmo:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "Vyhľadávací zásobník je prázdny.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d bajtov" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "Príkaz Vložiť do textu vloží obsah Data 1 do položky na aktuálnu pozíciu kurzoru, akoby boli stlačené tieto klávesy" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "Príkaz Nastaviť text vyplní položku akoby boli stlačené dané klávesy podľa obsahu Data 1" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "Príkaz Posledný príkaz nastaví položku, aby obsahovala posledný zadaný príkaz - rovnaké ako stlačenie šipky hore v shelle" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "Príkaz Nasledujúci príkaz nastaví položku, aby obsahovala ďalší zadaný príkaz - rovnaké ako stlačenie šipky dolu v shelle" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "Tento príkaz zmení text v položke tak, aby dokončil neúplné prezývky alebo príkazy. Ak je Data 1 vyplnené, použijú sa dvojité tabulátory ako posledná prezývka a nie nasledujúca" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "Tento príkaz posunie hore alebo dolu v zozname prezývok. Ak je niečo vyplnené v Data 1, posun bude nahor, inak bude posun nadol" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "Tento príkaz otestuje posledné zadané slovo v položke oproti zoznamu náhrad a použije náhrady, ak nájde odpovedajúce časti" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "Tento príkaz posunie prednú záložku o jednu vľavo" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "Tento príkaz posunie prednú záložku o jednu vpravo" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "Tento príkaz posunie aktuálnu skupinu záložiek o jednu vľavo" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "Tento príkaz posunie aktuálnu skupinu záložiek o jednu vpravo" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "Vloží vstupný riadok do histórie, ale neodošle ho serveru" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "Počas načítavania konfigurácie klávesových skratiek nastala chyba" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "Nepodaril sa zápis to súboru." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "Nepodarilo sa čítanie súboru." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "Taká maska už existuje." + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Súkromné" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Poznámka" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "Prestať ignorovať" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "Zadajte masku pre ignorovanie:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Štatistika ignorovania:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Kanál:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Súkromné:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Poznámka:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Pozvánka:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "" + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "" + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "" + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "" + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "" + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "" + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "Dialóg s" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Téma pre %s je: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "Nie je nastavená téma" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "" + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "" + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "_Zavrieť" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "Limit používateľov musí byť číslo!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "Žiadne správy mimo kanál" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "Ochrana témy" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "Len pozvaní" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "Moderované" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "Zoznam zákazov" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Kľúčové slovo" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "Limit používateľov" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Zadajte novú prezývku:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "" + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "" + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "" + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Hostiteľ neznámy" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Neznáme" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Vstúpiť na kanál" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "Opustiť kanál" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "Cyklovať kanál" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Vypnuté" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "Graf" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "_Server" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "_Nastavenia" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "_Okno" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "Vynulovať značiacu čiaru" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "Č_istý text" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "_Pomocník" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "O_bsah" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "_O Programe" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Názov" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Naposledy navštívené" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "Off-line" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Nikdy" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "On-line" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "Zadajte prezývku:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Verzia" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Popis" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Vyberte plugin alebo skript" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "_Načítať..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "" + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Nová sieť" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Naozaj odstrániť sieť \"%s\" a všetky príslušné servery?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "_Upraviť" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "Pripojiť sa len na zvolený server" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Neskúšať iné servery, ak sa pripojenie nepodarí." + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "Použiť SSL pre všetky servery na tejto sieti" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "Použiť spoločné informácie o používateľovi" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "_Prezývka:" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "Druhá voľba:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "S_kutočné meno:" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "_Meno používateľa:" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Heslo:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "Znaková sada:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "Informácie o používateľovi" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "Tretia voľba:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Siete" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "_Upraviť..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "_Triediť" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "_Pripojiť" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Albánsko" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Azerbajdžan" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Bielorusko" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Bulharsko" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Estónsko" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "India" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Malajzia" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Thajsko" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Vietnam" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Všeobecné" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Písmo:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "Farebné prezývky" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "Označiť každého na IRC inou farbou" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "Odsadiť prezývky" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "Prezývky zarovnať do prava" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "Zobrazovať značiacu čiaru" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "Zobraziť za posledným prečítaným textom červenú čiaru" + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Obrázok v pozadí:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "" + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "" + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "Dopĺňanie prezývky:" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "Prípona dokončovania prezývky:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "" + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "Nezotriedené" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Hore" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Dolu" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Skryté" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "Zoznam používateľov" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "Zobrazovať hostiteľov v zozname používateľov" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "Použiť písmo a farby z textového poľa" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "Zoznam používateľov triedený podľa:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "Na kanáloch menších ako:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "Akcia pri dvojkliku" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Okná" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Záložky" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "Vždy" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "Len požadované záložky" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "Otvoriť vlastnú záložku pre správy serveru" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "Triediť záložky v abecednom poriadku" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "Nové záložky presunúť do popredia:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "Skrátiť záložky na:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "znakov." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "Záložky alebo okná" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "Otvárať kanály v:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "Otvárať dialógy v:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "Otvárať pomôcky v:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Otvárať DCC, Ignorovanie, Upozornenie atď v záložkách alebo v oknách?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "Súbory a priečinky" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Prijímať súbory do:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "Presunúť dokončené súbory do:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "Uložiť prezývku v súboroch" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "Automaticky otvoriť okná pre DCC" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "Okno odosielania" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "Okno príjmu" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "Okno konverzácie" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "Jeden odchodzí prenos:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "Max. rýchlosť jedného prenosu" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "Jeden príchodzí prenos:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "Všetky odchodzie prenosy spolu:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "Max. rýchlosť pre všetky prenosy" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "Všetky príchodzie prenosy spolu:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "Upozornenia" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "" + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "Prednastavené správy" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "Ukončiť:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "Opustiť kanál:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "Neprítomný:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "Neprítomný:" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Zobrazovať AWAY iba raz" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "Automaticky zrušiť AWAY" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "" + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "Zobrazovať zmeny MODE v pôvodnom tvare" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "Skryť vstupy a odchody z kanálov" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "Oneskorenie automatického znovupripojenia:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Logovanie" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "Počet riadkov spätného logu:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "" + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "Zaznamenať čas v logoch" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "Formát zobrazovania času:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URL" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(Zakázané)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "Vaša adresa" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "Nastaviť na:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "" + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "Získať moju adresu z IRC serveru" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "Spýta sa serveru na vašu reálnu adresu. Použite toto ak máte adresu v tvare 192.168.*.* !" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "IP adresa DCC:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "Tvrdiť že ste na tejto adrese pri ponúkaní súborov." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "" + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "Proxy server" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "Názov hostiteľa:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Port:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Typ:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "Meno používateľa:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "Vyberte obrazový súbor" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Vyberte písmo" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Prehliadať..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Vyberte farbu" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "Farby textu" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "Farby mIRC:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Popredie:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Pozadie:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "Farby prostredia" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "Nové data:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "Značiaca čiara:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "Nová správa:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "Neprítomný používateľ:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "Zvýraznenie:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Udalosť" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "Zvukový súbor" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "Vyberte meno zvukového súboru" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "Zvukový súbor:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "P_rehliadať..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "_Prehrať" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Používateľské prostredie" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Vstupné pole" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Zoznam používateľov" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Farby" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Rozhovor" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "Pokročilé" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Nastavenie siete" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Prenos súborov" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Kategórie" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "" + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Boli vykonané zmeny, ktoré vyžadujú spustiť aplikáciu znovu, aby sa použili." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*VAROVANIE*\nAutomatické prijatie DCC do vášho domovského\npriečinku môže byť nebezpečné. Napríklad:\nniekto by vám mohol poslať súbor .bash_profile." + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "" + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "Počas spracovania reťazca nastala chyba" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Tento signál predal iba %d argumentov, $%d je neplatné" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "Vytlačiť súbor textov" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "Číslo $" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Upraviť udalosti" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "" + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Testovať všetky" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Vymazať zoznam" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Kopírovať zvolenú URL" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Kopírovať" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Uložiť zoznam do súboru" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d chanop, %d celk." + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "" diff --git a/hexchat/po/sl.po b/hexchat/po/sl.po new file mode 100644 index 0000000..9ad6770 --- /dev/null +++ b/hexchat/po/sl.po @@ -0,0 +1,6259 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# BOCo <bosko.orban@gmail.com>, 2017 +# BOCo <bosko.orban@gmail.com>, 2017 +# Jure Cuhalev <gandalf@owca.info>, 2003,2005 +# Jure Cuhalev <gandalf@owca.info>, 2003 +# Nejc Novak <nejc.novak@guest.arnes.si>, 2001 +# Roman Maurer [mailto:roman.maurer@amis.net, 2004 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-03 20:13+0000\n" +"Last-Translator: TingPing <tingping@tingping.se>\n" +"Language-Team: Slovenian (http://www.transifex.com/hexchat/hexchat/language/sl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sl\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "HexChat" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "IRC Client" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "IM;Klepet;" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "hexchat" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Ne utegnem" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Odhajam" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "Izključeno" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "Vključeno" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Omrežje" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<brez>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Kanal" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Čakam" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Aktiven" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Spodletelo" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Opravljeno" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Poveži se" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Prekinjeno" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "Ne morem dostopati do %s\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Napaka" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "Ni aktivnih DCCjev\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "_Pošlji datoteko" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Dodeli status op" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Odvzemi status op" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "Dodeli glasovni privilegij" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "Odvzemi glasovni privilegij" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Brcni/Izobči" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Brcni" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "Izobči" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "Brcni in izobči" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Zapusti kanal" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Pridruži se kanalu ..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "Kanal, ki se mu želite pridružiti:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Povezave strežnikov" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "\"Ping\" strežnika" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Skrij različico" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Dodeli op" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "Odvzemi op" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "Nasvidenje" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Vnesite razlog za brco %s:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "Pogovorno okno" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "Whois" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Pošlji" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Klepet" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Počisti" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "" + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* Uporaba IRC-a kot root uporabnik je neumna!\n Ustvarite uporabniški račun in ga uporabite za prijavo.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "DA " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "NE " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "%s vas zasipa s CTCP podatki, spregledujem %s\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s prisoten\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s odsoten\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Niste na nobenem kanalu. Poskusite /join #<kanal>\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Niste povezani. Poskusite /server <gostitelj> [<vrata>]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "Potrebujem /bin/sh za zagon!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "Ukazi, ki so na voljo:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "Ukazi, določeni s strani uporabnika:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "Ukazi, določeni s strani uporabnika:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Za več informacij uporabite /HELP <ukaz> ali /HELP -l" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Neznan argument '%s' spregledan." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "" + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "Ta dodatek ne obstaja.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "Ta plugin zavrača odstranitev.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <ime> <dejanje> doda gumb v seznam uporabnikov" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <ukaz> izvede ukaz na vseh kanalih, s katerimi ste povezani" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <ukaz> pošlje ukaz vsem strežnikom, na katerih ste prijavljeni" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <maska> [<vrsta>], prepove dostop do trenutnega kanala vsem, ki ustrezajo maski. Če so že na kanalu, jih ta ukaz ne brcne iz kanala (potrebuje status op)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "" + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY <koda|vzorec> poišče ime države, npr: si = Slovenija" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <vzdevek> <sporočilo> pošlje sporočilo CTCP vzdevku; pogosti sporočili sta VERSION in USERINFO" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <vzdevek> - prejme ponujeno datoteko\nDCC SEND [-maxcps=#] <vzdevek> [datoteka] - pošlje nekomu datoteko\nDCC PSEND [-maxcps=#] <vzdevek> [datoteka] - pošlje nekomu datoteko z uporabo pasivnega načina\nDCC LIST - pokaže DCC seznam\nDCC CHAT <vzdevek> - nekomu ponudi DCC CHAT\nDCC CHAT <vzdevek> - nekomu ponudi DCC CHAT v pasivnem načinu\nDCC CLOSE <vrsta> <vzdevek> <datoteka> primer:\n /dcc close send janeznovak datoteka.tar.gz" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <vzdevek> odstrani status polovični-op vzdevku (za kar so potrebne pravice op)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <ime> zbriše gumb s seznama uporabnikov" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <vzdevek> odstrani status op vzdevku (za kar so potrebne pravice op)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <vzdevek> odstrani glasovni privilegij vzdevku (za kar so potrebne pravice op)" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON prekine povezavo s strežnikom" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <besedilo> izpiše besedilo v okno" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <ukaz> izvede ukaz. Če uporabite stikalo -o, je rezultat izpisan na trenutnem kanalu, sicer pa v trenutnem besedilnem polju" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT pošlje procesu signal za nadaljevanje SIGCONT" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9] ubije delujoči proces v trenutni seji. Če uporabite stikalo -9, je procesu poslan signal SIGKILL" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP procesu pošlje signal SIGSTOP" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE pošlje podatke vhodnemu toku procesa" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FULSHQ odpošlje čakajočo vrsto sporočil na strežnik" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <gostitelj> [<vrata>] usmeri tok prek gostitelja (proxy), privzeto prek vrat 23" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <vzdevek> vzdevku dodeli status polovični-op (za kar potrebuje pravice op)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <geslo>, vas identificira pri nickservu" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <maska> <vrste..> <možnosti..>\n maska - maska gostitelja, npr.: *!*@*.siol.net\n vrste - vrste podatkov za preziranje, ena ali vse od:\n PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n možnosti - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <vzdevek> [<kanal>] povabi vzdevek na kanal, privzeto na trenutnega (za kar potrebuje pravice op)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <kanal>, pridruži se kanalu" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK preveri časovni odmik" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <datoteka>, naloži dodatek ali skripto" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP vsem odvzame polovične statuse op na trenutnem kanalu (za kar potrebuje pravice op)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP vsem na trenutnem kanalu odvzame status op (za kar potrebuje pravice op)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <dejanje> pošlje dejanje v trenutni kanal (dejanja so izpisana v tretji osebi, npr. /me skače)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK na trenutnem kanalu brcne vse razen samega sebe (za kar potrebuje pravice op)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MDEOP vsem na trenutnem kanalu odvzame status op (za kar potrebuje pravice op)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <vzdevek> <sporočilo> pošlje obvestilo CTCP" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <vzdevek> nastavi vaš vzdevek" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <vzdevek> vzdevku podeli status operateja (op) kanala (za kar potrebuje pravice op)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<kanal>] [<razlog>] zapusti kanal, privzeto trenutnega" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <vzdevek | kanal> pošlje CTCP ping vzdevku ali kanalu" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "" + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<razlog]> prekine povezavo s trenutnim strežnikom" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <besedilo> strežniku pošlje besedilo v surovi obliki" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<gostitelj>] [<vrata>] [<geslo>] lahko ga uporabite samo kot /RECONNECT za ponovitev povezave s trenutnim strežnikom ali kot /RECONNECT ALL za obnovitev povezav na vse povezane strežnike" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<gostitelj>] [<vrata>] [<geslo>], lahko ga uporabite samo kot /RECONNECT za ponovitev povezave na trenutni strežnik ali kot /RECONNECT ALL za ponovitev povezave na vse odprte strežnike" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <besedilo> pošlje besedilo predmetu v trenutnem oknu" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <gostitelj> <vrata> <kanal> se poveže na strežnik in se pridruži kanalu" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <gostitelj> <vrata> <kanal> se poveže na strežnik in se pridruži kanalu" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <gostitelj> [<vrata>] [<geslo>] poveže se na strežnik, privzeto na vrata 6667" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<tema>] če podamo temo, jo nastavi, sicer pa prikaže trenutno" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <maska> [<maska> ...] odstrani prepoved za določene maske." + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <maska> [QUIET]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "LOAD <datoteka> naloži dodatek ali skript" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "" + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, odpre URL v vašem brskalniku" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <vzdevek> dodeli glasovni privilegij vzdevku (za kar potrebuje pravice op)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <sporočilo> pošlje sporočilo na vse kanale" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <sporočilo> pošlje sporočilo vsem operaterjem kanala" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "Uporaba:%s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nNa to temo ni na voljo pomoči.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "Ta ukaz ne obstaja.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "Napačne izbire za uporabnikov ukaz.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "Preveč rekurzivnih ukazov, opuščam." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Ali ste prepričani, da strežnik podpira SSL prek teh vrat?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "Ne morem določiti imena gostitelja %s\nPreverite svoje nastavitve IP!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "Prečkanje proxyja neuspešno.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Povezujem se z naslednjim strežnikom v %s...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "Pozor: \"%s\" je neznan kodni nabor. Za omrežje %s ne bo uporabljena nobena pretvorba." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "" + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "" + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%UKanal Uporabnikov Tema" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "" + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "" + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "" + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "" + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "" + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "" + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "" + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "" + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "" + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "" + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "" + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "" + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tSeznam za obveščanje je prazen." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "" + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "" + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "" + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "" + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "*** KONČUJEM BELEŽENJE %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "*** ZAČENJAM BELEŽENJE %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "Levo sporočilo" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "Desno sporočilo" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "Naslov IP" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Uporabniško ime" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "Vzdevek osebe, ki se je pridružila" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "Kanal, na katerega se pridružujem" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "Gostitelj osebe" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Vzdevek" + +#: src/common/text.c:980 +msgid "The action" +msgstr "Dejanje" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "Znak opcije" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "Podatki" + +#: src/common/text.c:987 +msgid "The text" +msgstr "Besedilo" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "Sporočilo" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Ime strežnika" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Star vzdevek" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Nov vzdevek" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "Vzdevek osebe, ki je spremenila temo" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Tema" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "Vzdevek osebe, ki je izvršila brco" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "Oseba, ki je bila brcnjena iz kanala" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "Kanal" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "Razlog" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "Vzdevek osebe, ki zapušča" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "Čas" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "Ustvarjalec" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Vzdevek" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Razlog" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Gostitelj" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "Kdo je od tam" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "Čas je v x.x obliki (glej spodaj)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "Kanal, na katerega gre" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "Zvok" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "Vzdevek osebe" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "CTCP dogodek" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "Vzdevek osebe, ki je nastavila kjuč" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "Ključ" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "Vzdevek osebe, ki je nastavila omejite uporabnikov" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "Omejitev" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "Vzdevek osebe, ki je podelila status op" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "Vzdevek osebe, ki je prejele op status" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "Vzdevek osebe, ki je prejela polovični op status" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "Vzdevek osebe, ki je podelila status polovični op" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "Vzdevek osebe, ki je podelila glasovni privilegij" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "Vzdevek osebe, ki je prejela dovoljenje za glas" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "Vzdevek osebe, ki je nastavila prepoved" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "Maska prepovedi" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "Vzdevek, ki je odstranil ključ" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "Oseba, ki je odstranila omejitev uporabnikov" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "Oseba, ki ji je bil odvzet op status" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Oseba, ki ji je bil vzet polovični op status" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "Oseba, ki ji je bil odvzet glas status" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "Vzdevek osebe, ki je nastavila izjemo" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "Maska izjeme" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "Vzdevek osebe, ki je odstranila izjemo" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "Vzdevek osebe, ki je postavila povabilo" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "Maska povabila" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "Oseba, ki je odstranila možnost 'samo na povabilo'" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "Vzdevek osebe, ki je nastavila kanalno možnost" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "Predznak možnosti (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "Znak možnosti" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "Kanal, na katerem je bila možnost nastavljena" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Polno ime" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Lastnik kanala/\"je IRC operator\"" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Podatki o strežniku" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Čas brezdelnosti" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Čas priključitve" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Razlog odsotnosti" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Sporočilo" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Račun" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "Pravi uporabnik@gostitelj" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "Pravi IP" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Ime kanala" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Besedilo" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Vzdevek osebe, ki vas je povabila" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Uporabniki" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "Vzdevek v uporabi" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Poskušam vzdevek" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Vrata" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "Možnosti niza" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "Vrsta DCC" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Ime datoteke" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Ciljna datoteka" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "Ime poti" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Prenešeno" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Velikost" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "Niz DCC" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "Število predmetov za opominjanje" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Staro ime datoteke" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Novo ime datoteke" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Prejemnik" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Maska gostitelja" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Ime gostitelja" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "Paketek" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "Sekund" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "Vzdevek osebe, ki je bila povabljena" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Maska prepovedi" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "Kdo je nastavil prepoved" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Čas nastavitve prepovedi" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "Ne morem prebrati zvočne datoteke:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "Oddaljeni gostitelj je zaprl povezavo" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "Povezava je bila zavrnjena" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "Ni poti do gostitelja" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Čas za povezavo se je iztekel" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "Ne morem prijaviti tega naslova" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "Povezava je bila prekinjena" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Andora" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Združeni arabski emirati" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Afganistan" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Antigva in Barbuda" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Angvila" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Albanija" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Armenija" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Nizozemski Antili" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Antarktika" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Argentina" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "Obratni DNS" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Ameriška Samoa" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Avstrija" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Avstralija" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Azerbajdžan" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Bosna in Hercegovina" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Bangladeš" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Belgija" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Bolgarija" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Bahrajn" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "Opravki" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Bermudi" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Brunei Darussalam" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Bolivija" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Brazilija" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Bahami" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Butan" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Otok Bouvet" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Bocvana" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Belorusija" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Kanada" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Kokosovi otoki" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "Demokratična republika Kongo" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "Srednjaafriška republika" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Kongo" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "Švica" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "Cote D'iviore" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Cookovi otoki" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Čile" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Kamerun" + +#: src/common/util.c:738 +msgid "China" +msgstr "Kitajska" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Kolumbija" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Notranje tržno" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Kostarika" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "Srbija in Črna gora" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Kuba" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Zelenortski otoki" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Velikonočni otok" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Ciper" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "Češka" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Nemčija" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Džibuti" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Danska" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Dominika" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "Dominikanska republika" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Alžirija" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Ekvador" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Izobraževalna ustanova" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Estonija" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Egipt" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Zahodna Shara" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Eritreja" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "Španija" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Etiopija" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Finska" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Fidži" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Falklandski otoki" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Mikronezija" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Fererski otoki" + +#: src/common/util.c:770 +msgid "France" +msgstr "Francija" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Velika Britanija" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Gruzija" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Francoska Gvajana" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "Britanski kanalni otoki" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Gana" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Gibrlaltar" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Grenlandija" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Gambija" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Gvineja" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Vlada" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Guadeloupe" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Ekvartorialna Gvineja" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Grčija" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Otoki S. Georgia-e in S. Sandwich-a" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Gvatemala" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Gvineja Bissau" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Gvajana" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Heardovi in McDonaldovi otoki" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Hrvaška" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Madžarska" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Indonezija" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Irska" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Izrael" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "" + +#: src/common/util.c:801 +msgid "India" +msgstr "Indija" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "Informativno" + +#: src/common/util.c:803 +msgid "International" +msgstr "Mednarodno" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Britansko Indijsko oceansko območje" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Irak" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "Iran" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Islandija" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Italija" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Jamajka" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Jordanija" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Japonska" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Kenija" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Kirgizistan" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Kambodža" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Komori" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "St. Kitts in Nevis" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Severna Koreja" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Južna Koreja" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Kuvajt" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Kajmanski otoki" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Kazahstan" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Libanon" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Sveta Lucija" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Šrilanka" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Liberija" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Lesoto" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Litva" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Luksemburg" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Latvija" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Libija" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Maroko" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Monako" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Moldavija" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "Medicinsko omrežje združenih narodov" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Madagaskar" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Marshallovi otoki" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Vojaško" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Makedonija" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Mjanmar" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Mongolija" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Macao" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Severni Marianski otoki" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Martinik" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Mavretanija" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Mauritius" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Maldivi" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Malavi" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "Mehika" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Malezija" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Mozambik" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Namibija" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Nova Kaledonija" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Notranje omrežje" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Norfolški otok" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Nigerija" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Nikaragva" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Nizozemska" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Norveška" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "Nova Zelandija" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "Notranja neprofitna organizacija" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Francoska polinezija" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Papua Nova Gvineja" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Filipini" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Poljska" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "Sv. Pierre in Miquelon" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Portoriko" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "Palestinski teritorij" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Portugalska" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Paragvaj" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Katar" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Ponovna združitev" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Romunija" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "Stari izobraževalni ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Ruska federacija" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Ruanda" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Saudova Arabija" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Salomonovi otoki" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Sejšeli" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Sudan" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Švedska" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Singapur" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "Sv. Helena" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Slovenija" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbardovi in Jan Mayenovi otoki" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "Slovaška republika" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Senegalija" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Somalija" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Surinam" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "Sao Tome in Principe" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Nekdanja USSR" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "Salvador" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Sirija" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Svazi" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Otočji Turks in Caicos" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Čad" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "Francoska južna območja" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Tajska" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Tadžikistan" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Vzhodni Timor" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Tunizija" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Turčija" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Trinidad in Tobago" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Tajvan" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Tanzanija" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Ukrajina" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Združeno kraljestvo" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "Združene države Amerike" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Urugvaj" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Uzbekistan" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Vatikan" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "St vincent in grenadin" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "Britanski deviški otoki" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "Ameriški deviški otoki" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "Wallisovi in Futunini otoki" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Jemen" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Jugoslavija" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Južna Afrika" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Zambija" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Zimbabve" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Kodna tabela" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "Izobči" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Povabi" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "" + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "Izbrati morate nekaj izobčenih." + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Maska" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "Od" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Datum" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Odstrani" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Odreži" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Osveži" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "" + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Izberite izhodno ime datoteke" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Poišči:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Pošlji datoteko k %s" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "Sprejemanja te datoteke ni mogoče nadaljevati." + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "Ne morem dostopati do datoteke: %s\n%s\nNadaljevanje ni možno." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "Datoteka v imeniku za prenesene datoteke je večja od datoteke, ki vam je ponujena. Nadaljevnje ni možno." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "Ne morem nadaljevati datoteke od dveh ljudi." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Stanje" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Datoteka" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "Preostanek čas" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Oboje" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "Datoteka:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "Naslov:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Prekini" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Sprejmi" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Nadaljuj" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "" + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Prejeto" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Poslano" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Zbriši" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Prekliči" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Shrani" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "Ukaz za povezavo:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "Ne morem odpreti pisave:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "Iskalni niz je prazen.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d bajtov" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "Ukaz ^BVstavi v besedilo^B bo vstavil vsebino Podatka 1 v prostor kjer je bilo pritisnjeno zaporedje tipk ob trenutnem položaju kurzorja" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "Ukaz ^BNastavi besedilo^B nastavi vnos, kjer je bilo pritisnjeno zaporedje tipk v vsebino Podatka 1" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "^Prejšnji ukaz^B ukaz nastavi vnos, ki vključuje prešjnji vpisan ukaz - enako, kot pritisk na tipko za navzgor v ukazni lupini" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "^BNaslednji ukaz^B ukaz nastavi vnos, ki vključuje naslednji vpisan ukaz - enako, kot pritisk na tipko za navzdol v ukazni lupini" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "Ta ukaz spremeni besedilo v vnosu, da dokonča nedokončan vzdevek ali ukaz. Če je podatek 1 nastavljen na dvojno-tabeliranje, bo izbran prejšnji vzdevek, ne naslednji" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "Ta ukaz zavrti navzgor in navzdol seznam vzdevkov. Če je Podatek 1 nastavljen na karkoli, se bo seznam zavrtel navzgor, drugače pa navzdol" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "Ta ukaz preveri zadnjo besedo, vnešeno v vnosu proti seznamu zamenjav in ga zamenja, če najde zadetek" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "Ta ukaz premakne zgornji zavihek za eno mesto v levo" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "Ta ukaz premakne zgornji zavihek za eno mesto v desno" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "Ta ukaz premakne zgornjo družino zavihkov za eno mesto v levo" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "Ta ukaz premakne zgornjo družino zavihkov za eno mesto v levo" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "Vnesi vhodno vrstico v zgodovino, a je ne pošlji strežniku" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "Najdena je bila napaka pri nalaganju konfiguracije bljižnic" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "Ne morem pisati v to datoteko." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "Ne morem brati te datoteke." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "Ta maska že obstaja." + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Zasebno" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Opomba" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "Odstrani preziranje" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "Vnesite masko za preziranje:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Statistika preziranja:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Kanal:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Zasebno:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Opomba:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Povabi:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "" + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "" + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "" + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "" + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "" + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "" + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "Pogovorno okno" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Tema za %s je: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "Tema ni nastavljena" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "" + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "" + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "_Zapri" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "Omejitev uporabnikov mora biti številka!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "Brez zunanjih sporočil" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "Varovanje teme" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "Samo na povabilo" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "Moderirana" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "Seznam izobčenih" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Ključna beseda" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "Omejitev uporabnikov" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Vnesite nov vzdevek:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "" + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "" + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "" + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Neznan gostitelj" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Neznan" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Pravo ime:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "Uporabnik:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "Država:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "Strežnik:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "Zadnje sporočilo:" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "Sporočilo o odsotnosti:" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Pridruži se kanalu" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "Zapusti kanal" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "Zapusti/Vrni se na kanal" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Izključeno" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "Graf" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "_Strežnik" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "Nastavitv_e" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "_Okno" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "Ponastavi označevalno vrstico" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "Počisti besedi_lo" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "_Pomoč" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "Vs_ebina" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "_O programu" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Ime" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Nazadnje viden" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "Odsoten" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Nikoli" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "Prisoten" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "Vnesite vzdevek, ki ga želite dodati:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Različica" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Opis" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Izberite dodatek ali skripto za zagon" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "Na_loži ..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "" + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Novo omrežje" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Res odstranim omrežje \"%s\" in vse njegove strežnike?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "Uredi" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "Poveži se samo na izbrani strežnik" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Ne kroži skozi seznam strežnikov, ko pride do prekinitve povezave." + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "Uporabi povezavo SSL do vseh strežnikov v omrežju" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "Uporabi splošne podatke o uporabniku" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "Vzdevek:" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "Druga izbira: " + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "Pravo ime:" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "Uporabniško ime:" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Geslo:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "Kodni nabor:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "Podatki o uporabniku" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "Tretja izbira:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Omrežja" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "Uredi ..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "Razvrsti" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "P_oveži se" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Albanija" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Azerbajdžan" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Belorusija" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Bolgarija" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Estonija" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "Indija" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Malezija" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Tajska" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Vietnam" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Splošno" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Pisava:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "Obarvani vzdevki" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "Vsakemu vzdevku pripiši drugo barvo" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "Zamakni vzdevke" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "Desno poravnavaj vzdevke" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "Pokaži odsotnost enkrat" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "Zadnjo prebrano vrsto označi z rdečo barvo." + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Slika za ozadje:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "" + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "" + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Ž" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "Dokončevanje vzdevkov" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "Pripona za dopolnjevanje vzdevkov:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "" + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Ž-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "Neurejeno" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Zgoraj" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Spodaj" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Skrito" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "Seznam uporabnikov" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "Pokaži gostitelje v seznamu uporabnikov" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "Uporabi pisavo in barvo besedilnega polja" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "Seznam uporabnikov urejen po:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "Spremljaj razloge za odsotnost na kanalih manjših od:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "Ob dvokliku izvedi ukaz" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Okna" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Zavihki" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "Vselej" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "Le zahtevane zavihke" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "Odpri zavihek za sporočila strežnika" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "Zavihke uredi po abecedi" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "Fokusiraj nove zavihke:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "Skrajša zavihke v:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "črk." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "Zavihki ali okna" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "Odpri kanale v:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "Odpri pogovorna okna v:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "Odpri orodja v:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Odprem DCC, Opomnike in podobno v zavihkih ali oknih?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "Datoteke in imeniki" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Prenesi datoteke v:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "Premakni dokončane datoteke v:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "Shrani vzdevek v imena datotek" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "Samodejno odpri okna za zasebni pogovor" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "Pošlji datoteko" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "Prejemnik" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "Pogovorno okno" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "En sam prenos od vas:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "Največja hitrost za en prenos" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "En sam prenos k vam:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "Vsi prenosi od vas združeno:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "Največja hitrost za ves promet" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "Vsi prenosi k vam združeno:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "Opozorila" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "" + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "Privzeta sporočila" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "Izhod:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "Zapusti kanal:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "Odsoten:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "Odsoten" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Pokaži odsotnost enkrat" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "Samodejno prekine odsotnost" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "" + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "Prikaže MODE v surovi obliki" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "Skrij sporočila ob prihodu/odhodu" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "Zamik med ponovnim povezovanjem:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Beleženje" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "Vračajoče vrstice:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "" + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "Dnevnike opremi s časom" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "Oblika prikaza časa v dnevniku:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URL" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(Izključeno)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "Naslov IP" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "Poišči:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "" + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "Pridobi moj podatke o mojem IP od strežnika IRC" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "Vpraša IRC strežnik za vaš pravi naslov. Uporabljajte to možnost, če imate naslov oblike 192.168.*.*!" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "Naslov IP DCC:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "Pretvarjajte se, da ste na tem naslovu, ko ponujate datoteke." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "" + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "Strežnik proxy" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "Ime gostitelja:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Vrata:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Vrsta:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "Uporabniško ime:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "Izberite datoteko s sliko" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Izberite pisavo" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Brskaj ..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Izberi barvo" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "Barve" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "Barve mIRC:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Ospredje:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Ozadje:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "Vmesnik" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "Novi podatki:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "Označi ospredje:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "Novo sporočilo:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "Odsoten Uporabnik:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "Osvetli:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Dogodek" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "Zvočna datoteka" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "Izberite izhodno ime datoteke" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "Zvočna datoteka: " + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "Brskaj ..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "Predvajaj" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Vmesnik" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Vnosno polje" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Seznam uporabnikov" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Barve" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Klepetanje" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "Napredno" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Omrežne nastavitve" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Prenosi datotek" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Kategorije" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "" + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Nekatere spremenjene nastavitve potrebujejo ponovni zagon za uveljavitev." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*OPOZORILO*\nSamodejno prejemanje DCC-jev v vaš domač imenik\nje lahko zelo nevarno. Nekdo vam lahko pošlje npr.\n.bash_profile" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "" + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "Prišlo je do napake pri obdelavi niza" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Signal je sprejel samo %d argumente, $%d je neveljaven" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "Izpiši datoteko z besedilom" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ Število" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Uredi dogodke" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "" + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Preskusi vse" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Počisti seznam" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Kopiraj izbrani URL" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Kopiraj" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Shrani seznam v datoteko" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d operaterjev, %d vseh" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "" diff --git a/hexchat/po/sq.po b/hexchat/po/sq.po new file mode 100644 index 0000000..5e186fa --- /dev/null +++ b/hexchat/po/sq.po @@ -0,0 +1,6257 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Besnik <besnik@programeshqip.org>, 2014-2016,2018 +# Besnik <besnik@programeshqip.org>, 2014-2015 +# Besnik Bleta <besnik@spymac.com>, 2004 +# Besnik <besnik@programeshqip.org>, 2016,2018 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-03 20:13+0000\n" +"Last-Translator: TingPing <tingping@tingping.se>\n" +"Language-Team: Albanian (http://www.transifex.com/hexchat/hexchat/language/sq/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sq\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "HexChat" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "Klient IRC" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "HexChat-i është një klient IRC-je i lehtë për t’u përdorur, por prapëseprapë shumë i zgjerueshëm. Ju lejon të hyni në mënyrë të sigurt, në shumë rrjete njëherësh, dhe të bisedoni me përdoruesit privatisht ose në kanale, duke përdorur një ndërfaqe të personalizueshme. Mundeni madje edhe të shkëmbeni kartela." + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "HexChat-i mbulon veçori të tilla si: DCC, SASL, ndërmjetës, drejtshkrim, sinjalizime, regjistrim veprimtarie, tema të personalizueshme, dhe programthe Python/Perl." + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "Dritarja Kryesore e Fjalosjeve" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "Bisedoni në linjë me persona të tjerë" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "IM;Fjalosje;" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "hexchat" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "Hap Mënyrën e Sigurt" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "Përgjegjës Temash HexChat-i" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Jam i zënë" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Po dilet" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "OFF" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "ON" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "{e parregulluar}" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Rrjet" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<asnjë>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Kanal" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Po pritet" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Veprues" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Dështoi" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "U bë" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Lidhu" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "U ndërpre" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "S’hyhet dot te %s\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Gabim" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s po ju ofron \"%s\". Doni të pranohet?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "S’ka DCC-ra aktive\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "_Hap Dritare Dialogu" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "_Dërgoni një Kartelë" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "Të dhëna _Përdoruesi (WhoIs)" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "_Shtoje te Listë Shokësh" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "_Shpërfille" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "Veprime _Operatori" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Jepi Op" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Hiqja Op-in" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "Jepi Zë" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "Hiqja Zërin" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Përzëre/Dëboje" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Përzëre" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "Dëboje" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "Përzëdëboje" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Ik Nga Kanali" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Hyni në Kanal…" + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "Jepni Kanal ku të Hyhet:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Lidhje Shërbyesish" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Kryej Ping Ndaj Shërbyesit" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Fshihe Versionin" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Op" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "shëndet" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Jepni arsye përzënie %s:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "Dërgoni Kartelë" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "Dialog" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "KushËshtë" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Dërgoje" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Fjalosje" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Pastroje" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "Nuk keni të drejta shkrimi te %s. Nga ky sesion nuk mund të ruhet asgjë." + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* Xhirimi i IRC-së si rrënjë është budallallëk! Duhet\n të krijoni një Llogari Përdoruesi dhe të përdorni atë për t’u futur.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "PO " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "JO " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Po CTCP përmbyteni prej %s, po shpërfillet %s\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "Po MSG përmbyteni nga %s, po kalohet gui_autoopen_dialog në OFF.\n" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "S’u gjet" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "Po kërkohet për %s…" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s në linjë\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s jo në linjë\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Nuk hytë në ndonjë kanal. Provoni /join #<kanal>\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "I palidhur. Provoni /server <strehë> [<portë>]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "Shërbyesi %s gjendet tashmë në rrjetin %s.\n" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "U shtua shërbyesi %s te rrjeti %s.\n" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "I shënuar tashmë si i larguar: %s\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "I shënuar tashmë si i kthyer.\n" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "Më duhet /bin/sh për të xhiruar!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "Urdhra Gati:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "Urdhra të përkufizuar nga përdoruesi:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "Urdhra të përkufizuar nga shtojca:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Për më tepër të dhëna, shtypni /HELP <urdhër>, ose /HELP -l" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "U shpërfill arg i panjohur '%s'." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "Ky shërbyes nuk mbulon heshtimet." + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "S’u gjet shtojcë e tillë.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "Ajo shtojcë nuk pranon të çngarkohet.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTON <emër> <veprim>, shton një buton nën një listë përdoruesi" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "ADDSERVER <Rrjet i ri> <rrjet i ri/6667>, shton te lista e rrjeteve një rrjet të ri me një shërbyes të ri" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <urd>, u dërgon një urdhër tërë kanaleve ku gjendeni" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "ALLCHAN <urd>, u dërgon një urdhër tërë kanaleve te shërbyesi i atëçastshëm" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <urd>, u dërgon një urdhër tërë shërbyesve ku gjendeni" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "AWAY [<arsye>], ju tregon si të larguar (përdorni /BACK për të kundërtën)" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "BACK, ju tregon të kthyer (pra, jo më të larguar)" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <maskë> [<lloj dëbimi>], dëbon nga kanali i çastit këdo që përputhet me maskën. Nëse tashmë janë në kanal, kjo nuk i përzë (lyp gjendje operatori kanali)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <ndryshore> [<vlerë>]" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "CHARSET [<kodimg>], tregon ose cakton kodimin e përdorur për lidhjen e atëçastshme" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "CLEAR [ALL|HISTORY|[-]<sasi>], Pastron tekstin nga dritarja e atëçastshme, ose nga historiku i urdhrave" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "CLOSE [-m], Mbyll skedën e atëçastshme, duke mbyllur dritaren, nëse ka vetëm një skedë të hapur, ose me opsionin \"-m\", mbyll krejt kërkesat." + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <code|wildcard>, gjen një kod vendi, p.sh.: sq = Shqipëri" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <nofkë> <mesazh>, i dërgon nofkës një mesazh CTCP, mesazhe të rëndomtë janë VERSION dhe USERINFO" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "CYCLE [<channel>], del dhe menjëherë rihyn në kanalin e atëçastshëm, ose në atë që i jepet" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <nofkë> - prano një kartelë të ofruar\nDCC SEND [-maxcps=#] <nick> [kartelë] - dërgo një kartelë te dikush\nDCC PSEND [-maxcps=#] <nick> [kartelë] - dërgo një kartelë duke përdorur mënyrën pasive\nDCC LIST - shfaq listë DCC\nDCC CHAT <nofkë> - ofro FJALOSJE DCC për dikë\nDCC PCHAT <nofkë> - ofro FJALOSJE DCC duke përdorur mënyrën pasive\nDCC CLOSE <lloj> <nofkë> <kartelë> shembull:\n /dcc close send gjonsherri kartelë.tar.gz" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <nofkë>, i heq nofkës gjendjen gjysmëoperator kanali për kanalin e atëçastshëm (lyp gjendje operatori kanali)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTON <emër>, fshin një buton prej që poshtë liste përdoruesish" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <nofkë>, i heq nofkës gjendjen operator kanali në kanalin e atëçastshëm (lyp gjendje operatori kanali)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <nofkë>, i heq nofkës gjendjen i zëshëm në kanalin e atëçastshëm (lyp gjendje operatori kanali)" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, Shkëputet prej shërbyesit" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "DNS <nofkë|strehë|ip>, Zbulon një IP ose strehëemër" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "DOAT <kanal,listë,/rrjet> <urdhër>" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <text>, Shfaq tekst lokalisht" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <urdhër>, përmbush urdhrin. Nëse përdoret flamurka -o, atëherë përfundimi dërgohet në kanalin e çastit, në të kundërt, jepet te kuti e atëçastshme për tekstet" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, dërgon procesin SIGCONT" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9], asgjëson një përmbushje që po kryhet në kanalin e atëçastshëm. Nëse jepet -9, procesi asgjësohet nga SIGKILL" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, i dërgon procesit SIGSTOP" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, i dërgon të dhënat te proceset \"stdin\"" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "EXPORTCONF, eksporton rregullimet e HexChat-it" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, asgjëson mesazhe të atëçastshme që pritnin të dërgoheshin" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <strehë> [<portë>], ndërmjetëson te një strehë përmes një porte, me portë parazgjedhje 23" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <nofkë> [fjalëkalim], Asgjëson një emër nofke fantazmë" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <nofkë>, i jep nofkës gjendjen gjysmëoperator kanali (lyp gjendje operatori kanali)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <password>, ju identifikon kundrejt nickserv-it" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <maskë> <lloje..> <mundësi..>\n maskë - maskë strehe për t’u shpërfillur, p.sh.: *!*@*.aol.com\n lloje - lloje të dhënash për t’u shpërfillur, një ose të tërë prej:\n PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n mundësi - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <nofkë> [<kanal>], fton dikë në një kanal, si parazgjedhje tek kanali i atëçastshëm (lyp gjendje operatori kanali)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <kanal>, hyhet te kanali" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "KICK <nofkë> [arsye], përzë nofkën prej kanalit të atëçastshëm (lyp gjendje operatori kanali)" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "KICKBAN <nofkë> [arsye], dëbon, mandej përzë nofkën prej kanalit të atëçastshëm (lyp operatori kanali)" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, detyron një kontroll të ri vonese" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "LASTLOG [-h] [-m] [-r] [--] <varg>, kërkon në shtytëz për një varg\n Përdorni -h që të theksohet vargu i gjetur\n Përdorni -m për gjetje siç është shkruar\n Përdorni -r kur vargu është Shprehje e Rregullt\n Përdorni -- (vizë ndarëse dyshe) që të tregohet fundi i opsioneve, teksa kërkohet për, le të themi, vargun '-r'" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [e] <kartelë>, ngarkon një shtojcë ose një programth" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, U heq gjendjen operator krejt gjysmëoperatorëve të kanalit në kanalin e atëçastshëm (lyp gjendje operatori kanali)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, U heq gjendje operatori krejt operatorëve të kanalit në kanalin e atëçastshëm (lyp gjendje operatori kanali)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <veprim>, dërgon veprimin te kanali i atëçastshëm (veprimet shprehen në vetën e tretë, si /unë hidhet)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "MHOP, I hedh në masë tërë përdoruesit në kanalin e atëçastshëm (lyp gjendje operatori kanali)" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, Përzë në masë këdo, hiq ju, nga kanali i atëçastshëm (lyp gjendje operatori kanali)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, Op-on në masë tërë përdoruesit në kanalin e atëçastshëm (lyp gjendje operatori kanali)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "MSG <nofkë> <mesazh>, dërgon një mesazh privat, paraprini mesazhin me \".\" që ta dërgoni te nofka e fundit ose parashtojini \"=\" për fjalosje dcc" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "NAMES [channel], Tregon nofkat në kanal" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <nofkë> <mesazh>, Dërgon një njoftim CTCP" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <strehëemër> [<portë>]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <nofkë>, cakton nofkën tuaj" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "NOTICE <nofkë/kanal> <mesazh>, dërgon një njoftim" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [-n rrjeti1[,rrjeti2,…]] [<nofkë>], shfaq listën tuaj të njoftimeve ose shton dikë në të" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <nofkë>, i jep nofkës gjendje operatori kanali (lyp gjendje operatori kanali)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<kanal>] [<arsye>], lë kanalin, si parazgjedhje atë të çastit" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <nofkë | kanal>, i dërgon ping CTCP nofkës ose kanalit" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "QUERY [-nofocus] <nofkë> [mesazh], i hap dikujt një dritare të re mesazhesh private dhe i dërgon një mesazh, po deshët" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "QUIET <maskë> [<quiettype>], heshton në kanalin e atëçastshëm këdo që përputhet me maskën, nëse kjo mbulohet nga shërbyesi." + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<arsye>], shkëputet prej shërbyesit të atëçastshëm" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <tekst>, dërgon te shërbyesi tekstin e patrajtuar" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<strehë>] [<portë>] [<fjalëkalim>], Mund të jepet thjesht si /RECONNECT, për t’u rilidhur me shërbyesin e atëçastshëm, ose si /RECONNECT ALL, për t’u rilidhur me tërë shërbyesit e hapur" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<strehë>] [<portë>] [<fjalëkalim>], Mund të jepet thjesht si /RECONNECT për t’u rilidhur me shërbyesin e atëçastshëm ose si /RECONNECT ALL për t’u rilidhur me tërë shërbyesit e hapur" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "RECV <tekst>, dërgojini HexChat-it të dhëna të papërpunuara, si të ishin marrë prej shërbyesit IRC" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "RELOAD <emër>, ringarkon një shtojcë ose një programth" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <tekst>, dërgon tekstin te objekti në dritaren e atëçastshme" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <nofkë [<kartelë>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <strehë> <portë> <kanal>, lidhet dhe hyn në një kanal" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <strehë> <portë> <kanal>, lidhet dhe hyn në një kanal" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "SERVER [-ssl] <strehë> [<portë>] [<fjalëkalim>], lidhet me një shërbyes, porta parazgjedhje është 6667 për lidhje normale, dhe 6697 për lidhje ssl" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <strehë> [<portë>] [<fjalëkalim>], lidhet me një shërbyes, porta parazgjedhje është 6667" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-off|-on] [-quiet] <ndryshore> [<vlerë>]" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "SETCURSOR [-|+]<position>, ripozicionon kursorin te kutia e teksteve" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "SETTAB <emër i ri>, ndërron emrin e skedës, tab_trunc mbetet ende në fuqi" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "SETTEXT <tekst i ri>, zëvendësoni tekstin te kutia e teksteve" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<temë>], e cakton si temë nëse jepet një, përndryshe shfaq temën e atëçastshme" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "\nTRAY -f <skadencë> <kartelë1> [<kartelë2>] Xixëllo pjesën e panelit mes dy ikonave.\nTRAY -f <emër kartele> Caktoje panelin sa një ikonë fikse.\nTRAY -i <numër> Xixëllo panelin me një ikonë të brendshme.\nTRAY -t <tekst> Cakto ndihmëz rreth paneli.\nTRAY -b <titull> <tekst> Cakto tullumbace paneli." + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <maskë> [<maskë>…], heq dëbimin për maskat e treguara." + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <maskë> [URTË]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <emër>, çngarkon një shtojcë ose një programth" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "UNQUIET <maskë> [<maskë>…], çheshton maskat e treguara, nëse kjo mbulohet nga shërbyesi." + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, hap një URL në shfletuesin tuaj" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "USELECT [-a] [-s] <nofka1> <nofka2> etj, thekson nofkën(at) në listën e përdoruesve të kanalit" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <nofkë>, jep gjendjen i zëshëm për dikë (lyp gjendje operatori kanali)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <mesazh>, shkruan mesazhin te tërë kanalet" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <mesazh>, dërgon mesazhin te tërë operatorët e kanalit në kanalin e atëçastshëm" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "Urdhër Përdoruesi për: %s\n" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "Përdorim: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nS’ka ndihmë rreth këtij urdhri.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "S’ka urdhër të tillë.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "Argumente të gabuar për urdhër përdoruesi.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "Shumë urdhra përdoruesi ripërsëritëse, po ndërpritet." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "Urdhër i Panjohur %s. Provoni /help\n" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "Pa simbol hexchat_plugin_init; është vërtet shtojcë për HexChat?" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "*\tPo shërbehet kërkesa ident nga %s si %s" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "*\tGabim në nisjen e shërbyesit identd: %s" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "IDENTD <portë> <emër përdoruesi>" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "Kohëmatësi %d u fshi.\n" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "S’u gjet numër ree i tillë.\n" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "S’ka kohëmatës të instaluar.\n" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr " Ref# Sekonda Repeat Urdhër \n" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "%5d %8.1f %7d %s\n" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Jeni të sigurt se ky është një shërbyes dhe portë e aftë për SSL?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "Nuk ftillohet dot strehëemri %s\nKontrolloni Rregullimet tuaja për IP-në!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "Ndërmjetësi traversal dështoi.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Po ciklohet te shërbyesi pasues në %s…\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "Kujdes: Shkronjat \"%s\" janë të panjohura. Nuk do të zbatohet ndonjë shndërrim për rrjetin %s." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "%C18*%O$t%C18$1%O u shtua te lista e njoftimeve." + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "%C22*%O$t%C22$1%O: %C18$2%O në %C24$4%O nga %C26$3%O" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "%C22*%O$tNuk hyni dot te %C22$1 %O(%C20Jeni dëbuar%O)." + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "%C29*%O$tAftësi të deklaruara: %C29$2%O" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "%C29*%O$tAftësi të hequra: %C29$2%O" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "%C23*%O$tAftësitë e mbuluara: %C29$2%O" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "%C23*%O$tAftësitë e domosdoshme: %C29$1%O" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "%C24*%O$t%C28$1%O tani njihet si %C18$2%O" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O jep dëbim për %C18$2%O" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "%C22*%O$tKanali %C22$1%O i krijuar më %C24$2%O" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O i heq gjysmë-operator %C18$2%O" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O i heq gjendjen operator %C18$2%O" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O i heq zërin %C18$2%O" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%C vendos një përjashtim mbi %C18$2%O" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O jep gjendje gjysmë-operator kanali për %C18$2%O" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%C vendos përjashtim ftimesh te %C18$2%O" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%UKanal Përdorues Temë" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "%C22*%O$t%C26$1%O vendos mënyrën %C24$2$3%O mbi %C22$4%O" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "%C22*%O$tKanal %C22$1%O mënyra: %C24$2" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O jep gjendjen operator kanali për %C18$2%O" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O vendos heshtim mbi %C18$2%O" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O heq përjashtim ndaj %C18$2%O" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O heq përjashtim ftimesh te %C18$2%O" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "%C22*%O$t%C26$1%O heq fjalëkyç kanali" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "%C22*%O$t%C26$1%O heq kufi përdoruesi" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O cakton si fjalëkyç kanali %C24$2%O" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O cakton si kufi kanali %C24$2%O" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O heq dëbimin për %C18$2%O" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O heq heshtimin për %C18$2%O" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "%C22*%O$tUrl kanali %C22$1%O: %C24$2" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O i jep zë %C18$2%O" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "%C23*%O$tU lidh. Tani po bëhet hyrja." + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "%C23*%O$tPo lidhet te %C29$1%C (%C23$2:$3%O)" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "%C20*%O$tLidhja dështoi (%C20$1%O)" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "%C24*%O$tU mor një CTCP %C24$1%C nga %C18$2%O" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "%C24*%C$tU mor një CTCP %C24$1%C nga %C18$2%C (për %C22$3%C)%O" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "%C24*%O$tU mor një tingull CTCP %C24$1%C nga %C18$2%O" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "%C24*%O$tU mor një tingull CTCP %C24$1%C nga %C18$2%C (për %C22$3%O)" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "%C23*%O$tFjalosja DCC me %C18$1%O dështoi." + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "%C24*%O$tU vendos lidhje fjalosjeje DCC me %C18$1%C %C30[%C24$2%C30]%O" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "%C20*%O$tFjalosja DCC me %C18$1%O humbi (%C20$4%O)" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "%C24*%O$tU mor ofertë fjalosjeje DCC CHAT nga %C18$1%O" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "%C24*%O$tPo ofrohet fjalosje për DCC %C18$1%O" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "%C24*%O$tËshtë ofruar tashmë CHAT për %C18$1%O" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "%C20*%O$tPërpjekja për lidhje DCC $1 me %C18$2%O dështoi (%C20$3%O)" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "%C23*%O$tU mor '%C23$1%C' nga %C18$2%O" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "%C16,17 Lloj Për/Nga Gjendje Madhësi Poz Kartelë" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "%C20*%O$tU mor një kërkesë DCC e keqformuar nga %C18$1%O.$a010%C23*%O$tLënda e paketës: %C23$2%O" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "%C24*%O$tPo ofrohet '%C24$1%O' për %C18$2%O" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "%C23*%O$tNuk ka ofertë të tillë DCC." + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "%C23*%O$tDështoi DCC RECV '%C23$2%O' mbi %C18$1%O." + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "%C24*%O$tDCC RECV '%C23$1%O' nga %C18$3%O i plotësuar %C30[%C24$4%O cps%C30]%O" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$tU vendos lidhje DCC RECV me %C18$1 %C30[%O%C24$2%C30]%O" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "%C20*%O$tDCC RECV '%C23$1%O' nga %C18$3%O dështoi (%C20$4%O)" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "%C20*%O$tDCC RECV: S'hapet dot '%C23$1%C' për shkrim (%C20$2%O)" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "%C23*%O$tKartela '%C24$1%C' ekziston tashmë, ndaj po ruhet te '%C23$2%O'." + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "%C24*%O$t%C18$1%C ka kërkuar të rimerret '%C23$2%C' nga %C24$3%O." + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "%C23*%O$tDCC SEND '%C23$2%C' mbi %C18$1%O dështoi." + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "%C24*%O$tDCC SEND '%C23$1%C' mbi %C18$2%C e plotësuar %C30[%C24$3%C cps%C30]%O" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$tU vendos lidhja DCC SEND me %C18$1 %C30[%O%C24$2%C30]%O" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "%C20*%O$tDCC SEND '%C23$1%C' për %C18$2%C dështoi (%C20$3%O)" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "%C24*%O$t%C18$1%C ka ofruar '%C23$2%C' (%C24$3%O bajte)" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "%C20*%O$tDCC $1 '%C23$2%C' për %C18$3%O ngeci, po ndërpritet." + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "%C20*%O$tDCC $1 '%C23$2%C' për %C18$3%O i mbaroi koha, po ndërpritet." + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "%C24*%O$t%C18$1%O u fshi prej listës së njoftimeve." + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "%C20*%O$tU shkëput (%C20$1%O)" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "%C24*%O$tU gjet IP-ja juaj: %C30[%C24$1%C30]%O" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "%O%C18$1%O u shtua te lista e shpërfilljeve." + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "%OShpërfillja mbi %C18$1%O ndryshoi." + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "%C16,17" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "%O%C18$1%O u hoq prej listës së shpërfilljeve." + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "%OLista e shpërfilljeve është e zbrazët." + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "%C20*%O$tS’hyhet dot %C22$1%C (%C20Kanali është vetëm me ftesa%O)" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "%C24*%O$tJeni ftuar te %C22$1%O nga %C18$2%O (%C29$3%O)" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "%C23*$t$1 ($3%C23) hyri" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "%C20*%O$tNuk hyhet dot te %C22$1%C (%C20Lyp fjalëkyç%O)" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "%C22*%O$t%C26$1%C ka përzënë %C18$2%C nga %C22$3%C (%C24$4%O)" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "%C19*%O$t%C19Jeni asgjësuar nga %C26$1%C (%C20$2%O)" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "%C29*%O$t%C29MOTD u Anashkalua%O" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "%C23*%O$t%C28$1%C është përdorur tashmë. Po provohet me %C18$2%O…" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "%C23*%O$t%C28$1%C është i gabuar. Po provohet me %C18$2%O…" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "%C20*%O$tNofka është e gabuar ose tashmë e përdorur. Përdorni /NICK që të provoni një tjetër." + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "%C20*%O$tNuk ka DCC të tillë." + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "%C23*%O$tNuk ka proces në xhirim tani" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "%C23*%O$tNjoftim: %C18$1%C është i larguar (%C24$2%O)" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "%C23*%O$tNjoftim: %C18$1%C u rikthye" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tLista e njoftimeve është e zbrazët." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "%C16,17 Listë Njoftimesh" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "%C23*%O$t%C23$1%O përdorues te lista e njoftimeve." + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "%C23*%O$tNjoftim: %C18$1%C nuk është në linjë (%C29$3%O)" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "%C23*%O$tNjoftim: %C18$1%C është në linjë (%C29$3%O)" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "%C24*$t$1 ($2%C24) iku" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "%C24*$t$1 ($2%C24) iku ($4)" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "%C24*%O$tPërgjigje pingu nga %C18$1%C: %C24$2%O sekonda(s)" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "%C20*%O$tPa përgjigje pingu për %C24$1%O sekonda, po shkëputet." + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "%C24*%O$tKa tashmë një proces në xhirim e sipër" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "%C24*$t$1 iku ($2)" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "%C24*%O$t%C26$1%C cakton mënyra %C30[%C24$2%C30]%O" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "%O-%C29$1/Wallops%O-$t$2" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "%C24*%O$tPo kërkohet numër IP-je për %C18$1%O…" + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "%C23*%O$tPo mirëfilltësohet përmes SASL-je si %C18$1%O (%C24$2%O)" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "%C29*%O$tU lidh." + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "%C29*%O$tPo kërkohet %C29$1%O" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "%C23*%O$tU ndal përpjekja e mëparshme për lidhje (%C24$1%O)" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "%C22*%O$tTema për %C22$1%C është: $2%O" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "%C22*%O$t%C26$1%C ka ndryshuar temën në: $2%O" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "%C22*%O$tTema e %C22$1%C caktuar nga %C26$2%C (%C24$3%O)" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C20*%O$tStrehë e panjohur. Ndoshta e keqshkruat?" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "%C20*%O$tNuk hyhet dot te %C22$1%C (%C20Është mbërritur në kufijtë e përdoruesit%O)" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "%C22*%O$tPërdorues në %C22$1%C: %C24$2%O" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%C është i larguar %C30(%C23$2%O%C30)%O" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "%C23*%O$t%C28[%C18$1%C28] %OFundi i listës WHOIS." + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O i plogësht %C23$2%O" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O i plogësht %C23$2%O, hyrja më: %C23$3%O" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O Strehë reale: %C23$2%O, IP Reale: %C30[%C23$3%C30]%O" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "%C19*%O$tTani po flisni te %C22$2%O" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "%C19*%O$tJeni përzënë prej %C22$2%C nga %C26$3%O (%C20$4%O)" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "%C19*%O$tE braktisët kanalin %C22$3%O" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "%C19*%O$tE braktisët kanalin %C22$3%C (%C24$4%O)" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "%C20*%O$tFtuat %C18$1%O te %C22$2%O (%C24$3%O)" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "%C20*%O$tTani njiheni si %C18$2%O" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "U ngarkua regjistrimi prej" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** PO PËRFUNDOHET REGJISTRIMI NË %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** PO FILLOHET REGJISTRIMI NË %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "* S’hapen dot kartela regjistrimi për shkrim.\nKontrolloni lejet tek %s" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "Mesazh majtas" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "Mesazh djathtas" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "Adresë IP" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Emër përdoruesi" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "Nofka e personit që po hyn" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "Kanali ku po hyhet" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "Streha e personit" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "Llpgaria e personit" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Nofkë" + +#: src/common/text.c:980 +msgid "The action" +msgstr "Veprimi" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "Shkronja mënyre" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "Tekst i identifikuar" + +#: src/common/text.c:987 +msgid "The text" +msgstr "Teksti" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "Mesazhi" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Emër Shërbyesi" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "Aftësi të Deklaruara" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "Aftësi të Hequra" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "Aftësi Shërbyesi" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "Aftësi të Domosdoshme" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Nofkë e vjetër" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Nofkë e re" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "Nofkë e personit që ndryshoi temën" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Temë" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "Nofka e përzënësit" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "Personi që po përzihet" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "Kanali" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "Arsyeja" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "Nofka e personit që po ikën" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "Koha" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "Krijuesi" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Nofkë" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Arsye" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Strehë" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "Kush është prej" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "Koha në format x.x (shihni më poshtë)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "Kanali ku po shkohet" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "Tingulli" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "Nofka e personit" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "Ngjarja CTCP" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "Nofka e personit që caktoi kyçin" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "Kyçi" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "Nofka e personit që caktoi kufirin" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "Kufiri" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "Nofka e personit që bëri op-im" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "Nofka e personit që u op-ua" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "Nofka e personit që është gjysmëop-uar" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "Nofka e personit që bëri gjysmëop-im" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "Nofka e personit që dha zë" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "Nofka e personit që u bë i zëshëm" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "Nofka e personit që bëri dëbimin" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "Maska e dëbimit" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "Nofka e personit që kreu heshtimin" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "Maska e heshtimit" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "Nofka që hoqi kyçin" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "Nofka që hoqi kufirin" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "Nofka e personit që bëri deopimin" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "Nofka e personit që u deopua" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "Nofka e personit që bëri gjysmëdeopimin" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Nofka e personit që u gjysmëdeopua" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "Nofka e personit që bëri çzanimin" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "Nofka e personit që u çzanua" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "Nofka e personit që hoqi zhdëbimin" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "Nofka e personit që kreu çheshtimin" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "Nofka e personit që bëri përjashtimin" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "Maska e përjashtimit" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "Nofka e personit që hoqi përjashtimin" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "Nofka e personit që bëri ftesën" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "Maska e ftesës" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "Nofka e personit që hoqi ftesën" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "Nofka e personit që po cakton mënyrën" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "Shenja mënyre (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "Shkronja e mënyrës" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "Kanali është duke u bërë gati" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Emër i plotë" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Anëtarësi Kanali/\"është një operator IRC\"" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Të dhëna Shërbyesi" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Kohë plogështie" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Kohë futjeje" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Arsye largimi" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Mesazh" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Llogari" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "përdorues@strehë i vërteti" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "IP reale" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Emër Kanali" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "Mekanizëm" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "Numër ose Identifikues" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Tekst" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Nofkë e personit që ju ftoi" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Përdorues" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "Nofkë në përdorim" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Nofkë që po provohet" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Portë" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "Varg mënyrash" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "Lloj DCC-je" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Emër kartele" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Emër kartele vendmbërritjeje" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "Emër shtegu" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Pozicion" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Madhësi" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "Varg DCC" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "Arsye Largimi" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "Numër objektesh njoftim" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Emër i Vjetër Kartele" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Emër i Ri Kartele" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Marrës" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Strehëmaskë" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Strehëemër" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "Paketa" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "Sekonda" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "Nofkë e personit që është ftuar" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Maskë dëbimi" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "Kush vendosi dëbimin" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Kohë dëbimi" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "S’lexohet dot kartelë tingulli:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "Streha e largët mbylli socket-in" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "Ndërlidhje e papranuar" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "S’ka udhë për te streha" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Mbaroi koha e ndërlidhjes" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "Nuk mund të caktohet ajo adresë" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "Lidhje e rivendosur nga tjetri" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "Ishulli Ascension" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Emiratet e Bashkuara Arabe" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "Fusha të Lidhura me Aviacionin" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Afganistan" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Antigua dhe Barbuda" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Anguila" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Shqipëri" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Armeni" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Antilet Holandeze" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Angolë" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Antarktidë" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Argjentinë" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "Përmbys DNS" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Samoa Amerikane" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "Rajoni Azi-Paqësor" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Austri" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Australi" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "Ishujt Aland" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Azerbajxhan" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Bosnjë-Hercegovinë" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Bangladesh" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Belgjikë" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Bullgari" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Bahrein" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "Biznese" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Brunei Darussalam" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Bolivi" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Brazil" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Bahamas" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Butan" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Ishulli Bouvet" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Botsvanë" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Bjellorusi" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Kanada" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "Katalane" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Ishujt Kokos" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "Republika Demokratike e Kongos" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "Republika e Afrikës Qendrore" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Kongo" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "Zvicër" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "Bregu i Fildishtë" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Ishujt Kuk" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Kili" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Kamerun" + +#: src/common/util.c:738 +msgid "China" +msgstr "Kinë" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Kolumbi" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Tregtar Internic" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "Kooperativa" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Kosta Rika" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "Serbi dhe Mal i Zi" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Kubë" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Kepi i Gjelbër" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Ishulli i Krishtlindjeve" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Qipro" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "Republika Çeke" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "Gjermani Lindore" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Gjermani" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Xhibut" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Danimarkë" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Dominika" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "Republika Dominikane" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Algjeri" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Ekuador" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Institucione Edukimi" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Estoni" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Egjipt" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Sahara Perëndimore" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Eritre" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "Spanjë" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Etiopi" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "Bashkimi Europian" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Finlandë" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Fixhi" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Ishujt Falkland" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Mikronezi" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Ishujt Faroe" + +#: src/common/util.c:770 +msgid "France" +msgstr "Francë" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Britani e Madhe" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Grenadë" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Gjeorgji" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Guajana Frënge" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "Ishujt Britanikë të Kanalit" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Ganë" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Gjibraltar" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Groenlandë" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Guine" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Qeveri" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Guadalup" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Guine Ekuatoriale" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Greqi" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Ishujt S. Georgia dhe S. Sandwich" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Guatemalë" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Guinea-Bisau" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Guajanë" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Ishujt Heard dhe McDonald" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Kroaci" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Hungari" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Indonezi" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Irlandë" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Izrael" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "Ishulli i Robit" + +#: src/common/util.c:801 +msgid "India" +msgstr "Indi" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "Informativ" + +#: src/common/util.c:803 +msgid "International" +msgstr "Ndërkombëtar" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Territoret Britanike të Oqeanit Indian" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Irak" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "Iran" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Islandë" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Itali" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "Xhersi" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Xhamaikë" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Jordani" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "Punësime Kompanish" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Japoni" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Kenia" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Kirgizstan" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Kamboxhia" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Komore" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "Shën Kits dhe Nevis" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Kore e Veriut" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Kore e Jugut" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Kuvait" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Ishujt Kajman" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Kazakistan" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Liban" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Santa Luçia" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Lihtenshtein" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Sri Lankë" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Liberi" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Lesoto" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Lituani" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Luksemburg" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Letoni" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Libi" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Marok" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Monako" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Moldavi" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "Mal i Zi" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "Mjekësor, i Shteteve të Bashkuara" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Madagaskar" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Ishujt Marshall" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Ushtarake" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Maqedoni" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Mianmar" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Mongoli" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Makau" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "Pajisje Celulare" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Ishujt Veriorë Mariana" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Martinikë" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Mauritani" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Maltë" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Mauricius" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "Muzeume" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Maldive" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Malaui" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "Meksikë" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Malajzi" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Mozambik" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Namibi" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "Emra Individësh" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Kaledoni e Re" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Rrjet Internic" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Ishujt Norfolk" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Nigeri" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Nikaragua" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Holandë" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Norvegji" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "Zelandë e Re" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "Organizëm Jofitimprurës Internic" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Polinezia Frënge" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Papua Guinea e Re" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Filipine" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Poloni" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "Shën Pier dhe Mikëlon" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Pitkern" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Porto Riko" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "Profesione" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "Territoret Palestineze" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Portugali" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Paraguai" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Katar" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Reunion" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Rumani" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "Old School ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "Serbi" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Federata Ruse" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Ruandë" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Arabi Saudite" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Ishujt Solomon" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Sejshelle" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Sudan" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Suedi" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Singapor" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "Shën Helenë" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Slloveni" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Ishujt Svalbard dhe Jan Mayen" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "Republika Slovake" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Somali" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Surinam" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "Sudan i Jugut" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "Sao Tome dhe Principe" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Ish-BRSS" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Siri" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Svaziland" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Ishujt Turks dhe Kaikos" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Çad" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "Shërbime Ndërlidhjesh në Internet" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "Territoret Frënge Jugore" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Tajlandë" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Taxhikistan" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Timori Lindor" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Tunizi" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Turqi" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "Udhëtime dhe Turizëm" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Trinidad dhe Tobago" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Taivan" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Tanzani" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Ukrainë" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Ugandë" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Mbretëria e Bashkuar" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "Shtetet e Bashkuara të Amerikës" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Uruguai" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Uzbekistan" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Qytet-shteti i Vatikanit" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "Shën Vincent dhe Grenadinet" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Venezuelë" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "Ishujt e Virgjër Britanikë" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "Ishujt e Virgjër të ShBA-ve" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "Ishujt Wallis dhe Futuna" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "Dëfrim të Rriturish" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Jemen" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Majot" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Serbi dhe Mali i Zi" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Afrikë e Jugut" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Zambia" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Zimbabve" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "S’u lidha dot me busin e sesionit" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "Përmbushja e urdhrit NameHasOwner dështoi" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "Dështoi në përmbushjen e Urdhrit" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "hyrje së largëti" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "shtojcë për hyrje në largësi përmes përdorimit të DBUS-it" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "S’u lidh dot me busin e sesionit: %s\n" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Dështoi në pasjen e %s: %s\n" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Tabelë Shkronjash" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "Dëbime" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "Përjashtime" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "Përjashtim" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "Ftesa" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Ftoje" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "Heshtime" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "Heshtim" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "Kopjoje maskën" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "%s në %s nga %s" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "Kopjojeni zërin" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "I palidhur." + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "Duhet të përzgjidhni disa ndalime." + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "Jeni i sigurt se doni të hiqen krejt objektet e treguara në %s?" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "Lloj" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Maskë" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "Nga" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Datë" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Dritaren e Listës së Dëbimeve mundeni ta hapni vetëm kur jeni në një skedë kanali." + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "Listë Dëbimesh (%s) - %s" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Hiqe" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Qethe" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Rifreskoje" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Po shfaqen %d/%d përdorues në %d/%d kanale." + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Përzgjidhni një emër kartele përfundim" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "_Hyni në Kanal" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "_Kopjo Emër Kanali" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "Kopjo Tekst _Teme" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "Listë Kanalesh (%s) - %s" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "_Kërko" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "_Shkarko Listën" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "Ruajeni _Listën…" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "Shfaq vetëm:" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "kanale me" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "deri" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "përdorues." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "Shih në:" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Emër kanali" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "Lloj kërkimi:" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "Kërkim i Thjeshtë" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "Përputhje Rregullsish (Shenja të Gjithëpushtetshme)" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "Shprehje e Rregullt" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Gjej:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Dërgoni kartelë te %s" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "Kjo kartelë nuk është e përmbledhshme." + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "S’hyhet dot në kartelën: %s\n%s.\nRimarrje jo e mundur." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "Kartela në drejtorinë e shkarkimit është më e madhe se kartela e ofruar. Rimarrje jo e mundur." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "Nuk mund të rimerret e njëjta kartelë prej dy personash." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "Ngarkime dhe Shkarkime - %s" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Gjendje" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Kartelë" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Të dyja" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "Ngarkime" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "Shkarkime" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "Hollësi" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "Kartelë:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "Adresë:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Ndërprite" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Pranoje" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Rimerre" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "Hapni Dosje…" + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "Listë Fjalosjesh DCC - %s" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Marrë" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Dërguar" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "Kohë Fillimi" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "Shtoni" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Fshije" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Anuloje" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Ruaje" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "Mos u vetërilidh me shërbyes" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "Përdor një tjetër drejtori formësimesh" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "Mos vetëngarko ndonjë shtojcë" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "Shfaq drejtori shtojcash/programthesh vetëngarkuese" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "Përdor drejtori formësimi të përdoruesit" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "Hapni një URL irc://server:port/channel?key" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "Përmbush urdhër:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "Hap një URL ose përmbush një urdhër në një HexChat ekzistues" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Fillo i minimizuar. Nivele 0=Normal 1=I ikonizuar 2=Në shtyllë" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "nivel" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "Shfaq të dhëna versioni" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "Dështoi në hapje shkronjash:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "Shtytëza e kërkimeve është e zbrazët.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d bajte" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Radhë dërgimesh në rrjet: %d bajte" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "Veprimi Xhiro Urdhër i xhiron të dhënat te Data 1 si të qenë shtypur te kutia e teksteve ku shtypët vargun e dhënë të tasteve. Ndaj mund të përmbajë tekst (i cili do të dërgohet te kanali/personi), urdhra ose urdhra përdoruesi. Kur xhirohet, krejt shenjat \\n te Data 1 përdoren për të kufizuar urdhra të veçantë, ndaj është e mundur të xhirohet më shumë se një urdhër. Nëse dëshironi një shenjë \\ tek teksti aktual, atëherë jepni \\\\" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "Urdhri Ndrysho Faqe ju kalon nga një faqe e bllokut në një tjetër. Caktoni për Data 1 faqen tek e cila dëshironi të kaloni. Nëse Data 2 ka një vlerë çfarëdo, atëherë kalimi do të jetë relativ kundrejt pozicionit të tanishëm. Caktoni për Data 1 vlerën auto që të kaloni te faqja me veprimtarinë më të re dhe më të rëndësishme (kërkesat së pari, mandej kanalet me theksime, kanalet me dialogë, kanalet me të dhëna të tjera)" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "Urdhri Fut në Shtytëz do të fusë lëndën e Data 1 te pjesa ku u shtyp vargu i tasteve te pozicioni i atëçastshëm i kursorit" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "Urdhri Rrëshqit Në Faqe bën që të rrëshqitet në tekst, lart ose poshtë, një faqe ose një rresht. Jepini Data 1 vlerën Top, Bottom, Up, Down, +1 ose -1." + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "Urdhri Vendos Shtytëz vendos futjen atje ku u shtyp varg tastesh te lënda e Data 1" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "Urdhri Urdhri i Fundit bën që si hyrje të jetë urdhri i fundit i dhënë - njësoj si shtypja e shigjetës sipër brenda një shelli" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "Urdhri Urdhri Pasues e bën zërin në fjalë të përmbajë urdhrin pasues që jepet - njësoj si shtypja e shigjetës poshtë brenda një shelli" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "Ky urdhër ndryshon tekstin që jepet për të përfunduar një urdhër apo një nofkë ende jo të plotësuar. Nëse është rregulluar Data 1, atëherë shtypja dyfish e tastit Tab në një varg do të zgjedhë nofkën e fundit, jo pasuesen" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "Ky urdhër kryen lëvizjen lart e poshtë nëpër listë nofkash. Nëse është dhënë diçka si Data 1 shkohet sipër, ndryshe zbritet poshtë" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "Ky urdhër kontrollon fjalën e fundit të dhënë përkundër listës së zëvendësimeve dhe bën zëvendësim, nëse gjendet përputhje" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "Ky urdhër zhvendos skedën ballore majtas me një hap" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "Ky urdhër zhvendos skedën ballore djathtas me një hap" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "Ky urdhër zhvendos grupin e skedave të atëçastshme majtas" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "Ky urdhër zhvendos grupin e skedave të atëçastshme djathtas" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "I kalon historikut rresht dhënieje, por nuk ia dërgon shërbyesit" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "Pati një gabim gjatë ngarkimit të formësimit për funksione tastesh" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "Përzgjidhni një rresht që të merrni të dhëna ndihme mbi Veprimin e tij." + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "Shkurtore Tastiere - %s" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "S’shkruan dot tek kjo kartelë." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "S’lexohet dot kjo kartelë." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "Ka tashmë një maskë si kjo." + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Private" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Njofto" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "Shpërfille" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "Jeni i sigurt se doni të hiqen krejt shpërfilljet?" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "Jepni maskë që do të shpërfillet:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "Listë shpërfilljesh - %s" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Statistika Shpërfilljesh:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Kanal:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privat:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Njofto:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Ftoni:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "Shtoni…" + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "Emër kanali shumë i shkurtër, riprovoni." + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "Lidhje e Plotësuar - %s" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "Lidhje e plotë te %s." + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "Te dritarja e listës së shërbyesve për këtë rrjet s’është dhënë ndonjë kanal (dhomë fjalosjesh) te e cila të bëhet hyrje e vetvetishme." + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "Ç’do të donit të bënit në vazhdim?" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "_Asgjë, do të hyj te ndonjë kanal më vonë." + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "_Hyni në këtë kanal:" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Në e ditshi emrin e kanalit ku doni të hyni, jepeni këtu." + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "_Hap listën e kanaleve." + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "Marrja e listës së kanaleve mund të dojë një a dy minuta." + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "_Pas lidhjesh, shfaqe përherë këtë dialog." + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "Dialog me" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Tema për %s është: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "Nuk është caktuar temë" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "Ky shërbyes ka ende %d kanale apo dialogë përshoqëruar atij. Të mbyllen të tërë?" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "Të dilet nga HexChat-i?" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "Mos pyet më herës tjetër." + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Jeni i lidhur te rrjete %i IRC." + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "Jeni i sigurt se doni të dilni?" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "Disa shpërngulje kartelash janë ende në përmbushje e sipër." + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "_Minimizoje sa Shtylla" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "Fut Kod Ngjyre ose Atributi" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>Të trasha</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>Të nënvizuara</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "<i>të Pjerrëta</i>" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "Normale" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "Ngjyra 0-7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "Ngjyra 8-15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "_Rregullime" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "_Regjistro në Disk" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "_Ringarkoje Rrëshqitjen" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "Hiqi _Ngjyrat" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "_Fshih Mesazhe Ardhjesh dhe Ikjesh" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "Sinjalizime _Ekstra" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "Bip gjatë _Mesazhesh" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "Xixëllo _Ikonë Shtyllash" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "Xixëllo _Shtyllë Veprimesh" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "_Shqite" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "_Mbylle" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "Caku i përdoruesve duhet të jetë një numër!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "Ngjyra Filtrimesh" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "Jo mesazhe nga jashtë" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "Mbrojtje Teme" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "Vetëm me Ftesa" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "Ndryshuar" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "Listë Dëbimesh" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Fjalëkyç" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "Kufi Përdoruesi" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Jepni nofkën e re:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "S'u gjetën përfundime." + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "Kërkimi mbërriti në fund ose nuk u gjet gjë." + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "_Theksoje krejt" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "Thekso krejt hasjet, dhe nënvizo hasjen e çastit." + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "Siç është shkruar" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "Kryeni një kërkim që termin e merr parasysh siç është shkruar." + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "_Regex" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "Vargjet e kërkimit konsideroji shprehje të rregullta." + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Strehë e panjohur" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "Llogari e panjohur" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "I panjohur" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Emër i Vërtetë:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "Përdorues:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "Llogari:" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "Vend:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "Shërbyes:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "%u minuta më parë" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "Msz i Fundit:" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "Mesazh Largimi:" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "%d nofka të përzgjedhura." + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "Shtylla e menuve tani është fshehur. Mund ta shfaqni sërish duke shtypur Control+F9, ose duke djathtasklikuar mbi një pjesë të zbrazët të fushës kryesore të teksteve." + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "Hape Lidhjen në Shfletues" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "Kopjoje Lidhjen e Përzgjedhur" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Hyni në Kanal" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "Dilni prej Kanalit" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "Ciklo Kanalin" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "_Vetëfutu" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "Vetëfutu në Kanal" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "_Vetëlidhu" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "Menu përdoruesi - %s" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "Përpunoni Këtë Menu" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "Vija e shënimit është e çaktivizuar" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "Nuk është caktuar kurrë vijë shënimi" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "Vija e shënimit u ricaktua dorazi." + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "Vija e shënimit u ricaktua, ngaqë u tejkalua kufiri i rrëshqitjeve" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "Vija e shënimit u ricaktua prej urdhrit CLEAR" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "Gjendje e panjohur për vijën e shënimit" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "Merr listë kanalesh" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr " është montuar pa mbulim shtojcash." + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "Urdhra Përdoruesi - Kode speciale:\n\n%c = kanali i atëçastshëm\n%e = emri i rrjetit të atëçastshëm\n%m = të dhëna makine\n%n = nofka juaj\n%t = koha/data\n%v = Version HexChat-i\n%2 = fjala 2\n%3 = fjala 3\n&2 = fjala 2 në fund të rreshtit\n&3 = fjala 3 në fund të rreshtit\n\npsh:\n/cmd Gjon, njatjeta\n\n%2 do të ishte \"Gjon\"\n&2 do të ishte \"Gjon, njatjeta\"." + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "Butona Liste përdoruesish - Kode Speciale:\n\n%a = krejt nofkat e përzgjedhura\n%c = kanali i atëçastshëm\n%e = emri i kanalit të atëçastshëm\n%h = strehëemri i nofkës së përzgjedhur\n%m = të dhëna makine\n%n = nofka juaj\n%s = nofka e përzgjedhur\n%t = koha/data\n%u = llogaria e përdoruesit të përzgjedhur" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "Butona Dialogësh - Kode specialë:\n\n%a = krejt nofkat e përzgjedhura\n%c = kanali i atëçastshëm\n%e = emri i rrjetit të atëçastshëm\n%h = strehëemri i nofkës së përzgjedhur\n%m = të dhëna makine\n%n = nofka juaj\n%s = nofka e përzgjedhur\n%t = koha/data\n%u = llogari e përdoruesit të përzgjedhur" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "Përgjigje CTCP - Kode specialë:\n\n%d = të dhëna (krejt ctcp)\n%e = emri i rrjetit të atëçastshëm\n%m = të dhëna makine\n%s = nofka që dërgoi ctcp\n%t = kohë/datë\n%2 = fjala 2\n%3 = fjala 3\n&2 = fjala 2 në fund të një rreshti\n&3 = fjala 3 në fund të një rreshti\n\n" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "Trajtues URL-sh - Kode speciale:\n\n%s = Vargu URL\n\nVendosja e një ! në fillim të urdhrit\ntregon që do të duhej dërguar te\nnjë shell, në vend se për HexChat-in" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "Urdhra të Përkufizuar Nga Përdoruesi - %s" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "Menu Liste përdoruesish Hapmbyll - %s" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "Zëvendëso - %s" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "Zëvendësoje me" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "Trajtues URL-sh - %s" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "Butona liste përdoruesish - %s" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "Butona dialogu - %s" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "Përgjigje CTCP - %s" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "He_xChat" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "_Listë Rrjetesh" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "_E re" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "Skedë Shërbyesi" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "Skedë Kanali" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "Dritare Shërbyesi" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "Dritare Kanali" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "_Ngarko Shtojcë ose Programth" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "_Braktise" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "_Parje" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "Shtyllë _Menuje" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "Shtyllë _Teme" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "Listë _Përdoruesish" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "_Butona Liste Përdoruesish" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "Butona Mën_yre" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "Këmbyes _Kanali" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "_Skeda" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "_Pemë" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "Matës _Rrjeti" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Off" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "Grafik" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "_Sa Krejt Ekrani" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "_Shërbyes" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "_Shkëputu" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "_Rilidhu" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "_Hyni në një Kanal…" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "_Listë Kanalesh" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "I shënuar Si i _Larguar" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "_Menu përdoruesi" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "_Rregullime" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "_Parapëlqime" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "Vetëzëvendësim" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "Përgjigje CTCP" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "Butona Dialogësh" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "Shkurtore Tastiere" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "Veprimtari Teksti" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "Trajtues URL-sh" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "Urdhra Përdoruesi" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "Butona Liste Përdoruesish" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "Flluskë Liste Përdoruesish" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "_Dritare" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "_Listë Dëbimesh" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "Fjalosje e Drejtpërdrejtë" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "_Shpërngulje Kartelash" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "Listë Shokësh" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "Listë Shpërfilljesh" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "_Shtojca dhe Programthe" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "_Regjistër të Papërpunuarash" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "_Kopjues URL-sh" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "Ricakto Vijë Shënimi" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "Kalo te Vijë Shënimi" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "_Kopjo Përzgjedhjen" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "_Pastroje Tekstin" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "Ruaje Tekstin" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "Kërkoni" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "Kërko Te Teksti" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "Kërko Pasuesin" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "Kërko të Mëparshmin" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "_Ndihmë" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "_Lëndë" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "_Rreth" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "_Bashkëngjite" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Emër" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Parë Së Fundi" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "I palidhur" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Kurrë" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "%d minuta më parë" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "Një orë më parë" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "%d orë më parë" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "I lidhur" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "Jepni nofkë për ta shtuar:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "Njofto në këta rrjete:" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "Pranohet listë rrjetesh ndarë me presje." + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "Listë Shokësh - %s" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "Hap Dialog" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "Mesazh me theksim nga: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "Mesazh kanali nga: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "Ofrim kartele nga: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "Ftuar në kanal nga: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "Njoftim nga: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "Mesazh privat nga: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "I lidhur në to %u rrjete dhe %u kanale - %s" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "_Riktheje Dritaren" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "_Fshihe Dritaren" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "_Xixëllo kur" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "Mesazh Kanali" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "Mesazh Privat" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "Mesazh i Theksuar" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "_Ndryshoji gjendjen" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "I _larguar" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "I _kthyer" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "Mesazh me theksim nga: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "%u mesazhe me theksim, më i riu nga: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "Mesazh kanali nga: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "mesazhe kanali %u. - %s" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "Mesazh privat nga: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "%u mesazhe private, më i riu nga: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "Ofrim kartele nga: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "%u oferta kartelash, më i reja nga: %s (%s) - %s" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Version" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Përshkrim" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Përzgjidhni Shtojcë ose Programth për t’u ngarkuar" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "Shtojca dhe Programthe - %s" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "_Ngarkoni…" + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "_Çngarkoje" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "_Ringarkoje" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "Ruajeni Si…" + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "Regjistër të Papërpunuarash (%s) - %s" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "Pastroje Regjistrin e të Papërpunuarave" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Rrjet i Ri" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Të hiqet vërtet rrjeti \"%s\" dhe tërë shërbyesit e tij?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "Emri i përdoruesit nuk mund të lihet i zbrazët." + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "S’mund të keni një nofkë të zbrazët." + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "Duhet të keni dy nofka unike." + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "Mënyra se si identifikoni veten kundrejt shërbyesit. Për metoda të personalizuara hyrjesh përdorni urdhra lidhjeje." + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "Përpunoni %s - %s" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "Shërbyes" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "Kanale vetëfutjeje" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "Urdhra lidhjesh" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "%n=Nofkë\n%p=Fjalëkalim\n%r=Emri i vërtetë\n%u=Emër përdoruesi" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "Kyç (Fjalëkalim)" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "_Përpuno" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "Lidhu vetëm me shërbyesin e përzgjedhur" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Mos ciklo nëpër tërë shërbyesit, kur dështon lidhja." + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "Lidhu te ky rrjet vetvetiu" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "Anashkalo shërbyes ndërmjetës" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "Përdor SSL për tërë shërbyesit në këtë rrjet" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "Dëshmitë SSL të pavlefshme pranoji" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "Përdor të dhëna të përgjithshme përdoruesi" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "Emër _nofke:" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "Zgjedhje e dytë:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "Emër i _vërtetë:" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "_Emër përdoruesi:" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "Metodë hyrjeje:" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Fjalëkalim:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "Fjalëkalim i përdorur për hyrjet. Nëse jeni në mëdyshje, lëreni të zbrazët." + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "Shkronja:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "Listë Rrjetesh -%s" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "Të dhëna Shërbyesi" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "Zgjedhje e tretë:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Rrjete" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "Anashkalo listë rrjetesh gjatë nisjes" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "Shfaq vetëm të parapëlqyerit" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "_Përpunojeni…" + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "_Renditi" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "E rendit listën e rrjeteve sipas rendit alfabetik. Përdorni shkurtoret Shift+Up dhe Shift+Down që të lëvizni një rresht." + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "_Parapëlq" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "Vëriani ose hiqiani shenjën si i parapëlqyer këtij rrjeti." + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "_Lidhu" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "Afrikaans" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Shqipe" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "Amarike" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "Asturiase" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Azerbajxhanase" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "Baske" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Bjeloruse" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Bullgare" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "Kineze (E thjeshtuar)" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "Kineze (Tradicionale)" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "Çeke" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "Daneze" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "Holandeze" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "Angleze (Britanike)" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "Angleze" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Estoneze" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "Finlandeze" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "Frënge" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "Galiciase" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "Gjermane" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "Greke" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "Gujaratase" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "Hindu" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "Hungareze" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "Indoneziane" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "Italiane" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "Japoneze" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "Kannada" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "Kinjaruandeze" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "Koreane" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "Letoneze" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "Lituaneze" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "Maqedone" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Malajase" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "Malajalame" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "Norvegjeze(Bokmål)" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "Norvegjeze (Nynorsk)" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "Polake" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "Portugeze" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "Portugeze (Braziliane)" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "Panxhabe" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "Ruse" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "Serbe" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "Slovake" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "Slovene" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "Spanjolle" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "Suedeze" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Tajlandeze" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "Turke" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "Ukrainase" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Vietnameze" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "Valone" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Të përgjithshme" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "Gjuhë:" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "Lloj kryesor i shkronjave:" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Shkronja:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "Kuti Tekstesh" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "Nofka të ngjyrosura" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "Jepi çdo personi në IRC një ngjyrë të ndryshme" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "Zhvendosi nofkat djathtas" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "Përligji nofkat djathtas" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "Shfaq vijë shënimi" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "Fut një vijë të kuqe pas tekstit të lexuar së fundmi." + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Pamje sfond:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "Rregullime Tejdukshmërie" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "Opakëri Dritareje" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "Vula kohore" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "Aktivizoni vula kohore" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "Format vulash kohore:" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "Për hollësi shihni artikullin strftime MSDN." + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "Për hollësi shihni faqe manuali (manpage) për strftime." + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "Shtyllë Titulli" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "Shfaq mënyra kanali" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "Shfaq numër përdoruesish" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "Fjala e shqiptuar së fundi" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "Kuti Futjesh" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "Përdor shkronjat dhe ngjyrat e kutisë së teksteve" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "Ngjyra dhe atribute vizatimi" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "Shfaq kuti nofkash" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "Shfaq ikonë mënyre përdoruesi te kutia e nofkave" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "Kontroll drejtshkrimi" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "Fjalorë për t’u përdorur:" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "Përdorni kode gjuhësh (si te \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\nZërat e shumtë ndajini me presje." + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "Përdor kode gjuhësh. Ndaji fjalët e shumëfishta me presje." + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "Plotësim Nofkash" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "Prapashtesë plotësimi nofkash:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "Renditur sipas plotësim nofkash:" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "Masë plotësimi nofkash:" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "Prag fillimi tregimi nofkash, në vend se plotësim të tyre" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "nofkash." + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "Grafik" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "A-Z, operatorët së pari" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "Z-A, operatorët në fund" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "E parenditur" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "Majtas (sipër)" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "Majtas (poshtë)" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "Djathtas (sipër)" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "Djathtas (poshtë)" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Sipër" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Poshtë" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Fshehur" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "Listë Përdoruesish" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "Shfaqi strehëemrat në listë përdoruesish" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "Përdor shkronjat dhe ngjyrat e kutisë së Teksteve" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "Shfaq ikona për mënyra përdoruesi" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "Te lista e përdoruesve përdor ikona grafike, në vend se simbole teksti." + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "Theksoji nofkat në listën e përdoruesve" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "Do t’i ngjyrosë nofkat njësoj si te fjalosja." + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "Shfaq numër përdoruesish në kanale" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "Listë përdoruesish renditur sipas:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "Shfaq listë përdoruesish te:" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "Gjurmim të Larguarish" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "Ndiq gjendjen i larguar të përdoruesve dhe tregoji ata me një ngjyrë të ndryshme" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "Në kanale më të vegjël se:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "Veprim Kur Dyklikohet" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "Lodra ekstra" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "Matës vonesash:" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Dritare" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Skeda" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "Përherë" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "Vetëm skedat e nevojshme" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "Automatike" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "Në skedë të re" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "Në skedën ballore" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "Pema" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "Lloj këmbyesi:" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "Hap një skedë ekstra për mesazhe shërbyesi" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "Hap një skedë të re, kur merret mesazh privat" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "Rendit skeda sipas abc-së" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "Shfaqi ikonat te pema e kanalit" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "Shfaq rreshta me vija te pema e kanalit" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "Rrotulloni rrotën e miut që të ndryshoni skeda" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "Klikim me të mesit që të mbyllet skeda" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "Tekst më i vogël" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "Fokusohu te skeda të reja:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "Vendosje njoftimesh:" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "Shfaq këmbyes kanalesh tek:" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "Shkurto etiketë skedash në:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "shkronja." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "Skeda ose Dritare" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "Hap kanale në:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "Hap dialogë në:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "Hapi të dobishmet në:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "DCC, Shpërfill, Njofto etj, të hapen si skeda apo si dritare?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "Mesazhe" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "Rrëshqitje" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "Pyet për ripohim" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "Pyet për dosje shkarkimesh" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "Ruaje pa ndërveprim" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "Kartela dhe Drejtori" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "Vetëprano oferta kartelash:" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Kartelat shkarkoji te:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "Kartelat e plotësuara zhvendosi te:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "Ruaj nofka në emra kartelash" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "Vetëhap Dritare DCC" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "Dritare dërgimesh" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "Dritare marrjesh" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "Dritare fjalosjeje" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "Shpejtësi Maksimum Shpërnguljesh Kartelash (Bajte për Sekondë)" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "Një ngarkim:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "Shpejtësi maksimum për një shpërngulje" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "Një shkarkim:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "Krejt shkarkimet të ndërthurur:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "Shpejtësi maksimum për krejt kartelat" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "Krejt shkarkimet të ndërthurur:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "Sinjalizime" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "Shfaq njoftime kur:" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "Xixëllo ikonën e shtyllës gjatë:" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "Xixëllo shtyllën e punëve gjatë:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "Prodho një tingull beep gjatë:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "Gjatë akteve të përzgjedhura luaj tingullin e sistemi për \"Njoftim Mesazhi të Atypëratyshëm\"" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "Gjatë akteve të përzgjedhura luaj \"message-new-instant\" nga tema e tingujve freedesktop.org" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "Gjatë akteve të përzgjedhura luaj një tingull GTK" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "Mos ua vër veshin sinjalizimeve, kur jam i shënuar si i larguar" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "Pa sinjale, kur dritarja është e fokusuar" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "Sjellje Paneli" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "Aktivizo ikonë për shtyllë sistemi" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "Ule te shtylla" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "Mbylle në panel" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "Tregoje vetvetiu si të larguar/të rikthyer" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "Ndryshoje vetvetiu gjendjen, kur fshihet te paneli." + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "Shfaq njoftime vetëm kur është i fshehur ose i ikonizuar" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "Mesazhe të Theksuar" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Mesazhet e theksuar janë ata ku përmendet nofka juaj, por edhe:" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "Fjalë ekstra për t’u theksuar:" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "Nofka për t’u mos theksuar:" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "Nofka për t’u theksuar përherë:" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Ndajini fjalët e shumëfishta me presje.\nPranohen shenjat e gjithëpushtetshme." + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "Bëje të kërcejë ikonën e panelit kur:" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "Mesazhe Parazgjedhje" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "Braktisni:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "Braktisni kanal:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "Largime:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "Larguar" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Shfaq i larguar vetëm një herë" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "Mesazhet identike të largimeve shfaqi vetëm njëherë." + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "Hiqja vetvetiu shenjën si të larguar" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "Hiqini vetes shenjën e të larguarit, përpara se të dërgoni mesazhe." + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "Të ndryshme" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "Shfaq MËNYRA në formë bruto" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "WHOIS gjatë njoftimesh" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "Dërgon një /WHOIS kur një përdorues që e keni te lista juaj e njoftimeve lidhet me kanalin." + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "Fshih mesazhe ardhjesh dhe ikjesh" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "Si parazgjedhje, fshihi mesazhet e hyrjeve/daljeve në kanal." + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "Fshih mesazhe ndryshimi nofke" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "*!*@*.host" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "*!*@domain" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "*!*user@*.host" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "*!*user@domain" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "Sjellje Kopjimesh Vetvetiu" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "Tekstin e përzgjedhur kopjoje vetvetiu" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "Kopjoje tekstin e përzgjedhur te e papastra, kur lëshohet butoni i majtë i miut. Përndryshe, Ctrl+Shift+C do ta kopjojë tekstin e përzgjedhur te e papastra." + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "Përfshi vetvetiu vula kohore" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "Përfshi vetvetiu vula kohore te rreshta të kopjuar teksti. Përndryshe, përfshi vula kohore nëse tasti Shift mbahet i shtypur teksa përzgjidhet tekst." + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "Përfshi vetvetiu të dhëna ngjyrash" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "Përfshi vetvetiu të dhëna ngjyre në rreshta të kopjuar teksti. Përndryshe, përfshi të dhëna ngjyre nëse tasti Ctrl mbahet i shtypur teksa përzgjidhet tekst." + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "Emri i vërtetë:" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "Shkronja alternative:" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "Ndajini zërat me presje, pa hapësira përpara ose pas." + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "Listat shfaqi përmbledhtas" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "Përdorni më pak hapësirë mes rreshtave të pemës listë/kanal përdoruesi." + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "Nëse mbulohet, përdor kohë shërbyesi" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "Shfaq vula kohore të furnizuara nga shërbyesi, nëse ai e mbulon zgjerimin time-server." + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "Rilidhu vetvetiu te shërbyesit pas shkëputjesh" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "Vonesë vetërilidhjeje:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "Vonesë vetëhyrjeje:" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "Lloj Dëbimi:" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "Provo të përdorësh këtë maskë dëbimi kur kryen dëbim ose heshtim. (lyp irc_who_join)" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Hyrje" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "Shfaq rrëshqitje prej sesionesh të mëparshëm" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "Rreshta rrëshqitjeje:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "Aktivizo regjistrim bisedash në disk" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "Emër kartele regjistrimesh:" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Shërbyes %c=Kanal %n=Rrjet." + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "Fut vulë kohore në regjistra" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "Format vule kohore regjistri:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URL-ra" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "Aktivizo regjistrim URL-sh në disk" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "Aktivizo Kopjues URL-sh" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "Numër maksimum URL-sh që mund të merren:" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(Çaktivizuar)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "SOCKS4" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "SOCKS5" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "Auto" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "Krejt lidhjet" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "Vetëm shërbyes IRC" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "Vetëm DCC" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "Adresa Juaj" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "Lidhe te:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "I dobishëm vetëm për kompjuter me adresa të shumëfishta." + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "Shpërngulje Kartelash" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "Adresën time merre prej shërbyesit IRC" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "Pyet shërbyesin IRC për adresën tuaj të vërtetë. Përdoreni nëse keni një adresë 192.168.*.*!" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "Adresë DCC IP:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "Pretendoni se jeni në këtë adresë, kur ofroni kartela." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "Portë e parë përgjimi DCC:" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "Portë e fundit përgjimi DCC:" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "!Lërini portat në zero për interval të plotë." + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "Shërbyes Ndërmjetës" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "Strehëemër:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Portë:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Lloj:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "Përdor ndërmjetës për:" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "Mirëfilltësim Ndërmjetësi" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "Përdor mirëfilltësim (vetëm HTTP ose SOCKS5)" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "Emër përdoruesi:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "Shërbyes Identd" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "E aktivizuar" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "Shërbyesi do të përgjigjet me emrin e përdoruesit për rrjetet" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "Duhet të keni leje për përgjimin e kësaj porte. Nëse s’bëhet fjalë për 113 (si parazgjedhje, 0 shpie te kjo), duhet të formësoni port-forwarding." + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "Përzgjidhni një Kartelë Figure" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "Përzgjidhni Dosje Shkarkimesh" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Përzgjidhni shkronja" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Shfletoni…" + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "Hap Dosje të Dhënash" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Përzgjidhni ngjyrë" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "Ngjyra Teksti" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "Ngjyra mIRC:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "Ngjyra vendore:" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Përpara:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Sfond:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "Tekst i Përzgjedhur" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "Ngjyra Ndërfaqeje" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "Të dhëna të reja:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "Vijë shënimi:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "Mesazh i ri:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "Përdorues i larguar:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "Theksim:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "Kontroll drejtshkrimi:" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "Heqje Ngjyrash" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Akt" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "Kartelë tingull" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "Përzgjidhni një kartelë tingull" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "Kartelë tingulli:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "_Shfletoni…" + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "_Luaje" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Ndërfaqe" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "Dukje" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Kuti futjesh" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Listë përdoruesi" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "Këmbyes kanalesh" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Ngjyra" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Fjalosje" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "Tinguj" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "Të mëtejshme" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Rregullim rrjeti" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Shpërngulje kartelash" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Kategori" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "Nuk mund ta vendosni dot pemën në krye ose në bisht!\nJu lutemi, kaloni së pari te skema <b>Skeda</b> te menuja <b>Parje</b>." + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "Mundësia Emër i Vërtetë nuk mund të lihet e zbrazët. Po kalohet te \"realname\"." + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "U ndryshuan disa rregullime të cilat lypin rinisje, për të hyrë në fuqi plotësisht." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*KUJDES*\nVetëpranimi i DCC-së në drejtorinë tuaj shtëpi\nmund të jetë i rrezikshëm dhe është i shfrytëzueshëm. P.sh:\nDikush mund t’ju dërgojë një .bash_profile" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "Parapëlqime - %s" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "<i>(pa këshillime)</i>" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "Më tepër…" + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "Shtoje \"%s\" në Fjalor" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "Shpërfilli Krejt" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "Këshillime Drejtshkrimi" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "gabim enchant për gjuhën: %s" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "Pati një gabim në përtypjen e vargut" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "This signal is only passed %d args, $%d is invalid" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "Shtyp Kartelë Tekstesh" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ Numër" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Përpunoni Akte" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "Ngarkoni Prej…" + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Testo Gjithçka" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "OK" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "Kopjues URL-sh - %s" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Fshije listën" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Kopjo URL-në e përzgjedhur" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Kopjoje" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Ruaje listën si një kartelë" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d ops, gjithsej %d" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "Hap një URL irc://shërbyes:portë/kanal" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "Sysinfo: Dështoi marrja e të dhënave. Ose kjo nuk mbulohet ose pati gabim." + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "Sysinfo: S’ka të dhëna nga ai emër\n" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "Sysinfo: %s është vendosur si: %d\n" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "Sysinfo: Rregullimet e vlefshme janë: announce dhe hide_* për çdo pjesë informacioni. p.sh. hide_os. Po qe se nuk i jepet një vlerë, do të shfaqë vlerën e atëçastshme (ose parazgjedhjen).\n" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "Sysinfo: Emër ndryshoreje i pavlefshëm\n" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "Shtojca %s u ngarkua\n" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "Shtojca %s u shngarkua\n" diff --git a/hexchat/po/sr.po b/hexchat/po/sr.po new file mode 100644 index 0000000..f621a6e --- /dev/null +++ b/hexchat/po/sr.po @@ -0,0 +1,6256 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# o Zoltan Čala <zolika@sezampro.yu>, 1999 +# Велимир Майсторов <majstorov@gmail.com>, 2013-2015 +# Zlatan Vasović <inactive+ZDroid@transifex.com>, 2013-2014 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-03 20:10+0000\n" +"Last-Translator: TingPing <tingping@tingping.se>\n" +"Language-Team: Serbian (http://www.transifex.com/hexchat/hexchat/language/sr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sr\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "ХексЧет" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "ИРЦ клијент" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "Ћаскајте са пријатељима онлајн" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "ИМ;Ћаскање;" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "Отвори у Сигурном моду" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "ХексЧет Избор Теме" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Заузет сам" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Одлазим" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Мрежа" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<нема>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Канал" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Чекам" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Активан" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Неуспело" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Готово" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Повежи се" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Прекинуто" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "Нема приступа %s\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Грешка" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s нуди „%s‟. Да ли желите да прихватите?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "Нема активних DCC-ова\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "_Отвори прозор за разговор" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "_Пошаљи датотеку" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "_Информације о кориснику (WhoIs)" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "_Додај у листу пријатеља" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "_Игнориши" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "О_ператорове акције" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Дај опа" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Одузми опа" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "Дај реч" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "Одузми реч" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Шут/забр." + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Шут" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "Забр." + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "Шут и забр." + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Напусти канал" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Прикључи се..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "Унесите име канала:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Везе са серверима" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Одзив сервера" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Сакриј верзију" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Оп" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "Деоп" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "Ћао" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Разлог да се избаци %s:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "Разговор" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Слање" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Прича" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Обриши" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "" + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* Није добра идеја да користите IRC као\n администратор. Боље је направити налог.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "ДА " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "НЕ " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Корисник %s вас засипа CTCP захтевима, игноришем %s\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s на вези\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s није ту\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Нисте на каналу. Пробајте са /join #<канал>\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Нисте на вези. Пробајте са /server <хост> [<порт>]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "Сервер %s већ постоји на мрежи %s.\n" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "Додат сервер %s на мрежу %s.\n" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Већ означен одсутан: %s\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "Већ означен враћен.\n" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "За покретање треба имати /bin/sh!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "Доступне наредбе:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "Корисникове наредбе:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "Наредбе описане у додацима:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Куцајте /HELP <наредба> за помоћ, или /HELP -l" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Непознат аргумент '%s' је занемарен." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "" + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "Додатак није пронађен.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "Овај додатак се није учитао.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <име> <наредба>, додаје дугме у корисничeв списак команди" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <наредба>, шаље команду на све канале где сте повезани" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "ALLCHANL <команда>, шаље команду ка свим каналима на тренутном серверу" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <команда>, шаље команду свим серверима где сте повезани" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "BACK, поставља Вас враћене (не одсутне)" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <шаблон> [<врста>], забрана за све кориснике обухваћене шаблоном од приступа каналу. Ако су већ на каналу, не избацује их (за то треба бити „оп‟)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <променљива> [<вредност>]" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "CHARSET [<енкодинг>], добија или подешава енкодинг коришћен за тренутну конекцију" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "" + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <код|шаблон>, тражи код земље, нпр: au = аустралија" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <име> <порука>, шаље CTCP поруку на дато име, попут VERSION или USERINFO" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "CYCLE [<канал>] излази из тренутног канала и одмах се поново придружује" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <име> - прихвати понуђену датотеку\nDCC SEND [-maxcps=#] <име> <дат> - пошаљи некоме датотеку\nDCC PSEND [-maxcps=#] <име> <дат> - пошаљи некоме датотеку, пасиван начин\nDCC LIST - покажи списак за DCC\nDCC CHAT <име> - понуди разговор преко DCC\nDCC PCHAT <име> - понуди разговор преко DCC, пасиван начин\nDCC CLOSE <тип> <име> <дат> пример:\n /dcc close send пераперић датотека.tar.gz" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <име>, склања полу-оп звање за име на тренутном каналу (потребан је„оп)‟" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <име>, брише дугме са корисничног списка" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DELBUTTON <име>, уклања звање оператора за име на овом каналу" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <име>, одузима реч за име на овом каналу" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, искључује са сервера" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <текст>, исписује текст" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <наредба>, изврши наредбу. Ако је дата ознака -o онда се исписшаље на тренутни канал, иначе се исписује у оквиру за текст." + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, шаље процесу SIGCONT" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9], зауставља позив exec у овој сесији. Ако је дато и -9 процесу се шаље SIGKILL" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, шаље процесу SIGSTOP" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, шаље податке на стандардни улаз процеса" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, празни ред за слање на овом серверу" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "ГАТЕ <рач.> [<порт>], прослеђује преко рач(унара), за порт се узима 23" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <надимак> [лозинка], убија дуплиран надимак" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <име>, даје звање полу-оп овом имену (потребан је оп) " + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <лозинка>, пријављује Вас на nickserv" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <шаблон> <типови...> <избори...>\n шаблон - шаблон за име рачунара, нпр. *!*@.aol.com\n типови - шта занемарити, један или више из скупа:\n PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n избори - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <име> [<канал>], позива име да се прикључи каналу, мисли се на тренутни ако се не наведе (потребан је оп)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <канал>, прикључује се каналу" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, тражи да се измери кашњење" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "LASTLOG [-h] [-m] [-r] [--] <реч>, тражи реч у баферу⏎\nКористи -h за истицање пронађене(их) речи⏎\nКористи -m за поклапање са величином слова⏎\nКористи -r када je реч регуларни израз⏎\nКористи -- (дупла цртица) за завршавање опција за претрагу, рецимо, реч '-r'" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <дат.>, учитава додатак или скрипту" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, одузима звање свим полу-операторима на овом каналу (потребан је оп)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, одузима звање свим операторима на овом каналу (потребан је оп)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <радња>, шаље опис радње на овај канал (радње се пишу у трећем лицу, нпр. /me скаче" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, избацује све друге са канала (потребан је оп)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, свима на каналу додељује звање оператора (потребан је оп)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <име> <порука>, шаље CTCP дојаву" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <рачунар> [<порт>]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <име>, узимање новог имена" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "NOTICE <корисник/канал> <порука>, шаље обавештење" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [-n network1[,network2,...]] [<надимак>], приказује Вашу листу обавештења или додаје некога на њу" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <име>, даје звање оператора овом имену (потребан је оп)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<канал>] [<разлог>], напушта канал, и то тренутни ако се не наведе" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <име | канал>, испитује име или канал CTCP поруком" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "" + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<reason>], искључује са овог сервера" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <текст>, шаље сирови текст серверу" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<рач.>] [<порт>] [<лозинка>], може се користити и само /RECONNECT за поновно спајање на сервер или као /RECONNECT ALL за поновно спајање на све отворене сервере" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<рач.>] [<порт>] [<лозинка>], може се користити и само /RECONNECT за поновно спајање на сервер или као /RECONNECT ALL за поновно спајање на све отворене сервере" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <текст>, шаље текст као поруку објекту у овом прозору" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <nick> [<file>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <рач.> <порт> <канал>, повезује се и учлани на канал" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <рач.> <порт> <канал>, повезује се и учлани на канал" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "SERVER [-ssl] <хост> [<порт>] [<лозинка>], повезује са сервером, подразумевани порт је 6667 за нормалне конекције, и 6697 за ssl конекције" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <рач.> [<порт>] [<лозинка>], повезује се на сервер, узима да је порт 6667" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-off|-on] [-quiet] <променљива> [<вредност>]" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "SETCURSOR [-|+]<позиција>, репозиционира курсор у оквиру за унос" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "SETTAB <ново име>, мења име таба, tab_trunc ограничење и даље важи" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "SETTEXT <нови текст>, замењује текст у оквиру за унос" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<тема>], поставља тему ако је наведена, иначе прикаже тренутну тему" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "\nTRAY -f <време> <датотека 1> [<датотека 2>] Трепћи платоом између две иконице.⏎\nTRAY -f <датотека> Постави плато на фиксирану иконицу.⏎\nTRAY -i <број> Трепћи платоом уз интерну иконицу.⏎\nTRAY -t <тeкст> Постави тултип платоа.⏎\nTRAY -b <наслов> <текст> Постави балон платоа." + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <шаблон> [<шаблон>...], скида забрану за ове шаблоне" + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <шаблон> [QUIET]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <име>, уклони додатак или скрипт" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "" + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, отвара URL у прегледнику мреже" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "USELECT [-a] [-s] <име1> <име2> итд, наглашава имена у списку корисника канала" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <име>, даје реч (потребан је оп)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <порука>, шаље поруку на све канале" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <порука>, шаље поруку свим операторима на овом каналу" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "Употреба: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nЗа ову наредбу помоћ није доступна.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "Не постоји наредба.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "Погрешни аргументи за корисничку наредбу.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "Сувише команди се унакрсно позива, обустављам." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "Нема hexchat_plugin_init симбола; да ли је ово стварно HexChat додатак?" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Да ли сте сигурни да је ово SSL сервер и порт?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "Рачунар %s наизглед не постоји\nПроверите подешавања за IP!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "Неуспео контакт са заступником.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Покушавам везу са следећим сервером у %s...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "Упозорење: Скуп знакова „%s‟ није познат. За мрежу %s се зато неће користити конверзија." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "%C18*%O$t%C18$1%O додат на листу обавештења." + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "" + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "%C24*%O$t%C28$1%O је сада познат као %C18$2%O" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O поставља бан на %C18$2%O" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O укида звање полу-оператора за %C18$2%O" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O укида звање оператора за %C18$2%O" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O одузима реч од %C18$2%O" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O укида звање полу-оператора за %C18$2%O" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%UКанал Бр.кор. Тема" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "%C22*%O$t%C26$1%O уклања лимит корисника" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O поставља лимит канала на %C24$2%O" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O даје реч за %C18$2%O" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "%C23*%O$tПовезано. Сада се пријављујем." + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "%C20*%O$tКонекција није успела (%C20$1%O)" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "%C23*%O$tDCC разговор са %C18$1%O је прекинут." + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "%C20*%O$tDCC разговор за %C18$1%O је изгубљен (%C20$4%O)" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "%C23*%O$tПримио сам „%C23$1%C“ од %C18$2%O" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "%C23*%O$tОва DCC понуда не постоји." + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "" + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "" + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "" + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "" + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "%C24*%O$t%C18$1%O обрисан са листе обавештења." + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "%C20*%O$tИскључен (%C20$1%O)" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "%C24*%O$tПронашао Ваш IP: %C30[%C24$1%C30]%O" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "%O%C18$1%O додат на листу игнорисаних." + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "%OИгнорисање на %C18$1%O је промењено." + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "%O%C18$1%O обрисан са листе игнорисаних." + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "%OЛиста игнорисања је празна." + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "%C20*%O$tНе могу да се прикључим %C22$1%C (%C20Канал је само за позване%O)" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "%C24*%O$tВи сте позвани на %C22$1%O од %C18$2%O (%C29$3%O)" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "%C23*$t$1 ($3%C23) се прикључио/ла" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "%C29*%O$t%C29MOTD прескочен%O" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "%C20*%O$tНема таквог DCC." + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "%C23*%O$tНиједан процес није покренут" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tСписак посматраних је празан." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "" + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "%C23*%O$tОбавештење: %C18$1%C је недоступан/а (%C29$3%O)" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "%C23*%O$tОбавештење: %C18$1%C је доступан/а (%C29$3%O)" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "%C24*$t$1 ($2%C24) је отишао/ла" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "%C24*%O$tПроцес је већ покренут" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "%C24*$t$1 је отишао ($2)" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "%C24*%O$tТражим IP број од %C18$1%O..." + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "%C29*%O$tПовезан." + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "%C29*%O$tТражим %C29$1%O" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "%C22*%O$tTема за %C22$1%C је: $2%O" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OКрај списка за WHOIS." + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "Учитан лог од" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** КРАЈ ЗАПИСА У ДНЕВНИКУ У %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** ПОЧЕТАК ЗАПИСА У ДНЕВНИКУ У %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "* Не могу да отворим лог датотеку (датотеке) за писање. Проверите\nдозволе %s" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "Порука слева" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "Порука здесна" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "IP адреса" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Кор. име" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "Име особе која се прикључује" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "Канал на који се прикључује" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "Рачунар на коме ради" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Надимак" + +#: src/common/text.c:980 +msgid "The action" +msgstr "Наредба" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "Ознака за приступ" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "Препознат текст" + +#: src/common/text.c:987 +msgid "The text" +msgstr "Текст" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "Порука" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Име сервера" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "Потврђене могућности" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "Могућности сервера" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "Затражене могућности" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Стари надимак" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Нови надимак" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "Име особе која је променила тему" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Тема" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "Име избацивача" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "Избачена особа" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "Канал" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "Разлог" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "Име особе која одлази" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "Време" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "Креатор" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Име" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Разлог" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Рачунар" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "Од кога долази" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "Време у формату x.x (видети испод)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "Канал на који иде" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "Звук" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "Име особе" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "CTCP догађај" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "Име особе која је поставила кључ" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "Кључ" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "Име особе која је поставила ограничење" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "Ограничење" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "Име особе која је доделила опа" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "Име особе која је добила опа" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "Име особе која је добила полу-опа" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "Име особе која је доделила полу-опа" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "Име особе која је дала реч" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "Име особе која је добила реч" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "Име особе која је забранила" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "Шаблон за забрану" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "Шаблон за утишавање" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "Име особе која је склонила кључ" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "Име особе која је уклонила ограничење" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "Име особе којој је одузет оп" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Име особе којој је одузет полу-оп" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "Име особе којој је одузета реч" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "Име особе која је поставила искључење" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "Шаблон за искључење" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "Име особе која је уклонила искључење" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "Име особе која је позвала" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "Шаблон за позив" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "Име особе која је уклонила позив" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "Име особе која је поставила приступ" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "Знак приступа (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "Ознака приступа" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "Канал на ком стоји" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Пуно име" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Припадност каналу/\"је IRC оператор\"" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Подаци о серверу" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Одсутан" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Време пријаве" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Разлог за одсуство" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Порука" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Налог" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "Прави user@host" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "Прави IP" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Име канала" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "Механизам" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "Сиров бројач или идентификатор" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Текст" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Име особе која је позвала" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Корисници" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "Имена у употреби" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Испробана имена" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Порт" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "Права приступа" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "Врста DCC" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Датотека" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Циљна датотека" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "зн./сек." + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "Путања" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Место" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Величина" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "DCC текст" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "Разлог одсуства" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "Број посматраних улаза" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Стара датотека" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Нова датотека" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Прималац" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Шаблон рач." + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Име рач." + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "Пакет" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "Секунде" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "Име позване особе" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Шаблон забране" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "Ко је забранио" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Време забране" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "Датотека са звучним записом „%s‟ се не може очитати." + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "Удаљени рачунар је прекинуо везу" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "Веза одбијена" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "Нема путање до рачунара" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Време за повезивање је истекло" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "Не може се доделити та адреса" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "Веза прекинута на другом крају" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "Острво Успења" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Андора" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Уједињени арапски емирати" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "Поља сродна авијацији" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Авганистан" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Антигва и Барбуда" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Ангуила" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Албанија" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Јерменија" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Холандски антили" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Ангола" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Антарктик" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Аргентина" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "Обратни DNS" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Америчка Самоа" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "Азија-Пацифик регион" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Аустрија" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "Нато терен" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Аустралија" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Аруба" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "Аландска острва" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Азербејџан" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Босна и Херцеговина" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Барбадос" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Бангладеш" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Белгија" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Буркина Фасо" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Бугарска" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Бахреин" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Бурунди" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "Комерцијала" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Бенин" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Бермуда" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Брунеји Дар-Ес-Салам" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Боливија" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Бразил" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Бахами" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Бутан" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Острво Буве" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Боцвана" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Белорусија" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Белизе" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Канада" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "Каталонски" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Кокосова острва" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "Демократска република Конго" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "Централноафричка република" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Конго" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "Швајцарска" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "Обала слоноваче" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Кукова острва" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Чиле" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Камерун" + +#: src/common/util.c:738 +msgid "China" +msgstr "Кина" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Колумбија" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Комерцијални домени" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "Задруге" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Костарика" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "Србија и Црна Гора" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Куба" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Зеленортска острва" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Божићна острва" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Кипар" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "Република Чешка" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "Источна Немачка" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Немачка" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Џибути" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Данска" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Доминика" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "Доминиканска република" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Алжир" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Еквадор" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Образовне установе" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Естонија" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Египат" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Западна Сахара" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Еритреја" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "Шпанија" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Етиопија" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "Европска Унија" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Финска" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Фиџи" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Фоклендска острва" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Микронезија" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Фарска острва" + +#: src/common/util.c:770 +msgid "France" +msgstr "Француска" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Габон" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Велика Британија" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Гренада" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Грузија" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Француска Гвајана" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "Британска Каналска острва" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Гана" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Гибралтар" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Гренланд" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Гамбија" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Гвинеја" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Владине установе" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Гвадалупе" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Екваторијална Гвинеја" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Грчка" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "С. Џорџија и С. Сендвичка острва" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Гватемала" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Гуам" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Гвинеја Бисао" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Гијана" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Хонг Конг" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Хердова и Макдоналдова острва" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Хондурас" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Хрватска" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Хаити" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Мађарска" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Индонезија" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Ирска" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Израел" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "Острво Човека" + +#: src/common/util.c:801 +msgid "India" +msgstr "Индија" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "Информациони домен" + +#: src/common/util.c:803 +msgid "International" +msgstr "Међународни домени" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Британска Индијска острва" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Ирак" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "Иран" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Исланд" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Италија" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "Џерси" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Јамајка" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Јордан" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "Послови у компанији" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Јапан" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Кенија" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Киргистан" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Камбоџа" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Кирибати" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Комори" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "Св. Китс и Невис" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Северна Кореја" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Јужна Кореја" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Кувајт" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Кајманска острва" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Казахстан" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Лаос" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Либан" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Света Луција" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Лихтенштајн" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Шри Ланка" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Либерија" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Лесото" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Литванија" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Луксембург" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Латвија" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Либија" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Мароко" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Монако" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Молдова" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "Црна Гора" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "Америчке медицинске установе" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Мадагаскар" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Маршалска острва" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Војни домени" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Македонија" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Мали" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Мианмар" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Монголија" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Макао" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "Мобилни уређаји" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Северна Маријанска острва" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Мартиник" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Мауританија" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Монсерат" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Малта" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Маурицијус" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "Музеји" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Малдиви" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Малави" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "Мексико" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Малезија" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Мозамбик" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Намибија" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "Имена појединаца" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Нова Каледонија" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Нигер" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Интерник мрежа" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Норфолшка острва" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Нигерија" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Никарагва" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Холандија" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Норвешка" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Непал" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Науру" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Ниуе" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "Нови Зеланд" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Оман" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "Непрофитна организација интерник" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Панама" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Перу" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Француска Полинезија" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Папуа Нова Гвинеја" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Филипини" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Пакистан" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Пољска" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "Св. Пјер и Микелон" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Питкаирн" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Порторико" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "Занимања" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "Палестинска територија" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Португал" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Палау" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Парагвај" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Катар" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Реинион" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Румунија" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "Старовремски ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "Србија" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Руска федерација" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Руанда" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Саудијска Арабија" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Соломонова острва" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Сејшели" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Судан" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Шведска" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Сингапур" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "Св. Јелена" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Словенија" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Свалбард и Јан Мајен острва" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "Словачка република" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Сијера Леоне" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "Сан Марино" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Сенегал" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Сомалија" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Суринам" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "Јужни Судан" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "Сао Томе и Принципе" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Бивши СССР" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "Ел Салвадор" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Сирија" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Свазиленд" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Туркс и Каикос острва" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Чад" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "Сервиси интернет комуникације" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "Француске јужне територије" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Того" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Тајланд" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Таџикистан" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "Токелау" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Источни Тимор" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Туркменистан" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Тунис" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Тонга" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Турска" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "Путовања и туризам" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Тринидад и Тобаго" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Тувалу" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Тајван" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Танзанија" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Украjина" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Уганда" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Велика Британија" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "Сједињене америчке државе" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Уругвај" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Узбекистан" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Град-држава Ватикан" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "Св. Винсент и Гренадини" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Венецуела" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "Британска Девичанска острва" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "Америчка Девичанска острва" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Вијетнам" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Вануату" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "Острвље Валис и Фортуна" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Самоа" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "Забава за одрасле" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Јемен" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Мајот" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Југославија" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Јужна Африка" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Замбија" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Зимбабве" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "Није могуће повезати се са магистралом сесије" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "Неуспешно завршавање NameHasOwner-а" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "Неуспело завршавање команде" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "даљински приступ" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "додатак за удаљен приступ помоћу DBUSа" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Није могуће повезати се са магистралом сесије: %s\n" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Не може се добавити %s: %s\n" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Табела знакова" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "Забр." + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "Ослобађања" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "Ослобађање" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "Позиви" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Позови" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "Копирај маску" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "%s на %s од %s" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "Копирај унос" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "Није на вези." + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "Морате изабрати забране" + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "Врста" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Шаблон" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "Од" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Датум" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Списак ућутканих се може отворити само ако је отворен језичак за приказ канала" + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Уклони" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Исеци" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Освежи" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Приказујем %d/%d корисника на %d/%d канала." + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Изаберите име датотеке за излаз" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "_Прикључи се каналу" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "_Копирај име канала" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "Копирај текст _теме" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "_Претрага" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "_Листа преузимања" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "Сачувај _листу..." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "Прикажи само:" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "канали са" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "за" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "корисници." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "Погледајте у:" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Име канала" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "Тип претраге:" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "Једноставна претрага:" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "Подударање са шаблонима (џокери)" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "Редован израз" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Нађи:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Шаљи датотеку за %s" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "Датотека се мора преузети изједна." + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "Не могу да приступим: %s\n%s.\nНастављање није могуће." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "Датотека која је претходно преузета је већа него понуђена. Зато није могуће наставити пренос." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "Не може се наставити пренос исте датотеке од две различите особе." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Стање" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Датотека" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Оба" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "Слања" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "Преузимања:" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "Детаљи" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "Датотека:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "Адреса:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Обустави" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Прихвати" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Настави" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "Отвори директоријум..." + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Пријем" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Послато" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "Поч. време" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "Додај" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Обриши" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Откажи" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Сними" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "Не повезуј се аутоматски са серверима" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "Користи други директоријум са подешавањима" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "Не учитавај аутоматски додатке" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "Прикажи директоријум за аутоматско учитавање додатака" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "Прикажи директоријум са корисниковим подешавањима" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "Отвори irc://сервер:порт/канал?кључ URL" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "Пошаљи ову команду:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "Отворите URL или извршите команду у постојећем HexChat-у" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Смањивање. Ниво 0=нормално, 1=иконификовано, 2=плато" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "ниво" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "Прикажи податке о издању" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "Не може се отворити фонт:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "Запис за претрагу је празан.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d бајт(ов)(а)" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Мрежни ред слања: бајтова: %d" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "Наредба ^BУбаци у запис^B ће убацити садржај поља Data 1 на место на ком је био фокус када је притиснута комбинација тастера" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "Команда ^BПостави запис^B пребацује садржај поља Data 1 на место које је било у фокусу" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "Команда ^BПоследња команда^B уписује последњу унету команду, као када се у шкољци притисне стрелица нагоре" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "Команда ^BНаредна команда^B уписује команду која је следећа на реду, слично као притисак на стрелицу надоле у шкољци" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "Ова команда мења текст у линији за унос тако што довршава непотпуно име или команду. Ако је поље Data 1 попуњено, дупли притисак на табулатор бира последње име, не следеће" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "Овом командом се можете шетати горе-доле кроз листу имена. Ако је Data 1 постављено на било шта, кретаћете се на горе, иначе на доле" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "Ова команда проверава да ли се последња унета реч налази на списку за замене, и замењује је ако је пронађе" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "Ова команда помера тренутни језичак за једно место улево" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "Ова команда помера тренутни језичак удесно" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "Ова команда помера активну групу језичака улево" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "Ова команда помера активну групу језичака удесно" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "Убацује улазну линију у претходне команде, али не шаље серверу" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "Грешка при учитавању распореда тастера" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "Не може се писати у ту датотеку." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "Ова се датотека не може читати." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "Овај шаблон већ постоји." + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Приватно" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Вест" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "Прихвати" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "Да ли сте сигурни да желите да склоните сва игнорисања?" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "Унеси шаблон за ућуткивање" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Статистика за ућуткане:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Канал:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Приватно:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Вести:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Позив:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "Додај..." + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "Име канала је прекратко, пробајте поново." + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "Повезивање са %s је успело." + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "Шта бисте желели следеће да урадите?" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "_Ништа, прикључићу се каналу касније." + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "_Прикључи се каналу:" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Ако знате име канала коме се желите прикључити, унесите га овде." + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "" + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "_Увек приказуј ово прозорче после повезивања." + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "Разговор са" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Тема за %s је: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "Тема није постављена" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "Овај сервер има укупно оволико канала: %d или дијалога. Да ли желите да их све затворите?" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "Излазите из HexChat-a?" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "Не питајте следећи пут." + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Ви сте повезани на %i IRC мрежа." + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "Да ли сте сигурни да желите да изађете?" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "Неки преноси датотека су и даље активни." + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "_Смањи на плато" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "Убаци атрибут или кôд за боју" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>Масно</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>Подвучено</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "Обично" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "Боје 0-7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "Боје 8-15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "_Подешавања" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "_Логуј на диск" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "_Поново учитај сачуване линије" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "Уклони _боје" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "_Сакриј поруке о доласку/одласку" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "_Екстра упозорења" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "Огласи се када стигне нова порука" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "Трепћи _иконицом платоа" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "Трепћи _траком задатака" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "_Одвоји" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "_Затвори" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "Макс. број корисника мора бити унет као број!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "Филтрирај боје" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "Нема спољашњих порука" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "Заштита теме" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "По позиву" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "Надгледан" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "Списак избачених" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Кључна реч" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "Макс. људи" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Унесите ново име:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "Нема резултата." + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "Претрага је стигла до краја или ништа више није нађено." + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "_Истакни све" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "" + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Непознат рачунар" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "Непознат налог" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Непознато" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Право име:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "Корисник:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "Налог:" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "Држава:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "Сервер:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "пре оволико минута: %u" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "Посл. порука:" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "Одсутан:" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "%d надимака одабрано." + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "Отвори везу у читачу" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "Умножи изабрану везу" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Иди на канал" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "Изађи са канала" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "Понови приступ" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "_Аутоматско повезивање" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "_Аутоматска конекција" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "CTCP одговори - посебни кодови:\n\n%d = подаци (цео CTCP)\n%e = назив тренутне мреже\n%m = информације о машини\n%s = кирисник који је послао CTCP\n%t = време/датум\n%2 = друга реч\n%3 = трећа реч\n&2 = друга реч ка крају линије\n&3 = трећа реч ка крају линије\n\n" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "Замени са" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "He_xChat" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "_Нов" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "_Крај" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "_Преглед" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "_Трака изборника" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "_Трака теме" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "_Листа корисника" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "_Дугмета за начин приступа" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "_Пребацивач канала" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "_Језичци" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "_Дрво" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "_Мерења мреже" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Искључено" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "Графичко" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "_ЦеоЕкран" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "_Сервер" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "_Искључи се" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "_Опет се повежи" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "Објави _Одсуство" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "_Корисников мени" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "П_одешавања" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "_Поставке..." + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "_Прозор" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "Постави овде ознаку" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "_Копирај избор" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "О_чисти текст" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "Претрага" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "Претражите наредно" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "Претражите претходно" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "_Помоћ" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "_Садржај" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "_О програму" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "_Закачи" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Име" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Био је ту" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "Није на вези" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Никада" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "пре %d минута" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "Сат раније" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "%d сати раније" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "На вези" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "Унесите име које треба додати:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "Обавести ме на овим мрежама:" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "Листа мрежа раздвојена зарезима је дозвољена." + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "Отвори разговор" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "Порука на каналу од: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "Приватна порука од: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "_Поврати прозор" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "_Сакриј прозор" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "_Трепери" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "Порука на каналу" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "Приватна порука" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "Истакнута порука" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "_Промени статус" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "_Одсутан" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "_Назад" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Верзија" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Опис" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Избор додатка или скрипта за учитавање" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "_Учитај..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "Сачувај као..." + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "Обриши дневник" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Нова мрежа" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Да ли заиста треба брисати мрежу \"%s\" и све сервере у њој?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "Сервери" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "Аутоматски се прикључи каналима" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "Команде повезивања" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "Кључ (лозинка)" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "_Уреди" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "Повежи се само са изабраним рачунарима" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Не испитуј све рачунаре у списку када повезивање не успе." + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "Аутоматски се повежи на ову мрежу" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "Заобиђи proxy сервер" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "Користи SSL за све рачунаре у овој мрежи" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "Прихвати неважеће SSL сертификате" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "Користи главне податке о кориснику" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "_Надимак:" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "Други избор:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "_Право име:" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "_Корисничко име:" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "Начин пријављивања:" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Лозинка:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "Скуп знакова:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "Подаци о кориснику" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "Трећи избор:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Мреже" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "Не приказуј списак мрежа при покретању програма" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "Прикажи само омиљене" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "_Уреди..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "Поређај" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "_Омиљено" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "Означите или уклоните ознаку ове мреже као омиљене." + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "_Повежи се" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "Африканс" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Албански" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "Ахмарски" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "Астуријски" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Азербејџански" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "Баскијски" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Белоруски" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Бугарски" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "Кинески (поједеностављен)" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "Кинески (традиционални)" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "Чешки" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "Дански" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "Холандски" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "Енглески (британски)" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "Енглески" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Естонски" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "Фински" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "Француски" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "Галицијски" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "Немачки" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "Грчки" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "Гуџарати" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "Хинди" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "Мађарски" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "Индонежански" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "Италијански" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "Јапански" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "Канађански" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "Кињаруанда" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "Корејански" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "Летонски" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "Литвански" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "Македонски" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Малајски" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "Малајаламски" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "Норвешки (Бокмал)" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "Норвешки (нинорск)" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "Пољски" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "Португалски" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "Португалски (Бразилски)" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "Панџабски" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "Руски" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "Српски" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "Словачки" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "Словеначки" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "Шпански" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "Шведски" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Тајландски" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "Украјински" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Вијетнамски" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "Валонски" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Опште" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "Језик:" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "Главни фонт:" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Слова:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "Оквир за текст" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "Обоји имена" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "Додели свакој особи на ИРЦ-у различиту боју" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "Уравнај надимке" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "Уравнај надимке по десној страни" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "Прикажи линију за обележавање" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "Убаци црвену линију после последње прочитане линије текста." + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Позадина:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "Подешавања провидности" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "Погледај strftime MSDN чланак за више детаља." + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "Погледај strftime страницу подршке за више детаља." + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "Насловна трака " + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "Прикажи модове канала" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "Прикажи број корисника" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "Поље за унос" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "Прикажи поље за надимке" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "Провера правописа" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "Речници за коришћење:" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "Користите кодове језика. Одвајајте више уноса зарезима." + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "Суфикс за допуну имена:" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "Суфикс за допуну имена:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "Ред завршавања надимака:" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "" + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "Графички" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "Неуређено" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Горе" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Доле" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Сакриј" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "Списак имена" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "Покажи имена рачунара" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "Користи боје и писмо из кућице за текст" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "Прикажи иконице за корисничке модове" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "Користи графичке иконице уместо текстуалних симбола у листи корисника." + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "Обоји надимке у листи корисника" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "Прикажи број корисника на каналима" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "Уреди списак корисника према:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "Прикажи листу корисника на:" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "Праћење одсутности" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "Прати одсутне на каналима са мање од:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "Шта извршити на двоструки клик" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "Екстра геџети" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "Мерач заостајања:" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "Мерач смањења протока:" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Прозори" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Језичци" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "Увек" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "Само жељени језичци" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "Аутоматски" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "У екстра картици" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "У предњој картици" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "Дрвo" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "Тип пребацивача:" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "Отвори посебан језичак за поруке са сервера" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "Отвори нову картицу када примиш приватну поруку" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "Уреди језичке лексикографски" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "Прикажи иконице на дрвету канала" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "Прикажи линије са тачкама у листи канала" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "Мањи текст" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "Фокусирај нове језичке:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "Постављање обавештења:" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "Прикажи пребацивач канала на:" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "Скрати језичке на:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "слова" + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "Језичци или прозори" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "Место за приказ нових канала:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "Место за прикаѕ нових разговора:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "Место за приказ помоћних порука:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "DCC, Ignore и Notify се отварају у језичцима или прозорима?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "Поруке" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "Памћење линија" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "Питај за потврду" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "Питај за фасциклу преузимања" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "Сачувај без интеракције" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "Датотеке и директоријуми" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "Одмах прихвати понуђене датотеке:" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Снимај датотеке у:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "Помери пренесене датотеке у дир.:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "Запамти надимке у именима датотекама" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "Непосредне акције (DCC) у посебан прозор" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "Прозор за слање" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "Прозор за пријем" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "Прозор за разговор" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "Једно слање:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "Макс. брзина за један пренос" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "Једно преузимање:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "Сва слања:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "Макс. брзина саобраћаја за све датотеке" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "Сва преузимања:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "Узбуне" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "Трепћи иконицом платоа када:" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "Трепћи траком задатака када:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "Направи звучни сигнал када:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "Не приказуј упозорења када си недоступан" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "Омогући иконицу системског платоа" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "Затвори у систем треј" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "Аутоматски означи одсутност/повратак" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "" + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "Истакнуте поруке" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "Екстра речи за истачињање:" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "Надимци који се не истичу:" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "Надимци који се увек истичу:" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Раздвојте више речи зарезима.\nЏокери су прихваћени." + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "Подразумеване поруке" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "Крај:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "Напусти канал:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "Одсутан:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "Одсутан" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Само једном објави одсутност" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "Прикажи исте поруке о одстуности само једном." + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "Склони AWAY кад се вратим" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "Склоните ознаку одсутан са себе пре слања порука." + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "Разно" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "Приказуј приступе у сировом облику" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "WHOIS при обавештењу" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "Шаље /WHOIS када корисник дође на мрежу у Вашој листи обавештења." + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "Сакриј поруке о доласку и одласку" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "Увек сакривај поруке о доласцима и одласцима" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "Сакриј поруке о промени надимка" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "*!*@*.хост" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "*!*@домен" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "*!*корисник@*.хост" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "*!*корисник@домен" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "Аутоматски копирај" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "Аутоматски копирај одабран текст" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "Аутоматски додај информације о бојама" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "Право име:" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "Алтернативни фонтови:" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "Прикажи листе у компактном моду" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "Смањи размак између редова листе корисника и листе канала." + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "Користи време сервера ако је подржано" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "Аутоматски се поново повежи на сервере приликом прекида везе" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "Пауза пре новог повезивања:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "Пауза пре аутоматског повезивања:" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "Врста Бана:" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Записивање" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "Прикажи сачуване линије из претходне сесије" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "Памти оволико линија:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "Омогући логовање конверзација на диск" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "Име дневника:" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=сервер %c=канал %n=мрежа." + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "Уписуј у дневнике време када су поруке стигле" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "Формат за запис датума у дневник:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URL-ови" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "Омогући логовање URL-ова на диск" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "Омогући памћење URL-ова" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "Максимални број URL-ова за памћење:" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(искључено)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "Аутоматски" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "Ваша адреса" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "Повежи се са:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "Корисно само за рачунаре са вишеструким адресама." + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "Преноси датотека" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "Сазнај IP овог рачунара од сервера" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "Упитајте ИРЦ сервер да сазнате вашу адресу. Корисни уколико је права адреса из опсега 192.168.*.*!" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "DCC IP адреса:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "Пријави ову адресу при нуђењу датотека." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "!Вредност порта поставити на нулу за пуни опсег." + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "Заступник (proxy):" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "Име рач.:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Порт:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Врста:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "Користи заступника (proxy) за:" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "Аутентификација заступника" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "Корисничко име:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "Одабери слику" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "Избор директоријума за пријем" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Одабери писмо" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Прегледај..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "Отвори фасциклу података" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Одабери боју" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "Боје текста" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "mIRC боје:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "Локалне боје:" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Први план:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Позадина:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "Одабран текст" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "Боје сучеља" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "Нови подаци:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "Линија ознаке:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "Нова порука:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "Одсутан корисник:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "Истицање:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "Провера правописа:" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "Скидање боја:" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Догађај" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "Звучни запис:" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "Изаберите име звучног записа" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "Звучни запис:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "Прегледај..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "Пусти" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Сучеље" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "Изглед" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Улазни прозор" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Списак корисника" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "Пребацивач канала" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Боје" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Разговори" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "Звукови" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "Напредна" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Подешавање мреже" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Пренос датотека" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Врсте" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "Опција правог имена не може остати празна. Вредност се враћа на „realname“." + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Неке измене ће постати видљиве тек када следећи пут покренете програм." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*УПОЗОРЕЊЕ*\nАутоматско прихватање DCC захтева у кућном\nдиректоријуму је опасно и може се искористити.\nНпр. неко може послати датотеку .bash_profile" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "<i>(нема предлога)</i>" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "Више..." + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "Додаје \"%s\" у речник" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "Игнориши све" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "Правописни предлози" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "Грешка при читању текста" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Овај сигнал је допремио %d аргумената, $%d није исправан" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "Штампај датотеку текстова" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ број" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Уреди догађаје" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "Учитај из..." + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Пробај све" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "У реду" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Обриши списак" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Пресликај овај URL" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Пресликај" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Сними списак у датотеку" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d оп., %d ук." + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "Отвори URL irc://сервер:порт/канал" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "" diff --git a/hexchat/po/sr@latin.po b/hexchat/po/sr@latin.po new file mode 100644 index 0000000..b035baa --- /dev/null +++ b/hexchat/po/sr@latin.po @@ -0,0 +1,6258 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Велимир Майсторов <majstorov@gmail.com>, 2013 +# o Zoltan Čala <zolika@sezampro.yu>, 1999 +# Zlatan Vasović <inactive+ZDroid@transifex.com>, 2013 +# Zlatan Vasović <inactive+ZDroid@transifex.com>, 2013 +# Велимир Майсторов <majstorov@gmail.com>, 2013 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-03 20:10+0000\n" +"Last-Translator: TingPing <tingping@tingping.se>\n" +"Language-Team: Serbian (Latin) (http://www.transifex.com/hexchat/hexchat/language/sr@latin/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sr@latin\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Zauzet sam" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Odlazim" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Mreža" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<nema>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Kanal" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Čekam" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Aktivan" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Neuspelo" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Gotovo" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Poveži se" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Prekinuto" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "Nema pristupa %s\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Greška" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s nudi „%s‟. Da li želite da prihvatite?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "Nema aktivnih DCC-ova\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "_Otvori prozor za razgovor" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "_Pošalji datoteku" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "_Informacije o korisniku (WhoIs)" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "_Dodaj u listu prijatelja" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "_Ignoriši" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "O_peratorove akcije" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Daj opa" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Oduzmi opa" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "Daj reč" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "Oduzmi reč" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Šut/zabr." + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Šut" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "Zabr." + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "Šut i zabr." + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Napusti kanal" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Priključi se..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "Unesite ime kanala:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Veze sa serverima" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Odziv servera" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Sakrij verziju" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Op" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "Deop" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "Ćao" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Razlog da se izbaci %s:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "Razgovor" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Slanje" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Priča" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Obriši" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "" + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* Nije dobra ideja da koristite IRC kao\n administrator. Bolje je napraviti nalog.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "DA " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "NE " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Korisnik %s vas zasipa CTCP zahtevima, ignorišem %s\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s na vezi\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s nije tu\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Niste na kanalu. Probajte sa /join #<kanal>\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Niste na vezi. Probajte sa /server <host> [<port>]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "Server %s već postoji na mreži %s.\n" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "Dodat server %s na mrežu %s.\n" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Već označen odsutan: %s\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "Već označen vraćen.\n" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "Za pokretanje treba imati /bin/sh!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "Dostupne naredbe:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "Korisnikove naredbe:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "Naredbe opisane u dodacima:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Kucajte /HELP <naredba> za pomoć, ili /HELP -l" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Nepoznat argument '%s' je zanemaren." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "" + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "Dodatak nije pronađen.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "Ovaj dodatak se nije učitao.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <ime> <naredba>, dodaje dugme u korisničev spisak komandi" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <naredba>, šalje komandu na sve kanale gde ste povezani" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "ALLCHANL <komanda>, šalje komandu ka svim kanalima na trenutnom serveru" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <komanda>, šalje komandu svim serverima gde ste povezani" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "BACK, postavlja Vas vraćene (ne odsutne)" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <šablon> [<vrsta>], zabrana za sve korisnike obuhvaćene šablonom od pristupa kanalu. Ako su već na kanalu, ne izbacuje ih (za to treba biti „op‟)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <promenljiva> [<vrednost>]" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "CHARSET [<enkoding>], dobija ili podešava enkoding korišćen za trenutnu konekciju" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "" + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <kod|šablon>, traži kod zemlje, npr: au = australija" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <ime> <poruka>, šalje CTCP poruku na dato ime, poput VERSION ili USERINFO" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <ime> - prihvati ponuđenu datoteku\nDCC SEND [-maxcps=#] <ime> <dat> - pošalji nekome datoteku\nDCC PSEND [-maxcps=#] <ime> <dat> - pošalji nekome datoteku, pasivan način\nDCC LIST - pokaži spisak za DCC\nDCC CHAT <ime> - ponudi razgovor preko DCC\nDCC PCHAT <ime> - ponudi razgovor preko DCC, pasivan način\nDCC CLOSE <tip> <ime> <dat> primer:\n /dcc close send peraperić datoteka.tar.gz" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <ime>, sklanja polu-op zvanje za ime na trenutnom kanalu (potreban je„op)‟" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <ime>, briše dugme sa korisničnog spiska" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DELBUTTON <ime>, uklanja zvanje operatora za ime na ovom kanalu" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <ime>, oduzima reč za ime na ovom kanalu" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, isključuje sa servera" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <tekst>, ispisuje tekst" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <naredba>, izvrši naredbu. Ako je data oznaka -o onda se ispisšalje na trenutni kanal, inače se ispisuje u okviru za tekst." + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, šalje procesu SIGCONT" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9], zaustavlja poziv exec u ovoj sesiji. Ako je dato i -9 procesu se šalje SIGKILL" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, šalje procesu SIGSTOP" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, šalje podatke na standardni ulaz procesa" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, prazni red za slanje na ovom serveru" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <rač.> [<port>], prosleđuje preko rač(unara), za port se uzima 23" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <nadimak> [lozinka], ubija dupliran nadimak" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <ime>, daje zvanje polu-op ovom imenu (potreban je op) " + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <lozinka>, prijavljuje Vas na nickserv" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <šablon> <tipovi...> <izbori...>\n šablon - šablon za ime računara, npr. *!*@.aol.com\n tipovi - šta zanemariti, jedan ili više iz skupa:\n PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n izbori - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <ime> [<kanal>], poziva ime da se priključi kanalu, misli se na trenutni ako se ne navede (potreban je op)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <kanal>, priključuje se kanalu" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, traži da se izmeri kašnjenje" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <dat.>, učitava dodatak ili skriptu" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, oduzima zvanje svim polu-operatorima na ovom kanalu (potreban je op)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, oduzima zvanje svim operatorima na ovom kanalu (potreban je op)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <radnja>, šalje opis radnje na ovaj kanal (radnje se pišu u trećem licu, npr. /me skače" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, izbacuje sve druge sa kanala (potreban je op)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, svima na kanalu dodeljuje zvanje operatora (potreban je op)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <ime> <poruka>, šalje CTCP dojavu" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <računar> [<port>]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <ime>, uzimanje novog imena" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [-n network1[,network2,...]] [<nadimak>], prikazuje Vašu listu obaveštenja ili dodaje nekoga na nju" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <ime>, daje zvanje operatora ovom imenu (potreban je op)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<kanal>] [<razlog>], napušta kanal, i to trenutni ako se ne navede" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <ime | kanal>, ispituje ime ili kanal CTCP porukom" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "" + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<reason>], isključuje sa ovog servera" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <tekst>, šalje sirovi tekst serveru" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<rač.>] [<port>] [<lozinka>], može se koristiti i samo /RECONNECT za ponovno spajanje na server ili kao /RECONNECT ALL za ponovno spajanje na sve otvorene servere" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<rač.>] [<port>] [<lozinka>], može se koristiti i samo /RECONNECT za ponovno spajanje na server ili kao /RECONNECT ALL za ponovno spajanje na sve otvorene servere" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <tekst>, šalje tekst kao poruku objektu u ovom prozoru" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <nick> [<file>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <rač.> <port> <kanal>, povezuje se i učlani na kanal" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <rač.> <port> <kanal>, povezuje se i učlani na kanal" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "SERVER [-ssl] <host> [<port>] [<lozinka>], povezuje sa serverom, podrazumevani port je 6667 za normalne konekcije, i 6697 za ssl konekcije" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <rač.> [<port>] [<lozinka>], povezuje se na server, uzima da je port 6667" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-off|-on] [-quiet] <promenljiva> [<vrednost>]" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "SETCURSOR [-|+]<pozicija>, repozicionira kursor u okviru za unos" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "SETTEXT <novi tekst>, zamenjuje tekst u okviru za unos" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<tema>], postavlja temu ako je navedena, inače prikaže trenutnu temu" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <šablon> [<šablon>...], skida zabranu za ove šablone" + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <šablon> [QUIET]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <ime>, ukloni dodatak ili skript" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "" + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, otvara URL u pregledniku mreže" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "USELECT [-a] [-s] <ime1> <ime2> itd, naglašava imena u spisku korisnika kanala" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <ime>, daje reč (potreban je op)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <poruka>, šalje poruku na sve kanale" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <poruka>, šalje poruku svim operatorima na ovom kanalu" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "Upotreba: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nZa ovu naredbu pomoć nije dostupna.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "Ne postoji naredba.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "Pogrešni argumenti za korisničku naredbu.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "Suviše komandi se unakrsno poziva, obustavljam." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "Nema hexchat_plugin_init simbola; da li je ovo stvarno HexChat dodatak?" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Da li ste sigurni da je ovo SSL server i port?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "Računar %s naizgled ne postoji\nProverite podešavanja za IP!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "Neuspeo kontakt sa zastupnikom.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Pokušavam vezu sa sledećim serverom u %s...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "Upozorenje: Skup znakova „%s‟ nije poznat. Za mrežu %s se zato neće koristiti konverzija." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "" + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "" + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "%C24*%O$t%C28$1%O je sada poznat kao %C18$2%O" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O postavlja ban na %C18$2%O" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%UKanal Br.kor. Tema" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "" + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "" + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "" + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "" + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "" + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "" + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "%C24*%O$t%C18$1%O obrisan sa liste obaveštenja." + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "%C20*%O$tIsključen (%C20$1%O)" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "%C24*%O$tPronašao Vaš IP: %C30[%C24$1%C30]%O" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "%O%C18$1%O dodat na listu ignorisanih." + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "%OIgnorisanje na %C18$1%O je promenjeno." + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "%O%C18$1%O obrisan sa liste ignorisanih." + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "%OLista ignorisanja je prazna." + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "%C20*%O$tNe mogu da se priključim %C22$1%C (%C20Kanal je samo za pozvane%O)" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "%C24*%O$tVi ste pozvani na %C22$1%O od %C18$2%O (%C29$3%O)" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "%C29*%O$t%C29MOTD preskočen%O" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "%C20*%O$tNema takvog DCC." + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tSpisak posmatranih je prazan." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "" + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "%C24*$t$1 je otišao ($2)" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "" + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "" + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "%C22*%O$tTema za %C22$1%C je: $2%O" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OKraj spiska za WHOIS." + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "Učitan log od" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** KRAJ ZAPISA U DNEVNIKU U %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** POČETAK ZAPISA U DNEVNIKU U %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "* Ne mogu da otvorim log datoteku (datoteke) za pisanje. Proverite\ndozvole %s" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "Poruka sleva" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "Poruka zdesna" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "IP adresa" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Kor. ime" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "Ime osobe koja se priključuje" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "Kanal na koji se priključuje" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "Računar na kome radi" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Nadimak" + +#: src/common/text.c:980 +msgid "The action" +msgstr "Naredba" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "Oznaka za pristup" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "Prepoznat tekst" + +#: src/common/text.c:987 +msgid "The text" +msgstr "Tekst" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "Poruka" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Ime servera" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "Potvrđene mogućnosti" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "Mogućnosti servera" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "Zatražene mogućnosti" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Stari nadimak" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Novi nadimak" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "Ime osobe koja je promenila temu" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Tema" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "Ime izbacivača" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "Izbačena osoba" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "Kanal" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "Razlog" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "Ime osobe koja odlazi" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "Vreme" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "Kreator" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Ime" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Razlog" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Računar" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "Od koga dolazi" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "Vreme u formatu x.x (videti ispod)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "Kanal na koji ide" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "Zvuk" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "Ime osobe" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "CTCP događaj" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "Ime osobe koja je postavila ključ" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "Ključ" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "Ime osobe koja je postavila ograničenje" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "Ograničenje" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "Ime osobe koja je dodelila opa" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "Ime osobe koja je dobila opa" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "Ime osobe koja je dobila polu-opa" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "Ime osobe koja je dodelila polu-opa" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "Ime osobe koja je dala reč" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "Ime osobe koja je dobila reč" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "Ime osobe koja je zabranila" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "Šablon za zabranu" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "Ime osobe koja je sklonila ključ" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "Ime osobe koja je uklonila ograničenje" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "Ime osobe kojoj je oduzet op" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Ime osobe kojoj je oduzet polu-op" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "Ime osobe kojoj je oduzeta reč" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "Ime osobe koja je postavila isključenje" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "Šablon za isključenje" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "Ime osobe koja je uklonila isključenje" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "Ime osobe koja je pozvala" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "Šablon za poziv" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "Ime osobe koja je uklonila poziv" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "Ime osobe koja je postavila pristup" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "Znak pristupa (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "Oznaka pristupa" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "Kanal na kom stoji" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Puno ime" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Pripadnost kanalu/\"je IRC operator\"" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Podaci o serveru" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Odsutan" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Vreme prijave" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Razlog za odsustvo" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Poruka" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Nalog" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "Pravi user@host" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "Pravi IP" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Ime kanala" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "Sirov brojač ili identifikator" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Tekst" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Ime osobe koja je pozvala" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Korisnici" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "Imena u upotrebi" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Isprobana imena" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Port" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "Prava pristupa" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "Vrsta DCC" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Datoteka" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Ciljna datoteka" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "zn./sek." + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "Putanja" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Mesto" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Veličina" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "DCC tekst" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "Broj posmatranih ulaza" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Stara datoteka" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Nova datoteka" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Primalac" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Šablon rač." + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Ime rač." + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "Paket" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "Sekunde" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "Ime pozvane osobe" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Šablon zabrane" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "Ko je zabranio" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Vreme zabrane" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "Datoteka sa zvučnim zapisom „%s‟ se ne može očitati." + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "Udaljeni računar je prekinuo vezu" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "Veza odbijena" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "Nema putanje do računara" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Vreme za povezivanje je isteklo" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "Ne može se dodeliti ta adresa" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "Veza prekinuta na drugom kraju" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "Ostrvo Uspenja" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Andora" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Ujedinjeni arapski emirati" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "Polja srodna avijaciji" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Avganistan" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Antigva i Barbuda" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Anguila" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Albanija" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Jermenija" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Holandski antili" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Antarktik" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Argentina" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "Obratni DNS" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Američka Samoa" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "Azija-Pacifik region" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Austrija" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "Nato teren" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Australija" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "Alandska ostrva" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Azerbejdžan" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Bosna i Hercegovina" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Bangladeš" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Belgija" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Bugarska" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Bahrein" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "Komercijala" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Bruneji Dar-Es-Salam" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Bolivija" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Brazil" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Bahami" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Butan" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Ostrvo Buve" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Bocvana" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Belorusija" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Kanada" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "Katalonski" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Kokosova ostrva" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "Demokratska republika Kongo" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "Centralnoafrička republika" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Kongo" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "Švajcarska" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "Obala slonovače" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Kukova ostrva" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Čile" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Kamerun" + +#: src/common/util.c:738 +msgid "China" +msgstr "Kina" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Kolumbija" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Komercijalni domeni" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "Zadruge" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Kostarika" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "Srbija i Crna Gora" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Kuba" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Zelenortska ostrva" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Božićna ostrva" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Kipar" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "Republika Češka" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "Istočna Nemačka" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Nemačka" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Džibuti" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Danska" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Dominika" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "Dominikanska republika" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Alžir" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Ekvador" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Obrazovne ustanove" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Estonija" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Egipat" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Zapadna Sahara" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Eritreja" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "Španija" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Etiopija" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "Evropska Unija" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Finska" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Fidži" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Foklendska ostrva" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Mikronezija" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Farska ostrva" + +#: src/common/util.c:770 +msgid "France" +msgstr "Francuska" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Velika Britanija" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Gruzija" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Francuska Gvajana" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "Britanska Kanalska ostrva" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Gana" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Grenland" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Gambija" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Gvineja" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Vladine ustanove" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Gvadalupe" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Ekvatorijalna Gvineja" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Grčka" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "S. Džordžija i S. Sendvička ostrva" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Gvatemala" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Gvineja Bisao" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Gijana" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Herdova i Makdonaldova ostrva" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Hrvatska" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Mađarska" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Indonezija" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Irska" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Izrael" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "Ostrvo Čoveka" + +#: src/common/util.c:801 +msgid "India" +msgstr "Indija" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "Informacioni domen" + +#: src/common/util.c:803 +msgid "International" +msgstr "Međunarodni domeni" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Britanska Indijska ostrva" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Irak" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "Iran" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Island" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Italija" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "Džersi" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Jamajka" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Jordan" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "Poslovi u kompaniji" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Japan" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Kenija" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Kirgistan" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Kambodža" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Komori" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "Sv. Kits i Nevis" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Severna Koreja" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Južna Koreja" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Kuvajt" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Kajmanska ostrva" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Kazahstan" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Liban" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Sveta Lucija" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Lihtenštajn" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Šri Lanka" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Liberija" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Lesoto" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Litvanija" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Luksemburg" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Latvija" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Libija" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Maroko" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Monako" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Moldova" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "Crna Gora" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "Američke medicinske ustanove" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Madagaskar" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Maršalska ostrva" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Vojni domeni" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Makedonija" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Mianmar" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Mongolija" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Makao" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "Mobilni uređaji" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Severna Marijanska ostrva" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Martinik" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Mauritanija" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Monserat" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Mauricijus" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "Muzeji" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Maldivi" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Malavi" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "Meksiko" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Malezija" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Mozambik" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Namibija" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "Imena pojedinaca" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Nova Kaledonija" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Internik mreža" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Norfolška ostrva" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Nigerija" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Nikaragva" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Holandija" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Norveška" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "Novi Zeland" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "Neprofitna organizacija internik" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Francuska Polinezija" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Papua Nova Gvineja" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Filipini" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Poljska" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "Sv. Pjer i Mikelon" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Pitkairn" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Portoriko" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "Zanimanja" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "Palestinska teritorija" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Portugal" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Paragvaj" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Katar" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Reinion" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Rumunija" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "Starovremski ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "Srbija" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Ruska federacija" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Ruanda" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Saudijska Arabija" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Solomonova ostrva" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Sejšeli" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Sudan" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Švedska" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Singapur" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "Sv. Jelena" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Slovenija" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard i Jan Majen ostrva" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "Slovačka republika" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Sijera Leone" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Somalija" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Surinam" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "Južni Sudan" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "Sao Tome i Principe" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Bivši SSSR" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Sirija" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Svazilend" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Turks i Kaikos ostrva" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Čad" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "Servisi internet komunikacije" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "Francuske južne teritorije" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Tajland" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Tadžikistan" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Istočni Timor" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Tunis" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Turska" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "Putovanja i turizam" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Trinidad i Tobago" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Tajvan" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Tanzanija" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Ukrajina" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Velika Britanija" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "Sjedinjene američke države" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Urugvaj" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Uzbekistan" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Grad-država Vatikan" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "Sv. Vinsent i Grenadini" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Venecuela" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "Britanska Devičanska ostrva" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "Američka Devičanska ostrva" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Vijetnam" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "Ostrvlje Valis i Fortuna" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "Zabava za odrasle" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Jemen" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Majot" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Jugoslavija" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Južna Afrika" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Zambija" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Zimbabve" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "Nije moguće povezati se sa magistralom sesije" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "Neuspelo završavanje komande" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "daljinski pristup" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "dodatak za udaljen pristup pomoću DBUSa" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Ne može se dobaviti %s: %s\n" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Tabela znakova" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Pozovi" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "Nije na vezi." + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "Morate izabrati zabrane" + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Šablon" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "Od" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Datum" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Spisak ućutkanih se može otvoriti samo ako je otvoren jezičak za prikaz kanala" + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Ukloni" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Iseci" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Osveži" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Prikazujem %d/%d korisnika na %d/%d kanala." + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Izaberite ime datoteke za izlaz" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "_Priključi se kanalu" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "_Kopiraj ime kanala" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "Kopiraj tekst _teme" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "_Pretraga" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "_Lista preuzimanja" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "Sačuvaj _listu..." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "Prikaži samo:" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "kanali sa" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "za" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "korisnici." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "Pogledajte u:" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Ime kanala" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "Tip pretrage:" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "Jednostavna pretraga:" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "Redovan izraz" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Nađi:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Šalji datoteku za %s" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "Datoteka se mora preuzeti izjedna." + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "Ne mogu da pristupim: %s\n%s.\nNastavljanje nije moguće." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "Datoteka koja je prethodno preuzeta je veća nego ponuđena. Zato nije moguće nastaviti prenos." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "Ne može se nastaviti prenos iste datoteke od dve različite osobe." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Stanje" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Datoteka" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Oba" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "Slanja" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "Preuzimanja:" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "Detalji" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "Datoteka:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "Adresa:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Obustavi" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Prihvati" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Nastavi" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "Otvori direktorijum..." + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Prijem" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Poslato" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "Poč. vreme" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Obriši" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Otkaži" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Snimi" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "Ne povezuj se automatski sa serverima" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "Koristi drugi direktorijum sa podešavanjima" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "Ne učitavaj automatski dodatke" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "Prikaži direktorijum za automatsko učitavanje dodataka" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "Prikaži direktorijum sa korisnikovim podešavanjima" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "Pošalji ovu komandu:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "Otvorite URL ili izvršite komandu u postojećem HexChat-u" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "nivo" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "Prikaži podatke o izdanju" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "Ne može se otvoriti font:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "Zapis za pretragu je prazan.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d bajt(ov)(a)" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Mrežni red slanja: bajtova: %d" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "Ova komanda menja tekst u liniji za unos tako što dovršava nepotpuno ime ili komandu. Ako je polje Data 1 popunjeno, dupli pritisak na tabulator bira poslednje ime, ne sledeće" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "Ovom komandom se možete šetati gore-dole kroz listu imena. Ako je Data 1 postavljeno na bilo šta, kretaćete se na gore, inače na dole" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "Ova komanda proverava da li se poslednja uneta reč nalazi na spisku za zamene, i zamenjuje je ako je pronađe" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "Ova komanda pomera trenutni jezičak za jedno mesto ulevo" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "Ova komanda pomera trenutni jezičak udesno" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "Ova komanda pomera aktivnu grupu jezičaka ulevo" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "Ova komanda pomera aktivnu grupu jezičaka udesno" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "Ubacuje ulaznu liniju u prethodne komande, ali ne šalje serveru" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "Greška pri učitavanju rasporeda tastera" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "Ne može se pisati u tu datoteku." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "Ova se datoteka ne može čitati." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "Ovaj šablon već postoji." + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Privatno" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Vest" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "Prihvati" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "Unesi šablon za ućutkivanje" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Statistika za ućutkane:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Kanal:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privatno:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Vesti:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Poziv:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "Dodaj..." + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "Ime kanala je prekratko, probajte ponovo." + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "Povezivanje sa %s je uspelo." + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "Šta biste želeli sledeće da uradite?" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "_Ništa, priključiću se kanalu kasnije." + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "_Priključi se kanalu:" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Ako znate ime kanala kome se želite priključiti, unesite ga ovde." + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "" + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "_Uvek prikazuj ovo prozorče posle povezivanja." + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "Razgovor sa" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Tema za %s je: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "Tema nije postavljena" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "Ovaj server ima ukupno ovoliko kanala: %d ili dijaloga. Da li želite da ih sve zatvorite?" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "Izlazite iz HexChat-a?" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "Ne pitajte sledeći put." + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Vi ste povezani na %i IRC mreža." + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "Da li ste sigurni da želite da izađete?" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "Neki prenosi datoteka su i dalje aktivni." + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "Ubaci atribut ili kôd za boju" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>Masno</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>Podvučeno</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "Obično" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "Boje 0-7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "Boje 8-15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "_Podešavanja" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "_Loguj na disk" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "_Ekstra upozorenja" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "_Odvoji" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "_Zatvori" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "Maks. broj korisnika mora biti unet kao broj!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "Nema spoljašnjih poruka" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "Zaštita teme" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "Po pozivu" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "Nadgledan" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "Spisak izbačenih" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Ključna reč" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "Maks. ljudi" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Unesite novo ime:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "" + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "" + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "_Istakni sve" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "" + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Nepoznat računar" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Nepoznato" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Pravo ime:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "Korisnik:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "Država:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "Računar:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "pre ovoliko minuta: %u" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "Posl. poruka:" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "Odsutan:" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "%d nadimaka odabrano." + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "Otvori vezu u čitaču" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "Umnoži izabranu vezu" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Idi na kanal" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "Izađi sa kanala" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "Ponovi pristup" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "Zameni sa" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "He_xChat" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "_Nov" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "_Kraj" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "_Pregled" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "_Traka izbornika" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "_Traka teme" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "_Lista korisnika" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "_Dugmeta za način pristupa" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "_Prebacivač kanala" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "_Jezičci" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "_Drvo" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "_Merenja mreže" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Isključeno" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "Grafičko" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "_Server" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "_Isključi se" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "_Opet se poveži" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "_Korisnikov meni" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "P_odešavanja" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "_Postavke..." + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "_Prozor" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "Postavi ovde oznaku" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "_Kopiraj izbor" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "O_čisti tekst" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "Pretraga" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "Pretražite naredno" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "Pretražite prethodno" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "_Pomoć" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "_Sadržaj" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "_O programu" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "_Zakači" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Ime" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Bio je tu" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "Nije na vezi" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Nikada" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "pre %d minuta" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "Na vezi" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "Unesite ime koje treba dodati:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "Obavesti me na ovim mrežama:" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "Lista mreža razdvojena zarezima je dozvoljena." + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "Otvori razgovor" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "_Povrati prozor" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "_Sakrij prozor" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "_Treperi" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "Poruka na kanalu" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "Privatna poruka" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "Istaknuta poruka" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "_Promeni status" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "_Odsutan" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "_Nazad" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Verzija" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Opis" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Izbor dodatka ili skripta za učitavanje" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "_Učitaj..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "Sačuvaj kao..." + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "Obriši dnevnik" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Nova mreža" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Da li zaista treba brisati mrežu \"%s\" i sve servere u njoj?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "Ključ (lozinka)" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "_Uredi" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "Poveži se samo sa izabranim računarima" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Ne ispituj sve računare u spisku kada povezivanje ne uspe." + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "Zaobiđi proxy server" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "Koristi SSL za sve računare u ovoj mreži" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "Koristi glavne podatke o korisniku" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "_Nadimak:" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "Drugi izbor:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "_Pravo ime:" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "_Korisničko ime:" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Lozinka:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "Skup znakova:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "Podaci o korisniku" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "Treći izbor:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Mreže" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "Ne prikazuj spisak mreža pri pokretanju programa" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "Prikaži samo omiljene" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "_Uredi..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "Poređaj" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "_Omiljeno" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "Označite ili uklonite oznaku ove mreže kao omiljene." + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "_Poveži se" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "Afrikans" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Albanski" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "Ahmarski" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "Asturijski" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Azerbejdžanski" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "Baskijski" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Beloruski" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Bugarski" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "Kineski (pojedenostavljen)" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "Kineski (tradicionalni)" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "Češki" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "Danski" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "Holandski" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "Engleski (britanski)" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "Engleski" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Estonski" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "Finski" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "Francuski" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "Galicijski" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "Nemački" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "Grčki" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "Gudžarati" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "Hindi" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "Mađarski" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "Indonežanski" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "Italijanski" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "Japanski" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "Kanađanski" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "Kinjaruanda" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "Korejanski" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "Letonski" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "Litvanski" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "Makedonski" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Malajski" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "Malajalamski" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "Norveški (Bokmal)" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "Norveški (ninorsk)" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "Poljski" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "Portugalski" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "Portugalski (Brazilski)" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "Pandžabski" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "Ruski" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "Srpski" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "Slovački" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "Slovenački" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "Španski" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "Švedski" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Tajlandski" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "Ukrajinski" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Vijetnamski" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "Valonski" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Opšte" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "Jezik:" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "Glavni font:" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Slova:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "Okvir za tekst" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "Oboji imena" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "Dodeli svakoj osobi na IRC-u različitu boju" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "Uravnaj nadimke" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "Uravnaj nadimke po desnoj strani" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "Prikaži liniju za obeležavanje" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "Ubaci crvenu liniju posle poslednje pročitane linije teksta." + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Pozadina:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "Podešavanja providnosti" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "" + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "" + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "Naslovna traka " + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "Prikaži modove kanala" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "Polje za unos" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "Prikaži polje za nadimke" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "Provera pravopisa" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "Rečnici za korišćenje:" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "Koristite kodove jezika. Odvajajte više unosa zarezima." + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "Sufiks za dopunu imena:" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "Sufiks za dopunu imena:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "" + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "Grafički" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "Neuređeno" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Gore" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Dole" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Sakrij" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "Spisak imena" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "Pokaži imena računara" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "Koristi boje i pismo iz kućice za tekst" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "Prikaži ikonice za korisničke modove" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "Prikaži broj korisnika na kanalima" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "Uredi spisak korisnika prema:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "Prikaži listu korisnika na:" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "Praćenje odsutnosti" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "Prati odsutne na kanalima sa manje od:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "Šta izvršiti na dvostruki klik" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "Ekstra gedžeti" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "Merač zaostajanja:" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "Merač smanjenja protoka:" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Prozori" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Jezičci" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "Uvek" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "Samo željeni jezičci" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "Drvo" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "Tip prebacivača:" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "Otvori poseban jezičak za poruke sa servera" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "Otvori novu karticu kada primiš privatnu poruku" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "Uredi jezičke leksikografski" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "Prikaži ikonice na drvetu kanala" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "Manji tekst" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "Fokusiraj nove jezičke:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "Prikaži prebacivač kanala na:" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "Skrati jezičke na:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "slova" + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "Jezičci ili prozori" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "Mesto za prikaz novih kanala:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "Mesto za prikaѕ novih razgovora:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "Mesto za prikaz pomoćnih poruka:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "DCC, Ignore i Notify se otvaraju u jezičcima ili prozorima?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "Poruke" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "Pitaj za potvrdu" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "Pitaj za fasciklu preuzimanja" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "Sačuvaj bez interakcije" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "Datoteke i direktorijumi" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "Odmah prihvati ponuđene datoteke:" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Snimaj datoteke u:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "Pomeri prenesene datoteke u dir.:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "Zapamti nadimke u imenima datotekama" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "Neposredne akcije (DCC) u poseban prozor" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "Prozor za slanje" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "Prozor za prijem" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "Prozor za razgovor" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "Jedno slanje:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "Maks. brzina za jedan prenos" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "Jedno preuzimanje:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "Sva slanja:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "Maks. brzina saobraćaja za sve datoteke" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "Sva preuzimanja:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "Uzbune" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "" + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "Istaknute poruke" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "Ekstra reči za istačinjanje:" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "Nadimci koji se ne ističu:" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "Nadimci koji se uvek ističu:" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "Podrazumevane poruke" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "Kraj:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "Napusti kanal:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "Odsutan:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "Odsutan" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Samo jednom objavi odsutnost" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "Skloni AWAY kad se vratim" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "Sklonite oznaku odsutan sa sebe pre slanja poruka." + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "Prikazuj pristupe u sirovom obliku" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "Šalje /WHOIS kada korisnik dođe na mrežu u Vašoj listi obaveštenja." + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "Sakrij poruke o dolasku i odlasku" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "Automatski kopiraj odabran tekst" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "Alternativni fontovi:" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "Prikaži liste u kompaktnom modu" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "Pauza pre novog povezivanja:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Zapisivanje" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "Pamti ovoliko linija:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "Omogući logovanje konverzacija na disk" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "Ime dnevnika:" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=server %c=kanal %n=mreža." + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "Upisuj u dnevnike vreme kada su poruke stigle" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "Format za zapis datuma u dnevnik:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URL-ovi" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "Omogući logovanje URL-ova na disk" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(isključeno)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "Automatski" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "Vaša adresa" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "Poveži se sa:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "Korisno samo za računare sa višestrukim adresama." + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "Saznaj IP ovog računara od servera" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "Upitajte IRC server da saznate vašu adresu. Korisni ukoliko je prava adresa iz opsega 192.168.*.*!" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "DCC IP adresa:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "Prijavi ovu adresu pri nuđenju datoteka." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "!Vrednost porta postaviti na nulu za puni opseg." + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "Zastupnik (proxy):" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "Ime rač.:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Port:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Vrsta:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "Koristi zastupnika (proxy) za:" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "Autentifikacija zastupnika" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "Korisničko ime:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "Odaberi sliku" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "Izbor direktorijuma za prijem" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Odaberi pismo" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Pregledaj..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "Otvori fasciklu podataka" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Odaberi boju" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "Boje teksta" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "mIRC boje:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "Lokalne boje:" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Prvi plan:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Pozadina:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "Odabran tekst" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "Boje sučelja" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "Novi podaci:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "Linija oznake:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "Nova poruka:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "Odsutan korisnik:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "Isticanje:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "Provera pravopisa:" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "Skidanje boja:" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Događaj" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "Zvučni zapis:" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "Izaberite ime zvučnog zapisa" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "Zvučni zapis:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "Pregledaj..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "Pusti" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Sučelje" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "Izgled" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Ulazni prozor" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Spisak korisnika" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "Prebacivač kanala" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Boje" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Razgovori" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "Napredna" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Podešavanje mreže" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Prenos datoteka" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Vrste" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "" + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Neke izmene će postati vidljive tek kada sledeći put pokrenete program." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*UPOZORENJE*\nAutomatsko prihvatanje DCC zahteva u kućnom\ndirektorijumu je opasno i može se iskoristiti.\nNpr. neko može poslati datoteku .bash_profile" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "<i>(nema predloga)</i>" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "Više..." + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "Dodaje \"%s\" u rečnik" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "Ignoriši sve" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "Pravopisni predlozi" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "Greška pri čitanju teksta" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Ovaj signal je dopremio %d argumenata, $%d nije ispravan" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "Štampaj datoteku tekstova" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ broj" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Uredi događaje" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "Učitaj iz..." + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Probaj sve" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Obriši spisak" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Preslikaj ovaj URL" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Preslikaj" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Snimi spisak u datoteku" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d op., %d uk." + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "Otvori URL irc://server:port/kanal" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "" diff --git a/hexchat/po/sv.po b/hexchat/po/sv.po new file mode 100644 index 0000000..f9d76f8 --- /dev/null +++ b/hexchat/po/sv.po @@ -0,0 +1,6264 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Åke Engelbrektson, 2016 +# Åke Engelbrektson, 2016 +# Anders Jonsson <transifex@norsjovallen.se>, 2016,2018 +# Chessax Nemeth <chessax@hotmail.com>, 2015 +# Jakob <jakob@knugen.nu>, 2012,2014,2016 +# Jakob <jakob@knugen.nu>, 2012 +# Jan Lindblom <janlindblom@fastmail.fm>, 2016 +# obskyr <lpsamuelm@gmail.com>, 2014 +# Luna Jernberg <bittin@cafe8bitar.se>, 2014,2018 +# Luna Jernberg <bittin@cafe8bitar.se>, 2014 +# obskyr <lpsamuelm@gmail.com>, 2014 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-08-07 19:01+0000\n" +"Last-Translator: Anders Jonsson <transifex@norsjovallen.se>\n" +"Language-Team: Swedish (http://www.transifex.com/hexchat/hexchat/language/sv/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sv\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "HexChat" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "IRC klient" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "HexChat är en lättanvänd men även utbyggbar IRC-klient. Den låter dig ansluta säkert till flera nätverk och prata med användare privat eller i kanaler med ett anpassningsbart utseende. Du kan till och med överföra filer." + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "HexChat stödjer funktioner som: DCC, SASL, proxytjänster, stavningskontroll, notifikationer, loggning, egna teman, och Python/Perl-skript." + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "Primärt chattfönster" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "Chatta med andra människor online" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "IM;Chatt;" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "hexchat" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "Öppna säkert läge" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "HexChat temahanterare " + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Jag är upptagen" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Lämnar" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "AV" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "PÅ" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "{orörd}" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Nätverk" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<ingen>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Kanal" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Väntar" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Aktiv" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Misslyckades" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Klar" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Anslut" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Avbruten" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "Kan inte komma åt %s\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Fel" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s erbjuder \"%s\". Accepterar du?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "Inga aktiva DCC:er\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "_Öppna dialogfönster" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "_Skicka en fil" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "_Användarinfo (Whois)" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "_Lägg till i vänlista" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "_Ignorera" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "O_peratörsåtgärder" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Ge kanaloperatörsstatus" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Ta kanaloperatörsstatus" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "Ge röststatus" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "Ta röststatus" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Sparka ut/Bannlys" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Sparka ut" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "Bannlys" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "Sparka ut och bannlys" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Lämna kanal" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Gå in i kanal..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "Ange kanal att gå in i:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Serverlänkar" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Pinga server" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Dölj version" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Ge op" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "Ta bort op" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "hej då" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Ange orsak för att sparka ut %s:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "Skicka fil" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "Dialog" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "VemÄr" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Skicka" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Chatta" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Töm" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "Du har inte skrivrättigheter till %s. Ingenting från den här sessionen kan bli sparat" + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* Att köra IRC som root är dumt! Du bör skapa ett\n användarkonto och använda det för att logga in.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "JA " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "NEJ " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Du CTCP-översvämmas från %s, ignorerar %s\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "Du MSG-översvämmas av %s, stänger AV gui_auto_open_dialog.\n" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "Uppslagen till %s" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "Inga resultat" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "Uppslagen till:" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "Slår upp %s..." + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s ansluten\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s frånkopplad\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Gick inte in i någon kanal. Prova /join #<kanal>\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Inte ansluten. Prova /server <värd> [<port>]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "Servern %s finns redan på nätverket %s.\n" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "Lade till servern %s på nätverk %s.\n" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Redan markerad som frånvarande: %s\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "Redan markerad som tillbaka.\n" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "Jag behöver /bin/sh för att kunna köra!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "Tillgängliga kommandon:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "Användardefinierade kommandon:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "Insticksdefinierade kommandon:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Skriv /HELP <kommando> för ytterligare information, eller /HELP -l" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Okänt argument \"%s\" ignorerades." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "Den här servern stödjer inte tyst läge." + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "Ingen sådan insticksmodul hittades.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "Den insticksmodulen vägrar att glömmas.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <namn> <åtgärd>, lägger till en knapp under användarlistan" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "ADDSERVER <NyttNätverk> <nyserver/6667>, lägger till ett nytt nätverk med en ny server i nätverkslistan" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <kmdo>, skickar ett kommando till alla kanaler du är inne i" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "ALLCHANL <cmd>, skickar ett kommando till alla kanaler på den nuvarande servern" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <kmdo>, skickar ett kommando till alla servrar du är ansluten till" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "AWAY [<orsak>], anger att du är frånvarande (använd /BACK för att återställa)" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "BACK, ställer in dig som tillbaka (inte frånvarande)" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <mask> [<bannlysningstyp>], bannlyser alla som matchar masken från den aktuella kanalen. Om de redan är på kanalen kommer detta inte att sparka ut dem (kräver kanaloperatörsstatus)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <variabel> [<värde>]" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "CHARSET [<kodning>], hämta eller ställ in kodningen som används för den nuvarande anslutningen" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "CLLEAT [ALL|HISTORY|[-]<mängd>], tömmer det nuvarande text-fönstret eller kommando-historiken" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "CLOSE [-m], Stänger nuvarande flik, stänger fönstret om detta är den enda öppna fliken, eller stänger alla förfrågningar med flaggan \"-m\"." + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <kod|jokertecken>, söker efter en landskod, exempelvis se = Sverige" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <smeknamn> <meddelande>, skickar CTCP-meddelandet till smeknamn, vanliga meddelanden är VERSION och USERINFO" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "CYCLE [<kanal>], lämnar aktuell eller angiven kanal och går omedelbart in i den igen" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <smeknamn> - ta emot en erbjuden fil\nDCC SEND [-maxcps=#] <smeknamn> [fil] - skicka en fil till någon\nDCC PSEND [-maxcps=#] <smeknamn> [fil] - skicka en fil i passivt läge\nDCC LIST - visa DCC-lista\nDCC CHAT <smeknamn> - erbjud någon DCC-chatt\nDCC PCHAT <smeknamn> - erbjud DCC-chatt i passivt läge\nDCC CLOSE <typ> <smeknamn> <fil> exempel:\n /dcc close send nisse fil.tar.gz" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <smeknamn>, tar bort halvkanaloperatörsstatus från smeknamnet på den aktuella kanalen (kräver kanaloperatörsstatus)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <namn>, tar bort en knapp under användarlistan" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <smeknamn>, tar bort kanaloperatörsstatus från smeknamnet på den aktuella kanalen (kräver kanaloperatörsstatus)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <smeknamn>, tar bort röststatus från smeknamnet på den aktuella kanalen (kräver kanaloperatörsstatus)" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, kopplar från servern" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "DNS <smeknamn|värd|ip>, löser ett IP eller värdnamn" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <text>, skriver ut text lokalt" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <kommando>, kör kommandot. Om flaggan -o används skickas utdata till den aktuella kanalen, annars skrivs den ut i det aktuella textfältet" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, skickar SIGCONT til processen" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9], dödar en körande exekvering i den aktuella sessionen. Om -9 anges kommer processen att SIGKILL:as" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, skickar SIGSTOP till processen" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, skickar data till processens standard in" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "EXPORTCONF, exporterar HexChat-inställningar" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, tömmer den aktuella serverns sändkö" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <värd> [<port>], tunnlar genom en värd, standardvärde på port är 23" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <smeknamn> [lösenord], dödar ett spökande smeknamn" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <smeknamn>, ger halvkanaloperatörsstatus till smeknamn (kräver kanaloperatörsstatus)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <lösenord>, identifiera dig själv mot nickserv" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <mask> <typer..> <alternativ..>\n mask - värdmask att ignorera, exempelvis: *!*@*.aol.com\n typer - datatyper att ignorera, en eller alla av:\n PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n alternativ - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <smeknamn> [<kanal>], bjuder in någon till en kanal, standardalternativet är den aktuella kanalen (kräver kanaloperatörsstatus)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <kanal>, går in i kanalen" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "KICK <smeknamn> [orsak], sparkar ut smeknamnet från den aktuella kanalen (kräver kanaloperatörsstatus)" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "KICKBAN <smeknamn> [orsak], bannlyser och sparkar sedan ut smeknamn från den aktuella kanalen (kräver kanaloperatörsstatus)" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, tvingar fram en ny eftersläpningskontroll" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "LASTLOG [-h] [-m] [-r] [--] <textsträng>, söker efter en textsträng i bufferten\nAnvänd -h för att markera funna textsträngar\nAnvänd -m för att matcha skiftläge\nAnvänd -r när textsträng är ett reguljärt uttryck\nAnvänd -- (dubbelt bindestreck) för att avsluta alternativ vid sökning av, säg, textsträngen '-r'" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <fil>, läser in en insticksmodul eller ett skript" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, tar bort halvkanaloperatörsstatus från alla halvkanaloperatörer i den aktuella kanalen (kräver kanaloperatörsstatus)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, tar bort kanaloperatörsstatus från alla kanaloperatörer i den aktuella kanalen (kräver kanaloperatörsstatus)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <händelse>, skickar händelsen till den aktuella kanalen (händelserna skrivs i tredje person, som exempelvis /me hoppar)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, sparkar ut alla utom dig själv från den aktuella kanalen (kräver kanaloperatörsstatus)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, ger kanaloperatörsstatus till alla användare i den aktuella kanalen (kräver kanaloperatörsstatus)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "MSG <smeknamn> <meddelande>, skickar ett privat meddelande, skicka till \".\" för senaste smeknamn eller lägg till \"=\" före smeknamnen för dcc chatt." + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "NAMES [kanal], listar smeknamn på kanal" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <smeknamn> <meddelande>, skickar en CTCP-notis" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <värdnamn> [<port>]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <smeknamn>, ställer in ditt smeknamn" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "NOTICE <smeknamn/kanal> <meddelande>, skickar en notis" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [-n nätverk1[,nätverk2,...]] [<smeknamn>], visar din notifieringslista eller lägger till någon till den" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <smeknamn>, ger kanaloperatörsstatus till smeknamn (kräver kanaloperatörsstatus)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<kanal>] [<orsak>], lämnar kanalen, standardalternativet är den aktuella kanalen" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <smeknamn | kanal>, CTCP-pingar smeknamn eller kanal" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "QUERY [-nofocus] <smeknamn> [meddelande], öppnar upp ett nytt privmsg fönster för någon och skickar eventuellt meddelande" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "QUIET <mask> [<tysttyp>], tysta alla som matchar masken i aktuell kanal om servern stödjer det." + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<orsak>], kopplar från den aktuella servern" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <text>, skickar texten i rå form till servern" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<värd>] [<port>] [<lösenord>], kan anropas bara som /RECONNECT för att återansluta till den aktuella servern eller med /RECONNECT ALL för att återansluta till alla de öppna servrarna" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<värd>] [<port>] [<lösenord>] [<ssl>] [<acceptera_ogiltigt_cert>], kan anropas bara som /RECONNECT för att återansluta till den aktuella servern eller med /RECONNECT ALL för att återansluta till alla de öppna servrarna" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "RECV <text>, skickar rådata till HexChat som om det togs emot från IRC servern" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "RELOAD <namn>, laddar om en insticksmodul eller ett skript" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <text>, skickar texten till objektet i det aktuella fönstret" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <smeknamn> [<fil>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <värd> <port> <kanal>, ansluter och går in i en kanal" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <värd> <port> <kanal>, ansluter och går in i en kanal" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "SERVER [-ssl] <host> [<port>] [<password>], ansluter till en server, standardport är 6667 för normala anslutningar och 6697 för ssl anslutningar" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <värd> [<port>] [<lösenord>], ansluter till en server, standardporten är 6667" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-off|-on] [-quiet] <variabel> [<värde>]" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "SETCURSOR [-|+]<position>, positionerar om markören i inmatningsfältet" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "SETTAB <nytt namn>, ändra en fliks namn, tab_trunc gäller fortfarande" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "SETTEXT <ny text>, ersätter texten i inmatningsfältet" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<ämne>], ställer in ämnet om något anges, annars visar det aktuellt ämne" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "\nTRAY -f <tidsgräns> <fil1> [<fil2>] Blinka lådan mellan två ikoner.\nTRAY -f <filnamn> Ställ in lådan till en fast ikon.\nTRAY -i <nummer> Blinka lådan med en intern ikon.\nTRAY -t <text> Ställ in verktygstips för lådan.\nTRAY -b <titel> <text> Ställ in ballongtext för lådan." + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <mask> [<mask>...], tar bort bannlysning för angivna masker." + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <mask> [QUIET]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <namn>, glömmer en insticksmodul eller ett skript" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "UNQUIET <mask> [<mask>...], ta bort tyst för angivna masker om servern stödjer det." + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, öppnar en URL i din webbläsare" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "USELECT [-a] [-s] <smeknamn1> <smeknamn2> etc, färgmärker smeknamn i kanalens användarlista" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <smeknamn>, ger röststatus till någon (kräver kanaloperatörsstatus)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <meddelande>, skriver meddelandet i alla kanaler" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <meddelande>, skickar meddelandet till alla kanaloperatörer på den aktuella kanalen" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "Användarkommando för: %s\n" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "Användning: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nIngen hjälp tillgänglig för det kommandot.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "Det finns inget sådant kommando.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "Felaktiga argument i användarkommando.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "För många rekursiva användarkommandon, avbryter." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "Okänt kommando %s. Prova /help\n" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "Ingen hexchat_plugin_init symbol; är detta verkligen en HexChat-insticksmodul?" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "*\tHanterar ident-förfrågan från %s som %s" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "*\tFel vid start av identd-server: %s" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "IDENTD <port> <användarnamn>" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "Timer %d raderad.\n" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "Inget sådant ref-nummer hittades.\n" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "Inga timers installerade.\n" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "Ref# sekunder repetera kommando\n" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "%5d %8.1f %7d %s\n" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Är du säker på att detta är en SSL-kapabel server och port?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "Kan inte slå upp värdnamnet %s\nKontrollera dina IP-inställningar!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "Proxytraversering misslyckades.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Byter till nästa server i %s...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "Varning: Teckentabellen \"%s\" är okänd. Ingen konvertering kommer att tillämpas för nätverket %s." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "%C18*%O$t%C18$1%O tillagd till notifieringslista." + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "%C22*%O$t%C22$1%O: %C18$2%O på %C24$4%O av %C26$3%O" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "%C22*%O$tKan inte gå in i %C22$1 %O(%C20Du är bannlyst%O)." + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "%C29*%O$tErkända förmågor: %C29$2%O" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "%C29*%O$tFörmågor raderade: %C29$2%O" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "%C23*%O$tStödda förmågor: %C29$2%O" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "%C23*%O$tBegärda förmågor: %C29$1%O" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "%C24*%O$t%C28$1%O är nu känd som %C18$2%O" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O sätter bannlysning på %C18$2%O" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "%C22*%O$tKanal %C22$1%O skapad på %C24$2%O" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O tar bort halvkanalsoperatörsstatus från %C18$2%O" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O tar bort kanaloperatörsstatus från %C18$2%O" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O tar bort röst från %C18$2%O" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%C sätter undantagen på %C18$2%O" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O ger halvkanaloperatörsstatus till %C18$2%O" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%C sätter inbjudan undantagen på %C18$2%O" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%UKanal Användare Ämne" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "%C22*%O$t%C26$1%O sätter läge %C24$2$3%O på %C22$4%O" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "%C22*%O$tKanal %C22$1%O moder: %C24$2" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O ger kanaloperatörsstatus till %C18$2%O" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O sätter tyst på %C18$2%O" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O tar bort undantag on %C18$2%O" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O tar bort inbjudan undantag på %C18$2%O" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "%C22*%O$t%C26$1%O tar bort kanalnyckelord" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "%C22*%O$t%C26$1%O tar bort användargräns" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O sätter kanalnyckelord till %C24$2%O" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O sätter kanalgräns till %C24$2%O" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O tar bort bannlysning på %C18$2%O" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O tar bort tyst på %C18$2%O" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "%C22*%O$tKanal %C22$1%O url: %C24$2" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O ger röst till %C18$2%O" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "%C23*%O$tAnsluten. Loggar in nu." + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "%C23*%O$tAnsluter till %C29$1%C (%C23$2:$3%O)" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "%C20*%O$tAnslutning misslyckades (%C20$1%O)" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "%C24*%O$tTog emot CTCP %C24$1%C från %C18$2%O" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "%C24*%C$tTog emot en CTCP %C24$1%C från %C18$2%C (till %C22$3%C)%O" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "%C24*%O$tTog emot ett CTCP Ljud %C24$1%C från %C18$2%O" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "%C24*%O$tTog emot ett CTCP Ljud %C24$1%C från %C18$2%C (till %C22$3%O)" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "%C23*%O$tDCC CHAT till %C18$1%O avbruten." + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "%C24*%O$tDCC CHAT-anslutning etablerad till %C18$1%C %C30[%C24$2%C30]%O" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "%C20*%O$tDCC CHAT till %C18$1%O förlorad (%C20$4%O)" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "%C24*%O$tTog emot en DCC CHAT-erbjudan från %C18$1%O" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "%C24*%O$tErbjuder DCC CHAT till %C18$1%O" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "%C24*%O$tErbjuder redan CHAT till %C18$1%O" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "%C20*%O$tDCC $1 anslutningsförsök till %C18$2%O misslyckades (%C20$3%O)" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "%C23*%O$tTog emot '%C23$1%C' från %C18$2%O" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "%C20*%O$tTog emot en felaktigt formulerad DCC begäran från %C18$1%O.$a010%C23*%O$tPaketets innehåll: %C23$2%O" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "%C24*%O$tErbjuder '%C24$1%O' till %C18$2%O" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "%C23*%O$tIngen sådan DCC-erbjudan." + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "%C23*%O$tDCC RECV '%C23$2%O' till %C18$1%O avbruten." + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "%C24*%O$tDCC RECV '%C23$1%O' från %C18$3%O färdig %C30[%C24$4%O cps%C30]%O" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$tDCC RECV anslutning etablerad till %C18$1 %C30[%O%C24$2%C30]%O" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "%C20*%O$tDCC RECV '%C23$1%O' från %C18$3%O misslyckades (%C20$4%O)" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "%C20*%O$tDCC RECV: Kan inte öppna '%C23$1%C' för skrivning (%C20$2%O)" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "%C23*%O$tFilen '%C24$1%C' finns redan, sparar som '%C23$2%O' istället." + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "%C24*%O$t%C18$1%C har begärt återupptagande '%C23$2%C' från %C24$3%O." + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "%C23*%O$tDCC SEND '%C23$2%C' till %C18$1%O avbruten." + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "%C24*%O$tDCC SEND '%C23$1%C' till %C18$2%C färdig %C30[%C24$3%C cps%C30]%O" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$tDCC SEND anslutning etablerad till %C18$1 %C30[%O%C24$2%C30]%O" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "%C20*%O$tDCC SEND '%C23$1%C' till %C18$2%C misslyckades (%C20$3%O)" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "%C24*%O$t%C18$1%C har erbjudit '%C23$2%C' (%C24$3%O byte)" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "%C20*%O$tDCC $1 '%C23$2%C' till %C18$3%O avstannade, avbruter." + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "%C20*%O$tDCC $1 '%C23$2%C' till %C18$3%O löpte ut, avbryter." + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "%C24*%O$t%C18$1%O borttagen från notifieringslista." + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "%C20*%O$tFrånkopplad (%C20$1%O)" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "%C24*%O$tHittade ditt IP: %C30[%C24$1%C30]%O" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "%O%C18$1%O tillagd till ignoreringslista." + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "%OIgnorering på %C18$1%O ändrad." + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "%O%C18$1%O togs bort från ignoreringslista." + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "%OIgnoreringslista är tom." + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "%C20*%O$tKan inte gå in i %C22$1%C (%C20Kanal är enbart inbjudan%O)" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "%C24*%O$tDu har blivit inbjuden till %C22$1%O by %C18$2%O (%C29$3%O)" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "%C23*$t$1 ($3%C23) har gått in" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "%C20*%O$tKan inte ansluta %C22$1%C (%C20Kräver nyckelord%O)" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "%C22*%O$t%C26$1%C har sparkat ut %C18$2%C från %C22$3%C (%C24$4%O)" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "%C19*%O$t%C19Du har dödats av %C26$1%C (%C20$2%O)" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "%C29*%O$t%C29Hoppade över MOTD%O" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "%C23*%O$t%C28$1%C används redan. Försöker med %C18$2%O..." + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "%C23*%O$t%C28$1%C är felaktig. Försöker igen med %C18$2%O..." + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "%C20*%O$tSmeknamn är felaktigt eller används redan. Använd /NICK för att prova ett annat." + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "%C20*%O$tIngen sådan DCC." + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "%C23*%O$tIngen process körs just nu" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "%C23*%O$tNotifiera: %C18$1%C är frånvarande (%C24$2%O)" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "%C23*%O$tNotifiera: %C18$1%C är tillbaka" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tNotifieringslistan är tom." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "%C23*%O$t%C23$1%O användare i notifieringslista." + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "%C23*%O$tNotifiera: %C18$1%C är frånkopplad (%C29$3%O)" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "%C23*%O$tNotifiera: %C18$1%C är uppkopplad (%C29$3%O)" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "%C24*$t$1 ($2%C24) har lämnat" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "%C24*$t$1 ($2%C24) har lämnat ($4)" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "%C24*%O$tPing-svar från %C18$1%C: %C24$2%O sekund(er)" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "%C20*%O$tInget ping-svar under %C24$1%O sekunder, kopplar från." + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "%C24*%O$tEn process körs redan" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "%C24*$t$1 har avslutat ($2)" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "%C24*%O$t%C26$1%C sätter lägen %C30[%C24$2%C30]%O" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "%O-%C29$1/Wallops%O-$t$2" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "%C24*%O$tSlår up IP nummer för %C18$1%O..." + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "%C23*%O$tAutentiserar via SASL som %C18$1%O (%C24$2%O)" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "%C29*%O$tAnsluten." + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "%C29*%O$tSlår upp %C29$1%O" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "%C23*%O$tStoppade tidigare anslutningsförsök (%C24$1%O)" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "%C22*%O$tÄmne för %C22$1%C är: $2%O" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "%C22*%O$t%C26$1%C har bytt ämnet till: $2%O" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "%C22*%O$tÄmne för %C22$1%C satt av %C26$2%C (%C24$3%O)" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C20*%O$tOkänd värd. Kanske stavade du det fel?" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "%C20*%O$tKan inte gå in %C22$1%C (%C20Användargräns nådd%O)" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "%C22*%O$tAnvändare på %C22$1%C: %C24$2%O" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%C är frånvarande %C30(%C23$2%O%C30)%O" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "%C23*%O$t%C28[%C18$1%C28] %OSlut på WHOIS-lista." + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O inaktiv %C23$2%O" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O inaktivt %C23$2%O, signon: %C23$3%O" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O Verklig Värd: %C23$2%O, Verklig IP: %C30[%C23$3%C30]%O" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "%C19*%O$tPratar nu på %C22$2%O" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "%C19*%O$tDu har sparkats ut från %C22$2%C av %C26$3%O (%C20$4%O)" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "%C19*%O$tDu har lämnat kanal %C22$3%O" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "%C19*%O$tDu har lämnat kanal %C22$3%C (%C24$4%O)" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "%C20*%O$tDu har bjudit in %C18$1%O till %C22$2%O (%C24$3%O)" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "%C20*%O$tDu är nu känd som %C18$2%O" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "Läste in logg från" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** AVSLUTADE LOGGANDE VID %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** PÅBÖRJADE LOGGANDE VID %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "* Kan inte öppna log fil(er) för skrivning. Kolla\nbehörigheter på %s" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "Vänstermeddelande" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "Högermeddelande" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "IP-adress" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Användarnamn" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "Smeknamnet på personen som går in" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "Kanalen som gås in i" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "Personens värddator" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "Kontot för personen" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Smeknamn" + +#: src/common/text.c:980 +msgid "The action" +msgstr "Åtgärden" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "Lägestecken" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "Identifierad text" + +#: src/common/text.c:987 +msgid "The text" +msgstr "Texten" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "Meddelandet" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Servernamn" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "Erkända förmågor" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "Raderade förmågor" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "Serverförmågor" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "Begärda förmågor" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Gammalt smeknamn" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Nytt smeknamn" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "Smeknamnet på personen som ändrade ämnet" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Ämne" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "Smeknamnet på den som sparkar ut" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "Personen som blir utsparkad" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "Kanalen" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "Orsaken" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "Smeknamnet på den person som lämnar" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "Tiden" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "Skaparen" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Smeknamn" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Orsak" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Värd" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "Vem det är från" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "Tiden i x.x-format (se nedan)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "Kanalen som det går till" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "Ljudet" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "Smeknamnet på personen" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "CTCP-händelsen" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "Smeknamnet på personen som satte lösenordet" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "Lösenordet" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "Smeknamnet på personen som satte gränsen" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "Gränsen" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "Smeknamnet på personen som gav operatörsstatus" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "Smeknamnet på personen som har givits operatörsstatus" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "Smeknamnet på personen som har givits halvoperatörsstatus" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "Smeknamnet på personen som gav halvoperatörsstatus" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "Smeknamnet på personen som gav röststatus" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "Smeknamnet på personen som har givits röststatus" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "Smeknamnet på personen som gjorde bannlysningen" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "Bannlysningsmasken" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "Smeknamnet för personen som tystade" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "Tystmasken" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "Smeknamnet som tog bort lösenordet" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "Smeknamnet som tog bort gränsen" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "Smeknamnet på personen som tog bort operatörsstatus" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "Smeknamnet på personen som har fråntagits operatörsstatus" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "Smeknamnet på personen som fråntog halvoperatörsstatus" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Smeknamnet på personen som har fråntagits halvoperatörsstatus" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "Smeknamnet på personen som fråntog röststatus" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "Smeknamnet på personen som har fråntagits röststatus" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "Smeknamnet på personen som tog bort bannlysningen" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "Smeknamnet för personen som tog bort tyst" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "Smeknamnet på personen som gjorde undantaget" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "Undantagsmasken" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "Smeknamnet på personen som tog bort undantaget" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "Smeknamnet på personen som gjorde inbjudan" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "Inbjudningsmasken" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "Smeknamnet på personen som tog bort inbjudan" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "Smeknamnet på personen som satte läget" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "Lägestecknet (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "Lägesbokstaven" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "Kanalen som det ställs in på" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Fullständigt namn" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Kanalmedlemskap/\"är en IRC-operatör\"" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Serverinformation" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Inaktivitetstid" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Inloggningstid" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Frånvaroskäl" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Meddelande" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Konto" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "Verklig användare@värd" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "Verkligt IP" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Kanalnamn" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "Mekanism" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "Rå numerisk eller identifierare" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Text" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Smeknamnet på personen som bjöd in dig" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Användare" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "Smeknamnet används redan" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Smeknamnet provas" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Port" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "Lägessträng" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "DCC-typ" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Filnamn" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Målfilnamn" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "Sökväg" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Position" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Storlek" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "DCC-sträng" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "Frånvaroorsak" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "Antal notifieringsobjekt" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Gammalt filnamn" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Nytt filnamn" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Mottagare" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Värdmask" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Värdnamn" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "Paketet" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "Sekunder" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "Smeknamnet på personen som bjudits in" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Bannlysningsmask" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "Vem som gjorde bannlysningen" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Bannlysningstid" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "Kan inte läsa ljudfilen:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "Fjärrvärden stängde uttaget (socket)" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "Uppkoppling nekas" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "Ingen väg till värden" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Anslutningen gjorde time-out" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "Kan inte tilldela den adressen" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "Anslutningen nollställdes av motparten" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "Ascension Island" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Förenade Arabemiraten" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "Flygrelaterade områden" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Afghanistan" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Antigua och Barbuda" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Albanien" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Armenien" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Nederländska Antillerna" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Antarktis" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Argentina" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "Omvänd DNS" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Samoa" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "Asien/Stillahavsområdet" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Österrike" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "Nato" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Australien" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "Åland" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Azerbajdzjan" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Bosnien och Hercegovina" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Bangladesh" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Belgien" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Bulgarien" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Bahrain" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "Företag" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Brunei" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Bolivia" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Brasilien" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Bahamas" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Bhutan" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Bouvetön" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Vitryssland" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Kanada" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "Katalanska" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Kokosöarna" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "Demokratiska republiken Kongo" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "Centralafrikanska republiken" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Kongo" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "Schweiz" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "Elfenbenskusten" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Cooköarna" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Chile" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Kamerun" + +#: src/common/util.c:738 +msgid "China" +msgstr "Kina" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Colombia" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Internic, kommersiellt" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "Kooperativ" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "Serbien och Montenegro" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Kuba" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Kap Verde" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Julön" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Cypern" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "Tjeckien" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "Östtyskland" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Tyskland" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Djibouti" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Danmark" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Dominica" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "Dominikanska republiken" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Algeriet" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Ecuador" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Utbildningsväsende" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Estland" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Egypten" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Västsahara" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "Spanien" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Etiopien" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "Europeiska gemenskapen" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Finland" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Fiji" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Falklandsöarna" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Mikronesien" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Färöarna" + +#: src/common/util.c:770 +msgid "France" +msgstr "Frankrike" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Storbritannien" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Georgien" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Franska Guyana" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "Brittiska kanalöarna" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Ghana" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Grönland" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Regering" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Guadeloupe" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Ekvatorialguinea" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Grekland" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Sydgeorgien och Södra Sandwichöarna" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Guinea-Bissau" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Guyana" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Heard- och McDonaldöarna" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Kroatien" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Ungern" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Indonesien" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Irland" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Israel" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "Isle of Man" + +#: src/common/util.c:801 +msgid "India" +msgstr "Indien" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "Informativ" + +#: src/common/util.c:803 +msgid "International" +msgstr "Internationellt" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Brittiskt territorium i Indiska Oceanen" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Irak" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "Iran" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Island" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Italien" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Jamaica" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Jordanien" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "Företags jobb" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Japan" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Kenya" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Kirgizistan" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Kambodja" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Komorerna" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "St. Kitts och Nevis" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Nordkorea" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Sydkorea" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Kuwait" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Caymanöarna" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Kazakstan" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Libanon" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Sankt Lucia" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Liberia" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Litauen" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Luxemburg" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Lettland" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Libyen" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Marocko" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Monaco" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Moldavien" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "Montenegro" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "Förenta Staterna, medicinskt" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Madagaskar" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Marshallöarna" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Militärt" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Makedonien" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Myanmar (Burma)" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Mongoliet" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Macao" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "Mobila enheter" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Norra Marianeröarna" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Martinique" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Mauretanien" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Mauritius" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "Museum" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Maldiverna" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "Mexiko" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Malaysia" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Moçambique" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Namibia" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "Individens namn" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Nya Kaledonien" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Nigeria" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Internic, nätverk" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Norfolköarna" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Nigeria" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Nederländerna" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Norge" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "Nya Zeeland" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "Internic, ideell organisation" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Polynesien" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Papua Nya Guinea" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Filippinerna" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Polen" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "St. Pierre och Miquelon" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Puerto Rico" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "Yrken" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "Palestinska territoriet" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Portugal" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Paraguay" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Qatar" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Réunion" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Rumänien" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "Gammaldags ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "Serbien" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Ryska Federationen" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Rwanda" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Saudiarabien" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Solomonöarna" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Seychellerna" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Sudan" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Sverige" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Singapore" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "St. Helena" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Slovenien" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard och Jan Mayenöarna" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "Slovakien" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Somalia" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Surinam" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "Syd Sudan" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "São Tomé och Principe" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Före detta USSR" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Syrien" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Swaziland" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Turks- och Caicosöarna" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Tchad" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "Internetkommunikationstjänster" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "Franska Sydterritorierna" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Thailand" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Tadzjikistan" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Östtimor" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Tunisien" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Turkiet" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "Resande och turism" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Trinidad och Tobago" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Tanzania" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Ukraina" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Storbritannien" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "Förenta Staterna" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Uruguay" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Uzbekistan" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Vatikanstaten" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "St. Vincent och Grenadinerna" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "Brittiska Jungfruöarna" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "Jungfruöarna (USA)" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "Wallis- och Futunaöarna" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "Erotik" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Jemen" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Jugoslavien" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Sydafrika" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Zambia" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "Kunde inte ansluta till sessionsbuss" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "Misslyckades med att färdigställa NameHasOwner" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "Misslyckades med att färdigställa kommando" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "fjärråtkomst" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "insticksmodul för fjärråtkomst via DBUS" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Kunde inte ansluta till sessionsbuss: %s\n" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Misslyckades med att ta över %s: %s\n" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Teckenkarta" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "Bannlys" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "Undantag" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "Undantag" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "Inbjudningar" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Inbjudning" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "Tystningar" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "Tysta" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "Kopieringsmask" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "%s på %s av %s" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "Kopiera post" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "Inte ansluten." + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "Du måste välja några bannlysningar." + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "Är du säker på att du vill ta bort alla objekt i %s?" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "Typ" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Mask" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "Från" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Datum" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Du kan endast öppna bannlysningslistan inne i kanalfliken." + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "Bannlysningslista (%s) - %s" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Ta bort" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Kapa" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Uppdatera" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Visar %d/%d användare i %d/%d kanaler." + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Välj ett namn på utfilen" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "_Gå in i kanalen" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "_Kopiera kanalnamn" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "Kopiera _ämnestext" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr " Kanallista (%s) - %s" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "_Sök" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "_Hämta lista" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "Spara _lista..." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "Visa endast:" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "kanaler med" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "till" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "användare." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "Leta i:" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Kanalnamn" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "Söktyp:" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "Enkel sökning" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "Mönstermatchning (jokertecken)" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "Reguljärt uttryck" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Sök:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Skicka filen till %s" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "Den filen kan inte återupptas." + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "Kan inte komma åt fil: %s\n%s.\nÅterupptagning inte möjlig." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "Filen i hämtningskatalogen är större än den fil som erbjudits. Återupptagning är inte möjlig." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "Kan inte återuppta samma fil från två personer." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "Sändningar och hämtningar - %s" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Status" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Fil" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "Beräknad tid" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Både och" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "Sändningar" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "Hämtningar" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "Detaljer" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "Fil:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "Adress:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Avbryt" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Acceptera" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Återuppta" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "Öppna mapp..." + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "DCC Chat-lista - %s" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Mottaget" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Skickat" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "Starttid" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "Lägg till" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Ta bort" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Avbryt" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Spara" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "Anslut inte automatiskt till servrar" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "Använd en annan konfigurationskatalog" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "Läs inte automatiskt in några insticksmoduler" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "Visa insticksmodul/skript autostart katalog" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "Visa katalog för användarkonfiguration" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "Öpnna en irc://server:port/channel?key URL" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "Startkommando:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "Öppna URL eller kör kommando i en existerande HexChat" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Starta minimerad. Nivå 0=Normal 1=Ikonifierad 2=Aktivitetsfält" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "nivå" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "Visa versionsinformation" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "Misslyckades med att öppna typsnitt:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "Sökbufferten är tom.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d byte" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Sändkö för nätverket: %d byte" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "Körkommandot kör datan i Data 1 som om den hade skrivits in i inmatningsfältet där du angav tangentsekvensen. Därför kan det innehålla text (som kommer att skickas till kanalen/personen), kommandon eller användarkommandon. Vid körning används alla \\n-tecken i Data 1 för att avgränsa separata kommandon så det är möjligt att köra mer än ett kommando. Om du vill ha ett faktiskt \\ i texten som körs så ange \\\\" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "Byt sida-kommandot byter mellan olika sidor i anteckningsboken. Sätt Data 1 till sidan du will byta till. Om data 2 är satt till någonting så kommer bytet vara relativt till nuvarande position. Sätt Data 1 till auto för att byta till sidan med nyast och viktigast aktivitet (query först, sedan kanaler med färgmarkeringar, kanaler med dialog, kanaler med annan data)" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "Kommandot Infoga i buffert kommer att infoga innehållet i Data 1 i fältet där tangentkombinationen trycktes vid nuvarande markörposition" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "Rulla sida-kommandot rullar textmanicken upp eller ned en sida eller en rad. Sätt data 1 till antingen Top, Bottom, Up, Down, +1 eller -1." + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "Kommandot Ställ in buffert ställer in fältet där tangentkombinationen trycktes till innehållet i Data 1" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "Kommandot Senaste kommando gör att fältet innehåller det senast angivna kommandot - samma som att trycka uppåtpil i skalet" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "Kommandot Nästa kommando gör att fältet innehåller nästa kommando som angavs - samma som att trycka nedåtpil i skalet" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "Detta kommando ändrar texten i fältet för att komplettera ett inkomplett smeknamn eller kommando. Om Data 1 är satt kommer dubbla tabulatortryck i en sträng att välja det senaste smeknamnet, inte nästa" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "Detta kommando rullar upp och ner i listan med smeknamn. Om Data 1 är satt till någonting rullar det upp, annars rullar det ner" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "Detta kommando kontrollerar det senast angivna ordet i fältet mot ersättningslistan och ersätter det om det hittar en träff" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "Detta kommando flyttar den främsta fliken ett steg till vänster" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "Detta kommando flyttar den främsta fliken ett steg till höger" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "Detta kommando flyttar den aktuella fliken ett steg till vänster" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "Detta kommando flyttar den aktuella fliken ett steg till höger" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "Spara indataraden i historiken men skicka inte den till servern" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "Det inträffade ett fel vid inläsning av tangentbindningskonfigurationen" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "Välj en rad för att få hjälpinformation på dess åtgärd." + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "Tangentbordsgenvägar - %s" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "Kan inte skriva till den filen." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "Kan inte läsa den filen." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "Den masken finns redan." + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Privat" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Notis" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "Ta bort ignorering" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "Är du säker på att du vill ta bort alla ignoreringar?" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "Ange mask att ignorera:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "Ignoreringslista - %s" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Ignoreringsstatistik:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Kanal:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privat:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Notis:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Inbjudan:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "Lägg till..." + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "Kanalnamn för kort, försök igen." + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "Anslutningen klar - %s" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "Anslutning till %s klar." + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "I serverlistfönstret har ingen kanal (chattrum) angetts för att gå in i automatiskt för detta nätverk." + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "Vad vill du göra härnäst?" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "_Ingenting, jag går in i en kanal senare." + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "_Gå in i denna kanal:" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Om du vet namnet på kanalen du vill gå in i, ange den här." + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "Ö_ppna kanallistan." + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "Att hämta kanallistan kan ta en minut eller två." + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "_Visa alltid denna dialog efter anslutning." + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "Dialog med" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Ämnet för %s är: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "Inget ämne är satt" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "Denna server har fortfarande %d kanaler eller dialoger associerade med den. Stänga dem alla?" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "Avsluta HexChat?" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "Fråga inte nästa gång." + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Du är ansluten till %i IRC-nätverk." + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "Är du säker på att du vill avsluta?" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "En del filöverföringar är fortfarande aktiva." + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "_Minimera till aktivitetsfält" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "Infoga attribut eller färgkod" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>Fet</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>Understruken</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "<i>kursiv</i>" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "Normal" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "Färgerna 0-7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "Färgerna 8-15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "_Inställningar" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "_Logga till disk" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "_Läs om historik" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "Rensa _färger" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "_Dölj meddelanden om ingång/utgång" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "Ytterligare _larm" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "Pip vid _meddelande" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "Blinka aktivitetsfälts_ikonen" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "Blinka _verktygsraden" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "_Frigör" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "S_täng" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "Användargränsen måste vara en siffra!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "Filtrera färger" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "Inga meddelanden från utomstående" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "Ämnesskydd" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "Kräver inbjudan" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "Modererad" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "Bannlysningslista" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Lösenord" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "Användargräns" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Ange nytt smeknamn:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "Inga resultat funna." + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "Sökning nådde slutet eller ej funnen." + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "_Markera allt" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "Färgmarkera alla förekomster och stryk under aktuell förekomst." + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "Mat_cha skiftläge" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "Genomför en skiftlägeskänslig sökning." + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "_Regex" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "Betrakta söksträngen som ett reguljärt uttryck." + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Värden okänd" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "Okänt konto" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Okänd" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Verkligt namn:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "Användare:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "Konto:" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "Land:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "Server:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "%u minuter sedan" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "Senaste medd:" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "Frånvaromedd:" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "%d smeknamn markerade." + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "Menyraden är nu dold. Du kan visa den genom att trycka Kontroll+F9 eller högerklicka på en tom del av huvudtextrutan." + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "Öppna länk i webbläsare" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "Kopiera markerad länk" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Gå in i kanalen" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "Lämna kanal" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "Rotera kanal" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "_Gå in automatiskt" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "Gå in i kanal automatiskt" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "_Automatisk anslutning" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "Användarmeny - %s" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "Redigera denna meny" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "Markeringsrad inaktiverad." + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "Markeringsrad aldrig satt." + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "Markeringsrad återställd manuellt." + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "Markeringsrad återställd eftersom historikgräns överskridits." + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "Markeringsrad återställd genom CLEAR-kommando." + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "Markeringsradtillstånd okänt." + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "Hämta kanallista" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "har byggts utan insticksmodulsupport." + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "Användarkommandon - Specialkoder:\n\n%c = aktuell kanal\n%e = aktuellt nätverksnamn\n%m = maskininfo\n%n = ditt smeknamn\n%t = tid/datum\n%v = HexChat version\n%2 = ord 2\n%3 = ord 3\n&2 = ord 2 till slutet av raden\n&3 = ord 3 till slutet av raden\n\nt.ex.:\n/cmd john hello\n\n%2 skulle vara \"john\"\n&2 skulle vara \"john hello\"." + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "Knappar i användarlista - Specialkoder:\n\n%a = alla markerade smeknamn\n%c = aktuell kanal\n%e = aktuellt nätverksnamn\n%h = markerat smeknamns värdnamn\n%m = maskininfo\n%n = ditt smeknamn\n%s = markerad smeknamn\n%t = tid/datum\n%u = markerad användares konto" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "Dialogknappar - Specialkoder:\n\n%a = alla markerade smeknamn\n%c = aktuell kanal\n%e = aktuellt nätverksnamn\n%h = markerat smeknamns värdnamn\n%m = maskininfo\n%n = ditt smeknamn\n%s = markerat smeknamn\n%t = tid/datum\n%u = markerad användares konto" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "CTCP-svar - specialkoder:\n\n%d = data (hela ctcp-kommandot)\n%e = aktuellt nätverksnamn\n%m = datorinformation\n%s = smeknamnet som skickade ctcp-kommandot\n%t = tid/datum\n%2 = ord 2\n%3 = ord 3\n&2 = ord 2 till slutet på raden\n&3 = ord 3 till slutet på raden\n\n" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "URL-hanterare - Specialkoder:\n\n%s = URL-textsträng\n\nAngivelse av ett ! framför kommandot\nindikerar att det ska skickas till\nett skal istället för HexChat" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "Användardefinierade kommandon - %s" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "Ersätt - %s" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "Ersätt med" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "URL-hanterare - %s" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "Knappar i användarlista - %s" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "Dialogknappar - %s" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "CTCP-svar - %s" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "He_xChat" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "Nätverksli_sta" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "_Ny" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "Serverflik" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "Kanalflik" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "Serverfönster" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "Kanalfönster" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "_Läs in insticksmodul eller skript" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "_Avsluta" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "_Visa" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "_Menyrad" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "Ämn_esrad" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "An_vändarlista" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "_Knappar för användarlista" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "_Lägesknappar" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "_Kanalväxlare" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "_Flikar" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "T_räd" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "_Nätverksmätare" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Av" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "Diagram" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "_Fullskärm" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "_Server" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "Koppla _från" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "Återa_nslut" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "_Gå in i en kanal" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "Kanal_lista" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "Markerad frånvaro" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "A_nvändarmeny" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "_Inställningar" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "_Inställningar" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "Automatisk ersättning" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "CTCP-svar" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "Dialogknappar" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "Tangentbordsgenvägar" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "Texthändelser" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "URL-hanterare" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "Användarkommandon" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "Knappar för användarlista" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "_Fönster" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "_Bannlysningslista" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "Direktchatt." + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "Fil_överföringar" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "Ignoreringslista" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "_Insticksmoduler och skript" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "_Rålogg" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "_URL-fångare" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "Återställ markörsrad" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "Gå till markeringsrad" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "_Kopiera markering" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "T_öm text" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "Spara text" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "Sök" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "Sök text" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "Sök nästa" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "Sök föregående" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "_Hjälp" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "_Innehåll" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "_Om" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "Fä_st" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Namn" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Sågs senast" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "Frånkopplad" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Aldrig" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "%d minuter sedan" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "En timme sedan" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "%d timmar sedan" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "Ansluten" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "Ange smeknamn att lägga till:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "Notifiera på dessa nätverk:" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "Kommaseparerad lista över nätverken tillåts." + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "Vännerlista - %s" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "Öppna dialog" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "Färgmarkerat meddelande från: %s(%s)" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "Kanalmeddelande från: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "Filerbjudande från: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "Inbjuden till kanal av: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "Notis från: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "Privat meddelande från: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "Ansluten till %u nätverk och %u kanaler - %s" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "_Återställ fönster" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "_Dölj fönster" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "_Blinka vid" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "Kanalmeddelande" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "Privat meddelande" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "Färgmarkerat meddelande" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "_Ändra status" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "_Borta" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "_Bakåt" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "Färgmarkerat meddelande från: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "%u färgmarkerade meddelanden, senaste från: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "Kanalmeddelande från: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "%u kanalmeddelanden. - %s" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "Privat meddelande från: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "%u privata meddelanden, senaste från: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "Filerbjudande från: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "%u filerbjudanden, senaste från: %s (%s) - %s" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Version" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Beskrivning" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Välj en insticksmodul eller ett skript att läsa in" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "Insticksmoduler och skript - %s" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "_Läs in..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "_Lossa" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "_Ladda om" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "Spara som..." + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "Rålogg (%s) - %s" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "Rensa rålogg" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Nytt nätverk" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Vill du verkligen ta bort nätverket \"%s\" och alla dess servrar?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "Användarnamn kan inte lämnas blankt." + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "Du kan inte ha ett tomt användarnamn." + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "Du måste ha två unika smeknamn." + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "Sättet du identifierar dig på gentemot servern. För anpassad login-metod använd anslutningskommandon." + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "Redigera %s - %s" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "Servrar" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "Automatiska ingångkanaler" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "Anslutningskommandon" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "%n=Smeknamn\n%p=Lösenord\n%r=Verkligt namn\n%u=Användarnamn" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "Nyckel (Lösenord)" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "_Redigera" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "Anslut endast till markerad server" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Gå inte igenom alla servrar när anslutningen avbryts." + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "Ansluter till detta nätverk automatiskt" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "Kringgå proxyserver" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "Använd SSL för alla servrar på detta nätverk" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "Acceptera ogiltiga SSL-certifikat" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "Använd global användarinformation" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "_Smeknamn:" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "Andra valet:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "Verkligt _namn:" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "An_vändarnamn:" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "Login-metod:" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Lösenord:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "Lösenord som används för inloggning. Lämna blankt om osäker." + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "Teckentabell:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "Nätverkslista - %s" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "Användarinformation" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "Tredje valet:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Nätverk" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "Hoppa över nätverkslista vid uppstart" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "Visa enbart favoriter" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "_Redigera..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "_Sortera" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "Sorterar nätverkslistan i alfabetisk ordning. Använd tangenterna Skift+Upp och Skift+Ner för att flytta en rad." + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "_Tjänst" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "Markera eller avmarkera detta nätverk som favorit." + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "_Anslut" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "Afrikaans" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Albanska" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "Amhariska" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "Asturiska" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Azerbadjanska" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "Baskiska" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Vitryska" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Bulgariska" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "Kinesiska (Förenklad)" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "Kinesiska (Traditionell)" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "Tjeckiska" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "Danska" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "Nederländska" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "Engelska (Brittisk)" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "Engelska" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Estniska" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "Finska" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "Franska" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "Galiciska" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "Tyska" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "Grekiska" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "Gujarati" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "Hindi" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "Ungerska" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "Indonesiska" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "Italienska" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "Japanska" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "Kannada" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "Kinyarwanda" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "Koreanska" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "Lettiska" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "Litauiska" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "Makedonska" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Malaysia" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "Malayalam" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "Norska (Bokmål)" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "Norska (Nynorska)" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "Polska" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "Portugisiska" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "Portugisiska (Brasiliansk)" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "Punjabi" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "Ryska" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "Serbiska" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "Slovakiska" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "Sloveniska" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "Spanska" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "Svenska" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Thailand" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "Turkiska" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "Ukrainska" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Vietnam" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "Vallonska" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Allmänt" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "Språk:" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "Huvud typsnitt:" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Typsnitt:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "Textfält" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "Färgade smeknamn" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "Ge varje person på IRC en olik färg" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "Dra in smeknamn" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "Högerjustera smeknamn" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "Visa markörrad" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "Infoga en röd rad efter den senaste lästa texten." + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Bakgrundsbild:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "Inställningar för genomskinlighet" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "Fönsteropacitet:" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "Tidsstämplar" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "Aktivera tidsstämplar" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "Tidsstämpelformat:" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "Se strftime MSDN-artikel för detaljer." + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "Se strftime manpage för detaljer." + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "Titelrad" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "Visa kanallägen" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "Visa antalet användare" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Ö" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "Senast sagda order" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "Inmatningsfält" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "Använd typsnittet och färgerna för textfält" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "Återge färger och egenskaper" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "Visa smeknamnsfält" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "Visa användarlägesikon i smeknamnsfält" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "Stavningskontroll" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "Ordlistor att använda:" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "Använd landskoder (som i \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\nSeparera flera poster med komma." + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "Använd landskoder. Separera flera poster med komma." + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "Smeknamnskomplettering" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "Suffix för smeknamnskomplettering:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "Sortering för smeknamnskomplettering:" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "Mängd smeknamn kompletterade:" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "Tröskel av smeknamn att lista istället för att komplettera" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "smeknamn." + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "Grafiskt" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "A-Ö, operatörer först" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "Ö-A, operatörer sist" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Ö-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "Osorterad" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "Vänster (övre)" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "Vänster (nedre)" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "Höger (övre)" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "Höger (nedre)" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "överst" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "nederst" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Dold" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "Användarlista" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "Visa värdnamn i användarlista" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "Använd typsnittet och färgerna för textfält" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "Visa ikoner för användarlägen" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "Använda grafiska ikoner istället för textsymboler i användarlistan." + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "Färga smeknamn i användarlista" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "Kommer färga smeknamn likadant som i chatt." + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "Visa användarantal i kanaler" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "Användarlistan sorteras efter:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "Visa användarlista:" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "Frånvarospårning" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "Spåra frånvarostatus för användare och markera dem i en annan färg" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "På kanaler mindre än:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "Åtgärd vid dubbelklick" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "Ytterligare apparater" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "Fördröjningsmätare:" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "Strypmätare:" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Fönster" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Flikar" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "Alltid" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "Endast begärda flikar" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "Automatisk" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "I en extra flik" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "I främre fliken" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "Träd" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "Växlartyp:" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "Öppna en extra flik för servermeddelanden" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "Öppna en ny flik när du tar emot ett privat meddelande" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "Sortera flikar i alfabetisk ordning" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "Visa ikoner i kanalträdet" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "Visa streckade linjer i kanalträdet" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "Rulla mushjulet för att växla flik" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "Mittenklicka för att stänga flik" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "Mindre text" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "Fokusera nya flikar:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "Placering av notiser:" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "Visa kanalväxlare:" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "Korta ner fliketiketter till:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "bokstäver." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "Flikar eller fönster" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "Öppna kanaler i:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "Öppna dialogfönster i:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "Öppna verktyg i:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Öppna DCC-, ignorerings-, notifieringsfönster osv. i flikar eller fönster?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "Meddelanden:" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "Historik" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "Be om bekräftelse" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "Be om nedladdningmapp" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "Spara utan att fråga" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "Filer och kataloger" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "Acceptera filerbjudanden automatiskt:" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Spara hämtade filer i:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "Flytta färdighämtade filer till:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "Spara smeknamn i filnamn" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "Öppna DCC-fönster automatiskt" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "Sändningsfönster" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "Mottagningsfönster" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "Chattfönster" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "Maximal hastighet för filöverföringar (byte per sekund)" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "En sändning:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "Max. hastighet för en överföring" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "En hämtning:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "Alla sändningar kombinerade:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "Max. hastighet för alla filer" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "Alla hämtningar kombinerade:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "Alarm" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "Visa notiser på:" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "Blinka aktivitetsfältsikonen vid:" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "Blinka verktygsraden vid:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "Spela upp en ljudsignal vid:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "Spela \"Instant Message Notification\"-systemljud vid markerade händelser." + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "Spela \"message-new-instant\" från freedesktop.org ljudtemat vid markerade händelser." + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "Spela ett GTK pip vid markerade händelser." + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "Utelämna varningar när markerats som frånvarande " + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "Utelämna varningar när markerats fönstret är i fokus" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "Aktivitetsfältsbeteende" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "Aktivera ikon för systemlåda" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "Minimera till aktivitetsfält" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "Stäng till aktivitetsfält" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "Markera frånvarande/tillbaka automatiskt" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "Ändra automatiskt status om döljs i aktivitetsfältet." + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "Visa endast notiser när programmet är dolt eller ikonifierat" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "Färgmarkerade meddelanden" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Färgmarkerade meddelanden är sådana där ditt smeknamn nämns i, men även:" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "Extra ord att färgmarkera:" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "Smeknamn att inte färgmarkera:" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "Smeknamn att alltid färgmarkera:" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Separera flera ord med kommatecken.\nJokertecken accepteras." + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "Studsa dockikonen vid:" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "Standardmeddelanden" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "Avsluta:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "Lämna kanal:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "Borta:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "Borta" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Visa frånvaro endast en gång" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "Visa identiska frånvaromeddelanden enbart en gång." + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "Avmarkera frånvaro automatiskt" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "Avmarkera dig själv som frånvarande innan meddelanden skickas." + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "Diverse" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "Visa MODE-kommandon i rå form" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "WHOIS vid notifiering" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "Skicka en /WHOIS när en användare kopplar upp sig i din notifieringslista." + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "Dölj meddelanden om ingång/lämnande" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "Dölj meddelanden om ingång/lämnande som standard" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "Dölj meddelanden om smeknamnsändringar" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "*!*@*.värd" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "*!*@domän" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "*!*användare@*.värd" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "*!*användare@domän" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "Autokopieringsbettende" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "Kopiera automatiskt markerad text" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "Kopiera markerad text till urklipp när vänster musknapp släpps. Annars kommer Ctrl+Skift+C kopiera markerad text till urklipp." + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "Inkludera automatiskt tidsstämplar" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "Inkludera automatiskt tidsstämplar i kopierade rader av text. Inkludera annars tidsstämplar om Skift-tangenten hålls ned vid markering." + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "Inkludera automatiskt färginformation" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "Inkludera automatiskt färginformation i kopierade rader av text. Inkludera annars färginformation om Ctrl-tangenten hålls ned vid markering." + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "Verkligt namn:" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "Alternativa typsnitt:" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "Separera flera poster med komma utan mellanrum före eller efter." + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "Visa listor i kompakt läge" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "Använd mindre mellanrum mellan användarlista-/kanal trädrader." + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "Använd servertid om det stöds" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "Visa tidsstämplar som erhållits från servern om det stödjer tids-server-tillägget." + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "Återanslut automatiskt till servrar vid frånkoppling." + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "Fördröjning för automatisk återanslutning:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "Fördröjning vid automatisk ingång:" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "Bannlysningstyp:" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "Försök att använda denna bannlysningsmask vid bannlysning eller tystning. (kräver irc_who_join)" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Loggning" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "Visa historik från tidigare session" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "Rulla tillbaka rader:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "Aktivera loggning av konversationer till disk" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "Loggfilsnamn:" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Server %c=Kanal %n=Nätverk." + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "Infoga tidsstämplar i loggar" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "Format för tidsstämpling av loggar:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URL" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "Aktivera loggning av URL:er till disk" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "Aktivera URL-fångare" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "Maximalt antal URL:er att fånga:" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(Inaktiverad)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "SOCKS4" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "SOCKS5" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "Auto" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "Alla anslutningar" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "Endast IRC-server" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "Endast DCC" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "Din adress" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "Bind till:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "Endast användbart för datorer med flera adresser." + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "Filöverföringar" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "Hämta min adress från IRC-servern" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "Fråga IRC-servern efter din verkliga adress. Använd detta om du har en adress av typen 192.168.*.*!" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "DCC-IP-adress:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "Utge dig för att vara på denna adress när du erbjuder filer." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "!Lämna värdet noll vid portar för fullständigt intervall." + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "Proxyserver" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "Värdnamn:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Port:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Typ:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "Använd proxy för:" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "Proxyautentisering" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "Använd autentisering (endast HTTP eller SOCKS5)" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "Användarnamn:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "Identd-server" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "Aktiverad" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "Servern kommer svara med nätverkets användarnamn" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "Du måste ha tillåtelse att lyssna på denna port. Om inte 113 (0 väljer denna som standard) så måste du konfigurera port-forwarding." + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "Välj en bildfil" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "Välj mapp för hämtade filer" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Välj typsnitt" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Bläddra..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "Öppna datamapp" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Välj färg" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "Textfärger" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "mIRC-färger:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "Lokala färger:" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Förgrund:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Bakgrund:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "Markerad text" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "Gränssnittsfärger" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "Nya data:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "Markeringsrad:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "Nytt meddelande:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "Frånvaroanvändare:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "Färgmarkera:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "Stavningskontrollant:" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "Färgrensning" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Händelse" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "Ljudfil" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "Välj en ljudfil" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "Ljudfil:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "_Bläddra..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "_Spela upp" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Gränssnitt" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "Utseende " + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Inmatningsfält" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Användarlista" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "Kanalväxlare" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Färger" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Chattande" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "Ljud" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "Avancerat" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Nätverksinställningar" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Filöverföringar" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "Identd" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Kategorier" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "Du kan inte placera trädet på övre eller undre delen!\nÄndra till <b>Flikar</b>-layouten i <b>Visa</b>-menyn först." + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "Alternativet Verkligt namn kan inte lämnas blankt. Faller tillbaka till \"realname\"." + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "En del inställningar ändrades som kräver en omstart för att börja gälla." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*VARNING*\nAtt automatiskt acceptera DCC till din\nhemkatalog kan vara farligt och utnyttjas\nav andra. Någon kan till exempel skicka\ndig en .bash_profile" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "Inställningar - %s" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "<i>(inga förslag)</i>" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "Mer..." + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "Lägg till \"%s\" i ordlistan" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "Ignorera alla" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "Stavningsförslag" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "enchant-fel för språk: %s" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "Det uppstod ett fel vid tolkning av strängen" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Denna signal skickas endast %d argument, $%d är ogiltigt" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "Skriv ut textfil" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$-nummer" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Redigera händelser" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "Läs in från..." + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Testa allt" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "OK" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "URL-fångare - %s" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Töm lista" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Kopiera markerad URL" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Kopiera" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Spara lista till en fil" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d oppar, %d totalt" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "Öppna en irc://server:port/kanal URL" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "Sysinfo: Kunde inte hämta info. Antingen stöds det inte eller så gick något fel." + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "Sysinfo: Ingen info med det namnet\n" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "Sysinfo: %s är satt till: %d\n" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "Sysinfo: Giltiga inställningar är: announce och hide_* för varje bit information. T.ex. hide_os. Utan ett värde visas nuvarande (eller standard-) inställning.\n" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "Sysinfo: Ogiltigt variabelnamn\n" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "Insticksmodul %s inläst\n" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "Insticksmodul %s frigjord\n" diff --git a/hexchat/po/th.po b/hexchat/po/th.po new file mode 100644 index 0000000..02b7e7c --- /dev/null +++ b/hexchat/po/th.po @@ -0,0 +1,6255 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Seksan Poltree <seksan.poltree@gmail.com>, 2007 +# Suttiwit Sukpinit <ormie.suttiwit@gmail.com>, 2012 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-03 20:10+0000\n" +"Last-Translator: TingPing <tingping@tingping.se>\n" +"Language-Team: Thai (http://www.transifex.com/hexchat/hexchat/language/th/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: th\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "ฉันไม่ว่าง" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "กำลังออก" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "เครือข่าย" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<none>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "แชนแนล" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "กำลังรอ" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "ทำงานอยู่" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "ล้มเหลว" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "เรียบร้อย" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "เชื่อมต่อ" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "ถูกยกเลิกกลางคัน" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "ไม่สามารถเข้าถึง %s\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "ข้อผิดพลาด" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s ได้เสนอ \"%s\". คุณต้องการยอมรับหรือไม่?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "ไม่มี DCCs ที่ทำงานอยู่\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "เปิดการสนทนาส่วนตัว" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "ส่งไฟล์" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "ข้อมูลของคนนี้" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "เพิ่มเป็นเพื่อน" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "คำสั่งสำหรับ Operator" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "ให้ Ops" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "รับ Ops" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "ให้การประกาศ" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "รับการประกาศ" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "เตะ/แบน" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "เตะ" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "แบน" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "เตะแบน" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "ออกจากแชนแนล" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "เข้าใช้แชนแนล..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "ป้อนแชนแนลที่จะเข้าร่วม" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "การเชื่อมต่อเซิร์ฟเวอร์" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Ping เซิร์ฟเวอร์" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "ซ่อนเวอร์ชั่น" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Op" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "ลาก่อน" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "ป้อนเหตุผลที่จะเตะ %s:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "หน้าต่างสนทนา" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "ส่ง" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "คุยเล่น" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "ล้าง" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "" + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* เรียกใช้งาน IRC โดยเป็น root เป็นเรื่องไม่ฉลาด! คุณควร\n สร้างบัญชีผู้ใช้อื่นสำหรับใช้ในเข้าสู่ระบบ.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "ใช่" + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "ไม่" + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "คุณกำลังถูก CTCP flooded จาก %s, ทำการเพิกเฉย %s\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s ออนไลน์\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s ออฟไลน์\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "ไม่มีแชนแนลที่ทำการเข้าร่วม. ลอง /join #<แชนแนล>\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "ไม่ได้เชื่อมต่อ. ลอง /server <โฮสต์> [<พอร์ต>]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "เซิฟเวอร์ %s มีอยู่ในเน็ตเวิร์ค %s เเล้ว\n" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "เซิฟเวอร์ %s ได้ถูกบันทึกไว้ในรายชื่อเซิฟเวอร์ของเน็ตเวิร์ค %s แล้ว\n" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "ทำเครื่องหมายว่าไม่อยู่แล้ว: %s\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "ทำเครื่องหมายว่ากลับมาแล้ว.\n" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "ฉันจำเป็นต้องมี /bin/sh เพื่อทำงาน!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "คำสั่งที่มี:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "คำสั่งที่ผู้ใช้นิยามขึ้น:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "คำสั่งที่ปลั๊กอินนิยามขึ้น:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "พิมพ์ /HELP <คำสั่ง> สำหรับรายละเอียดที่มากขึ้น, หรือ /HELP -l" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "อาร์กิวเมนต์ที่ไม่รู้จัก '%s' ถูกเพิกเฉย." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "" + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "ไม่พบปลั๊กอินใดๆ\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "ปลั๊กอินนั้นกำลังปฎิเสธการโหลดออก.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <ชื่อ> <ปฏิบัติการ>, เพิ่มปุ่มภายใต้รายชื่อผู้ใช้งาน" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <คำสั่ง>, ส่งคำสั่งไปยังทุกแชนแนลที่คุณเข้าอยู่" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "ซินแท็กซ์ของคำสั่งนี้: ALLCHANL <คำสั่งใน IRC>, ส่งคำสั่งของ IRC ไปทุกๆ ชาแนล์ที่เปิดอยู่บนเน็ตเวิร์คนี้" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <คำสั่ง>, ส่งคำสั่งไปยังทุกเซิร์ฟเวอร์ที่คุณเข้าอยู่" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "BACK, ตั้งค่าให้คุณกลับมา (ไม่ใช่ไม่อยู่)" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <มาสก์> [<รูปแบบการแบน>], ประกาศสั่งห้ามทุก ๆ คนที่ตรงกับมาสก์จากแชนแนลปัจจุบัน. ถ้าพวกเขาอยู่ที่แชนแนลนี้แล้ว นี่จะไม่ได้เตะพวกเขาออกไป (จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "ซินแทกซ์ของคำสั่งนี้: CHANOPT [-quiet] <ชื่อตัวแปล> [<ข้อมูลของตัวแปล>]" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "ซินแทกซ์ของคำสั่งนี้: CHARSET [<รหัสภาษา>], บอกหรือเปลี่ยนรหัสภาษาที่ใช้แสดงผล" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "" + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <รหัส|ไวลด์การ์ด>, ค้นหารหัสประเทศ, เช่น: au = ออสเตรเลีย" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <ชื่อเล่น> <ข้อความ>, ส่งข้อความ CTCP ไปยัง 'ชื่อเล่น', ข้อความโดยปกติได้แก่ VERSION และ USERINFO" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "CYCLE [<channel>], แยกแชนแนลปัจจุบันหรือที่เสนอให้ และกลับเข้าร่วมในทันที" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <ชื่อเล่น> - ยอมรับไฟล์ที่ได้รับการเสนอให้\nDCC SEND [-maxcps=#] <ชื่อเล่น> [ไฟล์] - ส่งไฟล์ไปหาใครซักคน\nDCC PSEND [-maxcps=#] <ชื่อเล่น> [ไฟล์] - ส่งไฟล์ซักไฟล์โดยใช้โหมด passive\nDCC LIST - show DCC list\nDCC CHAT <ชื่อเล่น> - เสนอ DCC CHAT ให้กับใครซักคน\nDCC PCHAT <ชื่อเล่น> - เสนอ DCC CHAT โดยใช้โหมด passive\nDCC CLOSE <รูปแบบ> <ชื่อเล่น> <ไฟล์> ตัวอย่าง:\n /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <ชื่อเล่น>, ลบสถานะ chanhalf-op จาก 'ชื่อเล่น' ในแชนแนลปัจจุบัน (จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <ชื่อ>, ลบปุ่มภายใต้รายชื่อผู้ใช้" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <ชื่อเล่น>, ลบสถานะ chanop จาก 'ชื่อเล่น' ในแชนแนลปัจจุบัน (จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <nick>, สบสถานะประกาศจาก 'ชื่อเล่น' ในแชนแนลปัจจุบัน (จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, ตัดการเชื่อมต่อจากเซิร์ฟเวอร์" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <ข้อความ>, พิมพ์ข้อความแบบโลคอล" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <คำสั่ง>, เรียกใช้คำสั่ง. ถ้าใช้เครื่องหมาย -o แล้วผลที่ได้จะถูกส่งไปยังแชนแนลปัจจุบัน, ไม่ก็จะถูกพิมพ์ไปยังกล่องข้อความปัจจุบัน" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, ส่ง SIGCONT ไปยังโพรเซส" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9], ฆ่า exec ที่กำลังทำงานในวาระปัจจุบัน. ถ้าใช้เครื่องหมาย -9 โพรเซสจะถูก SIGKILL" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, ส่ง SIGSTOP ไปยังโพรเซส" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, ส่งข้อมูลไปยังทางป้อนข้อมูลมาตรฐานของโพรเซส" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, ล้างคิวการส่งปัจจุบันของเซิร์ฟเวอร์" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <โฮสต์> [<พอร์ต>], พร็อกซี่ไปยังโฮต์, ค่าพอร์ตมาตรฐานเป็น 23" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "ซินแทกซ์ของคำสั่งนี้: GHOST <ชื่อ IRC> [รหัสผ่าน NickServ], เวลา Lag ใช้คำสั่งนี้ในการให้ชื่อเล่นที่ Lag อยู่ แล้วจะสามารถใช้ชื่อเล่นเดิมได้" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <ชื่อเล่น>, ให้สถานะ chanhalf-op กับ 'ชื่อเล่น' (จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <รหัสผ่าน>, ระบุตัวตนของคุณเองไปยังเซิร์ฟเวอร์ชื่อเล่น" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <มาสก์> <รูปแบบ..> <ตัวเลือก..>\n มาสก์ - มาสก์ของโฮสต์ที่จะเพิกเฉย, เช่น: *!*@*.aol.com\n รูปแบบ - ชนิดรูปแบบของข้อมูลที่จะเพิกเฉย, อย่างหนึ่งหรือทั้งหมดของ:\n PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n options - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <ชื่อเล่น> [<แชนแนล>], เชิญชวนใครซักคนเข้าสู่แชนแนลหนึ่ง ๆ, โดยปกติคือแชนแนลปัจจุบัน (จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <แชนแนล>, เข้าร่วม 'แชนแนล'" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, บังคับการตรวจสอบอย่างช้าใหม่" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "ซินแทกซ์ของคำสั่งนี้: LASTLOG [-h] [-m] [-r] [--] <ข้อความสั้น>, ค้นหาข้อความในสนทนาที่ผ่านมา\nเพิ่ม -h ก่อนเติมข้อความสั้นเพื่อ เน้นข้อความที่ตรงกับข้อความสั้น\nเพิ่ม -m ก่อนเติมข้อความสั้นเพื่อ หาข้อความที่มีตัวพิมพ์เล็กหรือใหญ่เหมือนข้อความสั้น\nเพิ่ม -r ก่อนเติมข้อความสั้นเพื่อ ใช้วิธีการหาข้อความสั้นในสนทนาแบบ Regex Expression.\nเพิ่ม -- ก่อนเติมข้อความสั้นเพื่อที่จะสามารถเติมข้อความสั้นได้" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <ไฟล์>, โหลดปลั๊กอินหรือสคริป" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, Mass deop ของ chanhalf-ops ทั้งหมดในแชนแนลปัจจุบัน (จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, Mass deop ของ chanops ทั้งหมดในแชนแนลปัจจุบัน (จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <ปฏิบัติการ>, ส่งการปฏิบัติการไปยังแชนแนลปัจจุบัน (การปฏิบิการถูกเขียนขึ้นโดยบุคคลที่ 3, อย่างเช่น /me jumps)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, เตะทุกคนออกจากแชนแนลปัจจุบันยกเว้นคุณ (จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, Mass op ของผู้ใช้ทั้งหมดในแชนแนลปัจจุบัน (จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <ชื่อเล่น> <ข้อความ>, ส่งประกาศ CTCP" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <ชื่อโฮต์> [<พอร์ต>]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <ชื่อเล่น>, ตั้งชื่อเล่นของคุณ" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [-n เครือข่าย1[,เครือข่าย2,...]] [<ชื่อเล่น>], แสดงรายการแจ้งเตือนของคุณหรือเพิ่มบางคนไปยังรายการ" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <ชื่อเล่น>, ให้สถานะ chanop กับ 'ชื่อเล่น' (จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<แชนแนล>] [<เหตุผล>], ออกจากแชนแนล, โดยปกติคือหนึ่งแชนแนลปัจจุบัน" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <nick | channel>, ส่ง CTCP เพื่อ ping ชื่อเล่นหรือแชนแนล" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "" + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<เหตุผล>], ตัดการเชื่อมต่อจากเซิร์ฟเวอร์ปัจจุบัน" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <ข้อความ>, ส่งข้อความในรูปแบบข้อมูลดิบไปยังเซิร์ฟเวอร์" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<โฮสต์>] [<พอร์ต>] [<รหัสผ่าน>], สามารถเรียกเพียง /RECONNECT เพื่อที่จะทำการเชื่อมต่ออีกครั้งกับเซิร์ฟเวอร์ปัจจุบัน หรือด้วย /RECONNECT ALL สำหรับทำการเชื่อมต่ออีกครั้งกับเซิร์ฟเวอร์ทั้งหมดที่เปิดอยู่" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<โฮสต์>] [<พอร์ต>] [<รหัสผ่าน>], สามารถถูกเรียกเพียง /RECONNECT เพื่อที่จะทำการเชื่อมต่ออีกครั้งกับเซิร์ฟเวอร์ปัจจุบัน หรือด้วย /RECONNECT ALL สำหรับทำการเชื่อมต่ออีกครั้งกับเซิร์ฟเวอร์ทั้งหมดที่เปิดอยู่" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <ข้อความ>, ส่งข้อความไปยังวัตถุในหน้าต่างปัจจุบัน" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <ชื่อเล่น> [<ไฟล์>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <โฮสต์> <พอร์ต> <แชนแนล>, เชื่อมต่อและเข้าร่วมแชนแนล" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <โฮสต์> <พอร์ต> <แชนแนล>, เชื่อมต่อและเข้าร่วมแชนแนล" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "ซินแท็กซ์ของคำสั่งนี้: SERVER [-ssl] <URL ของเซิฟเวอร์> [<พอร์ด>] [<รหัสผ่านในการใช้เซิฟเวอร์>], เข้าถึงเซิฟเวอร์ที่ระบุไว้\nถ้าพอร์ดไม่ได้ระบุไว้ จะเข้าเซิฟเวอร์โดยใช้พอร์ด 6667.\nถ้าระบุ \"-ssl\" แต่ไม่ได้ระบุพอร์ด พอร์ดจะเป็น 6697 โดยอัตโนมัติ\nไม่ต้องระบุรหัสผ่านถ้าเซิฟเวิอร์ไม่ต้องใช้รหัสผ่านในการเข้าถึง" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <host> [พอร์ต>] [<รหัสผ่าน>], เชื่อมต่อไปยังเซิร์ฟเวอร์, พอร์ตมาตรฐานคือ 6667" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "ซินแท็กซ์ของคำสั่งนี้: SET [-e] [-off|-on] [-quiet] [ชื่อตัวแปร] [<ข้อมูลใหม่เพื่อที่จะใส่ในตัวแปร>]\n* off = ปิด, ตั้งค่าเป็น True. \n on = เปิด, ตั้งค่าเป็น False." + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "ซินแท็กซ์ของคำสั่งนี้: SETCURSOR [-|+] <ตำแหน่งของเคอเซอร์>, ปรับเปลี่ยนตำแหน่งของเคอเซอร์ใน InputBox." + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "ซินแท็กซ์ของคำสั่งนี้: SETTAB <ชื่อใหม่ของแท็บ>, ปรัปเปลี่ยนชื่อของแท็บนี้" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "ซินแท็กซ์ของคำสั่งนี้: SETTEXT <คำใหม่>, เปลี่ยนคำใน InputBox ให้เป็นคำใหม่" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<หัวเรื่อง>], ตั้งหัวเรื่องถ้าบางคนได้รับมา, หรือแสดงหัวเรื่องปัจจุบัน" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "\nTRAY -f <เวลาหมด> <ไฟล์1> [<ไฟล์2>] กระพริบถามระหว่างสองไอคอน.\nTRAY -f <ชื่อไฟล์> ตั้งถามสำหรับไอคอนที่ถูกตรึง.\nTRAY -i <ตัวเลข> กระพริบถาดด้วยไอคอนภายใน.\nTRAY -t <ข้อความ> ตั้งค่าข้อความช่วยเหลือของถาด.\nTRAY -b <ชื่อเรื่อง> <ข้อความ> ตั้งค่าบอลลูนของถาด." + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <mask> [<mask>...], ยกเลิกแบนสำหรับมาสก์ที่กำหนด." + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <มาสก์> [QUIET]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <ชื่อ>, โหลดปลั๊กอินหรือสคริปออกไป" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "" + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, เปิด URL ในบราวเซอร์ของคุณ" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "USELECT [-a] [-s] <ชื่อเล่น1> <ชื่อเล่น2> etc, เน้นชื่อเล่น(s) ในรายชื่อผู้ใช้ของแชนแนล" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <ชื่อเล่น>, ให้สถานะประกาศกับใครบางคน (จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <ข้อความ>, เขียนข้อความไปยังแชนแนลทั้งหมด" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <ข้อความ>, ส่งข้อความไปยัง chanops ทั้งหมดในแชนแนลปัจจุบัน" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "วิธีใช้: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nไม่มีข้อความช่วยเหลือสำหรับคำสั่งนั้น.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "ไม่ใช่คำสั่ง.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "อาร์กิวเมนต์ไม่ถูกต้องสำหรับคำสั่งผู้ใช้งาน.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "คำสั่งเรียกตัวเองซ้ำซ้อนมากเกินไป, ทำการยกเลิกกลางคัน." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "คุณแน่ใจหรือว่านี่เป็นเซิร์ฟเวอร์และพอร์ต ที่สนับสนุนการทำงานของ SSL?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "ไม่สามารถวิเคราะชื่อของโฮสต์ %s\nตรวจสอบการตั้งค่าไอพีของคุณ!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "Proxy traversal ล้มเหลว.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "วนไปยังเซิร์ฟเวอร์ถัดไปใน %s...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "คำเตือน: ไม่รู้จักชุดอักขระ \"%s\". ไม่มีการสนทนาที่จะถูกนำมาใช้กับเครือข่าย %s." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "%C18*%O$t%C18$1%O ได้ถูกเพิ่มเข้าไปในรายชื่อแจ้งเตือน" + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "" + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O แบน %C18$2%O" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O ลบสถานะ Half-Operator จาก %C18$2%O" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O ลบสถานะ Operator จาก %C18$2%O" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O ลบสถานะ Voice จาก %C18$2%O" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O ให้สถานะ Half-Operator กับ %C18$2%O" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%Uแชนแนล ผู้ใช้ หัวข้อ" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "%C22*%O$t%C26$1%O ตั้งค่าโหมด %C24$2$3%O บน %C22$4%O" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "%C22*%O$tห้องสนทนา %C22$1%O มีโหมด: %C24$2" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O ให้สถานะ Operator กับ %C18$2%O" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O ลบการปกป้องจาก %C18$2%O" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "%C22*%O$t%C26$1%O ลบรหัสผ่านของห้องสนทนา" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "%C22*%O$t%C26$1%O ลบเลขจำกัดคนในห้องสนทนา" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O ตั้งเลขจำกัดคนในห้องสนทนาเป็น %C24$2%O" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O ให้สถานะ Voice กับ %C18$2%O" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "%C23*%O$tเชื่อมต่อเสร็จแล้ว กำลังล็อกอิน" + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "%C23*%O$tกำลังเชื่อมต่อไปที่เซิฟเวอร์ %C29$1%C (%C23$2:$3%O)" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "%C20*%O$tการเชื่อมต่อไม่สำเร็จ (%C20$1%O)" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "%C24*%O$tได้รับข้อความ CTCP %C24$1%C จาก %C18$2%O" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "%C24*%C$tได้รับข้อความ CTCP %C24$1%C จาก %C18$2%C (ถึง %C22$3%C)%O" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "%C24*%O$tได้รับข้อความ CTCP Sound %C24$1%C จาก %C18$2%O" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "%C24*%O$tได้รับข้อความ CTCP Sound %C24$1%C จาก %C18$2%C (ถึง %C22$3%O)" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "%C23*%O$tDCC CHAT ถึง %C18$1%O ได้ถูกยกเลิก" + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "%C24*%O$tDCC CHAT เชื่อมต่อได้แล้วกับ %C18$1%C %C30[%C24$2%C30]%O" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "%C20*%O$tDCC CHAT กับ %C18$1%O ล้มเหลว (%C20$4%O)" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "" + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "" + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "" + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "" + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "" + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "" + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "" + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "" + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "" + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "" + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "" + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tรายการแจ้งเตือนว่างเปล่า." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "" + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "" + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "" + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "" + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "โหลดบันทึกการทำงานจาก" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** จบการบันทึกการทำงานที่ %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** เริ่มบันทึกการทำงานที่ %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "* ไม่สามารถเขียนไฟล์ล็อกได้ โปรดตรวจสอบว่าคุณได้รับอนุญาตในการเขียนไฟล์บน \"%s\" แล้วหรือไม่" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "ข้อความทางซ้าย" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "ข้อความทางขวา" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "ที่อยู่ไอพี" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "ชื่อผู้ใช้" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "ชื่อเล่นของคนที่เข้าร่วม" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "แชนแนลที่ถูกเข้าร่วม" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "โฮสต์ของบุคคล" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "ชื่อเล่น" + +#: src/common/text.c:980 +msgid "The action" +msgstr "การปฏิบัติการ" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "ตัวหนังสือโหมด" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "ข้อความแสดงตัว" + +#: src/common/text.c:987 +msgid "The text" +msgstr "ข้อความ" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "ข้อความ" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "ชื่อเซิร์ฟเวอร์" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "ชื่อเล่นเดิม" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "ชื่อเล่นใหม่" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "ชื่อเล่นของคนที่เปลี่ยนหัวข้อ" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "หัวข้อ" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "ชื่อของคนที่เตะ" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "คนที่กำลังถูกเตะ" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "แชนแนล" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "เหตุผล" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "ชื่อเล่นของคนที่กำลังจากไป" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "เวลา" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "ผู้สร้าง" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "ชื่อเล่น" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "เหตุผล" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "โฮสต์" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "ใครที่มันมาจาก" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "เวลาในรูปแบบ x.x (ดูด้านล่าง)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "แชนแนลที่มันกำลังไป" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "เสียง" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "ชื่อเล่นของบุคคล" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "เหตุการณ์ CTCP" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "ชื่อเล่นของคนที่ตั้งค่ากุญแจ" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "กุญแจ" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "ชื่อเล่นของคนที่ตั้งค่าขีดจำกัด" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "ขีดจำกัด" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "ชื่อเล่นของคนที่ทำการ op'ing" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "ชื่อเล่นของคนที่ได้ถูก op" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "ชื่อเล่นของคนที่ได้ถูก halfop" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "ชื่อเล่นของคนที่ทำการ halfop" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "ชื่อเล่นของคนที่ทำการประกาศ" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "ชื่อเล่นของคนที่ได้ถูกประกาศ" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "ชื่อเล่นของคนที่ทำการแบน" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "มาสก์การแบน" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "ชื่อเล่นของคนที่ลบกุญแจ" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "ชื่อเล่นของคนที่ลบขีดจำกัด" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "ชื่อเล่นของคนที่ได้ทำการ deop" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "ชื่อเล่นของคนที่ได้ทำการ dehalfop" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "ชื่อเล่นของคนที่ได้ทำการ devoice" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "ชื่อเล่นของคนที่ทำการยกเว้น" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "มาสก์ที่ยกเว้น" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "ชื่อเล่นของคนที่ลบการยกเว้น" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "ชื่อเล่นของคนที่ทำการเชิญชวน" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "มาสก์เชิญชวน" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "ชื่อเล่นของคนที่ลบการเชิญชวน" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "ชื่อเล่นของคนที่ตั้งค่าโหมด" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "สัญญาณของโหมด (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "ตัวอักษรของโหมด" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "แชนแนลที่มันกำลังตั้งค่า" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "ชื่อเต็ม" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "ความเป็นสมาชิกของแชนแนล/\"เป็นผู้จัดการ IRC คนหนึ่ง\"" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "ข้อมูลของเซิร์ฟเวอร์" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "เวลาว่าง" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "เวลาเข้าสู่ระบบ" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "เหตุผลที่ไม่อยู่" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "ข้อความ" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "บัญชี" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "ชื่อผู้ใช้@โฮสต์ จริง" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "ไอพีจริง" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "ชื่อแชนแนล" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "Raw Numeric หรือ Identifier" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "ข้อความ" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "ชื่อเล่นของคนที่เชิญชวนคุณ" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "ผู้ใช้" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "ชื่อเล่นถูกใช้อยู่" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "ชื่อเล่นกำลังถูกลองใช้" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "ไอพี" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "พอร์ต" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "สตริงแสดงโหมด" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "ชนิด DCC" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "ชื่อไฟล์" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "ชื่อไฟล์ปลายทาง" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "ชื่อเส้นทาง" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "ตำแหน่ง" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "ขนาด" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "ข้อความ DCC" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "หมายเลขของการแจ้งเตือนรายการ" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "ชื่อไฟล์เดิม" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "ชื่อไฟล์ใหม่" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "ตัวรับ" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "มาสก์ของโฮสต์" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "ชื่อโฮสต์" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "แพ็กเก็ต" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "วินาที" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "ชื่อของคนที่ได้ถูกเชิญ" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "มาสก์การแบน" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "ใครคนที่ตั้งการแบน" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "เวลาแบน" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "ไม่สามารถอ่านไฟล์เสียง:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "โฮสต์ปลายทางปิดแชนแนลเชื่อมต่อ" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "การเชื่อมต่อถูกปฏิเสธ" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "ไม่มีเส้นทางไปยังโฮต์" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "การเชื่อมต่อหมดเวลา" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "ไม่สามารถกำหนดค่าที่อยู่นั้น" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "การเชื่อมต่อถูกตั้งใหม่โดยผู้เชื่อมต่อ" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "เกาะ Ascension" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "สหรัฐอาหรับอิมิเรตส์" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "Aviation-Related Fields" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "อัฟกานิสถาน" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Antigua และ Barbuda" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "อัลบาเนีย" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "อาร์เมเนีย" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Netherlands Antilles" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Antarctica" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "อาร์เจนติน่า" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "รีเวิร์ส DNS" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "American Samoa" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "Asia-Pacific Region" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "ออสเตรีย" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "ออสเตรเลีย" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "Aland Islands" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "อาร์เซอร์ไบจัน" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Bosnia and Herzegovina" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Bangladesh" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "เบลเยี่ยม" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "บัลแกเรีย" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Bahrain" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "ยุ่งอยู่" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Brunei Darussalam" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "โบลิเวีย" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "บราซิล" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Bahamas" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "ภูฏาน" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Bouvet Island" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Belarus" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "แคนาดา" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "Catalan" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Cocos Islands" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "Democratic Republic of Congo" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "Central African Republic" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "คองโก" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "สวิซเซอร์แลนด์" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "Cote d'Ivoire" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "เกาะ Cook" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "ชิลี" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "แคมารูน" + +#: src/common/util.c:738 +msgid "China" +msgstr "จีน" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "โคลัมเบีย" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Internic Commercial" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "Cooperatives" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "Serbia and Montenegro" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "คิวบา" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Cape Verde" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Christmas Island" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "ไซปรัส" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "Czech Republic" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "East Germany" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "เยอรมันนี" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Djibouti" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "เดนมาร์ก" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "โดมินิกา" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "Dominican Republic" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Algeria" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Ecuador" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "สถาบันการศึกษา" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Estonia" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "อียิปต์" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Western Sahara" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "สเปน" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Ethiopia" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "European Union" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "ฟินแลนด์" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "ฟิจิ" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Falkland Islands" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Micronesia" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Faroe Islands" + +#: src/common/util.c:770 +msgid "France" +msgstr "ฝรั่งเศส" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Great Britain" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "จอร์เจีย" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "French Guiana" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "British Channel Isles" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "กานา" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "กรีนแลนด์" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:782 +msgid "Government" +msgstr "ราชการ" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Guadeloupe" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Equatorial Guinea" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "กรีซ" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "S. Georgia and S. Sandwich Isles" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Guinea-Bissau" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Guyana" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "ฮ่องกง" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Heard and McDonald Islands" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Croatia" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Hungary" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "อินโดนีเซีย" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "ไอร์แลนด์" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "อิสราเอล" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "Isle of Man" + +#: src/common/util.c:801 +msgid "India" +msgstr "อินเดีย" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "ข้อมูล" + +#: src/common/util.c:803 +msgid "International" +msgstr "นานาชาติ" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "British Indian Ocean Territory" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "อิรัก" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "อิหร่าน" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "ไอซ์แลนด์" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "อิตาลี" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Jamaica" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "จอร์แดน" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "อาชีพที่บริษัท" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "ญี่ปุ่น" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "เคนย่า" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Kyrgyzstan" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "กัมพูชา" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Comoros" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "St. Kitts and Nevis" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "เกาหลีเหนือ" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "เกาหลีใต้" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "คูเวต" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Cayman Islands" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Kazakhstan" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "ลาว" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Lebanon" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Saint Lucia" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "ศรีลังกา" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Liberia" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Lithuania" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Luxembourg" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Latvia" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Libya" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Morocco" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "โมนาโก" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Moldova" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "Montenegro" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "United States Medical" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Madagascar" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Marshall Islands" + +#: src/common/util.c:843 +msgid "Military" +msgstr "ทหาร" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Macedonia" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "มาลี" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "เมียนมาร์" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "มองโกเลีย" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Macau" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "ของใช้พกพา" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Northern Mariana Islands" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Martinique" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Mauritania" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Mauritius" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "พิพิธพันธ์" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Maldives" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "เม็กซิโก" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "มาเลเซีย" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Mozambique" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Namibia" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "ชื่อคน 1 คน" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "New Caledonia" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "เครือข่าย Internic" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Norfolk Island" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "ไนจีเรีย" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Netherlands" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "นอรเวย์" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "เนปาล" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "นิวซีแลนด์" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "โอมาน" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "Internic Non-Profit Organization" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "เปรู" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "French Polynesia" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Papua New Guinea" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "ฟิลิปปินส์" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "ปากีสถาน" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "โปแลนด์" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "St. Pierre and Miquelon" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Puerto Rico" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "ความสำเร็จ" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "ดินแดนของ Palestinian" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Portugal" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Paraguay" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "กาตาร์" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Reunion" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "โรมาเนีย" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "โรงเรียน ARPAnet เดิม" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "Serbia" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Russian Federation" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Rwanda" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Saudi Arabia" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Solomon Islands" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Seychelles" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "ซูดาน" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "สวีเดน" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "สิงคโปร์" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "St. Helena" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Slovenia" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard and Jan Mayen Islands" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "Slovak Republic" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Somalia" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Suriname" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "South Sudan" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "Sao Tome and Principe" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Former USSR" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "Republic of Savior" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Syria" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Swaziland" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Turks and Caicos Islands" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "ไทย" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "ตุรกี" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "ไต้หวัน" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "ยูเครน" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "อูกานดา" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "สหราชอาณาจักร" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "สหรัฐอเมริกา" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "เวียดนาม" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "เยเมน" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "แอฟริกาใต้" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "ไม่สามารถเชื่อมต่อไปยัง session bus" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "ล้มเหลวในการจบ NameHasOwner" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "ล้มเหลวในการจบคำสั่ง" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "เข้าถึงระยะไกล" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "ปล๊กอินสำหรับการเข้าถึงระยะไกลโดยใช้ DBUS" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "ไม่สามารถเชื่อมต่อไปยัง session bus: %s\n" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "ผิดพลาดในการร้องขอ %s: %s\n" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "แผนผังตัวอักษร" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "แบน" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "เชิญชวน" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "ไม่ได้เชื่อมต่อ." + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "คุณจะต้องเลือกคนที่ถูกแบน." + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "มาสก์" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "จาก" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "วันเวลา" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "คุณสามารถเปิดหน้าต่างรายการผู้ถูกแบนเมื่ออยู่ในแท็บแชนแนลเท่านั้น." + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "ลบ" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "ตัดให้สั้น" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "เรียกใหม่" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "กำลังแสดง %d/%d ผู้ใช้ บน %d/%d แชนแนล." + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "เลือกชื่อไฟล์เอาต์พุท" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "เข้าแชนแนล" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "คัดลอกชื่อแชนแนล" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "คัดลอกข้อความหัวข้อ" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "ค้น_หา" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "รายการ_ดาวน์โหลด" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "_บันทึกรายการ..." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "แสดงเท่านั้น." + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "แชนแนลกับ" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "ไปยัง" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "ผู้ใช้" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "ค้นหาใน:" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "ชื่อแชนแนล" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "ชนิดไฟล์:" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "ค้นหาอย่างง่าย" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "รูปแบบตรงกัน (ไวลด์การ์ด)" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "Regular Expression" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "ค้นหา:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "ส่งไฟล์ไปยัง %s" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "ไฟล์นั้นไม่สามารถเริ่มต่อได้" + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "ไม่สามารถเข้าถึงไฟล์: %s\n%s.\nการเชื่อมต่อไม่สามารถเป็นไปได้." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "ไฟล์ในไดเร็กทอรี่ดาวน์โหลดใหญ่กว่าไฟล์ที่ถูกเสนอ. การเริ่มต่อไม่สามารถเป็นไปได้." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "ไม่สามารถเริ่มต่อสำหรับไฟล์เดียวกันจากคนสองคน." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "สถานะ" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "ไฟล์" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "ทั้งคู่" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "อัพโหลด" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "ดาวน์โหลด" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "รายละเอียด" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "ไฟล์:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "ที่อยู่:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "ยกเลิกกลางคัน" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "ยอมรับ" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "เริ่มใหม่" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "เปิดโฟลเดอร์..." + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "รับ" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "ส่ง" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "เวลาเริ่ม" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "ลบ" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "ยกเลิก" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "บันทึก" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "ไม่เชื่อมต่อไปยังเซิร์ฟเวอร์โดยอัตโนมัติ" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "ใช้ไดเร็กทอรี่การตั้งค่าต่างออกไป" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "ไม่โหลดปั๊กอินใด ๆ โดยอัตโนมัติ" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "แสดงไดเร็กทอรี่การตั้งค่าของผู้ใช้" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "กระทำคำสั่ง:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "เริ่มต้นด้วยขนาดย่อ. ระดับ 0=ปกติ 1=เป็นไอคอน 2=ถาด" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "รดับ" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "แสดงข้อมูลเวอร์ชั่น" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "ล้มเหลวในการเปิดฟอนต์:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "การค้นหาบัฟเฟอร์ว่างเปล่า.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d ไบต์" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "ข้อมูลที่จะส่งไปที่เซิฟเวอร์มีขนาด: %d ไบต์" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "คำสั่ง Insert in Buffer จะทำการเพิ่มเนื้อหาของข้อมูล 1 ไปยังตัวรับข้อมูลที่ที่ลำดับคีย์ได้ถูกกด ที่ตำแหน่งปัจจุบันของเคอร์เซอร์" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "คำสั่ง Set Buffer ตั้งค่าตัวรับข้อมูลไปยังที่ ที่ลำดับของคีย์ที่ได้ถูกป้อนเข้ามาไปยังเนื้อหาของข้อมูล 1" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "คำสั่ง Last Command ตั้งค่าตัวรับข้อมูลไปยังคำสั่งล่าสุดที่ถูกป้อน - เช่นเดียวกับการกดลูกศรขึ้นในเชลล์" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "คำสั่ง Next Command ตั้งค่าตัวรับข้อมูลไปยังคำสั่งถัดไปที่ถูกป้อน - เช่นเดียวกับการกดลูกศรลงในเชลล์" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "คำสั่งนี้จะเปลี่ยนข้อความที่อยู่ในรายการป้อน เพื่อจะทำชื่อหรือคำสั่งที่ไม่เรียบร้อยให้สมบูรณ์. ถ้าข้อมูล 1 ถูกตั้งค่า แล้วการแท็บคู่ในสตริงจะถูกเลือกในชื่อเล่นล่าสุด, ไม่ใช่ถัดไป." + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "คำสั่งนี้จะเลื่อนขึ้นหรือลงไปยังรายการชื่อเล่น. ถ้าข้อมูล1 ถูกตั้งไปเป็นอะไรก็ตามมันจะเลื่อนขึ้น, ไม่อย่างนั้นจะเลื่อนลง" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "คำสั่งนี้ตรวจสอบคำล่าสุดที่ถูกป้อนไปยังตัวป้อน แทนที่จะเป็นรายการแทนที่ และแทนที่มันถ้าค้นพบสิ่งที่ตรงกัน" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "คำสั่งนี้ย้ายแท็บด้านหน้าไปทางซ้ายหนึ่งอันดับ" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "คำสั่งนี้ย้ายแท็บด้านหน้าไปทางขวาหนึ่งอันดับ" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "คำสั่งนี้ย้ายสมาชิกแท็บปัจจุบันไปทางซ้าย" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "คำสั่งนี้ย้ายสมาชิกแท็บปัจจุบันไปทางขวา" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "ใส่บรรทัดการป้อนเข้าไปยังประวัติแต่ไม่ต้องส่งไปยังเซิร์ฟเวอร์" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "มีปัญหาในการโหลดการตั้งค่าการผูกคีย์" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "ไม่สามารถเขียนไฟล์นั้นได้" + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "ไม่สามารถอ่านไฟล์นั้นได้" + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "มาสก็นั้นมีอยู่แล้ว" + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "ส่วนตัว" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "ประกาศ" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "เลิกเพิกเฉย" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "ป้อนมาสก์เพื่อเพิกเฉย" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "สถิติการเพิกเฉย:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "แชนแนล:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "ส่วนตัว:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "ประกาศ:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "เชิญชวน:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "เพิ่ม..." + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "ชื่อแชนแนลสั้นเกินไป, ลองใหม่อีกครั้ง." + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "การเชื่อมต่อไปยัง %s เสร็จสมบูรณ์." + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "คุณอยากจะทำอะไรต่อไป?" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "ไม่ทำอะไรเลย. ฉันจะเข้าแชนแนลทีหลัง" + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "เ_ข้าร่วมแชนแนลนี้" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "ถ้าคุณรู้ชื่อของแชนแนลที่คุณต้องการเข้าร่วม. ป้อนมันที่นี่." + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "" + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "แสดงหน้าต่างสนทนานี้หลังจากการเชื่อมต่อ_ตลอด." + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "การสนทนากับ" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "หัวข้อสำหรับ %s คือ: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "ไม่มีหัวข้อถูกตั้ง." + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "เซิร์ฟเวอร์นี้ยังคงมี %d แชนแนลหรือการสนทนาที่ถูกเชื่อมโยงด้วย. ต้องการปิดทั้งหมด?" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "คุณต้องการออกจาก HexChat หรือไม่?" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "ไม่ต้องถามในครั้งหน้า." + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "คุณกำลังเชื่อมต่อไปยังเครือข่าย IRC %i ." + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "คุณแน่ใจแล้วหรือไม่ที่จะออก?" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "การโอนย้ายไฟล์บางไฟล์ยังคงทำงานอยู่." + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "_ย่อไปยังถาด" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "ใส่คุณลักษณะหรือรหัสสี" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>ตัวหนา</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>ขีดเส้นใต้</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "ปกติ" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "สี 0-7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "สี 8-15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "ตั้งค่า" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "เก็บการสนทนาไว้ในไฟล์" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "โหลดสนทนาที่ผ่านมา" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "_ปิด" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "ขีดจำกัดผู้ใช้ต้องเป็นตัวเลข!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "ไม่มีข้อความภายนอก" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "การป้องกันหัวข้อ" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "รับเชิญเท่านั้น" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "ปรับปรุง" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "รายการแบน" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "คีย์เวิร์ด" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "ขีดจำกัดผู้ใช้" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "ป้อนชื่อเล่นใหม่:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "" + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "" + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "เน้นข้อความทั้งหมด" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "" + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "ไม่รู้จักโฮสต์" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "ไม่รู้จัก" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "ชื่อจริง" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "ผู้ใช้:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "ประเทศ:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "เซิร์ฟเวอร์:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "ผ่านมาแล้ว %u นาที" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "ข้อความล่าสุด:" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "ข้อความไม่อยู่:" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "เปิดลิงค์ในบราวเซอร์" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "คัดลอกลิงค์ที่เลือก" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "เข้าร่วมแชนแนล" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "ออกจากแชนแนล" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "หมุนวนแชนแนล" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "การตอบรับ CTCP - รหัสพิเศษ:\n\n%d = ข้อมูล (ctcp ทั้งหมด)\n%e = ชื่อเครือข่ายปัจจุบัน\n%m = รายละเอียดเครื่อง\n%s = ชื่อเล่นของคนที่ส่ง ctcp\n%t = เวลา/วัน\n%2 = คำที่ 2\n%3 = คำที่ 3\n&2 = คำที่ 2 ไปยังท้ายบรรทัด\n&3 = คำที่ 3 ไปยังท้ายบรรทัด\n\n" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "แทนที่ด้วย" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "สร้างให_ม่" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "_ออก" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "_มุมมอง" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "แถบเ_มนู" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "แถ_บหัวข้อ" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "รา_ยการผู้ใช้" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "ปุ่มโหม_ด" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "ตัว_สวิตช์แชนแนล" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "แท็_บ" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "ต้_นไม้" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "ตัว_วัดเครือข่าย" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "ปิด" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "กราฟ" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "เ_ซิร์ฟเวอร์" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "_ตัดการเชื่อมต่อ" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "เชื่อมต่อให_ม่" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "เ_มนูผู้ใช้" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "ตั้_งค่า" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "ปรั_บแต่ง" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "_หน้าต่าง" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "ตั้งค่าเส้นสัญลักษณ์ใหม่" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "_ล้างข้อความ" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "_ช่วยเหลือ" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "เ_นื้อหา" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "เกี่ยว_กับ" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "ชื่อ" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "เห็นล่าสุด" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "ออฟไลน์" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "ไม่เลย" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "ผ่านมา %d นาทีแล้ว" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "ออนไลน์" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "ป้อนชื่อเล่นที่จะเพิ่ม:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "แจ้งเตือนบนเครือข่ายนี้" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "ยอมรับรายการเครือข่ายที่แยกด้วยจุลภาค." + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "เปิดการสนทนา" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "เรียกคืนหน้าต่าง" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "ซ่อนหน้าต่างนี้" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "เปิดการกระ_พริบ" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "ข้อความของแชนแนล" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "ข้อความส่วนตัว" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "ข้อความที่ถูกเน้น" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "เปลี่ยนสถานะ" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "ออกไป" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "กลับมา" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "เวอร์ชั่น" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "คำอธิบาย" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "เลือกปลั๊กอินหรือสคริปที่จะโหลด" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "โห_ลด" + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "บันทึกเป็น..." + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "เครือข่ายใหม่" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "จะลบ \"%s\" และเซิร์ฟเวอร์ทั้งหมดจริง ๆ หรือ?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "รหัสผ่าน" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "แก้ไ_ข" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "เชื่อมต่อไปยังเซิร์ฟเวอร์ที่เลือกเท่านั้น" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "ไม่ต้องวนไปยังทุกเซิร์ฟเวอร์เมื่อการเชื่อมต่อล้มเหลว." + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "Bypass proxy server" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "ใช้ SSL สำหรับทุกเซิร์ฟเวอร์บนเครือข่ายนี้" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "ใช้ข้อมูลโดยรวมของผู้ใช้" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "_ชื่อเล่น:" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "ตัวเลือกอันดับสอง:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "ชื่อ_จริง:" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "_ชื่อผู้ใช้:" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "รหัสผ่าน:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "ชุดอักขระ:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "รายละเอียดผู้ใช้" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "ตัวเลือกอันดับสาม:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "เครือข่าย" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "ข้ามรายชื่อเครือข่ายตอนเปิดโปรแกรม" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "แสดงห้องสนทนาที่ชอบ" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "แก้ไ_ข..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "เ_รียงลำดับ" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "ชอบ" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "ทำให้เน็ตเวิร์คนี้เป็นเน็ตเวิร์คที่ชอบ" + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "เ_ชื่อมต่อ" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Albanian" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "Amharic" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Azerbaijani" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "Basque" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Belarusian" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Bulgarian" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "จีน (ปัจจุบัน)" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "จีน (โบราณ)" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "Czech" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "Dutch" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Estonian" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "Finnish" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "French" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "Galician" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "German" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "Greek" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "Hindi" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "Hungarian" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "Italian" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "Japanese" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "Kannada" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "Korean" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "Latvian" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "Lithuanian" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "Macedonian" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Malay" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "Malayalam" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "Norwegian (Bokmal)" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "Norwegian (Nynorsk)" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "Polish" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "Portuguese" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "Portuguese (Brazilian)" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "Punjabi" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "Russian" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "Serbian" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "Slovak" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "Slovenian" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "Spanish" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "Swedish" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "ไทย" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "Ukrainian" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Vietnamese" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "Walloon" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "ทั่วไป" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "ภาษา:" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "ฟอนต์หลัก:" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "ฟอนต์:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "Text Box" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "ใช้ชื่อเล่นเป็นสี" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "ให้แต่ละคนบน IRC มีสีต่างกัน" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "ย่อหน้าชื่อเล่น" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "ตั้งชื่อเล่นให้ชิดขวา" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "แสดงเส้นลัญลักษณ์" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "ใส่เส้นสีแดงหลังจากข้อความล่าสุดที่อ่าน." + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "รูปพื้นหลัง:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "ตั้งค่าความโปร่งใส" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "See the strftime MSDN article for details." + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "" + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "อันดับการพูดคุยล่าสุด" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "ตรวจสอบการสะกด" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "การเติมเต็มชื่อเล่น" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "ส่วนต่อท้ายการเติมเต็มชื่อเล่น" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "การลำดับการเติมเต็มชื่อเล่น" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "" + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "กราฟิก" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "ไม่เรียง" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "บน" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "ล่าง" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "ซ่อน" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "รายชื่อผู้ใช้" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "แสดงชื่อโฮสต์ในรายชื่อผู้ใช้" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "ใช้กล่องแถบฟอนต์และสี" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "แสดงไอค่อนของ User modes" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "ใช้ไอค่อนกราฟิกแทนที่ตัวอักษรในรายชื่อบุคคล" + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "แสดงจำนวนคนที่อยู่ในห้องสนทนา" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "เรียงรายชื่อผู้ใช้ด้วย:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "แสดงรายชื่อผู้ใช้ที่:" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "ในแชนแนลที่เล็กกว่า:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "ปฏิบัติการเมื่อดับเบิ้ลคลิก" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "ข้อมูลทั้งหมดที่จะส่งไปยังเซิฟเวอร์:" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "หน้าต่าง" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "แท็บ" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "ตลอดเวลา" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "แท็บที่ร้องขอเท่านั้น" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "เปิดแท็บพิเศษสำหรับข้อความจากเซิร์ฟเวอร์" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "เปิดแท็บใหม่เมื่อคุณได้รับข้อความส่วนตัว" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "เรียงแท็บตามตัวอักษร" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "แสดงเส้นประในรายชื่อห้องสนทนา" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "ให้ความสนใจแท็บใหม่:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "แสดงตัวสวิตช์แชนแนลที่:" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "ย่อป้ายชื่อแท็บเป็น:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "ต้วหนังสือ." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "แท็บหรือหน้าต่าง" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "เปิดแชนแนลใน:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "เปิดหน้าต่างสนทนาใน:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "เปิดส่วนอรรถประโยชน์ใน:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "เปิด DDC, การเพิกเฉย, การแจ้งเตือน อื่น ๆ, ในแท็บหรือหน้าต่าง?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "ยืนยัน" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "ถามโฟลเดอล์ที่จะเก็บดาวน์โหลด" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "บันทึกโดยที่ไม่ถามอะไรเลย" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "ไฟล์และไดเร็กทอรี่" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "ยอมรับไฟล์ที่ได้รับการเสนอให้อัตโนมัติ:" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "ดาวน์โหลดไฟล์ไปยัง:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "ย้ายไฟล์ที่เสร็จแล้วไปที่:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "บันทึกชื่อเล่นในชื่อไฟล์" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "เปิดหน้าต่าง DCC โดยอัตโนมัติ" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "หน้าต่างส่ง" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "หน้าต่างรับ" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "หน้าต่างคุยเล่น" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "การอัพโหลดหนึ่งๆ:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "ใช้ความเร็วสูงสุดสำหรับการขนย้ายไฟล์หนึ่ง ๆ" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "การดาวน์โหลดหนึ่งๆ:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "รวมการอัพโหลดทั้งหมด:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "ใช้ความเร็วสูงสุดสำหรับทุกไฟล์" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "รวมการดาวน์โหลดทั้งหมด:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "การแจ้งเตือน" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "เปิดการกระพริบถาดไอคอน:" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "เปิดการกระพริบแถบงาน:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "เปิดเสียงบี๊บ:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "เปิดใช้ถามไอคอนของระบบ" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "" + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "ข้อความที่ถูกเน้น" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "ข้อความที่ถูกเน้นเป็นสิ่งที่ชื่อเล่นของคุณกล่าวถึง, ยิ่งกว่านั้น:" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "คำพิเศษสำหรับเน้น:" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "ไม่เน้นชื่อเล่น:" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "ชื่อเล่นสำหรับเน้นเสมอ:" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "ข้อความมาตรฐาน" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "ออก:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "ออกจากแชนแนล:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "ไม่อยู่:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "ไม่อยู่" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "แสดงสถานะไม่อยู่ครั้งเดียว" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "แสดงข้อความไม่อยู่อย่างเดียวกันเพียงครั้งเดียว" + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "เลิกทำเครื่องหมายว่าไม่อยู่โดยอัตโนมัติ" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "เลิกการอยู่ในสถานะที่ไม่อยู่ก่อนที่จะส่งข้อความ" + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "แสดงโหมดในรูปแบบข้อมูลดิบ" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "ส่งข้อความ /WHOIS เวลาที่คนที่อยู่ในรายชื่อแจ้งเตือนได้ออนไลน์" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "ซ่อนแชนแนลเข้าร่วม/ส่วนข้อความ" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "ซ่อนข้อความจากการที่เข้าร่วมหรือออกห้องสนทนาโดยอัตโนมัติ" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "แสดงรายการในโหมดคอมแพ็กต์" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "ใช้ช่องว่างน้อยกว่าระหว่างรายการผู้สนทนา/รายการห้องสนทนา" + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "เวลาหน่วงในการเชื่อมต่ออีกครั้งอัตโนมัติ:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "การบันทึกของระบบ" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "เส้นเลื่อนกลับ:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "ชื่อไฟล์บันทึกระบบ:" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=เซิร์ฟเวอร์ %c=แชนแนล %n=เครือข่าย." + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "ใส่กี่ประทับเวลาในบันทึกระบบ" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "รูปแบบประทับเวลาของบันทึกระบบ:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URL" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(ปิดการทำงาน)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "ที่อยู่ของคุณ" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "ผูกติดไปเป็น:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "มีประโยชน์กับคอมพิวเตอร์ที่มีหลายที่อยู่เท่านั้น" + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "รับที่อยู่ของฉันจากเซิร์ฟเวอร์ IRC" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "ร้องขอเซิร์ฟเวอร์ IRC ด้วยที่อยู่จริงของคุณ. ใช้นี่ถ้าคุณมีที่อยู่เป็น 192.168.*.* !" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "ที่อยู่ไปพีของ DDC:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "อ้างถึงคุณด้วยที่อยู่นี้เมื่อทำการเสนอไฟล์." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "!ปล่อยพอร์ตไว้ที่ศูนย์สำหรับขอบเขตทั้งหมด." + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "เซิร์ฟเวอร์พร็อกซี่" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "ชื่อโฮต์:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "พอร์ต:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "ชนิด:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "ใช้พร็อกซี่สำหรับ:" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "การรับรองพร็อกซี่" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "ชื่อผู้ใช้:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "เลือกไฟล์ภาพ" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "เลือกโฟลเดอร์ดาวน์โหลด" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "เลือกฟอนต์" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "มองหา..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "เปิดโฟลเดอร์ข้อมูล" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "เลือกสี" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "สีข้อความ" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "สี mIRC:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "สีท้องถิ่น:" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "พื้นหน้า:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "พื้นหลัง:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "ส่วนเชื่อมต่อผู้ใช้" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "ข้อมูลใหม่" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "เส้นสัญลักษณ์:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "ข้อความใหม่" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "ผู้ใช้ที่ไม่อยู่" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "การเน้น:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "เหตุการณ์" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "ไฟล์เสียง" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "เลือกไฟล์เสียง" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "ไฟล์เสียง" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "มอ_งหา..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "เล่_น" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "ส่วนเชื่อมต่อผู้ใช้" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "กล่องรับข้อมูล" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "รายการผู้ใช้" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "สวิตช์เปลี่ยนแชนแนล" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "สี" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "การคุยเล่น" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "ขั้นสูง" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "ตั้งค่าเครือข่าย" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "การส่งไฟล์" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "หมวดหมู่" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "คุณไม่สามารถวางแผนภูมิต้นไม้บนส่วนบนหรือส่วนล่าง!\nกรุณาเปลี่ยนเป็นแผนผังแบบ <b>แท็บ</b> ในเมนู <b>มุมมอง</b> เป็นอันดับแรก." + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "" + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "การตั้งค่าบางอย่างที่ถูกเปลี่ยน ต้องการที่จะเริ่มใหม่เพื่อให้เป็นผล." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*คำเตือน*\nการรับ DCC อัตโนมัติไปยังไดเร็กทอรีบ้านของคุณ\nอาจจะอันตรายและสร้างความเสียหายได้. เช่น:\nบางคนอาจจะสามารถส่ง .bash_profile" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "" + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "มีข้อผิดพลากในการวิเคราะห์สตริง" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "สัญญาณนี้ต้องส่ง %d อาร์กิวเมนต์เท่านั้น, $%d ไม่ถูกต้อง" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "พิมพ์ไฟล์ข้อความ" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ ตัวเลข" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "แก้ไขเหตุการณ์" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "โหลดจาก..." + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "ทดสอบทั้งหมด" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "ล้างรายการ" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "คัดลอก URL ที่เลือก" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "คัดลอก" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "บันทึกรายการเป็นไฟล์" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d ops, %d ทั้งหมด" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "เปิด URL irc://เซิร์ฟเวอร์:พอร์ต/แชนแนล" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "" diff --git a/hexchat/po/tr.po b/hexchat/po/tr.po new file mode 100644 index 0000000..8bb927e --- /dev/null +++ b/hexchat/po/tr.po @@ -0,0 +1,6275 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# atekinalp <alper.tekinalp@gmail.com>, 2017 +# atekinalp <alper.tekinalp@gmail.com>, 2017 +# tarakbumba <tarakbumba@gmail.com>, 2014 +# Demiray Muhterem <mdemiray@msn.com>, 2014,2018 +# Demiray Muhterem <mdemiray@msn.com>, 2014,2018 +# Erdoğan Şahin, 2016-2017 +# Erdoğan Şahin, 2017 +# Erdoğan Şahin, 2017 +# Erdoğan Şahin, 2017 +# Erdoğan Şahin, 2016 +# ifthenelse <ifthenelse@gmx.com>, 2013 +# ifthenelse <ifthenelse@gmx.com>, 2013 +# Kerem Kuralay, 2017 +# Kerem Kuralay, 2017 +# osmanos <osman.erkan@yandex.com>, 2014 +# osmanos <osman.erkan@yandex.com>, 2014 +# zeugma <sunder67@hotmail.com>, 2015 +# tarakbumba <tarakbumba@gmail.com>, 2014,2017 +# TingPing <tingping@tingping.se>, 2014,2018 +# TingPing <tingping@tingping.se>, 2014 +# 3494efdfe99795dce7df1bfa0b737fa2, 2013,2016 +# zeugma <sunder67@hotmail.com>, 2015 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-11-03 08:11+0000\n" +"Last-Translator: Demiray Muhterem <mdemiray@msn.com>\n" +"Language-Team: Turkish (http://www.transifex.com/hexchat/hexchat/language/tr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: tr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "HexChat" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "IRC İstemcisi" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "HexChat kullanımı kolay ve işlevleri arttırılabilir bir IRC İstemcisidir. Kişiselleştirilebilir bir arayüz kullanarak birden fazla ağa güvenli şekilde bağlanmanızı ve kullanıcılarla özel olarak veya kanallar üzerinde sohbet etmenizi sağlar. Hatta dosya aktarımı da yapabilirsiniz." + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "HexChat şu özellikleri destekler: DCC, SASL, vekil sunucular, yazım denetimi, alarmlar, günlük kaydı, kişisel temalar ve Python/Perl betikleri." + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "Ana Sohbet Penceresi" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "Başka insanlarla çevrimiçi sohbet edin" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "IM;Sohbet;" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "hexchat" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "Güvenli Kipi Aç" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "HexChat Tema Yöneticisi" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Meşgulüm" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Çıkılıyor" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "KAPALI" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "AÇIK" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "{unset}" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Ağ" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<none>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Kanal" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Bekliyor" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Etkin" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Başarısız" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Tamam" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Bağlan" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Durduruldu" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "%s erişilemiyor\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Hata" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s, \"%s\" öneriyor. Kabul etmek istiyor musunuz?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "Etkin DCC yok\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "_İleti Penceresi Aç" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "_Bir Dosya Gönder" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "_Kullanıcı Bilgisi (WhoIs)" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "_Arkadaş Listesine Ekle" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "_Yoksay" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "O_perator Eylemleri" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Oplar Ver" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Oplar Al" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "Ses Ver" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "Ses Al" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Tekmele/Yasakla" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Kick" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "Ban" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "KickBan" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Kanaldan Ayrıl" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Kanala Gir..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "Giriş yapılacak kanalı ekle:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Sunucu Bağlantıları" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Sunucuyu Pingle" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Sürümü Gizle" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Op" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "hoşçakal" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "%s kullanıcısını kicklemek için sebep gir:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "Dosya Gönder" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "İleti" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Gönder" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Sohbet" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Temizle" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "%s üzerine yazma yetkiniz yok. Bu oturumdan hiç bir şey kaydedilemez." + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* IRC'yi root olarak çalıştırmak aptalca!\n Bir kullanıcı hesabı oluşturup giriş yapmak için kullanmalısın.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "EVET" + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "HAYIR" + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "%s tarafından CTCP yağmuruna tutuluyorsunuz, %s yoksayılıyor\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "%s tarafından MSG yağmuruna tutuluyorsunuz, gui_autoopen_dialog KAPALI olarak ayarlanıyor.\n" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "%s olarak çözüldü" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "Bulunamadı" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "Şu olarak çözüldü:" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "%s çözümleniyor..." + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s çevrimiçi\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s çevrimdışı\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Hiçbir kanala girilmedi. /join #<kanal> deneyin\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Bağlı değil. /server <host> [<port>]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "Sunucu %s zaten %s ağı üzerinde var.\n" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "Sunucu %s ağ %s'e eklendi.\n" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Zaten işaretlendi: %s\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "Zaten geri işaretlendi.\n" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "Çalıştırmak için /bin/sh gerekiyor!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "Mevcut Komutlar:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "Kullanıcı tanımlı komutlar:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "Eklenti tanımlı komutlar:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Daha fazla bilgi için /HELP <komut> veya /HELP -l yazın." + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Bilinmeyen argüman '%s' yok sayıldı." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "Sessizlik (quiet) bu sunucu tarafından desteklenmiyor." + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "Böyle bir eklenti bulunamadı.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "Bu eklenti kaldırmayı reddetti.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <isim> <eylem>, kullanıcı listesinin altına bir düğme ekler" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "ADDSERVER <YeniAğ> <yenisunucu/6667>, ağ listesine yeni bir sunucu ile yeni bir ağ ekler" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <komut>, bulunduğunuz tüm kanallara bir komut gönderiyor" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "ALLCHANL <komut>, mevcut sunucudaki tüm kanallara bir komut gönderir" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <komut>, bulunduğunuz tüm sunuculara bir komut gönderir" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "AWAY [<sebep>], sizi uzak olarak ayarlar (ayarı kaldırmak için /BACK kullanın)" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "BACK, seni geri getirir (uzağa değil)" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <mask> [<yasaktipi>], mevcut kanaldaki maskeyle eşleşen herkesi yasaklar. Zaten kanalda olanlar tekmelenmez (chanop'a ihtiyaç duyar)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <değişken> [<değer>]" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "CHARSET [<kodlama>], geçerli bağlantı için kullanılan kodlamayı alır veya ayarlar" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "CLEAR [ALL|HISTORY|[-]<miktar>], Geçerli metin penceresini veya komut geçmişini temizler" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "CLOSE [-m], Geçerli sekmeyi kapatır, tek açık sekme ise pencereyi kapatır veya \"-m\" bayrağı ile tüm sorguları kapatır." + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <kod|joker>, bir ülke kodu bulur, örneğin: au = avustralya" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <rumuz> <ileti>, CTCP iletisini rumuza gönderir, genel mesajlar VERSION ve USERINFO'dur" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "CYCLE [<kanal>], geçerli veya verilen kanaldan kopar ve hemen yeniden katılır" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <takmaad> - önerilen bir dosyayı kabul et\nDCC SEND [-maxcps=#] <takmaad> [dosya] - birine bir dosya gönder\nDCC PSEND [-maxcps=#] <takmaad> [dosya] - pasif kip kullanarak bir dosya gönder\nDCC LIST - DCC listesini göster\nDCC CHAT <takmaad> - birine DCC SOHBETi öner\nDCC PCHAT <takmaad> - pasif kip kullanarak birine DCC SOHBETi öner\nDCC CLOSE <tip> <takmaad> <dosya> örnek:\n /dcc close send alpert file.tar.gz" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <rumuz>, mevcut kanaldaki rumuzdan chanhalf-op durumunu kaldırır (chanop'a ihtiyaç duyar)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <isim>, kullanıcı listesinin altındaki bir düğmeyi siler" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <rumuz>, mevcut kanaldaki rumuzdan chanop durumunu kaldırır (chanop'a ihtiyaç duyar)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <rumuz>, mevcut kanaldaki rumuzdan ses durumunu kaldırır (chanop'a ihtiyaç duyar)" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, Sunucudan ayrılır" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "DNS <rumuz|host|ip>, Bir IP veya ana makine adını çözümler" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "DOAT <kanal,liste,/ağ> <command>" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <metin>, Metni yerel olarak basar" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <komut>, komutu çalıştırır. -o bayrağı kullanılırsa çıkış geçerli kanala gönderilir, yoksa geçerli metin kutusuna yazdırılır" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, sürece SIGCONT gönderir" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9], geçerli oturumda çalışan bir exec'i öldürür. -9 verilirse sürece SIGKILL gönderilir" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, sürece SIGSTOP gönderir" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, verileri sürecin standart girdisine gönderir" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "EXPORTCONF, HexChat ayarlarını dışa aktarır" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, geçerli sunucunun gönderim kuyruğunu temizler" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <host> [<port>], bir sunucu aracılığıyla vekiller, port varsayılan olarak 23" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <rumuz> [parola], Hayalet bir rumuzu öldürür" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <rumuz>, rumuza chanhalf-op statüsünü verir (chanop'a ihtiyaç duyar)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <parola>, kendinizi nickserv'e tanımlar" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <mask> <tipler..> <seçenekler..>\n mask - yoksayılacak makine maskesi, örn: *!*@*.aol.com\n tipler - yoksayılacak veri tipleri, şunlardan biri veya tamamı:\n PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n seçenekler - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <rumuz> [<kanal>], birisini bir kanala çağırır, varsayılan olarak geçerli kanal (chanop'a ihtiyaç duyar)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <kanal>, kanala katılır" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "KICK <rumuz> [sebep], rumuzu geçerli kanaldan tekmeler (chanop'a ihtiyaç duyar)" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "KICKBAN <rumuz> [sebep], yasaklar, sonra rumuzu mevcut kanaldan tekmeler (chanop'a ihtiyaç duyar)" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, yeni bir gecikme kontrolü yapmaya zorlar" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "LASTLOG [-h] [-m] [-r] [--] <string>, tamponda bir karakter dizisini arar\n Bulunan karakter dizisini vurgulamak için -h kullan\n Büyük/küçük karakter duyarlı eşleşme için -m kullan\n Karakter dizisi bir Düzenli İfade olduğunda -r kullan\n '-r' gibi bir karakter dizisi araken seçenekleri sonlandırmak için -- (iki tire) kullan." + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <dosya>, bir eklenti veya betik dosyası yükler" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, Mevcut kanaldaki tüm chanhalf-ops'ları toplu olarak deop'lar (chanop'a ihtiyaç duyuyor)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, Mevcut kanaldaki tüm chanops'ları toplu olarak deop'lar (chanop'a ihtiyaç duyuyor)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <eylem>, eylemi geçerli kanala gönderir (eylemler 3. şahsa yazılır, örneğin /me jumps)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "MHOP, Mevcut kanaldaki tüm kullanıcıları toplu olarak hop'lar (chanop'a ihtiyacı var)" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, Sizin dışındaki herkesi geçerli kanaldan toplu olarak tekmeler (chanop'a ihtiyaç duyar)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, Mevcut kanaldaki tüm kullanıcıları toplu olarak op'lar (chanop'a ihtiyacı var)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "MSG <rumuz> <mesaj>, özel bir ileti gönder, son takma ada göndermek için \".\" mesajla veya dcc sohbeti için \"= \" ile ön ekle" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "NAMES [kanal], Kanaldaki rumuzları listeler" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <rumuz> <mesaj>, bir CTCP bildirimi gönderir" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <anamakineadı> [<port>]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <rumuz>, rumuzunuzu belirler" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "NOTICE <rumuz/kanal><ileti>, bir bildirim gönderir" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [-n ağ1 [, ağ2, ...]] [<rumuz>], bildirim listenizi görüntüler veya ona birisini ekler" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <rumuz>, rumuza chanop durumu verir (chanop'a ihtiyaç duyar)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "BÖLÜM [<kanal>] [<neden>], kanaldan ayrıl, varsayılan olarak mevcut kanaldan" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <rumuz | kanal>, CTCP rumuz veya kanalı ping'ler" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "QUERY [-nofocus] <rumuz> [mesaj], birine yeni bir özel mesaj penceresi açar ve isteğe bağlı olarak bir mesaj gönderir" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "QUIET <mask> [<quiettype>], sunucu tarafından destekleniyorsa mevcut kanaldaki mask ile eşleşen herkesi sessizleştirir." + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<sebep>], geçerli sunucudan bağlantıyı keser" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <metin>, metni ham formda sunucuya gönderir" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<host>] [<port>] [<parola>], Sadece şu anki sunucuya yeniden bağlanmak için /RECONNECT olarak çağırılabilir veya açık tüm sunuculara yeniden bağlanmak için /RECONNECT ALL ile çağrılabilir" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<host>] [<port>] [<password>], Sadece geçerli sunucuya tekrar bağlamak için /RECONNECT olarak veya tüm açık sunuculara yeniden bağlanmak için /RECONNECT ALL olarak çağrılabilir" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "RECV <metin>, Ham verileri HexChat'e gönderir, sanki IRC sunucusundan alınmış gibi" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "RELOAD <isim>, bir eklenti veya betik dosyası yeniden yükler" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <metin>, metni geçerli penceredeki nesneye gönderir" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <rumuz> [<dosya>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <host> <port> <kanal>, bir kanala bağlanır ve katılır" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <host> <port> <kanal>, bir kanala bağlanır ve katılır" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "SERVER [-ssl] <host> [<port>] [<parola>], bir sunucuya bağlanır, normal bağlantılar için varsayılan port 6667 ve ssl bağlantıları için 6697 olur" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <host> [<port>] [<parola>], bir sunucuya bağlanır, varsayılan bağlantı noktası 6667'dir" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-off|-on] [-quiet] <değişken> [<değer>]" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "SETCURSOR [-|+] <konum>, imleci girdi kutusunda yeniden konumlandırın" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "SETTAB <yeni isim>, bir sekmenin adını değiştir, tab_trunc sınırı yine de geçerlidir" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "SETTEXT <yeni metin>, giriş kutusundaki metni değiştir" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<konu>], konuyu verilirse ayarlar, yoksa geçerli konuyu gösterir" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "\nTRAY -f <zamanaşımı> <dosya1> [<dosya2>] İki simge arasında yanıp sön.\nTRAY -f <dosyaadı> Tepsiyi sabit bir simgeye ayarla.\nTRAY -i <sayı> Tepsiyi dahili bir simge ile yakıp söndür.\nTRAY -t <metin> Tepsi ipuöunu ayarla.\nTRAY -b <başlık> <metin> Tepsi balonunu ayarla." + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <mask> [<mask> ...], belirtilen maskların yasağını kaldırır." + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <mask> [SESSİZ]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <isim>, bir eklenti veya betik dosyasını kaldırır" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "UNQUIET <mask> [<mask> ...], sunucu tarafından destekleniyorsa, belirtilen maskların sessizliğini kaldırır." + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, tarayıcınızda bir URL açar" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "USELECT [-a] [-s] <rumuz1> <rumuz2> vs, kanal kullanıcı listesindeki rumuzları vurgular" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <rumuz>, birisine ses durumu verir (chanop'a ihtiyaç duyar)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <mesaj>, mesajı tüm kanallara yazar" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <message>, iletiyi geçerli kanaldaki tüm chanop'lara gönderir" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "Şunun için kullanıcı Komutu: %s\n" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "Kullanım: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nBu komutta yardım yok.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "Böyle bir komut yok.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "Kullanıcı komutu için hatalı bağımsız değişkenler.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "Çok fazla özyinelemeli kullanıcı komutu, iptal ediliyor." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "Bilinmeyen Komut %s. /help dene\n" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "hexchat_plugin_init sembolü yok; bu gerçekten bir HexChat eklentisi mi?" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "*tident isteğini %s'den %s olarak sunuyor" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "*\tidentd sunucusunu başlatırken hata: %s" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "IDENTD <port> <kullanıcıadı>" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "Zamanlayıcı %d silindi.\n" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "Böyle bir ref numarası bulunamadı.\n" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "Kurulu zamanlayıcı yok.\n" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "Ref# Saniye Tekrar Komut \n" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "%5d %8.1f %7d %s\n" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Bunun SSL özellikli bir sunucu ve bağlantı noktası olduğundan emin misiniz?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "Ana makine adı %s çözümlenemiyor\nIP Ayarlarınızı kontrol edin!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "Vekil taraması başarısız.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "%s içindeki sonraki sunucuya geçiliyor...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "Uyarı:\"%s\" karakter seti bilinmiyor. Ağ %s için hiçbir dönüşüm uygulanmayacak." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "%C18*%O$t%C18$1%O bildirim listesine eklendi." + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "%C22*%O$t%C22$1%O: %C18$2%O, %C24$4%O 'da %C26$3%O tarafından" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "%C22*%O$tKatılamazsınız %C22$1 %O(%C20Yasaklandınız%O)." + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "%C29*%O$tÖzellikler onaylandı: %C29$2%O" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "%C29*%O$tÖzellikler kaldırıldı: %C29$2%O" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "%C23*%O$tDesteklenen özellikler: %C29$2%O" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "%C23*%O$tIstenen özellikler: %C29$1%O" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "%C24*%O$t%C28$1%O artık bu şekilde biliniyor %C18$2%O" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O şunu yasaklar %C18$2%O" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "%C22*%O$tKanal %C22$1%O şurada oluşturuldu %C24$2%O" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O, %C18$2%O'dan kanal yarı operatör durumunu kaldırır" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O kanal operatörünün durumunu 'den kaldırır %C18$2%O" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O, %C18$2%O üzerinde sesi kaldırır" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O, %C18$2%O üzerinden sesi kaldırır" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O, %C18$2%O'e kanal yarı operatör durumunu verir" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%C, %C18$2%O üzerinde davet muafiyetini ayarlar" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%UKanal Kullanıcılar Konu" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "%C22*%O$t%C26$1%O, %C24$2$3%O kipi %C22$4%O kullanıcısı için ayarlandı" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "%C22*%O$tKanal %C22$1%O kipler: %C24$2" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O, %C18$2%O'e kanal operatör durumu verir" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O, %C18$2%O üzerinde sessiz ayarlar" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O %C18$2%O üzerindeki muafiyeti kaldırır" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O %C18$2%O üzerinde davet muafiyetini kaldırır" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "%C22*%O$t%C26$1%O kanal anahtar kelimesini kaldırır" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "%C22*%O$t%C26$1%O kullanıcı sınırını kaldırır" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O kanal anahtar kelimesini %C24$2%O e ayarlar" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O kanal sınırını %C24$2%O a ayarlar" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O %C18$2%O üzerinde yasağı kaldırır" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O %C18$2%O üzerinde sessizliği kaldırır" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "%C22*%O$tKanal %C22$1%O url: %C24$2" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O %C18$2%O kullanıcısına konuşma izni verdi" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "%C23*%O$tBağlı. Giriş yapılıyor." + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "%C23*%O$t%C29$1%C'e bağlanıyor (%C23$2:$3%O)" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "%C20*%O$tBağlantı başarısız (%C20$1%O)" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "%C24*%O$tBir CTCP %C24$1%C alındı,%C18$2%O'dan" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "%C24*%C$tBir CTCP %C24$1%C alındı %C18$2%C'dan (%C22$3%C'a)%O" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "%C24*%O$tBir CTCP Sesi %C24$1%C alındı %C18$2%O'dan" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "%C24*%O$tBir CTCP Sesi %C24$1%C alındı %C18$2%C dan (%C22$3%O a)" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "%C23*%O$tDCC CHAT %C18$1%O iptal edildi." + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "%C24*%O$tDCC CHAT şurası ile bağlantı sağlandı %C18$1%C %C30[%C24$2%C30]%O" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "%C20*%O$tDCC CHAT %C18$1%O a kaybedildi (%C20$4%O)" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "%C24*%O$t%C18$1%O den bir DCC SOHBET isteği alındı" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "%C24*%O$t%C18$1%O e DCC SOHBETi öneriliyor" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "%C24*%O$t%C18$1%O e zaten SOHBET öneriliyor" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "%C20*%O$t%C18$2%O e DCC $1 bağlantı denemesi başarısız (%C20$3%O)" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "%C23*%O$t%C23$1%C' alındı, %C18$2%O dan" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "%C16,17 Tip To/From Durum Boyut Kon Dosya" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "%C20*%O$t%C18$1%O.$a010%C23*%O dan bozuk bir DCC isteği alındı$tPaket içeriği: %C23$2%O" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "%C24*%O$tÖneriliyor '%C24$1%O', %C18$2%O a" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "%C23*%O$tBöyle DCC teklifi yok." + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "%C23*%O$tDCC RECV '%C23$2%O', %C18$1%O a iptal edildi." + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "%C24*%O$tDCC RECV '%C23$1%O', %C18$3%O dan tamalandı %C30[%C24$4%O cps%C30]%O" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$tDCC RECV bağlantısı sağlandı %C18$1 %C30[%O%C24$2%C30]%O" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "%C20*%O$tDCC RECV '%C23$1%O', %C18$3%O dan başarısız (%C20$4%O)" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "%C20*%O$tDCC RECV: '%C23$1%C' yazma için açılamadı (%C20$2%O)" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "%C23*%O$t%C24$1%C' dosyası zaten var, '%C23$2%O' olarak kaydediliyor." + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "%C24*%O$t%C18$1%C, '%C23$2%C' için devam etmek istedi, %C24$3%O dan." + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "%C23*%O$tDCC SEND '%C23$2%C', %C18$1%O a iptal edildi." + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "%C24*%O$tDCC SEND '%C23$1%C',%C18$2%C a tamamlandı %C30[%C24$3%C cps%C30]%O" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$tDCC GÖNDERME bağlantısı %C18$1 %C30[%O%C24$2%C30]%O ile sağlandı" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "%C20*%O$tDCC SEND '%C23$1%C', %C18$2%C a başarısız (%C20$3%O)" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "%C24*%O$t%C18$1%C öneriyor '%C23$2%C' (%C24$3%O bayt)" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "%C20*%O$tDCC $1 '%C23$2%C', %C18$3%O a takıldı, iptal ediliyor." + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "%C20*%O$tDCC $1 '%C23$2%C', %C18$3%O a zaman aşımına uğradı, iptal ediliyor." + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "%C24*%O$t%C18$1%O uyarı listesinden silindi." + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "%C20*%O$tBağlantı kesildi (%C20$1%O)" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "%C24*%O$tIP ni bul: %C30[%C24$1%C30]%O" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "%O%C18$1%O yoksayma listesine eklendi." + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "%O%C18$1%O üzerinde yoksayma değiştirildi." + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "%C16,17" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "%C16,17 Makineadı PRIV NOTI CHAN CTCP DCC INVI UNIG" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "%O%C18$1%O yoksayma listesinden kaldırıldı." + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "%OYok sayma listesi boş." + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "%C20*%O$tKatılamadı %C22$1%C (%C20Kanala sadece davetiye ile girilir%O)" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "%C24*%O$t%C22$1%O a %C18$2%O tarafından davet edildiniz (%C29$3%O)" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "%C23*$t$1 ($3%C23) katıldı" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "%C20*%O$tKatılamadı %C22$1%C (%C20Anahtar kelime gerektirir%O)" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "%C22*%O$t%C26$1%C, %C18$2%C i %C22$3%C dan tekmeledi (%C24$4%O)" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "%C19*%O$t%C19 %C26$1%C tarafından öldürüldünüz (%C20$2%O)" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "%C29*%O$t%C29MOTD Atlandı%O" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "%C23*%O$t%C28$1%C zaten kullanımda. %C18$2%O ile yeniden deneniyor..." + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "%C23*%O$t%C28$1%C hatalı. %C18$2%O ile yeniden deneniyor..." + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "%C20*%O$tTakma ad hatalı ya da zaten kullanımda. Başka bir tane için /NICK dene." + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "%C20*%O$tBöyle bir DCC yok." + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "%C23*%O$tŞu anda çalışan bir süreç yok" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "%C23*%O$tUyarı: %C18$1%C uzakta (%C24$2%O)" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "%C23*%O$tUyarı: %C18$1%C geri döndü" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tBildirim listesi boş." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "%C16,17 Uyarı Listesi" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "%C23*%O$t%C23$1%O kullanıcı uyarı listesinde." + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "%C23*%O$tUyarı: %C18$1%C çevrimdışı (%C29$3%O)" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "%C23*%O$tUyarı: %C18$1%C çevrimiçi (%C29$3%O)" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "%C24*$t$1 ($2%C24) ayrıldı" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "%C24*$t$1 ($2%C24) ayrıldı ($4)" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "%C24*%O$t%C18$1%C den ping cevabı: %C24$2%O saniye" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "%C20*%O$t%C24$1%O saniyedir ping cevabı yok, bağlantı kesiliyor." + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "%C24*%O$tA süreci zaten çalışıyor" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "%C24*$t$1 çıktı ($2)" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "%C24*%O$t%C26$1%C %C30[%C24$2%C30]%O kiplerini ayarladı" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "%O-%C29$1/Wallops%O-$t$2" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "%C24*%O$t%C18$1%O için IP adresi aranıyor..." + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "%C23*%O$t%C18$1%O olarak SASL ile yetkilendiriliyor (%C24$2%O)" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "%C29*%O$tBağlı." + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "%C29*%O$t%C29$1%O aranıyor" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "%C23*%O$tÖnceki bağlantı girişimi durduruldu (%C24$1%O)" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "%C22*%O$t%C22$1%C için konu: $2%O" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "%C22*%O$t%C26$1%C konuyu şuna değiştirdi: $2%O" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "%C22*%O$t%C22$1%C odası için konu %C26$2%C kullanıcısı tarafından ayarlandı (%C24$3%O)" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C20*%O$tBilinmeyen makine. Belki yanlış yazdın?" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "%C20*%O$t%C22$1%C e katılınamadı (%C20Kullanıcı sınırı aşıldı%O)" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "%C22*%O$t%C22$1%C da kullanıcılar: %C24$2%O" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%C uzakta %C30(%C23$2%O%C30)%O" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "%C23*%O$t%C28[%C18$1%C28] %OWHOIS listesi sonu." + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O boşta %C23$2%O" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O boşta %C23$2%O, giriş: %C23$3%O" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O Gerçek Makine: %C23$2%O, Gerçek IP: %C30[%C23$3%C30]%O" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "%C19*%O$tŞimdi %C22$2%O odasında konuşma iznin var" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "%C19*%O$t%C22$2%C den %C26$3%O tarafından tekmelendiniz (%C20$4%O)" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "%C19*%O$tKanal %C22$3%O dan ayrıldınız" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "%C19*%O$tKanal %C22$3%C dan ayrıldınız (%C24$4%O)" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "%C20*%O$t%C18$1%O i %C22$2%O a davet ettiniz (%C24$3%O)" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "%C20*%O$tArtık %C18$2%O olarak biliniyorsunuz" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "Günlük şuradan yüklendi" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** GÜNLÜKLEME %s de SONLANDIRILIYOR\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** GÜNLÜKLEME %s de BAŞLIYOR\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "* Yazma için günlük dosyası(ları) açılamıyor.\n%s üzerindeki izinleri kontrol edin" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "Sol mesaj" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "Sağ mesaj" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "IP adresi" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Kullanıcı adı" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "Katılan kişinin rumuzu" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "Katılınan kanal" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "Kişinin makine adresi" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "Kişinin hesabı" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Rumuz" + +#: src/common/text.c:980 +msgid "The action" +msgstr "Eylem" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "Kip karakteri" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "Tanımlanan metin" + +#: src/common/text.c:987 +msgid "The text" +msgstr "Metin" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "Mesaj" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Sunucu Adı" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "Kabul Edilen Yetenekler" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "Kaldırılan Yetenekler" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "Sunucu Yetenekleri" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "İstenen Yetenekler" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Eski takma ad" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Yeni takma ad" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "Konuyu değiştiren kişinin takma adı" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Konu" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "Tekmeleyen kişinin takma adı" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "Tekmelenen kişinin takma adı" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "Kanal" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "Sebep" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "Çıkan kişinin takma adı" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "Zaman" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "Yaratıcı" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Takma Ad" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Sebep" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Makine" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "Kimden" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "x.x biçiminde zaman (aşağıya bakınız)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "Gidecek olduğu Kanal" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "Ses" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "Kişinin takma adı" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "CTCP olayı" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "Anahtarı ayarlayan kişinin takma adı" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "Anahtar" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "Sınırı belirleyen kişinin takma adı" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "Sınır" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "Op'layan kişinin takma adı" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "Op'lanan kişinin takma adı" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "Halfop'lanan kişinin takma adı" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "Halfop'layan kişinin takma adı" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "Ses'leyen kişinin takma adı" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "Ses'lenen kişinin takma adı" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "Yasaklayan kişinin takma adı" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "Yasaklama maskesi" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "Sessizleyen kişinin takma adı" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "Sessizlik maskesi" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "Anahtarı kaldıran kişinin takma adı" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "Sınırı kaldıran kişinin takma adı" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "Deop'layan yapan kişinin takma adı" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "Deop edilmiş kişinin takma adı" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "Dehalfop'u yapan kişinin takma adı" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Dehalfop'lanan kişinin takma adı" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "Devoice'ing yapan kişinin takma adı" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "Devoice'lanan olan kişinin takma adı" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "Yasaklamayı kaldıran kişinin takma adı" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "Sessizliği kaldıran kişinin takma adı" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "Muaf tutan kişinin takma adı" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "Muaf maskesi" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "Muafiyeti kaldıran kişinin takma adı" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "Daveti yapan kişinin nicki" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "Davet maskesi" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "Daveti kaldıran kişinin takma adı" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "Kipi ayarlayan kişinin takma adı" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "Kip işareti (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "Kip harfi" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "Üzerinde ayarlanmış olan kanal" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Tam isim" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Kanal Üyeliği/\"bir IRC operatörüdür\"" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Sunucu Bilgileri" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Boşta kalma zamanı" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Giriş zamanı" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Uzakta olma sebebi" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Mesaj" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Hesap" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "Gerçek kullanıcı@makine" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "Gerçek IP" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Kanal Adı" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "Mekanizma" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "Ham Numerik veya Tanımlayıcı" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Metin" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Seni davet eden kişinin takma adı" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Kullanıcılar" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "Kullanılan Takma ad" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Denenen kullanıcı adı" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Port" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "Kipler karakter dizisi" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "DCC Türü" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Dosya adı" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Hedef dosya adı" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "Yol ismi" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Konum" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Boyut" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "DCC Karakter Dizisi" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "Uzak olma Sebebi" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "Bildirim ögelerinin sayısı" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Eski Dosya adı" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Yeni Dosya adı" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Alıcı" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Makine maskesi" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Makine Adı" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "Paket" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "Saniye" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "Davet edilen kişinin rumuzu" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Yasak maskesi" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "Yasaklayan" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Yasaklanma zamanı" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "Ses dosyası okunamıyor:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "Uzak ana makine soketi kapattı" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "Bağlantı reddedildi" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "Ana makineye bir rota yok" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Bağlantı zaman aşımı" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "Bu adres atanamıyor" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "Bağlantı eş tarafından sıfırlandı" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "Ascension Adası" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Birleşik Arap Emirlikleri" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "Havacılık ile İlgili Alanlar" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Afganistan" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Antigua ve Barbuda" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Anguila" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Arnavutluk" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Ermenistan" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Hollanda Antilleri" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Antartika" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Arjantin" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "DNS'i Ters Çevir" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Amerikan Samoası" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "Asya-Pasifik Bölgesi" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Avusturya" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Avustralya" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "Aland Adaları" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Azerbaycan" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Bosna-Hersek" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Bangladeş" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Belçika" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Bulgaristan" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Bahreyn" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "İşletmeler" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Brunei Darü's-Selam" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Bolivya" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Brezilya" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Bahamalar" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Bhutan" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Bouvet Adası" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Botsvana" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Belarus" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Kanada" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "Katalan" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Cocos Adaları" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "Demokratik Kongo Cumhuriyeti" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "Orta Afrika Cumhuriyeti" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Kongo" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "İsviçre" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "Fildişi Sahili" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Cook Adaları" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Şili" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Kamerun" + +#: src/common/util.c:738 +msgid "China" +msgstr "Çin" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Kolombiya" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Internic Ticari" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "Kooperatifler" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Kosta Rika" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "Sırbistan ve Karadağ" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Küba" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Yeşil Burun Adaları" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Christmas Adası" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Kıbrıs" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "Çek Cumhuriyeti" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "Doğu Almanya" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Almanya" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Cibuti" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Danimarka" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Dominika" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "Dominik Cumhuriyeti" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Cezayir" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Ekvador" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Eğitim Kurumu" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Estonya" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Mısır" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Batı Sahra" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Eritre" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "İspanya" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Etiyopya" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "Avrupa Birliği" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Finlandiya" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Fiji" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Falkland Adaları" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Mikronezya" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Faroe Adaları" + +#: src/common/util.c:770 +msgid "France" +msgstr "Fransa" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Büyük Britanya" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Gürcistan" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Fransız Guyanası" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "Manş Adaları" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Gana" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Cebelitarık" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Grönland" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Gambiya" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Gine" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Hükümet" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Guadeloupe" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Ekvator Ginesi" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Yunanistan" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Güney Georgia ve Güney Sandwich Adaları" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Gine-Bissau" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Guyana" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Heard Adası ve McDonald Adaları" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Hırvatistan" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Macaristan" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Endonezya" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "İrlanda" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "İsrail" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "Man Adası" + +#: src/common/util.c:801 +msgid "India" +msgstr "Hindistan" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "Bilgi niteliğinde" + +#: src/common/util.c:803 +msgid "International" +msgstr "Uluslararası" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Britanya Hint Okyanusu Toprakları" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Irak" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "İran" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "İzlanda" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "İtalya" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Jamaika" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Ürdün" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "Şirket İşleri" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Japonya" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Kenya" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Kırgızistan" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Kamboçya" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Komorlar" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "Saint Kitts ve Nevis" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Kuzey Kore" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Güney Kore" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Kuveyt" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Cayman Adaları" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Kazakistan" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Lübnan" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Saint Lucia" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Lihtenştayn" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Liberya" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Litvanya" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Lüksemburg" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Letonya" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Libya" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Fas" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Monako" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Moldova" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "Karadağ" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "Amerika Birleşik Devletleri Tıbbi" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Madagaskar" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Marşal Adaları" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Ordu" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Makedonya" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Moğolistan" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Makao" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "Mobil Cihazlar" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Kuzey Mariana Adaları" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Martinik" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Moritanya" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Mauritus" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "Müzeler" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Maldivler" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "Meksika" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Malezya" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Mozambik" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Namibya" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "Bireyin İsimleri" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Yeni Kaledonya" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Nijer" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Internic Ağ" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Norfolk Adası" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Nijerya" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Nikaragua" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Hollanda" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Norveç" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "Yeni Zelanda" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Umman" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "Internic Kâr Amacı Gütmeyen Kuruluş" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Fransız Polinezyası" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Papua Yeni Gine" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Filipinler" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Polonya" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "Aziz Pierre ve Miquelon" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Porto Riko" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "Uzmanlıklar" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "Filistin Bölgesi" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Portekiz" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Paraguay" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Katar" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Yeniden Birleşme" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Romanya" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "Eski Tarz ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "Sırbistan" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Rusya Federasyonu" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Ruanda" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Suudi Arabistan" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Solomon Adaları" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Seyşeller" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Sudan" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "İsveç" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Singapur" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "St. Helena" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Slovenya" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard ve Jan Mayen Adaları" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "Slovakya" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Somali" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Surinam" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "Güney Sudan" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "Sao Tome ve Principe" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Eski SSCB" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Suriye" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Svaziland" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Turks ve Caicos Adaları" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Çad" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "İnternet İletişim Hizmetleri" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "Fransız Güney Bölgesi" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Tayland" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Tacikistan" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Doğu Timor" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Türkmenistan" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Tunus" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Türkiye" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "Gezi ve Turizm" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Trinidad ve Tobago" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Tayvan" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Tanzanya" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Ukrayna" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Birleşik Krallık" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "Amerika Birleşik Devletleri" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Uruguay" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Özbekistan" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Vatikan Şehir Devleti" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "Vincent ve Grenadinler" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "İngiliz Virgin Adaları" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "ABD Virgin Adaları" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "Wallis ve Futuna Adaları" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "Yetişkinlere Yönelik Eğlence" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Yemen" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Yugoslavya" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Güney Afrika" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Zambiya" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Zimbabve" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "Oturum veri yoluna bağlanılamadı" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "NameHasOwner'ı tamamlanamadı" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "Komut tamamlanamadı" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "uzaktan erişim" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "DBUS kullanarak uzaktan erişim için eklenti" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Oturum veri yoluna bağlanılamadı: %s\n" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "%s edinilemedi: %s\n" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Karakter Tablosu" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "Yasaklar" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "Muaflar" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "Muaf" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "Davetler" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Davet et" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "Sessizler" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "Sessiz" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "Maske kopyala" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "%s %s tarafından %s de" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "Girdi kopyala" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "Bağlı değil." + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "Bazı yasakları seçmelisiniz." + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "%s içindeki listelenen tüm ögeleri kaldırmak istediğinizden emin misiniz?" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "Tür" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Maske" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "Nereden" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Tarih" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Yalnızca kanal sekmesindeyken Yasak Listesi penceresini açabilirsiniz." + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "Yasak Listesi (%s) - %s" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Sil" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Kes" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Yenile" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "%d/%d kullanıcı %d/%d kanalda görüntüleniyor." + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Bir çıktı dosyası adı seçin" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "_Kanala Katıl" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "Kanal _Adını Kopyala" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "Konu _Metinini Kopyala" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "Kanal Listesi (%s) - %s" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "_Arama" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "_İndirme Listesi" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "_Listeyi Kaydet..." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "Sadece şunları göster:" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "kanallar" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "a" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "kullanıcılar." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "Buraya bak:" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Kanal adı" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "Arama türü:" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "Basit Arama" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "Desen Eşleşmesi (Joker Karakterler)" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "Düzenli İfade" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Bul:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "%s'a dosya gönder" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "Bu dosya devam ettirilemez." + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "Dosyaya erişilemiyor: %s\n%s\nDevam edilemez." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "İndirme dizinindeki dosya sunulan dosyadan daha büyük. Devam etmek mümkün değil." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "Aynı dosya iki kişi tarafından devam ettirilemez." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "Yüklemeler ve İndirmeler - %s" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Durum" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Dosya" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "Tahmini Kalan Süre" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Her ikisi de" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "Yüklemeler" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "İndirmeler" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "Ayrıntılar" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "Dosya:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "Adres:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "İptal Et" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Kabul et" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Devam et" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "Klasörü Aç..." + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "DCC Sohbet Listesi - %s" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Alınan" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Gönderilen" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "Başlama Zamanı" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "Ekle" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Sil" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "İptal" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Kaydet" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "Sunuculara otomatik olarak bağlanma" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "Farklı bir yapılandırma dizini kullan" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "Herhangi bir eklentiyi otomatik olarak yükleme" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "Eklenti/betik dosyası otomatik yükleme dizinini göster" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "Kullanıcı yapılandırma dizini göster" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "irc://server:port/channel?key URL'ini aç" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "Komutu çalıştır:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "Varolan bir HexChat'de URL aç veya komut çalıştır" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Küçültülmeye başlayın. Seviye 0=Normal 1=Simge 2=Tepsi" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "seviye" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "Sürüm bilgisini göster" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "Yazı tipi açılamadı:\\:n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "Arama tampon bellekleri boş.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d bayt" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Ağ gönderme kuyruğu: %d bayt" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "Komutu Çalıştır eylemi, Veri 1'deki verileri, tuş dizisine bastığınız giriş kutusuna yazılmış gibi çalıştırır. Böylece, metin (kanal/kişiye gönderilecek), komutlar veya kullanıcı komutlarını içerebilir. Verilerdeki tüm \\n karakterleri çalıştırdığınızda, ayrı komutları birbirinden ayırmak için kullanılır; böylece birden fazla komut çalıştırmak mümkündür. Çalışan gerçek metin de bir \\ kullanmak istiyorsanız, \\\\ girin" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "Sayfayı Değiştir komutu not defterindeki sayfalar arasında geçiş yapar. Veri 1'i, geçiş yapmak istediğiniz sayfaya ayarlayın. Veri 2 herhangi bir şeye ayarlanırsa, geçiş mevcut konuma göre olacaktır. En güncel ve önemli etkinliğe sahip olan sayfaya geçmek için Veri 1'i otomatik olarak ayarlayın (önce sorgular, ardından vurgulanan kanallar, diyaloğu olan kanallar, diğer verilerle kanallar)" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "Arabelleğe Ekle komutu, Veri 1'in içeriğini, geçerli imleç konumunda tuş sırasının basıldığı girdiye yerleştirecektir" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "Sayfa Kaydırma komutu, metin parçacıklarını bir sayfa veya bir satır yukarı veya aşağı doğru kaydırır. Veri 1'i Üst, Alt, Yukarı, Aşağı, +1 veya -1 değerlerine ayarlayın." + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "Tampon Ayarla komutu, anahtar dizisinin girildiği girdiyi Veri 1 içeriğine ayarlar" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "Son Komut komutu girdiyi, girilen son komutu içerecek şekilde ayarlar - bir kabuğa basılmasıyla aynıdır" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "Sonraki Komut komutu girdiyi, girilen sonraki komutu içerecek şekilde ayarlar - bir kabukta aşağı basma ile aynı" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "Bu komut, eksik bir takma ad veya komutu tamamlamak için girişteki metni değiştirir. Veri 1 ayarlanırsa, bir dizedeki çift tab, sonraki takma adı değil son takma adı seçecektir" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "Bu komut, takma adlar listesinde yukarı ve aşağı kayar. Veri 1 herhangi bir şeye ayarlanırsa, yukarı doğru kaydırılır, yoksa aşağı kaydırır" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "Bu komut, girişte girilen son kelimeyi değiştirme listesine karşı kontrol eder ve bir eşleşme bulursa onu değiştirir" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "Bu komut, ön sekmeyi bir sola doğru hareket ettirir" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "Bu komut, ön sekmeyi bir sağa doğru hareket ettirir" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "Bu komut geçerli sekme ailesini sola taşır" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "Bu komut, geçerli sekme ailesini sağa taşır" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "Girdi satırını geçmişe it ancak sunucuya göndermeyin" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "Tuş bağları yapılandırması yüklenirken bir hata oluştu" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "Eylem hakkında yardım bilgisi almak için bir satır seçin." + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "Klavye Kısayolları - %s" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "Bu dosya yazılamıyor." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "Bu dosya okunamıyor." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "Bu maske zaten var." + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Özel" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Bildiri" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "Yoksayma" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "Tüm yoksaymaları kaldırmak istediğinizden emin misiniz?" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "Yoksaymak için maske girin:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "Yoksayma listesi - %s" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Yoksayma İstatistikleri:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Kanal:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Özel:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Not:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Davet Et:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "Ekle..." + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "Kanal adı çok kısa, tekrar deneyin." + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "Bağlantı Tamamlandı - %s" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "%s'e bağlantı tamamlandı." + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "Sunucu listesi penceresinde, bu ağ için otomatik olarak katılmak için hiç kanal (sohbet odası) yok." + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "Daha sonra ne yapmak istersiniz?" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "_Hiçbir şey, bir kanala daha sonra katılacağım." + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "_Bu kanala katılın:" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Katılmak istediğiniz kanalın adını biliyorsanız buraya girin." + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "Ka_nal listesini aç." + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "Kanal listesini almak bir veya iki dakika alabilir." + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "_Bu pencereyi bağladıktan sonra daima göster." + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "İletişim kutusu" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "%s için konu: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "Konu ayarlanmadı" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "Bu sunucu hala %d kanal veya onunla ilişkili diyaloglara sahip. Hepsi kapatılsın mı?" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "HexChat'ten çıkılsın mı?" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "Bir daha sorma." + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "%i IRC ağlarına bağlısınız." + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "Çıkmak istediğinizden emin misiniz?" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "Bazı dosya aktarmaları hala etkin." + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "_Sistem çekmecesine küçült" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "Özellik veya Renk Kodu Ekle" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>Kalın</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>Altı Çizili</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "<i>İtalik</i>" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "Normal" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "Renkler 0-7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "Renkler 8-15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "_Ayarlar" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "_Diske Günlükle" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "Geçmişi Ge_ri Yükle" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "_Renkleri Ayır" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "_Katılma/Ayrılma İletilerini Gizle" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "_Ekstra Uyarılar" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "_İleti geldiğinde biple" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "Sistem Çekmecesi Simgesini _Yankıp Söndür" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "Görev Çu_buğunu Yakıp Söndür" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "_Ayır" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "_Kapat " + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "Kullanıcı sınırı bir sayı olmalıdır!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "Filtre Renkleri" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "Dışarı mesaj yok" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "Konu Koruması" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "Sadece Davet" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "Denetlenen" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "Yasaklama Listesi" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Anahtar kelime" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "Kullanıcı Sınırı" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Yeni takma ad girin:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "Sonuç bulunamadı." + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "Arama sona geldi veya sonuç bulunamadı." + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "Tümünü _vurgula" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "Tüm tekrarları vurgulayın ve mevcutun altını çizin." + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "Eşleşme harf duyarlılığı" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "Büyük/küçük harf duyarlı bir arama yapın." + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "_Düzenli İfade" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "Arama dizesine düzenli bir ifade olarak davran." + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Makine bilinmiyor" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "Hesap bilinmiyor" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Bilinmeyen" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Gerçek İsim:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "Kullanıcı: " + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "Hesap:" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "Ülke:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "Sunucu:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "%u dakika önce" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "Son İleti:" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "Dışarıda Mesajı:" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "%d takma ad seçildi." + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "Menü Çubuğu şimdi gizlendi. Ctrl+F9 tuşlarına basarak veya ana metin alanının boş bir bölümünü sağ tıklatarak tekrar gösterebilirsiniz." + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "Bağlantıyı Tarayıcıda Aç" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "Seçilen Bağlantıyı Kopyala" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Kanala Katıl" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "Kanaldan Ayrıl" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "Kanalda Dön" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "_Otokatılım" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "Kanala Otomatik Katıl" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "_Otomatik-Bağlan" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "Kullanıcı Menüsü - %s" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "Bu Menüyü Düzenle" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "İşaretçi satırı devre dışı." + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "İşaretçi satırı asla ayarlanmadı." + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "İşaretçi satırı elle sıfırlandı." + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "İşaretçi satırı sıfırlandı çünkü geçmiş sınırı aşıldı." + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "İşaretçi satırı CLEAR komutu ile sıfırlandı." + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "İşaretçi satırı durumu bilinmiyor." + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "Kanal listesini al" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr " eklenti desteği olmadan inşa edilmiştir." + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "Kullanıcı komutları - Özel kodlar:\n\n%c = mevcut kanal\n%e = mevcut ağ ismi\n%m = makine bilgisi\n%n = takma adın\n%t = zaman/tarih\n%v = HexChat sürümü\n%2 = kelime 2\n%3 = kelime 3\n&2 = kelime 2 den satır sonuna\n&3 = kelime 3 den satır sonuna\n\neg:\n/cmd alper merhaba\n\n%2 \"alper\" olur\n&2 \"alper merhaba\" olur." + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "Kullanıcı Listesi Düğmeleri - Özel kodlar:\n\n%a = tüm seçili takma adlar\n%c = mevcut kanall\n%e = mevcut ağ ismi\n%h = seçili takma adın makine adı\n%m = makine bilgisi\n%n = takma adın\n%s = seçili takma ad\n%t = zaman/tarih\n%u = seçili kullanıcıların hesabı" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "İletişim Penceresi Düğmeleri - Özel kodlar:\n\n%a = tüm seçili takma adlar\n%c = mevcut kanal\n%e = mevcut ağ ismi\n%h = seçili takma adın makine adı\n%m = makine bilgisi\n%n = takma adın\n%s = seçili takma ad\n%t = zaman/tarih\n%u = seçili kullanıcıların hesabı" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "CTCP Cevapları - Özel kodlar:\n\n%d = veri (tüm ctcp)\n%e = mevcut ağ ismi\n%m = makine bilgisi\n%s = ctcp gönderenin takma adı\n%t = zaman/tarih\n%2 = kelime 2\n%3 = kelime 3\n&2 = kelime 2 den satır sonuna\n&3 = kelime 3 ten satır sonuna\n\n" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "URL İşleyiciler - Özel kodlar:\n\n%s = URL karakter dizisi\n\nKomut başına bir ! koymak\nbunun HexChat yerine bir kabuğa\ngönderileceğini ifade eder" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "Kullanıcı Tanımlı Komutlar - %s" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "Kullanıcı listesi Açılır Pencere menüsü - %s" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "Yer Değiştir - %s" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "İle değiştirin" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "URL İşleyiciler - %s" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "Kullanıcı Listesi Düğmeleri - %s" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "İletişim Penceresi düğmeleri - %s" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "CTCP Cevapları - %s" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "He_xChat" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "Ağ Li_stesi" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "_Yeni" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "Sunucu Sekmesi" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "Kanal Sekmesi" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "Sunucu Penceresi" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "Kanal Penceresi" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "_Eklenti veya Betik Yükle" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "_Çık" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "_Görünüm" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "_Menü Çubuğu" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "_Konu Çubuğu" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "_Kullanıcı Listesi" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "Kullanıcı Li_stesi Düğmeleri" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "K_ip Düğmeleri" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "_Kanal Değiştirici" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "_Sekmeler" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "Ağ_aç" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "_Ağ Ölçerler" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Kapat" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "Graph" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "_Tam ekran" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "_Sunucu" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "_Bağlantıyı kes" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "_Yeniden Bağlan" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "_Bir Kanala Katıl" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "Kanal _Listesi" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "Uz_akta olarak işaretlendi" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "K_ullanıcı Menüsü" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "A_yarlar" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "_Tercihler" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "Otomatik Yer Değiştir" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "CTCP Cevapları" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "İletişim Penceresi Düğmeleri" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "Klavye Kısayolları" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "Metin Olayları" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "URL İşleyiciler" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "Kullanıcı Komutları" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "Kullanıcı Listesi Düğmeleri" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "Kullanıcı Listesi Açılır Penceresi" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "_Pencere" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "_Yasak Listesi" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "Doğrudan Sohbet" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "Dosya Aktarımı" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "Arkadaş Listesi" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "Yoksayma Listesi" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "_Eklentiler ve Betikler" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "_Ham Günlük" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "_URL Yakalayıcı" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "İşaretçi Satırını Sıfırla" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "İşaretçi Satırına Taşı" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "_Seçimi Kopyala" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "Metni Temiz_le" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "Metni Kaydet" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "Ara" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "Metin Ara" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "Sonraki Arama" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "Önceki Arama" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "_Yardım" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "_İçindekiler" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "H_akkında" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "_Tuttur" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Ad" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Son Görülme" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "Çevrimdışı" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Asla" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "%d dakika önce" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "Bir saat önce" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "%d saat önce" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "Çevrimiçi" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "Eklemek için takma ad girin:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "Bu ağlarda uyarın:" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "Virgülle ayrılmış ağlar listesi kabul edildi." + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "Arkadaş Listesi - %s" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "İletişim Kutusunu Aç" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "Şu kişiden gelen vurgulanan ileti: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "Kanal mesajı: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "Şu adresten dosya teklifi: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "Şu kişi tarafından kanal davet edildi: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "Gelen bildirim: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "Gelen özel mesaj: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "%u ağ ve %u kanala bağlı - %s" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "Pence_reyi Eski Boyutuna Getir" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "_Pencereyi Gizle" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "_Yanıp/sönme açık" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "Kanal İletisi" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "Özel ileti" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "Vurgulanan İleti" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "_Durumu değiştir" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "_Uzakta" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "_Geri" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "Şuradan vurgulu ileti: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "%u vurgulu ileti, sonuncusu şuradan: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "Şuradan kanal iletisi: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "%u kanal iletisi. - %s" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "Şundan özel ileti: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "%u özel ileti, sonuncusu şuradan: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "Şuradan dosya teklifi: %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "%u dosya önerildi, sonuncusu şuradan: %s (%s) - %s" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Sürüm" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Açıklama" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Yüklenecek bir Eklenti veya Betik seç" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "Eklentiler ve Betikler - %s" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "_Yükle..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "_Boşalt" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "_Tekrar Yükle" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "Farklı Kaydet..." + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "Ham Günlük (%s) - %s" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "Ham Günlüğü Temizle" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Yeni Ağ" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Ağ \"%s\" ve tüm sunucularını gerçekten kaldırmak istiyor musunuz?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "Kullanıcı adı boş bırakılamaz." + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "Boş bir takma ada sahip olamazsın." + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "İki farklı takma ismin olması gerekir." + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "Kendinizi sunucuya tanımlama şekliniz. Özel giriş yöntemleri için bağlanma komutlarını kullanın." + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "Düzenle %s - %s" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "Sunucular" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "Otobağlanma kanalları" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "Bağlanma komutları" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "%n=Takma ad\n%p=Parola\n%r=Gerçek isim\n%u=Kullanıcı ismi" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "Anahtar (Parola)" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "_Düzenle" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "Yalnızca seçili sunucuya bağlan" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Bağlantı başarısız olduğunda tüm sunucuları dolaştırma." + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "Bu ağa otomatik olarak bağlan" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "Vekil sunucuyu atla" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "Bu ağ üzerindeki tüm sunucular için SSL kullan" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "Geçersiz SSL sertifikalarını kabul et" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "Genel kullanıcı bilgilerini kullan" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "_Takma ad:" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "İkinci seçim:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "Gerçe_k isim:" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "K_ullanıcı ismi:" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "Giriş yöntemi:" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Şifre:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "Giriş için kullanılan parola. Şüpheniz varsa, boş bırakın." + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "Karakter kümesi:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "Ağ Listesi - %s" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "Kullanıcı Bilgisi" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "Üçüncü seçenek:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Ağlar" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "Başlangıçta şebeke listesini atla" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "Sadece favorileri göster" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "_Düzenle..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "_Sırala" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "Ağ listesini alfabetik sıraya göre sıralar. Bir satır taşımak için SHIFT-YUKARI ve SHIFT-AŞAĞI tuşlarını kullanın" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "_Beğeni" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "Bu ağı favori olarak işaretleyin veya işaretini kaldırın." + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "B_ağlan" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "Afrikanca" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Arnavutça" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "Amharca" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "Asturca" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Azerice" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "Baskça" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Belarusça" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Bulgarca" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "Çince (Basitleştirilmiş)" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "Çince (Geleneksel)" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "Çekçe" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "Danca" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "Flemenkçe" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "İngilizce (İngiliz)" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "İngilizce" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Estonya Dili" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "Fince" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "Fransızca" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "Galiçyaca" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "Almanca" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "Yunanca" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "Guceratça" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "Hintçe" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "Macarca" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "Endonezce" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "İtalyanca" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "Japonca" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "Kannada Dili" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "Ruandaca" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "Korece" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "Letonca" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "Litvanyaca" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "Makedonca" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Malayca" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "Malayalamca" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "Norveççe (Bokmal)" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "Norveççe (Nynorsk)" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "Lehçe" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "Portekizce" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "Portekizce (Brezilya)" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "Pencapça" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "Rusça" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "Sırpça" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "Slovakça" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "Slovence" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "İspanyolca" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "İsveççe" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Tay Dili" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "Türkçe" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "Ukraynaca" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Vietnamca" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "Valon Dili" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Genel" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "Dil:" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "Ana yazı tipi:" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Yazı Tipi:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "Metin Kutusu" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "Renkli takma adlar" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "IRC'deki her bir kişiye farklı bir renk ver" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "Takma adları girintile" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "Takma adları sağa yaslı yap" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "İşaret çizgisini göster" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "Son okunan metinden sonra kırmızı bir çizgi ekle." + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Arkaplan Görseli:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "Şeffaflık Ayarları" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "Pencere Saydamlığı:" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "Zaman damgaları" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "Zaman damgalarını etkinleştir" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "Zaman damgası biçimi:" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "Ayrıntılar için strftime MSDN makalesine bakın." + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "Ayrıntılar için strftime kılavuz sayfasına bakın." + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "Başlık Çubuğu" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "Kanal kiplerini göster" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "Kullanıcı sayısını göster" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "Son konuşma emri" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "Giriş Kutusu" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "Metin kutusu yazı tipi ve renklerini kullan" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "Renkleri ve nitelikleri göster" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "Takma ad kutusunu göster" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "Kullanıcı kip simgesini takma ad kutusunda göster" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "Yazım denetimi" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "Kullanılacak sözlükler:" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "Dil kodlarını kullan (\"%LOCALAPPDATA%\\enchant\\myspell\\dicts\" gibi).\nBirden çok girdiyi virgülle ayırın." + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "Dil kodlarını kullan. Birden çok girişi virgülle ayır." + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "Takma Ad Tamamlama" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "Takma ad tamamlama son eki:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "Takma ad tamamlama sıralı:" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "Takma ad tamamlama miktarı:" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "Tamamlama yerine listelenmeye başlayacak takma adların eşik değeri" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "takma adlar." + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "Grafiksel" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "A-Z, Ops birinci" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "Z-A, Ops sonuncu" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "Sıralanmamış" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "Sol (Üst)" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "Left (Alt)" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "Sağ (Üst)" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "Sağ (Alt)" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Üst" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Alt" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Gizli" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "Kullanıcı Listesi" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "Kullanıcı listesinde ana makine adlarını göster" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "Metin kutusu yazı tipi ve renklerini kullan" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "Kullanıcı kipleri için simgeleri göster" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "Kullanıcı listesinde metin sembolleri yerine grafik simgelerini kullan." + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "Kullanıcı listesindeki takma adları reklendir" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "Takma adları sohbetteki ile aynı renklendirecek." + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "Kanallarda kullanıcı sayısını göster" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "Kullanıcı listesi sıralaması:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "Kullanıcı listesini şurada göster:" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "Uzakta İzleme" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "Kullanıcıların uzakta durumunu izle ve onları farklı bir renkle işaretle" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "Şundan daha küçük kanallarda:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "Çift Tıklama Eylemi" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "Ek Gadget'lar" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "Gecikme sayacı:" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "Boğulma sayacı:" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Windows" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Sekmeler" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "Daima" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "Sadece talep edilen sekmeler" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "Otomatik" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "Ek bir sekmede" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "Ön sekmede" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "Ağaç" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "Değiştirici türü:" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "Sunucu mesajları için fazladan bir sekme aç" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "Özel mesaj aldığında yeni bir sekme aç" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "Sekmeleri alfabetik sıraya göre sırala" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "Kanal ağacında simgeleri göster" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "Kanal ağacında noktalı çizgiler göster" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "Sekmeleri değiştirmek için fare tekerini kaydır" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "Sekmeyi kapatmak için orta tıkla" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "Daha küçük metin" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "Yeni sekmelere odaklanın:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "Uyarıların yerleştirilmesi:" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "Kanal değiştiriciyi şurada göster:" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "Sekme etiketlerini şuna kısaltın:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "harfler." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "Sekmeler veya Pencereler" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "Kanalları şurada aç:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "Pencereleri şurada aç:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "Programları şurada aç:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "DCC, Yoksayma, Bildirim vs.yi sekmelerde veya pencerelerde aç?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "Mesajlar" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "Geçmiş" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "Onay iste" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "İndirme klasörü iste" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "Etkileşim olmadan kaydet" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "Dosyalar ve Dizinler" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "Dosya teklifini otomatik kabul et:" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Dosyaları şu adrese indirin:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "Tamamlanan dosyaları şu adreslere taşıyın:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "Takma adı dosya isimlerinde kaydet" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "DCC Penceresini Otomatik Aç" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "Pencereyi gönder" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "Pencereyi al" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "Sohbet penceresi" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "Azami Dosya Aktarım Hızı (Saniyelik byte)" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "Bir yükleme:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "Tek aktarım için maksimum hız" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "Bir indirme:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "Tüm yüklemeler birleştirildi:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "Tüm dosyalar için maksimum hız" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "Tüm indirmeler birleştirildi:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "Uyarılar" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "Bildirimleri şurada göster:" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "Tepsi simgesini şunda yakıp/söndür:" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "Görev çubuğunu şunda yakıp/söndür: " + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "Şunun için bir bip sesi çıkar:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "Seçilen etkinliklerde \"Anlık İleti Bildirimi\" sistem sesini çal" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "Seçilen etkinlikler üzerine freedesktop.org ses temasından \"message-new-instant\"ı çal" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "Seçilen etkinlikler üzerine bir GTK bip sesi çal" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "Uzakta olarak işaretlendiğinde uyarıları atla" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "Pencere odaklanmışken uyarıları atla" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "Sistem Çekmecesi Davranışı" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "Sistem Çekmecesi simgesini etkinleştir" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "Sistem çekmecesine küçült" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "Sistem çekmesine kapat" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "Otomatik olarak uzakta/geri işaretle" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "Sistem çekmesine saklanırken durumu otomatik olarak değiştirin." + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "Bildirimleri yalnızca gizli veya ikonlaştırılmış iken göster" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "Vurgulanan İletiler" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Vurgulanan iletiler, takma adınızın geçtiği yerlerdir, aynı zamanda:" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "Vurgulanacak fazladan kelimeler:" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "Vurgulanmayacak takma adlar:" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "Daima vurgulanacak takma adlar:" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Birden fazla kelimeyi virgülle ayırın.\nJoker karakterler kabul edilir." + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "Dock simgesini şu durumda zıplat:" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "Varsayılan İletiler" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "Çık:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "Çık:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "Uzakta:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "Uzakta" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Uzaktayı bir kez göster" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "Aynı uzakta iletilerini yalnızca bir kez göster." + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "Otomatik olarak uzakta işaretini kaldır" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "Mesaj göndermeden önce uzaka işaretini kaldır." + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "Çeşitli" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "KİP'leri ham biçimde görüntüle" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "Bildirimde WHOIS" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "Bir kullanıcı bildirim listenizde çevrimiçi olduğunda bir /WHOIS gönderir." + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "Katılma ve ayrılma iletilerini gizle" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "Kanal katılma/ayrılma iletilerini varsayılan olarak gizle." + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "Takma ad değişiklik mesajlarını gizle" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "*!*@*.host" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "*!*@domain" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "*!*user@*.host" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "*!*user@domain" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "Otomatik Kopyalama Davranışı" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "Seçili metni otomatik olarak kopyala" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "Sol fare düğmesi kaldırıldığında seçili metni panoya kopyala. Diğer türlü, Ctrl+Shift+C seçili metni kopyalayacak." + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "Zaman damgaların ı otomatik dahil et" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "Zaman damgalarını kopyalanan metin satırlarına otomatik olarak dahil et. Diğer türlü, zaman damgalarını Shift tuşu seçim sırasında basılı ise dahil et." + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "Renk bilgilerini otomatik olarak ekle" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "Renk bilgisini kopyalanan metin satırlarına otomatik olarak dahil et. Diğer türlü, renk bilgisini Ctrl tuşu seçim sırasında basılı ise dahil et." + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "Gerçek isim:" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "Alternatif yazı tipleri:" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "Birden fazla girişi önce veya sonra boşluk bırakmadan virgülle ayır." + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "Listeleri kompakt kipte göster" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "Kullanıcı listesi/kanal ağacı satırları arasında daha az boşluk kullan." + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "Destekleniyorsa sunucu saatini kullan" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "Zaman sunucusu uzantısını destekliyorsa, sunucudan alınan zaman damgalarını görüntüle." + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "Bağlantı kesildiğinde otomatik olarak sunuculara yeniden bağlan" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "Otomatik yeniden bağlanma gecikmesi:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "Otomatik katılma gecikmesi:" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "Yasak Tipi:" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "Yasaklama ya da sessizleştirme sırasında bu ban maskesini kullanmaya çalış. (irc_who_join gerektirir)" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Günlük Tutma" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "Önceki oturumdan geçmişi göster" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "Geçmiş satırları:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "Konuşmaları günlüklerini diske kaydetmeyi etkinleştir" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "Günlük Dosya Adı:" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Sunucu %c=Kanal %n=Ağ." + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "Günlüklere zaman damgalarını ekle" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "Günlük zaman damgası biçimi:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URL'ler" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "URL'leri günlüğünü diske kaydetmeyi etkinleştir" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "URL yakalamayı etkinleştir" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "Yakalanacak maksimum URL sayısı:" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(Devre dışı)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "SOCKS4" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "SOCKS5" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "Oto" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "Tüm bağlantılar" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "Sadece IRC sunucusu" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "Sadece DCC" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "Adresiniz" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "Bağlan:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "Yalnızca birden çok adresli bilgisayarlar için yararlıdır." + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "Dosya Transferleri" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "IRC sunucusundan adresimi al" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "IRC sunucusuna gerçek adresini sorar. 192.168.*.* adresiniz varsa bunu kullanın!" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "DCC IP adresi:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "Dosyaları sunarken bu adreste olduğunuzu kanıtlayın." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "İlk DCC dinleme portu:" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "Son DCC dinleme portu:" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "!Tüm aralık için portları sıfır olarak bırakın." + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "Proxy Sunucusu" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "Makina adı:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Port:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Tip:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "Vekil sunucuyu şunun için kullan:" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "Vekil Sunucu Kimlik Doğrulaması" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "Kimlik doğrulaması kullan (HTTP ya da sadece SOCKS5)" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "Kullanıcı adı:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "Identd Sunucusu" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "Etkin " + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "Sunucu, ağların kullanıcı adı ile yanıt verecektir" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "Bu portu dinleme izninizin olması gerekir. 113 değilse (0 varsayılan değer ise) port yönlendirme işlemini yapmanız gerekir." + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "Bir Resim Dosyası Seç" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "İndirme Klasörünü Seç" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Yazı tipi seç" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Gözat..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "Veri Klasörünü Aç" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Renk seç" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "Metin Rengi" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "mIRC renkleri:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "Yerel renkler:" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Ön plan:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Arka plan:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "Seçili Metin" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "Arayüz Renkleri" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "Yeni veri:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "İşaretçi satırı:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "Yeni mesaj:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "Uzakta kullanıcı:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "Vurgulama:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "Yazım denetleyicisi:" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "Renk Ayırma" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Olay" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "Ses dosyası" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "Bir ses dosyası seç" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "Ses dosyası:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "_Gözat..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "_Oynat" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Arayüz" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "Görünüm" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Girdi kutusu" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Kullanıcı Listesi" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "Kullanıcı Listesi" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Renkler " + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Sohbet" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "Sesler" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "Gelişmiş" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Ağ kurulumu" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Dosya aktarımı" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "Identd" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Kategoriler" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "Ağacı üst veya alt kısımlara yerleştiremezsiniz!\nLütfen, <b>Görünüm</b> menüsündeki <b>Sekmeler</ b> düzenini değiştirin." + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "Gerçek isim seçeneği boş bırakılamaz.\n\"gerçek isim\" olarak geri çevriliyor." + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Tam olarak etkili olması için yeniden başlatma gerektiren bazı ayarlar değiştirildi." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*UYARI*\nDCC'yi otomatik olarak ev dizininize kabul etme\ntehlikeli olabilir ve yararlanılabilir. Örneğin:\nBirisi size bir .bash_profile gönderebilir." + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "Tercihler - %s" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "<i>(öneri yok)</i>" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "Daha fazla..." + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "Sözlüğe \"%s\" ekle" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "Hepsini Yoksay" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "Yazım Önerileri" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "dil için enchant hatası: %s" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "Karakter dizisini ayrıştırırken bir hata oluştu" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Bu sinyal yalnızca %d argüman geçirdi, $%d geçersiz" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "Metin Dosyalarını Yazdır" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ Sayı" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Olayları Düzenle" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "Şuradan Yükle..." + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Tümünü Test Et" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "TAMAM" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "URL Yakalayıcı - %s" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Listeyi temizle" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Seçilen URL'yi kopyala" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Kopyala" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Listeyi bir dosyaya kaydet" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d op, %d toplam" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "Bir irc://server:port/channel URLi aç" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "Sistem Bilgisi: Bilgi edinilemedi. Desteklenmiyor veya hata." + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "Sistem Bilgisi: Bu adla bilgi yok\n" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "Sistem Bilgisi: %s şu şekilde ayarlandı: %d\n" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "Sistem Bilgisi: Geçerli ayarlar: her bilgi parçası için announce ve hide_ *. Örneğin hide_os. Bir değer olmadan geçerli (veya varsayılan) ayarı gösterecektir.\n" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "Sistem Bilgisi: Geçersiz değişken adı\n" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "%s eklenti yüklendi\n" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "%s eklenti kaldırıldı\n" diff --git a/hexchat/po/uk.po b/hexchat/po/uk.po new file mode 100644 index 0000000..92ef428 --- /dev/null +++ b/hexchat/po/uk.po @@ -0,0 +1,6257 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Maxim Dubovoy <max@mylinux.com.ua>, 2003 +# Oleksandr Kunytsia <xakep@snark.ukma.kiev.ua>, 2004 +# partizan <serg.partizan@gmail.com>, 2009 +# partizan <serg.partizan@gmail.com>, 2009 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-03 20:10+0000\n" +"Last-Translator: TingPing <tingping@tingping.se>\n" +"Language-Team: Ukrainian (http://www.transifex.com/hexchat/hexchat/language/uk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: uk\n" +"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Я зайнятий" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Залишаю" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Мережа" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<немає>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Канал" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Очікування" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Активний" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Помилка" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Виконано" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "З'єднання" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Припинено" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "Немає доступу до %s\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Помилка" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s пропонує \"%s\". Прийняти?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "Немає активних каналів даних (DCC)\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "_Відкрити діалогове вікно" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "_Надіслати файл" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "_Хто це (WhoIs)" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "_Додати до Списку друзів" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "Дії _оператора" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Надати оператора" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Відібрати оператора" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "Надати голос" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "Відібрати голос" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Викинути/Забанити" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Викинути" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "Забанити" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "Викинути+Забанити" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Залишити канал" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Зайти на канал" + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "Введіть канал для входу:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Посилання сервера" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Ping-увати сервер" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Приховувати версію" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "Оператор" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "Скасувати Опер." + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "бувайте" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Введіть підставу для викидання %s:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "Діалог" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Надіслати" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Розмова" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Очистити" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "" + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* Запускати IRC як root це тупо! Краще додати\n звичайного користувача і входити ним в систему.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "ТАК " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "НІ " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "You are being CTCP flooded from %s, ignoring %s\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s онлайн\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s офлайн\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Не зайшли на канал. Спробуйте /join #<канал>\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Не підключено. Спробуйте /server <вузол> [<порт>]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Вже позначений як \"відсутній\": %s\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "Вже позначений як \"повернувся\": %s\n" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "Для запуску необхідна програма /bin/sh !\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "Доступні команди:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "Визначені користувачем команди:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "Визначені у модулі команди:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Введіть /HELP <команда> щоб отримати докладнішу інформацію, або /HELP -l" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Невідомий аргумент '%s' проігноровано." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "" + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "Модуль не знайдено.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "Не вдалося вивантажити модуль.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <ім'я> <дія>, додати кнопку над списком користувачів" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <команда>, надіслати команду до всіх каналів, на які ви зайшли" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <cmd>, надіслати команду до всіх серверів, з якими ви з'єднані" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "BACK, встановлює статус \"повернувся\" (не відсутній)" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <маска> [<тип>], заборонити доступ до каналу всім, хто відповідає вказаній масці. Якщо користувачі вже з'єднані з каналом, вони не будуть відключені (для цього потрібно бути оператором каналу)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <змінна> [<значення>]" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "" + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <код|метасимвол>, знайти код країни, наприклад: au = australia" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <нікнейм> <повідомлення>, надіслати повідомлення CTCP до користувача із вказаним ім'ям, звичайними повідомленнями є VERSION та USERINFO" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "CYCLE [<channel>], залишити поточний канал та відразу повернутися" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <нікнейм> - прийняти запропонований файл\nDCC SEND [-maxcps=#] <нікнейм> [файл] - надіслати комусь файл\nDCC PSEND [-maxcps=#] <нікнейм> [файл]- надіслати файл у пасивному режимі\nDCC LIST - показати список DCC\nDCC CHAT <нікнейм> - запропонувати розмову через DCC\nDCC CLOSE <тип> <нікнейм> <файл> приклад:\n /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <нікнейм>, зняти статус напівоператор каналу (chanhalf-op) у особи на поточному каналі (потребує прав адміністратора каналу)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <ім'я>, видалити кнопку зі списку користувачів" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <нікнейм>, зняти права оператора (chanop) у вказаної особи на поточному каналі (потребує прав адміністратора каналу)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <нікнейм>, зняти право голосу у вказаної особи на поточному каналі (потребує прав адміністратора каналу)" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, від'єднатися від сервера" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <текст>, вивести текст на локальній машині" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <команда>, виконати команду. Якщо використано параметр -o, вивід буде надіслано до поточного каналу, інакше він буде виведений в поточному вікні" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, надіслати процесу сигнал SIGCONT" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9], перервати виконання процесу у поточному сеансі. Якщо задано параметр -9 процес буде припинено за допомогою SIGKILL" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, надіслати процесу сигнал SIGSTOP" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, надіслати дані в стандартний ввід процесу" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, скинути поточну чергу відправлення на поточному сервері" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <вузол> [<порт>], під'єднуватися через проксі, типовий порт 23" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <нікнейм>, надати стан напівоператора (chanhalf-op) вказаній особі (потребує прав оператора)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <пароль>, ідентифікація себе на nickserv" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <маска> <типи..> <параметри..>\n маска - маска ігнорованого вузла, наприклад: *!*@*.aol.com\n типи - типи ігнорованих даних, один або декілька з наступних:\n PRIV, CHAN, NOTI, CTCP, INVI, ALL\n параметри - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <нікнейм> [<канал>], запросити когось до каналу, за замовчанням до поточного каналу (потребує прав оператора каналу)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <канал>, зайти до вказаного каналу" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, виконати перевірку сигналу" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <файл>, завантажити модуль або скрипт" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, видалити статус напівоператора з усіх користувачів в поточному каналі (потребує прав оператора)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, видалити статус оператора з усіх користувачів каналу (потребує прав оператора)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <дія>, надіслати подію до поточного каналу (події пишеться від третьої особи,наприклад /me стрибає)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, викинути всіх окрім вас з поточного каналу (потребує прав оператора)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MDEOP, надати всім користувачам поточного каналу права оператора (потребує прав оператора)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <нікнейм> <повідомлення>, надіслати CTCP повідомлення" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <назва вузла> [<порт>]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <нікнейм>, змінити нікнейм" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [-n мережа1[,мережа2,...]] [<нікнейм>], вивести список сповіщень або додати до нього когось" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <нікнейм>, надати вказаній особі права оператора каналу (потребує прав оператора)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<канал>] [<привід>], вийти з каналу, типово - з поточного каналу" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <нікнейм | канал>, CTCP-пінг особи або каналу" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "" + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<підстава>], від'єднатися від поточного сервера" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <текст>, надіслати текст у необробленій формі до сервера" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT·[-ssl] [<вузол>] [<порт>] [<пароль>], може бути викликано просто як/RECONNECT, щоб переприєднатися до поточного сервера або /RECONNECT ALL, щоб переприєднатися до усіх відкритих серверів" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<вузол>] [<порт>] [<пароль>], може бути викликано просто як/RECONNECT, щоб переприєднатися до поточного сервера або /RECONNECT ALL, переприєднатися до усіх відкритих серверів" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <текст>, надіслати текст до об'єкта в поточному вікні" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <нікнейм> [<файл>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <вузол> <порт> <канал>, встановити з'єднання з сервером та зайти до каналу" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <вузол> <порт> <канал>, встановити з'єднання з сервером та зайти до каналу" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <вузол> [<порт>] [<пароль>], під'єднатися до сервера, типовий порт 6667" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<тема>], встановити тему, якщо вона вказана. У іншому випадку відображає поточну тему" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "\nTRAY -f <таймаут> <файл1> [<файл2>] Почерговий показ двох значків у області сповіщення.\nTRAY -f <назвафайлу> Постійний значок у області сповіщення.\nTRAY -i <число> Миготіння внутрішнього значка у області сповіщення.\nTRAY -t <текст> Встановити підказку у області сповіщення.\nTRAY -b <заголовок> <текст> Встановити спливаючу підказку у області сповіщення." + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <маска> [<маска>...], скасувати заборону доступу до каналу всім, хто відповідає масці." + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <маска> [QUIET] - скасувати ігнорування повідомлень з певною маскою" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <назва>, вивантажити модуль або скрипт" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "" + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, відкрити URL у веб-переглядачі" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "USELECT [-a] [-s] <нікнейм1> <нікнейм2> тощо, підсвічує нікнейми у списку користувачів каналу" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <нікнейм>, надати право голосу особі (потребує прав оператора каналу)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <повідомлення>, надіслати повідомлення до всіх каналів" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <повідомлення>, надіслати повідомлення до усіх операторів на поточному каналі" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "Використання: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nНемає довідки для цієї команди.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "Такої команди не існує.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "Неправильні аргументи команди користувача.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "Надто багато рекурсивних команд користувача, зупиняємо." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Ви впевнені це що сумісний з SSL сервер?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "Неможливо визначити назву вузла %s\nПеревірте параметри мережі!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "Не вдалося зв'язатися через проксі.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Перемикання на наступний сервер %s...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "Попередження: невідоме кодування \"%s\". Перекодування для мережі %s не відбуватиметься." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "" + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "" + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%UКанал Користувачі Тема" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "" + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "" + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "" + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "" + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "" + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "" + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "" + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "" + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "" + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "" + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "" + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "" + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tСписок сповіщень порожній." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "" + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "" + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "" + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "" + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "Завантажено журнал з" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** ЗАКІНЧУЄТЬСЯ ВХІД НА %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** ПОЧАТОК ВХОДУ НА %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "Повідомлення зліва" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "Повідомлення справа" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "IP адреса" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Username" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "Нікнейм особи, що підключається" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "Підключено до каналу" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "Хостнейм користувача" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Нікнейм" + +#: src/common/text.c:980 +msgid "The action" +msgstr "Дія" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "Символ режиму" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "Виділений текст" + +#: src/common/text.c:987 +msgid "The text" +msgstr "Текст" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "Повідомлення" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Назва серверу" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Старий нікнейм" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Новий нікнейм" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "Нікнейм персони, що змінила тему" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Тема" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "Нікнейм особи, що викинула з каналу" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "Особа, яку було відключено" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "Канал" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "Підстава" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "Нікнейм особи, що залишає канал" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "Час" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "Засновник" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Нікнейм" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Підстава" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Комп'ютер" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "Звідки" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "Час у форматі x.x (дивіться нижче)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "Перелік каналів..." + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "Звук" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "Нікнейм особи" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "CTCP подія" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "Нікнейм особи, що встановила ключ" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "Ключ" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "Нікнейм особи, що встановила обмеження" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "Обмеження" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "Нікнейм особи, що встановила оператора" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "Нікнейм особи, що отримала оператора" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "Нікнейм особи, що отримала напівоператора" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "Нікнейм особи, що встановила напівоператора" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "Нікнейм особи, що встановила голосу" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "Нікнейм особи, якій було встановлено стан голосу" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "Нікнейм особи, що ввела бан" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "Маска бану" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "Нікнейм особи, що видалила ключ" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "Нікнейм особи, що видалила обмеження" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "Нікнейм особи, з якої знято оператора" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Нікнейм особи, з якої знято напівоператора" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "Нікнейм особи, з якої було знято 'голос'" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "Нікнейм особи, що додала виключення" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "Маска виключення" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "Нікнейм особи, що зняла виключення" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "Нікнейм особи, що зробила запрошення" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "Маска запрошення" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "Нікнейм особи, що скасувала запрошення" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "Нікнейм особи, що встановила режим" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "Знак режиму (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "Буква режиму" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "Канал встановлено" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Повне ім'я " + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Член каналу/\"є оператором IRC\"" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Інформація про сервер" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Час простою" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Час входу" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Причина відсутності" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Повідомлення" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Обліковий запис" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "Справжній_користувач@хост" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "Реальний IP" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Назва каналу" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Текст" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Нікнейм особи, що запрошує" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Користувачі" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "Нікнейм використовується" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Пробуємо нікнейм" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Порт" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "Рядок режимів" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "Тип DCC" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Назва файлу" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Назва файлу призначення" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "Шлях" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Позиція" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Розмір" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "DCC Рядок" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "Кількість сповіщень" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Стара назва файлу" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Нова назва файлу" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Отримувач" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Маска хосту" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Хостнейм" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "Пакет" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "Секунди" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "Нікнейм запрошеної особи" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Маска бану" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "Особа, що встановила бан" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Час дії бану" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "Не вдалося прочитати звуковий файл:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "Віддалений вузол закрив сокет" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "Відмовлено у з'єднанні" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "Не знайдено шлях до вузла" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Таймаут з'єднання" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "Не вдалося призначити цю адресу" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "З'єднання обірване" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "Острів Сходження" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Андорра" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Об'єднані Арабські Емірати" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Афганістан" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Антігуа та Барбуда" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Ангуілла" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Албанія" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Вірменія" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Нідерланди" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Ангола" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Антарктида" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Аргентина" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "Зворотній DNS" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Американське Самоа" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Австрія" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "Нато Фейл" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Австралія" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Аруба" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "Аланд о-ви" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Азербайджан" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Боснія та Герцеговина" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Барбадос" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Бангладеш" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Бельгія" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Буркіна-Фасо" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Болгарія" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Бахрейн" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Бурунді" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "Бізнесова адреса" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Бенін" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Бермуди" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Бруней" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Болівія" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Бразилія" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Багами" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Бутан" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Острови Буве" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Ботсвана" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Білорусія" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Беліз" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Канада" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Кокосові о-ви" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "Демократична Республіка Конго" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "Центрально-Африканська Республіка" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Конго" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "Швейцарія" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "Кот'Д'Івуар" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Острови Кука" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Чилі" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Камерун" + +#: src/common/util.c:738 +msgid "China" +msgstr "Китай" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Колумбія" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Комерційні адреси" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Коста-Ріка" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "Сербія та Чорногорія" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Куба" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Капе Верде" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Різдвяні острови" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Кіпр" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "Чеська республіка" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Німеччина" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Джибуті" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Данія" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Домініка" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "Домініканська Республіка" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Алжир" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Еквадор" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Освітні заклади" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Естонія" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Єгипет" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Західна Сахара" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Еритрея" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "Іспанія" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Ефіопія" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "Європейський союз" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Фінляндія" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Фіджі" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Фолклендські о-ви" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Мікронезія" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "О-ви Фарое" + +#: src/common/util.c:770 +msgid "France" +msgstr "Франція" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Габон" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Велика Британія" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Гренада" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Грузія" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Французька Гвіана" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "Британські о-ви" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Гана" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Ґібралтар" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Гренландія" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Гамбія" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Гвінея" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Уряд" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Гваделупа" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Екваторіальна Гвінея" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Греція" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "S. Georgia та S. Sandwich Isles." + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Гватемала" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Гуам" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Гвінея-Біссау" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Гаяна" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Гонг Конг" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Heard and McDonald Islands" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Гондурас" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Хорватія" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Гаїті" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Угорщина" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Індонезія" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Ірландія" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Ізраїль" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "Острів Мен" + +#: src/common/util.c:801 +msgid "India" +msgstr "Індія" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "Інформаційні" + +#: src/common/util.c:803 +msgid "International" +msgstr "Міжнародні" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Британська Тихоокеанська Територія" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Ірак" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "Іран" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Ісландія" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Італія" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "Джерсі" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Ямайка" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Йорданія" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Японія" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Кенія" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Киргизстан" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Камбоджі" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Кірібаті" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Коморос" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "St. Kitts and Nevis" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Північна Корея" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Південна Корея" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Кувейт" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Кайманові о-ви" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Казахстан" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Лаос" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Ліван" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Свята Лучія" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Ліхтенштейн" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Шрі Ланка" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Ліберія" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Лесото" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Литва" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Люксембург" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Латвія" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Лівія" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Марокко" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Монако" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Молдова" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "Мед.заклади США" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Мадагаскар" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Маршалові острови" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Військові" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Македонія" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Малі" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "М'янма" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Монголія" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Макао" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Північні Маріанські Острови" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Мартініка" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Мавританія" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Монсерат" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Мальта" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Маврикій" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Мальдіви" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Малаві" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "Мексика" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Малайзія" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Мозамбік" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Намібія" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Нова Каледонія" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Нігер" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Мережі" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Норфолкські о-ви" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Нігерія" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Нікарагуа" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Нідерланди" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Норвегія" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Непал" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Науру" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Ніуе" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "Нова Зеландія" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Оман" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "Мережні некомерційні організації" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Панама" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Перу" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Французька Полінезія" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Папуа Нова Гвінея" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Філіппіни" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Пакистан" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Польща" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "St. Pierre and Miquelon" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Піткерн" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Пуерто Ріко" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "Палестинська Територія" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Португалія" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Палау" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Парагвай" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Катар" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Реунйон" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Румунія" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "Стара мережа ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Росія" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Руанда" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Саудівська Аравія" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Соломонові острови" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Сейшельські острови" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Судан" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Швеція" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Сінгапур" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "Св. Олена" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Словенія" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard and Jan Mayen Islands" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "Словацька Республіка" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Сієра Леоне" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "Сан Маріно" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Сенегал" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Сомалі" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Суринам" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "Сен-Томе та Прінсіпі" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Колишній СРСР" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "Сальвадор" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Сирія" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Свазіленд" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "о-ви Тьорск та Кайкос" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Чад" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "Французькі Південні Території" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Того" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Таїланд" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Таджикистан" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "о-ви Токелау" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Східний Тимор" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Туркменістан" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Туніс" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Тонга" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Туреччина" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Тринідад та Тобаго" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Тувалу" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Тайвань" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Танзанія" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Україна" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Уганда" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Сполучене королівство" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "США" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Уругвай" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Узбекистан" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Ватикан" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "Сент-Вінсент та Гренадини" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Венесуела" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "Британські Віржинські острови" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "Американські Віржинські острови" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "В'єтнам" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Вануату" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "о-ви Валліс та Футуна" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Самоа" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Ємен" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Майотт" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Югославія" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Південна Африка" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Замбія" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Зімбабве" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "Не вдалося з'єднатись з шиною сеансу" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "Не вдалося завершити команду NameHasOwner" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "Не вдалося завершити команду" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "віддалений доступ" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "модуль для віддаленого доступу DBUS" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Не вдалося зв'язатись з шиною сеансів: %s\n" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Не вдалося здобути %s: %s\n" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Палітра символів" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "Забанити" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Запрошувати" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "Немає з'єднання." + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "Необхідно вибрати деякі бани." + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Маска" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "Від" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Дата" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Можете відкрити лише вікно Список банів у вкладці каналу." + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Видалити" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Стиснути" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Оновити" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Відображається %d/%d користувачів на %d/%d каналах" + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Виберіть назву файлу для запису" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "За_йти на канал" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "_Копіювати назву каналу" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "Копіювати _текст теми" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "З_найти" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "_Список завантажень" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "Зберегти _список..." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "Відображати лише:" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "канали з" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "до" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "користувачів." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "Шукати у:" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Назві каналу" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "Тип пошуку:" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "Простий пошук" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "Відповідність шаблону" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "Регулярний вираз" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Знайти:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Надіслати файл до %s" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "Файл неможливо продовжити." + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "Немає доступу до файлу: %s\n%s.\nПродовження неможливе." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "Файл у каталозі завантажень більше ніж запитаний. Продовження неможливе." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "Не можна продовжувати однаковий файл від 2-х користувачів." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Статус" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Файл" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "Залишилось" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "обидва" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "Відвантаження" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "Завантаження" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "Подробиці" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "Файл:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "Адреса:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Перервати" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Прийняти" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Продовжити" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "Відкрити теку..." + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Прийн" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Відпр" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "Час початку" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Видалити" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Скасувати" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Зберегти" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "Не з'єднуватись з сервером автоматично" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "Використовується інший конфігураційний каталог" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "Не завантажувати автоматично модулі" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "Показувати каталог конфігураційних файлів" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "Виконати команду:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Стартувати мінімізованим. Рівні 0-Нормальний 1=Іконка 2=Трей" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "рівень" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "Вивести інформацію про версію" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "Не вдалося відкрити шрифт:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "Буфер пошуку порожній.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d байт" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Черга надсилання у мережу: %d байтів" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "Команда Вставити в буфер вставить вміст Дані 1 в поле, в якому була натиснута комбінація клавіш, в поточну позицію курсору" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "Команда Встановити буфер Встановлює значення поля, в якому було натиснуто комбінацію клавіш в значення Дані 1" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "Команда Остання команда встановлює значення в полі рівним останній введеній команді - теж саме, що натискання клавіші стрілки вгору в командній оболонці" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "Команда Наступна команда встановлює значення в полі рівним наступній команді - теж саме, що натискання клавіші стрілки вниз у командній оболонці" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "Ця команда замінює текст в полі вводу для завершення незакінченого нікнейму або команди. Якщо Data 1 встановлено, подвійне натискання клавіші табуляції вибере не наступний, а останній нікнейм" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "Команда прокручує список користувачів вгору або вниз. Якщо Data 1 встановлено - буде прокручено вгору, інакше - вниз" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "Команда перевіряє останнє введене слово в списку заміщень та замінює у разі знаходження відповідності" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "Команда переміщує передню вкладку на одну позицію ліворуч" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "Команда переміщує передню вкладку на одну позицію праворуч" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "Команда переміщує поточну вкладку на одну позицію ліворуч" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "Команда переміщує поточну вкладку на одну позицію ліворуч" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "Помістити введений рядок в історію, але не надсилати до сервера" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "Помилка під час завантаження конфігурації комбінацій клавіш" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "Не вдалося записати в цей файл." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "Не вдалося прочитати цей файл." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "Така маска вже існує." + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Приватний" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Зауваження" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "Не ігнорувати" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "Введіть маску для ігнорування:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Стан ігнорування:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Канал:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Приватний:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Зауваження:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Запросити:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "Додати..." + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "Назва каналу надто коротка, спробуйте ще раз." + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "З'єднання з %s завершено." + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "Що бажаєте зробити далі?" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "_Нічого, я сам зайду на канал." + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "_Зайти на канал:" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Введіть назву каналу, на який треба зайти, якщо ви її знаєте." + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "" + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "_Завжди показувати це вікно після з'єднання." + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "Діалог" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Тема для %s: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "Не встановлено тему" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "На цьому сервері досі відкриті %d каналів чи діалогів. Закрити їх?" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "Не питати наступного разу." + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Ви підключені до %i IRC мереж." + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "Ви дійсно бажаєте вийти?" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "Деякі файли все ще завантажуються." + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "_Мінімізуватися в трей" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "Вставити атрибут або код кольору" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>Жирний</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>Підкреслений</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "Звичайний" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "Кольори 0-7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "Кольори 8-15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "П_араметри" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "Писати _журнал" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "_Перечитувати прокрутку" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "_Сховати повідомлення входу/виходу" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "_Додаткові сигнали" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "Звукове сповіщення про повідомлення" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "Блимати у треї" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "Блимати на панелі" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "_Відокремити" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "_Закрити" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "Обмеження користувачів має бути числом!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "Без зовнішніх повідомлень" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "Захист теми" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "Лише запрошені" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "Модерований" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "Список банів" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Ключове слово" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "Обмеження користувачів" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Введіть новий нікнейм:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "" + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "" + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "" + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Невідомий вузол" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Невідомий" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Справжнє ім'я:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "Користувач:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "Країна:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "Сервер:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "%u хвилин тому" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "Останнє повідомлення:" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "Повідомл.про відсутність:" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "%d ніків вибрано." + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "Відкрити посилання у веб-переглядачі" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "Копіювати виділене посилання" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Зайти на канал" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "Залишити канал" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "Канали по колу" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "Відповіді CTCP - Спеціальні коди:\n\n%d = дані (повний ctcp)\n%m = інформація про машину\n%e = назва поточної мережі\n%s = нікнейм відправника ctcp\n%t = час/дата\n%2 = слово 2\n%3 = слово 3\n&2 = від слова 2 до кінця рядку\n&3 = від слова 3 до кінця рядку\n\n" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "Замінити на" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "_Створити" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "Ви_йти" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "_Вигляд" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "Панель _меню" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "Панель _теми" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "Список користувачів" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "Кнопки _режиму" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "Перемикач _каналів" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "_Вкладки" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "Д_ерево" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "Мережні _лічильники" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "вимкнено" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "графічний" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "_Сервер" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "_Роз'єднати" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "_Переприєднати" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "_Меню користувача" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "П_араметри" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "_Параметри" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "_Вікно" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "Скинути маркер" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "О_чистити текст" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "_Довідка" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "_Зміст" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "_Про програму" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "_Приєднати" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Назва" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Бачили востаннє" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "Відключений" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Ніколи" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "%d хвилин тому" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "Підключений" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "Введіть нікнейм:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "Сповіщати в таких мережах:" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "Список допустимих мереж (елементи розділяються комами)." + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "Відкрити діалогове вікно" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "_Блимати на" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "Повідомлення каналу" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "Приватне повідомлення" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "Виділене повідомлення" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "_Змінити статус" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "_Немає" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "_Назад" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Версія" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Опис" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Виберіть модуль або скрипт для завантаження" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "З_авантажити" + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "Зберегти як..." + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Нова мережа" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Дійсно видалити мережу \"%s\" та усі її сервери?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "Ключ (пароль)" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "_Правка" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "З'єднатись лише з виділеним сервером" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Не змінювати циклічно сервер при помилках з'єднання." + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "В обхід проксі серверу" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "Використовувати SSL для всіх серверів у цій мережі" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "Використовувати глобальну інформацію" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "П_різвисько:" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "Другий вибір:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "_Справжнє ім'я:" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "_Ім'я користувача:" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Пароль:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "Набір символів:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "Інформація про користувача" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "Третій вибір:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Мережі" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "Не показувати список мереж при старті" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "_Правка..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "С_ортувати" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "Під'_єднатися" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Албанія" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Азербайджан" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Білорусія" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Болгарія" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Естонія" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "Індія" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Малайзія" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Таїланд" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "В'єтнам" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Загальне" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Шрифт:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "Виділяти нікнейми кольором" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "Надати кожній особі в IRC інший колір" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "Нікнейми з відступом" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "Вирівнювання нікнеймів справа" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "Показувати маркер" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "Вставляє червоний рядок після останнього прочитаного тексту." + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Зображення тла:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "Параметри прозорості" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "" + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "" + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "Порядок \"останній хто говорив\"" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "Перевірка орфографії" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "Доповнення ніків:" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "Суфікс доповнення нікнейму:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "Сортування доповнення нікнейму:" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "" + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "без сортування" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "вгорі" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "внизу" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "приховані" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "Список користувачів" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "Показувати назви вузлів у списку користувачів" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "Шрифт та кольори як в текстовому блоці" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "Сортування списку користувачів:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "Показувати список користувачів:" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "На каналах менших за:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "Реакція на подвійне клацання" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Вікнах" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Вкладках" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "Завжди" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "Лише зазначені вкладки" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "Д_ерево" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "Тип перемикача:" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "Відкривати вкладку для повідомлень сервера" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "Відкривати вкладку при отриманні приватних повідомлень" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "Сортувати вкладки за алфавітом" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "Маленький текст" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "Фокус на нові вкладки:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "Показати перемикач каналів:" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "Скорочувати вкладки до:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "симв." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "Вкладках або вікнах" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "Відкривати канали у:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "Відкривати діалоги у:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "Відкривати утиліти у:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Відкривати DCC, Ігнорування, Сповіщення, тощо у вкладках або вікнах?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "Файли та каталоги" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "Автоматично приймати файли:" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Завантажувати файли в:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "Переміщувати завершені файли в:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "Зберігати нікнейм в назвах файлів" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "Автоматично відкривати діалогові вікна" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "Вікно відсилання" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "Вікно отримання" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "Вікно каналу" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "Одне завантаження:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "Максимальна швидкість для однієї передачі" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "Одне скачування:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "Всі завантаження:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "Максимальна швидкість для усього трафіка" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "Всі скачування:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "Увага!" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "Блимати у треї, коли:" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "Блимати на панелі задач, коли:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "Видавати звук 'beep', коли" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "Увімкнути значок у області сповіщення" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "" + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "Підсвічені повідомлення" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Підсвічені повідомлення, це ті, де згадали ваш нікнейм, а також:" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "Реагувати також на слова:" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "Не підсвічувати нікнейми:" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "Завжди підсвічувати нікнейми:" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Відокремлюйте слова комами.\nШаблони також приймаються." + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "Типові повідомлення" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "Вихід:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "Залишення каналу:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "Відсутній:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "Відсутній" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Показувати \"Відсутній\" лише один раз" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "Автоматично знімати \"Відсутній\"" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "" + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "Відображати режими в чистому вигляді" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "Приховувати сповіщення про вхід/вихід" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "Затримка автоматичного відновлення з'єднання:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Журнали" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "Показувати останні повідомлення з попередньої бесіди" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "Кількість ліній прокрутки:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "Увімкнути запис журналу повідомлень" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "Файл журналу:" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Сервер %c=Канал %n=Мережа." + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "Вносити час події в журнал" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "Формат запису часу в журнал:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URL" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(вимкнено)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "IP адреса" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "Зачепитися на:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "Корисне, лише коли комп'ютер має декілька адрес." + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "Отримувати власну IP адресу з IRC сервера" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "Виконайте команду /WHOIS для свого нікнейму, щоб визначити сою реальну адресу. Використовуйте це, якщо ваша адреса 192.168.*.* !" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "IP адреса DCC:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "Заявляти цю адресу при пропонуванні файлів." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "!Залиште порти нульовими для повного діапазону." + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "Проксі сервер" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "Назва вузла:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Порт:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Тип:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "Використовувати проксі для:" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "Автентифікація проксі" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "Ім'я користувача:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "Виберіть файл зображення" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "Виберіть теку для завантажень" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Вибір шрифту" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Вибрати..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "Відкрити теку даних" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Вибір кольору" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "Кольори" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "Кольори mIRC:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "Локальні кольори:" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Передній план:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Тло:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "Інтерфейс" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "Нові дані:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "Маркер:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "Нове повідомлення:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "Користувач, що відсутній:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "Підсвічення:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Подія" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "Звуковий файл" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "Виберіть звуковий файл" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "Звуковий файл:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "В_ибрати..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "_Відтворити" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Інтерфейс" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Поле вводу" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Список користувачів" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "Перемикач каналів" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Кольори" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Розмови" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "Додатково" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Параметри мережі" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Передача файлів" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Категорії" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "Не можна розміщувати дерево вгорі чи внизу!\nСпочатку змініть розташування пункту <b>Вкладки</b> у меню <b>Вигляд</b>." + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "" + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Для набуття сили змін у деяких параметрах потрібно перезапустити програму." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*ПОПЕРЕДЖЕННЯ*\nАвтоматичне приймання DCC до вашої домашньої теки\nможе бути небезпечним. Наприклад:\nхтось може надіслати вам .bash_profile" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "" + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "Помилка при аналізу рядку" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Цей сигнал приймає лише аргументи %d, аргумент $%d не підходить" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "Друкувати текстовий файл" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ Число" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Правка подій" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "Завантажити з..." + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Перевірити всі" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Очистити список" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Копіювати виділений текст" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Копіювати" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Записати список у файл." + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d операторів, %d всього" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "Відкрити irc://server:port/channel URL" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "" diff --git a/hexchat/po/validate-textevent-translations b/hexchat/po/validate-textevent-translations new file mode 100755 index 0000000..e719d3a --- /dev/null +++ b/hexchat/po/validate-textevent-translations @@ -0,0 +1,69 @@ +#!/usr/bin/env python3 + +import os +import re +import sys + +ret = 0 + + +def log(prefix, suffix, fallback): + try: + print(prefix, suffix) # Non-utf8 output... + except UnicodeEncodeError: + print(prefix, fallback) + + +def validate_translation(input, translation): + if not translation: + return True + + if re.findall(r'(?:(?<!%)%[^%OCRUHBIH]|\$[^at1234])', translation): + log('Translation includes invalid formatting:', translation, input) + return False + + in_vars = re.findall(r'(\$(?:\d|t))', input) + if not all(var in translation for var in in_vars): + log('Translation does not contain all variables:', translation, input) + return False + + in_ascii = re.findall(r'\$a(\d{3})', translation) + if any(int(i) > 256 for i in in_ascii): + log('Translation contains invalid ascii value:', translation, input) + return False + + # We could try to validate colors but that is pretty flexible + return True + + +def validate_language(path): + global ret + + print('Validating', path) + + with open(path, 'r', encoding='utf-8') as f: + in_event = False + event_input = '' + + for line in f: + if 'textevents.h' in line: + in_event = True + elif in_event is False: + continue + elif line.startswith('msgid'): + event_input = line[7:-2] + elif line.startswith('msgstr'): + if not validate_translation(event_input, line[8:-2]): + ret = 1 + in_event = False + elif line == '\n': + print('Failed to find translation for', event_input) + in_event = False + + +with open(sys.argv[1], 'r') as linguas: + for lang in linguas: + path = os.path.join(sys.argv[2], lang.strip() + '.po') + validate_language(path) + +sys.exit(ret) diff --git a/hexchat/po/vi.po b/hexchat/po/vi.po new file mode 100644 index 0000000..e4dbfa7 --- /dev/null +++ b/hexchat/po/vi.po @@ -0,0 +1,6253 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-03 20:10+0000\n" +"Last-Translator: TingPing <tingping@tingping.se>\n" +"Language-Team: Vietnamese (http://www.transifex.com/hexchat/hexchat/language/vi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: vi\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Tôi đang bận" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Tôi đi" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Mạng" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<không có>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Kênh" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Đang đời" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "Hoặt động" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Bị lỗi" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Đã xong" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Kết nối" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Bị hủy bỏ" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "Không thể truy cập %s\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Lỗi" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s đang cung cấp « %s ». Bạn có muốn chấp nhận không?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "Không có DCC (trò chuyện trực tiếp) hoặt động nào\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "Cho quyền Quản trị" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "Bỏ quyền Quản trị" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "Cho quyền Tiếng nói" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "Bỏ quyền Tiếng nói" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "Đá/Đuổi" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "Đá" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "Đuổi" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "Đá đuổi" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Rời kênh đi" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Vào kênh..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "Nhập kênh cần vào :" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "Liên kết máy phục vụ" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Máy phục vụ Ping" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Ẩn phiên bản" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "QT" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "BỏQT" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "tạm biệt" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Nhập lý do đá %s:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "Đối thoại" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "Whois (là ai?)" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Gởi" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Trò chuyện" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Xóa trống" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "" + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "• Chạy IRC với tư cách người chủ (root) là không an toàn. •\nBạn nên tạo một tài khoản người dùng và sử dụng nó để đăng nhập.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "CÓ " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "KHÔNG " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Bạn đang bị tấn công bằng CTCP bởi %s nên bỏ qua %s.\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s trực tuyến\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s ngoạị tuyến\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Chưa vào kênh nào : hãy thử lệnh « /join #<kênh> »\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Chưa kêt nối: hãy thử lệnh « /server <máy> [<cổng>] »\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Đã nhãn « Vắng mặt »: %s\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "Đã nhán « Trở về »:\n" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "Cần « /bin/sh » để chạy được.\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "Các lệnh sẵn sàng:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "Các lệnh xác định riêng:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "Các lệnh xác định bởi bổ sung:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Hãy gõ lệnh « /HELP <lệnh> » để xem thông tin thêm (help: trợ giúp), hay « /HELP -l »." + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Không biết đối số « %s » nên bỏ qua nó." + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "" + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "Không tìm thấy bổ sung như vậy.\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "Bổ sung đó từ chối bỏ nặp.\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <tên> <hành_động>, _thêm_ một _cái nút_ bên dưới danh sách người dùng" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <lệnh>, gửi lệnh này tới _mọi kênh_ nơi bạn ở" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <lệnh>, gửi lệnh này tới _mọi máy phục vụ_ nơi bạn ở" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "BACK đặt bạn đã trở về (không phải vắng mặt)" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <bộ_lọc> [<kiểu_đuổi>], _đuổi_ mọi người khớp với bộ lọc này ra kênh hiện tại. Cần quyền quan trị kệnh (chanop) để đuổi ra người nào đang trên kênh" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "" + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <mã|ký_tự_đại_diện>, tìm thấy _quốc gia_, v.d. mã « au » = Úc" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <tên_hiệu> <tin_nhẳn>, gởi cho <tên_hiệu> <tin nhẳn> CTCP: hai tin nhẳn thường là VERSION (phiên bản) và USERINFO (thông tin người dùng)" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "CYCLE [<kênh>], rời kênh này hay kênh hiện tại rồi vào lại ngay (_quay lại_)" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <tên_hiệu> \t\tchấp nhận tập tin đã đưa ra (_lấy_)\nDCC SEND [-maxcps=#] <tên_hiệu> [tập_tin]\n\t_gởi_ [tập tin] cho <tên hiệu> (max. : tối đa)\nDCC PSEND [-maxcps=#] <tên_hiệu> [tập_tin]\n\t_gởi_ [tập_tin] cho <tên_hiệu> bằng chế độ _bị động_\nDCC LIST \t\t\t\thiển thị _danh sách_ DCC\nDCC CHAT <tên_hiệu> \tđưa ra _trò chuyện_ DCC với <tên hiệu>\nDCC PCHAT <tên_hiệu>\n\tđưa ra _trờ chuyện_ DCC với <tên_hiệu> bằng chế độ _bị động_\nDCC CLOSE <kiểu> <tên_hiệu> <tập_tin> (_đóng_) thí dụ:\n </dcc close send nguyenvan tập_tin.tar.gz>\n\tgởi cho người nguyenvan tập_tin.tar.gz rồi đóng kết nối DCC" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <tên_hiệu>, bỏ ra <tên hiệu> trạng thái quản trị kênh nửa (chanhalf-op) trên kênh hiện tại (cần quyền quản trị kênh)\n[DE (bỏ ra) Half (nửa) OPerator (quản trị viên)]" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <tên>, xóa bỏ cái nút <tên> ra dưới danh sách người dùng\n[DELete (xóa bỏ) BUTTON (nút)]" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <tên_hiệu>, bỏ ra <tên hiệu> trạng thái quản trị kênh (chanop) trên kênh hiện tại (cần quyền quản trị kênh (chanop))\n[DE (bỏ) OPerator (quản trị viên)]" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <tên_hiệu>, bỏ ra <tên hiệu> trạng thái tiếng nói trên kênh hiện tại (cần quyền quản trị kênh [chanop])\n[DE (bỏ) VOICE (tiếng nói)]" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, ngắt kết nối ra máy phục vụ\n[DISCONnect (ngắt kết nối)]" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <đoạn>, in ra <đoạn> một cách địa phương\n[ECHO (vọng, phản hồi)]" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <lệnh>, chạy <lệnh>. Nếu thêm cờ « -o », gởi dữ liệu xuất cho kênh hiện tại, nếu không thì in ra nó vào hộp văn bản hiện tại\n[EXECute (thực hiện)]" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, gởi tiến trình SIGCONT\n[EXECute (thực hiện) CONTinue (tiếp tục)\nSIGnal (tín hiệu) CONTinue (tiếp tục)]" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9], buộc kết thúc tiến trình đang chạy trong phiên làm việc hiện tại. Nếu thêm cờ « -9 », SIGKILL tiến trình này\n[EXECute (thực hiện) KILL (buộc kết thúc)\nSIGnal (tín hiệu) KILL (buộc kết thúc)]" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, gởi tiến trình SIGSTOP\n[EXECute (thực hiện) STOP (dừng)\nSIGnal (tín hiệu) STOP (dừng)]" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, gởi dữ liệu cho thiết bị nhập chuẩn của tiến trình\n[EXECute (thi hành) WRITE (ghi)]" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, xóa sạch hàng đợi gởi của máy phục vụ hiện tại\n[FLUSH (xoá sạch) Queue (hàng đời)]" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <máy_phục_vụ> [<cổng>], sử dụng máy ủy nhiệm; <cổng> mặc định là 23\n[GATE (cổng)]" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <tên_hiệu>, đưa ra <tên hiệu> trạng thái quản trị kênh nửa (cần quyền quản trị kênh [chanop])\n[Half (nửa) OPerator (quản trị viên)]" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <mật_khẩu>, nhận diện bạn với máy phục vụ tên hiệu\n[IDentify (nhận diện)]" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <bộ_lọc> <kiểu...> <tùy_chọn...> »\n[IGNORE (bỏ qua)]\n bộ lọc\t\tbộ lọc máy cần bỏ qua, v.d. « *!*@*.aol.com »\n kiểu\t\tkiểu dữ liệu cần bỏ qua, giá trị là một hay tất cả của:\n \tPRIV\t\tPRIVate (riêng)\n\tCHAN\tCHANnel (kênh)\n\tNOTI\tNOTIfy, NOTIce (thông báo)\n\tCTCP\n\tDCC \tDirect Chat Channel (kênh trò chuyện trực tiếp)\n\tINVI\t\tINVIte (mời)\n\tALL \t\t(tất cả)\n tùy chọn\n\tNOSAVE \t(không lưu)\n\tQUIET \t(không hiện chi tiết)" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <tên_hiệu> [<kênh>], _mời_ <tên hiệu> vào <kênh>; mặc định là kênh hiện tại (cần quyền quản trị kênh [chanop])" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <kênh>, _vào_ <kênh>" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, buộc _kiểm tra sự trễ_ mới" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <tập_tin>, _nạp_ một bổ sung hay tập lệnh" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, bỏ trạng thái quản trị kênh nửa (chanhalf-op) ra mọi người trên kênh hiện tại (cần quyền quản trị kênh [chanop])\n[Mass (số nhiều) DE (bỏ) Half (nửa) OPerator (quản trị viên)]" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, bỏ trạng thái quản trị kênh (chanop) ra mọi người trên kênh hiện tại (cần quyền quản trị kênh [chanop])\n[Mass (số nhiều) DE (bỏ) OPerator (quản trị viên)]" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <hành_động>, gởi <hành động> cho kênh hiện tại (v.d. « /me jumps » gởi « <tên hiệu> nhảy »\n[ME (tôi, mình)]" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, đá mọi người (trừ bạn) ra kênh hiện tại (cần quyền quản trị kênh [chanop])\n[Mass (số nhiều) KICK (đá)]" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, đưa ra mọi người dùng có trạng thái quản trị kênh (chanop) trên kênh hiện tại (cần quyền quản trị kênh [chanop])\n[Mass (số nhiều) OPerator (quản trị viên)]" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <tên_hiệu> <tin_nhẳn>, gởi thông báo CTCP\n[Notice (thông báo) CTCP]" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <tên_máy> [<cổng>]\n[SERVER (máy phục vụ) NEW (mới); no connect (không kết nối)]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <tên_hiệu>, đặt <tên hiệu> của bạn\n[NICKname (tên hiệu [viết tắt])]" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [-n mạng1[,mạng2,...]] [<tên_hiệu>], hiển thị danh sách _thông báo_ của bạn, hoặc thêm <tên_hiệu> vào nó" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <tên_hiệu>, đưa ra <tên hiệu> có trạng thái quản trị kênh (chanop) (cần quyền quản trị kênh [chanop])\n[OPerator (quản trị viên)]" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<kênh>] [<lý_do>], rời <kênh> đi; mặc định là kênh hiện tại\n[dePART (rời đi)]" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <tên_hiệu | kênh>, thực hiện tiến trình « ping » CTCP với <tên hiêu> hay <kênh>\n[Tiến trình ping gửi chỉ một gói tin để thử ra nếu kết nối hoạt động hay không; nó gửi lại đến khi bạn ngắt nó.]" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "" + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<lý_do>], ngắt kết nối ra máy phục vụ hiện tại\n[QUIT (_thoát_)]" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <chuỗi>, gởi <chuỗi> dạng thô cho máy phục vụ\n[QUOTE (trích dẫn)]" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<máy>] [<cổng>] [<mật_khẩu>], có thể tái kết nối đến mấy phục vụ hiện tại khi chỉ đơn giản dùng « /RECONNECT », hoặc tái kết nối đến mọi máy phục vụ đang mở dùng « /RECONNECT ALL »\n[RECONNECT (tái kết nối); (phương pháp SSL bảo vệ dữ liệu cần truyền)]" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<máy>] [<cổng>] [<mật_khẩu>], có thể tái kết nối đến mấy phục vụ hiện tại chỉ đơn giản dùng « /RECONNECT », hoặc tái kết nối đến mọi máy phục vụ đang mở dùng « /RECONNECT ALL »\n[RECONNECT (tái kết nối); không có SSL bảo vệ dữ liệu)]" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <chuỗi>, gởi <chuỗi> cho đối tượng trong cửa sổ hiện tại\n[SAY (_nói_)]" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <tên_hiệu> [<tập_tin>], _gởi_ <tập tin> cho <tên hiệu>" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <máy> <cổng> <kênh>, kết nối đến <kênh> rồi vào nó\n[SERVer (máy phục vụ) CHANnel (kênh); phương pháp SSL bảo vệ dữ liệu cần truyền)]" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <máy> <cổng> <kênh>, kết nối đến <kênh> rồi vào nó\n[SERVer (máy phục vụ) CHANnel (kênh); không có SSL bảo vệ dữ liệu)]" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <máy> [<cổng>] [<mật_khẩu>], kết nối đến <mấy> phục vụ ; cổng mặc định là số 6667\n[SERVER (máy phục vụ); không có SSL bảo vệ dữ liệu)]" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<chủ_đè>], lập <chủ đề> nếu nó đã cho, nếu không thì hiển thị chủ đề hiện tại." + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "\nTRAY -f <thời hạn> <tập tin 1> [<tập tin 2>] Chớp khay giữa hai biểu tượng.\nTRAY -f <tập tin> Đặt khay là biểu tượng riêng.\nTRAY -i <số> Chớp khay với biểu tượng bên trong.\nTRAY -t <chuỗi> Đặt mẹo công cụ của khay.\nTRAY -b <tựa> <chuỗi> Đặt khung thoại của khay." + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <bộ_lọc> [<bộ_lọc>...], bỏ trạng thái bị đuổi ra những bộ lọc đã ghi rõ\n[UN (hủy) BAN (đuổi)]" + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <bộ_lọc> [QUIET]\n[UN (hủy) IGNORE (bỏ qua); QUIET (không hiện chi tiết)]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <tên>, bỏ nạp một bổ sung hay văn lệnh\n[UN (hủy) LOAD (nạp)]" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "" + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, mở địa chỉ <url> trong trình duyệt Mạng của bạn." + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "USELECT [-a] [-s] <tên_hiệu1> <tên_hiệu2> v.v., tô sáng những tên hiệu này trong danh sách các người dùng trên kênh\n[User (người dùng) SELECT (lựa chọn)]" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <tên_hiệu>, đưa ra <tên hiệu> trạng thái _tiếng nói_ (cần quyền quản trị kênh [chanop])." + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <thông_điệp>, ghi <thông_điệp> vào mọi kênh\n[Write (ghi) ALL (mọị) CHANnel (kênh)]" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <thông_điệp>, gởi <thông_điệp> cho mọi quản trị kênh [chanop] trên kênh hiện tại\n[Write (ghi) ALL (mọi) CHannel (kênh) OPerator (quản trị viên)]" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "Cách sử dụng: %s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\nKhông có trợ giúp về lệnh đó.\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "Không có lệnh như vậy.\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "Lệnh người dùng có đối số sai.\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "Quá nhiều lệnh người dùng đệ qui nên hủy bỏ." + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Bạn có chắc điều này là máy phục vụ và cổng có khả năng SSL không?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "Không tìm thấy tên máy %s.\nHãy kiểm tra thiết lập IP của bạn.\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "Việc đi qua máy phục vụ ủy nhiệm bị lỗi.\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Đang quay lại đến mấy phục vụ kế tiếp trong %s...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "Cảnh báo : không biết bộ ký tự « %s » nên không chuyển đổi cho mạng %s." + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "" + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "" + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%UKênh \t Người Chủ đề" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "" + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "" + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "" + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "" + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "" + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "" + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "" + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "" + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "" + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "" + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "" + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "" + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$tDanh sách thông báo la trống." + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "" + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "" + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "" + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "" + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "Bản ghi đã được nạp từ" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** KẾT THÚC GHI LƯU VÀO %s\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** BẮT ĐẦU GHI LƯU VÀO %s\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "Tin nhẳn bên trái" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "Tin nhẳn bên phải" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "Địa chỉ IP" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "Tên người dùng" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "Tên hiệu của người đang vào" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "Kênh đang được vào" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "Máy của người ấy" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "Tên hiệu" + +#: src/common/text.c:980 +msgid "The action" +msgstr "Hành động" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "Ký tự chế độ" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "Chuỗi đã nhận biết" + +#: src/common/text.c:987 +msgid "The text" +msgstr "Chuỗi" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "Tin nhẳn" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "Tên máy phục vụ" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "Tên hiệu cũ" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "Tên hiệu mới" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "Tên hiệu của người đã thay đổi chủ đề" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "Chủ đề" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "Tên hiệu của người đá" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "Người đang bị đá" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "Kênh" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "Lý do" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "Tên hiệu của người đang rời đi" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "Giờ" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "Người tạo" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "Tên hiệu" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Lý do" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Máy" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "Người gởi" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "Giờ dạng x.x (xem dưới)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "Kênh đích" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "Âm thanh" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "Tên hiệu của người ấy" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "Sự kiện CTCP" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "Tên hiệu của người đã đặt khoá" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "Khoá" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "Tên hiệu của người đã đặt giới hạn" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "Giới hạn" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "Tên hiệu của người đã đặt trạng thái quản trị" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "Tên hiệu của người đã nhận trạng thái quản trị" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "Tên hiệu của người đã nhận trạng thái nửa quản trị" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "Tên hiệu của người đã đặt trạng thái nửa quản trị" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "Tên hiệu của người đã đặt trạng thái « Tiếng nói »" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "Tên hiệu của người đã nhận trạng thái « Tiếng nói »" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "Tên hiệu của người đã đuổi người khác" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "Bộ lọc đuổi ra" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "Tên hiệu đã gỡ bỏ khoá" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "Tên hiệu đã gỡ bỏ giới hạn" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "Tên hiệu của người đã mất trạng thái quản trị" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Tên hiệu của người đã mất trạng thái nửa quản trị" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "Tên hiệu của người đã mất trạng thái « Tiếng nói »" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "Tên hiệu của người đã đặt trạng thái miễn" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "Bộ lọc miễn" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "Tên hiệu của người đã bỏ trạng thái miễn" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "Tên hiệu của người đã mời người khác" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "Bộ lọc mờì" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "Tên hiệu của người đã gỡ bỏ lời mời" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "Tên hiệu của người đặt chế độ" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "Dấu chế độ (+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "Chữ chế độ" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "Kênh trên đó nó đang được đặt" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "Họ tên" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Tư cách thành viên kênh/« là quản trị IRC »" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Thông tin máy phục vụ" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "Thời gian nghỉ" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "Giờ đăng nhập" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "Lý do vắng mặt" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Tin nhẳn" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Tài khoản" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "Người dùng thât@máy" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "Địa chỉ IP thật" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "Tên kênh" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Chuỗi" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "Tên hiệu của người đã mời bạn" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Người dùng" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "Tên hiệu đang được dùng" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "Tên hiệu đang được thử ra" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Cổng" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "Chuỗi chế độ" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "Kiểu DCC" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "Tên tập tin" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "Tên tập tin đích" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "Tên đường dẫn" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Vị trí" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Cỡ" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "Chuỗi DCC" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "Số mục thông báo" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Tên tập tin cũ" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Tên tập tin mới" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Bộ nhận" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "Bộ lọc máy" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "Tên máy" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "Gói tin" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "Giây" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "Tên người đã được mời" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "Bộ lọc đuổi ra" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "Người đã đặt đuổi ra" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "Thời gian đuổi ra" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "Không thể đọc tập tin âm thanh:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "Máy ở xa đã đóng ổ cắm" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "Kết nối bị từ chối" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "Không có đường dẫ đến máy" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "Kết nối đã quá giờ" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "Không thể gán địa chỉ đó" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "Kết nối bị đặt lại bởi ngang hàng" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "Đảo Ascension" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Ăn-đoa-râ" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Các Tiểu Vương Quốc A Rập Thống Nhất" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "A Phú Hãn" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Ănh-thí-gụ-a và Ba-bu-đạ" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Ănh-gouí-lạ" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "An-ba-ni" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Ác-mê-ni" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "An-thi-li Hoà-lan" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Ăng-gô-la" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Nam cực" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Ác-hen-ti-na" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "DNS ngược" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Xa-mô-a Mỹ" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Ao" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "Na-tô Phi-en" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Úc" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "A-ru-ba" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "Quần Đảo A-lan" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Ai-déc-bai-gian" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Bô-x-ni-a và Héc-xê-gô-vi-na" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Bác-ba-đốt" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Băng-la-đe-xợ" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Bỉ" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Bổ-khi-na Pha-xô" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Bun-ga-ri" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Ba-ren" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Bu-run-đi" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "Kinh doanh" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Bê-nin" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Be-mư-đa" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Bợ-ru-này Đa-ru-xa-làm" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Bô-li-vi-a" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Bra-xin" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Ba-ha-ma" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Bu-thăn" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Quần Đảo Bu-vê" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Bốt-xoă-na" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Be-la-ru-xợ" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Bê-li-xê" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Ca-na-đa" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Quần Đảo Cô-cô-x" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "Cộng Hoà Dân Chủ Công-gô" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "Cộng Hoà Trung Châu Phi" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Công-gô" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "Thụy Sĩ" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "Cộng Hoà Cốt Đi-vouă" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Quần Đảo Khu-kh" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Chi-lê" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Ca-mơ-runh" + +#: src/common/util.c:738 +msgid "China" +msgstr "Trung Quốc" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Cô-lôm-bi-a" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Thương nghiệp Internic" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Cốt-x-tha Ri-ca" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "Xéc-bi và Mon-te-nê-gợ-rô" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Cu-ba" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Cáp-ve-đe" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Đảo Cợ-ri-x-mạ-x" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Síp" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "Cộng Hoà Séc" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Đức" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Gi-bu-ti" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Đan Mạch" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Đô-mi-ni-cạ" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "Cộng Hoà Đô-mi-ni-cạ" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "An-giê-ri" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Ê-cu-a-đọa" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "Tổ chức giáo dục" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "E-x-tô-ni-a" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Ai Cập" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Tây Sa-ha-ra" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Ê-ri-tơ-rê-a" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "Tây Ban Nha" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Ê-ti-ô-pi" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "Liên Bang Âu" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Phần Lan" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Phi-gi" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Quần Đảo Phoa-kh-lận-đ" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Mi-cợ-rô-nê-xi-a" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Quần Đảo Pha-rô" + +#: src/common/util.c:770 +msgid "France" +msgstr "Pháp" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Ga-bon" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Vương Quốc Thống Nhất Anh va Bắc Ai-len" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Gợ-rê-na-đa" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Gi-oa-gi-a" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Ghi-a-na Pháp" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "Quần Đảo Kênh Anh" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Gha-na" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Gi-boa-thạ" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Đảo Băng" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Găm-bi-ạ" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Ghi-nê" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Chính phủ" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Gu-a-đe-lu-pợ" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Ghi-nê Xích-đạo" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Hy Lạp" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Quần Đảo xan Gi-oa-gi-a và xan Xan-oui-chợ" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Gua-tê-ma-la" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Gu-ăm" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Ghi-nê Bít-xau" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Guy-ă-na" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Hông Kồng" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "Quần Đảo Hơ-đh và Mơ-kh-đo-nựn" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Hôn-đu-ra-xợ" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Cợ-rô-a-ti-a" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Ha-i-ti" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Hung-ga-ri" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Nam Dương" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Ai-len" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Do Thái" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "Đảo Man" + +#: src/common/util.c:801 +msgid "India" +msgstr "Ấn Độ" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "Cung cấp thông tin" + +#: src/common/util.c:803 +msgid "International" +msgstr "Quốc tế" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Miền Đại Dương Ấn Độ Anh" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "I-rắc" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "I-ran" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Băng Đảo" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Ý" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "Giơ-xi" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Gia-mê-ca" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Gi-oa-đạn" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Nhật Bản" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Khi-nia" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Ky-rơ-gy-xtanh" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Căm Bốt" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Ki-ri-ba-ti" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Cô-mô-rô-x" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "Xan Kith-x và Ne-vi-xợ" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Bắc Hàn" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Nam Hàn" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Cu-ouai-th" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Quần Đảo Cay-man" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Ca-xa-kh-x-thanh" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Lào" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Le-ba-non" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "Xan Lu-xi-a" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Lich-ten-xtênh" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Xợ-ri-lan-ca" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Li-bê-ri-a" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Lê-xô-thô" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Li-tu-a-ni" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Lúc-xăm-buac" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Lát-vi-a" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Li-bi-a" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Ma-rốc" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Mô-na-cô" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Moa-đô-vạ" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "Y Mỹ" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Ma-đa-gá-x-cạ" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Quần Đảo Mác-san" + +#: src/common/util.c:843 +msgid "Military" +msgstr "Quân đội" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Ma-xê-đô-ni" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Ma-li" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Miến Điện" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Mông Cổ" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "Ma-cau" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Quần Đảo Bắc Ma-ri-a-na" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Ma-thi-ní-kh" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Mô-ri-ta-ni-a" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Mon-xe-rạc" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Man-tơ" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Mô-ri-sơ" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Man-đi-vợ-x" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Ma-la-uy" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "Mê-hi-cô" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Mã Lai" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Mô-xam-bí-kh" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Na-mi-bi-a" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Niu Ca-lê-đô-ni-a" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Ni-giê" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Mạng Internic" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Đảo Noa-phực" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Ni-giê-ri-a" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Ni-ca-ra-gua" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Hoà Lan" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Na Uy" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Nê-pan" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Nau-ru" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Ni-u-e" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "Niu Xi-lân" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Ô-man" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "Tổ chức Phi lợi nhuận Internic" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Pa-na-ma" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Pê-ru" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Pô-li-nê-xi Pháp" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Pa-pu-a Niu Ghi-nê" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Phi-luật-tân" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Pa-ki-x-thănh" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Ba Lan" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "Xan Pi-e và Mi-kê-lon" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Pi-th-khenh" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Pu-e-tô Ri-cô" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "Hạt Pa-le-x-tin" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Bồ Đào Nha" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Pa-lau" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Pa-ra-guay" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Qua-tă" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Rê-u-ni-ợnh" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Rô-ma-ni" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "ARPAnet kiểu cũ" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Liên Bang Nga" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Ru-oanh-đạ" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "A Rập Xau-đi" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Quần Đảo Xô-lô-mon" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Xây-sen" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Xu-đan" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Thuỵ Điển" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Xin-ga-po" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "Xan He-le-na" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Xlô-ven" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Quần Đảo X-van-băt và Dan May-en" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "Cộng Hoà Xlô-vác" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Xi-ê-ra Lê-ôn" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "Xan Ma-ri-nô" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Xê-nê-gan" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Xô-ma-li" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Xu-ri-nam" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "Xao Tô-mê và Pợ-rin-xi-pê" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Liên xô trước" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "En-xan-va-đoa" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Xi-ri" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Xouă-xi-lan" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "Quần Đảo Tổc và Cai-co-x" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Chê-đ" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "Miền Nam Pháp" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Tô-gô" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Thái Lan" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Ta-gí-khi-x-thanh" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "To-ke-lau" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Đông Ti-mọa" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Tổc-mê-ni-x-tanh" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Tu-ni-xi-a" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Tông-ga" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Thổ Nhĩ Kỳ" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Trinh-i-đat và To-ba-gô" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Tu-va-lu" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Đài Loan" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Tan-xa-ni-a" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "U-cợ-rainh" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "U-gan-đa" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Vương Quốc Anh Thống Nhất" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "Mỹ" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "U-ru-guay" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "U-xơ-bê-ki-x-tanh" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Bang Thành Phố Va-ti-can" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "Xan Vin-xen và Gợ-re-na-đinh" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Vê-nê-xu-ê-la" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "Quần Đảo Vơ-ginh Anh" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "Quần Đảo Vơ-ginh Mỹ" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Việt Nam" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Va-nu-a-tu" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "Quần Đảo Oua-lit và Phu-tu-na" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Xa-moa" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Y-ê-men" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "May-oth" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Nam Tư" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Nam Phi" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Xăm-bi-a" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Xim-ba-buê" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "Không thể kết nối đến bộ nối phiên chạy" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "Lỗi chạy xong NameHasOwner (tên có người sở hữu)" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "Lỗi chạy xong Command (lệnh)" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "truy cập từ xa" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "bổ sung cho truy cập từ xa bằng DBUS" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Không thể kết nối đến bộ nối phiên chạy: %s\n" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Lỗi lấy %s: %s\n" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Sơ đồ ký tự" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "Đuổi" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Mời" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "Chưa kết nối." + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "Phải chọn một số việc đuổi ra." + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "Lọc" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "Từ" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Ngày" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Bạn có thể mở cửa sổ Danh Sách Đuổi Ra chỉ khi trong một thẻ kênh." + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "Danh Sách Đuổi Ra (%s) - %s" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Gỡ bỏ" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "Xén" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Cập nhật" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Đang hiển thị %d/%d người dùng trên %d/%d kênh." + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Hãy chọn tên tập tin xuất" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "_Vào kênh" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "_Chép tên kênh" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "Chép c_hủ đề" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "Danh Sách Kênh (%s) - %s" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "_Tìm" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "Tải về _danh sách" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "_Lưu danh sách..." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "Hiển thị chỉ:" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "kênh có" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "đến" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "người dùng." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "Tìm trong:" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "Tên kênh" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "Cách tìm:" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "Tìm đơn giản" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "Khớp mẫu (ký tự đại diện)" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "Biểu thức chính quy" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Tìm:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Gởi tập tin cho %s" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "Tập tin đó không tiếp tục được." + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "Không thể truy cập tập tin: %s\n%s.\nNên không thể tiếp tục lại." + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "Tập tin nằm trong thư mục tải về là lớn hơn điều đã đưa ra nên không thể tiếp tục lại." + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "Không thể tiếp tục lại cùng một tập tin từ hai người khác." + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "Tải lên/về - %s" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Trạng thái" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Tập tin" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "Giờ tới xấp xỉ" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Cả hai" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "Tải lên" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "Tải về" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "Chi tiết" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "Tập tin:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "Địa chỉ:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Hủy bỏ" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Chấp nhận" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Tiếp tục" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "Mở thư mục..." + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "Danh Sách Trò Chuyện Trực Tiếp (DCC) - %s" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Nhận" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Gởi" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "Giờ bắt đầu" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Xóa" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Thôi" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Lưu" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "Không tự động kết nối đến máy phục vụ" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "Dùng thư mục cấu hình khác" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "Không tự động nạp bổ sung nào" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "Hiển thị thư mục cấu hình của người dung" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "Thi hành lệnh:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Khởi chạy bị thu nhỏ. Cấp: 0=Chuẩn 1=Biểu tượng 2=Khay" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "cấp" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "Hiển thị thông tin phiên bản" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "Lỗi mở phông chữ :\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "Bộ đệm tìm kiếm là trống.\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d byte" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Hàng đợi gởi mạng: %d byte" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "Lệnh « Chèn vào bộ đệm » chèn nội dung của « Dữ liệu 1 » vào trường nơi bạn đã bấm dãy phím đó, tại vị tri con trỏ hiện có" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "Lệnh « Đặt bộ đệm » đặt trường nơi dãy phím được nhập thành nội dung của « Dữ liệu 1 »" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "Lệnh « Lệnh cuối » đặt trường để chứa lệnh mới nhập — giống như khi bấm phím mũi tên lên trong trình bao" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "Lệnh « Lệnh kế » đặt trường chứa lệnh kế tiếp được nhập — giống như khi bấm phím mũi tên xuống trong trình bao" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "Lệnh này thay đổi đoạn chữ trong trường nhập để nhập xong tên hiệu hay lệnh chưa hoàn thành. Nếu « Dữ liệu 1 » đã được đặt, việc bám phím Tab hai lần trong chuỗi sẽ chọn tên hiệu trước, không phải tên hiệu sau." + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "Lệnh này cuộn lên và xuống danh sách các tên hiệu. Nếu « Dữ liệu 1 » được đặt thành gì, nó sẽ cuộn lên, nếu không thì nó sẽ cuộn xuống." + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "Lệnh này so sánh từ mới nhập vào trường với danh sách thay thế, và thay thế nó nếu tìm thấy từ khớp" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "Lệnh này di chuyển thẻ trươc phía bên trái theo một điều" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "Lệnh này di chuyển thẻ trươc phía bên phải theo một điều" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "Lệnh này di chuyển nhóm thẻ hiện thời phía bên trái" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "Lệnh này di chuyển nhóm thể hiện thời phía bên phải" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "Đẩy dòng nhập vào lịch sử nhưng không gởi cho máy phục vụ" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "Gặp lỗi khi nạp cấu hình tổ hợp phím" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "Phím tắt - %s" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "Không thể ghi vào tập tin đó." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "Không thể đọc tập tin đó." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "Bộ lọc đã có." + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Riêng" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "Thông báo" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "Thôi bỏ qua" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "Hãy nhập bộ lọc cần bỏ qua:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "Danh Sách Bỏ Qua - %s" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Thống Kê Bỏ Qua:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Kênh:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Riêng:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Thông báo :" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Mời:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "Thêm..." + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "Tên kênh quá ngắn nên hãy thử lại." + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "Kết nối hoàn tất - %s" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "Kết nối đến %s hoàn tất." + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "Tiếp sau đây bạn có muốn làm gì?" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "Gì cả, tôi sẽ tham gia kê_nh sau này." + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "_Vào kênh này:" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Nến bạn có biết tên kênh bạn muốn vào, hãy nhập nó vào đây." + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "" + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "_Luôn hiển thị hộp thoại này một khi kết nối." + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "Đối thoại với" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Chủ đề cho %s là: %s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "Chưa đặt chủ đề" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "Máy phục vụ này vẫn còn có %d kênh hay đối thoại được liên quan đến nó. Đóng hết không?" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "Đừng hỏi lần kế tiếp." + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Bạn hiện thời có kết nối với %i mạng IRC." + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "Bạn có chắc muốn thoát không?" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "Có một số việc truyền tập tin còn hoặt động." + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "Thu nhỏ về _Khay" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "Chèn mã Thuộc Tính hay mã Màu" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>Đậm</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>Gạch dưới</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "Chuẩn" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "Màu sắc 0-7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "Màu sắc 8-15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "Đón_g" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "Giới hạn người dùng phải là con số.\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "Không có tin nhẳn bên ngoài" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "Bảo vệ chủ đề" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "Chỉ mời" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "Đã điều tiết" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "Danh Sách Đuổi Ra" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "Từ khoá" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "Giới hạn người dùng" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "Hãy nhập tên hiệu mới:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "" + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "" + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "" + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "Không biết máy" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Chưa biết" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Tên thật:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "Người dùng:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "Quốc gia:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "Máy phục vụ :" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "cách đây %u phút" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "Tin nhẳn cuối:" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "Thông điệp Vắng mặt:" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "Mở liên kết trong trình duyệt" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "Chép liên kết đã chọn" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Vào kênh" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "Rời kênh đi" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "Quay lại kênh" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "Trình đơn người dùng - %s" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "Trả lời CTCP — mã đặc biệt:\n\n%d \t\tdữ liệu (toàn bộ CTCP)\n%e \t\ttên mạng hiện có\n%m \t\tthông tin về máy\n%s \t\ttên hiệu đã gởi CTCP\n%t \t\tgiờ/ngày\n%2 \t\ttừ 2\n%3 \t\ttừ 3\n&2 \t\ttừ 2 đến kết thúc dòng\n&3 \t\ttừ 3 đến kết thúc dòng\n\n" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "Lệnh định nghĩa riêng - %s" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "Thay thế - %s" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "Thay thế bằng" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "Quản lý URL - %s" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "Nút danh sách người dùng - %s" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "Nút đối thoại - %s" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "Trả lời CTCP - %s" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "_Mới" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "T_hoát" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "_Xem" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "Thanh t_rình đơn" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "_Thanh chủ đề" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "Danh sách người _dùng" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "Nút _chế độ" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "Bộ _chuyển đổi kênh" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "_Thẻ" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "Câ_y" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "Bộ do mạ_ng" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "Tất" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "Đồ thị" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "Máy _phục vụ" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "_Ngắt kết nối" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "_Tái kết nối" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "Trình đơn người _dùng" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "Thiết _lập" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "Tù_y thích" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "_Cửa sổ" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "Đặt lại dòng đánh dấu" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "Xóa t_rắng văn bản" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "Trợ g_iúp" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "_Nội dung" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "_Giới thiệu" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "Tên" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "Gặp cuối cùng" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "Ngoại tuyến" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Chưa bao giờ" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "cách đây %d phút" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "Trực tuyến" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "Hãy nhập tên hiệu cần thêm:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "Thông báo trên các mạng này:" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "Cho phép tạo danh sách các mạng định giới bằng dấu phẩy." + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "Mở đối thoại" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "đang kết nối với %u mạng và %u kênh - %s" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "_Bật chớp" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "Thông điệp kênh" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "Tin nhẳn riêng" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "Tin nhẳn đã tô sáng" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "nhận được tin nhẳn đã tô sáng từ : %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "Nhận %u tin nhẳn đã tô sáng, mới nhất từ : %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "Nhận tin nhẳn riêng từ : %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "Nhận %u tin nhẳn riêng, mới nhất từ : %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "Nhận lời mời gởi tập tin từ : %s (%s) - %s" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "Nhận %u lời mời gởi tập tin, mới nhất từ : %s (%s) - %s" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Phiên bản" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Mô tả" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Chọn bổ sung hay văn lệnh cần nạp" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "Bổ sung và Văn lệnh - %s" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "_Nạp..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "Lưu dạng..." + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Mạng mới" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Thật gỡ bỏ mạng « %s » và tất cả máy phục vụ của nó không?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "Sửa %s - %s" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "_Sửa" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "Kết nối đến chỉ máy phục vụ đã chọn" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Không quay lại qua tất cả các máy phục vụ khi kết nối bị ngắt." + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "Dùng SSL cho mọi máy phục vụ trên mạng này" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "Dùng thông tin người dùng toàn cục" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "Tê_n hiệu :" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "Chọn thứ hai:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "_Tên thật:" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "Tên người _dùng:" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Mật khẩu :" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "Bộ ký tự :" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "Danh sách mạng - %s" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "Thông tin người dùng" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "Chọn thứ ba:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Mạng" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "Bỏ qua danh sách mạng khi khởi chạy" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "_Sửa..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "Sắp _xếp" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "_Kết nối" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "An-ba-ni" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Ai-déc-bai-gian" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Be-la-ru-xợ" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Bun-ga-ri" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "E-x-tô-ni-a" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "Ấn Độ" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Mã Lai" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Thái Lan" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Việt Nam" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Chung" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Phông:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "Tên hiệu có màu" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "Cho mỗi người trên IRC có một màu riêng" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "Thụt lệ tên hiệu" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "Canh lề bên phải các tên hiệu" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "Hiện dòng đánh dấu" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "Chèn dòng màu đỏ sau đoạn chữ đã đọc cuối cùng." + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "Ảnh nền:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "Thiết lập trong suốt" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "" + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "" + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "Thứ tự đã nói cuối cùng" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "Bắt lỗi chính tả" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "Gõ xong tên hiệu" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "Hậu tố gõ xong tên hiệu :" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "Sắp xếp cách gõ xong tên hiệu :" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "" + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "Chưa sắp xếp" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Trên" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Dưới" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Ẩn" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "Danh sách người dùng" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "HIện tên máy trong danh sách người dùng" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "Dùng phông chữ và màu của hộp văn bản" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "Sắp xếp danh sách người dùng theo :" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "Hiện danh sách người dùng ở :" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "Trên kênh nhỏ hơn:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "Hành động khi nhấn đôi" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Cửa sổ" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Thẻ" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "Luôn" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "Chỉ thẻ đã yêu cầu" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "Mở thẻ thêm cho thông điệp máy phục vụ" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "Mở thẻ mới khi bạn nhận tin nhẳn riêng" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "Sắp xếp thẻ theo thứ tự abc" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "Tới thẻ mới:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "Hiện bộ chuyển đổi kênh ở :" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "Giảm nhãn thẻ thành:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "chữ." + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "Thẻ hay Cửa sổ" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "Mở kênh trong:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "Mở đối thoại trong:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "Mở tiện ích trong:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Mở DCC, Bỏ qua, Thông báo v.v. trong thẻ hay cửa sổ?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "Tập tin và Thư mục" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "Tự chấp nhận tập tin đã đưa ra:" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "Tải tập tin về:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "Di chuyển tập tin hoàn tất sang:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "Lưu tên hiệu trong tên tập tin" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "Tự mở cửa sổ DCC" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "Cửa sô Gởi" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "Cửa sổ Nhận" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "Cửa sổ Trò chuyện" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "Một việc tải lên:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "Tốc độ tối đa cho môt việc truyền" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "Một việc tải về:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "Tổng số việc tải lên:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "Tốc độ tối đa cho mọi tập tin" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "Tổng số việc tải về:" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "Cảnh giác" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "Chớp biểu tượng khay khi:" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "Chớp thanh tác vụ khi:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "Kêu bíp khi:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "Bật biểu tượng khay của hệ thống" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "" + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "Tin nhẳn đã tô sáng" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Tin nhẳn đã tô sáng là tin nhẳn chứa tên hiệu của bạn, cũng như :" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "Từ thêm cần tô sáng:" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "Tên hiệu cần không tô sáng:" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "Tên hiệu cần tô sáng luôn luôn:" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "Tin nhẳn mặc định" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "Thoát:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "Rời kênh đi:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "Vắng mặt:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "Vắng mặt" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "Hiện Vắng mặt một lần" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "Tự bỏ nhãn Vắng mặt" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "" + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "Trình bày CHẾ ĐỘ dạng thô" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "Ẩn các tin nhẳn vào/rời" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "Trễ tự tái kết nối:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Ghi lưu" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "Dòng cuộn ngược:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "Ghi lưu tên tập tin:" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Máy %c=Kênh %n=Mạng." + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "Ghi giờ vào bản ghi" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "Dạng ghi giờ bản ghi:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URL" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(Tắt)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "Địa chỉ của bạn" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "Đóng kết với:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "Chỉ có ích trên máy tính có nhiều địa chỉ." + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "Lấy địa chỉ của tôi từ máy phục vụ IRC" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "Gọi địa chỉ thật của bạn từ máy phục vụ IRC. Hãy bật tùy chon này nếu bạn có địa chỉ số « 192.168.*.* »." + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "Địa chỉ IP DCC:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "Tuyên bố bạn ở địa chỉ này khi đưa ra tập tin." + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "!Để mọi cổng có giá trị số không cho toàn bộ phạm vị." + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "Máy phục vụ ủy nhiệm" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "Tên máy:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Cổng:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Kiểu :" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "Dùng ủy nhiệm cho :" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "Xác thực ủy nhiệm" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "Tên người dùng:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "Chọn tập tin ảnh" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "Chọn thư mục tải về" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Chọn phông" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Duyệt..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "Mở thư mục Dữ liệu" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Chọn màu" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "Màu chữ" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "Màu mIRC:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "Màu cục bộ :" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Tiền cảnh:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Nền:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "Màu giao diện" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "Dữ liệu mới:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "Dòng đánh dấu :" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "Tin nhẳn mới:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "Người dùng vắng mặt:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "Tô sáng:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Sự kiện" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "Tập tin âm thanh" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "Chon tập tin âm thanh" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "Tập tin âm thanh:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "_Duyệt..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "_Phát" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Giao diện" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Hộp nhập" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Danh sách Người dùng" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "Bộ chuyển đổi kênh" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Màu sắc" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "Đang trò chuyện" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "Cấp cao" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Thiết lập mạng" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Việc truyền tập tin" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Loại" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "Không thể đặt cây bên trên hay bên dưới.\nTrước hết hãy chuyển đổi sang bố trí <b>Thanh</b> trong trình đơn <b>Xem</b>." + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "" + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Một sô thiết lập đã được thay đổi nên cần phải khởi chạy lại để hoạt động đầy đủ." + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "•• CẢNH BÁO ••\nViệc tự động chấp nhận DCC vào thư mục\nchính của bạn có lẽ nguy hiểm và cho phép\nngười khác tấn công hệ thống của bạn.\nV.d. người khác có thể gởi cho bạn\nmột « .bash_profile »." + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "Tùy thích - %s" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "" + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "Gặp lỗi khi phân tách chuỗi đó" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Tín hiệu này chỉ nhận %d đối sô, $%d không hợp lệ" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "In tập tin các văn bản" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ Số" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Sửa sự kiện" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "Nạp từ..." + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Kiểm tra hết" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "Lấy URL - %s" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Xóa trống danh sách" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Chép URL đã chọn" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Chép" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Lưu danh sách vào tập tin" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d quản trị, %d tổng số" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "Mở địa chỉ URL dạng « irc://máy:cổng/kênh »" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "" diff --git a/hexchat/po/wa.po b/hexchat/po/wa.po new file mode 100644 index 0000000..6266bb6 --- /dev/null +++ b/hexchat/po/wa.po @@ -0,0 +1,6254 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Pablo Saratxaga <pablo@walon.org>, 2004 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-03 20:10+0000\n" +"Last-Translator: TingPing <tingping@tingping.se>\n" +"Language-Team: Walloon (http://www.transifex.com/hexchat/hexchat/language/wa/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: wa\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "Dji so-st ocupé" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "Cwitant" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "Rantoele" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<nouk>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "Canå" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "Ratindant" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "En alaedje" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "Berwete" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "Fwait" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "Raloyaedje" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "Rinoncî" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "Dji n' sai acceder a %s\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "Aroke" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "Cwiter l' canå" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "Adjonde li canå..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "Tapez l' canå a-z adjonde:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "Catchî l' modêye" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "Evoyî" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "Tchater" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "Netyî" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "" + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* C' est vormint biesse di s' raloyî a l' IRC dizo root!\n Vos dvrîz fé on conte uzeu eyet l' eployî po vs elodjî.\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "OYI " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "NENI " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr "" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr "" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "Dj' a mezåjhe di /bin/sh po roter!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "" + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "" + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "" + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "" + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "" + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "" + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "" + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "" + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "" + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "" + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "" + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "" + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "" + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "" + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "" + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "" + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "" + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "" + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "" + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "" + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "" + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "" + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "" + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "" + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "" + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "" + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "Adresse IP" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "No d' uzeu" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "Lodjoe" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "" + +#: src/common/text.c:980 +msgid "The action" +msgstr "Accion" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "" + +#: src/common/text.c:987 +msgid "The text" +msgstr "Tecse" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "Messaedje" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "No do sierveu" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "Råjhon" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "Lodjoe" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "Informåcions sol sierveu" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "Messaedje" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "Conte" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "No do canå" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "Tecse" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "Uzeus" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "Pôrt" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "Hårdêye" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "Sôre DCC" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "No do fitchî" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "No do fitchî såme" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "No do tchmin" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "Eplaeçmint" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "Grandeu" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "Tchinne DCC" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "Vî no d' fitchî" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "Novea no d' fitchî" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "Riçuveu" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "No do lodjoe" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "Andore" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "Emirats Arabes Unis" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "Afganistan" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "Antigua eyet Barbuda" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "Anguila" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "Albaneye" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "Årmeneye" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "Antiyes neyerlandesses" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "Antartike" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "Årdjintene" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "Samowa amerikinne" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "Otriche" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "Ostraleye" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "Arouba" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "Azerbaydjan" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "Bosneye" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "Bårbades" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "Bangladesh" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "Beldjike" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "Bourkina Fasso" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "Bulgåreye" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "Bareyn" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "Bouroundi" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "Bermudes" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "Bruney" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "Boliveye" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "Braezi" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "Bahamas" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "Boutan" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "Iye Bouvet" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "Boswana" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "Belaruss" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "Canada" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "Iyes Cocos" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "Cintrafrike" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "Congo" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "Swisse" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "Iyes Cook" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "Tchili" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "Camrone" + +#: src/common/util.c:738 +msgid "China" +msgstr "Chine" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "Colombeye" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "Cuba" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "Cap Vert" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "Iye Christmas" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "Chipe" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "Tchekeye" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "Almagne" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "Djibouti" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "Daenmåtche" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "Dominike" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "Republike Dominikinne" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "Aldjereye" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "Ecwåteur" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "Estoneye" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "Edjipe" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "Sara Coûtchantrece" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "Eritrêye" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "Espagne" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "Etiopeye" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "Finlande" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "Fidji" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "Iyes Malouwines" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "Micronezeye" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "Iyes Faeroyé" + +#: src/common/util.c:770 +msgid "France" +msgstr "France" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "Grande Burtaegne" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "Grenåde" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "Djeyordjeye" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "Guyane francesse" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "Iyes anglo-normandes" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "Gana" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "Djibraltar" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "Groenlande" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "Gambeye" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "Guinêye" + +#: src/common/util.c:782 +msgid "Government" +msgstr "Govienmint US" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "Gwadeloupe" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "Guinêye Ecwåtoriåle" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "Grece" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "Gwatemala" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "Gwam" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "Guinêye-Bissaw" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "Guyana" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "Crowåceye" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "Hayiti" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "Hongreye" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "Indonezeye" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "Irlande" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "Israyel" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "" + +#: src/common/util.c:801 +msgid "India" +msgstr "Inde" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "" + +#: src/common/util.c:803 +msgid "International" +msgstr "Eternåcionå" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "Teritweres britanikes di l' Oceyan Indyin" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "Irak" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "Iran" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "Izlande" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "Itåleye" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "Djamayike" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "Djordaneye" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "Djapon" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "Kenia" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "Kirguiztan" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "Cambodje" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "Comores" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "Corêye (bijhe)" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "Corêye (nonne)" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "Kuweyt" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "Iyes Cayman" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "Kazaxhtan" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "Lawosse" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "Liban" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "Lîchtensteyn" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "Liberia" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "Lessoto" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "Litwaneye" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "Lussimbork" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "Letoneye" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "Libeye" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "Marok" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "Monaco" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "Moldova" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "Madagascar" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "Iyes Marshall" + +#: src/common/util.c:843 +msgid "Military" +msgstr "" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "Macedoneye" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "Birmaneye" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "Mongoleye" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "Iyes Marianes bijhreces" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "Martinike" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "Moritanreye" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "Male" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "Iye Môrice" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "Maldives" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "Mecsike" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "Malaizeye" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "Mozambike" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "Namibeye" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "Nouve Caledonreye" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "Nidjer" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "Iye Norfolk" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "Nidjeria" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "Nicaragwa" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "Bas Payis" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "Norvedje" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "Nawouro" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "Niuwé" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "Nouve Zelande" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "Perou" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "Polinezeye francesse" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "Papouwazeye Nouve Guinêye" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "Filipenes" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "Pologne" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "Porto Rico" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "Portugal" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "Palawou" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "Paragway" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "Katar" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "Reyunion" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "Roumaneye" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "Rûsseye" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "Rwanda" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "Arabeye Sawoudite" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "Iyes Solomon" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "Seycheles" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "Soudan" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "Suwede" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "Singapour" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "Sinte Helene" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "Esloveneye" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "Eslovakeye" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "Siera Leyone" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "Sint Marin" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "Senegål" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "Somaleye" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "Suriname" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "São Tomé et Prince" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "Ancyinne Union Sovietike" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "Sireye" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "Suwazilande" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "Tchad" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "Taylande" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "Tadjikistan" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "Timor Ess" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "Turcmenistan" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "Tunizeye" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "Turkeye" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "Trinité et Tobago" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "Touvalou" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "Tanzaneye" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "Oucrinne" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "Ouganda" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "Rweyåme Uni" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "Estats Unis d' Amerike" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "Ourougway" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "Ouzbekistan" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "Vatican" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "Venezwela" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "Vanouatou" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "Samowa" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "Yemen" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "Mayote" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "Yougoslaveye" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "Nonne Afrike" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "Zambeye" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "Zimbabwè" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "Tåvlea di caracteres" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "Priyî" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "" + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "" + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "Di" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "Date" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "Oister" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "Rafrister" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "" + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "Tchoezixhoz on fitchî pol rexhowe" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "No do canå" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "Trover:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "Evoyî fitchî a %s" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "" + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "" + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "Estat" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "Fitchî" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "Ambedeus" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "Rinoncî" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "Accepter" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "Rataker" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "" + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "Riçuv." + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "Evoyî" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Disfacer" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "Rinoncî" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "Schaper" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "Dji n' sai scrire dins ç' fitchî la." + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "Dji n' sai lére ci fitchî la." + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "" + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "Privé" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Canå:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privé:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Priyî:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "" + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "" + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "" + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "" + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "" + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "" + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "" + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "" + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "_Clôre" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "" + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "" + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "" + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "Nén cnoxhou" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "Vraiy no:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "Adjonde li canå" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "_Sierveu" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "A_pontiaedjes" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "_Purnea" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "_Netyî l' tecse" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "_Aidance" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "Åd_vins" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "Å _dfait" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "No" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "Måy" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "Modêye" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Discrijhaedje" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "Tchoezixhoz on tchôke-divins ou on scripe a tcherdjî" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "_Tcherdjî..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "" + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "Novele rantoele" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Voloz vs vormint oister l' rantoele «%s» eyet tos ses sierveus?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "Sicret:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "Rantoeles" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "Ralo_yî" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "Albaneye" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "Azerbaydjan" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "Belaruss" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "Bulgåreye" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "Estoneye" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "Inde" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "Malaizeye" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "Taylande" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "Vietnam" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "Djenerå" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "Fonte:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "" + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "" + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "" + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "" + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "Nén rélî" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "Al copete" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "Al valêye" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "Catchî" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "Purneas" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "Linwetes" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "" + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "" + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "" + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "Tårdjaedje po s' riraloyî otomaticmint:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "Elodjaedje" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "" + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "Sititchî l' eure dins les djournås" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "Cogne po l' eure/date dins les djournås:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "Hårdêye" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(Dismetou)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "" + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "" + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "" + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "No do lodjoe:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "Pôrt:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "Sôre:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "No d' uzeu:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "Tchoezixhoz on fitchî imådje" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "Tchoezixhoz l' fonte" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "Foyter..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "Tchoezixhoz l' coleur" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "Coleurs mIRC:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "Coleur di dvant:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "Coleur di fond:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "Evenmint" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "" + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "Eterface" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "Boesse d' intrêye" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "Djivêye des uzeus" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "Coleurs" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "Apontiaedje del rantoele" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "Transfers di fitchîs" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "Categoreyes" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "" + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "" + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "Candjî les evenmints" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "" + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "Sayî ttafwait" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "Netyî l' djivêye" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "Copyî l' tchoezeye hårdêye" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "Copyî" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "Schaper l' djivêye en on fitchî" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d ops, %d totå" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "" diff --git a/hexchat/po/zh_CN.po b/hexchat/po/zh_CN.po new file mode 100644 index 0000000..2d21713 --- /dev/null +++ b/hexchat/po/zh_CN.po @@ -0,0 +1,6271 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Aron Xu <happyaron.xu@gmail.com>, 2010 +# bababababanana1, 2014 +# Dalin <ayi880@hotmail.com>, 2003 +# Eleanor Chen <chenyueg@gmail.com>, 2010 +# highwind <highwindmx@126.com>, 2014 +# highwind <highwindmx@126.com>, 2014 +# bababababanana1, 2014 +# Michael Jay Tong <michaeljayt@gmail.com>, 2014,2016 +# Minor revision by Walte <webmaster@www.linuxfans.org>, 2003 +# Rongjun Mu <elanmu@sina.com>, 2003 +# Rongjun Mu <rongjunmu+i18n@gmail.com>, 2004 +# Sarah Smith <sarahs@redhat.com>, 2003 +# SEPTEM <septeman@gmail.com>, 2006 +# Tong Hui <tonghuix@gmail.com>, 2014,2016 +# yich <yichangshengwu@hotmail.com>, 2018 +# Zhustec <zhustec@foxmail.com>, 2018 +# Zhuyuan Liu <gtkdict@yahoo.com.cn>, 2005 +# Zong Yaotang <zong@cosix.com.au>, 2002 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-11-30 11:08+0000\n" +"Last-Translator: yich <yichangshengwu@hotmail.com>\n" +"Language-Team: Chinese (China) (http://www.transifex.com/hexchat/hexchat/language/zh_CN/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_CN\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "HexChat" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "IRC 客户端" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "HexChat 是一款易于使用的可扩展 IRC 客户端。它允许以安全的方式进入多个网络,与用户进行私密聊天,或者在频道中使用自定义界面,甚至还可以传送文件。" + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "HexChat 支持以下特性: DCC、SASL、代理、拼写检查、消息提醒、聊天记录、自定义主题和 Python/Perl 脚本。" + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "主聊天窗口" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "与其他人在线聊天" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "IM;聊天;" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "hexchat" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "打开安全模式" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "HexChat 主题管理器" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "我很忙" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "已离开" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "关" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "开" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "{未设置}" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "网络" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<无>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "频道" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "等待中" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "活跃" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "失败" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "完成" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "连接" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "已中止" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "无法获取 %s\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "错误" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s 要给您发送 “%s”,要接受吗?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "没有活跃的 DCC\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "打开对话窗口(_O)" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "发送文件(_S)" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "用户信息(_U)(WHOIS)" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "添加到好友列表(_A)" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "忽略(_I)" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "管理员动作(_P)" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "赋予管理员权限" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "取消管理员权限" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "赋予发言权" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "取消发言权" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "踢人/屏蔽" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "踢人" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "屏蔽" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "踢出并屏蔽" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "离开频道" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "进入频道..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "输入要进入的频道:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "服务器列表" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "Ping 服务器" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "隐藏版本信息" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "赋予管理员权限" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "取消管理员权限" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "道别" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "输入踢出 %s 的原因:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "发送文件" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "对话" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "发送" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "聊天" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "清除" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "你没有 %s 的写入权限。此会话中的信息不可保存。" + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* 不要以 root 身份执行 IRC!您应该\n 使用普通用户帐号来登录。\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "是 " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "否 " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "您正受到来自 %s 的洗屏攻击,忽略 %s\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "您正受到来自 %s 的 MSG 洪水攻击,设置图形化自动对话框为关闭。\n" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "解析到 %s" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "找不到" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "解析到:" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "查找 %s..." + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s 在线\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s 离线\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "没有进入任何频道。请尝试输入 /join #<channel>\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "未连接任何服务器。请尝试输入 /server <host> [<port>]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "服务器 %s 已存在于网络 %s 中。\n" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "已将服务器 %s 添加到网络 %s 中。\n" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "已标记为离开:%s\n" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "已取消离开标记。\n" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "使用 /bin/sh 才能执行本程序!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "可用命令:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "用户自定义命令:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "可用插件命令:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "请输入 /HELP <命令名> 或者 /HELP -l 以获取更多信息" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "忽略未知参数 “%s”。" + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "此服务器不支持静默。" + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "找不到该插件。\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "无法卸载该插件。\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <名称> <动作>,在用户列表下添加一个按钮" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "ADDSERVER <新网络> <新服务器/6667>,向网络列表添加新网络新服务器信息" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <命令>,向您所在的所有频道发送命令" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "ALLCHANL <命令>,向您所在服务器的所有频道发送命令。" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <命令>,向您所在的所有服务器发送命令" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "AWAY [<离开原因>],设置为离开状态(使用 /BACK 解除)" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "BACK,取消离开状态" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <掩码> [<拦截类型>],禁止所有符合 <掩码> 的用户进入当前的频道。如果他们已在该频道,这个命令不会将其踢出(需要具有频道管理员身份)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <变量名> [<值>]" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "CHARSET [<编码字符集>],获取及设置当前连接所使用的编码字符集" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "CLEAR [ALL|HISTORY|[-]<amount>],清空当前的窗口文本或命令历史。" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "CLOSE【关闭】 [-m],关闭当前选项卡,关闭当前的唯一活动窗口,或者是关闭所有查询的 -m 选项。" + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <国家地区代码|通配符>,查看国家代码对应的国家名,比如 :cn = 中国" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <昵称> <要发送的信息>,给昵称为 <昵称> 者发送 CTCP 信息,常用是 VERSION 和 USERINFO" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "CYCLE [<频道>],离开当前频道并立即重新进入" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <昵称> - 接收昵称为 <昵称> 者使用 DCC 发送给\n 您的文件\nDCC SEND [-maxcps=#] <昵称> [文件] - 使用 DCC 发送文件给 <昵称>\nDCC PSEND [-maxcps=#] <昵称> [文件] - 使用被动模式 DCC 发送文件给 <昵称>\nDCC LIST - 显示 DCC 列表\nDCC CHAT <昵称> - 与 <昵称> 进行 DCC 直连聊天\nDCC PCHAT <昵称> - 使用 DCC 被动模式与 <昵称> 聊天\nDCC CLOSE <类型> <昵称> <文件> 例如:\n /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <昵称>,取消当前频道内昵称为 <昵称> 的副管理员身份(需要具有频道管理员身份)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <名称>,删除用户列表下的那个按钮" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <昵称>,取消昵称为 <昵称> 者在当前频道的管理员身份(需要具有频道管理员身份)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <昵称>,取消昵称为 <昵称> 者在当前频道的发言权(需要具有频道管理员身份)" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON,断开服务器连接" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "DNS <昵称|主机|IP>,解析用户昵称、 IP 地址或者主机名" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <文本>,在本地显示文本" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <命令>,执行命令。如果使用了 -o 选项则输出到当前频道,否则输出到当前文本框" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT,向进程发送 SIGCONT 信号" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9],杀死当前会话中的某个执行进程。如果使用 -9 选项,则用 SIGKILL 杀死该进程" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP,向进程发送 SIGSTOP 信号" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE,把数据发送给进程的标准输入" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "EXPORTCONF, 导出 HexChat 设置" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ,清空当前服务器的发送队列" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <主机> [<端口号>],经由某主机来代理,默认端口为 23" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <昵称> [密码],消灭此幽灵昵称" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <昵称>,给昵称为 <昵称> 者以副管理员的身份(需要具有频道管理员身份)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <密码>,向昵称服务器验证你的身份" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <掩码> <类型..> <选项..>\n 掩码 - 要忽略的主机掩码,比如 *!*@*.aol.com\n 类型 - 要忽略数据的类型,应以下选项之一或全部:\n PRIV,CHAN,NOTI,CTCP,INVI,ALL\n 选项 - 忽略选项:NOSAVE,QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <昵称> [<频道>],邀请昵称为 <昵称> 者进入频道,默认为当前的频道(需要具有频道管理员身份)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <频道>,进入频道" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "KICK <昵称> [原因],将该昵称从当前频道中踢出 (需要具有频道管理员身份)" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "KICKBAN <昵称> [原因],把 <昵称> 踢出当前频道,并禁止再次进入(需要具有频道管理员身份)" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK,强制进行延迟检查" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "LASTLOG [-h] [-m] [-r] [--] <字符串>,在缓冲区中搜索该字符串\n 使用 -h 选项高亮显示搜索到的字符串(多个)\n 使用 -m 选项严格匹配大小写\n 使用 -r 选项将字符串作为正则表达式搜索\n 使用 -- (双破折号) 标记选项参数结束,例如要搜索的字符串是 '-r'" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <文件>,载入插件或脚本" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP,撤销当前频道中所有副管理员(需要具有频道管理员身份)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP,撤销当前频道中所有管理员(需要具有频道管理员身份)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <动作>,向当前频道中发送一个动作(动作使用英语的第 3 人称陈述,例如 /me 跳一下)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK,踢出当前频道中除您自己以外的所有用户(需要具有频道管理员身份)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP,给当前频道中所有用户赋予管理员的身份(需要具有频道管理员身份)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "MSG <昵称> <消息>,发送私信, 昵称为 \".\" 发送给上一个昵称的用户,或者以 \"=\" 开头发送 dcc 聊天" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "NAMES [频道],列出该频道的所有昵称" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <昵称> <消息>,给昵称为 <nick> 者发送一则 CTCP 通知" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <主机名> [<端口号>]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <昵称>,设置您的昵称" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "NOTICE <昵称/频道> <消息>,发送一条通知" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [-n 网络1[,网络2,...]] [<昵称>],列出您的通知列表,或在列表中添加某人" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <昵称>,委任 <昵称> 为频道管理员(需要具有频道管理员身份)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<频道>] [<离开原因>],离开频道,默认为当前的频道" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <昵称 | 频道>,向某位用户或频道发送 CTCP PING 消息" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "QUERY [-nofocus] <昵称> [消息],打开新私聊窗口,选择性地发送信息" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "QUIET <掩码> [<静默类型>],在服务器支持的情况下将当前服务器中满足掩码的每个人设为静默状态。" + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<退出原因>],从与当前服务器断开连接" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <文本>,向服务器发送原始格式的文本" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<主机>] [<端口号>] [<密码>],可用 /RECONNECT 重新连接当前的服务器或用 /RECONNECT ALL 重新连接所有服务器" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<主机>] [<端口号>] [<密码>],可用 /RECONNECT 重新连接当前服务器或用 /RECONNECT ALL 重新连接所有服务器" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "RECV <text>,向 HexChat 发送原始数据,就好像从 IRC 服务器上接收到的一样" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "RELOAD <名称>,重新载入插件/脚本" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <文本>,向当前窗口中的对象发送文本" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <昵称> [<文件>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <主机> <端口号> <频道>,连接服务器并进入某频道" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <主机> <端口号> <频道>,连接服务器并进入某频道" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "SERVER [-ssl] <主机> [<端口号>] [<密码>],连接到服务器。普通连接的默认端口是6667,SSL连接的默认端口是6697。" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <主机> [<端口号>] [<密码>],连接服务器。默认端口为 6667" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-off|-on] [-quiet] <变量名> [<值>]" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "SETCURSOR [-|+]<位置>,重新定位输入框中光标的位置。" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "SETTAB <新名称>,改变选项卡的名字,tab_trunc 变量的限制仍然有效" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "SETTEXT <新文本>,替换输入框中的文本" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<频道主题>],设置频道主题,如果未指定内容则显示当前主题" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "\nTRAY -f <时间> <文件1> [<文件2>] 在托盘中使用两个图标进行闪烁。\nTRAY -f <文件名> 设置托盘为固定图标。\nTRAY -i <数字> 使用内部图标闪烁托盘。\nTRAY -t <文本> 设置托盘工具提示。\nTRAY -b <标题> <文本> 设置托盘气泡通知。" + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <掩码> [<掩码>...],解禁指定的掩码。" + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <掩码> [QUIET]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <名称>,卸载插件或脚本" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "UNQUIET <掩码> [<掩码>...],在服务器支持测情况下解除指定掩码的静默状态。" + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>,在浏览器中打开 URL" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "USELECT [-a] [-s] <昵称1> <昵称2>...,在频道用户列表中以高亮度标示昵称" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <昵称>,给予昵称为 <昵称> 者发言权(需要具有频道管理员身份)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <消息>,发送信息到所有的频道" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <消息>,给当前频道中所有管理员发送消息" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "用户命令:%s\n" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "用法:%s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\n没有关于该命令的帮助信息。\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "此命令不存在。\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "用户命令的参数有误。\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "用户命令产生太多递归,中止执行。" + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "未知命令 %s。请尝试键入 /help\n" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "无 hexchat_plugin_init 符号,这确实是 HexChat 的插件吗?" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "*\t服务器识别需要从 %s 作为 %s" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "*\t开始 identd 服务器错误: %s" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "IDENTD <端口> <用户名>" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "定时器 %d 已删除。\n" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "找不到此参考数字。\n" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "未安装定时器。\n" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "重复命令的秒数\n" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "%5d %8.1f %7d %s\n" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "您确信该服务器的此端口支持 SSL?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "无法解析主机名 %s\n请检查您的 IP 设置!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "代理传送失败。\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "跳转至 %s 的下一个服务器...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "警告: 字符集 “%s” 未知。将不对网络 %s 应用字符转换。" + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "%C18*%O$t%C18$1%O 已增加到通知列表。" + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "%C22*%O$t%C22$1%O: %C18$2%O 在 %C24$4%O 由 %C26$3%O" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "%C22*%O$t 不能加入 %C22$1 %O(%C20您已被拦截%O)。" + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "%C29*%O$t 已知能力: %C29$2%O" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "%C29*%O$t能力移除: %C29$2%O" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "%C23*%O$t 支持能力: %C29$2%O" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "%C23*%O$t 请求能力:%C29$1%O" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "%C24*%O$t%C28$1%O 改名为 %C18$2%O" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O 屏蔽了 %C18$2%O" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "%C22*%O$t 频道 %C22$1%O 建立于 %C24$2%O" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O 取消了 %C18$2%O 的频道副管理员权限" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O 取消了 %C18$2%O 的频道管理员权限" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "%C22*%O$t%C26$1%O 取消了 %C18$2%O 的发言权" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%C 给 %C18$2%O 设置了免封权" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O 委任 %C18$2%O 为频道副管理员" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%C 设置了对 %C18$2%O 的免邀请" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%U频道 用户 主题" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "%C22*%O$t%C26$1%O 在上 %C22$4%O 设置了 %C24$2$3%O 模式" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "%C22*%O$t 频道 %C22$1%O 模式: %C24$2" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O 委任 %C18$2%O 为频道管理员" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O 设置了对 %C18$2%O 的静默" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O 取消了 %C18$2%O 的免封权" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O 解除了对 %C18$2%O 的免邀请" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "%C22*%O$t%C26$1%O 取消了频道密码" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "%C22*%O$t%C26$1%O 取消了用户限制" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O 设置频道密码为 %C24$2%O" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "%C22*%O$t%C26$1%O 设置频道限制为 %C24$2%O" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O 解除了对 %C18$2%O 的屏蔽" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "%C22*%O$t%C26$1%O 取消了设置在 %C18$2%O 上的静默" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "%C22*%O$t 频道 %C22$1%O url: %C24$2" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "%C22*%O$t%C26$1%O 给了 %C18$2%O 发言权" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "%C23*%O$t 已连接。正在登录..." + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "%C23*%O$t 正在连接到 %C29$1%C (%C23$2:$3%O)" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "%C20*%O$t 连接失败 (%C20$1%O)" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "%C24*%O$t 收到了来自 %C18$2%O 的 CTCP %C24$1%C" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "%C24*%C$t 收到了来自 %C18$2%C (到 %C22$3%C)%O 的 CTCP %C24$1%C" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "%C24*%O$t 收到来自 %C18$2%O 的 CTCP 声音 %C24$1%C" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "%C24*%O$t 收到来自 %C18$2%O (到 %C22$3%O) 的 CTCP 声音 %C24$1%C" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "%C23*%O$t 中止了与 %C18$1%O 的 DCC 直连聊天。" + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "%C24*%O$t 已与 %C18$1%C %C30[%C24$2%C30]%O 建立了 DCC 直连聊天连接" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "%C20*%O$t 失去了与 %C18$1%O 的 DCC 直连聊天连接 (%C20$4%O)" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "%C24*%O$t 收到来自 %C18$1%O 的 DCC 直连聊天请求" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "%C24*%O$t 向 %C18$1%O 发送 DCC 直连聊天请求" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "%C24*%O$t 已发送 DCC 直连聊天请求给 %C18$1%O" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "%C20*%O$t 尝试到 %C18$2%O 的 DCC $1 连接失败 (%C20$3%O)" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "%C23*%O$t 从 %C18$2%O 接收到 '%C23$1%C' " + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "%C20*%O$t 收到来自 %C18$1%O 的有错的 DCC 请求。$a010%C23*%O$t 数据包内容:%C23$2%O" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "%C24*%O$t 正在发送 '%C24$1%O' 到 %C18$2%O" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "%C23*%O$t 无此 DCC 请求。" + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "%C23*%O$t 到 %C18$1%O 的 DCC RECV 连接 '%C23$2%O' 已中断。" + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "%C24*%O$t 来自 %C18$3%O DCC RECV 连接 '%C23$1%O' 完成 %C30[%C24$4%O cps%C30]%O" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$t 建立与 %C18$1 的 DCC RECV 连接 %C30[%O%C24$2%C30]%O" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "%C20*%O$t 来自于 %C18$3%O 的 DCC RECV 连接 '%C23$1%O' 失败 (%C20$4%O)" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "%C20*%O$t DCC RECV:无法打开 %C23$1%C 进行写入(%C20$2%O)。 " + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "%C23*%O$t 文件 '%C24$1%C' 已存在,将把文件另存为 '%C23$2%O'。" + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "%C24*%O$t%C18$1%C 已请求续传来自 %C24$3%O 的文件 '%C23$2%C' 。" + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "%C23*%O$t 到 %C18$1%O 的 DCC SEND 连接 '%C23$2%C' 已中断。" + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "%C24*%O$t 到 %C18$2%C 的 DCC SEND 连接 '%C23$1%C' 完成 %C30[%C24$3%C cps%C30]%O" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "%C24*%O$t 已建立到 %C18$1 %C30[%O%C24$2%C30]%O 的 DCC SEND 连接" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "%C20*%O 到 %C18$2%C 的 $tDCC SEND 连接 '%C23$1%C' 失败 (%C20$3%O)" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "%C24*%O$t%C18$1%C 已发送 '%C23$2%C' (%C24$3%O 字节)" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "%C20*%O$t 到 %C18$3%O 的 DCC $1 '%C23$2%C' 挂起,已中断。" + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "%C20*%O$t 到 %C18$3%O 的 DCC $1 '%C23$2%C' 超时,已中断。" + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "%C24*%O$t%C18$1%O 已从通知列表中删除。" + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "%C20*%O$t 已断开连接 (%C20$1%O)" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "%C24*%O$t 找到您的 IP: %C30[%C24$1%C30]%O" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "%O%C18$1%O 已添加到忽略列表。" + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "%O 对 %C18$1%O 的忽略已变更。" + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "%O%C18$1%O 已从忽略列表中删除。" + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "%O 您的忽略列表是空的。" + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "%C20*%O$t 无法进入 %C22$1%C(%C20该频道只能邀请进入%O)。" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "%C24*%O$t 你已被 %C18$2%O 邀请到 %C22$1%O (%C29$3%O)" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "%C23*$t$1 ($3%C23) 已进入" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "%C20*%O$t 不能加入 %C22$1%C (%C20需要密码%O)" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "%C22*%O$t%C26$1%C 已将 %C18$2%C 从 %C22$3%C 踢出 (%C24$4%O)" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "%C19*%O$t%C19 您被 %C26$1%C 从服务器上踢出(%C20$2%O)" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "%C29*%O$t%C29MOTD 被跳过。%O" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "%C23*%O$t%C28$1%C 已被占用。正在使用 %C18$2%O 重试..." + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "%C23*%O$t%C28$1%C 出错。正在使用 %C18$2%O 重试..." + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "%C20*%O$t 该昵称不正确或者已被占用。请用 /NICK 尝试使用另一个昵称。" + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "%C20*%O$t没有此 DCC。" + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "%C23*%O$t 当前没有任何进程在执行" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "%C23*%O$t 通知: %C18$1%C 已离开 (%C24$2%O)" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "%C23*%O$t 通知: %C18$1%C 已上线" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$t 通知列表为空。" + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "通知列表中有 %C23*%O$t%C23$1%O 位用户。" + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "%C23*%O$t 通知:%C18$1%C 下线了(%C29$3%O)。" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "%C23*%O$t 通知: %C18$1%C 上线了 (%C29$3%O)" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "%C24*$t$1 ($2%C24) 已离开" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "%C24*$t$1 ($2%C24) 已离开 ($4)" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "%C24*%O$t 从 %C18$1%C 处得到 Ping 回应时间:%C24$2%O 秒" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "%C20*%O$t 在 %C24$1%O 秒内没有收到 Ping 回应,正在断开连接。" + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "%C24*%O$tA 已有一进程正在运行" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "%C24*$t$1 已退出($2)" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "%C24*%O$t%C26$1%C 设置模式 %C30[%C24$2%C30]%O" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "%O-%C29$1/Wallops%O-$t$2" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "%C24*%O$t 查询 %C18$1%O 的 IP 地址..." + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "%C23*%O$t 通过 SASL 以 %C18$1%O 认证 (%C24$2%O)" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "%C29*%O$t 已连接。" + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "%C29*%O$t 正在查询 %C29$1%O" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "%C23*%O$t 前次连接尝试停止(%C24$1%O)" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "%C22*%O$t %C22$1%C的主题是:$2%O" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "%C22*%O$t%C26$1%C 已将主题更改为:$2%O" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "%C22*%O$t %C26$2%C 已将主题设置为 %C22$1%C (%C24$3%O)" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C20*%O$t 未知主机。也许您把它拼写错了?" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "%C20*%O$t 无法进入 %C22$1%C (%C20达到了用户限制%O)" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "%C22*%O$t 用户在 %C22$1%C: %C24$2%O" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%C 已离开 %C30(%C23$2%O%C30)%O" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "%C23*%O$t%C28[%C18$1%C28] %O WHOIS 列表结束。" + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O 发呆 %C23$2%O" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O 发呆 %C23$2%O,登录时间:%C23$3%O" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "%C23*%O$t%C28[%C18$1%C28]%O 真实主机: %C23$2%O,真实 IP: %C30[%C23$3%C30]%O" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "%C19*%O$t 正在 %C22$2%O 频道里聊天" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "%C19*%O$t 被 %C26$3%O 从 %C22$2%C 中踢出(%C20$4%O)" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "%C19*%O$t 您已离开频道 %C22$3%O" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "%C19*%O$t 已离开频道 %C22$3%C (%C24$4%O)" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "%C20*%O$t 已邀请 %C18$1%O 到 %C22$2%O 频道 (%C24$3%O)" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "%C20*%O$t 您已改名为 %C18$2%O" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "从以下位置载入聊天记录" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** 聊天记录于 %s 结束记录\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** 聊天记录于 %s 开始记录\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "* 无法以可写入方式打开日志(log)文件。\n请检查 %s 的权限" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "左侧信息" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "右侧信息" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "IP 地址" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "用户名" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "进入用户的昵称" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "进入的频道" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "此人的主机名" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "这个人的帐号" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "昵称" + +#: src/common/text.c:980 +msgid "The action" +msgstr "动作" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "模式字符" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "验证文本" + +#: src/common/text.c:987 +msgid "The text" +msgstr "文本" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "信息" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "服务器名" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "已知能力" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "已移除的能力" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "服务器能力" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "请求能力" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "原昵称" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "新昵称" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "更改主题的用户" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "主题" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "能踢人的用户" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "被踢者" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "频道" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "原因" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "离开的用户" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "时间" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "建立者" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "昵称" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "原因" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "主机" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "来自于" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "时间格式为 x.x (见下)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "要进入的频道" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "声音" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "此人的昵称" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "CTCP 事件" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "设置密码的用户" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "密码" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "设置限制的用户" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "限制" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "使用了 op 命令的用户" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "被授予管理员身份的用户" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "被授予副管理员身份的用户" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "使用 halfop 命令的用户" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "使用 voice 命令的用户" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "被赋予发言权的用户" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "使用 ban 命令的用户" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "ban 掩码" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "使用了静默选项的用户昵称" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "quiet 掩码" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "取消密码的用户" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "取消用户限制的用户" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "使用 deop 命令的用户" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "被取消管理员身份的用户" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "使用 dehalfop 命令的用户" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "被取消副管理员身份的用户" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "使用 devoice 命令的用户" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "被取消发言权的用户" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "使用 unban 命令的用户" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "使用了 unquiet 选项的用户昵称" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "使用 exempt 命令的用户" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "exempt 掩码" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "取消 exempt 的用户" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "使用 invite 命令的用户" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "invite 掩码" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "取消 invite 的用户" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "设置模式的用户" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "模式符号(+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "模式字符" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "被设置的频道" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "全名" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "频道成员/“是 IRC 管理员”" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "服务器信息" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "发呆时间" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "登录时间" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "离开原因" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "信息" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "帐户" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "真实 user@host" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "真实 IP" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "频道名" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "机制" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "原始数字/标识符" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "文本" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "邀请您的用户" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "用户" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "昵称已被使用" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "已尝试过的昵称" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "端口" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "模式字符串" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "DCC 类型" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "文件名" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "目标文件名" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "路径名" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "位置" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "大小" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "DCC 字符串" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "离开原因" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "通知条目数" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "原文件名" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "新文件名" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "接收者" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "主机掩码" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "主机名" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "包" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "秒" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "被邀请的用户" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "屏蔽掩码" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "设置屏蔽的用户" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "屏蔽时间" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "无法读取声音文件:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "远程主机已关闭套接字" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "连接被拒绝" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "没有到主机的路由" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "连接超时" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "无法分配该地址" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "连接被重置" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "阿森松岛" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "安道尔" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "阿拉伯联合酋长国" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "航空相关领域" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "阿富汗" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "安提瓜和巴布达" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "安圭拉岛" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "阿尔巴尼亚" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "亚美尼亚" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "荷属安的列斯群岛" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "安哥拉" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "南极洲" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "阿根廷" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "反向 DNS" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "美属萨摩亚" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "亚太区" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "奥地利" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "北大西洋公约组织" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "澳大利亚" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "阿鲁巴" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "奥兰群岛" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "阿塞拜疆" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "波斯尼亚和黑塞哥维那" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "巴巴多斯" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "孟加拉国" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "比利时" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "布基纳法索" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "保加利亚" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "巴林" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "布隆迪" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "商业" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "贝宁" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "百慕大群岛" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "文莱" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "玻利维亚" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "巴西" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "巴哈马群岛" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "不丹" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "布韦岛" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "博茨瓦纳" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "白俄罗斯" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "伯利兹" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "加拿大" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "加泰罗尼亚" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "科科斯群岛" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "刚果民主共和国" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "中非共和国" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "刚果" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "瑞士" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "科特迪瓦共和国" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "库克群岛" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "智利" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "喀麦隆" + +#: src/common/util.c:738 +msgid "China" +msgstr "中国" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "哥伦比亚" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Internic 商业组织" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "联合体" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "哥斯达黎加" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "塞尔维亚和黑山" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "古巴" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "佛得角" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "圣诞岛" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "塞浦路斯" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "捷克共和国" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "东德" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "德国" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "吉布提" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "丹麦" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "多米尼克" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "多米尼加共和国" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "阿尔及利亚" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "厄瓜多尔" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "教育机构" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "爱沙尼亚" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "埃及" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "西撒哈拉" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "厄立特里亚" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "西班牙" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "埃塞俄比亚" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "欧盟" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "芬兰" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "斐济" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "福克兰群岛/马尔维纳斯群岛" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "密克罗尼西亚" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "法罗群岛" + +#: src/common/util.c:770 +msgid "France" +msgstr "法国" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "加蓬" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "大不列颠" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "格林纳达" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "格鲁吉亚" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "法属圭亚那" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "不列颠群岛" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "加纳" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "直布罗陀" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "格陵兰" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "冈比亚" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "几内亚" + +#: src/common/util.c:782 +msgid "Government" +msgstr "政府部门" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "法属瓜德罗普岛" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "赤道几内亚" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "希腊" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "南乔治亚及南桑威奇群岛" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "危地马拉" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "关岛" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "几内亚比绍" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "圭亚那" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "香港" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "赫德岛和麦克唐纳群岛" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "洪都拉斯" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "克罗地亚" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "海地" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "匈牙利" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "印度尼西亚" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "爱尔兰" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "以色列" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "马恩岛" + +#: src/common/util.c:801 +msgid "India" +msgstr "印度" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "信息机构" + +#: src/common/util.c:803 +msgid "International" +msgstr "国际组织" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "英属印度洋地区" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "伊拉克" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "伊朗" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "冰岛" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "意大利" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "泽西岛" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "牙买加" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "约旦" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "公司职位" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "日本" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "肯尼亚" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "吉尔吉斯斯坦" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "柬埔寨" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "基里巴斯" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "科摩罗" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "圣基茨和尼维斯" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "朝鲜" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "韩国" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "科威特" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "开曼群岛" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "哈萨克斯坦" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "老挝" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "黎巴嫩" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "圣卢西亚" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "列支敦士登" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "斯里兰卡" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "利比里亚" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "莱索托" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "立陶宛" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "卢森堡" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "拉脱维亚" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "利比亚" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "摩洛哥" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "摩纳哥" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "摩尔多瓦" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "黑山共和国" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "美国医疗组织" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "马达加斯加" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "马绍尔群岛" + +#: src/common/util.c:843 +msgid "Military" +msgstr "军事机构" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "马其顿" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "马里" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "缅甸" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "蒙古" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "澳门" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "移动设备" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "北马里亚那群岛" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "马提尼克岛" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "毛里塔尼亚" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "蒙特塞拉特" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "马尔他" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "毛里求斯" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "博物馆" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "马尔代夫" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "马拉维" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "墨西哥" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "马来西亚" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "莫桑比克" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "纳米比亚" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "个体名称" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "新喀里多尼亚岛" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "尼日尔" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Internic 网络" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "诺福克岛" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "尼日利亚" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "尼加拉瓜" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "荷兰" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "挪威" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "尼泊尔" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "瑙鲁" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "纽埃岛" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "新西兰" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "阿曼" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "Internic 非营利性组织" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "巴拿马" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "秘鲁" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "法属波利尼西亚" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "巴布亚新几内亚" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "菲律宾" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "巴基斯坦" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "波兰" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "圣皮埃尔和密克隆" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "皮特凯恩群岛" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "波多黎各" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "专业人士" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "巴勒斯坦地区" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "葡萄牙" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "帕劳" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "巴拉圭" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "卡塔尔" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "留尼汪岛" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "罗马尼亚" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "教育用 ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "塞尔维亚共和国" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "俄罗斯联邦" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "卢旺达" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "沙特阿拉伯" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "所罗门群岛" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "塞舌尔群岛" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "苏丹" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "瑞典" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "新加坡" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "圣赫勒拿岛" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "斯洛文尼亚" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "斯瓦尔巴群岛和扬马延岛" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "斯洛伐克共和国" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "塞拉利昂" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "圣马力诺" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "塞内加尔" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "索马里" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "苏里南" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "南苏丹" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "圣多美和普林西比" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "前苏联" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "萨尔瓦多" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "叙利亚" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "斯威士兰" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "特克斯和凯科斯群岛" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "乍得" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "互联网通信服务" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "法属南半球领地" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "多哥" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "泰国" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "塔吉克斯坦" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "托克劳群岛" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "东帝汶" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "土库曼斯坦" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "突尼斯" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "汤加" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "土耳其" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "旅游和旅游业" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "特立尼达和多巴哥" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "图瓦卢" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "台湾" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "坦桑尼亚" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "乌克兰" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "乌干达" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "英国" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "美国" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "乌拉圭" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "乌兹别克斯坦" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "梵蒂冈" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "圣文森特和格林纳丁斯" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "委内瑞拉" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "英属维尔京群岛" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "美属维尔京群岛" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "越南" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "瓦努阿图" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "瓦利斯和富图纳群岛" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "萨摩亚群岛" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "成人娱乐" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "也门" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "马约特岛" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "南斯拉夫" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "南非" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "赞比亚" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "津巴布韦" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "无法连接到会话 bus" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "完成 NameHasOwner 失败" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "完成命令失败" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "远程访问" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "用 DBUS 远程访问的插件" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "无法连接到会话 bus:%s\n" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "获取 %s 失败:%s\n" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "字符集表" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "屏蔽" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "免封" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "免封" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "邀请" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "邀请" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "静默" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "静默" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "复制掩码" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "%s 在 %s 由 %s" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "复制项" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "未连接。" + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "您必须选择一项来屏蔽。" + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "您确定要删除 %s 中的全部屏蔽吗?" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "类型" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "掩码" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "来自" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "日期" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "您只能在一个频道的标签页下打开屏蔽列表窗口。" + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "屏蔽列表 (%s) - %s" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "删除" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "裁剪" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "刷新" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "显示在 %3$d/%4$d 个频道中的 %1$d/%2$d 用户。" + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "选择输出文件名" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "进入频道(_J)" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "复制频道名称(_C)" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "复制频道主题(_T)" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "频道列表 (%s) - %s" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "搜索(_S)" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "下载列表(_D)" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "保存列表(_L)..." + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "只显示:" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "频道中有" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "到" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "位用户。" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "按照:" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "频道名称" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "搜索类型:" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "简单搜索" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "模式匹配 (通配符)" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "正则表达式" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "查找:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "给 %s 发送文件" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "该文件不可续传。" + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "不能访问文件:%s\n%s。\n无法续传。" + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "下载目录中的文件比所提供的文件大,无法续传。" + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "不能续传来自两个人的同一文件" + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "上传和下载 - %s" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "状态" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "文件" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "剩余时间" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "两者" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "上传" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "下载" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "详细信息" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "文件:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "地址:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "中止" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "接受" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "续传" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "打开目录..." + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "DCC 聊天列表 - %s" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "已接收" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "已发送" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "开始时间" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "添加" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "删除" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "取消" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "保存" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "不要自动连接到服务器" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "使用不同的配置目录" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "不自动载入任何插件" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "显示自动载入插件/脚本的目录" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "显示用户配置目录" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "打开一个 irc://server:port/channel?key URL" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "执行命令:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "在已有的 HexChat 中打开 URL 或执行命令" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "启动后最小化。最小化级别 0=正常 1=仅图标 2=托盘" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "级别" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "显示版本信息" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "打开字体失败:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "搜索缓冲区当前为空。\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d 字节" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "网络发送队列:%d 字节" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "“Run Command” 会执行 Data 1 中的数据,就如同您是在输入按键序列后出现的输入框中键入这些数据一样。这样,它就会包含文本 (这些文本会被发送给频道或某人)、命令或用户命令。执行时,Data 1 中所有“\\n”字符 被用来分隔命令,因此您可以执行不止一个命令。如果您想在执行的文本中包含字符“\\”,您应该输入“\\\\”" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "“Change Page”命令在您笔记本中的标签页间切换。将 Data 1 设置成您要切换的标签页。如果 Data 2 被设置成任意值,切换标签页的数将相对于当前位置。Data 1 设置为自动将自动切换到最近最重要的活动中(优先处理最近请求,其次显示高亮频道,再次显示有对话的频道,最后显示其他 data 的频道)" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "“Insert in Buffer” 命令把数据 1 中的内容插入到接收按键序列的当前光标处" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "“Scroll Page” 命令在文本窗口组件中上下滚动一页或一行。设置 Data 1 为 Top、Bottom、Up、DOWN、+1 或 -1。" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "“Set Buffer” 命令把接收到按键序列后的输入区域设置为数据 1 中的内容" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "“Last Command” 命令把输入区域设为前一个命令 - 和在终端中按向上箭头效果相同" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "“Next Command” 命令把输入区域设为下一个命令 - 和在终端中按向下箭头效果相同" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "该命令改变输入区域中的文本,补全未输入完毕的用户昵称或命令。如果数据 1 被设置,那么,按两次 Tab 键会选择上一次使用的昵称,而非下一个昵称" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "该命令在昵称列表中上下移动。如果数据 1 中设置了任何值,光标会上移,否则下移" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "该命令对照替换列表来检查输入的最后一个词,若找到符合的条目就替换它" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "该命令把最上面的标签页向左移一格" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "该命令把最上面的标签页向右移一格" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "该命令把当前标签页向左移一格" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "该命令把当前标签页向右移一格" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "把输入存入历史,但不发送到服务器" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "加载键绑定配置时出错" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "选择一行查看对应动作的信息。" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "键盘快捷键 - %s" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "无法写入到该文件。" + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "无法读取该文件。" + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "该掩码已存在。" + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "私聊" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "通知" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "取消忽略" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "您确定要删除 %s 中的全部忽略项吗?" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "输入要忽略的掩码:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "忽略列表 - %s" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "忽略统计:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "频道:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "私聊:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "通知:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "邀请:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "添加..." + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "频道名称过短,请重新尝试。" + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "连接完成 - %s" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "成功建立到 %s 的连接。" + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "在服务器列表窗口,没有添加自动进入的频道(聊天室)。" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "您接下来要进行怎样的操作?" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "我稍后自行进入频道。(_N)" + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "进入以下频道(_J):" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "如果您知道想要进入的频道的名称,请在此输入。" + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "打开频道列表(_P)。" + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "取回频道列表可能需要一两分钟。" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "每次连接后都显示该对话框。(_A)" + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "与以下用户对话" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "%s 的主题:%s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "没有设置主题" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "这台服务器仍然有 %d 个与它相关的频道或对话。要全部关闭吗?" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "要退出 HexChat 吗?" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "下次不再询问。" + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "您已连接到 %i 个 IRC 网络。" + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "您确定要退出吗?" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "某些文件传输仍在进行。" + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "最小化至系统托盘(_M)" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "插入属性或颜色代码" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>粗体</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>下划线</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "<i>斜体</i>" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "正常" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "颜色 0-7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "颜色 8-15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "设置(_S)" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "聊天记录写入磁盘(_L)" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "重新载入最近日志(_R)" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "提取色彩(_C)" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "隐藏进入/离开信息(_H)" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "额外警报(_E)" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "有信息时响铃提示(_M)" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "闪烁托盘图标(_I)" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "闪烁任务栏图标(_B)" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "分离(_D)" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "关闭(_C)" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "用户限制必须是数字!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "筛选颜色" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "无室外信息" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "主题保护" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "仅邀请" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "监管状态" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "屏蔽列表" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "密码" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "用户限制" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "输入新昵称:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "搜索无结果。" + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "已搜索到尾部,未找到符合条件的结果。" + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "高亮所有(_H)" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "已高亮所有结果,并在当前匹配项下加上下划线。" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "匹配大小写(_C)" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "进行大小写敏感的搜索。" + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "正则表达式(_R)" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "将搜索字符串作为正则表达式使用。" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "未知主机" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "未知账户" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "未知" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "真实姓名:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "用户:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "账户:" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "国家:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "服务器:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "%u 分钟之前" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "最后发言:" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "离开信息:" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "已选择 %d 个昵称。" + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "菜单栏当前已隐藏。您可以通过按下 Control+F9 组合键或以鼠标右键点选主要文本区域的空白部分重新显示它。" + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "在浏览器中打开链接" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "复制选取的链接" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "进入频道" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "离开频道" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "离开频道,而后立即进入" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "自动加入(_A)" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "自动加入频道" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "自动连接(_A)" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "用户菜单 - %s" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "编辑这个菜单" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "标记线已禁用。" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "标记线永不设置。" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "标记线手动重设。" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "因超越回滚限制重设标记线。" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "使用CLEAR命令重设标记线。" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "标记线状态未知。" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "获取频道列表" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "在无插件支持的选项下构建。" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "用户命令 - 特殊代码:\n\n%c = 当前频道\n%e = 当前网络名称\n%m = 机器信息\n%n = 你的昵称\n%t = 时间/日期\n%v = HexChat 版本\n%2 = 第 2 个词\n%3 = 第 3 个词\n&2 = 从第 2 个词到行末\n&3 = 从第 3 个词到行末\n\n如:\n/cmd john hello\n\n%2 是“john”\n&2 是“john hello”。" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "用户列表按钮 - 特殊代码:\n\n%a = 所有选取的用户\n%c = 当前频道\n%e = 当前网络名称\n%h = 选取昵称的主机名\n%m = 机器信息\n%n = 您的昵称\n%s = 选取的昵称\n%t = 时间/日期\n%u = 选取的用户账号" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "对话按钮 - 特殊代码:\n\n%a = 所有选取的昵称\n%c = 当前频道\n%e = 当前网络名称\n%h = 所选取昵称的主机名\n%m = 机器信息\n%n = 您的昵称\n%s = 选取的昵称\n%t = 时间/日期\n%u = 选取的用户账号" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "CTCP 回应 - 特殊编码:\n\n%d = 数据 (全部 ctcp)\n%e = 当前网络名称\n%m = 机器信息\n%s = 发送 ctcp 的用户\n%t = 时间/日期\n%2 = 第 2 个词\n%3 = 第 3 个词\n&2 = 从第 2 个词到行末\n&3 = 从第 3 个词到行末\n\n" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "URL 处理程序 - 特殊代码:\n\n%s = URL 字符串\n\n在命令前加一个 “!” 表示\n该命令应被发送到 shell 而\n非 HexChat" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "用户定义命令 - %s" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "用户列表弹出菜单 - %s" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "替换 - %s" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "使用以下替换" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "URL 处理程序 - %s" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "用户列表按钮 - %s" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "对话框按钮 - %s" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "CTCP 回应 - %s" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "HexChat(_X)" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "网络列表(_S)" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "添加(_N)" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "服务器标签页" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "频道标签页" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "服务器窗口" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "频道窗口" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "载入插件或脚本(_L)" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "离开(_Q)" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "查看(_V)" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "菜单栏(_M)" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "主题栏(_T)" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "用户菜单(_U)" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "用户列表按钮(_S)" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "模式按钮(_O)" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "频道转换器(_C)" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "标签页(_T)" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "树状图(_R)" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "网络流量(_N)" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "离线" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "图形" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "全屏(_F)" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "服务器(_S)" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "断开连接(_D)" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "重新连接(_R)" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "进入频道(_J)" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "频道列表(_L)" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "标记为离开(_A)" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "用户菜单(_U)" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "设置(_E)" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "首选项(_P)" + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "自动替换" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "CTCP 回应" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "对话框按钮" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "键盘快捷键" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "文本事件" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "URL 处理程序" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "用户命令" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "用户列表按钮" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "用户列表弹出菜单" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "窗口(_W)" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "屏蔽列表(_B)" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "直连聊天" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "文件传输(_T)" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "好友列表" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "忽略列表" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "插件和脚本(_P)" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "原始记录(_R)" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "URL 抓取程序(_U)" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "重置标记线" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "移动至标记线" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "复制选区(_C)" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "清空文本(_L)" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "保存文本" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "搜索" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "搜索文本" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "搜索下一个" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "搜索上一个" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "帮助(_H)" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "内容(_C)" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "关于(_A)" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "附加(_A)" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "名称" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "上次发现" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "离线" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "从不" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "%d 分钟之前" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "1小时前" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "%d 小时之前" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "上线" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "输入要添加的昵称:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "在这些网络中进行通知:" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "此处允许使用逗号分隔多个网络。" + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "好友列表 - %s" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "打开对话框" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "高亮消息来自于:%s (%s)" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "频道消息来自于: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "文件传输来自于: %s (%s)" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "受 %s (%s) 的邀请来到频道" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "%s (%s) 发的通知" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "私聊消息来自于:%s (%s)" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "还原窗口 (_R)" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "隐藏窗口 (_H)" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "闪烁于(_B)" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "频道消息" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "私聊消息" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "高亮显示的消息" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "更改状态(_C)" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "离开(_A)" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "返回(_B)" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "高亮消息来自:%s(%s)-%s" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "频道消息来自:%s(%s)-%s" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "私聊消息来自:%s(%s)-%s" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "版本" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "描述" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "选择要载入的插件或脚本" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "插件和脚本 - %s" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "载入(_L)..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "卸载(_U)" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "重新载入(_R)" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "另存为..." + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "原始记录 (%s) - %s" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "清除原始记录" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "添加网络" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "确实要删除网络 “%s” 以及它的所有服务器吗?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "用户名不可留空。" + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "昵称不能为空。" + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "您必须拥有两个昵称." + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "您向服务器发送的个人身份识别信息。如果需要自定义登录方法请使用 连接命令。" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "编辑 %s - %s" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "服务器" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "自动加入频道" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "连接命令" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "%n=昵称\n%p=密码\n%r=真实姓名\n%u=用户名" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "密码" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "编辑(_E)" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "只连接到选取的服务器" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "当连接失败时不要循环跳至所有的服务器。" + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "自动连接到此网络" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "忽略代理服务器" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "在本网络的所有服务器上使用 SSL" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "接受无效的 SSL 证书" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "使用全局用户信息" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "昵称(_N):" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "第二选择:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "真实姓名(_L):" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "用户名(_U):" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "登录方法:" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "密码:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "登录时使用的密码。如果不确定请留空。" + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "字符集:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "网络列表 - %s" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "用户信息" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "第三选择:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "网络" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "启动时不打开网络列表" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "只显示已收藏的" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "编辑(_E)…" + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "排序(_S)" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "按字母顺序排列网络列表。使用SHIFT+上下方向键来移动行。" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "收藏(_F)" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "标记/取消标记 收藏此网络" + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "连接(_O)" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "南非语" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "阿尔巴尼亚语" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "阿姆哈拉语" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "阿斯图里亚斯语" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "阿塞拜疆语" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "巴斯克语" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "白俄罗斯语" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "保加利亚语" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "简体中文" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "正体中文" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "捷克语" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "丹麦语" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "荷兰语" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "英语(英国)" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "英语" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "爱沙尼亚语" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "芬兰语" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "法语" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "加利西亚语" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "德语" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "希腊语" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "古吉拉特语" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "印度语" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "匈牙利语" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "印度尼西亚语" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "意大利语" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "日本语" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "卡纳达语" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "卢旺达语" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "朝鲜语" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "拉脱维亚语" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "立陶宛语" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "马其顿语" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "马来西亚语" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "马拉雅拉姆语" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "挪威语(波克默尔语)" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "挪威语(尼诺斯克语)" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "波兰语" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "葡萄牙语" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "葡萄牙语(巴西)" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "旁遮普语" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "俄语" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "塞尔维亚语" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "斯洛伐克语" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "斯洛文尼亚语" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "西班牙语" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "瑞典语" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "泰语" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "土耳其语" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "乌克兰语" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "越南语" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "瓦隆语" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "一般" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "语言:" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "主要字体:" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "字体:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "文本框" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "彩色昵称" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "给 IRC 上的每名用户使用一种不同的颜色" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "昵称缩进" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "让昵称右侧对齐" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "显示标记线" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "在最后读取的文本后添加一条红线。" + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "背景图像:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "透明度设置" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "窗口透明度:" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "时间戳" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "启用时间戳" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "时间戳格式:" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "请参考 MSDN 上 strftime 的详细解释。" + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "请参考手册页上 strftime 的详细解释。" + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "标题栏" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "显示频道模式" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "显示用户数" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "按最后发言时间" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "输入框" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "使用文本框字体及颜色" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "渲染色彩和属性" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "显示昵称框" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "在昵称框中显示用户模式图标" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "拼写检查" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "要使用的字典:" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "要使用的语言代码 (位于 \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\" 中).\n以英文逗号分隔每一项。" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "要使用的语言代码,以英文逗号分隔每一项。" + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "昵称自动补全" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "昵称自动补全后缀:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "昵称排序:" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "昵称自动补全量:" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "开始列出昵称而不是补全昵称的" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "昵称。" + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "图形化的" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "A-Z,管理员置顶" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "Z-A,管理员置底" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "不排序" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "左上" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "左下" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "右上" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "右下" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "顶部" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "底部" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "隐藏" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "用户列表" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "在用户列表中显示主机名" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "使用文本框字体及颜色" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "显示用户模式的图标" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "在用户列表中使用图形化图标,而不是文本图标" + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "用户列表中的昵称着色" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "昵称色彩与聊天窗口中一致。" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "显示当前频道用户数" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "用户列表排列方式:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "显示用户列表于:" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "追踪离开状态" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "追踪用户的离开状态并且以不同颜色标记" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "在小于此值的频道里:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "双击时的动作" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "附加小程序" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "延时表:" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "流量表;" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "窗口" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "标签页" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "总是" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "只有请求的标签页" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "自动" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "在另外的标签页中" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "在最前的标签页中" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "树状图" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "转换器类型:" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "打开额外的标签页存放服务器信息" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "当您收到私聊消息时打开新的标签页" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "按字母表顺序排序标签页" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "在频道树中显示图标" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "在频道树中显示虚线" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "用鼠标滚轮改变当前标签页" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "中键关闭标签页" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "小字" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "聚焦到新标签页:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "放置通知:" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "显示频道转换器于:" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "缩短标签页标签页至:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "个字母。" + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "标签页或窗口" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "打开频道于:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "打开对话框于:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "打开工具于:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "打开 DCC、忽略、通知等动作时使用标签页还是窗口?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "消息" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "往回滚动" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "请求确认" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "请求指定下载文件夹" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "直接保存无需交互" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "文件和目录" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "自动接受文件传输:" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "把文件下载到:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "将完成下载的文件移动到:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "把昵称存入文件名" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "自动打开 DDC 窗口" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "发送窗口" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "接收窗口" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "聊天窗口" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "最大文件传输速度(字节每秒)" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "每个上传任务:" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "一个传送进程的最大速度" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "每个下载任务:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "所有上传:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "所有文件的最大速度" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "所有下载" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "提示" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "显示通知于:" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "托盘图标闪烁于:" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "任务栏图标闪烁于:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "响铃于:" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "在选择的事件上播放系统 \"即时消息提醒\" 声音" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "在选择的事件上播放来自 freedesktop.org 的 \"message-new-instant\" 声音主题" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "在已选择的事件上播放 GTK beep 声" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "标记为离开时不提醒" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "窗口获得焦点时不提醒" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "托盘行为" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "激活系统托盘图标" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "最小化至系统托盘" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "关闭到系统托盘" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "自动取消离开状态" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "在隐藏到托盘后自动改变状态。" + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "仅在隐藏或缩小为图标是显示通知" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "高亮显示消息" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "高亮消息是当您的昵称被提到时所显示的消息,同时还显示:" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "需要高亮显示的其他单词:" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "不高亮显示的昵称:" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "总是高亮显示的昵称:" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "请用逗号分隔多个词组。\n可以使用通配符。" + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "弹跳托盘图标于:" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "默认信息" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "退出:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "离开频道:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "离开:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "离开" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "只显示离开一次" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "同样的离开信息只显示一次" + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "自动取消离开状态" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "发送信息前取消您的离开状态" + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "杂项" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "使用原始格式显示模式" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "通知列表 Whois" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "当您通知列表中的某位用户上线时发送 /WHOIS 命令。" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "隐藏进入/离开信息" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "默认隐藏频道里的进入/离开信息" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "隐藏昵称变更信息" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "*!*@*.host" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "*!*@domain" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "*!*user@*.host" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "*!*user@domain" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "自动复制行为" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "自动复制已选中文本" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "在释放鼠标左键时将选中文本复制到剪贴板。否则,使用 CTRL+SHIFT+C 将选中文本复制到剪贴板。" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "自动加上时间戳" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "自动在复制的每行文本后加上时间戳,否则,在选择时按下 SHIFT 键后包含时间戳。" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "自动加上颜色信息" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "自动在复制的每行文本中加上颜色信息,否则,在选择时按下 CONTROL 键后包含颜色信息。" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "真实姓名:" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "备用字体:" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "分隔多项时使用英文逗号,逗号两侧无空格。" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "在紧凑模式中显示列表" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "减少用户列表/用户频道树的行与行之间的空隙。" + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "在支持的情况下使用服务器时间" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "在支持服务器时间扩展的情况下,显示从服务器获取的时间戳信息。" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "断线重连" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "自动重连间隔:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "自动重连间隔:" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "屏蔽类型:" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "尝试在屏蔽或者设置静默时使用该屏蔽掩码 (需要 irc_who_join)。" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "聊天记录" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "显示上一会话时的信息回滚" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "往回滚动的行数:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "允许对话记录写入磁盘" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "聊天记录文件名称:" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=服务器 %c=频道 %n=网络。" + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "在聊天记录中插入时间戳" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "聊天记录时间戳格式:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URL" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "允许URL记录写入磁盘" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "开启 URL 抓取程序" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "抓取最多的 URL 条目数:" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(已禁用)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "SOCKS4" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "SOCKS5" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "自动" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "所有连接" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "仅 IRC 服务器" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "仅 DCC" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "您的地址" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "绑定到:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "只对有多个地址的计算机有用。" + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "文件传输" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "从 IRC 服务器获取我的地址" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "向 IRC 服务器查询您的真实地址。如果您有 192.168.*.* 这样的地址时,请使用此命令。" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "DCC IP 地址:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "发送文件时声称您使用此地址。" + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "第一个 DCC 文件监听端口:" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "最后一个 DCC 文件监听端口:" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "! 端口保留为 0 表示允许所有范围" + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "代理服务器" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "主机名:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "端口号:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "类型:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "应用代理于:" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "代理服务器验证" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "使用验证(仅支持 HTTP 或 Socks5 代理服务器)" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "用户名:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "indentd 服务器" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "启用" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "服务器会返回网络用户名" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "你必须有监听此端口的权限。若不是 113 (0 默认是这个) 你必须配置端口转发。" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "选择一个图像文件" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "选择下载目录" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "选择字体" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "浏览..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "打开数据目录" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "选择颜色" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "文本颜色" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "mIRC 颜色:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "本地颜色:" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "前景:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "背景:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "选中文本" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "界面颜色" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "新数据:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "标记线:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "新信息:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "离开的用户:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "高亮显示:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "拼写检查程序:" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "颜色取样" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "事件" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "声音文件" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "选择声音文件" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "声音文件:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "浏览(_B)..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "播放(_P)" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "界面" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "外观" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "输入框" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "用户列表" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "频道转换器" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "颜色" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "聊天" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "声音" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "高级" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "网络设置" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "文件传输" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "Identd" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "类别" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "您不能把树状图放置于顶部或底部!\n请在 <b>视图</b> 菜单中的 <b>标签页</b> 样式中进行调整。" + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "真实姓名选项不能留空。回落到 “realname”。" + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "有些设置需要重新启动程序才会生效。" + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*警告*\n自动接收 DCC 到您的主目录中是危险之举,\n且有被盗用的可能性。例如:\n某人可能会给您发送一份 .bash_profile 文件" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "首选项 - %s" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "<i>(无拼写建议)</i>" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "更多..." + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "将 \"%s\" 添加到字典" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "全部忽略" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "拼写建议" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "enchant 在以下语言中出错:%s" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "解析字符串时出错" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "该信号只接受 %d 个参数,$%d 无效" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "打印文本文件" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ 数字" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "编辑事件" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "从...载入" + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "测试全部" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "确认" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "URL 抓取程序 - %s" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "清空列表" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "复制选取的 URL" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "复制" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "列表保存到文件" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d 位管理员,共 %d 人" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "打开一个 irc://server:port/channel URL" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "系统信息:获取信息失败。可能是不支持也可能是错误。" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "系统信息:没有以此名字的信息\n" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "系统信息:%s 被设置为:%d\n" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "系统信息:有效的信息是:通知并为每一条信息加前缀 hide_* 。比如 hide_os。若没有值的话将会显示当前 (或默认) 设置。\n" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "系统信息:无效的变量名\n" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "插件 %s 已载入\n" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "插件 %s 以卸载\n" diff --git a/hexchat/po/zh_TW.po b/hexchat/po/zh_TW.po new file mode 100644 index 0000000..039d23a --- /dev/null +++ b/hexchat/po/zh_TW.po @@ -0,0 +1,6263 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the hexchat package. +# +# Translators: +# Anthony Fok <foka@debian.org>, 2001 +# Dalin <ayi880@hotmail.com>, 2003 +# Kevin Peng <kevpeng@ihug.co.nz>, 2000 +# whyme <random3098@gmail.com>, 2012 +# Rongjun Mu <elanmu@sina.com>, 2003 +# Rongjun Mu <rongjunmu+i18n@gmail.com>, 2004 +# Sarah Smith <sarahs@redhat.com>, 2003 +# Walte <webmaster@www.linuxfans.org>, 2003 +# whyme <random3098@gmail.com>, 2012 +# Zong Yaotang <zong@cosix.com.au>, 2002 +msgid "" +msgstr "" +"Project-Id-Version: HexChat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 16:10-0400\n" +"PO-Revision-Date: 2018-04-03 20:10+0000\n" +"Last-Translator: TingPing <tingping@tingping.se>\n" +"Language-Team: Chinese (Taiwan) (http://www.transifex.com/hexchat/hexchat/language/zh_TW/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_TW\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: data/misc/io.github.Hexchat.appdata.xml.in:4 +#: data/misc/io.github.Hexchat.appdata.xml.in:5 +#: data/misc/io.github.Hexchat.desktop.in.in:3 +msgid "HexChat" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:9 +#: data/misc/io.github.Hexchat.desktop.in.in:4 +msgid "IRC Client" +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:11 +msgid "" +"HexChat is an easy to use yet extensible IRC Client. It allows you to " +"securely join multiple networks and talk to users privately or in channels " +"using a customizable interface. You can even transfer files." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:12 +msgid "" +"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " +"logging, custom themes, and Python/Perl scripts." +msgstr "" + +#: data/misc/io.github.Hexchat.appdata.xml.in:22 +msgid "Main Chat Window" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:5 +msgid "Chat with other people online" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:6 +msgid "IM;Chat;" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:8 +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:5 +msgid "hexchat" +msgstr "" + +#: data/misc/io.github.Hexchat.desktop.in.in:19 +msgid "Open Safe Mode" +msgstr "" + +#: data/misc/io.github.Hexchat.ThemeManager.desktop.in:3 +msgid "HexChat Theme Manager" +msgstr "" + +#. 0 means unlimited +#. STRINGS +#: src/common/cfgfiles.c:843 +msgid "I'm busy" +msgstr "我很忙" + +#: src/common/cfgfiles.c:880 +msgid "Leaving" +msgstr "暫離" + +#: src/common/chanopt.c:79 +msgid "OFF" +msgstr "" + +#: src/common/chanopt.c:81 +msgid "ON" +msgstr "" + +#: src/common/chanopt.c:83 +msgid "{unset}" +msgstr "" + +#: src/common/chanopt.c:128 src/common/text.c:1325 src/fe-gtk/notifygui.c:125 +#: src/fe-gtk/setup.c:1886 +msgid "Network" +msgstr "網路" + +#: src/common/chanopt.c:129 src/common/chanopt.c:131 src/fe-gtk/maingui.c:1539 +#: src/fe-gtk/maingui.c:1659 src/fe-gtk/maingui.c:3376 +msgid "<none>" +msgstr "<無>" + +#: src/common/chanopt.c:130 src/common/text.c:1025 src/common/text.c:1029 +#: src/common/text.c:1498 src/fe-gtk/chanlist.c:777 src/fe-gtk/ignoregui.c:159 +#: src/fe-gtk/servlistgui.c:1791 +msgid "Channel" +msgstr "聊天室" + +#: src/common/dcc.c:72 +msgid "Waiting" +msgstr "等待" + +#. black +#: src/common/dcc.c:73 +msgid "Active" +msgstr "活躍" + +#. cyan +#: src/common/dcc.c:74 +msgid "Failed" +msgstr "失敗" + +#. red +#: src/common/dcc.c:75 +msgid "Done" +msgstr "完成" + +#. green +#: src/common/dcc.c:76 src/fe-gtk/menu.c:970 +msgid "Connect" +msgstr "連接" + +#. black +#: src/common/dcc.c:77 +msgid "Aborted" +msgstr "中止" + +#: src/common/dcc.c:1790 src/common/dcc.c:1801 src/common/dcc.c:1817 +#: src/common/outbound.c:2604 +#, c-format +msgid "Cannot access %s\n" +msgstr "無法存取 %s\n" + +#. ! if (osvi.dwMajorVersion >= 5) +#. fallback to error number +#: src/common/dcc.c:1791 src/common/dcc.c:1802 src/common/dcc.c:1818 +#: src/common/text.c:1309 src/common/text.c:1352 src/common/text.c:1363 +#: src/common/text.c:1370 src/common/text.c:1383 src/common/text.c:1400 +#: src/common/text.c:1505 src/common/util.c:175 +msgid "Error" +msgstr "錯誤" + +#: src/common/dcc.c:2487 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s 正在提供 \"%s\"。您要接收碼?" + +#: src/common/dcc.c:2704 +msgid "No active DCCs\n" +msgstr "沒有活躍的 DCC\n" + +#: src/common/hexchat.c:885 +msgid "_Open Dialog Window" +msgstr "" + +#: src/common/hexchat.c:886 +msgid "_Send a File" +msgstr "_傳送檔案" + +#: src/common/hexchat.c:887 +msgid "_User Info (WhoIs)" +msgstr "_使用者資訊 (Whois)" + +#: src/common/hexchat.c:888 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/hexchat.c:889 +msgid "_Ignore" +msgstr "" + +#: src/common/hexchat.c:890 +msgid "O_perator Actions" +msgstr "" + +#: src/common/hexchat.c:892 +msgid "Give Ops" +msgstr "給 Op 權限" + +#: src/common/hexchat.c:893 +msgid "Take Ops" +msgstr "取消 Op 權限" + +#: src/common/hexchat.c:894 +msgid "Give Voice" +msgstr "給發言權" + +#: src/common/hexchat.c:895 +msgid "Take Voice" +msgstr "取消發言權" + +#: src/common/hexchat.c:897 +msgid "Kick/Ban" +msgstr "踢出/封禁" + +#: src/common/hexchat.c:898 src/common/hexchat.c:935 +msgid "Kick" +msgstr "踢出" + +#: src/common/hexchat.c:899 src/common/hexchat.c:900 src/common/hexchat.c:901 +#: src/common/hexchat.c:902 src/common/hexchat.c:903 src/common/hexchat.c:934 +#: src/fe-gtk/banlist.c:50 +msgid "Ban" +msgstr "封禁" + +#: src/common/hexchat.c:904 src/common/hexchat.c:905 src/common/hexchat.c:906 +#: src/common/hexchat.c:907 +msgid "KickBan" +msgstr "踢出並封禁" + +#: src/common/hexchat.c:917 +msgid "Leave Channel" +msgstr "離開聊天室" + +#: src/common/hexchat.c:918 +msgid "Join Channel..." +msgstr "加入聊天室..." + +#: src/common/hexchat.c:919 src/fe-gtk/menu.c:1411 +msgid "Enter Channel to Join:" +msgstr "輸入要加入的聊天室:" + +#: src/common/hexchat.c:920 +msgid "Server Links" +msgstr "伺服器清單" + +#: src/common/hexchat.c:921 +msgid "Ping Server" +msgstr "ping 伺服器" + +#: src/common/hexchat.c:922 +msgid "Hide Version" +msgstr "隱藏版本資訊" + +#: src/common/hexchat.c:932 +msgid "Op" +msgstr "給管理員權限" + +#: src/common/hexchat.c:933 +msgid "DeOp" +msgstr "取消管理員權限" + +#: src/common/hexchat.c:936 +msgid "bye" +msgstr "道別" + +#: src/common/hexchat.c:937 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "輸入踢出 %s 的原因:" + +#: src/common/hexchat.c:938 +msgid "Send File" +msgstr "" + +#: src/common/hexchat.c:939 +msgid "Dialog" +msgstr "對話" + +#: src/common/hexchat.c:948 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/hexchat.c:949 +msgid "Send" +msgstr "發送" + +#: src/common/hexchat.c:950 +msgid "Chat" +msgstr "聊天" + +#: src/common/hexchat.c:951 src/fe-gtk/banlist.c:847 src/fe-gtk/dccgui.c:889 +#: src/fe-gtk/ignoregui.c:387 src/fe-gtk/urlgrab.c:214 +msgid "Clear" +msgstr "清除" + +#: src/common/hexchat.c:952 +msgid "Ping" +msgstr "Ping" + +#: src/common/hexchat.c:1125 +#, c-format +msgid "" +"You do not have write access to %s. Nothing from this session can be saved." +msgstr "" + +#: src/common/hexchat.c:1134 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "* 最好不要以 root 身分執行 IRC!您應該\n 建立一般使用者帳號來登入。\n" + +#: src/common/ignore.c:127 src/common/ignore.c:131 src/common/ignore.c:135 +#: src/common/ignore.c:139 src/common/ignore.c:143 src/common/ignore.c:147 +#: src/common/ignore.c:151 +msgid "YES " +msgstr "是 " + +#: src/common/ignore.c:129 src/common/ignore.c:133 src/common/ignore.c:137 +#: src/common/ignore.c:141 src/common/ignore.c:145 src/common/ignore.c:149 +#: src/common/ignore.c:153 +msgid "NO " +msgstr "否 " + +#: src/common/ignore.c:370 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "您正受到來自 %s 的 CTCP flood 攻擊,忽略 %s\n" + +#: src/common/ignore.c:397 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" +msgstr "" + +#: src/common/inbound.c:1282 +#, c-format +msgid "Resolved to %s" +msgstr "" + +#: src/common/inbound.c:1284 src/common/inbound.c:1312 +msgid "Not found" +msgstr "" + +#: src/common/inbound.c:1301 +msgid "Resolved to:" +msgstr "" + +#: src/common/inbound.c:1331 +#, c-format +msgid "Looking up %s..." +msgstr "" + +#: src/common/notify.c:559 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s 在線\n" + +#: src/common/notify.c:561 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s 離線\n" + +#: src/common/outbound.c:69 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "沒有加入任何聊天室。請嘗試 /join #<channel>\n" + +#: src/common/outbound.c:75 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "還未連接伺服器。請嘗試 /server <host> [<port>]\n" + +#: src/common/outbound.c:277 +#, c-format +msgid "Server %s already exists on network %s.\n" +msgstr "" + +#: src/common/outbound.c:283 +#, c-format +msgid "Added server %s to network %s.\n" +msgstr "" + +#: src/common/outbound.c:368 +#, c-format +msgid "Already marked away: %s\n" +msgstr "" + +#: src/common/outbound.c:405 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1839 +msgid "I need /bin/sh to run!\n" +msgstr "使用 /bin/sh 才能執行本程式!\n" + +#: src/common/outbound.c:2262 +msgid "Commands Available:" +msgstr "可用命令:" + +#: src/common/outbound.c:2276 +msgid "User defined commands:" +msgstr "使用者自訂命令:" + +#: src/common/outbound.c:2292 +msgid "Plugin defined commands:" +msgstr "使用者自訂命令:" + +#: src/common/outbound.c:2303 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "請鍵入 /HELP <command> 或者 /HELP -l 以獲取更多資訊" + +#: src/common/outbound.c:2390 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "忽略未知引數「%s」。" + +#: src/common/outbound.c:3148 src/common/outbound.c:3178 +msgid "Quiet is not supported by this server." +msgstr "" + +#. error +#: src/common/outbound.c:3625 src/common/outbound.c:3650 +msgid "No such plugin found.\n" +msgstr "找不到該外掛程式。\n" + +#: src/common/outbound.c:3630 src/fe-gtk/plugingui.c:191 +msgid "That plugin is refusing to unload.\n" +msgstr "無法卸載該外掛程式。\n" + +#: src/common/outbound.c:3932 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <name> <action>,在使用者清單下添加一個按鈕" + +#: src/common/outbound.c:3933 +msgid "" +"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new " +"server to the network list" +msgstr "" + +#: src/common/outbound.c:3935 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <cmd>,向您所在的所有聊天室發送命令" + +#: src/common/outbound.c:3937 +msgid "ALLCHANL <cmd>, sends a command to all channels on the current server" +msgstr "" + +#: src/common/outbound.c:3939 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <cmd>,向您所在的所有伺服器發送命令" + +#: src/common/outbound.c:3940 +msgid "AWAY [<reason>], sets you away (use /BACK to unset)" +msgstr "" + +#: src/common/outbound.c:3941 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3943 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "BAN <mask> [<bantype>],禁止所有符合 mask 的使用者進入目前的聊天室。如果他們已在該聊天室,這個命令不會把他們踢出去(需要有 chanop 身分)" + +#: src/common/outbound.c:3944 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:3945 +msgid "" +"CHARSET [<encoding>], get or set the encoding used for the current " +"connection" +msgstr "" + +#: src/common/outbound.c:3946 +msgid "" +"CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command " +"history" +msgstr "" + +#: src/common/outbound.c:3947 +msgid "" +"CLOSE [-m], Closes the current tab, closing the window if this is the only " +"open tab, or with the \"-m\" flag, closes all queries." +msgstr "" + +#: src/common/outbound.c:3950 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <code|wildcard>,查看國家代碼對應的國家名,比如:tw = 臺灣" + +#: src/common/outbound.c:3952 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "CTCP <nick> <message>,給暱稱為 <nick> 者發送 CTCP 訊息,常用訊息是 VERSION 和 USERINFO" + +#: src/common/outbound.c:3954 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately " +"rejoins" +msgstr "" + +#: src/common/outbound.c:3956 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "\nDCC GET <nick> - 接收暱稱為 <nick> 者發送給您的檔案\nDCC SEND [-maxcps=#] <nick> [file] - 發送檔案給某人\nDCC PSEND [-maxcps=#] <nick> [file] - 使用被動模式發送檔案給某人\nDCC LIST - 顯示 DCC 清單\nDCC CHAT <nick> - 與某人密談\nDCC PCHAT <nick> - 使用被動模式與某人密談\nDCC CLOSE <type> <nick> <file> 例如:\n /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3968 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "DEHOP <nick>,取消目前聊天室內暱稱為 <nick> 者的 chanhalf-op 身分(需要有 chanop 身分)" + +#: src/common/outbound.c:3970 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <name>,刪除使用者清單下的一個按鈕" + +#: src/common/outbound.c:3972 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <nick>,取消暱稱為 <nick> 者在本聊天室的 chanop 身分(需要有 chanop 身分)" + +#: src/common/outbound.c:3974 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <nick>,取消暱稱為 <nick> 者在本聊天室的發言權(需要有 chanop 身分)" + +#: src/common/outbound.c:3975 +msgid "DISCON, Disconnects from server" +msgstr "DISCON,切斷和伺服器的連接" + +#: src/common/outbound.c:3976 +msgid "DNS <nick|host|ip>, Resolves an IP or hostname" +msgstr "" + +#: src/common/outbound.c:3977 +msgid "DOAT <channel,list,/network> <command>" +msgstr "" + +#: src/common/outbound.c:3978 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <text>,只在本地顯示文字" + +#: src/common/outbound.c:3981 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "EXEC [-o] <command>,執行命令。如果使用了 -o 選項則輸出到目前聊天室,否則輸出到目前文字框" + +#: src/common/outbound.c:3983 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT,向行程發送 SIGCONT 信號" + +#: src/common/outbound.c:3986 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "EXECKILL [-9],砍掉目前會話中的某執行行程。如果使用 -9 選項,則用 SIGKILL 砍掉該行程" + +#: src/common/outbound.c:3988 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP,向行程發送 SIGSTOP 信號" + +#: src/common/outbound.c:3989 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE,把資料發送給行程的標準輸入" + +#: src/common/outbound.c:3993 +msgid "EXPORTCONF, exports HexChat settings" +msgstr "" + +#: src/common/outbound.c:3996 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ,排空目前伺服器的發送佇列" + +#: src/common/outbound.c:3998 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <host> [<port>],經由某主機來代理,預設輸出入埠為 23" + +#: src/common/outbound.c:4003 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" + +#: src/common/outbound.c:4008 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <nick>,給暱稱為 <nick> 者以 chanhalf-op 身分 (需要有 chanop 身分)" + +#: src/common/outbound.c:4009 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <password>,向暱稱伺服器表明您自己的身分" + +#: src/common/outbound.c:4011 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "IGNORE <mask> <types..> <options..>\n mask - 欲忽略的主機遮罩,比如 *!*@*.aol.com\n types - 欲忽略資料的類型,以下選項之一或全部:\n PRIV,CHAN,NOTI,CTCP,INVI,ALL\n options - NOSAVE, QUIET" + +#: src/common/outbound.c:4018 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "INVITE <nick> [<channel>],邀請暱稱為 <nick> 者加入聊天室,預設為目前聊天室(需要有 chanop 身分)" + +#: src/common/outbound.c:4019 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <channel>,加入聊天室" + +#: src/common/outbound.c:4021 +msgid "" +"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4023 +msgid "" +"KICKBAN <nick> [reason], bans then kicks the nick from the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:4026 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK,強制進行新的延遲檢查" + +#: src/common/outbound.c:4028 +msgid "" +"LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" +" Use -h to highlight the found string(s)\n" +" Use -m to match case\n" +" Use -r when string is a Regular Expression\n" +" Use -- (double hyphen) to end options when searching for, say, the string '-r'" +msgstr "" + +#: src/common/outbound.c:4034 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <file>,載入外掛程式或命令稿" + +#: src/common/outbound.c:4037 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP,取消目前聊天室中所有 chanhalf-op 的權限 (需要有 chanop 身分)" + +#: src/common/outbound.c:4039 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP,取消目前聊天室中所有 chanop 的權限 (需要有 chanop 身分)" + +#: src/common/outbound.c:4041 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in" +" the 3rd person, like /me jumps)" +msgstr "ME <action>,向目前聊天室中發送一個動作 (動作使用第三人稱陳述,例如 /me jumps)" + +#: src/common/outbound.c:4045 +msgid "MHOP, Mass hop's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:4047 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK,踢出目前聊天室中除您自己之外的所有使用者 (需要有 chanop 身分)" + +#: src/common/outbound.c:4050 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP,給本聊天室中所有使用者 chanop 身分(需要有 chanop 身分)" + +#: src/common/outbound.c:4051 +msgid "" +"MSG <nick> <message>, sends a private message, message \".\" to send to last" +" nick or prefix with \"=\" for dcc chat" +msgstr "" + +#: src/common/outbound.c:4054 +msgid "NAMES [channel], Lists the nicks on the channel" +msgstr "" + +#: src/common/outbound.c:4056 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <nick> <message>,給暱稱為 <nick> 者發送一則 CTCP 通知" + +#: src/common/outbound.c:4057 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <hostname> [<port>]" + +#: src/common/outbound.c:4058 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <nickname>,設定您的暱稱" + +#: src/common/outbound.c:4061 +msgid "NOTICE <nick/channel> <message>, sends a notice" +msgstr "" + +#: src/common/outbound.c:4063 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" + +#: src/common/outbound.c:4065 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <nick>,給予暱稱為 <nick> 者 chanop 身分 (需要有 chanop 身分)" + +#: src/common/outbound.c:4067 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<channel>] [<reason>],離開聊天室,預設為目前的聊天室" + +#: src/common/outbound.c:4069 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <nick | channel>,CTCP ping 某位使用者或聊天室" + +#: src/common/outbound.c:4071 +msgid "" +"QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone " +"and optionally sends a message" +msgstr "" + +#: src/common/outbound.c:4073 +msgid "" +"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current " +"channel if supported by the server." +msgstr "" + +#: src/common/outbound.c:4075 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<reason>],切斷與目前伺服器的連接" + +#: src/common/outbound.c:4077 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <text>,向伺服器發送原始格式的文字" + +#: src/common/outbound.c:4080 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as " +"/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "RECONNECT [-ssl] [<host>] [<port>] [<password>],可用 /RECONNECT 重新連接目前伺服器或用 /RECONNECT ALL 重新連接所有伺服器" + +#: src/common/outbound.c:4083 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "RECONNECT [<host>] [<port>] [<password>],可用 /RECONNECT 重新連接目前伺服器或用 /RECONNECT ALL 重新連接所有伺服器" + +#: src/common/outbound.c:4085 +msgid "" +"RECV <text>, send raw data to HexChat, as if it was received from the IRC " +"server" +msgstr "" + +#: src/common/outbound.c:4086 +msgid "RELOAD <name>, reloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:4088 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <text>,向目前視窗中的對象發送文字" + +#: src/common/outbound.c:4089 +msgid "SEND <nick> [<file>]" +msgstr "SEND <nick> [<file>]" + +#: src/common/outbound.c:4092 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <host> <port> <channel>,連接伺服器並加入某聊天室" + +#: src/common/outbound.c:4095 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <host> <port> <channel>,連接伺服器並加入某聊天室" + +#: src/common/outbound.c:4099 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 6697 for ssl connections" +msgstr "" + +#: src/common/outbound.c:4102 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <host> [<port>] [<password>],連接伺服器。預設輸出入埠為 6667" + +#: src/common/outbound.c:4104 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:4105 +msgid "SETCURSOR [-|+]<position>, reposition the cursor in the inputbox" +msgstr "" + +#: src/common/outbound.c:4106 +msgid "SETTAB <new name>, change a tab's name, tab_trunc limit still applies" +msgstr "" + +#: src/common/outbound.c:4107 +msgid "SETTEXT <new text>, replace the text in the input box" +msgstr "" + +#: src/common/outbound.c:4110 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current " +"topic" +msgstr "TOPIC [<topic>],設定話題為指定話題,如果未指定則顯示目前話題" + +#: src/common/outbound.c:4112 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:4119 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <mask> [<mask>...],解禁指定的遮罩。" + +#: src/common/outbound.c:4120 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <mask> [QUIET]" + +#: src/common/outbound.c:4121 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <name>,卸載外掛程式或命令稿" + +#: src/common/outbound.c:4123 +msgid "" +"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" +" server." +msgstr "" + +#: src/common/outbound.c:4124 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>,在您的瀏覽器中開啟 <url>" + +#: src/common/outbound.c:4126 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " +"userlist" +msgstr "USELECT [-a] [-s] <nick1> <nick2>...,在聊天室使用者清單中以高亮度標示暱稱" + +#: src/common/outbound.c:4129 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <nick>,給予暱稱為 <nick> 者發言權(需要有 chanop 身分)" + +#: src/common/outbound.c:4131 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <message>,發送訊息到所有的聊天室" + +#: src/common/outbound.c:4133 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <message>,給目前聊天室中所有 chanop 發送訊息" + +#: src/common/outbound.c:4166 +#, c-format +msgid "User Command for: %s\n" +msgstr "" + +#: src/common/outbound.c:4193 +#, c-format +msgid "Usage: %s\n" +msgstr "用法:%s\n" + +#: src/common/outbound.c:4198 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "\n沒有關於該命令的求助資訊。\n" + +#: src/common/outbound.c:4204 +msgid "No such command.\n" +msgstr "無此命令。\n" + +#: src/common/outbound.c:4537 +msgid "Bad arguments for user command.\n" +msgstr "使用者命令的引數不對。\n" + +#: src/common/outbound.c:4743 +msgid "Too many recursive usercommands, aborting." +msgstr "太多遞迴的使用者命令,中止。" + +#: src/common/outbound.c:4832 +#, c-format +msgid "Unknown Command %s. Try /help\n" +msgstr "" + +#: src/common/plugin.c:403 +msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" +msgstr "" + +#: src/common/plugin-identd.c:175 +#, c-format +msgid "*\tServicing ident request from %s as %s" +msgstr "" + +#: src/common/plugin-identd.c:238 +#, c-format +msgid "*\tError starting identd server: %s" +msgstr "" + +#: src/common/plugin-identd.c:262 +msgid "IDENTD <port> <username>" +msgstr "" + +#: src/common/plugin-timer.c:75 +#, c-format +msgid "Timer %d deleted.\n" +msgstr "" + +#: src/common/plugin-timer.c:81 +msgid "No such ref number found.\n" +msgstr "" + +#: src/common/plugin-timer.c:145 +msgid "No timers installed.\n" +msgstr "" + +#. 00000 00000000 0000000 abc +#: src/common/plugin-timer.c:150 +msgid " Ref# Seconds Repeat Command \n" +msgstr "" + +#: src/common/plugin-timer.c:155 +#, c-format +msgid "%5d %8.1f %7d %s\n" +msgstr "" + +#: src/common/server.c:514 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "您確信此伺服器和輸出入埠支援‧SSL ?\n" + +#: src/common/server.c:876 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "無法解析主機名 %s\n請檢查您的 IP 設定!\n" + +#: src/common/server.c:881 +msgid "Proxy traversal failed.\n" +msgstr "代理傳送失敗。\n" + +#: src/common/servlist.c:547 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "輪跳至 %s 的下一個伺服器中...\n" + +#: src/common/servlist.c:1185 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "警告:未知的字元設定「%s」。對網路 %s 將不應用字元轉換。" + +#: src/common/textevents.h:7 +msgid "%C18*%O$t%C18$1%O added to notify list." +msgstr "" + +#: src/common/textevents.h:10 +msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" +msgstr "" + +#: src/common/textevents.h:13 +msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." +msgstr "" + +#: src/common/textevents.h:19 +msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:22 +msgid "%C29*%O$tCapabilities removed: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:25 +msgid "%C23*%O$tCapabilities supported: %C29$2%O" +msgstr "" + +#: src/common/textevents.h:28 +msgid "%C23*%O$tCapabilities requested: %C29$1%O" +msgstr "" + +#: src/common/textevents.h:31 +msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" +msgstr "" + +#: src/common/textevents.h:40 +msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:43 +msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" +msgstr "" + +#: src/common/textevents.h:46 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:49 +msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:52 +msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:55 +msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:58 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:61 +msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:64 +msgid "%UChannel Users Topic" +msgstr "%U 聊天室 使用者 話題" + +#: src/common/textevents.h:70 +msgid "%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O" +msgstr "" + +#: src/common/textevents.h:73 +msgid "%C22*%O$tChannel %C22$1%O modes: %C24$2" +msgstr "" + +#: src/common/textevents.h:82 +msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:85 +msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:88 +msgid "%C22*%O$t%C26$1%O removes exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:91 +msgid "%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:94 +msgid "%C22*%O$t%C26$1%O removes channel keyword" +msgstr "" + +#: src/common/textevents.h:97 +msgid "%C22*%O$t%C26$1%O removes user limit" +msgstr "" + +#: src/common/textevents.h:100 +msgid "%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:103 +msgid "%C22*%O$t%C26$1%O sets channel limit to %C24$2%O" +msgstr "" + +#: src/common/textevents.h:106 +msgid "%C22*%O$t%C26$1%O removes ban on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:109 +msgid "%C22*%O$t%C26$1%O removes quiet on %C18$2%O" +msgstr "" + +#: src/common/textevents.h:112 +msgid "%C22*%O$tChannel %C22$1%O url: %C24$2" +msgstr "" + +#: src/common/textevents.h:115 +msgid "%C22*%O$t%C26$1%O gives voice to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:118 +msgid "%C23*%O$tConnected. Now logging in." +msgstr "" + +#: src/common/textevents.h:121 +msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)" +msgstr "" + +#: src/common/textevents.h:124 +msgid "%C20*%O$tConnection failed (%C20$1%O)" +msgstr "%C20*%O$t連線失敗 (%C20$1%O)" + +#: src/common/textevents.h:127 +msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:130 +msgid "%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O" +msgstr "" + +#: src/common/textevents.h:136 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:139 +msgid "%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O)" +msgstr "" + +#: src/common/textevents.h:142 +msgid "%C23*%O$tDCC CHAT to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:145 +msgid "" +"%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:148 +msgid "%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:151 +msgid "%C24*%O$tReceived a DCC CHAT offer from %C18$1%O" +msgstr "" + +#: src/common/textevents.h:154 +msgid "%C24*%O$tOffering DCC CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:157 +msgid "%C24*%O$tAlready offering CHAT to %C18$1%O" +msgstr "" + +#: src/common/textevents.h:160 +msgid "%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:163 +msgid "%C23*%O$tReceived '%C23$1%C' from %C18$2%O" +msgstr "" + +#: src/common/textevents.h:166 +#, c-format +msgid "%C16,17 Type To/From Status Size Pos File" +msgstr "" + +#: src/common/textevents.h:169 +msgid "" +"%C20*%O$tReceived a malformed DCC request from " +"%C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O" +msgstr "" + +#: src/common/textevents.h:172 +msgid "%C24*%O$tOffering '%C24$1%O' to %C18$2%O" +msgstr "" + +#: src/common/textevents.h:175 +msgid "%C23*%O$tNo such DCC offer." +msgstr "" + +#: src/common/textevents.h:178 +msgid "%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:181 +msgid "" +"%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:184 +msgid "" +"%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:187 +msgid "%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:190 +msgid "%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:193 +msgid "" +"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' " +"instead." +msgstr "" + +#: src/common/textevents.h:196 +msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O." +msgstr "" + +#: src/common/textevents.h:199 +msgid "%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted." +msgstr "" + +#: src/common/textevents.h:202 +msgid "" +"%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O" +msgstr "" + +#: src/common/textevents.h:205 +msgid "" +"%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:208 +msgid "%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O)" +msgstr "" + +#: src/common/textevents.h:211 +msgid "%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes)" +msgstr "" + +#: src/common/textevents.h:214 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting." +msgstr "" + +#: src/common/textevents.h:217 +msgid "%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting." +msgstr "" + +#: src/common/textevents.h:220 +msgid "%C24*%O$t%C18$1%O deleted from notify list." +msgstr "" + +#: src/common/textevents.h:223 +msgid "%C20*%O$tDisconnected (%C20$1%O)" +msgstr "" + +#: src/common/textevents.h:226 +msgid "%C24*%O$tFound your IP: %C30[%C24$1%C30]%O" +msgstr "" + +#: src/common/textevents.h:232 +msgid "%O%C18$1%O added to ignore list." +msgstr "" + +#: src/common/textevents.h:235 +msgid "%OIgnore on %C18$1%O changed." +msgstr "" + +#: src/common/textevents.h:238 +#, c-format +msgid "%C16,17" +msgstr "" + +#: src/common/textevents.h:241 +#, c-format +msgid "%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" +msgstr "" + +#: src/common/textevents.h:244 +msgid "%O%C18$1%O removed from ignore list." +msgstr "" + +#: src/common/textevents.h:247 +msgid "%OIgnore list is empty." +msgstr "" + +#: src/common/textevents.h:250 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O)" +msgstr "" + +#: src/common/textevents.h:253 +msgid "%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:256 +#, c-format +msgid "%C23*$t$1 ($3%C23) has joined" +msgstr "" + +#: src/common/textevents.h:259 +msgid "%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O)" +msgstr "" + +#: src/common/textevents.h:262 +msgid "%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:265 +msgid "%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O)" +msgstr "" + +#: src/common/textevents.h:274 +msgid "%C29*%O$t%C29MOTD Skipped%O" +msgstr "" + +#: src/common/textevents.h:277 +msgid "%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:280 +msgid "%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O..." +msgstr "" + +#: src/common/textevents.h:283 +msgid "" +"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:286 +msgid "%C20*%O$tNo such DCC." +msgstr "" + +#: src/common/textevents.h:289 +msgid "%C23*%O$tNo process is currently running" +msgstr "" + +#: src/common/textevents.h:298 +msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:301 +msgid "%C23*%O$tNotify: %C18$1%C is back" +msgstr "" + +#: src/common/textevents.h:304 +msgid "$tNotify list is empty." +msgstr "$t上線通知清單是空的。" + +#: src/common/textevents.h:307 +#, c-format +msgid "%C16,17 Notify List" +msgstr "" + +#: src/common/textevents.h:310 +msgid "%C23*%O$t%C23$1%O users in notify list." +msgstr "" + +#: src/common/textevents.h:313 +msgid "%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:316 +msgid "%C23*%O$tNotify: %C18$1%C is online (%C29$3%O)" +msgstr "" + +#: src/common/textevents.h:322 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left" +msgstr "" + +#: src/common/textevents.h:325 +#, c-format +msgid "%C24*$t$1 ($2%C24) has left ($4)" +msgstr "" + +#: src/common/textevents.h:328 +msgid "%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s)" +msgstr "" + +#: src/common/textevents.h:331 +msgid "%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:346 +msgid "%C24*%O$tA process is already running" +msgstr "" + +#: src/common/textevents.h:349 +#, c-format +msgid "%C24*$t$1 has quit ($2)" +msgstr "" + +#: src/common/textevents.h:352 +msgid "%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O" +msgstr "" + +#: src/common/textevents.h:355 +msgid "%O-%C29$1/Wallops%O-$t$2" +msgstr "" + +#: src/common/textevents.h:358 +msgid "%C24*%O$tLooking up IP number for %C18$1%O..." +msgstr "" + +#: src/common/textevents.h:361 +msgid "%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O)" +msgstr "" + +#: src/common/textevents.h:367 +msgid "%C29*%O$tConnected." +msgstr "" + +#: src/common/textevents.h:373 +msgid "%C29*%O$tLooking up %C29$1%O" +msgstr "" + +#: src/common/textevents.h:385 +msgid "%C23*%O$tStopped previous connection attempt (%C24$1%O)" +msgstr "" + +#: src/common/textevents.h:388 +msgid "%C22*%O$tTopic for %C22$1%C is: $2%O" +msgstr "" + +#: src/common/textevents.h:391 +msgid "%C22*%O$t%C26$1%C has changed the topic to: $2%O" +msgstr "" + +#: src/common/textevents.h:394 +msgid "%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:397 +msgid "%C20*%O$tUnknown host. Maybe you misspelled it?" +msgstr "" + +#: src/common/textevents.h:400 +msgid "%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O)" +msgstr "" + +#: src/common/textevents.h:403 +msgid "%C22*%O$tUsers on %C22$1%C: %C24$2%O" +msgstr "" + +#: src/common/textevents.h:409 +msgid "%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O" +msgstr "" + +#: src/common/textevents.h:415 +msgid "%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list." +msgstr "" + +#: src/common/textevents.h:421 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O" +msgstr "" + +#: src/common/textevents.h:424 +msgid "%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O" +msgstr "" + +#: src/common/textevents.h:430 +msgid "" +"%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O" +msgstr "" + +#: src/common/textevents.h:439 +msgid "%C19*%O$tNow talking on %C22$2%O" +msgstr "" + +#: src/common/textevents.h:442 +msgid "%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O)" +msgstr "" + +#: src/common/textevents.h:445 +msgid "%C19*%O$tYou have left channel %C22$3%O" +msgstr "" + +#: src/common/textevents.h:448 +msgid "%C19*%O$tYou have left channel %C22$3%C (%C24$4%O)" +msgstr "" + +#: src/common/textevents.h:454 +msgid "%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O)" +msgstr "" + +#: src/common/textevents.h:460 +msgid "%C20*%O$tYou are now known as %C18$2%O" +msgstr "" + +#: src/common/text.c:348 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:365 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** %s 結束日誌紀錄\n" + +#: src/common/text.c:577 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** %s 開始日誌記錄\n" + +#: src/common/text.c:595 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +"permissions on %s" +msgstr "" + +#: src/common/text.c:960 +msgid "Left message" +msgstr "左邊的訊息" + +#: src/common/text.c:961 +msgid "Right message" +msgstr "右邊的訊息" + +#: src/common/text.c:966 src/common/text.c:1350 src/common/text.c:1388 +#: src/common/text.c:1393 src/common/text.c:1434 +msgid "IP address" +msgstr "IP 位址" + +#: src/common/text.c:967 src/common/text.c:1211 src/common/text.c:1270 +#: src/common/text.c:1277 +msgid "Username" +msgstr "使用者名" + +#: src/common/text.c:972 +msgid "The nick of the joining person" +msgstr "加入的使用者" + +#: src/common/text.c:973 +msgid "The channel being joined" +msgstr "加入的聊天室" + +#: src/common/text.c:974 src/common/text.c:1042 src/common/text.c:1093 +msgid "The host of the person" +msgstr "此人的主機" + +#: src/common/text.c:975 +msgid "The account of the person" +msgstr "" + +#: src/common/text.c:979 src/common/text.c:986 src/common/text.c:993 +#: src/common/text.c:1210 src/common/text.c:1217 src/common/text.c:1222 +#: src/common/text.c:1227 src/common/text.c:1232 src/common/text.c:1238 +#: src/common/text.c:1243 src/common/text.c:1247 src/common/text.c:1253 +#: src/common/text.c:1259 src/common/text.c:1323 src/common/text.c:1339 +#: src/common/text.c:1344 src/common/text.c:1349 src/common/text.c:1358 +#: src/common/text.c:1369 src/common/text.c:1376 src/common/text.c:1382 +#: src/common/text.c:1387 src/common/text.c:1392 src/common/text.c:1399 +#: src/common/text.c:1405 src/common/text.c:1411 src/common/text.c:1416 +#: src/common/text.c:1421 src/common/text.c:1425 src/common/text.c:1431 +#: src/common/text.c:1439 src/common/text.c:1443 src/common/text.c:1478 +#: src/common/text.c:1483 +msgid "Nickname" +msgstr "暱稱" + +#: src/common/text.c:980 +msgid "The action" +msgstr "動作" + +#: src/common/text.c:981 src/common/text.c:988 +msgid "Mode char" +msgstr "聊天模式" + +#: src/common/text.c:982 src/common/text.c:989 src/common/text.c:995 +msgid "Identified text" +msgstr "驗證文字" + +#: src/common/text.c:987 +msgid "The text" +msgstr "文字" + +#: src/common/text.c:994 src/common/text.c:1070 src/common/text.c:1076 +msgid "The message" +msgstr "訊息" + +#: src/common/text.c:999 src/common/text.c:1004 src/common/text.c:1009 +#: src/common/text.c:1275 src/common/text.c:1283 src/common/text.c:1289 +#: src/common/text.c:1295 src/common/text.c:1324 src/common/text.c:1452 +#: src/common/text.c:1494 +msgid "Server Name" +msgstr "伺服器名" + +#: src/common/text.c:1000 +msgid "Acknowledged Capabilities" +msgstr "" + +#: src/common/text.c:1005 +msgid "Removed Capabilities" +msgstr "" + +#: src/common/text.c:1010 +msgid "Server Capabilities" +msgstr "" + +#: src/common/text.c:1014 +msgid "Requested Capabilities" +msgstr "" + +#: src/common/text.c:1018 src/common/text.c:1080 +msgid "Old nickname" +msgstr "原暱稱" + +#: src/common/text.c:1019 src/common/text.c:1081 +msgid "New nickname" +msgstr "新暱稱" + +#: src/common/text.c:1023 +msgid "Nick of person who changed the topic" +msgstr "更改話題的使用者" + +#: src/common/text.c:1024 src/common/text.c:1030 src/fe-gtk/chanlist.c:779 +#: src/fe-gtk/chanlist.c:881 src/fe-gtk/setup.c:337 +msgid "Topic" +msgstr "話題" + +#: src/common/text.c:1034 src/common/text.c:1087 +msgid "The nickname of the kicker" +msgstr "能踢人的使用者" + +#: src/common/text.c:1035 src/common/text.c:1085 +msgid "The person being kicked" +msgstr "被踢者" + +#: src/common/text.c:1036 src/common/text.c:1043 src/common/text.c:1047 +#: src/common/text.c:1052 src/common/text.c:1086 src/common/text.c:1094 +#: src/common/text.c:1101 +msgid "The channel" +msgstr "聊天室" + +#: src/common/text.c:1037 src/common/text.c:1088 src/common/text.c:1095 +msgid "The reason" +msgstr "原因" + +#: src/common/text.c:1041 src/common/text.c:1092 +msgid "The nick of the person leaving" +msgstr "離開的使用者" + +#: src/common/text.c:1048 src/common/text.c:1054 +msgid "The time" +msgstr "時間" + +#: src/common/text.c:1053 +msgid "The creator" +msgstr "建立者" + +#: src/common/text.c:1058 src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1064 +msgid "Nick" +msgstr "暱稱" + +#: src/common/text.c:1059 src/common/text.c:1345 +msgid "Reason" +msgstr "原因" + +#: src/common/text.c:1060 src/common/text.c:1212 src/common/text.c:1313 +msgid "Host" +msgstr "主機" + +#: src/common/text.c:1064 src/common/text.c:1069 src/common/text.c:1074 +msgid "Who it's from" +msgstr "來自者" + +#: src/common/text.c:1065 +msgid "The time in x.x format (see below)" +msgstr "時間格式為 x.x (見下)" + +#: src/common/text.c:1075 src/common/text.c:1112 +msgid "The Channel it's going to" +msgstr "要加入的聊天室" + +#: src/common/text.c:1099 +msgid "The sound" +msgstr "音效" + +#: src/common/text.c:1100 src/common/text.c:1106 src/common/text.c:1111 +msgid "The nick of the person" +msgstr "此人的暱稱" + +#: src/common/text.c:1105 src/common/text.c:1110 +msgid "The CTCP event" +msgstr "CTCP 事件" + +#: src/common/text.c:1116 +msgid "The nick of the person who set the key" +msgstr "設定密鑰的使用者" + +#: src/common/text.c:1117 +msgid "The key" +msgstr "密鑰" + +#: src/common/text.c:1121 +msgid "The nick of the person who set the limit" +msgstr "設定限額的使用者" + +#: src/common/text.c:1122 +msgid "The limit" +msgstr "限額" + +#: src/common/text.c:1126 +msgid "The nick of the person who did the op'ing" +msgstr "使用了 op 命令的使用者" + +#: src/common/text.c:1127 +msgid "The nick of the person who has been op'ed" +msgstr "被授予 op 身分的使用者" + +#: src/common/text.c:1131 +msgid "The nick of the person who has been halfop'ed" +msgstr "被授予 halfop 身分的使用者" + +#: src/common/text.c:1132 +msgid "The nick of the person who did the halfop'ing" +msgstr "使用 halfop 命令的使用者" + +#: src/common/text.c:1136 +msgid "The nick of the person who did the voice'ing" +msgstr "使用 voice 命令的使用者" + +#: src/common/text.c:1137 +msgid "The nick of the person who has been voice'ed" +msgstr "被賦予發言權的使用者" + +#: src/common/text.c:1141 +msgid "The nick of the person who did the banning" +msgstr "使用 ban 命令的使用者" + +#: src/common/text.c:1142 src/common/text.c:1174 +msgid "The ban mask" +msgstr "ban 命令的遮罩" + +#: src/common/text.c:1146 +msgid "The nick of the person who did the quieting" +msgstr "" + +#: src/common/text.c:1147 src/common/text.c:1179 +msgid "The quiet mask" +msgstr "" + +#: src/common/text.c:1151 +msgid "The nick who removed the key" +msgstr "取消密鑰的使用者" + +#: src/common/text.c:1155 +msgid "The nick who removed the limit" +msgstr "取消使用者限額的使用者" + +#: src/common/text.c:1159 +msgid "The nick of the person who did the deop'ing" +msgstr "" + +#: src/common/text.c:1160 +msgid "The nick of the person who has been deop'ed" +msgstr "被取消 op 身分的使用者" + +#: src/common/text.c:1163 +msgid "The nick of the person who did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1164 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "被取消 halfop 身分的使用者" + +#: src/common/text.c:1168 +msgid "The nick of the person who did the devoice'ing" +msgstr "" + +#: src/common/text.c:1169 +msgid "The nick of the person who has been devoice'ed" +msgstr "被取消發言權的使用者" + +#: src/common/text.c:1173 +msgid "The nick of the person who did the unban'ing" +msgstr "" + +#: src/common/text.c:1178 +msgid "The nick of the person who did the unquiet'ing" +msgstr "" + +#: src/common/text.c:1183 +msgid "The nick of the person who did the exempt" +msgstr "使用 exempt 命令的使用者" + +#: src/common/text.c:1184 src/common/text.c:1189 +msgid "The exempt mask" +msgstr "exempt 遮罩" + +#: src/common/text.c:1188 +msgid "The nick of the person removed the exempt" +msgstr "取消 exempt 的使用者" + +#: src/common/text.c:1193 +msgid "The nick of the person who did the invite" +msgstr "使用 invite 命令的使用者" + +#: src/common/text.c:1194 src/common/text.c:1199 +msgid "The invite mask" +msgstr "invite 遮罩" + +#: src/common/text.c:1198 +msgid "The nick of the person removed the invite" +msgstr "取消 invite 的使用者" + +#: src/common/text.c:1203 +msgid "The nick of the person setting the mode" +msgstr "設定模式的使用者" + +#: src/common/text.c:1204 +msgid "The mode's sign (+/-)" +msgstr "模式的符號(+/-)" + +#: src/common/text.c:1205 +msgid "The mode letter" +msgstr "模式字母" + +#: src/common/text.c:1206 +msgid "The channel it's being set on" +msgstr "被設定的聊天室" + +#: src/common/text.c:1213 +msgid "Full name" +msgstr "全名" + +#: src/common/text.c:1218 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "聊天室成員/「是 IRC 管理員」" + +#: src/common/text.c:1223 +msgid "Server Information" +msgstr "伺服器資訊" + +#: src/common/text.c:1228 src/common/text.c:1233 +msgid "Idle time" +msgstr "發呆時間" + +#: src/common/text.c:1234 +msgid "Signon time" +msgstr "登入時間" + +#: src/common/text.c:1239 +msgid "Away reason" +msgstr "離開原因" + +#: src/common/text.c:1248 src/common/text.c:1254 src/common/text.c:1262 +#: src/common/text.c:1278 src/common/text.c:1470 +msgid "Message" +msgstr "訊息" + +#: src/common/text.c:1255 +msgid "Account" +msgstr "帳戶" + +#: src/common/text.c:1260 +msgid "Real user@host" +msgstr "真實使用者@主機" + +#: src/common/text.c:1261 +msgid "Real IP" +msgstr "真實 IP" + +#: src/common/text.c:1266 src/common/text.c:1293 src/common/text.c:1299 +#: src/common/text.c:1329 src/common/text.c:1334 src/common/text.c:1493 +msgid "Channel Name" +msgstr "聊天室名" + +#: src/common/text.c:1271 +msgid "Mechanism" +msgstr "" + +#: src/common/text.c:1276 src/common/text.c:1284 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1282 src/common/text.c:1288 src/common/text.c:1456 +#: src/fe-gtk/menu.c:1547 src/fe-gtk/menu.c:1795 src/fe-gtk/setup.c:216 +#: src/fe-gtk/textgui.c:378 +msgid "Text" +msgstr "文字" + +#: src/common/text.c:1294 +msgid "Nick of person who invited you" +msgstr "邀請您的使用者" + +#: src/common/text.c:1300 src/fe-gtk/chanlist.c:778 +msgid "Users" +msgstr "使用者" + +#: src/common/text.c:1304 +msgid "Nickname in use" +msgstr "暱稱已被使用" + +#: src/common/text.c:1305 +msgid "Nick being tried" +msgstr "已試用過的暱稱" + +#: src/common/text.c:1314 src/common/text.c:1460 +msgid "IP" +msgstr "IP 位址" + +#: src/common/text.c:1315 src/common/text.c:1351 +msgid "Port" +msgstr "輸出入埠" + +#: src/common/text.c:1330 src/common/text.c:1340 +msgid "Modes string" +msgstr "模式字串" + +#: src/common/text.c:1335 src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/common/text.c:1356 src/common/text.c:1381 +msgid "DCC Type" +msgstr "DCC 類型" + +#: src/common/text.c:1357 src/common/text.c:1362 src/common/text.c:1367 +#: src/common/text.c:1374 src/common/text.c:1394 src/common/text.c:1398 +#: src/common/text.c:1404 src/common/text.c:1410 src/common/text.c:1417 +#: src/common/text.c:1426 src/common/text.c:1432 +msgid "Filename" +msgstr "檔案名" + +#: src/common/text.c:1368 src/common/text.c:1375 +msgid "Destination filename" +msgstr "目標檔案名" + +#: src/common/text.c:1377 src/common/text.c:1406 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1412 +msgid "Pathname" +msgstr "路徑名" + +#: src/common/text.c:1427 src/fe-gtk/dccgui.c:823 +msgid "Position" +msgstr "位置" + +#: src/common/text.c:1433 src/fe-gtk/dccgui.c:822 +msgid "Size" +msgstr "大小" + +#: src/common/text.c:1438 +msgid "DCC String" +msgstr "DCC 字串" + +#: src/common/text.c:1444 +msgid "Away Reason" +msgstr "" + +#: src/common/text.c:1448 +msgid "Number of notify items" +msgstr "通知條目數" + +#: src/common/text.c:1464 +msgid "Old Filename" +msgstr "舊檔案名" + +#: src/common/text.c:1465 +msgid "New Filename" +msgstr "新檔案名" + +#: src/common/text.c:1469 +msgid "Receiver" +msgstr "接收者" + +#: src/common/text.c:1474 +msgid "Hostmask" +msgstr "主機遮罩" + +#: src/common/text.c:1479 +msgid "Hostname" +msgstr "主機名" + +#: src/common/text.c:1484 +msgid "The Packet" +msgstr "包" + +#: src/common/text.c:1488 +msgid "Seconds" +msgstr "秒" + +#: src/common/text.c:1492 +msgid "Nick of person who have been invited" +msgstr "被邀請的使用者" + +#: src/common/text.c:1499 +msgid "Banmask" +msgstr "ban 的遮罩" + +#: src/common/text.c:1500 +msgid "Who set the ban" +msgstr "設定禁令的使用者" + +#: src/common/text.c:1501 +msgid "Ban time" +msgstr "封禁時間" + +#: src/common/text.c:2266 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "無法讀取聲音檔案:\n%s" + +#: src/common/util.c:119 +msgid "Remote host closed socket" +msgstr "遠端主機已關閉 socket" + +#: src/common/util.c:124 +msgid "Connection refused" +msgstr "連線被拒絕" + +#: src/common/util.c:127 +msgid "No route to host" +msgstr "沒有到主機的路由" + +#: src/common/util.c:129 +msgid "Connection timed out" +msgstr "連線超時" + +#: src/common/util.c:131 +msgid "Cannot assign that address" +msgstr "無法分配該位址" + +#: src/common/util.c:133 +msgid "Connection reset by peer" +msgstr "連線被對方重設" + +#: src/common/util.c:685 +msgid "Ascension Island" +msgstr "亞森松島" + +#: src/common/util.c:686 +msgid "Andorra" +msgstr "安道爾" + +#: src/common/util.c:687 +msgid "United Arab Emirates" +msgstr "阿拉伯聯合大公國" + +#: src/common/util.c:688 +msgid "Aviation-Related Fields" +msgstr "" + +#: src/common/util.c:689 +msgid "Afghanistan" +msgstr "阿富汗" + +#: src/common/util.c:690 +msgid "Antigua and Barbuda" +msgstr "安地卡及巴布達" + +#: src/common/util.c:691 +msgid "Anguilla" +msgstr "安圭拉島" + +#: src/common/util.c:692 +msgid "Albania" +msgstr "阿爾巴尼亞" + +#: src/common/util.c:693 +msgid "Armenia" +msgstr "亞美尼亞" + +#: src/common/util.c:694 +msgid "Netherlands Antilles" +msgstr "荷屬安地列斯" + +#: src/common/util.c:695 +msgid "Angola" +msgstr "安哥拉" + +#: src/common/util.c:696 +msgid "Antarctica" +msgstr "南極洲" + +#: src/common/util.c:697 +msgid "Argentina" +msgstr "阿根廷" + +#: src/common/util.c:698 +msgid "Reverse DNS" +msgstr "反向 DNS" + +#: src/common/util.c:699 +msgid "American Samoa" +msgstr "美屬薩摩亞" + +#: src/common/util.c:700 +msgid "Asia-Pacific Region" +msgstr "亞太地區" + +#: src/common/util.c:701 +msgid "Austria" +msgstr "奧地利" + +#: src/common/util.c:702 +msgid "Nato Fiel" +msgstr "北大西洋公約組織" + +#: src/common/util.c:703 +msgid "Australia" +msgstr "澳大利亞" + +#: src/common/util.c:704 +msgid "Aruba" +msgstr "阿盧巴島" + +#: src/common/util.c:705 +msgid "Aland Islands" +msgstr "奧蘭群島" + +#: src/common/util.c:706 +msgid "Azerbaijan" +msgstr "亞塞拜然" + +#: src/common/util.c:707 +msgid "Bosnia and Herzegovina" +msgstr "波士尼亞及赫塞哥維那" + +#: src/common/util.c:708 +msgid "Barbados" +msgstr "巴貝多" + +#: src/common/util.c:709 +msgid "Bangladesh" +msgstr "孟加拉" + +#: src/common/util.c:710 +msgid "Belgium" +msgstr "比利時" + +#: src/common/util.c:711 +msgid "Burkina Faso" +msgstr "布吉納法索" + +#: src/common/util.c:712 +msgid "Bulgaria" +msgstr "保加利亞" + +#: src/common/util.c:713 +msgid "Bahrain" +msgstr "巴林" + +#: src/common/util.c:714 +msgid "Burundi" +msgstr "浦隆地" + +#: src/common/util.c:715 +msgid "Businesses" +msgstr "商業" + +#: src/common/util.c:716 +msgid "Benin" +msgstr "貝南" + +#: src/common/util.c:717 +msgid "Bermuda" +msgstr "百慕達群島" + +#: src/common/util.c:718 +msgid "Brunei Darussalam" +msgstr "汶萊" + +#: src/common/util.c:719 +msgid "Bolivia" +msgstr "玻利維亞" + +#: src/common/util.c:720 +msgid "Brazil" +msgstr "巴西" + +#: src/common/util.c:721 +msgid "Bahamas" +msgstr "巴哈馬群島" + +#: src/common/util.c:722 +msgid "Bhutan" +msgstr "不丹" + +#: src/common/util.c:723 +msgid "Bouvet Island" +msgstr "波維特島" + +#: src/common/util.c:724 +msgid "Botswana" +msgstr "波札那" + +#: src/common/util.c:725 +msgid "Belarus" +msgstr "白俄" + +#: src/common/util.c:726 +msgid "Belize" +msgstr "貝里斯" + +#: src/common/util.c:727 +msgid "Canada" +msgstr "加拿大" + +#: src/common/util.c:728 src/fe-gtk/setup.c:98 +msgid "Catalan" +msgstr "" + +#: src/common/util.c:729 +msgid "Cocos Islands" +msgstr "可可斯群島" + +#: src/common/util.c:730 +msgid "Democratic Republic of Congo" +msgstr "剛果民主共和國" + +#: src/common/util.c:731 +msgid "Central African Republic" +msgstr "中非共和國" + +#: src/common/util.c:732 +msgid "Congo" +msgstr "剛果" + +#: src/common/util.c:733 +msgid "Switzerland" +msgstr "瑞士" + +#: src/common/util.c:734 +msgid "Cote d'Ivoire" +msgstr "象牙海岸" + +#: src/common/util.c:735 +msgid "Cook Islands" +msgstr "科克群島" + +#: src/common/util.c:736 +msgid "Chile" +msgstr "智利" + +#: src/common/util.c:737 +msgid "Cameroon" +msgstr "喀麥隆" + +#: src/common/util.c:738 +msgid "China" +msgstr "中國" + +#: src/common/util.c:739 +msgid "Colombia" +msgstr "哥倫比亞" + +#: src/common/util.c:740 +msgid "Internic Commercial" +msgstr "Internic 商業組織" + +#: src/common/util.c:741 +msgid "Cooperatives" +msgstr "" + +#: src/common/util.c:742 +msgid "Costa Rica" +msgstr "哥斯大黎加" + +#: src/common/util.c:743 +msgid "Serbia and Montenegro" +msgstr "塞爾維亞及蒙特尼哥羅" + +#: src/common/util.c:744 +msgid "Cuba" +msgstr "古巴" + +#: src/common/util.c:745 +msgid "Cape Verde" +msgstr "維德角島" + +#: src/common/util.c:746 +msgid "Christmas Island" +msgstr "聖誕島" + +#: src/common/util.c:747 +msgid "Cyprus" +msgstr "賽普勒斯" + +#: src/common/util.c:748 +msgid "Czech Republic" +msgstr "捷克共和國" + +#: src/common/util.c:749 +msgid "East Germany" +msgstr "東德" + +#: src/common/util.c:750 +msgid "Germany" +msgstr "德國" + +#: src/common/util.c:751 +msgid "Djibouti" +msgstr "吉布地" + +#: src/common/util.c:752 +msgid "Denmark" +msgstr "丹麥" + +#: src/common/util.c:753 +msgid "Dominica" +msgstr "多明尼克" + +#: src/common/util.c:754 +msgid "Dominican Republic" +msgstr "多明尼加共和國" + +#: src/common/util.c:755 +msgid "Algeria" +msgstr "阿爾及利亞" + +#: src/common/util.c:756 +msgid "Ecuador" +msgstr "厄瓜多" + +#: src/common/util.c:757 +msgid "Educational Institution" +msgstr "教育機構" + +#: src/common/util.c:758 +msgid "Estonia" +msgstr "愛沙尼亞" + +#: src/common/util.c:759 +msgid "Egypt" +msgstr "埃及" + +#: src/common/util.c:760 +msgid "Western Sahara" +msgstr "西撒哈拉" + +#: src/common/util.c:761 +msgid "Eritrea" +msgstr "埃立特里亞" + +#: src/common/util.c:762 +msgid "Spain" +msgstr "西班牙" + +#: src/common/util.c:763 +msgid "Ethiopia" +msgstr "衣索比亞" + +#: src/common/util.c:764 +msgid "European Union" +msgstr "歐盟" + +#: src/common/util.c:765 +msgid "Finland" +msgstr "芬蘭" + +#: src/common/util.c:766 +msgid "Fiji" +msgstr "斐濟" + +#: src/common/util.c:767 +msgid "Falkland Islands" +msgstr "福克蘭群島" + +#: src/common/util.c:768 +msgid "Micronesia" +msgstr "密克羅尼西亞" + +#: src/common/util.c:769 +msgid "Faroe Islands" +msgstr "法羅群島" + +#: src/common/util.c:770 +msgid "France" +msgstr "法國" + +#: src/common/util.c:771 +msgid "Gabon" +msgstr "加彭" + +#: src/common/util.c:772 +msgid "Great Britain" +msgstr "大不列顛" + +#: src/common/util.c:773 +msgid "Grenada" +msgstr "格瑞納達" + +#: src/common/util.c:774 +msgid "Georgia" +msgstr "喬治亞" + +#: src/common/util.c:775 +msgid "French Guiana" +msgstr "法屬圭亞那" + +#: src/common/util.c:776 +msgid "British Channel Isles" +msgstr "不列顛海峽群島" + +#: src/common/util.c:777 +msgid "Ghana" +msgstr "迦納" + +#: src/common/util.c:778 +msgid "Gibraltar" +msgstr "直布羅陀" + +#: src/common/util.c:779 +msgid "Greenland" +msgstr "格陵蘭" + +#: src/common/util.c:780 +msgid "Gambia" +msgstr "甘比亞" + +#: src/common/util.c:781 +msgid "Guinea" +msgstr "幾內亞" + +#: src/common/util.c:782 +msgid "Government" +msgstr "政府部門" + +#: src/common/util.c:783 +msgid "Guadeloupe" +msgstr "瓜德魯普島" + +#: src/common/util.c:784 +msgid "Equatorial Guinea" +msgstr "赤道幾內亞" + +#: src/common/util.c:785 +msgid "Greece" +msgstr "希臘" + +#: src/common/util.c:786 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "南喬治亞及南桑威奇群島" + +#: src/common/util.c:787 +msgid "Guatemala" +msgstr "瓜地馬拉" + +#: src/common/util.c:788 +msgid "Guam" +msgstr "關島" + +#: src/common/util.c:789 +msgid "Guinea-Bissau" +msgstr "幾內亞比索" + +#: src/common/util.c:790 +msgid "Guyana" +msgstr "蓋亞那" + +#: src/common/util.c:791 +msgid "Hong Kong" +msgstr "香港" + +#: src/common/util.c:792 +msgid "Heard and McDonald Islands" +msgstr "赫德及麥當勞群島" + +#: src/common/util.c:793 +msgid "Honduras" +msgstr "宏都拉斯" + +#: src/common/util.c:794 +msgid "Croatia" +msgstr "克羅埃西亞" + +#: src/common/util.c:795 +msgid "Haiti" +msgstr "海地" + +#: src/common/util.c:796 +msgid "Hungary" +msgstr "匈牙利" + +#: src/common/util.c:797 +msgid "Indonesia" +msgstr "印尼" + +#: src/common/util.c:798 +msgid "Ireland" +msgstr "愛爾蘭" + +#: src/common/util.c:799 +msgid "Israel" +msgstr "以色列" + +#: src/common/util.c:800 +msgid "Isle of Man" +msgstr "曼島" + +#: src/common/util.c:801 +msgid "India" +msgstr "印度" + +#: src/common/util.c:802 +msgid "Informational" +msgstr "資訊的" + +#: src/common/util.c:803 +msgid "International" +msgstr "國際的" + +#: src/common/util.c:804 +msgid "British Indian Ocean Territory" +msgstr "英屬印度洋地區" + +#: src/common/util.c:805 +msgid "Iraq" +msgstr "伊拉克" + +#: src/common/util.c:806 +msgid "Iran" +msgstr "伊朗" + +#: src/common/util.c:807 +msgid "Iceland" +msgstr "冰島" + +#: src/common/util.c:808 +msgid "Italy" +msgstr "意大利" + +#: src/common/util.c:809 +msgid "Jersey" +msgstr "澤西" + +#: src/common/util.c:810 +msgid "Jamaica" +msgstr "牙買加" + +#: src/common/util.c:811 +msgid "Jordan" +msgstr "約旦" + +#: src/common/util.c:812 +msgid "Company Jobs" +msgstr "" + +#: src/common/util.c:813 +msgid "Japan" +msgstr "日本" + +#: src/common/util.c:814 +msgid "Kenya" +msgstr "肯亞" + +#: src/common/util.c:815 +msgid "Kyrgyzstan" +msgstr "吉爾吉斯" + +#: src/common/util.c:816 +msgid "Cambodia" +msgstr "柬埔寨" + +#: src/common/util.c:817 +msgid "Kiribati" +msgstr "吉里巴斯" + +#: src/common/util.c:818 +msgid "Comoros" +msgstr "葛摩" + +#: src/common/util.c:819 +msgid "St. Kitts and Nevis" +msgstr "聖克里斯多福" + +#: src/common/util.c:820 +msgid "North Korea" +msgstr "北韓" + +#: src/common/util.c:821 +msgid "South Korea" +msgstr "南韓" + +#: src/common/util.c:822 +msgid "Kuwait" +msgstr "科威特" + +#: src/common/util.c:823 +msgid "Cayman Islands" +msgstr "開曼群島" + +#: src/common/util.c:824 +msgid "Kazakhstan" +msgstr "哈薩克" + +#: src/common/util.c:825 +msgid "Laos" +msgstr "寮國" + +#: src/common/util.c:826 +msgid "Lebanon" +msgstr "黎巴嫩" + +#: src/common/util.c:827 +msgid "Saint Lucia" +msgstr "聖露西亞" + +#: src/common/util.c:828 +msgid "Liechtenstein" +msgstr "列支敦斯登" + +#: src/common/util.c:829 +msgid "Sri Lanka" +msgstr "斯里蘭卡" + +#: src/common/util.c:830 +msgid "Liberia" +msgstr "賴比瑞亞" + +#: src/common/util.c:831 +msgid "Lesotho" +msgstr "賴索托" + +#: src/common/util.c:832 +msgid "Lithuania" +msgstr "立陶宛" + +#: src/common/util.c:833 +msgid "Luxembourg" +msgstr "盧森堡" + +#: src/common/util.c:834 +msgid "Latvia" +msgstr "拉脫維亞" + +#: src/common/util.c:835 +msgid "Libya" +msgstr "利比亞" + +#: src/common/util.c:836 +msgid "Morocco" +msgstr "摩洛哥" + +#: src/common/util.c:837 +msgid "Monaco" +msgstr "摩納哥" + +#: src/common/util.c:838 +msgid "Moldova" +msgstr "摩爾多瓦" + +#: src/common/util.c:839 +msgid "Montenegro" +msgstr "" + +#: src/common/util.c:840 +msgid "United States Medical" +msgstr "美國醫療組織" + +#: src/common/util.c:841 +msgid "Madagascar" +msgstr "馬達加斯加" + +#: src/common/util.c:842 +msgid "Marshall Islands" +msgstr "馬紹爾群島" + +#: src/common/util.c:843 +msgid "Military" +msgstr "軍事" + +#: src/common/util.c:844 +msgid "Macedonia" +msgstr "馬其頓" + +#: src/common/util.c:845 +msgid "Mali" +msgstr "馬利" + +#: src/common/util.c:846 +msgid "Myanmar" +msgstr "緬甸" + +#: src/common/util.c:847 +msgid "Mongolia" +msgstr "蒙古" + +#: src/common/util.c:848 +msgid "Macau" +msgstr "澳門" + +#: src/common/util.c:849 +msgid "Mobile Devices" +msgstr "行動裝置" + +#: src/common/util.c:850 +msgid "Northern Mariana Islands" +msgstr "北馬里亞納群島" + +#: src/common/util.c:851 +msgid "Martinique" +msgstr "法屬馬丁尼克" + +#: src/common/util.c:852 +msgid "Mauritania" +msgstr "茅利塔尼亞" + +#: src/common/util.c:853 +msgid "Montserrat" +msgstr "蒙瑟拉特島" + +#: src/common/util.c:854 +msgid "Malta" +msgstr "馬爾他" + +#: src/common/util.c:855 +msgid "Mauritius" +msgstr "模里西斯" + +#: src/common/util.c:856 +msgid "Museums" +msgstr "" + +#: src/common/util.c:857 +msgid "Maldives" +msgstr "馬爾地夫" + +#: src/common/util.c:858 +msgid "Malawi" +msgstr "馬拉威" + +#: src/common/util.c:859 +msgid "Mexico" +msgstr "墨西哥" + +#: src/common/util.c:860 +msgid "Malaysia" +msgstr "馬來西亞" + +#: src/common/util.c:861 +msgid "Mozambique" +msgstr "莫三比克" + +#: src/common/util.c:862 +msgid "Namibia" +msgstr "納米比亞" + +#: src/common/util.c:863 +msgid "Individual's Names" +msgstr "" + +#: src/common/util.c:864 +msgid "New Caledonia" +msgstr "新喀里多尼亞島" + +#: src/common/util.c:865 +msgid "Niger" +msgstr "尼日" + +#: src/common/util.c:866 +msgid "Internic Network" +msgstr "Internic 網路" + +#: src/common/util.c:867 +msgid "Norfolk Island" +msgstr "諾福克島" + +#: src/common/util.c:868 +msgid "Nigeria" +msgstr "奈及利亞" + +#: src/common/util.c:869 +msgid "Nicaragua" +msgstr "尼加拉瓜" + +#: src/common/util.c:870 +msgid "Netherlands" +msgstr "荷蘭" + +#: src/common/util.c:871 +msgid "Norway" +msgstr "挪威" + +#: src/common/util.c:872 +msgid "Nepal" +msgstr "尼泊爾" + +#: src/common/util.c:873 +msgid "Nauru" +msgstr "諾魯" + +#: src/common/util.c:874 +msgid "Niue" +msgstr "紐威島" + +#: src/common/util.c:875 +msgid "New Zealand" +msgstr "紐西蘭" + +#: src/common/util.c:876 +msgid "Oman" +msgstr "阿曼" + +#: src/common/util.c:877 +msgid "Internic Non-Profit Organization" +msgstr "Internic 非營利性組織" + +#: src/common/util.c:878 +msgid "Panama" +msgstr "巴拿馬" + +#: src/common/util.c:879 +msgid "Peru" +msgstr "秘魯" + +#: src/common/util.c:880 +msgid "French Polynesia" +msgstr "法屬波里尼西亞" + +#: src/common/util.c:881 +msgid "Papua New Guinea" +msgstr "巴布亞紐幾內亞" + +#: src/common/util.c:882 +msgid "Philippines" +msgstr "菲律賓" + +#: src/common/util.c:883 +msgid "Pakistan" +msgstr "巴基斯坦" + +#: src/common/util.c:884 +msgid "Poland" +msgstr "波蘭" + +#: src/common/util.c:885 +msgid "St. Pierre and Miquelon" +msgstr "聖匹及密啟倫群島" + +#: src/common/util.c:886 +msgid "Pitcairn" +msgstr "皮特康島" + +#: src/common/util.c:887 +msgid "Puerto Rico" +msgstr "波多黎各" + +#: src/common/util.c:888 +msgid "Professions" +msgstr "職稱" + +#: src/common/util.c:889 +msgid "Palestinian Territory" +msgstr "巴勒斯坦地區" + +#: src/common/util.c:890 +msgid "Portugal" +msgstr "葡萄牙" + +#: src/common/util.c:891 +msgid "Palau" +msgstr "帛琉群島" + +#: src/common/util.c:892 +msgid "Paraguay" +msgstr "巴拉圭" + +#: src/common/util.c:893 +msgid "Qatar" +msgstr "卡達" + +#: src/common/util.c:894 +msgid "Reunion" +msgstr "留尼旺" + +#: src/common/util.c:895 +msgid "Romania" +msgstr "羅馬尼亞" + +#: src/common/util.c:896 +msgid "Old School ARPAnet" +msgstr "教育 ARPAnet" + +#: src/common/util.c:897 +msgid "Serbia" +msgstr "" + +#: src/common/util.c:898 +msgid "Russian Federation" +msgstr "俄羅斯聯邦" + +#: src/common/util.c:899 +msgid "Rwanda" +msgstr "盧安達" + +#: src/common/util.c:900 +msgid "Saudi Arabia" +msgstr "沙烏地阿拉伯" + +#: src/common/util.c:901 +msgid "Solomon Islands" +msgstr "所羅門群島" + +#: src/common/util.c:902 +msgid "Seychelles" +msgstr "塞席爾群島" + +#: src/common/util.c:903 +msgid "Sudan" +msgstr "蘇丹" + +#: src/common/util.c:904 +msgid "Sweden" +msgstr "瑞典" + +#: src/common/util.c:905 +msgid "Singapore" +msgstr "新加坡" + +#: src/common/util.c:906 +msgid "St. Helena" +msgstr "聖赫勒拿島" + +#: src/common/util.c:907 +msgid "Slovenia" +msgstr "斯洛凡尼亞" + +#: src/common/util.c:908 +msgid "Svalbard and Jan Mayen Islands" +msgstr "冷岸及央麥恩群島" + +#: src/common/util.c:909 +msgid "Slovak Republic" +msgstr "斯洛伐克共和國" + +#: src/common/util.c:910 +msgid "Sierra Leone" +msgstr "獅子山" + +#: src/common/util.c:911 +msgid "San Marino" +msgstr "聖馬利諾" + +#: src/common/util.c:912 +msgid "Senegal" +msgstr "塞內加爾" + +#: src/common/util.c:913 +msgid "Somalia" +msgstr "索馬利亞" + +#: src/common/util.c:914 +msgid "Suriname" +msgstr "蘇利南" + +#: src/common/util.c:915 +msgid "South Sudan" +msgstr "" + +#: src/common/util.c:916 +msgid "Sao Tome and Principe" +msgstr "聖多美和普林西比" + +#: src/common/util.c:917 +msgid "Former USSR" +msgstr "前蘇聯" + +#: src/common/util.c:918 +msgid "El Salvador" +msgstr "薩爾瓦多" + +#: src/common/util.c:919 +msgid "Syria" +msgstr "敘利亞" + +#: src/common/util.c:920 +msgid "Swaziland" +msgstr "史瓦濟蘭" + +#: src/common/util.c:921 +msgid "Turks and Caicos Islands" +msgstr "土克斯及開科斯群島" + +#: src/common/util.c:922 +msgid "Chad" +msgstr "查德" + +#: src/common/util.c:923 +msgid "Internet Communication Services" +msgstr "" + +#: src/common/util.c:924 +msgid "French Southern Territories" +msgstr "法屬南部地區" + +#: src/common/util.c:925 +msgid "Togo" +msgstr "多哥" + +#: src/common/util.c:926 +msgid "Thailand" +msgstr "泰國" + +#: src/common/util.c:927 +msgid "Tajikistan" +msgstr "塔吉克" + +#: src/common/util.c:928 +msgid "Tokelau" +msgstr "托克勞群島" + +#: src/common/util.c:929 src/common/util.c:933 +msgid "East Timor" +msgstr "東帝汶" + +#: src/common/util.c:930 +msgid "Turkmenistan" +msgstr "土庫曼" + +#: src/common/util.c:931 +msgid "Tunisia" +msgstr "突尼西亞" + +#: src/common/util.c:932 +msgid "Tonga" +msgstr "東加" + +#: src/common/util.c:934 +msgid "Turkey" +msgstr "土耳其" + +#: src/common/util.c:935 +msgid "Travel and Tourism" +msgstr "" + +#: src/common/util.c:936 +msgid "Trinidad and Tobago" +msgstr "千里達托貝哥" + +#: src/common/util.c:937 +msgid "Tuvalu" +msgstr "吐瓦魯" + +#: src/common/util.c:938 +msgid "Taiwan" +msgstr "臺灣" + +#: src/common/util.c:939 +msgid "Tanzania" +msgstr "坦尚尼亞" + +#: src/common/util.c:940 +msgid "Ukraine" +msgstr "烏克蘭" + +#: src/common/util.c:941 +msgid "Uganda" +msgstr "烏干達" + +#: src/common/util.c:942 +msgid "United Kingdom" +msgstr "英國" + +#: src/common/util.c:943 +msgid "United States of America" +msgstr "美國" + +#: src/common/util.c:944 +msgid "Uruguay" +msgstr "烏拉圭" + +#: src/common/util.c:945 +msgid "Uzbekistan" +msgstr "烏茲別克" + +#: src/common/util.c:946 +msgid "Vatican City State" +msgstr "梵蒂岡" + +#: src/common/util.c:947 +msgid "St. Vincent and the Grenadines" +msgstr "聖文森及格瑞那丁" + +#: src/common/util.c:948 +msgid "Venezuela" +msgstr "委內瑞拉" + +#: src/common/util.c:949 +msgid "British Virgin Islands" +msgstr "英屬維京群島" + +#: src/common/util.c:950 +msgid "US Virgin Islands" +msgstr "美屬維京群島" + +#: src/common/util.c:951 +msgid "Vietnam" +msgstr "越南" + +#: src/common/util.c:952 +msgid "Vanuatu" +msgstr "萬那杜" + +#: src/common/util.c:953 +msgid "Wallis and Futuna Islands" +msgstr "瓦里斯及富都拿群島" + +#: src/common/util.c:954 +msgid "Samoa" +msgstr "薩摩亞" + +#: src/common/util.c:955 +msgid "Adult Entertainment" +msgstr "成人娛樂" + +#: src/common/util.c:956 +msgid "Yemen" +msgstr "葉門" + +#: src/common/util.c:957 +msgid "Mayotte" +msgstr "馬爾他群島" + +#: src/common/util.c:958 +msgid "Yugoslavia" +msgstr "南斯拉夫" + +#: src/common/util.c:959 +msgid "South Africa" +msgstr "南非" + +#: src/common/util.c:960 +msgid "Zambia" +msgstr "尚比亞" + +#: src/common/util.c:961 +msgid "Zimbabwe" +msgstr "辛巴威" + +#: src/common/dbus/dbus-client.c:82 +msgid "Couldn't connect to session bus" +msgstr "無法連接到執行階段匯流排" + +#: src/common/dbus/dbus-client.c:104 +msgid "Failed to complete NameHasOwner" +msgstr "" + +#: src/common/dbus/dbus-client.c:153 src/common/dbus/dbus-client.c:170 +msgid "Failed to complete Command" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "remote access" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:32 +msgid "plugin for remote access using DBUS" +msgstr "使用 DBUS 做為遠端存取外掛程式" + +#: src/common/dbus/dbus-plugin.c:899 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:916 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "取得 %s 失敗: %s\n" + +#: src/fe-gtk/ascii.c:126 src/fe-gtk/menu.c:1827 +msgid "Character Chart" +msgstr "字元集" + +#: src/fe-gtk/banlist.c:49 +msgid "Bans" +msgstr "封禁" + +#: src/fe-gtk/banlist.c:58 +msgid "Exempts" +msgstr "" + +#: src/fe-gtk/banlist.c:59 +msgid "Exempt" +msgstr "" + +#: src/fe-gtk/banlist.c:67 +msgid "Invites" +msgstr "" + +#: src/fe-gtk/banlist.c:68 src/fe-gtk/ignoregui.c:164 +msgid "Invite" +msgstr "邀請" + +#: src/fe-gtk/banlist.c:76 +msgid "Quiets" +msgstr "" + +#: src/fe-gtk/banlist.c:77 +msgid "Quiet" +msgstr "" + +#. poor way to get which is selected but it works +#: src/fe-gtk/banlist.c:354 src/fe-gtk/banlist.c:388 +msgid "Copy mask" +msgstr "" + +#: src/fe-gtk/banlist.c:357 +#, c-format +msgid "%s on %s by %s" +msgstr "" + +#: src/fe-gtk/banlist.c:389 +msgid "Copy entry" +msgstr "" + +#: src/fe-gtk/banlist.c:459 src/fe-gtk/chanlist.c:292 +#: src/fe-gtk/plugin-tray.c:180 +msgid "Not connected." +msgstr "並未連線。" + +#: src/fe-gtk/banlist.c:538 src/fe-gtk/banlist.c:621 +msgid "You must select some bans." +msgstr "您必須選擇一些被封禁者。" + +#: src/fe-gtk/banlist.c:568 +#, c-format +msgid "Are you sure you want to remove all listed items in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:726 +msgid "Type" +msgstr "" + +#: src/fe-gtk/banlist.c:727 src/fe-gtk/ignoregui.c:158 +msgid "Mask" +msgstr "遮罩" + +#: src/fe-gtk/banlist.c:728 +msgid "From" +msgstr "從" + +#: src/fe-gtk/banlist.c:729 +msgid "Date" +msgstr "日期" + +#: src/fe-gtk/banlist.c:785 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "在聊天室分頁中您只能開啟封禁清單視窗。" + +#: src/fe-gtk/banlist.c:808 +#, c-format +msgid "Ban List (%s) - %s" +msgstr "" + +#: src/fe-gtk/banlist.c:843 src/fe-gtk/notifygui.c:429 +msgid "Remove" +msgstr "刪除" + +#: src/fe-gtk/banlist.c:845 +msgid "Crop" +msgstr "剪切" + +#: src/fe-gtk/banlist.c:849 +msgid "Refresh" +msgstr "刷新" + +#: src/fe-gtk/chanlist.c:98 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "" + +#: src/fe-gtk/chanlist.c:515 src/fe-gtk/menu.c:1347 src/fe-gtk/urlgrab.c:148 +msgid "Select an output filename" +msgstr "選擇輸出檔名" + +#: src/fe-gtk/chanlist.c:624 src/fe-gtk/chanlist.c:812 +msgid "_Join Channel" +msgstr "" + +#: src/fe-gtk/chanlist.c:626 +msgid "_Copy Channel Name" +msgstr "" + +#: src/fe-gtk/chanlist.c:628 +msgid "Copy _Topic Text" +msgstr "" + +#: src/fe-gtk/chanlist.c:720 +#, c-format +msgid "Channel List (%s) - %s" +msgstr "" + +#: src/fe-gtk/chanlist.c:794 +msgid "_Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:800 +msgid "_Download List" +msgstr "" + +#: src/fe-gtk/chanlist.c:806 +msgid "Save _List..." +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:819 +msgid "Show only:" +msgstr "" + +#: src/fe-gtk/chanlist.c:831 +msgid "channels with" +msgstr "" + +#: src/fe-gtk/chanlist.c:844 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:856 +msgid "users." +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:862 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:874 +msgid "Channel name" +msgstr "頻道名稱" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:894 +msgid "Search type:" +msgstr "" + +#: src/fe-gtk/chanlist.c:901 +msgid "Simple Search" +msgstr "簡易搜尋" + +#: src/fe-gtk/chanlist.c:902 +msgid "Pattern Match (Wildcards)" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 +msgid "Regular Expression" +msgstr "" + +#. ============================================================= +#: src/fe-gtk/chanlist.c:913 src/fe-gtk/maingui.c:2888 +msgid "Find:" +msgstr "尋找:" + +#: src/fe-gtk/dccgui.c:141 +#, c-format +msgid "Send file to %s" +msgstr "給 %s 發送檔案" + +#. unknown error +#: src/fe-gtk/dccgui.c:525 +msgid "That file is not resumable." +msgstr "該檔案不可續傳。" + +#: src/fe-gtk/dccgui.c:529 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "不能存取檔案:%s\n%s。\n無法續傳。" + +#: src/fe-gtk/dccgui.c:536 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "下載目錄中的檔案比提供的檔案大,無法續傳。" + +#: src/fe-gtk/dccgui.c:540 +msgid "Cannot resume the same file from two people." +msgstr "不能從兩人那裡續傳同一檔案" + +#: src/fe-gtk/dccgui.c:803 +#, c-format +msgid "Uploads and Downloads - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:820 src/fe-gtk/dccgui.c:1063 src/fe-gtk/notifygui.c:124 +msgid "Status" +msgstr "狀態" + +#: src/fe-gtk/dccgui.c:821 src/fe-gtk/plugingui.c:66 +msgid "File" +msgstr "檔案" + +#: src/fe-gtk/dccgui.c:826 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:851 src/fe-gtk/menu.c:1796 src/fe-gtk/setup.c:217 +msgid "Both" +msgstr "兩者" + +#: src/fe-gtk/dccgui.c:857 +msgid "Uploads" +msgstr "上傳" + +#: src/fe-gtk/dccgui.c:863 +msgid "Downloads" +msgstr "下載" + +#: src/fe-gtk/dccgui.c:868 +msgid "Details" +msgstr "詳細資訊" + +#: src/fe-gtk/dccgui.c:879 +msgid "File:" +msgstr "檔案:" + +#: src/fe-gtk/dccgui.c:880 +msgid "Address:" +msgstr "位址:" + +#: src/fe-gtk/dccgui.c:886 src/fe-gtk/dccgui.c:1087 +msgid "Abort" +msgstr "中止" + +#: src/fe-gtk/dccgui.c:887 src/fe-gtk/dccgui.c:1088 +msgid "Accept" +msgstr "接受" + +#: src/fe-gtk/dccgui.c:888 +msgid "Resume" +msgstr "續傳" + +#: src/fe-gtk/dccgui.c:890 +msgid "Open Folder..." +msgstr "開啟文件夾..." + +#: src/fe-gtk/dccgui.c:1050 +#, c-format +msgid "DCC Chat List - %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:1065 +msgid "Recv" +msgstr "接收" + +#: src/fe-gtk/dccgui.c:1066 +msgid "Sent" +msgstr "已發送" + +#: src/fe-gtk/dccgui.c:1067 +msgid "Start Time" +msgstr "開始時間" + +#: src/fe-gtk/editlist.c:358 src/fe-gtk/fkeys.c:830 +msgid "Add" +msgstr "" + +#: src/fe-gtk/editlist.c:360 src/fe-gtk/fkeys.c:832 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "刪除" + +#: src/fe-gtk/editlist.c:362 src/fe-gtk/fkeys.c:834 +msgid "Cancel" +msgstr "取消" + +#: src/fe-gtk/editlist.c:364 src/fe-gtk/fkeys.c:836 +msgid "Save" +msgstr "儲存" + +#: src/fe-gtk/fe-gtk.c:81 src/fe-text/fe-text.c:467 +msgid "Don't auto connect to servers" +msgstr "不要自動與伺服器連線" + +#: src/fe-gtk/fe-gtk.c:82 src/fe-text/fe-text.c:468 +msgid "Use a different config directory" +msgstr "使用不同的設定目錄" + +#: src/fe-gtk/fe-gtk.c:83 src/fe-text/fe-text.c:469 +msgid "Don't auto load any plugins" +msgstr "不自動載入任何外掛程式" + +#: src/fe-gtk/fe-gtk.c:84 src/fe-text/fe-text.c:470 +msgid "Show plugin/script auto-load directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:85 src/fe-text/fe-text.c:471 +msgid "Show user config directory" +msgstr "顯示使用者設定目錄" + +#: src/fe-gtk/fe-gtk.c:86 src/fe-gtk/fe-gtk.c:93 src/fe-text/fe-text.c:474 +msgid "Open an irc://server:port/channel?key URL" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:87 src/fe-gtk/setup.c:268 +msgid "Execute command:" +msgstr "執行命令:" + +#: src/fe-gtk/fe-gtk.c:89 +msgid "Open URL or execute command in an existing HexChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:91 +msgid "level" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:92 src/fe-text/fe-text.c:473 +msgid "Show version information" +msgstr "顯示版本資訊" + +#: src/fe-gtk/fe-gtk.c:285 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "開啟字型失敗:\n\n%s" + +#: src/fe-gtk/fe-gtk.c:715 +msgid "Search buffer is empty.\n" +msgstr "搜索緩衝區目前無內容。\n" + +#: src/fe-gtk/fe-gtk.c:826 +#, c-format +msgid "%d bytes" +msgstr "%d 位元組" + +#: src/fe-gtk/fe-gtk.c:827 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "網路傳送佇列: %d 位元組" + +#: src/fe-gtk/fkeys.c:141 +msgid "" +"The Run Command action runs the data in Data 1 as if it had been typed " +"into the entry box where you pressed the key sequence. Thus it can contain " +"text (which will be sent to the channel/person), commands or user commands. " +"When run all \\n characters in Data 1 are used to deliminate separate " +"commands so it is possible to run more than one command. If you want a \\ " +"in the actual text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:143 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1" +" to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position. Set Data 1 to auto to " +"switch to the page with the most recent and important activity (queries " +"first, then channels with hilight, channels with dialogue, channels with " +"other data)" +msgstr "" + +#: src/fe-gtk/fkeys.c:145 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "「Insert in Buffer」命令在目前游標處把資料 1 中的內容插入到接受按鍵序列的輸入格中" + +#: src/fe-gtk/fkeys.c:147 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one" +" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:149 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered " +"to the contents of Data 1" +msgstr "「Set Buffer」命令把接受按鍵序列後的輸入格設定成資料 1 中的內容" + +#: src/fe-gtk/fkeys.c:151 +msgid "" +"The Last Command command sets the entry to contain the last command " +"entered - the same as pressing up in a shell" +msgstr "「Last Command」命令把輸入格設為前一個命令 - 和在終端中按向上箭頭效果相同" + +#: src/fe-gtk/fkeys.c:153 +msgid "" +"The Next Command command sets the entry to contain the next command " +"entered - the same as pressing down in a shell" +msgstr "「Next Command」命令把輸入格設為下一個命令 - 和在終端中按向下箭頭效果相同" + +#: src/fe-gtk/fkeys.c:155 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the" +" last nick, not the next" +msgstr "該命令改變輸入格中文字,來完成未輸入完畢的使用者暱稱或命令。如果資料 1 被設定,那麼,雙擊 tab 鍵會選擇最後一個暱稱,而非下一個" + +#: src/fe-gtk/fkeys.c:157 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set" +" to anything it will scroll up, else it scrolls down" +msgstr "該命令在暱稱清單中上下移動。如果資料 1 被設定成任意值,它會上移,否則下移" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "該命令對照替換清單來檢查輸入的最後一詞,若找到符合者就代替它" + +#: src/fe-gtk/fkeys.c:161 +msgid "This command moves the front tab left by one" +msgstr "該命令把最上面的分頁向左移一格" + +#: src/fe-gtk/fkeys.c:163 +msgid "This command moves the front tab right by one" +msgstr "該命令把最上面的分頁向右移一格" + +#: src/fe-gtk/fkeys.c:165 +msgid "This command moves the current tab family to the left" +msgstr "該命令把目前分頁向左移一格" + +#: src/fe-gtk/fkeys.c:167 +msgid "This command moves the current tab family to the right" +msgstr "該命令把目前分頁向右移一格" + +#: src/fe-gtk/fkeys.c:169 +msgid "Push input line into history but doesn't send to server" +msgstr "把輸入列存到歷史中,但不發送給伺服器" + +#: src/fe-gtk/fkeys.c:218 +msgid "There was an error loading key bindings configuration" +msgstr "載入鍵盤映射配置時出錯" + +#: src/fe-gtk/fkeys.c:540 +msgid "Select a row to get help information on its Action." +msgstr "" + +#: src/fe-gtk/fkeys.c:812 +#, c-format +msgid "Keyboard Shortcuts - %s" +msgstr "" + +#: src/fe-gtk/gtkutil.c:130 +msgid "Cannot write to that file." +msgstr "無法寫入該檔案。" + +#: src/fe-gtk/gtkutil.c:134 +msgid "Cannot read that file." +msgstr "無法讀取該檔案。" + +#. duplicate, ignore +#: src/fe-gtk/ignoregui.c:100 src/fe-gtk/ignoregui.c:243 +msgid "That mask already exists." +msgstr "該遮罩已存在。" + +#: src/fe-gtk/ignoregui.c:160 +msgid "Private" +msgstr "私人" + +#: src/fe-gtk/ignoregui.c:161 +msgid "Notice" +msgstr "通知" + +#: src/fe-gtk/ignoregui.c:162 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:163 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:165 +msgid "Unignore" +msgstr "取消忽略" + +#: src/fe-gtk/ignoregui.c:293 +msgid "Are you sure you want to remove all ignores?" +msgstr "" + +#: src/fe-gtk/ignoregui.c:303 +msgid "Enter mask to ignore:" +msgstr "輸入要忽略的遮罩:" + +#: src/fe-gtk/ignoregui.c:350 +#, c-format +msgid "Ignore list - %s" +msgstr "" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "忽略統計:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "聊天室:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "私人:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "通知:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "邀請:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:425 +msgid "Add..." +msgstr "加入..." + +#: src/fe-gtk/joind.c:91 +msgid "Channel name too short, try again." +msgstr "聊天室名稱太短,再試一次。" + +#: src/fe-gtk/joind.c:133 +#, c-format +msgid "Connection Complete - %s" +msgstr "" + +#: src/fe-gtk/joind.c:162 +#, c-format +msgid "Connection to %s complete." +msgstr "完成到 %s 的連線。" + +#: src/fe-gtk/joind.c:171 +msgid "" +"In the server list window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:177 +msgid "What would you like to do next?" +msgstr "您接下來想要做什麼?" + +#: src/fe-gtk/joind.c:182 +msgid "_Nothing, I'll join a channel later." +msgstr "沒事,我稍後再加入聊天室。(_N)" + +#: src/fe-gtk/joind.c:191 +msgid "_Join this channel:" +msgstr "加入此聊天室(_J):" + +#: src/fe-gtk/joind.c:203 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "如果您知道想要加入的聊天室名稱,在這裡輸入它。" + +#: src/fe-gtk/joind.c:210 +msgid "O_pen the channel list." +msgstr "" + +#: src/fe-gtk/joind.c:216 +msgid "Retrieving the channel list may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:223 +msgid "_Always show this dialog after connecting." +msgstr "總是在連線之後顯示此對話框。(_A)" + +#: src/fe-gtk/maingui.c:386 +msgid "Dialog with" +msgstr "交談與" + +#: src/fe-gtk/maingui.c:682 +#, c-format +msgid "Topic for %s is: %s" +msgstr "%s 的話題是:%s" + +#: src/fe-gtk/maingui.c:687 +msgid "No topic is set" +msgstr "沒有設定話題" + +#: src/fe-gtk/maingui.c:1076 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "這台伺服器仍然有 %d 個與它相關的聊天室或對話。要全部關閉它們嗎?" + +#: src/fe-gtk/maingui.c:1177 +msgid "Quit HexChat?" +msgstr "您要結束 HexChat 嗎?" + +#: src/fe-gtk/maingui.c:1197 +msgid "Don't ask next time." +msgstr "不要再詢問" + +#: src/fe-gtk/maingui.c:1203 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "" + +#: src/fe-gtk/maingui.c:1205 +msgid "Are you sure you want to quit?" +msgstr "您確定要結束嗎?" + +#: src/fe-gtk/maingui.c:1207 +msgid "Some file transfers are still active." +msgstr "還有檔案傳送在進行" + +#: src/fe-gtk/maingui.c:1225 +msgid "_Minimize to Tray" +msgstr "_最小化至工作列" + +#: src/fe-gtk/maingui.c:1441 +msgid "Insert Attribute or Color Code" +msgstr "插入屬性或顏色代碼" + +#: src/fe-gtk/maingui.c:1443 +msgid "<b>Bold</b>" +msgstr "<b>粗體</b>" + +#: src/fe-gtk/maingui.c:1444 +msgid "<u>Underline</u>" +msgstr "<u>底線</u>" + +#: src/fe-gtk/maingui.c:1445 +msgid "<i>Italic</i>" +msgstr "" + +#: src/fe-gtk/maingui.c:1446 +msgid "Normal" +msgstr "正常" + +#: src/fe-gtk/maingui.c:1448 +msgid "Colors 0-7" +msgstr "顏色 0-7" + +#: src/fe-gtk/maingui.c:1458 +msgid "Colors 8-15" +msgstr "顏色 8-15" + +#: src/fe-gtk/maingui.c:1504 +msgid "_Settings" +msgstr "_設定" + +#: src/fe-gtk/maingui.c:1506 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1507 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1510 +msgid "Strip _Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:1511 +msgid "_Hide Join/Part Messages" +msgstr "" + +#: src/fe-gtk/maingui.c:1520 +msgid "_Extra Alerts" +msgstr "" + +#: src/fe-gtk/maingui.c:1522 +msgid "Beep on _Message" +msgstr "" + +#: src/fe-gtk/maingui.c:1524 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1526 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1566 src/fe-gtk/menu.c:2351 +msgid "_Detach" +msgstr "" + +#: src/fe-gtk/maingui.c:1568 src/fe-gtk/menu.c:2352 src/fe-gtk/menu.c:2357 +msgid "_Close" +msgstr "關閉(_C)" + +#: src/fe-gtk/maingui.c:1908 src/fe-gtk/maingui.c:2021 +msgid "User limit must be a number!\n" +msgstr "使用者限額必須是數字!\n" + +#: src/fe-gtk/maingui.c:2043 +msgid "Filter Colors" +msgstr "" + +#: src/fe-gtk/maingui.c:2044 +msgid "No outside messages" +msgstr "無室外訊息" + +#: src/fe-gtk/maingui.c:2045 +msgid "Topic Protection" +msgstr "話題保護" + +#: src/fe-gtk/maingui.c:2046 +msgid "Invite Only" +msgstr "僅邀請" + +#: src/fe-gtk/maingui.c:2047 +msgid "Moderated" +msgstr "監管的" + +#: src/fe-gtk/maingui.c:2048 +msgid "Ban List" +msgstr "封禁清單" + +#: src/fe-gtk/maingui.c:2050 +msgid "Keyword" +msgstr "密碼" + +#: src/fe-gtk/maingui.c:2062 +msgid "User Limit" +msgstr "使用者限額" + +#: src/fe-gtk/maingui.c:2579 +msgid "Enter new nickname:" +msgstr "輸入新暱稱:" + +#: src/fe-gtk/maingui.c:2802 +msgid "No results found." +msgstr "" + +#: src/fe-gtk/maingui.c:2898 +msgid "Search hit end or not found." +msgstr "" + +#: src/fe-gtk/maingui.c:2914 +msgid "_Highlight all" +msgstr "" + +#: src/fe-gtk/maingui.c:2920 +msgid "Highlight all occurrences, and underline the current occurrence." +msgstr "" + +#: src/fe-gtk/maingui.c:2922 +msgid "Mat_ch case" +msgstr "" + +#: src/fe-gtk/maingui.c:2927 +msgid "Perform a case-sensitive search." +msgstr "" + +#: src/fe-gtk/maingui.c:2929 +msgid "_Regex" +msgstr "" + +#: src/fe-gtk/maingui.c:2934 +msgid "Regard search string as a regular expression." +msgstr "" + +#: src/fe-gtk/menu.c:115 +msgid "Host unknown" +msgstr "未知主機" + +#: src/fe-gtk/menu.c:116 +msgid "Account unknown" +msgstr "" + +#. let the translators tweak this if need be +#: src/fe-gtk/menu.c:614 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:615 +msgid "Unknown" +msgstr "未知" + +#: src/fe-gtk/menu.c:620 src/fe-gtk/menu.c:624 +msgid "Real Name:" +msgstr "真實名稱:" + +#: src/fe-gtk/menu.c:631 +msgid "User:" +msgstr "使用者:" + +#: src/fe-gtk/menu.c:638 +msgid "Account:" +msgstr "" + +#: src/fe-gtk/menu.c:648 +msgid "Country:" +msgstr "國家:" + +#: src/fe-gtk/menu.c:654 +msgid "Server:" +msgstr "伺服器:" + +#: src/fe-gtk/menu.c:665 +#, c-format +msgid "%u minutes ago" +msgstr "%u 分鐘之前" + +#: src/fe-gtk/menu.c:667 src/fe-gtk/menu.c:670 +msgid "Last Msg:" +msgstr "最後訊息:" + +#: src/fe-gtk/menu.c:680 +msgid "Away Msg:" +msgstr "離開訊息:" + +#: src/fe-gtk/menu.c:737 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:862 +msgid "" +"The Menubar is now hidden. You can show it again by pressing Control+F9 or " +"right-clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:972 +msgid "Open Link in Browser" +msgstr "在瀏覽器中開啟連結" + +#: src/fe-gtk/menu.c:973 +msgid "Copy Selected Link" +msgstr "複製選取的連結" + +#: src/fe-gtk/menu.c:1034 src/fe-gtk/menu.c:1394 +msgid "Join Channel" +msgstr "加入聊天室" + +#: src/fe-gtk/menu.c:1038 +msgid "Part Channel" +msgstr "離開聊天室" + +#: src/fe-gtk/menu.c:1040 +msgid "Cycle Channel" +msgstr "離開聊天室,而後立即加入" + +#: src/fe-gtk/menu.c:1077 +msgid "_Autojoin" +msgstr "" + +#: src/fe-gtk/menu.c:1079 +msgid "Autojoin Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1113 src/fe-gtk/menu.c:1117 +msgid "_Auto-Connect" +msgstr "" + +#: src/fe-gtk/menu.c:1138 +#, c-format +msgid "User menu - %s" +msgstr "" + +#. sep +#: src/fe-gtk/menu.c:1147 +msgid "Edit This Menu" +msgstr "" + +#: src/fe-gtk/menu.c:1293 +msgid "Marker line disabled." +msgstr "" + +#: src/fe-gtk/menu.c:1299 +msgid "Marker line never set." +msgstr "" + +#: src/fe-gtk/menu.c:1303 +msgid "Marker line reset manually." +msgstr "" + +#: src/fe-gtk/menu.c:1305 +msgid "Marker line reset because exceeded scrollback limit." +msgstr "" + +#: src/fe-gtk/menu.c:1307 +msgid "Marker line reset by CLEAR command." +msgstr "" + +#: src/fe-gtk/menu.c:1309 +msgid "Marker line state unknown." +msgstr "" + +#: src/fe-gtk/menu.c:1396 +msgid "Retrieve channel list" +msgstr "" + +#: src/fe-gtk/menu.c:1462 +msgid " has been build without plugin support." +msgstr "" + +#: src/fe-gtk/menu.c:1470 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = HexChat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1486 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1497 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +"%u = selected users account" +msgstr "" + +#: src/fe-gtk/menu.c:1508 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" + +#: src/fe-gtk/menu.c:1519 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! in front of the command\n" +"indicates it should be sent to a\n" +"shell instead of HexChat" +msgstr "" + +#: src/fe-gtk/menu.c:1529 +#, c-format +msgid "User Defined Commands - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1538 +#, c-format +msgid "Userlist Popup menu - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1546 +#, c-format +msgid "Replace - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1547 +msgid "Replace with" +msgstr "以...替換" + +#: src/fe-gtk/menu.c:1554 +#, c-format +msgid "URL Handlers - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1574 +#, c-format +msgid "Userlist buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1582 +#, c-format +msgid "Dialog buttons - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1591 +#, c-format +msgid "CTCP Replies - %s" +msgstr "" + +#: src/fe-gtk/menu.c:1757 +msgid "He_xChat" +msgstr "" + +#: src/fe-gtk/menu.c:1758 +msgid "Network Li_st" +msgstr "" + +#: src/fe-gtk/menu.c:1761 +msgid "_New" +msgstr "新增(_N)" + +#: src/fe-gtk/menu.c:1762 +msgid "Server Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1763 +msgid "Channel Tab" +msgstr "" + +#: src/fe-gtk/menu.c:1764 +msgid "Server Window" +msgstr "" + +#: src/fe-gtk/menu.c:1765 +msgid "Channel Window" +msgstr "" + +#: src/fe-gtk/menu.c:1769 +msgid "_Load Plugin or Script" +msgstr "" + +#: src/fe-gtk/menu.c:1776 src/fe-gtk/plugin-tray.c:579 +msgid "_Quit" +msgstr "離開(_Q)" + +#. 15 +#: src/fe-gtk/menu.c:1778 +msgid "_View" +msgstr "檢視(_V)" + +#: src/fe-gtk/menu.c:1780 +msgid "_Menu Bar" +msgstr "_選單列" + +#: src/fe-gtk/menu.c:1781 +msgid "_Topic Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1782 +msgid "_User List" +msgstr "" + +#: src/fe-gtk/menu.c:1783 +msgid "U_ser List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1784 +msgid "M_ode Buttons" +msgstr "模式按鈕(_O)" + +#: src/fe-gtk/menu.c:1786 +msgid "_Channel Switcher" +msgstr "" + +#: src/fe-gtk/menu.c:1788 +msgid "_Tabs" +msgstr "分頁(_T)" + +#: src/fe-gtk/menu.c:1789 +msgid "T_ree" +msgstr "樹狀圖(_R)" + +#: src/fe-gtk/menu.c:1791 +msgid "_Network Meters" +msgstr "網路流量(_N)" + +#: src/fe-gtk/menu.c:1793 src/fe-gtk/setup.c:214 +msgid "Off" +msgstr "離線" + +#: src/fe-gtk/menu.c:1794 +msgid "Graph" +msgstr "圖形" + +#: src/fe-gtk/menu.c:1799 +msgid "_Fullscreen" +msgstr "" + +#: src/fe-gtk/menu.c:1801 +msgid "_Server" +msgstr "伺服器(_S)" + +#: src/fe-gtk/menu.c:1802 +msgid "_Disconnect" +msgstr "切斷連接(_D)" + +#: src/fe-gtk/menu.c:1803 +msgid "_Reconnect" +msgstr "重新連接(_R)" + +#: src/fe-gtk/menu.c:1804 +msgid "_Join a Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1805 +msgid "Channel _List" +msgstr "" + +#: src/fe-gtk/menu.c:1808 +msgid "Marked _Away" +msgstr "" + +#: src/fe-gtk/menu.c:1810 +msgid "_Usermenu" +msgstr "使用者選單(_U)" + +#. 40 +#: src/fe-gtk/menu.c:1812 +msgid "S_ettings" +msgstr "設定(_E)" + +#: src/fe-gtk/menu.c:1813 src/fe-gtk/plugin-tray.c:577 +msgid "_Preferences" +msgstr "偏好設定(_P)..." + +#: src/fe-gtk/menu.c:1815 +msgid "Auto Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1816 +msgid "CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1817 +msgid "Dialog Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1818 +msgid "Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/menu.c:1819 +msgid "Text Events" +msgstr "" + +#: src/fe-gtk/menu.c:1820 +msgid "URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1821 +msgid "User Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1822 +msgid "User List Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1823 +msgid "User List Popup" +msgstr "" + +#. 52 +#: src/fe-gtk/menu.c:1825 +msgid "_Window" +msgstr "視窗(_W)" + +#: src/fe-gtk/menu.c:1826 +msgid "_Ban List" +msgstr "" + +#: src/fe-gtk/menu.c:1828 +msgid "Direct Chat" +msgstr "" + +#: src/fe-gtk/menu.c:1829 +msgid "File _Transfers" +msgstr "" + +#: src/fe-gtk/menu.c:1830 +msgid "Friends List" +msgstr "" + +#: src/fe-gtk/menu.c:1831 +msgid "Ignore List" +msgstr "" + +#: src/fe-gtk/menu.c:1832 +msgid "_Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/menu.c:1833 +msgid "_Raw Log" +msgstr "" + +#. 61 +#: src/fe-gtk/menu.c:1834 +msgid "_URL Grabber" +msgstr "" + +#: src/fe-gtk/menu.c:1836 +msgid "Reset Marker Line" +msgstr "重置標記線" + +#: src/fe-gtk/menu.c:1837 +msgid "Move to Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1838 +msgid "_Copy Selection" +msgstr "" + +#: src/fe-gtk/menu.c:1839 +msgid "C_lear Text" +msgstr "清空文字(_L)" + +#: src/fe-gtk/menu.c:1840 +msgid "Save Text" +msgstr "" + +#: src/fe-gtk/menu.c:1842 +msgid "Search" +msgstr "搜尋" + +#: src/fe-gtk/menu.c:1843 +msgid "Search Text" +msgstr "" + +#: src/fe-gtk/menu.c:1844 +msgid "Search Next" +msgstr "" + +#: src/fe-gtk/menu.c:1845 +msgid "Search Previous" +msgstr "" + +#: src/fe-gtk/menu.c:1848 src/fe-gtk/menu.c:2343 +msgid "_Help" +msgstr "求助(_H)" + +#. 74 +#: src/fe-gtk/menu.c:1849 +msgid "_Contents" +msgstr "內容(_C)" + +#: src/fe-gtk/menu.c:1850 +msgid "_About" +msgstr "關於(_A)" + +#: src/fe-gtk/menu.c:2356 +msgid "_Attach" +msgstr "" + +#: src/fe-gtk/notifygui.c:123 src/fe-gtk/plugingui.c:64 +msgid "Name" +msgstr "名稱" + +#: src/fe-gtk/notifygui.c:126 +msgid "Last Seen" +msgstr "最後一次看到" + +#: src/fe-gtk/notifygui.c:168 +msgid "Offline" +msgstr "離線" + +#: src/fe-gtk/notifygui.c:188 src/fe-gtk/setup.c:286 +msgid "Never" +msgstr "從不" + +#: src/fe-gtk/notifygui.c:193 src/fe-gtk/notifygui.c:222 +#, c-format +msgid "%d minutes ago" +msgstr "%d 分鐘前" + +#: src/fe-gtk/notifygui.c:195 +msgid "An hour ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:197 +#, c-format +msgid "%d hours ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:212 +msgid "Online" +msgstr "上線" + +#: src/fe-gtk/notifygui.c:343 +msgid "Enter nickname to add:" +msgstr "輸入要新增的暱稱:" + +#: src/fe-gtk/notifygui.c:372 +msgid "Notify on these networks:" +msgstr "" + +#: src/fe-gtk/notifygui.c:383 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:409 +#, c-format +msgid "Friends List - %s" +msgstr "" + +#: src/fe-gtk/notifygui.c:433 +msgid "Open Dialog" +msgstr "打開對話視窗" + +#: src/fe-gtk/plugin-notification.c:111 +#, c-format +msgid "Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:123 +#, c-format +msgid "Channel message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:144 +#, c-format +msgid "File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:149 +#, c-format +msgid "Invited to channel by: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:154 +#, c-format +msgid "Notice from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-notification.c:158 +#, c-format +msgid "Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:177 +#, c-format +msgid "Connected to %u networks and %u channels - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:549 +msgid "_Restore Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:551 +msgid "_Hide Window" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:555 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:556 src/fe-gtk/setup.c:705 +msgid "Channel Message" +msgstr "頻道訊息" + +#: src/fe-gtk/plugin-tray.c:557 src/fe-gtk/setup.c:706 +msgid "Private Message" +msgstr "私人訊息" + +#: src/fe-gtk/plugin-tray.c:558 src/fe-gtk/setup.c:707 +msgid "Highlighted Message" +msgstr "" + +#. blink_item (BIT_FILEOFFER, submenu, _("File Offer")); +#: src/fe-gtk/plugin-tray.c:561 +msgid "_Change status" +msgstr "_更改狀態" + +#: src/fe-gtk/plugin-tray.c:567 +msgid "_Away" +msgstr "_暫離" + +#: src/fe-gtk/plugin-tray.c:570 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:634 +#, c-format +msgid "Highlighted message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:637 +#, c-format +msgid "%u highlighted messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "Channel message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:660 +#, c-format +msgid "%u channel messages. - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:684 +#, c-format +msgid "Private message from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "%u private messages, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:727 +#, c-format +msgid "File offer from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:730 +#, c-format +msgid "%u file offers, latest from: %s (%s) - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:65 +msgid "Version" +msgstr "版本" + +#: src/fe-gtk/plugingui.c:67 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "描述" + +#: src/fe-gtk/plugingui.c:164 +msgid "Select a Plugin or Script to load" +msgstr "選擇要載入的外掛程式或命令稿" + +#: src/fe-gtk/plugingui.c:241 +#, c-format +msgid "Plugins and Scripts - %s" +msgstr "" + +#: src/fe-gtk/plugingui.c:256 +msgid "_Load..." +msgstr "載入(_L)..." + +#: src/fe-gtk/plugingui.c:259 +msgid "_Unload" +msgstr "" + +#: src/fe-gtk/plugingui.c:262 +msgid "_Reload" +msgstr "" + +#: src/fe-gtk/rawlog.c:80 src/fe-gtk/rawlog.c:136 src/fe-gtk/textgui.c:475 +#: src/fe-gtk/urlgrab.c:218 +msgid "Save As..." +msgstr "另存為..." + +#: src/fe-gtk/rawlog.c:112 +#, c-format +msgid "Raw Log (%s) - %s" +msgstr "" + +#: src/fe-gtk/rawlog.c:133 +msgid "Clear Raw Log" +msgstr "" + +#: src/fe-gtk/servlistgui.c:301 src/fe-gtk/servlistgui.c:499 +msgid "New Network" +msgstr "新網路" + +#: src/fe-gtk/servlistgui.c:756 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "一定要刪除網路「%s」以及它所有的伺服器嗎?" + +#: src/fe-gtk/servlistgui.c:1125 src/fe-gtk/servlistgui.c:1556 +msgid "User name cannot be left blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1578 +msgid "You cannot have an empty nick name." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1585 +msgid "You must have two unique nick names." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1636 +msgid "" +"The way you identify yourself to the server. For custom login methods use " +"connect commands." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1710 +#, c-format +msgid "Edit %s - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1731 +msgid "Servers" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1732 +msgid "Autojoin channels" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1733 +msgid "Connect commands" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "" +"%n=Nick name\n" +"%p=Password\n" +"%r=Real name\n" +"%u=User name" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1801 +msgid "Key (Password)" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1853 +msgid "_Edit" +msgstr "編輯(_E)" + +#: src/fe-gtk/servlistgui.c:1866 +msgid "Connect to selected server only" +msgstr "只連接到選取的伺服器" + +#: src/fe-gtk/servlistgui.c:1867 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "當連線失敗時不要輪詢所有的伺服器" + +#: src/fe-gtk/servlistgui.c:1868 +msgid "Connect to this network automatically" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1869 +msgid "Bypass proxy server" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1870 +msgid "Use SSL for all the servers on this network" +msgstr "在本網路的所有伺服器使用 SSL" + +#: src/fe-gtk/servlistgui.c:1874 +msgid "Accept invalid SSL certificates" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1878 +msgid "Use global user information" +msgstr "使用廣域使用者資訊" + +#: src/fe-gtk/servlistgui.c:1880 src/fe-gtk/servlistgui.c:1999 +msgid "_Nick name:" +msgstr "暱稱(_N):" + +#: src/fe-gtk/servlistgui.c:1881 src/fe-gtk/servlistgui.c:2006 +msgid "Second choice:" +msgstr "第二選擇:" + +#: src/fe-gtk/servlistgui.c:1882 +msgid "Rea_l name:" +msgstr "真實名稱(_L):" + +#: src/fe-gtk/servlistgui.c:1883 src/fe-gtk/servlistgui.c:2020 +msgid "_User name:" +msgstr "使用者名(_U):" + +#: src/fe-gtk/servlistgui.c:1885 +msgid "Login method:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1891 src/fe-gtk/setup.c:655 +msgid "Password:" +msgstr "密碼:" + +#: src/fe-gtk/servlistgui.c:1891 +msgid "Password used for login. If in doubt, leave blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1896 +msgid "Character set:" +msgstr "字元設定:" + +#: src/fe-gtk/servlistgui.c:1977 +#, c-format +msgid "Network List - %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1989 +msgid "User Information" +msgstr "使用者資訊" + +#: src/fe-gtk/servlistgui.c:2013 +msgid "Third choice:" +msgstr "第三選擇:" + +#: src/fe-gtk/servlistgui.c:2073 +msgid "Networks" +msgstr "網路" + +#: src/fe-gtk/servlistgui.c:2121 +msgid "Skip network list on startup" +msgstr "啟動時跳過網路清單" + +#: src/fe-gtk/servlistgui.c:2130 +msgid "Show favorites only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2160 +msgid "_Edit..." +msgstr "編輯(_E)..." + +#: src/fe-gtk/servlistgui.c:2167 +msgid "_Sort" +msgstr "排序(_S)" + +#: src/fe-gtk/servlistgui.c:2168 +msgid "" +"Sorts the network list in alphabetical order. Use Shift+Up and Shift+Down " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2176 +msgid "_Favor" +msgstr "" + +#: src/fe-gtk/servlistgui.c:2177 +msgid "Mark or unmark this network as a favorite." +msgstr "" + +#: src/fe-gtk/servlistgui.c:2201 +msgid "C_onnect" +msgstr "連接(_O)" + +#: src/fe-gtk/setup.c:90 +msgid "Afrikaans" +msgstr "" + +#: src/fe-gtk/setup.c:91 +msgid "Albanian" +msgstr "阿爾巴尼亞" + +#: src/fe-gtk/setup.c:92 +msgid "Amharic" +msgstr "" + +#: src/fe-gtk/setup.c:93 +msgid "Asturian" +msgstr "" + +#: src/fe-gtk/setup.c:94 +msgid "Azerbaijani" +msgstr "亞塞拜然" + +#: src/fe-gtk/setup.c:95 +msgid "Basque" +msgstr "" + +#: src/fe-gtk/setup.c:96 +msgid "Belarusian" +msgstr "白俄" + +#: src/fe-gtk/setup.c:97 +msgid "Bulgarian" +msgstr "保加利亞" + +#: src/fe-gtk/setup.c:99 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/fe-gtk/setup.c:100 +msgid "Chinese (Traditional)" +msgstr "" + +#: src/fe-gtk/setup.c:101 +msgid "Czech" +msgstr "" + +#: src/fe-gtk/setup.c:102 +msgid "Danish" +msgstr "" + +#: src/fe-gtk/setup.c:103 +msgid "Dutch" +msgstr "" + +#: src/fe-gtk/setup.c:104 +msgid "English (British)" +msgstr "" + +#: src/fe-gtk/setup.c:105 +msgid "English" +msgstr "英文" + +#: src/fe-gtk/setup.c:106 +msgid "Estonian" +msgstr "愛沙尼亞" + +#: src/fe-gtk/setup.c:107 +msgid "Finnish" +msgstr "" + +#: src/fe-gtk/setup.c:108 +msgid "French" +msgstr "" + +#: src/fe-gtk/setup.c:109 +msgid "Galician" +msgstr "" + +#: src/fe-gtk/setup.c:110 +msgid "German" +msgstr "" + +#: src/fe-gtk/setup.c:111 +msgid "Greek" +msgstr "" + +#: src/fe-gtk/setup.c:112 +msgid "Gujarati" +msgstr "" + +#: src/fe-gtk/setup.c:113 +msgid "Hindi" +msgstr "印度" + +#: src/fe-gtk/setup.c:114 +msgid "Hungarian" +msgstr "" + +#: src/fe-gtk/setup.c:115 +msgid "Indonesian" +msgstr "印尼語" + +#: src/fe-gtk/setup.c:116 +msgid "Italian" +msgstr "" + +#: src/fe-gtk/setup.c:117 +msgid "Japanese" +msgstr "" + +#: src/fe-gtk/setup.c:118 +msgid "Kannada" +msgstr "" + +#: src/fe-gtk/setup.c:119 +msgid "Kinyarwanda" +msgstr "" + +#: src/fe-gtk/setup.c:120 +msgid "Korean" +msgstr "" + +#: src/fe-gtk/setup.c:121 +msgid "Latvian" +msgstr "" + +#: src/fe-gtk/setup.c:122 +msgid "Lithuanian" +msgstr "" + +#: src/fe-gtk/setup.c:123 +msgid "Macedonian" +msgstr "" + +#: src/fe-gtk/setup.c:124 +msgid "Malay" +msgstr "馬來西亞" + +#: src/fe-gtk/setup.c:125 +msgid "Malayalam" +msgstr "" + +#: src/fe-gtk/setup.c:126 +msgid "Norwegian (Bokmal)" +msgstr "" + +#: src/fe-gtk/setup.c:127 +msgid "Norwegian (Nynorsk)" +msgstr "" + +#: src/fe-gtk/setup.c:128 +msgid "Polish" +msgstr "" + +#: src/fe-gtk/setup.c:129 +msgid "Portuguese" +msgstr "" + +#: src/fe-gtk/setup.c:130 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: src/fe-gtk/setup.c:131 +msgid "Punjabi" +msgstr "" + +#: src/fe-gtk/setup.c:132 +msgid "Russian" +msgstr "" + +#: src/fe-gtk/setup.c:133 +msgid "Serbian" +msgstr "" + +#: src/fe-gtk/setup.c:134 +msgid "Slovak" +msgstr "" + +#: src/fe-gtk/setup.c:135 +msgid "Slovenian" +msgstr "" + +#: src/fe-gtk/setup.c:136 +msgid "Spanish" +msgstr "" + +#: src/fe-gtk/setup.c:137 +msgid "Swedish" +msgstr "" + +#: src/fe-gtk/setup.c:138 +msgid "Thai" +msgstr "泰國" + +#: src/fe-gtk/setup.c:139 +msgid "Turkish" +msgstr "" + +#: src/fe-gtk/setup.c:140 +msgid "Ukrainian" +msgstr "" + +#: src/fe-gtk/setup.c:141 +msgid "Vietnamese" +msgstr "越南" + +#: src/fe-gtk/setup.c:142 +msgid "Walloon" +msgstr "" + +#: src/fe-gtk/setup.c:149 src/fe-gtk/setup.c:1880 +msgid "General" +msgstr "一般" + +#: src/fe-gtk/setup.c:151 +msgid "Language:" +msgstr "" + +#: src/fe-gtk/setup.c:152 +msgid "Main font:" +msgstr "" + +#: src/fe-gtk/setup.c:154 +msgid "Font:" +msgstr "字型:" + +#: src/fe-gtk/setup.c:157 +msgid "Text Box" +msgstr "" + +#: src/fe-gtk/setup.c:158 +msgid "Colored nick names" +msgstr "彩色暱稱" + +#: src/fe-gtk/setup.c:158 +msgid "Give each person on IRC a different color" +msgstr "給 IRC 上的每名使用者一種不同的顏色" + +#: src/fe-gtk/setup.c:159 +msgid "Indent nick names" +msgstr "縮格暱稱" + +#: src/fe-gtk/setup.c:159 +msgid "Make nick names right-justified" +msgstr "讓暱稱右側對齊" + +#: src/fe-gtk/setup.c:160 +msgid "Show marker line" +msgstr "顯示標記線" + +#: src/fe-gtk/setup.c:160 +msgid "Insert a red line after the last read text." +msgstr "在最後讀取的文字後添加一條紅線。" + +#: src/fe-gtk/setup.c:161 +msgid "Background image:" +msgstr "背景圖像:" + +#: src/fe-gtk/setup.c:163 +msgid "Transparency Settings" +msgstr "透明度設定" + +#: src/fe-gtk/setup.c:164 +msgid "Window opacity:" +msgstr "" + +#: src/fe-gtk/setup.c:166 src/fe-gtk/setup.c:593 +msgid "Timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:167 +msgid "Enable timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:168 +msgid "Timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:170 src/fe-gtk/setup.c:597 +msgid "See the strftime MSDN article for details." +msgstr "" + +#: src/fe-gtk/setup.c:172 src/fe-gtk/setup.c:599 +msgid "See the strftime manpage for details." +msgstr "" + +#: src/fe-gtk/setup.c:175 +msgid "Title Bar" +msgstr "標題列" + +#: src/fe-gtk/setup.c:176 +msgid "Show channel modes" +msgstr "" + +#: src/fe-gtk/setup.c:177 +msgid "Show number of users" +msgstr "" + +#: src/fe-gtk/setup.c:184 src/fe-gtk/setup.c:224 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:185 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:191 +msgid "Input Box" +msgstr "" + +#: src/fe-gtk/setup.c:192 +msgid "Use the text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:193 +msgid "Render colors and attributes" +msgstr "" + +#: src/fe-gtk/setup.c:194 +msgid "Show nick box" +msgstr "" + +#: src/fe-gtk/setup.c:195 +msgid "Show user mode icon in nick box" +msgstr "" + +#: src/fe-gtk/setup.c:196 +msgid "Spell checking" +msgstr "拼寫檢查" + +#: src/fe-gtk/setup.c:197 +msgid "Dictionaries to use:" +msgstr "" + +#: src/fe-gtk/setup.c:199 +msgid "" +"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n" +"Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Use language codes. Separate multiple entries with commas." +msgstr "" + +#: src/fe-gtk/setup.c:204 +msgid "Nick Completion" +msgstr "暱稱自動補齊" + +#: src/fe-gtk/setup.c:205 +msgid "Nick completion suffix:" +msgstr "暱稱自動補齊後綴:" + +#: src/fe-gtk/setup.c:206 +msgid "Nick completion sorted:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Nick completion amount:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Threshold of nicks to start listing instead of completing" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "nicks." +msgstr "" + +#: src/fe-gtk/setup.c:215 +msgid "Graphical" +msgstr "" + +#: src/fe-gtk/setup.c:223 +msgid "A-Z, ops first" +msgstr "" + +#: src/fe-gtk/setup.c:225 +msgid "Z-A, ops last" +msgstr "" + +#: src/fe-gtk/setup.c:226 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:227 +msgid "Unsorted" +msgstr "未排序" + +#: src/fe-gtk/setup.c:233 src/fe-gtk/setup.c:245 +msgid "Left (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:234 src/fe-gtk/setup.c:246 +msgid "Left (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:235 src/fe-gtk/setup.c:247 +msgid "Right (upper)" +msgstr "" + +#: src/fe-gtk/setup.c:236 src/fe-gtk/setup.c:248 +msgid "Right (lower)" +msgstr "" + +#: src/fe-gtk/setup.c:237 +msgid "Top" +msgstr "頂部" + +#: src/fe-gtk/setup.c:238 +msgid "Bottom" +msgstr "底部" + +#: src/fe-gtk/setup.c:239 +msgid "Hidden" +msgstr "隱藏" + +#: src/fe-gtk/setup.c:254 +msgid "User List" +msgstr "使用者清單" + +#: src/fe-gtk/setup.c:255 +msgid "Show hostnames in user list" +msgstr "在使用者清單中顯示主機名" + +#: src/fe-gtk/setup.c:256 +msgid "Use the Text box font and colors" +msgstr "使用文字框字型及顏色" + +#: src/fe-gtk/setup.c:257 +msgid "Show icons for user modes" +msgstr "" + +#: src/fe-gtk/setup.c:257 +msgid "Use graphical icons instead of text symbols in the user list." +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Color nicknames in userlist" +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Will color nicknames the same as in chat." +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Show user count in channels" +msgstr "" + +#: src/fe-gtk/setup.c:260 +msgid "User list sorted by:" +msgstr "使用者清單排列方式:" + +#: src/fe-gtk/setup.c:261 +msgid "Show user list at:" +msgstr "" + +#: src/fe-gtk/setup.c:263 +msgid "Away Tracking" +msgstr "" + +#: src/fe-gtk/setup.c:264 +msgid "Track the away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:265 +msgid "On channels smaller than:" +msgstr "在小於此值的聊天室裡:" + +#: src/fe-gtk/setup.c:267 +msgid "Action Upon Double Click" +msgstr "雙擊時的動作" + +#: src/fe-gtk/setup.c:270 +msgid "Extra Gadgets" +msgstr "" + +#: src/fe-gtk/setup.c:271 +msgid "Lag meter:" +msgstr "" + +#: src/fe-gtk/setup.c:272 +msgid "Throttle meter:" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Windows" +msgstr "視窗" + +#: src/fe-gtk/setup.c:280 src/fe-gtk/setup.c:302 +msgid "Tabs" +msgstr "分頁" + +#: src/fe-gtk/setup.c:287 +msgid "Always" +msgstr "總是" + +#: src/fe-gtk/setup.c:288 +msgid "Only requested tabs" +msgstr "只有請求的分頁" + +#: src/fe-gtk/setup.c:294 +msgid "Automatic" +msgstr "" + +#: src/fe-gtk/setup.c:295 +msgid "In an extra tab" +msgstr "" + +#: src/fe-gtk/setup.c:296 +msgid "In the front tab" +msgstr "" + +#. 0 tabs +#. 1 reserved +#: src/fe-gtk/setup.c:304 +msgid "Tree" +msgstr "" + +#. {ST_HEADER, N_("Channel Switcher"),0,0,0}, +#: src/fe-gtk/setup.c:311 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:312 +msgid "Open an extra tab for server messages" +msgstr "打開額外的分頁存放伺服器訊息" + +#: src/fe-gtk/setup.c:313 +msgid "Open a new tab when you receive a private message" +msgstr "" + +#: src/fe-gtk/setup.c:314 +msgid "Sort tabs in alphabetical order" +msgstr "按字母表順序排序分頁" + +#: src/fe-gtk/setup.c:315 +msgid "Show icons in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:316 +msgid "Show dotted lines in the channel tree" +msgstr "" + +#: src/fe-gtk/setup.c:317 +msgid "Scroll mouse-wheel to change tabs" +msgstr "" + +#: src/fe-gtk/setup.c:318 +msgid "Middle click to close tab" +msgstr "" + +#: src/fe-gtk/setup.c:319 +msgid "Smaller text" +msgstr "" + +#: src/fe-gtk/setup.c:320 +msgid "Focus new tabs:" +msgstr "聚焦到新分頁:" + +#: src/fe-gtk/setup.c:321 +msgid "Placement of notices:" +msgstr "" + +#: src/fe-gtk/setup.c:322 +msgid "Show channel switcher at:" +msgstr "" + +#: src/fe-gtk/setup.c:323 +msgid "Shorten tab labels to:" +msgstr "縮短分頁標籤至:" + +#: src/fe-gtk/setup.c:323 +msgid "letters." +msgstr "字母。" + +#: src/fe-gtk/setup.c:325 +msgid "Tabs or Windows" +msgstr "分頁或視窗" + +#: src/fe-gtk/setup.c:326 +msgid "Open channels in:" +msgstr "打開聊天室於:" + +#: src/fe-gtk/setup.c:327 +msgid "Open dialogs in:" +msgstr "打開對話框於:" + +#: src/fe-gtk/setup.c:328 +msgid "Open utilities in:" +msgstr "打開工具於:" + +#: src/fe-gtk/setup.c:328 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "打開 DCC、忽略、通知等動作,使用分頁還是視窗?" + +#: src/fe-gtk/setup.c:335 +msgid "Messages" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Scrollback" +msgstr "" + +#: src/fe-gtk/setup.c:344 +msgid "Ask for confirmation" +msgstr "" + +#: src/fe-gtk/setup.c:345 +msgid "Ask for download folder" +msgstr "" + +#: src/fe-gtk/setup.c:346 +msgid "Save without interaction" +msgstr "" + +#: src/fe-gtk/setup.c:352 +msgid "Files and Directories" +msgstr "檔案和目錄" + +#: src/fe-gtk/setup.c:353 +msgid "Auto accept file offers:" +msgstr "自動接受所提供的檔案:" + +#: src/fe-gtk/setup.c:354 +msgid "Download files to:" +msgstr "把檔案下載到:" + +#: src/fe-gtk/setup.c:355 +msgid "Move completed files to:" +msgstr "移動完成下載的檔案到:" + +#: src/fe-gtk/setup.c:356 +msgid "Save nick name in filenames" +msgstr "把暱稱存入檔名" + +#: src/fe-gtk/setup.c:358 +msgid "Auto Open DCC Windows" +msgstr "自動打開 DDC 視窗" + +#: src/fe-gtk/setup.c:359 +msgid "Send window" +msgstr "發送視窗" + +#: src/fe-gtk/setup.c:360 +msgid "Receive window" +msgstr "接收視窗" + +#: src/fe-gtk/setup.c:361 +msgid "Chat window" +msgstr "聊天視窗" + +#: src/fe-gtk/setup.c:363 +msgid "Maximum File Transfer Speeds (Byte per Second)" +msgstr "" + +#: src/fe-gtk/setup.c:364 +msgid "One upload:" +msgstr "一次上傳" + +#: src/fe-gtk/setup.c:365 src/fe-gtk/setup.c:367 +msgid "Maximum speed for one transfer" +msgstr "一個傳送行程的最大速度" + +#: src/fe-gtk/setup.c:366 +msgid "One download:" +msgstr "一次下載:" + +#: src/fe-gtk/setup.c:368 +msgid "All uploads combined:" +msgstr "所有上傳:" + +#: src/fe-gtk/setup.c:369 src/fe-gtk/setup.c:371 +msgid "Maximum speed for all files" +msgstr "所有檔案的最大速度" + +#: src/fe-gtk/setup.c:370 +msgid "All downloads combined:" +msgstr "所有下載" + +#: src/fe-gtk/setup.c:398 src/fe-gtk/setup.c:439 src/fe-gtk/setup.c:482 +#: src/fe-gtk/setup.c:505 src/fe-gtk/setup.c:1881 +msgid "Alerts" +msgstr "警報" + +#: src/fe-gtk/setup.c:403 src/fe-gtk/setup.c:485 +msgid "Show notifications on:" +msgstr "" + +#: src/fe-gtk/setup.c:404 src/fe-gtk/setup.c:442 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:405 src/fe-gtk/setup.c:447 src/fe-gtk/setup.c:486 +#: src/fe-gtk/setup.c:508 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:412 +#: src/fe-gtk/setup.c:451 src/fe-gtk/setup.c:454 src/fe-gtk/setup.c:456 +#: src/fe-gtk/setup.c:487 src/fe-gtk/setup.c:509 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:407 src/fe-gtk/setup.c:451 +msgid "" +"Play the \"Instant Message Notification\" system sound upon the selected " +"events" +msgstr "" + +#: src/fe-gtk/setup.c:410 src/fe-gtk/setup.c:454 +msgid "" +"Play \"message-new-instant\" from the freedesktop.org sound theme upon the " +"selected events" +msgstr "" + +#: src/fe-gtk/setup.c:412 src/fe-gtk/setup.c:456 +msgid "Play a GTK beep upon the selected events" +msgstr "" + +#: src/fe-gtk/setup.c:416 src/fe-gtk/setup.c:460 src/fe-gtk/setup.c:489 +#: src/fe-gtk/setup.c:511 +msgid "Omit alerts when marked as being away" +msgstr "" + +#: src/fe-gtk/setup.c:417 src/fe-gtk/setup.c:461 src/fe-gtk/setup.c:490 +#: src/fe-gtk/setup.c:512 +msgid "Omit alerts while the window is focused" +msgstr "" + +#: src/fe-gtk/setup.c:419 src/fe-gtk/setup.c:463 +msgid "Tray Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:420 src/fe-gtk/setup.c:464 +msgid "Enable system tray icon" +msgstr "" + +#: src/fe-gtk/setup.c:421 src/fe-gtk/setup.c:465 +msgid "Minimize to tray" +msgstr "" + +#: src/fe-gtk/setup.c:422 src/fe-gtk/setup.c:466 +msgid "Close to tray" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically mark away/back" +msgstr "" + +#: src/fe-gtk/setup.c:423 src/fe-gtk/setup.c:467 +msgid "Automatically change status when hiding to tray." +msgstr "" + +#: src/fe-gtk/setup.c:424 +msgid "Only show notifications when hidden or iconified" +msgstr "" + +#: src/fe-gtk/setup.c:426 src/fe-gtk/setup.c:469 src/fe-gtk/setup.c:492 +#: src/fe-gtk/setup.c:514 +msgid "Highlighted Messages" +msgstr "" + +#: src/fe-gtk/setup.c:427 src/fe-gtk/setup.c:470 src/fe-gtk/setup.c:493 +#: src/fe-gtk/setup.c:515 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:429 src/fe-gtk/setup.c:472 src/fe-gtk/setup.c:495 +#: src/fe-gtk/setup.c:517 +msgid "Extra words to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:430 src/fe-gtk/setup.c:473 src/fe-gtk/setup.c:496 +#: src/fe-gtk/setup.c:518 +msgid "Nick names not to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:431 src/fe-gtk/setup.c:474 src/fe-gtk/setup.c:497 +#: src/fe-gtk/setup.c:519 +msgid "Nick names to always highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:432 src/fe-gtk/setup.c:475 src/fe-gtk/setup.c:498 +#: src/fe-gtk/setup.c:520 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" + +#: src/fe-gtk/setup.c:444 +msgid "Bounce dock icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:527 +msgid "Default Messages" +msgstr "預設訊息" + +#: src/fe-gtk/setup.c:528 +msgid "Quit:" +msgstr "離開:" + +#: src/fe-gtk/setup.c:529 +msgid "Leave channel:" +msgstr "離開聊天室:" + +#: src/fe-gtk/setup.c:530 +msgid "Away:" +msgstr "離開:" + +#: src/fe-gtk/setup.c:532 +msgid "Away" +msgstr "離開" + +#: src/fe-gtk/setup.c:533 +msgid "Show away once" +msgstr "只顯示暫離一次" + +#: src/fe-gtk/setup.c:533 +msgid "Show identical away messages only once." +msgstr "" + +#: src/fe-gtk/setup.c:534 +msgid "Automatically unmark away" +msgstr "自動取消暫離狀態" + +#: src/fe-gtk/setup.c:534 +msgid "Unmark yourself as away before sending messages." +msgstr "" + +#: src/fe-gtk/setup.c:536 src/fe-gtk/setup.c:569 +msgid "Miscellaneous" +msgstr "" + +#: src/fe-gtk/setup.c:537 +msgid "Display MODEs in raw form" +msgstr "使用原始格式顯示模式" + +#: src/fe-gtk/setup.c:538 +msgid "WHOIS on notify" +msgstr "" + +#: src/fe-gtk/setup.c:538 +msgid "Sends a /WHOIS when a user comes online in your notify list." +msgstr "" + +#: src/fe-gtk/setup.c:539 +msgid "Hide join and part messages" +msgstr "隱藏加入/離開訊息" + +#: src/fe-gtk/setup.c:539 +msgid "Hide channel join/part messages by default." +msgstr "" + +#: src/fe-gtk/setup.c:540 +msgid "Hide nick change messages" +msgstr "" + +#: src/fe-gtk/setup.c:547 +msgid "*!*@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:548 +msgid "*!*@domain" +msgstr "" + +#: src/fe-gtk/setup.c:549 +msgid "*!*user@*.host" +msgstr "" + +#: src/fe-gtk/setup.c:550 +msgid "*!*user@domain" +msgstr "" + +#: src/fe-gtk/setup.c:556 +msgid "Auto Copy Behavior" +msgstr "" + +#: src/fe-gtk/setup.c:557 +msgid "Automatically copy selected text" +msgstr "" + +#: src/fe-gtk/setup.c:558 +msgid "" +"Copy selected text to clipboard when left mouse button is released. " +"Otherwise, Ctrl+Shift+C will copy the selected text to the clipboard." +msgstr "" + +#: src/fe-gtk/setup.c:561 +msgid "Automatically include timestamps" +msgstr "" + +#: src/fe-gtk/setup.c:562 +msgid "" +"Automatically include timestamps in copied lines of text. Otherwise, include" +" timestamps if the Shift key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:564 +msgid "Automatically include color information" +msgstr "" + +#: src/fe-gtk/setup.c:565 +msgid "" +"Automatically include color information in copied lines of text. Otherwise," +" include color information if the Ctrl key is held down while selecting." +msgstr "" + +#: src/fe-gtk/setup.c:570 +msgid "Real name:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Alternative fonts:" +msgstr "" + +#: src/fe-gtk/setup.c:572 +msgid "Separate multiple entries with commas without spaces before or after." +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Display lists in compact mode" +msgstr "" + +#: src/fe-gtk/setup.c:574 +msgid "Use less spacing between user list/channel tree rows." +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "Use server time if supported" +msgstr "" + +#: src/fe-gtk/setup.c:575 +msgid "" +"Display timestamps obtained from server if it supports the time-server " +"extension." +msgstr "" + +#: src/fe-gtk/setup.c:576 +msgid "Automatically reconnect to servers on disconnect" +msgstr "" + +#: src/fe-gtk/setup.c:577 +msgid "Auto reconnect delay:" +msgstr "自動重連間隔:" + +#: src/fe-gtk/setup.c:578 +msgid "Auto join delay:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "Ban Type:" +msgstr "" + +#: src/fe-gtk/setup.c:579 +msgid "" +"Attempt to use this banmask when banning or quieting. (requires " +"irc_who_join)" +msgstr "" + +#: src/fe-gtk/setup.c:586 src/fe-gtk/setup.c:1883 +msgid "Logging" +msgstr "日誌" + +#: src/fe-gtk/setup.c:587 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:588 +msgid "Scrollback lines:" +msgstr "回滾列數:" + +#: src/fe-gtk/setup.c:589 +msgid "Enable logging of conversations to disk" +msgstr "" + +#: src/fe-gtk/setup.c:590 +msgid "Log filename:" +msgstr "記錄檔案名稱:" + +#: src/fe-gtk/setup.c:591 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=伺服器 %c=聊天室 %n=網路。" + +#: src/fe-gtk/setup.c:594 +msgid "Insert timestamps in logs" +msgstr "在日誌中加入時間戳記" + +#: src/fe-gtk/setup.c:595 +msgid "Log timestamp format:" +msgstr "日誌時間戳記格式:" + +#: src/fe-gtk/setup.c:602 +msgid "URLs" +msgstr "URL" + +#: src/fe-gtk/setup.c:603 +msgid "Enable logging of URLs to disk" +msgstr "" + +#: src/fe-gtk/setup.c:604 +msgid "Enable URL grabber" +msgstr "" + +#: src/fe-gtk/setup.c:605 +msgid "Maximum number of URLs to grab:" +msgstr "" + +#: src/fe-gtk/setup.c:612 +msgid "(Disabled)" +msgstr "(停用)" + +#: src/fe-gtk/setup.c:613 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:614 +msgid "SOCKS4" +msgstr "" + +#: src/fe-gtk/setup.c:615 +msgid "SOCKS5" +msgstr "" + +#: src/fe-gtk/setup.c:616 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:618 +msgid "Auto" +msgstr "自動" + +#: src/fe-gtk/setup.c:625 +msgid "All connections" +msgstr "" + +#: src/fe-gtk/setup.c:626 +msgid "IRC server only" +msgstr "" + +#: src/fe-gtk/setup.c:627 +msgid "DCC only" +msgstr "" + +#: src/fe-gtk/setup.c:633 +msgid "Your Address" +msgstr "您的位址" + +#: src/fe-gtk/setup.c:634 +msgid "Bind to:" +msgstr "綁定於:" + +#: src/fe-gtk/setup.c:635 +msgid "Only useful for computers with multiple addresses." +msgstr "只對有多個位址的電腦有用。" + +#: src/fe-gtk/setup.c:637 +msgid "File Transfers" +msgstr "" + +#: src/fe-gtk/setup.c:638 +msgid "Get my address from the IRC server" +msgstr "從 IRC 伺服器獲取我的位址" + +#: src/fe-gtk/setup.c:639 +msgid "" +"Asks the IRC server for your real address. Use this if you have a " +"192.168.*.* address!" +msgstr "向 IRC 伺服器查詢您的真實位址。如果您具有 192.168.*.* 這樣的位址時,請使用此命令。" + +#: src/fe-gtk/setup.c:640 +msgid "DCC IP address:" +msgstr "DCC IP 位址:" + +#: src/fe-gtk/setup.c:641 +msgid "Claim you are at this address when offering files." +msgstr "發送檔案時聲稱您是這個位址。" + +#: src/fe-gtk/setup.c:642 +msgid "First DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:643 +msgid "Last DCC listen port:" +msgstr "" + +#: src/fe-gtk/setup.c:644 +msgid "!Leave ports at zero for full range." +msgstr "!輸出入埠保留為 0 表示允許所有範圍。" + +#: src/fe-gtk/setup.c:646 +msgid "Proxy Server" +msgstr "代理伺服器" + +#: src/fe-gtk/setup.c:647 +msgid "Hostname:" +msgstr "主機名:" + +#: src/fe-gtk/setup.c:648 src/fe-gtk/setup.c:664 +msgid "Port:" +msgstr "輸出入埠:" + +#: src/fe-gtk/setup.c:649 +msgid "Type:" +msgstr "類型:" + +#: src/fe-gtk/setup.c:650 +msgid "Use proxy for:" +msgstr "使用代理伺服器於:" + +#: src/fe-gtk/setup.c:652 +msgid "Proxy Authentication" +msgstr "代理伺服器驗證" + +#: src/fe-gtk/setup.c:653 +msgid "Use authentication (HTTP or SOCKS5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:654 +msgid "Username:" +msgstr "使用者名:" + +#: src/fe-gtk/setup.c:662 +msgid "Identd Server" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Enabled" +msgstr "" + +#: src/fe-gtk/setup.c:663 +msgid "Server will respond with the networks username" +msgstr "" + +#: src/fe-gtk/setup.c:664 +msgid "" +"You must have permissions to listen on this port. If not 113 (0 defaults to " +"this) then you must configure port-forwarding." +msgstr "" + +#: src/fe-gtk/setup.c:1110 +msgid "Select an Image File" +msgstr "選擇一個圖像檔案" + +#: src/fe-gtk/setup.c:1146 +msgid "Select Download Folder" +msgstr "選擇下載文件夾" + +#: src/fe-gtk/setup.c:1156 +msgid "Select font" +msgstr "選擇字型" + +#: src/fe-gtk/setup.c:1257 +msgid "Browse..." +msgstr "瀏覽..." + +#: src/fe-gtk/setup.c:1395 +msgid "Open Data Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1446 +msgid "Select color" +msgstr "選擇顏色" + +#: src/fe-gtk/setup.c:1534 +msgid "Text Colors" +msgstr "文字顏色" + +#: src/fe-gtk/setup.c:1536 +msgid "mIRC colors:" +msgstr "mIRC 顏色:" + +#: src/fe-gtk/setup.c:1544 +msgid "Local colors:" +msgstr "本地的顏色:" + +#: src/fe-gtk/setup.c:1552 src/fe-gtk/setup.c:1557 +msgid "Foreground:" +msgstr "前景:" + +#: src/fe-gtk/setup.c:1553 src/fe-gtk/setup.c:1558 +msgid "Background:" +msgstr "背景:" + +#: src/fe-gtk/setup.c:1555 +msgid "Selected Text" +msgstr "" + +#: src/fe-gtk/setup.c:1560 +msgid "Interface Colors" +msgstr "介面顏色" + +#: src/fe-gtk/setup.c:1562 +msgid "New data:" +msgstr "新資料:" + +#: src/fe-gtk/setup.c:1563 +msgid "Marker line:" +msgstr "標記線:" + +#: src/fe-gtk/setup.c:1564 +msgid "New message:" +msgstr "新訊息:" + +#: src/fe-gtk/setup.c:1565 +msgid "Away user:" +msgstr "離開的使用者:" + +#: src/fe-gtk/setup.c:1566 +msgid "Highlight:" +msgstr "高亮度顯示:" + +#: src/fe-gtk/setup.c:1567 +msgid "Spell checker:" +msgstr "拼字檢查:" + +#: src/fe-gtk/setup.c:1569 +msgid "Color Stripping" +msgstr "" + +#: src/fe-gtk/setup.c:1666 src/fe-gtk/textgui.c:368 +msgid "Event" +msgstr "事件" + +#: src/fe-gtk/setup.c:1672 +msgid "Sound file" +msgstr "音效檔案" + +#: src/fe-gtk/setup.c:1716 +msgid "Select a sound file" +msgstr "選擇聲音檔案" + +#: src/fe-gtk/setup.c:1800 +msgid "Sound file:" +msgstr "音效檔案:" + +#: src/fe-gtk/setup.c:1815 +msgid "_Browse..." +msgstr "瀏覽(_B)..." + +#: src/fe-gtk/setup.c:1826 +msgid "_Play" +msgstr "播放(_P)" + +#: src/fe-gtk/setup.c:1872 +msgid "Interface" +msgstr "介面" + +#: src/fe-gtk/setup.c:1873 +msgid "Appearance" +msgstr "外觀" + +#: src/fe-gtk/setup.c:1874 +msgid "Input box" +msgstr "輸入框" + +#: src/fe-gtk/setup.c:1875 +msgid "User list" +msgstr "使用者清單" + +#: src/fe-gtk/setup.c:1876 +msgid "Channel switcher" +msgstr "" + +#: src/fe-gtk/setup.c:1877 +msgid "Colors" +msgstr "顏色" + +#: src/fe-gtk/setup.c:1879 +msgid "Chatting" +msgstr "聊天" + +#: src/fe-gtk/setup.c:1882 +msgid "Sounds" +msgstr "" + +#: src/fe-gtk/setup.c:1884 +msgid "Advanced" +msgstr "進階" + +#: src/fe-gtk/setup.c:1887 +msgid "Network setup" +msgstr "網路設定" + +#: src/fe-gtk/setup.c:1888 +msgid "File transfers" +msgstr "檔案傳輸" + +#: src/fe-gtk/setup.c:1889 +msgid "Identd" +msgstr "" + +#: src/fe-gtk/setup.c:2019 +msgid "Categories" +msgstr "類別" + +#: src/fe-gtk/setup.c:2222 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2254 +msgid "The Real name option cannot be left blank. Falling back to \"realname\"." +msgstr "" + +#: src/fe-gtk/setup.c:2261 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "有些設定需要重新啟動 xchat 才會生效。" + +#: src/fe-gtk/setup.c:2269 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "*警告*\n自動接收 DCC 到您的主目錄中是危險之舉,\n且有被盜用的可能性。例如:\n某人可能會給您發送一份 .bash_profile 檔案" + +#: src/fe-gtk/setup.c:2293 +#, c-format +msgid "Preferences - %s" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:571 +msgid "<i>(no suggestions)</i>" +msgstr "" + +#: src/fe-gtk/sexy-spell-entry.c:585 +msgid "More..." +msgstr "更多..." + +#. + Add to Dictionary +#: src/fe-gtk/sexy-spell-entry.c:657 +#, c-format +msgid "Add \"%s\" to Dictionary" +msgstr "" + +#. - Ignore All +#: src/fe-gtk/sexy-spell-entry.c:702 +msgid "Ignore All" +msgstr "全部忽略" + +#: src/fe-gtk/sexy-spell-entry.c:737 +msgid "Spelling Suggestions" +msgstr "拼字建議" + +#: src/fe-gtk/sexy-spell-entry.c:1310 +#, c-format +msgid "enchant error for language: %s" +msgstr "" + +#: src/fe-gtk/textgui.c:171 +msgid "There was an error parsing the string" +msgstr "解析字串時出錯" + +#: src/fe-gtk/textgui.c:178 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "該信號只接受 %d 個引數,$%d 無效" + +#: src/fe-gtk/textgui.c:285 src/fe-gtk/textgui.c:307 +msgid "Print Texts File" +msgstr "列印文字檔案" + +#: src/fe-gtk/textgui.c:417 +msgid "$ Number" +msgstr "$ 數字" + +#: src/fe-gtk/textgui.c:449 +msgid "Edit Events" +msgstr "編輯事件" + +#: src/fe-gtk/textgui.c:477 +msgid "Load From..." +msgstr "從...載入" + +#: src/fe-gtk/textgui.c:479 +msgid "Test All" +msgstr "測試全部" + +#: src/fe-gtk/textgui.c:481 +msgid "OK" +msgstr "" + +#: src/fe-gtk/urlgrab.c:198 +#, c-format +msgid "URL Grabber - %s" +msgstr "" + +#: src/fe-gtk/urlgrab.c:214 +msgid "Clear list" +msgstr "清空清單" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy selected URL" +msgstr "複製選取的 URL" + +#: src/fe-gtk/urlgrab.c:216 +msgid "Copy" +msgstr "複製" + +#: src/fe-gtk/urlgrab.c:218 +msgid "Save list to a file" +msgstr "儲存清單到檔案" + +#: src/fe-gtk/userlistgui.c:108 +#, c-format +msgid "%d ops, %d total" +msgstr "%d 個管理員,共 %d 人" + +#: src/fe-text/fe-text.c:472 +msgid "Open an irc://server:port/channel URL" +msgstr "開啟一個 irc://server:port/channel URL" + +#: plugins/sysinfo/sysinfo.c:128 +msgid "Sysinfo: Failed to get info. Either not supported or error." +msgstr "" + +#: plugins/sysinfo/sysinfo.c:133 +msgid "Sysinfo: No info by that name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:154 plugins/sysinfo/sysinfo.c:158 +#, c-format +msgid "Sysinfo: %s is set to: %d\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:168 +msgid "" +"Sysinfo: Valid settings are: announce and hide_* for each piece of " +"information. e.g. hide_os. Without a value it will show current (or default)" +" setting.\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:190 +msgid "Sysinfo: Invalid variable name\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:239 +#, c-format +msgid "%s plugin loaded\n" +msgstr "" + +#: plugins/sysinfo/sysinfo.c:247 +#, c-format +msgid "%s plugin unloaded\n" +msgstr "" diff --git a/hexchat/src/common/cfgfiles.c b/hexchat/src/common/cfgfiles.c new file mode 100644 index 0000000..f0799de --- /dev/null +++ b/hexchat/src/common/cfgfiles.c @@ -0,0 +1,1373 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <fcntl.h> +#include <stdlib.h> +#include <string.h> +#include <stdio.h> +#include <sys/types.h> +#include <sys/stat.h> + +#include "hexchat.h" +#include "cfgfiles.h" +#include "util.h" +#include "fe.h" +#include "text.h" +#include "hexchatc.h" +#include "typedef.h" + +#ifdef WIN32 +#include <io.h> +#else +#include <unistd.h> +#define HEXCHAT_DIR "hexchat" +#endif + +#define DEF_FONT "Monospace 9" +#define DEF_FONT_ALTER "Arial Unicode MS,Segoe UI Emoji,Lucida Sans Unicode,Meiryo,Symbola,Unifont" + +const char * const languages[LANGUAGES_LENGTH] = { + "af", "sq", "am", "ast", "az", "eu", "be", "bg", "ca", "zh_CN", /* 0 .. 9 */ + "zh_TW", "cs", "da", "nl", "en_GB", "en", "et", "fi", "fr", "gl", /* 10 .. 19 */ + "de", "el", "gu", "hi", "hu", "id", "it", "ja_JP", "kn", "rw", /* 20 .. 29 */ + "ko", "lv", "lt", "mk", "ml", "ms", "nb", "no", "pl", "pt", /* 30 .. 39 */ + "pt_BR", "pa", "ru", "sr", "sk", "sl", "es", "sv", "th", "tr", /* 40 .. 49 */ + "uk", "vi", "wa" /* 50 .. */ +}; + +void +list_addentry (GSList ** list, char *cmd, char *name) +{ + struct popup *pop; + size_t name_len; + size_t cmd_len = 1; + + if (cmd) + cmd_len = strlen (cmd) + 1; + name_len = strlen (name) + 1; + + pop = g_malloc (sizeof (struct popup) + cmd_len + name_len); + pop->name = (char *) pop + sizeof (struct popup); + pop->cmd = pop->name + name_len; + + memcpy (pop->name, name, name_len); + if (cmd) + memcpy (pop->cmd, cmd, cmd_len); + else + pop->cmd[0] = 0; + + *list = g_slist_append (*list, pop); +} + +/* read it in from a buffer to our linked list */ + +static void +list_load_from_data (GSList ** list, char *ibuf, int size) +{ + char cmd[384]; + char name[128]; + char *buf; + int pnt = 0; + + cmd[0] = 0; + name[0] = 0; + + while (buf_get_line (ibuf, &buf, &pnt, size)) + { + if (*buf != '#') + { + if (!g_ascii_strncasecmp (buf, "NAME ", 5)) + { + safe_strcpy (name, buf + 5, sizeof (name)); + } + else if (!g_ascii_strncasecmp (buf, "CMD ", 4)) + { + safe_strcpy (cmd, buf + 4, sizeof (cmd)); + if (*name) + { + list_addentry (list, cmd, name); + cmd[0] = 0; + name[0] = 0; + } + } + } + } +} + +void +list_loadconf (char *file, GSList ** list, char *defaultconf) +{ + char *filebuf; + char *ibuf; + int fd; + struct stat st; + + filebuf = g_build_filename (get_xdir (), file, NULL); + fd = g_open (filebuf, O_RDONLY | OFLAGS, 0); + g_free (filebuf); + + if (fd == -1) + { + if (defaultconf) + list_load_from_data (list, defaultconf, strlen (defaultconf)); + return; + } + if (fstat (fd, &st) != 0) + { + perror ("fstat"); + abort (); + } + + ibuf = g_malloc (st.st_size); + read (fd, ibuf, st.st_size); + close (fd); + + list_load_from_data (list, ibuf, st.st_size); + + g_free (ibuf); +} + +void +list_free (GSList ** list) +{ + void *data; + while (*list) + { + data = (void *) (*list)->data; + g_free (data); + *list = g_slist_remove (*list, data); + } +} + +int +list_delentry (GSList ** list, char *name) +{ + struct popup *pop; + GSList *alist = *list; + + while (alist) + { + pop = (struct popup *) alist->data; + if (!g_ascii_strcasecmp (name, pop->name)) + { + *list = g_slist_remove (*list, pop); + g_free (pop); + return 1; + } + alist = alist->next; + } + return 0; +} + +char * +cfg_get_str (char *cfg, const char *var, char *dest, int dest_len) +{ + char buffer[128]; /* should be plenty for a variable name */ + + sprintf (buffer, "%s ", var); /* add one space, this way it works against var - var2 checks too */ + + while (1) + { + if (!g_ascii_strncasecmp (buffer, cfg, strlen (var) + 1)) + { + char *value, t; + cfg += strlen (var); + while (*cfg == ' ') + cfg++; + if (*cfg == '=') + cfg++; + while (*cfg == ' ') + cfg++; + /*while (*cfg == ' ' || *cfg == '=') + cfg++; */ + value = cfg; + while (*cfg != 0 && *cfg != '\n') + cfg++; + t = *cfg; + *cfg = 0; + safe_strcpy (dest, value, dest_len); + *cfg = t; + return cfg; + } + while (*cfg != 0 && *cfg != '\n') + cfg++; + if (*cfg == 0) + return NULL; + cfg++; + if (*cfg == 0) + return NULL; + } +} + +static int +cfg_put_str (int fh, char *var, char *value) +{ + char buf[512]; + int len; + + g_snprintf (buf, sizeof buf, "%s = %s\n", var, value); + len = strlen (buf); + return (write (fh, buf, len) == len); +} + +int +cfg_put_color (int fh, guint16 r, guint16 g, guint16 b, char *var) +{ + char buf[400]; + int len; + + g_snprintf (buf, sizeof buf, "%s = %04hx %04hx %04hx\n", var, r, g, b); + len = strlen (buf); + return (write (fh, buf, len) == len); +} + +int +cfg_put_int (int fh, int value, char *var) +{ + char buf[400]; + int len; + + if (value == -1) + value = 1; + + g_snprintf (buf, sizeof buf, "%s = %d\n", var, value); + len = strlen (buf); + return (write (fh, buf, len) == len); +} + +int +cfg_get_color (char *cfg, char *var, guint16 *r, guint16 *g, guint16 *b) +{ + char str[128]; + + if (!cfg_get_str (cfg, var, str, sizeof (str))) + return 0; + + sscanf (str, "%04hx %04hx %04hx", r, g, b); + return 1; +} + +int +cfg_get_int_with_result (char *cfg, char *var, int *result) +{ + char str[128]; + + if (!cfg_get_str (cfg, var, str, sizeof (str))) + { + *result = 0; + return 0; + } + + *result = 1; + return atoi (str); +} + +int +cfg_get_int (char *cfg, char *var) +{ + char str[128]; + + if (!cfg_get_str (cfg, var, str, sizeof (str))) + return 0; + + return atoi (str); +} + +char *xdir = NULL; /* utf-8 encoding */ + +#ifdef WIN32 +#include <windows.h> +#include <shlobj.h> +#endif + +char * +get_xdir (void) +{ + if (!xdir) + { +#ifndef WIN32 + xdir = g_build_filename (g_get_user_config_dir (), HEXCHAT_DIR, NULL); +#else + wchar_t* roaming_path_wide; + gchar* roaming_path; + + if (portable_mode () || SHGetKnownFolderPath (&FOLDERID_RoamingAppData, 0, NULL, &roaming_path_wide) != S_OK) + { + char *path = g_win32_get_package_installation_directory_of_module (NULL); + if (path) + { + xdir = g_build_filename (path, "config", NULL); + g_free (path); + } + else + xdir = g_strdup (".\\config"); + } + else + { + roaming_path = g_utf16_to_utf8 (roaming_path_wide, -1, NULL, NULL, NULL); + CoTaskMemFree (roaming_path_wide); + + xdir = g_build_filename (roaming_path, "HexChat", NULL); + + g_free (roaming_path); + } +#endif + } + + return xdir; +} + +int +check_config_dir (void) +{ + return g_access (get_xdir (), F_OK); +} + +static char * +default_file (void) +{ + static char *dfile = NULL; + + if (!dfile) + { + dfile = g_build_filename (get_xdir (), "hexchat.conf", NULL); + } + return dfile; +} + +/* Keep these sorted!! */ + +const struct prefs vars[] = +{ + {"away_auto_unmark", P_OFFINT (hex_away_auto_unmark), TYPE_BOOL}, + {"away_omit_alerts", P_OFFINT (hex_away_omit_alerts), TYPE_BOOL}, + {"away_reason", P_OFFSET (hex_away_reason), TYPE_STR}, + {"away_show_once", P_OFFINT (hex_away_show_once), TYPE_BOOL}, + {"away_size_max", P_OFFINT (hex_away_size_max), TYPE_INT}, + {"away_timeout", P_OFFINT (hex_away_timeout), TYPE_INT}, + {"away_track", P_OFFINT (hex_away_track), TYPE_BOOL}, + + {"completion_amount", P_OFFINT (hex_completion_amount), TYPE_INT}, + {"completion_auto", P_OFFINT (hex_completion_auto), TYPE_BOOL}, + {"completion_sort", P_OFFINT (hex_completion_sort), TYPE_INT}, + {"completion_suffix", P_OFFSET (hex_completion_suffix), TYPE_STR}, + + {"dcc_auto_chat", P_OFFINT (hex_dcc_auto_chat), TYPE_BOOL}, + {"dcc_auto_recv", P_OFFINT (hex_dcc_auto_recv), TYPE_INT}, + {"dcc_auto_resume", P_OFFINT (hex_dcc_auto_resume), TYPE_BOOL}, + {"dcc_blocksize", P_OFFINT (hex_dcc_blocksize), TYPE_INT}, + {"dcc_completed_dir", P_OFFSET (hex_dcc_completed_dir), TYPE_STR}, + {"dcc_dir", P_OFFSET (hex_dcc_dir), TYPE_STR}, +#ifndef WIN32 + {"dcc_fast_send", P_OFFINT (hex_dcc_fast_send), TYPE_BOOL}, +#endif + {"dcc_global_max_get_cps", P_OFFINT (hex_dcc_global_max_get_cps), TYPE_INT}, + {"dcc_global_max_send_cps", P_OFFINT (hex_dcc_global_max_send_cps), TYPE_INT}, + {"dcc_ip", P_OFFSET (hex_dcc_ip), TYPE_STR}, + {"dcc_ip_from_server", P_OFFINT (hex_dcc_ip_from_server), TYPE_BOOL}, + {"dcc_max_get_cps", P_OFFINT (hex_dcc_max_get_cps), TYPE_INT}, + {"dcc_max_send_cps", P_OFFINT (hex_dcc_max_send_cps), TYPE_INT}, + {"dcc_permissions", P_OFFINT (hex_dcc_permissions), TYPE_INT}, + {"dcc_port_first", P_OFFINT (hex_dcc_port_first), TYPE_INT}, + {"dcc_port_last", P_OFFINT (hex_dcc_port_last), TYPE_INT}, + {"dcc_remove", P_OFFINT (hex_dcc_remove), TYPE_BOOL}, + {"dcc_save_nick", P_OFFINT (hex_dcc_save_nick), TYPE_BOOL}, + {"dcc_send_fillspaces", P_OFFINT (hex_dcc_send_fillspaces), TYPE_BOOL}, + {"dcc_stall_timeout", P_OFFINT (hex_dcc_stall_timeout), TYPE_INT}, + {"dcc_timeout", P_OFFINT (hex_dcc_timeout), TYPE_INT}, + + {"flood_ctcp_num", P_OFFINT (hex_flood_ctcp_num), TYPE_INT}, + {"flood_ctcp_time", P_OFFINT (hex_flood_ctcp_time), TYPE_INT}, + {"flood_msg_num", P_OFFINT (hex_flood_msg_num), TYPE_INT}, + {"flood_msg_time", P_OFFINT (hex_flood_msg_time), TYPE_INT}, + + {"gui_autoopen_chat", P_OFFINT (hex_gui_autoopen_chat), TYPE_BOOL}, + {"gui_autoopen_dialog", P_OFFINT (hex_gui_autoopen_dialog), TYPE_BOOL}, + {"gui_autoopen_recv", P_OFFINT (hex_gui_autoopen_recv), TYPE_BOOL}, + {"gui_autoopen_send", P_OFFINT (hex_gui_autoopen_send), TYPE_BOOL}, + {"gui_chanlist_maxusers", P_OFFINT (hex_gui_chanlist_maxusers), TYPE_INT}, + {"gui_chanlist_minusers", P_OFFINT (hex_gui_chanlist_minusers), TYPE_INT}, + {"gui_compact", P_OFFINT (hex_gui_compact), TYPE_BOOL}, + {"gui_dialog_height", P_OFFINT (hex_gui_dialog_height), TYPE_INT}, + {"gui_dialog_left", P_OFFINT (hex_gui_dialog_left), TYPE_INT}, + {"gui_dialog_top", P_OFFINT (hex_gui_dialog_top), TYPE_INT}, + {"gui_dialog_width", P_OFFINT (hex_gui_dialog_width), TYPE_INT}, + {"gui_filesize_iec", P_OFFINT (hex_gui_filesize_iec), TYPE_BOOL}, + {"gui_focus_omitalerts", P_OFFINT (hex_gui_focus_omitalerts), TYPE_BOOL}, + {"gui_hide_menu", P_OFFINT (hex_gui_hide_menu), TYPE_BOOL}, + {"gui_input_attr", P_OFFINT (hex_gui_input_attr), TYPE_BOOL}, + {"gui_input_icon", P_OFFINT (hex_gui_input_icon), TYPE_BOOL}, + {"gui_input_nick", P_OFFINT (hex_gui_input_nick), TYPE_BOOL}, + {"gui_input_spell", P_OFFINT (hex_gui_input_spell), TYPE_BOOL}, + {"gui_input_style", P_OFFINT (hex_gui_input_style), TYPE_BOOL}, + {"gui_join_dialog", P_OFFINT (hex_gui_join_dialog), TYPE_BOOL}, + {"gui_lagometer", P_OFFINT (hex_gui_lagometer), TYPE_INT}, + {"gui_lang", P_OFFINT (hex_gui_lang), TYPE_INT}, + {"gui_mode_buttons", P_OFFINT (hex_gui_mode_buttons), TYPE_BOOL}, + {"gui_pane_divider_position", P_OFFINT (hex_gui_pane_divider_position), TYPE_INT}, + {"gui_pane_left_size", P_OFFINT (hex_gui_pane_left_size), TYPE_INT}, + {"gui_pane_right_size", P_OFFINT (hex_gui_pane_right_size), TYPE_INT}, + {"gui_pane_right_size_min", P_OFFINT (hex_gui_pane_right_size_min), TYPE_INT}, + {"gui_quit_dialog", P_OFFINT (hex_gui_quit_dialog), TYPE_BOOL}, + {"gui_search_pos", P_OFFINT (hex_gui_search_pos), TYPE_INT}, + /* {"gui_single", P_OFFINT (hex_gui_single), TYPE_BOOL}, */ + {"gui_slist_fav", P_OFFINT (hex_gui_slist_fav), TYPE_BOOL}, + {"gui_slist_select", P_OFFINT (hex_gui_slist_select), TYPE_INT}, + {"gui_slist_skip", P_OFFINT (hex_gui_slist_skip), TYPE_BOOL}, + {"gui_tab_chans", P_OFFINT (hex_gui_tab_chans), TYPE_BOOL}, + {"gui_tab_dialogs", P_OFFINT (hex_gui_tab_dialogs), TYPE_BOOL}, + {"gui_tab_dots", P_OFFINT (hex_gui_tab_dots), TYPE_BOOL}, + {"gui_tab_icons", P_OFFINT (hex_gui_tab_icons), TYPE_BOOL}, + {"gui_tab_layout", P_OFFINT (hex_gui_tab_layout), TYPE_INT}, + {"gui_tab_middleclose", P_OFFINT (hex_gui_tab_middleclose), TYPE_BOOL}, + {"gui_tab_newtofront", P_OFFINT (hex_gui_tab_newtofront), TYPE_INT}, + {"gui_tab_pos", P_OFFINT (hex_gui_tab_pos), TYPE_INT}, + {"gui_tab_scrollchans", P_OFFINT (hex_gui_tab_scrollchans), TYPE_BOOL}, + {"gui_tab_server", P_OFFINT (hex_gui_tab_server), TYPE_BOOL}, + {"gui_tab_small", P_OFFINT (hex_gui_tab_small), TYPE_INT}, + {"gui_tab_sort", P_OFFINT (hex_gui_tab_sort), TYPE_BOOL}, + {"gui_tab_trunc", P_OFFINT (hex_gui_tab_trunc), TYPE_INT}, + {"gui_tab_utils", P_OFFINT (hex_gui_tab_utils), TYPE_BOOL}, + {"gui_throttlemeter", P_OFFINT (hex_gui_throttlemeter), TYPE_INT}, + {"gui_topicbar", P_OFFINT (hex_gui_topicbar), TYPE_BOOL}, + {"gui_transparency", P_OFFINT (hex_gui_transparency), TYPE_INT}, + {"gui_tray", P_OFFINT (hex_gui_tray), TYPE_BOOL}, + {"gui_tray_away", P_OFFINT (hex_gui_tray_away), TYPE_BOOL}, + {"gui_tray_blink", P_OFFINT (hex_gui_tray_blink), TYPE_BOOL}, + {"gui_tray_close", P_OFFINT (hex_gui_tray_close), TYPE_BOOL}, + {"gui_tray_minimize", P_OFFINT (hex_gui_tray_minimize), TYPE_BOOL}, + {"gui_tray_quiet", P_OFFINT (hex_gui_tray_quiet), TYPE_BOOL}, + {"gui_ulist_buttons", P_OFFINT (hex_gui_ulist_buttons), TYPE_BOOL}, + {"gui_ulist_color", P_OFFINT (hex_gui_ulist_color), TYPE_BOOL}, + {"gui_ulist_count", P_OFFINT (hex_gui_ulist_count), TYPE_BOOL}, + {"gui_ulist_doubleclick", P_OFFSET (hex_gui_ulist_doubleclick), TYPE_STR}, + {"gui_ulist_hide", P_OFFINT (hex_gui_ulist_hide), TYPE_BOOL}, + {"gui_ulist_icons", P_OFFINT (hex_gui_ulist_icons), TYPE_BOOL}, + {"gui_ulist_pos", P_OFFINT (hex_gui_ulist_pos), TYPE_INT}, + {"gui_ulist_show_hosts", P_OFFINT(hex_gui_ulist_show_hosts), TYPE_BOOL}, + {"gui_ulist_sort", P_OFFINT (hex_gui_ulist_sort), TYPE_INT}, + {"gui_ulist_style", P_OFFINT (hex_gui_ulist_style), TYPE_BOOL}, + {"gui_url_mod", P_OFFINT (hex_gui_url_mod), TYPE_INT}, + {"gui_usermenu", P_OFFINT (hex_gui_usermenu), TYPE_BOOL}, + {"gui_win_height", P_OFFINT (hex_gui_win_height), TYPE_INT}, + {"gui_win_fullscreen", P_OFFINT (hex_gui_win_fullscreen), TYPE_INT}, + {"gui_win_left", P_OFFINT (hex_gui_win_left), TYPE_INT}, + {"gui_win_modes", P_OFFINT (hex_gui_win_modes), TYPE_BOOL}, + {"gui_win_nick", P_OFFINT (hex_gui_win_nick), TYPE_BOOL}, + {"gui_win_save", P_OFFINT (hex_gui_win_save), TYPE_BOOL}, + {"gui_win_state", P_OFFINT (hex_gui_win_state), TYPE_INT}, + {"gui_win_swap", P_OFFINT (hex_gui_win_swap), TYPE_BOOL}, + {"gui_win_top", P_OFFINT (hex_gui_win_top), TYPE_INT}, + {"gui_win_ucount", P_OFFINT (hex_gui_win_ucount), TYPE_BOOL}, + {"gui_win_width", P_OFFINT (hex_gui_win_width), TYPE_INT}, + + {"identd_server", P_OFFINT (hex_identd_server), TYPE_BOOL}, + {"identd_port", P_OFFINT (hex_identd_port), TYPE_INT}, + + {"input_balloon_chans", P_OFFINT (hex_input_balloon_chans), TYPE_BOOL}, + {"input_balloon_hilight", P_OFFINT (hex_input_balloon_hilight), TYPE_BOOL}, + {"input_balloon_priv", P_OFFINT (hex_input_balloon_priv), TYPE_BOOL}, + {"input_beep_chans", P_OFFINT (hex_input_beep_chans), TYPE_BOOL}, + {"input_beep_hilight", P_OFFINT (hex_input_beep_hilight), TYPE_BOOL}, + {"input_beep_priv", P_OFFINT (hex_input_beep_priv), TYPE_BOOL}, + {"input_command_char", P_OFFSET (hex_input_command_char), TYPE_STR}, + {"input_filter_beep", P_OFFINT (hex_input_filter_beep), TYPE_BOOL}, + {"input_flash_chans", P_OFFINT (hex_input_flash_chans), TYPE_BOOL}, + {"input_flash_hilight", P_OFFINT (hex_input_flash_hilight), TYPE_BOOL}, + {"input_flash_priv", P_OFFINT (hex_input_flash_priv), TYPE_BOOL}, + {"input_perc_ascii", P_OFFINT (hex_input_perc_ascii), TYPE_BOOL}, + {"input_perc_color", P_OFFINT (hex_input_perc_color), TYPE_BOOL}, + {"input_tray_chans", P_OFFINT (hex_input_tray_chans), TYPE_BOOL}, + {"input_tray_hilight", P_OFFINT (hex_input_tray_hilight), TYPE_BOOL}, + {"input_tray_priv", P_OFFINT (hex_input_tray_priv), TYPE_BOOL}, + + {"irc_auto_rejoin", P_OFFINT (hex_irc_auto_rejoin), TYPE_BOOL}, + {"irc_reconnect_rejoin", P_OFFINT (hex_irc_reconnect_rejoin), TYPE_BOOL}, + {"irc_ban_type", P_OFFINT (hex_irc_ban_type), TYPE_INT}, + {"irc_cap_server_time", P_OFFINT (hex_irc_cap_server_time), TYPE_BOOL}, + {"irc_conf_mode", P_OFFINT (hex_irc_conf_mode), TYPE_BOOL}, + {"irc_extra_hilight", P_OFFSET (hex_irc_extra_hilight), TYPE_STR}, + {"irc_hide_nickchange", P_OFFINT (hex_irc_hide_nickchange), TYPE_BOOL}, + {"irc_hide_version", P_OFFINT (hex_irc_hide_version), TYPE_BOOL}, + {"irc_hidehost", P_OFFINT (hex_irc_hidehost), TYPE_BOOL}, + {"irc_id_ntext", P_OFFSET (hex_irc_id_ntext), TYPE_STR}, + {"irc_id_ytext", P_OFFSET (hex_irc_id_ytext), TYPE_STR}, + {"irc_invisible", P_OFFINT (hex_irc_invisible), TYPE_BOOL}, + {"irc_join_delay", P_OFFINT (hex_irc_join_delay), TYPE_INT}, + {"irc_logging", P_OFFINT (hex_irc_logging), TYPE_BOOL}, + {"irc_logmask", P_OFFSET (hex_irc_logmask), TYPE_STR}, + {"irc_nick1", P_OFFSET (hex_irc_nick1), TYPE_STR}, + {"irc_nick2", P_OFFSET (hex_irc_nick2), TYPE_STR}, + {"irc_nick3", P_OFFSET (hex_irc_nick3), TYPE_STR}, + {"irc_nick_hilight", P_OFFSET (hex_irc_nick_hilight), TYPE_STR}, + {"irc_no_hilight", P_OFFSET (hex_irc_no_hilight), TYPE_STR}, + {"irc_notice_pos", P_OFFINT (hex_irc_notice_pos), TYPE_INT}, + {"irc_part_reason", P_OFFSET (hex_irc_part_reason), TYPE_STR}, + {"irc_quit_reason", P_OFFSET (hex_irc_quit_reason), TYPE_STR}, + {"irc_raw_modes", P_OFFINT (hex_irc_raw_modes), TYPE_BOOL}, + {"irc_real_name", P_OFFSET (hex_irc_real_name), TYPE_STR}, + {"irc_servernotice", P_OFFINT (hex_irc_servernotice), TYPE_BOOL}, + {"irc_skip_motd", P_OFFINT (hex_irc_skip_motd), TYPE_BOOL}, + {"irc_user_name", P_OFFSET (hex_irc_user_name), TYPE_STR}, + {"irc_wallops", P_OFFINT (hex_irc_wallops), TYPE_BOOL}, + {"irc_who_join", P_OFFINT (hex_irc_who_join), TYPE_BOOL}, + {"irc_whois_front", P_OFFINT (hex_irc_whois_front), TYPE_BOOL}, + + {"net_auto_reconnect", P_OFFINT (hex_net_auto_reconnect), TYPE_BOOL}, +#ifndef WIN32 /* FIXME fix reconnect crashes and remove this ifdef! */ + {"net_auto_reconnectonfail", P_OFFINT (hex_net_auto_reconnectonfail), TYPE_BOOL}, +#endif + {"net_bind_host", P_OFFSET (hex_net_bind_host), TYPE_STR}, + {"net_ping_timeout", P_OFFINT (hex_net_ping_timeout), TYPE_INT, hexchat_reinit_timers}, + {"net_proxy_auth", P_OFFINT (hex_net_proxy_auth), TYPE_BOOL}, + {"net_proxy_host", P_OFFSET (hex_net_proxy_host), TYPE_STR}, + {"net_proxy_pass", P_OFFSET (hex_net_proxy_pass), TYPE_STR}, + {"net_proxy_port", P_OFFINT (hex_net_proxy_port), TYPE_INT}, + {"net_proxy_type", P_OFFINT (hex_net_proxy_type), TYPE_INT}, + {"net_proxy_use", P_OFFINT (hex_net_proxy_use), TYPE_INT}, + {"net_proxy_user", P_OFFSET (hex_net_proxy_user), TYPE_STR}, + {"net_reconnect_delay", P_OFFINT (hex_net_reconnect_delay), TYPE_INT}, + {"net_throttle", P_OFFINT (hex_net_throttle), TYPE_BOOL}, + + {"notify_timeout", P_OFFINT (hex_notify_timeout), TYPE_INT}, + {"notify_whois_online", P_OFFINT (hex_notify_whois_online), TYPE_BOOL}, + + {"perl_warnings", P_OFFINT (hex_perl_warnings), TYPE_BOOL}, + + {"stamp_log", P_OFFINT (hex_stamp_log), TYPE_BOOL}, + {"stamp_log_format", P_OFFSET (hex_stamp_log_format), TYPE_STR}, + {"stamp_text", P_OFFINT (hex_stamp_text), TYPE_BOOL}, + {"stamp_text_format", P_OFFSET (hex_stamp_text_format), TYPE_STR}, + + {"text_autocopy_color", P_OFFINT (hex_text_autocopy_color), TYPE_BOOL}, + {"text_autocopy_stamp", P_OFFINT (hex_text_autocopy_stamp), TYPE_BOOL}, + {"text_autocopy_text", P_OFFINT (hex_text_autocopy_text), TYPE_BOOL}, + {"text_background", P_OFFSET (hex_text_background), TYPE_STR}, + {"text_color_nicks", P_OFFINT (hex_text_color_nicks), TYPE_BOOL}, + {"text_font", P_OFFSET (hex_text_font), TYPE_STR}, + {"text_font_main", P_OFFSET (hex_text_font_main), TYPE_STR}, + {"text_font_alternative", P_OFFSET (hex_text_font_alternative), TYPE_STR}, + {"text_indent", P_OFFINT (hex_text_indent), TYPE_BOOL}, + {"text_max_indent", P_OFFINT (hex_text_max_indent), TYPE_INT}, + {"text_max_lines", P_OFFINT (hex_text_max_lines), TYPE_INT}, + {"text_replay", P_OFFINT (hex_text_replay), TYPE_BOOL}, + {"text_search_case_match", P_OFFINT (hex_text_search_case_match), TYPE_BOOL}, + {"text_search_highlight_all", P_OFFINT (hex_text_search_highlight_all), TYPE_BOOL}, + {"text_search_follow", P_OFFINT (hex_text_search_follow), TYPE_BOOL}, + {"text_search_regexp", P_OFFINT (hex_text_search_regexp), TYPE_BOOL}, + {"text_show_marker", P_OFFINT (hex_text_show_marker), TYPE_BOOL}, + {"text_show_sep", P_OFFINT (hex_text_show_sep), TYPE_BOOL}, + {"text_spell_langs", P_OFFSET (hex_text_spell_langs), TYPE_STR}, + {"text_stripcolor_msg", P_OFFINT (hex_text_stripcolor_msg), TYPE_BOOL}, + {"text_stripcolor_replay", P_OFFINT (hex_text_stripcolor_replay), TYPE_BOOL}, + {"text_stripcolor_topic", P_OFFINT (hex_text_stripcolor_topic), TYPE_BOOL}, + {"text_thin_sep", P_OFFINT (hex_text_thin_sep), TYPE_BOOL}, + {"text_transparent", P_OFFINT (hex_text_transparent), TYPE_BOOL}, + {"text_wordwrap", P_OFFINT (hex_text_wordwrap), TYPE_BOOL}, + + {"url_grabber", P_OFFINT (hex_url_grabber), TYPE_BOOL}, + {"url_grabber_limit", P_OFFINT (hex_url_grabber_limit), TYPE_INT}, + {"url_logging", P_OFFINT (hex_url_logging), TYPE_BOOL}, + {0, 0, 0}, +}; + + +static char * +convert_with_fallback (char *str, const char *fallback) +{ + char *utf; + +#ifndef WIN32 + /* On non-Windows, g_get_user_name and g_get_real_name return a string in system locale, so convert it to utf-8. */ + utf = g_locale_to_utf8 (str, -1, NULL, NULL, 0); + + g_free (str); + + /* The returned string is NULL if conversion from locale to utf-8 failed for any reason. Return the fallback. */ + if (!utf) + utf = g_strdup (fallback); +#else + /* On Windows, they return a string in utf-8, so don't do anything to it. The fallback isn't needed. */ + utf = str; +#endif + + return utf; +} + +static int +find_language_number (const char * const lang) +{ + int i; + + for (i = 0; i < LANGUAGES_LENGTH; i++) + if (!strcmp (lang, languages[i])) + return i; + + return -1; +} + +/* Return the number of the system language if found, or english otherwise. + */ +static int +get_default_language (void) +{ + const char *locale; + char *lang; + char *p; + int lang_no; + + /* LC_ALL overrides LANG, so we must check it first */ + locale = g_getenv ("LC_ALL"); + + if (!locale) + locale = g_getenv ("LANG") ? g_getenv ("LANG") : "en"; + + /* we might end up with something like "en_US.UTF-8". We will try to + * search for "en_US"; if it fails we search for "en". + */ + lang = g_strdup (locale); + + if ((p = strchr (lang, '.'))) + *p='\0'; + + lang_no = find_language_number (lang); + + if (lang_no >= 0) + { + g_free (lang); + return lang_no; + } + + if ((p = strchr (lang, '_'))) + *p='\0'; + + lang_no = find_language_number (lang); + + g_free (lang); + + return lang_no >= 0 ? lang_no : find_language_number ("en"); +} + +static char * +get_default_spell_languages (void) +{ + const gchar* const *langs = g_get_language_names (); + char *last = NULL; + char *p; + char lang_list[64]; + char *ret = lang_list; + int i; + + if (langs != NULL) + { + memset (lang_list, 0, sizeof(lang_list)); + + for (i = 0; langs[i]; i++) + { + if (g_ascii_strncasecmp (langs[i], "C", 1) != 0 && strlen (langs[i]) >= 2) + { + /* Avoid duplicates */ + if (!last || !g_str_has_prefix (langs[i], last)) + { + if (last != NULL) + { + g_free(last); + g_strlcat (lang_list, ",", sizeof(lang_list)); + } + + /* ignore .utf8 */ + if ((p = strchr (langs[i], '.'))) + *p='\0'; + + last = g_strndup (langs[i], 2); + + g_strlcat (lang_list, langs[i], sizeof(lang_list)); + } + } + } + + g_free (last); + + if (lang_list[0]) + return g_strdup (ret); + } + + return g_strdup ("en"); +} + +void +load_default_config(void) +{ + char *username, *realname, *langs; + const char *font; + char *sp; +#ifdef WIN32 + wchar_t* roaming_path_wide; + gchar* roaming_path; +#endif + + username = g_strdup(g_get_user_name ()); + if (!username) + username = g_strdup ("root"); + + /* We hid Real name from the Network List, so don't use the user's name unnoticeably */ + /* realname = g_get_real_name (); + if ((realname && realname[0] == 0) || !realname) + realname = username; */ + realname = g_strdup ("realname"); + + username = convert_with_fallback (username, "username"); + realname = convert_with_fallback (realname, "realname"); + + memset (&prefs, 0, sizeof (struct hexchatprefs)); + + /* put in default values, anything left out is automatically zero */ + + /* BOOLEANS */ + prefs.hex_away_show_once = 1; + prefs.hex_away_track = 1; + prefs.hex_dcc_auto_resume = 1; +#ifndef WIN32 + prefs.hex_dcc_fast_send = 1; +#endif + prefs.hex_gui_autoopen_chat = 1; + prefs.hex_gui_autoopen_dialog = 1; + prefs.hex_gui_autoopen_recv = 1; + prefs.hex_gui_autoopen_send = 1; +#ifdef HAVE_GTK_MAC + prefs.hex_gui_hide_menu = 1; +#endif + prefs.hex_gui_input_attr = 1; + prefs.hex_gui_input_icon = 1; + prefs.hex_gui_input_nick = 1; + prefs.hex_gui_input_spell = 1; + prefs.hex_gui_input_style = 1; + prefs.hex_gui_join_dialog = 1; + prefs.hex_gui_quit_dialog = 1; + /* prefs.hex_gui_slist_skip = 1; */ + prefs.hex_gui_tab_chans = 1; + prefs.hex_gui_tab_dialogs = 1; + prefs.hex_gui_tab_icons = 1; + prefs.hex_gui_tab_middleclose = 1; + prefs.hex_gui_tab_server = 1; + prefs.hex_gui_tab_sort = 1; + prefs.hex_gui_topicbar = 1; + prefs.hex_gui_transparency = 255; + prefs.hex_gui_tray = 1; + prefs.hex_gui_tray_blink = 1; + prefs.hex_gui_ulist_count = 1; + prefs.hex_gui_ulist_icons = 1; + prefs.hex_gui_ulist_style = 1; + prefs.hex_gui_win_nick = 1; + prefs.hex_gui_win_save = 1; + prefs.hex_input_filter_beep = 1; + prefs.hex_input_flash_hilight = 1; + prefs.hex_input_flash_priv = 1; + prefs.hex_input_tray_hilight = 1; + prefs.hex_input_tray_priv = 1; + prefs.hex_irc_reconnect_rejoin = 1; + prefs.hex_irc_cap_server_time = 1; + prefs.hex_irc_logging = 1; + prefs.hex_irc_who_join = 1; /* Can kick with inordinate amount of channels, required for some of our features though, TODO: add cap like away check? */ + prefs.hex_irc_whois_front = 1; + prefs.hex_net_auto_reconnect = 1; + prefs.hex_net_throttle = 1; + prefs.hex_stamp_log = 1; + prefs.hex_stamp_text = 1; + prefs.hex_text_autocopy_text = 1; + prefs.hex_text_indent = 1; + prefs.hex_text_replay = 1; + prefs.hex_text_search_follow = 1; + prefs.hex_text_show_marker = 1; + prefs.hex_text_show_sep = 1; + prefs.hex_text_stripcolor_replay = 1; + prefs.hex_text_stripcolor_topic = 1; + prefs.hex_text_thin_sep = 1; + prefs.hex_text_wordwrap = 1; + prefs.hex_url_grabber = 1; + + /* NUMBERS */ + prefs.hex_away_size_max = 300; + prefs.hex_away_timeout = 60; + prefs.hex_completion_amount = 5; + prefs.hex_completion_sort = 1; + prefs.hex_dcc_auto_recv = 1; /* browse mode */ + prefs.hex_dcc_blocksize = 1024; + prefs.hex_dcc_permissions = 0600; + prefs.hex_dcc_stall_timeout = 60; + prefs.hex_dcc_timeout = 180; + prefs.hex_flood_ctcp_num = 5; + prefs.hex_flood_ctcp_time = 30; + prefs.hex_flood_msg_num = 5; + /*FIXME*/ prefs.hex_flood_msg_time = 30; + prefs.hex_gui_chanlist_maxusers = 9999; + prefs.hex_gui_chanlist_minusers = 5; + prefs.hex_gui_dialog_height = 256; + prefs.hex_gui_dialog_width = 500; + prefs.hex_gui_lagometer = 1; + prefs.hex_gui_lang = get_default_language(); + prefs.hex_gui_pane_left_size = 128; /* with treeview icons we need a bit bigger space */ + prefs.hex_gui_pane_right_size = 100; + prefs.hex_gui_pane_right_size_min = 80; + prefs.hex_gui_tab_layout = 2; /* 0=Tabs 1=Reserved 2=Tree */ + prefs.hex_gui_tab_newtofront = 2; + prefs.hex_gui_tab_pos = 1; + prefs.hex_gui_tab_trunc = 20; + prefs.hex_gui_throttlemeter = 1; + prefs.hex_gui_ulist_pos = 3; + prefs.hex_gui_win_height = 400; + prefs.hex_gui_win_width = 640; + prefs.hex_irc_ban_type = 1; + prefs.hex_irc_join_delay = 5; + prefs.hex_net_ping_timeout = 60; + prefs.hex_net_reconnect_delay = 10; + prefs.hex_notify_timeout = 15; + prefs.hex_text_max_indent = 256; + prefs.hex_text_max_lines = 5000; + prefs.hex_url_grabber_limit = 100; /* 0 means unlimited */ + + /* STRINGS */ + strcpy (prefs.hex_away_reason, _("I'm busy")); + strcpy (prefs.hex_completion_suffix, ","); +#ifdef WIN32 + if (portable_mode () || SHGetKnownFolderPath (&FOLDERID_Downloads, 0, NULL, &roaming_path_wide) != S_OK) + { + g_snprintf (prefs.hex_dcc_dir, sizeof (prefs.hex_dcc_dir), "%s\\downloads", get_xdir ()); + } + else + { + roaming_path = g_utf16_to_utf8 (roaming_path_wide, -1, NULL, NULL, NULL); + CoTaskMemFree (roaming_path_wide); + + g_strlcpy (prefs.hex_dcc_dir, roaming_path, sizeof (prefs.hex_dcc_dir)); + + g_free (roaming_path); + } +#else + if (g_get_user_special_dir (G_USER_DIRECTORY_DOWNLOAD)) + { + safe_strcpy (prefs.hex_dcc_dir, g_get_user_special_dir (G_USER_DIRECTORY_DOWNLOAD), sizeof(prefs.hex_dcc_dir)); + } + else + { + char *download_dir = g_build_filename (g_get_home_dir (), "Downloads", NULL); + safe_strcpy (prefs.hex_dcc_dir, download_dir, sizeof(prefs.hex_dcc_dir)); + g_free (download_dir); + } +#endif + strcpy (prefs.hex_gui_ulist_doubleclick, "QUERY %s"); + strcpy (prefs.hex_input_command_char, "/"); + strcpy (prefs.hex_irc_logmask, "%n"G_DIR_SEPARATOR_S"%c.log"); + safe_strcpy (prefs.hex_irc_nick1, username, sizeof(prefs.hex_irc_nick1)); + safe_strcpy (prefs.hex_irc_nick2, username, sizeof(prefs.hex_irc_nick2)); + g_strlcat (prefs.hex_irc_nick2, "_", sizeof(prefs.hex_irc_nick2)); + safe_strcpy (prefs.hex_irc_nick3, username, sizeof(prefs.hex_irc_nick3)); + g_strlcat (prefs.hex_irc_nick3, "__", sizeof(prefs.hex_irc_nick3)); + strcpy (prefs.hex_irc_no_hilight, "NickServ,ChanServ,InfoServ,N,Q"); + safe_strcpy (prefs.hex_irc_part_reason, _("Leaving"), sizeof(prefs.hex_irc_part_reason)); + safe_strcpy (prefs.hex_irc_quit_reason, prefs.hex_irc_part_reason, sizeof(prefs.hex_irc_quit_reason)); + safe_strcpy (prefs.hex_irc_real_name, realname, sizeof(prefs.hex_irc_real_name)); + safe_strcpy (prefs.hex_irc_user_name, username, sizeof(prefs.hex_irc_user_name)); + strcpy (prefs.hex_stamp_log_format, "%b %d %H:%M:%S "); + strcpy (prefs.hex_stamp_text_format, "[%H:%M:%S] "); + + font = fe_get_default_font (); + if (font) + { + safe_strcpy (prefs.hex_text_font, font, sizeof(prefs.hex_text_font)); + safe_strcpy (prefs.hex_text_font_main, font, sizeof(prefs.hex_text_font_main)); + } + else + { + strcpy (prefs.hex_text_font, DEF_FONT); + strcpy (prefs.hex_text_font_main, DEF_FONT); + } + + strcpy (prefs.hex_text_font_alternative, DEF_FONT_ALTER); + langs = get_default_spell_languages (); + safe_strcpy (prefs.hex_text_spell_langs, langs, sizeof(prefs.hex_text_spell_langs)); + + + /* private variables */ + prefs.local_ip = 0xffffffff; + + sp = strchr (prefs.hex_irc_user_name, ' '); + if (sp) + sp[0] = 0; /* spaces in username would break the login */ + + g_free (username); + g_free (realname); + g_free (langs); +} + +int +make_config_dirs (void) +{ + char *buf; + + if (g_mkdir_with_parents (get_xdir (), 0700) != 0) + return -1; + + buf = g_build_filename (get_xdir (), "addons", NULL); + if (g_mkdir (buf, 0700) != 0) + { + g_free (buf); + return -1; + } + g_free (buf); + + buf = g_build_filename (get_xdir (), HEXCHAT_SOUND_DIR, NULL); + if (g_mkdir (buf, 0700) != 0) + { + g_free (buf); + return -1; + } + g_free (buf); + + return 0; +} + +int +make_dcc_dirs (void) +{ + if (g_mkdir (prefs.hex_dcc_dir, 0700) != 0) + return -1; + + if (g_mkdir (prefs.hex_dcc_completed_dir, 0700) != 0) + return -1; + + return 0; +} + +int +load_config (void) +{ + char *cfg, *sp; + int res, val, i; + + g_assert(check_config_dir () == 0); + + if (!g_file_get_contents (default_file (), &cfg, NULL, NULL)) + return -1; + + /* If the config is incomplete we have the default values loaded */ + load_default_config(); + + i = 0; + do + { + switch (vars[i].type) + { + case TYPE_STR: + cfg_get_str (cfg, vars[i].name, (char *) &prefs + vars[i].offset, + vars[i].len); + break; + case TYPE_BOOL: + case TYPE_INT: + val = cfg_get_int_with_result (cfg, vars[i].name, &res); + if (res) + *((int *) &prefs + vars[i].offset) = val; + break; + } + i++; + } + while (vars[i].name); + + g_free (cfg); + + if (prefs.hex_gui_win_height < 138) + prefs.hex_gui_win_height = 138; + if (prefs.hex_gui_win_width < 106) + prefs.hex_gui_win_width = 106; + + sp = strchr (prefs.hex_irc_user_name, ' '); + if (sp) + sp[0] = 0; /* spaces in username would break the login */ + + return 0; +} + +int +save_config (void) +{ + int fh, i; + char *config, *new_config; + + if (check_config_dir () != 0) + make_config_dirs (); + + config = default_file (); + new_config = g_strconcat (config, ".new", NULL); + + fh = g_open (new_config, OFLAGS | O_TRUNC | O_WRONLY | O_CREAT, 0600); + if (fh == -1) + { + g_free (new_config); + return 0; + } + + if (!cfg_put_str (fh, "version", PACKAGE_VERSION)) + { + close (fh); + g_free (new_config); + return 0; + } + + i = 0; + do + { + switch (vars[i].type) + { + case TYPE_STR: + if (!cfg_put_str (fh, vars[i].name, (char *) &prefs + vars[i].offset)) + { + close (fh); + g_free (new_config); + return 0; + } + break; + case TYPE_INT: + case TYPE_BOOL: + if (!cfg_put_int (fh, *((int *) &prefs + vars[i].offset), vars[i].name)) + { + close (fh); + g_free (new_config); + return 0; + } + } + + if (vars[i].after_update != NULL) + { + vars[i].after_update(); + } + i++; + } + while (vars[i].name); + + if (close (fh) == -1) + { + g_free (new_config); + return 0; + } + +#ifdef WIN32 + g_unlink (config); /* win32 can't rename to an existing file */ +#endif + if (g_rename (new_config, config) == -1) + { + g_free (new_config); + return 0; + } + g_free (new_config); + + return 1; +} + +static void +set_showval (session *sess, const struct prefs *var, char *tbuf) +{ + size_t len; + size_t dots; + size_t j; + + len = strlen (var->name); + memcpy (tbuf, var->name, len); + if (len > 29) + dots = 0; + else + dots = 29 - len; + + tbuf[len++] = '\003'; + tbuf[len++] = '2'; + + for (j = 0; j < dots; j++) + { + tbuf[j + len] = '.'; + } + + len += j; + + switch (var->type) + { + case TYPE_STR: + sprintf (tbuf + len, "\0033:\017 %s\n", (char *) &prefs + var->offset); + break; + case TYPE_INT: + sprintf (tbuf + len, "\0033:\017 %d\n", *((int *) &prefs + var->offset)); + break; + case TYPE_BOOL: + if (*((int *) &prefs + var->offset)) + { + sprintf (tbuf + len, "\0033:\017 %s\n", "ON"); + } + else + { + sprintf (tbuf + len, "\0033:\017 %s\n", "OFF"); + } + break; + } + + PrintText (sess, tbuf); +} + +static void +set_list (session * sess, char *tbuf) +{ + int i; + + i = 0; + do + { + set_showval (sess, &vars[i], tbuf); + i++; + } + while (vars[i].name); +} + +int +cfg_get_bool (char *var) +{ + int i = 0; + + do + { + if (!g_ascii_strcasecmp (var, vars[i].name)) + { + return *((int *) &prefs + vars[i].offset); + } + i++; + } + while (vars[i].name); + + return -1; +} + +int +cmd_set (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int wild = FALSE; + int or = FALSE; + int off = FALSE; + int quiet = FALSE; + int erase = FALSE; + int i = 0, finds = 0, found; + int idx = 2; + int prev_numeric; + char *var, *val, *prev_string; + + if (g_ascii_strcasecmp (word[2], "-e") == 0) + { + idx++; + erase = TRUE; + } + + /* turn a bit OFF */ + if (g_ascii_strcasecmp (word[idx], "-off") == 0) + { + idx++; + off = TRUE; + } + + /* turn a bit ON */ + if (g_ascii_strcasecmp (word[idx], "-or") == 0 || g_ascii_strcasecmp (word[idx], "-on") == 0) + { + idx++; + or = TRUE; + } + + if (g_ascii_strcasecmp (word[idx], "-quiet") == 0) + { + idx++; + quiet = TRUE; + } + + var = word[idx]; + val = word_eol[idx+1]; + + if (!*var) + { + set_list (sess, tbuf); + return TRUE; + } + + if ((strchr (var, '*') || strchr (var, '?')) && !*val) + { + wild = TRUE; + } + + if (*val == '=') + { + val++; + } + + do + { + if (wild) + { + found = !match (var, vars[i].name); + } + else + { + found = g_ascii_strcasecmp (var, vars[i].name); + } + + if (found == 0) + { + finds++; + switch (vars[i].type) + { + case TYPE_STR: + if (erase || *val) + { + /* save the previous value until we print it out */ + prev_string = g_malloc (vars[i].len + 1); + strncpy (prev_string, (char *) &prefs + vars[i].offset, vars[i].len); + + /* update the variable */ + strncpy ((char *) &prefs + vars[i].offset, val, vars[i].len); + ((char *) &prefs)[vars[i].offset + vars[i].len - 1] = 0; + + if (!quiet) + { + PrintTextf (sess, "%s set to: %s (was: %s)\n", var, (char *) &prefs + vars[i].offset, prev_string); + } + + g_free (prev_string); + } + else + { + set_showval (sess, &vars[i], tbuf); + } + break; + case TYPE_INT: + case TYPE_BOOL: + if (*val) + { + prev_numeric = *((int *) &prefs + vars[i].offset); + if (vars[i].type == TYPE_BOOL) + { + if (atoi (val)) + { + *((int *) &prefs + vars[i].offset) = 1; + } + else + { + *((int *) &prefs + vars[i].offset) = 0; + } + if (!g_ascii_strcasecmp (val, "YES") || !g_ascii_strcasecmp (val, "ON")) + { + *((int *) &prefs + vars[i].offset) = 1; + } + if (!g_ascii_strcasecmp (val, "NO") || !g_ascii_strcasecmp (val, "OFF")) + { + *((int *) &prefs + vars[i].offset) = 0; + } + } + else + { + if (or) + { + *((int *) &prefs + vars[i].offset) |= atoi (val); + } + else if (off) + { + *((int *) &prefs + vars[i].offset) &= ~(atoi (val)); + } + else + { + *((int *) &prefs + vars[i].offset) = atoi (val); + } + } + if (!quiet) + { + PrintTextf (sess, "%s set to: %d (was: %d)\n", var, *((int *) &prefs + vars[i].offset), prev_numeric); + } + } + else + { + set_showval (sess, &vars[i], tbuf); + } + + if (vars[i].after_update != NULL) + { + vars[i].after_update(); + } + break; + } + } + i++; + } + while (vars[i].name); + + if (!finds && !quiet) + { + PrintText (sess, "No such variable.\n"); + } + else if (!save_config ()) + { + PrintText (sess, "Error saving changes to disk.\n"); + } + + return TRUE; +} + +int +hexchat_open_file (const char *file, int flags, int mode, int xof_flags) +{ + char *buf; + int fd; + + if (xof_flags & XOF_FULLPATH) + { + if (xof_flags & XOF_DOMODE) + return g_open (file, flags | OFLAGS, mode); + else + return g_open (file, flags | OFLAGS, 0); + } + + buf = g_build_filename (get_xdir (), file, NULL); + + if (xof_flags & XOF_DOMODE) + { + fd = g_open (buf, flags | OFLAGS, mode); + } + else + { + fd = g_open (buf, flags | OFLAGS, 0); + } + + g_free (buf); + + return fd; +} + +FILE * +hexchat_fopen_file (const char *file, const char *mode, int xof_flags) +{ + char *buf; + FILE *fh; + + if (xof_flags & XOF_FULLPATH) + return g_fopen (file, mode); + + buf = g_build_filename (get_xdir (), file, NULL); + fh = g_fopen (buf, mode); + g_free (buf); + + return fh; +} diff --git a/hexchat/src/common/cfgfiles.h b/hexchat/src/common/cfgfiles.h new file mode 100644 index 0000000..b0d5751 --- /dev/null +++ b/hexchat/src/common/cfgfiles.h @@ -0,0 +1,87 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +/* cfgfiles.h */ + +#ifndef HEXCHAT_CFGFILES_H +#define HEXCHAT_CFGFILES_H + +#include "hexchat.h" + +#define LANGUAGES_LENGTH 53 + +extern char *xdir; +extern const char * const languages[LANGUAGES_LENGTH]; + +char *cfg_get_str (char *cfg, const char *var, char *dest, int dest_len); +int cfg_get_bool (char *var); +int cfg_get_int_with_result (char *cfg, char *var, int *result); +int cfg_get_int (char *cfg, char *var); +int cfg_put_int (int fh, int value, char *var); +int cfg_get_color (char *cfg, char *var, guint16 *r, guint16 *g, guint16 *b); +int cfg_put_color (int fh, guint16 r, guint16 g, guint16 b, char *var); +char *get_xdir (void); +int check_config_dir (void); +void load_default_config (void); +int make_config_dirs (void); +int make_dcc_dirs (void); +int load_config (void); +int save_config (void); +void list_free (GSList ** list); +void list_loadconf (char *file, GSList ** list, char *defaultconf); +int list_delentry (GSList ** list, char *name); +void list_addentry (GSList ** list, char *cmd, char *name); +int cmd_set (session *sess, char *tbuf, char *word[], char *word_eol[]); +int hexchat_open_file (const char *file, int flags, int mode, int xof_flags); +FILE *hexchat_fopen_file (const char *file, const char *mode, int xof_flags); + +#define XOF_DOMODE 1 +#define XOF_FULLPATH 2 + +#define STRUCT_OFFSET_STR(type,field) \ +( (unsigned int) (((char *) (&(((type *) NULL)->field)))- ((char *) NULL)) ) + +#define STRUCT_OFFSET_INT(type,field) \ +( (unsigned int) (((int *) (&(((type *) NULL)->field)))- ((int *) NULL)) ) + +#define P_OFFSET(field) STRUCT_OFFSET_STR(struct hexchatprefs, field),sizeof(prefs.field) +#define P_OFFSETNL(field) STRUCT_OFFSET_STR(struct hexchatprefs, field) +#define P_OFFINT(field) STRUCT_OFFSET_INT(struct hexchatprefs, field),0 +#define P_OFFINTNL(field) STRUCT_OFFSET_INT(struct hexchatprefs, field) + +struct prefs +{ + char *name; + unsigned short offset; + unsigned short len; + unsigned short type; + /* + * an optional function which will be called after the preference value has + * been updated. + */ + void (*after_update)(void); +}; + +#define TYPE_STR 0 +#define TYPE_INT 1 +#define TYPE_BOOL 2 + +#define HEXCHAT_SOUND_DIR "sounds" + +#endif diff --git a/hexchat/src/common/chanopt.c b/hexchat/src/common/chanopt.c new file mode 100644 index 0000000..67cb46c --- /dev/null +++ b/hexchat/src/common/chanopt.c @@ -0,0 +1,462 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +/* per-channel/dialog settings :: /CHANOPT */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <errno.h> + +#ifdef WIN32 +#include <io.h> +#else +#include <unistd.h> +#endif + +#include "hexchat.h" + +#include "cfgfiles.h" +#include "server.h" +#include "text.h" +#include "util.h" +#include "hexchatc.h" + + +static GSList *chanopt_list = NULL; +static gboolean chanopt_open = FALSE; +static gboolean chanopt_changed = FALSE; + + +typedef struct +{ + char *name; + char *alias; /* old names from 2.8.4 */ + int offset; +} channel_options; + +#define S_F(xx) STRUCT_OFFSET_STR(struct session,xx) + +static const channel_options chanopt[] = +{ + {"alert_balloon", NULL, S_F(alert_balloon)}, + {"alert_beep", "BEEP", S_F(alert_beep)}, + {"alert_taskbar", NULL, S_F(alert_taskbar)}, + {"alert_tray", "TRAY", S_F(alert_tray)}, + + {"text_hidejoinpart", "CONFMODE", S_F(text_hidejoinpart)}, + {"text_logging", NULL, S_F(text_logging)}, + {"text_scrollback", NULL, S_F(text_scrollback)}, + {"text_strip", NULL, S_F(text_strip)}, +}; + +#undef S_F + +static char * +chanopt_value (guint8 val) +{ + switch (val) + { + case SET_OFF: + return _("OFF"); + case SET_ON: + return _("ON"); + case SET_DEFAULT: + return _("{unset}"); + default: + g_assert_not_reached (); + return NULL; + } +} + +static guint8 +str_to_chanopt (const char *str) +{ + if (!g_ascii_strcasecmp (str, "ON") || !strcmp (str, "1")) + return SET_ON; + else if (!g_ascii_strcasecmp (str, "OFF") || !strcmp (str, "0")) + return SET_OFF; + else + return SET_DEFAULT; +} + +/* handle the /CHANOPT command */ + +int +chanopt_command (session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int dots, i = 0, j, p = 0; + guint8 val; + int offset = 2; + char *find; + gboolean quiet = FALSE; + int newval = -1; + + if (!strcmp (word[2], "-quiet")) + { + quiet = TRUE; + offset++; + } + + find = word[offset++]; + + if (word[offset][0]) + { + newval = str_to_chanopt (word[offset]); + } + + if (!quiet) + PrintTextf (sess, "\002%s\002: %s \002%s\002: %s\n", + _("Network"), + sess->server->network ? server_get_network (sess->server, TRUE) : _("<none>"), + _("Channel"), + sess->session_name[0] ? sess->session_name : _("<none>")); + + while (i < sizeof (chanopt) / sizeof (channel_options)) + { + if (find[0] == 0 || match (find, chanopt[i].name) || (chanopt[i].alias && match (find, chanopt[i].alias))) + { + if (newval != -1) /* set new value */ + { + *(guint8 *)G_STRUCT_MEMBER_P(sess, chanopt[i].offset) = newval; + chanopt_changed = TRUE; + } + + if (!quiet) /* print value */ + { + strcpy (tbuf, chanopt[i].name); + p = strlen (tbuf); + + tbuf[p++] = 3; + tbuf[p++] = '2'; + + dots = 20 - strlen (chanopt[i].name); + + for (j = 0; j < dots; j++) + tbuf[p++] = '.'; + tbuf[p++] = 0; + + val = G_STRUCT_MEMBER (guint8, sess, chanopt[i].offset); + PrintTextf (sess, "%s\0033:\017 %s", tbuf, chanopt_value (val)); + } + } + i++; + } + + return TRUE; +} + +/* is a per-channel setting set? Or is it UNSET and + * the global version is set? */ + +gboolean +chanopt_is_set (unsigned int global, guint8 per_chan_setting) +{ + if (per_chan_setting == SET_ON || per_chan_setting == SET_OFF) + return per_chan_setting; + else + return global; +} + +/* === below is LOADING/SAVING stuff only === */ + +typedef struct +{ + /* Per-Channel Alerts */ + /* use a byte, because we need a pointer to each element */ + guint8 alert_balloon; + guint8 alert_beep; + guint8 alert_taskbar; + guint8 alert_tray; + + /* Per-Channel Settings */ + guint8 text_hidejoinpart; + guint8 text_logging; + guint8 text_scrollback; + guint8 text_strip; + + char *network; + char *channel; + +} chanopt_in_memory; + + +static chanopt_in_memory * +chanopt_find (char *network, char *channel, gboolean add_new) +{ + GSList *list; + chanopt_in_memory *co; + int i; + + for (list = chanopt_list; list; list = list->next) + { + co = list->data; + if (!g_ascii_strcasecmp (co->channel, channel) && + !g_ascii_strcasecmp (co->network, network)) + return co; + } + + if (!add_new) + return NULL; + + /* allocate a new one */ + co = g_new0 (chanopt_in_memory, 1); + co->channel = g_strdup (channel); + co->network = g_strdup (network); + + /* set all values to SET_DEFAULT */ + i = 0; + while (i < sizeof (chanopt) / sizeof (channel_options)) + { + *(guint8 *)G_STRUCT_MEMBER_P(co, chanopt[i].offset) = SET_DEFAULT; + i++; + } + + chanopt_list = g_slist_prepend (chanopt_list, co); + chanopt_changed = TRUE; + + return co; +} + +static void +chanopt_add_opt (chanopt_in_memory *co, char *var, int new_value) +{ + int i; + + i = 0; + while (i < sizeof (chanopt) / sizeof (channel_options)) + { + if (!strcmp (var, chanopt[i].name)) + { + *(guint8 *)G_STRUCT_MEMBER_P(co, chanopt[i].offset) = new_value; + + } + i++; + } +} + +/* load chanopt.conf from disk into our chanopt_list GSList */ + +static void +chanopt_load_all (void) +{ + int fh; + char buf[256]; + char *eq; + char *network = NULL; + chanopt_in_memory *current = NULL; + + /* 1. load the old file into our GSList */ + fh = hexchat_open_file ("chanopt.conf", O_RDONLY, 0, 0); + if (fh != -1) + { + while (waitline (fh, buf, sizeof buf, FALSE) != -1) + { + eq = strchr (buf, '='); + if (!eq) + continue; + eq[0] = 0; + + if (eq != buf && eq[-1] == ' ') + eq[-1] = 0; + + if (!strcmp (buf, "network")) + { + g_free (network); + network = g_strdup (eq + 2); + } + else if (!strcmp (buf, "channel")) + { + current = chanopt_find (network, eq + 2, TRUE); + chanopt_changed = FALSE; + } + else + { + if (current) + chanopt_add_opt (current, buf, str_to_chanopt (eq + 2)); + } + + } + close (fh); + g_free (network); + } +} + +void +chanopt_load (session *sess) +{ + int i; + guint8 val; + chanopt_in_memory *co; + char *network; + + if (sess->session_name[0] == 0) + return; + + network = server_get_network (sess->server, FALSE); + if (!network) + return; + + if (!chanopt_open) + { + chanopt_open = TRUE; + chanopt_load_all (); + } + + co = chanopt_find (network, sess->session_name, FALSE); + if (!co) + return; + + /* fill in all the sess->xxxxx fields */ + i = 0; + while (i < sizeof (chanopt) / sizeof (channel_options)) + { + val = G_STRUCT_MEMBER(guint8, co, chanopt[i].offset); + *(guint8 *)G_STRUCT_MEMBER_P(sess, chanopt[i].offset) = val; + i++; + } +} + +void +chanopt_save (session *sess) +{ + int i; + guint8 vals; + guint8 valm; + chanopt_in_memory *co; + char *network; + + if (sess->session_name[0] == 0) + return; + + network = server_get_network (sess->server, FALSE); + if (!network) + return; + + /* 2. reconcile sess with what we loaded from disk */ + + co = chanopt_find (network, sess->session_name, TRUE); + + i = 0; + while (i < sizeof (chanopt) / sizeof (channel_options)) + { + vals = G_STRUCT_MEMBER(guint8, sess, chanopt[i].offset); + valm = G_STRUCT_MEMBER(guint8, co, chanopt[i].offset); + + if (vals != valm) + { + *(guint8 *)G_STRUCT_MEMBER_P(co, chanopt[i].offset) = vals; + chanopt_changed = TRUE; + } + + i++; + } +} + +static void +chanopt_save_one_channel (chanopt_in_memory *co, int fh) +{ + int i; + char buf[256]; + guint8 val; + + g_snprintf (buf, sizeof (buf), "%s = %s\n", "network", co->network); + write (fh, buf, strlen (buf)); + + g_snprintf (buf, sizeof (buf), "%s = %s\n", "channel", co->channel); + write (fh, buf, strlen (buf)); + + i = 0; + while (i < sizeof (chanopt) / sizeof (channel_options)) + { + val = G_STRUCT_MEMBER (guint8, co, chanopt[i].offset); + if (val != SET_DEFAULT) + { + g_snprintf (buf, sizeof (buf), "%s = %d\n", chanopt[i].name, val); + write (fh, buf, strlen (buf)); + } + i++; + } +} + +void +chanopt_save_all (gboolean flush) +{ + int i; + int num_saved; + int fh; + GSList *list; + chanopt_in_memory *co; + guint8 val; + + if (!chanopt_list || !chanopt_changed) + { + return; + } + + fh = hexchat_open_file ("chanopt.conf", O_TRUNC | O_WRONLY | O_CREAT, 0600, XOF_DOMODE); + if (fh == -1) + { + return; + } + + for (num_saved = 0, list = chanopt_list; list; list = list->next) + { + co = list->data; + + i = 0; + while (i < sizeof (chanopt) / sizeof (channel_options)) + { + val = G_STRUCT_MEMBER (guint8, co, chanopt[i].offset); + /* not using global/default setting, must save */ + if (val != SET_DEFAULT) + { + if (num_saved != 0) + write (fh, "\n", 1); + + chanopt_save_one_channel (co, fh); + num_saved++; + goto cont; + } + i++; + } + +cont: + if (flush) + { + g_free (co->network); + g_free (co->channel); + g_free (co); + } + } + + close (fh); + + if (flush) + { + g_slist_free (chanopt_list); + chanopt_list = NULL; + } + + chanopt_open = FALSE; + chanopt_changed = FALSE; +} diff --git a/hexchat/src/common/chanopt.h b/hexchat/src/common/chanopt.h new file mode 100644 index 0000000..a549460 --- /dev/null +++ b/hexchat/src/common/chanopt.h @@ -0,0 +1,29 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_CHANOPT_H +#define HEXCHAT_CHANOPT_H + +int chanopt_command (session *sess, char *tbuf, char *word[], char *word_eol[]); +gboolean chanopt_is_set (unsigned int global, guint8 per_chan_setting); +void chanopt_save_all (gboolean flush); +void chanopt_save (session *sess); +void chanopt_load (session *sess); + +#endif diff --git a/hexchat/src/common/common.vcxproj b/hexchat/src/common/common.vcxproj new file mode 100644 index 0000000..c91d8cb --- /dev/null +++ b/hexchat/src/common/common.vcxproj @@ -0,0 +1,123 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup Label="Configuration"> + <PlatformToolset>v142</PlatformToolset> + <ConfigurationType>StaticLibrary</ConfigurationType> + </PropertyGroup> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <ItemGroup> + <ClInclude Include="cfgfiles.h" /> + <ClInclude Include="chanopt.h" /> + <ClInclude Include="ctcp.h" /> + <ClInclude Include="dcc.h" /> + <ClInclude Include="fe.h" /> + <ClInclude Include="history.h" /> + <ClInclude Include="ignore.h" /> + <ClInclude Include="inbound.h" /> + <ClInclude Include="inet.h" /> + <ClInclude Include="$(HexChatLib)marshal.h" /> + <ClInclude Include="modes.h" /> + <ClInclude Include="network.h" /> + <ClInclude Include="notify.h" /> + <ClInclude Include="outbound.h" /> + <ClInclude Include="plugin-identd.h" /> + <ClInclude Include="plugin-timer.h" /> + <ClInclude Include="plugin.h" /> + <ClInclude Include="proto-irc.h" /> + <ClInclude Include="server.h" /> + <ClInclude Include="servlist.h" /> + <ClInclude Include="ssl.h" /> + <ClInclude Include="scram.h" /> + <ClInclude Include="sysinfo\sysinfo.h" /> + <ClInclude Include="text.h" /> + <ClInclude Include="$(HexChatLib)textenums.h" /> + <ClInclude Include="$(HexChatLib)textevents.h" /> + <ClInclude Include="tree.h" /> + <ClInclude Include="typedef.h" /> + <ClInclude Include="url.h" /> + <ClInclude Include="userlist.h" /> + <ClInclude Include="util.h" /> + <ClInclude Include="hexchat-plugin.h" /> + <ClInclude Include="hexchat.h" /> + <ClInclude Include="hexchatc.h" /> + </ItemGroup> + <ItemGroup> + <ClCompile Include="cfgfiles.c" /> + <ClCompile Include="chanopt.c" /> + <ClCompile Include="ctcp.c" /> + <ClCompile Include="dcc.c" /> + <ClCompile Include="history.c" /> + <ClCompile Include="plugin-identd.c" /> + <ClCompile Include="ignore.c" /> + <ClCompile Include="inbound.c" /> + <ClCompile Include="$(HexChatLib)marshal.c" /> + <ClCompile Include="modes.c" /> + <ClCompile Include="network.c" /> + <ClCompile Include="notify.c" /> + <ClCompile Include="outbound.c" /> + <ClCompile Include="plugin-timer.c" /> + <ClCompile Include="plugin.c" /> + <ClCompile Include="proto-irc.c" /> + <ClCompile Include="server.c" /> + <ClCompile Include="servlist.c" /> + <ClCompile Include="ssl.c" /> + <ClCompile Include="scram.c" /> + <ClCompile Include="sysinfo\win32\backend.c" /> + <ClCompile Include="text.c" /> + <ClCompile Include="tree.c" /> + <ClCompile Include="url.c" /> + <ClCompile Include="userlist.c" /> + <ClCompile Include="util.c" /> + <ClCompile Include="hexchat.c" /> + </ItemGroup> + <ItemGroup> + <None Include="..\..\win32\config.h.tt" /> + <ClInclude Include="$(HexChatLib)config.h" /> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{87554B59-006C-4D94-9714-897B27067BA3}</ProjectGuid> + <Keyword>Win32Proj</Keyword> + <RootNamespace>common</RootNamespace> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + <Import Project="..\..\win32\hexchat.props" /> + <PropertyGroup> + <OutDir>$(HexChatLib)</OutDir> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;$(OwnFlags);%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>$(HexChatLib);$(DepsRoot)\include;$(Glib);$(Gtk);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <ClCompile> + <PreprocessorDefinitions>WIN32;_WIN64;_AMD64_;NDEBUG;_LIB;$(OwnFlags);%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>$(HexChatLib);$(DepsRoot)\include;$(Glib);$(Gtk);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <DisableSpecificWarnings>4267;%(DisableSpecificWarnings)</DisableSpecificWarnings> + </ClCompile> + </ItemDefinitionGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ItemDefinitionGroup> + <PreBuildEvent> + <Command><![CDATA[ +SET SOLUTIONDIR=$(SolutionDir)..\ +"$(Python3Path)\python.exe" $(ProjectDir)make-te.py "$(ProjectDir)textevents.in" "$(HexChatLib)textevents.h" "$(HexChatLib)textenums.h" +powershell -File "$(SolutionDir)..\win32\version-template.ps1" "$(SolutionDir)..\win32\config.h.tt" "$(HexChatLib)config.h" +"$(Python3Path)\python.exe" "$(DepsRoot)\bin\glib-genmarshal" --prefix=_hexchat_marshal --header "$(ProjectDir)marshalers.list" --output "$(HexChatLib)marshal.h" +"$(Python3Path)\python.exe" "$(DepsRoot)\bin\glib-genmarshal" --prefix=_hexchat_marshal --body "$(ProjectDir)marshalers.list" --output "$(HexChatLib)marshal.c" + ]]></Command> + </PreBuildEvent> + </ItemDefinitionGroup> +</Project> diff --git a/hexchat/src/common/common.vcxproj.filters b/hexchat/src/common/common.vcxproj.filters new file mode 100644 index 0000000..db696eb --- /dev/null +++ b/hexchat/src/common/common.vcxproj.filters @@ -0,0 +1,206 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Source Files"> + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> + <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> + </Filter> + <Filter Include="Header Files"> + <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> + <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions> + </Filter> + <Filter Include="Source Files\sysinfo"> + <UniqueIdentifier>{d5a3d281-8400-4663-b60d-036ade5fbff7}</UniqueIdentifier> + </Filter> + <Filter Include="Source Files\sysinfo\win32"> + <UniqueIdentifier>{a6d80da7-bc0a-4f1f-a156-c8cdafb7831d}</UniqueIdentifier> + </Filter> + </ItemGroup> + <ItemGroup> + <ClInclude Include="cfgfiles.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="chanopt.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="ctcp.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="dcc.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="fe.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="history.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="ignore.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="inbound.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="inet.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="modes.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="network.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="notify.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="outbound.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="plugin.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="plugin-timer.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="proto-irc.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="server.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="servlist.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="ssl.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="text.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="$(HexChatLib)textenums.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="$(HexChatLib)textevents.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="tree.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="url.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="userlist.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="util.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="hexchat.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="hexchatc.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="hexchat-plugin.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="$(HexChatLib)config.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="typedef.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="$(HexChatLib)marshal.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="plugin-identd.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="sysinfo\sysinfo.h"> + <Filter>Source Files\sysinfo</Filter> + </ClInclude> + </ItemGroup> + <ItemGroup> + <ClCompile Include="cfgfiles.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="chanopt.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="ctcp.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="dcc.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="history.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="ignore.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="inbound.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="modes.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="network.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="notify.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="outbound.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="plugin.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="plugin-timer.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="proto-irc.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="server.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="servlist.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="ssl.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="text.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="tree.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="url.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="userlist.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="util.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="hexchat.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="$(HexChatLib)marshal.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="plugin-identd.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="sysinfo\win32\backend.c"> + <Filter>Source Files\sysinfo\win32</Filter> + </ClCompile> + </ItemGroup> + <ItemGroup> + <None Include="..\..\win32\config.h.tt" /> + </ItemGroup> +</Project> diff --git a/hexchat/src/common/ctcp.c b/hexchat/src/common/ctcp.c new file mode 100644 index 0000000..f9c0544 --- /dev/null +++ b/hexchat/src/common/ctcp.c @@ -0,0 +1,202 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> + +#ifndef WIN32 +#include <unistd.h> +#endif + +#include "hexchat.h" +#include "cfgfiles.h" +#include "util.h" +#include "modes.h" +#include "outbound.h" +#include "ignore.h" +#include "inbound.h" +#include "dcc.h" +#include "text.h" +#include "ctcp.h" +#include "server.h" +#include "hexchatc.h" + + +static void +ctcp_reply (session *sess, char *nick, char *word[], char *word_eol[], + char *conf) +{ + char tbuf[4096]; /* can receive 2048 from IRC, so this is enough */ + + conf = g_strdup (conf); + /* process %C %B etc */ + check_special_chars (conf, TRUE); + auto_insert (tbuf, sizeof (tbuf), conf, word, word_eol, "", "", word_eol[5], + server_get_network (sess->server, TRUE), "", "", nick, ""); + g_free (conf); + handle_command (sess, tbuf, FALSE); +} + +static int +ctcp_check (session *sess, char *nick, char *word[], char *word_eol[], + char *ctcp) +{ + int ret = 0; + char *po; + struct popup *pop; + GSList *list = ctcp_list; + + po = strchr (ctcp, '\001'); + if (po) + *po = 0; + + po = strchr (word_eol[5], '\001'); + if (po) + *po = 0; + + while (list) + { + pop = (struct popup *) list->data; + if (!g_ascii_strcasecmp (ctcp, pop->name)) + { + ctcp_reply (sess, nick, word, word_eol, pop->cmd); + ret = 1; + } + list = list->next; + } + return ret; +} + +void +ctcp_handle (session *sess, char *to, char *nick, char *ip, + char *msg, char *word[], char *word_eol[], int id, + const message_tags_data *tags_data) +{ + char *po; + session *chansess; + server *serv = sess->server; + char outbuf[1024]; + int ctcp_offset = 2; + + /* consider DCC to be different from other CTCPs */ + if (!g_ascii_strncasecmp (msg, "DCC", 3)) + { + /* but still let CTCP replies override it */ + if (!ctcp_check (sess, nick, word, word_eol, word[4] + ctcp_offset)) + { + if (!ignore_check (word[1], IG_DCC)) + handle_dcc (sess, nick, word, word_eol, tags_data); + } + return; + } + + /* consider ACTION to be different from other CTCPs. Check + ignore as if it was a PRIV/CHAN. */ + if (!g_ascii_strncasecmp (msg, "ACTION ", 7)) + { + if (is_channel (serv, to)) + { + /* treat a channel action as a CHAN */ + if (ignore_check (word[1], IG_CHAN)) + return; + } else + { + /* treat a private action as a PRIV */ + if (ignore_check (word[1], IG_PRIV)) + return; + } + + /* but still let CTCP replies override it */ + if (ctcp_check (sess, nick, word, word_eol, word[4] + ctcp_offset)) + goto generic; + + inbound_action (sess, to, nick, ip, msg + 7, FALSE, tags_data->identified, tags_data); + return; + } + + if (ignore_check (word[1], IG_CTCP)) + return; + + if (!g_ascii_strcasecmp (msg, "VERSION") && !prefs.hex_irc_hide_version) + { +#ifdef WIN32 + g_snprintf (outbuf, sizeof (outbuf), "VERSION HexChat "PACKAGE_VERSION" [x%d] / %s", + get_cpu_arch (), get_sys_str (1)); +#else + g_snprintf (outbuf, sizeof (outbuf), "VERSION HexChat "PACKAGE_VERSION" / %s", + get_sys_str (1)); +#endif + serv->p_nctcp (serv, nick, outbuf); + } + + if (word[4][1] == '\0') + return; + + if (!ctcp_check (sess, nick, word, word_eol, word[4] + ctcp_offset)) + { + if (!g_ascii_strncasecmp (msg, "SOUND", 5)) + { + po = strchr (word[5], '\001'); + if (po) + po[0] = 0; + + if (is_channel (sess->server, to)) + { + chansess = find_channel (sess->server, to); + if (!chansess) + chansess = sess; + + EMIT_SIGNAL_TIMESTAMP (XP_TE_CTCPSNDC, chansess, word[5], + nick, to, NULL, 0, tags_data->timestamp); + } else + { + EMIT_SIGNAL_TIMESTAMP (XP_TE_CTCPSND, sess->server->front_session, + word[5], nick, NULL, NULL, 0, + tags_data->timestamp); + } + + /* don't let IRCers specify path */ +#ifdef WIN32 + if (strchr (word[5], '/') == NULL && strchr (word[5], '\\') == NULL) +#else + if (strchr (word[5], '/') == NULL) +#endif + sound_play (word[5], TRUE); + return; + } + } + +generic: + po = strchr (msg, '\001'); + if (po) + po[0] = 0; + + if (!is_channel (sess->server, to)) + { + EMIT_SIGNAL_TIMESTAMP (XP_TE_CTCPGEN, sess->server->front_session, msg, + nick, NULL, NULL, 0, tags_data->timestamp); + } else + { + chansess = find_channel (sess->server, to); + if (!chansess) + chansess = sess; + EMIT_SIGNAL_TIMESTAMP (XP_TE_CTCPGENC, chansess, msg, nick, to, NULL, 0, + tags_data->timestamp); + } +} diff --git a/hexchat/src/common/ctcp.h b/hexchat/src/common/ctcp.h new file mode 100644 index 0000000..9d811e5 --- /dev/null +++ b/hexchat/src/common/ctcp.h @@ -0,0 +1,27 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_CTCP_H +#define HEXCHAT_CTCP_H + +void ctcp_handle (session *sess, char *to, char *nick, char *ip, char *msg, + char *word[], char *word_eol[], int id, + const message_tags_data *tags_data); + +#endif diff --git a/hexchat/src/common/dbus/dbus-client.c b/hexchat/src/common/dbus/dbus-client.c new file mode 100644 index 0000000..e70a49a --- /dev/null +++ b/hexchat/src/common/dbus/dbus-client.c @@ -0,0 +1,179 @@ +/* dbus-client.c - HexChat command-line options for D-Bus + * Copyright (C) 2006 Claessens Xavier + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + * + * Claessens Xavier + * xclaesse@gmail.com + */ + +#include "config.h" + +#include "dbus-client.h" +#include <stdlib.h> +#include <gio/gio.h> +#include "hexchat.h" +#include "hexchatc.h" + +#define DBUS_REMOTE_PATH "/org/hexchat/Remote" +#define DBUS_REMOTE_INTERFACE "org.hexchat.plugin" + +#define DBUS_SERVICE_DBUS "org.freedesktop.DBus" +#define DBUS_PATH_DBUS "/org/freedesktop/DBus" +#define DBUS_INTERFACE_DBUS "org.freedesktop.DBus" + +static void +write_error (char *message, GError **error) +{ + if (error == NULL || *error == NULL) { + return; + } + g_printerr ("%s: %s\n", message, (*error)->message); + g_clear_error (error); +} + +static inline GVariant * +new_param_variant (const char *arg) +{ + GVariant * const args[1] = { + g_variant_new_string (arg) + }; + return g_variant_new_tuple (args, 1); +} + +void +hexchat_remote (void) +/* TODO: dbus_g_connection_unref (connection) are commented because it makes + * dbus to crash. Fixed in dbus >=0.70 ?!? + * https://launchpad.net/distros/ubuntu/+source/dbus/+bug/54375 + */ +{ + GDBusConnection *connection; + GDBusProxy *dbus = NULL; + GVariant *ret; + GDBusProxy *remote_object = NULL; + gboolean hexchat_running; + GError *error = NULL; + char *command = NULL; + guint i; + + /* if there is nothing to do, return now. */ + if (!arg_existing || !(arg_url || arg_urls || arg_command)) { + return; + } + + arg_dont_autoconnect = TRUE; + + connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error); + if (!connection) + { + write_error (_("Couldn't connect to session bus"), &error); + return; + } + + /* Checks if HexChat is already running */ + dbus = g_dbus_proxy_new_sync (connection, + G_DBUS_PROXY_FLAGS_NONE, + NULL, + DBUS_SERVICE_DBUS, + DBUS_PATH_DBUS, + DBUS_INTERFACE_DBUS, + NULL, + &error); + + ret = g_dbus_proxy_call_sync (dbus, "NameHasOwner", + new_param_variant (DBUS_SERVICE), + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, + &error); + if (!ret) + { + write_error (_("Failed to complete NameHasOwner"), &error); + hexchat_running = FALSE; + } + else + { + GVariant *child = g_variant_get_child_value (ret, 0); + hexchat_running = g_variant_get_boolean (child); + g_variant_unref (ret); + g_variant_unref (child); + } + g_object_unref (dbus); + + if (!hexchat_running) { + g_object_unref (connection); + return; + } + + remote_object = g_dbus_proxy_new_sync (connection, + G_DBUS_PROXY_FLAGS_NONE, + NULL, + DBUS_SERVICE, + DBUS_REMOTE_PATH, + DBUS_REMOTE_INTERFACE, + NULL, + &error); + + if (!remote_object) + { + write_error("Failed to connect to HexChat", &error); + g_object_unref (connection); + exit (0); + } + + if (arg_url) { + command = g_strdup_printf ("url %s", arg_url); + } else if (arg_command) { + command = g_strdup (arg_command); + } + + if (command) + { + g_dbus_proxy_call_sync (remote_object, "Command", + new_param_variant (command), + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, + &error); + + if (error) + write_error (_("Failed to complete Command"), &error); + g_free (command); + } + + if (arg_urls) + { + for (i = 0; i < g_strv_length(arg_urls); i++) + { + command = g_strdup_printf ("url %s", arg_urls[i]); + + g_dbus_proxy_call_sync (remote_object, "Command", + new_param_variant (command), + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, + &error); + if (error) + write_error (_("Failed to complete Command"), &error); + g_free (command); + } + g_strfreev (arg_urls); + } + + g_object_unref (remote_object); + g_object_unref (connection); + exit (0); +} diff --git a/hexchat/src/common/dbus/dbus-client.h b/hexchat/src/common/dbus/dbus-client.h new file mode 100644 index 0000000..1ca5713 --- /dev/null +++ b/hexchat/src/common/dbus/dbus-client.h @@ -0,0 +1,27 @@ +/* dbus-client.h - HexChat command-line options for D-Bus + * Copyright (C) 2006 Claessens Xavier + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + * + * Claessens Xavier + * xclaesse@gmail.com + */ + +#ifndef __DBUS_PLUGIN_H__ +#define __DBUS_PLUGIN_H__ + +void hexchat_remote (void); + +#endif /* __DBUS_PLUGIN_H__ */ diff --git a/hexchat/src/common/dbus/dbus-plugin.c b/hexchat/src/common/dbus/dbus-plugin.c new file mode 100644 index 0000000..e0c7223 --- /dev/null +++ b/hexchat/src/common/dbus/dbus-plugin.c @@ -0,0 +1,1089 @@ +/* dbus-plugin.c - hexchat plugin for remote access using D-Bus + * Copyright (C) 2006 Claessens Xavier + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + * + * Claessens Xavier + * xclaesse@gmail.com + */ + +#define DBUS_API_SUBJECT_TO_CHANGE + +#include <config.h> +#include <dbus/dbus-glib.h> +#include <dbus/dbus-glib-lowlevel.h> +#include <glib/gi18n.h> +#include "hexchat-plugin.h" +#include "dbus-plugin.h" + +#define PNAME _("remote access") +#define PDESC _("plugin for remote access using DBUS") +#define PVERSION "" + +#define DBUS_OBJECT_PATH "/org/hexchat" + +static hexchat_plugin *ph; +static guint last_context_id = 0; +static GList *contexts = NULL; +static GHashTable *clients = NULL; +static DBusGConnection *connection; + +typedef struct RemoteObject RemoteObject; +typedef struct RemoteObjectClass RemoteObjectClass; + +GType Remote_object_get_type (void); + +struct RemoteObject +{ + GObject parent; + + guint last_hook_id; + guint last_list_id; + hexchat_context *context; + char *dbus_path; + char *filename; + GHashTable *hooks; + GHashTable *lists; + void *handle; +}; + +struct RemoteObjectClass +{ + GObjectClass parent; +}; + +typedef struct +{ + guint id; + int return_value; + hexchat_hook *hook; + RemoteObject *obj; +} HookInfo; + +typedef struct +{ + guint id; + hexchat_context *context; +} ContextInfo; + +enum +{ + SERVER_SIGNAL, + COMMAND_SIGNAL, + PRINT_SIGNAL, + UNLOAD_SIGNAL, + LAST_SIGNAL +}; + +static guint signals[LAST_SIGNAL] = { 0 }; + +#define REMOTE_TYPE_OBJECT (remote_object_get_type ()) +#define REMOTE_OBJECT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), REMOTE_TYPE_OBJECT, RemoteObject)) +#define REMOTE_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), REMOTE_TYPE_OBJECT, RemoteObjectClass)) +#define REMOTE_IS_OBJECT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), REMOTE_TYPE_OBJECT)) +#define REMOTE_IS_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), REMOTE_TYPE_OBJECT)) +#define REMOTE_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), REMOTE_TYPE_OBJECT, RemoteObjectClass)) +#define REMOTE_OBJECT_ERROR (remote_object_error_quark ()) +#define REMOTE_TYPE_ERROR (remote_object_error_get_type ()) + +G_DEFINE_TYPE (RemoteObject, remote_object, G_TYPE_OBJECT) + +/* Available services */ + +static gboolean remote_object_connect (RemoteObject *obj, + const char *filename, + const char *name, + const char *desc, + const char *version, + DBusGMethodInvocation *context); + +static gboolean remote_object_disconnect (RemoteObject *obj, + DBusGMethodInvocation *context); + +static gboolean remote_object_command (RemoteObject *obj, + const char *command, + GError **error); + +static gboolean remote_object_print (RemoteObject *obj, + const char *text, + GError **error); + +static gboolean remote_object_find_context (RemoteObject *obj, + const char *server, + const char *channel, + guint *ret_id, + GError **error); + +static gboolean remote_object_get_context (RemoteObject *obj, + guint *ret_id, + GError **error); + +static gboolean remote_object_set_context (RemoteObject *obj, + guint id, + gboolean *ret, + GError **error); + +static gboolean remote_object_print (RemoteObject *obj, + const char *text, + GError **error); + +static gboolean remote_object_get_info (RemoteObject *obj, + const char *id, + char **ret_info, + GError **error); + +static gboolean remote_object_get_prefs (RemoteObject *obj, + const char *name, + int *ret_type, + char **ret_str, + int *ret_int, + GError **error); + +static gboolean remote_object_hook_command (RemoteObject *obj, + const char *name, + int pri, + const char *help_text, + int return_value, + guint *ret_id, + GError **error); + +static gboolean remote_object_hook_server (RemoteObject *obj, + const char *name, + int pri, + int return_value, + guint *ret_id, + GError **error); + +static gboolean remote_object_hook_print (RemoteObject *obj, + const char *name, + int pri, + int return_value, + guint *ret_id, + GError **error); + +static gboolean remote_object_unhook (RemoteObject *obj, + guint id, + GError **error); + +static gboolean remote_object_list_get (RemoteObject *obj, + const char *name, + guint *ret_id, + GError **error); + +static gboolean remote_object_list_next (RemoteObject *obj, + guint id, + gboolean *ret, + GError **error); + +static gboolean remote_object_list_str (RemoteObject *obj, + guint id, + const char *name, + char **ret_str, + GError **error); + +static gboolean remote_object_list_int (RemoteObject *obj, + guint id, + const char *name, + int *ret_int, + GError **error); + +static gboolean remote_object_list_time (RemoteObject *obj, + guint id, + const char *name, + guint64 *ret_time, + GError **error); + +static gboolean remote_object_list_fields (RemoteObject *obj, + const char *name, + char ***ret, + GError **error); + +static gboolean remote_object_list_free (RemoteObject *obj, + guint id, + GError **error); + +static gboolean remote_object_emit_print (RemoteObject *obj, + const char *event_name, + const char *args[], + gboolean *ret, + GError **error); + +static gboolean remote_object_nickcmp (RemoteObject *obj, + const char *nick1, + const char *nick2, + int *ret, + GError **error); + +static gboolean remote_object_strip (RemoteObject *obj, + const char *str, + int len, + int flag, + char **ret_str, + GError **error); + +static gboolean remote_object_send_modes (RemoteObject *obj, + const char *targets[], + int modes_per_line, + char sign, + char mode, + GError **error); + +#include "remote-object-glue.h" +#include "../marshal.h" + +/* Useful functions */ + +static char** build_list (char *word[]); +static guint context_list_find_id (hexchat_context *context); +static hexchat_context* context_list_find_context (guint id); + +/* Remote Object */ + +static void +hook_info_destroy (gpointer data) +{ + HookInfo *info = (HookInfo*)data; + + if (info == NULL) { + return; + } + hexchat_unhook (ph, info->hook); + g_free (info); +} + +static void +list_info_destroy (gpointer data) +{ + hexchat_list_free (ph, (hexchat_list*)data); +} + +static void +remote_object_finalize (GObject *obj) +{ + RemoteObject *self = (RemoteObject*)obj; + + g_hash_table_destroy (self->lists); + g_hash_table_destroy (self->hooks); + g_free (self->dbus_path); + g_free (self->filename); + hexchat_plugingui_remove (ph, self->handle); + + G_OBJECT_CLASS (remote_object_parent_class)->finalize (obj); +} + +static void +remote_object_init (RemoteObject *obj) +{ + obj->hooks = + g_hash_table_new_full (g_int_hash, + g_int_equal, + NULL, + hook_info_destroy); + + obj->lists = + g_hash_table_new_full (g_int_hash, + g_int_equal, + g_free, + list_info_destroy); + obj->dbus_path = NULL; + obj->filename = NULL; + obj->last_hook_id = 0; + obj->last_list_id = 0; + obj->context = hexchat_get_context (ph); +} + +static void +remote_object_class_init (RemoteObjectClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + gobject_class->finalize = remote_object_finalize; + + signals[SERVER_SIGNAL] = + g_signal_new ("server_signal", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + _hexchat_marshal_VOID__POINTER_POINTER_UINT_UINT, + G_TYPE_NONE, + 4, G_TYPE_STRV, G_TYPE_STRV, G_TYPE_UINT, G_TYPE_UINT); + + signals[COMMAND_SIGNAL] = + g_signal_new ("command_signal", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + _hexchat_marshal_VOID__POINTER_POINTER_UINT_UINT, + G_TYPE_NONE, + 4, G_TYPE_STRV, G_TYPE_STRV, G_TYPE_UINT, G_TYPE_UINT); + + signals[PRINT_SIGNAL] = + g_signal_new ("print_signal", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + _hexchat_marshal_VOID__POINTER_POINTER_UINT_UINT, + G_TYPE_NONE, + 3, G_TYPE_STRV, G_TYPE_UINT, G_TYPE_UINT); + + signals[UNLOAD_SIGNAL] = + g_signal_new ("unload_signal", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + 0); +} + +/* Implementation of services */ + +static gboolean +remote_object_connect (RemoteObject *obj, + const char *filename, + const char *name, + const char *desc, + const char *version, + DBusGMethodInvocation *context) +{ + static guint count = 0; + char *sender, *path; + RemoteObject *remote_object; + gchar count_buffer[15]; + + sender = dbus_g_method_get_sender (context); + remote_object = g_hash_table_lookup (clients, sender); + if (remote_object != NULL) { + dbus_g_method_return (context, remote_object->dbus_path); + g_free (sender); + return TRUE; + } + g_snprintf(count_buffer, sizeof(count_buffer), "%u", count++); + path = g_build_filename (DBUS_OBJECT_PATH, count_buffer, NULL); + remote_object = g_object_new (REMOTE_TYPE_OBJECT, NULL); + remote_object->dbus_path = path; + remote_object->filename = g_path_get_basename (filename); + remote_object->handle = hexchat_plugingui_add (ph, + remote_object->filename, + name, + desc, + version, NULL); + dbus_g_connection_register_g_object (connection, + path, + G_OBJECT (remote_object)); + + g_hash_table_insert (clients, + sender, + remote_object); + + dbus_g_method_return (context, path); + return TRUE; +} + +static gboolean +remote_object_disconnect (RemoteObject *obj, + DBusGMethodInvocation *context) +{ + char *sender; + + sender = dbus_g_method_get_sender (context); + g_hash_table_remove (clients, sender); + g_free (sender); + + dbus_g_method_return (context); + return TRUE; +} + +static gboolean +remote_object_command (RemoteObject *obj, + const char *command, + GError **error) +{ + if (hexchat_set_context (ph, obj->context)) { + hexchat_command (ph, command); + } + return TRUE; +} + +static gboolean +remote_object_print (RemoteObject *obj, + const char *text, + GError **error) +{ + if (hexchat_set_context (ph, obj->context)) { + hexchat_print (ph, text); + } + return TRUE; +} + +static gboolean +remote_object_find_context (RemoteObject *obj, + const char *server, + const char *channel, + guint *ret_id, + GError **error) +{ + hexchat_context *context; + + if (*server == '\0') { + server = NULL; + } + if (*channel == '\0') { + channel = NULL; + } + context = hexchat_find_context (ph, server, channel); + *ret_id = context_list_find_id (context); + + return TRUE; +} + +static gboolean +remote_object_get_context (RemoteObject *obj, + guint *ret_id, + GError **error) +{ + *ret_id = context_list_find_id (obj->context); + return TRUE; +} + +static gboolean +remote_object_set_context (RemoteObject *obj, + guint id, + gboolean *ret, + GError **error) +{ + hexchat_context *context; + + context = context_list_find_context (id); + if (context == NULL) { + *ret = FALSE; + return TRUE; + } + obj->context = context; + *ret = TRUE; + + return TRUE; +} + +static gboolean +remote_object_get_info (RemoteObject *obj, + const char *id, + char **ret_info, + GError **error) +{ + /* win_ptr is a GtkWindow* casted to char* and will crash + * D-Bus if we send it as a string */ + if (!hexchat_set_context (ph, obj->context) || + g_str_equal (id, "win_ptr")) { + *ret_info = NULL; + return TRUE; + } + *ret_info = g_strdup (hexchat_get_info (ph, id)); + return TRUE; +} + +static gboolean +remote_object_get_prefs (RemoteObject *obj, + const char *name, + int *ret_type, + char **ret_str, + int *ret_int, + GError **error) +{ + const char *str; + + if (!hexchat_set_context (ph, obj->context)) { + *ret_type = 0; + return TRUE; + } + *ret_type = hexchat_get_prefs (ph, name, &str, ret_int); + *ret_str = g_strdup (str); + + return TRUE; +} + +static int +server_hook_cb (char *word[], + char *word_eol[], + void *userdata) +{ + HookInfo *info = (HookInfo*)userdata; + char **arg1; + char **arg2; + + arg1 = build_list (word + 1); + arg2 = build_list (word_eol + 1); + info->obj->context = hexchat_get_context (ph); + g_signal_emit (info->obj, + signals[SERVER_SIGNAL], + 0, + arg1, arg2, info->id, + context_list_find_id (info->obj->context)); + g_strfreev (arg1); + g_strfreev (arg2); + + return info->return_value; +} + +static int +command_hook_cb (char *word[], + char *word_eol[], + void *userdata) +{ + HookInfo *info = (HookInfo*)userdata; + char **arg1; + char **arg2; + + arg1 = build_list (word + 1); + arg2 = build_list (word_eol + 1); + info->obj->context = hexchat_get_context (ph); + g_signal_emit (info->obj, + signals[COMMAND_SIGNAL], + 0, + arg1, arg2, info->id, + context_list_find_id (info->obj->context)); + g_strfreev (arg1); + g_strfreev (arg2); + + return info->return_value; +} + +static int +print_hook_cb (char *word[], + void *userdata) +{ + HookInfo *info = (HookInfo*)userdata; + char **arg1; + + arg1 = build_list (word + 1); + info->obj->context = hexchat_get_context (ph); + g_signal_emit (info->obj, + signals[PRINT_SIGNAL], + 0, + arg1, info->id, + context_list_find_id (info->obj->context)); + g_strfreev (arg1); + + return info->return_value; +} + +static gboolean +remote_object_hook_command (RemoteObject *obj, + const char *name, + int priority, + const char *help_text, + int return_value, + guint *ret_id, + GError **error) +{ + HookInfo *info; + + info = g_new0 (HookInfo, 1); + info->obj = obj; + info->return_value = return_value; + info->id = ++obj->last_hook_id; + info->hook = hexchat_hook_command (ph, + name, + priority, + command_hook_cb, + help_text, + info); + g_hash_table_insert (obj->hooks, &info->id, info); + *ret_id = info->id; + + return TRUE; +} + +static gboolean +remote_object_hook_server (RemoteObject *obj, + const char *name, + int priority, + int return_value, + guint *ret_id, + GError **error) +{ + HookInfo *info; + + info = g_new0 (HookInfo, 1); + info->obj = obj; + info->return_value = return_value; + info->id = ++obj->last_hook_id; + info->hook = hexchat_hook_server (ph, + name, + priority, + server_hook_cb, + info); + g_hash_table_insert (obj->hooks, &info->id, info); + *ret_id = info->id; + + return TRUE; +} + +static gboolean +remote_object_hook_print (RemoteObject *obj, + const char *name, + int priority, + int return_value, + guint *ret_id, + GError **error) +{ + HookInfo *info; + + info = g_new0 (HookInfo, 1); + info->obj = obj; + info->return_value = return_value; + info->id = ++obj->last_hook_id; + info->hook = hexchat_hook_print (ph, + name, + priority, + print_hook_cb, + info); + g_hash_table_insert (obj->hooks, &info->id, info); + *ret_id = info->id; + + return TRUE; +} + +static gboolean +remote_object_unhook (RemoteObject *obj, + guint id, + GError **error) +{ + g_hash_table_remove (obj->hooks, &id); + return TRUE; +} + +static gboolean +remote_object_list_get (RemoteObject *obj, + const char *name, + guint *ret_id, + GError **error) +{ + hexchat_list *xlist; + guint *id; + + if (!hexchat_set_context (ph, obj->context)) { + *ret_id = 0; + return TRUE; + } + xlist = hexchat_list_get (ph, name); + if (xlist == NULL) { + *ret_id = 0; + return TRUE; + } + id = g_new (guint, 1); + *id = ++obj->last_list_id; + *ret_id = *id; + g_hash_table_insert (obj->lists, + id, + xlist); + + return TRUE; +} + +static gboolean +remote_object_list_next (RemoteObject *obj, + guint id, + gboolean *ret, + GError **error) +{ + hexchat_list *xlist; + + xlist = g_hash_table_lookup (obj->lists, &id); + if (xlist == NULL) { + *ret = FALSE; + return TRUE; + } + *ret = hexchat_list_next (ph, xlist); + + return TRUE; +} + +static gboolean +remote_object_list_str (RemoteObject *obj, + guint id, + const char *name, + char **ret_str, + GError **error) +{ + hexchat_list *xlist; + + xlist = g_hash_table_lookup (obj->lists, &id); + if (xlist == NULL && !hexchat_set_context (ph, obj->context)) { + *ret_str = NULL; + return TRUE; + } + if (g_str_equal (name, "context")) { + *ret_str = NULL; + return TRUE; + } + *ret_str = g_strdup (hexchat_list_str (ph, xlist, name)); + + return TRUE; +} + +static gboolean +remote_object_list_int (RemoteObject *obj, + guint id, + const char *name, + int *ret_int, + GError **error) +{ + hexchat_list *xlist; + + xlist = g_hash_table_lookup (obj->lists, &id); + if (xlist == NULL && !hexchat_set_context (ph, obj->context)) { + *ret_int = -1; + return TRUE; + } + if (g_str_equal (name, "context")) { + hexchat_context *context; + context = (hexchat_context*)hexchat_list_str (ph, xlist, name); + *ret_int = context_list_find_id (context); + } else { + *ret_int = hexchat_list_int (ph, xlist, name); + } + + return TRUE; +} + +static gboolean +remote_object_list_time (RemoteObject *obj, + guint id, + const char *name, + guint64 *ret_time, + GError **error) +{ + hexchat_list *xlist; + + xlist = g_hash_table_lookup (obj->lists, &id); + if (xlist == NULL) { + *ret_time = (guint64) -1; + return TRUE; + } + *ret_time = hexchat_list_time (ph, xlist, name); + + return TRUE; +} + +static gboolean +remote_object_list_fields (RemoteObject *obj, + const char *name, + char ***ret, + GError **error) +{ + *ret = g_strdupv ((char**)hexchat_list_fields (ph, name)); + if (*ret == NULL) { + *ret = g_new0 (char*, 1); + } + return TRUE; +} + +static gboolean +remote_object_list_free (RemoteObject *obj, + guint id, + GError **error) +{ + g_hash_table_remove (obj->lists, &id); + return TRUE; +} + +static gboolean +remote_object_emit_print (RemoteObject *obj, + const char *event_name, + const char *args[], + gboolean *ret, + GError **error) +{ + const char *argv[4] = {NULL, NULL, NULL, NULL}; + int i; + + for (i = 0; i < 4 && args[i] != NULL; i++) { + argv[i] = args[i]; + } + + *ret = hexchat_set_context (ph, obj->context); + if (*ret) { + *ret = hexchat_emit_print (ph, event_name, argv[0], argv[1], + argv[2], argv[3]); + } + + return TRUE; +} + +static gboolean +remote_object_nickcmp (RemoteObject *obj, + const char *nick1, + const char *nick2, + int *ret, + GError **error) +{ + hexchat_set_context (ph, obj->context); + *ret = hexchat_nickcmp (ph, nick1, nick2); + return TRUE; +} + +static gboolean +remote_object_strip (RemoteObject *obj, + const char *str, + int len, + int flag, + char **ret_str, + GError **error) +{ + *ret_str = hexchat_strip (ph, str, len, flag); + return TRUE; +} + +static gboolean +remote_object_send_modes (RemoteObject *obj, + const char *targets[], + int modes_per_line, + char sign, + char mode, + GError **error) +{ + if (hexchat_set_context (ph, obj->context)) { + hexchat_send_modes (ph, targets, + g_strv_length ((char**)targets), + modes_per_line, + sign, mode); + } + return TRUE; +} + +/* DBUS stuffs */ + +static void +name_owner_changed (DBusGProxy *driver_proxy, + const char *name, + const char *old_owner, + const char *new_owner, + void *user_data) +{ + if (*new_owner == '\0') { + /* this name has vanished */ + g_hash_table_remove (clients, name); + } +} + +static gboolean +init_dbus (void) +{ + DBusGProxy *proxy; + RemoteObject *remote; + guint request_name_result; + GError *error = NULL; + + dbus_g_object_type_install_info (REMOTE_TYPE_OBJECT, + &dbus_glib_remote_object_object_info); + + connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error); + if (connection == NULL) { + hexchat_printf (ph, _("Couldn't connect to session bus: %s\n"), + error->message); + g_error_free (error); + return FALSE; + } + + proxy = dbus_g_proxy_new_for_name (connection, + DBUS_SERVICE_DBUS, + DBUS_PATH_DBUS, + DBUS_INTERFACE_DBUS); + + if (!dbus_g_proxy_call (proxy, "RequestName", &error, + G_TYPE_STRING, DBUS_SERVICE, + G_TYPE_UINT, DBUS_NAME_FLAG_ALLOW_REPLACEMENT, + G_TYPE_INVALID, + G_TYPE_UINT, &request_name_result, + G_TYPE_INVALID)) { + hexchat_printf (ph, _("Failed to acquire %s: %s\n"), + DBUS_SERVICE, + error->message); + g_error_free (error); + + return FALSE; + } + + dbus_g_proxy_add_signal (proxy, "NameOwnerChanged", + G_TYPE_STRING, + G_TYPE_STRING, + G_TYPE_STRING, + G_TYPE_INVALID); + dbus_g_proxy_connect_signal (proxy, "NameOwnerChanged", + G_CALLBACK (name_owner_changed), + NULL, NULL); + + remote = g_object_new (REMOTE_TYPE_OBJECT, NULL); + dbus_g_connection_register_g_object (connection, + DBUS_OBJECT_PATH"/Remote", + G_OBJECT (remote)); + + return TRUE; +} + +/* hexchat_plugin stuffs */ + +static char** +build_list (char *word[]) +{ + guint i; + guint num = 0; + char **result; + + if (word == NULL) { + return NULL; + } + + while (word[num] && word[num][0]) { + num++; + } + + result = g_new0 (char*, num + 1); + for (i = 0; i < num; i++) { + result[i] = g_strdup (word[i]); + } + + return result; +} + +static guint +context_list_find_id (hexchat_context *context) +{ + GList *l = NULL; + + for (l = contexts; l != NULL; l = l->next) { + if (((ContextInfo*)l->data)->context == context) { + return ((ContextInfo*)l->data)->id; + } + } + + return 0; +} + +static hexchat_context* +context_list_find_context (guint id) +{ + GList *l = NULL; + + for (l = contexts; l != NULL; l = l->next) { + if (((ContextInfo*)l->data)->id == id) { + return ((ContextInfo*)l->data)->context; + } + } + + return NULL; +} + +static int +open_context_cb (char *word[], + void *userdata) +{ + ContextInfo *info; + + info = g_new0 (ContextInfo, 1); + info->id = ++last_context_id; + info->context = hexchat_get_context (ph); + contexts = g_list_prepend (contexts, info); + + return HEXCHAT_EAT_NONE; +} + +static int +close_context_cb (char *word[], + void *userdata) +{ + GList *l; + hexchat_context *context = hexchat_get_context (ph); + + for (l = contexts; l != NULL; l = l->next) { + if (((ContextInfo*)l->data)->context == context) { + g_free (l->data); + contexts = g_list_delete_link (contexts, l); + break; + } + } + + return HEXCHAT_EAT_NONE; +} + +static gboolean +clients_find_filename_foreach (gpointer key, + gpointer value, + gpointer user_data) +{ + RemoteObject *obj = REMOTE_OBJECT (value); + return g_str_equal (obj->filename, (char*)user_data); +} + +static int +unload_plugin_cb (char *word[], char *word_eol[], void *userdata) +{ + RemoteObject *obj; + + obj = g_hash_table_find (clients, + clients_find_filename_foreach, + word[2]); + if (obj != NULL) { + g_signal_emit (obj, + signals[UNLOAD_SIGNAL], + 0); + return HEXCHAT_EAT_ALL; + } + + return HEXCHAT_EAT_NONE; +} + +int +dbus_plugin_init (hexchat_plugin *plugin_handle, + char **plugin_name, + char **plugin_desc, + char **plugin_version, + char *arg) +{ + ph = plugin_handle; + *plugin_name = PNAME; + *plugin_desc = PDESC; + *plugin_version = PVERSION; + + if (init_dbus()) { + /*hexchat_printf (ph, _("%s loaded successfully!\n"), PNAME);*/ + + clients = g_hash_table_new_full (g_str_hash, + g_str_equal, + g_free, + g_object_unref); + + hexchat_hook_print (ph, "Open Context", + HEXCHAT_PRI_NORM, + open_context_cb, + NULL); + + hexchat_hook_print (ph, "Close Context", + HEXCHAT_PRI_NORM, + close_context_cb, + NULL); + + hexchat_hook_command (ph, "unload", + HEXCHAT_PRI_HIGHEST, + unload_plugin_cb, NULL, NULL); + } + + return TRUE; +} diff --git a/hexchat/src/common/dbus/dbus-plugin.h b/hexchat/src/common/dbus/dbus-plugin.h new file mode 100644 index 0000000..a28d16f --- /dev/null +++ b/hexchat/src/common/dbus/dbus-plugin.h @@ -0,0 +1,31 @@ +/* dbus-plugin.c - hexchat plugin for remote access using DBUS + * Copyright (C) 2006 Claessens Xavier + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + * + * Claessens Xavier + * xclaesse@gmail.com + */ + +#ifndef HEXCHAT_DBUS_PLUGIN_H +#define HEXCHAT_DBUS_PLUGIN_H + +int dbus_plugin_init (hexchat_plugin *plugin_handle, + char **plugin_name, + char **plugin_desc, + char **plugin_version, + char *arg); + +#endif diff --git a/hexchat/src/common/dbus/example.c b/hexchat/src/common/dbus/example.c new file mode 100644 index 0000000..0228b88 --- /dev/null +++ b/hexchat/src/common/dbus/example.c @@ -0,0 +1,203 @@ +/* example.c - program to demonstrate some D-BUS stuffs. + * Copyright (C) 2006 Claessens Xavier + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + * + * Claessens Xavier + * xclaesse@gmail.com + */ + +#include <config.h> +#include <dbus/dbus-glib.h> +#include <stdlib.h> +#include "../marshal.c" + +#define DBUS_SERVICE "org.hexchat.service" +#define DBUS_REMOTE "/org/hexchat/Remote" +#define DBUS_REMOTE_CONNECTION_INTERFACE "org.hexchat.connection" +#define DBUS_REMOTE_PLUGIN_INTERFACE "org.hexchat.plugin" + +guint command_id; +guint server_id; + +static void +write_error (const char *message, + GError **error) +{ + if (error == NULL || *error == NULL) { + return; + } + g_printerr ("%s: %s\n", message, (*error)->message); + g_clear_error (error); +} + +static void +test_server_cb (DBusGProxy *proxy, + char *word[], + char *word_eol[], + guint hook_id, + guint context_id, + gpointer user_data) +{ + if (hook_id == server_id) { + g_print ("message: %s\n", word_eol[0]); + } +} + +static void +test_command_cb (DBusGProxy *proxy, + char *word[], + char *word_eol[], + guint hook_id, + guint context_id, + gpointer user_data) +{ + GError *error = NULL; + + if (hook_id == command_id) { + if (!dbus_g_proxy_call (proxy, "Unhook", + &error, + G_TYPE_UINT, hook_id, + G_TYPE_INVALID, G_TYPE_INVALID)) { + write_error ("Failed to complete unhook", &error); + } + /* Now if you write "/test blah" again in the HexChat window + * you'll get a "Unknown command" error message */ + g_print ("test command received: %s\n", word_eol[1]); + if (!dbus_g_proxy_call (proxy, "Print", + &error, + G_TYPE_STRING, "test command succeed", + G_TYPE_INVALID, + G_TYPE_INVALID)) { + write_error ("Failed to complete Print", &error); + } + } +} + +static void +unload_cb (void) +{ + g_print ("Good bye !\n"); + exit (EXIT_SUCCESS); +} + +int +main (int argc, char **argv) +{ + DBusGConnection *connection; + DBusGProxy *remote_object; + GMainLoop *mainloop; + gchar *path; + GError *error = NULL; + +#if ! GLIB_CHECK_VERSION (2, 36, 0) + g_type_init (); +#endif + + connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error); + if (connection == NULL) { + write_error ("Couldn't connect to session bus", &error); + return EXIT_FAILURE; + } + + remote_object = dbus_g_proxy_new_for_name (connection, + DBUS_SERVICE, + DBUS_REMOTE, + DBUS_REMOTE_CONNECTION_INTERFACE); + if (!dbus_g_proxy_call (remote_object, "Connect", + &error, + G_TYPE_STRING, argv[0], + G_TYPE_STRING, "example", + G_TYPE_STRING, "Example of a D-Bus client", + G_TYPE_STRING, "1.0", + G_TYPE_INVALID, + G_TYPE_STRING, &path, G_TYPE_INVALID)) { + write_error ("Failed to complete Connect", &error); + return EXIT_FAILURE; + } + g_object_unref (remote_object); + + remote_object = dbus_g_proxy_new_for_name (connection, + DBUS_SERVICE, + path, + DBUS_REMOTE_PLUGIN_INTERFACE); + g_free (path); + + if (!dbus_g_proxy_call (remote_object, "HookCommand", + &error, + G_TYPE_STRING, "test", + G_TYPE_INT, 0, + G_TYPE_STRING, "Simple D-BUS example", + G_TYPE_INT, 1, G_TYPE_INVALID, + G_TYPE_UINT, &command_id, G_TYPE_INVALID)) { + write_error ("Failed to complete HookCommand", &error); + return EXIT_FAILURE; + } + g_print ("Command hook id=%d\n", command_id); + + if (!dbus_g_proxy_call (remote_object, "HookServer", + &error, + G_TYPE_STRING, "RAW LINE", + G_TYPE_INT, 0, + G_TYPE_INT, 0, G_TYPE_INVALID, + G_TYPE_UINT, &server_id, G_TYPE_INVALID)) { + write_error ("Failed to complete HookServer", &error); + return EXIT_FAILURE; + } + g_print ("Server hook id=%d\n", server_id); + + dbus_g_object_register_marshaller ( + _hexchat_marshal_VOID__POINTER_POINTER_UINT_UINT, + G_TYPE_NONE, + G_TYPE_STRV, G_TYPE_STRV, G_TYPE_UINT, G_TYPE_UINT, + G_TYPE_INVALID); + + dbus_g_object_register_marshaller ( + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + G_TYPE_INVALID); + + dbus_g_proxy_add_signal (remote_object, "CommandSignal", + G_TYPE_STRV, + G_TYPE_STRV, + G_TYPE_UINT, + G_TYPE_UINT, + G_TYPE_INVALID); + dbus_g_proxy_connect_signal (remote_object, "CommandSignal", + G_CALLBACK (test_command_cb), + NULL, NULL); + + dbus_g_proxy_add_signal (remote_object, "ServerSignal", + G_TYPE_STRV, + G_TYPE_STRV, + G_TYPE_UINT, + G_TYPE_UINT, + G_TYPE_INVALID); + dbus_g_proxy_connect_signal (remote_object, "ServerSignal", + G_CALLBACK (test_server_cb), + NULL, NULL); + + dbus_g_proxy_add_signal (remote_object, "UnloadSignal", + G_TYPE_INVALID); + dbus_g_proxy_connect_signal (remote_object, "UnloadSignal", + G_CALLBACK (unload_cb), + NULL, NULL); + + /* Now you can write on the HexChat windows: "/test arg1 arg2 ..." */ + mainloop = g_main_loop_new (NULL, FALSE); + g_main_loop_run (mainloop); + + return EXIT_SUCCESS; +} diff --git a/hexchat/src/common/dbus/example.py b/hexchat/src/common/dbus/example.py new file mode 100644 index 0000000..4f14103 --- /dev/null +++ b/hexchat/src/common/dbus/example.py @@ -0,0 +1,51 @@ +#!/usr/bin/python + +# HexChat +# Copyright (C) 1998-2010 Peter Zelezny. +# Copyright (C) 2009-2013 Berke Viktor. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA +# + +from gi.repository import Gio + +bus = Gio.bus_get_sync(Gio.BusType.SESSION, None) +connection = Gio.DBusProxy.new_sync(bus, Gio.DBusProxyFlags.NONE, None, + 'org.hexchat.service', '/org/hexchat/Remote', 'org.hexchat.connection', None) +path = connection.Connect('(ssss)', + 'example.py', + 'Python example', + 'Example of a D-Bus client written in python', + '1.0') +hexchat = Gio.DBusProxy.new_sync(bus, Gio.DBusProxyFlags.NONE, None, + 'org.hexchat.service', path, 'org.hexchat.plugin', None) + +# Note the type before every arguement, this must be done. +# Type requirements are listed in our docs and characters are listed in the dbus docs. +# s = string, u = uint, i = int, etc. + +channels = hexchat.ListGet ('(s)', "channels") +while hexchat.ListNext ('(u)', channels): + name = hexchat.ListStr ('(us)', channels, "channel") + print("------- " + name + " -------") + hexchat.SetContext ('(u)', hexchat.ListInt ('(us)', channels, "context")) + hexchat.EmitPrint ('(sas)', "Channel Message", ["John", "Hi there", "@"]) + users = hexchat.ListGet ('(s)', "users") + while hexchat.ListNext ('(u)', users): + print("Nick: " + hexchat.ListStr ('(us)', users, "nick")) + hexchat.ListFree ('(u)', users) +hexchat.ListFree ('(u)', channels) + +print(hexchat.Strip ('(sii)', "\00312Blue\003 \002Bold!\002", -1, 1|2)) diff --git a/hexchat/src/common/dbus/meson.build b/hexchat/src/common/dbus/meson.build new file mode 100644 index 0000000..856bbe5 --- /dev/null +++ b/hexchat/src/common/dbus/meson.build @@ -0,0 +1,56 @@ +dbus_deps = [ + dbus_glib_dep +] + +dbus_sources = [ + 'dbus-plugin.c', + 'dbus-client.c' +] + +dbus_includes = [ + include_directories('..'), + config_h_include +] + +dbus_service_dir = join_paths(get_option('datadir'), 'dbus-1/services') + +if get_option('dbus-service-use-appid') + dbus_service_name = 'io.github.Hexchat' + dbus_output_file = 'io.github.Hexchat.service' + dbus_cargs = '-DDBUS_SERVICE="io.github.Hexchat"' +else + dbus_service_name = 'org.hexchat.service' + dbus_output_file = 'org.hexchat.service.service' + dbus_cargs = '-DDBUS_SERVICE="org.hexchat.service"' +endif + +dbus_conf = configuration_data() +dbus_conf.set('bindir', join_paths(get_option('prefix'), get_option('bindir'))) +dbus_conf.set('service_name', dbus_service_name) +configure_file( + input: 'org.hexchat.service.service.in', + output: dbus_output_file, + configuration: dbus_conf, + install: true, + install_dir: dbus_service_dir +) + +dbus_binding_tool = find_program('dbus-binding-tool') +dbus_remote_object = custom_target('remote-object-glue', + input: 'remote-object.xml', + output: 'remote-object-glue.h', + command: [dbus_binding_tool, '--prefix=remote_object', '--mode=glib-server', + '--output=@OUTPUT@', '@INPUT@'] +) + +hexchat_dbus = static_library('hexchatdbus', + sources: [dbus_remote_object, marshal] + dbus_sources, + c_args: dbus_cargs, + dependencies: common_deps + dbus_deps, + include_directories: dbus_includes, + pic: true +) + +hexchat_dbus_dep = declare_dependency( + link_with: hexchat_dbus +) diff --git a/hexchat/src/common/dbus/org.hexchat.service.service.in b/hexchat/src/common/dbus/org.hexchat.service.service.in new file mode 100644 index 0000000..44493a5 --- /dev/null +++ b/hexchat/src/common/dbus/org.hexchat.service.service.in @@ -0,0 +1,3 @@ +[D-BUS Service] +Name=@service_name@ +Exec=@bindir@/hexchat diff --git a/hexchat/src/common/dbus/remote-object.xml b/hexchat/src/common/dbus/remote-object.xml new file mode 100644 index 0000000..1b80f0e --- /dev/null +++ b/hexchat/src/common/dbus/remote-object.xml @@ -0,0 +1,142 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<node name="/"> + + <interface name="org.hexchat.connection"> + <method name="Connect"> + <annotation name="org.freedesktop.DBus.GLib.Async" value=""/> + <arg type="s" name="filename" direction="in"/> + <arg type="s" name="name" direction="in"/> + <arg type="s" name="desc" direction="in"/> + <arg type="s" name="version" direction="in"/> + <arg type="s" name="path" direction="out"/> + </method> + <method name="Disconnect"> + <annotation name="org.freedesktop.DBus.GLib.Async" value=""/> + </method> + </interface> + + <interface name="org.hexchat.plugin"> + <method name="Command"> + <arg type="s" name="command" direction="in"/> + </method> + <method name="Print"> + <arg type="s" name="text" direction="in"/> + </method> + <method name="FindContext"> + <arg type="s" name="server" direction="in"/> + <arg type="s" name="channel" direction="in"/> + <arg type="u" name="ret_id" direction="out"/> + </method> + <method name="GetContext"> + <arg type="u" name="ret_id" direction="out"/> + </method> + <method name="SetContext"> + <arg type="u" name="id" direction="in"/> + <arg type="b" name="ret" direction="out"/> + </method> + <method name="GetInfo"> + <arg type="s" name="id" direction="in"/> + <arg type="s" name="ret_info" direction="out"/> + </method> + <method name="GetPrefs"> + <arg type="s" name="name" direction="in"/> + <arg type="i" name="ret_type" direction="out"/> + <arg type="s" name="ret_str" direction="out"/> + <arg type="i" name="ret_int" direction="out"/> + </method> + <method name="HookCommand"> + <arg type="s" name="name" direction="in"/> + <arg type="i" name="priority" direction="in"/> + <arg type="s" name="help_text" direction="in"/> + <arg type="i" name="return_value" direction="in"/> + <arg type="u" name="ret_id" direction="out"/> + </method> + <method name="HookServer"> + <arg type="s" name="name" direction="in"/> + <arg type="i" name="priority" direction="in"/> + <arg type="i" name="return_value" direction="in"/> + <arg type="u" name="ret_id" direction="out"/> + </method> + <method name="HookPrint"> + <arg type="s" name="name" direction="in"/> + <arg type="i" name="priority" direction="in"/> + <arg type="i" name="return_value" direction="in"/> + <arg type="u" name="ret_id" direction="out"/> + </method> + <method name="Unhook"> + <arg type="u" name="id" direction="in"/> + </method> + <method name="ListGet"> + <arg type="s" name="name" direction="in"/> + <arg type="u" name="ret_id" direction="out"/> + </method> + <method name="ListNext"> + <arg type="u" name="id" direction="in"/> + <arg type="b" name="ret" direction="out"/> + </method> + <method name="ListStr"> + <arg type="u" name="id" direction="in"/> + <arg type="s" name="name" direction="in"/> + <arg type="s" name="ret_str" direction="out"/> + </method> + <method name="ListInt"> + <arg type="u" name="id" direction="in"/> + <arg type="s" name="name" direction="in"/> + <arg type="i" name="ret_int" direction="out"/> + </method> + <method name="ListTime"> + <arg type="u" name="id" direction="in"/> + <arg type="s" name="name" direction="in"/> + <arg type="t" name="ret_time" direction="out"/> + </method> + <method name="ListFields"> + <arg type="s" name="name" direction="in"/> + <arg type="as" name="ret" direction="out"/> + </method> + <method name="ListFree"> + <arg type="u" name="id" direction="in"/> + </method> + <method name="EmitPrint"> + <arg type="s" name="event_name" direction="in"/> + <arg type="as" name="args" direction="in"/> + <arg type="b" name="ret" direction="out"/> + </method> + <method name="Nickcmp"> + <arg type="s" name="nick1" direction="in"/> + <arg type="s" name="nick2" direction="in"/> + <arg type="i" name="ret" direction="out"/> + </method> + <method name="Strip"> + <arg type="s" name="str" direction="in"/> + <arg type="i" name="len" direction="in"/> + <arg type="i" name="flag" direction="in"/> + <arg type="s" name="ret_str" direction="out"/> + </method> + <method name="SendModes"> + <arg type="as" name="targets" direction="in"/> + <arg type="i" name="modes_per_line" direction="in"/> + <arg type="y" name="sign" direction="in"/> + <arg type="y" name="mode" direction="in"/> + </method> + + <signal name="CommandSignal"> + <arg type="as" name="word"/> + <arg type="as" name="word_eol"/> + <arg type="u" name="hook_id"/> + <arg type="u" name="context_id"/> + </signal> + <signal name="ServerSignal"> + <arg type="as" name="word"/> + <arg type="as" name="word_eol"/> + <arg type="u" name="hook_id"/> + <arg type="u" name="context_id"/> + </signal> + <signal name="PrintSignal"> + <arg type="as" name="word"/> + <arg type="u" name="hook_id"/> + <arg type="u" name="context_id"/> + </signal> + <signal name="UnloadSignal"/> + </interface> +</node> diff --git a/hexchat/src/common/dcc.c b/hexchat/src/common/dcc.c new file mode 100644 index 0000000..df129e6 --- /dev/null +++ b/hexchat/src/common/dcc.c @@ -0,0 +1,2705 @@ +/* X-Chat + * Copyright (C) 1998-2006 Peter Zelezny. + * Copyright (C) 2006 Damjan Jovanovic + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + * + * Wayne Conrad, 3 Apr 1999: Color-coded DCC file transfer status windows + * Bernhard Valenti <bernhard.valenti@gmx.net> 2000-11-21: Fixed DCC send behind nat + * + * 2001-03-08 Added support for getting "dcc_ip" config parameter. + * Jim Seymour (jseymour@LinxNet.com) + */ + +/* Required to make lseek use off64_t, but doesn't work on Windows */ +#define _FILE_OFFSET_BITS 64 + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <time.h> +#include <errno.h> +#include <sys/stat.h> +#include <fcntl.h> + +#define WANTSOCKET +#define WANTARPA +#define WANTDNS +#include "inet.h" + +#ifdef WIN32 +#include <windows.h> +#include <io.h> +#else +#include <unistd.h> +#endif + +#include "hexchat.h" +#include "util.h" +#include "fe.h" +#include "outbound.h" +#include "inbound.h" +#include "network.h" +#include "plugin.h" +#include "server.h" +#include "text.h" +#include "url.h" +#include "hexchatc.h" + +/* Setting _FILE_OFFSET_BITS to 64 doesn't change lseek to use off64_t on Windows, so override lseek to the version that does */ +#if defined(WIN32) && (!defined(__MINGW32__) && !defined(__MINGW64__)) + #define lseek _lseeki64 +#endif + +/* interval timer to detect timeouts */ +static int timeout_timer = 0; + +static char *dcctypes[] = { "SEND", "RECV", "CHAT", "CHAT" }; + +struct dccstat_info dccstat[] = { + {N_("Waiting"), 1 /*black */ }, + {N_("Active"), 12 /*cyan */ }, + {N_("Failed"), 4 /*red */ }, + {N_("Done"), 3 /*green */ }, + {N_("Connect"), 1 /*black */ }, + {N_("Aborted"), 4 /*red */ }, +}; + +static int dcc_global_throttle; /* 0x1 = sends, 0x2 = gets */ +static gint64 dcc_sendcpssum, dcc_getcpssum; + +static struct DCC *new_dcc (void); +static void dcc_close (struct DCC *dcc, enum dcc_state dccstat, int destroy); +static gboolean dcc_send_data (GIOChannel *, GIOCondition, struct DCC *); +static gboolean dcc_read (GIOChannel *, GIOCondition, struct DCC *); +static gboolean dcc_read_ack (GIOChannel *source, GIOCondition condition, struct DCC *dcc); +static int dcc_check_timeouts (void); + +static int new_id(void) +{ + static int id = 0; + if (id == 0) + { + /* start the first ID at a random number for pseudo security */ + /* 1 - 255 */ + id = RAND_INT(255) + 1; + /* ignore overflows, since it can go to 2 billion */ + } + return id++; +} + +static double +timeval_diff (GTimeVal *greater, + GTimeVal *less) +{ + long usecdiff; + double result; + + result = greater->tv_sec - less->tv_sec; + usecdiff = (long) greater->tv_usec - less->tv_usec; + result += (double) usecdiff / 1000000; + + return result; +} + +static void +dcc_unthrottle (struct DCC *dcc) +{ + /* don't unthrottle here, but delegate to funcs */ + if (dcc->type == TYPE_RECV) + dcc_read (NULL, 0, dcc); + else + dcc_send_data (NULL, 0, dcc); +} + +static void +dcc_calc_cps (struct DCC *dcc) +{ + GTimeVal now; + gint64 oldcps; + double timediff, startdiff; + int glob_throttle_bit, wasthrottled; + gint64 *cpssum; + int glob_limit; + goffset pos, posdiff; + + g_get_current_time (&now); + + /* the pos we use for sends is an average + between pos and ack */ + if (dcc->type == TYPE_SEND) + { + /* carefull to avoid 32bit overflow */ + pos = dcc->pos - ((dcc->pos - dcc->ack) / 2); + glob_throttle_bit = 0x1; + cpssum = &dcc_sendcpssum; + glob_limit = prefs.hex_dcc_global_max_send_cps; + } + else + { + pos = dcc->pos; + glob_throttle_bit = 0x2; + cpssum = &dcc_getcpssum; + glob_limit = prefs.hex_dcc_global_max_get_cps; + } + + if (!dcc->firstcpstv.tv_sec && !dcc->firstcpstv.tv_usec) + dcc->firstcpstv = now; + else + { + startdiff = timeval_diff (&now, &dcc->firstcpstv); + if (startdiff < 1) + startdiff = 1; + else if (startdiff > CPS_AVG_WINDOW) + startdiff = CPS_AVG_WINDOW; + + timediff = timeval_diff (&now, &dcc->lastcpstv); + if (timediff > startdiff) + timediff = startdiff = 1; + + posdiff = pos - dcc->lastcpspos; + oldcps = dcc->cps; + dcc->cps = (gint64) ((posdiff / timediff) * (timediff / startdiff) + dcc->cps * (1.0 - (timediff / startdiff))); + + *cpssum += dcc->cps - oldcps; + } + + dcc->lastcpspos = pos; + dcc->lastcpstv = now; + + /* now check cps against set limits... */ + wasthrottled = dcc->throttled; + + /* check global limits first */ + dcc->throttled &= ~0x2; + if (glob_limit > 0 && *cpssum >= glob_limit) + { + dcc_global_throttle |= glob_throttle_bit; + if (dcc->maxcps >= 0) + dcc->throttled |= 0x2; + } + else + dcc_global_throttle &= ~glob_throttle_bit; + + /* now check per-connection limit */ + if (dcc->maxcps > 0 && dcc->cps > dcc->maxcps) + dcc->throttled |= 0x1; + else + dcc->throttled &= ~0x1; + + /* take action */ + if (wasthrottled && !dcc->throttled) + dcc_unthrottle (dcc); +} + +static void +dcc_remove_from_sum (struct DCC *dcc) +{ + if (dcc->dccstat != STAT_ACTIVE) + return; + if (dcc->type == TYPE_SEND) + dcc_sendcpssum -= dcc->cps; + else if (dcc->type == TYPE_RECV) + dcc_getcpssum -= dcc->cps; +} + +gboolean +is_dcc (struct DCC *dcc) +{ + GSList *list = dcc_list; + while (list) + { + if (list->data == dcc) + return TRUE; + list = list->next; + } + return FALSE; +} + +gboolean +is_dcc_completed (struct DCC *dcc) +{ + if (dcc != NULL) + return (dcc->dccstat == STAT_FAILED || dcc->dccstat == STAT_DONE || dcc->dccstat == STAT_ABORTED); + + return FALSE; +} + +/* this is called by timeout_timer every 1 second. */ + +int +dcc_check_timeouts (void) +{ + struct DCC *dcc; + time_t tim = time (0); + GSList *next, *list = dcc_list; + + while (list) + { + dcc = (struct DCC *) list->data; + next = list->next; + + switch (dcc->dccstat) + { + case STAT_ACTIVE: + dcc_calc_cps (dcc); + fe_dcc_update (dcc); + + if (dcc->type == TYPE_SEND || dcc->type == TYPE_RECV) + { + if (prefs.hex_dcc_stall_timeout > 0) + { + if (!dcc->throttled + && tim - dcc->lasttime > prefs.hex_dcc_stall_timeout) + { + EMIT_SIGNAL (XP_TE_DCCSTALL, dcc->serv->front_session, + dcctypes[dcc->type], + file_part (dcc->file), dcc->nick, NULL, 0); + dcc_close (dcc, STAT_ABORTED, FALSE); + } + } + } + break; + case STAT_QUEUED: + if (dcc->type == TYPE_SEND || dcc->type == TYPE_CHATSEND) + { + if (tim - dcc->offertime > prefs.hex_dcc_timeout) + { + if (prefs.hex_dcc_timeout > 0) + { + EMIT_SIGNAL (XP_TE_DCCTOUT, dcc->serv->front_session, + dcctypes[dcc->type], + file_part (dcc->file), dcc->nick, NULL, 0); + dcc_close (dcc, STAT_ABORTED, FALSE); + } + } + } + break; + case STAT_DONE: + case STAT_FAILED: + case STAT_ABORTED: + if (prefs.hex_dcc_remove) + dcc_close (dcc, 0, TRUE); + break; + default: + break; + } + list = next; + } + return 1; +} + +static int +dcc_lookup_proxy (char *host, struct sockaddr_in *addr) +{ + struct hostent *h; + static char *cache_host = NULL; + static guint32 cache_addr; + + /* too lazy to thread this, so we cache results */ + if (cache_host) + { + if (strcmp (host, cache_host) == 0) + { + memcpy (&addr->sin_addr, &cache_addr, 4); + return TRUE; + } + g_free (cache_host); + cache_host = NULL; + } + + h = gethostbyname (host); + if (h != NULL && h->h_length == 4 && h->h_addr_list[0] != NULL) + { + memcpy (&addr->sin_addr, h->h_addr, 4); + memcpy (&cache_addr, h->h_addr, 4); + cache_host = g_strdup (host); + /* cppcheck-suppress memleak */ + return TRUE; + } + + return FALSE; +} + +#define DCC_USE_PROXY() (prefs.hex_net_proxy_host[0] && prefs.hex_net_proxy_type>0 && prefs.hex_net_proxy_type<5 && prefs.hex_net_proxy_use!=1) + +static int +dcc_connect_sok (struct DCC *dcc) +{ + int sok; + struct sockaddr_in addr; + + sok = socket (AF_INET, SOCK_STREAM, 0); + if (sok == -1) + return -1; + + memset (&addr, 0, sizeof (addr)); + addr.sin_family = AF_INET; + if (DCC_USE_PROXY ()) + { + if (!dcc_lookup_proxy (prefs.hex_net_proxy_host, &addr)) + { + closesocket (sok); + return -1; + } + addr.sin_port = htons (prefs.hex_net_proxy_port); + } + else + { + addr.sin_port = htons (dcc->port); + addr.sin_addr.s_addr = htonl (dcc->addr); + } + + set_nonblocking (sok); + connect (sok, (struct sockaddr *) &addr, sizeof (addr)); + + return sok; +} + +static void +dcc_close (struct DCC *dcc, enum dcc_state dccstat, int destroy) +{ + if (dcc->wiotag) + { + fe_input_remove (dcc->wiotag); + dcc->wiotag = 0; + } + + if (dcc->iotag) + { + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + } + + if (dcc->sok != -1) + { + closesocket (dcc->sok); + dcc->sok = -1; + } + + dcc_remove_from_sum (dcc); + + if (dcc->fp != -1) + { + close (dcc->fp); + dcc->fp = -1; + + if(dccstat == STAT_DONE) + { + /* if we just completed a dcc receive, move the */ + /* completed file to the completed directory */ + if(dcc->type == TYPE_RECV) + { + /* mgl: change this to handle the case where dccwithnick is set */ + move_file (prefs.hex_dcc_dir, prefs.hex_dcc_completed_dir, + file_part (dcc->destfile), prefs.hex_dcc_permissions); + } + + } + } + + dcc->dccstat = dccstat; + if (dcc->dccchat) + { + g_free (dcc->dccchat); + dcc->dccchat = NULL; + } + + if (destroy) + { + dcc_list = g_slist_remove (dcc_list, dcc); + fe_dcc_remove (dcc); + g_free (dcc->proxy); + g_free (dcc->file); + g_free (dcc->destfile); + g_free (dcc->nick); + g_free (dcc); + if (dcc_list == NULL && timeout_timer != 0) + { + fe_timeout_remove (timeout_timer); + timeout_timer = 0; + } + return; + } + + fe_dcc_update (dcc); +} + +void +dcc_abort (session *sess, struct DCC *dcc) +{ + if (dcc) + { + switch (dcc->dccstat) + { + case STAT_QUEUED: + case STAT_CONNECTING: + case STAT_ACTIVE: + dcc_close (dcc, STAT_ABORTED, FALSE); + switch (dcc->type) + { + case TYPE_CHATSEND: + case TYPE_CHATRECV: + EMIT_SIGNAL (XP_TE_DCCCHATABORT, sess, dcc->nick, NULL, NULL, + NULL, 0); + break; + case TYPE_SEND: + EMIT_SIGNAL (XP_TE_DCCSENDABORT, sess, dcc->nick, + file_part (dcc->file), NULL, NULL, 0); + break; + case TYPE_RECV: + EMIT_SIGNAL (XP_TE_DCCRECVABORT, sess, dcc->nick, + dcc->file, NULL, NULL, 0); + } + break; + default: + dcc_close (dcc, 0, TRUE); + } + } +} + +void +dcc_notify_kill (struct server *serv) +{ + struct server *replaceserv = 0; + struct DCC *dcc; + GSList *list = dcc_list; + if (serv_list) + replaceserv = (struct server *) serv_list->data; + while (list) + { + dcc = (struct DCC *) list->data; + if (dcc->serv == serv) + dcc->serv = replaceserv; + list = list->next; + } +} + +struct DCC * +dcc_write_chat (char *nick, char *text) +{ + struct DCC *dcc; + int len; + + dcc = find_dcc (nick, "", TYPE_CHATRECV); + if (!dcc) + dcc = find_dcc (nick, "", TYPE_CHATSEND); + if (dcc && dcc->dccstat == STAT_ACTIVE) + { + len = strlen (text); + tcp_send_real (NULL, dcc->sok, dcc->serv->write_converter, text, len); + send (dcc->sok, "\n", 1, 0); + dcc->size += len; + fe_dcc_update (dcc); + return dcc; + } + return NULL; +} + +/* returns: 0 - ok + 1 - the dcc is closed! */ + +static int +dcc_chat_line (struct DCC *dcc, char *line) +{ + session *sess; + char *word[PDIWORDS]; + char *po; + int ret, i; + char portbuf[32]; + message_tags_data no_tags = MESSAGE_TAGS_DATA_INIT; + + line = text_convert_invalid (line, -1, dcc->serv->read_converter, unicode_fallback_string, NULL); + + sess = find_dialog (dcc->serv, dcc->nick); + if (!sess) + sess = dcc->serv->front_session; + + sprintf (portbuf, "%d", dcc->port); + + word[0] = "DCC Chat Text"; + word[1] = net_ip (dcc->addr); + word[2] = portbuf; + word[3] = dcc->nick; + word[4] = line; + for (i = 5; i < PDIWORDS; i++) + word[i] = "\000"; + + ret = plugin_emit_print (sess, word, 0); + + /* did the plugin close it? */ + if (!g_slist_find (dcc_list, dcc)) + { + g_free (line); + return 1; + } + + /* did the plugin eat the event? */ + if (ret) + { + g_free (line); + return 0; + } + + url_check_line (line); + + if (line[0] == 1 && !g_ascii_strncasecmp (line + 1, "ACTION", 6)) + { + po = strchr (line + 8, '\001'); + if (po) + po[0] = 0; + inbound_action (sess, dcc->serv->nick, dcc->nick, "", line + 8, FALSE, + FALSE, &no_tags); + } else + { + inbound_privmsg (dcc->serv, dcc->nick, "", line, FALSE, &no_tags); + } + g_free (line); + return 0; +} + +static gboolean +dcc_read_chat (GIOChannel *source, GIOCondition condition, struct DCC *dcc) +{ + int i, len, dead; + char portbuf[32]; + char lbuf[2050]; + + while (1) + { + if (dcc->throttled) + { + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + return FALSE; + } + + if (!dcc->iotag) + dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, dcc_read_chat, dcc); + + len = recv (dcc->sok, lbuf, sizeof (lbuf) - 2, 0); + if (len < 1) + { + if (len < 0) + { + if (would_block ()) + return TRUE; + } + sprintf (portbuf, "%d", dcc->port); + EMIT_SIGNAL (XP_TE_DCCCHATF, dcc->serv->front_session, dcc->nick, + net_ip (dcc->addr), portbuf, + errorstring ((len < 0) ? sock_error () : 0), 0); + dcc_close (dcc, STAT_FAILED, FALSE); + return TRUE; + } + i = 0; + lbuf[len] = 0; + while (i < len) + { + switch (lbuf[i]) + { + case '\r': + break; + case '\n': + dcc->dccchat->linebuf[dcc->dccchat->pos] = 0; + dead = dcc_chat_line (dcc, dcc->dccchat->linebuf); + + if (dead || !dcc->dccchat) /* the dcc has been closed, don't use (DCC *)! */ + return TRUE; + + dcc->pos += dcc->dccchat->pos; + dcc->dccchat->pos = 0; + fe_dcc_update (dcc); + break; + default: + dcc->dccchat->linebuf[dcc->dccchat->pos] = lbuf[i]; + if (dcc->dccchat->pos < (sizeof (dcc->dccchat->linebuf) - 1)) + dcc->dccchat->pos++; + } + i++; + } + } +} + +static void +dcc_calc_average_cps (struct DCC *dcc) +{ + time_t sec; + + sec = time (0) - dcc->starttime; + if (sec < 1) + sec = 1; + if (dcc->type == TYPE_SEND) + dcc->cps = (dcc->ack - dcc->resumable) / sec; + else + dcc->cps = (dcc->pos - dcc->resumable) / sec; +} + +static void +dcc_send_ack (struct DCC *dcc) +{ + /* send in 32-bit big endian */ + guint32 pos = htonl (dcc->pos & 0xffffffff); + send (dcc->sok, (char *) &pos, 4, 0); +} + +static gboolean +dcc_read (GIOChannel *source, GIOCondition condition, struct DCC *dcc) +{ + char *old; + char buf[4096]; + int n; + gboolean need_ack = FALSE; + + if (dcc->fp == -1) + { + + /* try to create the download dir (even if it exists, no harm) */ + g_mkdir (prefs.hex_dcc_dir, 0700); + + if (dcc->resumable) + { + gchar *filename_fs = g_filename_from_utf8(dcc->destfile, -1, NULL, NULL, NULL); + dcc->fp = g_open(dcc->destfile, O_WRONLY | O_APPEND | OFLAGS, 0); + g_free (filename_fs); + + dcc->pos = dcc->resumable; + dcc->ack = dcc->resumable; + } + else + { + gchar *filename_fs; + + if (g_access (dcc->destfile, F_OK) == 0) + { + n = 0; + do + { + n++; + g_snprintf (buf, sizeof (buf), "%s.%d", dcc->destfile, n); + } + while (g_access (buf, F_OK) == 0); + + old = dcc->destfile; + dcc->destfile = g_strdup (buf); + + EMIT_SIGNAL (XP_TE_DCCRENAME, dcc->serv->front_session, + old, dcc->destfile, NULL, NULL, 0); + g_free (old); + } + + filename_fs = g_filename_from_utf8 (dcc->destfile, -1, NULL, NULL, NULL); + dcc->fp = g_open (filename_fs, OFLAGS | O_TRUNC | O_WRONLY | O_CREAT, prefs.hex_dcc_permissions); + g_free (filename_fs); + } + } + if (dcc->fp == -1) + { + /* the last executed function is open(), errno should be valid */ + EMIT_SIGNAL (XP_TE_DCCFILEERR, dcc->serv->front_session, dcc->destfile, + errorstring (errno), NULL, NULL, 0); + dcc_close (dcc, STAT_FAILED, FALSE); + return TRUE; + } + while (1) + { + if (dcc->throttled) + { + if (need_ack) + dcc_send_ack (dcc); + + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + return FALSE; + } + + if (!dcc->iotag) + dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, dcc_read, dcc); + + n = recv (dcc->sok, buf, sizeof (buf), 0); + if (n < 1) + { + if (n < 0) + { + if (would_block ()) + { + if (need_ack) + dcc_send_ack (dcc); + return TRUE; + } + } + EMIT_SIGNAL (XP_TE_DCCRECVERR, dcc->serv->front_session, dcc->file, + dcc->destfile, dcc->nick, + errorstring ((n < 0) ? sock_error () : 0), 0); + /* send ack here? but the socket is dead */ + /*if (need_ack) + dcc_send_ack (dcc);*/ + dcc_close (dcc, STAT_FAILED, FALSE); + return TRUE; + } + + if (write (dcc->fp, buf, n) == -1) /* could be out of hdd space */ + { + EMIT_SIGNAL (XP_TE_DCCRECVERR, dcc->serv->front_session, dcc->file, + dcc->destfile, dcc->nick, errorstring (errno), 0); + if (need_ack) + dcc_send_ack (dcc); + dcc_close (dcc, STAT_FAILED, FALSE); + return TRUE; + } + + dcc->lasttime = time (0); + dcc->pos += n; + need_ack = TRUE; /* send ack when we're done recv()ing */ + + if (dcc->pos >= dcc->size) + { + dcc_send_ack (dcc); + dcc_close (dcc, STAT_DONE, FALSE); + dcc_calc_average_cps (dcc); /* this must be done _after_ dcc_close, or dcc_remove_from_sum will see the wrong value in dcc->cps */ + /* cppcheck-suppress deallocuse */ + sprintf (buf, "%" G_GINT64_FORMAT, dcc->cps); + EMIT_SIGNAL (XP_TE_DCCRECVCOMP, dcc->serv->front_session, + dcc->file, dcc->destfile, dcc->nick, buf, 0); + return TRUE; + } + } +} + +static void +dcc_open_query (server *serv, char *nick) +{ + if (prefs.hex_gui_autoopen_dialog) + open_query (serv, nick, FALSE); +} + +static gboolean +dcc_did_connect (GIOChannel *source, GIOCondition condition, struct DCC *dcc) +{ + int er; + +#ifdef WIN32 + if (condition & G_IO_ERR) + { + int len; + + /* find the last errno for this socket */ + len = sizeof (er); + getsockopt (dcc->sok, SOL_SOCKET, SO_ERROR, (char *)&er, &len); + EMIT_SIGNAL (XP_TE_DCCCONFAIL, dcc->serv->front_session, + dcctypes[dcc->type], dcc->nick, errorstring (er), + NULL, 0); + dcc->dccstat = STAT_FAILED; + fe_dcc_update (dcc); + return FALSE; + } + +#else + struct sockaddr_in addr; + + memset (&addr, 0, sizeof (addr)); + addr.sin_port = htons (dcc->port); + addr.sin_family = AF_INET; + addr.sin_addr.s_addr = htonl (dcc->addr); + + /* check if it's already connected; This always fails on winXP */ + if (connect (dcc->sok, (struct sockaddr *) &addr, sizeof (addr)) != 0) + { + er = sock_error (); + if (er != EISCONN) + { + EMIT_SIGNAL (XP_TE_DCCCONFAIL, dcc->serv->front_session, + dcctypes[dcc->type], dcc->nick, errorstring (er), + NULL, 0); + dcc->dccstat = STAT_FAILED; + fe_dcc_update (dcc); + return FALSE; + } + } +#endif + + return TRUE; +} + +static gboolean +dcc_connect_finished (GIOChannel *source, GIOCondition condition, struct DCC *dcc) +{ + char host[128]; + + if (dcc->iotag) + { + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + } + + if (!dcc_did_connect (source, condition, dcc)) + return TRUE; + + dcc->dccstat = STAT_ACTIVE; + g_snprintf (host, sizeof host, "%s:%d", net_ip (dcc->addr), dcc->port); + + switch (dcc->type) + { + case TYPE_RECV: + dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, dcc_read, dcc); + EMIT_SIGNAL (XP_TE_DCCCONRECV, dcc->serv->front_session, + dcc->nick, host, dcc->file, NULL, 0); + break; + case TYPE_SEND: + /* passive send */ + dcc->fastsend = prefs.hex_dcc_fast_send; + if (dcc->fastsend) + dcc->wiotag = fe_input_add (dcc->sok, FIA_WRITE, dcc_send_data, dcc); + dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, dcc_read_ack, dcc); + dcc_send_data (NULL, 0, (gpointer)dcc); + EMIT_SIGNAL (XP_TE_DCCCONSEND, dcc->serv->front_session, + dcc->nick, host, dcc->file, NULL, 0); + break; + case TYPE_CHATSEND: /* pchat */ + dcc_open_query (dcc->serv, dcc->nick); + case TYPE_CHATRECV: /* normal chat */ + dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, dcc_read_chat, dcc); + dcc->dccchat = g_new0 (struct dcc_chat, 1); + EMIT_SIGNAL (XP_TE_DCCCONCHAT, dcc->serv->front_session, + dcc->nick, host, NULL, NULL, 0); + break; + } + dcc->starttime = time (0); + dcc->lasttime = dcc->starttime; + fe_dcc_update (dcc); + + return TRUE; +} + +static gboolean +read_proxy (struct DCC *dcc) +{ + struct proxy_state *proxy = dcc->proxy; + while (proxy->bufferused < proxy->buffersize) + { + int ret = recv (dcc->sok, &proxy->buffer[proxy->bufferused], + proxy->buffersize - proxy->bufferused, 0); + if (ret > 0) + proxy->bufferused += ret; + else + { + if (would_block ()) + return FALSE; + else + { + dcc->dccstat = STAT_FAILED; + fe_dcc_update (dcc); + if (dcc->iotag) + { + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + } + return FALSE; + } + } + } + return TRUE; +} + +static gboolean +write_proxy (struct DCC *dcc) +{ + struct proxy_state *proxy = dcc->proxy; + while (proxy->bufferused < proxy->buffersize) + { + int ret = send (dcc->sok, &proxy->buffer[proxy->bufferused], + proxy->buffersize - proxy->bufferused, 0); + if (ret >= 0) + proxy->bufferused += ret; + else + { + if (would_block ()) + return FALSE; + else + { + dcc->dccstat = STAT_FAILED; + fe_dcc_update (dcc); + if (dcc->wiotag) + { + fe_input_remove (dcc->wiotag); + dcc->wiotag = 0; + } + return FALSE; + } + } + } + return TRUE; +} + +static gboolean +proxy_read_line (struct DCC *dcc) +{ + struct proxy_state *proxy = dcc->proxy; + while (1) + { + proxy->buffersize = proxy->bufferused + 1; + if (!read_proxy (dcc)) + return FALSE; + if (proxy->buffer[proxy->bufferused - 1] == '\n' + || proxy->bufferused == MAX_PROXY_BUFFER) + { + proxy->buffer[proxy->bufferused - 1] = 0; + return TRUE; + } + } +} + +static gboolean +dcc_wingate_proxy_traverse (GIOChannel *source, GIOCondition condition, struct DCC *dcc) +{ + struct proxy_state *proxy = dcc->proxy; + if (proxy->phase == 0) + { + proxy->buffersize = g_snprintf ((char*) proxy->buffer, MAX_PROXY_BUFFER, + "%s %d\r\n", net_ip(dcc->addr), + dcc->port); + proxy->bufferused = 0; + dcc->wiotag = fe_input_add (dcc->sok, FIA_WRITE|FIA_EX, + dcc_wingate_proxy_traverse, dcc); + ++proxy->phase; + } + if (proxy->phase == 1) + { + if (!read_proxy (dcc)) + return TRUE; + fe_input_remove (dcc->wiotag); + dcc->wiotag = 0; + dcc_connect_finished (source, 0, dcc); + } + return TRUE; +} + +struct sock_connect +{ + char version; + char type; + guint16 port; + guint32 address; + char username[10]; +}; +static gboolean +dcc_socks_proxy_traverse (GIOChannel *source, GIOCondition condition, struct DCC *dcc) +{ + struct proxy_state *proxy = dcc->proxy; + + if (proxy->phase == 0) + { + struct sock_connect sc; + sc.version = 4; + sc.type = 1; + sc.port = htons (dcc->port); + sc.address = htonl (dcc->addr); + g_strlcpy (sc.username, prefs.hex_irc_user_name, sizeof (sc.username)); + memcpy (proxy->buffer, &sc, sizeof (sc)); + proxy->buffersize = 8 + strlen (sc.username) + 1; + proxy->bufferused = 0; + dcc->wiotag = fe_input_add (dcc->sok, FIA_WRITE|FIA_EX, + dcc_socks_proxy_traverse, dcc); + ++proxy->phase; + } + + if (proxy->phase == 1) + { + if (!write_proxy (dcc)) + return TRUE; + fe_input_remove (dcc->wiotag); + dcc->wiotag = 0; + proxy->bufferused = 0; + proxy->buffersize = 8; + dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, + dcc_socks_proxy_traverse, dcc); + ++proxy->phase; + } + + if (proxy->phase == 2) + { + if (!read_proxy (dcc)) + return TRUE; + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + if (proxy->buffer[1] == 90) + dcc_connect_finished (source, 0, dcc); + else + { + dcc->dccstat = STAT_FAILED; + fe_dcc_update (dcc); + } + } + + return TRUE; +} + +struct sock5_connect1 +{ + char version; + char nmethods; + char method; +}; +static gboolean +dcc_socks5_proxy_traverse (GIOChannel *source, GIOCondition condition, struct DCC *dcc) +{ + struct proxy_state *proxy = dcc->proxy; + int auth = prefs.hex_net_proxy_auth && prefs.hex_net_proxy_user[0] && prefs.hex_net_proxy_pass[0]; + + if (proxy->phase == 0) + { + struct sock5_connect1 sc1; + + sc1.version = 5; + sc1.nmethods = 1; + sc1.method = 0; + if (auth) + sc1.method = 2; + memcpy (proxy->buffer, &sc1, 3); + proxy->buffersize = 3; + proxy->bufferused = 0; + dcc->wiotag = fe_input_add (dcc->sok, FIA_WRITE|FIA_EX, + dcc_socks5_proxy_traverse, dcc); + ++proxy->phase; + } + + if (proxy->phase == 1) + { + if (!write_proxy (dcc)) + return TRUE; + fe_input_remove (dcc->wiotag); + dcc->wiotag = 0; + proxy->bufferused = 0; + proxy->buffersize = 2; + dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, + dcc_socks5_proxy_traverse, dcc); + ++proxy->phase; + } + + if (proxy->phase == 2) + { + if (!read_proxy (dcc)) + return TRUE; + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + + /* did the server say no auth required? */ + if (proxy->buffer[0] == 5 && proxy->buffer[1] == 0) + auth = 0; + + /* Set up authentication I/O */ + if (auth) + { + int len_u=0, len_p=0; + + /* authentication sub-negotiation (RFC1929) */ + if ( proxy->buffer[0] != 5 || proxy->buffer[1] != 2 ) /* UPA not supported by server */ + { + PrintText (dcc->serv->front_session, "SOCKS\tServer doesn't support UPA authentication.\n"); + dcc->dccstat = STAT_FAILED; + fe_dcc_update (dcc); + return TRUE; + } + + memset (proxy->buffer, 0, MAX_PROXY_BUFFER); + + /* form the UPA request */ + len_u = strlen (prefs.hex_net_proxy_user); + len_p = strlen (prefs.hex_net_proxy_pass); + proxy->buffer[0] = 1; + proxy->buffer[1] = len_u; + memcpy (proxy->buffer + 2, prefs.hex_net_proxy_user, len_u); + proxy->buffer[2 + len_u] = len_p; + memcpy (proxy->buffer + 3 + len_u, prefs.hex_net_proxy_pass, len_p); + + proxy->buffersize = 3 + len_u + len_p; + proxy->bufferused = 0; + dcc->wiotag = fe_input_add (dcc->sok, FIA_WRITE|FIA_EX, + dcc_socks5_proxy_traverse, dcc); + ++proxy->phase; + } + else + { + if (proxy->buffer[0] != 5 || proxy->buffer[1] != 0) + { + PrintText (dcc->serv->front_session, "SOCKS\tAuthentication required but disabled in settings.\n"); + dcc->dccstat = STAT_FAILED; + fe_dcc_update (dcc); + return TRUE; + } + proxy->phase += 2; + } + } + + if (proxy->phase == 3) + { + if (!write_proxy (dcc)) + return TRUE; + fe_input_remove (dcc->wiotag); + dcc->wiotag = 0; + proxy->buffersize = 2; + proxy->bufferused = 0; + dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, + dcc_socks5_proxy_traverse, dcc); + ++proxy->phase; + } + + if (proxy->phase == 4) + { + if (!read_proxy (dcc)) + return TRUE; + if (dcc->iotag) + { + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + } + if (proxy->buffer[1] != 0) + { + PrintText (dcc->serv->front_session, "SOCKS\tAuthentication failed. " + "Is username and password correct?\n"); + dcc->dccstat = STAT_FAILED; + fe_dcc_update (dcc); + return TRUE; + } + ++proxy->phase; + } + + if (proxy->phase == 5) + { + proxy->buffer[0] = 5; /* version (socks 5) */ + proxy->buffer[1] = 1; /* command (connect) */ + proxy->buffer[2] = 0; /* reserved */ + proxy->buffer[3] = 1; /* address type (IPv4) */ + proxy->buffer[4] = (dcc->addr >> 24) & 0xFF; /* IP address */ + proxy->buffer[5] = (dcc->addr >> 16) & 0xFF; + proxy->buffer[6] = (dcc->addr >> 8) & 0xFF; + proxy->buffer[7] = (dcc->addr & 0xFF); + proxy->buffer[8] = (dcc->port >> 8) & 0xFF; /* port */ + proxy->buffer[9] = (dcc->port & 0xFF); + proxy->buffersize = 10; + proxy->bufferused = 0; + dcc->wiotag = fe_input_add (dcc->sok, FIA_WRITE|FIA_EX, + dcc_socks5_proxy_traverse, dcc); + ++proxy->phase; + } + + if (proxy->phase == 6) + { + if (!write_proxy (dcc)) + return TRUE; + fe_input_remove (dcc->wiotag); + dcc->wiotag = 0; + proxy->buffersize = 4; + proxy->bufferused = 0; + dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, + dcc_socks5_proxy_traverse, dcc); + ++proxy->phase; + } + + if (proxy->phase == 7) + { + if (!read_proxy (dcc)) + return TRUE; + if (proxy->buffer[0] != 5 || proxy->buffer[1] != 0) + { + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + if (proxy->buffer[1] == 2) + PrintText (dcc->serv->front_session, "SOCKS\tProxy refused to connect to host (not allowed).\n"); + else + PrintTextf (dcc->serv->front_session, "SOCKS\tProxy failed to connect to host (error %d).\n", proxy->buffer[1]); + dcc->dccstat = STAT_FAILED; + fe_dcc_update (dcc); + return TRUE; + } + switch (proxy->buffer[3]) + { + case 1: proxy->buffersize += 6; break; + case 3: proxy->buffersize += 1; break; + case 4: proxy->buffersize += 18; break; + }; + ++proxy->phase; + } + + if (proxy->phase == 8) + { + if (!read_proxy (dcc)) + return TRUE; + /* handle domain name case */ + if (proxy->buffer[3] == 3) + { + proxy->buffersize = 5 + proxy->buffer[4] + 2; + } + /* everything done? */ + if (proxy->bufferused == proxy->buffersize) + { + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + dcc_connect_finished (source, 0, dcc); + } + } + return TRUE; +} + +static gboolean +dcc_http_proxy_traverse (GIOChannel *source, GIOCondition condition, struct DCC *dcc) +{ + struct proxy_state *proxy = dcc->proxy; + + if (proxy->phase == 0) + { + char buf[256]; + char auth_data[128]; + char auth_data2[68]; + int n, n2; + + n = g_snprintf (buf, sizeof (buf), "CONNECT %s:%d HTTP/1.0\r\n", + net_ip(dcc->addr), dcc->port); + if (prefs.hex_net_proxy_auth) + { + n2 = g_snprintf (auth_data2, sizeof (auth_data2), "%s:%s", + prefs.hex_net_proxy_user, prefs.hex_net_proxy_pass); + base64_encode (auth_data, auth_data2, n2); + n += g_snprintf (buf+n, sizeof (buf)-n, "Proxy-Authorization: Basic %s\r\n", auth_data); + } + n += g_snprintf (buf+n, sizeof (buf)-n, "\r\n"); + proxy->buffersize = n; + proxy->bufferused = 0; + memcpy (proxy->buffer, buf, proxy->buffersize); + dcc->wiotag = fe_input_add (dcc->sok, FIA_WRITE|FIA_EX, + dcc_http_proxy_traverse, dcc); + ++proxy->phase; + } + + if (proxy->phase == 1) + { + if (!write_proxy (dcc)) + return TRUE; + fe_input_remove (dcc->wiotag); + dcc->wiotag = 0; + proxy->bufferused = 0; + dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, + dcc_http_proxy_traverse, dcc); + ++proxy->phase; + } + + if (proxy->phase == 2) + { + if (!proxy_read_line (dcc)) + return TRUE; + /* "HTTP/1.0 200 OK" */ + if (proxy->bufferused < 12 || + memcmp (proxy->buffer, "HTTP/", 5) || memcmp (proxy->buffer + 9, "200", 3)) + { + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + PrintText (dcc->serv->front_session, proxy->buffer); + dcc->dccstat = STAT_FAILED; + fe_dcc_update (dcc); + return TRUE; + } + proxy->bufferused = 0; + ++proxy->phase; + } + + if (proxy->phase == 3) + { + while (1) + { + /* read until blank line */ + if (proxy_read_line (dcc)) + { + if (proxy->bufferused < 1 || + (proxy->bufferused == 2 && proxy->buffer[0] == '\r')) + { + break; + } + if (proxy->bufferused > 1) + PrintText (dcc->serv->front_session, proxy->buffer); + proxy->bufferused = 0; + } + else + return TRUE; + } + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + dcc_connect_finished (source, 0, dcc); + } + + return TRUE; +} + +static gboolean +dcc_proxy_connect (GIOChannel *source, GIOCondition condition, struct DCC *dcc) +{ + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + + if (!dcc_did_connect (source, condition, dcc)) + return TRUE; + + dcc->proxy = g_new0 (struct proxy_state, 1); + + switch (prefs.hex_net_proxy_type) + { + case 1: return dcc_wingate_proxy_traverse (source, condition, dcc); + case 2: return dcc_socks_proxy_traverse (source, condition, dcc); + case 3: return dcc_socks5_proxy_traverse (source, condition, dcc); + case 4: return dcc_http_proxy_traverse (source, condition, dcc); + } + return TRUE; +} + +static int dcc_listen_init (struct DCC *, struct session *); + +static void +dcc_connect (struct DCC *dcc) +{ + int ret; + char tbuf[400]; + + if (dcc->dccstat == STAT_CONNECTING) + return; + dcc->dccstat = STAT_CONNECTING; + + if (dcc->pasvid && dcc->port == 0) + { + /* accepted a passive dcc send */ + ret = dcc_listen_init (dcc, dcc->serv->front_session); + if (!ret) + { + dcc_close (dcc, STAT_FAILED, FALSE); + return; + } + /* possible problems with filenames containing spaces? */ + if (dcc->type == TYPE_RECV) + g_snprintf (tbuf, sizeof (tbuf), strchr (dcc->file, ' ') ? + "DCC SEND \"%s\" %u %d %" G_GUINT64_FORMAT " %d" : + "DCC SEND %s %u %d %" G_GUINT64_FORMAT " %d", dcc->file, + dcc->addr, dcc->port, dcc->size, dcc->pasvid); + else + g_snprintf (tbuf, sizeof (tbuf), "DCC CHAT chat %u %d %d", + dcc->addr, dcc->port, dcc->pasvid); + dcc->serv->p_ctcp (dcc->serv, dcc->nick, tbuf); + } + else + { + dcc->sok = dcc_connect_sok (dcc); + if (dcc->sok == -1) + { + dcc->dccstat = STAT_FAILED; + fe_dcc_update (dcc); + return; + } + if (DCC_USE_PROXY ()) + dcc->iotag = fe_input_add (dcc->sok, FIA_WRITE|FIA_EX, dcc_proxy_connect, dcc); + else + dcc->iotag = fe_input_add (dcc->sok, FIA_WRITE|FIA_EX, dcc_connect_finished, dcc); + } + + fe_dcc_update (dcc); +} + +static gboolean +dcc_send_data (GIOChannel *source, GIOCondition condition, struct DCC *dcc) +{ + char *buf; + int len, sent, sok = dcc->sok; + + if (prefs.hex_dcc_blocksize < 1) /* this is too little! */ + prefs.hex_dcc_blocksize = 1024; + + if (prefs.hex_dcc_blocksize > 102400) /* this is too much! */ + prefs.hex_dcc_blocksize = 102400; + + if (dcc->throttled) + { + fe_input_remove (dcc->wiotag); + dcc->wiotag = 0; + return FALSE; + } + + if (!dcc->fastsend) + { + if (dcc->ack < (dcc->pos & 0xFFFFFFFF)) + return TRUE; + } + else if (!dcc->wiotag) + dcc->wiotag = fe_input_add (sok, FIA_WRITE, dcc_send_data, dcc); + + buf = g_malloc (prefs.hex_dcc_blocksize); + + lseek (dcc->fp, dcc->pos, SEEK_SET); + len = read (dcc->fp, buf, prefs.hex_dcc_blocksize); + if (len < 1) + goto abortit; + sent = send (sok, buf, len, 0); + + if (sent < 0 && !(would_block ())) + { +abortit: + g_free (buf); + EMIT_SIGNAL (XP_TE_DCCSENDFAIL, dcc->serv->front_session, + file_part (dcc->file), dcc->nick, + errorstring (sock_error ()), NULL, 0); + dcc_close (dcc, STAT_FAILED, FALSE); + return TRUE; + } + if (sent > 0) + { + dcc->pos += sent; + dcc->lasttime = time (0); + } + + /* have we sent it all yet? */ + if (dcc->pos >= dcc->size) + { + /* it's all sent now, so remove the WRITE/SEND handler */ + if (dcc->wiotag) + { + fe_input_remove (dcc->wiotag); + dcc->wiotag = 0; + } + } + + g_free (buf); + + return TRUE; +} + +static gboolean +dcc_handle_new_ack (struct DCC *dcc) +{ + guint32 ack; + char buf[16]; + gboolean done = FALSE; + + memcpy (&ack, dcc->ack_buf, 4); + dcc->ack = ntohl (ack); + + /* this could mess up when xfering >32bit files */ + if (dcc->size <= 0xffffffff) + { + /* fix for BitchX */ + if (dcc->ack < dcc->resumable) + dcc->ackoffset = TRUE; + if (dcc->ackoffset) + dcc->ack += dcc->resumable; + } + + /* DCC complete check */ + if (dcc->pos >= dcc->size && dcc->ack >= (dcc->size & 0xffffffff)) + { + dcc->ack = dcc->size; /* force 100% ack for >4 GB */ + dcc_close (dcc, STAT_DONE, FALSE); + dcc_calc_average_cps (dcc); /* this must be done _after_ dcc_close, or dcc_remove_from_sum will see the wrong value in dcc->cps */ + /* cppcheck-suppress deallocuse */ + sprintf (buf, "%" G_GINT64_FORMAT, dcc->cps); + EMIT_SIGNAL (XP_TE_DCCSENDCOMP, dcc->serv->front_session, + file_part (dcc->file), dcc->nick, buf, NULL, 0); + done = TRUE; + } + else if ((!dcc->fastsend) && (dcc->ack >= (dcc->pos & 0xffffffff))) + { + dcc_send_data (NULL, 0, (gpointer)dcc); + } + + /* take the top 32 of "bytes send" and bottom 32 of "ack" */ + dcc->ack = (dcc->pos & G_GINT64_CONSTANT (0xffffffff00000000)) | + (dcc->ack & 0xffffffff); + /* dcc->ack is only used for CPS and PERCENTAGE calcs from now on... */ + + return done; +} + +static gboolean +dcc_read_ack (GIOChannel *source, GIOCondition condition, struct DCC *dcc) +{ + int len; + + while (1) + { + /* try to fill up 4 bytes */ + len = recv (dcc->sok, dcc->ack_buf, 4 - dcc->ack_pos, 0); + if (len < 1) + { + if (len < 0) + { + if (would_block ()) /* ok - keep waiting */ + return TRUE; + } + EMIT_SIGNAL (XP_TE_DCCSENDFAIL, dcc->serv->front_session, + file_part (dcc->file), dcc->nick, + errorstring ((len < 0) ? sock_error () : 0), NULL, 0); + dcc_close (dcc, STAT_FAILED, FALSE); + return TRUE; + } + + dcc->ack_pos += len; + if (dcc->ack_pos >= 4) + { + dcc->ack_pos = 0; + if (dcc_handle_new_ack (dcc)) + return TRUE; + } + /* loop again until would_block() returns true */ + } +} + +static gboolean +dcc_accept (GIOChannel *source, GIOCondition condition, struct DCC *dcc) +{ + char host[128]; + struct sockaddr_in CAddr; + int sok; + socklen_t len; + + len = sizeof (CAddr); + sok = accept (dcc->sok, (struct sockaddr *) &CAddr, &len); + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + closesocket (dcc->sok); + if (sok < 0) + { + dcc->sok = -1; + dcc_close (dcc, STAT_FAILED, FALSE); + return TRUE; + } + set_nonblocking (sok); + dcc->sok = sok; + dcc->addr = ntohl (CAddr.sin_addr.s_addr); + + if (dcc->pasvid) + return dcc_connect_finished (NULL, 0, dcc); + + dcc->dccstat = STAT_ACTIVE; + dcc->lasttime = dcc->starttime = time (0); + dcc->fastsend = prefs.hex_dcc_fast_send; + + g_snprintf (host, sizeof (host), "%s:%d", net_ip (dcc->addr), dcc->port); + + switch (dcc->type) + { + case TYPE_SEND: + if (dcc->fastsend) + dcc->wiotag = fe_input_add (sok, FIA_WRITE, dcc_send_data, dcc); + dcc->iotag = fe_input_add (sok, FIA_READ|FIA_EX, dcc_read_ack, dcc); + dcc_send_data (NULL, 0, (gpointer)dcc); + EMIT_SIGNAL (XP_TE_DCCCONSEND, dcc->serv->front_session, + dcc->nick, host, dcc->file, NULL, 0); + break; + + case TYPE_CHATSEND: + dcc_open_query (dcc->serv, dcc->nick); + dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, dcc_read_chat, dcc); + dcc->dccchat = g_new0 (struct dcc_chat, 1); + EMIT_SIGNAL (XP_TE_DCCCONCHAT, dcc->serv->front_session, + dcc->nick, host, NULL, NULL, 0); + break; + default: + break; + } + + fe_dcc_update (dcc); + + return TRUE; +} + +guint32 +dcc_get_my_address (session *sess) /* the address we'll tell the other person */ +{ + struct hostent *dns_query; + guint32 addr = 0; + + if (prefs.hex_dcc_ip_from_server && sess->server->dcc_ip) + addr = sess->server->dcc_ip; + else if (prefs.hex_dcc_ip[0]) + { + dns_query = gethostbyname ((const char *) prefs.hex_dcc_ip); + + if (dns_query != NULL && + dns_query->h_length == 4 && + dns_query->h_addr_list[0] != NULL) + { + /*we're offered at least one IPv4 address: we take the first*/ + addr = *((guint32*) dns_query->h_addr_list[0]); + } + } + + return addr; +} + +static int +dcc_listen_init (struct DCC *dcc, session *sess) +{ + guint32 my_addr; + struct sockaddr_in SAddr; + int i, bindretval = -1; + socklen_t len; + + dcc->sok = socket (AF_INET, SOCK_STREAM, 0); + if (dcc->sok == -1) + return FALSE; + + memset (&SAddr, 0, sizeof (struct sockaddr_in)); + + len = sizeof (SAddr); + getsockname (dcc->serv->sok, (struct sockaddr *) &SAddr, &len); + + SAddr.sin_family = AF_INET; + + /*if local_ip is specified use that*/ + if (prefs.local_ip != 0xffffffff) + { + my_addr = prefs.local_ip; + SAddr.sin_addr.s_addr = prefs.local_ip; + } + /*otherwise use the default*/ + else + my_addr = SAddr.sin_addr.s_addr; + + /*if we have a valid portrange try to use that*/ + if (prefs.hex_dcc_port_first > 0) + { + SAddr.sin_port = 0; + i = 0; + while ((prefs.hex_dcc_port_last > ntohs(SAddr.sin_port)) && + (bindretval == -1)) + { + SAddr.sin_port = htons (prefs.hex_dcc_port_first + i); + i++; + /*printf("Trying to bind against port: %d\n",ntohs(SAddr.sin_port));*/ + bindretval = bind (dcc->sok, (struct sockaddr *) &SAddr, sizeof (SAddr)); + } + + /* with a small port range, reUseAddr is needed */ + len = 1; + setsockopt (dcc->sok, SOL_SOCKET, SO_REUSEADDR, (char *) &len, sizeof (len)); + + } else + { + /* try random port */ + SAddr.sin_port = 0; + bindretval = bind (dcc->sok, (struct sockaddr *) &SAddr, sizeof (SAddr)); + } + + if (bindretval == -1) + { + /* failed to bind */ + PrintText (sess, "Failed to bind to any address or port.\n"); + return FALSE; + } + + len = sizeof (SAddr); + getsockname (dcc->sok, (struct sockaddr *) &SAddr, &len); + + dcc->port = ntohs (SAddr.sin_port); + + /*if we have a dcc_ip, we use that, so the remote client can connect*/ + /*else we try to take an address from hex_dcc_ip*/ + /*if something goes wrong we tell the client to connect to our LAN ip*/ + dcc->addr = dcc_get_my_address (sess); + + /*if nothing else worked we use the address we bound to*/ + if (dcc->addr == 0) + dcc->addr = my_addr; + + dcc->addr = ntohl (dcc->addr); + + set_nonblocking (dcc->sok); + listen (dcc->sok, 1); + set_blocking (dcc->sok); + + dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, dcc_accept, dcc); + + return TRUE; +} + +static struct session *dccsess; +static char *dccto; /* lame!! */ +static gint64 dccmaxcps; +static int recursive = FALSE; + +static void +dcc_send_wild (char *file) +{ + dcc_send (dccsess, dccto, file, dccmaxcps, 0); +} + +void +dcc_send (struct session *sess, char *to, char *filename, gint64 maxcps, int passive) +{ + char outbuf[512]; + GFileInfo *file_info; + GFile *file; + struct DCC *dcc; + gchar *filename_fs; + GFileType file_type; + goffset file_size; + + filename = expand_homedir (filename); + + if (!recursive && (strchr (filename, '*') || strchr (filename, '?'))) + { + char path[256]; + char wild[256]; + + safe_strcpy (wild, file_part (filename), sizeof (wild)); + path_part (filename, path, sizeof (path)); + if (path[0] != '/' || path[1] != '\0') + path[strlen (path) - 1] = 0; /* remove trailing slash */ + + dccsess = sess; + dccto = to; + dccmaxcps = maxcps; + + g_free (filename); + + recursive = TRUE; + for_files (path, wild, dcc_send_wild); + recursive = FALSE; + + return; + } + + dcc = new_dcc (); + if (!dcc) + { + g_free (filename); + return; + } + + dcc->file = filename; + dcc->maxcps = maxcps; + + filename_fs = g_filename_from_utf8 (filename, -1, NULL, NULL, NULL); + if (filename_fs == NULL) + { + PrintTextf (sess, _("Cannot access %s\n"), dcc->file); + PrintTextf (sess, "%s %d: %s\n", _("Error"), errno, errorstring (errno)); + + dcc_close (dcc, 0, TRUE); /* dcc_close will free dcc->file */ + + return; + } + + file = g_file_new_for_path (filename_fs); + if (file == NULL) + { + PrintTextf (sess, _("Cannot access %s\n"), dcc->file); + PrintTextf (sess, "%s %d: %s\n", _("Error"), errno, errorstring (errno)); + + dcc_close (dcc, 0, TRUE); /* dcc_close will free dcc->file */ + + g_free (filename_fs); + + return; + } + + file_info = g_file_query_info (file, G_FILE_ATTRIBUTE_STANDARD_SIZE "," G_FILE_ATTRIBUTE_STANDARD_TYPE, G_FILE_QUERY_INFO_NONE, NULL, NULL); + + g_object_unref (file); + + if (file_info == NULL) + { + PrintTextf (sess, _("Cannot access %s\n"), dcc->file); + PrintTextf (sess, "%s %d: %s\n", _("Error"), errno, errorstring (errno)); + + dcc_close (dcc, 0, TRUE); /* dcc_close will free dcc->file */ + + g_free (filename_fs); + + return; + } + + file_type = g_file_info_get_file_type (file_info); + file_size = g_file_info_get_size (file_info); + + g_object_unref (file_info); + + if (*file_part (filename) == '\0' || file_type == G_FILE_TYPE_DIRECTORY || file_size <= 0) + { + PrintText (sess, "Cannot send directories or empty files.\n"); + + dcc_close (dcc, 0, TRUE); /* dcc_close will free dcc->file */ + + g_free (filename_fs); + + return; + } + + dcc->starttime = dcc->offertime = time (0); + dcc->serv = sess->server; + dcc->dccstat = STAT_QUEUED; + dcc->size = file_size; + dcc->type = TYPE_SEND; + dcc->fp = g_open (filename_fs, OFLAGS | O_RDONLY, 0); + + g_free (filename_fs); + + if (dcc->fp == -1) + { + PrintText (sess, "Cannot send directories or empty files.\n"); + + dcc_close (dcc, 0, TRUE); /* dcc_close will free dcc->file */ + + return; + } + + if (passive || dcc_listen_init (dcc, sess)) + { + char havespaces = 0; + while (*filename) + { + if (*filename == ' ') + { + if (prefs.hex_dcc_send_fillspaces) + *filename = '_'; + else + havespaces = 1; + } + filename++; + } + dcc->nick = g_strdup (to); + if (prefs.hex_gui_autoopen_send) + { + if (fe_dcc_open_send_win (TRUE)) /* already open? add */ + fe_dcc_add (dcc); + } else + fe_dcc_add (dcc); + + if (passive) + { + dcc->pasvid = new_id(); + g_snprintf (outbuf, sizeof (outbuf), (havespaces) ? + "DCC SEND \"%s\" 199 0 %" G_GUINT64_FORMAT " %d" : + "DCC SEND %s 199 0 %" G_GUINT64_FORMAT " %d", + file_part (dcc->file), + dcc->size, dcc->pasvid); + } + else + { + g_snprintf (outbuf, sizeof (outbuf), (havespaces) ? + "DCC SEND \"%s\" %u %d %" G_GUINT64_FORMAT : + "DCC SEND %s %u %d %" G_GUINT64_FORMAT, + file_part (dcc->file), dcc->addr, + dcc->port, dcc->size); + } + sess->server->p_ctcp (sess->server, to, outbuf); + + EMIT_SIGNAL (XP_TE_DCCOFFER, sess, file_part (dcc->file), + to, dcc->file, NULL, 0); + } + else + { + dcc_close (dcc, 0, TRUE); + } +} + +static struct DCC * +find_dcc_from_id (int id, int type) +{ + struct DCC *dcc; + GSList *list = dcc_list; + while (list) + { + dcc = (struct DCC *) list->data; + if (dcc->pasvid == id && + dcc->dccstat == STAT_QUEUED && dcc->type == type) + return dcc; + list = list->next; + } + return NULL; +} + +static struct DCC * +find_dcc_from_port (int port, int type) +{ + struct DCC *dcc; + GSList *list = dcc_list; + while (list) + { + dcc = (struct DCC *) list->data; + if (dcc->port == port && + dcc->dccstat == STAT_QUEUED && dcc->type == type) + return dcc; + list = list->next; + } + return NULL; +} + +struct DCC * +find_dcc (char *nick, char *file, int type) +{ + GSList *list = dcc_list; + struct DCC *dcc; + while (list) + { + dcc = (struct DCC *) list->data; + if (nick == NULL || !rfc_casecmp (nick, dcc->nick)) + { + if (type == -1 || dcc->type == type) + { + if (!file[0]) + return dcc; + if (!g_ascii_strcasecmp (file, file_part (dcc->file))) + return dcc; + if (!g_ascii_strcasecmp (file, dcc->file)) + return dcc; + } + } + list = list->next; + } + return NULL; +} + +/* called when we receive a NICK change from server */ + +void +dcc_change_nick (struct server *serv, char *oldnick, char *newnick) +{ + struct DCC *dcc; + GSList *list = dcc_list; + + while (list) + { + dcc = (struct DCC *) list->data; + if (dcc->serv == serv) + { + if (!serv->p_cmp (dcc->nick, oldnick)) + { + g_free (dcc->nick); + dcc->nick = g_strdup (newnick); + } + } + list = list->next; + } +} + +/* is the destination file the same? new_dcc is not opened yet */ + +static gboolean +is_same_file (struct DCC *dcc, struct DCC *new_dcc) +{ + gboolean result = FALSE; + gchar *filename_fs = NULL, *new_filename_fs = NULL; + GFile *file = NULL, *new_file = NULL; + GFileInfo *file_info = NULL, *new_file_info = NULL; + char *file_id = NULL, *new_file_id = NULL; + char *filesystem_id = NULL, *new_filesystem_id = NULL; + + /* if it's the same filename, must be same */ + if (strcmp (dcc->destfile, new_dcc->destfile) == 0) + { + return TRUE; + } + + filename_fs = g_filename_from_utf8 (dcc->file, -1, NULL, NULL, NULL); + if (filename_fs == NULL) + { + goto exit; + } + + new_filename_fs = g_filename_from_utf8 (new_dcc->file, -1, NULL, NULL, NULL); + if (new_filename_fs == NULL) + { + goto exit; + } + + file = g_file_new_for_path (filename_fs); + if (file == NULL) + { + goto exit; + } + + new_file = g_file_new_for_path (new_filename_fs); + if (new_file == NULL) + { + goto exit; + } + + file_info = g_file_query_info (file, G_FILE_ATTRIBUTE_ID_FILE "," G_FILE_ATTRIBUTE_ID_FILESYSTEM, G_FILE_QUERY_INFO_NONE, NULL, NULL); + if (file_info == NULL) + { + goto exit; + } + + new_file_info = g_file_query_info (new_file, G_FILE_ATTRIBUTE_ID_FILE "," G_FILE_ATTRIBUTE_ID_FILESYSTEM, G_FILE_QUERY_INFO_NONE, NULL, NULL); + if (new_file_info == NULL) + { + goto exit; + } + + file_id = g_file_info_get_attribute_as_string (file_info, G_FILE_ATTRIBUTE_ID_FILE); + new_file_id = g_file_info_get_attribute_as_string (new_file_info, G_FILE_ATTRIBUTE_ID_FILE); + + filesystem_id = g_file_info_get_attribute_as_string (file_info, G_FILE_ATTRIBUTE_ID_FILE); + new_filesystem_id = g_file_info_get_attribute_as_string (new_file_info, G_FILE_ATTRIBUTE_ID_FILE); + + if (file_id != NULL && new_file_id != NULL && filesystem_id != NULL && new_filesystem_id != NULL && strcmp (file_id, new_file_id) == 0 && strcmp (filesystem_id, new_filesystem_id) == 0) + { + result = TRUE; + } + +exit: + g_free (filename_fs); + g_free (new_filename_fs); + + if (file != NULL) + { + g_object_unref (file); + } + + if (new_file != NULL) + { + g_object_unref (new_file); + } + + if (file_info != NULL) + { + g_object_unref (file_info); + } + + if (new_file_info != NULL) + { + g_object_unref (new_file_info); + } + + g_free (file_id); + g_free (new_file_id); + g_free(filesystem_id); + g_free(new_filesystem_id); + + return result; +} + +static void +update_is_resumable (struct DCC *dcc) +{ + gchar *filename_fs = g_filename_from_utf8 (dcc->destfile, -1, NULL, NULL, NULL); + + dcc->resumable = 0; + + /* Check the file size */ + if (filename_fs != NULL && g_access(filename_fs, W_OK) == 0) + { + GFile *file = g_file_new_for_path (filename_fs); + if (file != NULL) + { + GFileInfo *file_info = g_file_query_info (file, G_FILE_ATTRIBUTE_STANDARD_SIZE "," G_FILE_ATTRIBUTE_STANDARD_TYPE, G_FILE_QUERY_INFO_NONE, NULL, NULL); + + if (file_info != NULL) + { + goffset file_size_offset = g_file_info_get_size (file_info); + guint64 file_size = (file_size_offset >= 0) ? (guint64) file_size_offset : 0; + if (file_size < dcc->size) + { + dcc->resumable = file_size; + dcc->pos = file_size; + } + else + { + dcc->resume_error = 2; + } + + g_object_unref (file_info); + } + else + { + dcc->resume_errno = errno; + dcc->resume_error = 1; + } + + g_object_unref(file); + } + else + { + dcc->resume_errno = errno; + dcc->resume_error = 1; + } + } + else + { + dcc->resume_errno = errno; + dcc->resume_error = 1; + } + + g_free (filename_fs); + + /* Now verify that this DCC is not already in progress from someone else */ + if (dcc->resumable) + { + GSList *list = dcc_list; + struct DCC *d; + while (list) + { + d = list->data; + if (d->type == TYPE_RECV && d->dccstat != STAT_ABORTED && + d->dccstat != STAT_DONE && d->dccstat != STAT_FAILED && + d->dccstat != STAT_QUEUED) + { + if (d != dcc && is_same_file (d, dcc)) + { + dcc->resume_error = 3; /* dccgui.c uses it */ + dcc->resumable = 0; + dcc->pos = 0; + break; + } + } + list = list->next; + } + } +} + +void +dcc_get (struct DCC *dcc) +{ + switch (dcc->dccstat) + { + case STAT_QUEUED: + if (dcc->type != TYPE_CHATSEND) + { + if (dcc->type == TYPE_RECV && prefs.hex_dcc_auto_resume && dcc->resumable) + { + dcc_resume (dcc); + } + else + { + dcc->resumable = 0; + dcc->pos = 0; + dcc_connect (dcc); + } + } + break; + case STAT_DONE: + case STAT_FAILED: + case STAT_ABORTED: + dcc_close (dcc, 0, TRUE); + break; + default: + break; + } +} + +/* for "Save As..." dialog */ + +void +dcc_get_with_destfile (struct DCC *dcc, char *file) +{ + g_free (dcc->destfile); + dcc->destfile = g_strdup (file); /* utf-8 */ + + /* since destfile changed, must check resumability again */ + update_is_resumable (dcc); + + dcc_get (dcc); +} + +void +dcc_get_nick (struct session *sess, char *nick) +{ + struct DCC *dcc; + GSList *list = dcc_list; + while (list) + { + dcc = (struct DCC *) list->data; + if (!sess->server->p_cmp (nick, dcc->nick)) + { + if (dcc->dccstat == STAT_QUEUED && dcc->type == TYPE_RECV) + { + update_is_resumable (dcc); + if (prefs.hex_dcc_auto_resume && dcc->resumable) + { + dcc_resume (dcc); + } + else + { + dcc->pos = 0; + dcc->ack = 0; + dcc_connect (dcc); + } + return; + } + } + list = list->next; + } + if (sess) + EMIT_SIGNAL (XP_TE_DCCIVAL, sess, NULL, NULL, NULL, NULL, 0); +} + +static struct DCC * +new_dcc (void) +{ + struct DCC *dcc = g_new0 (struct DCC, 1); + dcc->sok = -1; + dcc->fp = -1; + dcc_list = g_slist_prepend (dcc_list, dcc); + if (timeout_timer == 0) + { + timeout_timer = fe_timeout_add_seconds (1, dcc_check_timeouts, NULL); + } + return dcc; +} + +void +dcc_chat (struct session *sess, char *nick, int passive) +{ + char outbuf[512]; + struct DCC *dcc; + + dcc = find_dcc (nick, "", TYPE_CHATSEND); + if (dcc) + { + switch (dcc->dccstat) + { + case STAT_ACTIVE: + case STAT_QUEUED: + case STAT_CONNECTING: + EMIT_SIGNAL (XP_TE_DCCCHATREOFFER, sess, nick, NULL, NULL, NULL, 0); + return; + case STAT_ABORTED: + case STAT_FAILED: + dcc_close (dcc, 0, TRUE); + break; + case STAT_DONE: + break; + } + } + dcc = find_dcc (nick, "", TYPE_CHATRECV); + if (dcc) + { + switch (dcc->dccstat) + { + case STAT_QUEUED: + dcc_connect (dcc); + break; + case STAT_FAILED: + case STAT_ABORTED: + dcc_close (dcc, 0, TRUE); + break; + default: + break; + } + return; + } + /* offer DCC CHAT */ + + dcc = new_dcc (); + if (!dcc) + return; + dcc->starttime = dcc->offertime = time (0); + dcc->serv = sess->server; + dcc->dccstat = STAT_QUEUED; + dcc->type = TYPE_CHATSEND; + dcc->nick = g_strdup (nick); + if (passive || dcc_listen_init (dcc, sess)) + { + if (prefs.hex_gui_autoopen_chat) + { + if (fe_dcc_open_chat_win (TRUE)) /* already open? add only */ + fe_dcc_add (dcc); + } else + fe_dcc_add (dcc); + + if (passive) + { + dcc->pasvid = new_id (); + g_snprintf (outbuf, sizeof (outbuf), "DCC CHAT chat 199 %d %d", + dcc->port, dcc->pasvid); + } else + { + g_snprintf (outbuf, sizeof (outbuf), "DCC CHAT chat %u %d", + dcc->addr, dcc->port); + } + dcc->serv->p_ctcp (dcc->serv, nick, outbuf); + EMIT_SIGNAL (XP_TE_DCCCHATOFFERING, sess, nick, NULL, NULL, NULL, 0); + } else + { + dcc_close (dcc, 0, TRUE); + } +} + +static void +dcc_malformed (struct session *sess, char *nick, char *data) +{ + EMIT_SIGNAL (XP_TE_MALFORMED, sess, nick, data, NULL, NULL, 0); +} + +int +dcc_resume (struct DCC *dcc) +{ + char tbuf[500]; + + update_is_resumable (dcc); + + if (dcc->dccstat == STAT_QUEUED && dcc->resumable) + { + dcc->resume_sent = 1; + /* filename contains spaces? Quote them! */ + g_snprintf (tbuf, sizeof (tbuf) - 10, strchr (dcc->file, ' ') ? + "DCC RESUME \"%s\" %d %" G_GUINT64_FORMAT : + "DCC RESUME %s %d %" G_GUINT64_FORMAT, + dcc->file, dcc->port, dcc->resumable); + + if (dcc->pasvid) + sprintf (tbuf + strlen (tbuf), " %d", dcc->pasvid); + + dcc->serv->p_ctcp (dcc->serv, dcc->nick, tbuf); + return 1; + } + + return 0; +} + +static void +dcc_confirm_send (void *ud) +{ + struct DCC *dcc = (struct DCC *) ud; + dcc_get (dcc); +} + +static void +dcc_deny_send (void *ud) +{ + struct DCC *dcc = (struct DCC *) ud; + dcc_abort (dcc->serv->front_session, dcc); +} + +static void +dcc_confirm_chat (void *ud) +{ + struct DCC *dcc = (struct DCC *) ud; + dcc_connect (dcc); +} + +static void +dcc_deny_chat (void *ud) +{ + struct DCC *dcc = (struct DCC *) ud; + dcc_abort (dcc->serv->front_session, dcc); +} + +static struct DCC * +dcc_add_chat (session *sess, char *nick, int port, guint32 addr, int pasvid) +{ + struct DCC *dcc; + + dcc = new_dcc (); + if (dcc) + { + dcc->serv = sess->server; + dcc->type = TYPE_CHATRECV; + dcc->dccstat = STAT_QUEUED; + dcc->addr = addr; + dcc->port = port; + dcc->pasvid = pasvid; + dcc->nick = g_strdup (nick); + dcc->starttime = time (0); + + EMIT_SIGNAL (XP_TE_DCCCHATOFFER, sess->server->front_session, nick, + NULL, NULL, NULL, 0); + + if (prefs.hex_gui_autoopen_chat) + { + if (fe_dcc_open_chat_win (TRUE)) /* already open? add only */ + fe_dcc_add (dcc); + } else + fe_dcc_add (dcc); + + if (prefs.hex_dcc_auto_chat) + { + dcc_connect (dcc); + } + else + { + char buff[128]; + g_snprintf (buff, sizeof (buff), "%s is offering DCC Chat. Do you want to accept?", nick); + fe_confirm (buff, dcc_confirm_chat, dcc_deny_chat, dcc); + } + } + + return dcc; +} + +static struct DCC * +dcc_add_file (session *sess, char *file, guint64 size, int port, char *nick, guint32 addr, int pasvid) +{ + struct DCC *dcc; + char tbuf[512]; + + dcc = new_dcc (); + if (dcc) + { + dcc->file = g_strdup (file); + + dcc->destfile = g_malloc (strlen (prefs.hex_dcc_dir) + strlen (nick) + + strlen (file) + 4); + + strcpy (dcc->destfile, prefs.hex_dcc_dir); + if (prefs.hex_dcc_dir[strlen (prefs.hex_dcc_dir) - 1] != G_DIR_SEPARATOR) + strcat (dcc->destfile, G_DIR_SEPARATOR_S); + if (prefs.hex_dcc_save_nick) + { +#ifdef WIN32 + char *t = strlen (dcc->destfile) + dcc->destfile; + strcpy (t, nick); + while (*t) + { + if (*t == '\\' || *t == '|') + *t = '_'; + t++; + } +#else + strcat (dcc->destfile, nick); +#endif + strcat (dcc->destfile, "."); + } + strcat (dcc->destfile, file); + + dcc->resumable = 0; + dcc->pos = 0; + dcc->serv = sess->server; + dcc->type = TYPE_RECV; + dcc->dccstat = STAT_QUEUED; + dcc->addr = addr; + dcc->port = port; + dcc->pasvid = pasvid; + dcc->size = size; + dcc->nick = g_strdup (nick); + dcc->maxcps = prefs.hex_dcc_max_get_cps; + + update_is_resumable (dcc); + + if (prefs.hex_dcc_auto_recv == 1) + { + g_snprintf (tbuf, sizeof (tbuf), _("%s is offering \"%s\". Do you want to accept?"), nick, file); + fe_confirm (tbuf, dcc_confirm_send, dcc_deny_send, dcc); + } + else if (prefs.hex_dcc_auto_recv == 2) + { + dcc_get (dcc); + } + if (prefs.hex_gui_autoopen_recv) + { + if (fe_dcc_open_recv_win (TRUE)) /* was already open? just add*/ + fe_dcc_add (dcc); + } else + fe_dcc_add (dcc); + } + sprintf (tbuf, "%" G_GUINT64_FORMAT, size); + g_snprintf (tbuf + 24, 300, "%s:%d", net_ip (addr), port); + EMIT_SIGNAL (XP_TE_DCCSENDOFFER, sess->server->front_session, nick, + file, tbuf, tbuf + 24, 0); + + return dcc; +} + +void +handle_dcc (struct session *sess, char *nick, char *word[], char *word_eol[], + const message_tags_data *tags_data) +{ + char tbuf[512]; + struct DCC *dcc; + char *type = word[5]; + int port, pasvid = 0; + guint32 addr; + guint64 size; + int psend = 0; + + if (!g_ascii_strcasecmp (type, "CHAT")) + { + port = atoi (word[8]); + addr = strtoul (word[7], NULL, 10); + + if (port == 0) + pasvid = atoi (word[9]); + else if (word[9][0] != 0) + { + pasvid = atoi (word[9]); + psend = 1; + } + + if (!addr /*|| (port < 1024 && port != 0)*/ + || port > 0xffff || (port == 0 && pasvid == 0)) + { + dcc_malformed (sess, nick, word_eol[4] + 2); + return; + } + + if (psend) + { + dcc = find_dcc_from_id (pasvid, TYPE_CHATSEND); + if (dcc) + { + dcc->addr = addr; + dcc->port = port; + dcc_connect (dcc); + } else + { + dcc_malformed (sess, nick, word_eol[4] + 2); + } + return; + } + + dcc = find_dcc (nick, "", TYPE_CHATSEND); + if (dcc) + dcc_close (dcc, 0, TRUE); + + dcc = find_dcc (nick, "", TYPE_CHATRECV); + if (dcc) + dcc_close (dcc, 0, TRUE); + + dcc_add_chat (sess, nick, port, addr, pasvid); + return; + } + + if (!g_ascii_strcasecmp (type, "Resume")) + { + port = atoi (word[7]); + + if (port == 0) + { /* PASSIVE */ + pasvid = atoi(word[9]); + dcc = find_dcc_from_id(pasvid, TYPE_SEND); + } else + { + dcc = find_dcc_from_port (port, TYPE_SEND); + } + if (!dcc) + dcc = find_dcc (nick, word[6], TYPE_SEND); + if (dcc) + { + size = g_ascii_strtoull (word[8], NULL, 10); + dcc->resumable = size; + if (dcc->resumable < dcc->size) + { + dcc->pos = dcc->resumable; + dcc->ack = dcc->resumable; + lseek (dcc->fp, dcc->pos, SEEK_SET); + + /* Checking if dcc is passive and if filename contains spaces */ + if (dcc->pasvid) + g_snprintf (tbuf, sizeof (tbuf), strchr (file_part (dcc->file), ' ') ? + "DCC ACCEPT \"%s\" %d %" G_GUINT64_FORMAT " %d" : + "DCC ACCEPT %s %d %" G_GUINT64_FORMAT " %d", + file_part (dcc->file), port, dcc->resumable, dcc->pasvid); + else + g_snprintf (tbuf, sizeof (tbuf), strchr (file_part (dcc->file), ' ') ? + "DCC ACCEPT \"%s\" %d %" G_GUINT64_FORMAT : + "DCC ACCEPT %s %d %" G_GUINT64_FORMAT, + file_part (dcc->file), port, dcc->resumable); + + dcc->serv->p_ctcp (dcc->serv, dcc->nick, tbuf); + } + sprintf (tbuf, "%" G_GUINT64_FORMAT, dcc->pos); + EMIT_SIGNAL_TIMESTAMP (XP_TE_DCCRESUMEREQUEST, sess, nick, + file_part (dcc->file), tbuf, NULL, 0, + tags_data->timestamp); + } + return; + } + if (!g_ascii_strcasecmp (type, "Accept")) + { + port = atoi (word[7]); + dcc = find_dcc_from_port (port, TYPE_RECV); + if (dcc && dcc->dccstat == STAT_QUEUED) + { + dcc_connect (dcc); + } + return; + } + if (!g_ascii_strcasecmp (type, "SEND")) + { + char *file = file_part (word[6]); + + port = atoi (word[8]); + addr = strtoul (word[7], NULL, 10); + size = g_ascii_strtoull (word[9], NULL, 10); + + if (port == 0) /* Passive dcc requested */ + pasvid = atoi (word[10]); + else if (word[10][0] != 0) + { + /* Requesting passive dcc. + * Destination user of an active dcc is giving his + * TRUE address/port/pasvid data. + * This information will be used later to + * establish the connection to the user. + * We can recognize this type of dcc using word[10] + * because this field is always null (no pasvid) + * in normal dcc sends. + */ + pasvid = atoi (word[10]); + psend = 1; + } + + + if (!addr || !size /*|| (port < 1024 && port != 0)*/ + || port > 0xffff || (port == 0 && pasvid == 0)) + { + dcc_malformed (sess, nick, word_eol[4] + 2); + return; + } + + if (psend) + { + /* Third Step of Passive send. + * Connecting to the destination and finally + * sending file. + */ + dcc = find_dcc_from_id (pasvid, TYPE_SEND); + if (dcc) + { + dcc->addr = addr; + dcc->port = port; + dcc_connect (dcc); + } else + { + dcc_malformed (sess, nick, word_eol[4] + 2); + } + return; + } + + dcc_add_file (sess, file, size, port, nick, addr, pasvid); + + } else + { + EMIT_SIGNAL_TIMESTAMP (XP_TE_DCCGENERICOFFER, sess->server->front_session, + word_eol[4] + 2, nick, NULL, NULL, 0, + tags_data->timestamp); + } +} + +void +dcc_show_list (struct session *sess) +{ + int i = 0; + struct DCC *dcc; + GSList *list = dcc_list; + + EMIT_SIGNAL (XP_TE_DCCHEAD, sess, NULL, NULL, NULL, NULL, 0); + while (list) + { + dcc = (struct DCC *) list->data; + i++; + PrintTextf (sess, " %s %-10.10s %-7.7s %-7" G_GUINT64_FORMAT " %-7" G_GUINT64_FORMAT " %s\n", + dcctypes[dcc->type], dcc->nick, + _(dccstat[dcc->dccstat].name), dcc->size, dcc->pos, + file_part (dcc->file)); + list = list->next; + } + if (!i) + PrintText (sess, _("No active DCCs\n")); +} diff --git a/hexchat/src/common/dcc.h b/hexchat/src/common/dcc.h new file mode 100644 index 0000000..7402820 --- /dev/null +++ b/hexchat/src/common/dcc.h @@ -0,0 +1,130 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +/* dcc.h */ + +#include <time.h> /* for time_t */ +#include "proto-irc.h" + +#ifndef HEXCHAT_DCC_H +#define HEXCHAT_DCC_H + +enum dcc_state { + STAT_QUEUED = 0, + STAT_ACTIVE, + STAT_FAILED, + STAT_DONE, + STAT_CONNECTING, + STAT_ABORTED +}; + +enum dcc_type { + TYPE_SEND = 0, + TYPE_RECV, + TYPE_CHATRECV, + TYPE_CHATSEND +}; + +#define CPS_AVG_WINDOW 10 + +struct DCC +{ + struct server *serv; + struct dcc_chat *dccchat; + struct proxy_state *proxy; + guint32 addr; /* the 32bit IP number, host byte order */ + int fp; /* file pointer */ + int sok; + int iotag; /* reading io tag */ + int wiotag; /* writing/sending io tag */ + int port; + int pasvid; /* mIRC's passive DCC id */ + gint64 cps; + int resume_error; + int resume_errno; + + GTimeVal lastcpstv, firstcpstv; + goffset lastcpspos; + gint64 maxcps; + + unsigned char ack_buf[4]; /* buffer for reading 4-byte ack */ + int ack_pos; + + guint64 size; + guint64 resumable; + guint64 ack; + guint64 pos; + time_t starttime; + time_t offertime; + time_t lasttime; + char *file; /* utf8 */ + char *destfile; /* utf8 */ + char *nick; + enum dcc_type type; + enum dcc_state dccstat; + unsigned int resume_sent:1; /* resume request sent */ + unsigned int fastsend:1; + unsigned int ackoffset:1; /* is receiver sending acks as an offset from */ + /* the resume point? */ + unsigned int throttled:2; /* 0x1 = per send/get throttle + 0x2 = global throttle */ +}; + +#define MAX_PROXY_BUFFER 1024 +struct proxy_state +{ + int phase; + unsigned char buffer[MAX_PROXY_BUFFER]; + int buffersize; + int bufferused; +}; + +struct dcc_chat +{ + char linebuf[2048]; + int pos; +}; + +struct dccstat_info +{ + char *name; /* Display name */ + int color; /* Display color (index into colors[] ) */ +}; + +extern struct dccstat_info dccstat[]; + +gboolean is_dcc (struct DCC *dcc); +gboolean is_dcc_completed (struct DCC *dcc); +void dcc_abort (session *sess, struct DCC *dcc); +void dcc_get (struct DCC *dcc); +int dcc_resume (struct DCC *dcc); +void dcc_change_nick (server *serv, char *oldnick, char *newnick); +void dcc_notify_kill (struct server *serv); +struct DCC *dcc_write_chat (char *nick, char *text); +void dcc_send (struct session *sess, char *to, char *file, gint64 maxcps, int passive); +struct DCC *find_dcc (char *nick, char *file, int type); +void dcc_get_nick (struct session *sess, char *nick); +void dcc_chat (session *sess, char *nick, int passive); +void handle_dcc (session *sess, char *nick, char *word[], char *word_eol[], + const message_tags_data *tags_data); +void dcc_show_list (session *sess); +guint32 dcc_get_my_address (session *sess); +void dcc_get_with_destfile (struct DCC *dcc, char *utf8file); + +#endif diff --git a/hexchat/src/common/fe.h b/hexchat/src/common/fe.h new file mode 100644 index 0000000..b8a6279 --- /dev/null +++ b/hexchat/src/common/fe.h @@ -0,0 +1,194 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "userlist.h" +#include "dcc.h" + +#ifndef HEXCHAT_FE_H +#define HEXCHAT_FE_H + +/* for storage of /menu entries */ +typedef struct +{ + gint32 pos; /* position */ + gint16 modifier; /* keybinding */ + gint16 root_offset; /* bytes to offset ->path */ + + char is_main; /* is part of the Main menu? (not a popup) */ + char state; /* state of toggle items */ + char markup; /* use pango markup? */ + char enable; /* enabled? sensitivity */ + + int key; + char *path; + char *label; + char *cmd; + char *ucmd; /* unselect command (toggles) */ + char *group; /* for radio items or NULL */ + char *icon; /* filename */ +} menu_entry; + +int fe_args (int argc, char *argv[]); +void fe_init (void); +void fe_main (void); +void fe_cleanup (void); +void fe_exit (void); +int fe_timeout_add (int interval, void *callback, void *userdata); +int fe_timeout_add_seconds (int interval, void *callback, void *userdata); +void fe_timeout_remove (int tag); +void fe_new_window (struct session *sess, int focus); +void fe_new_server (struct server *serv); +void fe_add_rawlog (struct server *serv, char *text, int len, int outbound); +#define FE_MSG_WAIT 1 +#define FE_MSG_INFO 2 +#define FE_MSG_WARN 4 +#define FE_MSG_ERROR 8 +#define FE_MSG_MARKUP 16 +void fe_message (char *msg, int flags); +#define FIA_READ 1 +#define FIA_WRITE 2 +#define FIA_EX 4 +#define FIA_FD 8 +int fe_input_add (int sok, int flags, void *func, void *data); +void fe_input_remove (int tag); +void fe_idle_add (void *func, void *data); +void fe_set_topic (struct session *sess, char *topic, char *stripped_topic); +typedef enum +{ + FE_COLOR_NONE = 0, + FE_COLOR_NEW_DATA = 1, + FE_COLOR_NEW_MSG = 2, + FE_COLOR_NEW_HILIGHT = 3, + FE_COLOR_FLAG_NOOVERRIDE = 8, +} tabcolor; +#define FE_COLOR_ALLFLAGS (FE_COLOR_FLAG_NOOVERRIDE) +void fe_set_tab_color (struct session *sess, tabcolor col); +void fe_flash_window (struct session *sess); +void fe_update_mode_buttons (struct session *sess, char mode, char sign); +void fe_update_channel_key (struct session *sess); +void fe_update_channel_limit (struct session *sess); +int fe_is_chanwindow (struct server *serv); +void fe_add_chan_list (struct server *serv, char *chan, char *users, + char *topic); +void fe_chan_list_end (struct server *serv); +gboolean fe_add_ban_list (struct session *sess, char *mask, char *who, char *when, int rplcode); +gboolean fe_ban_list_end (struct session *sess, int rplcode); +void fe_notify_update (char *name); +void fe_notify_ask (char *name, char *networks); +void fe_text_clear (struct session *sess, int lines); +void fe_close_window (struct session *sess); +void fe_progressbar_start (struct session *sess); +void fe_progressbar_end (struct server *serv); +void fe_print_text (struct session *sess, char *text, time_t stamp, + gboolean no_activity); +void fe_userlist_insert (struct session *sess, struct User *newuser, gboolean sel); +int fe_userlist_remove (struct session *sess, struct User *user); +void fe_userlist_rehash (struct session *sess, struct User *user); +void fe_userlist_update (struct session *sess, struct User *user); +void fe_userlist_numbers (struct session *sess); +void fe_userlist_clear (struct session *sess); +void fe_userlist_set_selected (struct session *sess); +void fe_uselect (session *sess, char *word[], int do_clear, int scroll_to); +void fe_dcc_add (struct DCC *dcc); +void fe_dcc_update (struct DCC *dcc); +void fe_dcc_remove (struct DCC *dcc); +int fe_dcc_open_recv_win (int passive); +int fe_dcc_open_send_win (int passive); +int fe_dcc_open_chat_win (int passive); +void fe_clear_channel (struct session *sess); +void fe_session_callback (struct session *sess); +void fe_server_callback (struct server *serv); +void fe_url_add (const char *text); +void fe_pluginlist_update (void); +void fe_buttons_update (struct session *sess); +void fe_dlgbuttons_update (struct session *sess); +void fe_dcc_send_filereq (struct session *sess, char *nick, int maxcps, int passive); +void fe_set_channel (struct session *sess); +void fe_set_title (struct session *sess); +void fe_set_nonchannel (struct session *sess, int state); +void fe_set_nick (struct server *serv, char *newnick); +void fe_ignore_update (int level); +void fe_beep (session *sess); +void fe_lastlog (session *sess, session *lastlog_sess, char *sstr, gtk_xtext_search_flags flags); +void fe_set_lag (server *serv, long lag); +void fe_set_throttle (server *serv); +void fe_set_away (server *serv); +void fe_serverlist_open (session *sess); +void fe_get_bool (char *title, char *prompt, void *callback, void *userdata); +void fe_get_str (char *prompt, char *def, void *callback, void *ud); +void fe_get_int (char *prompt, int def, void *callback, void *ud); +#define FRF_WRITE 1 /* save file */ +#define FRF_MULTIPLE 2 /* multi-select */ +#define FRF_RECENTLYUSED 4 /* let gtk decide start dir instead of our config */ +#define FRF_CHOOSEFOLDER 8 /* choosing a folder only */ +#define FRF_FILTERISINITIAL 16 /* filter is initial directory */ +#define FRF_NOASKOVERWRITE 32 /* don't ask to overwrite existing files */ +#define FRF_EXTENSIONS 64 /* specify file extensions to be displayed */ +#define FRF_MIMETYPES 128 /* specify file mimetypes to be displayed */ +#define FRF_MODAL 256 /* dialog should be modal to parent */ +void fe_get_file (const char *title, char *initial, + void (*callback) (void *userdata, char *file), void *userdata, + int flags); +typedef enum { + FE_GUI_HIDE, + FE_GUI_SHOW, + FE_GUI_FOCUS, + FE_GUI_FLASH, + FE_GUI_COLOR, + FE_GUI_ICONIFY, + FE_GUI_MENU, + FE_GUI_ATTACH, + FE_GUI_APPLY, +} fe_gui_action; +void fe_ctrl_gui (session *sess, fe_gui_action action, int arg); +int fe_gui_info (session *sess, int info_type); +void *fe_gui_info_ptr (session *sess, int info_type); +void fe_confirm (const char *message, void (*yesproc)(void *), void (*noproc)(void *), void *ud); +char *fe_get_inputbox_contents (struct session *sess); +int fe_get_inputbox_cursor (struct session *sess); +void fe_set_inputbox_contents (struct session *sess, char *text); +void fe_set_inputbox_cursor (struct session *sess, int delta, int pos); +void fe_open_url (const char *url); +void fe_menu_del (menu_entry *); +char *fe_menu_add (menu_entry *); +void fe_menu_update (menu_entry *); +#define FE_SE_CONNECT 0 +#define FE_SE_LOGGEDIN 1 +#define FE_SE_DISCONNECT 2 +#define FE_SE_RECONDELAY 3 +#define FE_SE_CONNECTING 4 +void fe_server_event (server *serv, int type, int arg); +/* pass NULL filename2 for default HexChat icon */ +void fe_tray_set_flash (const char *filename1, const char *filename2, int timeout); +/* pass NULL filename for default HexChat icon */ +void fe_tray_set_file (const char *filename); +typedef enum +{ + FE_ICON_NORMAL = 0, + FE_ICON_MESSAGE = 2, + FE_ICON_HIGHLIGHT = 5, + FE_ICON_PRIVMSG = 8, + FE_ICON_FILEOFFER = 11 +} feicon; +void fe_tray_set_icon (feicon icon); +void fe_tray_set_tooltip (const char *text); +void fe_open_chan_list (server *serv, char *filter, int do_refresh); +const char *fe_get_default_font (void); + +#endif diff --git a/hexchat/src/common/hexchat-plugin.h b/hexchat/src/common/hexchat-plugin.h new file mode 100644 index 0000000..f5f04b1 --- /dev/null +++ b/hexchat/src/common/hexchat-plugin.h @@ -0,0 +1,459 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +/* You can distribute this header with your plugins for easy compilation */ +#ifndef HEXCHAT_PLUGIN_H +#define HEXCHAT_PLUGIN_H + +#include <time.h> + +#define HEXCHAT_PRI_HIGHEST 127 +#define HEXCHAT_PRI_HIGH 64 +#define HEXCHAT_PRI_NORM 0 +#define HEXCHAT_PRI_LOW (-64) +#define HEXCHAT_PRI_LOWEST (-128) + +#define HEXCHAT_FD_READ 1 +#define HEXCHAT_FD_WRITE 2 +#define HEXCHAT_FD_EXCEPTION 4 +#define HEXCHAT_FD_NOTSOCKET 8 + +#define HEXCHAT_EAT_NONE 0 /* pass it on through! */ +#define HEXCHAT_EAT_HEXCHAT 1 /* don't let HexChat see this event */ +#define HEXCHAT_EAT_PLUGIN 2 /* don't let other plugins see this event */ +#define HEXCHAT_EAT_ALL (HEXCHAT_EAT_HEXCHAT|HEXCHAT_EAT_PLUGIN) /* don't let anything see this event */ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct _hexchat_plugin hexchat_plugin; +typedef struct _hexchat_list hexchat_list; +typedef struct _hexchat_hook hexchat_hook; +#ifndef PLUGIN_C +typedef struct _hexchat_context hexchat_context; +#endif +typedef struct +{ + time_t server_time_utc; /* 0 if not used */ +} hexchat_event_attrs; + +#ifndef PLUGIN_C +struct _hexchat_plugin +{ + /* these are only used on win32 */ + hexchat_hook *(*hexchat_hook_command) (hexchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], char *word_eol[], void *user_data), + const char *help_text, + void *userdata); + hexchat_hook *(*hexchat_hook_server) (hexchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], char *word_eol[], void *user_data), + void *userdata); + hexchat_hook *(*hexchat_hook_print) (hexchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], void *user_data), + void *userdata); + hexchat_hook *(*hexchat_hook_timer) (hexchat_plugin *ph, + int timeout, + int (*callback) (void *user_data), + void *userdata); + hexchat_hook *(*hexchat_hook_fd) (hexchat_plugin *ph, + int fd, + int flags, + int (*callback) (int fd, int flags, void *user_data), + void *userdata); + void *(*hexchat_unhook) (hexchat_plugin *ph, + hexchat_hook *hook); + void (*hexchat_print) (hexchat_plugin *ph, + const char *text); + void (*hexchat_printf) (hexchat_plugin *ph, + const char *format, ...) +#ifdef __GNUC__ + __attribute__((format(printf, 2, 3))) +#endif + ; + void (*hexchat_command) (hexchat_plugin *ph, + const char *command); + void (*hexchat_commandf) (hexchat_plugin *ph, + const char *format, ...) +#ifdef __GNUC__ + __attribute__((format(printf, 2, 3))) +#endif + ; + int (*hexchat_nickcmp) (hexchat_plugin *ph, + const char *s1, + const char *s2); + int (*hexchat_set_context) (hexchat_plugin *ph, + hexchat_context *ctx); + hexchat_context *(*hexchat_find_context) (hexchat_plugin *ph, + const char *servname, + const char *channel); + hexchat_context *(*hexchat_get_context) (hexchat_plugin *ph); + const char *(*hexchat_get_info) (hexchat_plugin *ph, + const char *id); + int (*hexchat_get_prefs) (hexchat_plugin *ph, + const char *name, + const char **string, + int *integer); + hexchat_list * (*hexchat_list_get) (hexchat_plugin *ph, + const char *name); + void (*hexchat_list_free) (hexchat_plugin *ph, + hexchat_list *xlist); + const char * const * (*hexchat_list_fields) (hexchat_plugin *ph, + const char *name); + int (*hexchat_list_next) (hexchat_plugin *ph, + hexchat_list *xlist); + const char * (*hexchat_list_str) (hexchat_plugin *ph, + hexchat_list *xlist, + const char *name); + int (*hexchat_list_int) (hexchat_plugin *ph, + hexchat_list *xlist, + const char *name); + void * (*hexchat_plugingui_add) (hexchat_plugin *ph, + const char *filename, + const char *name, + const char *desc, + const char *version, + char *reserved); + void (*hexchat_plugingui_remove) (hexchat_plugin *ph, + void *handle); + int (*hexchat_emit_print) (hexchat_plugin *ph, + const char *event_name, ...); + int (*hexchat_read_fd) (hexchat_plugin *ph, + void *src, + char *buf, + int *len); + time_t (*hexchat_list_time) (hexchat_plugin *ph, + hexchat_list *xlist, + const char *name); + char *(*hexchat_gettext) (hexchat_plugin *ph, + const char *msgid); + void (*hexchat_send_modes) (hexchat_plugin *ph, + const char **targets, + int ntargets, + int modes_per_line, + char sign, + char mode); + char *(*hexchat_strip) (hexchat_plugin *ph, + const char *str, + int len, + int flags); + void (*hexchat_free) (hexchat_plugin *ph, + void *ptr); + int (*hexchat_pluginpref_set_str) (hexchat_plugin *ph, + const char *var, + const char *value); + int (*hexchat_pluginpref_get_str) (hexchat_plugin *ph, + const char *var, + char *dest); + int (*hexchat_pluginpref_set_int) (hexchat_plugin *ph, + const char *var, + int value); + int (*hexchat_pluginpref_get_int) (hexchat_plugin *ph, + const char *var); + int (*hexchat_pluginpref_delete) (hexchat_plugin *ph, + const char *var); + int (*hexchat_pluginpref_list) (hexchat_plugin *ph, + char *dest); + hexchat_hook *(*hexchat_hook_server_attrs) (hexchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], char *word_eol[], + hexchat_event_attrs *attrs, void *user_data), + void *userdata); + hexchat_hook *(*hexchat_hook_print_attrs) (hexchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], hexchat_event_attrs *attrs, + void *user_data), + void *userdata); + int (*hexchat_emit_print_attrs) (hexchat_plugin *ph, hexchat_event_attrs *attrs, + const char *event_name, ...); + hexchat_event_attrs *(*hexchat_event_attrs_create) (hexchat_plugin *ph); + void (*hexchat_event_attrs_free) (hexchat_plugin *ph, + hexchat_event_attrs *attrs); +}; +#endif + + +hexchat_hook * +hexchat_hook_command (hexchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], char *word_eol[], void *user_data), + const char *help_text, + void *userdata); + +hexchat_event_attrs *hexchat_event_attrs_create (hexchat_plugin *ph); + +void hexchat_event_attrs_free (hexchat_plugin *ph, hexchat_event_attrs *attrs); + +hexchat_hook * +hexchat_hook_server (hexchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], char *word_eol[], void *user_data), + void *userdata); + +hexchat_hook * +hexchat_hook_server_attrs (hexchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], char *word_eol[], + hexchat_event_attrs *attrs, void *user_data), + void *userdata); + +hexchat_hook * +hexchat_hook_print (hexchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], void *user_data), + void *userdata); + +hexchat_hook * +hexchat_hook_print_attrs (hexchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], hexchat_event_attrs *attrs, + void *user_data), + void *userdata); + +hexchat_hook * +hexchat_hook_timer (hexchat_plugin *ph, + int timeout, + int (*callback) (void *user_data), + void *userdata); + +hexchat_hook * +hexchat_hook_fd (hexchat_plugin *ph, + int fd, + int flags, + int (*callback) (int fd, int flags, void *user_data), + void *userdata); + +void * +hexchat_unhook (hexchat_plugin *ph, + hexchat_hook *hook); + +void +hexchat_print (hexchat_plugin *ph, + const char *text); + +void +hexchat_printf (hexchat_plugin *ph, + const char *format, ...) +#ifdef __GNUC__ + __attribute__((format(printf, 2, 3))) +#endif +; + +void +hexchat_command (hexchat_plugin *ph, + const char *command); + +void +hexchat_commandf (hexchat_plugin *ph, + const char *format, ...) +#ifdef __GNUC__ + __attribute__((format(printf, 2, 3))) +#endif +; + +int +hexchat_nickcmp (hexchat_plugin *ph, + const char *s1, + const char *s2); + +int +hexchat_set_context (hexchat_plugin *ph, + hexchat_context *ctx); + +hexchat_context * +hexchat_find_context (hexchat_plugin *ph, + const char *servname, + const char *channel); + +hexchat_context * +hexchat_get_context (hexchat_plugin *ph); + +const char * +hexchat_get_info (hexchat_plugin *ph, + const char *id); + +int +hexchat_get_prefs (hexchat_plugin *ph, + const char *name, + const char **string, + int *integer); + +hexchat_list * +hexchat_list_get (hexchat_plugin *ph, + const char *name); + +void +hexchat_list_free (hexchat_plugin *ph, + hexchat_list *xlist); + +const char * const * +hexchat_list_fields (hexchat_plugin *ph, + const char *name); + +int +hexchat_list_next (hexchat_plugin *ph, + hexchat_list *xlist); + +const char * +hexchat_list_str (hexchat_plugin *ph, + hexchat_list *xlist, + const char *name); + +int +hexchat_list_int (hexchat_plugin *ph, + hexchat_list *xlist, + const char *name); + +time_t +hexchat_list_time (hexchat_plugin *ph, + hexchat_list *xlist, + const char *name); + +void * +hexchat_plugingui_add (hexchat_plugin *ph, + const char *filename, + const char *name, + const char *desc, + const char *version, + char *reserved); + +void +hexchat_plugingui_remove (hexchat_plugin *ph, + void *handle); + +int +hexchat_emit_print (hexchat_plugin *ph, + const char *event_name, ...); + +int +hexchat_emit_print_attrs (hexchat_plugin *ph, hexchat_event_attrs *attrs, + const char *event_name, ...); + +char * +hexchat_gettext (hexchat_plugin *ph, + const char *msgid); + +void +hexchat_send_modes (hexchat_plugin *ph, + const char **targets, + int ntargets, + int modes_per_line, + char sign, + char mode); + +char * +hexchat_strip (hexchat_plugin *ph, + const char *str, + int len, + int flags); + +void +hexchat_free (hexchat_plugin *ph, + void *ptr); + +int +hexchat_pluginpref_set_str (hexchat_plugin *ph, + const char *var, + const char *value); + +int +hexchat_pluginpref_get_str (hexchat_plugin *ph, + const char *var, + char *dest); + +int +hexchat_pluginpref_set_int (hexchat_plugin *ph, + const char *var, + int value); +int +hexchat_pluginpref_get_int (hexchat_plugin *ph, + const char *var); + +int +hexchat_pluginpref_delete (hexchat_plugin *ph, + const char *var); + +int +hexchat_pluginpref_list (hexchat_plugin *ph, + char *dest); + +#if !defined(PLUGIN_C) && (defined(WIN32) || defined(__CYGWIN__)) +#ifndef HEXCHAT_PLUGIN_HANDLE +#define HEXCHAT_PLUGIN_HANDLE (ph) +#endif +#define hexchat_hook_command ((HEXCHAT_PLUGIN_HANDLE)->hexchat_hook_command) +#define hexchat_event_attrs_create ((HEXCHAT_PLUGIN_HANDLE)->hexchat_event_attrs_create) +#define hexchat_event_attrs_free ((HEXCHAT_PLUGIN_HANDLE)->hexchat_event_attrs_free) +#define hexchat_hook_server ((HEXCHAT_PLUGIN_HANDLE)->hexchat_hook_server) +#define hexchat_hook_server_attrs ((HEXCHAT_PLUGIN_HANDLE)->hexchat_hook_server_attrs) +#define hexchat_hook_print ((HEXCHAT_PLUGIN_HANDLE)->hexchat_hook_print) +#define hexchat_hook_print_attrs ((HEXCHAT_PLUGIN_HANDLE)->hexchat_hook_print_attrs) +#define hexchat_hook_timer ((HEXCHAT_PLUGIN_HANDLE)->hexchat_hook_timer) +#define hexchat_hook_fd ((HEXCHAT_PLUGIN_HANDLE)->hexchat_hook_fd) +#define hexchat_unhook ((HEXCHAT_PLUGIN_HANDLE)->hexchat_unhook) +#define hexchat_print ((HEXCHAT_PLUGIN_HANDLE)->hexchat_print) +#define hexchat_printf ((HEXCHAT_PLUGIN_HANDLE)->hexchat_printf) +#define hexchat_command ((HEXCHAT_PLUGIN_HANDLE)->hexchat_command) +#define hexchat_commandf ((HEXCHAT_PLUGIN_HANDLE)->hexchat_commandf) +#define hexchat_nickcmp ((HEXCHAT_PLUGIN_HANDLE)->hexchat_nickcmp) +#define hexchat_set_context ((HEXCHAT_PLUGIN_HANDLE)->hexchat_set_context) +#define hexchat_find_context ((HEXCHAT_PLUGIN_HANDLE)->hexchat_find_context) +#define hexchat_get_context ((HEXCHAT_PLUGIN_HANDLE)->hexchat_get_context) +#define hexchat_get_info ((HEXCHAT_PLUGIN_HANDLE)->hexchat_get_info) +#define hexchat_get_prefs ((HEXCHAT_PLUGIN_HANDLE)->hexchat_get_prefs) +#define hexchat_list_get ((HEXCHAT_PLUGIN_HANDLE)->hexchat_list_get) +#define hexchat_list_free ((HEXCHAT_PLUGIN_HANDLE)->hexchat_list_free) +#define hexchat_list_fields ((HEXCHAT_PLUGIN_HANDLE)->hexchat_list_fields) +#define hexchat_list_next ((HEXCHAT_PLUGIN_HANDLE)->hexchat_list_next) +#define hexchat_list_str ((HEXCHAT_PLUGIN_HANDLE)->hexchat_list_str) +#define hexchat_list_int ((HEXCHAT_PLUGIN_HANDLE)->hexchat_list_int) +#define hexchat_plugingui_add ((HEXCHAT_PLUGIN_HANDLE)->hexchat_plugingui_add) +#define hexchat_plugingui_remove ((HEXCHAT_PLUGIN_HANDLE)->hexchat_plugingui_remove) +#define hexchat_emit_print ((HEXCHAT_PLUGIN_HANDLE)->hexchat_emit_print) +#define hexchat_emit_print_attrs ((HEXCHAT_PLUGIN_HANDLE)->hexchat_emit_print_attrs) +#define hexchat_list_time ((HEXCHAT_PLUGIN_HANDLE)->hexchat_list_time) +#define hexchat_gettext ((HEXCHAT_PLUGIN_HANDLE)->hexchat_gettext) +#define hexchat_send_modes ((HEXCHAT_PLUGIN_HANDLE)->hexchat_send_modes) +#define hexchat_strip ((HEXCHAT_PLUGIN_HANDLE)->hexchat_strip) +#define hexchat_free ((HEXCHAT_PLUGIN_HANDLE)->hexchat_free) +#define hexchat_pluginpref_set_str ((HEXCHAT_PLUGIN_HANDLE)->hexchat_pluginpref_set_str) +#define hexchat_pluginpref_get_str ((HEXCHAT_PLUGIN_HANDLE)->hexchat_pluginpref_get_str) +#define hexchat_pluginpref_set_int ((HEXCHAT_PLUGIN_HANDLE)->hexchat_pluginpref_set_int) +#define hexchat_pluginpref_get_int ((HEXCHAT_PLUGIN_HANDLE)->hexchat_pluginpref_get_int) +#define hexchat_pluginpref_delete ((HEXCHAT_PLUGIN_HANDLE)->hexchat_pluginpref_delete) +#define hexchat_pluginpref_list ((HEXCHAT_PLUGIN_HANDLE)->hexchat_pluginpref_list) +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/hexchat/src/common/hexchat.c b/hexchat/src/common/hexchat.c new file mode 100644 index 0000000..3ba7ed6 --- /dev/null +++ b/hexchat/src/common/hexchat.c @@ -0,0 +1,1144 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <time.h> +#include <sys/types.h> +#include <sys/stat.h> + +#define WANTSOCKET +#include "inet.h" + +#ifdef WIN32 +#include <windows.h> +#else +#include <sys/wait.h> +#include <signal.h> +#include <unistd.h> +#endif + +#include "hexchat.h" +#include "fe.h" +#include "util.h" +#include "cfgfiles.h" +#include "chanopt.h" +#include "ignore.h" +#include "hexchat-plugin.h" +#include "inbound.h" +#include "plugin.h" +#include "plugin-identd.h" +#include "plugin-timer.h" +#include "notify.h" +#include "server.h" +#include "servlist.h" +#include "outbound.h" +#include "text.h" +#include "url.h" +#include "hexchatc.h" + +#if ! GLIB_CHECK_VERSION (2, 36, 0) +#include <glib-object.h> /* for g_type_init() */ +#endif + +GSList *popup_list = 0; +GSList *button_list = 0; +GSList *dlgbutton_list = 0; +GSList *command_list = 0; +GSList *ctcp_list = 0; +GSList *replace_list = 0; +GSList *sess_list = 0; +GSList *dcc_list = 0; +GSList *ignore_list = 0; +GSList *usermenu_list = 0; +GSList *urlhandler_list = 0; +GSList *tabmenu_list = 0; + +/* + * This array contains 5 double linked lists, one for each priority in the + * "interesting session" queue ("channel" stands for everything but + * SESS_DIALOG): + * + * [0] queries with hilight + * [1] queries + * [2] channels with hilight + * [3] channels with dialogue + * [4] channels with other data + * + * Each time activity happens the corresponding session is put at the + * beginning of one of the lists. The aim is to be able to switch to the + * session with the most important/recent activity. + */ +GList *sess_list_by_lastact[5] = {NULL, NULL, NULL, NULL, NULL}; + + +static int in_hexchat_exit = FALSE; +int hexchat_is_quitting = FALSE; +/* command-line args */ +int arg_dont_autoconnect = FALSE; +int arg_skip_plugins = FALSE; +char *arg_url = NULL; +char **arg_urls = NULL; +char *arg_command = NULL; +gint arg_existing = FALSE; + +#ifdef USE_DBUS +#include "dbus/dbus-client.h" +#include "dbus/dbus-plugin.h" +#endif /* USE_DBUS */ + +struct session *current_tab; +struct session *current_sess = 0; +struct hexchatprefs prefs; + +/* + * Update the priority queue of the "interesting sessions" + * (sess_list_by_lastact). + */ +void +lastact_update(session *sess) +{ + int oldidx = sess->lastact_idx; + int newidx = LACT_NONE; + int dia = (sess->type == SESS_DIALOG); + + if (sess->tab_state & TAB_STATE_NEW_HILIGHT) + newidx = dia? LACT_QUERY_HI: LACT_CHAN_HI; + else if (sess->tab_state & TAB_STATE_NEW_MSG) + newidx = dia? LACT_QUERY: LACT_CHAN; + else if (sess->tab_state & TAB_STATE_NEW_DATA) + newidx = dia? LACT_QUERY: LACT_CHAN_DATA; + + /* If already first at the right position, just return */ + if (oldidx == newidx && + (newidx == LACT_NONE || g_list_index(sess_list_by_lastact[newidx], sess) == 0)) + return; + + /* Remove from the old position */ + if (oldidx != LACT_NONE) + sess_list_by_lastact[oldidx] = g_list_remove(sess_list_by_lastact[oldidx], sess); + + /* Add at the new position */ + sess->lastact_idx = newidx; + if (newidx != LACT_NONE) + sess_list_by_lastact[newidx] = g_list_prepend(sess_list_by_lastact[newidx], sess); + return; +} + +/* + * Extract the first session from the priority queue of sessions with recent + * activity. Return NULL if no such session can be found. + * + * If filter is specified, skip a session if filter(session) returns 0. This + * can be used for UI-specific needs, e.g. in fe-gtk we want to filter out + * detached sessions. + */ +session * +lastact_getfirst(int (*filter) (session *sess)) +{ + int i; + session *sess = NULL; + GList *curitem; + + /* 5 is the number of priority classes LACT_ */ + for (i = 0; i < 5 && !sess; i++) + { + curitem = sess_list_by_lastact[i]; + while (curitem && !sess) + { + sess = g_list_nth_data(curitem, 0); + if (!sess || (filter && !filter(sess))) + { + sess = NULL; + curitem = g_list_next(curitem); + } + } + + if (sess) + { + sess_list_by_lastact[i] = g_list_remove(sess_list_by_lastact[i], sess); + sess->lastact_idx = LACT_NONE; + } + } + + return sess; +} + +int +is_session (session * sess) +{ + return g_slist_find (sess_list, sess) ? 1 : 0; +} + +session * +find_dialog (server *serv, char *nick) +{ + GSList *list = sess_list; + session *sess; + + while (list) + { + sess = list->data; + if (sess->server == serv && sess->type == SESS_DIALOG) + { + if (!serv->p_cmp (nick, sess->channel)) + return (sess); + } + list = list->next; + } + return NULL; +} + +session * +find_channel (server *serv, char *chan) +{ + session *sess; + GSList *list = sess_list; + while (list) + { + sess = list->data; + if ((serv == sess->server) && sess->type == SESS_CHANNEL) + { + if (!serv->p_cmp (chan, sess->channel)) + return sess; + } + list = list->next; + } + return NULL; +} + +static void +lagcheck_update (void) +{ + server *serv; + GSList *list = serv_list; + + if (!prefs.hex_gui_lagometer) + return; + + while (list) + { + serv = list->data; + if (serv->lag_sent) + fe_set_lag (serv, -1); + + list = list->next; + } +} + +void +lag_check (void) +{ + server *serv; + GSList *list = serv_list; + unsigned long tim; + char tbuf[128]; + time_t now = time (0); + time_t lag; + + tim = make_ping_time (); + + while (list) + { + serv = list->data; + if (serv->connected && serv->end_of_motd) + { + lag = now - serv->ping_recv; + if (prefs.hex_net_ping_timeout != 0 && lag > prefs.hex_net_ping_timeout && lag > 0) + { + sprintf (tbuf, "%" G_GINT64_FORMAT, (gint64) lag); + EMIT_SIGNAL (XP_TE_PINGTIMEOUT, serv->server_session, tbuf, NULL, + NULL, NULL, 0); + if (prefs.hex_net_auto_reconnect) + serv->auto_reconnect (serv, FALSE, -1); + } + else + { + g_snprintf (tbuf, sizeof (tbuf), "LAG%lu", tim); + serv->p_ping (serv, "", tbuf); + + if (!serv->lag_sent) + { + serv->lag_sent = tim; + fe_set_lag (serv, -1); + } + } + } + list = list->next; + } +} + +static int +away_check (void) +{ + session *sess; + GSList *list; + int full, sent, loop = 0; + + if (!prefs.hex_away_track) + return 1; + +doover: + /* request an update of AWAY status of 1 channel every 30 seconds */ + full = TRUE; + sent = 0; /* number of WHOs (users) requested */ + list = sess_list; + while (list) + { + sess = list->data; + + if (sess->server->connected && + sess->type == SESS_CHANNEL && + sess->channel[0] && + (sess->total <= prefs.hex_away_size_max || !prefs.hex_away_size_max)) + { + if (!sess->done_away_check) + { + full = FALSE; + + /* if we're under 31 WHOs, send another channels worth */ + if (sent < 31 && !sess->doing_who) + { + sess->done_away_check = TRUE; + sess->doing_who = TRUE; + /* this'll send a WHO #channel */ + sess->server->p_away_status (sess->server, sess->channel); + sent += sess->total; + } + } + } + + list = list->next; + } + + /* done them all, reset done_away_check to FALSE and start over unless we have away-notify */ + if (full) + { + list = sess_list; + while (list) + { + sess = list->data; + if (!sess->server->have_awaynotify) + sess->done_away_check = FALSE; + list = list->next; + } + loop++; + if (loop < 2) + goto doover; + } + + return 1; +} + +/* these are only run if the lagometer is enabled */ +static int +hexchat_lag_check (void) /* this gets called every 30 seconds */ +{ + lag_check (); + return 1; +} + +static int +hexchat_lag_check_update (void) /* this gets called every 0.5 seconds */ +{ + lagcheck_update (); + return 1; +} + +/* call whenever timeout intervals change */ +void +hexchat_reinit_timers (void) +{ + static int lag_check_update_tag = 0; + static int lag_check_tag = 0; + static int away_tag = 0; + + /* notify timeout */ + if (prefs.hex_notify_timeout && notify_tag == 0) + { + notify_tag = fe_timeout_add_seconds (prefs.hex_notify_timeout, + notify_checklist, NULL); + } + else if (!prefs.hex_notify_timeout && notify_tag != 0) + { + fe_timeout_remove (notify_tag); + notify_tag = 0; + } + + /* away status tracking */ + if (prefs.hex_away_track && away_tag == 0) + { + away_tag = fe_timeout_add_seconds (prefs.hex_away_timeout, away_check, NULL); + } + else if (!prefs.hex_away_track && away_tag != 0) + { + fe_timeout_remove (away_tag); + away_tag = 0; + } + + /* lag-o-meter */ + if (prefs.hex_gui_lagometer && lag_check_update_tag == 0) + { + lag_check_update_tag = fe_timeout_add (500, hexchat_lag_check_update, NULL); + } + else if (!prefs.hex_gui_lagometer && lag_check_update_tag != 0) + { + fe_timeout_remove (lag_check_update_tag); + lag_check_update_tag = 0; + } + + /* network timeouts and lag-o-meter */ + if ((prefs.hex_net_ping_timeout != 0 || prefs.hex_gui_lagometer) + && lag_check_tag == 0) + { + lag_check_tag = fe_timeout_add_seconds (30, hexchat_lag_check, NULL); + } + else if ((!prefs.hex_net_ping_timeout && !prefs.hex_gui_lagometer) + && lag_check_tag != 0) + { + fe_timeout_remove (lag_check_tag); + lag_check_tag = 0; + } +} + +/* executed when the first irc window opens */ + +static void +irc_init (session *sess) +{ + static int done_init = FALSE; + char *buf; + + if (done_init) + return; + + done_init = TRUE; + + plugin_add (sess, NULL, NULL, timer_plugin_init, NULL, NULL, FALSE); + plugin_add (sess, NULL, NULL, identd_plugin_init, identd_plugin_deinit, NULL, FALSE); + +#ifdef USE_PLUGIN + if (!arg_skip_plugins) + plugin_auto_load (sess); /* autoload ~/.xchat *.so */ +#endif + +#ifdef USE_DBUS + plugin_add (sess, NULL, NULL, dbus_plugin_init, NULL, NULL, FALSE); +#endif + + hexchat_reinit_timers (); + + if (arg_url != NULL) + { + buf = g_strdup_printf ("server %s", arg_url); + g_free (arg_url); /* from GOption */ + handle_command (sess, buf, FALSE); + g_free (buf); + } + + if (arg_urls != NULL) + { + guint i; + for (i = 0; i < g_strv_length (arg_urls); i++) + { + buf = g_strdup_printf ("%s %s", i==0? "server" : "newserver", arg_urls[i]); + handle_command (sess, buf, FALSE); + g_free (buf); + } + g_strfreev (arg_urls); + } + + if (arg_command != NULL) + { + handle_command (sess, arg_command, FALSE); + g_free (arg_command); + } + + /* load -e <xdir>/startup.txt */ + load_perform_file (sess, "startup.txt"); +} + +static session * +session_new (server *serv, char *from, int type, int focus) +{ + session *sess; + + sess = g_new0 (struct session, 1); + + sess->server = serv; + sess->logfd = -1; + sess->type = type; + + sess->alert_balloon = SET_DEFAULT; + sess->alert_beep = SET_DEFAULT; + sess->alert_taskbar = SET_DEFAULT; + sess->alert_tray = SET_DEFAULT; + + sess->text_hidejoinpart = SET_DEFAULT; + sess->text_logging = SET_DEFAULT; + sess->text_scrollback = SET_DEFAULT; + sess->text_strip = SET_DEFAULT; + + sess->lastact_idx = LACT_NONE; + + if (from != NULL) + { + safe_strcpy(sess->channel, from, CHANLEN); + safe_strcpy(sess->session_name, from, CHANLEN); + } + + sess_list = g_slist_prepend (sess_list, sess); + + fe_new_window (sess, focus); + + return sess; +} + +session * +new_ircwindow (server *serv, char *name, int type, int focus) +{ + session *sess; + + switch (type) + { + case SESS_SERVER: + serv = server_new (); + if (prefs.hex_gui_tab_server) + sess = session_new (serv, name, SESS_SERVER, focus); + else + sess = session_new (serv, name, SESS_CHANNEL, focus); + serv->server_session = sess; + serv->front_session = sess; + break; + case SESS_DIALOG: + sess = session_new (serv, name, type, focus); + break; + default: +/* case SESS_CHANNEL: + case SESS_NOTICES: + case SESS_SNOTICES:*/ + sess = session_new (serv, name, type, focus); + break; + } + + irc_init (sess); + chanopt_load (sess); + scrollback_load (sess); + if (sess->scrollwritten && sess->scrollback_replay_marklast) + sess->scrollback_replay_marklast (sess); + if (type == SESS_DIALOG) + { + struct User *user; + + log_open_or_close (sess); + + user = userlist_find_global (serv, name); + if (user && user->hostname) + set_topic (sess, user->hostname, user->hostname); + } + plugin_emit_dummy_print (sess, "Open Context"); + + return sess; +} + +static void +exec_notify_kill (session * sess) +{ +#ifndef WIN32 + struct nbexec *re; + if (sess->running_exec != NULL) + { + re = sess->running_exec; + sess->running_exec = NULL; + kill (re->childpid, SIGKILL); + waitpid (re->childpid, NULL, WNOHANG); + fe_input_remove (re->iotag); + close (re->myfd); + g_free (re->linebuf); + g_free (re); + } +#endif +} + +static void +send_quit_or_part (session * killsess) +{ + int willquit = TRUE; + GSList *list; + session *sess; + server *killserv = killsess->server; + + /* check if this is the last session using this server */ + list = sess_list; + while (list) + { + sess = (session *) list->data; + if (sess->server == killserv && sess != killsess) + { + willquit = FALSE; + list = 0; + } else + list = list->next; + } + + if (hexchat_is_quitting) + willquit = TRUE; + + if (killserv->connected) + { + if (willquit) + { + if (!killserv->sent_quit) + { + killserv->flush_queue (killserv); + server_sendquit (killsess); + killserv->sent_quit = TRUE; + } + } else + { + if (killsess->type == SESS_CHANNEL && killsess->channel[0] && + !killserv->sent_quit) + { + server_sendpart (killserv, killsess->channel, 0); + } + } + } +} + +void +session_free (session *killsess) +{ + server *killserv = killsess->server; + session *sess; + GSList *list; + int oldidx; + + plugin_emit_dummy_print (killsess, "Close Context"); + + if (current_tab == killsess) + current_tab = NULL; + + if (killserv->server_session == killsess) + killserv->server_session = NULL; + + if (killserv->front_session == killsess) + { + /* front_session is closed, find a valid replacement */ + killserv->front_session = NULL; + list = sess_list; + while (list) + { + sess = (session *) list->data; + if (sess != killsess && sess->server == killserv) + { + killserv->front_session = sess; + if (!killserv->server_session) + killserv->server_session = sess; + break; + } + list = list->next; + } + } + + if (!killserv->server_session) + killserv->server_session = killserv->front_session; + + sess_list = g_slist_remove (sess_list, killsess); + + if (killsess->type == SESS_CHANNEL) + userlist_free (killsess); + + oldidx = killsess->lastact_idx; + if (oldidx != LACT_NONE) + sess_list_by_lastact[oldidx] = g_list_remove(sess_list_by_lastact[oldidx], killsess); + + exec_notify_kill (killsess); + + log_close (killsess); + scrollback_close (killsess); + chanopt_save (killsess); + + send_quit_or_part (killsess); + + history_free (&killsess->history); + g_free (killsess->topic); + g_free (killsess->current_modes); + + fe_session_callback (killsess); + + if (current_sess == killsess) + { + current_sess = NULL; + if (sess_list) + current_sess = sess_list->data; + } + + g_free (killsess); + + if (!sess_list && !in_hexchat_exit) + hexchat_exit (); /* sess_list is empty, quit! */ + + list = sess_list; + while (list) + { + sess = (session *) list->data; + if (sess->server == killserv) + return; /* this server is still being used! */ + list = list->next; + } + + server_free (killserv); +} + +static void +free_sessions (void) +{ + GSList *list = sess_list; + + while (list) + { + fe_close_window (list->data); + list = sess_list; + } +} + + +static char defaultconf_ctcp[] = + "NAME TIME\n" "CMD nctcp %s TIME %t\n\n"\ + "NAME PING\n" "CMD nctcp %s PING %d\n\n"; + +static char defaultconf_replace[] = + "NAME teh\n" "CMD the\n\n"; +/* "NAME r\n" "CMD are\n\n"\ + "NAME u\n" "CMD you\n\n"*/ + +static char defaultconf_commands[] = + "NAME ACTION\n" "CMD me &2\n\n"\ + "NAME AME\n" "CMD allchan me &2\n\n"\ + "NAME ANICK\n" "CMD allserv nick &2\n\n"\ + "NAME AMSG\n" "CMD allchan say &2\n\n"\ + "NAME BANLIST\n" "CMD quote MODE %c +b\n\n"\ + "NAME CHAT\n" "CMD dcc chat %2\n\n"\ + "NAME DIALOG\n" "CMD query %2\n\n"\ + "NAME DMSG\n" "CMD msg =%2 &3\n\n"\ + "NAME EXIT\n" "CMD quit\n\n"\ + "NAME GREP\n" "CMD lastlog -r -- &2\n\n"\ + "NAME IGNALL\n" "CMD ignore %2!*@* ALL\n\n"\ + "NAME J\n" "CMD join &2\n\n"\ + "NAME KILL\n" "CMD quote KILL %2 :&3\n\n"\ + "NAME LEAVE\n" "CMD part &2\n\n"\ + "NAME M\n" "CMD msg &2\n\n"\ + "NAME OMSG\n" "CMD msg @%c &2\n\n"\ + "NAME ONOTICE\n" "CMD notice @%c &2\n\n"\ + "NAME RAW\n" "CMD quote &2\n\n"\ + "NAME SERVHELP\n" "CMD quote HELP\n\n"\ + "NAME SPING\n" "CMD ping\n\n"\ + "NAME SQUERY\n" "CMD quote SQUERY %2 :&3\n\n"\ + "NAME SSLSERVER\n" "CMD server -ssl &2\n\n"\ + "NAME SV\n" "CMD echo HexChat %v %m\n\n"\ + "NAME UMODE\n" "CMD mode %n &2\n\n"\ + "NAME UPTIME\n" "CMD quote STATS u\n\n"\ + "NAME VER\n" "CMD ctcp %2 VERSION\n\n"\ + "NAME VERSION\n" "CMD ctcp %2 VERSION\n\n"\ + "NAME WALLOPS\n" "CMD quote WALLOPS :&2\n\n"\ + "NAME WI\n" "CMD quote WHOIS %2\n\n"\ + "NAME WII\n" "CMD quote WHOIS %2 %2\n\n"; + +static char defaultconf_urlhandlers[] = + "NAME Open Link in a new Firefox Window\n" "CMD !firefox -new-window %s\n\n"; + +#ifdef USE_SIGACTION +/* Close and open log files on SIGUSR1. Usefull for log rotating */ + +static void +sigusr1_handler (int signal, siginfo_t *si, void *un) +{ + GSList *list = sess_list; + session *sess; + + while (list) + { + sess = list->data; + log_open_or_close (sess); + list = list->next; + } +} + +/* Execute /SIGUSR2 when SIGUSR2 received */ + +static void +sigusr2_handler (int signal, siginfo_t *si, void *un) +{ + session *sess = current_sess; + + if (sess) + handle_command (sess, "SIGUSR2", FALSE); +} +#endif + +static gint +xchat_auto_connect (gpointer userdata) +{ + servlist_auto_connect (NULL); + return 0; +} + +static void +xchat_init (void) +{ + char buf[3068]; + +#ifdef WIN32 + WSADATA wsadata; + + if (WSAStartup(0x0202, &wsadata) != 0) + { + MessageBox (NULL, "Cannot find winsock 2.2+", "Error", MB_OK); + exit (0); + } +#endif /* !WIN32 */ + +#ifdef USE_SIGACTION + struct sigaction act; + + /* ignore SIGPIPE's */ + act.sa_handler = SIG_IGN; + act.sa_flags = 0; + sigemptyset (&act.sa_mask); + sigaction (SIGPIPE, &act, NULL); + + /* Deal with SIGUSR1's & SIGUSR2's */ + act.sa_sigaction = sigusr1_handler; + act.sa_flags = 0; + sigemptyset (&act.sa_mask); + sigaction (SIGUSR1, &act, NULL); + + act.sa_sigaction = sigusr2_handler; + act.sa_flags = 0; + sigemptyset (&act.sa_mask); + sigaction (SIGUSR2, &act, NULL); +#else +#ifndef WIN32 + /* good enough for these old systems */ + signal (SIGPIPE, SIG_IGN); +#endif +#endif + + load_text_events (); + sound_load (); + notify_load (); + ignore_load (); + + g_snprintf (buf, sizeof (buf), + "NAME %s~%s~\n" "CMD query %%s\n\n"\ + "NAME %s~%s~\n" "CMD send %%s\n\n"\ + "NAME %s~%s~\n" "CMD whois %%s %%s\n\n"\ + "NAME %s~%s~\n" "CMD notify -n ASK %%s\n\n"\ + "NAME %s~%s~\n" "CMD ignore %%s!*@* ALL\n\n"\ + + "NAME SUB\n" "CMD %s\n\n"\ + "NAME %s\n" "CMD op %%a\n\n"\ + "NAME %s\n" "CMD deop %%a\n\n"\ + "NAME SEP\n" "CMD \n\n"\ + "NAME %s\n" "CMD voice %%a\n\n"\ + "NAME %s\n" "CMD devoice %%a\n"\ + "NAME SEP\n" "CMD \n\n"\ + "NAME SUB\n" "CMD %s\n\n"\ + "NAME %s\n" "CMD kick %%s\n\n"\ + "NAME %s\n" "CMD ban %%s\n\n"\ + "NAME SEP\n" "CMD \n\n"\ + "NAME %s *!*@*.host\n""CMD ban %%s 0\n\n"\ + "NAME %s *!*@domain\n""CMD ban %%s 1\n\n"\ + "NAME %s *!*user@*.host\n""CMD ban %%s 2\n\n"\ + "NAME %s *!*user@domain\n""CMD ban %%s 3\n\n"\ + "NAME SEP\n" "CMD \n\n"\ + "NAME %s *!*@*.host\n""CMD kickban %%s 0\n\n"\ + "NAME %s *!*@domain\n""CMD kickban %%s 1\n\n"\ + "NAME %s *!*user@*.host\n""CMD kickban %%s 2\n\n"\ + "NAME %s *!*user@domain\n""CMD kickban %%s 3\n\n"\ + "NAME ENDSUB\n" "CMD \n\n"\ + "NAME ENDSUB\n" "CMD \n\n", + + _("_Open Dialog Window"), "gtk-go-up", + _("_Send a File" ELLIPSIS), "gtk-floppy", + _("_User Info (WhoIs)"), "gtk-info", + _("_Add to Friends List" ELLIPSIS), "gtk-add", + _("_Ignore"), "gtk-stop", + _("O_perator Actions"), + + _("Give Ops"), + _("Take Ops"), + _("Give Voice"), + _("Take Voice"), + + _("Kick/Ban"), + _("Kick"), + _("Ban"), + _("Ban"), + _("Ban"), + _("Ban"), + _("Ban"), + _("KickBan"), + _("KickBan"), + _("KickBan"), + _("KickBan")); + + list_loadconf ("popup.conf", &popup_list, buf); + + g_snprintf (buf, sizeof (buf), + "NAME %s\n" "CMD part\n\n" + "NAME %s\n" "CMD getstr # join \"%s\"\n\n" + "NAME %s\n" "CMD quote LINKS\n\n" + "NAME %s\n" "CMD ping\n\n" + "NAME TOGGLE %s\n" "CMD irc_hide_version\n\n", + _("Leave Channel"), + _("Join Channel..."), + _("Enter Channel to Join:"), + _("Server Links"), + _("Ping Server"), + _("Hide Version")); + list_loadconf ("usermenu.conf", &usermenu_list, buf); + + g_snprintf (buf, sizeof (buf), + "NAME %s\n" "CMD op %%a\n\n" + "NAME %s\n" "CMD deop %%a\n\n" + "NAME %s\n" "CMD ban %%s\n\n" + "NAME %s\n" "CMD getstr \"%s\" \"kick %%s\" \"%s\"\n\n" + "NAME %s\n" "CMD send %%s\n\n" + "NAME %s\n" "CMD query %%s\n\n", + _("Op"), + _("DeOp"), + _("Ban"), + _("Kick"), + _("bye"), + _("Enter reason to kick %s:"), + _("Send File"), + _("Dialog")); + list_loadconf ("buttons.conf", &button_list, buf); + + g_snprintf (buf, sizeof (buf), + "NAME %s\n" "CMD whois %%s %%s\n\n" + "NAME %s\n" "CMD send %%s\n\n" + "NAME %s\n" "CMD dcc chat %%s\n\n" + "NAME %s\n" "CMD clear\n\n" + "NAME %s\n" "CMD ping %%s\n\n", + _("WhoIs"), + _("Send"), + _("Chat"), + _("Clear"), + _("Ping")); + list_loadconf ("dlgbuttons.conf", &dlgbutton_list, buf); + + list_loadconf ("tabmenu.conf", &tabmenu_list, NULL); + list_loadconf ("ctcpreply.conf", &ctcp_list, defaultconf_ctcp); + list_loadconf ("commands.conf", &command_list, defaultconf_commands); + list_loadconf ("replace.conf", &replace_list, defaultconf_replace); + list_loadconf ("urlhandlers.conf", &urlhandler_list, + defaultconf_urlhandlers); + + servlist_init (); /* load server list */ + + /* if we got a URL, don't open the server list GUI */ + if (!prefs.hex_gui_slist_skip && !arg_url && !arg_urls) + fe_serverlist_open (NULL); + + /* turned OFF via -a arg or by passing urls */ + if (!arg_dont_autoconnect && !arg_urls && !arg_url) + { + /* do any auto connects */ + if (!servlist_have_auto ()) /* if no new windows open .. */ + { + /* and no serverlist gui ... */ + if (prefs.hex_gui_slist_skip || arg_url || arg_urls) + /* we'll have to open one. */ + new_ircwindow (NULL, NULL, SESS_SERVER, 0); + } else + { + fe_idle_add (xchat_auto_connect, NULL); + } + } else + { + if (prefs.hex_gui_slist_skip || arg_url || arg_urls) + new_ircwindow (NULL, NULL, SESS_SERVER, 0); + } +} + +void +hexchat_exit (void) +{ + hexchat_is_quitting = TRUE; + in_hexchat_exit = TRUE; + plugin_kill_all (); + fe_cleanup (); + + save_config (); + if (prefs.save_pevents) + { + pevent_save (NULL); + } + + sound_save (); + notify_save (); + ignore_save (); + free_sessions (); + chanopt_save_all (TRUE); + servlist_cleanup (); + fe_exit (); +} + +void +hexchat_exec (const char *cmd) +{ + util_exec (cmd); +} + + +static void +set_locale (void) +{ +#ifdef WIN32 + char hexchat_lang[13]; /* LC_ALL= plus 5 chars of hex_gui_lang and trailing \0 */ + + strcpy (hexchat_lang, "LC_ALL="); + + if (0 <= prefs.hex_gui_lang && prefs.hex_gui_lang < LANGUAGES_LENGTH) + strcat (hexchat_lang, languages[prefs.hex_gui_lang]); + else + strcat (hexchat_lang, "en"); + + putenv (hexchat_lang); +#endif +} + +int +main (int argc, char *argv[]) +{ + int i; + int ret; + +#ifdef WIN32 + HRESULT coinit_result; +#endif + + srand ((unsigned int) time (NULL)); /* CL: do this only once! */ + + /* We must check for the config dir parameter, otherwise load_config() will behave incorrectly. + * load_config() must come before fe_args() because fe_args() calls gtk_init() which needs to + * know the language which is set in the config. The code below is copy-pasted from fe_args() + * for the most part. */ + if (argc >= 2) + { + for (i = 1; i < argc; i++) + { + if ((strcmp (argv[i], "-d") == 0 || strcmp (argv[i], "--cfgdir") == 0) + && i + 1 < argc) + { + xdir = g_strdup (argv[i + 1]); + } + else if (strncmp (argv[i], "--cfgdir=", 9) == 0) + { + xdir = g_strdup (argv[i] + 9); + } + + if (xdir != NULL) + { + if (xdir[strlen (xdir) - 1] == G_DIR_SEPARATOR) + { + xdir[strlen (xdir) - 1] = 0; + } + break; + } + } + } + +#if ! GLIB_CHECK_VERSION (2, 36, 0) + g_type_init (); +#endif + + if (check_config_dir () == 0) + { + if (load_config () != 0) + load_default_config (); + } else + { + /* this is probably the first run */ + load_default_config (); + make_config_dirs (); + make_dcc_dirs (); + } + + /* we MUST do this after load_config () AND before fe_init (thus gtk_init) otherwise it will fail */ + set_locale (); + + ret = fe_args (argc, argv); + if (ret != -1) + return ret; + +#ifdef USE_DBUS + hexchat_remote (); +#endif + +#ifdef WIN32 + coinit_result = CoInitializeEx (NULL, COINIT_APARTMENTTHREADED); + if (SUCCEEDED (coinit_result)) + { + CoInitializeSecurity (NULL, -1, NULL, NULL, RPC_C_AUTHN_LEVEL_DEFAULT, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE, NULL); + } +#endif + + fe_init (); + + /* This is done here because cfgfiles.c is too early in + * the startup process to use gtk functions. */ + if (g_access (get_xdir (), W_OK) != 0) + { + char buf[2048]; + + g_snprintf (buf, sizeof(buf), + _("You do not have write access to %s. Nothing from this session can be saved."), + get_xdir ()); + fe_message (buf, FE_MSG_ERROR); + } + +#ifndef WIN32 +#ifndef __EMX__ + /* OS/2 uses UID 0 all the time */ + if (getuid () == 0) + fe_message (_("* Running IRC as root is stupid! You should\n" + " create a User Account and use that to login.\n"), FE_MSG_WARN|FE_MSG_WAIT); +#endif +#endif /* !WIN32 */ + + xchat_init (); + + fe_main (); + +#ifdef WIN32 + if (SUCCEEDED (coinit_result)) + { + CoUninitialize (); + } +#endif + +#ifdef WIN32 + WSACleanup (); +#endif + + return 0; +} diff --git a/hexchat/src/common/hexchat.h b/hexchat/src/common/hexchat.h new file mode 100644 index 0000000..5ead96d --- /dev/null +++ b/hexchat/src/common/hexchat.h @@ -0,0 +1,628 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "config.h" + +#include <glib.h> +#include <glib/gstdio.h> +#include <glib/gi18n.h> +#include <gio/gio.h> + +#include <time.h> /* need time_t */ + +#ifndef HEXCHAT_H +#define HEXCHAT_H + +#ifdef USE_OPENSSL +#ifdef __APPLE__ +#define __AVAILABILITYMACROS__ +#define DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER +#endif +#endif + +#include "history.h" +#include "tree.h" + +#ifdef USE_OPENSSL +#include <openssl/ssl.h> /* SSL_() */ +#include "scram.h" +#endif + +#ifdef __EMX__ /* for o/s 2 */ +#define OFLAGS O_BINARY +#define g_ascii_strcasecmp stricmp +#define g_ascii_strncasecmp strnicmp +#define PATH_MAX MAXPATHLEN +#define FILEPATH_LEN_MAX MAXPATHLEN +#endif + +/* force a 32bit CMP.L */ +#define WORDL(c0, c1, c2, c3) (guint32)(c0 | (c1 << 8) | (c2 << 16) | (c3 << 24)) + +#ifdef WIN32 /* for win32 */ +#define OFLAGS O_BINARY +#define sleep(t) Sleep(t*1000) +#include <direct.h> +#define F_OK 0 +#define X_OK 1 +#define W_OK 2 +#define R_OK 4 +#ifndef S_ISDIR +#define S_ISDIR(m) ((m) & _S_IFDIR) +#endif +#define NETWORK_PRIVATE +#else /* for unix */ +#define OFLAGS 0 +#endif + +#define FONTNAMELEN 127 +#define PATHLEN 255 +#define DOMAINLEN 100 +#define NICKLEN 64 /* including the NULL, so 63 really */ +#define CHANLEN 300 +#define PDIWORDS 32 +#define USERNAMELEN 10 +#define HIDDEN_CHAR 8 /* invisible character for xtext */ + +struct nbexec +{ + int myfd; + int childpid; + int tochannel; /* making this int keeps the struct 4-byte aligned */ + int iotag; + char *linebuf; + int buffill; + struct session *sess; +}; + +struct hexchatprefs +{ + /* these are the rebranded, consistent, sorted hexchat variables */ + + /* BOOLEANS */ + unsigned int hex_away_auto_unmark; + unsigned int hex_away_omit_alerts; + unsigned int hex_away_show_once; + unsigned int hex_away_track; + unsigned int hex_completion_auto; + unsigned int hex_dcc_auto_chat; + unsigned int hex_dcc_auto_resume; + unsigned int hex_dcc_fast_send; + unsigned int hex_dcc_ip_from_server; + unsigned int hex_dcc_remove; + unsigned int hex_dcc_save_nick; + unsigned int hex_dcc_send_fillspaces; + unsigned int hex_gui_autoopen_chat; + unsigned int hex_gui_autoopen_dialog; + unsigned int hex_gui_autoopen_recv; + unsigned int hex_gui_autoopen_send; + unsigned int hex_gui_compact; + unsigned int hex_gui_filesize_iec; + unsigned int hex_gui_focus_omitalerts; + unsigned int hex_gui_hide_menu; + unsigned int hex_gui_input_attr; + unsigned int hex_gui_input_icon; + unsigned int hex_gui_input_nick; + unsigned int hex_gui_input_spell; + unsigned int hex_gui_input_style; + unsigned int hex_gui_join_dialog; + unsigned int hex_gui_mode_buttons; + unsigned int hex_gui_quit_dialog; + /* unsigned int hex_gui_single; */ + unsigned int hex_gui_slist_fav; + unsigned int hex_gui_slist_skip; + unsigned int hex_gui_tab_chans; + unsigned int hex_gui_tab_dialogs; + unsigned int hex_gui_tab_dots; + unsigned int hex_gui_tab_icons; + unsigned int hex_gui_tab_scrollchans; + unsigned int hex_gui_tab_server; + unsigned int hex_gui_tab_sort; + unsigned int hex_gui_tab_utils; + unsigned int hex_gui_topicbar; + unsigned int hex_gui_tray; + unsigned int hex_gui_tray_away; + unsigned int hex_gui_tray_blink; + unsigned int hex_gui_tray_close; + unsigned int hex_gui_tray_minimize; + unsigned int hex_gui_tray_quiet; + unsigned int hex_gui_ulist_buttons; + unsigned int hex_gui_ulist_color; + unsigned int hex_gui_ulist_count; + unsigned int hex_gui_ulist_hide; + unsigned int hex_gui_ulist_icons; + unsigned int hex_gui_ulist_show_hosts; + unsigned int hex_gui_ulist_style; + unsigned int hex_gui_usermenu; + unsigned int hex_gui_win_modes; + unsigned int hex_gui_win_nick; + unsigned int hex_gui_win_save; + unsigned int hex_gui_win_swap; + unsigned int hex_gui_win_ucount; + unsigned int hex_identd_server; + unsigned int hex_input_balloon_chans; + unsigned int hex_input_balloon_hilight; + unsigned int hex_input_balloon_priv; + unsigned int hex_input_beep_chans; + unsigned int hex_input_beep_hilight; + unsigned int hex_input_beep_priv; + unsigned int hex_input_filter_beep; + unsigned int hex_input_flash_chans; + unsigned int hex_input_flash_hilight; + unsigned int hex_input_flash_priv; + unsigned int hex_input_perc_ascii; + unsigned int hex_input_perc_color; + unsigned int hex_input_tray_chans; + unsigned int hex_input_tray_hilight; + unsigned int hex_input_tray_priv; + unsigned int hex_irc_auto_rejoin; + unsigned int hex_irc_reconnect_rejoin; + unsigned int hex_irc_conf_mode; + unsigned int hex_irc_hidehost; + unsigned int hex_irc_hide_nickchange; + unsigned int hex_irc_hide_version; + unsigned int hex_irc_invisible; + unsigned int hex_irc_logging; + unsigned int hex_irc_raw_modes; + unsigned int hex_irc_servernotice; + unsigned int hex_irc_skip_motd; + unsigned int hex_irc_wallops; + unsigned int hex_irc_who_join; + unsigned int hex_irc_whois_front; + unsigned int hex_irc_cap_server_time; + unsigned int hex_net_auto_reconnect; + unsigned int hex_net_auto_reconnectonfail; + unsigned int hex_net_proxy_auth; + unsigned int hex_net_throttle; + unsigned int hex_notify_whois_online; + unsigned int hex_perl_warnings; + unsigned int hex_stamp_log; + unsigned int hex_stamp_text; + unsigned int hex_text_autocopy_color; + unsigned int hex_text_autocopy_stamp; + unsigned int hex_text_autocopy_text; + unsigned int hex_text_color_nicks; + unsigned int hex_text_indent; + unsigned int hex_text_replay; + unsigned int hex_text_search_case_match; + unsigned int hex_text_search_highlight_all; + unsigned int hex_text_search_follow; + unsigned int hex_text_search_regexp; + unsigned int hex_text_show_marker; + unsigned int hex_text_show_sep; + unsigned int hex_text_stripcolor_msg; + unsigned int hex_text_stripcolor_replay; + unsigned int hex_text_stripcolor_topic; + unsigned int hex_text_thin_sep; + unsigned int hex_text_transparent; + unsigned int hex_text_wordwrap; + unsigned int hex_url_grabber; + unsigned int hex_url_logging; + + /* NUMBERS */ + int hex_away_size_max; + int hex_away_timeout; + int hex_completion_amount; + int hex_completion_sort; + int hex_dcc_auto_recv; + int hex_dcc_blocksize; + int hex_dcc_global_max_get_cps; + int hex_dcc_global_max_send_cps; + int hex_dcc_max_get_cps; + int hex_dcc_max_send_cps; + int hex_dcc_permissions; + int hex_dcc_port_first; + int hex_dcc_port_last; + int hex_dcc_stall_timeout; + int hex_dcc_timeout; + int hex_flood_ctcp_num; /* flood */ + int hex_flood_ctcp_time; /* seconds of floods */ + int hex_flood_msg_num; /* same deal */ + int hex_flood_msg_time; + int hex_gui_chanlist_maxusers; + int hex_gui_chanlist_minusers; + int hex_gui_dialog_height; + int hex_gui_dialog_left; + int hex_gui_dialog_top; + int hex_gui_dialog_width; + int hex_gui_lagometer; + int hex_gui_lang; + int hex_gui_pane_divider_position; + int hex_gui_pane_left_size; + int hex_gui_pane_right_size; + int hex_gui_pane_right_size_min; + int hex_gui_search_pos; + int hex_gui_slist_select; + int hex_gui_tab_layout; + int hex_gui_tab_middleclose; + int hex_gui_tab_newtofront; + int hex_gui_tab_pos; + int hex_gui_tab_small; + int hex_gui_tab_trunc; + int hex_gui_transparency; + int hex_gui_throttlemeter; + int hex_gui_ulist_pos; + int hex_gui_ulist_sort; + int hex_gui_url_mod; + int hex_gui_win_height; + int hex_gui_win_fullscreen; + int hex_gui_win_left; + int hex_gui_win_state; + int hex_gui_win_top; + int hex_gui_win_width; + int hex_identd_port; + int hex_irc_ban_type; + int hex_irc_join_delay; + int hex_irc_notice_pos; + int hex_net_ping_timeout; + int hex_net_proxy_port; + int hex_net_proxy_type; /* 0=disabled, 1=wingate 2=socks4, 3=socks5, 4=http */ + int hex_net_proxy_use; /* 0=all 1=IRC_ONLY 2=DCC_ONLY */ + int hex_net_reconnect_delay; + int hex_notify_timeout; + int hex_text_max_indent; + int hex_text_max_lines; + int hex_url_grabber_limit; + + /* STRINGS */ + char hex_away_reason[256]; + char hex_completion_suffix[4]; /* Only ever holds a one-character string. */ + char hex_dcc_completed_dir[PATHLEN + 1]; + char hex_dcc_dir[PATHLEN + 1]; + char hex_dcc_ip[DOMAINLEN + 1]; + char hex_gui_ulist_doubleclick[256]; + char hex_input_command_char[4]; + char hex_irc_extra_hilight[300]; + char hex_irc_id_ntext[64]; + char hex_irc_id_ytext[64]; + char hex_irc_logmask[256]; + char hex_irc_nick1[NICKLEN]; + char hex_irc_nick2[NICKLEN]; + char hex_irc_nick3[NICKLEN]; + char hex_irc_nick_hilight[300]; + char hex_irc_no_hilight[300]; + char hex_irc_part_reason[256]; + char hex_irc_quit_reason[256]; + char hex_irc_real_name[127]; + char hex_irc_user_name[127]; + char hex_net_bind_host[127]; + char hex_net_proxy_host[64]; + char hex_net_proxy_pass[256]; + char hex_net_proxy_user[256]; + char hex_stamp_log_format[64]; + char hex_stamp_text_format[64]; + char hex_text_background[PATHLEN + 1]; + char hex_text_font[4 * FONTNAMELEN + 1]; + char hex_text_font_main[FONTNAMELEN + 1]; + char hex_text_font_alternative[3 * FONTNAMELEN + 1]; + char hex_text_spell_langs[64]; + + /* these are the private variables */ + guint32 local_ip; + + unsigned int wait_on_exit; /* wait for logs to be flushed to disk IF we're connected */ + + /* Tells us if we need to save, only when they've been edited. + This is so that we continue using internal defaults (which can + change in the next release) until the user edits them. */ + unsigned int save_pevents:1; +}; + +/* Session types */ +#define SESS_SERVER 1 +#define SESS_CHANNEL 2 +#define SESS_DIALOG 3 +#define SESS_NOTICES 4 +#define SESS_SNOTICES 5 + +/* Per-Channel Settings */ +#define SET_OFF 0 +#define SET_ON 1 +#define SET_DEFAULT 2 /* use global setting */ + +/* Priorities in the "interesting sessions" priority queue + * (see xchat.c:sess_list_by_lastact) */ +#define LACT_NONE -1 /* no queues */ +#define LACT_QUERY_HI 0 /* query with hilight */ +#define LACT_QUERY 1 /* query with messages */ +#define LACT_CHAN_HI 2 /* channel with hilight */ +#define LACT_CHAN 3 /* channel with messages */ +#define LACT_CHAN_DATA 4 /* channel with other data */ + +/* Moved from fe-gtk for use in outbound.c as well -- */ +typedef enum gtk_xtext_search_flags_e { + case_match = 1, + backward = 2, + highlight = 4, + follow = 8, + regexp = 16 +} gtk_xtext_search_flags; + +typedef enum { + TAB_STATE_NONE = 0, + TAB_STATE_NEW_DATA = (1 << 0), + TAB_STATE_NEW_MSG = (1 << 1), + TAB_STATE_NEW_HILIGHT = (1 << 2), +} tab_state_flags; + +typedef struct session +{ + /* Per-Channel Alerts */ + /* use a byte, because we need a pointer to each element */ + guint8 alert_balloon; + guint8 alert_beep; + guint8 alert_taskbar; + guint8 alert_tray; + + /* Per-Channel Settings */ + guint8 text_hidejoinpart; + guint8 text_logging; + guint8 text_scrollback; + guint8 text_strip; + + struct server *server; + tree *usertree; /* alphabetical tree */ + struct User *me; /* points to myself in the usertree */ + char channel[CHANLEN]; + char waitchannel[CHANLEN]; /* waiting to join channel (/join sent) */ + char willjoinchannel[CHANLEN]; /* will issue /join for this channel */ + char session_name[CHANLEN]; /* the name of the session, should not modified */ + char channelkey[64]; /* XXX correct max length? */ + int limit; /* channel user limit */ + int logfd; + + GFile *scrollfile; /* scrollback file */ + int scrollwritten; /* number of lines written */ + + char lastnick[NICKLEN]; /* last nick you /msg'ed */ + + struct history history; + + int ops; /* num. of ops in channel */ + int hops; /* num. of half-oped users */ + int voices; /* num. of voiced people */ + int total; /* num. of users in channel */ + + char *quitreason; + char *topic; + char *current_modes; /* free() me */ + + int mode_timeout_tag; + + struct session *lastlog_sess; + struct nbexec *running_exec; + + struct session_gui *gui; /* initialized by fe_new_window */ + struct restore_gui *res; + + int type; /* SESS_* */ + + int lastact_idx; /* the sess_list_by_lastact[] index of the list we're in. + * For valid values, see defines of LACT_*. */ + + int ignore_date:1; + int ignore_mode:1; + int ignore_names:1; + int end_of_names:1; + int doing_who:1; /* /who sent on this channel */ + int done_away_check:1; /* done checking for away status changes */ + tab_state_flags tab_state; + tab_state_flags last_tab_state; /* before event is handled */ + gtk_xtext_search_flags lastlog_flags; + void (*scrollback_replay_marklast) (struct session *sess); +} session; + +/* SASL Mechanisms */ +#define MECH_PLAIN 0 +#define MECH_EXTERNAL 1 +#define MECH_SCRAM_SHA_1 2 +#define MECH_SCRAM_SHA_256 3 +#define MECH_SCRAM_SHA_512 4 + +typedef struct server +{ + /* server control operations (in server*.c) */ + void (*connect)(struct server *, char *hostname, int port, int no_login); + void (*disconnect)(struct session *, int sendquit, int err); + int (*cleanup)(struct server *); + void (*flush_queue)(struct server *); + void (*auto_reconnect)(struct server *, int send_quit, int err); + /* irc protocol functions (in proto*.c) */ + void (*p_inline)(struct server *, char *buf, int len); + void (*p_invite)(struct server *, char *channel, char *nick); + void (*p_cycle)(struct server *, char *channel, char *key); + void (*p_ctcp)(struct server *, char *to, char *msg); + void (*p_nctcp)(struct server *, char *to, char *msg); + void (*p_quit)(struct server *, char *reason); + void (*p_kick)(struct server *, char *channel, char *nick, char *reason); + void (*p_part)(struct server *, char *channel, char *reason); + void (*p_ns_identify)(struct server *, char *pass); + void (*p_ns_ghost)(struct server *, char *usname, char *pass); + void (*p_join)(struct server *, char *channel, char *key); + void (*p_join_list)(struct server *, GSList *favorites); + void (*p_login)(struct server *, char *user, char *realname); + void (*p_join_info)(struct server *, char *channel); + void (*p_mode)(struct server *, char *target, char *mode); + void (*p_user_list)(struct server *, char *channel); + void (*p_away_status)(struct server *, char *channel); + void (*p_whois)(struct server *, char *nicks); + void (*p_get_ip)(struct server *, char *nick); + void (*p_get_ip_uh)(struct server *, char *nick); + void (*p_set_back)(struct server *); + void (*p_set_away)(struct server *, char *reason); + void (*p_message)(struct server *, char *channel, char *text); + void (*p_action)(struct server *, char *channel, char *act); + void (*p_notice)(struct server *, char *channel, char *text); + void (*p_topic)(struct server *, char *channel, char *topic); + void (*p_list_channels)(struct server *, char *arg, int min_users); + void (*p_change_nick)(struct server *, char *new_nick); + void (*p_names)(struct server *, char *channel); + void (*p_ping)(struct server *, char *to, char *timestring); +/* void (*p_set_away)(struct server *);*/ + int (*p_raw)(struct server *, char *raw); + int (*p_cmp)(const char *s1, const char *s2); + + int port; + int sok; /* is equal to sok4 or sok6 (the one we are using) */ + int sok4; /* tcp4 socket */ + int sok6; /* tcp6 socket */ + int proxy_type; + int proxy_sok; /* Additional information for MS Proxy beast */ + int proxy_sok4; + int proxy_sok6; + int id; /* unique ID number (for plugin API) */ + + /* dcc_ip moved from hexchatprefs to make it per-server */ + guint32 dcc_ip; + +#ifdef USE_OPENSSL + SSL_CTX *ctx; + SSL *ssl; + int ssl_do_connect_tag; +#else + void *ssl; +#endif + int childread; + int childwrite; + int childpid; + int iotag; + int recondelay_tag; /* reconnect delay timeout */ + int joindelay_tag; /* waiting before we send JOIN */ + char hostname[128]; /* real ip number */ + char servername[128]; /* what the server says is its name */ + char password[1024]; + char nick[NICKLEN]; + char linebuf[8704]; /* RFC says 512 chars including \r\n, IRCv3 message tags add 8191, plus the NUL byte */ + char *last_away_reason; + int pos; /* current position in linebuf */ + int nickcount; + int loginmethod; /* see login_types[] */ + + char *chantypes; /* for 005 numeric - free me */ + char *chanmodes; /* for 005 numeric - free me */ + char *nick_prefixes; /* e.g. "*@%+" */ + char *nick_modes; /* e.g. "aohv" */ + char *bad_nick_prefixes; /* for ircd that doesn't give the modes */ + int modes_per_line; /* 6 on undernet, 4 on efnet etc... */ + + void *network; /* points to entry in servlist.c or NULL! */ + + GSList *outbound_queue; + time_t next_send; /* cptr->since in ircu */ + time_t prev_now; /* previous now-time */ + int sendq_len; /* queue size */ + int lag; /* milliseconds */ + + struct session *front_session; /* front-most window/tab */ + struct session *server_session; /* server window/tab */ + + struct server_gui *gui; /* initialized by fe_new_server */ + + unsigned int ctcp_counter; /*flood */ + time_t ctcp_last_time; + + unsigned int msg_counter; /*counts the msg tab opened in a certain time */ + time_t msg_last_time; + + /*time_t connect_time;*/ /* when did it connect? */ + unsigned long lag_sent; /* we are still waiting for this ping response*/ + time_t ping_recv; /* when we last got a ping reply */ + time_t away_time; /* when we were marked away */ + + char *encoding; + GIConv read_converter; /* iconv converter for converting from server encoding to UTF-8. */ + GIConv write_converter; /* iconv converter for converting from UTF-8 to server encoding. */ + + GSList *favlist; /* list of channels & keys to join */ + + unsigned int motd_skipped:1; + unsigned int connected:1; + unsigned int connecting:1; + unsigned int no_login:1; + unsigned int skip_next_userhost:1;/* used for "get my ip from server" */ + unsigned int skip_next_whois:1; /* hide whois output */ + unsigned int inside_whois:1; + unsigned int doing_dns:1; /* /dns has been done */ + unsigned int end_of_motd:1; /* end of motd reached (logged in) */ + unsigned int sent_quit:1; /* sent a QUIT already? */ + unsigned int use_listargs:1; /* undernet and dalnet need /list >0,<10000 */ + unsigned int is_away:1; + unsigned int reconnect_away:1; /* whether to reconnect in is_away state */ + unsigned int dont_use_proxy:1; /* to proxy or not to proxy */ + unsigned int supports_watch:1; /* supports the WATCH command */ + unsigned int supports_monitor:1; /* supports the MONITOR command */ + unsigned int bad_prefix:1; /* gave us a bad PREFIX= 005 number */ + unsigned int have_namesx:1; /* 005 tokens NAMESX and UHNAMES */ + unsigned int have_awaynotify:1; + unsigned int have_uhnames:1; + unsigned int have_whox:1; /* have undernet's WHOX features */ + unsigned int have_idmsg:1; /* cap solanum.chat/identify-msg */ + unsigned int have_accnotify:1; /* cap account-notify */ + unsigned int have_extjoin:1; /* cap extended-join */ + unsigned int have_account_tag:1; /* cap account-tag */ + unsigned int have_server_time:1; /* cap server-time */ + unsigned int have_sasl:1; /* SASL capability */ + unsigned int have_except:1; /* ban exemptions +e */ + unsigned int have_invite:1; /* invite exemptions +I */ + unsigned int have_cert:1; /* have loaded a cert */ + unsigned int use_who:1; /* whether to use WHO command to get dcc_ip */ + unsigned int sasl_mech; /* mechanism for sasl auth */ + unsigned int sent_capend:1; /* have sent CAP END yet */ + unsigned int waiting_on_cap:1; /* waiting on another line of CAP LS */ + unsigned int waiting_on_sasl:1; /* waiting on sasl */ +#ifdef USE_OPENSSL + unsigned int use_ssl:1; /* is server SSL capable? */ + unsigned int accept_invalid_cert:1;/* ignore result of server's cert. verify */ + scram_session *scram_session; /* session for SASL SCRAM authentication */ +#endif +} server; + +typedef int (*cmd_callback) (struct session * sess, char *tbuf, char *word[], + char *word_eol[]); + +struct commands +{ + char *name; + cmd_callback callback; + char needserver; + char needchannel; + gint16 handle_quotes; + char *help; +}; + +struct away_msg +{ + struct server *server; + char nick[NICKLEN]; + char *message; +}; + +/* not just for popups, but used for usercommands, ctcp replies, + userlist buttons etc */ + +struct popup +{ + char *cmd; + char *name; +}; + +/* CL: get a random int in the range [0..n-1]. DON'T use rand() % n, it gives terrible results. */ +#define RAND_INT(n) ((int)(rand() / (RAND_MAX + 1.0) * (n))) + +#endif diff --git a/hexchat/src/common/hexchatc.h b/hexchat/src/common/hexchatc.h new file mode 100644 index 0000000..ae1c540 --- /dev/null +++ b/hexchat/src/common/hexchatc.h @@ -0,0 +1,62 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_C_H +#define HEXCHAT_C_H + +extern struct hexchatprefs prefs; + +extern int hexchat_is_quitting; +extern gint arg_skip_plugins; /* command-line args */ +extern gint arg_dont_autoconnect; +extern char *arg_url; +extern char **arg_urls; +extern char *arg_command; +extern gint arg_existing; + +extern session *current_sess; +extern session *current_tab; + +extern GSList *popup_list; +extern GSList *button_list; +extern GSList *dlgbutton_list; +extern GSList *command_list; +extern GSList *ctcp_list; +extern GSList *replace_list; +extern GSList *sess_list; +extern GSList *dcc_list; +extern GSList *ignore_list; +extern GSList *usermenu_list; +extern GSList *urlhandler_list; +extern GSList *tabmenu_list; +extern GList *sess_list_by_lastact[]; + +session * find_channel (server *serv, char *chan); +session * find_dialog (server *serv, char *nick); +session * new_ircwindow (server *serv, char *name, int type, int focus); +void hexchat_reinit_timers (void); +void lastact_update (session * sess); +session * lastact_getfirst (int (*filter) (session *sess)); +int is_session (session * sess); +void session_free (session *killsess); +void lag_check (void); +void hexchat_exit (void); +void hexchat_exec (const char *cmd); + +#endif diff --git a/hexchat/src/common/history.c b/hexchat/src/common/history.c new file mode 100644 index 0000000..23a8463 --- /dev/null +++ b/hexchat/src/common/history.c @@ -0,0 +1,121 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <string.h> +#include <stdlib.h> +#include <glib.h> +#include "history.h" + +void +history_add (struct history *his, char *text) +{ + g_free (his->lines[his->realpos]); + his->lines[his->realpos] = g_strdup (text); + his->realpos++; + if (his->realpos == HISTORY_SIZE) + his->realpos = 0; + his->pos = his->realpos; +} + +void +history_free (struct history *his) +{ + int i; + for (i = 0; i < HISTORY_SIZE; i++) + { + if (his->lines[i]) + { + g_free (his->lines[i]); + his->lines[i] = 0; + } + } +} + +char * +history_down (struct history *his) +{ + int next; + + if (his->pos == his->realpos) /* allow down only after up */ + return NULL; + if (his->realpos == 0) + { + if (his->pos == HISTORY_SIZE - 1) + { + his->pos = 0; + return ""; + } + } else + { + if (his->pos == his->realpos - 1) + { + his->pos++; + return ""; + } + } + + next = 0; + if (his->pos < HISTORY_SIZE - 1) + next = his->pos + 1; + + if (his->lines[next]) + { + his->pos = next; + return his->lines[his->pos]; + } + + return NULL; +} + +char * +history_up (struct history *his, char *current_text) +{ + int next; + + if (his->realpos == HISTORY_SIZE - 1) + { + if (his->pos == 0) + return NULL; + } else + { + if (his->pos == his->realpos + 1) + return NULL; + } + + next = HISTORY_SIZE - 1; + if (his->pos != 0) + next = his->pos - 1; + + if (his->lines[next]) + { + if + ( + current_text[0] && strcmp(current_text, his->lines[next]) && + (!his->lines[his->pos] || strcmp(current_text, his->lines[his->pos])) && + (!his->lines[his->realpos] || strcmp(current_text, his->lines[his->pos])) + ) + { + history_add (his, current_text); + } + + his->pos = next; + return his->lines[his->pos]; + } + + return NULL; +} diff --git a/hexchat/src/common/history.h b/hexchat/src/common/history.h new file mode 100644 index 0000000..dc79192 --- /dev/null +++ b/hexchat/src/common/history.h @@ -0,0 +1,37 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_HISTORY_H +#define HEXCHAT_HISTORY_H + +#define HISTORY_SIZE 100 + +struct history +{ + char *lines[HISTORY_SIZE]; + int pos; + int realpos; +}; + +void history_add (struct history *his, char *text); +void history_free (struct history *his); +char *history_up (struct history *his, char *current_text); +char *history_down (struct history *his); + +#endif diff --git a/hexchat/src/common/ignore.c b/hexchat/src/common/ignore.c new file mode 100644 index 0000000..8bf0d57 --- /dev/null +++ b/hexchat/src/common/ignore.c @@ -0,0 +1,416 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> + +#ifdef WIN32 +#include <io.h> +#else +#include <unistd.h> +#endif + +#include "hexchat.h" +#include "ignore.h" +#include "cfgfiles.h" +#include "fe.h" +#include "text.h" +#include "util.h" +#include "hexchatc.h" +#include "typedef.h" + + +int ignored_ctcp = 0; /* keep a count of all we ignore */ +int ignored_priv = 0; +int ignored_chan = 0; +int ignored_noti = 0; +int ignored_invi = 0; +static int ignored_total = 0; + +/* ignore_exists (): + * returns: struct ig, if this mask is in the ignore list already + * NULL, otherwise + */ +struct ignore * +ignore_exists (char *mask) +{ + struct ignore *ig = NULL; + GSList *list; + + list = ignore_list; + while (list) + { + ig = (struct ignore *) list->data; + if (!rfc_casecmp (ig->mask, mask)) + return ig; + list = list->next; + } + return NULL; + +} + +/* ignore_add(...) + + * returns: + * 0 fail + * 1 success + * 2 success (old ignore has been changed) + */ + +int +ignore_add (char *mask, int type, gboolean overwrite) +{ + struct ignore *ig = NULL; + int change_only = FALSE; + + /* first check if it's already ignored */ + ig = ignore_exists (mask); + if (ig) + change_only = TRUE; + + if (!change_only) + ig = g_new (struct ignore, 1); + + ig->mask = g_strdup (mask); + + if (!overwrite && change_only) + ig->type |= type; + else + ig->type = type; + + if (!change_only) + ignore_list = g_slist_prepend (ignore_list, ig); + fe_ignore_update (1); + + if (change_only) + return 2; + + return 1; +} + +void +ignore_showlist (session *sess) +{ + struct ignore *ig; + GSList *list = ignore_list; + char tbuf[256]; + int i = 0; + + EMIT_SIGNAL (XP_TE_IGNOREHEADER, sess, 0, 0, 0, 0, 0); + + while (list) + { + ig = list->data; + i++; + + g_snprintf (tbuf, sizeof (tbuf), " %-25s ", ig->mask); + if (ig->type & IG_PRIV) + strcat (tbuf, _("YES ")); + else + strcat (tbuf, _("NO ")); + if (ig->type & IG_NOTI) + strcat (tbuf, _("YES ")); + else + strcat (tbuf, _("NO ")); + if (ig->type & IG_CHAN) + strcat (tbuf, _("YES ")); + else + strcat (tbuf, _("NO ")); + if (ig->type & IG_CTCP) + strcat (tbuf, _("YES ")); + else + strcat (tbuf, _("NO ")); + if (ig->type & IG_DCC) + strcat (tbuf, _("YES ")); + else + strcat (tbuf, _("NO ")); + if (ig->type & IG_INVI) + strcat (tbuf, _("YES ")); + else + strcat (tbuf, _("NO ")); + if (ig->type & IG_UNIG) + strcat (tbuf, _("YES ")); + else + strcat (tbuf, _("NO ")); + strcat (tbuf, "\n"); + PrintText (sess, tbuf); + /*EMIT_SIGNAL (XP_TE_IGNORELIST, sess, ig->mask, 0, 0, 0, 0); */ + /* use this later, when TE's support 7 args */ + list = list->next; + } + + if (!i) + EMIT_SIGNAL (XP_TE_IGNOREEMPTY, sess, 0, 0, 0, 0, 0); + + EMIT_SIGNAL (XP_TE_IGNOREFOOTER, sess, 0, 0, 0, 0, 0); +} + +/* ignore_del() + + * one of the args must be NULL, use mask OR *ig, not both + * + */ + +int +ignore_del (char *mask, struct ignore *ig) +{ + if (!ig) + { + GSList *list = ignore_list; + + while (list) + { + ig = (struct ignore *) list->data; + if (!rfc_casecmp (ig->mask, mask)) + break; + list = list->next; + ig = 0; + } + } + if (ig) + { + ignore_list = g_slist_remove (ignore_list, ig); + g_free (ig->mask); + g_free (ig); + fe_ignore_update (1); + return TRUE; + } + return FALSE; +} + +/* check if a msg should be ignored by browsing our ignore list */ + +int +ignore_check (char *host, int type) +{ + struct ignore *ig; + GSList *list = ignore_list; + + /* check if there's an UNIGNORE first, they take precendance. */ + while (list) + { + ig = (struct ignore *) list->data; + if (ig->type & IG_UNIG) + { + if (ig->type & type) + { + if (match (ig->mask, host)) + return FALSE; + } + } + list = list->next; + } + + list = ignore_list; + while (list) + { + ig = (struct ignore *) list->data; + + if (ig->type & type) + { + if (match (ig->mask, host)) + { + ignored_total++; + if (type & IG_PRIV) + ignored_priv++; + if (type & IG_NOTI) + ignored_noti++; + if (type & IG_CHAN) + ignored_chan++; + if (type & IG_CTCP) + ignored_ctcp++; + if (type & IG_INVI) + ignored_invi++; + fe_ignore_update (2); + return TRUE; + } + } + list = list->next; + } + + return FALSE; +} + +static char * +ignore_read_next_entry (char *my_cfg, struct ignore *ignore) +{ + char tbuf[1024]; + + /* Casting to char * done below just to satisfy compiler */ + + if (my_cfg) + { + my_cfg = cfg_get_str (my_cfg, "mask", tbuf, sizeof (tbuf)); + if (!my_cfg) + return NULL; + ignore->mask = g_strdup (tbuf); + } + if (my_cfg) + { + my_cfg = cfg_get_str (my_cfg, "type", tbuf, sizeof (tbuf)); + ignore->type = atoi (tbuf); + } + return my_cfg; +} + +void +ignore_load () +{ + struct ignore *ignore; + struct stat st; + char *cfg, *my_cfg; + int fh; + + fh = hexchat_open_file ("ignore.conf", O_RDONLY, 0, 0); + if (fh != -1) + { + fstat (fh, &st); + if (st.st_size) + { + cfg = g_malloc0 (st.st_size + 1); + read (fh, cfg, st.st_size); + my_cfg = cfg; + while (my_cfg) + { + ignore = g_new0 (struct ignore, 1); + if ((my_cfg = ignore_read_next_entry (my_cfg, ignore))) + ignore_list = g_slist_prepend (ignore_list, ignore); + else + g_free (ignore); + } + g_free (cfg); + } + close (fh); + } +} + +void +ignore_save () +{ + char buf[1024]; + int fh; + GSList *temp = ignore_list; + struct ignore *ig; + + fh = hexchat_open_file ("ignore.conf", O_TRUNC | O_WRONLY | O_CREAT, 0600, XOF_DOMODE); + if (fh != -1) + { + while (temp) + { + ig = (struct ignore *) temp->data; + if (!(ig->type & IG_NOSAVE)) + { + g_snprintf (buf, sizeof (buf), "mask = %s\ntype = %u\n\n", + ig->mask, ig->type); + write (fh, buf, strlen (buf)); + } + temp = temp->next; + } + close (fh); + } + +} + +static gboolean +flood_autodialog_timeout (gpointer data) +{ + prefs.hex_gui_autoopen_dialog = 1; + return FALSE; +} + +int +flood_check (char *nick, char *ip, server *serv, session *sess, int what) /*0=ctcp 1=priv */ +{ + time_t current_time; + current_time = time (NULL); + + if (what == 0) + { + if (serv->ctcp_last_time == 0) /*first ctcp in this server */ + { + serv->ctcp_last_time = time (NULL); + serv->ctcp_counter++; + } else + { + if (difftime (current_time, serv->ctcp_last_time) < prefs.hex_flood_ctcp_time) /*if we got the ctcp in the seconds limit */ + { + serv->ctcp_counter++; + if (serv->ctcp_counter == prefs.hex_flood_ctcp_num) /*if we reached the maximun numbers of ctcp in the seconds limits */ + { + char *mask, *message, *real_ip; + + serv->ctcp_last_time = current_time; /*we got the flood, restore all the vars for next one */ + serv->ctcp_counter = 0; + + real_ip = strchr (ip, '@'); + if (real_ip != NULL) + mask = g_strdup_printf ("*!*%s", real_ip); + else + mask = g_strdup_printf ("%s!*", nick); + + message = g_strdup_printf (_("You are being CTCP flooded from %s, ignoring %s\n"), nick, mask); + + PrintText (sess, message); + ignore_add (mask, IG_CTCP, FALSE); + + g_free (message); + g_free (mask); + return 0; + } + } + } + } else + { + if (serv->msg_last_time == 0) + { + serv->msg_last_time = time (NULL); + serv->ctcp_counter++; + } else + { + if (difftime (current_time, serv->msg_last_time) < + prefs.hex_flood_msg_time) + { + char buf[512]; + serv->msg_counter++; + if (serv->msg_counter == prefs.hex_flood_msg_num) /*if we reached the maximun numbers of ctcp in the seconds limits */ + { + g_snprintf (buf, sizeof (buf), + _("You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n"), + ip); + PrintText (sess, buf); + serv->msg_last_time = current_time; /*we got the flood, restore all the vars for next one */ + serv->msg_counter = 0; + + if (prefs.hex_gui_autoopen_dialog) + { + prefs.hex_gui_autoopen_dialog = 0; + /* turn it back on in 30 secs */ + fe_timeout_add_seconds (30, flood_autodialog_timeout, NULL); + } + return 0; + } + } + } + } + return 1; +} + diff --git a/hexchat/src/common/ignore.h b/hexchat/src/common/ignore.h new file mode 100644 index 0000000..674e628 --- /dev/null +++ b/hexchat/src/common/ignore.h @@ -0,0 +1,57 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_IGNORE_H +#define HEXCHAT_IGNORE_H + +extern GSList *ignore_list; + +extern int ignored_ctcp; +extern int ignored_priv; +extern int ignored_chan; +extern int ignored_noti; +extern int ignored_invi; + +#define IG_PRIV 1 +#define IG_NOTI 2 +#define IG_CHAN 4 +#define IG_CTCP 8 +#define IG_INVI 16 +#define IG_UNIG 32 +#define IG_NOSAVE 64 +#define IG_DCC 128 + +struct ignore +{ + char *mask; + unsigned int type; /* one of more of IG_* ORed together */ +}; + +struct ignore *ignore_exists (char *mask); +int ignore_add (char *mask, int type, gboolean overwrite); +void ignore_showlist (session *sess); +int ignore_del (char *mask, struct ignore *ig); +int ignore_check (char *mask, int type); +void ignore_load (void); +void ignore_save (void); +void ignore_gui_open (void); +void ignore_gui_update (int level); +int flood_check (char *nick, char *ip, server *serv, session *sess, int what); + +#endif diff --git a/hexchat/src/common/inbound.c b/hexchat/src/common/inbound.c new file mode 100644 index 0000000..fdee2ec --- /dev/null +++ b/hexchat/src/common/inbound.c @@ -0,0 +1,2083 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <string.h> +#include <ctype.h> +#include <stdlib.h> +#include <stdio.h> +#include <sys/types.h> +#include <time.h> + +#ifdef WIN32 +#include <io.h> +#else +#include <unistd.h> +#endif + +#define WANTARPA +#define WANTDNS +#include "inet.h" + +#include "hexchat.h" +#include "util.h" +#include "ignore.h" +#include "fe.h" +#include "modes.h" +#include "notify.h" +#include "outbound.h" +#include "inbound.h" +#include "server.h" +#include "servlist.h" +#include "text.h" +#include "ctcp.h" +#include "hexchatc.h" +#include "chanopt.h" + + +void +clear_channel (session *sess) +{ + if (sess->channel[0]) + strcpy (sess->waitchannel, sess->channel); + sess->channel[0] = 0; + sess->doing_who = FALSE; + sess->done_away_check = FALSE; + + log_close (sess); + + if (sess->current_modes) + { + g_free (sess->current_modes); + sess->current_modes = NULL; + } + + if (sess->mode_timeout_tag) + { + fe_timeout_remove (sess->mode_timeout_tag); + sess->mode_timeout_tag = 0; + } + + fe_clear_channel (sess); + userlist_clear (sess); + fe_set_nonchannel (sess, FALSE); + fe_set_title (sess); +} + +void +set_topic (session *sess, char *topic, char *stripped_topic) +{ + /* The topic of dialogs are the users hostname which is logged is new */ + if (sess->type == SESS_DIALOG && (!sess->topic || strcmp(sess->topic, stripped_topic)) + && sess->logfd != -1) + { + char tbuf[1024]; + g_snprintf (tbuf, sizeof (tbuf), "[%s has address %s]\n", sess->channel, stripped_topic); + write (sess->logfd, tbuf, strlen (tbuf)); + } + + g_free (sess->topic); + sess->topic = g_strdup (stripped_topic); + fe_set_topic (sess, topic, stripped_topic); +} + +static session * +find_session_from_nick (char *nick, server *serv) +{ + session *sess; + GSList *list = sess_list; + + sess = find_dialog (serv, nick); + if (sess) + return sess; + + if (serv->front_session) + { + // If we are here for ChanServ, then it is usually a reply for the user + if (!g_ascii_strcasecmp(nick, "ChanServ") || userlist_find (serv->front_session, nick)) + return serv->front_session; + } + + if (current_sess && current_sess->server == serv) + { + if (userlist_find (current_sess, nick)) + return current_sess; + } + + while (list) + { + sess = list->data; + if (sess->server == serv) + { + if (userlist_find (sess, nick)) + return sess; + } + list = list->next; + } + return NULL; +} + +static session * +inbound_open_dialog (server *serv, char *from, + const message_tags_data *tags_data) +{ + session *sess; + + sess = new_ircwindow (serv, from, SESS_DIALOG, 0); + /* for playing sounds */ + EMIT_SIGNAL_TIMESTAMP (XP_TE_OPENDIALOG, sess, NULL, NULL, NULL, NULL, 0, + tags_data->timestamp); + + return sess; +} + +static void +inbound_make_idtext (server *serv, char *idtext, int max, int id) +{ + idtext[0] = 0; + if (serv->have_idmsg || serv->have_accnotify) + { + if (id) + { + safe_strcpy (idtext, prefs.hex_irc_id_ytext, max); + } else + { + safe_strcpy (idtext, prefs.hex_irc_id_ntext, max); + } + /* convert codes like %C,%U to the proper ones */ + check_special_chars (idtext, TRUE); + } +} + +void +inbound_privmsg (server *serv, char *from, char *ip, char *text, int id, + const message_tags_data *tags_data) +{ + session *sess; + struct User *user; + char idtext[64]; + gboolean nodiag = FALSE; + + sess = find_dialog (serv, from); + + if (sess || prefs.hex_gui_autoopen_dialog) + { + /*0=ctcp 1=priv will set hex_gui_autoopen_dialog=0 here is flud detected */ + if (!sess) + { + if (flood_check (from, ip, serv, current_sess, 1)) + /* Create a dialog session */ + sess = inbound_open_dialog (serv, from, tags_data); + else + sess = serv->server_session; + if (!sess) + return; /* ?? */ + } + + if (ip && ip[0]) + set_topic (sess, ip, ip); + inbound_chanmsg (serv, NULL, NULL, from, text, FALSE, tags_data->identified, tags_data); + return; + } + + sess = find_session_from_nick (from, serv); + if (!sess) + { + sess = serv->front_session; + nodiag = TRUE; /* We don't want it to look like a normal message in front sess */ + } + + user = userlist_find (sess, from); + if (user) + { + user->lasttalk = time (0); + if (user->account) + id = TRUE; + } + + inbound_make_idtext (serv, idtext, sizeof (idtext), id); + + if (sess->type == SESS_DIALOG && !nodiag) + EMIT_SIGNAL_TIMESTAMP (XP_TE_DPRIVMSG, sess, from, text, idtext, NULL, 0, + tags_data->timestamp); + else + EMIT_SIGNAL_TIMESTAMP (XP_TE_PRIVMSG, sess, from, text, idtext, NULL, 0, + tags_data->timestamp); +} + +/* used for Alerts section. Masks can be separated by commas and spaces. */ + +gboolean +alert_match_word (char *word, char *masks) +{ + char *p = masks; + char endchar; + int res; + + if (masks[0] == 0) + return FALSE; + + while (1) + { + /* if it's a 0, space or comma, the word has ended. */ + if (*p == 0 || *p == ' ' || *p == ',') + { + endchar = *p; + *p = 0; + res = match (g_strchug (masks), word); + *p = endchar; + + if (res) + return TRUE; /* yes, matched! */ + + masks = p + 1; + if (*p == 0) + return FALSE; + } + p++; + } +} + +gboolean +alert_match_text (char *text, char *masks) +{ + unsigned char *p = text; + unsigned char endchar; + int res; + + if (masks[0] == 0) + return FALSE; + + while (1) + { + if (*p >= '0' && *p <= '9') + { + p++; + continue; + } + + /* if it's RFC1459 <special>, it can be inside a word */ + switch (*p) + { + case '-': case '[': case ']': case '\\': + case '`': case '^': case '{': case '}': + case '_': case '|': + p++; + continue; + } + + /* if it's a 0, space or comma, the word has ended. */ + if (*p == 0 || *p == ' ' || *p == ',' || + /* if it's anything BUT a letter, the word has ended. */ + (!g_unichar_isalpha (g_utf8_get_char (p)))) + { + endchar = *p; + *p = 0; + res = alert_match_word (text, masks); + *p = endchar; + + if (res) + return TRUE; /* yes, matched! */ + + text = p + g_utf8_skip [p[0]]; + if (*p == 0) + return FALSE; + } + + p += g_utf8_skip [p[0]]; + } +} + +static int +is_hilight (char *from, char *text, session *sess, server *serv) +{ + if (alert_match_word (from, prefs.hex_irc_no_hilight)) + return 0; + + text = strip_color (text, -1, STRIP_ALL); + + if (alert_match_text (text, serv->nick) || + alert_match_text (text, prefs.hex_irc_extra_hilight) || + alert_match_word (from, prefs.hex_irc_nick_hilight)) + { + g_free (text); + if (sess != current_tab) + { + sess->tab_state |= TAB_STATE_NEW_HILIGHT; + lastact_update (sess); + } + return 1; + } + + g_free (text); + return 0; +} + +void +inbound_action (session *sess, char *chan, char *from, char *ip, char *text, + int fromme, int id, const message_tags_data *tags_data) +{ + session *def = sess; + server *serv = sess->server; + struct User *user; + char nickchar[2] = "\000"; + char idtext[64]; + int privaction = FALSE; + + if (!fromme) + { + if (is_channel (serv, chan)) + { + sess = find_channel (serv, chan); + } else + { + /* it's a private action! */ + privaction = TRUE; + /* find a dialog tab for it */ + sess = find_dialog (serv, from); + /* if non found, open a new one */ + if (!sess && prefs.hex_gui_autoopen_dialog) + { + /* but only if it wouldn't flood */ + if (flood_check (from, ip, serv, current_sess, 1)) + sess = inbound_open_dialog (serv, from, tags_data); + else + sess = serv->server_session; + } + if (!sess) + { + sess = find_session_from_nick (from, serv); + /* still not good? */ + if (!sess) + sess = serv->front_session; + } + } + } + + if (!sess) + sess = def; + + if (sess != current_tab) + { + if (fromme) + sess->tab_state |= TAB_STATE_NEW_DATA; + else + sess->tab_state |= TAB_STATE_NEW_MSG; + lastact_update (sess); + } + + user = userlist_find (sess, from); + if (user) + { + nickchar[0] = user->prefix[0]; + user->lasttalk = time (0); + if (user->account) + id = TRUE; + if (user->me) + fromme = TRUE; + } + + inbound_make_idtext (serv, idtext, sizeof (idtext), id); + + if (!fromme && !privaction) + { + if (is_hilight (from, text, sess, serv)) + { + EMIT_SIGNAL_TIMESTAMP (XP_TE_HCHANACTION, sess, from, text, nickchar, + idtext, 0, tags_data->timestamp); + return; + } + } + + if (fromme) + EMIT_SIGNAL_TIMESTAMP (XP_TE_UACTION, sess, from, text, nickchar, idtext, + 0, tags_data->timestamp); + else if (!privaction) + EMIT_SIGNAL_TIMESTAMP (XP_TE_CHANACTION, sess, from, text, nickchar, + idtext, 0, tags_data->timestamp); + else if (sess->type == SESS_DIALOG) + EMIT_SIGNAL_TIMESTAMP (XP_TE_DPRIVACTION, sess, from, text, idtext, NULL, + 0, tags_data->timestamp); + else + EMIT_SIGNAL_TIMESTAMP (XP_TE_PRIVACTION, sess, from, text, idtext, NULL, 0, + tags_data->timestamp); +} + +void +inbound_chanmsg (server *serv, session *sess, char *chan, char *from, + char *text, char fromme, int id, + const message_tags_data *tags_data) +{ + struct User *user; + int hilight = FALSE; + char nickchar[2] = "\000"; + char idtext[64]; + + if (!sess) + { + if (chan) + { + sess = find_channel (serv, chan); + if (!sess && !is_channel (serv, chan)) + sess = find_dialog (serv, chan); + } else + { + sess = find_dialog (serv, from); + } + if (!sess) + return; + } + + if (sess != current_tab) + { + sess->tab_state |= TAB_STATE_NEW_MSG; + lastact_update (sess); + } + + user = userlist_find (sess, from); + if (user) + { + if (user->account) + id = TRUE; + nickchar[0] = user->prefix[0]; + user->lasttalk = time (0); + if (user->me) + fromme = TRUE; + } + + if (fromme) + { + if (prefs.hex_away_auto_unmark && serv->is_away && !tags_data->timestamp) + sess->server->p_set_back (sess->server); + EMIT_SIGNAL_TIMESTAMP (XP_TE_UCHANMSG, sess, from, text, nickchar, NULL, + 0, tags_data->timestamp); + return; + } + + inbound_make_idtext (serv, idtext, sizeof (idtext), id); + + if (is_hilight (from, text, sess, serv)) + hilight = TRUE; + + if (sess->type == SESS_DIALOG) + EMIT_SIGNAL_TIMESTAMP (XP_TE_DPRIVMSG, sess, from, text, idtext, NULL, 0, + tags_data->timestamp); + else if (hilight) + EMIT_SIGNAL_TIMESTAMP (XP_TE_HCHANMSG, sess, from, text, nickchar, idtext, + 0, tags_data->timestamp); + else + EMIT_SIGNAL_TIMESTAMP (XP_TE_CHANMSG, sess, from, text, nickchar, idtext, + 0, tags_data->timestamp); +} + +void +inbound_newnick (server *serv, char *nick, char *newnick, int quiet, + const message_tags_data *tags_data) +{ + int me = FALSE; + session *sess; + GSList *list = sess_list; + + if (!serv->p_cmp (nick, serv->nick)) + { + me = TRUE; + safe_strcpy (serv->nick, newnick, NICKLEN); + } + + while (list) + { + sess = list->data; + if (sess->server == serv) + { + if (userlist_change (sess, nick, newnick) || (me && sess->type == SESS_SERVER)) + { + if (!quiet) + { + if (me) + EMIT_SIGNAL_TIMESTAMP (XP_TE_UCHANGENICK, sess, nick, + newnick, NULL, NULL, 0, + tags_data->timestamp); + else + EMIT_SIGNAL_TIMESTAMP (XP_TE_CHANGENICK, sess, nick, + newnick, NULL, NULL, 0, tags_data->timestamp); + } + } + if (sess->type == SESS_DIALOG && !serv->p_cmp (sess->channel, nick)) + { + safe_strcpy (sess->channel, newnick, CHANLEN); + fe_set_channel (sess); + } + fe_set_title (sess); + } + list = list->next; + } + + dcc_change_nick (serv, nick, newnick); + + if (me) + fe_set_nick (serv, newnick); +} + +/* find a "<none>" tab */ +static session * +find_unused_session (server *serv) +{ + session *sess; + GSList *list = sess_list; + while (list) + { + sess = (session *) list->data; + if (sess->type == SESS_CHANNEL && sess->channel[0] == 0 && + sess->server == serv) + { + if (sess->waitchannel[0] == 0) + return sess; + } + list = list->next; + } + return NULL; +} + +static session * +find_session_from_waitchannel (char *chan, struct server *serv) +{ + session *sess; + GSList *list = sess_list; + while (list) + { + sess = (session *) list->data; + if (sess->server == serv && sess->channel[0] == 0 && sess->type == SESS_CHANNEL) + { + if (!serv->p_cmp (chan, sess->waitchannel)) + return sess; + } + list = list->next; + } + return NULL; +} + +void +inbound_ujoin (server *serv, char *chan, char *nick, char *ip, + const message_tags_data *tags_data) +{ + session *sess; + int found_unused = FALSE; + + /* already joined? probably a bnc */ + sess = find_channel (serv, chan); + if (!sess) + { + /* see if a window is waiting to join this channel */ + sess = find_session_from_waitchannel (chan, serv); + if (!sess) + { + /* find a "<none>" tab and use that */ + sess = find_unused_session (serv); + found_unused = sess != NULL; + if (!sess) + /* last resort, open a new tab/window */ + sess = new_ircwindow (serv, chan, SESS_CHANNEL, 1); + } + } + + safe_strcpy (sess->channel, chan, CHANLEN); + if (found_unused) + { + chanopt_load (sess); + scrollback_load (sess); + if (sess->scrollwritten && sess->scrollback_replay_marklast) + sess->scrollback_replay_marklast (sess); + } + + fe_set_channel (sess); + fe_set_title (sess); + fe_set_nonchannel (sess, TRUE); + userlist_clear (sess); + + log_open_or_close (sess); + + sess->waitchannel[0] = 0; + sess->ignore_date = TRUE; + sess->ignore_mode = TRUE; + sess->ignore_names = TRUE; + sess->end_of_names = FALSE; + + /* sends a MODE */ + serv->p_join_info (sess->server, chan); + + EMIT_SIGNAL_TIMESTAMP (XP_TE_UJOIN, sess, nick, chan, ip, NULL, 0, + tags_data->timestamp); + + if (prefs.hex_irc_who_join) + { + /* sends WHO #channel */ + serv->p_user_list (sess->server, chan); + sess->doing_who = TRUE; + } +} + +void +inbound_ukick (server *serv, char *chan, char *kicker, char *reason, + const message_tags_data *tags_data) +{ + session *sess = find_channel (serv, chan); + if (sess) + { + EMIT_SIGNAL_TIMESTAMP (XP_TE_UKICK, sess, serv->nick, chan, kicker, + reason, 0, tags_data->timestamp); + clear_channel (sess); + if (prefs.hex_irc_auto_rejoin) + { + serv->p_join (serv, chan, sess->channelkey); + safe_strcpy (sess->waitchannel, chan, CHANLEN); + } + } +} + +void +inbound_upart (server *serv, char *chan, char *ip, char *reason, + const message_tags_data *tags_data) +{ + session *sess = find_channel (serv, chan); + if (sess) + { + if (*reason) + EMIT_SIGNAL_TIMESTAMP (XP_TE_UPARTREASON, sess, serv->nick, ip, chan, + reason, 0, tags_data->timestamp); + else + EMIT_SIGNAL_TIMESTAMP (XP_TE_UPART, sess, serv->nick, ip, chan, NULL, + 0, tags_data->timestamp); + clear_channel (sess); + } +} + +void +inbound_nameslist (server *serv, char *chan, char *names, + const message_tags_data *tags_data) +{ + session *sess; + char **name_list; + char *host, *nopre_name; + char name[NICKLEN]; + int i; + size_t offset; + + sess = find_channel (serv, chan); + if (!sess) + { + EMIT_SIGNAL_TIMESTAMP (XP_TE_USERSONCHAN, serv->server_session, chan, + names, NULL, NULL, 0, tags_data->timestamp); + return; + } + if (!sess->ignore_names) + EMIT_SIGNAL_TIMESTAMP (XP_TE_USERSONCHAN, sess, chan, names, NULL, NULL, + 0, tags_data->timestamp); + + if (sess->end_of_names) + { + sess->end_of_names = FALSE; + userlist_clear (sess); + } + + name_list = g_strsplit (names, " ", -1); + for (i = 0; name_list[i]; i++) + { + host = NULL; + offset = sizeof(name); + + if (name_list[i][0] == 0) + continue; + + if (serv->have_uhnames) + { + offset = 0; + nopre_name = name_list[i]; + + /* Ignore prefixes so '!' won't cause issues */ + while (strchr (serv->nick_prefixes, *nopre_name) != NULL) + { + nopre_name++; + offset++; + } + + offset += strcspn (nopre_name, "!"); + if (offset++ < strlen (name_list[i])) + host = name_list[i] + offset; + } + + g_strlcpy (name, name_list[i], MIN(offset, sizeof(name))); + + userlist_add (sess, name, host, NULL, NULL, tags_data); + } + g_strfreev (name_list); +} + +void +inbound_topic (server *serv, char *chan, char *topic_text, + const message_tags_data *tags_data) +{ + session *sess = find_channel (serv, chan); + char *stripped_topic; + + if (sess) + { + stripped_topic = strip_color (topic_text, -1, STRIP_ALL); + set_topic (sess, topic_text, stripped_topic); + g_free (stripped_topic); + } else + sess = serv->server_session; + + EMIT_SIGNAL_TIMESTAMP (XP_TE_TOPIC, sess, chan, topic_text, NULL, NULL, 0, + tags_data->timestamp); +} + +void +inbound_topicnew (server *serv, char *nick, char *chan, char *topic, + const message_tags_data *tags_data) +{ + session *sess; + char *stripped_topic; + + sess = find_channel (serv, chan); + if (sess) + { + EMIT_SIGNAL_TIMESTAMP (XP_TE_NEWTOPIC, sess, nick, topic, chan, NULL, 0, + tags_data->timestamp); + stripped_topic = strip_color (topic, -1, STRIP_ALL); + set_topic (sess, topic, stripped_topic); + g_free (stripped_topic); + } +} + +void +inbound_join (server *serv, char *chan, char *user, char *ip, char *account, + char *realname, const message_tags_data *tags_data) +{ + session *sess = find_channel (serv, chan); + if (sess) + { + EMIT_SIGNAL_TIMESTAMP (XP_TE_JOIN, sess, user, chan, ip, account, 0, + tags_data->timestamp); + userlist_add (sess, user, ip, account, realname, tags_data); + } +} + +void +inbound_kick (server *serv, char *chan, char *user, char *kicker, char *reason, + const message_tags_data *tags_data) +{ + session *sess = find_channel (serv, chan); + if (sess) + { + EMIT_SIGNAL_TIMESTAMP (XP_TE_KICK, sess, kicker, user, chan, reason, 0, + tags_data->timestamp); + userlist_remove (sess, user); + } +} + +void +inbound_part (server *serv, char *chan, char *user, char *ip, char *reason, + const message_tags_data *tags_data) +{ + session *sess = find_channel (serv, chan); + if (sess) + { + if (*reason) + EMIT_SIGNAL_TIMESTAMP (XP_TE_PARTREASON, sess, user, ip, chan, reason, + 0, tags_data->timestamp); + else + EMIT_SIGNAL_TIMESTAMP (XP_TE_PART, sess, user, ip, chan, NULL, 0, + tags_data->timestamp); + userlist_remove (sess, user); + } +} + +void +inbound_topictime (server *serv, char *chan, char *nick, time_t stamp, + const message_tags_data *tags_data) +{ + char *tim = ctime (&stamp); + session *sess = find_channel (serv, chan); + + if (!sess) + sess = serv->server_session; + + if (tim != NULL) + tim[24] = 0; /* get rid of the \n */ + + EMIT_SIGNAL_TIMESTAMP (XP_TE_TOPICDATE, sess, chan, nick, tim, NULL, 0, + tags_data->timestamp); +} + +void +inbound_quit (server *serv, char *nick, char *ip, char *reason, + const message_tags_data *tags_data) +{ + GSList *list = sess_list; + session *sess; + struct User *user; + int was_on_front_session = FALSE; + + while (list) + { + sess = (session *) list->data; + if (sess->server == serv) + { + if (sess == current_sess) + was_on_front_session = TRUE; + if ((user = userlist_find (sess, nick))) + { + EMIT_SIGNAL_TIMESTAMP (XP_TE_QUIT, sess, nick, reason, ip, NULL, 0, + tags_data->timestamp); + userlist_remove_user (sess, user); + } else if (sess->type == SESS_DIALOG && !serv->p_cmp (sess->channel, nick)) + { + EMIT_SIGNAL_TIMESTAMP (XP_TE_QUIT, sess, nick, reason, ip, NULL, 0, + tags_data->timestamp); + } + } + list = list->next; + } + + notify_set_offline (serv, nick, was_on_front_session, tags_data); +} + +void +inbound_account (server *serv, char *nick, char *account, + const message_tags_data *tags_data) +{ + session *sess = NULL; + GSList *list; + + list = sess_list; + while (list) + { + sess = list->data; + if (sess->server == serv) + userlist_set_account (sess, nick, account); + list = list->next; + } +} + +void +inbound_ping_reply (session *sess, char *timestring, char *from, + const message_tags_data *tags_data) +{ + unsigned long tim, nowtim, dif; + int lag = 0; + char outbuf[64]; + + if (strncmp (timestring, "LAG", 3) == 0) + { + timestring += 3; + lag = 1; + } + + tim = strtoul (timestring, NULL, 10); + nowtim = make_ping_time (); + dif = nowtim - tim; + + sess->server->ping_recv = time (0); + + if (lag) + { + sess->server->lag_sent = 0; + sess->server->lag = dif; + fe_set_lag (sess->server, dif); + return; + } + + if (atol (timestring) == 0) + { + if (sess->server->lag_sent) + sess->server->lag_sent = 0; + else + EMIT_SIGNAL_TIMESTAMP (XP_TE_PINGREP, sess, from, "?", NULL, NULL, 0, + tags_data->timestamp); + } else + { + g_snprintf (outbuf, sizeof (outbuf), "%ld.%03ld", dif / 1000, dif % 1000); + EMIT_SIGNAL_TIMESTAMP (XP_TE_PINGREP, sess, from, outbuf, NULL, NULL, 0, + tags_data->timestamp); + } +} + +static session * +find_session_from_type (int type, server *serv) +{ + session *sess; + GSList *list = sess_list; + while (list) + { + sess = list->data; + if (sess->type == type && serv == sess->server) + return sess; + list = list->next; + } + return NULL; +} + +void +inbound_notice (server *serv, char *to, char *nick, char *msg, char *ip, int id, + const message_tags_data *tags_data) +{ + char *ptr = to; + session *sess = 0; + int server_notice = FALSE; + + if (is_channel (serv, ptr)) + sess = find_channel (serv, ptr); + + /* /notice [mode-prefix]#channel should end up in that channel */ + if (!sess && ptr[0] && strchr(serv->nick_prefixes, ptr[0]) != NULL) + { + ptr++; + sess = find_channel (serv, ptr); + } + + if (strcmp (nick, ip) == 0) + server_notice = TRUE; + + if (!sess) + { + ptr = 0; + if (prefs.hex_irc_notice_pos == 0) + { + /* paranoia check */ + if (msg[0] == '[' && (!serv->have_idmsg || id)) + { + /* guess where chanserv meant to post this -sigh- */ + if (!g_ascii_strcasecmp (nick, "ChanServ") && !find_dialog (serv, nick)) + { + char *dest = g_strdup (msg + 1); + char *end = strchr (dest, ']'); + if (end) + { + *end = 0; + sess = find_channel (serv, dest); + } + g_free (dest); + } + } + if (!sess) + sess = find_session_from_nick (nick, serv); + } else if (prefs.hex_irc_notice_pos == 1) + { + int stype = server_notice ? SESS_SNOTICES : SESS_NOTICES; + sess = find_session_from_type (stype, serv); + if (!sess) + { + if (stype == SESS_NOTICES) + sess = new_ircwindow (serv, "(notices)", SESS_NOTICES, 0); + else + sess = new_ircwindow (serv, "(snotices)", SESS_SNOTICES, 0); + fe_set_channel (sess); + fe_set_title (sess); + fe_set_nonchannel (sess, FALSE); + userlist_clear (sess); + log_open_or_close (sess); + } + /* Avoid redundancy with some Undernet notices */ + if (!strncmp (msg, "*** Notice -- ", 14)) + msg += 14; + } else + { + sess = serv->front_session; + } + + if (!sess) + { + if (server_notice) + sess = serv->server_session; + else + sess = serv->front_session; + } + } + + if (msg[0] == '\001') + { + size_t len; + + msg++; + if (!strncmp (msg, "PING", 4)) + { + inbound_ping_reply (sess, msg + 5, nick, tags_data); + return; + } + + len = strlen(msg); + if (msg[len - 1] == '\001') + msg[len - 1] = '\000'; + } + + if (server_notice) + EMIT_SIGNAL_TIMESTAMP (XP_TE_SERVNOTICE, sess, msg, nick, NULL, NULL, 0, + tags_data->timestamp); + else if (ptr) + EMIT_SIGNAL_TIMESTAMP (XP_TE_CHANNOTICE, sess, nick, to, msg, NULL, 0, + tags_data->timestamp); + else + EMIT_SIGNAL_TIMESTAMP (XP_TE_NOTICE, sess, nick, msg, NULL, NULL, 0, + tags_data->timestamp); +} + +void +inbound_away (server *serv, char *nick, char *msg, + const message_tags_data *tags_data) +{ + struct away_msg *away = server_away_find_message (serv, nick); + session *sess = NULL; + GSList *list; + + if (away && !strcmp (msg, away->message)) /* Seen the msg before? */ + { + if (prefs.hex_away_show_once && !serv->inside_whois) + return; + } else + { + server_away_save_message (serv, nick, msg); + } + + if (prefs.hex_irc_whois_front) + sess = serv->front_session; + else + { + if (!serv->inside_whois) + sess = find_session_from_nick (nick, serv); + if (!sess) + sess = serv->server_session; + } + + /* possibly hide the output */ + if (!serv->inside_whois || !serv->skip_next_whois) + EMIT_SIGNAL_TIMESTAMP (XP_TE_WHOIS5, sess, nick, msg, NULL, NULL, 0, + tags_data->timestamp); + + list = sess_list; + while (list) + { + sess = list->data; + if (sess->server == serv) + userlist_set_away (sess, nick, TRUE); + list = list->next; + } +} + +void +inbound_away_notify (server *serv, char *nick, char *reason, + const message_tags_data *tags_data) +{ + session *sess = NULL; + GSList *list; + + list = sess_list; + while (list) + { + sess = list->data; + if (sess->server == serv) + { + userlist_set_away (sess, nick, reason ? TRUE : FALSE); + if (sess == serv->front_session && notify_is_in_list (serv, nick)) + { + if (reason) + EMIT_SIGNAL_TIMESTAMP (XP_TE_NOTIFYAWAY, sess, nick, reason, NULL, + NULL, 0, tags_data->timestamp); + else + EMIT_SIGNAL_TIMESTAMP (XP_TE_NOTIFYBACK, sess, nick, NULL, NULL, + NULL, 0, tags_data->timestamp); + } + } + list = list->next; + } +} + +int +inbound_nameslist_end (server *serv, char *chan, + const message_tags_data *tags_data) +{ + session *sess; + GSList *list; + + if (!strcmp (chan, "*")) + { + list = sess_list; + while (list) + { + sess = list->data; + if (sess->server == serv) + { + sess->end_of_names = TRUE; + sess->ignore_names = FALSE; + fe_userlist_numbers (sess); + } + list = list->next; + } + return TRUE; + } + sess = find_channel (serv, chan); + if (sess) + { + sess->end_of_names = TRUE; + sess->ignore_names = FALSE; + fe_userlist_numbers (sess); + return TRUE; + } + return FALSE; +} + +static gboolean +check_autojoin_channels (server *serv) +{ + int i = 0; + session *sess; + GSList *list = sess_list; + GSList *sess_channels = NULL; /* joined channels that are not in the favorites list */ + favchannel *fav; + + /* shouldn't really happen, the io tag is destroyed in server.c */ + if (!is_server (serv)) + { + return FALSE; + } + + /* If there's a session (i.e. this is a reconnect), autojoin to everything that was open previously. */ + while (list) + { + sess = list->data; + + if (sess->server == serv) + { + if (sess->willjoinchannel[0] != 0) + { + strcpy (sess->waitchannel, sess->willjoinchannel); + sess->willjoinchannel[0] = 0; + + fav = servlist_favchan_find (serv->network, sess->waitchannel, NULL); /* Is this channel in our favorites? */ + + /* session->channelkey is initially unset for channels joined from the favorites. You have to fill them up manually from favorites settings. */ + if (fav) + { + /* session->channelkey is set if there was a key change during the session. In that case, use the session key, not the one from favorites. */ + if (fav->key && !strlen (sess->channelkey)) + { + safe_strcpy (sess->channelkey, fav->key, sizeof (sess->channelkey)); + } + } + + /* for easier checks, ensure that favchannel->key is just NULL when session->channelkey is empty i.e. '' */ + if (strlen (sess->channelkey)) + { + sess_channels = servlist_favchan_listadd (sess_channels, sess->waitchannel, sess->channelkey); + } + else + { + sess_channels = servlist_favchan_listadd (sess_channels, sess->waitchannel, NULL); + } + i++; + } + } + + list = list->next; + } + + if (sess_channels) + { + serv->p_join_list (serv, sess_channels); + g_slist_free_full (sess_channels, (GDestroyNotify) servlist_favchan_free); + } + else + { + /* If there's no session, just autojoin to favorites. */ + if (serv->favlist) + { + serv->p_join_list (serv, serv->favlist); + i++; + + /* FIXME this is not going to work and is not needed either. server_free() does the job already. */ + /* g_slist_free_full (serv->favlist, (GDestroyNotify) servlist_favchan_free); */ + } + } + + serv->joindelay_tag = 0; + fe_server_event (serv, FE_SE_LOGGEDIN, i); + return FALSE; +} + +void +inbound_next_nick (session *sess, char *nick, int error, + const message_tags_data *tags_data) +{ + char *newnick; + server *serv = sess->server; + ircnet *net; + + serv->nickcount++; + + switch (serv->nickcount) + { + case 2: + newnick = prefs.hex_irc_nick2; + net = serv->network; + /* use network specific "Second choice"? */ + if (net && !(net->flags & FLAG_USE_GLOBAL) && net->nick2) + { + newnick = net->nick2; + } + serv->p_change_nick (serv, newnick); + if (error) + { + EMIT_SIGNAL_TIMESTAMP (XP_TE_NICKERROR, sess, nick, newnick, NULL, NULL, + 0, tags_data->timestamp); + } + else + { + EMIT_SIGNAL_TIMESTAMP (XP_TE_NICKCLASH, sess, nick, newnick, NULL, NULL, + 0, tags_data->timestamp); + } + break; + + case 3: + serv->p_change_nick (serv, prefs.hex_irc_nick3); + if (error) + { + EMIT_SIGNAL_TIMESTAMP (XP_TE_NICKERROR, sess, nick, prefs.hex_irc_nick3, + NULL, NULL, 0, tags_data->timestamp); + } + else + { + EMIT_SIGNAL_TIMESTAMP (XP_TE_NICKCLASH, sess, nick, prefs.hex_irc_nick3, + NULL, NULL, 0, tags_data->timestamp); + } + break; + + default: + EMIT_SIGNAL_TIMESTAMP (XP_TE_NICKFAIL, sess, NULL, NULL, NULL, NULL, 0, + tags_data->timestamp); + } +} + + +static void +dns_addr_callback (GObject *obj, GAsyncResult *result, gpointer user_data) +{ + GResolver *resolver = G_RESOLVER(obj); + session *sess = (session*)user_data; + gchar *addr; + + g_return_if_fail (is_session(sess)); + + addr = g_resolver_lookup_by_address_finish (resolver, result, NULL); + if (addr) + PrintTextf (sess, _("Resolved to %s"), addr); + else + PrintText (sess, _("Not found")); +} + +static void +dns_name_callback (GObject *obj, GAsyncResult *result, gpointer user_data) +{ + GResolver *resolver = G_RESOLVER(obj); + session *sess = (session*)user_data; + GList* addrs; + gchar* addr; + GList* list; + + g_return_if_fail (is_session (sess)); + + addrs = g_resolver_lookup_by_name_finish (resolver, result, NULL); + if (addrs) + { + PrintText (sess, _("Resolved to:")); + + for (list = g_list_first (addrs); list; list = g_list_next (list)) + { + addr = g_inet_address_to_string (list->data); + PrintTextf (sess, " %s", addr); + } + + g_resolver_free_addresses (addrs); + } + else + PrintText (sess, _("Not found")); +} + +void +do_dns (session *sess, char *nick, char *host, + const message_tags_data *tags_data) +{ + GResolver *res = g_resolver_get_default (); + GInetAddress *addr; + char *po; + + po = strrchr (host, '@'); + if (po) + host = po + 1; + + if (nick) + EMIT_SIGNAL_TIMESTAMP (XP_TE_RESOLVINGUSER, sess, nick, host, NULL, NULL, 0, + tags_data->timestamp); + + PrintTextf (sess, _("Looking up %s..."), host); + + addr = g_inet_address_new_from_string (host); + if (addr) + g_resolver_lookup_by_address_async (res, addr, NULL, dns_addr_callback, sess); + else + g_resolver_lookup_by_name_async (res, host, NULL, dns_name_callback, sess); +} + +static void +set_default_modes (server *serv) +{ + char modes[8]; + + modes[0] = '+'; + modes[1] = '\0'; + + if (prefs.hex_irc_wallops) + strcat (modes, "w"); + if (prefs.hex_irc_servernotice) + strcat (modes, "s"); + if (prefs.hex_irc_invisible) + strcat (modes, "i"); + if (prefs.hex_irc_hidehost) + strcat (modes, "x"); + + if (modes[1] != '\0') + { + serv->p_mode (serv, serv->nick, modes); + } +} + +void +inbound_login_start (session *sess, char *nick, char *servname, + const message_tags_data *tags_data) +{ + inbound_newnick (sess->server, sess->server->nick, nick, TRUE, tags_data); + server_set_name (sess->server, servname); + if (sess->type == SESS_SERVER) + log_open_or_close (sess); + /* reset our away status */ + if (sess->server->reconnect_away) + { + handle_command (sess->server->server_session, "away", FALSE); + sess->server->reconnect_away = FALSE; + } +} + +static void +inbound_set_all_away_status (server *serv, char *nick, unsigned int status) +{ + GSList *list; + session *sess; + + list = sess_list; + while (list) + { + sess = list->data; + if (sess->server == serv) + userlist_set_away (sess, nick, status); + list = list->next; + } +} + +void +inbound_uaway (server *serv, const message_tags_data *tags_data) +{ + serv->is_away = TRUE; + serv->away_time = time (NULL); + fe_set_away (serv); + + inbound_set_all_away_status (serv, serv->nick, 1); +} + +void +inbound_uback (server *serv, const message_tags_data *tags_data) +{ + serv->is_away = FALSE; + serv->reconnect_away = FALSE; + fe_set_away (serv); + + inbound_set_all_away_status (serv, serv->nick, 0); +} + +void +inbound_foundip (session *sess, char *ip, const message_tags_data *tags_data) +{ + struct hostent *HostAddr; + + HostAddr = gethostbyname (ip); + if (HostAddr) + { + sess->server->dcc_ip = ((struct in_addr *) HostAddr->h_addr)->s_addr; + EMIT_SIGNAL_TIMESTAMP (XP_TE_FOUNDIP, sess->server->server_session, + inet_ntoa (*((struct in_addr *) HostAddr->h_addr)), + NULL, NULL, NULL, 0, tags_data->timestamp); + } +} + +void +inbound_user_info_start (session *sess, char *nick, + const message_tags_data *tags_data) +{ + /* set away to FALSE now, 301 may turn it back on */ + inbound_set_all_away_status (sess->server, nick, 0); +} + +/* reporting new information found about this user. chan may be NULL. + * away may be 0xff to indicate UNKNOWN. */ + +void +inbound_user_info (session *sess, char *chan, char *user, char *host, + char *servname, char *nick, char *realname, + char *account, unsigned int away, + const message_tags_data *tags_data) +{ + server *serv = sess->server; + session *who_sess; + GSList *list; + char *uhost = NULL; + + if (user && host) + { + uhost = g_strdup_printf ("%s@%s", user, host); + } + + if (chan) + { + who_sess = find_channel (serv, chan); + if (who_sess) + userlist_add_hostname (who_sess, nick, uhost, realname, servname, account, away); + else + { + if (serv->doing_dns && nick && host) + do_dns (sess, nick, host, tags_data); + } + } + else + { + /* came from WHOIS, not channel specific */ + for (list = sess_list; list; list = list->next) + { + sess = list->data; + if (sess->server != serv) + continue; + + if (sess->type == SESS_CHANNEL) + { + userlist_add_hostname (sess, nick, uhost, realname, servname, account, away); + } + else if (sess->type == SESS_DIALOG && uhost && !serv->p_cmp (sess->channel, nick)) + { + set_topic (sess, uhost, uhost); + } + } + } + + g_free (uhost); +} + +int +inbound_banlist (session *sess, time_t stamp, char *chan, char *mask, + char *banner, int rplcode, const message_tags_data *tags_data) +{ + char *time_str = ctime (&stamp); + server *serv = sess->server; + char *nl; + + if (stamp <= 0 || time_str == NULL) + { + time_str = ""; + } + else + { + if ((nl = strchr (time_str, '\n'))) + *nl = 0; + } + + sess = find_channel (serv, chan); + if (!sess) + { + sess = serv->front_session; + goto nowindow; + } + + if (!fe_add_ban_list (sess, mask, banner, time_str, rplcode)) + { +nowindow: + + EMIT_SIGNAL_TIMESTAMP (XP_TE_BANLIST, sess, chan, mask, banner, time_str, + 0, tags_data->timestamp); + return TRUE; + } + + return TRUE; +} + +/* execute 1 end-of-motd command */ + +static int +inbound_exec_eom_cmd (char *str, void *sess) +{ + char *cmd; + + cmd = command_insert_vars ((session*)sess, (str[0] == '/') ? str + 1 : str); + handle_command ((session*)sess, cmd, TRUE); + g_free (cmd); + + return 1; +} + +static int +inbound_nickserv_login (server *serv) +{ + /* this could grow ugly, but let's hope there won't be new NickServ types */ + switch (serv->loginmethod) + { + case LOGIN_MSG_NICKSERV: + case LOGIN_NICKSERV: + case LOGIN_CHALLENGEAUTH: +#if 0 + case LOGIN_NS: + case LOGIN_MSG_NS: + case LOGIN_AUTH: +#endif + return 1; + default: + return 0; + } +} + +void +inbound_login_end (session *sess, char *text, const message_tags_data *tags_data) +{ + GSList *cmdlist; + commandentry *cmd; + server *serv = sess->server; + ircnet *net = serv->network; + + if (!serv->end_of_motd) + { + if (prefs.hex_dcc_ip_from_server && serv->use_who) + { + serv->skip_next_userhost = TRUE; + serv->p_get_ip_uh (serv, serv->nick); /* sends USERHOST mynick */ + } + set_default_modes (serv); + + if (net) + { + /* there may be more than 1, separated by \n */ + + cmdlist = net->commandlist; + while (cmdlist) + { + cmd = cmdlist->data; + inbound_exec_eom_cmd (cmd->command, sess); + cmdlist = cmdlist->next; + } + } + /* The previously ran commands can alter the state of the server */ + if (serv->network != net) + return; + + /* send nickserv password */ + if (net && net->pass && inbound_nickserv_login (serv)) + { + serv->p_ns_identify (serv, net->pass); + } + + /* wait for join if command or nickserv set */ + if (net && prefs.hex_irc_join_delay + && ((net->pass && inbound_nickserv_login (serv)) + || net->commandlist)) + { + serv->joindelay_tag = fe_timeout_add_seconds (prefs.hex_irc_join_delay, check_autojoin_channels, serv); + } + else + { + check_autojoin_channels (serv); + } + + if (serv->supports_watch || serv->supports_monitor) + { + notify_send_watches (serv); + } + + serv->end_of_motd = TRUE; + } + + if (prefs.hex_irc_skip_motd && !serv->motd_skipped) + { + serv->motd_skipped = TRUE; + EMIT_SIGNAL_TIMESTAMP (XP_TE_MOTDSKIP, serv->server_session, NULL, NULL, + NULL, NULL, 0, tags_data->timestamp); + return; + } + + EMIT_SIGNAL_TIMESTAMP (XP_TE_MOTD, serv->server_session, text, NULL, NULL, + NULL, 0, tags_data->timestamp); +} + +void +inbound_identified (server *serv) /* 'MODE +e MYSELF' on freenode */ +{ + if (serv->joindelay_tag) + { + /* stop waiting, just auto JOIN now */ + fe_timeout_remove (serv->joindelay_tag); + serv->joindelay_tag = 0; + check_autojoin_channels (serv); + } +} + +static const char *sasl_mechanisms[] = +{ + "PLAIN", + "EXTERNAL", + "SCRAM-SHA-1", + "SCRAM-SHA-256", + "SCRAM-SHA-512" +}; + +static void +inbound_toggle_caps (server *serv, const char *extensions_str, gboolean enable) +{ + char **extensions; + gsize i; + + extensions = g_strsplit (extensions_str, " ", 0); + + for (i = 0; extensions[i]; i++) + { + const char *extension = extensions[i]; + + if (!strcmp (extension, "solanum.chat/identify-msg")) + serv->have_idmsg = enable; + else if (!strcmp (extension, "multi-prefix")) + serv->have_namesx = enable; + else if (!strcmp (extension, "account-notify")) + serv->have_accnotify = enable; + else if (!strcmp (extension, "extended-join")) + serv->have_extjoin = enable; + else if (!strcmp (extension, "userhost-in-names")) + serv->have_uhnames = enable; + else if (!strcmp (extension, "server-time") + || !strcmp (extension, "znc.in/server-time") + || !strcmp (extension, "znc.in/server-time-iso")) + serv->have_server_time = enable; + else if (!strcmp (extension, "away-notify")) + serv->have_awaynotify = enable; + else if (!strcmp (extension, "account-tag")) + serv->have_account_tag = enable; + else if (!strcmp (extension, "sasl")) + { + serv->have_sasl = enable; + if (enable) + { +#ifdef USE_OPENSSL + if (serv->loginmethod == LOGIN_SASLEXTERNAL) + serv->sasl_mech = MECH_EXTERNAL; + else if (serv->loginmethod == LOGIN_SASL_SCRAM_SHA_1) + serv->sasl_mech = MECH_SCRAM_SHA_1; + else if (serv->loginmethod == LOGIN_SASL_SCRAM_SHA_256) + serv->sasl_mech = MECH_SCRAM_SHA_256; + else if (serv->loginmethod == LOGIN_SASL_SCRAM_SHA_512) + serv->sasl_mech = MECH_SCRAM_SHA_512; +#endif + /* Mechanism either defaulted to PLAIN or server gave us list */ + tcp_sendf (serv, "AUTHENTICATE %s\r\n", sasl_mechanisms[serv->sasl_mech]); + } + } + } + + g_strfreev (extensions); +} + +void +inbound_cap_ack (server *serv, char *nick, char *extensions, + const message_tags_data *tags_data) +{ + EMIT_SIGNAL_TIMESTAMP (XP_TE_CAPACK, serv->server_session, nick, extensions, + NULL, NULL, 0, tags_data->timestamp); + + inbound_toggle_caps (serv, extensions, TRUE); +} + +void +inbound_cap_del (server *serv, char *nick, char *extensions, + const message_tags_data *tags_data) +{ + EMIT_SIGNAL_TIMESTAMP (XP_TE_CAPDEL, serv->server_session, nick, extensions, + NULL, NULL, 0, tags_data->timestamp); + + inbound_toggle_caps (serv, extensions, FALSE); +} + +static const char * const supported_caps[] = { + /* IRCv3.1 */ + "multi-prefix", + "away-notify", + "account-notify", + "extended-join", + /* "sasl", Handled manually */ + + /* IRCv3.2 */ + "server-time", + "userhost-in-names", + "cap-notify", + "chghost", + "setname", + "invite-notify", + "account-tag", + "extended-monitor", + + /* ZNC */ + "znc.in/server-time-iso", + "znc.in/server-time", + + /* Twitch */ + "twitch.tv/membership", + + /* Solanum */ + "solanum.chat/identify-msg", +}; + +static int +get_supported_mech (server *serv, const char *list) +{ + char **mechs = g_strsplit (list, ",", 0); + gsize i; + int ret = -1; + + for (i = 0; mechs[i]; ++i) + { +#ifdef USE_OPENSSL + if (serv->loginmethod == LOGIN_SASLEXTERNAL) + { + if (!strcmp (mechs[i], "EXTERNAL")) + { + ret = MECH_EXTERNAL; + break; + } + } + else if (serv->loginmethod == LOGIN_SASL_SCRAM_SHA_1) + { + if (!strcmp(mechs[i], "SCRAM-SHA-1")) + { + ret = MECH_SCRAM_SHA_1; + break; + } + } + else if (serv->loginmethod == LOGIN_SASL_SCRAM_SHA_256) + { + if (!strcmp(mechs[i], "SCRAM-SHA-256")) + { + ret = MECH_SCRAM_SHA_256; + break; + } + } + else if (serv->loginmethod == LOGIN_SASL_SCRAM_SHA_512) + { + if (!strcmp(mechs[i], "SCRAM-SHA-512")) + { + ret = MECH_SCRAM_SHA_512; + break; + } + } + else +#endif + if (!strcmp (mechs[i], "PLAIN")) + { + ret = MECH_PLAIN; + break; + } + } + + g_strfreev (mechs); + return ret; +} + +void +inbound_cap_ls (server *serv, char *nick, char *extensions_str, + const message_tags_data *tags_data) +{ + char buffer[500]; /* buffer for requesting capabilities and emitting the signal */ + gboolean want_cap = FALSE; /* format the CAP REQ string based on previous capabilities being requested or not */ + char **extensions; + int i; + + if (g_str_has_prefix (extensions_str, "* ")) + { + serv->waiting_on_cap = TRUE; + extensions_str += 2; + extensions_str += extensions_str[0] == ':' ? 1 : 0; + } + else + { + serv->waiting_on_cap = FALSE; + } + + EMIT_SIGNAL_TIMESTAMP (XP_TE_CAPLIST, serv->server_session, nick, + extensions_str, NULL, NULL, 0, tags_data->timestamp); + + extensions = g_strsplit (extensions_str, " ", 0); + + strcpy (buffer, "CAP REQ :"); + + for (i=0; extensions[i]; i++) + { + char *extension = extensions[i]; + char *value; + gsize x; + + /* CAP 3.2 can provide values */ + if ((value = strchr (extension, '='))) + { + *value = '\0'; + value++; + } + + /* if the SASL password is set AND auth mode is set to SASL, request SASL auth */ + if (!g_strcmp0 (extension, "sasl") && + (((serv->loginmethod == LOGIN_SASL + || serv->loginmethod == LOGIN_SASL_SCRAM_SHA_1 + || serv->loginmethod == LOGIN_SASL_SCRAM_SHA_256 + || serv->loginmethod == LOGIN_SASL_SCRAM_SHA_512) + && strlen (serv->password) != 0) + || serv->loginmethod == LOGIN_SASLEXTERNAL)) + { + if (value) + { + int sasl_mech = get_supported_mech (serv, value); + if (sasl_mech == -1) /* No supported mech */ + continue; + serv->sasl_mech = sasl_mech; + } + want_cap = TRUE; + serv->waiting_on_sasl = TRUE; + g_strlcat (buffer, "sasl ", sizeof(buffer)); + continue; + } + + for (x = 0; x < G_N_ELEMENTS(supported_caps); ++x) + { + if (!g_strcmp0 (extension, supported_caps[x])) + { + g_strlcat (buffer, extension, sizeof(buffer)); + g_strlcat (buffer, " ", sizeof(buffer)); + want_cap = TRUE; + } + } + } + + g_strfreev (extensions); + + if (want_cap) + { + /* buffer + 9 = emit buffer without "CAP REQ :" */ + EMIT_SIGNAL_TIMESTAMP (XP_TE_CAPREQ, serv->server_session, + buffer + 9, NULL, NULL, NULL, 0, + tags_data->timestamp); + tcp_sendf (serv, "%s\r\n", g_strchomp (buffer)); + } + if (!serv->waiting_on_sasl && !serv->waiting_on_cap) + { + /* if we use SASL, CAP END is dealt via raw numerics */ + serv->sent_capend = TRUE; + tcp_send_len (serv, "CAP END\r\n", 9); + } +} + +void +inbound_cap_nak (server *serv, char *extensions_str, const message_tags_data *tags_data) +{ + char **extensions; + int i; + + extensions = g_strsplit (extensions_str, " ", 0); + for (i=0; extensions[i]; i++) + { + if (!g_strcmp0 (extensions[i], "sasl")) + serv->waiting_on_sasl = FALSE; + } + + if (!serv->waiting_on_cap && !serv->waiting_on_sasl && !serv->sent_capend) + { + serv->sent_capend = TRUE; + tcp_send_len (serv, "CAP END\r\n", 9); + } + + g_strfreev (extensions); +} + +void +inbound_cap_list (server *serv, char *nick, char *extensions, + const message_tags_data *tags_data) +{ + if (g_str_has_prefix (extensions, "* ")) + { + extensions += 2; + extensions += extensions[0] == ':' ? 1 : 0; + } + EMIT_SIGNAL_TIMESTAMP (XP_TE_CAPACK, serv->server_session, nick, extensions, + NULL, NULL, 0, tags_data->timestamp); +} + +static void +plain_authenticate (server *serv, char *user, char *password) +{ + char *pass = encode_sasl_pass_plain (user, password); + + if (pass == NULL) + { + /* something went wrong abort */ + tcp_sendf (serv, "AUTHENTICATE *\r\n"); + return; + } + + /* long SASL passwords must be split into 400-byte chunks + https://ircv3.net/specs/extensions/sasl-3.1#the-authenticate-command */ + size_t pass_len = strlen (pass); + if (pass_len <= 400) + tcp_sendf (serv, "AUTHENTICATE %s\r\n", pass); + else + { + size_t sent = 0; + while (sent < pass_len) + { + char *pass_chunk = g_strndup (pass + sent, 400); + tcp_sendf (serv, "AUTHENTICATE %s\r\n", pass_chunk); + sent += 400; + g_free (pass_chunk); + } + } + if (pass_len % 400 == 0) + tcp_sendf (serv, "AUTHENTICATE +\r\n"); +} + +#ifdef USE_OPENSSL +/* + * Sends AUTHENTICATE messages to log in via SCRAM. + */ +static void +scram_authenticate (server *serv, const char *data, const char *digest, + const char *user, const char *password) +{ + char *encoded, *decoded, *output; + scram_status status; + size_t output_len; + gsize decoded_len; + + if (serv->scram_session == NULL) + { + serv->scram_session = scram_session_create (digest, user, password); + + if (serv->scram_session == NULL) + { + PrintTextf (serv->server_session, _("Could not create SCRAM session with digest %s"), digest); + g_warning ("Could not create SCRAM session with digest %s", digest); + tcp_sendf (serv, "AUTHENTICATE *\r\n"); + return; + } + } + + decoded = g_base64_decode (data, &decoded_len); + status = scram_process (serv->scram_session, decoded, &output, &output_len); + g_free (decoded); + + if (status == SCRAM_IN_PROGRESS) + { + // Authentication is still in progress + encoded = g_base64_encode ((guchar *) output, output_len); + tcp_sendf (serv, "AUTHENTICATE %s\r\n", encoded); + g_free (encoded); + g_free (output); + } + else if (status == SCRAM_SUCCESS) + { + // Authentication succeeded + tcp_sendf (serv, "AUTHENTICATE +\r\n"); + g_clear_pointer (&serv->scram_session, scram_session_free); + } + else if (status == SCRAM_ERROR) + { + // Authentication failed + tcp_sendf (serv, "AUTHENTICATE *\r\n"); + + if (serv->scram_session->error != NULL) + { + PrintTextf (serv->server_session, _("SASL SCRAM authentication failed: %s"), serv->scram_session->error); + g_info ("SASL SCRAM authentication failed: %s", serv->scram_session->error); + } + + g_clear_pointer (&serv->scram_session, scram_session_free); + } +} +#endif + +void +inbound_sasl_authenticate (server *serv, char *data) +{ + ircnet *net = (ircnet*)serv->network; + char *user; + const char *mech = sasl_mechanisms[serv->sasl_mech]; + + /* Got a list of supported mechanisms from outdated inspircd + * just ignore it as it goes against spec */ + if (strchr (data, ',') != NULL) + return; + + if (net->user && !(net->flags & FLAG_USE_GLOBAL)) + user = net->user; + else + user = prefs.hex_irc_user_name; + + switch (serv->sasl_mech) + { + case MECH_PLAIN: + plain_authenticate(serv, user, serv->password); + break; +#ifdef USE_OPENSSL + case MECH_EXTERNAL: + tcp_sendf (serv, "AUTHENTICATE +\r\n"); + break; + case MECH_SCRAM_SHA_1: + scram_authenticate(serv, data, "SHA1", user, serv->password); + return; + case MECH_SCRAM_SHA_256: + scram_authenticate(serv, data, "SHA256", user, serv->password); + return; + case MECH_SCRAM_SHA_512: + scram_authenticate(serv, data, "SHA512", user, serv->password); + return; +#endif + } + + EMIT_SIGNAL_TIMESTAMP (XP_TE_SASLAUTH, serv->server_session, user, (char*)mech, + NULL, NULL, 0, 0); +} + +void +inbound_sasl_error (server *serv) +{ +#ifdef USE_OPENSSL + g_clear_pointer (&serv->scram_session, scram_session_free); +#endif + /* Just abort, not much we can do */ + tcp_sendf (serv, "AUTHENTICATE *\r\n"); +} diff --git a/hexchat/src/common/inbound.h b/hexchat/src/common/inbound.h new file mode 100644 index 0000000..6e7c171 --- /dev/null +++ b/hexchat/src/common/inbound.h @@ -0,0 +1,107 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "proto-irc.h" + +#ifndef HEXCHAT_INBOUND_H +#define HEXCHAT_INBOUND_H + +void inbound_next_nick (session *sess, char *nick, int error, + const message_tags_data *tags_data); +void inbound_uback (server *serv, const message_tags_data *tags_data); +void inbound_uaway (server *serv, const message_tags_data *tags_data); +void inbound_account (server *serv, char *nick, char *account, + const message_tags_data *tags_data); +void inbound_part (server *serv, char *chan, char *user, char *ip, char *reason, + const message_tags_data *tags_data); +void inbound_upart (server *serv, char *chan, char *ip, char *reason, + const message_tags_data *tags_data); +void inbound_ukick (server *serv, char *chan, char *kicker, char *reason, + const message_tags_data *tags_data); +void inbound_kick (server *serv, char *chan, char *user, char *kicker, + char *reason, const message_tags_data *tags_data); +void inbound_notice (server *serv, char *to, char *nick, char *msg, char *ip, + int id, const message_tags_data *tags_data); +void inbound_quit (server *serv, char *nick, char *ip, char *reason, + const message_tags_data *tags_data); +void inbound_topicnew (server *serv, char *nick, char *chan, char *topic, + const message_tags_data *tags_data); +void inbound_join (server *serv, char *chan, char *user, char *ip, + char *account, char *realname, + const message_tags_data *tags_data); +void inbound_ujoin (server *serv, char *chan, char *nick, char *ip, + const message_tags_data *tags_data); +void inbound_topictime (server *serv, char *chan, char *nick, time_t stamp, + const message_tags_data *tags_data); +void inbound_topic (server *serv, char *chan, char *topic_text, + const message_tags_data *tags_data); +void inbound_user_info_start (session *sess, char *nick, + const message_tags_data *tags_data); +void inbound_user_info (session *sess, char *chan, char *user, char *host, + char *servname, char *nick, char *realname, char *account, + unsigned int away, const message_tags_data *tags_data); +void inbound_foundip (session *sess, char *ip, + const message_tags_data *tags_data); +int inbound_banlist (session *sess, time_t stamp, char *chan, char *mask, + char *banner, int is_exemption, + const message_tags_data *tags_data); +void inbound_ping_reply (session *sess, char *timestring, char *from, + const message_tags_data *tags_data); +void inbound_nameslist (server *serv, char *chan, char *names, + const message_tags_data *tags_data); +int inbound_nameslist_end (server *serv, char *chan, + const message_tags_data *tags_data); +void inbound_away (server *serv, char *nick, char *msg, + const message_tags_data *tags_data); +void inbound_away_notify (server *serv, char *nick, char *reason, + const message_tags_data *tags_data); +void inbound_login_start (session *sess, char *nick, char *servname, + const message_tags_data *tags_data); +void inbound_login_end (session *sess, char *text, + const message_tags_data *tags_data); +void inbound_chanmsg (server *serv, session *sess, char *chan, char *from, + char *text, char fromme, int id, + const message_tags_data *tags_data); +void clear_channel (session *sess); +void set_topic (session *sess, char *topic, char *stripped_topic); +void inbound_privmsg (server *serv, char *from, char *ip, char *text, int id, + const message_tags_data *tags_data); +void inbound_action (session *sess, char *chan, char *from, char *ip, + char *text, int fromme, int id, + const message_tags_data *tags_data); +void inbound_newnick (server *serv, char *nick, char *newnick, int quiet, + const message_tags_data *tags_data); +void inbound_identified (server *serv); +void inbound_cap_ack (server *serv, char *nick, char *extensions, + const message_tags_data *tags_data); +void inbound_cap_ls (server *serv, char *nick, char *extensions, + const message_tags_data *tags_data); +void inbound_cap_nak (server *serv, char *extensions, const message_tags_data *tags_data); +void inbound_cap_list (server *serv, char *nick, char *extensions, + const message_tags_data *tags_data); +void inbound_cap_del (server *serv, char *nick, char *extensions, + const message_tags_data *tags_data); +void inbound_sasl_authenticate (server *serv, char *data); +void inbound_sasl_error (server *serv); +void do_dns (session *sess, char *nick, char *host, + const message_tags_data *tags_data); +gboolean alert_match_word (char *word, char *masks); +gboolean alert_match_text (char *text, char *masks); + +#endif diff --git a/hexchat/src/common/inet.h b/hexchat/src/common/inet.h new file mode 100644 index 0000000..7056d47 --- /dev/null +++ b/hexchat/src/common/inet.h @@ -0,0 +1,67 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +/* include stuff for internet */ + +#ifndef HEXCHAT_INET_H +#define HEXCHAT_INET_H + +#ifndef WIN32 + +#ifdef WANTSOCKET +#include <sys/types.h> +#include <sys/socket.h> +#endif +#ifdef WANTARPA +#include <netinet/in.h> +#include <arpa/inet.h> +#endif +#ifdef WANTDNS +#include <netdb.h> +/* OpenBSD's netdb.h does not define AI_ADDRCONFIG */ +#ifndef AI_ADDRCONFIG +#define AI_ADDRCONFIG 0 +#endif +#endif +#define closesocket close +#define set_blocking(sok) fcntl(sok, F_SETFL, 0) +#define set_nonblocking(sok) fcntl(sok, F_SETFL, O_NONBLOCK) +#define would_block() (errno == EAGAIN || errno == EWOULDBLOCK) +#define sock_error() (errno) + +#else + +#include "config.h" +#include <winsock2.h> +#include <ws2tcpip.h> + +#define set_blocking(sok) { \ + unsigned long zero = 0; \ + ioctlsocket (sok, FIONBIO, &zero); \ + } +#define set_nonblocking(sok) { \ + unsigned long one = 1; \ + ioctlsocket (sok, FIONBIO, &one); \ + } +#define would_block() (WSAGetLastError() == WSAEWOULDBLOCK) +#define sock_error WSAGetLastError + +#endif + +#endif diff --git a/hexchat/src/common/make-te.py b/hexchat/src/common/make-te.py new file mode 100755 index 0000000..a1da564 --- /dev/null +++ b/hexchat/src/common/make-te.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python3 + +import sys + +inf = open(sys.argv[1]) +eventf = open(sys.argv[2], 'w') +enumsf = open(sys.argv[3], 'w') + +enumsf.write(\ +''' +/* this file is auto generated, edit textevents.in instead! */ + +enum +{ +''') + +eventf.write(\ +''' +/* this file is auto generated, edit textevents.in instead! */ + +const struct text_event te[] = { +''') + +try: + while True: + name = inf.readline().strip() + event_enum = inf.readline().strip() + event_help = inf.readline().strip() + event_str = inf.readline().strip() + args = inf.readline().strip() + translate = True + + if args[0] == 'n': + args = int(args[1]) | 128 + translate = False + else: + args = int(args) + + if translate: + event_str = 'N_("%s")' %event_str + else: + event_str = '"%s"' %event_str + + enumsf.write('\t%s,\n' %event_enum) + eventf.write('\n{"%s", %s, %u,\n%s},\n' %( + name, event_help, args, event_str, + )) + + inf.readline() # whitespace +except IndexError: + pass + +enumsf.write('\tNUM_XP\n};\n') +eventf.write('};\n') + diff --git a/hexchat/src/common/marshalers.list b/hexchat/src/common/marshalers.list new file mode 100644 index 0000000..0cafca8 --- /dev/null +++ b/hexchat/src/common/marshalers.list @@ -0,0 +1,8 @@ +# xtext +VOID:OBJECT,OBJECT +VOID:POINTER,POINTER +# sexy-entry +BOOLEAN:STRING +OBJECT:OBJECT,OBJECT +# dbus-plugin & dbus-example +VOID:POINTER,POINTER,UINT,UINT diff --git a/hexchat/src/common/meson.build b/hexchat/src/common/meson.build new file mode 100644 index 0000000..35db2c2 --- /dev/null +++ b/hexchat/src/common/meson.build @@ -0,0 +1,112 @@ +common_sources = [ + 'cfgfiles.c', + 'chanopt.c', + 'ctcp.c', + 'dcc.c', + 'hexchat.c', + 'history.c', + 'ignore.c', + 'inbound.c', + 'modes.c', + 'network.c', + 'notify.c', + 'outbound.c', + 'plugin.c', + 'plugin-identd.c', + 'plugin-timer.c', + 'proto-irc.c', + 'scram.c', + 'server.c', + 'servlist.c', + 'text.c', + 'tree.c', + 'url.c', + 'userlist.c', + 'util.c' +] + +common_sysinfo_deps = [] + +common_deps = [ + libgio_dep, + libcanberra_dep, +] + global_deps + +common_includes = [ + config_h_include, + include_directories('.') +] + +common_cflags = [ + '-DHAVE_CONFIG_H', +] + +if host_machine.system() == 'windows' + common_deps += [ + cc.find_library('ws2_32'), # winsock + cc.find_library('winmm'), # playsound + ] + common_sysinfo_deps += [ + cc.find_library('wbemuuid'), # sysinfo + ] + + common_sources += 'sysinfo/win32/backend.c' + common_includes += include_directories('sysinfo') +endif + +marshal = gnome.genmarshal('marshal', + sources: 'marshalers.list', + prefix: '_hexchat_marshal', + internal: true +) + +make_te = find_program('make-te.py') + +textevents = custom_target('textevents', + input: 'textevents.in', + output: ['textevents.h', 'textenums.h'], + command: [make_te, '@INPUT@', '@OUTPUT0@', '@OUTPUT1@'] +) + +# TODO: +# LOOKUPD +# SIGACTION +# HAVE_GTK_MAC + +if libssl_dep.found() + common_sources += 'ssl.c' + common_deps += libssl_dep +endif + +if dbus_glib_dep.found() + subdir('dbus') + common_deps += hexchat_dbus_dep + common_includes += include_directories('dbus') +endif + +if get_option('plugin') + common_deps += libgmodule_dep + install_headers('hexchat-plugin.h') +endif + +hexchat_common = static_library('hexchatcommon', + sources: [textevents] + marshal + common_sources, + include_directories: config_h_include, + dependencies: common_deps + common_sysinfo_deps, + c_args: common_cflags, + pic: true +) + +hexchat_common_dep = declare_dependency( + sources: [textevents] + marshal, + link_with: hexchat_common, + include_directories: common_includes, + compile_args: common_cflags, + dependencies: libgio_dep, +) + +hexchat_plugin_dep = declare_dependency( + include_directories: common_includes, + compile_args: common_cflags, + dependencies: global_deps, +) diff --git a/hexchat/src/common/modes.c b/hexchat/src/common/modes.c new file mode 100644 index 0000000..1ff309b --- /dev/null +++ b/hexchat/src/common/modes.c @@ -0,0 +1,948 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <string.h> +#include <stdlib.h> +#include <stdio.h> + +#include "hexchat.h" +#include "hexchatc.h" +#include "modes.h" +#include "server.h" +#include "text.h" +#include "fe.h" +#include "util.h" +#include "inbound.h" +#ifdef HAVE_STRINGS_H +#include <strings.h> +#endif + +#include <glib/gprintf.h> + +typedef struct +{ + server *serv; + char *op; + char *deop; + char *voice; + char *devoice; +} mode_run; + +static int is_prefix_char (server * serv, char c); +static void record_chan_mode (session *sess, char sign, char mode, char *arg); +static char *mode_cat (char *str, char *addition); +static void handle_single_mode (mode_run *mr, char sign, char mode, char *nick, + char *chan, char *arg, int quiet, int is_324, + const message_tags_data *tags_data); +static int mode_has_arg (server *serv, char sign, char mode); +static void mode_print_grouped (session *sess, char *nick, mode_run *mr, + const message_tags_data *tags_data); +static int mode_chanmode_type (server * serv, char mode); + + +/* word[] - list of nicks. + wpos - index into word[]. Where nicks really start. + end - index into word[]. Last entry plus one. + sign - a char, e.g. '+' or '-' + mode - a mode, e.g. 'o' or 'v' */ +void +send_channel_modes (session *sess, char *tbuf, char *word[], int wpos, + int end, char sign, char mode, int modes_per_line) +{ + int usable_modes, orig_len, len, wlen, i, max; + server *serv = sess->server; + + /* sanity check. IRC RFC says three per line but some servers may support less. */ + if (serv->modes_per_line < 1) + serv->modes_per_line = 3; + if (modes_per_line < 1) + modes_per_line = serv->modes_per_line; + + /* RFC max, minus length of "MODE %s " and "\r\n" and 1 +/- sign */ + /* 512 - 6 - 2 - 1 - strlen(chan) */ + max = 503 - strlen (sess->channel); + + while (wpos < end) + { + tbuf[0] = '\0'; + orig_len = len = 0; + + /* we'll need this many modechars too */ + len += modes_per_line; + + /* how many can we fit? */ + for (i = 0; i < modes_per_line; i++) + { + /* no more nicks left? */ + if (wpos + i >= end) + break; + wlen = strlen (word[wpos + i]) + 1; + if (wlen + len > max) + break; + len += wlen; /* length of our whole string so far */ + } + if (i < 1) + return; + usable_modes = i; /* this is how many we'll send on this line */ + + /* add the +/-modemodemodemode */ + len = orig_len; + tbuf[len] = sign; + len++; + for (i = 0; i < usable_modes; i++) + { + tbuf[len] = mode; + len++; + } + tbuf[len] = 0; /* null terminate for the strcat() to work */ + + /* add all the nicknames */ + for (i = 0; i < usable_modes; i++) + { + strcat (tbuf, " "); + strcat (tbuf, word[wpos + i]); + } + serv->p_mode (serv, sess->channel, tbuf); + + wpos += usable_modes; + } +} + +/* does 'chan' have a valid prefix? e.g. # or & */ + +int +is_channel (server * serv, char *chan) +{ + if (strchr (serv->chantypes, chan[0])) + return 1; + return 0; +} + +/* is the given char a valid nick mode char? e.g. @ or + */ + +static int +is_prefix_char (server * serv, char c) +{ + int pos = 0; + char *np = serv->nick_prefixes; + + while (np[0]) + { + if (np[0] == c) + return pos; + pos++; + np++; + } + + if (serv->bad_prefix) + { + if (strchr (serv->bad_nick_prefixes, c)) + /* valid prefix char, but mode unknown */ + return -2; + } + + return -1; +} + +/* returns '@' for ops etc... */ + +char +get_nick_prefix (server * serv, unsigned int access) +{ + int pos; + char c; + + for (pos = 0; pos < USERACCESS_SIZE; pos++) + { + c = serv->nick_prefixes[pos]; + if (c == 0) + break; + if (access & (1 << pos)) + return c; + } + + return 0; +} + +/* returns the access bitfield for a nickname. E.g. + @nick would return 000010 in binary + %nick would return 000100 in binary + +nick would return 001000 in binary */ + +unsigned int +nick_access (server * serv, char *nick, int *modechars) +{ + int i; + unsigned int access = 0; + char *orig = nick; + + while (*nick) + { + i = is_prefix_char (serv, *nick); + if (i == -1) + break; + + /* -2 == valid prefix char, but mode unknown */ + if (i != -2) + access |= (1 << i); + + nick++; + } + + *modechars = nick - orig; + + return access; +} + +/* returns the access number for a particular mode. e.g. + mode 'a' returns 0 + mode 'o' returns 1 + mode 'h' returns 2 + mode 'v' returns 3 + Also puts the nick-prefix-char in 'prefix' */ + +int +mode_access (server * serv, char mode, char *prefix) +{ + int pos = 0; + + while (serv->nick_modes[pos]) + { + if (serv->nick_modes[pos] == mode) + { + *prefix = serv->nick_prefixes[pos]; + return pos; + } + pos++; + } + + *prefix = 0; + + return -1; +} + +static void +record_chan_mode (session *sess, char sign, char mode, char *arg) +{ + /* Somebody needed to acutally update sess->current_modes, needed to + play nice with bouncers, and less mode calls. Also keeps modes up + to date for scripts */ + server *serv = sess->server; + GString *current = g_string_new(sess->current_modes); + gint mode_pos = -1; + gchar *current_char = current->str; + gint modes_length; + gint argument_num = 0; + gint argument_offset = 0; + gint argument_length = 0; + int i = 0; + gchar *arguments_start; + + /* find out if the mode currently exists */ + arguments_start = g_strstr_len(current->str , -1, " "); + if (arguments_start) { + modes_length = arguments_start - current->str; + } + else { + modes_length = current->len; + /* set this to the end of the modes */ + arguments_start = current->str + current->len; + } + + while (mode_pos == -1 && i < modes_length) + { + if (*current_char == mode) + { + mode_pos = i; + } + else + { + i++; + current_char++; + } + } + + /* if the mode currently exists and has an arg, need to know where + * (including leading space) */ + if (mode_pos != -1 && mode_has_arg(serv, '+', mode)) + { + current_char = current->str; + + i = 0; + while (i <= mode_pos) + { + if (mode_has_arg(serv, '+', *current_char)) + argument_num++; + current_char++; + i++; + } + + /* check through arguments for where to start */ + current_char = arguments_start; + i = 0; + while (i < argument_num && *current_char != '\0') + { + if (*current_char == ' ') + i++; + if (i != argument_num) + current_char++; + } + argument_offset = current_char - current->str; + + /* how long the existing argument is for this key + * important for malloc and strncpy */ + if (i == argument_num) + { + argument_length++; + current_char++; + while (*current_char != '\0' && *current_char != ' ') + { + argument_length++; + current_char++; + } + } + } + + /* two cases, adding and removing a mode, handled differently */ + if (sign == '+') + { + if (mode_pos != -1) + { + /* if it already exists, only need to do something (change) + * if there should be a param */ + if (mode_has_arg(serv, sign, mode)) + { + /* leave the old space there */ + current = g_string_erase(current, argument_offset+1, argument_length-1); + current = g_string_insert(current, argument_offset+1, arg); + + g_free(sess->current_modes); + sess->current_modes = g_string_free(current, FALSE); + } + } + /* mode wasn't there before */ + else + { + /* insert the new mode character */ + current = g_string_insert_c(current, modes_length, mode); + + /* add the argument, with space if there is one */ + if (mode_has_arg(serv, sign, mode)) + { + current = g_string_append_c(current, ' '); + current = g_string_append(current, arg); + } + + g_free(sess->current_modes); + sess->current_modes = g_string_free(current, FALSE); + } + } + else if (sign == '-' && mode_pos != -1) + { + /* remove the argument first if it has one*/ + if (mode_has_arg(serv, '+', mode)) + current = g_string_erase(current, argument_offset, argument_length); + + /* remove the mode character */ + current = g_string_erase(current, mode_pos, 1); + + g_free(sess->current_modes); + sess->current_modes = g_string_free(current, FALSE); + } +} + +static char * +mode_cat (char *str, char *addition) +{ + int len; + + if (str) + { + len = strlen (str) + strlen (addition) + 2; + str = g_realloc (str, len); + strcat (str, " "); + strcat (str, addition); + } + else + { + str = g_strdup (addition); + } + + return str; +} + +/* handle one mode, e.g. + handle_single_mode (mr,'+','b',"elite","#warez","banneduser",) */ + +static void +handle_single_mode (mode_run *mr, char sign, char mode, char *nick, + char *chan, char *arg, int quiet, int is_324, + const message_tags_data *tags_data) +{ + session *sess; + server *serv = mr->serv; + char outbuf[4]; + char *cm = serv->chanmodes; + gboolean supportsq = FALSE; + + outbuf[0] = sign; + outbuf[1] = 0; + outbuf[2] = mode; + outbuf[3] = 0; + + sess = find_channel (serv, chan); + if (!sess || !is_channel (serv, chan)) + { + /* got modes for a chan we're not in! probably nickmode +isw etc */ + sess = serv->front_session; + goto genmode; + } + + /* is this a nick mode? */ + if (strchr (serv->nick_modes, mode)) + { + /* update the user in the userlist */ + userlist_update_mode (sess, /*nickname */ arg, mode, sign); + } else + { + if (!is_324 && !sess->ignore_mode && mode_chanmode_type(serv, mode) >= 1) + record_chan_mode (sess, sign, mode, arg); + } + + /* Is q a chanmode on this server? */ + if (cm) + while (*cm) + { + if (*cm == ',') + break; + if (*cm == 'q') + supportsq = TRUE; + cm++; + } + + switch (sign) + { + case '+': + switch (mode) + { + case 'k': + safe_strcpy (sess->channelkey, arg, sizeof (sess->channelkey)); + fe_update_channel_key (sess); + fe_update_mode_buttons (sess, mode, sign); + if (!quiet) + EMIT_SIGNAL_TIMESTAMP (XP_TE_CHANSETKEY, sess, nick, arg, NULL, + NULL, 0, tags_data->timestamp); + return; + case 'l': + sess->limit = atoi (arg); + fe_update_channel_limit (sess); + fe_update_mode_buttons (sess, mode, sign); + if (!quiet) + EMIT_SIGNAL_TIMESTAMP (XP_TE_CHANSETLIMIT, sess, nick, arg, NULL, + NULL, 0, tags_data->timestamp); + return; + case 'o': + if (!quiet) + mr->op = mode_cat (mr->op, arg); + return; + case 'h': + if (!quiet) + EMIT_SIGNAL_TIMESTAMP (XP_TE_CHANHOP, sess, nick, arg, NULL, NULL, + 0, tags_data->timestamp); + return; + case 'v': + if (!quiet) + mr->voice = mode_cat (mr->voice, arg); + return; + case 'b': + if (!quiet) + EMIT_SIGNAL_TIMESTAMP (XP_TE_CHANBAN, sess, nick, arg, NULL, NULL, + 0, tags_data->timestamp); + return; + case 'e': + if (!quiet) + EMIT_SIGNAL_TIMESTAMP (XP_TE_CHANEXEMPT, sess, nick, arg, NULL, + NULL, 0, tags_data->timestamp); + return; + case 'I': + if (!quiet) + EMIT_SIGNAL_TIMESTAMP (XP_TE_CHANINVITE, sess, nick, arg, NULL, NULL, + 0, tags_data->timestamp); + return; + case 'q': + if (!supportsq) + break; /* +q is owner on this server */ + if (!quiet) + EMIT_SIGNAL_TIMESTAMP (XP_TE_CHANQUIET, sess, nick, arg, NULL, NULL, 0, + tags_data->timestamp); + return; + } + break; + case '-': + switch (mode) + { + case 'k': + sess->channelkey[0] = 0; + fe_update_channel_key (sess); + fe_update_mode_buttons (sess, mode, sign); + if (!quiet) + EMIT_SIGNAL_TIMESTAMP (XP_TE_CHANRMKEY, sess, nick, NULL, NULL, + NULL, 0, tags_data->timestamp); + return; + case 'l': + sess->limit = 0; + fe_update_channel_limit (sess); + fe_update_mode_buttons (sess, mode, sign); + if (!quiet) + EMIT_SIGNAL_TIMESTAMP (XP_TE_CHANRMLIMIT, sess, nick, NULL, NULL, + NULL, 0, tags_data->timestamp); + return; + case 'o': + if (!quiet) + mr->deop = mode_cat (mr->deop, arg); + return; + case 'h': + if (!quiet) + EMIT_SIGNAL_TIMESTAMP (XP_TE_CHANDEHOP, sess, nick, arg, NULL, + NULL, 0, tags_data->timestamp); + return; + case 'v': + if (!quiet) + mr->devoice = mode_cat (mr->devoice, arg); + return; + case 'b': + if (!quiet) + EMIT_SIGNAL_TIMESTAMP (XP_TE_CHANUNBAN, sess, nick, arg, NULL, NULL, + 0, tags_data->timestamp); + return; + case 'e': + if (!quiet) + EMIT_SIGNAL_TIMESTAMP (XP_TE_CHANRMEXEMPT, sess, nick, arg, NULL, + NULL, 0, tags_data->timestamp); + return; + case 'I': + if (!quiet) + EMIT_SIGNAL_TIMESTAMP (XP_TE_CHANRMINVITE, sess, nick, arg, NULL, + NULL, 0, tags_data->timestamp); + return; + case 'q': + if (!supportsq) + break; /* -q is owner on this server */ + if (!quiet) + EMIT_SIGNAL_TIMESTAMP (XP_TE_CHANUNQUIET, sess, nick, arg, NULL, + NULL, 0, tags_data->timestamp); + return; + } + } + + fe_update_mode_buttons (sess, mode, sign); + + genmode: + /* Received umode +e. If we're waiting to send JOIN then send now! */ + if (mode == 'e' && sign == '+' && !serv->p_cmp (chan, serv->nick)) + inbound_identified (serv); + + if (!quiet) + { + if (*arg) + { + char *buf = g_strdup_printf ("%s %s", chan, arg); + EMIT_SIGNAL_TIMESTAMP (XP_TE_CHANMODEGEN, sess, nick, outbuf, + outbuf + 2, buf, 0, tags_data->timestamp); + g_free (buf); + } + else + EMIT_SIGNAL_TIMESTAMP (XP_TE_CHANMODEGEN, sess, nick, outbuf, + outbuf + 2, chan, 0, tags_data->timestamp); + } +} + +/* does this mode have an arg? like +b +l +o */ + +static int +mode_has_arg (server * serv, char sign, char mode) +{ + int type; + + /* if it's a nickmode, it must have an arg */ + if (strchr (serv->nick_modes, mode)) + return 1; + + type = mode_chanmode_type (serv, mode); + switch (type) + { + case 0: /* type A */ + case 1: /* type B */ + return 1; + case 2: /* type C */ + if (sign == '+') + return 1; + case 3: /* type D */ + return 0; + default: + return 0; + } + +} + +/* what type of chanmode is it? -1 for not in chanmode */ +static int +mode_chanmode_type (server * serv, char mode) +{ + /* see what numeric 005 CHANMODES=xxx said */ + char *cm = serv->chanmodes; + int type = 0; + int found = 0; + + while (*cm && !found) + { + if (*cm == ',') + { + type++; + } else if (*cm == mode) + { + found = 1; + } + cm++; + } + if (found) + return type; + /* not found? -1 */ + else + return -1; +} + +static void +mode_print_grouped (session *sess, char *nick, mode_run *mr, + const message_tags_data *tags_data) +{ + /* print all the grouped Op/Deops */ + if (mr->op) + { + EMIT_SIGNAL_TIMESTAMP (XP_TE_CHANOP, sess, nick, mr->op, NULL, NULL, 0, + tags_data->timestamp); + g_free(mr->op); + mr->op = NULL; + } + + if (mr->deop) + { + EMIT_SIGNAL_TIMESTAMP (XP_TE_CHANDEOP, sess, nick, mr->deop, NULL, NULL, + 0, tags_data->timestamp); + g_free(mr->deop); + mr->deop = NULL; + } + + if (mr->voice) + { + EMIT_SIGNAL_TIMESTAMP (XP_TE_CHANVOICE, sess, nick, mr->voice, NULL, NULL, + 0, tags_data->timestamp); + g_free(mr->voice); + mr->voice = NULL; + } + + if (mr->devoice) + { + EMIT_SIGNAL_TIMESTAMP (XP_TE_CHANDEVOICE, sess, nick, mr->devoice, NULL, + NULL, 0, tags_data->timestamp); + g_free(mr->devoice); + mr->devoice = NULL; + } +} + + +/* handle a MODE or numeric 324 from server */ + +void +handle_mode (server * serv, char *word[], char *word_eol[], + char *nick, int numeric_324, const message_tags_data *tags_data) +{ + session *sess; + char *chan; + char *modes; + char *argstr; + char sign; + int len; + size_t arg; + size_t i, num_args; + size_t num_modes; + size_t offset = 3; + int all_modes_have_args = FALSE; + int using_front_tab = FALSE; + mode_run mr; + + mr.serv = serv; + mr.op = mr.deop = mr.voice = mr.devoice = NULL; + + /* numeric 324 has everything 1 word later (as opposed to MODE) */ + if (numeric_324) + offset++; + + chan = word[offset]; + modes = word[offset + 1]; + if (*modes == ':') + modes++; + + if (*modes == 0) + return; /* beyondirc's blank modes */ + + sess = find_channel (serv, chan); + if (!sess) + { + sess = serv->front_session; + using_front_tab = TRUE; + } + /* remove trailing space */ + len = strlen (word_eol[offset]) - 1; + if (word_eol[offset][len] == ' ') + word_eol[offset][len] = 0; + + if (prefs.hex_irc_raw_modes && !numeric_324) + EMIT_SIGNAL_TIMESTAMP (XP_TE_RAWMODES, sess, nick, word_eol[offset], 0, 0, 0, + tags_data->timestamp); + + if (numeric_324 && !using_front_tab) + { + g_free (sess->current_modes); + sess->current_modes = g_strdup (word_eol[offset+1]); + } + + sign = *modes; + modes++; + arg = 1; + + /* count the number of arguments (e.g. after the -o+v) */ + num_args = 0; + i = 1; + while ((i + offset + 1) < PDIWORDS) + { + i++; + if (!(*word[i + offset])) + break; + num_args++; + if (word[i + offset][0] == ':') + break; + } + + /* count the number of modes (without the -/+ chars */ + num_modes = 0; + i = 0; + while (i < strlen (modes)) + { + if (modes[i] != '+' && modes[i] != '-') + num_modes++; + i++; + } + + if (num_args == num_modes) + all_modes_have_args = TRUE; + + while (*modes) + { + switch (*modes) + { + case '-': + case '+': + /* print all the grouped Op/Deops */ + mode_print_grouped (sess, nick, &mr, tags_data); + sign = *modes; + break; + default: + argstr = ""; + if ((all_modes_have_args || mode_has_arg (serv, sign, *modes)) && arg < (num_args + 1)) + { + arg++; + argstr = STRIP_COLON(word, word_eol, arg+offset); + } + handle_single_mode (&mr, sign, *modes, nick, chan, + argstr, numeric_324 || prefs.hex_irc_raw_modes, + numeric_324, tags_data); + } + + modes++; + } + + /* update the title at the end, now that the mode update is internal now */ + if (!using_front_tab) + fe_set_title (sess); + + /* print all the grouped Op/Deops */ + mode_print_grouped (sess, nick, &mr, tags_data); +} + +static char +hex_to_chr(char chr) +{ + return g_ascii_isdigit (chr) ? chr - '0' : g_ascii_tolower (chr) - 'a' + 10; +} + +static void +parse_005_token (const char *token, char **name, char **value, gboolean *adding) +{ + char *toksplit, *valuecurr; + size_t idx; + + if (token[0] == '-') + { + *adding = FALSE; + token++; + } else + { + *adding = TRUE; + } + + toksplit = strchr (token, '='); + if (toksplit && *toksplit++) + { + /* The token has a value; parse any escape codes. */ + *name = g_strndup (token, toksplit - token - 1); + *value = g_malloc (strlen (toksplit) + 1); + valuecurr = *value; + + while (*toksplit) + { + if (toksplit[0] == '\\') + { + /** If it's a malformed escape then just skip it. */ + if (toksplit[1] == 'x' && g_ascii_isxdigit (toksplit[2]) && g_ascii_isxdigit (toksplit[3])) + *valuecurr++ = hex_to_chr (toksplit[2]) << 4 | hex_to_chr (toksplit[3]); + + for (idx = 0; idx < 4; ++idx) + { + /* We need to do this to avoid jumping past the end of the array. */ + if (*toksplit) + toksplit++; + } + } else + { + /** Non-escape characters can be copied as is. */ + *valuecurr++ = *toksplit++; + } + } + *valuecurr++ = 0; + } else + { + /* The token has no value; store a dummy value instead. */ + *name = g_strdup (token); + *value = g_strdup (""); + } +} + +/* handle the 005 numeric */ + +void +inbound_005 (server * serv, char *word[], const message_tags_data *tags_data) +{ + int w; + char *pre; + char *tokname, *tokvalue; + gboolean tokadding; + + w = 4; /* start at the 4th word */ + while (w < PDIWORDS && *word[w]) + { + if (word[w][0] == ':') + break; // :are supported by this server + + parse_005_token(word[w], &tokname, &tokvalue, &tokadding); + if (g_strcmp0 (tokname, "MODES") == 0) + { + serv->modes_per_line = atoi (tokvalue); + } else if (g_strcmp0 (tokname, "CHANTYPES") == 0) + { + g_free (serv->chantypes); + serv->chantypes = g_strdup (tokvalue); + } else if (g_strcmp0 (tokname, "CHANMODES") == 0) + { + g_free (serv->chanmodes); + serv->chanmodes = g_strdup (tokvalue); + } else if (g_strcmp0 (tokname, "PREFIX") == 0) + { + pre = strchr (tokvalue, ')'); + if (pre) + { + pre[0] = 0; /* NULL out the ')' */ + g_free (serv->nick_prefixes); + g_free (serv->nick_modes); + serv->nick_prefixes = g_strdup (pre + 1); + serv->nick_modes = g_strdup (tokvalue + 1); + } else + { + /* bad! some ircds don't give us the modes. */ + /* in this case, we use it only to strip /NAMES */ + serv->bad_prefix = TRUE; + g_free (serv->bad_nick_prefixes); + serv->bad_nick_prefixes = g_strdup (tokvalue); + } + } else if (g_strcmp0 (tokname, "WATCH") == 0) + { + serv->supports_watch = tokadding; + } else if (g_strcmp0 (tokname, "MONITOR") == 0) + { + serv->supports_monitor = tokadding; + } else if (g_strcmp0 (tokname, "NETWORK") == 0) + { + if (serv->server_session->type == SESS_SERVER && strlen (tokvalue)) + { + safe_strcpy (serv->server_session->channel, tokvalue, CHANLEN); + fe_set_channel (serv->server_session); + } + + } else if (g_strcmp0 (tokname, "CASEMAPPING") == 0) + { + if (g_strcmp0 (tokvalue, "ascii") == 0) + serv->p_cmp = (void *)g_ascii_strcasecmp; + } else if (g_strcmp0 (tokname, "CHARSET") == 0) + { + if (g_ascii_strcasecmp (tokvalue, "UTF-8") == 0) + { + server_set_encoding (serv, "UTF-8"); + } + } else if (g_strcmp0 (tokname, "UTF8ONLY") == 0) + { + server_set_encoding (serv, "UTF-8"); + } else if (g_strcmp0 (tokname, "NAMESX") == 0) + { + if (tokadding && !serv->have_namesx) + { + /* only use protoctl if the server doesn't have the equivalent cap */ + tcp_send_len (serv, "PROTOCTL NAMESX\r\n", 17); + serv->have_namesx = TRUE; + } + } else if (g_strcmp0 (tokname, "WHOX") == 0) + { + serv->have_whox = tokadding; + } else if (g_strcmp0 (tokname, "EXCEPTS") == 0) + { + serv->have_except = tokadding; + } else if (g_strcmp0 (tokname, "INVEX") == 0) + { + /* supports mode letter +I, default channel invite */ + serv->have_invite = tokadding; + } else if (g_strcmp0 (tokname, "ELIST") == 0) + { + /* supports LIST >< min/max user counts? */ + if (strchr (tokvalue, 'U') || strchr (tokvalue, 'u')) + serv->use_listargs = TRUE; + } + + g_free (tokname); + g_free (tokvalue); + w++; + } +} diff --git a/hexchat/src/common/modes.h b/hexchat/src/common/modes.h new file mode 100644 index 0000000..7e13c7d --- /dev/null +++ b/hexchat/src/common/modes.h @@ -0,0 +1,34 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "proto-irc.h" + +#ifndef HEXCHAT_MODES_H +#define HEXCHAT_MODES_H + +int is_channel (server *serv, char *chan); +char get_nick_prefix (server *serv, unsigned int access); +unsigned int nick_access (server *serv, char *nick, int *modechars); +int mode_access (server *serv, char mode, char *prefix); +void inbound_005 (server *serv, char *word[], const message_tags_data *tags_data); +void handle_mode (server *serv, char *word[], char *word_eol[], char *nick, + int numeric_324, const message_tags_data *tags_data); +void send_channel_modes (session *sess, char *tbuf, char *word[], int start, int end, char sign, char mode, int modes_per_line); + +#endif diff --git a/hexchat/src/common/network.c b/hexchat/src/common/network.c new file mode 100644 index 0000000..fcdaf54 --- /dev/null +++ b/hexchat/src/common/network.c @@ -0,0 +1,190 @@ +/* X-Chat + * Copyright (C) 2001 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +/* ipv4 and ipv6 networking functions with a common interface */ + +#include "config.h" + +#include <stdlib.h> +#include <string.h> +#include <stdio.h> +#include <glib.h> + +#ifndef WIN32 +#include <unistd.h> +#endif + +#define WANTSOCKET +#define WANTARPA +#define WANTDNS +#include "inet.h" + +#define NETWORK_PRIVATE +#include "network.h" + +#define RAND_INT(n) ((int)(rand() / (RAND_MAX + 1.0) * (n))) + + +/* ================== COMMON ================= */ + +static void +net_set_socket_options (int sok) +{ + socklen_t sw; + + sw = 1; + setsockopt (sok, SOL_SOCKET, SO_REUSEADDR, (char *) &sw, sizeof (sw)); + sw = 1; + setsockopt (sok, SOL_SOCKET, SO_KEEPALIVE, (char *) &sw, sizeof (sw)); +} + +char * +net_ip (guint32 addr) +{ + struct in_addr ia; + + ia.s_addr = htonl (addr); + return inet_ntoa (ia); +} + +void +net_store_destroy (netstore * ns) +{ + if (ns->ip6_hostent) + freeaddrinfo (ns->ip6_hostent); + g_free (ns); +} + +netstore * +net_store_new (void) +{ + return g_new0 (netstore, 1); +} + +/* =================== IPV6 ================== */ + +char * +net_resolve (netstore * ns, char *hostname, int port, char **real_host) +{ + struct addrinfo hints; + char ipstring[MAX_HOSTNAME]; + char portstring[MAX_HOSTNAME]; + int ret; + +/* if (ns->ip6_hostent) + freeaddrinfo (ns->ip6_hostent);*/ + + sprintf (portstring, "%d", port); + + memset (&hints, 0, sizeof (struct addrinfo)); + hints.ai_family = PF_UNSPEC; /* support ipv6 and ipv4 */ + hints.ai_flags = AI_CANONNAME | AI_ADDRCONFIG; + hints.ai_socktype = SOCK_STREAM; + + if (port == 0) + ret = getaddrinfo (hostname, NULL, &hints, &ns->ip6_hostent); + else + ret = getaddrinfo (hostname, portstring, &hints, &ns->ip6_hostent); + if (ret != 0) + return NULL; + +#ifdef LOOKUPD /* See note about lookupd above the IPv4 version of net_resolve. */ + struct addrinfo *tmp; + int count = 0; + + for (tmp = ns->ip6_hostent; tmp; tmp = tmp->ai_next) + count ++; + + count = RAND_INT(count); + + while (count--) ns->ip6_hostent = ns->ip6_hostent->ai_next; +#endif + + /* find the numeric IP number */ + ipstring[0] = 0; + getnameinfo (ns->ip6_hostent->ai_addr, ns->ip6_hostent->ai_addrlen, + ipstring, sizeof (ipstring), NULL, 0, NI_NUMERICHOST); + + if (ns->ip6_hostent->ai_canonname) + *real_host = g_strdup (ns->ip6_hostent->ai_canonname); + else + *real_host = g_strdup (hostname); + + return g_strdup (ipstring); +} + +/* the only thing making this interface unclean, this shitty sok4, sok6 business */ + +int +net_connect (netstore * ns, int sok4, int sok6, int *sok_return) +{ + struct addrinfo *res, *res0; + int error = -1; + + res0 = ns->ip6_hostent; + + for (res = res0; res; res = res->ai_next) + { +/* sok = socket (res->ai_family, res->ai_socktype, res->ai_protocol); + if (sok < 0) + continue;*/ + switch (res->ai_family) + { + case AF_INET: + error = connect (sok4, res->ai_addr, res->ai_addrlen); + *sok_return = sok4; + break; + case AF_INET6: + error = connect (sok6, res->ai_addr, res->ai_addrlen); + *sok_return = sok6; + break; + default: + error = 1; + } + + if (error == 0) + break; + } + + return error; +} + +void +net_bind (netstore * tobindto, int sok4, int sok6) +{ + bind (sok4, tobindto->ip6_hostent->ai_addr, + tobindto->ip6_hostent->ai_addrlen); + bind (sok6, tobindto->ip6_hostent->ai_addr, + tobindto->ip6_hostent->ai_addrlen); +} + +void +net_sockets (int *sok4, int *sok6) +{ + *sok4 = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP); + *sok6 = socket (AF_INET6, SOCK_STREAM, IPPROTO_TCP); + net_set_socket_options (*sok4); + net_set_socket_options (*sok6); +} + +void +udp_sockets (int *sok4, int *sok6) +{ + *sok4 = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP); + *sok6 = socket (AF_INET6, SOCK_DGRAM, IPPROTO_UDP); +} diff --git a/hexchat/src/common/network.h b/hexchat/src/common/network.h new file mode 100644 index 0000000..8c1c0c7 --- /dev/null +++ b/hexchat/src/common/network.h @@ -0,0 +1,42 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_NETWORK_H +#define HEXCHAT_NETWORK_H + +typedef struct netstore_ +{ +#ifdef NETWORK_PRIVATE + struct addrinfo *ip6_hostent; +#else + int _dummy; /* some compilers don't like empty structs */ +#endif +} netstore; + +#define MAX_HOSTNAME 128 + +netstore *net_store_new (void); +void net_store_destroy (netstore *ns); +int net_connect (netstore *ns, int sok4, int sok6, int *sok_return); +char *net_resolve (netstore *ns, char *hostname, int port, char **real_host); +void net_bind (netstore *tobindto, int sok4, int sok6); +char *net_ip (guint32 addr); +void net_sockets (int *sok4, int *sok6); + +#endif diff --git a/hexchat/src/common/notify.c b/hexchat/src/common/notify.c new file mode 100644 index 0000000..ef52889 --- /dev/null +++ b/hexchat/src/common/notify.c @@ -0,0 +1,717 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <time.h> + +#ifdef WIN32 +#include <io.h> +#else +#include <unistd.h> +#endif + +#include "hexchat.h" +#include "notify.h" +#include "cfgfiles.h" +#include "fe.h" +#include "server.h" +#include "text.h" +#include "util.h" +#include "hexchatc.h" + + +GSList *notify_list = 0; +int notify_tag = 0; + + +static char * +despacify_dup (char *str) +{ + char *p, *res = g_malloc (strlen (str) + 1); + + p = res; + while (1) + { + if (*str != ' ') + { + *p = *str; + if (*p == 0) + return res; + p++; + } + str++; + } +} + +static int +notify_netcmp (char *str, void *serv) +{ + char *net = despacify_dup (server_get_network (serv, TRUE)); + + if (rfc_casecmp (str, net) == 0) + { + g_free (net); + return 0; /* finish & return FALSE from token_foreach() */ + } + + g_free (net); + return 1; /* keep going... */ +} + +/* monitor this nick on this particular network? */ + +static gboolean +notify_do_network (struct notify *notify, server *serv) +{ + if (!notify->networks) /* ALL networks for this nick */ + return TRUE; + + if (token_foreach (notify->networks, ',', notify_netcmp, serv)) + return FALSE; /* network list doesn't contain this one */ + + return TRUE; +} + +struct notify_per_server * +notify_find_server_entry (struct notify *notify, struct server *serv) +{ + GSList *list = notify->server_list; + struct notify_per_server *servnot; + + while (list) + { + servnot = (struct notify_per_server *) list->data; + if (servnot->server == serv) + return servnot; + list = list->next; + } + + /* not found, should we add it, or is this not a network where + we're monitoring this nick? */ + if (!notify_do_network (notify, serv)) + return NULL; + + servnot = g_new0 (struct notify_per_server, 1); + servnot->server = serv; + servnot->notify = notify; + notify->server_list = g_slist_prepend (notify->server_list, servnot); + return servnot; +} + +void +notify_save (void) +{ + int fh; + struct notify *notify; + // while reading the notify.conf file, elements are added by prepending to the + // list. reverse the list before writing to disk to keep the original + // order of the list + GSList *list = g_slist_copy(notify_list); + list = g_slist_reverse(list); + + fh = hexchat_open_file ("notify.conf", O_TRUNC | O_WRONLY | O_CREAT, 0600, XOF_DOMODE); + if (fh != -1) + { + while (list) + { + notify = (struct notify *) list->data; + write (fh, notify->name, strlen (notify->name)); + if (notify->networks) + { + write (fh, " ", 1); + write (fh, notify->networks, strlen (notify->networks)); + } + write (fh, "\n", 1); + list = list->next; + } + close (fh); + } + g_slist_free(list); +} + +void +notify_load (void) +{ + int fh; + char buf[256]; + char *sep; + + fh = hexchat_open_file ("notify.conf", O_RDONLY, 0, 0); + if (fh != -1) + { + while (waitline (fh, buf, sizeof buf, FALSE) != -1) + { + if (buf[0] != '#' && buf[0] != 0) + { + sep = strchr (buf, ' '); + if (sep) + { + sep[0] = 0; + notify_adduser (buf, sep + 1); + } + else + notify_adduser (buf, NULL); + } + } + close (fh); + } +} + +static struct notify_per_server * +notify_find (server *serv, char *nick) +{ + GSList *list = notify_list; + struct notify_per_server *servnot; + struct notify *notify; + + while (list) + { + notify = (struct notify *) list->data; + + servnot = notify_find_server_entry (notify, serv); + if (!servnot) + { + list = list->next; + continue; + } + + if (!serv->p_cmp (notify->name, nick)) + return servnot; + + list = list->next; + } + + return NULL; +} + +static void +notify_announce_offline (server * serv, struct notify_per_server *servnot, + char *nick, int quiet, + const message_tags_data *tags_data) +{ + session *sess; + + sess = serv->front_session; + + servnot->ison = FALSE; + servnot->lastoff = time (0); + if (!quiet) + EMIT_SIGNAL_TIMESTAMP (XP_TE_NOTIFYOFFLINE, sess, nick, serv->servername, + server_get_network (serv, TRUE), NULL, 0, + tags_data->timestamp); + fe_notify_update (nick); + fe_notify_update (0); +} + +static void +notify_announce_online (server * serv, struct notify_per_server *servnot, + char *nick, const message_tags_data *tags_data) +{ + session *sess; + + sess = serv->front_session; + + servnot->lastseen = time (0); + if (servnot->ison) + return; + + servnot->ison = TRUE; + servnot->laston = time (0); + EMIT_SIGNAL_TIMESTAMP (XP_TE_NOTIFYONLINE, sess, nick, serv->servername, + server_get_network (serv, TRUE), NULL, 0, + tags_data->timestamp); + fe_notify_update (nick); + fe_notify_update (0); + + if (prefs.hex_notify_whois_online) + { + + /* Let's do whois with idle time (like in /quote WHOIS %s %s) */ + + char *wii_str = g_strdup_printf ("%s %s", nick, nick); + serv->p_whois (serv, wii_str); + g_free (wii_str); + } +} + +/* handles numeric 601 */ + +void +notify_set_offline (server * serv, char *nick, int quiet, + const message_tags_data *tags_data) +{ + struct notify_per_server *servnot; + + servnot = notify_find (serv, nick); + if (!servnot) + return; + + notify_announce_offline (serv, servnot, nick, quiet, tags_data); +} + +/* handles numeric 604 and 600 */ + +void +notify_set_online (server * serv, char *nick, + const message_tags_data *tags_data) +{ + struct notify_per_server *servnot; + + servnot = notify_find (serv, nick); + if (!servnot) + return; + + notify_announce_online (serv, servnot, nick, tags_data); +} + +/* monitor can send lists for numeric 730/731 */ + +void +notify_set_offline_list (server * serv, char *users, int quiet, + const message_tags_data *tags_data) +{ + struct notify_per_server *servnot; + char nick[NICKLEN]; + char *token, *chr; + + token = strtok (users, ","); + while (token != NULL) + { + chr = strchr (token, '!'); + if (chr != NULL) + *chr = '\0'; + + g_strlcpy (nick, token, sizeof(nick)); + + servnot = notify_find (serv, nick); + if (servnot) + notify_announce_offline (serv, servnot, nick, quiet, tags_data); + + token = strtok (NULL, ","); + } +} + +void +notify_set_online_list (server * serv, char *users, + const message_tags_data *tags_data) +{ + struct notify_per_server *servnot; + char nick[NICKLEN]; + char *token, *chr; + + token = strtok (users, ","); + while (token != NULL) + { + chr = strchr (token, '!'); + if (chr != NULL) + *chr = '\0'; + + g_strlcpy (nick, token, sizeof(nick)); + + servnot = notify_find (serv, nick); + if (servnot) + notify_announce_online (serv, servnot, nick, tags_data); + + token = strtok (NULL, ","); + } +} + +static void +notify_watch (server * serv, char *nick, int add) +{ + char tbuf[256]; + char addchar = '+'; + + if (!add) + addchar = '-'; + + if (serv->supports_monitor) + g_snprintf (tbuf, sizeof (tbuf), "MONITOR %c %s", addchar, nick); + else if (serv->supports_watch) + g_snprintf (tbuf, sizeof (tbuf), "WATCH %c%s", addchar, nick); + else + return; + + serv->p_raw (serv, tbuf); +} + +static void +notify_watch_all (struct notify *notify, int add) +{ + server *serv; + GSList *list = serv_list; + while (list) + { + serv = list->data; + if (serv->connected && serv->end_of_motd && notify_do_network (notify, serv)) + notify_watch (serv, notify->name, add); + list = list->next; + } +} + +static void +notify_flush_watches (server * serv, GSList *from, GSList *end) +{ + char tbuf[512]; + GSList *list; + struct notify *notify; + + serv->supports_monitor ? strcpy (tbuf, "MONITOR + ") : strcpy (tbuf, "WATCH"); + + list = from; + while (list != end) + { + notify = list->data; + if (serv->supports_monitor) + g_strlcat (tbuf, ",", sizeof(tbuf)); + else + g_strlcat (tbuf, " +", sizeof(tbuf)); + g_strlcat (tbuf, notify->name, sizeof(tbuf)); + list = list->next; + } + serv->p_raw (serv, tbuf); +} + +/* called when logging in. e.g. when End of motd. */ + +void +notify_send_watches (server * serv) +{ + struct notify *notify; + const int format_len = serv->supports_monitor ? 1 : 2; /* just , for monitor or + and space for watch */ + GSList *list; + GSList *point; + GSList *send_list = NULL; + int len = 0; + + /* Only get the list for this network */ + list = notify_list; + while (list) + { + notify = list->data; + + if (notify_do_network (notify, serv)) + { + send_list = g_slist_append (send_list, notify); + } + + list = list->next; + } + + /* Now send that list in batches */ + point = list = send_list; + while (list) + { + notify = list->data; + + len += strlen (notify->name) + format_len; + if (len > 500) + { + /* Too long send existing list */ + notify_flush_watches (serv, point, list); + len = strlen (notify->name) + format_len; + point = list; /* We left off here */ + } + + list = g_slist_next (list); + } + + if (len) /* We had leftovers under 500, send them all */ + { + notify_flush_watches (serv, point, NULL); + } + + g_slist_free (send_list); +} + +/* called when receiving a ISON 303 - should this func go? */ + +void +notify_markonline (server *serv, char *word[], const message_tags_data *tags_data) +{ + struct notify *notify; + struct notify_per_server *servnot; + GSList *list = notify_list; + int i, seen; + + while (list) + { + notify = (struct notify *) list->data; + servnot = notify_find_server_entry (notify, serv); + if (!servnot) + { + list = list->next; + continue; + } + i = 4; + seen = FALSE; + while (*word[i]) + { + if (!serv->p_cmp (notify->name, word[i])) + { + seen = TRUE; + notify_announce_online (serv, servnot, notify->name, tags_data); + break; + } + i++; + /* FIXME: word[] is only a 32 element array, limits notify list to + about 27 people */ + if (i > PDIWORDS - 5) + { + /*fprintf (stderr, _("*** HEXCHAT WARNING: notify list too large.\n"));*/ + break; + } + } + if (!seen && servnot->ison) + { + notify_announce_offline (serv, servnot, notify->name, FALSE, tags_data); + } + list = list->next; + } + fe_notify_update (0); +} + +/* yuck! Old routine for ISON notify */ + +static void +notify_checklist_for_server (server *serv) +{ + char outbuf[512]; + struct notify *notify; + GSList *list = notify_list; + int i = 0; + + strcpy (outbuf, "ISON "); + while (list) + { + notify = list->data; + if (notify_do_network (notify, serv)) + { + i++; + strcat (outbuf, notify->name); + strcat (outbuf, " "); + if (strlen (outbuf) > 460) + { + /* LAME: we can't send more than 512 bytes to the server, but * + * if we split it in two packets, our offline detection wouldn't * + work */ + /*fprintf (stderr, _("*** HEXCHAT WARNING: notify list too large.\n"));*/ + break; + } + } + list = list->next; + } + + if (i) + serv->p_raw (serv, outbuf); +} + +int +notify_checklist (void) /* check ISON list */ +{ + struct server *serv; + GSList *list = serv_list; + + while (list) + { + serv = list->data; + if (serv->connected && serv->end_of_motd && !serv->supports_watch && !serv->supports_monitor) + { + notify_checklist_for_server (serv); + } + list = list->next; + } + return 1; +} + +void +notify_showlist (struct session *sess, const message_tags_data *tags_data) +{ + char outbuf[256]; + struct notify *notify; + GSList *list = notify_list; + struct notify_per_server *servnot; + int i = 0; + + EMIT_SIGNAL_TIMESTAMP (XP_TE_NOTIFYHEAD, sess, NULL, NULL, NULL, NULL, 0, + tags_data->timestamp); + while (list) + { + i++; + notify = (struct notify *) list->data; + servnot = notify_find_server_entry (notify, sess->server); + if (servnot && servnot->ison) + g_snprintf (outbuf, sizeof (outbuf), _(" %-20s online\n"), notify->name); + else + g_snprintf (outbuf, sizeof (outbuf), _(" %-20s offline\n"), notify->name); + PrintTextTimeStamp (sess, outbuf, tags_data->timestamp); + list = list->next; + } + if (i) + { + sprintf (outbuf, "%d", i); + EMIT_SIGNAL_TIMESTAMP (XP_TE_NOTIFYNUMBER, sess, outbuf, NULL, NULL, NULL, + 0, tags_data->timestamp); + } else + EMIT_SIGNAL_TIMESTAMP (XP_TE_NOTIFYEMPTY, sess, NULL, NULL, NULL, NULL, 0, + tags_data->timestamp); +} + +int +notify_deluser (char *name) +{ + struct notify *notify; + struct notify_per_server *servnot; + GSList *list = notify_list; + + while (list) + { + notify = (struct notify *) list->data; + if (!rfc_casecmp (notify->name, name)) + { + fe_notify_update (notify->name); + /* Remove the records for each server */ + while (notify->server_list) + { + servnot = (struct notify_per_server *) notify->server_list->data; + notify->server_list = + g_slist_remove (notify->server_list, servnot); + g_free (servnot); + } + notify_list = g_slist_remove (notify_list, notify); + notify_watch_all (notify, FALSE); + g_free (notify->networks); + g_free (notify->name); + g_free (notify); + fe_notify_update (0); + return 1; + } + list = list->next; + } + return 0; +} + +void +notify_adduser (char *name, char *networks) +{ + struct notify *notify = g_new0 (struct notify, 1); + + notify->name = g_strndup (name, NICKLEN - 1); + + if (networks != NULL) + notify->networks = despacify_dup (networks); + notify->server_list = 0; + notify_list = g_slist_prepend (notify_list, notify); + notify_checklist (); + fe_notify_update (notify->name); + fe_notify_update (0); + notify_watch_all (notify, TRUE); +} + +gboolean +notify_is_in_list (server *serv, char *name) +{ + struct notify *notify; + GSList *list = notify_list; + + while (list) + { + notify = (struct notify *) list->data; + if (!serv->p_cmp (notify->name, name)) + return TRUE; + list = list->next; + } + + return FALSE; +} + +int +notify_isnotify (struct session *sess, char *name) +{ + struct notify *notify; + struct notify_per_server *servnot; + GSList *list = notify_list; + + while (list) + { + notify = (struct notify *) list->data; + if (!sess->server->p_cmp (notify->name, name)) + { + servnot = notify_find_server_entry (notify, sess->server); + if (servnot && servnot->ison) + return TRUE; + } + list = list->next; + } + + return FALSE; +} + +void +notify_cleanup () +{ + GSList *list = notify_list; + GSList *nslist, *srvlist; + struct notify *notify; + struct notify_per_server *servnot; + struct server *serv; + int valid; + + while (list) + { + /* Traverse the list of notify structures */ + notify = (struct notify *) list->data; + nslist = notify->server_list; + while (nslist) + { + /* Look at each per-server structure */ + servnot = (struct notify_per_server *) nslist->data; + + /* Check the server is valid */ + valid = FALSE; + srvlist = serv_list; + while (srvlist) + { + serv = (struct server *) srvlist->data; + if (servnot->server == serv) + { + valid = serv->connected; /* Only valid if server is too */ + break; + } + srvlist = srvlist->next; + } + if (!valid) + { + notify->server_list = + g_slist_remove (notify->server_list, servnot); + g_free (servnot); + nslist = notify->server_list; + } else + { + nslist = nslist->next; + } + } + list = list->next; + } + fe_notify_update (0); +} diff --git a/hexchat/src/common/notify.h b/hexchat/src/common/notify.h new file mode 100644 index 0000000..5bf4341 --- /dev/null +++ b/hexchat/src/common/notify.h @@ -0,0 +1,73 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "proto-irc.h" + +#ifndef HEXCHAT_NOTIFY_H +#define HEXCHAT_NOTIFY_H + +struct notify +{ + char *name; + char *networks; /* network names, comma sep */ + GSList *server_list; +}; + +struct notify_per_server +{ + struct server *server; + struct notify *notify; + time_t laston; + time_t lastseen; + time_t lastoff; + unsigned int ison:1; +}; + +extern GSList *notify_list; +extern int notify_tag; + +/* the WATCH stuff */ +void notify_set_online (server * serv, char *nick, + const message_tags_data *tags_data); +void notify_set_offline (server * serv, char *nick, int quiet, + const message_tags_data *tags_data); +/* the MONITOR stuff */ +void notify_set_online_list (server * serv, char *users, + const message_tags_data *tags_data); +void notify_set_offline_list (server * serv, char *users, int quiet, + const message_tags_data *tags_data); +void notify_send_watches (server * serv); + +/* the general stuff */ +void notify_adduser (char *name, char *networks); +int notify_deluser (char *name); +void notify_cleanup (void); +void notify_load (void); +void notify_save (void); +void notify_showlist (session *sess, const message_tags_data *tags_data); +gboolean notify_is_in_list (server *serv, char *name); +int notify_isnotify (session *sess, char *name); +struct notify_per_server *notify_find_server_entry (struct notify *notify, struct server *serv); + +/* the old ISON stuff - remove me? */ +void notify_markonline (server *serv, char *word[], + const message_tags_data *tags_data); +int notify_checklist (void); + +#endif diff --git a/hexchat/src/common/outbound.c b/hexchat/src/common/outbound.c new file mode 100644 index 0000000..b815350 --- /dev/null +++ b/hexchat/src/common/outbound.c @@ -0,0 +1,4983 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#define _GNU_SOURCE /* for memrchr */ +#include <string.h> +#include <stdlib.h> +#include <stdio.h> +#include <ctype.h> +#include <limits.h> +#include <errno.h> + +#define WANTSOCKET +#define WANTARPA +#include "inet.h" + +#ifndef WIN32 +#include <sys/wait.h> +#include <unistd.h> +#endif + +#include <time.h> +#include <signal.h> +#include <sys/stat.h> +#include <fcntl.h> + +#include "hexchat.h" +#include "plugin.h" +#include "ignore.h" +#include "util.h" +#include "fe.h" +#include "cfgfiles.h" /* hexchat_fopen_file() */ +#include "network.h" /* net_ip() */ +#include "modes.h" +#include "notify.h" +#include "inbound.h" +#include "text.h" +#include "hexchatc.h" +#include "servlist.h" +#include "server.h" +#include "tree.h" +#include "outbound.h" +#include "chanopt.h" + +#define TBUFSIZE 4096 + +static void help (session *sess, char *tbuf, char *helpcmd, int quiet); +static int cmd_server (session *sess, char *tbuf, char *word[], char *word_eol[]); +static void handle_say (session *sess, char *text, int check_spch); + + +static void +notj_msg (struct session *sess) +{ + PrintText (sess, _("No channel joined. Try /join #<channel>\n")); +} + +void +notc_msg (struct session *sess) +{ + PrintText (sess, _("Not connected. Try /server <host> [<port>]\n")); +} + +static char * +random_line (char *file_name) +{ + FILE *fh; + char buf[512]; + int lines, ran; + + if (!file_name[0]) + goto nofile; + + fh = hexchat_fopen_file (file_name, "r", 0); + if (!fh) + { + nofile: + /* reason is not a file, an actual reason! */ + return g_strdup (file_name); + } + + /* count number of lines in file */ + lines = 0; + while (fgets (buf, sizeof (buf), fh)) + lines++; + + if (lines < 1) + goto nofile; + + /* go down a random number */ + rewind (fh); + ran = RAND_INT (lines); + do + { + fgets (buf, sizeof (buf), fh); + lines--; + } + while (lines > ran); + fclose (fh); + return g_strdup (buf); +} + +void +server_sendpart (server * serv, char *channel, char *reason) +{ + if (!reason) + { + reason = random_line (prefs.hex_irc_part_reason); + serv->p_part (serv, channel, reason); + g_free (reason); + } else + { + /* reason set by /quit, /close argument */ + serv->p_part (serv, channel, reason); + } +} + +void +server_sendquit (session * sess) +{ + char *rea, *colrea; + + if (!sess->quitreason) + { + colrea = g_strdup (prefs.hex_irc_quit_reason); + check_special_chars (colrea, FALSE); + rea = random_line (colrea); + g_free (colrea); + sess->server->p_quit (sess->server, rea); + g_free (rea); + } else + { + /* reason set by /quit, /close argument */ + sess->server->p_quit (sess->server, sess->quitreason); + } +} + +void +process_data_init (char *buf, char *cmd, char *word[], + char *word_eol[], gboolean handle_quotes, + gboolean allow_escape_quotes) +{ + int wordcount = 2; + int space = FALSE; + int quote = FALSE; + int j = 0; + int len; + + word[0] = "\000\000"; + word_eol[0] = "\000\000"; + word[1] = buf; + word_eol[1] = cmd; + + while (1) + { + switch (*cmd) + { + case 0: + buf[j] = 0; + for (j = wordcount; j < PDIWORDS; j++) + { + word[j] = "\000\000"; + word_eol[j] = "\000\000"; + } + return; + case '\042': + if (!handle_quotes) + goto def; + /* two quotes turn into 1 */ + if (allow_escape_quotes && cmd[1] == '\042') + { + cmd++; + goto def; + } + if (quote) + { + quote = FALSE; + space = FALSE; + } else + quote = TRUE; + cmd++; + break; + case ' ': + if (!quote) + { + if (!space) + { + buf[j] = 0; + j++; + + if (wordcount < PDIWORDS) + { + word[wordcount] = &buf[j]; + word_eol[wordcount] = cmd + 1; + wordcount++; + } + + space = TRUE; + } + cmd++; + break; + } + default: +def: + space = FALSE; + len = g_utf8_skip[((unsigned char *)cmd)[0]]; + if (len == 1) + { + buf[j] = *cmd; + j++; + cmd++; + } else + { + /* skip past a multi-byte utf8 char */ + memcpy (buf + j, cmd, len); + j += len; + cmd += len; + } + } + } +} + +static int +cmd_addbutton (struct session *sess, char *tbuf, char *word[], + char *word_eol[]) +{ + if (*word[2] && *word_eol[3]) + { + if (sess->type == SESS_DIALOG) + { + list_addentry (&dlgbutton_list, word_eol[3], word[2]); + fe_dlgbuttons_update (sess); + } else + { + list_addentry (&button_list, word_eol[3], word[2]); + fe_buttons_update (sess); + } + return TRUE; + } + return FALSE; +} + +/* ADDSERVER <networkname> <serveraddress>, add a new network and server to the network list */ +static int +cmd_addserver (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + ircnet *network; + + /* do we have enough arguments given? */ + if (*word[2] && *word_eol[3]) + { + network = servlist_net_find (word[2], NULL, strcmp); + + /* if the given network doesn't exist yet, add it */ + if (!network) + { + network = servlist_net_add (word[2], "", TRUE); + network->encoding = g_strdup (IRC_DEFAULT_CHARSET); + } + /* if we had the network already, check if the given server already exists */ + else if (servlist_server_find (network, word_eol[3], NULL)) + { + PrintTextf (sess, _("Server %s already exists on network %s.\n"), word_eol[3], word[2]); + return TRUE; /* unsuccessful, but the syntax was correct so we don't want to show the help */ + } + + /* server added to new or existing network, doesn't make any difference */ + servlist_server_add (network, word_eol[3]); + PrintTextf (sess, _("Added server %s to network %s.\n"), word_eol[3], word[2]); + return TRUE; /* success */ + } + else + { + return FALSE; /* print help */ + } +} + +static int +cmd_allchannels (session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + GSList *list = sess_list; + + if (!*word_eol[2]) + return FALSE; + + while (list) + { + sess = list->data; + if (sess->type == SESS_CHANNEL && sess->channel[0] && sess->server->connected) + { + handle_command (sess, word_eol[2], FALSE); + } + list = list->next; + } + + return TRUE; +} + +static int +cmd_allchannelslocal (session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + GSList *list = sess_list; + server *serv = sess->server; + + if (!*word_eol[2]) + return FALSE; + + while (list) + { + sess = list->data; + if (sess->type == SESS_CHANNEL && sess->channel[0] && + sess->server->connected && sess->server == serv) + { + handle_command (sess, word_eol[2], FALSE); + } + list = list->next; + } + + return TRUE; +} + +static int +cmd_allservers (struct session *sess, char *tbuf, char *word[], + char *word_eol[]) +{ + GSList *list; + server *serv; + + if (!*word_eol[2]) + return FALSE; + + list = serv_list; + while (list) + { + serv = list->data; + if (serv->connected) + handle_command (serv->front_session, word_eol[2], FALSE); + list = list->next; + } + + return TRUE; +} + +static int +cmd_away (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *reason = word_eol[2]; + + if (!(*reason)) + { + if (sess->server->is_away) + { + if (sess->server->last_away_reason) + PrintTextf (sess, _("Already marked away: %s\n"), sess->server->last_away_reason); + return FALSE; + } + + if (sess->server->reconnect_away) + reason = sess->server->last_away_reason; + else + /* must manage memory pointed to by random_line() */ + reason = random_line (prefs.hex_away_reason); + } + sess->server->p_set_away (sess->server, reason); + + if (sess->server->last_away_reason != reason) + { + g_free (sess->server->last_away_reason); + + if (reason == word_eol[2]) + sess->server->last_away_reason = g_strdup (reason); + else + sess->server->last_away_reason = reason; + } + + if (!sess->server->connected) + sess->server->reconnect_away = 1; + + return TRUE; +} + +static int +cmd_back (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (sess->server->is_away) + { + sess->server->p_set_back (sess->server); + } + else + { + PrintText (sess, _("Already marked back.\n")); + } + + g_free (sess->server->last_away_reason); + sess->server->last_away_reason = NULL; + + return TRUE; +} + +static char * +create_mask (session * sess, char *mask, char *mode, char *typestr, int deop) +{ + int type; + struct User *user; + char *at, *dot, *lastdot; + char username[64], fullhost[128], domain[128], buf[512], *p2; + + user = userlist_find (sess, mask); + if (user && user->hostname) /* it's a nickname, let's find a proper ban mask */ + { + if (deop) + p2 = user->nick; + else + p2 = ""; + + mask = user->hostname; + + at = strchr (mask, '@'); /* FIXME: utf8 */ + if (!at) + return NULL; /* can't happen? */ + *at = 0; + + if (mask[0] == '~' || mask[0] == '+' || + mask[0] == '=' || mask[0] == '^' || mask[0] == '-') + { + /* the ident is prefixed with something, we replace that sign with an * */ + safe_strcpy (username+1, mask+1, sizeof (username)-1); + username[0] = '*'; + } else if (at - mask < USERNAMELEN) + { + /* we just add an * in the begining of the ident */ + safe_strcpy (username+1, mask, sizeof (username)-1); + username[0] = '*'; + } else + { + /* ident might be too long, we just ban what it gives and add an * in the end */ + safe_strcpy (username, mask, sizeof (username)); + } + *at = '@'; + safe_strcpy (fullhost, at + 1, sizeof (fullhost)); + + dot = strchr (fullhost, '.'); + if (dot) + { + safe_strcpy (domain, dot, sizeof (domain)); + } else + { + safe_strcpy (domain, fullhost, sizeof (domain)); + } + + if (*typestr) + type = atoi (typestr); + else + type = prefs.hex_irc_ban_type; + + buf[0] = 0; + if (inet_addr (fullhost) != (guint32) -1) /* "fullhost" is really a IP number */ + { + lastdot = strrchr (fullhost, '.'); + if (!lastdot) + return NULL; /* can't happen? */ + + *lastdot = 0; + strcpy (domain, fullhost); + *lastdot = '.'; + + switch (type) + { + case 0: + g_snprintf (buf, sizeof (buf), "%s %s *!*@%s.*", mode, p2, domain); + break; + + case 1: + g_snprintf (buf, sizeof (buf), "%s %s *!*@%s", mode, p2, fullhost); + break; + + case 2: + g_snprintf (buf, sizeof (buf), "%s %s *!%s@%s.*", mode, p2, username, domain); + break; + + case 3: + g_snprintf (buf, sizeof (buf), "%s %s *!%s@%s", mode, p2, username, fullhost); + break; + } + } else + { + switch (type) + { + case 0: + g_snprintf (buf, sizeof (buf), "%s %s *!*@*%s", mode, p2, domain); + break; + + case 1: + g_snprintf (buf, sizeof (buf), "%s %s *!*@%s", mode, p2, fullhost); + break; + + case 2: + g_snprintf (buf, sizeof (buf), "%s %s *!%s@*%s", mode, p2, username, domain); + break; + + case 3: + g_snprintf (buf, sizeof (buf), "%s %s *!%s@%s", mode, p2, username, fullhost); + break; + } + } + + } else + { + g_snprintf (buf, sizeof (buf), "%s %s", mode, mask); + } + + return g_strdup (buf); +} + +static void +ban (session * sess, char *tbuf, char *mask, char *bantypestr, int deop) +{ + char *banmask = create_mask (sess, mask, deop ? "-o+b" : "+b", bantypestr, deop); + server *serv = sess->server; + + if (banmask) + { + serv->p_mode (serv, sess->channel, banmask); + g_free (banmask); + } +} + +static int +cmd_ban (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *mask = word[2]; + + if (*mask) + { + ban (sess, tbuf, mask, word[3], 0); + } else + { + sess->server->p_mode (sess->server, sess->channel, "+b"); /* banlist */ + } + + return TRUE; +} + +static int +cmd_unban (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + /* Allow more than one mask in /unban -- tvk */ + int i = 2; + + while (1) + { + if (!*word[i]) + { + if (i == 2) + return FALSE; + send_channel_modes (sess, tbuf, word, 2, i, '-', 'b', 0); + return TRUE; + } + i++; + } +} + +static int +cmd_chanopt (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int ret; + + /* chanopt.c */ + ret = chanopt_command (sess, tbuf, word, word_eol); + chanopt_save_all (FALSE); + + return ret; +} + +static int +cmd_charset (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + server *serv = sess->server; + int offset = 0; + + if (strcmp (word[2], "-quiet") == 0) + offset++; + + if (!word[2 + offset][0]) + { + PrintTextf (sess, "Current charset: %s\n", serv->encoding); + return TRUE; + } + + if (servlist_check_encoding (word[2 + offset])) + { + server_set_encoding (serv, word[2 + offset]); + if (offset < 1) + PrintTextf (sess, "Charset changed to: %s\n", word[2 + offset]); + } else + { + PrintTextf (sess, "\0034Unknown charset:\017 %s\n", word[2 + offset]); + } + + return TRUE; +} + +static int +cmd_clear (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + GSList *list = sess_list; + char *reason = word_eol[2]; + + if (g_ascii_strcasecmp (reason, "HISTORY") == 0) + { + history_free (&sess->history); + return TRUE; + } + + if (g_ascii_strncasecmp (reason, "all", 3) == 0) + { + while (list) + { + sess = list->data; + if (!(sess->tab_state & TAB_STATE_NEW_HILIGHT)) + fe_text_clear (list->data, 0); + list = list->next; + } + return TRUE; + } + + if (reason[0] != '-' && !isdigit (reason[0]) && reason[0] != 0) + return FALSE; + + fe_text_clear (sess, atoi (reason)); + return TRUE; +} + +static int +cmd_close (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + GSList *list; + + if (strcmp (word[2], "-m") == 0) + { + list = sess_list; + while (list) + { + sess = list->data; + list = list->next; + if (sess->type == SESS_DIALOG) + fe_close_window (sess); + } + } else + { + if (*word_eol[2]) + sess->quitreason = word_eol[2]; + fe_close_window (sess); + } + + return TRUE; +} + +static int +cmd_ctcp (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int mbl; + char *to = word[2]; + if (*to) + { + char *msg = word_eol[3]; + if (*msg) + { + unsigned char *cmd = (unsigned char *)msg; + + /* make the first word upper case (as per RFC) */ + while (1) + { + if (*cmd == ' ' || *cmd == 0) + break; + mbl = g_utf8_skip[*cmd]; + if (mbl == 1) + *cmd = toupper (*cmd); + cmd += mbl; + } + + sess->server->p_ctcp (sess->server, to, msg); + + EMIT_SIGNAL (XP_TE_CTCPSEND, sess, to, msg, NULL, NULL, 0); + + return TRUE; + } + } + return FALSE; +} + +static int +cmd_country (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *code = word[2]; + if (*code) + { + /* search? */ + if (strcmp (code, "-s") == 0) + { + country_search (word[3], sess, (void *)PrintTextf); + return TRUE; + } + + /* search, but forgot the -s */ + if (strchr (code, '*')) + { + country_search (code, sess, (void *)PrintTextf); + return TRUE; + } + + sprintf (tbuf, "%s = %s\n", code, country (code)); + PrintText (sess, tbuf); + return TRUE; + } + return FALSE; +} + +static int +cmd_cycle (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *key = NULL; + char *chan = word[2]; + session *chan_sess; + + if (!*chan) + chan = sess->channel; + + if (chan) + { + chan_sess = find_channel (sess->server, chan); + + if (chan_sess && chan_sess->type == SESS_CHANNEL) + { + key = chan_sess->channelkey; + sess->server->p_cycle (sess->server, chan, key); + return TRUE; + } + } + + return FALSE; +} + +static int +cmd_dcc (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int goodtype; + struct DCC *dcc = 0; + char *type = word[2]; + if (*type) + { + if (!g_ascii_strcasecmp (type, "HELP")) + return FALSE; + if (!g_ascii_strcasecmp (type, "CLOSE")) + { + if (*word[3] && *word[4]) + { + goodtype = 0; + if (!g_ascii_strcasecmp (word[3], "SEND")) + { + dcc = find_dcc (word[4], word[5], TYPE_SEND); + dcc_abort (sess, dcc); + goodtype = TRUE; + } + if (!g_ascii_strcasecmp (word[3], "GET")) + { + dcc = find_dcc (word[4], word[5], TYPE_RECV); + dcc_abort (sess, dcc); + goodtype = TRUE; + } + if (!g_ascii_strcasecmp (word[3], "CHAT")) + { + dcc = find_dcc (word[4], "", TYPE_CHATRECV); + if (!dcc) + dcc = find_dcc (word[4], "", TYPE_CHATSEND); + dcc_abort (sess, dcc); + goodtype = TRUE; + } + + if (!goodtype) + return FALSE; + + if (!dcc) + EMIT_SIGNAL (XP_TE_NODCC, sess, NULL, NULL, NULL, NULL, 0); + + return TRUE; + + } + return FALSE; + } + if ((!g_ascii_strcasecmp (type, "CHAT")) || (!g_ascii_strcasecmp (type, "PCHAT"))) + { + char *nick = word[3]; + int passive = (!g_ascii_strcasecmp(type, "PCHAT")) ? 1 : 0; + if (*nick) + dcc_chat (sess, nick, passive); + return TRUE; + } + if (!g_ascii_strcasecmp (type, "LIST")) + { + dcc_show_list (sess); + return TRUE; + } + if (!g_ascii_strcasecmp (type, "GET")) + { + char *nick = word[3]; + char *file = word[4]; + if (!*file) + { + if (*nick) + dcc_get_nick (sess, nick); + } else + { + dcc = find_dcc (nick, file, TYPE_RECV); + if (dcc) + dcc_get (dcc); + else + EMIT_SIGNAL (XP_TE_NODCC, sess, NULL, NULL, NULL, NULL, 0); + } + return TRUE; + } + if ((!g_ascii_strcasecmp (type, "SEND")) || (!g_ascii_strcasecmp (type, "PSEND"))) + { + int i = 3, maxcps; + char *nick, *file; + int passive = (!g_ascii_strcasecmp(type, "PSEND")) ? 1 : 0; + + nick = word[i]; + if (!*nick) + return FALSE; + + maxcps = prefs.hex_dcc_max_send_cps; + if (!g_ascii_strncasecmp(nick, "-maxcps=", 8)) + { + maxcps = atoi(nick + 8); + i++; + nick = word[i]; + if (!*nick) + return FALSE; + } + + i++; + + file = word[i]; + if (!*file) + { + fe_dcc_send_filereq (sess, nick, maxcps, passive); + return TRUE; + } + + do + { + dcc_send (sess, nick, file, maxcps, passive); + i++; + file = word[i]; + } + while (*file); + + return TRUE; + } + + return FALSE; + } + + dcc_show_list (sess); + return TRUE; +} + +static int +cmd_debug (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + struct session *s; + struct server *v; + GSList *list = sess_list; + + PrintText (sess, "Session T Channel WaitChan WillChan Server\n"); + while (list) + { + s = (struct session *) list->data; + sprintf (tbuf, "%p %1x %-10.10s %-10.10s %-10.10s %p\n", + s, s->type, s->channel, s->waitchannel, + s->willjoinchannel, s->server); + PrintText (sess, tbuf); + list = list->next; + } + + list = serv_list; + PrintText (sess, "Server Sock Name\n"); + while (list) + { + v = (struct server *) list->data; + sprintf (tbuf, "%p %-5d %s\n", + v, v->sok, v->servername); + PrintText (sess, tbuf); + list = list->next; + } + + sprintf (tbuf, + "\nfront_session: %p\n" + "current_tab: %p\n\n", + sess->server->front_session, current_tab); + PrintText (sess, tbuf); + + return TRUE; +} + +static int +cmd_delbutton (struct session *sess, char *tbuf, char *word[], + char *word_eol[]) +{ + if (*word[2]) + { + if (sess->type == SESS_DIALOG) + { + if (list_delentry (&dlgbutton_list, word[2])) + fe_dlgbuttons_update (sess); + } else + { + if (list_delentry (&button_list, word[2])) + fe_buttons_update (sess); + } + return TRUE; + } + return FALSE; +} + +static int +cmd_dehop (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int i = 2; + + while (1) + { + if (!*word[i]) + { + if (i == 2) + return FALSE; + send_channel_modes (sess, tbuf, word, 2, i, '-', 'h', 0); + return TRUE; + } + i++; + } +} + +static int +cmd_deop (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int i = 2; + + while (1) + { + if (!*word[i]) + { + if (i == 2) + return FALSE; + send_channel_modes (sess, tbuf, word, 2, i, '-', 'o', 0); + return TRUE; + } + i++; + } +} + +typedef struct +{ + char **nicks; + int i; + session *sess; + char *reason; + char *tbuf; +} multidata; + +static int +mdehop_cb (struct User *user, multidata *data) +{ + if (user->hop && !user->me) + { + data->nicks[data->i] = user->nick; + data->i++; + } + return TRUE; +} + +static int +cmd_mdehop (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char **nicks = g_new0 (char *, sess->hops); + multidata data; + + data.nicks = nicks; + data.i = 0; + tree_foreach (sess->usertree, (tree_traverse_func *)mdehop_cb, &data); + send_channel_modes (sess, tbuf, nicks, 0, data.i, '-', 'h', 0); + g_free (nicks); + + return TRUE; +} + +static int +mdeop_cb (struct User *user, multidata *data) +{ + if (user->op && !user->me) + { + data->nicks[data->i] = user->nick; + data->i++; + } + return TRUE; +} + +static int +cmd_mdeop (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char **nicks = g_new0(char *, sess->ops); + multidata data; + + data.nicks = nicks; + data.i = 0; + tree_foreach (sess->usertree, (tree_traverse_func *)mdeop_cb, &data); + send_channel_modes (sess, tbuf, nicks, 0, data.i, '-', 'o', 0); + g_free (nicks); + + return TRUE; +} + +GSList *menu_list = NULL; + +static void +menu_free (menu_entry *me) +{ + g_free (me->path); + g_free (me->label); + g_free (me->cmd); + g_free (me->ucmd); + g_free (me->group); + g_free (me->icon); + g_free (me); +} + +/* strings equal? but ignore underscores */ + +int +menu_streq (const char *s1, const char *s2, int def) +{ + /* for separators */ + if (s1 == NULL && s2 == NULL) + return 0; + if (s1 == NULL || s2 == NULL) + return 1; + while (*s1) + { + if (*s1 == '_') + s1++; + if (*s2 == '_') + s2++; + if (*s1 != *s2) + return 1; + s1++; + s2++; + } + if (!*s2) + return 0; + return def; +} + +static menu_entry * +menu_entry_find (char *path, char *label) +{ + GSList *list; + menu_entry *me; + + list = menu_list; + while (list) + { + me = list->data; + if (!strcmp (path, me->path)) + { + if (me->label && label && !strcmp (label, me->label)) + return me; + } + list = list->next; + } + return NULL; +} + +static void +menu_del_children (char *path, char *label) +{ + GSList *list, *next; + menu_entry *me; + char buf[512]; + + if (!label) + label = ""; + if (path[0]) + g_snprintf (buf, sizeof (buf), "%s/%s", path, label); + else + g_snprintf (buf, sizeof (buf), "%s", label); + + list = menu_list; + while (list) + { + me = list->data; + next = list->next; + if (!menu_streq (buf, me->path, 0)) + { + menu_list = g_slist_remove (menu_list, me); + menu_free (me); + } + list = next; + } +} + +static int +menu_del (char *path, char *label) +{ + GSList *list; + menu_entry *me; + + list = menu_list; + while (list) + { + me = list->data; + if (!menu_streq (me->label, label, 1) && !menu_streq (me->path, path, 1)) + { + menu_list = g_slist_remove (menu_list, me); + fe_menu_del (me); + menu_free (me); + /* delete this item's children, if any */ + menu_del_children (path, label); + return 1; + } + list = list->next; + } + + return 0; +} + +static char +menu_is_mainmenu_root (char *path, gint16 *offset) +{ + static const char *menus[] = {"\x4$TAB","\x5$TRAY","\x4$URL","\x5$NICK","\x5$CHAN"}; + int i; + + for (i = 0; i < 5; i++) + { + if (!strncmp (path, menus[i] + 1, menus[i][0])) + { + *offset = menus[i][0]; /* number of bytes to offset the root */ + if (path[*offset] != '\0') + *offset += 1; + return 0; /* is not main menu */ + } + } + + *offset = 0; + return 1; /* is main menu */ +} + +static void +menu_add (char *path, char *label, char *cmd, char *ucmd, int pos, int state, int markup, int enable, int mod, int key, char *group, char *icon) +{ + menu_entry *me; + + /* already exists? */ + me = menu_entry_find (path, label); + if (me) + { + /* update only */ + me->state = state; + me->enable = enable; + fe_menu_update (me); + return; + } + + me = g_new (menu_entry, 1); + me->pos = pos; + me->modifier = mod; + me->is_main = menu_is_mainmenu_root (path, &me->root_offset); + me->state = state; + me->markup = markup; + me->enable = enable; + me->key = key; + me->path = g_strdup (path); + me->label = NULL; + me->cmd = NULL; + me->ucmd = NULL; + me->group = NULL; + me->icon = NULL; + + me->label = g_strdup (label); + me->cmd = g_strdup (cmd); + me->ucmd = g_strdup (ucmd); + me->group = g_strdup (group); + me->icon = g_strdup (icon); + + menu_list = g_slist_append (menu_list, me); + label = fe_menu_add (me); + if (label) + { + /* FE has given us a stripped label */ + g_free (me->label); + me->label = g_strdup (label); + g_free (label); /* this is from pango */ + } +} + +static int +cmd_menu (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int idx = 2; + int len; + int pos = 0xffff; + int state = 0; + int toggle = FALSE; + int enable = TRUE; + int markup = FALSE; + int key = 0; + int mod = 0; + char *label; + char *group = NULL; + char *icon = NULL; + + if (!word[2][0] || !word[3][0]) + return FALSE; + + /* -eX enabled or not? */ + if (word[idx][0] == '-' && word[idx][1] == 'e') + { + enable = atoi (word[idx] + 2); + idx++; + } + + /* -i<ICONFILE> */ + if (word[idx][0] == '-' && word[idx][1] == 'i') + { + icon = word[idx] + 2; + idx++; + } + + /* -k<mod>,<key> key binding */ + if (word[idx][0] == '-' && word[idx][1] == 'k') + { + char *comma = strchr (word[idx], ','); + if (!comma) + return FALSE; + mod = atoi (word[idx] + 2); + key = atoi (comma + 1); + idx++; + } + + /* -m to specify PangoMarkup language */ + if (word[idx][0] == '-' && word[idx][1] == 'm') + { + markup = TRUE; + idx++; + } + + /* -pX to specify menu position */ + if (word[idx][0] == '-' && word[idx][1] == 'p') + { + pos = atoi (word[idx] + 2); + idx++; + } + + /* -rSTATE,GROUP to specify a radio item */ + if (word[idx][0] == '-' && word[idx][1] == 'r') + { + state = atoi (word[idx] + 2); + group = word[idx] + 4; + idx++; + } + + /* -tX to specify toggle item with default state */ + if (word[idx][0] == '-' && word[idx][1] == 't') + { + state = atoi (word[idx] + 2); + idx++; + toggle = TRUE; + } + + if (word[idx+1][0] == 0) + return FALSE; + + /* the path */ + path_part (word[idx+1], tbuf, 512); + len = strlen (tbuf); + if (len) + tbuf[len - 1] = 0; + + /* the name of the item */ + label = file_part (word[idx + 1]); + if (label[0] == '-' && label[1] == 0) + label = NULL; /* separator */ + + if (markup) + { + char *p; /* to force pango closing tags through */ + for (p = label; p && *p; p++) + if (*p == 3) + *p = '/'; + } + + if (!g_ascii_strcasecmp (word[idx], "ADD")) + { + if (toggle) + { + menu_add (tbuf, label, word[idx + 2], word[idx + 3], pos, state, markup, enable, mod, key, NULL, NULL); + } else + { + if (word[idx + 2][0]) + menu_add (tbuf, label, word[idx + 2], NULL, pos, state, markup, enable, mod, key, group, icon); + else + menu_add (tbuf, label, NULL, NULL, pos, state, markup, enable, mod, key, group, icon); + } + return TRUE; + } + + if (!g_ascii_strcasecmp (word[idx], "DEL")) + { + menu_del (tbuf, label); + return TRUE; + } + + return FALSE; +} + +static int +mhop_cb (struct User *user, multidata *data) +{ + if (!user->hop) + { + data->nicks[data->i] = user->nick; + data->i++; + } + return TRUE; +} + +static int +cmd_mhop (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char **nicks = g_new0 (char *, sess->total - sess->hops); + multidata data; + + data.nicks = nicks; + data.i = 0; + tree_foreach (sess->usertree, (tree_traverse_func *)mhop_cb, &data); + send_channel_modes (sess, tbuf, nicks, 0, data.i, '+', 'h', 0); + + g_free (nicks); + + return TRUE; +} + +static int +mkick_cb (struct User *user, multidata *data) +{ + if (!user->op && !user->me) + data->sess->server->p_kick (data->sess->server, data->sess->channel, user->nick, data->reason); + return TRUE; +} + +static int +mkickops_cb (struct User *user, multidata *data) +{ + if (user->op && !user->me) + data->sess->server->p_kick (data->sess->server, data->sess->channel, user->nick, data->reason); + return TRUE; +} + +static int +cmd_mkick (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + multidata data; + + data.sess = sess; + data.reason = word_eol[2]; + tree_foreach (sess->usertree, (tree_traverse_func *)mkickops_cb, &data); + tree_foreach (sess->usertree, (tree_traverse_func *)mkick_cb, &data); + + return TRUE; +} + +static int +cmd_devoice (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int i = 2; + + while (1) + { + if (!*word[i]) + { + if (i == 2) + return FALSE; + send_channel_modes (sess, tbuf, word, 2, i, '-', 'v', 0); + return TRUE; + } + i++; + } +} + +static int +cmd_discon (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + sess->server->disconnect (sess, TRUE, -1); + return TRUE; +} + +static int +cmd_dns (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *nick = word[2]; + struct User *user; + message_tags_data no_tags = MESSAGE_TAGS_DATA_INIT; + + if (*nick) + { + user = userlist_find (sess, nick); + if (user) + { + if (user->hostname) + { + do_dns (sess, user->nick, user->hostname, &no_tags); + } else + { + sess->server->p_get_ip (sess->server, nick); + sess->server->doing_dns = TRUE; + } + } else + { + do_dns (sess, NULL, nick, &no_tags); + } + return TRUE; + } + return FALSE; +} + +static int +cmd_doat (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + GStrv channels; + guint i; + + if (!word[2] || !*word[2] || !word[3] || !*word[3]) + return FALSE; + + channels = g_strsplit (word[2], ",", -1); + for (i = 0; channels[i] && *channels[i]; ++i) + { + char *chan = channels[i]; + char *serv; + session *ctx; + + /* Split channel and network, either may be empty */ + if ((serv = strrchr (chan, '/'))) + { + *serv = '\0'; + serv++; + if (!strlen (serv)) + serv = NULL; + } + if (!strlen (chan)) + chan = NULL; + + if ((ctx = plugin_find_context (serv, chan, sess->server))) + handle_command (ctx, word_eol[3], FALSE); + } + g_strfreev (channels); + + return TRUE; +} + +static int +cmd_echo (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + PrintText (sess, word_eol[2]); + return TRUE; +} + +#ifndef WIN32 + +static void +exec_check_process (struct session *sess) +{ + int val; + + if (sess->running_exec == NULL) + return; + val = waitpid (sess->running_exec->childpid, NULL, WNOHANG); + if (val == -1 || val > 0) + { + close (sess->running_exec->myfd); + fe_input_remove (sess->running_exec->iotag); + g_free (sess->running_exec); + sess->running_exec = NULL; + } +} + +#ifndef __EMX__ +static int +cmd_execs (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int r; + + exec_check_process (sess); + if (sess->running_exec == NULL) + { + EMIT_SIGNAL (XP_TE_NOCHILD, sess, NULL, NULL, NULL, NULL, 0); + return FALSE; + } + r = kill (sess->running_exec->childpid, SIGSTOP); + if (r == -1) + PrintText (sess, "Error in kill(2)\n"); + + return TRUE; +} + +static int +cmd_execc (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int r; + + exec_check_process (sess); + if (sess->running_exec == NULL) + { + EMIT_SIGNAL (XP_TE_NOCHILD, sess, NULL, NULL, NULL, NULL, 0); + return FALSE; + } + r = kill (sess->running_exec->childpid, SIGCONT); + if (r == -1) + PrintText (sess, "Error in kill(2)\n"); + + return TRUE; +} + +static int +cmd_execk (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int r; + + exec_check_process (sess); + if (sess->running_exec == NULL) + { + EMIT_SIGNAL (XP_TE_NOCHILD, sess, NULL, NULL, NULL, NULL, 0); + return FALSE; + } + if (strcmp (word[2], "-9") == 0) + r = kill (sess->running_exec->childpid, SIGKILL); + else + r = kill (sess->running_exec->childpid, SIGTERM); + if (r == -1) + PrintText (sess, "Error in kill(2)\n"); + + return TRUE; +} + +/* OS/2 Can't have the /EXECW command because it uses pipe(2) not socketpair + and thus it is simplex --AGL */ +static int +cmd_execw (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int len; + char *temp; + exec_check_process (sess); + if (sess->running_exec == NULL) + { + EMIT_SIGNAL (XP_TE_NOCHILD, sess, NULL, NULL, NULL, NULL, 0); + return FALSE; + } + if (strcmp (word[2], "--") == 0) + { + len = strlen(word_eol[3]); + temp = g_strconcat (word_eol[3], "\n", NULL); + PrintText(sess, temp); + } + else + { + if (strcmp (word[2], "-q") == 0) + { + len = strlen(word_eol[3]); + temp = g_strconcat (word_eol[3], "\n", NULL); + } + else + { + len = strlen(word_eol[2]); + temp = g_strconcat (word_eol[2], "\n", NULL); + PrintText(sess, temp); + } + } + write(sess->running_exec->myfd, temp, len + 1); + g_free(temp); + + return TRUE; +} +#endif /* !__EMX__ */ + +/* convert ANSI escape color codes to mIRC codes */ + +static short escconv[] = +/* 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 */ +{ 1,4,3,5,2,10,6,1, 1,7,9,8,12,11,13,1 }; + +static void +exec_handle_colors (char *buf, int len) +{ + char numb[16]; + char *nbuf; + int i = 0, j = 0, k = 0, firstn = 0, col, colf = 0, colb = 0; + int esc = FALSE, backc = FALSE, bold = FALSE; + + /* any escape codes in this text? */ + if (strchr (buf, 27) == 0) + return; + + nbuf = g_malloc (len + 1); + + while (i < len) + { + switch (buf[i]) + { + case '\r': + break; + case 27: + esc = TRUE; + break; + case ';': + if (!esc) + goto norm; + backc = TRUE; + numb[k] = 0; + firstn = atoi (numb); + k = 0; + break; + case '[': + if (!esc) + goto norm; + break; + default: + if (esc) + { + if (buf[i] >= 'A' && buf[i] <= 'z') + { + if (buf[i] == 'm') + { + /* ^[[0m */ + if (k == 0 || (numb[0] == '0' && k == 1)) + { + nbuf[j] = '\017'; + j++; + bold = FALSE; + goto cont; + } + + numb[k] = 0; + col = atoi (numb); + backc = FALSE; + + if (firstn == 1) + bold = TRUE; + + if (firstn >= 30 && firstn <= 37) + colf = firstn - 30; + + if (col >= 40) + { + colb = col - 40; + backc = TRUE; + } + + if (col >= 30 && col <= 37) + colf = col - 30; + + if (bold) + colf += 8; + + if (backc) + { + colb = escconv[colb % 14]; + colf = escconv[colf % 14]; + j += sprintf (&nbuf[j], "\003%d,%02d", colf, colb); + } else + { + colf = escconv[colf % 14]; + j += sprintf (&nbuf[j], "\003%02d", colf); + } + } +cont: esc = FALSE; + backc = FALSE; + k = 0; + } else + { + if (isdigit ((unsigned char) buf[i]) && k < (sizeof (numb) - 1)) + { + numb[k] = buf[i]; + k++; + } + } + } else + { +norm: nbuf[j] = buf[i]; + j++; + } + } + i++; + } + + nbuf[j] = 0; + memcpy (buf, nbuf, j + 1); + g_free (nbuf); +} + +#ifndef HAVE_MEMRCHR +static void * +memrchr (const void *block, int c, size_t size) +{ + unsigned char *p; + + for (p = (unsigned char *)block + size; p != block; p--) + if (*p == c) + return p; + return NULL; +} +#endif + +static void +exec_print_line (session *sess, char *data, gssize len, gboolean tochannel) +{ + char *valid; + exec_handle_colors (data, len); + valid = text_fixup_invalid_utf8 (data, len, NULL); + if (tochannel) + { + /* must turn off auto-completion temporarily */ + const unsigned int old = prefs.hex_completion_auto; + prefs.hex_completion_auto = 0; + handle_multiline (sess, valid, FALSE, TRUE); + prefs.hex_completion_auto = old; + } + else + PrintText (sess, valid); + g_free (valid); +} + +static gboolean +exec_data (GIOChannel *source, GIOCondition condition, struct nbexec *s) +{ + char *buf, *readpos, *rest; + int rd, len; + int sok = s->myfd; + + len = s->buffill; + if (len) { + /* append new data to buffered incomplete line */ + buf = g_malloc (len + 2050); + memcpy(buf, s->linebuf, len); + readpos = buf + len; + g_free (s->linebuf); + s->linebuf = NULL; + } + else + readpos = buf = g_malloc (2050); + + rd = read (sok, readpos, 2048); + if (rd < 1) + { + /* The process has died */ + kill(s->childpid, SIGKILL); + if (len) { + buf[len] = '\0'; + exec_print_line(s->sess, buf, len, s->tochannel); + } + g_free(buf); + waitpid (s->childpid, NULL, 0); + s->sess->running_exec = NULL; + fe_input_remove (s->iotag); + close (sok); + g_free (s); + return TRUE; + } + len += rd; + buf[len] = '\0'; + + rest = memrchr(buf, '\n', len); + if (rest) + rest++; + else + rest = buf; + if (*rest) { + s->buffill = len - (rest - buf); /* = strlen(rest) */ + s->linebuf = g_malloc (s->buffill + 1); + memcpy(s->linebuf, rest, s->buffill); + *rest = '\0'; + len -= s->buffill; /* possibly 0 */ + } + else + s->buffill = 0; + + if (len) { + exec_print_line(s->sess, buf, len, s->tochannel); + } + + g_free (buf); + return TRUE; +} + +static int +cmd_exec (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int tochannel = FALSE; + char *cmd = word_eol[2]; + int fds[2], pid = 0; + struct nbexec *s; + int shell = TRUE; + int fd; + + if (*cmd) + { + exec_check_process (sess); + if (sess->running_exec != NULL) + { + EMIT_SIGNAL (XP_TE_ALREADYPROCESS, sess, NULL, NULL, NULL, NULL, 0); + return TRUE; + } + + if (!strcmp (word[2], "-d")) + { + if (!*word[3]) + return FALSE; + cmd = word_eol[3]; + shell = FALSE; + } + else if (!strcmp (word[2], "-o")) + { + if (!*word[3]) + return FALSE; + cmd = word_eol[3]; + tochannel = TRUE; + } + + if (shell) + { + if (access ("/bin/sh", X_OK) != 0) + { + fe_message (_("I need /bin/sh to run!\n"), FE_MSG_ERROR); + return TRUE; + } + } + +#ifdef __EMX__ /* if os/2 */ + if (pipe (fds) < 0) + { + PrintText (sess, "Pipe create error\n"); + return FALSE; + } + setmode (fds[0], O_BINARY); + setmode (fds[1], O_BINARY); +#else + if (socketpair (PF_UNIX, SOCK_STREAM, 0, fds) == -1) + { + PrintText (sess, "socketpair(2) failed\n"); + return FALSE; + } +#endif + s = g_new0 (struct nbexec, 1); + s->myfd = fds[0]; + s->tochannel = tochannel; + s->sess = sess; + + pid = fork (); + if (pid == 0) + { + /* This is the child's context */ + close (0); + close (1); + close (2); + /* Close parent's end of pipe */ + close(s->myfd); + /* Copy the child end of the pipe to stdout and stderr */ + dup2 (fds[1], 1); + dup2 (fds[1], 2); + /* Also copy it to stdin so we can write to it */ + dup2 (fds[1], 0); + /* Now close all open file descriptors except stdin, stdout and stderr */ + for (fd = 3; fd < 1024; fd++) close(fd); + /* Now we call /bin/sh to run our cmd ; made it more friendly -DC1 */ + if (shell) + { + execl ("/bin/sh", "sh", "-c", cmd, NULL); + } else + { + char **argv; + int argc; + + g_shell_parse_argv (cmd, &argc, &argv, NULL); + execvp (argv[0], argv); + + g_strfreev (argv); + } + /* not reached unless error */ + /*printf("exec error\n");*/ + fflush (stdout); + _exit (0); + } + if (pid == -1) + { + /* Parent context, fork() failed */ + + PrintText (sess, "Error in fork(2)\n"); + close(fds[0]); + close(fds[1]); + g_free (s); + } + else + { + /* Parent path */ + close(fds[1]); + s->childpid = pid; + s->iotag = fe_input_add (s->myfd, FIA_READ|FIA_EX, exec_data, s); + sess->running_exec = s; + return TRUE; + } + } + return FALSE; +} + +#endif + +#if 0 +/* export config stub */ +static int +cmd_exportconf (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + /* this is pretty much the same as in hexchat_exit() */ + save_config (); + if (prefs.save_pevents) + { + pevent_save (NULL); + } + sound_save (); + notify_save (); + ignore_save (); + free_sessions (); + chanopt_save_all (); + + return TRUE; /* success */ + return FALSE; /* fail */ +} +#endif + +static int +cmd_flushq (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + sprintf (tbuf, "Flushing server send queue, %d bytes.\n", sess->server->sendq_len); + PrintText (sess, tbuf); + sess->server->flush_queue (sess->server); + return TRUE; +} + +static int +cmd_quit (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (*word_eol[2]) + sess->quitreason = word_eol[2]; + sess->server->disconnect (sess, TRUE, -1); + sess->quitreason = NULL; + return 2; +} + +static int +cmd_gate (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *server_name = word[2]; + server *serv = sess->server; + if (*server_name) + { + char *port = word[3]; +#ifdef USE_OPENSSL + serv->use_ssl = FALSE; +#endif + server_fill_her_up (serv); + if (*port) + serv->connect (serv, server_name, atoi (port), TRUE); + else + serv->connect (serv, server_name, 23, TRUE); + return TRUE; + } + return FALSE; +} + +typedef struct +{ + char *cmd; + session *sess; +} getvalinfo; + +static void +get_bool_cb (int val, getvalinfo *info) +{ + char buf[512]; + + g_snprintf (buf, sizeof (buf), "%s %d", info->cmd, val); + if (is_session (info->sess)) + handle_command (info->sess, buf, FALSE); + + g_free (info->cmd); + g_free (info); +} + +static int +cmd_getbool (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + getvalinfo *info; + + if (!word[4][0]) + return FALSE; + + info = g_new (getvalinfo, 1); + info->cmd = g_strdup (word[2]); + info->sess = sess; + + fe_get_bool (word[3], word_eol[4], get_bool_cb, info); + + return TRUE; +} + +static void +get_int_cb (int cancel, int val, getvalinfo *info) +{ + char buf[512]; + + if (!cancel) + { + g_snprintf (buf, sizeof (buf), "%s %d", info->cmd, val); + if (is_session (info->sess)) + handle_command (info->sess, buf, FALSE); + } + + g_free (info->cmd); + g_free (info); +} + +static int +cmd_getint (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + getvalinfo *info; + + if (!word[4][0]) + return FALSE; + + info = g_new (getvalinfo, 1); + info->cmd = g_strdup (word[3]); + info->sess = sess; + + fe_get_int (word[4], atoi (word[2]), get_int_cb, info); + + return TRUE; +} + +static void +get_file_cb (char *cmd, char *file) +{ + char buf[1024 + 128]; + + /* execute the command once per file, then once more with + no args */ + if (file) + { + g_snprintf (buf, sizeof (buf), "%s %s", cmd, file); + handle_command (current_sess, buf, FALSE); + } + else + { + handle_command (current_sess, cmd, FALSE); + g_free (cmd); + } +} + +static int +cmd_getfile (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int idx = 2; + int flags = 0; + + if (!word[3][0]) + return FALSE; + + if (!strcmp (word[2], "-folder")) + { + flags |= FRF_CHOOSEFOLDER; + idx++; + } + + if (!strcmp (word[idx], "-multi")) + { + flags |= FRF_MULTIPLE; + idx++; + } + + if (!strcmp (word[idx], "-save")) + { + flags |= FRF_WRITE; + idx++; + } + + fe_get_file (word[idx+1], word[idx+2], (void *)get_file_cb, g_strdup (word[idx]), flags); + + return TRUE; +} + +static void +get_str_cb (int cancel, char *val, getvalinfo *info) +{ + char buf[512]; + + if (!cancel) + { + g_snprintf (buf, sizeof (buf), "%s %s", info->cmd, val); + if (is_session (info->sess)) + handle_command (info->sess, buf, FALSE); + } + + g_free (info->cmd); + g_free (info); +} + +static int +cmd_getstr (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + getvalinfo *info; + + if (!word[4][0]) + return FALSE; + + info = g_new (getvalinfo, 1); + info->cmd = g_strdup (word[3]); + info->sess = sess; + + fe_get_str (word[4], word[2], get_str_cb, info); + + return TRUE; +} + +static int +cmd_ghost (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (!word[2][0]) + return FALSE; + + sess->server->p_ns_ghost (sess->server, word[2], word[3]); + return TRUE; +} + +static int +cmd_gui (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + switch (str_ihash (word[2])) + { + case 0x058b836e: fe_ctrl_gui (sess, 8, 0); break; /* APPLY */ + case 0xac1eee45: fe_ctrl_gui (sess, 7, 2); break; /* ATTACH */ + case 0xb06a1793: fe_ctrl_gui (sess, 7, 1); break; /* DETACH */ + case 0x05cfeff0: fe_ctrl_gui (sess, 3, 0); break; /* FLASH */ + case 0x05d154d8: fe_ctrl_gui (sess, 2, 0); break; /* FOCUS */ + case 0x0030dd42: fe_ctrl_gui (sess, 0, 0); break; /* HIDE */ + case 0x61addbe3: fe_ctrl_gui (sess, 5, 0); break; /* ICONIFY */ + case 0xc0851aaa: fe_message (word[3], FE_MSG_INFO|FE_MSG_MARKUP); break; /* MSGBOX */ + case 0x0035dafd: fe_ctrl_gui (sess, 1, 0); break; /* SHOW */ + case 0x0033155f: /* MENU */ + if (!g_ascii_strcasecmp (word[3], "TOGGLE")) + fe_ctrl_gui (sess, 6, 0); + else + return FALSE; + break; + case 0x05a72f63: /* COLOR */ + if (!g_ascii_strcasecmp (word[4], "-NOOVERRIDE")) + fe_ctrl_gui (sess, 4, FE_COLOR_FLAG_NOOVERRIDE | atoi (word[3])); + else + fe_ctrl_gui (sess, 4, atoi (word[3])); + break; + default: + return FALSE; + } + + return TRUE; +} + +typedef struct +{ + int longfmt; + int i, t; + char *buf; +} help_list; + +static void +show_help_line (session *sess, help_list *hl, char *name, char *usage) +{ + int j, len, max; + char *p; + + if (name[0] == '.') /* hidden command? */ + return; + + if (hl->longfmt) /* long format for /HELP -l */ + { + if (!usage || usage[0] == 0) + PrintTextf (sess, " \0034%s\003 :\n", name); + else + PrintTextf (sess, " \0034%s\003 : %s\n", name, _(usage)); + return; + } + + /* append the name into buffer, but convert to uppercase */ + len = strlen (hl->buf); + p = name; + while (*p) + { + hl->buf[len] = toupper ((unsigned char) *p); + len++; + p++; + } + hl->buf[len] = 0; + + hl->t++; + if (hl->t == 5) + { + hl->t = 0; + strcat (hl->buf, "\n"); + PrintText (sess, hl->buf); + hl->buf[0] = ' '; + hl->buf[1] = ' '; + hl->buf[2] = 0; + } else + { + /* append some spaces after the command name */ + max = strlen (name); + if (max < 10) + { + max = 10 - max; + for (j = 0; j < max; j++) + { + hl->buf[len] = ' '; + len++; + hl->buf[len] = 0; + } + } + } +} + +static int +cmd_help (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int i = 0, longfmt = 0; + char *helpcmd = ""; + GSList *list; + + if (tbuf) + helpcmd = word[2]; + if (*helpcmd && strcmp (helpcmd, "-l") == 0) + longfmt = 1; + + if (*helpcmd && !longfmt) + { + help (sess, tbuf, helpcmd, FALSE); + } else + { + struct popup *pop; + char *buf = g_malloc (4096); + help_list hl; + + hl.longfmt = longfmt; + hl.buf = buf; + + PrintTextf (sess, "\n%s\n\n", _("Commands Available:")); + buf[0] = ' '; + buf[1] = ' '; + buf[2] = 0; + hl.t = 0; + hl.i = 0; + while (xc_cmds[i].name) + { + show_help_line (sess, &hl, xc_cmds[i].name, xc_cmds[i].help); + i++; + } + strcat (buf, "\n"); + PrintText (sess, buf); + + PrintTextf (sess, "\n%s\n\n", _("User defined commands:")); + buf[0] = ' '; + buf[1] = ' '; + buf[2] = 0; + hl.t = 0; + hl.i = 0; + list = command_list; + while (list) + { + pop = list->data; + show_help_line (sess, &hl, pop->name, pop->cmd); + list = list->next; + } + strcat (buf, "\n"); + PrintText (sess, buf); + + PrintTextf (sess, "\n%s\n\n", _("Plugin defined commands:")); + buf[0] = ' '; + buf[1] = ' '; + buf[2] = 0; + hl.t = 0; + hl.i = 0; + plugin_command_foreach (sess, &hl, (void *)show_help_line); + strcat (buf, "\n"); + PrintText (sess, buf); + g_free (buf); + + PrintTextf (sess, "\n%s\n\n", _("Type /HELP <command> for more information, or /HELP -l")); + } + return TRUE; +} + +static int +cmd_id (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (word[2][0]) + { + sess->server->p_ns_identify (sess->server, word[2]); + return TRUE; + } + + return FALSE; +} + +static int +cmd_ignore (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int i; + int type = 0; + int quiet = 0; + char *mask; + + if (!*word[2]) + { + ignore_showlist (sess); + return TRUE; + } + if (!*word[3]) + word[3] = "ALL"; + + i = 3; + while (1) + { + if (!*word[i]) + { + if (type == 0) + return FALSE; + + mask = word[2]; + /* If not a full mask or using wildcards, assume nick */ + if (strchr (mask, '!') == NULL && + strchr (mask, '@') == NULL && + strchr (mask, '?') == NULL && + strchr (mask, '*') == NULL) + { + mask = tbuf; + g_snprintf (tbuf, TBUFSIZE, "%s!*@*", word[2]); + } + + i = ignore_add (mask, type, TRUE); + if (quiet) + return TRUE; + switch (i) + { + case 1: + EMIT_SIGNAL (XP_TE_IGNOREADD, sess, mask, NULL, NULL, NULL, 0); + break; + case 2: /* old ignore changed */ + EMIT_SIGNAL (XP_TE_IGNORECHANGE, sess, mask, NULL, NULL, NULL, 0); + } + return TRUE; + } + if (!g_ascii_strcasecmp (word[i], "UNIGNORE")) + type |= IG_UNIG; + else if (!g_ascii_strcasecmp (word[i], "ALL")) + type |= IG_PRIV | IG_NOTI | IG_CHAN | IG_CTCP | IG_INVI | IG_DCC; + else if (!g_ascii_strcasecmp (word[i], "PRIV")) + type |= IG_PRIV; + else if (!g_ascii_strcasecmp (word[i], "NOTI")) + type |= IG_NOTI; + else if (!g_ascii_strcasecmp (word[i], "CHAN")) + type |= IG_CHAN; + else if (!g_ascii_strcasecmp (word[i], "CTCP")) + type |= IG_CTCP; + else if (!g_ascii_strcasecmp (word[i], "INVI")) + type |= IG_INVI; + else if (!g_ascii_strcasecmp (word[i], "QUIET")) + quiet = 1; + else if (!g_ascii_strcasecmp (word[i], "NOSAVE")) + type |= IG_NOSAVE; + else if (!g_ascii_strcasecmp (word[i], "DCC")) + type |= IG_DCC; + else + { + sprintf (tbuf, _("Unknown arg '%s' ignored."), word[i]); + PrintText (sess, tbuf); + } + i++; + } +} + +static int +cmd_invite (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (!*word[2]) + return FALSE; + if (*word[3]) + sess->server->p_invite (sess->server, word[3], word[2]); + else + sess->server->p_invite (sess->server, sess->channel, word[2]); + return TRUE; +} + +static int +cmd_join (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *chan = word[2]; + session *sess_find; + if (*chan) + { + char *po, *pass = word[3]; + + sess_find = find_channel (sess->server, chan); + if (!sess_find) + { + sess->server->p_join (sess->server, chan, pass); + if (sess->channel[0] == 0 && sess->waitchannel[0]) + { + po = strchr (chan, ','); + if (po) + *po = 0; + safe_strcpy (sess->waitchannel, chan, CHANLEN); + } + } + else + fe_ctrl_gui (sess_find, 2, 0); /* bring-to-front */ + + return TRUE; + } + return FALSE; +} + +static int +cmd_kick (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *nick = word[2]; + char *reason = word_eol[3]; + if (*nick) + { + sess->server->p_kick (sess->server, sess->channel, nick, reason); + return TRUE; + } + return FALSE; +} + +static int +cmd_kickban (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *nick = word[2]; + char *reason = word_eol[3]; + struct User *user; + + if (*nick) + { + /* if the reason is a 1 digit number, treat it as a bantype */ + + user = userlist_find (sess, nick); + + if (isdigit ((unsigned char) reason[0]) && reason[1] == 0) + { + ban (sess, tbuf, nick, reason, (user && user->op)); + reason[0] = 0; + } else + ban (sess, tbuf, nick, "", (user && user->op)); + + sess->server->p_kick (sess->server, sess->channel, nick, reason); + + return TRUE; + } + return FALSE; +} + +static int +cmd_killall (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + hexchat_exit(); + return 2; +} + +static int +cmd_lagcheck (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + lag_check (); + return TRUE; +} + +static void +lastlog (session *sess, char *search, gtk_xtext_search_flags flags) +{ + session *lastlog_sess; + + if (!is_session (sess)) + return; + + lastlog_sess = find_dialog (sess->server, "(lastlog)"); + if (!lastlog_sess) + lastlog_sess = new_ircwindow (sess->server, "(lastlog)", SESS_DIALOG, 0); + + lastlog_sess->lastlog_sess = sess; + lastlog_sess->lastlog_flags = flags; + + fe_text_clear (lastlog_sess, 0); + fe_lastlog (sess, lastlog_sess, search, flags); +} + +static int +cmd_lastlog (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int j = 2; + gtk_xtext_search_flags flags = 0; + gboolean doublehyphen = FALSE; + + while (word_eol[j] != NULL && word_eol [j][0] == '-' && !doublehyphen) + { + switch (word_eol [j][1]) + { + case 'r': + flags |= regexp; + break; + case 'm': + flags |= case_match; + break; + case 'h': + flags |= highlight; + break; + case '-': + doublehyphen = TRUE; + break; + default: + break; + /* O dear whatever shall we do here? */ + } + j++; + } + if (word_eol[j] != NULL && *word_eol[j]) + { + lastlog (sess, word_eol[j], flags); + return TRUE; + } + else + { + return FALSE; + } +} + +static int +cmd_list (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + fe_open_chan_list (sess->server, word_eol[2], TRUE); + + return TRUE; +} + +gboolean +load_perform_file (session *sess, char *file) +{ + char tbuf[1024 + 4]; + char *nl; + FILE *fp; + + fp = hexchat_fopen_file (file, "r", 0); /* load files from config dir */ + if (!fp) + return FALSE; + + tbuf[1024] = 0; + while (fgets (tbuf, 1024, fp)) + { + nl = strchr (tbuf, '\n'); + if (nl == tbuf) /* skip empty commands */ + continue; + if (nl) + *nl = 0; + if (tbuf[0] == prefs.hex_input_command_char[0]) + handle_command (sess, tbuf + 1, TRUE); + else + handle_command (sess, tbuf, TRUE); + } + fclose (fp); + return TRUE; +} + +static int +cmd_load (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *file, *buf; +#ifdef USE_PLUGIN + char *error, *arg; +#endif + + if (!word[2][0]) + return FALSE; + + if (strcmp (word[2], "-e") == 0) + { + file = expand_homedir (word[3]); + if (!load_perform_file (sess, file)) + { + buf = g_strdup_printf ("%s%c%s", get_xdir(), G_DIR_SEPARATOR, file); + PrintTextf (sess, _("Cannot access %s\n"), buf); + PrintText (sess, errorstring (errno)); + g_free (buf); + } + g_free (file); + return TRUE; + } + +#ifdef USE_PLUGIN + if (g_str_has_suffix (word[2], "."PLUGIN_SUFFIX)) + { + arg = NULL; + if (word_eol[3][0]) + arg = word_eol[3]; + + file = expand_homedir (word[2]); + error = plugin_load (sess, file, arg); + g_free (file); + + if (error) + PrintText (sess, error); + + return TRUE; + } + + sprintf (tbuf, "Unknown file type %s. Maybe you need to install the Perl or Python plugin?\n", word[2]); + PrintText (sess, tbuf); +#endif + + return FALSE; +} + +char * +split_up_text(struct session *sess, char *text, int cmd_length, char *split_text) +{ + unsigned int max, space_offset; + char *space; + + /* maximum allowed text */ + /* :nickname!username@host.com cmd_length */ + max = 512; /* rfc 2812 */ + max -= 3; /* :, !, @ */ + max -= cmd_length; + max -= strlen (sess->server->nick); + max -= strlen (sess->channel); + if (sess->me && sess->me->hostname) + max -= strlen (sess->me->hostname); + else + { + max -= 9; /* username */ + max -= 65; /* max possible hostname and '@' */ + } + + if (strlen (text) > max) + { + unsigned int i = 0; + int size; + + /* traverse the utf8 string and find the nearest cut point that + doesn't split 1 char in half */ + while (1) + { + size = g_utf8_skip[((unsigned char *)text)[i]]; + if ((i + size) >= max) + break; + i += size; + } + max = i; + + /* Try splitting at last space */ + space = g_utf8_strrchr (text, max, ' '); + if (space) + { + space_offset = g_utf8_pointer_to_offset (text, space); + + /* Only split if last word is of sane length */ + if (max != space_offset && max - space_offset < 20) + max = space_offset + 1; + } + + split_text = g_strdup_printf ("%.*s", max, text); + + return split_text; + } + + return NULL; +} + +static int +cmd_me (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *act = word_eol[2]; + char *split_text = NULL; + int cmd_length = 22; /* " PRIVMSG ", " ", :, \001ACTION, " ", \001, \r, \n */ + int offset = 0; + message_tags_data no_tags = MESSAGE_TAGS_DATA_INIT; + + if (!(*act)) + return FALSE; + + if (sess->type == SESS_SERVER) + { + notj_msg (sess); + return TRUE; + } + + g_snprintf (tbuf, TBUFSIZE, "\001ACTION %s\001\r", act); + /* first try through DCC CHAT */ + if (dcc_write_chat (sess->channel, tbuf)) + { + /* print it to screen */ + inbound_action (sess, sess->channel, sess->server->nick, "", act, TRUE, FALSE, + &no_tags); + } else + { + /* DCC CHAT failed, try through server */ + if (sess->server->connected) + { + while ((split_text = split_up_text (sess, act + offset, cmd_length, split_text))) + { + sess->server->p_action (sess->server, sess->channel, split_text); + /* print it to screen */ + inbound_action (sess, sess->channel, sess->server->nick, "", + split_text, TRUE, FALSE, + &no_tags); + + if (*split_text) + offset += strlen(split_text); + + g_free (split_text); + } + + sess->server->p_action (sess->server, sess->channel, act + offset); + /* print it to screen */ + inbound_action (sess, sess->channel, sess->server->nick, "", + act + offset, TRUE, FALSE, &no_tags); + } else + { + notc_msg (sess); + } + } + + return TRUE; +} + +static int +cmd_mode (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + /* We allow omitting the target, so we have to figure it out: + * - Can only use info from channels or dialogs + * - Empty arg is always sess info + * - Assume + is mode not channel + * - We know valid channels and our nick + * - We cannot easily know if other nick or valid mode (Need to store 004) + */ + if ((sess->type != SESS_CHANNEL && sess->type != SESS_DIALOG) + || (!(*word[2] == '-' || *word[2] == '+' || *word[2] == '\0') + && (is_channel (sess->server, word[2]) || !rfc_casecmp (sess->server->nick, word[2]))) + ) + { + sess->server->p_mode (sess->server, word[2], word_eol[3]); + } + else + { + if(sess->channel[0] == 0) + return FALSE; + sess->server->p_mode (sess->server, sess->channel, word_eol[2]); + } + return TRUE; +} + +static int +mop_cb (struct User *user, multidata *data) +{ + if (!user->op) + { + data->nicks[data->i] = user->nick; + data->i++; + } + return TRUE; +} + +static int +cmd_mop (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char **nicks = g_new0 (char *, sess->total - sess->ops); + multidata data; + + data.nicks = nicks; + data.i = 0; + tree_foreach (sess->usertree, (tree_traverse_func *)mop_cb, &data); + send_channel_modes (sess, tbuf, nicks, 0, data.i, '+', 'o', 0); + + g_free (nicks); + + return TRUE; +} + +static int +cmd_msg (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *nick = word[2]; + char *msg = word_eol[3]; + struct session *newsess; + char *split_text = NULL; + int cmd_length = 13; /* " PRIVMSG ", " ", :, \r, \n */ + int offset = 0; + + if (*nick) + { + if (*msg) + { + if (strcmp (nick, ".") == 0) + { /* /msg the last nick /msg'ed */ + if (sess->lastnick[0]) + nick = sess->lastnick; + } else + { + safe_strcpy (sess->lastnick, nick, NICKLEN); /* prime the last nick memory */ + } + + if (*nick == '=') + { + nick++; + if (!dcc_write_chat (nick, msg)) + { + EMIT_SIGNAL (XP_TE_NODCC, sess, NULL, NULL, NULL, NULL, 0); + return TRUE; + } + } else + { + if (!sess->server->connected) + { + notc_msg (sess); + return TRUE; + } + + while ((split_text = split_up_text (sess, msg + offset, cmd_length, split_text))) + { + sess->server->p_message (sess->server, nick, split_text); + + if (*split_text) + offset += strlen(split_text); + + g_free (split_text); + } + sess->server->p_message (sess->server, nick, msg + offset); + offset = 0; + } + newsess = find_dialog (sess->server, nick); + if (!newsess) + newsess = find_channel (sess->server, nick); + if (newsess) + { + message_tags_data no_tags = MESSAGE_TAGS_DATA_INIT; + + while ((split_text = split_up_text (sess, msg + offset, cmd_length, split_text))) + { + inbound_chanmsg (newsess->server, NULL, newsess->channel, + newsess->server->nick, split_text, TRUE, FALSE, + &no_tags); + + if (*split_text) + offset += strlen(split_text); + + g_free (split_text); + } + inbound_chanmsg (newsess->server, NULL, newsess->channel, + newsess->server->nick, msg + offset, TRUE, FALSE, + &no_tags); + } + else + { + /* mask out passwords */ + if (g_ascii_strcasecmp (nick, "nickserv") == 0) + { + if (g_ascii_strncasecmp (msg, "identify ", 9) == 0) + msg = "identify ****"; + else if (g_ascii_strncasecmp (msg, "ghost ", 6) == 0) + msg = "ghost ****"; + } + + EMIT_SIGNAL (XP_TE_MSGSEND, sess, nick, msg, NULL, NULL, 0); + } + + return TRUE; + } + } + return FALSE; +} + +static int +cmd_names (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (*word[2]) + sess->server->p_names (sess->server, word[2]); + else + sess->server->p_names (sess->server, sess->channel); + return TRUE; +} + +static int +cmd_nctcp (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (*word_eol[3]) + { + sess->server->p_nctcp (sess->server, word[2], word_eol[3]); + return TRUE; + } + return FALSE; +} + +static int +cmd_newserver (struct session *sess, char *tbuf, char *word[], + char *word_eol[]) +{ + if (strcmp (word[2], "-noconnect") == 0) + { + new_ircwindow (NULL, word[3], SESS_SERVER, 0); + return TRUE; + } + + sess = new_ircwindow (NULL, NULL, SESS_SERVER, 1); + cmd_server (sess, tbuf, word, word_eol); + return TRUE; +} + +static int +cmd_nick (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *nick = word[2]; + if (*nick) + { + if (sess->server->connected) + sess->server->p_change_nick (sess->server, nick); + else + { + message_tags_data no_tags = MESSAGE_TAGS_DATA_INIT; + inbound_newnick (sess->server, sess->server->nick, nick, TRUE, + &no_tags); + } + return TRUE; + } + return FALSE; +} + +static int +cmd_notice (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *text = word_eol[3]; + char *split_text = NULL; + int cmd_length = 12; /* " NOTICE ", " ", :, \r, \n */ + int offset = 0; + + if (*word[2] && *word_eol[3]) + { + while ((split_text = split_up_text (sess, text + offset, cmd_length, split_text))) + { + sess->server->p_notice (sess->server, word[2], split_text); + EMIT_SIGNAL (XP_TE_NOTICESEND, sess, word[2], split_text, NULL, NULL, 0); + + if (*split_text) + offset += strlen(split_text); + + g_free (split_text); + } + + sess->server->p_notice (sess->server, word[2], text + offset); + EMIT_SIGNAL (XP_TE_NOTICESEND, sess, word[2], text + offset, NULL, NULL, 0); + + return TRUE; + } + return FALSE; +} + +static int +cmd_notify (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int i = 1; + char *net = NULL; + + if (*word[2]) + { + if (strcmp (word[2], "-n") == 0) /* comma sep network list */ + { + net = word[3]; + i += 2; + } + + while (1) + { + i++; + if (!*word[i]) + break; + if (notify_deluser (word[i])) + { + EMIT_SIGNAL (XP_TE_DELNOTIFY, sess, word[i], NULL, NULL, NULL, 0); + return TRUE; + } + + if (net && strcmp (net, "ASK") == 0) + fe_notify_ask (word[i], NULL); + else + { + notify_adduser (word[i], net); + EMIT_SIGNAL (XP_TE_ADDNOTIFY, sess, word[i], NULL, NULL, NULL, 0); + } + } + } else + { + message_tags_data no_tags = MESSAGE_TAGS_DATA_INIT; + notify_showlist (sess, &no_tags); + } + return TRUE; +} + +static int +cmd_op (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int i = 2; + + while (1) + { + if (!*word[i]) + { + if (i == 2) + return FALSE; + send_channel_modes (sess, tbuf, word, 2, i, '+', 'o', 0); + return TRUE; + } + i++; + } +} + +static int +cmd_part (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *chan = word[2]; + char *reason = word_eol[3]; + if (!*chan) + chan = sess->channel; + if ((*chan) && is_channel (sess->server, chan)) + { + if (reason[0] == 0) + reason = NULL; + server_sendpart (sess->server, chan, reason); + return TRUE; + } + return FALSE; +} + +static int +cmd_ping (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char timestring[64]; + unsigned long tim; + char *to = word[2]; + + tim = make_ping_time (); + + g_snprintf (timestring, sizeof (timestring), "%lu", tim); + sess->server->p_ping (sess->server, to, timestring); + + return TRUE; +} + +session * +open_query (server *serv, char *nick, gboolean focus_existing) +{ + session *sess; + + sess = find_dialog (serv, nick); + if (!sess) + sess = new_ircwindow (serv, nick, SESS_DIALOG, focus_existing); + else if (focus_existing) + fe_ctrl_gui (sess, 2, 0); /* bring-to-front */ + + return sess; +} + +static int +cmd_query (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *nick = word[2]; + char *msg = word_eol[3]; + char *split_text = NULL; + gboolean focus = TRUE; + int cmd_length = 13; /* " PRIVMSG ", " ", :, \r, \n */ + int offset = 0; + + if (strcmp (word[2], "-nofocus") == 0) + { + nick = word[3]; + msg = word_eol[4]; + focus = FALSE; + } + + if (*nick && !is_channel (sess->server, nick)) + { + struct session *nick_sess; + + nick_sess = open_query (sess->server, nick, focus); + + if (*msg) + { + message_tags_data no_tags = MESSAGE_TAGS_DATA_INIT; + + if (!sess->server->connected) + { + notc_msg (sess); + return TRUE; + } + + while ((split_text = split_up_text (sess, msg + offset, cmd_length, split_text))) + { + sess->server->p_message (sess->server, nick, split_text); + inbound_chanmsg (nick_sess->server, nick_sess, nick_sess->channel, + nick_sess->server->nick, split_text, TRUE, FALSE, + &no_tags); + + if (*split_text) + offset += strlen(split_text); + + g_free (split_text); + } + sess->server->p_message (sess->server, nick, msg + offset); + inbound_chanmsg (nick_sess->server, nick_sess, nick_sess->channel, + nick_sess->server->nick, msg + offset, TRUE, FALSE, + &no_tags); + } + + return TRUE; + } + return FALSE; +} + +static int +cmd_quiet (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *quietmask; + server *serv = sess->server; + + if (strchr (serv->chanmodes, 'q') == NULL) + { + PrintText (sess, _("Quiet is not supported by this server.")); + return TRUE; + } + + if (*word[2]) + { + quietmask = create_mask (sess, word[2], "+q", word[3], 0); + + if (quietmask) + { + serv->p_mode (serv, sess->channel, quietmask); + g_free (quietmask); + } + } + else + { + serv->p_mode (serv, sess->channel, "+q"); /* quietlist */ + } + + return TRUE; +} + +static int +cmd_unquiet (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + /* Allow more than one mask in /unban -- tvk */ + int i = 2; + + if (strchr (sess->server->chanmodes, 'q') == NULL) + { + PrintText (sess, _("Quiet is not supported by this server.")); + return TRUE; + } + + while (1) + { + if (!*word[i]) + { + if (i == 2) + return FALSE; + send_channel_modes (sess, tbuf, word, 2, i, '-', 'q', 0); + return TRUE; + } + i++; + } +} + +static int +cmd_quote (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *raw = word_eol[2]; + + return sess->server->p_raw (sess->server, raw); +} + +static int +cmd_reconnect (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int tmp = prefs.hex_net_reconnect_delay; + GSList *list; + server *serv = sess->server; + + prefs.hex_net_reconnect_delay = 0; + + if (!g_ascii_strcasecmp (word[2], "ALL")) + { + list = serv_list; + while (list) + { + serv = list->data; + if (serv->connected) + serv->auto_reconnect (serv, TRUE, -1); + list = list->next; + } + } + /* If it isn't "ALL" and there is something + there it *should* be a server they are trying to connect to*/ + else if (*word[2]) + { + int offset = 0; + +#ifdef USE_OPENSSL + int use_ssl = TRUE; + int use_ssl_noverify = FALSE; + if (g_strcmp0 (word[2], "-ssl") == 0) + { + use_ssl = TRUE; + use_ssl_noverify = FALSE; + offset++; /* args move up by 1 word */ + } else if (g_strcmp0 (word[2], "-ssl-noverify") == 0) + { + use_ssl = TRUE; + use_ssl_noverify = TRUE; + offset++; /* args move up by 1 word */ + } else if (g_strcmp0 (word[2], "-insecure") == 0) + { + use_ssl = FALSE; + use_ssl_noverify = FALSE; + offset++; /* args move up by 1 word */ + } + serv->use_ssl = use_ssl; + serv->accept_invalid_cert = use_ssl_noverify; +#endif + + if (*word[4+offset]) + safe_strcpy (serv->password, word[4+offset], sizeof (serv->password)); + if (*word[3+offset]) + serv->port = atoi (word[3+offset]); + safe_strcpy (serv->hostname, word[2+offset], sizeof (serv->hostname)); + serv->auto_reconnect (serv, TRUE, -1); + } + else + { + serv->auto_reconnect (serv, TRUE, -1); + } + prefs.hex_net_reconnect_delay = tmp; + + return TRUE; +} + +static int +cmd_recv (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (*word_eol[2]) + { + sess->server->p_inline (sess->server, word_eol[2], strlen (word_eol[2])); + return TRUE; + } + + return FALSE; +} + +static int +cmd_say (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *speech = word_eol[2]; + if (*speech) + { + handle_say (sess, speech, FALSE); + return TRUE; + } + return FALSE; +} + +static int +cmd_send (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + guint32 addr; + socklen_t len; + struct sockaddr_in SAddr; + + if (!word[2][0]) + return FALSE; + + addr = dcc_get_my_address (sess); + if (addr == 0) + { + /* use the one from our connected server socket */ + memset (&SAddr, 0, sizeof (struct sockaddr_in)); + len = sizeof (SAddr); + getsockname (sess->server->sok, (struct sockaddr *) &SAddr, &len); + addr = SAddr.sin_addr.s_addr; + } + addr = ntohl (addr); + + if ((addr & 0xffff0000) == 0xc0a80000 || /* 192.168.x.x */ + (addr & 0xff000000) == 0x0a000000) /* 10.x.x.x */ + /* we got a private net address, let's PSEND or it'll fail */ + g_snprintf (tbuf, 512, "DCC PSEND %s", word_eol[2]); + else + g_snprintf (tbuf, 512, "DCC SEND %s", word_eol[2]); + + handle_command (sess, tbuf, FALSE); + + return TRUE; +} + +static int +cmd_setcursor (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int delta = FALSE; + + if (*word[2]) + { + if (word[2][0] == '-' || word[2][0] == '+') + delta = TRUE; + fe_set_inputbox_cursor (sess, delta, atoi (word[2])); + return TRUE; + } + + return FALSE; +} + +static int +cmd_settab (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (*word_eol[2]) + { + strcpy (tbuf, sess->channel); + safe_strcpy (sess->channel, word_eol[2], CHANLEN); + fe_set_channel (sess); + strcpy (sess->channel, tbuf); + } + + return TRUE; +} + +static int +cmd_settext (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + fe_set_inputbox_contents (sess, word_eol[2]); + return TRUE; +} + +static int +cmd_splay (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (*word[2]) + { + sound_play (word[2], FALSE); + return TRUE; + } + + return FALSE; +} + +static int +parse_irc_url (char *url, char *server_name[], char *port[], char *channel[], char *key[], int *use_ssl) +{ + char *co; +#ifdef USE_OPENSSL + if (g_ascii_strncasecmp ("ircs://", url, 7) == 0) + { + *use_ssl = TRUE; + *server_name = url + 7; + goto urlserv; + } +#endif + + if (g_ascii_strncasecmp ("irc://", url, 6) == 0) + { + *server_name = url + 6; +#ifdef USE_OPENSSL +urlserv: +#endif + /* check for port */ + co = strchr (*server_name, ':'); + if (co) + { + *port = co + 1; + *co = 0; + } else + co = *server_name; + /* check for channel - mirc style */ + co = strchr (co + 1, '/'); + if (co) + { + *co = 0; + co++; + if (*co == '#') + *channel = co+1; + else if (*co != '\0') + *channel = co; + + /* check for key - mirc style */ + co = strchr (co + 1, '?'); + if (co) + { + *co = 0; + co++; + *key = co; + } + } + + return TRUE; + } + return FALSE; +} + +static int +cmd_server (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int offset = 0; + char *server_name = NULL; + char *port = NULL; + char *pass = NULL; + char *channel = NULL; + char *key = NULL; +#ifdef USE_OPENSSL + int use_ssl = TRUE; + int use_ssl_noverify = FALSE; +#else + int use_ssl = FALSE; +#endif + int is_url = TRUE; + server *serv = sess->server; + ircnet *net = NULL; + +#ifdef USE_OPENSSL + /* BitchX uses -ssl, mIRC uses -e, let's support both */ + if (g_strcmp0 (word[2], "-ssl") == 0 || g_strcmp0 (word[2], "-e") == 0) + { + use_ssl = TRUE; + offset++; /* args move up by 1 word */ + } + else if (g_strcmp0 (word[2], "-ssl-noverify") == 0) + { + use_ssl = TRUE; + use_ssl_noverify = TRUE; + offset++; /* args move up by 1 word */ + } + else if (g_strcmp0 (word[2], "-insecure") == 0) + { + use_ssl = FALSE; + offset++; /* args move up by 1 word */ + } +#endif + + if (!parse_irc_url (word[2 + offset], &server_name, &port, &channel, &key, &use_ssl)) + { + is_url = FALSE; + server_name = word[2 + offset]; + } + if (port) + pass = word[3 + offset]; + else + { + port = word[3 + offset]; + pass = word[4 + offset]; + } + + if (!(*server_name)) + return FALSE; + + sess->server->network = NULL; + + /* dont clear it for /servchan */ + if (g_ascii_strncasecmp (word_eol[1], "SERVCHAN ", 9)) + sess->willjoinchannel[0] = 0; + + if (channel) + { + sess->willjoinchannel[0] = '#'; + safe_strcpy ((sess->willjoinchannel + 1), channel, (CHANLEN - 1)); + if (key) + safe_strcpy (sess->channelkey, key, 64); + } + + /* support +7000 style ports like mIRC */ + if (port[0] == '+') + { + port++; +#ifdef USE_OPENSSL + use_ssl = TRUE; +#endif + } + else if (port[0] == '-') + { + port++; +#ifdef USE_OPENSSL + use_ssl = FALSE; +#endif + } + + if (*pass) + { + safe_strcpy (serv->password, pass, sizeof (serv->password)); + serv->loginmethod = LOGIN_PASS; + } + else + { + /* If part of a known network, login like normal */ + net = servlist_net_find_from_server (server_name); + if (net && net->pass && *net->pass) + { + safe_strcpy (serv->password, net->pass, sizeof (serv->password)); + serv->loginmethod = net->logintype; + } + else /* Otherwise ensure no password is sent or SASL started */ + { + serv->loginmethod = LOGIN_DEFAULT; + serv->password[0] = 0; + } + } + +#ifdef USE_OPENSSL + serv->use_ssl = use_ssl; + serv->accept_invalid_cert = use_ssl_noverify; +#endif + + /* try to connect by Network name */ + if (servlist_connect_by_netname (sess, server_name, !is_url)) + return TRUE; + + if (*port) + { + serv->connect (serv, server_name, atoi (port), FALSE); + } else + { + /* -1 for default port */ + serv->connect (serv, server_name, -1, FALSE); + } + + /* try to associate this connection with a listed network */ + /* may return NULL, but that's OK */ + if ((serv->network = servlist_net_find_from_server (server_name))) + server_set_encoding (serv, ((ircnet*)serv->network)->encoding); + + return TRUE; +} + +static int +cmd_servchan (struct session *sess, char *tbuf, char *word[], + char *word_eol[]) +{ + int offset = 0; + +#ifdef USE_OPENSSL + if (g_strcmp0 (word[2], "-ssl") == 0 || g_strcmp0 (word[2], "-ssl-noverify") == 0 || g_strcmp0 (word[2], "-insecure") == 0) + offset++; +#endif + + if (*word[4 + offset]) + { + safe_strcpy (sess->willjoinchannel, word[4 + offset], CHANLEN); + return cmd_server (sess, tbuf, word, word_eol); + } + + return FALSE; +} + +static int +cmd_topic (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (word[2][0] && is_channel (sess->server, word[2])) + sess->server->p_topic (sess->server, word[2], word_eol[3]); + else + sess->server->p_topic (sess->server, sess->channel, word_eol[2]); + return TRUE; +} + +static int +cmd_tray (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (strcmp (word[2], "-t") == 0) + { + fe_tray_set_tooltip (word[3][0] ? word[3] : NULL); + return TRUE; + } + + if (strcmp (word[2], "-i") == 0) + { + fe_tray_set_icon (atoi (word[3])); + return TRUE; + } + + if (strcmp (word[2], "-f") != 0) + return FALSE; + + if (!word[3][0]) + { + fe_tray_set_file (NULL); /* default HexChat icon */ + return TRUE; + } + + if (!word[4][0]) + { + fe_tray_set_file (word[3]); /* fixed custom icon */ + return TRUE; + } + + /* flash between 2 icons */ + fe_tray_set_flash (word[4], word[5][0] ? word[5] : NULL, atoi (word[3])); + return TRUE; +} + +static int +cmd_unignore (struct session *sess, char *tbuf, char *word[], + char *word_eol[]) +{ + char *mask = word[2]; + char *arg = word[3]; + if (*mask) + { + if (strchr (mask, '?') == NULL && strchr (mask, '*') == NULL) + { + mask = tbuf; + g_snprintf (tbuf, TBUFSIZE, "%s!*@*", word[2]); + } + + if (ignore_del (mask, NULL)) + { + if (g_ascii_strcasecmp (arg, "QUIET")) + EMIT_SIGNAL (XP_TE_IGNOREREMOVE, sess, mask, NULL, NULL, NULL, 0); + } + return TRUE; + } + return FALSE; +} + +static int +cmd_unload (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ +#ifdef USE_PLUGIN + gboolean by_file = FALSE; + + if (g_str_has_suffix (word[2], "."PLUGIN_SUFFIX)) + by_file = TRUE; + + switch (plugin_kill (word[2], by_file)) + { + case 0: + PrintText (sess, _("No such plugin found.\n")); + break; + case 1: + return TRUE; + case 2: + PrintText (sess, _("That plugin is refusing to unload.\n")); + break; + } +#endif + + return FALSE; +} + +static int +cmd_reload (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ +#ifdef USE_PLUGIN + gboolean by_file = FALSE; + + if (g_str_has_suffix (word[2], "."PLUGIN_SUFFIX)) + by_file = TRUE; + + switch (plugin_reload (sess, word[2], by_file)) + { + case 0: /* error */ + PrintText (sess, _("No such plugin found.\n")); + break; + case 1: /* success */ + return TRUE; + case 2: /* fake plugin, we know it exists but scripts should handle it. */ + return TRUE; + } +#endif + + return FALSE; +} + +static server * +find_server_from_hostname (char *hostname) +{ + GSList *list = serv_list; + server *serv; + + while (list) + { + serv = list->data; + if (!g_ascii_strcasecmp (hostname, serv->hostname) && serv->connected) + return serv; + list = list->next; + } + + return NULL; +} + +static server * +find_server_from_net (void *net) +{ + GSList *list = serv_list; + server *serv; + + while (list) + { + serv = list->data; + if (serv->network == net && serv->connected) + return serv; + list = list->next; + } + + return NULL; +} + +static void +url_join_only (server *serv, char *tbuf, char *channel, char *key) +{ + /* already connected, JOIN only. */ + if (channel == NULL) + return; + tbuf[0] = '#'; + /* tbuf is 4kb */ + safe_strcpy ((tbuf + 1), channel, 256); + if (key) + serv->p_join (serv, tbuf, key); + else + serv->p_join (serv, tbuf, ""); +} + +static int +cmd_url (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (word[2][0]) + { + char *server_name = NULL; + char *port = NULL; + char *channel = NULL; + char *key = NULL; + char *url = g_strdup (word[2]); + int use_ssl = FALSE; + void *net; + server *serv; + + if (parse_irc_url (url, &server_name, &port, &channel, &key, &use_ssl)) + { + /* maybe we're already connected to this net */ + + /* check for "FreeNode" */ + net = servlist_net_find (server_name, NULL, g_ascii_strcasecmp); + /* check for "irc.eu.freenode.net" */ + if (!net) + net = servlist_net_find_from_server (server_name); + + if (net) + { + /* found the network, but are we connected? */ + serv = find_server_from_net (net); + if (serv) + { + url_join_only (serv, tbuf, channel, key); + g_free (url); + return TRUE; + } + } + else + { + /* an un-listed connection */ + serv = find_server_from_hostname (server_name); + if (serv) + { + url_join_only (serv, tbuf, channel, key); + g_free (url); + return TRUE; + } + } + + /* not connected to this net, open new window */ + cmd_newserver (sess, tbuf, word, word_eol); + + } else + fe_open_url (word[2]); + g_free (url); + return TRUE; + } + + return FALSE; +} + +static int +userlist_cb (struct User *user, session *sess) +{ + time_t lt; + + if (!user->lasttalk) + lt = 0; + else + lt = time (0) - user->lasttalk; + PrintTextf (sess, + "\00306%s\t\00314[\00310%-38s\00314] \017ov\0033=\017%d%d away=%u lt\0033=\017%ld\n", + user->nick, user->hostname, user->op, user->voice, user->away, (long)lt); + + return TRUE; +} + +static int +cmd_uselect (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int idx = 2; + int clear = TRUE; + int scroll = FALSE; + + if (strcmp (word[2], "-a") == 0) /* ADD (don't clear selections) */ + { + clear = FALSE; + idx++; + } + if (strcmp (word[idx], "-s") == 0) /* SCROLL TO */ + { + scroll = TRUE; + idx++; + } + /* always valid, no args means clear the selection list */ + fe_uselect (sess, word + idx, clear, scroll); + return TRUE; +} + +static int +cmd_userlist (struct session *sess, char *tbuf, char *word[], + char *word_eol[]) +{ + tree_foreach (sess->usertree, (tree_traverse_func *)userlist_cb, sess); + return TRUE; +} + +static int +wallchop_cb (struct User *user, multidata *data) +{ + if (user->op) + { + if (data->i) + strcat (data->tbuf, ","); + strcat (data->tbuf, user->nick); + data->i++; + } + if (data->i == 5) + { + data->i = 0; + sprintf (data->tbuf + strlen (data->tbuf), + " :[@%s] %s", data->sess->channel, data->reason); + data->sess->server->p_raw (data->sess->server, data->tbuf); + strcpy (data->tbuf, "NOTICE "); + } + + return TRUE; +} + +static int +cmd_wallchop (struct session *sess, char *tbuf, char *word[], + char *word_eol[]) +{ + multidata data; + + if (!(*word_eol[2])) + return FALSE; + + strcpy (tbuf, "NOTICE "); + + data.reason = word_eol[2]; + data.tbuf = tbuf; + data.i = 0; + data.sess = sess; + tree_foreach (sess->usertree, (tree_traverse_func*)wallchop_cb, &data); + + if (data.i) + { + sprintf (tbuf + strlen (tbuf), + " :[@%s] %s", sess->channel, word_eol[2]); + sess->server->p_raw (sess->server, tbuf); + } + + return TRUE; +} + +static int +cmd_hop (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int i = 2; + + while (1) + { + if (!*word[i]) + { + if (i == 2) + return FALSE; + send_channel_modes (sess, tbuf, word, 2, i, '+', 'h', 0); + return TRUE; + } + i++; + } +} + +static int +cmd_voice (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int i = 2; + + while (1) + { + if (!*word[i]) + { + if (i == 2) + return FALSE; + send_channel_modes (sess, tbuf, word, 2, i, '+', 'v', 0); + return TRUE; + } + i++; + } +} + +/* *MUST* be kept perfectly sorted for the bsearch to work */ +const struct commands xc_cmds[] = { + {"ADDBUTTON", cmd_addbutton, 0, 0, 1, + N_("ADDBUTTON <name> <action>, adds a button under the user-list")}, + {"ADDSERVER", cmd_addserver, 0, 0, 1, N_("ADDSERVER <NewNetwork> <hostname/port>, adds a new network with a new server to the network list")}, + {"ALLCHAN", cmd_allchannels, 0, 0, 1, + N_("ALLCHAN <cmd>, sends a command to all channels you're in")}, + {"ALLCHANL", cmd_allchannelslocal, 0, 0, 1, + N_("ALLCHANL <cmd>, sends a command to all channels on the current server")}, + {"ALLSERV", cmd_allservers, 0, 0, 1, + N_("ALLSERV <cmd>, sends a command to all servers you're in")}, + {"AWAY", cmd_away, 1, 0, 1, N_("AWAY [<reason>], sets you away (use /BACK to unset)")}, + {"BACK", cmd_back, 1, 0, 1, N_("BACK, sets you back (not away)")}, + {"BAN", cmd_ban, 1, 1, 1, + N_("BAN <mask> [<bantype>], bans everyone matching the mask from the current channel. If they are already on the channel this doesn't kick them (needs chanop)")}, + {"CHANOPT", cmd_chanopt, 0, 0, 1, N_("CHANOPT [-quiet] <variable> [<value>]")}, + {"CHARSET", cmd_charset, 0, 0, 1, N_("CHARSET [<encoding>], get or set the encoding used for the current connection")}, + {"CLEAR", cmd_clear, 0, 0, 1, N_("CLEAR [ALL|HISTORY|[-]<amount>], Clears the current text window or command history")}, + {"CLOSE", cmd_close, 0, 0, 1, N_("CLOSE [-m], Closes the current tab, closing the window if this is the only open tab, or with the \"-m\" flag, closes all queries.")}, + + {"COUNTRY", cmd_country, 0, 0, 1, + N_("COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia")}, + {"CTCP", cmd_ctcp, 1, 0, 1, + N_("CTCP <nick> <message>, send the CTCP message to nick, common messages are VERSION and USERINFO")}, + {"CYCLE", cmd_cycle, 1, 1, 1, + N_("CYCLE [<channel>], parts the current or given channel and immediately rejoins")}, + {"DCC", cmd_dcc, 0, 0, 1, + N_("\n" + "DCC GET <nick> - accept an offered file\n" + "DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" + "DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" + "DCC LIST - show DCC list\n" + "DCC CHAT <nick> - offer DCC CHAT to someone\n" + "DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" + "DCC CLOSE <type> <nick> <file> example:\n" + " /dcc close send johnsmith file.tar.gz")}, + {"DEBUG", cmd_debug, 0, 0, 1, 0}, + + {"DEHOP", cmd_dehop, 1, 1, 1, + N_("DEHOP <nick>, removes chanhalf-op status from the nick on the current channel (needs chanop)")}, + {"DELBUTTON", cmd_delbutton, 0, 0, 1, + N_("DELBUTTON <name>, deletes a button from under the user-list")}, + {"DEOP", cmd_deop, 1, 1, 1, + N_("DEOP <nick>, removes chanop status from the nick on the current channel (needs chanop)")}, + {"DEVOICE", cmd_devoice, 1, 1, 1, + N_("DEVOICE <nick>, removes voice status from the nick on the current channel (needs chanop)")}, + {"DISCON", cmd_discon, 0, 0, 1, N_("DISCON, Disconnects from server")}, + {"DNS", cmd_dns, 0, 0, 1, N_("DNS <nick|host|ip>, Resolves an IP or hostname")}, + {"DOAT", cmd_doat, 0, 0, 1, N_("DOAT <channel,list,/network> <command>")}, + {"ECHO", cmd_echo, 0, 0, 1, N_("ECHO <text>, Prints text locally")}, +#ifndef WIN32 + {"EXEC", cmd_exec, 0, 0, 1, + N_("EXEC [-o] <command>, runs the command. If -o flag is used then output is sent to current channel, else is printed to current text box")}, +#ifndef __EMX__ + {"EXECCONT", cmd_execc, 0, 0, 1, N_("EXECCONT, sends the process SIGCONT")}, +#endif + {"EXECKILL", cmd_execk, 0, 0, 1, + N_("EXECKILL [-9], kills a running exec in the current session. If -9 is given the process is SIGKILL'ed")}, +#ifndef __EMX__ + {"EXECSTOP", cmd_execs, 0, 0, 1, N_("EXECSTOP, sends the process SIGSTOP")}, + {"EXECWRITE", cmd_execw, 0, 0, 1, N_("EXECWRITE [-q|--], sends data to the processes stdin; use -q flag to quiet/suppress output at text box; use -- flag to stop interpreting arguments as flags, needed if -q itself would occur as data")}, +#endif +#endif +#if 0 + {"EXPORTCONF", cmd_exportconf, 0, 0, 1, N_("EXPORTCONF, exports HexChat settings")}, +#endif + {"FLUSHQ", cmd_flushq, 0, 0, 1, + N_("FLUSHQ, flushes the current server's send queue")}, + {"GATE", cmd_gate, 0, 0, 1, + N_("GATE <host> [<port>], proxies through a host, port defaults to 23")}, + {"GETBOOL", cmd_getbool, 0, 0, 1, "GETBOOL <command> <title> <text>"}, + {"GETFILE", cmd_getfile, 0, 0, 1, "GETFILE [-folder] [-multi] [-save] <command> <title> [<initial>]"}, + {"GETINT", cmd_getint, 0, 0, 1, "GETINT <default> <command> <prompt>"}, + {"GETSTR", cmd_getstr, 0, 0, 1, "GETSTR <default> <command> <prompt>"}, + {"GHOST", cmd_ghost, 1, 0, 1, N_("GHOST <nick> [password], Kills a ghosted nickname")}, + {"GUI", cmd_gui, 0, 0, 1, "GUI [APPLY|ATTACH|DETACH|SHOW|HIDE|FOCUS|FLASH|ICONIFY]\n" + " GUI [MSGBOX <text>|MENU TOGGLE]\n" + " GUI COLOR <n> [-NOOVERRIDE]"}, + {"HELP", cmd_help, 0, 0, 1, 0}, + {"HOP", cmd_hop, 1, 1, 1, + N_("HOP <nick>, gives chanhalf-op status to the nick (needs chanop)")}, + {"ID", cmd_id, 1, 0, 1, N_("ID <password>, identifies yourself to nickserv")}, + {"IGNORE", cmd_ignore, 0, 0, 1, + N_("IGNORE <mask> <types..> <options..>\n" + " mask - host mask to ignore, eg: *!*@*.aol.com\n" + " types - types of data to ignore, one or all of:\n" + " PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" + " options - NOSAVE, QUIET")}, + + {"INVITE", cmd_invite, 1, 0, 1, + N_("INVITE <nick> [<channel>], invites someone to a channel, by default the current channel (needs chanop)")}, + {"JOIN", cmd_join, 1, 0, 0, N_("JOIN <channel>, joins the channel")}, + {"KICK", cmd_kick, 1, 1, 1, + N_("KICK <nick> [reason], kicks the nick from the current channel (needs chanop)")}, + {"KICKBAN", cmd_kickban, 1, 1, 1, + N_("KICKBAN <nick> [reason], bans then kicks the nick from the current channel (needs chanop)")}, + {"KILLALL", cmd_killall, 0, 0, 1, "KILLALL, immediately exit"}, + {"LAGCHECK", cmd_lagcheck, 0, 0, 1, + N_("LAGCHECK, forces a new lag check")}, + {"LASTLOG", cmd_lastlog, 0, 0, 1, + N_("LASTLOG [-h] [-m] [-r] [--] <string>, searches for a string in the buffer\n" + " Use -h to highlight the found string(s)\n" + " Use -m to match case\n" + " Use -r when string is a Regular Expression\n" + " Use -- (double hyphen) to end options when searching for, say, the string '-r'")}, + {"LIST", cmd_list, 1, 0, 1, 0}, + {"LOAD", cmd_load, 0, 0, 1, N_("LOAD [-e] <file>, loads a plugin or script")}, + + {"MDEHOP", cmd_mdehop, 1, 1, 1, + N_("MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)")}, + {"MDEOP", cmd_mdeop, 1, 1, 1, + N_("MDEOP, Mass deop's all chanops in the current channel (needs chanop)")}, + {"ME", cmd_me, 0, 0, 1, + N_("ME <action>, sends the action to the current channel (actions are written in the 3rd person, like /me jumps)")}, + {"MENU", cmd_menu, 0, 0, 1, "MENU [-eX] [-i<ICONFILE>] [-k<mod>,<key>] [-m] [-pX] [-r<X,group>] [-tX] {ADD|DEL} <path> [command] [unselect command]\n" + " See http://hexchat.readthedocs.org/en/latest/plugins.html#controlling-the-gui for more details."}, + {"MHOP", cmd_mhop, 1, 1, 1, + N_("MHOP, Mass hop's all users in the current channel (needs chanop)")}, + {"MKICK", cmd_mkick, 1, 1, 1, + N_("MKICK, Mass kicks everyone except you in the current channel (needs chanop)")}, + {"MODE", cmd_mode, 1, 0, 1, 0}, + {"MOP", cmd_mop, 1, 1, 1, + N_("MOP, Mass op's all users in the current channel (needs chanop)")}, + {"MSG", cmd_msg, 0, 0, 1, N_("MSG <nick> <message>, sends a private message, message \".\" to send to last nick or prefix with \"=\" for dcc chat")}, + + {"NAMES", cmd_names, 1, 0, 1, + N_("NAMES [channel], Lists the nicks on the channel")}, + {"NCTCP", cmd_nctcp, 1, 0, 1, + N_("NCTCP <nick> <message>, Sends a CTCP notice")}, + {"NEWSERVER", cmd_newserver, 0, 0, 1, N_("NEWSERVER [-noconnect] <hostname> [<port>]")}, + {"NICK", cmd_nick, 0, 0, 1, N_("NICK <nickname>, sets your nick")}, + + {"NOTICE", cmd_notice, 1, 0, 1, + N_("NOTICE <nick/channel> <message>, sends a notice")}, + {"NOTIFY", cmd_notify, 0, 0, 1, + N_("NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or adds someone to it")}, + {"OP", cmd_op, 1, 1, 1, + N_("OP <nick>, gives chanop status to the nick (needs chanop)")}, + {"PART", cmd_part, 1, 1, 0, + N_("PART [<channel>] [<reason>], leaves the channel, by default the current one")}, + {"PING", cmd_ping, 1, 0, 1, + N_("PING <nick | channel>, CTCP pings nick or channel")}, + {"QUERY", cmd_query, 0, 0, 1, + N_("QUERY [-nofocus] <nick> [message], opens up a new privmsg window to someone and optionally sends a message")}, + {"QUIET", cmd_quiet, 1, 1, 1, + N_("QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current channel if supported by the server.")}, + {"QUIT", cmd_quit, 0, 0, 1, + N_("QUIT [<reason>], disconnects from the current server")}, + {"QUOTE", cmd_quote, 1, 0, 1, + N_("QUOTE <text>, sends the text in raw form to the server")}, +#ifdef USE_OPENSSL + {"RECONNECT", cmd_reconnect, 0, 0, 1, + N_("RECONNECT [-ssl|-ssl-noverify] [<host>] [<port>] [<password>], Can be called just as /RECONNECT to reconnect to the current server or with /RECONNECT ALL to reconnect to all the open servers")}, +#else + {"RECONNECT", cmd_reconnect, 0, 0, 1, + N_("RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT to reconnect to the current server or with /RECONNECT ALL to reconnect to all the open servers")}, +#endif + {"RECV", cmd_recv, 1, 0, 1, N_("RECV <text>, send raw data to HexChat, as if it was received from the IRC server")}, + {"RELOAD", cmd_reload, 0, 0, 1, N_("RELOAD <name>, reloads a plugin or script")}, + {"SAY", cmd_say, 0, 0, 1, + N_("SAY <text>, sends the text to the object in the current window")}, + {"SEND", cmd_send, 0, 0, 1, N_("SEND <nick> [<file>]")}, +#ifdef USE_OPENSSL + {"SERVCHAN", cmd_servchan, 0, 0, 1, + N_("SERVCHAN [-insecure|-ssl|-ssl-noverify] <host> <port> <channel>, connects and joins a channel using ssl unless otherwise specified")}, +#else + {"SERVCHAN", cmd_servchan, 0, 0, 1, + N_("SERVCHAN <host> <port> <channel>, connects and joins a channel")}, +#endif +#ifdef USE_OPENSSL + {"SERVER", cmd_server, 0, 0, 1, + N_("SERVER [-insecure|-ssl|-ssl-noverify] <host> [<port>] [<password>], connects to a server using ssl unless otherwise specified, the default port is 6697 for ssl connections and 6667 for insecure connections")}, +#else + {"SERVER", cmd_server, 0, 0, 1, + N_("SERVER <host> [<port>] [<password>], connects to a server, the default port is 6667")}, +#endif + {"SET", cmd_set, 0, 0, 1, N_("SET [-e] [-off|-on] [-quiet] <variable> [<value>]")}, + {"SETCURSOR", cmd_setcursor, 0, 0, 1, N_("SETCURSOR [-|+]<position>, reposition the cursor in the inputbox")}, + {"SETTAB", cmd_settab, 0, 0, 1, N_("SETTAB <new name>, change a tab's name, tab_trunc limit still applies")}, + {"SETTEXT", cmd_settext, 0, 0, 1, N_("SETTEXT <new text>, replace the text in the input box")}, + {"SPLAY", cmd_splay, 0, 0, 1, "SPLAY <soundfile>"}, + {"TOPIC", cmd_topic, 1, 1, 1, + N_("TOPIC [<topic>], sets the topic if one is given, else shows the current topic")}, + {"TRAY", cmd_tray, 0, 0, 1, + N_("\nTRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" + "TRAY -f <filename> Set tray to a fixed icon.\n" + "TRAY -i <number> Blink tray with an internal icon.\n" + "TRAY -t <text> Set the tray tooltip.\n" + "TRAY -b <title> <text> Set the tray balloon." + )}, + {"UNBAN", cmd_unban, 1, 1, 1, + N_("UNBAN <mask> [<mask>...], unbans the specified masks.")}, + {"UNIGNORE", cmd_unignore, 0, 0, 1, N_("UNIGNORE <mask> [QUIET]")}, + {"UNLOAD", cmd_unload, 0, 0, 1, N_("UNLOAD <name>, unloads a plugin or script")}, + {"UNQUIET", cmd_unquiet, 1, 1, 1, + N_("UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the server.")}, + {"URL", cmd_url, 0, 0, 1, N_("URL <url>, opens a URL in your browser")}, + {"USELECT", cmd_uselect, 0, 1, 0, + N_("USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist")}, + {"USERLIST", cmd_userlist, 1, 1, 1, 0}, + {"VOICE", cmd_voice, 1, 1, 1, + N_("VOICE <nick>, gives voice status to someone (needs chanop)")}, + {"WALLCHOP", cmd_wallchop, 1, 1, 1, + N_("WALLCHOP <message>, sends the message to all chanops on the current channel")}, + {0, 0, 0, 0, 0, 0} +}; + + +static int +command_compare (const void *a, const void *b) +{ + return g_ascii_strcasecmp (a, ((struct commands *)b)->name); +} + +static struct commands * +find_internal_command (char *name) +{ + /* the "-1" is to skip the NULL terminator */ + return bsearch (name, xc_cmds, (sizeof (xc_cmds) / + sizeof (xc_cmds[0])) - 1, sizeof (xc_cmds[0]), command_compare); +} + +static gboolean +usercommand_show_help (session *sess, char *name) +{ + struct popup *pop; + gboolean found = FALSE; + char buf[1024]; + GSList *list; + + list = command_list; + while (list) + { + pop = (struct popup *) list->data; + if (!g_ascii_strcasecmp (pop->name, name)) + { + g_snprintf (buf, sizeof(buf), _("User Command for: %s\n"), pop->cmd); + PrintText (sess, buf); + + found = TRUE; + } + list = list->next; + } + + return found; +} + +static void +help (session *sess, char *tbuf, char *helpcmd, int quiet) +{ + struct commands *cmd; + + if (plugin_show_help (sess, helpcmd)) + return; + + if (usercommand_show_help (sess, helpcmd)) + return; + + cmd = find_internal_command (helpcmd); + if (cmd) + { + if (cmd->help) + { + g_snprintf (tbuf, TBUFSIZE, _("Usage: %s\n"), _(cmd->help)); + PrintText (sess, tbuf); + } else + { + if (!quiet) + PrintText (sess, _("\nNo help available on that command.\n")); + } + return; + } + + if (!quiet) + PrintText (sess, _("No such command.\n")); +} + +/* inserts %a, %c, %d etc into buffer. Also handles &x %x for word/word_eol. * + * returns 2 on buffer overflow + * returns 1 on success * + * returns 0 on bad-args-for-user-command * + * - word/word_eol args might be NULL * + * - this beast is used for UserCommands, UserlistButtons and CTCP replies */ + +int +auto_insert (char *dest, gsize destlen, unsigned char *src, char *word[], + char *word_eol[], char *a, char *c, char *d, char *e, char *h, + char *n, char *s, char *u) +{ + int num; + char buf[32]; + time_t now; + struct tm *tm_ptr; + char *utf; + gsize utf_len; + char *orig = dest; + + destlen--; + + while (src[0]) + { + if (src[0] == '%' || src[0] == '&') + { + if (isdigit ((unsigned char) src[1])) + { + if (isdigit ((unsigned char) src[2]) && isdigit ((unsigned char) src[3])) + { + buf[0] = src[1]; + buf[1] = src[2]; + buf[2] = src[3]; + buf[3] = 0; + dest[0] = atoi (buf); + utf = g_locale_to_utf8 (dest, 1, 0, &utf_len, 0); + if (utf) + { + if ((dest - orig) + utf_len >= destlen) + { + g_free (utf); + return 2; + } + + memcpy (dest, utf, utf_len); + g_free (utf); + dest += utf_len; + } + src += 3; + } else + { + if (word) + { + src++; + num = src[0] - '0'; /* ascii to decimal */ + if (*word[num] == 0) + return 0; + + if (src[-1] == '%') + utf = word[num]; + else + utf = word_eol[num]; + + /* avoid recusive usercommand overflow */ + if ((dest - orig) + strlen (utf) >= destlen) + return 2; + + strcpy (dest, utf); + dest += strlen (dest); + } + } + } else + { + if (src[0] == '&') + goto lamecode; + src++; + utf = NULL; + switch (src[0]) + { + case '%': + if ((dest - orig) + 2u >= destlen) + return 2; + dest[0] = '%'; + dest[1] = 0; + dest++; + break; + case 'a': + utf = a; break; + case 'c': + utf = c; break; + case 'd': + utf = d; break; + case 'e': + utf = e; break; + case 'h': + utf = h; break; + case 'm': + utf = get_sys_str (1); break; + case 'n': + utf = n; break; + case 's': + utf = s; break; + case 't': + now = time (0); + utf = ctime (&now); + utf[19] = 0; + break; + case 'u': + utf = u; break; + case 'v': + utf = PACKAGE_VERSION; break; + break; + case 'y': + now = time (0); + tm_ptr = localtime (&now); + g_snprintf (buf, sizeof (buf), "%4d%02d%02d", 1900 + + tm_ptr->tm_year, 1 + tm_ptr->tm_mon, tm_ptr->tm_mday); + utf = buf; + break; + default: + src--; + goto lamecode; + } + + if (utf) + { + if ((dest - orig) + strlen (utf) >= destlen) + return 2; + strcpy (dest, utf); + dest += strlen (dest); + } + + } + src++; + } else + { + utf_len = g_utf8_skip[src[0]]; + + if ((dest - orig) + utf_len >= destlen) + return 2; + + if (utf_len == 1) + { + lamecode: + dest[0] = src[0]; + dest++; + src++; + } else + { + memcpy (dest, src, utf_len); + dest += utf_len; + src += utf_len; + } + } + } + + dest[0] = 0; + + return 1; +} + +void +check_special_chars (char *cmd, int do_ascii) /* check for %X */ +{ + int occur = 0; + int len = strlen (cmd); + char *buf, *utf; + char tbuf[4]; + int i = 0, j = 0; + gsize utf_len; + + if (!len) + return; + + buf = g_malloc (len + 1); + + while (cmd[j]) + { + switch (cmd[j]) + { + case '%': + occur++; + if ( do_ascii && + j + 3 < len && + (isdigit ((unsigned char) cmd[j + 1]) && isdigit ((unsigned char) cmd[j + 2]) && + isdigit ((unsigned char) cmd[j + 3]))) + { + tbuf[0] = cmd[j + 1]; + tbuf[1] = cmd[j + 2]; + tbuf[2] = cmd[j + 3]; + tbuf[3] = 0; + buf[i] = atoi (tbuf); + utf = g_locale_to_utf8 (buf + i, 1, 0, &utf_len, 0); + if (utf) + { + memcpy (buf + i, utf, utf_len); + g_free (utf); + i += (utf_len - 1); + } + j += 3; + } else + { + switch (cmd[j + 1]) + { + case 'R': + buf[i] = '\026'; + break; + case 'U': + buf[i] = '\037'; + break; + case 'B': + buf[i] = '\002'; + break; + case 'I': + buf[i] = '\035'; + break; + case 'S': + buf[i] = '\036'; + break; + case 'C': + buf[i] = '\003'; + break; + case 'O': + buf[i] = '\017'; + break; + case 'H': /* CL: invisible text code */ + buf[i] = HIDDEN_CHAR; + break; + case '%': + buf[i] = '%'; + break; + default: + buf[i] = '%'; + j--; + break; + } + j++; + break; + default: + buf[i] = cmd[j]; + } + } + j++; + i++; + } + buf[i] = 0; + if (occur) + strcpy (cmd, buf); + g_free (buf); +} + +typedef struct +{ + char *nick; + int len; + struct User *best; + int bestlen; + char *space; + char *tbuf; +} nickdata; + +static int +nick_comp_cb (struct User *user, nickdata *data) +{ + int lenu; + + if (!rfc_ncasecmp (user->nick, data->nick, data->len)) + { + lenu = strlen (user->nick); + if (lenu == data->len) + { + g_snprintf (data->tbuf, TBUFSIZE, "%s%s", user->nick, data->space); + data->len = -1; + return FALSE; + } else if (lenu < data->bestlen) + { + data->bestlen = lenu; + data->best = user; + } + } + + return TRUE; +} + +static void +perform_nick_completion (struct session *sess, char *cmd, char *tbuf) +{ + int len; + char *space = strchr (cmd, ' '); + if (space && space != cmd) + { + if (space[-1] == prefs.hex_completion_suffix[0] && space - 1 != cmd) + { + len = space - cmd - 1; + if (len < NICKLEN) + { + char nick[NICKLEN]; + nickdata data; + + memcpy (nick, cmd, len); + nick[len] = 0; + + data.nick = nick; + data.len = len; + data.bestlen = INT_MAX; + data.best = NULL; + data.tbuf = tbuf; + data.space = space - 1; + tree_foreach (sess->usertree, (tree_traverse_func *)nick_comp_cb, &data); + + if (data.len == -1) + return; + + if (data.best) + { + g_snprintf (tbuf, TBUFSIZE, "%s%s", data.best->nick, space - 1); + return; + } + } + } + } + + strcpy (tbuf, cmd); +} + +static void +user_command (session * sess, char *tbuf, char *cmd, char *word[], + char *word_eol[]) +{ + if (!auto_insert (tbuf, 2048, cmd, word, word_eol, "", sess->channel, "", + server_get_network (sess->server, TRUE), "", + sess->server->nick, "", "")) + { + PrintText (sess, _("Bad arguments for user command.\n")); + return; + } + + handle_command (sess, tbuf, TRUE); +} + +/* handle text entered without a hex_input_command_char prefix */ + +static void +handle_say (session *sess, char *text, int check_spch) +{ + struct DCC *dcc; + char *word[PDIWORDS+1]; + char *word_eol[PDIWORDS+1]; + char *pdibuf; + char *newcmd; + int len; + int newcmdlen; + message_tags_data no_tags = MESSAGE_TAGS_DATA_INIT; + + if (strcmp (sess->channel, "(lastlog)") == 0) + { + lastlog (sess->lastlog_sess, text, sess->lastlog_flags); + return; + } + + len = strlen (text); + pdibuf = g_malloc (len + 1); + newcmdlen = MAX(len + NICKLEN + 1, TBUFSIZE); + newcmd = g_malloc (newcmdlen); + + if (check_spch && prefs.hex_input_perc_color) + check_special_chars (text, prefs.hex_input_perc_ascii); + + /* Python relies on this */ + word[PDIWORDS] = NULL; + word_eol[PDIWORDS] = NULL; + + /* split the text into words and word_eol */ + process_data_init (pdibuf, text, word, word_eol, TRUE, FALSE); + + /* a command of "" can be hooked for non-commands */ + if (plugin_emit_command (sess, "", word, word_eol)) + goto xit; + + /* incase a plugin did /close */ + if (!is_session (sess)) + goto xit; + + if (!sess->channel[0] || sess->type == SESS_SERVER || sess->type == SESS_NOTICES || sess->type == SESS_SNOTICES) + { + notj_msg (sess); + goto xit; + } + + if (prefs.hex_completion_auto) + perform_nick_completion (sess, text, newcmd); + else + safe_strcpy (newcmd, text, newcmdlen); + + text = newcmd; + + if (sess->type == SESS_DIALOG) + { + /* try it via dcc, if possible */ + dcc = dcc_write_chat (sess->channel, text); + if (dcc) + { + inbound_chanmsg (sess->server, NULL, sess->channel, + sess->server->nick, text, TRUE, FALSE, &no_tags); + set_topic (sess, net_ip (dcc->addr), net_ip (dcc->addr)); + goto xit; + } + } + + if (sess->server->connected) + { + char *split_text = NULL; + int cmd_length = 13; /* " PRIVMSG ", " ", :, \r, \n */ + int offset = 0; + + while ((split_text = split_up_text (sess, text + offset, cmd_length, split_text))) + { + inbound_chanmsg (sess->server, sess, sess->channel, sess->server->nick, + split_text, TRUE, FALSE, &no_tags); + sess->server->p_message (sess->server, sess->channel, split_text); + + if (*split_text) + offset += strlen(split_text); + + g_free (split_text); + } + + inbound_chanmsg (sess->server, sess, sess->channel, sess->server->nick, + text + offset, TRUE, FALSE, &no_tags); + sess->server->p_message (sess->server, sess->channel, text + offset); + } else + { + notc_msg (sess); + } + +xit: + g_free (pdibuf); + + g_free (newcmd); +} + +char * +command_insert_vars (session *sess, char *cmd) +{ + int pos; + GString *expanded; + ircnet *mynet = (ircnet *) sess->server->network; + + if (!mynet) /* shouldn't really happen */ + { + return g_strdup (cmd); /* the return value will be freed so we must srtdup() it */ + } + + expanded = g_string_new (NULL); + + while (strchr (cmd, '%') != NULL) + { + pos = (int) (strchr (cmd, '%') - cmd); /* offset to the first '%' */ + g_string_append_len (expanded, cmd, pos); /* copy contents till the '%' */ + cmd += pos + 1; /* jump to the char after the '%' */ + + switch (cmd[0]) + { + case 'n': + if (mynet->nick) + { + g_string_append (expanded, mynet->nick); + } + else + { + g_string_append (expanded, prefs.hex_irc_nick1); + } + cmd++; + break; + + case 'p': + if (mynet->pass) + { + g_string_append (expanded, mynet->pass); + } + cmd++; + break; + + case 'r': + if (mynet->real) + { + g_string_append (expanded, mynet->real); + } + else + { + g_string_append (expanded, prefs.hex_irc_real_name); + } + cmd++; + break; + + case 'u': + if (mynet->user) + { + g_string_append (expanded, mynet->user); + } + else + { + g_string_append (expanded, prefs.hex_irc_user_name); + } + cmd++; + break; + + default: /* unsupported character? copy it along with the '%'! */ + cmd--; + g_string_append_len (expanded, cmd, 2); + cmd += 2; + break; + } + } + + g_string_append (expanded, cmd); /* copy any remaining string after the last '%' */ + + return g_string_free (expanded, FALSE); +} + +/* handle a command, without the '/' prefix */ + +int +handle_command (session *sess, char *cmd, int check_spch) +{ + struct popup *pop; + int user_cmd = FALSE; + GSList *list; + char *word[PDIWORDS+1]; + char *word_eol[PDIWORDS+1]; + static int command_level = 0; + struct commands *int_cmd; + char *pdibuf; + char *tbuf; + int len; + int ret = TRUE; + + if (command_level > 99) + { + fe_message (_("Too many recursive usercommands, aborting."), FE_MSG_ERROR); + return TRUE; + } + command_level++; + /* anything below MUST DEC command_level before returning */ + + len = strlen (cmd); + pdibuf = g_malloc (len + 1); + tbuf = g_malloc (MAX(TBUFSIZE, (len * 2) + 1)); + + /* split the text into words and word_eol */ + process_data_init (pdibuf, cmd, word, word_eol, TRUE, TRUE); + + /* ensure an empty string at index 32 for cmd_deop etc */ + /* (internal use only, plugins can still only read 1-31). */ + word[PDIWORDS] = "\000\000"; + word_eol[PDIWORDS] = "\000\000"; + + int_cmd = find_internal_command (word[1]); + /* redo it without quotes processing, for some commands like /JOIN */ + if (int_cmd && !int_cmd->handle_quotes) + { + process_data_init (pdibuf, cmd, word, word_eol, FALSE, FALSE); + } + + if (check_spch && prefs.hex_input_perc_color) + { + check_special_chars (cmd, prefs.hex_input_perc_ascii); + } + + if (plugin_emit_command (sess, word[1], word, word_eol)) + { + goto xit; + } + + /* incase a plugin did /close */ + if (!is_session (sess)) + { + goto xit; + } + + /* first see if it's a userCommand */ + list = command_list; + while (list) + { + pop = (struct popup *) list->data; + if (!g_ascii_strcasecmp (pop->name, word[1])) + { + user_command (sess, tbuf, pop->cmd, word, word_eol); + user_cmd = TRUE; + } + list = list->next; + } + + if (user_cmd) + { + goto xit; + } + + /* now check internal commands */ + int_cmd = find_internal_command (word[1]); + + if (int_cmd) + { + if (int_cmd->needserver && !sess->server->connected) + { + notc_msg (sess); + } + else if (int_cmd->needchannel && !sess->channel[0]) + { + notj_msg (sess); + } + else + { + switch (int_cmd->callback (sess, tbuf, word, word_eol)) + { + case FALSE: + help (sess, tbuf, int_cmd->name, TRUE); + break; + case 2: + ret = FALSE; + goto xit; + } + } + } + else + { + if (!sess->server->connected) + { + PrintTextf (sess, _("Unknown Command %s. Try /help\n"), word[1]); + } + else + { + /* unknown command, just send it to the server and hope */ + sess->server->p_raw (sess->server, cmd); + } + } + +xit: + command_level--; + + g_free (pdibuf); + g_free (tbuf); + + return ret; +} + +/* handle one line entered into the input box */ + +static int +handle_user_input (session *sess, char *text, int history, int nocommand) +{ + if (*text == '\0') + return 1; + + if (history) + history_add (&sess->history, text); + + /* is it NOT a command, just text? */ + if (nocommand || text[0] != prefs.hex_input_command_char[0]) + { + handle_say (sess, text, TRUE); + return 1; + } + + /* check for // */ + if (text[0] == prefs.hex_input_command_char[0] && text[1] == prefs.hex_input_command_char[0]) + { + handle_say (sess, text + 1, TRUE); + return 1; + } + +#if 0 /* Who would remember all this? */ + if (prefs.hex_input_command_char[0] == '/') + { + int i; + const char *unix_dirs [] = { + "/bin/", + "/boot/", + "/dev/", + "/etc/", + "/home/", + "/lib/", + "/lost+found/", + "/mnt/", + "/opt/", + "/proc/", + "/root/", + "/sbin/", + "/tmp/", + "/usr/", + "/var/", + "/gnome/", + NULL + }; + for (i = 0; unix_dirs[i] != NULL; i++) + if (strncmp (text, unix_dirs[i], strlen (unix_dirs[i]))==0) + { + handle_say (sess, text, TRUE); + return 1; + } + } +#endif + + return handle_command (sess, text + 1, TRUE); +} + +/* changed by Steve Green. Macs sometimes paste with imbedded \r */ +void +handle_multiline (session *sess, char *cmd, int history, int nocommand) +{ + while (*cmd) + { + char *cr = cmd + strcspn (cmd, "\n\r"); + int end_of_string = *cr == 0; + *cr = 0; + if (!handle_user_input (sess, cmd, history, nocommand)) + return; + if (end_of_string) + break; + cmd = cr + 1; + } +} + +/*void +handle_multiline (session *sess, char *cmd, int history, int nocommand) +{ + char *cr; + + cr = strchr (cmd, '\n'); + if (cr) + { + while (1) + { + if (cr) + *cr = 0; + if (!handle_user_input (sess, cmd, history, nocommand)) + return; + if (!cr) + break; + cmd = cr + 1; + if (*cmd == 0) + break; + cr = strchr (cmd, '\n'); + } + } else + { + handle_user_input (sess, cmd, history, nocommand); + } +}*/ diff --git a/hexchat/src/common/outbound.h b/hexchat/src/common/outbound.h new file mode 100644 index 0000000..490a58c --- /dev/null +++ b/hexchat/src/common/outbound.h @@ -0,0 +1,42 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_OUTBOUND_H +#define HEXCHAT_OUTBOUND_H + +#include "hexchat.h" + +extern const struct commands xc_cmds[]; +extern GSList *menu_list; + +int auto_insert (char *dest, gsize destlen, unsigned char *src, char *word[], char *word_eol[], + char *a, char *c, char *d, char *e, char *h, char *n, char *s, char *u); +char *command_insert_vars (session *sess, char *cmd); +int handle_command (session *sess, char *cmd, int check_spch); +void process_data_init (char *buf, char *cmd, char *word[], char *word_eol[], gboolean handle_quotes, gboolean allow_escape_quotes); +void handle_multiline (session *sess, char *cmd, int history, int nocommand); +void check_special_chars (char *cmd, int do_ascii); +void notc_msg (session *sess); +void server_sendpart (server * serv, char *channel, char *reason); +void server_sendquit (session * sess); +int menu_streq (const char *s1, const char *s2, int def); +session *open_query (server *serv, char *nick, gboolean focus_existing); +gboolean load_perform_file (session *sess, char *file); + +#endif diff --git a/hexchat/src/common/plugin-identd.c b/hexchat/src/common/plugin-identd.c new file mode 100644 index 0000000..a8086d6 --- /dev/null +++ b/hexchat/src/common/plugin-identd.c @@ -0,0 +1,281 @@ +/* HexChat +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2 of the License, or +* (at your option) any later version. +* +* This program 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 General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA +*/ + +#include "config.h" + +#include <string.h> +#include <gio/gio.h> +#include "hexchat-plugin.h" + +#define _(x) hexchat_gettext(ph,x) +static void identd_start_server (void); + +static hexchat_plugin *ph; +static GSocketService *service; +static GHashTable *responses; + +typedef struct ident_info +{ + GSocketConnection *conn; + gchar *username; +} ident_info; + +static void +stream_close_ready (GObject *source, GAsyncResult *res, gpointer userdata) +{ + GError *err = NULL; + + if (!g_io_stream_close_finish (G_IO_STREAM(source), res, &err)) + { + g_warning ("%s", err->message); + g_error_free (err); + } + + g_object_unref (source); +} + +static void +ident_info_free (ident_info *info) +{ + if (G_LIKELY(info)) + { + g_io_stream_close_async (G_IO_STREAM(info->conn), G_PRIORITY_DEFAULT, + NULL, stream_close_ready, NULL); + g_free (info->username); + g_free (info); + } +} + +static int +identd_cleanup_response_cb (gpointer userdata) +{ + g_return_val_if_fail (responses != NULL, 0); + + g_hash_table_remove (responses, userdata); + + return 0; +} + +static int +identd_command_cb (char *word[], char *word_eol[], void *userdata) +{ + g_return_val_if_fail (responses != NULL, HEXCHAT_EAT_ALL); + + if (!g_strcmp0 (word[2], "reload")) + { + if (service) + { + g_socket_service_stop (service); + g_clear_object (&service); + } + + identd_start_server (); + + if (service) + return HEXCHAT_EAT_ALL; + } + + if (service == NULL) /* If we are not running plugins can handle it */ + return HEXCHAT_EAT_HEXCHAT; + + if (word[2] && *word[2] && word[3] && *word[3]) + { + guint64 port = g_ascii_strtoull (word[2], NULL, 0); + + if (port && port <= G_MAXUINT16) + { + g_hash_table_insert (responses, GINT_TO_POINTER (port), g_strdup (word[3])); + /* Automatically remove entry after 30 seconds */ + hexchat_hook_timer (ph, 30000, identd_cleanup_response_cb, GINT_TO_POINTER (port)); + } + } + else + { + hexchat_command (ph, "HELP IDENTD"); + } + + return HEXCHAT_EAT_ALL; +} + +static void +identd_write_ready (GOutputStream *stream, GAsyncResult *res, ident_info *info) +{ + g_output_stream_write_finish (stream, res, NULL); + + ident_info_free (info); +} + +static void +identd_read_ready (GDataInputStream *in_stream, GAsyncResult *res, ident_info *info) +{ + GSocketAddress *sok_addr; + GOutputStream *out_stream; + guint64 local, remote; + gchar *read_buf, buf[512], *p; + + if ((read_buf = g_data_input_stream_read_line_finish (in_stream, res, NULL, NULL))) + { + local = g_ascii_strtoull (read_buf, NULL, 0); + p = strchr (read_buf, ','); + if (!p) + { + g_free (read_buf); + goto cleanup; + } + + remote = g_ascii_strtoull (p + 1, NULL, 0); + g_free (read_buf); + + g_snprintf (buf, sizeof (buf), "%"G_GUINT16_FORMAT", %"G_GUINT16_FORMAT" : ", + (guint16)MIN(local, G_MAXUINT16), (guint16)MIN(remote, G_MAXUINT16)); + + if (!local || !remote || local > G_MAXUINT16 || remote > G_MAXUINT16) + { + g_strlcat (buf, "ERROR : INVALID-PORT\r\n", sizeof (buf)); + g_debug ("Identd: Received invalid port"); + } + else + { + info->username = g_hash_table_lookup (responses, GINT_TO_POINTER (local)); + if (!info->username) + { + g_strlcat (buf, "ERROR : NO-USER\r\n", sizeof (buf)); + g_debug ("Identd: Received invalid local port"); + } + else + { + const gsize len = strlen (buf); + + g_hash_table_steal (responses, GINT_TO_POINTER (local)); + + g_snprintf (buf + len, sizeof (buf) - len, "USERID : UNIX : %s\r\n", info->username); + + if ((sok_addr = g_socket_connection_get_remote_address (info->conn, NULL))) + { + GInetAddress *inet_addr; + gchar *addr; + + inet_addr = g_inet_socket_address_get_address (G_INET_SOCKET_ADDRESS (sok_addr)); + addr = g_inet_address_to_string (inet_addr); + + hexchat_printf (ph, _("*\tServicing ident request from %s as %s"), addr, info->username); + + g_object_unref (sok_addr); + g_object_unref (inet_addr); + g_free (addr); + } + } + } + + out_stream = g_io_stream_get_output_stream (G_IO_STREAM (info->conn)); + g_output_stream_write_async (out_stream, buf, strlen (buf), G_PRIORITY_DEFAULT, + NULL, (GAsyncReadyCallback)identd_write_ready, info); + } + + return; + +cleanup: + ident_info_free (info); +} + +static gboolean +identd_incoming_cb (GSocketService *service, GSocketConnection *conn, + GObject *source, gpointer userdata) +{ + GDataInputStream *data_stream; + GInputStream *stream; + ident_info *info; + + info = g_new0 (ident_info, 1); + + info->conn = conn; + g_object_ref (conn); + + stream = g_io_stream_get_input_stream (G_IO_STREAM (conn)); + data_stream = g_data_input_stream_new (stream); + g_data_input_stream_set_newline_type (data_stream, G_DATA_STREAM_NEWLINE_TYPE_CR_LF); + g_data_input_stream_read_line_async (data_stream, G_PRIORITY_DEFAULT, + NULL, (GAsyncReadyCallback)identd_read_ready, info); + + return TRUE; +} + +static void +identd_start_server (void) +{ + GError *error = NULL; + int enabled, port = 113; + + if (hexchat_get_prefs (ph, "identd_server", NULL, &enabled) == 3) + { + if (!enabled) + return; + } + if (hexchat_get_prefs (ph, "identd_port", NULL, &port) == 2 && (port <= 0 || port > G_MAXUINT16)) + { + port = 113; + } + + service = g_socket_service_new (); + + g_socket_listener_add_inet_port (G_SOCKET_LISTENER (service), port, NULL, &error); + if (error) + { + hexchat_printf (ph, _("*\tError starting identd server: %s"), error->message); + + g_error_free (error); + g_clear_object (&service); + return; + } + /*hexchat_printf (ph, "*\tIdentd listening on port: %d", port); */ + + g_signal_connect (G_OBJECT (service), "incoming", G_CALLBACK(identd_incoming_cb), NULL); + g_socket_service_start (service); +} + +int +identd_plugin_init (hexchat_plugin *plugin_handle, char **plugin_name, + char **plugin_desc, char **plugin_version, char *arg) +{ + ph = plugin_handle; + *plugin_name = ""; + *plugin_desc = ""; + *plugin_version = ""; + + + responses = g_hash_table_new_full (NULL, NULL, NULL, g_free); + hexchat_hook_command (ph, "IDENTD", HEXCHAT_PRI_NORM, identd_command_cb, + _("IDENTD <port> <username>"), NULL); + + identd_start_server (); + + return 1; /* This must always succeed for /identd to work */ +} + +int +identd_plugin_deinit (void) +{ + if (service) + { + g_socket_service_stop (service); + g_object_unref (service); + } + + g_hash_table_destroy (responses); + + return 1; +} diff --git a/hexchat/src/common/plugin-identd.h b/hexchat/src/common/plugin-identd.h new file mode 100644 index 0000000..6aee9f6 --- /dev/null +++ b/hexchat/src/common/plugin-identd.h @@ -0,0 +1,28 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_PLUGIN_IDENTD_H +#define HEXCHAT_PLUGIN_IDENTD_H + +int identd_plugin_init (hexchat_plugin *plugin_handle, char **plugin_name, + char **plugin_desc, char **plugin_version, char *arg); + +int identd_plugin_deinit (void); + +#endif diff --git a/hexchat/src/common/plugin-timer.c b/hexchat/src/common/plugin-timer.c new file mode 100644 index 0000000..17f11ce --- /dev/null +++ b/hexchat/src/common/plugin-timer.c @@ -0,0 +1,231 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "config.h" + +#include <stdlib.h> +#include <string.h> +#include <glib.h> +#include "hexchat-plugin.h" + +#ifdef WIN32 +#define g_ascii_strcasecmp stricmp +#endif + +#define _(x) hexchat_gettext(ph,x) + +static hexchat_plugin *ph; /* plugin handle */ +static GSList *timer_list = NULL; + +#define STATIC +#define HELP \ +"Usage: TIMER [-refnum <num>] [-repeat <num>] <seconds> <command>\n" \ +" TIMER [-quiet] -delete <num>" + +typedef struct +{ + hexchat_hook *hook; + hexchat_context *context; + char *command; + int ref; + int repeat; + int timeout; + unsigned int forever:1; +} timer; + +static void +timer_del (timer *tim) +{ + timer_list = g_slist_remove (timer_list, tim); + g_free (tim->command); + hexchat_unhook (ph, tim->hook); + g_free (tim); +} + +static void +timer_del_ref (int ref, int quiet) +{ + GSList *list; + timer *tim; + + list = timer_list; + while (list) + { + tim = list->data; + if (tim->ref == ref) + { + timer_del (tim); + if (!quiet) + hexchat_printf (ph, _("Timer %d deleted.\n"), ref); + return; + } + list = list->next; + } + if (!quiet) + hexchat_print (ph, _("No such ref number found.\n")); +} + +static int +timeout_cb (timer *tim) +{ + if (hexchat_set_context (ph, tim->context)) + { + hexchat_command (ph, tim->command); + + if (tim->forever) + return 1; + + tim->repeat--; + if (tim->repeat > 0) + return 1; + } + + timer_del (tim); + return 0; +} + +static void +timer_add (int ref, int timeout, int repeat, char *command) +{ + timer *tim; + GSList *list; + + if (ref == 0) + { + ref = 1; + list = timer_list; + while (list) + { + tim = list->data; + if (tim->ref >= ref) + ref = tim->ref + 1; + list = list->next; + } + } + + tim = g_new (timer, 1); + tim->ref = ref; + tim->repeat = repeat; + tim->timeout = timeout; + tim->command = g_strdup (command); + tim->context = hexchat_get_context (ph); + tim->forever = FALSE; + + if (repeat == 0) + tim->forever = TRUE; + + tim->hook = hexchat_hook_timer (ph, timeout, (void *)timeout_cb, tim); + timer_list = g_slist_append (timer_list, tim); +} + +static void +timer_showlist (void) +{ + GSList *list; + timer *tim; + + if (timer_list == NULL) + { + hexchat_print (ph, _("No timers installed.\n")); + hexchat_print (ph, _(HELP)); + return; + } + /* 00000 00000000 0000000 abc */ + hexchat_print (ph, _("\026 Ref# Seconds Repeat Command \026\n")); + list = timer_list; + while (list) + { + tim = list->data; + hexchat_printf (ph, _("%5d %8.1f %7d %s\n"), tim->ref, tim->timeout / 1000.0f, + tim->repeat, tim->command); + list = list->next; + } +} + +static int +timer_cb (char *word[], char *word_eol[], void *userdata) +{ + int repeat = 1; + double timeout; + int offset = 0; + int ref = 0; + int quiet = FALSE; + char *command; + + if (!word[2][0]) + { + timer_showlist (); + return HEXCHAT_EAT_HEXCHAT; + } + + if (g_ascii_strcasecmp (word[2], "-quiet") == 0) + { + quiet = TRUE; + offset++; + } + + if (g_ascii_strcasecmp (word[2 + offset], "-delete") == 0) + { + timer_del_ref (atoi (word[3 + offset]), quiet); + return HEXCHAT_EAT_HEXCHAT; + } + + if (g_ascii_strcasecmp (word[2 + offset], "-refnum") == 0) + { + ref = atoi (word[3 + offset]); + offset += 2; + } + + if (g_ascii_strcasecmp (word[2 + offset], "-repeat") == 0) + { + repeat = atoi (word[3 + offset]); + offset += 2; + } + + timeout = g_ascii_strtod (word[2 + offset], NULL); + command = word_eol[3 + offset]; + + if (timeout < 0.1 || timeout * 1000 > INT_MAX || !command[0]) + hexchat_print (ph, HELP); + else + timer_add (ref, (int) timeout * 1000, repeat, command); + + return HEXCHAT_EAT_HEXCHAT; +} + +int +#ifdef STATIC +timer_plugin_init +#else +hexchat_plugin_init +#endif + (hexchat_plugin *plugin_handle, char **plugin_name, + char **plugin_desc, char **plugin_version, char *arg) +{ + /* we need to save this for use with any hexchat_* functions */ + ph = plugin_handle; + + *plugin_name = "Timer"; + *plugin_desc = "IrcII style /TIMER command"; + *plugin_version = ""; + + hexchat_hook_command (ph, "TIMER", HEXCHAT_PRI_NORM, timer_cb, _(HELP), 0); + + return 1; /* return 1 for success */ +} diff --git a/hexchat/src/common/plugin-timer.h b/hexchat/src/common/plugin-timer.h new file mode 100644 index 0000000..711e2bd --- /dev/null +++ b/hexchat/src/common/plugin-timer.h @@ -0,0 +1,26 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_PLUGIN_TIMER_H +#define HEXCHAT_PLUGIN_TIMER_H + +int timer_plugin_init (hexchat_plugin *plugin_handle, char **plugin_name, + char **plugin_desc, char **plugin_version, char *arg); + +#endif diff --git a/hexchat/src/common/plugin.c b/hexchat/src/common/plugin.c new file mode 100644 index 0000000..536f376 --- /dev/null +++ b/hexchat/src/common/plugin.c @@ -0,0 +1,2050 @@ +/* X-Chat + * Copyright (C) 2002 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <stdlib.h> +#include <string.h> +#include <stdarg.h> +#include <stdio.h> +#include <fcntl.h> +#include <sys/stat.h> + +#ifdef WIN32 +#include <io.h> +#else +#include <unistd.h> +#endif + +#include "hexchat.h" +#include "fe.h" +#include "util.h" +#include "outbound.h" +#include "cfgfiles.h" +#include "ignore.h" +#include "server.h" +#include "servlist.h" +#include "modes.h" +#include "notify.h" +#include "text.h" +#define PLUGIN_C +typedef struct session hexchat_context; +#include "hexchat-plugin.h" +#include "plugin.h" +#include "typedef.h" + + +#include "hexchatc.h" + +/* the USE_PLUGIN define only removes libdl stuff */ + +#ifdef USE_PLUGIN +#include <gmodule.h> +#endif + +#define DEBUG(x) {x;} + +/* crafted to be an even 32 bytes */ +struct _hexchat_hook +{ + hexchat_plugin *pl; /* the plugin to which it belongs */ + char *name; /* "xdcc" */ + void *callback; /* pointer to xdcc_callback */ + char *help_text; /* help_text for commands only */ + void *userdata; /* passed to the callback */ + int tag; /* for timers & FDs only */ + int type; /* HOOK_* */ + int pri; /* fd */ /* priority / fd for HOOK_FD only */ +}; + +struct _hexchat_list +{ + int type; /* LIST_* */ + GSList *pos; /* current pos */ + GSList *next; /* next pos */ + GSList *head; /* for LIST_USERS only */ + struct notify_per_server *notifyps; /* notify_per_server * */ +}; + +typedef int (hexchat_cmd_cb) (char *word[], char *word_eol[], void *user_data); +typedef int (hexchat_serv_cb) (char *word[], char *word_eol[], void *user_data); +typedef int (hexchat_print_cb) (char *word[], void *user_data); +typedef int (hexchat_serv_attrs_cb) (char *word[], char *word_eol[], hexchat_event_attrs *attrs, void *user_data); +typedef int (hexchat_print_attrs_cb) (char *word[], hexchat_event_attrs *attrs, void *user_data); +typedef int (hexchat_fd_cb) (int fd, int flags, void *user_data); +typedef int (hexchat_timer_cb) (void *user_data); +typedef int (hexchat_init_func) (hexchat_plugin *, char **, char **, char **, char *); +typedef int (hexchat_deinit_func) (hexchat_plugin *); + +enum +{ + LIST_CHANNELS, + LIST_DCC, + LIST_IGNORE, + LIST_NOTIFY, + LIST_USERS +}; + +/* We use binary flags here because it makes it possible for plugin_hook_find() + * to match several types of hooks. This is used so that plugin_hook_run() + * match both HOOK_SERVER and HOOK_SERVER_ATTRS hooks when plugin_emit_server() + * is called. + */ +enum +{ + HOOK_COMMAND = 1 << 0, /* /command */ + HOOK_SERVER = 1 << 1, /* PRIVMSG, NOTICE, numerics */ + HOOK_SERVER_ATTRS = 1 << 2, /* same as above, with attributes */ + HOOK_PRINT = 1 << 3, /* All print events */ + HOOK_PRINT_ATTRS = 1 << 4, /* same as above, with attributes */ + HOOK_TIMER = 1 << 5, /* timeouts */ + HOOK_FD = 1 << 6, /* sockets & fds */ + HOOK_DELETED = 1 << 7 /* marked for deletion */ +}; + +enum +{ + CHANNEL_FLAG_CONNECTED = 1 << 0, + CHANNEL_FLAG_CONNECING = 1 << 1, + CHANNEL_FLAG_AWAY = 1 << 2, + CHANNEL_FLAG_END_OF_MOTD = 1 << 3, + CHANNEL_FLAG_HAS_WHOX = 1 << 4, + CHANNEL_FLAG_HAS_IDMSG = 1 << 5, + CHANNEL_FLAG_HIDE_JOIN_PARTS = 1 << 6, + CHANNEL_FLAG_HIDE_JOIN_PARTS_UNSET = 1 << 7, + CHANNEL_FLAG_BEEP = 1 << 8, + CHANNEL_FLAG_BEEP_UNSET = 1 << 9, + CHANNEL_FLAG_UNUSED = 1 << 10, + CHANNEL_FLAG_LOGGING = 1 << 11, + CHANNEL_FLAG_LOGGING_UNSET = 1 << 12, + CHANNEL_FLAG_SCROLLBACK = 1 << 13, + CHANNEL_FLAG_SCROLLBACK_UNSET = 1 << 14, + CHANNEL_FLAG_STRIP_COLORS = 1 << 15, + CHANNEL_FLAG_STRIP_COLORS_UNSET = 1 << 16, + CHANNEL_FLAG_TRAY = 1 << 17, + CHANNEL_FLAG_TRAY_UNSET = 1 << 18, + CHANNEL_FLAG_TASKBAR = 1 << 19, + CHANNEL_FLAG_TASKBAR_UNSET = 1 << 20, + CHANNEL_FLAG_BALLOON = 1 << 21, + CHANNEL_FLAG_BALLOON_UNSET = 1 << 22, + CHANNEL_FLAG_COUNT = 23 +}; + +GSList *plugin_list = NULL; /* export for plugingui.c */ +static GSList *hook_list = NULL; + +extern const struct prefs vars[]; /* cfgfiles.c */ + + +/* unload a plugin and remove it from our linked list */ + +static int +plugin_free (hexchat_plugin *pl, int do_deinit, int allow_refuse) +{ + GSList *list, *next; + hexchat_hook *hook; + hexchat_deinit_func *deinit_func; + + /* fake plugin added by hexchat_plugingui_add() */ + if (pl->fake) + goto xit; + + /* run the plugin's deinit routine, if any */ + if (do_deinit && pl->deinit_callback != NULL) + { + deinit_func = pl->deinit_callback; + if (!deinit_func (pl) && allow_refuse) + return FALSE; + } + + /* remove all of this plugin's hooks */ + list = hook_list; + while (list) + { + hook = list->data; + next = list->next; + if (hook->pl == pl) + hexchat_unhook (NULL, hook); + list = next; + } + +#ifdef USE_PLUGIN + if (pl->handle) + g_module_close (pl->handle); +#endif + +xit: + if (pl->free_strings) + { + g_free (pl->name); + g_free (pl->desc); + g_free (pl->version); + } + g_free ((char *)pl->filename); + g_free (pl); + + plugin_list = g_slist_remove (plugin_list, pl); + +#ifdef USE_PLUGIN + fe_pluginlist_update (); +#endif + + return TRUE; +} + +static hexchat_plugin * +plugin_list_add (hexchat_context *ctx, char *filename, const char *name, + const char *desc, const char *version, void *handle, + void *deinit_func, int fake, int free_strings) +{ + hexchat_plugin *pl; + + pl = g_new (hexchat_plugin, 1); + pl->handle = handle; + pl->filename = filename; + pl->context = ctx; + pl->name = (char *)name; + pl->desc = (char *)desc; + pl->version = (char *)version; + pl->deinit_callback = deinit_func; + pl->fake = fake; + pl->free_strings = free_strings; /* free() name,desc,version? */ + + plugin_list = g_slist_prepend (plugin_list, pl); + + return pl; +} + +#ifndef WIN32 +static void * +hexchat_dummy (hexchat_plugin *ph) +{ + return NULL; +} + +#else + +static int +hexchat_read_fd (hexchat_plugin *ph, GIOChannel *source, char *buf, int *len) +{ + GError *error = NULL; + + g_io_channel_set_buffered (source, FALSE); + g_io_channel_set_encoding (source, NULL, &error); + + if (g_io_channel_read_chars (source, buf, *len, (gsize*)len, &error) == G_IO_STATUS_NORMAL) + { + return 0; + } + else + { + return -1; + } +} +#endif + +/* Load a static plugin */ + +void +plugin_add (session *sess, char *filename, void *handle, void *init_func, + void *deinit_func, char *arg, int fake) +{ + hexchat_plugin *pl; + char *file; + + file = g_strdup (filename); + + pl = plugin_list_add (sess, file, file, NULL, NULL, handle, deinit_func, + fake, FALSE); + + if (!fake) + { + /* win32 uses these because it doesn't have --export-dynamic! */ + pl->hexchat_hook_command = hexchat_hook_command; + pl->hexchat_hook_server = hexchat_hook_server; + pl->hexchat_hook_print = hexchat_hook_print; + pl->hexchat_hook_timer = hexchat_hook_timer; + pl->hexchat_hook_fd = hexchat_hook_fd; + pl->hexchat_unhook = hexchat_unhook; + pl->hexchat_print = hexchat_print; + pl->hexchat_printf = hexchat_printf; + pl->hexchat_command = hexchat_command; + pl->hexchat_commandf = hexchat_commandf; + pl->hexchat_nickcmp = hexchat_nickcmp; + pl->hexchat_set_context = hexchat_set_context; + pl->hexchat_find_context = hexchat_find_context; + pl->hexchat_get_context = hexchat_get_context; + pl->hexchat_get_info = hexchat_get_info; + pl->hexchat_get_prefs = hexchat_get_prefs; + pl->hexchat_list_get = hexchat_list_get; + pl->hexchat_list_free = hexchat_list_free; + pl->hexchat_list_fields = hexchat_list_fields; + pl->hexchat_list_str = hexchat_list_str; + pl->hexchat_list_next = hexchat_list_next; + pl->hexchat_list_int = hexchat_list_int; + pl->hexchat_plugingui_add = hexchat_plugingui_add; + pl->hexchat_plugingui_remove = hexchat_plugingui_remove; + pl->hexchat_emit_print = hexchat_emit_print; +#ifdef WIN32 + pl->hexchat_read_fd = (void *) hexchat_read_fd; +#else + pl->hexchat_read_fd = hexchat_dummy; +#endif + pl->hexchat_list_time = hexchat_list_time; + pl->hexchat_gettext = hexchat_gettext; + pl->hexchat_send_modes = hexchat_send_modes; + pl->hexchat_strip = hexchat_strip; + pl->hexchat_free = hexchat_free; + pl->hexchat_pluginpref_set_str = hexchat_pluginpref_set_str; + pl->hexchat_pluginpref_get_str = hexchat_pluginpref_get_str; + pl->hexchat_pluginpref_set_int = hexchat_pluginpref_set_int; + pl->hexchat_pluginpref_get_int = hexchat_pluginpref_get_int; + pl->hexchat_pluginpref_delete = hexchat_pluginpref_delete; + pl->hexchat_pluginpref_list = hexchat_pluginpref_list; + pl->hexchat_hook_server_attrs = hexchat_hook_server_attrs; + pl->hexchat_hook_print_attrs = hexchat_hook_print_attrs; + pl->hexchat_emit_print_attrs = hexchat_emit_print_attrs; + pl->hexchat_event_attrs_create = hexchat_event_attrs_create; + pl->hexchat_event_attrs_free = hexchat_event_attrs_free; + + /* run hexchat_plugin_init, if it returns 0, close the plugin */ + if (((hexchat_init_func *)init_func) (pl, &pl->name, &pl->desc, &pl->version, arg) == 0) + { + plugin_free (pl, FALSE, FALSE); + return; + } + } + +#ifdef USE_PLUGIN + fe_pluginlist_update (); +#endif +} + +/* kill any plugin by the given (file) name (used by /unload) */ + +int +plugin_kill (char *name, int by_filename) +{ + GSList *list; + hexchat_plugin *pl; + + list = plugin_list; + while (list) + { + pl = list->data; + /* static-plugins (plugin-timer.c) have a NULL filename */ + if ((by_filename && pl->filename && g_ascii_strcasecmp (name, pl->filename) == 0) || + (by_filename && pl->filename && g_ascii_strcasecmp (name, file_part (pl->filename)) == 0) || + (!by_filename && g_ascii_strcasecmp (name, pl->name) == 0)) + { + /* statically linked plugins have a NULL filename */ + if (pl->filename != NULL && !pl->fake) + { + if (plugin_free (pl, TRUE, TRUE)) + return 1; + return 2; + } + } + list = list->next; + } + + return 0; +} + +/* kill all running plugins (at shutdown) */ + +void +plugin_kill_all (void) +{ + GSList *list, *next; + hexchat_plugin *pl; + + list = plugin_list; + while (list) + { + pl = list->data; + next = list->next; + if (!pl->fake) + plugin_free (list->data, TRUE, FALSE); + list = next; + } +} + +#if defined(USE_PLUGIN) || defined(WIN32) +/* used for loading plugins, and in fe-gtk/notifications/notification-windows.c */ + +GModule * +module_load (char *filename) +{ + void *handle; + char *filepart; + char *pluginpath; + + /* get the filename without path */ + filepart = file_part (filename); + + /* load the plugin */ + if (!g_ascii_strcasecmp (filepart, filename)) + { + /* no path specified, it's just the filename, try to load from config dir */ + pluginpath = g_build_filename (get_xdir (), "addons", filename, NULL); + handle = g_module_open (pluginpath, 0); + g_free (pluginpath); + } + else + { + /* try to load with absolute path */ + handle = g_module_open (filename, 0); + } + + return handle; +} + +#endif + +#ifdef USE_PLUGIN + +/* load a plugin from a filename. Returns: NULL-success or an error string */ + +char * +plugin_load (session *sess, char *filename, char *arg) +{ + GModule *handle = module_load (filename); + hexchat_init_func *init_func; + hexchat_deinit_func *deinit_func; + + if (handle == NULL) + return (char *)g_module_error (); + + /* find the init routine hexchat_plugin_init */ + if (!g_module_symbol (handle, "hexchat_plugin_init", (gpointer *)&init_func)) + { + g_module_close (handle); + return _("No hexchat_plugin_init symbol; is this really a HexChat plugin?"); + } + + /* find the plugin's deinit routine, if any */ + if (!g_module_symbol (handle, "hexchat_plugin_deinit", (gpointer *)&deinit_func)) + deinit_func = NULL; + + /* add it to our linked list */ + plugin_add (sess, filename, handle, init_func, deinit_func, arg, FALSE); + + return NULL; +} + +static session *ps; + +static void +plugin_auto_load_cb (char *filename) +{ + char *pMsg; + + pMsg = plugin_load (ps, filename, NULL); + if (pMsg) + { + PrintTextf (ps, "AutoLoad failed for: %s\n", filename); + PrintText (ps, pMsg); + } +} + +static const char * +plugin_get_libdir (void) +{ + const char *libdir; + + libdir = g_getenv ("HEXCHAT_LIBDIR"); + if (libdir && *libdir) + return libdir; + else + return HEXCHATLIBDIR; +} + +void +plugin_auto_load (session *sess) +{ + const char *lib_dir; + char *sub_dir; + ps = sess; + + lib_dir = plugin_get_libdir (); + sub_dir = g_build_filename (get_xdir (), "addons", NULL); + +#ifdef WIN32 + /* a long list of bundled plugins that should be loaded automatically, + * user plugins should go to <config>, leave Program Files alone! */ + for_files (lib_dir, "hcchecksum.dll", plugin_auto_load_cb); + for_files (lib_dir, "hcexec.dll", plugin_auto_load_cb); + for_files (lib_dir, "hcfishlim.dll", plugin_auto_load_cb); + for_files(lib_dir, "hclua.dll", plugin_auto_load_cb); + for_files (lib_dir, "hcperl.dll", plugin_auto_load_cb); + for_files (lib_dir, "hcpython3.dll", plugin_auto_load_cb); + for_files (lib_dir, "hcupd.dll", plugin_auto_load_cb); + for_files (lib_dir, "hcwinamp.dll", plugin_auto_load_cb); + for_files (lib_dir, "hcsysinfo.dll", plugin_auto_load_cb); +#else + for_files (lib_dir, "*."PLUGIN_SUFFIX, plugin_auto_load_cb); +#endif + + for_files (sub_dir, "*."PLUGIN_SUFFIX, plugin_auto_load_cb); + + g_free (sub_dir); +} + +int +plugin_reload (session *sess, char *name, int by_filename) +{ + GSList *list; + char *filename; + char *ret; + hexchat_plugin *pl; + + list = plugin_list; + while (list) + { + pl = list->data; + /* static-plugins (plugin-timer.c) have a NULL filename */ + if ((by_filename && pl->filename && g_ascii_strcasecmp (name, pl->filename) == 0) || + (by_filename && pl->filename && g_ascii_strcasecmp (name, file_part (pl->filename)) == 0) || + (!by_filename && g_ascii_strcasecmp (name, pl->name) == 0)) + { + /* statically linked plugins have a NULL filename */ + if (pl->filename != NULL && !pl->fake) + { + filename = g_strdup (pl->filename); + plugin_free (pl, TRUE, FALSE); + ret = plugin_load (sess, filename, NULL); + g_free (filename); + if (ret == NULL) + return 1; + else + return 0; + } + else + return 2; + } + list = list->next; + } + + return 0; +} + +#endif + +static GSList * +plugin_hook_find (GSList *list, int type, char *name) +{ + hexchat_hook *hook; + + while (list) + { + hook = list->data; + if (hook && (hook->type & type)) + { + if (g_ascii_strcasecmp (hook->name, name) == 0) + return list; + + if ((type & HOOK_SERVER) + && g_ascii_strcasecmp (hook->name, "RAW LINE") == 0) + return list; + } + list = list->next; + } + + return NULL; +} + +/* check for plugin hooks and run them */ + +static int +plugin_hook_run (session *sess, char *name, char *word[], char *word_eol[], + hexchat_event_attrs *attrs, int type) +{ + GSList *list, *next; + hexchat_hook *hook; + int ret, eat = 0; + + list = hook_list; + while (1) + { + list = plugin_hook_find (list, type, name); + if (!list) + goto xit; + + hook = list->data; + next = list->next; + hook->pl->context = sess; + + /* run the plugin's callback function */ + switch (hook->type) + { + case HOOK_COMMAND: + ret = ((hexchat_cmd_cb *)hook->callback) (word, word_eol, hook->userdata); + break; + case HOOK_PRINT_ATTRS: + ret = ((hexchat_print_attrs_cb *)hook->callback) (word, attrs, hook->userdata); + break; + case HOOK_SERVER: + ret = ((hexchat_serv_cb *)hook->callback) (word, word_eol, hook->userdata); + break; + case HOOK_SERVER_ATTRS: + ret = ((hexchat_serv_attrs_cb *)hook->callback) (word, word_eol, attrs, hook->userdata); + break; + default: /*case HOOK_PRINT:*/ + ret = ((hexchat_print_cb *)hook->callback) (word, hook->userdata); + break; + } + + if ((ret & HEXCHAT_EAT_HEXCHAT) && (ret & HEXCHAT_EAT_PLUGIN)) + { + eat = 1; + goto xit; + } + if (ret & HEXCHAT_EAT_PLUGIN) + goto xit; /* stop running plugins */ + if (ret & HEXCHAT_EAT_HEXCHAT) + eat = 1; /* eventually we'll return 1, but continue running plugins */ + + list = next; + } + +xit: + /* really remove deleted hooks now */ + list = hook_list; + while (list) + { + hook = list->data; + next = list->next; + if (!hook || hook->type == HOOK_DELETED) + { + hook_list = g_slist_remove (hook_list, hook); + g_free (hook); + } + list = next; + } + + return eat; +} + +/* execute a plugged in command. Called from outbound.c */ + +int +plugin_emit_command (session *sess, char *name, char *word[], char *word_eol[]) +{ + return plugin_hook_run (sess, name, word, word_eol, NULL, HOOK_COMMAND); +} + +hexchat_event_attrs * +hexchat_event_attrs_create (hexchat_plugin *ph) +{ + return g_new0 (hexchat_event_attrs, 1); +} + +void +hexchat_event_attrs_free (hexchat_plugin *ph, hexchat_event_attrs *attrs) +{ + g_free (attrs); +} + +/* got a server PRIVMSG, NOTICE, numeric etc... */ + +int +plugin_emit_server (session *sess, char *name, char *word[], char *word_eol[], + time_t server_time) +{ + hexchat_event_attrs attrs; + + attrs.server_time_utc = server_time; + + return plugin_hook_run (sess, name, word, word_eol, &attrs, + HOOK_SERVER | HOOK_SERVER_ATTRS); +} + +/* see if any plugins are interested in this print event */ + +int +plugin_emit_print (session *sess, char *word[], time_t server_time) +{ + hexchat_event_attrs attrs; + + attrs.server_time_utc = server_time; + + return plugin_hook_run (sess, word[0], word, NULL, &attrs, + HOOK_PRINT | HOOK_PRINT_ATTRS); +} + +int +plugin_emit_dummy_print (session *sess, char *name) +{ + char *word[PDIWORDS]; + int i; + + word[0] = name; + for (i = 1; i < PDIWORDS; i++) + word[i] = "\000"; + + return plugin_hook_run (sess, name, word, NULL, NULL, HOOK_PRINT); +} + +int +plugin_emit_keypress (session *sess, unsigned int state, unsigned int keyval, gunichar key) +{ + char *word[PDIWORDS]; + char keyval_str[16]; + char state_str[16]; + char len_str[16]; + char key_str[7]; + int i, len; + + if (!hook_list) + return 0; + + sprintf (keyval_str, "%u", keyval); + sprintf (state_str, "%u", state); + if (!key) + len = 0; + else + len = g_unichar_to_utf8 (key, key_str); + key_str[len] = '\0'; + sprintf (len_str, "%d", len); + + word[0] = "Key Press"; + word[1] = keyval_str; + word[2] = state_str; + word[3] = key_str; + word[4] = len_str; + for (i = 5; i < PDIWORDS; i++) + word[i] = "\000"; + + return plugin_hook_run (sess, word[0], word, NULL, NULL, HOOK_PRINT); +} + +static int +plugin_timeout_cb (hexchat_hook *hook) +{ + int ret; + + /* timer_cb's context starts as front-most-tab */ + hook->pl->context = current_sess; + + /* call the plugin's timeout function */ + ret = ((hexchat_timer_cb *)hook->callback) (hook->userdata); + + /* the callback might have already unhooked it! */ + if (!g_slist_find (hook_list, hook) || hook->type == HOOK_DELETED) + return 0; + + if (ret == 0) + { + hook->tag = 0; /* avoid fe_timeout_remove, returning 0 is enough! */ + hexchat_unhook (hook->pl, hook); + } + + return ret; +} + +/* insert a hook into hook_list according to its priority */ + +static void +plugin_insert_hook (hexchat_hook *new_hook) +{ + GSList *list; + hexchat_hook *hook; + int new_hook_type; + + switch (new_hook->type) + { + case HOOK_PRINT: + case HOOK_PRINT_ATTRS: + new_hook_type = HOOK_PRINT | HOOK_PRINT_ATTRS; + break; + case HOOK_SERVER: + case HOOK_SERVER_ATTRS: + new_hook_type = HOOK_SERVER | HOOK_PRINT_ATTRS; + break; + default: + new_hook_type = new_hook->type; + } + + list = hook_list; + while (list) + { + hook = list->data; + if (hook && (hook->type & new_hook_type) && hook->pri <= new_hook->pri) + { + hook_list = g_slist_insert_before (hook_list, list, new_hook); + return; + } + list = list->next; + } + + hook_list = g_slist_append (hook_list, new_hook); +} + +static gboolean +plugin_fd_cb (GIOChannel *source, GIOCondition condition, hexchat_hook *hook) +{ + int flags = 0, ret; + typedef int (hexchat_fd_cb2) (int fd, int flags, void *user_data, GIOChannel *); + + if (condition & G_IO_IN) + flags |= HEXCHAT_FD_READ; + if (condition & G_IO_OUT) + flags |= HEXCHAT_FD_WRITE; + if (condition & G_IO_PRI) + flags |= HEXCHAT_FD_EXCEPTION; + + ret = ((hexchat_fd_cb2 *)hook->callback) (hook->pri, flags, hook->userdata, source); + + /* the callback might have already unhooked it! */ + if (!g_slist_find (hook_list, hook) || hook->type == HOOK_DELETED) + return 0; + + if (ret == 0) + { + hook->tag = 0; /* avoid fe_input_remove, returning 0 is enough! */ + hexchat_unhook (hook->pl, hook); + } + + return ret; +} + +/* allocate and add a hook to our list. Used for all 4 types */ + +static hexchat_hook * +plugin_add_hook (hexchat_plugin *pl, int type, int pri, const char *name, + const char *help_text, void *callb, int timeout, void *userdata) +{ + hexchat_hook *hook; + + hook = g_new0 (hexchat_hook, 1); + hook->type = type; + hook->pri = pri; + hook->name = g_strdup (name); + hook->help_text = g_strdup (help_text); + hook->callback = callb; + hook->pl = pl; + hook->userdata = userdata; + + /* insert it into the linked list */ + plugin_insert_hook (hook); + + if (type == HOOK_TIMER) + hook->tag = fe_timeout_add (timeout, plugin_timeout_cb, hook); + + return hook; +} + +GList * +plugin_command_list(GList *tmp_list) +{ + hexchat_hook *hook; + GSList *list = hook_list; + + while (list) + { + hook = list->data; + if (hook && hook->type == HOOK_COMMAND) + tmp_list = g_list_prepend(tmp_list, hook->name); + list = list->next; + } + return tmp_list; +} + +void +plugin_command_foreach (session *sess, void *userdata, + void (*cb) (session *sess, void *userdata, char *name, char *help)) +{ + GSList *list; + hexchat_hook *hook; + + list = hook_list; + while (list) + { + hook = list->data; + if (hook && hook->type == HOOK_COMMAND && hook->name[0]) + { + cb (sess, userdata, hook->name, hook->help_text); + } + list = list->next; + } +} + +int +plugin_show_help (session *sess, char *cmd) +{ + GSList *list; + hexchat_hook *hook; + + list = plugin_hook_find (hook_list, HOOK_COMMAND, cmd); + if (list) + { + hook = list->data; + if (hook->help_text) + { + PrintText (sess, hook->help_text); + return 1; + } + } + + return 0; +} + +session * +plugin_find_context (const char *servname, const char *channel, server *current_server) +{ + GSList *slist, *clist, *sessions = NULL; + server *serv; + session *sess; + char *netname; + + if (servname == NULL && channel == NULL) + return current_sess; + + slist = serv_list; + while (slist) + { + serv = slist->data; + netname = server_get_network (serv, TRUE); + + if (servname == NULL || + rfc_casecmp (servname, serv->servername) == 0 || + g_ascii_strcasecmp (servname, serv->hostname) == 0 || + g_ascii_strcasecmp (servname, netname) == 0) + { + if (channel == NULL) + return serv->front_session; + + clist = sess_list; + while (clist) + { + sess = clist->data; + if (sess->server == serv) + { + if (rfc_casecmp (channel, sess->channel) == 0) + { + if (sess->server == current_server) + { + g_slist_free (sessions); + return sess; + } else + { + sessions = g_slist_prepend (sessions, sess); + } + } + } + clist = clist->next; + } + } + slist = slist->next; + } + + if (sessions) + { + sessions = g_slist_reverse (sessions); + sess = sessions->data; + g_slist_free (sessions); + return sess; + } + + return NULL; +} + + +/* ========================================================= */ +/* ===== these are the functions plugins actually call ===== */ +/* ========================================================= */ + +void * +hexchat_unhook (hexchat_plugin *ph, hexchat_hook *hook) +{ + /* perl.c trips this */ + if (!g_slist_find (hook_list, hook) || hook->type == HOOK_DELETED) + return NULL; + + if (hook->type == HOOK_TIMER && hook->tag != 0) + fe_timeout_remove (hook->tag); + + if (hook->type == HOOK_FD && hook->tag != 0) + fe_input_remove (hook->tag); + + hook->type = HOOK_DELETED; /* expunge later */ + + g_free (hook->name); /* NULL for timers & fds */ + g_free (hook->help_text); /* NULL for non-commands */ + + return hook->userdata; +} + +hexchat_hook * +hexchat_hook_command (hexchat_plugin *ph, const char *name, int pri, + hexchat_cmd_cb *callb, const char *help_text, void *userdata) +{ + return plugin_add_hook (ph, HOOK_COMMAND, pri, name, help_text, callb, 0, + userdata); +} + +hexchat_hook * +hexchat_hook_server (hexchat_plugin *ph, const char *name, int pri, + hexchat_serv_cb *callb, void *userdata) +{ + return plugin_add_hook (ph, HOOK_SERVER, pri, name, 0, callb, 0, userdata); +} + +hexchat_hook * +hexchat_hook_server_attrs (hexchat_plugin *ph, const char *name, int pri, + hexchat_serv_attrs_cb *callb, void *userdata) +{ + return plugin_add_hook (ph, HOOK_SERVER_ATTRS, pri, name, 0, callb, 0, + userdata); +} + +hexchat_hook * +hexchat_hook_print (hexchat_plugin *ph, const char *name, int pri, + hexchat_print_cb *callb, void *userdata) +{ + return plugin_add_hook (ph, HOOK_PRINT, pri, name, 0, callb, 0, userdata); +} + +hexchat_hook * +hexchat_hook_print_attrs (hexchat_plugin *ph, const char *name, int pri, + hexchat_print_attrs_cb *callb, void *userdata) +{ + return plugin_add_hook (ph, HOOK_PRINT_ATTRS, pri, name, 0, callb, 0, + userdata); +} + +hexchat_hook * +hexchat_hook_timer (hexchat_plugin *ph, int timeout, hexchat_timer_cb *callb, + void *userdata) +{ + return plugin_add_hook (ph, HOOK_TIMER, 0, 0, 0, callb, timeout, userdata); +} + +hexchat_hook * +hexchat_hook_fd (hexchat_plugin *ph, int fd, int flags, + hexchat_fd_cb *callb, void *userdata) +{ + hexchat_hook *hook; + + hook = plugin_add_hook (ph, HOOK_FD, 0, 0, 0, callb, 0, userdata); + hook->pri = fd; + /* plugin hook_fd flags correspond exactly to FIA_* flags (fe.h) */ + hook->tag = fe_input_add (fd, flags, plugin_fd_cb, hook); + + return hook; +} + +void +hexchat_print (hexchat_plugin *ph, const char *text) +{ + if (!is_session (ph->context)) + { + DEBUG(PrintTextf(0, "%s\thexchat_print called without a valid context.\n", ph->name)); + return; + } + + PrintText (ph->context, (char *)text); +} + +void +hexchat_printf (hexchat_plugin *ph, const char *format, ...) +{ + va_list args; + char *buf; + + va_start (args, format); + buf = g_strdup_vprintf (format, args); + va_end (args); + + hexchat_print (ph, buf); + g_free (buf); +} + +void +hexchat_command (hexchat_plugin *ph, const char *command) +{ + char *command_utf8; + + if (!is_session (ph->context)) + { + DEBUG(PrintTextf(0, "%s\thexchat_command called without a valid context.\n", ph->name)); + return; + } + + /* scripts/plugins continue to send non-UTF8... *sigh* */ + command_utf8 = text_fixup_invalid_utf8 (command, -1, NULL); + handle_command (ph->context, command_utf8, FALSE); + g_free (command_utf8); +} + +void +hexchat_commandf (hexchat_plugin *ph, const char *format, ...) +{ + va_list args; + char *buf; + + va_start (args, format); + buf = g_strdup_vprintf (format, args); + va_end (args); + + hexchat_command (ph, buf); + g_free (buf); +} + +int +hexchat_nickcmp (hexchat_plugin *ph, const char *s1, const char *s2) +{ + return ((session *)ph->context)->server->p_cmp (s1, s2); +} + +hexchat_context * +hexchat_get_context (hexchat_plugin *ph) +{ + return ph->context; +} + +int +hexchat_set_context (hexchat_plugin *ph, hexchat_context *context) +{ + if (is_session (context)) + { + ph->context = context; + return 1; + } + return 0; +} + +hexchat_context * +hexchat_find_context (hexchat_plugin *ph, const char *servname, const char *channel) +{ + return plugin_find_context (servname, channel, ph->context->server); +} + +const char * +hexchat_get_info (hexchat_plugin *ph, const char *id) +{ + session *sess; + guint32 hash; + + /* 1234567890 */ + if (!strncmp (id, "event_text", 10)) + { + char *e = (char *)id + 10; + if (*e == ' ') e++; /* 2.8.0 only worked without a space */ + return text_find_format_string (e); + } + + hash = str_hash (id); + /* do the session independant ones first */ + switch (hash) + { + case 0x325acab5: /* libdirfs */ +#ifdef USE_PLUGIN + return plugin_get_libdir (); +#else + return NULL; +#endif + + case 0x14f51cd8: /* version */ + return PACKAGE_VERSION; + + case 0xdd9b1abd: /* xchatdir */ + case 0xe33f6c4a: /* xchatdirfs */ + case 0xd00d220b: /* configdir */ + return get_xdir (); + } + + sess = ph->context; + if (!is_session (sess)) + { + DEBUG(PrintTextf(0, "%s\thexchat_get_info called without a valid context.\n", ph->name)); + return NULL; + } + + switch (hash) + { + case 0x2de2ee: /* away */ + if (sess->server->is_away) + return sess->server->last_away_reason; + return NULL; + + case 0x2c0b7d03: /* channel */ + return sess->channel; + + case 0x2c0d614c: /* charset */ + { + const char *locale; + + if (sess->server->encoding) + return sess->server->encoding; + + locale = NULL; + g_get_charset (&locale); + return locale; + } + + case 0x30f5a8: /* host */ + return sess->server->hostname; + + case 0x1c0e99c1: /* inputbox */ + return fe_get_inputbox_contents (sess); + + case 0x633fb30: /* modes */ + return sess->current_modes; + + case 0x6de15a2e: /* network */ + return server_get_network (sess->server, FALSE); + + case 0x339763: /* nick */ + return sess->server->nick; + + case 0x4889ba9b: /* password */ + case 0x438fdf9: /* nickserv */ + if (sess->server->network) + return ((ircnet *)sess->server->network)->pass; + return NULL; + + case 0xca022f43: /* server */ + if (!sess->server->connected) + return NULL; + return sess->server->servername; + + case 0x696cd2f: /* topic */ + return sess->topic; + + case 0x3419f12d: /* gtkwin_ptr */ + return fe_gui_info_ptr (sess, 1); + + case 0x506d600b: /* native win_ptr */ + return fe_gui_info_ptr (sess, 0); + + case 0x6d3431b5: /* win_status */ + switch (fe_gui_info (sess, 0)) /* check window status */ + { + case 0: return "normal"; + case 1: return "active"; + case 2: return "hidden"; + } + return NULL; + } + + return NULL; +} + +int +hexchat_get_prefs (hexchat_plugin *ph, const char *name, const char **string, int *integer) +{ + int i = 0; + + /* some special run-time info (not really prefs, but may aswell throw it in here) */ + switch (str_hash (name)) + { + case 0xf82136c4: /* state_cursor */ + *integer = fe_get_inputbox_cursor (ph->context); + return 2; + + case 0xd1b: /* id */ + *integer = ph->context->server->id; + return 2; + } + + do + { + if (!g_ascii_strcasecmp (name, vars[i].name)) + { + switch (vars[i].type) + { + case TYPE_STR: + *string = ((char *) &prefs + vars[i].offset); + return 1; + + case TYPE_INT: + *integer = *((int *) &prefs + vars[i].offset); + return 2; + + default: + /*case TYPE_BOOL:*/ + if (*((int *) &prefs + vars[i].offset)) + *integer = 1; + else + *integer = 0; + return 3; + } + } + i++; + } + while (vars[i].name); + + return 0; +} + +hexchat_list * +hexchat_list_get (hexchat_plugin *ph, const char *name) +{ + hexchat_list *list; + + list = g_new0 (hexchat_list, 1); + + switch (str_hash (name)) + { + case 0x556423d0: /* channels */ + list->type = LIST_CHANNELS; + list->next = sess_list; + break; + + case 0x183c4: /* dcc */ + list->type = LIST_DCC; + list->next = dcc_list; + break; + + case 0xb90bfdd2: /* ignore */ + list->type = LIST_IGNORE; + list->next = ignore_list; + break; + + case 0xc2079749: /* notify */ + list->type = LIST_NOTIFY; + list->next = notify_list; + list->head = (void *)ph->context; /* reuse this pointer */ + break; + + case 0x6a68e08: /* users */ + if (is_session (ph->context)) + { + list->type = LIST_USERS; + list->head = list->next = userlist_flat_list (ph->context); + fe_userlist_set_selected (ph->context); + break; + } /* fall through */ + + default: + g_free (list); + return NULL; + } + + return list; +} + +void +hexchat_list_free (hexchat_plugin *ph, hexchat_list *xlist) +{ + if (xlist->type == LIST_USERS) + g_slist_free (xlist->head); + g_free (xlist); +} + +int +hexchat_list_next (hexchat_plugin *ph, hexchat_list *xlist) +{ + if (xlist->next == NULL) + return 0; + + xlist->pos = xlist->next; + xlist->next = xlist->pos->next; + + /* NOTIFY LIST: Find the entry which matches the context + of the plugin when list_get was originally called. */ + if (xlist->type == LIST_NOTIFY) + { + xlist->notifyps = notify_find_server_entry (xlist->pos->data, + ((session *)xlist->head)->server); + if (!xlist->notifyps) + return 0; + } + + return 1; +} + +const char * const * +hexchat_list_fields (hexchat_plugin *ph, const char *name) +{ + static const char * const dcc_fields[] = + { + "iaddress32","icps", "sdestfile","sfile", "snick", "iport", + "ipos", "iposhigh", "iresume", "iresumehigh", "isize", "isizehigh", "istatus", "itype", NULL + }; + static const char * const channels_fields[] = + { + "schannel", "schannelkey", "schanmodes", "schantypes", "pcontext", "iflags", "iid", "ilag", "imaxmodes", + "snetwork", "snickmodes", "snickprefixes", "iqueue", "sserver", "itype", "iusers", + NULL + }; + static const char * const ignore_fields[] = + { + "iflags", "smask", NULL + }; + static const char * const notify_fields[] = + { + "iflags", "snetworks", "snick", "toff", "ton", "tseen", NULL + }; + static const char * const users_fields[] = + { + "saccount", "iaway", "shost", "tlasttalk", "snick", "sprefix", "srealname", "iselected", NULL + }; + static const char * const list_of_lists[] = + { + "channels", "dcc", "ignore", "notify", "users", NULL + }; + + switch (str_hash (name)) + { + case 0x556423d0: /* channels */ + return channels_fields; + case 0x183c4: /* dcc */ + return dcc_fields; + case 0xb90bfdd2: /* ignore */ + return ignore_fields; + case 0xc2079749: /* notify */ + return notify_fields; + case 0x6a68e08: /* users */ + return users_fields; + case 0x6236395: /* lists */ + return list_of_lists; + } + + return NULL; +} + +time_t +hexchat_list_time (hexchat_plugin *ph, hexchat_list *xlist, const char *name) +{ + guint32 hash = str_hash (name); + gpointer data; + + switch (xlist->type) + { + case LIST_NOTIFY: + if (!xlist->notifyps) + return (time_t) -1; + switch (hash) + { + case 0x1ad6f: /* off */ + return xlist->notifyps->lastoff; + case 0xddf: /* on */ + return xlist->notifyps->laston; + case 0x35ce7b: /* seen */ + return xlist->notifyps->lastseen; + } + break; + + case LIST_USERS: + data = xlist->pos->data; + switch (hash) + { + case 0xa9118c42: /* lasttalk */ + return ((struct User *)data)->lasttalk; + } + } + + return (time_t) -1; +} + +const char * +hexchat_list_str (hexchat_plugin *ph, hexchat_list *xlist, const char *name) +{ + guint32 hash = str_hash (name); + gpointer data = ph->context; + int type = LIST_CHANNELS; + + /* a NULL xlist is a shortcut to current "channels" context */ + if (xlist) + { + data = xlist->pos->data; + type = xlist->type; + } + + switch (type) + { + case LIST_CHANNELS: + switch (hash) + { + case 0x2c0b7d03: /* channel */ + return ((session *)data)->channel; + case 0x8cea5e7c: /* channelkey */ + return ((session *)data)->channelkey; + case 0x5716ab1e: /* chanmodes */ + return ((session*)data)->server->chanmodes; + case 0x577e0867: /* chantypes */ + return ((session *)data)->server->chantypes; + case 0x38b735af: /* context */ + return data; /* this is a session * */ + case 0x6de15a2e: /* network */ + return server_get_network (((session *)data)->server, FALSE); + case 0x8455e723: /* nickprefixes */ + return ((session *)data)->server->nick_prefixes; + case 0x829689ad: /* nickmodes */ + return ((session *)data)->server->nick_modes; + case 0xca022f43: /* server */ + return ((session *)data)->server->servername; + } + break; + + case LIST_DCC: + switch (hash) + { + case 0x3d9ad31e: /* destfile */ + return ((struct DCC *)data)->destfile; + case 0x2ff57c: /* file */ + return ((struct DCC *)data)->file; + case 0x339763: /* nick */ + return ((struct DCC *)data)->nick; + } + break; + + case LIST_IGNORE: + switch (hash) + { + case 0x3306ec: /* mask */ + return ((struct ignore *)data)->mask; + } + break; + + case LIST_NOTIFY: + switch (hash) + { + case 0x4e49ec05: /* networks */ + return ((struct notify *)data)->networks; + case 0x339763: /* nick */ + return ((struct notify *)data)->name; + } + break; + + case LIST_USERS: + switch (hash) + { + case 0xb9d38a2d: /* account */ + return ((struct User *)data)->account; + case 0x339763: /* nick */ + return ((struct User *)data)->nick; + case 0x30f5a8: /* host */ + return ((struct User *)data)->hostname; + case 0xc594b292: /* prefix */ + return ((struct User *)data)->prefix; + case 0xccc6d529: /* realname */ + return ((struct User *)data)->realname; + } + break; + } + + return NULL; +} + +int +hexchat_list_int (hexchat_plugin *ph, hexchat_list *xlist, const char *name) +{ + guint32 hash = str_hash (name); + gpointer data = ph->context; + + int channel_flag; + int channel_flags[CHANNEL_FLAG_COUNT]; + int channel_flags_used = 0; + + int type = LIST_CHANNELS; + + /* a NULL xlist is a shortcut to current "channels" context */ + if (xlist) + { + data = xlist->pos->data; + type = xlist->type; + } + + switch (type) + { + case LIST_DCC: + switch (hash) + { + case 0x34207553: /* address32 */ + return ((struct DCC *)data)->addr; + case 0x181a6: /* cps */ + { + gint64 cps = ((struct DCC *)data)->cps; + if (cps <= INT_MAX) + { + return (int) cps; + } + return INT_MAX; + } + case 0x349881: /* port */ + return ((struct DCC *)data)->port; + case 0x1b254: /* pos */ + return ((struct DCC *)data)->pos & 0xffffffff; + case 0xe8a945f6: /* poshigh */ + return (((struct DCC *)data)->pos >> 32) & 0xffffffff; + case 0xc84dc82d: /* resume */ + return ((struct DCC *)data)->resumable & 0xffffffff; + case 0xded4c74f: /* resumehigh */ + return (((struct DCC *)data)->resumable >> 32) & 0xffffffff; + case 0x35e001: /* size */ + return ((struct DCC *)data)->size & 0xffffffff; + case 0x3284d523: /* sizehigh */ + return (((struct DCC *)data)->size >> 32) & 0xffffffff; + case 0xcacdcff2: /* status */ + return ((struct DCC *)data)->dccstat; + case 0x368f3a: /* type */ + return ((struct DCC *)data)->type; + } + break; + + case LIST_IGNORE: + switch (hash) + { + case 0x5cfee87: /* flags */ + return ((struct ignore *)data)->type; + } + break; + + case LIST_CHANNELS: + switch (hash) + { + case 0xd1b: /* id */ + return ((struct session *)data)->server->id; + case 0x5cfee87: /* flags */ + channel_flags[0] = ((struct session *)data)->server->connected; + channel_flags[1] = ((struct session *)data)->server->connecting; + channel_flags[2] = ((struct session *)data)->server->is_away; + channel_flags[3] = ((struct session *)data)->server->end_of_motd; + channel_flags[4] = ((struct session *)data)->server->have_whox; + channel_flags[5] = ((struct session *)data)->server->have_idmsg; + channel_flags[6] = ((struct session *)data)->text_hidejoinpart; + channel_flags[7] = ((struct session *)data)->text_hidejoinpart == SET_DEFAULT; + channel_flags[8] = ((struct session *)data)->alert_beep; + channel_flags[9] = ((struct session *)data)->alert_beep == SET_DEFAULT; + channel_flags[10] = 0; /* unused for historical reasons */ + channel_flags[11] = ((struct session *)data)->text_logging; + channel_flags[12] = ((struct session *)data)->text_logging == SET_DEFAULT; + channel_flags[13] = ((struct session *)data)->text_scrollback; + channel_flags[14] = ((struct session *)data)->text_scrollback == SET_DEFAULT; + channel_flags[15] = ((struct session *)data)->text_strip; + channel_flags[16] = ((struct session *)data)->text_strip == SET_DEFAULT; + channel_flags[17] = ((struct session *)data)->alert_tray; + channel_flags[18] = ((struct session *)data)->alert_tray == SET_DEFAULT; + channel_flags[19] = ((struct session *)data)->alert_taskbar; + channel_flags[20] = ((struct session *)data)->alert_taskbar == SET_DEFAULT; + channel_flags[21] = ((struct session *)data)->alert_balloon; + channel_flags[22] = ((struct session *)data)->alert_balloon == SET_DEFAULT; + + /* Set flags */ + for (channel_flag = 0; channel_flag < CHANNEL_FLAG_COUNT; ++channel_flag) { + if (channel_flags[channel_flag]) { + channel_flags_used |= 1 << channel_flag; + } + } + + return channel_flags_used; + case 0x1a192: /* lag */ + return ((struct session *)data)->server->lag; + case 0x1916144c: /* maxmodes */ + return ((struct session *)data)->server->modes_per_line; + case 0x66f1911: /* queue */ + return ((struct session *)data)->server->sendq_len; + case 0x368f3a: /* type */ + return ((struct session *)data)->type; + case 0x6a68e08: /* users */ + return ((struct session *)data)->total; + } + break; + + case LIST_NOTIFY: + if (!xlist->notifyps) + return -1; + switch (hash) + { + case 0x5cfee87: /* flags */ + return xlist->notifyps->ison; + } + + case LIST_USERS: + switch (hash) + { + case 0x2de2ee: /* away */ + return ((struct User *)data)->away; + case 0x4705f29b: /* selected */ + return ((struct User *)data)->selected; + } + break; + + } + + return -1; +} + +void * +hexchat_plugingui_add (hexchat_plugin *ph, const char *filename, + const char *name, const char *desc, + const char *version, char *reserved) +{ +#ifdef USE_PLUGIN + ph = plugin_list_add (NULL, g_strdup (filename), g_strdup (name), g_strdup (desc), + g_strdup (version), NULL, NULL, TRUE, TRUE); + fe_pluginlist_update (); +#endif + + return ph; +} + +void +hexchat_plugingui_remove (hexchat_plugin *ph, void *handle) +{ +#ifdef USE_PLUGIN + plugin_free (handle, FALSE, FALSE); +#endif +} + +int +hexchat_emit_print (hexchat_plugin *ph, const char *event_name, ...) +{ + va_list args; + /* currently only 4 because no events use more than 4. + This can be easily expanded without breaking the API. */ + char *argv[4] = {NULL, NULL, NULL, NULL}; + int i = 0; + + va_start (args, event_name); + while (1) + { + argv[i] = va_arg (args, char *); + if (!argv[i]) + break; + i++; + if (i >= 4) + break; + } + + i = text_emit_by_name ((char *)event_name, ph->context, (time_t) 0, + argv[0], argv[1], argv[2], argv[3]); + va_end (args); + + return i; +} + +int +hexchat_emit_print_attrs (hexchat_plugin *ph, hexchat_event_attrs *attrs, + const char *event_name, ...) +{ + va_list args; + /* currently only 4 because no events use more than 4. + This can be easily expanded without breaking the API. */ + char *argv[4] = {NULL, NULL, NULL, NULL}; + int i = 0; + + va_start (args, event_name); + while (1) + { + argv[i] = va_arg (args, char *); + if (!argv[i]) + break; + i++; + if (i >= 4) + break; + } + + i = text_emit_by_name ((char *)event_name, ph->context, attrs->server_time_utc, + argv[0], argv[1], argv[2], argv[3]); + va_end (args); + + return i; +} + +char * +hexchat_gettext (hexchat_plugin *ph, const char *msgid) +{ + /* so that plugins can use HexChat's internal gettext strings. */ + /* e.g. The EXEC plugin uses this on Windows. */ + return _(msgid); +} + +void +hexchat_send_modes (hexchat_plugin *ph, const char **targets, int ntargets, int modes_per_line, char sign, char mode) +{ + char tbuf[514]; /* modes.c needs 512 + null */ + + send_channel_modes (ph->context, tbuf, (char **)targets, 0, ntargets, sign, mode, modes_per_line); +} + +char * +hexchat_strip (hexchat_plugin *ph, const char *str, int len, int flags) +{ + return strip_color ((char *)str, len, flags); +} + +void +hexchat_free (hexchat_plugin *ph, void *ptr) +{ + g_free (ptr); +} + +static int +hexchat_pluginpref_set_str_real (hexchat_plugin *pl, const char *var, const char *value, int mode) /* mode: 0 = delete, 1 = save */ +{ + FILE *fpIn; + int fhOut; + int prevSetting; + char *confname; + char *confname_tmp; + char *escaped_value; + char *buffer; + char *buffer_tmp; + char line_buffer[512]; /* the same as in cfg_put_str */ + char *line_bufp = line_buffer; + char *canon; + + canon = g_strdup (pl->name); + canonalize_key (canon); + confname = g_strdup_printf ("addon_%s.conf", canon); + g_free (canon); + confname_tmp = g_strdup_printf ("%s.new", confname); + + fhOut = hexchat_open_file (confname_tmp, O_TRUNC | O_WRONLY | O_CREAT, 0600, XOF_DOMODE); + fpIn = hexchat_fopen_file (confname, "r", 0); + + if (fhOut == -1) /* unable to save, abort */ + { + g_free (confname); + g_free (confname_tmp); + if (fpIn) + fclose (fpIn); + return 0; + } + else if (fpIn == NULL) /* no previous config file, no parsing */ + { + if (mode) + { + escaped_value = g_strescape (value, NULL); + buffer = g_strdup_printf ("%s = %s\n", var, escaped_value); + g_free (escaped_value); + write (fhOut, buffer, strlen (buffer)); + g_free (buffer); + close (fhOut); + + buffer = g_build_filename (get_xdir (), confname, NULL); + g_free (confname); + buffer_tmp = g_build_filename (get_xdir (), confname_tmp, NULL); + g_free (confname_tmp); + +#ifdef WIN32 + g_unlink (buffer); +#endif + + if (g_rename (buffer_tmp, buffer) == 0) + { + g_free (buffer); + g_free (buffer_tmp); + return 1; + } + else + { + g_free (buffer); + g_free (buffer_tmp); + return 0; + } + } + else + { + /* mode = 0, we want to delete but the config file and thus the given setting does not exist, we're ready */ + close (fhOut); + g_free (confname); + g_free (confname_tmp); + return 1; + } + } + else /* existing config file, preserve settings and find & replace current var value if any */ + { + prevSetting = 0; + + while (fscanf (fpIn, " %511[^\n]", line_bufp) != EOF) /* read whole lines including whitespaces */ + { + buffer_tmp = g_strdup_printf ("%s ", var); /* add one space, this way it works against var - var2 checks too */ + + if (strncmp (buffer_tmp, line_buffer, strlen (var) + 1) == 0) /* given setting already exists */ + { + if (mode) /* overwrite the existing matching setting if we are in save mode */ + { + escaped_value = g_strescape (value, NULL); + buffer = g_strdup_printf ("%s = %s\n", var, escaped_value); + g_free (escaped_value); + } + else /* erase the setting in delete mode */ + { + buffer = g_strdup (""); + } + + prevSetting = 1; + } + else + { + buffer = g_strdup_printf ("%s\n", line_buffer); /* preserve the existing different settings */ + } + + write (fhOut, buffer, strlen (buffer)); + + g_free (buffer); + g_free (buffer_tmp); + } + + fclose (fpIn); + + if (!prevSetting && mode) /* var doesn't exist currently, append if we're in save mode */ + { + escaped_value = g_strescape (value, NULL); + buffer = g_strdup_printf ("%s = %s\n", var, escaped_value); + g_free (escaped_value); + write (fhOut, buffer, strlen (buffer)); + g_free (buffer); + } + + close (fhOut); + + buffer = g_build_filename (get_xdir (), confname, NULL); + g_free (confname); + buffer_tmp = g_build_filename (get_xdir (), confname_tmp, NULL); + g_free (confname_tmp); + +#ifdef WIN32 + g_unlink (buffer); +#endif + + if (g_rename (buffer_tmp, buffer) == 0) + { + g_free (buffer); + g_free (buffer_tmp); + return 1; + } + else + { + g_free (buffer); + g_free (buffer_tmp); + return 0; + } + } +} + +int +hexchat_pluginpref_set_str (hexchat_plugin *pl, const char *var, const char *value) +{ + return hexchat_pluginpref_set_str_real (pl, var, value, 1); +} + +static int +hexchat_pluginpref_get_str_real (hexchat_plugin *pl, const char *var, char *dest, int dest_len) +{ + char *confname, *canon, *cfg, *unescaped_value; + char buf[512]; + + canon = g_strdup (pl->name); + canonalize_key (canon); + confname = g_strdup_printf ("%s%caddon_%s.conf", get_xdir(), G_DIR_SEPARATOR, canon); + g_free (canon); + + if (!g_file_get_contents (confname, &cfg, NULL, NULL)) + { + g_free (confname); + return 0; + } + g_free (confname); + + if (!cfg_get_str (cfg, var, buf, sizeof(buf))) + { + g_free (cfg); + return 0; + } + + unescaped_value = g_strcompress (buf); + g_strlcpy (dest, unescaped_value, dest_len); + + g_free (unescaped_value); + g_free (cfg); + return 1; +} + +int +hexchat_pluginpref_get_str (hexchat_plugin *pl, const char *var, char *dest) +{ + /* All users of this must ensure dest is >= 512... */ + return hexchat_pluginpref_get_str_real (pl, var, dest, 512); +} + +int +hexchat_pluginpref_set_int (hexchat_plugin *pl, const char *var, int value) +{ + char buffer[12]; + + g_snprintf (buffer, sizeof (buffer), "%d", value); + return hexchat_pluginpref_set_str_real (pl, var, buffer, 1); +} + +int +hexchat_pluginpref_get_int (hexchat_plugin *pl, const char *var) +{ + char buffer[12]; + + if (hexchat_pluginpref_get_str_real (pl, var, buffer, sizeof(buffer))) + { + int ret = atoi (buffer); + + /* 0 could be success or failure, who knows */ + if (ret == 0 && *buffer != '0') + return -1; + + return ret; + } + else + { + return -1; + } +} + +int +hexchat_pluginpref_delete (hexchat_plugin *pl, const char *var) +{ + return hexchat_pluginpref_set_str_real (pl, var, 0, 0); +} + +int +hexchat_pluginpref_list (hexchat_plugin *pl, char* dest) +{ + FILE *fpIn; + char confname[64]; + char buffer[512]; /* the same as in cfg_put_str */ + char *bufp = buffer; + char *token; + + token = g_strdup (pl->name); + canonalize_key (token); + sprintf (confname, "addon_%s.conf", token); + g_free (token); + + fpIn = hexchat_fopen_file (confname, "r", 0); + + if (fpIn == NULL) /* no existing config file, no parsing */ + { + return 0; + } + else /* existing config file, get list of settings */ + { + strcpy (dest, ""); /* clean up garbage */ + while (fscanf (fpIn, " %511[^\n]", bufp) != EOF) /* read whole lines including whitespaces */ + { + token = strtok (buffer, "="); + g_strlcat (dest, g_strchomp (token), 4096); /* Dest must not be smaller than this */ + g_strlcat (dest, ",", 4096); + } + + fclose (fpIn); + } + + return 1; +} diff --git a/hexchat/src/common/plugin.h b/hexchat/src/common/plugin.h new file mode 100644 index 0000000..fb7da83 --- /dev/null +++ b/hexchat/src/common/plugin.h @@ -0,0 +1,192 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_COMMONPLUGIN_H +#define HEXCHAT_COMMONPLUGIN_H + +#ifdef PLUGIN_C +struct _hexchat_plugin +{ + /* Keep these in sync with hexchat-plugin.h */ + /* !!don't change the order, to keep binary compat!! */ + hexchat_hook *(*hexchat_hook_command) (hexchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], char *word_eol[], void *user_data), + const char *help_text, + void *userdata); + hexchat_hook *(*hexchat_hook_server) (hexchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], char *word_eol[], void *user_data), + void *userdata); + hexchat_hook *(*hexchat_hook_print) (hexchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], void *user_data), + void *userdata); + hexchat_hook *(*hexchat_hook_timer) (hexchat_plugin *ph, + int timeout, + int (*callback) (void *user_data), + void *userdata); + hexchat_hook *(*hexchat_hook_fd) (hexchat_plugin *ph, + int fd, + int flags, + int (*callback) (int fd, int flags, void *user_data), + void *userdata); + void *(*hexchat_unhook) (hexchat_plugin *ph, + hexchat_hook *hook); + void (*hexchat_print) (hexchat_plugin *ph, + const char *text); + void (*hexchat_printf) (hexchat_plugin *ph, + const char *format, ...); + void (*hexchat_command) (hexchat_plugin *ph, + const char *command); + void (*hexchat_commandf) (hexchat_plugin *ph, + const char *format, ...); + int (*hexchat_nickcmp) (hexchat_plugin *ph, + const char *s1, + const char *s2); + int (*hexchat_set_context) (hexchat_plugin *ph, + hexchat_context *ctx); + hexchat_context *(*hexchat_find_context) (hexchat_plugin *ph, + const char *servname, + const char *channel); + hexchat_context *(*hexchat_get_context) (hexchat_plugin *ph); + const char *(*hexchat_get_info) (hexchat_plugin *ph, + const char *id); + int (*hexchat_get_prefs) (hexchat_plugin *ph, + const char *name, + const char **string, + int *integer); + hexchat_list * (*hexchat_list_get) (hexchat_plugin *ph, + const char *name); + void (*hexchat_list_free) (hexchat_plugin *ph, + hexchat_list *xlist); + const char * const * (*hexchat_list_fields) (hexchat_plugin *ph, + const char *name); + int (*hexchat_list_next) (hexchat_plugin *ph, + hexchat_list *xlist); + const char * (*hexchat_list_str) (hexchat_plugin *ph, + hexchat_list *xlist, + const char *name); + int (*hexchat_list_int) (hexchat_plugin *ph, + hexchat_list *xlist, + const char *name); + void * (*hexchat_plugingui_add) (hexchat_plugin *ph, + const char *filename, + const char *name, + const char *desc, + const char *version, + char *reserved); + void (*hexchat_plugingui_remove) (hexchat_plugin *ph, + void *handle); + int (*hexchat_emit_print) (hexchat_plugin *ph, + const char *event_name, ...); + void *(*hexchat_read_fd) (hexchat_plugin *ph); + time_t (*hexchat_list_time) (hexchat_plugin *ph, + hexchat_list *xlist, + const char *name); + char *(*hexchat_gettext) (hexchat_plugin *ph, + const char *msgid); + void (*hexchat_send_modes) (hexchat_plugin *ph, + const char **targets, + int ntargets, + int modes_per_line, + char sign, + char mode); + char *(*hexchat_strip) (hexchat_plugin *ph, + const char *str, + int len, + int flags); + void (*hexchat_free) (hexchat_plugin *ph, + void *ptr); + int (*hexchat_pluginpref_set_str) (hexchat_plugin *ph, + const char *var, + const char *value); + int (*hexchat_pluginpref_get_str) (hexchat_plugin *ph, + const char *var, + char *dest); + int (*hexchat_pluginpref_set_int) (hexchat_plugin *ph, + const char *var, + int value); + int (*hexchat_pluginpref_get_int) (hexchat_plugin *ph, + const char *var); + int (*hexchat_pluginpref_delete) (hexchat_plugin *ph, + const char *var); + int (*hexchat_pluginpref_list) (hexchat_plugin *ph, + char *dest); + hexchat_hook *(*hexchat_hook_server_attrs) (hexchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], char *word_eol[], + hexchat_event_attrs *attrs, void *user_data), + void *userdata); + hexchat_hook *(*hexchat_hook_print_attrs) (hexchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], hexchat_event_attrs *attrs, + void *user_data), + void *userdata); + int (*hexchat_emit_print_attrs) (hexchat_plugin *ph, hexchat_event_attrs *attrs, + const char *event_name, ...); + hexchat_event_attrs *(*hexchat_event_attrs_create) (hexchat_plugin *ph); + void (*hexchat_event_attrs_free) (hexchat_plugin *ph, + hexchat_event_attrs *attrs); + + /* PRIVATE FIELDS! */ + void *handle; /* from dlopen */ + char *filename; /* loaded from */ + char *name; + char *desc; + char *version; + session *context; + void *deinit_callback; /* pointer to hexchat_plugin_deinit */ + unsigned int fake:1; /* fake plugin. Added by hexchat_plugingui_add() */ + unsigned int free_strings:1; /* free name,desc,version? */ +}; +#endif + +GModule *module_load (char *filename); +char *plugin_load (session *sess, char *filename, char *arg); +int plugin_reload (session *sess, char *name, int by_filename); +void plugin_add (session *sess, char *filename, void *handle, void *init_func, void *deinit_func, char *arg, int fake); +int plugin_kill (char *name, int by_filename); +void plugin_kill_all (void); +void plugin_auto_load (session *sess); +int plugin_emit_command (session *sess, char *name, char *word[], char *word_eol[]); +int plugin_emit_server (session *sess, char *name, char *word[], char *word_eol[], + time_t server_time); +int plugin_emit_print (session *sess, char *word[], time_t server_time); +int plugin_emit_dummy_print (session *sess, char *name); +int plugin_emit_keypress (session *sess, unsigned int state, unsigned int keyval, gunichar key); +GList* plugin_command_list(GList *tmp_list); +int plugin_show_help (session *sess, char *cmd); +void plugin_command_foreach (session *sess, void *userdata, void (*cb) (session *sess, void *userdata, char *name, char *usage)); +session *plugin_find_context (const char *servname, const char *channel, server *current_server); + +/* On macOS, G_MODULE_SUFFIX says "so" but meson uses "dylib" + * https://github.com/mesonbuild/meson/issues/1160 */ +#if defined(__APPLE__) +# define PLUGIN_SUFFIX "dylib" +#else +# define PLUGIN_SUFFIX G_MODULE_SUFFIX +#endif + +#endif diff --git a/hexchat/src/common/proto-irc.c b/hexchat/src/common/proto-irc.c new file mode 100644 index 0000000..5b8e02c --- /dev/null +++ b/hexchat/src/common/proto-irc.c @@ -0,0 +1,1702 @@ +/* X-Chat + * Copyright (C) 2002 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +/* IRC RFC1459(+commonly used extensions) protocol implementation */ + +#include <string.h> +#include <stdio.h> +#include <stdlib.h> +#include <ctype.h> +#include <stdarg.h> + +#ifndef WIN32 +#include <unistd.h> +#endif + +#include "hexchat.h" +#include "proto-irc.h" +#include "ctcp.h" +#include "fe.h" +#include "ignore.h" +#include "inbound.h" +#include "modes.h" +#include "notify.h" +#include "plugin.h" +#include "server.h" +#include "text.h" +#include "outbound.h" +#include "util.h" +#include "hexchatc.h" +#include "url.h" +#include "servlist.h" + +static void +irc_login (server *serv, char *user, char *realname) +{ + tcp_sendf (serv, "CAP LS 302\r\n"); /* start with CAP LS as Charybdis sasl.txt suggests */ + serv->sent_capend = FALSE; /* track if we have finished */ + + if (serv->password[0] && serv->loginmethod == LOGIN_PASS) + { + tcp_sendf (serv, "PASS %s%s\r\n", + (serv->password[0] == ':' || strchr (serv->password, ' ')) ? ":" : "", + serv->password); + } + + tcp_sendf (serv, + "NICK %s\r\n" + "USER %s 0 * :%s\r\n", + serv->nick, user, realname); +} + +static void +irc_nickserv (server *serv, char *cmd, char *arg1, char *arg2, char *arg3) +{ + /* are all ircd authors idiots? */ + switch (serv->loginmethod) + { + case LOGIN_MSG_NICKSERV: + tcp_sendf (serv, "PRIVMSG NICKSERV :%s %s%s%s\r\n", cmd, arg1, arg2, arg3); + break; + case LOGIN_NICKSERV: + tcp_sendf (serv, "NICKSERV %s %s%s%s\r\n", cmd, arg1, arg2, arg3); + break; + default: /* This may not work but at least it tries something when using /id or /ghost cmd */ + tcp_sendf (serv, "NICKSERV %s %s%s%s\r\n", cmd, arg1, arg2, arg3); + break; +#if 0 + case LOGIN_MSG_NS: + tcp_sendf (serv, "PRIVMSG NS :%s %s%s%s\r\n", cmd, arg1, arg2, arg3); + break; + case LOGIN_NS: + tcp_sendf (serv, "NS %s %s%s%s\r\n", cmd, arg1, arg2, arg3); + break; + case LOGIN_AUTH: + /* why couldn't QuakeNet implement one of the existing ones? */ + tcp_sendf (serv, "AUTH %s %s\r\n", arg1, arg2); + break; +#endif + } +} + +static void +irc_ns_identify (server *serv, char *pass) +{ + switch (serv->loginmethod) + { + case LOGIN_CHALLENGEAUTH: + tcp_sendf (serv, "PRIVMSG %s :CHALLENGE\r\n", CHALLENGEAUTH_NICK); /* request a challenge from Q */ + break; +#if 0 + case LOGIN_AUTH: + irc_nickserv (serv, "", serv->nick, pass, ""); + break; +#endif + default: + irc_nickserv (serv, "IDENTIFY", pass, "", ""); + } +} + +static void +irc_ns_ghost (server *serv, char *usname, char *pass) +{ + if (serv->loginmethod != LOGIN_CHALLENGEAUTH) + { + irc_nickserv (serv, "GHOST", usname, " ", pass); + } +} + +static void +irc_join (server *serv, char *channel, char *key) +{ + if (key[0]) + tcp_sendf (serv, "JOIN %s %s\r\n", channel, key); + else + tcp_sendf (serv, "JOIN %s\r\n", channel); +} + +static void +irc_join_list_flush (server *serv, GString *channels, GString *keys, int send_keys) +{ + char *chanstr; + char *keystr; + + chanstr = g_string_free (channels, FALSE); /* convert our strings to char arrays */ + keystr = g_string_free (keys, FALSE); + + if (send_keys) + { + tcp_sendf (serv, "JOIN %s %s\r\n", chanstr, keystr); /* send the actual command */ + } + else + { + tcp_sendf (serv, "JOIN %s\r\n", chanstr); /* send the actual command */ + } + + g_free (chanstr); + g_free (keystr); +} + +/* Join a whole list of channels & keys, split to multiple lines + * to get around the 512 limit. + */ + +static void +irc_join_list (server *serv, GSList *favorites) +{ + int first_item = 1; /* determine whether we add commas or not */ + int send_keys = 0; /* if none of our channels have keys, we can omit the 'x' fillers altogether */ + int len = 9; /* JOIN<space>channels<space>keys\r\n\0 */ + favchannel *fav; + GString *chanlist = g_string_new (NULL); + GString *keylist = g_string_new (NULL); + GSList *favlist; + + favlist = favorites; + + while (favlist) + { + fav = favlist->data; + + len += strlen (fav->name); + if (fav->key) + { + len += strlen (fav->key); + } + + if (len >= 512) /* command length exceeds the IRC hard limit, flush it and start from scratch */ + { + irc_join_list_flush (serv, chanlist, keylist, send_keys); + + chanlist = g_string_new (NULL); + keylist = g_string_new (NULL); + + len = 9; + first_item = 1; /* list dumped, omit commas once again */ + send_keys = 0; /* also omit keys until we actually find one */ + } + + if (!first_item) + { + /* This should be done before the length check, but channel names + * are already at least 2 characters long so it would trigger the + * flush anyway. + */ + len += 2; + + /* add separators but only if it's not the 1st element */ + g_string_append_c (chanlist, ','); + g_string_append_c (keylist, ','); + } + + g_string_append (chanlist, fav->name); + + if (fav->key) + { + g_string_append (keylist, fav->key); + send_keys = 1; + } + else + { + g_string_append_c (keylist, 'x'); /* 'x' filler for keyless channels so that our JOIN command is always well-formatted */ + } + + first_item = 0; + favlist = favlist->next; + } + + irc_join_list_flush (serv, chanlist, keylist, send_keys); + g_slist_free (favlist); +} + +static void +irc_part (server *serv, char *channel, char *reason) +{ + if (reason[0]) + tcp_sendf (serv, "PART %s :%s\r\n", channel, reason); + else + tcp_sendf (serv, "PART %s\r\n", channel); +} + +static void +irc_quit (server *serv, char *reason) +{ + if (reason[0]) + tcp_sendf (serv, "QUIT :%s\r\n", reason); + else + tcp_send_len (serv, "QUIT\r\n", 6); +} + +static void +irc_set_back (server *serv) +{ + tcp_send_len (serv, "AWAY\r\n", 6); +} + +static void +irc_set_away (server *serv, char *reason) +{ + if (reason) + { + if (!reason[0]) + reason = " "; + } + else + { + reason = " "; + } + + tcp_sendf (serv, "AWAY :%s\r\n", reason); +} + +static void +irc_ctcp (server *serv, char *to, char *msg) +{ + tcp_sendf (serv, "PRIVMSG %s :\001%s\001\r\n", to, msg); +} + +static void +irc_nctcp (server *serv, char *to, char *msg) +{ + tcp_sendf (serv, "NOTICE %s :\001%s\001\r\n", to, msg); +} + +static void +irc_cycle (server *serv, char *channel, char *key) +{ + tcp_sendf (serv, "PART %s\r\nJOIN %s %s\r\n", channel, channel, key); +} + +static void +irc_kick (server *serv, char *channel, char *nick, char *reason) +{ + if (reason[0]) + tcp_sendf (serv, "KICK %s %s :%s\r\n", channel, nick, reason); + else + tcp_sendf (serv, "KICK %s %s\r\n", channel, nick); +} + +static void +irc_invite (server *serv, char *channel, char *nick) +{ + tcp_sendf (serv, "INVITE %s %s\r\n", nick, channel); +} + +static void +irc_mode (server *serv, char *target, char *mode) +{ + tcp_sendf (serv, "MODE %s %s\r\n", target, mode); +} + +/* find channel info when joined */ + +static void +irc_join_info (server *serv, char *channel) +{ + tcp_sendf (serv, "MODE %s\r\n", channel); +} + +/* initiate userlist retreival */ + +static void +irc_user_list (server *serv, char *channel) +{ + if (serv->have_whox) + tcp_sendf (serv, "WHO %s %%chtsunfra,152\r\n", channel); + else + tcp_sendf (serv, "WHO %s\r\n", channel); +} + +/* userhost */ + +static void +irc_userhost (server *serv, char *nick) +{ + tcp_sendf (serv, "USERHOST %s\r\n", nick); +} + +static void +irc_away_status (server *serv, char *channel) +{ + if (serv->have_whox) + tcp_sendf (serv, "WHO %s %%chtsunfra,152\r\n", channel); + else + tcp_sendf (serv, "WHO %s\r\n", channel); +} + +/*static void +irc_get_ip (server *serv, char *nick) +{ + tcp_sendf (serv, "WHO %s\r\n", nick); +}*/ + + +/* + * Command: WHOIS + * Parameters: [<server>] <nickmask>[,<nickmask>[,...]] + */ +static void +irc_user_whois (server *serv, char *nicks) +{ + tcp_sendf (serv, "WHOIS %s\r\n", nicks); +} + +static void +irc_message (server *serv, char *channel, char *text) +{ + tcp_sendf (serv, "PRIVMSG %s :%s\r\n", channel, text); +} + +static void +irc_action (server *serv, char *channel, char *act) +{ + tcp_sendf (serv, "PRIVMSG %s :\001ACTION %s\001\r\n", channel, act); +} + +static void +irc_notice (server *serv, char *channel, char *text) +{ + tcp_sendf (serv, "NOTICE %s :%s\r\n", channel, text); +} + +static void +irc_topic (server *serv, char *channel, char *topic) +{ + if (!topic) + tcp_sendf (serv, "TOPIC %s :\r\n", channel); + else if (topic[0]) + tcp_sendf (serv, "TOPIC %s :%s\r\n", channel, topic); + else + tcp_sendf (serv, "TOPIC %s\r\n", channel); +} + +static void +irc_list_channels (server *serv, char *arg, int min_users) +{ + if (arg[0]) + { + tcp_sendf (serv, "LIST %s\r\n", arg); + return; + } + + if (serv->use_listargs) + tcp_sendf (serv, "LIST >%d,<10000\r\n", min_users - 1); + else + tcp_send_len (serv, "LIST\r\n", 6); +} + +static void +irc_names (server *serv, char *channel) +{ + tcp_sendf (serv, "NAMES %s\r\n", channel); +} + +static void +irc_change_nick (server *serv, char *new_nick) +{ + tcp_sendf (serv, "NICK %s\r\n", new_nick); +} + +static void +irc_ping (server *serv, char *to, char *timestring) +{ + if (*to) + tcp_sendf (serv, "PRIVMSG %s :\001PING %s\001\r\n", to, timestring); + else + tcp_sendf (serv, "PING %s\r\n", timestring); +} + +static int +irc_raw (server *serv, char *raw) +{ + int len; + char tbuf[4096]; + if (*raw) + { + len = strlen (raw); + if (len < sizeof (tbuf) - 3) + { + len = g_snprintf (tbuf, sizeof (tbuf), "%s\r\n", raw); + tcp_send_len (serv, tbuf, len); + } else + { + tcp_send_len (serv, raw, len); + tcp_send_len (serv, "\r\n", 2); + } + return TRUE; + } + return FALSE; +} + +/* ============================================================== */ +/* ======================= IRC INPUT ============================ */ +/* ============================================================== */ + + +static void +channel_date (session *sess, char *chan, char *timestr, + const message_tags_data *tags_data) +{ + time_t timestamp = (time_t) atol (timestr); + char *tim = ctime (×tamp); + if (tim != NULL) + tim[24] = 0; /* get rid of the \n */ + EMIT_SIGNAL_TIMESTAMP (XP_TE_CHANDATE, sess, chan, tim, NULL, NULL, 0, + tags_data->timestamp); +} + +static int +trailing_index(char *word_eol[]) +{ + int param_index; + for (param_index = 3; param_index < PDIWORDS; ++param_index) + { + if (word_eol[param_index][0] == ':') + break; + } + return param_index; +} + +static void +process_numeric (session * sess, int n, + char *word[], char *word_eol[], char *text, + const message_tags_data *tags_data) +{ + server *serv = sess->server; + /* show whois is the server tab */ + session *whois_sess = serv->server_session; + + /* unless this setting is on */ + if (prefs.hex_irc_whois_front) + whois_sess = serv->front_session; + + switch (n) + { + case 1: + inbound_login_start (sess, word[3], word[1], tags_data); + /* if network is PTnet then you must get your IP address + from "001" server message */ + if ((strncmp(word[7], "PTnet", 5) == 0) && + (strncmp(word[8], "IRC", 3) == 0) && + (strncmp(word[9], "Network", 7) == 0) && + (strrchr(word[10], '@') != NULL)) + { + serv->use_who = FALSE; + if (prefs.hex_dcc_ip_from_server) + inbound_foundip (sess, strrchr(word[10], '@')+1, tags_data); + } + + goto def; + + case 5: + inbound_005 (serv, word, tags_data); + goto def; + + case 263: /*Server load is temporarily too heavy */ + if (fe_is_chanwindow (sess->server)) + { + fe_chan_list_end (sess->server); + fe_message (word_eol[4], FE_MSG_ERROR); + } + goto def; + + case 301: + inbound_away (serv, word[4], + (word_eol[5][0] == ':') ? word_eol[5] + 1 : word_eol[5], + tags_data); + break; + + case 302: + if (serv->skip_next_userhost) + { + char *eq = strchr (word[4], '='); + if (eq) + { + *eq = 0; + if (!serv->p_cmp (word[4] + 1, serv->nick)) + { + char *at = strrchr (eq + 1, '@'); + if (at) + inbound_foundip (sess, at + 1, tags_data); + } + } + + serv->skip_next_userhost = FALSE; + break; + } + else goto def; + + case 303: + word[4]++; + notify_markonline (serv, word, tags_data); + break; + + case 305: + inbound_uback (serv, tags_data); + goto def; + + case 306: + inbound_uaway (serv, tags_data); + goto def; + + case 312: + if (!serv->skip_next_whois) + EMIT_SIGNAL_TIMESTAMP (XP_TE_WHOIS3, whois_sess, word[4], word_eol[5], + NULL, NULL, 0, tags_data->timestamp); + else + inbound_user_info (sess, NULL, NULL, NULL, word[5], word[4], NULL, NULL, + 0xff, tags_data); + break; + + case 311: /* WHOIS 1st line */ + serv->inside_whois = 1; + inbound_user_info_start (sess, word[4], tags_data); + if (!serv->skip_next_whois) + EMIT_SIGNAL_TIMESTAMP (XP_TE_WHOIS1, whois_sess, word[4], word[5], + word[6], (word_eol[8][0] == ':') ? word_eol[8] + 1 : word_eol[8], + 0, tags_data->timestamp); + else + inbound_user_info (sess, NULL, word[5], word[6], NULL, word[4], + word_eol[8][0] == ':' ? word_eol[8] + 1 : word_eol[8], + NULL, 0xff, tags_data); + break; + + case 314: /* WHOWAS */ + inbound_user_info_start (sess, word[4], tags_data); + EMIT_SIGNAL_TIMESTAMP (XP_TE_WHOIS1, whois_sess, word[4], word[5], + word[6], word_eol[8] + 1, 0, tags_data->timestamp); + break; + + case 317: + if (!serv->skip_next_whois) + { + time_t timestamp = (time_t) atol (word[6]); + long idle = atol (word[5]); + char *tim; + char outbuf[64]; + + g_snprintf (outbuf, sizeof (outbuf), + "%02ld:%02ld:%02ld", idle / 3600, (idle / 60) % 60, + idle % 60); + if (timestamp == 0) + EMIT_SIGNAL_TIMESTAMP (XP_TE_WHOIS4, whois_sess, word[4], + outbuf, NULL, NULL, 0, tags_data->timestamp); + else + { + tim = ctime (×tamp); + if (tim != NULL) + tim[19] = 0; /* get rid of the \n */ + EMIT_SIGNAL_TIMESTAMP (XP_TE_WHOIS4T, whois_sess, word[4], + outbuf, tim, NULL, 0, tags_data->timestamp); + } + } + break; + + case 318: /* END OF WHOIS */ + if (!serv->skip_next_whois) + EMIT_SIGNAL_TIMESTAMP (XP_TE_WHOIS6, whois_sess, word[4], NULL, + NULL, NULL, 0, tags_data->timestamp); + serv->skip_next_whois = 0; + serv->inside_whois = 0; + break; + + case 313: + case 319: + if (!serv->skip_next_whois) + EMIT_SIGNAL_TIMESTAMP (XP_TE_WHOIS2, whois_sess, word[4], + word_eol[5][0] == ':' ? word_eol[5] + 1 : word_eol[5], NULL, NULL, 0, + tags_data->timestamp); + break; + + case 307: /* dalnet version */ + case 320: /* :is an identified user */ + if (!serv->skip_next_whois) + EMIT_SIGNAL_TIMESTAMP (XP_TE_WHOIS_ID, whois_sess, word[4], + word_eol[5][0] == ':' ? word_eol[5] + 1 : word_eol[5], NULL, NULL, 0, + tags_data->timestamp); + break; + + case 321: + if (!fe_is_chanwindow (sess->server)) + EMIT_SIGNAL_TIMESTAMP (XP_TE_CHANLISTHEAD, serv->server_session, NULL, + NULL, NULL, NULL, 0, tags_data->timestamp); + break; + + case 322: + if (fe_is_chanwindow (sess->server)) + { + fe_add_chan_list (sess->server, word[4], word[5], word_eol[6] + 1); + } else + { + PrintTextTimeStampf (serv->server_session, tags_data->timestamp, + "%-16s %-7d %s\017\n", word[4], atoi (word[5]), + word_eol[6] + 1); + } + break; + + case 323: + if (!fe_is_chanwindow (sess->server)) + EMIT_SIGNAL_TIMESTAMP (XP_TE_SERVTEXT, serv->server_session, text, + word[1], word[2], NULL, 0, tags_data->timestamp); + else + fe_chan_list_end (sess->server); + break; + + case 324: + sess = find_channel (serv, word[4]); + if (!sess) + sess = serv->server_session; + if (sess->ignore_mode) + sess->ignore_mode = FALSE; + else + EMIT_SIGNAL_TIMESTAMP (XP_TE_CHANMODES, sess, word[4], (word_eol[5][0] == ':') ? word_eol[5] + 1 : word_eol[5], + NULL, NULL, 0, tags_data->timestamp); + fe_update_mode_buttons (sess, 'c', '-'); + fe_update_mode_buttons (sess, 't', '-'); + fe_update_mode_buttons (sess, 'n', '-'); + fe_update_mode_buttons (sess, 'i', '-'); + fe_update_mode_buttons (sess, 'm', '-'); + fe_update_mode_buttons (sess, 'l', '-'); + fe_update_mode_buttons (sess, 'k', '-'); + handle_mode (serv, word, word_eol, "", TRUE, tags_data); + break; + + case 328: /* channel url */ + sess = find_channel (serv, word[4]); + if (sess) + { + EMIT_SIGNAL_TIMESTAMP (XP_TE_CHANURL, sess, word[4], (word_eol[5][0] == ':') ? word_eol[5] + 1 : word_eol[5], + NULL, NULL, 0, tags_data->timestamp); + } + break; + + case 329: + sess = find_channel (serv, word[4]); + if (sess) + { + if (sess->ignore_date) + sess->ignore_date = FALSE; + else + channel_date (sess, word[4], (word[5][0] == ':') ? word[5] + 1 : word[5], tags_data); + } + break; + + case 330: + if (!serv->skip_next_whois) + EMIT_SIGNAL_TIMESTAMP (XP_TE_WHOIS_AUTH, whois_sess, word[4], + word_eol[6] + 1, word[5], NULL, 0, + tags_data->timestamp); + inbound_user_info (sess, NULL, NULL, NULL, NULL, word[4], NULL, word[5], + 0xff, tags_data); + break; + + case 332: + inbound_topic (serv, word[4], + (word_eol[5][0] == ':') ? word_eol[5] + 1 : word_eol[5], + tags_data); + break; + + case 333: + inbound_topictime (serv, word[4], word[5], atol (STRIP_COLON(word, word_eol, 6)), tags_data); + break; + +#if 0 + case 338: /* Undernet Real user@host, Real IP */ + EMIT_SIGNAL_TIMESTAMP (XP_TE_WHOIS_REALHOST, sess, word[4], word[5], word[6], + (word_eol[7][0]==':') ? word_eol[7]+1 : word_eol[7], + 0, tags_data->timestamp); + break; +#endif + + case 341: /* INVITE ACK */ + EMIT_SIGNAL_TIMESTAMP (XP_TE_UINVITE, sess, word[4], STRIP_COLON(word, word_eol, 5), + serv->servername, NULL, 0, tags_data->timestamp); + break; + + case 352: /* WHO */ + { + unsigned int away = 0; + session *who_sess = find_channel (serv, word[4]); + + if (*word[9] == 'G') + away = 1; + + inbound_user_info (sess, word[4], word[5], word[6], word[7], + word[8], word_eol[11], NULL, away, + tags_data); + + /* try to show only user initiated whos */ + if (!who_sess || !who_sess->doing_who) + EMIT_SIGNAL_TIMESTAMP (XP_TE_SERVTEXT, serv->server_session, text, word[1], + word[2], NULL, 0, tags_data->timestamp); + } + break; + + case 354: /* undernet WHOX: used as a reply for irc_away_status */ + { + unsigned int away = 0; + session *who_sess; + + /* irc_away_status and irc_user_list sends out a "152" */ + if (!strcmp (word[4], "152")) + { + who_sess = find_channel (serv, word[5]); + + if (*word[10] == 'G') + away = 1; + + /* :server 354 yournick 152 #channel ~ident host servname nick H account :realname */ + inbound_user_info (sess, word[5], word[6], word[7], word[8], + word[9], word_eol[12]+1, word[11], away, + tags_data); + + /* try to show only user initiated whos */ + if (!who_sess || !who_sess->doing_who) + EMIT_SIGNAL_TIMESTAMP (XP_TE_SERVTEXT, serv->server_session, text, + word[1], word[2], NULL, 0, + tags_data->timestamp); + } else + goto def; + } + break; + + case 315: /* END OF WHO */ + { + session *who_sess; + who_sess = find_channel (serv, word[4]); + if (who_sess) + { + if (!who_sess->doing_who) + EMIT_SIGNAL_TIMESTAMP (XP_TE_SERVTEXT, serv->server_session, text, + word[1], word[2], NULL, 0, + tags_data->timestamp); + who_sess->doing_who = FALSE; + } else + { + if (!serv->doing_dns) + EMIT_SIGNAL_TIMESTAMP (XP_TE_SERVTEXT, serv->server_session, text, + word[1], word[2], NULL, 0, tags_data->timestamp); + serv->doing_dns = FALSE; + } + } + break; + + case 346: /* +I-list entry */ + if (!inbound_banlist (sess, atol (STRIP_COLON (word, word_eol, 7)), word[4], word[5], word[6], 346, + tags_data)) + goto def; + break; + + case 347: /* end of invite list */ + if (!fe_ban_list_end (sess, 347)) + goto def; + break; + + case 348: /* +e-list entry */ + if (!inbound_banlist (sess, atol (STRIP_COLON (word, word_eol, 7)), word[4], word[5], word[6], 348, + tags_data)) + goto def; + break; + + case 349: /* end of exemption list */ + sess = find_channel (serv, word[4]); + if (!sess) + goto def; + if (!fe_ban_list_end (sess, 349)) + goto def; + break; + + case 353: /* NAMES */ + inbound_nameslist (serv, word[5], + (word_eol[6][0] == ':') ? word_eol[6] + 1 : word_eol[6], + tags_data); + break; + + case 366: + if (!inbound_nameslist_end (serv, word[4], tags_data)) + goto def; + break; + + case 367: /* banlist entry */ + if (!inbound_banlist (sess, atol (STRIP_COLON (word, word_eol, 7)), word[4], word[5], word[6], 367, + tags_data)) + goto def; + break; + + case 368: + sess = find_channel (serv, word[4]); + if (!sess) + goto def; + if (!fe_ban_list_end (sess, 368)) + goto def; + break; + + case 369: /* WHOWAS end */ + case 406: /* WHOWAS error */ + EMIT_SIGNAL_TIMESTAMP (XP_TE_SERVTEXT, whois_sess, text, word[1], word[2], + NULL, 0, tags_data->timestamp); + serv->inside_whois = 0; + break; + + case 372: /* motd text */ + case 375: /* motd start */ + if (!prefs.hex_irc_skip_motd || serv->motd_skipped) + EMIT_SIGNAL_TIMESTAMP (XP_TE_MOTD, serv->server_session, text, NULL, + NULL, NULL, 0, tags_data->timestamp); + break; + + case 376: /* end of motd */ + case 422: /* motd file is missing */ + inbound_login_end (sess, text, tags_data); + break; + + case 432: /* erroneous nickname */ + if (serv->end_of_motd) + { + goto def; + } + inbound_next_nick (sess, word[4], 1, tags_data); + break; + + case 433: /* nickname in use */ + if (serv->end_of_motd) + { + goto def; + } + inbound_next_nick (sess, word[4], 0, tags_data); + break; + + case 437: + if (serv->end_of_motd || is_channel (serv, word[4])) + goto def; + inbound_next_nick (sess, word[4], 0, tags_data); + break; + + case 471: + EMIT_SIGNAL_TIMESTAMP (XP_TE_USERLIMIT, sess, word[4], NULL, NULL, NULL, 0, + tags_data->timestamp); + break; + + case 473: + EMIT_SIGNAL_TIMESTAMP (XP_TE_INVITE, sess, word[4], NULL, NULL, NULL, 0, + tags_data->timestamp); + break; + + case 474: + EMIT_SIGNAL_TIMESTAMP (XP_TE_BANNED, sess, word[4], NULL, NULL, NULL, 0, + tags_data->timestamp); + break; + + case 475: + EMIT_SIGNAL_TIMESTAMP (XP_TE_KEYWORD, sess, word[4], NULL, NULL, NULL, 0, + tags_data->timestamp); + break; + + case 601: + notify_set_offline (serv, word[4], FALSE, tags_data); + break; + + case 605: + notify_set_offline (serv, word[4], TRUE, tags_data); + break; + + case 600: + case 604: + notify_set_online (serv, word[4], tags_data); + break; + + case 524: // ERR_HELPNOTFOUND + case 704: // RPL_HELPSTART + case 705: // RPL_HELPTXT + case 706: // RPL_ENDOFHELP + EMIT_SIGNAL_TIMESTAMP (XP_TE_SERVTEXT, sess, STRIP_COLON(word, word_eol, 5), NULL, NULL, NULL, + 0, tags_data->timestamp); + break; + + case 728: /* +q-list entry */ + /* NOTE: FREENODE returns these results inconsistent with e.g. +b */ + /* Who else has imlemented MODE_QUIET, I wonder? */ + if (!inbound_banlist (sess, atol (word[8]), word[4], word[6], word[7], 728, + tags_data)) + goto def; + break; + + case 729: /* end of quiet list */ + if (!fe_ban_list_end (sess, 729)) + goto def; + break; + + case 730: /* RPL_MONONLINE */ + notify_set_online_list (serv, word[4] + 1, tags_data); + break; + + case 731: /* RPL_MONOFFLINE */ + notify_set_offline_list (serv, word[4] + 1, FALSE, tags_data); + break; + + case 900: /* successful SASL 'logged in as ' */ + EMIT_SIGNAL_TIMESTAMP (XP_TE_SERVTEXT, serv->server_session, + word_eol[6]+1, word[1], word[2], NULL, 0, + tags_data->timestamp); + break; + case 904: /* failed SASL auth */ + inbound_sasl_error (serv); + case 903: /* successful SASL auth */ + case 905: /* failed SASL auth */ + case 906: /* aborted */ + case 907: /* attempting to re-auth after a successful auth */ + EMIT_SIGNAL_TIMESTAMP (XP_TE_SASLRESPONSE, serv->server_session, word[1], + word[2], word[3], ++word_eol[4], 0, + tags_data->timestamp); + serv->waiting_on_sasl = FALSE; + if (!serv->sent_capend) + { + serv->sent_capend = TRUE; + tcp_send_len (serv, "CAP END\r\n", 9); + } + break; + case 908: /* Supported SASL Mechs */ + /* ignored for now, SASL 3.2 is a better solution and we only do PLAIN atm */ + break; + + default: + + if (serv->inside_whois && word[4][0]) + { + /* some unknown WHOIS reply, ircd coders make them up weekly */ + if (!serv->skip_next_whois) + EMIT_SIGNAL_TIMESTAMP (XP_TE_WHOIS_SPECIAL, whois_sess, word[4], + (word_eol[5][0] == ':') ? word_eol[5] + 1 : word_eol[5], + word[2], NULL, 0, tags_data->timestamp); + return; + } + + def: + { + session *sess; + + if (is_channel (serv, word[4])) + { + sess = find_channel (serv, word[4]); + if (!sess) + sess = serv->server_session; + } + else if ((sess=find_dialog (serv,word[4]))) /* user with an open dialog */ + ; + else + sess=serv->server_session; + + EMIT_SIGNAL_TIMESTAMP (XP_TE_SERVTEXT, sess, text, word[1], word[2], + NULL, 0, tags_data->timestamp); + } + } +} + +/* handle named messages that starts with a ':' */ + +static void +process_named_msg (session *sess, char *type, char *word[], char *word_eol[], + const message_tags_data *tags_data) +{ + server *serv = sess->server; + char *account; + char ip[128], nick[NICKLEN]; + char *text, *ex; + int len = strlen (type); + + /* fill in the "ip" and "nick" buffers */ + ex = strchr (word[1], '!'); + if (!ex) /* no '!', must be a server message */ + { + safe_strcpy (ip, word[1], sizeof (ip)); + safe_strcpy (nick, word[1], sizeof (nick)); + } else + { + safe_strcpy (ip, ex + 1, sizeof (ip)); + ex[0] = 0; + safe_strcpy (nick, word[1], sizeof (nick)); + ex[0] = '!'; + } + + + /** Update the account for this message's source. */ + if (serv->have_account_tag) + { + account = tags_data->account && *tags_data->account ? tags_data->account : "*"; + inbound_account (serv, nick, account, tags_data); + } + + if (len == 4) + { + guint32 t; + + t = WORDL((guint8)type[0], (guint8)type[1], (guint8)type[2], (guint8)type[3]); + /* this should compile to a bunch of: CMP.L, JE ... nice & fast */ + switch (t) + { + case WORDL('J','O','I','N'): + { + char *chan = word[3]; + char *account = word[4]; + char *realname = word_eol[5]; + + if (account && strcmp (account, "*") == 0) + account = NULL; + if (realname && *realname == ':') + realname++; + if (*chan == ':') + chan++; + if (!serv->p_cmp (nick, serv->nick)) + inbound_ujoin (serv, chan, nick, ip, tags_data); + else + inbound_join (serv, chan, nick, ip, account, realname, + tags_data); + } + return; + + case WORDL('K','I','C','K'): + { + char *kicked = word[4]; + char *reason = word_eol[5]; + if (*kicked) + { + if (*reason == ':') + reason++; + if (!strcmp (kicked, serv->nick)) + inbound_ukick (serv, word[3], nick, reason, tags_data); + else + inbound_kick (serv, word[3], kicked, nick, reason, tags_data); + } + } + return; + + case WORDL('K','I','L','L'): + { + char *reason = word_eol[4]; + if (*reason == ':') + reason++; + + EMIT_SIGNAL_TIMESTAMP (XP_TE_KILL, sess, nick, reason, NULL, NULL, + 0, tags_data->timestamp); + } + return; + + case WORDL('M','O','D','E'): + handle_mode (serv, word, word_eol, nick, FALSE, tags_data); /* modes.c */ + return; + + case WORDL('N','I','C','K'): + inbound_newnick (serv, nick, + (word_eol[3][0] == ':') ? word_eol[3] + 1 : word_eol[3], + FALSE, tags_data); + return; + + case WORDL('P','A','R','T'): + { + char *chan = word[3]; + char *reason = word_eol[4]; + + if (*chan == ':') + chan++; + if (*reason == ':') + reason++; + if (!strcmp (nick, serv->nick)) + inbound_upart (serv, chan, ip, reason, tags_data); + else + inbound_part (serv, chan, nick, ip, reason, tags_data); + } + return; + + case WORDL('P', 'I', 'N', 'G'): + tcp_sendf (sess->server, "PONG %s\r\n", word_eol[3]); + return; + + case WORDL('P','O','N','G'): + inbound_ping_reply (serv->server_session, + (word[4][0] == ':') ? word[4] + 1 : word[4], + word[3], tags_data); + return; + + case WORDL('Q','U','I','T'): + inbound_quit (serv, nick, ip, + (word_eol[3][0] == ':') ? word_eol[3] + 1 : word_eol[3], + tags_data); + return; + + case WORDL('A','W','A','Y'): + inbound_away_notify (serv, nick, + (word_eol[3][0] == ':') ? word_eol[3] + 1 : NULL, + tags_data); + return; + + case WORDL('F','A','I','L'): + text = STRIP_COLON(word, word_eol, trailing_index(word_eol)); + if (g_strcmp0(word[3], "*") == 0) + { + EMIT_SIGNAL_TIMESTAMP (XP_TE_FAIL, sess, word[4], text, NULL, NULL, NULL, tags_data->timestamp); + } else + { + EMIT_SIGNAL_TIMESTAMP (XP_TE_FAILCMD, sess, word[3], word[4], text, NULL, NULL, tags_data->timestamp); + } + return; + + case WORDL('W','A','R','N'): + text = STRIP_COLON(word, word_eol, trailing_index(word_eol)); + if (g_strcmp0(word[3], "*") == 0) + { + EMIT_SIGNAL_TIMESTAMP (XP_TE_WARN, sess, word[4], text, NULL, NULL, NULL, tags_data->timestamp); + } else + { + EMIT_SIGNAL_TIMESTAMP (XP_TE_WARNCMD, sess, word[3], word[4], text, NULL, NULL, tags_data->timestamp); + } + return; + + case WORDL('N','O','T','E'): + text = STRIP_COLON(word, word_eol, trailing_index(word_eol)); + if (g_strcmp0(word[3], "*") == 0) + { + EMIT_SIGNAL_TIMESTAMP (XP_TE_NOTE, sess, word[4], text, NULL, NULL, NULL, tags_data->timestamp); + } else + { + EMIT_SIGNAL_TIMESTAMP (XP_TE_NOTECMD, sess, word[3], word[4], text, NULL, NULL, tags_data->timestamp); + } + return; + } + + goto garbage; + } + + else if (len >= 5) + { + guint32 t; + + t = WORDL((guint8)type[0], (guint8)type[1], (guint8)type[2], (guint8)type[3]); + /* this should compile to a bunch of: CMP.L, JE ... nice & fast */ + switch (t) + { + + case WORDL('A','C','C','O'): + inbound_account (serv, nick, STRIP_COLON(word, word_eol, 3), tags_data); + return; + + case WORDL('A', 'U', 'T', 'H'): + inbound_sasl_authenticate (sess->server, word_eol[3]); + return; + + case WORDL('C', 'H', 'G', 'H'): + inbound_user_info (sess, NULL, word[3], STRIP_COLON(word, word_eol, 4), NULL, nick, NULL, + NULL, 0xff, tags_data); + return; + + case WORDL('S', 'E', 'T', 'N'): + inbound_user_info (sess, NULL, NULL, NULL, NULL, nick, STRIP_COLON(word, word_eol, 3), + NULL, 0xff, tags_data); + return; + + case WORDL('I','N','V','I'): + if (ignore_check (word[1], IG_INVI)) + return; + + text = STRIP_COLON(word, word_eol, 4); + if (serv->p_cmp (word[3], serv->nick)) + EMIT_SIGNAL_TIMESTAMP (XP_TE_INVITEDOTHER, sess, text, nick, + word[3], serv->servername, 0, + tags_data->timestamp); + else + EMIT_SIGNAL_TIMESTAMP (XP_TE_INVITED, sess, text, nick, + serv->servername, NULL, 0, + tags_data->timestamp); + + return; + + case WORDL('N','O','T','I'): + { + text = word_eol[4]; + if (*text == ':') + { + text++; + } + +#ifdef USE_OPENSSL + /* QuakeNet CHALLENGE upon our request */ + if (serv->loginmethod == LOGIN_CHALLENGEAUTH && !serv->p_cmp (word[1], CHALLENGEAUTH_FULLHOST) + && !strncmp (text, "CHALLENGE ", 10) && *serv->password) + { + char *response; + ircnet *net = serv->network; + char *user = net && net->user ? net->user : prefs.hex_irc_user_name; + + response = challengeauth_response (user, serv->password, word[5]); + + tcp_sendf (serv, "PRIVMSG %s :CHALLENGEAUTH %s %s %s\r\n", + CHALLENGEAUTH_NICK, + user, + response, + CHALLENGEAUTH_ALGO); + + g_free (response); + return; /* omit the CHALLENGE <hash> ALGOS message */ + } +#endif + + if (!ignore_check (word[1], IG_NOTI)) + inbound_notice (serv, word[3], nick, text, ip, tags_data->identified, tags_data); + } + return; + + case WORDL('P','R','I','V'): + { + char *to = word[3]; + int len; + if (*to) + { + /* Handle limited channel messages, for now no special event */ + if (strchr (serv->chantypes, to[0]) == NULL + && strchr (serv->nick_prefixes, to[0]) != NULL) + to++; + + text = word_eol[4]; + if (*text == ':') + text++; + + len = strlen (text); + if (text[0] == 1) /* ctcp */ + { + char *new_pdibuf = NULL; + if (text[len - 1] == 1) + { + text[len - 1] = 0; + } + text++; + if (g_ascii_strncasecmp (text, "ACTION", 6) != 0) + flood_check (nick, ip, serv, sess, 0); + if (g_ascii_strncasecmp (text, "DCC ", 4) == 0) + { + int i; + char *new_word[PDIWORDS+1] = { NULL }; + char *new_word_eol[PDIWORDS+1] = { NULL }; + + new_pdibuf = g_malloc (strlen (word_eol[6]) + 1); + + /* This is a bit ugly but we handle the contents of the DCC message containing + * "quoted paths for files" here which means reparsing the message with handle_quotes. + * We avoid reparsing the entire message to avoid corrupting the non DCC parts. + * Greater than PDIWORD length DCC messages will be truncated. */ + process_data_init (new_pdibuf, word_eol[6], new_word, new_word_eol, TRUE, FALSE); + for (i = 6; i < PDIWORDS; ++i) + { + word[i] = new_word[i - 5]; + word_eol[i] = new_word_eol[i - 5]; + } + } + + ctcp_handle (sess, to, nick, ip, text, word, word_eol, tags_data->identified, + tags_data); + + /* Note word will be invalid beyond this scope */ + g_free (new_pdibuf); + } else + { + if (is_channel (serv, to)) + { + if (ignore_check (word[1], IG_CHAN)) + return; + inbound_chanmsg (serv, NULL, to, nick, text, FALSE, tags_data->identified, + tags_data); + } else + { + if (ignore_check (word[1], IG_PRIV)) + return; + inbound_privmsg (serv, nick, ip, text, tags_data->identified, tags_data); + } + } + } + } + return; + + case WORDL('T','O','P','I'): + inbound_topicnew (serv, nick, word[3], + (word_eol[4][0] == ':') ? word_eol[4] + 1 : word_eol[4], + tags_data); + return; + + case WORDL('W','A','L','L'): + text = word_eol[3]; + if (*text == ':') + text++; + EMIT_SIGNAL_TIMESTAMP (XP_TE_WALLOPS, sess, nick, text, NULL, NULL, 0, + tags_data->timestamp); + return; + } + } + + else if (len == 3) + { + guint32 t; + + t = WORDL((guint8)type[0], (guint8)type[1], (guint8)type[2], (guint8)type[3]); + switch (t) + { + case WORDL('C','A','P','\0'): + if (strncasecmp (word[4], "ACK", 3) == 0) + { + inbound_cap_ack (serv, word[1], + word[5][0] == ':' ? word_eol[5] + 1 : word_eol[5], + tags_data); + } + else if (strncasecmp (word[4], "LS", 2) == 0 || strncasecmp (word[4], "NEW", 3) == 0) + { + inbound_cap_ls (serv, word[1], + word[5][0] == ':' ? word_eol[5] + 1 : word_eol[5], + tags_data); + } + else if (strncasecmp (word[4], "NAK", 3) == 0) + { + inbound_cap_nak (serv, word[5][0] == ':' ? word_eol[5] + 1 : word_eol[5], tags_data); + } + else if (strncasecmp (word[4], "LIST", 4) == 0) + { + inbound_cap_list (serv, word[1], + word[5][0] == ':' ? word_eol[5] + 1 : word_eol[5], + tags_data); + } + else if (strncasecmp (word[4], "DEL", 3) == 0) + { + inbound_cap_del (serv, word[1], + word[5][0] == ':' ? word_eol[5] + 1 : word_eol[5], + tags_data); + } + + return; + } + } + +garbage: + /* unknown message */ + PrintTextTimeStampf (sess, tags_data->timestamp, "GARBAGE: %s\n", word_eol[1]); +} + +/* handle named messages that DON'T start with a ':' */ + +static void +process_named_servermsg (session *sess, char *buf, char *rawname, char *word_eol[], + const message_tags_data *tags_data) +{ + sess = sess->server->server_session; + + if (!strncmp (buf, "PING ", 5)) + { + tcp_sendf (sess->server, "PONG %s\r\n", buf + 5); + return; + } + if (!strncmp (buf, "ERROR", 5)) + { + EMIT_SIGNAL_TIMESTAMP (XP_TE_SERVERERROR, sess, buf + 7, NULL, NULL, NULL, + 0, tags_data->timestamp); + return; + } + if (!strncmp (buf, "NOTICE ", 7)) + { + buf = word_eol[3]; + if (*buf == ':') + buf++; + EMIT_SIGNAL_TIMESTAMP (XP_TE_SERVNOTICE, sess, buf, + sess->server->servername, NULL, NULL, 0, + tags_data->timestamp); + return; + } + if (!strncmp (buf, "AUTHENTICATE", 12)) + { + inbound_sasl_authenticate (sess->server, word_eol[2]); + return; + } + + EMIT_SIGNAL_TIMESTAMP (XP_TE_SERVTEXT, sess, buf, sess->server->servername, + rawname, NULL, 0, tags_data->timestamp); +} + +/* Returns the timezone offset. This should be the same as the variable + * "timezone" in time.h, but *BSD doesn't have it. + */ +static time_t +get_timezone (void) +{ + struct tm tm_utc, tm_local; + time_t t, time_utc, time_local; + + time (&t); + + /* gmtime() and localtime() are thread-safe on windows. + * on other systems we should use {gmtime,localtime}_r(). + */ +#if WIN32 + tm_utc = *gmtime (&t); + tm_local = *localtime (&t); +#else + gmtime_r (&t, &tm_utc); + localtime_r (&t, &tm_local); +#endif + + time_utc = mktime (&tm_utc); + time_local = mktime (&tm_local); + + return time_utc - time_local; +} + +/* Handle time-server tags. + * + * Sets tags_data->timestamp to the correct time (in unix time). + * This received time is always in UTC. + * + * See http://ircv3.atheme.org/extensions/server-time-3.2 + */ +static void +handle_message_tag_time (const char *time, message_tags_data *tags_data) +{ + /* The time format defined in the ircv3.2 specification is + * YYYY-MM-DDThh:mm:ss.sssZ + * but znc simply sends a unix time (with 3 decimal places for miliseconds) + * so we might as well support both. + */ + if (!*time) + return; + + if (time[strlen (time) - 1] == 'Z') + { + /* as defined in the specification */ + struct tm t; + int z; + + /* we ignore the milisecond part */ + z = sscanf (time, "%d-%d-%dT%d:%d:%d", &t.tm_year, &t.tm_mon, &t.tm_mday, + &t.tm_hour, &t.tm_min, &t.tm_sec); + + if (z != 6) + return; + + t.tm_year -= 1900; + t.tm_mon -= 1; + t.tm_isdst = 0; /* day light saving time */ + + tags_data->timestamp = mktime (&t); + + if (tags_data->timestamp < 0) + { + tags_data->timestamp = 0; + return; + } + + /* get rid of the local time (mktime() receives a local calendar time) */ + tags_data->timestamp -= get_timezone(); + } + else + { + /* znc */ + long long int t; + + /* we ignore the milisecond part */ + if ( +#if defined(__MINGW64__) || defined(__MINGW32__) + __mingw_sscanf +#else + sscanf +#endif + (time, "%lld", &t) != 1) + return; + + tags_data->timestamp = (time_t) t; + } +} + +/* Handle message tags. + * + * See http://ircv3.atheme.org/specification/message-tags-3.2 + */ +static void +handle_message_tags (server *serv, const char *tags_str, + message_tags_data *tags_data) +{ + char **tags; + int i; + + /* FIXME We might want to avoid the allocation overhead here since + * this might be called for every message from the server. + */ + tags = g_strsplit (tags_str, ";", 0); + + for (i=0; tags[i]; i++) + { + char *key = tags[i]; + char *value = strchr (tags[i], '='); + + if (!value) + continue; + + *value = '\0'; + value++; + + if (serv->have_account_tag && !strcmp (key, "account")) + tags_data->account = g_strdup (value); + + if (serv->have_idmsg && strcmp (key, "solanum.chat/identified")) + tags_data->identified = TRUE; + + if (serv->have_server_time && !strcmp (key, "time")) + handle_message_tag_time (value, tags_data); + } + + g_strfreev (tags); +} + +/* irc_inline() - 1 single line received from serv */ +static void +irc_inline (server *serv, char *buf, int len) +{ + session *sess, *tmp; + char *type, *text; + char *word[PDIWORDS+1]; + char *word_eol[PDIWORDS+1]; + char *pdibuf; + message_tags_data tags_data = MESSAGE_TAGS_DATA_INIT; + + pdibuf = g_malloc (len + 1); + + sess = serv->front_session; + + /* Python relies on this */ + word[PDIWORDS] = NULL; + word_eol[PDIWORDS] = NULL; + + if (*buf == '@') + { + char *tags = buf + 1; /* skip the '@' */ + char *sep = strchr (buf, ' '); + + if (!sep) + goto xit; + + *sep = '\0'; + buf = sep + 1; + + handle_message_tags(serv, tags, &tags_data); + } + + url_check_line (buf); + + /* split line into words and words_to_end_of_line */ + process_data_init (pdibuf, buf, word, word_eol, FALSE, FALSE); + + if (buf[0] == ':') + { + /* find a context for this message */ + if (is_channel (serv, word[3])) + { + tmp = find_channel (serv, word[3]); + if (tmp) + sess = tmp; + } + + /* for server messages, the 2nd word is the "message type" */ + type = word[2]; + + word[0] = type; + word_eol[1] = buf; /* keep the ":" for plugins */ + + if (plugin_emit_server (sess, type, word, word_eol, + tags_data.timestamp)) + goto xit; + + word[1]++; + word_eol[1] = buf + 1; /* but not for HexChat internally */ + + } else + { + word[0] = type = word[1]; + + if (plugin_emit_server (sess, type, word, word_eol, + tags_data.timestamp)) + goto xit; + } + + if (buf[0] != ':') + { + process_named_servermsg (sess, buf, word[0], word_eol, &tags_data); + goto xit; + } + + /* see if the second word is a numeric */ + if (isdigit ((unsigned char) word[2][0])) + { + text = word_eol[4]; + if (*text == ':') + text++; + + process_numeric (sess, atoi (word[2]), word, word_eol, text, &tags_data); + } else + { + process_named_msg (sess, type, word, word_eol, &tags_data); + } + +xit: + message_tags_data_free (&tags_data); + g_free (pdibuf); +} + +void +message_tags_data_free (message_tags_data *tags_data) +{ + g_clear_pointer (&tags_data->account, g_free); +} + +void +proto_fill_her_up (server *serv) +{ + serv->p_inline = irc_inline; + serv->p_invite = irc_invite; + serv->p_cycle = irc_cycle; + serv->p_ctcp = irc_ctcp; + serv->p_nctcp = irc_nctcp; + serv->p_quit = irc_quit; + serv->p_kick = irc_kick; + serv->p_part = irc_part; + serv->p_ns_identify = irc_ns_identify; + serv->p_ns_ghost = irc_ns_ghost; + serv->p_join = irc_join; + serv->p_join_list = irc_join_list; + serv->p_login = irc_login; + serv->p_join_info = irc_join_info; + serv->p_mode = irc_mode; + serv->p_user_list = irc_user_list; + serv->p_away_status = irc_away_status; + /*serv->p_get_ip = irc_get_ip;*/ + serv->p_whois = irc_user_whois; + serv->p_get_ip = irc_user_list; + serv->p_get_ip_uh = irc_userhost; + serv->p_set_back = irc_set_back; + serv->p_set_away = irc_set_away; + serv->p_message = irc_message; + serv->p_action = irc_action; + serv->p_notice = irc_notice; + serv->p_topic = irc_topic; + serv->p_list_channels = irc_list_channels; + serv->p_change_nick = irc_change_nick; + serv->p_names = irc_names; + serv->p_ping = irc_ping; + serv->p_raw = irc_raw; + serv->p_cmp = rfc_casecmp; /* can be changed by 005 in modes.c */ +} diff --git a/hexchat/src/common/proto-irc.h b/hexchat/src/common/proto-irc.h new file mode 100644 index 0000000..6f52f1b --- /dev/null +++ b/hexchat/src/common/proto-irc.h @@ -0,0 +1,50 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <time.h> +#include "hexchat.h" + +#ifndef HEXCHAT_PROTO_H +#define HEXCHAT_PROTO_H + +#define MESSAGE_TAGS_DATA_INIT \ + { \ + NULL, /* account name */ \ + FALSE, /* identified to nick */ \ + (time_t)0, /* timestamp */ \ + } + +#define STRIP_COLON(word, word_eol, idx) (word)[(idx)][0] == ':' ? (word_eol)[(idx)]+1 : (word)[(idx)] + +/* Message tag information that might be passed along with a server message + * + * See http://ircv3.atheme.org/specification/capability-negotiation-3.1 + */ +typedef struct +{ + char *account; + gboolean identified; + time_t timestamp; +} message_tags_data; + +void message_tags_data_free (message_tags_data *tags_data); + +void proto_fill_her_up (server *serv); + +#endif diff --git a/hexchat/src/common/scram.c b/hexchat/src/common/scram.c new file mode 100644 index 0000000..b39199d --- /dev/null +++ b/hexchat/src/common/scram.c @@ -0,0 +1,333 @@ +/* HexChat + * Copyright (C) 2023 Patrick Okraku + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "hexchat.h" + +#ifdef USE_OPENSSL + +#include "scram.h" +#include <openssl/hmac.h> +#include <openssl/rand.h> + +#define NONCE_LENGTH 18 +#define CLIENT_KEY "Client Key" +#define SERVER_KEY "Server Key" + +// EVP_MD_CTX_create() and EVP_MD_CTX_destroy() were renamed in OpenSSL 1.1.0 +#if (OPENSSL_VERSION_NUMBER < 0x10100000L) +#define EVP_MD_CTX_new(ctx) EVP_MD_CTX_create(ctx) +#define EVP_MD_CTX_free(ctx) EVP_MD_CTX_destroy(ctx) +#endif + +scram_session +*scram_session_create (const char *digest, const char *username, const char *password) +{ + scram_session *session; + const EVP_MD *md; +#if (OPENSSL_VERSION_NUMBER < 0x10100000L) + OpenSSL_add_all_algorithms (); +#endif + md = EVP_get_digestbyname (digest); + + if (md == NULL) + { + // Unknown message digest + return NULL; + } + + session = g_new0 (scram_session, 1); + session->digest = md; + session->digest_size = EVP_MD_size (md); + session->username = g_strdup (username); + session->password = g_strdup (password); + return session; +} + +void +scram_session_free (scram_session *session) +{ + if (session == NULL) + { + return; + } + + g_free (session->username); + g_free (session->password); + g_free (session->client_nonce_b64); + g_free (session->client_first_message_bare); + g_free (session->salted_password); + g_free (session->auth_message); + g_free (session->error); + + g_free (session); +} + +static int +create_nonce (void *buffer, size_t length) +{ + return RAND_bytes (buffer, length); +} + +static int +create_SHA (scram_session *session, const unsigned char *input, size_t input_len, + unsigned char *output, unsigned int *output_len) +{ + EVP_MD_CTX *md_ctx = EVP_MD_CTX_new (); + + if (!EVP_DigestInit_ex (md_ctx, session->digest, NULL)) + { + session->error = g_strdup ("Message digest initialization failed"); + EVP_MD_CTX_free (md_ctx); + return SCRAM_ERROR; + } + + if (!EVP_DigestUpdate (md_ctx, input, input_len)) + { + session->error = g_strdup ("Message digest update failed"); + EVP_MD_CTX_free (md_ctx); + return SCRAM_ERROR; + } + + if (!EVP_DigestFinal_ex (md_ctx, output, output_len)) + { + session->error = g_strdup ("Message digest finalization failed"); + EVP_MD_CTX_free (md_ctx); + return SCRAM_ERROR; + } + + EVP_MD_CTX_free (md_ctx); + return SCRAM_IN_PROGRESS; +} + +static scram_status +process_client_first (scram_session *session, char **output, size_t *output_len) +{ + char nonce[NONCE_LENGTH]; + + if (!create_nonce (nonce, NONCE_LENGTH)) + { + session->error = g_strdup ("Could not create client nonce"); + return SCRAM_ERROR; + } + + session->client_nonce_b64 = g_base64_encode ((guchar *) nonce, NONCE_LENGTH); + *output = g_strdup_printf ("n,,n=%s,r=%s", session->username, session->client_nonce_b64); + *output_len = strlen (*output); + session->client_first_message_bare = g_strdup (*output + 3); + session->step++; + return SCRAM_IN_PROGRESS; +} + +static scram_status +process_server_first (scram_session *session, const char *data, char **output, + size_t *output_len) +{ + char **params, *client_final_message_without_proof, *salt, *server_nonce_b64, + *client_proof_b64; + unsigned char *client_key, stored_key[EVP_MAX_MD_SIZE], *client_signature, *client_proof; + unsigned int i, param_count, iteration_count, client_key_len, stored_key_len; + gsize salt_len = 0; + size_t client_nonce_len; + + params = g_strsplit (data, ",", -1); + param_count = g_strv_length (params); + + if (param_count < 3) + { + session->error = g_strdup_printf ("Invalid server-first-message: %s", data); + g_strfreev (params); + return SCRAM_ERROR; + } + + server_nonce_b64 = NULL; + salt = NULL; + iteration_count = 0; + + for (i = 0; i < param_count; i++) + { + if (!strncmp (params[i], "r=", 2)) + { + g_free (server_nonce_b64); + server_nonce_b64 = g_strdup (params[i] + 2); + } + else if (!strncmp (params[i], "s=", 2)) + { + g_free (salt); + salt = g_strdup (params[i] + 2); + } + else if (!strncmp (params[i], "i=", 2)) + { + iteration_count = strtoul (params[i] + 2, NULL, 10); + } + } + + g_strfreev (params); + + if (server_nonce_b64 == NULL || *server_nonce_b64 == '\0' || salt == NULL || + *salt == '\0' || iteration_count == 0) + { + session->error = g_strdup_printf ("Invalid server-first-message: %s", data); + g_free (server_nonce_b64); + g_free (salt); + return SCRAM_ERROR; + } + + client_nonce_len = strlen (session->client_nonce_b64); + + // The server can append his nonce to the client's nonce + if (strlen (server_nonce_b64) < client_nonce_len || + strncmp (server_nonce_b64, session->client_nonce_b64, client_nonce_len)) + { + session->error = g_strdup_printf ("Invalid server nonce: %s", server_nonce_b64); + return SCRAM_ERROR; + } + + g_base64_decode_inplace ((gchar *) salt, &salt_len); + + // SaltedPassword := Hi(Normalize(password), salt, i) + session->salted_password = g_malloc (session->digest_size); + + PKCS5_PBKDF2_HMAC (session->password, strlen (session->password), (unsigned char *) salt, + salt_len, iteration_count, session->digest, session->digest_size, + session->salted_password); + + // AuthMessage := client-first-message-bare + "," + + // server-first-message + "," + + // client-final-message-without-proof + client_final_message_without_proof = g_strdup_printf ("c=biws,r=%s", server_nonce_b64); + + session->auth_message = g_strdup_printf ("%s,%s,%s", session->client_first_message_bare, + data, client_final_message_without_proof); + + // ClientKey := HMAC(SaltedPassword, "Client Key") + client_key = g_malloc0 (session->digest_size); + + HMAC (session->digest, session->salted_password, session->digest_size, + (unsigned char *) CLIENT_KEY, strlen (CLIENT_KEY), client_key, &client_key_len); + + // StoredKey := H(ClientKey) + if (!create_SHA (session, client_key, session->digest_size, stored_key, &stored_key_len)) + { + g_free (client_final_message_without_proof); + g_free (server_nonce_b64); + g_free (salt); + g_free (client_key); + return SCRAM_ERROR; + } + + // ClientSignature := HMAC(StoredKey, AuthMessage) + client_signature = g_malloc0 (session->digest_size); + HMAC (session->digest, stored_key, stored_key_len, (unsigned char *) session->auth_message, + strlen ((char *) session->auth_message), client_signature, NULL); + + // ClientProof := ClientKey XOR ClientSignature + client_proof = g_malloc0 (client_key_len); + + for (i = 0; i < client_key_len; i++) + { + client_proof[i] = client_key[i] ^ client_signature[i]; + } + + client_proof_b64 = g_base64_encode ((guchar *) client_proof, client_key_len); + + *output = g_strdup_printf ("%s,p=%s", client_final_message_without_proof, client_proof_b64); + *output_len = strlen (*output); + + g_free (server_nonce_b64); + g_free (salt); + g_free (client_final_message_without_proof); + g_free (client_key); + g_free (client_signature); + g_free (client_proof); + g_free (client_proof_b64); + + session->step++; + return SCRAM_IN_PROGRESS; +} + +static scram_status +process_server_final (scram_session *session, const char *data) +{ + char *verifier; + unsigned char *server_key, *server_signature; + unsigned int server_key_len = 0, server_signature_len = 0; + gsize verifier_len = 0; + + if (strlen (data) < 3 || (data[0] != 'v' && data[1] != '=')) + { + return SCRAM_ERROR; + } + + verifier = g_strdup (data + 2); + g_base64_decode_inplace (verifier, &verifier_len); + + // ServerKey := HMAC(SaltedPassword, "Server Key") + server_key = g_malloc0 (session->digest_size); + HMAC (session->digest, session->salted_password, session->digest_size, + (unsigned char *) SERVER_KEY, strlen (SERVER_KEY), server_key, &server_key_len); + + // ServerSignature := HMAC(ServerKey, AuthMessage) + server_signature = g_malloc0 (session->digest_size); + HMAC (session->digest, server_key, session->digest_size, + (unsigned char *) session->auth_message, strlen ((char *) session->auth_message), + server_signature, &server_signature_len); + + if (verifier_len == server_signature_len && + memcmp (verifier, server_signature, verifier_len) == 0) + { + g_free (verifier); + g_free (server_key); + g_free (server_signature); + return SCRAM_SUCCESS; + } + else + { + g_free (verifier); + g_free (server_key); + g_free (server_signature); + return SCRAM_ERROR; + } +} + +scram_status +scram_process (scram_session *session, const char *input, char **output, size_t *output_len) +{ + scram_status status; + + switch (session->step) + { + case 0: + status = process_client_first (session, output, output_len); + break; + case 1: + status = process_server_first (session, input, output, output_len); + break; + case 2: + status = process_server_final (session, input); + break; + default: + *output = NULL; + *output_len = 0; + status = SCRAM_ERROR; + break; + } + + return status; +} + +#endif \ No newline at end of file diff --git a/hexchat/src/common/scram.h b/hexchat/src/common/scram.h new file mode 100644 index 0000000..ffe2203 --- /dev/null +++ b/hexchat/src/common/scram.h @@ -0,0 +1,51 @@ +/* HexChat + * Copyright (C) 2023 Patrick Okraku + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ +#ifndef HEXCHAT_SCRAM_H +#define HEXCHAT_SCRAM_H + +#include "config.h" +#ifdef USE_OPENSSL +#include <openssl/evp.h> + +typedef struct +{ + const EVP_MD *digest; + size_t digest_size; + char *username; + char *password; + char *client_nonce_b64; + char *client_first_message_bare; + unsigned char *salted_password; + char *auth_message; + char *error; + int step; +} scram_session; + +typedef enum +{ + SCRAM_ERROR = 0, + SCRAM_IN_PROGRESS, + SCRAM_SUCCESS +} scram_status; + +scram_session *scram_session_create (const char *digset, const char *username, const char *password); +void scram_session_free (scram_session *session); +scram_status scram_process (scram_session *session, const char *input, char **output, size_t *output_len); + +#endif +#endif \ No newline at end of file diff --git a/hexchat/src/common/server.c b/hexchat/src/common/server.c new file mode 100644 index 0000000..c78ce90 --- /dev/null +++ b/hexchat/src/common/server.c @@ -0,0 +1,1951 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + * + * MS Proxy (ISA server) support is (c) 2006 Pavel Fedin <sonic_amiga@rambler.ru> + * based on Dante source code + * Copyright (c) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + * Inferno Nettverk A/S, Norway. All rights reserved. + */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <errno.h> +#include <fcntl.h> + +#define WANTSOCKET +#define WANTARPA +#include "inet.h" + +#ifdef WIN32 +#include <winbase.h> +#include <io.h> +#else +#include <signal.h> +#include <sys/wait.h> +#include <unistd.h> +#endif + +#include "hexchat.h" +#include "fe.h" +#include "cfgfiles.h" +#include "network.h" +#include "notify.h" +#include "hexchatc.h" +#include "inbound.h" +#include "outbound.h" +#include "text.h" +#include "util.h" +#include "url.h" +#include "proto-irc.h" +#include "servlist.h" +#include "server.h" + +#ifdef USE_OPENSSL +#include <openssl/ssl.h> /* SSL_() */ +#include <openssl/err.h> /* ERR_() */ +#include "ssl.h" +#endif + +#ifdef USE_OPENSSL +/* local variables */ +static struct session *g_sess = NULL; +#endif + +static GSList *away_list = NULL; +GSList *serv_list = NULL; + +static void auto_reconnect (server *serv, int send_quit, int err); +static void server_disconnect (session * sess, int sendquit, int err); +static int server_cleanup (server * serv); +static void server_connect (server *serv, char *hostname, int port, int no_login); + +static void +write_error (char *message, GError **error) +{ + if (error == NULL || *error == NULL) { + return; + } + g_printerr ("%s: %s\n", message, (*error)->message); + g_clear_error (error); +} + +/* actually send to the socket. This might do a character translation or + send via SSL. server/dcc both use this function. */ + +int +tcp_send_real (void *ssl, int sok, GIConv write_converter, char *buf, int len) +{ + int ret; + + gsize buf_encoded_len; + gchar *buf_encoded = text_convert_invalid (buf, len, write_converter, arbitrary_encoding_fallback_string, &buf_encoded_len); +#ifdef USE_OPENSSL + if (!ssl) + ret = send (sok, buf_encoded, buf_encoded_len, 0); + else + ret = _SSL_send (ssl, buf_encoded, buf_encoded_len); +#else + ret = send (sok, buf_encoded, buf_encoded_len, 0); +#endif + g_free (buf_encoded); + + return ret; +} + +static int +server_send_real (server *serv, char *buf, int len) +{ + fe_add_rawlog (serv, buf, len, TRUE); + + url_check_line (buf); + + return tcp_send_real (serv->ssl, serv->sok, serv->write_converter, buf, len); +} + +/* new throttling system, uses the same method as the Undernet + ircu2.10 server; under test, a 200-line paste didn't flood + off the client */ + +static int +tcp_send_queue (server *serv) +{ + char *buf, *p; + int len, i, pri; + GSList *list; + time_t now = time (0); + + /* did the server close since the timeout was added? */ + if (!is_server (serv)) + return 0; + + /* try priority 2,1,0 */ + pri = 2; + while (pri >= 0) + { + list = serv->outbound_queue; + while (list) + { + buf = (char *) list->data; + if (buf[0] == pri) + { + buf++; /* skip the priority byte */ + len = strlen (buf); + + if (serv->next_send < now) + serv->next_send = now; + if (serv->next_send - now >= 10) + { + /* check for clock skew */ + if (now >= serv->prev_now) + return 1; /* don't remove the timeout handler */ + /* it is skewed, reset to something sane */ + serv->next_send = now; + } + + for (p = buf, i = len; i && *p != ' '; p++, i--); + serv->next_send += (2 + i / 120); + serv->sendq_len -= len; + serv->prev_now = now; + fe_set_throttle (serv); + + server_send_real (serv, buf, len); + + buf--; + serv->outbound_queue = g_slist_remove (serv->outbound_queue, buf); + g_free (buf); + list = serv->outbound_queue; + } else + { + list = list->next; + } + } + /* now try pri 0 */ + pri--; + } + return 0; /* remove the timeout handler */ +} + +int +tcp_send_len (server *serv, char *buf, int len) +{ + char *dbuf; + int noqueue = !serv->outbound_queue; + + if (!prefs.hex_net_throttle) + return server_send_real (serv, buf, len); + + dbuf = g_malloc (len + 2); /* first byte is the priority */ + dbuf[0] = 2; /* pri 2 for most things */ + memcpy (dbuf + 1, buf, len); + dbuf[len + 1] = 0; + + /* privmsg and notice get a lower priority */ + if (g_ascii_strncasecmp (dbuf + 1, "PRIVMSG", 7) == 0 || + g_ascii_strncasecmp (dbuf + 1, "NOTICE", 6) == 0) + { + dbuf[0] = 1; + } + else + { + /* WHO gets the lowest priority */ + if (g_ascii_strncasecmp (dbuf + 1, "WHO ", 4) == 0) + dbuf[0] = 0; + /* as do MODE queries (but not changes) */ + else if (g_ascii_strncasecmp (dbuf + 1, "MODE ", 5) == 0) + { + char *mode_str, *mode_str_end, *loc; + /* skip spaces before channel/nickname */ + for (mode_str = dbuf + 5; *mode_str == ' '; ++mode_str); + /* skip over channel/nickname */ + mode_str = strchr (mode_str, ' '); + if (mode_str) + { + /* skip spaces before mode string */ + for (; *mode_str == ' '; ++mode_str); + /* find spaces after end of mode string */ + mode_str_end = strchr (mode_str, ' '); + /* look for +/- within the mode string */ + loc = strchr (mode_str, '-'); + if (loc && (!mode_str_end || loc < mode_str_end)) + goto keep_priority; + loc = strchr (mode_str, '+'); + if (loc && (!mode_str_end || loc < mode_str_end)) + goto keep_priority; + } + dbuf[0] = 0; +keep_priority: + ; + } + } + + serv->outbound_queue = g_slist_append (serv->outbound_queue, dbuf); + serv->sendq_len += len; /* tcp_send_queue uses strlen */ + + if (tcp_send_queue (serv) && noqueue) + fe_timeout_add (500, tcp_send_queue, serv); + + return 1; +} + +void +tcp_sendf (server *serv, const char *fmt, ...) +{ + va_list args; + /* keep this buffer in BSS. Converting UTF-8 to ISO-8859-x might make the + string shorter, so allow alot more than 512 for now. */ + static char send_buf[1540]; /* good code hey (no it's not overflowable) */ + int len; + + va_start (args, fmt); + len = g_vsnprintf (send_buf, sizeof (send_buf) - 1, fmt, args); + va_end (args); + + send_buf[sizeof (send_buf) - 1] = '\0'; + if (len < 0 || len > (sizeof (send_buf) - 1)) + len = strlen (send_buf); + + tcp_send_len (serv, send_buf, len); +} + +static int +close_socket_cb (gpointer sok) +{ + closesocket (GPOINTER_TO_INT (sok)); + return 0; +} + +static void +close_socket (int sok) +{ + /* close the socket in 5 seconds so the QUIT message is not lost */ + fe_timeout_add_seconds (5, close_socket_cb, GINT_TO_POINTER (sok)); +} + +/* handle 1 line of text received from the server */ + +static void +server_inline (server *serv, char *line, gssize len) +{ + gsize len_utf8; + if (!strcmp (serv->encoding, "UTF-8")) + line = text_fixup_invalid_utf8 (line, len, &len_utf8); + else + line = text_convert_invalid (line, len, serv->read_converter, unicode_fallback_string, &len_utf8); + + fe_add_rawlog (serv, line, len_utf8, FALSE); + + /* let proto-irc.c handle it */ + serv->p_inline (serv, line, len_utf8); + + g_free (line); +} + +/* read data from socket */ + +static gboolean +server_read (GIOChannel *source, GIOCondition condition, server *serv) +{ + int sok = serv->sok; + int error, i, len; + char lbuf[2050]; + + while (1) + { +#ifdef USE_OPENSSL + if (!serv->ssl) +#endif + len = recv (sok, lbuf, sizeof (lbuf) - 2, 0); +#ifdef USE_OPENSSL + else + len = _SSL_recv (serv->ssl, lbuf, sizeof (lbuf) - 2); +#endif + if (len < 1) + { + error = 0; + if (len < 0) + { + if (would_block ()) + return TRUE; + error = sock_error (); + } + if (!serv->end_of_motd) + { + server_disconnect (serv->server_session, FALSE, error); + if (!servlist_cycle (serv)) + { + if (prefs.hex_net_auto_reconnect) + auto_reconnect (serv, FALSE, error); + } + } else + { + if (prefs.hex_net_auto_reconnect) + auto_reconnect (serv, FALSE, error); + else + server_disconnect (serv->server_session, FALSE, error); + } + return TRUE; + } + + i = 0; + + lbuf[len] = 0; + + while (i < len) + { + switch (lbuf[i]) + { + case '\r': + break; + + case '\n': + serv->linebuf[serv->pos] = 0; + server_inline (serv, serv->linebuf, serv->pos); + serv->pos = 0; + break; + + default: + serv->linebuf[serv->pos] = lbuf[i]; + if (serv->pos >= (sizeof (serv->linebuf) - 1)) + fprintf (stderr, + "*** HEXCHAT WARNING: Buffer overflow - non-compliant server!\n"); + else + serv->pos++; + } + i++; + } + } +} + +static void +server_connected (server * serv) +{ + prefs.wait_on_exit = TRUE; + serv->ping_recv = time (0); + serv->lag_sent = 0; + serv->connected = TRUE; + set_nonblocking (serv->sok); + serv->iotag = fe_input_add (serv->sok, FIA_READ|FIA_EX, server_read, serv); + if (!serv->no_login) + { + EMIT_SIGNAL (XP_TE_CONNECTED, serv->server_session, NULL, NULL, NULL, + NULL, 0); + if (serv->network) + { + serv->p_login (serv, + (!(((ircnet *)serv->network)->flags & FLAG_USE_GLOBAL) && + (((ircnet *)serv->network)->user)) ? + (((ircnet *)serv->network)->user) : + prefs.hex_irc_user_name, + (!(((ircnet *)serv->network)->flags & FLAG_USE_GLOBAL) && + (((ircnet *)serv->network)->real)) ? + (((ircnet *)serv->network)->real) : + prefs.hex_irc_real_name); + } else + { + serv->p_login (serv, prefs.hex_irc_user_name, prefs.hex_irc_real_name); + } + } else + { + EMIT_SIGNAL (XP_TE_SERVERCONNECTED, serv->server_session, NULL, NULL, + NULL, NULL, 0); + } + + server_set_name (serv, serv->servername); + fe_server_event (serv, FE_SE_CONNECT, 0); +} + +#ifdef WIN32 + +static gboolean +server_close_pipe (int *pipefd) /* see comments below */ +{ + close (pipefd[0]); /* close WRITE end first to cause an EOF on READ */ + close (pipefd[1]); /* in giowin32, and end that thread. */ + g_free (pipefd); + return FALSE; +} + +#endif + +static void +server_stopconnecting (server * serv) +{ + if (serv->iotag) + { + fe_input_remove (serv->iotag); + serv->iotag = 0; + } + + if (serv->joindelay_tag) + { + fe_timeout_remove (serv->joindelay_tag); + serv->joindelay_tag = 0; + } + +#ifndef WIN32 + /* kill the child process trying to connect */ + kill (serv->childpid, SIGKILL); + waitpid (serv->childpid, NULL, 0); + + close (serv->childwrite); + close (serv->childread); +#else + PostThreadMessage (serv->childpid, WM_QUIT, 0, 0); + + { + /* if we close the pipe now, giowin32 will crash. */ + int *pipefd = g_new (int, 2); + pipefd[0] = serv->childwrite; + pipefd[1] = serv->childread; + g_idle_add ((GSourceFunc)server_close_pipe, pipefd); + } +#endif + +#ifdef USE_OPENSSL + if (serv->ssl_do_connect_tag) + { + fe_timeout_remove (serv->ssl_do_connect_tag); + serv->ssl_do_connect_tag = 0; + } +#endif + + fe_progressbar_end (serv); + + serv->connecting = FALSE; + fe_server_event (serv, FE_SE_DISCONNECT, 0); +} + +#ifdef USE_OPENSSL +#define SSLTMOUT 90 /* seconds */ +static void +ssl_cb_info (SSL * s, int where, int ret) +{ +/* char buf[128];*/ + + + return; /* FIXME: make debug level adjustable in serverlist or settings */ + +/* g_snprintf (buf, sizeof (buf), "%s (%d)", SSL_state_string_long (s), where); + if (g_sess) + EMIT_SIGNAL (XP_TE_SSLMESSAGE, g_sess, buf, NULL, NULL, NULL, 0); + else + fprintf (stderr, "%s\n", buf);*/ +} + +static int +ssl_cb_verify (int ok, X509_STORE_CTX * ctx) +{ + char subject[256]; + char issuer[256]; + char buf[512]; + X509 *current_cert = X509_STORE_CTX_get_current_cert (ctx); + + if (!current_cert) + return TRUE; + + X509_NAME_oneline (X509_get_subject_name (current_cert), + subject, sizeof (subject)); + X509_NAME_oneline (X509_get_issuer_name (current_cert), + issuer, sizeof (issuer)); + + g_snprintf (buf, sizeof (buf), "* Subject: %s", subject); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, g_sess, buf, NULL, NULL, NULL, 0); + g_snprintf (buf, sizeof (buf), "* Issuer: %s", issuer); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, g_sess, buf, NULL, NULL, NULL, 0); + + return TRUE; +} + +static int +ssl_do_connect (server * serv) +{ + char buf[256]; // ERR_error_string() MUST have this size + + g_sess = serv->server_session; + + /* Set SNI hostname before connect */ + SSL_set_tlsext_host_name(serv->ssl, serv->hostname); + + if (SSL_connect (serv->ssl) <= 0) + { + char err_buf[128]; + int err; + + g_sess = NULL; + if ((err = ERR_get_error ()) > 0) + { + ERR_error_string (err, err_buf); + g_snprintf (buf, sizeof (buf), "(%d) %s", err, err_buf); + EMIT_SIGNAL (XP_TE_CONNFAIL, serv->server_session, buf, NULL, + NULL, NULL, 0); + + if (ERR_GET_REASON (err) == SSL_R_WRONG_VERSION_NUMBER) + PrintText (serv->server_session, _("Are you sure this is a SSL capable server and port?\n")); + + server_cleanup (serv); + + if (prefs.hex_net_auto_reconnectonfail) + auto_reconnect (serv, FALSE, -1); + + return (0); /* remove it (0) */ + } + } + g_sess = NULL; + + if (SSL_is_init_finished (serv->ssl)) + { + struct cert_info cert_info; + struct chiper_info *chiper_info; + int verify_error; + int i; + + if (!_SSL_get_cert_info (&cert_info, serv->ssl)) + { + g_snprintf (buf, sizeof (buf), "* Certification info:"); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, + NULL, 0); + g_snprintf (buf, sizeof (buf), " Subject:"); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, + NULL, 0); + for (i = 0; cert_info.subject_word[i]; i++) + { + g_snprintf (buf, sizeof (buf), " %s", cert_info.subject_word[i]); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, + NULL, 0); + } + g_snprintf (buf, sizeof (buf), " Issuer:"); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, + NULL, 0); + for (i = 0; cert_info.issuer_word[i]; i++) + { + g_snprintf (buf, sizeof (buf), " %s", cert_info.issuer_word[i]); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, + NULL, 0); + } + g_snprintf (buf, sizeof (buf), " Public key algorithm: %s (%d bits)", + cert_info.algorithm, cert_info.algorithm_bits); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, + NULL, 0); + /*if (cert_info.rsa_tmp_bits) + { + g_snprintf (buf, sizeof (buf), + " Public key algorithm uses ephemeral key with %d bits", + cert_info.rsa_tmp_bits); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, + NULL, 0); + }*/ + g_snprintf (buf, sizeof (buf), " Sign algorithm %s", + cert_info.sign_algorithm/*, cert_info.sign_algorithm_bits*/); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, + NULL, 0); + g_snprintf (buf, sizeof (buf), " Valid since %s to %s", + cert_info.notbefore, cert_info.notafter); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, + NULL, 0); + } else + { + g_snprintf (buf, sizeof (buf), "No Certificate"); + goto conn_fail; + } + + chiper_info = _SSL_get_cipher_info (serv->ssl); /* static buffer */ + g_snprintf (buf, sizeof (buf), "* Cipher info:"); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, NULL, + 0); + g_snprintf (buf, sizeof (buf), " Version: %s, cipher %s (%u bits)", + chiper_info->version, chiper_info->chiper, + chiper_info->chiper_bits); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, NULL, + 0); + + verify_error = SSL_get_verify_result (serv->ssl); + switch (verify_error) + { + case X509_V_OK: + { + X509 *cert = SSL_get_peer_certificate (serv->ssl); + int hostname_err; + if ((hostname_err = _SSL_check_hostname(cert, serv->hostname)) != 0) + { + g_snprintf (buf, sizeof (buf), "* Verify E: Failed to validate hostname? (%d)%s", + hostname_err, serv->accept_invalid_cert ? " -- Ignored" : ""); + if (serv->accept_invalid_cert) + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, NULL, 0); + else + goto conn_fail; + } + break; + } + /* g_snprintf (buf, sizeof (buf), "* Verify OK (?)"); */ + /* EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, NULL, 0); */ + case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY: + case X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE: + case X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT: + case X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN: + case X509_V_ERR_CERT_HAS_EXPIRED: + if (serv->accept_invalid_cert) + { + g_snprintf (buf, sizeof (buf), "* Verify E: %s.? (%d) -- Ignored", + X509_verify_cert_error_string (verify_error), + verify_error); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, + NULL, 0); + break; + } + default: + g_snprintf (buf, sizeof (buf), "%s.? (%d)", + X509_verify_cert_error_string (verify_error), + verify_error); +conn_fail: + EMIT_SIGNAL (XP_TE_CONNFAIL, serv->server_session, buf, NULL, NULL, + NULL, 0); + + server_cleanup (serv); + + return (0); + } + + server_stopconnecting (serv); + + /* activate gtk poll */ + server_connected (serv); + + return (0); /* remove it (0) */ + } else + { + SSL_SESSION *session = SSL_get_session (serv->ssl); + if (session && SSL_SESSION_get_time (session) + SSLTMOUT < time (NULL)) + { + g_snprintf (buf, sizeof (buf), "SSL handshake timed out"); + EMIT_SIGNAL (XP_TE_CONNFAIL, serv->server_session, buf, NULL, + NULL, NULL, 0); + server_cleanup (serv); /* ->connecting = FALSE */ + + if (prefs.hex_net_auto_reconnectonfail) + auto_reconnect (serv, FALSE, -1); + + return (0); /* remove it (0) */ + } + + return (1); /* call it more (1) */ + } +} +#endif + +static int +timeout_auto_reconnect (server *serv) +{ + if (is_server (serv)) /* make sure it hasnt been closed during the delay */ + { + serv->recondelay_tag = 0; + if (!serv->connected && !serv->connecting && serv->server_session) + { + server_connect (serv, serv->hostname, serv->port, FALSE); + } + } + return 0; /* returning 0 should remove the timeout handler */ +} + +static void +auto_reconnect (server *serv, int send_quit, int err) +{ + session *s; + int del; + + if (serv->server_session == NULL) + return; + + if (prefs.hex_irc_reconnect_rejoin) + { + GSList *list; + list = sess_list; + while (list) /* make sure auto rejoin can work */ + { + s = list->data; + if (s->type == SESS_CHANNEL && s->channel[0]) + { + strcpy (s->waitchannel, s->channel); + strcpy (s->willjoinchannel, s->channel); + } + list = list->next; + } + } + + if (serv->connected) + server_disconnect (serv->server_session, send_quit, err); + + del = prefs.hex_net_reconnect_delay * 1000; + if (del < 1000) + del = 500; /* so it doesn't block the gui */ + +#ifndef WIN32 + if (err == -1 || err == 0 || err == ECONNRESET || err == ETIMEDOUT) +#else + if (err == -1 || err == 0 || err == WSAECONNRESET || err == WSAETIMEDOUT) +#endif + serv->reconnect_away = serv->is_away; + + /* is this server in a reconnect delay? remove it! */ + if (serv->recondelay_tag) + { + fe_timeout_remove (serv->recondelay_tag); + serv->recondelay_tag = 0; + } + + serv->recondelay_tag = fe_timeout_add (del, timeout_auto_reconnect, serv); + fe_server_event (serv, FE_SE_RECONDELAY, del); +} + +static void +server_flush_queue (server *serv) +{ + list_free (&serv->outbound_queue); + serv->sendq_len = 0; + fe_set_throttle (serv); +} + +/* connect() successed */ + +static void +server_connect_success (server *serv) +{ +#ifdef USE_OPENSSL +#define SSLDOCONNTMOUT 300 + if (serv->use_ssl) + { + char *err; + + /* it'll be a memory leak, if connection isn't terminated by + server_cleanup() */ + if ((err = _SSL_set_verify (serv->ctx, ssl_cb_verify))) + { + EMIT_SIGNAL (XP_TE_CONNFAIL, serv->server_session, err, NULL, + NULL, NULL, 0); + server_cleanup (serv); /* ->connecting = FALSE */ + return; + } + serv->ssl = _SSL_socket (serv->ctx, serv->sok); + /* FIXME: it'll be needed by new servers */ + /* send(serv->sok, "STLS\r\n", 6, 0); sleep(1); */ + set_nonblocking (serv->sok); + serv->ssl_do_connect_tag = fe_timeout_add (SSLDOCONNTMOUT, + ssl_do_connect, serv); + return; + } + + serv->ssl = NULL; +#endif + server_stopconnecting (serv); /* ->connecting = FALSE */ + /* activate glib poll */ + server_connected (serv); +} + +/* receive info from the child-process about connection progress */ + +static gboolean +server_read_child (GIOChannel *source, GIOCondition condition, server *serv) +{ + session *sess = serv->server_session; + char tbuf[128]; + char outbuf[512]; + char host[100]; + char ip[100]; + + waitline2 (source, tbuf, sizeof tbuf); + + switch (tbuf[0]) + { + case '0': /* print some text */ + waitline2 (source, tbuf, sizeof tbuf); + PrintText (serv->server_session, tbuf); + break; + case '1': /* unknown host */ + server_stopconnecting (serv); + closesocket (serv->sok4); + if (serv->proxy_sok4 != -1) + closesocket (serv->proxy_sok4); + if (serv->sok6 != -1) + closesocket (serv->sok6); + if (serv->proxy_sok6 != -1) + closesocket (serv->proxy_sok6); + EMIT_SIGNAL (XP_TE_UKNHOST, sess, NULL, NULL, NULL, NULL, 0); + if (!servlist_cycle (serv)) + if (prefs.hex_net_auto_reconnectonfail) + auto_reconnect (serv, FALSE, -1); + break; + case '2': /* connection failed */ + waitline2 (source, tbuf, sizeof tbuf); + server_stopconnecting (serv); + closesocket (serv->sok4); + if (serv->proxy_sok4 != -1) + closesocket (serv->proxy_sok4); + if (serv->sok6 != -1) + closesocket (serv->sok6); + if (serv->proxy_sok6 != -1) + closesocket (serv->proxy_sok6); + EMIT_SIGNAL (XP_TE_CONNFAIL, sess, errorstring (atoi (tbuf)), NULL, + NULL, NULL, 0); + if (!servlist_cycle (serv)) + if (prefs.hex_net_auto_reconnectonfail) + auto_reconnect (serv, FALSE, -1); + break; + case '3': /* gethostbyname finished */ + waitline2 (source, host, sizeof host); + waitline2 (source, ip, sizeof ip); + waitline2 (source, outbuf, sizeof outbuf); + EMIT_SIGNAL (XP_TE_CONNECT, sess, host, ip, outbuf, NULL, 0); + break; + case '4': /* success */ + waitline2 (source, tbuf, sizeof (tbuf)); + serv->sok = atoi (tbuf); + /* close the one we didn't end up using */ + if (serv->sok == serv->sok4) + closesocket (serv->sok6); + else + closesocket (serv->sok4); + if (serv->proxy_sok != -1) + { + if (serv->proxy_sok == serv->proxy_sok4) + closesocket (serv->proxy_sok6); + else + closesocket (serv->proxy_sok4); + } + + { + struct sockaddr_storage addr; + int addr_len = sizeof (addr); + guint16 port; + ircnet *net = serv->network; + + if (!getsockname (serv->sok, (struct sockaddr *)&addr, &addr_len)) + { + if (addr.ss_family == AF_INET) + port = ntohs(((struct sockaddr_in *)&addr)->sin_port); + else + port = ntohs(((struct sockaddr_in6 *)&addr)->sin6_port); + + g_snprintf (outbuf, sizeof (outbuf), "IDENTD %"G_GUINT16_FORMAT" ", port); + if (net && net->user && !(net->flags & FLAG_USE_GLOBAL)) + g_strlcat (outbuf, net->user, sizeof (outbuf)); + else + g_strlcat (outbuf, prefs.hex_irc_user_name, sizeof (outbuf)); + + handle_command (serv->server_session, outbuf, FALSE); + } + } + + server_connect_success (serv); + break; + case '5': /* prefs ip discovered */ + waitline2 (source, tbuf, sizeof tbuf); + prefs.local_ip = inet_addr (tbuf); + break; + case '7': /* gethostbyname (prefs.hex_net_bind_host) failed */ + sprintf (outbuf, + _("Cannot resolve hostname %s\nCheck your IP Settings!\n"), + prefs.hex_net_bind_host); + PrintText (sess, outbuf); + break; + case '8': + PrintText (sess, _("Proxy traversal failed.\n")); + server_disconnect (sess, FALSE, -1); + break; + case '9': + waitline2 (source, tbuf, sizeof tbuf); + EMIT_SIGNAL (XP_TE_SERVERLOOKUP, sess, tbuf, NULL, NULL, NULL, 0); + break; + } + + return TRUE; +} + +/* kill all sockets & iotags of a server. Stop a connection attempt, or + disconnect if already connected. */ + +static int +server_cleanup (server * serv) +{ + fe_set_lag (serv, 0); + + if (serv->iotag) + { + fe_input_remove (serv->iotag); + serv->iotag = 0; + } + + if (serv->joindelay_tag) + { + fe_timeout_remove (serv->joindelay_tag); + serv->joindelay_tag = 0; + } + +#ifdef USE_OPENSSL + if (serv->ssl) + { + SSL_shutdown (serv->ssl); + SSL_free (serv->ssl); + serv->ssl = NULL; + } +#endif + + if (serv->connecting) + { + server_stopconnecting (serv); + closesocket (serv->sok4); + if (serv->proxy_sok4 != -1) + closesocket (serv->proxy_sok4); + if (serv->sok6 != -1) + closesocket (serv->sok6); + if (serv->proxy_sok6 != -1) + closesocket (serv->proxy_sok6); + return 1; + } + + if (serv->connected) + { + close_socket (serv->sok); + if (serv->proxy_sok) + close_socket (serv->proxy_sok); + serv->connected = FALSE; + serv->end_of_motd = FALSE; + return 2; + } + + /* is this server in a reconnect delay? remove it! */ + if (serv->recondelay_tag) + { + fe_timeout_remove (serv->recondelay_tag); + serv->recondelay_tag = 0; + return 3; + } + + return 0; +} + +static void +server_disconnect (session * sess, int sendquit, int err) +{ + server *serv = sess->server; + GSList *list; + char tbuf[64]; + gboolean shutup = FALSE; + + /* send our QUIT reason */ + if (sendquit && serv->connected) + { + server_sendquit (sess); + } + + fe_server_event (serv, FE_SE_DISCONNECT, 0); + + /* close all sockets & io tags */ + switch (server_cleanup (serv)) + { + case 0: /* it wasn't even connected! */ + notc_msg (sess); + return; + case 1: /* it was in the process of connecting */ + sprintf (tbuf, "%d", sess->server->childpid); + EMIT_SIGNAL (XP_TE_STOPCONNECT, sess, tbuf, NULL, NULL, NULL, 0); + return; + case 3: + shutup = TRUE; /* won't print "disconnected" in channels */ + } + + server_flush_queue (serv); + + list = sess_list; + while (list) + { + sess = (struct session *) list->data; + if (sess->server == serv) + { + if (!shutup || sess->type == SESS_SERVER) + /* print "Disconnected" to each window using this server */ + EMIT_SIGNAL (XP_TE_DISCON, sess, errorstring (err), NULL, NULL, NULL, 0); + + if (!sess->channel[0] || sess->type == SESS_CHANNEL) + clear_channel (sess); + } + list = list->next; + } + + serv->pos = 0; + serv->motd_skipped = FALSE; + serv->no_login = FALSE; + serv->servername[0] = 0; + serv->lag_sent = 0; + + notify_cleanup (); +} + +/* send a "print text" command to the parent process - MUST END IN \n! */ + +static void +proxy_error (int fd, char *msg) +{ + write (fd, "0\n", 2); + write (fd, msg, strlen (msg)); +} + +struct sock_connect +{ + char version; + char type; + guint16 port; + guint32 address; + char username[10]; +}; + +/* traverse_socks() returns: + * 0 success * + * 1 socks traversal failed */ + +static int +traverse_socks (int print_fd, int sok, char *serverAddr, int port) +{ + struct sock_connect sc; + unsigned char buf[256]; + + sc.version = 4; + sc.type = 1; + sc.port = htons (port); + sc.address = inet_addr (serverAddr); + g_strlcpy (sc.username, prefs.hex_irc_user_name, sizeof (sc.username)); + + send (sok, (char *) &sc, 8 + strlen (sc.username) + 1, 0); + buf[1] = 0; + recv (sok, buf, 10, 0); + if (buf[1] == 90) + return 0; + + g_snprintf (buf, sizeof (buf), "SOCKS\tServer reported error %d,%d.\n", buf[0], buf[1]); + proxy_error (print_fd, buf); + return 1; +} + +struct sock5_connect1 +{ + char version; + char nmethods; + char method; +}; + +static int +traverse_socks5 (int print_fd, int sok, char *serverAddr, int port) +{ + struct sock5_connect1 sc1; + unsigned char *sc2; + unsigned int packetlen, addrlen; + unsigned char buf[260]; + int auth = prefs.hex_net_proxy_auth && prefs.hex_net_proxy_user[0] && prefs.hex_net_proxy_pass[0]; + + sc1.version = 5; + sc1.nmethods = 1; + if (auth) + sc1.method = 2; /* Username/Password Authentication (UPA) */ + else + sc1.method = 0; /* NO Authentication */ + send (sok, (char *) &sc1, 3, 0); + if (recv (sok, buf, 2, 0) != 2) + goto read_error; + + if (buf[0] != 5) + { + proxy_error (print_fd, "SOCKS\tServer is not socks version 5.\n"); + return 1; + } + + /* did the server say no auth required? */ + if (buf[1] == 0) + auth = 0; + + if (auth) + { + int len_u=0, len_p=0; + unsigned char *u_p_buf; + + /* authentication sub-negotiation (RFC1929) */ + if (buf[1] != 2) /* UPA not supported by server */ + { + proxy_error (print_fd, "SOCKS\tServer doesn't support UPA authentication.\n"); + return 1; + } + + /* form the UPA request */ + len_u = strlen (prefs.hex_net_proxy_user); + len_p = strlen (prefs.hex_net_proxy_pass); + + packetlen = 2 + len_u + 1 + len_p; + u_p_buf = g_malloc0 (packetlen); + + u_p_buf[0] = 1; + u_p_buf[1] = len_u; + memcpy (u_p_buf + 2, prefs.hex_net_proxy_user, len_u); + u_p_buf[2 + len_u] = len_p; + memcpy (u_p_buf + 3 + len_u, prefs.hex_net_proxy_pass, len_p); + + send (sok, u_p_buf, packetlen, 0); + g_free(u_p_buf); + + if ( recv (sok, buf, 2, 0) != 2 ) + goto read_error; + if ( buf[1] != 0 ) + { + proxy_error (print_fd, "SOCKS\tAuthentication failed. " + "Is username and password correct?\n"); + return 1; /* UPA failed! */ + } + } + else + { + if (buf[1] != 0) + { + proxy_error (print_fd, "SOCKS\tAuthentication required but disabled in settings.\n"); + return 1; + } + } + + addrlen = strlen (serverAddr); + packetlen = 4 + 1 + addrlen + 2; + sc2 = g_malloc (packetlen); + sc2[0] = 5; /* version */ + sc2[1] = 1; /* command */ + sc2[2] = 0; /* reserved */ + sc2[3] = 3; /* address type */ + sc2[4] = (unsigned char) addrlen; /* hostname length */ + memcpy (sc2 + 5, serverAddr, addrlen); + *((unsigned short *) (sc2 + 5 + addrlen)) = htons (port); + send (sok, sc2, packetlen, 0); + g_free (sc2); + + /* consume all of the reply */ + if (recv (sok, buf, 4, 0) != 4) + goto read_error; + if (buf[0] != 5 || buf[1] != 0) + { + if (buf[1] == 2) + g_snprintf (buf, sizeof (buf), "SOCKS\tProxy refused to connect to host (not allowed).\n"); + else + g_snprintf (buf, sizeof (buf), "SOCKS\tProxy failed to connect to host (error %d).\n", buf[1]); + proxy_error (print_fd, buf); + return 1; + } + if (buf[3] == 1) /* IPV4 32bit address */ + { + if (recv (sok, buf, 6, 0) != 6) + goto read_error; + } else if (buf[3] == 4) /* IPV6 128bit address */ + { + if (recv (sok, buf, 18, 0) != 18) + goto read_error; + } else if (buf[3] == 3) /* string, 1st byte is size */ + { + if (recv (sok, buf, 1, 0) != 1) /* read the string size */ + goto read_error; + packetlen = buf[0] + 2; /* can't exceed 260 */ + if (recv (sok, buf, packetlen, 0) != packetlen) + goto read_error; + } + + return 0; /* success */ + +read_error: + proxy_error (print_fd, "SOCKS\tRead error from server.\n"); + return 1; +} + +static int +traverse_wingate (int print_fd, int sok, char *serverAddr, int port) +{ + char buf[128]; + + g_snprintf (buf, sizeof (buf), "%s %d\r\n", serverAddr, port); + send (sok, buf, strlen (buf), 0); + + return 0; +} + +/* stuff for HTTP auth is here */ + +static void +three_to_four (char *from, char *to) +{ + static const char tab64[64]= + { + 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P', + 'Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f', + 'g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v', + 'w','x','y','z','0','1','2','3','4','5','6','7','8','9','+','/' + }; + + to[0] = tab64 [ (from[0] >> 2) & 63 ]; + to[1] = tab64 [ ((from[0] << 4) | (from[1] >> 4)) & 63 ]; + to[2] = tab64 [ ((from[1] << 2) | (from[2] >> 6)) & 63 ]; + to[3] = tab64 [ from[2] & 63 ]; +}; + +void +base64_encode (char *to, char *from, unsigned int len) +{ + while (len >= 3) + { + three_to_four (from, to); + len -= 3; + from += 3; + to += 4; + } + if (len) + { + char three[3] = {0,0,0}; + unsigned int i; + for (i = 0; i < len; i++) + { + three[i] = *from++; + } + three_to_four (three, to); + if (len == 1) + { + to[2] = to[3] = '='; + } + else if (len == 2) + { + to[3] = '='; + } + to += 4; + }; + to[0] = 0; +} + +static int +http_read_line (int print_fd, int sok, char *buf, int len) +{ + len = waitline (sok, buf, len, TRUE); + if (len >= 1) + { + /* print the message out (send it to the parent process) */ + write (print_fd, "0\n", 2); + + if (buf[len-1] == '\r') + { + buf[len-1] = '\n'; + write (print_fd, buf, len); + } else + { + write (print_fd, buf, len); + write (print_fd, "\n", 1); + } + } + + return len; +} + +static int +traverse_http (int print_fd, int sok, char *serverAddr, int port) +{ + char buf[512]; + char auth_data[256]; + char auth_data2[252]; + int n, n2; + + n = g_snprintf (buf, sizeof (buf), "CONNECT %s:%d HTTP/1.0\r\n", + serverAddr, port); + if (prefs.hex_net_proxy_auth) + { + n2 = g_snprintf (auth_data2, sizeof (auth_data2), "%s:%s", + prefs.hex_net_proxy_user, prefs.hex_net_proxy_pass); + base64_encode (auth_data, auth_data2, n2); + n += g_snprintf (buf+n, sizeof (buf)-n, "Proxy-Authorization: Basic %s\r\n", auth_data); + } + n += g_snprintf (buf+n, sizeof (buf)-n, "\r\n"); + send (sok, buf, n, 0); + + n = http_read_line (print_fd, sok, buf, sizeof (buf)); + /* "HTTP/1.0 200 OK" */ + if (n < 12) + return 1; + if (memcmp (buf, "HTTP/", 5) || memcmp (buf + 9, "200", 3)) + return 1; + while (1) + { + /* read until blank line */ + n = http_read_line (print_fd, sok, buf, sizeof (buf)); + if (n < 1 || (n == 1 && buf[0] == '\n')) + break; + } + return 0; +} + +static int +traverse_proxy (int proxy_type, int print_fd, int sok, char *ip, int port, netstore *ns_proxy, int csok4, int csok6, int *csok, char bound) +{ + switch (proxy_type) + { + case 1: + return traverse_wingate (print_fd, sok, ip, port); + case 2: + return traverse_socks (print_fd, sok, ip, port); + case 3: + return traverse_socks5 (print_fd, sok, ip, port); + case 4: + return traverse_http (print_fd, sok, ip, port); + } + + return 1; +} + +/* this is the child process making the connection attempt */ + +static int +server_child (server * serv) +{ + netstore *ns_server; + netstore *ns_proxy = NULL; + netstore *ns_local; + int port = serv->port; + int error; + int sok, psok; + char *hostname = serv->hostname; + char *real_hostname = NULL; + char *ip; + char *proxy_ip = NULL; + char *local_ip; + int connect_port; + char buf[512]; + char bound = 0; + int proxy_type = 0; + char *proxy_host = NULL; + int proxy_port; + + ns_server = net_store_new (); + + /* is a hostname set? - bind to it */ + if (prefs.hex_net_bind_host[0]) + { + ns_local = net_store_new (); + local_ip = net_resolve (ns_local, prefs.hex_net_bind_host, 0, &real_hostname); + if (local_ip != NULL) + { + g_snprintf (buf, sizeof (buf), "5\n%s\n", local_ip); + write (serv->childwrite, buf, strlen (buf)); + net_bind (ns_local, serv->sok4, serv->sok6); + bound = 1; + } else + { + write (serv->childwrite, "7\n", 2); + } + net_store_destroy (ns_local); + } + + if (!serv->dont_use_proxy) /* blocked in serverlist? */ + { + if (prefs.hex_net_proxy_type == 5) + { + char **proxy_list; + char *url, *proxy; + GProxyResolver *resolver; + GError *error = NULL; + + resolver = g_proxy_resolver_get_default (); + url = g_strdup_printf ("irc://%s:%d", hostname, port); + proxy_list = g_proxy_resolver_lookup (resolver, url, NULL, &error); + + if (proxy_list) { + /* can use only one */ + proxy = proxy_list[0]; + if (!strncmp (proxy, "direct", 6)) + proxy_type = 0; + else if (!strncmp (proxy, "http", 4)) + proxy_type = 4; + else if (!strncmp (proxy, "socks5", 6)) + proxy_type = 3; + else if (!strncmp (proxy, "socks", 5)) + proxy_type = 2; + } else { + write_error ("Failed to lookup proxy", &error); + } + + if (proxy_type) { + char *c; + c = strchr (proxy, ':') + 3; + proxy_host = g_strdup (c); + c = strchr (proxy_host, ':'); + *c = '\0'; + proxy_port = atoi (c + 1); + } + + g_strfreev (proxy_list); + g_free (url); + } + + if (prefs.hex_net_proxy_host[0] && + prefs.hex_net_proxy_type > 0 && + prefs.hex_net_proxy_use != 2) /* proxy is NOT dcc-only */ + { + proxy_type = prefs.hex_net_proxy_type; + proxy_host = g_strdup (prefs.hex_net_proxy_host); + proxy_port = prefs.hex_net_proxy_port; + } + } + + serv->proxy_type = proxy_type; + + /* first resolve where we want to connect to */ + if (proxy_type > 0) + { + g_snprintf (buf, sizeof (buf), "9\n%s\n", proxy_host); + write (serv->childwrite, buf, strlen (buf)); + ip = net_resolve (ns_server, proxy_host, proxy_port, &real_hostname); + g_free (proxy_host); + if (!ip) + { + write (serv->childwrite, "1\n", 2); + goto xit; + } + connect_port = proxy_port; + + /* if using socks4 or MS Proxy, attempt to resolve ip for irc server */ + if ((proxy_type == 2) || (proxy_type == 5)) + { + ns_proxy = net_store_new (); + proxy_ip = net_resolve (ns_proxy, hostname, port, &real_hostname); + if (!proxy_ip) + { + write (serv->childwrite, "1\n", 2); + goto xit; + } + } else /* otherwise we can just use the hostname */ + proxy_ip = g_strdup (hostname); + } else + { + ip = net_resolve (ns_server, hostname, port, &real_hostname); + if (!ip) + { + write (serv->childwrite, "1\n", 2); + goto xit; + } + connect_port = port; + } + + g_snprintf (buf, sizeof (buf), "3\n%s\n%s\n%d\n", + real_hostname, ip, connect_port); + write (serv->childwrite, buf, strlen (buf)); + + if (!serv->dont_use_proxy && (proxy_type == 5)) + error = net_connect (ns_server, serv->proxy_sok4, serv->proxy_sok6, &psok); + else + { + error = net_connect (ns_server, serv->sok4, serv->sok6, &sok); + psok = sok; + } + + if (error != 0) + { + g_snprintf (buf, sizeof (buf), "2\n%d\n", sock_error ()); + write (serv->childwrite, buf, strlen (buf)); + } else + { + /* connect succeeded */ + if (proxy_ip) + { + switch (traverse_proxy (proxy_type, serv->childwrite, psok, proxy_ip, port, ns_proxy, serv->sok4, serv->sok6, &sok, bound)) + { + case 0: /* success */ + g_snprintf (buf, sizeof (buf), "4\n%d\n", sok); /* success */ + write (serv->childwrite, buf, strlen (buf)); + break; + case 1: /* socks traversal failed */ + write (serv->childwrite, "8\n", 2); + break; + } + } else + { + g_snprintf (buf, sizeof (buf), "4\n%d\n", sok); /* success */ + write (serv->childwrite, buf, strlen (buf)); + } + } + +xit: + + /* this is probably not needed */ + net_store_destroy (ns_server); + if (ns_proxy) + net_store_destroy (ns_proxy); + + /* no need to free ip/real_hostname, this process is exiting */ +#ifdef WIN32 + /* under win32 we use a thread -> shared memory, must free! */ + g_free (proxy_ip); + g_free (ip); + g_free (real_hostname); +#endif + + return 0; + /* cppcheck-suppress memleak */ +} + +static void +server_connect (server *serv, char *hostname, int port, int no_login) +{ + int pid, read_des[2]; + session *sess = serv->server_session; + +#ifdef USE_OPENSSL + if (!serv->ctx && serv->use_ssl) + { + if (!(serv->ctx = _SSL_context_init (ssl_cb_info))) + { + fprintf (stderr, "_SSL_context_init failed\n"); + exit (1); + } + } +#endif + + if (!hostname[0]) + return; + + if (port < 1 || port > 65535) + { + /* use default port for this server type */ + port = 6667; +#ifdef USE_OPENSSL + if (serv->use_ssl) + port = 6697; +#endif + g_debug ("Attempted to connect to invalid port, assuming default port %d", port); + } + + if (serv->connected || serv->connecting || serv->recondelay_tag) + server_disconnect (sess, TRUE, -1); + + fe_progressbar_start (sess); + + EMIT_SIGNAL (XP_TE_SERVERLOOKUP, sess, hostname, NULL, NULL, NULL, 0); + + safe_strcpy (serv->servername, hostname, sizeof (serv->servername)); + /* overlap illegal in strncpy */ + if (hostname != serv->hostname) + safe_strcpy (serv->hostname, hostname, sizeof (serv->hostname)); + +#ifdef USE_OPENSSL + if (serv->use_ssl) + { + char *cert_file; + serv->have_cert = FALSE; + + /* first try network specific cert/key */ + cert_file = g_strdup_printf ("%s" G_DIR_SEPARATOR_S "certs" G_DIR_SEPARATOR_S "%s.pem", + get_xdir (), server_get_network (serv, TRUE)); + if (SSL_CTX_use_certificate_file (serv->ctx, cert_file, SSL_FILETYPE_PEM) == 1) + { + if (SSL_CTX_use_PrivateKey_file (serv->ctx, cert_file, SSL_FILETYPE_PEM) == 1) + serv->have_cert = TRUE; + } + else + { + /* if that doesn't exist, try <config>/certs/client.pem */ + cert_file = g_build_filename (get_xdir (), "certs", "client.pem", NULL); + if (SSL_CTX_use_certificate_file (serv->ctx, cert_file, SSL_FILETYPE_PEM) == 1) + { + if (SSL_CTX_use_PrivateKey_file (serv->ctx, cert_file, SSL_FILETYPE_PEM) == 1) + serv->have_cert = TRUE; + } + } + g_free (cert_file); + } +#endif + + server_set_defaults (serv); + serv->connecting = TRUE; + serv->port = port; + serv->no_login = no_login; + + fe_server_event (serv, FE_SE_CONNECTING, 0); + fe_set_away (serv); + server_flush_queue (serv); + +#ifdef WIN32 + if (_pipe (read_des, 4096, _O_BINARY) < 0) +#else + if (pipe (read_des) < 0) +#endif + return; +#ifdef __EMX__ /* os/2 */ + setmode (read_des[0], O_BINARY); + setmode (read_des[1], O_BINARY); +#endif + serv->childread = read_des[0]; + serv->childwrite = read_des[1]; + + /* create both sockets now, drop one later */ + net_sockets (&serv->sok4, &serv->sok6); + serv->proxy_sok4 = -1; + serv->proxy_sok6 = -1; + +#ifdef WIN32 + CloseHandle (CreateThread (NULL, 0, + (LPTHREAD_START_ROUTINE)server_child, + serv, 0, (DWORD *)&pid)); +#else +#ifdef LOOKUPD + /* CL: net_resolve calls rand() when LOOKUPD is set, so prepare a different + * seed for each child. This method gives a bigger variation in seed values + * than calling srand(time(0)) in the child itself. + */ + rand(); +#endif + switch (pid = fork ()) + { + case -1: + return; + + case 0: + /* this is the child */ + setuid (getuid ()); + server_child (serv); + _exit (0); + } +#endif + serv->childpid = pid; +#ifdef WIN32 + serv->iotag = fe_input_add (serv->childread, FIA_READ|FIA_FD, server_read_child, +#else + serv->iotag = fe_input_add (serv->childread, FIA_READ, server_read_child, +#endif + serv); +} + +void +server_fill_her_up (server *serv) +{ + serv->connect = server_connect; + serv->disconnect = server_disconnect; + serv->cleanup = server_cleanup; + serv->flush_queue = server_flush_queue; + serv->auto_reconnect = auto_reconnect; + + proto_fill_her_up (serv); +} + +void +server_set_encoding (server *serv, char *new_encoding) +{ + char *space; + + g_free (serv->encoding); + + if (new_encoding) + { + serv->encoding = g_strdup (new_encoding); + /* the serverlist GUI might have added a space + and short description - remove it. */ + space = strchr (serv->encoding, ' '); + if (space) + space[0] = 0; + + /* Default legacy "IRC" encoding to utf-8. */ + if (g_ascii_strcasecmp (serv->encoding, "IRC") == 0) + { + g_free (serv->encoding); + serv->encoding = g_strdup ("UTF-8"); + } + + else if (!servlist_check_encoding (serv->encoding)) + { + g_free (serv->encoding); + serv->encoding = g_strdup ("UTF-8"); + } + } + else + { + serv->encoding = g_strdup ("UTF-8"); + } + + if (serv->read_converter != NULL) + { + g_iconv_close (serv->read_converter); + } + serv->read_converter = g_iconv_open ("UTF-8", serv->encoding); + + if (serv->write_converter != NULL) + { + g_iconv_close (serv->write_converter); + } + serv->write_converter = g_iconv_open (serv->encoding, "UTF-8"); +} + +server * +server_new (void) +{ + static int id = 0; + server *serv; + + serv = g_new0 (struct server, 1); + + /* use server.c and proto-irc.c functions */ + server_fill_her_up (serv); + + serv->id = id++; + serv->sok = -1; + strcpy (serv->nick, prefs.hex_irc_nick1); + server_set_defaults (serv); + + serv_list = g_slist_prepend (serv_list, serv); + + fe_new_server (serv); + + return serv; +} + +int +is_server (server *serv) +{ + return g_slist_find (serv_list, serv) ? 1 : 0; +} + +void +server_set_defaults (server *serv) +{ + g_free (serv->chantypes); + g_free (serv->chanmodes); + g_free (serv->nick_prefixes); + g_free (serv->nick_modes); +#ifdef USE_OPENSSL + g_clear_pointer (&serv->scram_session, scram_session_free); +#endif + serv->chantypes = g_strdup ("#&!+"); + serv->chanmodes = g_strdup ("beI,k,l"); + serv->nick_prefixes = g_strdup ("@%+"); + serv->nick_modes = g_strdup ("ohv"); + serv->modes_per_line = 3; /* https://datatracker.ietf.org/doc/html/rfc1459#section-4.2.3.1 */ + serv->sasl_mech = MECH_PLAIN; + + if (!serv->encoding) + server_set_encoding (serv, "UTF-8"); + + serv->nickcount = 1; + serv->end_of_motd = FALSE; + serv->sent_capend = FALSE; + serv->use_listargs = FALSE; + serv->is_away = FALSE; + serv->supports_watch = FALSE; + serv->supports_monitor = FALSE; + serv->bad_prefix = FALSE; + serv->use_who = TRUE; + serv->have_namesx = FALSE; + serv->have_awaynotify = FALSE; + serv->have_uhnames = FALSE; + serv->have_whox = FALSE; + serv->have_idmsg = FALSE; + serv->have_accnotify = FALSE; + serv->have_extjoin = FALSE; + serv->have_account_tag = FALSE; + serv->have_server_time = FALSE; + serv->have_sasl = FALSE; + serv->have_except = FALSE; + serv->have_invite = FALSE; +} + +char * +server_get_network (server *serv, gboolean fallback) +{ + /* check the network list */ + if (serv->network) + return ((ircnet *)serv->network)->name; + + /* check the network name given in 005 NETWORK=... */ + if (serv->server_session && *serv->server_session->channel) + return serv->server_session->channel; + + if (fallback) + return serv->servername; + + return NULL; +} + +void +server_set_name (server *serv, char *name) +{ + GSList *list = sess_list; + session *sess; + + if (name[0] == 0) + name = serv->hostname; + + /* strncpy parameters must NOT overlap */ + if (name != serv->servername) + { + safe_strcpy (serv->servername, name, sizeof (serv->servername)); + } + + while (list) + { + sess = (session *) list->data; + if (sess->server == serv) + fe_set_title (sess); + list = list->next; + } + + if (serv->server_session->type == SESS_SERVER) + { + if (serv->network) + { + safe_strcpy (serv->server_session->channel, ((ircnet *)serv->network)->name, CHANLEN); + } else + { + safe_strcpy (serv->server_session->channel, name, CHANLEN); + } + fe_set_channel (serv->server_session); + } +} + +struct away_msg * +server_away_find_message (server *serv, char *nick) +{ + struct away_msg *away; + GSList *list = away_list; + while (list) + { + away = (struct away_msg *) list->data; + if (away->server == serv && !serv->p_cmp (nick, away->nick)) + return away; + list = list->next; + } + return NULL; +} + +static void +server_away_free_messages (server *serv) +{ + GSList *list, *next; + struct away_msg *away; + + list = away_list; + while (list) + { + away = list->data; + next = list->next; + if (away->server == serv) + { + away_list = g_slist_remove (away_list, away); + g_free (away->message); + g_free (away); + next = away_list; + } + list = next; + } +} + +void +server_away_save_message (server *serv, char *nick, char *msg) +{ + struct away_msg *away = server_away_find_message (serv, nick); + + if (away) /* Change message for known user */ + { + g_free (away->message); + away->message = g_strdup (msg); + } + else + { + /* Create brand new entry */ + away = g_new(struct away_msg, 1); + away->server = serv; + safe_strcpy (away->nick, nick, sizeof (away->nick)); + away->message = g_strdup (msg); + away_list = g_slist_prepend (away_list, away); + } +} + +void +server_free (server *serv) +{ + serv->cleanup (serv); + + serv_list = g_slist_remove (serv_list, serv); + + dcc_notify_kill (serv); + serv->flush_queue (serv); + server_away_free_messages (serv); + + g_free (serv->nick_modes); + g_free (serv->nick_prefixes); + g_free (serv->chanmodes); + g_free (serv->chantypes); + g_free (serv->bad_nick_prefixes); + g_free (serv->last_away_reason); + g_free (serv->encoding); + + g_iconv_close (serv->read_converter); + g_iconv_close (serv->write_converter); + + if (serv->favlist) + g_slist_free_full (serv->favlist, (GDestroyNotify) servlist_favchan_free); +#ifdef USE_OPENSSL + if (serv->ctx) + _SSL_context_free (serv->ctx); + + g_clear_pointer (&serv->scram_session, scram_session_free); +#endif + + fe_server_callback (serv); + + g_free (serv); + + notify_cleanup (); +} diff --git a/hexchat/src/common/server.h b/hexchat/src/common/server.h new file mode 100644 index 0000000..ff8ef40 --- /dev/null +++ b/hexchat/src/common/server.h @@ -0,0 +1,44 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_SERVER_H +#define HEXCHAT_SERVER_H + +extern GSList *serv_list; + +/* eventually need to keep the tcp_* functions isolated to server.c */ +int tcp_send_len (server *serv, char *buf, int len); +void tcp_sendf (server *serv, const char *fmt, ...) G_GNUC_PRINTF (2, 3); +int tcp_send_real (void *ssl, int sok, GIConv write_converter, char *buf, int len); + +server *server_new (void); +int is_server (server *serv); +void server_fill_her_up (server *serv); +void server_set_encoding (server *serv, char *new_encoding); +void server_set_defaults (server *serv); +char *server_get_network (server *serv, gboolean fallback); +void server_set_name (server *serv, char *name); +void server_free (server *serv); + +void server_away_save_message (server *serv, char *nick, char *msg); +struct away_msg *server_away_find_message (server *serv, char *nick); + +void base64_encode (char *to, char *from, unsigned int len); + +#endif diff --git a/hexchat/src/common/servlist.c b/hexchat/src/common/servlist.c new file mode 100644 index 0000000..1f29bb3 --- /dev/null +++ b/hexchat/src/common/servlist.c @@ -0,0 +1,1244 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <sys/types.h> +#include <sys/stat.h> + +#ifndef WIN32 +#include <unistd.h> +#endif + +#include "hexchat.h" +#include "cfgfiles.h" +#include "fe.h" +#include "server.h" +#include "text.h" +#include "util.h" /* token_foreach */ +#include "hexchatc.h" + +#include "servlist.h" + + +struct defaultserver +{ + char *network; + char *host; + char *channel; + char *charset; + int loginmode; /* default authentication type */ + char *connectcmd; /* default connect command - should only be used for rare login types, paired with LOGIN_CUSTOM */ + gboolean ssl; +}; + +static const struct defaultserver def[] = +{ + {"2600net", 0}, + /* Invalid hostname in cert */ + {0, "irc.2600.net"}, + + + {"AfterNET", 0, 0, 0, LOGIN_SASL, 0, TRUE}, + {0, "irc.afternet.org"}, + + {"Aitvaras", 0}, +#ifdef USE_OPENSSL + {0, "irc.data.lt/+6668"}, + {0, "irc.omicron.lt/+6668"}, + {0, "irc.vub.lt/+6668"}, +#endif + {0, "irc.data.lt"}, + {0, "irc.omicron.lt"}, + {0, "irc.vub.lt"}, + + {"Anthrochat", 0, 0, 0, 0, 0, TRUE}, + {0, "irc.anthrochat.net"}, + + {"ARCNet", 0}, + {0, "arcnet-irc.org"}, + + {"AustNet", 0}, + {0, "irc.austnet.org"}, + + {"AzzurraNet", 0}, + {0, "irc.azzurra.org"}, + + {"Canternet", 0, 0, 0, LOGIN_SASL, 0, TRUE}, + {0, "irc.canternet.org"}, + + {"Chat4all", 0, 0, 0, 0, 0, TRUE}, + {0, "irc.chat4all.org"}, + + {"ChatJunkies", 0}, + {0, "irc.chatjunkies.org"}, + + {"chatpat", 0, 0, "CP1251", LOGIN_CUSTOM, "MSG NS IDENTIFY %p"}, + {0, "irc.unibg.net"}, + {0, "irc.chatpat.bg"}, + + {"ChatSpike", 0, 0, 0, LOGIN_SASL}, + {0, "irc.chatspike.net"}, + + {"DaIRC", 0}, + {0, "irc.dairc.net"}, + + {"DALnet", 0, 0, 0, LOGIN_NICKSERV}, + /* Self signed */ + {0, "us.dal.net"}, + + {"DarkMyst", 0, 0, 0, LOGIN_SASL, 0, TRUE}, + {0, "irc.darkmyst.org"}, + +#ifdef USE_OPENSSL + {"darkscience", 0, 0, 0, LOGIN_SASL, 0, TRUE}, + {0, "irc.darkscience.net"}, + {0, "irc.drk.sc"}, + {0, "irc.darkscience.ws"}, +#endif + + {"Dark-Tou-Net", 0}, + {0, "irc.d-t-net.de"}, + + {"DigitalIRC", 0, 0, 0, LOGIN_SASL, 0, TRUE}, + {0, "irc.digitalirc.org"}, + +#ifdef USE_OPENSSL + {"DosersNET", 0, 0, 0, LOGIN_SASL, 0, TRUE}, + {0, "irc.dosers.net/+6697"}, +#endif + + {"EFnet", 0}, + {0, "irc.choopa.net"}, + {0, "efnet.port80.se"}, + {0, "irc.underworld.no"}, + {0, "efnet.deic.eu"}, + + {"EnterTheGame", 0}, + {0, "irc.enterthegame.com"}, + + {"EntropyNet", 0, 0, 0, LOGIN_SASL, 0, TRUE}, + {0, "irc.entropynet.net"}, + + {"EsperNet", 0, 0, 0, LOGIN_SASL, 0, TRUE}, + {0, "irc.esper.net"}, + + {"EUIrc", 0}, + {0, "irc.euirc.net"}, + + {"EuropNet", 0}, + /* Self signed */ + {0, "irc.europnet.org"}, + + {"FDFNet", 0}, + /* Self signed */ + {0, "irc.fdfnet.net"}, + + {"GameSurge", 0}, + {0, "irc.gamesurge.net"}, + + {"GeekShed", 0, 0, 0, 0, 0, TRUE}, + {0, "irc.geekshed.net"}, + + {"German-Elite", 0, 0, "CP1252"}, + {0, "irc.german-elite.net"}, + + {"GIMPNet", 0}, + /* Invalid hostname in cert */ + {0, "irc.gimp.org"}, + {0, "irc.gnome.org"}, + + {"GlobalGamers", 0}, +#ifdef USE_OPENSSL + {0, "irc.globalgamers.net/+6660"}, +#endif + {0, "irc.globalgamers.net"}, + +#ifdef USE_OPENSSL + {"hackint", 0, 0, 0, LOGIN_SASL, 0, TRUE}, + {0, "irc.hackint.org"}, + {0, "irc.eu.hackint.org"}, +#endif + + {"Hashmark", 0}, + {0, "irc.hashmark.net"}, + + {"ICQ-Chat", 0, 0, 0, LOGIN_SASL, 0, TRUE}, + {0, "irc.icq-chat.com"}, + + {"Interlinked", 0, 0, 0, LOGIN_SASL, 0, TRUE}, + {0, "irc.interlinked.me"}, + + {"Irc-Nerds", 0, 0, 0, LOGIN_SASL, 0, TRUE}, + {0, "irc.irc-nerds.net"}, + + {"IRC4Fun", 0, 0, 0, LOGIN_SASL, 0, TRUE}, + {0, "irc.irc4fun.net"}, + + {"IRCNet", 0}, + {0, "open.ircnet.net"}, + + {"IRCtoo", 0}, + {0, "irc.irctoo.net"}, + + {"Keyboard-Failure", 0}, + /* SSL is self-signed */ + {0, "irc.kbfail.net"}, + + {"Libera.Chat", 0, 0, 0, LOGIN_SASL, 0, TRUE}, + {0, "irc.libera.chat"}, + +#ifdef USE_OPENSSL + {"LibertaCasa", 0, 0, 0, LOGIN_SASL, 0, TRUE}, + {0, "irc.liberta.casa"}, +#endif + + {"LibraIRC", 0}, + /* Self signed */ + {0, "irc.librairc.net"}, + +#ifdef USE_OPENSSL + {"LinkNet", 0}, + {0, "irc.link-net.org/+7000"}, +#endif + + {"MindForge", 0, 0, 0, LOGIN_SASL}, + {0, "irc.mindforge.org"}, + + {"MIXXnet", 0}, + {0, "irc.mixxnet.net"}, + + {"Oceanius", 0, 0, 0, LOGIN_SASL}, + /* Self signed */ + {0, "irc.oceanius.com"}, + + {"OFTC", 0, 0, 0, 0, 0, TRUE}, + {0, "irc.oftc.net"}, + + {"OtherNet", 0}, + {0, "irc.othernet.org"}, + + {"OzOrg", 0}, + {0, "irc.oz.org"}, + + {"PIK", 0}, + {0, "irc.krstarica.com"}, + + {"pirc.pl", 0, 0, 0, 0, 0, TRUE}, + {0, "irc.pirc.pl"}, + + {"PTNet", 0}, + {0, "irc.ptnet.org"}, + {0, "uevora.ptnet.org"}, + {0, "claranet.ptnet.org"}, + {0, "sonaquela.ptnet.org"}, + {0, "uc.ptnet.org"}, + {0, "ipg.ptnet.org"}, + + {"QuakeNet", 0, 0, 0, LOGIN_CHALLENGEAUTH}, + {0, "irc.quakenet.org"}, + + {"Rizon", 0, 0, 0, 0, 0, TRUE}, + {0, "irc.rizon.net"}, + + {"RusNet", 0, 0, "KOI8-R (Cyrillic)"}, + /* Self signed */ + {0, "irc.tomsk.net"}, + {0, "irc.run.net"}, + {0, "irc.ru"}, + {0, "irc.lucky.net"}, + + {"Serenity-IRC", 0}, + {0, "irc.serenity-irc.net"}, + + {"SimosNap", 0, 0, 0, LOGIN_SASL, 0, TRUE}, + {0, "irc.simosnap.com"}, + + {"SlashNET", 0}, + /* Self signed */ + {0, "irc.slashnet.org"}, + + {"Snoonet", 0, 0, 0, LOGIN_SASL, 0, TRUE}, + {0, "irc.snoonet.org"}, + + {"Sohbet.Net", 0, 0, "CP1254"}, + {0, "irc.sohbet.net"}, + + {"SorceryNet", 0, 0, 0, LOGIN_SASL}, + /* Self signed */ + {0, "irc.sorcery.net"}, + + {"SpotChat", 0, 0, 0, LOGIN_SASL, 0, TRUE}, + {0, "irc.spotchat.org"}, + + {"Station51", 0}, + /* Self signed */ + {0, "irc.station51.net"}, + + {"StormBit", 0, 0, 0, LOGIN_SASL, 0, TRUE}, + {0, "irc.stormbit.net"}, + + {"SwiftIRC", 0}, + /* Expired cert */ + {0, "irc.swiftirc.net"}, + + {"synIRC", 0}, + /* Self signed */ + {0, "irc.synirc.net"}, + + {"Techtronix", 0, 0, 0, LOGIN_SASL, 0, TRUE}, + {0, "irc.techtronix.net"}, + + {"TechNet", 0, 0, 0, LOGIN_SASL, 0, TRUE}, + {0, "irc.technet.chat"}, + + {"tilde.chat", 0, 0, 0, LOGIN_SASL, 0, TRUE}, + {0, "irc.tilde.chat"}, + + {"TURLINet", 0, 0, 0, 0, 0, TRUE}, + /* all servers use UTF-8 and valid certs */ + {0, "irc.servx.org"}, + {0, "i.valware.uk"}, + + +#ifdef USE_OPENSSL + {"TripSit", 0, 0, 0, LOGIN_SASL, 0, TRUE}, + {0, "irc.tripsit.me"}, + {0, "newirc.tripsit.me"}, + {0, "coconut.tripsit.me"}, + {0, "innsbruck.tripsit.me"}, +#endif + + {"UnderNet", 0, 0, 0, LOGIN_CUSTOM, "MSG x@channels.undernet.org login %u %p"}, + {0, "irc.undernet.org"}, + + {"Xertion", 0, 0, 0, LOGIN_SASL, 0, TRUE}, + {0, "irc.xertion.org"}, + + {0,0} +}; + +GSList *network_list = 0; + +favchannel * +servlist_favchan_copy (favchannel *fav) +{ + favchannel *newfav; + + newfav = g_new (favchannel, 1); + newfav->name = g_strdup (fav->name); + newfav->key = g_strdup (fav->key); /* g_strdup() can handle NULLs so no need to check it */ + + return newfav; +} + +void +servlist_connect (session *sess, ircnet *net, gboolean join) +{ + ircserver *ircserv; + GSList *list; + char *port; + server *serv; + + if (!sess) + sess = new_ircwindow (NULL, NULL, SESS_SERVER, TRUE); + + serv = sess->server; + + /* connect to the currently selected Server-row */ + list = g_slist_nth (net->servlist, net->selected); + if (!list) + list = net->servlist; + if (!list) + return; + ircserv = list->data; + + /* in case a protocol switch is added to the servlist gui */ + server_fill_her_up (sess->server); + + if (join) + { + sess->willjoinchannel[0] = 0; + + if (net->favchanlist) + { + if (serv->favlist) + { + g_slist_free_full (serv->favlist, (GDestroyNotify) servlist_favchan_free); + } + serv->favlist = g_slist_copy_deep (net->favchanlist, (GCopyFunc) servlist_favchan_copy, NULL); + } + } + + if (net->logintype) + { + serv->loginmethod = net->logintype; + } + else + { + serv->loginmethod = LOGIN_DEFAULT_REAL; + } + + serv->password[0] = 0; + + if (net->pass) + { + safe_strcpy (serv->password, net->pass, sizeof (serv->password)); + } + + if (net->flags & FLAG_USE_GLOBAL) + { + strcpy (serv->nick, prefs.hex_irc_nick1); + } + else + { + if (net->nick) + strcpy (serv->nick, net->nick); + } + + serv->dont_use_proxy = (net->flags & FLAG_USE_PROXY) ? FALSE : TRUE; + +#ifdef USE_OPENSSL + serv->use_ssl = (net->flags & FLAG_USE_SSL) ? TRUE : FALSE; + serv->accept_invalid_cert = + (net->flags & FLAG_ALLOW_INVALID) ? TRUE : FALSE; +#endif + + serv->network = net; + + port = strrchr (ircserv->hostname, '/'); + if (port) + { + *port = 0; + + /* support "+port" to indicate SSL (like mIRC does) */ + if (port[1] == '+') + { +#ifdef USE_OPENSSL + serv->use_ssl = TRUE; +#endif + serv->connect (serv, ircserv->hostname, atoi (port + 2), FALSE); + } else + { + serv->connect (serv, ircserv->hostname, atoi (port + 1), FALSE); + } + + *port = '/'; + } else + serv->connect (serv, ircserv->hostname, -1, FALSE); + + server_set_encoding (serv, net->encoding); +} + +int +servlist_connect_by_netname (session *sess, char *network, gboolean join) +{ + ircnet *net; + GSList *list = network_list; + + while (list) + { + net = list->data; + + if (g_ascii_strcasecmp (net->name, network) == 0) + { + servlist_connect (sess, net, join); + return 1; + } + + list = list->next; + } + + return 0; +} + +int +servlist_have_auto (void) +{ + GSList *list = network_list; + ircnet *net; + + while (list) + { + net = list->data; + + if (net->flags & FLAG_AUTO_CONNECT) + return 1; + + list = list->next; + } + + return 0; +} + +int +servlist_auto_connect (session *sess) +{ + GSList *list = network_list; + ircnet *net; + int ret = 0; + + while (list) + { + net = list->data; + + if (net->flags & FLAG_AUTO_CONNECT) + { + servlist_connect (sess, net, TRUE); + ret = 1; + } + + list = list->next; + } + + return ret; +} + +static gint +servlist_cycle_cb (server *serv) +{ + if (serv->network) + { + PrintTextf (serv->server_session, + _("Cycling to next server in %s...\n"), ((ircnet *)serv->network)->name); + servlist_connect (serv->server_session, serv->network, TRUE); + } + + return 0; +} + +int +servlist_cycle (server *serv) +{ + ircnet *net; + int max, del; + + net = serv->network; + if (net) + { + max = g_slist_length (net->servlist); + if (max > 0) + { + /* try the next server, if that option is on */ + if (net->flags & FLAG_CYCLE) + { + net->selected++; + if (net->selected >= max) + net->selected = 0; + } + + del = prefs.hex_net_reconnect_delay * 1000; + if (del < 1000) + del = 500; /* so it doesn't block the gui */ + + if (del) + serv->recondelay_tag = fe_timeout_add (del, servlist_cycle_cb, serv); + else + servlist_connect (serv->server_session, net, TRUE); + + return TRUE; + } + } + + return FALSE; +} + +ircserver * +servlist_server_find (ircnet *net, char *name, int *pos) +{ + GSList *list = net->servlist; + ircserver *serv; + int i = 0; + + while (list) + { + serv = list->data; + if (strcmp (serv->hostname, name) == 0) + { + if (pos) + { + *pos = i; + } + return serv; + } + i++; + list = list->next; + } + + return NULL; +} + +favchannel * +servlist_favchan_find (ircnet *net, char *channel, int *pos) +{ + GSList *list; + favchannel *favchan; + int i = 0; + + if (net == NULL) + return NULL; + + list = net->favchanlist; + + while (list) + { + favchan = list->data; + if (g_ascii_strcasecmp (favchan->name, channel) == 0) + { + if (pos) + { + *pos = i; + } + return favchan; + } + i++; + list = list->next; + } + + return NULL; +} + +commandentry * +servlist_command_find (ircnet *net, char *cmd, int *pos) +{ + GSList *list = net->commandlist; + commandentry *entry; + int i = 0; + + while (list) + { + entry = list->data; + if (strcmp (entry->command, cmd) == 0) + { + if (pos) + { + *pos = i; + } + return entry; + } + i++; + list = list->next; + } + + return NULL; +} + +/* find a network (e.g. (ircnet *) to "FreeNode") from a hostname + (e.g. "irc.eu.freenode.net") */ + +ircnet * +servlist_net_find_from_server (char *server_name) +{ + GSList *list = network_list; + GSList *slist; + ircnet *net; + ircserver *serv; + + while (list) + { + net = list->data; + + slist = net->servlist; + while (slist) + { + gsize hostname_len; + const char *hostname, *p; + + serv = slist->data; + hostname = serv->hostname; + + /* Ignore port when comparing */ + if ((p = strchr (hostname, '/'))) + hostname_len = p - hostname; + else + hostname_len = strlen (hostname); + + if (g_ascii_strncasecmp (hostname, server_name, hostname_len) == 0) + return net; + slist = slist->next; + } + + list = list->next; + } + + return NULL; +} + +ircnet * +servlist_net_find (char *name, int *pos, int (*cmpfunc) (const char *, const char *)) +{ + GSList *list = network_list; + ircnet *net; + int i = 0; + + while (list) + { + net = list->data; + if (cmpfunc (net->name, name) == 0) + { + if (pos) + *pos = i; + return net; + } + i++; + list = list->next; + } + + return NULL; +} + +ircserver * +servlist_server_add (ircnet *net, char *name) +{ + ircserver *serv; + + serv = g_new (ircserver, 1); + serv->hostname = g_strdup (name); + + net->servlist = g_slist_append (net->servlist, serv); + + return serv; +} + +commandentry * +servlist_command_add (ircnet *net, char *cmd) +{ + commandentry *entry; + + entry = g_new (commandentry, 1); + entry->command = g_strdup (cmd); + + net->commandlist = g_slist_append (net->commandlist, entry); + + return entry; +} + +GSList * +servlist_favchan_listadd (GSList *chanlist, char *channel, char *key) +{ + favchannel *chan; + + chan = g_new (favchannel, 1); + chan->name = g_strdup (channel); + chan->key = g_strdup (key); + chanlist = g_slist_append (chanlist, chan); + + return chanlist; +} + +void +servlist_favchan_add (ircnet *net, char *channel) +{ + int pos; + char *name; + char *key; + + if (strchr (channel, ',') != NULL) + { + pos = (int) (strchr (channel, ',') - channel); + name = g_strndup (channel, pos); + key = g_strdup (channel + pos + 1); + } + else + { + name = g_strdup (channel); + key = NULL; + } + + net->favchanlist = servlist_favchan_listadd (net->favchanlist, name, key); + + g_free (name); + g_free (key); +} + +void +servlist_server_remove (ircnet *net, ircserver *serv) +{ + g_free (serv->hostname); + g_free (serv); + net->servlist = g_slist_remove (net->servlist, serv); +} + +static void +servlist_server_remove_all (ircnet *net) +{ + ircserver *serv; + + while (net->servlist) + { + serv = net->servlist->data; + servlist_server_remove (net, serv); + } +} + +void +servlist_command_free (commandentry *entry) +{ + g_free (entry->command); + g_free (entry); +} + +void +servlist_command_remove (ircnet *net, commandentry *entry) +{ + servlist_command_free (entry); + net->commandlist = g_slist_remove (net->commandlist, entry); +} + +void +servlist_favchan_free (favchannel *channel) +{ + g_free (channel->name); + g_free (channel->key); + g_free (channel); +} + +void +servlist_favchan_remove (ircnet *net, favchannel *channel) +{ + servlist_favchan_free (channel); + net->favchanlist = g_slist_remove (net->favchanlist, channel); +} + +static void +free_and_clear (char *str) +{ + if (str) + { + char *orig = str; + while (*str) + *str++ = 0; + g_free (orig); + } +} + +/* executed on exit: Clear any password strings */ + +void +servlist_cleanup (void) +{ + GSList *list; + ircnet *net; + + for (list = network_list; list; list = list->next) + { + net = list->data; + free_and_clear (net->pass); + } +} + +void +servlist_net_remove (ircnet *net) +{ + GSList *list; + server *serv; + + servlist_server_remove_all (net); + network_list = g_slist_remove (network_list, net); + + g_free (net->nick); + g_free (net->nick2); + g_free (net->user); + g_free (net->real); + free_and_clear (net->pass); + if (net->favchanlist) + g_slist_free_full (net->favchanlist, (GDestroyNotify) servlist_favchan_free); + if (net->commandlist) + g_slist_free_full (net->commandlist, (GDestroyNotify) servlist_command_free); + g_free (net->encoding); + g_free (net->name); + g_free (net); + + /* for safety */ + list = serv_list; + while (list) + { + serv = list->data; + if (serv->network == net) + { + serv->network = NULL; + } + list = list->next; + } +} + +ircnet * +servlist_net_add (char *name, char *comment, int prepend) +{ + ircnet *net; + + net = g_new0 (ircnet, 1); + net->name = g_strdup (name); + net->flags = FLAG_CYCLE | FLAG_USE_GLOBAL | FLAG_USE_PROXY; +#ifdef USE_OPENSSL + net->flags |= FLAG_USE_SSL; +#endif + + if (prepend) + network_list = g_slist_prepend (network_list, net); + else + network_list = g_slist_append (network_list, net); + + return net; +} + +static void +servlist_load_defaults (void) +{ + int i = 0, j = 0; + ircnet *net = NULL; + guint def_hash = g_str_hash ("Libera.Chat"); + + while (1) + { + if (def[i].network) + { + net = servlist_net_add (def[i].network, def[i].host, FALSE); + if (def[i].channel) + { + servlist_favchan_add (net, def[i].channel); + } + if (def[i].charset) + { + net->encoding = g_strdup (def[i].charset); + } + else + { + net->encoding = g_strdup (IRC_DEFAULT_CHARSET); + } + if (def[i].loginmode) + { + net->logintype = def[i].loginmode; + } + if (def[i].connectcmd) + { + servlist_command_add (net, def[i].connectcmd); + } + if (def[i].ssl) + { + net->flags |= FLAG_USE_SSL; + } + + if (g_str_hash (def[i].network) == def_hash) + { + prefs.hex_gui_slist_select = j; + } + + j++; + } + else + { + servlist_server_add (net, def[i].host); + if (!def[i+1].host && !def[i+1].network) + { + break; + } + } + i++; + } +} + +static int +servlist_load (void) +{ + FILE *fp; + char buf[2048]; + int len; + ircnet *net = NULL; + + /* simple migration we will keep for a short while */ + char *oldfile = g_build_filename (get_xdir (), "servlist_.conf", NULL); + char *newfile = g_build_filename (get_xdir (), "servlist.conf", NULL); + + if (g_file_test (oldfile, G_FILE_TEST_EXISTS) && !g_file_test (newfile, G_FILE_TEST_EXISTS)) + { + g_rename (oldfile, newfile); + } + + g_free (oldfile); + g_free (newfile); + + fp = hexchat_fopen_file ("servlist.conf", "r", 0); + if (!fp) + return FALSE; + + while (fgets (buf, sizeof (buf) - 2, fp)) + { + len = strlen (buf); + if (!len) + continue; + buf[len] = 0; + buf[len-1] = 0; /* remove the trailing \n */ + if (net) + { + switch (buf[0]) + { + case 'I': + net->nick = g_strdup (buf + 2); + break; + case 'i': + net->nick2 = g_strdup (buf + 2); + break; + case 'U': + net->user = g_strdup (buf + 2); + break; + case 'R': + net->real = g_strdup (buf + 2); + break; + case 'P': + net->pass = g_strdup (buf + 2); + break; + case 'L': + net->logintype = atoi (buf + 2); + break; + case 'E': + net->encoding = servlist_check_encoding (buf + 2) ? g_strdup (buf + 2) : g_strdup ("UTF-8"); + break; + case 'F': + net->flags = atoi (buf + 2); + break; + case 'S': /* new server/hostname for this network */ + servlist_server_add (net, buf + 2); + break; + case 'C': + servlist_command_add (net, buf + 2); + break; + case 'J': + servlist_favchan_add (net, buf + 2); + break; + case 'D': + net->selected = atoi (buf + 2); + break; + /* FIXME Migration code. In 2.9.5 the order was: + * + * P=serverpass, A=saslpass, B=nickservpass + * + * So if server password was unset, we can safely use SASL + * password for our new universal password, or if that's also + * unset, use NickServ password. + * + * Should be removed at some point. + */ + case 'A': + if (!net->pass) + { + net->pass = g_strdup (buf + 2); + if (!net->logintype) + { + net->logintype = LOGIN_SASL; + } + } + case 'B': + if (!net->pass) + { + net->pass = g_strdup (buf + 2); + if (!net->logintype) + { + net->logintype = LOGIN_NICKSERV; + } + } + } + } + if (buf[0] == 'N') + net = servlist_net_add (buf + 2, /* comment */ NULL, FALSE); + } + fclose (fp); + + return TRUE; +} + +void +servlist_init (void) +{ + if (!network_list) + if (!servlist_load ()) + servlist_load_defaults (); +} + +/* check if a charset is known by Iconv */ +int +servlist_check_encoding (char *charset) +{ + GIConv gic; + char *c; + + c = strchr (charset, ' '); + if (c) + c[0] = 0; + + gic = g_iconv_open (charset, "UTF-8"); + + if (c) + c[0] = ' '; + + if (gic != (GIConv)-1) + { + g_iconv_close (gic); + return TRUE; + } + + return FALSE; +} + +int +servlist_save (void) +{ + FILE *fp; + char *buf; + ircnet *net; + ircserver *serv; + commandentry *cmd; + favchannel *favchan; + GSList *list; + GSList *netlist; + GSList *cmdlist; + GSList *favlist; +#ifndef WIN32 + int first = FALSE; + + buf = g_build_filename (get_xdir (), "servlist.conf", NULL); + if (g_access (buf, F_OK) != 0) + first = TRUE; +#endif + + fp = hexchat_fopen_file ("servlist.conf", "w", 0); + if (!fp) + { +#ifndef WIN32 + g_free (buf); +#endif + return FALSE; + } + +#ifndef WIN32 + if (first) + g_chmod (buf, 0600); + + g_free (buf); +#endif + fprintf (fp, "v=" PACKAGE_VERSION "\n\n"); + + list = network_list; + while (list) + { + net = list->data; + + fprintf (fp, "N=%s\n", net->name); + if (net->nick) + fprintf (fp, "I=%s\n", net->nick); + if (net->nick2) + fprintf (fp, "i=%s\n", net->nick2); + if (net->user) + fprintf (fp, "U=%s\n", net->user); + if (net->real) + fprintf (fp, "R=%s\n", net->real); + if (net->pass) + fprintf (fp, "P=%s\n", net->pass); + if (net->logintype) + fprintf (fp, "L=%d\n", net->logintype); + if (net->encoding) + { + fprintf (fp, "E=%s\n", net->encoding); + if (!servlist_check_encoding (net->encoding)) + { + buf = g_strdup_printf (_("Warning: \"%s\" character set is unknown. No conversion will be applied for network %s."), + net->encoding, net->name); + fe_message (buf, FE_MSG_WARN); + g_free (buf); + } + } + + fprintf (fp, "F=%d\nD=%d\n", net->flags, net->selected); + + netlist = net->servlist; + while (netlist) + { + serv = netlist->data; + fprintf (fp, "S=%s\n", serv->hostname); + netlist = netlist->next; + } + + cmdlist = net->commandlist; + while (cmdlist) + { + cmd = cmdlist->data; + fprintf (fp, "C=%s\n", cmd->command); + cmdlist = cmdlist->next; + } + + favlist = net->favchanlist; + while (favlist) + { + favchan = favlist->data; + + if (favchan->key) + { + fprintf (fp, "J=%s,%s\n", favchan->name, favchan->key); + } + else + { + fprintf (fp, "J=%s\n", favchan->name); + } + + favlist = favlist->next; + } + + if (fprintf (fp, "\n") < 1) + { + fclose (fp); + return FALSE; + } + + list = list->next; + } + + fclose (fp); + return TRUE; +} + +static int +joinlist_find_chan (favchannel *curr_item, const char *channel) +{ + if (!g_ascii_strcasecmp (curr_item->name, channel)) + { + return 0; + } + else + { + return 1; + } +} + +gboolean +joinlist_is_in_list (server *serv, char *channel) +{ + if (!serv->network || !((ircnet *)serv->network)->favchanlist) + { + return FALSE; + } + + if (g_slist_find_custom (((ircnet *)serv->network)->favchanlist, channel, (GCompareFunc) joinlist_find_chan)) + { + return TRUE; + } + else + { + return FALSE; + } +} diff --git a/hexchat/src/common/servlist.h b/hexchat/src/common/servlist.h new file mode 100644 index 0000000..c3d158b --- /dev/null +++ b/hexchat/src/common/servlist.h @@ -0,0 +1,132 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_SERVLIST_H +#define HEXCHAT_SERVLIST_H + +typedef struct ircserver +{ + char *hostname; +} ircserver; + +typedef struct commandentry +{ + char *command; +} commandentry; + +typedef struct favchannel +{ + char *name; + char *key; +} favchannel; + +typedef struct ircnet +{ + char *name; + char *nick; + char *nick2; + char *user; + char *real; + char *pass; + int logintype; + char *encoding; + GSList *servlist; + GSList *commandlist; + GSList *favchanlist; + int selected; + guint32 flags; +} ircnet; + +extern GSList *network_list; + +#define FLAG_CYCLE 1 +#define FLAG_USE_GLOBAL 2 +#define FLAG_USE_SSL 4 +#define FLAG_AUTO_CONNECT 8 +#define FLAG_USE_PROXY 16 +#define FLAG_ALLOW_INVALID 32 +#define FLAG_FAVORITE 64 +#define FLAG_COUNT 7 + +/* Login methods. Use server password by default - if we had a NickServ password, it'd be set to 2 already by servlist_load() */ +#define LOGIN_DEFAULT_REAL LOGIN_PASS /* this is to set the default login method for unknown servers */ +#define LOGIN_DEFAULT 0 /* this is for the login type dropdown, doesn't serve any other purpose */ +#define LOGIN_MSG_NICKSERV 1 +#define LOGIN_NICKSERV 2 +#if 0 +#define LOGIN_NS 3 +#define LOGIN_MSG_NS 4 +#define LOGIN_AUTH 5 +#endif +#define LOGIN_SASL 6 +#define LOGIN_PASS 7 +#define LOGIN_CHALLENGEAUTH 8 +#define LOGIN_CUSTOM 9 +#define LOGIN_SASLEXTERNAL 10 +#define LOGIN_SASL_SCRAM_SHA_1 11 +#define LOGIN_SASL_SCRAM_SHA_256 12 +#define LOGIN_SASL_SCRAM_SHA_512 13 + +#define CHALLENGEAUTH_ALGO "HMAC-SHA-256" +#define CHALLENGEAUTH_NICK "Q@CServe.quakenet.org" +#define CHALLENGEAUTH_FULLHOST "Q!TheQBot@CServe.quakenet.org" + +/* DEFAULT_CHARSET is already defined in wingdi.h */ +#define IRC_DEFAULT_CHARSET "UTF-8 (Unicode)" + +void servlist_init (void); +int servlist_save (void); +int servlist_cycle (server *serv); +void servlist_connect (session *sess, ircnet *net, gboolean join); +int servlist_connect_by_netname (session *sess, char *network, gboolean join); +int servlist_auto_connect (session *sess); +int servlist_have_auto (void); +int servlist_check_encoding (char *charset); +void servlist_cleanup (void); + +ircnet *servlist_net_add (char *name, char *comment, int prepend); +void servlist_net_remove (ircnet *net); +ircnet *servlist_net_find (char *name, int *pos, int (*cmpfunc) (const char *, const char *)); +ircnet *servlist_net_find_from_server (char *server_name); + +ircserver *servlist_server_find (ircnet *net, char *name, int *pos); +commandentry *servlist_command_find (ircnet *net, char *cmd, int *pos); +favchannel *servlist_favchan_find (ircnet *net, char *channel, int *pos); + +ircserver *servlist_server_add (ircnet *net, char *name); +commandentry *servlist_command_add (ircnet *net, char *command); +void servlist_favchan_add (ircnet *net, char *channel); + +void servlist_command_free (commandentry *entry); +void servlist_favchan_free (favchannel *channel); + +void servlist_server_remove (ircnet *net, ircserver *serv); +void servlist_command_remove (ircnet *net, commandentry *entry); +void servlist_favchan_remove (ircnet *net, favchannel *channel); + +favchannel *servlist_favchan_copy (favchannel *fav); +GSList *servlist_favchan_listadd (GSList *chanlist, char *channel, char *key); + +gboolean joinlist_is_in_list (server *serv, char *channel); + +/* FIXME +void joinlist_split (char *autojoin, GSList **channels, GSList **keys); +void joinlist_free (GSList *channels, GSList *keys); +*/ +#endif diff --git a/hexchat/src/common/ssl.c b/hexchat/src/common/ssl.c new file mode 100644 index 0000000..e7f7e0a --- /dev/null +++ b/hexchat/src/common/ssl.c @@ -0,0 +1,566 @@ +/* + * ssl.c v0.0.3 + * Copyright (C) 2000 -- DaP <profeta@freemail.c3.hu> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifdef __APPLE__ +#define __AVAILABILITYMACROS__ +#define DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER +#endif + +#include "inet.h" /* make it first to avoid macro redefinitions */ +#include <openssl/ssl.h> /* SSL_() */ +#include <openssl/err.h> /* ERR_() */ +#include <openssl/x509v3.h> +#ifdef WIN32 +#include <openssl/rand.h> /* RAND_seed() */ +#endif +#include "config.h" +#include <time.h> /* asctime() */ +#include <string.h> /* strncpy() */ +#include "ssl.h" /* struct cert_info */ + +#include <glib.h> +#include <glib/gprintf.h> +#include <gio/gio.h> +#include "util.h" + +/* If openssl was built without ec */ +#ifndef SSL_OP_SINGLE_ECDH_USE +#define SSL_OP_SINGLE_ECDH_USE 0 +#endif + +#ifndef SSL_OP_NO_COMPRESSION +#define SSL_OP_NO_COMPRESSION 0 +#endif + +/* globals */ +static struct chiper_info chiper_info; /* static buffer for _SSL_get_cipher_info() */ +static char err_buf[256]; /* generic error buffer */ + + +/* +++++ Internal functions +++++ */ + +static void +__SSL_fill_err_buf (char *funcname) +{ + int err; + char buf[256]; + + + err = ERR_get_error (); + ERR_error_string (err, buf); + g_snprintf (err_buf, sizeof (err_buf), "%s: %s (%d)\n", funcname, buf, err); +} + + +static void +__SSL_critical_error (char *funcname) +{ + __SSL_fill_err_buf (funcname); + fprintf (stderr, "%s\n", err_buf); + + exit (1); +} + +/* +++++ SSL functions +++++ */ + +SSL_CTX * +_SSL_context_init (void (*info_cb_func)) +{ + SSL_CTX *ctx; + + SSLeay_add_ssl_algorithms (); + SSL_load_error_strings (); + ctx = SSL_CTX_new (SSLv23_client_method ()); + + SSL_CTX_set_session_cache_mode (ctx, SSL_SESS_CACHE_BOTH); + SSL_CTX_set_timeout (ctx, 300); + SSL_CTX_set_options (ctx, SSL_OP_NO_SSLv2|SSL_OP_NO_SSLv3 + |SSL_OP_NO_COMPRESSION + |SSL_OP_SINGLE_DH_USE|SSL_OP_SINGLE_ECDH_USE + |SSL_OP_NO_TICKET + |SSL_OP_CIPHER_SERVER_PREFERENCE); + +#if OPENSSL_VERSION_NUMBER >= 0x00908000L && !defined (OPENSSL_NO_COMP) /* workaround for OpenSSL 0.9.8 */ + sk_SSL_COMP_zero(SSL_COMP_get_compression_methods()); +#endif + + /* used in SSL_connect(), SSL_accept() */ + SSL_CTX_set_info_callback (ctx, info_cb_func); + + return(ctx); +} + +static void +ASN1_TIME_snprintf (char *buf, int buf_len, ASN1_TIME * tm) +{ + char *expires = NULL; + BIO *inMem = BIO_new (BIO_s_mem ()); + + ASN1_TIME_print (inMem, tm); + BIO_get_mem_data (inMem, &expires); + buf[0] = 0; + if (expires != NULL) + { + /* expires is not \0 terminated */ + safe_strcpy (buf, expires, MIN(24, buf_len)); + } + BIO_free (inMem); +} + + +static void +broke_oneline (char *oneline, char *parray[]) +{ + char *pt, *ppt; + int i; + + + i = 0; + ppt = pt = oneline + 1; + while ((pt = strchr (pt, '/'))) + { + *pt = 0; + parray[i++] = ppt; + ppt = ++pt; + } + parray[i++] = ppt; + parray[i] = NULL; +} + + +/* + FIXME: Master-Key, Extensions, CA bits + (openssl x509 -text -in servcert.pem) +*/ +int +_SSL_get_cert_info (struct cert_info *cert_info, SSL * ssl) +{ + X509 *peer_cert; + X509_PUBKEY *key; + X509_ALGOR *algor = NULL; + EVP_PKEY *peer_pkey; + char notBefore[64]; + char notAfter[64]; + int alg; + int sign_alg; + + + if (!(peer_cert = SSL_get_peer_certificate (ssl))) + return (1); /* FATAL? */ + + X509_NAME_oneline (X509_get_subject_name (peer_cert), cert_info->subject, + sizeof (cert_info->subject)); + X509_NAME_oneline (X509_get_issuer_name (peer_cert), cert_info->issuer, + sizeof (cert_info->issuer)); + broke_oneline (cert_info->subject, cert_info->subject_word); + broke_oneline (cert_info->issuer, cert_info->issuer_word); + + key = X509_get_X509_PUBKEY(peer_cert); + if (!X509_PUBKEY_get0_param(NULL, NULL, 0, &algor, key)) + return 1; + + alg = OBJ_obj2nid (algor->algorithm); +#ifndef HAVE_X509_GET_SIGNATURE_NID + sign_alg = OBJ_obj2nid (peer_cert->sig_alg->algorithm); +#else + sign_alg = X509_get_signature_nid (peer_cert); +#endif + ASN1_TIME_snprintf (notBefore, sizeof (notBefore), + X509_get_notBefore (peer_cert)); + ASN1_TIME_snprintf (notAfter, sizeof (notAfter), + X509_get_notAfter (peer_cert)); + + peer_pkey = X509_get_pubkey (peer_cert); + + safe_strcpy (cert_info->algorithm, + (alg == NID_undef) ? "Unknown" : OBJ_nid2ln (alg), + sizeof (cert_info->algorithm)); + cert_info->algorithm_bits = EVP_PKEY_bits (peer_pkey); + safe_strcpy (cert_info->sign_algorithm, + (sign_alg == NID_undef) ? "Unknown" : OBJ_nid2ln (sign_alg), + sizeof (cert_info->sign_algorithm)); + /* EVP_PKEY_bits(ca_pkey)); */ + cert_info->sign_algorithm_bits = 0; + safe_strcpy (cert_info->notbefore, notBefore, sizeof (cert_info->notbefore)); + safe_strcpy (cert_info->notafter, notAfter, sizeof (cert_info->notafter)); + + EVP_PKEY_free (peer_pkey); + + /* SSL_SESSION_print_fp(stdout, SSL_get_session(ssl)); */ +/* + if (ssl->session->sess_cert->peer_rsa_tmp) { + tmp_pkey = EVP_PKEY_new(); + EVP_PKEY_assign_RSA(tmp_pkey, ssl->session->sess_cert->peer_rsa_tmp); + cert_info->rsa_tmp_bits = EVP_PKEY_bits (tmp_pkey); + EVP_PKEY_free(tmp_pkey); + } else + fprintf(stderr, "REMOTE SIDE DOESN'T PROVIDES ->peer_rsa_tmp\n"); +*/ + cert_info->rsa_tmp_bits = 0; + + X509_free (peer_cert); + + return (0); +} + + +struct chiper_info * +_SSL_get_cipher_info (SSL * ssl) +{ + const SSL_CIPHER *c; + + + c = SSL_get_current_cipher (ssl); + safe_strcpy (chiper_info.version, SSL_CIPHER_get_version (c), + sizeof (chiper_info.version)); + safe_strcpy (chiper_info.chiper, SSL_CIPHER_get_name (c), + sizeof (chiper_info.chiper)); + SSL_CIPHER_get_bits (c, &chiper_info.chiper_bits); + + return (&chiper_info); +} + + +int +_SSL_send (SSL * ssl, char *buf, int len) +{ + int num; + + + num = SSL_write (ssl, buf, len); + + switch (SSL_get_error (ssl, num)) + { + case SSL_ERROR_SSL: /* setup errno! */ + /* ??? */ + __SSL_fill_err_buf ("SSL_write"); + fprintf (stderr, "%s\n", err_buf); + break; + case SSL_ERROR_SYSCALL: + /* ??? */ + perror ("SSL_write/write"); + break; + case SSL_ERROR_ZERO_RETURN: + /* fprintf(stderr, "SSL closed on write\n"); */ + break; + } + + return (num); +} + + +int +_SSL_recv (SSL * ssl, char *buf, int len) +{ + int num; + + + num = SSL_read (ssl, buf, len); + + switch (SSL_get_error (ssl, num)) + { + case SSL_ERROR_SSL: + /* ??? */ + __SSL_fill_err_buf ("SSL_read"); + fprintf (stderr, "%s\n", err_buf); + break; + case SSL_ERROR_SYSCALL: + /* ??? */ + if (!would_block ()) + perror ("SSL_read/read"); + break; + case SSL_ERROR_ZERO_RETURN: + /* fprintf(stdeerr, "SSL closed on read\n"); */ + break; + } + + return (num); +} + + +SSL * +_SSL_socket (SSL_CTX *ctx, int sd) +{ + SSL *ssl; + const SSL_METHOD *method; + + if (!(ssl = SSL_new (ctx))) + /* FATAL */ + __SSL_critical_error ("SSL_new"); + + SSL_set_fd (ssl, sd); + +#ifndef HAVE_SSL_CTX_GET_SSL_METHOD + method = ctx->method; +#else + method = SSL_CTX_get_ssl_method (ctx); +#endif + if (method == SSLv23_client_method()) + SSL_set_connect_state (ssl); + else + SSL_set_accept_state(ssl); + + return (ssl); +} + + +char * +_SSL_set_verify (SSL_CTX *ctx, void *verify_callback) +{ +#ifdef DEFAULT_CERT_FILE + if (!SSL_CTX_load_verify_locations (ctx, DEFAULT_CERT_FILE, NULL)) + { + __SSL_fill_err_buf ("SSL_CTX_load_verify_locations"); + return (err_buf); + } +#else + if (!SSL_CTX_set_default_verify_paths (ctx)) + { + __SSL_fill_err_buf ("SSL_CTX_set_default_verify_paths"); + return (err_buf); + } +#endif + + SSL_CTX_set_verify (ctx, SSL_VERIFY_PEER, verify_callback); + + return (NULL); +} + + +void +_SSL_close (SSL * ssl) +{ + SSL_set_shutdown (ssl, SSL_SENT_SHUTDOWN | SSL_RECEIVED_SHUTDOWN); + SSL_free (ssl); +#ifdef HAVE_ERR_REMOVE_THREAD_STATE +#if OPENSSL_VERSION_NUMBER >= 0x10000000L && OPENSSL_VERSION_NUMBER < 0x10100000L + /* OpenSSL handles this itself in 1.1+ and this is a no-op */ + ERR_remove_thread_state (NULL); +#endif +#else + ERR_remove_state (0); +#endif +} + +/* Hostname validation code based on OpenBSD's libtls. */ + +static int +_SSL_match_hostname (const char *cert_hostname, const char *hostname) +{ + const char *cert_domain, *domain, *next_dot; + + if (g_ascii_strcasecmp (cert_hostname, hostname) == 0) + return 0; + + /* Wildcard match? */ + if (cert_hostname[0] == '*') + { + /* + * Valid wildcards: + * - "*.domain.tld" + * - "*.sub.domain.tld" + * - etc. + * Reject "*.tld". + * No attempt to prevent the use of eg. "*.co.uk". + */ + cert_domain = &cert_hostname[1]; + /* Disallow "*" */ + if (cert_domain[0] == '\0') + return -1; + /* Disallow "*foo" */ + if (cert_domain[0] != '.') + return -1; + /* Disallow "*.." */ + if (cert_domain[1] == '.') + return -1; + next_dot = strchr (&cert_domain[1], '.'); + /* Disallow "*.bar" */ + if (next_dot == NULL) + return -1; + /* Disallow "*.bar.." */ + if (next_dot[1] == '.') + return -1; + + domain = strchr (hostname, '.'); + + /* No wildcard match against a hostname with no domain part. */ + if (domain == NULL || strlen(domain) == 1) + return -1; + + if (g_ascii_strcasecmp (cert_domain, domain) == 0) + return 0; + } + + return -1; +} + +static int +_SSL_check_subject_altname (X509 *cert, const char *host) +{ + STACK_OF(GENERAL_NAME) *altname_stack = NULL; + GInetAddress *addr; + GSocketFamily family; + int type = GEN_DNS; + int count, i; + int rv = -1; + + altname_stack = X509_get_ext_d2i (cert, NID_subject_alt_name, NULL, NULL); + if (altname_stack == NULL) + return -1; + + addr = g_inet_address_new_from_string (host); + if (addr != NULL) + { + family = g_inet_address_get_family (addr); + if (family == G_SOCKET_FAMILY_IPV4 || family == G_SOCKET_FAMILY_IPV6) + type = GEN_IPADD; + } + + count = sk_GENERAL_NAME_num(altname_stack); + for (i = 0; i < count; i++) + { + GENERAL_NAME *altname; + + altname = sk_GENERAL_NAME_value (altname_stack, i); + + if (altname->type != type) + continue; + + if (type == GEN_DNS) + { + const unsigned char *data; + int format; + + format = ASN1_STRING_type (altname->d.dNSName); + if (format == V_ASN1_IA5STRING) + { +#ifdef HAVE_ASN1_STRING_GET0_DATA + data = ASN1_STRING_get0_data (altname->d.dNSName); +#else + data = ASN1_STRING_data (altname->d.dNSName); +#endif + + if (ASN1_STRING_length (altname->d.dNSName) != (int)strlen(data)) + { + g_warning("NUL byte in subjectAltName, probably a malicious certificate.\n"); + rv = -2; + break; + } + + if (_SSL_match_hostname (data, host) == 0) + { + rv = 0; + break; + } + } + else + g_warning ("unhandled subjectAltName dNSName encoding (%d)\n", format); + + } + else if (type == GEN_IPADD) + { + const unsigned char *data; + const guint8 *addr_bytes; + int datalen, addr_len; + + datalen = ASN1_STRING_length (altname->d.iPAddress); +#ifdef HAVE_ASN1_STRING_GET0_DATA + data = ASN1_STRING_get0_data (altname->d.iPAddress); +#else + data = ASN1_STRING_data (altname->d.iPAddress); +#endif + + addr_bytes = g_inet_address_to_bytes (addr); + addr_len = (int)g_inet_address_get_native_size (addr); + + if (datalen == addr_len && memcmp (data, addr_bytes, addr_len) == 0) + { + rv = 0; + break; + } + } + } + + if (addr != NULL) + g_object_unref (addr); + sk_GENERAL_NAME_pop_free (altname_stack, GENERAL_NAME_free); + return rv; +} + +static int +_SSL_check_common_name (X509 *cert, const char *host) +{ + X509_NAME *name; + char *common_name = NULL; + int common_name_len; + int rv = -1; + GInetAddress *addr; + + name = X509_get_subject_name (cert); + if (name == NULL) + return -1; + + common_name_len = X509_NAME_get_text_by_NID (name, NID_commonName, NULL, 0); + if (common_name_len < 0) + return -1; + + common_name = g_malloc0 (common_name_len + 1); + + X509_NAME_get_text_by_NID (name, NID_commonName, common_name, common_name_len + 1); + + /* NUL bytes in CN? */ + if (common_name_len != (int)strlen(common_name)) + { + g_warning ("NUL byte in Common Name field, probably a malicious certificate.\n"); + rv = -2; + goto out; + } + + if ((addr = g_inet_address_new_from_string (host)) != NULL) + { + /* + * We don't want to attempt wildcard matching against IP + * addresses, so perform a simple comparison here. + */ + if (g_strcmp0 (common_name, host) == 0) + rv = 0; + else + rv = -1; + + g_object_unref (addr); + } + else if (_SSL_match_hostname (common_name, host) == 0) + rv = 0; + +out: + g_free(common_name); + return rv; +} + +int +_SSL_check_hostname (X509 *cert, const char *host) +{ + int rv; + + rv = _SSL_check_subject_altname (cert, host); + if (rv == 0 || rv == -2) + return rv; + + return _SSL_check_common_name (cert, host); +} diff --git a/hexchat/src/common/ssl.h b/hexchat/src/common/ssl.h new file mode 100644 index 0000000..bea2f44 --- /dev/null +++ b/hexchat/src/common/ssl.h @@ -0,0 +1,85 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_SSL_H +#define HEXCHAT_SSL_H + +struct cert_info { + char subject[256]; + char *subject_word[12]; + char issuer[256]; + char *issuer_word[12]; + char algorithm[32]; + int algorithm_bits; + char sign_algorithm[32]; + int sign_algorithm_bits; + char notbefore[32]; + char notafter[32]; + + int rsa_tmp_bits; +}; + +struct chiper_info { + char version[16]; + char chiper[48]; + int chiper_bits; +}; + +SSL_CTX *_SSL_context_init (void (*info_cb_func)); +#define _SSL_context_free(a) SSL_CTX_free(a); + +SSL *_SSL_socket (SSL_CTX *ctx, int sd); +char *_SSL_set_verify (SSL_CTX *ctx, void *(verify_callback)); +/* + int SSL_connect(SSL *); + int SSL_accept(SSL *); + int SSL_get_fd(SSL *); +*/ +void _SSL_close (SSL * ssl); +int _SSL_check_hostname(X509 *cert, const char *host); +int _SSL_get_cert_info (struct cert_info *cert_info, SSL * ssl); +struct chiper_info *_SSL_get_cipher_info (SSL * ssl); + +/*char *_SSL_add_keypair (SSL_CTX *ctx, char *privkey, char *cert);*/ +/*void _SSL_add_random_keypair(SSL_CTX *ctx, int bits);*/ + +int _SSL_send (SSL * ssl, char *buf, int len); +int _SSL_recv (SSL * ssl, char *buf, int len); + +/* misc */ +/*void broke_oneline (char *oneline, char *parray[]);*/ + +/*char *_SSL_do_cipher_base64(char *buf, int buf_len, char *key, int operation);*/ /* must be freed */ + +/*void *_SSL_get_sess_obj(SSL *ssl, int type);*/ /* NOT must be freed */ +#define _SSL_get_sess_pkey(a) _SSL_get_sess_obj(a, 0) +#define _SSL_get_sess_prkey(a) _SSL_get_sess_obj(a, 1) +#define _SSL_get_sess_x509(a) _SSL_get_sess_obj(a, 2) +/*char *_SSL_get_obj_base64(void *s, int type);*/ /* must be freed */ +#define _SSL_get_pkey_base64(a) _SSL_get_obj_base64(a, 0) +#define _SSL_get_prkey_base64(a) _SSL_get_obj_base64(a, 1) +#define _SSL_get_x509_base64(a) _SSL_get_obj_base64(a, 2) +/*char *_SSL_get_ctx_obj_base64(SSL_CTX *ctx, int type);*/ /* must be freed */ +#define _SSL_get_ctx_pkey_base64(a) _SSL_get_ctx_obj_base64(a, 0) +#define _SSL_get_ctx_prkey_base64(a) _SSL_get_ctx_obj_base64(a, 1) +#define _SSL_get_ctx_x509_base64(a) _SSL_get_ctx_obj_base64(a, 2) + +/*int _SSL_verify_x509(X509 *x509);*/ + +#endif diff --git a/hexchat/src/common/sysinfo/sysinfo.h b/hexchat/src/common/sysinfo/sysinfo.h new file mode 100644 index 0000000..d63bf9d --- /dev/null +++ b/hexchat/src/common/sysinfo/sysinfo.h @@ -0,0 +1,13 @@ +#ifndef HEXCHAT_SYSINFO_H +#define HEXCHAT_SYSINFO_H + +#include <glib.h> + +int sysinfo_get_cpu_arch (void); +int sysinfo_get_build_arch (void); +char *sysinfo_get_cpu (void); +char *sysinfo_get_os (void); +void sysinfo_get_hdd_info (guint64 *hdd_capacity_out, guint64 *hdd_free_space_out); +char *sysinfo_get_gpu (void); + +#endif diff --git a/hexchat/src/common/sysinfo/win32/backend.c b/hexchat/src/common/sysinfo/win32/backend.c new file mode 100644 index 0000000..e2ae83e --- /dev/null +++ b/hexchat/src/common/sysinfo/win32/backend.c @@ -0,0 +1,483 @@ +/* HexChat + * Copyright (c) 2011-2012 Berke Viktor. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include <stdio.h> +#include <wchar.h> +#include <windows.h> +#include <wbemidl.h> + +#include "../sysinfo.h" + +/* Cache */ +static int cpu_arch = 0; +static int build_arch = 0; +static char *os_name = NULL; +static char *cpu_info = NULL; +static char *vga_name = NULL; + +typedef enum +{ + QUERY_WMI_OS, + QUERY_WMI_CPU, + QUERY_WMI_VGA, + QUERY_WMI_HDD, +} QueryWmiType; + +static char *query_wmi (QueryWmiType mode); +static char *read_os_name (IWbemClassObject *object); +static char *read_cpu_info (IWbemClassObject *object); +static char *read_vga_name (IWbemClassObject *object); + +static guint64 hdd_capacity; +static guint64 hdd_free_space; +static char *read_hdd_info (IWbemClassObject *object); + +static char *bstr_to_utf8 (BSTR bstr); +static guint64 variant_to_uint64 (VARIANT *variant); + +char * +sysinfo_get_cpu (void) +{ + if (cpu_info == NULL) + cpu_info = query_wmi (QUERY_WMI_CPU); + + return g_strdup (cpu_info); +} + +char * +sysinfo_get_os (void) +{ + if (os_name == NULL) + os_name = query_wmi (QUERY_WMI_OS); + + return g_strdup_printf ("%s (x%d)", os_name, sysinfo_get_cpu_arch ()); +} + +int +sysinfo_get_cpu_arch (void) +{ + SYSTEM_INFO si; + + if (cpu_arch != 0) + { + return cpu_arch; + } + + GetNativeSystemInfo (&si); + + if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64 || + si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_ARM64) + { + return cpu_arch = 64; + } + else + { + return cpu_arch = 86; + } +} + +int +sysinfo_get_build_arch (void) +{ + SYSTEM_INFO si; + + if (build_arch != 0) + { + return build_arch; + } + + GetSystemInfo (&si); + + if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64 || + si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_ARM64) + { + return build_arch = 64; + } + else + { + return build_arch = 86; + } +} + +char * +sysinfo_get_gpu (void) +{ + if (vga_name == NULL) + vga_name = query_wmi (QUERY_WMI_VGA); + + return g_strdup (vga_name); +} + +void +sysinfo_get_hdd_info (guint64 *hdd_capacity_out, guint64 *hdd_free_space_out) +{ + char *hdd_info; + + /* HDD information is always loaded dynamically since it includes the current amount of free space */ + *hdd_capacity_out = hdd_capacity = 0; + *hdd_free_space_out = hdd_free_space = 0; + + hdd_info = query_wmi (QUERY_WMI_HDD); + if (hdd_info == NULL) + { + return; + } + + *hdd_capacity_out = hdd_capacity; + *hdd_free_space_out = hdd_free_space; +} + +/* https://msdn.microsoft.com/en-us/library/aa390423 */ +static char *query_wmi (QueryWmiType type) +{ + GString *result = NULL; + HRESULT hr; + + IWbemLocator *locator = NULL; + BSTR namespaceName = NULL; + BSTR queryLanguageName = NULL; + BSTR query = NULL; + IWbemServices *namespace = NULL; + IUnknown *namespaceUnknown = NULL; + IEnumWbemClassObject *enumerator = NULL; + int i; + gboolean atleast_one_appended = FALSE; + + hr = CoCreateInstance (&CLSID_WbemLocator, 0, CLSCTX_INPROC_SERVER, &IID_IWbemLocator, (LPVOID *) &locator); + if (FAILED (hr)) + { + goto exit; + } + + namespaceName = SysAllocString (L"root\\CIMV2"); + + hr = locator->lpVtbl->ConnectServer (locator, namespaceName, NULL, NULL, NULL, 0, NULL, NULL, &namespace); + if (FAILED (hr)) + { + goto release_locator; + } + + hr = namespace->lpVtbl->QueryInterface (namespace, &IID_IUnknown, (void**)&namespaceUnknown); + if (FAILED (hr)) + { + goto release_namespace; + } + + hr = CoSetProxyBlanket (namespaceUnknown, RPC_C_AUTHN_WINNT, RPC_C_AUTHZ_NONE, NULL, RPC_C_AUTHN_LEVEL_CALL, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE); + if (FAILED (hr)) + { + goto release_namespaceUnknown; + } + + queryLanguageName = SysAllocString (L"WQL"); + + switch (type) + { + case QUERY_WMI_OS: + query = SysAllocString (L"SELECT Caption FROM Win32_OperatingSystem"); + break; + case QUERY_WMI_CPU: + query = SysAllocString (L"SELECT Name, MaxClockSpeed FROM Win32_Processor"); + break; + case QUERY_WMI_VGA: + query = SysAllocString (L"SELECT Name FROM Win32_VideoController"); + break; + case QUERY_WMI_HDD: + query = SysAllocString (L"SELECT Name, Capacity, FreeSpace FROM Win32_Volume"); + break; + default: + goto release_queryLanguageName; + } + + hr = namespace->lpVtbl->ExecQuery (namespace, queryLanguageName, query, WBEM_FLAG_FORWARD_ONLY, NULL, &enumerator); + if (FAILED (hr)) + { + goto release_query; + } + + result = g_string_new (""); + + for (i = 0;; i++) + { + ULONG numReturned = 0; + IWbemClassObject *object; + char *line; + + hr = enumerator->lpVtbl->Next (enumerator, WBEM_INFINITE, 1, &object, &numReturned); + if (FAILED (hr) || numReturned == 0) + { + break; + } + + switch (type) + { + case QUERY_WMI_OS: + line = read_os_name (object); + break; + + case QUERY_WMI_CPU: + line = read_cpu_info (object); + break; + + case QUERY_WMI_VGA: + line = read_vga_name (object); + break; + + case QUERY_WMI_HDD: + line = read_hdd_info (object); + break; + + default: + break; + } + + object->lpVtbl->Release (object); + + if (line != NULL) + { + if (atleast_one_appended) + { + g_string_append (result, ", "); + } + + g_string_append (result, line); + + g_free (line); + + atleast_one_appended = TRUE; + } + } + + enumerator->lpVtbl->Release (enumerator); + +release_query: + SysFreeString (query); + +release_queryLanguageName: + SysFreeString (queryLanguageName); + +release_namespaceUnknown: + namespaceUnknown->lpVtbl->Release (namespaceUnknown); + +release_namespace: + namespace->lpVtbl->Release (namespace); + +release_locator: + locator->lpVtbl->Release (locator); + SysFreeString (namespaceName); + +exit: + if (result == NULL) + { + return NULL; + } + + return g_string_free (result, FALSE); +} + +static char *read_os_name (IWbemClassObject *object) +{ + HRESULT hr; + VARIANT caption_variant; + char *caption_utf8; + + hr = object->lpVtbl->Get (object, L"Caption", 0, &caption_variant, NULL, NULL); + if (FAILED (hr)) + { + return NULL; + } + + caption_utf8 = bstr_to_utf8 (caption_variant.bstrVal); + + VariantClear(&caption_variant); + + if (caption_utf8 == NULL) + { + return NULL; + } + + g_strchomp (caption_utf8); + + return caption_utf8; +} + +static char *read_cpu_info (IWbemClassObject *object) +{ + HRESULT hr; + VARIANT name_variant; + char *name_utf8; + VARIANT max_clock_speed_variant; + guint cpu_freq_mhz; + char *result; + + hr = object->lpVtbl->Get (object, L"Name", 0, &name_variant, NULL, NULL); + if (FAILED (hr)) + { + return NULL; + } + + name_utf8 = bstr_to_utf8 (name_variant.bstrVal); + + VariantClear (&name_variant); + + if (name_utf8 == NULL) + { + return NULL; + } + + hr = object->lpVtbl->Get (object, L"MaxClockSpeed", 0, &max_clock_speed_variant, NULL, NULL); + if (FAILED (hr)) + { + g_free (name_utf8); + + return NULL; + } + + cpu_freq_mhz = max_clock_speed_variant.uintVal; + + VariantClear (&max_clock_speed_variant); + + g_strchomp (name_utf8); + + if (cpu_freq_mhz > 1000) + { + result = g_strdup_printf ("%s (%.2fGHz)", name_utf8, cpu_freq_mhz / 1000.f); + } + else + { + result = g_strdup_printf ("%s (%" G_GUINT32_FORMAT "MHz)", name_utf8, cpu_freq_mhz); + } + + g_free (name_utf8); + + return result; +} + +static char *read_vga_name (IWbemClassObject *object) +{ + HRESULT hr; + VARIANT name_variant; + char *name_utf8; + + hr = object->lpVtbl->Get (object, L"Name", 0, &name_variant, NULL, NULL); + if (FAILED (hr)) + { + return NULL; + } + + name_utf8 = bstr_to_utf8 (name_variant.bstrVal); + + VariantClear (&name_variant); + + if (name_utf8 == NULL) + { + return NULL; + } + + return g_strchomp (name_utf8); +} + +static char *read_hdd_info (IWbemClassObject *object) +{ + HRESULT hr; + VARIANT name_variant; + BSTR name_bstr; + gsize name_len; + VARIANT capacity_variant; + guint64 capacity; + VARIANT free_space_variant; + guint64 free_space; + + hr = object->lpVtbl->Get (object, L"Name", 0, &name_variant, NULL, NULL); + if (FAILED (hr)) + { + return NULL; + } + + name_bstr = name_variant.bstrVal; + name_len = SysStringLen (name_variant.bstrVal); + + if (name_len >= 4 && name_bstr[0] == L'\\' && name_bstr[1] == L'\\' && name_bstr[2] == L'?' && name_bstr[3] == L'\\') + { + // This is not a named volume. Skip it. + VariantClear (&name_variant); + + return NULL; + } + + VariantClear (&name_variant); + + hr = object->lpVtbl->Get (object, L"Capacity", 0, &capacity_variant, NULL, NULL); + if (FAILED (hr)) + { + return NULL; + } + + capacity = variant_to_uint64 (&capacity_variant); + + VariantClear (&capacity_variant); + + if (capacity == 0) + { + return NULL; + } + + hr = object->lpVtbl->Get (object, L"FreeSpace", 0, &free_space_variant, NULL, NULL); + if (FAILED (hr)) + { + return NULL; + } + + free_space = variant_to_uint64 (&free_space_variant); + + VariantClear (&free_space_variant); + + if (free_space == 0) + { + return NULL; + } + + hdd_capacity += capacity; + hdd_free_space += free_space; + + return NULL; +} + +static char *bstr_to_utf8 (BSTR bstr) +{ + return g_utf16_to_utf8 (bstr, SysStringLen (bstr), NULL, NULL, NULL); +} + +static guint64 variant_to_uint64 (VARIANT *variant) +{ + switch (V_VT (variant)) + { + case VT_UI8: + return variant->ullVal; + + case VT_BSTR: + return wcstoull (variant->bstrVal, NULL, 10); + + default: + return 0; + } +} diff --git a/hexchat/src/common/text.c b/hexchat/src/common/text.c new file mode 100644 index 0000000..a77700f --- /dev/null +++ b/hexchat/src/common/text.c @@ -0,0 +1,2370 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <ctype.h> +#include <time.h> +#include <sys/types.h> +#include <fcntl.h> +#include <sys/stat.h> + +#ifdef WIN32 +#include <io.h> +#else +#include <unistd.h> +#include <sys/mman.h> +#endif + +#include "hexchat.h" +#include "cfgfiles.h" +#include "chanopt.h" +#include "plugin.h" +#include "fe.h" +#include "server.h" +#include "util.h" +#include "outbound.h" +#include "hexchatc.h" +#include "text.h" +#include "typedef.h" +#ifdef WIN32 +#include <windows.h> +#endif + +#ifdef USE_LIBCANBERRA +#include <canberra.h> +#endif + +const gchar* unicode_fallback_string = "\357\277\275"; /* The Unicode replacement character 0xFFFD */ +const gchar* arbitrary_encoding_fallback_string = "?"; + +struct pevt_stage1 +{ + int len; + char *data; + struct pevt_stage1 *next; +}; + +#ifdef USE_LIBCANBERRA +static ca_context *ca_con; +#endif + +#define SCROLLBACK_MAX 32000 + +static void mkdir_p (char *filename); +static char *log_create_filename (char *channame); + +static char * +scrollback_get_filename (session *sess) +{ + char *net, *chan, *buf, *ret = NULL; + + net = server_get_network (sess->server, FALSE); + if (!net) + return NULL; + + net = log_create_filename (net); + buf = g_strdup_printf ("%s" G_DIR_SEPARATOR_S "scrollback" G_DIR_SEPARATOR_S "%s" G_DIR_SEPARATOR_S "%s.txt", get_xdir (), net, ""); + mkdir_p (buf); + g_free (buf); + + chan = log_create_filename (sess->channel); + if (chan[0]) + buf = g_strdup_printf ("%s" G_DIR_SEPARATOR_S "scrollback" G_DIR_SEPARATOR_S "%s" G_DIR_SEPARATOR_S "%s.txt", get_xdir (), net, chan); + else + buf = NULL; + g_free (chan); + g_free (net); + + if (buf) + { + ret = g_filename_from_utf8 (buf, -1, NULL, NULL, NULL); + g_free (buf); + } + + return ret; +} + +void +scrollback_close (session *sess) +{ + g_clear_object (&sess->scrollfile); +} + +/* shrink the file to roughly prefs.hex_text_max_lines */ + +static void +scrollback_shrink (session *sess) +{ + char *buf, *p; + gsize len; + gint offset, lines = 0; + const gint max_lines = MIN(prefs.hex_text_max_lines, SCROLLBACK_MAX); + + if (!g_file_load_contents (sess->scrollfile, NULL, &buf, &len, NULL, NULL)) + return; + + /* count all lines */ + p = buf; + while (p != buf + len) + { + if (*p == '\n') + lines++; + p++; + } + + offset = lines - max_lines; + + /* now just go back to where we want to start the file */ + p = buf; + lines = 0; + while (p != buf + len) + { + if (*p == '\n') + { + lines++; + if (lines == offset) + { + p++; + break; + } + } + p++; + } + + if (g_file_replace_contents (sess->scrollfile, p, strlen(p), NULL, FALSE, + G_FILE_CREATE_PRIVATE, NULL, NULL, NULL)) + sess->scrollwritten = lines; + + g_free (buf); +} + +static void +scrollback_save (session *sess, char *text, time_t stamp) +{ + GOutputStream *ostream; + char *buf; + + if (sess->type == SESS_SERVER && prefs.hex_gui_tab_server == 1) + return; + + if (sess->text_scrollback == SET_DEFAULT) + { + if (!prefs.hex_text_replay) + return; + } + else + { + if (sess->text_scrollback != SET_ON) + return; + } + + if (!sess->scrollfile) + { + if ((buf = scrollback_get_filename (sess)) == NULL) + return; + + sess->scrollfile = g_file_new_for_path (buf); + g_free (buf); + } + else + { + /* Users can delete the folder after it's created... */ + GFile *parent = g_file_get_parent (sess->scrollfile); + g_file_make_directory_with_parents (parent, NULL, NULL); + g_object_unref (parent); + } + + ostream = G_OUTPUT_STREAM(g_file_append_to (sess->scrollfile, G_FILE_CREATE_PRIVATE, NULL, NULL)); + if (!ostream) + return; + + if (!stamp) + stamp = time(0); + if (sizeof (stamp) == 4) /* gcc will optimize one of these out */ + buf = g_strdup_printf ("T %d ", (int) stamp); + else + buf = g_strdup_printf ("T %" G_GINT64_FORMAT " ", (gint64)stamp); + + g_output_stream_write (ostream, buf, strlen (buf), NULL, NULL); + g_output_stream_write (ostream, text, strlen (text), NULL, NULL); + if (!g_str_has_suffix (text, "\n")) + g_output_stream_write (ostream, "\n", 1, NULL, NULL); + + g_free (buf); + g_object_unref (ostream); + + sess->scrollwritten++; + + if ((sess->scrollwritten > prefs.hex_text_max_lines && prefs.hex_text_max_lines > 0) || + sess->scrollwritten > SCROLLBACK_MAX) + scrollback_shrink (sess); +} + +void +scrollback_load (session *sess) +{ + GInputStream *stream; + GDataInputStream *istream; + gchar *buf, *text; + gint lines = 0; + time_t stamp = 0; + + if (sess->text_scrollback == SET_DEFAULT) + { + if (!prefs.hex_text_replay) + return; + } + else + { + if (sess->text_scrollback != SET_ON) + return; + } + + if (!sess->scrollfile) + { + if ((buf = scrollback_get_filename (sess)) == NULL) + return; + + sess->scrollfile = g_file_new_for_path (buf); + g_free (buf); + } + + stream = G_INPUT_STREAM(g_file_read (sess->scrollfile, NULL, NULL)); + if (!stream) + return; + + istream = g_data_input_stream_new (stream); + /* + * This is to avoid any issues moving between windows/unix + * but the docs mention an invalid \r without a following \n + * can lock up the program... (Our write() always adds \n) + */ + g_data_input_stream_set_newline_type (istream, G_DATA_STREAM_NEWLINE_TYPE_ANY); + g_object_unref (stream); + + while (1) + { + GError *err = NULL; + gsize n_bytes; + + buf = g_data_input_stream_read_line_utf8 (istream, &n_bytes, NULL, &err); + + if (!err && buf) + { + /* + * Some scrollback lines have three blanks after the timestamp and a newline + * Some have only one blank and a newline + * Some don't even have a timestamp + * Some don't have any text at all + */ + if (buf[0] == 'T' && buf[1] == ' ') + { + if (sizeof (time_t) == 4) + stamp = strtoul (buf + 2, NULL, 10); + else + stamp = g_ascii_strtoull (buf + 2, NULL, 10); /* in case time_t is 64 bits */ + + if (G_UNLIKELY(stamp == 0)) + { + g_warning ("Invalid timestamp in scrollback file"); + continue; + } + + text = strchr (buf + 3, ' '); + if (text && text[1]) + { + if (prefs.hex_text_stripcolor_replay) + { + text = strip_color (text + 1, -1, STRIP_COLOR); + } + + fe_print_text (sess, text, stamp, TRUE); + + if (prefs.hex_text_stripcolor_replay) + { + g_free (text); + } + } + else + { + fe_print_text (sess, " ", stamp, TRUE); + } + } + else + { + if (strlen (buf)) + fe_print_text (sess, buf, 0, TRUE); + else + fe_print_text (sess, " ", 0, TRUE); + } + lines++; + + g_free (buf); + } + else if (err) + { + /* If its only an encoding error it may be specific to the line */ + if (g_error_matches (err, G_CONVERT_ERROR, G_CONVERT_ERROR_ILLEGAL_SEQUENCE)) + { + g_warning ("Invalid utf8 in scrollback file"); + g_clear_error (&err); + continue; + } + + /* For general errors just give up */ + g_clear_error (&err); + break; + } + else /* No new line */ + { + break; + } + } + + g_object_unref (istream); + + sess->scrollwritten = lines; + + if (lines) + { + text = ctime (&stamp); + buf = g_strdup_printf ("\n*\t%s %s\n", _("Loaded log from"), text); + fe_print_text (sess, buf, 0, TRUE); + g_free (buf); + /*EMIT_SIGNAL (XP_TE_GENMSG, sess, "*", buf, NULL, NULL, NULL, 0);*/ + } +} + +void +log_close (session *sess) +{ + char obuf[512]; + time_t currenttime; + + if (sess->logfd != -1) + { + currenttime = time (NULL); + write (sess->logfd, obuf, + g_snprintf (obuf, sizeof (obuf) - 1, _("**** ENDING LOGGING AT %s\n"), + ctime (¤ttime))); + close (sess->logfd); + sess->logfd = -1; + } +} + +/* + * filename should be in utf8 encoding and will be + * converted to filesystem encoding automatically. + */ +static void +mkdir_p (char *filename) +{ + char *dirname, *dirname_fs; + GError *err = NULL; + + dirname = g_path_get_dirname (filename); + dirname_fs = g_filename_from_utf8 (dirname, -1, NULL, NULL, &err); + if (!dirname_fs) + { + g_warning ("%s", err->message); + g_error_free (err); + g_free (dirname); + return; + } + + g_mkdir_with_parents (dirname_fs, 0700); + + g_free (dirname); + g_free (dirname_fs); +} + +static char * +log_create_filename (char *channame) +{ + char *tmp, *ret; + int mbl; + + ret = tmp = g_strdup (channame); + while (*tmp) + { + mbl = g_utf8_skip[((unsigned char *)tmp)[0]]; + if (mbl == 1) + { +#ifndef WIN32 + *tmp = rfc_tolower (*tmp); + if (*tmp == '/') +#else + /* win32 can't handle filenames with \|/><:"*? characters */ + if (*tmp == '\\' || *tmp == '|' || *tmp == '/' || + *tmp == '>' || *tmp == '<' || *tmp == ':' || + *tmp == '\"' || *tmp == '*' || *tmp == '?') +#endif + *tmp = '_'; + } + tmp += mbl; + } + + return ret; +} + +/* like strcpy, but % turns into %% */ + +static char * +log_escape_strcpy (char *dest, char *src, char *end) +{ + while (*src) + { + *dest = *src; + if (dest + 1 == end) + break; + dest++; + src++; + + if (*src == '%') + { + if (dest + 1 == end) + break; + dest[0] = '%'; + dest++; + } + } + + dest[0] = 0; + return dest - 1; +} + +/* substitutes %c %n %s into buffer */ + +static void +log_insert_vars (char *buf, int bufsize, char *fmt, char *c, char *n, char *s) +{ + char *end = buf + bufsize; + + while (1) + { + switch (fmt[0]) + { + case 0: + buf[0] = 0; + return; + + case '%': + fmt++; + switch (fmt[0]) + { + case 'c': + buf = log_escape_strcpy (buf, c, end); + break; + case 'n': + buf = log_escape_strcpy (buf, n, end); + break; + case 's': + buf = log_escape_strcpy (buf, s, end); + break; + default: + buf[0] = '%'; + buf++; + buf[0] = fmt[0]; + break; + } + break; + + default: + buf[0] = fmt[0]; + } + fmt++; + buf++; + /* doesn't fit? */ + if (buf == end) + { + buf[-1] = 0; + return; + } + } +} + +static char * +log_create_pathname (char *servname, char *channame, char *netname) +{ + char fname[384]; + char fnametime[384]; + time_t now; + + if (!netname) + { + netname = g_strdup ("NETWORK"); + } + else + { + netname = log_create_filename (netname); + } + + /* first, everything is in UTF-8 */ + if (!rfc_casecmp (channame, servname)) + { + channame = g_strdup ("server"); + } + else + { + channame = log_create_filename (channame); + } + + servname = log_create_filename (servname); + + log_insert_vars (fname, sizeof (fname), prefs.hex_irc_logmask, channame, netname, servname); + g_free (channame); + g_free (netname); + g_free (servname); + + /* insert time/date */ + now = time (NULL); + strftime_utf8 (fnametime, sizeof (fnametime), fname, now); + + /* If one uses log mask variables, such as "%c/...", %c will be empty upon + * connecting since there's no channel name yet, so we have to make sure + * we won't try to write to the FS root. */ + if (g_path_is_absolute (prefs.hex_irc_logmask)) + { + g_snprintf (fname, sizeof (fname), "%s", fnametime); + } + else /* relative path */ + { + g_snprintf (fname, sizeof (fname), "%s" G_DIR_SEPARATOR_S "logs" G_DIR_SEPARATOR_S "%s", get_xdir (), fnametime); + } + + /* create all the subdirectories */ + mkdir_p (fname); + + return g_strdup (fname); +} + +static int +log_open_file (char *servname, char *channame, char *netname) +{ + char buf[512]; + int fd; + char *file; + time_t currenttime; + + file = log_create_pathname (servname, channame, netname); + if (!file) + return -1; + + fd = g_open (file, O_CREAT | O_APPEND | O_WRONLY | OFLAGS, 0644); + g_free (file); + + if (fd == -1) + return -1; + currenttime = time (NULL); + write (fd, buf, + g_snprintf (buf, sizeof (buf), _("**** BEGIN LOGGING AT %s\n"), + ctime (¤ttime))); + + return fd; +} + +static void +log_open (session *sess) +{ + static gboolean log_error = FALSE; + + log_close (sess); + sess->logfd = log_open_file (sess->server->servername, sess->channel, + server_get_network (sess->server, FALSE)); + + if (!log_error && sess->logfd == -1) + { + char *filename = log_create_pathname (sess->server->servername, sess->channel, server_get_network (sess->server, FALSE)); + char *message = g_strdup_printf (_("* Can't open log file(s) for writing. Check the\npermissions on %s"), filename); + + g_free (filename); + + fe_message (message, FE_MSG_WAIT | FE_MSG_ERROR); + + g_free (message); + + log_error = TRUE; + } +} + +void +log_open_or_close (session *sess) +{ + if (sess->text_logging == SET_DEFAULT) + { + if (prefs.hex_irc_logging) + log_open (sess); + else + log_close (sess); + } + else + { + if (sess->text_logging) + log_open (sess); + else + log_close (sess); + } +} + +int +get_stamp_str (char *fmt, time_t tim, char **ret) +{ + char dest[128]; + gsize len_locale; + gsize len_utf8; + + /* strftime requires the format string to be in locale encoding. */ + fmt = g_locale_from_utf8 (fmt, -1, NULL, NULL, NULL); + + len_locale = strftime_validated (dest, sizeof (dest), fmt, localtime (&tim)); + + g_free (fmt); + + if (len_locale == 0) + { + return 0; + } + + *ret = g_locale_to_utf8 (dest, len_locale, NULL, &len_utf8, NULL); + if (*ret == NULL) + { + return 0; + } + + return len_utf8; +} + +static void +log_write (session *sess, char *text, time_t ts) +{ + char *temp; + char *stamp; + char *file; + int len; + + if (sess->text_logging == SET_DEFAULT) + { + if (!prefs.hex_irc_logging) + return; + } + else + { + if (sess->text_logging != SET_ON) + return; + } + + if (sess->logfd == -1) + { + log_open (sess); + } + + /* change to a different log file? */ + file = log_create_pathname (sess->server->servername, sess->channel, server_get_network (sess->server, FALSE)); + if (file) + { + if (g_access (file, F_OK) != 0) + { + if (sess->logfd != -1) + { + close (sess->logfd); + } + + sess->logfd = log_open_file (sess->server->servername, sess->channel, server_get_network (sess->server, FALSE)); + } + + g_free (file); + } + + if (sess->logfd == -1) + { + return; + } + + if (prefs.hex_stamp_log) + { + if (!ts) ts = time(0); + len = get_stamp_str (prefs.hex_stamp_log_format, ts, &stamp); + if (len) + { + write (sess->logfd, stamp, len); + g_free (stamp); + } + } + + temp = strip_color (text, -1, STRIP_ALL); + len = strlen (temp); + write (sess->logfd, temp, len); + /* lots of scripts/plugins print without a \n at the end */ + if (temp[len - 1] != '\n') + write (sess->logfd, "\n", 1); /* emulate what xtext would display */ + g_free (temp); +} + +/** + * Converts a given string using the given iconv converter. This is similar to g_convert_with_fallback, except that it is tolerant of sequences in + * the original input that are invalid even in from_encoding. g_convert_with_fallback fails for such text, whereas this function replaces such a + * sequence with the fallback string. + * + * If len is -1, strlen(text) is used to calculate the length. Do not pass -1 if text is supposed to contain \0 bytes, such as if from_encoding is a + * multi-byte encoding like UTF-16. + */ +gchar * +text_convert_invalid (const gchar* text, gssize len, GIConv converter, const gchar *fallback, gsize *len_out) +{ + gchar *result_part; + gsize result_part_len; + const gchar *end; + gsize invalid_start_pos; + GString *result; + const gchar *current_start; + + if (len == -1) + { + len = strlen (text); + } + + end = text + len; + + /* Find the first position of an invalid sequence. */ + result_part = g_convert_with_iconv (text, len, converter, &invalid_start_pos, &result_part_len, NULL); + g_iconv (converter, NULL, NULL, NULL, NULL); + + if (result_part != NULL) + { + /* All text converted successfully on the first try. Return it. */ + + if (len_out != NULL) + { + *len_out = result_part_len; + } + + return result_part; + } + + /* One or more invalid sequences exist that need to be replaced with the fallback. */ + + result = g_string_sized_new (len); + current_start = text; + + for (;;) + { + g_assert (current_start + invalid_start_pos < end); + + /* Convert everything before the position of the invalid sequence. It should be successful. + * But iconv may not convert everything till invalid_start_pos since the last few bytes may be part of a shift sequence. + * So get the new bytes_read and use it as the actual invalid_start_pos to handle this. + * + * See https://github.com/hexchat/hexchat/issues/1758 + */ + result_part = g_convert_with_iconv (current_start, invalid_start_pos, converter, &invalid_start_pos, &result_part_len, NULL); + g_iconv (converter, NULL, NULL, NULL, NULL); + + g_assert (result_part != NULL); + g_string_append_len (result, result_part, result_part_len); + g_free (result_part); + + /* Append the fallback */ + g_string_append (result, fallback); + + /* Now try converting everything after the invalid sequence. */ + current_start += invalid_start_pos + 1; + + result_part = g_convert_with_iconv (current_start, end - current_start, converter, &invalid_start_pos, &result_part_len, NULL); + g_iconv (converter, NULL, NULL, NULL, NULL); + + if (result_part != NULL) + { + /* The rest of the text converted successfully. Append it and return the whole converted text. */ + + g_string_append_len (result, result_part, result_part_len); + g_free (result_part); + + if (len_out != NULL) + { + *len_out = result->len; + } + + return g_string_free (result, FALSE); + } + + /* The rest of the text didn't convert successfully. invalid_start_pos has the position of the next invalid sequence. */ + } +} + +/** + * Replaces any invalid UTF-8 in the given text with the unicode replacement character. + */ +gchar * +text_fixup_invalid_utf8 (const gchar* text, gssize len, gsize *len_out) +{ +#if GLIB_CHECK_VERSION (2, 52, 0) +G_GNUC_BEGIN_IGNORE_DEPRECATIONS + gchar *result = g_utf8_make_valid (text, len); +G_GNUC_END_IGNORE_DEPRECATIONS + if (len_out) + { + *len_out = strlen (result); + } + return result; +#else + static GIConv utf8_fixup_converter = NULL; + if (utf8_fixup_converter == NULL) + { + utf8_fixup_converter = g_iconv_open ("UTF-8", "UTF-8"); + } + + return text_convert_invalid (text, len, utf8_fixup_converter, unicode_fallback_string, len_out); +#endif +} + +void +PrintTextTimeStamp (session *sess, char *text, time_t timestamp) +{ + if (!sess) + { + if (!sess_list) + return; + sess = (session *) sess_list->data; + } + + /* make sure it's valid utf8 */ + if (text[0] == '\0') + { + text = g_strdup ("\n"); + } + else + { + text = text_fixup_invalid_utf8 (text, -1, NULL); + } + + log_write (sess, text, timestamp); + scrollback_save (sess, text, timestamp); + fe_print_text (sess, text, timestamp, FALSE); + g_free (text); +} + +void +PrintText (session *sess, char *text) +{ + PrintTextTimeStamp (sess, text, 0); +} + +void +PrintTextf (session *sess, const char *format, ...) +{ + va_list args; + char *buf; + + va_start (args, format); + buf = g_strdup_vprintf (format, args); + va_end (args); + + PrintText (sess, buf); + g_free (buf); +} + +void +PrintTextTimeStampf (session *sess, time_t timestamp, const char *format, ...) +{ + va_list args; + char *buf; + + va_start (args, format); + buf = g_strdup_vprintf (format, args); + va_end (args); + + PrintTextTimeStamp (sess, buf, timestamp); + g_free (buf); +} + +/* Print Events stuff here --AGL */ + +/* Consider the following a NOTES file: + + The main upshot of this is: + * Plugins and Perl scripts (when I get round to signaling perl.c) can intercept text events and do what they like + * The default text engine can be config'ed + + By default it should appear *exactly* the same (I'm working hard not to change the default style) but if you go into Settings->Edit Event Texts you can change the text's. The format is thus: + + The normal %Cx (color) and %B (bold) etc work + + $x is replaced with the data in var x (e.g. $1 is often the nick) + + $axxx is replace with a single byte of value xxx (in base 10) + + AGL (990507) + */ + +/* These lists are thus: + pntevts_text[] are the strings the user sees (WITH %x etc) + pntevts[] are the data strings with \000 etc + */ + +/* To add a new event: + + Think up a name (like "Join") + Make up a pevt_name_help struct + Add an entry to textevents.in + Type: make textevents + */ + +/* Internals: + + On startup ~/.xchat/printevents.conf is loaded if it doesn't exist the + defaults are loaded. Any missing events are filled from defaults. + Each event is parsed by pevt_build_string and a binary output is produced + which looks like: + + (byte) value: 0 = { + (int) numbers of bytes + (char []) that number of byte to be memcpy'ed into the buffer + } + 1 = + (byte) number of varable to insert + 2 = end of buffer + + Each XP_TE_* signal is hard coded to call text_emit which calls + display_event which decodes the data + + This means that this system *should be faster* than g_snprintf because + it always 'knows' that format of the string (basically is preparses much + of the work) + + --AGL + */ + +char *pntevts_text[NUM_XP]; +char *pntevts[NUM_XP]; + +#define pevt_generic_none_help NULL + +static char * const pevt_genmsg_help[] = { + N_("Left message"), + N_("Right message"), +}; + +#if 0 +static char * const pevt_identd_help[] = { + N_("IP address"), + N_("Username") +}; +#endif + +static char * const pevt_join_help[] = { + N_("The nick of the joining person"), + N_("The channel being joined"), + N_("The host of the person"), + N_("The account of the person"), +}; + +static char * const pevt_chanaction_help[] = { + N_("Nickname"), + N_("The action"), + N_("Mode char"), + N_("Identified text"), +}; + +static char * const pevt_chanmsg_help[] = { + N_("Nickname"), + N_("The text"), + N_("Mode char"), + N_("Identified text"), +}; + +static char * const pevt_privmsg_help[] = { + N_("Nickname"), + N_("The message"), + N_("Identified text") +}; + +static char * const pevt_capack_help[] = { + N_("Server Name"), + N_("Acknowledged Capabilities") +}; + +static char * const pevt_capdel_help[] = { + N_("Server Name"), + N_("Removed Capabilities") +}; + +static char * const pevt_caplist_help[] = { + N_("Server Name"), + N_("Server Capabilities") +}; + +static char * const pevt_capreq_help[] = { + N_("Requested Capabilities") +}; + +static char * const pevt_changenick_help[] = { + N_("Old nickname"), + N_("New nickname"), +}; + +static char * const pevt_newtopic_help[] = { + N_("Nick of person who changed the topic"), + N_("Topic"), + N_("Channel"), +}; + +static char * const pevt_topic_help[] = { + N_("Channel"), + N_("Topic"), +}; + +static char * const pevt_kick_help[] = { + N_("The nickname of the kicker"), + N_("The person being kicked"), + N_("The channel"), + N_("The reason"), +}; + +static char * const pevt_part_help[] = { + N_("The nick of the person leaving"), + N_("The host of the person"), + N_("The channel"), +}; + +static char * const pevt_chandate_help[] = { + N_("The channel"), + N_("The time"), +}; + +static char * const pevt_topicdate_help[] = { + N_("The channel"), + N_("The creator"), + N_("The time"), +}; + +static char * const pevt_quit_help[] = { + N_("Nick"), + N_("Reason"), + N_("Host"), +}; + +static char * const pevt_pingrep_help[] = { + N_("Who it's from"), + N_("The time in x.x format (see below)"), +}; + +static char * const pevt_notice_help[] = { + N_("Who it's from"), + N_("The message"), +}; + +static char * const pevt_channotice_help[] = { + N_("Who it's from"), + N_("The Channel it's going to"), + N_("The message"), +}; + +static char * const pevt_uchangenick_help[] = { + N_("Old nickname"), + N_("New nickname"), +}; + +static char * const pevt_ukick_help[] = { + N_("The person being kicked"), + N_("The channel"), + N_("The nickname of the kicker"), + N_("The reason"), +}; + +static char * const pevt_partreason_help[] = { + N_("The nick of the person leaving"), + N_("The host of the person"), + N_("The channel"), + N_("The reason"), +}; + +static char * const pevt_ctcpsnd_help[] = { + N_("The sound"), + N_("The nick of the person"), + N_("The channel"), +}; + +static char * const pevt_ctcpgen_help[] = { + N_("The CTCP event"), + N_("The nick of the person"), +}; + +static char * const pevt_ctcpgenc_help[] = { + N_("The CTCP event"), + N_("The nick of the person"), + N_("The Channel it's going to"), +}; + +static char * const pevt_chansetkey_help[] = { + N_("The nick of the person who set the key"), + N_("The key"), +}; + +static char * const pevt_chansetlimit_help[] = { + N_("The nick of the person who set the limit"), + N_("The limit"), +}; + +static char * const pevt_chanop_help[] = { + N_("The nick of the person who did the op'ing"), + N_("The nick of the person who has been op'ed"), +}; + +static char * const pevt_chanhop_help[] = { + N_("The nick of the person who has been halfop'ed"), + N_("The nick of the person who did the halfop'ing"), +}; + +static char * const pevt_chanvoice_help[] = { + N_("The nick of the person who did the voice'ing"), + N_("The nick of the person who has been voice'ed"), +}; + +static char * const pevt_chanban_help[] = { + N_("The nick of the person who did the banning"), + N_("The ban mask"), +}; + +static char * const pevt_chanquiet_help[] = { + N_("The nick of the person who did the quieting"), + N_("The quiet mask"), +}; + +static char * const pevt_chanrmkey_help[] = { + N_("The nick who removed the key"), +}; + +static char * const pevt_chanrmlimit_help[] = { + N_("The nick who removed the limit"), +}; + +static char * const pevt_chandeop_help[] = { + N_("The nick of the person who did the deop'ing"), + N_("The nick of the person who has been deop'ed"), +}; +static char * const pevt_chandehop_help[] = { + N_("The nick of the person who did the dehalfop'ing"), + N_("The nick of the person who has been dehalfop'ed"), +}; + +static char * const pevt_chandevoice_help[] = { + N_("The nick of the person who did the devoice'ing"), + N_("The nick of the person who has been devoice'ed"), +}; + +static char * const pevt_chanunban_help[] = { + N_("The nick of the person who did the unban'ing"), + N_("The ban mask"), +}; + +static char * const pevt_chanunquiet_help[] = { + N_("The nick of the person who did the unquiet'ing"), + N_("The quiet mask"), +}; + +static char * const pevt_chanexempt_help[] = { + N_("The nick of the person who did the exempt"), + N_("The exempt mask"), +}; + +static char * const pevt_chanrmexempt_help[] = { + N_("The nick of the person removed the exempt"), + N_("The exempt mask"), +}; + +static char * const pevt_chaninvite_help[] = { + N_("The nick of the person who did the invite"), + N_("The invite mask"), +}; + +static char * const pevt_chanrminvite_help[] = { + N_("The nick of the person removed the invite"), + N_("The invite mask"), +}; + +static char * const pevt_chanmodegen_help[] = { + N_("The nick of the person setting the mode"), + N_("The mode's sign (+/-)"), + N_("The mode letter"), + N_("The channel it's being set on"), +}; + +static char * const pevt_whois1_help[] = { + N_("Nickname"), + N_("Username"), + N_("Host"), + N_("Full name"), +}; + +static char * const pevt_whois2_help[] = { + N_("Nickname"), + N_("Channel Membership/\"is an IRC operator\""), +}; + +static char * const pevt_whois3_help[] = { + N_("Nickname"), + N_("Server Information"), +}; + +static char * const pevt_whois4_help[] = { + N_("Nickname"), + N_("Idle time"), +}; + +static char * const pevt_whois4t_help[] = { + N_("Nickname"), + N_("Idle time"), + N_("Signon time"), +}; + +static char * const pevt_whois5_help[] = { + N_("Nickname"), + N_("Away reason"), +}; + +static char * const pevt_whois6_help[] = { + N_("Nickname"), +}; + +static char * const pevt_whoisid_help[] = { + N_("Nickname"), + N_("Message"), + "Numeric" +}; + +static char * const pevt_whoisauth_help[] = { + N_("Nickname"), + N_("Message"), + N_("Account"), +}; + +static char * const pevt_whoisrealhost_help[] = { + N_("Nickname"), + N_("Real user@host"), + N_("Real IP"), + N_("Message"), +}; + +static char * const pevt_generic_channel_help[] = { + N_("Channel Name"), +}; + +static char * const pevt_saslauth_help[] = { + N_("Username"), + N_("Mechanism") +}; + +static char * const pevt_saslresponse_help[] = { + N_("Server Name"), + N_("Raw Numeric or Identifier"), + N_("Username"), + N_("Message") +}; + +static char * const pevt_servertext_help[] = { + N_("Text"), + N_("Server Name"), + N_("Raw Numeric or Identifier") +}; + +static char * const pevt_sslmessage_help[] = { + N_("Text"), + N_("Server Name") +}; + +static char * const pevt_invited_help[] = { + N_("Channel Name"), + N_("Nick of person who invited you"), + N_("Server Name"), +}; + +static char * const pevt_invitedother_help[] = { + N_("Channel Name"), + N_("Nick of person who sent the invite"), + N_("Nick of person who was invited"), + N_("Server Name"), +}; + +static char * const pevt_usersonchan_help[] = { + N_("Channel Name"), + N_("Users"), +}; + +static char * const pevt_nickclash_help[] = { + N_("Nickname in use"), + N_("Nick being tried"), +}; + +static char * const pevt_connfail_help[] = { + N_("Error"), +}; + +static char * const pevt_connect_help[] = { + N_("Host"), + N_("IP"), + N_("Port"), +}; + +static char * const pevt_sconnect_help[] = { + "PID" +}; + +static char * const pevt_generic_nick_help[] = { + N_("Nickname"), + N_("Server Name"), + N_("Network") +}; + +static char * const pevt_chanmodes_help[] = { + N_("Channel Name"), + N_("Modes string"), +}; + +static char * const pevt_chanurl_help[] = { + N_("Channel Name"), + N_("URL"), +}; + +static char * const pevt_rawmodes_help[] = { + N_("Nickname"), + N_("Modes string"), +}; + +static char * const pevt_kill_help[] = { + N_("Nickname"), + N_("Reason"), +}; + +static char * const pevt_dccchaterr_help[] = { + N_("Nickname"), + N_("IP address"), + N_("Port"), + N_("Error"), +}; + +static char * const pevt_dccstall_help[] = { + N_("DCC Type"), + N_("Filename"), + N_("Nickname"), +}; + +static char * const pevt_generic_file_help[] = { + N_("Filename"), + N_("Error"), +}; + +static char * const pevt_dccrecverr_help[] = { + N_("Filename"), + N_("Destination filename"), + N_("Nickname"), + N_("Error"), +}; + +static char * const pevt_dccrecvcomp_help[] = { + N_("Filename"), + N_("Destination filename"), + N_("Nickname"), + N_("CPS"), +}; + +static char * const pevt_dccconfail_help[] = { + N_("DCC Type"), + N_("Nickname"), + N_("Error"), +}; + +static char * const pevt_dccchatcon_help[] = { + N_("Nickname"), + N_("IP address"), +}; + +static char * const pevt_dcccon_help[] = { + N_("Nickname"), + N_("IP address"), + N_("Filename"), +}; + +static char * const pevt_dccsendfail_help[] = { + N_("Filename"), + N_("Nickname"), + N_("Error"), +}; + +static char * const pevt_dccsendcomp_help[] = { + N_("Filename"), + N_("Nickname"), + N_("CPS"), +}; + +static char * const pevt_dccoffer_help[] = { + N_("Filename"), + N_("Nickname"), + N_("Pathname"), +}; + +static char * const pevt_dccfileabort_help[] = { + N_("Nickname"), + N_("Filename") +}; + +static char * const pevt_dccchatabort_help[] = { + N_("Nickname"), +}; + +static char * const pevt_dccresumeoffer_help[] = { + N_("Nickname"), + N_("Filename"), + N_("Position"), +}; + +static char * const pevt_dccsendoffer_help[] = { + N_("Nickname"), + N_("Filename"), + N_("Size"), + N_("IP address"), +}; + +static char * const pevt_dccgenericoffer_help[] = { + N_("DCC String"), + N_("Nickname"), +}; + +static char * const pevt_notifyaway_help[] = { + N_("Nickname"), + N_("Away Reason"), +}; + +static char * const pevt_notifynumber_help[] = { + N_("Number of notify items"), +}; + +static char * const pevt_serverlookup_help[] = { + N_("Server Name"), +}; + +static char * const pevt_servererror_help[] = { + N_("Text"), +}; + +static char * const pevt_foundip_help[] = { + N_("IP"), +}; + +static char * const pevt_dccrename_help[] = { + N_("Old Filename"), + N_("New Filename"), +}; + +static char * const pevt_ctcpsend_help[] = { + N_("Receiver"), + N_("Message"), +}; + +static char * const pevt_ignoreaddremove_help[] = { + N_("Hostmask"), +}; + +static char * const pevt_resolvinguser_help[] = { + N_("Nickname"), + N_("Hostname"), +}; + +static char * const pevt_malformed_help[] = { + N_("Nickname"), + N_("The Packet"), +}; + +static char * const pevt_pingtimeout_help[] = { + N_("Seconds"), +}; + +static char * const pevt_uinvite_help[] = { + N_("Nick of person who have been invited"), + N_("Channel Name"), + N_("Server Name"), +}; + +static char * const pevt_banlist_help[] = { + N_("Channel"), + N_("Banmask"), + N_("Who set the ban"), + N_("Ban time"), +}; + +static char * const pevt_discon_help[] = { + N_("Error"), +}; + +static char * const pevt_stdrpl_help[] = { + N_("Error Code"), + N_("Error Message"), +}; + +static char * const pevt_stdrplcmd_help[] = { + N_("Command"), + N_("Error Code"), + N_("Error Message"), +}; + +#include "textevents.h" + +static void +pevent_load_defaults (void) +{ + int i; + + for (i = 0; i < NUM_XP; i++) + { + g_free (pntevts_text[i]); + + /* make-te.c sets this 128 flag (DON'T call gettext() flag) */ + if (te[i].num_args & 128) + pntevts_text[i] = g_strdup (te[i].def); + else + pntevts_text[i] = g_strdup (_(te[i].def)); + } +} + +void +pevent_make_pntevts (void) +{ + int i, m; + + for (i = 0; i < NUM_XP; i++) + { + g_free (pntevts[i]); + if (pevt_build_string (pntevts_text[i], &(pntevts[i]), &m) != 0) + { + /* make-te.c sets this 128 flag (DON'T call gettext() flag) */ + const gboolean translate = !(te[i].num_args & 128); + + g_warning ("Error parsing event %s\nLoading default.", te[i].name); + g_free (pntevts_text[i]); + + if (translate) + pntevts_text[i] = g_strdup (_(te[i].def)); + else + pntevts_text[i] = g_strdup (te[i].def); + + if (pevt_build_string (pntevts_text[i], &(pntevts[i]), &m) != 0 && !translate) + { + g_error ("HexChat CRITICAL *** default event text failed to build!"); + } + else + { + g_warning ("Error parsing translated event %s\nLoading untranslated.", te[i].name); + g_free (pntevts_text[i]); + + pntevts_text[i] = g_strdup (te[i].def); + + if (pevt_build_string (pntevts_text[i], &(pntevts[i]), &m) != 0) + { + g_error ("HexChat CRITICAL *** default event text failed to build!"); + } + } + } + } +} + +/* Loading happens at 2 levels: + 1) File is read into blocks + 2) Pe block is parsed and loaded + + --AGL */ + +/* Better hope you pass good args.. --AGL */ + +static void +pevent_trigger_load (int *i_penum, char **i_text, char **i_snd) +{ + int penum = *i_penum; + char *text = *i_text, *snd = *i_snd; + + if (penum != -1 && text != NULL) + { + g_free (pntevts_text[penum]); + pntevts_text[penum] = g_strdup (text); + } + + g_free (text); + g_free (snd); + *i_text = NULL; + *i_snd = NULL; + *i_penum = 0; +} + +static int +pevent_find (char *name, int *i_i) +{ + int i = *i_i, j; + + j = i + 1; + while (1) + { + if (j == NUM_XP) + j = 0; + if (strcmp (te[j].name, name) == 0) + { + *i_i = j; + return j; + } + if (j == i) + return -1; + j++; + } +} + +int +pevent_load (char *filename) +{ + /* AGL, I've changed this file and pevent_save, could you please take a look at + * the changes and possibly modify them to suit you + * //David H + */ + char *buf, *ibuf; + int fd, i = 0, pnt = 0; + struct stat st; + char *text = NULL, *snd = NULL; + int penum = 0; + char *ofs; + + if (filename == NULL) + fd = hexchat_open_file ("pevents.conf", O_RDONLY, 0, 0); + else + fd = hexchat_open_file (filename, O_RDONLY, 0, XOF_FULLPATH); + + if (fd == -1) + return 1; + if (fstat (fd, &st) != 0) + { + close (fd); + return 1; + } + ibuf = g_malloc (st.st_size); + read (fd, ibuf, st.st_size); + close (fd); + + while (buf_get_line (ibuf, &buf, &pnt, st.st_size)) + { + if (buf[0] == '#') + continue; + if (strlen (buf) == 0) + continue; + + ofs = strchr (buf, '='); + if (!ofs) + continue; + *ofs = 0; + ofs++; + + if (strcmp (buf, "event_name") == 0) + { + if (penum >= 0) + pevent_trigger_load (&penum, &text, &snd); + penum = pevent_find (ofs, &i); + continue; + } else if (strcmp (buf, "event_text") == 0) + { + g_free (text); + text = g_strdup (ofs); + continue; + } + + continue; + } + + pevent_trigger_load (&penum, &text, &snd); + g_free (ibuf); + return 0; +} + +static void +pevent_check_all_loaded (void) +{ + int i; + + for (i = 0; i < NUM_XP; i++) + { + if (pntevts_text[i] == NULL) + { + /*printf ("%s\n", te[i].name); + g_snprintf(out, sizeof(out), "The data for event %s failed to load. Reverting to defaults.\nThis may be because a new version of HexChat is loading an old config file.\n\nCheck all print event texts are correct", evtnames[i]); + gtkutil_simpledialog(out); */ + /* make-te.c sets this 128 flag (DON'T call gettext() flag) */ + if (te[i].num_args & 128) + pntevts_text[i] = g_strdup (te[i].def); + else + pntevts_text[i] = g_strdup (_(te[i].def)); + } + } +} + +void +load_text_events () +{ + memset (&pntevts_text, 0, sizeof (char *) * (NUM_XP)); + memset (&pntevts, 0, sizeof (char *) * (NUM_XP)); + + if (pevent_load (NULL)) + pevent_load_defaults (); + pevent_check_all_loaded (); + pevent_make_pntevts (); +} + +/* + CL: format_event now handles filtering of arguments: + 1) if prefs.hex_text_stripcolor_msg is set, filter all style control codes from arguments + 2) always strip \010 (ATTR_HIDDEN) from arguments: it is only for use in the format string itself +*/ +#define ARG_FLAG(argn) (1 << (argn)) + +void +format_event (session *sess, int index, char **args, char *o, gsize sizeofo, unsigned int stripcolor_args) +{ + int len, ii, numargs; + gsize oi; + char *i, *ar, d, a, done_all = FALSE; + + i = pntevts[index]; + numargs = te[index].num_args & 0x7f; + + oi = ii = len = d = a = 0; + o[0] = 0; + + if (i == NULL) + return; + + while (done_all == FALSE) + { + d = i[ii++]; + switch (d) + { + case 0: + memcpy (&len, &(i[ii]), sizeof (int)); + ii += sizeof (int); + if (oi + len > sizeofo) + { + printf ("Overflow in display_event (%s)\n", i); + o[0] = 0; + return; + } + memcpy (&(o[oi]), &(i[ii]), len); + oi += len; + ii += len; + break; + case 1: + a = i[ii++]; + if (a > numargs) + { + fprintf (stderr, + "HexChat DEBUG: display_event: arg > numargs (%d %d %s)\n", + a, numargs, i); + break; + } + ar = args[(int) a + 1]; + if (ar == NULL) + { + printf ("arg[%d] is NULL in print event\n", a + 1); + } else + { + if (strlen (ar) > sizeofo - oi - 4) + ar[sizeofo - oi - 4] = 0; /* Avoid buffer overflow */ + if (stripcolor_args & ARG_FLAG(a + 1)) len = strip_color2 (ar, -1, &o[oi], STRIP_ALL); + else len = strip_hidden_attribute (ar, &o[oi]); + oi += len; + } + break; + case 2: + o[oi++] = '\n'; + o[oi++] = 0; + done_all = TRUE; + continue; + case 3: + if (prefs.hex_text_indent) + o[oi++] = '\t'; + else + o[oi++] = ' '; + break; + } + } + o[oi] = 0; + if (*o == '\n') + o[0] = 0; +} + +static void +display_event (session *sess, int event, char **args, + unsigned int stripcolor_args, time_t timestamp) +{ + char o[4096]; + format_event (sess, event, args, o, sizeof (o), stripcolor_args); + if (o[0]) + PrintTextTimeStamp (sess, o, timestamp); +} + +int +pevt_build_string (const char *input, char **output, int *max_arg) +{ + struct pevt_stage1 *s = NULL, *base = NULL, *last = NULL, *next; + int clen; + char o[4096], d, *obuf, *i; + int oi, ii, max = -1, len, x; + + len = strlen (input); + i = g_malloc (len + 1); + memcpy (i, input, len + 1); + check_special_chars (i, TRUE); + + len = strlen (i); + + clen = oi = ii = 0; + + for (;;) + { + if (ii == len) + break; + d = i[ii++]; + if (d != '$') + { + o[oi++] = d; + continue; + } + if (i[ii] == '$') + { + o[oi++] = '$'; + continue; + } + if (oi > 0) + { + s = g_new (struct pevt_stage1, 1); + if (base == NULL) + base = s; + if (last != NULL) + last->next = s; + last = s; + s->next = NULL; + s->data = g_malloc (oi + sizeof (int) + 1); + s->len = oi + sizeof (int) + 1; + clen += oi + sizeof (int) + 1; + s->data[0] = 0; + memcpy (&(s->data[1]), &oi, sizeof (int)); + memcpy (&(s->data[1 + sizeof (int)]), o, oi); + oi = 0; + } + if (ii == len) + { + fe_message ("String ends with a $", FE_MSG_WARN); + goto err; + } + d = i[ii++]; + if (d == 'a') + { + /* Hex value */ + if (ii == len) + goto a_len_error; + d = i[ii++]; + d -= '0'; + x = d * 100; + if (ii == len) + goto a_len_error; + d = i[ii++]; + d -= '0'; + x += d * 10; + if (ii == len) + goto a_len_error; + d = i[ii++]; + d -= '0'; + x += d; + if (x > 255) + goto a_range_error; + o[oi++] = x; + continue; + + a_len_error: + fe_message ("String ends in $a", FE_MSG_WARN); + goto err; + a_range_error: + fe_message ("$a value is greater than 255", FE_MSG_WARN); + goto err; + } + if (d == 't') + { + /* Tab - if tabnicks is set then write '\t' else ' ' */ + s = g_new (struct pevt_stage1, 1); + if (base == NULL) + base = s; + if (last != NULL) + last->next = s; + last = s; + s->next = NULL; + s->data = g_malloc (1); + s->len = 1; + clen += 1; + s->data[0] = 3; + + continue; + } + if (d < '1' || d > '9') + { + g_snprintf (o, sizeof (o), "Error, invalid argument $%c\n", d); + fe_message (o, FE_MSG_WARN); + goto err; + } + d -= '0'; + if (max < d) + max = d; + s = g_new (struct pevt_stage1, 1); + if (base == NULL) + base = s; + if (last != NULL) + last->next = s; + last = s; + s->next = NULL; + s->data = g_malloc (2); + s->len = 2; + clen += 2; + s->data[0] = 1; + s->data[1] = d - 1; + } + if (oi > 0) + { + s = g_new (struct pevt_stage1, 1); + if (base == NULL) + base = s; + if (last != NULL) + last->next = s; + last = s; + s->next = NULL; + s->data = g_malloc (oi + sizeof (int) + 1); + s->len = oi + sizeof (int) + 1; + clen += oi + sizeof (int) + 1; + s->data[0] = 0; + memcpy (&(s->data[1]), &oi, sizeof (int)); + memcpy (&(s->data[1 + sizeof (int)]), o, oi); + oi = 0; + } + s = g_new (struct pevt_stage1, 1); + if (base == NULL) + base = s; + if (last != NULL) + last->next = s; + s->next = NULL; + s->data = g_malloc (1); + s->len = 1; + clen += 1; + s->data[0] = 2; + + oi = 0; + s = base; + obuf = g_malloc (clen); + + while (s) + { + next = s->next; + memcpy (&obuf[oi], s->data, s->len); + oi += s->len; + g_free (s->data); + g_free (s); + s = next; + } + + g_free (i); + + if (max_arg) + *max_arg = max; + if (output) + *output = obuf; + else + g_free (obuf); + + return 0; + +err: + while (s) + { + next = s->next; + g_free (s->data); + g_free (s); + s = next; + } + + g_free(i); + + return 1; +} + + +/* black n white(0/1) are bad colors for nicks, and we'll use color 2 for us */ +/* also light/dark gray (14/15) */ +/* 5,7,8 are all shades of yellow which happen to look damn near the same */ + +static char rcolors[] = { 19, 20, 22, 24, 25, 26, 27, 28, 29 }; + +int +text_color_of (char *name) +{ + int i = 0, sum = 0; + + while (name[i]) + sum += name[i++]; + sum %= sizeof (rcolors) / sizeof (char); + return rcolors[sum]; +} + + +/* called by EMIT_SIGNAL macro */ + +void +text_emit (int index, session *sess, char *a, char *b, char *c, char *d, + time_t timestamp) +{ + char *word[PDIWORDS]; + int i; + tab_state_flags current_state = sess->tab_state; + tab_state_flags plugin_state = sess->last_tab_state; + unsigned int stripcolor_args = (chanopt_is_set (prefs.hex_text_stripcolor_msg, sess->text_strip) ? 0xFFFFFFFF : 0); + char tbuf[NICKLEN + 4]; + + if (a != NULL && prefs.hex_text_color_nicks && (index == XP_TE_CHANACTION || index == XP_TE_CHANMSG)) + { + g_snprintf (tbuf, sizeof (tbuf), "\003%d%s", text_color_of (a), a); + a = tbuf; + stripcolor_args &= ~ARG_FLAG(1); /* don't strip color from this argument */ + } + + word[0] = te[index].name; + word[1] = (a ? a : "\000"); + word[2] = (b ? b : "\000"); + word[3] = (c ? c : "\000"); + word[4] = (d ? d : "\000"); + for (i = 5; i < PDIWORDS; i++) + word[i] = "\000"; + + /* We want to ignore the tab state if the plugin emits new events + * and restore it if it doesn't eat the current one */ + sess->tab_state = plugin_state; + if (plugin_emit_print (sess, word, timestamp)) + return; + + /* The plugin may have changed the state which we should respect. + * If the state is NEW_DATA we don't actually know if that was on + * purpose though as print() sets it, so for now we ignore that. FIXME */ + if (sess->tab_state == plugin_state || sess->tab_state == TAB_STATE_NEW_DATA) + sess->tab_state = current_state; + + /* If a plugin's callback executes "/close", 'sess' may be invalid */ + if (!is_session (sess)) + return; + + switch (index) + { + case XP_TE_JOIN: + case XP_TE_PART: + case XP_TE_PARTREASON: + case XP_TE_QUIT: + /* implement ConfMode / Hide Join and Part Messages */ + if (chanopt_is_set (prefs.hex_irc_conf_mode, sess->text_hidejoinpart)) + return; + break; + + /* ===Private message=== */ + case XP_TE_PRIVMSG: + case XP_TE_DPRIVMSG: + case XP_TE_PRIVACTION: + case XP_TE_DPRIVACTION: + if (chanopt_is_set (prefs.hex_input_beep_priv, sess->alert_beep) && (!prefs.hex_away_omit_alerts || !sess->server->is_away)) + sound_beep (sess); + if (chanopt_is_set (prefs.hex_input_flash_priv, sess->alert_taskbar) && (!prefs.hex_away_omit_alerts || !sess->server->is_away)) + fe_flash_window (sess); + /* why is this one different? because of plugin-tray.c's hooks! ugly */ + if (sess->alert_tray == SET_ON) + fe_tray_set_icon (FE_ICON_MESSAGE); + break; + + /* ===Highlighted message=== */ + case XP_TE_HCHANACTION: + case XP_TE_HCHANMSG: + if (chanopt_is_set (prefs.hex_input_beep_hilight, sess->alert_beep) && (!prefs.hex_away_omit_alerts || !sess->server->is_away)) + sound_beep (sess); + if (chanopt_is_set (prefs.hex_input_flash_hilight, sess->alert_taskbar) && (!prefs.hex_away_omit_alerts || !sess->server->is_away)) + fe_flash_window (sess); + if (sess->alert_tray == SET_ON) + fe_tray_set_icon (FE_ICON_MESSAGE); + break; + + /* ===Channel message=== */ + case XP_TE_CHANACTION: + case XP_TE_CHANMSG: + if (chanopt_is_set (prefs.hex_input_beep_chans, sess->alert_beep) && (!prefs.hex_away_omit_alerts || !sess->server->is_away)) + sound_beep (sess); + if (chanopt_is_set (prefs.hex_input_flash_chans, sess->alert_taskbar) && (!prefs.hex_away_omit_alerts || !sess->server->is_away)) + fe_flash_window (sess); + if (sess->alert_tray == SET_ON) + fe_tray_set_icon (FE_ICON_MESSAGE); + break; + + /* ===Nick change message=== */ + case XP_TE_CHANGENICK: + if (prefs.hex_irc_hide_nickchange) + return; + break; + } + + if (!prefs.hex_away_omit_alerts || !sess->server->is_away) + sound_play_event (index); + display_event (sess, index, word, stripcolor_args, timestamp); +} + +char * +text_find_format_string (char *name) +{ + int i = 0; + + i = pevent_find (name, &i); + if (i >= 0) + return pntevts_text[i]; + + return NULL; +} + +int +text_emit_by_name (char *name, session *sess, time_t timestamp, + char *a, char *b, char *c, char *d) +{ + int i = 0; + + i = pevent_find (name, &i); + if (i >= 0) + { + text_emit (i, sess, a, b, c, d, timestamp); + return 1; + } + + return 0; +} + +void +pevent_save (char *fn) +{ + int fd, i; + char buf[1024]; + + if (!fn) + fd = hexchat_open_file ("pevents.conf", O_CREAT | O_TRUNC | O_WRONLY, + 0x180, XOF_DOMODE); + else + fd = hexchat_open_file (fn, O_CREAT | O_TRUNC | O_WRONLY, 0x180, + XOF_FULLPATH | XOF_DOMODE); + if (fd == -1) + { + /* + fe_message ("Error opening config file\n", FALSE); + If we get here when X-Chat is closing the fe-message causes a nice & hard crash + so we have to use perror which doesn't rely on GTK + */ + + perror ("Error opening config file\n"); + return; + } + + for (i = 0; i < NUM_XP; i++) + { + write (fd, buf, g_snprintf (buf, sizeof (buf), + "event_name=%s\n", te[i].name)); + write (fd, buf, g_snprintf (buf, sizeof (buf), + "event_text=%s\n\n", pntevts_text[i])); + } + + close (fd); +} + +/* =========================== */ +/* ========== SOUND ========== */ +/* =========================== */ + +char *sound_files[NUM_XP]; + +void +sound_beep (session *sess) +{ + if (!prefs.hex_gui_focus_omitalerts || fe_gui_info (sess, 0) != 1) + { + if (sound_files[XP_TE_BEEP] && sound_files[XP_TE_BEEP][0]) + /* user defined beep _file_ */ + sound_play_event (XP_TE_BEEP); + else + /* system beep */ + fe_beep (sess); + } +} + +void +sound_play (const char *file, gboolean quiet) +{ + char *buf; + char *wavfile; +#ifndef WIN32 + char *cmd; +#endif + + /* the pevents GUI editor triggers this after removing a soundfile */ + if (!file[0]) + { + return; + } + + /* check for fullpath */ + if (g_path_is_absolute (file)) + { + wavfile = g_strdup (file); + } + else + { + wavfile = g_build_filename (get_xdir (), HEXCHAT_SOUND_DIR, file, NULL); + } + + if (g_access (wavfile, R_OK) == 0) + { +#ifdef WIN32 + gunichar2 *wavfile_utf16 = g_utf8_to_utf16 (wavfile, -1, NULL, NULL, NULL); + + if (wavfile_utf16 != NULL) + { + PlaySoundW (wavfile_utf16, NULL, SND_NODEFAULT | SND_FILENAME | SND_ASYNC); + + g_free (wavfile_utf16); + } +#else +#ifdef USE_LIBCANBERRA + if (ca_con == NULL) + { + ca_context_create (&ca_con); + ca_context_change_props (ca_con, + CA_PROP_APPLICATION_ID, "hexchat", + CA_PROP_APPLICATION_NAME, "HexChat", + CA_PROP_APPLICATION_ICON_NAME, "hexchat", NULL); + } + + if (ca_context_play (ca_con, 0, CA_PROP_MEDIA_FILENAME, wavfile, NULL) != 0) +#endif + { + cmd = g_find_program_in_path ("play"); + + if (cmd) + { + buf = g_strdup_printf ("%s \"%s\"", cmd, wavfile); + hexchat_exec (buf); + g_free (buf); + g_free (cmd); + } + } +#endif + } + else + { + if (!quiet) + { + buf = g_strdup_printf (_("Cannot read sound file:\n%s"), wavfile); + fe_message (buf, FE_MSG_ERROR); + g_free (buf); + } + } + + g_free (wavfile); +} + +void +sound_play_event (int i) +{ + if (sound_files[i]) + { + sound_play (sound_files[i], FALSE); + } +} + +static void +sound_load_event (char *evt, char *file) +{ + int i = 0; + + if (file[0] && pevent_find (evt, &i) != -1) + { + g_free (sound_files[i]); + sound_files[i] = g_strdup (file); + } +} + +void +sound_load () +{ + int fd; + char buf[512]; + char evt[128]; + + memset (&sound_files, 0, sizeof (char *) * (NUM_XP)); + + fd = hexchat_open_file ("sound.conf", O_RDONLY, 0, 0); + if (fd == -1) + return; + + evt[0] = 0; + while (waitline (fd, buf, sizeof buf, FALSE) != -1) + { + if (strncmp (buf, "event=", 6) == 0) + { + safe_strcpy (evt, buf + 6, sizeof (evt)); + } + else if (strncmp (buf, "sound=", 6) == 0) + { + if (evt[0] != 0) + { + sound_load_event (evt, buf + 6); + evt[0] = 0; + } + } + } + + close (fd); +} + +void +sound_save () +{ + int fd, i; + char buf[512]; + + fd = hexchat_open_file ("sound.conf", O_CREAT | O_TRUNC | O_WRONLY, 0x180, + XOF_DOMODE); + if (fd == -1) + return; + + for (i = 0; i < NUM_XP; i++) + { + if (sound_files[i] && sound_files[i][0]) + { + write (fd, buf, g_snprintf (buf, sizeof (buf), + "event=%s\n", te[i].name)); + write (fd, buf, g_snprintf (buf, sizeof (buf), + "sound=%s\n\n", sound_files[i])); + } + } + + close (fd); +} diff --git a/hexchat/src/common/text.h b/hexchat/src/common/text.h new file mode 100644 index 0000000..485b7ce --- /dev/null +++ b/hexchat/src/common/text.h @@ -0,0 +1,75 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <time.h> +#include "textenums.h" + +#ifndef HEXCHAT_TEXT_H +#define HEXCHAT_TEXT_H + +/* timestamp is non-zero if we are using server-time */ +#define EMIT_SIGNAL_TIMESTAMP(i, sess, a, b, c, d, e, timestamp) \ + text_emit(i, sess, a, b, c, d, timestamp) +#define EMIT_SIGNAL(i, sess, a, b, c, d, e) \ + text_emit(i, sess, a, b, c, d, 0) + +struct text_event +{ + char *name; + char * const *help; + int num_args; + char *def; +}; + +void scrollback_close (session *sess); +void scrollback_load (session *sess); + +int text_word_check (char *word, int len); +void PrintText (session *sess, char *text); +void PrintTextTimeStamp (session *sess, char *text, time_t timestamp); +void PrintTextf (session *sess, const char *format, ...) G_GNUC_PRINTF (2, 3); +void PrintTextTimeStampf (session *sess, time_t timestamp, const char *format, ...) G_GNUC_PRINTF (3, 4); +void log_close (session *sess); +void log_open_or_close (session *sess); +void load_text_events (void); +void pevent_save (char *fn); +int pevt_build_string (const char *input, char **output, int *max_arg); +int pevent_load (char *filename); +void pevent_make_pntevts (void); +int text_color_of (char *name); +void text_emit (int index, session *sess, char *a, char *b, char *c, char *d, + time_t timestamp); +int text_emit_by_name (char *name, session *sess, time_t timestamp, + char *a, char *b, char *c, char *d); +gchar *text_convert_invalid (const gchar* text, gssize len, GIConv converter, const gchar *fallback, gsize *len_out); +gchar *text_fixup_invalid_utf8 (const gchar* text, gssize len, gsize *len_out); +int get_stamp_str (char *fmt, time_t tim, char **ret); +void format_event (session *sess, int index, char **args, char *o, gsize sizeofo, unsigned int stripcolor_args); +char *text_find_format_string (char *name); + +extern const gchar* unicode_fallback_string; +extern const gchar* arbitrary_encoding_fallback_string; + +void sound_play (const char *file, gboolean quiet); +void sound_play_event (int i); +void sound_beep (session *); +void sound_load (void); +void sound_save (void); + +#endif diff --git a/hexchat/src/common/textevents.in b/hexchat/src/common/textevents.in new file mode 100644 index 0000000..19b0d49 --- /dev/null +++ b/hexchat/src/common/textevents.in @@ -0,0 +1,954 @@ +Add Notify +XP_TE_ADDNOTIFY +pevt_generic_nick_help +%C18*%O$t%C18$1%O added to notify list. +1 + +Ban List +XP_TE_BANLIST +pevt_banlist_help +%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O +4 + +Banned +XP_TE_BANNED +pevt_generic_channel_help +%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O). +1 + +Beep +XP_TE_BEEP +pevt_generic_none_help + +n0 + +Capability Acknowledgement +XP_TE_CAPACK +pevt_capack_help +%C29*%O$tCapabilities acknowledged: %C29$2%O +2 + +Capability Deleted +XP_TE_CAPDEL +pevt_capdel_help +%C29*%O$tCapabilities removed: %C29$2%O +2 + +Capability List +XP_TE_CAPLIST +pevt_caplist_help +%C23*%O$tCapabilities supported: %C29$2%O +2 + +Capability Request +XP_TE_CAPREQ +pevt_capreq_help +%C23*%O$tCapabilities requested: %C29$1%O +1 + +Change Nick +XP_TE_CHANGENICK +pevt_changenick_help +%C24*%O$t%C28$1%O is now known as %C18$2%O +2 + +Channel Action +XP_TE_CHANACTION +pevt_chanaction_help +%C18*$t%B$1%O $2 +n4 + +Channel Action Hilight +XP_TE_HCHANACTION +pevt_chanaction_help +%C19*$t%B$1%B $2%O +n4 + +Channel Ban +XP_TE_CHANBAN +pevt_chanban_help +%C22*%O$t%C26$1%O sets ban on %C18$2%O +2 + +Channel Creation +XP_TE_CHANDATE +pevt_chandate_help +%C22*%O$tChannel %C22$1%O created on %C24$2%O +2 + +Channel DeHalfOp +XP_TE_CHANDEHOP +pevt_chandehop_help +%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O +2 + +Channel DeOp +XP_TE_CHANDEOP +pevt_chandeop_help +%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O +2 + +Channel DeVoice +XP_TE_CHANDEVOICE +pevt_chandevoice_help +%C22*%O$t%C26$1%O removes voice from %C18$2%O +2 + +Channel Exempt +XP_TE_CHANEXEMPT +pevt_chanexempt_help +%C22*%O$t%C26$1%C sets exempt on %C18$2%O +2 + +Channel Half-Operator +XP_TE_CHANHOP +pevt_chanhop_help +%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O +2 + +Channel INVITE +XP_TE_CHANINVITE +pevt_chaninvite_help +%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O +2 + +Channel List +XP_TE_CHANLISTHEAD +pevt_generic_none_help +%UChannel Users Topic +0 + +Channel Message +XP_TE_CHANMSG +pevt_chanmsg_help +%C18%H<%H$4$1%C18%H>%H%O$t$2 +n4 + +Channel Mode Generic +XP_TE_CHANMODEGEN +pevt_chanmodegen_help +%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O +4 + +Channel Modes +XP_TE_CHANMODES +pevt_chanmodes_help +%C22*%O$tChannel %C22$1%O modes: %C24$2 +2 + +Channel Msg Hilight +XP_TE_HCHANMSG +pevt_chanmsg_help +%C19%H<%H$4%B$1%B%H>%H$t$2%O +n4 + +Channel Notice +XP_TE_CHANNOTICE +pevt_channotice_help +-%C18$1%C/%C22$2%C-$t$3%O +n3 + +Channel Operator +XP_TE_CHANOP +pevt_chanop_help +%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O +2 + +Channel Quiet +XP_TE_CHANQUIET +pevt_chanquiet_help +%C22*%O$t%C26$1%O sets quiet on %C18$2%O +2 + +Channel Remove Exempt +XP_TE_CHANRMEXEMPT +pevt_chanrmexempt_help +%C22*%O$t%C26$1%O removes exempt on %C18$2%O +2 + +Channel Remove Invite +XP_TE_CHANRMINVITE +pevt_chanrminvite_help +%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O +2 + +Channel Remove Keyword +XP_TE_CHANRMKEY +pevt_chanrmkey_help +%C22*%O$t%C26$1%O removes channel keyword +1 + +Channel Remove Limit +XP_TE_CHANRMLIMIT +pevt_chanrmlimit_help +%C22*%O$t%C26$1%O removes user limit +1 + +Channel Set Key +XP_TE_CHANSETKEY +pevt_chansetkey_help +%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O +2 + +Channel Set Limit +XP_TE_CHANSETLIMIT +pevt_chansetlimit_help +%C22*%O$t%C26$1%O sets channel limit to %C24$2%O +2 + +Channel UnBan +XP_TE_CHANUNBAN +pevt_chanunban_help +%C22*%O$t%C26$1%O removes ban on %C18$2%O +2 + +Channel UnQuiet +XP_TE_CHANUNQUIET +pevt_chanunquiet_help +%C22*%O$t%C26$1%O removes quiet on %C18$2%O +2 + +Channel Url +XP_TE_CHANURL +pevt_chanurl_help +%C22*%O$tChannel %C22$1%O url: %C24$2 +2 + +Channel Voice +XP_TE_CHANVOICE +pevt_chanvoice_help +%C22*%O$t%C26$1%O gives voice to %C18$2%O +2 + +Connected +XP_TE_CONNECTED +pevt_generic_none_help +%C23*%O$tConnected. Now logging in. +0 + +Connecting +XP_TE_CONNECT +pevt_connect_help +%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O) +3 + +Connection Failed +XP_TE_CONNFAIL +pevt_connfail_help +%C20*%O$tConnection failed (%C20$1%O) +1 + +CTCP Generic +XP_TE_CTCPGEN +pevt_ctcpgen_help +%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O +2 + +CTCP Generic to Channel +XP_TE_CTCPGENC +pevt_ctcpgenc_help +%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O +3 + +CTCP Send +XP_TE_CTCPSEND +pevt_ctcpsend_help +>%C18$1%C<$tCTCP %C24$2%O +n2 + +CTCP Sound +XP_TE_CTCPSND +pevt_ctcpsnd_help +%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O +2 + +CTCP Sound to Channel +XP_TE_CTCPSNDC +pevt_ctcpsnd_help +%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O) +3 + +DCC CHAT Abort +XP_TE_DCCCHATABORT +pevt_dccchatabort_help +%C23*%O$tDCC CHAT to %C18$1%O aborted. +1 + +DCC CHAT Connect +XP_TE_DCCCONCHAT +pevt_dccchatcon_help +%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O +2 + +DCC CHAT Failed +XP_TE_DCCCHATF +pevt_dccchaterr_help +%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O) +4 + +DCC CHAT Offer +XP_TE_DCCCHATOFFER +pevt_generic_nick_help +%C24*%O$tReceived a DCC CHAT offer from %C18$1%O +1 + +DCC CHAT Offering +XP_TE_DCCCHATOFFERING +pevt_generic_nick_help +%C24*%O$tOffering DCC CHAT to %C18$1%O +1 + +DCC CHAT Reoffer +XP_TE_DCCCHATREOFFER +pevt_generic_nick_help +%C24*%O$tAlready offering CHAT to %C18$1%O +1 + +DCC Conection Failed +XP_TE_DCCCONFAIL +pevt_dccconfail_help +%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O) +3 + +DCC Generic Offer +XP_TE_DCCGENERICOFFER +pevt_dccgenericoffer_help +%C23*%O$tReceived '%C23$1%C' from %C18$2%O +2 + +DCC Header +XP_TE_DCCHEAD +pevt_generic_none_help +%C16,17 Type To/From Status Size Pos File +0 + +DCC Malformed +XP_TE_MALFORMED +pevt_malformed_help +%C20*%O$tReceived a malformed DCC request from %C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O +2 + +DCC Offer +XP_TE_DCCOFFER +pevt_dccoffer_help +%C24*%O$tOffering '%C24$1%O' to %C18$2%O +3 + +DCC Offer Not Valid +XP_TE_DCCIVAL +pevt_generic_none_help +%C23*%O$tNo such DCC offer. +0 + +DCC RECV Abort +XP_TE_DCCRECVABORT +pevt_dccfileabort_help +%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted. +2 + +DCC RECV Complete +XP_TE_DCCRECVCOMP +pevt_dccrecvcomp_help +%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O +4 + +DCC RECV Connect +XP_TE_DCCCONRECV +pevt_dcccon_help +%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O +3 + +DCC RECV Failed +XP_TE_DCCRECVERR +pevt_dccrecverr_help +%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O) +4 + +DCC RECV File Open Error +XP_TE_DCCFILEERR +pevt_generic_file_help +%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O) +2 + +DCC Rename +XP_TE_DCCRENAME +pevt_dccrename_help +%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' instead. +2 + +DCC RESUME Request +XP_TE_DCCRESUMEREQUEST +pevt_dccresumeoffer_help +%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O. +3 + +DCC SEND Abort +XP_TE_DCCSENDABORT +pevt_dccfileabort_help +%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted. +2 + +DCC SEND Complete +XP_TE_DCCSENDCOMP +pevt_dccsendcomp_help +%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O +3 + +DCC SEND Connect +XP_TE_DCCCONSEND +pevt_dcccon_help +%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O +3 + +DCC SEND Failed +XP_TE_DCCSENDFAIL +pevt_dccsendfail_help +%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O) +3 + +DCC SEND Offer +XP_TE_DCCSENDOFFER +pevt_dccsendoffer_help +%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes) +4 + +DCC Stall +XP_TE_DCCSTALL +pevt_dccstall_help +%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting. +3 + +DCC Timeout +XP_TE_DCCTOUT +pevt_dccstall_help +%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting. +3 + +Delete Notify +XP_TE_DELNOTIFY +pevt_generic_nick_help +%C24*%O$t%C18$1%O deleted from notify list. +1 + +Disconnected +XP_TE_DISCON +pevt_discon_help +%C20*%O$tDisconnected (%C20$1%O) +1 + +Fail +XP_TE_FAIL +pevt_stdrpl_help +%C20*%O$t$2%O +2 + +Fail Command +XP_TE_FAILCMD +pevt_stdrplcmd_help +%C20*%O$t$1: $3%O +3 + +Found IP +XP_TE_FOUNDIP +pevt_foundip_help +%C24*%O$tFound your IP: %C30[%C24$1%C30]%O +1 + +Generic Message +XP_TE_GENMSG +pevt_genmsg_help +$1$t$2 +n2 + +Ignore Add +XP_TE_IGNOREADD +pevt_ignoreaddremove_help +%O%C18$1%O added to ignore list. +1 + +Ignore Changed +XP_TE_IGNORECHANGE +pevt_ignoreaddremove_help +%OIgnore on %C18$1%O changed. +1 + +Ignore Footer +XP_TE_IGNOREFOOTER +pevt_generic_none_help +%C16,17 +0 + +Ignore Header +XP_TE_IGNOREHEADER +pevt_generic_none_help +%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG +0 + +Ignore Remove +XP_TE_IGNOREREMOVE +pevt_ignoreaddremove_help +%O%C18$1%O removed from ignore list. +1 + +Ignorelist Empty +XP_TE_IGNOREEMPTY +pevt_generic_none_help +%OIgnore list is empty. +0 + +Invite +XP_TE_INVITE +pevt_generic_channel_help +%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O) +1 + +Invited +XP_TE_INVITED +pevt_invited_help +%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O) +3 + +Invited Other +XP_TE_INVITEDOTHER +pevt_invitedother_help +%C24*%O$t%C26$3%C has been invited to %C22$1%O by %C18$2%O (%C29$4%O) +4 + +Join +XP_TE_JOIN +pevt_join_help +%C23*$t$1 ($3%C23) has joined +4 + +Keyword +XP_TE_KEYWORD +pevt_generic_channel_help +%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O) +1 + +Kick +XP_TE_KICK +pevt_kick_help +%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O) +4 + +Killed +XP_TE_KILL +pevt_kill_help +%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O) +2 + +Message Send +XP_TE_MSGSEND +pevt_ctcpsend_help +%O>%C18$1%C<%O$t$2 +n2 + +Motd +XP_TE_MOTD +pevt_servertext_help +%C29*%O$t%C29$1%O +n1 + +MOTD Skipped +XP_TE_MOTDSKIP +pevt_generic_none_help +%C29*%O$t%C29MOTD Skipped%O +0 + +Nick Clash +XP_TE_NICKCLASH +pevt_nickclash_help +%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O... +2 + +Nick Erroneous +XP_TE_NICKERROR +pevt_nickclash_help +%C23*%O$t%C28$1%C is erroneous. Retrying with %C18$2%O... +2 + +Nick Failed +XP_TE_NICKFAIL +pevt_generic_none_help +%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another. +0 + +No DCC +XP_TE_NODCC +pevt_generic_none_help +%C20*%O$tNo such DCC. +0 + +No Running Process +XP_TE_NOCHILD +pevt_generic_none_help +%C23*%O$tNo process is currently running +0 + +Note +XP_TE_NOTE +pevt_stdrpl_help +%C22*%O$t$2%O +2 + +Note Command +XP_TE_NOTECMD +pevt_stdrplcmd_help +%C22*%O$t$1: $3%O +3 + +Notice +XP_TE_NOTICE +pevt_notice_help +%O-%C18$1%O-$t$2 +n2 + +Notice Send +XP_TE_NOTICESEND +pevt_ctcpsend_help +%O->%C18$1%O<-$t$2 +n2 + +Notify Away +XP_TE_NOTIFYAWAY +pevt_notifyaway_help +%C23*%O$tNotify: %C18$1%C is away (%C24$2%O) +2 + +Notify Back +XP_TE_NOTIFYBACK +pevt_generic_nick_help +%C23*%O$tNotify: %C18$1%C is back +1 + +Notify Empty +XP_TE_NOTIFYEMPTY +pevt_generic_none_help +$tNotify list is empty. +0 + +Notify Header +XP_TE_NOTIFYHEAD +pevt_generic_none_help +%C16,17 Notify List +0 + +Notify Number +XP_TE_NOTIFYNUMBER +pevt_notifynumber_help +%C23*%O$t%C23$1%O users in notify list. +1 + +Notify Offline +XP_TE_NOTIFYOFFLINE +pevt_generic_nick_help +%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O) +3 + +Notify Online +XP_TE_NOTIFYONLINE +pevt_generic_nick_help +%C23*%O$tNotify: %C18$1%C is online (%C29$3%O) +3 + +Open Dialog +XP_TE_OPENDIALOG +pevt_generic_none_help + +n0 + +Part +XP_TE_PART +pevt_part_help +%C24*$t$1 ($2%C24) has left +3 + +Part with Reason +XP_TE_PARTREASON +pevt_partreason_help +%C24*$t$1 ($2%C24) has left ($4) +4 + +Ping Reply +XP_TE_PINGREP +pevt_pingrep_help +%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s) +2 + +Ping Timeout +XP_TE_PINGTIMEOUT +pevt_pingtimeout_help +%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting. +1 + +Private Action +XP_TE_PRIVACTION +pevt_privmsg_help +%C18**$t$3$1%O $2 %C18** +n3 + +Private Action to Dialog +XP_TE_DPRIVACTION +pevt_privmsg_help +%C18*$t$3$1%O $2 +n3 + +Private Message +XP_TE_PRIVMSG +pevt_privmsg_help +%C18*%C18$3$1*%O$t$2 +n3 + +Private Message to Dialog +XP_TE_DPRIVMSG +pevt_privmsg_help +%C18%H<%H$3$1%H>%H%O$t$2 +n3 + +Process Already Running +XP_TE_ALREADYPROCESS +pevt_generic_none_help +%C24*%O$tA process is already running +0 + +Quit +XP_TE_QUIT +pevt_quit_help +%C24*$t$1 has quit ($2) +3 + +Raw Modes +XP_TE_RAWMODES +pevt_rawmodes_help +%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O +2 + +Receive Wallops +XP_TE_WALLOPS +pevt_privmsg_help +%O-%C29$1/Wallops%O-$t$2 +2 + +Resolving User +XP_TE_RESOLVINGUSER +pevt_resolvinguser_help +%C24*%O$tLooking up IP number for %C18$1%O... +2 + +SASL Authenticating +XP_TE_SASLAUTH +pevt_saslauth_help +%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O) +2 + +SASL Response +XP_TE_SASLRESPONSE +pevt_saslresponse_help +%C29*%O$t$4 +n4 + +Server Connected +XP_TE_SERVERCONNECTED +pevt_generic_none_help +%C29*%O$tConnected. +0 + +Server Error +XP_TE_SERVERERROR +pevt_servererror_help +%C29*%O$t%C20$1%O +n1 + +Server Lookup +XP_TE_SERVERLOOKUP +pevt_serverlookup_help +%C29*%O$tLooking up %C29$1%O +1 + +Server Notice +XP_TE_SERVNOTICE +pevt_servertext_help +%C29*%O$t$1 +n2 + +Server Text +XP_TE_SERVTEXT +pevt_servertext_help +%C29*%O$t$1 +n3 + +SSL Message +XP_TE_SSLMESSAGE +pevt_sslmessage_help +%C29*%O$t$1 +n2 + +Stop Connection +XP_TE_STOPCONNECT +pevt_sconnect_help +%C23*%O$tStopped previous connection attempt (%C24$1%O) +1 + +Topic +XP_TE_TOPIC +pevt_topic_help +%C22*%O$tTopic for %C22$1%C is: $2%O +2 + +Topic Change +XP_TE_NEWTOPIC +pevt_newtopic_help +%C22*%O$t%C26$1%C has changed the topic to: $2%O +3 + +Topic Creation +XP_TE_TOPICDATE +pevt_topicdate_help +%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O) +3 + +Unknown Host +XP_TE_UKNHOST +pevt_generic_none_help +%C20*%O$tUnknown host. Maybe you misspelled it? +0 + +User Limit +XP_TE_USERLIMIT +pevt_generic_channel_help +%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O) +1 + +Users On Channel +XP_TE_USERSONCHAN +pevt_usersonchan_help +%C22*%O$tUsers on %C22$1%C: %C24$2%O +2 + +Warn +XP_TE_WARN +pevt_stdrpl_help +%C23*%O$t$2%O +2 + +Warn Command +XP_TE_WARNCMD +pevt_stdrplcmd_help +%C23*%O$t$1: $3%O +3 + +WhoIs Authenticated +XP_TE_WHOIS_AUTH +pevt_whoisauth_help +%C23*%O$t%C28[%C18$1%C28]%O $2 %C18$3%O +n3 + +WhoIs Away Line +XP_TE_WHOIS5 +pevt_whois5_help +%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O +2 + +WhoIs Channel/Oper Line +XP_TE_WHOIS2 +pevt_whois2_help +%C23*%O$t%C28[%C18$1%C28]%O $2 +n2 + +WhoIs End +XP_TE_WHOIS6 +pevt_whois6_help +%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list. +1 + +WhoIs Identified +XP_TE_WHOIS_ID +pevt_whoisid_help +%C23*%O$t%C28[%C18$1%C28]%O $2 +n2 + +WhoIs Idle Line +XP_TE_WHOIS4 +pevt_whois4_help +%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O +2 + +WhoIs Idle Line with Signon +XP_TE_WHOIS4T +pevt_whois4t_help +%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O +3 + +WhoIs Name Line +XP_TE_WHOIS1 +pevt_whois1_help +%C23*%O$t%C28[%C18$1%C28] %C30(%C24$2@$3%C30)%O: %C18$4%O +n4 + +WhoIs Real Host +XP_TE_WHOIS_REALHOST +pevt_whoisrealhost_help +%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O +4 + +WhoIs Server Line +XP_TE_WHOIS3 +pevt_whois3_help +%C23*%O$t%C28[%C18$1%C28]%O %C29$2%O +n2 + +WhoIs Special +XP_TE_WHOIS_SPECIAL +pevt_whoisid_help +%C23*%O$t%C28[%C18$1%C28]%O $2 +n3 + +You Join +XP_TE_UJOIN +pevt_join_help +%C19*%O$tNow talking on %C22$2%O +3 + +You Kicked +XP_TE_UKICK +pevt_ukick_help +%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O) +4 + +You Part +XP_TE_UPART +pevt_part_help +%C19*%O$tYou have left channel %C22$3%O +3 + +You Part with Reason +XP_TE_UPARTREASON +pevt_partreason_help +%C19*%O$tYou have left channel %C22$3%C (%C24$4%O) +4 + +Your Action +XP_TE_UACTION +pevt_chanaction_help +%C20*$t%B$1%B %C30$2%O +n3 + +Your Invitation +XP_TE_UINVITE +pevt_uinvite_help +%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O) +3 + +Your Message +XP_TE_UCHANMSG +pevt_chanmsg_help +%C20%H<%H$4$1%H>%H%O%C30$t$2%O +n4 + +Your Nick Changing +XP_TE_UCHANGENICK +pevt_uchangenick_help +%C20*%O$tYou are now known as %C18$2%O +2 + diff --git a/hexchat/src/common/tree.c b/hexchat/src/common/tree.c new file mode 100644 index 0000000..b9a894d --- /dev/null +++ b/hexchat/src/common/tree.c @@ -0,0 +1,254 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +/* +This is used for quick userlist insertion and lookup. It's not really +a tree, but it could be :) +*/ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> + +#include "tree.h" + +#define ARRAY_GROW 32 + +struct _tree +{ + int elements; + int array_size; + void **array; + tree_cmp_func *cmp; + void *data; +}; + +tree * +tree_new (tree_cmp_func *cmp, void *data) +{ + tree *t = g_new0 (tree, 1); + t->cmp = cmp; + t->data = data; + return t; +} + +void +tree_destroy (tree *t) +{ + if (t) + { + g_free (t->array); + g_free (t); + } +} + +static int +tree_find_insertion_pos (tree *t, void *key, int *done) +{ + int c, u, l, idx; + + if (t->elements < 1) + { + *done = 1; + t->array[0] = key; + t->elements++; + return 0; + } + + if (t->elements < 2) + { + *done = 1; + c = t->cmp (key, t->array[0], t->data); + if (c == 0) + return -1; + t->elements++; + if (c > 0) + { + t->array[1] = key; + return 1; + } + t->array[1] = t->array[0]; + t->array[0] = key; + return 0; + } + + *done = 0; + + c = t->cmp (key, t->array[0], t->data); + if (c < 0) + return 0; /* prepend */ + + c = t->cmp (key, t->array[t->elements - 1], t->data); + if (c > 0) + return t->elements; /* append */ + + l = 0; + u = t->elements - 1; + while (1) + { + idx = (l + u) / 2; + c = t->cmp (key, t->array[idx], t->data); + + if (0 > c) + u = idx; + else if (0 < c && 0 > t->cmp (key, t->array[idx+1], t->data)) + return idx + 1; + else if (c == 0) + return -1; + else + l = idx + 1; + } +} + +static void +tree_insert_at_pos (tree *t, void *key, int pos) +{ + int post_bytes; + + /* append is easy */ + if (pos != t->elements) + { + post_bytes = (t->elements - pos) * sizeof (void *); + memmove (&t->array[pos + 1], &t->array[pos], post_bytes); + } + + t->array[pos] = key; + t->elements++; +} + +static void * +mybsearch (const void *key, void **array, size_t nmemb, + int (*compar) (const void *, const void *, void *data), void *data, int *pos) +{ + int l, u, idx; + int comparison; + + l = 0; + u = nmemb; + while (l < u) + { + idx = (l + u) / 2; + comparison = (*compar) (key, array[idx], data); + if (comparison < 0) + u = idx; + else if (comparison > 0) + l = idx + 1; + else + { + *pos = idx; + return array[idx]; + } + } + + return NULL; +} + +void * +tree_find (tree *t, const void *key, tree_cmp_func *cmp, void *data, int *pos) +{ + if (!t || !t->array) + return NULL; + + return mybsearch (key, &t->array[0], t->elements, cmp, data, pos); +} + +void * +tree_remove_at_pos (tree *t, int pos) +{ + int post_bytes; + void *ret = t->array[pos]; + + t->elements--; + if (pos != t->elements) + { + post_bytes = (t->elements - pos) * sizeof (void *); + memmove (&t->array[pos], &t->array[pos + 1], post_bytes); + } + return ret; +} + +int +tree_remove (tree *t, void *key, int *pos) +{ + void *data; + + data = tree_find (t, key, t->cmp, t->data, pos); + if (!data) + return 0; + + tree_remove_at_pos (t, *pos); + return 1; +} + +void +tree_foreach (tree *t, tree_traverse_func *func, void *data) +{ + int j; + + if (!t || !t->array) + return; + + for (j = 0; j < t->elements; j++) + { + if (!func (t->array[j], data)) + break; + } +} + +static void +tree_grow (tree *t) +{ + if (t->array_size < t->elements + 1) + { + int new_size = t->array_size + ARRAY_GROW; + + t->array = realloc (t->array, sizeof (void *) * new_size); + t->array_size = new_size; + } + +} + +int +tree_insert (tree *t, void *key) +{ + int pos, done; + + if (!t) + return -1; + + tree_grow (t); + pos = tree_find_insertion_pos (t, key, &done); + if (!done && pos != -1) + tree_insert_at_pos (t, key, pos); + + return pos; +} + +void +tree_append (tree *t, void *key) +{ + tree_grow (t); + tree_insert_at_pos (t, key, t->elements); +} + +int tree_size (tree *t) +{ + return t->elements; +} + diff --git a/hexchat/src/common/tree.h b/hexchat/src/common/tree.h new file mode 100644 index 0000000..8cde93e --- /dev/null +++ b/hexchat/src/common/tree.h @@ -0,0 +1,40 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_TREE_H +#define HEXCHAT_TREE_H + +#include <glib.h> + +typedef struct _tree tree; + +typedef int (tree_cmp_func) (const void *keya, const void *keyb, void *data); +typedef int (tree_traverse_func) (const void *key, void *data); + +tree *tree_new (tree_cmp_func *cmp, void *data); +void tree_destroy (tree *t); +void *tree_find (tree *t, const void *key, tree_cmp_func *cmp, void *data, int *pos); +int tree_remove (tree *t, void *key, int *pos); +void *tree_remove_at_pos (tree *t, int pos); +void tree_foreach (tree *t, tree_traverse_func *func, void *data); +int tree_insert (tree *t, void *key); +void tree_append (tree* t, void *key); +int tree_size (tree *t); + +#endif diff --git a/hexchat/src/common/typedef.h b/hexchat/src/common/typedef.h new file mode 100644 index 0000000..2034f92 --- /dev/null +++ b/hexchat/src/common/typedef.h @@ -0,0 +1,44 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_TYPEDEF_H +#define HEXCHAT_TYPEDEF_H + +#ifdef WIN32 + +#ifndef SSIZE_T_DEFINED +#ifdef ssize_t +#undef ssize_t +#endif +#ifdef _WIN64 +typedef __int64 ssize_t; +#else +typedef _W64 int ssize_t; +#endif +#define SSIZE_T_DEFINED +#endif + +#ifndef fstat +#define fstat _fstat +#define stat _stat +#endif + +#endif + +#endif diff --git a/hexchat/src/common/url.c b/hexchat/src/common/url.c new file mode 100644 index 0000000..ae85ae4 --- /dev/null +++ b/hexchat/src/common/url.c @@ -0,0 +1,685 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <ctype.h> +#include "hexchat.h" +#include "hexchatc.h" +#include "cfgfiles.h" +#include "fe.h" +#include "tree.h" +#include "url.h" +#ifdef HAVE_STRINGS_H +#include <strings.h> +#endif + +void *url_tree = NULL; +GTree *url_btree = NULL; +static gboolean regex_match (const GRegex *re, const char *word, + int *start, int *end); +static const GRegex *re_url (void); +static const GRegex *re_url_no_scheme (void); +static const GRegex *re_host (void); +static const GRegex *re_host6 (void); +static const GRegex *re_email (void); +static const GRegex *re_nick (void); +static const GRegex *re_channel (void); +static const GRegex *re_path (void); +static gboolean match_nick (const char *word, int *start, int *end); +static gboolean match_channel (const char *word, int *start, int *end); +static gboolean match_email (const char *word, int *start, int *end); +static gboolean match_url (const char *word, int *start, int *end); +static gboolean match_host (const char *word, int *start, int *end); +static gboolean match_host6 (const char *word, int *start, int *end); +static gboolean match_path (const char *word, int *start, int *end); + +static int +url_free (char *url, void *data) +{ + g_free (url); + return TRUE; +} + +void +url_clear (void) +{ + tree_foreach (url_tree, (tree_traverse_func *)url_free, NULL); + tree_destroy (url_tree); + url_tree = NULL; + g_tree_destroy (url_btree); + url_btree = NULL; +} + +static int +url_save_cb (char *url, FILE *fd) +{ + fprintf (fd, "%s\n", url); + return TRUE; +} + +void +url_save_tree (const char *fname, const char *mode, gboolean fullpath) +{ + FILE *fd; + + if (fullpath) + fd = hexchat_fopen_file (fname, mode, XOF_FULLPATH); + else + fd = hexchat_fopen_file (fname, mode, 0); + if (fd == NULL) + return; + + tree_foreach (url_tree, (tree_traverse_func *)url_save_cb, fd); + fclose (fd); +} + +static void +url_save_node (char* url) +{ + FILE *fd; + + /* open <config>/url.log in append mode */ + fd = hexchat_fopen_file ("url.log", "a", 0); + if (fd == NULL) + { + return; + } + + fprintf (fd, "%s\n", url); + fclose (fd); +} + +static int +url_find (char *urltext) +{ + return (g_tree_lookup_extended (url_btree, urltext, NULL, NULL)); +} + +static void +url_add (char *urltext, int len) +{ + char *data; + int size; + + /* we don't need any URLs if we have neither URL grabbing nor URL logging enabled */ + if (!prefs.hex_url_grabber && !prefs.hex_url_logging) + { + return; + } + + data = g_strndup (urltext, len); + + if (data[len - 1] == '.') /* chop trailing dot */ + { + len--; + data[len] = 0; + } + /* chop trailing ) but only if there's no counterpart */ + if (data[len - 1] == ')' && strchr (data, '(') == NULL) + { + data[len - 1] = 0; + } + + if (prefs.hex_url_logging) + { + url_save_node (data); + } + + /* the URL is saved already, only continue if we need the URL grabber too */ + if (!prefs.hex_url_grabber) + { + g_free (data); + return; + } + + if (!url_tree) + { + url_tree = tree_new ((tree_cmp_func *)strcasecmp, NULL); + url_btree = g_tree_new ((GCompareFunc)strcasecmp); + } + + if (url_find (data)) + { + g_free (data); + return; + } + + size = tree_size (url_tree); + /* 0 is unlimited */ + if (prefs.hex_url_grabber_limit > 0 && size >= prefs.hex_url_grabber_limit) + { + /* the loop is necessary to handle having the limit lowered while + HexChat is running */ + size -= prefs.hex_url_grabber_limit; + for(; size > 0; size--) + { + char *pos; + + pos = tree_remove_at_pos (url_tree, 0); + g_tree_remove (url_btree, pos); + g_free (pos); + } + } + + tree_append (url_tree, data); + g_tree_insert (url_btree, data, GINT_TO_POINTER (tree_size (url_tree) - 1)); + fe_url_add (data); +} + +/* check if a word is clickable. This is called on mouse motion events, so + keep it FAST! This new version was found to be almost 3x faster than + 2.4.4 release. */ + +static int laststart = 0; +static int lastend = 0; +static int lasttype = 0; + +#define NICKPRE "~+!@%&" +#define CHANPRE "#&!+" + +int +url_check_word (const char *word) +{ + struct { + gboolean (*match) (const char *word, int *start, int *end); + int type; + } m[] = { + { match_url, WORD_URL }, + { match_email, WORD_EMAIL }, + { match_channel, WORD_CHANNEL }, + { match_host6, WORD_HOST6 }, + { match_host, WORD_HOST }, + { match_path, WORD_PATH }, + { match_nick, WORD_NICK }, + { NULL, 0} + }; + int i; + + laststart = lastend = lasttype = 0; + + for (i = 0; m[i].match; i++) + if (m[i].match (word, &laststart, &lastend)) + { + lasttype = m[i].type; + return lasttype; + } + + return 0; +} + +static gboolean +match_nick (const char *word, int *start, int *end) +{ + const server *serv = current_sess->server; + const char *nick_prefixes = serv ? serv->nick_prefixes : NICKPRE; + char *str; + + if (!regex_match (re_nick (), word, start, end)) + return FALSE; + + /* ignore matches with prefixes that the server doesn't use */ + if (strchr (NICKPRE, word[*start]) + && !strchr (nick_prefixes, word[*start])) + return FALSE; + + /* nick prefix is not part of the matched word */ + if (strchr (nick_prefixes, word[*start])) + (*start)++; + + str = g_strndup (&word[*start], *end - *start); + + if (!userlist_find (current_sess, str)) + { + g_free (str); + return FALSE; + } + + g_free (str); + + return TRUE; +} + +static gboolean +match_channel (const char *word, int *start, int *end) +{ + const server *serv = current_sess->server; + const char *chan_prefixes = serv ? serv->chantypes : CHANPRE; + const char *nick_prefixes = serv ? serv->nick_prefixes : NICKPRE; + + if (!regex_match (re_channel (), word, start, end)) + return FALSE; + + /* Check for +#channel (for example whois output) */ + if (strchr (nick_prefixes, word[*start]) != NULL + && strchr (chan_prefixes, word[*start + 1]) != NULL) + { + (*start)++; + return TRUE; + } + /* Or just #channel */ + else if (strchr (chan_prefixes, word[*start]) != NULL) + return TRUE; + + return FALSE; +} + +static gboolean +match_email (const char *word, int *start, int *end) +{ + return regex_match (re_email (), word, start, end); +} + +static gboolean +match_url (const char *word, int *start, int *end) +{ + if (regex_match (re_url (), word, start, end)) + return TRUE; + + return regex_match (re_url_no_scheme (), word, start, end); +} + +static gboolean +match_host (const char *word, int *start, int *end) +{ + return regex_match (re_host (), word, start, end); +} + +static gboolean +match_host6 (const char *word, int *start, int *end) +{ + return regex_match (re_host6 (), word, start, end); +} + +static gboolean +match_path (const char *word, int *start, int *end) +{ + return regex_match (re_path (), word, start, end); +} + +/* List of IRC commands for which contents (and thus possible URLs) + * are visible to the user. NOTE: Trailing blank required in each. */ +static char *commands[] = { + "NOTICE ", + "PRIVMSG ", + "TOPIC ", + "332 ", /* RPL_TOPIC */ + "372 " /* RPL_MOTD */ +}; + +#define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0])) + +void +url_check_line (char *buf) +{ + GRegex *re(void); + GMatchInfo *gmi; + char *po = buf; + size_t i; + + /* Skip over message prefix */ + if (*po == ':') + { + po = strchr (po, ' '); + if (!po) + return; + po++; + } + /* Allow only commands from the above list */ + for (i = 0; i < ARRAY_SIZE (commands); i++) + { + char *cmd = commands[i]; + int len = strlen (cmd); + + if (strncmp (cmd, po, len) == 0) + { + po += len; + break; + } + } + if (i == ARRAY_SIZE (commands)) + return; + + /* Skip past the channel name or user nick */ + po = strchr (po, ' '); + if (!po) + return; + po++; + + g_regex_match(re_url(), po, 0, &gmi); + while (g_match_info_matches(gmi)) + { + int start, end; + + g_match_info_fetch_pos(gmi, 0, &start, &end); + while (end > start && (po[end - 1] == '\r' || po[end - 1] == '\n')) + end--; + url_add(po + start, end - start); + g_match_info_next(gmi, NULL); + } + g_match_info_free(gmi); +} + +int +url_last (int *lstart, int *lend) +{ + *lstart = laststart; + *lend = lastend; + return lasttype; +} + +static gboolean +regex_match (const GRegex *re, const char *word, int *start, int *end) +{ + GMatchInfo *gmi; + + g_regex_match (re, word, 0, &gmi); + + if (!g_match_info_matches (gmi)) + { + g_match_info_free (gmi); + return FALSE; + } + + while (g_match_info_matches (gmi)) + { + g_match_info_fetch_pos (gmi, 0, start, end); + g_match_info_next (gmi, NULL); + } + + g_match_info_free (gmi); + + return TRUE; +} + +/* Miscellaneous description --- */ +#define DOMAIN "[_\\pL\\pN\\pS][-_\\pL\\pN\\pS]*(\\.[-_\\pL\\pN\\pS]+)*" +#define TLD "\\.[\\pL][-\\pL\\pN]*[\\pL]" +#define IPADDR "[0-9]{1,3}(\\.[0-9]{1,3}){3}" +#define IPV6GROUP "([0-9a-f]{0,4})" +#define IPV6ADDR "((" IPV6GROUP "(:" IPV6GROUP "){7})" \ + "|(" IPV6GROUP "(:" IPV6GROUP ")*:(:" IPV6GROUP ")+))" /* with :: compression */ +#define HOST "(" DOMAIN TLD "|" IPADDR "|" IPV6ADDR ")" +/* In urls the IPv6 must be enclosed in square brackets */ +#define HOST_URL "(" DOMAIN TLD "|" IPADDR "|" "\\[" IPV6ADDR "\\]" ")" +#define HOST_URL_OPT_TLD "(" DOMAIN "|" HOST_URL ")" +#define PORT "(:[1-9][0-9]{0,4})" +#define OPT_PORT "(" PORT ")?" + +static GRegex * +make_re (const char *grist) +{ + GRegex *ret; + GError *err = NULL; + + ret = g_regex_new (grist, G_REGEX_CASELESS | G_REGEX_OPTIMIZE, 0, &err); + + return ret; +} + +/* HOST description --- */ +/* (see miscellaneous above) */ +static const GRegex * +re_host (void) +{ + static GRegex *host_ret; + + if (host_ret) return host_ret; + + host_ret = make_re ("(" "(" HOST_URL PORT ")|(" HOST ")" ")"); + + return host_ret; +} + +static const GRegex * +re_host6 (void) +{ + static GRegex *host6_ret; + + if (host6_ret) return host6_ret; + + host6_ret = make_re ("(" "(" IPV6ADDR ")|(" "\\[" IPV6ADDR "\\]" PORT ")" ")"); + + return host6_ret; +} + +/* URL description --- */ +#define SCHEME "(%s)" +#define LPAR "\\(" +#define RPAR "\\)" +#define NOPARENS "[^() \t]*" +#define PATH \ + "(" \ + "(" LPAR NOPARENS RPAR ")" \ + "|" \ + "(" NOPARENS ")" \ + ")*" /* Zero or more occurrences of either of these */ \ + "(?<![.,?!\\]])" /* Not allowed to end with these */ +#define USERINFO "([-a-z0-9._~%]+(:[-a-z0-9._~%]*)?@)" + +/* Flags used to describe URIs (RFC 3986) + * + * Bellow is an example of what the flags match. + * + * URI_AUTHORITY - http://example.org:80/foo/bar + * ^^^^^^^^^^^^^^^^ + * URI_USERINFO/URI_OPT_USERINFO - http://user@example.org:80/foo/bar + * ^^^^^ + * URI_PATH - http://example.org:80/foo/bar + * ^^^^^^^^ + */ +#define URI_AUTHORITY (1 << 0) +#define URI_OPT_USERINFO (1 << 1) +#define URI_USERINFO (1 << 2) +#define URI_PATH (1 << 3) + +struct +{ + const char *scheme; /* scheme name. e.g. http */ + const char *path_sep; /* string that begins the path */ + int flags; /* see above (flag macros) */ +} uri[] = { + { "irc", "/", URI_PATH }, + { "ircs", "/", URI_PATH }, + { "rtsp", "/", URI_AUTHORITY | URI_PATH }, + { "feed", "/", URI_AUTHORITY | URI_PATH }, + { "teamspeak", "?", URI_AUTHORITY | URI_PATH }, + { "ftp", "/", URI_AUTHORITY | URI_OPT_USERINFO | URI_PATH }, + { "sftp", "/", URI_AUTHORITY | URI_OPT_USERINFO | URI_PATH }, + { "ftps", "/", URI_AUTHORITY | URI_OPT_USERINFO | URI_PATH }, + { "http", "/", URI_AUTHORITY | URI_OPT_USERINFO | URI_PATH }, + { "https", "/", URI_AUTHORITY | URI_OPT_USERINFO | URI_PATH }, + { "cvs", "/", URI_AUTHORITY | URI_OPT_USERINFO | URI_PATH }, + { "svn", "/", URI_AUTHORITY | URI_OPT_USERINFO | URI_PATH }, + { "git", "/", URI_AUTHORITY | URI_OPT_USERINFO | URI_PATH }, + { "bzr", "/", URI_AUTHORITY | URI_OPT_USERINFO | URI_PATH }, + { "rsync", "/", URI_AUTHORITY | URI_OPT_USERINFO | URI_PATH }, + { "mumble", "/", URI_AUTHORITY | URI_OPT_USERINFO | URI_PATH }, + { "ventrilo", "/", URI_AUTHORITY | URI_OPT_USERINFO | URI_PATH }, + { "xmpp", "/", URI_AUTHORITY | URI_OPT_USERINFO | URI_PATH }, + { "h323", ";", URI_AUTHORITY | URI_OPT_USERINFO | URI_PATH }, + { "imap", "/", URI_AUTHORITY | URI_OPT_USERINFO | URI_PATH }, + { "pop", "/", URI_AUTHORITY | URI_OPT_USERINFO | URI_PATH }, + { "nfs", "/", URI_AUTHORITY | URI_OPT_USERINFO | URI_PATH }, + { "smb", "/", URI_AUTHORITY | URI_OPT_USERINFO | URI_PATH }, + { "gopher", "/", URI_AUTHORITY | URI_PATH }, + { "gemini", "/", URI_AUTHORITY | URI_PATH }, + { "ssh", "", URI_AUTHORITY | URI_OPT_USERINFO }, + { "sip", "", URI_AUTHORITY | URI_USERINFO }, + { "sips", "", URI_AUTHORITY | URI_USERINFO }, + { "magnet", "?", URI_PATH }, + { "mailto", "", URI_PATH }, + { "bitcoin", "", URI_PATH }, + { "gtalk", "", URI_PATH }, + { "steam", "", URI_PATH }, + { "file", "/", URI_PATH }, + { "callto", "", URI_PATH }, + { "skype", "", URI_PATH }, + { "geo", "", URI_PATH }, + { "spotify", "", URI_PATH }, + { "lastfm", "/", URI_PATH }, + { "xfire", "", URI_PATH }, + { "ts3server", "", URI_PATH }, + { NULL, "", 0} +}; + +static const GRegex * +re_url_no_scheme (void) +{ + static GRegex *url_ret = NULL; + + if (url_ret) return url_ret; + + url_ret = make_re ("(" HOST_URL OPT_PORT "/" "(" PATH ")?" ")"); + + return url_ret; +} + +static const GRegex * +re_url (void) +{ + static GRegex *url_ret = NULL; + GString *grist_gstr; + char *grist; + int i; + + if (url_ret) return url_ret; + + grist_gstr = g_string_new (NULL); + + for (i = 0; uri[i].scheme; i++) + { + if (i) + g_string_append (grist_gstr, "|"); + + g_string_append (grist_gstr, "("); + g_string_append_printf (grist_gstr, "%s:", uri[i].scheme); + + if (uri[i].flags & URI_AUTHORITY) + g_string_append (grist_gstr, "//"); + + if (uri[i].flags & URI_USERINFO) + g_string_append (grist_gstr, USERINFO); + else if (uri[i].flags & URI_OPT_USERINFO) + g_string_append (grist_gstr, USERINFO "?"); + + if (uri[i].flags & URI_AUTHORITY) + g_string_append (grist_gstr, HOST_URL_OPT_TLD OPT_PORT); + + if (uri[i].flags & URI_PATH) + { + char *sep_escaped = g_regex_escape_string (uri[i].path_sep, strlen(uri[i].path_sep)); + + g_string_append_printf (grist_gstr, "(" "%s" PATH ")?", sep_escaped); + + g_free (sep_escaped); + } + + g_string_append (grist_gstr, ")"); + } + + grist = g_string_free (grist_gstr, FALSE); + + url_ret = make_re (grist); + g_free (grist); + + return url_ret; +} + +/* EMAIL description --- */ +#define EMAIL "[a-z0-9][._%+-a-z0-9]+@" "(" HOST_URL ")" + +static const GRegex * +re_email (void) +{ + static GRegex *email_ret; + + if (email_ret) return email_ret; + + email_ret = make_re ("(" EMAIL ")"); + + return email_ret; +} + +/* NICK description --- */ +/* For NICKPRE see before url_check_word() */ +#define NICKHYP "-" +#define NICKLET "a-z" +#define NICKDIG "0-9" +/* Note for NICKSPE: \\\\ boils down to a single \ */ +#define NICKSPE "\\[\\]\\\\`_^{|}" +#if 0 +#define NICK0 "[" NICKPRE "]?[" NICKLET NICKSPE "]" +#else +/* Allow violation of rfc 2812 by allowing digit as first char */ +/* Rationale is that do_an_re() above will anyway look up what */ +/* we find, and that WORD_NICK is the last item in the array */ +/* that do_an_re() runs through. */ +#define NICK0 "^[" NICKPRE "]?[" NICKLET NICKDIG NICKSPE "]" +#endif +#define NICK1 "[" NICKHYP NICKLET NICKDIG NICKSPE "]*" +#define NICK NICK0 NICK1 + +static const GRegex * +re_nick (void) +{ + static GRegex *nick_ret; + + if (nick_ret) return nick_ret; + + nick_ret = make_re ("(" NICK ")"); + + return nick_ret; +} + +/* CHANNEL description --- */ +#define CHANNEL "[" CHANPRE "][^ \t\a,]+(?:,[" CHANPRE "][^ \t\a,]+)*" + +static const GRegex * +re_channel (void) +{ + static GRegex *channel_ret; + + if (channel_ret) return channel_ret; + + channel_ret = make_re ("(" CHANNEL ")"); + + return channel_ret; +} + +/* PATH description --- */ +#ifdef WIN32 +/* Windows path can be .\ ..\ or C: D: etc */ +#define FS_PATH "^(\\.{1,2}\\\\|[a-z]:).*" +#else +/* Linux path can be / or ./ or ../ etc */ +#define FS_PATH "^(/|\\./|\\.\\./).*" +#endif + +static const GRegex * +re_path (void) +{ + static GRegex *path_ret; + + if (path_ret) return path_ret; + + path_ret = make_re ("(" FS_PATH ")"); + + return path_ret; +} diff --git a/hexchat/src/common/url.h b/hexchat/src/common/url.h new file mode 100644 index 0000000..1b1deb3 --- /dev/null +++ b/hexchat/src/common/url.h @@ -0,0 +1,41 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_URL_H +#define HEXCHAT_URL_H + +extern void *url_tree; + +#define WORD_URL 1 +#define WORD_CHANNEL 2 +#define WORD_HOST 3 +#define WORD_HOST6 4 +#define WORD_EMAIL 5 +#define WORD_NICK 6 +/* anything >0 will be displayed as a link by gtk_xtext_motion_notify() */ +#define WORD_DIALOG -1 +#define WORD_PATH -2 + +void url_clear (void); +void url_save_tree (const char *fname, const char *mode, gboolean fullpath); +int url_last (int *, int *); +int url_check_word (const char *word); +void url_check_line (char *buf); + +#endif diff --git a/hexchat/src/common/userlist.c b/hexchat/src/common/userlist.c new file mode 100644 index 0000000..5f2d67f --- /dev/null +++ b/hexchat/src/common/userlist.c @@ -0,0 +1,471 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "hexchat.h" +#include "modes.h" +#include "fe.h" +#include "notify.h" +#include "tree.h" +#include "hexchatc.h" +#include "util.h" + + +int +nick_cmp_az_ops (server *serv, struct User *user1, struct User *user2) +{ + unsigned int access1 = user1->access; + unsigned int access2 = user2->access; + int pos; + + if (access1 != access2) + { + for (pos = 0; pos < USERACCESS_SIZE; pos++) + { + if ((access1&(1<<pos)) && (access2&(1<<pos))) + break; + if ((access1&(1<<pos)) && !(access2&(1<<pos))) + return -1; + if (!(access1&(1<<pos)) && (access2&(1<<pos))) + return 1; + } + } + + return serv->p_cmp (user1->nick, user2->nick); +} + +int +nick_cmp_alpha (struct User *user1, struct User *user2, server *serv) +{ + return serv->p_cmp (user1->nick, user2->nick); +} + +/* + insert name in appropriate place in linked list. Returns row number or: + -1: duplicate +*/ + +static int +userlist_insertname (session *sess, struct User *newuser) +{ + if (!sess->usertree) + { + sess->usertree = tree_new ((tree_cmp_func *)nick_cmp_alpha, sess->server); + } + + return tree_insert (sess->usertree, newuser); +} + +void +userlist_set_away (struct session *sess, char *nick, unsigned int away) +{ + struct User *user; + + user = userlist_find (sess, nick); + if (user) + { + if (user->away != away) + { + user->away = away; + /* rehash GUI */ + fe_userlist_rehash (sess, user); + if (away) + fe_userlist_update (sess, user); + } + } +} + +void +userlist_set_account (struct session *sess, char *nick, char *account) +{ + struct User *user; + + user = userlist_find (sess, nick); + if (user) + { + if (strcmp (account, "*") == 0) + { + g_clear_pointer (&user->account, g_free); + } else if (g_strcmp0 (user->account, account)) + { + g_free (user->account); + user->account = g_strdup (account); + } + + /* gui doesnt currently reflect login status, maybe later + fe_userlist_rehash (sess, user); */ + } +} + +int +userlist_add_hostname (struct session *sess, char *nick, char *hostname, + char *realname, char *servername, char *account, unsigned int away) +{ + struct User *user; + gboolean do_rehash = FALSE; + + user = userlist_find (sess, nick); + if (user) + { + if (hostname && (!user->hostname || strcmp(user->hostname, hostname))) + { + if (prefs.hex_gui_ulist_show_hosts) + do_rehash = TRUE; + g_free (user->hostname); + user->hostname = g_strdup (hostname); + } + if (realname && *realname && g_strcmp0 (user->realname, realname) != 0) + { + g_free (user->realname); + user->realname = g_strdup (realname); + } + if (!user->servername && servername) + user->servername = g_strdup (servername); + if (!user->account && account && strcmp (account, "0") != 0) + user->account = g_strdup (account); + if (away != 0xff) + { + if (user->away != away) + do_rehash = TRUE; + user->away = away; + } + + fe_userlist_update (sess, user); + if (do_rehash) + fe_userlist_rehash (sess, user); + + return 1; + } + return 0; +} + +static int +free_user (struct User *user, gpointer data) +{ + g_free (user->realname); + g_free (user->hostname); + g_free (user->servername); + g_free (user->account); + g_free (user); + + return TRUE; +} + +void +userlist_free (session *sess) +{ + tree_foreach (sess->usertree, (tree_traverse_func *)free_user, NULL); + tree_destroy (sess->usertree); + + sess->usertree = NULL; + sess->me = NULL; + + sess->ops = 0; + sess->hops = 0; + sess->voices = 0; + sess->total = 0; +} + +void +userlist_clear (session *sess) +{ + fe_userlist_clear (sess); + userlist_free (sess); + fe_userlist_numbers (sess); +} + +static int +find_cmp (const char *name, struct User *user, server *serv) +{ + return serv->p_cmp ((char *)name, user->nick); +} + +struct User * +userlist_find (struct session *sess, const char *name) +{ + int pos; + + if (sess->usertree) + return tree_find (sess->usertree, name, + (tree_cmp_func *)find_cmp, sess->server, &pos); + + return NULL; +} + +struct User * +userlist_find_global (struct server *serv, char *name) +{ + struct User *user; + session *sess; + GSList *list = sess_list; + while (list) + { + sess = (session *) list->data; + if (sess->server == serv) + { + user = userlist_find (sess, name); + if (user) + return user; + } + list = list->next; + } + return NULL; +} + +static void +update_counts (session *sess, struct User *user, char prefix, + int level, int offset) +{ + switch (prefix) + { + case '@': + user->op = level; + sess->ops += offset; + break; + case '%': + user->hop = level; + sess->hops += offset; + break; + case '+': + user->voice = level; + sess->voices += offset; + break; + } +} + +void +userlist_update_mode (session *sess, char *name, char mode, char sign) +{ + int access; + int offset = 0; + int level; + int pos; + char prefix; + struct User *user; + + user = userlist_find (sess, name); + if (!user) + return; + + /* remove from binary trees, before we loose track of it */ + tree_remove (sess->usertree, user, &pos); + fe_userlist_remove (sess, user); + + /* which bit number is affected? */ + access = mode_access (sess->server, mode, &prefix); + + if (sign == '+') + { + level = TRUE; + if (!(user->access & (1 << access))) + { + offset = 1; + user->access |= (1 << access); + } + } else + { + level = FALSE; + if (user->access & (1 << access)) + { + offset = -1; + user->access &= ~(1 << access); + } + } + + /* now what is this users highest prefix? e.g. @ for ops */ + user->prefix[0] = get_nick_prefix (sess->server, user->access); + + /* update the various counts using the CHANGED prefix only */ + update_counts (sess, user, prefix, level, offset); + + /* insert it back into its new place */ + tree_insert (sess->usertree, user); + fe_userlist_insert (sess, user, FALSE); + fe_userlist_numbers (sess); +} + +int +userlist_change (struct session *sess, char *oldname, char *newname) +{ + struct User *user = userlist_find (sess, oldname); + int pos; + + if (user) + { + tree_remove (sess->usertree, user, &pos); + fe_userlist_remove (sess, user); + + safe_strcpy (user->nick, newname, NICKLEN); + + tree_insert (sess->usertree, user); + fe_userlist_insert (sess, user, FALSE); + + return 1; + } + + return 0; +} + +int +userlist_remove (struct session *sess, char *name) +{ + struct User *user; + + user = userlist_find (sess, name); + if (!user) + return FALSE; + + userlist_remove_user (sess, user); + return TRUE; +} + +void +userlist_remove_user (struct session *sess, struct User *user) +{ + int pos; + if (user->voice) + sess->voices--; + if (user->op) + sess->ops--; + if (user->hop) + sess->hops--; + sess->total--; + fe_userlist_numbers (sess); + fe_userlist_remove (sess, user); + + if (user == sess->me) + sess->me = NULL; + + tree_remove (sess->usertree, user, &pos); + free_user (user, NULL); +} + +void +userlist_add (struct session *sess, char *name, char *hostname, + char *account, char *realname, const message_tags_data *tags_data) +{ + struct User *user; + int row, prefix_chars; + unsigned int acc; + + acc = nick_access (sess->server, name, &prefix_chars); + + notify_set_online (sess->server, name + prefix_chars, tags_data); + + user = g_new0 (struct User, 1); + + user->access = acc; + + /* assume first char is the highest level nick prefix */ + if (prefix_chars) + user->prefix[0] = name[0]; + + /* add it to our linked list */ + if (hostname) + user->hostname = g_strdup (hostname); + safe_strcpy (user->nick, name + prefix_chars, NICKLEN); + /* is it me? */ + if (!sess->server->p_cmp (user->nick, sess->server->nick)) + user->me = TRUE; + /* extended join info */ + if (sess->server->have_extjoin) + { + if (account && *account) + user->account = g_strdup (account); + if (realname && *realname) + user->realname = g_strdup (realname); + } + + row = userlist_insertname (sess, user); + + /* duplicate? some broken servers trigger this */ + if (row == -1) + { + g_free (user->hostname); + g_free (user->account); + g_free (user->realname); + g_free (user); + return; + } + + sess->total++; + + /* most ircds don't support multiple modechars in front of the nickname + for /NAMES - though they should. */ + while (prefix_chars) + { + update_counts (sess, user, name[0], TRUE, 1); + name++; + prefix_chars--; + } + + if (user->me) + sess->me = user; + + fe_userlist_insert (sess, user, FALSE); + if(sess->end_of_names) + fe_userlist_numbers (sess); +} + +static int +rehash_cb (struct User *user, session *sess) +{ + fe_userlist_rehash (sess, user); + return TRUE; +} + +void +userlist_rehash (session *sess) +{ + tree_foreach (sess->usertree, (tree_traverse_func *)rehash_cb, sess); +} + +static int +flat_cb (struct User *user, GSList **list) +{ + *list = g_slist_prepend (*list, user); + return TRUE; +} + +GSList * +userlist_flat_list (session *sess) +{ + GSList *list = NULL; + + tree_foreach (sess->usertree, (tree_traverse_func *)flat_cb, &list); + return g_slist_reverse (list); +} + +static int +double_cb (struct User *user, GList **list) +{ + *list = g_list_prepend(*list, user); + return TRUE; +} + +GList * +userlist_double_list(session *sess) +{ + GList *list = NULL; + + tree_foreach (sess->usertree, (tree_traverse_func *)double_cb, &list); + return list; +} diff --git a/hexchat/src/common/userlist.h b/hexchat/src/common/userlist.h new file mode 100644 index 0000000..0c53dc7 --- /dev/null +++ b/hexchat/src/common/userlist.h @@ -0,0 +1,67 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <time.h> +#include "proto-irc.h" + +#ifndef HEXCHAT_USERLIST_H +#define HEXCHAT_USERLIST_H + +struct User +{ + char nick[NICKLEN]; + char *hostname; + char *realname; + char *servername; + char *account; + time_t lasttalk; + unsigned int access; /* axs bit field */ + char prefix[2]; /* @ + % */ + unsigned int op:1; + unsigned int hop:1; + unsigned int voice:1; + unsigned int me:1; + unsigned int away:1; + unsigned int selected:1; +}; + +#define USERACCESS_SIZE 12 + +int userlist_add_hostname (session *sess, char *nick, + char *hostname, char *realname, + char *servername, char *account, unsigned int away); +void userlist_set_away (session *sess, char *nick, unsigned int away); +void userlist_set_account (session *sess, char *nick, char *account); +struct User *userlist_find (session *sess, const char *name); +struct User *userlist_find_global (server *serv, char *name); +void userlist_clear (session *sess); +void userlist_free (session *sess); +void userlist_add (session *sess, char *name, char *hostname, char *account, + char *realname, const message_tags_data *tags_data); +int userlist_remove (session *sess, char *name); +void userlist_remove_user (session *sess, struct User *user); +int userlist_change (session *sess, char *oldname, char *newname); +void userlist_update_mode (session *sess, char *name, char mode, char sign); +GSList *userlist_flat_list (session *sess); +GList *userlist_double_list (session *sess); +void userlist_rehash (session *sess); +int nick_cmp_az_ops (server *serv, struct User *user1, struct User *user2); +int nick_cmp_alpha (struct User *user1, struct User *user2, server *serv); + +#endif diff --git a/hexchat/src/common/util.c b/hexchat/src/common/util.c new file mode 100644 index 0000000..bd920ca --- /dev/null +++ b/hexchat/src/common/util.c @@ -0,0 +1,1557 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#define WANTSOCKET +#include "inet.h" /* make it first to avoid macro redefinitions */ + +#define __APPLE_API_STRICT_CONFORMANCE + +#define _FILE_OFFSET_BITS 64 +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <time.h> +#include <sys/types.h> +#include <sys/stat.h> + +#ifdef WIN32 +#include <sys/timeb.h> +#include <io.h> +#include "./sysinfo/sysinfo.h" +#else +#include <unistd.h> +#include <pwd.h> +#include <sys/time.h> +#include <sys/utsname.h> +#endif + +#include "config.h" +#include <fcntl.h> +#include <errno.h> +#include "hexchat.h" +#include "hexchatc.h" +#include <ctype.h> +#include "util.h" + +#if defined (__FreeBSD__) || defined (__APPLE__) +#include <sys/sysctl.h> +#endif + +/* SASL mechanisms */ +#ifdef USE_OPENSSL +#include <openssl/bn.h> +#include <openssl/rand.h> +#ifndef WIN32 +#include <netinet/in.h> +#endif +#endif + +char * +file_part (char *file) +{ + char *filepart = file; + if (!file) + return ""; + while (1) + { + switch (*file) + { + case 0: + return (filepart); + case '/': +#ifdef WIN32 + case '\\': +#endif + filepart = file + 1; + break; + } + file++; + } +} + +void +path_part (char *file, char *path, int pathlen) +{ + unsigned char t; + char *filepart = file_part (file); + t = *filepart; + *filepart = 0; + safe_strcpy (path, file, pathlen); + *filepart = t; +} + +char * /* like strstr(), but nocase */ +nocasestrstr (const char *s, const char *wanted) +{ + register const int len = strlen (wanted); + + if (len == 0) + return (char *)s; + while (rfc_tolower(*s) != rfc_tolower(*wanted) || g_ascii_strncasecmp (s, wanted, len)) + if (*s++ == '\0') + return (char *)NULL; + return (char *)s; +} + +char * +errorstring (int err) +{ + switch (err) + { + case -1: + return ""; + case 0: + return _("Remote host closed socket"); +#ifndef WIN32 + } +#else + case WSAECONNREFUSED: + return _("Connection refused"); + case WSAENETUNREACH: + case WSAEHOSTUNREACH: + return _("No route to host"); + case WSAETIMEDOUT: + return _("Connection timed out"); + case WSAEADDRNOTAVAIL: + return _("Cannot assign that address"); + case WSAECONNRESET: + return _("Connection reset by peer"); + } + + /* can't use strerror() on Winsock errors! */ + if (err >= WSABASEERR) + { + static char tbuf[384]; + OSVERSIONINFO osvi; + + osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFO); + GetVersionEx (&osvi); + + /* FormatMessage works on WSA*** errors starting from Win2000 */ + if (osvi.dwMajorVersion >= 5) + { + if (FormatMessageA (FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS | + FORMAT_MESSAGE_MAX_WIDTH_MASK, + NULL, err, + MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT), + tbuf, sizeof (tbuf), NULL)) + { + int len; + char *utf; + + tbuf[sizeof (tbuf) - 1] = 0; + len = strlen (tbuf); + if (len >= 2) + tbuf[len - 2] = 0; /* remove the cr-lf */ + + /* now convert to utf8 */ + utf = g_locale_to_utf8 (tbuf, -1, 0, 0, 0); + if (utf) + { + safe_strcpy (tbuf, utf, sizeof (tbuf)); + g_free (utf); + return tbuf; + } + } + } /* ! if (osvi.dwMajorVersion >= 5) */ + + /* fallback to error number */ + sprintf (tbuf, "%s %d", _("Error"), err); + return tbuf; + } /* ! if (err >= WSABASEERR) */ +#endif /* ! WIN32 */ + + return strerror (err); +} + +int +waitline (int sok, char *buf, int bufsize, int use_recv) +{ + int i = 0; + + while (1) + { + if (use_recv) + { + if (recv (sok, &buf[i], 1, 0) < 1) + return -1; + } else + { + if (read (sok, &buf[i], 1) < 1) + return -1; + } + if (buf[i] == '\n' || bufsize == i + 1) + { + buf[i] = 0; + return i; + } + i++; + } +} + +#ifdef WIN32 +/* waitline2 using win32 file descriptor and glib instead of _read. win32 can't _read() sok! */ +int +waitline2 (GIOChannel *source, char *buf, int bufsize) +{ + int i = 0; + gsize len; + GError *error = NULL; + + while (1) + { + g_io_channel_set_buffered (source, FALSE); + g_io_channel_set_encoding (source, NULL, &error); + + if (g_io_channel_read_chars (source, &buf[i], 1, &len, &error) != G_IO_STATUS_NORMAL) + { + return -1; + } + if (buf[i] == '\n' || bufsize == i + 1) + { + buf[i] = 0; + return i; + } + i++; + } +} +#endif + +/* checks for "~" in a file and expands */ + +char * +expand_homedir (char *file) +{ +#ifndef WIN32 + char *user; + struct passwd *pw; + + if (file[0] == '~') + { + char *slash_pos; + + if (file[1] == '\0' || file[1] == '/') + return g_strconcat (g_get_home_dir (), &file[1], NULL); + + user = g_strdup(file); + + slash_pos = strchr(user, '/'); + if (slash_pos != NULL) + *slash_pos = '\0'; + + pw = getpwnam(user + 1); + g_free(user); + + if (pw == NULL) + return g_strdup(file); + + slash_pos = strchr(file, '/'); + if (slash_pos == NULL) + return g_strdup (pw->pw_dir); + else + return g_strconcat (pw->pw_dir, slash_pos, NULL); + } +#endif + return g_strdup (file); +} + +gchar * +strip_color (const char *text, int len, int flags) +{ + char *new_str; + + if (len == -1) + len = strlen (text); + + new_str = g_malloc (len + 2); + strip_color2 (text, len, new_str, flags); + + if (flags & STRIP_ESCMARKUP) + { + char *esc = g_markup_escape_text (new_str, -1); + g_free (new_str); + return esc; + } + + return new_str; +} + +/* CL: strip_color2 strips src and writes the output at dst; pass the same pointer + in both arguments to strip in place. */ +int +strip_color2 (const char *src, int len, char *dst, int flags) +{ + int rcol = 0, bgcol = 0; + char *start = dst; + + if (len == -1) len = strlen (src); + while (len-- > 0) + { + if (rcol > 0 && (isdigit ((unsigned char)*src) || + (*src == ',' && isdigit ((unsigned char)src[1]) && !bgcol))) + { + if (src[1] != ',') rcol--; + if (*src == ',') + { + rcol = 2; + bgcol = 1; + } + } else + { + rcol = bgcol = 0; + switch (*src) + { + case '\003': /*ATTR_COLOR: */ + if (!(flags & STRIP_COLOR)) goto pass_char; + rcol = 2; + break; + case HIDDEN_CHAR: /* CL: invisible text (for event formats only) */ /* this takes care of the topic */ + if (!(flags & STRIP_HIDDEN)) goto pass_char; + break; + case '\007': /*ATTR_BEEP: */ + case '\017': /*ATTR_RESET: */ + case '\026': /*ATTR_REVERSE: */ + case '\002': /*ATTR_BOLD: */ + case '\037': /*ATTR_UNDERLINE: */ + case '\036': /*ATTR_STRIKETHROUGH: */ + case '\035': /*ATTR_ITALICS: */ + if (!(flags & STRIP_ATTRIB)) goto pass_char; + break; + default: + pass_char: + *dst++ = *src; + } + } + src++; + } + *dst = 0; + + return (int) (dst - start); +} + +int +strip_hidden_attribute (char *src, char *dst) +{ + int len = 0; + while (*src != '\000') + { + if (*src != HIDDEN_CHAR) + { + *dst++ = *src; + len++; + } + src++; + } + return len; +} + +#if defined (__linux__) || defined (__FreeBSD__) || defined (__APPLE__) || defined (__CYGWIN__) + +static void +get_cpu_info (double *mhz, int *cpus) +{ + +#if defined(__linux__) || defined (__CYGWIN__) + + char buf[256]; + int fh; + + *mhz = 0; + *cpus = 0; + + fh = open ("/proc/cpuinfo", O_RDONLY); /* linux 2.2+ only */ + if (fh == -1) + { + *cpus = 1; + return; + } + + while (1) + { + if (waitline (fh, buf, sizeof buf, FALSE) < 0) + break; + if (!strncmp (buf, "cycle frequency [Hz]\t:", 22)) /* alpha */ + { + *mhz = atoi (buf + 23) / 1000000; + } else if (!strncmp (buf, "cpu MHz\t\t:", 10)) /* i386 */ + { + *mhz = atof (buf + 11) + 0.5; + } else if (!strncmp (buf, "clock\t\t:", 8)) /* PPC */ + { + *mhz = atoi (buf + 9); + } else if (!strncmp (buf, "processor\t", 10)) + { + (*cpus)++; + } + } + close (fh); + if (!*cpus) + *cpus = 1; + +#endif +#ifdef __FreeBSD__ + + int mib[2], ncpu; + u_long freq; + size_t len; + + freq = 0; + *mhz = 0; + *cpus = 0; + + mib[0] = CTL_HW; + mib[1] = HW_NCPU; + + len = sizeof(ncpu); + sysctl(mib, 2, &ncpu, &len, NULL, 0); + + len = sizeof(freq); + sysctlbyname("machdep.tsc_freq", &freq, &len, NULL, 0); + + *cpus = ncpu; + *mhz = (freq / 1000000); + +#endif +#ifdef __APPLE__ + + int mib[2], ncpu; + unsigned long long freq; + size_t len; + + freq = 0; + *mhz = 0; + *cpus = 0; + + mib[0] = CTL_HW; + mib[1] = HW_NCPU; + + len = sizeof(ncpu); + sysctl(mib, 2, &ncpu, &len, NULL, 0); + + len = sizeof(freq); + sysctlbyname("hw.cpufrequency", &freq, &len, NULL, 0); + + *cpus = ncpu; + *mhz = (freq / 1000000); + +#endif + +} +#endif + +#ifdef WIN32 + +int +get_cpu_arch (void) +{ + return sysinfo_get_build_arch (); +} + +char * +get_sys_str (int with_cpu) +{ + static char *without_cpu_buffer = NULL; + static char *with_cpu_buffer = NULL; + + if (with_cpu == 0) + { + if (without_cpu_buffer == NULL) + { + without_cpu_buffer = sysinfo_get_os (); + } + + return without_cpu_buffer; + } + + if (with_cpu_buffer == NULL) + { + char *os = sysinfo_get_os (); + char *cpu = sysinfo_get_cpu (); + with_cpu_buffer = g_strconcat (os, " [", cpu, "]", NULL); + g_free (cpu); + g_free (os); + } + + return with_cpu_buffer; +} + +#else + +char * +get_sys_str (int with_cpu) +{ +#if defined (__linux__) || defined (__FreeBSD__) || defined (__APPLE__) || defined (__CYGWIN__) + double mhz; +#endif + int cpus = 1; + struct utsname un; + static char *buf = NULL; + + if (buf) + return buf; + + uname (&un); + +#if defined (__linux__) || defined (__FreeBSD__) || defined (__APPLE__) || defined (__CYGWIN__) + get_cpu_info (&mhz, &cpus); + if (mhz && with_cpu) + { + double cpuspeed = ( mhz > 1000 ) ? mhz / 1000 : mhz; + const char *cpuspeedstr = ( mhz > 1000 ) ? "GHz" : "MHz"; + buf = g_strdup_printf ( + (cpus == 1) ? "%s %s [%s/%.2f%s]" : "%s %s [%s/%.2f%s/SMP]", + un.sysname, un.release, un.machine, + cpuspeed, cpuspeedstr); + } + else + buf = g_strdup_printf ("%s %s", un.sysname, un.release); +#else + buf = g_strdup_printf ("%s %s", un.sysname, un.release); +#endif + + return buf; +} + +#endif + +int +buf_get_line (char *ibuf, char **buf, int *position, int len) +{ + int pos = *position, spos = pos; + + if (pos == len) + return 0; + + while (ibuf[pos++] != '\n') + { + if (pos == len) + return 0; + } + pos--; + ibuf[pos] = 0; + *buf = &ibuf[spos]; + pos++; + *position = pos; + return 1; +} + +int match(const char *mask, const char *string) +{ + register const char *m = mask, *s = string; + register char ch; + const char *bm, *bs; /* Will be reg anyway on a decent CPU/compiler */ + + /* Process the "head" of the mask, if any */ + while ((ch = *m++) && (ch != '*')) + switch (ch) + { + case '\\': + if (*m == '?' || *m == '*') + ch = *m++; + default: + if (rfc_tolower(*s) != rfc_tolower(ch)) + return 0; + case '?': + if (!*s++) + return 0; + }; + if (!ch) + return !(*s); + + /* We got a star: quickly find if/where we match the next char */ +got_star: + bm = m; /* Next try rollback here */ + while ((ch = *m++)) + switch (ch) + { + case '?': + if (!*s++) + return 0; + case '*': + bm = m; + continue; /* while */ + case '\\': + if (*m == '?' || *m == '*') + ch = *m++; + default: + goto break_while; /* C is structured ? */ + }; +break_while: + if (!ch) + return 1; /* mask ends with '*', we got it */ + ch = rfc_tolower(ch); + while (rfc_tolower(*s++) != ch) + if (!*s) + return 0; + bs = s; /* Next try start from here */ + + /* Check the rest of the "chunk" */ + while ((ch = *m++)) + { + switch (ch) + { + case '*': + goto got_star; + case '\\': + if (*m == '?' || *m == '*') + ch = *m++; + default: + if (rfc_tolower(*s) != rfc_tolower(ch)) + { + if (!*s) + return 0; + m = bm; + s = bs; + goto got_star; + }; + case '?': + if (!*s++) + return 0; + }; + }; + if (*s) + { + m = bm; + s = bs; + goto got_star; + }; + return 1; +} + +void +for_files (const char *dirname, const char *mask, void callback (char *file)) +{ + GDir *dir; + const gchar *entry_name; + char *buf; + + dir = g_dir_open (dirname, 0, NULL); + if (dir) + { + while ((entry_name = g_dir_read_name (dir))) + { + if (strcmp (entry_name, ".") && strcmp (entry_name, "..")) + { + if (match (mask, entry_name)) + { + buf = g_build_filename (dirname, entry_name, NULL); + callback (buf); + g_free (buf); + } + } + } + g_dir_close (dir); + } +} + +/*void +tolowerStr (char *str) +{ + while (*str) + { + *str = rfc_tolower (*str); + str++; + } +}*/ + +typedef struct +{ + char *code, *country; +} domain_t; + +static int +country_compare (const void *a, const void *b) +{ + return g_ascii_strcasecmp (a, ((domain_t *)b)->code); +} + +static const domain_t domain[] = +{ + {"AC", N_("Ascension Island") }, + {"AD", N_("Andorra") }, + {"AE", N_("United Arab Emirates") }, + {"AERO", N_("Aviation-Related Fields") }, + {"AF", N_("Afghanistan") }, + {"AG", N_("Antigua and Barbuda") }, + {"AI", N_("Anguilla") }, + {"AL", N_("Albania") }, + {"AM", N_("Armenia") }, + {"AN", N_("Netherlands Antilles") }, + {"AO", N_("Angola") }, + {"AQ", N_("Antarctica") }, + {"AR", N_("Argentina") }, + {"ARPA", N_("Reverse DNS") }, + {"AS", N_("American Samoa") }, + {"ASIA", N_("Asia-Pacific Region") }, + {"AT", N_("Austria") }, + {"ATO", N_("Nato Fiel") }, + {"AU", N_("Australia") }, + {"AW", N_("Aruba") }, + {"AX", N_("Aland Islands") }, + {"AZ", N_("Azerbaijan") }, + {"BA", N_("Bosnia and Herzegovina") }, + {"BB", N_("Barbados") }, + {"BD", N_("Bangladesh") }, + {"BE", N_("Belgium") }, + {"BF", N_("Burkina Faso") }, + {"BG", N_("Bulgaria") }, + {"BH", N_("Bahrain") }, + {"BI", N_("Burundi") }, + {"BIZ", N_("Businesses"), }, + {"BJ", N_("Benin") }, + {"BM", N_("Bermuda") }, + {"BN", N_("Brunei Darussalam") }, + {"BO", N_("Bolivia") }, + {"BR", N_("Brazil") }, + {"BS", N_("Bahamas") }, + {"BT", N_("Bhutan") }, + {"BV", N_("Bouvet Island") }, + {"BW", N_("Botswana") }, + {"BY", N_("Belarus") }, + {"BZ", N_("Belize") }, + {"CA", N_("Canada") }, + {"CAT", N_("Catalan") }, + {"CC", N_("Cocos Islands") }, + {"CD", N_("Democratic Republic of Congo") }, + {"CF", N_("Central African Republic") }, + {"CG", N_("Congo") }, + {"CH", N_("Switzerland") }, + {"CI", N_("Cote d'Ivoire") }, + {"CK", N_("Cook Islands") }, + {"CL", N_("Chile") }, + {"CM", N_("Cameroon") }, + {"CN", N_("China") }, + {"CO", N_("Colombia") }, + {"COM", N_("Internic Commercial") }, + {"COOP", N_("Cooperatives") }, + {"CR", N_("Costa Rica") }, + {"CS", N_("Serbia and Montenegro") }, + {"CU", N_("Cuba") }, + {"CV", N_("Cape Verde") }, + {"CX", N_("Christmas Island") }, + {"CY", N_("Cyprus") }, + {"CZ", N_("Czech Republic") }, + {"DD", N_("East Germany") }, + {"DE", N_("Germany") }, + {"DJ", N_("Djibouti") }, + {"DK", N_("Denmark") }, + {"DM", N_("Dominica") }, + {"DO", N_("Dominican Republic") }, + {"DZ", N_("Algeria") }, + {"EC", N_("Ecuador") }, + {"EDU", N_("Educational Institution") }, + {"EE", N_("Estonia") }, + {"EG", N_("Egypt") }, + {"EH", N_("Western Sahara") }, + {"ER", N_("Eritrea") }, + {"ES", N_("Spain") }, + {"ET", N_("Ethiopia") }, + {"EU", N_("European Union") }, + {"FI", N_("Finland") }, + {"FJ", N_("Fiji") }, + {"FK", N_("Falkland Islands") }, + {"FM", N_("Micronesia") }, + {"FO", N_("Faroe Islands") }, + {"FR", N_("France") }, + {"GA", N_("Gabon") }, + {"GB", N_("Great Britain") }, + {"GD", N_("Grenada") }, + {"GE", N_("Georgia") }, + {"GF", N_("French Guiana") }, + {"GG", N_("British Channel Isles") }, + {"GH", N_("Ghana") }, + {"GI", N_("Gibraltar") }, + {"GL", N_("Greenland") }, + {"GM", N_("Gambia") }, + {"GN", N_("Guinea") }, + {"GOV", N_("Government") }, + {"GP", N_("Guadeloupe") }, + {"GQ", N_("Equatorial Guinea") }, + {"GR", N_("Greece") }, + {"GS", N_("S. Georgia and S. Sandwich Isles") }, + {"GT", N_("Guatemala") }, + {"GU", N_("Guam") }, + {"GW", N_("Guinea-Bissau") }, + {"GY", N_("Guyana") }, + {"HK", N_("Hong Kong") }, + {"HM", N_("Heard and McDonald Islands") }, + {"HN", N_("Honduras") }, + {"HR", N_("Croatia") }, + {"HT", N_("Haiti") }, + {"HU", N_("Hungary") }, + {"ID", N_("Indonesia") }, + {"IE", N_("Ireland") }, + {"IL", N_("Israel") }, + {"IM", N_("Isle of Man") }, + {"IN", N_("India") }, + {"INFO", N_("Informational") }, + {"INT", N_("International") }, + {"IO", N_("British Indian Ocean Territory") }, + {"IQ", N_("Iraq") }, + {"IR", N_("Iran") }, + {"IS", N_("Iceland") }, + {"IT", N_("Italy") }, + {"JE", N_("Jersey") }, + {"JM", N_("Jamaica") }, + {"JO", N_("Jordan") }, + {"JOBS", N_("Company Jobs") }, + {"JP", N_("Japan") }, + {"KE", N_("Kenya") }, + {"KG", N_("Kyrgyzstan") }, + {"KH", N_("Cambodia") }, + {"KI", N_("Kiribati") }, + {"KM", N_("Comoros") }, + {"KN", N_("St. Kitts and Nevis") }, + {"KP", N_("North Korea") }, + {"KR", N_("South Korea") }, + {"KW", N_("Kuwait") }, + {"KY", N_("Cayman Islands") }, + {"KZ", N_("Kazakhstan") }, + {"LA", N_("Laos") }, + {"LB", N_("Lebanon") }, + {"LC", N_("Saint Lucia") }, + {"LI", N_("Liechtenstein") }, + {"LK", N_("Sri Lanka") }, + {"LR", N_("Liberia") }, + {"LS", N_("Lesotho") }, + {"LT", N_("Lithuania") }, + {"LU", N_("Luxembourg") }, + {"LV", N_("Latvia") }, + {"LY", N_("Libya") }, + {"MA", N_("Morocco") }, + {"MC", N_("Monaco") }, + {"MD", N_("Moldova") }, + {"ME", N_("Montenegro") }, + {"MED", N_("United States Medical") }, + {"MG", N_("Madagascar") }, + {"MH", N_("Marshall Islands") }, + {"MIL", N_("Military") }, + {"MK", N_("Macedonia") }, + {"ML", N_("Mali") }, + {"MM", N_("Myanmar") }, + {"MN", N_("Mongolia") }, + {"MO", N_("Macau") }, + {"MOBI", N_("Mobile Devices") }, + {"MP", N_("Northern Mariana Islands") }, + {"MQ", N_("Martinique") }, + {"MR", N_("Mauritania") }, + {"MS", N_("Montserrat") }, + {"MT", N_("Malta") }, + {"MU", N_("Mauritius") }, + {"MUSEUM", N_("Museums") }, + {"MV", N_("Maldives") }, + {"MW", N_("Malawi") }, + {"MX", N_("Mexico") }, + {"MY", N_("Malaysia") }, + {"MZ", N_("Mozambique") }, + {"NA", N_("Namibia") }, + {"NAME", N_("Individual's Names") }, + {"NC", N_("New Caledonia") }, + {"NE", N_("Niger") }, + {"NET", N_("Internic Network") }, + {"NF", N_("Norfolk Island") }, + {"NG", N_("Nigeria") }, + {"NI", N_("Nicaragua") }, + {"NL", N_("Netherlands") }, + {"NO", N_("Norway") }, + {"NP", N_("Nepal") }, + {"NR", N_("Nauru") }, + {"NU", N_("Niue") }, + {"NZ", N_("New Zealand") }, + {"OM", N_("Oman") }, + {"ORG", N_("Internic Non-Profit Organization") }, + {"PA", N_("Panama") }, + {"PE", N_("Peru") }, + {"PF", N_("French Polynesia") }, + {"PG", N_("Papua New Guinea") }, + {"PH", N_("Philippines") }, + {"PK", N_("Pakistan") }, + {"PL", N_("Poland") }, + {"PM", N_("St. Pierre and Miquelon") }, + {"PN", N_("Pitcairn") }, + {"PR", N_("Puerto Rico") }, + {"PRO", N_("Professions") }, + {"PS", N_("Palestinian Territory") }, + {"PT", N_("Portugal") }, + {"PW", N_("Palau") }, + {"PY", N_("Paraguay") }, + {"QA", N_("Qatar") }, + {"RE", N_("Reunion") }, + {"RO", N_("Romania") }, + {"RPA", N_("Old School ARPAnet") }, + {"RS", N_("Serbia") }, + {"RU", N_("Russian Federation") }, + {"RW", N_("Rwanda") }, + {"SA", N_("Saudi Arabia") }, + {"SB", N_("Solomon Islands") }, + {"SC", N_("Seychelles") }, + {"SD", N_("Sudan") }, + {"SE", N_("Sweden") }, + {"SG", N_("Singapore") }, + {"SH", N_("St. Helena") }, + {"SI", N_("Slovenia") }, + {"SJ", N_("Svalbard and Jan Mayen Islands") }, + {"SK", N_("Slovak Republic") }, + {"SL", N_("Sierra Leone") }, + {"SM", N_("San Marino") }, + {"SN", N_("Senegal") }, + {"SO", N_("Somalia") }, + {"SR", N_("Suriname") }, + {"SS", N_("South Sudan") }, + {"ST", N_("Sao Tome and Principe") }, + {"SU", N_("Former USSR") }, + {"SV", N_("El Salvador") }, + {"SY", N_("Syria") }, + {"SZ", N_("Swaziland") }, + {"TC", N_("Turks and Caicos Islands") }, + {"TD", N_("Chad") }, + {"TEL", N_("Internet Communication Services") }, + {"TF", N_("French Southern Territories") }, + {"TG", N_("Togo") }, + {"TH", N_("Thailand") }, + {"TJ", N_("Tajikistan") }, + {"TK", N_("Tokelau") }, + {"TL", N_("East Timor") }, + {"TM", N_("Turkmenistan") }, + {"TN", N_("Tunisia") }, + {"TO", N_("Tonga") }, + {"TP", N_("East Timor") }, + {"TR", N_("Turkey") }, + {"TRAVEL", N_("Travel and Tourism") }, + {"TT", N_("Trinidad and Tobago") }, + {"TV", N_("Tuvalu") }, + {"TW", N_("Taiwan") }, + {"TZ", N_("Tanzania") }, + {"UA", N_("Ukraine") }, + {"UG", N_("Uganda") }, + {"UK", N_("United Kingdom") }, + {"US", N_("United States of America") }, + {"UY", N_("Uruguay") }, + {"UZ", N_("Uzbekistan") }, + {"VA", N_("Vatican City State") }, + {"VC", N_("St. Vincent and the Grenadines") }, + {"VE", N_("Venezuela") }, + {"VG", N_("British Virgin Islands") }, + {"VI", N_("US Virgin Islands") }, + {"VN", N_("Vietnam") }, + {"VU", N_("Vanuatu") }, + {"WF", N_("Wallis and Futuna Islands") }, + {"WS", N_("Samoa") }, + {"XXX", N_("Adult Entertainment") }, + {"YE", N_("Yemen") }, + {"YT", N_("Mayotte") }, + {"YU", N_("Yugoslavia") }, + {"ZA", N_("South Africa") }, + {"ZM", N_("Zambia") }, + {"ZW", N_("Zimbabwe") }, +}; + +char * +country (char *hostname) +{ + char *p; + domain_t *dom; + + if (!hostname || !*hostname || isdigit ((unsigned char) hostname[strlen (hostname) - 1])) + return NULL; + if ((p = strrchr (hostname, '.'))) + p++; + else + p = hostname; + + dom = bsearch (p, domain, sizeof (domain) / sizeof (domain_t), + sizeof (domain_t), country_compare); + + if (!dom) + return NULL; + + return _(dom->country); +} + +void +country_search (char *pattern, void *ud, void (*print)(void *, char *, ...)) +{ + const domain_t *dom; + size_t i; + + for (i = 0; i < sizeof (domain) / sizeof (domain_t); i++) + { + dom = &domain[i]; + if (match (pattern, dom->country) || match (pattern, _(dom->country))) + { + print (ud, "%s = %s\n", dom->code, _(dom->country)); + } + } +} + +void +util_exec (const char *cmd) +{ + g_spawn_command_line_async (cmd, NULL); +} + +unsigned long +make_ping_time (void) +{ +#ifndef WIN32 + struct timeval timev; + gettimeofday (&timev, 0); +#else + GTimeVal timev; + g_get_current_time (&timev); +#endif + return (timev.tv_sec - 50000) * 1000 + timev.tv_usec/1000; +} + +int +rfc_casecmp (const char *s1, const char *s2) +{ + int c1, c2; + + while (*s1 && *s2) + { + c1 = (int)rfc_tolower (*s1); + c2 = (int)rfc_tolower (*s2); + if (c1 != c2) + return (c1 - c2); + s1++; + s2++; + } + return (((int)*s1) - ((int)*s2)); +} + +int +rfc_ncasecmp (char *s1, char *s2, int n) +{ + int c1, c2; + + while (*s1 && *s2 && n > 0) + { + c1 = (int)rfc_tolower (*s1); + c2 = (int)rfc_tolower (*s2); + if (c1 != c2) + return (c1 - c2); + n--; + s1++; + s2++; + } + c1 = (int)rfc_tolower (*s1); + c2 = (int)rfc_tolower (*s2); + return (n == 0) ? 0 : (c1 - c2); +} + +const unsigned char rfc_tolowertab[] = + { 0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, + 0xb, 0xc, 0xd, 0xe, 0xf, 0x10, 0x11, 0x12, 0x13, 0x14, + 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, + ' ', '!', '"', '#', '$', '%', '&', 0x27, '(', ')', + '*', '+', ',', '-', '.', '/', + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + ':', ';', '<', '=', '>', '?', + '@', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', + 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', + 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~', + '_', + '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', + 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', + 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~', + 0x7f, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, + 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, + 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, + 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, + 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, + 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, + 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, + 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, + 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, + 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, + 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, + 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, + 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, + 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff +}; + +static gboolean +file_exists (char *fname) +{ + return (g_access (fname, F_OK) == 0) ? TRUE : FALSE; +} + +static gboolean +copy_file (char *dl_src, char *dl_dest, int permissions) +{ + int tmp_src, tmp_dest; + gboolean ok = FALSE; + char dl_tmp[4096]; + int return_tmp, return_tmp2; + + if ((tmp_src = g_open (dl_src, O_RDONLY | OFLAGS, 0600)) == -1) + { + g_fprintf (stderr, "Unable to open() file '%s' (%s) !", dl_src, + strerror (errno)); + return FALSE; + } + + if ((tmp_dest = + g_open (dl_dest, O_WRONLY | O_CREAT | O_TRUNC | OFLAGS, permissions)) < 0) + { + close (tmp_src); + g_fprintf (stderr, "Unable to create file '%s' (%s) !", dl_src, + strerror (errno)); + return FALSE; + } + + for (;;) + { + return_tmp = read (tmp_src, dl_tmp, sizeof (dl_tmp)); + + if (!return_tmp) + { + ok = TRUE; + break; + } + + if (return_tmp < 0) + { + fprintf (stderr, "download_move_to_completed_dir(): " + "error reading while moving file to save directory (%s)", + strerror (errno)); + break; + } + + return_tmp2 = write (tmp_dest, dl_tmp, return_tmp); + + if (return_tmp2 < 0) + { + fprintf (stderr, "download_move_to_completed_dir(): " + "error writing while moving file to save directory (%s)", + strerror (errno)); + break; + } + + if (return_tmp < sizeof (dl_tmp)) + { + ok = TRUE; + break; + } + } + + close (tmp_dest); + close (tmp_src); + return ok; +} + +/* Takes care of moving a file from a temporary download location to a completed location. */ +void +move_file (char *src_dir, char *dst_dir, char *fname, int dccpermissions) +{ + char *src; + char *dst; + int res, i; + + /* if dcc_dir and dcc_completed_dir are the same then we are done */ + if (0 == strcmp (src_dir, dst_dir) || + 0 == dst_dir[0]) + return; /* Already in "completed dir" */ + + src = g_build_filename (src_dir, fname, NULL); + dst = g_build_filename (dst_dir, fname, NULL); + + /* already exists in completed dir? Append a number */ + if (file_exists (dst)) + { + for (i = 0; ; i++) + { + g_free (dst); + dst = g_strdup_printf ("%s" G_DIR_SEPARATOR_S "%s.%d", dst_dir, fname, i); + if (!file_exists (dst)) + break; + } + } + + /* first try a simple rename move */ + res = g_rename (src, dst); + + if (res == -1 && (errno == EXDEV || errno == EPERM)) + { + /* link failed because either the two paths aren't on the */ + /* same filesystem or the filesystem doesn't support hard */ + /* links, so we have to do a copy. */ + if (copy_file (src, dst, dccpermissions)) + g_unlink (src); + } + + g_free (dst); + g_free (src); +} + +/* separates a string according to a 'sep' char, then calls the callback + function for each token found */ + +int +token_foreach (char *str, char sep, + int (*callback) (char *str, void *ud), void *ud) +{ + char t, *start = str; + + while (1) + { + if (*str == sep || *str == 0) + { + t = *str; + *str = 0; + if (callback (start, ud) < 1) + { + *str = t; + return FALSE; + } + *str = t; + + if (*str == 0) + break; + str++; + start = str; + + } else + { + /* chars $00-$7f can never be embedded in utf-8 */ + str++; + } + } + + return TRUE; +} + +/* 31 bit string hash functions */ + +guint32 +str_hash (const char *key) +{ + const char *p = key; + guint32 h = *p; + + if (h) + for (p += 1; *p != '\0'; p++) + h = (h << 5) - h + *p; + + return h; +} + +guint32 +str_ihash (const unsigned char *key) +{ + const char *p = key; + guint32 h = rfc_tolowertab [(guint)*p]; + + if (h) + for (p += 1; *p != '\0'; p++) + h = (h << 5) - h + rfc_tolowertab [(guint)*p]; + + return h; +} + +/* features: 1. "src" must be valid, NULL terminated UTF-8 */ +/* 2. "dest" will be left with valid UTF-8 - no partial chars! */ + +void +safe_strcpy (char *dest, const char *src, int bytes_left) +{ + int mbl; + + while (1) + { + mbl = g_utf8_skip[*((unsigned char *)src)]; + + if (bytes_left < (mbl + 1)) /* can't fit with NULL? */ + { + *dest = 0; + break; + } + + if (mbl == 1) /* one byte char */ + { + *dest = *src; + if (*src == 0) + break; /* it all fit */ + dest++; + src++; + bytes_left--; + } + else /* multibyte char */ + { + memcpy (dest, src, mbl); + dest += mbl; + src += mbl; + bytes_left -= mbl; + } + } +} + +void +canonalize_key (char *key) +{ + char *pos, token; + + for (pos = key; (token = *pos) != 0; pos++) + { + if (token != '_' && (token < '0' || token > '9') && (token < 'A' || token > 'Z') && (token < 'a' || token > 'z')) + { + *pos = '_'; + } + else + { + *pos = tolower(token); + } + } +} + +int +portable_mode (void) +{ +#ifdef WIN32 + static int is_portable = -1; + + if (G_UNLIKELY(is_portable == -1)) + { + char *path = g_win32_get_package_installation_directory_of_module (NULL); + char *filename; + + if (path == NULL) + path = g_strdup ("."); + + filename = g_build_filename (path, "portable-mode", NULL); + is_portable = g_file_test (filename, G_FILE_TEST_EXISTS); + + g_free (path); + g_free (filename); + } + + return is_portable; +#else + return 0; +#endif +} + +char * +encode_sasl_pass_plain (char *user, char *pass) +{ + int authlen; + char *buffer; + char *encoded; + + /* we can't call strlen() directly on buffer thanks to the atrocious \0 characters it requires */ + authlen = strlen (user) * 2 + 2 + strlen (pass); + buffer = g_strdup_printf ("%s%c%s%c%s", user, '\0', user, '\0', pass); + encoded = g_base64_encode ((unsigned char*) buffer, authlen); + g_free (buffer); + + return encoded; +} + +#ifdef USE_OPENSSL +static char * +str_sha256hash (char *string) +{ + int i; + unsigned char hash[SHA256_DIGEST_LENGTH]; + char buf[SHA256_DIGEST_LENGTH * 2 + 1]; /* 64 digit hash + '\0' */ + +#if OPENSSL_VERSION_NUMBER >= 0x30000000L + SHA256 (string, strlen (string), hash); +#else + SHA256_CTX sha256; + + SHA256_Init (&sha256); + SHA256_Update (&sha256, string, strlen (string)); + SHA256_Final (hash, &sha256); +#endif + + for (i = 0; i < SHA256_DIGEST_LENGTH; i++) + { + sprintf (buf + (i * 2), "%02x", hash[i]); + } + + buf[SHA256_DIGEST_LENGTH * 2] = 0; + + return g_strdup (buf); +} + +static char * +rfc_strlower (const char *str) +{ + size_t i, len = strlen(str); + char *lower = g_new(char, len + 1); + + for (i = 0; i < len; ++i) + { + lower[i] = rfc_tolower(str[i]); + } + lower[i] = '\0'; + + return lower; +} + +/** + * \brief Generate CHALLENGEAUTH response for QuakeNet login. + * + * \param username QuakeNet user name + * \param password password for the user + * \param challenge the CHALLENGE response we got from Q + * + * After a successful connection to QuakeNet a CHALLENGE is requested from Q. + * Generate the CHALLENGEAUTH response from this CHALLENGE and our user + * credentials as per the + * <a href="http://www.quakenet.org/development/challengeauth">CHALLENGEAUTH</a> + * docs. As for using OpenSSL HMAC, see + * <a href="http://www.askyb.com/cpp/openssl-hmac-hasing-example-in-cpp/">example 1</a>, + * <a href="http://stackoverflow.com/questions/242665/understanding-engine-initialization-in-openssl">example 2</a>. + */ +char * +challengeauth_response (const char *username, const char *password, const char *challenge) +{ + int i; + char *user; + char *pass; + char *passhash; + char *key; + char *keyhash; + unsigned char *digest; + GString *buf = g_string_new_len (NULL, SHA256_DIGEST_LENGTH * 2); + + user = rfc_strlower (username); /* convert username to lowercase as per the RFC */ + + pass = g_strndup (password, 10); /* truncate to 10 characters */ + passhash = str_sha256hash (pass); + g_free (pass); + + key = g_strdup_printf ("%s:%s", user, passhash); + g_free (user); + g_free (passhash); + + keyhash = str_sha256hash (key); + g_free (key); + + digest = HMAC (EVP_sha256 (), keyhash, strlen (keyhash), (unsigned char *) challenge, strlen (challenge), NULL, NULL); + g_free (keyhash); + + for (i = 0; i < SHA256_DIGEST_LENGTH; i++) + { + g_string_append_printf (buf, "%02x", (unsigned int) digest[i]); + } + + return g_string_free (buf, FALSE); +} +#endif + +/** + * \brief Wrapper around strftime for Windows + * + * Prevents crashing when using an invalid format by escaping them. + * + * Behaves the same as strftime with the addition that + * it returns 0 if the escaped format string is too large. + * + * Based upon work from znc-msvc project. + * + * This assumes format is a locale-encoded string. For utf-8 strings, use strftime_utf8 + */ +size_t +strftime_validated (char *dest, size_t destsize, const char *format, const struct tm *time) +{ +#ifndef WIN32 + return strftime (dest, destsize, format, time); +#else + char safe_format[64]; + const char *p = format; + int i = 0; + + if (strlen (format) >= sizeof(safe_format)) + return 0; + + memset (safe_format, 0, sizeof(safe_format)); + + while (*p) + { + if (*p == '%') + { + int has_hash = (*(p + 1) == '#'); + char c = *(p + (has_hash ? 2 : 1)); + + if (i >= sizeof (safe_format)) + return 0; + + switch (c) + { + case 'a': case 'A': case 'b': case 'B': case 'c': case 'd': case 'H': case 'I': case 'j': case 'm': case 'M': + case 'p': case 'S': case 'U': case 'w': case 'W': case 'x': case 'X': case 'y': case 'Y': case 'z': case 'Z': + case '%': + /* formatting code is fine */ + break; + default: + /* replace bad formatting code with itself, escaped, e.g. "%V" --> "%%V" */ + g_strlcat (safe_format, "%%", sizeof(safe_format)); + i += 2; + p++; + break; + } + + /* the current loop run will append % (and maybe #) and the next one will do the actual char. */ + if (has_hash) + { + safe_format[i] = *p; + p++; + i++; + } + if (c == '%') + { + safe_format[i] = *p; + p++; + i++; + } + } + + if (*p) + { + safe_format[i] = *p; + p++; + i++; + } + } + + return strftime (dest, destsize, safe_format, time); +#endif +} + +/** + * \brief Similar to strftime except it works with utf-8 formats, since strftime treats the format as locale-encoded. + */ +gsize +strftime_utf8 (char *dest, gsize destsize, const char *format, time_t time) +{ + gsize result; + GDate* date = g_date_new (); + g_date_set_time_t (date, time); + result = g_date_strftime (dest, destsize, format, date); + g_date_free (date); + return result; +} diff --git a/hexchat/src/common/util.h b/hexchat/src/common/util.h new file mode 100644 index 0000000..fcb2383 --- /dev/null +++ b/hexchat/src/common/util.h @@ -0,0 +1,83 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +/************************************************************************ + * This technique was borrowed in part from the source code to + * ircd-hybrid-5.3 to implement case-insensitive string matches which + * are fully compliant with Section 2.2 of RFC 1459, the copyright + * of that code being (C) 1990 Jarkko Oikarinen and under the GPL. + * + * A special thanks goes to Mr. Okarinen for being the one person who + * seems to have ever noticed this section in the original RFC and + * written code for it. Shame on all the rest of you (myself included). + * + * --+ Dagmar d'Surreal + */ + +#ifndef HEXCHAT_UTIL_H +#define HEXCHAT_UTIL_H + +#define rfc_tolower(c) (rfc_tolowertab[(unsigned char)(c)]) + +#define ELLIPSIS "\xe2\x80\xa6" + +extern const unsigned char rfc_tolowertab[]; + +char *expand_homedir (char *file); +void path_part (char *file, char *path, int pathlen); +int match (const char *mask, const char *string); +char *file_part (char *file); +void for_files (const char *dirname, const char *mask, void callback (char *file)); +int rfc_casecmp (const char *, const char *); +int rfc_ncasecmp (char *, char *, int); +int buf_get_line (char *, char **, int *, int len); +char *nocasestrstr (const char *text, const char *tofind); +char *country (char *); +void country_search (char *pattern, void *ud, void (*print)(void *, char *, ...)); +char *get_sys_str (int with_cpu); +void util_exec (const char *cmd); +#define STRIP_COLOR 1 +#define STRIP_ATTRIB 2 +#define STRIP_HIDDEN 4 +#define STRIP_ESCMARKUP 8 +#define STRIP_ALL 7 +gchar *strip_color (const char *text, int len, int flags); +int strip_color2 (const char *src, int len, char *dst, int flags); +int strip_hidden_attribute (char *src, char *dst); +char *errorstring (int err); +int waitline (int sok, char *buf, int bufsize, int); +#ifdef WIN32 +int waitline2 (GIOChannel *source, char *buf, int bufsize); +int get_cpu_arch (void); +#else +#define waitline2(source,buf,size) waitline(serv->childread,buf,size,0) +#endif +unsigned long make_ping_time (void); +void move_file (char *src_dir, char *dst_dir, char *fname, int dccpermissions); +int token_foreach (char *str, char sep, int (*callback) (char *str, void *ud), void *ud); +guint32 str_hash (const char *key); +guint32 str_ihash (const unsigned char *key); +void safe_strcpy (char *dest, const char *src, int bytes_left); +void canonalize_key (char *key); +int portable_mode (void); +char *encode_sasl_pass_plain (char *user, char *pass); +char *challengeauth_response (const char *username, const char *password, const char *challenge); +size_t strftime_validated (char *dest, size_t destsize, const char *format, const struct tm *time); +gsize strftime_utf8 (char *dest, gsize destsize, const char *format, time_t time); +#endif diff --git a/hexchat/src/dirent/dirent-win32.h b/hexchat/src/dirent/dirent-win32.h new file mode 100644 index 0000000..d1954c6 --- /dev/null +++ b/hexchat/src/dirent/dirent-win32.h @@ -0,0 +1,867 @@ +/* + * dirent.h - dirent API for Microsoft Visual Studio + * + * Copyright (C) 2006-2012 Toni Ronkko + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * ``Software''), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL TONI RONKKO BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + * + * + * Version 1.13, Dec 12 2012, Toni Ronkko + * Use traditional 8+3 file name if the name cannot be represented in the + * default ANSI code page. Now compiles again with MSVC 6.0. Thanks to + * Konstantin Khomoutov for testing. + * + * Version 1.12.1, Oct 1 2012, Toni Ronkko + * Bug fix: renamed wide-character DIR structure _wDIR to _WDIR (with + * capital W) in order to maintain compatibility with MingW. + * + * Version 1.12, Sep 30 2012, Toni Ronkko + * Define PATH_MAX and NAME_MAX. Added wide-character variants _wDIR, + * _wdirent, _wopendir(), _wreaddir(), _wclosedir() and _wrewinddir(). + * Thanks to Edgar Buerkle and Jan Nijtmans for ideas and code. + * + * Do not include windows.h. This allows dirent.h to be integrated more + * easily into programs using winsock. Thanks to Fernando Azaldegui. + * + * Version 1.11, Mar 15, 2011, Toni Ronkko + * Defined FILE_ATTRIBUTE_DEVICE for MSVC 6.0. + * + * Version 1.10, Aug 11, 2010, Toni Ronkko + * Added d_type and d_namlen fields to dirent structure. The former is + * especially useful for determining whether directory entry represents a + * file or a directory. For more information, see + * http://www.delorie.com/gnu/docs/glibc/libc_270.html + * + * Improved conformance to the standards. For example, errno is now set + * properly on failure and assert() is never used. Thanks to Peter Brockam + * for suggestions. + * + * Fixed a bug in rewinddir(): when using relative directory names, change + * of working directory no longer causes rewinddir() to fail. + * + * Version 1.9, Dec 15, 2009, John Cunningham + * Added rewinddir member function + * + * Version 1.8, Jan 18, 2008, Toni Ronkko + * Using FindFirstFileA and WIN32_FIND_DATAA to avoid converting string + * between multi-byte and unicode representations. This makes the + * code simpler and also allows the code to be compiled under MingW. Thanks + * to Azriel Fasten for the suggestion. + * + * Mar 4, 2007, Toni Ronkko + * Bug fix: due to the strncpy_s() function this file only compiled in + * Visual Studio 2005. Using the new string functions only when the + * compiler version allows. + * + * Nov 2, 2006, Toni Ronkko + * Major update: removed support for Watcom C, MS-DOS and Turbo C to + * simplify the file, updated the code to compile cleanly on Visual + * Studio 2005 with both unicode and multi-byte character strings, + * removed rewinddir() as it had a bug. + * + * Aug 20, 2006, Toni Ronkko + * Removed all remarks about MSVC 1.0, which is antiqued now. Simplified + * comments by removing SGML tags. + * + * May 14 2002, Toni Ronkko + * Embedded the function definitions directly to the header so that no + * source modules need to be included in the Visual Studio project. Removed + * all the dependencies to other projects so that this header file can be + * used independently. + * + * May 28 1998, Toni Ronkko + * First version. + *****************************************************************************/ +#ifndef DIRENT_H +#define DIRENT_H + +#if !defined(_68K_) && !defined(_MPPC_) && !defined(_X86_) && !defined(_IA64_) && !defined(_AMD64_) && defined(_M_IX86) +# define _X86_ +#endif +#include <stdio.h> +#include <stdarg.h> +#include <windef.h> +#include <winbase.h> +#include <wchar.h> +#include <string.h> +#include <stdlib.h> +#include <malloc.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <errno.h> + +/* Indicates that d_type field is available in dirent structure */ +#define _DIRENT_HAVE_D_TYPE + +/* Indicates that d_namlen field is available in dirent structure */ +#define _DIRENT_HAVE_D_NAMLEN + +/* Entries missing from MSVC 6.0 */ +#if !defined(FILE_ATTRIBUTE_DEVICE) +# define FILE_ATTRIBUTE_DEVICE 0x40 +#endif + +/* File type and permission flags for stat() */ +#if !defined(S_IFMT) +# define S_IFMT _S_IFMT /* File type mask */ +#endif +#if !defined(S_IFDIR) +# define S_IFDIR _S_IFDIR /* Directory */ +#endif +#if !defined(S_IFCHR) +# define S_IFCHR _S_IFCHR /* Character device */ +#endif +#if !defined(S_IFFIFO) +# define S_IFFIFO _S_IFFIFO /* Pipe */ +#endif +#if !defined(S_IFREG) +# define S_IFREG _S_IFREG /* Regular file */ +#endif +#if !defined(S_IREAD) +# define S_IREAD _S_IREAD /* Read permission */ +#endif +#if !defined(S_IWRITE) +# define S_IWRITE _S_IWRITE /* Write permission */ +#endif +#if !defined(S_IEXEC) +# define S_IEXEC _S_IEXEC /* Execute permission */ +#endif +#if !defined(S_IFIFO) +# define S_IFIFO _S_IFIFO /* Pipe */ +#endif +#if !defined(S_IFBLK) +# define S_IFBLK 0 /* Block device */ +#endif +#if !defined(S_IFLNK) +# define S_IFLNK 0 /* Link */ +#endif +#if !defined(S_IFSOCK) +# define S_IFSOCK 0 /* Socket */ +#endif + +#if defined(_MSC_VER) +# define S_IRUSR S_IREAD /* Read user */ +# define S_IWUSR S_IWRITE /* Write user */ +# define S_IXUSR 0 /* Execute user */ +# define S_IRGRP 0 /* Read group */ +# define S_IWGRP 0 /* Write group */ +# define S_IXGRP 0 /* Execute group */ +# define S_IROTH 0 /* Read others */ +# define S_IWOTH 0 /* Write others */ +# define S_IXOTH 0 /* Execute others */ +#endif + +/* Maximum length of file name */ +#if !defined(PATH_MAX) +# define PATH_MAX MAX_PATH +#endif +#if !defined(FILENAME_MAX) +# define FILENAME_MAX MAX_PATH +#endif +#if !defined(NAME_MAX) +# define NAME_MAX FILENAME_MAX +#endif + +/* File type flags for d_type */ +#define DT_UNKNOWN 0 +#define DT_REG S_IFREG +#define DT_DIR S_IFDIR +#define DT_FIFO S_IFIFO +#define DT_SOCK S_IFSOCK +#define DT_CHR S_IFCHR +#define DT_BLK S_IFBLK + +/* Macros for converting between st_mode and d_type */ +#define IFTODT(mode) ((mode) & S_IFMT) +#define DTTOIF(type) (type) + +/* + * File type macros. Note that block devices, sockets and links cannot be + * distinguished on Windows and the macros S_ISBLK, S_ISSOCK and S_ISLNK are + * only defined for compatibility. These macros should always return false + * on Windows. + */ +#define S_ISFIFO(mode) (((mode) & S_IFMT) == S_IFIFO) +#define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR) +#define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG) +#define S_ISLNK(mode) (((mode) & S_IFMT) == S_IFLNK) +#define S_ISSOCK(mode) (((mode) & S_IFMT) == S_IFSOCK) +#define S_ISCHR(mode) (((mode) & S_IFMT) == S_IFCHR) +#define S_ISBLK(mode) (((mode) & S_IFMT) == S_IFBLK) + +/* Return the exact length of d_namlen without zero terminator */ +#define _D_EXACT_NAMLEN(p) ((p)->d_namlen) + +/* Return number of bytes needed to store d_namlen */ +#define _D_ALLOC_NAMLEN(p) (PATH_MAX + 1) + + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Wide-character version */ +struct _wdirent { + long d_ino; /* Always zero */ + unsigned short d_reclen; /* Structure size */ + size_t d_namlen; /* Length of name without \0 */ + int d_type; /* File type */ + wchar_t d_name[PATH_MAX + 1]; /* File name */ +}; +typedef struct _wdirent _wdirent; + +struct _WDIR { + struct _wdirent ent; /* Current directory entry */ + WIN32_FIND_DATAW data; /* Private file data */ + int cached; /* True if data is valid */ + HANDLE handle; /* Win32 search handle */ + wchar_t *patt; /* Initial directory name */ +}; +typedef struct _WDIR _WDIR; + +static _WDIR *_wopendir (const wchar_t *dirname); +static struct _wdirent *_wreaddir (_WDIR *dirp); +static int _wclosedir (_WDIR *dirp); +static void _wrewinddir (_WDIR* dirp); + + +/* For compatibility with Symbian */ +#define wdirent _wdirent +#define WDIR _WDIR +#define wopendir _wopendir +#define wreaddir _wreaddir +#define wclosedir _wclosedir +#define wrewinddir _wrewinddir + + +/* Multi-byte character versions */ +struct dirent { + long d_ino; /* Always zero */ + unsigned short d_reclen; /* Structure size */ + size_t d_namlen; /* Length of name without \0 */ + int d_type; /* File type */ + char d_name[PATH_MAX + 1]; /* File name */ +}; +typedef struct dirent dirent; + +struct DIR { + struct dirent ent; + struct _WDIR *wdirp; +}; +typedef struct DIR DIR; + +static DIR *opendir (const char *dirname); +static struct dirent *readdir (DIR *dirp); +static int closedir (DIR *dirp); +static void rewinddir (DIR* dirp); + + +/* Internal utility functions */ +static WIN32_FIND_DATAW *dirent_first (_WDIR *dirp); +static WIN32_FIND_DATAW *dirent_next (_WDIR *dirp); + +static int dirent_mbstowcs_s( + size_t *pReturnValue, + wchar_t *wcstr, + size_t sizeInWords, + const char *mbstr, + size_t count); + +static int dirent_wcstombs_s( + size_t *pReturnValue, + char *mbstr, + size_t sizeInBytes, + const wchar_t *wcstr, + size_t count); + +static void dirent_set_errno (int error); + +/* + * Open directory stream DIRNAME for read and return a pointer to the + * internal working area that is used to retrieve individual directory + * entries. + */ +static _WDIR* +_wopendir( + const wchar_t *dirname) +{ + _WDIR *dirp = NULL; + int error; + DWORD n; + + /* Must have directory name */ + if (dirname == NULL || dirname[0] == '\0') { + dirent_set_errno (ENOENT); + return NULL; + } + + /* Allocate new _WDIR structure */ + dirp = (_WDIR*) g_new (struct _WDIR, 1); + /* Reset _WDIR structure */ + dirp->handle = INVALID_HANDLE_VALUE; + dirp->patt = NULL; + dirp->cached = 0; + + /* Compute the length of full path plus zero terminator */ + n = GetFullPathNameW (dirname, 0, NULL, NULL); + + /* Allocate room for absolute directory name and search pattern */ + dirp->patt = g_malloc (sizeof (wchar_t) * n + 16); + /* + * Convert relative directory name to an absolute one. This + * allows rewinddir() to function correctly even when current + * working directory is changed between opendir() and rewinddir(). + */ + n = GetFullPathNameW (dirname, n, dirp->patt, NULL); + if (n > 0) { + wchar_t *p; + + /* Append search pattern \* to the directory name */ + p = dirp->patt + n; + if (dirp->patt < p) { + switch (p[-1]) { + case '\\': + case '/': + case ':': + /* Directory ends in path separator, e.g. c:\temp\ */ + /*NOP*/; + break; + + default: + /* Directory name doesn't end in path separator */ + *p++ = '\\'; + } + } + *p++ = '*'; + *p = '\0'; + + /* Open directory stream and retrieve the first entry */ + if (dirent_first (dirp)) { + /* Directory stream opened successfully */ + error = 0; + } else { + /* Cannot retrieve first entry */ + error = 1; + dirent_set_errno (ENOENT); + } + + } else { + /* Cannot retrieve full path name */ + dirent_set_errno (ENOENT); + error = 1; + } + + /* Clean up in case of error */ + if (error && dirp) { + _wclosedir (dirp); + dirp = NULL; + } + + return dirp; +} + +/* + * Read next directory entry. The directory entry is returned in dirent + * structure in the d_name field. Individual directory entries returned by + * this function include regular files, sub-directories, pseudo-directories + * "." and ".." as well as volume labels, hidden files and system files. + */ +static struct _wdirent* +_wreaddir( + _WDIR *dirp) +{ + WIN32_FIND_DATAW *datap; + struct _wdirent *entp; + + /* Read next directory entry */ + datap = dirent_next (dirp); + if (datap) { + size_t n; + DWORD attr; + + /* Pointer to directory entry to return */ + entp = &dirp->ent; + + /* + * Copy file name as wide-character string. If the file name is too + * long to fit in to the destination buffer, then truncate file name + * to PATH_MAX characters and zero-terminate the buffer. + */ + n = 0; + while (n < PATH_MAX && datap->cFileName[n] != 0) { + entp->d_name[n] = datap->cFileName[n]; + n++; + } + dirp->ent.d_name[n] = 0; + + /* Length of file name excluding zero terminator */ + entp->d_namlen = n; + + /* File type */ + attr = datap->dwFileAttributes; + if ((attr & FILE_ATTRIBUTE_DEVICE) != 0) { + entp->d_type = DT_CHR; + } else if ((attr & FILE_ATTRIBUTE_DIRECTORY) != 0) { + entp->d_type = DT_DIR; + } else { + entp->d_type = DT_REG; + } + + /* Reset dummy fields */ + entp->d_ino = 0; + entp->d_reclen = sizeof (struct _wdirent); + + } else { + + /* Last directory entry read */ + entp = NULL; + + } + + return entp; +} + +/* + * Close directory stream opened by opendir() function. This invalidates the + * DIR structure as well as any directory entry read previously by + * _wreaddir(). + */ +static int +_wclosedir( + _WDIR *dirp) +{ + int ok; + if (dirp) { + + /* Release search handle */ + if (dirp->handle != INVALID_HANDLE_VALUE) { + FindClose (dirp->handle); + dirp->handle = INVALID_HANDLE_VALUE; + } + + /* Release search pattern */ + g_free (dirp->patt); + dirp->patt = NULL; + + /* Release directory structure */ + g_free (dirp); + ok = /*success*/0; + + } else { + /* Invalid directory stream */ + dirent_set_errno (EBADF); + ok = /*failure*/-1; + } + return ok; +} + +/* + * Rewind directory stream such that _wreaddir() returns the very first + * file name again. + */ +static void +_wrewinddir( + _WDIR* dirp) +{ + if (dirp) { + /* Release existing search handle */ + if (dirp->handle != INVALID_HANDLE_VALUE) { + FindClose (dirp->handle); + } + + /* Open new search handle */ + dirent_first (dirp); + } +} + +/* Get first directory entry (internal) */ +static WIN32_FIND_DATAW* +dirent_first( + _WDIR *dirp) +{ + WIN32_FIND_DATAW *datap; + + /* Open directory and retrieve the first entry */ + dirp->handle = FindFirstFileW (dirp->patt, &dirp->data); + if (dirp->handle != INVALID_HANDLE_VALUE) { + + /* a directory entry is now waiting in memory */ + datap = &dirp->data; + dirp->cached = 1; + + } else { + + /* Failed to re-open directory: no directory entry in memory */ + dirp->cached = 0; + datap = NULL; + + } + return datap; +} + +/* Get next directory entry (internal) */ +static WIN32_FIND_DATAW* +dirent_next( + _WDIR *dirp) +{ + WIN32_FIND_DATAW *p; + + /* Get next directory entry */ + if (dirp->cached != 0) { + + /* A valid directory entry already in memory */ + p = &dirp->data; + dirp->cached = 0; + + } else if (dirp->handle != INVALID_HANDLE_VALUE) { + + /* Get the next directory entry from stream */ + if (FindNextFileW (dirp->handle, &dirp->data) != FALSE) { + /* Got a file */ + p = &dirp->data; + } else { + /* The very last entry has been processed or an error occured */ + FindClose (dirp->handle); + dirp->handle = INVALID_HANDLE_VALUE; + p = NULL; + } + + } else { + + /* End of directory stream reached */ + p = NULL; + + } + + return p; +} + +/* + * Open directory stream using plain old C-string. + */ +static DIR* +opendir( + const char *dirname) +{ + struct DIR *dirp; + int error; + wchar_t wname[PATH_MAX + 1]; + size_t n; + + /* Must have directory name */ + if (dirname == NULL || dirname[0] == '\0') { + dirent_set_errno (ENOENT); + return NULL; + } + + /* Allocate memory for DIR structure */ + dirp = (DIR*) g_new (struct DIR, 1); + + /* Convert directory name to wide-character string */ + error = dirent_mbstowcs_s( + &n, wname, PATH_MAX + 1, dirname, PATH_MAX); + if (!error) { + + /* Open directory stream using wide-character name */ + dirp->wdirp = _wopendir (wname); + if (dirp->wdirp) { + /* Directory stream opened */ + error = 0; + } else { + /* Failed to open directory stream */ + error = 1; + } + + } else { + /* + * Cannot convert file name to wide-character string. This + * occurs if the string contains invalid multi-byte sequences or + * the output buffer is too small to contain the resulting + * string. + */ + error = 1; + } + + /* Clean up in case of error */ + if (error != 0) { + g_free (dirp); + dirp = NULL; + } + + return dirp; +} + +/* + * Read next directory entry. + * + * When working with text consoles, please note that file names returned by + * readdir() are represented in the default ANSI code page while any output to + * console is typically formatted on another code page. Thus, non-ASCII + * characters in file names will not usually display correctly on console. The + * problem can be fixed in two ways: (1) change the character set of console + * to 1252 using chcp utility and use Lucida Console font, or (2) use + * _cprintf function when writing to console. The _cprinf() will re-encode + * ANSI strings to the console code page so many non-ASCII characters will + * display correcly. + */ +static struct dirent* +readdir( + DIR *dirp) +{ + WIN32_FIND_DATAW *datap; + struct dirent *entp; + + /* Read next directory entry */ + datap = dirent_next (dirp->wdirp); + if (datap) { + size_t n; + int error; + + /* Attempt to convert file name to multi-byte string */ + error = dirent_wcstombs_s( + &n, dirp->ent.d_name, MAX_PATH + 1, datap->cFileName, MAX_PATH); + + /* + * If the file name cannot be represented by a multi-byte string, + * then attempt to use old 8+3 file name. This allows traditional + * Unix-code to access some file names despite of unicode + * characters, although file names may seem unfamiliar to the user. + * + * Be ware that the code below cannot come up with a short file + * name unless the file system provides one. At least + * VirtualBox shared folders fail to do this. + */ + if (error && datap->cAlternateFileName[0] != '\0') { + error = dirent_wcstombs_s( + &n, dirp->ent.d_name, MAX_PATH + 1, datap->cAlternateFileName, + sizeof (datap->cAlternateFileName) / + sizeof (datap->cAlternateFileName[0])); + } + + if (!error) { + DWORD attr; + + /* Initialize directory entry for return */ + entp = &dirp->ent; + + /* Length of file name excluding zero terminator */ + entp->d_namlen = n - 1; + + /* File attributes */ + attr = datap->dwFileAttributes; + if ((attr & FILE_ATTRIBUTE_DEVICE) != 0) { + entp->d_type = DT_CHR; + } else if ((attr & FILE_ATTRIBUTE_DIRECTORY) != 0) { + entp->d_type = DT_DIR; + } else { + entp->d_type = DT_REG; + } + + /* Reset dummy fields */ + entp->d_ino = 0; + entp->d_reclen = sizeof (struct dirent); + + } else { + /* + * Cannot convert file name to multi-byte string so construct + * an errornous directory entry and return that. Note that + * we cannot return NULL as that would stop the processing + * of directory entries completely. + */ + entp = &dirp->ent; + entp->d_name[0] = '?'; + entp->d_name[1] = '\0'; + entp->d_namlen = 1; + entp->d_type = DT_UNKNOWN; + entp->d_ino = 0; + entp->d_reclen = 0; + } + + } else { + /* No more directory entries */ + entp = NULL; + } + + return entp; +} + +/* + * Close directory stream. + */ +static int +closedir( + DIR *dirp) +{ + int ok; + if (dirp != NULL) { + + /* Close wide-character directory stream */ + ok = _wclosedir (dirp->wdirp); + dirp->wdirp = NULL; + + /* Release multi-byte character version */ + g_free (dirp); + + } else { + + /* Invalid directory stream */ + dirent_set_errno (EBADF); + ok = /*failure*/-1; + + } + return ok; +} + +/* + * Rewind directory stream to beginning. + */ +static void +rewinddir( + DIR* dirp) +{ + /* Rewind wide-character string directory stream */ + _wrewinddir (dirp->wdirp); +} + +/* Convert multi-byte string to wide character string */ +static int +dirent_mbstowcs_s( + size_t *pReturnValue, + wchar_t *wcstr, + size_t sizeInWords, + const char *mbstr, + size_t count) +{ + int error; + +#if defined(_MSC_VER) && _MSC_VER >= 1400 + + /* Microsoft Visual Studio 2005 or later */ + error = mbstowcs_s (pReturnValue, wcstr, sizeInWords, mbstr, count); + +#else + + /* Older Visual Studio or non-Microsoft compiler */ + size_t n; + + /* Convert to wide-character string */ + n = mbstowcs (wcstr, mbstr, count); + if (n < sizeInWords) { + + /* Zero-terminate output buffer */ + if (wcstr) { + wcstr[n] = 0; + } + + /* Length of resuting multi-byte string WITH zero terminator */ + if (pReturnValue) { + *pReturnValue = n + 1; + } + + /* Success */ + error = 0; + + } else { + + /* Could not convert string */ + error = 1; + + } + +#endif + + return error; +} + +/* Convert wide-character string to multi-byte string */ +static int +dirent_wcstombs_s( + size_t *pReturnValue, + char *mbstr, + size_t sizeInBytes, + const wchar_t *wcstr, + size_t count) +{ + int error; + +#if defined(_MSC_VER) && _MSC_VER >= 1400 + + /* Microsoft Visual Studio 2005 or later */ + error = wcstombs_s (pReturnValue, mbstr, sizeInBytes, wcstr, count); + +#else + + /* Older Visual Studio or non-Microsoft compiler */ + size_t n; + + /* Convert to multi-byte string */ + n = wcstombs (mbstr, wcstr, count); + if (n < sizeInBytes) { + + /* Zero-terminate output buffer */ + if (mbstr) { + mbstr[n] = '\0'; + } + + /* Lenght of resulting multi-bytes string WITH zero-terminator */ + if (pReturnValue) { + *pReturnValue = n + 1; + } + + /* Success */ + error = 0; + + } else { + + /* Cannot convert string */ + error = 1; + + } + +#endif + + return error; +} + +/* Set errno variable */ +static void +dirent_set_errno( + int error) +{ +#if defined(_MSC_VER) + + /* Microsoft Visual Studio */ + _set_errno (error); + +#else + + /* Non-Microsoft compiler */ + errno = error; + +#endif +} + + +#ifdef __cplusplus +} +#endif +#endif /*DIRENT_H*/ + diff --git a/hexchat/src/fe-gtk/ascii.c b/hexchat/src/fe-gtk/ascii.c new file mode 100644 index 0000000..56b0198 --- /dev/null +++ b/hexchat/src/fe-gtk/ascii.c @@ -0,0 +1,171 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "fe-gtk.h" + +#include "../common/hexchat.h" +#include "../common/hexchatc.h" +#include "gtkutil.h" +#include "ascii.h" +#include "maingui.h" + +static const unsigned char table[]= +{ +/* Line 1 */ '\n', +0xc2,0xa1,0xc2,0xbf,0xc2,0xa2,0xc2,0xa3,0xe2,0x82,0xac,0xc2,0xa5,0xc2,0xa6,0xc2, +0xa7,0xc2,0xa8,0xc2,0xa9,0xc2,0xae,0xc2,0xaa,0xc2,0xab,0xc2,0xbb,0xc2,0xac,0xc2, +0xad,0xc2,0xaf,0xe2,0x99,0xaa, +/* Line 2 */ '\n', +0xc2,0xba,0xc2,0xb9,0xc2,0xb2,0xc2,0xb3,0xc2,0xb4,0xc2,0xb5,0xc3,0x9e,0xc3,0xbe, +0xc2,0xb6,0xc2,0xb7,0xc2,0xb8,0xc2,0xb0,0xc2,0xbc,0xc2,0xbd,0xc2,0xbe,0xc3,0x97, +0xc2,0xb1,0xc3,0xb7, +/* Line 3 */ '\n', +0xc3,0x80,0xc3,0x81,0xc3,0x82,0xc3,0x83,0xc3,0x84,0xc3,0x85,0xc3,0x86,0xc4,0x82, +0xc4,0x84,0x20,0xc3,0x87,0xc4,0x86,0xc4,0x8c,0xc5,0x92,0x20,0xc4,0x8e,0xc4,0x90, +0x20, +/* Line 4 */ '\n', +0xc3,0xa0,0xc3,0xa1,0xc3,0xa2,0xc3,0xa3,0xc3,0xa4,0xc3,0xa5,0xc3,0xa6,0xc4,0x83, +0xc4,0x85,0x20,0xc3,0xa7,0xc4,0x87,0xc4,0x8d,0xc5,0x93,0x20,0xc4,0x8f,0xc4,0x91, +0x20, +/* Line 5 */ '\n', +0xc3,0x88,0xc3,0x89,0xc3,0x8a,0xc3,0x8b,0xc4,0x98,0xc4,0x9a,0x20,0xc4,0x9e,0x20, +0xc3,0x8c,0xc3,0x8d,0xc3,0x8e,0xc3,0x8f,0xc4,0xb0,0x20,0xc4,0xb9,0xc4,0xbd,0xc5, +0x81, +/* Line 6 */ '\n', +0xc3,0xa8,0xc3,0xa9,0xc3,0xaa,0xc3,0xab,0xc4,0x99,0xc4,0x9b,0x20,0xc4,0x9f,0x20, +0xc3,0xac,0xc3,0xad,0xc3,0xae,0xc3,0xaf,0xc4,0xb1,0x20,0xc4,0xba,0xc4,0xbe,0xc5, +0x82, +/* Line 7 */ '\n', +0xc3,0x91,0xc5,0x83,0xc5,0x87,0x20,0xc3,0x92,0xc3,0x93,0xc3,0x94,0xc3,0x95,0xc3, +0x96,0xc3,0x98,0xc5,0x90,0x20,0xc5,0x94,0xc5,0x98,0x20,0xc5,0x9a,0xc5,0x9e,0xc5, +0xa0, +/* Line 8 */ '\n', +0xc3,0xb1,0xc5,0x84,0xc5,0x88,0x20,0xc3,0xb2,0xc3,0xb3,0xc3,0xb4,0xc3,0xb5,0xc3, +0xb6,0xc3,0xb8,0xc5,0x91,0x20,0xc5,0x95,0xc5,0x99,0x20,0xc5,0x9b,0xc5,0x9f,0xc5, +0xa1, +/* Line 9 */ '\n', +0x20,0xc5,0xa2,0xc5,0xa4,0x20,0xc3,0x99,0xc3,0x9a,0xc3,0x9b,0xc5,0xb2,0xc3,0x9c, +0xc5,0xae,0xc5,0xb0,0x20,0xc3,0x9d,0xc3,0x9f,0x20,0xc5,0xb9,0xc5,0xbb,0xc5,0xbd, +/* Line 10 */ '\n', +0x20,0xc5,0xa3,0xc5,0xa5,0x20,0xc3,0xb9,0xc3,0xba,0xc3,0xbb,0xc5,0xb3,0xc3,0xbc, +0xc5,0xaf,0xc5,0xb1,0x20,0xc3,0xbd,0xc3,0xbf,0x20,0xc5,0xba,0xc5,0xbc,0xc5,0xbe, +/* Line 11 */ '\n', +0xd0,0x90,0xd0,0x91,0xd0,0x92,0xd0,0x93,0xd0,0x94,0xd0,0x95,0xd0,0x81,0xd0,0x96, +0xd0,0x97,0xd0,0x98,0xd0,0x99,0xd0,0x9a,0xd0,0x9b,0xd0,0x9c,0xd0,0x9d,0xd0,0x9e, +0xd0,0x9f,0xd0,0xa0, +/* Line 12 */ '\n', +0xd0,0xb0,0xd0,0xb1,0xd0,0xb2,0xd0,0xb3,0xd0,0xb4,0xd0,0xb5,0xd1,0x91,0xd0,0xb6, +0xd0,0xb7,0xd0,0xb8,0xd0,0xb9,0xd0,0xba,0xd0,0xbb,0xd0,0xbc,0xd0,0xbd,0xd0,0xbe, +0xd0,0xbf,0xd1,0x80, +/* Line 13 */ '\n', +0xd0,0xa1,0xd0,0xa2,0xd0,0xa3,0xd0,0xa4,0xd0,0xa5,0xd0,0xa6,0xd0,0xa7,0xd0,0xa8, +0xd0,0xa9,0xd0,0xaa,0xd0,0xab,0xd0,0xac,0xd0,0xad,0xd0,0xae,0xd0,0xaf, +/* Line 14 */ '\n', +0xd1,0x81,0xd1,0x82,0xd1,0x83,0xd1,0x84,0xd1,0x85,0xd1,0x86,0xd1,0x87,0xd1,0x88, +0xd1,0x89,0xd1,0x8a,0xd1,0x8b,0xd1,0x8c,0xd1,0x8d,0xd1,0x8e,0xd1,0x8f,0 +}; + +static gboolean +ascii_enter (GtkWidget * wid, GdkEventCrossing *event, GtkWidget *label) +{ + char buf[64]; + const char *text; + gunichar u; + + text = gtk_button_get_label (GTK_BUTTON (wid)); + u = g_utf8_get_char (text); + sprintf (buf, "%s U+%04X", text, u); + gtk_label_set_text (GTK_LABEL (label), buf); + + return FALSE; +} + +static void +ascii_click (GtkWidget * wid, gpointer userdata) +{ + int tmp_pos; + const char *text; + + if (current_sess) + { + text = gtk_button_get_label (GTK_BUTTON (wid)); + wid = current_sess->gui->input_box; + tmp_pos = SPELL_ENTRY_GET_POS (wid); + SPELL_ENTRY_INSERT (wid, text, -1, &tmp_pos); + SPELL_ENTRY_SET_POS (wid, tmp_pos); + } +} + +void +ascii_open (void) +{ + int i, len; + const unsigned char *table_pos; + char name[8]; + GtkWidget *frame, *label, *but, *hbox = NULL, *vbox, *win; + + win = mg_create_generic_tab ("charmap", _("Character Chart"), TRUE, TRUE, + NULL, NULL, 0, 0, &vbox, NULL); + gtk_container_set_border_width (GTK_CONTAINER (win), 5); + gtkutil_destroy_on_esc (win); + + label = gtk_label_new (NULL); + + table_pos = table; + i = 0; + while (table_pos[0] != 0) + { + if (table_pos[0] == '\n' || i == 0) + { + table_pos++; + hbox = gtk_hbox_new (0, 0); + gtk_container_add (GTK_CONTAINER (vbox), hbox); + gtk_widget_show (hbox); + i++; + continue; + } + + i++; + len = g_utf8_skip[table_pos[0]]; + memcpy (name, table_pos, len); + name[len] = 0; + + but = gtk_button_new_with_label (name); + gtk_widget_set_size_request (but, 28, -1); + g_signal_connect (G_OBJECT (but), "clicked", + G_CALLBACK (ascii_click), NULL); + g_signal_connect (G_OBJECT (but), "enter_notify_event", + G_CALLBACK (ascii_enter), label); + gtk_box_pack_start (GTK_BOX (hbox), but, 0, 0, 0); + gtk_widget_show (but); + + table_pos += len; + } + + frame = gtk_frame_new (""); + gtk_container_add (GTK_CONTAINER (hbox), frame); + gtk_container_add (GTK_CONTAINER (frame), label); + gtk_widget_show (label); + gtk_widget_show (frame); + + gtk_widget_show (win); +} diff --git a/hexchat/src/fe-gtk/ascii.h b/hexchat/src/fe-gtk/ascii.h new file mode 100644 index 0000000..18d6341 --- /dev/null +++ b/hexchat/src/fe-gtk/ascii.h @@ -0,0 +1,25 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_ASCII_H +#define HEXCHAT_ASCII_H + +void ascii_open (void); + +#endif diff --git a/hexchat/src/fe-gtk/banlist.c b/hexchat/src/fe-gtk/banlist.c new file mode 100644 index 0000000..9e844f2 --- /dev/null +++ b/hexchat/src/fe-gtk/banlist.c @@ -0,0 +1,854 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <fcntl.h> +#include <time.h> + +#ifndef WIN32 +#include <unistd.h> +#endif + +#include "fe-gtk.h" + +#include "../common/hexchat.h" +#include "../common/fe.h" +#include "../common/modes.h" +#include "../common/outbound.h" +#include "../common/hexchatc.h" +#include "gtkutil.h" +#include "maingui.h" +#include "banlist.h" + +/* + * These supports_* routines set capable, readable, writable bits */ +static void supports_bans (banlist_info *, int); +static void supports_exempt (banlist_info *, int); +static void supports_invite (banlist_info *, int); +static void supports_quiet (banlist_info *, int); + +static mode_info modes[MODE_CT] = { + { + N_("Bans"), + N_("Ban"), + 'b', + RPL_BANLIST, + RPL_ENDOFBANLIST, + 1<<MODE_BAN, + supports_bans + } + ,{ + N_("Exempts"), + N_("Exempt"), + 'e', + RPL_EXCEPTLIST, + RPL_ENDOFEXCEPTLIST, + 1<<MODE_EXEMPT, + supports_exempt + } + ,{ + N_("Invites"), + N_("Invite"), + 'I', + RPL_INVITELIST, + RPL_ENDOFINVITELIST, + 1<<MODE_INVITE, + supports_invite + } + ,{ + N_("Quiets"), + N_("Quiet"), + 'q', + RPL_QUIETLIST, + RPL_ENDOFQUIETLIST, + 1<<MODE_QUIET, + supports_quiet + } +}; + +/* model for the banlist tree */ +enum +{ + TYPE_COLUMN, + MASK_COLUMN, + FROM_COLUMN, + DATE_COLUMN, + N_COLUMNS +}; + +static GtkTreeView * +get_view (struct session *sess) +{ + return GTK_TREE_VIEW (sess->res->banlist->treeview); +} + +static GtkListStore * +get_store (struct session *sess) +{ + return GTK_LIST_STORE (gtk_tree_view_get_model (get_view (sess))); +} + +static void +supports_bans (banlist_info *banl, int i) +{ + int bit = 1<<i; + + banl->capable |= bit; + banl->readable |= bit; + banl->writeable |= bit; + return; +} + +static void +supports_exempt (banlist_info *banl, int i) +{ + server *serv = banl->sess->server; + char *cm = serv->chanmodes; + int bit = 1<<i; + + if (serv->have_except) + goto yes; + + if (!cm) + return; + + while (*cm) + { + if (*cm == ',') + break; + if (*cm == 'e') + goto yes; + cm++; + } + return; + +yes: + banl->capable |= bit; + banl->writeable |= bit; +} + +static void +supports_invite (banlist_info *banl, int i) +{ + server *serv = banl->sess->server; + char *cm = serv->chanmodes; + int bit = 1<<i; + + if (serv->have_invite) + goto yes; + + if (!cm) + return; + + while (*cm) + { + if (*cm == ',') + break; + if (*cm == 'I') + goto yes; + cm++; + } + return; + +yes: + banl->capable |= bit; + banl->writeable |= bit; +} + +static void +supports_quiet (banlist_info *banl, int i) +{ + server *serv = banl->sess->server; + char *cm = serv->chanmodes; + int bit = 1<<i; + + if (!cm) + return; + + while (*cm) + { + if (*cm == ',') + break; + if (*cm == modes[i].letter) + goto yes; + cm++; + } + return; + +yes: + banl->capable |= bit; + banl->readable |= bit; + banl->writeable |= bit; +} + +/* fe_add_ban_list() and fe_ban_list_end() return TRUE if consumed, FALSE otherwise */ +gboolean +fe_add_ban_list (struct session *sess, char *mask, char *who, char *when, int rplcode) +{ + banlist_info *banl = sess->res->banlist; + int i; + GtkListStore *store; + GtkTreeIter iter; + + if (!banl) + return FALSE; + + for (i = 0; i < MODE_CT; i++) + if (modes[i].code == rplcode) + break; + if (i == MODE_CT) + { + /* printf ("Unexpected value in fe_add_ban_list: %d\n", rplcode); */ + return FALSE; + } + if (banl->pending & 1<<i) + { + store = get_store (sess); + gtk_list_store_append (store, &iter); + + gtk_list_store_set (store, &iter, TYPE_COLUMN, _(modes[i].type), MASK_COLUMN, mask, + FROM_COLUMN, who, DATE_COLUMN, when, -1); + + banl->line_ct++; + return TRUE; + } + else return FALSE; +} + +/* Sensitize checkboxes and buttons as appropriate for the moment */ +static void +banlist_sensitize (banlist_info *banl) +{ + int checkable, i; + gboolean is_op = FALSE; + + if (banl->sess->me == NULL) + return; + + /* FIXME: More access levels than these can unban */ + if (banl->sess->me->op || banl->sess->me->hop) + is_op = TRUE; + + /* CHECKBOXES -- */ + checkable = is_op? banl->writeable: banl->readable; + for (i = 0; i < MODE_CT; i++) + { + if (banl->checkboxes[i] == NULL) + continue; + if ((checkable & 1<<i) == 0) + /* Checkbox is not checkable. Grey it and uncheck it. */ + { + gtk_widget_set_sensitive (banl->checkboxes[i], FALSE); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (banl->checkboxes[i]), FALSE); + } + else + /* Checkbox is checkable. Be sure it's sensitive. */ + { + gtk_widget_set_sensitive (banl->checkboxes[i], TRUE); + } + } + + /* BUTTONS --- */ + if (!is_op || banl->line_ct == 0) + { + /* If user is not op or list is empty, buttons should be all greyed */ + gtk_widget_set_sensitive (banl->but_clear, FALSE); + gtk_widget_set_sensitive (banl->but_crop, FALSE); + gtk_widget_set_sensitive (banl->but_remove, FALSE); + } + else + { + /* If no lines are selected, only the CLEAR button should be sensitive */ + if (banl->select_ct == 0) + { + gtk_widget_set_sensitive (banl->but_clear, TRUE); + gtk_widget_set_sensitive (banl->but_crop, FALSE); + gtk_widget_set_sensitive (banl->but_remove, FALSE); + } + /* If any lines are selected, only the REMOVE and CROP buttons should be sensitive */ + else + { + gtk_widget_set_sensitive (banl->but_clear, FALSE); + gtk_widget_set_sensitive (banl->but_crop, banl->line_ct == banl->select_ct? FALSE: TRUE); + gtk_widget_set_sensitive (banl->but_remove, TRUE); + } + } + + /* Set "Refresh" sensitvity */ + gtk_widget_set_sensitive (banl->but_refresh, banl->pending? FALSE: banl->checked? TRUE: FALSE); +} +/* fe_ban_list_end() returns TRUE if consumed, FALSE otherwise */ +gboolean +fe_ban_list_end (struct session *sess, int rplcode) +{ + banlist_info *banl = sess->res->banlist; + int i; + + if (!banl) + return FALSE; + + for (i = 0; i < MODE_CT; i++) + if (modes[i].endcode == rplcode) + break; + if (i == MODE_CT) + { + /* printf ("Unexpected rplcode value in fe_ban_list_end: %d\n", rplcode); */ + return FALSE; + } + if (banl->pending & modes[i].bit) + { + banl->pending &= ~modes[i].bit; + if (!banl->pending) + { + gtk_widget_set_sensitive (banl->but_refresh, TRUE); + banlist_sensitize (banl); + } + return TRUE; + } + else return FALSE; +} + +static void +banlist_copyentry (GtkWidget *menuitem, GtkTreeView *view) +{ + GtkTreeModel *model; + GtkTreeSelection *sel; + GtkTreeIter iter; + GValue mask; + GValue from; + GValue date; + char *str; + + memset (&mask, 0, sizeof (mask)); + memset (&from, 0, sizeof (from)); + memset (&date, 0, sizeof (date)); + + /* get selection (which should have been set on click) + * and temporarily switch to single mode to get selected iter */ + sel = gtk_tree_view_get_selection (view); + gtk_tree_selection_set_mode (sel, GTK_SELECTION_SINGLE); + if (gtk_tree_selection_get_selected (sel, &model, &iter)) + { + gtk_tree_model_get_value (model, &iter, MASK_COLUMN, &mask); + gtk_tree_model_get_value (model, &iter, FROM_COLUMN, &from); + gtk_tree_model_get_value (model, &iter, DATE_COLUMN, &date); + + /* poor way to get which is selected but it works */ + if (strcmp (_("Copy mask"), gtk_menu_item_get_label (GTK_MENU_ITEM(menuitem))) == 0) + str = g_value_dup_string (&mask); + else + str = g_strdup_printf (_("%s on %s by %s"), g_value_get_string (&mask), + g_value_get_string (&date), g_value_get_string (&from)); + + if (str[0] != 0) + gtkutil_copy_to_clipboard (menuitem, NULL, str); + + g_value_unset (&mask); + g_value_unset (&from); + g_value_unset (&date); + g_free (str); + } + gtk_tree_selection_set_mode (sel, GTK_SELECTION_MULTIPLE); +} + +static gboolean +banlist_button_pressed (GtkWidget *wid, GdkEventButton *event, gpointer userdata) +{ + GtkTreePath *path; + GtkWidget *menu, *maskitem, *allitem; + + /* Check for right click */ + if (event->type == GDK_BUTTON_PRESS && event->button == 3) + { + if (gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (wid), event->x, event->y, + &path, NULL, NULL, NULL)) + { + /* Must set the row active for use in callback */ + gtk_tree_view_set_cursor (GTK_TREE_VIEW(wid), path, NULL, FALSE); + gtk_tree_path_free (path); + + menu = gtk_menu_new (); + maskitem = gtk_menu_item_new_with_label (_("Copy mask")); + allitem = gtk_menu_item_new_with_label (_("Copy entry")); + g_signal_connect (maskitem, "activate", G_CALLBACK(banlist_copyentry), wid); + g_signal_connect (allitem, "activate", G_CALLBACK(banlist_copyentry), wid); + gtk_menu_shell_append (GTK_MENU_SHELL(menu), maskitem); + gtk_menu_shell_append (GTK_MENU_SHELL(menu), allitem); + gtk_widget_show_all (menu); + + gtk_menu_popup (GTK_MENU(menu), NULL, NULL, NULL, NULL, + event->button, gtk_get_current_event_time ()); + } + + return TRUE; + } + + return FALSE; +} + +static void +banlist_select_changed (GtkWidget *item, banlist_info *banl) +{ + GList *list; + + if (banl->line_ct == 0) + banl->select_ct = 0; + else + { + list = gtk_tree_selection_get_selected_rows (GTK_TREE_SELECTION (item), NULL); + banl->select_ct = g_list_length (list); + g_list_foreach (list, (GFunc) gtk_tree_path_free, NULL); + g_list_free (list); + } + banlist_sensitize (banl); +} + +/** + * * Performs the actual refresh operations. + * */ +static void +banlist_do_refresh (banlist_info *banl) +{ + session *sess = banl->sess; + char tbuf[256]; + int i; + + banlist_sensitize (banl); + + if (sess->server->connected) + { + GtkListStore *store; + + g_snprintf (tbuf, sizeof tbuf, "Ban List (%s, %s) - %s", + sess->channel, sess->server->servername, _(DISPLAY_NAME)); + mg_set_title (banl->window, tbuf); + + store = get_store (sess); + gtk_list_store_clear (store); + banl->line_ct = 0; + banl->pending = banl->checked; + if (banl->pending) + { + for (i = 0; i < MODE_CT; i++) + if (banl->pending & 1<<i) + { + g_snprintf (tbuf, sizeof tbuf, "quote mode %s +%c", sess->channel, modes[i].letter); + handle_command (sess, tbuf, FALSE); + } + } + } + else + { + fe_message (_("Not connected."), FE_MSG_ERROR); + } +} + +static void +banlist_refresh (GtkWidget * wid, banlist_info *banl) +{ + /* JG NOTE: Didn't see actual use of wid here, so just forwarding + * * this to chanlist_do_refresh because I use it without any widget + * * param in chanlist_build_gui_list when the user presses enter + * * or apply for the first time if the list has not yet been + * * received. + * */ + banlist_do_refresh (banl); +} + +static int +banlist_unban_inner (gpointer none, banlist_info *banl, int mode_num) +{ + session *sess = banl->sess; + GtkTreeModel *model; + GtkTreeSelection *sel; + GtkTreeIter iter; + char tbuf[2048]; + char **masks, *mask, *type; + int num_sel, i; + + + /* grab the list of selected items */ + model = GTK_TREE_MODEL (get_store (sess)); + sel = gtk_tree_view_get_selection (get_view (sess)); + + if (!gtk_tree_model_get_iter_first (model, &iter)) + return 0; + + masks = g_new (char *, banl->line_ct); + num_sel = 0; + do + { + if (gtk_tree_selection_iter_is_selected (sel, &iter)) + { + /* Get the mask part of this selected line */ + gtk_tree_model_get (model, &iter, TYPE_COLUMN, &type, MASK_COLUMN, &mask, -1); + + /* If it's the wrong type of mask, just continue */ + if (strcmp (_(modes[mode_num].type), type) != 0) + continue; + + /* Otherwise add it to our array of mask pointers */ + masks[num_sel++] = g_strdup (mask); + g_free (mask); + g_free (type); + } + } + while (gtk_tree_model_iter_next (model, &iter)); + + /* and send to server */ + if (num_sel) + send_channel_modes (sess, tbuf, masks, 0, num_sel, '-', modes[mode_num].letter, 0); + + /* now free everything */ + for (i=0; i < num_sel; i++) + g_free (masks[i]); + g_free (masks); + + return num_sel; +} + +static void +banlist_unban (GtkWidget * wid, banlist_info *banl) +{ + int i, num = 0; + + for (i = 0; i < MODE_CT; i++) + num += banlist_unban_inner (wid, banl, i); + + /* This really should not occur with the redesign */ + if (num < 1) + { + fe_message (_("You must select some bans."), FE_MSG_ERROR); + return; + } + + banlist_do_refresh (banl); +} + +static void +banlist_clear_cb (GtkDialog *dialog, gint response, gpointer data) +{ + banlist_info *banl = data; + GtkTreeSelection *sel; + + gtk_widget_destroy (GTK_WIDGET (dialog)); + + if (response == GTK_RESPONSE_OK) + { + sel = gtk_tree_view_get_selection (get_view (banl->sess)); + gtk_tree_selection_select_all (sel); + banlist_unban (NULL, banl); + } +} + +static void +banlist_clear (GtkWidget * wid, banlist_info *banl) +{ + GtkWidget *dialog; + + dialog = gtk_message_dialog_new (NULL, 0, + GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, + _("Are you sure you want to remove all listed items in %s?"), banl->sess->channel); + + g_signal_connect (G_OBJECT (dialog), "response", + G_CALLBACK (banlist_clear_cb), banl); + gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); + gtk_widget_show (dialog); +} + +static void +banlist_add_selected_cb (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data) +{ + GSList **lp = data; + GtkTreeIter *copy; + + if (lp == NULL) + { + return; + } + + copy = g_new (GtkTreeIter, 1); + *copy = *iter; + + *lp = g_slist_append (*lp, copy); +} + +static void +banlist_crop (GtkWidget * wid, banlist_info *banl) +{ + session *sess = banl->sess; + GtkTreeSelection *select; + GSList *list = NULL, *node; + int num_sel; + + /* remember which bans are selected */ + select = gtk_tree_view_get_selection (get_view (sess)); + /* gtk_tree_selected_get_selected_rows() isn't present in gtk 2.0.x */ + gtk_tree_selection_selected_foreach (select, banlist_add_selected_cb, + &list); + + num_sel = g_slist_length (list); + /* select all, then unselect those that we remembered */ + if (num_sel) + { + gtk_tree_selection_select_all (select); + + for (node = list; node; node = node->next) + gtk_tree_selection_unselect_iter (select, node->data); + + g_slist_foreach (list, (GFunc)g_free, NULL); + g_slist_free (list); + + banlist_unban (NULL, banl); + } else + fe_message (_("You must select some bans."), FE_MSG_ERROR); +} + +static void +banlist_toggle (GtkWidget *item, gpointer data) +{ + banlist_info *banl = data; + int i, bit = 0; + + for (i = 0; i < MODE_CT; i++) + if (banl->checkboxes[i] == item) + { + bit = 1<<i; + break; + } + + if (bit) /* Should be gassert() */ + { + banl->checked &= ~bit; + banl->checked |= (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (item)))? bit: 0; + banlist_do_refresh (banl); + } +} + +/* NOTICE: The official strptime() is not available on all platforms so + * I've implemented a special version here. The official version is + * vastly more general than this: it uses locales for weekday and month + * names and its second arg is a format character-string. This special + * version depends on the format returned by ctime(3) whose manpage + * says it returns: + * "a null-terminated string of the form "Wed Jun 30 21:49:08 1993\n" + * + * If the real strpftime() comes available, use this format string: + * #define DATE_FORMAT "%a %b %d %T %Y" + */ +static void +banlist_strptime (char *ti, struct tm *tm) +{ + /* Expect something like "Sat Mar 16 21:24:27 2013" */ + static char *mon[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", + "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", NULL }; + int M = -1, d = -1, h = -1, m = -1, s = -1, y = -1; + + if (*ti == 0) + { + memset (tm, 0, sizeof *tm); + return; + } + /* No need to supply tm->tm_wday; mktime() doesn't read it */ + ti += 4; + while ((mon[++M])) + if (strncmp (ti, mon[M], 3) == 0) + break; + ti += 4; + + d = strtol (ti, &ti, 10); + h = strtol (++ti, &ti, 10); + m = strtol (++ti, &ti, 10); + s = strtol (++ti, &ti, 10); + y = strtol (++ti, NULL, 10) - 1900; + + tm->tm_sec = s; + tm->tm_min = m; + tm->tm_hour = h; + tm->tm_mday = d; + tm->tm_mon = M; + tm->tm_year = y; +} + +gint +banlist_date_sort (GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer user_data) +{ + struct tm tm1, tm2; + time_t t1, t2; + char *time1, *time2; + + gtk_tree_model_get(model, a, DATE_COLUMN, &time1, -1); + gtk_tree_model_get(model, b, DATE_COLUMN, &time2, -1); + banlist_strptime (time1, &tm1); + banlist_strptime (time2, &tm2); + t1 = mktime (&tm1); + t2 = mktime (&tm2); + + if (t1 < t2) return 1; + if (t1 == t2) return 0; + return -1; +} + +static GtkWidget * +banlist_treeview_new (GtkWidget *box, banlist_info *banl) +{ + GtkListStore *store; + GtkWidget *view; + GtkTreeSelection *select; + GtkTreeViewColumn *col; + GtkTreeSortable *sortable; + + store = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING); + g_return_val_if_fail (store != NULL, NULL); + + sortable = GTK_TREE_SORTABLE (store); + gtk_tree_sortable_set_sort_func (sortable, DATE_COLUMN, banlist_date_sort, GINT_TO_POINTER (DATE_COLUMN), NULL); + + view = gtkutil_treeview_new (box, GTK_TREE_MODEL (store), NULL, + TYPE_COLUMN, _("Type"), + MASK_COLUMN, _("Mask"), + FROM_COLUMN, _("From"), + DATE_COLUMN, _("Date"), -1); + g_signal_connect (G_OBJECT (view), "button-press-event", G_CALLBACK (banlist_button_pressed), NULL); + + col = gtk_tree_view_get_column (GTK_TREE_VIEW (view), MASK_COLUMN); + gtk_tree_view_column_set_alignment (col, 0.5); + gtk_tree_view_column_set_min_width (col, 100); + gtk_tree_view_column_set_sort_column_id (col, MASK_COLUMN); + gtk_tree_view_column_set_sizing (col, GTK_TREE_VIEW_COLUMN_AUTOSIZE); + gtk_tree_view_column_set_resizable (col, TRUE); + + col = gtk_tree_view_get_column (GTK_TREE_VIEW (view), TYPE_COLUMN); + gtk_tree_view_column_set_alignment (col, 0.5); + gtk_tree_view_column_set_sort_column_id (col, TYPE_COLUMN); + + col = gtk_tree_view_get_column (GTK_TREE_VIEW (view), FROM_COLUMN); + gtk_tree_view_column_set_alignment (col, 0.5); + gtk_tree_view_column_set_sort_column_id (col, FROM_COLUMN); + gtk_tree_view_column_set_sizing (col, GTK_TREE_VIEW_COLUMN_AUTOSIZE); + gtk_tree_view_column_set_resizable (col, TRUE); + + col = gtk_tree_view_get_column (GTK_TREE_VIEW (view), DATE_COLUMN); + gtk_tree_view_column_set_alignment (col, 0.5); + gtk_tree_view_column_set_sort_column_id (col, DATE_COLUMN); + gtk_tree_view_column_set_sizing (col, GTK_TREE_VIEW_COLUMN_AUTOSIZE); + gtk_tree_view_column_set_resizable (col, TRUE); + + select = gtk_tree_view_get_selection (GTK_TREE_VIEW (view)); + g_signal_connect (G_OBJECT (select), "changed", G_CALLBACK (banlist_select_changed), banl); + gtk_tree_selection_set_mode (select, GTK_SELECTION_MULTIPLE); + + gtk_widget_show (view); + return view; +} + +static void +banlist_closegui (GtkWidget *wid, banlist_info *banl) +{ + session *sess = banl->sess; + + if (sess->res->banlist == banl) + { + g_free (banl); + sess->res->banlist = NULL; + } +} + +void +banlist_opengui (struct session *sess) +{ + banlist_info *banl; + int i; + GtkWidget *table, *vbox, *bbox; + char tbuf[256]; + + if (sess->type != SESS_CHANNEL || sess->channel[0] == 0) + { + fe_message (_("You can only open the Ban List window while in a channel tab."), FE_MSG_ERROR); + return; + } + + if (sess->res->banlist == NULL) + { + sess->res->banlist = g_new0 (banlist_info, 1); + } + banl = sess->res->banlist; + if (banl->window) + { + mg_bring_tofront (banl->window); + return; + } + + /* New banlist for this session -- Initialize it */ + banl->sess = sess; + /* For each mode set its bit in capable/readable/writeable */ + for (i = 0; i < MODE_CT; i++) + modes[i].tester (banl, i); + /* Force on the checkmark in the "Bans" box */ + banl->checked = 1<<MODE_BAN; + + g_snprintf (tbuf, sizeof tbuf, _("Ban List (%s) - %s"), + sess->server->servername, _(DISPLAY_NAME)); + + banl->window = mg_create_generic_tab ("BanList", tbuf, FALSE, + TRUE, banlist_closegui, banl, 700, 300, &vbox, sess->server); + gtkutil_destroy_on_esc (banl->window); + + gtk_container_set_border_width (GTK_CONTAINER (banl->window), 3); + gtk_box_set_spacing (GTK_BOX (vbox), 3); + + /* create banlist view */ + banl->treeview = banlist_treeview_new (vbox, banl); + + table = gtk_table_new (1, MODE_CT, FALSE); + gtk_table_set_col_spacings (GTK_TABLE (table), 16); + gtk_box_pack_start (GTK_BOX (vbox), table, 0, 0, 0); + + for (i = 0; i < MODE_CT; i++) + { + if (!(banl->capable & 1<<i)) + continue; + banl->checkboxes[i] = gtk_check_button_new_with_label (_(modes[i].name)); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (banl->checkboxes[i]), (banl->checked & 1<<i? TRUE: FALSE)); + g_signal_connect (G_OBJECT (banl->checkboxes[i]), "toggled", + G_CALLBACK (banlist_toggle), banl); + gtk_table_attach (GTK_TABLE (table), banl->checkboxes[i], i+1, i+2, 0, 1, GTK_FILL, GTK_FILL, 0, 0); + } + + bbox = gtk_hbutton_box_new (); + gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_SPREAD); + gtk_container_set_border_width (GTK_CONTAINER (bbox), 5); + gtk_box_pack_end (GTK_BOX (vbox), bbox, 0, 0, 0); + gtk_widget_show (bbox); + + banl->but_remove = gtkutil_button (bbox, GTK_STOCK_REMOVE, 0, banlist_unban, banl, + _("Remove")); + banl->but_crop = gtkutil_button (bbox, GTK_STOCK_REMOVE, 0, banlist_crop, banl, + _("Crop")); + banl->but_clear = gtkutil_button (bbox, GTK_STOCK_CLEAR, 0, banlist_clear, banl, + _("Clear")); + + banl->but_refresh = gtkutil_button (bbox, GTK_STOCK_REFRESH, 0, banlist_refresh, banl, _("Refresh")); + + banlist_do_refresh (banl); + + gtk_widget_show_all (banl->window); +} diff --git a/hexchat/src/fe-gtk/banlist.h b/hexchat/src/fe-gtk/banlist.h new file mode 100644 index 0000000..ee31c2f --- /dev/null +++ b/hexchat/src/fe-gtk/banlist.h @@ -0,0 +1,75 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_BANLIST_H +#define HEXCHAT_BANLIST_H + +#include "../common/hexchat.h" +void banlist_opengui (session *sess); + +#ifndef RPL_BANLIST +/* Where's that darn header file, that would have all these defines ? */ +#define RPL_BANLIST 367 +#define RPL_ENDOFBANLIST 368 +#define RPL_INVITELIST 346 +#define RPL_ENDOFINVITELIST 347 +#define RPL_EXCEPTLIST 348 +#define RPL_ENDOFEXCEPTLIST 349 +#define RPL_QUIETLIST 728 +#define RPL_ENDOFQUIETLIST 729 +#endif + +typedef enum banlist_modes_e { + MODE_BAN, + MODE_EXEMPT, + MODE_INVITE, + MODE_QUIET, + MODE_CT +} banlist_modes; + +typedef struct banlist_info_s { + session *sess; + int capable; /* MODE bitmask */ + int readable; /* subset of capable if not op */ + int writeable; /* subset of capable if op */ + int checked; /* subset of (op? writeable: readable) */ + int pending; /* subset of checked */ + int current; /* index of currently processing mode */ + int line_ct; /* count of presented lines */ + int select_ct; /* count of selected lines */ + GtkWidget *window; + GtkWidget *treeview; + GtkWidget *checkboxes[MODE_CT]; + GtkWidget *but_remove; + GtkWidget *but_crop; + GtkWidget *but_clear; + GtkWidget *but_refresh; +} banlist_info; + +typedef struct mode_info_s { + char *name; /* Checkbox name, e.g. "Bans" */ + char *type; /* Type for type column, e.g. "Ban" */ + char letter; /* /mode-command letter, e.g. 'b' for MODE_BAN */ + int code; /* rfc RPL_foo code, e.g. 367 for RPL_BANLIST */ + int endcode; /* rfc RPL_ENDOFfoo code, e.g. 368 for RPL_ENDOFBANLIST */ + int bit; /* Mask bit, e.g., 1<<MODE_BAN */ + void (*tester)(banlist_info *, int); /* Function returns true to set bit into checkable */ +} mode_info; + +#endif /* HEXCHAT_BANLIST_H */ diff --git a/hexchat/src/fe-gtk/chanlist.c b/hexchat/src/fe-gtk/chanlist.c new file mode 100644 index 0000000..abf6284 --- /dev/null +++ b/hexchat/src/fe-gtk/chanlist.c @@ -0,0 +1,954 @@ +/* X-Chat + * Copyright (C) 1998-2006 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <fcntl.h> +#include <time.h> + +#ifdef WIN32 +#include <io.h> +#else +#include <unistd.h> +#endif + +#include "fe-gtk.h" + +#include <gdk/gdkkeysyms.h> + +#include "../common/hexchat.h" +#include "../common/hexchatc.h" +#include "../common/cfgfiles.h" +#include "../common/outbound.h" +#include "../common/util.h" +#include "../common/fe.h" +#include "../common/server.h" +#include "gtkutil.h" +#include "maingui.h" +#include "menu.h" + +#include "custom-list.h" + +enum +{ + COL_CHANNEL, + COL_USERS, + COL_TOPIC, + N_COLUMNS +}; + +#ifndef CUSTOM_LIST +typedef struct /* this is now in custom-list.h */ +{ + char *topic; + char *collation_key; + guint32 pos; + guint32 users; + /* channel string lives beyond "users" */ +#define GET_CHAN(row) (((char *)row)+sizeof(chanlistrow)) +} +chanlistrow; +#endif + +#define GET_MODEL(xserv) (gtk_tree_view_get_model(GTK_TREE_VIEW(xserv->gui->chanlist_list))) + + +static gboolean +chanlist_match (server *serv, const char *str) +{ + switch (serv->gui->chanlist_search_type) + { + case 1: + return match (gtk_entry_get_text (GTK_ENTRY (serv->gui->chanlist_wild)), str); + case 2: + if (!serv->gui->have_regex) + return 0; + + return g_regex_match (serv->gui->chanlist_match_regex, str, 0, NULL); + default: /* case 0: */ + return nocasestrstr (str, gtk_entry_get_text (GTK_ENTRY (serv->gui->chanlist_wild))) ? 1 : 0; + } +} + +/** + * Updates the caption to reflect the number of users and channels + */ +static void +chanlist_update_caption (server *serv) +{ + gchar tbuf[256]; + + g_snprintf (tbuf, sizeof tbuf, + _("Displaying %d/%d users on %d/%d channels."), + serv->gui->chanlist_users_shown_count, + serv->gui->chanlist_users_found_count, + serv->gui->chanlist_channels_shown_count, + serv->gui->chanlist_channels_found_count); + + gtk_label_set_text (GTK_LABEL (serv->gui->chanlist_label), tbuf); + serv->gui->chanlist_caption_is_stale = FALSE; +} + +static void +chanlist_update_buttons (server *serv) +{ + if (serv->gui->chanlist_channels_shown_count) + { + gtk_widget_set_sensitive (serv->gui->chanlist_join, TRUE); + gtk_widget_set_sensitive (serv->gui->chanlist_savelist, TRUE); + } + else + { + gtk_widget_set_sensitive (serv->gui->chanlist_join, FALSE); + gtk_widget_set_sensitive (serv->gui->chanlist_savelist, FALSE); + } +} + +static void +chanlist_reset_counters (server *serv) +{ + serv->gui->chanlist_users_found_count = 0; + serv->gui->chanlist_users_shown_count = 0; + serv->gui->chanlist_channels_found_count = 0; + serv->gui->chanlist_channels_shown_count = 0; + + chanlist_update_caption (serv); + chanlist_update_buttons (serv); +} + +/* free up our entire linked list and all the nodes */ + +static void +chanlist_data_free (server *serv) +{ + GSList *rows; + chanlistrow *data; + + if (serv->gui->chanlist_data_stored_rows) + { + for (rows = serv->gui->chanlist_data_stored_rows; rows != NULL; + rows = rows->next) + { + data = rows->data; + g_free (data->topic); + g_free (data->collation_key); + g_free (data); + } + + g_slist_free (serv->gui->chanlist_data_stored_rows); + serv->gui->chanlist_data_stored_rows = NULL; + } + + g_slist_free (serv->gui->chanlist_pending_rows); + serv->gui->chanlist_pending_rows = NULL; +} + +/* add any rows we received from the server in the last 0.25s to the GUI */ + +static void +chanlist_flush_pending (server *serv) +{ + GSList *list = serv->gui->chanlist_pending_rows; + GtkTreeModel *model; + chanlistrow *row; + + if (!list) + { + if (serv->gui->chanlist_caption_is_stale) + chanlist_update_caption (serv); + return; + } + model = GET_MODEL (serv); + + while (list) + { + row = list->data; + custom_list_append (CUSTOM_LIST (model), row); + list = list->next; + } + + g_slist_free (serv->gui->chanlist_pending_rows); + serv->gui->chanlist_pending_rows = NULL; + chanlist_update_caption (serv); +} + +static gboolean +chanlist_timeout (server *serv) +{ + chanlist_flush_pending (serv); + return TRUE; +} + +/** + * Places a data row into the gui GtkTreeView, if and only if the row matches + * the user and regex/search requirements. + */ +static void +chanlist_place_row_in_gui (server *serv, chanlistrow *next_row, gboolean force) +{ + GtkTreeModel *model; + + /* First, update the 'found' counter values */ + serv->gui->chanlist_users_found_count += next_row->users; + serv->gui->chanlist_channels_found_count++; + + if (serv->gui->chanlist_channels_shown_count == 1) + /* join & save buttons become live */ + chanlist_update_buttons (serv); + + if (next_row->users < serv->gui->chanlist_minusers) + { + serv->gui->chanlist_caption_is_stale = TRUE; + return; + } + + if (next_row->users > serv->gui->chanlist_maxusers + && serv->gui->chanlist_maxusers > 0) + { + serv->gui->chanlist_caption_is_stale = TRUE; + return; + } + + if (gtk_entry_get_text (GTK_ENTRY (serv->gui->chanlist_wild))[0]) + { + /* Check what the user wants to match. If both buttons or _neither_ + * button is checked, look for match in both by default. + */ + if (serv->gui->chanlist_match_wants_channel == + serv->gui->chanlist_match_wants_topic) + { + if (!chanlist_match (serv, GET_CHAN (next_row)) + && !chanlist_match (serv, next_row->topic)) + { + serv->gui->chanlist_caption_is_stale = TRUE; + return; + } + } + + else if (serv->gui->chanlist_match_wants_channel) + { + if (!chanlist_match (serv, GET_CHAN (next_row))) + { + serv->gui->chanlist_caption_is_stale = TRUE; + return; + } + } + + else if (serv->gui->chanlist_match_wants_topic) + { + if (!chanlist_match (serv, next_row->topic)) + { + serv->gui->chanlist_caption_is_stale = TRUE; + return; + } + } + } + + if (force || serv->gui->chanlist_channels_shown_count < 20) + { + model = GET_MODEL (serv); + /* makes it appear fast :) */ + custom_list_append (CUSTOM_LIST (model), next_row); + chanlist_update_caption (serv); + } + else + /* add it to GUI at the next update interval */ + serv->gui->chanlist_pending_rows = g_slist_prepend (serv->gui->chanlist_pending_rows, next_row); + + /* Update the 'shown' counter values */ + serv->gui->chanlist_users_shown_count += next_row->users; + serv->gui->chanlist_channels_shown_count++; +} + +/* Performs the LIST download from the IRC server. */ + +static void +chanlist_do_refresh (server *serv) +{ + if (serv->gui->chanlist_flash_tag) + { + g_source_remove (serv->gui->chanlist_flash_tag); + serv->gui->chanlist_flash_tag = 0; + } + + if (!serv->connected) + { + fe_message (_("Not connected."), FE_MSG_ERROR); + return; + } + + custom_list_clear ((CustomList *)GET_MODEL (serv)); + gtk_widget_set_sensitive (serv->gui->chanlist_refresh, FALSE); + + chanlist_data_free (serv); + chanlist_reset_counters (serv); + + /* can we request a list with minusers arg? */ + if (serv->use_listargs) + { + /* yes - it will download faster */ + serv->p_list_channels (serv, "", serv->gui->chanlist_minusers); + /* don't allow the spin button below this value from now on */ + serv->gui->chanlist_minusers_downloaded = serv->gui->chanlist_minusers; + } + else + { + /* download all, filter minusers locally only */ + serv->p_list_channels (serv, "", 1); + serv->gui->chanlist_minusers_downloaded = 1; + } + +/* gtk_spin_button_set_range ((GtkSpinButton *)serv->gui->chanlist_min_spin, + serv->gui->chanlist_minusers_downloaded, 999999);*/ +} + +static void +chanlist_refresh (GtkWidget * wid, server *serv) +{ + chanlist_do_refresh (serv); +} + +/** + * Fills the gui GtkTreeView with stored items from the GSList. + */ +static void +chanlist_build_gui_list (server *serv) +{ + GSList *rows; + + /* first check if the list is present */ + if (serv->gui->chanlist_data_stored_rows == NULL) + { + /* start a download */ + chanlist_do_refresh (serv); + return; + } + + custom_list_clear ((CustomList *)GET_MODEL (serv)); + + /* discard pending rows FIXME: free the structs? */ + g_slist_free (serv->gui->chanlist_pending_rows); + serv->gui->chanlist_pending_rows = NULL; + + /* Reset the counters */ + chanlist_reset_counters (serv); + + /* Refill the list */ + for (rows = serv->gui->chanlist_data_stored_rows; rows != NULL; + rows = rows->next) + { + chanlist_place_row_in_gui (serv, rows->data, TRUE); + } + + custom_list_resort ((CustomList *)GET_MODEL (serv)); +} + +/** + * Accepts incoming channel data from inbound.c, allocates new space for a + * chanlistrow, adds it to our linked list and calls chanlist_place_row_in_gui. + */ +void +fe_add_chan_list (server *serv, char *chan, char *users, char *topic) +{ + chanlistrow *next_row; + int len = strlen (chan) + 1; + + /* we allocate the struct and channel string in one go */ + next_row = g_malloc (sizeof (chanlistrow) + len); + memcpy (((char *)next_row) + sizeof (chanlistrow), chan, len); + next_row->topic = strip_color (topic, -1, STRIP_ALL); + next_row->collation_key = g_utf8_collate_key (chan, len-1); + if (!(next_row->collation_key)) + next_row->collation_key = g_strdup (chan); + next_row->users = atoi (users); + + /* add this row to the data */ + serv->gui->chanlist_data_stored_rows = + g_slist_prepend (serv->gui->chanlist_data_stored_rows, next_row); + + /* _possibly_ add the row to the gui */ + chanlist_place_row_in_gui (serv, next_row, FALSE); +} + +void +fe_chan_list_end (server *serv) +{ + /* download complete */ + chanlist_flush_pending (serv); + gtk_widget_set_sensitive (serv->gui->chanlist_refresh, TRUE); + custom_list_resort ((CustomList *)GET_MODEL (serv)); +} + +static void +chanlist_search_pressed (GtkButton * button, server *serv) +{ + chanlist_build_gui_list (serv); +} + +static void +chanlist_find_cb (GtkWidget * wid, server *serv) +{ + const char *pattern = gtk_entry_get_text (GTK_ENTRY (wid)); + + /* recompile the regular expression. */ + if (serv->gui->have_regex) + { + serv->gui->have_regex = 0; + g_regex_unref (serv->gui->chanlist_match_regex); + } + + serv->gui->chanlist_match_regex = g_regex_new (pattern, G_REGEX_CASELESS | G_REGEX_EXTENDED, + G_REGEX_MATCH_NOTBOL, NULL); + + if (serv->gui->chanlist_match_regex) + serv->gui->have_regex = 1; +} + +static void +chanlist_match_channel_button_toggled (GtkWidget * wid, server *serv) +{ + serv->gui->chanlist_match_wants_channel = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (wid)); +} + +static void +chanlist_match_topic_button_toggled (GtkWidget * wid, server *serv) +{ + serv->gui->chanlist_match_wants_topic = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (wid)); +} + +static char * +chanlist_get_selected (server *serv, gboolean get_topic) +{ + char *chan; + GtkTreeSelection *sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (serv->gui->chanlist_list)); + GtkTreeModel *model; + GtkTreeIter iter; + + if (!gtk_tree_selection_get_selected (sel, &model, &iter)) + return NULL; + + gtk_tree_model_get (model, &iter, get_topic ? COL_TOPIC : COL_CHANNEL, &chan, -1); + return chan; +} + +static void +chanlist_join (GtkWidget * wid, server *serv) +{ + char tbuf[CHANLEN + 6]; + char *chan = chanlist_get_selected (serv, FALSE); + if (chan) + { + if (serv->connected && (strcmp (chan, "*") != 0)) + { + g_snprintf (tbuf, sizeof (tbuf), "join %s", chan); + handle_command (serv->server_session, tbuf, FALSE); + } else + gdk_beep (); + g_free (chan); + } +} + +static void +chanlist_filereq_done (server *serv, char *file) +{ + time_t t = time (0); + int fh, users; + char *chan, *topic; + char buf[1024]; + GtkTreeModel *model = GET_MODEL (serv); + GtkTreeIter iter; + + if (!file) + return; + + fh = hexchat_open_file (file, O_TRUNC | O_WRONLY | O_CREAT, 0600, + XOF_DOMODE | XOF_FULLPATH); + if (fh == -1) + return; + + g_snprintf (buf, sizeof buf, "HexChat Channel List: %s - %s\n", + serv->servername, ctime (&t)); + write (fh, buf, strlen (buf)); + + if (gtk_tree_model_get_iter_first (model, &iter)) + { + do + { + gtk_tree_model_get (model, &iter, + COL_CHANNEL, &chan, + COL_USERS, &users, + COL_TOPIC, &topic, -1); + g_snprintf (buf, sizeof buf, "%-16s %-5d%s\n", chan, users, topic); + g_free (chan); + g_free (topic); + write (fh, buf, strlen (buf)); + } + while (gtk_tree_model_iter_next (model, &iter)); + } + + close (fh); +} + +static void +chanlist_save (GtkWidget * wid, server *serv) +{ + GtkTreeIter iter; + GtkTreeModel *model = GET_MODEL (serv); + + if (gtk_tree_model_get_iter_first (model, &iter)) + gtkutil_file_req (NULL, _("Select an output filename"), chanlist_filereq_done, + serv, NULL, NULL, FRF_WRITE); +} + +static gboolean +chanlist_flash (server *serv) +{ + if (gtk_widget_get_state (serv->gui->chanlist_refresh) != GTK_STATE_ACTIVE) + gtk_widget_set_state (serv->gui->chanlist_refresh, GTK_STATE_ACTIVE); + else + gtk_widget_set_state (serv->gui->chanlist_refresh, GTK_STATE_PRELIGHT); + + return TRUE; +} + +static void +chanlist_minusers (GtkSpinButton *wid, server *serv) +{ + serv->gui->chanlist_minusers = gtk_spin_button_get_value_as_int (wid); + prefs.hex_gui_chanlist_minusers = serv->gui->chanlist_minusers; + save_config(); + + if (serv->gui->chanlist_minusers < serv->gui->chanlist_minusers_downloaded) + { + if (serv->gui->chanlist_flash_tag == 0) + serv->gui->chanlist_flash_tag = g_timeout_add (500, (GSourceFunc)chanlist_flash, serv); + } + else + { + if (serv->gui->chanlist_flash_tag) + { + g_source_remove (serv->gui->chanlist_flash_tag); + serv->gui->chanlist_flash_tag = 0; + } + } +} + +static void +chanlist_maxusers (GtkSpinButton *wid, server *serv) +{ + serv->gui->chanlist_maxusers = gtk_spin_button_get_value_as_int (wid); + prefs.hex_gui_chanlist_maxusers = serv->gui->chanlist_maxusers; + save_config(); +} + +static void +chanlist_dclick_cb (GtkTreeView *view, GtkTreePath *path, + GtkTreeViewColumn *column, gpointer data) +{ + chanlist_join (0, (server *) data); /* double clicked a row */ +} + +static void +chanlist_menu_destroy (GtkWidget *menu, gpointer userdata) +{ + gtk_widget_destroy (menu); + g_object_unref (menu); +} + +static void +chanlist_copychannel (GtkWidget *item, server *serv) +{ + char *chan = chanlist_get_selected (serv, FALSE); + if (chan) + { + gtkutil_copy_to_clipboard (item, NULL, chan); + g_free (chan); + } +} + +static void +chanlist_copytopic (GtkWidget *item, server *serv) +{ + char *topic = chanlist_get_selected (serv, TRUE); + if (topic) + { + gtkutil_copy_to_clipboard (item, NULL, topic); + g_free (topic); + } +} + +static gboolean +chanlist_button_cb (GtkTreeView *tree, GdkEventButton *event, server *serv) +{ + GtkWidget *menu; + GtkTreeSelection *sel; + GtkTreePath *path; + char *chan; + + if (event->button != 3) + return FALSE; + + if (!gtk_tree_view_get_path_at_pos (tree, event->x, event->y, &path, 0, 0, 0)) + return FALSE; + + /* select what they right-clicked on */ + sel = gtk_tree_view_get_selection (tree); + gtk_tree_selection_unselect_all (sel); + gtk_tree_selection_select_path (sel, path); + gtk_tree_path_free (path); + + menu = gtk_menu_new (); + if (event->window) + gtk_menu_set_screen (GTK_MENU (menu), gdk_window_get_screen (event->window)); + g_object_ref (menu); + g_object_ref_sink (menu); + g_object_unref (menu); + g_signal_connect (G_OBJECT (menu), "selection-done", + G_CALLBACK (chanlist_menu_destroy), NULL); + mg_create_icon_item (_("_Join Channel"), GTK_STOCK_JUMP_TO, menu, + chanlist_join, serv); + mg_create_icon_item (_("_Copy Channel Name"), GTK_STOCK_COPY, menu, + chanlist_copychannel, serv); + mg_create_icon_item (_("Copy _Topic Text"), GTK_STOCK_COPY, menu, + chanlist_copytopic, serv); + + chan = chanlist_get_selected (serv, FALSE); + menu_addfavoritemenu (serv, menu, chan, FALSE); + g_free (chan); + + gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 0, event->time); + + return TRUE; +} + +static void +chanlist_destroy_widget (GtkWidget *wid, server *serv) +{ + custom_list_clear ((CustomList *)GET_MODEL (serv)); + chanlist_data_free (serv); + + if (serv->gui->chanlist_flash_tag) + { + g_source_remove (serv->gui->chanlist_flash_tag); + serv->gui->chanlist_flash_tag = 0; + } + + if (serv->gui->chanlist_tag) + { + g_source_remove (serv->gui->chanlist_tag); + serv->gui->chanlist_tag = 0; + } + + if (serv->gui->have_regex) + { + g_regex_unref (serv->gui->chanlist_match_regex); + serv->gui->have_regex = 0; + } +} + +static void +chanlist_closegui (GtkWidget *wid, server *serv) +{ + if (is_server (serv)) + serv->gui->chanlist_window = NULL; +} + +static void +chanlist_add_column (GtkWidget *tree, int textcol, int size, char *title, gboolean right_justified) +{ + GtkCellRenderer *renderer; + GtkTreeViewColumn *col; + + renderer = gtk_cell_renderer_text_new (); + if (right_justified) + g_object_set (G_OBJECT (renderer), "xalign", (gfloat) 1.0, NULL); + g_object_set (G_OBJECT (renderer), "ypad", (gint) 0, NULL); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree), -1, title, + renderer, "text", textcol, NULL); + gtk_cell_renderer_text_set_fixed_height_from_font (GTK_CELL_RENDERER_TEXT (renderer), 1); + + col = gtk_tree_view_get_column (GTK_TREE_VIEW (tree), textcol); + gtk_tree_view_column_set_sort_column_id (col, textcol); + gtk_tree_view_column_set_resizable (col, TRUE); + if (textcol == COL_CHANNEL) + { + gtk_tree_view_column_set_sizing (col, GTK_TREE_VIEW_COLUMN_FIXED); + gtk_tree_view_column_set_fixed_width (col, size); + } + else if (textcol == COL_USERS) + { + gtk_tree_view_column_set_sizing (col, GTK_TREE_VIEW_COLUMN_AUTOSIZE); + gtk_tree_view_column_set_resizable (col, FALSE); + } +} + +static void +chanlist_combo_cb (GtkWidget *combo, server *serv) +{ + serv->gui->chanlist_search_type = gtk_combo_box_get_active (GTK_COMBO_BOX (combo)); +} + +void +chanlist_opengui (server *serv, int do_refresh) +{ + GtkWidget *vbox, *hbox, *table, *wid, *view; + char tbuf[256]; + GtkListStore *store; + + if (serv->gui->chanlist_window) + { + mg_bring_tofront (serv->gui->chanlist_window); + return; + } + + g_snprintf (tbuf, sizeof tbuf, _("Channel List (%s) - %s"), + server_get_network (serv, TRUE), _(DISPLAY_NAME)); + + serv->gui->chanlist_pending_rows = NULL; + serv->gui->chanlist_tag = 0; + serv->gui->chanlist_flash_tag = 0; + serv->gui->chanlist_data_stored_rows = NULL; + + if (!serv->gui->chanlist_minusers) + { + if (prefs.hex_gui_chanlist_minusers < 1 || prefs.hex_gui_chanlist_minusers > 999999) + { + prefs.hex_gui_chanlist_minusers = 5; + save_config(); + } + + serv->gui->chanlist_minusers = prefs.hex_gui_chanlist_minusers; + } + + if (!serv->gui->chanlist_maxusers) + { + if (prefs.hex_gui_chanlist_maxusers < 1 || prefs.hex_gui_chanlist_maxusers > 999999) + { + prefs.hex_gui_chanlist_maxusers = 9999; + save_config(); + } + + serv->gui->chanlist_maxusers = prefs.hex_gui_chanlist_maxusers; + } + + serv->gui->chanlist_window = + mg_create_generic_tab ("ChanList", tbuf, FALSE, TRUE, chanlist_closegui, + serv, 640, 480, &vbox, serv); + gtkutil_destroy_on_esc (serv->gui->chanlist_window); + + gtk_container_set_border_width (GTK_CONTAINER (vbox), 6); + gtk_box_set_spacing (GTK_BOX (vbox), 12); + + /* make a label to store the user/channel info */ + wid = gtk_label_new (NULL); + gtk_box_pack_start (GTK_BOX (vbox), wid, 0, 0, 0); + gtk_widget_show (wid); + serv->gui->chanlist_label = wid; + + /* ============================================================= */ + + store = (GtkListStore *) custom_list_new(); + view = gtkutil_treeview_new (vbox, GTK_TREE_MODEL (store), NULL, -1); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (gtk_widget_get_parent (view)), + GTK_SHADOW_IN); + serv->gui->chanlist_list = view; + + g_signal_connect (G_OBJECT (view), "row_activated", + G_CALLBACK (chanlist_dclick_cb), serv); + g_signal_connect (G_OBJECT (view), "button-press-event", + G_CALLBACK (chanlist_button_cb), serv); + + chanlist_add_column (view, COL_CHANNEL, 96, _("Channel"), FALSE); + chanlist_add_column (view, COL_USERS, 50, _("Users"), TRUE); + chanlist_add_column (view, COL_TOPIC, 50, _("Topic"), FALSE); + gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (view), TRUE); + /* this is a speed up, but no horizontal scrollbar :( */ + /*gtk_tree_view_set_fixed_height_mode (GTK_TREE_VIEW (view), TRUE);*/ + gtk_widget_show (view); + + /* ============================================================= */ + + table = gtk_table_new (4, 4, FALSE); + gtk_table_set_col_spacings (GTK_TABLE (table), 12); + gtk_table_set_row_spacings (GTK_TABLE (table), 3); + gtk_box_pack_start (GTK_BOX (vbox), table, 0, 1, 0); + gtk_widget_show (table); + + wid = gtkutil_button (NULL, GTK_STOCK_FIND, 0, chanlist_search_pressed, serv, + _("_Search")); + serv->gui->chanlist_search = wid; + gtk_table_attach (GTK_TABLE (table), wid, 3, 4, 3, 4, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + + wid = gtkutil_button (NULL, GTK_STOCK_REFRESH, 0, chanlist_refresh, serv, + _("_Download List")); + serv->gui->chanlist_refresh = wid; + gtk_table_attach (GTK_TABLE (table), wid, 3, 4, 2, 3, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + + wid = gtkutil_button (NULL, GTK_STOCK_SAVE_AS, 0, chanlist_save, serv, + _("Save _List...")); + serv->gui->chanlist_savelist = wid; + gtk_table_attach (GTK_TABLE (table), wid, 3, 4, 1, 2, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + + wid = gtkutil_button (NULL, GTK_STOCK_JUMP_TO, 0, chanlist_join, serv, + _("_Join Channel")); + serv->gui->chanlist_join = wid; + gtk_table_attach (GTK_TABLE (table), wid, 3, 4, 0, 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + + /* ============================================================= */ + + wid = gtk_label_new (_("Show only:")); + gtk_misc_set_alignment (GTK_MISC (wid), 0, 0.5); + gtk_table_attach (GTK_TABLE (table), wid, 0, 1, 3, 4, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + gtk_widget_show (wid); + + hbox = gtk_hbox_new (0, 0); + gtk_box_set_spacing (GTK_BOX (hbox), 9); + gtk_table_attach (GTK_TABLE (table), hbox, 1, 2, 3, 4, + GTK_FILL, GTK_FILL, 0, 0); + gtk_widget_show (hbox); + + wid = gtk_label_new (_("channels with")); + gtk_box_pack_start (GTK_BOX (hbox), wid, 0, 0, 0); + gtk_widget_show (wid); + + wid = gtk_spin_button_new_with_range (1, 999999, 1); + gtk_spin_button_set_value (GTK_SPIN_BUTTON (wid), + serv->gui->chanlist_minusers); + g_signal_connect (G_OBJECT (wid), "value_changed", + G_CALLBACK (chanlist_minusers), serv); + gtk_box_pack_start (GTK_BOX (hbox), wid, 0, 0, 0); + gtk_widget_show (wid); + serv->gui->chanlist_min_spin = wid; + + wid = gtk_label_new (_("to")); + gtk_box_pack_start (GTK_BOX (hbox), wid, 0, 0, 0); + gtk_widget_show (wid); + + wid = gtk_spin_button_new_with_range (1, 999999, 1); + gtk_spin_button_set_value (GTK_SPIN_BUTTON (wid), + serv->gui->chanlist_maxusers); + g_signal_connect (G_OBJECT (wid), "value_changed", + G_CALLBACK (chanlist_maxusers), serv); + gtk_box_pack_start (GTK_BOX (hbox), wid, 0, 0, 0); + gtk_widget_show (wid); + + wid = gtk_label_new (_("users.")); + gtk_box_pack_start (GTK_BOX (hbox), wid, 0, 0, 0); + gtk_widget_show (wid); + + /* ============================================================= */ + + wid = gtk_label_new (_("Look in:")); + gtk_misc_set_alignment (GTK_MISC (wid), 0, 0.5); + gtk_table_attach (GTK_TABLE (table), wid, 0, 1, 2, 3, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + gtk_widget_show (wid); + + hbox = gtk_hbox_new (0, 0); + gtk_box_set_spacing (GTK_BOX (hbox), 12); + gtk_table_attach (GTK_TABLE (table), hbox, 1, 2, 2, 3, + GTK_FILL, GTK_FILL, 0, 0); + gtk_widget_show (hbox); + + wid = gtk_check_button_new_with_label (_("Channel name")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wid), TRUE); + g_signal_connect (G_OBJECT (wid), "toggled", + G_CALLBACK(chanlist_match_channel_button_toggled), serv); + gtk_box_pack_start (GTK_BOX (hbox), wid, 0, 0, 0); + gtk_widget_show (wid); + + wid = gtk_check_button_new_with_label (_("Topic")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wid), TRUE); + g_signal_connect (G_OBJECT (wid), "toggled", + G_CALLBACK (chanlist_match_topic_button_toggled), + serv); + gtk_box_pack_start (GTK_BOX (hbox), wid, 0, 0, 0); + gtk_widget_show (wid); + + serv->gui->chanlist_match_wants_channel = 1; + serv->gui->chanlist_match_wants_topic = 1; + + /* ============================================================= */ + + wid = gtk_label_new (_("Search type:")); + gtk_misc_set_alignment (GTK_MISC (wid), 0, 0.5); + gtk_table_attach (GTK_TABLE (table), wid, 0, 1, 1, 2, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + gtk_widget_show (wid); + + wid = gtk_combo_box_text_new (); + gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (wid), _("Simple Search")); + gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (wid), _("Pattern Match (Wildcards)")); + gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (wid), _("Regular Expression")); + gtk_combo_box_set_active (GTK_COMBO_BOX (wid), serv->gui->chanlist_search_type); + gtk_table_attach (GTK_TABLE (table), wid, 1, 2, 1, 2, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + g_signal_connect (G_OBJECT (wid), "changed", + G_CALLBACK (chanlist_combo_cb), serv); + gtk_widget_show (wid); + + /* ============================================================= */ + + wid = gtk_label_new (_("Find:")); + gtk_misc_set_alignment (GTK_MISC (wid), 0, 0.5); + gtk_table_attach (GTK_TABLE (table), wid, 0, 1, 0, 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + gtk_widget_show (wid); + + wid = gtk_entry_new (); + gtk_entry_set_max_length (GTK_ENTRY(wid), 255); + g_signal_connect (G_OBJECT (wid), "changed", + G_CALLBACK (chanlist_find_cb), serv); + g_signal_connect (G_OBJECT (wid), "activate", + G_CALLBACK (chanlist_search_pressed), + (gpointer) serv); + gtk_table_attach (GTK_TABLE (table), wid, 1, 2, 0, 1, + GTK_EXPAND | GTK_FILL, 0, 0, 0); + gtk_widget_show (wid); + serv->gui->chanlist_wild = wid; + + chanlist_find_cb (wid, serv); + + /* ============================================================= */ + + wid = gtk_vseparator_new (); + gtk_table_attach (GTK_TABLE (table), wid, 2, 3, 0, 5, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + gtk_widget_show (wid); + + g_signal_connect (G_OBJECT (serv->gui->chanlist_window), "destroy", + G_CALLBACK (chanlist_destroy_widget), serv); + + /* reset the counters. */ + chanlist_reset_counters (serv); + + serv->gui->chanlist_tag = g_timeout_add (250, (GSourceFunc)chanlist_timeout, serv); + + if (do_refresh) + chanlist_do_refresh (serv); + + chanlist_update_buttons (serv); + gtk_widget_show (serv->gui->chanlist_window); + gtk_widget_grab_focus (serv->gui->chanlist_refresh); +} diff --git a/hexchat/src/fe-gtk/chanlist.h b/hexchat/src/fe-gtk/chanlist.h new file mode 100644 index 0000000..481beec --- /dev/null +++ b/hexchat/src/fe-gtk/chanlist.h @@ -0,0 +1,25 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_CHANLIST_H +#define HEXCHAT_CHANLIST_H + +void chanlist_opengui (server *serv, int do_refresh); + +#endif diff --git a/hexchat/src/fe-gtk/chanview-tabs.c b/hexchat/src/fe-gtk/chanview-tabs.c new file mode 100644 index 0000000..5681f9d --- /dev/null +++ b/hexchat/src/fe-gtk/chanview-tabs.c @@ -0,0 +1,821 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +/* file included in chanview.c */ + +typedef struct +{ + GtkWidget *outer; /* outer box */ + GtkWidget *inner; /* inner box */ + GtkWidget *b1; /* button1 */ + GtkWidget *b2; /* button2 */ +} tabview; + +static void chanview_populate (chanview *cv); + +/* ignore "toggled" signal? */ +static int ignore_toggle = FALSE; +static int tab_left_is_moving = 0; +static int tab_right_is_moving = 0; + +/* userdata for gobjects used here: + * + * tab (togglebuttons inside boxes): + * "u" userdata passed to tab-focus callback function (sess) + * "c" the tab's (chan *) + * + * box (family box) + * "f" family + * + */ + +/* + * GtkViewports request at least as much space as their children do. + * If we don't intervene here, the GtkViewport will be granted its + * request, even at the expense of resizing the top-level window. + */ +static void +cv_tabs_sizerequest (GtkWidget *viewport, GtkRequisition *requisition, chanview *cv) +{ + if (!cv->vertical) + requisition->width = 1; + else + requisition->height = 1; +} + +static void +cv_tabs_sizealloc (GtkWidget *widget, GtkAllocation *allocation, chanview *cv) +{ + GdkWindow *parent_win; + GtkAdjustment *adj; + GtkWidget *inner; + gint viewport_size; + + inner = ((tabview *)cv)->inner; + parent_win = gtk_widget_get_window (gtk_widget_get_parent (inner)); + + if (cv->vertical) + { + adj = gtk_viewport_get_vadjustment (GTK_VIEWPORT (gtk_widget_get_parent (inner))); + gdk_window_get_geometry (parent_win, 0, 0, 0, &viewport_size, 0); + } else + { + adj = gtk_viewport_get_hadjustment (GTK_VIEWPORT (gtk_widget_get_parent (inner))); + gdk_window_get_geometry (parent_win, 0, 0, &viewport_size, 0, 0); + } + + if (gtk_adjustment_get_upper (adj) <= viewport_size) + { + gtk_widget_hide (((tabview *)cv)->b1); + gtk_widget_hide (((tabview *)cv)->b2); + } else + { + gtk_widget_show (((tabview *)cv)->b1); + gtk_widget_show (((tabview *)cv)->b2); + } +} + +static gint +tab_search_offset (GtkWidget *inner, gint start_offset, + gboolean forward, gboolean vertical) +{ + GList *boxes; + GList *tabs; + GtkWidget *box; + GtkWidget *button; + GtkAllocation allocation; + gint found; + + boxes = gtk_container_get_children (GTK_CONTAINER (inner)); + if (!forward && boxes) + boxes = g_list_last (boxes); + + while (boxes) + { + box = (GtkWidget *)boxes->data; + boxes = (forward ? boxes->next : boxes->prev); + + tabs = gtk_container_get_children (GTK_CONTAINER (box)); + if (!forward && tabs) + tabs = g_list_last (tabs); + + while (tabs) + { + button = (GtkWidget *)tabs->data; + tabs = (forward ? tabs->next : tabs->prev); + + if (!GTK_IS_TOGGLE_BUTTON (button)) + continue; + + gtk_widget_get_allocation (button, &allocation); + found = (vertical ? allocation.y : allocation.x); + if ((forward && found > start_offset) || + (!forward && found < start_offset)) + return found; + } + } + + return 0; +} + +static void +tab_scroll_left_up_clicked (GtkWidget *widget, chanview *cv) +{ + GtkAdjustment *adj; + gint viewport_size; + gfloat new_value; + GtkWidget *inner; + GdkWindow *parent_win; + gdouble i; + + inner = ((tabview *)cv)->inner; + parent_win = gtk_widget_get_window (gtk_widget_get_parent (inner)); + + if (cv->vertical) + { + adj = gtk_viewport_get_vadjustment (GTK_VIEWPORT (gtk_widget_get_parent(inner))); + gdk_window_get_geometry (parent_win, 0, 0, 0, &viewport_size, 0); + } else + { + adj = gtk_viewport_get_hadjustment (GTK_VIEWPORT (gtk_widget_get_parent(inner))); + gdk_window_get_geometry (parent_win, 0, 0, &viewport_size, 0, 0); + } + + new_value = tab_search_offset (inner, gtk_adjustment_get_value (adj), 0, cv->vertical); + + if (new_value + viewport_size > gtk_adjustment_get_upper (adj)) + new_value = gtk_adjustment_get_upper (adj) - viewport_size; + + if (!tab_left_is_moving) + { + tab_left_is_moving = 1; + + for (i = gtk_adjustment_get_value (adj); ((i > new_value) && (tab_left_is_moving)); i -= 0.1) + { + gtk_adjustment_set_value (adj, i); + while (g_main_context_pending (NULL)) + g_main_context_iteration (NULL, TRUE); + } + + gtk_adjustment_set_value (adj, new_value); + + tab_left_is_moving = 0; /* hSP: set to false in case we didnt get stopped (the normal case) */ + } + else + { + tab_left_is_moving = 0; /* hSP: jump directly to next element if user is clicking faster than we can scroll.. */ + } +} + +static void +tab_scroll_right_down_clicked (GtkWidget *widget, chanview *cv) +{ + GtkAdjustment *adj; + gint viewport_size; + gfloat new_value; + GtkWidget *inner; + GdkWindow *parent_win; + gdouble i; + + inner = ((tabview *)cv)->inner; + parent_win = gtk_widget_get_window (gtk_widget_get_parent (inner)); + + if (cv->vertical) + { + adj = gtk_viewport_get_vadjustment (GTK_VIEWPORT (gtk_widget_get_parent(inner))); + gdk_window_get_geometry (parent_win, 0, 0, 0, &viewport_size, 0); + } else + { + adj = gtk_viewport_get_hadjustment (GTK_VIEWPORT (gtk_widget_get_parent(inner))); + gdk_window_get_geometry (parent_win, 0, 0, &viewport_size, 0, 0); + } + + new_value = tab_search_offset (inner, gtk_adjustment_get_value (adj), 1, cv->vertical); + + if (new_value == 0 || new_value + viewport_size > gtk_adjustment_get_upper (adj)) + new_value = gtk_adjustment_get_upper (adj) - viewport_size; + + if (!tab_right_is_moving) + { + tab_right_is_moving = 1; + + for (i = gtk_adjustment_get_value (adj); ((i < new_value) && (tab_right_is_moving)); i += 0.1) + { + gtk_adjustment_set_value (adj, i); + while (g_main_context_pending (NULL)) + g_main_context_iteration (NULL, TRUE); + } + + gtk_adjustment_set_value (adj, new_value); + + tab_right_is_moving = 0; /* hSP: set to false in case we didnt get stopped (the normal case) */ + } + else + { + tab_right_is_moving = 0; /* hSP: jump directly to next element if user is clicking faster than we can scroll.. */ + } +} + +static gboolean +tab_scroll_cb (GtkWidget *widget, GdkEventScroll *event, gpointer cv) +{ + if (prefs.hex_gui_tab_scrollchans) + { + if (event->direction == GDK_SCROLL_DOWN) + mg_switch_page (1, 1); + else if (event->direction == GDK_SCROLL_UP) + mg_switch_page (1, -1); + } + else + { + /* mouse wheel scrolling */ + if (event->direction == GDK_SCROLL_UP) + tab_scroll_left_up_clicked (widget, cv); + else if (event->direction == GDK_SCROLL_DOWN) + tab_scroll_right_down_clicked (widget, cv); + } + + return FALSE; +} + +static void +cv_tabs_xclick_cb (GtkWidget *button, chanview *cv) +{ + cv->cb_xbutton (cv, cv->focused, cv->focused->tag, cv->focused->userdata); +} + +/* make a Scroll (arrow) button */ + +static GtkWidget * +make_sbutton (GtkArrowType type, void *click_cb, void *userdata) +{ + GtkWidget *button, *arrow; + + button = gtk_button_new (); + arrow = gtk_arrow_new (type, GTK_SHADOW_NONE); + gtk_container_add (GTK_CONTAINER (button), arrow); + gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE); + g_signal_connect (G_OBJECT (button), "clicked", + G_CALLBACK (click_cb), userdata); + g_signal_connect (G_OBJECT (button), "scroll_event", + G_CALLBACK (tab_scroll_cb), userdata); + gtk_widget_show (arrow); + + return button; +} + +static void +cv_tabs_init (chanview *cv) +{ + GtkWidget *box, *hbox = NULL; + GtkWidget *viewport; + GtkWidget *outer; + GtkWidget *button; + + if (cv->vertical) + outer = gtk_vbox_new (0, 0); + else + outer = gtk_hbox_new (0, 0); + ((tabview *)cv)->outer = outer; + g_signal_connect (G_OBJECT (outer), "size_allocate", + G_CALLBACK (cv_tabs_sizealloc), cv); +/* gtk_container_set_border_width (GTK_CONTAINER (outer), 2);*/ + gtk_widget_show (outer); + + viewport = gtk_viewport_new (0, 0); + gtk_viewport_set_shadow_type (GTK_VIEWPORT (viewport), GTK_SHADOW_NONE); + g_signal_connect (G_OBJECT (viewport), "size_request", + G_CALLBACK (cv_tabs_sizerequest), cv); + g_signal_connect (G_OBJECT (viewport), "scroll_event", + G_CALLBACK (tab_scroll_cb), cv); + gtk_box_pack_start (GTK_BOX (outer), viewport, 1, 1, 0); + gtk_widget_show (viewport); + + if (cv->vertical) + box = gtk_vbox_new (FALSE, 0); + else + box = gtk_hbox_new (FALSE, 0); + ((tabview *)cv)->inner = box; + gtk_container_add (GTK_CONTAINER (viewport), box); + gtk_widget_show (box); + + /* if vertical, the buttons can be side by side */ + if (cv->vertical) + { + hbox = gtk_hbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (outer), hbox, 0, 0, 0); + gtk_widget_show (hbox); + } + + /* make the Scroll buttons */ + ((tabview *)cv)->b2 = make_sbutton (cv->vertical ? + GTK_ARROW_UP : GTK_ARROW_LEFT, + tab_scroll_left_up_clicked, + cv); + + ((tabview *)cv)->b1 = make_sbutton (cv->vertical ? + GTK_ARROW_DOWN : GTK_ARROW_RIGHT, + tab_scroll_right_down_clicked, + cv); + + if (hbox) + { + gtk_container_add (GTK_CONTAINER (hbox), ((tabview *)cv)->b2); + gtk_container_add (GTK_CONTAINER (hbox), ((tabview *)cv)->b1); + } else + { + gtk_box_pack_start (GTK_BOX (outer), ((tabview *)cv)->b2, 0, 0, 0); + gtk_box_pack_start (GTK_BOX (outer), ((tabview *)cv)->b1, 0, 0, 0); + } + + button = gtkutil_button (outer, GTK_STOCK_CLOSE, NULL, cv_tabs_xclick_cb, + cv, 0); + gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE); + gtk_widget_set_can_focus (button, FALSE); + + gtk_container_add (GTK_CONTAINER (cv->box), outer); +} + +static void +cv_tabs_postinit (chanview *cv) +{ +} + +static void +tab_add_sorted (chanview *cv, GtkWidget *box, GtkWidget *tab, chan *ch) +{ + GList *list; + GtkWidget *child; + int i = 0; + void *b; + + if (!cv->sorted) + { + gtk_box_pack_start (GTK_BOX (box), tab, 0, 0, 0); + gtk_widget_show (tab); + return; + } + + /* sorting TODO: + * - move tab if renamed (dialogs) */ + + /* userdata, passed to mg_tabs_compare() */ + b = ch->userdata; + + list = gtk_container_get_children (GTK_CONTAINER (box)); + while (list) + { + child = list->data; + if (!GTK_IS_SEPARATOR (child)) + { + void *a = g_object_get_data (G_OBJECT (child), "u"); + + if (ch->tag == 0 && cv->cb_compare (a, b) > 0) + { + gtk_box_pack_start (GTK_BOX (box), tab, 0, 0, 0); + gtk_box_reorder_child (GTK_BOX (box), tab, ++i); + gtk_widget_show (tab); + return; + } + } + i++; + list = list->next; + } + + /* append */ + gtk_box_pack_start (GTK_BOX (box), tab, 0, 0, 0); + gtk_box_reorder_child (GTK_BOX (box), tab, i); + gtk_widget_show (tab); +} + +/* remove empty boxes and separators */ + +static void +cv_tabs_prune (chanview *cv) +{ + GList *boxes, *children; + GtkWidget *box, *inner; + GtkWidget *child; + int empty; + + inner = ((tabview *)cv)->inner; + boxes = gtk_container_get_children (GTK_CONTAINER (inner)); + while (boxes) + { + child = boxes->data; + box = child; + boxes = boxes->next; + + /* check if the box is empty (except a vseperator) */ + empty = TRUE; + children = gtk_container_get_children (GTK_CONTAINER (box)); + while (children) + { + if (!GTK_IS_SEPARATOR ((GtkWidget *)children->data)) + { + empty = FALSE; + break; + } + children = children->next; + } + + if (empty) + gtk_widget_destroy (box); + } +} + +static void +tab_add_real (chanview *cv, GtkWidget *tab, chan *ch) +{ + GList *boxes, *children; + GtkWidget *sep, *box, *inner; + GtkWidget *child; + int empty; + + inner = ((tabview *)cv)->inner; + /* see if a family for this tab already exists */ + boxes = gtk_container_get_children (GTK_CONTAINER (inner)); + while (boxes) + { + child = boxes->data; + box = child; + + if (g_object_get_data (G_OBJECT (box), "f") == ch->family) + { + tab_add_sorted (cv, box, tab, ch); + gtk_widget_queue_resize (gtk_widget_get_parent(inner)); + return; + } + + boxes = boxes->next; + + /* check if the box is empty (except a vseperator) */ + empty = TRUE; + children = gtk_container_get_children (GTK_CONTAINER (box)); + while (children) + { + if (!GTK_IS_SEPARATOR ((GtkWidget *)children->data)) + { + empty = FALSE; + break; + } + children = children->next; + } + + if (empty) + gtk_widget_destroy (box); + } + + /* create a new family box */ + if (cv->vertical) + { + /* vertical */ + box = gtk_vbox_new (FALSE, 0); + sep = gtk_hseparator_new (); + } else + { + /* horiz */ + box = gtk_hbox_new (FALSE, 0); + sep = gtk_vseparator_new (); + } + + gtk_box_pack_end (GTK_BOX (box), sep, 0, 0, 4); + gtk_widget_show (sep); + gtk_box_pack_start (GTK_BOX (inner), box, 0, 0, 0); + g_object_set_data (G_OBJECT (box), "f", ch->family); + gtk_box_pack_start (GTK_BOX (box), tab, 0, 0, 0); + gtk_widget_show (tab); + gtk_widget_show (box); + gtk_widget_queue_resize (gtk_widget_get_parent(inner)); +} + +static gboolean +tab_ignore_cb (GtkWidget *widget, GdkEventCrossing *event, gpointer user_data) +{ + return TRUE; +} + +/* called when a tab is clicked (button down) */ + +static void +tab_pressed_cb (GtkToggleButton *tab, chan *ch) +{ + chan *old_tab; + int is_switching = TRUE; + chanview *cv = ch->cv; + + ignore_toggle = TRUE; + /* de-activate the old tab */ + old_tab = cv->focused; + if (old_tab && old_tab->impl) + { + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (old_tab->impl), FALSE); + if (old_tab == ch) + is_switching = FALSE; + } + gtk_toggle_button_set_active (tab, TRUE); + ignore_toggle = FALSE; + cv->focused = ch; + + if (/*tab->active*/is_switching) + /* call the focus callback */ + cv->cb_focus (cv, ch, ch->tag, ch->userdata); +} + +/* called for keyboard tab toggles only */ +static void +tab_toggled_cb (GtkToggleButton *tab, chan *ch) +{ + if (ignore_toggle) + return; + + /* activated a tab via keyboard */ + tab_pressed_cb (tab, ch); +} + +static gboolean +tab_click_cb (GtkWidget *wid, GdkEventButton *event, chan *ch) +{ + return ch->cv->cb_contextmenu (ch->cv, ch, ch->tag, ch->userdata, event); +} + +static void * +cv_tabs_add (chanview *cv, chan *ch, char *name, GtkTreeIter *parent) +{ + GtkWidget *but; + + but = gtk_toggle_button_new_with_label (name); + gtk_widget_set_name (but, "hexchat-tab"); + g_object_set_data (G_OBJECT (but), "c", ch); + /* used to trap right-clicks */ + g_signal_connect (G_OBJECT (but), "button_press_event", + G_CALLBACK (tab_click_cb), ch); + /* avoid prelights */ + g_signal_connect (G_OBJECT (but), "enter_notify_event", + G_CALLBACK (tab_ignore_cb), NULL); + g_signal_connect (G_OBJECT (but), "leave_notify_event", + G_CALLBACK (tab_ignore_cb), NULL); + g_signal_connect (G_OBJECT (but), "pressed", + G_CALLBACK (tab_pressed_cb), ch); + /* for keyboard */ + g_signal_connect (G_OBJECT (but), "toggled", + G_CALLBACK (tab_toggled_cb), ch); + g_object_set_data (G_OBJECT (but), "u", ch->userdata); + + tab_add_real (cv, but, ch); + + return but; +} + +/* traverse all the family boxes of tabs + * + * A "group" is basically: + * GtkV/HBox + * `-GtkViewPort + * `-GtkV/HBox (inner box) + * `- GtkBox (family box) + * `- GtkToggleButton + * `- GtkToggleButton + * `- ... + * `- GtkBox + * `- GtkToggleButton + * `- GtkToggleButton + * `- ... + * `- ... + * + * */ + +static int +tab_group_for_each_tab (chanview *cv, + int (*callback) (GtkWidget *tab, int num, int usernum), + int usernum) +{ + GList *tabs; + GList *boxes; + GtkWidget *child; + GtkBox *innerbox; + int i; + + innerbox = (GtkBox *) ((tabview *)cv)->inner; + boxes = gtk_container_get_children (GTK_CONTAINER (innerbox)); + i = 0; + while (boxes) + { + child = boxes->data; + tabs = gtk_container_get_children (GTK_CONTAINER (child)); + + while (tabs) + { + child = tabs->data; + + if (!GTK_IS_SEPARATOR (child)) + { + if (callback (child, i, usernum) != -1) + return i; + i++; + } + tabs = tabs->next; + } + + boxes = boxes->next; + } + + return i; +} + +static int +tab_check_focus_cb (GtkWidget *tab, int num, int unused) +{ + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (tab))) + return num; + + return -1; +} + +/* returns the currently focused tab number */ + +static int +tab_group_get_cur_page (chanview *cv) +{ + return tab_group_for_each_tab (cv, tab_check_focus_cb, 0); +} + +static void +cv_tabs_focus (chan *ch) +{ + if (ch->impl) + /* focus the new one (tab_pressed_cb defocuses the old one) */ + tab_pressed_cb (GTK_TOGGLE_BUTTON (ch->impl), ch); +} + +static int +tab_focus_num_cb (GtkWidget *tab, int num, int want) +{ + if (num == want) + { + cv_tabs_focus (g_object_get_data (G_OBJECT (tab), "c")); + return 1; + } + + return -1; +} + +static void +cv_tabs_change_orientation (chanview *cv) +{ + /* cleanup the old one */ + if (cv->func_cleanup) + cv->func_cleanup (cv); + + /* now rebuild a new tabbar or tree */ + cv->func_init (cv); + chanview_populate (cv); +} + +/* switch to the tab number specified */ + +static void +cv_tabs_move_focus (chanview *cv, gboolean relative, int num) +{ + int i, max; + + if (relative) + { + max = cv->size; + i = tab_group_get_cur_page (cv) + num; + /* make it wrap around at both ends */ + if (i < 0) + i = max - 1; + if (i >= max) + i = 0; + tab_group_for_each_tab (cv, tab_focus_num_cb, i); + return; + } + + tab_group_for_each_tab (cv, tab_focus_num_cb, num); +} + +static void +cv_tabs_remove (chan *ch) +{ + gtk_widget_destroy (ch->impl); + ch->impl = NULL; + + cv_tabs_prune (ch->cv); +} + +static void +cv_tabs_move (chan *ch, int delta) +{ + int i = 0; + int pos = 0; + GList *list; + GtkWidget *parent = gtk_widget_get_parent(GTK_WIDGET (ch->impl)); + + for (list = gtk_container_get_children (GTK_CONTAINER (parent)); list; list = list->next) + { + GtkWidget *child_entry; + + child_entry = list->data; + if (child_entry == ch->impl) + pos = i; + + /* keep separator at end to not throw off our count */ + if (GTK_IS_SEPARATOR (child_entry)) + gtk_box_reorder_child (GTK_BOX (parent), child_entry, -1); + else + i++; + } + + pos = (pos - delta) % i; + gtk_box_reorder_child (GTK_BOX (parent), ch->impl, pos); +} + +static void +cv_tabs_move_family (chan *ch, int delta) +{ + int i, pos = 0; + GList *list; + GtkWidget *box = NULL; + + /* find position of tab's family */ + i = 0; + for (list = gtk_container_get_children (GTK_CONTAINER (((tabview *)ch->cv)->inner)); list; list = list->next) + { + GtkWidget *child_entry; + void *fam; + + child_entry = list->data; + fam = g_object_get_data (G_OBJECT (child_entry), "f"); + if (fam == ch->family) + { + box = child_entry; + pos = i; + } + i++; + } + + pos = (pos - delta) % i; + gtk_box_reorder_child (GTK_BOX (gtk_widget_get_parent(box)), box, pos); +} + +static void +cv_tabs_cleanup (chanview *cv) +{ + if (cv->box) + gtk_widget_destroy (((tabview *)cv)->outer); +} + +static void +cv_tabs_set_color (chan *ch, PangoAttrList *list) +{ + gtk_label_set_attributes (GTK_LABEL (gtk_bin_get_child (GTK_BIN (ch->impl))), list); +} + +static void +cv_tabs_rename (chan *ch, char *name) +{ + PangoAttrList *attr; + GtkWidget *tab = ch->impl; + + attr = gtk_label_get_attributes (GTK_LABEL (gtk_bin_get_child (GTK_BIN (tab)))); + if (attr) + pango_attr_list_ref (attr); + + gtk_button_set_label (GTK_BUTTON (tab), name); + gtk_widget_queue_resize (gtk_widget_get_parent(gtk_widget_get_parent(gtk_widget_get_parent(tab)))); + + if (attr) + { + gtk_label_set_attributes (GTK_LABEL (gtk_bin_get_child (GTK_BIN (tab))), attr); + pango_attr_list_unref (attr); + } +} + +static gboolean +cv_tabs_is_collapsed (chan *ch) +{ + return FALSE; +} + +static chan * +cv_tabs_get_parent (chan *ch) +{ + return NULL; +} diff --git a/hexchat/src/fe-gtk/chanview-tree.c b/hexchat/src/fe-gtk/chanview-tree.c new file mode 100644 index 0000000..261304d --- /dev/null +++ b/hexchat/src/fe-gtk/chanview-tree.c @@ -0,0 +1,396 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +/* file included in chanview.c */ + +typedef struct +{ + GtkTreeView *tree; + GtkWidget *scrollw; /* scrolledWindow */ +} treeview; + +#include <gdk/gdk.h> + +static void /* row-activated, when a row is double clicked */ +cv_tree_activated_cb (GtkTreeView *view, GtkTreePath *path, + GtkTreeViewColumn *column, gpointer data) +{ + if (gtk_tree_view_row_expanded (view, path)) + gtk_tree_view_collapse_row (view, path); + else + gtk_tree_view_expand_row (view, path, FALSE); +} + +static void /* row selected callback */ +cv_tree_sel_cb (GtkTreeSelection *sel, chanview *cv) +{ + GtkTreeModel *model; + GtkTreeIter iter; + chan *ch; + + if (gtk_tree_selection_get_selected (sel, &model, &iter)) + { + gtk_tree_model_get (model, &iter, COL_CHAN, &ch, -1); + + cv->focused = ch; + cv->cb_focus (cv, ch, ch->tag, ch->userdata); + } +} + +static gboolean +cv_tree_click_cb (GtkTreeView *tree, GdkEventButton *event, chanview *cv) +{ + chan *ch; + GtkTreePath *path; + GtkTreeIter iter; + int ret = FALSE; + + if (gtk_tree_view_get_path_at_pos (tree, event->x, event->y, &path, 0, 0, 0)) + { + if (gtk_tree_model_get_iter (GTK_TREE_MODEL (cv->store), &iter, path)) + { + gtk_tree_model_get (GTK_TREE_MODEL (cv->store), &iter, COL_CHAN, &ch, -1); + ret = cv->cb_contextmenu (cv, ch, ch->tag, ch->userdata, event); + } + gtk_tree_path_free (path); + } + return ret; +} + +static gboolean +cv_tree_scroll_event_cb (GtkWidget *widget, GdkEventScroll *event, gpointer user_data) +{ + if (prefs.hex_gui_tab_scrollchans) + { + if (event->direction == GDK_SCROLL_DOWN) + mg_switch_page (1, 1); + else if (event->direction == GDK_SCROLL_UP) + mg_switch_page (1, -1); + + return TRUE; + } + + return FALSE; +} + +static void +cv_tree_init (chanview *cv) +{ + GtkWidget *view, *win; + GtkCellRenderer *renderer; + GtkTreeViewColumn *col; + int wid1, wid2; + static const GtkTargetEntry dnd_src_target[] = + { + {"HEXCHAT_CHANVIEW", GTK_TARGET_SAME_APP, 75 } + }; + static const GtkTargetEntry dnd_dest_target[] = + { + {"HEXCHAT_USERLIST", GTK_TARGET_SAME_APP, 75 } + }; + + win = gtk_scrolled_window_new (0, 0); + /*gtk_container_set_border_width (GTK_CONTAINER (win), 1);*/ + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (win), + GTK_SHADOW_IN); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (win), + GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); + gtk_container_add (GTK_CONTAINER (cv->box), win); + gtk_widget_show (win); + + view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (cv->store)); + gtk_widget_set_name (view, "hexchat-tree"); + if (cv->style) + gtk_widget_set_style (view, cv->style); + /*gtk_widget_modify_base (view, GTK_STATE_NORMAL, &colors[COL_BG]);*/ + gtk_widget_set_can_focus (view, FALSE); + gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (view), FALSE); + + if (prefs.hex_gui_tab_dots) + { + gtk_tree_view_set_enable_tree_lines (GTK_TREE_VIEW (view), TRUE); + } + + /* Indented channels with no server looks silly, but we still want expanders */ + if (!prefs.hex_gui_tab_server) + { + gtk_widget_style_get (view, "expander-size", &wid1, "horizontal-separator", &wid2, NULL); + gtk_tree_view_set_level_indentation (GTK_TREE_VIEW (view), -wid1 - wid2); + } + + + gtk_container_add (GTK_CONTAINER (win), view); + col = gtk_tree_view_column_new(); + + /* icon column */ + if (cv->use_icons) + { + renderer = gtk_cell_renderer_pixbuf_new (); + if (prefs.hex_gui_compact) + g_object_set (G_OBJECT (renderer), "ypad", 0, NULL); + + gtk_tree_view_column_pack_start(col, renderer, FALSE); + gtk_tree_view_column_set_attributes (col, renderer, "pixbuf", COL_PIXBUF, NULL); + } + + /* main column */ + renderer = gtk_cell_renderer_text_new (); + if (prefs.hex_gui_compact) + g_object_set (G_OBJECT (renderer), "ypad", 0, NULL); + gtk_cell_renderer_text_set_fixed_height_from_font (GTK_CELL_RENDERER_TEXT (renderer), 1); + gtk_tree_view_column_pack_start(col, renderer, TRUE); + gtk_tree_view_column_set_attributes (col, renderer, "text", COL_NAME, "attributes", COL_ATTR, NULL); + gtk_tree_view_append_column(GTK_TREE_VIEW(view), col); + + g_signal_connect (G_OBJECT (gtk_tree_view_get_selection (GTK_TREE_VIEW (view))), + "changed", G_CALLBACK (cv_tree_sel_cb), cv); + g_signal_connect (G_OBJECT (view), "button-press-event", + G_CALLBACK (cv_tree_click_cb), cv); + g_signal_connect (G_OBJECT (view), "row-activated", + G_CALLBACK (cv_tree_activated_cb), NULL); + g_signal_connect (G_OBJECT (view), "scroll_event", + G_CALLBACK (cv_tree_scroll_event_cb), NULL); + + gtk_drag_dest_set (view, GTK_DEST_DEFAULT_ALL, dnd_dest_target, 1, + GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_LINK); + gtk_drag_source_set (view, GDK_BUTTON1_MASK, dnd_src_target, 1, GDK_ACTION_COPY); + + g_signal_connect (G_OBJECT (view), "drag_begin", + G_CALLBACK (mg_drag_begin_cb), NULL); + g_signal_connect (G_OBJECT (view), "drag_drop", + G_CALLBACK (mg_drag_drop_cb), NULL); + g_signal_connect (G_OBJECT (view), "drag_motion", + G_CALLBACK (mg_drag_motion_cb), NULL); + g_signal_connect (G_OBJECT (view), "drag_end", + G_CALLBACK (mg_drag_end_cb), NULL); + + ((treeview *)cv)->tree = GTK_TREE_VIEW (view); + ((treeview *)cv)->scrollw = win; + gtk_widget_show (view); +} + +static void +cv_tree_postinit (chanview *cv) +{ + gtk_tree_view_expand_all (((treeview *)cv)->tree); +} + +static void * +cv_tree_add (chanview *cv, chan *ch, char *name, GtkTreeIter *parent) +{ + GtkTreePath *path; + + if (parent) + { + /* expand the parent node */ + path = gtk_tree_model_get_path (GTK_TREE_MODEL (cv->store), parent); + if (path) + { + gtk_tree_view_expand_row (((treeview *)cv)->tree, path, FALSE); + gtk_tree_path_free (path); + } + } + + return NULL; +} + +static void +cv_tree_change_orientation (chanview *cv) +{ +} + +static void +cv_tree_focus (chan *ch) +{ + GtkTreeView *tree = ((treeview *)ch->cv)->tree; + GtkTreeModel *model = gtk_tree_view_get_model (tree); + GtkTreePath *path; + GtkTreeIter parent; + GdkRectangle cell_rect; + GdkRectangle vis_rect; + gint dest_y; + + /* expand the parent node */ + if (gtk_tree_model_iter_parent (model, &parent, &ch->iter)) + { + path = gtk_tree_model_get_path (model, &parent); + if (path) + { + /*if (!gtk_tree_view_row_expanded (tree, path)) + { + gtk_tree_path_free (path); + return; + }*/ + gtk_tree_view_expand_row (tree, path, FALSE); + gtk_tree_path_free (path); + } + } + + path = gtk_tree_model_get_path (model, &ch->iter); + if (path) + { + /* This full section does what + * gtk_tree_view_scroll_to_cell (tree, path, NULL, TRUE, 0.5, 0.5); + * does, except it only scrolls the window if the provided cell is + * not visible. Basic algorithm taken from gtktreeview.c */ + + /* obtain information to see if the cell is visible */ + gtk_tree_view_get_background_area (tree, path, NULL, &cell_rect); + gtk_tree_view_get_visible_rect (tree, &vis_rect); + + /* The cordinates aren't offset correctly */ + gtk_tree_view_convert_widget_to_bin_window_coords ( tree, cell_rect.x, cell_rect.y, NULL, &cell_rect.y ); + + /* only need to scroll if out of bounds */ + if (cell_rect.y < vis_rect.y || + cell_rect.y + cell_rect.height > vis_rect.y + vis_rect.height) + { + dest_y = cell_rect.y - ((vis_rect.height - cell_rect.height) * 0.5); + if (dest_y < 0) + dest_y = 0; + gtk_tree_view_scroll_to_point (tree, -1, dest_y); + } + /* theft done, now make it focused like */ + gtk_tree_view_set_cursor (tree, path, NULL, FALSE); + gtk_tree_path_free (path); + } +} + +static void +cv_tree_move_focus (chanview *cv, gboolean relative, int num) +{ + chan *ch; + + if (relative) + { + num += cv_find_number_of_chan (cv, cv->focused); + num %= cv->size; + /* make it wrap around at both ends */ + if (num < 0) + num = cv->size - 1; + } + + ch = cv_find_chan_by_number (cv, num); + if (ch) + cv_tree_focus (ch); +} + +static void +cv_tree_remove (chan *ch) +{ +} + +static void +move_row (chan *ch, int delta, GtkTreeIter *parent) +{ + GtkTreeStore *store = ch->cv->store; + GtkTreeIter *src = &ch->iter; + GtkTreeIter dest = ch->iter; + GtkTreePath *dest_path; + + if (delta < 0) /* down */ + { + if (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &dest)) + gtk_tree_store_swap (store, src, &dest); + else /* move to top */ + gtk_tree_store_move_after (store, src, NULL); + + } else + { + dest_path = gtk_tree_model_get_path (GTK_TREE_MODEL (store), &dest); + if (gtk_tree_path_prev (dest_path)) + { + gtk_tree_model_get_iter (GTK_TREE_MODEL (store), &dest, dest_path); + gtk_tree_store_swap (store, src, &dest); + } else + { /* move to bottom */ + gtk_tree_store_move_before (store, src, NULL); + } + + gtk_tree_path_free (dest_path); + } +} + +static void +cv_tree_move (chan *ch, int delta) +{ + GtkTreeIter parent; + + /* do nothing if this is a server row */ + if (gtk_tree_model_iter_parent (GTK_TREE_MODEL (ch->cv->store), &parent, &ch->iter)) + move_row (ch, delta, &parent); +} + +static void +cv_tree_move_family (chan *ch, int delta) +{ + move_row (ch, delta, NULL); +} + +static void +cv_tree_cleanup (chanview *cv) +{ + if (cv->box) + /* kill the scrolled window */ + gtk_widget_destroy (((treeview *)cv)->scrollw); +} + +static void +cv_tree_set_color (chan *ch, PangoAttrList *list) +{ + /* nothing to do, it's already set in the store */ +} + +static void +cv_tree_rename (chan *ch, char *name) +{ + /* nothing to do, it's already renamed in the store */ +} + +static chan * +cv_tree_get_parent (chan *ch) +{ + chan *parent_ch = NULL; + GtkTreeIter parent; + + if (gtk_tree_model_iter_parent (GTK_TREE_MODEL (ch->cv->store), &parent, &ch->iter)) + { + gtk_tree_model_get (GTK_TREE_MODEL (ch->cv->store), &parent, COL_CHAN, &parent_ch, -1); + } + + return parent_ch; +} + +static gboolean +cv_tree_is_collapsed (chan *ch) +{ + chan *parent = cv_tree_get_parent (ch); + GtkTreePath *path = NULL; + gboolean ret; + + if (parent == NULL) + return FALSE; + + path = gtk_tree_model_get_path (GTK_TREE_MODEL (parent->cv->store), + &parent->iter); + ret = !gtk_tree_view_row_expanded (((treeview *)parent->cv)->tree, path); + gtk_tree_path_free (path); + + return ret; +} diff --git a/hexchat/src/fe-gtk/chanview.c b/hexchat/src/fe-gtk/chanview.c new file mode 100644 index 0000000..e5556d9 --- /dev/null +++ b/hexchat/src/fe-gtk/chanview.c @@ -0,0 +1,661 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +/* abstract channel view: tabs or tree or anything you like */ + +#include <stdlib.h> +#include <string.h> + +#include "../common/hexchat.h" +#include "../common/hexchatc.h" +#include "fe-gtk.h" +#include "maingui.h" +#include "gtkutil.h" +#include "chanview.h" + +/* treeStore columns */ +#define COL_NAME 0 /* (char *) */ +#define COL_CHAN 1 /* (chan *) */ +#define COL_ATTR 2 /* (PangoAttrList *) */ +#define COL_PIXBUF 3 /* (GdkPixbuf *) */ + +struct _chanview +{ + /* impl scratch area */ + char implscratch[sizeof (void *) * 8]; + + GtkTreeStore *store; + int size; /* number of channels in view */ + + GtkWidget *box; /* the box we destroy when changing implementations */ + GtkStyle *style; /* style used for tree */ + chan *focused; /* currently focused channel */ + int trunc_len; + + /* callbacks */ + void (*cb_focus) (chanview *, chan *, int tag, void *userdata); + void (*cb_xbutton) (chanview *, chan *, int tag, void *userdata); + gboolean (*cb_contextmenu) (chanview *, chan *, int tag, void *userdata, GdkEventButton *); + int (*cb_compare) (void *a, void *b); + + /* impl */ + void (*func_init) (chanview *); + void (*func_postinit) (chanview *); + void *(*func_add) (chanview *, chan *, char *, GtkTreeIter *); + void (*func_move_focus) (chanview *, gboolean, int); + void (*func_change_orientation) (chanview *); + void (*func_remove) (chan *); + void (*func_move) (chan *, int delta); + void (*func_move_family) (chan *, int delta); + void (*func_focus) (chan *); + void (*func_set_color) (chan *, PangoAttrList *); + void (*func_rename) (chan *, char *); + gboolean (*func_is_collapsed) (chan *); + chan *(*func_get_parent) (chan *); + void (*func_cleanup) (chanview *); + + unsigned int sorted:1; + unsigned int vertical:1; + unsigned int use_icons:1; +}; + +struct _chan +{ + chanview *cv; /* our owner */ + GtkTreeIter iter; + void *userdata; /* session * */ + void *family; /* server * or null */ + void *impl; /* togglebutton or null */ + GdkPixbuf *icon; + short allow_closure; /* allow it to be closed when it still has children? */ + short tag; +}; + +static chan *cv_find_chan_by_number (chanview *cv, int num); +static int cv_find_number_of_chan (chanview *cv, chan *find_ch); + + +/* ======= TABS ======= */ + +#include "chanview-tabs.c" + + +/* ======= TREE ======= */ + +#include "chanview-tree.c" + + +/* ==== ABSTRACT CHANVIEW ==== */ + +static char * +truncate_tab_name (char *name, int max) +{ + char *buf; + + if (max > 2 && g_utf8_strlen (name, -1) > max) + { + /* truncate long channel names */ + buf = g_malloc (strlen (name) + 4); + g_utf8_strncpy (buf, name, max); + strcat (buf, ".."); + return buf; + } + + return name; +} + +/* iterate through a model, into 1 depth of children */ + +static void +model_foreach_1 (GtkTreeModel *model, void (*func)(void *, GtkTreeIter *), + void *userdata) +{ + GtkTreeIter iter, inner; + + if (gtk_tree_model_get_iter_first (model, &iter)) + { + do + { + func (userdata, &iter); + if (gtk_tree_model_iter_children (model, &inner, &iter)) + { + do + func (userdata, &inner); + while (gtk_tree_model_iter_next (model, &inner)); + } + } + while (gtk_tree_model_iter_next (model, &iter)); + } +} + +static void +chanview_pop_cb (chanview *cv, GtkTreeIter *iter) +{ + chan *ch; + char *name; + PangoAttrList *attr; + + gtk_tree_model_get (GTK_TREE_MODEL (cv->store), iter, + COL_NAME, &name, COL_CHAN, &ch, COL_ATTR, &attr, -1); + ch->impl = cv->func_add (cv, ch, name, NULL); + if (attr) + { + cv->func_set_color (ch, attr); + pango_attr_list_unref (attr); + } + g_free (name); +} + +static void +chanview_populate (chanview *cv) +{ + model_foreach_1 (GTK_TREE_MODEL (cv->store), (void *)chanview_pop_cb, cv); +} + +void +chanview_set_impl (chanview *cv, int type) +{ + /* cleanup the old one */ + if (cv->func_cleanup) + cv->func_cleanup (cv); + + switch (type) + { + case 0: + cv->func_init = cv_tabs_init; + cv->func_postinit = cv_tabs_postinit; + cv->func_add = cv_tabs_add; + cv->func_move_focus = cv_tabs_move_focus; + cv->func_change_orientation = cv_tabs_change_orientation; + cv->func_remove = cv_tabs_remove; + cv->func_move = cv_tabs_move; + cv->func_move_family = cv_tabs_move_family; + cv->func_focus = cv_tabs_focus; + cv->func_set_color = cv_tabs_set_color; + cv->func_rename = cv_tabs_rename; + cv->func_is_collapsed = cv_tabs_is_collapsed; + cv->func_get_parent = cv_tabs_get_parent; + cv->func_cleanup = cv_tabs_cleanup; + break; + + default: + cv->func_init = cv_tree_init; + cv->func_postinit = cv_tree_postinit; + cv->func_add = cv_tree_add; + cv->func_move_focus = cv_tree_move_focus; + cv->func_change_orientation = cv_tree_change_orientation; + cv->func_remove = cv_tree_remove; + cv->func_move = cv_tree_move; + cv->func_move_family = cv_tree_move_family; + cv->func_focus = cv_tree_focus; + cv->func_set_color = cv_tree_set_color; + cv->func_rename = cv_tree_rename; + cv->func_is_collapsed = cv_tree_is_collapsed; + cv->func_get_parent = cv_tree_get_parent; + cv->func_cleanup = cv_tree_cleanup; + break; + } + + /* now rebuild a new tabbar or tree */ + cv->func_init (cv); + + chanview_populate (cv); + + cv->func_postinit (cv); + + /* force re-focus */ + if (cv->focused) + cv->func_focus (cv->focused); +} + +static void +chanview_free_ch (chanview *cv, GtkTreeIter *iter) +{ + chan *ch; + + gtk_tree_model_get (GTK_TREE_MODEL (cv->store), iter, COL_CHAN, &ch, -1); + g_free (ch); +} + +static void +chanview_destroy_store (chanview *cv) /* free every (chan *) in the store */ +{ + model_foreach_1 (GTK_TREE_MODEL (cv->store), (void *)chanview_free_ch, cv); + g_object_unref (cv->store); +} + +static void +chanview_destroy (chanview *cv) +{ + if (cv->func_cleanup) + cv->func_cleanup (cv); + + if (cv->box) + gtk_widget_destroy (cv->box); + + chanview_destroy_store (cv); + g_free (cv); +} + +static void +chanview_box_destroy_cb (GtkWidget *box, chanview *cv) +{ + cv->box = NULL; + chanview_destroy (cv); +} + +chanview * +chanview_new (int type, int trunc_len, gboolean sort, gboolean use_icons, + GtkStyle *style) +{ + chanview *cv; + + cv = g_new0 (chanview, 1); + cv->store = gtk_tree_store_new (4, G_TYPE_STRING, G_TYPE_POINTER, + PANGO_TYPE_ATTR_LIST, GDK_TYPE_PIXBUF); + cv->style = style; + cv->box = gtk_hbox_new (0, 0); + cv->trunc_len = trunc_len; + cv->sorted = sort; + cv->use_icons = use_icons; + gtk_widget_show (cv->box); + chanview_set_impl (cv, type); + + g_signal_connect (G_OBJECT (cv->box), "destroy", + G_CALLBACK (chanview_box_destroy_cb), cv); + + return cv; +} + +/* too lazy for signals */ + +void +chanview_set_callbacks (chanview *cv, + void (*cb_focus) (chanview *, chan *, int tag, void *userdata), + void (*cb_xbutton) (chanview *, chan *, int tag, void *userdata), + gboolean (*cb_contextmenu) (chanview *, chan *, int tag, void *userdata, GdkEventButton *), + int (*cb_compare) (void *a, void *b)) +{ + cv->cb_focus = cb_focus; + cv->cb_xbutton = cb_xbutton; + cv->cb_contextmenu = cb_contextmenu; + cv->cb_compare = cb_compare; +} + +/* find a place to insert this new entry, based on the compare function */ + +static void +chanview_insert_sorted (chanview *cv, GtkTreeIter *add_iter, GtkTreeIter *parent, void *ud) +{ + GtkTreeIter iter; + chan *ch; + + if (cv->sorted && gtk_tree_model_iter_children (GTK_TREE_MODEL (cv->store), &iter, parent)) + { + do + { + gtk_tree_model_get (GTK_TREE_MODEL (cv->store), &iter, COL_CHAN, &ch, -1); + if (ch->tag == 0 && cv->cb_compare (ch->userdata, ud) > 0) + { + gtk_tree_store_insert_before (cv->store, add_iter, parent, &iter); + return; + } + } + while (gtk_tree_model_iter_next (GTK_TREE_MODEL (cv->store), &iter)); + } + + gtk_tree_store_append (cv->store, add_iter, parent); +} + +/* find a parent node with the same "family" pointer (i.e. the Server tab) */ + +static int +chanview_find_parent (chanview *cv, void *family, GtkTreeIter *search_iter, chan *avoid) +{ + chan *search_ch; + + /* find this new row's parent, if any */ + if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (cv->store), search_iter)) + { + do + { + gtk_tree_model_get (GTK_TREE_MODEL (cv->store), search_iter, + COL_CHAN, &search_ch, -1); + if (family == search_ch->family && search_ch != avoid /*&& + gtk_tree_store_iter_depth (cv->store, search_iter) == 0*/) + return TRUE; + } + while (gtk_tree_model_iter_next (GTK_TREE_MODEL (cv->store), search_iter)); + } + + return FALSE; +} + +static chan * +chanview_add_real (chanview *cv, char *name, void *family, void *userdata, + gboolean allow_closure, int tag, GdkPixbuf *icon, + chan *ch, chan *avoid) +{ + GtkTreeIter parent_iter; + GtkTreeIter iter; + gboolean has_parent = FALSE; + + if (chanview_find_parent (cv, family, &parent_iter, avoid)) + { + chanview_insert_sorted (cv, &iter, &parent_iter, userdata); + has_parent = TRUE; + } else + { + gtk_tree_store_append (cv->store, &iter, NULL); + } + + if (!ch) + { + ch = g_new0 (chan, 1); + ch->userdata = userdata; + ch->family = family; + ch->cv = cv; + ch->allow_closure = allow_closure; + ch->tag = tag; + ch->icon = icon; + } + memcpy (&(ch->iter), &iter, sizeof (iter)); + + gtk_tree_store_set (cv->store, &iter, COL_NAME, name, COL_CHAN, ch, + COL_PIXBUF, icon, -1); + + cv->size++; + if (!has_parent) + ch->impl = cv->func_add (cv, ch, name, NULL); + else + ch->impl = cv->func_add (cv, ch, name, &parent_iter); + + return ch; +} + +chan * +chanview_add (chanview *cv, char *name, void *family, void *userdata, gboolean allow_closure, int tag, GdkPixbuf *icon) +{ + char *new_name; + chan *ret; + + new_name = truncate_tab_name (name, cv->trunc_len); + + ret = chanview_add_real (cv, new_name, family, userdata, allow_closure, tag, icon, NULL, NULL); + + if (new_name != name) + g_free (new_name); + + return ret; +} + +int +chanview_get_size (chanview *cv) +{ + return cv->size; +} + +GtkWidget * +chanview_get_box (chanview *cv) +{ + return cv->box; +} + +void +chanview_move_focus (chanview *cv, gboolean relative, int num) +{ + cv->func_move_focus (cv, relative, num); +} + +GtkOrientation +chanview_get_orientation (chanview *cv) +{ + return (cv->vertical ? GTK_ORIENTATION_VERTICAL : GTK_ORIENTATION_HORIZONTAL); +} + +void +chanview_set_orientation (chanview *cv, gboolean vertical) +{ + if (vertical != cv->vertical) + { + cv->vertical = vertical; + cv->func_change_orientation (cv); + } +} + +int +chan_get_tag (chan *ch) +{ + return ch->tag; +} + +void * +chan_get_userdata (chan *ch) +{ + return ch->userdata; +} + +void +chan_focus (chan *ch) +{ + if (ch->cv->focused == ch) + return; + + ch->cv->func_focus (ch); +} + +void +chan_move (chan *ch, int delta) +{ + ch->cv->func_move (ch, delta); +} + +void +chan_move_family (chan *ch, int delta) +{ + ch->cv->func_move_family (ch, delta); +} + +void +chan_set_color (chan *ch, PangoAttrList *list) +{ + gtk_tree_store_set (ch->cv->store, &ch->iter, COL_ATTR, list, -1); + ch->cv->func_set_color (ch, list); +} + +void +chan_rename (chan *ch, char *name, int trunc_len) +{ + char *new_name; + + new_name = truncate_tab_name (name, trunc_len); + + gtk_tree_store_set (ch->cv->store, &ch->iter, COL_NAME, new_name, -1); + ch->cv->func_rename (ch, new_name); + ch->cv->trunc_len = trunc_len; + + if (new_name != name) + g_free (new_name); +} + +/* this thing is overly complicated */ + +static int +cv_find_number_of_chan (chanview *cv, chan *find_ch) +{ + GtkTreeIter iter, inner; + chan *ch; + int i = 0; + + if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (cv->store), &iter)) + { + do + { + gtk_tree_model_get (GTK_TREE_MODEL (cv->store), &iter, COL_CHAN, &ch, -1); + if (ch == find_ch) + return i; + i++; + + if (gtk_tree_model_iter_children (GTK_TREE_MODEL (cv->store), &inner, &iter)) + { + do + { + gtk_tree_model_get (GTK_TREE_MODEL (cv->store), &inner, COL_CHAN, &ch, -1); + if (ch == find_ch) + return i; + i++; + } + while (gtk_tree_model_iter_next (GTK_TREE_MODEL (cv->store), &inner)); + } + } + while (gtk_tree_model_iter_next (GTK_TREE_MODEL (cv->store), &iter)); + } + + return 0; /* WARNING */ +} + +/* this thing is overly complicated too */ + +static chan * +cv_find_chan_by_number (chanview *cv, int num) +{ + GtkTreeIter iter, inner; + chan *ch; + int i = 0; + + if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (cv->store), &iter)) + { + do + { + if (i == num) + { + gtk_tree_model_get (GTK_TREE_MODEL (cv->store), &iter, COL_CHAN, &ch, -1); + return ch; + } + i++; + + if (gtk_tree_model_iter_children (GTK_TREE_MODEL (cv->store), &inner, &iter)) + { + do + { + if (i == num) + { + gtk_tree_model_get (GTK_TREE_MODEL (cv->store), &inner, COL_CHAN, &ch, -1); + return ch; + } + i++; + } + while (gtk_tree_model_iter_next (GTK_TREE_MODEL (cv->store), &inner)); + } + } + while (gtk_tree_model_iter_next (GTK_TREE_MODEL (cv->store), &iter)); + } + + return NULL; +} + +static void +chan_emancipate_children (chan *ch) +{ + char *name; + chan *childch; + GtkTreeIter childiter; + PangoAttrList *attr; + + while (gtk_tree_model_iter_children (GTK_TREE_MODEL (ch->cv->store), &childiter, &ch->iter)) + { + /* remove and re-add all the children, but avoid using "ch" as parent */ + gtk_tree_model_get (GTK_TREE_MODEL (ch->cv->store), &childiter, + COL_NAME, &name, COL_CHAN, &childch, COL_ATTR, &attr, -1); + ch->cv->func_remove (childch); + gtk_tree_store_remove (ch->cv->store, &childiter); + ch->cv->size--; + chanview_add_real (childch->cv, name, childch->family, childch->userdata, childch->allow_closure, childch->tag, childch->icon, childch, ch); + if (attr) + { + childch->cv->func_set_color (childch, attr); + pango_attr_list_unref (attr); + } + g_free (name); + } +} + +gboolean +chan_remove (chan *ch, gboolean force) +{ + chan *new_ch; + int i, num; + extern int hexchat_is_quitting; + + if (hexchat_is_quitting) /* avoid lots of looping on exit */ + return TRUE; + + /* is this ch allowed to be closed while still having children? */ + if (!force && + gtk_tree_model_iter_has_child (GTK_TREE_MODEL (ch->cv->store), &ch->iter) && + !ch->allow_closure) + return FALSE; + + chan_emancipate_children (ch); + ch->cv->func_remove (ch); + + /* is it the focused one? */ + if (ch->cv->focused == ch) + { + ch->cv->focused = NULL; + + /* try to move the focus to some other valid channel */ + num = cv_find_number_of_chan (ch->cv, ch); + /* move to the one left of the closing tab */ + new_ch = cv_find_chan_by_number (ch->cv, num - 1); + if (new_ch && new_ch != ch) + { + chan_focus (new_ch); /* this'll will set ch->cv->focused for us too */ + } else + { + /* if it fails, try focus from tab 0 and up */ + for (i = 0; i < ch->cv->size; i++) + { + new_ch = cv_find_chan_by_number (ch->cv, i); + if (new_ch && new_ch != ch) + { + chan_focus (new_ch); /* this'll will set ch->cv->focused for us too */ + break; + } + } + } + } + + ch->cv->size--; + gtk_tree_store_remove (ch->cv->store, &ch->iter); + g_free (ch); + return TRUE; +} + +gboolean +chan_is_collapsed (chan *ch) +{ + return ch->cv->func_is_collapsed (ch); +} + +chan * +chan_get_parent (chan *ch) +{ + return ch->cv->func_get_parent (ch); +} diff --git a/hexchat/src/fe-gtk/chanview.h b/hexchat/src/fe-gtk/chanview.h new file mode 100644 index 0000000..a1495b1 --- /dev/null +++ b/hexchat/src/fe-gtk/chanview.h @@ -0,0 +1,55 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_CHANVIEW_H +#define HEXCHAT_CHANVIEW_H + +typedef struct _chanview chanview; +typedef struct _chan chan; + +chanview *chanview_new (int type, int trunc_len, gboolean sort, gboolean use_icons, GtkStyle *style); +void chanview_set_callbacks (chanview *cv, + void (*cb_focus) (chanview *, chan *, int tag, void *userdata), + void (*cb_xbutton) (chanview *, chan *, int tag, void *userdata), + gboolean (*cb_contextmenu) (chanview *, chan *, int tag, void *userdata, GdkEventButton *), + int (*cb_compare) (void *a, void *b)); +void chanview_set_impl (chanview *cv, int type); +chan *chanview_add (chanview *cv, char *name, void *family, void *userdata, gboolean allow_closure, int tag, GdkPixbuf *icon); +int chanview_get_size (chanview *cv); +GtkWidget *chanview_get_box (chanview *cv); +void chanview_move_focus (chanview *cv, gboolean relative, int num); +GtkOrientation chanview_get_orientation (chanview *cv); +void chanview_set_orientation (chanview *cv, gboolean vertical); + +int chan_get_tag (chan *ch); +void *chan_get_userdata (chan *ch); +void chan_focus (chan *ch); +void chan_move (chan *ch, int delta); +void chan_move_family (chan *ch, int delta); +void chan_set_color (chan *ch, PangoAttrList *list); +void chan_rename (chan *ch, char *new_name, int trunc_len); +gboolean chan_remove (chan *ch, gboolean force); +gboolean chan_is_collapsed (chan *ch); +chan * chan_get_parent (chan *ch); + +#define FOCUS_NEW_ALL 1 +#define FOCUS_NEW_ONLY_ASKED 2 +#define FOCUS_NEW_NONE 0 + +#endif diff --git a/hexchat/src/fe-gtk/custom-list.c b/hexchat/src/fe-gtk/custom-list.c new file mode 100644 index 0000000..f124194 --- /dev/null +++ b/hexchat/src/fe-gtk/custom-list.c @@ -0,0 +1,769 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <string.h> +#include <stdlib.h> +#include "custom-list.h" + +/* indent -i3 -ci3 -ut -ts3 -bli0 -c0 custom-list.c */ + +/* boring declarations of local functions */ + +static void custom_list_init (CustomList * pkg_tree); + +static void custom_list_class_init (CustomListClass * klass); + +static void custom_list_tree_model_init (GtkTreeModelIface * iface); + +static void custom_list_finalize (GObject * object); + +static GtkTreeModelFlags custom_list_get_flags (GtkTreeModel * tree_model); + +static gint custom_list_get_n_columns (GtkTreeModel * tree_model); + +static GType custom_list_get_column_type (GtkTreeModel * tree_model, + gint index); + +static gboolean custom_list_get_iter (GtkTreeModel * tree_model, + GtkTreeIter * iter, GtkTreePath * path); + +static GtkTreePath *custom_list_get_path (GtkTreeModel * tree_model, + GtkTreeIter * iter); + +static void custom_list_get_value (GtkTreeModel * tree_model, + GtkTreeIter * iter, + gint column, GValue * value); + +static gboolean custom_list_iter_next (GtkTreeModel * tree_model, + GtkTreeIter * iter); + +static gboolean custom_list_iter_children (GtkTreeModel * tree_model, + GtkTreeIter * iter, + GtkTreeIter * parent); + +static gboolean custom_list_iter_has_child (GtkTreeModel * tree_model, + GtkTreeIter * iter); + +static gint custom_list_iter_n_children (GtkTreeModel * tree_model, + GtkTreeIter * iter); + +static gboolean custom_list_iter_nth_child (GtkTreeModel * tree_model, + GtkTreeIter * iter, + GtkTreeIter * parent, gint n); + +static gboolean custom_list_iter_parent (GtkTreeModel * tree_model, + GtkTreeIter * iter, + GtkTreeIter * child); + + /* -- GtkTreeSortable interface functions -- */ + +static gboolean custom_list_sortable_get_sort_column_id (GtkTreeSortable * + sortable, + gint * sort_col_id, + GtkSortType * order); + +static void custom_list_sortable_set_sort_column_id (GtkTreeSortable * + sortable, + gint sort_col_id, + GtkSortType order); + +static void custom_list_sortable_set_sort_func (GtkTreeSortable * sortable, + gint sort_col_id, + GtkTreeIterCompareFunc + sort_func, gpointer user_data, + GDestroyNotify + destroy_func); + +static void custom_list_sortable_set_default_sort_func (GtkTreeSortable * + sortable, + GtkTreeIterCompareFunc + sort_func, + gpointer user_data, + GDestroyNotify + destroy_func); + +static gboolean custom_list_sortable_has_default_sort_func (GtkTreeSortable * + sortable); + + + +static GObjectClass *parent_class = NULL; /* GObject stuff - nothing to worry about */ + + +static void +custom_list_sortable_init (GtkTreeSortableIface * iface) +{ + iface->get_sort_column_id = custom_list_sortable_get_sort_column_id; + iface->set_sort_column_id = custom_list_sortable_set_sort_column_id; + iface->set_sort_func = custom_list_sortable_set_sort_func; /* NOT SUPPORTED */ + iface->set_default_sort_func = custom_list_sortable_set_default_sort_func; /* NOT SUPPORTED */ + iface->has_default_sort_func = custom_list_sortable_has_default_sort_func; /* NOT SUPPORTED */ +} + +/***************************************************************************** + * + * custom_list_get_type: here we register our new type and its interfaces + * with the type system. If you want to implement + * additional interfaces like GtkTreeSortable, you + * will need to do it here. + * + *****************************************************************************/ + +GType +custom_list_get_type (void) +{ + static GType custom_list_type = 0; + + if (custom_list_type) + return custom_list_type; + + /* Some boilerplate type registration stuff */ + { + static const GTypeInfo custom_list_info = { + sizeof (CustomListClass), + NULL, /* base_init */ + NULL, /* base_finalize */ + (GClassInitFunc) custom_list_class_init, + NULL, /* class finalize */ + NULL, /* class_data */ + sizeof (CustomList), + 0, /* n_preallocs */ + (GInstanceInitFunc) custom_list_init + }; + + custom_list_type = + g_type_register_static (G_TYPE_OBJECT, "CustomList", + &custom_list_info, (GTypeFlags) 0); + } + + /* Here we register our GtkTreeModel interface with the type system */ + { + static const GInterfaceInfo tree_model_info = { + (GInterfaceInitFunc) custom_list_tree_model_init, + NULL, + NULL + }; + + g_type_add_interface_static (custom_list_type, GTK_TYPE_TREE_MODEL, + &tree_model_info); + } + + /* Add GtkTreeSortable interface */ + { + static const GInterfaceInfo tree_sortable_info = { + (GInterfaceInitFunc) custom_list_sortable_init, + NULL, + NULL + }; + + g_type_add_interface_static (custom_list_type, + GTK_TYPE_TREE_SORTABLE, + &tree_sortable_info); + } + + return custom_list_type; +} + +/***************************************************************************** + * + * custom_list_class_init: more boilerplate GObject/GType stuff. + * Init callback for the type system, + * called once when our new class is created. + * + *****************************************************************************/ + +static void +custom_list_class_init (CustomListClass * klass) +{ + GObjectClass *object_class; + + parent_class = (GObjectClass *) g_type_class_peek_parent (klass); + object_class = (GObjectClass *) klass; + + object_class->finalize = custom_list_finalize; +} + +/***************************************************************************** + * + * custom_list_tree_model_init: init callback for the interface registration + * in custom_list_get_type. Here we override + * the GtkTreeModel interface functions that + * we implement. + * + *****************************************************************************/ + +static void +custom_list_tree_model_init (GtkTreeModelIface * iface) +{ + iface->get_flags = custom_list_get_flags; + iface->get_n_columns = custom_list_get_n_columns; + iface->get_column_type = custom_list_get_column_type; + iface->get_iter = custom_list_get_iter; + iface->get_path = custom_list_get_path; + iface->get_value = custom_list_get_value; + iface->iter_next = custom_list_iter_next; + iface->iter_children = custom_list_iter_children; + iface->iter_has_child = custom_list_iter_has_child; + iface->iter_n_children = custom_list_iter_n_children; + iface->iter_nth_child = custom_list_iter_nth_child; + iface->iter_parent = custom_list_iter_parent; +} + + +/***************************************************************************** + * + * custom_list_init: this is called everytime a new custom list object + * instance is created (we do that in custom_list_new). + * Initialise the list structure's fields here. + * + *****************************************************************************/ + +static void +custom_list_init (CustomList * custom_list) +{ + custom_list->n_columns = CUSTOM_LIST_N_COLUMNS; + + custom_list->column_types[0] = G_TYPE_STRING; /* CUSTOM_LIST_COL_NAME */ + custom_list->column_types[1] = G_TYPE_UINT; /* CUSTOM_LIST_COL_USERS */ + custom_list->column_types[2] = G_TYPE_STRING; /* CUSTOM_LIST_COL_TOPIC */ + + custom_list->num_rows = 0; + custom_list->num_alloc = 0; + custom_list->rows = NULL; + + custom_list->sort_id = SORT_ID_CHANNEL; + custom_list->sort_order = GTK_SORT_ASCENDING; +} + + +/***************************************************************************** + * + * custom_list_finalize: this is called just before a custom list is + * destroyed. Free dynamically allocated memory here. + * + *****************************************************************************/ + +static void +custom_list_finalize (GObject * object) +{ + custom_list_clear (CUSTOM_LIST (object)); + + /* must chain up - finalize parent */ + (*parent_class->finalize) (object); +} + + +/***************************************************************************** + * + * custom_list_get_flags: tells the rest of the world whether our tree model + * has any special characteristics. In our case, + * we have a list model (instead of a tree), and each + * tree iter is valid as long as the row in question + * exists, as it only contains a pointer to our struct. + * + *****************************************************************************/ + +static GtkTreeModelFlags +custom_list_get_flags (GtkTreeModel * tree_model) +{ + return (GTK_TREE_MODEL_LIST_ONLY /*| GTK_TREE_MODEL_ITERS_PERSIST */ ); +} + + +/***************************************************************************** + * + * custom_list_get_n_columns: tells the rest of the world how many data + * columns we export via the tree model interface + * + *****************************************************************************/ + +static gint +custom_list_get_n_columns (GtkTreeModel * tree_model) +{ + return 3;/*CUSTOM_LIST (tree_model)->n_columns;*/ +} + + +/***************************************************************************** + * + * custom_list_get_column_type: tells the rest of the world which type of + * data an exported model column contains + * + *****************************************************************************/ + +static GType +custom_list_get_column_type (GtkTreeModel * tree_model, gint index) +{ + return CUSTOM_LIST (tree_model)->column_types[index]; +} + + +/***************************************************************************** + * + * custom_list_get_iter: converts a tree path (physical position) into a + * tree iter structure (the content of the iter + * fields will only be used internally by our model). + * We simply store a pointer to our chanlistrow + * structure that represents that row in the tree iter. + * + *****************************************************************************/ + +static gboolean +custom_list_get_iter (GtkTreeModel * tree_model, + GtkTreeIter * iter, GtkTreePath * path) +{ + CustomList *custom_list = CUSTOM_LIST (tree_model); + chanlistrow *record; + gint n; + + n = gtk_tree_path_get_indices (path)[0]; + if (n < 0 || (guint) n >= custom_list->num_rows) + return FALSE; + + record = custom_list->rows[n]; + + /* We simply store a pointer to our custom record in the iter */ + iter->user_data = record; + + return TRUE; +} + + +/***************************************************************************** + * + * custom_list_get_path: converts a tree iter into a tree path (ie. the + * physical position of that row in the list). + * + *****************************************************************************/ + +static GtkTreePath * +custom_list_get_path (GtkTreeModel * tree_model, GtkTreeIter * iter) +{ + GtkTreePath *path; + chanlistrow *record; + + record = (chanlistrow *) iter->user_data; + + path = gtk_tree_path_new (); + gtk_tree_path_append_index (path, record->pos); + + return path; +} + + +/***************************************************************************** + * + * custom_list_get_value: Returns a row's exported data columns + * (_get_value is what gtk_tree_model_get uses) + * + *****************************************************************************/ + +static void +custom_list_get_value (GtkTreeModel * tree_model, + GtkTreeIter * iter, gint column, GValue * value) +{ + chanlistrow *record; + CustomList *custom_list = CUSTOM_LIST (tree_model); + + if (custom_list->num_rows == 0) + return; + + g_value_init (value, custom_list->column_types[column]); + + record = (chanlistrow *) iter->user_data; + + switch (column) + { + case CUSTOM_LIST_COL_NAME: + g_value_set_static_string (value, GET_CHAN (record)); + break; + + case CUSTOM_LIST_COL_USERS: + g_value_set_uint (value, record->users); + break; + + case CUSTOM_LIST_COL_TOPIC: + g_value_set_static_string (value, record->topic); + break; + } +} + + +/***************************************************************************** + * + * custom_list_iter_next: Takes an iter structure and sets it to point + * to the next row. + * + *****************************************************************************/ + +static gboolean +custom_list_iter_next (GtkTreeModel * tree_model, GtkTreeIter * iter) +{ + chanlistrow *record, *nextrecord; + CustomList *custom_list = CUSTOM_LIST (tree_model); + + record = (chanlistrow *) iter->user_data; + + /* Is this the last record in the list? */ + if ((record->pos + 1) >= custom_list->num_rows) + return FALSE; + + nextrecord = custom_list->rows[(record->pos + 1)]; + + g_assert (nextrecord != NULL); + g_assert (nextrecord->pos == (record->pos + 1)); + + iter->user_data = nextrecord; + + return TRUE; +} + + +/***************************************************************************** + * + * custom_list_iter_children: Returns TRUE or FALSE depending on whether + * the row specified by 'parent' has any children. + * If it has children, then 'iter' is set to + * point to the first child. Special case: if + * 'parent' is NULL, then the first top-level + * row should be returned if it exists. + * + *****************************************************************************/ + +static gboolean +custom_list_iter_children (GtkTreeModel * tree_model, + GtkTreeIter * iter, GtkTreeIter * parent) +{ + CustomList *custom_list = CUSTOM_LIST (tree_model); + + /* this is a list, nodes have no children */ + if (parent) + return FALSE; + + /* parent == NULL is a special case; we need to return the first top-level row */ + /* No rows => no first row */ + if (custom_list->num_rows == 0) + return FALSE; + + /* Set iter to first item in list */ + iter->user_data = custom_list->rows[0]; + + return TRUE; +} + + +/***************************************************************************** + * + * custom_list_iter_has_child: Returns TRUE or FALSE depending on whether + * the row specified by 'iter' has any children. + * We only have a list and thus no children. + * + *****************************************************************************/ + +static gboolean +custom_list_iter_has_child (GtkTreeModel * tree_model, GtkTreeIter * iter) +{ + return FALSE; +} + + +/***************************************************************************** + * + * custom_list_iter_n_children: Returns the number of children the row + * specified by 'iter' has. This is usually 0, + * as we only have a list and thus do not have + * any children to any rows. A special case is + * when 'iter' is NULL, in which case we need + * to return the number of top-level nodes, + * ie. the number of rows in our list. + * + *****************************************************************************/ + +static gint +custom_list_iter_n_children (GtkTreeModel * tree_model, GtkTreeIter * iter) +{ + CustomList *custom_list = CUSTOM_LIST (tree_model); + + /* special case: if iter == NULL, return number of top-level rows */ + if (!iter) + return custom_list->num_rows; + + return 0; /* otherwise, this is easy again for a list */ +} + + +/***************************************************************************** + * + * custom_list_iter_nth_child: If the row specified by 'parent' has any + * children, set 'iter' to the n-th child and + * return TRUE if it exists, otherwise FALSE. + * A special case is when 'parent' is NULL, in + * which case we need to set 'iter' to the n-th + * row if it exists. + * + *****************************************************************************/ + +static gboolean +custom_list_iter_nth_child (GtkTreeModel * tree_model, + GtkTreeIter * iter, GtkTreeIter * parent, gint n) +{ + CustomList *custom_list = CUSTOM_LIST (tree_model); + + /* a list has only top-level rows */ + if (parent) + return FALSE; + + /* special case: if parent == NULL, set iter to n-th top-level row */ + if (n < 0 || (guint) n >= custom_list->num_rows) + return FALSE; + + iter->user_data = custom_list->rows[n]; + return TRUE; +} + + +/***************************************************************************** + * + * custom_list_iter_parent: Point 'iter' to the parent node of 'child'. As + * we have a list and thus no children and no + * parents of children, we can just return FALSE. + * + *****************************************************************************/ + +static gboolean +custom_list_iter_parent (GtkTreeModel * tree_model, + GtkTreeIter * iter, GtkTreeIter * child) +{ + return FALSE; +} + +static gboolean +custom_list_sortable_get_sort_column_id (GtkTreeSortable * sortable, + gint * sort_col_id, + GtkSortType * order) +{ + CustomList *custom_list = CUSTOM_LIST (sortable); + + if (sort_col_id) + *sort_col_id = custom_list->sort_id; + + if (order) + *order = custom_list->sort_order; + + return TRUE; +} + + +static void +custom_list_sortable_set_sort_column_id (GtkTreeSortable * sortable, + gint sort_col_id, GtkSortType order) +{ + CustomList *custom_list = CUSTOM_LIST (sortable); + + if (custom_list->sort_id == sort_col_id + && custom_list->sort_order == order) + return; + + custom_list->sort_id = sort_col_id; + custom_list->sort_order = order; + + custom_list_resort (custom_list); + + /* emit "sort-column-changed" signal to tell any tree views + * that the sort column has changed (so the little arrow + * in the column header of the sort column is drawn + * in the right column) */ + + gtk_tree_sortable_sort_column_changed (sortable); +} + +static void +custom_list_sortable_set_sort_func (GtkTreeSortable * sortable, + gint sort_col_id, + GtkTreeIterCompareFunc sort_func, + gpointer user_data, + GDestroyNotify destroy_func) +{ +} + +static void +custom_list_sortable_set_default_sort_func (GtkTreeSortable * sortable, + GtkTreeIterCompareFunc sort_func, + gpointer user_data, + GDestroyNotify destroy_func) +{ +} + +static gboolean +custom_list_sortable_has_default_sort_func (GtkTreeSortable * sortable) +{ + return FALSE; +} + +/* fast as possible compare func for sorting. + TODO: If fast enough, use a unicode collation key and strcmp. */ + +#define TOSML(c) (((c) >= 'A' && (c) <= 'Z') ? (c) - 'A' + 'a' : (c)) + +static inline int +fast_ascii_stricmp (const char *s1, const char *s2) +{ + int c1, c2; + + while (*s1 && *s2) + { + c1 = (int) (unsigned char) TOSML (*s1); + c2 = (int) (unsigned char) TOSML (*s2); + if (c1 != c2) + return (c1 - c2); + s1++; + s2++; + } + + return (((int) (unsigned char) *s1) - ((int) (unsigned char) *s2)); +} + +static gint +custom_list_qsort_compare_func (chanlistrow ** a, chanlistrow ** b, + CustomList * custom_list) +{ + if (custom_list->sort_order == GTK_SORT_DESCENDING) + { + chanlistrow **tmp = a; + a = b; + b = tmp; + } + + if (custom_list->sort_id == SORT_ID_USERS) + { + return (*a)->users - (*b)->users; + } + + if (custom_list->sort_id == SORT_ID_TOPIC) + { + return fast_ascii_stricmp ((*a)->topic, (*b)->topic); + } + + return strcmp ((*a)->collation_key, (*b)->collation_key); +} + +/***************************************************************************** + * + * custom_list_new: This is what you use in your own code to create a + * new custom list tree model for you to use. + * + *****************************************************************************/ + +CustomList * +custom_list_new (void) +{ + return (CustomList *) g_object_new (CUSTOM_TYPE_LIST, NULL); +} + +void +custom_list_append (CustomList * custom_list, chanlistrow * newrecord) +{ + GtkTreeIter iter; + GtkTreePath *path; + gulong newsize; + guint pos; + + if (custom_list->num_rows >= custom_list->num_alloc) + { + custom_list->num_alloc += 64; + newsize = custom_list->num_alloc * sizeof (chanlistrow *); + custom_list->rows = g_realloc (custom_list->rows, newsize); + } + + /* TODO: Binary search insert? */ + + pos = custom_list->num_rows; + custom_list->rows[pos] = newrecord; + custom_list->num_rows++; + newrecord->pos = pos; + + /* inform the tree view and other interested objects + * (e.g. tree row references) that we have inserted + * a new row, and where it was inserted */ + + path = gtk_tree_path_new (); + gtk_tree_path_append_index (path, newrecord->pos); +/* custom_list_get_iter(GTK_TREE_MODEL(custom_list), &iter, path);*/ + iter.user_data = newrecord; + gtk_tree_model_row_inserted (GTK_TREE_MODEL (custom_list), path, &iter); + gtk_tree_path_free (path); +} + +void +custom_list_resort (CustomList * custom_list) +{ + GtkTreePath *path; + gint *neworder, i; + + if (custom_list->num_rows < 2) + return; + + /* resort */ + g_qsort_with_data (custom_list->rows, + custom_list->num_rows, + sizeof (chanlistrow *), + (GCompareDataFunc) custom_list_qsort_compare_func, + custom_list); + + /* let other objects know about the new order */ + neworder = g_new (gint, custom_list->num_rows); + + for (i = custom_list->num_rows - 1; i >= 0; i--) + { + /* Note that the API reference might be wrong about + * this, see bug number 124790 on bugs.gnome.org. + * Both will work, but one will give you 'jumpy' + * selections after row reordering. */ + /* neworder[(custom_list->rows[i])->pos] = i; */ + neworder[i] = (custom_list->rows[i])->pos; + (custom_list->rows[i])->pos = i; + } + + path = gtk_tree_path_new (); + gtk_tree_model_rows_reordered (GTK_TREE_MODEL (custom_list), path, NULL, + neworder); + gtk_tree_path_free (path); + g_free (neworder); +} + +void +custom_list_clear (CustomList * custom_list) +{ + int i, max = custom_list->num_rows - 1; + GtkTreePath *path; + + for (i = max; i >= 0; i--) + { + path = gtk_tree_path_new (); + gtk_tree_path_append_index (path, custom_list->rows[i]->pos); + gtk_tree_model_row_deleted (GTK_TREE_MODEL (custom_list), path); + gtk_tree_path_free (path); + } + + custom_list->num_rows = 0; + custom_list->num_alloc = 0; + + g_free (custom_list->rows); + custom_list->rows = NULL; +} diff --git a/hexchat/src/fe-gtk/custom-list.h b/hexchat/src/fe-gtk/custom-list.h new file mode 100644 index 0000000..30a7391 --- /dev/null +++ b/hexchat/src/fe-gtk/custom-list.h @@ -0,0 +1,106 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_CUSTOM_LIST_H +#define HEXCHAT_CUSTOM_LIST_H + +#include <gtk/gtk.h> + +GType custom_list_get_type (void); + +/* Some boilerplate GObject defines. 'klass' is used + * instead of 'class', because 'class' is a C++ keyword */ + +#define CUSTOM_TYPE_LIST (custom_list_get_type ()) +#define CUSTOM_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CUSTOM_TYPE_LIST, CustomList)) +#define CUSTOM_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CUSTOM_TYPE_LIST, CustomListClass)) +#define CUSTOM_IS_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CUSTOM_TYPE_LIST)) +#define CUSTOM_IS_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CUSTOM_TYPE_LIST)) +#define CUSTOM_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CUSTOM_TYPE_LIST, CustomListClass)) + +/* The data columns that we export via the tree model interface */ + +enum +{ + CUSTOM_LIST_COL_NAME, + CUSTOM_LIST_COL_USERS, + CUSTOM_LIST_COL_TOPIC, + CUSTOM_LIST_N_COLUMNS +}; + +enum +{ + SORT_ID_CHANNEL, + SORT_ID_USERS, + SORT_ID_TOPIC +}; + +typedef struct +{ + char *topic; + char *collation_key; + guint32 pos; /* pos within the array */ + guint32 users; + /* channel string lives beyond "users" */ +#define GET_CHAN(row) (((char *)row)+sizeof(chanlistrow)) +} +chanlistrow; + +typedef struct _CustomList CustomList; +typedef struct _CustomListClass CustomListClass; + + + +/* CustomList: this structure contains everything we need for our + * model implementation. You can add extra fields to + * this structure, e.g. hashtables to quickly lookup + * rows or whatever else you might need, but it is + * crucial that 'parent' is the first member of the + * structure. */ +struct _CustomList +{ + GObject parent; + + guint num_rows; /* number of rows that we have used */ + guint num_alloc; /* number of rows allocated */ + chanlistrow **rows; /* a dynamically allocated array of pointers to the + * CustomRecord structure for each row */ + + gint n_columns; + GType column_types[CUSTOM_LIST_N_COLUMNS]; + + gint sort_id; + GtkSortType sort_order; +}; + + +/* CustomListClass: more boilerplate GObject stuff */ + +struct _CustomListClass +{ + GObjectClass parent_class; +}; + + +CustomList *custom_list_new (void); +void custom_list_append (CustomList *, chanlistrow *); +void custom_list_resort (CustomList *); +void custom_list_clear (CustomList *); + +#endif /* HEXCHAT_CUSTOM_LIST_H */ diff --git a/hexchat/src/fe-gtk/dccgui.c b/hexchat/src/fe-gtk/dccgui.c new file mode 100644 index 0000000..728698e --- /dev/null +++ b/hexchat/src/fe-gtk/dccgui.c @@ -0,0 +1,1164 @@ +/* X-Chat + * Copyright (C) 1998-2006 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <time.h> + +#define WANTSOCKET +#define WANTARPA +#include "../common/inet.h" +#include "fe-gtk.h" + +#include "../common/hexchat.h" +#include "../common/hexchatc.h" +#include "../common/fe.h" +#include "../common/util.h" +#include "../common/network.h" +#include "gtkutil.h" +#include "palette.h" +#include "maingui.h" + + +enum /* DCC SEND/RECV */ +{ + COL_TYPE, + COL_STATUS, + COL_FILE, + COL_SIZE, + COL_POS, + COL_PERC, + COL_SPEED, + COL_ETA, + COL_NICK, + COL_DCC, /* struct DCC * */ + COL_COLOR, /* GdkColor */ + N_COLUMNS +}; + +enum /* DCC CHAT */ +{ + CCOL_STATUS, + CCOL_NICK, + CCOL_RECV, + CCOL_SENT, + CCOL_START, + CCOL_DCC, /* struct DCC * */ + CCOL_COLOR, /* GdkColor * */ + CN_COLUMNS +}; + +struct dccwindow +{ + GtkWidget *window; + + GtkWidget *list; + GtkListStore *store; + GtkTreeSelection *sel; + + GtkWidget *abort_button; + GtkWidget *accept_button; + GtkWidget *resume_button; + GtkWidget *open_button; + GtkWidget *clear_button; /* clears aborted and completed requests */ + + GtkWidget *file_label; + GtkWidget *address_label; +}; + +struct my_dcc_send +{ + struct session *sess; + char *nick; + gint64 maxcps; + int passive; +}; + +static struct dccwindow dccfwin = {NULL, }; /* file */ +static struct dccwindow dcccwin = {NULL, }; /* chat */ +static GdkPixbuf *pix_up = NULL; /* down arrow */ +static GdkPixbuf *pix_dn = NULL; /* up arrow */ +static int win_width = 600; +static int win_height = 256; +static short view_mode; /* 1=download 2=upload 3=both */ +#define VIEW_DOWNLOAD 1 +#define VIEW_UPLOAD 2 +#define VIEW_BOTH 3 + + +static void +proper_unit (guint64 size, char *buf, size_t buf_len) +{ + gchar *formatted_str; + GFormatSizeFlags format_flags = G_FORMAT_SIZE_DEFAULT; + +#ifndef __APPLE__ /* OS X uses SI */ +#ifndef WIN32 /* Windows uses IEC size (with SI format) */ + if (prefs.hex_gui_filesize_iec) /* Linux can't decide... */ +#endif + format_flags = G_FORMAT_SIZE_IEC_UNITS; +#endif + + formatted_str = g_format_size_full (size, format_flags); + g_strlcpy (buf, formatted_str, buf_len); + + g_free (formatted_str); +} + +static void +dcc_send_filereq_file (struct my_dcc_send *mdc, char *file) +{ + if (file) + dcc_send (mdc->sess, mdc->nick, file, mdc->maxcps, mdc->passive); + else + { + g_free (mdc->nick); + g_free (mdc); + } +} + +void +fe_dcc_send_filereq (struct session *sess, char *nick, int maxcps, int passive) +{ + char* tbuf = g_strdup_printf (_("Send file to %s"), nick); + + struct my_dcc_send *mdc = g_new (struct my_dcc_send, 1); + mdc->sess = sess; + mdc->nick = g_strdup (nick); + mdc->maxcps = maxcps; + mdc->passive = passive; + + gtkutil_file_req (NULL, tbuf, dcc_send_filereq_file, mdc, prefs.hex_dcc_dir, NULL, FRF_MULTIPLE|FRF_FILTERISINITIAL); + + g_free (tbuf); +} + +static void +dcc_prepare_row_chat (struct DCC *dcc, GtkListStore *store, GtkTreeIter *iter, + gboolean update_only) +{ + static char pos[16], size[16]; + char *date; + + date = ctime (&dcc->starttime); + date[strlen (date) - 1] = 0; /* remove the \n */ + + proper_unit (dcc->pos, pos, sizeof (pos)); + proper_unit (dcc->size, size, sizeof (size)); + + gtk_list_store_set (store, iter, + CCOL_STATUS, _(dccstat[dcc->dccstat].name), + CCOL_NICK, dcc->nick, + CCOL_RECV, pos, + CCOL_SENT, size, + CCOL_START, date, + CCOL_DCC, dcc, + CCOL_COLOR, + dccstat[dcc->dccstat].color == 1 ? + NULL : + colors + dccstat[dcc->dccstat].color, + -1); +} + +static void +dcc_prepare_row_send (struct DCC *dcc, GtkListStore *store, GtkTreeIter *iter, + gboolean update_only) +{ + static char pos[16], size[16], kbs[14], perc[14], eta[14]; + int to_go; + float per; + + if (!pix_up) + pix_up = gtk_widget_render_icon (dccfwin.window, "gtk-go-up", + GTK_ICON_SIZE_MENU, NULL); + + /* percentage ack'ed */ + per = (float) ((dcc->ack * 100.00) / dcc->size); + proper_unit (dcc->size, size, sizeof (size)); + proper_unit (dcc->pos, pos, sizeof (pos)); + g_snprintf (kbs, sizeof (kbs), "%.1f", ((float)dcc->cps) / 1024); + g_snprintf (perc, sizeof (perc), "%.0f%%", per); + if (dcc->cps != 0) + { + to_go = (dcc->size - dcc->ack) / dcc->cps; + g_snprintf (eta, sizeof (eta), "%.2d:%.2d:%.2d", + to_go / 3600, (to_go / 60) % 60, to_go % 60); + } else + strcpy (eta, "--:--:--"); + + if (update_only) + gtk_list_store_set (store, iter, + COL_STATUS, _(dccstat[dcc->dccstat].name), + COL_POS, pos, + COL_PERC, perc, + COL_SPEED, kbs, + COL_ETA, eta, + COL_COLOR, + dccstat[dcc->dccstat].color == 1 ? + NULL : + colors + dccstat[dcc->dccstat].color, + -1); + else + gtk_list_store_set (store, iter, + COL_TYPE, pix_up, + COL_STATUS, _(dccstat[dcc->dccstat].name), + COL_FILE, file_part (dcc->file), + COL_SIZE, size, + COL_POS, pos, + COL_PERC, perc, + COL_SPEED, kbs, + COL_ETA, eta, + COL_NICK, dcc->nick, + COL_DCC, dcc, + COL_COLOR, + dccstat[dcc->dccstat].color == 1 ? + NULL : + colors + dccstat[dcc->dccstat].color, + -1); +} + +static void +dcc_prepare_row_recv (struct DCC *dcc, GtkListStore *store, GtkTreeIter *iter, + gboolean update_only) +{ + static char size[16], pos[16], kbs[16], perc[14], eta[16]; + float per; + int to_go; + + if (!pix_dn) + pix_dn = gtk_widget_render_icon (dccfwin.window, "gtk-go-down", + GTK_ICON_SIZE_MENU, NULL); + + proper_unit (dcc->size, size, sizeof (size)); + if (dcc->dccstat == STAT_QUEUED) + proper_unit (dcc->resumable, pos, sizeof (pos)); + else + proper_unit (dcc->pos, pos, sizeof (pos)); + g_snprintf (kbs, sizeof (kbs), "%.1f", ((float)dcc->cps) / 1024); + /* percentage recv'ed */ + per = (float) ((dcc->pos * 100.00) / dcc->size); + g_snprintf (perc, sizeof (perc), "%.0f%%", per); + if (dcc->cps != 0) + { + to_go = (dcc->size - dcc->pos) / dcc->cps; + g_snprintf (eta, sizeof (eta), "%.2d:%.2d:%.2d", + to_go / 3600, (to_go / 60) % 60, to_go % 60); + } else + strcpy (eta, "--:--:--"); + + if (update_only) + gtk_list_store_set (store, iter, + COL_STATUS, _(dccstat[dcc->dccstat].name), + COL_POS, pos, + COL_PERC, perc, + COL_SPEED, kbs, + COL_ETA, eta, + COL_COLOR, + dccstat[dcc->dccstat].color == 1 ? + NULL : + colors + dccstat[dcc->dccstat].color, + -1); + else + gtk_list_store_set (store, iter, + COL_TYPE, pix_dn, + COL_STATUS, _(dccstat[dcc->dccstat].name), + COL_FILE, file_part (dcc->file), + COL_SIZE, size, + COL_POS, pos, + COL_PERC, perc, + COL_SPEED, kbs, + COL_ETA, eta, + COL_NICK, dcc->nick, + COL_DCC, dcc, + COL_COLOR, + dccstat[dcc->dccstat].color == 1 ? + NULL : + colors + dccstat[dcc->dccstat].color, + -1); +} + +static gboolean +dcc_find_row (struct DCC *find_dcc, GtkTreeModel *model, GtkTreeIter *iter, int col) +{ + struct DCC *dcc; + + if (gtk_tree_model_get_iter_first (model, iter)) + { + do + { + gtk_tree_model_get (model, iter, col, &dcc, -1); + if (dcc == find_dcc) + return TRUE; + } + while (gtk_tree_model_iter_next (model, iter)); + } + + return FALSE; +} + +static void +dcc_update_recv (struct DCC *dcc) +{ + GtkTreeIter iter; + + if (!dccfwin.window) + return; + + if (!dcc_find_row (dcc, GTK_TREE_MODEL (dccfwin.store), &iter, COL_DCC)) + return; + + dcc_prepare_row_recv (dcc, dccfwin.store, &iter, TRUE); +} + +static void +dcc_update_chat (struct DCC *dcc) +{ + GtkTreeIter iter; + + if (!dcccwin.window) + return; + + if (!dcc_find_row (dcc, GTK_TREE_MODEL (dcccwin.store), &iter, CCOL_DCC)) + return; + + dcc_prepare_row_chat (dcc, dcccwin.store, &iter, TRUE); +} + +static void +dcc_update_send (struct DCC *dcc) +{ + GtkTreeIter iter; + + if (!dccfwin.window) + return; + + if (!dcc_find_row (dcc, GTK_TREE_MODEL (dccfwin.store), &iter, COL_DCC)) + return; + + dcc_prepare_row_send (dcc, dccfwin.store, &iter, TRUE); +} + +static void +close_dcc_file_window (GtkWindow *win, gpointer data) +{ + dccfwin.window = NULL; +} + +static void +dcc_append (struct DCC *dcc, GtkListStore *store, gboolean prepend) +{ + GtkTreeIter iter; + + if (prepend) + gtk_list_store_prepend (store, &iter); + else + gtk_list_store_append (store, &iter); + + if (dcc->type == TYPE_RECV) + dcc_prepare_row_recv (dcc, store, &iter, FALSE); + else + dcc_prepare_row_send (dcc, store, &iter, FALSE); +} + +/* Returns aborted and completed transfers. */ +static GSList * +dcc_get_completed (void) +{ + struct DCC *dcc; + GtkTreeIter iter; + GtkTreeModel *model; + GSList *completed = NULL; + + model = GTK_TREE_MODEL (dccfwin.store); + if (gtk_tree_model_get_iter_first (model, &iter)) + { + do + { + gtk_tree_model_get (model, &iter, COL_DCC, &dcc, -1); + if (is_dcc_completed (dcc)) + completed = g_slist_prepend (completed, dcc); + + } while (gtk_tree_model_iter_next (model, &iter)); + } + + return completed; +} + +static gboolean +dcc_completed_transfer_exists (void) +{ + gboolean exist; + GSList *comp_list; + + comp_list = dcc_get_completed (); + exist = comp_list != NULL; + + g_slist_free (comp_list); + return exist; +} + +static void +update_clear_button_sensitivity (void) +{ + gboolean sensitive = dcc_completed_transfer_exists (); + gtk_widget_set_sensitive (dccfwin.clear_button, sensitive); +} + +static void +dcc_fill_window (int flags) +{ + struct DCC *dcc; + GSList *list; + GtkTreeIter iter; + int i = 0; + + gtk_list_store_clear (GTK_LIST_STORE (dccfwin.store)); + + if (flags & VIEW_UPLOAD) + { + list = dcc_list; + while (list) + { + dcc = list->data; + if (dcc->type == TYPE_SEND) + { + dcc_append (dcc, dccfwin.store, FALSE); + i++; + } + list = list->next; + } + } + + if (flags & VIEW_DOWNLOAD) + { + list = dcc_list; + while (list) + { + dcc = list->data; + if (dcc->type == TYPE_RECV) + { + dcc_append (dcc, dccfwin.store, FALSE); + i++; + } + list = list->next; + } + } + + /* if only one entry, select it (so Accept button can work) */ + if (i == 1) + { + gtk_tree_model_get_iter_first (GTK_TREE_MODEL (dccfwin.store), &iter); + gtk_tree_selection_select_iter (dccfwin.sel, &iter); + } + + update_clear_button_sensitivity (); +} + +/* return list of selected DCCs */ + +static GSList * +treeview_get_selected (GtkTreeModel *model, GtkTreeSelection *sel, int column) +{ + GtkTreeIter iter; + GSList *list = NULL; + void *ptr; + + if (gtk_tree_model_get_iter_first (model, &iter)) + { + do + { + if (gtk_tree_selection_iter_is_selected (sel, &iter)) + { + gtk_tree_model_get (model, &iter, column, &ptr, -1); + list = g_slist_prepend (list, ptr); + } + } + while (gtk_tree_model_iter_next (model, &iter)); + } + + return g_slist_reverse (list); +} + +static GSList * +dcc_get_selected (void) +{ + return treeview_get_selected (GTK_TREE_MODEL (dccfwin.store), + dccfwin.sel, COL_DCC); +} + +static void +resume_clicked (GtkWidget * wid, gpointer none) +{ + struct DCC *dcc; + char buf[512]; + GSList *list; + + list = dcc_get_selected (); + if (!list) + return; + dcc = list->data; + g_slist_free (list); + + if (dcc->type == TYPE_RECV && !dcc_resume (dcc)) + { + switch (dcc->resume_error) + { + case 0: /* unknown error */ + fe_message (_("That file is not resumable."), FE_MSG_ERROR); + break; + case 1: + g_snprintf (buf, sizeof (buf), + _( "Cannot access file: %s\n" + "%s.\n" + "Resuming not possible."), dcc->destfile, + errorstring (dcc->resume_errno)); + fe_message (buf, FE_MSG_ERROR); + break; + case 2: + fe_message (_("File in download directory is larger " + "than file offered. Resuming not possible."), FE_MSG_ERROR); + break; + case 3: + fe_message (_("Cannot resume the same file from two people."), FE_MSG_ERROR); + } + } +} + +static void +abort_clicked (GtkWidget * wid, gpointer none) +{ + struct DCC *dcc; + GSList *start, *list; + + start = list = dcc_get_selected (); + for (; list; list = list->next) + { + dcc = list->data; + dcc_abort (dcc->serv->front_session, dcc); + } + g_slist_free (start); + + /* Enable the clear button if it wasn't already enabled */ + update_clear_button_sensitivity (); +} + +static void +accept_clicked (GtkWidget * wid, gpointer none) +{ + struct DCC *dcc; + GSList *start, *list; + + start = list = dcc_get_selected (); + for (; list; list = list->next) + { + dcc = list->data; + if (dcc->type != TYPE_SEND) + dcc_get (dcc); + } + g_slist_free (start); +} + +static void +clear_completed (GtkWidget * wid, gpointer none) +{ + struct DCC *dcc; + GSList *completed; + + /* Make a new list of only the completed items and abort each item. + * A new list is made because calling dcc_abort removes items from the original list, + * making it impossible to iterate over that list directly. + */ + for (completed = dcc_get_completed (); completed; completed = completed->next) + { + dcc = completed->data; + dcc_abort (dcc->serv->front_session, dcc); + } + + /* The data was freed by dcc_close */ + g_slist_free (completed); + update_clear_button_sensitivity (); +} + +static void +browse_folder (char *dir) +{ +#ifdef WIN32 + /* no need for file:// in ShellExecute() */ + fe_open_url (dir); +#else + char buf[512]; + + g_snprintf (buf, sizeof (buf), "file://%s", dir); + fe_open_url (buf); +#endif +} + +static void +browse_dcc_folder (void) +{ + if (prefs.hex_dcc_completed_dir[0]) + browse_folder (prefs.hex_dcc_completed_dir); + else + browse_folder (prefs.hex_dcc_dir); +} + +static void +dcc_details_populate (struct DCC *dcc) +{ + char buf[128]; + + if (!dcc) + { + gtk_label_set_text (GTK_LABEL (dccfwin.file_label), NULL); + gtk_label_set_text (GTK_LABEL (dccfwin.address_label), NULL); + return; + } + + /* full path */ + if (dcc->type == TYPE_RECV) + gtk_label_set_text (GTK_LABEL (dccfwin.file_label), dcc->destfile); + else + gtk_label_set_text (GTK_LABEL (dccfwin.file_label), dcc->file); + + /* address and port */ + g_snprintf (buf, sizeof (buf), "%s : %d", net_ip (dcc->addr), dcc->port); + gtk_label_set_text (GTK_LABEL (dccfwin.address_label), buf); +} + +static void +dcc_row_cb (GtkTreeSelection *sel, gpointer user_data) +{ + struct DCC *dcc; + GSList *list; + + list = dcc_get_selected (); + if (!list) + { + gtk_widget_set_sensitive (dccfwin.accept_button, FALSE); + gtk_widget_set_sensitive (dccfwin.resume_button, FALSE); + gtk_widget_set_sensitive (dccfwin.abort_button, FALSE); + dcc_details_populate (NULL); + return; + } + + gtk_widget_set_sensitive (dccfwin.abort_button, TRUE); + + if (list->next) /* multi selection */ + { + gtk_widget_set_sensitive (dccfwin.accept_button, TRUE); + gtk_widget_set_sensitive (dccfwin.resume_button, TRUE); + dcc_details_populate (list->data); + } + else + { + /* turn OFF/ON appropriate buttons */ + dcc = list->data; + if (dcc->dccstat == STAT_QUEUED && dcc->type == TYPE_RECV) + { + gtk_widget_set_sensitive (dccfwin.accept_button, TRUE); + gtk_widget_set_sensitive (dccfwin.resume_button, TRUE); + } + else + { + gtk_widget_set_sensitive (dccfwin.accept_button, FALSE); + gtk_widget_set_sensitive (dccfwin.resume_button, FALSE); + } + + dcc_details_populate (dcc); + } + + g_slist_free (list); +} + +static void +dcc_dclick_cb (GtkTreeView *view, GtkTreePath *path, + GtkTreeViewColumn *column, gpointer data) +{ + struct DCC *dcc; + GSList *list; + + list = dcc_get_selected (); + if (!list) + return; + dcc = list->data; + g_slist_free (list); + + if (dcc->type == TYPE_RECV) + { + accept_clicked (0, 0); + return; + } + + switch (dcc->dccstat) + { + case STAT_FAILED: + case STAT_ABORTED: + case STAT_DONE: + dcc_abort (dcc->serv->front_session, dcc); + break; + case STAT_QUEUED: + case STAT_ACTIVE: + case STAT_CONNECTING: + break; + } +} + +static void +dcc_add_column (GtkWidget *tree, int textcol, int colorcol, char *title, gboolean right_justified) +{ + GtkCellRenderer *renderer; + + renderer = gtk_cell_renderer_text_new (); + if (right_justified) + g_object_set (G_OBJECT (renderer), "xalign", (float) 1.0, NULL); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree), -1, title, renderer, + "text", textcol, "foreground-gdk", colorcol, + NULL); + gtk_cell_renderer_text_set_fixed_height_from_font (GTK_CELL_RENDERER_TEXT (renderer), 1); +} + +static GtkWidget * +dcc_detail_label (char *text, GtkWidget *box, int num) +{ + GtkWidget *label; + char buf[64]; + + label = gtk_label_new (NULL); + g_snprintf (buf, sizeof (buf), "<b>%s</b>", text); + gtk_label_set_markup (GTK_LABEL (label), buf); + gtk_misc_set_alignment (GTK_MISC (label), 0, 0); + gtk_table_attach (GTK_TABLE (box), label, 0, 1, 0 + num, 1 + num, GTK_FILL, GTK_FILL, 0, 0); + + label = gtk_label_new (NULL); + gtk_label_set_selectable (GTK_LABEL (label), TRUE); + gtk_misc_set_alignment (GTK_MISC (label), 0, 0); + gtk_table_attach (GTK_TABLE (box), label, 1, 2, 0 + num, 1 + num, GTK_FILL, GTK_FILL, 0, 0); + + return label; +} + +static void +dcc_exp_cb (GtkWidget *exp, GtkWidget *box) +{ + if (gtk_widget_get_visible (box)) + { + gtk_widget_hide (box); + } + else + { + gtk_widget_show (box); + } +} + +static void +dcc_toggle (GtkWidget *item, gpointer data) +{ + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (item))) + { + view_mode = GPOINTER_TO_INT (data); + dcc_fill_window (GPOINTER_TO_INT (data)); + } +} + +static gboolean +dcc_configure_cb (GtkWindow *win, GdkEventConfigure *event, gpointer data) +{ + /* remember the window size */ + gtk_window_get_size (win, &win_width, &win_height); + return FALSE; +} + +int +fe_dcc_open_recv_win (int passive) +{ + GtkWidget *radio, *table, *vbox, *bbox, *view, *exp, *detailbox; + GtkListStore *store; + GSList *group; + char buf[128]; + + if (dccfwin.window) + { + if (!passive) + mg_bring_tofront (dccfwin.window); + return TRUE; + } + g_snprintf(buf, sizeof(buf), _("Uploads and Downloads - %s"), _(DISPLAY_NAME)); + dccfwin.window = mg_create_generic_tab ("Transfers", buf, FALSE, TRUE, close_dcc_file_window, + NULL, win_width, win_height, &vbox, 0); + gtkutil_destroy_on_esc (dccfwin.window); + gtk_container_set_border_width (GTK_CONTAINER (dccfwin.window), 3); + gtk_box_set_spacing (GTK_BOX (vbox), 3); + + store = gtk_list_store_new (N_COLUMNS, GDK_TYPE_PIXBUF, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_POINTER, GDK_TYPE_COLOR); + view = gtkutil_treeview_new (vbox, GTK_TREE_MODEL (store), NULL, -1); + gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (view), TRUE); + /* Up/Down Icon column */ + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), -1, NULL, + gtk_cell_renderer_pixbuf_new (), + "pixbuf", COL_TYPE, NULL); + dcc_add_column (view, COL_STATUS, COL_COLOR, _("Status"), FALSE); + dcc_add_column (view, COL_FILE, COL_COLOR, _("File"), FALSE); + dcc_add_column (view, COL_SIZE, COL_COLOR, _("Size"), TRUE); + dcc_add_column (view, COL_POS, COL_COLOR, _("Position"), TRUE); + dcc_add_column (view, COL_PERC, COL_COLOR, "%", TRUE); + dcc_add_column (view, COL_SPEED, COL_COLOR, "KB/s", TRUE); + dcc_add_column (view, COL_ETA, COL_COLOR, _("ETA"), FALSE); + dcc_add_column (view, COL_NICK, COL_COLOR, _("Nick"), FALSE); + + gtk_tree_view_column_set_expand (gtk_tree_view_get_column (GTK_TREE_VIEW (view), COL_FILE), TRUE); + gtk_tree_view_column_set_expand (gtk_tree_view_get_column (GTK_TREE_VIEW (view), COL_NICK), TRUE); + + dccfwin.list = view; + dccfwin.store = store; + dccfwin.sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (view)); + view_mode = VIEW_BOTH; + gtk_tree_selection_set_mode (dccfwin.sel, GTK_SELECTION_MULTIPLE); + + if (!prefs.hex_gui_tab_utils) + g_signal_connect (G_OBJECT (dccfwin.window), "configure_event", + G_CALLBACK (dcc_configure_cb), 0); + g_signal_connect (G_OBJECT (dccfwin.sel), "changed", + G_CALLBACK (dcc_row_cb), NULL); + /* double click */ + g_signal_connect (G_OBJECT (view), "row-activated", + G_CALLBACK (dcc_dclick_cb), NULL); + + table = gtk_table_new (1, 3, FALSE); + gtk_table_set_col_spacings (GTK_TABLE (table), 16); + gtk_box_pack_start (GTK_BOX (vbox), table, 0, 0, 0); + + radio = gtk_radio_button_new_with_mnemonic (NULL, _("Both")); + g_signal_connect (G_OBJECT (radio), "toggled", + G_CALLBACK (dcc_toggle), GINT_TO_POINTER (VIEW_BOTH)); + gtk_table_attach (GTK_TABLE (table), radio, 3, 4, 0, 1, GTK_FILL, GTK_FILL, 0, 0); + group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio)); + + radio = gtk_radio_button_new_with_mnemonic (group, _("Uploads")); + g_signal_connect (G_OBJECT (radio), "toggled", + G_CALLBACK (dcc_toggle), GINT_TO_POINTER (VIEW_UPLOAD)); + gtk_table_attach (GTK_TABLE (table), radio, 1, 2, 0, 1, GTK_FILL, GTK_FILL, 0, 0); + group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio)); + + radio = gtk_radio_button_new_with_mnemonic (group, _("Downloads")); + g_signal_connect (G_OBJECT (radio), "toggled", + G_CALLBACK (dcc_toggle), GINT_TO_POINTER (VIEW_DOWNLOAD)); + gtk_table_attach (GTK_TABLE (table), radio, 2, 3, 0, 1, GTK_FILL, GTK_FILL, 0, 0); + + exp = gtk_expander_new (_("Details")); + gtk_table_attach (GTK_TABLE (table), exp, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0); + + detailbox = gtk_table_new (3, 3, FALSE); + gtk_table_set_col_spacings (GTK_TABLE (detailbox), 6); + gtk_table_set_row_spacings (GTK_TABLE (detailbox), 2); + gtk_container_set_border_width (GTK_CONTAINER (detailbox), 6); + g_signal_connect (G_OBJECT (exp), "activate", + G_CALLBACK (dcc_exp_cb), detailbox); + gtk_table_attach (GTK_TABLE (table), detailbox, 0, 4, 1, 2, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0); + + dccfwin.file_label = dcc_detail_label (_("File:"), detailbox, 0); + dccfwin.address_label = dcc_detail_label (_("Address:"), detailbox, 1); + + bbox = gtk_hbutton_box_new (); + gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_SPREAD); + gtk_box_pack_end (GTK_BOX (vbox), bbox, FALSE, FALSE, 2); + + dccfwin.abort_button = gtkutil_button (bbox, GTK_STOCK_CANCEL, 0, abort_clicked, 0, _("Abort")); + dccfwin.accept_button = gtkutil_button (bbox, GTK_STOCK_APPLY, 0, accept_clicked, 0, _("Accept")); + dccfwin.resume_button = gtkutil_button (bbox, GTK_STOCK_REFRESH, 0, resume_clicked, 0, _("Resume")); + dccfwin.clear_button = gtkutil_button (bbox, GTK_STOCK_CLEAR, 0, clear_completed, 0, _("Clear")); + dccfwin.open_button = gtkutil_button (bbox, 0, 0, browse_dcc_folder, 0, _("Open Folder...")); + gtk_widget_set_sensitive (dccfwin.accept_button, FALSE); + gtk_widget_set_sensitive (dccfwin.resume_button, FALSE); + gtk_widget_set_sensitive (dccfwin.abort_button, FALSE); + + dcc_fill_window (3); + gtk_widget_show_all (dccfwin.window); + gtk_widget_hide (detailbox); + + return FALSE; +} + +int +fe_dcc_open_send_win (int passive) +{ + /* combined send/recv GUI */ + return fe_dcc_open_recv_win (passive); +} + + +/* DCC CHAT GUIs BELOW */ + +static GSList * +dcc_chat_get_selected (void) +{ + return treeview_get_selected (GTK_TREE_MODEL (dcccwin.store), + dcccwin.sel, CCOL_DCC); +} + +static void +accept_chat_clicked (GtkWidget * wid, gpointer none) +{ + struct DCC *dcc; + GSList *start, *list; + + start = list = dcc_chat_get_selected (); + for (; list; list = list->next) + { + dcc = list->data; + dcc_get (dcc); + } + g_slist_free (start); +} + +static void +abort_chat_clicked (GtkWidget * wid, gpointer none) +{ + struct DCC *dcc; + GSList *start, *list; + + start = list = dcc_chat_get_selected (); + for (; list; list = list->next) + { + dcc = list->data; + dcc_abort (dcc->serv->front_session, dcc); + } + g_slist_free (start); +} + +static void +dcc_chat_close_cb (void) +{ + dcccwin.window = NULL; +} + +static void +dcc_chat_append (struct DCC *dcc, GtkListStore *store, gboolean prepend) +{ + GtkTreeIter iter; + + if (prepend) + gtk_list_store_prepend (store, &iter); + else + gtk_list_store_append (store, &iter); + + dcc_prepare_row_chat (dcc, store, &iter, FALSE); +} + +static void +dcc_chat_fill_win (void) +{ + struct DCC *dcc; + GSList *list; + GtkTreeIter iter; + int i = 0; + + gtk_list_store_clear (GTK_LIST_STORE (dcccwin.store)); + + list = dcc_list; + while (list) + { + dcc = list->data; + if (dcc->type == TYPE_CHATSEND || dcc->type == TYPE_CHATRECV) + { + dcc_chat_append (dcc, dcccwin.store, FALSE); + i++; + } + list = list->next; + } + + /* if only one entry, select it (so Accept button can work) */ + if (i == 1) + { + gtk_tree_model_get_iter_first (GTK_TREE_MODEL (dcccwin.store), &iter); + gtk_tree_selection_select_iter (dcccwin.sel, &iter); + } +} + +static void +dcc_chat_row_cb (GtkTreeSelection *sel, gpointer user_data) +{ + struct DCC *dcc; + GSList *list; + + list = dcc_chat_get_selected (); + if (!list) + { + gtk_widget_set_sensitive (dcccwin.accept_button, FALSE); + gtk_widget_set_sensitive (dcccwin.abort_button, FALSE); + return; + } + + gtk_widget_set_sensitive (dcccwin.abort_button, TRUE); + + if (list->next) /* multi selection */ + gtk_widget_set_sensitive (dcccwin.accept_button, TRUE); + else + { + /* turn OFF/ON appropriate buttons */ + dcc = list->data; + if (dcc->dccstat == STAT_QUEUED && dcc->type == TYPE_CHATRECV) + gtk_widget_set_sensitive (dcccwin.accept_button, TRUE); + else + gtk_widget_set_sensitive (dcccwin.accept_button, FALSE); + } + + g_slist_free (list); +} + +static void +dcc_chat_dclick_cb (GtkTreeView *view, GtkTreePath *path, + GtkTreeViewColumn *column, gpointer data) +{ + accept_chat_clicked (0, 0); +} + +int +fe_dcc_open_chat_win (int passive) +{ + GtkWidget *view, *vbox, *bbox; + GtkListStore *store; + char buf[128]; + + if (dcccwin.window) + { + if (!passive) + mg_bring_tofront (dcccwin.window); + return TRUE; + } + + g_snprintf(buf, sizeof(buf), _("DCC Chat List - %s"), _(DISPLAY_NAME)); + dcccwin.window = + mg_create_generic_tab ("DCCChat", buf, FALSE, TRUE, dcc_chat_close_cb, + NULL, 550, 180, &vbox, 0); + gtkutil_destroy_on_esc (dcccwin.window); + gtk_container_set_border_width (GTK_CONTAINER (dcccwin.window), 3); + gtk_box_set_spacing (GTK_BOX (vbox), 3); + + store = gtk_list_store_new (CN_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_POINTER, GDK_TYPE_COLOR); + view = gtkutil_treeview_new (vbox, GTK_TREE_MODEL (store), NULL, -1); + + dcc_add_column (view, CCOL_STATUS, CCOL_COLOR, _("Status"), FALSE); + dcc_add_column (view, CCOL_NICK, CCOL_COLOR, _("Nick"), FALSE); + dcc_add_column (view, CCOL_RECV, CCOL_COLOR, _("Recv"), TRUE); + dcc_add_column (view, CCOL_SENT, CCOL_COLOR, _("Sent"), TRUE); + dcc_add_column (view, CCOL_START, CCOL_COLOR, _("Start Time"), FALSE); + + gtk_tree_view_column_set_expand (gtk_tree_view_get_column (GTK_TREE_VIEW (view), 1), TRUE); + gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (view), TRUE); + + dcccwin.list = view; + dcccwin.store = store; + dcccwin.sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (view)); + gtk_tree_selection_set_mode (dcccwin.sel, GTK_SELECTION_MULTIPLE); + + g_signal_connect (G_OBJECT (dcccwin.sel), "changed", + G_CALLBACK (dcc_chat_row_cb), NULL); + /* double click */ + g_signal_connect (G_OBJECT (view), "row-activated", + G_CALLBACK (dcc_chat_dclick_cb), NULL); + + bbox = gtk_hbutton_box_new (); + gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_SPREAD); + gtk_box_pack_end (GTK_BOX (vbox), bbox, FALSE, FALSE, 2); + + dcccwin.abort_button = gtkutil_button (bbox, GTK_STOCK_CANCEL, 0, abort_chat_clicked, 0, _("Abort")); + dcccwin.accept_button = gtkutil_button (bbox, GTK_STOCK_APPLY, 0, accept_chat_clicked, 0, _("Accept")); + gtk_widget_set_sensitive (dcccwin.accept_button, FALSE); + gtk_widget_set_sensitive (dcccwin.abort_button, FALSE); + + dcc_chat_fill_win (); + gtk_widget_show_all (dcccwin.window); + + return FALSE; +} + +void +fe_dcc_add (struct DCC *dcc) +{ + switch (dcc->type) + { + case TYPE_RECV: + if (dccfwin.window && (view_mode & VIEW_DOWNLOAD)) + dcc_append (dcc, dccfwin.store, TRUE); + break; + + case TYPE_SEND: + if (dccfwin.window && (view_mode & VIEW_UPLOAD)) + dcc_append (dcc, dccfwin.store, TRUE); + break; + + default: /* chat */ + if (dcccwin.window) + dcc_chat_append (dcc, dcccwin.store, TRUE); + } +} + +void +fe_dcc_update (struct DCC *dcc) +{ + switch (dcc->type) + { + case TYPE_SEND: + dcc_update_send (dcc); + break; + + case TYPE_RECV: + dcc_update_recv (dcc); + break; + + default: + dcc_update_chat (dcc); + } + + if (dccfwin.window) + update_clear_button_sensitivity(); +} + +void +fe_dcc_remove (struct DCC *dcc) +{ + GtkTreeIter iter; + + switch (dcc->type) + { + case TYPE_SEND: + case TYPE_RECV: + if (dccfwin.window) + { + if (dcc_find_row (dcc, GTK_TREE_MODEL (dccfwin.store), &iter, COL_DCC)) + gtk_list_store_remove (dccfwin.store, &iter); + } + break; + + default: /* chat */ + if (dcccwin.window) + { + if (dcc_find_row (dcc, GTK_TREE_MODEL (dcccwin.store), &iter, CCOL_DCC)) + gtk_list_store_remove (dcccwin.store, &iter); + } + break; + } +} diff --git a/hexchat/src/fe-gtk/editlist.c b/hexchat/src/fe-gtk/editlist.c new file mode 100644 index 0000000..4b236dc --- /dev/null +++ b/hexchat/src/fe-gtk/editlist.c @@ -0,0 +1,370 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <fcntl.h> +#include <sys/types.h> +#include <sys/stat.h> + +#include <gdk/gdkkeysyms.h> + +#ifdef WIN32 +#include <io.h> +#else +#include <unistd.h> +#endif + +#include "fe-gtk.h" + +#include "../common/hexchat.h" +#include "../common/cfgfiles.h" +#include "../common/hexchatc.h" +#include "../common/fe.h" +#include "menu.h" +#include "gtkutil.h" +#include "maingui.h" +#include "editlist.h" + +enum +{ + NAME_COLUMN, + CMD_COLUMN, + N_COLUMNS +}; + +static GtkWidget *editlist_win = NULL; +static GSList *editlist_list = NULL; + +static GtkTreeModel * +get_store (void) +{ + return gtk_tree_view_get_model (g_object_get_data (G_OBJECT (editlist_win), "view")); +} + +static void +editlist_save (GtkWidget *igad, gchar *file) +{ + GtkTreeModel *store = get_store (); + GtkTreeIter iter; + char buf[512]; + char *name, *cmd; + int fh; + + fh = hexchat_open_file (file, O_TRUNC | O_WRONLY | O_CREAT, 0600, XOF_DOMODE); + if (fh != -1) + { + if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter)) + { + do + { + name = NULL; + cmd = NULL; + gtk_tree_model_get (GTK_TREE_MODEL (store), &iter, NAME_COLUMN, &name, CMD_COLUMN, &cmd, -1); + g_snprintf (buf, sizeof (buf), "NAME %s\nCMD %s\n\n", name, cmd); + write (fh, buf, strlen (buf)); + g_free (name); + g_free (cmd); + } while (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter)); + } + + close (fh); + gtk_widget_destroy (editlist_win); + if (editlist_list == replace_list) + { + list_free (&replace_list); + list_loadconf (file, &replace_list, 0); + } else if (editlist_list == popup_list) + { + list_free (&popup_list); + list_loadconf (file, &popup_list, 0); + } else if (editlist_list == button_list) + { + GSList *list = sess_list; + struct session *sess; + list_free (&button_list); + list_loadconf (file, &button_list, 0); + while (list) + { + sess = (struct session *) list->data; + fe_buttons_update (sess); + list = list->next; + } + } else if (editlist_list == dlgbutton_list) + { + GSList *list = sess_list; + struct session *sess; + list_free (&dlgbutton_list); + list_loadconf (file, &dlgbutton_list, 0); + while (list) + { + sess = (struct session *) list->data; + fe_dlgbuttons_update (sess); + list = list->next; + } + } else if (editlist_list == ctcp_list) + { + list_free (&ctcp_list); + list_loadconf (file, &ctcp_list, 0); + } else if (editlist_list == command_list) + { + list_free (&command_list); + list_loadconf (file, &command_list, 0); + } else if (editlist_list == usermenu_list) + { + list_free (&usermenu_list); + list_loadconf (file, &usermenu_list, 0); + usermenu_update (); + } else + { + list_free (&urlhandler_list); + list_loadconf (file, &urlhandler_list, 0); + } + } +} + +static void +editlist_load (GtkListStore *store, GSList *list) +{ + struct popup *pop; + gchar *name, *cmd; + GtkTreeIter iter; + + while (list) + { + pop = (struct popup *) list->data; + name = pop->name; + cmd = pop->cmd; + + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, + NAME_COLUMN, name, + CMD_COLUMN, cmd, -1); + + list = list->next; + } +} + +static void +editlist_delete (GtkWidget *wid, gpointer userdata) +{ + GtkTreeView *view = g_object_get_data (G_OBJECT (editlist_win), "view"); + GtkListStore *store = GTK_LIST_STORE (gtk_tree_view_get_model (view)); + GtkTreeIter iter; + GtkTreePath *path; + + if (gtkutil_treeview_get_selected (view, &iter, -1)) + { + /* delete this row, select next one */ + if (gtk_list_store_remove (store, &iter)) + { + path = gtk_tree_model_get_path (GTK_TREE_MODEL (store), &iter); + gtk_tree_view_scroll_to_cell (view, path, NULL, TRUE, 1.0, 0.0); + gtk_tree_view_set_cursor (view, path, NULL, FALSE); + gtk_tree_path_free (path); + } + } +} + +static void +editlist_add (GtkWidget *wid, gpointer userdata) +{ + GtkTreeView *view = g_object_get_data (G_OBJECT (editlist_win), "view"); + GtkTreeViewColumn *col; + GtkListStore *store = GTK_LIST_STORE (get_store ()); + GtkTreeIter iter; + GtkTreePath *path; + + gtk_list_store_append (store, &iter); + + /* make sure the new row is visible and selected */ + path = gtk_tree_model_get_path (GTK_TREE_MODEL (store), &iter); + col = gtk_tree_view_get_column (view, NAME_COLUMN); + gtk_tree_view_scroll_to_cell (view, path, NULL, FALSE, 0.0, 0.0); + gtk_tree_view_set_cursor (view, path, col, TRUE); + gtk_tree_path_free (path); +} + +static void +editlist_close (GtkWidget *wid, gpointer userdata) +{ + gtk_widget_destroy (editlist_win); + editlist_win = NULL; +} + +static void +editlist_edited (GtkCellRendererText *render, gchar *pathstr, gchar *new_text, gpointer data) +{ + GtkTreeModel *model = get_store (); + GtkTreePath *path = gtk_tree_path_new_from_string (pathstr); + GtkTreeIter iter; + gint column = GPOINTER_TO_INT (data); + + gtk_tree_model_get_iter (model, &iter, path); + gtk_list_store_set (GTK_LIST_STORE (model), &iter, column, new_text, -1); + + gtk_tree_path_free (path); +} + +static gboolean +editlist_keypress (GtkWidget *wid, GdkEventKey *evt, gpointer userdata) +{ + GtkTreeView *view = g_object_get_data (G_OBJECT (editlist_win), "view"); + GtkTreeModel *store; + GtkTreeIter iter1, iter2; + GtkTreeSelection *sel; + GtkTreePath *path; + gboolean handled = FALSE; + int delta; + + if (evt->state & GDK_SHIFT_MASK) + { + if (evt->keyval == GDK_KEY_Up) + { + handled = TRUE; + delta = -1; + } + else if (evt->keyval == GDK_KEY_Down) + { + handled = TRUE; + delta = 1; + } + } + + if (handled) + { + sel = gtk_tree_view_get_selection (view); + gtk_tree_selection_get_selected (sel, &store, &iter1); + path = gtk_tree_model_get_path (store, &iter1); + if (delta == 1) + gtk_tree_path_next (path); + else + gtk_tree_path_prev (path); + gtk_tree_model_get_iter (store, &iter2, path); + gtk_tree_path_free (path); + gtk_list_store_swap (GTK_LIST_STORE (store), &iter1, &iter2); + } + + return handled; +} + +static GtkWidget * +editlist_treeview_new (GtkWidget *box, char *title1, char *title2) +{ + GtkWidget *scroll; + GtkListStore *store; + GtkTreeViewColumn *col; + GtkWidget *view; + GtkCellRenderer *render; + + scroll = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scroll), GTK_SHADOW_IN); + + store = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING); + g_return_val_if_fail (store != NULL, NULL); + + view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store)); + gtk_tree_view_set_fixed_height_mode (GTK_TREE_VIEW (view), TRUE); + gtk_tree_view_set_enable_search (GTK_TREE_VIEW (view), FALSE); + gtk_tree_view_set_reorderable (GTK_TREE_VIEW (view), TRUE); + + g_signal_connect (G_OBJECT (view), "key_press_event", + G_CALLBACK (editlist_keypress), NULL); + + gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (view), TRUE); + + render = gtk_cell_renderer_text_new (); + g_object_set (render, "editable", TRUE, NULL); + g_signal_connect (G_OBJECT (render), "edited", + G_CALLBACK (editlist_edited), GINT_TO_POINTER(NAME_COLUMN)); + gtk_tree_view_insert_column_with_attributes ( + GTK_TREE_VIEW (view), NAME_COLUMN, + title1, render, + "text", NAME_COLUMN, + NULL); + + render = gtk_cell_renderer_text_new (); + g_object_set (render, "editable", TRUE, NULL); + g_signal_connect (G_OBJECT (render), "edited", + G_CALLBACK (editlist_edited), GINT_TO_POINTER(CMD_COLUMN)); + gtk_tree_view_insert_column_with_attributes ( + GTK_TREE_VIEW (view), CMD_COLUMN, + title2, render, + "text", CMD_COLUMN, + NULL); + + col = gtk_tree_view_get_column (GTK_TREE_VIEW (view), NAME_COLUMN); + gtk_tree_view_column_set_sizing (col, GTK_TREE_VIEW_COLUMN_AUTOSIZE); + gtk_tree_view_column_set_resizable (col, TRUE); + gtk_tree_view_column_set_min_width (col, 100); + + gtk_container_add (GTK_CONTAINER (scroll), view); + gtk_container_add (GTK_CONTAINER (box), scroll); + gtk_widget_show_all (box); + + return view; +} + + +void +editlist_gui_open (char *title1, char *title2, GSList *list, char *title, char *wmclass, + char *file, char *help) +{ + GtkWidget *vbox, *box; + GtkWidget *view; + GtkListStore *store; + + if (editlist_win) + { + mg_bring_tofront (editlist_win); + return; + } + + editlist_win = mg_create_generic_tab (wmclass, title, TRUE, FALSE, + editlist_close, NULL, 450, 250, &vbox, 0); + + editlist_list = list; + + view = editlist_treeview_new (vbox, title1, title2); + g_object_set_data (G_OBJECT (editlist_win), "view", view); + + if (help) + gtk_widget_set_tooltip_text (view, help); + + box = gtk_hbutton_box_new (); + gtk_button_box_set_layout (GTK_BUTTON_BOX (box), GTK_BUTTONBOX_SPREAD); + gtk_box_pack_start (GTK_BOX (vbox), box, FALSE, FALSE, 2); + gtk_container_set_border_width (GTK_CONTAINER (box), 5); + gtk_widget_show (box); + + gtkutil_button (box, GTK_STOCK_NEW, 0, editlist_add, + NULL, _("Add")); + gtkutil_button (box, GTK_STOCK_DELETE, 0, editlist_delete, + NULL, _("Delete")); + gtkutil_button (box, GTK_STOCK_CANCEL, 0, editlist_close, + NULL, _("Cancel")); + gtkutil_button (box, GTK_STOCK_SAVE, 0, editlist_save, + file, _("Save")); + + store = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (view))); + editlist_load (store, list); + + gtk_widget_show (editlist_win); +} diff --git a/hexchat/src/fe-gtk/editlist.h b/hexchat/src/fe-gtk/editlist.h new file mode 100644 index 0000000..5487684 --- /dev/null +++ b/hexchat/src/fe-gtk/editlist.h @@ -0,0 +1,25 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_EDITLIST_H +#define HEXCHAT_EDITLIST_H + +void editlist_gui_open (char *title1, char *title2, GSList * list, char *title, char *wmclass, char *file, char *help); + +#endif diff --git a/hexchat/src/fe-gtk/fe-gtk.c b/hexchat/src/fe-gtk/fe-gtk.c new file mode 100644 index 0000000..125ab57 --- /dev/null +++ b/hexchat/src/fe-gtk/fe-gtk.c @@ -0,0 +1,1242 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> + +#include "fe-gtk.h" + +#ifdef WIN32 +#include <gdk/gdkwin32.h> +#include <windows.h> +#else +#include <unistd.h> +#endif + +#include "../common/hexchat.h" +#include "../common/fe.h" +#include "../common/util.h" +#include "../common/text.h" +#include "../common/cfgfiles.h" +#include "../common/hexchatc.h" +#include "../common/plugin.h" +#include "../common/server.h" +#include "../common/url.h" +#include "gtkutil.h" +#include "maingui.h" +#include "pixmaps.h" +#include "chanlist.h" +#include "joind.h" +#include "xtext.h" +#include "palette.h" +#include "menu.h" +#include "notifygui.h" +#include "textgui.h" +#include "fkeys.h" +#include "plugin-tray.h" +#include "urlgrab.h" +#include "setup.h" +#include "plugin-notification.h" + +#ifdef USE_LIBCANBERRA +#include <canberra.h> +#endif + +GdkPixmap *channelwin_pix; + +#ifdef USE_LIBCANBERRA +static ca_context *ca_con; +#endif + +#ifdef HAVE_GTK_MAC +GtkosxApplication *osx_app; +#endif + +/* === command-line parameter parsing : requires glib 2.6 === */ + +static char *arg_cfgdir = NULL; +static gint arg_show_autoload = 0; +static gint arg_show_config = 0; +static gint arg_show_version = 0; +static gint arg_minimize = 0; + +static const GOptionEntry gopt_entries[] = +{ + {"no-auto", 'a', 0, G_OPTION_ARG_NONE, &arg_dont_autoconnect, N_("Don't auto connect to servers"), NULL}, + {"cfgdir", 'd', 0, G_OPTION_ARG_STRING, &arg_cfgdir, N_("Use a different config directory"), "PATH"}, + {"no-plugins", 'n', 0, G_OPTION_ARG_NONE, &arg_skip_plugins, N_("Don't auto load any plugins"), NULL}, + {"plugindir", 'p', 0, G_OPTION_ARG_NONE, &arg_show_autoload, N_("Show plugin/script auto-load directory"), NULL}, + {"configdir", 'u', 0, G_OPTION_ARG_NONE, &arg_show_config, N_("Show user config directory"), NULL}, + {"url", 0, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_STRING, &arg_url, N_("Open an irc://server:port/channel?key URL"), "URL"}, + {"command", 'c', 0, G_OPTION_ARG_STRING, &arg_command, N_("Execute command:"), "COMMAND"}, +#ifdef USE_DBUS + {"existing", 'e', 0, G_OPTION_ARG_NONE, &arg_existing, N_("Open URL or execute command in an existing HexChat"), NULL}, +#endif + {"minimize", 0, 0, G_OPTION_ARG_INT, &arg_minimize, N_("Begin minimized. Level 0=Normal 1=Iconified 2=Tray"), N_("level")}, + {"version", 'v', 0, G_OPTION_ARG_NONE, &arg_show_version, N_("Show version information"), NULL}, + {G_OPTION_REMAINING, '\0', 0, G_OPTION_ARG_STRING_ARRAY, &arg_urls, N_("Open an irc://server:port/channel?key URL"), "URL"}, + {NULL} +}; + +#ifdef WIN32 +static void +create_msg_dialog (gchar *title, gchar *message) +{ + GtkWidget *dialog; + + dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE, "%s", message); + gtk_window_set_title (GTK_WINDOW (dialog), title); + +/* On Win32 we automatically have the icon. If we try to load it explicitly, it will look ugly for some reason. */ +#ifndef WIN32 + pixmaps_init (); + gtk_window_set_icon (GTK_WINDOW (dialog), pix_hexchat); +#endif + + gtk_dialog_run (GTK_DIALOG (dialog)); + gtk_widget_destroy (dialog); +} +#endif + +int +fe_args (int argc, char *argv[]) +{ + GError *error = NULL; + GOptionContext *context; + char *buffer; + +#ifdef ENABLE_NLS + bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); + bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); + textdomain (GETTEXT_PACKAGE); +#endif + + context = g_option_context_new (NULL); +#ifdef WIN32 + g_option_context_set_help_enabled (context, FALSE); /* disable stdout help as stdout is unavailable for subsystem:windows */ +#endif + g_option_context_add_main_entries (context, gopt_entries, GETTEXT_PACKAGE); + g_option_context_add_group (context, gtk_get_option_group (FALSE)); + g_option_context_parse (context, &argc, &argv, &error); + +#ifdef WIN32 + if (error) /* workaround for argv not being available when using subsystem:windows */ + { + if (error->message) /* the error message contains argv so search for patterns in that */ + { + if (strstr (error->message, "--help-all") != NULL) + { + buffer = g_option_context_get_help (context, FALSE, NULL); + gtk_init (&argc, &argv); + create_msg_dialog ("Long Help", buffer); + g_free (buffer); + return 0; + } + else if (strstr (error->message, "--help") != NULL || strstr (error->message, "-?") != NULL) + { + buffer = g_option_context_get_help (context, TRUE, NULL); + gtk_init (&argc, &argv); + create_msg_dialog ("Help", buffer); + g_free (buffer); + return 0; + } + else + { + buffer = g_strdup_printf ("%s\n", error->message); + gtk_init (&argc, &argv); + create_msg_dialog ("Error", buffer); + g_free (buffer); + return 1; + } + } + } +#else + if (error) + { + if (error->message) + printf ("%s\n", error->message); + return 1; + } +#endif + + g_option_context_free (context); + + if (arg_show_version) + { + buffer = g_strdup_printf ("%s %s", PACKAGE_NAME, PACKAGE_VERSION); +#ifdef WIN32 + gtk_init (&argc, &argv); + create_msg_dialog ("Version Information", buffer); +#else + puts (buffer); +#endif + g_free (buffer); + + return 0; + } + + if (arg_show_autoload) + { + buffer = g_strdup_printf ("%s%caddons%c", get_xdir(), G_DIR_SEPARATOR, G_DIR_SEPARATOR); +#ifdef WIN32 + gtk_init (&argc, &argv); + create_msg_dialog ("Plugin/Script Auto-load Directory", buffer); +#else + puts (buffer); +#endif + g_free (buffer); + + return 0; + } + + if (arg_show_config) + { + buffer = g_strdup_printf ("%s%c", get_xdir(), G_DIR_SEPARATOR); +#ifdef WIN32 + gtk_init (&argc, &argv); + create_msg_dialog ("User Config Directory", buffer); +#else + puts (buffer); +#endif + g_free (buffer); + + return 0; + } + +#ifdef WIN32 + /* this is mainly for irc:// URL handling. When windows calls us from */ + /* I.E, it doesn't give an option of "Start in" directory, like short */ + /* cuts can. So we have to set the current dir manually, to the path */ + /* of the exe. */ + { + char *tmp = g_strdup (argv[0]); + char *sl; + + sl = strrchr (tmp, G_DIR_SEPARATOR); + if (sl) + { + *sl = 0; + chdir (tmp); + } + g_free (tmp); + } +#endif + + gtk_init (&argc, &argv); + +#ifdef HAVE_GTK_MAC + osx_app = g_object_new(GTKOSX_TYPE_APPLICATION, NULL); +#endif + + return -1; +} + +const char cursor_color_rc[] = + "style \"xc-ib-st\"" + "{" + "GtkEntry::cursor-color=\"#%02x%02x%02x\"" + "}" + "widget \"*.hexchat-inputbox\" style : application \"xc-ib-st\""; + +static const char adwaita_workaround_rc[] = + "style \"hexchat-input-workaround\"" + "{" + "engine \"pixmap\" {" + "image {" + "function = FLAT_BOX\n" + "state = NORMAL\n" + "}" + "image {" + "function = FLAT_BOX\n" + "state = ACTIVE\n" + "}" + "}" + "}" + "widget \"*.hexchat-inputbox\" style \"hexchat-input-workaround\""; + +GtkStyle * +create_input_style (GtkStyle *style) +{ + char buf[256]; + static int done_rc = FALSE; + + pango_font_description_free (style->font_desc); + style->font_desc = pango_font_description_from_string (prefs.hex_text_font); + + /* fall back */ + if (pango_font_description_get_size (style->font_desc) == 0) + { + g_snprintf (buf, sizeof (buf), _("Failed to open font:\n\n%s"), prefs.hex_text_font); + fe_message (buf, FE_MSG_ERROR); + pango_font_description_free (style->font_desc); + style->font_desc = pango_font_description_from_string ("sans 11"); + } + + if (prefs.hex_gui_input_style && !done_rc) + { + GtkSettings *settings = gtk_settings_get_default (); + char *theme_name; + + /* gnome-themes-standard 3.20+ relies on images to do theming + * so we have to override that. */ + g_object_get (settings, "gtk-theme-name", &theme_name, NULL); + if (g_str_has_prefix (theme_name, "Adwaita") || g_str_has_prefix (theme_name, "Yaru")) + gtk_rc_parse_string (adwaita_workaround_rc); + g_free (theme_name); + + done_rc = TRUE; + sprintf (buf, cursor_color_rc, (colors[COL_FG].red >> 8), + (colors[COL_FG].green >> 8), (colors[COL_FG].blue >> 8)); + gtk_rc_parse_string (buf); + } + + style->bg[GTK_STATE_NORMAL] = colors[COL_FG]; + style->base[GTK_STATE_NORMAL] = colors[COL_BG]; + style->text[GTK_STATE_NORMAL] = colors[COL_FG]; + + return style; +} + +void +fe_init (void) +{ + palette_load (); + key_init (); + pixmaps_init (); + +#ifdef HAVE_GTK_MAC + gtkosx_application_set_dock_icon_pixbuf (osx_app, pix_hexchat); +#endif + channelwin_pix = pixmap_load_from_file (prefs.hex_text_background); + input_style = create_input_style (gtk_style_new ()); +} + +#ifdef HAVE_GTK_MAC +static void +gtkosx_application_terminate (GtkosxApplication *app, gpointer userdata) +{ + hexchat_exit(); +} +#endif + +void +fe_main (void) +{ +#ifdef HAVE_GTK_MAC + gtkosx_application_ready(osx_app); + g_signal_connect (G_OBJECT(osx_app), "NSApplicationWillTerminate", + G_CALLBACK(gtkosx_application_terminate), NULL); +#endif + + gtk_main (); + + /* sleep for 2 seconds so any QUIT messages are not lost. The */ + /* GUI is closed at this point, so the user doesn't even know! */ + if (prefs.wait_on_exit) + sleep (2); +} + +void +fe_cleanup (void) +{ + /* it's saved when pressing OK in setup.c */ + /*palette_save ();*/ +} + +void +fe_exit (void) +{ + gtk_main_quit (); +} + +int +fe_timeout_add (int interval, void *callback, void *userdata) +{ + return g_timeout_add (interval, (GSourceFunc) callback, userdata); +} + +int +fe_timeout_add_seconds (int interval, void *callback, void *userdata) +{ + return g_timeout_add_seconds (interval, (GSourceFunc) callback, userdata); +} + +void +fe_timeout_remove (int tag) +{ + g_source_remove (tag); +} + +#ifdef WIN32 + +static void +log_handler (const gchar *log_domain, + GLogLevelFlags log_level, + const gchar *message, + gpointer unused_data) +{ + session *sess; + + /* if (getenv ("HEXCHAT_WARNING_IGNORE")) this gets ignored sometimes, so simply just disable all warnings */ + return; + + sess = find_dialog (serv_list->data, "(warnings)"); + if (!sess) + sess = new_ircwindow (serv_list->data, "(warnings)", SESS_DIALOG, 0); + + PrintTextf (sess, "%s\t%s\n", log_domain, message); + if (getenv ("HEXCHAT_WARNING_ABORT")) + abort (); +} + +#endif + +/* install tray stuff */ + +static int +fe_idle (gpointer data) +{ + session *sess = sess_list->data; + + plugin_add (sess, NULL, NULL, notification_plugin_init, notification_plugin_deinit, NULL, FALSE); + + plugin_add (sess, NULL, NULL, tray_plugin_init, tray_plugin_deinit, NULL, FALSE); + + if (arg_minimize == 1) + gtk_window_iconify (GTK_WINDOW (sess->gui->window)); + else if (arg_minimize == 2) + tray_toggle_visibility (FALSE); + + return 0; +} + +void +fe_new_window (session *sess, int focus) +{ + int tab = FALSE; + + if (sess->type == SESS_DIALOG) + { + if (prefs.hex_gui_tab_dialogs) + tab = TRUE; + } else + { + if (prefs.hex_gui_tab_chans) + tab = TRUE; + } + + mg_changui_new (sess, NULL, tab, focus); + +#ifdef WIN32 + g_log_set_handler ("GLib", G_LOG_LEVEL_CRITICAL|G_LOG_LEVEL_WARNING, (GLogFunc)log_handler, 0); + g_log_set_handler ("GLib-GObject", G_LOG_LEVEL_CRITICAL|G_LOG_LEVEL_WARNING, (GLogFunc)log_handler, 0); + g_log_set_handler ("Gdk", G_LOG_LEVEL_CRITICAL|G_LOG_LEVEL_WARNING, (GLogFunc)log_handler, 0); + g_log_set_handler ("Gtk", G_LOG_LEVEL_CRITICAL|G_LOG_LEVEL_WARNING, (GLogFunc)log_handler, 0); +#endif + + if (!sess_list->next) + g_idle_add (fe_idle, NULL); + + sess->scrollback_replay_marklast = gtk_xtext_set_marker_last; +} + +void +fe_new_server (struct server *serv) +{ + serv->gui = g_new0 (struct server_gui, 1); +} + +void +fe_message (char *msg, int flags) +{ + GtkWidget *dialog; + int type = GTK_MESSAGE_WARNING; + + if (flags & FE_MSG_ERROR) + type = GTK_MESSAGE_ERROR; + if (flags & FE_MSG_INFO) + type = GTK_MESSAGE_INFO; + + dialog = gtk_message_dialog_new (GTK_WINDOW (parent_window), 0, type, + GTK_BUTTONS_OK, "%s", msg); + if (flags & FE_MSG_MARKUP) + gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (dialog), msg); + g_signal_connect (G_OBJECT (dialog), "response", + G_CALLBACK (gtk_widget_destroy), 0); + gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); + gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); + gtk_widget_show (dialog); + + if (flags & FE_MSG_WAIT) + gtk_dialog_run (GTK_DIALOG (dialog)); +} + +void +fe_idle_add (void *func, void *data) +{ + g_idle_add (func, data); +} + +void +fe_input_remove (int tag) +{ + g_source_remove (tag); +} + +int +fe_input_add (int sok, int flags, void *func, void *data) +{ + int tag, type = 0; + GIOChannel *channel; + +#ifdef WIN32 + if (flags & FIA_FD) + channel = g_io_channel_win32_new_fd (sok); + else + channel = g_io_channel_win32_new_socket (sok); +#else + channel = g_io_channel_unix_new (sok); +#endif + + if (flags & FIA_READ) + type |= G_IO_IN | G_IO_HUP | G_IO_ERR; + if (flags & FIA_WRITE) + type |= G_IO_OUT | G_IO_ERR; + if (flags & FIA_EX) + type |= G_IO_PRI; + + tag = g_io_add_watch (channel, type, (GIOFunc) func, data); + g_io_channel_unref (channel); + + return tag; +} + +void +fe_set_topic (session *sess, char *topic, char *stripped_topic) +{ + if (!sess->gui->is_tab || sess == current_tab) + { + if (prefs.hex_text_stripcolor_topic) + { + gtk_entry_set_text (GTK_ENTRY (sess->gui->topic_entry), stripped_topic); + } + else + { + gtk_entry_set_text (GTK_ENTRY (sess->gui->topic_entry), topic); + } + mg_set_topic_tip (sess); + } + else + { + g_free (sess->res->topic_text); + + if (prefs.hex_text_stripcolor_topic) + { + sess->res->topic_text = g_strdup (stripped_topic); + } + else + { + sess->res->topic_text = g_strdup (topic); + } + } +} + +static void +fe_update_mode_entry (session *sess, GtkWidget *entry, char **text, char *new_text) +{ + if (!sess->gui->is_tab || sess == current_tab) + { + if (sess->gui->flag_wid[0]) /* channel mode buttons enabled? */ + gtk_entry_set_text (GTK_ENTRY (entry), new_text); + } else + { + if (sess->gui->is_tab) + { + g_free (*text); + *text = g_strdup (new_text); + } + } +} + +void +fe_update_channel_key (struct session *sess) +{ + fe_update_mode_entry (sess, sess->gui->key_entry, + &sess->res->key_text, sess->channelkey); + fe_set_title (sess); +} + +void +fe_update_channel_limit (struct session *sess) +{ + char tmp[16]; + + sprintf (tmp, "%d", sess->limit); + fe_update_mode_entry (sess, sess->gui->limit_entry, + &sess->res->limit_text, tmp); + fe_set_title (sess); +} + +int +fe_is_chanwindow (struct server *serv) +{ + if (!serv->gui->chanlist_window) + return 0; + return 1; +} + +void +fe_notify_update (char *name) +{ + if (!name) + notify_gui_update (); +} + +void +fe_text_clear (struct session *sess, int lines) +{ + gtk_xtext_clear (sess->res->buffer, lines); +} + +void +fe_close_window (struct session *sess) +{ + if (sess->gui->is_tab) + mg_tab_close (sess); + else + gtk_widget_destroy (sess->gui->window); +} + +void +fe_progressbar_start (session *sess) +{ + if (!sess->gui->is_tab || current_tab == sess) + /* if it's the focused tab, create it for real! */ + mg_progressbar_create (sess->gui); + else + /* otherwise just remember to create on when it gets focused */ + sess->res->c_graph = TRUE; +} + +void +fe_progressbar_end (server *serv) +{ + GSList *list = sess_list; + session *sess; + + while (list) /* check all windows that use this server and * + * remove the connecting graph, if it has one. */ + { + sess = list->data; + if (sess->server == serv) + { + if (sess->gui->bar) + mg_progressbar_destroy (sess->gui); + sess->res->c_graph = FALSE; + } + list = list->next; + } +} + +void +fe_print_text (struct session *sess, char *text, time_t stamp, + gboolean no_activity) +{ + PrintTextRaw (sess->res->buffer, (unsigned char *)text, prefs.hex_text_indent, stamp); + + if (no_activity || !sess->gui->is_tab) + return; + + if (sess == current_tab) + fe_set_tab_color (sess, FE_COLOR_NONE); + else if (sess->tab_state & TAB_STATE_NEW_HILIGHT) + fe_set_tab_color (sess, FE_COLOR_NEW_HILIGHT); + else if (sess->tab_state & TAB_STATE_NEW_MSG) + fe_set_tab_color (sess, FE_COLOR_NEW_MSG); + else + fe_set_tab_color (sess, FE_COLOR_NEW_DATA); +} + +void +fe_beep (session *sess) +{ +#ifdef WIN32 + /* Play the "Instant Message Notification" system sound + */ + if (!PlaySoundW (L"Notification.IM", NULL, SND_ALIAS | SND_ASYNC)) + { + /* The user does not have the "Instant Message Notification" sound set. Fall back to system beep. + */ + Beep (1000, 50); + } +#else +#ifdef USE_LIBCANBERRA + if (ca_con == NULL) + { + ca_context_create (&ca_con); + ca_context_change_props (ca_con, + CA_PROP_APPLICATION_ID, "hexchat", + CA_PROP_APPLICATION_NAME, DISPLAY_NAME, + CA_PROP_APPLICATION_ICON_NAME, "hexchat", NULL); + } + + if (ca_context_play (ca_con, 0, CA_PROP_EVENT_ID, "message-new-instant", NULL) != 0) +#endif + gdk_beep (); +#endif +} + +void +fe_lastlog (session *sess, session *lastlog_sess, char *sstr, gtk_xtext_search_flags flags) +{ + GError *err = NULL; + xtext_buffer *buf, *lbuf; + + buf = sess->res->buffer; + + if (gtk_xtext_is_empty (buf)) + { + PrintText (lastlog_sess, _("Search buffer is empty.\n")); + return; + } + + lbuf = lastlog_sess->res->buffer; + if (flags & regexp) + { + GRegexCompileFlags gcf = (flags & case_match)? 0: G_REGEX_CASELESS; + + lbuf->search_re = g_regex_new (sstr, gcf, 0, &err); + if (err) + { + PrintText (lastlog_sess, _(err->message)); + g_error_free (err); + return; + } + } + else + { + if (flags & case_match) + { + lbuf->search_nee = g_strdup (sstr); + } + else + { + lbuf->search_nee = g_utf8_casefold (sstr, strlen (sstr)); + } + lbuf->search_lnee = strlen (lbuf->search_nee); + } + lbuf->search_flags = flags; + lbuf->search_text = g_strdup (sstr); + gtk_xtext_lastlog (lbuf, buf); +} + +void +fe_set_lag (server *serv, long lag) +{ + GSList *list = sess_list; + session *sess; + gdouble per; + char lagtext[64]; + char lagtip[128]; + unsigned long nowtim; + + if (lag == -1) + { + if (!serv->lag_sent) + return; + nowtim = make_ping_time (); + lag = nowtim - serv->lag_sent; + } + + /* if there is no pong for >30s report the lag as +30s */ + if (lag > 30000 && serv->lag_sent) + lag=30000; + + per = ((double)lag) / 1000.0; + if (per > 1.0) + per = 1.0; + + g_snprintf (lagtext, sizeof (lagtext) - 1, "%s%ld.%lds", + serv->lag_sent ? "+" : "", lag / 1000, (lag/100) % 10); + g_snprintf (lagtip, sizeof (lagtip) - 1, "Lag: %s%ld.%ld seconds", + serv->lag_sent ? "+" : "", lag / 1000, (lag/100) % 10); + + while (list) + { + sess = list->data; + if (sess->server == serv) + { + g_free (sess->res->lag_tip); + sess->res->lag_tip = g_strdup (lagtip); + + if (!sess->gui->is_tab || current_tab == sess) + { + if (sess->gui->lagometer) + { + gtk_progress_bar_set_fraction ((GtkProgressBar *) sess->gui->lagometer, per); + gtk_widget_set_tooltip_text (gtk_widget_get_parent (sess->gui->lagometer), lagtip); + } + if (sess->gui->laginfo) + gtk_label_set_text ((GtkLabel *) sess->gui->laginfo, lagtext); + } else + { + sess->res->lag_value = per; + g_free (sess->res->lag_text); + sess->res->lag_text = g_strdup (lagtext); + } + } + list = list->next; + } +} + +void +fe_set_throttle (server *serv) +{ + GSList *list = sess_list; + struct session *sess; + float per; + char tbuf[96]; + char tip[160]; + + per = (float) serv->sendq_len / 1024.0; + if (per > 1.0) + per = 1.0; + + while (list) + { + sess = list->data; + if (sess->server == serv) + { + g_snprintf (tbuf, sizeof (tbuf) - 1, _("%d bytes"), serv->sendq_len); + g_snprintf (tip, sizeof (tip) - 1, _("Network send queue: %d bytes"), serv->sendq_len); + + g_free (sess->res->queue_tip); + sess->res->queue_tip = g_strdup (tip); + + if (!sess->gui->is_tab || current_tab == sess) + { + if (sess->gui->throttlemeter) + { + gtk_progress_bar_set_fraction ((GtkProgressBar *) sess->gui->throttlemeter, per); + gtk_widget_set_tooltip_text (gtk_widget_get_parent (sess->gui->throttlemeter), tip); + } + if (sess->gui->throttleinfo) + gtk_label_set_text ((GtkLabel *) sess->gui->throttleinfo, tbuf); + } else + { + sess->res->queue_value = per; + g_free (sess->res->queue_text); + sess->res->queue_text = g_strdup (tbuf); + } + } + list = list->next; + } +} + +void +fe_ctrl_gui (session *sess, fe_gui_action action, int arg) +{ + switch (action) + { + case FE_GUI_HIDE: + gtk_widget_hide (sess->gui->window); break; + case FE_GUI_SHOW: + gtk_widget_show (sess->gui->window); + gtk_window_present (GTK_WINDOW (sess->gui->window)); + break; + case FE_GUI_FOCUS: + mg_bring_tofront_sess (sess); break; + case FE_GUI_FLASH: + fe_flash_window (sess); break; + case FE_GUI_COLOR: + fe_set_tab_color (sess, arg); break; + case FE_GUI_ICONIFY: + gtk_window_iconify (GTK_WINDOW (sess->gui->window)); break; + case FE_GUI_MENU: + menu_bar_toggle (); /* toggle menubar on/off */ + break; + case FE_GUI_ATTACH: + mg_detach (sess, arg); /* arg: 0=toggle 1=detach 2=attach */ + break; + case FE_GUI_APPLY: + setup_apply_real (TRUE, TRUE, TRUE, FALSE); + } +} + +static void +dcc_saveas_cb (struct DCC *dcc, char *file) +{ + if (is_dcc (dcc)) + { + if (dcc->dccstat == STAT_QUEUED) + { + if (file) + dcc_get_with_destfile (dcc, file); + else if (dcc->resume_sent == 0) + dcc_abort (dcc->serv->front_session, dcc); + } + } +} + +void +fe_confirm (const char *message, void (*yesproc)(void *), void (*noproc)(void *), void *ud) +{ + /* warning, assuming fe_confirm is used by DCC only! */ + struct DCC *dcc = ud; + + if (dcc->file) + { + char *filepath = g_build_filename (prefs.hex_dcc_dir, dcc->file, NULL); + gtkutil_file_req (NULL, message, dcc_saveas_cb, ud, filepath, NULL, + FRF_WRITE|FRF_NOASKOVERWRITE|FRF_FILTERISINITIAL); + g_free (filepath); + } +} + +int +fe_gui_info (session *sess, int info_type) +{ + switch (info_type) + { + case 0: /* window status */ + if (!gtk_widget_get_visible (GTK_WIDGET (sess->gui->window))) + { + return 2; /* hidden (iconified or systray) */ + } + + if (gtk_window_is_active (GTK_WINDOW (sess->gui->window))) + { + return 1; /* active/focused */ + } + + return 0; /* normal (no keyboard focus or behind a window) */ + } + + return -1; +} + +void * +fe_gui_info_ptr (session *sess, int info_type) +{ + switch (info_type) + { + case 0: /* native window pointer (for plugins) */ +#ifdef WIN32 + return gdk_win32_window_get_impl_hwnd (gtk_widget_get_window (sess->gui->window)); +#else + return sess->gui->window; +#endif + break; + + case 1: /* GtkWindow * (for plugins) */ + return sess->gui->window; + } + return NULL; +} + +char * +fe_get_inputbox_contents (session *sess) +{ + /* not the current tab */ + if (sess->res->input_text) + return sess->res->input_text; + + /* current focused tab */ + return SPELL_ENTRY_GET_TEXT (sess->gui->input_box); +} + +int +fe_get_inputbox_cursor (session *sess) +{ + /* not the current tab (we don't remember the cursor pos) */ + if (sess->res->input_text) + return 0; + + /* current focused tab */ + return SPELL_ENTRY_GET_POS (sess->gui->input_box); +} + +void +fe_set_inputbox_cursor (session *sess, int delta, int pos) +{ + if (!sess->gui->is_tab || sess == current_tab) + { + if (delta) + pos += SPELL_ENTRY_GET_POS (sess->gui->input_box); + SPELL_ENTRY_SET_POS (sess->gui->input_box, pos); + } else + { + /* we don't support changing non-front tabs yet */ + } +} + +void +fe_set_inputbox_contents (session *sess, char *text) +{ + if (!sess->gui->is_tab || sess == current_tab) + { + SPELL_ENTRY_SET_TEXT (sess->gui->input_box, text); + } else + { + g_free (sess->res->input_text); + sess->res->input_text = g_strdup (text); + } +} + +#ifdef __APPLE__ +static char * +url_escape_hostname (const char *url) +{ + char *host_start, *host_end, *ret, *hostname; + + host_start = strstr (url, "://"); + if (host_start != NULL) + { + *host_start = '\0'; + host_start += 3; + host_end = strchr (host_start, '/'); + + if (host_end != NULL) + { + *host_end = '\0'; + host_end++; + } + + hostname = g_hostname_to_ascii (host_start); + if (host_end != NULL) + ret = g_strdup_printf ("%s://%s/%s", url, hostname, host_end); + else + ret = g_strdup_printf ("%s://%s", url, hostname); + + g_free (hostname); + return ret; + } + + return g_strdup (url); +} + +static void +osx_show_uri (const char *url) +{ + char *escaped_url, *encoded_url, *open, *cmd; + + escaped_url = url_escape_hostname (url); + encoded_url = g_filename_from_utf8 (escaped_url, -1, NULL, NULL, NULL); + if (encoded_url) + { + open = g_find_program_in_path ("open"); + cmd = g_strjoin (" ", open, encoded_url, NULL); + + hexchat_exec (cmd); + + g_free (encoded_url); + g_free (cmd); + } + + g_free (escaped_url); +} + +#endif + +static inline char * +escape_uri (const char *uri) +{ + return g_uri_escape_string(uri, G_URI_RESERVED_CHARS_GENERIC_DELIMITERS G_URI_RESERVED_CHARS_SUBCOMPONENT_DELIMITERS, FALSE); +} + +static inline gboolean +uri_contains_forbidden_characters (const char *uri) +{ + while (*uri) + { + if (!g_ascii_isalnum (*uri) && !strchr ("-._~:/?#[]@!$&'()*+,;=", *uri)) + return TRUE; + uri++; + } + + return FALSE; +} + +static char * +maybe_escape_uri (const char *uri) +{ + /* The only way to know if a string has already been escaped or not + * is by fulling parsing each segement but we can try some more simple heuristics. */ + + /* If we find characters that should clearly be escaped. */ + if (uri_contains_forbidden_characters (uri)) + return escape_uri (uri); + + /* If it fails to be unescaped then it was not escaped. */ + char *unescaped = g_uri_unescape_string (uri, NULL); + if (!unescaped) + return escape_uri (uri); + g_free (unescaped); + + /* At this point it is probably safe to pass through as-is. */ + return g_strdup (uri); +} + +static void +fe_open_url_inner (const char *url) +{ +#ifdef WIN32 + gunichar2 *url_utf16 = g_utf8_to_utf16 (url, -1, NULL, NULL, NULL); + + if (url_utf16 == NULL) + { + return; + } + + ShellExecuteW (0, L"open", url_utf16, NULL, NULL, SW_SHOWNORMAL); + + g_free (url_utf16); +#elif defined(__APPLE__) + osx_show_uri (url); +#else + char *escaped_url = maybe_escape_uri (url); + g_debug ("Opening URL \"%s\" (%s)", escaped_url, url); + gtk_show_uri (NULL, escaped_url, GDK_CURRENT_TIME, NULL); + g_free (escaped_url); +#endif +} + +void +fe_open_url (const char *url) +{ + int url_type = url_check_word (url); + char *uri; + + /* gvfs likes file:// */ + if (url_type == WORD_PATH) + { +#ifndef WIN32 + uri = g_strconcat ("file://", url, NULL); + fe_open_url_inner (uri); + g_free (uri); +#else + fe_open_url_inner (url); +#endif + } + /* IPv6 addr. Add http:// */ + else if (url_type == WORD_HOST6) + { + /* IPv6 addrs in urls should be enclosed in [ ] */ + if (*url != '[') + uri = g_strdup_printf ("http://[%s]", url); + else + uri = g_strdup_printf ("http://%s", url); + + fe_open_url_inner (uri); + g_free (uri); + } + /* the http:// part's missing, prepend it, otherwise it won't always work */ + else if (strchr (url, ':') == NULL) + { + uri = g_strdup_printf ("http://%s", url); + fe_open_url_inner (uri); + g_free (uri); + } + /* we have a sane URL, send it to the browser untouched */ + else + { + fe_open_url_inner (url); + } +} + +void +fe_server_event (server *serv, int type, int arg) +{ + GSList *list = sess_list; + session *sess; + + while (list) + { + sess = list->data; + if (sess->server == serv && (current_tab == sess || !sess->gui->is_tab)) + { + session_gui *gui = sess->gui; + + switch (type) + { + case FE_SE_CONNECTING: /* connecting in progress */ + case FE_SE_RECONDELAY: /* reconnect delay begun */ + /* enable Disconnect item */ + gtk_widget_set_sensitive (gui->menu_item[MENU_ID_DISCONNECT], 1); + break; + + case FE_SE_CONNECT: + /* enable Disconnect and Away menu items */ + gtk_widget_set_sensitive (gui->menu_item[MENU_ID_AWAY], 1); + gtk_widget_set_sensitive (gui->menu_item[MENU_ID_DISCONNECT], 1); + break; + + case FE_SE_LOGGEDIN: /* end of MOTD */ + gtk_widget_set_sensitive (gui->menu_item[MENU_ID_JOIN], 1); + /* if number of auto-join channels is zero, open joind */ + if (arg == 0) + joind_open (serv); + break; + + case FE_SE_DISCONNECT: + /* disable Disconnect and Away menu items */ + gtk_widget_set_sensitive (gui->menu_item[MENU_ID_AWAY], 0); + gtk_widget_set_sensitive (gui->menu_item[MENU_ID_DISCONNECT], 0); + gtk_widget_set_sensitive (gui->menu_item[MENU_ID_JOIN], 0); + /* close the join-dialog, if one exists */ + joind_close (serv); + } + } + list = list->next; + } +} + +void +fe_get_file (const char *title, char *initial, + void (*callback) (void *userdata, char *file), void *userdata, + int flags) + +{ + /* OK: Call callback once per file, then once more with file=NULL. */ + /* CANCEL: Call callback once with file=NULL. */ + gtkutil_file_req (NULL, title, callback, userdata, initial, NULL, flags | FRF_FILTERISINITIAL); +} + +void +fe_open_chan_list (server *serv, char *filter, int do_refresh) +{ + chanlist_opengui (serv, do_refresh); +} + +const char * +fe_get_default_font (void) +{ +#ifdef WIN32 + if (gtkutil_find_font ("Consolas")) + return "Consolas 10"; + else +#else +#ifdef __APPLE__ + if (gtkutil_find_font ("Menlo")) + return "Menlo 13"; + else +#endif +#endif + return NULL; +} diff --git a/hexchat/src/fe-gtk/fe-gtk.h b/hexchat/src/fe-gtk/fe-gtk.h new file mode 100644 index 0000000..ab776f6 --- /dev/null +++ b/hexchat/src/fe-gtk/fe-gtk.h @@ -0,0 +1,191 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_FE_GTK_H +#define HEXCHAT_FE_GTK_H + +#include "config.h" + +#define DISPLAY_NAME "HexChat" + +#ifndef WIN32 +#include <sys/types.h> +#endif + +#include <glib/gi18n.h> +#include <gtk/gtk.h> + +#ifdef HAVE_GTK_MAC +#include <gtkosxapplication.h> +#endif + +#include "banlist.h" + +#define flag_c flag_wid[0] +#define flag_n flag_wid[1] +#define flag_t flag_wid[2] +#define flag_i flag_wid[3] +#define flag_m flag_wid[4] +#define flag_l flag_wid[5] +#define flag_k flag_wid[6] +#define flag_b flag_wid[7] +#define NUM_FLAG_WIDS 8 + +#ifdef HAVE_GTK_MAC +extern GtkosxApplication *osx_app; +#endif + +struct server_gui +{ + GtkWidget *rawlog_window; + GtkWidget *rawlog_textlist; + + /* join dialog */ + GtkWidget *joind_win; + GtkWidget *joind_entry; + GtkWidget *joind_radio1; + GtkWidget *joind_radio2; + GtkWidget *joind_check; + + /* chanlist variables */ + GtkWidget *chanlist_wild; /* GtkEntry */ + GtkWidget *chanlist_window; + GtkWidget *chanlist_list; + GtkWidget *chanlist_label; + GtkWidget *chanlist_min_spin; /* minusers GtkSpinButton */ + GtkWidget *chanlist_refresh; /* buttons */ + GtkWidget *chanlist_join; + GtkWidget *chanlist_savelist; + GtkWidget *chanlist_search; + + GSList *chanlist_data_stored_rows; /* stored list so it can be resorted */ + GSList *chanlist_pending_rows; + gint chanlist_tag; + gint chanlist_flash_tag; + + gboolean chanlist_match_wants_channel; /* match in channel name */ + gboolean chanlist_match_wants_topic; /* match in topic */ + + GRegex *chanlist_match_regex; /* compiled regular expression here */ + unsigned int have_regex; + + guint chanlist_users_found_count; /* users total for all channels */ + guint chanlist_users_shown_count; /* users total for displayed channels */ + guint chanlist_channels_found_count; /* channel total for /LIST operation */ + guint chanlist_channels_shown_count; /* total number of displayed + channels */ + + guint32 chanlist_maxusers; + guint32 chanlist_minusers; + guint32 chanlist_minusers_downloaded; /* used by LIST IRC command */ + int chanlist_search_type; /* 0=simple 1=pattern/wildcard 2=regexp */ + gboolean chanlist_caption_is_stale; +}; + +/* this struct is persistant even when delinking/relinking */ + +typedef struct restore_gui +{ + banlist_info *banlist; + + void *tab; /* (chan *) */ + + /* information stored when this tab isn't front-most */ + GtkListStore *user_model; /* for filling the GtkTreeView */ + void *buffer; /* xtext_Buffer */ + char *input_text; /* input text buffer (while not-front tab) */ + char *topic_text; /* topic GtkEntry buffer */ + char *key_text; + char *limit_text; + gfloat old_ul_value; /* old userlist value (for adj) */ + gfloat lag_value; /* lag-o-meter */ + char *lag_text; /* lag-o-meter text */ + char *lag_tip; /* lag-o-meter tooltip */ + gfloat queue_value; /* outbound queue meter */ + char *queue_text; /* outbound queue text */ + char *queue_tip; /* outbound queue tooltip */ + short flag_wid_state[NUM_FLAG_WIDS]; + unsigned int c_graph:1; /* connecting graph, is there one? */ +} restore_gui; + +typedef struct session_gui +{ + GtkWidget + *xtext, + *vscrollbar, + *window, /* toplevel */ + *topic_entry, + *note_book, + *main_table, + *user_tree, /* GtkTreeView */ + *user_box, /* userlist box */ + *button_box_parent, + *button_box, /* userlist buttons' box */ + *dialogbutton_box, + *topicbutton_box, + *meter_box, /* all the meters inside this */ + *lagometer, + *laginfo, + *throttlemeter, + *throttleinfo, + *topic_bar, + *hpane_left, + *hpane_right, + *vpane_left, + *vpane_right, + *menu, + *bar, /* connecting progress bar */ + *nick_box, /* contains label to the left of input_box */ + *nick_label, + *op_xpm, /* icon to the left of nickname */ + *namelistinfo, /* label above userlist */ + *input_box, + *flag_wid[NUM_FLAG_WIDS], /* channelmode buttons */ + *limit_entry, /* +l */ + *key_entry; /* +k */ + + GtkWidget *shbox, *shentry; /* search bar hbox */ + gulong search_changed_signal; /* hook for search change event so blanking the box doesn't suck */ + +#define MENU_ID_NUM 14 + GtkWidget *menu_item[MENU_ID_NUM+1]; /* some items we may change state of */ + + void *chanview; /* chanview.h */ + + int bartag; /*connecting progressbar timeout */ + + int pane_left_size; /*last position of the pane*/ + int pane_right_size; + + guint16 is_tab; /* is tab or toplevel? */ + guint16 ul_hidden; /* userlist hidden? */ + +} session_gui; + +extern GdkPixmap *channelwin_pix; +extern GdkPixmap *dialogwin_pix; + +#define SPELL_ENTRY_GET_TEXT(e) ((char *)(gtk_entry_get_text (GTK_ENTRY(e)))) +#define SPELL_ENTRY_SET_TEXT(e,txt) gtk_entry_set_text(GTK_ENTRY(e),txt) +#define SPELL_ENTRY_SET_EDITABLE(e,v) gtk_editable_set_editable(GTK_EDITABLE(e),v) +#define SPELL_ENTRY_GET_POS(e) gtk_editable_get_position(GTK_EDITABLE(e)) +#define SPELL_ENTRY_SET_POS(e,p) gtk_editable_set_position(GTK_EDITABLE(e),p); +#define SPELL_ENTRY_INSERT(e,t,l,p) gtk_editable_insert_text(GTK_EDITABLE(e),t,l,p) + +#endif diff --git a/hexchat/src/fe-gtk/fe-gtk.vcxproj b/hexchat/src/fe-gtk/fe-gtk.vcxproj new file mode 100644 index 0000000..06df36d --- /dev/null +++ b/hexchat/src/fe-gtk/fe-gtk.vcxproj @@ -0,0 +1,143 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup Label="Configuration"> + <PlatformToolset>v142</PlatformToolset> + <ConfigurationType>Application</ConfigurationType> + </PropertyGroup> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{E4BDB4C8-2335-415A-ACEE-BA88B19BFE82}</ProjectGuid> + <Keyword>Win32Proj</Keyword> + <RootNamespace>fegtk</RootNamespace> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + <Import Project="..\..\win32\hexchat.props" /> + <PropertyGroup> + <TargetName>hexchat</TargetName> + <OutDir>$(HexChatRel)</OutDir> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;$(OwnFlags);%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>..\common;$(HexChatLib);$(DepsRoot)\include;$(Glib);$(Gtk);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <DisableSpecificWarnings>4244;%(DisableSpecificWarnings)</DisableSpecificWarnings> + </ClCompile> + <Link> + <AdditionalLibraryDirectories>$(DepsRoot)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + <AdditionalDependencies>$(DepLibs);$(HexChatLib)common.lib;wbemuuid.lib;comsupp.lib;%(AdditionalDependencies)</AdditionalDependencies> + <EntryPointSymbol>mainCRTStartup</EntryPointSymbol> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <ClCompile> + <PreprocessorDefinitions>WIN32;_WIN64;_AMD64_;NDEBUG;_WINDOWS;$(OwnFlags);%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>..\common;$(HexChatLib);$(DepsRoot)\include;$(Glib);$(Gtk);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <DisableSpecificWarnings>4244;4267;%(DisableSpecificWarnings)</DisableSpecificWarnings> + </ClCompile> + <Link> + <AdditionalLibraryDirectories>$(DepsRoot)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + <AdditionalDependencies>$(DepLibs);$(HexChatLib)common.lib;wbemuuid.lib;comsupp.lib;%(AdditionalDependencies)</AdditionalDependencies> + <EntryPointSymbol>mainCRTStartup</EntryPointSymbol> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup> + <PreBuildEvent> + <Command><![CDATA[ +SET SOLUTIONDIR=$(SolutionDir)..\ +powershell -File "$(SolutionDir)..\win32\version-template.ps1" "$(SolutionDir)..\src\fe-gtk\hexchat.rc.tt" "$(HexChatLib)hexchat.rc.utf8" +REM hexchat.rc needs to be in UCS-2 or Resource Compiler will complain +powershell "Get-Content -Encoding UTF8 '$(HexChatLib)hexchat.rc.utf8' | Out-File '$(HexChatLib)hexchat.rc'; Remove-Item '$(HexChatLib)hexchat.rc.utf8'" +"$(DepsRoot)\bin\glib-compile-resources.exe" --generate-header --manual-register --sourcedir "$(DataDir)" --target "$(HexChatLib)resources.h" "$(DataDir)hexchat.gresource.xml" +"$(DepsRoot)\bin\glib-compile-resources.exe" --generate-source --manual-register --sourcedir "$(DataDir)" --target "$(HexChatLib)resources.c" "$(DataDir)hexchat.gresource.xml" + ]]></Command> + <Message>Build hexchat.rc and gresource file</Message> + </PreBuildEvent> + </ItemDefinitionGroup> + <ItemGroup> + <ClInclude Include="ascii.h" /> + <ClInclude Include="banlist.h" /> + <ClInclude Include="chanlist.h" /> + <ClInclude Include="chanview.h" /> + <ClInclude Include="custom-list.h" /> + <ClInclude Include="editlist.h" /> + <ClInclude Include="fe-gtk.h" /> + <ClInclude Include="fkeys.h" /> + <ClInclude Include="gtkutil.h" /> + <ClInclude Include="joind.h" /> + <ClInclude Include="maingui.h" /> + <ClInclude Include="menu.h" /> + <ClInclude Include="notifications\notification-backend.h" /> + <ClInclude Include="notifygui.h" /> + <ClInclude Include="palette.h" /> + <ClInclude Include="pixmaps.h" /> + <ClInclude Include="plugin-tray.h" /> + <ClInclude Include="plugingui.h" /> + <ClInclude Include="rawlog.h" /> + <ClInclude Include="servlistgui.h" /> + <ClInclude Include="setup.h" /> + <ClInclude Include="sexy-iso-codes.h" /> + <ClInclude Include="sexy-spell-entry.h" /> + <ClInclude Include="textgui.h" /> + <ClInclude Include="urlgrab.h" /> + <ClInclude Include="userlistgui.h" /> + <ClInclude Include="xtext.h" /> + </ItemGroup> + <ItemGroup> + <ClCompile Include="ascii.c" /> + <ClCompile Include="banlist.c" /> + <ClCompile Include="chanlist.c" /> + <ClCompile Include="chanview.c" /> + <ClCompile Include="custom-list.c" /> + <ClCompile Include="dccgui.c" /> + <ClCompile Include="editlist.c" /> + <ClCompile Include="fe-gtk.c" /> + <ClCompile Include="fkeys.c" /> + <ClCompile Include="gtkutil.c" /> + <ClCompile Include="ignoregui.c" /> + <ClCompile Include="joind.c" /> + <ClCompile Include="maingui.c" /> + <ClCompile Include="menu.c" /> + <ClCompile Include="notifications\notification-windows.c" /> + <ClCompile Include="notifygui.c" /> + <ClCompile Include="palette.c" /> + <ClCompile Include="pixmaps.c" /> + <ClCompile Include="plugin-notification.c" /> + <ClCompile Include="plugin-tray.c" /> + <ClCompile Include="plugingui.c" /> + <ClCompile Include="rawlog.c" /> + <ClCompile Include="$(HexChatLib)resources.c" /> + <ClCompile Include="servlistgui.c" /> + <ClCompile Include="setup.c" /> + <ClCompile Include="sexy-iso-codes.c" /> + <ClCompile Include="sexy-spell-entry.c" /> + <ClCompile Include="textgui.c" /> + <ClCompile Include="urlgrab.c" /> + <ClCompile Include="userlistgui.c" /> + <ClCompile Include="xtext.c" /> + </ItemGroup> + <ItemGroup> + <Manifest Include="..\..\win32\hexchat.exe.manifest" /> + </ItemGroup> + <ItemGroup> + <None Include="hexchat.rc.tt" /> + <ResourceCompile Include="$(HexChatLib)hexchat.rc" /> + </ItemGroup> + <ItemGroup> + <None Include="..\..\data\icons\hexchat.ico" /> + </ItemGroup> + <ItemGroup> + <Xml Include="..\..\data\hexchat.gresource.xml" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> +</Project> diff --git a/hexchat/src/fe-gtk/fe-gtk.vcxproj.filters b/hexchat/src/fe-gtk/fe-gtk.vcxproj.filters new file mode 100644 index 0000000..fe211a2 --- /dev/null +++ b/hexchat/src/fe-gtk/fe-gtk.vcxproj.filters @@ -0,0 +1,214 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Source Files"> + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> + <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> + </Filter> + <Filter Include="Header Files"> + <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> + <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions> + </Filter> + <Filter Include="Resource Files"> + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> + </Filter> + </ItemGroup> + <ItemGroup> + <ClInclude Include="ascii.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="banlist.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="chanlist.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="chanview.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="custom-list.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="editlist.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="fe-gtk.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="fkeys.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="gtkutil.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="joind.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="maingui.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="menu.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="notifygui.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="palette.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="pixmaps.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="plugingui.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="plugin-tray.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="rawlog.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="sexy-iso-codes.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="sexy-spell-entry.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="textgui.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="urlgrab.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="userlistgui.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="xtext.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="servlistgui.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="setup.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="notifications\notification-backend.h"> + <Filter>Header Files</Filter> + </ClInclude> + </ItemGroup> + <ItemGroup> + <ClCompile Include="ascii.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="banlist.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="chanlist.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="chanview.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="custom-list.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="dccgui.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="editlist.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="fe-gtk.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="fkeys.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="gtkutil.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="ignoregui.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="joind.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="maingui.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="menu.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="notifygui.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="palette.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="pixmaps.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="plugingui.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="plugin-tray.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="rawlog.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="servlistgui.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="setup.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="sexy-iso-codes.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="sexy-spell-entry.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="textgui.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="urlgrab.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="userlistgui.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="xtext.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="$(HexChatLib)resources.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="plugin-notification.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="notifications\notification-windows.c"> + <Filter>Source Files</Filter> + </ClCompile> + </ItemGroup> + <ItemGroup> + <Manifest Include="..\..\win32\hexchat.exe.manifest"> + <Filter>Resource Files</Filter> + </Manifest> + </ItemGroup> + <ItemGroup> + <ResourceCompile Include="$(HexChatLib)hexchat.rc"> + <Filter>Resource Files</Filter> + </ResourceCompile> + </ItemGroup> + <ItemGroup> + <None Include="..\..\data\icons\hexchat.ico"> + <Filter>Resource Files</Filter> + </None> + <None Include="hexchat.rc.tt" /> + </ItemGroup> + <ItemGroup> + <Xml Include="..\..\data\hexchat.gresource.xml" /> + </ItemGroup> +</Project> \ No newline at end of file diff --git a/hexchat/src/fe-gtk/fkeys.c b/hexchat/src/fe-gtk/fkeys.c new file mode 100644 index 0000000..6dd16e3 --- /dev/null +++ b/hexchat/src/fe-gtk/fkeys.c @@ -0,0 +1,1843 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <string.h> +#include <fcntl.h> +#include <ctype.h> + +#ifdef WIN32 +#include <io.h> +#else +#include <unistd.h> +#endif + +#define GLIB_DISABLE_DEPRECATION_WARNINGS +#include "fe-gtk.h" + +#include "../common/hexchat.h" +#include "../common/hexchatc.h" +#include "../common/cfgfiles.h" +#include "../common/fe.h" +#include "../common/userlist.h" +#include "../common/outbound.h" +#include "../common/util.h" +#include "../common/text.h" +#include "../common/plugin.h" +#include "../common/typedef.h" +#include <gdk/gdkkeysyms.h> +#include "gtkutil.h" +#include "menu.h" +#include "xtext.h" +#include "palette.h" +#include "maingui.h" +#include "textgui.h" +#include "fkeys.h" + +static void replace_handle (GtkWidget * wid); +void key_action_tab_clean (void); + +/***************** Key Binding Code ******************/ + +/* NOTES: + + To add a new action: + 1) inc KEY_MAX_ACTIONS + 2) write the function at the bottom of this file (with all the others) + FIXME: Write about calling and returning + 3) Add it to key_actions + + --AGL + + */ + +/* Remember that the *number* of actions is this *plus* 1 --AGL */ +#define KEY_MAX_ACTIONS 14 + +struct key_binding +{ + guint keyval; /* keyval from gdk */ + GdkModifierType mod; /* Modifier, always ran through key_modifier_get_valid() */ + int action; /* Index into key_actions */ + char *data1, *data2; /* Pointers to strings, these must be freed */ +}; + +struct key_action +{ + int (*handler) (GtkWidget * wid, GdkEventKey * evt, char *d1, char *d2, + struct session * sess); + char *name; + char *help; +}; + +struct gcomp_data +{ + char data[CHANLEN]; + int elen; +}; + +static int key_load_kbs (void); +static int key_save_kbs (void); +static int key_action_handle_command (GtkWidget * wid, GdkEventKey * evt, + char *d1, char *d2, + struct session *sess); +static int key_action_page_switch (GtkWidget * wid, GdkEventKey * evt, + char *d1, char *d2, struct session *sess); +int key_action_insert (GtkWidget * wid, GdkEventKey * evt, char *d1, char *d2, + struct session *sess); +static int key_action_scroll_page (GtkWidget * wid, GdkEventKey * evt, + char *d1, char *d2, struct session *sess); +static int key_action_set_buffer (GtkWidget * wid, GdkEventKey * evt, + char *d1, char *d2, struct session *sess); +static int key_action_history_up (GtkWidget * wid, GdkEventKey * evt, + char *d1, char *d2, struct session *sess); +static int key_action_history_down (GtkWidget * wid, GdkEventKey * evt, + char *d1, char *d2, struct session *sess); +static int key_action_tab_comp (GtkWidget * wid, GdkEventKey * evt, char *d1, + char *d2, struct session *sess); +static int key_action_comp_chng (GtkWidget * wid, GdkEventKey * evt, char *d1, + char *d2, struct session *sess); +static int key_action_replace (GtkWidget * wid, GdkEventKey * evt, char *d1, + char *d2, struct session *sess); +static int key_action_move_tab_left (GtkWidget * wid, GdkEventKey * evt, + char *d1, char *d2, + struct session *sess); +static int key_action_move_tab_right (GtkWidget * wid, GdkEventKey * evt, + char *d1, char *d2, + struct session *sess); +static int key_action_move_tab_family_left (GtkWidget * wid, GdkEventKey * evt, + char *d1, char *d2, + struct session *sess); +static int key_action_move_tab_family_right (GtkWidget * wid, GdkEventKey * evt, + char *d1, char *d2, + struct session *sess); +static int key_action_put_history (GtkWidget * wid, GdkEventKey * evt, + char *d1, char *d2, + struct session *sess); + +static GSList *keybind_list = NULL; + +static const struct key_action key_actions[KEY_MAX_ACTIONS + 1] = { + + {key_action_handle_command, "Run Command", + N_("The \002Run Command\002 action runs the data in Data 1 as if it had been typed into the entry box where you pressed the key sequence. Thus it can contain text (which will be sent to the channel/person), commands or user commands. When run all \002\\n\002 characters in Data 1 are used to deliminate separate commands so it is possible to run more than one command. If you want a \002\\\002 in the actual text run then enter \002\\\\\002")}, + {key_action_page_switch, "Change Page", + N_("The \002Change Page\002 command switches between pages in the notebook. Set Data 1 to the page you want to switch to. If Data 2 is set to anything then the switch will be relative to the current position. Set Data 1 to auto to switch to the page with the most recent and important activity (queries first, then channels with hilight, channels with dialogue, channels with other data)")}, + {key_action_insert, "Insert in Buffer", + N_("The \002Insert in Buffer\002 command will insert the contents of Data 1 into the entry where the key sequence was pressed at the current cursor position")}, + {key_action_scroll_page, "Scroll Page", + N_("The \002Scroll Page\002 command scrolls the text widget up or down one page or one line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1.")}, + {key_action_set_buffer, "Set Buffer", + N_("The \002Set Buffer\002 command sets the entry where the key sequence was entered to the contents of Data 1")}, + {key_action_history_up, "Last Command", + N_("The \002Last Command\002 command sets the entry to contain the last command entered - the same as pressing up in a shell")}, + {key_action_history_down, "Next Command", + N_("The \002Next Command\002 command sets the entry to contain the next command entered - the same as pressing down in a shell")}, + {key_action_tab_comp, "Complete nick/command", + N_("This command changes the text in the entry to finish an incomplete nickname or command. If Data 1 is set then double-tabbing in a string will select the last nick, not the next")}, + {key_action_comp_chng, "Change Selected Nick", + N_("This command scrolls up and down through the list of nicks. If Data 1 is set to anything it will scroll up, else it scrolls down")}, + {key_action_replace, "Check For Replace", + N_("This command checks the last word entered in the entry against the replace list and replaces it if it finds a match")}, + {key_action_move_tab_left, "Move front tab left", + N_("This command moves the front tab left by one")}, + {key_action_move_tab_right, "Move front tab right", + N_("This command moves the front tab right by one")}, + {key_action_move_tab_family_left, "Move tab family left", + N_("This command moves the current tab family to the left")}, + {key_action_move_tab_family_right, "Move tab family right", + N_("This command moves the current tab family to the right")}, + {key_action_put_history, "Push input line into history", + N_("Push input line into history but doesn't send to server")}, +}; + +#define default_kb_cfg \ + "ACCEL=<Primary>Page_Up\nChange Page\nD1:-1\nD2:Relative\n\n"\ + "ACCEL=<Primary>Page_Down\nChange Page\nD1:1\nD2:Relative\n\n"\ + "ACCEL=<Alt>9\nChange Page\nD1:9\nD2!\n\n"\ + "ACCEL=<Alt>8\nChange Page\nD1:8\nD2!\n\n"\ + "ACCEL=<Alt>7\nChange Page\nD1:7\nD2!\n\n"\ + "ACCEL=<Alt>6\nChange Page\nD1:6\nD2!\n\n"\ + "ACCEL=<Alt>5\nChange Page\nD1:5\nD2!\n\n"\ + "ACCEL=<Alt>4\nChange Page\nD1:4\nD2!\n\n"\ + "ACCEL=<Alt>3\nChange Page\nD1:3\nD2!\n\n"\ + "ACCEL=<Alt>2\nChange Page\nD1:2\nD2!\n\n"\ + "ACCEL=<Alt>1\nChange Page\nD1:1\nD2!\n\n"\ + "ACCEL=<Alt>grave\nChange Page\nD1:auto\nD2!\n\n"\ + "ACCEL=<Primary>o\nInsert in Buffer\nD1:\017\nD2!\n\n"\ + "ACCEL=<Primary>b\nInsert in Buffer\nD1:\002\nD2!\n\n"\ + "ACCEL=<Primary>k\nInsert in Buffer\nD1:\003\nD2!\n\n"\ + "ACCEL=<Primary>i\nInsert in Buffer\nD1:\035\nD2!\n\n"\ + "ACCEL=<Primary>u\nInsert in Buffer\nD1:\037\nD2!\n\n"\ + "ACCEL=<Primary>r\nInsert in Buffer\nD1:\026\nD2!\n\n"\ + "ACCEL=<Shift>Page_Down\nChange Selected Nick\nD1!\nD2!\n\n"\ + "ACCEL=<Shift>Page_Up\nChange Selected Nick\nD1:Up\nD2!\n\n"\ + "ACCEL=Page_Down\nScroll Page\nD1:Down\nD2!\n\n"\ + "ACCEL=<Primary>Home\nScroll Page\nD1:Top\nD2!\n\n"\ + "ACCEL=<Primary>End\nScroll Page\nD1:Bottom\nD2!\n\n"\ + "ACCEL=Page_Up\nScroll Page\nD1:Up\nD2!\n\n"\ + "ACCEL=<Shift>Down\nScroll Page\nD1:+1\nD2!\n\n"\ + "ACCEL=<Shift>Up\nScroll Page\nD1:-1\nD2!\n\n"\ + "ACCEL=Down\nNext Command\nD1!\nD2!\n\n"\ + "ACCEL=Up\nLast Command\nD1!\nD2!\n\n"\ + "ACCEL=Tab\nComplete nick/command\nD1!\nD2!\n\n"\ + "ACCEL=<Shift>ISO_Left_Tab\nComplete nick/command\nD1:Previous\nD2!\n\n"\ + "ACCEL=space\nCheck For Replace\nD1!\nD2!\n\n"\ + "ACCEL=Return\nCheck For Replace\nD1!\nD2!\n\n"\ + "ACCEL=KP_Enter\nCheck For Replace\nD1!\nD2!\n\n"\ + "ACCEL=<Primary>Tab\nComplete nick/command\nD1:Up\nD2!\n\n"\ + "ACCEL=<Alt>Left\nMove front tab left\nD1!\nD2!\n\n"\ + "ACCEL=<Alt>Right\nMove front tab right\nD1!\nD2!\n\n"\ + "ACCEL=<Primary><Shift>Page_Up\nMove tab family left\nD1!\nD2!\n\n"\ + "ACCEL=<Primary><Shift>Page_Down\nMove tab family right\nD1!\nD2!\n\n"\ + "ACCEL=F9\nRun Command\nD1:/GUI MENU TOGGLE\nD2!\n\n" + +void +key_init () +{ + if (key_load_kbs () == 1) + { + fe_message (_("There was an error loading key" + " bindings configuration"), FE_MSG_ERROR); + } +} + +static inline int +key_get_action_from_string (char *text) +{ + int i; + + for (i = 0; i < KEY_MAX_ACTIONS + 1; i++) + { + if (strcmp (key_actions[i].name, text) == 0) + { + return i; + } + } + + return 0; +} + +static void +key_free (gpointer data) +{ + struct key_binding *kb = (struct key_binding*)data; + + g_return_if_fail (kb != NULL); + + g_free (kb->data1); + g_free (kb->data2); + g_free (kb); +} + +/* Ok, here are the NOTES + + key_handle_key_press now handles all the key presses and history_keypress is + now defunct. It goes thru the linked list keys_root and finds a matching + key. It runs the action func and switches on these values: + 0) Return + 1) Find next + 2) stop signal and return + + * history_keypress is now dead (and gone) + * key_handle_key_press now takes its role + * All the possible actions are in a struct called key_actions (in fkeys.c) + * it is made of {function, name, desc} + * key bindings can pass 2 *text* strings to the handler. If more options are nee + ded a format can be put on one of these options + * key actions are passed { + the entry widget + the Gdk event + data 1 + data 2 + session struct + } + * key bindings are stored in a linked list of key_binding structs + * which looks like { + guint keyval; GDK keynumber + int action; Index into key_actions + GdkModiferType mod; modifier, only ones from key_modifer_get_valid() + char *data1, *data2; Pointers to strings, these must be freed + struct key_binding *next; + } + * remember that is (data1 || data2) != NULL then they need to be free()'ed + + --AGL + + */ + +static inline GdkModifierType +key_modifier_get_valid (GdkModifierType mod) +{ + GdkModifierType ret; + +#ifdef __APPLE__ + ret = mod & (GDK_SHIFT_MASK | GDK_CONTROL_MASK | GDK_MOD1_MASK | GDK_META_MASK); +#else + /* These masks work on both Windows and Unix */ + ret = mod & (GDK_SHIFT_MASK | GDK_CONTROL_MASK | GDK_MOD1_MASK); +#endif + + return ret; +} + +gboolean +key_handle_key_press (GtkWidget *wid, GdkEventKey *evt, session *sess) +{ + struct key_binding *kb; + int n; + GSList *list; + + /* where did this event come from? */ + list = sess_list; + while (list) + { + sess = list->data; + if (sess->gui->input_box == wid) + { + if (sess->gui->is_tab) + sess = current_tab; + break; + } + list = list->next; + } + if (!list) + return FALSE; + current_sess = sess; + + if (plugin_emit_keypress (sess, evt->state, evt->keyval, gdk_keyval_to_unicode (evt->keyval))) + return 1; + + /* maybe the plugin closed this tab? */ + if (!is_session (sess)) + return 1; + + list = keybind_list; + while (list) + { + kb = (struct key_binding*)list->data; + + if (kb->keyval == evt->keyval && kb->mod == key_modifier_get_valid (evt->state)) + { + if (kb->action < 0 || kb->action > KEY_MAX_ACTIONS) + return 0; + + /* Run the function */ + n = key_actions[kb->action].handler (wid, evt, kb->data1, + kb->data2, sess); + switch (n) + { + case 0: + return 1; + case 2: + g_signal_stop_emission_by_name (G_OBJECT (wid), + "key_press_event"); + return 1; + } + } + list = g_slist_next (list); + } + + switch (evt->keyval) + { + case GDK_KEY_space: + key_action_tab_clean (); + break; + } + + return 0; +} + + +/* ***** GUI code here ******************* */ + +enum +{ + KEY_COLUMN, + ACCEL_COLUMN, + ACTION_COLUMN, + D1_COLUMN, + D2_COLUMN, + N_COLUMNS +}; + +static GtkWidget *key_dialog = NULL; + +static inline GtkTreeModel * +get_store (void) +{ + return gtk_tree_view_get_model (g_object_get_data (G_OBJECT (key_dialog), "view")); +} + +static void +key_dialog_print_text (GtkXText *xtext, char *text) +{ + unsigned int old = prefs.hex_stamp_text; + prefs.hex_stamp_text = 0; /* temporarily disable stamps */ + gtk_xtext_clear (GTK_XTEXT (xtext)->buffer, 0); + PrintTextRaw (GTK_XTEXT (xtext)->buffer, text, 0, 0); + prefs.hex_stamp_text = old; +} + +static void +key_dialog_set_key (GtkCellRendererAccel *accel, gchar *pathstr, guint accel_key, + GdkModifierType accel_mods, guint hardware_keycode, gpointer userdata) +{ + GtkTreeModel *model = get_store (); + GtkTreePath *path = gtk_tree_path_new_from_string (pathstr); + GtkTreeIter iter; + gchar *label_name, *accel_name; + + /* Shift tab requires an exception, hopefully that list ends here.. */ + if (accel_key == GDK_KEY_Tab && accel_mods & GDK_SHIFT_MASK) + accel_key = GDK_KEY_ISO_Left_Tab; + + label_name = gtk_accelerator_get_label (accel_key, key_modifier_get_valid (accel_mods)); + accel_name = gtk_accelerator_name (accel_key, key_modifier_get_valid (accel_mods)); + + gtk_tree_model_get_iter (model, &iter, path); + gtk_list_store_set (GTK_LIST_STORE (model), &iter, KEY_COLUMN, label_name, + ACCEL_COLUMN, accel_name, -1); + + gtk_tree_path_free (path); + g_free (label_name); + g_free (accel_name); +} + +static void +key_dialog_combo_changed (GtkCellRendererCombo *combo, gchar *pathstr, + GtkTreeIter *new_iter, gpointer data) +{ + GtkTreeModel *model; + GtkXText *xtext; + gchar *actiontext = NULL; + gint action; + + xtext = GTK_XTEXT (g_object_get_data (G_OBJECT (key_dialog), "xtext")); + model = GTK_TREE_MODEL (data); + + gtk_tree_model_get (model, new_iter, 0, &actiontext, -1); + + if (actiontext) + { +#ifdef WIN32 + /* We need to manually update the store */ + GtkTreePath *path; + GtkTreeIter iter; + + path = gtk_tree_path_new_from_string (pathstr); + model = get_store (); + + gtk_tree_model_get_iter (model, &iter, path); + gtk_list_store_set (GTK_LIST_STORE (model), &iter, ACTION_COLUMN, actiontext, -1); + + gtk_tree_path_free (path); +#endif + + action = key_get_action_from_string (actiontext); + key_dialog_print_text (xtext, key_actions[action].help); + + g_free (actiontext); + } +} + +static void +key_dialog_entry_edited (GtkCellRendererText *render, gchar *pathstr, gchar *new_text, gpointer data) +{ + GtkTreeModel *model = get_store (); + GtkTreePath *path = gtk_tree_path_new_from_string (pathstr); + GtkTreeIter iter; + gint column = GPOINTER_TO_INT (data); + + gtk_tree_model_get_iter (model, &iter, path); + gtk_list_store_set (GTK_LIST_STORE (model), &iter, column, new_text, -1); + + gtk_tree_path_free (path); +} + +static gboolean +key_dialog_keypress (GtkWidget *wid, GdkEventKey *evt, gpointer userdata) +{ + GtkTreeView *view = g_object_get_data (G_OBJECT (key_dialog), "view"); + GtkTreeModel *store; + GtkTreeIter iter1, iter2; + GtkTreeSelection *sel; + GtkTreePath *path; + gboolean handled = FALSE; + int delta; + + if (evt->state & GDK_SHIFT_MASK) + { + if (evt->keyval == GDK_KEY_Up) + { + handled = TRUE; + delta = -1; + } + else if (evt->keyval == GDK_KEY_Down) + { + handled = TRUE; + delta = 1; + } + } + + if (handled) + { + sel = gtk_tree_view_get_selection (view); + gtk_tree_selection_get_selected (sel, &store, &iter1); + path = gtk_tree_model_get_path (store, &iter1); + if (delta == 1) + gtk_tree_path_next (path); + else + gtk_tree_path_prev (path); + gtk_tree_model_get_iter (store, &iter2, path); + gtk_tree_path_free (path); + gtk_list_store_swap (GTK_LIST_STORE (store), &iter1, &iter2); + } + + return handled; +} + +static void +key_dialog_selection_changed (GtkTreeSelection *sel, gpointer userdata) +{ + GtkTreeModel *model; + GtkTreeIter iter; + GtkXText *xtext; + char *actiontext; + int action; + + if (!gtk_tree_selection_get_selected (sel, &model, &iter) || model == NULL) + return; + + xtext = GTK_XTEXT (g_object_get_data (G_OBJECT (key_dialog), "xtext")); + gtk_tree_model_get (model, &iter, ACTION_COLUMN, &actiontext, -1); + + if (actiontext) + { + action = key_get_action_from_string (actiontext); + key_dialog_print_text (xtext, key_actions[action].help); + g_free (actiontext); + } + else + key_dialog_print_text (xtext, _("Select a row to get help information on its Action.")); +} + +static void +key_dialog_close (GtkWidget *wid, gpointer userdata) +{ + gtk_widget_destroy (key_dialog); + key_dialog = NULL; +} + +static void +key_dialog_save (GtkWidget *wid, gpointer userdata) +{ + GtkTreeModel *store = get_store (); + GtkTreeIter iter; + struct key_binding *kb; + char *data1, *data2, *accel, *actiontext; + guint keyval; + GdkModifierType mod; + + if (keybind_list) + { + g_slist_free_full (keybind_list, key_free); + keybind_list = NULL; + } + + if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter)) + { + do + { + kb = g_new0 (struct key_binding, 1); + + gtk_tree_model_get (GTK_TREE_MODEL (store), &iter, ACCEL_COLUMN, &accel, + ACTION_COLUMN, &actiontext, + D1_COLUMN, &data1, + D2_COLUMN, &data2, + -1); + kb->data1 = data1; + kb->data2 = data2; + + if (accel) + { + gtk_accelerator_parse (accel, &keyval, &mod); + + kb->keyval = keyval; + kb->mod = key_modifier_get_valid (mod); + + g_free (accel); + } + + if (actiontext) + { + kb->action = key_get_action_from_string (actiontext); + g_free (actiontext); + } + + if (!accel || !actiontext) + key_free (kb); + else + keybind_list = g_slist_append (keybind_list, kb); + + } + while (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter)); + } + + if (key_save_kbs () == 0) + key_dialog_close (wid, NULL); +} + +static void +key_dialog_add (GtkWidget *wid, gpointer userdata) +{ + GtkTreeView *view = g_object_get_data (G_OBJECT (key_dialog), "view"); + GtkTreeViewColumn *col; + GtkListStore *store = GTK_LIST_STORE (get_store ()); + GtkTreeIter iter; + GtkTreePath *path; + + gtk_list_store_append (store, &iter); + + /* make sure the new row is visible and selected */ + path = gtk_tree_model_get_path (GTK_TREE_MODEL (store), &iter); + col = gtk_tree_view_get_column (view, ACTION_COLUMN); + gtk_tree_view_scroll_to_cell (view, path, NULL, FALSE, 0.0, 0.0); + gtk_tree_view_set_cursor (view, path, col, TRUE); + gtk_tree_path_free (path); +} + +static void +key_dialog_delete (GtkWidget *wid, gpointer userdata) +{ + GtkTreeView *view = g_object_get_data (G_OBJECT (key_dialog), "view"); + GtkListStore *store = GTK_LIST_STORE (gtk_tree_view_get_model (view)); + GtkTreeIter iter; + GtkTreePath *path; + + if (gtkutil_treeview_get_selected (view, &iter, -1)) + { + /* delete this row, select next one */ + if (gtk_list_store_remove (store, &iter)) + { + path = gtk_tree_model_get_path (GTK_TREE_MODEL (store), &iter); + gtk_tree_view_scroll_to_cell (view, path, NULL, TRUE, 1.0, 0.0); + gtk_tree_view_set_cursor (view, path, NULL, FALSE); + gtk_tree_path_free (path); + } + } +} + +static GtkWidget * +key_dialog_treeview_new (GtkWidget *box) +{ + GtkWidget *scroll; + GtkListStore *store, *combostore; + GtkTreeViewColumn *col; + GtkWidget *view; + GtkCellRenderer *render; + int i; + + scroll = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scroll), GTK_SHADOW_IN); + + store = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING); + g_return_val_if_fail (store != NULL, NULL); + + view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store)); + gtk_tree_view_set_fixed_height_mode (GTK_TREE_VIEW (view), TRUE); + gtk_tree_view_set_enable_search (GTK_TREE_VIEW (view), FALSE); + gtk_tree_view_set_reorderable (GTK_TREE_VIEW (view), TRUE); + + g_signal_connect (G_OBJECT (view), "key-press-event", + G_CALLBACK (key_dialog_keypress), NULL); + g_signal_connect (G_OBJECT (gtk_tree_view_get_selection (GTK_TREE_VIEW(view))), + "changed", G_CALLBACK (key_dialog_selection_changed), NULL); + + gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (view), TRUE); + + render = gtk_cell_renderer_accel_new (); + g_object_set (render, "editable", TRUE, +#ifndef WIN32 + "accel-mode", GTK_CELL_RENDERER_ACCEL_MODE_OTHER, +#endif + NULL); + g_signal_connect (G_OBJECT (render), "accel-edited", + G_CALLBACK (key_dialog_set_key), NULL); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), KEY_COLUMN, + "Key", render, + "text", KEY_COLUMN, + NULL); + + render = gtk_cell_renderer_text_new (); + gtk_tree_view_insert_column_with_attributes ( + GTK_TREE_VIEW (view), ACCEL_COLUMN, + "Accel", render, + "text", ACCEL_COLUMN, + NULL); + + combostore = gtk_list_store_new (1, G_TYPE_STRING); + for (i = 0; i <= KEY_MAX_ACTIONS; i++) + { + GtkTreeIter iter; + + if (key_actions[i].name[0]) + { + gtk_list_store_append (combostore, &iter); + gtk_list_store_set (combostore, &iter, 0, key_actions[i].name, -1); + } + } + + render = gtk_cell_renderer_combo_new (); + g_object_set (G_OBJECT (render), "model", combostore, + "has-entry", FALSE, + "editable", TRUE, + "text-column", 0, + NULL); + g_signal_connect (G_OBJECT (render), "edited", + G_CALLBACK (key_dialog_entry_edited), GINT_TO_POINTER (ACTION_COLUMN)); + g_signal_connect (G_OBJECT (render), "changed", + G_CALLBACK (key_dialog_combo_changed), combostore); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), ACTION_COLUMN, + "Action", render, + "text", ACTION_COLUMN, + NULL); + + render = gtk_cell_renderer_text_new (); + g_object_set (render, "editable", TRUE, NULL); + g_signal_connect (G_OBJECT (render), "edited", + G_CALLBACK (key_dialog_entry_edited), GINT_TO_POINTER (D1_COLUMN)); + gtk_tree_view_insert_column_with_attributes ( + GTK_TREE_VIEW (view), D1_COLUMN, + "Data1", render, + "text", D1_COLUMN, + NULL); + + render = gtk_cell_renderer_text_new (); + g_object_set (render, "editable", TRUE, NULL); + g_signal_connect (G_OBJECT (render), "edited", + G_CALLBACK (key_dialog_entry_edited), GINT_TO_POINTER (D2_COLUMN)); + gtk_tree_view_insert_column_with_attributes ( + GTK_TREE_VIEW (view), D2_COLUMN, + "Data2", render, + "text", D2_COLUMN, + NULL); + + col = gtk_tree_view_get_column (GTK_TREE_VIEW (view), KEY_COLUMN); + gtk_tree_view_column_set_fixed_width (col, 200); + gtk_tree_view_column_set_resizable (col, TRUE); + col = gtk_tree_view_get_column (GTK_TREE_VIEW (view), ACCEL_COLUMN); + gtk_tree_view_column_set_visible (col, FALSE); + col = gtk_tree_view_get_column (GTK_TREE_VIEW (view), ACTION_COLUMN); + gtk_tree_view_column_set_fixed_width (col, 160); + col = gtk_tree_view_get_column (GTK_TREE_VIEW (view), D1_COLUMN); + gtk_tree_view_column_set_sizing (col, GTK_TREE_VIEW_COLUMN_AUTOSIZE); + gtk_tree_view_column_set_min_width (col, 80); + gtk_tree_view_column_set_resizable (col, TRUE); + col = gtk_tree_view_get_column (GTK_TREE_VIEW (view), D2_COLUMN); + gtk_tree_view_column_set_sizing (col, GTK_TREE_VIEW_COLUMN_AUTOSIZE); + gtk_tree_view_column_set_min_width (col, 80); + gtk_tree_view_column_set_resizable (col, TRUE); + + gtk_container_add (GTK_CONTAINER (scroll), view); + gtk_container_add (GTK_CONTAINER (box), scroll); + + return view; +} + +static void +key_dialog_load (GtkListStore *store) +{ + struct key_binding *kb = NULL; + char *label_text, *accel_text; + GtkTreeIter iter; + GSList *list = keybind_list; + + while (list) + { + kb = (struct key_binding*)list->data; + + label_text = gtk_accelerator_get_label (kb->keyval, kb->mod); + accel_text = gtk_accelerator_name (kb->keyval, kb->mod); + + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, + KEY_COLUMN, label_text, + ACCEL_COLUMN, accel_text, + ACTION_COLUMN, key_actions[kb->action].name, + D1_COLUMN, kb->data1, + D2_COLUMN, kb->data2, -1); + + g_free (accel_text); + g_free (label_text); + + list = g_slist_next (list); + } +} + +void +key_dialog_show () +{ + GtkWidget *vbox, *box; + GtkWidget *view, *xtext; + GtkListStore *store; + char buf[128]; + + if (key_dialog) + { + mg_bring_tofront (key_dialog); + return; + } + + g_snprintf(buf, sizeof(buf), _("Keyboard Shortcuts - %s"), _(DISPLAY_NAME)); + key_dialog = mg_create_generic_tab ("editkeys", buf, TRUE, FALSE, key_dialog_close, + NULL, 600, 360, &vbox, 0); + + view = key_dialog_treeview_new (vbox); + xtext = gtk_xtext_new (colors, 0); + gtk_box_pack_start (GTK_BOX (vbox), xtext, FALSE, TRUE, 2); + gtk_xtext_set_font (GTK_XTEXT (xtext), prefs.hex_text_font); + + g_object_set_data (G_OBJECT (key_dialog), "view", view); + g_object_set_data (G_OBJECT (key_dialog), "xtext", xtext); + + box = gtk_hbutton_box_new (); + gtk_button_box_set_layout (GTK_BUTTON_BOX (box), GTK_BUTTONBOX_SPREAD); + gtk_box_pack_start (GTK_BOX (vbox), box, FALSE, FALSE, 2); + gtk_container_set_border_width (GTK_CONTAINER (box), 5); + + gtkutil_button (box, GTK_STOCK_NEW, NULL, key_dialog_add, + NULL, _("Add")); + gtkutil_button (box, GTK_STOCK_DELETE, NULL, key_dialog_delete, + NULL, _("Delete")); + gtkutil_button (box, GTK_STOCK_CANCEL, NULL, key_dialog_close, + NULL, _("Cancel")); + gtkutil_button (box, GTK_STOCK_SAVE, NULL, key_dialog_save, + NULL, _("Save")); + + store = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (view))); + key_dialog_load (store); + + gtk_widget_show_all (key_dialog); +} + +static int +key_save_kbs (void) +{ + int fd; + char buf[512]; + char *accel_text; + GSList *list = keybind_list; + struct key_binding *kb; + + fd = hexchat_open_file ("keybindings.conf", O_CREAT | O_TRUNC | O_WRONLY, + 0x180, XOF_DOMODE); + if (fd < 0) + return 1; + write (fd, buf, g_snprintf (buf, 510, "# HexChat key bindings config file\n\n")); + + while (list) + { + kb = list->data; + + accel_text = gtk_accelerator_name (kb->keyval, kb->mod); + + g_snprintf (buf, 510, "ACCEL=%s\n%s\n", accel_text, key_actions[kb->action].name); + write (fd, buf, strlen (buf)); + g_free (accel_text); + + if (kb->data1 && kb->data1[0]) + write (fd, buf, g_snprintf (buf, 510, "D1:%s\n", kb->data1)); + else + write (fd, "D1!\n", 4); + + if (kb->data2 && kb->data2[0]) + write (fd, buf, g_snprintf (buf, 510, "D2:%s\n", kb->data2)); + else + write (fd, "D2!\n", 4); + + write (fd, "\n", 1); + + list = g_slist_next (list); + } + + close (fd); + return 0; +} + +#define KBSTATE_MOD 0 +#define KBSTATE_KEY 1 +#define KBSTATE_ACT 2 +#define KBSTATE_DT1 3 +#define KBSTATE_DT2 4 + +#define STRIP_WHITESPACE \ + while (buf[0] == ' ' || buf[0] == '\t') \ + buf++; \ + len = strlen (buf); \ + while (buf[len] == ' ' || buf[len] == '\t') \ + { \ + buf[len] = 0; \ + len--; \ + } \ + +static inline int +key_load_kbs_helper_mod (char *buf, GdkModifierType *out) +{ + int n, len, mod = 0; + + /* First strip off the fluff */ + STRIP_WHITESPACE + + if (strcmp (buf, "None") == 0) + { + *out = 0; + return 0; + } + for (n = 0; n < len; n++) + { + switch (buf[n]) + { + case 'C': + mod |= GDK_CONTROL_MASK; + break; + case 'A': + mod |= GDK_MOD1_MASK; + break; + case 'S': + mod |= GDK_SHIFT_MASK; + break; + default: + return 1; + } + } + + *out = mod; + return 0; +} + +static int +key_load_kbs (void) +{ + char *buf, *ibuf; + struct stat st; + struct key_binding *kb = NULL; + int fd, len, state = 0, pnt = 0; + guint keyval; + GdkModifierType mod = 0; + off_t size; + + fd = hexchat_open_file ("keybindings.conf", O_RDONLY, 0, 0); + if (fd < 0) + { + ibuf = g_strdup (default_kb_cfg); + size = strlen (default_kb_cfg); + } + else + { + if (fstat (fd, &st) != 0) + { + close (fd); + return 1; + } + + ibuf = g_malloc(st.st_size); + read (fd, ibuf, st.st_size); + size = st.st_size; + close (fd); + } + + if (keybind_list) + { + g_slist_free_full (keybind_list, key_free); + keybind_list = NULL; + } + + while (buf_get_line (ibuf, &buf, &pnt, size)) + { + if (buf[0] == '#') + continue; + if (strlen (buf) == 0) + continue; + + switch (state) + { + case KBSTATE_MOD: + kb = g_new0 (struct key_binding, 1); + + /* New format */ + if (strncmp (buf, "ACCEL=", 6) == 0) + { + buf += 6; + + gtk_accelerator_parse (buf, &keyval, &mod); + + + kb->keyval = keyval; + kb->mod = key_modifier_get_valid (mod); + + state = KBSTATE_ACT; + continue; + } + + if (key_load_kbs_helper_mod (buf, &mod)) + goto corrupt_file; + + kb->mod = mod; + + state = KBSTATE_KEY; + continue; + + case KBSTATE_KEY: + STRIP_WHITESPACE + + keyval = gdk_keyval_from_name (buf); + if (keyval == 0) + { + g_free (ibuf); + return 2; + } + + kb->keyval = keyval; + + state = KBSTATE_ACT; + continue; + + case KBSTATE_ACT: + STRIP_WHITESPACE + + kb->action = key_get_action_from_string (buf); + + if (kb->action == KEY_MAX_ACTIONS + 1) + { + g_free (ibuf); + return 3; + } + + state = KBSTATE_DT1; + continue; + + case KBSTATE_DT1: + case KBSTATE_DT2: + if (state == KBSTATE_DT1) + kb->data1 = kb->data2 = NULL; + + while (buf[0] == ' ' || buf[0] == '\t') + buf++; + + if (buf[0] != 'D') + { + g_free (ibuf); + return 4; + } + + switch (buf[1]) + { + case '1': + if (state != KBSTATE_DT1) + goto corrupt_file; + break; + case '2': + if (state != KBSTATE_DT2) + goto corrupt_file; + break; + default: + goto corrupt_file; + } + + if (buf[2] == ':') + { + len = strlen (buf); + /* Add one for the NULL, subtract 3 for the "Dx:" */ + len++; + len -= 3; + if (state == KBSTATE_DT1) + { + kb->data1 = g_strndup (&buf[3], len); + } else + { + kb->data2 = g_strndup (&buf[3], len); + } + } else if (buf[2] == '!') + { + if (state == KBSTATE_DT1) + kb->data1 = NULL; + else + kb->data2 = NULL; + } + if (state == KBSTATE_DT1) + { + state = KBSTATE_DT2; + continue; + } else + { + keybind_list = g_slist_append (keybind_list, kb); + + state = KBSTATE_MOD; + } + + continue; + } + } + g_free (ibuf); + return 0; + +corrupt_file: + g_free (ibuf); + g_free (kb); + return 5; +} + +/* ***** Key actions start here *********** */ + +/* See the NOTES above --AGL */ + +/* "Run command" */ +static int +key_action_handle_command (GtkWidget * wid, GdkEventKey * evt, char *d1, + char *d2, struct session *sess) +{ + int ii, oi, len; + char out[2048], d = 0; + + if (!d1) + return 0; + + len = strlen (d1); + + /* Replace each "\n" substring with '\n' */ + for (ii = oi = 0; ii < len; ii++) + { + d = d1[ii]; + if (d == '\\') + { + ii++; + d = d1[ii]; + if (d == 'n') + out[oi++] = '\n'; + else if (d == '\\') + out[oi++] = '\\'; + else + { + out[oi++] = '\\'; + out[oi++] = d; + } + continue; + } + out[oi++] = d; + } + out[oi] = 0; + + handle_multiline (sess, out, 0, 0); + return 0; +} + +/* + * Check if the given session is inside the main window. This predicate + * is passed to lastact_getfirst() as a way to filter out detached sessions. + * XXX: Consider moving this in a different file? + */ +static int +session_check_is_tab(session *sess) +{ + if (!sess || !sess->gui) + return FALSE; + + return (sess->gui->is_tab); +} + +static int +key_action_page_switch (GtkWidget * wid, GdkEventKey * evt, char *d1, + char *d2, struct session *sess) +{ + session *newsess; + int len, i, num; + + if (!d1) + return 1; + + len = strlen (d1); + if (!len) + return 1; + + if (strcasecmp(d1, "auto") == 0) + { + /* Auto switch makes no sense in detached sessions */ + if (!sess->gui->is_tab) + return 1; + + /* Obtain a session with recent activity */ + newsess = lastact_getfirst(session_check_is_tab); + + if (newsess) + { + /* + * Only sessions in the current window should be considered (i.e. + * we don't want to move the focus on a different window). This + * call could, in theory, do this, but we checked before that + * newsess->gui->is_tab and sess->gui->is_tab. + */ + mg_bring_tofront_sess(newsess); + return 0; + } + else + return 1; + } + + for (i = 0; i < len; i++) + { + if (d1[i] < '0' || d1[i] > '9') + { + if (i == 0 && (d1[i] == '+' || d1[i] == '-')) + continue; + else + return 1; + } + } + + num = atoi (d1); + if (!d2) + num--; + if (!d2 || d2[0] == 0) + mg_switch_page (FALSE, num); + else + mg_switch_page (TRUE, num); + return 0; +} + +int +key_action_insert (GtkWidget * wid, GdkEventKey * evt, char *d1, char *d2, + struct session *sess) +{ + int tmp_pos; + + if (!d1) + return 1; + + tmp_pos = SPELL_ENTRY_GET_POS (wid); + SPELL_ENTRY_INSERT (wid, d1, strlen (d1), &tmp_pos); + SPELL_ENTRY_SET_POS (wid, tmp_pos); + return 2; +} + +/* handles PageUp/Down keys */ +static int +key_action_scroll_page (GtkWidget * wid, GdkEventKey * evt, char *d1, + char *d2, struct session *sess) +{ + int value, end; + GtkAdjustment *adj; + enum scroll_type { PAGE_TOP, PAGE_BOTTOM, PAGE_UP, PAGE_DOWN, LINE_UP, LINE_DOWN }; + int type = PAGE_DOWN; + + if (d1) + { + if (!g_ascii_strcasecmp (d1, "top")) + type = PAGE_TOP; + else if (!g_ascii_strcasecmp (d1, "bottom")) + type = PAGE_BOTTOM; + else if (!g_ascii_strcasecmp (d1, "up")) + type = PAGE_UP; + else if (!g_ascii_strcasecmp (d1, "down")) + type = PAGE_DOWN; + else if (!g_ascii_strcasecmp (d1, "+1")) + type = LINE_DOWN; + else if (!g_ascii_strcasecmp (d1, "-1")) + type = LINE_UP; + } + + if (!sess) + return 0; + + adj = gtk_range_get_adjustment (GTK_RANGE (sess->gui->vscrollbar)); + end = gtk_adjustment_get_upper (adj) - gtk_adjustment_get_lower (adj) - gtk_adjustment_get_page_size (adj); + + switch (type) + { + case PAGE_TOP: + value = 0; + break; + + case PAGE_BOTTOM: + value = end; + break; + + case PAGE_UP: + value = gtk_adjustment_get_value (adj) - (gtk_adjustment_get_page_size (adj) - 1); + break; + + case PAGE_DOWN: + value = gtk_adjustment_get_value (adj) + (gtk_adjustment_get_page_size (adj) - 1); + break; + + case LINE_UP: + value = gtk_adjustment_get_value (adj) - 1.0; + break; + + case LINE_DOWN: + value = gtk_adjustment_get_value (adj) + 1.0; + break; + } + + if (value < 0) + value = 0; + if (value > end) + value = end; + + gtk_adjustment_set_value (adj, value); + + return 0; +} + +static int +key_action_set_buffer (GtkWidget * wid, GdkEventKey * evt, char *d1, char *d2, + struct session *sess) +{ + if (!d1) + return 1; + if (d1[0] == 0) + return 1; + + SPELL_ENTRY_SET_TEXT (wid, d1); + SPELL_ENTRY_SET_POS (wid, -1); + + return 2; +} + +static int +key_action_history_up (GtkWidget * wid, GdkEventKey * ent, char *d1, char *d2, + struct session *sess) +{ + char *new_line; + + new_line = history_up (&sess->history, SPELL_ENTRY_GET_TEXT (wid)); + if (new_line) + { + SPELL_ENTRY_SET_TEXT (wid, new_line); + SPELL_ENTRY_SET_POS (wid, -1); + } + + return 2; +} + +static int +key_action_history_down (GtkWidget * wid, GdkEventKey * ent, char *d1, + char *d2, struct session *sess) +{ + char *new_line; + + new_line = history_down (&sess->history); + if (new_line) + { + SPELL_ENTRY_SET_TEXT (wid, new_line); + SPELL_ENTRY_SET_POS (wid, -1); + } + + return 2; +} + +/* old data that we reuse */ +static struct gcomp_data old_gcomp; + +/* work on the data, ie return only channels */ +static int +double_chan_cb (session *lsess, GList **list) +{ + if (lsess->type == SESS_CHANNEL) + *list = g_list_prepend(*list, lsess->channel); + return TRUE; +} + +/* convert a slist -> list. */ +static GList * +chanlist_double_list (GSList *inlist) +{ + GList *list = NULL; + g_slist_foreach(inlist, (GFunc)double_chan_cb, &list); + return list; +} + +/* handle commands */ +static int +double_cmd_cb (struct popup *pop, GList **list) +{ + *list = g_list_prepend(*list, pop->name); + return TRUE; +} + +/* convert a slist -> list. */ +static GList * +cmdlist_double_list (GSList *inlist) +{ + GList *list = NULL; + g_slist_foreach (inlist, (GFunc)double_cmd_cb, &list); + return list; +} + +static char * +gcomp_nick_func (char *data) +{ + if (data) + return ((struct User *)data)->nick; + return ""; +} + +void +key_action_tab_clean(void) +{ + if (old_gcomp.elen) + { + old_gcomp.data[0] = 0; + old_gcomp.elen = 0; + } +} + +/* For use in sorting the user list for completion + +This sorts everyone by the last talked time except your own nick +which is forced to the bottom of the list to avoid completing your +own name, which is very unlikely. +*/ +static int +talked_recent_cmp (struct User *a, struct User *b) +{ + if (a->me) + return -1; + + if (b->me) + return 1; + + if (a->lasttalk < b->lasttalk) + return -1; + + if (a->lasttalk > b->lasttalk) + return 1; + + return 0; +} + +#define COMP_BUF 2048 + +static inline glong +len_to_offset (const char *str, glong len) +{ + return g_utf8_pointer_to_offset (str, str + len); +} + +static inline glong +offset_to_len (const char *str, glong offset) +{ + return g_utf8_offset_to_pointer (str, offset) - str; +} + +static int +key_action_tab_comp (GtkWidget *t, GdkEventKey *entry, char *d1, char *d2, + struct session *sess) +{ + int len = 0, elen = 0, i = 0, cursor_pos, ent_start = 0, comp = 0, prefix_len, skip_len = 0; + gboolean is_nick = FALSE, is_cmd = FALSE, found = FALSE, has_nick_prefix = FALSE; + char ent[CHANLEN], *postfix = NULL, *result, *ch; + GList *list = NULL, *tmp_list = NULL; + const char *text; + GCompletion *gcomp = NULL; + GString *buf; + + /* force the IM Context to reset */ + SPELL_ENTRY_SET_EDITABLE (t, FALSE); + SPELL_ENTRY_SET_EDITABLE (t, TRUE); + + text = SPELL_ENTRY_GET_TEXT (t); + if (text[0] == 0) + return 1; + + len = g_utf8_strlen (text, -1); /* must be null terminated */ + + cursor_pos = SPELL_ENTRY_GET_POS (t); + + /* handle "nick: " or "nick " or "#channel "*/ + ch = g_utf8_find_prev_char(text, g_utf8_offset_to_pointer(text,cursor_pos)); + if (ch && ch[0] == ' ') + { + skip_len++; + ch = g_utf8_find_prev_char(text, ch); + if (!ch) + return 2; + + cursor_pos = g_utf8_pointer_to_offset(text, ch); + if (cursor_pos && (g_utf8_get_char_validated(ch, -1) == ':' || + g_utf8_get_char_validated(ch, -1) == ',' || + g_utf8_get_char_validated (ch, -1) == g_utf8_get_char_validated (prefs.hex_completion_suffix, -1))) + { + skip_len++; + } + else + cursor_pos = g_utf8_pointer_to_offset(text, g_utf8_offset_to_pointer(ch, 1)); + } + + comp = skip_len; + + /* store the text following the cursor for reinsertion later */ + if ((cursor_pos + skip_len) < len) + postfix = g_utf8_offset_to_pointer(text, cursor_pos + skip_len); + + for (ent_start = cursor_pos; ; --ent_start) + { + if (ent_start == 0) + break; + ch = g_utf8_offset_to_pointer(text, ent_start - 1); + if (ch && ch[0] == ' ') + break; + } + + if (ent_start == 0 && text[0] == prefs.hex_input_command_char[0]) + { + ent_start++; + is_cmd = TRUE; + } + else if (strchr (sess->server->chantypes, text[ent_start]) == NULL) + { + is_nick = TRUE; + if (strchr (sess->server->nick_prefixes, text[ent_start]) != NULL) + { + if (ent_start == 0) + has_nick_prefix = TRUE; + ent_start++; + } + } + + prefix_len = ent_start; + elen = cursor_pos - ent_start; + + g_utf8_strncpy (ent, g_utf8_offset_to_pointer (text, prefix_len), elen); + + if (sess->type == SESS_DIALOG && is_nick) + { + /* tab in a dialog completes the other person's name */ + if (rfc_ncasecmp (sess->channel, ent, elen) == 0) + { + result = sess->channel; + is_nick = FALSE; + } + else + return 2; + } + else + { + if (is_nick) + { + gcomp = g_completion_new((GCompletionFunc)gcomp_nick_func); + tmp_list = userlist_double_list(sess); /* create a temp list so we can free the memory */ + if (prefs.hex_completion_sort == 1) /* sort in last-talk order? */ + tmp_list = g_list_sort (tmp_list, (void *)talked_recent_cmp); + } + else + { + gcomp = g_completion_new (NULL); + if (is_cmd) + { + tmp_list = cmdlist_double_list (command_list); + for(i = 0; xc_cmds[i].name != NULL ; i++) + { + tmp_list = g_list_prepend (tmp_list, xc_cmds[i].name); + } + tmp_list = plugin_command_list(tmp_list); + } + else + tmp_list = chanlist_double_list (sess_list); + } + tmp_list = g_list_reverse(tmp_list); /* make the comp entries turn up in the right order */ + g_completion_set_compare (gcomp, (GCompletionStrncmpFunc)rfc_ncasecmp); + if (tmp_list) + { + g_completion_add_items (gcomp, tmp_list); + g_list_free (tmp_list); + } + + if (comp && !(rfc_ncasecmp(old_gcomp.data, ent, old_gcomp.elen) == 0)) + { + key_action_tab_clean (); + comp = 0; + } + + list = g_completion_complete_utf8 (gcomp, comp ? old_gcomp.data : ent, &result); + + if (result == NULL) /* No matches found */ + { + g_completion_free(gcomp); + return 2; + } + + if (comp) /* existing completion */ + { + while(list) /* find the current entry */ + { + if(rfc_ncasecmp(list->data, ent, elen) == 0) + { + found = TRUE; + break; + } + list = list->next; + } + + if (found) + { + if (!(d1 && d1[0])) /* not holding down shift */ + { + if (g_list_next(list) == NULL) + list = g_list_first(list); + else + list = g_list_next(list); + } + else + { + if (g_list_previous(list) == NULL) + list = g_list_last(list); + else + list = g_list_previous(list); + } + g_free(result); + result = (char*)list->data; + } + else + { + g_free(result); + g_completion_free(gcomp); + return 2; + } + } + else + { + strcpy(old_gcomp.data, ent); + old_gcomp.elen = elen; + + /* Get the first nick and put out the data for future nickcompletes */ + if (prefs.hex_completion_amount > 0 && g_list_length (list) <= (guint) prefs.hex_completion_amount) + { + g_free(result); + result = (char*)list->data; + } + else + { + /* bash style completion */ + if (g_list_next(list) != NULL) + { + buf = g_string_sized_new (MAX(COMP_BUF, len + NICKLEN)); + if (strlen (result) > elen) /* the largest common prefix is larger than nick, change the data */ + { + if (prefix_len) + g_string_append_len (buf, text, offset_to_len (text, prefix_len)); + g_string_append (buf, result); + cursor_pos = buf->len; + g_free(result); + if (postfix) + { + g_string_append_c (buf, ' '); + g_string_append (buf, postfix); + } + SPELL_ENTRY_SET_TEXT (t, buf->str); + SPELL_ENTRY_SET_POS (t, len_to_offset (buf->str, cursor_pos)); + g_string_erase (buf, 0, -1); + } + else + g_free(result); + + while (list) + { + len = buf->len; + elen = strlen (list->data); /* next item to add */ + if (len + elen + 2 >= COMP_BUF) /* +2 is space + null */ + { + PrintText (sess, buf->str); + g_string_erase (buf, 0, -1); + } + g_string_append (buf, (char*)list->data); + g_string_append_c (buf, ' '); + list = list->next; + } + PrintText (sess, buf->str); + g_completion_free(gcomp); + g_string_free (buf, TRUE); + return 2; + } + /* Only one matching entry */ + g_free(result); + result = list->data; + } + } + } + + if(result) + { + buf = g_string_sized_new (len + NICKLEN); + if (prefix_len) + g_string_append_len (buf, text, offset_to_len (text, prefix_len)); + g_string_append (buf, result); + if((!prefix_len || has_nick_prefix) && is_nick && prefs.hex_completion_suffix[0] != '\0') + g_string_append_unichar (buf, g_utf8_get_char_validated (prefs.hex_completion_suffix, -1)); + g_string_append_c (buf, ' '); + cursor_pos = buf->len; + if (postfix) + g_string_append (buf, postfix); + SPELL_ENTRY_SET_TEXT (t, buf->str); + SPELL_ENTRY_SET_POS (t, len_to_offset (buf->str, cursor_pos)); + g_string_free (buf, TRUE); + } + if (gcomp) + g_completion_free(gcomp); + return 2; +} +#undef COMP_BUF + +static int +key_action_comp_chng (GtkWidget * wid, GdkEventKey * ent, char *d1, char *d2, + struct session *sess) +{ + key_action_tab_comp(wid, ent, d1, d2, sess); + return 2; +} + + +static int +key_action_replace (GtkWidget * wid, GdkEventKey * ent, char *d1, char *d2, + struct session *sess) +{ + replace_handle (wid); + return 1; +} + + +static int +key_action_move_tab_left (GtkWidget * wid, GdkEventKey * ent, char *d1, + char *d2, struct session *sess) +{ + mg_move_tab (sess, +1); + return 2; /* don't allow default action */ +} + +static int +key_action_move_tab_right (GtkWidget * wid, GdkEventKey * ent, char *d1, + char *d2, struct session *sess) +{ + mg_move_tab (sess, -1); + return 2; /* -''- */ +} + +static int +key_action_move_tab_family_left (GtkWidget * wid, GdkEventKey * ent, char *d1, + char *d2, struct session *sess) +{ + mg_move_tab_family (sess, +1); + return 2; /* don't allow default action */ +} + +static int +key_action_move_tab_family_right (GtkWidget * wid, GdkEventKey * ent, char *d1, + char *d2, struct session *sess) +{ + mg_move_tab_family (sess, -1); + return 2; /* -''- */ +} + +static int +key_action_put_history (GtkWidget * wid, GdkEventKey * ent, char *d1, + char *d2, struct session *sess) +{ + history_add (&sess->history, SPELL_ENTRY_GET_TEXT (wid)); + SPELL_ENTRY_SET_TEXT (wid, ""); + return 2; /* -''- */ +} + + +/* -------- */ + +static void +replace_handle (GtkWidget *t) +{ + const char *text, *postfix_pnt; + struct popup *pop; + GSList *list = replace_list; + char word[256]; + char postfix[256]; + char outbuf[4096]; + int c, len, xlen; + + text = SPELL_ENTRY_GET_TEXT (t); + + len = strlen (text); + if (len < 1) + return; + + for (c = len - 1; c > 0; c--) + { + if (text[c] == ' ') + break; + } + if (text[c] == ' ') + c++; + xlen = c; + if (len - c >= (sizeof (word) - 12)) + return; + if (len - c < 1) + return; + memcpy (word, &text[c], len - c); + word[len - c] = 0; + len = strlen (word); + if (word[0] == '\'' && word[len] == '\'') + return; + postfix_pnt = NULL; + for (c = 0; c < len; c++) + { + if (word[c] == '\'') + { + postfix_pnt = &word[c + 1]; + word[c] = 0; + break; + } + } + + if (postfix_pnt != NULL) + { + if (strlen (postfix_pnt) > sizeof (postfix) - 12) + return; + strcpy (postfix, postfix_pnt); + } + while (list) + { + pop = (struct popup *) list->data; + if (strcmp (pop->name, word) == 0) + { + memcpy (outbuf, text, xlen); + outbuf[xlen] = 0; + if (postfix_pnt == NULL) + g_snprintf (word, sizeof (word), "%s", pop->cmd); + else + g_snprintf (word, sizeof (word), "%s%s", pop->cmd, postfix); + g_strlcat (outbuf, word, sizeof(outbuf)); + SPELL_ENTRY_SET_TEXT (t, outbuf); + SPELL_ENTRY_SET_POS (t, -1); + return; + } + list = list->next; + } +} + diff --git a/hexchat/src/fe-gtk/fkeys.h b/hexchat/src/fe-gtk/fkeys.h new file mode 100644 index 0000000..621c872 --- /dev/null +++ b/hexchat/src/fe-gtk/fkeys.h @@ -0,0 +1,38 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_FKEYS_H +#define HEXCHAT_FKEYS_H + +/* These are cp'ed from history.c --AGL */ +#define STATE_SHIFT GDK_SHIFT_MASK +#define STATE_ALT GDK_MOD1_MASK +#ifdef __APPLE__ +#define STATE_CTRL GDK_META_MASK +#else +#define STATE_CTRL GDK_CONTROL_MASK +#endif + +void key_init (void); +void key_dialog_show (void); +int key_handle_key_press (GtkWidget * wid, GdkEventKey * evt, session *sess); +int key_action_insert (GtkWidget * wid, GdkEventKey * evt, char *d1, char *d2, + session *sess); + +#endif diff --git a/hexchat/src/fe-gtk/gtkutil.c b/hexchat/src/fe-gtk/gtkutil.c new file mode 100644 index 0000000..98a971f --- /dev/null +++ b/hexchat/src/fe-gtk/gtkutil.c @@ -0,0 +1,807 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ +#define _FILE_OFFSET_BITS 64 /* allow selection of large files */ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <stdarg.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> + +#include "fe-gtk.h" + +#include <gdk/gdkkeysyms.h> +#if defined (WIN32) || defined (__APPLE__) +#include <pango/pangocairo.h> +#endif + +#ifdef GDK_WINDOWING_X11 +#include <gdk/gdkx.h> +#endif + +#include "../common/hexchat.h" +#include "../common/fe.h" +#include "../common/util.h" +#include "../common/cfgfiles.h" +#include "../common/hexchatc.h" +#include "../common/typedef.h" +#include "gtkutil.h" +#include "pixmaps.h" + +#ifdef WIN32 +#include <io.h> +#else +#include <unistd.h> +#endif + +/* gtkutil.c, just some gtk wrappers */ + +extern void path_part (char *file, char *path, int pathlen); + +struct file_req +{ + GtkWidget *dialog; + void *userdata; + filereqcallback callback; + int flags; /* FRF_* flags */ +}; + +static void +gtkutil_file_req_destroy (GtkWidget * wid, struct file_req *freq) +{ + freq->callback (freq->userdata, NULL); + g_free (freq); +} + +static void +gtkutil_check_file (char *filename, struct file_req *freq) +{ + int axs = FALSE; + + GFile *file = g_file_new_for_path (filename); + + if (freq->flags & FRF_WRITE) + { + GFile *parent = g_file_get_parent (file); + + GFileInfo *fi = g_file_query_info (parent, G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE, G_FILE_QUERY_INFO_NONE, NULL, NULL); + if (fi != NULL) + { + if (g_file_info_get_attribute_boolean (fi, G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE)) + { + axs = TRUE; + } + + g_object_unref (fi); + } + + g_object_unref (parent); + } + else + { + GFileInfo *fi = g_file_query_info (file, G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE, G_FILE_QUERY_INFO_NONE, NULL, NULL); + + if (fi != NULL) + { + if (g_file_info_get_file_type (fi) != G_FILE_TYPE_DIRECTORY || (freq->flags & FRF_CHOOSEFOLDER)) + { + axs = TRUE; + } + + g_object_unref (fi); + } + } + + g_object_unref (file); + + if (axs) + { + char *filename_utf8 = g_filename_to_utf8 (filename, -1, NULL, NULL, NULL); + if (filename_utf8 != NULL) + { + freq->callback (freq->userdata, filename_utf8); + g_free (filename_utf8); + } + else + { + fe_message ("Filename encoding is corrupt.", FE_MSG_ERROR); + } + } + else + { + if (freq->flags & FRF_WRITE) + { + fe_message (_("Cannot write to that file."), FE_MSG_ERROR); + } + else + { + fe_message (_("Cannot read that file."), FE_MSG_ERROR); + } + } +} + +static void +gtkutil_file_req_done (GtkWidget * wid, struct file_req *freq) +{ + GSList *files, *cur; + GtkFileChooser *fs = GTK_FILE_CHOOSER (freq->dialog); + + if (freq->flags & FRF_MULTIPLE) + { + files = cur = gtk_file_chooser_get_filenames (fs); + while (cur) + { + gtkutil_check_file (cur->data, freq); + g_free (cur->data); + cur = cur->next; + } + if (files) + g_slist_free (files); + } + else + { + if (freq->flags & FRF_CHOOSEFOLDER) + { + gchar *filename = gtk_file_chooser_get_current_folder (fs); + gtkutil_check_file (filename, freq); + g_free (filename); + } + else + { + gchar *filename = gtk_file_chooser_get_filename (fs); + gtkutil_check_file (gtk_file_chooser_get_filename (fs), freq); + g_free (filename); + } + } + + /* this should call the "destroy" cb, where we free(freq) */ + gtk_widget_destroy (freq->dialog); +} + +static void +gtkutil_file_req_response (GtkWidget *dialog, gint res, struct file_req *freq) +{ + switch (res) + { + case GTK_RESPONSE_ACCEPT: + gtkutil_file_req_done (dialog, freq); + break; + + case GTK_RESPONSE_CANCEL: + /* this should call the "destroy" cb, where we free(freq) */ + gtk_widget_destroy (freq->dialog); + } +} + +void +gtkutil_file_req (GtkWindow *parent, const char *title, void *callback, void *userdata, char *filter, char *extensions, + int flags) +{ + struct file_req *freq; + GtkWidget *dialog; + GtkFileFilter *filefilter; + extern char *get_xdir_fs (void); + char *token; + char *tokenbuffer; + + if (flags & FRF_WRITE) + { + dialog = gtk_file_chooser_dialog_new (title, NULL, + GTK_FILE_CHOOSER_ACTION_SAVE, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, + NULL); + + if (!(flags & FRF_NOASKOVERWRITE)) + gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog), TRUE); + } + else + dialog = gtk_file_chooser_dialog_new (title, NULL, + GTK_FILE_CHOOSER_ACTION_OPEN, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, + NULL); + + if (filter && filter[0] && (flags & FRF_FILTERISINITIAL)) + { + if (flags & FRF_WRITE) + { + char temp[1024]; + path_part (filter, temp, sizeof (temp)); + gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), temp); + gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), file_part (filter)); + } + else + gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), filter); + } + else if (!(flags & FRF_RECENTLYUSED)) + gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), get_xdir ()); + + if (flags & FRF_MULTIPLE) + gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (dialog), TRUE); + if (flags & FRF_CHOOSEFOLDER) + gtk_file_chooser_set_action (GTK_FILE_CHOOSER (dialog), GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER); + + if ((flags & FRF_EXTENSIONS || flags & FRF_MIMETYPES) && extensions != NULL) + { + filefilter = gtk_file_filter_new (); + tokenbuffer = g_strdup (extensions); + token = strtok (tokenbuffer, ";"); + + while (token != NULL) + { + if (flags & FRF_EXTENSIONS) + gtk_file_filter_add_pattern (filefilter, token); + else + gtk_file_filter_add_mime_type (filefilter, token); + token = strtok (NULL, ";"); + } + + g_free (tokenbuffer); + gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (dialog), filefilter); + } + + gtk_file_chooser_add_shortcut_folder (GTK_FILE_CHOOSER (dialog), get_xdir (), NULL); + + freq = g_new (struct file_req, 1); + freq->dialog = dialog; + freq->flags = flags; + freq->callback = callback; + freq->userdata = userdata; + + g_signal_connect (G_OBJECT (dialog), "response", + G_CALLBACK (gtkutil_file_req_response), freq); + g_signal_connect (G_OBJECT (dialog), "destroy", + G_CALLBACK (gtkutil_file_req_destroy), (gpointer) freq); + + if (parent) + gtk_window_set_transient_for (GTK_WINDOW (dialog), parent); + + if (flags & FRF_MODAL) + { + g_assert (parent); + gtk_window_set_modal (GTK_WINDOW (dialog), TRUE); + } + + gtk_widget_show (dialog); +} + +static gboolean +gtkutil_esc_destroy (GtkWidget * win, GdkEventKey * key, gpointer userdata) +{ + GtkWidget *wid; + + /* Destroy the window of detached utils */ + if (!gtk_widget_is_toplevel (win)) + { + if (gdk_window_get_type_hint (gtk_widget_get_window (win)) == GDK_WINDOW_TYPE_HINT_DIALOG) + wid = gtk_widget_get_parent (win); + else + return FALSE; + } + else + wid = win; + + if (key->keyval == GDK_KEY_Escape) + gtk_widget_destroy (wid); + + return FALSE; +} + +void +gtkutil_destroy_on_esc (GtkWidget *win) +{ + g_signal_connect (G_OBJECT (win), "key_press_event", G_CALLBACK (gtkutil_esc_destroy), win); +} + +void +gtkutil_destroy (GtkWidget * igad, GtkWidget * dgad) +{ + gtk_widget_destroy (dgad); +} + +static void +gtkutil_get_str_response (GtkDialog *dialog, gint arg1, gpointer entry) +{ + void (*callback) (int cancel, char *text, void *user_data); + char *text; + void *user_data; + + text = (char *) gtk_entry_get_text (GTK_ENTRY (entry)); + callback = g_object_get_data (G_OBJECT (dialog), "cb"); + user_data = g_object_get_data (G_OBJECT (dialog), "ud"); + + switch (arg1) + { + case GTK_RESPONSE_REJECT: + callback (TRUE, text, user_data); + gtk_widget_destroy (GTK_WIDGET (dialog)); + break; + case GTK_RESPONSE_ACCEPT: + callback (FALSE, text, user_data); + gtk_widget_destroy (GTK_WIDGET (dialog)); + break; + } +} + +static void +gtkutil_str_enter (GtkWidget *entry, GtkWidget *dialog) +{ + gtk_dialog_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT); +} + +void +fe_get_str (char *msg, char *def, void *callback, void *userdata) +{ + GtkWidget *dialog; + GtkWidget *entry; + GtkWidget *hbox; + GtkWidget *label; + extern GtkWidget *parent_window; + + dialog = gtk_dialog_new_with_buttons (msg, NULL, 0, + GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, + GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, + NULL); + + gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (parent_window)); + gtk_box_set_homogeneous (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), TRUE); + + if (userdata == (void *)1) /* nick box is usually on the very bottom, make it centered */ + { + gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER); + } + else + { + gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); + } + + hbox = gtk_hbox_new (TRUE, 0); + + g_object_set_data (G_OBJECT (dialog), "cb", callback); + g_object_set_data (G_OBJECT (dialog), "ud", userdata); + + entry = gtk_entry_new (); + g_signal_connect (G_OBJECT (entry), "activate", + G_CALLBACK (gtkutil_str_enter), dialog); + gtk_entry_set_text (GTK_ENTRY (entry), def); + gtk_box_pack_end (GTK_BOX (hbox), entry, 0, 0, 0); + + label = gtk_label_new (msg); + gtk_box_pack_end (GTK_BOX (hbox), label, 0, 0, 0); + + g_signal_connect (G_OBJECT (dialog), "response", + G_CALLBACK (gtkutil_get_str_response), entry); + + gtk_container_add (GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), hbox); + + gtk_widget_show_all (dialog); +} + +static void +gtkutil_get_number_response (GtkDialog *dialog, gint arg1, gpointer spin) +{ + void (*callback) (int cancel, int value, void *user_data); + int num; + void *user_data; + + num = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (spin)); + callback = g_object_get_data (G_OBJECT (dialog), "cb"); + user_data = g_object_get_data (G_OBJECT (dialog), "ud"); + + switch (arg1) + { + case GTK_RESPONSE_REJECT: + callback (TRUE, num, user_data); + gtk_widget_destroy (GTK_WIDGET (dialog)); + break; + case GTK_RESPONSE_ACCEPT: + callback (FALSE, num, user_data); + gtk_widget_destroy (GTK_WIDGET (dialog)); + break; + } +} + +static void +gtkutil_get_bool_response (GtkDialog *dialog, gint arg1, gpointer spin) +{ + void (*callback) (int value, void *user_data); + void *user_data; + + callback = g_object_get_data (G_OBJECT (dialog), "cb"); + user_data = g_object_get_data (G_OBJECT (dialog), "ud"); + + switch (arg1) + { + case GTK_RESPONSE_REJECT: + callback (0, user_data); + gtk_widget_destroy (GTK_WIDGET (dialog)); + break; + case GTK_RESPONSE_ACCEPT: + callback (1, user_data); + gtk_widget_destroy (GTK_WIDGET (dialog)); + break; + } +} + +void +fe_get_int (char *msg, int def, void *callback, void *userdata) +{ + GtkWidget *dialog; + GtkWidget *spin; + GtkWidget *hbox; + GtkWidget *label; + GtkAdjustment *adj; + extern GtkWidget *parent_window; + + dialog = gtk_dialog_new_with_buttons (msg, NULL, 0, + GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, + GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, + NULL); + gtk_box_set_homogeneous (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), TRUE); + gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); + gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (parent_window)); + + hbox = gtk_hbox_new (TRUE, 0); + + g_object_set_data (G_OBJECT (dialog), "cb", callback); + g_object_set_data (G_OBJECT (dialog), "ud", userdata); + + spin = gtk_spin_button_new (NULL, 1, 0); + adj = gtk_spin_button_get_adjustment ((GtkSpinButton*)spin); + gtk_adjustment_set_lower (adj, 0); + gtk_adjustment_set_upper (adj, 1024); + gtk_adjustment_set_step_increment (adj, 1); + gtk_adjustment_changed (adj); + gtk_spin_button_set_value ((GtkSpinButton*)spin, def); + gtk_box_pack_end (GTK_BOX (hbox), spin, 0, 0, 0); + + label = gtk_label_new (msg); + gtk_box_pack_end (GTK_BOX (hbox), label, 0, 0, 0); + + g_signal_connect (G_OBJECT (dialog), "response", + G_CALLBACK (gtkutil_get_number_response), spin); + + gtk_container_add (GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), hbox); + + gtk_widget_show_all (dialog); +} + +void +fe_get_bool (char *title, char *prompt, void *callback, void *userdata) +{ + GtkWidget *dialog; + GtkWidget *prompt_label; + extern GtkWidget *parent_window; + + dialog = gtk_dialog_new_with_buttons (title, NULL, 0, + GTK_STOCK_NO, GTK_RESPONSE_REJECT, + GTK_STOCK_YES, GTK_RESPONSE_ACCEPT, + NULL); + gtk_box_set_homogeneous (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), TRUE); + gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); + gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (parent_window)); + + + g_object_set_data (G_OBJECT (dialog), "cb", callback); + g_object_set_data (G_OBJECT (dialog), "ud", userdata); + + prompt_label = gtk_label_new (prompt); + + g_signal_connect (G_OBJECT (dialog), "response", + G_CALLBACK (gtkutil_get_bool_response), NULL); + + gtk_container_add (GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), prompt_label); + + gtk_widget_show_all (dialog); +} + +GtkWidget * +gtkutil_button (GtkWidget *box, char *stock, char *tip, void *callback, + void *userdata, char *labeltext) +{ + GtkWidget *wid, *img, *bbox; + + wid = gtk_button_new (); + + if (labeltext) + { + gtk_button_set_label (GTK_BUTTON (wid), labeltext); + gtk_button_set_image (GTK_BUTTON (wid), gtk_image_new_from_stock (stock, GTK_ICON_SIZE_MENU)); + gtk_button_set_use_underline (GTK_BUTTON (wid), TRUE); + if (box) + gtk_container_add (GTK_CONTAINER (box), wid); + } + else + { + bbox = gtk_hbox_new (0, 0); + gtk_container_add (GTK_CONTAINER (wid), bbox); + gtk_widget_show (bbox); + + img = gtk_image_new_from_stock (stock, GTK_ICON_SIZE_MENU); + gtk_container_add (GTK_CONTAINER (bbox), img); + gtk_widget_show (img); + gtk_box_pack_start (GTK_BOX (box), wid, 0, 0, 0); + } + + g_signal_connect (G_OBJECT (wid), "clicked", + G_CALLBACK (callback), userdata); + gtk_widget_show (wid); + if (tip) + gtk_widget_set_tooltip_text (wid, tip); + + return wid; +} + +void +gtkutil_label_new (char *text, GtkWidget * box) +{ + GtkWidget *label = gtk_label_new (text); + gtk_container_add (GTK_CONTAINER (box), label); + gtk_widget_show (label); +} + +GtkWidget * +gtkutil_entry_new (int max, GtkWidget * box, void *callback, + gpointer userdata) +{ + GtkWidget *entry = gtk_entry_new (); + gtk_entry_set_max_length (GTK_ENTRY (entry), max); + gtk_container_add (GTK_CONTAINER (box), entry); + if (callback) + g_signal_connect (G_OBJECT (entry), "changed", + G_CALLBACK (callback), userdata); + gtk_widget_show (entry); + return entry; +} + +void +show_and_unfocus (GtkWidget * wid) +{ + gtk_widget_set_can_focus (wid, FALSE); + gtk_widget_show (wid); +} + +void +gtkutil_set_icon (GtkWidget *win) +{ +#ifndef WIN32 + /* FIXME: Magically breaks icon rendering in most + * (sub)windows, but OFC only on Windows. GTK <3 + */ + gtk_window_set_icon (GTK_WINDOW (win), pix_hexchat); +#endif +} + +extern GtkWidget *parent_window; /* maingui.c */ + +GtkWidget * +gtkutil_window_new (char *title, char *role, int width, int height, int flags) +{ + GtkWidget *win; + + win = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtkutil_set_icon (win); +#ifdef WIN32 + gtk_window_set_wmclass (GTK_WINDOW (win), "HexChat", "hexchat"); +#endif + gtk_window_set_title (GTK_WINDOW (win), title); + gtk_window_set_default_size (GTK_WINDOW (win), width, height); + gtk_window_set_role (GTK_WINDOW (win), role); + if (flags & 1) + gtk_window_set_position (GTK_WINDOW (win), GTK_WIN_POS_MOUSE); + if ((flags & 2) && parent_window) + { + gtk_window_set_type_hint (GTK_WINDOW (win), GDK_WINDOW_TYPE_HINT_DIALOG); + gtk_window_set_transient_for (GTK_WINDOW (win), GTK_WINDOW (parent_window)); + gtk_window_set_destroy_with_parent (GTK_WINDOW (win), TRUE); + } + + return win; +} + +/* pass NULL as selection to paste to both clipboard & X11 text */ +void +gtkutil_copy_to_clipboard (GtkWidget *widget, GdkAtom selection, + const gchar *str) +{ + GtkWidget *win; + GtkClipboard *clip, *clip2; + + win = gtk_widget_get_toplevel (GTK_WIDGET (widget)); + if (gtk_widget_is_toplevel (win)) + { + int len = strlen (str); + + if (selection) + { + clip = gtk_widget_get_clipboard (win, selection); + gtk_clipboard_set_text (clip, str, len); + } else + { + /* copy to both primary X selection and clipboard */ + clip = gtk_widget_get_clipboard (win, GDK_SELECTION_PRIMARY); + clip2 = gtk_widget_get_clipboard (win, GDK_SELECTION_CLIPBOARD); + gtk_clipboard_set_text (clip, str, len); + gtk_clipboard_set_text (clip2, str, len); + } + } +} + +/* Treeview util functions */ + +GtkWidget * +gtkutil_treeview_new (GtkWidget *box, GtkTreeModel *model, + GtkTreeCellDataFunc mapper, ...) +{ + GtkWidget *win, *view; + GtkCellRenderer *renderer = NULL; + GtkTreeViewColumn *col; + va_list args; + int col_id = 0; + GType type; + char *title, *attr; + + win = gtk_scrolled_window_new (0, 0); + gtk_container_add (GTK_CONTAINER (box), win); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (win), + GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + gtk_widget_show (win); + + view = gtk_tree_view_new_with_model (model); + /* the view now has a ref on the model, we can unref it */ + g_object_unref (G_OBJECT (model)); + gtk_container_add (GTK_CONTAINER (win), view); + + va_start (args, mapper); + for (col_id = va_arg (args, int); col_id != -1; col_id = va_arg (args, int)) + { + type = gtk_tree_model_get_column_type (model, col_id); + switch (type) + { + case G_TYPE_BOOLEAN: + renderer = gtk_cell_renderer_toggle_new (); + attr = "active"; + break; + case G_TYPE_STRING: /* fall through */ + default: + renderer = gtk_cell_renderer_text_new (); + attr = "text"; + break; + } + + title = va_arg (args, char *); + if (mapper) /* user-specified function to set renderer attributes */ + { + col = gtk_tree_view_column_new_with_attributes (title, renderer, NULL); + gtk_tree_view_column_set_cell_data_func (col, renderer, mapper, + GINT_TO_POINTER (col_id), NULL); + } else + { + /* just set the typical attribute for this type of renderer */ + col = gtk_tree_view_column_new_with_attributes (title, renderer, + attr, col_id, NULL); + } + gtk_tree_view_append_column (GTK_TREE_VIEW (view), col); + if (title == NULL) + gtk_tree_view_column_set_visible (col, FALSE); + } + + va_end (args); + + return view; +} + +gboolean +gtkutil_treemodel_string_to_iter (GtkTreeModel *model, gchar *pathstr, GtkTreeIter *iter_ret) +{ + GtkTreePath *path = gtk_tree_path_new_from_string (pathstr); + gboolean success; + + success = gtk_tree_model_get_iter (model, iter_ret, path); + gtk_tree_path_free (path); + return success; +} + +/*gboolean +gtkutil_treeview_get_selected_iter (GtkTreeView *view, GtkTreeIter *iter_ret) +{ + GtkTreeModel *store; + GtkTreeSelection *select; + + select = gtk_tree_view_get_selection (view); + return gtk_tree_selection_get_selected (select, &store, iter_ret); +}*/ + +gboolean +gtkutil_treeview_get_selected (GtkTreeView *view, GtkTreeIter *iter_ret, ...) +{ + GtkTreeModel *store; + GtkTreeSelection *select; + gboolean has_selected; + va_list args; + + select = gtk_tree_view_get_selection (view); + has_selected = gtk_tree_selection_get_selected (select, &store, iter_ret); + + if (has_selected) { + va_start (args, iter_ret); + gtk_tree_model_get_valist (store, iter_ret, args); + va_end (args); + } + + return has_selected; +} + +gboolean +gtkutil_tray_icon_supported (GtkWindow *window) +{ +#ifndef GDK_WINDOWING_X11 + return TRUE; +#else + GdkScreen *screen = gtk_window_get_screen (window); + GdkDisplay *display = gdk_screen_get_display (screen); + int screen_number = gdk_screen_get_number (screen); + Display *xdisplay = gdk_x11_display_get_xdisplay (display); + char *selection_name = g_strdup_printf ("_NET_SYSTEM_TRAY_S%d", screen_number); + Atom selection_atom = XInternAtom (xdisplay, selection_name, False); + Window tray_window = None; + + XGrabServer (xdisplay); + + tray_window = XGetSelectionOwner (xdisplay, selection_atom); + + XUngrabServer (xdisplay); + XFlush (xdisplay); + g_free (selection_name); + + return (tray_window != None); +#endif +} + +#if defined (WIN32) || defined (__APPLE__) +gboolean +gtkutil_find_font (const char *fontname) +{ + int i; + int n_families; + const char *family_name; + PangoFontMap *fontmap; + PangoFontFamily *family; + PangoFontFamily **families; + + fontmap = pango_cairo_font_map_get_default (); + pango_font_map_list_families (fontmap, &families, &n_families); + + for (i = 0; i < n_families; i++) + { + family = families[i]; + family_name = pango_font_family_get_name (family); + + if (!g_ascii_strcasecmp (family_name, fontname)) + { + g_free (families); + return TRUE; + } + } + + g_free (families); + return FALSE; +} +#endif diff --git a/hexchat/src/fe-gtk/gtkutil.h b/hexchat/src/fe-gtk/gtkutil.h new file mode 100644 index 0000000..c6e380e --- /dev/null +++ b/hexchat/src/fe-gtk/gtkutil.h @@ -0,0 +1,52 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_GTKUTIL_H +#define HEXCHAT_GTKUTIL_H + +#include <gtk/gtk.h> +#include "../common/fe.h" + +typedef void (*filereqcallback) (void *, char *file); + +void gtkutil_file_req (GtkWindow *parent, const char *title, void *callback, void *userdata, char *filter, char *extensions, int flags); +void gtkutil_destroy (GtkWidget * igad, GtkWidget * dgad); +void gtkutil_destroy_on_esc (GtkWidget *win); +GtkWidget *gtkutil_button (GtkWidget *box, char *stock, char *tip, void *callback, + void *userdata, char *labeltext); +void gtkutil_label_new (char *text, GtkWidget * box); +GtkWidget *gtkutil_entry_new (int max, GtkWidget * box, void *callback, + gpointer userdata); +void show_and_unfocus (GtkWidget * wid); +void gtkutil_set_icon (GtkWidget *win); +GtkWidget *gtkutil_window_new (char *title, char *role, int width, int height, int flags); +void gtkutil_copy_to_clipboard (GtkWidget *widget, GdkAtom selection, + const gchar *str); +GtkWidget *gtkutil_treeview_new (GtkWidget *box, GtkTreeModel *model, + GtkTreeCellDataFunc mapper, ...); +gboolean gtkutil_treemodel_string_to_iter (GtkTreeModel *model, gchar *pathstr, GtkTreeIter *iter_ret); +gboolean gtkutil_treeview_get_selected_iter (GtkTreeView *view, GtkTreeIter *iter_ret); +gboolean gtkutil_treeview_get_selected (GtkTreeView *view, GtkTreeIter *iter_ret, ...); +gboolean gtkutil_tray_icon_supported (GtkWindow *window); + +#if defined (WIN32) || defined (__APPLE__) +gboolean gtkutil_find_font (const char *fontname); +#endif + +#endif diff --git a/hexchat/src/fe-gtk/hexchat.rc.tt b/hexchat/src/fe-gtk/hexchat.rc.tt new file mode 100644 index 0000000..35b0e6a --- /dev/null +++ b/hexchat/src/fe-gtk/hexchat.rc.tt @@ -0,0 +1,28 @@ +#include <winver.h> +#include "config.h" + +#define COMMA_VERSION <#= [string]::Join(',', $versionParts) #>,0 + +XC_ICON ICON "<#= $env:SOLUTIONDIR -replace '\\', '/' #>data/icons/hexchat.ico" + +VS_VERSION_INFO VERSIONINFO + FILEVERSION COMMA_VERSION + PRODUCTVERSION COMMA_VERSION + BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904B0" + BEGIN + + VALUE "FileDescription", "HexChat IRC Client" + VALUE "CompanyName", "HexChat" + VALUE "ProductName", "HexChat" + VALUE "ProductVersion", PACKAGE_VERSION + VALUE "FileVersion", PACKAGE_VERSION + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0409, 0x04B0 + END + END diff --git a/hexchat/src/fe-gtk/ignoregui.c b/hexchat/src/fe-gtk/ignoregui.c new file mode 100644 index 0000000..6c74253 --- /dev/null +++ b/hexchat/src/fe-gtk/ignoregui.c @@ -0,0 +1,449 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include "fe-gtk.h" + +#include "../common/hexchat.h" +#include "../common/ignore.h" +#include "../common/cfgfiles.h" +#include "../common/fe.h" +#include "gtkutil.h" +#include "maingui.h" + +enum +{ + MASK_COLUMN, + CHAN_COLUMN, + PRIV_COLUMN, + NOTICE_COLUMN, + CTCP_COLUMN, + DCC_COLUMN, + INVITE_COLUMN, + UNIGNORE_COLUMN, + N_COLUMNS +}; + +static GtkWidget *ignorewin = 0; + +static GtkWidget *num_ctcp; +static GtkWidget *num_priv; +static GtkWidget *num_chan; +static GtkWidget *num_noti; +static GtkWidget *num_invi; + +static GtkTreeModel * +get_store (void) +{ + return gtk_tree_view_get_model (g_object_get_data (G_OBJECT (ignorewin), "view")); +} + +static int +ignore_get_flags (GtkTreeModel *model, GtkTreeIter *iter) +{ + gboolean chan, priv, noti, ctcp, dcc, invi, unig; + int flags = 0; + + gtk_tree_model_get (model, iter, 1, &chan, 2, &priv, 3, ¬i, + 4, &ctcp, 5, &dcc, 6, &invi, 7, &unig, -1); + if (chan) + flags |= IG_CHAN; + if (priv) + flags |= IG_PRIV; + if (noti) + flags |= IG_NOTI; + if (ctcp) + flags |= IG_CTCP; + if (dcc) + flags |= IG_DCC; + if (invi) + flags |= IG_INVI; + if (unig) + flags |= IG_UNIG; + return flags; +} + +static void +mask_edited (GtkCellRendererText *render, gchar *path, gchar *new, gpointer dat) +{ + GtkListStore *store = GTK_LIST_STORE (get_store ()); + GtkTreeIter iter; + char *old; + int flags; + + gtkutil_treemodel_string_to_iter (GTK_TREE_MODEL (store), path, &iter); + gtk_tree_model_get (GTK_TREE_MODEL (store), &iter, 0, &old, -1); + + if (!strcmp (old, new)) /* no change */ + ; + else if (ignore_exists (new)) /* duplicate, ignore */ + fe_message (_("That mask already exists."), FE_MSG_ERROR); + else + { + /* delete old mask, and add new one with original flags */ + ignore_del (old, NULL); + flags = ignore_get_flags (GTK_TREE_MODEL (store), &iter); + ignore_add (new, flags, TRUE); + + /* update tree */ + gtk_list_store_set (store, &iter, MASK_COLUMN, new, -1); + } + g_free (old); + +} + +static void +option_toggled (GtkCellRendererToggle *render, gchar *path, gpointer data) +{ + GtkListStore *store = GTK_LIST_STORE (get_store ()); + GtkTreeIter iter; + int col_id = GPOINTER_TO_INT (data); + gboolean active; + char *mask; + int flags; + + gtkutil_treemodel_string_to_iter (GTK_TREE_MODEL (store), path, &iter); + + /* update model */ + gtk_tree_model_get (GTK_TREE_MODEL (store), &iter, col_id, &active, -1); + gtk_list_store_set (store, &iter, col_id, !active, -1); + + /* update ignore list */ + gtk_tree_model_get (GTK_TREE_MODEL (store), &iter, 0, &mask, -1); + flags = ignore_get_flags (GTK_TREE_MODEL (store), &iter); + if (ignore_add (mask, flags, TRUE) != 2) + g_warning ("ignore treeview is out of sync!\n"); + + g_free (mask); +} + +static GtkWidget * +ignore_treeview_new (GtkWidget *box) +{ + GtkListStore *store; + GtkWidget *view; + GtkTreeViewColumn *col; + GtkCellRenderer *render; + int col_id; + + store = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, + G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, + G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, + G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, + G_TYPE_BOOLEAN, G_TYPE_BOOLEAN); + g_return_val_if_fail (store != NULL, NULL); + + view = gtkutil_treeview_new (box, GTK_TREE_MODEL (store), + NULL, + MASK_COLUMN, _("Mask"), + CHAN_COLUMN, _("Channel"), + PRIV_COLUMN, _("Private"), + NOTICE_COLUMN, _("Notice"), + CTCP_COLUMN, _("CTCP"), + DCC_COLUMN, _("DCC"), + INVITE_COLUMN, _("Invite"), + UNIGNORE_COLUMN, _("Unignore"), + -1); + + gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (view), TRUE); + gtk_tree_view_column_set_expand (gtk_tree_view_get_column (GTK_TREE_VIEW (view), 0), TRUE); + + /* attach to signals and customise columns */ + for (col_id=0; (col = gtk_tree_view_get_column (GTK_TREE_VIEW (view), col_id)); + col_id++) + { + GList *list = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (col)); + GList *tmp; + + for (tmp = list; tmp; tmp = tmp->next) + { + render = tmp->data; + if (col_id > 0) /* it's a toggle button column */ + { + g_signal_connect (render, "toggled", G_CALLBACK (option_toggled), + GINT_TO_POINTER (col_id)); + } else /* mask column */ + { + g_object_set (G_OBJECT (render), "editable", TRUE, NULL); + g_signal_connect (render, "edited", G_CALLBACK (mask_edited), NULL); + /* make this column sortable */ + gtk_tree_view_column_set_sort_column_id (col, col_id); + gtk_tree_view_column_set_min_width (col, 272); + } + /* centre titles */ + gtk_tree_view_column_set_alignment (col, 0.5); + } + + g_list_free (list); + } + + gtk_widget_show (view); + return view; +} + +static void +ignore_delete_entry_clicked (GtkWidget * wid, struct session *sess) +{ + GtkTreeView *view = g_object_get_data (G_OBJECT (ignorewin), "view"); + GtkListStore *store = GTK_LIST_STORE (gtk_tree_view_get_model (view)); + GtkTreeIter iter; + GtkTreePath *path; + char *mask = NULL; + + if (gtkutil_treeview_get_selected (view, &iter, 0, &mask, -1)) + { + /* delete this row, select next one */ + if (gtk_list_store_remove (store, &iter)) + { + path = gtk_tree_model_get_path (GTK_TREE_MODEL (store), &iter); + gtk_tree_view_scroll_to_cell (view, path, NULL, TRUE, 1.0, 0.0); + gtk_tree_view_set_cursor (view, path, NULL, FALSE); + gtk_tree_path_free (path); + } + + ignore_del (mask, NULL); + g_free (mask); + } +} + +static void +ignore_store_new (int cancel, char *mask, gpointer data) +{ + GtkTreeView *view = g_object_get_data (G_OBJECT (ignorewin), "view"); + GtkListStore *store = GTK_LIST_STORE (get_store ()); + GtkTreeIter iter; + GtkTreePath *path; + int flags = IG_CHAN | IG_PRIV | IG_NOTI | IG_CTCP | IG_DCC | IG_INVI; + + if (cancel) + return; + /* check if it already exists */ + if (ignore_exists (mask)) + { + fe_message (_("That mask already exists."), FE_MSG_ERROR); + return; + } + + ignore_add (mask, flags, TRUE); + + gtk_list_store_append (store, &iter); + /* ignore everything by default */ + gtk_list_store_set (store, &iter, 0, mask, 1, TRUE, 2, TRUE, 3, TRUE, + 4, TRUE, 5, TRUE, 6, TRUE, 7, FALSE, -1); + /* make sure the new row is visible and selected */ + path = gtk_tree_model_get_path (GTK_TREE_MODEL (store), &iter); + gtk_tree_view_scroll_to_cell (view, path, NULL, TRUE, 1.0, 0.0); + gtk_tree_view_set_cursor (view, path, NULL, FALSE); + gtk_tree_path_free (path); +} + +static void +ignore_clear_cb (GtkDialog *dialog, gint response) +{ + GtkListStore *store = GTK_LIST_STORE (get_store ()); + GtkTreeIter iter; + char *mask; + + gtk_widget_destroy (GTK_WIDGET (dialog)); + + if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter) && response == GTK_RESPONSE_OK) + { + /* remove from ignore_list */ + do + { + mask = NULL; + gtk_tree_model_get (GTK_TREE_MODEL (store), &iter, MASK_COLUMN, &mask, -1); + ignore_del (mask, NULL); + g_free (mask); + } + while (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter)); + + /* remove from GUI */ + gtk_list_store_clear (store); + } +} + +static void +ignore_clear_entry_clicked (GtkWidget * wid) +{ + GtkWidget *dialog; + + dialog = gtk_message_dialog_new (NULL, 0, + GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, + _("Are you sure you want to remove all ignores?")); + g_signal_connect (G_OBJECT (dialog), "response", + G_CALLBACK (ignore_clear_cb), NULL); + gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); + gtk_widget_show (dialog); +} + +static void +ignore_new_entry_clicked (GtkWidget * wid, struct session *sess) +{ + fe_get_str (_("Enter mask to ignore:"), "nick!userid@host.com", + ignore_store_new, NULL); + +} + +static void +close_ignore_gui_callback (void) +{ + ignore_save (); + ignorewin = 0; +} + +static GtkWidget * +ignore_stats_entry (GtkWidget * box, char *label, int value) +{ + GtkWidget *wid; + char buf[16]; + + sprintf (buf, "%d", value); + gtkutil_label_new (label, box); + wid = gtkutil_entry_new (16, box, 0, 0); + gtk_widget_set_size_request (wid, 30, -1); + gtk_editable_set_editable (GTK_EDITABLE (wid), FALSE); + gtk_widget_set_sensitive (GTK_WIDGET (wid), FALSE); + gtk_entry_set_text (GTK_ENTRY (wid), buf); + + return wid; +} + +void +ignore_gui_open () +{ + GtkWidget *vbox, *box, *stat_box, *frame; + GtkWidget *view; + GtkListStore *store; + GtkTreeIter iter; + GSList *temp = ignore_list; + char *mask; + gboolean private, chan, notice, ctcp, dcc, invite, unignore; + char buf[128]; + + if (ignorewin) + { + mg_bring_tofront (ignorewin); + return; + } + + g_snprintf(buf, sizeof(buf), _("Ignore list - %s"), _(DISPLAY_NAME)); + ignorewin = + mg_create_generic_tab ("IgnoreList", buf, FALSE, TRUE, + close_ignore_gui_callback, + NULL, 700, 300, &vbox, 0); + gtkutil_destroy_on_esc (ignorewin); + + view = ignore_treeview_new (vbox); + g_object_set_data (G_OBJECT (ignorewin), "view", view); + + frame = gtk_frame_new (_("Ignore Stats:")); + gtk_widget_show (frame); + + stat_box = gtk_hbox_new (0, 2); + gtk_container_set_border_width (GTK_CONTAINER (stat_box), 6); + gtk_container_add (GTK_CONTAINER (frame), stat_box); + gtk_widget_show (stat_box); + + num_chan = ignore_stats_entry (stat_box, _("Channel:"), ignored_chan); + num_priv = ignore_stats_entry (stat_box, _("Private:"), ignored_priv); + num_noti = ignore_stats_entry (stat_box, _("Notice:"), ignored_noti); + num_ctcp = ignore_stats_entry (stat_box, _("CTCP:"), ignored_ctcp); + num_invi = ignore_stats_entry (stat_box, _("Invite:"), ignored_invi); + + gtk_box_pack_start (GTK_BOX (vbox), frame, 0, 0, 5); + + box = gtk_hbutton_box_new (); + gtk_button_box_set_layout (GTK_BUTTON_BOX (box), GTK_BUTTONBOX_SPREAD); + gtk_box_pack_start (GTK_BOX (vbox), box, FALSE, FALSE, 2); + gtk_container_set_border_width (GTK_CONTAINER (box), 5); + gtk_widget_show (box); + + gtkutil_button (box, GTK_STOCK_NEW, 0, ignore_new_entry_clicked, 0, + _("Add...")); + gtkutil_button (box, GTK_STOCK_DELETE, 0, ignore_delete_entry_clicked, + 0, _("Delete")); + gtkutil_button (box, GTK_STOCK_CLEAR, 0, ignore_clear_entry_clicked, + 0, _("Clear")); + + store = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (view))); + + while (temp) + { + struct ignore *ignore = temp->data; + + mask = ignore->mask; + chan = (ignore->type & IG_CHAN); + private = (ignore->type & IG_PRIV); + notice = (ignore->type & IG_NOTI); + ctcp = (ignore->type & IG_CTCP); + dcc = (ignore->type & IG_DCC); + invite = (ignore->type & IG_INVI); + unignore = (ignore->type & IG_UNIG); + + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, + MASK_COLUMN, mask, + CHAN_COLUMN, chan, + PRIV_COLUMN, private, + NOTICE_COLUMN, notice, + CTCP_COLUMN, ctcp, + DCC_COLUMN, dcc, + INVITE_COLUMN, invite, + UNIGNORE_COLUMN, unignore, + -1); + + temp = temp->next; + } + gtk_widget_show (ignorewin); +} + +void +fe_ignore_update (int level) +{ + /* some ignores have changed via /ignore, we should update + the gui now */ + /* level 1 = the list only. */ + /* level 2 = the numbers only. */ + /* for now, ignore level 1, since the ignore GUI isn't realtime, + only saved when you click OK */ + char buf[16]; + + if (level == 2 && ignorewin) + { + sprintf (buf, "%d", ignored_ctcp); + gtk_entry_set_text (GTK_ENTRY (num_ctcp), buf); + + sprintf (buf, "%d", ignored_noti); + gtk_entry_set_text (GTK_ENTRY (num_noti), buf); + + sprintf (buf, "%d", ignored_chan); + gtk_entry_set_text (GTK_ENTRY (num_chan), buf); + + sprintf (buf, "%d", ignored_invi); + gtk_entry_set_text (GTK_ENTRY (num_invi), buf); + + sprintf (buf, "%d", ignored_priv); + gtk_entry_set_text (GTK_ENTRY (num_priv), buf); + } +} diff --git a/hexchat/src/fe-gtk/joind.c b/hexchat/src/fe-gtk/joind.c new file mode 100644 index 0000000..ce3cbca --- /dev/null +++ b/hexchat/src/fe-gtk/joind.c @@ -0,0 +1,274 @@ +/* X-Chat + * Copyright (C) 2005 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +/* joind.c - The Join Dialog. + + Popups up when you connect without any autojoin channels and helps you + to find or join a channel. +*/ + +#include <sys/types.h> +#include <sys/stat.h> +#include <string.h> +#include <stdio.h> + +#ifndef WIN32 +#include <unistd.h> +#endif + +#include "../common/hexchat.h" +#include "../common/hexchatc.h" +#include "../common/server.h" +#include "../common/servlist.h" +#include "../common/fe.h" +#include "fe-gtk.h" +#include "chanlist.h" + + +static void +joind_radio2_cb (GtkWidget *radio, server *serv) +{ + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (radio))) + { + gtk_widget_grab_focus (serv->gui->joind_entry); + gtk_editable_set_position (GTK_EDITABLE (serv->gui->joind_entry), 999); + } +} + +static void +joind_entryenter_cb (GtkWidget *entry, GtkWidget *ok) +{ + gtk_widget_grab_focus (ok); +} + +static void +joind_entryfocus_cb (GtkWidget *entry, GdkEventFocus *event, server *serv) +{ + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (serv->gui->joind_radio2), TRUE); +} + +static void +joind_destroy_cb (GtkWidget *win, server *serv) +{ + if (is_server (serv)) + serv->gui->joind_win = NULL; +} + +static void +joind_ok_cb (GtkWidget *ok, server *serv) +{ + if (!is_server (serv)) + { + gtk_widget_destroy (gtk_widget_get_toplevel (ok)); + return; + } + + /* do nothing */ + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (serv->gui->joind_radio1))) + goto xit; + + /* join specific channel */ + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (serv->gui->joind_radio2))) + { + char *text = (char *)gtk_entry_get_text (GTK_ENTRY (serv->gui->joind_entry)); + if (strlen (text) < 1) + { + fe_message (_("Channel name too short, try again."), FE_MSG_ERROR); + return; + } + serv->p_join (serv, text, ""); + goto xit; + } + + /* channel list */ + chanlist_opengui (serv, TRUE); + +xit: + prefs.hex_gui_join_dialog = 0; + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (serv->gui->joind_check))) + prefs.hex_gui_join_dialog = 1; + + gtk_widget_destroy (serv->gui->joind_win); + serv->gui->joind_win = NULL; +} + +static void +joind_show_dialog (server *serv) +{ + GtkWidget *dialog1; + GtkWidget *dialog_vbox1; + GtkWidget *vbox1; + GtkWidget *hbox1; + GtkWidget *image1; + GtkWidget *vbox2; + GtkWidget *label; + GtkWidget *radiobutton1; + GtkWidget *radiobutton2; + GtkWidget *radiobutton3; + GSList *radiobutton1_group; + GtkWidget *hbox2; + GtkWidget *entry1; + GtkWidget *checkbutton1; + GtkWidget *dialog_action_area1; + GtkWidget *okbutton1; + char buf[256]; + char buf2[256]; + + serv->gui->joind_win = dialog1 = gtk_dialog_new (); + g_snprintf(buf, sizeof(buf), _("Connection Complete - %s"), _(DISPLAY_NAME)); + gtk_window_set_title (GTK_WINDOW (dialog1), buf); + gtk_window_set_type_hint (GTK_WINDOW (dialog1), GDK_WINDOW_TYPE_HINT_DIALOG); + gtk_window_set_position (GTK_WINDOW (dialog1), GTK_WIN_POS_CENTER_ON_PARENT); + gtk_window_set_transient_for (GTK_WINDOW(dialog1), GTK_WINDOW(serv->front_session->gui->window)); + gtk_window_set_modal (GTK_WINDOW (dialog1), TRUE); + gtk_window_set_resizable (GTK_WINDOW (dialog1), FALSE); + + dialog_vbox1 = gtk_dialog_get_content_area (GTK_DIALOG (dialog1)); + gtk_widget_show (dialog_vbox1); + + vbox1 = gtk_vbox_new (FALSE, 0); + gtk_widget_show (vbox1); + gtk_box_pack_start (GTK_BOX (dialog_vbox1), vbox1, TRUE, TRUE, 0); + + hbox1 = gtk_hbox_new (FALSE, 0); + gtk_widget_show (hbox1); + gtk_box_pack_start (GTK_BOX (vbox1), hbox1, TRUE, TRUE, 0); + + image1 = gtk_image_new_from_stock (GTK_STOCK_NETWORK, GTK_ICON_SIZE_LARGE_TOOLBAR); + gtk_widget_show (image1); + gtk_box_pack_start (GTK_BOX (hbox1), image1, FALSE, TRUE, 24); + gtk_misc_set_alignment (GTK_MISC (image1), 0.5f, 0.06f); + + vbox2 = gtk_vbox_new (FALSE, 10); + gtk_container_set_border_width (GTK_CONTAINER (vbox2), 6); + gtk_widget_show (vbox2); + gtk_box_pack_start (GTK_BOX (hbox1), vbox2, TRUE, TRUE, 0); + + g_snprintf (buf2, sizeof (buf2), _("Connection to %s complete."), + server_get_network (serv, TRUE)); + g_snprintf (buf, sizeof (buf), "\n<b>%s</b>", buf2); + label = gtk_label_new (buf); + gtk_widget_show (label); + gtk_box_pack_start (GTK_BOX (vbox2), label, FALSE, FALSE, 0); + gtk_label_set_use_markup (GTK_LABEL (label), TRUE); + gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); + + label = gtk_label_new (_("In the server list window, no channel (chat room) has been entered to be automatically joined for this network.")); + gtk_widget_show (label); + gtk_box_pack_start (GTK_BOX (vbox2), label, FALSE, FALSE, 0); + gtk_label_set_line_wrap (GTK_LABEL (label), TRUE); + gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); + + label = gtk_label_new (_("What would you like to do next?")); + gtk_widget_show (label); + gtk_box_pack_start (GTK_BOX (vbox2), label, FALSE, FALSE, 0); + gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); + + serv->gui->joind_radio1 = radiobutton1 = gtk_radio_button_new_with_mnemonic (NULL, _("_Nothing, I'll join a channel later.")); + gtk_widget_show (radiobutton1); + gtk_box_pack_start (GTK_BOX (vbox2), radiobutton1, FALSE, FALSE, 0); + radiobutton1_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (radiobutton1)); + + hbox2 = gtk_hbox_new (FALSE, 0); + gtk_widget_show (hbox2); + gtk_box_pack_start (GTK_BOX (vbox2), hbox2, FALSE, FALSE, 0); + + serv->gui->joind_radio2 = radiobutton2 = gtk_radio_button_new_with_mnemonic (NULL, _("_Join this channel:")); + gtk_widget_show (radiobutton2); + gtk_box_pack_start (GTK_BOX (hbox2), radiobutton2, FALSE, FALSE, 0); + gtk_radio_button_set_group (GTK_RADIO_BUTTON (radiobutton2), radiobutton1_group); + radiobutton1_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (radiobutton2)); + + serv->gui->joind_entry = entry1 = gtk_entry_new (); + gtk_entry_set_text (GTK_ENTRY (entry1), "#"); + gtk_widget_show (entry1); + gtk_box_pack_start (GTK_BOX (hbox2), entry1, TRUE, TRUE, 8); + + g_snprintf (buf, sizeof (buf), "<small> %s</small>", + _("If you know the name of the channel you want to join, enter it here.")); + label = gtk_label_new (buf); + gtk_widget_show (label); + gtk_box_pack_start (GTK_BOX (vbox2), label, FALSE, FALSE, 0); + gtk_label_set_use_markup (GTK_LABEL (label), TRUE); + gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); + + radiobutton3 = gtk_radio_button_new_with_mnemonic (NULL, _("O_pen the channel list.")); + gtk_widget_show (radiobutton3); + gtk_box_pack_start (GTK_BOX (vbox2), radiobutton3, FALSE, FALSE, 0); + gtk_radio_button_set_group (GTK_RADIO_BUTTON (radiobutton3), radiobutton1_group); + + g_snprintf (buf, sizeof (buf), "<small> %s</small>", + _("Retrieving the channel list may take a minute or two.")); + label = gtk_label_new (buf); + gtk_widget_show (label); + gtk_box_pack_start (GTK_BOX (vbox2), label, FALSE, FALSE, 0); + gtk_label_set_use_markup (GTK_LABEL (label), TRUE); + gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); + + serv->gui->joind_check = checkbutton1 = gtk_check_button_new_with_mnemonic (_("_Always show this dialog after connecting.")); + if (prefs.hex_gui_join_dialog) + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton1), TRUE); + gtk_widget_show (checkbutton1); + gtk_box_pack_start (GTK_BOX (vbox1), checkbutton1, FALSE, FALSE, 0); + + dialog_action_area1 = gtk_dialog_get_action_area (GTK_DIALOG (dialog1)); + gtk_widget_show (dialog_action_area1); + gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area1), GTK_BUTTONBOX_END); + + okbutton1 = gtk_button_new_from_stock ("gtk-ok"); + gtk_widget_show (okbutton1); + gtk_box_pack_end (GTK_BOX (gtk_dialog_get_action_area (GTK_DIALOG (dialog1))), okbutton1, FALSE, TRUE, 0); + gtk_widget_set_can_default (okbutton1, TRUE); + + g_signal_connect (G_OBJECT (dialog1), "destroy", + G_CALLBACK (joind_destroy_cb), serv); + g_signal_connect (G_OBJECT (entry1), "focus_in_event", + G_CALLBACK (joind_entryfocus_cb), serv); + g_signal_connect (G_OBJECT (entry1), "activate", + G_CALLBACK (joind_entryenter_cb), okbutton1); + g_signal_connect (G_OBJECT (radiobutton2), "toggled", + G_CALLBACK (joind_radio2_cb), serv); + g_signal_connect (G_OBJECT (okbutton1), "clicked", + G_CALLBACK (joind_ok_cb), serv); + + if (serv->network) + if (g_ascii_strcasecmp(((ircnet*)serv->network)->name, "Libera.Chat") == 0) + { + gtk_entry_set_text (GTK_ENTRY (entry1), "#hexchat"); + } + + gtk_widget_grab_focus (okbutton1); + gtk_widget_show_all (dialog1); +} + +void +joind_open (server *serv) +{ + if (prefs.hex_gui_join_dialog) + joind_show_dialog (serv); +} + +void +joind_close (server *serv) +{ + if (serv->gui->joind_win) + { + gtk_widget_destroy (serv->gui->joind_win); + serv->gui->joind_win = NULL; + } +} diff --git a/hexchat/src/fe-gtk/joind.h b/hexchat/src/fe-gtk/joind.h new file mode 100644 index 0000000..a7f466b --- /dev/null +++ b/hexchat/src/fe-gtk/joind.h @@ -0,0 +1,26 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_JOIND_H +#define HEXCHAT_JOIND_H + +void joind_open (server *serv); +void joind_close (server *serv); + +#endif diff --git a/hexchat/src/fe-gtk/maingui.c b/hexchat/src/fe-gtk/maingui.c new file mode 100644 index 0000000..0da60b3 --- /dev/null +++ b/hexchat/src/fe-gtk/maingui.c @@ -0,0 +1,3920 @@ +/* X-Chat + * Copyright (C) 1998-2005 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <stdlib.h> +#include <string.h> +#include <stdio.h> +#include <ctype.h> + +#include <gdk/gdkkeysyms.h> + +#include "../common/hexchat.h" +#include "../common/fe.h" +#include "../common/server.h" +#include "../common/hexchatc.h" +#include "../common/outbound.h" +#include "../common/inbound.h" +#include "../common/plugin.h" +#include "../common/modes.h" +#include "../common/url.h" +#include "../common/util.h" +#include "../common/text.h" +#include "../common/chanopt.h" +#include "../common/cfgfiles.h" + +#include "fe-gtk.h" +#include "banlist.h" +#include "gtkutil.h" +#include "joind.h" +#include "palette.h" +#include "maingui.h" +#include "menu.h" +#include "fkeys.h" +#include "userlistgui.h" +#include "chanview.h" +#include "pixmaps.h" +#include "plugin-tray.h" +#include "xtext.h" +#include "sexy-spell-entry.h" +#include "gtkutil.h" + +#ifdef G_OS_WIN32 +#include <windows.h> +#endif + +#define GUI_SPACING (3) +#define GUI_BORDER (0) + +enum +{ + POS_INVALID = 0, + POS_TOPLEFT = 1, + POS_BOTTOMLEFT = 2, + POS_TOPRIGHT = 3, + POS_BOTTOMRIGHT = 4, + POS_TOP = 5, /* for tabs only */ + POS_BOTTOM = 6, + POS_HIDDEN = 7 +}; + +/* two different types of tabs */ +#define TAG_IRC 0 /* server, channel, dialog */ +#define TAG_UTIL 1 /* dcc, notify, chanlist */ + +static void mg_create_entry (session *sess, GtkWidget *box); +static void mg_create_search (session *sess, GtkWidget *box); +static void mg_link_irctab (session *sess, int focus); + +static session_gui static_mg_gui; +static session_gui *mg_gui = NULL; /* the shared irc tab */ +static int ignore_chanmode = FALSE; +static const char chan_flags[] = { 'c', 'n', 't', 'i', 'm', 'l', 'k' }; + +static chan *active_tab = NULL; /* active tab */ +GtkWidget *parent_window = NULL; /* the master window */ + +GtkStyle *input_style; + +static PangoAttrList *away_list; +static PangoAttrList *newdata_list; +static PangoAttrList *nickseen_list; +static PangoAttrList *newmsg_list; +static PangoAttrList *plain_list = NULL; + +static PangoAttrList * +mg_attr_list_create (GdkColor *col, int size) +{ + PangoAttribute *attr; + PangoAttrList *list; + + list = pango_attr_list_new (); + + if (col) + { + attr = pango_attr_foreground_new (col->red, col->green, col->blue); + attr->start_index = 0; + attr->end_index = 0xffff; + pango_attr_list_insert (list, attr); + } + + if (size > 0) + { + attr = pango_attr_scale_new (size == 1 ? PANGO_SCALE_SMALL : PANGO_SCALE_X_SMALL); + attr->start_index = 0; + attr->end_index = 0xffff; + pango_attr_list_insert (list, attr); + } + + return list; +} + +static void +mg_create_tab_colors (void) +{ + if (plain_list) + { + pango_attr_list_unref (plain_list); + pango_attr_list_unref (newmsg_list); + pango_attr_list_unref (newdata_list); + pango_attr_list_unref (nickseen_list); + pango_attr_list_unref (away_list); + } + + plain_list = mg_attr_list_create (NULL, prefs.hex_gui_tab_small); + newdata_list = mg_attr_list_create (&colors[COL_NEW_DATA], prefs.hex_gui_tab_small); + nickseen_list = mg_attr_list_create (&colors[COL_HILIGHT], prefs.hex_gui_tab_small); + newmsg_list = mg_attr_list_create (&colors[COL_NEW_MSG], prefs.hex_gui_tab_small); + away_list = mg_attr_list_create (&colors[COL_AWAY], FALSE); +} + +static void +set_window_urgency (GtkWidget *win, gboolean set) +{ + gtk_window_set_urgency_hint (GTK_WINDOW (win), set); +} + +static void +flash_window (GtkWidget *win) +{ +#ifdef HAVE_GTK_MAC + gtkosx_application_attention_request (osx_app, INFO_REQUEST); +#endif + set_window_urgency (win, TRUE); +} + +static void +unflash_window (GtkWidget *win) +{ + set_window_urgency (win, FALSE); +} + +/* flash the taskbar button */ + +void +fe_flash_window (session *sess) +{ + if (fe_gui_info (sess, 0) != 1) /* only do it if not focused */ + flash_window (sess->gui->window); +} + +/* set a tab plain, red, light-red, or blue */ + +void +fe_set_tab_color (struct session *sess, tabcolor col) +{ + struct session *server_sess = sess->server->server_session; + int col_noflags = (col & ~FE_COLOR_ALLFLAGS); + int col_shouldoverride = !(col & FE_COLOR_FLAG_NOOVERRIDE); + + if (sess->res->tab && sess->gui->is_tab && (col == 0 || sess != current_tab)) + { + switch (col_noflags) + { + case 0: /* no particular color (theme default) */ + sess->tab_state = TAB_STATE_NONE; + chan_set_color (sess->res->tab, plain_list); + break; + case 1: /* new data has been displayed (dark red) */ + if (col_shouldoverride || !((sess->tab_state & TAB_STATE_NEW_MSG) + || (sess->tab_state & TAB_STATE_NEW_HILIGHT))) { + sess->tab_state = TAB_STATE_NEW_DATA; + chan_set_color (sess->res->tab, newdata_list); + } + + if (chan_is_collapsed (sess->res->tab) + && !((server_sess->tab_state & TAB_STATE_NEW_MSG) + || (server_sess->tab_state & TAB_STATE_NEW_HILIGHT)) + && !(server_sess == current_tab)) + { + server_sess->tab_state = TAB_STATE_NEW_DATA; + chan_set_color (chan_get_parent (sess->res->tab), newdata_list); + } + + break; + case 2: /* new message arrived in channel (light red) */ + if (col_shouldoverride || !(sess->tab_state & TAB_STATE_NEW_HILIGHT)) { + sess->tab_state = TAB_STATE_NEW_MSG; + chan_set_color (sess->res->tab, newmsg_list); + } + + if (chan_is_collapsed (sess->res->tab) + && !(server_sess->tab_state & TAB_STATE_NEW_HILIGHT) + && !(server_sess == current_tab)) + { + server_sess->tab_state = TAB_STATE_NEW_MSG; + chan_set_color (chan_get_parent (sess->res->tab), newmsg_list); + } + + break; + case 3: /* your nick has been seen (blue) */ + sess->tab_state = TAB_STATE_NEW_HILIGHT; + chan_set_color (sess->res->tab, nickseen_list); + + if (chan_is_collapsed (sess->res->tab) && !(server_sess == current_tab)) + { + server_sess->tab_state = TAB_STATE_NEW_MSG; + chan_set_color (chan_get_parent (sess->res->tab), nickseen_list); + } + + break; + } + lastact_update (sess); + sess->last_tab_state = sess->tab_state; /* For plugins handling future prints */ + } +} + +static void +mg_set_myself_away (session_gui *gui, gboolean away) +{ + gtk_label_set_attributes (GTK_LABEL (gtk_bin_get_child (GTK_BIN (gui->nick_label))), + away ? away_list : NULL); +} + +/* change the little icon to the left of your nickname */ + +void +mg_set_access_icon (session_gui *gui, GdkPixbuf *pix, gboolean away) +{ + if (gui->op_xpm) + { + if (pix == gtk_image_get_pixbuf (GTK_IMAGE (gui->op_xpm))) /* no change? */ + { + mg_set_myself_away (gui, away); + return; + } + + gtk_widget_destroy (gui->op_xpm); + gui->op_xpm = NULL; + } + + if (pix && prefs.hex_gui_input_icon) + { + gui->op_xpm = gtk_image_new_from_pixbuf (pix); + gtk_box_pack_start (GTK_BOX (gui->nick_box), gui->op_xpm, 0, 0, 0); + gtk_widget_show (gui->op_xpm); + } + + mg_set_myself_away (gui, away); +} + +static gboolean +mg_inputbox_focus (GtkWidget *widget, GdkEventFocus *event, session_gui *gui) +{ + GSList *list; + session *sess; + + if (gui->is_tab) + return FALSE; + + list = sess_list; + while (list) + { + sess = list->data; + if (sess->gui == gui) + { + current_sess = sess; + if (!sess->server->server_session) + sess->server->server_session = sess; + break; + } + list = list->next; + } + + return FALSE; +} + +void +mg_inputbox_cb (GtkWidget *igad, session_gui *gui) +{ + char *cmd; + static int ignore = FALSE; + GSList *list; + session *sess = NULL; + + if (ignore) + return; + + cmd = SPELL_ENTRY_GET_TEXT (igad); + if (cmd[0] == 0) + return; + + cmd = g_strdup (cmd); + + /* avoid recursive loop */ + ignore = TRUE; + SPELL_ENTRY_SET_TEXT (igad, ""); + ignore = FALSE; + + /* where did this event come from? */ + if (gui->is_tab) + { + sess = current_tab; + } else + { + list = sess_list; + while (list) + { + sess = list->data; + if (sess->gui == gui) + break; + list = list->next; + } + if (!list) + sess = NULL; + } + + if (sess) + handle_multiline (sess, cmd, TRUE, FALSE); + + g_free (cmd); +} + +static gboolean +mg_spellcheck_cb (SexySpellEntry *entry, gchar *word, gpointer data) +{ + /* This can cause freezes on long words, nicks arn't very long anyway. */ + if (strlen (word) > 20) + return TRUE; + + /* Ignore anything we think is a valid url */ + if (url_check_word (word) != 0) + return FALSE; + + return TRUE; +} + +#if 0 +static gboolean +has_key (char *modes) +{ + if (!modes) + return FALSE; + /* this is a crude check, but "-k" can't exist, so it works. */ + while (*modes) + { + if (*modes == 'k') + return TRUE; + if (*modes == ' ') + return FALSE; + modes++; + } + return FALSE; +} +#endif + +void +fe_set_title (session *sess) +{ + char tbuf[512]; + int type; + + if (sess->gui->is_tab && sess != current_tab) + return; + + type = sess->type; + + if (sess->server->connected == FALSE && sess->type != SESS_DIALOG) + goto def; + + switch (type) + { + case SESS_DIALOG: + g_snprintf (tbuf, sizeof (tbuf), "%s %s @ %s - %s", + _("Dialog with"), sess->channel, server_get_network (sess->server, TRUE), + _(DISPLAY_NAME)); + break; + case SESS_SERVER: + g_snprintf (tbuf, sizeof (tbuf), "%s%s%s - %s", + prefs.hex_gui_win_nick ? sess->server->nick : "", + prefs.hex_gui_win_nick ? " @ " : "", server_get_network (sess->server, TRUE), + _(DISPLAY_NAME)); + break; + case SESS_CHANNEL: + /* don't display keys in the titlebar */ + g_snprintf (tbuf, sizeof (tbuf), + "%s%s%s / %s%s%s%s - %s", + prefs.hex_gui_win_nick ? sess->server->nick : "", + prefs.hex_gui_win_nick ? " @ " : "", + server_get_network (sess->server, TRUE), sess->channel, + prefs.hex_gui_win_modes && sess->current_modes ? " (" : "", + prefs.hex_gui_win_modes && sess->current_modes ? sess->current_modes : "", + prefs.hex_gui_win_modes && sess->current_modes ? ")" : "", + _(DISPLAY_NAME)); + if (prefs.hex_gui_win_ucount) + { + g_snprintf (tbuf + strlen (tbuf), 9, " (%d)", sess->total); + } + break; + case SESS_NOTICES: + case SESS_SNOTICES: + g_snprintf (tbuf, sizeof (tbuf), "%s%s%s (notices) - %s", + prefs.hex_gui_win_nick ? sess->server->nick : "", + prefs.hex_gui_win_nick ? " @ " : "", server_get_network (sess->server, TRUE), + _(DISPLAY_NAME)); + break; + default: + def: + g_snprintf (tbuf, sizeof (tbuf), _(DISPLAY_NAME)); + gtk_window_set_title (GTK_WINDOW (sess->gui->window), tbuf); + return; + } + + gtk_window_set_title (GTK_WINDOW (sess->gui->window), tbuf); +} + +static gboolean +mg_windowstate_cb (GtkWindow *wid, GdkEventWindowState *event, gpointer userdata) +{ + if ((event->changed_mask & GDK_WINDOW_STATE_ICONIFIED) && + (event->new_window_state & GDK_WINDOW_STATE_ICONIFIED) && + prefs.hex_gui_tray_minimize && prefs.hex_gui_tray && + gtkutil_tray_icon_supported (wid)) + { + tray_toggle_visibility (TRUE); + gtk_window_deiconify (wid); + } + + prefs.hex_gui_win_state = 0; + if (event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED) + prefs.hex_gui_win_state = 1; + + prefs.hex_gui_win_fullscreen = 0; + if (event->new_window_state & GDK_WINDOW_STATE_FULLSCREEN) + prefs.hex_gui_win_fullscreen = 1; + + menu_set_fullscreen (current_sess->gui, prefs.hex_gui_win_fullscreen); + + return FALSE; +} + +static gboolean +mg_configure_cb (GtkWidget *wid, GdkEventConfigure *event, session *sess) +{ + if (sess == NULL) /* for the main_window */ + { + if (mg_gui) + { + if (prefs.hex_gui_win_save && !prefs.hex_gui_win_state && !prefs.hex_gui_win_fullscreen) + { + sess = current_sess; + gtk_window_get_position (GTK_WINDOW (wid), &prefs.hex_gui_win_left, + &prefs.hex_gui_win_top); + gtk_window_get_size (GTK_WINDOW (wid), &prefs.hex_gui_win_width, + &prefs.hex_gui_win_height); + } + } + } + + if (sess) + { + if (sess->type == SESS_DIALOG && prefs.hex_gui_win_save) + { + gtk_window_get_position (GTK_WINDOW (wid), &prefs.hex_gui_dialog_left, + &prefs.hex_gui_dialog_top); + gtk_window_get_size (GTK_WINDOW (wid), &prefs.hex_gui_dialog_width, + &prefs.hex_gui_dialog_height); + } + } + + return FALSE; +} + +/* move to a non-irc tab */ + +static void +mg_show_generic_tab (GtkWidget *box) +{ + int num; + GtkWidget *f = NULL; + + if (current_sess && gtk_widget_has_focus (current_sess->gui->input_box)) + f = current_sess->gui->input_box; + + num = gtk_notebook_page_num (GTK_NOTEBOOK (mg_gui->note_book), box); + gtk_notebook_set_current_page (GTK_NOTEBOOK (mg_gui->note_book), num); + gtk_tree_view_set_model (GTK_TREE_VIEW (mg_gui->user_tree), NULL); + gtk_window_set_title (GTK_WINDOW (mg_gui->window), + g_object_get_data (G_OBJECT (box), "title")); + gtk_widget_set_sensitive (mg_gui->menu, FALSE); + + if (f) + gtk_widget_grab_focus (f); +} + +/* a channel has been focused */ + +static void +mg_focus (session *sess) +{ + if (sess->gui->is_tab) + current_tab = sess; + current_sess = sess; + + /* dirty trick to avoid auto-selection */ + SPELL_ENTRY_SET_EDITABLE (sess->gui->input_box, FALSE); + gtk_widget_grab_focus (sess->gui->input_box); + SPELL_ENTRY_SET_EDITABLE (sess->gui->input_box, TRUE); + + sess->server->front_session = sess; + + if (sess->server->server_session != NULL) + { + if (sess->server->server_session->type != SESS_SERVER) + sess->server->server_session = sess; + } else + { + sess->server->server_session = sess; + } + + /* when called via mg_changui_new, is_tab might be true, but + sess->res->tab is still NULL. */ + if (sess->res->tab) + fe_set_tab_color (sess, FE_COLOR_NONE); +} + +static int +mg_progressbar_update (GtkWidget *bar) +{ + static int type = 0; + static gdouble pos = 0; + + pos += 0.05; + if (pos >= 0.99) + { + if (type == 0) + { + type = 1; + gtk_progress_bar_set_orientation ((GtkProgressBar *) bar, + GTK_PROGRESS_RIGHT_TO_LEFT); + } else + { + type = 0; + gtk_progress_bar_set_orientation ((GtkProgressBar *) bar, + GTK_PROGRESS_LEFT_TO_RIGHT); + } + pos = 0.05; + } + gtk_progress_bar_set_fraction ((GtkProgressBar *) bar, pos); + return 1; +} + +void +mg_progressbar_create (session_gui *gui) +{ + gui->bar = gtk_progress_bar_new (); + gtk_box_pack_start (GTK_BOX (gui->nick_box), gui->bar, 0, 0, 0); + gtk_widget_show (gui->bar); + gui->bartag = fe_timeout_add (50, mg_progressbar_update, gui->bar); +} + +void +mg_progressbar_destroy (session_gui *gui) +{ + fe_timeout_remove (gui->bartag); + gtk_widget_destroy (gui->bar); + gui->bar = 0; + gui->bartag = 0; +} + +/* switching tabs away from this one, so remember some info about it! */ + +static void +mg_unpopulate (session *sess) +{ + restore_gui *res; + session_gui *gui; + int i; + + gui = sess->gui; + res = sess->res; + + res->input_text = g_strdup (SPELL_ENTRY_GET_TEXT (gui->input_box)); + res->topic_text = g_strdup (gtk_entry_get_text (GTK_ENTRY (gui->topic_entry))); + res->limit_text = g_strdup (gtk_entry_get_text (GTK_ENTRY (gui->limit_entry))); + res->key_text = g_strdup (gtk_entry_get_text (GTK_ENTRY (gui->key_entry))); + if (gui->laginfo) + res->lag_text = g_strdup (gtk_label_get_text (GTK_LABEL (gui->laginfo))); + if (gui->throttleinfo) + res->queue_text = g_strdup (gtk_label_get_text (GTK_LABEL (gui->throttleinfo))); + + for (i = 0; i < NUM_FLAG_WIDS - 1; i++) + res->flag_wid_state[i] = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (gui->flag_wid[i])); + + res->old_ul_value = userlist_get_value (gui->user_tree); + if (gui->lagometer) + res->lag_value = gtk_progress_bar_get_fraction ( + GTK_PROGRESS_BAR (gui->lagometer)); + if (gui->throttlemeter) + res->queue_value = gtk_progress_bar_get_fraction ( + GTK_PROGRESS_BAR (gui->throttlemeter)); + + if (gui->bar) + { + res->c_graph = TRUE; /* still have a graph, just not visible now */ + mg_progressbar_destroy (gui); + } +} + +static void +mg_restore_label (GtkWidget *label, char **text) +{ + if (!label) + return; + + if (*text) + { + gtk_label_set_text (GTK_LABEL (label), *text); + g_free (*text); + *text = NULL; + } else + { + gtk_label_set_text (GTK_LABEL (label), ""); + } +} + +static void +mg_restore_entry (GtkWidget *entry, char **text) +{ + if (*text) + { + gtk_entry_set_text (GTK_ENTRY (entry), *text); + g_free (*text); + *text = NULL; + } else + { + gtk_entry_set_text (GTK_ENTRY (entry), ""); + } + gtk_editable_set_position (GTK_EDITABLE (entry), -1); +} + +static void +mg_restore_speller (GtkWidget *entry, char **text) +{ + if (*text) + { + SPELL_ENTRY_SET_TEXT (entry, *text); + g_free (*text); + *text = NULL; + } else + { + SPELL_ENTRY_SET_TEXT (entry, ""); + } + SPELL_ENTRY_SET_POS (entry, -1); +} + +void +mg_set_topic_tip (session *sess) +{ + char *text; + + switch (sess->type) + { + case SESS_CHANNEL: + if (sess->topic) + { + text = g_strdup_printf (_("Topic for %s is: %s"), sess->channel, + sess->topic); + gtk_widget_set_tooltip_text (sess->gui->topic_entry, text); + g_free (text); + } else + gtk_widget_set_tooltip_text (sess->gui->topic_entry, _("No topic is set")); + break; + default: + if (gtk_entry_get_text (GTK_ENTRY (sess->gui->topic_entry)) && + gtk_entry_get_text (GTK_ENTRY (sess->gui->topic_entry))[0]) + gtk_widget_set_tooltip_text (sess->gui->topic_entry, (char *)gtk_entry_get_text (GTK_ENTRY (sess->gui->topic_entry))); + else + gtk_widget_set_tooltip_text (sess->gui->topic_entry, NULL); + } +} + +static void +mg_hide_empty_pane (GtkPaned *pane) +{ + if ((gtk_paned_get_child1 (pane) == NULL || !gtk_widget_get_visible (gtk_paned_get_child1 (pane))) && + (gtk_paned_get_child2 (pane) == NULL || !gtk_widget_get_visible (gtk_paned_get_child2 (pane)))) + { + gtk_widget_hide (GTK_WIDGET (pane)); + return; + } + + gtk_widget_show (GTK_WIDGET (pane)); +} + +static void +mg_hide_empty_boxes (session_gui *gui) +{ + /* hide empty vpanes - so the handle is not shown */ + mg_hide_empty_pane ((GtkPaned*)gui->vpane_right); + mg_hide_empty_pane ((GtkPaned*)gui->vpane_left); +} + +static void +mg_userlist_showhide (session *sess, int show) +{ + session_gui *gui = sess->gui; + int handle_size; + int right_size; + GtkAllocation allocation; + + right_size = MAX (prefs.hex_gui_pane_right_size, prefs.hex_gui_pane_right_size_min); + + if (show) + { + gtk_widget_show (gui->user_box); + gui->ul_hidden = 0; + + gtk_widget_get_allocation (gui->hpane_right, &allocation); + gtk_widget_style_get (GTK_WIDGET (gui->hpane_right), "handle-size", &handle_size, NULL); + gtk_paned_set_position (GTK_PANED (gui->hpane_right), allocation.width - (right_size + handle_size)); + } + else + { + gtk_widget_hide (gui->user_box); + gui->ul_hidden = 1; + } + + mg_hide_empty_boxes (gui); +} + +static gboolean +mg_is_userlist_and_tree_combined (void) +{ + if (prefs.hex_gui_tab_pos == POS_TOPLEFT && prefs.hex_gui_ulist_pos == POS_BOTTOMLEFT) + return TRUE; + if (prefs.hex_gui_tab_pos == POS_BOTTOMLEFT && prefs.hex_gui_ulist_pos == POS_TOPLEFT) + return TRUE; + + if (prefs.hex_gui_tab_pos == POS_TOPRIGHT && prefs.hex_gui_ulist_pos == POS_BOTTOMRIGHT) + return TRUE; + if (prefs.hex_gui_tab_pos == POS_BOTTOMRIGHT && prefs.hex_gui_ulist_pos == POS_TOPRIGHT) + return TRUE; + + return FALSE; +} + +/* decide if the userlist should be shown or hidden for this tab */ + +void +mg_decide_userlist (session *sess, gboolean switch_to_current) +{ + /* when called from menu.c we need this */ + if (sess->gui == mg_gui && switch_to_current) + sess = current_tab; + + if (prefs.hex_gui_ulist_hide) + { + mg_userlist_showhide (sess, FALSE); + return; + } + + switch (sess->type) + { + case SESS_SERVER: + case SESS_DIALOG: + case SESS_NOTICES: + case SESS_SNOTICES: + if (mg_is_userlist_and_tree_combined ()) + mg_userlist_showhide (sess, TRUE); /* show */ + else + mg_userlist_showhide (sess, FALSE); /* hide */ + break; + default: + mg_userlist_showhide (sess, TRUE); /* show */ + } +} + +static int ul_tag = 0; + +static gboolean +mg_populate_userlist (session *sess) +{ + if (!sess) + sess = current_tab; + + if (is_session (sess)) + { + if (sess->type == SESS_DIALOG) + mg_set_access_icon (sess->gui, NULL, sess->server->is_away); + else + mg_set_access_icon (sess->gui, get_user_icon (sess->server, sess->me), sess->server->is_away); + userlist_show (sess); + userlist_set_value (sess->gui->user_tree, sess->res->old_ul_value); + } + + ul_tag = 0; + return 0; +} + +/* fill the irc tab with a new channel */ + +static void +mg_populate (session *sess) +{ + session_gui *gui = sess->gui; + restore_gui *res = sess->res; + int i, render = TRUE; + guint16 vis = gui->ul_hidden; + GtkAllocation allocation; + + switch (sess->type) + { + case SESS_DIALOG: + /* show the dialog buttons */ + gtk_widget_show (gui->dialogbutton_box); + /* hide the chan-mode buttons */ + gtk_widget_hide (gui->topicbutton_box); + /* hide the userlist */ + mg_decide_userlist (sess, FALSE); + /* shouldn't edit the topic */ + gtk_editable_set_editable (GTK_EDITABLE (gui->topic_entry), FALSE); + /* might be hidden from server tab */ + if (prefs.hex_gui_topicbar) + gtk_widget_show (gui->topic_bar); + break; + case SESS_SERVER: + if (prefs.hex_gui_mode_buttons) + gtk_widget_show (gui->topicbutton_box); + /* hide the dialog buttons */ + gtk_widget_hide (gui->dialogbutton_box); + /* hide the userlist */ + mg_decide_userlist (sess, FALSE); + /* servers don't have topics */ + gtk_widget_hide (gui->topic_bar); + break; + default: + /* hide the dialog buttons */ + gtk_widget_hide (gui->dialogbutton_box); + if (prefs.hex_gui_mode_buttons) + gtk_widget_show (gui->topicbutton_box); + /* show the userlist */ + mg_decide_userlist (sess, FALSE); + /* let the topic be editted */ + gtk_editable_set_editable (GTK_EDITABLE (gui->topic_entry), TRUE); + if (prefs.hex_gui_topicbar) + gtk_widget_show (gui->topic_bar); + } + + /* move to THE irc tab */ + if (gui->is_tab) + gtk_notebook_set_current_page (GTK_NOTEBOOK (gui->note_book), 0); + + /* xtext size change? Then don't render, wait for the expose caused + by showing/hidding the userlist */ + gtk_widget_get_allocation (gui->user_box, &allocation); + if (vis != gui->ul_hidden && allocation.width > 1) + render = FALSE; + + gtk_xtext_buffer_show (GTK_XTEXT (gui->xtext), res->buffer, render); + + if (gui->is_tab) + gtk_widget_set_sensitive (gui->menu, TRUE); + + /* restore all the GtkEntry's */ + mg_restore_entry (gui->topic_entry, &res->topic_text); + mg_restore_speller (gui->input_box, &res->input_text); + mg_restore_entry (gui->key_entry, &res->key_text); + mg_restore_entry (gui->limit_entry, &res->limit_text); + mg_restore_label (gui->laginfo, &res->lag_text); + mg_restore_label (gui->throttleinfo, &res->queue_text); + + mg_focus (sess); + fe_set_title (sess); + + /* this one flickers, so only change if necessary */ + if (strcmp (sess->server->nick, gtk_button_get_label (GTK_BUTTON (gui->nick_label))) != 0) + gtk_button_set_label (GTK_BUTTON (gui->nick_label), sess->server->nick); + + /* this is slow, so make it a timeout event */ + if (!gui->is_tab) + { + mg_populate_userlist (sess); + } else + { + if (ul_tag == 0) + ul_tag = g_idle_add ((GSourceFunc)mg_populate_userlist, NULL); + } + + fe_userlist_numbers (sess); + + /* restore all the channel mode buttons */ + ignore_chanmode = TRUE; + for (i = 0; i < NUM_FLAG_WIDS - 1; i++) + { + /* Hide if mode not supported */ + if (sess->server && strchr (sess->server->chanmodes, chan_flags[i]) == NULL) + gtk_widget_hide (sess->gui->flag_wid[i]); + else + gtk_widget_show (sess->gui->flag_wid[i]); + + /* Update state */ + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gui->flag_wid[i]), + res->flag_wid_state[i]); + } + ignore_chanmode = FALSE; + + if (gui->lagometer) + { + gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (gui->lagometer), + res->lag_value); + if (res->lag_tip) + gtk_widget_set_tooltip_text (gtk_widget_get_parent (sess->gui->lagometer), res->lag_tip); + } + if (gui->throttlemeter) + { + gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (gui->throttlemeter), + res->queue_value); + if (res->queue_tip) + gtk_widget_set_tooltip_text (gtk_widget_get_parent (sess->gui->throttlemeter), res->queue_tip); + } + + /* did this tab have a connecting graph? restore it.. */ + if (res->c_graph) + { + res->c_graph = FALSE; + mg_progressbar_create (gui); + } + + /* menu items */ + menu_set_away (gui, sess->server->is_away); + gtk_widget_set_sensitive (gui->menu_item[MENU_ID_AWAY], sess->server->connected); + gtk_widget_set_sensitive (gui->menu_item[MENU_ID_JOIN], sess->server->end_of_motd); + gtk_widget_set_sensitive (gui->menu_item[MENU_ID_DISCONNECT], + sess->server->connected || sess->server->recondelay_tag); + + mg_set_topic_tip (sess); + + plugin_emit_dummy_print (sess, "Focus Tab"); +} + +void +mg_bring_tofront_sess (session *sess) /* IRC tab or window */ +{ + if (sess->gui->is_tab) + chan_focus (sess->res->tab); + else + gtk_window_present (GTK_WINDOW (sess->gui->window)); +} + +void +mg_bring_tofront (GtkWidget *vbox) /* non-IRC tab or window */ +{ + chan *ch; + + ch = g_object_get_data (G_OBJECT (vbox), "ch"); + if (ch) + chan_focus (ch); + else + gtk_window_present (GTK_WINDOW (gtk_widget_get_toplevel (vbox))); +} + +void +mg_switch_page (int relative, int num) +{ + if (mg_gui) + chanview_move_focus (mg_gui->chanview, relative, num); +} + +/* a toplevel IRC window was destroyed */ + +static void +mg_topdestroy_cb (GtkWidget *win, session *sess) +{ +/* printf("enter mg_topdestroy. sess %p was destroyed\n", sess);*/ + session_free (sess); /* tell hexchat.c about it */ +} + +/* cleanup an IRC tab */ + +static void +mg_ircdestroy (session *sess) +{ + GSList *list; + + session_free (sess); /* tell hexchat.c about it */ + + if (mg_gui == NULL) + { +/* puts("-> mg_gui is already NULL");*/ + return; + } + + list = sess_list; + while (list) + { + sess = list->data; + if (sess->gui->is_tab) + { +/* puts("-> some tabs still remain");*/ + return; + } + list = list->next; + } + +/* puts("-> no tabs left, killing main tabwindow");*/ + gtk_widget_destroy (mg_gui->window); + active_tab = NULL; + mg_gui = NULL; + parent_window = NULL; +} + +static void +mg_tab_close_cb (GtkWidget *dialog, gint arg1, session *sess) +{ + GSList *list, *next; + + gtk_widget_destroy (dialog); + if (arg1 == GTK_RESPONSE_OK && is_session (sess)) + { + /* force it NOT to send individual PARTs */ + sess->server->sent_quit = TRUE; + + for (list = sess_list; list;) + { + next = list->next; + if (((session *)list->data)->server == sess->server && + ((session *)list->data) != sess) + fe_close_window ((session *)list->data); + list = next; + } + + /* just send one QUIT - better for BNCs */ + sess->server->sent_quit = FALSE; + fe_close_window (sess); + } +} + +void +mg_tab_close (session *sess) +{ + GtkWidget *dialog; + GSList *list; + int i; + + if (chan_remove (sess->res->tab, FALSE)) + { + sess->res->tab = NULL; + mg_ircdestroy (sess); + } + else + { + for (i = 0, list = sess_list; list; list = list->next) + { + session *s = (session*)list->data; + if (s->server == sess->server && (s->type == SESS_CHANNEL || s->type == SESS_DIALOG)) + i++; + } + dialog = gtk_message_dialog_new (GTK_WINDOW (parent_window), 0, + GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, + _("This server still has %d channels or dialogs associated with it. " + "Close them all?"), i); + g_signal_connect (G_OBJECT (dialog), "response", + G_CALLBACK (mg_tab_close_cb), sess); + if (prefs.hex_gui_tab_layout) + { + gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); + } + else + { + gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER_ON_PARENT); + } + gtk_widget_show (dialog); + } +} + +static void +mg_menu_destroy (GtkWidget *menu, gpointer userdata) +{ + gtk_widget_destroy (menu); + g_object_unref (menu); +} + +void +mg_create_icon_item (char *label, char *stock, GtkWidget *menu, + void *callback, void *userdata) +{ + GtkWidget *item; + + item = create_icon_menu (label, stock, TRUE); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (callback), + userdata); + gtk_widget_show (item); +} + +static int +mg_count_networks (void) +{ + int cons = 0; + GSList *list; + + for (list = serv_list; list; list = list->next) + { + if (((server *)list->data)->connected) + cons++; + } + return cons; +} + +static int +mg_count_dccs (void) +{ + GSList *list; + struct DCC *dcc; + int dccs = 0; + + list = dcc_list; + while (list) + { + dcc = list->data; + if ((dcc->type == TYPE_SEND || dcc->type == TYPE_RECV) && + dcc->dccstat == STAT_ACTIVE) + dccs++; + list = list->next; + } + + return dccs; +} + +void +mg_open_quit_dialog (gboolean minimize_button) +{ + static GtkWidget *dialog = NULL; + GtkWidget *dialog_vbox1; + GtkWidget *table1; + GtkWidget *image; + GtkWidget *checkbutton1; + GtkWidget *label; + GtkWidget *dialog_action_area1; + GtkWidget *button; + char *text, *connecttext; + int cons; + int dccs; + + if (dialog) + { + gtk_window_present (GTK_WINDOW (dialog)); + return; + } + + dccs = mg_count_dccs (); + cons = mg_count_networks (); + if (dccs + cons == 0 || !prefs.hex_gui_quit_dialog) + { + hexchat_exit (); + return; + } + + dialog = gtk_dialog_new (); + gtk_container_set_border_width (GTK_CONTAINER (dialog), 6); + gtk_window_set_title (GTK_WINDOW (dialog), _("Quit HexChat?")); + gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (parent_window)); + gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); + + dialog_vbox1 = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); + gtk_widget_show (dialog_vbox1); + + table1 = gtk_table_new (2, 2, FALSE); + gtk_widget_show (table1); + gtk_box_pack_start (GTK_BOX (dialog_vbox1), table1, TRUE, TRUE, 0); + gtk_container_set_border_width (GTK_CONTAINER (table1), 6); + gtk_table_set_row_spacings (GTK_TABLE (table1), 12); + gtk_table_set_col_spacings (GTK_TABLE (table1), 12); + + image = gtk_image_new_from_stock ("gtk-dialog-warning", GTK_ICON_SIZE_DIALOG); + gtk_widget_show (image); + gtk_table_attach (GTK_TABLE (table1), image, 0, 1, 0, 1, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (GTK_FILL), 0, 0); + + checkbutton1 = gtk_check_button_new_with_mnemonic (_("Don't ask next time.")); + gtk_widget_show (checkbutton1); + gtk_table_attach (GTK_TABLE (table1), checkbutton1, 0, 2, 1, 2, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 4); + + connecttext = g_strdup_printf (_("You are connected to %i IRC networks."), cons); + text = g_strdup_printf ("<span weight=\"bold\" size=\"larger\">%s</span>\n\n%s\n%s", + _("Are you sure you want to quit?"), + cons ? connecttext : "", + dccs ? _("Some file transfers are still active.") : ""); + g_free (connecttext); + label = gtk_label_new (text); + g_free (text); + gtk_widget_show (label); + gtk_table_attach (GTK_TABLE (table1), label, 1, 2, 0, 1, + (GtkAttachOptions) (GTK_EXPAND | GTK_SHRINK | GTK_FILL), + (GtkAttachOptions) (GTK_EXPAND | GTK_SHRINK), 0, 0); + gtk_label_set_use_markup (GTK_LABEL (label), TRUE); + gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); + + dialog_action_area1 = gtk_dialog_get_action_area (GTK_DIALOG (dialog)); + gtk_widget_show (dialog_action_area1); + gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area1), + GTK_BUTTONBOX_END); + + if (minimize_button && gtkutil_tray_icon_supported (GTK_WINDOW(dialog))) + { + button = gtk_button_new_with_mnemonic (_("_Minimize to Tray")); + gtk_widget_show (button); + gtk_dialog_add_action_widget (GTK_DIALOG (dialog), button, 1); + } + + button = gtk_button_new_from_stock ("gtk-cancel"); + gtk_widget_show (button); + gtk_dialog_add_action_widget (GTK_DIALOG (dialog), button, + GTK_RESPONSE_CANCEL); + gtk_widget_grab_focus (button); + + button = gtk_button_new_from_stock ("gtk-quit"); + gtk_widget_show (button); + gtk_dialog_add_action_widget (GTK_DIALOG (dialog), button, 0); + + gtk_widget_show (dialog); + + switch (gtk_dialog_run (GTK_DIALOG (dialog))) + { + case 0: + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (checkbutton1))) + prefs.hex_gui_quit_dialog = 0; + hexchat_exit (); + break; + case 1: /* minimize to tray */ + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (checkbutton1))) + { + prefs.hex_gui_tray_close = 1; + /*prefs.hex_gui_quit_dialog = 0;*/ + } + /* force tray icon ON, if not already */ + if (!prefs.hex_gui_tray) + { + prefs.hex_gui_tray = 1; + tray_apply_setup (); + } + tray_toggle_visibility (TRUE); + break; + } + + gtk_widget_destroy (dialog); + dialog = NULL; +} + +void +mg_close_sess (session *sess) +{ + if (sess_list->next == NULL) + { + mg_open_quit_dialog (FALSE); + return; + } + + fe_close_window (sess); +} + +static int +mg_chan_remove (chan *ch) +{ + /* remove the tab from chanview */ + chan_remove (ch, TRUE); + /* any tabs left? */ + if (chanview_get_size (mg_gui->chanview) < 1) + { + /* if not, destroy the main tab window */ + gtk_widget_destroy (mg_gui->window); + current_tab = NULL; + active_tab = NULL; + mg_gui = NULL; + parent_window = NULL; + return TRUE; + } + return FALSE; +} + +/* destroy non-irc tab/window */ + +static void +mg_close_gen (chan *ch, GtkWidget *box) +{ + if (!ch) + ch = g_object_get_data (G_OBJECT (box), "ch"); + if (ch) + { + /* remove from notebook */ + gtk_widget_destroy (box); + /* remove the tab from chanview */ + mg_chan_remove (ch); + } else + { + gtk_widget_destroy (gtk_widget_get_toplevel (box)); + } +} + +/* the "X" close button has been pressed (tab-view) */ + +static void +mg_xbutton_cb (chanview *cv, chan *ch, int tag, gpointer userdata) +{ + if (tag == TAG_IRC) /* irc tab */ + mg_close_sess (userdata); + else /* non-irc utility tab */ + mg_close_gen (ch, userdata); +} + +static void +mg_link_gentab (chan *ch, GtkWidget *box) +{ + int num; + GtkWidget *win; + + g_object_ref (box); + + num = gtk_notebook_page_num (GTK_NOTEBOOK (mg_gui->note_book), box); + gtk_notebook_remove_page (GTK_NOTEBOOK (mg_gui->note_book), num); + mg_chan_remove (ch); + + win = gtkutil_window_new (g_object_get_data (G_OBJECT (box), "title"), "", + GPOINTER_TO_INT (g_object_get_data (G_OBJECT (box), "w")), + GPOINTER_TO_INT (g_object_get_data (G_OBJECT (box), "h")), + 2); + /* so it doesn't try to chan_remove (there's no tab anymore) */ + g_object_steal_data (G_OBJECT (box), "ch"); + gtk_container_set_border_width (GTK_CONTAINER (box), 0); + gtk_container_add (GTK_CONTAINER (win), box); + gtk_widget_show (win); + + g_object_unref (box); +} + +static void +mg_detach_tab_cb (GtkWidget *item, chan *ch) +{ + if (chan_get_tag (ch) == TAG_IRC) /* IRC tab */ + { + /* userdata is session * */ + mg_link_irctab (chan_get_userdata (ch), 1); + return; + } + + /* userdata is GtkWidget * */ + mg_link_gentab (ch, chan_get_userdata (ch)); /* non-IRC tab */ +} + +static void +mg_destroy_tab_cb (GtkWidget *item, chan *ch) +{ + /* treat it just like the X button press */ + mg_xbutton_cb (mg_gui->chanview, ch, chan_get_tag (ch), chan_get_userdata (ch)); +} + +static void +mg_color_insert (GtkWidget *item, gpointer userdata) +{ + char buf[32]; + char *text; + int num = GPOINTER_TO_INT (userdata); + + if (num > 99) + { + switch (num) + { + case 100: + text = "\002"; break; + case 101: + text = "\037"; break; + case 102: + text = "\035"; break; + case 103: + text = "\036"; break; + default: + text = "\017"; break; + } + key_action_insert (current_sess->gui->input_box, 0, text, 0, 0); + } else + { + sprintf (buf, "\003%02d", num); + key_action_insert (current_sess->gui->input_box, 0, buf, 0, 0); + } +} + +static void +mg_markup_item (GtkWidget *menu, char *text, int arg) +{ + GtkWidget *item; + + item = gtk_menu_item_new_with_label (""); + gtk_label_set_markup (GTK_LABEL (gtk_bin_get_child (GTK_BIN (item))), text); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (mg_color_insert), GINT_TO_POINTER (arg)); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + gtk_widget_show (item); +} + +GtkWidget * +mg_submenu (GtkWidget *menu, char *text) +{ + GtkWidget *submenu, *item; + + item = gtk_menu_item_new_with_mnemonic (text); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + gtk_widget_show (item); + + submenu = gtk_menu_new (); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), submenu); + gtk_widget_show (submenu); + + return submenu; +} + +static void +mg_create_color_menu (GtkWidget *menu, session *sess) +{ + GtkWidget *submenu; + GtkWidget *subsubmenu; + char buf[256]; + int i; + + submenu = mg_submenu (menu, _("Insert Attribute or Color Code")); + + mg_markup_item (submenu, _("<b>Bold</b>"), 100); + mg_markup_item (submenu, _("<u>Underline</u>"), 101); + mg_markup_item (submenu, _("<i>Italic</i>"), 102); + mg_markup_item (submenu, _("<s>Strikethrough</s>"), 103); + mg_markup_item (submenu, _("Normal"), 999); + + subsubmenu = mg_submenu (submenu, _("Colors 0-7")); + + for (i = 0; i < 8; i++) + { + sprintf (buf, "<tt><sup>%02d</sup> <span background=\"#%02x%02x%02x\">" + " </span></tt>", + i, colors[i].red >> 8, colors[i].green >> 8, colors[i].blue >> 8); + mg_markup_item (subsubmenu, buf, i); + } + + subsubmenu = mg_submenu (submenu, _("Colors 8-15")); + + for (i = 8; i < 16; i++) + { + sprintf (buf, "<tt><sup>%02d</sup> <span background=\"#%02x%02x%02x\">" + " </span></tt>", + i, colors[i].red >> 8, colors[i].green >> 8, colors[i].blue >> 8); + mg_markup_item (subsubmenu, buf, i); + } +} + +static void +mg_set_guint8 (GtkCheckMenuItem *item, guint8 *setting) +{ + session *sess = current_sess; + guint8 logging = sess->text_logging; + + *setting = SET_OFF; + if (gtk_check_menu_item_get_active (item)) + *setting = SET_ON; + + /* has the logging setting changed? */ + if (logging != sess->text_logging) + log_open_or_close (sess); + + chanopt_save (sess); + chanopt_save_all (FALSE); +} + +static void +mg_perchan_menu_item (char *label, GtkWidget *menu, guint8 *setting, guint global) +{ + guint8 initial_value = *setting; + + /* if it's using global value, use that as initial state */ + if (initial_value == SET_DEFAULT) + initial_value = global; + + menu_toggle_item (label, menu, mg_set_guint8, setting, initial_value); +} + +static void +mg_create_perchannelmenu (session *sess, GtkWidget *menu) +{ + GtkWidget *submenu; + + submenu = menu_quick_sub (_("_Settings"), menu, NULL, XCMENU_MNEMONIC, -1); + + mg_perchan_menu_item (_("_Log to Disk"), submenu, &sess->text_logging, prefs.hex_irc_logging); + mg_perchan_menu_item (_("_Reload Scrollback"), submenu, &sess->text_scrollback, prefs.hex_text_replay); + if (sess->type == SESS_CHANNEL) + { + mg_perchan_menu_item (_("Strip _Colors"), submenu, &sess->text_strip, prefs.hex_text_stripcolor_msg); + mg_perchan_menu_item (_("_Hide Join/Part Messages"), submenu, &sess->text_hidejoinpart, prefs.hex_irc_conf_mode); + } +} + +static void +mg_create_alertmenu (session *sess, GtkWidget *menu) +{ + GtkWidget *submenu; + int hex_balloon, hex_beep, hex_tray, hex_flash; + + + switch (sess->type) { + case SESS_DIALOG: + hex_balloon = prefs.hex_input_balloon_priv; + hex_beep = prefs.hex_input_beep_priv; + hex_tray = prefs.hex_input_tray_priv; + hex_flash = prefs.hex_input_flash_priv; + break; + default: + hex_balloon = prefs.hex_input_balloon_chans; + hex_beep = prefs.hex_input_beep_chans; + hex_tray = prefs.hex_input_tray_chans; + hex_flash = prefs.hex_input_flash_chans; + } + + submenu = menu_quick_sub(_("_Extra Alerts"), menu, NULL, XCMENU_MNEMONIC, -1); + + mg_perchan_menu_item(_("Show Notifications"), submenu, &sess->alert_balloon, hex_balloon); + + mg_perchan_menu_item(_("Beep on _Message"), submenu, &sess->alert_beep, hex_beep); + + mg_perchan_menu_item(_("Blink Tray _Icon"), submenu, &sess->alert_tray, hex_tray); + + mg_perchan_menu_item(_("Blink Task _Bar"), submenu, &sess->alert_taskbar, hex_flash); +} + +static void +mg_create_tabmenu (session *sess, GdkEventButton *event, chan *ch) +{ + GtkWidget *menu, *item; + char buf[256]; + + menu = gtk_menu_new (); + + if (sess) + { + char *name = g_markup_escape_text (sess->channel[0] ? sess->channel : _("<none>"), -1); + g_snprintf (buf, sizeof (buf), "<span foreground=\"#3344cc\"><b>%s</b></span>", name); + g_free (name); + + item = gtk_menu_item_new_with_label (""); + gtk_label_set_markup (GTK_LABEL (gtk_bin_get_child (GTK_BIN (item))), buf); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + gtk_widget_show (item); + + /* separator */ + menu_quick_item (0, 0, menu, XCMENU_SHADED, 0, 0); + + /* per-channel alerts */ + mg_create_alertmenu (sess, menu); + + /* per-channel settings */ + mg_create_perchannelmenu (sess, menu); + + /* separator */ + menu_quick_item (0, 0, menu, XCMENU_SHADED, 0, 0); + + if (sess->type == SESS_CHANNEL) + menu_addfavoritemenu (sess->server, menu, sess->channel, TRUE); + else if (sess->type == SESS_SERVER) + menu_addconnectmenu (sess->server, menu); + } + + mg_create_icon_item (_("_Detach"), GTK_STOCK_REDO, menu, + mg_detach_tab_cb, ch); + mg_create_icon_item (_("_Close"), GTK_STOCK_CLOSE, menu, + mg_destroy_tab_cb, ch); + if (sess && tabmenu_list) + menu_create (menu, tabmenu_list, sess->channel, FALSE); + if (sess) + menu_add_plugin_items (menu, "\x4$TAB", sess->channel); + + if (event->window) + gtk_menu_set_screen (GTK_MENU (menu), gdk_window_get_screen (event->window)); + g_object_ref (menu); + g_object_ref_sink (menu); + g_object_unref (menu); + g_signal_connect (G_OBJECT (menu), "selection-done", + G_CALLBACK (mg_menu_destroy), NULL); + gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 0, event->time); +} + +static gboolean +mg_tab_contextmenu_cb (chanview *cv, chan *ch, int tag, gpointer ud, GdkEventButton *event) +{ + /* middle-click to close a tab */ + if (((prefs.hex_gui_tab_middleclose && event->button == 2)) + && event->type == GDK_BUTTON_PRESS) + { + mg_xbutton_cb (cv, ch, tag, ud); + return TRUE; + } + + if (event->button != 3) + return FALSE; + + if (tag == TAG_IRC) + mg_create_tabmenu (ud, event, ch); + else + mg_create_tabmenu (NULL, event, ch); + + return TRUE; +} + +void +mg_dnd_drop_file (session *sess, char *target, char *uri) +{ + char *p, *data, *next, *fname; + + p = data = g_strdup (uri); + while (*p) + { + next = strchr (p, '\r'); + if (g_ascii_strncasecmp ("file:", p, 5) == 0) + { + if (next) + *next = 0; + fname = g_filename_from_uri (p, NULL, NULL); + if (fname) + { + /* dcc_send() expects utf-8 */ + p = g_filename_from_utf8 (fname, -1, 0, 0, 0); + if (p) + { + dcc_send (sess, target, p, prefs.hex_dcc_max_send_cps, 0); + g_free (p); + } + g_free (fname); + } + } + if (!next) + break; + p = next + 1; + if (*p == '\n') + p++; + } + g_free (data); + +} + +static void +mg_dialog_dnd_drop (GtkWidget * widget, GdkDragContext * context, gint x, + gint y, GtkSelectionData * selection_data, guint info, + guint32 time, gpointer ud) +{ + if (current_sess->type == SESS_DIALOG) + /* sess->channel is really the nickname of dialogs */ + mg_dnd_drop_file (current_sess, current_sess->channel, (char *)gtk_selection_data_get_data (selection_data)); +} + +/* add a tabbed channel */ + +static void +mg_add_chan (session *sess) +{ + GdkPixbuf *icon; + char *name = _("<none>"); + + if (sess->channel[0]) + name = sess->channel; + + switch (sess->type) + { + case SESS_CHANNEL: + icon = pix_tree_channel; + break; + case SESS_SERVER: + icon = pix_tree_server; + break; + default: + icon = pix_tree_dialog; + } + + sess->res->tab = chanview_add (sess->gui->chanview, name, sess->server, sess, + sess->type == SESS_SERVER ? FALSE : TRUE, + TAG_IRC, icon); + if (plain_list == NULL) + mg_create_tab_colors (); + + chan_set_color (sess->res->tab, plain_list); + + if (sess->res->buffer == NULL) + { + sess->res->buffer = gtk_xtext_buffer_new (GTK_XTEXT (sess->gui->xtext)); + gtk_xtext_set_time_stamp (sess->res->buffer, prefs.hex_stamp_text); + sess->res->user_model = userlist_create_model (sess); + } +} + +static void +mg_userlist_button (GtkWidget * box, char *label, char *cmd, + int a, int b, int c, int d) +{ + GtkWidget *wid = gtk_button_new_with_label (label); + g_signal_connect (G_OBJECT (wid), "clicked", + G_CALLBACK (userlist_button_cb), cmd); + gtk_table_attach_defaults (GTK_TABLE (box), wid, a, b, c, d); + show_and_unfocus (wid); +} + +static GtkWidget * +mg_create_userlistbuttons (GtkWidget *box) +{ + struct popup *pop; + GSList *list = button_list; + int a = 0, b = 0; + GtkWidget *tab; + + tab = gtk_table_new (5, 2, FALSE); + gtk_box_pack_end (GTK_BOX (box), tab, FALSE, FALSE, 0); + + while (list) + { + pop = list->data; + if (pop->cmd[0]) + { + mg_userlist_button (tab, pop->name, pop->cmd, a, a + 1, b, b + 1); + a++; + if (a == 2) + { + a = 0; + b++; + } + } + list = list->next; + } + + return tab; +} + +static void +mg_topic_cb (GtkWidget *entry, gpointer userdata) +{ + session *sess = current_sess; + char *text; + + if (sess->channel[0] && sess->server->connected && sess->type == SESS_CHANNEL) + { + text = (char *)gtk_entry_get_text (GTK_ENTRY (entry)); + if (text[0] == 0) + text = NULL; + sess->server->p_topic (sess->server, sess->channel, text); + } else + gtk_entry_set_text (GTK_ENTRY (entry), ""); + /* restore focus to the input widget, where the next input will most +likely be */ + gtk_widget_grab_focus (sess->gui->input_box); +} + +static void +mg_tabwindow_kill_cb (GtkWidget *win, gpointer userdata) +{ + GSList *list, *next; + session *sess; + +/* puts("enter mg_tabwindow_kill_cb");*/ + hexchat_is_quitting = TRUE; + + /* see if there's any non-tab windows left */ + list = sess_list; + while (list) + { + sess = list->data; + next = list->next; + if (!sess->gui->is_tab) + { + hexchat_is_quitting = FALSE; +/* puts("-> will not exit, some toplevel windows left");*/ + } else + { + mg_ircdestroy (sess); + } + list = next; + } + + current_tab = NULL; + active_tab = NULL; + mg_gui = NULL; + parent_window = NULL; +} + +static GtkWidget * +mg_changui_destroy (session *sess) +{ + GtkWidget *ret = NULL; + + if (sess->gui->is_tab) + { + /* avoid calling the "destroy" callback */ + g_signal_handlers_disconnect_by_func (G_OBJECT (sess->gui->window), + mg_tabwindow_kill_cb, 0); + /* remove the tab from the chanview */ + if (!mg_chan_remove (sess->res->tab)) + /* if the window still exists, restore the signal handler */ + g_signal_connect (G_OBJECT (sess->gui->window), "destroy", + G_CALLBACK (mg_tabwindow_kill_cb), 0); + } else + { + /* avoid calling the "destroy" callback */ + g_signal_handlers_disconnect_by_func (G_OBJECT (sess->gui->window), + mg_topdestroy_cb, sess); + /*gtk_widget_destroy (sess->gui->window);*/ + /* don't destroy until the new one is created. Not sure why, but */ + /* it fixes: Gdk-CRITICAL **: gdk_colormap_get_screen: */ + /* assertion `GDK_IS_COLORMAP (cmap)' failed */ + ret = sess->gui->window; + g_free (sess->gui); + sess->gui = NULL; + } + return ret; +} + +static void +mg_link_irctab (session *sess, int focus) +{ + GtkWidget *win; + + if (sess->gui->is_tab) + { + win = mg_changui_destroy (sess); + mg_changui_new (sess, sess->res, 0, focus); + mg_populate (sess); + hexchat_is_quitting = FALSE; + if (win) + gtk_widget_destroy (win); + return; + } + + mg_unpopulate (sess); + win = mg_changui_destroy (sess); + mg_changui_new (sess, sess->res, 1, focus); + /* the buffer is now attached to a different widget */ + ((xtext_buffer *)sess->res->buffer)->xtext = (GtkXText *)sess->gui->xtext; + if (win) + gtk_widget_destroy (win); +} + +void +mg_detach (session *sess, int mode) +{ + switch (mode) + { + /* detach only */ + case 1: + if (sess->gui->is_tab) + mg_link_irctab (sess, 1); + break; + /* attach only */ + case 2: + if (!sess->gui->is_tab) + mg_link_irctab (sess, 1); + break; + /* toggle */ + default: + mg_link_irctab (sess, 1); + } +} + +static int +check_is_number (char *t) +{ + while (*t) + { + if (*t < '0' || *t > '9') + return FALSE; + t++; + } + return TRUE; +} + +static void +mg_change_flag (GtkWidget * wid, session *sess, char flag) +{ + server *serv = sess->server; + char mode[3]; + + mode[1] = flag; + mode[2] = '\0'; + if (serv->connected && sess->channel[0]) + { + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (wid))) + mode[0] = '+'; + else + mode[0] = '-'; + serv->p_mode (serv, sess->channel, mode); + serv->p_join_info (serv, sess->channel); + sess->ignore_mode = TRUE; + sess->ignore_date = TRUE; + } +} + +static void +flagl_hit (GtkWidget * wid, struct session *sess) +{ + char modes[512]; + const char *limit_str; + server *serv = sess->server; + + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (wid))) + { + if (serv->connected && sess->channel[0]) + { + limit_str = gtk_entry_get_text (GTK_ENTRY (sess->gui->limit_entry)); + if (check_is_number ((char *)limit_str) == FALSE) + { + fe_message (_("User limit must be a number!\n"), FE_MSG_ERROR); + gtk_entry_set_text (GTK_ENTRY (sess->gui->limit_entry), ""); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wid), FALSE); + return; + } + g_snprintf (modes, sizeof (modes), "+l %d", atoi (limit_str)); + serv->p_mode (serv, sess->channel, modes); + serv->p_join_info (serv, sess->channel); + } + } else + mg_change_flag (wid, sess, 'l'); +} + +static void +flagk_hit (GtkWidget * wid, struct session *sess) +{ + char modes[512]; + server *serv = sess->server; + + if (serv->connected && sess->channel[0]) + { + g_snprintf (modes, sizeof (modes), "-k %s", + gtk_entry_get_text (GTK_ENTRY (sess->gui->key_entry))); + + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (wid))) + modes[0] = '+'; + + serv->p_mode (serv, sess->channel, modes); + } +} + +static void +mg_flagbutton_cb (GtkWidget *but, char *flag) +{ + session *sess; + char mode; + + if (ignore_chanmode) + return; + + sess = current_sess; + mode = tolower ((unsigned char) flag[0]); + + switch (mode) + { + case 'l': + flagl_hit (but, sess); + break; + case 'k': + flagk_hit (but, sess); + break; + case 'b': + ignore_chanmode = TRUE; + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sess->gui->flag_b), FALSE); + ignore_chanmode = FALSE; + banlist_opengui (sess); + break; + default: + mg_change_flag (but, sess, mode); + } +} + +static GtkWidget * +mg_create_flagbutton (char *tip, GtkWidget *box, char *face) +{ + GtkWidget *btn, *lbl; + char label_markup[16]; + + g_snprintf (label_markup, sizeof(label_markup), "<tt>%s</tt>", face); + lbl = gtk_label_new (NULL); + gtk_label_set_markup (GTK_LABEL(lbl), label_markup); + + btn = gtk_toggle_button_new (); + gtk_widget_set_size_request (btn, -1, 0); + gtk_widget_set_tooltip_text (btn, tip); + gtk_container_add (GTK_CONTAINER(btn), lbl); + + gtk_box_pack_start (GTK_BOX (box), btn, 0, 0, 0); + g_signal_connect (G_OBJECT (btn), "toggled", + G_CALLBACK (mg_flagbutton_cb), face); + show_and_unfocus (btn); + + return btn; +} + +static void +mg_key_entry_cb (GtkWidget * igad, gpointer userdata) +{ + char modes[512]; + session *sess = current_sess; + server *serv = sess->server; + + if (serv->connected && sess->channel[0]) + { + g_snprintf (modes, sizeof (modes), "+k %s", + gtk_entry_get_text (GTK_ENTRY (igad))); + serv->p_mode (serv, sess->channel, modes); + serv->p_join_info (serv, sess->channel); + } +} + +static void +mg_limit_entry_cb (GtkWidget * igad, gpointer userdata) +{ + char modes[512]; + session *sess = current_sess; + server *serv = sess->server; + + if (serv->connected && sess->channel[0]) + { + if (check_is_number ((char *)gtk_entry_get_text (GTK_ENTRY (igad))) == FALSE) + { + gtk_entry_set_text (GTK_ENTRY (igad), ""); + fe_message (_("User limit must be a number!\n"), FE_MSG_ERROR); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sess->gui->flag_l), FALSE); + return; + } + g_snprintf (modes, sizeof(modes), "+l %d", + atoi (gtk_entry_get_text (GTK_ENTRY (igad)))); + serv->p_mode (serv, sess->channel, modes); + serv->p_join_info (serv, sess->channel); + } +} + +static void +mg_apply_entry_style (GtkWidget *entry) +{ + gtk_widget_modify_base (entry, GTK_STATE_NORMAL, &colors[COL_BG]); + gtk_widget_modify_text (entry, GTK_STATE_NORMAL, &colors[COL_FG]); + gtk_widget_modify_font (entry, input_style->font_desc); +} + +static void +mg_create_chanmodebuttons (session_gui *gui, GtkWidget *box) +{ + gui->flag_c = mg_create_flagbutton (_("Filter Colors"), box, "c"); + gui->flag_n = mg_create_flagbutton (_("No outside messages"), box, "n"); + gui->flag_t = mg_create_flagbutton (_("Topic Protection"), box, "t"); + gui->flag_i = mg_create_flagbutton (_("Invite Only"), box, "i"); + gui->flag_m = mg_create_flagbutton (_("Moderated"), box, "m"); + gui->flag_b = mg_create_flagbutton (_("Ban List"), box, "b"); + + gui->flag_k = mg_create_flagbutton (_("Keyword"), box, "k"); + gui->key_entry = gtk_entry_new (); + gtk_widget_set_name (gui->key_entry, "hexchat-inputbox"); + gtk_entry_set_max_length (GTK_ENTRY (gui->key_entry), 23); + gtk_widget_set_size_request (gui->key_entry, 115, -1); + gtk_box_pack_start (GTK_BOX (box), gui->key_entry, 0, 0, 0); + g_signal_connect (G_OBJECT (gui->key_entry), "activate", + G_CALLBACK (mg_key_entry_cb), NULL); + + if (prefs.hex_gui_input_style) + mg_apply_entry_style (gui->key_entry); + + gui->flag_l = mg_create_flagbutton (_("User Limit"), box, "l"); + gui->limit_entry = gtk_entry_new (); + gtk_widget_set_name (gui->limit_entry, "hexchat-inputbox"); + gtk_entry_set_max_length (GTK_ENTRY (gui->limit_entry), 10); + gtk_widget_set_size_request (gui->limit_entry, 30, -1); + gtk_box_pack_start (GTK_BOX (box), gui->limit_entry, 0, 0, 0); + g_signal_connect (G_OBJECT (gui->limit_entry), "activate", + G_CALLBACK (mg_limit_entry_cb), NULL); + + if (prefs.hex_gui_input_style) + mg_apply_entry_style (gui->limit_entry); +} + +/*static void +mg_create_link_buttons (GtkWidget *box, gpointer userdata) +{ + gtkutil_button (box, GTK_STOCK_CLOSE, _("Close this tab/window"), + mg_x_click_cb, userdata, 0); + + if (!userdata) + gtkutil_button (box, GTK_STOCK_REDO, _("Attach/Detach this tab"), + mg_link_cb, userdata, 0); +}*/ + +static void +mg_dialog_button_cb (GtkWidget *wid, char *cmd) +{ + /* the longest cmd is 12, and the longest nickname is 64 */ + char buf[128]; + char *host = ""; + char *topic; + + if (!current_sess) + return; + + topic = (char *)(gtk_entry_get_text (GTK_ENTRY (current_sess->gui->topic_entry))); + topic = strrchr (topic, '@'); + if (topic) + host = topic + 1; + + auto_insert (buf, sizeof (buf), cmd, 0, 0, "", "", "", + server_get_network (current_sess->server, TRUE), host, "", + current_sess->channel, ""); + + handle_command (current_sess, buf, TRUE); + + /* dirty trick to avoid auto-selection */ + SPELL_ENTRY_SET_EDITABLE (current_sess->gui->input_box, FALSE); + gtk_widget_grab_focus (current_sess->gui->input_box); + SPELL_ENTRY_SET_EDITABLE (current_sess->gui->input_box, TRUE); +} + +static void +mg_dialog_button (GtkWidget *box, char *name, char *cmd) +{ + GtkWidget *wid; + + wid = gtk_button_new_with_label (name); + gtk_box_pack_start (GTK_BOX (box), wid, FALSE, FALSE, 0); + g_signal_connect (G_OBJECT (wid), "clicked", + G_CALLBACK (mg_dialog_button_cb), cmd); + gtk_widget_set_size_request (wid, -1, 0); +} + +static void +mg_create_dialogbuttons (GtkWidget *box) +{ + struct popup *pop; + GSList *list = dlgbutton_list; + + while (list) + { + pop = list->data; + if (pop->cmd[0]) + mg_dialog_button (box, pop->name, pop->cmd); + list = list->next; + } +} + +static void +mg_create_topicbar (session *sess, GtkWidget *box) +{ + GtkWidget *hbox, *topic, *bbox; + session_gui *gui = sess->gui; + + gui->topic_bar = hbox = gtk_hbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (box), hbox, 0, 0, 0); + + if (!gui->is_tab) + sess->res->tab = NULL; + + gui->topic_entry = topic = sexy_spell_entry_new (); + gtk_widget_set_name (topic, "hexchat-inputbox"); + sexy_spell_entry_set_checked (SEXY_SPELL_ENTRY (topic), FALSE); + gtk_container_add (GTK_CONTAINER (hbox), topic); + g_signal_connect (G_OBJECT (topic), "activate", + G_CALLBACK (mg_topic_cb), 0); + + if (prefs.hex_gui_input_style) + mg_apply_entry_style (topic); + + gui->topicbutton_box = bbox = gtk_hbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (hbox), bbox, 0, 0, 0); + mg_create_chanmodebuttons (gui, bbox); + + gui->dialogbutton_box = bbox = gtk_hbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (hbox), bbox, 0, 0, 0); + mg_create_dialogbuttons (bbox); +} + +/* check if a word is clickable */ + +static int +mg_word_check (GtkWidget * xtext, char *word) +{ + session *sess = current_sess; + int ret; + + ret = url_check_word (word); + if (ret == 0 && sess->type == SESS_DIALOG) + return WORD_DIALOG; + + return ret; +} + +/* mouse click inside text area */ + +static void +mg_word_clicked (GtkWidget *xtext, char *word, GdkEventButton *even) +{ + session *sess = current_sess; + int word_type = 0, start, end; + char *tmp; + + if (word) + { + word_type = mg_word_check (xtext, word); + url_last (&start, &end); + } + + if (even->button == 1) /* left button */ + { + if (word == NULL) + { + mg_focus (sess); + return; + } + + if ((even->state & 13) == prefs.hex_gui_url_mod) + { + switch (word_type) + { + case WORD_URL: + case WORD_HOST6: + case WORD_HOST: + word[end] = 0; + fe_open_url (word + start); + } + } + return; + } + + if (even->button == 2) + { + if (sess->type == SESS_DIALOG) + menu_middlemenu (sess, even); + else if (even->type == GDK_2BUTTON_PRESS) + userlist_select (sess, word); + return; + } + if (word == NULL) + return; + + switch (word_type) + { + case 0: + case WORD_PATH: + menu_middlemenu (sess, even); + break; + case WORD_URL: + case WORD_HOST6: + case WORD_HOST: + word[end] = 0; + word += start; + menu_urlmenu (even, word); + break; + case WORD_NICK: + word[end] = 0; + word += start; + menu_nickmenu (sess, even, word, FALSE); + break; + case WORD_CHANNEL: + word[end] = 0; + word += start; + menu_chanmenu (sess, even, word); + break; + case WORD_EMAIL: + word[end] = 0; + word += start; + tmp = g_strdup_printf ("mailto:%s", word + (ispunct (*word) ? 1 : 0)); + menu_urlmenu (even, tmp); + g_free (tmp); + break; + case WORD_DIALOG: + menu_nickmenu (sess, even, sess->channel, FALSE); + break; + } +} + +void +mg_update_xtext (GtkWidget *wid) +{ + GtkXText *xtext = GTK_XTEXT (wid); + + gtk_xtext_set_palette (xtext, colors); + gtk_xtext_set_max_lines (xtext, prefs.hex_text_max_lines); + gtk_xtext_set_background (xtext, channelwin_pix); + gtk_xtext_set_wordwrap (xtext, prefs.hex_text_wordwrap); + gtk_xtext_set_show_marker (xtext, prefs.hex_text_show_marker); + gtk_xtext_set_show_separator (xtext, prefs.hex_text_indent ? prefs.hex_text_show_sep : 0); + gtk_xtext_set_indent (xtext, prefs.hex_text_indent); + if (!gtk_xtext_set_font (xtext, prefs.hex_text_font)) + { + fe_message ("Failed to open any font. I'm out of here!", FE_MSG_WAIT | FE_MSG_ERROR); + exit (1); + } + + gtk_xtext_refresh (xtext); +} + +static void +mg_create_textarea (session *sess, GtkWidget *box) +{ + GtkWidget *inbox, *vbox, *frame; + GtkXText *xtext; + session_gui *gui = sess->gui; + static const GtkTargetEntry dnd_targets[] = + { + {"text/uri-list", 0, 1} + }; + static const GtkTargetEntry dnd_dest_targets[] = + { + {"HEXCHAT_CHANVIEW", GTK_TARGET_SAME_APP, 75 }, + {"HEXCHAT_USERLIST", GTK_TARGET_SAME_APP, 75 } + }; + + vbox = gtk_vbox_new (FALSE, 0); + gtk_container_add (GTK_CONTAINER (box), vbox); + inbox = gtk_hbox_new (FALSE, 2); + gtk_container_add (GTK_CONTAINER (vbox), inbox); + + frame = gtk_frame_new (NULL); + gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN); + gtk_container_add (GTK_CONTAINER (inbox), frame); + + gui->xtext = gtk_xtext_new (colors, TRUE); + xtext = GTK_XTEXT (gui->xtext); + gtk_xtext_set_max_indent (xtext, prefs.hex_text_max_indent); + gtk_xtext_set_thin_separator (xtext, prefs.hex_text_thin_sep); + gtk_xtext_set_urlcheck_function (xtext, mg_word_check); + gtk_xtext_set_max_lines (xtext, prefs.hex_text_max_lines); + gtk_container_add (GTK_CONTAINER (frame), GTK_WIDGET (xtext)); + + mg_update_xtext (GTK_WIDGET (xtext)); + + g_signal_connect (G_OBJECT (xtext), "word_click", + G_CALLBACK (mg_word_clicked), NULL); + + gui->vscrollbar = gtk_vscrollbar_new (GTK_XTEXT (xtext)->adj); + gtk_box_pack_start (GTK_BOX (inbox), gui->vscrollbar, FALSE, TRUE, 0); + + gtk_drag_dest_set (gui->vscrollbar, 5, dnd_dest_targets, 2, + GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_LINK); + g_signal_connect (G_OBJECT (gui->vscrollbar), "drag_begin", + G_CALLBACK (mg_drag_begin_cb), NULL); + g_signal_connect (G_OBJECT (gui->vscrollbar), "drag_drop", + G_CALLBACK (mg_drag_drop_cb), NULL); + g_signal_connect (G_OBJECT (gui->vscrollbar), "drag_motion", + G_CALLBACK (mg_drag_motion_cb), gui->vscrollbar); + g_signal_connect (G_OBJECT (gui->vscrollbar), "drag_end", + G_CALLBACK (mg_drag_end_cb), NULL); + + gtk_drag_dest_set (gui->xtext, GTK_DEST_DEFAULT_ALL, dnd_targets, 1, + GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_LINK); + g_signal_connect (G_OBJECT (gui->xtext), "drag_data_received", + G_CALLBACK (mg_dialog_dnd_drop), NULL); +} + +static GtkWidget * +mg_create_infoframe (GtkWidget *box) +{ + GtkWidget *frame, *label, *hbox; + + frame = gtk_frame_new (0); + gtk_frame_set_shadow_type ((GtkFrame*)frame, GTK_SHADOW_OUT); + gtk_container_add (GTK_CONTAINER (box), frame); + + hbox = gtk_hbox_new (0, 0); + gtk_container_add (GTK_CONTAINER (frame), hbox); + + label = gtk_label_new (NULL); + gtk_container_add (GTK_CONTAINER (hbox), label); + + return label; +} + +static void +mg_create_meters (session_gui *gui, GtkWidget *parent_box) +{ + GtkWidget *infbox, *wid, *box; + + gui->meter_box = infbox = box = gtk_vbox_new (0, 1); + gtk_box_pack_start (GTK_BOX (parent_box), box, 0, 0, 0); + + if ((prefs.hex_gui_lagometer & 2) || (prefs.hex_gui_throttlemeter & 2)) + { + infbox = gtk_hbox_new (0, 0); + gtk_box_pack_start (GTK_BOX (box), infbox, 0, 0, 0); + } + + if (prefs.hex_gui_lagometer & 1) + { + gui->lagometer = wid = gtk_progress_bar_new (); +#ifdef WIN32 + gtk_widget_set_size_request (wid, 1, 10); +#else + gtk_widget_set_size_request (wid, 1, 8); +#endif + + wid = gtk_event_box_new (); + gtk_container_add (GTK_CONTAINER (wid), gui->lagometer); + gtk_box_pack_start (GTK_BOX (box), wid, 0, 0, 0); + } + if (prefs.hex_gui_lagometer & 2) + { + gui->laginfo = wid = mg_create_infoframe (infbox); + gtk_label_set_text ((GtkLabel *) wid, "Lag"); + } + + if (prefs.hex_gui_throttlemeter & 1) + { + gui->throttlemeter = wid = gtk_progress_bar_new (); +#ifdef WIN32 + gtk_widget_set_size_request (wid, 1, 10); +#else + gtk_widget_set_size_request (wid, 1, 8); +#endif + + wid = gtk_event_box_new (); + gtk_container_add (GTK_CONTAINER (wid), gui->throttlemeter); + gtk_box_pack_start (GTK_BOX (box), wid, 0, 0, 0); + } + if (prefs.hex_gui_throttlemeter & 2) + { + gui->throttleinfo = wid = mg_create_infoframe (infbox); + gtk_label_set_text ((GtkLabel *) wid, "Throttle"); + } +} + +void +mg_update_meters (session_gui *gui) +{ + gtk_widget_destroy (gui->meter_box); + gui->lagometer = NULL; + gui->laginfo = NULL; + gui->throttlemeter = NULL; + gui->throttleinfo = NULL; + + mg_create_meters (gui, gui->button_box_parent); + gtk_widget_show_all (gui->meter_box); +} + +static void +mg_create_userlist (session_gui *gui, GtkWidget *box) +{ + GtkWidget *frame, *ulist, *vbox; + + vbox = gtk_vbox_new (0, 1); + gtk_container_add (GTK_CONTAINER (box), vbox); + + frame = gtk_frame_new (NULL); + if (prefs.hex_gui_ulist_count) + gtk_box_pack_start (GTK_BOX (vbox), frame, 0, 0, GUI_SPACING); + + gui->namelistinfo = gtk_label_new (NULL); + gtk_container_add (GTK_CONTAINER (frame), gui->namelistinfo); + + gui->user_tree = ulist = userlist_create (vbox); + + if (prefs.hex_gui_ulist_style) + { + gtk_widget_set_style (ulist, input_style); + gtk_widget_modify_base (ulist, GTK_STATE_NORMAL, &colors[COL_BG]); + } + + mg_create_meters (gui, vbox); + + gui->button_box_parent = vbox; + gui->button_box = mg_create_userlistbuttons (vbox); +} + +static void +mg_vpane_cb (GtkPaned *pane, GParamSpec *param, session_gui *gui) +{ + prefs.hex_gui_pane_divider_position = gtk_paned_get_position (pane); +} + +static void +mg_leftpane_cb (GtkPaned *pane, GParamSpec *param, session_gui *gui) +{ + prefs.hex_gui_pane_left_size = gtk_paned_get_position (pane); +} + +static void +mg_rightpane_cb (GtkPaned *pane, GParamSpec *param, session_gui *gui) +{ + int handle_size; + GtkAllocation allocation; + + gtk_widget_style_get (GTK_WIDGET (pane), "handle-size", &handle_size, NULL); + /* record the position from the RIGHT side */ + gtk_widget_get_allocation (GTK_WIDGET(pane), &allocation); + prefs.hex_gui_pane_right_size = allocation.width - gtk_paned_get_position (pane) - handle_size; +} + +static gboolean +mg_add_pane_signals (session_gui *gui) +{ + g_signal_connect (G_OBJECT (gui->hpane_right), "notify::position", + G_CALLBACK (mg_rightpane_cb), gui); + g_signal_connect (G_OBJECT (gui->hpane_left), "notify::position", + G_CALLBACK (mg_leftpane_cb), gui); + g_signal_connect (G_OBJECT (gui->vpane_left), "notify::position", + G_CALLBACK (mg_vpane_cb), gui); + g_signal_connect (G_OBJECT (gui->vpane_right), "notify::position", + G_CALLBACK (mg_vpane_cb), gui); + return FALSE; +} + +static void +mg_create_center (session *sess, session_gui *gui, GtkWidget *box) +{ + GtkWidget *vbox, *hbox, *book; + + /* sep between top and bottom of left side */ + gui->vpane_left = gtk_vpaned_new (); + + /* sep between top and bottom of right side */ + gui->vpane_right = gtk_vpaned_new (); + + /* sep between left and xtext */ + gui->hpane_left = gtk_hpaned_new (); + gtk_paned_set_position (GTK_PANED (gui->hpane_left), prefs.hex_gui_pane_left_size); + + /* sep between xtext and right side */ + gui->hpane_right = gtk_hpaned_new (); + + if (prefs.hex_gui_win_swap) + { + gtk_paned_pack2 (GTK_PANED (gui->hpane_left), gui->vpane_left, FALSE, TRUE); + gtk_paned_pack1 (GTK_PANED (gui->hpane_left), gui->hpane_right, TRUE, TRUE); + } + else + { + gtk_paned_pack1 (GTK_PANED (gui->hpane_left), gui->vpane_left, FALSE, TRUE); + gtk_paned_pack2 (GTK_PANED (gui->hpane_left), gui->hpane_right, TRUE, TRUE); + } + gtk_paned_pack2 (GTK_PANED (gui->hpane_right), gui->vpane_right, FALSE, TRUE); + + gtk_container_add (GTK_CONTAINER (box), gui->hpane_left); + + gui->note_book = book = gtk_notebook_new (); + gtk_notebook_set_show_tabs (GTK_NOTEBOOK (book), FALSE); + gtk_notebook_set_show_border (GTK_NOTEBOOK (book), FALSE); + gtk_paned_pack1 (GTK_PANED (gui->hpane_right), book, TRUE, TRUE); + + hbox = gtk_hbox_new (FALSE, 0); + gtk_paned_pack1 (GTK_PANED (gui->vpane_right), hbox, FALSE, TRUE); + mg_create_userlist (gui, hbox); + + gui->user_box = hbox; + + vbox = gtk_vbox_new (FALSE, 3); + gtk_notebook_append_page (GTK_NOTEBOOK (book), vbox, NULL); + mg_create_topicbar (sess, vbox); + + if (prefs.hex_gui_search_pos) + { + mg_create_search (sess, vbox); + mg_create_textarea (sess, vbox); + } + else + { + mg_create_textarea (sess, vbox); + mg_create_search (sess, vbox); + } + + mg_create_entry (sess, vbox); + + mg_add_pane_signals (gui); +} + +static void +mg_change_nick (int cancel, char *text, gpointer userdata) +{ + char buf[256]; + + if (!cancel) + { + g_snprintf (buf, sizeof (buf), "nick %s", text); + handle_command (current_sess, buf, FALSE); + } +} + +static void +mg_nickclick_cb (GtkWidget *button, gpointer userdata) +{ + fe_get_str (_("Enter new nickname:"), current_sess->server->nick, + mg_change_nick, (void *) 1); +} + +/* make sure chanview and userlist positions are sane */ + +static void +mg_sanitize_positions (int *cv, int *ul) +{ + if (prefs.hex_gui_tab_layout == 2) + { + /* treeview can't be on TOP or BOTTOM */ + if (*cv == POS_TOP || *cv == POS_BOTTOM) + *cv = POS_TOPLEFT; + } + + /* userlist can't be on TOP or BOTTOM */ + if (*ul == POS_TOP || *ul == POS_BOTTOM) + *ul = POS_TOPRIGHT; + + /* can't have both in the same place */ + if (*cv == *ul) + { + *cv = POS_TOPRIGHT; + if (*ul == POS_TOPRIGHT) + *cv = POS_BOTTOMRIGHT; + } +} + +static void +mg_place_userlist_and_chanview_real (session_gui *gui, GtkWidget *userlist, GtkWidget *chanview) +{ + int unref_userlist = FALSE; + int unref_chanview = FALSE; + + /* first, remove userlist/treeview from their containers */ + if (userlist && gtk_widget_get_parent (userlist)) + { + g_object_ref (userlist); + gtk_container_remove (GTK_CONTAINER (gtk_widget_get_parent (userlist)), userlist); + unref_userlist = TRUE; + } + + if (chanview && gtk_widget_get_parent (chanview)) + { + g_object_ref (chanview); + gtk_container_remove (GTK_CONTAINER (gtk_widget_get_parent (chanview)), chanview); + unref_chanview = TRUE; + } + + if (chanview) + { + /* incase the previous pos was POS_HIDDEN */ + gtk_widget_show (chanview); + + gtk_table_set_row_spacing (GTK_TABLE (gui->main_table), 1, 0); + gtk_table_set_row_spacing (GTK_TABLE (gui->main_table), 2, 2); + + /* then place them back in their new positions */ + switch (prefs.hex_gui_tab_pos) + { + case POS_TOPLEFT: + gtk_paned_pack1 (GTK_PANED (gui->vpane_left), chanview, FALSE, TRUE); + break; + case POS_BOTTOMLEFT: + gtk_paned_pack2 (GTK_PANED (gui->vpane_left), chanview, FALSE, TRUE); + break; + case POS_TOPRIGHT: + gtk_paned_pack1 (GTK_PANED (gui->vpane_right), chanview, FALSE, TRUE); + break; + case POS_BOTTOMRIGHT: + gtk_paned_pack2 (GTK_PANED (gui->vpane_right), chanview, FALSE, TRUE); + break; + case POS_TOP: + gtk_table_set_row_spacing (GTK_TABLE (gui->main_table), 1, GUI_SPACING-1); + gtk_table_attach (GTK_TABLE (gui->main_table), chanview, + 1, 2, 1, 2, GTK_FILL, GTK_FILL, 0, 0); + break; + case POS_HIDDEN: + gtk_widget_hide (chanview); + /* always attach it to something to avoid ref_count=0 */ + if (prefs.hex_gui_ulist_pos == POS_TOP) + gtk_table_attach (GTK_TABLE (gui->main_table), chanview, + 1, 2, 3, 4, GTK_FILL, GTK_FILL, 0, 0); + + else + gtk_table_attach (GTK_TABLE (gui->main_table), chanview, + 1, 2, 1, 2, GTK_FILL, GTK_FILL, 0, 0); + break; + default:/* POS_BOTTOM */ + gtk_table_set_row_spacing (GTK_TABLE (gui->main_table), 2, 3); + gtk_table_attach (GTK_TABLE (gui->main_table), chanview, + 1, 2, 3, 4, GTK_FILL, GTK_FILL, 0, 0); + } + } + + if (userlist) + { + switch (prefs.hex_gui_ulist_pos) + { + case POS_TOPLEFT: + gtk_paned_pack1 (GTK_PANED (gui->vpane_left), userlist, FALSE, TRUE); + break; + case POS_BOTTOMLEFT: + gtk_paned_pack2 (GTK_PANED (gui->vpane_left), userlist, FALSE, TRUE); + break; + case POS_BOTTOMRIGHT: + gtk_paned_pack2 (GTK_PANED (gui->vpane_right), userlist, FALSE, TRUE); + break; + /*case POS_HIDDEN: + break;*/ /* Hide using the VIEW menu instead */ + default:/* POS_TOPRIGHT */ + gtk_paned_pack1 (GTK_PANED (gui->vpane_right), userlist, FALSE, TRUE); + } + } + + if (mg_is_userlist_and_tree_combined () && prefs.hex_gui_pane_divider_position != 0) + { + gtk_paned_set_position (GTK_PANED (gui->vpane_left), prefs.hex_gui_pane_divider_position); + gtk_paned_set_position (GTK_PANED (gui->vpane_right), prefs.hex_gui_pane_divider_position); + } + + if (unref_chanview) + g_object_unref (chanview); + if (unref_userlist) + g_object_unref (userlist); + + mg_hide_empty_boxes (gui); +} + +static void +mg_place_userlist_and_chanview (session_gui *gui) +{ + GtkOrientation orientation; + GtkWidget *chanviewbox = NULL; + int pos; + + mg_sanitize_positions (&prefs.hex_gui_tab_pos, &prefs.hex_gui_ulist_pos); + + if (gui->chanview) + { + pos = prefs.hex_gui_tab_pos; + + orientation = chanview_get_orientation (gui->chanview); + if ((pos == POS_BOTTOM || pos == POS_TOP) && orientation == GTK_ORIENTATION_VERTICAL) + chanview_set_orientation (gui->chanview, FALSE); + else if ((pos == POS_TOPLEFT || pos == POS_BOTTOMLEFT || pos == POS_TOPRIGHT || pos == POS_BOTTOMRIGHT) && orientation == GTK_ORIENTATION_HORIZONTAL) + chanview_set_orientation (gui->chanview, TRUE); + chanviewbox = chanview_get_box (gui->chanview); + } + + mg_place_userlist_and_chanview_real (gui, gui->user_box, chanviewbox); +} + +void +mg_change_layout (int type) +{ + if (mg_gui) + { + /* put tabs at the bottom */ + if (type == 0 && prefs.hex_gui_tab_pos != POS_BOTTOM && prefs.hex_gui_tab_pos != POS_TOP) + prefs.hex_gui_tab_pos = POS_BOTTOM; + + mg_place_userlist_and_chanview (mg_gui); + chanview_set_impl (mg_gui->chanview, type); + } +} + +static void +mg_inputbox_rightclick (GtkEntry *entry, GtkWidget *menu) +{ + mg_create_color_menu (menu, NULL); +} + +/* Search bar adapted from Conspire's by William Pitcock */ + +#define SEARCH_CHANGE 1 +#define SEARCH_NEXT 2 +#define SEARCH_PREVIOUS 3 +#define SEARCH_REFRESH 4 + +static void +search_handle_event(int search_type, session *sess) +{ + textentry *last; + const gchar *text = NULL; + gtk_xtext_search_flags flags; + GError *err = NULL; + gboolean backwards = FALSE; + + /* When just typing show most recent first */ + if (search_type == SEARCH_PREVIOUS || search_type == SEARCH_CHANGE) + backwards = TRUE; + + flags = ((prefs.hex_text_search_case_match == 1? case_match: 0) | + (backwards? backward: 0) | + (prefs.hex_text_search_highlight_all == 1? highlight: 0) | + (prefs.hex_text_search_follow == 1? follow: 0) | + (prefs.hex_text_search_regexp == 1? regexp: 0)); + + if (search_type != SEARCH_REFRESH) + text = gtk_entry_get_text (GTK_ENTRY(sess->gui->shentry)); + last = gtk_xtext_search (GTK_XTEXT (sess->gui->xtext), text, flags, &err); + + if (err) + { + gtk_entry_set_icon_from_stock (GTK_ENTRY (sess->gui->shentry), GTK_ENTRY_ICON_SECONDARY, GTK_STOCK_DIALOG_ERROR); + gtk_entry_set_icon_tooltip_text (GTK_ENTRY (sess->gui->shentry), GTK_ENTRY_ICON_SECONDARY, _(err->message)); + g_error_free (err); + } + else if (!last) + { + if (text && text[0] == 0) /* empty string, no error */ + { + gtk_entry_set_icon_from_stock (GTK_ENTRY (sess->gui->shentry), GTK_ENTRY_ICON_SECONDARY, NULL); + } + else + { + /* Either end of search or not found, try again to wrap if only end */ + last = gtk_xtext_search (GTK_XTEXT (sess->gui->xtext), text, flags, &err); + if (!last) /* Not found error */ + { + gtk_entry_set_icon_from_stock (GTK_ENTRY (sess->gui->shentry), GTK_ENTRY_ICON_SECONDARY, GTK_STOCK_DIALOG_ERROR); + gtk_entry_set_icon_tooltip_text (GTK_ENTRY (sess->gui->shentry), GTK_ENTRY_ICON_SECONDARY, _("No results found.")); + } + } + } + else + { + gtk_entry_set_icon_from_stock (GTK_ENTRY (sess->gui->shentry), GTK_ENTRY_ICON_SECONDARY, NULL); + } +} + +static void +search_handle_change(GtkWidget *wid, session *sess) +{ + search_handle_event(SEARCH_CHANGE, sess); +} + +static void +search_handle_refresh(GtkWidget *wid, session *sess) +{ + search_handle_event(SEARCH_REFRESH, sess); +} + +void +mg_search_handle_previous(GtkWidget *wid, session *sess) +{ + search_handle_event(SEARCH_PREVIOUS, sess); +} + +void +mg_search_handle_next(GtkWidget *wid, session *sess) +{ + search_handle_event(SEARCH_NEXT, sess); +} + +static void +search_set_option (GtkToggleButton *but, guint *pref) +{ + *pref = gtk_toggle_button_get_active(but); + save_config(); +} + +void +mg_search_toggle(session *sess) +{ + if (gtk_widget_get_visible(sess->gui->shbox)) + { + gtk_widget_hide(sess->gui->shbox); + gtk_widget_grab_focus(sess->gui->input_box); + gtk_entry_set_text(GTK_ENTRY(sess->gui->shentry), ""); + } + else + { + /* Reset search state */ + gtk_entry_set_icon_from_stock (GTK_ENTRY (sess->gui->shentry), GTK_ENTRY_ICON_SECONDARY, NULL); + + /* Show and focus */ + gtk_widget_show(sess->gui->shbox); + gtk_widget_grab_focus(sess->gui->shentry); + } +} + +static gboolean +search_handle_esc (GtkWidget *win, GdkEventKey *key, session *sess) +{ + if (key->keyval == GDK_KEY_Escape) + mg_search_toggle(sess); + + return FALSE; +} + +static void +mg_create_search(session *sess, GtkWidget *box) +{ + GtkWidget *entry, *label, *next, *previous, *highlight, *matchcase, *regex, *close; + session_gui *gui = sess->gui; + + gui->shbox = gtk_hbox_new(FALSE, 5); + gtk_box_pack_start(GTK_BOX(box), gui->shbox, FALSE, FALSE, 0); + + close = gtk_button_new (); + gtk_button_set_image (GTK_BUTTON (close), gtk_image_new_from_stock (GTK_STOCK_CLOSE, GTK_ICON_SIZE_MENU)); + gtk_button_set_relief(GTK_BUTTON(close), GTK_RELIEF_NONE); + gtk_widget_set_can_focus (close, FALSE); + gtk_box_pack_start(GTK_BOX(gui->shbox), close, FALSE, FALSE, 0); + g_signal_connect_swapped(G_OBJECT(close), "clicked", G_CALLBACK(mg_search_toggle), sess); + + label = gtk_label_new(_("Find:")); + gtk_box_pack_start(GTK_BOX(gui->shbox), label, FALSE, FALSE, 0); + + gui->shentry = entry = gtk_entry_new(); + gtk_box_pack_start(GTK_BOX(gui->shbox), entry, FALSE, FALSE, 0); + gtk_widget_set_size_request (gui->shentry, 180, -1); + gui->search_changed_signal = g_signal_connect(G_OBJECT(entry), "changed", G_CALLBACK(search_handle_change), sess); + g_signal_connect (G_OBJECT (entry), "key_press_event", G_CALLBACK (search_handle_esc), sess); + g_signal_connect(G_OBJECT(entry), "activate", G_CALLBACK(mg_search_handle_next), sess); + gtk_entry_set_icon_activatable (GTK_ENTRY (entry), GTK_ENTRY_ICON_SECONDARY, FALSE); + gtk_entry_set_icon_tooltip_text (GTK_ENTRY (sess->gui->shentry), GTK_ENTRY_ICON_SECONDARY, _("Search hit end or not found.")); + + previous = gtk_button_new (); + gtk_button_set_image (GTK_BUTTON (previous), gtk_image_new_from_stock (GTK_STOCK_GO_BACK, GTK_ICON_SIZE_MENU)); + gtk_button_set_relief(GTK_BUTTON(previous), GTK_RELIEF_NONE); + gtk_widget_set_can_focus (previous, FALSE); + gtk_box_pack_start(GTK_BOX(gui->shbox), previous, FALSE, FALSE, 0); + g_signal_connect(G_OBJECT(previous), "clicked", G_CALLBACK(mg_search_handle_previous), sess); + + next = gtk_button_new (); + gtk_button_set_image (GTK_BUTTON (next), gtk_image_new_from_stock (GTK_STOCK_GO_FORWARD, GTK_ICON_SIZE_MENU)); + gtk_button_set_relief(GTK_BUTTON(next), GTK_RELIEF_NONE); + gtk_widget_set_can_focus (next, FALSE); + gtk_box_pack_start(GTK_BOX(gui->shbox), next, FALSE, FALSE, 0); + g_signal_connect(G_OBJECT(next), "clicked", G_CALLBACK(mg_search_handle_next), sess); + + highlight = gtk_check_button_new_with_mnemonic (_("_Highlight all")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(highlight), prefs.hex_text_search_highlight_all); + gtk_widget_set_can_focus (highlight, FALSE); + g_signal_connect (G_OBJECT (highlight), "toggled", G_CALLBACK (search_set_option), &prefs.hex_text_search_highlight_all); + g_signal_connect (G_OBJECT (highlight), "toggled", G_CALLBACK (search_handle_refresh), sess); + gtk_box_pack_start(GTK_BOX(gui->shbox), highlight, FALSE, FALSE, 0); + gtk_widget_set_tooltip_text (highlight, _("Highlight all occurrences, and underline the current occurrence.")); + + matchcase = gtk_check_button_new_with_mnemonic (_("Mat_ch case")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(matchcase), prefs.hex_text_search_case_match); + gtk_widget_set_can_focus (matchcase, FALSE); + g_signal_connect (G_OBJECT (matchcase), "toggled", G_CALLBACK (search_set_option), &prefs.hex_text_search_case_match); + gtk_box_pack_start(GTK_BOX(gui->shbox), matchcase, FALSE, FALSE, 0); + gtk_widget_set_tooltip_text (matchcase, _("Perform a case-sensitive search.")); + + regex = gtk_check_button_new_with_mnemonic (_("_Regex")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(regex), prefs.hex_text_search_regexp); + gtk_widget_set_can_focus (regex, FALSE); + g_signal_connect (G_OBJECT (regex), "toggled", G_CALLBACK (search_set_option), &prefs.hex_text_search_regexp); + gtk_box_pack_start(GTK_BOX(gui->shbox), regex, FALSE, FALSE, 0); + gtk_widget_set_tooltip_text (regex, _("Regard search string as a regular expression.")); +} + +static void +mg_create_entry (session *sess, GtkWidget *box) +{ + GtkWidget *hbox, *but, *entry; + session_gui *gui = sess->gui; + + hbox = gtk_hbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (box), hbox, 0, 0, 0); + + gui->nick_box = gtk_hbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (hbox), gui->nick_box, 0, 0, 0); + + gui->nick_label = but = gtk_button_new_with_label (sess->server->nick); + gtk_button_set_relief (GTK_BUTTON (but), GTK_RELIEF_NONE); + gtk_widget_set_can_focus (but, FALSE); + gtk_box_pack_end (GTK_BOX (gui->nick_box), but, 0, 0, 0); + g_signal_connect (G_OBJECT (but), "clicked", + G_CALLBACK (mg_nickclick_cb), NULL); + + gui->input_box = entry = sexy_spell_entry_new (); + sexy_spell_entry_set_checked ((SexySpellEntry *)entry, prefs.hex_gui_input_spell); + sexy_spell_entry_set_parse_attributes ((SexySpellEntry *)entry, prefs.hex_gui_input_attr); + + gtk_entry_set_max_length (GTK_ENTRY (gui->input_box), 0); + g_signal_connect (G_OBJECT (entry), "activate", + G_CALLBACK (mg_inputbox_cb), gui); + gtk_container_add (GTK_CONTAINER (hbox), entry); + + gtk_widget_set_name (entry, "hexchat-inputbox"); + g_signal_connect (G_OBJECT (entry), "key_press_event", + G_CALLBACK (key_handle_key_press), NULL); + g_signal_connect (G_OBJECT (entry), "focus_in_event", + G_CALLBACK (mg_inputbox_focus), gui); + g_signal_connect (G_OBJECT (entry), "populate_popup", + G_CALLBACK (mg_inputbox_rightclick), NULL); + g_signal_connect (G_OBJECT (entry), "word-check", + G_CALLBACK (mg_spellcheck_cb), NULL); + gtk_widget_grab_focus (entry); + + if (prefs.hex_gui_input_style) + mg_apply_entry_style (entry); +} + +static void +mg_switch_tab_cb (chanview *cv, chan *ch, int tag, gpointer ud) +{ + chan *old; + session *sess = ud; + + old = active_tab; + active_tab = ch; + + if (tag == TAG_IRC) + { + if (active_tab != old) + { + if (old && current_tab) + mg_unpopulate (current_tab); + mg_populate (sess); + } + } else if (old != active_tab) + { + /* userdata for non-irc tabs is actually the GtkBox */ + mg_show_generic_tab (ud); + if (!mg_is_userlist_and_tree_combined ()) + mg_userlist_showhide (current_sess, FALSE); /* hide */ + } +} + +/* compare two tabs (for tab sorting function) */ + +static int +mg_tabs_compare (session *a, session *b) +{ + /* server tabs always go first */ + if (a->type == SESS_SERVER) + return -1; + + /* then channels */ + if (a->type == SESS_CHANNEL && b->type != SESS_CHANNEL) + return -1; + if (a->type != SESS_CHANNEL && b->type == SESS_CHANNEL) + return 1; + + return g_ascii_strcasecmp (a->channel, b->channel); +} + +static void +mg_create_tabs (session_gui *gui) +{ + gboolean use_icons = FALSE; + + /* if any one of these PNGs exist, the chanview will create + * the extra column for icons. */ + if (prefs.hex_gui_tab_icons && (pix_tree_channel || pix_tree_dialog || pix_tree_server || pix_tree_util)) + { + use_icons = TRUE; + } + + gui->chanview = chanview_new (prefs.hex_gui_tab_layout, prefs.hex_gui_tab_trunc, + prefs.hex_gui_tab_sort, use_icons, + prefs.hex_gui_ulist_style ? input_style : NULL); + chanview_set_callbacks (gui->chanview, mg_switch_tab_cb, mg_xbutton_cb, + mg_tab_contextmenu_cb, (void *)mg_tabs_compare); + mg_place_userlist_and_chanview (gui); +} + +static gboolean +mg_tabwin_focus_cb (GtkWindow * win, GdkEventFocus *event, gpointer userdata) +{ + current_sess = current_tab; + if (current_sess) + { + gtk_xtext_check_marker_visibility (GTK_XTEXT (current_sess->gui->xtext)); + plugin_emit_dummy_print (current_sess, "Focus Window"); + } + unflash_window (GTK_WIDGET (win)); + return FALSE; +} + +static gboolean +mg_topwin_focus_cb (GtkWindow * win, GdkEventFocus *event, session *sess) +{ + current_sess = sess; + if (!sess->server->server_session) + sess->server->server_session = sess; + gtk_xtext_check_marker_visibility(GTK_XTEXT (current_sess->gui->xtext)); + unflash_window (GTK_WIDGET (win)); + plugin_emit_dummy_print (sess, "Focus Window"); + return FALSE; +} + +static void +mg_create_menu (session_gui *gui, GtkWidget *table, int away_state) +{ + GtkAccelGroup *accel_group; + + accel_group = gtk_accel_group_new (); + gtk_window_add_accel_group (GTK_WINDOW (gtk_widget_get_toplevel (table)), + accel_group); + g_object_unref (accel_group); + + gui->menu = menu_create_main (accel_group, TRUE, away_state, !gui->is_tab, + gui->menu_item); + gtk_table_attach (GTK_TABLE (table), gui->menu, 0, 3, 0, 1, + GTK_EXPAND | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); +} + +static void +mg_create_irctab (session *sess, GtkWidget *table) +{ + GtkWidget *vbox; + session_gui *gui = sess->gui; + + vbox = gtk_vbox_new (FALSE, 0); + gtk_table_attach (GTK_TABLE (table), vbox, 1, 2, 2, 3, + GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + mg_create_center (sess, gui, vbox); +} + +static void +mg_create_topwindow (session *sess) +{ + GtkWidget *win; + GtkWidget *table; + + if (sess->type == SESS_DIALOG) + win = gtkutil_window_new ("HexChat", NULL, + prefs.hex_gui_dialog_width, prefs.hex_gui_dialog_height, 0); + else + win = gtkutil_window_new ("HexChat", NULL, + prefs.hex_gui_win_width, + prefs.hex_gui_win_height, 0); + sess->gui->window = win; + gtk_container_set_border_width (GTK_CONTAINER (win), GUI_BORDER); + gtk_window_set_opacity (GTK_WINDOW (win), (prefs.hex_gui_transparency / 255.)); + + g_signal_connect (G_OBJECT (win), "focus_in_event", + G_CALLBACK (mg_topwin_focus_cb), sess); + g_signal_connect (G_OBJECT (win), "destroy", + G_CALLBACK (mg_topdestroy_cb), sess); + g_signal_connect (G_OBJECT (win), "configure_event", + G_CALLBACK (mg_configure_cb), sess); + + palette_alloc (win); + + table = gtk_table_new (4, 3, FALSE); + /* spacing under the menubar */ + gtk_table_set_row_spacing (GTK_TABLE (table), 0, GUI_SPACING); + /* left and right borders */ + gtk_table_set_col_spacing (GTK_TABLE (table), 0, 1); + gtk_table_set_col_spacing (GTK_TABLE (table), 1, 1); + gtk_container_add (GTK_CONTAINER (win), table); + + mg_create_irctab (sess, table); + mg_create_menu (sess->gui, table, sess->server->is_away); + + if (sess->res->buffer == NULL) + { + sess->res->buffer = gtk_xtext_buffer_new (GTK_XTEXT (sess->gui->xtext)); + gtk_xtext_buffer_show (GTK_XTEXT (sess->gui->xtext), sess->res->buffer, TRUE); + gtk_xtext_set_time_stamp (sess->res->buffer, prefs.hex_stamp_text); + sess->res->user_model = userlist_create_model (sess); + } + + userlist_show (sess); + + gtk_widget_show_all (table); + + if (prefs.hex_gui_hide_menu) + gtk_widget_hide (sess->gui->menu); + + /* Will be shown when needed */ + gtk_widget_hide (sess->gui->topic_bar); + + if (!prefs.hex_gui_ulist_buttons) + gtk_widget_hide (sess->gui->button_box); + + if (!prefs.hex_gui_input_nick) + gtk_widget_hide (sess->gui->nick_box); + + gtk_widget_hide(sess->gui->shbox); + + mg_decide_userlist (sess, FALSE); + + if (sess->type == SESS_DIALOG) + { + /* hide the chan-mode buttons */ + gtk_widget_hide (sess->gui->topicbutton_box); + } else + { + gtk_widget_hide (sess->gui->dialogbutton_box); + + if (!prefs.hex_gui_mode_buttons) + gtk_widget_hide (sess->gui->topicbutton_box); + } + + mg_place_userlist_and_chanview (sess->gui); + + gtk_widget_show (win); +} + +static gboolean +mg_tabwindow_de_cb (GtkWidget *widget, GdkEvent *event, gpointer user_data) +{ + GSList *list; + session *sess; + GtkWindow *win = GTK_WINDOW(gtk_widget_get_toplevel (widget)); + + if (prefs.hex_gui_tray_close && gtkutil_tray_icon_supported (win) && tray_toggle_visibility (FALSE)) + return TRUE; + + /* check for remaining toplevel windows */ + list = sess_list; + while (list) + { + sess = list->data; + if (!sess->gui->is_tab) + return FALSE; + list = list->next; + } + + mg_open_quit_dialog (TRUE); + return TRUE; +} + +#ifdef G_OS_WIN32 +static GdkFilterReturn +mg_time_change (GdkXEvent *xevent, GdkEvent *event, gpointer data) +{ + MSG *msg = (MSG*)xevent; + + if (msg->message == WM_TIMECHANGE) + { + _tzset(); + } + + return GDK_FILTER_CONTINUE; +} +#endif + +static void +mg_create_tabwindow (session *sess) +{ + GtkWidget *win; + GtkWidget *table; +#ifdef G_OS_WIN32 + GdkWindow *parent_win; +#endif + + win = gtkutil_window_new ("HexChat", NULL, prefs.hex_gui_win_width, + prefs.hex_gui_win_height, 0); + sess->gui->window = win; + gtk_window_move (GTK_WINDOW (win), prefs.hex_gui_win_left, + prefs.hex_gui_win_top); + if (prefs.hex_gui_win_state) + gtk_window_maximize (GTK_WINDOW (win)); + if (prefs.hex_gui_win_fullscreen) + gtk_window_fullscreen (GTK_WINDOW (win)); + gtk_window_set_opacity (GTK_WINDOW (win), (prefs.hex_gui_transparency / 255.)); + gtk_container_set_border_width (GTK_CONTAINER (win), GUI_BORDER); + + g_signal_connect (G_OBJECT (win), "delete_event", + G_CALLBACK (mg_tabwindow_de_cb), 0); + g_signal_connect (G_OBJECT (win), "destroy", + G_CALLBACK (mg_tabwindow_kill_cb), 0); + g_signal_connect (G_OBJECT (win), "focus_in_event", + G_CALLBACK (mg_tabwin_focus_cb), NULL); + g_signal_connect (G_OBJECT (win), "configure_event", + G_CALLBACK (mg_configure_cb), NULL); + g_signal_connect (G_OBJECT (win), "window_state_event", + G_CALLBACK (mg_windowstate_cb), NULL); + + palette_alloc (win); + + sess->gui->main_table = table = gtk_table_new (4, 3, FALSE); + /* spacing under the menubar */ + gtk_table_set_row_spacing (GTK_TABLE (table), 0, GUI_SPACING); + /* left and right borders */ + gtk_table_set_col_spacing (GTK_TABLE (table), 0, 1); + gtk_table_set_col_spacing (GTK_TABLE (table), 1, 1); + gtk_container_add (GTK_CONTAINER (win), table); + + mg_create_irctab (sess, table); + mg_create_tabs (sess->gui); + mg_create_menu (sess->gui, table, sess->server->is_away); + + mg_focus (sess); + + gtk_widget_show_all (table); + + if (prefs.hex_gui_hide_menu) + gtk_widget_hide (sess->gui->menu); + + mg_decide_userlist (sess, FALSE); + + /* Will be shown when needed */ + gtk_widget_hide (sess->gui->topic_bar); + + if (!prefs.hex_gui_mode_buttons) + gtk_widget_hide (sess->gui->topicbutton_box); + + if (!prefs.hex_gui_ulist_buttons) + gtk_widget_hide (sess->gui->button_box); + + if (!prefs.hex_gui_input_nick) + gtk_widget_hide (sess->gui->nick_box); + + gtk_widget_hide (sess->gui->shbox); + + mg_place_userlist_and_chanview (sess->gui); + + gtk_widget_show (win); + +#ifdef G_OS_WIN32 + parent_win = gtk_widget_get_window (win); + gdk_window_add_filter (parent_win, mg_time_change, NULL); +#endif +} + +void +mg_apply_setup (void) +{ + GSList *list = sess_list; + session *sess; + int done_main = FALSE; + + mg_create_tab_colors (); + + while (list) + { + sess = list->data; + gtk_xtext_set_time_stamp (sess->res->buffer, prefs.hex_stamp_text); + ((xtext_buffer *)sess->res->buffer)->needs_recalc = TRUE; + if (!sess->gui->is_tab || !done_main) + mg_place_userlist_and_chanview (sess->gui); + if (sess->gui->is_tab) + done_main = TRUE; + list = list->next; + } +} + +static chan * +mg_add_generic_tab (char *name, char *title, void *family, GtkWidget *box) +{ + chan *ch; + + gtk_notebook_append_page (GTK_NOTEBOOK (mg_gui->note_book), box, NULL); + gtk_widget_show (box); + + ch = chanview_add (mg_gui->chanview, name, NULL, box, TRUE, TAG_UTIL, pix_tree_util); + chan_set_color (ch, plain_list); + + g_object_set_data_full (G_OBJECT (box), "title", g_strdup (title), g_free); + g_object_set_data (G_OBJECT (box), "ch", ch); + + if (prefs.hex_gui_tab_newtofront) + chan_focus (ch); + + return ch; +} + +void +fe_buttons_update (session *sess) +{ + session_gui *gui = sess->gui; + + gtk_widget_destroy (gui->button_box); + gui->button_box = mg_create_userlistbuttons (gui->button_box_parent); + + if (prefs.hex_gui_ulist_buttons) + gtk_widget_show (sess->gui->button_box); + else + gtk_widget_hide (sess->gui->button_box); +} + +void +fe_clear_channel (session *sess) +{ + char tbuf[CHANLEN+6]; + session_gui *gui = sess->gui; + + if (sess->gui->is_tab) + { + if (sess->waitchannel[0]) + { + if (prefs.hex_gui_tab_trunc > 2 && g_utf8_strlen (sess->waitchannel, -1) > prefs.hex_gui_tab_trunc) + { + /* truncate long channel names */ + tbuf[0] = '('; + strcpy (tbuf + 1, sess->waitchannel); + g_utf8_offset_to_pointer(tbuf, prefs.hex_gui_tab_trunc)[0] = 0; + strcat (tbuf, "..)"); + } else + { + sprintf (tbuf, "(%s)", sess->waitchannel); + } + } + else + strcpy (tbuf, _("<none>")); + chan_rename (sess->res->tab, tbuf, prefs.hex_gui_tab_trunc); + } + + if (!sess->gui->is_tab || sess == current_tab) + { + gtk_entry_set_text (GTK_ENTRY (gui->topic_entry), ""); + + if (gui->op_xpm) + { + gtk_widget_destroy (gui->op_xpm); + gui->op_xpm = 0; + } + } else + { + if (sess->res->topic_text) + { + g_free (sess->res->topic_text); + sess->res->topic_text = NULL; + } + } +} + +void +fe_set_nonchannel (session *sess, int state) +{ +} + +void +fe_dlgbuttons_update (session *sess) +{ + GtkWidget *box; + session_gui *gui = sess->gui; + + gtk_widget_destroy (gui->dialogbutton_box); + + gui->dialogbutton_box = box = gtk_hbox_new (0, 0); + gtk_box_pack_start (GTK_BOX (gui->topic_bar), box, 0, 0, 0); + gtk_box_reorder_child (GTK_BOX (gui->topic_bar), box, 3); + mg_create_dialogbuttons (box); + + gtk_widget_show_all (box); + + if (current_tab && current_tab->type != SESS_DIALOG) + gtk_widget_hide (current_tab->gui->dialogbutton_box); +} + +void +fe_update_mode_buttons (session *sess, char mode, char sign) +{ + int state, i; + + if (sign == '+') + state = TRUE; + else + state = FALSE; + + for (i = 0; i < NUM_FLAG_WIDS - 1; i++) + { + if (chan_flags[i] == mode) + { + if (!sess->gui->is_tab || sess == current_tab) + { + ignore_chanmode = TRUE; + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (sess->gui->flag_wid[i])) != state) + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sess->gui->flag_wid[i]), state); + ignore_chanmode = FALSE; + } else + { + sess->res->flag_wid_state[i] = state; + } + return; + } + } +} + +void +fe_set_nick (server *serv, char *newnick) +{ + GSList *list = sess_list; + session *sess; + + while (list) + { + sess = list->data; + if (sess->server == serv) + { + if (current_tab == sess || !sess->gui->is_tab) + gtk_button_set_label (GTK_BUTTON (sess->gui->nick_label), newnick); + } + list = list->next; + } +} + +void +fe_set_away (server *serv) +{ + GSList *list = sess_list; + session *sess; + + while (list) + { + sess = list->data; + if (sess->server == serv) + { + if (!sess->gui->is_tab || sess == current_tab) + { + menu_set_away (sess->gui, serv->is_away); + /* gray out my nickname */ + mg_set_myself_away (sess->gui, serv->is_away); + } + } + list = list->next; + } +} + +void +fe_set_channel (session *sess) +{ + if (sess->res->tab != NULL) + chan_rename (sess->res->tab, sess->channel, prefs.hex_gui_tab_trunc); +} + +void +mg_changui_new (session *sess, restore_gui *res, int tab, int focus) +{ + int first_run = FALSE; + session_gui *gui; + + if (res == NULL) + { + res = g_new0 (restore_gui, 1); + } + + sess->res = res; + + if (sess->server->front_session == NULL) + { + sess->server->front_session = sess; + } + + if (!tab) + { + gui = g_new0 (session_gui, 1); + gui->is_tab = FALSE; + sess->gui = gui; + mg_create_topwindow (sess); + fe_set_title (sess); + return; + } + + if (mg_gui == NULL) + { + first_run = TRUE; + gui = &static_mg_gui; + memset (gui, 0, sizeof (session_gui)); + gui->is_tab = TRUE; + sess->gui = gui; + mg_create_tabwindow (sess); + mg_gui = gui; + parent_window = gui->window; + } else + { + sess->gui = gui = mg_gui; + gui->is_tab = TRUE; + } + + mg_add_chan (sess); + + if (first_run || (prefs.hex_gui_tab_newtofront == FOCUS_NEW_ONLY_ASKED && focus) + || prefs.hex_gui_tab_newtofront == FOCUS_NEW_ALL ) + chan_focus (res->tab); +} + +GtkWidget * +mg_create_generic_tab (char *name, char *title, int force_toplevel, + int link_buttons, + void *close_callback, void *userdata, + int width, int height, GtkWidget **vbox_ret, + void *family) +{ + GtkWidget *vbox, *win; + + if (prefs.hex_gui_tab_pos == POS_HIDDEN && prefs.hex_gui_tab_utils) + prefs.hex_gui_tab_utils = 0; + + if (force_toplevel || !prefs.hex_gui_tab_utils) + { + win = gtkutil_window_new (title, name, width, height, 2); + vbox = gtk_vbox_new (0, 0); + *vbox_ret = vbox; + gtk_container_add (GTK_CONTAINER (win), vbox); + gtk_widget_show (vbox); + if (close_callback) + g_signal_connect (G_OBJECT (win), "destroy", + G_CALLBACK (close_callback), userdata); + return win; + } + + vbox = gtk_vbox_new (0, 2); + g_object_set_data (G_OBJECT (vbox), "w", GINT_TO_POINTER (width)); + g_object_set_data (G_OBJECT (vbox), "h", GINT_TO_POINTER (height)); + gtk_container_set_border_width (GTK_CONTAINER (vbox), 3); + *vbox_ret = vbox; + + if (close_callback) + g_signal_connect (G_OBJECT (vbox), "destroy", + G_CALLBACK (close_callback), userdata); + + mg_add_generic_tab (name, title, family, vbox); + +/* if (link_buttons) + { + hbox = gtk_hbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (vbox), hbox, 0, 0, 0); + mg_create_link_buttons (hbox, ch); + gtk_widget_show (hbox); + }*/ + + return vbox; +} + +void +mg_move_tab (session *sess, int delta) +{ + if (sess->gui->is_tab) + chan_move (sess->res->tab, delta); +} + +void +mg_move_tab_family (session *sess, int delta) +{ + if (sess->gui->is_tab) + chan_move_family (sess->res->tab, delta); +} + +void +mg_set_title (GtkWidget *vbox, char *title) /* for non-irc tab/window only */ +{ + char *old; + + old = g_object_get_data (G_OBJECT (vbox), "title"); + if (old) + { + g_object_set_data_full (G_OBJECT (vbox), "title", g_strdup (title), g_free); + } else + { + gtk_window_set_title (GTK_WINDOW (vbox), title); + } +} + +void +fe_server_callback (server *serv) +{ + joind_close (serv); + + if (serv->gui->chanlist_window) + mg_close_gen (NULL, serv->gui->chanlist_window); + + if (serv->gui->rawlog_window) + mg_close_gen (NULL, serv->gui->rawlog_window); + + g_free (serv->gui); +} + +/* called when a session is being killed */ + +void +fe_session_callback (session *sess) +{ + gtk_xtext_buffer_free (sess->res->buffer); + g_object_unref (G_OBJECT (sess->res->user_model)); + + if (sess->res->banlist && sess->res->banlist->window) + mg_close_gen (NULL, sess->res->banlist->window); + + g_free (sess->res->input_text); + g_free (sess->res->topic_text); + g_free (sess->res->limit_text); + g_free (sess->res->key_text); + g_free (sess->res->queue_text); + g_free (sess->res->queue_tip); + g_free (sess->res->lag_text); + g_free (sess->res->lag_tip); + + if (sess->gui->bartag) + fe_timeout_remove (sess->gui->bartag); + + if (sess->gui != &static_mg_gui) + g_free (sess->gui); + g_free (sess->res); +} + +/* ===== DRAG AND DROP STUFF ===== */ + +static gboolean +is_child_of (GtkWidget *widget, GtkWidget *parent) +{ + while (widget) + { + if (gtk_widget_get_parent (widget) == parent) + return TRUE; + widget = gtk_widget_get_parent (widget); + } + return FALSE; +} + +static void +mg_handle_drop (GtkWidget *widget, int y, int *pos, int *other_pos) +{ + int height; + session_gui *gui = current_sess->gui; + + height = gdk_window_get_height (gtk_widget_get_window (widget)); + + if (y < height / 2) + { + if (is_child_of (widget, gui->vpane_left)) + *pos = 1; /* top left */ + else + *pos = 3; /* top right */ + } + else + { + if (is_child_of (widget, gui->vpane_left)) + *pos = 2; /* bottom left */ + else + *pos = 4; /* bottom right */ + } + + /* both in the same pos? must move one */ + if (*pos == *other_pos) + { + switch (*other_pos) + { + case 1: + *other_pos = 2; + break; + case 2: + *other_pos = 1; + break; + case 3: + *other_pos = 4; + break; + case 4: + *other_pos = 3; + break; + } + } + + mg_place_userlist_and_chanview (gui); +} + +static gboolean +mg_is_gui_target (GdkDragContext *context) +{ + char *target_name; + + if (!context || !gdk_drag_context_list_targets (context) || !gdk_drag_context_list_targets (context)->data) + return FALSE; + + target_name = gdk_atom_name (gdk_drag_context_list_targets (context)->data); + if (target_name) + { + /* if it's not HEXCHAT_CHANVIEW or HEXCHAT_USERLIST */ + /* we should ignore it. */ + if (target_name[0] != 'H') + { + g_free (target_name); + return FALSE; + } + g_free (target_name); + } + + return TRUE; +} + +/* this begin callback just creates an nice of the source */ + +gboolean +mg_drag_begin_cb (GtkWidget *widget, GdkDragContext *context, gpointer userdata) +{ + int width, height; + GdkColormap *cmap; + GdkPixbuf *pix, *pix2; + + /* ignore file drops */ + if (!mg_is_gui_target (context)) + return FALSE; + + cmap = gtk_widget_get_colormap (widget); + width = gdk_window_get_width (gtk_widget_get_window (widget)); + height = gdk_window_get_height (gtk_widget_get_window (widget)); + + pix = gdk_pixbuf_get_from_drawable (NULL, gtk_widget_get_window (widget), cmap, 0, 0, 0, 0, width, height); + pix2 = gdk_pixbuf_scale_simple (pix, width * 4 / 5, height / 2, GDK_INTERP_HYPER); + g_object_unref (pix); + + gtk_drag_set_icon_pixbuf (context, pix2, 0, 0); + g_object_set_data (G_OBJECT (widget), "ico", pix2); + + return TRUE; +} + +void +mg_drag_end_cb (GtkWidget *widget, GdkDragContext *context, gpointer userdata) +{ + /* ignore file drops */ + if (!mg_is_gui_target (context)) + return; + + g_object_unref (g_object_get_data (G_OBJECT (widget), "ico")); +} + +/* drop complete */ + +gboolean +mg_drag_drop_cb (GtkWidget *widget, GdkDragContext *context, int x, int y, guint time, gpointer user_data) +{ + /* ignore file drops */ + if (!mg_is_gui_target (context)) + return FALSE; + + switch (gdk_drag_context_get_selected_action (context)) + { + case GDK_ACTION_MOVE: + /* from userlist */ + mg_handle_drop (widget, y, &prefs.hex_gui_ulist_pos, &prefs.hex_gui_tab_pos); + break; + case GDK_ACTION_COPY: + /* from tree - we use GDK_ACTION_COPY for the tree */ + mg_handle_drop (widget, y, &prefs.hex_gui_tab_pos, &prefs.hex_gui_ulist_pos); + break; + default: + return FALSE; + } + + return TRUE; +} + +/* draw highlight rectangle in the destination */ + +gboolean +mg_drag_motion_cb (GtkWidget *widget, GdkDragContext *context, int x, int y, guint time, gpointer scbar) +{ + GdkGC *gc; + GdkColor col; + GdkGCValues val; + int half, width, height; + int ox, oy; + GdkDrawable *draw; + GtkAllocation allocation; + + /* ignore file drops */ + if (!mg_is_gui_target (context)) + return FALSE; + + if (scbar) /* scrollbar */ + { + gtk_widget_get_allocation (widget, &allocation); + ox = allocation.x; + oy = allocation.y; + width = allocation.width; + height = allocation.height; + draw = gtk_widget_get_window (widget); + } + else + { + ox = oy = 0; + width = gdk_window_get_width (gtk_widget_get_window (widget)); + height = gdk_window_get_height (gtk_widget_get_window (widget)); + draw = gtk_widget_get_window (widget); + } + + val.subwindow_mode = GDK_INCLUDE_INFERIORS; + val.graphics_exposures = 0; + val.function = GDK_XOR; + + gc = gdk_gc_new_with_values (gtk_widget_get_window (widget), &val, GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW | GDK_GC_FUNCTION); + col.red = rand() % 0xffff; + col.green = rand() % 0xffff; + col.blue = rand() % 0xffff; + gdk_colormap_alloc_color (gtk_widget_get_colormap (widget), &col, FALSE, TRUE); + gdk_gc_set_foreground (gc, &col); + + half = height / 2; + +#if 0 + /* are both tree/userlist on the same side? */ + paned = (GtkPaned *)widget->parent->parent; + if (paned->child1 != NULL && paned->child2 != NULL) + { + gdk_draw_rectangle (draw, gc, 0, 1, 2, width - 3, height - 4); + gdk_draw_rectangle (draw, gc, 0, 0, 1, width - 1, height - 2); + g_object_unref (gc); + return TRUE; + } +#endif + + if (y < half) + { + gdk_draw_rectangle (draw, gc, FALSE, 1 + ox, 2 + oy, width - 3, half - 4); + gdk_draw_rectangle (draw, gc, FALSE, 0 + ox, 1 + oy, width - 1, half - 2); + gtk_widget_queue_draw_area (widget, ox, half + oy, width, height - half); + } + else + { + gdk_draw_rectangle (draw, gc, FALSE, 0 + ox, half + 1 + oy, width - 1, half - 2); + gdk_draw_rectangle (draw, gc, FALSE, 1 + ox, half + 2 + oy, width - 3, half - 4); + gtk_widget_queue_draw_area (widget, ox, oy, width, half); + } + + g_object_unref (gc); + + return TRUE; +} diff --git a/hexchat/src/fe-gtk/maingui.h b/hexchat/src/fe-gtk/maingui.h new file mode 100644 index 0000000..6099e6f --- /dev/null +++ b/hexchat/src/fe-gtk/maingui.h @@ -0,0 +1,61 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_MAINGUI_H +#define HEXCHAT_MAINGUI_H + +extern GtkStyle *input_style; +extern GtkWidget *parent_window; + +void mg_changui_new (session *sess, restore_gui *res, int tab, int focus); +void mg_update_xtext (GtkWidget *wid); +void mg_open_quit_dialog (gboolean minimize_button); +void mg_switch_page (int relative, int num); +void mg_move_tab (session *, int delta); +void mg_move_tab_family (session *, int delta); +void mg_bring_tofront (GtkWidget *vbox); +void mg_bring_tofront_sess (session *sess); +void mg_decide_userlist (session *sess, gboolean switch_to_current); +void mg_set_topic_tip (session *sess); +GtkWidget *mg_create_generic_tab (char *name, char *title, int force_toplevel, int link_buttons, void *close_callback, void *userdata, int width, int height, GtkWidget **vbox_ret, void *family); +void mg_set_title (GtkWidget *button, char *title); +void mg_set_access_icon (session_gui *gui, GdkPixbuf *pix, gboolean away); +void mg_apply_setup (void); +void mg_close_sess (session *); +void mg_tab_close (session *sess); +void mg_detach (session *sess, int mode); +void mg_progressbar_create (session_gui *gui); +void mg_progressbar_destroy (session_gui *gui); +void mg_dnd_drop_file (session *sess, char *target, char *uri); +void mg_change_layout (int type); +void mg_update_meters (session_gui *); +void mg_inputbox_cb (GtkWidget *igad, session_gui *gui); +void mg_create_icon_item (char *label, char *stock, GtkWidget *menu, void *callback, void *userdata); +GtkWidget *mg_submenu (GtkWidget *menu, char *text); +/* DND */ +gboolean mg_drag_begin_cb (GtkWidget *widget, GdkDragContext *context, gpointer userdata); +void mg_drag_end_cb (GtkWidget *widget, GdkDragContext *context, gpointer userdata); +gboolean mg_drag_drop_cb (GtkWidget *widget, GdkDragContext *context, int x, int y, guint time, gpointer user_data); +gboolean mg_drag_motion_cb (GtkWidget *widget, GdkDragContext *context, int x, int y, guint time, gpointer user_data); +/* search */ +void mg_search_toggle(session *sess); +void mg_search_handle_previous(GtkWidget *wid, session *sess); +void mg_search_handle_next(GtkWidget *wid, session *sess); + +#endif diff --git a/hexchat/src/fe-gtk/menu.c b/hexchat/src/fe-gtk/menu.c new file mode 100644 index 0000000..76bc390 --- /dev/null +++ b/hexchat/src/fe-gtk/menu.c @@ -0,0 +1,2514 @@ +/* X-Chat + * Copyright (C) 1998-2007 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <fcntl.h> +#include <string.h> + +#ifdef WIN32 +#include <windows.h> +#include <io.h> +#else +#include <unistd.h> +#endif + +#include "fe-gtk.h" + +#include <gdk/gdkkeysyms.h> + +#include "../common/hexchat.h" +#include "../common/hexchatc.h" +#include "../common/cfgfiles.h" +#include "../common/outbound.h" +#include "../common/ignore.h" +#include "../common/fe.h" +#include "../common/server.h" +#include "../common/servlist.h" +#include "../common/notify.h" +#include "../common/util.h" +#include "../common/text.h" +#include "xtext.h" +#include "ascii.h" +#include "banlist.h" +#include "chanlist.h" +#include "editlist.h" +#include "fkeys.h" +#include "gtkutil.h" +#include "maingui.h" +#include "notifygui.h" +#include "pixmaps.h" +#include "rawlog.h" +#include "palette.h" +#include "plugingui.h" +#include "search.h" +#include "textgui.h" +#include "urlgrab.h" +#include "userlistgui.h" +#include "menu.h" +#include "servlistgui.h" + +static GSList *submenu_list; + +enum +{ + M_MENUITEM, + M_NEWMENU, + M_END, + M_SEP, + M_MENUTOG, + M_MENURADIO, + M_MENUSTOCK, + M_MENUPIX, + M_MENUSUB +}; + +struct mymenu +{ + char *text; + void *callback; + char *image; + unsigned char type; /* M_XXX */ + unsigned char id; /* MENU_ID_XXX (menu.h) */ + unsigned char state; /* ticked or not? */ + unsigned char sensitive; /* shaded out? */ + guint key; /* GDK_KEY_x */ +}; + +#define XCMENU_DOLIST 1 +#define XCMENU_SHADED 1 +#define XCMENU_MARKUP 2 +#define XCMENU_MNEMONIC 4 + +/* execute a userlistbutton/popupmenu command */ + +static void +nick_command (session * sess, char *cmd) +{ + if (*cmd == '!') + hexchat_exec (cmd + 1); + else + handle_command (sess, cmd, TRUE); +} + +/* fill in the %a %s %n etc and execute the command */ + +void +nick_command_parse (session *sess, char *cmd, char *nick, char *allnick) +{ + char *buf; + char *host = _("Host unknown"); + char *account = _("Account unknown"); + struct User *user; + int len; + +/* if (sess->type == SESS_DIALOG) + { + buf = (char *)(GTK_ENTRY (sess->gui->topic_entry)->text); + buf = strrchr (buf, '@'); + if (buf) + host = buf + 1; + } else*/ + { + user = userlist_find (sess, nick); + if (user) + { + if (user->hostname) + host = strchr (user->hostname, '@') + 1; + if (user->account) + account = user->account; + } + } + + /* this can't overflow, since popup->cmd is only 256 */ + len = strlen (cmd) + strlen (nick) + strlen (allnick) + 512; + buf = g_malloc (len); + + auto_insert (buf, len, cmd, 0, 0, allnick, sess->channel, "", + server_get_network (sess->server, TRUE), host, + sess->server->nick, nick, account); + + nick_command (sess, buf); + + g_free (buf); +} + +/* userlist button has been clicked */ + +void +userlist_button_cb (GtkWidget * button, char *cmd) +{ + int i, num_sel, using_allnicks = FALSE; + char **nicks, *allnicks; + char *nick = NULL; + session *sess; + + sess = current_sess; + + if (strstr (cmd, "%a")) + using_allnicks = TRUE; + + if (sess->type == SESS_DIALOG) + { + /* fake a selection */ + nicks = g_new (char *, 2); + nicks[0] = g_strdup (sess->channel); + nicks[1] = NULL; + num_sel = 1; + } + else + { + /* find number of selected rows */ + nicks = userlist_selection_list (sess->gui->user_tree, &num_sel); + if (num_sel < 1) + { + nick_command_parse (sess, cmd, "", ""); + + g_free (nicks); + return; + } + } + + /* create "allnicks" string */ + allnicks = g_malloc (((NICKLEN + 1) * num_sel) + 1); + *allnicks = 0; + + i = 0; + while (nicks[i]) + { + if (i > 0) + strcat (allnicks, " "); + strcat (allnicks, nicks[i]); + + if (!nick) + nick = nicks[0]; + + /* if not using "%a", execute the command once for each nickname */ + if (!using_allnicks) + nick_command_parse (sess, cmd, nicks[i], ""); + + i++; + } + + if (using_allnicks) + { + if (!nick) + nick = ""; + nick_command_parse (sess, cmd, nick, allnicks); + } + + while (num_sel) + { + num_sel--; + g_free (nicks[num_sel]); + } + + g_free (nicks); + g_free (allnicks); +} + +/* a popup-menu-item has been selected */ + +static void +popup_menu_cb (GtkWidget * item, char *cmd) +{ + char *nick; + + /* the userdata is set in menu_quick_item() */ + nick = g_object_get_data (G_OBJECT (item), "u"); + + if (!nick) /* userlist popup menu */ + { + /* treat it just like a userlist button */ + userlist_button_cb (NULL, cmd); + return; + } + + if (!current_sess) /* for url grabber window */ + nick_command_parse (sess_list->data, cmd, nick, nick); + else + nick_command_parse (current_sess, cmd, nick, nick); +} + +GtkWidget * +menu_toggle_item (char *label, GtkWidget *menu, void *callback, void *userdata, + int state) +{ + GtkWidget *item; + + item = gtk_check_menu_item_new_with_mnemonic (label); + gtk_check_menu_item_set_active ((GtkCheckMenuItem*)item, state); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (callback), userdata); + gtk_widget_show (item); + + return item; +} + +GtkWidget * +menu_quick_item (char *cmd, char *label, GtkWidget * menu, int flags, + gpointer userdata, char *icon) +{ + GtkWidget *img, *item; + char *path; + + if (!label) + item = gtk_menu_item_new (); + else + { + if (icon) + { + /*if (flags & XCMENU_MARKUP) + item = gtk_image_menu_item_new_with_markup (label); + else*/ + item = gtk_image_menu_item_new_with_mnemonic (label); + img = NULL; + if (access (icon, R_OK) == 0) /* try fullpath */ + img = gtk_image_new_from_file (icon); + else + { + /* try relative to <xdir> */ + path = g_build_filename (get_xdir (), icon, NULL); + if (access (path, R_OK) == 0) + img = gtk_image_new_from_file (path); + else + img = gtk_image_new_from_stock (icon, GTK_ICON_SIZE_MENU); + g_free (path); + } + + if (img) + gtk_image_menu_item_set_image ((GtkImageMenuItem *)item, img); + } + else + { + if (flags & XCMENU_MARKUP) + { + item = gtk_menu_item_new_with_label (""); + if (flags & XCMENU_MNEMONIC) + gtk_label_set_markup_with_mnemonic (GTK_LABEL (GTK_BIN (item)->child), label); + else + gtk_label_set_markup (GTK_LABEL (GTK_BIN (item)->child), label); + } else + { + if (flags & XCMENU_MNEMONIC) + item = gtk_menu_item_new_with_mnemonic (label); + else + item = gtk_menu_item_new_with_label (label); + } + } + } + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + g_object_set_data (G_OBJECT (item), "u", userdata); + if (cmd) + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (popup_menu_cb), cmd); + if (flags & XCMENU_SHADED) + gtk_widget_set_sensitive (GTK_WIDGET (item), FALSE); + gtk_widget_show_all (item); + + return item; +} + +static void +menu_quick_item_with_callback (void *callback, char *label, GtkWidget * menu, + void *arg) +{ + GtkWidget *item; + + item = gtk_menu_item_new_with_label (label); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (callback), arg); + gtk_widget_show (item); +} + +GtkWidget * +menu_quick_sub (char *name, GtkWidget *menu, GtkWidget **sub_item_ret, int flags, int pos) +{ + GtkWidget *sub_menu; + GtkWidget *sub_item; + + if (!name) + return menu; + + /* Code to add a submenu */ + sub_menu = gtk_menu_new (); + if (flags & XCMENU_MARKUP) + { + sub_item = gtk_menu_item_new_with_label (""); + gtk_label_set_markup (GTK_LABEL (GTK_BIN (sub_item)->child), name); + } + else + { + if (flags & XCMENU_MNEMONIC) + sub_item = gtk_menu_item_new_with_mnemonic (name); + else + sub_item = gtk_menu_item_new_with_label (name); + } + gtk_menu_shell_insert (GTK_MENU_SHELL (menu), sub_item, pos); + gtk_widget_show (sub_item); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (sub_item), sub_menu); + + if (sub_item_ret) + *sub_item_ret = sub_item; + + if (flags & XCMENU_DOLIST) + /* We create a new element in the list */ + submenu_list = g_slist_prepend (submenu_list, sub_menu); + return sub_menu; +} + +static GtkWidget * +menu_quick_endsub (void) +{ + /* Just delete the first element in the linked list pointed to by first */ + if (submenu_list) + submenu_list = g_slist_remove (submenu_list, submenu_list->data); + + if (submenu_list) + return (submenu_list->data); + else + return NULL; +} + +static void +toggle_cb (GtkWidget *item, char *pref_name) +{ + char buf[256]; + + if (GTK_CHECK_MENU_ITEM (item)->active) + g_snprintf (buf, sizeof (buf), "set %s 1", pref_name); + else + g_snprintf (buf, sizeof (buf), "set %s 0", pref_name); + + handle_command (current_sess, buf, FALSE); +} + +static int +is_in_path (char *cmd) +{ + char *orig = g_strdup (cmd + 1); /* 1st char is "!" */ + char *prog = orig; + char **argv; + int argc; + + /* special-case these default entries. */ + /* 123456789012345678 */ + if (strncmp (prog, "gnome-terminal -x ", 18) == 0) + /* don't check for gnome-terminal, but the thing it's executing! */ + prog += 18; + + if (g_shell_parse_argv (prog, &argc, &argv, NULL)) + { + char *path = g_find_program_in_path (argv[0]); + g_strfreev (argv); + if (path) + { + g_free (path); + g_free (orig); + return 1; + } + } + + g_free (orig); + return 0; +} + +/* syntax: "LABEL~ICON~STUFF~ADDED~LATER~" */ + +static void +menu_extract_icon (char *name, char **label, char **icon) +{ + char *p = name; + char *start = NULL; + char *end = NULL; + + while (*p) + { + if (*p == '~') + { + /* escape \~ */ + if (p == name || p[-1] != '\\') + { + if (!start) + start = p + 1; + else if (!end) + end = p + 1; + } + } + p++; + } + + if (!end) + end = p; + + if (start && start != end) + { + *label = g_strndup (name, (start - name) - 1); + *icon = g_strndup (start, (end - start) - 1); + } + else + { + *label = g_strdup (name); + *icon = NULL; + } +} + +/* append items to "menu" using the (struct popup*) list provided */ + +void +menu_create (GtkWidget *menu, GSList *list, char *target, int check_path) +{ + struct popup *pop; + GtkWidget *tempmenu = menu, *subitem = NULL; + int childcount = 0; + + submenu_list = g_slist_prepend (0, menu); + while (list) + { + pop = (struct popup *) list->data; + + if (!g_ascii_strncasecmp (pop->name, "SUB", 3)) + { + childcount = 0; + tempmenu = menu_quick_sub (pop->cmd, tempmenu, &subitem, XCMENU_DOLIST|XCMENU_MNEMONIC, -1); + + } else if (!g_ascii_strncasecmp (pop->name, "TOGGLE", 6)) + { + childcount++; + menu_toggle_item (pop->name + 7, tempmenu, toggle_cb, pop->cmd, + cfg_get_bool (pop->cmd)); + + } else if (!g_ascii_strncasecmp (pop->name, "ENDSUB", 6)) + { + /* empty sub menu due to no programs in PATH? */ + if (check_path && childcount < 1) + gtk_widget_destroy (subitem); + subitem = NULL; + + if (tempmenu != menu) + tempmenu = menu_quick_endsub (); + /* If we get here and tempmenu equals menu that means we havent got any submenus to exit from */ + + } else if (!g_ascii_strncasecmp (pop->name, "SEP", 3)) + { + menu_quick_item (0, 0, tempmenu, XCMENU_SHADED, 0, 0); + + } else + { + char *icon, *label; + + /* default command in hexchat.c */ + if (pop->cmd[0] == 'n' && !strcmp (pop->cmd, "notify -n ASK %s")) + { + /* don't create this item if already in notify list */ + if (!target || notify_is_in_list (current_sess->server, target)) + { + list = list->next; + continue; + } + } + + menu_extract_icon (pop->name, &label, &icon); + + if (!check_path || pop->cmd[0] != '!') + { + menu_quick_item (pop->cmd, label, tempmenu, 0, target, icon); + /* check if the program is in path, if not, leave it out! */ + } else if (is_in_path (pop->cmd)) + { + childcount++; + menu_quick_item (pop->cmd, label, tempmenu, 0, target, icon); + } + + g_free (label); + g_free (icon); + } + + list = list->next; + } + + /* Let's clean up the linked list from mem */ + while (submenu_list) + submenu_list = g_slist_remove (submenu_list, submenu_list->data); +} + +static char *str_copy = NULL; /* for all pop-up menus */ +static GtkWidget *nick_submenu = NULL; /* user info submenu */ + +static void +menu_destroy (GtkWidget *menu, gpointer objtounref) +{ + gtk_widget_destroy (menu); + g_object_unref (menu); + if (objtounref) + g_object_unref (G_OBJECT (objtounref)); + nick_submenu = NULL; +} + +static void +menu_popup (GtkWidget *menu, GdkEventButton *event, gpointer objtounref) +{ + if (event && event->window) + gtk_menu_set_screen (GTK_MENU (menu), gdk_window_get_screen (event->window)); + + g_object_ref (menu); + g_object_ref_sink (menu); + g_object_unref (menu); + g_signal_connect (G_OBJECT (menu), "selection-done", + G_CALLBACK (menu_destroy), objtounref); + gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, + 0, event ? event->time : 0); +} + +static void +menu_nickinfo_cb (GtkWidget *menu, session *sess) +{ + char buf[512]; + + if (!is_session (sess)) + return; + + /* issue a /WHOIS */ + g_snprintf (buf, sizeof (buf), "WHOIS %s %s", str_copy, str_copy); + handle_command (sess, buf, FALSE); + /* and hide the output */ + sess->server->skip_next_whois = 1; +} + +static void +copy_to_clipboard_cb (GtkWidget *item, char *url) +{ + gtkutil_copy_to_clipboard (item, NULL, url); +} + +/* returns boolean: Some data is missing */ + +static gboolean +menu_create_nickinfo_menu (struct User *user, GtkWidget *submenu) +{ + char buf[512]; + char unknown[96]; + char *real, *fmt, *users_country; + struct away_msg *away; + gboolean missing = FALSE; + GtkWidget *item; + + /* let the translators tweak this if need be */ + fmt = _("<tt><b>%-11s</b></tt> %s"); + g_snprintf (unknown, sizeof (unknown), "<i>%s</i>", _("Unknown")); + + if (user->realname) + { + real = strip_color (user->realname, -1, STRIP_ALL|STRIP_ESCMARKUP); + g_snprintf (buf, sizeof (buf), fmt, _("Real Name:"), real); + g_free (real); + } else + { + g_snprintf (buf, sizeof (buf), fmt, _("Real Name:"), unknown); + } + item = menu_quick_item (0, buf, submenu, XCMENU_MARKUP, 0, 0); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (copy_to_clipboard_cb), + user->realname ? user->realname : unknown); + + g_snprintf (buf, sizeof (buf), fmt, _("User:"), + user->hostname ? user->hostname : unknown); + item = menu_quick_item (0, buf, submenu, XCMENU_MARKUP, 0, 0); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (copy_to_clipboard_cb), + user->hostname ? user->hostname : unknown); + + g_snprintf (buf, sizeof (buf), fmt, _("Account:"), + user->account ? user->account : unknown); + item = menu_quick_item (0, buf, submenu, XCMENU_MARKUP, 0, 0); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (copy_to_clipboard_cb), + user->account ? user->account : unknown); + + users_country = country (user->hostname); + if (users_country) + { + g_snprintf (buf, sizeof (buf), fmt, _ ("Country:"), users_country); + item = menu_quick_item (0, buf, submenu, XCMENU_MARKUP, 0, 0); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (copy_to_clipboard_cb), users_country); + } + + g_snprintf (buf, sizeof (buf), fmt, _("Server:"), + user->servername ? user->servername : unknown); + item = menu_quick_item (0, buf, submenu, XCMENU_MARKUP, 0, 0); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (copy_to_clipboard_cb), + user->servername ? user->servername : unknown); + + if (user->lasttalk) + { + char min[96]; + + g_snprintf (min, sizeof (min), _("%u minutes ago"), + (unsigned int) ((time (0) - user->lasttalk) / 60)); + g_snprintf (buf, sizeof (buf), fmt, _("Last Msg:"), min); + } else + { + g_snprintf (buf, sizeof (buf), fmt, _("Last Msg:"), unknown); + } + menu_quick_item (0, buf, submenu, XCMENU_MARKUP, 0, 0); + + if (user->away) + { + away = server_away_find_message (current_sess->server, user->nick); + if (away) + { + char *msg = strip_color (away->message ? away->message : unknown, -1, STRIP_ALL|STRIP_ESCMARKUP); + g_snprintf (buf, sizeof (buf), fmt, _("Away Msg:"), msg); + g_free (msg); + item = menu_quick_item (0, buf, submenu, XCMENU_MARKUP, 0, 0); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (copy_to_clipboard_cb), + away->message ? away->message : unknown); + } + else + missing = TRUE; + } + + return missing; +} + +void +fe_userlist_update (session *sess, struct User *user) +{ + GList *items, *next; + + if (!nick_submenu || !str_copy) + return; + + /* not the same nick as the menu? */ + if (sess->server->p_cmp (user->nick, str_copy)) + return; + + /* get rid of the "show" signal */ + g_signal_handlers_disconnect_by_func (nick_submenu, menu_nickinfo_cb, sess); + + /* destroy all the old items */ + items = ((GtkMenuShell *) nick_submenu)->children; + while (items) + { + next = items->next; + gtk_widget_destroy (items->data); + items = next; + } + + /* and re-create them with new info */ + menu_create_nickinfo_menu (user, nick_submenu); +} + +void +menu_nickmenu (session *sess, GdkEventButton *event, char *nick, int num_sel) +{ + char buf[512]; + struct User *user; + GtkWidget *submenu, *menu = gtk_menu_new (); + + g_free (str_copy); + str_copy = g_strdup (nick); + + submenu_list = 0; /* first time through, might not be 0 */ + + /* more than 1 nick selected? */ + if (num_sel > 1) + { + g_snprintf (buf, sizeof (buf), _("%d nicks selected."), num_sel); + menu_quick_item (0, buf, menu, 0, 0, 0); + menu_quick_item (0, 0, menu, XCMENU_SHADED, 0, 0); + } else + { + user = userlist_find (sess, nick); /* lasttalk is channel specific */ + if (!user) + user = userlist_find_global (current_sess->server, nick); + if (user) + { + nick_submenu = submenu = menu_quick_sub (nick, menu, NULL, XCMENU_DOLIST, -1); + + if (menu_create_nickinfo_menu (user, submenu) || + !user->hostname || !user->realname || !user->servername) + { + g_signal_connect (G_OBJECT (submenu), "show", G_CALLBACK (menu_nickinfo_cb), sess); + } + + menu_quick_endsub (); + menu_quick_item (0, 0, menu, XCMENU_SHADED, 0, 0); + } + } + + if (num_sel > 1) + menu_create (menu, popup_list, NULL, FALSE); + else + menu_create (menu, popup_list, str_copy, FALSE); + + if (num_sel == 0) /* xtext click */ + menu_add_plugin_items (menu, "\x5$NICK", str_copy); + else /* userlist treeview click */ + menu_add_plugin_items (menu, "\x5$NICK", NULL); + + menu_popup (menu, event, NULL); +} + +/* stuff for the View menu */ + +static void +menu_showhide_cb (session *sess) +{ + if (prefs.hex_gui_hide_menu) + gtk_widget_hide (sess->gui->menu); + else + gtk_widget_show (sess->gui->menu); +} + +static void +menu_topic_showhide_cb (session *sess) +{ + if (prefs.hex_gui_topicbar) + gtk_widget_show (sess->gui->topic_bar); + else + gtk_widget_hide (sess->gui->topic_bar); +} + +static void +menu_userlist_showhide_cb (session *sess) +{ + mg_decide_userlist (sess, TRUE); +} + +static void +menu_ulbuttons_showhide_cb (session *sess) +{ + if (prefs.hex_gui_ulist_buttons) + gtk_widget_show (sess->gui->button_box); + else + gtk_widget_hide (sess->gui->button_box); +} + +static void +menu_cmbuttons_showhide_cb (session *sess) +{ + switch (sess->type) + { + case SESS_CHANNEL: + if (prefs.hex_gui_mode_buttons) + gtk_widget_show (sess->gui->topicbutton_box); + else + gtk_widget_hide (sess->gui->topicbutton_box); + break; + default: + gtk_widget_hide (sess->gui->topicbutton_box); + } +} + +static void +menu_setting_foreach (void (*callback) (session *), int id, guint state) +{ + session *sess; + GSList *list; + int maindone = FALSE; /* do it only once for EVERY tab */ + + list = sess_list; + while (list) + { + sess = list->data; + + if (!sess->gui->is_tab || !maindone) + { + if (sess->gui->is_tab) + maindone = TRUE; + if (id != -1) + GTK_CHECK_MENU_ITEM (sess->gui->menu_item[id])->active = state; + if (callback) + callback (sess); + } + + list = list->next; + } +} + +void +menu_bar_toggle (void) +{ + prefs.hex_gui_hide_menu = !prefs.hex_gui_hide_menu; + menu_setting_foreach (menu_showhide_cb, MENU_ID_MENUBAR, !prefs.hex_gui_hide_menu); +} + +static void +menu_bar_toggle_cb (void) +{ + menu_bar_toggle (); + if (prefs.hex_gui_hide_menu) + fe_message (_("The Menubar is now hidden. You can show it again" + " by pressing Control+F9 or right-clicking in a blank part of" + " the main text area."), FE_MSG_INFO); +} + +static void +menu_topicbar_toggle (GtkWidget *wid, gpointer ud) +{ + prefs.hex_gui_topicbar = !prefs.hex_gui_topicbar; + menu_setting_foreach (menu_topic_showhide_cb, MENU_ID_TOPICBAR, + prefs.hex_gui_topicbar); +} + +static void +menu_userlist_toggle (GtkWidget *wid, gpointer ud) +{ + prefs.hex_gui_ulist_hide = !prefs.hex_gui_ulist_hide; + menu_setting_foreach (menu_userlist_showhide_cb, MENU_ID_USERLIST, + !prefs.hex_gui_ulist_hide); +} + +static void +menu_ulbuttons_toggle (GtkWidget *wid, gpointer ud) +{ + prefs.hex_gui_ulist_buttons = !prefs.hex_gui_ulist_buttons; + menu_setting_foreach (menu_ulbuttons_showhide_cb, MENU_ID_ULBUTTONS, + prefs.hex_gui_ulist_buttons); +} + +static void +menu_cmbuttons_toggle (GtkWidget *wid, gpointer ud) +{ + prefs.hex_gui_mode_buttons = !prefs.hex_gui_mode_buttons; + menu_setting_foreach (menu_cmbuttons_showhide_cb, MENU_ID_MODEBUTTONS, + prefs.hex_gui_mode_buttons); +} + +static void +menu_fullscreen_toggle (GtkWidget *wid, gpointer ud) +{ + if (!prefs.hex_gui_win_fullscreen) + gtk_window_fullscreen (GTK_WINDOW(parent_window)); + else + { + gtk_window_unfullscreen (GTK_WINDOW(parent_window)); + +#ifdef WIN32 + if (!prefs.hex_gui_win_state) /* not maximized */ + { + /* other window managers seem to handle this */ + gtk_window_resize (GTK_WINDOW (parent_window), + prefs.hex_gui_win_width, prefs.hex_gui_win_height); + gtk_window_move (GTK_WINDOW (parent_window), + prefs.hex_gui_win_left, prefs.hex_gui_win_top); + } +#endif + } +} + +void +menu_middlemenu (session *sess, GdkEventButton *event) +{ + GtkWidget *menu; + GtkAccelGroup *accel_group; + + accel_group = gtk_accel_group_new (); + menu = menu_create_main (accel_group, FALSE, sess->server->is_away, !sess->gui->is_tab, NULL); + menu_popup (menu, event, accel_group); +} + +static void +open_url_cb (GtkWidget *item, char *url) +{ + char buf[512]; + + /* pass this to /URL so it can handle irc:// */ + g_snprintf (buf, sizeof (buf), "URL %s", url); + handle_command (current_sess, buf, FALSE); +} + +void +menu_urlmenu (GdkEventButton *event, char *url) +{ + GtkWidget *menu; + char *tmp, *chop; + + g_free (str_copy); + str_copy = g_strdup (url); + + menu = gtk_menu_new (); + /* more than 51 chars? Chop it */ + if (g_utf8_strlen (str_copy, -1) >= 52) + { + tmp = g_strdup (str_copy); + chop = g_utf8_offset_to_pointer (tmp, 48); + chop[0] = chop[1] = chop[2] = '.'; + chop[3] = 0; + menu_quick_item (0, tmp, menu, XCMENU_SHADED, 0, 0); + g_free (tmp); + } else + { + menu_quick_item (0, str_copy, menu, XCMENU_SHADED, 0, 0); + } + menu_quick_item (0, 0, menu, XCMENU_SHADED, 0, 0); + + /* Two hardcoded entries */ + if (strncmp (str_copy, "irc://", 6) == 0 || + strncmp (str_copy, "ircs://",7) == 0) + menu_quick_item_with_callback (open_url_cb, _("Connect"), menu, str_copy); + else + menu_quick_item_with_callback (open_url_cb, _("Open Link in Browser"), menu, str_copy); + menu_quick_item_with_callback (copy_to_clipboard_cb, _("Copy Selected Link"), menu, str_copy); + /* custom ones from urlhandlers.conf */ + menu_create (menu, urlhandler_list, str_copy, TRUE); + menu_add_plugin_items (menu, "\x4$URL", str_copy); + menu_popup (menu, event, NULL); +} + +static void +menu_chan_cycle (GtkWidget * menu, char *chan) +{ + char tbuf[256]; + + if (current_sess) + { + g_snprintf (tbuf, sizeof tbuf, "CYCLE %s", chan); + handle_command (current_sess, tbuf, FALSE); + } +} + +static void +menu_chan_part (GtkWidget * menu, char *chan) +{ + char tbuf[256]; + + if (current_sess) + { + g_snprintf (tbuf, sizeof tbuf, "part %s", chan); + handle_command (current_sess, tbuf, FALSE); + } +} + +static void +menu_chan_focus (GtkWidget * menu, char *chan) +{ + char tbuf[256]; + + if (current_sess) + { + g_snprintf (tbuf, sizeof tbuf, "doat %s gui focus", chan); + handle_command (current_sess, tbuf, FALSE); + } +} + +static void +menu_chan_join (GtkWidget * menu, char *chan) +{ + char tbuf[256]; + + if (current_sess) + { + g_snprintf (tbuf, sizeof tbuf, "join %s", chan); + handle_command (current_sess, tbuf, FALSE); + } +} + +void +menu_chanmenu (struct session *sess, GdkEventButton * event, char *chan) +{ + GtkWidget *menu; + int is_joined = FALSE; + session * chan_session; + + chan_session = find_channel (sess->server, chan); + + if (chan_session) + is_joined = TRUE; + + g_free (str_copy); + str_copy = g_strdup (chan); + + menu = gtk_menu_new (); + + menu_quick_item (0, chan, menu, XCMENU_SHADED, str_copy, 0); + menu_quick_item (0, 0, menu, XCMENU_SHADED, str_copy, 0); + + if (!is_joined) + menu_quick_item_with_callback (menu_chan_join, _("Join Channel"), menu, + str_copy); + else + { + if (chan_session != current_sess) + menu_quick_item_with_callback (menu_chan_focus, _("Focus Channel"), menu, + str_copy); + menu_quick_item_with_callback (menu_chan_part, _("Part Channel"), menu, + str_copy); + menu_quick_item_with_callback (menu_chan_cycle, _("Cycle Channel"), menu, + str_copy); + } + + menu_addfavoritemenu (sess->server, menu, str_copy, FALSE); + + menu_add_plugin_items (menu, "\x5$CHAN", str_copy); + menu_popup (menu, event, NULL); +} + +static void +menu_delfav_cb (GtkWidget *item, server *serv) +{ + servlist_autojoinedit (serv->network, str_copy, FALSE); +} + +static void +menu_addfav_cb (GtkWidget *item, server *serv) +{ + servlist_autojoinedit (serv->network, str_copy, TRUE); +} + +void +menu_addfavoritemenu (server *serv, GtkWidget *menu, char *channel, gboolean istree) +{ + char *str; + + if (!serv->network) + return; + + if (channel != str_copy) + { + g_free (str_copy); + str_copy = g_strdup (channel); + } + + if (istree) + str = _("_Autojoin"); + else + str = _("Autojoin Channel"); + + if (joinlist_is_in_list (serv, channel)) + { + menu_toggle_item (str, menu, menu_delfav_cb, serv, TRUE); + } + else + { + menu_toggle_item (str, menu, menu_addfav_cb, serv, FALSE); + } +} + +static void +menu_delautoconn_cb (GtkWidget *item, server *serv) +{ + ((ircnet*)serv->network)->flags &= ~FLAG_AUTO_CONNECT; + servlist_save (); +} + +static void +menu_addautoconn_cb (GtkWidget *item, server *serv) +{ + ((ircnet*)serv->network)->flags |= FLAG_AUTO_CONNECT; + servlist_save (); +} + +void +menu_addconnectmenu (server *serv, GtkWidget *menu) +{ + if (!serv->network) + return; + + if (((ircnet*)serv->network)->flags & FLAG_AUTO_CONNECT) + { + menu_toggle_item (_("_Auto-Connect"), menu, menu_delautoconn_cb, serv, TRUE); + } + else + { + menu_toggle_item (_("_Auto-Connect"), menu, menu_addautoconn_cb, serv, FALSE); + } +} + +static void +menu_open_server_list (GtkWidget *wid, gpointer none) +{ + fe_serverlist_open (current_sess); +} + +static void +menu_settings (GtkWidget * wid, gpointer none) +{ + extern void setup_open (void); + setup_open (); +} + +static void +menu_usermenu (void) +{ + char buf[128]; + g_snprintf(buf, sizeof(buf), _("User menu - %s"), _(DISPLAY_NAME)); + editlist_gui_open (NULL, NULL, usermenu_list, buf, "usermenu", "usermenu.conf", 0); +} + +static void +usermenu_create (GtkWidget *menu) +{ + menu_create (menu, usermenu_list, "", FALSE); + menu_quick_item (0, 0, menu, XCMENU_SHADED, 0, 0); /* sep */ + menu_quick_item_with_callback (menu_usermenu, _("Edit This Menu" ELLIPSIS), menu, 0); +} + +static void +usermenu_destroy (GtkWidget * menu) +{ + GList *items = ((GtkMenuShell *) menu)->children; + GList *next; + + while (items) + { + next = items->next; + gtk_widget_destroy (items->data); + items = next; + } +} + +void +usermenu_update (void) +{ + int done_main = FALSE; + GSList *list = sess_list; + session *sess; + GtkWidget *menu; + + while (list) + { + sess = list->data; + menu = sess->gui->menu_item[MENU_ID_USERMENU]; + if (sess->gui->is_tab) + { + if (!done_main && menu) + { + usermenu_destroy (menu); + usermenu_create (menu); + done_main = TRUE; + } + } else if (menu) + { + usermenu_destroy (menu); + usermenu_create (menu); + } + list = list->next; + } +} + +static void +menu_newserver_window (GtkWidget * wid, gpointer none) +{ + int old = prefs.hex_gui_tab_chans; + + prefs.hex_gui_tab_chans = 0; + new_ircwindow (NULL, NULL, SESS_SERVER, 0); + prefs.hex_gui_tab_chans = old; +} + +static void +menu_newchannel_window (GtkWidget * wid, gpointer none) +{ + int old = prefs.hex_gui_tab_chans; + + prefs.hex_gui_tab_chans = 0; + new_ircwindow (current_sess->server, NULL, SESS_CHANNEL, 0); + prefs.hex_gui_tab_chans = old; +} + +static void +menu_newserver_tab (GtkWidget * wid, gpointer none) +{ + int old = prefs.hex_gui_tab_chans; + int oldf = prefs.hex_gui_tab_newtofront; + + prefs.hex_gui_tab_chans = 1; + /* force focus if setting is "only requested tabs" */ + if (prefs.hex_gui_tab_newtofront == 2) + prefs.hex_gui_tab_newtofront = 1; + new_ircwindow (NULL, NULL, SESS_SERVER, 0); + prefs.hex_gui_tab_chans = old; + prefs.hex_gui_tab_newtofront = oldf; +} + +static void +menu_newchannel_tab (GtkWidget * wid, gpointer none) +{ + int old = prefs.hex_gui_tab_chans; + + prefs.hex_gui_tab_chans = 1; + new_ircwindow (current_sess->server, NULL, SESS_CHANNEL, 0); + prefs.hex_gui_tab_chans = old; +} + +static void +menu_rawlog (GtkWidget * wid, gpointer none) +{ + open_rawlog (current_sess->server); +} + +static void +menu_detach (GtkWidget * wid, gpointer none) +{ + mg_detach (current_sess, 0); +} + +static void +menu_close (GtkWidget * wid, gpointer none) +{ + mg_close_sess (current_sess); +} + +static void +menu_quit (GtkWidget * wid, gpointer none) +{ + mg_open_quit_dialog (FALSE); +} + +static void +menu_search (void) +{ + mg_search_toggle (current_sess); +} + +static void +menu_search_next (GtkWidget *wid) +{ + mg_search_handle_next(wid, current_sess); +} + +static void +menu_search_prev (GtkWidget *wid) +{ + mg_search_handle_previous(wid, current_sess); +} + +static void +menu_resetmarker (GtkWidget * wid, gpointer none) +{ + gtk_xtext_reset_marker_pos (GTK_XTEXT (current_sess->gui->xtext)); +} + +static void +menu_movetomarker (GtkWidget *wid, gpointer none) +{ + marker_reset_reason reason; + char *str; + + if (!prefs.hex_text_show_marker) + PrintText (current_sess, _("Marker line disabled.")); + else + { + reason = gtk_xtext_moveto_marker_pos (GTK_XTEXT (current_sess->gui->xtext)); + switch (reason) { + case MARKER_WAS_NEVER_SET: + str = _("Marker line never set."); break; + case MARKER_IS_SET: + str = ""; break; + case MARKER_RESET_MANUALLY: + str = _("Marker line reset manually."); break; + case MARKER_RESET_BY_KILL: + str = _("Marker line reset because exceeded scrollback limit."); break; + case MARKER_RESET_BY_CLEAR: + str = _("Marker line reset by CLEAR command."); break; + default: + str = _("Marker line state unknown."); break; + } + if (str[0]) + PrintText (current_sess, str); + } +} + +static void +menu_copy_selection (GtkWidget * wid, gpointer none) +{ + gtk_xtext_copy_selection (GTK_XTEXT (current_sess->gui->xtext)); +} + +static void +menu_flushbuffer (GtkWidget * wid, gpointer none) +{ + fe_text_clear (current_sess, 0); +} + +static void +savebuffer_req_done (session *sess, char *file) +{ + int fh; + + if (!file) + return; + + fh = g_open (file, O_TRUNC | O_WRONLY | O_CREAT, 0600); + if (fh != -1) + { + gtk_xtext_save (GTK_XTEXT (sess->gui->xtext), fh); + close (fh); + } +} + +static void +menu_savebuffer (GtkWidget * wid, gpointer none) +{ + gtkutil_file_req (NULL, _("Select an output filename"), savebuffer_req_done, + current_sess, NULL, NULL, FRF_WRITE); +} + +static void +menu_disconnect (GtkWidget * wid, gpointer none) +{ + handle_command (current_sess, "DISCON", FALSE); +} + +static void +menu_reconnect (GtkWidget * wid, gpointer none) +{ + if (current_sess->server->hostname[0]) + handle_command (current_sess, "RECONNECT", FALSE); + else + fe_serverlist_open (current_sess); +} + +static void +menu_join_cb (GtkWidget *dialog, gint response, GtkEntry *entry) +{ + switch (response) + { + case GTK_RESPONSE_ACCEPT: + menu_chan_join (NULL, entry->text); + break; + + case GTK_RESPONSE_HELP: + chanlist_opengui (current_sess->server, TRUE); + break; + } + + gtk_widget_destroy (dialog); +} + +static void +menu_join_entry_cb (GtkWidget *entry, GtkDialog *dialog) +{ + gtk_dialog_response (dialog, GTK_RESPONSE_ACCEPT); +} + +static void +menu_join (GtkWidget * wid, gpointer none) +{ + GtkWidget *hbox, *dialog, *entry, *label; + + dialog = gtk_dialog_new_with_buttons (_("Join Channel"), + GTK_WINDOW (parent_window), 0, + _("Retrieve channel list"), GTK_RESPONSE_HELP, + GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, + GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, + NULL); + gtk_box_set_homogeneous (GTK_BOX (GTK_DIALOG (dialog)->vbox), TRUE); + gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); + hbox = gtk_hbox_new (TRUE, 0); + + entry = gtk_entry_new (); + GTK_ENTRY (entry)->editable = 0; /* avoid auto-selection */ + gtk_entry_set_text (GTK_ENTRY (entry), "#"); + g_signal_connect (G_OBJECT (entry), "activate", + G_CALLBACK (menu_join_entry_cb), dialog); + gtk_box_pack_end (GTK_BOX (hbox), entry, 0, 0, 0); + + label = gtk_label_new (_("Enter Channel to Join:")); + gtk_box_pack_end (GTK_BOX (hbox), label, 0, 0, 0); + + g_signal_connect (G_OBJECT (dialog), "response", + G_CALLBACK (menu_join_cb), entry); + + gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), hbox); + + gtk_widget_show_all (dialog); + + gtk_editable_set_editable (GTK_EDITABLE (entry), TRUE); + gtk_editable_set_position (GTK_EDITABLE (entry), 1); +} + +static void +menu_away (GtkCheckMenuItem *item, gpointer none) +{ + handle_command (current_sess, gtk_check_menu_item_get_active (item) ? "away" : "back", FALSE); +} + +static void +menu_chanlist (GtkWidget * wid, gpointer none) +{ + chanlist_opengui (current_sess->server, FALSE); +} + +static void +menu_banlist (GtkWidget * wid, gpointer none) +{ + banlist_opengui (current_sess); +} + +#ifdef USE_PLUGIN + +static void +menu_loadplugin (void) +{ + plugingui_load (); +} + +static void +menu_pluginlist (void) +{ + plugingui_open (); +} + +#else + +static void +menu_noplugin_info (void) +{ + fe_message (_(DISPLAY_NAME " has been build without plugin support."), FE_MSG_INFO); +} + +#define menu_loadplugin menu_noplugin_info +#define menu_pluginlist menu_noplugin_info + +#endif + +#define usercommands_help _("User Commands - Special codes:\n\n"\ + "%c = current channel\n"\ + "%e = current network name\n"\ + "%m = machine info\n"\ + "%n = your nick\n"\ + "%t = time/date\n"\ + "%v = HexChat version\n"\ + "%2 = word 2\n"\ + "%3 = word 3\n"\ + "&2 = word 2 to the end of line\n"\ + "&3 = word 3 to the end of line\n\n"\ + "eg:\n"\ + "/cmd john hello\n\n"\ + "%2 would be \042john\042\n"\ + "&2 would be \042john hello\042.") + +#define ulbutton_help _("Userlist Buttons - Special codes:\n\n"\ + "%a = all selected nicks\n"\ + "%c = current channel\n"\ + "%e = current network name\n"\ + "%h = selected nick's hostname\n"\ + "%m = machine info\n"\ + "%n = your nick\n"\ + "%s = selected nick\n"\ + "%t = time/date\n"\ + "%u = selected users account") + +#define dlgbutton_help _("Dialog Buttons - Special codes:\n\n"\ + "%a = all selected nicks\n"\ + "%c = current channel\n"\ + "%e = current network name\n"\ + "%h = selected nick's hostname\n"\ + "%m = machine info\n"\ + "%n = your nick\n"\ + "%s = selected nick\n"\ + "%t = time/date\n"\ + "%u = selected users account") + +#define ctcp_help _("CTCP Replies - Special codes:\n\n"\ + "%d = data (the whole ctcp)\n"\ + "%e = current network name\n"\ + "%m = machine info\n"\ + "%s = nick who sent the ctcp\n"\ + "%t = time/date\n"\ + "%2 = word 2\n"\ + "%3 = word 3\n"\ + "&2 = word 2 to the end of line\n"\ + "&3 = word 3 to the end of line\n\n") + +#define url_help _("URL Handlers - Special codes:\n\n"\ + "%s = the URL string\n\n"\ + "Putting a ! in front of the command\n"\ + "indicates it should be sent to a\n"\ + "shell instead of HexChat") + +static void +menu_usercommands (void) +{ + char buf[128]; + g_snprintf(buf, sizeof(buf), _("User Defined Commands - %s"), _(DISPLAY_NAME)); + editlist_gui_open (NULL, NULL, command_list, buf, "commands", "commands.conf", + usercommands_help); +} + +static void +menu_ulpopup (void) +{ + char buf[128]; + g_snprintf(buf, sizeof(buf), _("Userlist Popup menu - %s"), _(DISPLAY_NAME)); + editlist_gui_open (NULL, NULL, popup_list, buf, "popup", "popup.conf", ulbutton_help); +} + +static void +menu_rpopup (void) +{ + char buf[128]; + g_snprintf(buf, sizeof(buf), _("Replace - %s"), _(DISPLAY_NAME)); + editlist_gui_open (_("Text"), _("Replace with"), replace_list, buf, "replace", "replace.conf", 0); +} + +static void +menu_urlhandlers (void) +{ + char buf[128]; + g_snprintf(buf, sizeof(buf), _("URL Handlers - %s"), _(DISPLAY_NAME)); + editlist_gui_open (NULL, NULL, urlhandler_list, buf, "urlhandlers", "urlhandlers.conf", url_help); +} + +static void +menu_evtpopup (void) +{ + pevent_dialog_show (); +} + +static void +menu_keypopup (void) +{ + key_dialog_show (); +} + +static void +menu_ulbuttons (void) +{ + char buf[128]; + g_snprintf(buf, sizeof(buf), _("Userlist buttons - %s"), _(DISPLAY_NAME)); + editlist_gui_open (NULL, NULL, button_list, buf, "buttons", "buttons.conf", ulbutton_help); +} + +static void +menu_dlgbuttons (void) +{ + char buf[128]; + g_snprintf(buf, sizeof(buf), _("Dialog buttons - %s"), _(DISPLAY_NAME)); + editlist_gui_open (NULL, NULL, dlgbutton_list, buf, "dlgbuttons", "dlgbuttons.conf", + dlgbutton_help); +} + +static void +menu_ctcpguiopen (void) +{ + char buf[128]; + g_snprintf(buf, sizeof(buf), _("CTCP Replies - %s"), _(DISPLAY_NAME)); + editlist_gui_open (NULL, NULL, ctcp_list, buf, "ctcpreply", "ctcpreply.conf", ctcp_help); +} + +static void +menu_docs (GtkWidget *wid, gpointer none) +{ + fe_open_url ("http://hexchat.readthedocs.org"); +} + +/*static void +menu_webpage (GtkWidget *wid, gpointer none) +{ + fe_open_url ("http://xchat.org"); +}*/ + +static void +menu_dcc_win (GtkWidget *wid, gpointer none) +{ + fe_dcc_open_recv_win (FALSE); + fe_dcc_open_send_win (FALSE); +} + +static void +menu_dcc_chat_win (GtkWidget *wid, gpointer none) +{ + fe_dcc_open_chat_win (FALSE); +} + +void +menu_change_layout (void) +{ + if (prefs.hex_gui_tab_layout == 0) + { + menu_setting_foreach (NULL, MENU_ID_LAYOUT_TABS, 1); + menu_setting_foreach (NULL, MENU_ID_LAYOUT_TREE, 0); + mg_change_layout (0); + } else + { + menu_setting_foreach (NULL, MENU_ID_LAYOUT_TABS, 0); + menu_setting_foreach (NULL, MENU_ID_LAYOUT_TREE, 1); + mg_change_layout (2); + } +} + +static void +menu_layout_cb (GtkWidget *item, gpointer none) +{ + prefs.hex_gui_tab_layout = 2; + if (GTK_CHECK_MENU_ITEM (item)->active) + prefs.hex_gui_tab_layout = 0; + + menu_change_layout (); +} + +static void +menu_apply_metres_cb (session *sess) +{ + mg_update_meters (sess->gui); +} + +static void +menu_metres_off (GtkWidget *item, gpointer none) +{ + if (GTK_CHECK_MENU_ITEM (item)->active) + { + prefs.hex_gui_lagometer = 0; + prefs.hex_gui_throttlemeter = 0; + hexchat_reinit_timers (); + menu_setting_foreach (menu_apply_metres_cb, -1, 0); + } +} + +static void +menu_metres_text (GtkWidget *item, gpointer none) +{ + if (GTK_CHECK_MENU_ITEM (item)->active) + { + prefs.hex_gui_lagometer = 2; + prefs.hex_gui_throttlemeter = 2; + hexchat_reinit_timers (); + menu_setting_foreach (menu_apply_metres_cb, -1, 0); + } +} + +static void +menu_metres_graph (GtkWidget *item, gpointer none) +{ + if (GTK_CHECK_MENU_ITEM (item)->active) + { + prefs.hex_gui_lagometer = 1; + prefs.hex_gui_throttlemeter = 1; + hexchat_reinit_timers (); + menu_setting_foreach (menu_apply_metres_cb, -1, 0); + } +} + +static void +menu_metres_both (GtkWidget *item, gpointer none) +{ + if (GTK_CHECK_MENU_ITEM (item)->active) + { + prefs.hex_gui_lagometer = 3; + prefs.hex_gui_throttlemeter = 3; + hexchat_reinit_timers (); + menu_setting_foreach (menu_apply_metres_cb, -1, 0); + } +} + +static void +about_dialog_close (GtkDialog *dialog, int response, gpointer data) +{ + gtk_widget_destroy (GTK_WIDGET(dialog)); +} + +static gboolean +about_dialog_openurl (GtkAboutDialog *dialog, char *uri, gpointer data) +{ + fe_open_url (uri); + return TRUE; +} + +static void +menu_about (GtkWidget *wid, gpointer sess) +{ + GtkAboutDialog *dialog = GTK_ABOUT_DIALOG(gtk_about_dialog_new()); + char comment[512]; + char *license = "This program is free software; you can redistribute it and/or modify\n" \ + "it under the terms of the GNU General Public License as published by\n" \ + "the Free Software Foundation; version 2.\n\n" \ + "This program is distributed in the hope that it will be useful,\n" \ + "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" \ + "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" \ + "GNU General Public License for more details.\n\n" \ + "You should have received a copy of the GNU General Public License\n" \ + "along with this program. If not, see <http://www.gnu.org/licenses/>"; + + g_snprintf (comment, sizeof(comment), "" +#ifdef WIN32 + "Portable Mode: %s\n" + "Build Type: x%d\n" +#endif + "OS: %s", +#ifdef WIN32 + (portable_mode () ? "Yes" : "No"), + get_cpu_arch (), +#endif + get_sys_str (0)); + + gtk_about_dialog_set_program_name (dialog, _(DISPLAY_NAME)); + gtk_about_dialog_set_version (dialog, PACKAGE_VERSION); + gtk_about_dialog_set_license (dialog, license); /* gtk3 can use GTK_LICENSE_GPL_2_0 */ + gtk_about_dialog_set_website (dialog, "http://hexchat.github.io"); + gtk_about_dialog_set_website_label (dialog, "Website"); + gtk_about_dialog_set_logo (dialog, pix_hexchat); + gtk_about_dialog_set_copyright (dialog, "\302\251 1998-2010 Peter \305\275elezn\303\275\n\302\251 2009-2014 Berke Viktor"); + gtk_about_dialog_set_comments (dialog, comment); + + gtk_window_set_transient_for (GTK_WINDOW(dialog), GTK_WINDOW(parent_window)); + g_signal_connect (G_OBJECT(dialog), "response", G_CALLBACK(about_dialog_close), NULL); + g_signal_connect (G_OBJECT(dialog), "activate-link", G_CALLBACK(about_dialog_openurl), NULL); + + gtk_widget_show_all (GTK_WIDGET(dialog)); +} + +static struct mymenu mymenu[] = { + {N_("He_xChat"), 0, 0, M_NEWMENU, MENU_ID_HEXCHAT, 0, 1}, + {N_("Network Li_st"), menu_open_server_list, (char *)&pix_book, M_MENUPIX, 0, 0, 1, GDK_KEY_s}, + {0, 0, 0, M_SEP, 0, 0, 0}, + + {N_("_New"), 0, GTK_STOCK_NEW, M_MENUSUB, 0, 0, 1}, + {N_("Server Tab"), menu_newserver_tab, 0, M_MENUITEM, 0, 0, 1, GDK_KEY_t}, + {N_("Channel Tab"), menu_newchannel_tab, 0, M_MENUITEM, 0, 0, 1}, + {N_("Server Window"), menu_newserver_window, 0, M_MENUITEM, 0, 0, 1, GDK_KEY_n}, + {N_("Channel Window"), menu_newchannel_window, 0, M_MENUITEM, 0, 0, 1}, + {0, 0, 0, M_END, 0, 0, 0}, + {0, 0, 0, M_SEP, 0, 0, 0}, + + {N_("_Load Plugin or Script" ELLIPSIS), menu_loadplugin, GTK_STOCK_REVERT_TO_SAVED, M_MENUSTOCK, 0, 0, 1}, + {0, 0, 0, M_SEP, 0, 0, 0}, /* 11 */ +#define DETACH_OFFSET (12) + {0, menu_detach, GTK_STOCK_REDO, M_MENUSTOCK, 0, 0, 1}, /* 12 */ +#define CLOSE_OFFSET (13) + {0, menu_close, GTK_STOCK_CLOSE, M_MENUSTOCK, 0, 0, 1}, + {0, 0, 0, M_SEP, 0, 0, 0}, + {N_("_Quit"), menu_quit, GTK_STOCK_QUIT, M_MENUSTOCK, 0, 0, 1, GDK_KEY_q}, /* 15 */ + + {N_("_View"), 0, 0, M_NEWMENU, 0, 0, 1}, +#define MENUBAR_OFFSET (17) + {N_("_Menu Bar"), menu_bar_toggle_cb, 0, M_MENUTOG, MENU_ID_MENUBAR, 0, 1, GDK_KEY_F9}, + {N_("_Topic Bar"), menu_topicbar_toggle, 0, M_MENUTOG, MENU_ID_TOPICBAR, 0, 1}, + {N_("_User List"), menu_userlist_toggle, 0, M_MENUTOG, MENU_ID_USERLIST, 0, 1, GDK_KEY_F7}, + {N_("U_ser List Buttons"), menu_ulbuttons_toggle, 0, M_MENUTOG, MENU_ID_ULBUTTONS, 0, 1}, + {N_("M_ode Buttons"), menu_cmbuttons_toggle, 0, M_MENUTOG, MENU_ID_MODEBUTTONS, 0, 1}, + {0, 0, 0, M_SEP, 0, 0, 0}, + {N_("_Channel Switcher"), 0, 0, M_MENUSUB, 0, 0, 1}, /* 23 */ +#define TABS_OFFSET (24) + {N_("_Tabs"), menu_layout_cb, 0, M_MENURADIO, MENU_ID_LAYOUT_TABS, 0, 1}, + {N_("T_ree"), 0, 0, M_MENURADIO, MENU_ID_LAYOUT_TREE, 0, 1}, + {0, 0, 0, M_END, 0, 0, 0}, + {N_("_Network Meters"), 0, 0, M_MENUSUB, 0, 0, 1}, /* 27 */ +#define METRE_OFFSET (28) + {N_("Off"), menu_metres_off, 0, M_MENURADIO, 0, 0, 1}, + {N_("Graph"), menu_metres_graph, 0, M_MENURADIO, 0, 0, 1}, + {N_("Text"), menu_metres_text, 0, M_MENURADIO, 0, 0, 1}, + {N_("Both"), menu_metres_both, 0, M_MENURADIO, 0, 0, 1}, + {0, 0, 0, M_END, 0, 0, 0}, /* 32 */ + { 0, 0, 0, M_SEP, 0, 0, 0 }, + {N_ ("_Fullscreen"), menu_fullscreen_toggle, 0, M_MENUTOG, MENU_ID_FULLSCREEN, 0, 1, GDK_KEY_F11}, + + {N_("_Server"), 0, 0, M_NEWMENU, 0, 0, 1}, + {N_("_Disconnect"), menu_disconnect, GTK_STOCK_DISCONNECT, M_MENUSTOCK, MENU_ID_DISCONNECT, 0, 1}, + {N_("_Reconnect"), menu_reconnect, GTK_STOCK_CONNECT, M_MENUSTOCK, MENU_ID_RECONNECT, 0, 1}, + {N_("_Join a Channel" ELLIPSIS), menu_join, GTK_STOCK_JUMP_TO, M_MENUSTOCK, MENU_ID_JOIN, 0, 1}, + {N_("Channel _List"), menu_chanlist, GTK_STOCK_INDEX, M_MENUITEM, 0, 0, 1}, + {0, 0, 0, M_SEP, 0, 0, 0}, +#define AWAY_OFFSET (41) + {N_("Marked _Away"), menu_away, 0, M_MENUTOG, MENU_ID_AWAY, 0, 1, GDK_KEY_a}, + + {N_("_Usermenu"), 0, 0, M_NEWMENU, MENU_ID_USERMENU, 0, 1}, /* 40 */ + + {N_("S_ettings"), 0, 0, M_NEWMENU, 0, 0, 1}, + {N_("_Preferences"), menu_settings, GTK_STOCK_PREFERENCES, M_MENUSTOCK, 0, 0, 1}, + {0, 0, 0, M_SEP, 0, 0, 0}, + {N_("Auto Replace"), menu_rpopup, 0, M_MENUITEM, 0, 0, 1}, + {N_("CTCP Replies"), menu_ctcpguiopen, 0, M_MENUITEM, 0, 0, 1}, + {N_("Dialog Buttons"), menu_dlgbuttons, 0, M_MENUITEM, 0, 0, 1}, + {N_("Keyboard Shortcuts"), menu_keypopup, 0, M_MENUITEM, 0, 0, 1}, + {N_("Text Events"), menu_evtpopup, 0, M_MENUITEM, 0, 0, 1}, + {N_("URL Handlers"), menu_urlhandlers, 0, M_MENUITEM, 0, 0, 1}, + {N_("User Commands"), menu_usercommands, 0, M_MENUITEM, 0, 0, 1}, + {N_("User List Buttons"), menu_ulbuttons, 0, M_MENUITEM, 0, 0, 1}, + {N_("User List Popup"), menu_ulpopup, 0, M_MENUITEM, 0, 0, 1}, /* 52 */ + + {N_("_Window"), 0, 0, M_NEWMENU, 0, 0, 1}, + {N_("_Ban List"), menu_banlist, 0, M_MENUITEM, 0, 0, 1}, + {N_("Character Chart"), ascii_open, 0, M_MENUITEM, 0, 0, 1}, + {N_("Direct Chat"), menu_dcc_chat_win, 0, M_MENUITEM, 0, 0, 1}, + {N_("File _Transfers"), menu_dcc_win, 0, M_MENUITEM, 0, 0, 1}, + {N_("Friends List"), notify_opengui, 0, M_MENUITEM, 0, 0, 1}, + {N_("Ignore List"), ignore_gui_open, 0, M_MENUITEM, 0, 0, 1}, + {N_("_Plugins and Scripts"), menu_pluginlist, 0, M_MENUITEM, 0, 0, 1}, + {N_("_Raw Log"), menu_rawlog, 0, M_MENUITEM, 0, 0, 1}, /* 61 */ + {N_("_URL Grabber"), url_opengui, 0, M_MENUITEM, 0, 0, 1}, + {0, 0, 0, M_SEP, 0, 0, 0}, + {N_("Reset Marker Line"), menu_resetmarker, 0, M_MENUITEM, 0, 0, 1, GDK_KEY_m}, + {N_("Move to Marker Line"), menu_movetomarker, 0, M_MENUITEM, 0, 0, 1, GDK_KEY_M}, + {N_("_Copy Selection"), menu_copy_selection, 0, M_MENUITEM, 0, 0, 1, GDK_KEY_C}, + {N_("C_lear Text"), menu_flushbuffer, GTK_STOCK_CLEAR, M_MENUSTOCK, 0, 0, 1}, + {N_("Save Text" ELLIPSIS), menu_savebuffer, GTK_STOCK_SAVE, M_MENUSTOCK, 0, 0, 1}, +#define SEARCH_OFFSET (70) + {N_("Search"), 0, GTK_STOCK_JUSTIFY_LEFT, M_MENUSUB, 0, 0, 1}, + {N_("Search Text" ELLIPSIS), menu_search, GTK_STOCK_FIND, M_MENUSTOCK, 0, 0, 1, GDK_KEY_f}, + {N_("Search Next" ), menu_search_next, GTK_STOCK_FIND, M_MENUSTOCK, 0, 0, 1, GDK_KEY_g}, + {N_("Search Previous" ), menu_search_prev, GTK_STOCK_FIND, M_MENUSTOCK, 0, 0, 1, GDK_KEY_G}, + {0, 0, 0, M_END, 0, 0, 0}, + + {N_("_Help"), 0, 0, M_NEWMENU, 0, 0, 1}, /* 74 */ + {N_("_Contents"), menu_docs, GTK_STOCK_HELP, M_MENUSTOCK, 0, 0, 1, GDK_KEY_F1}, + {N_("_About"), menu_about, GTK_STOCK_ABOUT, M_MENUSTOCK, 0, 0, 1}, + + {0, 0, 0, M_END, 0, 0, 0}, +}; + +void +menu_set_away (session_gui *gui, int away) +{ + GtkCheckMenuItem *item = GTK_CHECK_MENU_ITEM (gui->menu_item[MENU_ID_AWAY]); + + g_signal_handlers_block_by_func (G_OBJECT (item), menu_away, NULL); + gtk_check_menu_item_set_active (item, away); + g_signal_handlers_unblock_by_func (G_OBJECT (item), menu_away, NULL); +} + +void +menu_set_fullscreen (session_gui *gui, int full) +{ + GtkCheckMenuItem *item = GTK_CHECK_MENU_ITEM (gui->menu_item[MENU_ID_FULLSCREEN]); + + g_signal_handlers_block_by_func (G_OBJECT (item), menu_fullscreen_toggle, NULL); + gtk_check_menu_item_set_active (item, full); + g_signal_handlers_unblock_by_func (G_OBJECT (item), menu_fullscreen_toggle, NULL); +} + +GtkWidget * +create_icon_menu (char *labeltext, void *stock_name, int is_stock) +{ + GtkWidget *item, *img; + + if (is_stock) + img = gtk_image_new_from_stock (stock_name, GTK_ICON_SIZE_MENU); + else + img = gtk_image_new_from_pixbuf (*((GdkPixbuf **)stock_name)); + item = gtk_image_menu_item_new_with_mnemonic (labeltext); + gtk_image_menu_item_set_image ((GtkImageMenuItem *)item, img); + gtk_widget_show (img); + + return item; +} + +/* Override the default GTK2.4 handler, which would make menu + bindings not work when the menu-bar is hidden. */ +static gboolean +menu_canacaccel (GtkWidget *widget, guint signal_id, gpointer user_data) +{ + /* GTK2.2 behaviour */ + return gtk_widget_is_sensitive (widget); +} + +/* === STUFF FOR /MENU === */ + +static GtkMenuItem * +menu_find_item (GtkWidget *menu, char *name) +{ + GList *items = ((GtkMenuShell *) menu)->children; + GtkMenuItem *item; + GtkWidget *child; + const char *labeltext; + + while (items) + { + item = items->data; + child = GTK_BIN (item)->child; + if (child) /* separators arn't labels, skip them */ + { + labeltext = g_object_get_data (G_OBJECT (item), "name"); + if (!labeltext) + labeltext = gtk_label_get_text (GTK_LABEL (child)); + if (!menu_streq (labeltext, name, 1)) + return item; + } else if (name == NULL) + { + return item; + } + items = items->next; + } + + return NULL; +} + +static GtkWidget * +menu_find_path (GtkWidget *menu, char *path) +{ + GtkMenuItem *item; + char *s; + char name[128]; + int len; + + /* grab the next part of the path */ + s = strchr (path, '/'); + len = s - path; + if (!s) + len = strlen (path); + len = MIN (len, sizeof (name) - 1); + memcpy (name, path, len); + name[len] = 0; + + item = menu_find_item (menu, name); + if (!item) + return NULL; + + menu = gtk_menu_item_get_submenu (item); + if (!menu) + return NULL; + + path += len; + if (*path == 0) + return menu; + + return menu_find_path (menu, path + 1); +} + +static GtkWidget * +menu_find (GtkWidget *menu, char *path, char *label) +{ + GtkWidget *item = NULL; + + if (path[0] != 0) + menu = menu_find_path (menu, path); + if (menu) + item = (GtkWidget *)menu_find_item (menu, label); + return item; +} + +static void +menu_foreach_gui (menu_entry *me, void (*callback) (GtkWidget *, menu_entry *, char *)) +{ + GSList *list = sess_list; + int tabdone = FALSE; + session *sess; + + if (!me->is_main) + return; /* not main menu */ + + while (list) + { + sess = list->data; + /* do it only once for tab sessions, since they share a GUI */ + if (!sess->gui->is_tab || !tabdone) + { + callback (sess->gui->menu, me, NULL); + if (sess->gui->is_tab) + tabdone = TRUE; + } + list = list->next; + } +} + +static void +menu_update_cb (GtkWidget *menu, menu_entry *me, char *target) +{ + GtkWidget *item; + + item = menu_find (menu, me->path, me->label); + if (item) + { + gtk_widget_set_sensitive (item, me->enable); + /* must do it without triggering the callback */ + if (GTK_IS_CHECK_MENU_ITEM (item)) + GTK_CHECK_MENU_ITEM (item)->active = me->state; + } +} + +/* radio state changed via mouse click */ +static void +menu_radio_cb (GtkCheckMenuItem *item, menu_entry *me) +{ + me->state = 0; + if (item->active) + me->state = 1; + + /* update the state, incase this was changed via right-click. */ + /* This will update all other windows and menu bars */ + menu_foreach_gui (me, menu_update_cb); + + if (me->state && me->cmd) + handle_command (current_sess, me->cmd, FALSE); +} + +/* toggle state changed via mouse click */ +static void +menu_toggle_cb (GtkCheckMenuItem *item, menu_entry *me) +{ + me->state = 0; + if (item->active) + me->state = 1; + + /* update the state, incase this was changed via right-click. */ + /* This will update all other windows and menu bars */ + menu_foreach_gui (me, menu_update_cb); + + if (me->state) + handle_command (current_sess, me->cmd, FALSE); + else + handle_command (current_sess, me->ucmd, FALSE); +} + +static GtkWidget * +menu_radio_item (char *label, GtkWidget *menu, void *callback, void *userdata, + int state, char *groupname) +{ + GtkWidget *item; + GtkMenuItem *parent; + GSList *grouplist = NULL; + + parent = menu_find_item (menu, groupname); + if (parent) + grouplist = gtk_radio_menu_item_get_group ((GtkRadioMenuItem *)parent); + + item = gtk_radio_menu_item_new_with_label (grouplist, label); + gtk_check_menu_item_set_active ((GtkCheckMenuItem*)item, state); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (callback), userdata); + gtk_widget_show (item); + + return item; +} + +static void +menu_reorder (GtkMenu *menu, GtkWidget *item, int pos) +{ + if (pos == 0xffff) /* outbound.c uses this default */ + return; + + if (pos < 0) /* position offset from end/bottom */ + gtk_menu_reorder_child (menu, item, (g_list_length (GTK_MENU_SHELL (menu)->children) + pos) - 1); + else + gtk_menu_reorder_child (menu, item, pos); +} + +static GtkWidget * +menu_add_radio (GtkWidget *menu, menu_entry *me) +{ + GtkWidget *item = NULL; + char *path = me->path + me->root_offset; + + if (path[0] != 0) + menu = menu_find_path (menu, path); + if (menu) + { + item = menu_radio_item (me->label, menu, menu_radio_cb, me, me->state, me->group); + menu_reorder (GTK_MENU (menu), item, me->pos); + } + return item; +} + +static GtkWidget * +menu_add_toggle (GtkWidget *menu, menu_entry *me) +{ + GtkWidget *item = NULL; + char *path = me->path + me->root_offset; + + if (path[0] != 0) + menu = menu_find_path (menu, path); + if (menu) + { + item = menu_toggle_item (me->label, menu, menu_toggle_cb, me, me->state); + menu_reorder (GTK_MENU (menu), item, me->pos); + } + return item; +} + +static GtkWidget * +menu_add_item (GtkWidget *menu, menu_entry *me, char *target) +{ + GtkWidget *item = NULL; + char *path = me->path + me->root_offset; + + if (path[0] != 0) + menu = menu_find_path (menu, path); + if (menu) + { + item = menu_quick_item (me->cmd, me->label, menu, me->markup ? XCMENU_MARKUP|XCMENU_MNEMONIC : XCMENU_MNEMONIC, target, me->icon); + menu_reorder (GTK_MENU (menu), item, me->pos); + } + return item; +} + +static GtkWidget * +menu_add_sub (GtkWidget *menu, menu_entry *me) +{ + GtkWidget *item = NULL; + char *path = me->path + me->root_offset; + int pos; + + if (path[0] != 0) + menu = menu_find_path (menu, path); + if (menu) + { + pos = me->pos; + if (pos < 0) /* position offset from end/bottom */ + pos = g_list_length (GTK_MENU_SHELL (menu)->children) + pos; + menu_quick_sub (me->label, menu, &item, me->markup ? XCMENU_MARKUP|XCMENU_MNEMONIC : XCMENU_MNEMONIC, pos); + } + return item; +} + +static void +menu_del_cb (GtkWidget *menu, menu_entry *me, char *target) +{ + GtkWidget *item = menu_find (menu, me->path + me->root_offset, me->label); + if (item) + gtk_widget_destroy (item); +} + +static void +menu_add_cb (GtkWidget *menu, menu_entry *me, char *target) +{ + GtkWidget *item; + GtkAccelGroup *accel_group; + + if (me->group) /* have a group name? Must be a radio item */ + item = menu_add_radio (menu, me); + else if (me->ucmd) /* have unselect-cmd? Must be a toggle item */ + item = menu_add_toggle (menu, me); + else if (me->cmd || !me->label) /* label=NULL for separators */ + item = menu_add_item (menu, me, target); + else + item = menu_add_sub (menu, me); + + if (item) + { + gtk_widget_set_sensitive (item, me->enable); + if (me->key) + { + accel_group = g_object_get_data (G_OBJECT (menu), "accel"); + if (accel_group) /* popup menus don't have them */ + gtk_widget_add_accelerator (item, "activate", accel_group, me->key, + me->modifier, GTK_ACCEL_VISIBLE); + } + } +} + +char * +fe_menu_add (menu_entry *me) +{ + char *text; + + menu_foreach_gui (me, menu_add_cb); + + if (!me->markup) + return NULL; + + if (!pango_parse_markup (me->label, -1, 0, NULL, &text, NULL, NULL)) + return NULL; + + /* return the label with markup stripped */ + return text; +} + +void +fe_menu_del (menu_entry *me) +{ + menu_foreach_gui (me, menu_del_cb); +} + +void +fe_menu_update (menu_entry *me) +{ + menu_foreach_gui (me, menu_update_cb); +} + +/* used to add custom menus to the right-click menu */ + +static void +menu_add_plugin_mainmenu_items (GtkWidget *menu) +{ + GSList *list; + menu_entry *me; + + list = menu_list; /* outbound.c */ + while (list) + { + me = list->data; + if (me->is_main) + menu_add_cb (menu, me, NULL); + list = list->next; + } +} + +void +menu_add_plugin_items (GtkWidget *menu, char *root, char *target) +{ + GSList *list; + menu_entry *me; + + list = menu_list; /* outbound.c */ + while (list) + { + me = list->data; + if (!me->is_main && !strncmp (me->path, root + 1, root[0])) + menu_add_cb (menu, me, target); + list = list->next; + } +} + +/* === END STUFF FOR /MENU === */ + +GtkWidget * +menu_create_main (void *accel_group, int bar, int away, int toplevel, + GtkWidget **menu_widgets) +{ + int i = 0; + GtkWidget *item; + GtkWidget *menu = 0; + GtkWidget *menu_item = 0; + GtkWidget *menu_bar; + GtkWidget *usermenu = 0; + GtkWidget *submenu = 0; + int close_mask = STATE_CTRL; + int away_mask = STATE_ALT; + char *key_theme = NULL; + GtkSettings *settings; + GSList *group = NULL; +#ifdef HAVE_GTK_MAC + int appmenu_offset = 1; /* 0 is for about */ +#endif + + if (bar) + { + menu_bar = gtk_menu_bar_new (); +#ifdef HAVE_GTK_MAC + gtkosx_application_set_menu_bar (osx_app, GTK_MENU_SHELL (menu_bar)); +#endif + } + else + menu_bar = gtk_menu_new (); + + /* /MENU needs to know this later */ + g_object_set_data (G_OBJECT (menu_bar), "accel", accel_group); + + g_signal_connect (G_OBJECT (menu_bar), "can-activate-accel", + G_CALLBACK (menu_canacaccel), 0); + + /* set the initial state of toggles */ + mymenu[MENUBAR_OFFSET].state = !prefs.hex_gui_hide_menu; + mymenu[MENUBAR_OFFSET+1].state = prefs.hex_gui_topicbar; + mymenu[MENUBAR_OFFSET+2].state = !prefs.hex_gui_ulist_hide; + mymenu[MENUBAR_OFFSET+3].state = prefs.hex_gui_ulist_buttons; + mymenu[MENUBAR_OFFSET+4].state = prefs.hex_gui_mode_buttons; + + mymenu[AWAY_OFFSET].state = away; + + switch (prefs.hex_gui_tab_layout) + { + case 0: + mymenu[TABS_OFFSET].state = 1; + mymenu[TABS_OFFSET+1].state = 0; + break; + default: + mymenu[TABS_OFFSET].state = 0; + mymenu[TABS_OFFSET+1].state = 1; + } + + mymenu[METRE_OFFSET].state = 0; + mymenu[METRE_OFFSET+1].state = 0; + mymenu[METRE_OFFSET+2].state = 0; + mymenu[METRE_OFFSET+3].state = 0; + switch (prefs.hex_gui_lagometer) + { + case 0: + mymenu[METRE_OFFSET].state = 1; + break; + case 1: + mymenu[METRE_OFFSET+1].state = 1; + break; + case 2: + mymenu[METRE_OFFSET+2].state = 1; + break; + default: + mymenu[METRE_OFFSET+3].state = 1; + } + + /* change Close binding to ctrl-shift-w when using emacs keys */ + settings = gtk_widget_get_settings (menu_bar); + if (settings) + { + g_object_get (settings, "gtk-key-theme-name", &key_theme, NULL); + if (key_theme) + { + if (!g_ascii_strcasecmp (key_theme, "Emacs")) + { + close_mask = STATE_SHIFT | STATE_CTRL; + mymenu[SEARCH_OFFSET].key = 0; + } + g_free (key_theme); + } + } + + /* Away binding to ctrl-alt-a if the _Help menu conflicts (FR/PT/IT) */ + { + char *help = _("_Help"); + char *under = strchr (help, '_'); + if (under && (under[1] == 'a' || under[1] == 'A')) + away_mask = STATE_ALT | STATE_CTRL; + } + + if (!toplevel) + { + mymenu[DETACH_OFFSET].text = N_("_Detach"); + mymenu[CLOSE_OFFSET].text = N_("_Close"); + } + else + { + mymenu[DETACH_OFFSET].text = N_("_Attach"); + mymenu[CLOSE_OFFSET].text = N_("_Close"); + } + + while (1) + { + item = NULL; + if (mymenu[i].id == MENU_ID_USERMENU && !prefs.hex_gui_usermenu) + { + i++; + continue; + } + + switch (mymenu[i].type) + { + case M_NEWMENU: + if (menu) + gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_item), menu); + item = menu = gtk_menu_new (); + if (mymenu[i].id == MENU_ID_USERMENU) + usermenu = menu; + menu_item = gtk_menu_item_new_with_mnemonic (_(mymenu[i].text)); + /* record the English name for /menu */ + g_object_set_data (G_OBJECT (menu_item), "name", mymenu[i].text); +#ifdef HAVE_GTK_MAC /* Added to app menu, see below */ + if (!bar || mymenu[i].id != MENU_ID_HEXCHAT) +#endif + gtk_menu_shell_append (GTK_MENU_SHELL (menu_bar), menu_item); + gtk_widget_show (menu_item); + break; + + case M_MENUPIX: + item = create_icon_menu (_(mymenu[i].text), mymenu[i].image, FALSE); + goto normalitem; + + case M_MENUSTOCK: + item = create_icon_menu (_(mymenu[i].text), mymenu[i].image, TRUE); + goto normalitem; + + case M_MENUITEM: + item = gtk_menu_item_new_with_mnemonic (_(mymenu[i].text)); +normalitem: + if (mymenu[i].key != 0) + gtk_widget_add_accelerator (item, "activate", accel_group, + mymenu[i].key, + mymenu[i].key == GDK_KEY_F1 ? 0 : + mymenu[i].key == GDK_KEY_w ? close_mask : + (g_ascii_isupper (mymenu[i].key)) ? + STATE_SHIFT | STATE_CTRL : + STATE_CTRL, + GTK_ACCEL_VISIBLE); + if (mymenu[i].callback) + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (mymenu[i].callback), 0); + if (submenu) + gtk_menu_shell_append (GTK_MENU_SHELL (submenu), item); + else + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + gtk_widget_show (item); + break; + + case M_MENUTOG: + item = gtk_check_menu_item_new_with_mnemonic (_(mymenu[i].text)); +togitem: + /* must avoid callback for Radio buttons */ + GTK_CHECK_MENU_ITEM (item)->active = mymenu[i].state; + /*gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), + mymenu[i].state);*/ + if (mymenu[i].key != 0) + gtk_widget_add_accelerator (item, "activate", accel_group, + mymenu[i].key, + mymenu[i].id == MENU_ID_FULLSCREEN ? 0 : + mymenu[i].id == MENU_ID_AWAY ? away_mask : + STATE_CTRL, GTK_ACCEL_VISIBLE); + if (mymenu[i].callback) + g_signal_connect (G_OBJECT (item), "toggled", + G_CALLBACK (mymenu[i].callback), NULL); + + if (submenu) + gtk_menu_shell_append (GTK_MENU_SHELL (submenu), item); + else + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + gtk_widget_show (item); + gtk_widget_set_sensitive (item, mymenu[i].sensitive); + break; + + case M_MENURADIO: + item = gtk_radio_menu_item_new_with_mnemonic (group, _(mymenu[i].text)); + group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (item)); + goto togitem; + + case M_SEP: + item = gtk_menu_item_new (); + gtk_widget_set_sensitive (item, FALSE); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + gtk_widget_show (item); + break; + + case M_MENUSUB: + group = NULL; + submenu = gtk_menu_new (); + item = create_icon_menu (_(mymenu[i].text), mymenu[i].image, TRUE); + /* record the English name for /menu */ + g_object_set_data (G_OBJECT (item), "name", mymenu[i].text); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), submenu); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + gtk_widget_show (item); + break; + + /*case M_END:*/ default: + if (!submenu) + { + if (menu) + { + gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_item), menu); + menu_add_plugin_mainmenu_items (menu_bar); + } + if (usermenu) + usermenu_create (usermenu); + return (menu_bar); + } + submenu = NULL; + } + + /* record this GtkWidget * so it's state might be changed later */ + if (mymenu[i].id != 0 && menu_widgets) + /* this ends up in sess->gui->menu_item[MENU_ID_XXX] */ + menu_widgets[mymenu[i].id] = item; + +#ifdef HAVE_GTK_MAC + /* We want HexChat to be the app menu, not including Quit or HexChat itself */ + if (bar && item && i <= CLOSE_OFFSET + 1 && mymenu[i].id != MENU_ID_HEXCHAT) + { + if (!submenu || mymenu[i].type == M_MENUSUB) + gtkosx_application_insert_app_menu_item (osx_app, item, appmenu_offset++); + } +#endif + + i++; + } +} diff --git a/hexchat/src/fe-gtk/menu.h b/hexchat/src/fe-gtk/menu.h new file mode 100644 index 0000000..db2dc70 --- /dev/null +++ b/hexchat/src/fe-gtk/menu.h @@ -0,0 +1,71 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_MENU_H +#define HEXCHAT_MENU_H + +GtkWidget *menu_create_main (void *accel_group, int bar, int away, int toplevel, GtkWidget **menu_widgets); +void menu_urlmenu (GdkEventButton * event, char *url); +void menu_chanmenu (session *sess, GdkEventButton * event, char *chan); +void menu_addfavoritemenu (server *serv, GtkWidget *menu, char *channel, gboolean istree); +void menu_addconnectmenu (server *serv, GtkWidget *menu); +void menu_nickmenu (session *sess, GdkEventButton * event, char *nick, int num_sel); +void menu_middlemenu (session *sess, GdkEventButton *event); +void userlist_button_cb (GtkWidget * button, char *cmd); +void nick_command_parse (session *sess, char *cmd, char *nick, char *allnick); +void usermenu_update (void); +GtkWidget *menu_toggle_item (char *label, GtkWidget *menu, void *callback, void *userdata, int state); +GtkWidget *menu_quick_item (char *cmd, char *label, GtkWidget * menu, int flags, gpointer userdata, char *icon); +GtkWidget *menu_quick_sub (char *name, GtkWidget *menu, GtkWidget **sub_item_ret, int flags, int pos); +GtkWidget *create_icon_menu (char *labeltext, void *stock_name, int is_stock); +void menu_create (GtkWidget *menu, GSList *list, char *target, int check_path); +void menu_bar_toggle (void); +void menu_add_plugin_items (GtkWidget *menu, char *root, char *target); +void menu_change_layout (void); + +void menu_set_away (session_gui *gui, int away); +void menu_set_fullscreen (session_gui *gui, int fullscreen); + +/* for menu_quick functions */ +#define XCMENU_DOLIST 1 +#define XCMENU_SHADED 1 +#define XCMENU_MARKUP 2 +#define XCMENU_MNEMONIC 4 + +/* menu items we keep a GtkWidget* for (to change their state) */ +#define MENU_ID_AWAY 1 +#define MENU_ID_MENUBAR 2 +#define MENU_ID_TOPICBAR 3 +#define MENU_ID_USERLIST 4 +#define MENU_ID_ULBUTTONS 5 +#define MENU_ID_MODEBUTTONS 6 +#define MENU_ID_LAYOUT_TABS 7 +#define MENU_ID_LAYOUT_TREE 8 +#define MENU_ID_DISCONNECT 9 +#define MENU_ID_RECONNECT 10 +#define MENU_ID_JOIN 11 +#define MENU_ID_USERMENU 12 +#define MENU_ID_FULLSCREEN 13 +#define MENU_ID_HEXCHAT 14 + +#if (MENU_ID_NUM < MENU_ID_HEXCHAT) +#error MENU_ID_NUM is set wrong +#endif + +#endif diff --git a/hexchat/src/fe-gtk/meson.build b/hexchat/src/fe-gtk/meson.build new file mode 100644 index 0000000..d07514d --- /dev/null +++ b/hexchat/src/fe-gtk/meson.build @@ -0,0 +1,91 @@ +hexchat_gtk_sources = [ + 'ascii.c', + 'banlist.c', + 'chanlist.c', + 'chanview.c', + 'custom-list.c', + 'dccgui.c', + 'editlist.c', + 'fe-gtk.c', + 'fkeys.c', + 'gtkutil.c', + 'ignoregui.c', + 'joind.c', + 'menu.c', + 'maingui.c', + 'notifygui.c', + 'palette.c', + 'pixmaps.c', + 'plugin-tray.c', + 'plugin-notification.c', + 'rawlog.c', + 'servlistgui.c', + 'setup.c', + 'sexy-spell-entry.c', + 'textgui.c', + 'urlgrab.c', + 'userlistgui.c', + 'xtext.c' +] + +gtk_dep = dependency('gtk+-2.0', version: '>= 2.24.0') +hexchat_gtk_deps = [ + hexchat_common_dep, + libgmodule_dep, # used by libsexy + gtk_dep +] + +if gtk_dep.get_pkgconfig_variable('target') == 'x11' + hexchat_gtk_deps += dependency('x11') +endif + +hexchat_gtk_cflags = [] + +hexchat_gtk_ldflags = [] + +if host_machine.system() == 'windows' + hexchat_gtk_sources += 'notifications/notification-windows.c' + + # TODO: mingw doesn't have these headers or libs + # add_languages('cpp') + # shared_module('hcnotifications-winrt', + # sources: 'notifications/notification-winrt.cpp' + #) + +else + hexchat_gtk_sources += 'notifications/notification-freedesktop.c' +endif + +iso_codes = dependency('iso-codes', required: false) +if iso_codes.found() + hexchat_gtk_sources += 'sexy-iso-codes.c' + iso_codes_prefix = iso_codes.get_pkgconfig_variable('prefix') + hexchat_gtk_cflags += '-DISO_CODES_PREFIX="@0@"'.format(iso_codes_prefix) + hexchat_gtk_cflags += '-DISO_CODES_LOCALEDIR="@0@"'.format( + join_paths(iso_codes_prefix, 'share/locale')) +endif + +if get_option('plugin') + hexchat_gtk_sources += 'plugingui.c' +endif + +resources = gnome.compile_resources('resources', + '../../data/hexchat.gresource.xml', + source_dir: '../../data', # TODO: Fix upstream + c_name: 'hexchat', + extra_args: ['--manual-register'] +) + +if host_machine.system() == 'windows' + hexchat_gtk_ldflags += '-Wl,-e,mainCRTStartup' +endif + +executable('hexchat', + sources: resources + hexchat_gtk_sources, + dependencies: hexchat_gtk_deps, + c_args: hexchat_gtk_cflags, + link_args: hexchat_gtk_ldflags, + pie: true, + install: true, + gui_app: true, +) diff --git a/hexchat/src/fe-gtk/notifications/notification-backend.h b/hexchat/src/fe-gtk/notifications/notification-backend.h new file mode 100644 index 0000000..4bcaa7d --- /dev/null +++ b/hexchat/src/fe-gtk/notifications/notification-backend.h @@ -0,0 +1,27 @@ +/* HexChat + * Copyright (C) 2015 Patrick Griffis. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_PLUGIN_NOTIFICATION_BACKEND_H +#define HEXCHAT_PLUGIN_NOTIFICATION_BACKEND_H + +int notification_backend_supported (void); +void notification_backend_show (const char *title, const char *text); +int notification_backend_init (const char **error); +void notification_backend_deinit (void); + +#endif diff --git a/hexchat/src/fe-gtk/notifications/notification-dummy.c b/hexchat/src/fe-gtk/notifications/notification-dummy.c new file mode 100644 index 0000000..9aa7d19 --- /dev/null +++ b/hexchat/src/fe-gtk/notifications/notification-dummy.c @@ -0,0 +1,39 @@ +/* HexChat + * Copyright (C) 2015 Patrick Griffis. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +void +notification_backend_show (const char *title, const char *text) +{ +} + +int +notification_backend_init (const char **error) +{ + return 0; +} + +void +notification_backend_deinit (void) +{ +} + +int +notification_backend_supported (void) +{ + return 0; +} diff --git a/hexchat/src/fe-gtk/notifications/notification-freedesktop.c b/hexchat/src/fe-gtk/notifications/notification-freedesktop.c new file mode 100644 index 0000000..a23284e --- /dev/null +++ b/hexchat/src/fe-gtk/notifications/notification-freedesktop.c @@ -0,0 +1,148 @@ +/* HexChat + * Copyright (C) 2021 Patrick Griffis. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "config.h" + +#include <string.h> +#include <gio/gio.h> + +static GDBusProxy *fdo_notifications; +static gboolean strip_markup; + +static void +on_notify_ready (GDBusProxy *proxy, GAsyncResult *res, gpointer user_data) +{ + GError *error = NULL; + guint32 notification_id; + GVariant *response = g_dbus_proxy_call_finish (proxy, res, &error); + if (error) + { + g_info ("Failed to send notification: %s", error->message); + g_error_free (error); + return; + } + + g_variant_get (response, "(u)", ¬ification_id); + g_info ("Notification sent. ID=%u", notification_id); + + g_variant_unref (response); +} + +void +notification_backend_show (const char *title, const char *text) +{ + GVariantBuilder params; + + g_assert (fdo_notifications); + + if (strip_markup) + text = g_markup_escape_text (text, -1); + + g_variant_builder_init (¶ms, G_VARIANT_TYPE ("(susssasa{sv}i)")); + g_variant_builder_add (¶ms, "s", "hexchat"); /* App name */ + g_variant_builder_add (¶ms, "u", 0); /* ID, 0 means don't replace */ + g_variant_builder_add (¶ms, "s", "io.github.Hexchat"); /* App icon */ + g_variant_builder_add (¶ms, "s", title); + g_variant_builder_add (¶ms, "s", text); + g_variant_builder_add (¶ms, "as", NULL); /* Actions */ + + /* Hints */ + g_variant_builder_open (¶ms, G_VARIANT_TYPE ("a{sv}")); + g_variant_builder_open (¶ms, G_VARIANT_TYPE ("{sv}")); + g_variant_builder_add (¶ms, "s", "desktop-entry"); + g_variant_builder_add (¶ms, "v", g_variant_new_string ("io.github.Hexchat")); + g_variant_builder_close (¶ms); + g_variant_builder_close (¶ms); + + g_variant_builder_add (¶ms, "i", -1); /* Expiration */ + + g_dbus_proxy_call (fdo_notifications, + "Notify", + g_variant_builder_end (¶ms), + G_DBUS_CALL_FLAGS_NONE, + 1000, + NULL, + (GAsyncReadyCallback)on_notify_ready, + NULL); + + if (strip_markup) + g_free ((char*)text); +} + +int +notification_backend_init (const char **error) +{ + GError *err = NULL; + GVariant *response; + char **capabilities; + guint i; + + fdo_notifications = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION, + G_DBUS_PROXY_FLAGS_NONE, + NULL, + "org.freedesktop.Notifications", + "/org/freedesktop/Notifications", + "org.freedesktop.Notifications", + NULL, + &err); + + if (err) + goto return_error; + + response = g_dbus_proxy_call_sync (fdo_notifications, + "GetCapabilities", + NULL, + G_DBUS_CALL_FLAGS_NONE, + 30, + NULL, + &err); + + if (err) + { + g_clear_object (&fdo_notifications); + goto return_error; + } + + g_variant_get (response, "(^a&s)", &capabilities); + for (i = 0; capabilities[i]; i++) + { + if (strcmp (capabilities[i], "body-markup") == 0) + strip_markup = TRUE; + } + + g_free (capabilities); + g_variant_unref (response); + return 1; + +return_error: + *error = g_strdup (err->message); + g_error_free (err); + return 0; +} + +void +notification_backend_deinit (void) +{ + g_clear_object (&fdo_notifications); +} + +int +notification_backend_supported (void) +{ + return fdo_notifications != NULL; +} diff --git a/hexchat/src/fe-gtk/notifications/notification-osx.m b/hexchat/src/fe-gtk/notifications/notification-osx.m new file mode 100644 index 0000000..75aaf77 --- /dev/null +++ b/hexchat/src/fe-gtk/notifications/notification-osx.m @@ -0,0 +1,54 @@ +/* HexChat + * Copyright (C) 2015 Patrick Griffis. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#import <Cocoa/Cocoa.h> +#include <gtkosxapplication.h> + +void +notification_backend_show (const char *title, const char *text) +{ + NSString *str_title = [[NSString alloc] initWithUTF8String:title]; + NSString *str_text = [[NSString alloc] initWithUTF8String:text]; + + NSUserNotification *userNotification = [NSUserNotification new]; + userNotification.title = str_title; + userNotification.informativeText = str_text; + + NSUserNotificationCenter *center = [NSUserNotificationCenter defaultUserNotificationCenter]; + [center scheduleNotification:userNotification]; + + [str_title release]; + [str_text release]; +} + +int +notification_backend_init (const char **error) +{ + return 1; +} + +void +notification_backend_deinit (void) +{ +} + +int +notification_backend_supported (void) +{ + return gtkosx_application_get_bundle_id () != NULL; +} diff --git a/hexchat/src/fe-gtk/notifications/notification-windows.c b/hexchat/src/fe-gtk/notifications/notification-windows.c new file mode 100644 index 0000000..2fd896c --- /dev/null +++ b/hexchat/src/fe-gtk/notifications/notification-windows.c @@ -0,0 +1,87 @@ +/* HexChat + * Copyright (C) 2015 Arnav Singh. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "hexchat.h" +#include "plugin.h" + +#include <gmodule.h> +#include <windows.h> + +void (*winrt_notification_backend_show) (const char *title, const char *text) = NULL; +int (*winrt_notification_backend_init) (const char **error) = NULL; +void (*winrt_notification_backend_deinit) (void) = NULL; +int (*winrt_notification_backend_supported) (void) = NULL; + +void +notification_backend_show (const char *title, const char *text) +{ + if (winrt_notification_backend_show == NULL) + { + return; + } + + winrt_notification_backend_show (title, text); +} + +int +notification_backend_init (const char **error) +{ + UINT original_error_mode; + GModule *module; + + /* Temporarily suppress the "DLL could not be loaded" dialog box before trying to load hcnotifications-winrt.dll */ + original_error_mode = GetErrorMode (); + SetErrorMode(SEM_FAILCRITICALERRORS); + module = module_load (HEXCHATLIBDIR "\\hcnotifications-winrt.dll"); + SetErrorMode (original_error_mode); + + if (module == NULL) + { + *error = "hcnotifications-winrt not found."; + return 0; + } + + g_module_symbol (module, "notification_backend_show", (gpointer *) &winrt_notification_backend_show); + g_module_symbol (module, "notification_backend_init", (gpointer *) &winrt_notification_backend_init); + g_module_symbol (module, "notification_backend_deinit", (gpointer *) &winrt_notification_backend_deinit); + g_module_symbol (module, "notification_backend_supported", (gpointer *) &winrt_notification_backend_supported); + + return winrt_notification_backend_init (error); +} + +void +notification_backend_deinit (void) +{ + if (winrt_notification_backend_deinit == NULL) + { + return; + } + + winrt_notification_backend_deinit (); +} + +int +notification_backend_supported (void) +{ + if (winrt_notification_backend_supported == NULL) + { + return 0; + } + + return winrt_notification_backend_supported (); +} diff --git a/hexchat/src/fe-gtk/notifications/notification-winrt.cpp b/hexchat/src/fe-gtk/notifications/notification-winrt.cpp new file mode 100644 index 0000000..3b966cf --- /dev/null +++ b/hexchat/src/fe-gtk/notifications/notification-winrt.cpp @@ -0,0 +1,130 @@ +/* HexChat + * Copyright (c) 2014 Leetsoftwerx + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include <string> +#include <codecvt> +#include <strsafe.h> + +#include <roapi.h> +#include <windows.ui.notifications.h> + +using namespace Windows::UI::Notifications; +using namespace Windows::Data::Xml::Dom; + +static ToastNotifier ^ notifier = nullptr; + +static std::wstring +widen(const std::string & to_widen) +{ + std::wstring_convert<std::codecvt_utf8_utf16<wchar_t> > converter; + return converter.from_bytes(to_widen); +} + +static std::string +narrow(const std::wstring & to_narrow) +{ + std::wstring_convert<std::codecvt_utf8<wchar_t>> converter; + return converter.to_bytes(to_narrow); +} + + +extern "C" +{ + __declspec (dllexport) void + notification_backend_show (const char *title, const char *text) + { + try + { + auto toastTemplate = ToastNotificationManager::GetTemplateContent (ToastTemplateType::ToastText02); + auto node_list = toastTemplate->GetElementsByTagName (L"text"); + UINT node_count = node_list->Length; + + auto wtitle = widen (title); + node_list->GetAt (0)->AppendChild ( + toastTemplate->CreateTextNode (Platform::StringReference (wtitle.c_str (), wtitle.size ()))); + + auto wtext = widen (text); + node_list->GetAt (1)->AppendChild ( + toastTemplate->CreateTextNode (Platform::StringReference (wtext.c_str (), wtext.size ()))); + + // Mute sound, we already play our own + auto node = toastTemplate->SelectSingleNode (L"/toast"); + auto audio_elem = toastTemplate->CreateElement (L"audio"); + audio_elem->SetAttribute (L"silent", L"true"); + static_cast<XmlElement^>(node)->AppendChild (audio_elem); + + notifier->Show (ref new ToastNotification (toastTemplate)); + } + catch (Platform::Exception ^ ex) + { + } + catch (...) + { + } + } + + __declspec (dllexport) int + notification_backend_init (const char **error) + { + try + { + if (!notifier) + notifier = ToastNotificationManager::CreateToastNotifier (L"HexChat.Desktop.Notify"); + } + catch (Platform::Exception ^ ex) + { + static char exc_message[1024]; + std::string tmp = narrow(std::wstring(ex->Message->Data())); + if (SUCCEEDED(StringCchPrintfA(exc_message, _countof(exc_message), "Error (0x%x): %s", ex->HResult, tmp.c_str()))) + *error = exc_message; + else + *error = "Exception + error converting exception message."; + return 0; + } + catch (...) + { + *error = "Generic c++ exception."; + return 0; + } + + if (FAILED (Windows::Foundation::Initialize (RO_INIT_SINGLETHREADED))) + { + *error = "Error initializing Windows::Foundation."; + return 0; + } + + return 1; + } + + __declspec (dllexport) void + notification_backend_deinit (void) + { + notifier = nullptr; + Windows::Foundation::Uninitialize (); + } + + __declspec (dllexport) int + notification_backend_supported (void) + { + return 1; + } +} diff --git a/hexchat/src/fe-gtk/notifications/notifications-winrt.vcxproj b/hexchat/src/fe-gtk/notifications/notifications-winrt.vcxproj new file mode 100644 index 0000000..2f6ffc9 --- /dev/null +++ b/hexchat/src/fe-gtk/notifications/notifications-winrt.vcxproj @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <ItemGroup> + <ClCompile Include="notification-winrt.cpp"> + <CompileAsWinRT>true</CompileAsWinRT> + </ClCompile> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{C53145CC-D021-40C9-B97C-0249AB9A43C9}</ProjectGuid> + <Keyword>Win32Proj</Keyword> + <RootNamespace>notifications-winrt</RootNamespace> + <ProjectName>notifications-winrt</ProjectName> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Label="Configuration"> + <PlatformToolset>v142</PlatformToolset> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + <Import Project="..\..\..\win32\hexchat.props" /> + <PropertyGroup> + <TargetName>hcnotifications-winrt</TargetName> + <OutDir>$(HexChatRel)plugins\</OutDir> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <PreprocessorDefinitions>WIN32;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_MEMORY;_CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES_MEMORY;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT;NDEBUG;_WINDOWS;_USRDLL;NOTIFICATIONS_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <SDLCheck>true</SDLCheck> + <AdditionalUsingDirectories>$(VC_LibraryPath_VC_x86_Store)\references;$(WindowsSDK_UnionMetadataPath);$(VCInstallDir)vcpackages;$(FrameworkSdkDir)References\CommonConfiguration\Neutral;%(AdditionalUsingDirectories)</AdditionalUsingDirectories> + <CompileAsWinRT>true</CompileAsWinRT> + </ClCompile> + <Link> + <AdditionalDependencies>$(DepLibs);mincore.lib;runtimeobject.lib;%(AdditionalDependencies)</AdditionalDependencies> + <MinimumRequiredVersion>6.03</MinimumRequiredVersion> + <AdditionalLibraryDirectories>$(DepsRoot)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <ClCompile> + <PreprocessorDefinitions>WIN32;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_MEMORY;_CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES_MEMORY;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT;NDEBUG;_WINDOWS;_USRDLL;NOTIFICATIONS_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <SDLCheck>true</SDLCheck> + <AdditionalUsingDirectories>$(VC_LibraryPath_VC_x86_Store)\references;$(WindowsSDK_UnionMetadataPath);$(VCInstallDir)vcpackages;$(FrameworkSdkDir)References\CommonConfiguration\Neutral;%(AdditionalUsingDirectories)</AdditionalUsingDirectories> + <CompileAsWinRT>true</CompileAsWinRT> + </ClCompile> + <Link> + <AdditionalDependencies>$(DepLibs);mincore.lib;runtimeobject.lib;%(AdditionalDependencies)</AdditionalDependencies> + <MinimumRequiredVersion>6.03</MinimumRequiredVersion> + <AdditionalLibraryDirectories>$(DepsRoot)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + </Link> + </ItemDefinitionGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> +</Project> diff --git a/hexchat/src/fe-gtk/notifications/notifications-winrt.vcxproj.filters b/hexchat/src/fe-gtk/notifications/notifications-winrt.vcxproj.filters new file mode 100644 index 0000000..06f4e55 --- /dev/null +++ b/hexchat/src/fe-gtk/notifications/notifications-winrt.vcxproj.filters @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Source Files"> + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> + <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> + </Filter> + <Filter Include="Header Files"> + <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> + <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions> + </Filter> + <Filter Include="Resource Files"> + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> + </Filter> + </ItemGroup> + <ItemGroup> + <ClCompile Include="notification-winrt.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + </ItemGroup> +</Project> \ No newline at end of file diff --git a/hexchat/src/fe-gtk/notifygui.c b/hexchat/src/fe-gtk/notifygui.c new file mode 100644 index 0000000..38b35eb --- /dev/null +++ b/hexchat/src/fe-gtk/notifygui.c @@ -0,0 +1,441 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <fcntl.h> +#include <time.h> + +#include "fe-gtk.h" + +#include "../common/hexchat.h" +#include "../common/notify.h" +#include "../common/cfgfiles.h" +#include "../common/fe.h" +#include "../common/server.h" +#include "../common/util.h" +#include "../common/userlist.h" +#include "../common/outbound.h" +#include "gtkutil.h" +#include "maingui.h" +#include "palette.h" +#include "notifygui.h" + + +/* model for the notify treeview */ +enum +{ + USER_COLUMN, + STATUS_COLUMN, + SERVER_COLUMN, + SEEN_COLUMN, + COLOUR_COLUMN, + NPS_COLUMN, /* struct notify_per_server * */ + N_COLUMNS +}; + + +static GtkWidget *notify_window = 0; +static GtkWidget *notify_button_opendialog; +static GtkWidget *notify_button_remove; + + +static void +notify_closegui (void) +{ + notify_window = 0; + notify_save (); +} + +/* Need this to be able to set the foreground colour property of a row + * from a GdkColor * in the model -Vince + */ +static void +notify_treecell_property_mapper (GtkTreeViewColumn *col, GtkCellRenderer *cell, + GtkTreeModel *model, GtkTreeIter *iter, + gpointer data) +{ + gchar *text; + GdkColor *colour; + int model_column = GPOINTER_TO_INT (data); + + gtk_tree_model_get (GTK_TREE_MODEL (model), iter, + COLOUR_COLUMN, &colour, + model_column, &text, -1); + g_object_set (G_OBJECT (cell), "text", text, NULL); + g_object_set (G_OBJECT (cell), "foreground-gdk", colour, NULL); + g_free (text); +} + +static void +notify_row_cb (GtkTreeSelection *sel, GtkTreeView *view) +{ + GtkTreeIter iter; + struct notify_per_server *servnot; + + if (gtkutil_treeview_get_selected (view, &iter, NPS_COLUMN, &servnot, -1)) + { + gtk_widget_set_sensitive (notify_button_opendialog, servnot ? servnot->ison : 0); + gtk_widget_set_sensitive (notify_button_remove, TRUE); + return; + } + + gtk_widget_set_sensitive (notify_button_opendialog, FALSE); + gtk_widget_set_sensitive (notify_button_remove, FALSE); +} + +static GtkWidget * +notify_treeview_new (GtkWidget *box) +{ + GtkListStore *store; + GtkWidget *view; + GtkTreeViewColumn *col; + int col_id; + + store = gtk_list_store_new (N_COLUMNS, + G_TYPE_STRING, + G_TYPE_STRING, + G_TYPE_STRING, + G_TYPE_STRING, + G_TYPE_POINTER, /* can't specify colour! */ + G_TYPE_POINTER + ); + g_return_val_if_fail (store != NULL, NULL); + + view = gtkutil_treeview_new (box, GTK_TREE_MODEL (store), + notify_treecell_property_mapper, + USER_COLUMN, _("Name"), + STATUS_COLUMN, _("Status"), + SERVER_COLUMN, _("Network"), + SEEN_COLUMN, _("Last Seen"), -1); + gtk_tree_view_column_set_expand (gtk_tree_view_get_column (GTK_TREE_VIEW (view), 0), TRUE); + + for (col_id=0; (col = gtk_tree_view_get_column (GTK_TREE_VIEW (view), col_id)); + col_id++) + gtk_tree_view_column_set_alignment (col, 0.5); + + g_signal_connect (G_OBJECT (gtk_tree_view_get_selection (GTK_TREE_VIEW (view))), + "changed", G_CALLBACK (notify_row_cb), view); + + gtk_widget_show (view); + return view; +} + +void +notify_gui_update (void) +{ + struct notify *notify; + struct notify_per_server *servnot; + GSList *list = notify_list; + GSList *slist; + gchar *name, *status, *server, *seen; + int online, servcount, lastseenminutes; + time_t lastseen; + char agobuf[128]; + + GtkListStore *store; + GtkTreeView *view; + GtkTreeIter iter; + gboolean valid; /* true if we don't need to append a new tree row */ + + if (!notify_window) + return; + + view = g_object_get_data (G_OBJECT (notify_window), "view"); + store = GTK_LIST_STORE (gtk_tree_view_get_model (view)); + valid = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter); + + while (list) + { + notify = (struct notify *) list->data; + name = notify->name; + status = _("Offline"); + server = ""; + + online = FALSE; + lastseen = 0; + /* First see if they're online on any servers */ + slist = notify->server_list; + while (slist) + { + servnot = (struct notify_per_server *) slist->data; + if (servnot->ison) + online = TRUE; + if (servnot->lastseen > lastseen) + lastseen = servnot->lastseen; + slist = slist->next; + } + + if (!online) /* Offline on all servers */ + { + if (!lastseen) + seen = _("Never"); + else + { + lastseenminutes = (int)(time (0) - lastseen) / 60; + if (lastseenminutes < 60) + g_snprintf (agobuf, sizeof (agobuf), _("%d minutes ago"), lastseenminutes); + else if (lastseenminutes < 120) + g_snprintf (agobuf, sizeof (agobuf), _("An hour ago")); + else + g_snprintf (agobuf, sizeof (agobuf), _("%d hours ago"), lastseenminutes / 60); + seen = agobuf; + } + if (!valid) /* create new tree row if required */ + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, 0, name, 1, status, + 2, server, 3, seen, 4, &colors[4], 5, NULL, -1); + if (valid) + valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter); + + } else + { + /* Online - add one line per server */ + servcount = 0; + slist = notify->server_list; + status = _("Online"); + while (slist) + { + servnot = (struct notify_per_server *) slist->data; + if (servnot->ison) + { + if (servcount > 0) + name = ""; + server = server_get_network (servnot->server, TRUE); + + g_snprintf (agobuf, sizeof (agobuf), _("%d minutes ago"), (int)(time (0) - lastseen) / 60); + seen = agobuf; + + if (!valid) /* create new tree row if required */ + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, 0, name, 1, status, + 2, server, 3, seen, 4, &colors[3], 5, servnot, -1); + if (valid) + valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter); + + servcount++; + } + slist = slist->next; + } + } + + list = list->next; + } + + while (valid) + { + GtkTreeIter old = iter; + /* get next iter now because removing invalidates old one */ + valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (store), + &iter); + gtk_list_store_remove (store, &old); + } + + notify_row_cb (gtk_tree_view_get_selection (view), view); +} + +static void +notify_opendialog_clicked (GtkWidget * igad) +{ + GtkTreeView *view; + GtkTreeIter iter; + struct notify_per_server *servnot; + + view = g_object_get_data (G_OBJECT (notify_window), "view"); + if (gtkutil_treeview_get_selected (view, &iter, NPS_COLUMN, &servnot, -1)) + { + if (servnot) + open_query (servnot->server, servnot->notify->name, TRUE); + } +} + +static void +notify_remove_clicked (GtkWidget * igad) +{ + GtkTreeView *view; + GtkTreeModel *model; + GtkTreeIter iter; + GtkTreePath *path = NULL; + gboolean found = FALSE; + char *name; + + view = g_object_get_data (G_OBJECT (notify_window), "view"); + if (gtkutil_treeview_get_selected (view, &iter, USER_COLUMN, &name, -1)) + { + model = gtk_tree_view_get_model (view); + found = (*name != 0); + while (!found) /* the real nick is some previous node */ + { + g_free (name); /* it's useless to us */ + if (!path) + path = gtk_tree_model_get_path (model, &iter); + if (!gtk_tree_path_prev (path)) /* arrgh! no previous node! */ + { + g_warning ("notify list state is invalid\n"); + break; + } + if (!gtk_tree_model_get_iter (model, &iter, path)) + break; + gtk_tree_model_get (model, &iter, USER_COLUMN, &name, -1); + found = (*name != 0); + } + if (path) + gtk_tree_path_free (path); + if (!found) + return; + + /* ok, now we can remove it */ + gtk_list_store_remove (GTK_LIST_STORE (model), &iter); + notify_deluser (name); + g_free (name); + } +} + +static void +notifygui_add_cb (GtkDialog *dialog, gint response, gpointer entry) +{ + char *networks; + char *text; + + text = (char *)gtk_entry_get_text (GTK_ENTRY (entry)); + if (text[0] && response == GTK_RESPONSE_ACCEPT) + { + networks = (char*)gtk_entry_get_text (GTK_ENTRY (g_object_get_data (G_OBJECT (entry), "net"))); + if (g_ascii_strcasecmp (networks, "ALL") == 0 || networks[0] == 0) + notify_adduser (text, NULL); + else + notify_adduser (text, networks); + } + + gtk_widget_destroy (GTK_WIDGET (dialog)); +} + +static void +notifygui_add_enter (GtkWidget *entry, GtkWidget *dialog) +{ + gtk_dialog_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT); +} + +void +fe_notify_ask (char *nick, char *networks) +{ + GtkWidget *dialog; + GtkWidget *entry; + GtkWidget *label; + GtkWidget *wid; + GtkWidget *table; + char *msg = _("Enter nickname to add:"); + char buf[256]; + + dialog = gtk_dialog_new_with_buttons (msg, NULL, 0, + GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, + GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, + NULL); + if (parent_window) + gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (parent_window)); + gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); + + table = gtk_table_new (2, 3, FALSE); + gtk_container_set_border_width (GTK_CONTAINER (table), 12); + gtk_table_set_row_spacings (GTK_TABLE (table), 3); + gtk_table_set_col_spacings (GTK_TABLE (table), 8); + gtk_container_add (GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), table); + + label = gtk_label_new (msg); + gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 0, 1); + + entry = gtk_entry_new (); + gtk_entry_set_text (GTK_ENTRY (entry), nick); + g_signal_connect (G_OBJECT (entry), "activate", + G_CALLBACK (notifygui_add_enter), dialog); + gtk_table_attach_defaults (GTK_TABLE (table), entry, 1, 2, 0, 1); + + g_signal_connect (G_OBJECT (dialog), "response", + G_CALLBACK (notifygui_add_cb), entry); + + label = gtk_label_new (_("Notify on these networks:")); + gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 2, 3); + + wid = gtk_entry_new (); + g_object_set_data (G_OBJECT (entry), "net", wid); + g_signal_connect (G_OBJECT (wid), "activate", + G_CALLBACK (notifygui_add_enter), dialog); + gtk_entry_set_text (GTK_ENTRY (wid), networks ? networks : "ALL"); + gtk_table_attach_defaults (GTK_TABLE (table), wid, 1, 2, 2, 3); + + label = gtk_label_new (NULL); + g_snprintf (buf, sizeof (buf), "<i><span size=\"smaller\">%s</span></i>", _("Comma separated list of networks is accepted.")); + gtk_label_set_markup (GTK_LABEL (label), buf); + gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 3, 4); + + gtk_widget_show_all (dialog); +} + +static void +notify_add_clicked (GtkWidget * igad) +{ + fe_notify_ask ("", NULL); +} + +void +notify_opengui (void) +{ + GtkWidget *vbox, *bbox; + GtkWidget *view; + char buf[128]; + + if (notify_window) + { + mg_bring_tofront (notify_window); + return; + } + + g_snprintf(buf, sizeof(buf), _("Friends List - %s"), _(DISPLAY_NAME)); + notify_window = + mg_create_generic_tab ("Notify", buf, FALSE, TRUE, notify_closegui, NULL, 400, + 250, &vbox, 0); + gtkutil_destroy_on_esc (notify_window); + + view = notify_treeview_new (vbox); + g_object_set_data (G_OBJECT (notify_window), "view", view); + + bbox = gtk_hbutton_box_new (); + gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_SPREAD); + gtk_container_set_border_width (GTK_CONTAINER (bbox), 5); + gtk_box_pack_end (GTK_BOX (vbox), bbox, 0, 0, 0); + gtk_widget_show (bbox); + + gtkutil_button (bbox, GTK_STOCK_NEW, 0, notify_add_clicked, 0, + _("Add...")); + + notify_button_remove = + gtkutil_button (bbox, GTK_STOCK_DELETE, 0, notify_remove_clicked, 0, + _("Remove")); + + notify_button_opendialog = + gtkutil_button (bbox, NULL, 0, notify_opendialog_clicked, 0, + _("Open Dialog")); + + gtk_widget_set_sensitive (notify_button_opendialog, FALSE); + gtk_widget_set_sensitive (notify_button_remove, FALSE); + + notify_gui_update (); + + gtk_widget_show (notify_window); +} diff --git a/hexchat/src/fe-gtk/notifygui.h b/hexchat/src/fe-gtk/notifygui.h new file mode 100644 index 0000000..6517995 --- /dev/null +++ b/hexchat/src/fe-gtk/notifygui.h @@ -0,0 +1,26 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_NOTIFYGUI_H +#define HEXCHAT_NOTIFYGUI_H + +void notify_gui_update (void); +void notify_opengui (void); + +#endif diff --git a/hexchat/src/fe-gtk/palette.c b/hexchat/src/fe-gtk/palette.c new file mode 100644 index 0000000..1768975 --- /dev/null +++ b/hexchat/src/fe-gtk/palette.c @@ -0,0 +1,171 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> + +#ifdef WIN32 +#include <io.h> +#else +#include <unistd.h> +#endif + +#include "fe-gtk.h" +#include "palette.h" + +#include "../common/hexchat.h" +#include "../common/util.h" +#include "../common/cfgfiles.h" +#include "../common/typedef.h" + + +GdkColor colors[] = { + /* colors for xtext */ + {0, 0xd3d3, 0xd7d7, 0xcfcf}, /* 0 white */ + {0, 0x2e2e, 0x3434, 0x3636}, /* 1 black */ + {0, 0x3434, 0x6565, 0xa4a4}, /* 2 blue */ + {0, 0x4e4e, 0x9a9a, 0x0606}, /* 3 green */ + {0, 0xcccc, 0x0000, 0x0000}, /* 4 red */ + {0, 0x8f8f, 0x3939, 0x0202}, /* 5 light red */ + {0, 0x5c5c, 0x3535, 0x6666}, /* 6 purple */ + {0, 0xcece, 0x5c5c, 0x0000}, /* 7 orange */ + {0, 0xc4c4, 0xa0a0, 0x0000}, /* 8 yellow */ + {0, 0x7373, 0xd2d2, 0x1616}, /* 9 green */ + {0, 0x1111, 0xa8a8, 0x7979}, /* 10 aqua */ + {0, 0x5858, 0xa1a1, 0x9d9d}, /* 11 light aqua */ + {0, 0x5757, 0x7979, 0x9e9e}, /* 12 blue */ + {0, 0xa0d0, 0x42d4, 0x6562}, /* 13 light purple */ + {0, 0x5555, 0x5757, 0x5353}, /* 14 grey */ + {0, 0x8888, 0x8a8a, 0x8585}, /* 15 light grey */ + + {0, 0xd3d3, 0xd7d7, 0xcfcf}, /* 16 white */ + {0, 0x2e2e, 0x3434, 0x3636}, /* 17 black */ + {0, 0x3434, 0x6565, 0xa4a4}, /* 18 blue */ + {0, 0x4e4e, 0x9a9a, 0x0606}, /* 19 green */ + {0, 0xcccc, 0x0000, 0x0000}, /* 20 red */ + {0, 0x8f8f, 0x3939, 0x0202}, /* 21 light red */ + {0, 0x5c5c, 0x3535, 0x6666}, /* 22 purple */ + {0, 0xcece, 0x5c5c, 0x0000}, /* 23 orange */ + {0, 0xc4c4, 0xa0a0, 0x0000}, /* 24 yellow */ + {0, 0x7373, 0xd2d2, 0x1616}, /* 25 green */ + {0, 0x1111, 0xa8a8, 0x7979}, /* 26 aqua */ + {0, 0x5858, 0xa1a1, 0x9d9d}, /* 27 light aqua */ + {0, 0x5757, 0x7979, 0x9e9e}, /* 28 blue */ + {0, 0xa0d0, 0x42d4, 0x6562}, /* 29 light purple */ + {0, 0x5555, 0x5757, 0x5353}, /* 30 grey */ + {0, 0x8888, 0x8a8a, 0x8585}, /* 31 light grey */ + + {0, 0xd3d3, 0xd7d7, 0xcfcf}, /* 32 marktext Fore (white) */ + {0, 0x2020, 0x4a4a, 0x8787}, /* 33 marktext Back (blue) */ + {0, 0x2512, 0x29e8, 0x2b85}, /* 34 foreground (black) */ + {0, 0xfae0, 0xfae0, 0xf8c4}, /* 35 background (white) */ + {0, 0x8f8f, 0x3939, 0x0202}, /* 36 marker line (red) */ + + /* colors for GUI */ + {0, 0x3434, 0x6565, 0xa4a4}, /* 37 tab New Data (dark red) */ + {0, 0x4e4e, 0x9a9a, 0x0606}, /* 38 tab Nick Mentioned (blue) */ + {0, 0xcece, 0x5c5c, 0x0000}, /* 39 tab New Message (red) */ + {0, 0x8888, 0x8a8a, 0x8585}, /* 40 away user (grey) */ + {0, 0xa4a4, 0x0000, 0x0000}, /* 41 spell checker color (red) */ +}; + +void +palette_alloc (GtkWidget * widget) +{ + int i; + static int done_alloc = FALSE; + GdkColormap *cmap; + + if (!done_alloc) /* don't do it again */ + { + done_alloc = TRUE; + cmap = gtk_widget_get_colormap (widget); + for (i = MAX_COL; i >= 0; i--) + gdk_colormap_alloc_color (cmap, &colors[i], FALSE, TRUE); + } +} + +void +palette_load (void) +{ + int i, j, fh; + char prefname[256]; + struct stat st; + char *cfg; + guint16 red, green, blue; + + fh = hexchat_open_file ("colors.conf", O_RDONLY, 0, 0); + if (fh != -1) + { + fstat (fh, &st); + cfg = g_malloc0 (st.st_size + 1); + read (fh, cfg, st.st_size); + + /* mIRC colors 0-31 are here */ + for (i = 0; i < 32; i++) + { + g_snprintf (prefname, sizeof prefname, "color_%d", i); + cfg_get_color (cfg, prefname, &red, &green, &blue); + colors[i].red = red; + colors[i].green = green; + colors[i].blue = blue; + } + + /* our special colors are mapped at 256+ */ + for (i = 256, j = 32; j < MAX_COL+1; i++, j++) + { + g_snprintf (prefname, sizeof prefname, "color_%d", i); + cfg_get_color (cfg, prefname, &red, &green, &blue); + colors[j].red = red; + colors[j].green = green; + colors[j].blue = blue; + } + g_free (cfg); + close (fh); + } +} + +void +palette_save (void) +{ + int i, j, fh; + char prefname[256]; + + fh = hexchat_open_file ("colors.conf", O_TRUNC | O_WRONLY | O_CREAT, 0600, XOF_DOMODE); + if (fh != -1) + { + /* mIRC colors 0-31 are here */ + for (i = 0; i < 32; i++) + { + g_snprintf (prefname, sizeof prefname, "color_%d", i); + cfg_put_color (fh, colors[i].red, colors[i].green, colors[i].blue, prefname); + } + + /* our special colors are mapped at 256+ */ + for (i = 256, j = 32; j < MAX_COL+1; i++, j++) + { + g_snprintf (prefname, sizeof prefname, "color_%d", i); + cfg_put_color (fh, colors[j].red, colors[j].green, colors[j].blue, prefname); + } + + close (fh); + } +} diff --git a/hexchat/src/fe-gtk/palette.h b/hexchat/src/fe-gtk/palette.h new file mode 100644 index 0000000..569594a --- /dev/null +++ b/hexchat/src/fe-gtk/palette.h @@ -0,0 +1,41 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_PALETTE_H +#define HEXCHAT_PALETTE_H + +extern GdkColor colors[]; + +#define COL_MARK_FG 32 +#define COL_MARK_BG 33 +#define COL_FG 34 +#define COL_BG 35 +#define COL_MARKER 36 +#define COL_NEW_DATA 37 +#define COL_HILIGHT 38 +#define COL_NEW_MSG 39 +#define COL_AWAY 40 +#define COL_SPELL 41 +#define MAX_COL 41 + +void palette_alloc (GtkWidget * widget); +void palette_load (void); +void palette_save (void); + +#endif diff --git a/hexchat/src/fe-gtk/pixmaps.c b/hexchat/src/fe-gtk/pixmaps.c new file mode 100644 index 0000000..9bdf46f --- /dev/null +++ b/hexchat/src/fe-gtk/pixmaps.c @@ -0,0 +1,157 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> + +#include "fe-gtk.h" +#include "../common/cfgfiles.h" +#include "../common/hexchat.h" +#include "../common/fe.h" +#include "resources.h" + +#include <gio/gio.h> +#include <gdk-pixbuf/gdk-pixbuf.h> + +GdkPixbuf *pix_ulist_voice; +GdkPixbuf *pix_ulist_halfop; +GdkPixbuf *pix_ulist_op; +GdkPixbuf *pix_ulist_owner; +GdkPixbuf *pix_ulist_founder; +GdkPixbuf *pix_ulist_netop; + +GdkPixbuf *pix_tray_normal; +GdkPixbuf *pix_tray_fileoffer; +GdkPixbuf *pix_tray_highlight; +GdkPixbuf *pix_tray_message; + +GdkPixbuf *pix_tree_channel; +GdkPixbuf *pix_tree_dialog; +GdkPixbuf *pix_tree_server; +GdkPixbuf *pix_tree_util; + +GdkPixbuf *pix_book; +GdkPixbuf *pix_hexchat; + +static GdkPixmap * +pixmap_load_from_file_real (char *file) +{ + GdkPixbuf *img; + GdkPixmap *pixmap; + + img = gdk_pixbuf_new_from_file (file, 0); + if (!img) + return NULL; + gdk_pixbuf_render_pixmap_and_mask (img, &pixmap, NULL, 128); + g_object_unref (img); + + return pixmap; +} + +GdkPixmap * +pixmap_load_from_file (char *filename) +{ + char buf[256]; + GdkPixmap *pix; + + if (filename[0] == '\0') + return NULL; + + pix = pixmap_load_from_file_real (filename); + if (pix == NULL) + { + strcpy (buf, "Cannot open:\n\n"); + strncpy (buf + 14, filename, sizeof (buf) - 14); + buf[sizeof (buf) - 1] = 0; + fe_message (buf, FE_MSG_ERROR); + } + + return pix; +} + +/* load custom icons from <config>/icons, don't mess in system folders */ +static GdkPixbuf * +load_pixmap (const char *filename) +{ + GdkPixbuf *pixbuf, *scaledpixbuf; + const char *scale; + int iscale; + + gchar *path = g_strdup_printf ("%s" G_DIR_SEPARATOR_S "icons" G_DIR_SEPARATOR_S "%s.png", get_xdir (), filename); + pixbuf = gdk_pixbuf_new_from_file (path, 0); + g_free (path); + + if (!pixbuf) + { + path = g_strdup_printf ("/icons/%s.png", filename); + pixbuf = gdk_pixbuf_new_from_resource (path, NULL); + g_free (path); + } + + // Hack to avoid unbearably tiny icons on HiDPI screens. + scale = g_getenv ("GDK_SCALE"); + if (scale) + { + iscale = atoi (scale); + if (iscale > 0) + { + scaledpixbuf = gdk_pixbuf_scale_simple (pixbuf, gdk_pixbuf_get_width (pixbuf) * iscale, + gdk_pixbuf_get_height (pixbuf) * iscale, GDK_INTERP_BILINEAR); + + if (scaledpixbuf) + { + g_object_unref (pixbuf); + pixbuf = scaledpixbuf; + } + } + } + + g_warn_if_fail (pixbuf != NULL); + + return pixbuf; +} + +void +pixmaps_init (void) +{ + hexchat_register_resource(); + + pix_ulist_voice = load_pixmap ("ulist_voice"); + pix_ulist_halfop = load_pixmap ("ulist_halfop"); + pix_ulist_op = load_pixmap ("ulist_op"); + pix_ulist_owner = load_pixmap ("ulist_owner"); + pix_ulist_founder = load_pixmap ("ulist_founder"); + pix_ulist_netop = load_pixmap ("ulist_netop"); + + pix_tray_normal = load_pixmap ("tray_normal"); + pix_tray_fileoffer = load_pixmap ("tray_fileoffer"); + pix_tray_highlight = load_pixmap ("tray_highlight"); + pix_tray_message = load_pixmap ("tray_message"); + + pix_tree_channel = load_pixmap ("tree_channel"); + pix_tree_dialog = load_pixmap ("tree_dialog"); + pix_tree_server = load_pixmap ("tree_server"); + pix_tree_util = load_pixmap ("tree_util"); + + /* non-replaceable book pixmap */ + pix_book = gdk_pixbuf_new_from_resource ("/icons/book.png", NULL); + + /* used in About window, tray icon and WindowManager icon. */ + pix_hexchat = load_pixmap ("hexchat"); +} diff --git a/hexchat/src/fe-gtk/pixmaps.h b/hexchat/src/fe-gtk/pixmaps.h new file mode 100644 index 0000000..7f3c561 --- /dev/null +++ b/hexchat/src/fe-gtk/pixmaps.h @@ -0,0 +1,46 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_PIXMAPS_H +#define HEXCHAT_PIXMAPS_H + +extern GdkPixbuf *pix_ulist_voice; +extern GdkPixbuf *pix_ulist_halfop; +extern GdkPixbuf *pix_ulist_op; +extern GdkPixbuf *pix_ulist_owner; +extern GdkPixbuf *pix_ulist_founder; +extern GdkPixbuf *pix_ulist_netop; + +extern GdkPixbuf *pix_tray_normal; +extern GdkPixbuf *pix_tray_fileoffer; +extern GdkPixbuf *pix_tray_highlight; +extern GdkPixbuf *pix_tray_message; + +extern GdkPixbuf *pix_tree_channel; +extern GdkPixbuf *pix_tree_dialog; +extern GdkPixbuf *pix_tree_server; +extern GdkPixbuf *pix_tree_util; + +extern GdkPixbuf *pix_book; +extern GdkPixbuf *pix_hexchat; + +extern GdkPixmap *pixmap_load_from_file (char *file); +extern void pixmaps_init (void); + +#endif diff --git a/hexchat/src/fe-gtk/plugin-notification.c b/hexchat/src/fe-gtk/plugin-notification.c new file mode 100644 index 0000000..fc71d22 --- /dev/null +++ b/hexchat/src/fe-gtk/plugin-notification.c @@ -0,0 +1,253 @@ +/* HexChat + * Copyright (C) 2015 Patrick Griffis. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "config.h" +#include <glib.h> + +#include "../common/hexchat-plugin.h" +#include "../common/inbound.h" /* For alert_match_word() */ +#include "notifications/notification-backend.h" + +static hexchat_plugin *ph; + +const int CHANNEL_FLAG_BALLOON = 1 << 21; +const int CHANNEL_FLAG_BALLOON_UNSET = 1 << 22; + +static gboolean +should_alert (void) +{ + int omit_away, omit_focused, omit_tray; + + if (hexchat_get_prefs (ph, "gui_focus_omitalerts", NULL, &omit_focused) == 3 && omit_focused) + { + const char *status = hexchat_get_info (ph, "win_status"); + + if (status && !g_strcmp0 (status, "active")) + return FALSE; + } + + if (hexchat_get_prefs (ph, "away_omit_alerts", NULL, &omit_away) == 3 && omit_away) + { + if (hexchat_get_info (ph, "away")) + return FALSE; + } + + if (hexchat_get_prefs (ph, "gui_tray_quiet", NULL, &omit_tray) == 3 && omit_tray) + { + int tray_enabled; + + if (hexchat_get_prefs (ph, "gui_tray", NULL, &tray_enabled) == 3 && tray_enabled) + { + const char *status = hexchat_get_info (ph, "win_status"); + + if (status && g_strcmp0 (status, "hidden") != 0) + return FALSE; + } + } + + return TRUE; +} + +static gboolean +is_ignored (char *nick) +{ + const char *no_hilight; + + if (hexchat_get_prefs (ph, "irc_no_hilight", &no_hilight, NULL) == 1 && no_hilight) + { + return alert_match_word (nick, (char*)no_hilight); + } + return FALSE; +} + +static void +show_notification (const char *title, const char *text) +{ + char *stripped_title, *stripped_text; + + /* Strip all colors */ + stripped_title = hexchat_strip (ph, title, -1, 7); + stripped_text = hexchat_strip (ph, text, -1, 7); + + notification_backend_show (stripped_title, stripped_text); + + hexchat_free (ph, stripped_title); + hexchat_free (ph, stripped_text); +} + +static void +show_notificationf (const char *text, const char *format, ...) +{ + va_list args; + char *buf; + + va_start (args, format); + buf = g_strdup_vprintf (format, args); + va_end (args); + + show_notification (buf, text); + g_free (buf); +} + +static int +incoming_hilight_cb (char *word[], gpointer userdata) +{ + int hilight; + + if (hexchat_get_prefs (ph, "input_balloon_hilight", NULL, &hilight) == 3 && hilight && should_alert()) + { + show_notificationf (word[2], _("Highlighted message from: %s (%s)"), word[1], hexchat_get_info (ph, "channel")); + } + return HEXCHAT_EAT_NONE; +} + +static int +incoming_message_cb (char *word[], gpointer userdata) +{ + int message; + int flags; + int alert = 0; + + flags = hexchat_list_int(ph, NULL, "flags"); + + /* Let sure that can alert */ + if (should_alert()) { + /* Follow the channel rules if set */ + if (!(flags & CHANNEL_FLAG_BALLOON_UNSET)) { + alert = (flags & CHANNEL_FLAG_BALLOON); + } else { + /* Else follow global environment */ + alert = (hexchat_get_prefs(ph, "input_balloon_chans", NULL, &message) == 3 && message); + } + } + + if (alert) { + show_notificationf(word[2], _("Channel message from: %s (%s)"), word[1], hexchat_get_info(ph, "channel")); + } + return HEXCHAT_EAT_NONE; +} + +static int +incoming_priv_cb (char *word[], gpointer userdata) +{ + int priv; + int flags; + int alert = 0; + + flags = hexchat_list_int(ph, NULL, "flags"); + + /* Let sure that can alert */ + if (should_alert()) { + /* Follow the private rules if set */ + if (!(flags & CHANNEL_FLAG_BALLOON_UNSET)) { + alert = (flags & CHANNEL_FLAG_BALLOON); + } else { + /* Else follow global environment */ + alert = (hexchat_get_prefs(ph, "input_balloon_priv", NULL, &priv) == 3 && priv); + } + } + + if (alert) + { + const char *network = hexchat_get_info (ph, "network"); + if (!network) + network = hexchat_get_info (ph, "server"); + + if (userdata != NULL) /* Special event */ + { + if (GPOINTER_TO_INT (userdata) == 3) + { + if (!is_ignored (word[2])) + show_notificationf (word[1], _("File offer from: %s (%s)"), word[2], network); + } + else if (GPOINTER_TO_INT (userdata) == 2) + { + if (!is_ignored (word[2])) + show_notificationf (word[1], _("Invited to channel by: %s (%s)"), word[2], network); + } + else + { + if (!is_ignored (word[1])) + show_notificationf (word[2], _("Notice from: %s (%s)"), word[1], network); + } + } + else + show_notificationf (word[2], _("Private message from: %s (%s)"), word[1], network); + } + return HEXCHAT_EAT_NONE; +} + +static int +tray_cmd_cb (char *word[], char *word_eol[], gpointer userdata) +{ + if (word[2] && !g_ascii_strcasecmp (word[2], "-b") && word[3] && word[4]) + { + if (should_alert ()) + show_notification (word[3], word_eol[4]); + return HEXCHAT_EAT_ALL; + } + + return HEXCHAT_EAT_NONE; +} + +int +notification_plugin_init (hexchat_plugin *plugin_handle, char **plugin_name, char **plugin_desc, char **plugin_version, char *arg) +{ + const char* error = NULL; + + ph = plugin_handle; + *plugin_name = ""; + *plugin_desc = ""; + *plugin_version = ""; + + if (!notification_backend_init (&error)) + { + if (error) + g_debug("Failed loading notification plugin: %s\n", error); + return 0; + } + + hexchat_hook_print (ph, "Channel Msg Hilight", HEXCHAT_PRI_LOWEST, incoming_hilight_cb, NULL); + hexchat_hook_print (ph, "Channel Action Hilight", HEXCHAT_PRI_LOWEST, incoming_hilight_cb, NULL); + + hexchat_hook_print (ph, "Channel Message", HEXCHAT_PRI_LOWEST, incoming_message_cb, NULL); + hexchat_hook_print (ph, "Channel Action", HEXCHAT_PRI_LOWEST, incoming_message_cb, NULL); + hexchat_hook_print (ph, "Channel Notice", HEXCHAT_PRI_LOWEST, incoming_message_cb, NULL); + + hexchat_hook_print (ph, "Private Message", HEXCHAT_PRI_LOWEST, incoming_priv_cb, NULL); + hexchat_hook_print (ph, "Private Message to Dialog", HEXCHAT_PRI_LOWEST, incoming_priv_cb, NULL); + hexchat_hook_print (ph, "Private Action", HEXCHAT_PRI_LOWEST, incoming_priv_cb, NULL); + hexchat_hook_print (ph, "Private Action to Dialog", HEXCHAT_PRI_LOWEST, incoming_priv_cb, NULL); + + /* Special events treated as priv */ + hexchat_hook_print (ph, "Notice", HEXCHAT_PRI_LOWEST, incoming_priv_cb, GINT_TO_POINTER (1)); + hexchat_hook_print (ph, "Invited", HEXCHAT_PRI_LOWEST, incoming_priv_cb, GINT_TO_POINTER (2)); + hexchat_hook_print (ph, "DCC Offer", HEXCHAT_PRI_LOWEST, incoming_priv_cb, GINT_TO_POINTER (3)); + + hexchat_hook_command (ph, "TRAY", HEXCHAT_PRI_HIGH, tray_cmd_cb, NULL, NULL); + + return 1; +} + + +int +notification_plugin_deinit (void *unused_param) +{ + notification_backend_deinit (); + return 1; +} diff --git a/hexchat/src/fe-gtk/plugin-notification.h b/hexchat/src/fe-gtk/plugin-notification.h new file mode 100644 index 0000000..07ad160 --- /dev/null +++ b/hexchat/src/fe-gtk/plugin-notification.h @@ -0,0 +1,25 @@ +/* HexChat + * Copyright (C) 2015 Patrick Griffis. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_PLUGIN_NOTIFICATION_H +#define HEXCHAT_PLUGIN_NOTIFICATION_H + +int notification_plugin_init (void *, char **, char **, char **, char *); +int notification_plugin_deinit (void *); + +#endif diff --git a/hexchat/src/fe-gtk/plugin-tray.c b/hexchat/src/fe-gtk/plugin-tray.c new file mode 100644 index 0000000..77b7e2d --- /dev/null +++ b/hexchat/src/fe-gtk/plugin-tray.c @@ -0,0 +1,816 @@ +/* X-Chat + * Copyright (C) 2006-2007 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <string.h> +#include "../common/hexchat-plugin.h" +#include "../common/hexchat.h" +#include "../common/hexchatc.h" +#include "../common/inbound.h" +#include "../common/server.h" +#include "../common/fe.h" +#include "../common/util.h" +#include "../common/outbound.h" +#include "fe-gtk.h" +#include "pixmaps.h" +#include "maingui.h" +#include "menu.h" +#include "gtkutil.h" + +#ifndef WIN32 +#include <unistd.h> +#endif + +typedef enum /* current icon status */ +{ + TS_NONE, + TS_MESSAGE, + TS_HIGHLIGHT, + TS_FILEOFFER, + TS_CUSTOM /* plugin */ +} TrayStatus; + +typedef enum +{ + WS_FOCUSED, + WS_NORMAL, + WS_HIDDEN +} WinStatus; + +typedef GdkPixbuf* TrayIcon; +#define tray_icon_from_file(f) gdk_pixbuf_new_from_file(f,NULL) +#define tray_icon_free(i) g_object_unref(i) + +#define ICON_NORMAL pix_tray_normal +#define ICON_MSG pix_tray_message +#define ICON_HILIGHT pix_tray_highlight +#define ICON_FILE pix_tray_fileoffer +#define TIMEOUT 500 + +static GtkStatusIcon *sticon; +static gint flash_tag; +static TrayStatus tray_status; +#ifdef WIN32 +static guint tray_menu_timer; +static gint64 tray_menu_inactivetime; +#endif +static hexchat_plugin *ph; + +static TrayIcon custom_icon1; +static TrayIcon custom_icon2; + +static int tray_priv_count = 0; +static int tray_pub_count = 0; +static int tray_hilight_count = 0; +static int tray_file_count = 0; +static int tray_restore_timer = 0; + + +void tray_apply_setup (void); +static gboolean tray_menu_try_restore (void); +static void tray_cleanup (void); +static void tray_init (void); + + +static WinStatus +tray_get_window_status (void) +{ + const char *st; + + st = hexchat_get_info (ph, "win_status"); + + if (!st) + return WS_HIDDEN; + + if (!strcmp (st, "active")) + return WS_FOCUSED; + + if (!strcmp (st, "hidden")) + return WS_HIDDEN; + + return WS_NORMAL; +} + +static int +tray_count_channels (void) +{ + int cons = 0; + GSList *list; + session *sess; + + for (list = sess_list; list; list = list->next) + { + sess = list->data; + if (sess->server->connected && sess->channel[0] && + sess->type == SESS_CHANNEL) + cons++; + } + return cons; +} + +static int +tray_count_networks (void) +{ + int cons = 0; + GSList *list; + + for (list = serv_list; list; list = list->next) + { + if (((server *)list->data)->connected) + cons++; + } + return cons; +} + +void +fe_tray_set_tooltip (const char *text) +{ + if (sticon) + gtk_status_icon_set_tooltip_text (sticon, text); +} + +static void +tray_set_tipf (const char *format, ...) +{ + va_list args; + char *buf; + + va_start (args, format); + buf = g_strdup_vprintf (format, args); + va_end (args); + + fe_tray_set_tooltip (buf); + g_free (buf); +} + +static void +tray_stop_flash (void) +{ + int nets, chans; + + if (flash_tag) + { + g_source_remove (flash_tag); + flash_tag = 0; + } + + if (sticon) + { + gtk_status_icon_set_from_pixbuf (sticon, ICON_NORMAL); + nets = tray_count_networks (); + chans = tray_count_channels (); + if (nets) + tray_set_tipf (_("Connected to %u networks and %u channels - %s"), + nets, chans, _(DISPLAY_NAME)); + else + tray_set_tipf ("%s - %s", _("Not connected."), _(DISPLAY_NAME)); + } + + if (custom_icon1) + { + tray_icon_free (custom_icon1); + custom_icon1 = NULL; + } + + if (custom_icon2) + { + tray_icon_free (custom_icon2); + custom_icon2 = NULL; + } + + tray_status = TS_NONE; +} + +static void +tray_reset_counts (void) +{ + tray_priv_count = 0; + tray_pub_count = 0; + tray_hilight_count = 0; + tray_file_count = 0; +} + +static int +tray_timeout_cb (TrayIcon icon) +{ + if (custom_icon1) + { + if (gtk_status_icon_get_pixbuf (sticon) == custom_icon1) + { + if (custom_icon2) + gtk_status_icon_set_from_pixbuf (sticon, custom_icon2); + else + gtk_status_icon_set_from_pixbuf (sticon, ICON_NORMAL); + } + else + { + gtk_status_icon_set_from_pixbuf (sticon, custom_icon1); + } + } + else + { + if (gtk_status_icon_get_pixbuf (sticon) == ICON_NORMAL) + gtk_status_icon_set_from_pixbuf (sticon, icon); + else + gtk_status_icon_set_from_pixbuf (sticon, ICON_NORMAL); + } + return 1; +} + +static void +tray_set_flash (TrayIcon icon) +{ + if (!sticon) + return; + + /* already flashing the same icon */ + if (flash_tag && gtk_status_icon_get_pixbuf (sticon) == icon) + return; + + /* no flashing if window is focused */ + if (tray_get_window_status () == WS_FOCUSED) + return; + + tray_stop_flash (); + + gtk_status_icon_set_from_pixbuf (sticon, icon); + if (prefs.hex_gui_tray_blink) + flash_tag = g_timeout_add (TIMEOUT, (GSourceFunc) tray_timeout_cb, icon); +} + +void +fe_tray_set_flash (const char *filename1, const char *filename2, int tout) +{ + tray_apply_setup (); + if (!sticon) + return; + + tray_stop_flash (); + + if (tout == -1) + tout = TIMEOUT; + + custom_icon1 = tray_icon_from_file (filename1); + if (filename2) + custom_icon2 = tray_icon_from_file (filename2); + + gtk_status_icon_set_from_pixbuf (sticon, custom_icon1); + flash_tag = g_timeout_add (tout, (GSourceFunc) tray_timeout_cb, NULL); + tray_status = TS_CUSTOM; +} + +void +fe_tray_set_icon (feicon icon) +{ + tray_apply_setup (); + if (!sticon) + return; + + tray_stop_flash (); + + switch (icon) + { + case FE_ICON_NORMAL: + break; + case FE_ICON_MESSAGE: + case FE_ICON_PRIVMSG: + tray_set_flash (ICON_MSG); + break; + case FE_ICON_HIGHLIGHT: + tray_set_flash (ICON_HILIGHT); + break; + case FE_ICON_FILEOFFER: + tray_set_flash (ICON_FILE); + } +} + +void +fe_tray_set_file (const char *filename) +{ + tray_apply_setup (); + if (!sticon) + return; + + tray_stop_flash (); + + if (filename) + { + custom_icon1 = tray_icon_from_file (filename); + gtk_status_icon_set_from_pixbuf (sticon, custom_icon1); + tray_status = TS_CUSTOM; + } +} + +gboolean +tray_toggle_visibility (gboolean force_hide) +{ + static int x, y; + static GdkScreen *screen; + static int maximized; + static int fullscreen; + GtkWindow *win; + + if (!sticon) + return FALSE; + + /* ph may have an invalid context now */ + hexchat_set_context (ph, hexchat_find_context (ph, NULL, NULL)); + + win = GTK_WINDOW (hexchat_get_info (ph, "gtkwin_ptr")); + + tray_stop_flash (); + tray_reset_counts (); + + if (!win) + return FALSE; + + if (force_hide || gtk_widget_get_visible (GTK_WIDGET (win))) + { + if (prefs.hex_gui_tray_away) + hexchat_command (ph, "ALLSERV AWAY"); + gtk_window_get_position (win, &x, &y); + screen = gtk_window_get_screen (win); + maximized = prefs.hex_gui_win_state; + fullscreen = prefs.hex_gui_win_fullscreen; + gtk_widget_hide (GTK_WIDGET (win)); + } + else + { + if (prefs.hex_gui_tray_away) + hexchat_command (ph, "ALLSERV BACK"); + gtk_window_set_screen (win, screen); + gtk_window_move (win, x, y); + if (maximized) + gtk_window_maximize (win); + if (fullscreen) + gtk_window_fullscreen (win); + gtk_widget_show (GTK_WIDGET (win)); + gtk_window_deiconify (win); + gtk_window_present (win); + } + + return TRUE; +} + +static void +tray_menu_restore_cb (GtkWidget *item, gpointer userdata) +{ + tray_toggle_visibility (FALSE); +} + +static void +tray_menu_notify_cb (GObject *tray, GParamSpec *pspec, gpointer user_data) +{ + if (sticon) + { + if (!gtk_status_icon_is_embedded (sticon)) + { + tray_restore_timer = g_timeout_add(500, (GSourceFunc)tray_menu_try_restore, NULL); + } + else + { + if (tray_restore_timer) + { + g_source_remove (tray_restore_timer); + tray_restore_timer = 0; + } + } + } +} + +static gboolean +tray_menu_try_restore (void) +{ + tray_cleanup(); + tray_init(); + return TRUE; +} + +static void +tray_menu_quit_cb (GtkWidget *item, gpointer userdata) +{ + mg_open_quit_dialog (FALSE); +} + +/* returns 0-mixed 1-away 2-back */ + +static int +tray_find_away_status (void) +{ + GSList *list; + server *serv; + int away = 0; + int back = 0; + + for (list = serv_list; list; list = list->next) + { + serv = list->data; + + if (serv->is_away || serv->reconnect_away) + away++; + else + back++; + } + + if (away && back) + return 0; + + if (away) + return 1; + + return 2; +} + +static void +tray_foreach_server (GtkWidget *item, char *cmd) +{ + GSList *list; + server *serv; + + for (list = serv_list; list; list = list->next) + { + serv = list->data; + if (serv->connected) + handle_command (serv->server_session, cmd, FALSE); + } +} + +static GtkWidget * +tray_make_item (GtkWidget *menu, char *label, void *callback, void *userdata) +{ + GtkWidget *item; + + if (label) + item = gtk_menu_item_new_with_mnemonic (label); + else + item = gtk_menu_item_new (); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (callback), userdata); + gtk_widget_show (item); + + return item; +} + +#ifndef WIN32 +static void +tray_toggle_cb (GtkCheckMenuItem *item, unsigned int *setting) +{ + *setting = gtk_check_menu_item_get_active (item); +} + +static void +blink_item (unsigned int *setting, GtkWidget *menu, char *label) +{ + menu_toggle_item (label, menu, tray_toggle_cb, setting, *setting); +} +#endif + +static void +tray_menu_destroy (GtkWidget *menu, gpointer userdata) +{ + gtk_widget_destroy (menu); + g_object_unref (menu); +#ifdef WIN32 + g_source_remove (tray_menu_timer); +#endif +} + +#ifdef WIN32 +static gboolean +tray_menu_enter_cb (GtkWidget *menu) +{ + tray_menu_inactivetime = 0; + return FALSE; +} + +static gboolean +tray_menu_left_cb (GtkWidget *menu) +{ + tray_menu_inactivetime = g_get_real_time (); + return FALSE; +} + +static gboolean +tray_check_hide (GtkWidget *menu) +{ + if (tray_menu_inactivetime && g_get_real_time () - tray_menu_inactivetime >= 2000000) + { + tray_menu_destroy (menu, NULL); + return G_SOURCE_REMOVE; + } + + return G_SOURCE_CONTINUE; +} +#endif + +static void +tray_menu_settings (GtkWidget * wid, gpointer none) +{ + extern void setup_open (void); + setup_open (); +} + +static void +tray_menu_cb (GtkWidget *widget, guint button, guint time, gpointer userdata) +{ + static GtkWidget *menu; + GtkWidget *submenu; + GtkWidget *item; + int away_status; + + /* ph may have an invalid context now */ + hexchat_set_context (ph, hexchat_find_context (ph, NULL, NULL)); + + /* close any old menu */ + if (G_IS_OBJECT (menu)) + { + tray_menu_destroy (menu, NULL); + } + + menu = gtk_menu_new (); + /*gtk_menu_set_screen (GTK_MENU (menu), gtk_widget_get_screen (widget));*/ + + if (tray_get_window_status () == WS_HIDDEN) + tray_make_item (menu, _("_Restore Window"), tray_menu_restore_cb, NULL); + else + tray_make_item (menu, _("_Hide Window"), tray_menu_restore_cb, NULL); + tray_make_item (menu, NULL, tray_menu_quit_cb, NULL); + +#ifndef WIN32 /* submenus are buggy on win32 */ + submenu = mg_submenu (menu, _("_Blink on")); + blink_item (&prefs.hex_input_tray_chans, submenu, _("Channel Message")); + blink_item (&prefs.hex_input_tray_priv, submenu, _("Private Message")); + blink_item (&prefs.hex_input_tray_hilight, submenu, _("Highlighted Message")); + /*blink_item (BIT_FILEOFFER, submenu, _("File Offer"));*/ + + submenu = mg_submenu (menu, _("_Change status")); +#else /* so show away/back in main tray menu */ + submenu = menu; +#endif + + away_status = tray_find_away_status (); + item = tray_make_item (submenu, _("_Away"), tray_foreach_server, "away"); + if (away_status == 1) + gtk_widget_set_sensitive (item, FALSE); + item = tray_make_item (submenu, _("_Back"), tray_foreach_server, "back"); + if (away_status == 2) + gtk_widget_set_sensitive (item, FALSE); + + menu_add_plugin_items (menu, "\x5$TRAY", NULL); + + tray_make_item (menu, NULL, tray_menu_quit_cb, NULL); + mg_create_icon_item (_("_Preferences"), GTK_STOCK_PREFERENCES, menu, tray_menu_settings, NULL); + tray_make_item (menu, NULL, tray_menu_quit_cb, NULL); + mg_create_icon_item (_("_Quit"), GTK_STOCK_QUIT, menu, tray_menu_quit_cb, NULL); + + g_object_ref (menu); + g_object_ref_sink (menu); + g_object_unref (menu); + g_signal_connect (G_OBJECT (menu), "selection-done", + G_CALLBACK (tray_menu_destroy), NULL); +#ifdef WIN32 + g_signal_connect (G_OBJECT (menu), "leave-notify-event", + G_CALLBACK (tray_menu_left_cb), NULL); + g_signal_connect (G_OBJECT (menu), "enter-notify-event", + G_CALLBACK (tray_menu_enter_cb), NULL); + + tray_menu_timer = g_timeout_add (500, (GSourceFunc)tray_check_hide, menu); +#endif + + gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, + userdata, button, time); +} + +static void +tray_init (void) +{ + flash_tag = 0; + tray_status = TS_NONE; + custom_icon1 = NULL; + custom_icon2 = NULL; + + sticon = gtk_status_icon_new_from_pixbuf (ICON_NORMAL); + if (!sticon) + return; + + g_signal_connect (G_OBJECT (sticon), "popup-menu", + G_CALLBACK (tray_menu_cb), sticon); + + g_signal_connect (G_OBJECT (sticon), "activate", + G_CALLBACK (tray_menu_restore_cb), NULL); + + g_signal_connect (G_OBJECT (sticon), "notify::embedded", + G_CALLBACK (tray_menu_notify_cb), NULL); +} + +static int +tray_hilight_cb (char *word[], void *userdata) +{ + /*if (tray_status == TS_HIGHLIGHT) + return HEXCHAT_EAT_NONE;*/ + + if (prefs.hex_input_tray_hilight) + { + tray_set_flash (ICON_HILIGHT); + + /* FIXME: hides any previous private messages */ + tray_hilight_count++; + if (tray_hilight_count == 1) + tray_set_tipf (_("Highlighted message from: %s (%s) - %s"), + word[1], hexchat_get_info (ph, "channel"), _(DISPLAY_NAME)); + else + tray_set_tipf (_("%u highlighted messages, latest from: %s (%s) - %s"), + tray_hilight_count, word[1], hexchat_get_info (ph, "channel"), + _(DISPLAY_NAME)); + } + + return HEXCHAT_EAT_NONE; +} + +static int +tray_message_cb (char *word[], void *userdata) +{ + if (/*tray_status == TS_MESSAGE ||*/ tray_status == TS_HIGHLIGHT) + return HEXCHAT_EAT_NONE; + + if (prefs.hex_input_tray_chans) + { + tray_set_flash (ICON_MSG); + + tray_pub_count++; + if (tray_pub_count == 1) + tray_set_tipf (_("Channel message from: %s (%s) - %s"), + word[1], hexchat_get_info (ph, "channel"), _(DISPLAY_NAME)); + else + tray_set_tipf (_("%u channel messages. - %s"), tray_pub_count, _(DISPLAY_NAME)); + } + + return HEXCHAT_EAT_NONE; +} + +static void +tray_priv (char *from, char *text) +{ + const char *network; + + if (alert_match_word (from, prefs.hex_irc_no_hilight)) + return; + + network = hexchat_get_info (ph, "network"); + if (!network) + network = hexchat_get_info (ph, "server"); + + if (prefs.hex_input_tray_priv) + { + tray_set_flash (ICON_MSG); + + tray_priv_count++; + if (tray_priv_count == 1) + tray_set_tipf (_("Private message from: %s (%s) - %s"), from, + network, _(DISPLAY_NAME)); + else + tray_set_tipf (_("%u private messages, latest from: %s (%s) - %s"), + tray_priv_count, from, network, _(DISPLAY_NAME)); + } +} + +static int +tray_priv_cb (char *word[], void *userdata) +{ + tray_priv (word[1], word[2]); + + return HEXCHAT_EAT_NONE; +} + +static int +tray_invited_cb (char *word[], void *userdata) +{ + if (!prefs.hex_away_omit_alerts || tray_find_away_status () != 1) + tray_priv (word[2], "Invited"); + + return HEXCHAT_EAT_NONE; +} + +static int +tray_dcc_cb (char *word[], void *userdata) +{ + const char *network; + +/* if (tray_status == TS_FILEOFFER) + return HEXCHAT_EAT_NONE;*/ + + network = hexchat_get_info (ph, "network"); + if (!network) + network = hexchat_get_info (ph, "server"); + + if (prefs.hex_input_tray_priv && (!prefs.hex_away_omit_alerts || tray_find_away_status () != 1)) + { + tray_set_flash (ICON_FILE); + + tray_file_count++; + if (tray_file_count == 1) + tray_set_tipf (_("File offer from: %s (%s) - %s"), word[1], network, + _(DISPLAY_NAME)); + else + tray_set_tipf (_("%u file offers, latest from: %s (%s) - %s"), + tray_file_count, word[1], network, _(DISPLAY_NAME)); + } + + return HEXCHAT_EAT_NONE; +} + +static int +tray_focus_cb (char *word[], void *userdata) +{ + tray_stop_flash (); + tray_reset_counts (); + return HEXCHAT_EAT_NONE; +} + +static void +tray_cleanup (void) +{ + tray_stop_flash (); + + if (sticon) + { + g_object_unref ((GObject *)sticon); + sticon = NULL; + } +} + +void +tray_apply_setup (void) +{ + if (sticon) + { + if (!prefs.hex_gui_tray) + tray_cleanup (); + } + else + { + GtkWindow *window = GTK_WINDOW(hexchat_get_info (ph, "gtkwin_ptr")); + if (prefs.hex_gui_tray && gtkutil_tray_icon_supported (window)) + tray_init (); + } +} + +int +tray_plugin_init (hexchat_plugin *plugin_handle, char **plugin_name, + char **plugin_desc, char **plugin_version, char *arg) +{ + /* we need to save this for use with any hexchat_* functions */ + ph = plugin_handle; + + *plugin_name = ""; + *plugin_desc = ""; + *plugin_version = ""; + + hexchat_hook_print (ph, "Channel Msg Hilight", -1, tray_hilight_cb, NULL); + hexchat_hook_print (ph, "Channel Action Hilight", -1, tray_hilight_cb, NULL); + + hexchat_hook_print (ph, "Channel Message", -1, tray_message_cb, NULL); + hexchat_hook_print (ph, "Channel Action", -1, tray_message_cb, NULL); + hexchat_hook_print (ph, "Channel Notice", -1, tray_message_cb, NULL); + + hexchat_hook_print (ph, "Private Message", -1, tray_priv_cb, NULL); + hexchat_hook_print (ph, "Private Message to Dialog", -1, tray_priv_cb, NULL); + hexchat_hook_print (ph, "Private Action", -1, tray_priv_cb, NULL); + hexchat_hook_print (ph, "Private Action to Dialog", -1, tray_priv_cb, NULL); + hexchat_hook_print (ph, "Notice", -1, tray_priv_cb, NULL); + hexchat_hook_print (ph, "Invited", -1, tray_invited_cb, NULL); + + hexchat_hook_print (ph, "DCC Offer", -1, tray_dcc_cb, NULL); + + hexchat_hook_print (ph, "Focus Window", -1, tray_focus_cb, NULL); + + GtkWindow *window = GTK_WINDOW(hexchat_get_info (ph, "gtkwin_ptr")); + if (prefs.hex_gui_tray && gtkutil_tray_icon_supported (window)) + tray_init (); + + return 1; /* return 1 for success */ +} + +int +tray_plugin_deinit (hexchat_plugin *plugin_handle) +{ +#ifdef WIN32 + tray_cleanup (); +#endif + return 1; +} diff --git a/hexchat/src/fe-gtk/plugin-tray.h b/hexchat/src/fe-gtk/plugin-tray.h new file mode 100644 index 0000000..cb77019 --- /dev/null +++ b/hexchat/src/fe-gtk/plugin-tray.h @@ -0,0 +1,28 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_PLUGIN_TRAY_H +#define HEXCHAT_PLUGIN_TRAY_H + +int tray_plugin_init (void *, char **, char **, char **, char *); +int tray_plugin_deinit (void *); +gboolean tray_toggle_visibility (gboolean force_hide); +void tray_apply_setup (void); + +#endif diff --git a/hexchat/src/fe-gtk/plugingui.c b/hexchat/src/fe-gtk/plugingui.c new file mode 100644 index 0000000..c40ac30 --- /dev/null +++ b/hexchat/src/fe-gtk/plugingui.c @@ -0,0 +1,267 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <string.h> +#include <stdio.h> +#include <stdlib.h> + +#include "fe-gtk.h" + +#include "../common/hexchat.h" +#define PLUGIN_C +typedef struct session hexchat_context; +#include "../common/hexchat-plugin.h" +#include "../common/plugin.h" +#include "../common/util.h" +#include "../common/outbound.h" +#include "../common/fe.h" +#include "../common/hexchatc.h" +#include "../common/cfgfiles.h" +#include "gtkutil.h" +#include "maingui.h" + +/* model for the plugin treeview */ +enum +{ + NAME_COLUMN, + VERSION_COLUMN, + FILE_COLUMN, + DESC_COLUMN, + FILEPATH_COLUMN, + N_COLUMNS +}; + +static GtkWidget *plugin_window = NULL; + + +static GtkWidget * +plugingui_treeview_new (GtkWidget *box) +{ + GtkListStore *store; + GtkWidget *view; + GtkTreeViewColumn *col; + int col_id; + + store = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); + g_return_val_if_fail (store != NULL, NULL); + view = gtkutil_treeview_new (box, GTK_TREE_MODEL (store), NULL, + NAME_COLUMN, _("Name"), + VERSION_COLUMN, _("Version"), + FILE_COLUMN, _("File"), + DESC_COLUMN, _("Description"), + FILEPATH_COLUMN, NULL, -1); + gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (view), TRUE); + for (col_id=0; (col = gtk_tree_view_get_column (GTK_TREE_VIEW (view), col_id)); + col_id++) + gtk_tree_view_column_set_alignment (col, 0.5); + + return view; +} + +static char * +plugingui_getfilename (GtkTreeView *view) +{ + GtkTreeModel *model; + GtkTreeSelection *sel; + GtkTreeIter iter; + GValue file; + char *str; + + memset (&file, 0, sizeof (file)); + + sel = gtk_tree_view_get_selection (view); + if (gtk_tree_selection_get_selected (sel, &model, &iter)) + { + gtk_tree_model_get_value (model, &iter, FILEPATH_COLUMN, &file); + + str = g_value_dup_string (&file); + g_value_unset (&file); + + return str; + } + + return NULL; +} + +static void +plugingui_close (GtkWidget * wid, gpointer a) +{ + plugin_window = NULL; +} + +extern GSList *plugin_list; + +void +fe_pluginlist_update (void) +{ + hexchat_plugin *pl; + GSList *list; + GtkTreeView *view; + GtkListStore *store; + GtkTreeIter iter; + + if (!plugin_window) + return; + + view = g_object_get_data (G_OBJECT (plugin_window), "view"); + store = GTK_LIST_STORE (gtk_tree_view_get_model (view)); + gtk_list_store_clear (store); + + list = plugin_list; + while (list) + { + pl = list->data; + if (pl->version[0] != 0) + { + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, NAME_COLUMN, pl->name, + VERSION_COLUMN, pl->version, + FILE_COLUMN, file_part (pl->filename), + DESC_COLUMN, pl->desc, + FILEPATH_COLUMN, pl->filename, -1); + } + list = list->next; + } +} + +static void +plugingui_load_cb (session *sess, char *file) +{ + if (file) + { + char *buf; + + if (strchr (file, ' ')) + buf = g_strdup_printf ("LOAD \"%s\"", file); + else + buf = g_strdup_printf ("LOAD %s", file); + handle_command (sess, buf, FALSE); + g_free (buf); + } +} + +void +plugingui_load (void) +{ + char *sub_dir = g_build_filename (get_xdir(), "addons", NULL); + + gtkutil_file_req (NULL, _("Select a Plugin or Script to load"), plugingui_load_cb, current_sess, + sub_dir, "*."PLUGIN_SUFFIX";*.lua;*.pl;*.py;*.tcl;*.js", FRF_FILTERISINITIAL|FRF_EXTENSIONS); + + g_free (sub_dir); +} + +static void +plugingui_loadbutton_cb (GtkWidget * wid, gpointer unused) +{ + plugingui_load (); +} + +static void +plugingui_unload (GtkWidget * wid, gpointer unused) +{ + char *modname, *file; + GtkTreeView *view; + GtkTreeIter iter; + + view = g_object_get_data (G_OBJECT (plugin_window), "view"); + if (!gtkutil_treeview_get_selected (view, &iter, NAME_COLUMN, &modname, + FILEPATH_COLUMN, &file, -1)) + return; + + if (g_str_has_suffix (file, "."PLUGIN_SUFFIX)) + { + if (plugin_kill (modname, FALSE) == 2) + fe_message (_("That plugin is refusing to unload.\n"), FE_MSG_ERROR); + } + else + { + char *buf; + /* let python.so or perl.so handle it */ + if (strchr (file, ' ')) + buf = g_strdup_printf ("UNLOAD \"%s\"", file); + else + buf = g_strdup_printf ("UNLOAD %s", file); + handle_command (current_sess, buf, FALSE); + g_free (buf); + } + + g_free (modname); + g_free (file); +} + +static void +plugingui_reloadbutton_cb (GtkWidget *wid, GtkTreeView *view) +{ + char *file = plugingui_getfilename(view); + + if (file) + { + char *buf; + + if (strchr (file, ' ')) + buf = g_strdup_printf ("RELOAD \"%s\"", file); + else + buf = g_strdup_printf ("RELOAD %s", file); + handle_command (current_sess, buf, FALSE); + g_free (buf); + g_free (file); + } +} + +void +plugingui_open (void) +{ + GtkWidget *view; + GtkWidget *vbox, *hbox; + char buf[128]; + + if (plugin_window) + { + mg_bring_tofront (plugin_window); + return; + } + + g_snprintf(buf, sizeof(buf), _("Plugins and Scripts - %s"), _(DISPLAY_NAME)); + plugin_window = mg_create_generic_tab ("Addons", buf, FALSE, TRUE, plugingui_close, NULL, + 700, 300, &vbox, 0); + gtkutil_destroy_on_esc (plugin_window); + + view = plugingui_treeview_new (vbox); + g_object_set_data (G_OBJECT (plugin_window), "view", view); + + + hbox = gtk_hbutton_box_new (); + gtk_button_box_set_layout (GTK_BUTTON_BOX (hbox), GTK_BUTTONBOX_SPREAD); + gtk_container_set_border_width (GTK_CONTAINER (hbox), 5); + gtk_box_pack_end (GTK_BOX (vbox), hbox, 0, 0, 0); + + gtkutil_button (hbox, GTK_STOCK_REVERT_TO_SAVED, NULL, + plugingui_loadbutton_cb, NULL, _("_Load...")); + + gtkutil_button (hbox, GTK_STOCK_DELETE, NULL, + plugingui_unload, NULL, _("_Unload")); + + gtkutil_button (hbox, GTK_STOCK_REFRESH, NULL, + plugingui_reloadbutton_cb, view, _("_Reload")); + + fe_pluginlist_update (); + + gtk_widget_show_all (plugin_window); +} diff --git a/hexchat/src/fe-gtk/plugingui.h b/hexchat/src/fe-gtk/plugingui.h new file mode 100644 index 0000000..ae079a7 --- /dev/null +++ b/hexchat/src/fe-gtk/plugingui.h @@ -0,0 +1,26 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_PLUGINGUI_H +#define HEXCHAT_PLUGINGUI_H + +void plugingui_open (void); +void plugingui_load (void); + +#endif diff --git a/hexchat/src/fe-gtk/rawlog.c b/hexchat/src/fe-gtk/rawlog.c new file mode 100644 index 0000000..666059c --- /dev/null +++ b/hexchat/src/fe-gtk/rawlog.c @@ -0,0 +1,172 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <stdio.h> +#include <string.h> +#include <fcntl.h> +#include <stdlib.h> + +#ifdef WIN32 +#include <io.h> +#else +#include <unistd.h> +#endif + +#include "fe-gtk.h" + +#include <gdk/gdkkeysyms.h> + +#include "../common/hexchat.h" +#include "../common/hexchatc.h" +#include "../common/cfgfiles.h" +#include "../common/server.h" +#include "gtkutil.h" +#include "palette.h" +#include "maingui.h" +#include "rawlog.h" +#include "xtext.h" +#include "fkeys.h" + +static void +close_rawlog (GtkWidget *wid, server *serv) +{ + if (is_server (serv)) + serv->gui->rawlog_window = 0; +} + +static void +rawlog_save (server *serv, char *file) +{ + int fh = -1; + + if (file) + { + if (serv->gui->rawlog_window) + fh = hexchat_open_file (file, O_TRUNC | O_WRONLY | O_CREAT, + 0600, XOF_DOMODE | XOF_FULLPATH); + if (fh != -1) + { + gtk_xtext_save (GTK_XTEXT (serv->gui->rawlog_textlist), fh); + close (fh); + } + } +} + +static int +rawlog_clearbutton (GtkWidget * wid, server *serv) +{ + gtk_xtext_clear (GTK_XTEXT (serv->gui->rawlog_textlist)->buffer, 0); + return FALSE; +} + +static int +rawlog_savebutton (GtkWidget * wid, server *serv) +{ + gtkutil_file_req (NULL, _("Save As..."), rawlog_save, serv, NULL, NULL, FRF_WRITE); + return FALSE; +} + +static gboolean +rawlog_key_cb (GtkWidget * wid, GdkEventKey * key, gpointer userdata) +{ + /* Copy rawlog selection to clipboard when Ctrl+Shift+C is pressed, + * but make sure not to copy twice, i.e. when auto-copy is enabled. + */ + if (!prefs.hex_text_autocopy_text && + (key->keyval == GDK_KEY_c || key->keyval == GDK_KEY_C) && + key->state & STATE_SHIFT && + key->state & STATE_CTRL) + { + gtk_xtext_copy_selection (userdata); + } + return FALSE; +} + +void +open_rawlog (struct server *serv) +{ + GtkWidget *bbox, *scrolledwindow, *vbox; + char tbuf[256]; + + if (serv->gui->rawlog_window) + { + mg_bring_tofront (serv->gui->rawlog_window); + return; + } + + g_snprintf (tbuf, sizeof tbuf, _("Raw Log (%s) - %s"), serv->servername, _(DISPLAY_NAME)); + serv->gui->rawlog_window = + mg_create_generic_tab ("RawLog", tbuf, FALSE, TRUE, close_rawlog, serv, + 640, 320, &vbox, serv); + gtkutil_destroy_on_esc (serv->gui->rawlog_window); + + scrolledwindow = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_SHADOW_IN); + gtk_container_add (GTK_CONTAINER (vbox), scrolledwindow); + + serv->gui->rawlog_textlist = gtk_xtext_new (colors, 0); + gtk_container_add (GTK_CONTAINER (scrolledwindow), serv->gui->rawlog_textlist); + gtk_xtext_set_font (GTK_XTEXT (serv->gui->rawlog_textlist), prefs.hex_text_font); + GTK_XTEXT (serv->gui->rawlog_textlist)->ignore_hidden = 1; + + bbox = gtk_hbutton_box_new (); + gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_SPREAD); + gtk_box_pack_end (GTK_BOX (vbox), bbox, 0, 0, 4); + + gtkutil_button (bbox, GTK_STOCK_CLEAR, NULL, rawlog_clearbutton, + serv, _("Clear Raw Log")); + + gtkutil_button (bbox, GTK_STOCK_SAVE_AS, NULL, rawlog_savebutton, + serv, _("Save As...")); + + /* Copy selection to clipboard when Ctrl+Shift+C is pressed AND text auto-copy is disabled */ + g_signal_connect (G_OBJECT (serv->gui->rawlog_window), "key_press_event", G_CALLBACK (rawlog_key_cb), serv->gui->rawlog_textlist); + + gtk_widget_show_all (serv->gui->rawlog_window); +} + +void +fe_add_rawlog (server *serv, char *text, int len, int outbound) +{ + char **split_text; + char *new_text; + size_t i; + + if (!serv->gui->rawlog_window) + return; + + split_text = g_strsplit (text, "\r\n", 0); + + for (i = 0; i < g_strv_length (split_text); i++) + { + if (split_text[i][0] == 0) + break; + + if (outbound) + new_text = g_strconcat ("\0034<<\017 ", split_text[i], NULL); + else + new_text = g_strconcat ("\0033>>\017 ", split_text[i], NULL); + + gtk_xtext_append (GTK_XTEXT (serv->gui->rawlog_textlist)->buffer, new_text, strlen (new_text), 0); + + g_free (new_text); + } + + g_strfreev (split_text); +} diff --git a/hexchat/src/fe-gtk/rawlog.h b/hexchat/src/fe-gtk/rawlog.h new file mode 100644 index 0000000..53c57d4 --- /dev/null +++ b/hexchat/src/fe-gtk/rawlog.h @@ -0,0 +1,25 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_RAWLOG_H +#define HEXCHAT_RAWLOG_H + +void open_rawlog (server *serv); + +#endif diff --git a/hexchat/src/fe-gtk/servlistgui.c b/hexchat/src/fe-gtk/servlistgui.c new file mode 100644 index 0000000..0e5e108 --- /dev/null +++ b/hexchat/src/fe-gtk/servlistgui.c @@ -0,0 +1,2262 @@ +/* X-Chat + * Copyright (C) 2004-2008 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <ctype.h> + +#include <gdk/gdkkeysyms.h> + +#include "../common/hexchat.h" +#include "../common/hexchatc.h" +#include "../common/servlist.h" +#include "../common/cfgfiles.h" +#include "../common/fe.h" +#include "../common/util.h" + +#include "fe-gtk.h" +#include "gtkutil.h" +#include "menu.h" +#include "pixmaps.h" +#include "fkeys.h" + +#define SERVLIST_X_PADDING 4 /* horizontal paddig in the network editor */ +#define SERVLIST_Y_PADDING 0 /* vertical padding in the network editor */ + +#ifdef USE_OPENSSL +# define DEFAULT_SERVER "newserver/6697" +#else +# define DEFAULT_SERVER "newserver/6667" +#endif + +/* servlistgui.c globals */ +static GtkWidget *serverlist_win = NULL; +static GtkWidget *networks_tree; /* network TreeView */ + +static int netlist_win_width = 0; /* don't hardcode pixels, just use as much as needed by default, save if resized */ +static int netlist_win_height = 0; +static int netedit_win_width = 0; +static int netedit_win_height = 0; + +static int netedit_active_tab = 0; + +/* global user info */ +static GtkWidget *entry_nick1; +static GtkWidget *entry_nick2; +static GtkWidget *entry_nick3; +static GtkWidget *entry_guser; +/* static GtkWidget *entry_greal; */ + +enum { + SERVER_TREE, + CHANNEL_TREE, + CMD_TREE, + N_TREES, +}; + +/* edit area */ +static GtkWidget *edit_win; +static GtkWidget *edit_entry_nick; +static GtkWidget *edit_entry_nick2; +static GtkWidget *edit_entry_user; +static GtkWidget *edit_entry_real; +static GtkWidget *edit_entry_pass; +static GtkWidget *edit_label_nick; +static GtkWidget *edit_label_nick2; +static GtkWidget *edit_label_real; +static GtkWidget *edit_label_user; +static GtkWidget *edit_trees[N_TREES]; + +static ircnet *selected_net = NULL; +static ircserver *selected_serv = NULL; +static commandentry *selected_cmd = NULL; +static favchannel *selected_chan = NULL; +static session *servlist_sess; + +static void servlist_network_row_cb (GtkTreeSelection *sel, gpointer user_data); +static GtkWidget *servlist_open_edit (GtkWidget *parent, ircnet *net); + + +static const char *pages[]= +{ + IRC_DEFAULT_CHARSET, + "CP1252 (Windows-1252)", + "ISO-8859-15 (Western Europe)", + "ISO-8859-2 (Central Europe)", + "ISO-8859-7 (Greek)", + "ISO-8859-8 (Hebrew)", + "ISO-8859-9 (Turkish)", + "ISO-2022-JP (Japanese)", + "SJIS (Japanese)", + "CP949 (Korean)", + "KOI8-R (Cyrillic)", + "CP1251 (Cyrillic)", + "CP1256 (Arabic)", + "CP1257 (Baltic)", + "GB18030 (Chinese)", + "TIS-620 (Thai)", + NULL +}; + +/* This is our dictionary for authentication types. Keep these in sync with + * login_types[]! This allows us to re-order the login type dropdown in the + * network list without breaking config compatibility. + * + * Also make sure inbound_nickserv_login() won't break, i.e. if you add a new + * type that is NickServ-based, add it there as well so that HexChat knows to + * treat it as such. + */ +static int login_types_conf[] = +{ + LOGIN_DEFAULT, /* default entry - we don't use this but it makes indexing consistent with login_types[] so it's nice */ + LOGIN_SASL, +#ifdef USE_OPENSSL + LOGIN_SASLEXTERNAL, + LOGIN_SASL_SCRAM_SHA_1, + LOGIN_SASL_SCRAM_SHA_256, + LOGIN_SASL_SCRAM_SHA_512, +#endif + LOGIN_PASS, + LOGIN_MSG_NICKSERV, + LOGIN_NICKSERV, +#ifdef USE_OPENSSL + LOGIN_CHALLENGEAUTH, +#endif + LOGIN_CUSTOM +#if 0 + LOGIN_NS, + LOGIN_MSG_NS, + LOGIN_AUTH, +#endif +}; + +static const char *login_types[]= +{ + "Default", + "SASL PLAIN (username + password)", +#ifdef USE_OPENSSL + "SASL EXTERNAL (cert)", + "SASL SCRAM-SHA-1", + "SASL SCRAM-SHA-256", + "SASL SCRAM-SHA-512", +#endif + "Server password (/PASS password)", + "NickServ (/MSG NickServ + password)", + "NickServ (/NICKSERV + password)", +#ifdef USE_OPENSSL + "Challenge Auth (username + password)", +#endif + "Custom... (connect commands)", +#if 0 + "NickServ (/NS + password)", + "NickServ (/MSG NS + password)", + "AUTH (/AUTH nickname password)", +#endif + NULL +}; + +/* poor man's IndexOf() - find the dropdown string index that belongs to the given config value */ +static int +servlist_get_login_desc_index (int conf_value) +{ + int i; + int length = sizeof (login_types_conf) / sizeof (login_types_conf[0]); /* the number of elements in the conf array */ + + for (i = 0; i < length; i++) + { + if (login_types_conf[i] == conf_value) + { + return i; + } + } + + return 0; /* make the compiler happy */ +} + +static void +servlist_select_and_show (GtkTreeView *treeview, GtkTreeIter *iter, + GtkListStore *store) +{ + GtkTreePath *path; + GtkTreeSelection *sel; + + sel = gtk_tree_view_get_selection (treeview); + + /* select this network */ + gtk_tree_selection_select_iter (sel, iter); + /* and make sure it's visible */ + path = gtk_tree_model_get_path (GTK_TREE_MODEL (store), iter); + if (path) + { + gtk_tree_view_scroll_to_cell (treeview, path, NULL, TRUE, 0.5, 0.5); + gtk_tree_view_set_cursor (treeview, path, NULL, FALSE); + gtk_tree_path_free (path); + } +} + +static void +servlist_channels_populate (ircnet *net, GtkWidget *treeview) +{ + GtkListStore *store; + GtkTreeIter iter; + int i; + favchannel *favchan; + GSList *list = net->favchanlist; + + store = (GtkListStore *)gtk_tree_view_get_model (GTK_TREE_VIEW (treeview)); + gtk_list_store_clear (store); + + i = 0; + while (list) + { + favchan = list->data; + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, 0, favchan->name, 1, favchan->key, 2, TRUE, -1); + + if (net->selected == i) + { + /* select this server */ + servlist_select_and_show (GTK_TREE_VIEW (treeview), &iter, store); + } + + i++; + list = list->next; + } +} + +static void +servlist_servers_populate (ircnet *net, GtkWidget *treeview) +{ + GtkListStore *store; + GtkTreeIter iter; + int i; + ircserver *serv; + GSList *list = net->servlist; + + store = (GtkListStore *)gtk_tree_view_get_model (GTK_TREE_VIEW (treeview)); + gtk_list_store_clear (store); + + i = 0; + while (list) + { + serv = list->data; + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, 0, serv->hostname, 1, 1, -1); + + if (net->selected == i) + { + /* select this server */ + servlist_select_and_show (GTK_TREE_VIEW (treeview), &iter, store); + } + + i++; + list = list->next; + } +} + +static void +servlist_commands_populate (ircnet *net, GtkWidget *treeview) +{ + GtkListStore *store; + GtkTreeIter iter; + int i; + commandentry *entry; + GSList *list = net->commandlist; + + store = (GtkListStore *)gtk_tree_view_get_model (GTK_TREE_VIEW (treeview)); + gtk_list_store_clear (store); + + i = 0; + while (list) + { + entry = list->data; + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, 0, entry->command, 1, 1, -1); + + if (net->selected == i) + { + /* select this server */ + servlist_select_and_show (GTK_TREE_VIEW (treeview), &iter, store); + } + + i++; + list = list->next; + } +} + +static void +servlist_networks_populate_ (GtkWidget *treeview, GSList *netlist, gboolean favorites) +{ + GtkListStore *store; + GtkTreeIter iter; + int i; + ircnet *net; + + if (!netlist) + { + net = servlist_net_add (_("New Network"), "", FALSE); + servlist_server_add (net, DEFAULT_SERVER); + netlist = network_list; + } + store = (GtkListStore *)gtk_tree_view_get_model (GTK_TREE_VIEW (treeview)); + gtk_list_store_clear (store); + + i = 0; + while (netlist) + { + net = netlist->data; + if (!favorites || (net->flags & FLAG_FAVORITE)) + { + if (favorites) + gtk_list_store_insert_with_values (store, &iter, 0x7fffffff, 0, net->name, 1, 1, 2, 400, -1); + else + gtk_list_store_insert_with_values (store, &iter, 0x7fffffff, 0, net->name, 1, 1, 2, (net->flags & FLAG_FAVORITE) ? 800 : 400, -1); + if (i == prefs.hex_gui_slist_select) + { + /* select this network */ + servlist_select_and_show (GTK_TREE_VIEW (treeview), &iter, store); + selected_net = net; + } + } + i++; + netlist = netlist->next; + } +} + +static void +servlist_networks_populate (GtkWidget *treeview, GSList *netlist) +{ + servlist_networks_populate_ (treeview, netlist, prefs.hex_gui_slist_fav); +} + +static void +servlist_server_row_cb (GtkTreeSelection *sel, gpointer user_data) +{ + GtkTreeModel *model; + GtkTreeIter iter; + ircserver *serv; + char *servname; + int pos; + + if (!selected_net) + return; + + if (gtk_tree_selection_get_selected (sel, &model, &iter)) + { + gtk_tree_model_get (model, &iter, 0, &servname, -1); + serv = servlist_server_find (selected_net, servname, &pos); + g_free (servname); + if (serv) + selected_net->selected = pos; + selected_serv = serv; + } +} + +static void +servlist_command_row_cb (GtkTreeSelection *sel, gpointer user_data) +{ + GtkTreeModel *model; + GtkTreeIter iter; + commandentry *cmd; + char *cmdname; + int pos; + + if (!selected_net) + return; + + if (gtk_tree_selection_get_selected (sel, &model, &iter)) + { + gtk_tree_model_get (model, &iter, 0, &cmdname, -1); + cmd = servlist_command_find (selected_net, cmdname, &pos); + g_free (cmdname); + if (cmd) + selected_net->selected = pos; + selected_cmd = cmd; + } +} + +static void +servlist_channel_row_cb (GtkTreeSelection *sel, gpointer user_data) +{ + GtkTreeModel *model; + GtkTreeIter iter; + favchannel *channel; + char *channame; + int pos; + + if (!selected_net) + return; + + if (gtk_tree_selection_get_selected (sel, &model, &iter)) + { + gtk_tree_model_get (model, &iter, 0, &channame, -1); + channel = servlist_favchan_find (selected_net, channame, &pos); + g_free (channame); + if (channel) + selected_net->selected = pos; + selected_chan = channel; + } +} + +static void +servlist_start_editing (GtkTreeView *tree) +{ + GtkTreeSelection *sel; + GtkTreeModel *model; + GtkTreeIter iter; + GtkTreePath *path; + + sel = gtk_tree_view_get_selection (tree); + + if (gtk_tree_selection_get_selected (sel, &model, &iter)) + { + path = gtk_tree_model_get_path (GTK_TREE_MODEL (model), &iter); + if (path) + { + gtk_tree_view_set_cursor (tree, path, + gtk_tree_view_get_column (tree, 0), TRUE); + gtk_tree_path_free (path); + } + } +} + +static void +servlist_addserver (void) +{ + GtkTreeIter iter; + GtkListStore *store; + + if (!selected_net) + return; + + store = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (edit_trees[SERVER_TREE]))); + servlist_server_add (selected_net, DEFAULT_SERVER); + + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, 0, DEFAULT_SERVER, 1, TRUE, -1); + + /* select this server */ + servlist_select_and_show (GTK_TREE_VIEW (edit_trees[SERVER_TREE]), &iter, store); + servlist_start_editing (GTK_TREE_VIEW (edit_trees[SERVER_TREE])); + + servlist_server_row_cb (gtk_tree_view_get_selection (GTK_TREE_VIEW (networks_tree)), NULL); +} + +static void +servlist_addcommand (void) +{ + GtkTreeIter iter; + GtkListStore *store; + + if (!selected_net) + return; + + store = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (edit_trees[CMD_TREE]))); + servlist_command_add (selected_net, "ECHO hello"); + + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, 0, "ECHO hello", 1, TRUE, -1); + + servlist_select_and_show (GTK_TREE_VIEW (edit_trees[CMD_TREE]), &iter, store); + servlist_start_editing (GTK_TREE_VIEW (edit_trees[CMD_TREE])); + + servlist_command_row_cb (gtk_tree_view_get_selection (GTK_TREE_VIEW (networks_tree)), NULL); +} + +static void +servlist_addchannel (void) +{ + GtkTreeIter iter; + GtkListStore *store; + + if (!selected_net) + return; + + store = GTK_LIST_STORE(gtk_tree_view_get_model (GTK_TREE_VIEW (edit_trees[CHANNEL_TREE]))); + servlist_favchan_add (selected_net, "#channel"); + + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, 0, "#channel", 1, "", 2, TRUE, -1); + + /* select this server */ + servlist_select_and_show (GTK_TREE_VIEW (edit_trees[CHANNEL_TREE]), &iter, store); + servlist_start_editing (GTK_TREE_VIEW (edit_trees[CHANNEL_TREE])); + + servlist_channel_row_cb (gtk_tree_view_get_selection (GTK_TREE_VIEW (networks_tree)), NULL); +} + +static void +servlist_addnet_cb (GtkWidget *item, GtkTreeView *treeview) +{ + GtkTreeIter iter; + GtkListStore *store; + ircnet *net; + + net = servlist_net_add (_("New Network"), "", TRUE); + net->encoding = g_strdup (IRC_DEFAULT_CHARSET); + servlist_server_add (net, DEFAULT_SERVER); + + store = (GtkListStore *)gtk_tree_view_get_model (treeview); + gtk_list_store_prepend (store, &iter); + gtk_list_store_set (store, &iter, 0, net->name, 1, 1, -1); + + /* select this network */ + servlist_select_and_show (GTK_TREE_VIEW (networks_tree), &iter, store); + servlist_start_editing (GTK_TREE_VIEW (networks_tree)); + + servlist_network_row_cb (gtk_tree_view_get_selection (GTK_TREE_VIEW (networks_tree)), NULL); +} + +static void +servlist_deletenetwork (ircnet *net) +{ + GtkTreeSelection *sel; + GtkTreeModel *model; + GtkTreeIter iter; + + /* remove from GUI */ + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (networks_tree)); + if (gtk_tree_selection_get_selected (sel, &model, &iter)) + gtk_list_store_remove (GTK_LIST_STORE (model), &iter); + + /* remove from list */ + servlist_net_remove (net); + + /* force something to be selected */ + gtk_tree_model_get_iter_first (model, &iter); + servlist_select_and_show (GTK_TREE_VIEW (networks_tree), &iter, + GTK_LIST_STORE (model)); + servlist_network_row_cb (sel, NULL); +} + +static void +servlist_deletenetdialog_cb (GtkDialog *dialog, gint arg1, ircnet *net) +{ + gtk_widget_destroy (GTK_WIDGET (dialog)); + if (arg1 == GTK_RESPONSE_OK) + servlist_deletenetwork (net); +} + +static GSList * +servlist_move_item (GtkTreeView *view, GSList *list, gpointer item, int delta) +{ + GtkTreeModel *store; + GtkTreeIter iter1, iter2; + GtkTreeSelection *sel; + GtkTreePath *path; + int pos; + + /* Keep tree in sync w/ list, there has to be an easier way to get iters */ + sel = gtk_tree_view_get_selection (view); + gtk_tree_selection_get_selected (sel, &store, &iter1); + path = gtk_tree_model_get_path (store, &iter1); + if (delta == 1) + gtk_tree_path_next (path); + else + gtk_tree_path_prev (path); + gtk_tree_model_get_iter (store, &iter2, path); + gtk_tree_path_free (path); + + pos = g_slist_index (list, item); + if (pos >= 0) + { + pos += delta; + if (pos >= 0) + { + list = g_slist_remove (list, item); + list = g_slist_insert (list, item, pos); + + gtk_list_store_swap (GTK_LIST_STORE (store), &iter1, &iter2); + } + } + + return list; +} + +static gboolean +servlist_net_keypress_cb (GtkWidget *wid, GdkEventKey *evt, gpointer tree) +{ + gboolean handled = FALSE; + + if (!selected_net || prefs.hex_gui_slist_fav) + return FALSE; + + if (evt->state & STATE_SHIFT) + { + if (evt->keyval == GDK_KEY_Up) + { + handled = TRUE; + network_list = servlist_move_item (GTK_TREE_VIEW (tree), network_list, selected_net, -1); + } + else if (evt->keyval == GDK_KEY_Down) + { + handled = TRUE; + network_list = servlist_move_item (GTK_TREE_VIEW (tree), network_list, selected_net, +1); + } + } + + return handled; +} + +static gint +servlist_compare (ircnet *net1, ircnet *net2) +{ + gchar *net1_casefolded, *net2_casefolded; + int result=0; + + net1_casefolded=g_utf8_casefold(net1->name,-1), + net2_casefolded=g_utf8_casefold(net2->name,-1), + + result=g_utf8_collate(net1_casefolded,net2_casefolded); + + g_free(net1_casefolded); + g_free(net2_casefolded); + + return result; + +} + +static void +servlist_sort (GtkWidget *button, gpointer none) +{ + network_list=g_slist_sort(network_list,(GCompareFunc)servlist_compare); + servlist_networks_populate (networks_tree, network_list); +} + +static gboolean +servlist_has_selection (GtkTreeView *tree) +{ + GtkTreeSelection *sel; + GtkTreeModel *model; + GtkTreeIter iter; + + /* make sure something is selected */ + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree)); + return gtk_tree_selection_get_selected (sel, &model, &iter); +} + +static void +servlist_favor (GtkWidget *button, gpointer none) +{ + GtkTreeSelection *sel; + GtkTreeModel *model; + GtkTreeIter iter; + + if (!selected_net) + return; + + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (networks_tree)); + if (gtk_tree_selection_get_selected (sel, &model, &iter)) + { + if (selected_net->flags & FLAG_FAVORITE) + { + gtk_list_store_set (GTK_LIST_STORE (model), &iter, 2, 400, -1); + selected_net->flags &= ~FLAG_FAVORITE; + } + else + { + gtk_list_store_set (GTK_LIST_STORE (model), &iter, 2, 800, -1); + selected_net->flags |= FLAG_FAVORITE; + } + } +} + +static void +servlist_update_from_entry (char **str, GtkWidget *entry) +{ + g_free (*str); + + if (gtk_entry_get_text (GTK_ENTRY (entry))[0] == 0) + *str = NULL; + else + *str = g_strdup (gtk_entry_get_text (GTK_ENTRY (entry))); +} + +static void +servlist_edit_update (ircnet *net) +{ + servlist_update_from_entry (&net->nick, edit_entry_nick); + servlist_update_from_entry (&net->nick2, edit_entry_nick2); + servlist_update_from_entry (&net->user, edit_entry_user); + servlist_update_from_entry (&net->real, edit_entry_real); + servlist_update_from_entry (&net->pass, edit_entry_pass); +} + +static void +servlist_edit_close_cb (GtkWidget *button, gpointer userdata) +{ + if (selected_net) + servlist_edit_update (selected_net); + + gtk_widget_destroy (edit_win); + edit_win = NULL; +} + +static gint +servlist_editwin_delete_cb (GtkWidget *win, GdkEventAny *event, gpointer none) +{ + servlist_edit_close_cb (NULL, NULL); + return FALSE; +} + +static gboolean +servlist_configure_cb (GtkWindow *win, GdkEventConfigure *event, gpointer none) +{ + /* remember the window size */ + gtk_window_get_size (win, &netlist_win_width, &netlist_win_height); + return FALSE; +} + +static gboolean +servlist_edit_configure_cb (GtkWindow *win, GdkEventConfigure *event, gpointer none) +{ + /* remember the window size */ + gtk_window_get_size (win, &netedit_win_width, &netedit_win_height); + return FALSE; +} + +static void +servlist_edit_cb (GtkWidget *but, gpointer none) +{ + if (!servlist_has_selection (GTK_TREE_VIEW (networks_tree))) + return; + + edit_win = servlist_open_edit (serverlist_win, selected_net); + gtkutil_set_icon (edit_win); + servlist_servers_populate (selected_net, edit_trees[SERVER_TREE]); + servlist_channels_populate (selected_net, edit_trees[CHANNEL_TREE]); + servlist_commands_populate (selected_net, edit_trees[CMD_TREE]); + g_signal_connect (G_OBJECT (edit_win), "delete_event", + G_CALLBACK (servlist_editwin_delete_cb), 0); + g_signal_connect (G_OBJECT (edit_win), "configure_event", + G_CALLBACK (servlist_edit_configure_cb), 0); + gtk_widget_show (edit_win); +} + +static void +servlist_deletenet_cb (GtkWidget *item, ircnet *net) +{ + GtkWidget *dialog; + + if (!servlist_has_selection (GTK_TREE_VIEW (networks_tree))) + return; + + net = selected_net; + if (!net) + return; + dialog = gtk_message_dialog_new (GTK_WINDOW (serverlist_win), + GTK_DIALOG_DESTROY_WITH_PARENT | + GTK_DIALOG_MODAL, + GTK_MESSAGE_QUESTION, + GTK_BUTTONS_OK_CANCEL, + _("Really remove network \"%s\" and all its servers?"), + net->name); + g_signal_connect (dialog, "response", + G_CALLBACK (servlist_deletenetdialog_cb), net); + gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); + gtk_widget_show (dialog); +} + +static void +servlist_deleteserver (ircserver *serv, GtkTreeModel *model) +{ + GtkTreeSelection *sel; + GtkTreeIter iter; + + /* don't remove the last server */ + if (selected_net && g_slist_length (selected_net->servlist) < 2) + return; + + /* remove from GUI */ + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (edit_trees[SERVER_TREE])); + if (gtk_tree_selection_get_selected (sel, &model, &iter)) + gtk_list_store_remove (GTK_LIST_STORE (model), &iter); + + /* remove from list */ + if (selected_net) + servlist_server_remove (selected_net, serv); +} + +static void +servlist_editbutton_cb (GtkWidget *item, GtkNotebook *notebook) +{ + servlist_start_editing (GTK_TREE_VIEW (edit_trees[gtk_notebook_get_current_page(notebook)])); +} + +static void +servlist_deleteserver_cb (void) +{ + GtkTreeSelection *sel; + GtkTreeModel *model; + GtkTreeIter iter; + char *servname; + ircserver *serv; + int pos; + + /* find the selected item in the GUI */ + model = gtk_tree_view_get_model (GTK_TREE_VIEW (edit_trees[SERVER_TREE])); + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (edit_trees[SERVER_TREE])); + + if (gtk_tree_selection_get_selected (sel, &model, &iter)) + { + gtk_tree_model_get (model, &iter, 0, &servname, -1); + serv = servlist_server_find (selected_net, servname, &pos); + g_free (servname); + if (serv) + { + servlist_deleteserver (serv, model); + } + } +} + +static void +servlist_deletecommand (commandentry *entry, GtkTreeModel *model) +{ + GtkTreeSelection *sel; + GtkTreeIter iter; + + /* remove from GUI */ + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (edit_trees[CMD_TREE])); + if (gtk_tree_selection_get_selected (sel, &model, &iter)) + { + gtk_list_store_remove (GTK_LIST_STORE (model), &iter); + } + + /* remove from list */ + if (selected_net) + { + servlist_command_remove (selected_net, entry); + } +} + +static void +servlist_deletecommand_cb (void) +{ + GtkTreeSelection *sel; + GtkTreeModel *model; + GtkTreeIter iter; + char *command; + commandentry *entry; + int pos; + + /* find the selected item in the GUI */ + model = gtk_tree_view_get_model (GTK_TREE_VIEW (edit_trees[CMD_TREE])); + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (edit_trees[CMD_TREE])); + + if (gtk_tree_selection_get_selected (sel, &model, &iter)) + { + gtk_tree_model_get (model, &iter, 0, &command, -1); /* query the content of the selection */ + entry = servlist_command_find (selected_net, command, &pos); + g_free (command); + if (entry) + { + servlist_deletecommand (entry, model); + } + } +} + +static void +servlist_deletechannel (favchannel *favchan, GtkTreeModel *model) +{ + GtkTreeSelection *sel; + GtkTreeIter iter; + + /* remove from GUI */ + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (edit_trees[CHANNEL_TREE])); + if (gtk_tree_selection_get_selected (sel, &model, &iter)) + { + gtk_list_store_remove (GTK_LIST_STORE (model), &iter); + } + + /* remove from list */ + if (selected_net) + { + servlist_favchan_remove (selected_net, favchan); + } +} + +static void +servlist_deletechannel_cb (void) +{ + GtkTreeSelection *sel; + GtkTreeModel *model; + GtkTreeIter iter; + char *name; + char *key; + favchannel *favchan; + int pos; + + /* find the selected item in the GUI */ + model = gtk_tree_view_get_model (GTK_TREE_VIEW (edit_trees[CHANNEL_TREE])); + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (edit_trees[CHANNEL_TREE])); + + if (gtk_tree_selection_get_selected (sel, &model, &iter)) + { + gtk_tree_model_get (model, &iter, 0, &name, 1, &key, -1); /* query the content of the selection */ + favchan = servlist_favchan_find (selected_net, name, &pos); + g_free (name); + if (favchan) + { + servlist_deletechannel (favchan, model); + } + } +} + +static ircnet * +servlist_find_selected_net (GtkTreeSelection *sel) +{ + GtkTreeModel *model; + GtkTreeIter iter; + char *netname; + int pos; + ircnet *net = NULL; + + if (gtk_tree_selection_get_selected (sel, &model, &iter)) + { + gtk_tree_model_get (model, &iter, 0, &netname, -1); + net = servlist_net_find (netname, &pos, strcmp); + g_free (netname); + if (net) + prefs.hex_gui_slist_select = pos; + } + + return net; +} + +static void +servlist_network_row_cb (GtkTreeSelection *sel, gpointer user_data) +{ + ircnet *net; + + selected_net = NULL; + + net = servlist_find_selected_net (sel); + if (net) + selected_net = net; +} + +static int +servlist_savegui (void) +{ + char *sp; + const char *nick1, *nick2; + + /* check for blank username, ircd will not allow this */ + if (gtk_entry_get_text (GTK_ENTRY (entry_guser))[0] == 0) + return 1; + + /* if (gtk_entry_get_text (GTK_ENTRY (entry_greal))[0] == 0) + return 1; */ + + nick1 = gtk_entry_get_text (GTK_ENTRY (entry_nick1)); + nick2 = gtk_entry_get_text (GTK_ENTRY (entry_nick2)); + + /* ensure unique nicknames */ + if (!rfc_casecmp (nick1, nick2)) + return 2; + + safe_strcpy (prefs.hex_irc_nick1, nick1, sizeof(prefs.hex_irc_nick1)); + safe_strcpy (prefs.hex_irc_nick2, nick2, sizeof(prefs.hex_irc_nick2)); + safe_strcpy (prefs.hex_irc_nick3, gtk_entry_get_text (GTK_ENTRY (entry_nick3)), sizeof(prefs.hex_irc_nick3)); + safe_strcpy (prefs.hex_irc_user_name, gtk_entry_get_text (GTK_ENTRY (entry_guser)), sizeof(prefs.hex_irc_user_name)); + sp = strchr (prefs.hex_irc_user_name, ' '); + if (sp) + sp[0] = 0; /* spaces will break the login */ + /* strcpy (prefs.hex_irc_real_name, gtk_entry_get_text (GTK_ENTRY (entry_greal))); */ + servlist_save (); + save_config (); /* For nicks stored in hexchat.conf */ + + return 0; +} + +static gboolean +servlist_get_iter_from_name (GtkTreeModel *model, gchar *name, GtkTreeIter *iter) +{ + GtkTreePath *path = gtk_tree_path_new_from_string (name); + + if (!gtk_tree_model_get_iter (model, iter, path)) + { + gtk_tree_path_free (path); + return FALSE; + } + + gtk_tree_path_free (path); + return TRUE; +} + +static void +servlist_addbutton_cb (GtkWidget *item, GtkNotebook *notebook) +{ + switch (gtk_notebook_get_current_page (notebook)) + { + case SERVER_TREE: + servlist_addserver (); + break; + case CHANNEL_TREE: + servlist_addchannel (); + break; + case CMD_TREE: + servlist_addcommand (); + break; + default: + break; + } +} + +static void +servlist_deletebutton_cb (GtkWidget *item, GtkNotebook *notebook) +{ + switch (gtk_notebook_get_current_page (notebook)) + { + case SERVER_TREE: + servlist_deleteserver_cb (); + break; + case CHANNEL_TREE: + servlist_deletechannel_cb (); + break; + case CMD_TREE: + servlist_deletecommand_cb (); + break; + default: + break; + } +} + +static gboolean +servlist_keypress_cb (GtkWidget *wid, GdkEventKey *evt, GtkNotebook *notebook) +{ + gboolean handled = FALSE; + int delta = 0; + + if (!selected_net) + return FALSE; + + if (evt->state & STATE_SHIFT) + { + if (evt->keyval == GDK_KEY_Up) + { + handled = TRUE; + delta = -1; + } + else if (evt->keyval == GDK_KEY_Down) + { + handled = TRUE; + delta = +1; + } + } + + if (handled) + { + switch (gtk_notebook_get_current_page (notebook)) + { + case SERVER_TREE: + if (selected_serv) + selected_net->servlist = servlist_move_item (GTK_TREE_VIEW (edit_trees[SERVER_TREE]), + selected_net->servlist, selected_serv, delta); + break; + case CHANNEL_TREE: + if (selected_chan) + selected_net->favchanlist = servlist_move_item (GTK_TREE_VIEW (edit_trees[CHANNEL_TREE]), + selected_net->favchanlist, selected_chan, delta); + break; + case CMD_TREE: + if (selected_cmd) + selected_net->commandlist = servlist_move_item (GTK_TREE_VIEW (edit_trees[CMD_TREE]), + selected_net->commandlist, selected_cmd, delta); + break; + } + } + + return handled; +} + +void +servlist_autojoinedit (ircnet *net, char *channel, gboolean add) +{ + favchannel *fav; + + if (add) + { + servlist_favchan_add (net, channel); + servlist_save (); + } + else + { + fav = servlist_favchan_find (net, channel, NULL); + if (fav) + { + servlist_favchan_remove (net, fav); + servlist_save (); + } + } +} + +static void +servlist_toggle_global_user (gboolean sensitive) +{ + gtk_widget_set_sensitive (edit_entry_nick, sensitive); + gtk_widget_set_sensitive (edit_label_nick, sensitive); + + gtk_widget_set_sensitive (edit_entry_nick2, sensitive); + gtk_widget_set_sensitive (edit_label_nick2, sensitive); + + gtk_widget_set_sensitive (edit_entry_user, sensitive); + gtk_widget_set_sensitive (edit_label_user, sensitive); + + gtk_widget_set_sensitive (edit_entry_real, sensitive); + gtk_widget_set_sensitive (edit_label_real, sensitive); +} + +static void +servlist_connect_cb (GtkWidget *button, gpointer userdata) +{ + int servlist_err; + + if (!selected_net) + return; + + servlist_err = servlist_savegui (); + if (servlist_err == 1) + { + fe_message (_("User name cannot be left blank."), FE_MSG_ERROR); + return; + } + + if (!is_session (servlist_sess)) + servlist_sess = NULL; /* open a new one */ + + { + GSList *list; + session *sess; + session *chosen = servlist_sess; + + servlist_sess = NULL; /* open a new one */ + + for (list = sess_list; list; list = list->next) + { + sess = list->data; + if (sess->server->network == selected_net) + { + servlist_sess = sess; + if (sess->server->connected) + servlist_sess = NULL; /* open a new one */ + break; + } + } + + /* use the chosen one, if it's empty */ + if (!servlist_sess && + chosen && + !chosen->server->connected && + chosen->server->server_session->channel[0] == 0) + { + servlist_sess = chosen; + } + } + + servlist_connect (servlist_sess, selected_net, TRUE); + + gtk_widget_destroy (serverlist_win); + serverlist_win = NULL; + selected_net = NULL; +} + +static void +servlist_celledit_cb (GtkCellRendererText *cell, gchar *arg1, gchar *arg2, + gpointer user_data) +{ + GtkTreeModel *model = (GtkTreeModel *)user_data; + GtkTreeIter iter; + GtkTreePath *path; + char *netname; + ircnet *net; + + if (!arg1 || !arg2) + return; + + path = gtk_tree_path_new_from_string (arg1); + if (!path) + return; + + if (!gtk_tree_model_get_iter (model, &iter, path)) + { + gtk_tree_path_free (path); + return; + } + gtk_tree_model_get (model, &iter, 0, &netname, -1); + + net = servlist_net_find (netname, NULL, strcmp); + g_free (netname); + if (net) + { + /* delete empty item */ + if (arg2[0] == 0) + { + servlist_deletenetwork (net); + gtk_tree_path_free (path); + return; + } + + netname = net->name; + net->name = g_strdup (arg2); + gtk_list_store_set (GTK_LIST_STORE (model), &iter, 0, net->name, -1); + g_free (netname); + } + + gtk_tree_path_free (path); +} + +static void +servlist_check_cb (GtkWidget *but, gpointer num_p) +{ + int num = GPOINTER_TO_INT (num_p); + + if (!selected_net) + return; + + if ((1 << num) == FLAG_CYCLE || (1 << num) == FLAG_USE_PROXY) + { + /* these ones are reversed, so it's compat with 2.0.x */ + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (but))) + selected_net->flags &= ~(1 << num); + else + selected_net->flags |= (1 << num); + } else + { + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (but))) + selected_net->flags |= (1 << num); + else + selected_net->flags &= ~(1 << num); + } + + if ((1 << num) == FLAG_USE_GLOBAL) + { + servlist_toggle_global_user (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (but))); + } +} + +static GtkWidget * +servlist_create_check (int num, int state, GtkWidget *table, int row, int col, char *labeltext) +{ + GtkWidget *but; + + but = gtk_check_button_new_with_label (labeltext); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (but), state); + g_signal_connect (G_OBJECT (but), "toggled", + G_CALLBACK (servlist_check_cb), GINT_TO_POINTER (num)); + gtk_table_attach (GTK_TABLE (table), but, col, col+2, row, row+1, GTK_FILL|GTK_EXPAND, 0, SERVLIST_X_PADDING, SERVLIST_Y_PADDING); + gtk_widget_show (but); + + return but; +} + +static GtkWidget * +servlist_create_entry (GtkWidget *table, char *labeltext, int row, + char *def, GtkWidget **label_ret, char *tip) +{ + GtkWidget *label, *entry; + + label = gtk_label_new_with_mnemonic (labeltext); + if (label_ret) + *label_ret = label; + gtk_widget_show (label); + gtk_table_attach (GTK_TABLE (table), label, 0, 1, row, row+1, GTK_FILL, 0, SERVLIST_X_PADDING, SERVLIST_Y_PADDING); + gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); + + entry = gtk_entry_new (); + gtk_widget_set_tooltip_text (entry, tip); + gtk_widget_show (entry); + gtk_entry_set_text (GTK_ENTRY (entry), def ? def : ""); + gtk_label_set_mnemonic_widget (GTK_LABEL (label), entry); + + gtk_table_attach (GTK_TABLE (table), entry, 1, 2, row, row+1, GTK_FILL|GTK_EXPAND, 0, SERVLIST_X_PADDING, SERVLIST_Y_PADDING); + + return entry; +} + +static gint +servlist_delete_cb (GtkWidget *win, GdkEventAny *event, gpointer userdata) +{ + servlist_savegui (); + serverlist_win = NULL; + selected_net = NULL; + + if (sess_list == NULL) + hexchat_exit (); + + return FALSE; +} + +static void +servlist_close_cb (GtkWidget *button, gpointer userdata) +{ + servlist_savegui (); + gtk_widget_destroy (serverlist_win); + serverlist_win = NULL; + selected_net = NULL; + + if (sess_list == NULL) + hexchat_exit (); +} + +/* convert "host:port" format to "host/port" */ + +static char * +servlist_sanitize_hostname (char *host) +{ + char *ret, *c, *e; + + ret = g_strdup (host); + + c = strchr (ret, ':'); + e = strrchr (ret, ':'); + + /* if only one colon exists it's probably not IPv6 */ + if (c && c == e) + *c = '/'; + + return g_strstrip(ret); +} + +/* remove leading slash */ +static char * +servlist_sanitize_command (char *cmd) +{ + if (cmd[0] == '/') + { + return (g_strdup (cmd + 1)); + } + else + { + return (g_strdup (cmd)); + } +} + +static void +servlist_editserver_cb (GtkCellRendererText *cell, gchar *name, gchar *newval, gpointer user_data) +{ + GtkTreeModel *model = (GtkTreeModel *)user_data; + GtkTreeIter iter; + char *servname; + ircserver *serv; + + if (!selected_net) + { + return; + } + + if (!servlist_get_iter_from_name (model, name, &iter)) + { + return; + } + + gtk_tree_model_get (model, &iter, 0, &servname, -1); + serv = servlist_server_find (selected_net, servname, NULL); + g_free (servname); + + if (serv) + { + /* delete empty item */ + if (newval[0] == 0) + { + servlist_deleteserver (serv, model); + return; + } + + servname = serv->hostname; + serv->hostname = servlist_sanitize_hostname (newval); + gtk_list_store_set (GTK_LIST_STORE (model), &iter, 0, serv->hostname, -1); + g_free (servname); + } +} + +static void +servlist_editcommand_cb (GtkCellRendererText *cell, gchar *name, gchar *newval, gpointer user_data) +{ + GtkTreeModel *model = (GtkTreeModel *)user_data; + GtkTreeIter iter; + char *cmd; + commandentry *entry; + + if (!selected_net) + { + return; + } + + if (!servlist_get_iter_from_name (model, name, &iter)) + { + return; + } + + gtk_tree_model_get (model, &iter, 0, &cmd, -1); + entry = servlist_command_find (selected_net, cmd, NULL); + g_free (cmd); + + if (entry) + { + /* delete empty item */ + if (newval[0] == 0) + { + servlist_deletecommand (entry, model); + return; + } + + cmd = entry->command; + entry->command = servlist_sanitize_command (newval); + gtk_list_store_set (GTK_LIST_STORE (model), &iter, 0, entry->command, -1); + g_free (cmd); + } +} + +static void +servlist_editchannel_cb (GtkCellRendererText *cell, gchar *name, gchar *newval, gpointer user_data) +{ + GtkTreeModel *model = (GtkTreeModel *)user_data; + GtkTreeIter iter; + char *chan; + char *key; + favchannel *favchan; + + if (!selected_net) + { + return; + } + + if (!servlist_get_iter_from_name (model, name, &iter)) + { + return; + } + + gtk_tree_model_get (model, &iter, 0, &chan, 1, &key, -1); + favchan = servlist_favchan_find (selected_net, chan, NULL); + g_free (chan); + + if (favchan) + { + /* delete empty item */ + if (newval[0] == 0) + { + servlist_deletechannel (favchan, model); + return; + } + + chan = favchan->name; + favchan->name = g_strdup (newval); + gtk_list_store_set (GTK_LIST_STORE (model), &iter, 0, favchan->name, -1); + g_free (chan); + } +} + +static void +servlist_editkey_cb (GtkCellRendererText *cell, gchar *name, gchar *newval, gpointer user_data) +{ + GtkTreeModel *model = (GtkTreeModel *)user_data; + GtkTreeIter iter; + char *chan; + char *key; + favchannel *favchan; + + if (!selected_net) + { + return; + } + + if (!servlist_get_iter_from_name (model, name, &iter)) + { + return; + } + + gtk_tree_model_get (model, &iter, 0, &chan, 1, &key, -1); + favchan = servlist_favchan_find (selected_net, chan, NULL); + g_free (chan); + + if (favchan) + { + key = favchan->key; + + if (strlen (newval)) /* check key length, the field can be empty in order to delete the key! */ + { + favchan->key = g_strdup (newval); + } + else /* if key's empty, make sure we actually remove the key */ + { + favchan->key = NULL; + } + + gtk_list_store_set (GTK_LIST_STORE (model), &iter, 1, favchan->key, -1); + g_free (key); + } +} + +static gboolean +servlist_edit_tabswitch_cb (GtkNotebook *nb, gpointer *newtab, guint newindex, gpointer user_data) +{ + /* remember the active tab */ + netedit_active_tab = newindex; + + return FALSE; +} + +static void +servlist_combo_cb (GtkEntry *entry, gpointer userdata) +{ + if (!selected_net) + return; + + g_free (selected_net->encoding); + selected_net->encoding = g_strdup (gtk_entry_get_text (entry)); +} + +/* Fills up the network's authentication type so that it's guaranteed to be either NULL or a valid value. */ +static void +servlist_logintypecombo_cb (GtkComboBox *cb, gpointer *userdata) +{ + int index; + + if (!selected_net) + { + return; + } + + index = gtk_combo_box_get_active (cb); /* starts at 0, returns -1 for invalid selections */ + + if (index == -1) + return; /* Invalid */ + + /* The selection is valid. It can be 0, which is the default type, but we need to allow + * that so that you can revert from other types. servlist_save() will dump 0 anyway. + */ + selected_net->logintype = login_types_conf[index]; + + if (login_types_conf[index] == LOGIN_CUSTOM) + { + gtk_notebook_set_current_page (GTK_NOTEBOOK (userdata), 2); /* FIXME avoid hardcoding? */ + } + + /* EXTERNAL uses a cert, not a pass */ + if (login_types_conf[index] == LOGIN_SASLEXTERNAL) + gtk_widget_set_sensitive (edit_entry_pass, FALSE); + else + gtk_widget_set_sensitive (edit_entry_pass, TRUE); +} + +static void +servlist_username_changed_cb (GtkEntry *entry, gpointer userdata) +{ + GtkWidget *connect_btn = GTK_WIDGET (userdata); + + if (gtk_entry_get_text (entry)[0] == 0) + { + gtk_entry_set_icon_from_stock (entry, GTK_ENTRY_ICON_SECONDARY, GTK_STOCK_DIALOG_ERROR); + gtk_entry_set_icon_tooltip_text (entry, GTK_ENTRY_ICON_SECONDARY, + _("User name cannot be left blank.")); + gtk_widget_set_sensitive (connect_btn, FALSE); + } + else + { + gtk_entry_set_icon_from_stock (entry, GTK_ENTRY_ICON_SECONDARY, NULL); + gtk_widget_set_sensitive (connect_btn, TRUE); + } +} + +static void +servlist_nick_changed_cb (GtkEntry *entry, gpointer userdata) +{ + GtkWidget *connect_btn = GTK_WIDGET (userdata); + const gchar *nick1 = gtk_entry_get_text (GTK_ENTRY (entry_nick1)); + const gchar *nick2 = gtk_entry_get_text (GTK_ENTRY (entry_nick2)); + + if (!nick1[0] || !nick2[0]) + { + entry = GTK_ENTRY(!nick1[0] ? entry_nick1 : entry_nick2); + gtk_entry_set_icon_from_stock (entry, GTK_ENTRY_ICON_SECONDARY, GTK_STOCK_DIALOG_ERROR); + gtk_entry_set_icon_tooltip_text (entry, GTK_ENTRY_ICON_SECONDARY, + _("You cannot have an empty nick name.")); + gtk_widget_set_sensitive (connect_btn, FALSE); + } + else if (!rfc_casecmp (nick1, nick2)) + { + gtk_entry_set_icon_from_stock (entry, GTK_ENTRY_ICON_SECONDARY, GTK_STOCK_DIALOG_ERROR); + gtk_entry_set_icon_tooltip_text (entry, GTK_ENTRY_ICON_SECONDARY, + _("You must have two unique nick names.")); + gtk_widget_set_sensitive (connect_btn, FALSE); + } + else + { + gtk_entry_set_icon_from_stock (GTK_ENTRY(entry_nick1), GTK_ENTRY_ICON_SECONDARY, NULL); + gtk_entry_set_icon_from_stock (GTK_ENTRY(entry_nick2), GTK_ENTRY_ICON_SECONDARY, NULL); + gtk_widget_set_sensitive (connect_btn, TRUE); + } +} + +static GtkWidget * +servlist_create_charsetcombo (void) +{ + GtkWidget *cb; + int i; + + cb = gtk_combo_box_text_new_with_entry (); + i = 0; + while (pages[i]) + { + gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (cb), (char *)pages[i]); + i++; + } + + gtk_entry_set_text (GTK_ENTRY (gtk_bin_get_child (GTK_BIN(cb))), selected_net->encoding ? selected_net->encoding : pages[0]); + + g_signal_connect (G_OBJECT (gtk_bin_get_child (GTK_BIN (cb))), "changed", + G_CALLBACK (servlist_combo_cb), NULL); + + return cb; +} + +static GtkWidget * +servlist_create_logintypecombo (GtkWidget *data) +{ + GtkWidget *cb; + int i; + + cb = gtk_combo_box_text_new (); + + i = 0; + + while (login_types[i]) + { + gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (cb), (char *)login_types[i]); + i++; + } + + gtk_combo_box_set_active (GTK_COMBO_BOX (cb), servlist_get_login_desc_index (selected_net->logintype)); + + gtk_widget_set_tooltip_text (cb, _("The way you identify yourself to the server. For custom login methods use connect commands.")); + g_signal_connect (G_OBJECT (GTK_BIN (cb)), "changed", G_CALLBACK (servlist_logintypecombo_cb), data); + + return cb; +} + +static void +no_servlist (GtkWidget * igad, gpointer serv) +{ + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (igad))) + prefs.hex_gui_slist_skip = TRUE; + else + prefs.hex_gui_slist_skip = FALSE; +} + +static void +fav_servlist (GtkWidget * igad, gpointer serv) +{ + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (igad))) + prefs.hex_gui_slist_fav = TRUE; + else + prefs.hex_gui_slist_fav = FALSE; + + servlist_networks_populate (networks_tree, network_list); +} + +static GtkWidget * +bold_label (char *text) +{ + char buf[128]; + GtkWidget *label; + + g_snprintf (buf, sizeof (buf), "<b>%s</b>", text); + label = gtk_label_new (buf); + gtk_label_set_use_markup (GTK_LABEL (label), TRUE); + gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); + gtk_widget_show (label); + + return label; +} + +static GtkWidget * +servlist_open_edit (GtkWidget *parent, ircnet *net) +{ + GtkWidget *editwindow; + GtkWidget *vbox5; + GtkWidget *table3; + GtkWidget *label34; + GtkWidget *label_logintype; + GtkWidget *comboboxentry_charset; + GtkWidget *combobox_logintypes; + GtkWidget *hbox1; + GtkWidget *scrolledwindow2; + GtkWidget *scrolledwindow4; + GtkWidget *scrolledwindow5; + GtkWidget *treeview_servers; + GtkWidget *treeview_channels; + GtkWidget *treeview_commands; + GtkWidget *vbuttonbox1; + GtkWidget *buttonadd; + GtkWidget *buttonremove; + GtkWidget *buttonedit; + GtkWidget *hseparator2; + GtkWidget *hbuttonbox4; + GtkWidget *button10; + GtkWidget *check; + GtkWidget *notebook; + GtkTreeModel *model; + GtkListStore *store; + GtkCellRenderer *renderer; + char buf[128]; + + editwindow = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_container_set_border_width (GTK_CONTAINER (editwindow), 4); + g_snprintf (buf, sizeof (buf), _("Edit %s - %s"), net->name, _(DISPLAY_NAME)); + gtk_window_set_title (GTK_WINDOW (editwindow), buf); + gtk_window_set_default_size (GTK_WINDOW (editwindow), netedit_win_width, netedit_win_height); + gtk_window_set_transient_for (GTK_WINDOW (editwindow), GTK_WINDOW (parent)); + gtk_window_set_modal (GTK_WINDOW (editwindow), TRUE); + gtk_window_set_type_hint (GTK_WINDOW (editwindow), GDK_WINDOW_TYPE_HINT_DIALOG); + gtk_window_set_role (GTK_WINDOW (editwindow), "editserv"); + + vbox5 = gtk_vbox_new (FALSE, 0); + gtk_container_add (GTK_CONTAINER (editwindow), vbox5); + + + /* Tabs and buttons */ + hbox1 = gtk_hbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (vbox5), hbox1, TRUE, TRUE, 4); + + scrolledwindow2 = gtk_scrolled_window_new (NULL, NULL); + scrolledwindow4 = gtk_scrolled_window_new (NULL, NULL); + scrolledwindow5 = gtk_scrolled_window_new (NULL, NULL); + + notebook = gtk_notebook_new (); + gtk_notebook_append_page (GTK_NOTEBOOK (notebook), scrolledwindow2, gtk_label_new (_("Servers"))); + gtk_notebook_append_page (GTK_NOTEBOOK (notebook), scrolledwindow4, gtk_label_new (_("Autojoin channels"))); + gtk_notebook_append_page (GTK_NOTEBOOK (notebook), scrolledwindow5, gtk_label_new (_("Connect commands"))); + gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook), GTK_POS_BOTTOM); + gtk_box_pack_start (GTK_BOX (hbox1), notebook, TRUE, TRUE, SERVLIST_X_PADDING); + + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow2), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow2), GTK_SHADOW_IN); + + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow4), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow4), GTK_SHADOW_IN); + + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow5), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow5), GTK_SHADOW_IN); + gtk_widget_set_tooltip_text (scrolledwindow5, _("%n=Nick name\n%p=Password\n%r=Real name\n%u=User name")); + + + /* Server Tree */ + store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_BOOLEAN); + model = GTK_TREE_MODEL (store); + + edit_trees[SERVER_TREE] = treeview_servers = gtk_tree_view_new_with_model (model); + g_signal_connect (G_OBJECT (treeview_servers), "key_press_event", + G_CALLBACK (servlist_keypress_cb), notebook); + g_signal_connect (G_OBJECT (gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview_servers))), + "changed", G_CALLBACK (servlist_server_row_cb), NULL); + g_object_unref (model); + gtk_container_add (GTK_CONTAINER (scrolledwindow2), treeview_servers); + gtk_widget_set_size_request (treeview_servers, -1, 80); + gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeview_servers), + FALSE); + + renderer = gtk_cell_renderer_text_new (); + g_signal_connect (G_OBJECT (renderer), "edited", + G_CALLBACK (servlist_editserver_cb), model); + gtk_tree_view_insert_column_with_attributes ( + GTK_TREE_VIEW (treeview_servers), -1, + 0, renderer, + "text", 0, + "editable", 1, + NULL); + + /* Channel Tree */ + store = gtk_list_store_new (3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN); + model = GTK_TREE_MODEL (store); + + edit_trees[CHANNEL_TREE] = treeview_channels = gtk_tree_view_new_with_model (model); + g_signal_connect (G_OBJECT (treeview_channels), "key_press_event", + G_CALLBACK (servlist_keypress_cb), notebook); + g_signal_connect (G_OBJECT (gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview_channels))), + "changed", G_CALLBACK (servlist_channel_row_cb), NULL); + g_object_unref (model); + gtk_container_add (GTK_CONTAINER (scrolledwindow4), treeview_channels); + gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeview_channels), TRUE); + + renderer = gtk_cell_renderer_text_new (); + g_signal_connect (G_OBJECT (renderer), "edited", + G_CALLBACK (servlist_editchannel_cb), model); + gtk_tree_view_insert_column_with_attributes ( + GTK_TREE_VIEW (treeview_channels), -1, + _("Channel"), renderer, + "text", 0, + "editable", 2, + NULL); + + renderer = gtk_cell_renderer_text_new (); + g_signal_connect (G_OBJECT (renderer), "edited", + G_CALLBACK (servlist_editkey_cb), model); + gtk_tree_view_insert_column_with_attributes ( + GTK_TREE_VIEW (treeview_channels), -1, + _("Key (Password)"), renderer, + "text", 1, + "editable", 2, + NULL); + + gtk_tree_view_column_set_expand (gtk_tree_view_get_column (GTK_TREE_VIEW (treeview_channels), 0), TRUE); + gtk_tree_view_column_set_expand (gtk_tree_view_get_column (GTK_TREE_VIEW (treeview_channels), 1), TRUE); + + + /* Command Tree */ + store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_BOOLEAN); + model = GTK_TREE_MODEL (store); + + edit_trees[CMD_TREE] = treeview_commands = gtk_tree_view_new_with_model (model); + g_signal_connect (G_OBJECT (treeview_commands), "key_press_event", + G_CALLBACK (servlist_keypress_cb), notebook); + g_signal_connect (G_OBJECT (gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview_commands))), + "changed", G_CALLBACK (servlist_command_row_cb), NULL); + g_object_unref (model); + gtk_container_add (GTK_CONTAINER (scrolledwindow5), treeview_commands); + gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeview_commands), + FALSE); + + renderer = gtk_cell_renderer_text_new (); + g_signal_connect (G_OBJECT (renderer), "edited", + G_CALLBACK (servlist_editcommand_cb), model); + gtk_tree_view_insert_column_with_attributes ( + GTK_TREE_VIEW (treeview_commands), -1, + 0, renderer, + "text", 0, + "editable", 1, + NULL); + + + /* Button Box */ + vbuttonbox1 = gtk_vbutton_box_new (); + gtk_box_set_spacing (GTK_BOX (vbuttonbox1), 3); + gtk_button_box_set_layout (GTK_BUTTON_BOX (vbuttonbox1), GTK_BUTTONBOX_START); + gtk_box_pack_start (GTK_BOX (hbox1), vbuttonbox1, FALSE, FALSE, 3); + + buttonadd = gtk_button_new_from_stock ("gtk-add"); + g_signal_connect (G_OBJECT (buttonadd), "clicked", + G_CALLBACK (servlist_addbutton_cb), notebook); + gtk_container_add (GTK_CONTAINER (vbuttonbox1), buttonadd); + gtk_widget_set_can_default (buttonadd, TRUE); + + buttonremove = gtk_button_new_from_stock ("gtk-remove"); + g_signal_connect (G_OBJECT (buttonremove), "clicked", + G_CALLBACK (servlist_deletebutton_cb), notebook); + gtk_container_add (GTK_CONTAINER (vbuttonbox1), buttonremove); + gtk_widget_set_can_default (buttonremove, TRUE); + + buttonedit = gtk_button_new_with_mnemonic (_("_Edit")); + g_signal_connect (G_OBJECT (buttonedit), "clicked", + G_CALLBACK (servlist_editbutton_cb), notebook); + gtk_container_add (GTK_CONTAINER (vbuttonbox1), buttonedit); + gtk_widget_set_can_default (buttonedit, TRUE); + + + /* Checkboxes and entries */ + table3 = gtk_table_new (13, 2, FALSE); + gtk_box_pack_start (GTK_BOX (vbox5), table3, FALSE, FALSE, 0); + gtk_table_set_row_spacings (GTK_TABLE (table3), 2); + gtk_table_set_col_spacings (GTK_TABLE (table3), 8); + + check = servlist_create_check (0, !(net->flags & FLAG_CYCLE), table3, 0, 0, _("Connect to selected server only")); + gtk_widget_set_tooltip_text (check, _("Don't cycle through all the servers when the connection fails.")); + servlist_create_check (3, net->flags & FLAG_AUTO_CONNECT, table3, 1, 0, _("Connect to this network automatically")); + servlist_create_check (4, !(net->flags & FLAG_USE_PROXY), table3, 2, 0, _("Bypass proxy server")); + check = servlist_create_check (2, net->flags & FLAG_USE_SSL, table3, 3, 0, _("Use SSL for all the servers on this network")); +#ifndef USE_OPENSSL + gtk_widget_set_sensitive (check, FALSE); +#endif + check = servlist_create_check (5, net->flags & FLAG_ALLOW_INVALID, table3, 4, 0, _("Accept invalid SSL certificates")); +#ifndef USE_OPENSSL + gtk_widget_set_sensitive (check, FALSE); +#endif + servlist_create_check (1, net->flags & FLAG_USE_GLOBAL, table3, 5, 0, _("Use global user information")); + + edit_entry_nick = servlist_create_entry (table3, _("_Nick name:"), 6, net->nick, &edit_label_nick, 0); + edit_entry_nick2 = servlist_create_entry (table3, _("Second choice:"), 7, net->nick2, &edit_label_nick2, 0); + edit_entry_real = servlist_create_entry (table3, _("Rea_l name:"), 8, net->real, &edit_label_real, 0); + edit_entry_user = servlist_create_entry (table3, _("_User name:"), 9, net->user, &edit_label_user, 0); + + label_logintype = gtk_label_new (_("Login method:")); + gtk_table_attach (GTK_TABLE (table3), label_logintype, 0, 1, 10, 11, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), SERVLIST_X_PADDING, SERVLIST_Y_PADDING); + gtk_misc_set_alignment (GTK_MISC (label_logintype), 0, 0.5); + combobox_logintypes = servlist_create_logintypecombo (notebook); + gtk_table_attach (GTK_TABLE (table3), combobox_logintypes, 1, 2, 10, 11, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 4, 2); + + edit_entry_pass = servlist_create_entry (table3, _("Password:"), 11, net->pass, 0, _("Password used for login. If in doubt, leave blank.")); + gtk_entry_set_visibility (GTK_ENTRY (edit_entry_pass), FALSE); + if (selected_net && selected_net->logintype == LOGIN_SASLEXTERNAL) + gtk_widget_set_sensitive (edit_entry_pass, FALSE); + + label34 = gtk_label_new (_("Character set:")); + gtk_table_attach (GTK_TABLE (table3), label34, 0, 1, 12, 13, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), SERVLIST_X_PADDING, SERVLIST_Y_PADDING); + gtk_misc_set_alignment (GTK_MISC (label34), 0, 0.5); + comboboxentry_charset = servlist_create_charsetcombo (); + gtk_table_attach (GTK_TABLE (table3), comboboxentry_charset, 1, 2, 12, 13, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 4, 2); + + + /* Rule and Close button */ + hseparator2 = gtk_hseparator_new (); + gtk_box_pack_start (GTK_BOX (vbox5), hseparator2, FALSE, FALSE, 8); + + hbuttonbox4 = gtk_hbutton_box_new (); + gtk_box_pack_start (GTK_BOX (vbox5), hbuttonbox4, FALSE, FALSE, 0); + gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox4), GTK_BUTTONBOX_END); + + button10 = gtk_button_new_from_stock ("gtk-close"); + g_signal_connect (G_OBJECT (button10), "clicked", + G_CALLBACK (servlist_edit_close_cb), 0); + gtk_container_add (GTK_CONTAINER (hbuttonbox4), button10); + gtk_widget_set_can_default (button10, TRUE); + + if (net->flags & FLAG_USE_GLOBAL) + { + servlist_toggle_global_user (FALSE); + } + + gtk_widget_grab_focus (button10); + gtk_widget_grab_default (button10); + + gtk_widget_show_all (editwindow); + + /* We can't set the active tab without child elements being shown, so this must be *after* gtk_widget_show()s! */ + gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), netedit_active_tab); + + /* We need to connect this *after* setting the active tab so that the value doesn't get overriden. */ + g_signal_connect (G_OBJECT (notebook), "switch-page", G_CALLBACK (servlist_edit_tabswitch_cb), notebook); + + return editwindow; +} + +static GtkWidget * +servlist_open_networks (void) +{ + GtkWidget *servlist; + GtkWidget *vbox1; + GtkWidget *label2; + GtkWidget *table1; + GtkWidget *label3; + GtkWidget *label4; + GtkWidget *label5; + GtkWidget *label6; + /* GtkWidget *label7; */ + GtkWidget *entry1; + GtkWidget *entry2; + GtkWidget *entry3; + GtkWidget *entry4; + /* GtkWidget *entry5; */ + GtkWidget *vbox2; + GtkWidget *label1; + GtkWidget *table4; + GtkWidget *scrolledwindow3; + GtkWidget *treeview_networks; + GtkWidget *checkbutton_skip; + GtkWidget *checkbutton_fav; + GtkWidget *hbox; + GtkWidget *vbuttonbox2; + GtkWidget *button_add; + GtkWidget *button_remove; + GtkWidget *button_edit; + GtkWidget *button_sort; + GtkWidget *hseparator1; + GtkWidget *hbuttonbox1; + GtkWidget *button_connect; + GtkWidget *button_close; + GtkTreeModel *model; + GtkListStore *store; + GtkCellRenderer *renderer; + char buf[128]; + + servlist = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_container_set_border_width (GTK_CONTAINER (servlist), 4); + g_snprintf(buf, sizeof(buf), _("Network List - %s"), _(DISPLAY_NAME)); + gtk_window_set_title (GTK_WINDOW (servlist), buf); + gtk_window_set_default_size (GTK_WINDOW (servlist), netlist_win_width, netlist_win_height); + gtk_window_set_role (GTK_WINDOW (servlist), "servlist"); + gtk_window_set_type_hint (GTK_WINDOW (servlist), GDK_WINDOW_TYPE_HINT_DIALOG); + if (current_sess) + gtk_window_set_transient_for (GTK_WINDOW (servlist), GTK_WINDOW (current_sess->gui->window)); + + vbox1 = gtk_vbox_new (FALSE, 0); + gtk_widget_show (vbox1); + gtk_container_add (GTK_CONTAINER (servlist), vbox1); + + label2 = bold_label (_("User Information")); + gtk_box_pack_start (GTK_BOX (vbox1), label2, FALSE, FALSE, 0); + + table1 = gtk_table_new (5, 2, FALSE); + gtk_widget_show (table1); + gtk_box_pack_start (GTK_BOX (vbox1), table1, FALSE, FALSE, 0); + gtk_container_set_border_width (GTK_CONTAINER (table1), 8); + gtk_table_set_row_spacings (GTK_TABLE (table1), 2); + gtk_table_set_col_spacings (GTK_TABLE (table1), 4); + + label3 = gtk_label_new_with_mnemonic (_("_Nick name:")); + gtk_widget_show (label3); + gtk_table_attach (GTK_TABLE (table1), label3, 0, 1, 0, 1, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment (GTK_MISC (label3), 0, 0.5); + + label4 = gtk_label_new (_("Second choice:")); + gtk_widget_show (label4); + gtk_table_attach (GTK_TABLE (table1), label4, 0, 1, 1, 2, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment (GTK_MISC (label4), 0, 0.5); + + label5 = gtk_label_new (_("Third choice:")); + gtk_widget_show (label5); + gtk_table_attach (GTK_TABLE (table1), label5, 0, 1, 2, 3, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment (GTK_MISC (label5), 0, 0.5); + + label6 = gtk_label_new_with_mnemonic (_("_User name:")); + gtk_widget_show (label6); + gtk_table_attach (GTK_TABLE (table1), label6, 0, 1, 3, 4, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment (GTK_MISC (label6), 0, 0.5); + + /* label7 = gtk_label_new_with_mnemonic (_("Rea_l name:")); + gtk_widget_show (label7); + gtk_table_attach (GTK_TABLE (table1), label7, 0, 1, 4, 5, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment (GTK_MISC (label7), 0, 0.5);*/ + + entry_nick1 = entry1 = gtk_entry_new (); + gtk_entry_set_text (GTK_ENTRY (entry1), prefs.hex_irc_nick1); + gtk_widget_show (entry1); + gtk_table_attach (GTK_TABLE (table1), entry1, 1, 2, 0, 1, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + entry_nick2 = entry2 = gtk_entry_new (); + gtk_entry_set_text (GTK_ENTRY (entry2), prefs.hex_irc_nick2); + gtk_widget_show (entry2); + gtk_table_attach (GTK_TABLE (table1), entry2, 1, 2, 1, 2, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + entry_nick3 = entry3 = gtk_entry_new (); + gtk_entry_set_text (GTK_ENTRY (entry3), prefs.hex_irc_nick3); + gtk_widget_show (entry3); + gtk_table_attach (GTK_TABLE (table1), entry3, 1, 2, 2, 3, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + entry_guser = entry4 = gtk_entry_new (); + gtk_entry_set_text (GTK_ENTRY (entry4), prefs.hex_irc_user_name); + gtk_widget_show (entry4); + gtk_table_attach (GTK_TABLE (table1), entry4, 1, 2, 3, 4, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + /* entry_greal = entry5 = gtk_entry_new (); + gtk_entry_set_text (GTK_ENTRY (entry5), prefs.hex_irc_real_name); + gtk_widget_show (entry5); + gtk_table_attach (GTK_TABLE (table1), entry5, 1, 2, 4, 5, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); */ + + vbox2 = gtk_vbox_new (FALSE, 0); + gtk_widget_show (vbox2); + gtk_box_pack_start (GTK_BOX (vbox1), vbox2, TRUE, TRUE, 0); + + label1 = bold_label (_("Networks")); + gtk_box_pack_start (GTK_BOX (vbox2), label1, FALSE, FALSE, 0); + + table4 = gtk_table_new (2, 2, FALSE); + gtk_widget_show (table4); + gtk_box_pack_start (GTK_BOX (vbox2), table4, TRUE, TRUE, 0); + gtk_container_set_border_width (GTK_CONTAINER (table4), 8); + gtk_table_set_row_spacings (GTK_TABLE (table4), 2); + gtk_table_set_col_spacings (GTK_TABLE (table4), 3); + + scrolledwindow3 = gtk_scrolled_window_new (NULL, NULL); + gtk_widget_show (scrolledwindow3); + gtk_table_attach (GTK_TABLE (table4), scrolledwindow3, 0, 1, 0, 1, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow3), + GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow3), + GTK_SHADOW_IN); + + store = gtk_list_store_new (3, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_INT); + model = GTK_TREE_MODEL (store); + + networks_tree = treeview_networks = gtk_tree_view_new_with_model (model); + g_object_unref (model); + gtk_widget_show (treeview_networks); + gtk_container_add (GTK_CONTAINER (scrolledwindow3), treeview_networks); + gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeview_networks), + FALSE); + + renderer = gtk_cell_renderer_text_new (); + g_signal_connect (G_OBJECT (renderer), "edited", + G_CALLBACK (servlist_celledit_cb), model); + gtk_tree_view_insert_column_with_attributes ( + GTK_TREE_VIEW (treeview_networks), -1, + 0, renderer, + "text", 0, + "editable", 1, + "weight", 2, + NULL); + + hbox = gtk_hbox_new (0, FALSE); + gtk_table_attach (GTK_TABLE (table4), hbox, 0, 2, 1, 2, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_widget_show (hbox); + + checkbutton_skip = + gtk_check_button_new_with_mnemonic (_("Skip network list on startup")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton_skip), + prefs.hex_gui_slist_skip); + gtk_container_add (GTK_CONTAINER (hbox), checkbutton_skip); + g_signal_connect (G_OBJECT (checkbutton_skip), "toggled", + G_CALLBACK (no_servlist), 0); + gtk_widget_show (checkbutton_skip); + + checkbutton_fav = + gtk_check_button_new_with_mnemonic (_("Show favorites only")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton_fav), + prefs.hex_gui_slist_fav); + gtk_container_add (GTK_CONTAINER (hbox), checkbutton_fav); + g_signal_connect (G_OBJECT (checkbutton_fav), "toggled", + G_CALLBACK (fav_servlist), 0); + gtk_widget_show (checkbutton_fav); + + vbuttonbox2 = gtk_vbutton_box_new (); + gtk_box_set_spacing (GTK_BOX (vbuttonbox2), 3); + gtk_button_box_set_layout (GTK_BUTTON_BOX (vbuttonbox2), GTK_BUTTONBOX_START); + gtk_widget_show (vbuttonbox2); + gtk_table_attach (GTK_TABLE (table4), vbuttonbox2, 1, 2, 0, 1, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (GTK_FILL), 0, 0); + + button_add = gtk_button_new_from_stock ("gtk-add"); + g_signal_connect (G_OBJECT (button_add), "clicked", + G_CALLBACK (servlist_addnet_cb), networks_tree); + gtk_widget_show (button_add); + gtk_container_add (GTK_CONTAINER (vbuttonbox2), button_add); + gtk_widget_set_can_default (button_add, TRUE); + + button_remove = gtk_button_new_from_stock ("gtk-remove"); + g_signal_connect (G_OBJECT (button_remove), "clicked", + G_CALLBACK (servlist_deletenet_cb), 0); + gtk_widget_show (button_remove); + gtk_container_add (GTK_CONTAINER (vbuttonbox2), button_remove); + gtk_widget_set_can_default (button_remove, TRUE); + + button_edit = gtk_button_new_with_mnemonic (_("_Edit...")); + g_signal_connect (G_OBJECT (button_edit), "clicked", + G_CALLBACK (servlist_edit_cb), 0); + gtk_widget_show (button_edit); + gtk_container_add (GTK_CONTAINER (vbuttonbox2), button_edit); + gtk_widget_set_can_default (button_edit, TRUE); + + button_sort = gtk_button_new_with_mnemonic (_("_Sort")); + gtk_widget_set_tooltip_text (button_sort, _("Sorts the network list in alphabetical order. " + "Use Shift+Up and Shift+Down keys to move a row.")); + g_signal_connect (G_OBJECT (button_sort), "clicked", + G_CALLBACK (servlist_sort), 0); + gtk_widget_show (button_sort); + gtk_container_add (GTK_CONTAINER (vbuttonbox2), button_sort); + gtk_widget_set_can_default (button_sort, TRUE); + + button_sort = gtk_button_new_with_mnemonic (_("_Favor")); + gtk_widget_set_tooltip_text (button_sort, _("Mark or unmark this network as a favorite.")); + g_signal_connect (G_OBJECT (button_sort), "clicked", + G_CALLBACK (servlist_favor), 0); + gtk_widget_show (button_sort); + gtk_container_add (GTK_CONTAINER (vbuttonbox2), button_sort); + gtk_widget_set_can_default (button_sort, TRUE); + + hseparator1 = gtk_hseparator_new (); + gtk_widget_show (hseparator1); + gtk_box_pack_start (GTK_BOX (vbox1), hseparator1, FALSE, TRUE, 4); + + hbuttonbox1 = gtk_hbutton_box_new (); + gtk_widget_show (hbuttonbox1); + gtk_box_pack_start (GTK_BOX (vbox1), hbuttonbox1, FALSE, TRUE, 0); + gtk_container_set_border_width (GTK_CONTAINER (hbuttonbox1), 8); + + button_close = gtk_button_new_from_stock ("gtk-close"); + gtk_widget_show (button_close); + g_signal_connect (G_OBJECT (button_close), "clicked", + G_CALLBACK (servlist_close_cb), 0); + gtk_container_add (GTK_CONTAINER (hbuttonbox1), button_close); + gtk_widget_set_can_default (button_close, TRUE); + + button_connect = gtkutil_button (hbuttonbox1, GTK_STOCK_CONNECT, NULL, + servlist_connect_cb, NULL, _("C_onnect")); + gtk_widget_set_can_default (button_connect, TRUE); + + g_signal_connect (G_OBJECT (entry_guser), "changed", + G_CALLBACK(servlist_username_changed_cb), button_connect); + g_signal_connect (G_OBJECT (entry_nick1), "changed", + G_CALLBACK(servlist_nick_changed_cb), button_connect); + g_signal_connect (G_OBJECT (entry_nick2), "changed", + G_CALLBACK(servlist_nick_changed_cb), button_connect); + + /* Run validity checks now */ + servlist_nick_changed_cb (GTK_ENTRY(entry_nick2), button_connect); + servlist_username_changed_cb (GTK_ENTRY(entry_guser), button_connect); + + gtk_label_set_mnemonic_widget (GTK_LABEL (label3), entry1); + gtk_label_set_mnemonic_widget (GTK_LABEL (label6), entry4); + /* gtk_label_set_mnemonic_widget (GTK_LABEL (label7), entry5); */ + + gtk_widget_grab_focus (networks_tree); + gtk_widget_grab_default (button_close); + return servlist; +} + +void +fe_serverlist_open (session *sess) +{ + if (serverlist_win) + { + gtk_window_present (GTK_WINDOW (serverlist_win)); + return; + } + + servlist_sess = sess; + + serverlist_win = servlist_open_networks (); + gtkutil_set_icon (serverlist_win); + + servlist_networks_populate (networks_tree, network_list); + + g_signal_connect (G_OBJECT (serverlist_win), "delete_event", + G_CALLBACK (servlist_delete_cb), 0); + g_signal_connect (G_OBJECT (serverlist_win), "configure_event", + G_CALLBACK (servlist_configure_cb), 0); + g_signal_connect (G_OBJECT (gtk_tree_view_get_selection (GTK_TREE_VIEW (networks_tree))), + "changed", G_CALLBACK (servlist_network_row_cb), NULL); + g_signal_connect (G_OBJECT (networks_tree), "key_press_event", + G_CALLBACK (servlist_net_keypress_cb), networks_tree); + + gtk_widget_show (serverlist_win); +} diff --git a/hexchat/src/fe-gtk/servlistgui.h b/hexchat/src/fe-gtk/servlistgui.h new file mode 100644 index 0000000..ca176a3 --- /dev/null +++ b/hexchat/src/fe-gtk/servlistgui.h @@ -0,0 +1,25 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_SERVLISTGUI_H +#define HEXCHAT_SERVLISTGUI_H + +void servlist_autojoinedit (ircnet *net, char *channel, gboolean add); + +#endif diff --git a/hexchat/src/fe-gtk/setup.c b/hexchat/src/fe-gtk/setup.c new file mode 100644 index 0000000..0e1dfde --- /dev/null +++ b/hexchat/src/fe-gtk/setup.c @@ -0,0 +1,2359 @@ +/* X-Chat + * Copyright (C) 2004-2007 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/stat.h> +#include <sys/types.h> + +#include "../common/hexchat.h" +#include "../common/cfgfiles.h" +#include "../common/fe.h" +#include "../common/text.h" +#include "../common/userlist.h" +#include "../common/util.h" +#include "../common/hexchatc.h" +#include "../common/outbound.h" +#include "fe-gtk.h" +#include "gtkutil.h" +#include "maingui.h" +#include "palette.h" +#include "pixmaps.h" +#include "menu.h" +#include "plugin-tray.h" +#include "notifications/notification-backend.h" + +#ifdef WIN32 +#include "../common/fe.h" +#endif +#include "sexy-spell-entry.h" + +GtkStyle *create_input_style (GtkStyle *); + +#define LABEL_INDENT 12 + +static GtkWidget *setup_window = NULL; +static int last_selected_page = 0; +static int last_selected_row = 0; /* sound row */ +static gboolean color_change; +static struct hexchatprefs setup_prefs; +static GtkWidget *cancel_button; +static GtkWidget *font_dialog = NULL; + +enum +{ + ST_END, + ST_TOGGLE, + ST_TOGGLR, + ST_3OGGLE, + ST_ENTRY, + ST_EFONT, + ST_EFILE, + ST_EFOLDER, + ST_MENU, + ST_RADIO, + ST_NUMBER, + ST_HSCALE, + ST_HEADER, + ST_LABEL, + ST_ALERTHEAD +}; + +typedef struct +{ + int type; + char *label; + int offset; + char *tooltip; + char const *const *list; + int extra; +} setting; + +#ifdef WIN32 +static const char *const langsmenu[] = +{ + N_("Afrikaans"), + N_("Albanian"), + N_("Amharic"), + N_("Asturian"), + N_("Azerbaijani"), + N_("Basque"), + N_("Belarusian"), + N_("Bulgarian"), + N_("Catalan"), + N_("Chinese (Simplified)"), + N_("Chinese (Traditional)"), + N_("Czech"), + N_("Danish"), + N_("Dutch"), + N_("English (British)"), + N_("English"), + N_("Estonian"), + N_("Finnish"), + N_("French"), + N_("Galician"), + N_("German"), + N_("Greek"), + N_("Gujarati"), + N_("Hindi"), + N_("Hungarian"), + N_("Indonesian"), + N_("Italian"), + N_("Japanese"), + N_("Kannada"), + N_("Kinyarwanda"), + N_("Korean"), + N_("Latvian"), + N_("Lithuanian"), + N_("Macedonian"), + N_("Malay"), + N_("Malayalam"), + N_("Norwegian (Bokmal)"), + N_("Norwegian (Nynorsk)"), + N_("Polish"), + N_("Portuguese"), + N_("Portuguese (Brazilian)"), + N_("Punjabi"), + N_("Russian"), + N_("Serbian"), + N_("Slovak"), + N_("Slovenian"), + N_("Spanish"), + N_("Swedish"), + N_("Thai"), + N_("Turkish"), + N_("Ukrainian"), + N_("Vietnamese"), + N_("Walloon"), + NULL +}; +#endif + +static const setting appearance_settings[] = +{ + {ST_HEADER, N_("General"),0,0,0}, +#ifdef WIN32 + {ST_MENU, N_("Language:"), P_OFFINTNL(hex_gui_lang), 0, langsmenu, 0}, + {ST_EFONT, N_("Main font:"), P_OFFSETNL(hex_text_font_main), 0, 0, sizeof prefs.hex_text_font_main}, +#else + {ST_EFONT, N_("Font:"), P_OFFSETNL(hex_text_font), 0, 0, sizeof prefs.hex_text_font}, +#endif + + {ST_HEADER, N_("Text Box"),0,0,0}, + {ST_TOGGLE, N_("Colored nick names"), P_OFFINTNL(hex_text_color_nicks), N_("Give each person on IRC a different color"),0,0}, + {ST_TOGGLR, N_("Indent nick names"), P_OFFINTNL(hex_text_indent), N_("Make nick names right-justified"),0,0}, + {ST_TOGGLE, N_ ("Show marker line"), P_OFFINTNL (hex_text_show_marker), N_ ("Insert a red line after the last read text."), 0, 0}, + {ST_EFILE, N_ ("Background image:"), P_OFFSETNL (hex_text_background), 0, 0, sizeof prefs.hex_text_background}, + + {ST_HEADER, N_("Transparency Settings"), 0,0,0}, + {ST_HSCALE, N_("Window opacity:"), P_OFFINTNL(hex_gui_transparency),0,0,0}, + + {ST_HEADER, N_("Timestamps"),0,0,0}, + {ST_TOGGLE, N_("Enable timestamps"), P_OFFINTNL(hex_stamp_text),0,0,1}, + {ST_ENTRY, N_("Timestamp format:"), P_OFFSETNL(hex_stamp_text_format), +#ifdef WIN32 + N_("See the strftime MSDN article for details."),0,sizeof prefs.hex_stamp_text_format}, +#else + N_("See the strftime manpage for details."),0,sizeof prefs.hex_stamp_text_format}, +#endif + + {ST_HEADER, N_("Title Bar"),0,0,0}, + {ST_TOGGLE, N_("Show channel modes"), P_OFFINTNL(hex_gui_win_modes),0,0,0}, + {ST_TOGGLR, N_("Show number of users"), P_OFFINTNL(hex_gui_win_ucount),0,0,0}, + {ST_TOGGLE, N_("Show nickname"), P_OFFINTNL(hex_gui_win_nick),0,0,0}, + + {ST_END, 0, 0, 0, 0, 0} +}; + +static const char *const tabcompmenu[] = +{ + N_("A-Z"), + N_("Last-spoke order"), + NULL +}; + +static const setting inputbox_settings[] = +{ + {ST_HEADER, N_("Input Box"),0,0,0}, + {ST_TOGGLE, N_("Use the text box font and colors"), P_OFFINTNL(hex_gui_input_style),0,0,0}, + {ST_TOGGLE, N_("Render colors and attributes"), P_OFFINTNL (hex_gui_input_attr),0,0,0}, + {ST_TOGGLE, N_("Show nick box"), P_OFFINTNL(hex_gui_input_nick),0,0,1}, + {ST_TOGGLE, N_("Show user mode icon in nick box"), P_OFFINTNL(hex_gui_input_icon),0,0,0}, + {ST_TOGGLE, N_("Spell checking"), P_OFFINTNL(hex_gui_input_spell),0,0,1}, + {ST_ENTRY, N_("Dictionaries to use:"), P_OFFSETNL(hex_text_spell_langs),0,0,sizeof prefs.hex_text_spell_langs}, +#ifdef WIN32 + {ST_LABEL, N_("Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\nSeparate multiple entries with commas.")}, +#else + {ST_LABEL, N_("Use language codes. Separate multiple entries with commas.")}, +#endif + + {ST_HEADER, N_("Nick Completion"),0,0,0}, + {ST_ENTRY, N_("Nick completion suffix:"), P_OFFSETNL(hex_completion_suffix),0,0,sizeof prefs.hex_completion_suffix}, + {ST_MENU, N_("Nick completion sorted:"), P_OFFINTNL(hex_completion_sort), 0, tabcompmenu, 0}, + {ST_NUMBER, N_("Nick completion amount:"), P_OFFINTNL(hex_completion_amount), N_("Threshold of nicks to start listing instead of completing"), (const char **)N_("nicks."), 1000}, + + {ST_END, 0, 0, 0, 0, 0} +}; + +static const char *const lagmenutext[] = +{ + N_("Off"), + N_("Graphical"), + N_("Text"), + N_("Both"), + NULL +}; + +static const char *const ulmenutext[] = +{ + N_("A-Z, ops first"), + N_("A-Z"), + N_("Z-A, ops last"), + N_("Z-A"), + N_("Unsorted"), + NULL +}; + +static const char *const cspos[] = +{ + N_("Left (upper)"), + N_("Left (lower)"), + N_("Right (upper)"), + N_("Right (lower)"), + N_("Top"), + N_("Bottom"), + N_("Hidden"), + NULL +}; + +static const char *const ulpos[] = +{ + N_("Left (upper)"), + N_("Left (lower)"), + N_("Right (upper)"), + N_("Right (lower)"), + NULL +}; + +static const setting userlist_settings[] = +{ + {ST_HEADER, N_("User List"),0,0,0}, + {ST_TOGGLE, N_("Show hostnames in user list"), P_OFFINTNL(hex_gui_ulist_show_hosts), 0, 0, 0}, + {ST_TOGGLE, N_("Use the Text box font and colors"), P_OFFINTNL(hex_gui_ulist_style),0,0,0}, + {ST_TOGGLE, N_("Show icons for user modes"), P_OFFINTNL(hex_gui_ulist_icons), N_("Use graphical icons instead of text symbols in the user list."), 0, 0}, + {ST_TOGGLE, N_("Color nicknames in userlist"), P_OFFINTNL(hex_gui_ulist_color), N_("Will color nicknames the same as in chat."), 0, 0}, + {ST_TOGGLE, N_("Show user count in channels"), P_OFFINTNL(hex_gui_ulist_count), 0, 0, 0}, + {ST_MENU, N_("User list sorted by:"), P_OFFINTNL(hex_gui_ulist_sort), 0, ulmenutext, 0}, + {ST_MENU, N_("Show user list at:"), P_OFFINTNL(hex_gui_ulist_pos), 0, ulpos, 1}, + + {ST_HEADER, N_("Away Tracking"),0,0,0}, + {ST_TOGGLE, N_("Track the away status of users and mark them in a different color"), P_OFFINTNL(hex_away_track),0,0,1}, + {ST_NUMBER, N_("On channels smaller than:"), P_OFFINTNL(hex_away_size_max),0,0,10000}, + + {ST_HEADER, N_("Action Upon Double Click"),0,0,0}, + {ST_ENTRY, N_("Execute command:"), P_OFFSETNL(hex_gui_ulist_doubleclick), 0, 0, sizeof prefs.hex_gui_ulist_doubleclick}, + + {ST_HEADER, N_("Extra Gadgets"),0,0,0}, + {ST_MENU, N_("Lag meter:"), P_OFFINTNL(hex_gui_lagometer), 0, lagmenutext, 0}, + {ST_MENU, N_("Throttle meter:"), P_OFFINTNL(hex_gui_throttlemeter), 0, lagmenutext, 0}, + + {ST_END, 0, 0, 0, 0, 0} +}; + +static const char *const tabwin[] = +{ + N_("Windows"), + N_("Tabs"), + NULL +}; + +static const char *const focusnewtabsmenu[] = +{ + N_("Never"), + N_("Always"), + N_("Only requested tabs"), + NULL +}; + +static const char *const noticeposmenu[] = +{ + N_("Automatic"), + N_("In an extra tab"), + N_("In the front tab"), + NULL +}; + +static const char *const swtype[] = +{ + N_("Tabs"), /* 0 tabs */ + "", /* 1 reserved */ + N_("Tree"), /* 2 tree */ + NULL +}; + +static const setting tabs_settings[] = +{ + /*{ST_HEADER, N_("Channel Switcher"),0,0,0},*/ + {ST_RADIO, N_("Switcher type:"),P_OFFINTNL(hex_gui_tab_layout), 0, swtype, 0}, + {ST_TOGGLE, N_("Open an extra tab for server messages"), P_OFFINTNL(hex_gui_tab_server), 0, 0, 0}, + {ST_TOGGLE, N_("Open a new tab when you receive a private message"), P_OFFINTNL(hex_gui_autoopen_dialog), 0, 0, 0}, + {ST_TOGGLE, N_("Sort tabs in alphabetical order"), P_OFFINTNL(hex_gui_tab_sort), 0, 0, 0}, + {ST_TOGGLE, N_("Show icons in the channel tree"), P_OFFINTNL(hex_gui_tab_icons), 0, 0, 0}, + {ST_TOGGLE, N_("Show dotted lines in the channel tree"), P_OFFINTNL(hex_gui_tab_dots), 0, 0, 0}, + {ST_TOGGLE, N_("Scroll mouse-wheel to change tabs"), P_OFFINTNL (hex_gui_tab_scrollchans), 0, 0, 0}, + {ST_TOGGLE, N_("Middle click to close tab"), P_OFFINTNL(hex_gui_tab_middleclose), 0, 0, 0}, + {ST_TOGGLE, N_("Smaller text"), P_OFFINTNL(hex_gui_tab_small), 0, 0, 0}, + {ST_MENU, N_("Focus new tabs:"), P_OFFINTNL(hex_gui_tab_newtofront), 0, focusnewtabsmenu, 0}, + {ST_MENU, N_("Placement of notices:"), P_OFFINTNL(hex_irc_notice_pos), 0, noticeposmenu, 0}, + {ST_MENU, N_("Show channel switcher at:"), P_OFFINTNL(hex_gui_tab_pos), 0, cspos, 1}, + {ST_NUMBER, N_("Shorten tab labels to:"), P_OFFINTNL(hex_gui_tab_trunc), 0, (const char **)N_("letters."), 99}, + + {ST_HEADER, N_("Tabs or Windows"),0,0,0}, + {ST_MENU, N_("Open channels in:"), P_OFFINTNL(hex_gui_tab_chans), 0, tabwin, 0}, + {ST_MENU, N_("Open dialogs in:"), P_OFFINTNL(hex_gui_tab_dialogs), 0, tabwin, 0}, + {ST_MENU, N_("Open utilities in:"), P_OFFINTNL(hex_gui_tab_utils), N_("Open DCC, Ignore, Notify etc, in tabs or windows?"), tabwin, 0}, + + {ST_END, 0, 0, 0, 0, 0} +}; + +static const setting color_settings[] = +{ + {ST_TOGGLE, N_("Messages"), P_OFFINTNL(hex_text_stripcolor_msg), 0, 0, 0}, + {ST_TOGGLE, N_("Scrollback"), P_OFFINTNL(hex_text_stripcolor_replay), 0, 0, 0}, + {ST_TOGGLE, N_("Topic"), P_OFFINTNL(hex_text_stripcolor_topic), 0, 0, 0}, + + {ST_END, 0, 0, 0, 0, 0} +}; + +static const char *const dccaccept[] = +{ + N_("Ask for confirmation"), + N_("Ask for download folder"), + N_("Save without interaction"), + NULL +}; + +static const setting filexfer_settings[] = +{ + {ST_HEADER, N_("Files and Directories"), 0, 0, 0}, + {ST_MENU, N_("Auto accept file offers:"), P_OFFINTNL(hex_dcc_auto_recv), 0, dccaccept, 0}, + {ST_EFOLDER,N_("Download files to:"), P_OFFSETNL(hex_dcc_dir), 0, 0, sizeof prefs.hex_dcc_dir}, + {ST_EFOLDER,N_("Move completed files to:"), P_OFFSETNL(hex_dcc_completed_dir), 0, 0, sizeof prefs.hex_dcc_completed_dir}, + {ST_TOGGLE, N_("Save nick name in filenames"), P_OFFINTNL(hex_dcc_save_nick), 0, 0, 0}, + + {ST_HEADER, N_("Auto Open DCC Windows"),0,0,0}, + {ST_TOGGLE, N_("Send window"), P_OFFINTNL(hex_gui_autoopen_send), 0, 0, 0}, + {ST_TOGGLE, N_("Receive window"), P_OFFINTNL(hex_gui_autoopen_recv), 0, 0, 0}, + {ST_TOGGLE, N_("Chat window"), P_OFFINTNL(hex_gui_autoopen_chat), 0, 0, 0}, + + {ST_HEADER, N_("Maximum File Transfer Speeds (Byte per Second)"), 0, 0, 0}, + {ST_NUMBER, N_("One upload:"), P_OFFINTNL(hex_dcc_max_send_cps), + N_("Maximum speed for one transfer"), 0, 10000000}, + {ST_NUMBER, N_("One download:"), P_OFFINTNL(hex_dcc_max_get_cps), + N_("Maximum speed for one transfer"), 0, 10000000}, + {ST_NUMBER, N_("All uploads combined:"), P_OFFINTNL(hex_dcc_global_max_send_cps), + N_("Maximum speed for all files"), 0, 10000000}, + {ST_NUMBER, N_("All downloads combined:"), P_OFFINTNL(hex_dcc_global_max_get_cps), + N_("Maximum speed for all files"), 0, 10000000}, + + {ST_END, 0, 0, 0, 0, 0} +}; + +static const int balloonlist[3] = +{ + P_OFFINTNL(hex_input_balloon_chans), P_OFFINTNL(hex_input_balloon_priv), P_OFFINTNL(hex_input_balloon_hilight) +}; + +static const int trayblinklist[3] = +{ + P_OFFINTNL(hex_input_tray_chans), P_OFFINTNL(hex_input_tray_priv), P_OFFINTNL(hex_input_tray_hilight) +}; + +static const int taskbarlist[3] = +{ + P_OFFINTNL(hex_input_flash_chans), P_OFFINTNL(hex_input_flash_priv), P_OFFINTNL(hex_input_flash_hilight) +}; + +static const int beeplist[3] = +{ + P_OFFINTNL(hex_input_beep_chans), P_OFFINTNL(hex_input_beep_priv), P_OFFINTNL(hex_input_beep_hilight) +}; + +static const setting alert_settings[] = +{ + {ST_HEADER, N_("Alerts"),0,0,0}, + + {ST_ALERTHEAD}, + + + {ST_3OGGLE, N_("Show notifications on:"), 0, 0, (void *)balloonlist, 0}, + {ST_3OGGLE, N_("Blink tray icon on:"), 0, 0, (void *)trayblinklist, 0}, + {ST_3OGGLE, N_("Blink task bar on:"), 0, 0, (void *)taskbarlist, 0}, +#ifdef WIN32 + {ST_3OGGLE, N_("Make a beep sound on:"), 0, N_("Play the \"Instant Message Notification\" system sound upon the selected events"), (void *)beeplist, 0}, +#else +#ifdef USE_LIBCANBERRA + {ST_3OGGLE, N_("Make a beep sound on:"), 0, N_("Play \"message-new-instant\" from the freedesktop.org sound theme upon the selected events"), (void *)beeplist, 0}, +#else + {ST_3OGGLE, N_("Make a beep sound on:"), 0, N_("Play a GTK beep upon the selected events"), (void *)beeplist, 0}, +#endif +#endif + + {ST_TOGGLE, N_("Omit alerts when marked as being away"), P_OFFINTNL(hex_away_omit_alerts), 0, 0, 0}, + {ST_TOGGLE, N_("Omit alerts while the window is focused"), P_OFFINTNL(hex_gui_focus_omitalerts), 0, 0, 0}, + + {ST_HEADER, N_("Tray Behavior"), 0, 0, 0}, + {ST_TOGGLE, N_("Enable system tray icon"), P_OFFINTNL(hex_gui_tray), 0, 0, 4}, + {ST_TOGGLE, N_("Minimize to tray"), P_OFFINTNL(hex_gui_tray_minimize), 0, 0, 0}, + {ST_TOGGLE, N_("Close to tray"), P_OFFINTNL(hex_gui_tray_close), 0, 0, 0}, + {ST_TOGGLE, N_("Automatically mark away/back"), P_OFFINTNL(hex_gui_tray_away), N_("Automatically change status when hiding to tray."), 0, 0}, + {ST_TOGGLE, N_("Only show notifications when hidden or iconified"), P_OFFINTNL(hex_gui_tray_quiet), 0, 0, 0}, + + {ST_HEADER, N_("Highlighted Messages"),0,0,0}, + {ST_LABEL, N_("Highlighted messages are ones where your nickname is mentioned, but also:"), 0, 0, 0, 1}, + + {ST_ENTRY, N_("Extra words to highlight:"), P_OFFSETNL(hex_irc_extra_hilight), 0, 0, sizeof prefs.hex_irc_extra_hilight}, + {ST_ENTRY, N_("Nick names not to highlight:"), P_OFFSETNL(hex_irc_no_hilight), 0, 0, sizeof prefs.hex_irc_no_hilight}, + {ST_ENTRY, N_("Nick names to always highlight:"), P_OFFSETNL(hex_irc_nick_hilight), 0, 0, sizeof prefs.hex_irc_nick_hilight}, + {ST_LABEL, N_("Separate multiple words with commas.\nWildcards are accepted.")}, + + {ST_END, 0, 0, 0, 0, 0} +}; + +static const setting alert_settings_nonotifications[] = +{ + {ST_HEADER, N_("Alerts"),0,0,0}, + + {ST_ALERTHEAD}, + {ST_3OGGLE, N_("Blink tray icon on:"), 0, 0, (void *)trayblinklist, 0}, +#ifdef HAVE_GTK_MAC + {ST_3OGGLE, N_("Bounce dock icon on:"), 0, 0, (void *)taskbarlist, 0}, +#else +#ifndef __APPLE__ + {ST_3OGGLE, N_("Blink task bar on:"), 0, 0, (void *)taskbarlist, 0}, +#endif +#endif +#ifdef WIN32 + {ST_3OGGLE, N_("Make a beep sound on:"), 0, N_("Play the \"Instant Message Notification\" system sound upon the selected events"), (void *)beeplist, 0}, +#else +#ifdef USE_LIBCANBERRA + {ST_3OGGLE, N_("Make a beep sound on:"), 0, N_("Play \"message-new-instant\" from the freedesktop.org sound theme upon the selected events"), (void *)beeplist, 0}, +#else + {ST_3OGGLE, N_("Make a beep sound on:"), 0, N_("Play a GTK beep upon the selected events"), (void *)beeplist, 0}, +#endif +#endif + + {ST_TOGGLE, N_("Omit alerts when marked as being away"), P_OFFINTNL(hex_away_omit_alerts), 0, 0, 0}, + {ST_TOGGLE, N_("Omit alerts while the window is focused"), P_OFFINTNL(hex_gui_focus_omitalerts), 0, 0, 0}, + + {ST_HEADER, N_("Tray Behavior"), 0, 0, 0}, + {ST_TOGGLE, N_("Enable system tray icon"), P_OFFINTNL(hex_gui_tray), 0, 0, 4}, + {ST_TOGGLE, N_("Minimize to tray"), P_OFFINTNL(hex_gui_tray_minimize), 0, 0, 0}, + {ST_TOGGLE, N_("Close to tray"), P_OFFINTNL(hex_gui_tray_close), 0, 0, 0}, + {ST_TOGGLE, N_("Automatically mark away/back"), P_OFFINTNL(hex_gui_tray_away), N_("Automatically change status when hiding to tray."), 0, 0}, + + {ST_HEADER, N_("Highlighted Messages"),0,0,0}, + {ST_LABEL, N_("Highlighted messages are ones where your nickname is mentioned, but also:"), 0, 0, 0, 1}, + + {ST_ENTRY, N_("Extra words to highlight:"), P_OFFSETNL(hex_irc_extra_hilight), 0, 0, sizeof prefs.hex_irc_extra_hilight}, + {ST_ENTRY, N_("Nick names not to highlight:"), P_OFFSETNL(hex_irc_no_hilight), 0, 0, sizeof prefs.hex_irc_no_hilight}, + {ST_ENTRY, N_("Nick names to always highlight:"), P_OFFSETNL(hex_irc_nick_hilight), 0, 0, sizeof prefs.hex_irc_nick_hilight}, + {ST_LABEL, N_("Separate multiple words with commas.\nWildcards are accepted.")}, + + {ST_END, 0, 0, 0, 0, 0} +}; + +static const setting alert_settings_unity[] = +{ + {ST_HEADER, N_("Alerts"),0,0,0}, + + {ST_ALERTHEAD}, + {ST_3OGGLE, N_("Show notifications on:"), 0, 0, (void *)balloonlist, 0}, + {ST_3OGGLE, N_("Blink task bar on:"), 0, 0, (void *)taskbarlist, 0}, + {ST_3OGGLE, N_("Make a beep sound on:"), 0, 0, (void *)beeplist, 0}, + + {ST_TOGGLE, N_("Omit alerts when marked as being away"), P_OFFINTNL(hex_away_omit_alerts), 0, 0, 0}, + {ST_TOGGLE, N_("Omit alerts while the window is focused"), P_OFFINTNL(hex_gui_focus_omitalerts), 0, 0, 0}, + + {ST_HEADER, N_("Highlighted Messages"),0,0,0}, + {ST_LABEL, N_("Highlighted messages are ones where your nickname is mentioned, but also:"), 0, 0, 0, 1}, + + {ST_ENTRY, N_("Extra words to highlight:"), P_OFFSETNL(hex_irc_extra_hilight), 0, 0, sizeof prefs.hex_irc_extra_hilight}, + {ST_ENTRY, N_("Nick names not to highlight:"), P_OFFSETNL(hex_irc_no_hilight), 0, 0, sizeof prefs.hex_irc_no_hilight}, + {ST_ENTRY, N_("Nick names to always highlight:"), P_OFFSETNL(hex_irc_nick_hilight), 0, 0, sizeof prefs.hex_irc_nick_hilight}, + {ST_LABEL, N_("Separate multiple words with commas.\nWildcards are accepted.")}, + + {ST_END, 0, 0, 0, 0, 0} +}; + +static const setting alert_settings_unityandnonotifications[] = +{ + {ST_HEADER, N_("Alerts"), 0, 0, 0}, + + {ST_ALERTHEAD}, + {ST_3OGGLE, N_("Blink task bar on:"), 0, 0, (void *)taskbarlist, 0}, + {ST_3OGGLE, N_("Make a beep sound on:"), 0, 0, (void *)beeplist, 0}, + + {ST_TOGGLE, N_("Omit alerts when marked as being away"), P_OFFINTNL (hex_away_omit_alerts), 0, 0, 0}, + {ST_TOGGLE, N_("Omit alerts while the window is focused"), P_OFFINTNL (hex_gui_focus_omitalerts), 0, 0, 0}, + + {ST_HEADER, N_("Highlighted Messages"), 0, 0, 0}, + {ST_LABEL, N_("Highlighted messages are ones where your nickname is mentioned, but also:"), 0, 0, 0, 1}, + + {ST_ENTRY, N_("Extra words to highlight:"), P_OFFSETNL (hex_irc_extra_hilight), 0, 0, sizeof prefs.hex_irc_extra_hilight}, + {ST_ENTRY, N_("Nick names not to highlight:"), P_OFFSETNL (hex_irc_no_hilight), 0, 0, sizeof prefs.hex_irc_no_hilight}, + {ST_ENTRY, N_("Nick names to always highlight:"), P_OFFSETNL (hex_irc_nick_hilight), 0, 0, sizeof prefs.hex_irc_nick_hilight}, + {ST_LABEL, N_("Separate multiple words with commas.\nWildcards are accepted.")}, + + {ST_END, 0, 0, 0, 0, 0} +}; + +static const setting general_settings[] = +{ + {ST_HEADER, N_("Default Messages"),0,0,0}, + {ST_ENTRY, N_("Quit:"), P_OFFSETNL(hex_irc_quit_reason), 0, 0, sizeof prefs.hex_irc_quit_reason}, + {ST_ENTRY, N_("Leave channel:"), P_OFFSETNL(hex_irc_part_reason), 0, 0, sizeof prefs.hex_irc_part_reason}, + {ST_ENTRY, N_("Away:"), P_OFFSETNL(hex_away_reason), 0, 0, sizeof prefs.hex_away_reason}, + + {ST_HEADER, N_("Away"),0,0,0}, + {ST_TOGGLE, N_("Show away once"), P_OFFINTNL(hex_away_show_once), N_("Show identical away messages only once."), 0, 0}, + {ST_TOGGLE, N_("Automatically unmark away"), P_OFFINTNL(hex_away_auto_unmark), N_("Unmark yourself as away before sending messages."), 0, 0}, + + {ST_HEADER, N_("Miscellaneous"),0,0,0}, + {ST_TOGGLE, N_("Display MODEs in raw form"), P_OFFINTNL(hex_irc_raw_modes), 0, 0, 0}, + {ST_TOGGLE, N_("WHOIS on notify"), P_OFFINTNL(hex_notify_whois_online), N_("Sends a /WHOIS when a user comes online in your notify list."), 0, 0}, + {ST_TOGGLE, N_("Hide join and part messages"), P_OFFINTNL(hex_irc_conf_mode), N_("Hide channel join/part messages by default."), 0, 0}, + {ST_TOGGLE, N_("Hide nick change messages"), P_OFFINTNL(hex_irc_hide_nickchange), 0, 0, 0}, + + {ST_END, 0, 0, 0, 0, 0} +}; + +static const char *const bantypemenu[] = +{ + N_("*!*@*.host"), + N_("*!*@domain"), + N_("*!*user@*.host"), + N_("*!*user@domain"), + NULL +}; + +static const setting advanced_settings[] = +{ + {ST_HEADER, N_("Auto Copy Behavior"),0,0,0}, + {ST_TOGGLE, N_("Automatically copy selected text"), P_OFFINTNL(hex_text_autocopy_text), + N_("Copy selected text to clipboard when left mouse button is released. " + "Otherwise, Ctrl+Shift+C will copy the " + "selected text to the clipboard."), 0, 0}, + {ST_TOGGLE, N_("Automatically include timestamps"), P_OFFINTNL(hex_text_autocopy_stamp), + N_("Automatically include timestamps in copied lines of text. Otherwise, " + "include timestamps if the Shift key is held down while selecting."), 0, 0}, + {ST_TOGGLE, N_("Automatically include color information"), P_OFFINTNL(hex_text_autocopy_color), + N_("Automatically include color information in copied lines of text. " + "Otherwise, include color information if the Ctrl key is held down " + "while selecting."), 0, 0}, + + {ST_HEADER, N_("Miscellaneous"), 0, 0, 0}, + {ST_ENTRY, N_("Real name:"), P_OFFSETNL(hex_irc_real_name), 0, 0, sizeof prefs.hex_irc_real_name}, +#ifdef WIN32 + {ST_ENTRY, N_("Alternative fonts:"), P_OFFSETNL(hex_text_font_alternative), N_("Separate multiple entries with commas without spaces before or after."), 0, sizeof prefs.hex_text_font_alternative}, +#endif + {ST_TOGGLE, N_("Display lists in compact mode"), P_OFFINTNL(hex_gui_compact), N_("Use less spacing between user list/channel tree rows."), 0, 0}, + {ST_TOGGLE, N_("Use server time if supported"), P_OFFINTNL(hex_irc_cap_server_time), N_("Display timestamps obtained from server if it supports the time-server extension."), 0, 0}, + {ST_TOGGLE, N_("Automatically reconnect to servers on disconnect"), P_OFFINTNL(hex_net_auto_reconnect), 0, 0, 1}, + {ST_NUMBER, N_("Auto reconnect delay:"), P_OFFINTNL(hex_net_reconnect_delay), 0, 0, 9999}, + {ST_NUMBER, N_("Auto join delay:"), P_OFFINTNL(hex_irc_join_delay), 0, 0, 9999}, + {ST_MENU, N_("Ban Type:"), P_OFFINTNL(hex_irc_ban_type), N_("Attempt to use this banmask when banning or quieting. (requires irc_who_join)"), bantypemenu, 0}, + + {ST_END, 0, 0, 0, 0, 0} +}; + +static const setting logging_settings[] = +{ + {ST_HEADER, N_("Logging"),0,0,0}, + {ST_TOGGLE, N_("Display scrollback from previous session"), P_OFFINTNL(hex_text_replay), 0, 0, 0}, + {ST_NUMBER, N_("Scrollback lines:"), P_OFFINTNL(hex_text_max_lines),0,0,100000}, + {ST_TOGGLE, N_("Enable logging of conversations to disk"), P_OFFINTNL(hex_irc_logging), 0, 0, 0}, + {ST_ENTRY, N_("Log filename:"), P_OFFSETNL(hex_irc_logmask), 0, 0, sizeof prefs.hex_irc_logmask}, + {ST_LABEL, N_("%s=Server %c=Channel %n=Network.")}, + + {ST_HEADER, N_("Timestamps"),0,0,0}, + {ST_TOGGLE, N_("Insert timestamps in logs"), P_OFFINTNL(hex_stamp_log), 0, 0, 1}, + {ST_ENTRY, N_("Log timestamp format:"), P_OFFSETNL(hex_stamp_log_format), 0, 0, sizeof prefs.hex_stamp_log_format}, +#ifdef WIN32 + {ST_LABEL, N_("See the strftime MSDN article for details.")}, +#else + {ST_LABEL, N_("See the strftime manpage for details.")}, +#endif + + {ST_HEADER, N_("URLs"),0,0,0}, + {ST_TOGGLE, N_("Enable logging of URLs to disk"), P_OFFINTNL(hex_url_logging), 0, 0, 0}, + {ST_TOGGLE, N_("Enable URL grabber"), P_OFFINTNL(hex_url_grabber), 0, 0, 1}, + {ST_NUMBER, N_("Maximum number of URLs to grab:"), P_OFFINTNL(hex_url_grabber_limit), 0, 0, 9999}, + + {ST_END, 0, 0, 0, 0, 0} +}; + +static const char *const proxytypes[] = +{ + N_("(Disabled)"), + N_("Wingate"), + N_("SOCKS4"), + N_("SOCKS5"), + N_("HTTP"), + N_("Auto"), + NULL +}; + +static const char *const proxyuse[] = +{ + N_("All connections"), + N_("IRC server only"), + N_("DCC only"), + NULL +}; + +static const setting network_settings[] = +{ + {ST_HEADER, N_("Your Address"), 0, 0, 0, 0}, + {ST_ENTRY, N_("Bind to:"), P_OFFSETNL(hex_net_bind_host), 0, 0, sizeof prefs.hex_net_bind_host}, + {ST_LABEL, N_("Only useful for computers with multiple addresses.")}, + + {ST_HEADER, N_("File Transfers"), 0, 0, 0}, + {ST_TOGGLE, N_("Get my address from the IRC server"), P_OFFINTNL(hex_dcc_ip_from_server), + N_("Asks the IRC server for your real address. Use this if you have a 192.168.*.* address!"), 0, 0}, + {ST_ENTRY, N_("DCC IP address:"), P_OFFSETNL(hex_dcc_ip), + N_("Claim you are at this address when offering files."), 0, sizeof prefs.hex_dcc_ip}, + {ST_NUMBER, N_("First DCC listen port:"), P_OFFINTNL(hex_dcc_port_first), 0, 0, 65535}, + {ST_NUMBER, N_("Last DCC listen port:"), P_OFFINTNL(hex_dcc_port_last), 0, + (const char **)N_("!Leave ports at zero for full range."), 65535}, + + {ST_HEADER, N_("Proxy Server"), 0, 0, 0, 0}, + {ST_ENTRY, N_("Hostname:"), P_OFFSETNL(hex_net_proxy_host), 0, 0, sizeof prefs.hex_net_proxy_host}, + {ST_NUMBER, N_("Port:"), P_OFFINTNL(hex_net_proxy_port), 0, 0, 65535}, + {ST_MENU, N_("Type:"), P_OFFINTNL(hex_net_proxy_type), 0, proxytypes, 0}, + {ST_MENU, N_("Use proxy for:"), P_OFFINTNL(hex_net_proxy_use), 0, proxyuse, 0}, + + {ST_HEADER, N_("Proxy Authentication"), 0, 0, 0, 0}, + {ST_TOGGLE, N_("Use authentication (HTTP or SOCKS5 only)"), P_OFFINTNL(hex_net_proxy_auth), 0, 0, 0}, + {ST_ENTRY, N_("Username:"), P_OFFSETNL(hex_net_proxy_user), 0, 0, sizeof prefs.hex_net_proxy_user}, + {ST_ENTRY, N_("Password:"), P_OFFSETNL(hex_net_proxy_pass), 0, GINT_TO_POINTER(1), sizeof prefs.hex_net_proxy_pass}, + + {ST_END, 0, 0, 0, 0, 0} +}; + +static const setting identd_settings[] = +{ + {ST_HEADER, N_("Identd Server"), 0, 0, 0, 0}, + {ST_TOGGLE, N_("Enabled"), P_OFFINTNL(hex_identd_server), N_("Server will respond with the networks username"), 0, 1}, + {ST_NUMBER, N_("Port:"), P_OFFINTNL(hex_identd_port), N_("You must have permissions to listen on this port. " + "If not 113 (0 defaults to this) then you must configure port-forwarding."), 0, 65535}, + + {ST_END, 0, 0, 0, 0, 0} +}; + +#define setup_get_str(pr,set) (((char *)pr)+set->offset) +#define setup_get_int(pr,set) *(((int *)pr)+set->offset) +#define setup_get_int3(pr,off) *(((int *)pr)+off) + +#define setup_set_int(pr,set,num) *((int *)pr+set->offset)=num +#define setup_set_str(pr,set,str) strcpy(((char *)pr)+set->offset,str) + + +static void +setup_3oggle_cb (GtkToggleButton *but, unsigned int *setting) +{ + *setting = gtk_toggle_button_get_active (but); +} + +static void +setup_headlabel (GtkWidget *tab, int row, int col, char *text) +{ + GtkWidget *label; + char buf[128]; + char *sp; + + g_snprintf (buf, sizeof (buf), "<b><span size=\"smaller\">%s</span></b>", text); + sp = strchr (buf + 17, ' '); + if (sp) + *sp = '\n'; + + label = gtk_label_new (NULL); + gtk_label_set_markup (GTK_LABEL (label), buf); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (tab), label, col, col + 1, row, row + 1, 0, 0, 4, 0); +} + +static void +setup_create_alert_header (GtkWidget *tab, int row, const setting *set) +{ + setup_headlabel (tab, row, 3, _("Channel Message")); + setup_headlabel (tab, row, 4, _("Private Message")); + setup_headlabel (tab, row, 5, _("Highlighted Message")); +} + +/* makes 3 toggles side-by-side */ + +static void +setup_create_3oggle (GtkWidget *tab, int row, const setting *set) +{ + GtkWidget *label, *wid; + int *offsets = (int *)set->list; + + label = gtk_label_new (_(set->label)); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + if (set->tooltip) + { + gtk_widget_set_tooltip_text (label, _(set->tooltip)); + } + gtk_table_attach (GTK_TABLE (tab), label, 2, 3, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); + + wid = gtk_check_button_new (); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wid), + setup_get_int3 (&setup_prefs, offsets[0])); + g_signal_connect (G_OBJECT (wid), "toggled", + G_CALLBACK (setup_3oggle_cb), ((int *)&setup_prefs) + offsets[0]); + gtk_table_attach (GTK_TABLE (tab), wid, 3, 4, row, row + 1, 0, 0, 0, 0); + + wid = gtk_check_button_new (); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wid), + setup_get_int3 (&setup_prefs, offsets[1])); + g_signal_connect (G_OBJECT (wid), "toggled", + G_CALLBACK (setup_3oggle_cb), ((int *)&setup_prefs) + offsets[1]); + gtk_table_attach (GTK_TABLE (tab), wid, 4, 5, row, row + 1, 0, 0, 0, 0); + + wid = gtk_check_button_new (); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wid), + setup_get_int3 (&setup_prefs, offsets[2])); + g_signal_connect (G_OBJECT (wid), "toggled", + G_CALLBACK (setup_3oggle_cb), ((int *)&setup_prefs) + offsets[2]); + gtk_table_attach (GTK_TABLE (tab), wid, 5, 6, row, row + 1, 0, 0, 0, 0); +} + +static void +setup_toggle_cb (GtkToggleButton *but, const setting *set) +{ + GtkWidget *label, *disable_wid; + + setup_set_int (&setup_prefs, set, gtk_toggle_button_get_active (but)); + + /* does this toggle also enable/disable another widget? */ + disable_wid = g_object_get_data (G_OBJECT (but), "nxt"); + if (disable_wid) + { + gtk_widget_set_sensitive (disable_wid, gtk_toggle_button_get_active (but)); + label = g_object_get_data (G_OBJECT (disable_wid), "lbl"); + gtk_widget_set_sensitive (label, gtk_toggle_button_get_active (but)); + } +} + +static void +setup_toggle_sensitive_cb (GtkToggleButton *but, GtkWidget *wid) +{ + gtk_widget_set_sensitive (wid, gtk_toggle_button_get_active (but)); +} + +static void +setup_create_toggleR (GtkWidget *tab, int row, const setting *set) +{ + GtkWidget *wid; + + wid = gtk_check_button_new_with_label (_(set->label)); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wid), + setup_get_int (&setup_prefs, set)); + g_signal_connect (G_OBJECT (wid), "toggled", + G_CALLBACK (setup_toggle_cb), (gpointer)set); + if (set->tooltip) + gtk_widget_set_tooltip_text (wid, _(set->tooltip)); + gtk_table_attach (GTK_TABLE (tab), wid, 4, 5, row, row + 1, + GTK_EXPAND | GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); +} + +static GtkWidget * +setup_create_toggleL (GtkWidget *tab, int row, const setting *set) +{ + GtkWidget *wid; + + wid = gtk_check_button_new_with_label (_(set->label)); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wid), + setup_get_int (&setup_prefs, set)); + g_signal_connect (G_OBJECT (wid), "toggled", + G_CALLBACK (setup_toggle_cb), (gpointer)set); + if (set->tooltip) + gtk_widget_set_tooltip_text (wid, _(set->tooltip)); + gtk_table_attach (GTK_TABLE (tab), wid, 2, row==6 ? 6 : 4, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); + + return wid; +} + +static GtkWidget * +setup_create_italic_label (char *text) +{ + GtkWidget *label; + char buf[256]; + + label = gtk_label_new (NULL); + g_snprintf (buf, sizeof (buf), "<i><span size=\"smaller\">%s</span></i>", text); + gtk_label_set_markup (GTK_LABEL (label), buf); + gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_CENTER); + + return label; +} + +static void +setup_spin_cb (GtkSpinButton *spin, const setting *set) +{ + setup_set_int (&setup_prefs, set, gtk_spin_button_get_value_as_int (spin)); +} + +static GtkWidget * +setup_create_spin (GtkWidget *table, int row, const setting *set) +{ + GtkWidget *label, *wid, *rbox, *align; + char *text; + + label = gtk_label_new (_(set->label)); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), label, 2, 3, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); + + align = gtk_alignment_new (0.0, 0.5, 0.0, 0.0); + gtk_table_attach (GTK_TABLE (table), align, 3, 4, row, row + 1, + GTK_EXPAND | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + + rbox = gtk_hbox_new (0, 0); + gtk_container_add (GTK_CONTAINER (align), rbox); + + wid = gtk_spin_button_new_with_range (0, set->extra, 1); + g_object_set_data (G_OBJECT (wid), "lbl", label); + if (set->tooltip) + gtk_widget_set_tooltip_text (wid, _(set->tooltip)); + gtk_spin_button_set_value (GTK_SPIN_BUTTON (wid), + setup_get_int (&setup_prefs, set)); + g_signal_connect (G_OBJECT (wid), "value_changed", + G_CALLBACK (setup_spin_cb), (gpointer)set); + gtk_box_pack_start (GTK_BOX (rbox), wid, 0, 0, 0); + + if (set->list) + { + text = _((char *)set->list); + if (text[0] == '!') + label = setup_create_italic_label (text + 1); + else + label = gtk_label_new (text); + gtk_box_pack_start (GTK_BOX (rbox), label, 0, 0, 6); + } + + return wid; +} + +static gint +setup_apply_trans (int *tag) +{ + prefs.hex_gui_transparency = setup_prefs.hex_gui_transparency; + gtk_window_set_opacity (GTK_WINDOW (current_sess->gui->window), + (prefs.hex_gui_transparency / 255.)); + + /* mg_update_xtext (current_sess->gui->xtext); */ + *tag = 0; + return 0; +} + +static void +setup_hscale_cb (GtkHScale *wid, const setting *set) +{ + static int tag = 0; + + setup_set_int (&setup_prefs, set, (int) gtk_range_get_value (GTK_RANGE (wid))); + + if (tag == 0) + { + tag = g_idle_add ((GSourceFunc) setup_apply_trans, &tag); + } +} + +static void +setup_create_hscale (GtkWidget *table, int row, const setting *set) +{ + GtkWidget *wid; + + wid = gtk_label_new (_(set->label)); + gtk_misc_set_alignment (GTK_MISC (wid), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), wid, 2, 3, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); + + wid = gtk_hscale_new_with_range (0., 255., 1.); + gtk_scale_set_value_pos (GTK_SCALE (wid), GTK_POS_RIGHT); + gtk_range_set_value (GTK_RANGE (wid), setup_get_int (&setup_prefs, set)); + g_signal_connect (G_OBJECT(wid), "value_changed", + G_CALLBACK (setup_hscale_cb), (gpointer)set); + gtk_table_attach (GTK_TABLE (table), wid, 3, 6, row, row + 1, + GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0); + +#ifndef WIN32 /* Windows always supports this */ + /* Only used for transparency currently */ + if (!gtk_widget_is_composited (current_sess->gui->window)) + gtk_widget_set_sensitive (wid, FALSE); +#endif +} + + +static GtkWidget *proxy_user; /* username GtkEntry */ +static GtkWidget *proxy_pass; /* password GtkEntry */ + +static void +setup_menu_cb (GtkWidget *cbox, const setting *set) +{ + int n = gtk_combo_box_get_active (GTK_COMBO_BOX (cbox)); + + /* set the prefs.<field> */ + setup_set_int (&setup_prefs, set, n + set->extra); + + if (set->list == proxytypes) + { + /* only HTTP and SOCKS5 can use a username/pass */ + gtk_widget_set_sensitive (proxy_user, (n == 3 || n == 4 || n == 5)); + gtk_widget_set_sensitive (proxy_pass, (n == 3 || n == 4 || n == 5)); + } +} + +static void +setup_radio_cb (GtkWidget *item, const setting *set) +{ + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (item))) + { + int n = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (item), "n")); + /* set the prefs.<field> */ + setup_set_int (&setup_prefs, set, n); + } +} + +static int +setup_create_radio (GtkWidget *table, int row, const setting *set) +{ + GtkWidget *wid, *hbox; + int i; + const char **text = (const char **)set->list; + GSList *group; + + wid = gtk_label_new (_(set->label)); + gtk_misc_set_alignment (GTK_MISC (wid), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), wid, 2, 3, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); + + hbox = gtk_hbox_new (0, 0); + gtk_table_attach (GTK_TABLE (table), hbox, 3, 4, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + + i = 0; + group = NULL; + while (text[i]) + { + if (text[i][0] != 0) + { + wid = gtk_radio_button_new_with_mnemonic (group, _(text[i])); + /*if (set->tooltip) + gtk_widget_set_tooltip_text (wid, _(set->tooltip));*/ + group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (wid)); + gtk_container_add (GTK_CONTAINER (hbox), wid); + if (i == setup_get_int (&setup_prefs, set)) + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wid), TRUE); + g_object_set_data (G_OBJECT (wid), "n", GINT_TO_POINTER (i)); + g_signal_connect (G_OBJECT (wid), "toggled", + G_CALLBACK (setup_radio_cb), (gpointer)set); + } + i++; + row++; + } + + return i; +} + +/* +static const char *id_strings[] = +{ + "", + "*", + "%C4*%C18%B%B", + "%U" +}; + +static void +setup_id_menu_cb (GtkWidget *item, char *dest) +{ + int n = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (item), "n")); + + strcpy (dest, id_strings[n]); +} + +static void +setup_create_id_menu (GtkWidget *table, char *label, int row, char *dest) +{ + GtkWidget *wid, *menu, *item; + int i, def = 0; + static const char *text[] = + { + ("(disabled)"), + ("A star (*)"), + ("A red star (*)"), + ("Underlined") + }; + + wid = gtk_label_new (label); + gtk_misc_set_alignment (GTK_MISC (wid), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), wid, 2, 3, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); + + wid = gtk_option_menu_new (); + menu = gtk_menu_new (); + + for (i = 0; i < 4; i++) + { + if (strcmp (id_strings[i], dest) == 0) + { + def = i; + break; + } + } + + i = 0; + while (text[i]) + { + item = gtk_menu_item_new_with_label (_(text[i])); + g_object_set_data (G_OBJECT (item), "n", GINT_TO_POINTER (i)); + + gtk_widget_show (item); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (setup_id_menu_cb), dest); + i++; + } + + gtk_option_menu_set_menu (GTK_OPTION_MENU (wid), menu); + gtk_option_menu_set_history (GTK_OPTION_MENU (wid), def); + + gtk_table_attach (GTK_TABLE (table), wid, 3, 4, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); +} + +*/ + +static void +setup_create_menu (GtkWidget *table, int row, const setting *set) +{ + GtkWidget *wid, *cbox, *box; + const char **text = (const char **)set->list; + int i; + + wid = gtk_label_new (_(set->label)); + gtk_misc_set_alignment (GTK_MISC (wid), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), wid, 2, 3, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); + + cbox = gtk_combo_box_text_new (); + + for (i = 0; text[i]; i++) + gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (cbox), _(text[i])); + + gtk_combo_box_set_active (GTK_COMBO_BOX (cbox), + setup_get_int (&setup_prefs, set) - set->extra); + g_signal_connect (G_OBJECT (cbox), "changed", + G_CALLBACK (setup_menu_cb), (gpointer)set); + + box = gtk_hbox_new (0, 0); + gtk_box_pack_start (GTK_BOX (box), cbox, 0, 0, 0); + gtk_table_attach (GTK_TABLE (table), box, 3, 4, row, row + 1, + GTK_EXPAND | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); +} + +static void +setup_filereq_cb (GtkWidget *entry, char *file) +{ + if (file) + { + if (file[0]) + gtk_entry_set_text (GTK_ENTRY (entry), file); + } +} + +static void +setup_browsefile_cb (GtkWidget *button, GtkWidget *entry) +{ + /* used for background image only */ + char *filter; + int filter_type; + +#ifdef WIN32 + filter = "*png;*.tiff;*.gif;*.jpeg;*.jpg"; + filter_type = FRF_EXTENSIONS; +#else + filter = "image/*"; + filter_type = FRF_MIMETYPES; +#endif + gtkutil_file_req (GTK_WINDOW (setup_window), _("Select an Image File"), setup_filereq_cb, + entry, NULL, filter, filter_type|FRF_RECENTLYUSED|FRF_MODAL); +} + +static void +setup_fontsel_destroy (GtkWidget *button, GtkFontSelectionDialog *dialog) +{ + font_dialog = NULL; +} + +static void +setup_fontsel_cb (GtkWidget *button, GtkFontSelectionDialog *dialog) +{ + GtkWidget *entry; + char *font_name; + + entry = g_object_get_data (G_OBJECT (button), "e"); + font_name = gtk_font_selection_dialog_get_font_name (dialog); + + gtk_entry_set_text (GTK_ENTRY (entry), font_name); + + g_free (font_name); + gtk_widget_destroy (GTK_WIDGET (dialog)); + font_dialog = NULL; +} + +static void +setup_fontsel_cancel (GtkWidget *button, GtkFontSelectionDialog *dialog) +{ + gtk_widget_destroy (GTK_WIDGET (dialog)); + font_dialog = NULL; +} + +static void +setup_browsefolder_cb (GtkWidget *button, GtkEntry *entry) +{ + gtkutil_file_req (GTK_WINDOW (setup_window), _("Select Download Folder"), setup_filereq_cb, entry, (char*)gtk_entry_get_text (entry), NULL, FRF_CHOOSEFOLDER|FRF_MODAL); +} + +static void +setup_browsefont_cb (GtkWidget *button, GtkWidget *entry) +{ + GtkFontSelection *sel; + GtkFontSelectionDialog *dialog; + GtkWidget *ok_button; + + dialog = (GtkFontSelectionDialog *) gtk_font_selection_dialog_new (_("Select font")); + font_dialog = (GtkWidget *)dialog; /* global var */ + + gtk_window_set_transient_for (GTK_WINDOW (font_dialog), GTK_WINDOW (setup_window)); + gtk_window_set_modal (GTK_WINDOW (font_dialog), TRUE); + + sel = (GtkFontSelection *) gtk_font_selection_dialog_get_font_selection (dialog); + + if (gtk_entry_get_text (GTK_ENTRY (entry))[0]) + gtk_font_selection_set_font_name (sel, gtk_entry_get_text (GTK_ENTRY (entry))); + + ok_button = gtk_font_selection_dialog_get_ok_button (dialog); + g_object_set_data (G_OBJECT (ok_button), "e", entry); + + g_signal_connect (G_OBJECT (dialog), "destroy", + G_CALLBACK (setup_fontsel_destroy), dialog); + g_signal_connect (G_OBJECT (ok_button), "clicked", + G_CALLBACK (setup_fontsel_cb), dialog); + g_signal_connect (G_OBJECT (gtk_font_selection_dialog_get_cancel_button (dialog)), "clicked", + G_CALLBACK (setup_fontsel_cancel), dialog); + + gtk_widget_show (GTK_WIDGET (dialog)); +} + +static void +setup_entry_cb (GtkEntry *entry, setting *set) +{ + int size; + int pos; + unsigned char *p = (unsigned char*)gtk_entry_get_text (entry); + int len = strlen (p); + + /* need to truncate? */ + if (len >= set->extra) + { + len = pos = 0; + while (1) + { + size = g_utf8_skip [*p]; + len += size; + p += size; + /* truncate to "set->extra" BYTES */ + if (len >= set->extra) + { + gtk_editable_delete_text (GTK_EDITABLE (entry), pos, -1); + break; + } + pos++; + } + } + else + { + setup_set_str (&setup_prefs, set, gtk_entry_get_text (entry)); + } +} + +static void +setup_create_label (GtkWidget *table, int row, const setting *set) +{ + gtk_table_attach (GTK_TABLE (table), setup_create_italic_label (_(set->label)), + set->extra ? 1 : 3, 5, row, row + 1, GTK_FILL, + GTK_SHRINK | GTK_FILL, 0, 0); +} + +static GtkWidget * +setup_create_entry (GtkWidget *table, int row, const setting *set) +{ + GtkWidget *label; + GtkWidget *wid, *bwid; + + label = gtk_label_new (_(set->label)); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), label, 2, 3, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); + + wid = gtk_entry_new (); + g_object_set_data (G_OBJECT (wid), "lbl", label); + if (set->list) + gtk_entry_set_visibility (GTK_ENTRY (wid), FALSE); + if (set->tooltip) + gtk_widget_set_tooltip_text (wid, _(set->tooltip)); + gtk_entry_set_max_length (GTK_ENTRY (wid), set->extra - 1); + gtk_entry_set_text (GTK_ENTRY (wid), setup_get_str (&setup_prefs, set)); + g_signal_connect (G_OBJECT (wid), "changed", + G_CALLBACK (setup_entry_cb), (gpointer)set); + + if (set->offset == P_OFFSETNL(hex_net_proxy_user)) + proxy_user = wid; + if (set->offset == P_OFFSETNL(hex_net_proxy_pass)) + proxy_pass = wid; + + /* only http and Socks5 can auth */ + if ( (set->offset == P_OFFSETNL(hex_net_proxy_pass) || + set->offset == P_OFFSETNL(hex_net_proxy_user)) && + (setup_prefs.hex_net_proxy_type != 4 && setup_prefs.hex_net_proxy_type != 3 && setup_prefs.hex_net_proxy_type != 5) ) + gtk_widget_set_sensitive (wid, FALSE); + + if (set->type == ST_ENTRY) + gtk_table_attach (GTK_TABLE (table), wid, 3, 6, row, row + 1, + GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0); + else + { + gtk_table_attach (GTK_TABLE (table), wid, 3, 5, row, row + 1, + GTK_EXPAND | GTK_FILL, GTK_SHRINK, 0, 0); + bwid = gtk_button_new_with_label (_("Browse...")); + gtk_table_attach (GTK_TABLE (table), bwid, 5, 6, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_FILL, 0, 0); + if (set->type == ST_EFILE) + g_signal_connect (G_OBJECT (bwid), "clicked", + G_CALLBACK (setup_browsefile_cb), wid); + if (set->type == ST_EFONT) + g_signal_connect (G_OBJECT (bwid), "clicked", + G_CALLBACK (setup_browsefont_cb), wid); + if (set->type == ST_EFOLDER) + g_signal_connect (G_OBJECT (bwid), "clicked", + G_CALLBACK (setup_browsefolder_cb), wid); + } + + return wid; +} + +static void +setup_create_header (GtkWidget *table, int row, char *labeltext) +{ + GtkWidget *label; + char buf[128]; + + if (row == 0) + g_snprintf (buf, sizeof (buf), "<b>%s</b>", _(labeltext)); + else + g_snprintf (buf, sizeof (buf), "\n<b>%s</b>", _(labeltext)); + + label = gtk_label_new (NULL); + gtk_label_set_markup (GTK_LABEL (label), buf); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), label, 0, 4, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 5); +} + +static void +setup_create_button (GtkWidget *table, int row, char *label, GCallback callback) +{ + GtkWidget *but = gtk_button_new_with_label (label); + gtk_table_attach (GTK_TABLE (table), but, 2, 3, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 5); + g_signal_connect (G_OBJECT (but), "clicked", callback, NULL); +} + +static GtkWidget * +setup_create_frame (void) +{ + GtkWidget *tab; + + tab = gtk_table_new (3, 2, FALSE); + gtk_container_set_border_width (GTK_CONTAINER (tab), 6); + gtk_table_set_row_spacings (GTK_TABLE (tab), 2); + gtk_table_set_col_spacings (GTK_TABLE (tab), 3); + + return tab; +} + +static void +open_data_cb (GtkWidget *button, gpointer data) +{ + fe_open_url (get_xdir ()); +} + +static GtkWidget * +setup_create_page (const setting *set) +{ + int i, row, do_disable; + GtkWidget *tab; + GtkWidget *wid = NULL, *parentwid = NULL; + + tab = setup_create_frame (); + gtk_container_set_border_width (GTK_CONTAINER (tab), 6); + + i = row = do_disable = 0; + while (set[i].type != ST_END) + { + switch (set[i].type) + { + case ST_HEADER: + setup_create_header (tab, row, set[i].label); + break; + case ST_EFONT: + case ST_ENTRY: + case ST_EFILE: + case ST_EFOLDER: + wid = setup_create_entry (tab, row, &set[i]); + break; + case ST_TOGGLR: + row--; + setup_create_toggleR (tab, row, &set[i]); + break; + case ST_TOGGLE: + wid = setup_create_toggleL (tab, row, &set[i]); + if (set[i].extra) + do_disable = set[i].extra; + break; + case ST_3OGGLE: + setup_create_3oggle (tab, row, &set[i]); + break; + case ST_MENU: + setup_create_menu (tab, row, &set[i]); + break; + case ST_RADIO: + row += setup_create_radio (tab, row, &set[i]); + break; + case ST_NUMBER: + wid = setup_create_spin (tab, row, &set[i]); + break; + case ST_HSCALE: + setup_create_hscale (tab, row, &set[i]); + break; + case ST_LABEL: + setup_create_label (tab, row, &set[i]); + break; + case ST_ALERTHEAD: + setup_create_alert_header (tab, row, &set[i]); + } + + if (do_disable) + { + if (GTK_IS_WIDGET (parentwid)) + { + g_signal_connect (G_OBJECT (parentwid), "toggled", G_CALLBACK(setup_toggle_sensitive_cb), wid); + gtk_widget_set_sensitive (wid, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (parentwid))); + do_disable--; + if (!do_disable) + parentwid = NULL; + } + else + parentwid = wid; + } + + i++; + row++; + } + + if (set == logging_settings) + { + setup_create_button (tab, row, _("Open Data Folder"), G_CALLBACK(open_data_cb)); + } + + return tab; +} + +static void +setup_color_ok_cb (GtkWidget *button, GtkWidget *dialog) +{ + GtkColorSelectionDialog *cdialog = GTK_COLOR_SELECTION_DIALOG (dialog); + GdkColor *col; + GdkColor old_color; + GtkStyle *style; + + col = g_object_get_data (G_OBJECT (button), "c"); + old_color = *col; + + button = g_object_get_data (G_OBJECT (button), "b"); + + if (!GTK_IS_WIDGET (button)) + { + gtk_widget_destroy (dialog); + return; + } + + color_change = TRUE; + + gtk_color_selection_get_current_color (GTK_COLOR_SELECTION (gtk_color_selection_dialog_get_color_selection (cdialog)), col); + + gdk_colormap_alloc_color (gtk_widget_get_colormap (button), col, TRUE, TRUE); + + style = gtk_style_new (); + style->bg[0] = *col; + gtk_widget_set_style (button, style); + g_object_unref (style); + + /* is this line correct?? */ + gdk_colormap_free_colors (gtk_widget_get_colormap (button), &old_color, 1); + + gtk_widget_destroy (dialog); +} + +static void +setup_color_cb (GtkWidget *button, gpointer userdata) +{ + GtkWidget *dialog, *cancel_button, *ok_button, *help_button; + GtkColorSelectionDialog *cdialog; + GdkColor *color; + + color = &colors[GPOINTER_TO_INT (userdata)]; + + dialog = gtk_color_selection_dialog_new (_("Select color")); + cdialog = GTK_COLOR_SELECTION_DIALOG (dialog); + + g_object_get (G_OBJECT(cdialog), "cancel-button", &cancel_button, + "ok-button", &ok_button, + "help-button", &help_button, NULL); + + gtk_widget_hide (help_button); + g_signal_connect (G_OBJECT (ok_button), "clicked", + G_CALLBACK (setup_color_ok_cb), dialog); + g_signal_connect (G_OBJECT (cancel_button), "clicked", + G_CALLBACK (gtkutil_destroy), dialog); + g_object_set_data (G_OBJECT (ok_button), "c", color); + g_object_set_data (G_OBJECT (ok_button), "b", button); + gtk_widget_set_sensitive (help_button, FALSE); + gtk_color_selection_set_current_color (GTK_COLOR_SELECTION (gtk_color_selection_dialog_get_color_selection (cdialog)), color); + gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (setup_window)); + gtk_window_set_modal (GTK_WINDOW (dialog), TRUE); + gtk_widget_show (dialog); + + g_object_unref (cancel_button); + g_object_unref (ok_button); + g_object_unref (help_button); +} + +static void +setup_create_color_button (GtkWidget *table, int num, int row, int col) +{ + GtkWidget *but; + GtkStyle *style; + char buf[64]; + + if (num > 31) + strcpy (buf, "<span size=\"x-small\"> </span>"); + else + /* 12345678901 23456789 01 23456789 */ + sprintf (buf, "<span size=\"x-small\">%d</span>", num); + but = gtk_button_new_with_label (" "); + gtk_label_set_markup (GTK_LABEL (gtk_bin_get_child (GTK_BIN (but))), buf); + /* win32 build uses this to turn off themeing */ + g_object_set_data (G_OBJECT (but), "hexchat-color", (gpointer)1); + gtk_table_attach (GTK_TABLE (table), but, col, col+1, row, row+1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + g_signal_connect (G_OBJECT (but), "clicked", + G_CALLBACK (setup_color_cb), GINT_TO_POINTER (num)); + style = gtk_style_new (); + style->bg[GTK_STATE_NORMAL] = colors[num]; + gtk_widget_set_style (but, style); + g_object_unref (style); +} + +static void +setup_create_other_colorR (char *text, int num, int row, GtkWidget *tab) +{ + GtkWidget *label; + + label = gtk_label_new (text); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (tab), label, 5, 9, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); + setup_create_color_button (tab, num, row, 9); +} + +static void +setup_create_other_color (char *text, int num, int row, GtkWidget *tab) +{ + GtkWidget *label; + + label = gtk_label_new (text); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (tab), label, 2, 3, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); + setup_create_color_button (tab, num, row, 3); +} + +static GtkWidget * +setup_create_color_page (void) +{ + GtkWidget *tab, *box, *label; + int i; + + box = gtk_vbox_new (FALSE, 0); + gtk_container_set_border_width (GTK_CONTAINER (box), 6); + + tab = gtk_table_new (9, 2, FALSE); + gtk_container_set_border_width (GTK_CONTAINER (tab), 6); + gtk_table_set_row_spacings (GTK_TABLE (tab), 2); + gtk_table_set_col_spacings (GTK_TABLE (tab), 3); + gtk_container_add (GTK_CONTAINER (box), tab); + + setup_create_header (tab, 0, N_("Text Colors")); + + label = gtk_label_new (_("mIRC colors:")); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (tab), label, 2, 3, 1, 2, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); + + for (i = 0; i < 16; i++) + setup_create_color_button (tab, i, 1, i+3); + + label = gtk_label_new (_("Local colors:")); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (tab), label, 2, 3, 2, 3, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); + + for (i = 16; i < 32; i++) + setup_create_color_button (tab, i, 2, (i+3) - 16); + + setup_create_other_color (_("Foreground:"), COL_FG, 3, tab); + setup_create_other_colorR (_("Background:"), COL_BG, 3, tab); + + setup_create_header (tab, 5, N_("Selected Text")); + + setup_create_other_color (_("Foreground:"), COL_MARK_FG, 6, tab); + setup_create_other_colorR (_("Background:"), COL_MARK_BG, 6, tab); + + setup_create_header (tab, 8, N_("Interface Colors")); + + setup_create_other_color (_("New data:"), COL_NEW_DATA, 9, tab); + setup_create_other_colorR (_("Marker line:"), COL_MARKER, 9, tab); + setup_create_other_color (_("New message:"), COL_NEW_MSG, 10, tab); + setup_create_other_colorR (_("Away user:"), COL_AWAY, 10, tab); + setup_create_other_color (_("Highlight:"), COL_HILIGHT, 11, tab); + setup_create_other_colorR (_("Spell checker:"), COL_SPELL, 11, tab); + + setup_create_header (tab, 15, N_("Color Stripping")); + + /* label = gtk_label_new (_("Strip colors from:")); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (tab), label, 2, 3, 16, 17, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); */ + + for (i = 0; i < 3; i++) + { + setup_create_toggleL (tab, i + 16, &color_settings[i]); + } + + return box; +} + +/* === GLOBALS for sound GUI === */ + +static GtkWidget *sndfile_entry; +static int ignore_changed = FALSE; + +extern struct text_event te[]; /* text.c */ +extern char *sound_files[]; + +static void +setup_snd_populate (GtkTreeView * treeview) +{ + GtkListStore *store; + GtkTreeIter iter; + GtkTreeSelection *sel; + GtkTreePath *path; + int i; + + sel = gtk_tree_view_get_selection (treeview); + store = (GtkListStore *)gtk_tree_view_get_model (treeview); + + for (i = NUM_XP-1; i >= 0; i--) + { + gtk_list_store_prepend (store, &iter); + if (sound_files[i]) + gtk_list_store_set (store, &iter, 0, te[i].name, 1, sound_files[i], 2, i, -1); + else + gtk_list_store_set (store, &iter, 0, te[i].name, 1, "", 2, i, -1); + if (i == last_selected_row) + { + gtk_tree_selection_select_iter (sel, &iter); + path = gtk_tree_model_get_path (GTK_TREE_MODEL (store), &iter); + if (path) + { + gtk_tree_view_scroll_to_cell (treeview, path, NULL, TRUE, 0.5, 0.5); + gtk_tree_view_set_cursor (treeview, path, NULL, FALSE); + gtk_tree_path_free (path); + } + } + } +} + +static int +setup_snd_get_selected (GtkTreeSelection *sel, GtkTreeIter *iter) +{ + int n; + GtkTreeModel *model; + + if (!gtk_tree_selection_get_selected (sel, &model, iter)) + return -1; + + gtk_tree_model_get (model, iter, 2, &n, -1); + return n; +} + +static void +setup_snd_row_cb (GtkTreeSelection *sel, gpointer user_data) +{ + int n; + GtkTreeIter iter; + + n = setup_snd_get_selected (sel, &iter); + if (n == -1) + return; + last_selected_row = n; + + ignore_changed = TRUE; + if (sound_files[n]) + gtk_entry_set_text (GTK_ENTRY (sndfile_entry), sound_files[n]); + else + gtk_entry_set_text (GTK_ENTRY (sndfile_entry), ""); + ignore_changed = FALSE; +} + +static void +setup_snd_add_columns (GtkTreeView * treeview) +{ + GtkCellRenderer *renderer; + GtkTreeModel *model; + + /* event column */ + renderer = gtk_cell_renderer_text_new (); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview), + -1, _("Event"), renderer, + "text", 0, NULL); + + /* file column */ + renderer = gtk_cell_renderer_text_new (); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview), + -1, _("Sound file"), renderer, + "text", 1, NULL); + + model = GTK_TREE_MODEL (gtk_list_store_new (3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT)); + gtk_tree_view_set_model (GTK_TREE_VIEW (treeview), model); + g_object_unref (model); +} + +static void +setup_snd_filereq_cb (GtkWidget *entry, char *file) +{ + if (file) + { + if (file[0]) + { + /* Use just the filename if the given sound file is in the default <config>/sounds directory. + * We're comparing absolute paths so this won't work in portable mode which uses a relative path. + */ + if (!strcmp (g_path_get_dirname (file), g_build_filename (get_xdir (), HEXCHAT_SOUND_DIR, NULL))) + { + gtk_entry_set_text (GTK_ENTRY (entry), g_path_get_basename (file)); + } + else + { + gtk_entry_set_text (GTK_ENTRY (entry), file); + } + } + } +} + +static void +setup_snd_browse_cb (GtkWidget *button, GtkEntry *entry) +{ + char *sounds_dir = g_build_filename (get_xdir (), HEXCHAT_SOUND_DIR, NULL); + char *filter = NULL; + int filter_type; +#ifdef WIN32 /* win32 only supports wav, others could support anything */ + filter = "*.wav"; + filter_type = FRF_EXTENSIONS; +#else + filter = "audio/*"; + filter_type = FRF_MIMETYPES; +#endif + + gtkutil_file_req (GTK_WINDOW (setup_window), _("Select a sound file"), setup_snd_filereq_cb, entry, + sounds_dir, filter, FRF_MODAL|FRF_FILTERISINITIAL|filter_type); + g_free (sounds_dir); +} + +static void +setup_snd_play_cb (GtkWidget *button, GtkEntry *entry) +{ + sound_play (gtk_entry_get_text (entry), FALSE); +} + +static void +setup_snd_changed_cb (GtkEntry *ent, GtkTreeView *tree) +{ + int n; + GtkTreeIter iter; + GtkListStore *store; + GtkTreeSelection *sel; + + if (ignore_changed) + return; + + sel = gtk_tree_view_get_selection (tree); + n = setup_snd_get_selected (sel, &iter); + if (n == -1) + return; + + /* get the new sound file */ + g_free (sound_files[n]); + sound_files[n] = g_strdup (gtk_entry_get_text (GTK_ENTRY (ent))); + + /* update the TreeView list */ + store = (GtkListStore *)gtk_tree_view_get_model (tree); + gtk_list_store_set (store, &iter, 1, sound_files[n], -1); + + gtk_widget_set_sensitive (cancel_button, FALSE); +} + +static GtkWidget * +setup_create_sound_page (void) +{ + GtkWidget *vbox1; + GtkWidget *vbox2; + GtkWidget *scrolledwindow1; + GtkWidget *sound_tree; + GtkWidget *table1; + GtkWidget *sound_label; + GtkWidget *sound_browse; + GtkWidget *sound_play; + GtkTreeSelection *sel; + + vbox1 = gtk_vbox_new (FALSE, 0); + gtk_container_set_border_width (GTK_CONTAINER (vbox1), 6); + gtk_widget_show (vbox1); + + vbox2 = gtk_vbox_new (FALSE, 0); + gtk_widget_show (vbox2); + gtk_container_add (GTK_CONTAINER (vbox1), vbox2); + + scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL); + gtk_widget_show (scrolledwindow1); + gtk_container_add (GTK_CONTAINER (vbox2), scrolledwindow1); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow1), + GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow1), + GTK_SHADOW_IN); + + sound_tree = gtk_tree_view_new (); + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (sound_tree)); + gtk_tree_selection_set_mode (sel, GTK_SELECTION_SINGLE); + setup_snd_add_columns (GTK_TREE_VIEW (sound_tree)); + setup_snd_populate (GTK_TREE_VIEW (sound_tree)); + g_signal_connect (G_OBJECT (sel), "changed", + G_CALLBACK (setup_snd_row_cb), NULL); + gtk_widget_show (sound_tree); + gtk_container_add (GTK_CONTAINER (scrolledwindow1), sound_tree); + gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (sound_tree), TRUE); + + table1 = gtk_table_new (2, 3, FALSE); + gtk_widget_show (table1); + gtk_box_pack_start (GTK_BOX (vbox2), table1, FALSE, TRUE, 8); + gtk_table_set_row_spacings (GTK_TABLE (table1), 2); + gtk_table_set_col_spacings (GTK_TABLE (table1), 4); + + sound_label = gtk_label_new_with_mnemonic (_("Sound file:")); + gtk_widget_show (sound_label); + gtk_table_attach (GTK_TABLE (table1), sound_label, 0, 1, 0, 1, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment (GTK_MISC (sound_label), 0, 0.5); + + sndfile_entry = gtk_entry_new (); + g_signal_connect (G_OBJECT (sndfile_entry), "changed", + G_CALLBACK (setup_snd_changed_cb), sound_tree); + gtk_widget_show (sndfile_entry); + gtk_table_attach (GTK_TABLE (table1), sndfile_entry, 0, 1, 1, 2, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + sound_browse = gtk_button_new_with_mnemonic (_("_Browse...")); + g_signal_connect (G_OBJECT (sound_browse), "clicked", + G_CALLBACK (setup_snd_browse_cb), sndfile_entry); + gtk_widget_show (sound_browse); + gtk_table_attach (GTK_TABLE (table1), sound_browse, 1, 2, 1, 2, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + +#ifdef GTK_STOCK_MEDIA_PLAY + sound_play = gtk_button_new_from_stock (GTK_STOCK_MEDIA_PLAY); +#else + sound_play = gtk_button_new_with_mnemonic (_("_Play")); +#endif + g_signal_connect (G_OBJECT (sound_play), "clicked", + G_CALLBACK (setup_snd_play_cb), sndfile_entry); + gtk_widget_show (sound_play); + gtk_table_attach (GTK_TABLE (table1), sound_play, 2, 3, 1, 2, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + setup_snd_row_cb (sel, NULL); + + return vbox1; +} + +static void +setup_add_page (const char *title, GtkWidget *book, GtkWidget *tab) +{ + GtkWidget *label, *vvbox, *viewport; + GtkScrolledWindow *sw; + char buf[128]; + + vvbox = gtk_vbox_new (FALSE, 0); + + /* label */ + label = gtk_label_new (NULL); + g_snprintf (buf, sizeof (buf), "<b><big>%s</big></b>", _(title)); + gtk_label_set_markup (GTK_LABEL (label), buf); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_misc_set_padding (GTK_MISC (label), 2, 1); + gtk_box_pack_start (GTK_BOX (vvbox), label, FALSE, FALSE, 2); + + gtk_container_add (GTK_CONTAINER (vvbox), tab); + + sw = GTK_SCROLLED_WINDOW(gtk_scrolled_window_new (NULL, NULL)); + gtk_scrolled_window_set_shadow_type (sw, GTK_SHADOW_IN); + gtk_scrolled_window_set_policy (sw, GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); + gtk_scrolled_window_add_with_viewport (sw, vvbox); + + viewport = gtk_bin_get_child (GTK_BIN(sw)); + gtk_viewport_set_shadow_type (GTK_VIEWPORT(viewport), GTK_SHADOW_NONE); + + gtk_notebook_append_page (GTK_NOTEBOOK (book), GTK_WIDGET(sw), NULL); +} + +static const char *const cata[] = +{ + N_("Interface"), + N_("Appearance"), + N_("Input box"), + N_("User list"), + N_("Channel switcher"), + N_("Colors"), + NULL, + N_("Chatting"), + N_("General"), + N_("Alerts"), + N_("Sounds"), + N_("Logging"), + N_("Advanced"), + NULL, + N_("Network"), + N_("Network setup"), + N_("File transfers"), + N_("Identd"), + NULL, + NULL +}; + +static GtkWidget * +setup_create_pages (GtkWidget *box) +{ + GtkWidget *book; + GtkWindow *win = GTK_WINDOW(gtk_widget_get_toplevel (box)); + + book = gtk_notebook_new (); + + setup_add_page (cata[1], book, setup_create_page (appearance_settings)); + setup_add_page (cata[2], book, setup_create_page (inputbox_settings)); + setup_add_page (cata[3], book, setup_create_page (userlist_settings)); + setup_add_page (cata[4], book, setup_create_page (tabs_settings)); + setup_add_page (cata[5], book, setup_create_color_page ()); + + setup_add_page (cata[8], book, setup_create_page (general_settings)); + + if (!gtkutil_tray_icon_supported (win) && !notification_backend_supported ()) + { + setup_add_page (cata[9], book, setup_create_page (alert_settings_unityandnonotifications)); + } + else if (!gtkutil_tray_icon_supported (win)) + { + setup_add_page (cata[9], book, setup_create_page (alert_settings_unity)); + } + else if (!notification_backend_supported ()) + { + setup_add_page (cata[9], book, setup_create_page (alert_settings_nonotifications)); + } + else + { + setup_add_page (cata[9], book, setup_create_page (alert_settings)); + } + + setup_add_page (cata[10], book, setup_create_sound_page ()); + setup_add_page (cata[11], book, setup_create_page (logging_settings)); + setup_add_page (cata[12], book, setup_create_page (advanced_settings)); + + setup_add_page (cata[15], book, setup_create_page (network_settings)); + setup_add_page (cata[16], book, setup_create_page (filexfer_settings)); + setup_add_page (cata[17], book, setup_create_page (identd_settings)); + + gtk_notebook_set_show_tabs (GTK_NOTEBOOK (book), FALSE); + gtk_notebook_set_show_border (GTK_NOTEBOOK (book), FALSE); + gtk_container_add (GTK_CONTAINER (box), book); + + return book; +} + +static void +setup_tree_cb (GtkTreeView *treeview, GtkWidget *book) +{ + GtkTreeSelection *selection = gtk_tree_view_get_selection (treeview); + GtkTreeIter iter; + GtkTreeModel *model; + int page; + + if (gtk_tree_selection_get_selected (selection, &model, &iter)) + { + gtk_tree_model_get (model, &iter, 1, &page, -1); + if (page != -1) + { + gtk_notebook_set_current_page (GTK_NOTEBOOK (book), page); + last_selected_page = page; + } + } +} + +static gboolean +setup_tree_select_filter (GtkTreeSelection *selection, GtkTreeModel *model, + GtkTreePath *path, gboolean path_selected, + gpointer data) +{ + if (gtk_tree_path_get_depth (path) > 1) + return TRUE; + return FALSE; +} + +static void +setup_create_tree (GtkWidget *box, GtkWidget *book) +{ + GtkWidget *tree; + GtkWidget *frame; + GtkTreeStore *model; + GtkTreeIter iter; + GtkTreeIter child_iter; + GtkTreeIter *sel_iter = NULL; + GtkCellRenderer *renderer; + GtkTreeSelection *sel; + int i, page; + + model = gtk_tree_store_new (2, G_TYPE_STRING, G_TYPE_INT); + + i = 0; + page = 0; + do + { + gtk_tree_store_append (model, &iter, NULL); + gtk_tree_store_set (model, &iter, 0, _(cata[i]), 1, -1, -1); + i++; + + do + { + gtk_tree_store_append (model, &child_iter, &iter); + gtk_tree_store_set (model, &child_iter, 0, _(cata[i]), 1, page, -1); + if (page == last_selected_page) + sel_iter = gtk_tree_iter_copy (&child_iter); + page++; + i++; + } while (cata[i]); + + i++; + + } while (cata[i]); + + tree = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model)); + g_object_unref (G_OBJECT (model)); + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree)); + gtk_tree_selection_set_mode (sel, GTK_SELECTION_BROWSE); + gtk_tree_selection_set_select_function (sel, setup_tree_select_filter, + NULL, NULL); + g_signal_connect (G_OBJECT (tree), "cursor_changed", + G_CALLBACK (setup_tree_cb), book); + + renderer = gtk_cell_renderer_text_new (); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree), + -1, _("Categories"), renderer, "text", 0, NULL); + gtk_tree_view_expand_all (GTK_TREE_VIEW (tree)); + + frame = gtk_frame_new (NULL); + gtk_container_add (GTK_CONTAINER (frame), tree); + gtk_box_pack_start (GTK_BOX (box), frame, 0, 0, 0); + gtk_box_reorder_child (GTK_BOX (box), frame, 0); + + if (sel_iter) + { + gtk_tree_selection_select_iter (sel, sel_iter); + gtk_tree_iter_free (sel_iter); + } +} + +static void +setup_apply_entry_style (GtkWidget *entry) +{ + gtk_widget_modify_base (entry, GTK_STATE_NORMAL, &colors[COL_BG]); + gtk_widget_modify_text (entry, GTK_STATE_NORMAL, &colors[COL_FG]); + gtk_widget_modify_font (entry, input_style->font_desc); +} + +static void +setup_apply_to_sess (session_gui *gui) +{ + mg_update_xtext (gui->xtext); + + if (prefs.hex_gui_ulist_style) + gtk_widget_set_style (gui->user_tree, input_style); + + if (prefs.hex_gui_input_style) + { + extern char cursor_color_rc[]; + char buf[256]; + sprintf (buf, cursor_color_rc, + (colors[COL_FG].red >> 8), + (colors[COL_FG].green >> 8), + (colors[COL_FG].blue >> 8)); + gtk_rc_parse_string (buf); + + setup_apply_entry_style (gui->input_box); + setup_apply_entry_style (gui->limit_entry); + setup_apply_entry_style (gui->key_entry); + setup_apply_entry_style (gui->topic_entry); + } + + if (prefs.hex_gui_ulist_buttons) + gtk_widget_show (gui->button_box); + else + gtk_widget_hide (gui->button_box); + + /* update active languages */ + sexy_spell_entry_deactivate_language((SexySpellEntry *)gui->input_box,NULL); + sexy_spell_entry_activate_default_languages((SexySpellEntry *)gui->input_box); + + sexy_spell_entry_set_checked ((SexySpellEntry *)gui->input_box, prefs.hex_gui_input_spell); + sexy_spell_entry_set_parse_attributes ((SexySpellEntry *)gui->input_box, prefs.hex_gui_input_attr); +} + +static void +unslash (char *dir) +{ + if (dir[0]) + { + int len = strlen (dir) - 1; +#ifdef WIN32 + if (dir[len] == '/' || dir[len] == '\\') +#else + if (dir[len] == '/') +#endif + dir[len] = 0; + } +} + +void +setup_apply_real (int new_pix, int do_ulist, int do_layout, int do_identd) +{ + GSList *list; + session *sess; + int done_main = FALSE; + + /* remove trailing slashes */ + unslash (prefs.hex_dcc_dir); + unslash (prefs.hex_dcc_completed_dir); + + g_mkdir (prefs.hex_dcc_dir, 0700); + g_mkdir (prefs.hex_dcc_completed_dir, 0700); + + if (new_pix) + { + if (channelwin_pix) + g_object_unref (channelwin_pix); + channelwin_pix = pixmap_load_from_file (prefs.hex_text_background); + } + + input_style = create_input_style (input_style); + + list = sess_list; + while (list) + { + sess = list->data; + if (sess->gui->is_tab) + { + /* only apply to main tabwindow once */ + if (!done_main) + { + done_main = TRUE; + setup_apply_to_sess (sess->gui); + } + } else + { + setup_apply_to_sess (sess->gui); + } + + log_open_or_close (sess); + + if (do_ulist) + userlist_rehash (sess); + + list = list->next; + } + + mg_apply_setup (); + tray_apply_setup (); + hexchat_reinit_timers (); + + if (do_layout) + menu_change_layout (); + + if (do_identd) + handle_command (current_sess, "IDENTD reload", FALSE); +} + +static void +setup_apply (struct hexchatprefs *pr) +{ +#ifdef WIN32 + PangoFontDescription *old_desc; + PangoFontDescription *new_desc; + char buffer[4 * FONTNAMELEN + 1]; +#endif + int new_pix = FALSE; + int noapply = FALSE; + int do_ulist = FALSE; + int do_layout = FALSE; + int do_identd = FALSE; + + if (strcmp (pr->hex_text_background, prefs.hex_text_background) != 0) + new_pix = TRUE; + +#define DIFF(a) (pr->a != prefs.a) + +#ifdef WIN32 + if (DIFF (hex_gui_lang)) + noapply = TRUE; +#endif + if (DIFF (hex_gui_compact)) + noapply = TRUE; + if (DIFF (hex_gui_input_icon)) + noapply = TRUE; + if (DIFF (hex_gui_input_nick)) + noapply = TRUE; + if (DIFF (hex_gui_lagometer)) + noapply = TRUE; + if (DIFF (hex_gui_tab_icons)) + noapply = TRUE; + if (DIFF (hex_gui_tab_server)) + noapply = TRUE; + if (DIFF (hex_gui_tab_small)) + noapply = TRUE; + if (DIFF (hex_gui_tab_sort)) + noapply = TRUE; + if (DIFF (hex_gui_tab_trunc)) + noapply = TRUE; + if (DIFF (hex_gui_throttlemeter)) + noapply = TRUE; + if (DIFF (hex_gui_ulist_count)) + noapply = TRUE; + if (DIFF (hex_gui_ulist_icons)) + noapply = TRUE; + if (DIFF (hex_gui_ulist_show_hosts)) + noapply = TRUE; + if (DIFF (hex_gui_ulist_style)) + noapply = TRUE; + if (DIFF (hex_gui_ulist_sort)) + noapply = TRUE; + if (DIFF (hex_gui_input_style) && prefs.hex_gui_input_style == TRUE) + noapply = TRUE; /* Requires restart to *disable* */ + + if (DIFF (hex_gui_tab_dots)) + do_layout = TRUE; + if (DIFF (hex_gui_tab_layout)) + do_layout = TRUE; + + if (DIFF (hex_identd_server) || DIFF (hex_identd_port)) + do_identd = TRUE; + + if (color_change || (DIFF (hex_gui_ulist_color)) || (DIFF (hex_away_size_max)) || (DIFF (hex_away_track))) + do_ulist = TRUE; + + if ((pr->hex_gui_tab_pos == 5 || pr->hex_gui_tab_pos == 6) && + pr->hex_gui_tab_layout == 2 && pr->hex_gui_tab_pos != prefs.hex_gui_tab_pos) + fe_message (_("You cannot place the tree on the top or bottom!\n" + "Please change to the <b>Tabs</b> layout in the <b>View</b>" + " menu first."), + FE_MSG_WARN | FE_MSG_MARKUP); + + /* format cannot be blank, there is already a setting for this */ + if (pr->hex_stamp_text_format[0] == 0) + { + pr->hex_stamp_text = 0; + strcpy (pr->hex_stamp_text_format, prefs.hex_stamp_text_format); + } + + memcpy (&prefs, pr, sizeof (prefs)); + +#ifdef WIN32 + /* merge hex_font_main and hex_font_alternative into hex_font_normal */ + old_desc = pango_font_description_from_string (prefs.hex_text_font_main); + sprintf (buffer, "%s,%s", pango_font_description_get_family (old_desc), prefs.hex_text_font_alternative); + new_desc = pango_font_description_from_string (buffer); + pango_font_description_set_weight (new_desc, pango_font_description_get_weight (old_desc)); + pango_font_description_set_style (new_desc, pango_font_description_get_style (old_desc)); + pango_font_description_set_size (new_desc, pango_font_description_get_size (old_desc)); + sprintf (prefs.hex_text_font, "%s", pango_font_description_to_string (new_desc)); + + /* FIXME this is not required after pango_font_description_from_string() + g_free (old_desc); + g_free (new_desc); + */ +#endif + + if (prefs.hex_irc_real_name[0] == 0) + { + fe_message (_("The Real name option cannot be left blank. Falling back to \"realname\"."), FE_MSG_WARN); + strcpy (prefs.hex_irc_real_name, "realname"); + } + + setup_apply_real (new_pix, do_ulist, do_layout, do_identd); + + if (noapply) + fe_message (_("Some settings were changed that require a" + " restart to take full effect."), FE_MSG_WARN); + +#ifndef WIN32 + if (prefs.hex_dcc_auto_recv == 2) /* Auto */ + { + if (!strcmp ((char *)g_get_home_dir (), prefs.hex_dcc_dir)) + { + fe_message (_("*WARNING*\n" + "Auto accepting DCC to your home directory\n" + "can be dangerous and is exploitable. Eg:\n" + "Someone could send you a .bash_profile"), FE_MSG_WARN); + } + } +#endif +} + +static void +setup_ok_cb (GtkWidget *but, GtkWidget *win) +{ + gtk_widget_destroy (win); + setup_apply (&setup_prefs); + save_config (); + palette_save (); +} + +static GtkWidget * +setup_window_open (void) +{ + GtkWidget *wid, *win, *vbox, *hbox, *hbbox; + char buf[128]; + + g_snprintf(buf, sizeof(buf), _("Preferences - %s"), _(DISPLAY_NAME)); + win = gtkutil_window_new (buf, "prefs", 0, 600, 2); + + vbox = gtk_vbox_new (FALSE, 5); + gtk_container_set_border_width (GTK_CONTAINER (vbox), 6); + gtk_container_add (GTK_CONTAINER (win), vbox); + + hbox = gtk_hbox_new (FALSE, 4); + gtk_container_add (GTK_CONTAINER (vbox), hbox); + + setup_create_tree (hbox, setup_create_pages (hbox)); + + /* prepare the button box */ + hbbox = gtk_hbutton_box_new (); + gtk_button_box_set_layout (GTK_BUTTON_BOX (hbbox), GTK_BUTTONBOX_END); + gtk_box_set_spacing (GTK_BOX (hbbox), 4); + gtk_box_pack_end (GTK_BOX (vbox), hbbox, FALSE, FALSE, 0); + + cancel_button = wid = gtk_button_new_from_stock (GTK_STOCK_CANCEL); + g_signal_connect (G_OBJECT (wid), "clicked", + G_CALLBACK (gtkutil_destroy), win); + gtk_box_pack_start (GTK_BOX (hbbox), wid, FALSE, FALSE, 0); + + wid = gtk_button_new_from_stock (GTK_STOCK_OK); + g_signal_connect (G_OBJECT (wid), "clicked", + G_CALLBACK (setup_ok_cb), win); + gtk_box_pack_start (GTK_BOX (hbbox), wid, FALSE, FALSE, 0); + + gtk_widget_show_all (win); + + return win; +} + +static void +setup_close_cb (GtkWidget *win, GtkWidget **swin) +{ + *swin = NULL; + + if (font_dialog) + { + gtk_widget_destroy (font_dialog); + font_dialog = NULL; + } +} + +void +setup_open (void) +{ + if (setup_window) + { + gtk_window_present (GTK_WINDOW (setup_window)); + return; + } + + memcpy (&setup_prefs, &prefs, sizeof (prefs)); + + color_change = FALSE; + setup_window = setup_window_open (); + + g_signal_connect (G_OBJECT (setup_window), "destroy", + G_CALLBACK (setup_close_cb), &setup_window); +} diff --git a/hexchat/src/fe-gtk/setup.h b/hexchat/src/fe-gtk/setup.h new file mode 100644 index 0000000..b2c1a71 --- /dev/null +++ b/hexchat/src/fe-gtk/setup.h @@ -0,0 +1,25 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_SETUP_H +#define HEXCHAT_SETUP_H + +void setup_apply_real (int new_pix, int do_ulist, int do_layout, int do_identd); + +#endif diff --git a/hexchat/src/fe-gtk/sexy-iso-codes.c b/hexchat/src/fe-gtk/sexy-iso-codes.c new file mode 100644 index 0000000..06c8cd0 --- /dev/null +++ b/hexchat/src/fe-gtk/sexy-iso-codes.c @@ -0,0 +1,226 @@ +/* gtkspell - a spell-checking addon for GTK's TextView widget +* Copyright (c) 2013 Sandro Mani +* +* Based on gtkhtml-editor-spell-language.c code which is +* Copyright (C) 2008 Novell, Inc. +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2 of the License, or +* (at your option) any later version. +* +* This program 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 General Public License for more details. +* +* You should have received a copy of the GNU General Public License along +* with this program; if not, write to the Free Software Foundation, Inc., +* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +#include "config.h" + +#include "sexy-iso-codes.h" +#include <libintl.h> +#include <string.h> + +#define ISO_639_DOMAIN "iso_639" +#define ISO_3166_DOMAIN "iso_3166" + +static GHashTable *iso_639_table = NULL; +static GHashTable *iso_3166_table = NULL; + +static void +iso_639_start_element (GMarkupParseContext *context, +const gchar *element_name, +const gchar **attribute_names, +const gchar **attribute_values, +gpointer data, +GError **error) +{ + GHashTable *hash_table = data; + const gchar *name = NULL; + const gchar *code = NULL; + int i; + + if (strcmp (element_name, "iso_639_entry") != 0) + return; + + for (i = 0; attribute_names[i] != NULL; i++) + { + if (strcmp (attribute_names[i], "name") == 0) + name = attribute_values[i]; + else if (strcmp (attribute_names[i], "iso_639_1_code") == 0) + code = attribute_values[i]; + } + + if (code != NULL && *code != '\0' && name != NULL && *name != '\0') + g_hash_table_insert (hash_table, g_strdup (code), + g_strdup (dgettext (ISO_639_DOMAIN, name))); +} + +static void +iso_3166_start_element (GMarkupParseContext *context, +const gchar *element_name, +const gchar **attribute_names, +const gchar **attribute_values, +gpointer data, +GError **error) +{ + GHashTable *hash_table = data; + const gchar *name = NULL; + const gchar *code = NULL; + int i; + + if (strcmp (element_name, "iso_3166_entry") != 0) + return; + + for (i = 0; attribute_names[i] != NULL; i++) + { + if (strcmp (attribute_names[i], "name") == 0) + name = attribute_values[i]; + else if (strcmp (attribute_names[i], "alpha_2_code") == 0) + code = attribute_values[i]; + } + + if (code != NULL && *code != '\0' && name != NULL && *name != '\0') + g_hash_table_insert (hash_table, g_strdup (code), + g_strdup (dgettext (ISO_3166_DOMAIN, name))); +} + +static void +iso_codes_parse (const GMarkupParser *parser, +const gchar *basename, +GHashTable *hash_table) +{ + GMappedFile *mapped_file; + gchar *filename; + GError *error = NULL; + + filename = g_build_filename (ISO_CODES_PREFIX, "share", "xml", "iso-codes", + basename, NULL); + mapped_file = g_mapped_file_new (filename, FALSE, &error); + g_free (filename); + + if (mapped_file != NULL) + { + GMarkupParseContext *context; + const gchar *contents; + gsize length; + + context = g_markup_parse_context_new (parser, 0, hash_table, NULL); + contents = g_mapped_file_get_contents (mapped_file); + length = g_mapped_file_get_length (mapped_file); + g_markup_parse_context_parse (context, contents, length, &error); + g_markup_parse_context_free (context); + g_mapped_file_unref (mapped_file); + } + + if (error != NULL) + { + g_warning ("%s: %s", basename, error->message); + g_error_free (error); + } +} + +/** +* codetable_init: +* +* Initializes the code table. +*/ +void +codetable_init (void) +{ + GMarkupParser iso_639_parser = { + iso_639_start_element, NULL, NULL, NULL, NULL + }; + + GMarkupParser iso_3166_parser = { + iso_3166_start_element, NULL, NULL, NULL, NULL + }; + + g_return_if_fail (iso_639_table == NULL); + g_return_if_fail (iso_3166_table == NULL); + +#ifdef ENABLE_NLS + bindtextdomain (ISO_639_DOMAIN, ISO_CODES_LOCALEDIR); + bind_textdomain_codeset (ISO_639_DOMAIN, "UTF-8"); + + bindtextdomain (ISO_3166_DOMAIN, ISO_CODES_LOCALEDIR); + bind_textdomain_codeset (ISO_3166_DOMAIN, "UTF-8"); +#endif + + iso_639_table = g_hash_table_new_full (g_str_hash, g_str_equal, + (GDestroyNotify)g_free, (GDestroyNotify)g_free); + iso_3166_table = g_hash_table_new_full (g_str_hash, g_str_equal, + (GDestroyNotify)g_free, (GDestroyNotify)g_free); + + iso_codes_parse (&iso_639_parser, "iso_639.xml", iso_639_table); + iso_codes_parse (&iso_3166_parser, "iso_3166.xml", iso_3166_table); +} + +/** +* codetable_free: +* +* Frees the code table. +*/ +void +codetable_free (void) +{ + g_return_if_fail (iso_639_table != NULL); + g_return_if_fail (iso_3166_table != NULL); + + g_hash_table_unref (iso_639_table); + g_hash_table_unref (iso_3166_table); + + iso_639_table = NULL; + iso_3166_table = NULL; +} + +/** +* codetable_lookup: +* @language_code: A language code (i.e. "en_US") +* @language_name: (out) (transfer none): Pointer to the name of the language. +* This pointer is owned by the code table and must not be freed. +* @country_name: (out) (transfer none): Pointer to the name of the country. +* This pointer is owned by the code table and must not be freed. +* +* Looks up the language and country name for the specified language code. +* If no matching entries are found, language_name and country_name will +* simply contain the parts of the language code (i.e. "en" and "US"). +*/ +void +codetable_lookup (const gchar *language_code, const gchar **language_name, const gchar** country_name) +{ + gchar **parts; + + g_return_if_fail (iso_639_table != NULL); + g_return_if_fail (iso_3166_table != NULL); + + /* Split language code into parts. */ + parts = g_strsplit (language_code, "_", 2); + + g_return_if_fail (*parts != NULL); + + *language_name = g_hash_table_lookup (iso_639_table, parts[0]); + if (*language_name == NULL) + { + g_hash_table_insert (iso_639_table, g_strdup (parts[0]), + g_strdup (parts[0])); + *language_name = g_hash_table_lookup (iso_639_table, parts[0]); + } + + if (g_strv_length (parts) == 2) + { + *country_name = g_hash_table_lookup (iso_3166_table, parts[1]); + if (*country_name == NULL) + { + g_hash_table_insert (iso_3166_table, g_strdup (parts[1]), + g_strdup (parts[1])); + *country_name = g_hash_table_lookup (iso_3166_table, parts[1]); + } + } + + g_strfreev (parts); +} diff --git a/hexchat/src/fe-gtk/sexy-iso-codes.h b/hexchat/src/fe-gtk/sexy-iso-codes.h new file mode 100644 index 0000000..52949c7 --- /dev/null +++ b/hexchat/src/fe-gtk/sexy-iso-codes.h @@ -0,0 +1,37 @@ +/* gtkspell - a spell-checking addon for GTK's TextView widget +* Copyright (c) 2013 Sandro Mani +* +* Based on gtkhtml-editor-spell-language.c code which is +* Copyright (C) 2008 Novell, Inc. +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2 of the License, or +* (at your option) any later version. +* +* This program 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 General Public License for more details. +* +* You should have received a copy of the GNU General Public License along +* with this program; if not, write to the Free Software Foundation, Inc., +* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +#ifndef GTK_SPELL_CODETABLE_H +#define GTK_SPELL_CODETABLE_H + +#include <glib.h> + +G_BEGIN_DECLS + +void codetable_init (void); +void codetable_free (void); +void codetable_lookup (const gchar *language_code, + const gchar **language_name, + const gchar **country_name); + +G_END_DECLS + +#endif /* GTK_SPELL_CODETABLE_H */ \ No newline at end of file diff --git a/hexchat/src/fe-gtk/sexy-spell-entry.c b/hexchat/src/fe-gtk/sexy-spell-entry.c new file mode 100644 index 0000000..a304278 --- /dev/null +++ b/hexchat/src/fe-gtk/sexy-spell-entry.c @@ -0,0 +1,1683 @@ +/* + * @file libsexy/sexy-icon-entry.c Entry widget + * + * @Copyright (C) 2004-2006 Christian Hammond. + * Some of this code is from gtkspell, Copyright (C) 2002 Evan Martin. + * + * 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 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 + */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <gtk/gtk.h> +#include "sexy-spell-entry.h" +#include <string.h> +#include <fcntl.h> +#include <stdlib.h> +#include <glib/gi18n.h> +#include <sys/types.h> +#include <sys/stat.h> +#include "sexy-iso-codes.h" + +#ifdef WIN32 +#include "marshal.h" +#else +#include "../common/marshal.h" +#endif + +#ifdef WIN32 +#include "../common/typedef.h" +#include <io.h> +#else +#include <unistd.h> +#endif + +#include "../common/cfgfiles.h" +#include "../common/hexchatc.h" +#include "palette.h" +#include "xtext.h" + +/* + * Bunch of poop to make enchant into a runtime dependency rather than a + * compile-time dependency. This makes it so I don't have to hear the + * complaints from people with binary distributions who don't get spell + * checking because they didn't check their configure output. + */ +struct EnchantDict; +struct EnchantBroker; + +typedef void (*EnchantDictDescribeFn) (const char * const lang_tag, + const char * const provider_name, + const char * const provider_desc, + const char * const provider_file, + void * user_data); + +static struct EnchantBroker * (*enchant_broker_init) (void); +static void (*enchant_broker_free) (struct EnchantBroker * broker); +static void (*enchant_broker_free_dict) (struct EnchantBroker * broker, struct EnchantDict * dict); +static void (*enchant_broker_list_dicts) (struct EnchantBroker * broker, EnchantDictDescribeFn fn, void * user_data); +static struct EnchantDict * (*enchant_broker_request_dict) (struct EnchantBroker * broker, const char *const tag); + +static void (*enchant_dict_add_to_personal) (struct EnchantDict * dict, const char *const word, ssize_t len); +static void (*enchant_dict_add_to_session) (struct EnchantDict * dict, const char *const word, ssize_t len); +static int (*enchant_dict_check) (struct EnchantDict * dict, const char *const word, ssize_t len); +static void (*enchant_dict_describe) (struct EnchantDict * dict, EnchantDictDescribeFn fn, void * user_data); +static void (*enchant_dict_free_suggestions) (struct EnchantDict * dict, char **suggestions); +static void (*enchant_dict_store_replacement) (struct EnchantDict * dict, const char *const mis, ssize_t mis_len, const char *const cor, ssize_t cor_len); +static char ** (*enchant_dict_suggest) (struct EnchantDict * dict, const char *const word, ssize_t len, size_t * out_n_suggs); +static gboolean have_enchant = FALSE; + +struct _SexySpellEntryPriv +{ + struct EnchantBroker *broker; + PangoAttrList *attr_list; + gint mark_character; + GHashTable *dict_hash; + GSList *dict_list; + gchar **words; + gint *word_starts; + gint *word_ends; + gboolean checked; + gboolean parseattr; +}; + +static void sexy_spell_entry_class_init(SexySpellEntryClass *klass); +static void sexy_spell_entry_editable_init (GtkEditableClass *iface); +static void sexy_spell_entry_init(SexySpellEntry *entry); +static void sexy_spell_entry_finalize(GObject *obj); +static void sexy_spell_entry_destroy(GObject *obj); +static gint sexy_spell_entry_expose(GtkWidget *widget, GdkEventExpose *event); +static gint sexy_spell_entry_button_press(GtkWidget *widget, GdkEventButton *event); + +/* GtkEditable handlers */ +static void sexy_spell_entry_changed(GtkEditable *editable, gpointer data); + +/* Other handlers */ +static gboolean sexy_spell_entry_popup_menu(GtkWidget *widget, SexySpellEntry *entry); + +/* Internal utility functions */ +static gint gtk_entry_find_position (GtkEntry *entry, + gint x); +static gboolean word_misspelled (SexySpellEntry *entry, + int start, + int end); +static gboolean default_word_check (SexySpellEntry *entry, + const gchar *word); +static gboolean sexy_spell_entry_activate_language_internal (SexySpellEntry *entry, + const gchar *lang, + GError **error); +static gchar *get_lang_from_dict (struct EnchantDict *dict); +static void sexy_spell_entry_recheck_all (SexySpellEntry *entry); +static void entry_strsplit_utf8 (GtkEntry *entry, + gchar ***set, + gint **starts, + gint **ends); + +static GtkEntryClass *parent_class = NULL; + +#ifdef HAVE_ISO_CODES +static int codetable_ref = 0; +#endif + +G_DEFINE_TYPE_EXTENDED(SexySpellEntry, sexy_spell_entry, GTK_TYPE_ENTRY, 0, G_IMPLEMENT_INTERFACE(GTK_TYPE_EDITABLE, sexy_spell_entry_editable_init)); + +enum +{ + WORD_CHECK, + LAST_SIGNAL +}; +static guint signals[LAST_SIGNAL] = {0}; + +static PangoAttrList *empty_attrs_list = NULL; + +static gboolean +spell_accumulator(GSignalInvocationHint *hint, GValue *return_accu, const GValue *handler_return, gpointer data) +{ + gboolean ret = g_value_get_boolean(handler_return); + /* Handlers return TRUE if the word is misspelled. In this + * case, it means that we want to stop if the word is checked + * as correct */ + g_value_set_boolean (return_accu, ret); + return ret; +} + +static void +initialize_enchant (void) +{ + GModule *enchant; + gpointer funcptr; + gsize i; + const char * const libnames[] = { +#ifdef G_OS_WIN32 + "libenchant.dll", +#endif +#ifdef G_OS_UNIX + "libenchant.so.1", + "libenchant.so.2", + "libenchant-2.so.2", +#endif +#ifdef __APPLE__ + "libenchant.dylib", +#endif + }; + + for (i = 0; i < G_N_ELEMENTS(libnames); ++i) + { + enchant = g_module_open(libnames[i], 0); + if (enchant) + { + g_info ("Loaded %s", libnames[i]); + have_enchant = TRUE; + break; + } + } + + if (!have_enchant) + return; + +#define MODULE_SYMBOL(name, func, alt_name) G_STMT_START { \ + const char *funcname = name; \ + gboolean ret = g_module_symbol(enchant, funcname, &funcptr); \ + if (alt_name) { \ + funcname = alt_name; \ + ret = g_module_symbol(enchant, funcname, &funcptr); \ + } \ + if (ret == FALSE) { \ + g_warning ("Failed to find enchant symbol %s", funcname); \ + have_enchant = FALSE; \ + return; \ + } \ + (func) = funcptr; \ +} G_STMT_END; + + MODULE_SYMBOL("enchant_broker_init", enchant_broker_init, NULL) + MODULE_SYMBOL("enchant_broker_free", enchant_broker_free, NULL) + MODULE_SYMBOL("enchant_broker_free_dict", enchant_broker_free_dict, NULL) + MODULE_SYMBOL("enchant_broker_list_dicts", enchant_broker_list_dicts, NULL) + MODULE_SYMBOL("enchant_broker_request_dict", enchant_broker_request_dict, NULL) + + MODULE_SYMBOL("enchant_dict_add_to_personal", enchant_dict_add_to_personal, + "enchant_dict_add") + MODULE_SYMBOL("enchant_dict_add_to_session", enchant_dict_add_to_session, NULL) + MODULE_SYMBOL("enchant_dict_check", enchant_dict_check, NULL) + MODULE_SYMBOL("enchant_dict_describe", enchant_dict_describe, NULL) + MODULE_SYMBOL("enchant_dict_free_suggestions", + enchant_dict_free_suggestions, "enchant_dict_free_string_list") + MODULE_SYMBOL("enchant_dict_store_replacement", + enchant_dict_store_replacement, NULL) + MODULE_SYMBOL("enchant_dict_suggest", enchant_dict_suggest, NULL) +} + +static void +sexy_spell_entry_class_init(SexySpellEntryClass *klass) +{ + GObjectClass *gobject_class; + GObjectClass *object_class; + GtkWidgetClass *widget_class; + + initialize_enchant(); + + parent_class = g_type_class_peek_parent(klass); + + gobject_class = G_OBJECT_CLASS(klass); + object_class = G_OBJECT_CLASS(klass); + widget_class = GTK_WIDGET_CLASS(klass); + + if (have_enchant) + klass->word_check = default_word_check; + + gobject_class->finalize = sexy_spell_entry_finalize; + + object_class->dispose = sexy_spell_entry_destroy; + + widget_class->expose_event = sexy_spell_entry_expose; + widget_class->button_press_event = sexy_spell_entry_button_press; + + /** + * SexySpellEntry::word-check: + * @entry: The entry on which the signal is emitted. + * @word: The word to check. + * + * The ::word-check signal is emitted whenever the entry has to check + * a word. This allows the application to mark words as correct even + * if none of the active dictionaries contain it, such as nicknames in + * a chat client. + * + * Returns: %FALSE to indicate that the word should be marked as + * correct. + */ + signals[WORD_CHECK] = g_signal_new("word_check", + G_TYPE_FROM_CLASS(object_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET(SexySpellEntryClass, word_check), + (GSignalAccumulator) spell_accumulator, NULL, + _hexchat_marshal_BOOLEAN__STRING, + G_TYPE_BOOLEAN, + 1, G_TYPE_STRING); + + if (empty_attrs_list == NULL) + { + empty_attrs_list = pango_attr_list_new (); + } +} + +static void +sexy_spell_entry_editable_init (GtkEditableClass *iface) +{ +} + +static gint +gtk_entry_find_position (GtkEntry *entry, gint x) +{ + PangoLayout *layout; + PangoLayoutLine *line; + const gchar *text; + gint cursor_index; + gint index; + gint pos; + gboolean trailing; + + x = x + entry->scroll_offset; + + layout = gtk_entry_get_layout(entry); + text = pango_layout_get_text(layout); + cursor_index = g_utf8_offset_to_pointer(text, entry->current_pos) - text; + + line = pango_layout_get_lines(layout)->data; + pango_layout_line_x_to_index(line, x * PANGO_SCALE, &index, &trailing); + + if (index >= cursor_index && entry->preedit_length) { + if (index >= cursor_index + entry->preedit_length) { + index -= entry->preedit_length; + } else { + index = cursor_index; + trailing = FALSE; + } + } + + pos = g_utf8_pointer_to_offset (text, text + index); + pos += trailing; + + return pos; +} + +static void +insert_hiddenchar (SexySpellEntry *entry, guint start, guint end) +{ + /* FIXME: Pango does not properly reflect the new widths after a char + * is 'hidden' */ +#if 0 + PangoAttribute *hattr; + PangoRectangle *rect = g_new (PangoRectangle, 1); + + rect->x = 0; + rect->y = 0; + rect->width = 0; + rect->height = 0; + + hattr = pango_attr_shape_new (rect, rect); + hattr->start_index = start; + hattr->end_index = end; + pango_attr_list_insert (entry->priv->attr_list, hattr); + + g_free (rect); +#endif +} + +static void +insert_underline_error (SexySpellEntry *entry, guint start, guint end) +{ + PangoAttribute *ucolor; + PangoAttribute *unline; + + ucolor = pango_attr_underline_color_new (colors[COL_SPELL].red, colors[COL_SPELL].green, colors[COL_SPELL].blue); + unline = pango_attr_underline_new (PANGO_UNDERLINE_ERROR); + + ucolor->start_index = start; + unline->start_index = start; + + ucolor->end_index = end; + unline->end_index = end; + + pango_attr_list_insert (entry->priv->attr_list, ucolor); + pango_attr_list_insert (entry->priv->attr_list, unline); +} + +static void +insert_underline (SexySpellEntry *entry, guint start, gboolean toggle) +{ + PangoAttribute *uattr; + + uattr = pango_attr_underline_new (toggle ? PANGO_UNDERLINE_NONE : PANGO_UNDERLINE_SINGLE); + uattr->start_index = start; + uattr->end_index = PANGO_ATTR_INDEX_TO_TEXT_END; + pango_attr_list_change (entry->priv->attr_list, uattr); +} + +static void +insert_bold (SexySpellEntry *entry, guint start, gboolean toggle) +{ + PangoAttribute *battr; + + battr = pango_attr_weight_new (toggle ? PANGO_WEIGHT_NORMAL : PANGO_WEIGHT_BOLD); + battr->start_index = start; + battr->end_index = PANGO_ATTR_INDEX_TO_TEXT_END; + pango_attr_list_change (entry->priv->attr_list, battr); +} + +static void +insert_italic (SexySpellEntry *entry, guint start, gboolean toggle) +{ + PangoAttribute *iattr; + + iattr = pango_attr_style_new (toggle ? PANGO_STYLE_NORMAL : PANGO_STYLE_ITALIC); + iattr->start_index = start; + iattr->end_index = PANGO_ATTR_INDEX_TO_TEXT_END; + pango_attr_list_change (entry->priv->attr_list, iattr); +} + +static void +insert_strikethrough (SexySpellEntry *entry, guint start, gboolean toggle) +{ + PangoAttribute *sattr; + + sattr = pango_attr_strikethrough_new (!toggle); + sattr->start_index = start; + sattr->end_index = PANGO_ATTR_INDEX_TO_TEXT_END; + pango_attr_list_change (entry->priv->attr_list, sattr); +} + +static void +insert_color (SexySpellEntry *entry, guint start, int fgcolor, int bgcolor) +{ + PangoAttribute *fgattr; + PangoAttribute *ulattr; + PangoAttribute *bgattr; + + if (fgcolor < 0 || fgcolor > MAX_COL) + { + fgattr = pango_attr_foreground_new (colors[COL_FG].red, colors[COL_FG].green, colors[COL_FG].blue); + ulattr = pango_attr_underline_color_new (colors[COL_FG].red, colors[COL_FG].green, colors[COL_FG].blue); + } + else + { + fgattr = pango_attr_foreground_new (colors[fgcolor].red, colors[fgcolor].green, colors[fgcolor].blue); + ulattr = pango_attr_underline_color_new (colors[fgcolor].red, colors[fgcolor].green, colors[fgcolor].blue); + } + + if (bgcolor < 0 || bgcolor > MAX_COL) + bgattr = pango_attr_background_new (colors[COL_BG].red, colors[COL_BG].green, colors[COL_BG].blue); + else + bgattr = pango_attr_background_new (colors[bgcolor].red, colors[bgcolor].green, colors[bgcolor].blue); + + fgattr->start_index = start; + fgattr->end_index = PANGO_ATTR_INDEX_TO_TEXT_END; + pango_attr_list_change (entry->priv->attr_list, fgattr); + ulattr->start_index = start; + ulattr->end_index = PANGO_ATTR_INDEX_TO_TEXT_END; + pango_attr_list_change (entry->priv->attr_list, ulattr); + bgattr->start_index = start; + bgattr->end_index = PANGO_ATTR_INDEX_TO_TEXT_END; + pango_attr_list_change (entry->priv->attr_list, bgattr); +} + +static void +insert_reset (SexySpellEntry *entry, guint start) +{ + insert_bold (entry, start, TRUE); + insert_underline (entry, start, TRUE); + insert_italic (entry, start, TRUE); + insert_strikethrough (entry, start, TRUE); + insert_color (entry, start, -1, -1); +} + +static void +get_word_extents_from_position(SexySpellEntry *entry, gint *start, gint *end, guint position) +{ + const gchar *text; + gint i, bytes_pos; + + *start = -1; + *end = -1; + + if (entry->priv->words == NULL) + return; + + text = gtk_entry_get_text(GTK_ENTRY(entry)); + bytes_pos = (gint) (g_utf8_offset_to_pointer(text, position) - text); + + for (i = 0; entry->priv->words[i]; i++) { + if (bytes_pos >= entry->priv->word_starts[i] && + bytes_pos <= entry->priv->word_ends[i]) { + *start = entry->priv->word_starts[i]; + *end = entry->priv->word_ends[i]; + return; + } + } +} + +static void +add_to_dictionary(GtkWidget *menuitem, SexySpellEntry *entry) +{ + char *word; + gint start, end; + struct EnchantDict *dict; + + if (!have_enchant) + return; + + get_word_extents_from_position(entry, &start, &end, entry->priv->mark_character); + word = gtk_editable_get_chars(GTK_EDITABLE(entry), start, end); + + dict = (struct EnchantDict *) g_object_get_data(G_OBJECT(menuitem), "enchant-dict"); + if (dict) + enchant_dict_add_to_personal(dict, word, -1); + + g_free(word); + + if (entry->priv->words) { + g_strfreev(entry->priv->words); + g_free(entry->priv->word_starts); + g_free(entry->priv->word_ends); + } + entry_strsplit_utf8(GTK_ENTRY(entry), &entry->priv->words, &entry->priv->word_starts, &entry->priv->word_ends); + sexy_spell_entry_recheck_all (entry); +} + +static void +ignore_all(GtkWidget *menuitem, SexySpellEntry *entry) +{ + char *word; + gint start, end; + GSList *li; + + if (!have_enchant) + return; + + get_word_extents_from_position(entry, &start, &end, entry->priv->mark_character); + word = gtk_editable_get_chars(GTK_EDITABLE(entry), start, end); + + for (li = entry->priv->dict_list; li; li = g_slist_next (li)) { + struct EnchantDict *dict = (struct EnchantDict *) li->data; + enchant_dict_add_to_session(dict, word, -1); + } + + g_free(word); + + if (entry->priv->words) { + g_strfreev(entry->priv->words); + g_free(entry->priv->word_starts); + g_free(entry->priv->word_ends); + } + entry_strsplit_utf8(GTK_ENTRY(entry), &entry->priv->words, &entry->priv->word_starts, &entry->priv->word_ends); + sexy_spell_entry_recheck_all(entry); +} + +static void +replace_word(GtkWidget *menuitem, SexySpellEntry *entry) +{ + char *oldword; + const char *newword; + gint start, end; + gint cursor; + struct EnchantDict *dict; + + if (!have_enchant) + return; + + get_word_extents_from_position(entry, &start, &end, entry->priv->mark_character); + oldword = gtk_editable_get_chars(GTK_EDITABLE(entry), start, end); + newword = gtk_label_get_text(GTK_LABEL(gtk_bin_get_child (GTK_BIN(menuitem)))); + + cursor = gtk_editable_get_position(GTK_EDITABLE(entry)); + /* is the cursor at the end? If so, restore it there */ + if (g_utf8_strlen(gtk_entry_get_text(GTK_ENTRY(entry)), -1) == cursor) + cursor = -1; + else if(cursor > start && cursor <= end) + cursor = start; + + gtk_editable_delete_text(GTK_EDITABLE(entry), start, end); + gtk_editable_set_position(GTK_EDITABLE(entry), start); + gtk_editable_insert_text(GTK_EDITABLE(entry), newword, strlen(newword), + &start); + gtk_editable_set_position(GTK_EDITABLE(entry), cursor); + + dict = (struct EnchantDict *) g_object_get_data(G_OBJECT(menuitem), "enchant-dict"); + + if (dict) + enchant_dict_store_replacement(dict, + oldword, -1, + newword, -1); + + g_free(oldword); +} + +static void +build_suggestion_menu(SexySpellEntry *entry, GtkWidget *menu, struct EnchantDict *dict, const gchar *word) +{ + GtkWidget *mi; + gchar **suggestions; + size_t n_suggestions, i; + + if (!have_enchant) + return; + + suggestions = enchant_dict_suggest(dict, word, -1, &n_suggestions); + + if (suggestions == NULL || n_suggestions == 0) { + /* no suggestions. put something in the menu anyway... */ + GtkWidget *label = gtk_label_new(""); + gtk_label_set_markup(GTK_LABEL(label), _("<i>(no suggestions)</i>")); + + mi = gtk_separator_menu_item_new(); + gtk_container_add(GTK_CONTAINER(mi), label); + gtk_widget_show_all(mi); + gtk_menu_shell_prepend(GTK_MENU_SHELL(menu), mi); + } else { + /* build a set of menus with suggestions */ + for (i = 0; i < n_suggestions; i++) { + if ((i != 0) && (i % 10 == 0)) { + mi = gtk_separator_menu_item_new(); + gtk_widget_show(mi); + gtk_menu_shell_append(GTK_MENU_SHELL(menu), mi); + + mi = gtk_menu_item_new_with_label(_("More...")); + gtk_widget_show(mi); + gtk_menu_shell_append(GTK_MENU_SHELL(menu), mi); + + menu = gtk_menu_new(); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(mi), menu); + } + + mi = gtk_menu_item_new_with_label(suggestions[i]); + g_object_set_data(G_OBJECT(mi), "enchant-dict", dict); + g_signal_connect(G_OBJECT(mi), "activate", G_CALLBACK(replace_word), entry); + gtk_widget_show(mi); + gtk_menu_shell_append(GTK_MENU_SHELL(menu), mi); + } + } + + enchant_dict_free_suggestions(dict, suggestions); +} + +static GtkWidget * +build_spelling_menu(SexySpellEntry *entry, const gchar *word) +{ + struct EnchantDict *dict; + GtkWidget *topmenu, *mi; + gchar *label; + + if (!have_enchant) + return NULL; + + topmenu = gtk_menu_new(); + + if (entry->priv->dict_list == NULL) + return topmenu; + + /* Suggestions */ + if (g_slist_length(entry->priv->dict_list) == 1) { + dict = (struct EnchantDict *) entry->priv->dict_list->data; + build_suggestion_menu(entry, topmenu, dict, word); + } else { + GSList *li; + GtkWidget *menu; + gchar *lang, *lang_name; + + for (li = entry->priv->dict_list; li; li = g_slist_next (li)) { + dict = (struct EnchantDict *) li->data; + lang = get_lang_from_dict(dict); + lang_name = sexy_spell_entry_get_language_name (entry, lang); + if (lang_name) + { + mi = gtk_menu_item_new_with_label(lang_name); + g_free (lang_name); + } + else + { + mi = gtk_menu_item_new_with_label(lang); + } + g_free(lang); + + gtk_widget_show(mi); + gtk_menu_shell_append(GTK_MENU_SHELL(topmenu), mi); + menu = gtk_menu_new(); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(mi), menu); + build_suggestion_menu(entry, menu, dict, word); + } + } + + /* Separator */ + mi = gtk_separator_menu_item_new (); + gtk_widget_show(mi); + gtk_menu_shell_append(GTK_MENU_SHELL(topmenu), mi); + + /* + Add to Dictionary */ + label = g_strdup_printf(_("Add \"%s\" to Dictionary"), word); + mi = gtk_image_menu_item_new_with_label(label); + g_free(label); + + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(mi), gtk_image_new_from_stock(GTK_STOCK_ADD, GTK_ICON_SIZE_MENU)); + + if (g_slist_length(entry->priv->dict_list) == 1) { + dict = (struct EnchantDict *) entry->priv->dict_list->data; + g_object_set_data(G_OBJECT(mi), "enchant-dict", dict); + g_signal_connect(G_OBJECT(mi), "activate", G_CALLBACK(add_to_dictionary), entry); + } else { + GSList *li; + GtkWidget *menu, *submi; + gchar *lang, *lang_name; + + menu = gtk_menu_new(); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(mi), menu); + + for (li = entry->priv->dict_list; li; li = g_slist_next(li)) { + dict = (struct EnchantDict *)li->data; + lang = get_lang_from_dict(dict); + lang_name = sexy_spell_entry_get_language_name (entry, lang); + if (lang_name) + { + submi = gtk_menu_item_new_with_label(lang_name); + g_free (lang_name); + } + else + { + submi = gtk_menu_item_new_with_label(lang); + } + g_free(lang); + g_object_set_data(G_OBJECT(submi), "enchant-dict", dict); + + g_signal_connect(G_OBJECT(submi), "activate", G_CALLBACK(add_to_dictionary), entry); + + gtk_widget_show(submi); + gtk_menu_shell_append(GTK_MENU_SHELL(menu), submi); + } + } + + gtk_widget_show_all(mi); + gtk_menu_shell_append(GTK_MENU_SHELL(topmenu), mi); + + /* - Ignore All */ + mi = gtk_image_menu_item_new_with_label(_("Ignore All")); + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(mi), gtk_image_new_from_stock(GTK_STOCK_REMOVE, GTK_ICON_SIZE_MENU)); + g_signal_connect(G_OBJECT(mi), "activate", G_CALLBACK(ignore_all), entry); + gtk_widget_show_all(mi); + gtk_menu_shell_append(GTK_MENU_SHELL(topmenu), mi); + + return topmenu; +} + +static void +sexy_spell_entry_populate_popup(SexySpellEntry *entry, GtkMenu *menu, gpointer data) +{ + GtkWidget *icon, *mi; + gint start, end; + gchar *word; + + if ((have_enchant == FALSE) || (entry->priv->checked == FALSE)) + return; + + if (g_slist_length(entry->priv->dict_list) == 0) + return; + + get_word_extents_from_position(entry, &start, &end, entry->priv->mark_character); + if (start == end) + return; + if (!word_misspelled(entry, start, end)) + return; + + /* separator */ + mi = gtk_separator_menu_item_new(); + gtk_widget_show(mi); + gtk_menu_shell_prepend(GTK_MENU_SHELL(menu), mi); + + /* Above the separator, show the suggestions menu */ + icon = gtk_image_new_from_stock(GTK_STOCK_SPELL_CHECK, GTK_ICON_SIZE_MENU); + mi = gtk_image_menu_item_new_with_label(_("Spelling Suggestions")); + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(mi), icon); + + word = gtk_editable_get_chars(GTK_EDITABLE(entry), start, end); + g_assert(word != NULL); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(mi), build_spelling_menu(entry, word)); + g_free(word); + + gtk_widget_show_all(mi); + gtk_menu_shell_prepend(GTK_MENU_SHELL(menu), mi); +} + +static void +sexy_spell_entry_init(SexySpellEntry *entry) +{ + entry->priv = g_new0(SexySpellEntryPriv, 1); + + entry->priv->dict_hash = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL); + + if (have_enchant) + { +#ifdef HAVE_ISO_CODES + if (codetable_ref == 0) + codetable_init (); + codetable_ref++; +#endif + sexy_spell_entry_activate_default_languages(entry); + } + + entry->priv->attr_list = pango_attr_list_new(); + + entry->priv->checked = TRUE; + entry->priv->parseattr = TRUE; + + g_signal_connect(G_OBJECT(entry), "popup-menu", G_CALLBACK(sexy_spell_entry_popup_menu), entry); + g_signal_connect(G_OBJECT(entry), "populate-popup", G_CALLBACK(sexy_spell_entry_populate_popup), NULL); + g_signal_connect(G_OBJECT(entry), "changed", G_CALLBACK(sexy_spell_entry_changed), NULL); +} + +static void +sexy_spell_entry_finalize(GObject *obj) +{ + SexySpellEntry *entry; + + g_return_if_fail(obj != NULL); + g_return_if_fail(SEXY_IS_SPELL_ENTRY(obj)); + + entry = SEXY_SPELL_ENTRY(obj); + + if (entry->priv->attr_list) + pango_attr_list_unref(entry->priv->attr_list); + if (entry->priv->dict_hash) + g_hash_table_destroy(entry->priv->dict_hash); + g_strfreev(entry->priv->words); + g_free(entry->priv->word_starts); + g_free(entry->priv->word_ends); + + if (have_enchant) { + if (entry->priv->broker) { + GSList *li; + for (li = entry->priv->dict_list; li; li = g_slist_next(li)) { + struct EnchantDict *dict = (struct EnchantDict*) li->data; + enchant_broker_free_dict (entry->priv->broker, dict); + } + g_slist_free (entry->priv->dict_list); + + enchant_broker_free(entry->priv->broker); + } + } + + g_free(entry->priv); +#ifdef HAVE_ISO_CODES + codetable_ref--; + if (codetable_ref == 0) + codetable_free (); +#endif + + if (G_OBJECT_CLASS(parent_class)->finalize) + G_OBJECT_CLASS(parent_class)->finalize(obj); +} + +static void +sexy_spell_entry_destroy(GObject *obj) +{ + if (G_OBJECT_CLASS(parent_class)->dispose) + G_OBJECT_CLASS(parent_class)->dispose(obj); +} + +/** + * sexy_spell_entry_new + * + * Creates a new SexySpellEntry widget. + * + * Returns: a new #SexySpellEntry. + */ +GtkWidget * +sexy_spell_entry_new(void) +{ + return GTK_WIDGET(g_object_new(SEXY_TYPE_SPELL_ENTRY, NULL)); +} + +GQuark +sexy_spell_error_quark(void) +{ + static GQuark q = 0; + if (q == 0) + q = g_quark_from_static_string("sexy-spell-error-quark"); + return q; +} + +static gboolean +default_word_check(SexySpellEntry *entry, const gchar *word) +{ + gboolean result = TRUE; + GSList *li; + + if (!have_enchant) + return result; + + if (g_unichar_isalpha(*word) == FALSE) { + /* We only want to check words */ + return FALSE; + } + for (li = entry->priv->dict_list; li; li = g_slist_next (li)) { + struct EnchantDict *dict = (struct EnchantDict *) li->data; + if (enchant_dict_check(dict, word, strlen(word)) == 0) { + result = FALSE; + break; + } + } + return result; +} + +static gboolean +word_misspelled(SexySpellEntry *entry, int start, int end) +{ + const gchar *text; + gchar *word; + gboolean ret; + + if (start == end) + return FALSE; + text = gtk_entry_get_text(GTK_ENTRY(entry)); + word = g_new0(gchar, end - start + 2); + + g_strlcpy(word, text + start, end - start + 1); + + g_signal_emit(entry, signals[WORD_CHECK], 0, word, &ret); + + g_free(word); + return ret; +} + +static void +check_word(SexySpellEntry *entry, int start, int end) +{ + PangoAttrIterator *it; + + /* Check to see if we've got any attributes at this position. + * If so, free them, since we'll readd it if the word is misspelled */ + it = pango_attr_list_get_iterator(entry->priv->attr_list); + if (it == NULL) + return; + do { + gint s, e; + pango_attr_iterator_range(it, &s, &e); + if (s == start) { + GSList *attrs = pango_attr_iterator_get_attrs(it); + g_slist_foreach(attrs, (GFunc) pango_attribute_destroy, NULL); + g_slist_free(attrs); + } + } while (pango_attr_iterator_next(it)); + pango_attr_iterator_destroy(it); + + if (word_misspelled(entry, start, end)) + insert_underline_error(entry, start, end); +} + +static void +check_attributes (SexySpellEntry *entry, const char *text, int len) +{ + gboolean bold = FALSE; + gboolean italic = FALSE; + gboolean underline = FALSE; + gboolean strikethrough = FALSE; + int parsing_color = 0; + char fg_color[3]; + char bg_color[3]; + int i, offset = 0; + + memset (bg_color, 0, sizeof(bg_color)); + memset (fg_color, 0, sizeof(fg_color)); + + for (i = 0; i < len; i++) + { + switch (text[i]) + { + case ATTR_BOLD: + insert_hiddenchar (entry, i, i + 1); + insert_bold (entry, i, bold); + bold = !bold; + goto check_color; + + case ATTR_ITALICS: + insert_hiddenchar (entry, i, i + 1); + insert_italic (entry, i, italic); + italic = !italic; + goto check_color; + + case ATTR_STRIKETHROUGH: + insert_hiddenchar (entry, i, i + 1); + insert_strikethrough (entry, i, strikethrough); + strikethrough = !strikethrough; + goto check_color; + + case ATTR_UNDERLINE: + insert_hiddenchar (entry, i, i + 1); + insert_underline (entry, i, underline); + underline = !underline; + goto check_color; + + case ATTR_RESET: + insert_hiddenchar (entry, i, i + 1); + insert_reset (entry, i); + bold = FALSE; + italic = FALSE; + underline = FALSE; + strikethrough = FALSE; + goto check_color; + + case ATTR_HIDDEN: + insert_hiddenchar (entry, i, i + 1); + goto check_color; + + case ATTR_REVERSE: + insert_hiddenchar (entry, i, i + 1); + insert_color (entry, i, COL_BG, COL_FG); + goto check_color; + + case '\n': + insert_reset (entry, i); + parsing_color = 0; + break; + + case ATTR_COLOR: + parsing_color = 1; + offset = 1; + break; + + default: +check_color: + if (!parsing_color) + continue; + + if (!g_unichar_isdigit (text[i])) + { + if (text[i] == ',' && parsing_color <= 3) + { + parsing_color = 3; + offset++; + continue; + } + else + parsing_color = 5; + } + + /* don't parse background color without a comma */ + else if (parsing_color == 3 && text[i - 1] != ',') + parsing_color = 5; + + switch (parsing_color) + { + case 1: + fg_color[0] = text[i]; + parsing_color++; + offset++; + continue; + case 2: + fg_color[1] = text[i]; + parsing_color++; + offset++; + continue; + case 3: + bg_color[0] = text[i]; + parsing_color++; + offset++; + continue; + case 4: + bg_color[1] = text[i]; + parsing_color++; + offset++; + continue; + case 5: + if (bg_color[0] != 0) + { + insert_hiddenchar (entry, i - offset, i); + insert_color (entry, i, atoi (fg_color), atoi (bg_color)); + } + else if (fg_color[0] != 0) + { + insert_hiddenchar (entry, i - offset, i); + insert_color (entry, i, atoi (fg_color), -1); + } + else + { + /* No colors but some commas may have been added */ + insert_hiddenchar (entry, i - offset, i - offset + 1); + insert_color (entry, i, -1, -1); + } + + memset (bg_color, 0, sizeof(bg_color)); + memset (fg_color, 0, sizeof(fg_color)); + parsing_color = 0; + offset = 0; + continue; + } + } + } +} + +static void +sexy_spell_entry_recheck_all(SexySpellEntry *entry) +{ + GdkRectangle rect; + GtkAllocation allocation; + GtkWidget *widget = GTK_WIDGET(entry); + PangoLayout *layout; + int length, i, text_len; + const char *text; + + /* Remove all existing pango attributes. These will get readded as we check */ + pango_attr_list_unref(entry->priv->attr_list); + entry->priv->attr_list = pango_attr_list_new(); + + if (entry->priv->parseattr) + { + /* Check for attributes */ + text = gtk_entry_get_text (GTK_ENTRY (entry)); + text_len = strlen (text); + check_attributes (entry, text, text_len); + } + + if (have_enchant && entry->priv->checked + && g_slist_length (entry->priv->dict_list) != 0) + { + /* Loop through words */ + for (i = 0; entry->priv->words[i]; i++) + { + length = strlen (entry->priv->words[i]); + if (length == 0) + continue; + check_word (entry, entry->priv->word_starts[i], entry->priv->word_ends[i]); + } + } + + layout = gtk_entry_get_layout(GTK_ENTRY(entry)); + pango_layout_set_attributes(layout, entry->priv->attr_list); + + if (gtk_widget_get_realized (GTK_WIDGET(entry))) + { + gtk_widget_get_allocation (GTK_WIDGET(entry), &allocation); + + rect.x = 0; rect.y = 0; + rect.width = allocation.width; + rect.height = allocation.height; + gdk_window_invalidate_rect(gtk_widget_get_window (widget), &rect, TRUE); + } +} + +static gint +sexy_spell_entry_expose(GtkWidget *widget, GdkEventExpose *event) +{ + SexySpellEntry *entry = SEXY_SPELL_ENTRY(widget); + GtkEntry *gtk_entry = GTK_ENTRY(widget); + PangoLayout *layout; + + + layout = gtk_entry_get_layout(gtk_entry); + if (gtk_entry->preedit_length == 0) + { + pango_layout_set_attributes(layout, entry->priv->attr_list); + } + else + { + pango_layout_set_attributes(layout, empty_attrs_list); + } + + return GTK_WIDGET_CLASS(parent_class)->expose_event (widget, event); +} + +static gint +sexy_spell_entry_button_press(GtkWidget *widget, GdkEventButton *event) +{ + SexySpellEntry *entry = SEXY_SPELL_ENTRY(widget); + GtkEntry *gtk_entry = GTK_ENTRY(widget); + gint pos; + + pos = gtk_entry_find_position(gtk_entry, event->x); + entry->priv->mark_character = pos; + + return GTK_WIDGET_CLASS(parent_class)->button_press_event (widget, event); +} + +static gboolean +sexy_spell_entry_popup_menu(GtkWidget *widget, SexySpellEntry *entry) +{ + /* Menu popped up from a keybinding (menu key or <shift>+F10). Use + * the cursor position as the mark position */ + entry->priv->mark_character = gtk_editable_get_position (GTK_EDITABLE (entry)); + return FALSE; +} + +static void +entry_strsplit_utf8(GtkEntry *entry, gchar ***set, gint **starts, gint **ends) +{ + PangoLayout *layout; + const PangoLogAttr *log_attrs; + const gchar *text; + gint n_attrs, n_strings, i, j; + PangoLogAttr a; + + layout = gtk_entry_get_layout(GTK_ENTRY(entry)); + text = gtk_entry_get_text(GTK_ENTRY(entry)); + log_attrs = pango_layout_get_log_attrs_readonly (layout, &n_attrs); + + /* Find how many words we have */ + for (i = 0, n_strings = 0; i < n_attrs; i++) + { + a = log_attrs[i]; + if (a.is_word_start && a.is_word_boundary) + n_strings++; + } + + *set = g_new0(gchar *, n_strings + 1); + *starts = g_new0(gint, n_strings); + *ends = g_new0(gint, n_strings); + + /* Copy out strings */ + for (i = 0, j = 0; i < n_attrs; i++) + { + a = log_attrs[i]; + if (a.is_word_start && a.is_word_boundary) + { + gint cend, bytes; + gchar *start; + + /* Find the end of this string */ + for (cend = i; cend < n_attrs; cend++) + { + a = log_attrs[cend]; + if (a.is_word_end && a.is_word_boundary) + break; + } + + /* Copy sub-string */ + start = g_utf8_offset_to_pointer(text, i); + bytes = (gint) (g_utf8_offset_to_pointer(text, cend) - start); + (*set)[j] = g_new0(gchar, bytes + 1); + (*starts)[j] = (gint) (start - text); + (*ends)[j] = (gint) (start - text + bytes); + g_utf8_strncpy((*set)[j], start, cend - i); + + /* Move on to the next word */ + j++; + } + } +} + +static void +sexy_spell_entry_changed(GtkEditable *editable, gpointer data) +{ + SexySpellEntry *entry = SEXY_SPELL_ENTRY(editable); + + if (entry->priv->words) + { + g_strfreev(entry->priv->words); + g_free(entry->priv->word_starts); + g_free(entry->priv->word_ends); + } + entry_strsplit_utf8(GTK_ENTRY(entry), &entry->priv->words, &entry->priv->word_starts, &entry->priv->word_ends); + sexy_spell_entry_recheck_all(entry); +} + +static gboolean +enchant_has_lang(const gchar *lang, GSList *langs) { + GSList *i; + for (i = langs; i; i = g_slist_next(i)) + { + if (strcmp(lang, i->data) == 0) + { + return TRUE; + } + } + return FALSE; +} + +/** + * sexy_spell_entry_activate_default_languages: + * @entry: A #SexySpellEntry. + * + * Activate spell checking for languages specified in the + * text_spell_langs setting. These languages are + * activated by default, so this function need only be called + * if they were previously deactivated. + */ +void +sexy_spell_entry_activate_default_languages(SexySpellEntry *entry) +{ + GSList *enchant_langs; + char *lang, **i, **langs; + + if (!have_enchant) + return; + + if (!entry->priv->broker) + entry->priv->broker = enchant_broker_init(); + + enchant_langs = sexy_spell_entry_get_languages(entry); + + langs = g_strsplit_set (prefs.hex_text_spell_langs, ", \t", 0); + + for (i = langs; *i; i++) + { + lang = *i; + + if (enchant_has_lang (lang, enchant_langs)) + { + sexy_spell_entry_activate_language_internal (entry, lang, NULL); + } + } + + g_slist_foreach(enchant_langs, (GFunc) g_free, NULL); + g_slist_free(enchant_langs); + g_strfreev (langs); + + /* If we don't have any languages activated, use "en" */ + if (entry->priv->dict_list == NULL) + sexy_spell_entry_activate_language_internal(entry, "en", NULL); + + sexy_spell_entry_recheck_all (entry); +} + +static void +get_lang_from_dict_cb(const char * const lang_tag, + const char * const provider_name, + const char * const provider_desc, + const char * const provider_file, + void * user_data) { + gchar **lang = (gchar **)user_data; + *lang = g_strdup(lang_tag); +} + +static gchar * +get_lang_from_dict(struct EnchantDict *dict) +{ + gchar *lang; + + if (!have_enchant) + return NULL; + + enchant_dict_describe(dict, get_lang_from_dict_cb, &lang); + return lang; +} + +static gboolean +sexy_spell_entry_activate_language_internal(SexySpellEntry *entry, const gchar *lang, GError **error) +{ + struct EnchantDict *dict; + + if (!have_enchant) + return FALSE; + + if (!entry->priv->broker) + entry->priv->broker = enchant_broker_init(); + + if (g_hash_table_lookup(entry->priv->dict_hash, lang)) + return TRUE; + + dict = enchant_broker_request_dict(entry->priv->broker, lang); + + if (!dict) { + g_set_error(error, SEXY_SPELL_ERROR, SEXY_SPELL_ERROR_BACKEND, _("enchant error for language: %s"), lang); + return FALSE; + } + + enchant_dict_add_to_session (dict, "HexChat", strlen("HexChat")); + entry->priv->dict_list = g_slist_append(entry->priv->dict_list, (gpointer) dict); + g_hash_table_insert(entry->priv->dict_hash, get_lang_from_dict(dict), (gpointer) dict); + + return TRUE; +} + +static void +dict_describe_cb(const char * const lang_tag, + const char * const provider_name, + const char * const provider_desc, + const char * const provider_file, + void * user_data) +{ + GSList **langs = (GSList **)user_data; + + *langs = g_slist_append(*langs, (gpointer)g_strdup(lang_tag)); +} + +/** + * sexy_spell_entry_get_languages: + * @entry: A #SexySpellEntry. + * + * Retrieve a list of language codes for which dictionaries are available. + * + * Returns: a new #GList object, or %NULL on error. + */ +GSList * +sexy_spell_entry_get_languages(const SexySpellEntry *entry) +{ + GSList *langs = NULL; + + g_return_val_if_fail(entry != NULL, NULL); + g_return_val_if_fail(SEXY_IS_SPELL_ENTRY(entry), NULL); + + if (enchant_broker_list_dicts == NULL) + return NULL; + + if (!entry->priv->broker) + return NULL; + + enchant_broker_list_dicts(entry->priv->broker, dict_describe_cb, &langs); + + return langs; +} + +/** + * sexy_spell_entry_get_language_name: + * @entry: A #SexySpellEntry. + * @lang: The language code to lookup a friendly name for. + * + * Get a friendly name for a given locale. + * + * Returns: The name of the locale. Should be freed with g_free() + */ +gchar * +sexy_spell_entry_get_language_name(const SexySpellEntry *entry, + const gchar *lang) +{ +#ifdef HAVE_ISO_CODES + const gchar *lang_name = ""; + const gchar *country_name = ""; + + g_return_val_if_fail (have_enchant, NULL); + + if (codetable_ref == 0) + codetable_init (); + + codetable_lookup (lang, &lang_name, &country_name); + + if (codetable_ref == 0) + codetable_free (); + + if (strlen (country_name) != 0) + return g_strdup_printf ("%s (%s)", lang_name, country_name); + else + return g_strdup_printf ("%s", lang_name); +#else + return g_strdup (lang); +#endif +} + +/** + * sexy_spell_entry_language_is_active: + * @entry: A #SexySpellEntry. + * @lang: The language to use, in a form enchant understands. + * + * Determine if a given language is currently active. + * + * Returns: TRUE if the language is active. + */ +gboolean +sexy_spell_entry_language_is_active(const SexySpellEntry *entry, + const gchar *lang) +{ + return (g_hash_table_lookup(entry->priv->dict_hash, lang) != NULL); +} + +/** + * sexy_spell_entry_activate_language: + * @entry: A #SexySpellEntry + * @lang: The language to use in a form Enchant understands. Typically either + * a two letter language code or a locale code in the form xx_XX. + * @error: Return location for error. + * + * Activate spell checking for the language specifed. + * + * Returns: FALSE if there was an error. + */ +gboolean +sexy_spell_entry_activate_language(SexySpellEntry *entry, const gchar *lang, GError **error) +{ + gboolean ret; + + g_return_val_if_fail(entry != NULL, FALSE); + g_return_val_if_fail(SEXY_IS_SPELL_ENTRY(entry), FALSE); + g_return_val_if_fail(lang != NULL && *lang != '\0', FALSE); + + if (!have_enchant) + return FALSE; + + if (error) + g_return_val_if_fail(*error == NULL, FALSE); + + ret = sexy_spell_entry_activate_language_internal(entry, lang, error); + + if (ret) { + if (entry->priv->words) { + g_strfreev(entry->priv->words); + g_free(entry->priv->word_starts); + g_free(entry->priv->word_ends); + } + entry_strsplit_utf8(GTK_ENTRY(entry), &entry->priv->words, &entry->priv->word_starts, &entry->priv->word_ends); + sexy_spell_entry_recheck_all(entry); + } + + return ret; +} + +/** + * sexy_spell_entry_deactivate_language: + * @entry: A #SexySpellEntry. + * @lang: The language in a form Enchant understands. Typically either + * a two letter language code or a locale code in the form xx_XX. + * + * Deactivate spell checking for the language specifed. + */ +void +sexy_spell_entry_deactivate_language(SexySpellEntry *entry, const gchar *lang) +{ + g_return_if_fail(entry != NULL); + g_return_if_fail(SEXY_IS_SPELL_ENTRY(entry)); + + if (!have_enchant) + return; + + if (!entry->priv->dict_list) + return; + + if (lang) { + struct EnchantDict *dict; + + dict = g_hash_table_lookup(entry->priv->dict_hash, lang); + if (!dict) + return; + enchant_broker_free_dict(entry->priv->broker, dict); + entry->priv->dict_list = g_slist_remove(entry->priv->dict_list, dict); + g_hash_table_remove (entry->priv->dict_hash, lang); + } else { + /* deactivate all */ + GSList *li; + struct EnchantDict *dict; + + for (li = entry->priv->dict_list; li; li = g_slist_next(li)) { + dict = (struct EnchantDict *)li->data; + enchant_broker_free_dict(entry->priv->broker, dict); + } + + g_slist_free (entry->priv->dict_list); + g_hash_table_destroy (entry->priv->dict_hash); + entry->priv->dict_hash = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL); + entry->priv->dict_list = NULL; + } + + if (entry->priv->words) { + g_strfreev(entry->priv->words); + g_free(entry->priv->word_starts); + g_free(entry->priv->word_ends); + } + entry_strsplit_utf8(GTK_ENTRY(entry), &entry->priv->words, &entry->priv->word_starts, &entry->priv->word_ends); + sexy_spell_entry_recheck_all(entry); +} + +/** + * sexy_spell_entry_set_active_languages: + * @entry: A #SexySpellEntry + * @langs: A list of language codes to activate, in a form Enchant understands. + * Typically either a two letter language code or a locale code in the + * form xx_XX. + * @error: Return location for error. + * + * Activate spell checking for only the languages specified. + * + * Returns: FALSE if there was an error. + */ +gboolean +sexy_spell_entry_set_active_languages(SexySpellEntry *entry, GSList *langs, GError **error) +{ + GSList *li; + + g_return_val_if_fail(entry != NULL, FALSE); + g_return_val_if_fail(SEXY_IS_SPELL_ENTRY(entry), FALSE); + g_return_val_if_fail(langs != NULL, FALSE); + + if (!have_enchant) + return FALSE; + + /* deactivate all languages first */ + sexy_spell_entry_deactivate_language(entry, NULL); + + for (li = langs; li; li = g_slist_next(li)) { + if (sexy_spell_entry_activate_language_internal(entry, + (const gchar *) li->data, error) == FALSE) + return FALSE; + } + if (entry->priv->words) { + g_strfreev(entry->priv->words); + g_free(entry->priv->word_starts); + g_free(entry->priv->word_ends); + } + entry_strsplit_utf8(GTK_ENTRY(entry), &entry->priv->words, &entry->priv->word_starts, &entry->priv->word_ends); + sexy_spell_entry_recheck_all(entry); + return TRUE; +} + +/** + * sexy_spell_entry_get_active_languages: + * @entry: A #SexySpellEntry + * + * Retrieve a list of the currently active languages. + * + * Returns: A GSList of char* values with language codes (en, fr, etc). Both + * the data and the list must be freed by the user. + */ +GSList * +sexy_spell_entry_get_active_languages(SexySpellEntry *entry) +{ + GSList *ret = NULL, *li; + struct EnchantDict *dict; + gchar *lang; + + g_return_val_if_fail(entry != NULL, NULL); + g_return_val_if_fail(SEXY_IS_SPELL_ENTRY(entry), NULL); + + if (!have_enchant) + return NULL; + + for (li = entry->priv->dict_list; li; li = g_slist_next(li)) { + dict = (struct EnchantDict *) li->data; + lang = get_lang_from_dict(dict); + ret = g_slist_append(ret, lang); + } + return ret; +} + +/** + * sexy_spell_entry_is_checked: + * @entry: A #SexySpellEntry. + * + * Queries a #SexySpellEntry and returns whether the entry has spell-checking enabled. + * + * Returns: TRUE if the entry has spell-checking enabled. + */ +gboolean +sexy_spell_entry_is_checked(SexySpellEntry *entry) +{ + return entry->priv->checked; +} + +/** + * sexy_spell_entry_set_checked: + * @entry: A #SexySpellEntry. + * @checked: Whether to enable spell-checking + * + * Sets whether the entry has spell-checking enabled. + */ +void +sexy_spell_entry_set_checked(SexySpellEntry *entry, gboolean checked) +{ + GtkWidget *widget; + + if (entry->priv->checked == checked) + return; + + entry->priv->checked = checked; + widget = GTK_WIDGET(entry); + + if (checked == FALSE && gtk_widget_get_realized (widget)) + { + /* This will unmark any existing */ + sexy_spell_entry_recheck_all (entry); + } + else + { + if (entry->priv->words) + { + g_strfreev(entry->priv->words); + g_free(entry->priv->word_starts); + g_free(entry->priv->word_ends); + } + entry_strsplit_utf8(GTK_ENTRY(entry), &entry->priv->words, &entry->priv->word_starts, &entry->priv->word_ends); + sexy_spell_entry_recheck_all(entry); + } +} + +/** +* sexy_spell_entry_set_parse_attributes: +* @entry: A #SexySpellEntry. +* @parse: Whether to enable showing attributes +* +* Sets whether to enable showing attributes is enabled. +*/ +void +sexy_spell_entry_set_parse_attributes (SexySpellEntry *entry, gboolean parse) +{ + GtkWidget *widget; + + if (entry->priv->parseattr == parse) + return; + + entry->priv->parseattr = parse; + widget = GTK_WIDGET (entry); + + if (parse == FALSE && gtk_widget_get_realized (widget)) + { + /* This will remove current attrs */ + sexy_spell_entry_recheck_all (entry); + } + else + { + if (entry->priv->words) + { + g_strfreev (entry->priv->words); + g_free (entry->priv->word_starts); + g_free (entry->priv->word_ends); + } + entry_strsplit_utf8 (GTK_ENTRY (entry), &entry->priv->words, &entry->priv->word_starts, &entry->priv->word_ends); + sexy_spell_entry_recheck_all (entry); + } +} diff --git a/hexchat/src/fe-gtk/sexy-spell-entry.h b/hexchat/src/fe-gtk/sexy-spell-entry.h new file mode 100644 index 0000000..1e6fd1f --- /dev/null +++ b/hexchat/src/fe-gtk/sexy-spell-entry.h @@ -0,0 +1,85 @@ +/* libsexy + * Copyright (C) 2004-2006 Christian Hammond. + * + * 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 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 + */ +#ifndef _SEXY_SPELL_ENTRY_H_ +#define _SEXY_SPELL_ENTRY_H_ + +typedef struct _SexySpellEntry SexySpellEntry; +typedef struct _SexySpellEntryClass SexySpellEntryClass; +typedef struct _SexySpellEntryPriv SexySpellEntryPriv; + +#include <gtk/gtk.h> + +#define SEXY_TYPE_SPELL_ENTRY (sexy_spell_entry_get_type()) +#define SEXY_SPELL_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SEXY_TYPE_SPELL_ENTRY, SexySpellEntry)) +#define SEXY_SPELL_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SEXY_TYPE_SPELL_ENTRY, SexySpellEntryClass)) +#define SEXY_IS_SPELL_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SEXY_TYPE_SPELL_ENTRY)) +#define SEXY_IS_SPELL_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SEXY_TYPE_SPELL_ENTRY)) +#define SEXY_SPELL_ENTRY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), SEXY_TYPE_SPELL_ENTRY, SexySpellEntryClass)) + +#define SEXY_SPELL_ERROR (sexy_spell_error_quark()) + +typedef enum { + SEXY_SPELL_ERROR_BACKEND, +} SexySpellError; + +struct _SexySpellEntry +{ + GtkEntry parent_object; + + SexySpellEntryPriv *priv; + + void (*gtk_reserved1)(void); + void (*gtk_reserved2)(void); + void (*gtk_reserved3)(void); + void (*gtk_reserved4)(void); +}; + +struct _SexySpellEntryClass +{ + GtkEntryClass parent_class; + + /* Signals */ + gboolean (*word_check)(SexySpellEntry *entry, const gchar *word); + + void (*gtk_reserved1)(void); + void (*gtk_reserved2)(void); + void (*gtk_reserved3)(void); + void (*gtk_reserved4)(void); +}; + +G_BEGIN_DECLS + +GType sexy_spell_entry_get_type(void); +GtkWidget *sexy_spell_entry_new(void); +GQuark sexy_spell_error_quark(void); + +GSList *sexy_spell_entry_get_languages(const SexySpellEntry *entry); +gchar *sexy_spell_entry_get_language_name(const SexySpellEntry *entry, const gchar *lang); +gboolean sexy_spell_entry_language_is_active(const SexySpellEntry *entry, const gchar *lang); +gboolean sexy_spell_entry_activate_language(SexySpellEntry *entry, const gchar *lang, GError **error); +void sexy_spell_entry_deactivate_language(SexySpellEntry *entry, const gchar *lang); +gboolean sexy_spell_entry_set_active_languages(SexySpellEntry *entry, GSList *langs, GError **error); +GSList *sexy_spell_entry_get_active_languages(SexySpellEntry *entry); +gboolean sexy_spell_entry_is_checked(SexySpellEntry *entry); +void sexy_spell_entry_set_checked(SexySpellEntry *entry, gboolean checked); +void sexy_spell_entry_set_parse_attributes (SexySpellEntry *entry, gboolean parse); +void sexy_spell_entry_activate_default_languages(SexySpellEntry *entry); + +G_END_DECLS + +#endif diff --git a/hexchat/src/fe-gtk/textgui.c b/hexchat/src/fe-gtk/textgui.c new file mode 100644 index 0000000..b5eaf89 --- /dev/null +++ b/hexchat/src/fe-gtk/textgui.c @@ -0,0 +1,484 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <time.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> + +#include "fe-gtk.h" + +#include "../common/hexchat.h" +#include "../common/hexchatc.h" +#include "../common/cfgfiles.h" +#include "../common/outbound.h" +#include "../common/fe.h" +#include "../common/text.h" +#include "gtkutil.h" +#include "xtext.h" +#include "maingui.h" +#include "palette.h" +#include "textgui.h" + +extern struct text_event te[]; +extern char *pntevts_text[]; +extern char *pntevts[]; + +static GtkWidget *pevent_dialog = NULL, *pevent_dialog_twid, + *pevent_dialog_list, *pevent_dialog_hlist; + +enum +{ + EVENT_COLUMN, + TEXT_COLUMN, + ROW_COLUMN, + N_COLUMNS +}; + + +/* this is only used in xtext.c for indented timestamping */ +int +xtext_get_stamp_str (time_t tim, char **ret) +{ + return get_stamp_str (prefs.hex_stamp_text_format, tim, ret); +} + +static void +PrintTextLine (xtext_buffer *xtbuf, unsigned char *text, int len, int indent, time_t timet) +{ + unsigned char *tab, *new_text; + int leftlen; + + if (len == 0) + len = 1; + + if (!indent) + { + if (prefs.hex_stamp_text) + { + int stamp_size; + char *stamp; + + if (timet == 0) + timet = time (0); + + stamp_size = get_stamp_str (prefs.hex_stamp_text_format, timet, &stamp); + new_text = g_malloc (len + stamp_size + 1); + memcpy (new_text, stamp, stamp_size); + g_free (stamp); + memcpy (new_text + stamp_size, text, len); + gtk_xtext_append (xtbuf, new_text, len + stamp_size, timet); + g_free (new_text); + } else + gtk_xtext_append (xtbuf, text, len, timet); + return; + } + + tab = strchr (text, '\t'); + if (tab && tab < (text + len)) + { + leftlen = tab - text; + gtk_xtext_append_indent (xtbuf, + text, leftlen, tab + 1, len - (leftlen + 1), timet); + } else + gtk_xtext_append_indent (xtbuf, 0, 0, text, len, timet); +} + +void +PrintTextRaw (void *xtbuf, unsigned char *text, int indent, time_t stamp) +{ + char *last_text = text; + int len = 0; + int beep_done = FALSE; + + /* split the text into separate lines */ + while (1) + { + switch (*text) + { + case 0: + PrintTextLine (xtbuf, last_text, len, indent, stamp); + return; + case '\n': + PrintTextLine (xtbuf, last_text, len, indent, stamp); + text++; + if (*text == 0) + return; + last_text = text; + len = 0; + break; + case ATTR_BEEP: + *text = ' '; + if (!beep_done) /* beeps may be slow, so only do 1 per line */ + { + beep_done = TRUE; + if (!prefs.hex_input_filter_beep) + gdk_beep (); + } + default: + text++; + len++; + } + } +} + +static void +pevent_dialog_close (GtkWidget *wid, gpointer arg) +{ + pevent_dialog = NULL; + pevent_save (NULL); +} + +static void +pevent_edited (GtkCellRendererText *render, gchar *pathstr, gchar *new_text, gpointer data) +{ + GtkTreeModel *model = gtk_tree_view_get_model (GTK_TREE_VIEW (pevent_dialog_list)); + GtkTreePath *path; + GtkTreeIter iter; + GtkXText *xtext = GTK_XTEXT (pevent_dialog_twid); + int len, m; + const char *text; + char *out; + int sig; + + if (!gtkutil_treeview_get_selected (GTK_TREE_VIEW (pevent_dialog_list), + &iter, ROW_COLUMN, &sig, -1)) + return; + + text = new_text; + len = strlen (new_text); + + if (pevt_build_string (text, &out, &m) != 0) + { + fe_message (_("There was an error parsing the string"), FE_MSG_ERROR); + return; + } + if (m > (te[sig].num_args & 0x7f)) + { + g_free (out); + out = g_strdup_printf ( + _("This signal is only passed %d args, $%d is invalid"), + te[sig].num_args & 0x7f, m); + fe_message (out, FE_MSG_WARN); + g_free (out); + return; + } + + path = gtk_tree_path_new_from_string (pathstr); + gtk_tree_model_get_iter (model, &iter, path); + gtk_list_store_set (GTK_LIST_STORE (model), &iter, TEXT_COLUMN, new_text, -1); + gtk_tree_path_free (path); + + g_free (pntevts_text[sig]); + g_free (pntevts[sig]); + + pntevts_text[sig] = g_strdup (text); + pntevts[sig] = out; + + out = g_malloc (len + 2); + memcpy (out, text, len + 1); + out[len] = '\n'; + out[len + 1] = 0; + check_special_chars (out, TRUE); + + PrintTextRaw (xtext->buffer, out, 0, 0); + g_free (out); + + /* Scroll to bottom */ + gtk_adjustment_set_value (xtext->adj, gtk_adjustment_get_upper (xtext->adj)); + + /* save this when we exit */ + prefs.save_pevents = 1; +} + +static void +pevent_dialog_hfill (GtkWidget *list, int e) +{ + int i = 0; + char *text; + GtkTreeIter iter; + GtkListStore *store; + + store = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (list))); + gtk_list_store_clear (store); + + while (i < (te[e].num_args & 0x7f)) + { + text = _(te[e].help[i]); + i++; + if (text[0] == '\001') + text++; + gtk_list_store_insert_with_values (store, &iter, -1, + 0, i, + 1, text, -1); + } +} + +static void +pevent_selection_changed (GtkTreeSelection *sel, gpointer userdata) +{ + GtkTreeIter iter; + int sig; + + if (!gtkutil_treeview_get_selected (GTK_TREE_VIEW (pevent_dialog_list), + &iter, ROW_COLUMN, &sig, -1)) + { + gtk_list_store_clear (GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (pevent_dialog_hlist)))); + return; + } + + pevent_dialog_hfill (pevent_dialog_hlist, sig); +} + +static void +pevent_dialog_fill (GtkWidget *list) +{ + int i; + GtkListStore *store; + GtkTreeIter iter; + + store = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (list))); + gtk_list_store_clear (store); + + i = NUM_XP; + do + { + i--; + gtk_list_store_insert_with_values (store, &iter, 0, + EVENT_COLUMN, te[i].name, + TEXT_COLUMN, pntevts_text[i], + ROW_COLUMN, i, -1); + } + while (i != 0); +} + +static void +pevent_save_req_cb (void *arg1, char *file) +{ + if (file) + pevent_save (file); +} + +static void +pevent_save_cb (GtkWidget * wid, void *data) +{ + if (data) + { + gtkutil_file_req (NULL, _("Print Texts File"), pevent_save_req_cb, NULL, + NULL, NULL, FRF_WRITE); + return; + } + pevent_save (NULL); +} + +static void +pevent_load_req_cb (void *arg1, char *file) +{ + if (file) + { + pevent_load (file); + pevent_make_pntevts (); + pevent_dialog_fill (pevent_dialog_list); + prefs.save_pevents = 1; + } +} + +static void +pevent_load_cb (GtkWidget * wid, void *data) +{ + gtkutil_file_req (NULL, _("Print Texts File"), pevent_load_req_cb, NULL, NULL, NULL, 0); +} + +static void +pevent_ok_cb (GtkWidget * wid, void *data) +{ + gtk_widget_destroy (pevent_dialog); +} + +static void +pevent_test_cb (GtkWidget * wid, GtkWidget * twid) +{ + int len, n; + char *out, *text; + + for (n = 0; n < NUM_XP; n++) + { + text = _(pntevts_text[n]); + len = strlen (text); + + out = g_malloc (len + 2); + memcpy (out, text, len + 1); + out[len] = '\n'; + out[len + 1] = 0; + check_special_chars (out, TRUE); + + PrintTextRaw (GTK_XTEXT (twid)->buffer, out, 0, 0); + g_free (out); + } +} + +static GtkWidget * +pevent_treeview_new (GtkWidget *box) +{ + GtkWidget *scroll; + GtkListStore *store; + GtkTreeViewColumn *col; + GtkTreeSelection *sel; + GtkWidget *view; + GtkCellRenderer *render; + + scroll = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scroll), GTK_SHADOW_IN); + gtk_widget_set_size_request (GTK_WIDGET (scroll), -1, 250); + + store = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT); + g_return_val_if_fail (store != NULL, NULL); + + view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store)); + gtk_tree_view_set_fixed_height_mode (GTK_TREE_VIEW (view), TRUE); + gtk_tree_view_set_enable_search (GTK_TREE_VIEW (view), TRUE); + gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (view), TRUE); + + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (view)); + g_signal_connect (G_OBJECT (sel), "changed", + G_CALLBACK (pevent_selection_changed), NULL); + + render = gtk_cell_renderer_text_new (); + gtk_tree_view_insert_column_with_attributes ( + GTK_TREE_VIEW (view), EVENT_COLUMN, + _("Event"), render, + "text", EVENT_COLUMN, + NULL); + + render = gtk_cell_renderer_text_new (); + g_object_set (render, "editable", TRUE, NULL); + g_signal_connect (G_OBJECT (render), "edited", + G_CALLBACK (pevent_edited), NULL); + gtk_tree_view_insert_column_with_attributes ( + GTK_TREE_VIEW (view), TEXT_COLUMN, + _("Text"), render, + "text", TEXT_COLUMN, + NULL); + + col = gtk_tree_view_get_column (GTK_TREE_VIEW (view), EVENT_COLUMN); + gtk_tree_view_column_set_sizing (col, GTK_TREE_VIEW_COLUMN_AUTOSIZE); + gtk_tree_view_column_set_resizable (col, TRUE); + gtk_tree_view_column_set_min_width (col, 100); + + gtk_container_add (GTK_CONTAINER (scroll), view); + gtk_container_add (GTK_CONTAINER (box), scroll); + + return view; +} + +static GtkWidget * +pevent_hlist_treeview_new (GtkWidget *box) +{ + GtkWidget *scroll; + GtkListStore *store; + GtkTreeViewColumn *col; + GtkWidget *view; + GtkCellRenderer *render; + + scroll = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scroll), GTK_SHADOW_IN); + + store = gtk_list_store_new (2, G_TYPE_INT, G_TYPE_STRING); + g_return_val_if_fail (store != NULL, NULL); + + view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store)); + gtk_tree_view_set_fixed_height_mode (GTK_TREE_VIEW (view), TRUE); + gtk_tree_view_set_enable_search (GTK_TREE_VIEW (view), FALSE); + gtk_widget_set_can_focus (view, FALSE); + + render = gtk_cell_renderer_text_new (); + gtk_tree_view_insert_column_with_attributes ( + GTK_TREE_VIEW (view), 0, + _("$ Number"), render, + "text", 0, + NULL); + + render = gtk_cell_renderer_text_new (); + gtk_tree_view_insert_column_with_attributes ( + GTK_TREE_VIEW (view), 1, + _("Description"), render, + "text", 1, + NULL); + + col = gtk_tree_view_get_column (GTK_TREE_VIEW (view), 0); + gtk_tree_view_column_set_sizing (col, GTK_TREE_VIEW_COLUMN_AUTOSIZE); + + gtk_container_add (GTK_CONTAINER (scroll), view); + gtk_container_add (GTK_CONTAINER (box), scroll); + + return view; +} + +void +pevent_dialog_show () +{ + GtkWidget *vbox, *hbox, *wid, *pane; + + if (pevent_dialog) + { + mg_bring_tofront (pevent_dialog); + return; + } + + pevent_dialog = + mg_create_generic_tab ("edit events", _("Edit Events"), + TRUE, FALSE, pevent_dialog_close, NULL, + 600, 455, &vbox, 0); + + pane = gtk_vpaned_new (); + gtk_box_pack_start (GTK_BOX (vbox), pane, TRUE, TRUE, 0); + + pevent_dialog_list = pevent_treeview_new (pane); + pevent_dialog_fill (pevent_dialog_list); + + pevent_dialog_hlist = pevent_hlist_treeview_new (pane); + + wid = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (wid), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); + gtk_box_pack_start (GTK_BOX (vbox), wid, FALSE, TRUE, 0); + + pevent_dialog_twid = gtk_xtext_new (colors, 0); + gtk_widget_set_sensitive (pevent_dialog_twid, FALSE); + gtk_widget_set_size_request (pevent_dialog_twid, -1, 75); + gtk_container_add (GTK_CONTAINER (wid), pevent_dialog_twid); + gtk_xtext_set_font (GTK_XTEXT (pevent_dialog_twid), prefs.hex_text_font); + + hbox = gtk_hbutton_box_new (); + gtk_button_box_set_layout (GTK_BUTTON_BOX (hbox), GTK_BUTTONBOX_SPREAD); + gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 4); + gtkutil_button (hbox, GTK_STOCK_SAVE_AS, NULL, pevent_save_cb, + (void *) 1, _("Save As...")); + gtkutil_button (hbox, GTK_STOCK_OPEN, NULL, pevent_load_cb, + NULL, _("Load From...")); + gtkutil_button (hbox, NULL, NULL, pevent_test_cb, + pevent_dialog_twid, _("Test All")); + gtkutil_button (hbox, GTK_STOCK_OK, NULL, pevent_ok_cb, + NULL, _("OK")); + + gtk_widget_show_all (pevent_dialog); +} diff --git a/hexchat/src/fe-gtk/textgui.h b/hexchat/src/fe-gtk/textgui.h new file mode 100644 index 0000000..6d9a3a2 --- /dev/null +++ b/hexchat/src/fe-gtk/textgui.h @@ -0,0 +1,26 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_TEXTGUI_H +#define HEXCHAT_TEXTGUI_H + +void PrintTextRaw (void *xtbuf, unsigned char *text, int indent, time_t stamp); +void pevent_dialog_show (void); + +#endif diff --git a/hexchat/src/fe-gtk/urlgrab.c b/hexchat/src/fe-gtk/urlgrab.c new file mode 100644 index 0000000..fc2f4b5 --- /dev/null +++ b/hexchat/src/fe-gtk/urlgrab.c @@ -0,0 +1,229 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> + +#include "fe-gtk.h" + +#include "../common/hexchat.h" +#include "../common/hexchatc.h" +#include "../common/cfgfiles.h" +#include "../common/fe.h" +#include "../common/url.h" +#include "../common/tree.h" +#include "gtkutil.h" +#include "menu.h" +#include "maingui.h" +#include "urlgrab.h" + +/* model for the URL treeview */ +enum +{ + URL_COLUMN, + N_COLUMNS +}; + +static GtkWidget *urlgrabberwindow = 0; + + +static gboolean +url_treeview_url_clicked_cb (GtkWidget *view, GdkEventButton *event, + gpointer data) +{ + GtkTreeIter iter; + gchar *url; + GtkTreeSelection *sel; + GtkTreePath *path; + GtkTreeView *tree = GTK_TREE_VIEW (view); + + if (!event || !gtk_tree_view_get_path_at_pos (tree, event->x, event->y, &path, 0, 0, 0)) + return FALSE; + + /* select what they right-clicked on */ + sel = gtk_tree_view_get_selection (tree); + gtk_tree_selection_unselect_all (sel); + gtk_tree_selection_select_path (sel, path); + gtk_tree_path_free (path); + + if (!gtkutil_treeview_get_selected (GTK_TREE_VIEW (view), &iter, + URL_COLUMN, &url, -1)) + return FALSE; + + switch (event->button) + { + case 1: + if (event->type == GDK_2BUTTON_PRESS) + fe_open_url (url); + break; + case 3: + menu_urlmenu (event, url); + break; + default: + break; + } + g_free (url); + + return FALSE; +} + +static GtkWidget * +url_treeview_new (GtkWidget *box) +{ + GtkListStore *store; + GtkWidget *view; + + store = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING); + g_return_val_if_fail (store != NULL, NULL); + + view = gtkutil_treeview_new (box, GTK_TREE_MODEL (store), NULL, + URL_COLUMN, _("URL"), -1); + g_signal_connect (G_OBJECT (view), "button_press_event", + G_CALLBACK (url_treeview_url_clicked_cb), NULL); + /* don't want column headers */ + gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (view), FALSE); + gtk_widget_show (view); + return view; +} + +static void +url_closegui (GtkWidget *wid, gpointer userdata) +{ + urlgrabberwindow = 0; +} + +static void +url_button_clear (void) +{ + GtkListStore *store; + + url_clear (); + store = GTK_LIST_STORE (g_object_get_data (G_OBJECT (urlgrabberwindow), + "model")); + gtk_list_store_clear (store); +} + +static void +url_button_copy (GtkWidget *widget, gpointer data) +{ + GtkTreeView *view = GTK_TREE_VIEW (data); + GtkTreeIter iter; + gchar *url = NULL; + + if (gtkutil_treeview_get_selected (view, &iter, URL_COLUMN, &url, -1)) + { + gtkutil_copy_to_clipboard (GTK_WIDGET (view), NULL, url); + g_free (url); + } +} + +static void +url_save_callback (void *arg1, char *file) +{ + if (file) + { + url_save_tree (file, "w", TRUE); + } +} + +static void +url_button_save (void) +{ + gtkutil_file_req (NULL, _("Select an output filename"), + url_save_callback, NULL, NULL, NULL, FRF_WRITE); +} + +void +fe_url_add (const char *urltext) +{ + GtkListStore *store; + GtkTreeIter iter; + gboolean valid; + + if (urlgrabberwindow) + { + store = GTK_LIST_STORE (g_object_get_data (G_OBJECT (urlgrabberwindow), + "model")); + gtk_list_store_prepend (store, &iter); + gtk_list_store_set (store, &iter, + URL_COLUMN, urltext, + -1); + + /* remove any overflow */ + if (prefs.hex_url_grabber_limit > 0) + { + valid = gtk_tree_model_iter_nth_child ( + GTK_TREE_MODEL (store), &iter, NULL, prefs.hex_url_grabber_limit); + while (valid) + valid = gtk_list_store_remove (store, &iter); + } + } +} + +static int +populate_cb (char *urltext, gpointer userdata) +{ + fe_url_add (urltext); + return TRUE; +} + +void +url_opengui () +{ + GtkWidget *vbox, *hbox, *view; + char buf[128]; + + if (urlgrabberwindow) + { + mg_bring_tofront (urlgrabberwindow); + return; + } + + g_snprintf(buf, sizeof(buf), _("URL Grabber - %s"), _(DISPLAY_NAME)); + urlgrabberwindow = + mg_create_generic_tab ("UrlGrabber", buf, FALSE, TRUE, url_closegui, NULL, + 400, 256, &vbox, 0); + gtkutil_destroy_on_esc (urlgrabberwindow); + view = url_treeview_new (vbox); + g_object_set_data (G_OBJECT (urlgrabberwindow), "model", + gtk_tree_view_get_model (GTK_TREE_VIEW (view))); + + hbox = gtk_hbutton_box_new (); + gtk_button_box_set_layout (GTK_BUTTON_BOX (hbox), GTK_BUTTONBOX_SPREAD); + gtk_container_set_border_width (GTK_CONTAINER (hbox), 5); + gtk_box_pack_end (GTK_BOX (vbox), hbox, 0, 0, 0); + gtk_widget_show (hbox); + + gtkutil_button (hbox, GTK_STOCK_CLEAR, + _("Clear list"), url_button_clear, 0, _("Clear")); + gtkutil_button (hbox, GTK_STOCK_COPY, + _("Copy selected URL"), url_button_copy, view, _("Copy")); + gtkutil_button (hbox, GTK_STOCK_SAVE_AS, + _("Save list to a file"), url_button_save, 0, _("Save As...")); + + gtk_widget_show (urlgrabberwindow); + + if (prefs.hex_url_grabber) + tree_foreach (url_tree, (tree_traverse_func *)populate_cb, NULL); + else + { + gtk_list_store_clear (GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (view)))); + fe_url_add ("URL Grabber is disabled."); + } +} diff --git a/hexchat/src/fe-gtk/urlgrab.h b/hexchat/src/fe-gtk/urlgrab.h new file mode 100644 index 0000000..246b56e --- /dev/null +++ b/hexchat/src/fe-gtk/urlgrab.h @@ -0,0 +1,25 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_URLGRAB_H +#define HEXCHAT_URLGRAB_H + +void url_opengui (void); + +#endif diff --git a/hexchat/src/fe-gtk/userlistgui.c b/hexchat/src/fe-gtk/userlistgui.c new file mode 100644 index 0000000..d06975c --- /dev/null +++ b/hexchat/src/fe-gtk/userlistgui.c @@ -0,0 +1,753 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> + +#include "fe-gtk.h" + +#include <gdk/gdkkeysyms.h> + +#include "../common/hexchat.h" +#include "../common/util.h" +#include "../common/userlist.h" +#include "../common/modes.h" +#include "../common/text.h" +#include "../common/notify.h" +#include "../common/hexchatc.h" +#include "../common/fe.h" +#include "gtkutil.h" +#include "palette.h" +#include "maingui.h" +#include "menu.h" +#include "pixmaps.h" +#include "userlistgui.h" +#include "fkeys.h" + +enum +{ + COL_PIX=0, /* GdkPixbuf * */ + COL_NICK=1, /* char * */ + COL_HOST=2, /* char * */ + COL_USER=3, /* struct User * */ + COL_GDKCOLOR=4 /* GdkColor * */ +}; + + +GdkPixbuf * +get_user_icon (server *serv, struct User *user) +{ + char *pre; + int level; + + if (!user) + return NULL; + + /* these ones are hardcoded */ + switch (user->prefix[0]) + { + case 0: return NULL; + case '+': return pix_ulist_voice; + case '%': return pix_ulist_halfop; + case '@': return pix_ulist_op; + } + + /* find out how many levels above Op this user is */ + pre = strchr (serv->nick_prefixes, '@'); + if (pre && pre != serv->nick_prefixes) + { + pre--; + level = 0; + while (1) + { + if (pre[0] == user->prefix[0]) + { + switch (level) + { + case 0: return pix_ulist_owner; /* 1 level above op */ + case 1: return pix_ulist_founder; /* 2 levels above op */ + case 2: return pix_ulist_netop; /* 3 levels above op */ + } + break; /* 4+, no icons */ + } + level++; + if (pre == serv->nick_prefixes) + break; + pre--; + } + } + + return NULL; +} + +void +fe_userlist_numbers (session *sess) +{ + char tbuf[256]; + + if (sess == current_tab || !sess->gui->is_tab) + { + if (sess->total) + { + g_snprintf (tbuf, sizeof (tbuf), _("%d ops, %d total"), sess->ops, sess->total); + tbuf[sizeof (tbuf) - 1] = 0; + gtk_label_set_text (GTK_LABEL (sess->gui->namelistinfo), tbuf); + } else + { + gtk_label_set_text (GTK_LABEL (sess->gui->namelistinfo), NULL); + } + + if (sess->type == SESS_CHANNEL && prefs.hex_gui_win_ucount) + fe_set_title (sess); + } +} + +static void +scroll_to_iter (GtkTreeIter *iter, GtkTreeView *treeview, GtkTreeModel *model) +{ + GtkTreePath *path = gtk_tree_model_get_path (model, iter); + if (path) + { + gtk_tree_view_scroll_to_cell (treeview, path, NULL, TRUE, 0.5, 0.5); + gtk_tree_path_free (path); + } +} + +/* select a row in the userlist by nick-name */ + +void +userlist_select (session *sess, char *name) +{ + GtkTreeIter iter; + GtkTreeView *treeview = GTK_TREE_VIEW (sess->gui->user_tree); + GtkTreeModel *model = gtk_tree_view_get_model (treeview); + GtkTreeSelection *selection = gtk_tree_view_get_selection (treeview); + struct User *row_user; + + if (gtk_tree_model_get_iter_first (model, &iter)) + { + do + { + gtk_tree_model_get (model, &iter, COL_USER, &row_user, -1); + if (sess->server->p_cmp (row_user->nick, name) == 0) + { + if (gtk_tree_selection_iter_is_selected (selection, &iter)) + gtk_tree_selection_unselect_iter (selection, &iter); + else + gtk_tree_selection_select_iter (selection, &iter); + + /* and make sure it's visible */ + scroll_to_iter (&iter, treeview, model); + return; + } + } + while (gtk_tree_model_iter_next (model, &iter)); + } +} + +char ** +userlist_selection_list (GtkWidget *widget, int *num_ret) +{ + GtkTreeIter iter; + GtkTreeView *treeview = (GtkTreeView *) widget; + GtkTreeSelection *selection = gtk_tree_view_get_selection (treeview); + GtkTreeModel *model = gtk_tree_view_get_model (treeview); + struct User *user; + int i, num_sel; + char **nicks; + + *num_ret = 0; + /* first, count the number of selections */ + num_sel = 0; + if (gtk_tree_model_get_iter_first (model, &iter)) + { + do + { + if (gtk_tree_selection_iter_is_selected (selection, &iter)) + num_sel++; + } + while (gtk_tree_model_iter_next (model, &iter)); + } + + if (num_sel < 1) + return NULL; + + nicks = g_new (char *, num_sel + 1); + + i = 0; + gtk_tree_model_get_iter_first (model, &iter); + do + { + if (gtk_tree_selection_iter_is_selected (selection, &iter)) + { + gtk_tree_model_get (model, &iter, COL_USER, &user, -1); + nicks[i] = g_strdup (user->nick); + i++; + nicks[i] = NULL; + } + } + while (gtk_tree_model_iter_next (model, &iter)); + + *num_ret = i; + return nicks; +} + +void +fe_userlist_set_selected (struct session *sess) +{ + GtkListStore *store = sess->res->user_model; + GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (sess->gui->user_tree)); + GtkTreeIter iter; + struct User *user; + + /* if it's not front-most tab it doesn't own the GtkTreeView! */ + if (store != (GtkListStore*) gtk_tree_view_get_model (GTK_TREE_VIEW (sess->gui->user_tree))) + return; + + if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter)) + { + do + { + gtk_tree_model_get (GTK_TREE_MODEL (store), &iter, COL_USER, &user, -1); + + if (gtk_tree_selection_iter_is_selected (selection, &iter)) + user->selected = 1; + else + user->selected = 0; + + } while (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter)); + } +} + +static GtkTreeIter * +find_row (GtkTreeView *treeview, GtkTreeModel *model, struct User *user, + int *selected) +{ + static GtkTreeIter iter; + struct User *row_user; + + *selected = FALSE; + if (gtk_tree_model_get_iter_first (model, &iter)) + { + do + { + gtk_tree_model_get (model, &iter, COL_USER, &row_user, -1); + if (row_user == user) + { + if (gtk_tree_view_get_model (treeview) == model) + { + if (gtk_tree_selection_iter_is_selected (gtk_tree_view_get_selection (treeview), &iter)) + *selected = TRUE; + } + return &iter; + } + } + while (gtk_tree_model_iter_next (model, &iter)); + } + + return NULL; +} + +void +userlist_set_value (GtkWidget *treeview, gfloat val) +{ + gtk_adjustment_set_value ( + gtk_tree_view_get_vadjustment (GTK_TREE_VIEW (treeview)), val); +} + +gfloat +userlist_get_value (GtkWidget *treeview) +{ + return gtk_adjustment_get_value (gtk_tree_view_get_vadjustment (GTK_TREE_VIEW (treeview))); +} + +int +fe_userlist_remove (session *sess, struct User *user) +{ + GtkTreeIter *iter; +/* GtkAdjustment *adj; + gfloat val, end;*/ + int sel; + + iter = find_row (GTK_TREE_VIEW (sess->gui->user_tree), + GTK_TREE_MODEL(sess->res->user_model), user, &sel); + if (!iter) + return 0; + +/* adj = gtk_tree_view_get_vadjustment (GTK_TREE_VIEW (sess->gui->user_tree)); + val = adj->value;*/ + + gtk_list_store_remove (sess->res->user_model, iter); + + /* is it the front-most tab? */ +/* if (gtk_tree_view_get_model (GTK_TREE_VIEW (sess->gui->user_tree)) + == sess->res->user_model) + { + end = adj->upper - adj->lower - adj->page_size; + if (val > end) + val = end; + gtk_adjustment_set_value (adj, val); + }*/ + + return sel; +} + +void +fe_userlist_rehash (session *sess, struct User *user) +{ + GtkTreeIter *iter; + int sel; + int nick_color = 0; + + iter = find_row (GTK_TREE_VIEW (sess->gui->user_tree), + GTK_TREE_MODEL(sess->res->user_model), user, &sel); + if (!iter) + return; + + if (prefs.hex_away_track && user->away) + nick_color = COL_AWAY; + else if (prefs.hex_gui_ulist_color) + nick_color = text_color_of(user->nick); + + gtk_list_store_set (GTK_LIST_STORE (sess->res->user_model), iter, + COL_HOST, user->hostname, + COL_GDKCOLOR, nick_color ? &colors[nick_color] : NULL, + -1); +} + +void +fe_userlist_insert (session *sess, struct User *newuser, gboolean sel) +{ + GtkTreeModel *model = GTK_TREE_MODEL(sess->res->user_model); + GdkPixbuf *pix = get_user_icon (sess->server, newuser); + GtkTreeIter iter; + char *nick; + int nick_color = 0; + + if (prefs.hex_away_track && newuser->away) + nick_color = COL_AWAY; + else if (prefs.hex_gui_ulist_color) + nick_color = text_color_of(newuser->nick); + + nick = newuser->nick; + if (!prefs.hex_gui_ulist_icons) + { + nick = g_malloc (strlen (newuser->nick) + 2); + nick[0] = newuser->prefix[0]; + if (nick[0] == '\0' || nick[0] == ' ') + strcpy (nick, newuser->nick); + else + strcpy (nick + 1, newuser->nick); + pix = NULL; + } + + gtk_list_store_insert_with_values (GTK_LIST_STORE (model), &iter, 0, + COL_PIX, pix, + COL_NICK, nick, + COL_HOST, newuser->hostname, + COL_USER, newuser, + COL_GDKCOLOR, nick_color ? &colors[nick_color] : NULL, + -1); + + if (!prefs.hex_gui_ulist_icons) + { + g_free (nick); + } + + /* is it me? */ + if (newuser->me && sess->gui->nick_box) + { + if (!sess->gui->is_tab || sess == current_tab) + mg_set_access_icon (sess->gui, pix, sess->server->is_away); + } + + /* is it the front-most tab? */ + if (gtk_tree_view_get_model (GTK_TREE_VIEW (sess->gui->user_tree)) + == model) + { + if (sel) + gtk_tree_selection_select_iter (gtk_tree_view_get_selection + (GTK_TREE_VIEW (sess->gui->user_tree)), &iter); + } +} + +void +fe_userlist_clear (session *sess) +{ + gtk_list_store_clear (sess->res->user_model); +} + +static void +userlist_dnd_drop (GtkTreeView *widget, GdkDragContext *context, + gint x, gint y, GtkSelectionData *selection_data, + guint info, guint ttime, gpointer userdata) +{ + struct User *user; + gchar *data; + GtkTreePath *path; + GtkTreeModel *model; + GtkTreeIter iter; + + if (!gtk_tree_view_get_path_at_pos (widget, x, y, &path, NULL, NULL, NULL)) + return; + + model = gtk_tree_view_get_model (widget); + if (!gtk_tree_model_get_iter (model, &iter, path)) + return; + gtk_tree_model_get (model, &iter, COL_USER, &user, -1); + + data = (char *)gtk_selection_data_get_data (selection_data); + + if (data) + mg_dnd_drop_file (current_sess, user->nick, data); +} + +static gboolean +userlist_dnd_motion (GtkTreeView *widget, GdkDragContext *context, gint x, + gint y, guint ttime, gpointer tree) +{ + GtkTreePath *path; + GtkTreeSelection *sel; + + if (!tree) + return FALSE; + + if (gtk_tree_view_get_path_at_pos (widget, x, y, &path, NULL, NULL, NULL)) + { + sel = gtk_tree_view_get_selection (widget); + gtk_tree_selection_unselect_all (sel); + gtk_tree_selection_select_path (sel, path); + } + + return FALSE; +} + +static gboolean +userlist_dnd_leave (GtkTreeView *widget, GdkDragContext *context, guint ttime) +{ + gtk_tree_selection_unselect_all (gtk_tree_view_get_selection (widget)); + return TRUE; +} + +static int +userlist_alpha_cmp (GtkTreeModel *model, GtkTreeIter *iter_a, GtkTreeIter *iter_b, gpointer userdata) +{ + struct User *user_a, *user_b; + + gtk_tree_model_get (model, iter_a, COL_USER, &user_a, -1); + gtk_tree_model_get (model, iter_b, COL_USER, &user_b, -1); + + return nick_cmp_alpha (user_a, user_b, ((session*)userdata)->server); +} + +static int +userlist_ops_cmp (GtkTreeModel *model, GtkTreeIter *iter_a, GtkTreeIter *iter_b, gpointer userdata) +{ + struct User *user_a, *user_b; + + gtk_tree_model_get (model, iter_a, COL_USER, &user_a, -1); + gtk_tree_model_get (model, iter_b, COL_USER, &user_b, -1); + + return nick_cmp_az_ops (((session*)userdata)->server, user_a, user_b); +} + +GtkListStore * +userlist_create_model (session *sess) +{ + GtkListStore *store; + GtkTreeIterCompareFunc cmp_func; + GtkSortType sort_type; + + store = gtk_list_store_new (5, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_POINTER, GDK_TYPE_COLOR); + + switch (prefs.hex_gui_ulist_sort) + { + case 0: + cmp_func = userlist_ops_cmp; + sort_type = GTK_SORT_ASCENDING; + break; + case 1: + cmp_func = userlist_alpha_cmp; + sort_type = GTK_SORT_ASCENDING; + break; + case 2: + cmp_func = userlist_ops_cmp; + sort_type = GTK_SORT_DESCENDING; + break; + case 3: + cmp_func = userlist_alpha_cmp; + sort_type = GTK_SORT_DESCENDING; + break; + default: + /* No sorting */ + gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE(store), NULL, NULL, NULL); + return store; + } + + gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE(store), cmp_func, sess, NULL); + gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE(store), + GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, sort_type); + + return store; +} + +static void +userlist_add_columns (GtkTreeView * treeview) +{ + GtkCellRenderer *renderer; + + /* icon column */ + renderer = gtk_cell_renderer_pixbuf_new (); + if (prefs.hex_gui_compact) + g_object_set (G_OBJECT (renderer), "ypad", 0, NULL); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview), + -1, NULL, renderer, + "pixbuf", 0, NULL); + + /* nick column */ + renderer = gtk_cell_renderer_text_new (); + if (prefs.hex_gui_compact) + g_object_set (G_OBJECT (renderer), "ypad", 0, NULL); + gtk_cell_renderer_text_set_fixed_height_from_font (GTK_CELL_RENDERER_TEXT (renderer), 1); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview), + -1, NULL, renderer, + "text", 1, "foreground-gdk", 4, NULL); + + if (prefs.hex_gui_ulist_show_hosts) + { + /* hostname column */ + renderer = gtk_cell_renderer_text_new (); + if (prefs.hex_gui_compact) + g_object_set (G_OBJECT (renderer), "ypad", 0, NULL); + gtk_cell_renderer_text_set_fixed_height_from_font (GTK_CELL_RENDERER_TEXT (renderer), 1); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview), + -1, NULL, renderer, + "text", 2, NULL); + } +} + +static gint +userlist_click_cb (GtkWidget *widget, GdkEventButton *event, gpointer userdata) +{ + char **nicks; + int i; + GtkTreeSelection *sel; + GtkTreePath *path; + + if (!event) + return FALSE; + + if (!(event->state & STATE_CTRL) && + event->type == GDK_2BUTTON_PRESS && prefs.hex_gui_ulist_doubleclick[0]) + { + nicks = userlist_selection_list (widget, &i); + if (nicks) + { + nick_command_parse (current_sess, prefs.hex_gui_ulist_doubleclick, nicks[0], + nicks[0]); + while (i) + { + i--; + g_free (nicks[i]); + } + g_free (nicks); + } + return TRUE; + } + + if (event->button == 3) + { + /* do we have a multi-selection? */ + nicks = userlist_selection_list (widget, &i); + if (nicks && i > 1) + { + menu_nickmenu (current_sess, event, nicks[0], i); + while (i) + { + i--; + g_free (nicks[i]); + } + g_free (nicks); + return TRUE; + } + if (nicks) + { + g_free (nicks[0]); + g_free (nicks); + } + + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (widget)); + if (gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (widget), + event->x, event->y, &path, 0, 0, 0)) + { + gtk_tree_selection_unselect_all (sel); + gtk_tree_selection_select_path (sel, path); + gtk_tree_path_free (path); + nicks = userlist_selection_list (widget, &i); + if (nicks) + { + menu_nickmenu (current_sess, event, nicks[0], i); + while (i) + { + i--; + g_free (nicks[i]); + } + g_free (nicks); + } + } else + { + gtk_tree_selection_unselect_all (sel); + } + + return TRUE; + } + + return FALSE; +} + +static gboolean +userlist_key_cb (GtkWidget *wid, GdkEventKey *evt, gpointer userdata) +{ + if (evt->keyval >= GDK_KEY_asterisk && evt->keyval <= GDK_KEY_z) + { + /* dirty trick to avoid auto-selection */ + SPELL_ENTRY_SET_EDITABLE (current_sess->gui->input_box, FALSE); + gtk_widget_grab_focus (current_sess->gui->input_box); + SPELL_ENTRY_SET_EDITABLE (current_sess->gui->input_box, TRUE); + gtk_widget_event (current_sess->gui->input_box, (GdkEvent *)evt); + return TRUE; + } + + return FALSE; +} + +GtkWidget * +userlist_create (GtkWidget *box) +{ + GtkWidget *sw, *treeview; + static const GtkTargetEntry dnd_dest_targets[] = + { + {"text/uri-list", 0, 1}, + {"HEXCHAT_CHANVIEW", GTK_TARGET_SAME_APP, 75 } + }; + static const GtkTargetEntry dnd_src_target[] = + { + {"HEXCHAT_USERLIST", GTK_TARGET_SAME_APP, 75 } + }; + + sw = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw), + GTK_SHADOW_ETCHED_IN); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), + prefs.hex_gui_ulist_show_hosts ? + GTK_POLICY_AUTOMATIC : + GTK_POLICY_NEVER, + GTK_POLICY_AUTOMATIC); + gtk_box_pack_start (GTK_BOX (box), sw, TRUE, TRUE, 0); + gtk_widget_show (sw); + + treeview = gtk_tree_view_new (); + gtk_widget_set_name (treeview, "hexchat-userlist"); + gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeview), FALSE); + gtk_tree_selection_set_mode (gtk_tree_view_get_selection + (GTK_TREE_VIEW (treeview)), + GTK_SELECTION_MULTIPLE); + + /* set up drops */ + gtk_drag_dest_set (treeview, GTK_DEST_DEFAULT_ALL, dnd_dest_targets, 2, + GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_LINK); + gtk_drag_source_set (treeview, GDK_BUTTON1_MASK, dnd_src_target, 1, GDK_ACTION_MOVE); + + /* file DND (for DCC) */ + g_signal_connect (G_OBJECT (treeview), "drag_motion", + G_CALLBACK (userlist_dnd_motion), treeview); + g_signal_connect (G_OBJECT (treeview), "drag_leave", + G_CALLBACK (userlist_dnd_leave), 0); + g_signal_connect (G_OBJECT (treeview), "drag_data_received", + G_CALLBACK (userlist_dnd_drop), treeview); + + g_signal_connect (G_OBJECT (treeview), "button_press_event", + G_CALLBACK (userlist_click_cb), 0); + g_signal_connect (G_OBJECT (treeview), "key_press_event", + G_CALLBACK (userlist_key_cb), 0); + + /* tree/chanview DND */ + g_signal_connect (G_OBJECT (treeview), "drag_begin", + G_CALLBACK (mg_drag_begin_cb), NULL); + g_signal_connect (G_OBJECT (treeview), "drag_drop", + G_CALLBACK (mg_drag_drop_cb), NULL); + g_signal_connect (G_OBJECT (treeview), "drag_motion", + G_CALLBACK (mg_drag_motion_cb), NULL); + g_signal_connect (G_OBJECT (treeview), "drag_end", + G_CALLBACK (mg_drag_end_cb), NULL); + + userlist_add_columns (GTK_TREE_VIEW (treeview)); + + gtk_container_add (GTK_CONTAINER (sw), treeview); + gtk_widget_show (treeview); + + return treeview; +} + +void +userlist_show (session *sess) +{ + gtk_tree_view_set_model (GTK_TREE_VIEW (sess->gui->user_tree), + GTK_TREE_MODEL(sess->res->user_model)); +} + +void +fe_uselect (session *sess, char *word[], int do_clear, int scroll_to) +{ + int thisname; + char *name; + GtkTreeIter iter; + GtkTreeView *treeview = GTK_TREE_VIEW (sess->gui->user_tree); + GtkTreeModel *model = gtk_tree_view_get_model (treeview); + GtkTreeSelection *selection = gtk_tree_view_get_selection (treeview); + struct User *row_user; + + if (gtk_tree_model_get_iter_first (model, &iter)) + { + if (do_clear) + gtk_tree_selection_unselect_all (selection); + + do + { + if (*word[0]) + { + gtk_tree_model_get (model, &iter, COL_USER, &row_user, -1); + thisname = 0; + while ( *(name = word[thisname++]) ) + { + if (sess->server->p_cmp (row_user->nick, name) == 0) + { + gtk_tree_selection_select_iter (selection, &iter); + if (scroll_to) + scroll_to_iter (&iter, treeview, model); + break; + } + } + } + + } + while (gtk_tree_model_iter_next (model, &iter)); + } +} diff --git a/hexchat/src/fe-gtk/userlistgui.h b/hexchat/src/fe-gtk/userlistgui.h new file mode 100644 index 0000000..e24f2eb --- /dev/null +++ b/hexchat/src/fe-gtk/userlistgui.h @@ -0,0 +1,32 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_USERLISTGUI_H +#define HEXCHAT_USERLISTGUI_H + +void userlist_set_value (GtkWidget *treeview, gfloat val); +gfloat userlist_get_value (GtkWidget *treeview); +GtkWidget *userlist_create (GtkWidget *box); +GtkListStore *userlist_create_model (session *sess); +void userlist_show (session *sess); +void userlist_select (session *sess, char *name); +char **userlist_selection_list (GtkWidget *widget, int *num_ret); +GdkPixbuf *get_user_icon (server *serv, struct User *user); + +#endif diff --git a/hexchat/src/fe-gtk/xtext.c b/hexchat/src/fe-gtk/xtext.c new file mode 100644 index 0000000..be978f2 --- /dev/null +++ b/hexchat/src/fe-gtk/xtext.c @@ -0,0 +1,5077 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + * ========================================================================= + * + * xtext, the text widget used by X-Chat. + * By Peter Zelezny <zed@xchat.org>. + * + */ + +#define GDK_MULTIHEAD_SAFE +#define MARGIN 2 /* dont touch. */ +#define REFRESH_TIMEOUT 20 +#define WORDWRAP_LIMIT 24 + +#include <string.h> +#include <ctype.h> +#include <stdlib.h> +#include <time.h> + +#include "config.h" +#include "../common/hexchat.h" +#include "../common/fe.h" +#include "../common/util.h" +#include "../common/hexchatc.h" +#include "../common/url.h" + +#ifdef WIN32 +#include "marshal.h" +#else +#include "../common/marshal.h" +#endif + +#include "fe-gtk.h" +#include "xtext.h" +#include "fkeys.h" + +#define charlen(str) g_utf8_skip[*(guchar *)(str)] + +#ifdef WIN32 +#include <windows.h> +#include <io.h> +#include <gdk/gdk.h> +#include <gdk/gdkwin32.h> +#else +#include <unistd.h> +#ifdef GDK_WINDOWING_X11 +#include <gdk/gdkx.h> +#endif +#endif + +/* is delimiter */ +#define is_del(c) \ + (c == ' ' || c == '\n' || c == '>' || c == '<' || c == 0) + +/* force scrolling off */ +#define dontscroll(buf) (buf)->last_pixel_pos = 0x7fffffff + +static GtkWidgetClass *parent_class = NULL; + +struct textentry +{ + struct textentry *next; + struct textentry *prev; + unsigned char *str; + time_t stamp; + gint16 str_width; + gint16 str_len; + gint16 mark_start; + gint16 mark_end; + gint16 indent; + gint16 left_len; + GSList *slp; + GSList *sublines; + guchar tag; + guchar pad1; + guchar pad2; /* 32-bit align : 44 bytes total */ + GList *marks; /* List of found strings */ +}; + +enum +{ + WORD_CLICK, + SET_SCROLL_ADJUSTMENTS, + LAST_SIGNAL +}; + +/* values for selection info */ +enum +{ + TARGET_UTF8_STRING, + TARGET_STRING, + TARGET_TEXT, + TARGET_COMPOUND_TEXT +}; + +static guint xtext_signals[LAST_SIGNAL]; + +char *nocasestrstr (const char *text, const char *tofind); /* util.c */ +int xtext_get_stamp_str (time_t, char **); +static void gtk_xtext_render_page (GtkXText * xtext); +static void gtk_xtext_calc_lines (xtext_buffer *buf, int); +static gboolean gtk_xtext_is_selecting (GtkXText *xtext); +static char *gtk_xtext_selection_get_text (GtkXText *xtext, int *len_ret); +static textentry *gtk_xtext_nth (GtkXText *xtext, int line, int *subline); +static void gtk_xtext_adjustment_changed (GtkAdjustment * adj, + GtkXText * xtext); +static void gtk_xtext_scroll_adjustments (GtkXText *xtext, GtkAdjustment *hadj, + GtkAdjustment *vadj); +static int gtk_xtext_render_ents (GtkXText * xtext, textentry *, textentry *); +static void gtk_xtext_recalc_widths (xtext_buffer *buf, int); +static void gtk_xtext_fix_indent (xtext_buffer *buf); +static int gtk_xtext_find_subline (GtkXText *xtext, textentry *ent, int line); +/* static char *gtk_xtext_conv_color (unsigned char *text, int len, int *newlen); */ +/* For use by gtk_xtext_strip_color() and its callers -- */ +struct offlen_s { + guint16 off; + guint16 len; + guint16 emph; + guint16 width; +}; +typedef struct offlen_s offlen_t; +static unsigned char * +gtk_xtext_strip_color (unsigned char *text, int len, unsigned char *outbuf, + int *newlen, GSList **slp, int strip_hidden); +static gboolean gtk_xtext_check_ent_visibility (GtkXText * xtext, textentry *find_ent, int add); +static int gtk_xtext_render_page_timeout (GtkXText * xtext); +static int gtk_xtext_search_offset (xtext_buffer *buf, textentry *ent, unsigned int off); +static GList * gtk_xtext_search_textentry (xtext_buffer *, textentry *); +static void gtk_xtext_search_textentry_add (xtext_buffer *, textentry *, GList *, gboolean); +static void gtk_xtext_search_textentry_del (xtext_buffer *, textentry *); +static void gtk_xtext_search_textentry_fini (gpointer, gpointer); +static void gtk_xtext_search_fini (xtext_buffer *); +static gboolean gtk_xtext_search_init (xtext_buffer *buf, const gchar *text, gtk_xtext_search_flags flags, GError **perr); +static char * gtk_xtext_get_word (GtkXText * xtext, int x, int y, textentry ** ret_ent, int *ret_off, int *ret_len, GSList **slp); + +#define xtext_draw_bg(xt,x,y,w,h) gdk_draw_rectangle(xt->draw_buf, xt->bgc, 1, x, y, w, h); + +/* ======================================= */ +/* ============ PANGO BACKEND ============ */ +/* ======================================= */ + +#define EMPH_ITAL 1 +#define EMPH_BOLD 2 +#define EMPH_HIDDEN 4 +static PangoAttrList *attr_lists[4]; +static int fontwidths[4][128]; + +static PangoAttribute * +xtext_pango_attr (PangoAttribute *attr) +{ + attr->start_index = PANGO_ATTR_INDEX_FROM_TEXT_BEGINNING; + attr->end_index = PANGO_ATTR_INDEX_TO_TEXT_END; + return attr; +} + +static void +xtext_pango_init (GtkXText *xtext) +{ + size_t i; + int j; + char buf[2] = "\000"; + + if (attr_lists[0]) + { + for (i = 0; i < (EMPH_ITAL | EMPH_BOLD); i++) + pango_attr_list_unref (attr_lists[i]); + } + + for (i = 0; i < sizeof attr_lists / sizeof attr_lists[0]; i++) + { + attr_lists[i] = pango_attr_list_new (); + switch (i) + { + case 0: /* Roman */ + break; + case EMPH_ITAL: /* Italic */ + pango_attr_list_insert (attr_lists[i], + xtext_pango_attr (pango_attr_style_new (PANGO_STYLE_ITALIC))); + break; + case EMPH_BOLD: /* Bold */ + pango_attr_list_insert (attr_lists[i], + xtext_pango_attr (pango_attr_weight_new (PANGO_WEIGHT_BOLD))); + break; + case EMPH_ITAL | EMPH_BOLD: /* Italic Bold */ + pango_attr_list_insert (attr_lists[i], + xtext_pango_attr (pango_attr_style_new (PANGO_STYLE_ITALIC))); + pango_attr_list_insert (attr_lists[i], + xtext_pango_attr (pango_attr_weight_new (PANGO_WEIGHT_BOLD))); + break; + } + + /* Now initialize fontwidths[i] */ + pango_layout_set_attributes (xtext->layout, attr_lists[i]); + for (j = 0; j < 128; j++) + { + buf[0] = j; + pango_layout_set_text (xtext->layout, buf, 1); + pango_layout_get_pixel_size (xtext->layout, &fontwidths[i][j], NULL); + } + } + xtext->space_width = fontwidths[0][' ']; +} + +static void +backend_font_close (GtkXText *xtext) +{ + pango_font_description_free (xtext->font->font); +} + +static void +backend_init (GtkXText *xtext) +{ + if (xtext->layout == NULL) + { + xtext->layout = gtk_widget_create_pango_layout (GTK_WIDGET (xtext), 0); + if (xtext->font) + pango_layout_set_font_description (xtext->layout, xtext->font->font); + } +} + +static void +backend_deinit (GtkXText *xtext) +{ + if (xtext->layout) + { + g_object_unref (xtext->layout); + xtext->layout = NULL; + } +} + +static PangoFontDescription * +backend_font_open_real (char *name) +{ + PangoFontDescription *font; + + font = pango_font_description_from_string (name); + if (font && pango_font_description_get_size (font) == 0) + { + pango_font_description_free (font); + font = pango_font_description_from_string ("sans 11"); + } + if (!font) + font = pango_font_description_from_string ("sans 11"); + + return font; +} + +static void +backend_font_open (GtkXText *xtext, char *name) +{ + PangoLanguage *lang; + PangoContext *context; + PangoFontMetrics *metrics; + + xtext->font = &xtext->pango_font; + xtext->font->font = backend_font_open_real (name); + if (!xtext->font->font) + { + xtext->font = NULL; + return; + } + + backend_init (xtext); + pango_layout_set_font_description (xtext->layout, xtext->font->font); + xtext_pango_init (xtext); + + /* vte does it this way */ + context = gtk_widget_get_pango_context (GTK_WIDGET (xtext)); + lang = pango_context_get_language (context); + metrics = pango_context_get_metrics (context, xtext->font->font, lang); + xtext->font->ascent = pango_font_metrics_get_ascent (metrics) / PANGO_SCALE; + xtext->font->descent = pango_font_metrics_get_descent (metrics) / PANGO_SCALE; + + /* + * In later versions of pango, a font's height should be calculated like + * this to account for line gap; a typical symptom of not doing so is + * cutting off the underscore on some fonts. + */ +#if PANGO_VERSION_CHECK(1, 44, 0) + xtext->fontsize = pango_font_metrics_get_height (metrics) / PANGO_SCALE + 1; + + if (xtext->fontsize == 0) + xtext->fontsize = xtext->font->ascent + xtext->font->descent; +#else + xtext->fontsize = xtext->font->ascent + xtext->font->descent; +#endif + + pango_font_metrics_unref (metrics); +} + +static int +backend_get_text_width_emph (GtkXText *xtext, guchar *str, int len, int emphasis) +{ + int width; + int deltaw; + int mbl; + + if (*str == 0) + return 0; + + if ((emphasis & EMPH_HIDDEN)) + return 0; + emphasis &= (EMPH_ITAL | EMPH_BOLD); + + width = 0; + pango_layout_set_attributes (xtext->layout, attr_lists[emphasis]); + while (len > 0) + { + mbl = charlen(str); + if (*str < 128) + deltaw = fontwidths[emphasis][*str]; + else + { + pango_layout_set_text (xtext->layout, str, mbl); + pango_layout_get_pixel_size (xtext->layout, &deltaw, NULL); + } + width += deltaw; + str += mbl; + len -= mbl; + } + + return width; +} + +static int +backend_get_text_width_slp (GtkXText *xtext, guchar *str, GSList *slp) +{ + int width = 0; + + while (slp) + { + offlen_t *meta; + + meta = slp->data; + width += backend_get_text_width_emph (xtext, str, meta->len, meta->emph); + str += meta->len; + slp = g_slist_next (slp); + } + + return width; +} + +/* simplified version of gdk_draw_layout_line_with_colors() */ + +static void +xtext_draw_layout_line (GdkDrawable *drawable, + GdkGC *gc, + gint x, + gint y, + PangoLayoutLine *line) +{ + GSList *tmp_list = line->runs; + PangoRectangle logical_rect; + gint x_off = 0; + + while (tmp_list) + { + PangoLayoutRun *run = tmp_list->data; + + pango_glyph_string_extents (run->glyphs, run->item->analysis.font, + NULL, &logical_rect); + + gdk_draw_glyphs (drawable, gc, run->item->analysis.font, + x + x_off / PANGO_SCALE, y, run->glyphs); + + x_off += logical_rect.width; + tmp_list = tmp_list->next; + } +} + +static void +backend_draw_text_emph (GtkXText *xtext, int dofill, GdkGC *gc, int x, int y, + char *str, int len, int str_width, int emphasis) +{ + GdkGCValues val; + GdkColor col; + PangoLayoutLine *line; + + pango_layout_set_attributes (xtext->layout, attr_lists[emphasis]); + pango_layout_set_text (xtext->layout, str, len); + + if (dofill) + { + gdk_gc_get_values (gc, &val); + col.pixel = val.background.pixel; + gdk_gc_set_foreground (gc, &col); + gdk_draw_rectangle (xtext->draw_buf, gc, 1, x, y - + xtext->font->ascent, str_width, xtext->fontsize); + col.pixel = val.foreground.pixel; + gdk_gc_set_foreground (gc, &col); + } + + line = pango_layout_get_lines (xtext->layout)->data; + + xtext_draw_layout_line (xtext->draw_buf, gc, x, y, line); +} + +static void +xtext_set_fg (GtkXText *xtext, GdkGC *gc, int index) +{ + gdk_gc_set_foreground (gc, &xtext->palette[index]); +} + +static void +xtext_set_bg (GtkXText *xtext, GdkGC *gc, int index) +{ + gdk_gc_set_background (gc, &xtext->palette[index]); +} + +static void +gtk_xtext_init (GtkXText * xtext) +{ + xtext->pixmap = NULL; + xtext->io_tag = 0; + xtext->add_io_tag = 0; + xtext->scroll_tag = 0; + xtext->max_lines = 0; + xtext->col_back = XTEXT_BG; + xtext->col_fore = XTEXT_FG; + xtext->nc = 0; + xtext->pixel_offset = 0; + xtext->underline = FALSE; + xtext->strikethrough = FALSE; + xtext->hidden = FALSE; + xtext->font = NULL; + xtext->layout = NULL; + xtext->jump_out_offset = 0; + xtext->jump_in_offset = 0; + xtext->ts_x = 0; + xtext->ts_y = 0; + xtext->clip_x = 0; + xtext->clip_x2 = 1000000; + xtext->clip_y = 0; + xtext->clip_y2 = 1000000; + xtext->urlcheck_function = NULL; + xtext->color_paste = FALSE; + xtext->skip_border_fills = FALSE; + xtext->skip_stamp = FALSE; + xtext->render_hilights_only = FALSE; + xtext->un_hilight = FALSE; + xtext->recycle = FALSE; + xtext->dont_render = FALSE; + xtext->dont_render2 = FALSE; + gtk_xtext_scroll_adjustments (xtext, NULL, NULL); + + { + static const GtkTargetEntry targets[] = { + { "UTF8_STRING", 0, TARGET_UTF8_STRING }, + { "STRING", 0, TARGET_STRING }, + { "TEXT", 0, TARGET_TEXT }, + { "COMPOUND_TEXT", 0, TARGET_COMPOUND_TEXT } + }; + static const gint n_targets = sizeof (targets) / sizeof (targets[0]); + + gtk_selection_add_targets (GTK_WIDGET (xtext), GDK_SELECTION_PRIMARY, + targets, n_targets); + } +} + +static void +gtk_xtext_adjustment_set (xtext_buffer *buf, int fire_signal) +{ + GtkAdjustment *adj = buf->xtext->adj; + + if (buf->xtext->buffer == buf) + { + adj->lower = 0; + adj->upper = buf->num_lines; + + if (adj->upper == 0) + adj->upper = 1; + + adj->page_size = GTK_WIDGET (buf->xtext)->allocation.height / + buf->xtext->fontsize; + adj->page_increment = adj->page_size; + + if (adj->value > adj->upper - adj->page_size) + { + buf->scrollbar_down = TRUE; + adj->value = adj->upper - adj->page_size; + } + + if (adj->value < 0) + adj->value = 0; + + if (fire_signal) + gtk_adjustment_changed (adj); + } +} + +static gint +gtk_xtext_adjustment_timeout (GtkXText * xtext) +{ + gtk_xtext_render_page (xtext); + xtext->io_tag = 0; + return 0; +} + +static void +gtk_xtext_adjustment_changed (GtkAdjustment * adj, GtkXText * xtext) +{ + if (!gtk_widget_get_realized (GTK_WIDGET (xtext))) + return; + + if (xtext->buffer->old_value != xtext->adj->value) + { + if (xtext->adj->value >= xtext->adj->upper - xtext->adj->page_size) + xtext->buffer->scrollbar_down = TRUE; + else + xtext->buffer->scrollbar_down = FALSE; + + if (xtext->adj->value + 1 == xtext->buffer->old_value || + xtext->adj->value - 1 == xtext->buffer->old_value) /* clicked an arrow? */ + { + if (xtext->io_tag) + { + g_source_remove (xtext->io_tag); + xtext->io_tag = 0; + } + gtk_xtext_render_page (xtext); + } else + { + if (!xtext->io_tag) + xtext->io_tag = g_timeout_add (REFRESH_TIMEOUT, + (GSourceFunc) + gtk_xtext_adjustment_timeout, + xtext); + } + } + xtext->buffer->old_value = adj->value; +} + +GtkWidget * +gtk_xtext_new (GdkColor palette[], int separator) +{ + GtkXText *xtext; + + xtext = g_object_new (gtk_xtext_get_type (), NULL); + xtext->separator = separator; + xtext->wordwrap = TRUE; + xtext->buffer = gtk_xtext_buffer_new (xtext); + xtext->orig_buffer = xtext->buffer; + + gtk_widget_set_double_buffered (GTK_WIDGET (xtext), FALSE); + gtk_xtext_set_palette (xtext, palette); + + return GTK_WIDGET (xtext); +} + +static void +gtk_xtext_destroy (GtkObject * object) +{ + GtkXText *xtext = GTK_XTEXT (object); + + if (xtext->add_io_tag) + { + g_source_remove (xtext->add_io_tag); + xtext->add_io_tag = 0; + } + + if (xtext->scroll_tag) + { + g_source_remove (xtext->scroll_tag); + xtext->scroll_tag = 0; + } + + if (xtext->io_tag) + { + g_source_remove (xtext->io_tag); + xtext->io_tag = 0; + } + + if (xtext->pixmap) + { + g_object_unref (xtext->pixmap); + xtext->pixmap = NULL; + } + + if (xtext->font) + { + backend_font_close (xtext); + xtext->font = NULL; + } + + if (xtext->adj) + { + g_signal_handlers_disconnect_matched (G_OBJECT (xtext->adj), + G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, xtext); + /* gtk_signal_disconnect_by_data (G_OBJECT (xtext->adj), xtext);*/ + g_object_unref (G_OBJECT (xtext->adj)); + xtext->adj = NULL; + } + + if (xtext->bgc) + { + g_object_unref (xtext->bgc); + xtext->bgc = NULL; + } + + if (xtext->fgc) + { + g_object_unref (xtext->fgc); + xtext->fgc = NULL; + } + + if (xtext->light_gc) + { + g_object_unref (xtext->light_gc); + xtext->light_gc = NULL; + } + + if (xtext->dark_gc) + { + g_object_unref (xtext->dark_gc); + xtext->dark_gc = NULL; + } + + if (xtext->thin_gc) + { + g_object_unref (xtext->thin_gc); + xtext->thin_gc = NULL; + } + + if (xtext->marker_gc) + { + g_object_unref (xtext->marker_gc); + xtext->marker_gc = NULL; + } + + if (xtext->hand_cursor) + { + gdk_cursor_unref (xtext->hand_cursor); + xtext->hand_cursor = NULL; + } + + if (xtext->resize_cursor) + { + gdk_cursor_unref (xtext->resize_cursor); + xtext->resize_cursor = NULL; + } + + if (xtext->orig_buffer) + { + gtk_xtext_buffer_free (xtext->orig_buffer); + xtext->orig_buffer = NULL; + } + + if (GTK_OBJECT_CLASS (parent_class)->destroy) + (*GTK_OBJECT_CLASS (parent_class)->destroy) (object); +} + +static void +gtk_xtext_unrealize (GtkWidget * widget) +{ + backend_deinit (GTK_XTEXT (widget)); + + /* if there are still events in the queue, this'll avoid segfault */ + gdk_window_set_user_data (widget->window, NULL); + + if (parent_class->unrealize) + (* GTK_WIDGET_CLASS (parent_class)->unrealize) (widget); +} + +static void +gtk_xtext_realize (GtkWidget * widget) +{ + GtkXText *xtext; + GdkWindowAttr attributes; + GdkGCValues val; + GdkColor col; + GdkColormap *cmap; + + gtk_widget_set_realized (widget, TRUE); + xtext = GTK_XTEXT (widget); + + attributes.x = widget->allocation.x; + attributes.y = widget->allocation.y; + attributes.width = widget->allocation.width; + attributes.height = widget->allocation.height; + attributes.wclass = GDK_INPUT_OUTPUT; + attributes.window_type = GDK_WINDOW_CHILD; + attributes.event_mask = gtk_widget_get_events (widget) | + GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + | GDK_POINTER_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK; + + cmap = gtk_widget_get_colormap (widget); + attributes.colormap = cmap; + attributes.visual = gtk_widget_get_visual (widget); + + widget->window = gdk_window_new (widget->parent->window, &attributes, + GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | + GDK_WA_COLORMAP); + + gdk_window_set_user_data (widget->window, widget); + + xtext->depth = gdk_window_get_visual (widget->window)->depth; + + val.subwindow_mode = GDK_INCLUDE_INFERIORS; + val.graphics_exposures = 0; + + xtext->bgc = gdk_gc_new_with_values (widget->window, &val, + GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW); + xtext->fgc = gdk_gc_new_with_values (widget->window, &val, + GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW); + xtext->light_gc = gdk_gc_new_with_values (widget->window, &val, + GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW); + xtext->dark_gc = gdk_gc_new_with_values (widget->window, &val, + GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW); + xtext->thin_gc = gdk_gc_new_with_values (widget->window, &val, + GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW); + xtext->marker_gc = gdk_gc_new_with_values (widget->window, &val, + GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW); + + /* for the separator bar (light) */ + col.red = 0xffff; col.green = 0xffff; col.blue = 0xffff; + gdk_colormap_alloc_color (cmap, &col, FALSE, TRUE); + gdk_gc_set_foreground (xtext->light_gc, &col); + + /* for the separator bar (dark) */ + col.red = 0x1111; col.green = 0x1111; col.blue = 0x1111; + gdk_colormap_alloc_color (cmap, &col, FALSE, TRUE); + gdk_gc_set_foreground (xtext->dark_gc, &col); + + /* for the separator bar (thinline) */ + col.red = 0x8e38; col.green = 0x8e38; col.blue = 0x9f38; + gdk_colormap_alloc_color (cmap, &col, FALSE, TRUE); + gdk_gc_set_foreground (xtext->thin_gc, &col); + + /* for the marker bar (marker) */ + gdk_gc_set_foreground (xtext->marker_gc, &xtext->palette[XTEXT_MARKER]); + + xtext_set_fg (xtext, xtext->fgc, XTEXT_FG); + xtext_set_bg (xtext, xtext->fgc, XTEXT_BG); + xtext_set_fg (xtext, xtext->bgc, XTEXT_BG); + + /* draw directly to window */ + xtext->draw_buf = widget->window; + + if (xtext->pixmap) + { + gdk_gc_set_tile (xtext->bgc, xtext->pixmap); + gdk_gc_set_ts_origin (xtext->bgc, 0, 0); + xtext->ts_x = xtext->ts_y = 0; + gdk_gc_set_fill (xtext->bgc, GDK_TILED); + } + + xtext->hand_cursor = gdk_cursor_new_for_display (gdk_window_get_display (widget->window), GDK_HAND1); + xtext->resize_cursor = gdk_cursor_new_for_display (gdk_window_get_display (widget->window), GDK_LEFT_SIDE); + + gdk_window_set_back_pixmap (widget->window, NULL, FALSE); + widget->style = gtk_style_attach (widget->style, widget->window); + + backend_init (xtext); +} + +static void +gtk_xtext_size_request (GtkWidget * widget, GtkRequisition * requisition) +{ + requisition->width = 200; + requisition->height = 90; +} + +static void +gtk_xtext_size_allocate (GtkWidget * widget, GtkAllocation * allocation) +{ + GtkXText *xtext = GTK_XTEXT (widget); + int height_only = FALSE; + + if (allocation->width == xtext->buffer->window_width) + height_only = TRUE; + + widget->allocation = *allocation; + if (gtk_widget_get_realized (GTK_WIDGET(widget))) + { + xtext->buffer->window_width = allocation->width; + xtext->buffer->window_height = allocation->height; + + gdk_window_move_resize (widget->window, allocation->x, allocation->y, + allocation->width, allocation->height); + dontscroll (xtext->buffer); /* force scrolling off */ + if (!height_only) + gtk_xtext_calc_lines (xtext->buffer, FALSE); + else + { + xtext->buffer->pagetop_ent = NULL; + gtk_xtext_adjustment_set (xtext->buffer, FALSE); + } + if (xtext->buffer->scrollbar_down) + gtk_adjustment_set_value (xtext->adj, xtext->adj->upper - + xtext->adj->page_size); + } +} + +static int +gtk_xtext_selection_clear (xtext_buffer *buf) +{ + textentry *ent; + int ret = 0; + + ent = buf->last_ent_start; + while (ent) + { + if (ent->mark_start != -1) + ret = 1; + ent->mark_start = -1; + ent->mark_end = -1; + if (ent == buf->last_ent_end) + break; + ent = ent->next; + } + + return ret; +} + +static int +find_x (GtkXText *xtext, textentry *ent, int x, int subline, int indent) +{ + int xx = indent; + int suboff; + GSList *list; + GSList *hid = NULL; + offlen_t *meta; + int off, len, wid, mbl, mbw; + + /* Skip to the first chunk of stuff for the subline */ + if (subline > 0) + { + suboff = GPOINTER_TO_INT (g_slist_nth_data (ent->sublines, subline - 1)); + for (list = ent->slp; list; list = g_slist_next (list)) + { + meta = list->data; + if (meta->off + meta->len > suboff) + break; + } + } + else + { + suboff = 0; + list = ent->slp; + } + /* Step to the first character of the subline */ + if (list == NULL) + return 0; + meta = list->data; + off = meta->off; + len = meta->len; + if (meta->emph & EMPH_HIDDEN) + hid = list; + while (len > 0) + { + if (off >= suboff) + break; + mbl = charlen (ent->str + off); + len -= mbl; + off += mbl; + } + if (len < 0) + return ent->str_len; /* Bad char -- return max offset. */ + + /* Step through characters to find the one at the x position */ + wid = x - indent; + len = meta->len - (off - meta->off); + while (wid > 0) + { + mbl = charlen (ent->str + off); + mbw = backend_get_text_width_emph (xtext, ent->str + off, mbl, meta->emph); + wid -= mbw; + xx += mbw; + if (xx >= x) + return off; + len -= mbl; + off += mbl; + if (len <= 0) + { + if (meta->emph & EMPH_HIDDEN) + hid = list; + list = g_slist_next (list); + if (list == NULL) + return ent->str_len; + meta = list->data; + off = meta->off; + len = meta->len; + } + } + + /* If previous chunk exists and is marked hidden, regard it as unhidden */ + if (hid && list && hid->next == list) + { + meta = hid->data; + off = meta->off; + } + + /* Return offset of character at x within subline */ + return off; +} + +static int +gtk_xtext_find_x (GtkXText * xtext, int x, textentry * ent, int subline, + int line, int *out_of_bounds) +{ + int indent; + unsigned char *str; + + if (subline < 1) + indent = ent->indent; + else + indent = xtext->buffer->indent; + + if (line > xtext->adj->page_size || line < 0) + { + *out_of_bounds = TRUE; + return 0; + } + + str = ent->str + gtk_xtext_find_subline (xtext, ent, subline); + if (str >= ent->str + ent->str_len) + return 0; + + /* Let user select left a few pixels to grab hidden text e.g. '<' */ + if (x < indent - xtext->space_width) + { + *out_of_bounds = 1; + return (str - ent->str); + } + + *out_of_bounds = 0; + + return find_x (xtext, ent, x, subline, indent); +} + +static textentry * +gtk_xtext_find_char (GtkXText * xtext, int x, int y, int *off, int *out_of_bounds) +{ + textentry *ent; + int line; + int subline; + int outofbounds = FALSE; + + /* Adjust y value for negative rounding, double to int */ + if (y < 0) + y -= xtext->fontsize; + + line = (y + xtext->pixel_offset) / xtext->fontsize; + ent = gtk_xtext_nth (xtext, line + (int)xtext->adj->value, &subline); + if (!ent) + return NULL; + + if (off) + *off = gtk_xtext_find_x (xtext, x, ent, subline, line, &outofbounds); + if (out_of_bounds) + *out_of_bounds = outofbounds; + + return ent; +} + +static void +gtk_xtext_draw_sep (GtkXText * xtext, int y) +{ + int x, height; + GdkGC *light, *dark; + + if (y == -1) + { + y = 0; + height = GTK_WIDGET (xtext)->allocation.height; + } else + { + height = xtext->fontsize; + } + + /* draw the separator line */ + if (xtext->separator && xtext->buffer->indent) + { + light = xtext->light_gc; + dark = xtext->dark_gc; + + x = xtext->buffer->indent - ((xtext->space_width + 1) / 2); + if (x < 1) + return; + + if (xtext->thinline) + { + if (xtext->moving_separator) + gdk_draw_line (xtext->draw_buf, light, x, y, x, y + height); + else + gdk_draw_line (xtext->draw_buf, xtext->thin_gc, x, y, x, y + height); + } else + { + if (xtext->moving_separator) + { + gdk_draw_line (xtext->draw_buf, light, x - 1, y, x - 1, y + height); + gdk_draw_line (xtext->draw_buf, dark, x, y, x, y + height); + } else + { + gdk_draw_line (xtext->draw_buf, dark, x - 1, y, x - 1, y + height); + gdk_draw_line (xtext->draw_buf, light, x, y, x, y + height); + } + } + } +} + +static void +gtk_xtext_draw_marker (GtkXText * xtext, textentry * ent, int y) +{ + int x, width, render_y; + + if (!xtext->marker) return; + + if (xtext->buffer->marker_pos == ent) + { + render_y = y + xtext->font->descent; + } + else if (xtext->buffer->marker_pos == ent->next && ent->next != NULL) + { + render_y = y + xtext->font->descent + xtext->fontsize * g_slist_length (ent->sublines); + } + else return; + + x = 0; + width = GTK_WIDGET (xtext)->allocation.width; + + gdk_draw_line (xtext->draw_buf, xtext->marker_gc, x, render_y, x + width, render_y); + + if (gtk_window_has_toplevel_focus (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (xtext))))) + { + xtext->buffer->marker_seen = TRUE; + } +} + +static void +gtk_xtext_paint (GtkWidget *widget, GdkRectangle *area) +{ + GtkXText *xtext = GTK_XTEXT (widget); + textentry *ent_start, *ent_end; + int x, y; + + if (area->x == 0 && area->y == 0 && + area->height == widget->allocation.height && + area->width == widget->allocation.width) + { + dontscroll (xtext->buffer); /* force scrolling off */ + gtk_xtext_render_page (xtext); + return; + } + + ent_start = gtk_xtext_find_char (xtext, area->x, area->y, NULL, NULL); + if (!ent_start) + { + xtext_draw_bg (xtext, area->x, area->y, area->width, area->height); + goto xit; + } + ent_end = gtk_xtext_find_char (xtext, area->x + area->width, + area->y + area->height, NULL, NULL); + if (!ent_end) + ent_end = xtext->buffer->text_last; + + /* can't set a clip here, because fgc/bgc are used to draw the DB too */ +/* backend_set_clip (xtext, area);*/ + xtext->clip_x = area->x; + xtext->clip_x2 = area->x + area->width; + xtext->clip_y = area->y; + xtext->clip_y2 = area->y + area->height; + + /* y is the last pixel y location it rendered text at */ + y = gtk_xtext_render_ents (xtext, ent_start, ent_end); + + if (y && y < widget->allocation.height && !ent_end->next) + { + GdkRectangle rect; + + rect.x = 0; + rect.y = y; + rect.width = widget->allocation.width; + rect.height = widget->allocation.height - y; + + /* fill any space below the last line that also intersects with + the exposure rectangle */ + if (gdk_rectangle_intersect (area, &rect, &rect)) + { + xtext_draw_bg (xtext, rect.x, rect.y, rect.width, rect.height); + } + } + + /*backend_clear_clip (xtext);*/ + xtext->clip_x = 0; + xtext->clip_x2 = 1000000; + xtext->clip_y = 0; + xtext->clip_y2 = 1000000; + +xit: + x = xtext->buffer->indent - ((xtext->space_width + 1) / 2); + if (area->x <= x) + gtk_xtext_draw_sep (xtext, -1); +} + +static gboolean +gtk_xtext_expose (GtkWidget * widget, GdkEventExpose * event) +{ + gtk_xtext_paint (widget, &event->area); + return FALSE; +} + +/* render a selection that has extended or contracted upward */ + +static void +gtk_xtext_selection_up (GtkXText *xtext, textentry *start, textentry *end, + int start_offset) +{ + /* render all the complete lines */ + if (start->next == end) + gtk_xtext_render_ents (xtext, end, NULL); + else + gtk_xtext_render_ents (xtext, start->next, end); + + /* now the incomplete upper line */ + if (start == xtext->buffer->last_ent_start) + xtext->jump_in_offset = xtext->buffer->last_offset_start; + else + xtext->jump_in_offset = start_offset; + gtk_xtext_render_ents (xtext, start, NULL); + xtext->jump_in_offset = 0; +} + +/* render a selection that has extended or contracted downward */ + +static void +gtk_xtext_selection_down (GtkXText *xtext, textentry *start, textentry *end, + int end_offset) +{ + /* render all the complete lines */ + if (end->prev == start) + gtk_xtext_render_ents (xtext, start, NULL); + else + gtk_xtext_render_ents (xtext, start, end->prev); + + /* now the incomplete bottom line */ + if (end == xtext->buffer->last_ent_end) + xtext->jump_out_offset = xtext->buffer->last_offset_end; + else + xtext->jump_out_offset = end_offset; + gtk_xtext_render_ents (xtext, end, NULL); + xtext->jump_out_offset = 0; +} + +static void +gtk_xtext_selection_render (GtkXText *xtext, textentry *start_ent, textentry *end_ent) +{ + textentry *ent; + int start_offset = start_ent->mark_start; + int end_offset = end_ent->mark_end; + int start, end; + + xtext->skip_border_fills = TRUE; + xtext->skip_stamp = TRUE; + + /* force an optimized render if there was no previous selection */ + if (xtext->buffer->last_ent_start == NULL && start_ent == end_ent) + { + xtext->buffer->last_offset_start = start_offset; + xtext->buffer->last_offset_end = end_offset; + goto lamejump; + } + + /* mark changed within 1 ent only? */ + if (xtext->buffer->last_ent_start == start_ent && + xtext->buffer->last_ent_end == end_ent) + { + /* when only 1 end of the selection is changed, we can really + save on rendering */ + if (xtext->buffer->last_offset_start == start_offset || + xtext->buffer->last_offset_end == end_offset) + { +lamejump: + ent = end_ent; + /* figure out where to start and end the rendering */ + if (end_offset > xtext->buffer->last_offset_end) + { + end = end_offset; + start = xtext->buffer->last_offset_end; + } else if (end_offset < xtext->buffer->last_offset_end) + { + end = xtext->buffer->last_offset_end; + start = end_offset; + } else if (start_offset < xtext->buffer->last_offset_start) + { + end = xtext->buffer->last_offset_start; + start = start_offset; + ent = start_ent; + } else if (start_offset > xtext->buffer->last_offset_start) + { + end = start_offset; + start = xtext->buffer->last_offset_start; + ent = start_ent; + } else + { /* WORD selects end up here */ + end = end_offset; + start = start_offset; + } + } else + { + /* LINE selects end up here */ + /* so which ent actually changed? */ + ent = start_ent; + if (xtext->buffer->last_offset_start == start_offset) + ent = end_ent; + + end = MAX (xtext->buffer->last_offset_end, end_offset); + start = MIN (xtext->buffer->last_offset_start, start_offset); + } + + xtext->jump_out_offset = end; + xtext->jump_in_offset = start; + gtk_xtext_render_ents (xtext, ent, NULL); + xtext->jump_out_offset = 0; + xtext->jump_in_offset = 0; + } + /* marking downward? */ + else if (xtext->buffer->last_ent_start == start_ent && + xtext->buffer->last_offset_start == start_offset) + { + /* find the range that covers both old and new selection */ + ent = start_ent; + while (ent) + { + if (ent == xtext->buffer->last_ent_end) + { + gtk_xtext_selection_down (xtext, ent, end_ent, end_offset); + /*gtk_xtext_render_ents (xtext, ent, end_ent);*/ + break; + } + if (ent == end_ent) + { + gtk_xtext_selection_down (xtext, ent, xtext->buffer->last_ent_end, end_offset); + /*gtk_xtext_render_ents (xtext, ent, xtext->buffer->last_ent_end);*/ + break; + } + ent = ent->next; + } + } + /* marking upward? */ + else if (xtext->buffer->last_ent_start != NULL && + xtext->buffer->last_ent_end == end_ent && + xtext->buffer->last_offset_end == end_offset) + { + ent = end_ent; + while (ent) + { + if (ent == start_ent && xtext->buffer->last_ent_start) + { + gtk_xtext_selection_up (xtext, xtext->buffer->last_ent_start, ent, start_offset); + /*gtk_xtext_render_ents (xtext, xtext->buffer->last_ent_start, ent);*/ + break; + } + if (ent == xtext->buffer->last_ent_start) + { + gtk_xtext_selection_up (xtext, start_ent, ent, start_offset); + /*gtk_xtext_render_ents (xtext, start_ent, ent);*/ + break; + } + ent = ent->prev; + } + } + else /* cross-over mark (stretched or shrunk at both ends) */ + { + /* unrender the old mark */ + gtk_xtext_render_ents (xtext, xtext->buffer->last_ent_start, xtext->buffer->last_ent_end); + /* now render the new mark, but skip overlaps */ + if (start_ent == xtext->buffer->last_ent_start) + { + /* if the new mark is a sub-set of the old, do nothing */ + if (start_ent != end_ent) + gtk_xtext_render_ents (xtext, start_ent->next, end_ent); + } else if (end_ent == xtext->buffer->last_ent_end) + { + /* if the new mark is a sub-set of the old, do nothing */ + if (start_ent != end_ent) + gtk_xtext_render_ents (xtext, start_ent, end_ent->prev); + } else + gtk_xtext_render_ents (xtext, start_ent, end_ent); + } + + xtext->buffer->last_ent_start = start_ent; + xtext->buffer->last_ent_end = end_ent; + xtext->buffer->last_offset_start = start_offset; + xtext->buffer->last_offset_end = end_offset; + + xtext->skip_border_fills = FALSE; + xtext->skip_stamp = FALSE; +} + +static void +gtk_xtext_selection_draw (GtkXText * xtext, GdkEventMotion * event, gboolean render) +{ + textentry *ent; + textentry *ent_end; + textentry *ent_start; + int offset_start = 0; + int offset_end = 0; + textentry *low_ent, *high_ent; + int low_x, low_y, low_offs; + int high_x, high_y, high_offs, high_len; + + if (xtext->buffer->text_first == NULL) + return; + + ent_start = gtk_xtext_find_char (xtext, xtext->select_start_x, xtext->select_start_y, &offset_start, NULL); + ent_end = gtk_xtext_find_char (xtext, xtext->select_end_x, xtext->select_end_y, &offset_end, NULL); + if (ent_start == NULL && ent_end == NULL) + return; + + if ((ent_start != ent_end && xtext->select_start_y > xtext->select_end_y) || /* different entries */ + (ent_start == ent_end && offset_start > offset_end)) /* same entry, different character offsets */ + { + /* marking up */ + low_ent = ent_end; + low_x = xtext->select_end_x; + low_y = xtext->select_end_y; + low_offs = offset_end; + high_ent = ent_start; + high_x = xtext->select_start_x; + high_y = xtext->select_start_y; + high_offs = offset_start; + } + else + { + /* marking down */ + low_ent = ent_start; + low_x = xtext->select_start_x; + low_y = xtext->select_start_y; + low_offs = offset_start; + high_ent = ent_end; + high_x = xtext->select_end_x; + high_y = xtext->select_end_y; + high_offs = offset_end; + } + if (low_ent == NULL) + { + low_ent = xtext->buffer->text_first; + low_offs = 0; + } + if (high_ent == NULL) + { + high_ent = xtext->buffer->text_last; + high_offs = high_ent->str_len; + } + + /* word selection */ + if (xtext->word_select) + { + /* a word selection cannot be started if the cursor is out of bounds in gtk_xtext_button_press */ + gtk_xtext_get_word (xtext, low_x, low_y, NULL, &low_offs, NULL, NULL); + + /* in case the cursor is out of bounds we keep offset_end from gtk_xtext_find_char and fix the length */ + if (gtk_xtext_get_word (xtext, high_x, high_y, NULL, &high_offs, &high_len, NULL) == NULL) + high_len = high_offs == high_ent->str_len? 0: -1; /* -1 for the space, 0 if at the end */ + high_offs += high_len; + if (low_y < 0) + low_offs = xtext->buffer->last_offset_start; + if (high_y > xtext->buffer->window_height) + high_offs = xtext->buffer->last_offset_end; + } + /* line/ent selection */ + else if (xtext->line_select) + { + low_offs = 0; + high_offs = high_ent->str_len; + } + /* character selection */ + else + { + if (low_y < 0) + low_offs = xtext->buffer->last_offset_start; + if (high_y > xtext->buffer->window_height) + high_offs = xtext->buffer->last_offset_end; + } + + /* set all the old mark_ fields to -1 */ + gtk_xtext_selection_clear (xtext->buffer); + + low_ent->mark_start = low_offs; + low_ent->mark_end = high_offs; + + if (low_ent != high_ent) + { + low_ent->mark_end = low_ent->str_len; + if (high_offs != 0) + { + high_ent->mark_start = 0; + high_ent->mark_end = high_offs; + } + + /* set all the mark_ fields of the ents within the selection */ + ent = low_ent->next; + while (ent && ent != high_ent) + { + ent->mark_start = 0; + ent->mark_end = ent->str_len; + ent = ent->next; + } + } + + if (render) + gtk_xtext_selection_render (xtext, low_ent, high_ent); +} + +static int +gtk_xtext_timeout_ms (GtkXText *xtext, int pixes) +{ + int apixes = abs(pixes); + + if (apixes < 6) return 100; + if (apixes < 12) return 50; + if (apixes < 20) return 20; + return 10; +} +static gint +gtk_xtext_scrolldown_timeout (GtkXText * xtext) +{ + int p_y, win_height; + xtext_buffer *buf = xtext->buffer; + GtkAdjustment *adj = xtext->adj; + + gdk_window_get_pointer (GTK_WIDGET (xtext)->window, 0, &p_y, 0); + win_height = gdk_window_get_height (gtk_widget_get_window (GTK_WIDGET (xtext))); + + if (buf->last_ent_end == NULL || /* If context has changed OR */ + buf->pagetop_ent == NULL || /* pagetop_ent is reset OR */ + p_y <= win_height || /* pointer not below bottom margin OR */ + adj->value >= adj->upper - adj->page_size) /* we're scrolled to bottom */ + { + xtext->scroll_tag = 0; + return 0; + } + + xtext->select_start_y -= xtext->fontsize; + xtext->select_start_adj++; + adj->value++; + gtk_adjustment_value_changed (adj); + gtk_xtext_selection_draw (xtext, NULL, TRUE); + gtk_xtext_render_ents (xtext, buf->pagetop_ent->next, buf->last_ent_end); + xtext->scroll_tag = g_timeout_add (gtk_xtext_timeout_ms (xtext, p_y - win_height), + (GSourceFunc) + gtk_xtext_scrolldown_timeout, + xtext); + + return 0; +} + +static gint +gtk_xtext_scrollup_timeout (GtkXText * xtext) +{ + int p_y; + xtext_buffer *buf = xtext->buffer; + GtkAdjustment *adj = xtext->adj; + int delta_y; + + gdk_window_get_pointer (GTK_WIDGET (xtext)->window, 0, &p_y, 0); + + if (buf->last_ent_start == NULL || /* If context has changed OR */ + buf->pagetop_ent == NULL || /* pagetop_ent is reset OR */ + p_y >= 0 || /* not above top margin OR */ + adj->value == 0) /* we're scrolled to the top */ + { + xtext->scroll_tag = 0; + return 0; + } + + if (adj->value < 0) + { + delta_y = adj->value * xtext->fontsize; + adj->value = 0; + } else { + delta_y = xtext->fontsize; + adj->value--; + } + xtext->select_start_y += delta_y; + xtext->select_start_adj = adj->value; + gtk_adjustment_value_changed (adj); + gtk_xtext_selection_draw (xtext, NULL, TRUE); + gtk_xtext_render_ents (xtext, buf->pagetop_ent->prev, buf->last_ent_end); + xtext->scroll_tag = g_timeout_add (gtk_xtext_timeout_ms (xtext, p_y), + (GSourceFunc) + gtk_xtext_scrollup_timeout, + xtext); + + return 0; +} + +static void +gtk_xtext_selection_update (GtkXText * xtext, GdkEventMotion * event, int p_y, gboolean render) +{ + int win_height; + int moved; + + if (xtext->scroll_tag) + { + return; + } + + win_height = gdk_window_get_height (gtk_widget_get_window (GTK_WIDGET (xtext))); + + /* selecting past top of window, scroll up! */ + if (p_y < 0 && xtext->adj->value >= 0) + { + gtk_xtext_scrollup_timeout (xtext); + } + + /* selecting past bottom of window, scroll down! */ + else if (p_y > win_height && + xtext->adj->value < (xtext->adj->upper - xtext->adj->page_size)) + { + gtk_xtext_scrolldown_timeout (xtext); + } + else + { + moved = (int)xtext->adj->value - xtext->select_start_adj; + xtext->select_start_y -= (moved * xtext->fontsize); + xtext->select_start_adj = xtext->adj->value; + gtk_xtext_selection_draw (xtext, event, render); + } +} + +static char * +gtk_xtext_get_word (GtkXText * xtext, int x, int y, textentry ** ret_ent, + int *ret_off, int *ret_len, GSList **slp) +{ + textentry *ent; + int offset; + unsigned char *word; + unsigned char *last, *end; + int len; + int out_of_bounds = 0; + int len_to_offset = 0; + + ent = gtk_xtext_find_char (xtext, x, y, &offset, &out_of_bounds); + if (ent == NULL || out_of_bounds || offset < 0 || offset >= ent->str_len) + return NULL; + + word = ent->str + offset; + while ((word = g_utf8_find_prev_char (ent->str, word))) + { + if (is_del (*word)) + { + word++; + len_to_offset--; + break; + } + len_to_offset += charlen (word); + } + if (!word) + word = ent->str; + + /* remove color characters from the length */ + gtk_xtext_strip_color (word, len_to_offset, xtext->scratch_buffer, &len_to_offset, NULL, FALSE); + + last = word; + end = ent->str + ent->str_len; + len = 0; + do + { + if (is_del (*last)) + break; + len += charlen (last); + last = g_utf8_find_next_char (last, end); + } + while (last); + + if (len > 0 && word[len-1]=='.') + len--; + + if (ret_ent) + *ret_ent = ent; + if (ret_off) + *ret_off = word - ent->str; + if (ret_len) + *ret_len = len; /* Length before stripping */ + + word = gtk_xtext_strip_color (word, len, xtext->scratch_buffer, NULL, slp, FALSE); + + /* avoid turning the cursor into a hand for non-url part of the word */ + if (xtext->urlcheck_function && xtext->urlcheck_function (GTK_WIDGET (xtext), word)) + { + int start, end; + url_last (&start, &end); + + /* make sure we're not before the start of the match */ + if (len_to_offset < start) + return NULL; + + /* and not after it */ + if (len_to_offset - start >= end - start) + return NULL; + } + + return word; +} + +static void +gtk_xtext_unrender_hilight (GtkXText *xtext) +{ + xtext->render_hilights_only = TRUE; + xtext->skip_border_fills = TRUE; + xtext->skip_stamp = TRUE; + xtext->un_hilight = TRUE; + + gtk_xtext_render_ents (xtext, xtext->hilight_ent, NULL); + + xtext->render_hilights_only = FALSE; + xtext->skip_border_fills = FALSE; + xtext->skip_stamp = FALSE; + xtext->un_hilight = FALSE; +} + +static gboolean +gtk_xtext_leave_notify (GtkWidget * widget, GdkEventCrossing * event) +{ + GtkXText *xtext = GTK_XTEXT (widget); + + if (xtext->cursor_hand) + { + gtk_xtext_unrender_hilight (xtext); + xtext->hilight_start = -1; + xtext->hilight_end = -1; + xtext->cursor_hand = FALSE; + gdk_window_set_cursor (widget->window, 0); + xtext->hilight_ent = NULL; + } + + if (xtext->cursor_resize) + { + gtk_xtext_unrender_hilight (xtext); + xtext->hilight_start = -1; + xtext->hilight_end = -1; + xtext->cursor_resize = FALSE; + gdk_window_set_cursor (widget->window, 0); + xtext->hilight_ent = NULL; + } + + return FALSE; +} + +/* check if we should mark time stamps, and if a redraw is needed */ + +static gboolean +gtk_xtext_check_mark_stamp (GtkXText *xtext, GdkModifierType mask) +{ + gboolean redraw = FALSE; + + if ((mask & STATE_SHIFT || prefs.hex_text_autocopy_stamp) + && (!prefs.hex_stamp_text || prefs.hex_text_indent)) + { + if (!xtext->mark_stamp) + { + redraw = TRUE; /* must redraw all */ + xtext->mark_stamp = TRUE; + } + } else + { + if (xtext->mark_stamp) + { + redraw = TRUE; /* must redraw all */ + xtext->mark_stamp = FALSE; + } + } + return redraw; +} + +static int +gtk_xtext_get_word_adjust (GtkXText *xtext, int x, int y, textentry **word_ent, int *offset, int *len) +{ + GSList *slp = NULL; + unsigned char *word; + int word_type = 0; + + word = gtk_xtext_get_word (xtext, x, y, word_ent, offset, len, &slp); + if (word) + { + int laststart, lastend; + + word_type = xtext->urlcheck_function (GTK_WIDGET (xtext), word); + if (word_type > 0) + { + if (url_last (&laststart, &lastend)) + { + int cumlen, startadj = 0, endadj = 0; + offlen_t *meta; + GSList *sl; + + for (sl = slp, cumlen = 0; sl; sl = g_slist_next (sl)) + { + meta = sl->data; + startadj = meta->off - cumlen; + cumlen += meta->len; + if (laststart < cumlen) + break; + } + for (sl = slp, cumlen = 0; sl; sl = g_slist_next (sl)) + { + meta = sl->data; + endadj = meta->off - cumlen; + cumlen += meta->len; + if (lastend < cumlen) + break; + } + laststart += startadj; + *offset += laststart; + *len = lastend + endadj - laststart; + } + } + } + g_slist_free_full (slp, g_free); + + return word_type; +} + +static gboolean +gtk_xtext_motion_notify (GtkWidget * widget, GdkEventMotion * event) +{ + GtkXText *xtext = GTK_XTEXT (widget); + GdkModifierType mask; + int redraw, tmp, x, y, offset, len, line_x; + textentry *word_ent; + int word_type; + + gdk_window_get_pointer (widget->window, &x, &y, &mask); + + if (xtext->moving_separator) + { + if (x < (3 * widget->allocation.width) / 5 && x > 15) + { + tmp = xtext->buffer->indent; + xtext->buffer->indent = x; + gtk_xtext_fix_indent (xtext->buffer); + if (tmp != xtext->buffer->indent) + { + gtk_xtext_recalc_widths (xtext->buffer, FALSE); + if (xtext->buffer->scrollbar_down) + gtk_adjustment_set_value (xtext->adj, xtext->adj->upper - + xtext->adj->page_size); + if (!xtext->io_tag) + xtext->io_tag = g_timeout_add (REFRESH_TIMEOUT, + (GSourceFunc) + gtk_xtext_adjustment_timeout, + xtext); + } + } + return FALSE; + } + + if (xtext->button_down) + { + redraw = gtk_xtext_check_mark_stamp (xtext, mask); + gtk_grab_add (widget); + /*gdk_pointer_grab (widget->window, TRUE, + GDK_BUTTON_RELEASE_MASK | + GDK_BUTTON_MOTION_MASK, NULL, NULL, 0);*/ + xtext->select_end_x = x; + xtext->select_end_y = y; + gtk_xtext_selection_update (xtext, event, y, !redraw); + + /* user has pressed or released SHIFT, must redraw entire selection */ + if (redraw) + { + xtext->force_stamp = TRUE; + gtk_xtext_render_ents (xtext, xtext->buffer->last_ent_start, + xtext->buffer->last_ent_end); + xtext->force_stamp = FALSE; + } + return FALSE; + } + + if (xtext->separator && xtext->buffer->indent) + { + line_x = xtext->buffer->indent - ((xtext->space_width + 1) / 2); + if (line_x == x || line_x == x + 1 || line_x == x - 1) + { + if (!xtext->cursor_resize) + { + gdk_window_set_cursor (GTK_WIDGET (xtext)->window, + xtext->resize_cursor); + xtext->cursor_hand = FALSE; + xtext->cursor_resize = TRUE; + } + return FALSE; + } + } + + if (xtext->urlcheck_function == NULL) + return FALSE; + + word_type = gtk_xtext_get_word_adjust (xtext, x, y, &word_ent, &offset, &len); + if (word_type > 0) + { + if (!xtext->cursor_hand || + xtext->hilight_ent != word_ent || + xtext->hilight_start != offset || + xtext->hilight_end != offset + len) + { + if (!xtext->cursor_hand) + { + gdk_window_set_cursor (GTK_WIDGET (xtext)->window, + xtext->hand_cursor); + xtext->cursor_hand = TRUE; + xtext->cursor_resize = FALSE; + } + + /* un-render the old hilight */ + if (xtext->hilight_ent) + gtk_xtext_unrender_hilight (xtext); + + xtext->hilight_ent = word_ent; + xtext->hilight_start = offset; + xtext->hilight_end = offset + len; + + xtext->skip_border_fills = TRUE; + xtext->render_hilights_only = TRUE; + xtext->skip_stamp = TRUE; + + gtk_xtext_render_ents (xtext, word_ent, NULL); + + xtext->skip_border_fills = FALSE; + xtext->render_hilights_only = FALSE; + xtext->skip_stamp = FALSE; + } + return FALSE; + } + + gtk_xtext_leave_notify (widget, NULL); + + return FALSE; +} + +static void +gtk_xtext_set_clip_owner (GtkWidget * xtext, GdkEventButton * event) +{ + char *str; + int len; + + if (GTK_XTEXT (xtext)->selection_buffer && + GTK_XTEXT (xtext)->selection_buffer != GTK_XTEXT (xtext)->buffer) + gtk_xtext_selection_clear (GTK_XTEXT (xtext)->selection_buffer); + + GTK_XTEXT (xtext)->selection_buffer = GTK_XTEXT (xtext)->buffer; + + str = gtk_xtext_selection_get_text (GTK_XTEXT (xtext), &len); + if (str) + { + if (str[0]) + { + gtk_clipboard_set_text (gtk_widget_get_clipboard (xtext, GDK_SELECTION_CLIPBOARD), str, len); + + gtk_selection_owner_set (xtext, GDK_SELECTION_PRIMARY, event ? event->time : GDK_CURRENT_TIME); + gtk_selection_owner_set (xtext, GDK_SELECTION_SECONDARY, event ? event->time : GDK_CURRENT_TIME); + } + + g_free (str); + } +} + +void +gtk_xtext_copy_selection (GtkXText *xtext) +{ + gtk_xtext_set_clip_owner (GTK_WIDGET (xtext), NULL); +} + +static void +gtk_xtext_unselect (GtkXText *xtext) +{ + xtext_buffer *buf = xtext->buffer; + + xtext->skip_border_fills = TRUE; + xtext->skip_stamp = TRUE; + + xtext->jump_in_offset = buf->last_ent_start->mark_start; + /* just a single ent was marked? */ + if (buf->last_ent_start == buf->last_ent_end) + { + xtext->jump_out_offset = buf->last_ent_start->mark_end; + buf->last_ent_end = NULL; + } + + gtk_xtext_selection_clear (xtext->buffer); + + /* FIXME: use jump_out on multi-line selects too! */ + xtext->jump_in_offset = 0; + xtext->jump_out_offset = 0; + gtk_xtext_render_ents (xtext, buf->last_ent_start, buf->last_ent_end); + + xtext->skip_border_fills = FALSE; + xtext->skip_stamp = FALSE; + + xtext->buffer->last_ent_start = NULL; + xtext->buffer->last_ent_end = NULL; +} + +static gboolean +gtk_xtext_button_release (GtkWidget * widget, GdkEventButton * event) +{ + GtkXText *xtext = GTK_XTEXT (widget); + unsigned char *word; + int old; + + if (xtext->moving_separator) + { + xtext->moving_separator = FALSE; + old = xtext->buffer->indent; + if (event->x < (4 * widget->allocation.width) / 5 && event->x > 15) + xtext->buffer->indent = event->x; + gtk_xtext_fix_indent (xtext->buffer); + if (xtext->buffer->indent != old) + { + gtk_xtext_recalc_widths (xtext->buffer, FALSE); + gtk_xtext_adjustment_set (xtext->buffer, TRUE); + gtk_xtext_render_page (xtext); + } else + gtk_xtext_draw_sep (xtext, -1); + return FALSE; + } + + if (event->button == 1) + { + xtext->button_down = FALSE; + if (xtext->scroll_tag) + { + g_source_remove (xtext->scroll_tag); + xtext->scroll_tag = 0; + } + + gtk_grab_remove (widget); + /*gdk_pointer_ungrab (0);*/ + + /* got a new selection? */ + if (xtext->buffer->last_ent_start) + { + xtext->color_paste = FALSE; + if (event->state & STATE_CTRL || prefs.hex_text_autocopy_color) + xtext->color_paste = TRUE; + if (prefs.hex_text_autocopy_text) + { + gtk_xtext_set_clip_owner (GTK_WIDGET (xtext), event); + } + } + + if (xtext->word_select || xtext->line_select) + { + xtext->word_select = FALSE; + xtext->line_select = FALSE; + return FALSE; + } + + if (xtext->select_start_x == event->x && + xtext->select_start_y == event->y && + xtext->buffer->last_ent_start) + { + gtk_xtext_unselect (xtext); + xtext->mark_stamp = FALSE; + return FALSE; + } + + if (!gtk_xtext_is_selecting (xtext)) + { + word = gtk_xtext_get_word (xtext, event->x, event->y, 0, 0, 0, 0); + g_signal_emit (G_OBJECT (xtext), xtext_signals[WORD_CLICK], 0, word ? word : NULL, event); + } + } + + return FALSE; +} + +static gboolean +gtk_xtext_button_press (GtkWidget * widget, GdkEventButton * event) +{ + GtkXText *xtext = GTK_XTEXT (widget); + GdkModifierType mask; + textentry *ent; + unsigned char *word; + int line_x, x, y, offset, len; + + gdk_window_get_pointer (widget->window, &x, &y, &mask); + + if (event->button == 3 || event->button == 2) /* right/middle click */ + { + word = gtk_xtext_get_word (xtext, x, y, 0, 0, 0, 0); + if (word) + { + g_signal_emit (G_OBJECT (xtext), xtext_signals[WORD_CLICK], 0, + word, event); + } else + g_signal_emit (G_OBJECT (xtext), xtext_signals[WORD_CLICK], 0, + "", event); + return FALSE; + } + + if (event->button != 1) /* we only want left button */ + return FALSE; + + if (event->type == GDK_2BUTTON_PRESS) /* WORD select */ + { + gtk_xtext_check_mark_stamp (xtext, mask); + if (gtk_xtext_get_word (xtext, x, y, &ent, &offset, &len, 0)) + { + if (len == 0) + return FALSE; + gtk_xtext_selection_clear (xtext->buffer); + ent->mark_start = offset; + ent->mark_end = offset + len; + gtk_xtext_selection_render (xtext, ent, ent); + xtext->word_select = TRUE; + } + + return FALSE; + } + + if (event->type == GDK_3BUTTON_PRESS) /* LINE select */ + { + gtk_xtext_check_mark_stamp (xtext, mask); + if (gtk_xtext_get_word (xtext, x, y, &ent, 0, 0, 0)) + { + gtk_xtext_selection_clear (xtext->buffer); + ent->mark_start = 0; + ent->mark_end = ent->str_len; + gtk_xtext_selection_render (xtext, ent, ent); + xtext->line_select = TRUE; + } + + return FALSE; + } + + /* check if it was a separator-bar click */ + if (xtext->separator && xtext->buffer->indent) + { + line_x = xtext->buffer->indent - ((xtext->space_width + 1) / 2); + if (line_x == x || line_x == x + 1 || line_x == x - 1) + { + xtext->moving_separator = TRUE; + /* draw the separator line */ + gtk_xtext_draw_sep (xtext, -1); + return FALSE; + } + } + + xtext->button_down = TRUE; + xtext->select_start_x = x; + xtext->select_start_y = y; + xtext->select_start_adj = xtext->adj->value; + + return FALSE; +} + +/* another program has claimed the selection */ + +static gboolean +gtk_xtext_selection_kill (GtkXText *xtext, GdkEventSelection *event) +{ +#ifndef WIN32 + if (xtext->buffer->last_ent_start) + gtk_xtext_unselect (xtext); +#endif + return TRUE; +} + +static gboolean +gtk_xtext_is_selecting (GtkXText *xtext) +{ + textentry *ent; + xtext_buffer *buf; + + buf = xtext->selection_buffer; + if (!buf) + return FALSE; + + for (ent = buf->last_ent_start; ent; ent = ent->next) + { + if (ent->mark_start != -1 && ent->mark_end - ent->mark_start > 0) + return TRUE; + + if (ent == buf->last_ent_end) + break; + } + + return FALSE; +} + +static char * +gtk_xtext_selection_get_text (GtkXText *xtext, int *len_ret) +{ + textentry *ent; + char *txt; + char *pos; + char *stripped; + int len; + int first = TRUE; + xtext_buffer *buf; + + buf = xtext->selection_buffer; + if (!buf) + return NULL; + + /* first find out how much we need to malloc ... */ + len = 0; + ent = buf->last_ent_start; + while (ent) + { + if (ent->mark_start != -1) + { + /* include timestamp? */ + if (ent->mark_start == 0 && xtext->mark_stamp) + { + char *time_str; + int stamp_size = xtext_get_stamp_str (ent->stamp, &time_str); + g_free (time_str); + len += stamp_size; + } + + if (ent->mark_end - ent->mark_start > 0) + len += (ent->mark_end - ent->mark_start) + 1; + else + len++; + } + if (ent == buf->last_ent_end) + break; + ent = ent->next; + } + + if (len < 1) + return NULL; + + /* now allocate mem and copy buffer */ + pos = txt = g_malloc (len); + ent = buf->last_ent_start; + while (ent) + { + if (ent->mark_start != -1) + { + if (!first) + { + *pos = '\n'; + pos++; + } + first = FALSE; + if (ent->mark_end - ent->mark_start > 0) + { + /* include timestamp? */ + if (ent->mark_start == 0 && xtext->mark_stamp) + { + char *time_str; + int stamp_size = xtext_get_stamp_str (ent->stamp, &time_str); + memcpy (pos, time_str, stamp_size); + g_free (time_str); + pos += stamp_size; + } + + memcpy (pos, ent->str + ent->mark_start, + ent->mark_end - ent->mark_start); + pos += ent->mark_end - ent->mark_start; + } + } + if (ent == buf->last_ent_end) + break; + ent = ent->next; + } + *pos = 0; + + if (xtext->color_paste) + { + /*stripped = gtk_xtext_conv_color (txt, strlen (txt), &len);*/ + stripped = txt; + len = strlen (txt); + } + else + { + stripped = gtk_xtext_strip_color (txt, strlen (txt), NULL, &len, NULL, FALSE); + g_free (txt); + } + + *len_ret = len; + return stripped; +} + +/* another program is asking for our selection */ + +static void +gtk_xtext_selection_get (GtkWidget * widget, + GtkSelectionData * selection_data_ptr, + guint info, guint time) +{ + GtkXText *xtext = GTK_XTEXT (widget); + char *stripped; + guchar *new_text; + int len; + gsize glen; + + stripped = gtk_xtext_selection_get_text (xtext, &len); + if (!stripped) + return; + + switch (info) + { + case TARGET_UTF8_STRING: + /* it's already in utf8 */ + gtk_selection_data_set_text (selection_data_ptr, stripped, len); + break; + case TARGET_TEXT: + case TARGET_COMPOUND_TEXT: +#ifdef GDK_WINDOWING_X11 + { + GdkDisplay *display = gdk_window_get_display (widget->window); + GdkAtom encoding; + gint format; + gint new_length; + + gdk_x11_display_string_to_compound_text (display, stripped, &encoding, + &format, &new_text, &new_length); + gtk_selection_data_set (selection_data_ptr, encoding, format, + new_text, new_length); + gdk_x11_free_compound_text (new_text); + + } + break; +#endif + default: + new_text = g_locale_from_utf8 (stripped, len, NULL, &glen, NULL); + gtk_selection_data_set (selection_data_ptr, GDK_SELECTION_TYPE_STRING, + 8, new_text, glen); + g_free (new_text); + } + + g_free (stripped); +} + +static gboolean +gtk_xtext_scroll (GtkWidget *widget, GdkEventScroll *event) +{ + GtkXText *xtext = GTK_XTEXT (widget); + gfloat new_value; + + if (event->direction == GDK_SCROLL_UP) /* mouse wheel pageUp */ + { + new_value = xtext->adj->value - (xtext->adj->page_increment / 10); + if (new_value < xtext->adj->lower) + new_value = xtext->adj->lower; + gtk_adjustment_set_value (xtext->adj, new_value); + } + else if (event->direction == GDK_SCROLL_DOWN) /* mouse wheel pageDn */ + { + new_value = xtext->adj->value + (xtext->adj->page_increment / 10); + if (new_value > (xtext->adj->upper - xtext->adj->page_size)) + new_value = xtext->adj->upper - xtext->adj->page_size; + gtk_adjustment_set_value (xtext->adj, new_value); + } + + return FALSE; +} + +static void +gtk_xtext_scroll_adjustments (GtkXText *xtext, GtkAdjustment *hadj, GtkAdjustment *vadj) +{ + /* hadj is ignored entirely */ + + if (vadj) + g_return_if_fail (GTK_IS_ADJUSTMENT (vadj)); + else + vadj = GTK_ADJUSTMENT(gtk_adjustment_new (0, 0, 1, 1, 1, 1)); + + if (xtext->adj && (xtext->adj != vadj)) + { + g_signal_handlers_disconnect_by_func (xtext->adj, + gtk_xtext_adjustment_changed, + xtext); + g_object_unref (xtext->adj); + } + + if (xtext->adj != vadj) + { + xtext->adj = vadj; + g_object_ref_sink (xtext->adj); + + xtext->vc_signal_tag = g_signal_connect (xtext->adj, "value-changed", + G_CALLBACK (gtk_xtext_adjustment_changed), + xtext); + + gtk_xtext_adjustment_changed (xtext->adj, xtext); + } +} + +static void +gtk_xtext_class_init (GtkXTextClass * class) +{ + GtkObjectClass *object_class; + GtkWidgetClass *widget_class; + GtkXTextClass *xtext_class; + + object_class = (GtkObjectClass *) class; + widget_class = (GtkWidgetClass *) class; + xtext_class = (GtkXTextClass *) class; + + parent_class = g_type_class_peek (gtk_widget_get_type ()); + + xtext_signals[WORD_CLICK] = + g_signal_new ("word_click", + G_TYPE_FROM_CLASS (object_class), + G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, + G_STRUCT_OFFSET (GtkXTextClass, word_click), + NULL, NULL, + _hexchat_marshal_VOID__POINTER_POINTER, + G_TYPE_NONE, + 2, G_TYPE_POINTER, G_TYPE_POINTER); + xtext_signals[SET_SCROLL_ADJUSTMENTS] = + g_signal_new ("set_scroll_adjustments", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, + G_STRUCT_OFFSET (GtkXTextClass, set_scroll_adjustments), + NULL, NULL, + _hexchat_marshal_VOID__OBJECT_OBJECT, + G_TYPE_NONE, + 2, GTK_TYPE_ADJUSTMENT, GTK_TYPE_ADJUSTMENT); + + object_class->destroy = gtk_xtext_destroy; + + widget_class->realize = gtk_xtext_realize; + widget_class->unrealize = gtk_xtext_unrealize; + widget_class->size_request = gtk_xtext_size_request; + widget_class->size_allocate = gtk_xtext_size_allocate; + widget_class->button_press_event = gtk_xtext_button_press; + widget_class->button_release_event = gtk_xtext_button_release; + widget_class->motion_notify_event = gtk_xtext_motion_notify; + widget_class->selection_clear_event = (void *)gtk_xtext_selection_kill; + widget_class->selection_get = gtk_xtext_selection_get; + widget_class->expose_event = gtk_xtext_expose; + widget_class->scroll_event = gtk_xtext_scroll; + widget_class->leave_notify_event = gtk_xtext_leave_notify; + widget_class->set_scroll_adjustments_signal = xtext_signals[SET_SCROLL_ADJUSTMENTS]; + + xtext_class->word_click = NULL; + xtext_class->set_scroll_adjustments = gtk_xtext_scroll_adjustments; +} + +GType +gtk_xtext_get_type (void) +{ + static GType xtext_type = 0; + + if (!xtext_type) + { + static const GTypeInfo xtext_info = + { + sizeof (GtkXTextClass), + NULL, /* base_init */ + NULL, /* base_finalize */ + (GClassInitFunc) gtk_xtext_class_init, + NULL, /* class_finalize */ + NULL, /* class_data */ + sizeof (GtkXText), + 0, /* n_preallocs */ + (GInstanceInitFunc) gtk_xtext_init, + }; + + xtext_type = g_type_register_static (GTK_TYPE_WIDGET, "GtkXText", + &xtext_info, 0); + } + + return xtext_type; +} + +/* strip MIRC colors and other attribs. */ + +/* CL: needs to strip hidden when called by gtk_xtext_text_width, but not when copying text */ + +typedef struct chunk_s { + GSList *slp; + int off1, len1, emph; + offlen_t meta; +} chunk_t; + +static void +xtext_do_chunk(chunk_t *c) +{ + offlen_t *meta; + + if (c->len1 == 0) + return; + + meta = g_new (offlen_t, 1); + meta->off = c->off1; + meta->len = c->len1; + meta->emph = c->emph; + meta->width = 0; + c->slp = g_slist_append (c->slp, meta); + + c->len1 = 0; +} + +static unsigned char * +gtk_xtext_strip_color (unsigned char *text, int len, unsigned char *outbuf, + int *newlen, GSList **slpp, int strip_hidden) +{ + chunk_t c; + int i = 0; + int rcol = 0, bgcol = 0; + int hidden = FALSE; + unsigned char *new_str; + unsigned char *text0 = text; + int mbl; /* multi-byte length */ + + if (outbuf == NULL) + new_str = g_malloc (len + 2); + else + new_str = outbuf; + + c.slp = NULL; + c.off1 = 0; + c.len1 = 0; + c.emph = 0; + while (len > 0) + { + mbl = charlen (text); + if (mbl > len) + goto bad_utf8; + + if (rcol > 0 && (isdigit (*text) || (*text == ',' && isdigit (text[1]) && !bgcol))) + { + if (text[1] != ',') rcol--; + if (*text == ',') + { + rcol = 2; + bgcol = 1; + } + } else + { + rcol = bgcol = 0; + switch (*text) + { + case ATTR_COLOR: + xtext_do_chunk (&c); + rcol = 2; + break; + case ATTR_BEEP: + case ATTR_RESET: + case ATTR_REVERSE: + case ATTR_BOLD: + case ATTR_UNDERLINE: + case ATTR_STRIKETHROUGH: + case ATTR_ITALICS: + xtext_do_chunk (&c); + if (*text == ATTR_RESET) + c.emph = 0; + if (*text == ATTR_ITALICS) + c.emph ^= EMPH_ITAL; + if (*text == ATTR_BOLD) + c.emph ^= EMPH_BOLD; + break; + case ATTR_HIDDEN: + xtext_do_chunk (&c); + c.emph ^= EMPH_HIDDEN; + hidden = !hidden; + break; + default: + if (strip_hidden == 2 || (!(hidden && strip_hidden))) + { + if (c.len1 == 0) + c.off1 = text - text0; + memcpy (new_str + i, text, mbl); + i += mbl; + c.len1 += mbl; + } + } + } + text += mbl; + len -= mbl; + } + +bad_utf8: /* Normal ending sequence, and give up if bad utf8 */ + xtext_do_chunk (&c); + + new_str[i] = 0; + + if (newlen != NULL) + *newlen = i; + + if (slpp) + *slpp = c.slp; + else + g_slist_free_full (c.slp, g_free); + + return new_str; +} + +/* gives width of a string, excluding the mIRC codes */ + +static int +gtk_xtext_text_width_ent (GtkXText *xtext, textentry *ent) +{ + unsigned char *new_buf; + GSList *slp0, *slp; + int width; + + if (ent->slp) + { + g_slist_free_full (ent->slp, g_free); + ent->slp = NULL; + } + + new_buf = gtk_xtext_strip_color (ent->str, ent->str_len, xtext->scratch_buffer, + NULL, &slp0, 2); + + width = backend_get_text_width_slp (xtext, new_buf, slp0); + ent->slp = slp0; + + for (slp = slp0; slp; slp = g_slist_next (slp)) + { + offlen_t *meta; + + meta = slp->data; + meta->width = backend_get_text_width_emph (xtext, ent->str + meta->off, meta->len, meta->emph); + } + return width; +} + +static int +gtk_xtext_text_width (GtkXText *xtext, unsigned char *text, int len) +{ + unsigned char *new_buf; + int new_len; + GSList *slp; + int width; + + new_buf = gtk_xtext_strip_color (text, len, xtext->scratch_buffer, + &new_len, &slp, !xtext->ignore_hidden); + + width = backend_get_text_width_slp (xtext, new_buf, slp); + g_slist_free_full (slp, g_free); + + return width; +} + +/* actually draw text to screen (one run with the same color/attribs) */ + +static int +gtk_xtext_render_flush (GtkXText * xtext, int x, int y, unsigned char *str, + int len, GdkGC *gc, int *emphasis) +{ + int str_width, dofill; + GdkDrawable *pix = NULL; + int dest_x = 0, dest_y = 0; + + if (xtext->dont_render || len < 1 || xtext->hidden) + return 0; + + str_width = backend_get_text_width_emph (xtext, str, len, *emphasis); + + if (xtext->dont_render2) + return str_width; + + /* roll-your-own clipping (avoiding XftDrawString is always good!) */ + if (x > xtext->clip_x2 || x + str_width < xtext->clip_x) + return str_width; + if (y - xtext->font->ascent > xtext->clip_y2 || (y - xtext->font->ascent) + xtext->fontsize < xtext->clip_y) + return str_width; + + if (xtext->render_hilights_only) + { + if (!xtext->in_hilight) /* is it a hilight prefix? */ + return str_width; + if (!xtext->un_hilight) /* doing a hilight? no need to draw the text */ + goto dounder; + } + + pix = gdk_pixmap_new (xtext->draw_buf, str_width, xtext->fontsize, xtext->depth); + if (pix) + { + dest_x = x; + dest_y = y - xtext->font->ascent; + + gdk_gc_set_ts_origin (xtext->bgc, xtext->ts_x - x, xtext->ts_y - dest_y); + + x = 0; + y = xtext->font->ascent; + xtext->draw_buf = pix; + } + + dofill = TRUE; + + /* backcolor is always handled by XDrawImageString */ + if (!xtext->backcolor && xtext->pixmap) + { + /* draw the background pixmap behind the text - CAUSES FLICKER HERE!! */ + xtext_draw_bg (xtext, x, y - xtext->font->ascent, str_width, + xtext->fontsize); + dofill = FALSE; /* already drawn the background */ + } + + backend_draw_text_emph (xtext, dofill, gc, x, y, str, len, str_width, *emphasis); + + if (pix) + { + GdkRectangle clip; + GdkRectangle dest; + + gdk_gc_set_ts_origin (xtext->bgc, xtext->ts_x, xtext->ts_y); + xtext->draw_buf = GTK_WIDGET (xtext)->window; + clip.x = xtext->clip_x; + clip.y = xtext->clip_y; + clip.width = xtext->clip_x2 - xtext->clip_x; + clip.height = xtext->clip_y2 - xtext->clip_y; + + dest.x = dest_x; + dest.y = dest_y; + dest.width = str_width; + dest.height = xtext->fontsize; + + if (gdk_rectangle_intersect (&clip, &dest, &dest)) + /* dump the DB to window, but only within the clip_x/x2/y/y2 */ + gdk_draw_drawable (xtext->draw_buf, xtext->bgc, pix, + dest.x - dest_x, dest.y - dest_y, + dest.x, dest.y, dest.width, dest.height); + g_object_unref (pix); + } + + if (xtext->strikethrough) + { + /* pango_attr_strikethrough_new does not render in the custom widget so we need to reinvent the wheel */ + y = dest_y + (xtext->fontsize / 2); + gdk_draw_line (xtext->draw_buf, gc, dest_x, y, dest_x + str_width - 1, y); + } + + if (xtext->underline) + { +dounder: + + if (pix) + y = dest_y + xtext->font->ascent + 1; + else + { + y++; + dest_x = x; + } + /* draw directly to window, it's out of the range of our DB */ + gdk_draw_line (xtext->draw_buf, gc, dest_x, y, dest_x + str_width - 1, y); + } + + return str_width; +} + +static void +gtk_xtext_reset (GtkXText * xtext, int mark, int attribs) +{ + if (attribs) + { + xtext->underline = FALSE; + xtext->strikethrough = FALSE; + xtext->hidden = FALSE; + } + if (!mark) + { + xtext->backcolor = FALSE; + if (xtext->col_fore != XTEXT_FG) + xtext_set_fg (xtext, xtext->fgc, XTEXT_FG); + if (xtext->col_back != XTEXT_BG) + xtext_set_bg (xtext, xtext->fgc, XTEXT_BG); + } + xtext->col_fore = XTEXT_FG; + xtext->col_back = XTEXT_BG; + xtext->parsing_color = FALSE; + xtext->parsing_backcolor = FALSE; + xtext->nc = 0; +} + +/* + * gtk_xtext_search_offset (buf, ent, off) -- + * Look for arg offset in arg textentry + * Return one or more flags: + * GTK_MATCH_MID if we are in a match + * GTK_MATCH_START if we're at the first byte of it + * GTK_MATCH_END if we're at the first byte past it + * GTK_MATCH_CUR if it is the current match + */ +#define GTK_MATCH_START 1 +#define GTK_MATCH_MID 2 +#define GTK_MATCH_END 4 +#define GTK_MATCH_CUR 8 +static int +gtk_xtext_search_offset (xtext_buffer *buf, textentry *ent, unsigned int off) +{ + GList *gl; + offsets_t o; + int flags = 0; + + for (gl = g_list_first (ent->marks); gl; gl = g_list_next (gl)) + { + o.u = GPOINTER_TO_UINT (gl->data); + if (off < o.o.start || off > o.o.end) + continue; + flags = GTK_MATCH_MID; + if (off == o.o.start) + flags |= GTK_MATCH_START; + if (off == o.o.end) + { + gl = g_list_next (gl); + if (gl) + { + o.u = GPOINTER_TO_UINT (gl->data); + if (off == o.o.start) /* If subseq match is adjacent */ + { + flags |= (gl == buf->curmark)? GTK_MATCH_CUR: 0; + } + else /* If subseq match is not adjacent */ + { + flags |= GTK_MATCH_END; + } + } + else /* If there is no subseq match */ + { + flags |= GTK_MATCH_END; + } + } + else if (gl == buf->curmark) /* If not yet at the end of this match */ + { + flags |= GTK_MATCH_CUR; + } + break; + } + return flags; +} + +/* render a single line, which WONT wrap, and parse mIRC colors */ + +#define RENDER_FLUSH x += gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, emphasis) + +static int +gtk_xtext_render_str (GtkXText * xtext, int y, textentry * ent, + unsigned char *str, int len, int win_width, int indent, + int line, int left_only, int *x_size_ret, int *emphasis) +{ + GdkGC *gc; + int i = 0, x = indent, j = 0; + unsigned char *pstr = str; + int col_num, tmp; + int offset; + int mark = FALSE; + int ret = 1; + int k; + int srch_underline = FALSE; + int srch_mark = FALSE; + + xtext->in_hilight = FALSE; + + offset = str - ent->str; + + gc = xtext->fgc; /* our foreground GC */ + + if (ent->mark_start != -1 && + ent->mark_start <= i + offset && ent->mark_end > i + offset) + { + xtext_set_bg (xtext, gc, XTEXT_MARK_BG); + xtext_set_fg (xtext, gc, XTEXT_MARK_FG); + xtext->backcolor = TRUE; + mark = TRUE; + } + if (xtext->hilight_ent == ent && + xtext->hilight_start <= i + offset && xtext->hilight_end > i + offset) + { + if (!xtext->un_hilight) + { + xtext->underline = TRUE; + } + xtext->in_hilight = TRUE; + } + + if (!xtext->skip_border_fills && !xtext->dont_render) + { + /* draw background to the left of the text */ + if (str == ent->str && indent > MARGIN && xtext->buffer->time_stamp) + { + /* don't overwrite the timestamp */ + if (indent > xtext->stamp_width) + { + xtext_draw_bg (xtext, xtext->stamp_width, y - xtext->font->ascent, + indent - xtext->stamp_width, xtext->fontsize); + } + } else + { + /* fill the indent area with background gc */ + if (indent >= xtext->clip_x) + { + xtext_draw_bg (xtext, 0, y - xtext->font->ascent, + MIN (indent, xtext->clip_x2), xtext->fontsize); + } + } + } + + if (xtext->jump_in_offset > 0 && offset < xtext->jump_in_offset) + xtext->dont_render2 = TRUE; + + while (i < len) + { + + if (xtext->hilight_ent == ent && xtext->hilight_start == (i + offset)) + { + RENDER_FLUSH; + pstr += j; + j = 0; + if (!xtext->un_hilight) + { + xtext->underline = TRUE; + } + + xtext->in_hilight = TRUE; + } + + if ((xtext->parsing_color && isdigit (str[i]) && xtext->nc < 2) || + (xtext->parsing_color && str[i] == ',' && isdigit (str[i+1]) && xtext->nc < 3 && !xtext->parsing_backcolor)) + { + pstr++; + if (str[i] == ',') + { + xtext->parsing_backcolor = TRUE; + if (xtext->nc) + { + xtext->num[xtext->nc] = 0; + xtext->nc = 0; + col_num = atoi (xtext->num); + if (col_num == 99) /* mIRC lameness */ + col_num = XTEXT_FG; + else + if (col_num > XTEXT_MAX_COLOR) + col_num = col_num % XTEXT_MIRC_COLS; + xtext->col_fore = col_num; + if (!mark) + xtext_set_fg (xtext, gc, col_num); + } + } else + { + xtext->num[xtext->nc] = str[i]; + if (xtext->nc < 7) + xtext->nc++; + } + } else + { + if (xtext->parsing_color) + { + xtext->parsing_color = FALSE; + if (xtext->nc) + { + xtext->num[xtext->nc] = 0; + xtext->nc = 0; + col_num = atoi (xtext->num); + if (xtext->parsing_backcolor) + { + if (col_num == 99) /* mIRC lameness */ + col_num = XTEXT_BG; + else + if (col_num > XTEXT_MAX_COLOR) + col_num = col_num % XTEXT_MIRC_COLS; + if (col_num == XTEXT_BG) + xtext->backcolor = FALSE; + else + xtext->backcolor = TRUE; + if (!mark) + xtext_set_bg (xtext, gc, col_num); + xtext->col_back = col_num; + } else + { + if (col_num == 99) /* mIRC lameness */ + col_num = XTEXT_FG; + else + if (col_num > XTEXT_MAX_COLOR) + col_num = col_num % XTEXT_MIRC_COLS; + if (!mark) + xtext_set_fg (xtext, gc, col_num); + xtext->col_fore = col_num; + } + xtext->parsing_backcolor = FALSE; + } else + { + /* got a \003<non-digit>... i.e. reset colors */ + RENDER_FLUSH; + pstr += j; + j = 0; + gtk_xtext_reset (xtext, mark, FALSE); + } + } + + if (!left_only && !mark && + (k = gtk_xtext_search_offset (xtext->buffer, ent, offset + i))) + { + RENDER_FLUSH; + pstr += j; + j = 0; + if (!(xtext->buffer->search_flags & highlight)) + { + if (k & GTK_MATCH_CUR) + { + xtext_set_bg (xtext, gc, XTEXT_MARK_BG); + xtext_set_fg (xtext, gc, XTEXT_MARK_FG); + xtext->backcolor = TRUE; + srch_mark = TRUE; + } else + { + xtext_set_bg (xtext, gc, xtext->col_back); + xtext_set_fg (xtext, gc, xtext->col_fore); + xtext->backcolor = (xtext->col_back != XTEXT_BG)? TRUE: FALSE; + srch_mark = FALSE; + } + } + else + { + xtext->underline = (k & GTK_MATCH_CUR)? TRUE: FALSE; + if (k & (GTK_MATCH_START | GTK_MATCH_MID)) + { + xtext_set_bg (xtext, gc, XTEXT_MARK_BG); + xtext_set_fg (xtext, gc, XTEXT_MARK_FG); + xtext->backcolor = TRUE; + srch_mark = TRUE; + } + if (k & GTK_MATCH_END) + { + xtext_set_bg (xtext, gc, xtext->col_back); + xtext_set_fg (xtext, gc, xtext->col_fore); + xtext->backcolor = (xtext->col_back != XTEXT_BG)? TRUE: FALSE; + srch_mark = FALSE; + xtext->underline = FALSE; + } + srch_underline = xtext->underline; + } + } + + switch (str[i]) + { + case '\n': + /*case ATTR_BEEP:*/ + break; + case ATTR_REVERSE: + RENDER_FLUSH; + pstr += j + 1; + j = 0; + tmp = xtext->col_fore; + xtext->col_fore = xtext->col_back; + xtext->col_back = tmp; + if (!mark) + { + xtext_set_fg (xtext, gc, xtext->col_fore); + xtext_set_bg (xtext, gc, xtext->col_back); + } + if (xtext->col_back != XTEXT_BG) + xtext->backcolor = TRUE; + else + xtext->backcolor = FALSE; + break; + case ATTR_BOLD: + RENDER_FLUSH; + *emphasis ^= EMPH_BOLD; + pstr += j + 1; + j = 0; + break; + case ATTR_UNDERLINE: + RENDER_FLUSH; + xtext->underline = !xtext->underline; + pstr += j + 1; + j = 0; + break; + case ATTR_STRIKETHROUGH: + RENDER_FLUSH; + xtext->strikethrough = !xtext->strikethrough; + pstr += j + 1; + j = 0; + break; + case ATTR_ITALICS: + RENDER_FLUSH; + *emphasis ^= EMPH_ITAL; + pstr += j + 1; + j = 0; + break; + case ATTR_HIDDEN: + RENDER_FLUSH; + xtext->hidden = (!xtext->hidden) & (!xtext->ignore_hidden); + pstr += j + 1; + j = 0; + break; + case ATTR_RESET: + RENDER_FLUSH; + *emphasis = 0; + pstr += j + 1; + j = 0; + gtk_xtext_reset (xtext, mark, !xtext->in_hilight); + break; + case ATTR_COLOR: + RENDER_FLUSH; + xtext->parsing_color = TRUE; + pstr += j + 1; + j = 0; + break; + default: + tmp = charlen (str + i); + /* invalid utf8 safe guard */ + if (tmp + i > len) + tmp = len - i; + j += tmp; /* move to the next utf8 char */ + } + } + i += charlen (str + i); /* move to the next utf8 char */ + /* invalid utf8 safe guard */ + if (i > len) + i = len; + + /* Separate the left part, the space and the right part + into separate runs, and reset bidi state inbetween. + Perform this only on the first line of the message. + */ + if (offset == 0) + { + /* we've reached the end of the left part? */ + if ((pstr-str)+j == ent->left_len) + { + RENDER_FLUSH; + pstr += j; + j = 0; + } + else if ((pstr-str)+j == ent->left_len+1) + { + RENDER_FLUSH; + pstr += j; + j = 0; + } + } + + /* have we been told to stop rendering at this point? */ + if (xtext->jump_out_offset > 0 && xtext->jump_out_offset <= (i + offset)) + { + gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, emphasis); + ret = 0; /* skip the rest of the lines, we're done. */ + j = 0; + break; + } + + if (xtext->jump_in_offset > 0 && xtext->jump_in_offset == (i + offset)) + { + RENDER_FLUSH; + pstr += j; + j = 0; + xtext->dont_render2 = FALSE; + } + + if (xtext->hilight_ent == ent && xtext->hilight_end == (i + offset)) + { + RENDER_FLUSH; + pstr += j; + j = 0; + xtext->underline = FALSE; + xtext->in_hilight = FALSE; + if (xtext->render_hilights_only) + { + /* stop drawing this ent */ + ret = 0; + break; + } + } + + if (!mark && ent->mark_start == (i + offset)) + { + RENDER_FLUSH; + pstr += j; + j = 0; + xtext_set_bg (xtext, gc, XTEXT_MARK_BG); + xtext_set_fg (xtext, gc, XTEXT_MARK_FG); + xtext->backcolor = TRUE; + if (srch_underline) + { + xtext->underline = FALSE; + srch_underline = FALSE; + } + mark = TRUE; + } + + if (mark && ent->mark_end == (i + offset)) + { + RENDER_FLUSH; + pstr += j; + j = 0; + xtext_set_bg (xtext, gc, xtext->col_back); + xtext_set_fg (xtext, gc, xtext->col_fore); + if (xtext->col_back != XTEXT_BG) + xtext->backcolor = TRUE; + else + xtext->backcolor = FALSE; + mark = FALSE; + } + + } + + if (j) + RENDER_FLUSH; + + if (mark || srch_mark) + { + xtext_set_bg (xtext, gc, xtext->col_back); + xtext_set_fg (xtext, gc, xtext->col_fore); + if (xtext->col_back != XTEXT_BG) + xtext->backcolor = TRUE; + else + xtext->backcolor = FALSE; + } + + /* draw background to the right of the text */ + if (!left_only && !xtext->dont_render) + { + /* draw separator now so it doesn't appear to flicker */ + gtk_xtext_draw_sep (xtext, y - xtext->font->ascent); + if (!xtext->skip_border_fills && xtext->clip_x2 >= x) + { + int xx = MAX (x, xtext->clip_x); + + xtext_draw_bg (xtext, + xx, /* x */ + y - xtext->font->ascent, /* y */ + MIN (xtext->clip_x2 - xx, (win_width + MARGIN) - xx), /* width */ + xtext->fontsize); /* height */ + } + } + + xtext->dont_render2 = FALSE; + + /* return how much we drew in the x direction */ + if (x_size_ret) + *x_size_ret = x - indent; + + return ret; +} + +/* walk through str until this line doesn't fit anymore */ + +static int +find_next_wrap (GtkXText * xtext, textentry * ent, unsigned char *str, + int win_width, int indent) +{ + unsigned char *last_space = str; + unsigned char *orig_str = str; + int str_width = indent; + int rcol = 0, bgcol = 0; + int hidden = FALSE; + int mbl; + int char_width; + int ret; + int limit_offset = 0; + int emphasis = 0; + GSList *lp; + + /* single liners */ + if (win_width >= ent->str_width + ent->indent) + return ent->str_len; + + /* it does happen! */ + if (win_width < 1) + { + ret = ent->str_len - (str - ent->str); + goto done; + } + + /* Find emphasis value for the offset that is the first byte of our string */ + for (lp = ent->slp; lp; lp = g_slist_next (lp)) + { + offlen_t *meta = lp->data; + unsigned char *start, *end; + + start = ent->str + meta->off; + end = start + meta->len; + if (str >= start && str < end) + { + emphasis = meta->emph; + break; + } + } + + while (1) + { + if (rcol > 0 && (isdigit (*str) || (*str == ',' && isdigit (str[1]) && !bgcol))) + { + if (str[1] != ',') rcol--; + if (*str == ',') + { + rcol = 2; + bgcol = 1; + } + limit_offset++; + str++; + } else + { + rcol = bgcol = 0; + switch (*str) + { + case ATTR_COLOR: + rcol = 2; + case ATTR_BEEP: + case ATTR_RESET: + case ATTR_REVERSE: + case ATTR_BOLD: + case ATTR_UNDERLINE: + case ATTR_STRIKETHROUGH: + case ATTR_ITALICS: + if (*str == ATTR_RESET) + emphasis = 0; + if (*str == ATTR_ITALICS) + emphasis ^= EMPH_ITAL; + if (*str == ATTR_BOLD) + emphasis ^= EMPH_BOLD; + limit_offset++; + str++; + break; + case ATTR_HIDDEN: + if (xtext->ignore_hidden) + goto def; + hidden = !hidden; + limit_offset++; + str++; + break; + default: + def: + mbl = charlen (str); + char_width = backend_get_text_width_emph (xtext, str, mbl, emphasis); + if (!hidden) str_width += char_width; + if (str_width > win_width) + { + if (xtext->wordwrap) + { + if (str - last_space > WORDWRAP_LIMIT + limit_offset) + ret = str - orig_str; /* fall back to character wrap */ + else + { + if (*last_space == ' ') + last_space++; + ret = last_space - orig_str; + if (ret == 0) /* fall back to character wrap */ + ret = str - orig_str; + } + goto done; + } + ret = str - orig_str; + goto done; + } + + /* keep a record of the last space, for wordwrapping */ + if (is_del (*str)) + { + last_space = str; + limit_offset = 0; + } + + /* progress to the next char */ + str += mbl; + + } + } + + if (str >= ent->str + ent->str_len) + { + ret = str - orig_str; + goto done; + } + } + +done: + + /* must make progress */ + if (ret < 1) + ret = 1; + + return ret; +} + +/* find the offset, in bytes, that wrap number 'line' starts at */ + +static int +gtk_xtext_find_subline (GtkXText *xtext, textentry *ent, int line) +{ + int rlen = 0; + + if (line > 0) + { + rlen = GPOINTER_TO_UINT (g_slist_nth_data (ent->sublines, line - 1)); + if (rlen == 0) + rlen = ent->str_len; + } + return rlen; +} + +/* horrible hack for drawing time stamps */ + +static void +gtk_xtext_render_stamp (GtkXText * xtext, textentry * ent, + char *text, int len, int line, int win_width) +{ + textentry tmp_ent; + int jo, ji, hs; + int xsize, y, emphasis; + + /* trashing ent here, so make a backup first */ + memcpy (&tmp_ent, ent, sizeof (tmp_ent)); + jo = xtext->jump_out_offset; /* back these up */ + ji = xtext->jump_in_offset; + hs = xtext->hilight_start; + xtext->jump_out_offset = 0; + xtext->jump_in_offset = 0; + xtext->hilight_start = 0xffff; /* temp disable */ + emphasis = 0; + + if (xtext->mark_stamp) + { + /* if this line is marked, mark this stamp too */ + if (ent->mark_start == 0) + { + ent->mark_start = 0; + ent->mark_end = len; + } + else + { + ent->mark_start = -1; + ent->mark_end = -1; + } + ent->str = text; + } + + y = (xtext->fontsize * line) + xtext->font->ascent - xtext->pixel_offset; + gtk_xtext_render_str (xtext, y, ent, text, len, + win_width, 2, line, TRUE, &xsize, &emphasis); + + /* restore everything back to how it was */ + memcpy (ent, &tmp_ent, sizeof (tmp_ent)); + xtext->jump_out_offset = jo; + xtext->jump_in_offset = ji; + xtext->hilight_start = hs; + + /* with a non-fixed-width font, sometimes we don't draw enough + background i.e. when this stamp is shorter than xtext->stamp_width */ + xsize += MARGIN; + if (xsize < xtext->stamp_width) + { + y -= xtext->font->ascent; + xtext_draw_bg (xtext, + xsize, /* x */ + y, /* y */ + xtext->stamp_width - xsize, /* width */ + xtext->fontsize /* height */); + } +} + +/* render a single line, which may wrap to more lines */ + +static int +gtk_xtext_render_line (GtkXText * xtext, textentry * ent, int line, + int lines_max, int subline, int win_width) +{ + unsigned char *str; + int indent, taken, entline, len, y, start_subline; + int emphasis = 0; + + entline = taken = 0; + str = ent->str; + indent = ent->indent; + start_subline = subline; + + /* draw the timestamp */ + if (xtext->auto_indent && xtext->buffer->time_stamp && + (!xtext->skip_stamp || xtext->mark_stamp || xtext->force_stamp)) + { + char *time_str; + int len; + + len = xtext_get_stamp_str (ent->stamp, &time_str); + gtk_xtext_render_stamp (xtext, ent, time_str, len, line, win_width); + g_free (time_str); + } + + /* draw each line one by one */ + do + { + if (entline > 0) + len = GPOINTER_TO_INT (g_slist_nth_data (ent->sublines, entline)) - GPOINTER_TO_INT (g_slist_nth_data (ent->sublines, entline - 1)); + else + len = GPOINTER_TO_INT (g_slist_nth_data (ent->sublines, entline)); + + entline++; + + y = (xtext->fontsize * line) + xtext->font->ascent - xtext->pixel_offset; + if (!subline) + { + if (!gtk_xtext_render_str (xtext, y, ent, str, len, win_width, + indent, line, FALSE, NULL, &emphasis)) + { + /* small optimization */ + gtk_xtext_draw_marker (xtext, ent, y - xtext->fontsize * (taken + start_subline + 1)); + return g_slist_length (ent->sublines) - subline; + } + } else + { + xtext->dont_render = TRUE; + gtk_xtext_render_str (xtext, y, ent, str, len, win_width, + indent, line, FALSE, NULL, &emphasis); + xtext->dont_render = FALSE; + subline--; + line--; + taken--; + } + + indent = xtext->buffer->indent; + line++; + taken++; + str += len; + + if (line >= lines_max) + break; + + } + while (str < ent->str + ent->str_len); + + gtk_xtext_draw_marker (xtext, ent, y - xtext->fontsize * (taken + start_subline)); + + return taken; +} + +void +gtk_xtext_set_palette (GtkXText * xtext, GdkColor palette[]) +{ + int i; + + for (i = (XTEXT_COLS-1); i >= 0; i--) + { + xtext->palette[i] = palette[i]; + } + + if (gtk_widget_get_realized (GTK_WIDGET(xtext))) + { + xtext_set_fg (xtext, xtext->fgc, XTEXT_FG); + xtext_set_bg (xtext, xtext->fgc, XTEXT_BG); + xtext_set_fg (xtext, xtext->bgc, XTEXT_BG); + + gdk_gc_set_foreground (xtext->marker_gc, &xtext->palette[XTEXT_MARKER]); + } + xtext->col_fore = XTEXT_FG; + xtext->col_back = XTEXT_BG; +} + +static void +gtk_xtext_fix_indent (xtext_buffer *buf) +{ + int j; + + /* make indent a multiple of the space width */ + if (buf->indent && buf->xtext->space_width) + { + j = 0; + while (j < buf->indent) + { + j += buf->xtext->space_width; + } + buf->indent = j; + } + + dontscroll (buf); /* force scrolling off */ +} + +static void +gtk_xtext_recalc_widths (xtext_buffer *buf, int do_str_width) +{ + textentry *ent; + + /* since we have a new font, we have to recalc the text widths */ + ent = buf->text_first; + while (ent) + { + if (do_str_width) + { + ent->str_width = gtk_xtext_text_width_ent (buf->xtext, ent); + } + if (ent->left_len != -1) + { + ent->indent = + (buf->indent - + gtk_xtext_text_width (buf->xtext, ent->str, + ent->left_len)) - buf->xtext->space_width; + if (ent->indent < MARGIN) + ent->indent = MARGIN; + } + ent = ent->next; + } + + gtk_xtext_calc_lines (buf, FALSE); +} + +int +gtk_xtext_set_font (GtkXText *xtext, char *name) +{ + + if (xtext->font) + backend_font_close (xtext); + + /* realize now, so that font_open has a XDisplay */ + gtk_widget_realize (GTK_WIDGET (xtext)); + + backend_font_open (xtext, name); + if (xtext->font == NULL) + return FALSE; + + { + char *time_str; + int stamp_size = xtext_get_stamp_str (time(0), &time_str); + xtext->stamp_width = + gtk_xtext_text_width (xtext, time_str, stamp_size) + MARGIN; + g_free (time_str); + } + + gtk_xtext_fix_indent (xtext->buffer); + + if (gtk_widget_get_realized (GTK_WIDGET(xtext))) + gtk_xtext_recalc_widths (xtext->buffer, TRUE); + + return TRUE; +} + +void +gtk_xtext_set_background (GtkXText * xtext, GdkPixmap * pixmap) +{ + GdkGCValues val; + + if (xtext->pixmap) + { + g_object_unref (xtext->pixmap); + xtext->pixmap = NULL; + } + + dontscroll (xtext->buffer); + xtext->pixmap = pixmap; + + if (pixmap != 0) + { + g_object_ref (pixmap); + if (gtk_widget_get_realized (GTK_WIDGET(xtext))) + { + gdk_gc_set_tile (xtext->bgc, pixmap); + gdk_gc_set_ts_origin (xtext->bgc, 0, 0); + xtext->ts_x = xtext->ts_y = 0; + gdk_gc_set_fill (xtext->bgc, GDK_TILED); + } + } else if (gtk_widget_get_realized (GTK_WIDGET(xtext))) + { + g_object_unref (xtext->bgc); + val.subwindow_mode = GDK_INCLUDE_INFERIORS; + val.graphics_exposures = 0; + xtext->bgc = gdk_gc_new_with_values (GTK_WIDGET (xtext)->window, + &val, GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW); + xtext_set_fg (xtext, xtext->bgc, XTEXT_BG); + } +} + +void +gtk_xtext_save (GtkXText * xtext, int fh) +{ + textentry *ent; + int newlen; + char *buf; + + ent = xtext->buffer->text_first; + while (ent) + { + buf = gtk_xtext_strip_color (ent->str, ent->str_len, NULL, + &newlen, NULL, FALSE); + write (fh, buf, newlen); + write (fh, "\n", 1); + g_free (buf); + ent = ent->next; + } +} + +/* count how many lines 'ent' will take (with wraps) */ + +static int +gtk_xtext_lines_taken (xtext_buffer *buf, textentry * ent) +{ + unsigned char *str; + int indent, len; + int win_width; + + g_slist_free (ent->sublines); + ent->sublines = NULL; + win_width = buf->window_width - MARGIN; + + if (win_width >= ent->indent + ent->str_width) + { + ent->sublines = g_slist_append (ent->sublines, GINT_TO_POINTER (ent->str_len)); + return 1; + } + + indent = ent->indent; + str = ent->str; + + do + { + len = find_next_wrap (buf->xtext, ent, str, win_width, indent); + ent->sublines = g_slist_append (ent->sublines, GINT_TO_POINTER (str + len - ent->str)); + indent = buf->indent; + str += len; + } + while (str < ent->str + ent->str_len); + + return g_slist_length (ent->sublines); +} + +/* Calculate number of actual lines (with wraps), to set adj->lower. * + * This should only be called when the window resizes. */ + +static void +gtk_xtext_calc_lines (xtext_buffer *buf, int fire_signal) +{ + textentry *ent; + int width; + int height; + int lines; + + height = gdk_window_get_height (gtk_widget_get_window (GTK_WIDGET (buf->xtext))); + width = gdk_window_get_width (gtk_widget_get_window (GTK_WIDGET (buf->xtext))); + width -= MARGIN; + + if (width < 30 || height < buf->xtext->fontsize || width < buf->indent + 30) + return; + + lines = 0; + ent = buf->text_first; + while (ent) + { + lines += gtk_xtext_lines_taken (buf, ent); + ent = ent->next; + } + + buf->pagetop_ent = NULL; + buf->num_lines = lines; + gtk_xtext_adjustment_set (buf, fire_signal); +} + +/* find the n-th line in the linked list, this includes wrap calculations */ + +static textentry * +gtk_xtext_nth (GtkXText *xtext, int line, int *subline) +{ + int lines = 0; + textentry *ent; + + ent = xtext->buffer->text_first; + + /* -- optimization -- try to make a short-cut using the pagetop ent */ + if (xtext->buffer->pagetop_ent) + { + if (line == xtext->buffer->pagetop_line) + { + *subline = xtext->buffer->pagetop_subline; + return xtext->buffer->pagetop_ent; + } + if (line > xtext->buffer->pagetop_line) + { + /* lets start from the pagetop instead of the absolute beginning */ + ent = xtext->buffer->pagetop_ent; + lines = xtext->buffer->pagetop_line - xtext->buffer->pagetop_subline; + } + else if (line > xtext->buffer->pagetop_line - line) + { + /* move backwards from pagetop */ + ent = xtext->buffer->pagetop_ent; + lines = xtext->buffer->pagetop_line - xtext->buffer->pagetop_subline; + while (1) + { + if (lines <= line) + { + *subline = line - lines; + return ent; + } + ent = ent->prev; + if (!ent) + break; + lines -= g_slist_length (ent->sublines); + } + return NULL; + } + } + /* -- end of optimization -- */ + + while (ent) + { + lines += g_slist_length (ent->sublines); + if (lines > line) + { + *subline = g_slist_length (ent->sublines) - (lines - line); + return ent; + } + ent = ent->next; + } + return NULL; +} + +/* render enta (or an inclusive range enta->entb) */ + +static int +gtk_xtext_render_ents (GtkXText * xtext, textentry * enta, textentry * entb) +{ + textentry *ent, *orig_ent, *tmp_ent; + int line; + int lines_max; + int width; + int height; + int subline; + int drawing = FALSE; + + if (xtext->buffer->indent < MARGIN) + xtext->buffer->indent = MARGIN; /* 2 pixels is our left margin */ + + height = gdk_window_get_height (gtk_widget_get_window (GTK_WIDGET (xtext))); + width = gdk_window_get_width (gtk_widget_get_window (GTK_WIDGET (xtext))); + width -= MARGIN; + + if (width < 32 || height < xtext->fontsize || width < xtext->buffer->indent + 30) + return 0; + + lines_max = ((height + xtext->pixel_offset) / xtext->fontsize) + 1; + line = 0; + orig_ent = xtext->buffer->pagetop_ent; + subline = xtext->buffer->pagetop_subline; + + /* used before a complete page is in buffer */ + if (orig_ent == NULL) + orig_ent = xtext->buffer->text_first; + + /* check if enta is before the start of this page */ + if (entb) + { + tmp_ent = orig_ent; + while (tmp_ent) + { + if (tmp_ent == enta) + break; + if (tmp_ent == entb) + { + drawing = TRUE; + break; + } + tmp_ent = tmp_ent->next; + } + } + + ent = orig_ent; + while (ent) + { + if (entb && ent == enta) + drawing = TRUE; + + if (drawing || ent == entb || ent == enta) + { + gtk_xtext_reset (xtext, FALSE, TRUE); + line += gtk_xtext_render_line (xtext, ent, line, lines_max, + subline, width); + subline = 0; + xtext->jump_in_offset = 0; /* jump_in_offset only for the 1st */ + } else + { + if (ent == orig_ent) + { + line -= subline; + subline = 0; + } + line += g_slist_length (ent->sublines); + } + + if (ent == entb) + break; + + if (line >= lines_max) + break; + + ent = ent->next; + } + + /* space below last line */ + return (xtext->fontsize * line) - xtext->pixel_offset; +} + +/* render a whole page/window, starting from 'startline' */ + +static void +gtk_xtext_render_page (GtkXText * xtext) +{ + textentry *ent; + int line; + int lines_max; + int width; + int height; + int subline; + int startline = xtext->adj->value; + int pos, overlap; + + if(!gtk_widget_get_realized(GTK_WIDGET(xtext))) + return; + + if (xtext->buffer->indent < MARGIN) + xtext->buffer->indent = MARGIN; /* 2 pixels is our left margin */ + + gdk_drawable_get_size (GTK_WIDGET (xtext)->window, &width, &height); + + if (width < 34 || height < xtext->fontsize || width < xtext->buffer->indent + 32) + return; + + xtext->pixel_offset = (xtext->adj->value - startline) * xtext->fontsize; + + subline = line = 0; + ent = xtext->buffer->text_first; + + if (startline > 0) + ent = gtk_xtext_nth (xtext, startline, &subline); + + xtext->buffer->pagetop_ent = ent; + xtext->buffer->pagetop_subline = subline; + xtext->buffer->pagetop_line = startline; + + if (xtext->buffer->num_lines <= xtext->adj->page_size) + dontscroll (xtext->buffer); + + pos = xtext->adj->value * xtext->fontsize; + overlap = xtext->buffer->last_pixel_pos - pos; + xtext->buffer->last_pixel_pos = pos; + +#ifndef __APPLE__ + if (!xtext->pixmap && abs (overlap) < height) + { + GdkRectangle area; + + /* so the obscured regions are exposed */ + gdk_gc_set_exposures (xtext->fgc, TRUE); + if (overlap < 1) /* DOWN */ + { + int remainder; + + gdk_draw_drawable (xtext->draw_buf, xtext->fgc, xtext->draw_buf, + 0, -overlap, 0, 0, width, height + overlap); + remainder = ((height - xtext->font->descent) % xtext->fontsize) + + xtext->font->descent; + area.y = (height + overlap) - remainder; + area.height = remainder - overlap; + } else + { + gdk_draw_drawable (xtext->draw_buf, xtext->fgc, xtext->draw_buf, + 0, 0, 0, overlap, width, height - overlap); + area.y = 0; + area.height = overlap; + } + gdk_gc_set_exposures (xtext->fgc, FALSE); + + if (area.height > 0) + { + area.x = 0; + area.width = width; + gtk_xtext_paint (GTK_WIDGET (xtext), &area); + } + + return; + } +#endif + + width -= MARGIN; + lines_max = ((height + xtext->pixel_offset) / xtext->fontsize) + 1; + + while (ent) + { + gtk_xtext_reset (xtext, FALSE, TRUE); + line += gtk_xtext_render_line (xtext, ent, line, lines_max, + subline, width); + subline = 0; + + if (line >= lines_max) + break; + + ent = ent->next; + } + + line = (xtext->fontsize * line) - xtext->pixel_offset; + /* fill any space below the last line with our background GC */ + xtext_draw_bg (xtext, 0, line, width + MARGIN, height - line); + + /* draw the separator line */ + gtk_xtext_draw_sep (xtext, -1); +} + +void +gtk_xtext_refresh (GtkXText * xtext) +{ + if (gtk_widget_get_realized (GTK_WIDGET (xtext))) + { + gtk_xtext_render_page (xtext); + } +} + +static int +gtk_xtext_kill_ent (xtext_buffer *buffer, textentry *ent) +{ + int visible; + + /* Set visible to TRUE if this is the current buffer */ + /* and this ent shows up on the screen now */ + visible = buffer->xtext->buffer == buffer && + gtk_xtext_check_ent_visibility (buffer->xtext, ent, 0); + + if (ent == buffer->pagetop_ent) + buffer->pagetop_ent = NULL; + + if (ent == buffer->last_ent_start) + { + buffer->last_ent_start = ent->next; + buffer->last_offset_start = 0; + } + + if (ent == buffer->last_ent_end) + { + buffer->last_ent_start = NULL; + buffer->last_ent_end = NULL; + } + + if (buffer->marker_pos == ent) + { + /* Allow for "Marker line reset because exceeded scrollback limit. to appear. */ + buffer->marker_pos = ent->next; + buffer->marker_state = MARKER_RESET_BY_KILL; + } + + if (ent->marks) + { + gtk_xtext_search_textentry_del (buffer, ent); + } + + g_slist_free_full (ent->slp, g_free); + g_slist_free (ent->sublines); + + g_free (ent); + return visible; +} + +/* remove the topline from the list */ + +static void +gtk_xtext_remove_top (xtext_buffer *buffer) +{ + textentry *ent; + + ent = buffer->text_first; + if (!ent) + return; + buffer->num_lines -= g_slist_length (ent->sublines); + buffer->pagetop_line -= g_slist_length (ent->sublines); + buffer->last_pixel_pos -= (g_slist_length (ent->sublines) * buffer->xtext->fontsize); + buffer->text_first = ent->next; + if (buffer->text_first) + buffer->text_first->prev = NULL; + else + buffer->text_last = NULL; + + buffer->old_value -= g_slist_length (ent->sublines); + if (buffer->xtext->buffer == buffer) /* is it the current buffer? */ + { + buffer->xtext->adj->value -= g_slist_length (ent->sublines); + buffer->xtext->select_start_adj -= g_slist_length (ent->sublines); + } + + if (gtk_xtext_kill_ent (buffer, ent)) + { + if (!buffer->xtext->add_io_tag) + { + /* remove scrolling events */ + if (buffer->xtext->io_tag) + { + g_source_remove (buffer->xtext->io_tag); + buffer->xtext->io_tag = 0; + } + buffer->xtext->force_render = TRUE; + buffer->xtext->add_io_tag = g_timeout_add (REFRESH_TIMEOUT * 2, + (GSourceFunc) + gtk_xtext_render_page_timeout, + buffer->xtext); + } + } +} + +static void +gtk_xtext_remove_bottom (xtext_buffer *buffer) +{ + textentry *ent; + + ent = buffer->text_last; + if (!ent) + return; + buffer->num_lines -= g_slist_length (ent->sublines); + buffer->text_last = ent->prev; + if (buffer->text_last) + buffer->text_last->next = NULL; + else + buffer->text_first = NULL; + + if (gtk_xtext_kill_ent (buffer, ent)) + { + if (!buffer->xtext->add_io_tag) + { + /* remove scrolling events */ + if (buffer->xtext->io_tag) + { + g_source_remove (buffer->xtext->io_tag); + buffer->xtext->io_tag = 0; + } + buffer->xtext->force_render = TRUE; + buffer->xtext->add_io_tag = g_timeout_add (REFRESH_TIMEOUT * 2, + (GSourceFunc) + gtk_xtext_render_page_timeout, + buffer->xtext); + } + } +} + +/* If lines=0 => clear all */ + +void +gtk_xtext_clear (xtext_buffer *buf, int lines) +{ + textentry *next; + int marker_reset = FALSE; + + if (lines != 0) + { + if (lines < 0) + { + /* delete lines from bottom */ + lines *= -1; + while (lines) + { + if (buf->text_last == buf->marker_pos) + marker_reset = TRUE; + gtk_xtext_remove_bottom (buf); + lines--; + } + } + else + { + /* delete lines from top */ + while (lines) + { + if (buf->text_first == buf->marker_pos) + marker_reset = TRUE; + gtk_xtext_remove_top (buf); + lines--; + } + } + } + else + { + /* delete all */ + if (buf->search_found) + gtk_xtext_search_fini (buf); + if (buf->xtext->auto_indent) + buf->indent = MARGIN; + buf->scrollbar_down = TRUE; + buf->last_ent_start = NULL; + buf->last_ent_end = NULL; + buf->marker_pos = NULL; + if (buf->text_first) + marker_reset = TRUE; + dontscroll (buf); + + while (buf->text_first) + { + next = buf->text_first->next; + g_free (buf->text_first); + buf->text_first = next; + } + buf->text_last = NULL; + } + + if (buf->xtext->buffer == buf) + { + gtk_xtext_calc_lines (buf, TRUE); + gtk_xtext_refresh (buf->xtext); + } else + { + gtk_xtext_calc_lines (buf, FALSE); + } + + if (marker_reset) + buf->marker_state = MARKER_RESET_BY_CLEAR; +} + +static gboolean +gtk_xtext_check_ent_visibility (GtkXText * xtext, textentry *find_ent, int add) +{ + textentry *ent; + int lines; + xtext_buffer *buf = xtext->buffer; + int height; + + if (find_ent == NULL) + { + return FALSE; + } + + height = gdk_window_get_height (gtk_widget_get_window (GTK_WIDGET (xtext))); + + ent = buf->pagetop_ent; + /* If top line not completely displayed return FALSE */ + if (ent == find_ent && buf->pagetop_subline > 0) + { + return FALSE; + } + /* Loop through line positions looking for find_ent */ + lines = ((height + xtext->pixel_offset) / xtext->fontsize) + buf->pagetop_subline + add; + while (ent) + { + lines -= g_slist_length (ent->sublines); + if (lines <= 0) + { + return FALSE; + } + if (ent == find_ent) + { + return TRUE; + } + ent = ent->next; + } + + return FALSE; +} + +void +gtk_xtext_check_marker_visibility (GtkXText * xtext) +{ + if (gtk_xtext_check_ent_visibility (xtext, xtext->buffer->marker_pos, 1)) + xtext->buffer->marker_seen = TRUE; +} + +static void +gtk_xtext_unstrip_color (gint start, gint end, GSList *slp, GList **gl, gint maxo) +{ + gint off1, off2, curlen; + GSList *cursl; + offsets_t marks; + offlen_t *meta; + + off1 = 0; + curlen = 0; + cursl = slp; + while (cursl) + { + meta = cursl->data; + if (start < meta->len) + { + off1 = meta->off + start; + break; + } + curlen += meta->len; + start -= meta->len; + end -= meta->len; + cursl = g_slist_next (cursl); + } + + off2 = off1; + while (cursl) + { + meta = cursl->data; + if (end < meta->len) + { + off2 = meta->off + end; + break; + } + curlen += meta->len; + end -= meta->len; + cursl = g_slist_next (cursl); + } + if (!cursl) + { + off2 = maxo; + } + + marks.o.start = off1; + marks.o.end = off2; + *gl = g_list_append (*gl, GUINT_TO_POINTER (marks.u)); +} + +/* Search a single textentry for occurrence(s) of search arg string */ +static GList * +gtk_xtext_search_textentry (xtext_buffer *buf, textentry *ent) +{ + gchar *str; /* text string to be searched */ + GList *gl = NULL; + GSList *slp; + gint lstr; + + if (buf->search_text == NULL) + { + return gl; + } + + str = gtk_xtext_strip_color (ent->str, ent->str_len, buf->xtext->scratch_buffer, + &lstr, &slp, !buf->xtext->ignore_hidden); + + /* Regular-expression matching --- */ + if (buf->search_flags & regexp) + { + GMatchInfo *gmi; + gint start, end; + + if (buf->search_re == NULL) + { + return gl; + } + g_regex_match (buf->search_re, str, 0, &gmi); + while (g_match_info_matches (gmi)) + { + g_match_info_fetch_pos (gmi, 0, &start, &end); + gtk_xtext_unstrip_color (start, end, slp, &gl, ent->str_len); + g_match_info_next (gmi, NULL); + } + g_match_info_free (gmi); + + /* Non-regular-expression matching --- */ + } else { + gchar *hay, *pos; + gint lhay, off, len; + gint match = buf->search_flags & case_match; + + hay = match? g_strdup (str): g_utf8_casefold (str, lstr); + lhay = strlen (hay); + + for (pos = hay, len = lhay; len; + off += buf->search_lnee, pos = hay + off, len = lhay - off) + { + str = g_strstr_len (pos, len, buf->search_nee); + if (str == NULL) + { + break; + } + off = str - hay; + gtk_xtext_unstrip_color (off, off + buf->search_lnee, + slp, &gl, ent->str_len); + } + + g_free (hay); + } + + /* Common processing --- */ + g_slist_free_full (slp, g_free); + return gl; +} + +/* Add a list of found search results to an entry, maybe NULL */ +static void +gtk_xtext_search_textentry_add (xtext_buffer *buf, textentry *ent, GList *gl, gboolean pre) +{ + ent->marks = gl; + if (gl) + { + buf->search_found = (pre? g_list_prepend: g_list_append) (buf->search_found, ent); + if (pre == FALSE && buf->hintsearch == NULL) + { + buf->hintsearch = ent; + } + } +} + +/* Free all search information for a textentry */ +static void +gtk_xtext_search_textentry_del (xtext_buffer *buf, textentry *ent) +{ + g_list_free (ent->marks); + ent->marks = NULL; + if (buf->cursearch && buf->cursearch->data == ent) + { + buf->cursearch = NULL; + buf->curmark = NULL; + buf->curdata.u = 0; + } + if (buf->pagetop_ent == ent) + { + buf->pagetop_ent = NULL; + } + if (buf->hintsearch == ent) + { + buf->hintsearch = NULL; + } + buf->search_found = g_list_remove (buf->search_found, ent); +} + +/* Used only by glist_foreach */ +static void +gtk_xtext_search_textentry_fini (gpointer entp, gpointer dummy) +{ + textentry *ent = entp; + + g_list_free (ent->marks); + ent->marks = NULL; +} + +/* Free all search information for all textentrys and the xtext_buffer */ +static void +gtk_xtext_search_fini (xtext_buffer *buf) +{ + g_list_foreach (buf->search_found, gtk_xtext_search_textentry_fini, 0); + g_list_free (buf->search_found); + buf->search_found = NULL; + g_free (buf->search_text); + buf->search_text = NULL; + g_free (buf->search_nee); + buf->search_nee = NULL; + buf->search_flags = 0; + buf->cursearch = NULL; + buf->curmark = NULL; + /* but leave buf->curdata.u alone! */ + if (buf->search_re) + { + g_regex_unref (buf->search_re); + buf->search_re = NULL; + } +} + +/* Returns TRUE if the base search information exists and is still okay to use */ +static gboolean +gtk_xtext_search_init (xtext_buffer *buf, const gchar *text, gtk_xtext_search_flags flags, GError **perr) +{ + /* Of the five flags, backward and highlight_all do not need a new search */ + if (buf->search_found && + strcmp (buf->search_text, text) == 0 && + (buf->search_flags & case_match) == (flags & case_match) && + (buf->search_flags & follow) == (flags & follow) && + (buf->search_flags & regexp) == (flags & regexp)) + { + return TRUE; + } + buf->hintsearch = buf->cursearch? buf->cursearch->data: NULL; + gtk_xtext_search_fini (buf); + buf->search_text = g_strdup (text); + if (flags & regexp) + { + buf->search_re = g_regex_new (text, (flags & case_match)? 0: G_REGEX_CASELESS, 0, perr); + if (perr && *perr) + { + return FALSE; + } + } + else + { + if (flags & case_match) + { + buf->search_nee = g_strdup (text); + } + else + { + buf->search_nee = g_utf8_casefold (text, strlen (text)); + } + buf->search_lnee = strlen (buf->search_nee); + } + buf->search_flags = flags; + buf->cursearch = NULL; + buf->curmark = NULL; + /* but leave buf->curdata.u alone! */ + return FALSE; +} + +#define BACKWARD (flags & backward) +#define FIRSTLAST(lp) (BACKWARD? g_list_last(lp): g_list_first(lp)) +#define NEXTPREVIOUS(lp) (BACKWARD? g_list_previous(lp): g_list_next(lp)) +textentry * +gtk_xtext_search (GtkXText * xtext, const gchar *text, gtk_xtext_search_flags flags, GError **perr) +{ + textentry *ent = NULL; + xtext_buffer *buf = xtext->buffer; + GList *gl; + + if (buf->text_first == NULL) + { + return NULL; + } + + /* If the text arg is NULL, one of these has been toggled: highlight follow */ + if (text == NULL) /* Here on highlight or follow toggle */ + { + gint oldfollow = buf->search_flags & follow; + gint newfollow = flags & follow; + + /* If "Follow" has just been checked, search possible new textentries --- */ + if (newfollow && (newfollow != oldfollow)) + { + gl = g_list_last (buf->search_found); + ent = gl? gl->data: buf->text_first; + for (; ent; ent = ent->next) + { + GList *gl; + + gl = gtk_xtext_search_textentry (buf, ent); + gtk_xtext_search_textentry_add (buf, ent, gl, FALSE); + } + } + buf->search_flags = flags; + ent = buf->pagetop_ent; + } + + /* if the text arg is "", the reset button has been clicked or Control-Shift-F has been hit */ + else if (text[0] == 0) /* Let a null string do a reset. */ + { + gtk_xtext_search_fini (buf); + } + + /* If the text arg is neither NULL nor "", it's the search string */ + else + { + if (gtk_xtext_search_init (buf, text, flags, perr) == FALSE) /* If a new search: */ + { + if (perr && *perr) + { + return NULL; + } + for (ent = buf->text_first; ent; ent = ent->next) + { + GList *gl; + + gl = gtk_xtext_search_textentry (buf, ent); + gtk_xtext_search_textentry_add (buf, ent, gl, TRUE); + } + buf->search_found = g_list_reverse (buf->search_found); + } + + /* Now base search results are in place. */ + + if (buf->search_found) + { + /* If we're in the midst of moving among found items */ + if (buf->cursearch) + { + ent = buf->cursearch->data; + buf->curmark = NEXTPREVIOUS (buf->curmark); + if (buf->curmark == NULL) + { + /* We've returned all the matches for this textentry. */ + buf->cursearch = NEXTPREVIOUS (buf->cursearch); + if (buf->cursearch) + { + ent = buf->cursearch->data; + buf->curmark = FIRSTLAST (ent->marks); + } + else /* We've returned all the matches for all textentries */ + { + ent = NULL; + } + } + } + + /* If user changed the search, let's look starting where he was */ + else if (buf->hintsearch) + { + GList *mark; + offsets_t last, this; + /* + * If we already have a 'current' item from the last search, and if + * the first character of an occurrence on this line for this new search + * is within that former item, use the occurrence as current. + */ + ent = buf->hintsearch; + last.u = buf->curdata.u; + for (mark = ent->marks; mark; mark = mark->next) + { + this.u = GPOINTER_TO_UINT (mark->data); + if (this.o.start >= last.o.start && this.o.start < last.o.end) + break; + } + if (mark == NULL) + { + for (ent = buf->hintsearch; ent; ent = BACKWARD? ent->prev: ent->next) + if (ent->marks) + break; + mark = ent? FIRSTLAST (ent->marks): NULL; + } + buf->cursearch = g_list_find (buf->search_found, ent); + buf->curmark = mark; + } + + /* This is a fresh search */ + else + { + buf->cursearch = FIRSTLAST (buf->search_found); + ent = buf->cursearch->data; + buf->curmark = FIRSTLAST (ent->marks); + } + buf->curdata.u = (buf->curmark)? GPOINTER_TO_UINT (buf->curmark->data): 0; + } + } + buf->hintsearch = ent; + + if (!gtk_xtext_check_ent_visibility (xtext, ent, 1)) + { + GtkAdjustment *adj = xtext->adj; + float value; + + buf->pagetop_ent = NULL; + for (value = 0, ent = buf->text_first; + ent && ent != buf->hintsearch; ent = ent->next) + { + value += g_slist_length (ent->sublines); + } + if (value > adj->upper - adj->page_size) + { + value = adj->upper - adj->page_size; + } + else if ((flags & backward) && ent) + { + value -= adj->page_size - g_slist_length (ent->sublines); + if (value < 0) + { + value = 0; + } + } + gtk_adjustment_set_value (adj, value); + } + + gtk_widget_queue_draw (GTK_WIDGET (xtext)); + + return buf->hintsearch; +} +#undef BACKWARD +#undef FIRSTLAST +#undef NEXTPREVIOUS + +static int +gtk_xtext_render_page_timeout (GtkXText * xtext) +{ + GtkAdjustment *adj = xtext->adj; + + xtext->add_io_tag = 0; + + /* less than a complete page? */ + if (xtext->buffer->num_lines <= adj->page_size) + { + xtext->buffer->old_value = 0; + adj->value = 0; + gtk_xtext_render_page (xtext); + } else if (xtext->buffer->scrollbar_down) + { + g_signal_handler_block (xtext->adj, xtext->vc_signal_tag); + gtk_xtext_adjustment_set (xtext->buffer, FALSE); + gtk_adjustment_set_value (adj, adj->upper - adj->page_size); + g_signal_handler_unblock (xtext->adj, xtext->vc_signal_tag); + xtext->buffer->old_value = adj->value; + gtk_xtext_render_page (xtext); + } else + { + gtk_xtext_adjustment_set (xtext->buffer, TRUE); + if (xtext->force_render) + { + xtext->force_render = FALSE; + gtk_xtext_render_page (xtext); + } + } + + return 0; +} + +/* append a textentry to our linked list */ + +static void +gtk_xtext_append_entry (xtext_buffer *buf, textentry * ent, time_t stamp) +{ + int i; + + /* we don't like tabs */ + i = 0; + while (i < ent->str_len) + { + if (ent->str[i] == '\t') + ent->str[i] = ' '; + i++; + } + + ent->stamp = stamp; + if (stamp == 0) + ent->stamp = time (0); + ent->slp = NULL; + ent->str_width = gtk_xtext_text_width_ent (buf->xtext, ent); + ent->mark_start = -1; + ent->mark_end = -1; + ent->next = NULL; + ent->marks = NULL; + + if (ent->indent < MARGIN) + ent->indent = MARGIN; /* 2 pixels is the left margin */ + + /* append to our linked list */ + if (buf->text_last) + buf->text_last->next = ent; + else + buf->text_first = ent; + ent->prev = buf->text_last; + buf->text_last = ent; + + ent->sublines = NULL; + buf->num_lines += gtk_xtext_lines_taken (buf, ent); + + if ((buf->marker_pos == NULL || buf->marker_seen) && (buf->xtext->buffer != buf || + !gtk_window_has_toplevel_focus (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (buf->xtext)))))) + { + buf->marker_pos = ent; + buf->marker_state = MARKER_IS_SET; + dontscroll (buf); /* force scrolling off */ + buf->marker_seen = FALSE; + } + + if (buf->xtext->max_lines > 2 && buf->xtext->max_lines < buf->num_lines) + { + gtk_xtext_remove_top (buf); + } + + if (buf->xtext->buffer == buf) + { + /* this could be improved */ + if ((buf->num_lines - 1) <= buf->xtext->adj->page_size) + dontscroll (buf); + + if (!buf->xtext->add_io_tag) + { + /* remove scrolling events */ + if (buf->xtext->io_tag) + { + g_source_remove (buf->xtext->io_tag); + buf->xtext->io_tag = 0; + } + buf->xtext->add_io_tag = g_timeout_add (REFRESH_TIMEOUT * 2, + (GSourceFunc) + gtk_xtext_render_page_timeout, + buf->xtext); + } + } + if (buf->scrollbar_down) + { + buf->old_value = buf->num_lines - buf->xtext->adj->page_size; + if (buf->old_value < 0) + buf->old_value = 0; + } + if (buf->search_flags & follow) + { + GList *gl; + + gl = gtk_xtext_search_textentry (buf, ent); + gtk_xtext_search_textentry_add (buf, ent, gl, FALSE); + } +} + +/* the main two public functions */ + +void +gtk_xtext_append_indent (xtext_buffer *buf, + unsigned char *left_text, int left_len, + unsigned char *right_text, int right_len, + time_t stamp) +{ + textentry *ent; + unsigned char *str; + int space; + int tempindent; + int left_width; + + if (left_len == -1) + left_len = strlen (left_text); + + if (right_len == -1) + right_len = strlen (right_text); + + if (left_len + right_len + 2 >= sizeof (buf->xtext->scratch_buffer)) + right_len = sizeof (buf->xtext->scratch_buffer) - left_len - 2; + + if (right_text[right_len-1] == '\n') + right_len--; + + ent = g_malloc (left_len + right_len + 2 + sizeof (textentry)); + str = (unsigned char *) ent + sizeof (textentry); + + if (left_len) + memcpy (str, left_text, left_len); + str[left_len] = ' '; + if (right_len) + memcpy (str + left_len + 1, right_text, right_len); + str[left_len + 1 + right_len] = 0; + + left_width = gtk_xtext_text_width (buf->xtext, left_text, left_len); + + ent->left_len = left_len; + ent->str = str; + ent->str_len = left_len + 1 + right_len; + ent->indent = (buf->indent - left_width) - buf->xtext->space_width; + + /* This is copied into the scratch buffer later, double check math */ + g_assert (ent->str_len < sizeof (buf->xtext->scratch_buffer)); + + if (buf->time_stamp) + space = buf->xtext->stamp_width; + else + space = 0; + + /* do we need to auto adjust the separator position? */ + if (buf->xtext->auto_indent && + buf->indent < buf->xtext->max_auto_indent && + ent->indent < MARGIN + space) + { + tempindent = MARGIN + space + buf->xtext->space_width + left_width; + + if (tempindent > buf->indent) + buf->indent = tempindent; + + if (buf->indent > buf->xtext->max_auto_indent) + buf->indent = buf->xtext->max_auto_indent; + + gtk_xtext_fix_indent (buf); + gtk_xtext_recalc_widths (buf, FALSE); + + ent->indent = (buf->indent - left_width) - buf->xtext->space_width; + buf->xtext->force_render = TRUE; + } + + gtk_xtext_append_entry (buf, ent, stamp); +} + +void +gtk_xtext_append (xtext_buffer *buf, unsigned char *text, int len, time_t stamp) +{ + textentry *ent; + gboolean truncate = FALSE; + + if (len == -1) + len = strlen (text); + + if (text[len-1] == '\n') + len--; + + if (len >= sizeof (buf->xtext->scratch_buffer)) + { + len = sizeof (buf->xtext->scratch_buffer) - 1; + truncate = TRUE; + } + + ent = g_malloc (len + 1 + sizeof (textentry)); + ent->str = (unsigned char *) ent + sizeof (textentry); + ent->str_len = len; + if (len) + { + if (!truncate) + { + memcpy (ent->str, text, len); + ent->str[len] = '\0'; + } + else + { + safe_strcpy (ent->str, text, sizeof (buf->xtext->scratch_buffer)); + ent->str_len = strlen (ent->str); + } + } + ent->indent = 0; + ent->left_len = -1; + + gtk_xtext_append_entry (buf, ent, stamp); +} + +gboolean +gtk_xtext_is_empty (xtext_buffer *buf) +{ + return buf->text_first == NULL; +} + + +int +gtk_xtext_lastlog (xtext_buffer *out, xtext_buffer *search_area) +{ + textentry *ent; + int matches; + GList *gl; + + ent = search_area->text_first; + matches = 0; + + while (ent) + { + gl = gtk_xtext_search_textentry (out, ent); + if (gl) + { + matches++; + /* copy the text over */ + if (search_area->xtext->auto_indent) + { + gtk_xtext_append_indent (out, ent->str, ent->left_len, + ent->str + ent->left_len + 1, + ent->str_len - ent->left_len - 1, 0); + } + else + { + gtk_xtext_append (out, ent->str, ent->str_len, 0); + } + + if (out->text_last) + { + out->text_last->stamp = ent->stamp; + gtk_xtext_search_textentry_add (out, out->text_last, gl, TRUE); + } + } + ent = ent->next; + } + out->search_found = g_list_reverse (out->search_found); + + return matches; +} + +void +gtk_xtext_foreach (xtext_buffer *buf, GtkXTextForeach func, void *data) +{ + textentry *ent = buf->text_first; + + while (ent) + { + (*func) (buf->xtext, ent->str, data); + ent = ent->next; + } +} + +void +gtk_xtext_set_indent (GtkXText *xtext, gboolean indent) +{ + xtext->auto_indent = indent; +} + +void +gtk_xtext_set_max_indent (GtkXText *xtext, int max_auto_indent) +{ + xtext->max_auto_indent = max_auto_indent; +} + +void +gtk_xtext_set_max_lines (GtkXText *xtext, int max_lines) +{ + xtext->max_lines = max_lines; +} + +void +gtk_xtext_set_show_marker (GtkXText *xtext, gboolean show_marker) +{ + xtext->marker = show_marker; +} + +void +gtk_xtext_set_show_separator (GtkXText *xtext, gboolean show_separator) +{ + xtext->separator = show_separator; +} + +void +gtk_xtext_set_thin_separator (GtkXText *xtext, gboolean thin_separator) +{ + xtext->thinline = thin_separator; +} + +void +gtk_xtext_set_time_stamp (xtext_buffer *buf, gboolean time_stamp) +{ + buf->time_stamp = time_stamp; +} + +void +gtk_xtext_set_urlcheck_function (GtkXText *xtext, int (*urlcheck_function) (GtkWidget *, char *)) +{ + xtext->urlcheck_function = urlcheck_function; +} + +void +gtk_xtext_set_wordwrap (GtkXText *xtext, gboolean wordwrap) +{ + xtext->wordwrap = wordwrap; +} + +void +gtk_xtext_set_marker_last (session *sess) +{ + xtext_buffer *buf = sess->res->buffer; + + buf->marker_pos = buf->text_last; + buf->marker_state = MARKER_IS_SET; +} + +void +gtk_xtext_reset_marker_pos (GtkXText *xtext) +{ + if (xtext->buffer->marker_pos) + { + xtext->buffer->marker_pos = NULL; + dontscroll (xtext->buffer); /* force scrolling off */ + gtk_xtext_render_page (xtext); + xtext->buffer->marker_state = MARKER_RESET_MANUALLY; + } +} + +int +gtk_xtext_moveto_marker_pos (GtkXText *xtext) +{ + gdouble value = 0; + xtext_buffer *buf = xtext->buffer; + textentry *ent = buf->text_first; + GtkAdjustment *adj = xtext->adj; + + if (buf->marker_pos == NULL) + return buf->marker_state; + + if (gtk_xtext_check_ent_visibility (xtext, buf->marker_pos, 1) == FALSE) + { + while (ent) + { + if (ent == buf->marker_pos) + break; + value += g_slist_length (ent->sublines); + ent = ent->next; + } + if (value >= adj->value && value < adj->value + adj->page_size) + return MARKER_IS_SET; + value -= adj->page_size / 2; + if (value < 0) + value = 0; + if (value > adj->upper - adj->page_size) + value = adj->upper - adj->page_size; + gtk_adjustment_set_value (adj, value); + gtk_xtext_render_page (xtext); + } + + /* If we previously lost marker position to scrollback limit -- */ + if (buf->marker_pos == buf->text_first && + buf->marker_state == MARKER_RESET_BY_KILL) + return MARKER_RESET_BY_KILL; + else + return MARKER_IS_SET; +} + +void +gtk_xtext_buffer_show (GtkXText *xtext, xtext_buffer *buf, int render) +{ + int w, h; + + buf->xtext = xtext; + + if (xtext->buffer == buf) + return; + +/*printf("text_buffer_show: xtext=%p buffer=%p\n", xtext, buf);*/ + + if (xtext->add_io_tag) + { + g_source_remove (xtext->add_io_tag); + xtext->add_io_tag = 0; + } + + if (xtext->io_tag) + { + g_source_remove (xtext->io_tag); + xtext->io_tag = 0; + } + + if (!gtk_widget_get_realized (GTK_WIDGET (xtext))) + gtk_widget_realize (GTK_WIDGET (xtext)); + + h = gdk_window_get_height (gtk_widget_get_window (GTK_WIDGET (xtext))); + w = gdk_window_get_width (gtk_widget_get_window (GTK_WIDGET (xtext))); + + /* after a font change */ + if (buf->needs_recalc) + { + buf->needs_recalc = FALSE; + gtk_xtext_recalc_widths (buf, TRUE); + } + + /* now change to the new buffer */ + xtext->buffer = buf; + dontscroll (buf); /* force scrolling off */ + xtext->adj->value = buf->old_value; + xtext->adj->upper = buf->num_lines; + + /* if the scrollbar was down, keep it down */ + if (xtext->buffer->scrollbar_down && xtext->adj->value < + xtext->adj->upper - xtext->adj->page_size) + { + xtext->adj->value = xtext->adj->upper - xtext->adj->page_size; + } + + if (xtext->adj->upper == 0) + xtext->adj->upper = 1; + /* sanity check */ + else if (xtext->adj->value > xtext->adj->upper - xtext->adj->page_size) + { + /*buf->pagetop_ent = NULL;*/ + xtext->adj->value = xtext->adj->upper - xtext->adj->page_size; + if (xtext->adj->value < 0) + xtext->adj->value = 0; + } + + if (render) + { + /* did the window change size since this buffer was last shown? */ + if (buf->window_width != w) + { + buf->window_width = w; + buf->window_height = h; + gtk_xtext_calc_lines (buf, FALSE); + if (buf->scrollbar_down) + gtk_adjustment_set_value (xtext->adj, xtext->adj->upper - + xtext->adj->page_size); + } else if (buf->window_height != h) + { + buf->window_height = h; + buf->pagetop_ent = NULL; + if (buf->scrollbar_down) + xtext->adj->value = xtext->adj->upper; + gtk_xtext_adjustment_set (buf, FALSE); + } + + gtk_xtext_render_page (xtext); + gtk_adjustment_changed (xtext->adj); + } +} + +xtext_buffer * +gtk_xtext_buffer_new (GtkXText *xtext) +{ + xtext_buffer *buf; + + buf = g_new0 (xtext_buffer, 1); + buf->old_value = -1; + buf->xtext = xtext; + buf->scrollbar_down = TRUE; + buf->indent = xtext->space_width * 2; + dontscroll (buf); + + return buf; +} + +void +gtk_xtext_buffer_free (xtext_buffer *buf) +{ + textentry *ent, *next; + + if (buf->xtext->buffer == buf) + buf->xtext->buffer = buf->xtext->orig_buffer; + + if (buf->xtext->selection_buffer == buf) + buf->xtext->selection_buffer = NULL; + + if (buf->search_found) + { + gtk_xtext_search_fini (buf); + } + + ent = buf->text_first; + while (ent) + { + next = ent->next; + g_free (ent); + ent = next; + } + + g_free (buf); +} diff --git a/hexchat/src/fe-gtk/xtext.h b/hexchat/src/fe-gtk/xtext.h new file mode 100644 index 0000000..18d769f --- /dev/null +++ b/hexchat/src/fe-gtk/xtext.h @@ -0,0 +1,295 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef HEXCHAT_XTEXT_H +#define HEXCHAT_XTEXT_H + +#include <gtk/gtk.h> + +#define GTK_TYPE_XTEXT (gtk_xtext_get_type ()) +#define GTK_XTEXT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GTK_TYPE_XTEXT, GtkXText)) +#define GTK_XTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_XTEXT, GtkXTextClass)) +#define GTK_IS_XTEXT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GTK_TYPE_XTEXT)) +#define GTK_IS_XTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_XTEXT)) +#define GTK_XTEXT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_XTEXT, GtkXTextClass)) + +#define ATTR_BOLD '\002' +#define ATTR_COLOR '\003' +#define ATTR_BLINK '\006' +#define ATTR_BEEP '\007' +#define ATTR_HIDDEN '\010' +#define ATTR_ITALICS2 '\011' +#define ATTR_RESET '\017' +#define ATTR_REVERSE '\026' +#define ATTR_ITALICS '\035' +#define ATTR_STRIKETHROUGH '\036' +#define ATTR_UNDERLINE '\037' + +/* these match palette.h */ +#define XTEXT_MIRC_COLS 32 +#define XTEXT_COLS 37 /* 32 plus 5 for extra stuff below */ +#define XTEXT_MARK_FG 32 /* for marking text */ +#define XTEXT_MARK_BG 33 +#define XTEXT_FG 34 +#define XTEXT_BG 35 +#define XTEXT_MARKER 36 /* for marker line */ +#define XTEXT_MAX_COLOR 41 + +typedef struct _GtkXText GtkXText; +typedef struct _GtkXTextClass GtkXTextClass; +typedef struct textentry textentry; + +/* + * offsets_t is used for retaining search information. + * It is stored in the 'data' member of a GList, + * as chained from ent->marks. It saves starting and + * ending+1 offset of a found occurrence. + */ +typedef union offsets_u { + struct offsets_s { + guint16 start; + guint16 end; + } o; + guint32 u; +} offsets_t; + +typedef enum marker_reset_reason_e { + MARKER_WAS_NEVER_SET, + MARKER_IS_SET, + MARKER_RESET_MANUALLY, + MARKER_RESET_BY_KILL, + MARKER_RESET_BY_CLEAR +} marker_reset_reason; + +typedef struct { + GtkXText *xtext; /* attached to this widget */ + + gfloat old_value; /* last known adj->value */ + textentry *text_first; + textentry *text_last; + + textentry *last_ent_start; /* this basically describes the last rendered */ + textentry *last_ent_end; /* selection. */ + int last_offset_start; + int last_offset_end; + + int last_pixel_pos; + + int pagetop_line; + int pagetop_subline; + textentry *pagetop_ent; /* what's at xtext->adj->value */ + + int num_lines; + int indent; /* position of separator (pixels) from left */ + + textentry *marker_pos; + marker_reset_reason marker_state; + + int window_width; /* window size when last rendered. */ + int window_height; + + unsigned int time_stamp:1; + unsigned int scrollbar_down:1; + unsigned int needs_recalc:1; + unsigned int marker_seen:1; + + GList *search_found; /* list of textentries where search found strings */ + gchar *search_text; /* desired text to search for */ + gchar *search_nee; /* prepared needle to look in haystack for */ + gint search_lnee; /* its length */ + gtk_xtext_search_flags search_flags; /* match, bwd, highlight */ + GList *cursearch; /* GList whose 'data' pts to current textentry */ + GList *curmark; /* current item in ent->marks */ + offsets_t curdata; /* current offset info, from *curmark */ + GRegex *search_re; /* Compiled regular expression */ + textentry *hintsearch; /* textentry found for last search */ +} xtext_buffer; + +struct _GtkXText +{ + GtkWidget widget; + + xtext_buffer *buffer; + xtext_buffer *orig_buffer; + xtext_buffer *selection_buffer; + + GtkAdjustment *adj; + GdkPixmap *pixmap; /* 0 = use palette[19] */ + GdkDrawable *draw_buf; /* points to ->window */ + GdkCursor *hand_cursor; + GdkCursor *resize_cursor; + + int pixel_offset; /* amount of pixels the top line is chopped by */ + + int last_win_x; + int last_win_y; + int last_win_h; + int last_win_w; + + GdkGC *bgc; /* backing pixmap */ + GdkGC *fgc; /* text foreground color */ + GdkGC *light_gc; /* sep bar */ + GdkGC *dark_gc; + GdkGC *thin_gc; + GdkGC *marker_gc; + GdkColor palette[XTEXT_COLS]; + + gint io_tag; /* for delayed refresh events */ + gint add_io_tag; /* "" when adding new text */ + gint scroll_tag; /* marking-scroll timeout */ + gulong vc_signal_tag; /* signal handler for "value_changed" adj */ + + int select_start_adj; /* the adj->value when the selection started */ + int select_start_x; + int select_start_y; + int select_end_x; + int select_end_y; + + int max_lines; + + int col_fore; + int col_back; + + int depth; /* gdk window depth */ + + char num[8]; /* for parsing mirc color */ + int nc; /* offset into xtext->num */ + + textentry *hilight_ent; + int hilight_start; + int hilight_end; + + guint16 fontwidth[128]; /* each char's width, only the ASCII ones */ + + struct pangofont + { + PangoFontDescription *font; + int ascent; + int descent; + } *font, pango_font; + PangoLayout *layout; + + int fontsize; + int space_width; /* width (pixels) of the space " " character */ + int stamp_width; /* width of "[88:88:88]" */ + int max_auto_indent; + + unsigned char scratch_buffer[4096]; + + int (*urlcheck_function) (GtkWidget * xtext, char *word); + + int jump_out_offset; /* point at which to stop rendering */ + int jump_in_offset; /* "" start rendering */ + + int ts_x; /* ts origin for ->bgc GC */ + int ts_y; + + int clip_x; /* clipping (x directions) */ + int clip_x2; /* from x to x2 */ + + int clip_y; /* clipping (y directions) */ + int clip_y2; /* from y to y2 */ + + /* current text states */ + unsigned int underline:1; + unsigned int strikethrough:1; + unsigned int hidden:1; + + /* text parsing states */ + unsigned int parsing_backcolor:1; + unsigned int parsing_color:1; + unsigned int backcolor:1; + + /* various state information */ + unsigned int moving_separator:1; + unsigned int word_select:1; + unsigned int line_select:1; + unsigned int button_down:1; + unsigned int dont_render:1; + unsigned int dont_render2:1; + unsigned int cursor_hand:1; + unsigned int cursor_resize:1; + unsigned int skip_border_fills:1; + unsigned int skip_stamp:1; + unsigned int mark_stamp:1; /* Cut&Paste with stamps? */ + unsigned int force_stamp:1; /* force redrawing it */ + unsigned int render_hilights_only:1; + unsigned int in_hilight:1; + unsigned int un_hilight:1; + unsigned int recycle:1; + unsigned int force_render:1; + unsigned int color_paste:1; /* CTRL was pressed when selection finished */ + + /* settings/prefs */ + unsigned int auto_indent:1; + unsigned int thinline:1; + unsigned int marker:1; + unsigned int separator:1; + unsigned int wordwrap:1; + unsigned int ignore_hidden:1; /* rawlog uses this */ +}; + +struct _GtkXTextClass +{ + GtkWidgetClass parent_class; + void (*word_click) (GtkXText * xtext, char *word, GdkEventButton * event); + void (*set_scroll_adjustments) (GtkXText *xtext, GtkAdjustment *hadj, GtkAdjustment *vadj); +}; + +GtkWidget *gtk_xtext_new (GdkColor palette[], int separator); +void gtk_xtext_append (xtext_buffer *buf, unsigned char *text, int len, time_t stamp); +void gtk_xtext_append_indent (xtext_buffer *buf, + unsigned char *left_text, int left_len, + unsigned char *right_text, int right_len, + time_t stamp); +int gtk_xtext_set_font (GtkXText *xtext, char *name); +void gtk_xtext_set_background (GtkXText * xtext, GdkPixmap * pixmap); +void gtk_xtext_set_palette (GtkXText * xtext, GdkColor palette[]); +void gtk_xtext_clear (xtext_buffer *buf, int lines); +void gtk_xtext_save (GtkXText * xtext, int fh); +void gtk_xtext_refresh (GtkXText * xtext); +int gtk_xtext_lastlog (xtext_buffer *out, xtext_buffer *search_area); +textentry *gtk_xtext_search (GtkXText * xtext, const gchar *text, gtk_xtext_search_flags flags, GError **err); +void gtk_xtext_reset_marker_pos (GtkXText *xtext); +int gtk_xtext_moveto_marker_pos (GtkXText *xtext); +void gtk_xtext_check_marker_visibility(GtkXText *xtext); +void gtk_xtext_set_marker_last (session *sess); + +gboolean gtk_xtext_is_empty (xtext_buffer *buf); +typedef void (*GtkXTextForeach) (GtkXText *xtext, unsigned char *text, void *data); +void gtk_xtext_foreach (xtext_buffer *buf, GtkXTextForeach func, void *data); + +void gtk_xtext_set_error_function (GtkXText *xtext, void (*error_function) (int)); +void gtk_xtext_set_indent (GtkXText *xtext, gboolean indent); +void gtk_xtext_set_max_indent (GtkXText *xtext, int max_auto_indent); +void gtk_xtext_set_max_lines (GtkXText *xtext, int max_lines); +void gtk_xtext_set_show_marker (GtkXText *xtext, gboolean show_marker); +void gtk_xtext_set_show_separator (GtkXText *xtext, gboolean show_separator); +void gtk_xtext_set_thin_separator (GtkXText *xtext, gboolean thin_separator); +void gtk_xtext_set_time_stamp (xtext_buffer *buf, gboolean timestamp); +void gtk_xtext_set_urlcheck_function (GtkXText *xtext, int (*urlcheck_function) (GtkWidget *, char *)); +void gtk_xtext_set_wordwrap (GtkXText *xtext, gboolean word_wrap); + +xtext_buffer *gtk_xtext_buffer_new (GtkXText *xtext); +void gtk_xtext_buffer_free (xtext_buffer *buf); +void gtk_xtext_buffer_show (GtkXText *xtext, xtext_buffer *buf, int render); +void gtk_xtext_copy_selection (GtkXText *xtext); +GType gtk_xtext_get_type (void); + +#endif diff --git a/hexchat/src/fe-text/fe-text.c b/hexchat/src/fe-text/fe-text.c new file mode 100644 index 0000000..3673a81 --- /dev/null +++ b/hexchat/src/fe-text/fe-text.c @@ -0,0 +1,920 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "config.h" + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#ifdef HAVE_STRINGS_H +#include <strings.h> +#endif +#ifdef WIN32 +#include <io.h> +#define STDIN_FILENO 0 +#define STDOUT_FILENO 1 +#else +#include <unistd.h> +#include <sys/time.h> +#endif +#include <sys/types.h> +#include <ctype.h> +#include <glib-object.h> +#include "../common/hexchat.h" +#include "../common/hexchatc.h" +#include "../common/cfgfiles.h" +#include "../common/outbound.h" +#include "../common/util.h" +#include "../common/fe.h" +#include "fe-text.h" + + +static int done = FALSE; /* finished ? */ + + +static void +send_command (char *cmd) +{ + handle_multiline (current_tab, cmd, TRUE, FALSE); +} + +static gboolean +handle_line (GIOChannel *channel, GIOCondition cond, gpointer data) +{ + + gchar *str_return; + gsize length, terminator_pos; + GError *error = NULL; + GIOStatus result; + + result = g_io_channel_read_line(channel, &str_return, &length, &terminator_pos, &error); + if (result == G_IO_STATUS_ERROR || result == G_IO_STATUS_EOF) { + return FALSE; + } + else { + send_command(str_return); + g_free(str_return); + return TRUE; + } +} + +static int done_intro = 0; + +void +fe_new_window (struct session *sess, int focus) +{ + char buf[512]; + + current_sess = sess; + + if (!sess->server->front_session) + sess->server->front_session = sess; + if (!sess->server->server_session) + sess->server->server_session = sess; + if (!current_tab || focus) + current_tab = sess; + + if (done_intro) + return; + done_intro = 1; + + g_snprintf (buf, sizeof (buf), + "\n" + " \017HexChat-Text \00310"PACKAGE_VERSION"\n" + " \017Running on \00310%s\n", + get_sys_str (1)); + fe_print_text (sess, buf, 0, FALSE); + + fe_print_text (sess, "\n\nCompiled in Features\0032:\017 " +#ifdef USE_PLUGIN + "Plugin " +#endif +#ifdef ENABLE_NLS + "NLS " +#endif +#ifdef USE_OPENSSL + "OpenSSL " +#endif + "\n\n", 0, FALSE); + fflush (stdout); +} + +static int +get_stamp_str (time_t tim, char *dest, int size) +{ + return strftime_validated (dest, size, prefs.hex_stamp_text_format, localtime (&tim)); +} + +static int +timecat (char *buf, time_t stamp) +{ + char stampbuf[64]; + + /* set the stamp to the current time if not provided */ + if (!stamp) + stamp = time (0); + + get_stamp_str (stamp, stampbuf, sizeof (stampbuf)); + strcat (buf, stampbuf); + return strlen (stampbuf); +} + +/* Windows doesn't handle ANSI codes in cmd.exe, need to not display them */ +#ifndef WIN32 +/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */ +static const short colconv[] = { 0, 7, 4, 2, 1, 3, 5, 11, 13, 12, 6, 16, 14, 15, 10, 7 }; + +void +fe_print_text (struct session *sess, char *text, time_t stamp, + gboolean no_activity) +{ + int dotime = FALSE; + char num[8]; + int reverse = 0, under = 0, bold = 0, + comma, k, i = 0, j = 0, len = strlen (text); + unsigned char *newtext = g_malloc (len + 1024); + + if (prefs.hex_stamp_text) + { + newtext[0] = 0; + j += timecat (newtext, stamp); + } + while (i < len) + { + if (dotime && text[i] != 0) + { + dotime = FALSE; + newtext[j] = 0; + j += timecat (newtext, stamp); + } + switch (text[i]) + { + case 3: + i++; + if (!isdigit (text[i])) + { + newtext[j] = 27; + j++; + newtext[j] = '['; + j++; + newtext[j] = 'm'; + j++; + goto endloop; + } + k = 0; + comma = FALSE; + while (i < len) + { + if (text[i] >= '0' && text[i] <= '9' && k < 2) + { + num[k] = text[i]; + k++; + } else + { + int col, mirc; + num[k] = 0; + newtext[j] = 27; + j++; + newtext[j] = '['; + j++; + if (k == 0) + { + newtext[j] = 'm'; + j++; + } else + { + if (comma) + col = 40; + else + col = 30; + mirc = atoi (num); + mirc = colconv[mirc % G_N_ELEMENTS(colconv)]; + if (mirc > 9) + { + mirc += 50; + sprintf ((char *) &newtext[j], "%dm", mirc + col); + } else + { + sprintf ((char *) &newtext[j], "%dm", mirc + col); + } + j = strlen (newtext); + } + switch (text[i]) + { + case ',': + comma = TRUE; + break; + default: + goto endloop; + } + k = 0; + } + i++; + } + break; + /* don't actually want hidden text */ + case '\010': /* hidden */ + break; + case '\026': /* REVERSE */ + if (reverse) + { + reverse = FALSE; + strcpy (&newtext[j], "\033[27m"); + } else + { + reverse = TRUE; + strcpy (&newtext[j], "\033[7m"); + } + j = strlen (newtext); + break; + case '\037': /* underline */ + if (under) + { + under = FALSE; + strcpy (&newtext[j], "\033[24m"); + } else + { + under = TRUE; + strcpy (&newtext[j], "\033[4m"); + } + j = strlen (newtext); + break; + case '\002': /* bold */ + if (bold) + { + bold = FALSE; + strcpy (&newtext[j], "\033[22m"); + } else + { + bold = TRUE; + strcpy (&newtext[j], "\033[1m"); + } + j = strlen (newtext); + break; + case '\007': + if (!prefs.hex_input_filter_beep) + { + newtext[j] = text[i]; + j++; + } + break; + case '\017': /* reset all */ + strcpy (&newtext[j], "\033[m"); + j += 3; + reverse = FALSE; + bold = FALSE; + under = FALSE; + break; + case '\t': + newtext[j] = ' '; + j++; + break; + case '\n': + newtext[j] = '\r'; + j++; + if (prefs.hex_stamp_text) + dotime = TRUE; + default: + newtext[j] = text[i]; + j++; + } + i++; + endloop: + ; + } + + /* make sure last character is a new line */ + if (text[i-1] != '\n') + newtext[j++] = '\n'; + + newtext[j] = 0; + write (STDOUT_FILENO, newtext, j); + g_free (newtext); +} +#else +/* The win32 version for cmd.exe */ +void +fe_print_text (struct session *sess, char *text, time_t stamp, + gboolean no_activity) +{ + int dotime = FALSE; + int comma, k, i = 0, j = 0, len = strlen (text); + + unsigned char *newtext = g_malloc (len + 1024); + + if (prefs.hex_stamp_text) + { + newtext[0] = 0; + j += timecat (newtext, stamp); + } + while (i < len) + { + if (dotime && text[i] != 0) + { + dotime = FALSE; + newtext[j] = 0; + j += timecat (newtext, stamp); + } + switch (text[i]) + { + case 3: + i++; + if (!isdigit (text[i])) + { + goto endloop; + } + k = 0; + comma = FALSE; + while (i < len) + { + if (text[i] >= '0' && text[i] <= '9' && k < 2) + { + k++; + } else + { + switch (text[i]) + { + case ',': + comma = TRUE; + break; + default: + goto endloop; + } + k = 0; + + } + i++; + } + break; + /* don't actually want hidden text */ + case '\010': /* hidden */ + case '\026': /* REVERSE */ + case '\037': /* underline */ + case '\002': /* bold */ + case '\017': /* reset all */ + break; + case '\007': + if (!prefs.hex_input_filter_beep) + { + newtext[j] = text[i]; + j++; + } + break; + case '\t': + newtext[j] = ' '; + j++; + break; + case '\n': + newtext[j] = '\r'; + j++; + if (prefs.hex_stamp_text) + dotime = TRUE; + default: + newtext[j] = text[i]; + j++; + } + i++; + endloop: + ; + } + + /* make sure last character is a new line */ + if (text[i-1] != '\n') + newtext[j++] = '\n'; + + newtext[j] = 0; + write (STDOUT_FILENO, newtext, j); + g_free (newtext); +} +#endif + +void +fe_timeout_remove (int tag) +{ + g_source_remove (tag); +} + +int +fe_timeout_add (int interval, void *callback, void *userdata) +{ + return g_timeout_add (interval, (GSourceFunc) callback, userdata); +} + +int +fe_timeout_add_seconds (int interval, void *callback, void *userdata) +{ + return g_timeout_add_seconds (interval, (GSourceFunc) callback, userdata); +} + +void +fe_input_remove (int tag) +{ + g_source_remove (tag); +} + +int +fe_input_add (int sok, int flags, void *func, void *data) +{ + int tag, type = 0; + GIOChannel *channel; + +#ifdef G_OS_WIN32 + if (flags & FIA_FD) + channel = g_io_channel_win32_new_fd (sok); + else + channel = g_io_channel_win32_new_socket (sok); +#else + channel = g_io_channel_unix_new (sok); +#endif + + if (flags & FIA_READ) + type |= G_IO_IN | G_IO_HUP | G_IO_ERR; + if (flags & FIA_WRITE) + type |= G_IO_OUT | G_IO_ERR; + if (flags & FIA_EX) + type |= G_IO_PRI; + + tag = g_io_add_watch (channel, type, (GIOFunc) func, data); + g_io_channel_unref (channel); + + return tag; +} + +/* === command-line parameter parsing : requires glib 2.6 === */ + +static char *arg_cfgdir = NULL; +static gint arg_show_autoload = 0; +static gint arg_show_config = 0; +static gint arg_show_version = 0; + +static const GOptionEntry gopt_entries[] = +{ + {"no-auto", 'a', 0, G_OPTION_ARG_NONE, &arg_dont_autoconnect, N_("Don't auto connect to servers"), NULL}, + {"cfgdir", 'd', 0, G_OPTION_ARG_STRING, &arg_cfgdir, N_("Use a different config directory"), "PATH"}, + {"no-plugins", 'n', 0, G_OPTION_ARG_NONE, &arg_skip_plugins, N_("Don't auto load any plugins"), NULL}, + {"plugindir", 'p', 0, G_OPTION_ARG_NONE, &arg_show_autoload, N_("Show plugin/script auto-load directory"), NULL}, + {"configdir", 'u', 0, G_OPTION_ARG_NONE, &arg_show_config, N_("Show user config directory"), NULL}, + {"url", 0, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_STRING, &arg_url, N_("Open an irc://server:port/channel URL"), "URL"}, + {"version", 'v', 0, G_OPTION_ARG_NONE, &arg_show_version, N_("Show version information"), NULL}, + {G_OPTION_REMAINING, '\0', 0, G_OPTION_ARG_STRING_ARRAY, &arg_urls, N_("Open an irc://server:port/channel?key URL"), "URL"}, + {NULL} +}; + +int +fe_args (int argc, char *argv[]) +{ + GError *error = NULL; + GOptionContext *context; + +#ifdef ENABLE_NLS + bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); + bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); + textdomain (GETTEXT_PACKAGE); +#endif + + context = g_option_context_new (NULL); + g_option_context_add_main_entries (context, gopt_entries, GETTEXT_PACKAGE); + g_option_context_parse (context, &argc, &argv, &error); + + if (error) + { + if (error->message) + printf ("%s\n", error->message); + return 1; + } + + g_option_context_free (context); + + if (arg_show_version) + { + printf (PACKAGE_NAME" "PACKAGE_VERSION"\n"); + return 0; + } + + if (arg_show_autoload) + { +#ifndef USE_PLUGIN + printf (PACKAGE_NAME" was build without plugin support\n"); + return 1; +#else +#ifdef WIN32 + /* see the chdir() below */ + char *sl, *exe = g_strdup (argv[0]); + sl = strrchr (exe, '\\'); + if (sl) + { + *sl = 0; + printf ("%s\\plugins\n", exe); + } + g_free (exe); +#else + printf ("%s\n", HEXCHATLIBDIR); +#endif +#endif + return 0; + } + + if (arg_show_config) + { + printf ("%s\n", get_xdir ()); + return 0; + } + + if (arg_cfgdir) /* we want filesystem encoding */ + { + g_free (xdir); + xdir = strdup (arg_cfgdir); + if (xdir[strlen (xdir) - 1] == '/') + xdir[strlen (xdir) - 1] = 0; + g_free (arg_cfgdir); + } + + return -1; +} + +void +fe_init (void) +{ + /* the following should be default generated, not enfoced in binary */ + prefs.hex_gui_tab_server = 0; + prefs.hex_gui_autoopen_dialog = 0; + /* except for these, there is no lag meter, there is no server list */ + prefs.hex_gui_lagometer = 0; + prefs.hex_gui_slist_skip = 1; +} + +void +fe_main (void) +{ + GIOChannel *keyboard_input; + + main_loop = g_main_loop_new(NULL, FALSE); + + /* Keyboard Entry Setup */ +#ifdef G_OS_WIN32 + keyboard_input = g_io_channel_win32_new_fd(STDIN_FILENO); +#else + keyboard_input = g_io_channel_unix_new(STDIN_FILENO); +#endif + + g_io_add_watch(keyboard_input, G_IO_IN, handle_line, NULL); + + g_main_loop_run(main_loop); + + return; +} + +void +fe_exit (void) +{ + done = TRUE; + g_main_loop_quit(main_loop); +} + +void +fe_new_server (struct server *serv) +{ +} + +void +fe_message (char *msg, int flags) +{ + puts (msg); +} + +void +fe_close_window (struct session *sess) +{ + session_free (sess); + done = TRUE; +} + +void +fe_beep (session *sess) +{ + putchar (7); +} + +void +fe_add_rawlog (struct server *serv, char *text, int len, int outbound) +{ +} +void +fe_set_topic (struct session *sess, char *topic, char *stripped_topic) +{ +} +void +fe_cleanup (void) +{ +} +void +fe_set_tab_color (struct session *sess, tabcolor col) +{ +} +void +fe_update_mode_buttons (struct session *sess, char mode, char sign) +{ +} +void +fe_update_channel_key (struct session *sess) +{ +} +void +fe_update_channel_limit (struct session *sess) +{ +} +int +fe_is_chanwindow (struct server *serv) +{ + return 0; +} + +void +fe_add_chan_list (struct server *serv, char *chan, char *users, char *topic) +{ +} +void +fe_chan_list_end (struct server *serv) +{ +} +gboolean +fe_add_ban_list (struct session *sess, char *mask, char *who, char *when, int rplcode) +{ + return 0; +} +gboolean +fe_ban_list_end (struct session *sess, int rplcode) +{ + return 0; +} +void +fe_notify_update (char *name) +{ +} +void +fe_notify_ask (char *name, char *networks) +{ +} +void +fe_text_clear (struct session *sess, int lines) +{ +} +void +fe_progressbar_start (struct session *sess) +{ +} +void +fe_progressbar_end (struct server *serv) +{ +} +void +fe_userlist_insert (struct session *sess, struct User *newuser, gboolean sel) +{ +} +int +fe_userlist_remove (struct session *sess, struct User *user) +{ + return 0; +} +void +fe_userlist_rehash (struct session *sess, struct User *user) +{ +} +void +fe_userlist_numbers (struct session *sess) +{ +} +void +fe_userlist_clear (struct session *sess) +{ +} +void +fe_userlist_set_selected (struct session *sess) +{ +} +void +fe_dcc_add (struct DCC *dcc) +{ +} +void +fe_dcc_update (struct DCC *dcc) +{ +} +void +fe_dcc_remove (struct DCC *dcc) +{ +} +void +fe_clear_channel (struct session *sess) +{ +} +void +fe_session_callback (struct session *sess) +{ +} +void +fe_server_callback (struct server *serv) +{ +} +void +fe_url_add (const char *text) +{ +} +void +fe_pluginlist_update (void) +{ +} +void +fe_buttons_update (struct session *sess) +{ +} +void +fe_dlgbuttons_update (struct session *sess) +{ +} +void +fe_dcc_send_filereq (struct session *sess, char *nick, int maxcps, int passive) +{ +} +void +fe_set_channel (struct session *sess) +{ +} +void +fe_set_title (struct session *sess) +{ +} +void +fe_set_nonchannel (struct session *sess, int state) +{ +} +void +fe_set_nick (struct server *serv, char *newnick) +{ +} +void +fe_change_nick (struct server *serv, char *nick, char *newnick) +{ +} +void +fe_ignore_update (int level) +{ +} +int +fe_dcc_open_recv_win (int passive) +{ + return FALSE; +} +int +fe_dcc_open_send_win (int passive) +{ + return FALSE; +} +int +fe_dcc_open_chat_win (int passive) +{ + return FALSE; +} +void +fe_userlist_hide (session * sess) +{ +} +void +fe_lastlog (session *sess, session *lastlog_sess, char *sstr, gtk_xtext_search_flags flags) +{ +} +void +fe_set_lag (server * serv, long lag) +{ +} +void +fe_set_throttle (server * serv) +{ +} +void +fe_set_away (server *serv) +{ +} +void +fe_serverlist_open (session *sess) +{ +} +void +fe_get_bool (char *title, char *prompt, void *callback, void *userdata) +{ +} +void +fe_get_str (char *prompt, char *def, void *callback, void *ud) +{ +} +void +fe_get_int (char *prompt, int def, void *callback, void *ud) +{ +} +void +fe_idle_add (void *func, void *data) +{ + g_idle_add (func, data); +} +void +fe_ctrl_gui (session *sess, fe_gui_action action, int arg) +{ + /* only one action type handled for now, but could add more */ + switch (action) + { + /* gui focus is really the only case hexchat-text needs to worry about */ + case FE_GUI_FOCUS: + current_sess = sess; + current_tab = sess; + sess->server->front_session = sess; + break; + default: + break; + } +} +int +fe_gui_info (session *sess, int info_type) +{ + return -1; +} +void * +fe_gui_info_ptr (session *sess, int info_type) +{ + return NULL; +} +void fe_confirm (const char *message, void (*yesproc)(void *), void (*noproc)(void *), void *ud) +{ +} +char *fe_get_inputbox_contents (struct session *sess) +{ + return NULL; +} +void fe_set_inputbox_contents (struct session *sess, char *text) +{ +} +int fe_get_inputbox_cursor (struct session *sess) +{ + return 0; +} +void fe_set_inputbox_cursor (struct session *sess, int delta, int pos) +{ +} +void fe_open_url (const char *url) +{ +} +void fe_menu_del (menu_entry *me) +{ +} +char *fe_menu_add (menu_entry *me) +{ + return NULL; +} +void fe_menu_update (menu_entry *me) +{ +} +void fe_uselect (struct session *sess, char *word[], int do_clear, int scroll_to) +{ +} +void +fe_server_event (server *serv, int type, int arg) +{ +} +void +fe_flash_window (struct session *sess) +{ +} +void fe_get_file (const char *title, char *initial, + void (*callback) (void *userdata, char *file), void *userdata, + int flags) +{ +} +void fe_tray_set_flash (const char *filename1, const char *filename2, int timeout){} +void fe_tray_set_file (const char *filename){} +void fe_tray_set_icon (feicon icon){} +void fe_tray_set_tooltip (const char *text){} +void fe_userlist_update (session *sess, struct User *user){} +void +fe_open_chan_list (server *serv, char *filter, int do_refresh) +{ + serv->p_list_channels (serv, filter, 1); +} +const char * +fe_get_default_font (void) +{ + return NULL; +} diff --git a/hexchat/src/fe-text/fe-text.h b/hexchat/src/fe-text/fe-text.h new file mode 100644 index 0000000..a2bc5d7 --- /dev/null +++ b/hexchat/src/fe-text/fe-text.h @@ -0,0 +1,20 @@ +/* HexChat + * Copyright (C) 1998-2010 Peter Zelezny. + * Copyright (C) 2009-2013 Berke Viktor. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +GMainLoop *main_loop; diff --git a/hexchat/src/fe-text/fe-text.vcxproj b/hexchat/src/fe-text/fe-text.vcxproj new file mode 100644 index 0000000..75b64a1 --- /dev/null +++ b/hexchat/src/fe-text/fe-text.vcxproj @@ -0,0 +1,65 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup Label="Configuration"> + <PlatformToolset>v142</PlatformToolset> + <ConfigurationType>Application</ConfigurationType> + </PropertyGroup> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{E93E1255-95D1-4B08-8FDF-B53CC6A21280}</ProjectGuid> + <Keyword>Win32Proj</Keyword> + <RootNamespace>fetext</RootNamespace> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + <Import Project="..\..\win32\hexchat.props" /> + <PropertyGroup> + <TargetName>hexchat-text</TargetName> + <OutDir>$(HexChatRel)</OutDir> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;$(OwnFlags);%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>$(HexChatLib);$(DepsRoot)\include;$(Glib);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <OptimizeReferences>true</OptimizeReferences> + <AdditionalDependencies>$(DepLibs);$(HexChatLib)common.lib;wbemuuid.lib;comsupp.lib;%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalLibraryDirectories>$(DepsRoot)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <ClCompile> + <PreprocessorDefinitions>WIN32;_WIN64;_AMD64_;NDEBUG;_CONSOLE;$(OwnFlags);%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>$(HexChatLib);$(DepsRoot)\include;$(Glib);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <OptimizeReferences>true</OptimizeReferences> + <AdditionalDependencies>$(DepLibs);$(HexChatLib)common.lib;wbemuuid.lib;comsupp.lib;%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalLibraryDirectories>$(DepsRoot)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <ClInclude Include="fe-text.h" /> + </ItemGroup> + <ItemGroup> + <ClCompile Include="fe-text.c" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> +</Project> diff --git a/hexchat/src/fe-text/fe-text.vcxproj.filters b/hexchat/src/fe-text/fe-text.vcxproj.filters new file mode 100644 index 0000000..e8a4bcc --- /dev/null +++ b/hexchat/src/fe-text/fe-text.vcxproj.filters @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Source Files"> + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> + <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> + </Filter> + <Filter Include="Header Files"> + <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> + <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions> + </Filter> + </ItemGroup> + <ItemGroup> + <ClInclude Include="fe-text.h"> + <Filter>Header Files</Filter> + </ClInclude> + </ItemGroup> + <ItemGroup> + <ClCompile Include="fe-text.c"> + <Filter>Source Files</Filter> + </ClCompile> + </ItemGroup> +</Project> \ No newline at end of file diff --git a/hexchat/src/fe-text/meson.build b/hexchat/src/fe-text/meson.build new file mode 100644 index 0000000..705d885 --- /dev/null +++ b/hexchat/src/fe-text/meson.build @@ -0,0 +1,7 @@ +executable('hexchat-text', + sources: [ + 'fe-text.c', + ], + dependencies: hexchat_common_dep, + install: true, +) diff --git a/hexchat/src/htm/Main.Designer.cs b/hexchat/src/htm/Main.Designer.cs new file mode 100644 index 0000000..d95cf7f --- /dev/null +++ b/hexchat/src/htm/Main.Designer.cs @@ -0,0 +1,337 @@ +/** + * HexChat Theme Manager + * + * Copyright (C) 2012 Patrick Griffs + * Copyright (C) 2012 Berke Viktor + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +namespace thememan +{ + partial class HTM + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(HTM)); + this.themelist = new System.Windows.Forms.ListBox(); + this.themecolor0 = new System.Windows.Forms.Label(); + this.themecolor1 = new System.Windows.Forms.Label(); + this.themecolor2 = new System.Windows.Forms.Label(); + this.themecolor3 = new System.Windows.Forms.Label(); + this.themecolor4 = new System.Windows.Forms.Label(); + this.themecolor5 = new System.Windows.Forms.Label(); + this.themecolor6 = new System.Windows.Forms.Label(); + this.themecolor7 = new System.Windows.Forms.Label(); + this.themecolor8 = new System.Windows.Forms.Label(); + this.themecolor9 = new System.Windows.Forms.Label(); + this.themecolora = new System.Windows.Forms.Label(); + this.themecolorb = new System.Windows.Forms.Label(); + this.themecolorc = new System.Windows.Forms.Label(); + this.themecolord = new System.Windows.Forms.Label(); + this.themecolore = new System.Windows.Forms.Label(); + this.themecolorf = new System.Windows.Forms.Label(); + this.themecolorfg = new System.Windows.Forms.Label(); + this.themecolortextbg = new System.Windows.Forms.Label(); + this.importbutton = new System.Windows.Forms.Button(); + this.applybutton = new System.Windows.Forms.Button(); + this.themecolorfgmarked = new System.Windows.Forms.Label(); + this.deleteButton = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // themelist + // + this.themelist.FormattingEnabled = true; + this.themelist.Location = new System.Drawing.Point(12, 12); + this.themelist.Name = "themelist"; + this.themelist.Size = new System.Drawing.Size(160, 199); + this.themelist.TabIndex = 0; + this.themelist.SelectedIndexChanged += new System.EventHandler(this.theme_selected); + // + // themecolor0 + // + this.themecolor0.BackColor = System.Drawing.SystemColors.HotTrack; + this.themecolor0.Location = new System.Drawing.Point(189, 36); + this.themecolor0.Name = "themecolor0"; + this.themecolor0.Size = new System.Drawing.Size(40, 40); + this.themecolor0.TabIndex = 6; + // + // themecolor1 + // + this.themecolor1.BackColor = System.Drawing.SystemColors.HotTrack; + this.themecolor1.Location = new System.Drawing.Point(239, 36); + this.themecolor1.Name = "themecolor1"; + this.themecolor1.Size = new System.Drawing.Size(40, 40); + this.themecolor1.TabIndex = 10; + // + // themecolor2 + // + this.themecolor2.BackColor = System.Drawing.SystemColors.HotTrack; + this.themecolor2.Location = new System.Drawing.Point(289, 36); + this.themecolor2.Name = "themecolor2"; + this.themecolor2.Size = new System.Drawing.Size(40, 40); + this.themecolor2.TabIndex = 14; + // + // themecolor3 + // + this.themecolor3.BackColor = System.Drawing.SystemColors.HotTrack; + this.themecolor3.Location = new System.Drawing.Point(339, 36); + this.themecolor3.Name = "themecolor3"; + this.themecolor3.Size = new System.Drawing.Size(40, 40); + this.themecolor3.TabIndex = 18; + // + // themecolor4 + // + this.themecolor4.BackColor = System.Drawing.SystemColors.HotTrack; + this.themecolor4.Location = new System.Drawing.Point(189, 87); + this.themecolor4.Name = "themecolor4"; + this.themecolor4.Size = new System.Drawing.Size(40, 40); + this.themecolor4.TabIndex = 4; + // + // themecolor5 + // + this.themecolor5.BackColor = System.Drawing.SystemColors.HotTrack; + this.themecolor5.Location = new System.Drawing.Point(239, 87); + this.themecolor5.Name = "themecolor5"; + this.themecolor5.Size = new System.Drawing.Size(40, 40); + this.themecolor5.TabIndex = 8; + // + // themecolor6 + // + this.themecolor6.BackColor = System.Drawing.SystemColors.HotTrack; + this.themecolor6.Location = new System.Drawing.Point(289, 87); + this.themecolor6.Name = "themecolor6"; + this.themecolor6.Size = new System.Drawing.Size(40, 40); + this.themecolor6.TabIndex = 12; + // + // themecolor7 + // + this.themecolor7.BackColor = System.Drawing.SystemColors.HotTrack; + this.themecolor7.Location = new System.Drawing.Point(339, 87); + this.themecolor7.Name = "themecolor7"; + this.themecolor7.Size = new System.Drawing.Size(40, 40); + this.themecolor7.TabIndex = 16; + // + // themecolor8 + // + this.themecolor8.BackColor = System.Drawing.SystemColors.HotTrack; + this.themecolor8.Location = new System.Drawing.Point(189, 138); + this.themecolor8.Name = "themecolor8"; + this.themecolor8.Size = new System.Drawing.Size(40, 40); + this.themecolor8.TabIndex = 5; + // + // themecolor9 + // + this.themecolor9.BackColor = System.Drawing.SystemColors.HotTrack; + this.themecolor9.Location = new System.Drawing.Point(239, 138); + this.themecolor9.Name = "themecolor9"; + this.themecolor9.Size = new System.Drawing.Size(40, 40); + this.themecolor9.TabIndex = 9; + // + // themecolora + // + this.themecolora.BackColor = System.Drawing.SystemColors.HotTrack; + this.themecolora.Location = new System.Drawing.Point(289, 138); + this.themecolora.Name = "themecolora"; + this.themecolora.Size = new System.Drawing.Size(40, 40); + this.themecolora.TabIndex = 13; + // + // themecolorb + // + this.themecolorb.BackColor = System.Drawing.SystemColors.HotTrack; + this.themecolorb.Location = new System.Drawing.Point(339, 138); + this.themecolorb.Name = "themecolorb"; + this.themecolorb.Size = new System.Drawing.Size(40, 40); + this.themecolorb.TabIndex = 17; + // + // themecolorc + // + this.themecolorc.BackColor = System.Drawing.SystemColors.HotTrack; + this.themecolorc.Location = new System.Drawing.Point(189, 189); + this.themecolorc.Name = "themecolorc"; + this.themecolorc.Size = new System.Drawing.Size(40, 40); + this.themecolorc.TabIndex = 7; + // + // themecolord + // + this.themecolord.BackColor = System.Drawing.SystemColors.HotTrack; + this.themecolord.Location = new System.Drawing.Point(239, 189); + this.themecolord.Name = "themecolord"; + this.themecolord.Size = new System.Drawing.Size(40, 40); + this.themecolord.TabIndex = 11; + // + // themecolore + // + this.themecolore.BackColor = System.Drawing.SystemColors.HotTrack; + this.themecolore.Location = new System.Drawing.Point(289, 189); + this.themecolore.Name = "themecolore"; + this.themecolore.Size = new System.Drawing.Size(40, 40); + this.themecolore.TabIndex = 15; + // + // themecolorf + // + this.themecolorf.BackColor = System.Drawing.SystemColors.HotTrack; + this.themecolorf.Location = new System.Drawing.Point(339, 189); + this.themecolorf.Name = "themecolorf"; + this.themecolorf.Size = new System.Drawing.Size(40, 40); + this.themecolorf.TabIndex = 19; + // + // themecolorfg + // + this.themecolorfg.AutoSize = true; + this.themecolorfg.BackColor = System.Drawing.Color.Transparent; + this.themecolorfg.Location = new System.Drawing.Point(190, 18); + this.themecolorfg.Name = "themecolorfg"; + this.themecolorfg.Size = new System.Drawing.Size(66, 13); + this.themecolorfg.TabIndex = 21; + this.themecolorfg.Text = "Sample Text"; + // + // themecolortextbg + // + this.themecolortextbg.Location = new System.Drawing.Point(180, 15); + this.themecolortextbg.Name = "themecolortextbg"; + this.themecolortextbg.Size = new System.Drawing.Size(208, 223); + this.themecolortextbg.TabIndex = 20; + // + // importbutton + // + this.importbutton.Location = new System.Drawing.Point(12, 217); + this.importbutton.Name = "importbutton"; + this.importbutton.Size = new System.Drawing.Size(52, 23); + this.importbutton.TabIndex = 1; + this.importbutton.Text = "Add..."; + this.importbutton.UseVisualStyleBackColor = true; + this.importbutton.Click += new System.EventHandler(this.importbutton_Click_1); + // + // applybutton + // + this.applybutton.Location = new System.Drawing.Point(120, 217); + this.applybutton.Name = "applybutton"; + this.applybutton.Size = new System.Drawing.Size(52, 23); + this.applybutton.TabIndex = 3; + this.applybutton.Text = "Apply"; + this.applybutton.UseVisualStyleBackColor = true; + this.applybutton.Click += new System.EventHandler(this.applybutton_Click_1); + // + // themecolorfgmarked + // + this.themecolorfgmarked.AutoSize = true; + this.themecolorfgmarked.Location = new System.Drawing.Point(313, 18); + this.themecolorfgmarked.Name = "themecolorfgmarked"; + this.themecolorfgmarked.Size = new System.Drawing.Size(67, 13); + this.themecolorfgmarked.TabIndex = 22; + this.themecolorfgmarked.Text = "Marked Text"; + // + // deleteButton + // + this.deleteButton.Location = new System.Drawing.Point(66, 217); + this.deleteButton.Name = "deleteButton"; + this.deleteButton.Size = new System.Drawing.Size(52, 23); + this.deleteButton.TabIndex = 2; + this.deleteButton.Text = "Delete"; + this.deleteButton.UseVisualStyleBackColor = true; + this.deleteButton.Click += new System.EventHandler(this.deleteButton_Click); + // + // HTM + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(397, 248); + this.Controls.Add(this.deleteButton); + this.Controls.Add(this.themecolorfgmarked); + this.Controls.Add(this.themecolorfg); + this.Controls.Add(this.themecolorf); + this.Controls.Add(this.themecolor3); + this.Controls.Add(this.themecolorb); + this.Controls.Add(this.themecolor7); + this.Controls.Add(this.themecolore); + this.Controls.Add(this.themecolor2); + this.Controls.Add(this.themecolora); + this.Controls.Add(this.themecolor6); + this.Controls.Add(this.themecolord); + this.Controls.Add(this.themecolor1); + this.Controls.Add(this.themecolor9); + this.Controls.Add(this.themecolor5); + this.Controls.Add(this.themecolorc); + this.Controls.Add(this.themecolor0); + this.Controls.Add(this.themecolor8); + this.Controls.Add(this.themecolor4); + this.Controls.Add(this.importbutton); + this.Controls.Add(this.applybutton); + this.Controls.Add(this.themelist); + this.Controls.Add(this.themecolortextbg); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.Name = "HTM"; + this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide; + this.Text = "HexChat Theme Manager"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.ListBox themelist; + private System.Windows.Forms.Label themecolor0; + private System.Windows.Forms.Label themecolor1; + private System.Windows.Forms.Label themecolor2; + private System.Windows.Forms.Label themecolor3; + private System.Windows.Forms.Label themecolor4; + private System.Windows.Forms.Label themecolor5; + private System.Windows.Forms.Label themecolor6; + private System.Windows.Forms.Label themecolor7; + private System.Windows.Forms.Label themecolor8; + private System.Windows.Forms.Label themecolor9; + private System.Windows.Forms.Label themecolora; + private System.Windows.Forms.Label themecolorb; + private System.Windows.Forms.Label themecolorc; + private System.Windows.Forms.Label themecolord; + private System.Windows.Forms.Label themecolore; + private System.Windows.Forms.Label themecolorf; + private System.Windows.Forms.Label themecolorfg; + private System.Windows.Forms.Label themecolortextbg; + private System.Windows.Forms.Button importbutton; + private System.Windows.Forms.Button applybutton; + private System.Windows.Forms.Label themecolorfgmarked; + private System.Windows.Forms.Button deleteButton; + } +} + diff --git a/hexchat/src/htm/Main.cs b/hexchat/src/htm/Main.cs new file mode 100644 index 0000000..aecfa1c --- /dev/null +++ b/hexchat/src/htm/Main.cs @@ -0,0 +1,381 @@ +/** + * HexChat Theme Manager + * + * Copyright (C) 2012 Patrick Griffs + * Copyright (C) 2012 Berke Viktor + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +using System; +using System.Collections.Generic; +using System.Collections; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.IO; +/* using System.IO.Compression; */ +using System.IO.Packaging; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Net; + +namespace thememan +{ + public partial class HTM : Form + { + public string hexchatdir; + public string themedir; + + OpenFileDialog importDialog; + + static bool IsPortable(out string directory) + { + System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly(); + directory = asm != null ? asm.Location : string.Empty; + if (string.IsNullOrEmpty(directory)) + { + directory = string.Empty; + return File.Exists("portable-mode"); + } + directory = Path.GetDirectoryName(directory); + return File.Exists(Path.Combine(directory, "portable-mode")); + } + + public HTM () + { + InitializeComponent (); + string portableDir; + + if (RunningOnWindows() && IsPortable(out portableDir)) + { + hexchatdir = Path.Combine(portableDir, "config\\"); + + if (!Directory.Exists(hexchatdir)) + { + MessageBox.Show("HexChat installation not found!\nCheck your .\\config folder", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + Environment.Exit(1); + } + } + else + { + /* Environment.SpecialFolder.ApplicationData + * Windows: %APPDATA% + * Unix: ~/.config + * Windows is case-insensitive so 'hexchat' should be fine for both + */ + hexchatdir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "hexchat"); + + if (!Directory.Exists(hexchatdir)) + { + if (RunningOnWindows()) + { + MessageBox.Show("HexChat installation not found!\nCheck your %APPDATA%\\HexChat folder", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + else + { + MessageBox.Show("HexChat installation not found!\nCheck your ~/.config/hexchat folder", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + + Environment.Exit(1); + } + } + + themedir = Path.Combine(hexchatdir, "themes"); + ListThemes(); + + String[] arguments = Environment.GetCommandLineArgs(); + if (arguments.Length > 1) + { + FileInfo fi = new FileInfo(arguments[1]); + attemptImport(fi); + } + } + + private bool RunningOnWindows() + { + if (Environment.OSVersion.ToString().ToLower().Contains("windows")) + { + return true; + } + else + { + return false; + } + } + + private void ListThemes() + { + themelist.Items.Clear(); + + if (Directory.Exists(themedir)) + { + foreach (string theme in Directory.GetDirectories(themedir)) + { + themelist.Items.Add(theme.Remove(0, themedir.Length + 1)); + } + } + else + { + Directory.CreateDirectory(themedir); + } + + if (themelist.Items.Count == 0) + { + applybutton.Enabled = false; + deleteButton.Enabled = false; + } + else + { + themelist.SetSelected(0, true); + } + } + + private void ShowColors(List<List<string>> themecolors) + { + List<Control> labels = this.Controls.OfType<Label>().Cast<Control>().OrderBy(label => label.Name).ToList(); + for (byte themecolor = 0; themecolor < themecolors.Count; themecolor++) + { + byte rval = Convert.ToByte(int.Parse(themecolors[themecolor][0].ToString(), System.Globalization.NumberStyles.HexNumber) / 257); + byte gval = Convert.ToByte(int.Parse(themecolors[themecolor][1].ToString(), System.Globalization.NumberStyles.HexNumber) / 257); + byte bval = Convert.ToByte(int.Parse(themecolors[themecolor][2].ToString(), System.Globalization.NumberStyles.HexNumber) / 257); + + if (themecolor <= 15) + labels[themecolor].BackColor = Color.FromArgb(rval, gval, bval); + else if (themecolor == 16) + themecolorfgmarked.ForeColor = Color.FromArgb(rval, gval, bval); + else if (themecolor == 17) + themecolorfgmarked.BackColor = Color.FromArgb(rval, gval, bval); + else if (themecolor == 18) + themecolorfg.ForeColor = Color.FromArgb(rval, gval, bval); + else if (themecolor == 19) + { + themecolortextbg.BackColor = Color.FromArgb(rval, gval, bval); + themecolorfg.BackColor = themecolortextbg.BackColor; + } + } + } + + private List<List<string>> ReadTheme(string theme) + { + List<List<string>> themecolors = new List<List<string>>(); + foreach (string line in File.ReadLines(Path.Combine(themedir, theme, "colors.conf"))) + { + List<string> colors = new List<string>(); + List<string> colorlist = new List<string>(); + string[] possiblecolors = { "color_256", "color_257", "color_258", "color_259" }; + + for (byte num = 16; num <=31; num++) + colorlist.Add("color_" + num); + colorlist.AddRange(possiblecolors); + + string[] config = line.Split(new char[] { ' ' }); + if(colorlist.Contains(config[0]) == true) + { + colors.Add(config[2]); + colors.Add(config[3]); + colors.Add(config[4]); + themecolors.Add(colors); + } + } + return themecolors; + } + + private void applybutton_Click_1(object sender, EventArgs e) + { + DialogResult result = MessageBox.Show("HexChat must be closed and this will overwrite your current theme!\n\nDo you wish to continue?", "Warning", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning); + if (result == DialogResult.OK) + { + File.Copy(Path.Combine(themedir, themelist.SelectedItem.ToString(), "colors.conf"), Path.Combine(hexchatdir, "colors.conf"), true); + if (File.Exists(Path.Combine(themedir, themelist.SelectedItem.ToString(), "pevents.conf"))) + { + File.Copy(Path.Combine(themedir, themelist.SelectedItem.ToString(), "pevents.conf"), Path.Combine(hexchatdir, "pevents.conf"), true); + } + else if (File.Exists(Path.Combine(hexchatdir, "pevents.conf"))) + { + File.Delete(Path.Combine(hexchatdir, "pevents.conf")); + } + } + } + + private void theme_selected(object sender, EventArgs e) + { + if (themelist.SelectedItem != null) + { + ShowColors(ReadTheme(themelist.SelectedItem.ToString())); + applybutton.Enabled = true; + deleteButton.Enabled = true; + } + } + + private void importbutton_Click_1(object sender, EventArgs e) + { + importDialog = new OpenFileDialog(); + importDialog.Filter = "HexChat Theme Files|*.hct"; + importDialog.FilterIndex = 1; + importDialog.FileOk += new CancelEventHandler(importdialog_FileOk); + importDialog.ShowDialog(); + } + + private void importdialog_FileOk(object sender, System.ComponentModel.CancelEventArgs e) + { + FileInfo fi = new FileInfo(importDialog.FileName); + attemptImport(fi); + } + + private void attemptImport(FileInfo fi) + { + string themeName = fi.Name.Remove(fi.Name.Length - fi.Extension.Length); + int result = extractTheme(fi); + ListThemes(); + /* although a check is added to ListThemes(), this would still fail if the theme file was invalid or the theme is already installed */ + switch (result) + { + case 0: + themelist.SetSelected(themelist.FindStringExact(themeName), true); + /* required for command line invoking */ + ShowColors(ReadTheme(themeName)); + break; + case 1: + MessageBox.Show("This theme is already installed!", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); + themelist.SetSelected(themelist.FindStringExact(themeName), true); + /* required for command line invoking */ + ShowColors(ReadTheme(themeName)); + break; + case 2: + MessageBox.Show("Invalid theme file!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + break; + } + } + /* gzip solution, not good enough coz we need multiple files + * + public string extractTheme(FileInfo fi) + { + using (FileStream inFile = fi.OpenRead()) + { + string themeName = fi.Name.Remove(fi.Name.Length - fi.Extension.Length); + string destFolder = xchatdir + themedir + themeName; + + if (!Directory.Exists(destFolder)) + { + Directory.CreateDirectory(destFolder); + } + + using (FileStream outFile = File.Create(destFolder + "\\colors.conf")) + { + using (GZipStream Decompress = new GZipStream(inFile, CompressionMode.Decompress)) + { + Decompress.CopyTo(outFile); + } + } + return themeName; + } + } + */ + + /* using System.IO.Package: + * http://weblogs.asp.net/jgalloway/archive/2007/10/25/creating-zip-archives-in-net-without-an-external-library-like-sharpziplib.aspx + * [Content_Types].xml must be present for every zip file + */ + + private const long BUFFER_SIZE = 4096; + + private int extractTheme(FileInfo zipFile) + { + string themeName = zipFile.Name.Remove(zipFile.Name.Length - zipFile.Extension.Length); + string destFolder = Path.Combine(themedir, themeName); + + try + { + using (Package zip = Package.Open(zipFile.FullName, FileMode.Open, FileAccess.Read)) + { + PackagePartCollection parts = zip.GetParts(); + + if (Directory.Exists(destFolder)) + { + return 1; + } + else + { + Directory.CreateDirectory(destFolder); + } + + foreach (PackagePart part in parts) + { + /* not sure what's this good for */ + /* String archive = part.Uri.ToString().Replace(@"/", @"\"); */ + String destFile = destFolder + part.Uri.ToString(); + + using (FileStream outFileStream = new FileStream(destFile, FileMode.CreateNew, FileAccess.ReadWrite)) + { + using (Stream inStream = part.GetStream()) + { + long bufferSize = inStream.Length < BUFFER_SIZE ? inStream.Length : BUFFER_SIZE; + byte[] buffer = new byte[bufferSize]; + int bytesRead = 0; + long bytesWritten = 0; + + while ((bytesRead = inStream.Read(buffer, 0, buffer.Length)) != 0) + { + outFileStream.Write(buffer, 0, bytesRead); + bytesWritten += bufferSize; + } + } + } + + + } + } + } + catch (System.IO.FileFormatException) + { + return 2; + } + + if (IsDirectoryEmpty(destFolder)) + { + Directory.Delete(destFolder); + return 2; + } + else + { + return 0; + } + } + + public bool IsDirectoryEmpty(string path) + { + return !Directory.EnumerateFileSystemEntries(path).Any(); + } + + private void deleteButton_Click(object sender, EventArgs e) + { + DialogResult result = MessageBox.Show("Are you sure you want to delete this theme from the theme repo?\n\nYour currently applied theme won't be affected.", "Warning", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning); + if (result == DialogResult.OK) + { + Directory.Delete(Path.Combine(themedir, themelist.SelectedItem.ToString()), true); + ListThemes(); + if (themelist.Items.Count == 0) + { + deleteButton.Enabled = false; + } + } + } + + + + } +} diff --git a/hexchat/src/htm/Main.resx b/hexchat/src/htm/Main.resx new file mode 100644 index 0000000..75c9956 --- /dev/null +++ b/hexchat/src/htm/Main.resx @@ -0,0 +1,287 @@ +<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> + <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value> + AAABAAEAMDAAAAEAIACoJQAAFgAAACgAAAAwAAAAYAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAHAAAACQAAAAgAAAAFAAAAAgAAAAEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABwAAABEBAQEbBAQEIQICAh4AAAAVAAAACwAA + AAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAIAAAAFwMDAywDAwM/AwMDSQUF + BUUEBAQ1AQEBHwAAAA0AAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAZAgICRQMD + A3IBAQGDAQEBegICA20EBARYBAQEOgEBARsAAAAIAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAA + ABQEBARjGhsZricnJcsXFxbYBgYGzgAAAJwCAgJwBQUFTwICAioAAAANAAAAAgAAAAAAAAAAAAAAAAAA + AAAAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAgAAAAIAAAACAAAAAQAA + AAEAAAABAAAABQMDAlM8Pjqcp6ug17O3rPiFiID3NTcz6QEBAdMBAQGPBAQEWgICAjQAAAATAAAABAAA + AAEAAAABAAAAAgAAAAUAAAAHAAAACAAAAAcAAAAEAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAYAAAAKAAAADAAA + AA0AAAAMAAAACwAAAAgAAAAGAQEBGRcYF3uqrqPU3ePV+MrPwv+usqf+b3Ns8QcHB+QAAACnBAQEYAQE + BDsAAAAYAAAABwAAAAUAAAAIAAAADgAAABUCAgIdAgICIAEBARwAAAASAAAACQAAAAMAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAADgEB + ARkDAwMiAgICJwICAikCAgIoAgICJQAAAB8AAAAXAQIBTmFjXaTX3c/p4uja/9bczv/Cx7v+en127hMU + E+QAAAC3BAQEZQQEBD4AAAAfAAAAEgAAABUBAQEeAgICKgICAjcCAgNEAwMDSAQEBEACAgIuAQEBGQAA + AAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA + AAUAAAARAwMDJgMDAzsDAwNJAgICTwICAlICAgJTBAQETwMDA0cEAwQ5AgICd5WZj9vq8OL54ObY/9/l + 1//Kz8P/fYF57BscGt4AAADBAgICbAMDA0UAAAAwAAAALQICAjcCAgJNAgICbgICAoUBAQGJAQEBeAIC + AmQDAwNMBAQELQAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAgAAAA0AAAA0AgICbAICAo8CAgGbAQEBngAAAJkBAQGOAgICfAMDA28CAgJfAgICjJyf + lufo7d/+5Orc/+Pp2v/Gy7//io2F6SEiINQAAADDAQEBcwMDA1UCAgJSAwMDaQYGBosSExKePD46vjw9 + OtYTFBPTAgICuwAAAJADAwNdBAQEOQICAhgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAQEBBwYGBkgZGhiOJSYkszAxLsgsLSvRHyAe2RESEd0KCgrdAgICzwAA + ALQAAACKAgICoJygl+ru9OX+6/Hi/+Dl2P7N0sb/jJCI6hscGtEAAADBAgIBgwcHB4MTExKmMzQwvXh8 + dM2hpZvms7mt9Kito/qEiH/2IiMg3QICAr0BAQJrAwMDNgAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBQUFGS8wLYO1uq/Yyc/C8sLHu/awtan4n6OZ+pGV + jPtydW70Li8s4RUVFNoCAgLGAQEBvZGUjOjt8+X86O7g/+Xq3P/S18r/g4Z+7A8PDs4EBATFGxwax0dI + RM6RlIvjvsK29sXKvfi6vrL9w8m8/8TJvf+mq6D7UFJN3gUGBb4BAQFqAgICKAAAAA8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAACAAAAAgAAAAIAAAAEBwcHOFBSTZjb4NPw6O7g/uHn + 2f7U2s3/yc3B/7q/s/+2uq/+pquh+4WIgPYrLCrhBwcH03x+d+Lk6dv78Pbn/+nv4f/Y3tD9jZCH6RkZ + GM48PTnXm56V8MXKvfrK0ML90dXI/8rPwv+3vLH/wsi7/8DFuf+bnpT4LC0qzQICAqQBAQFKAAAAFgAA + AAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAMAAAAEAAAABQAAAAcAAAAJAgICMyco + JpW4vLHa3ePV+Nzh1Pvc4tT/1NnM/8zRxP/HzL//t7uw/6qvpP+Sl433QkQ/2n1/eOHf5Nb88vjp/+/1 + 5v/i6Nr8sLWq732AeOimqp/2ub6y/r7EuP+9wrf/vcK2/7/Dt/+3vLD/ub+y/6Wpnvtwc2vmEBEQswEB + AWQAAAAdAAAACQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAADAAAABQAAAAcAAAAJAAAADAAA + AA8AAAATAAAAHwYGBm88Pjqom5+V2MTJvfPGy7//wMW5/77Ct/+9wbX/uL2y/7O3rP+3vLD/o6id8rm9 + svLl693+6e/g/+bs3f/c4tP/x83A/7G1qv6mqqD/nKCW/5ygl/+go5r/o6ed/6aqoP+kqJ7/j5OK81VY + UtwREhG4AQEBbAAAACUAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAQAAAAHAAAACgAA + AA4AAAATAAAAGQAAAB4AAAAjAAAAKwAAAEQCAgKJHB0bul5gW9eQlIvyn6OZ/p6imP+go5r/pqqg/6+z + qf+5vrL/wMS5/rm+s/+XnJL/eX11/3J4c/9zgoP/Z3R0/2xxbP+ChX3/g4Z+/3+Cev+BhHv/iIyD/32A + eP5iZF3wNjc01goKCbQAAAB4AAAALAAAAA8AAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAADAAAABAAA + AAgAAAANAAAAFAAAABoAAAAiAAAAKgAAADIAAAA7AAAARQAAAFMAAABrAAAAkAoLCrwpKifkVVdS9Hh7 + dPuDhn7/j5KK/5uflv+anpX/aWxl/0ZOTP9BVl3/M1Ff/ytIV/8wTmD/MEpZ/zRIUv9FTk//cXRu/3p+ + dv5ydW7+UFJO+CorKOwPDw7UAQEBrQICAoECAgJOAwMDLwAAABgAAAAKAAAAAwAAAAAAAAABAAAAAgAA + AAMAAAAGAAAACgAAABAAAAAYAAAAIQAAACoAAAA1AAAAPwAAAEsAAABYAAAAZQAAAHMAAACAAAAAjgAA + AKEBAQG1Dg4N0iEiIOpAQj71cHNs/ICDfP1WWVT+LDk8/0Rsdv9UhZH/Uomd/0CBoP88b4r/PGB1/y9K + W/8rQEz/SE9P/jIzMPQiIyHoEhMS3AECAdQAAADCAQEBngICAnoEBARkBQUFTQMDAzMAAAAaAAAACgAA + AAIAAAACAAAAAwAAAAYAAAALAAAAEgAAABsAAAAmAAAAMQAAAD0AAABKAAAAWAAAAGcAAAB2AAAAhgAA + AJUAAAClAAAAsQAAALoFBQXFDAwM1gcHB+MJCQnrKCkn8lRWUfZDTU7/VX+M/054gv9KVVj/V2Fk/zxc + av9EUln/U1pf/ztRX/8wTF3/JzU9/0ZKRvk/QT3lODo34R4fHecJCQnjAQEB0wAAALABAQGGAwMDagQE + BFEDAwMzAAAAFwAAAAcAAAADAAAABgAAAAsAAAATAAAAHAAAACkAAAA2AAAARQAAAFQAAABkAAAAdAAA + AIUAAACZAAAAsAMDA8QWFhbXKSkp5j4+PvRLS0v5Ojo6+iAgH/YpKifxYGJc+HFzbf1FWmL/XZiu/0td + Yf9iY2P/uLm5/1laW/9jZGT/t7i4/05ZX/9AYXf/LURS/2RqZ/+Ch378goZ+/ICDe/hLTUjtHB0b6wUF + BeUAAADBAQEBjgICAmoFBQVLAwMDJwAAAA0AAAAEAAAACQAAABEAAAAdAAAAKQAAADgAAABIAAAAWgAA + AGwAAAB/AQEBmQICArgcHBzUR0dH7G9vb/uUlJT9u7u7/tra2v+NjY39JSUk+DY3NPdbXVj7eXx1/nh7 + dP88TVT/WI6k/1prcP/P0ND/09TU/2psbP/Q0dH/0tPU/1NjbP9Oe5f/OFFe/4SLhf+ippz/n6OZ/5+j + mf+Rloz+en529Ts8OekMDAvlAAEAxgEBAYYDAwNXBAQEMAAAABIAAAAHAAAADwAAABsAAAApAAAAOQAA + AEsAAABdAAAAcgEBAYwICAi1Kioq3GxsbPOnp6f92dnZ//r6+v/9/f3//Pz8/5ycm/4rLCv6Kiso+EZH + Q/xhY13+fH94/4qNhf9bYV7/QV9s/010g/9ve37/bnyA/09weP9vfYH/aXqB/0qCn/9ThaH/P0tQ/6So + n//DyLz/wsa7/7a7r/+zuKz/rbKm/5KXjvdVWFLrEREQ3QEBAawBAQJVAgICLwAAABIAAAALAAAAFgAA + ACQAAAA3AAAASgAAAF8AAAB3CwsLpCsrK9p1dXXzx8fH/u3t7f/////////////////+/v7/vb29/zY2 + Nv0cHRv8LS8s+0JDP/xZW1b8dHdw/I+Tiv6NkYf8TFNS+UBpevxiqcL/d8fc/4Ta7v95yd//Z7jd/1+h + w/9EW2X/e4F6/8TJvf/R1sn/1NnM/9HWyf/N08X/yc/C/8TJvP+qrqP6WVtW3AcHBrACAgJKAwMDJQAA + AA4AAAAPAAAAHAAAAC8AAABEAAAAXAICAnsXFxezY2Nj6sjIyP3w8PD/8/P0//Pz8/////////////// + ///39/f/jIyM/hsbG/0WFxX8IyQh+jM0MfpAQT34RUdD90BBPfJCREDcKisotj9KTdVCYGv+THOA/3Cs + xf9wr8z/TXWJ/0hZYP9/hX//ztPH/ubr3f7m7N3/7/Xm//D25//m7N3/3+XX/9bczv7L0MP2kJSLwQ4O + DYcCAgJCAQEBFgAAAAgAAAAUAAAAJAAAADkAAABTAgICdiMjI7iHh4f25eXl/v7+/v/+/v//oaHs/62t + vP/4+Pj/////////////////5OTk/25ubv4iIiL9CwwL+wwNDPgMDQzvDAwM1wgIB7AFBQWHAQEBhHN2 + b7enraTzjJKN/3SCgv90goP/mqKc/77Dt/+Tl473YGNd7ImNhfG/xLj55evd+OTq3Pjb4dP40NXJ+MXK + vuutsaa9RkhDiQUFBWQAAAAiAAAACQAAAAMAAAAYAAAAKwAAAEQDAwNrKCgot5iYmPb39/f///////// + ////////oqL3/1pauv/k5OT//////////////////////+fn5/+np6f/T09P+QsLC+gAAADMAAAArwAA + AI8AAAByAQEBhllbVqXKz8Pi2+HT/9zi1P/f5df/5evd/+Pp2/+us6j1MTMw2BUVFMInKCW1Ojs4p0FC + PqxAQj2qNDYyqC0uK54gIB6JBwcGXgAAACIAAAAHAAAAAgAAAAAAAAAaAAAAMAEBAVQjIyOrm5ub9Pf3 + 9///////////////////////vr76/0FBzv/S0tT///////z8/P/o6On/2tra//Pz8//9/f3/2dnZ/3Nz + c/gRERHbAAAAtgAAAJkAAAB9AAAAhRQUE5KorKHE3uTW+O3z5P/x9+j/6O7g/97k1v+vs6juLi8tzAAA + AJICAgJPAgICPgQEBEcDAwNNAQEBPgAAACYAAAATAAAACwAAAAMAAAABAAAAAAAAAAAAAAAcAAAANQwM + DH5zc3Pm6urq////////////////////////////6Oj9/0ND3v+ysrn/3Nzj/5OTx/87O83/Li63/39/ + nP/o6Oj//////97e3v9WVlb0BQUFywAAAKcAAACKAAAAeQICApdGSESVxMm9zOju4Pru9OX/5Orc/97j + 1f+WmZDfHh8dwAEBAX0CAgIyAAAAFAAAAAcAAAAEAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAcAAAARDo6Ora8vLz9///////////////////////////+/v7/7e31/0JC5v9KSqb/LS3T/wYG + 8/8AAP7/AQH9/yoqz//Ly9b//v7+//7+/v+np6f+ISEh4gAAALQAAACTAAAAdAAAAIgFBQWjV1lUpMvQ + xNHr8eP85evd/9ne0fdrbWfQCgoJpgEBAVEAAAAdAAAACQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAaAAAAU1lZWeDp6en//////////////////v7+//Ly8//BwdT/ZmbI/xMR + 6P8KBfL/AAD//wAA/v8SEvX/V1ft/8DA7v/4+Pv////////////f39//Ozs78QAAALsAAACYAAAAeAAA + AGMAAAByBgYFm0NFQcO1uq/Z3ePV6qqupM4pKii4AAAAcQAAACMAAAALAAAAAwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAAAWGRkZPP9/f3////////////s7O//s7PQ/1pa + xf8TE+j/AgL6/wAA/v8ZDOf/Dw7w/2lp6f/IyPL/+fn8///////////////////////39/f/R0dH+AAA + AL0AAACYAAAAeAAAAFcAAAA8AAAARAkJCHM0NjKdUVNOuDM0MZcEBQRkAAAAJgAAAAkAAAADAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAUWJiYu35+fn///////j4 + /v9ycuv/ERHp/wEB/f8AAP//AwP8/yws8P9DQe7/Wlq8/+rq7P////////////////////////////// + ///z8/P/RERE9QAAALgAAACSAAAAcgAAAFEAAAAyAAAAGwAAABcAAAAmAAAANwAAAC8AAAASAAAABAAA + AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAPlJS + Uszb29v+//////7+//+4uPz/JSX8/w0N+v82NvL/nJzr/+jo9/+2tvn/Tk7C/9ra2/////////////// + ///////////////////Nzc3+NDQ05wAAAKsAAACHAAAAZwAAAEUAAAApAAAAFQAAAAgAAAAEAAAABAAA + AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAKAAAAIi4uLo6lpaX1/Pz8////////////6Oj+/9DQ+f/z8/v//v7+///////R0fv/OzvY/8LC + yP/+/v7///////////////////////n5+f+MjIz5FxcXygAAAJcAAAB2AAAAVwAAADkAAAAgAAAADgAA + AAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAGAAAADgQEBEBWVlbA0dHR/P7+/v////////////////////////////// + ///x8f7/S0vn/6mpuf/8/Pz//////////////////f39/8DAwP05OTndAQEBoAAAAH4AAABhAAAARAAA + ACkAAAAVAAAACAAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAACAEBARUXFxdYWVlZyby8vPj19fX///////// + ///////////////////7+///c3P1/5iYyP/5+fn///////7+/v/x8fH/rKys+kRERN0ICAiiAAAAfAAA + AGMAAABIAAAALwAAABoAAAALAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABQAAAAoBAQEXDw8PRjs7 + O6h9fX3ox8fH+ubm5v/19fX//Pz8////////////4uL+/9zc9P/y8vL/5OTk/76+vvpvb2/tKSkpwgUF + BYwAAABvAAAAWgAAAEUAAAAwAAAAHAAAAA4AAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAA + AAUAAAAJAAAAEgcHBysWFhZqKysrsFlZWdaHh4fppaWl9re3t/y5ubn+tra2/KGhofWAgIDrUFBQ2yMj + I70ODg6NAgICZwAAAFcAAABLAAAAPAAAACwAAAAcAAAADwAAAAYAAAACAAAAAQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAQAAAAIAAAAEAAAACAAAAA0AAAAVAwMDJwkJCUwLCwt0DAwMjwwMDJ8MDAylDAwMoQsL + C5UJCQl/BgYGYQEBAUkAAABAAAAAOwAAADUAAAAsAAAAIgAAABcAAAANAAAABgAAAAIAAAABAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAUAAAAIAAAADAAAABEAAAAVAAAAGgAA + AB0AAAAgAAAAIwAAACQAAAAkAAAAJAAAACMAAAAhAAAAHgAAABoAAAAVAAAADwAAAAoAAAAFAAAAAgAA + AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAABQAA + AAcAAAAJAAAACwAAAA4AAAAPAAAAEAAAABAAAAARAAAAEAAAAA8AAAAOAAAADQAAAAsAAAAIAAAABQAA + AAQAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABgAAAAYAAAAGAAAABQAAAAQAAAAEAAAAAwAA + AAMAAAACAAAAAgAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAQAA + AAEAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////8AAP///////wAA//////// + AAD///////8AAP///////wAA/////f//AAD////wf/8AAP///+A//wAA////4D//AAD////AP/8AAP// + /8A/nwAA//+DgDwHAAD//gAAAAcAAP/8AAAABwAA//wAAAAHAAD//AAAAA8AAP/+AAAAHwAA//4AAAA/ + AAD//wAAAD8AAP/+AAAAfwAA//gAAAAfAAD/4AAAAA8AAP/AAAAABwAA/wAAAAAHAAD+AAAAAAcAAPwA + AAAABwAA+AAAAAAPAADwAACAAB8AAOAAAIAP/wAA4AAAQB//AADAAABAH/8AAMAAAHA//wAAwAAAfH// + AADAAAB///8AAMAAAH///wAAwAAA////AADgAAH///8AAPAAA////wAA+AAH////AAD+AB////8AAP/B + /////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA//////// + AAA= +</value> + </data> +</root> \ No newline at end of file diff --git a/hexchat/src/htm/Program.cs b/hexchat/src/htm/Program.cs new file mode 100644 index 0000000..afbb648 --- /dev/null +++ b/hexchat/src/htm/Program.cs @@ -0,0 +1,42 @@ +/** + * HexChat Theme Manager + * + * Copyright (C) 2012 Patrick Griffs + * Copyright (C) 2012 Berke Viktor + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Windows.Forms; + +namespace thememan +{ + static class Program + { + /// <summary> + /// The main entry point for the application. + /// </summary> + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new HTM()); + } + } +} diff --git a/hexchat/src/htm/Properties/AssemblyInfo.cs b/hexchat/src/htm/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..9cedc21 --- /dev/null +++ b/hexchat/src/htm/Properties/AssemblyInfo.cs @@ -0,0 +1,59 @@ +/** + * HexChat Theme Manager + * + * Copyright (C) 2012 Patrick Griffs + * Copyright (C) 2012 Berke Viktor + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Resources; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("HexChat Theme Manager")] +[assembly: AssemblyDescription("Manages HexChat Themes.")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("thememan")] +[assembly: AssemblyCopyright("Copyright © 2012")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("adb04fa6-faee-4dcc-be53-7ba67e74c2a0")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: NeutralResourcesLanguageAttribute("en-US")] diff --git a/hexchat/src/htm/Properties/Resources.Designer.cs b/hexchat/src/htm/Properties/Resources.Designer.cs new file mode 100644 index 0000000..8e2cd74 --- /dev/null +++ b/hexchat/src/htm/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// <auto-generated> +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// </auto-generated> +//------------------------------------------------------------------------------ + +namespace thememan.Properties { + using System; + + + /// <summary> + /// A strongly-typed resource class, for looking up localized strings, etc. + /// </summary> + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// <summary> + /// Returns the cached ResourceManager instance used by this class. + /// </summary> + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("thememan.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// <summary> + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// </summary> + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/hexchat/src/htm/Properties/Resources.resources b/hexchat/src/htm/Properties/Resources.resources new file mode 100644 index 0000000000000000000000000000000000000000..6c05a9776bd7cbae976fdcec7e3a254e93018279 GIT binary patch literal 180 zcmX?i>is@O1_p+SK%5g?SzMBus~417oL^d$oLUTL1*ImYq!#HY<Q6CA7v*Fo=_rJy z78Pga=h>R*8GxXUf^%t3Noi54ZC+|=Nl{{sjzU0bQch;FcWPxwes*e}ZIZcpqG__J onW3ezNveT`r81^vrFkWpxv4PQgHubGfR2KJ07n-P+5+SQ04Y>DD*ylh literal 0 HcmV?d00001 diff --git a/hexchat/src/htm/Properties/Resources.resx b/hexchat/src/htm/Properties/Resources.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/hexchat/src/htm/Properties/Resources.resx @@ -0,0 +1,120 @@ +<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/hexchat/src/htm/Properties/Settings.Designer.cs b/hexchat/src/htm/Properties/Settings.Designer.cs new file mode 100644 index 0000000..c8c467e --- /dev/null +++ b/hexchat/src/htm/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// <auto-generated> +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// </auto-generated> +//------------------------------------------------------------------------------ + +namespace thememan.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/hexchat/src/htm/Properties/Settings.settings b/hexchat/src/htm/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/hexchat/src/htm/Properties/Settings.settings @@ -0,0 +1,7 @@ +<?xml version='1.0' encoding='utf-8'?> +<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)"> + <Profiles> + <Profile Name="(Default)" /> + </Profiles> + <Settings /> +</SettingsFile> diff --git a/hexchat/src/htm/README.md b/hexchat/src/htm/README.md new file mode 100644 index 0000000..7abc965 --- /dev/null +++ b/hexchat/src/htm/README.md @@ -0,0 +1,7 @@ +hexchat-theme-manager +------------------ + +- Shows previews of and can load/save themes +- Will run on windows/linux (still wip) + +![XTM Screenshot](http://puu.sh/uoZz) \ No newline at end of file diff --git a/hexchat/src/htm/Resources/htm.ico b/hexchat/src/htm/Resources/htm.ico new file mode 100644 index 0000000000000000000000000000000000000000..f5cac031701cbef0513979c1614dc5b03b6d491c GIT binary patch literal 9662 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 K9{>A3@_zsss%iQF literal 0 HcmV?d00001 diff --git a/hexchat/src/htm/app.config b/hexchat/src/htm/app.config new file mode 100644 index 0000000..b33a205 --- /dev/null +++ b/hexchat/src/htm/app.config @@ -0,0 +1,3 @@ +<?xml version="1.0"?> +<configuration> +<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/></startup></configuration> diff --git a/hexchat/src/htm/htm.csproj b/hexchat/src/htm/htm.csproj new file mode 100644 index 0000000..7c96d27 --- /dev/null +++ b/hexchat/src/htm/htm.csproj @@ -0,0 +1,155 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">x86</Platform> + <ProductVersion>8.0.30703</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{DE87FFCA-9606-4116-B747-062D88A56A28}</ProjectGuid> + <OutputType>WinExe</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>thememan</RootNamespace> + <AssemblyName>thememan</AssemblyName> + <FileAlignment>512</FileAlignment> + <IsWebBootstrapper>false</IsWebBootstrapper> + <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> + <TargetFrameworkProfile> + </TargetFrameworkProfile> + <PublishUrl>publish\</PublishUrl> + <Install>true</Install> + <InstallFrom>Disk</InstallFrom> + <UpdateEnabled>false</UpdateEnabled> + <UpdateMode>Foreground</UpdateMode> + <UpdateInterval>7</UpdateInterval> + <UpdateIntervalUnits>Days</UpdateIntervalUnits> + <UpdatePeriodically>false</UpdatePeriodically> + <UpdateRequired>false</UpdateRequired> + <MapFileExtensions>true</MapFileExtensions> + <AutorunEnabled>true</AutorunEnabled> + <ApplicationRevision>1</ApplicationRevision> + <ApplicationVersion>1.0.0.%2a</ApplicationVersion> + <UseApplicationTrust>false</UseApplicationTrust> + <PublishWizardCompleted>true</PublishWizardCompleted> + <BootstrapperEnabled>true</BootstrapperEnabled> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> + <PlatformTarget>x86</PlatformTarget> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>..\..\..\hexchat-build\Win32\bin\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + <CodeAnalysisIgnoreGeneratedCode>false</CodeAnalysisIgnoreGeneratedCode> + <Prefer32Bit>false</Prefer32Bit> + </PropertyGroup> + <PropertyGroup> + <ApplicationIcon>Resources\htm.ico</ApplicationIcon> + </PropertyGroup> + <PropertyGroup> + <ManifestCertificateThumbprint>25412E3EF25458D894050F8209E4D9DCCDF432D7</ManifestCertificateThumbprint> + </PropertyGroup> + <PropertyGroup> + <ManifestKeyFile>htm_TemporaryKey.pfx</ManifestKeyFile> + </PropertyGroup> + <PropertyGroup> + <GenerateManifests>false</GenerateManifests> + </PropertyGroup> + <PropertyGroup> + <SignManifests>false</SignManifests> + </PropertyGroup> + <PropertyGroup> + <TargetZone>LocalIntranet</TargetZone> + </PropertyGroup> + <PropertyGroup /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'"> + <PlatformTarget>x64</PlatformTarget> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>..\..\..\hexchat-build\x64\bin\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <CodeAnalysisIgnoreGeneratedCode>false</CodeAnalysisIgnoreGeneratedCode> + <Prefer32Bit>false</Prefer32Bit> + </PropertyGroup> + <ItemGroup> + <Reference Include="System" /> + <Reference Include="System.Core" /> + <Reference Include="System.Xml.Linq" /> + <Reference Include="System.Data.DataSetExtensions" /> + <Reference Include="Microsoft.CSharp" /> + <Reference Include="System.Data" /> + <Reference Include="System.Drawing" /> + <Reference Include="System.Windows.Forms" /> + <Reference Include="System.Xml" /> + <Reference Include="WindowsBase" /> + </ItemGroup> + <ItemGroup> + <Compile Include="Main.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Main.Designer.cs"> + <DependentUpon>Main.cs</DependentUpon> + </Compile> + <Compile Include="Program.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + <EmbeddedResource Include="Main.resx"> + <DependentUpon>Main.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Properties\Resources.resx"> + <Generator>ResXFileCodeGenerator</Generator> + <LastGenOutput>Resources.Designer.cs</LastGenOutput> + <SubType>Designer</SubType> + </EmbeddedResource> + <Compile Include="Properties\Resources.Designer.cs"> + <AutoGen>True</AutoGen> + <DependentUpon>Resources.resx</DependentUpon> + <DesignTime>True</DesignTime> + </Compile> + <None Include="app.config"> + <SubType>Designer</SubType> + </None> + <None Include="Properties\Settings.settings"> + <Generator>SettingsSingleFileGenerator</Generator> + <LastGenOutput>Settings.Designer.cs</LastGenOutput> + </None> + <Compile Include="Properties\Settings.Designer.cs"> + <AutoGen>True</AutoGen> + <DependentUpon>Settings.settings</DependentUpon> + <DesignTimeSharedInput>True</DesignTimeSharedInput> + </Compile> + </ItemGroup> + <ItemGroup> + <BootstrapperPackage Include=".NETFramework,Version=v4.0,Profile=Client"> + <Visible>False</Visible> + <ProductName>Microsoft .NET Framework 4 Client Profile %28x86 and x64%29</ProductName> + <Install>true</Install> + </BootstrapperPackage> + <BootstrapperPackage Include="Microsoft.Net.Client.3.5"> + <Visible>False</Visible> + <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName> + <Install>false</Install> + </BootstrapperPackage> + <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1"> + <Visible>False</Visible> + <ProductName>.NET Framework 3.5 SP1</ProductName> + <Install>false</Install> + </BootstrapperPackage> + <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1"> + <Visible>False</Visible> + <ProductName>Windows Installer 3.1</ProductName> + <Install>true</Install> + </BootstrapperPackage> + </ItemGroup> + <ItemGroup> + <Content Include="Resources\htm.ico" /> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> +</Project> \ No newline at end of file diff --git a/hexchat/src/htm/meson.build b/hexchat/src/htm/meson.build new file mode 100644 index 0000000..8fa93b0 --- /dev/null +++ b/hexchat/src/htm/meson.build @@ -0,0 +1,33 @@ +add_languages('cs') + +executable('thememan', + sources: [ + 'Program.cs', + 'Main.cs', + 'Main.Designer.cs', + ], + resources: [ + # 'Main.resx', # FIXME: Allow setting resource id + 'thememan.HTM.resources', + ], + cs_args: [ + '-r:WindowsBase', + '-r:System.Data', + '-r:System.Drawing', + '-r:System.Windows.Forms', + '-win32icon:' + meson.current_source_dir() + '/Resources/htm.ico' + ], + install: true, +) + +thememan_conf = configuration_data() +thememan_conf.set('exec_prefix', get_option('prefix')) +thememan_conf.set('bindir', join_paths(get_option('prefix'), get_option('bindir'))) + +configure_file( + input: 'thememan.in', + output: 'thememan', + configuration: thememan_conf, + install: true, + install_dir: get_option('bindir'), +) diff --git a/hexchat/src/htm/thememan.HTM.resources b/hexchat/src/htm/thememan.HTM.resources new file mode 100644 index 0000000000000000000000000000000000000000..39374ac06933b449a80cd0bef24b7b226e4dfef3 GIT binary patch literal 10228 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 literal 0 HcmV?d00001 diff --git a/hexchat/src/htm/thememan.in b/hexchat/src/htm/thememan.in new file mode 100755 index 0000000..f6f80df --- /dev/null +++ b/hexchat/src/htm/thememan.in @@ -0,0 +1,3 @@ +#!/bin/sh +exec_prefix="@exec_prefix@" +exec mono "@bindir@/thememan.exe" "$@" diff --git a/hexchat/src/libenchant_win8/libenchant_win8.def b/hexchat/src/libenchant_win8/libenchant_win8.def new file mode 100644 index 0000000..cf36765 --- /dev/null +++ b/hexchat/src/libenchant_win8/libenchant_win8.def @@ -0,0 +1,2 @@ +EXPORTS +init_enchant_provider diff --git a/hexchat/src/libenchant_win8/libenchant_win8.vcxproj b/hexchat/src/libenchant_win8/libenchant_win8.vcxproj new file mode 100644 index 0000000..a6cbdad --- /dev/null +++ b/hexchat/src/libenchant_win8/libenchant_win8.vcxproj @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{BF0EBC16-68AD-4CD1-864C-5B56836EBE2A}</ProjectGuid> + <Keyword>Win32Proj</Keyword> + <RootNamespace>libenchant_win8</RootNamespace> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Label="Configuration"> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v142</PlatformToolset> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <Import Project="..\..\win32\hexchat.props" /> + <ImportGroup Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup> + <OutDir>$(HexChatRel)lib\enchant\</OutDir> + <TargetName>libenchant_win8</TargetName> + </PropertyGroup> + <ItemDefinitionGroup> + <ClCompile> + <AdditionalIncludeDirectories>..\common;$(HexChatLib);$(DepsRoot)\include\enchant;$(DepsRoot)\include;$(Glib);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <AdditionalDependencies>$(DepLibs);%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalLibraryDirectories>$(DepsRoot)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + <ModuleDefinitionFile>libenchant_win8.def</ModuleDefinitionFile> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <ClCompile Include="win8_provider.cpp" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> +</Project> diff --git a/hexchat/src/libenchant_win8/libenchant_win8.vcxproj.filters b/hexchat/src/libenchant_win8/libenchant_win8.vcxproj.filters new file mode 100644 index 0000000..ff2f302 --- /dev/null +++ b/hexchat/src/libenchant_win8/libenchant_win8.vcxproj.filters @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Source Files"> + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> + <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> + </Filter> + <Filter Include="Header Files"> + <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> + <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions> + </Filter> + <Filter Include="Resource Files"> + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> + </Filter> + </ItemGroup> + <ItemGroup> + <ClCompile Include="win8_provider.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + </ItemGroup> +</Project> diff --git a/hexchat/src/libenchant_win8/win8_provider.cpp b/hexchat/src/libenchant_win8/win8_provider.cpp new file mode 100644 index 0000000..73f1661 --- /dev/null +++ b/hexchat/src/libenchant_win8/win8_provider.cpp @@ -0,0 +1,293 @@ +/* HexChat + * Copyright (c) 2015 Patrick Griffis + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "config.h" + +#include <Spellcheck.h> +#include <glib.h> + +#include "typedef.h" // for ssize_t +#include <enchant-provider.h> + +ENCHANT_PLUGIN_DECLARE ("win8") + +/* --------- Utils ----------*/ + +static char * +utf16_to_utf8 (const wchar_t * const str, gboolean from_bcp47) +{ + char *utf8 = g_utf16_to_utf8 ((gunichar2*)str, -1, nullptr, nullptr, nullptr); + if (utf8 && from_bcp47) + { + char *p = utf8; + /* bcp47 tags use syntax "en-US" while the myspell versions are "en_US" */ + while (*p) + { + if (*p == '-') + *p = '_'; + p++; + } + } + return utf8; +} + +static wchar_t * +utf8_to_utf16 (const char * const str, size_t len, gboolean to_bcp47) +{ + wchar_t *utf16 = (wchar_t*)g_utf8_to_utf16 (str, len, nullptr, nullptr, nullptr); + if (utf16 && to_bcp47) + { + wchar_t *p = utf16; + /* bcp47 tags use syntax "en-US" while the myspell versions are "en_US" */ + while (*p) + { + if (*p == L'_') + *p = L'-'; + p++; + } + } + return utf16; +} + +static char ** +enumstring_to_chararray (IEnumString *strings, size_t *out_len, gboolean from_bcp47) +{ + char **chars = g_new (char*, 256); /* Hopefully large enough */ + LPOLESTR wstr = nullptr; + size_t i = 0; + + while (SUCCEEDED (strings->Next (1, &wstr, nullptr)) && i < 256 && wstr) + { + char *str = utf16_to_utf8 (wstr, from_bcp47); + if (str) + { + chars[i] = str; + i++; + } + CoTaskMemFree (wstr); + } + chars[i] = nullptr; + strings->Release (); + + *out_len = i; + return chars; +} + +/* ---------- Dict ------------ */ + +static void +win8_dict_add_to_personal (EnchantDict *dict, const char *const word, size_t len) +{ + auto checker = static_cast<ISpellChecker*>(dict->user_data); + wchar_t *wword = utf8_to_utf16 (word, len, FALSE); + + checker->Add (wword); + g_free (wword); +} + +static void +win8_dict_add_to_session (EnchantDict *dict, const char *const word, size_t len) +{ + auto checker = static_cast<ISpellChecker*>(dict->user_data); + wchar_t *wword = utf8_to_utf16 (word, len, FALSE); + + checker->Ignore (wword); + g_free (wword); +} + +static int +win8_dict_check (EnchantDict *dict, const char *const word, size_t len) +{ + auto checker = static_cast<ISpellChecker*>(dict->user_data); + wchar_t *wword = utf8_to_utf16 (word, len, FALSE); + IEnumSpellingError *errors; + ISpellingError *error = nullptr; + HRESULT hr; + + hr = checker->Check (wword, &errors); + g_free (wword); + + if (FAILED (hr)) + return -1; /* Error */ + + if (errors->Next (&error) == S_OK) + { + error->Release (); + errors->Release (); + return 1; /* Spelling Issue */ + } + else + { + errors->Release (); + return 0; /* Correct */ + } +} + +static char ** +win8_dict_suggest (EnchantDict *dict, const char *const word, size_t len, size_t *out_n_suggs) +{ + auto checker = static_cast<ISpellChecker*>(dict->user_data); + wchar_t *wword = utf8_to_utf16 (word, len, FALSE); + IEnumString *suggestions; + HRESULT hr; + + hr = checker->Suggest (wword, &suggestions); + g_free (wword); + + if (FAILED (hr)) + { + *out_n_suggs = 0; + return nullptr; + } + + return enumstring_to_chararray (suggestions, out_n_suggs, FALSE); +} + +/* ---------- Provider ------------ */ + +static EnchantDict * +win8_provider_request_dict (EnchantProvider *provider, const char *const tag) +{ + auto factory = static_cast<ISpellCheckerFactory*>(provider->user_data); + ISpellChecker *checker; + EnchantDict *dict; + wchar_t *wtag = utf8_to_utf16 (tag, -1, TRUE); + HRESULT hr; + + hr = factory->CreateSpellChecker (wtag, &checker); + g_free (wtag); + + if (FAILED (hr)) + return nullptr; + + dict = g_new0 (EnchantDict, 1); + dict->suggest = win8_dict_suggest; + dict->check = win8_dict_check; + dict->add_to_personal = win8_dict_add_to_personal; + dict->add_to_exclude = win8_dict_add_to_personal; /* Basically the same */ + dict->add_to_session = win8_dict_add_to_session; + + dict->user_data = checker; + + return dict; +} + +static void +win8_provider_dispose_dict (EnchantProvider *provider, EnchantDict *dict) +{ + if (dict) + { + auto checker = static_cast<ISpellChecker*>(dict->user_data); + + checker->Release (); + g_free (dict); + } +} + +static int +win8_provider_dictionary_exists (EnchantProvider *provider, const char *const tag) +{ + auto factory = static_cast<ISpellCheckerFactory*>(provider->user_data); + wchar_t *wtag = utf8_to_utf16 (tag, -1, TRUE); + + BOOL is_supported = FALSE; + factory->IsSupported (wtag, &is_supported); + + g_free (wtag); + return is_supported; +} + + +static char ** +win8_provider_list_dicts (EnchantProvider *provider, size_t *out_n_dicts) +{ + auto factory = static_cast<ISpellCheckerFactory*>(provider->user_data); + IEnumString *dicts; + + if (FAILED(factory->get_SupportedLanguages (&dicts))) + { + *out_n_dicts = 0; + return nullptr; + } + + return enumstring_to_chararray (dicts, out_n_dicts, TRUE); +} + +static void +win8_provider_free_string_list (EnchantProvider *provider, char **str_list) +{ + g_strfreev (str_list); +} + +static void +win8_provider_dispose (EnchantProvider *provider) +{ + if (provider) + { + auto factory = static_cast<ISpellCheckerFactory*>(provider->user_data); + + factory->Release(); + g_free (provider); + } +} + +static const char * +win8_provider_identify (EnchantProvider *provider) +{ + return "win8"; +} + +static const char * +win8_provider_describe (EnchantProvider *provider) +{ + return "Windows 8 SpellCheck Provider"; +} + +extern "C" +{ + +EnchantProvider * +init_enchant_provider (void) +{ + EnchantProvider *provider; + ISpellCheckerFactory *factory; + + if (FAILED (CoCreateInstance (__uuidof(SpellCheckerFactory), nullptr, + CLSCTX_INPROC_SERVER, IID_PPV_ARGS (&factory)))) + return nullptr; + + provider = g_new0 (EnchantProvider, 1); + provider->dispose = win8_provider_dispose; + provider->request_dict = win8_provider_request_dict; + provider->dispose_dict = win8_provider_dispose_dict; + provider->dictionary_exists = win8_provider_dictionary_exists; + provider->identify = win8_provider_identify; + provider->describe = win8_provider_describe; + provider->list_dicts = win8_provider_list_dicts; + provider->free_string_list = win8_provider_free_string_list; + + provider->user_data = factory; + + return provider; +} + +} diff --git a/hexchat/src/meson.build b/hexchat/src/meson.build new file mode 100644 index 0000000..23453ec --- /dev/null +++ b/hexchat/src/meson.build @@ -0,0 +1,13 @@ +subdir('common') + +if get_option('gtk-frontend') + subdir('fe-gtk') +endif + +if get_option('text-frontend') + subdir('fe-text') +endif + +if get_option('theme-manager') + subdir('htm') +endif diff --git a/hexchat/src/version-script b/hexchat/src/version-script new file mode 100644 index 0000000..a7ed149 --- /dev/null +++ b/hexchat/src/version-script @@ -0,0 +1,45 @@ +EXPORTED { + global: + hexchat_hook_command; + hexchat_event_attrs_create; + hexchat_event_attrs_free; + hexchat_hook_server; + hexchat_hook_server_attrs; + hexchat_hook_print; + hexchat_hook_print_attrs; + hexchat_hook_timer; + hexchat_hook_fd; + hexchat_unhook; + hexchat_print; + hexchat_printf; + hexchat_command; + hexchat_commandf; + hexchat_nickcmp; + hexchat_set_context; + hexchat_find_context; + hexchat_get_context; + hexchat_get_info; + hexchat_get_prefs; + hexchat_list_get; + hexchat_list_free; + hexchat_list_fields; + hexchat_list_next; + hexchat_list_str; + hexchat_list_int; + hexchat_plugingui_add; + hexchat_plugingui_remove; + hexchat_emit_print; + hexchat_emit_print_attrs; + hexchat_list_time; + hexchat_gettext; + hexchat_send_modes; + hexchat_strip; + hexchat_free; + hexchat_pluginpref_set_str; + hexchat_pluginpref_get_str; + hexchat_pluginpref_set_int; + hexchat_pluginpref_get_int; + hexchat_pluginpref_delete; + hexchat_pluginpref_list; + local: *; +}; diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..256ab52 --- /dev/null +++ b/readme.md @@ -0,0 +1,30 @@ +# HexChat + +The hexchat tree is only here in case something in hexchat is to be backported to xchat. +Actually picking up from 2.8.8, will apply stuff from hexchat relevant to linux. + +Below is original readme from that tree, moved here. + +HexChat is an IRC client for Windows and UNIX-like operating systems. +See [IRCHelp.org](http://irchelp.org) for information about IRC in general. +For more information on HexChat please read our [documentation](https://hexchat.readthedocs.org/en/latest/index.html): +- [Downloads](http://hexchat.github.io/downloads.html) +- [FAQ](https://hexchat.readthedocs.org/en/latest/faq.html) +- [Changelog](https://hexchat.readthedocs.org/en/latest/changelog.html) +- [Python API](https://hexchat.readthedocs.org/en/latest/script_python.html) +- [Perl API](https://hexchat.readthedocs.org/en/latest/script_perl.html) + +--- + +<sub> +X-Chat ("xchat") Copyright (c) 1998-2010 By Peter Zelezny. +HexChat ("hexchat") Copyright (c) 2009-2014 By Berke Viktor. +</sub> + +<sub> +This program is released under the GPL v2 with the additional exemption +that compiling, linking, and/or using OpenSSL is allowed. You may +provide binary packages linked to the OpenSSL libraries, provided that +all other requirements of the GPL are met. +See file COPYING for details. +</sub> diff --git a/xchat-2.8.8/AUTHORS b/xchat-2.8.8/AUTHORS new file mode 100644 index 0000000..e69de29 diff --git a/xchat-2.8.8/COPYING b/xchat-2.8.8/COPYING new file mode 100644 index 0000000..eeb586b --- /dev/null +++ b/xchat-2.8.8/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) 19yy <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/xchat-2.8.8/ChangeLog b/xchat-2.8.8/ChangeLog new file mode 100644 index 0000000..963e777 --- /dev/null +++ b/xchat-2.8.8/ChangeLog @@ -0,0 +1,2238 @@ + .----------------------. +--| X-Chat ChangeLog |-------------------------------------------- + `----------------------' + +To see more details of bugs, go to this URL: +http://sf.net/tracker/?func=detail&atid=100239&group_id=239&aid=NUMBER +Where "NUMBER" is the bug number. + +This log DOES NOT apply to XChat for Windows. + +There are always more changes than listed here, these are just the +highlights. The full CVS log is available at www.xchat.org/cvslog/ + +------------------------------------------------------------------------------ + 2.8.8 - 30/May/2010 +------------------------------------------------------------------------------ + + - Made balloon time adjustable via /set input_balloon_time (Nicoleau Fabien). + - Fixed a crash in the /SET command if a boolean value was loaded from config + file that isn't set to 0 or 1. + - Added -on and -off parameters to the /SET command. This can be used to set + bits, for example gui_tweaks. + - Made scrolling backwards for the search window act better (Richard Hitt). + - [2045483] Made ESC key close the search window (Richard Rowell). + - Improved the reconnect logic. If a network is already open but disconnected, + it'll now get re-used if you use the Network List and connect to that same + network. + - Improved scrollback reloading speed significantly (Soeren Sandmann Pedersen). + - [2957047] Handle CTCPs when IDmsg is used correctly (Lian Wan Situ). + - [2987626] Allow /GHOST's password arg to be optional (Ori Avtalion). + - Added networks: 7-indonesia, ChattingAway, GeekShed, TURLINet. + - When switching tabs, make the treeview only scroll if the selected item + isn't visible [treeview-less-jumping.diff] (Brian Evans). + - Selecting an item in the nickmenu will now copy it to clipboard (Alex + Kutepow). + - New icons for notification area (systray): file offer, message and highlight + (Brian Evans). + - Defined a comparison routine for contexts in Python (Brian Evans). + - For the auto-join command, added an 'x' filler for empty keys. This works + around a bug in ircd-seven. + - When a single channel MODE changes, xchat will no longer re-issue a MODE + request for the titlebar display, but figure the new modes intelligently + (Brian Evans). + - Various text event changes (Brian Evans): + 1. Added "Private Action", "Private Action to Dialog", "SSL Message". + 2. Added "Identified text" parameter all the 'action' events. + 3. Added a $3 parameter to "Server Text". + - Perl (Lian Wan Situ) + * Fixed a bug that resulted in timer hooks being leaked because + "return REMOVE" from a timer callback was not unhooking like it was + supposed to + * Reverted the unintentional change to how the server argument of print() + and command() is interepreted when it is undef + * Add hook_fd to the 'hooks' export tag + * Fixed a leak in XS_Xchat_get_list(Vincent Pit) + * Change Xchat::register so that scripts calling it without a name or + version will still show up in the plugins and scripts window. + * Added calls to PERL_SYS_INIT3 and PERL_SYS_TERM which are required on + some platforms + * Added some additional guards to prevents bits of scripts from spilling + into each other + * Added "modes", "win_ptr" and "xchatdirfs" to the list of keys that are + returned by context_info() + * Changed the information displayed in the "Plugins & Scripts" for scripts + that do not call register() to show up as "" for the name and description + and "unknown" for the version + * /reloadall will now reload scripts in the same order they were loaded + * Make xchat_send_modes available as Xchat::send_modes + * Add support for getting the network list using Xchat::get_list( "networks" ) + * Xchat::strip_code will now strip off ANSI escape codes as well + + +------------------------------------------------------------------------------ + 2.8.6 - 11/Jun/2008 +------------------------------------------------------------------------------ + + - Updated translations (de, fi, fr, hu, lt, nb, ru, th, zh_CN). + - Fixed creation of ~/.xchat2/scrollback/ paths (xc284-scrollbmkdir.diff). + - Fixed a leak of file descriptors related to the scrollback feature + (resource leak) (xc284-fix-scrollbfdleak.diff). + - Stopped scrollback files growing too large by fixing the file-shrink code. + - Put a "Display scrollback from previous session" into the Setup GUI + (logging section) so people can turn this off without typing commands. + - Made /away work even when the reason setting is empty. + - Using /part on a channel that contains a quotation mark now works [1800855]. + - Changed the default encoding to "IRC" (CP1252/Unicode Hybrid) for both Unix + and Windows. + - Fixed a possible Channel List crash if you searched many times while the + download was still going. + - Fixed alert balloons failing if the text contained "<" characters [1827629]. + - The Drag&Drop files to userlist feature has been enabled again. + - Removed the /set tab_icons setting and made it automatic (see FAQ for more + info about icons). + - Fixed a bug in creating files (save channel list, rawlog etc) that would set + the wrong permissions. + - Added command line argument --command=COMMAND which can be used in + conjuction with --existing (E.K.L.). This sends any xchat command to an + existing (running) client. + - A private SSL key/certificate can now be loaded from ~/.xchat2/client.pem. + - The Alerts settings now accept wildcards, instead of partitial string match + [1807563]. + - Changing away status during reconnect/disconnect will now remember it. + - You can now change your Away/Back status (all networks) in the tray menu. + - Favorite Channels / Auto-Join-List management: + * Network List window now has a "..." button to edit the auto-join-list in + a more friendly way. + * Channel(text area), Tree/Tab and Channel-List right-click menus now have a + "Add to Favorites" function. + * Previous limit of 300 bytes has been overcome. Now up to 2 KB worth of + channels/keys can be joined and it will be automatically split into + multiple lines, if necessary. + * Per-Channel settings now save to disk, including Logging and Scrollback + settings. + * /ChanOpt has been re-worked to be more like /Set. + - 'hostname:port' syntax is now accepted, if it's not an IPv6 address. + - The Userlist right-click menu now has icons and an option to add to friends + list. If you've edited this menu before you'll still get the old one. To get + the new one delete ~/.xchat2/popup.conf while XChat isn't running. + - ~/.xchat2/startup.txt is now loaded on launch (like /LOAD -e). Put any + commands you want executed at startup here. + - The lag-o-meter now has a full scale of 1.0 seconds. + - libnotify is now opened directly instead of using 'notify-send' to open + tray/balloon alerts. + - Added support for QuakeNet's /AUTH for nick password, when numeric 005 + NETWORK=QuakeNet is detected. + - You can now copy with IRC attributes and mIRC colors if CTRL key is down + when a selection is finished (on mouse release). This replaces the old + "Color paste" feature. + - Added a 'compact' flag to gui_tweaks. This'll make the userlist and tree + spacing smaller. E.g. type /set -or gui_tweaks 32 and restart to turn it on. + - The /CLEAR command takes a number as paramater (how many lines to clear). + - When there's missing information in the Userlist right-click menu, it'll + issue a silent /WHOIS and fill it in. This includes retrieving a person's + away-reason. + - Perl (Lian Wan Situ) + * /reloadall will now reload all the scripts that are currently load instead + of simply reruning the autoload routine + * gtk/glib/gdk errors and warnings have been redirected back to stderr so + they will no longer show up in the text box as a result of having the Perl + plugin loaded + * Check if the user has perl 5.6 instead of 5.8 and give an warning dialog + if they do (Peter Zelezny) + * Changed timer callbacks so that they are executed in the context that they + were created in + * Modified Xchat::print and Xchat::command to accept array references in + addition to strings for the channel and server parameters + - Plugin API: + * xchat_emit_print() will now trigger Sound, Blink, Icon etc type events, + depending on user's settings. + * Fixed a bug where not all 32 elements were available in word[]/word_eol[]. + + +------------------------------------------------------------------------------ + 2.8.4 - 01/Jul/2007 +------------------------------------------------------------------------------ + + - Updated translations (cs, de, ko, mk, sv, vi). + - System-Tray balloons now get the xchat icon instead of a generic one. + - Fixed the notify-send zombies (released as xc282-fixtrayzombies.diff). + - Fixed underscore ('_') in real names in the nick-name right-click menu being + drawn as a underline. + - ut2004:// URLs are now underlined too. + - /set gui_tray_flags 4 will now enable a "Minimize to tray" feature. Clicking + the window minimize button will minimize to tray instead of the task-bar. + - Fixed bug: [1680762] Notify fails if network name contains spaces. + - Extended tclConfig.sh search paths so it hopefully works on Ubuntu now. + - Added a feature that reloads conversations from last time you used XChat + (type /set text_replay 0 to disable it). + - Fixed /LASTLOG printing everything twice if you had Indented Nicks off. + - The CTRL-F keybinding (Find) is now disabled when using Emacs keys. + - Added /SET gui_tweaks. See http://forum.xchat.org/viewtopic.php?p=13766 + - Fixed opening URLs on KDE that didn't begin with http:// or other protocol. + - A better quit dialog which warns you if you're connected to IRC or have + active file transfers. + - Fixed: [1741525] Cycle selected channel (Luca Falavigna). + - Fixed: [1737249] Doesn't recognize nicks with halfop mode on hovering. + - The userlist and treeview can now be placed on the same side, with a resize + handle in between them. They can also be dragged and dropped into place. + - When you hide the userlist using the View menu, the resize handle now + disappears too. It also disappears when you have a server tab in focus. + - If you have a tree on one side and userlist on the other, they'll both now + have a resize handle, previously the tree's size was fixed. + - The userlist can be hidden and shown with CTRL+F7. + - [1735116] Channel List's minimum users spin-button can now be set downward + even on networks that sent a list of channels of only a larger size. In this + case the Download button will flash to indicate you need to download a new + list. + - Changing the channel switcher type (Tree or Tabs) is also possible in the + setup dialog. + - The Ban List window now lists exceptions too (mode +e). + - Script and Plugin related changes: + * /SETTEXT with no argument now clears the input box. + * Python: Added a xchat.strip method for stripping IRC attributes and mIRC + color codes. + * C-API and Perl: Returning 0 from a FD hook will now remove the hook and + free all associated memory. + * /MENU now supports a $CHAN root aswell (see plugin20.html). + * Fixed GDK warning when using /MENU to add a key binding to a popup menu. + + +------------------------------------------------------------------------------ + 2.8.2 - 01/Apr/2007 +------------------------------------------------------------------------------ + + - Updated translations (be, ca, cs, el, hu, sv, uk, zh_CN). + - Fixed the "Save As" function saving to the wrong folder in the URL Grabber. + - Fixed a bug in the "Copy Selected Link" URL right-click on non-ASCII chars. + - Fixed small bug: #100239 buffer overflow in setup dialog. + - Overhauled the Alerts section of the settings and added support for opening + system-tray balloons (libnotify required). + - Implemented /TRAY -b command on unix. + - Nick serv authentication is now sent without the ":" when using the + /NICKSERV or /NS method. #1655733. + - Added command line argument: + --minimize=level Begin minimized. Level 0=Normal 1=Iconified 2=Tray + - Plugin API: + * Added "modes" to xchat_get_info(). Returns the current channel modes, if + they are known. + * Fixed "event_event name" for xchat_get_info() to match the docs exactly, + but 2.8.0 (mis)behaviour works too. + - Perl (Lian Wan Situ) + * Execute the shutdown callback before removing the hooks so commands + created by the script can be used in the callback. + + +------------------------------------------------------------------------------ + 2.8.0 - 03/Jan/2007 +------------------------------------------------------------------------------ + + - Updated translations (cs, de, gl, hu). + - XChat now requires at least GTK+ 2.10. + - Added a system tray icon (aka Notification Area). This is probably the + biggest feature addition in this series. Also added a /TRAY command so + scripts can manipulate the icon. + - Added partial support for numeric 005 token ELIST (min users only). + - Brand new channel list window: GtkTreeView, nicer layout, less CPU power + when downloading very large list, uses less memory, supports regexp/ + patternmatch/substring search and supports downloading LIST with minusers to + save time (only on some networks that support ELIST). + - Overhauled URL opening on Unix, it now tries xdg-open first, then auto- + detects Gnome or KDE to run gnome-open or kfmclient. URLs with quotes + should also work now (changed to execv()). + - Settings: Warn the user when trying to put the tree on the top/bottom. + - Fixed DCC ack reading so it doesn't use MSG_PEEK. + - Channel modes are no longer shown in the titlebar if they contain a key. + - Added /GUI APPLY command, which does that same as pressing OK in the + settings window (e.g use it after /set). Mainly for scripters. + - Allow changing the logging folder if the log filename is set to a full path + in the settings window (starts with a '/'). + - Added 'Your Action' text event. + - Separated out /away and /back commands so it's obvious what they'll do. + - Changes to /MENU command (See plugin20.html for details): + * Now works for popup menus too. + * Allows creation of radio menu items. + * -p arg can now to be negative to give a position offset from right/bottom. + * -i arg to specify an icon file. + - Plugin API: + * Added event_text to xchat_get_info(). + - Perl (Lian Wan Situ) + * Fixed hook_command so that it won't override the help message for builtin + commands unless a help message was specified. + * Perl Win32: Warn the user about trying to load 64-bit ActivePerl. + + +------------------------------------------------------------------------------ + 2.6.8 - 16/Oct/2006 +------------------------------------------------------------------------------ + + - Updated translations (be, de, el, es, fi, hu, it, ja, lt, pt, ru, sv, vi). + - Removed "xchat-remote" and "dbus.so", it's now apart of the "xchat" binary. + There is now a new dbus interface, see src/common/dbus/README for details. + (Claessens Xavier). + - Python: Fixed "restricted mode" errors on win32 [1512076]. + - Special-cased BRASnet for nickserv. + - Fixed using the /MENU args -p and -e at the same time. + - Fixed /reconnect and auto-reconnect issue [1525383]. + - Plugin API: + * Added fields: lag, queue to the "channels" list. + * Added fields: sizehigh to the "dcc" list. + * Added fields: networks to the "notify" list. + * Handle gracefully plugins that try to execute commands with invalid UTF-8. + * Added /GETFILE command, to open a file dialog. + * Command hooks that start with a period ('.') will now be hidden from /HELP + and /HELP -l. + - Fixed: [1544960] quitting via tabs behaves bad on bncs. + - Fixed: [1551620] --version flag needs display. + - Fixed: [1539236] problem with the /url command (irc:// handling). + - Fixed: [1568931] treeview problem: closing tabs by holding shift and + clicking. + - "Clear" button in Ban List window now has a 'Are you sure?' dialog for + safety. + - The notify list can now contain entries specific to only one or more IRC + networks. + - Userlist popup menu and buttons: added %e for 'current network name'. + - Added option: 'Flash taskbar on any private messages'. + - Added a new encoding choice: "IRC (Latin-1/UTF-8 hybrid)". + How it works is described at: http://forum.xchat.org/viewtopic.php?t=3180 + - Added /LastLog -r <regexp>. + - The DCC windows have been remodeled and are much nicer now. Ported to + GtkTreeView, the buttons are context sensitive, the window remembers its + size and uploads and downloads are combined in one window. + - Perl (Lian Wan Situ) + * Changed Xchat::print and Xchat::command to return false if they are called + with either no arguments or undef + * Changed Xchat::user_info so that it works even if the nick parameter + contains color codes + + +---------------------------------------------------------------------- + 2.6.6 - 18/Jul/2006 +---------------------------------------------------------------------- + + - Updated translations (es, fr, sr). + - Fixed connecting to a IRC server via proxy (bug in 2.6.4 only). + - Fixed the invisible cursor color when using GTKSpell and a black + input box (when "Use the text box font & colors" is ON). + - Allow loading a cert/privatekey file from ~/.xchat2/<NetWorkName>.pem + - Improved the fallback routine when you receive non-UTF8 messages. It + can now handle CP1252 from mIRC users and the ISO-8859-15 Euro symbol. + - Added CHANOPT command for setting channel specific options such as showing + of joins and part, beep on message and color paste (Lian Wan Situ). + - /CLEAR HISTORY will clear your command history. + - Fixed a crash if you left a Ban-List window open after closing the + associated channel and then clicking Refresh. + - Added an option of using 'Last-Spoke' nick completion order in Settings > + Input Box. + - The /QUERY command now has -nofocus arg, which scripts might find useful. + - You can now /set gui_url_mod 0, to allow left-clicking URLs (default is + 4, for CTRL). + - XChat will now respect gtk-button-images=0 set in ~/.gtkrc-2.0. + - Added a ./configure option to use your preferred spelling library: + --enable-spell=type. Where type can be: none static libsexy gtkspell. + Note that using gtkspell will force the inputbox to become a GtkTextView. + - Advanced users can /set tab_small 2, to get _extra_ small tabs. + - Added /SPLAY <soundfile>. + - Plugin API: + * The second args to xchat_list_int and xchat_list_str can now be NULL as + a shortcut to "channels" list for current context only. + * Added bits 6-8 to the field "flags" in the "channels" list. + * /GUI MSGBOX <text> can now contain Pango markup. + * Added -m arg to /MENU. See plugin20.html for more. + - Perl (Lian Wan Situ) + * Fixed a bug with Xchat::print that prevents printing out a + single 0(Lian Wan Situ) + * Fixed a bug in Xchat::get_prefs that was clobbering the stack(Sergio Luis) + * Allow scripts that use a non-existent function for the shutdown callback + to be unloaded(Lian Wan Situ) + * Added check in set_context for undef + * Added the fields from get_list "channels" for the current context to the + result of context_info + + +---------------------------------------------------------------------- + 2.6.4 - 08/Jun/2006 +---------------------------------------------------------------------- + + - Updated translations (de, el, es, gl, hu, nl, sv, vi, zh_TW). + - Fixed opening a irc:// URL via "xchat -a --url=abc123" command while + "Skip serverlist on startup" is off. This fix is only relevant when + opening an initial instance of xchat (i.e not via dbus). + - Fixed the tree layout "flashing" (redrawing slowly) after you + switched to tabs and back to tree. + - Fixed plugin/script get_list("users") causing a critical GDK warning + when not executed from the front-most tab. + - Added spelling support in the input-box via GTKSpell. + - Improved the error reporting when connecting through a Socks proxy. + - DCC file transfers via http/socks45/wingate proxy is now supported + (Damjan Jovanovic & me). + - Fixed Socks 5 failing on 64-bit CPUs. + - Added support for connecting through a Microsoft ISA Proxy, requires + libntlm at build time (Pavel Fedin). + - You can now mark and copy timestamps if you hold down SHIFT. + - Timestamps are now preserved in the /lastlog command. Also fixed a + bug where the separator line disappeared during /lastlog. + - Added a Browse button to the DCC download folder setting. + - Made the setup window a little neater and Gnome-like. + - Improved the notify window a little and fixed a small memory leak. + - Fixed CTCPs being truncated in the RawLog window. + - Added an option to open a "Save As..." dialog when receiving a + DCC file offer. + - Fixed a crash if you try to remove a network from the list while + it's in a auto-reconnect delay [debian bug #364858]. + - Python: Fixed some memory usage bugs. + - Perl: Turned on utf8 flag for things that should have it on. + + +---------------------------------------------------------------------- + 2.6.2 - 27/Mar/2006 +---------------------------------------------------------------------- + + - Updated translations (de, fr, ja, sv). + - Made "/server freenode" send auto-join channels but not + "/server irc://freenode". + - Fixed building of xchat-text (although not recommended!). + - Fixed using Strip mIRC colors & Color nicks at the same time. + - Fixed a bug in timestamp drawing using non-fixed-width font [1404341]. + - Fixed display of realname in the nick-name right-click menu when it + contains a '<' or '&' character [1403069]. + - Added support for UniBG's nickserv (ongeboren). + - The move-to-complete-dir routine now treats encoding/UTF8 correctly. + - Show help when using wrong args for /DCC, instead of silence. + - Support receiving 2048 bytes per line from server and dcc-chat, so we + can support 512 UTF-8 characters that some servers now send. + - Added /gui detach and /gui attach commands for scripters. + - The server list window now remembers its size. + - TCL: Added 'selected' flag to users list. + - Perl: + * Fixed strip_code so that it no longer takes off extra commas (LifeIsPain) + * Fixed filename checks so that '/load "filenameWithoutSpaces.pl"' + will also work (Lian Wan Situ). + * Fixed hook_fd to work with sockets on Windows (Vince Pit). + + +---------------------------------------------------------------------- + 2.6.1 - 06/Jan/2006 +---------------------------------------------------------------------- + + - Updated translations (de, el, fi, fr, gl, hu, ko, nl, pa, sq, vi). + - Added support for log rotation based on time or date. + - Double-click in tree layout will now expand/collapse (Lian Wan Situ). + - Keys to move tabs around now work in Tree layout too (Lian Wan Situ/Me). + - Largely re-written "Search Text" function with much better + behaviour and match case on/off and search backwards options + (Richard Hitt and Me). + - The parent row in the tree layout now changes color if you have + that group collapsed (Lian Wan Situ). + - Fixed crash when trying to Detach or Close a utility tab via + right-click, when it's not the currently focused tab. + - Made DCC resume handle case-insensitive file systems properly. + - Fixed the flashing when you click on a colored treeview row. + - Fixed auto-completion during /exec -o [1375530]. + - Added "Join Channel" menu item to the Server menu. + - Unshade the Disconnect menu item when a connection is in progress. + - Fixed a possible crash in changing color settings before changing + to/from the tree layout (SF bug #1349088). + - Added "Auto accept file offers" to the File Transfer settings. + - Added support for brackets "<>" around nicknames in cut and paste, + without displaying them (hidden text) (Camillo Lugaresi). + - Fixed opening URL irc://NetWork/#channel not joining the channel + [1362155]. + - Fixed the nickname label becoming small when you're marked Back + if you have "Small tabs" turned on. + - The textevents GUI has been re-written to use GtkTreeView. + - Randomized DNS lookups on Mac OS X on hostnames that return + multiple IP numbers (SG / CL). + - Added a dialog window to help newbies join a channel. + - Opening irc:// URLs will now JOIN only if you are already connected + to the network. + - Plugin API (Lian Wan Situ): + * Added selected flag to "users" list. + * Added "id" to xchat_get_prefs. + * Changed xchat_find_context (ph, channel, NULL) to return results + from the same server group as the current context when possible. + - Perl (Lian Wan Situ): + * using emit_print/command/recv will no longer trigger their own + callbacks. + * Fix compiling issues with versions older than 5.8.2. + * Make all scripts appear in the "Plugins and Scripts" window, even + those that do not call register(). + + +---------------------------------------------------------------------- + 2.6.0 - 03/Nov/2005 +---------------------------------------------------------------------- + + - Updated translations (nl, zh_TW). + - Message boxes are now warning, error or info with appropriate icon. + - Red marker line feature enabled by default. + - Added /SEND <nick> [file] which will automatically switch to PSEND + when detecting a private net address. + - Simplified default nick-right-click menu. + - Show "Last Talk" in nick-right-click menu as "minutes ago". + - Strip mIRC colour from away message in right-click menu. + - Warn when opening banlist in non-channel. + - Reorganised and simplified IRC/Server menus and new View menu. + - The editable Server menu is no more, if you want it type + /set gui_usermenu 1 and restart. + - Option to view channels in tabs or tree structure. + - Shorter titlebar text for better viewing in taskbar. + - Disabled key-search in server list, as GTK's auto-find does this + better. + - Removed "Connect in new tab" button in server list, it now does it + intelligently. Use stock Connect icon. + - Removed "Tint (shade) transparency" item from settings and figure + it out based on tint values. + - When closing a tab, re-focus the one near by, instead of always the + last. + - Firefox style close button. + - The lag and throttle metres now have tooltips that give you real + information (hover the pointer over them). + - Added workaround to show on-join ChanServ notices in the right tab. + - Tab scroll buttons are now side-by-side when in vertical mode. + - Automatically change key shortcut of "Marked Away" if the + translation already uses ALT-A for the Help menu (e.g _Aide in + French). + - Your nickname in the bottom-left corner now turns gray when you are + marked away, just like the userlist. + - Introduced a delay before joining channels, to allow for FreeNode's + short comings. If a umode +e is received it'll send auto-join + channels immediately. + - Plugin API: Added win_ptr to xchat_get_info. + - Non-irc (utility) tabs can now be detached aswell. + - Fixed behaviour problems of the userlist pane, which might be set + incorrectly if the window was resized while a server-tab is focued. + - Added a confirm-dialog when trying to close a server-tab with + children. + - Server list's edit window now gives you an option of a network + specific "Second choice" nickname. + - Auto detect RusNet and use /NICKSERV to identify instead of /MSG. + - Added /Ghost command. + - Fixed: The WHOIS away-line ignored irc_whois_front setting. + - Scroll-wheel now works while hovering over a tab (Lian Wan Situ). + - The input box right-click menu now has bold, underline and italic. + - Added xchat-remote for launching irc:// URLs in existing xchat + and other functions (Claessens Xavier). + - WIN32: Auto-loading perl scripts now also works from: + C:\Program Files\XChat\Plugins\ + - Better command-line parameter parsing via GOption. + - Tab completion order can now be in "last talk" order if you + /set completion_sort 1. + - "Channel Action" and "Channel Action Hilight" now have a 3rd + argument of "Mode char", just like normal message events. The last + talk time is also now updated on actions. + - Reworked the Character Chart window so you can find your char. + - Perl: + - fixed so that printf and commandf are exported + - print and printf can also be called as prnt and prntf, this is to + avoid clashing with the builtins. + - Deprioritized MODE/WHO to reduce join lag. + - WIN32: Mask out more invalid filename characters when writing to + log files. + + +---------------------------------------------------------------------- + 2.4.5 - 10/Sep/2005 +---------------------------------------------------------------------- + + - Updated translations (cs, el, fr, gl, it, nl, sl, sr, vi, zh_TW). + - Fixed incorrect information displayed in Plugins & scripts window + under unix (xc244-fixpluginns.diff). + - Added "/set irc_whois_front 1" option to show WHOIS in front tab. + - Lots of speed ups under the hood, mainly in handling of URL + highlighting during mouse motion. Also now allows underlining + .name and .info domains [1230265]. + - Moved the "Insert color code" menu into the input box's right- + click menu. + - Fixed "Your Message" messing up when starting with a comma + [1230269]. + - Added /id command to identify yourself to nickserv. + - Added /gui MSGBOX <text> for scripters. + - Added /menu command which lets plugins/scripts add their own + menu items. + - Added support for passive DCC chat via /DCC PCHAT <nick>. + - Added support for DCC sending and receiving very large files + (above 4 GB). + - Improved layout of "Info" button in the DCC windows. + - Improved layout of the nick-name right-click menu. + - Improved /help command's display of plugins/script commands. + - Fixed two bugs in detaching tabs (or CTRL-I) [1228926]. + - Added /uselect command for scripters to select nick names in the + channel userlist (Daniel P. Stasinski). + - Fixed possible crashes while using the SJIS (Japanese) charset. + - Fixed various memory leaks in right-click menus. + + +---------------------------------------------------------------------- + 2.4.4 - 20/Jun/2005 +---------------------------------------------------------------------- + + - Updated translations (hi, ko, lt, pa, ru, vi, zh_TW). + - People's away message is now shown in the right-click menu, if + known (Christopher Aillon). + - The "Bind to:" setting can now be set to 0.0.0.0 [1176256]. + - Plugin API: Don't crash if a print-event closes the current context + and doesn't eat the event [1175674]. + - Disabled parsing of quotation marks for /JOIN, so you can join + channels with a quote in them (Dan Fruehauf). + - Fixed truncation of the URL in the right-click menu. Now handles + UTF-8 properly [1188229]. + - Fixed use of CP1255 charset, which would chop the last char when + receiving messages [1122089]. + - The DCC windows now allow multiple selection and the columns auto + resize (Dan Fruehauf). + - Added "CTCP Sound to Channel" event [1159445]. + - You can now drag and drop files into dialog windows to start file + transfers. + - Perl: + - Fix to allow fully qualified variable names to work as well. + - Enabled individual script unloading. + - Enabled reloading scripts using XS modules. + - Fixed handling of filenames with spaces in them. + - Added /reload which works like /load but it will do an unload first + it is not necessary to use the full path with this command, just + the file name is enough. + - Fix print callbacks for cases where there are NULL elements between + non-NULL elements. + - Fixed: "XChat can't ban users with long idents" (Dan Fruehauf) + [1159447]. + - Implemented taskbar flashing on unix. Requires a window manager + or taskbar that supports XUrgency flag (Adil). + + +---------------------------------------------------------------------- + 2.4.3 - 31/Mar/2005 +---------------------------------------------------------------------- + + - Updated translations (de, sq, zh_CN). + - Fixed crash of server list connect button when no network is + selected while using GTK's auto-find feature [1166669]. + - Fixed handling of WhoIs Special event on some networks where it + could chop off the first character [1164315]. + - Plugin API changes: Added "nickserv" field to xchat_get_info. + - Python: Fixed get_list() incorrectly failing when the list + contained a time field [1171525]. + - Perl: Make scripts using calls with fully qualified subs work again + [1170139] (Lian Wan Situ). + - Fixed input-box input-method (GTK I.M.) problem [1168239]. + - Fixed: Ignore and Notify windows incorrectly used the stock CLOSE + button instead of DELETE [1170655]. + - Placed Close/Connect buttons in correct position in server list + [1165474]. + + +---------------------------------------------------------------------- + 2.4.2 +---------------------------------------------------------------------- + + - Updated translations (ca, de, lt, nl, ru, sk, sr, vi). + - Added command line args -u and -p. + - Fixed handling of "MODE -o+o nick nick" (#1094026). + - Plugin API changes: + * Added "Key Press" print event. + * Added "state_cursor" for xchat_get_prefs. + * Added xchat_strip and xchat_free functions. + * Added "lasttalk" field to "users" list. + * Added "charset" field to xchat_get_info. + - Perl plugin changes (Lian Wan Situ): + * Move each script into their own unique package/namespace. Scripts + containing multiple packages will not be loaded. + * When warning messages are emitted you will now be told which + script it came from. + * Xchat::set_context will now accept Xchat::set_context( $channel ) + and Xchat::set_context( $channel, $server ) in addition to + Xchat::set_context( $context ). + * Fix display of loaded scripts in the Plugins and Scripts window. + - TCL: Fixed crash with invalidated TCL timer (#1110306) (Daniel P. + Stasinski). + - /TIMER now supports timeouts to one decimal place. + - Fixed possible crash of open-file dialog on 64-bit machines. + - Pressing CTRL-O in the DCC Receive window will now open your + downloads folder. + - Win32: Default download folder changed to "My Documents\Downloads". + - Added -quiet arg to the /charset command. + - The /country command now supports a wildcard search. + - The user is now warned when real/user name is left blank in the + server list window. + - Added the /URL command. + - Added a text event for all unknown WHOIS reply lines. + - Added /ALLCHANL which sends to the current server only. + - Actions (/ME) are now treated like PRIV/CHAN for purposes of the + ignore list. + + +---------------------------------------------------------------------- + 2.4.1 +---------------------------------------------------------------------- + + - Updated translations (ca, de, eu, it, ko, mk, nb, nl, pt, ru, sl, + sq, uk, zh_TW). + - Fixed custom marker-line color not reloading. + - Brought back the "Connect to selected server only" option in the + Serverlist edit window (it's like the reverse of "Cycle until + connected" in 2.0.x). + - You can now move networks and servers via Shift+Up/Down (in the + ServerList window). + - Small efficiency improvements in receiving dcc. It will now not + send ACKs while the input buffer is non-empty. + - Python: Fixed crash when a timer callback routine executes + xchat.unhook() and returns false. + - Fixed playing sound files with spaces in them. + - Added support for NickServ on DalNet and FreeNode. + - Plugin API: Added xchat_get_info(ph,"inputbox");. + - Added /settext and /setcursor commands for scripters. + - You can now scroll tabs with the mouse-wheel while hovering over + the arrow buttons. + - Fixed connecting to a SSL server via http proxy (#1054152). + - Fixed: Opened server tab doesn't count as "requested" (#1044227). + + +---------------------------------------------------------------------- + 2.4.0 +---------------------------------------------------------------------- + + - Updated translations (ca, de, eu, it, ko, lt, nl, sk, sr, zh_CN). + - Fixed a possible crash in loading pevents.conf. + - Made default URL handlers work with Firefox 0.9.x by adding the + "-a firefox" argument. + - Plugin API: Added xchat_get_info field "libdirfs". + - Fixed crash when trying to dcc send a filename which has encoding + that doesn't match G_FILENAME_ENCODING. + + +---------------------------------------------------------------------- + 2.1.1 +---------------------------------------------------------------------- + + - Updated translations (de, kr, lt, sk, sr, zh_CN). + - Added some rudimentary support for the IDENTIFY-MSG feature. + - Perl: Added Xchat::context_info (Lian Situ). + - TCL: Added support for time fields in getlist (Daniel P.Stasinski). + - Added "Open Dialog" event, so you can add a sound-file to it. + - The standard beep can now be overridden with a sound-file. + - Fixed tab-nick-completion's cycling behaviour. + - New keyboard shortcut for line up and down (shift-arrow up/down). + - Fixed: [986958] tab completion with GTK Input-Methods. + + +---------------------------------------------------------------------- + 2.1.0 +---------------------------------------------------------------------- + + - Updated translations (eu). + - Tab nick completion fixes: Crash with space-tab and glib critical + warning (Ian Kumlien). + - Heavily reworked the Preferences window. It should be alot clearer + now, and more gnome-like. + - 'Pop new tabs to front' setting now has three options (Kyoshiro). + - New colors and text-events, using a white background. + - Config files are not saved to disk unless you edit the defaults. + This makes it easier to change language (for print events, popup + menu etc). + - Brand new Server List window. Now much simpler and intuitive. Also + includes an entry box for NickServ password. + - The vertical separator line now has its own pointer when you hover + over it (Richard Gobeille). + - Alphabetical tab sorting now works and is enabled by default. + - Added "Small Tabs" option (reduces the font size). + - Brand new Sound-Events editor in the Preferences window. + - Added socks5 authentication support (Benjamin Foster). + - Win32: fixed auto-loading of TCL scripts. + + +---------------------------------------------------------------------- + 2.0.10 +---------------------------------------------------------------------- + + - Updated translations (ru, sr). + - Fixed compiling on systems other than linux/freebsd [969643]. + (Samuel Mimram). + - Fixed compiling with an old version of GTK (2.0.x). + - Further BiDi fixes in xtext (Ilya Konstantinov). + - Brand-new tab completion code (Ian Kumlien). This also fixes: + Tab expansion not working behind umlauts [956127]. + Plugin commands can now be tab-completed too (Frank Thieme). + - Fixed parsing URIs on userlist drag-n-drop (Jonas Heylen). + - Added Sort button to the server list window (David Oftedal and + Tim-Philipp Mueller). + - Tab button selection fix (Guillaume Knispel). + - Added marker-line feature. Shows a red-line to indicate the place + where you last read up to (Thomas Kockerbauer). + - The "Get my IP from Server" feature now works on networks that + hide your hostname too (by using the USERHOST command). + - Win32: Fixed CPS calculation for file transfers [824934]. + - Fixed: Ping timeout when the system clock changes [789140]. + - Fixed: Private messages delivered to status window when nickname + is the same as the network [977550]. + - Maximised window-state is now saved. + - Double middle-clicking a nickname in the text area will now select + it in the userlist. + - Included a work-around to stop X-Sys plugin crashing with GTK 2.4. + - Fixed: /list output going to the current tab [970746]. + - Fixed: Serverlist crash while editing a port-number, and switching + to another network before pressing enter [968652]. + - Made it possible to execute multiple "Connect Command:"s in the + ServerList window, when they're separated by ctrl-shift-a. + + +---------------------------------------------------------------------- + 2.0.9 +---------------------------------------------------------------------- + + - Updated translations (bg, cs, de, en_GB, eu, fi, lt, nl, ru, sk, + uk, wa). + - Fixed the Socks5 overflow security bug. + - DCC IP address setting can now be a hostname too (Flavio + Chierichetti) [773229]. + - Don't try random DCC ports when a range is set (mib) [889987]. + - Fix: Spurious nick completion (mib) [916944]. + - Serverlist passwd box is now masked (Cristian Peraferrer) [920113]. + - Fix: Sometimes messes up the tab order on reconnect (Gabor Szeder) + [941773]. + - Fix: Crashes when setting $CHARSET to nonexistant charset [945855]. + - Plugin API: Added some fields to the "channels" list. + - Plugin API: Added "win_status" and "xchatdirfs" fields to + xchat_get_info. + - Plugin API: Added xchat_send_modes() function. + - Fix: Unload, then reload a plugin on FreeBSD fails (Kevin Leung). + - Plugins should now work on HPUX too. + - Perl-plugin: Fixes for 3 arg version of emit_print, unhooking the + same hook multiple times and get_list returning correct values for + address32 field and some memory leaks (Lian Situ). + - Made menu keybindings work when the menubar is hidden on GTK 2.4. + - Added support for the new GTK 2.4 file chooser dialog. + - Fix for BiDi in xtext (Ilya Konstantinov). + - Smaller bug fixes [962211] [958599] [950353] and + [945617] (Frederic Krueger). + + +---------------------------------------------------------------------- + 2.0.8 +---------------------------------------------------------------------- + + - Updated translations (az, es, fi, lt, mk, nl, ru, sk, sl, sr, sv, + zh_CN). + - Added color, flash and iconify args to /GUI command (this is for + use in scripts and plugins only). + - Plugin API: Added "notify" list. + - Plugin API: Added id, users, flags fields for "channels" list. + - Win32: Better error messages for file i/o and winsock errors. + - New Perl interface (with backward compatibility)! (Lian Situ). + - Fixed command-character buglet [873541]. + - Win32: Improved incorrect CPS display for file transfers. + - Added "Copy Selected URL" option to URL popupmenu (Mike Battersby). + - Added work-around for "Get my IP from server" not working on PTNet + (Mario Freitas). + - Fixed: Alt+numbers do not work with X Input Method [896968] (Marius + Gedminas). + - Added support for "+port" to indicate SSL connections. + - Fixed non-ASCII chars in time-stamp bug [918445]. + - Smaller bug fixes: [870073] [890891]. + + +---------------------------------------------------------------------- + 2.0.7 +---------------------------------------------------------------------- + + - Updated translations (fi, nl). + - Fixed dcc psend crash [858539]. + - Fixed bug where an error message was erroneously displayed while + transfering files with fast-send turned off. Also, allow fastsend + to be used with psend (Daniel Dubois). + - Print more informative messages when Perl scripts fail to load + (Andy). + - Win32: Added native sound playing support. + - Win32: Fixed possible crash upon exit while still connected. + - Fixed notify's Lastseen column for offline users [864185]. + - Report more informative error when DCC write to disk fails. + - Fixed crash when xchat.conf contains oversized strings [750403]. + + +---------------------------------------------------------------------- + 2.0.6 +---------------------------------------------------------------------- + + - Updated translations (de, lt, sl, sr). + - Fixed detection of Python on amd64 (Mads Martin Joergensen). + - Don't loose editbox contents when pressing up, then down arrow + (Ricky Clarkson). + - Fixed missing dcc flag on new ignores via gui. + - Fixed missing separator bar on PseudoColor displays. + - Fixed some 64-bit issues (xc205-fix64bit.diff). + - Apply tint changes instantly. + - Fixed DCC resume with mirc >= 6.1. + - Python plugin changes: + * Fixed the reentrancy problem which made xchat freeze when some + python code made xchat trigger a python callback somewhere. + * Implemented xchat_emit_print() and xchat_get_prefs() support. + * Fixed softspace support for python 2.3. This problem was making + print statements yield an extra space at the next line start. + * Other minor changes. + (Gustavo Niemeyer, Gustavo J. A. M. Carneiro, Marko Kreen). + - Fixed request of a MODE on a channel you're not in changing the + current titlebar [820998]. + - Restored compatibility with older Perl that lacks call_pv(). + - Use sigaction inplace of signal() for better compatibility. + - Win32: Don't try to open logfiles with a "\" in them, windows wont + allow it. Instead, the "\" is replaced by a "_". + - Backported HTTP authentication code from 1.8.11 (you can now + specify a username and password for HTTP proxies). + - When beep on highlight is on, beep on channel actions too + (Christopher A. Aillon) + - Added active dcc send feature (/dcc PSEND). More info here: + http://mail.nl.linux.org/xchat-discuss/2003-10/msg00124.html + (Daniel Dubois and Emmanuel Jeandel). + - URL Handlers menu now removes programs that arn't in PATH. + - Added "away" users field for plugin API. + - Smaller bug fixes: 822199, 786267, 783172, 811971, 756048, 844919. + + +---------------------------------------------------------------------- + 2.0.5 +---------------------------------------------------------------------- + + - Updated translations (ca, fi, lt, nl, sk, sv, zh_CN). + - Fixed detection of Python 2.3 in configure script (anonymous). + - DCC Send file-selection dialog now supports multi-select. + - Reset away status after auto-reconnect from a ping timeout. + - Perl: Fixed IRC::user_info always matching the first entry. + - More C89 fixes for non-gcc compilers (Albert Chin). [781809]. + - xtext: now double buffered and flicker free. Also some efficiency + tweaks for exposure events and multi-wrapped lines. + - Removed buggy numeric 338 support [783945]. + - Nick completion in dialogs and channel completion (Jay Cornwall). + - Print informative error messages when dcc resume isn't possible. + - Fixed performance of dcc recv, send and chat windows. + - Fixed tab-arrow buttons show/hide (Lloyd Williams) [783681]. + - Fixed lastlog bugs [791220]. + - win32: Faster tinting, and uses MMX when in 16 or 32bit color. + - Execute /sigusr2 on receiving SIGUSR2 signal (Michael Guidero). + - /IGNORE command and window now have an extra "DCC" category. + - Alert user when logfiles fail to open (Jay Cornwall). + - Fixed missing underlining of IP numbers (2.0.4 only). + - Allow accepting DCC sends from ports below 1024. + - Connect to URL given on commandline even if 'No Serverlist on + Startup' is off [804648]. + - Fixed problem in allocating colors while in 8bit PseudoColor. + - xtext: tinting now shades towards your background color, making it + usable with white backgrounds. Tints can also use XShm for extra + speed with --enable-shm at ./configure time (experimental). + - Perl: IRC::add_print_handler callbacks now get parameters in + $_[1...x], with $_[0] left for compatibility (Lian wan Situ). + - Perl: added command_with_channel command (Alexander Werth) + [801711]. + - Smaller bug fixes: [798655]. + + +---------------------------------------------------------------------- + 2.0.4 +---------------------------------------------------------------------- + + - Updated translations (lt, sv, zh_CN). + - Fixed crash on tinted transparency (xc203-fixtint.diff). + - Fixed incorrect dcc cps calculation (xc203-fix-cps.diff). + - Allow fullpath and relative filenames for Text Events sound files + (Anthony Dragunov). + - Added /GUI command (mainly for use by scripts). + - Solaris build fixes for ipv6. + - Added -n, --no-plugins command-line arg. + - Added a feature to change the color of away users. + - Moved default dcc and sound dirs inside ~/.xchat2/ (SilvereX). + - Fixed bug [753742] When server tab and query had the same name, + private messages could go to the wrong tab. + - Support others users too, when expanding ~ in filenames (Neox). + [767514]. + - Underline "ipnumber:port" style urls too (Alex & dobler). + - Added support for ircu numerics 330 and 338 (phaseburn). + - C89 fixes, should now compile with HP UX and Sun C Compilers + (Albert Chin). [777106]. + - Smaller bug fixes: [773245] [779166]. + - Close tabs on shift-leftclick (Jay Cornwall). + + +---------------------------------------------------------------------- + 2.0.3 +---------------------------------------------------------------------- + + - Updated translations (ca, fr, ja, sv). + - Fixed URL grabber not filling up (xc202-fixurlg.diff). + - Fixed crash when holding down Ctrl-I (xc202-fixdetach.diff). + - Use Shift-Ctrl-W for Close only when Emacs key theme is enabled. + - Fixed corrupt left margin with indent-nicks off and timestamp on. + - Remove invalid chars from inbound text when conversion fails. Fall + back to ISO-8859-1 when using UTF-8 only (Ilya Konstantinov). + - Fixed perl IRC::get_info(3) crash when not connected [732496]. + - Fixed crash on long output lines for /exec -o [731187]. + - Made "Move completed files to:" and "Save nickname in filenames" + work at the same time (Matthew Gabeler-Lee). + - xtext: fix redraw when new additions not on current page. + - win32: Added /set identd 0 switch to turn off built-in identd. + - Added 6-8 for perl's IRC::get_info to retreive network, host and + topic (Ryan). + - Iterate in alpha order instead of op-alpha for nickcompletion + (Gauss_Z88). + - Fixed ChannelList crash on invalid regex match string. + - Added hide join/parts setting to gui (Jason Wies). + - Added Delete All button to ignore window (Mohammed Sameer). + - Don't allow adding empty names to notify list [741589]. + - Made message fragmentation code utf8 friendly so it always splits + on a multibyte char boundary [748653]. + - Support 2 to 4 GB files in DCC (contrary to 1.9.4 changelog, it + didn't work until now). + - Python: Fixed crash when returning 0 from a timer (Steve Green). + - Multihead fixes for popup menus. + - Added support for numeric 307 and 320 "is an identified user". + - Allow setting a blank topic via the GUI [720407]. + + +---------------------------------------------------------------------- + 2.0.2 +---------------------------------------------------------------------- + + - Updated translations (lt, ms, nl, pt, sv, zh_CN). + - Fixed a few minor mem leaks in the server and user list. + - Changes to: UrlGrabber, Notify, Plugins, Ignore and Banlist GUIs. + Changed GtkCList to GtkTreeview, and general enhancement to these + guis (Vincent Ho). + - win32: made it possible to compile with ipv6. + - Added /MOP. + - Fixed pageup/pagedown wrong window bug [710784]. + - Fixed no timestamps in top-level windows bug [710787]. + - Fixed first word being skipped in perl add_command_handler("", cb); + [711802]. + - Fixed WHOIS away line appearing in different tab [695932]. + - win32: fixed transparency [699425]. + - win32: fixed ssl "Error 2" connection bug. + - Made all toplevel dialog windows transients of the main window. + - Show filesize/pos in DCC window as KB and MB (Aaron Chernosky). + - Added /set tab_dnd 0/1 option. + - Fixed userlist insertion/deletion GUI performance problem [704233]. + - Each toplevel window now has a "role". + - Smaller bugs fixed: [698449] [718851]. + - TCL plugin fixes for context lookups (Daniel P. Stasinski). + - Changed Close Tab keybinding to Shift-Ctrl-W to avoid conflict with + emacs editing. + - Used a new algorithm for Userlist and UrlGrabber. This one does + insertion, lookup and deletion in O(log n). + + +---------------------------------------------------------------------- + 2.0.1 +---------------------------------------------------------------------- + + - Updated translations (am, ca, lt). + - Save serverlist before connecting (Joe Drew). + - OpenBSD compile fixes. + - (Encoding) Fallback outgoing text to "?" for unconvertable chars. + [674798]. + - Hide tab scrolling buttons when they're not needed. + - Fixed --disable-xlib compiles. + - Fixed use of %h in dialog-tab buttons [688937]. + - Fixed printing/logging timestamps that contain invalid utf8 + [688548]. + - Added "Resizable userlist" option (default ON). + - Strip colors on topic change. + - Fixed (snotice) and (notice) tabs being swapped [687437]. + - Made more strings translatable. + - Allow loading empty text events [691191]. + - Fixed xtext race condition [678874]. + - Added ability to show/hide the channel-mode buttons (default OFF). + - Use the network name in server-tab rather than full hostname. + - Added keybindings for moving tab-families, default is ctrl-shift + PageUp and PageDown (Vincent Ho). + - Added 'Beep on highlighted messages' option (Jirka Kosina). + - Use DND to detach tabs. + - Interpret %C, %B etc in quit reasons. + - Added more items to the right-click tab menu. + - Some misc UI cleanups. + + +---------------------------------------------------------------------- + 2.0.0 +---------------------------------------------------------------------- + + - Updated translations (de, es, lt, nl, sk, sl). + - Fixed half cut off dates in notify window. + - Fixed tabs loosing red/blue color when being renamed. + - Fixed initial query tabs not being truncated. + - Make tabs red on channel actions too. + - Configure script python detection fixes (Johan Dahlin). + - Added /charset command. + - Don't auto remove stalled DCCs unless dcc_remove setting is on. + - Avoid recursive UserCommand buffer overflow. + - Added xchat_emit_print() to plugin interface. + - Left and Right positioned tabs are possible again (Lloyd Williams). + - Added /timer -repeat <num> and -quiet args. + - Possible tcl plugin crash fixes (Daniel P. Stasinski). + - Group multiple op/voice in one print event. + - Fixed plugin loading on solaris. + - Python fixes (Gustavo Niemeyer): + * Fixed bug which made Python plugins crash randomly. + * Introduced a new xchat.hook_unload() function, as requested by + many people. This will call a given callback at module unload + time. + * Now /py load <filename> will succeed if filename is the name of a + file inside "xchatdir" (~/.xchat2). + * Fixed some leakings. + + +---------------------------------------------------------------------- + 2.0.0pre1 +---------------------------------------------------------------------- + + - Updated translations (sv, es, am, el, lv, no). + - Fixed possible blank userlist after another tab was detached. + - Changed default keybinding for next/prev-tab to ctrl-pageup/down, + as per standard. + - Added IPAddress field to "DCC SEND Offer" text event. + - Fixed perl IRC::print_with_channel 1.8.x incompatibility. + - xtext: Fixed bugs in new scrolling code. + - Use filesystem encoding for log filenames. + - Focus the inputbox when left-clicking in xtext. + - Focus the inputbox when typing while the userlist is in focus. + - Fixed bug where text typed could be sent to the wrong window after + a detach. + - New default icon again, this one scales better (Dagmar d'Surreal). + - Send /LIST args on galaxynet. + - Added settings to change inputbox and userlist styles to the same + as the main text area. + - Don't allow the Perl plugin to be loaded twice (Ian Kumlien). + - Fixed servlist crash on 'use global' off and empty nick field. + - Added missing address field to Perl's IRC::dcc_list. + - Added irc_conf_mode setting (via /set only). + - Save xchat.conf safely (Michael Witrant). + - Added support for numeric 005 token NAMESX. + - Added TCL Plugin (Daniel P. Stasinski). + - Added 'Add' button to serverlist, due to popular demand. + - Update intl/ to 0.11.4. + - Win32 fixes/makefile for python plugin (James Potts). + - Win32: fixed clipboard bugs and dcc receive. + - Plugin iface: Added dcc-list fields "address32" and "port". + - Try to use pkg-config to find openssl. + - Report errno/strerror on dcc failures. + - Python print buffering fixes (Gustavo Niemeyer). + - Treat NOTICE +#channel correctly. + - Check for common unix paths and don't treat them as commands. + + +---------------------------------------------------------------------- + 1.9.8 +---------------------------------------------------------------------- + + - Added Amharic translation (Daniel Yacob). + - Updated Spanish translation (Pablo del Campo). + - Updated Lithuanian translation (Rimas Kudelis). + - Updated Latvian translation (Artis Trops). + - Fixed serverlist entry box text corruption (xc197-fixservlist.diff) + - Fixed the non-mmx tinted-tranparency code crashing. + - Fixed interpretation of mIRC color 99 [653094]. + - Use Pango renderer by default, for better i18n. + - Scroll 1/10 of a page with the mouse wheel (Soeren Sandmann). + - Reimplemented -a, --no-auto argument. + - Fixed a bug in entering text with GTK2 IMs [653751]. + - Final fix for filenames' encoding in DCC. + - New unicode character chart window. + - xtext: properly recalculate text widths after a font change. + - Fixed perl IRC::dcc_list 1.8.x incompatibility (Charles Lopes). + - xtext: Implemented scrolling instead of full redraws when not using + a background image or transparency. This improves scrolling on + machines that draw AA text very slowly. + - Reimplemented 'Move front tab left/right' keybinding. + - Provide default usermenu and buttons for translation. + - New default icon (Dagmar d'Surreal). + - Report the average KBs when a transfer is finished. + - Attempt to create dcc-download dir when changed in the setup gui. + - Apply character set conversions to DCC Chat aswell (Steve Green). + - xtext: Fixed hilight-text in scrollback after new addition bug. + - Channellist gui cleanup. + - Renamed a few defines in xchat-plugin.h to avoid namespace + pollution. + - Fixed loading background image crash (from 1.9.7). + - Fixed broken drawing of mIRC color 0. + + +---------------------------------------------------------------------- + 1.9.7 +---------------------------------------------------------------------- + + - Updated Swedish translation (Christian Rose). + - Updated Spanish translation (Pablo del Campo). + - Updated Dutch translation (Bart Coppens). + - Added /GETSTR and /GETINT. + - Misc. serverlist bug fixes (Shaun Guth). + - Plugin changes/fixes: + * Added xchat_get_info("network"). + * Added new function: xchat_hook_fd(). + * Fixed "DCC Chat Text" event (Daniel P. Stasinski). + * Added "Open Context" print event. + * Fixed implementation of EAT_ return codes. + * Keep the leading ":" in server events passed to plugins. + * Added hack to make plugins possible on win32. + * Fixed /unload <plugin_file_name> crash. + - Fixed changing tabs via keyboard. + - Added a few keyboard accelerators to the menubar. + - Fixed close-tab-0 crash. + - Fixed userlist popup menu disappearing on button-release. + - Fixed color paste. + - Added a character set selector to the serverlist. + - Send DCC filenames in system encoding (gets converted if a charset + is chosen in the serverlist). + - Fixed possible Search Text crash. + - Removed --enable-japanese-conv configure option (isn't this + superseded by the new charset selector?). + - Use --enable-openssl by default. + - Fixed your nick not changing in dialog windows. + - xtext: deal better with invalid utf8. + - Made it possible to do /server <networkname>. + - win32: backported tint/transparency code from 1.8.10. + + +---------------------------------------------------------------------- + 1.9.6 +---------------------------------------------------------------------- + + - Updated Spanish translation (Pablo del Campo). + - Added Estonian translation (Ilmar Kerm). + - Made switching to dialog tabs faster: + * Draw xtext only once when switching to a dialog tab. + * Do not recalculate the tinted-transparency. + - Fixed another text-off-the-bottom bug. + - Fixed background color other than black not working. + - Fixed dialog windows not being logged (Joanne Hunter). + - Fixed topic entry box going blank bug. + - Added Insert-color-code and encoding submenu in the bottom-right + button. + - Apply more settings without needing a restart: + * Background image. + * Time stamp text on/off. + * Palette changes. + - Implemented %n for log-filename-mask. + - Reconfigured the menubar a bit. + - Validate inbound utf8 text to avoid reading beyond buffer and + fall back to iso-8859-1. + - win32 compile fixes. + - Don't convert commas to %2c in urls. + - Auto open dialog when dcc chat offer connects (Steve Green). + - Make setting "Open Utilities in: Windows" work. + - Added a way to reorder networks in the serverlist window (still + want to add DND later). + + +---------------------------------------------------------------------- + 1.9.5 +---------------------------------------------------------------------- + + - Fixed the PL_perl_destruct_level crash (Bernard Blackham). + - Fixed the perl readdir crash. + - Added tab scrolling buttons (Lloyd Williams). + - Added DCC throttle and better CPS calculation (Richard Fuchs). + - Added three configurable tab-highlight colors (Nehal Mistry and + Joanne Hunter). + - Added dynamic support for two levels above Op (red & purple icons). + - Changed the op/voice icons, now more macosx like. + - Serverlist progress: + * Now remembers your last network selection. + * Non-global User/real/nick are now implemented. + * Added all 1.8.x default servers. + - Added Clear Rawlog button. + - Throttle and Lag meter settings implemented. + - Fixed /lastlog. + - xtext: Fixed exposure-before-print crash. + - xtext: Fixed providing UTF8 selection data. + - xtext: Fixed text scrolling past the bottom bug. + - Added DCC-completed-dir setting, which can move completed DCC files + to a different directory (Chris Morgan). + - Update build environment to autoconf 2.53. + - Cleanup various configure.in/Makefile.am scripts. Use libtool to + build perl and python plugins (John). + - Added support for numeric 005 options: CHARSET=UTF-8 and + CASEMAPPING=ascii. + - Delinking/Relinking IRC windows re-implemented. + - Dialog window buttons re-implemented. + - Gnome2-ify the desktop file. Install to $(datadir)/applications. + + +---------------------------------------------------------------------- + 1.9.4 +---------------------------------------------------------------------- + + - Make DCC support up to 4GB files (previously 2GB). + - Fixed possible crash when receiving a message from a channel that + was already parted. + - Fixed random /part reasons not working. + - Fixed compile on RHL 8.0. + - Fixed xchat-text connect crash. + - Updated included intl/ to 0.10.38. + - Update transparency when background image changes. + - Fixed the progress-connecting-bar appearing in all tabs. + - More IRC protocol abstractions; tcpsend2 (James D. Taylor). + - New server list GUI almost complete. + - Merged some small 1.8.11 fixes. + - Reopen logfiles on SIGUSR1. + - Added Tint RGB settings (foser). + + +---------------------------------------------------------------------- + 1.9.3 +---------------------------------------------------------------------- + + - Updated Spanish translation (Pablo Gonzalo del Campo). + - Updated Swedish translation (Christian Rose). + - Added mIRC's passive dcc support, receiving only (Richard Fuchs). + - Added InputBox settings to settings GUI. + - Make DCC support up to 4GB files (previously 2GB). untested. + - Fix checks for Xft.h in configure script. + - Fix perl add_message_handler() xchat 1.8.x incompatability. + - Fix default DCCRECV text event using bad $ variable and crashing. + - Fix /query #foo, /join #foo crash. + - Fix utf8-conversion-fail sending truncated text. + - Use $datadir/locale for LOCALEDIR (Albert Chin-A-Young). + - More work done on Serverlist 2, but not fully functional yet. + - Pasting from one tab to another now works. + + +---------------------------------------------------------------------- + 1.9.2 +---------------------------------------------------------------------- + + - Fixed DCC Chat offer crash (1.9.1 bug only). + - xtext: Xft tweaks. Included Pango backend for when Xft can't be + used directly. + - xtext: improved rendering selections (less unnecessary redrawing). + - xtext: fixed marking multibyte utf8 chars. + - Included brand new Python interface plugin (Gustavo Niemeyer). + - Perl is now a plugin. + - Plugin API: Changed xchat_unhook() return value and type. + - Plugin API: Added "ignore" list. + - Plugin gui window can now load/unload scripts aswell. + - Plugins are now autoloaded from $libdir/xchat/plugins. + - Double-click userlist works again. + - Strip spaces from join-channel in serverlist (Mathias Hasselmann). + - The menu in the bottom right corner now works. + + +---------------------------------------------------------------------- + 1.9.1 +---------------------------------------------------------------------- + + - Fixed serverlist and rawlog crashes. + - Fixed some 64-bit issues (Elliot Lee). + - Fixed unrealized xtext crashes and warnings (Elliot Lee). + - Removed --disable-glib configure option. + - Added Save rawlog button. + - Auto detect socklen_t. + - All new plugin interface. See plugins/plugin20.html. + - Made perl.c use the new plugin interface. + - Made the whole system use the cmdchar setting. This means all + usercommands, popup commands etc mustn't start with a "/" char. + - Removed the mail checker, it's now a plugin. + - Cleaned up some text events code. Added/Changed/Removed some + events too. TextEvents window now lists them alphabetically. + - Convert inputbox from utf8 to locale before sending (xLoneStar). + - Use ~/.xchat2/ for all configs (may change to ~/.xchat-2.0 + when stable). + - Made DCC GUI display KB/s instead of cps. + - Ignore code cleanups; ignore.conf no longer compatible. + - Created the start of an IRC protocol abstraction layer. + - Plugged JCode memory leak. + - Ask before quiting when some DCCs still active. + - Rewrote most of the maingui code. Now there's only one virtual + tab that is re-filled with new information when switching tabs. + - Added right-click tab menu. + - Plugged potential /dns security hole. + - Converted userlist to GtkTreeView. + - Right-click userlist menu now works with a multi-selection. + - Drag and drop to userlist no longer requires libgnome. + - Included an ircII style /timer plugin. + - Now accepts irc:// URLs on the command line. + - Tabs are now ordered in server groups. + - Make gettext use utf8 (teuf). + - Whole new setup window. + - Notify gui has an add dialog window. + - Nickname on the bottom left is clickable. + - Cleaned up /set variable names. + - Made scrollwheel work with GTK+ 2.0 (Lloyd Williams). + - xtext: Added XFT support. + - xtext: Added UTF8 selection support. + + +---------------------------------------------------------------------- + 1.9.0 +---------------------------------------------------------------------- + + - Ported to GTK+ 2.0 (BIG!). + + +---------------------------------------------------------------------- + 1.8.7 +---------------------------------------------------------------------- + + - Updated Swedish translation (Christian Rose). + - Updated Russian translation (Anton Farygin). + - Added Latvian translation (Artis Trops). + - Made a work-around for a refresh glitch when delinking a tab under + gnome (the topic bar was overlapped). + - Fixed the need for signed chars (e.g. on PPC and s390). + - Fixed background garbage being drawn when using hidden tabs. + - Cleaned up alot of the nick completion code. Fixed some behaviour + too (Mukund, dinkles, me). + - Connect Cmd is executed again if you get auto-reconnected. + - Added safe-gaurd to stop duplicate nicks in userlist. + - Added an option to automatically remove finished/failed dccs + from the list. Use /set dcc_remove ON to enable it. + - Added an option to truncate long channel tabs. Use: + /set truncchans xx, where xx is the max chars (Jyrki Muukkonen). + - Made the default popup menu, dialog buttons, userlist buttons, + usermenu and urlhandlers translatable (via gettext). + - MMX tinting is now built on any x86 machine (it's checked at + runtime anyway). + - Added "Automatic Unmark Away" option in setup->away (Mads Martin). + - Immediately abort file transfers when out of space. + - Fixed a serious CTCP reply vulnerability. + + +---------------------------------------------------------------------- + 1.8.6 +---------------------------------------------------------------------- + + - Updated Danish translation (Morten Brix Pedersen). + - Updated Spanish translation (Antonio de la Torre). + - Updated French translation (Olivier Berger). + - The server "Connect cmd" is now executed before auto-join-channels, + so you can use it to authenticate to nickserv etc. + - Fixed autoresume again, for the last time... no, really. + - Fixed sending parts for all channels instead of one quit when you + exit the whole program (helps bncs). + - Autocomplete in the middle of a sentence won't jump to the end of + the textbox (Darell Tan). + - Fixed the buggy 1.8.5 outbound queue. It now sends privmsg/notice + with a lower priority, but never out-of-order. + + +---------------------------------------------------------------------- + 1.8.5 +---------------------------------------------------------------------- + + - Updated Slovak translation (Stano Visnovsky). + - Updated Swedish translation (Christian Rose). + - Updated Spanish translation (Antonio de la Torre). + - Updated Hebrew translation (Dan Fruehauf). + - Some fixes to the MODE parser. + - Added ability to customize dialog tab buttons (Oskar Liljeblad). + - Added an extra field in the EditServer window to enter a command + to execute after logging in. + - /load -e <file> can now load a file of commands to execute. + - Added ability to change the log timestamp format (Jyrki Muukkonen). + - Fixed default keybinding for Shift-PageUp (Mukund). + - Changed the outbound throttle behaviour. Now only privmsgs and + notices go to the back of the queue, everything else goes to the + front. + - Made it possible to compile with older than 5.6 perl again. + - The main window's size and position is now saved on exit. Use + /set mainwindow_save OFF to revert to the old behaviour. + - Avoid auto-resuming the same file from two different people + (without breaking autoresume this time). + - Removed /sslserver and added a -ssl arg to /server, /reconnect, + /servchan and /newserver. + - Added support for /server irc://host:port/channel. + - Added some mmx asm code written by Willem Monsuwe for tinting + transparency. Use --disable-mmx to revert to gdk-pixbuf method. + - Fixed resetting your away status after an auto-reconnect. + + +---------------------------------------------------------------------- + 1.8.4 +---------------------------------------------------------------------- + + - Updated Spanish translation (Antonio de la Torre and Manuel + Garca Aguilar). + - Updated Russian translation (Valek Filippov). + - Fixed lockup when a file being offered is shortened before being + accepted. + - Fixed ** ERROR **: file python.c: line 743 (pysH_Eget_users): + assertion failed: (cur->hostname). + - /kickban now deops and bans in one line (-o+b) (Felix Nawothnig). + - Auto-nickcompletion now uses the nicksuffix setting (Mukund). + - win32: change log-filenames with a | character to _. + - When binding to a set hostname/ip, it would try to bind to port + 65535 - fixed. + - Fixed crash when closing a dcc chat in a perl-dcc-chat-callback. + - Added option "Beep on Channel Messages" and a Beep button to the + toolbox ("<" button in the botton right) (Jason Wies). + - Avoid auto-resuming the same file from two different people. + - /close -m now closes all dialog/query windows. + + +---------------------------------------------------------------------- + 1.8.3 +---------------------------------------------------------------------- + + - xtext: marked text goes to clipboard aswell as primary selection. + - xtext: some speedup optimizations. + - xtext: fixed a problem when rendering a fixed-width font with + missing chars. + - Fixed hints for "You're kicked" text event, which showed the $ vars + incorrectly. + - When a user is seen to quit or join a channel you're in, your + notify list will be modified instantly. No notify textevent is + shown if it happened in the front-most tab (Alexander Hvostov). + - Fixed binding server connects to different interface/address + (ipv4 only) (Claus Riemann). + - Avoid negative ping timeout when system clock changes. + - Updated Italian translation (Stefano Fava). + - Updated Spanish translation (Antonio de la Torre). + - Added text event "Channel Notice" so you can differentiate between + private and channel notices (Fuentes Xavier). + - Added ability to dcc send filenames with spaces. See "Fill Spaces" + setting in Setup->File Transfer (Fuentes Xavier). + - Included some makefiles for ms visual c. + + +---------------------------------------------------------------------- + 1.8.2 +---------------------------------------------------------------------- + + - Fixed kick messages showing only the first word of the reason. + - Fixed GTK warnings thrown up when closing a dialog window. + - Fixed a bug in sending quit reasons. + - Fixed a problem with handling op/voice modes that caused halfops to + appear in the userlist when using bahamut. + - Kanji conversion is now turned ON when locale is ja (Akira TAGOH). + - Saved some memory when loading .conf files (about 40k). + - When changing fonts, it now changes in the inputbox without having + to restart. + - Added safeguard to stop recursive user commands. + - Added two /set variables dialog_width and dialog_height. Use these + to set the default size of dialog windows. + - Win32: fixed crash of 'Auto Accept DCC Send' menu item. + + +---------------------------------------------------------------------- + 1.8.1 +---------------------------------------------------------------------- + + - Fixed crash in having server tabs ON and channel tabs OFF. + - Fixed crash when closing the channel list window AFTER all its + server windows were closed. + - Fixed potential crash of the font dialog in settings. + - Made /exec read data line-by-line (Richard Fuchs). + - Disabled the menubar while in shelltabs (it was dangerous to use it + anyway). + - Fixed the banlist window's Unban, which selected the wrong rows + sometimes. + - The Perl interpreter is now started only when loading the first + script, to save memory when not using scripts. + - Fixed lag/throttle meters not updating when set to text-only. + - Fixed two small memory leaks. + - Directories in your logmask are now created, so you can use masks + like "%c/%y.log" in Setup->Logging (Tobias v. Koch). + - xtext: FontSet rendering speedups. + - Win32: made word and line selection work in xtext. + - Win32: added url handler that sends to windows' shell. + - Win32: rendering 8bit characters should now work. + + +---------------------------------------------------------------------- + 1.8.0 +---------------------------------------------------------------------- + + - Fixed a memory leak in popup menus. + - Fixed crash in receiving private actions. + - Added /set variable 'perccolor'. Options effect input box are now: + perccolor: parse %C,%B,%U etc (default ON). + percascii: parse %XXX (where XXX is an ascii value) (default OFF). + Note: if perccolor is OFF, percascii will not work. + - Win32: Fixed incorrect calculation of ping time. + - Win32: Server lookup and connect is now threaded. + - Win32: Server connection error now reported correctly. + - Win32: A simple identd server is now builtin. + - Win32: Copying text from xtext to clipboard now works. + - Updated Swedish translation (Christian Rose). + - Updated Spanish translation (Antonio de la Torre). + + +---------------------------------------------------------------------- + 1.7.8 +---------------------------------------------------------------------- + + - xtext: Fixed parsing of "%C2, " to match mIRC, i.e. bg color is not + reset, fg changes to 2 and the comma is printed (Fuentes Xavier). + - xtext: a fix for multibyte text wrapping (Tetsuo YAMAMOTO). + - Made notify NOT announce everyone offline when you first login. + - Multiple WATCHes are sent on one line for notifies, to reduce lag. + - Added an internal /unban command which takes multiple masks. You + might want to remove the old usercommand (Tobias v. Koch). + - Banlist window now sends multiple modes per line. + - Fixed a memory leak in perl (Martin Persson). + - Removed the tooltip for userlistinfo, it seemed to cause corruption + on some gtk+ themes. + - Made xchat not interpret %C,%B etc when percascii is OFF, .e.g: + /set percascii OFF + - Fixed ops/voice counts when networks allow you to voice/op people + that are already voiced/oped (like EFnet). + - Fixed building with --disable-glib. + - IPv6 reverted to off by default, use --enable-ipv6 to enable. + - Win32 fixes: dcc send/recv now works and fixed a bug in loading + some .conf files by using the O_BINARY flag. + - Changed the xchat icon - old one was a bit too dark. + - Updated Greek translation (Fanis Dokianakis). + + +---------------------------------------------------------------------- + 1.7.7 +---------------------------------------------------------------------- + + - Re-added support for '+' channels when there's no 005 numeric. + - Made the new $3 null terminated (works better that way). + - Fixed Doubleclick-user when disabling userlist icons. + - Fixed SSL build. + - Win32 port (some code from Alex Badea's 1.5.11win32 port used). + - More code cleanups, removed all extern prototypes from fe-gtk/. + - Titlebar text now shows unknown channel modes too. + - Made persist chans work with /reconnect aswell. + - Avoid pastes of common unix directories being treated as irc + commands (Chema Celorio). + - Removed the Delete word forward/backward functions from + KeyBindings. GTK handles these already, why were they ever there? + - Made %h work for dialog windows' popup menu too. + - Fixed treeview not setting channels red and blue. + - The info above the userlist now gets a tooltip which gives you + some extra info. + - The nickgad (to the left of your nickname) now gets a text prefix + char if userlist icons are disabled. + - Timestamp format is now configurable in Setup->IRC Input/Output. + + +---------------------------------------------------------------------- + 1.7.6 +---------------------------------------------------------------------- + + - xtext: tweaks to make url highlights less flickery. + - Added some support for ircd numeric 005. MODES>=6, CHANTYPES, + CHANMODES, WATCH and PREFIX are supported. This means dynamic + support of different channel and user modes. The userlist icons + only support *@%+ though (admin, op, half op, voice), will have to + find a way to make these dynamic in the future. Also, made a new + file modes.c and rewrote mode handling in general to support this, + so what did I break? + - Added option 'Userlist icons' (default ON). Lets you turn off + userlist icons for ops, voice etc and get the plain text @+ (in + Setup->Interface). Might be useful for ircd's that have weird + and wacky access levels. + - Added support for WATCH command for use in notify list. Numeric 005 + must list WATCH for this to work. + - Added an extra arg $3 for channel message printevents. This is the + prefix char of the person talking, e.g. '@' for Ops. + - Resolve irc-server name only if using a non-socks4 proxy. This + allows you to connect even with a non-working dns. Also made the + socks5 code more "correct" (Richard Fuchs). + - Some code cleanups, got rid of most of the extern functions in c + files and moved them to h files. + - Perl has a valid context at startup again (broken in 1.7.4). + - Fixed leak of awaymessages for "Show away once" feature. + + +---------------------------------------------------------------------- + 1.7.5 +---------------------------------------------------------------------- + + - Fixed some buggy catalogs for gettext 0.10.37 (OpenBSD users). + Compiling with 0.10.35 will now break, there's always + ./configure disable-nls. + - Fixed python autoloading due to new serverlistcode (Richard Fuchs). + - Made perl/python/plugins autoload when first irc window is open + (rather than when serverlist opens), incase they need to print. + - Changed serverlist opening behaviour. It now obays the + 'No ServerList on startup' setting regardless of auto-connects. + - Fixed buggy Quit menu item (1.7.4 bug). + - DCC cleanups, including some endian fixes. + - DCC windows don't go to front when new xfers appear (1.7.3 bug). + - Rewrites to a few vital xtext functions. This seems to have speed + up rendering with a FontSet and fix the -/+1 line bug. + - Fixed Shelltab not opening sometimes (actually a 1.7.4 ipv6 bug). + - Added ability to change font for Shelltabs only: + /set font_shell <fontname> + + +---------------------------------------------------------------------- + 1.7.4 +---------------------------------------------------------------------- + + - On startup, serverlist now opens without any other windows, looks + neater, less confusing for newbies. If you disable serverlist at + startup, a normal irc will open instead. + - Made a few things more userfriendly, "DCC Send" -> "File Send". No + need to refer to the protocol in the GUI! + - Fixed a xtext bug rendering a background color of 1 incorrectly. + - Unprintable characters used to cause problems to xtext (who would + have thought gdk_char_width returns a different value to + gdk_text_width?) - fixed. + - xtext renders only once when switching tabs (used to render twice + because gtk gives us 2 expose signals, why?). + - When you change your nick it changes in the titlebar now too. + Server name is now reported in dialog windows' titlebar. + - Having Strip mIRC Color ON will now strip it from dcc chats too. + - Added (really this time) perl functions add_user_list, + sub_user_list, clear_user_list for manipulating the userlist of a + channel (Lloyd Williams). + - Various code cleanups, including a rewrite of the IPv6 code. + Removed /6server and 'Use IPv6' check-box in the serverlist. It + automatically handles IPv6/IPv4 addresses now. + - Added a check-box in the serverlist edit window for "Use Proxy". + + +---------------------------------------------------------------------- + 1.7.3 +---------------------------------------------------------------------- + + - Added server hostname as $3 for quit print event (Bjorn Olievier). + - Some fixes to the gnomepanel code. Panel no longer asks to restart + applet on quit, removing the applet doesn't exit xchat (George). + - Fixed fd leaks in /exec and python (Richard Fuchs). + - user@host gets logged in query windows (Richard Fuchs). + - Fixed the 'Marked Away' & 'Save Settings on exit' check menu items + (when using --disable-gnome). + - Workaround for ipv6 build failing on some glibcs (Tobias von Koch). + - DCC won't try to resume if local file is bigger than remote offer. + - Fixed xtext drawing/wordwrap and textmarking bugs. + - Horizontal scrollbar appears in channellist window when needed. + - Fixed color paste. Does this affect multibyte pasting? Please + report (Darell Tan). + - Fixed titlebar text for notices/snotices tabs. + - The topic box gets a tooltip of the current topic. + + +---------------------------------------------------------------------- + 1.7.2 +---------------------------------------------------------------------- + + - Fixed some Python mem leaks and signal/event handlers can now + return non-null integer to tell xchat to stop processing the event + (like perl handling functions) (Richard Fuchs). + - Got rid of the Linger timeout. This was a lame solution to stop the + loss of QUIT messages when closing the socket too early. Now xchat + just delays closing sockets by 5 seconds (even on quiting the app). + No more 1 second delay when you close a tab or the whole app! + - Fixed some memory leaks in the banlist window. + - Added 'B' channel-mode button to access the banlist. + - Added Turkish translation (Ozgur Dogan GUNES). + - Updated Spanish translation (Antonio de la Torre). + - Fixed the throttle setting (which was reversed! who did that?). + - Added IRC::notify_list. (Matthew Gabeler-Lee). + - Don't crash when bind fails for dcc send. + - Don't send garbage to server when ban_type is invalid. + - Rewrote a whole heap of bad code in maingui.c. When opening a new + tab/window it always uses the same functions instead of having the + code repeated a few times. This is pretty big so expect some things + to break. This also means dcc/chanlist etc tabs get the < > buttons + too. + - /KICKBAN now deops users first (Tobias von Koch). + + +---------------------------------------------------------------------- + 1.7.1 +---------------------------------------------------------------------- + + - Turning off server tabs should work again (1.7.0 bug). + - Some ipv6 fixes. + - Added a few TextEvents that used to be hardcoded. + - Updated jcode (Takuo Kitame). + - Fixed possible crash in palette window (1.7.0 bug). + - Rewrote the EscapeCode->mIRC color conversion for /exec. + - Added option to explicitly set your dcc IP (Jim Seymour). + - Added Opera and w3m to default URL Handlers. + - New serverlist/window icon - just for a change. + - Updated Korean translation (Kim SeungBaeck). + - Added hook_timeout to the XChat.XChat() python class so you can + XChat.XChat().hook_timeout(delay, handler). It is a one time + function like the perl version (Donald Kjer). + - /RECONNECT can now takes args like /SERVER, the difference + being that it'll rejoin all your channels (Angel). + + +---------------------------------------------------------------------- + 1.7.0 +---------------------------------------------------------------------- + + - Updated German translation (Benedikt Roth). + - Updated Spanish translation (Antonio de la Torre). + - Updated Japanese translation (Takuo Kitame). + - Added Norwegian translation (Kjartan Maraas). + - Fix for bug in 1.4.x serverlist.conf loading. + - Away status and reason is re-send to the server if you get + disconnected (Daniel Rall). + - Added option to have one tab for notices, configurable under + Inferface/Window layout (Alex Badea). + - Added another meter component that measures the server send queue + from the throttle system (pref: throttlemeter), added UI support + for showing the lag and throttle as either progress bars, info + boxes, both, or none (Alex Badea). + - Added a command to flush the send queue (/FLUSHQ) and one for + forcing a new lag check (/LAGCHECK) (Alex Badea). + - Added option 'persist_chans', when ON once a session is created + for a channel, no other channel will be assigned to that session, + regardless of any parts or kicks (Alex Badea). + - Compile errors while loading a perl script are printed on the main + window. Warnings issued by perl scripts are also printed on the + main window. This allows script writers to use the perl command + 'warn' to point out strange things. Perl errors no longer make + xchat crash. The error message is written on the main window and + the command execution is stopped (Frodo Baggins). + - Added IPv6 support for making server connections. See + ./configure --enable-ipv6 and /6SERVER command (\\bonxo\\@IRCnet). + - Added Banlist window (Salvatore Insalaco). + - You can now specify which dir ssl is in, e.g.: ./configure + --enable-openssl=/usr/local/ssl (Richard Fuchs). + - Added InterScan proxy traversal support (is this the correct name + for this proxy? Looks like a httpd proxy to me) (Alex Riesen). + - Added Japanese code conversion support, see ./configure + --enable-japanese-conv (Takuo Kitame). + - xtext: smooth (pixel-based) scrolling. + + +---------------------------------------------------------------------- + 1.6.4 +---------------------------------------------------------------------- + + - Fix for using a DCC port range (Lawrence Gold). + - Fix for building on UnixWare 7 (Ronald Joe Record). + - Added Chinese translations - zh_TW.Big5 and zh_CN (Kevin Peng and + Anthony Fok Tung-Ling). + - Added Finnish translation (Jarkko Ranta). + - Revamped the default URLHandlers to add Galeon and Mozilla. + - Clicking Accept on a DCC chat that you offered would loop - fixed. + - Fixed percentage display for DCC receive (Matthew Gabeler-Lee). + - Fixed bug in indent and timestamps (Dmitriy Zavin). + - Fixed crash bug in xchat-text and DCC send being aborted remotely. + - Made /lastlog more efficient for very large scrollback buffers. + - Beep on private actions too (Richard Fuchs). + - /MSG'ing a channel or nick will show up in the destination tab + instead (Richard Fuchs). + + +---------------------------------------------------------------------- + 1.6.3 +---------------------------------------------------------------------- + + - Updated Swedish translation (Christian Rose). + - Updated Spanish translation (Antonio de la Torre). + - Right-click toggle menu items used to crash under gnome (bug in + gnome-libs?) - work around. + - xtext: Efficiency improvements: text mark, word and line select. + - xtext: fixes for multibyte characters (UNO Takeshi). + - Fixed bug in resizing a tinted-transparent window (deb bug #79674). + - Some OS2 compilation fixes (pla). + - Fixed PONG parsing (Stefano Barbato). + - Fixed a leak of file descriptors. + - Fixed /ALLSERV. + - Fixed /BAN to replace ~ with * in username (Stefan Scholl). + - Fixed /ME through DCC CHAT while not connected to server (#81031). + - Work-around for UnrealIRCd's duplicate /NAMES bug. + - Fixed DCC receiving filenames with spaces. + + +---------------------------------------------------------------------- + 1.6.2 +---------------------------------------------------------------------- + + - xtext: Fixed the mark-clear bug (gnome bug #34584). + - Updated German translation (Tamer Fahmy). + - Commas are replaced with %2c in URLs, as to not confuse poor old + Netscape (deb bug #70905). + - Bluestring to 300 chars (deb bug #79138). + - Added option /SET percascii, which can disable/enable translation + of %XXX into an ascii value while typing (deb bug #76122). + - New hotkey hook: key_action_put_history. Only inserts line into + history, but doesn't send it to the server (DaP). + - Lots of SSL updates: + * Make accept_invalid_cert optional on /sslserver (DaP). + * Print verbose information of SSL session on connect (DaP). + * Clean up code at X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT checking + (DaP). + + +---------------------------------------------------------------------- + 1.6.1 +---------------------------------------------------------------------- + + - xtext: Fixed lockup with certain sized fonts. + - xtext: Made some changes to improve efficiency when using really + large scrollback buffers (only noticable when doublebuffer off). + - Fixed a bug in /help crashing on longer than 10 char UserCommands. + - Fixed autoreconnect while using a proxy server. + - Never-give-up ReConnect does just that (even more so than before :) + - Fixed the channelmode buttons mouse-over problem. + - Fixed percentage display for large files in dcc recv/send gui. + - StartTime in dcc chat gui no longer Jan 1 1970. + - Fixed DCC send behind IP-Nat (Bernhard Valenti) + <bernhard.valenti@gmx.net>. + - Added Lithuanian translation (Gediminas Paulauskas). + - The < > buttons arn't shown for non-tab windows (Aaron Lehmann). + - Fixed the (-1,-1) transparency problem for non-tab windows. + + +---------------------------------------------------------------------- + 1.6.0 +---------------------------------------------------------------------- + + - xtext: More efficient handling of expose events, text marking and + url highlighting when double buffer is OFF. + - xtext: Fixed a very rare bug that could cause BadGC errors or the + separator bar not to be drawn. + - Fixed crash in right-clicking URLs in the URL Grabber window. + - If Check-For-Replace is in the keybindings for Return, it'll + actually work again. + - USER login command now sends your nodename instead of 'localhost' + to please some IRCNet servers. + - Updated Swedish translation (Christian Rose). + + +---------------------------------------------------------------------- + 1.5.11 +---------------------------------------------------------------------- + + - Updated Slovak translation (Stano Visnovsky). + - Updated Swedish translation (Christian Rose). + - Updated Greek translation (Fanis Dokianakis). + - Updated Spanish translation (Antonio de la Torre). + - If Never-Give-Up Reconnect is ON, it won't give up on DNS failer. + - '/me is back' is sent again when Announce Away Messages is ON. + - If channelmode buttons were OFF and you joined a channel with a + userlimit xchat would crash - fixed. + - /sslserver's password arg. is now optional (Daniel Richards). + - SSL accepts self signed certs (Daniel Richards). + - Fixed the unnecessary window resizes when opening a new tab. + - Changed the tinting code a bit (thanks gnapster :). + - Transparent shell tabs update too when they are moved. + + +---------------------------------------------------------------------- + 1.5.10 +---------------------------------------------------------------------- + + - Added "Enable double buffer" toggle in Setup->Channel windows. + - Double buffer is now OFF by default (seems to use less CPU). + - Timestamps didn't turn ON while indent was OFF - fixed. + - Updated Swedish translation (Christian Rose). + - Added some extra text events: Channel Msg hilight, Channel + Action hilight (near top of the list). No more cardcoded color + codes! Also hilighting in actions works, and you can make the whole + message hilighted if you change the event text. + - Initial window size is actually set to your settings (this will + never be perfect I guess, sometimes to the window still resizes + itself without warning). + - Hidemenubar setting didn't work properly for non-tabs and when + delinking windows - fixed. + - Notices appear in front tab even when server tabs are enabled. + - Changed Away behaviour again. No more /back, /away with no args + brings you back. The menu-item's state is what the server tells + it, it even changes when you switch tabs to another server. Xchat + assumes you are not away when you first connect. irc::get_info(5) + returns the away state. One day the other UserModes menu items will + show correct states. Is everyone happy now? + - Translation tables didn't work for outgoing text - fixed. + - Cleaned up a few xchat.conf names, a few settings may not load up + from 1.5.9 - just set them again. + + +---------------------------------------------------------------------- + 1.5.9 +---------------------------------------------------------------------- + + - Updated Spanish translation (Antonio de la Torre). + - Added Hebrew translation (Dan Fruehauf). + - Fixed crash bug when partreason was not set. + - Dialog tabs obay the hidetopicbar setting now too (the one in the + right-click menu). + - Cleaned up the settings gui: the whole window is more compact now, + some toggles in two columns, numbers use a spin-button, entry boxes + are larger and option-menus are more consistant. + - The "o=xx v=xx t=xx" display is finally changed. + - Changed most of xtext.c to use gdk instead of Xlib. + - Added configure option: + --disable-xlib disable use of xlib (for non X11 systems) + This might help compile xchat on other GTK supported systems like + BeOS and Win32 (havn't tried it though). + - Neater /set list. + - You can now set a nickname per server (see serverlist edit window). + - Changed the behaviour of /away and added /back (James Crawford). + - Away reason can now be a text file of random reasons too. + + +---------------------------------------------------------------------- + 1.5.7 -> 1.5.8 +---------------------------------------------------------------------- + + - Updated Spanish translation (Antonio de la Torre). + - Updated Swedish translation (Christian Rose). + - Updated Greek translation (Dokianakis Fanis). + - Updated German translation (Tamer Fahmy). + - Added Catalan translation (Pablo Saratxaga). + - Added option "Always timestamp logs" which timestamps log files + even if on-screen timestamps are off (Mike Guidero). + - Added entry "Part Reason: ". Also part and quit reasons can be + a filename of random reasons (filename relative to ~/.xchat/). + - Took out /unban as a internal command, add it as a usercommand + /quote MODE %c -b &2 instead. + - Added a text event for banlist. Try /banlist and it'll be a bit + more readable now. + - Changed output throttle system (undernet style) (Alex Badea). + - Added 1 second linger socket option to stop QUIT msgs from being + lost (they still get lost sometimes, why?). + + +---------------------------------------------------------------------- + 1.5.6 -> 1.5.7 +---------------------------------------------------------------------- + + - Fixed transparency-leak problems in 1.5.6 + - New code to create shaded transparency, taken from latest zvt. + (is it better?) + - URL handlers are now executed without a shell. + (http://www.securityfocus.com/vdb/bottom.html?vid=1601) + - Fixed a bug in xchat.conf and serverlist.conf loading. + - When spliting msgs (longer than the IRC 512 limit), it used to + loose some chars - fixed. + - Added feature to choose DCC port range (Lars Sundqvist). + - Fixed perl-stack overflow probs in irc::userlist() and others. + Added perl functions user_list_short() and perl_script_list() + (Mike Guidero). + - MHz is now detected on FreeBSD 4.x/5.x (Jonathan Perkin). + - It's now possible to "/dcc close chat nick" within a DCC perl + input handler without crashing xchat. (Geoffrey Higginson). + - Fixed a problem with the usermenu not updating sometimes. + + +---------------------------------------------------------------------- + 1.5.5 -> 1.5.6 +---------------------------------------------------------------------- + + - Added option pingtimeout, which pings the server instead. + /set pingtimeout 90 is default (small values will malfunction). + You also need the lagometer enabled for this to work. + - No longer using fnmatch() for ignore etc (because the way it + handles [ and ]). Using function from ircu2.10.08. + - Some fixes to code & configure.in to make it compile using + Solaris C (Albert Chin). + - New Spanish translation (Antonio de la Torre). + - New Russian translation (Alex Samorukov). + - New Hungarian translation (Horvath Szabolcs). + - Added Portuguese translation (Vitor Antunes). + - Added Slovak translation (Martin Pekar). + - Added /allserv <cmd> and /allchan <cmd>. They send a command to + all currently connected servers and joined channels. Also added + usercommands /ame and /amsg which make use of this. + - Added sock5 traversal, see Setup->Proxy Server (Alex Badea). + (The numbers for proxy_type are now 0=disabled, 1=wingate, + 2=socks4, 3=socks5). + - A few more buffer overflow checks (nick & channel length). + - Mapped mIRC color 99 to "no background" (mIRC lame!). + - Some efficiency tweaks to xtext. + - Added SSL support (see --enable-openssl and /help server) (DaP). + This seems to be highly experimental, as I don't know of any IRC + servers that can do SSL yet. + - Changed history behaviour, more like GNU (DaP). + i.e. Doesn't wrap and the bottom line is blank. + - Added option "InputBox Always In Focus" (DaP). + - Added option "Show Nickgad" (DaP). + - Added option "Show invites in the active Window" (DaP). + - Added option "Send /Whois" in notifies section, which sends a + /whois when someone comes online (DaP). + - Added an event for numeric 341, you inivited someone (DaP). + - Title bar text changed/improved a bit (DaP). + - Added actions for EditKeyBindings: MoveFrontTabLeft and + MoveFrontTabRight, like the <> buttons, but for keyboard (DaP). + - Implemented timeout events in the text frontend (Alex Badea and + fixed by me :). + - Dcc Recv/Send tabs won't resize the window when open. + - Added configure option --disable-glib. + - Transparent windows update when background changes (Aaron Lehmann). + - serverlist.conf is slightly changed! You WILL be able to load your + old 1.5.5 or 1.4.x server list, but older versions WON'T load lists + from 1.5.6, so backup your serverlist.conf if you need to. + + +---------------------------------------------------------------------- + 1.5.4 -> 1.5.5 +---------------------------------------------------------------------- + + - Fix for show/hide menu under gnome. + - Added -a and --noauto arg (don't auto connect to any servers). + - Added internal /list command, which sends the correct args according + to ircd type (it detects undernet and dalnet to send >0,<10000). + Remove any old /list usercommands you might have. + - /op /deop ... etc send up to six modes per line if using undernet. + - As discussed in the mailinglist, changed DCC resume to send and + expect to receive ACKs as an absolute, rather than an offset from + the resume point. It *should* work with mIRC now, but break with + old versions of xchat and probably BitchX. + - Added option "Limited Tab Highlighting" (Francis Litterio). + + +---------------------------------------------------------------------- + 1.5.3 -> 1.5.4 +---------------------------------------------------------------------- + + - Lack of gdk_pixbuf is detected correctly now (configure script). + - textmarking is no longer a timeout event, is this better or worse? + - Added Turkish translation (Fatih Demir). + - Added Russian translation (Valek Filippov). + - Added Ukrainian translation (Yuri Syrota). + - Added configure option --disable-zvt. Also, zvt shell tab can be + compiled in even without gnome (and is by default, if gnome-config + can be found to provide the LDFLAGS). + - Added "Delete Word Forward" function in Edit Key Bindings. Bind + this to Alt-d for that emacs feel (Francis Litterio). + - Ping times show one extra decimal place. + - You can now hide the menubar too, click left mouse in the text area + to get a popup version of the menu (middle mouse in dialogs). + - Added the proxy settings to the GUI, Setup->IRC->Proxy Server. + - Added a keyword TOGGLE for usermenu. Delete your old usermenu.conf + to see the new default one. + - Configure script now cleans up the CFLAGS & LDFLAGS (removes + duplicate words), let's hope this doesn't break on some boxses. + + +---------------------------------------------------------------------- + 1.5.2 -> 1.5.3 +---------------------------------------------------------------------- + + - Fixed a rare overflow bug in auto_insert(). + - Pressing OK in the settings window on slow machines (p233?) was + pretty slow, maybe it's faster now. + - Corrected some inputgad behaviour (Aaron Lehmann). + - Fix for 64bit machines (alpha) in xtext (word clicks). + - Updated German translation (Benedikt Roth). + - Updated Danish translation (Birger Langkjer). + - If you disconnect (/discon, /quit...) a server during the reconnect + delay, it is actually removed now. + - Added option "Give the userlist style" (DaP). + - Translation tables support can be turned off (--disable-trans), for + you minimalist freaks. + - Added Hebrew support, compile time: --enable-hebrew, run time: + /set hebrew 0/1 (Dan Aloni). + - Added new setting, "nick completion character" (Francis Litterio). + - Added new setting, "Old-style Nickname Completion", which makes it + act much like 1.4.x (Francis Litterio). + - Added "Delete Word" function to EditKeyBindings (Francis Litterio). + - Now using gdk-pixbuf for decoding pictures and tinted transparency. + (Tints don't seem to work 100% yet). (Andreas Persenius). + - Added halfop support (mode +h). This includes support in the + userlist, /hop, /dehop, /mdehop and new textevents (Elizandro G. Roos). + + +---------------------------------------------------------------------- + 1.5.1 -> 1.5.2 +---------------------------------------------------------------------- + + - --disable-gnome should work again. + - Fixed a bug in right-click nick menu. + - Should compile with glibc 2.1.3 (no more 'struct user' errors). + - Added Romanian translation (Dan Damian). + - CTCP flood protection won't kick in for ACTIONs. + - Removed the theme code. + - Made pixmaps.c, all code to decode/free/etc pixmaps is in here. + - WM_HINTS icon is set for the app. + - Removed the "-c" flag (it's automatic now). + + +---------------------------------------------------------------------- + 1.5.0 -> 1.5.1 +---------------------------------------------------------------------- + + - Shell tabs are now delinkable. + - Added a "show/hide topic bar" button (bottom right), I didn't know + where else to put this. + - Hidding the userlist is saved and any new tabs/windows open will + have the userlist hidden. + - You can now turn off/on perl warnings with /set perlwarnings 0/1. + - Tab-key nick completion even more like GNU readline (Gerard Daubar). + - Rewrote the function that handles %variables in userlist buttons, + user commands and ctcp replies (all use the same function now), + please report any bugs (especially if someone can overflow you from + remote ;) - as a consequence, you can use % and & (word/word_eol) + for ctcp replies now. Also added %m for machine info. + - Nickname-popup-menu, URLmenu and Usermenu all use the same code now + (it means you can make submenus in all 3). + - Double eval back in perl.c + - Dialogs/querys also have a toolbox button (just for consistancy). + - Added lagometer (/set lagometer 0 to turn it off), this isn't quiet + finished yet (and doesn't work on IRCNet because it refuses to + reply to pings correctly). + + +---------------------------------------------------------------------- + 1.4.2 -> 1.5.0 +---------------------------------------------------------------------- + + - Some changes & cleanups to the parser code (inbound/outbound). + - Ran all source through indent, using: + indent -bli0 -bls -ce -ts3 -i3 + (please use this in your patches, I used GNU indent 2.2.4). + - If you send a message (channel or query window) longer than 512 + bytes (maximum allowed by the ircd) it will be split into two + smaller messages instead of being truncated. + - Some gui touchups and changes. + - You can now enable/disable the output throttle with /set throttle. + - Added /timer. + - Overhauled the ChannelList window (Joshua Gough). + - Added proxy traversal support for socks and wingate, no gui yet so + use /set proxy_host, proxy_port, proxy_type (1=socks, 2=wingate). + - Added /userlist. + - Opaque-window-move used to be slow on some windowmanagers even + with transparency turned off - fixed. + - Tab-key completion is more like GNU readline (Wes Peters). + - Now possible to use modules in perl scripts (Andreas Scherbaum). + - irc::get_info(4) returns the current xchat dir (Mike Guidero). + - Added irc::get_prefs() (returns a /set variable) (Leo Cacciari). + - /set <wildcard> is now possible. + - Added Show-Userhost-in-Userlist option (Nicolas Dimitrijevic). + - Build tree cleaned up so 'make dist' can work. + - Added flood protection from CTCP and mass-dialogs-opening (Bruj0) + rdiazleven@ubp.edu.ar. (see variables *_limit). + + +---------------------------------------------------------------------- + 1.4.1 -> 1.4.2 +---------------------------------------------------------------------- + + - Compilation fixes for IRIX (David Kaelbling). + - Compilation fixes for AIX (Rodrigo Barbosa). + - Compilation fixes for OpenBSD. + - Should now compile with certain beta/alpha versions of Perl. + - "Scrollbar snapping to top" bug fixed. + - Corrected some text marking behaviour. + - Made use of fnmatch(), if available (for chanlist, ignore etc). + - Configure script is now generated with a sane version of autoconf. + - Alt-minus and Alt-plus now wrap around (AGL). + + +---------------------------------------------------------------------- + 1.4.0 -> 1.4.1 +---------------------------------------------------------------------- + + - Fixed a bug that could make new text not appear while marking text. + - xtext: Further improved performance when double buffering is turned + off (marking text & URL hilights are almost flicker free). + - xtext: Double buffer is now freed at each render operation, this + should reduce memory usage if you have many tabs open. + - If you closed a server while it was in the reconnect-delay, xchat + would crash - fixed. + - No more zombies when doing /discon while connection in progress. + - Added "/clear all" command (Paul de Regt). + - Hilights only work on full word matches now (Brendan O'Dea). + - Some Solaris compilation fixes (David Morgan). + - Danish translation updated (Birger Langkjer). + - Italian translation updated (Stefano Fava). + - Greek translation added (Fanis Dokianakis). + - Dutch translation upated (Arjan Scherpenisse). + - Removed some very old translations: fr_CA, no, pl, ru and sv. + (If someone wants to update these, you're welcome to). + - Channel mode "+h nick" (half Op) is now reported correctly (still + not supported in the userlist though). + - Having indent nicks OFF in channel windows and ON in dialog windows + didn't work - fixed. + - Sometimes ignores wouldn't save - fixed. + + +http://www.xchat.org diff --git a/xchat-2.8.8/HACKING b/xchat-2.8.8/HACKING new file mode 100644 index 0000000..8f45aff --- /dev/null +++ b/xchat-2.8.8/HACKING @@ -0,0 +1,51 @@ +Just some tips if you're going to help with xchat code (patches etc): + +* Use tabs, not spaces, to indent code. + +* Use a tab size of 3 (most editors will let you choose this). + Type :set ts=3 in vim/gvim. + +* Try to stick to the same consistant coding style: + +void +routine (void) +{ + if (function (a, b, c)) + { + x = a + 1; + } +} + + (vertically aligned braces, a space after if, while, functions etc). + +* Don't use "//" C++ style comments, some compilers don't like them. + +* When opening a file with unix level functions (open, read/write, close) + as opposed to the C-level functions (fopen, fwrite/fread, fclose), use + the OFLAGS macro. This makes sure it'll work on Win32 aswell as unix e.g: + + fh = open ("file", OFLAGS | O_RDONLY); + +* Use closesocket() for sockets, and close() for normal files. + +* Don't read() from sockets, instead use recv(). + +* Please provide unified format diffs (run diff -u). + +* Call your patch something more meaningfull than xchat.diff (I get a + million of these files!). + +* To make a really nice and clean patch, do something like this: + +Have two directories, unpacked from the original archive: +xchat-2.0.0/ +xchat-2.0.0p1/ +Then edit/compile the xchat-2.0.0p1 directory. When you're done, make +a patch with: + +cd xchat-2.0.0p1 +make distclean +cd .. +diff -urN xchat-2.0.0 xchat-2.0.0p1 > xchat-something.diff + +If using nmake (Windows) replace "make distclean" with "nmake -f makefile.msc clean" \ No newline at end of file diff --git a/xchat-2.8.8/INSTALL b/xchat-2.8.8/INSTALL new file mode 100644 index 0000000..2773a1c --- /dev/null +++ b/xchat-2.8.8/INSTALL @@ -0,0 +1,49 @@ +X-Chat Requirements: +~~~~~~~~~~~~~~~~~~~~ + + - GTK 2.6+ (it comes with your Linux) + + Optional: + + - Perl (http://www.perl.org) + - Python (http://www.python.org) + - TCL (http://tcl.activestate.com) + - OpenSSL (http://www.openssl.org) + + + +X-Chat Compiling and Installation: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Type this: + + ./configure + make + +Become root and type: + + make install + + +Other Options +~~~~~~~~~~~~~ + +To get a full list of compile options, type: + + ./configure --help + + +If you do not have GNU Gettext installed, instead use: + + ./configure --disable-nls + + +If you want to disable Perl you can do: + + ./configure --disable-perl + + +If you want to install a smaller stripped binary (without debug) do: + + make install-strip + diff --git a/xchat-2.8.8/INSTALL.w32 b/xchat-2.8.8/INSTALL.w32 new file mode 100644 index 0000000..846741a --- /dev/null +++ b/xchat-2.8.8/INSTALL.w32 @@ -0,0 +1,117 @@ +COMPILING ON WIN32 +~~~~~~~~~~~~~~~~~~ +It is not easy! Be warned! You need either one of these compilers: + + * Mingw (http://www.mingw.org) + * MS Visual C + +Note: This source code is meant for Linux/Unix like systems. Compiling this for +Windows will produce a below-par quality product. The official XChat for Windows +is not built with this unix source code. + + +Getting GTK +~~~~~~~~~~~ + +You also need GTK+ 2.10 for win32. Altough the GTK packages from the GIMP +website are larger and harder to install they work very well. + + 1) Get the following packages from: + http://www.gimp.org/~tml/gimp/win32/downloads.html + + - gtk+-2.4.3.tar.gz + - gtk+-dev-2.4.3.tar.gz + - dirent.zip + - gettext-runtime-0.13.1.zip + - gettext-tools-0.13.1.zip + - atk-1.6.0.zip + - atk-dev-1.6.0.zip + - pango-1.4.0.zip + - pango-dev-1.4.0.zip + - libpng (http://gnuwin32.sourceforge.net/packages/libpng.htm) Binaries & Developer files. + - GNU libiconv (Not source files) + - glib-2.4.2.zip + - glib-dev-2.4.2.zip + - pkgconfig-0.15.zip + - Zlib121-dll.zip + + 2) Extract all files to a suitable place such as c:\devtools + + 3) Windows 2000, XP & 2003 users: + - Start->(Settings->)Control Panel->System Applet + - Advanced Tab->Environment Variables + - Under "User variables for <user>" append ";C:\devtools" to the end of the PATH Variable + - Click Ok twice and close the Control Panel + + For Windows 9x users your basicly on your own for now. + + +Mingw +~~~~~ + + I havn't tried this yet, but ./configure --disable-xlib would be a start. + + +MS Visual C +~~~~~~~~~~~ + + + 1) Edit src\makeinc.msc + + You need to change the variables GLIB, GTK and LIBS to point + the correct paths for your harddrive. Use the program pkg-config + to find this information. + + a) paste the output of `pkg-config glib-2.0 --msvc-syntax --cflags` + to the GLIB = ... line. + + b) paste the output of `pkg-config gtk+-2.0 --msvc-syntax --cflags` + to the GTK = ... line. + + c) paste the output of `pkg-config gtk+-2.0 --msvc-syntax --libs` + to the LIBS = ... line. + + 2) In MSVC's includes directory, copy io.h to unistd.h. + + MS VC++ 6 + ~~~~~~~~~ + + 3) Download Platform SDK from http://www.microsoft.com/msdownload/platformsdk/sdkupdate/ + (you only need Core SDK) - ~200 MB Download (Be warned). + 4) Open the build enviroment. + + a) If your planning on developing modifications to the xchat code go: + Start->Programs->Microsoft Platform SDK...->Open Build Enviroment...->(Choose OS)->... (Debug) + + b) If your compiling just to use xchat and wish to no recieve debug messages: + Start->Programs->Microsoft Platform SDK...->Open Build Enviroment...->(Choose OS)->... (Retail) + 5) Change directory into where you have download the xchat source to and type this: + cd src + nmake -f makefile.msc clean + nmake -f makefile.msc + 6) Copy fe-gtk\xchat.exe to another place. + MS VC++ 7 (.NET) + ~~~~~~~~~~~~~~~~ + + 3) Open the Visual Studio .NET Command Prompt + + 4) Change directory into where you have download the xchat source to and type this: + cd src + nmake -f makefile.msc clean + nmake -f makefile.msc + 5) Copy fe-gtk\xchat.exe to another place. + + +Common problems: +~~~~~~~~~~~~~~~~ + + * gdk-pixbuf-csource must be in PATH. + FIX: See step 3 for setting up GTK + + * You might need to install dirent.zip manually. + FIX: Copy C:\devtools\include\dirent.h to C:\devtools\include\glib-2.0\dirent.h + + * Include path to libintl.h should be in GLIB= (makeinc.msc). + FIX: Copy C:\devtools\include\libintl.h to C:\devtools\include\glib-2.0\libintl.h + + diff --git a/xchat-2.8.8/Makefile b/xchat-2.8.8/Makefile new file mode 100644 index 0000000..9571a49 --- /dev/null +++ b/xchat-2.8.8/Makefile @@ -0,0 +1,881 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + +pkgdatadir = $(datadir)/xchat +pkgincludedir = $(includedir)/xchat +pkglibdir = $(libdir)/xchat +pkglibexecdir = $(libexecdir)/xchat +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +subdir = . +DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(srcdir)/config.h.in \ + $(top_srcdir)/configure $(top_srcdir)/intl/Makefile.in AUTHORS \ + COPYING ChangeLog INSTALL compile config.guess config.rpath \ + config.sub depcomp install-sh ltmain.sh missing +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = intl/Makefile +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(icondir)" "$(DESTDIR)$(utildir)" +DATA = $(icon_DATA) $(util_DATA) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir dist dist-all distcheck +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + { test ! -d "$(distdir)" \ + || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr "$(distdir)"; }; } +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print +ACLOCAL = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run aclocal-1.11 +ALLOCA = +AMTAR = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run tar +AR = ar +AUTOCONF = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run autoconf +AUTOHEADER = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run autoheader +AUTOMAKE = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run automake-1.11 +AWK = gawk +BUILD_INCLUDED_LIBINTL = no +CATOBJEXT = .gmo +CC = gcc +CCAS = gcc +CCASDEPMODE = depmode=gcc3 +CCASFLAGS = -g -O2 +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 -Wall -pipe -Wno-pointer-sign -funsigned-char +CFLAG_VISIBILITY = -fvisibility=hidden +COMMON_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -pthread -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include +COMMON_LIBS = -lglib-2.0 -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DATADIR = ${prefix}/share +DATADIRNAME = share +DBUS_BINDING_TOOL = /usr/bin/dbus-binding-tool +DBUS_CFLAGS = -pthread -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include +DBUS_LIBS = -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0 +DBUS_SERVICES_DIR = ${prefix}/share/dbus-1/services +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/local/bin/grep -E +EXEEXT = +FGREP = /usr/local/bin/grep -F +GCONFTOOL = /usr/bin/gconftool-2 +GENCAT = gencat +GETTEXT_MACRO_VERSION = 0.17 +GETTEXT_PACKAGE = xchat +GLIBC2 = yes +GLIBC21 = yes +GLIB_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include +GLIB_GENMARSHAL = /usr/bin/glib-genmarshal +GLIB_LIBS = -lglib-2.0 +GLIB_MKENUMS = glib-mkenums +GMSGFMT = /usr/bin/msgfmt +GMSGFMT_015 = /usr/bin/msgfmt +GOBJECT_QUERY = gobject-query +GREP = /usr/local/bin/grep +GTKSPELL_CFLAGS = +GTKSPELL_LIBS = +GTK_CFLAGS = -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 +GTK_LIBS = -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype +GUI_CFLAGS = -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 +GUI_LIBS = -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype -Wl,--version-script,$(srcdir)/../version-script -lglib-2.0 -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0 +HAVE_ASPRINTF = 1 +HAVE_POSIX_PRINTF = 1 +HAVE_SNPRINTF = 1 +HAVE_VISIBILITY = 1 +HAVE_WPRINTF = 0 +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +INSTOBJEXT = .mo +INTLBISON = bison +INTLLIBS = +INTLOBJS = +INTL_LIBTOOL_SUFFIX_PREFIX = +INTL_MACOSX_LIBS = +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = -lgmodule-2.0 +LIBICONV = -liconv +LIBINTL = +LIBMULTITHREAD = -lpthread +LIBOBJS = +LIBPTH = +LIBPTH_PREFIX = +LIBS = -lX11 -lssl -lcrypto -ldl -Wl,--export-dynamic -pthread -lglib-2.0 +LIBSEXY_CFLAGS = +LIBSEXY_LIBS = +LIBTHREAD = +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBC = -lc +LTLIBICONV = -liconv +LTLIBINTL = +LTLIBMULTITHREAD = -lpthread +LTLIBOBJS = +LTLIBPTH = +LTLIBTHREAD = +MAINT = # +MAKEINFO = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run makeinfo +MKDIR_P = /bin/mkdir -p +MSGFMT = /usr/bin/msgfmt +MSGFMT_015 = /usr/bin/msgfmt +MSGMERGE = /usr/bin/msgmerge +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = xchat +PACKAGE_BUGREPORT = http://www.xchat.org/ +PACKAGE_NAME = XChat +PACKAGE_STRING = XChat 2.8.8 +PACKAGE_TARNAME = xchat +PACKAGE_URL = +PACKAGE_VERSION = 2.8.8 +PATH_SEPARATOR = : +PERL_CFLAGS = -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/lib/x86_64-linux-gnu/perl/5.26/CORE +PERL_LDFLAGS = -Wl,-E -fstack-protector-strong -L/usr/local/lib -L/usr/lib/x86_64-linux-gnu/perl/5.26/CORE -lperl -ldl -lm -lpthread -lcrypt +PKG_CONFIG = /usr/bin/pkg-config +PLUGIN_INCLUDES = -I$(top_srcdir)/plugins +POSUB = po +PRI_MACROS_BROKEN = 0 +PY_CFLAGS = -I/usr/include/python2.7 +PY_LIBS = -L/usr/lib/python2.7/config -lpython2.7 -lpthread -lutil +RANLIB = ranlib +SED = /bin/sed +SET_MAKE = +SHELL = /bin/bash +STRIP = strip +TCL_CFLAGS = -I/usr/include -I/usr/include/tcl8.6 +TCL_LIBS = -L/usr/lib/x86_64-linux-gnu -ltcl8.6 -ldl -lz -lpthread -lm +USE_INCLUDED_LIBINTL = no +USE_NLS = yes +VERSION = 2.8.8 +WINDRES = +WOE32 = no +WOE32DLL = no +XGETTEXT = /usr/bin/xgettext +XGETTEXT_015 = /usr/bin/xgettext +XGETTEXT_EXTRA_OPTIONS = +abs_builddir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8 +abs_srcdir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8 +abs_top_builddir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8 +abs_top_srcdir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8 +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = /usr/local +gdkpixbufcsourcepath = /usr/bin/gdk-pixbuf-csource +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +lt_ECHO = echo +mandir = ${datarootdir}/man +mkdir_p = /bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +perlpath = /usr/bin/perl +pkgconfigpath = /usr/bin/pkg-config +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +pythonpath = /usr/bin/python2 +sbindir = ${exec_prefix}/sbin +sedpath = /bin/sed +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = +top_builddir = . +top_srcdir = . +unamepath = /bin/uname +xchatlibdir = ${exec_prefix}/lib/xchat +SUBDIRS = po intl src plugins +EXTRA_DIST = autogen.sh HACKING INSTALL.w32 faq.html xchat.png \ + xchat.desktop xchat.spec config.h.w32 xchat.ico + +icon_DATA = xchat.png +icondir = $(datadir)/pixmaps +util_DATA = xchat.desktop +utildir = $(datadir)/applications +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +am--refresh: + @: +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: # $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): + +config.h: stamp-h1 + @if test ! -f $@; then \ + rm -f stamp-h1; \ + $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ + else :; fi + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h +$(srcdir)/config.h.in: # $(am__configure_deps) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 +intl/Makefile: $(top_builddir)/config.status $(top_srcdir)/intl/Makefile.in + cd $(top_builddir) && $(SHELL) ./config.status $@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool config.lt +install-iconDATA: $(icon_DATA) + @$(NORMAL_INSTALL) + test -z "$(icondir)" || $(MKDIR_P) "$(DESTDIR)$(icondir)" + @list='$(icon_DATA)'; test -n "$(icondir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(icondir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(icondir)" || exit $$?; \ + done + +uninstall-iconDATA: + @$(NORMAL_UNINSTALL) + @list='$(icon_DATA)'; test -n "$(icondir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(icondir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(icondir)" && rm -f $$files +install-utilDATA: $(util_DATA) + @$(NORMAL_INSTALL) + test -z "$(utildir)" || $(MKDIR_P) "$(DESTDIR)$(utildir)" + @list='$(util_DATA)'; test -n "$(utildir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(utildir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(utildir)" || exit $$?; \ + done + +uninstall-utilDATA: + @$(NORMAL_UNINSTALL) + @list='$(util_DATA)'; test -n "$(utildir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(utildir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(utildir)" && rm -f $$files + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(am__remove_distdir) + test -d "$(distdir)" || mkdir "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-lzma: distdir + tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma + $(am__remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz + $(am__remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + +dist dist-all: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lzma*) \ + lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + --with-included-gettext \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @$(am__cd) '$(distuninstallcheck_dir)' \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile $(DATA) config.h +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(icondir)" "$(DESTDIR)$(utildir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr \ + distclean-libtool distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-iconDATA install-utilDATA + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-iconDATA uninstall-utilDATA + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ + ctags-recursive install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am am--refresh check check-am clean clean-generic \ + clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \ + dist-gzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \ + distcheck distclean distclean-generic distclean-hdr \ + distclean-libtool distclean-tags distcleancheck distdir \ + distuninstallcheck dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-iconDATA install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-strip install-utilDATA installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am uninstall-iconDATA uninstall-utilDATA + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/xchat-2.8.8/Makefile.am b/xchat-2.8.8/Makefile.am new file mode 100644 index 0000000..f86b4ed --- /dev/null +++ b/xchat-2.8.8/Makefile.am @@ -0,0 +1,12 @@ +## Process this file with automake to produce Makefile.in + +SUBDIRS = po intl src plugins + +EXTRA_DIST = autogen.sh HACKING INSTALL.w32 faq.html xchat.png \ + xchat.desktop xchat.spec config.h.w32 xchat.ico + +icon_DATA = xchat.png +icondir = $(datadir)/pixmaps + +util_DATA = xchat.desktop +utildir = $(datadir)/applications diff --git a/xchat-2.8.8/Makefile.in b/xchat-2.8.8/Makefile.in new file mode 100644 index 0000000..47ad6d9 --- /dev/null +++ b/xchat-2.8.8/Makefile.in @@ -0,0 +1,881 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = . +DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(srcdir)/config.h.in \ + $(top_srcdir)/configure $(top_srcdir)/intl/Makefile.in AUTHORS \ + COPYING ChangeLog INSTALL compile config.guess config.rpath \ + config.sub depcomp install-sh ltmain.sh missing +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = intl/Makefile +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(icondir)" "$(DESTDIR)$(utildir)" +DATA = $(icon_DATA) $(util_DATA) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir dist dist-all distcheck +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + { test ! -d "$(distdir)" \ + || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr "$(distdir)"; }; } +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +COMMON_CFLAGS = @COMMON_CFLAGS@ +COMMON_LIBS = @COMMON_LIBS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DATADIRNAME = @DATADIRNAME@ +DBUS_BINDING_TOOL = @DBUS_BINDING_TOOL@ +DBUS_CFLAGS = @DBUS_CFLAGS@ +DBUS_LIBS = @DBUS_LIBS@ +DBUS_SERVICES_DIR = @DBUS_SERVICES_DIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GCONFTOOL = @GCONFTOOL@ +GENCAT = @GENCAT@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GLIB_CFLAGS = @GLIB_CFLAGS@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GLIB_LIBS = @GLIB_LIBS@ +GLIB_MKENUMS = @GLIB_MKENUMS@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GOBJECT_QUERY = @GOBJECT_QUERY@ +GREP = @GREP@ +GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ +GTKSPELL_LIBS = @GTKSPELL_LIBS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_LIBS = @GTK_LIBS@ +GUI_CFLAGS = @GUI_CFLAGS@ +GUI_LIBS = @GUI_LIBS@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBSEXY_CFLAGS = @LIBSEXY_CFLAGS@ +LIBSEXY_LIBS = @LIBSEXY_LIBS@ +LIBTHREAD = @LIBTHREAD@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBC = @LTLIBC@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTHREAD = @LTLIBTHREAD@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL_CFLAGS = @PERL_CFLAGS@ +PERL_LDFLAGS = @PERL_LDFLAGS@ +PKG_CONFIG = @PKG_CONFIG@ +PLUGIN_INCLUDES = @PLUGIN_INCLUDES@ +POSUB = @POSUB@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +PY_CFLAGS = @PY_CFLAGS@ +PY_LIBS = @PY_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TCL_CFLAGS = @TCL_CFLAGS@ +TCL_LIBS = @TCL_LIBS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WOE32 = @WOE32@ +WOE32DLL = @WOE32DLL@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gdkpixbufcsourcepath = @gdkpixbufcsourcepath@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +perlpath = @perlpath@ +pkgconfigpath = @pkgconfigpath@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pythonpath = @pythonpath@ +sbindir = @sbindir@ +sedpath = @sedpath@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +unamepath = @unamepath@ +xchatlibdir = @xchatlibdir@ +SUBDIRS = po intl src plugins +EXTRA_DIST = autogen.sh HACKING INSTALL.w32 faq.html xchat.png \ + xchat.desktop xchat.spec config.h.w32 xchat.ico + +icon_DATA = xchat.png +icondir = $(datadir)/pixmaps +util_DATA = xchat.desktop +utildir = $(datadir)/applications +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +am--refresh: + @: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): + +config.h: stamp-h1 + @if test ! -f $@; then \ + rm -f stamp-h1; \ + $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ + else :; fi + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h +$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 +intl/Makefile: $(top_builddir)/config.status $(top_srcdir)/intl/Makefile.in + cd $(top_builddir) && $(SHELL) ./config.status $@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool config.lt +install-iconDATA: $(icon_DATA) + @$(NORMAL_INSTALL) + test -z "$(icondir)" || $(MKDIR_P) "$(DESTDIR)$(icondir)" + @list='$(icon_DATA)'; test -n "$(icondir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(icondir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(icondir)" || exit $$?; \ + done + +uninstall-iconDATA: + @$(NORMAL_UNINSTALL) + @list='$(icon_DATA)'; test -n "$(icondir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(icondir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(icondir)" && rm -f $$files +install-utilDATA: $(util_DATA) + @$(NORMAL_INSTALL) + test -z "$(utildir)" || $(MKDIR_P) "$(DESTDIR)$(utildir)" + @list='$(util_DATA)'; test -n "$(utildir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(utildir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(utildir)" || exit $$?; \ + done + +uninstall-utilDATA: + @$(NORMAL_UNINSTALL) + @list='$(util_DATA)'; test -n "$(utildir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(utildir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(utildir)" && rm -f $$files + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(am__remove_distdir) + test -d "$(distdir)" || mkdir "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-lzma: distdir + tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma + $(am__remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz + $(am__remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + +dist dist-all: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lzma*) \ + lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + --with-included-gettext \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @$(am__cd) '$(distuninstallcheck_dir)' \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile $(DATA) config.h +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(icondir)" "$(DESTDIR)$(utildir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr \ + distclean-libtool distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-iconDATA install-utilDATA + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-iconDATA uninstall-utilDATA + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ + ctags-recursive install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am am--refresh check check-am clean clean-generic \ + clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \ + dist-gzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \ + distcheck distclean distclean-generic distclean-hdr \ + distclean-libtool distclean-tags distcleancheck distdir \ + distuninstallcheck dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-iconDATA install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-strip install-utilDATA installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am uninstall-iconDATA uninstall-utilDATA + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/xchat-2.8.8/README b/xchat-2.8.8/README new file mode 100644 index 0000000..809a903 --- /dev/null +++ b/xchat-2.8.8/README @@ -0,0 +1,103 @@ +X-Chat README +~~~~~~~~~~~~~ + X-Chat ("xchat") Copyright (c) 1998-2010 By Peter Zelezny. + + This program is released under the GPL v2 with the additional exemption + that compiling, linking, and/or using OpenSSL is allowed. You may + provide binary packages linked to the OpenSSL libraries, provided that + all other requirements of the GPL are met. + See file COPYING for details. + + +What is it? +~~~~~~~~~~~ + X-Chat is an IRC client for UNIX operating systems. I.R.C. is Internet + Relay Chat, see http://irchelp.org for more information about IRC in + general. Xchat runs on most BSD and POSIX compliant operating systems. + + +Requirements: +~~~~~~~~~~~~~ + * GTK+ 2.10 (this is available at http://www.gtk.org). + + X-Chat is known to work on, at least: + + * Linux + * FreeBSD + * OpenBSD + * NetBSD + * Solaris + * AIX + * IRIX + * DEC/Compaq Tru64 UNIX + * HP-UX 10.20 and 11 + * MacOS X + * Windows XP/2000/Vista/7 + + +Notes for packagers: +~~~~~~~~~~~~~~~~~~~~ + + If you need your packages to work on i386, you don't need to compile with + --disable-mmx, because it's also checked at run-time. + + +Python Scripts: +~~~~~~~~~~~~~~~ + Scripts for 1.8.x are not compatible, and a brand new interface has be + written. Documentation can be found here: http://xchat.org/docs/. + Consider using the Python interface for your scripts, it's a very nice + API, allows for loading/unloading individual scripts, and gives you + almost all the features of the C-Plugin API. + + +Perl Scripts: +~~~~~~~~~~~~~ + Scripts for 1.8.x are compatible with the following exceptions: + +* IRC::command will not interpret %C, %B, %U etc. + +* user_list and user_list_short: + If a user has both op and voice, only the op flag will be 1. + +* add_user_list/sub_user_list/clear_user_list + These functions do nothing. + +* notify_list + Not implemented. Always returns an empty list. + +* server_list + Lists servers that are not connected aswell. + +* Some print events may have new names and some were added. + +* Text printed by scripts must now be UTF8. + +* Text passed to scripts (via add_message_handler) will be encoded in UTF8. + + +Autoloading Perl Scripts and Plugins +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + * X-Chat automatically loads, at startup: + ~/.xchat2/*.pl Perl scripts + ~/.xchat2/*.py Python scripts + ~/.xchat2/*.so Plugins + $(libdir)/xchat/plugins/*.so plugins + (this usually translates to /usr/lib/xchat/plugins/*.so) + + +Control Codes: +~~~~~~~~~~~~~~ + %% - A single percentage sign + %C - Control-C (mIRC color code) + %B - Bold Text + %U - Underline Text + %R - Reverse Text + %O - Reset all Text attributes + %XXX - ASCII XXX (where XXX is a decimal 3 digit number) + (Eg: %007 sends a BEEP) + + %Cforeground,background will produce a color code, eg: %C03,10 + + These are now disabled by default (see Settings > Prefs > Input Box). + Instead you can insert the real codes via ctrl-k, ctrl-b and ctrl-o. diff --git a/xchat-2.8.8/acinclude.m4 b/xchat-2.8.8/acinclude.m4 new file mode 100644 index 0000000..0c71173 --- /dev/null +++ b/xchat-2.8.8/acinclude.m4 @@ -0,0 +1,40 @@ +dnl AS_AC_EXPAND(VAR, CONFIGURE_VAR) +dnl +dnl example +dnl AS_AC_EXPAND(SYSCONFDIR, $sysconfdir) +dnl will set SYSCONFDIR to /usr/local/etc if prefix=/usr/local + +AC_DEFUN([AS_AC_EXPAND], +[ + EXP_VAR=[$1] + FROM_VAR=[$2] + + dnl first expand prefix and exec_prefix if necessary + prefix_save=$prefix + exec_prefix_save=$exec_prefix + + dnl if no prefix given, then use /usr/local, the default prefix + if test "x$prefix" = "xNONE"; then + prefix=$ac_default_prefix + fi + dnl if no exec_prefix given, then use prefix + if test "x$exec_prefix" = "xNONE"; then + exec_prefix=$prefix + fi + + full_var="$FROM_VAR" + dnl loop until it doesn't change anymore + while true; do + new_full_var="`eval echo $full_var`" + if test "x$new_full_var"="x$full_var"; then break; fi + full_var=$new_full_var + done + + dnl clean up + full_var=$new_full_var + AC_SUBST([$1], "$full_var") + + dnl restore prefix and exec_prefix + prefix=$prefix_save + exec_prefix=$exec_prefix_save +]) diff --git a/xchat-2.8.8/aclocal.m4 b/xchat-2.8.8/aclocal.m4 new file mode 100644 index 0000000..3d133c8 --- /dev/null +++ b/xchat-2.8.8/aclocal.m4 @@ -0,0 +1,13060 @@ +# generated automatically by aclocal 1.11.1 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.65],, +[m4_warning([this file was generated for autoconf 2.65. +You have another version of autoconf. It may work, but is not guaranteed to. +If you have problems, you may need to regenerate the build system entirely. +To do so, use the procedure documented by the package, typically `autoreconf'.])]) + +# codeset.m4 serial 2 (gettext-0.16) +dnl Copyright (C) 2000-2002, 2006 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_DEFUN([AM_LANGINFO_CODESET], +[ + AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, + [AC_TRY_LINK([#include <langinfo.h>], + [char* cs = nl_langinfo(CODESET); return !cs;], + am_cv_langinfo_codeset=yes, + am_cv_langinfo_codeset=no) + ]) + if test $am_cv_langinfo_codeset = yes; then + AC_DEFINE(HAVE_LANGINFO_CODESET, 1, + [Define if you have <langinfo.h> and nl_langinfo(CODESET).]) + fi +]) + +# gettext.m4 serial 60 (gettext-0.17) +dnl Copyright (C) 1995-2007 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000. +dnl Bruno Haible <haible@clisp.cons.org>, 2000-2006. + +dnl Macro to add for using GNU gettext. + +dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). +dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The +dnl default (if it is not specified or empty) is 'no-libtool'. +dnl INTLSYMBOL should be 'external' for packages with no intl directory, +dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. +dnl If INTLSYMBOL is 'use-libtool', then a libtool library +dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, +dnl depending on --{enable,disable}-{shared,static} and on the presence of +dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library +dnl $(top_builddir)/intl/libintl.a will be created. +dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext +dnl implementations (in libc or libintl) without the ngettext() function +dnl will be ignored. If NEEDSYMBOL is specified and is +dnl 'need-formatstring-macros', then GNU gettext implementations that don't +dnl support the ISO C 99 <inttypes.h> formatstring macros will be ignored. +dnl INTLDIR is used to find the intl libraries. If empty, +dnl the value `$(top_builddir)/intl/' is used. +dnl +dnl The result of the configuration is one of three cases: +dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled +dnl and used. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 2) GNU gettext has been found in the system's C library. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 3) No internationalization, always use English msgid. +dnl Catalog format: none +dnl Catalog extension: none +dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. +dnl The use of .gmo is historical (it was needed to avoid overwriting the +dnl GNU format catalogs when building on a platform with an X/Open gettext), +dnl but we keep it in order not to force irrelevant filename changes on the +dnl maintainers. +dnl +AC_DEFUN([AM_GNU_GETTEXT], +[ + dnl Argument checking. + ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , + [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT +])])])])]) + ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , + [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT +])])])]) + define([gt_included_intl], + ifelse([$1], [external], + ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]), + [yes])) + define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) + gt_NEEDS_INIT + AM_GNU_GETTEXT_NEED([$2]) + + AC_REQUIRE([AM_PO_SUBDIRS])dnl + ifelse(gt_included_intl, yes, [ + AC_REQUIRE([AM_INTL_SUBDIR])dnl + ]) + + dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + + dnl Sometimes libintl requires libiconv, so first search for libiconv. + dnl Ideally we would do this search only after the + dnl if test "$USE_NLS" = "yes"; then + dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT + dnl the configure script would need to contain the same shell code + dnl again, outside any 'if'. There are two solutions: + dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. + dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. + dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not + dnl documented, we avoid it. + ifelse(gt_included_intl, yes, , [ + AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) + ]) + + dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation. + gt_INTL_MACOSX + + dnl Set USE_NLS. + AC_REQUIRE([AM_NLS]) + + ifelse(gt_included_intl, yes, [ + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + ]) + LIBINTL= + LTLIBINTL= + POSUB= + + dnl Add a version number to the cache macros. + case " $gt_needs " in + *" need-formatstring-macros "*) gt_api_version=3 ;; + *" need-ngettext "*) gt_api_version=2 ;; + *) gt_api_version=1 ;; + esac + gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" + gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" + + dnl If we use NLS figure out what method + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + ifelse(gt_included_intl, yes, [ + AC_MSG_CHECKING([whether included gettext is requested]) + AC_ARG_WITH(included-gettext, + [ --with-included-gettext use the GNU gettext library included here], + nls_cv_force_use_gnu_gettext=$withval, + nls_cv_force_use_gnu_gettext=no) + AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + ]) + dnl User does not insist on using GNU NLS library. Figure out what + dnl to use. If GNU gettext is available we use this. Else we have + dnl to fall back to GNU NLS library. + + if test $gt_api_version -ge 3; then + gt_revision_test_code=' +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +changequote(,)dnl +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +changequote([,])dnl +' + else + gt_revision_test_code= + fi + if test $gt_api_version -ge 2; then + gt_expression_test_code=' + * ngettext ("", "", 0)' + else + gt_expression_test_code= + fi + + AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc], + [AC_TRY_LINK([#include <libintl.h> +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings;], + [bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings], + [eval "$gt_func_gnugettext_libc=yes"], + [eval "$gt_func_gnugettext_libc=no"])]) + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + dnl Sometimes libintl requires libiconv, so first search for libiconv. + ifelse(gt_included_intl, yes, , [ + AM_ICONV_LINK + ]) + dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL + dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) + dnl because that would add "-liconv" to LIBINTL and LTLIBINTL + dnl even if libiconv doesn't exist. + AC_LIB_LINKFLAGS_BODY([intl]) + AC_CACHE_CHECK([for GNU gettext in libintl], + [$gt_func_gnugettext_libintl], + [gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + dnl Now see whether libintl exists and does not depend on libiconv. + AC_TRY_LINK([#include <libintl.h> +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *);], + [bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")], + [eval "$gt_func_gnugettext_libintl=yes"], + [eval "$gt_func_gnugettext_libintl=no"]) + dnl Now see whether libintl exists and depends on libiconv. + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + AC_TRY_LINK([#include <libintl.h> +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *);], + [bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")], + [LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + eval "$gt_func_gnugettext_libintl=yes" + ]) + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS"]) + fi + + dnl If an already present or preinstalled GNU gettext() is found, + dnl use it. But if this macro is used in GNU gettext, and GNU + dnl gettext is already preinstalled in libintl, we update this + dnl libintl. (Cf. the install rule in intl/Makefile.in.) + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ + || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ + && test "$PACKAGE" != gettext-runtime \ + && test "$PACKAGE" != gettext-tools; }; then + gt_use_preinstalled_gnugettext=yes + else + dnl Reset the values set by searching for libintl. + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + ifelse(gt_included_intl, yes, [ + if test "$gt_use_preinstalled_gnugettext" != "yes"; then + dnl GNU gettext is not found in the C library. + dnl Fall back on included GNU gettext library. + nls_cv_use_gnu_gettext=yes + fi + fi + + if test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Mark actions used to generate GNU NLS library. + BUILD_INCLUDED_LIBINTL=yes + USE_INCLUDED_LIBINTL=yes + LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD" + LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD" + LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` + fi + + CATOBJEXT= + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Mark actions to use GNU gettext tools. + CATOBJEXT=.gmo + fi + ]) + + if test -n "$INTL_MACOSX_LIBS"; then + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Some extra flags are needed during linking. + LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" + LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" + fi + fi + + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + AC_DEFINE(ENABLE_NLS, 1, + [Define to 1 if translation of program messages to the user's native language + is requested.]) + else + USE_NLS=no + fi + fi + + AC_MSG_CHECKING([whether to use NLS]) + AC_MSG_RESULT([$USE_NLS]) + if test "$USE_NLS" = "yes"; then + AC_MSG_CHECKING([where the gettext function comes from]) + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + AC_MSG_RESULT([$gt_source]) + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + AC_MSG_CHECKING([how to link with libintl]) + AC_MSG_RESULT([$LIBINTL]) + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) + fi + + dnl For backward compatibility. Some packages may be using this. + AC_DEFINE(HAVE_GETTEXT, 1, + [Define if the GNU gettext() function is already present or preinstalled.]) + AC_DEFINE(HAVE_DCGETTEXT, 1, + [Define if the GNU dcgettext() function is already present or preinstalled.]) + fi + + dnl We need to process the po/ directory. + POSUB=po + fi + + ifelse(gt_included_intl, yes, [ + dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL + dnl to 'yes' because some of the testsuite requires it. + if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then + BUILD_INCLUDED_LIBINTL=yes + fi + + dnl Make all variables we use known to autoconf. + AC_SUBST(BUILD_INCLUDED_LIBINTL) + AC_SUBST(USE_INCLUDED_LIBINTL) + AC_SUBST(CATOBJEXT) + + dnl For backward compatibility. Some configure.ins may be using this. + nls_cv_header_intl= + nls_cv_header_libgt= + + dnl For backward compatibility. Some Makefiles may be using this. + DATADIRNAME=share + AC_SUBST(DATADIRNAME) + + dnl For backward compatibility. Some Makefiles may be using this. + INSTOBJEXT=.mo + AC_SUBST(INSTOBJEXT) + + dnl For backward compatibility. Some Makefiles may be using this. + GENCAT=gencat + AC_SUBST(GENCAT) + + dnl For backward compatibility. Some Makefiles may be using this. + INTLOBJS= + if test "$USE_INCLUDED_LIBINTL" = yes; then + INTLOBJS="\$(GETTOBJS)" + fi + AC_SUBST(INTLOBJS) + + dnl Enable libtool support if the surrounding package wishes it. + INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix + AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) + ]) + + dnl For backward compatibility. Some Makefiles may be using this. + INTLLIBS="$LIBINTL" + AC_SUBST(INTLLIBS) + + dnl Make all documented variables known to autoconf. + AC_SUBST(LIBINTL) + AC_SUBST(LTLIBINTL) + AC_SUBST(POSUB) +]) + + +dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized. +m4_define([gt_NEEDS_INIT], +[ + m4_divert_text([DEFAULTS], [gt_needs=]) + m4_define([gt_NEEDS_INIT], []) +]) + + +dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL]) +AC_DEFUN([AM_GNU_GETTEXT_NEED], +[ + m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"]) +]) + + +dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) +AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) + +# Configure paths for GLIB +# Owen Taylor 1997-2001 + +dnl AM_PATH_GLIB_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]]) +dnl Test for GLIB, and define GLIB_CFLAGS and GLIB_LIBS, if gmodule, gobject, +dnl gthread, or gio is specified in MODULES, pass to pkg-config +dnl +AC_DEFUN([AM_PATH_GLIB_2_0], +[dnl +dnl Get the cflags and libraries from pkg-config +dnl +AC_ARG_ENABLE(glibtest, [ --disable-glibtest do not try to compile and run a test GLIB program], + , enable_glibtest=yes) + + pkg_config_args=glib-2.0 + for module in . $4 + do + case "$module" in + gmodule) + pkg_config_args="$pkg_config_args gmodule-2.0" + ;; + gmodule-no-export) + pkg_config_args="$pkg_config_args gmodule-no-export-2.0" + ;; + gobject) + pkg_config_args="$pkg_config_args gobject-2.0" + ;; + gthread) + pkg_config_args="$pkg_config_args gthread-2.0" + ;; + gio*) + pkg_config_args="$pkg_config_args $module-2.0" + ;; + esac + done + + PKG_PROG_PKG_CONFIG([0.16]) + + no_glib="" + + if test "x$PKG_CONFIG" = x ; then + no_glib=yes + PKG_CONFIG=no + fi + + min_glib_version=ifelse([$1], ,2.0.0,$1) + AC_MSG_CHECKING(for GLIB - version >= $min_glib_version) + + if test x$PKG_CONFIG != xno ; then + ## don't try to run the test against uninstalled libtool libs + if $PKG_CONFIG --uninstalled $pkg_config_args; then + echo "Will use uninstalled version of GLib found in PKG_CONFIG_PATH" + enable_glibtest=no + fi + + if $PKG_CONFIG --atleast-version $min_glib_version $pkg_config_args; then + : + else + no_glib=yes + fi + fi + + if test x"$no_glib" = x ; then + GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0` + GOBJECT_QUERY=`$PKG_CONFIG --variable=gobject_query glib-2.0` + GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0` + + GLIB_CFLAGS=`$PKG_CONFIG --cflags $pkg_config_args` + GLIB_LIBS=`$PKG_CONFIG --libs $pkg_config_args` + glib_config_major_version=`$PKG_CONFIG --modversion glib-2.0 | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + glib_config_minor_version=`$PKG_CONFIG --modversion glib-2.0 | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + glib_config_micro_version=`$PKG_CONFIG --modversion glib-2.0 | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + if test "x$enable_glibtest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GLIB_CFLAGS" + LIBS="$GLIB_LIBS $LIBS" +dnl +dnl Now check if the installed GLIB is sufficiently new. (Also sanity +dnl checks the results of pkg-config to some extent) +dnl + rm -f conf.glibtest + AC_TRY_RUN([ +#include <glib.h> +#include <stdio.h> +#include <stdlib.h> + +int +main () +{ + int major, minor, micro; + char *tmp_version; + + fclose (fopen ("conf.glibtest", "w")); + + /* HP/UX 9 (%@#!) writes to sscanf strings */ + tmp_version = g_strdup("$min_glib_version"); + if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { + printf("%s, bad version string\n", "$min_glib_version"); + exit(1); + } + + if ((glib_major_version != $glib_config_major_version) || + (glib_minor_version != $glib_config_minor_version) || + (glib_micro_version != $glib_config_micro_version)) + { + printf("\n*** 'pkg-config --modversion glib-2.0' returned %d.%d.%d, but GLIB (%d.%d.%d)\n", + $glib_config_major_version, $glib_config_minor_version, $glib_config_micro_version, + glib_major_version, glib_minor_version, glib_micro_version); + printf ("*** was found! If pkg-config was correct, then it is best\n"); + printf ("*** to remove the old version of GLib. You may also be able to fix the error\n"); + printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); + printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); + printf("*** required on your system.\n"); + printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n"); + printf("*** to point to the correct configuration files\n"); + } + else if ((glib_major_version != GLIB_MAJOR_VERSION) || + (glib_minor_version != GLIB_MINOR_VERSION) || + (glib_micro_version != GLIB_MICRO_VERSION)) + { + printf("*** GLIB header files (version %d.%d.%d) do not match\n", + GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION); + printf("*** library (version %d.%d.%d)\n", + glib_major_version, glib_minor_version, glib_micro_version); + } + else + { + if ((glib_major_version > major) || + ((glib_major_version == major) && (glib_minor_version > minor)) || + ((glib_major_version == major) && (glib_minor_version == minor) && (glib_micro_version >= micro))) + { + return 0; + } + else + { + printf("\n*** An old version of GLIB (%d.%d.%d) was found.\n", + glib_major_version, glib_minor_version, glib_micro_version); + printf("*** You need a version of GLIB newer than %d.%d.%d. The latest version of\n", + major, minor, micro); + printf("*** GLIB is always available from ftp://ftp.gtk.org.\n"); + printf("***\n"); + printf("*** If you have already installed a sufficiently new version, this error\n"); + printf("*** probably means that the wrong copy of the pkg-config shell script is\n"); + printf("*** being found. The easiest way to fix this is to remove the old version\n"); + printf("*** of GLIB, but you can also set the PKG_CONFIG environment to point to the\n"); + printf("*** correct copy of pkg-config. (In this case, you will have to\n"); + printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); + printf("*** so that the correct libraries are found at run-time))\n"); + } + } + return 1; +} +],, no_glib=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + if test "x$no_glib" = x ; then + AC_MSG_RESULT(yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version)) + ifelse([$2], , :, [$2]) + else + AC_MSG_RESULT(no) + if test "$PKG_CONFIG" = "no" ; then + echo "*** A new enough version of pkg-config was not found." + echo "*** See http://www.freedesktop.org/software/pkgconfig/" + else + if test -f conf.glibtest ; then + : + else + echo "*** Could not run GLIB test program, checking why..." + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GLIB_CFLAGS" + LIBS="$LIBS $GLIB_LIBS" + AC_TRY_LINK([ +#include <glib.h> +#include <stdio.h> +], [ return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); ], + [ echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding GLIB or finding the wrong" + echo "*** version of GLIB. If it is not finding GLIB, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ], + [ echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occured. This usually means GLIB is incorrectly installed."]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + GLIB_CFLAGS="" + GLIB_LIBS="" + GLIB_GENMARSHAL="" + GOBJECT_QUERY="" + GLIB_MKENUMS="" + ifelse([$3], , :, [$3]) + fi + AC_SUBST(GLIB_CFLAGS) + AC_SUBST(GLIB_LIBS) + AC_SUBST(GLIB_GENMARSHAL) + AC_SUBST(GOBJECT_QUERY) + AC_SUBST(GLIB_MKENUMS) + rm -f conf.glibtest +]) + +# glibc2.m4 serial 1 +dnl Copyright (C) 2000-2002, 2004 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +# Test for the GNU C Library, version 2.0 or newer. +# From Bruno Haible. + +AC_DEFUN([gt_GLIBC2], + [ + AC_CACHE_CHECK(whether we are using the GNU C Library 2 or newer, + ac_cv_gnu_library_2, + [AC_EGREP_CPP([Lucky GNU user], + [ +#include <features.h> +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ >= 2) + Lucky GNU user + #endif +#endif + ], + ac_cv_gnu_library_2=yes, + ac_cv_gnu_library_2=no) + ] + ) + AC_SUBST(GLIBC2) + GLIBC2="$ac_cv_gnu_library_2" + ] +) + +# glibc21.m4 serial 3 +dnl Copyright (C) 2000-2002, 2004 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +# Test for the GNU C Library, version 2.1 or newer. +# From Bruno Haible. + +AC_DEFUN([gl_GLIBC21], + [ + AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, + ac_cv_gnu_library_2_1, + [AC_EGREP_CPP([Lucky GNU user], + [ +#include <features.h> +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif + ], + ac_cv_gnu_library_2_1=yes, + ac_cv_gnu_library_2_1=no) + ] + ) + AC_SUBST(GLIBC21) + GLIBC21="$ac_cv_gnu_library_2_1" + ] +) + +# Configure paths for GTK+ +# Owen Taylor 1997-2001 + +dnl AM_PATH_GTK_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]]) +dnl Test for GTK+, and define GTK_CFLAGS and GTK_LIBS, if gthread is specified in MODULES, +dnl pass to pkg-config +dnl +AC_DEFUN([AM_PATH_GTK_2_0], +[dnl +dnl Get the cflags and libraries from pkg-config +dnl +AC_ARG_ENABLE(gtktest, [ --disable-gtktest do not try to compile and run a test GTK+ program], + , enable_gtktest=yes) + + pkg_config_args=gtk+-2.0 + for module in . $4 + do + case "$module" in + gthread) + pkg_config_args="$pkg_config_args gthread-2.0" + ;; + esac + done + + no_gtk="" + + AC_PATH_PROG(PKG_CONFIG, pkg-config, no) + + if test x$PKG_CONFIG != xno ; then + if pkg-config --atleast-pkgconfig-version 0.7 ; then + : + else + echo "*** pkg-config too old; version 0.7 or better required." + no_gtk=yes + PKG_CONFIG=no + fi + else + no_gtk=yes + fi + + min_gtk_version=ifelse([$1], ,2.0.0,$1) + AC_MSG_CHECKING(for GTK+ - version >= $min_gtk_version) + + if test x$PKG_CONFIG != xno ; then + ## don't try to run the test against uninstalled libtool libs + if $PKG_CONFIG --uninstalled $pkg_config_args; then + echo "Will use uninstalled version of GTK+ found in PKG_CONFIG_PATH" + enable_gtktest=no + fi + + if $PKG_CONFIG --atleast-version $min_gtk_version $pkg_config_args; then + : + else + no_gtk=yes + fi + fi + + if test x"$no_gtk" = x ; then + GTK_CFLAGS=`$PKG_CONFIG $pkg_config_args --cflags` + GTK_LIBS=`$PKG_CONFIG $pkg_config_args --libs` + gtk_config_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + gtk_config_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + gtk_config_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + if test "x$enable_gtktest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$GTK_LIBS $LIBS" +dnl +dnl Now check if the installed GTK+ is sufficiently new. (Also sanity +dnl checks the results of pkg-config to some extent) +dnl + rm -f conf.gtktest + AC_TRY_RUN([ +#include <gtk/gtk.h> +#include <stdio.h> +#include <stdlib.h> + +int +main () +{ + int major, minor, micro; + char *tmp_version; + + fclose (fopen ("conf.gtktest", "w")); + + /* HP/UX 9 (%@#!) writes to sscanf strings */ + tmp_version = g_strdup("$min_gtk_version"); + if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { + printf("%s, bad version string\n", "$min_gtk_version"); + exit(1); + } + + if ((gtk_major_version != $gtk_config_major_version) || + (gtk_minor_version != $gtk_config_minor_version) || + (gtk_micro_version != $gtk_config_micro_version)) + { + printf("\n*** 'pkg-config --modversion gtk+-2.0' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", + $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version, + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf ("*** was found! If pkg-config was correct, then it is best\n"); + printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n"); + printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); + printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); + printf("*** required on your system.\n"); + printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n"); + printf("*** to point to the correct configuration files\n"); + } + else if ((gtk_major_version != GTK_MAJOR_VERSION) || + (gtk_minor_version != GTK_MINOR_VERSION) || + (gtk_micro_version != GTK_MICRO_VERSION)) + { + printf("*** GTK+ header files (version %d.%d.%d) do not match\n", + GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); + printf("*** library (version %d.%d.%d)\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + } + else + { + if ((gtk_major_version > major) || + ((gtk_major_version == major) && (gtk_minor_version > minor)) || + ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))) + { + return 0; + } + else + { + printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n", + major, minor, micro); + printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n"); + printf("***\n"); + printf("*** If you have already installed a sufficiently new version, this error\n"); + printf("*** probably means that the wrong copy of the pkg-config shell script is\n"); + printf("*** being found. The easiest way to fix this is to remove the old version\n"); + printf("*** of GTK+, but you can also set the PKG_CONFIG environment to point to the\n"); + printf("*** correct copy of pkg-config. (In this case, you will have to\n"); + printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); + printf("*** so that the correct libraries are found at run-time))\n"); + } + } + return 1; +} +],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + if test "x$no_gtk" = x ; then + AC_MSG_RESULT(yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version)) + ifelse([$2], , :, [$2]) + else + AC_MSG_RESULT(no) + if test "$PKG_CONFIG" = "no" ; then + echo "*** A new enough version of pkg-config was not found." + echo "*** See http://pkgconfig.sourceforge.net" + else + if test -f conf.gtktest ; then + : + else + echo "*** Could not run GTK+ test program, checking why..." + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$LIBS $GTK_LIBS" + AC_TRY_LINK([ +#include <gtk/gtk.h> +#include <stdio.h> +], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ], + [ echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding GTK+ or finding the wrong" + echo "*** version of GTK+. If it is not finding GTK+, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ], + [ echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occured. This usually means GTK+ is incorrectly installed."]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + GTK_CFLAGS="" + GTK_LIBS="" + ifelse([$3], , :, [$3]) + fi + AC_SUBST(GTK_CFLAGS) + AC_SUBST(GTK_LIBS) + rm -f conf.gtktest +]) + +# iconv.m4 serial AM6 (gettext-0.17) +dnl Copyright (C) 2000-2002, 2007 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], +[ + dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + + dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV + dnl accordingly. + AC_LIB_LINKFLAGS_BODY([iconv]) +]) + +AC_DEFUN([AM_ICONV_LINK], +[ + dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and + dnl those with the standalone portable GNU libiconv installed). + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + + dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV + dnl accordingly. + AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) + + dnl Add $INCICONV to CPPFLAGS before performing the following checks, + dnl because if the user has installed libiconv and not disabled its use + dnl via --without-libiconv-prefix, he wants to use it. The first + dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. + am_save_CPPFLAGS="$CPPFLAGS" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) + + AC_CACHE_CHECK([for iconv], am_cv_func_iconv, [ + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + AC_TRY_LINK([#include <stdlib.h> +#include <iconv.h>], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_func_iconv=yes) + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + AC_TRY_LINK([#include <stdlib.h> +#include <iconv.h>], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_lib_iconv=yes + am_cv_func_iconv=yes) + LIBS="$am_save_LIBS" + fi + ]) + if test "$am_cv_func_iconv" = yes; then + AC_CACHE_CHECK([for working iconv], am_cv_func_iconv_works, [ + dnl This tests against bugs in AIX 5.1 and HP-UX 11.11. + am_save_LIBS="$LIBS" + if test $am_cv_lib_iconv = yes; then + LIBS="$LIBS $LIBICONV" + fi + AC_TRY_RUN([ +#include <iconv.h> +#include <string.h> +int main () +{ + /* Test against AIX 5.1 bug: Failures are not distinguishable from successful + returns. */ + { + iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); + if (cd_utf8_to_88591 != (iconv_t)(-1)) + { + static const char input[] = "\342\202\254"; /* EURO SIGN */ + char buf[10]; + const char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_utf8_to_88591, + (char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + return 1; + } + } +#if 0 /* This bug could be worked around by the caller. */ + /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char buf[50]; + const char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_88591_to_utf8, + (char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + if ((int)res > 0) + return 1; + } + } +#endif + /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is + provided. */ + if (/* Try standardized names. */ + iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) + /* Try IRIX, OSF/1 names. */ + && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) + /* Try AIX names. */ + && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) + /* Try HP-UX names. */ + && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) + return 1; + return 0; +}], [am_cv_func_iconv_works=yes], [am_cv_func_iconv_works=no], + [case "$host_os" in + aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; + *) am_cv_func_iconv_works="guessing yes" ;; + esac]) + LIBS="$am_save_LIBS" + ]) + case "$am_cv_func_iconv_works" in + *no) am_func_iconv=no am_cv_lib_iconv=no ;; + *) am_func_iconv=yes ;; + esac + else + am_func_iconv=no am_cv_lib_iconv=no + fi + if test "$am_func_iconv" = yes; then + AC_DEFINE(HAVE_ICONV, 1, + [Define if you have the iconv() function and it works.]) + fi + if test "$am_cv_lib_iconv" = yes; then + AC_MSG_CHECKING([how to link with libiconv]) + AC_MSG_RESULT([$LIBICONV]) + else + dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV + dnl either. + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + AC_SUBST(LIBICONV) + AC_SUBST(LTLIBICONV) +]) + +AC_DEFUN([AM_ICONV], +[ + AM_ICONV_LINK + if test "$am_cv_func_iconv" = yes; then + AC_MSG_CHECKING([for iconv declaration]) + AC_CACHE_VAL(am_cv_proto_iconv, [ + AC_TRY_COMPILE([ +#include <stdlib.h> +#include <iconv.h> +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif +], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) + am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + AC_MSG_RESULT([$]{ac_t:- + }[$]am_cv_proto_iconv) + AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, + [Define as const if the declaration of iconv() needs const.]) + fi +]) + +# intdiv0.m4 serial 2 (gettext-0.17) +dnl Copyright (C) 2002, 2007 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_DEFUN([gt_INTDIV0], +[ + AC_REQUIRE([AC_PROG_CC])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl + + AC_CACHE_CHECK([whether integer division by zero raises SIGFPE], + gt_cv_int_divbyzero_sigfpe, + [ + gt_cv_int_divbyzero_sigfpe= +changequote(,)dnl + case "$host_os" in + macos* | darwin[6-9]* | darwin[1-9][0-9]*) + # On MacOS X 10.2 or newer, just assume the same as when cross- + # compiling. If we were to perform the real test, 1 Crash Report + # dialog window would pop up. + case "$host_cpu" in + i[34567]86 | x86_64) + gt_cv_int_divbyzero_sigfpe="guessing yes" ;; + esac + ;; + esac +changequote([,])dnl + if test -z "$gt_cv_int_divbyzero_sigfpe"; then + AC_TRY_RUN([ +#include <stdlib.h> +#include <signal.h> + +static void +sigfpe_handler (int sig) +{ + /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ + exit (sig != SIGFPE); +} + +int x = 1; +int y = 0; +int z; +int nan; + +int main () +{ + signal (SIGFPE, sigfpe_handler); +/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ +#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) + signal (SIGTRAP, sigfpe_handler); +#endif +/* Linux/SPARC yields signal SIGILL. */ +#if defined (__sparc__) && defined (__linux__) + signal (SIGILL, sigfpe_handler); +#endif + + z = x / y; + nan = y / y; + exit (1); +} +], gt_cv_int_divbyzero_sigfpe=yes, gt_cv_int_divbyzero_sigfpe=no, + [ + # Guess based on the CPU. +changequote(,)dnl + case "$host_cpu" in + alpha* | i[34567]86 | x86_64 | m68k | s390*) + gt_cv_int_divbyzero_sigfpe="guessing yes";; + *) + gt_cv_int_divbyzero_sigfpe="guessing no";; + esac +changequote([,])dnl + ]) + fi + ]) + case "$gt_cv_int_divbyzero_sigfpe" in + *yes) value=1;; + *) value=0;; + esac + AC_DEFINE_UNQUOTED(INTDIV0_RAISES_SIGFPE, $value, + [Define if integer division by zero raises signal SIGFPE.]) +]) + +# intl.m4 serial 8 (gettext-0.17) +dnl Copyright (C) 1995-2007 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000. +dnl Bruno Haible <haible@clisp.cons.org>, 2000-2006. + +AC_PREREQ(2.52) + +dnl Checks for all prerequisites of the intl subdirectory, +dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, +dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. +AC_DEFUN([AM_INTL_SUBDIR], +[ + AC_REQUIRE([AC_PROG_INSTALL])dnl + AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake + AC_REQUIRE([AC_PROG_CC])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl + AC_REQUIRE([gt_GLIBC2])dnl + AC_REQUIRE([AC_PROG_RANLIB])dnl + AC_REQUIRE([gl_VISIBILITY])dnl + AC_REQUIRE([gt_INTL_SUBDIR_CORE])dnl + AC_REQUIRE([AC_TYPE_LONG_LONG_INT])dnl + AC_REQUIRE([gt_TYPE_WCHAR_T])dnl + AC_REQUIRE([gt_TYPE_WINT_T])dnl + AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) + AC_REQUIRE([gt_TYPE_INTMAX_T]) + AC_REQUIRE([gt_PRINTF_POSIX]) + AC_REQUIRE([gl_GLIBC21])dnl + AC_REQUIRE([gl_XSIZE])dnl + AC_REQUIRE([gt_INTL_MACOSX])dnl + + AC_CHECK_TYPE([ptrdiff_t], , + [AC_DEFINE([ptrdiff_t], [long], + [Define as the type of the result of subtracting two pointers, if the system doesn't define it.]) + ]) + AC_CHECK_HEADERS([stddef.h stdlib.h string.h]) + AC_CHECK_FUNCS([asprintf fwprintf putenv setenv setlocale snprintf wcslen]) + + dnl Use the _snprintf function only if it is declared (because on NetBSD it + dnl is defined as a weak alias of snprintf; we prefer to use the latter). + gt_CHECK_DECL(_snprintf, [#include <stdio.h>]) + gt_CHECK_DECL(_snwprintf, [#include <stdio.h>]) + + dnl Use the *_unlocked functions only if they are declared. + dnl (because some of them were defined without being declared in Solaris + dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built + dnl on Solaris 2.5.1 to run on Solaris 2.6). + dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13. + gt_CHECK_DECL(getc_unlocked, [#include <stdio.h>]) + + case $gt_cv_func_printf_posix in + *yes) HAVE_POSIX_PRINTF=1 ;; + *) HAVE_POSIX_PRINTF=0 ;; + esac + AC_SUBST([HAVE_POSIX_PRINTF]) + if test "$ac_cv_func_asprintf" = yes; then + HAVE_ASPRINTF=1 + else + HAVE_ASPRINTF=0 + fi + AC_SUBST([HAVE_ASPRINTF]) + if test "$ac_cv_func_snprintf" = yes; then + HAVE_SNPRINTF=1 + else + HAVE_SNPRINTF=0 + fi + AC_SUBST([HAVE_SNPRINTF]) + if test "$ac_cv_func_wprintf" = yes; then + HAVE_WPRINTF=1 + else + HAVE_WPRINTF=0 + fi + AC_SUBST([HAVE_WPRINTF]) + + AM_LANGINFO_CODESET + gt_LC_MESSAGES + + dnl Compilation on mingw and Cygwin needs special Makefile rules, because + dnl 1. when we install a shared library, we must arrange to export + dnl auxiliary pointer variables for every exported variable, + dnl 2. when we install a shared library and a static library simultaneously, + dnl the include file specifies __declspec(dllimport) and therefore we + dnl must arrange to define the auxiliary pointer variables for the + dnl exported variables _also_ in the static library. + if test "$enable_shared" = yes; then + case "$host_os" in + mingw* | cygwin*) is_woe32dll=yes ;; + *) is_woe32dll=no ;; + esac + else + is_woe32dll=no + fi + WOE32DLL=$is_woe32dll + AC_SUBST([WOE32DLL]) + + dnl On mingw and Cygwin, we can activate special Makefile rules which add + dnl version information to the shared libraries and executables. + case "$host_os" in + mingw* | cygwin*) is_woe32=yes ;; + *) is_woe32=no ;; + esac + WOE32=$is_woe32 + AC_SUBST([WOE32]) + if test $WOE32 = yes; then + dnl Check for a program that compiles Windows resource files. + AC_CHECK_TOOL([WINDRES], [windres]) + fi + + dnl Determine whether when creating a library, "-lc" should be passed to + dnl libtool or not. On many platforms, it is required for the libtool option + dnl -no-undefined to work. On HP-UX, however, the -lc - stored by libtool + dnl in the *.la files - makes it impossible to create multithreaded programs, + dnl because libtool also reorders the -lc to come before the -pthread, and + dnl this disables pthread_create() <http://docs.hp.com/en/1896/pthreads.html>. + case "$host_os" in + hpux*) LTLIBC="" ;; + *) LTLIBC="-lc" ;; + esac + AC_SUBST([LTLIBC]) + + dnl Rename some macros and functions used for locking. + AH_BOTTOM([ +#define __libc_lock_t gl_lock_t +#define __libc_lock_define gl_lock_define +#define __libc_lock_define_initialized gl_lock_define_initialized +#define __libc_lock_init gl_lock_init +#define __libc_lock_lock gl_lock_lock +#define __libc_lock_unlock gl_lock_unlock +#define __libc_lock_recursive_t gl_recursive_lock_t +#define __libc_lock_define_recursive gl_recursive_lock_define +#define __libc_lock_define_initialized_recursive gl_recursive_lock_define_initialized +#define __libc_lock_init_recursive gl_recursive_lock_init +#define __libc_lock_lock_recursive gl_recursive_lock_lock +#define __libc_lock_unlock_recursive gl_recursive_lock_unlock +#define glthread_in_use libintl_thread_in_use +#define glthread_lock_init libintl_lock_init +#define glthread_lock_lock libintl_lock_lock +#define glthread_lock_unlock libintl_lock_unlock +#define glthread_lock_destroy libintl_lock_destroy +#define glthread_rwlock_init libintl_rwlock_init +#define glthread_rwlock_rdlock libintl_rwlock_rdlock +#define glthread_rwlock_wrlock libintl_rwlock_wrlock +#define glthread_rwlock_unlock libintl_rwlock_unlock +#define glthread_rwlock_destroy libintl_rwlock_destroy +#define glthread_recursive_lock_init libintl_recursive_lock_init +#define glthread_recursive_lock_lock libintl_recursive_lock_lock +#define glthread_recursive_lock_unlock libintl_recursive_lock_unlock +#define glthread_recursive_lock_destroy libintl_recursive_lock_destroy +#define glthread_once libintl_once +#define glthread_once_call libintl_once_call +#define glthread_once_singlethreaded libintl_once_singlethreaded +]) +]) + + +dnl Checks for the core files of the intl subdirectory: +dnl dcigettext.c +dnl eval-plural.h +dnl explodename.c +dnl finddomain.c +dnl gettextP.h +dnl gmo.h +dnl hash-string.h hash-string.c +dnl l10nflist.c +dnl libgnuintl.h.in (except the *printf stuff) +dnl loadinfo.h +dnl loadmsgcat.c +dnl localealias.c +dnl log.c +dnl plural-exp.h plural-exp.c +dnl plural.y +dnl Used by libglocale. +AC_DEFUN([gt_INTL_SUBDIR_CORE], +[ + AC_REQUIRE([AC_C_INLINE])dnl + AC_REQUIRE([AC_TYPE_SIZE_T])dnl + AC_REQUIRE([gl_AC_HEADER_STDINT_H]) + AC_REQUIRE([AC_FUNC_ALLOCA])dnl + AC_REQUIRE([AC_FUNC_MMAP])dnl + AC_REQUIRE([gt_INTDIV0])dnl + AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl + AC_REQUIRE([gt_INTTYPES_PRI])dnl + AC_REQUIRE([gl_LOCK])dnl + + AC_TRY_LINK( + [int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; }], + [], + [AC_DEFINE([HAVE_BUILTIN_EXPECT], 1, + [Define to 1 if the compiler understands __builtin_expect.])]) + + AC_CHECK_HEADERS([argz.h inttypes.h limits.h unistd.h sys/param.h]) + AC_CHECK_FUNCS([getcwd getegid geteuid getgid getuid mempcpy munmap \ + stpcpy strcasecmp strdup strtoul tsearch argz_count argz_stringify \ + argz_next __fsetlocking]) + + dnl Use the *_unlocked functions only if they are declared. + dnl (because some of them were defined without being declared in Solaris + dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built + dnl on Solaris 2.5.1 to run on Solaris 2.6). + dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13. + gt_CHECK_DECL(feof_unlocked, [#include <stdio.h>]) + gt_CHECK_DECL(fgets_unlocked, [#include <stdio.h>]) + + AM_ICONV + + dnl glibc >= 2.4 has a NL_LOCALE_NAME macro when _GNU_SOURCE is defined, + dnl and a _NL_LOCALE_NAME macro always. + AC_CACHE_CHECK([for NL_LOCALE_NAME macro], gt_cv_nl_locale_name, + [AC_TRY_LINK([#include <langinfo.h> +#include <locale.h>], + [char* cs = nl_langinfo(_NL_LOCALE_NAME(LC_MESSAGES)); + return !cs; + ], + gt_cv_nl_locale_name=yes, + gt_cv_nl_locale_name=no) + ]) + if test $gt_cv_nl_locale_name = yes; then + AC_DEFINE(HAVE_NL_LOCALE_NAME, 1, + [Define if you have <langinfo.h> and it defines the NL_LOCALE_NAME macro if _GNU_SOURCE is defined.]) + fi + + dnl intl/plural.c is generated from intl/plural.y. It requires bison, + dnl because plural.y uses bison specific features. It requires at least + dnl bison-1.26 because earlier versions generate a plural.c that doesn't + dnl compile. + dnl bison is only needed for the maintainer (who touches plural.y). But in + dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put + dnl the rule in general Makefile. Now, some people carelessly touch the + dnl files or have a broken "make" program, hence the plural.c rule will + dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not + dnl present or too old. + AC_CHECK_PROGS([INTLBISON], [bison]) + if test -z "$INTLBISON"; then + ac_verc_fail=yes + else + dnl Found it, now check the version. + AC_MSG_CHECKING([version of bison]) +changequote(<<,>>)dnl + ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) +changequote([,])dnl + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + esac + AC_MSG_RESULT([$ac_prog_version]) + fi + if test $ac_verc_fail = yes; then + INTLBISON=: + fi +]) + + +dnl gt_CHECK_DECL(FUNC, INCLUDES) +dnl Check whether a function is declared. +AC_DEFUN([gt_CHECK_DECL], +[ + AC_CACHE_CHECK([whether $1 is declared], ac_cv_have_decl_$1, + [AC_TRY_COMPILE([$2], [ +#ifndef $1 + char *p = (char *) $1; +#endif +], ac_cv_have_decl_$1=yes, ac_cv_have_decl_$1=no)]) + if test $ac_cv_have_decl_$1 = yes; then + gt_value=1 + else + gt_value=0 + fi + AC_DEFINE_UNQUOTED([HAVE_DECL_]translit($1, [a-z], [A-Z]), [$gt_value], + [Define to 1 if you have the declaration of `$1', and to 0 if you don't.]) +]) + +# intlmacosx.m4 serial 1 (gettext-0.17) +dnl Copyright (C) 2004-2007 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Checks for special options needed on MacOS X. +dnl Defines INTL_MACOSX_LIBS. +AC_DEFUN([gt_INTL_MACOSX], +[ + dnl Check for API introduced in MacOS X 10.2. + AC_CACHE_CHECK([for CFPreferencesCopyAppValue], + gt_cv_func_CFPreferencesCopyAppValue, + [gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + AC_TRY_LINK([#include <CoreFoundation/CFPreferences.h>], + [CFPreferencesCopyAppValue(NULL, NULL)], + [gt_cv_func_CFPreferencesCopyAppValue=yes], + [gt_cv_func_CFPreferencesCopyAppValue=no]) + LIBS="$gt_save_LIBS"]) + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], 1, + [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) + fi + dnl Check for API introduced in MacOS X 10.3. + AC_CACHE_CHECK([for CFLocaleCopyCurrent], gt_cv_func_CFLocaleCopyCurrent, + [gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + AC_TRY_LINK([#include <CoreFoundation/CFLocale.h>], [CFLocaleCopyCurrent();], + [gt_cv_func_CFLocaleCopyCurrent=yes], + [gt_cv_func_CFLocaleCopyCurrent=no]) + LIBS="$gt_save_LIBS"]) + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], 1, + [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) + fi + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + AC_SUBST([INTL_MACOSX_LIBS]) +]) + +# intmax.m4 serial 3 (gettext-0.16) +dnl Copyright (C) 2002-2005 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. +dnl Test whether the system has the 'intmax_t' type, but don't attempt to +dnl find a replacement if it is lacking. + +AC_DEFUN([gt_TYPE_INTMAX_T], +[ + AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) + AC_REQUIRE([gl_AC_HEADER_STDINT_H]) + AC_CACHE_CHECK(for intmax_t, gt_cv_c_intmax_t, + [AC_TRY_COMPILE([ +#include <stddef.h> +#include <stdlib.h> +#if HAVE_STDINT_H_WITH_UINTMAX +#include <stdint.h> +#endif +#if HAVE_INTTYPES_H_WITH_UINTMAX +#include <inttypes.h> +#endif +], [intmax_t x = -1; + return !x;], + gt_cv_c_intmax_t=yes, + gt_cv_c_intmax_t=no)]) + if test $gt_cv_c_intmax_t = yes; then + AC_DEFINE(HAVE_INTMAX_T, 1, + [Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.]) + fi +]) + +# inttypes-pri.m4 serial 4 (gettext-0.16) +dnl Copyright (C) 1997-2002, 2006 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_PREREQ(2.52) + +# Define PRI_MACROS_BROKEN if <inttypes.h> exists and defines the PRI* +# macros to non-string values. This is the case on AIX 4.3.3. + +AC_DEFUN([gt_INTTYPES_PRI], +[ + AC_CHECK_HEADERS([inttypes.h]) + if test $ac_cv_header_inttypes_h = yes; then + AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken], + gt_cv_inttypes_pri_broken, + [ + AC_TRY_COMPILE([#include <inttypes.h> +#ifdef PRId32 +char *p = PRId32; +#endif +], [], gt_cv_inttypes_pri_broken=no, gt_cv_inttypes_pri_broken=yes) + ]) + fi + if test "$gt_cv_inttypes_pri_broken" = yes; then + AC_DEFINE_UNQUOTED(PRI_MACROS_BROKEN, 1, + [Define if <inttypes.h> exists and defines unusable PRI* macros.]) + PRI_MACROS_BROKEN=1 + else + PRI_MACROS_BROKEN=0 + fi + AC_SUBST([PRI_MACROS_BROKEN]) +]) + +# inttypes_h.m4 serial 7 +dnl Copyright (C) 1997-2004, 2006 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Paul Eggert. + +# Define HAVE_INTTYPES_H_WITH_UINTMAX if <inttypes.h> exists, +# doesn't clash with <sys/types.h>, and declares uintmax_t. + +AC_DEFUN([gl_AC_HEADER_INTTYPES_H], +[ + AC_CACHE_CHECK([for inttypes.h], gl_cv_header_inttypes_h, + [AC_TRY_COMPILE( + [#include <sys/types.h> +#include <inttypes.h>], + [uintmax_t i = (uintmax_t) -1; return !i;], + gl_cv_header_inttypes_h=yes, + gl_cv_header_inttypes_h=no)]) + if test $gl_cv_header_inttypes_h = yes; then + AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H_WITH_UINTMAX, 1, + [Define if <inttypes.h> exists, doesn't clash with <sys/types.h>, + and declares uintmax_t. ]) + fi +]) + +# lcmessage.m4 serial 4 (gettext-0.14.2) +dnl Copyright (C) 1995-2002, 2004-2005 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper <drepper@cygnus.com>, 1995. + +# Check whether LC_MESSAGES is available in <locale.h>. + +AC_DEFUN([gt_LC_MESSAGES], +[ + AC_CACHE_CHECK([for LC_MESSAGES], gt_cv_val_LC_MESSAGES, + [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES], + gt_cv_val_LC_MESSAGES=yes, gt_cv_val_LC_MESSAGES=no)]) + if test $gt_cv_val_LC_MESSAGES = yes; then + AC_DEFINE(HAVE_LC_MESSAGES, 1, + [Define if your <locale.h> file defines LC_MESSAGES.]) + fi +]) + +# lib-ld.m4 serial 3 (gettext-0.13) +dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl Subroutines of libtool.m4, +dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision +dnl with libtool.m4. + +dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. +AC_DEFUN([AC_LIB_PROG_LD_GNU], +[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, +[# I'd rather use --version here, but apparently some GNU ld's only accept -v. +case `$LD -v 2>&1 </dev/null` in +*GNU* | *'with BFD'*) + acl_cv_prog_gnu_ld=yes ;; +*) + acl_cv_prog_gnu_ld=no ;; +esac]) +with_gnu_ld=$acl_cv_prog_gnu_ld +]) + +dnl From libtool-1.4. Sets the variable LD. +AC_DEFUN([AC_LIB_PROG_LD], +[AC_ARG_WITH(gnu-ld, +[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], +test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by GCC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]* | [A-Za-z]:[\\/]*)] + [re_direlt='/[^/][^/]*/\.\./'] + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(acl_cv_path_LD, +[if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in + *GNU* | *'with BFD'*) + test "$with_gnu_ld" != no && break ;; + *) + test "$with_gnu_ld" != yes && break ;; + esac + fi + done + IFS="$ac_save_ifs" +else + acl_cv_path_LD="$LD" # Let the user override the test with a path. +fi]) +LD="$acl_cv_path_LD" +if test -n "$LD"; then + AC_MSG_RESULT($LD) +else + AC_MSG_RESULT(no) +fi +test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) +AC_LIB_PROG_LD_GNU +]) + +# lib-link.m4 serial 13 (gettext-0.17) +dnl Copyright (C) 2001-2007 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_PREREQ(2.54) + +dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and +dnl the libraries corresponding to explicit and implicit dependencies. +dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and +dnl augments the CPPFLAGS variable. +dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname +dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. +AC_DEFUN([AC_LIB_LINKFLAGS], +[ + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + define([Name],[translit([$1],[./-], [___])]) + define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ + AC_LIB_LINKFLAGS_BODY([$1], [$2]) + ac_cv_lib[]Name[]_libs="$LIB[]NAME" + ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" + ac_cv_lib[]Name[]_cppflags="$INC[]NAME" + ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX" + ]) + LIB[]NAME="$ac_cv_lib[]Name[]_libs" + LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" + INC[]NAME="$ac_cv_lib[]Name[]_cppflags" + LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) + AC_SUBST([LIB]NAME) + AC_SUBST([LTLIB]NAME) + AC_SUBST([LIB]NAME[_PREFIX]) + dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the + dnl results of this search when this library appears as a dependency. + HAVE_LIB[]NAME=yes + undefine([Name]) + undefine([NAME]) +]) + +dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) +dnl searches for libname and the libraries corresponding to explicit and +dnl implicit dependencies, together with the specified include files and +dnl the ability to compile and link the specified testcode. If found, it +dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and +dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and +dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs +dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. +dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname +dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. +AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], +[ + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + define([Name],[translit([$1],[./-], [___])]) + define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + + dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME + dnl accordingly. + AC_LIB_LINKFLAGS_BODY([$1], [$2]) + + dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, + dnl because if the user has installed lib[]Name and not disabled its use + dnl via --without-lib[]Name-prefix, he wants to use it. + ac_save_CPPFLAGS="$CPPFLAGS" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) + + AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ + ac_save_LIBS="$LIBS" + LIBS="$LIBS $LIB[]NAME" + AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) + LIBS="$ac_save_LIBS" + ]) + if test "$ac_cv_lib[]Name" = yes; then + HAVE_LIB[]NAME=yes + AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) + AC_MSG_CHECKING([how to link with lib[]$1]) + AC_MSG_RESULT([$LIB[]NAME]) + else + HAVE_LIB[]NAME=no + dnl If $LIB[]NAME didn't lead to a usable library, we don't need + dnl $INC[]NAME either. + CPPFLAGS="$ac_save_CPPFLAGS" + LIB[]NAME= + LTLIB[]NAME= + LIB[]NAME[]_PREFIX= + fi + AC_SUBST([HAVE_LIB]NAME) + AC_SUBST([LIB]NAME) + AC_SUBST([LTLIB]NAME) + AC_SUBST([LIB]NAME[_PREFIX]) + undefine([Name]) + undefine([NAME]) +]) + +dnl Determine the platform dependent parameters needed to use rpath: +dnl acl_libext, +dnl acl_shlibext, +dnl acl_hardcode_libdir_flag_spec, +dnl acl_hardcode_libdir_separator, +dnl acl_hardcode_direct, +dnl acl_hardcode_minus_L. +AC_DEFUN([AC_LIB_RPATH], +[ + dnl Tell automake >= 1.10 to complain if config.rpath is missing. + m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) + AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS + AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld + AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host + AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir + AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + ]) + wl="$acl_cv_wl" + acl_libext="$acl_cv_libext" + acl_shlibext="$acl_cv_shlibext" + acl_libname_spec="$acl_cv_libname_spec" + acl_library_names_spec="$acl_cv_library_names_spec" + acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + acl_hardcode_direct="$acl_cv_hardcode_direct" + acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" + dnl Determine whether the user wants rpath handling at all. + AC_ARG_ENABLE(rpath, + [ --disable-rpath do not hardcode runtime library paths], + :, enable_rpath=yes) +]) + +dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and +dnl the libraries corresponding to explicit and implicit dependencies. +dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. +dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found +dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem. +AC_DEFUN([AC_LIB_LINKFLAGS_BODY], +[ + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + dnl Autoconf >= 2.61 supports dots in --with options. + define([N_A_M_E],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit([$1],[.],[_])],[$1])]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_LIB_ARG_WITH([lib]N_A_M_E[-prefix], +[ --with-lib]N_A_M_E[-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib + --without-lib]N_A_M_E[-prefix don't search for lib$1 in includedir and libdir], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + fi + fi +]) + dnl Search the library and its dependencies in $additional_libdir and + dnl $LDFLAGS. Using breadth-first-seach. + LIB[]NAME= + LTLIB[]NAME= + INC[]NAME= + LIB[]NAME[]_PREFIX= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='$1 $2' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + dnl See if it was already located by an earlier AC_LIB_LINKFLAGS + dnl or AC_LIB_HAVE_LINKFLAGS call. + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" + else + dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined + dnl that this library doesn't exist. So just drop it. + : + fi + else + dnl Search the library lib$name in $additional_libdir and $LDFLAGS + dnl and the already constructed $LIBNAME/$LTLIBNAME. + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + dnl The same code as in the loop below: + dnl First look for a shared library. + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + dnl Then look for a static library. + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + dnl First look for a shared library. + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + dnl Then look for a static library. + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + dnl Found the library. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + dnl Linking with a shared library. We attempt to hardcode its + dnl directory into the executable's runpath, unless it's the + dnl standard /usr/lib. + if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then + dnl No hardcoding is needed. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + dnl The hardcoding into $LIBNAME is system dependent. + if test "$acl_hardcode_direct" = yes; then + dnl Using DIR/libNAME.so during linking hardcodes DIR into the + dnl resulting binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + dnl Rely on "-L$found_dir". + dnl But don't add it if it's already contained in the LDFLAGS + dnl or the already constructed $LIBNAME + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH + dnl here, because this doesn't fit in flags passed to the + dnl compiler. So give up. No hardcoding. This affects only + dnl very old systems. + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + dnl Linking with a static library. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" + else + dnl We shouldn't come here, but anyway it's good to have a + dnl fallback. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" + fi + fi + dnl Assume the include files are nearby. + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + LIB[]NAME[]_PREFIX="$basedir" + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + dnl Potentially add $additional_includedir to $INCNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's /usr/local/include and we are using GCC on Linux, + dnl 3. if it's already present in $CPPFLAGS or the already + dnl constructed $INCNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INC[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $INCNAME. + INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + dnl Look for dependencies. + if test -n "$found_la"; then + dnl Read the .la file. It defines the variables + dnl dlname, library_names, old_library, dependency_libs, current, + dnl age, revision, installed, dlopen, dlpreopen, libdir. + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + dnl We use only dependency_libs. + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's /usr/local/lib and we are using GCC on Linux, + dnl 3. if it's already present in $LDFLAGS or the already + dnl constructed $LIBNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LIBNAME. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LTLIBNAME. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + dnl Handle this in the next round. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + dnl Handle this in the next round. Throw away the .la's + dnl directory; it is already contained in a preceding -L + dnl option. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + dnl Most likely an immediate library name. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" + ;; + esac + done + fi + else + dnl Didn't find the library; assume it is in the system directories + dnl known to the linker and runtime loader. (All the system + dnl directories known to the linker should also be known to the + dnl runtime loader, otherwise the system is severely misconfigured.) + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + dnl Weird platform: only the last -rpath option counts, the user must + dnl pass all path elements in one option. We can arrange that for a + dnl single library, but not when more than one $LIBNAMEs are used. + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl. + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + else + dnl The -rpath options are cumulative. + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + dnl When using libtool, the option that works for both libraries and + dnl executables is -R. The -R options are cumulative. + for found_dir in $ltrpathdirs; do + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" + done + fi +]) + +dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, +dnl unless already present in VAR. +dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes +dnl contains two or three consecutive elements that belong together. +AC_DEFUN([AC_LIB_APPENDTOVAR], +[ + for element in [$2]; do + haveit= + for x in $[$1]; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + [$1]="${[$1]}${[$1]:+ }$element" + fi + done +]) + +dnl For those cases where a variable contains several -L and -l options +dnl referring to unknown libraries and directories, this macro determines the +dnl necessary additional linker options for the runtime path. +dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL]) +dnl sets LDADDVAR to linker options needed together with LIBSVALUE. +dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed, +dnl otherwise linking without libtool is assumed. +AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], +[ + AC_REQUIRE([AC_LIB_RPATH]) + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + $1= + if test "$enable_rpath" != no; then + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + dnl Use an explicit option to hardcode directories into the resulting + dnl binary. + rpathdirs= + next= + for opt in $2; do + if test -n "$next"; then + dir="$next" + dnl No need to hardcode the standard /usr/lib. + if test "X$dir" != "X/usr/$acl_libdirstem"; then + rpathdirs="$rpathdirs $dir" + fi + next= + else + case $opt in + -L) next=yes ;; + -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` + dnl No need to hardcode the standard /usr/lib. + if test "X$dir" != "X/usr/$acl_libdirstem"; then + rpathdirs="$rpathdirs $dir" + fi + next= ;; + *) next= ;; + esac + fi + done + if test "X$rpathdirs" != "X"; then + if test -n ""$3""; then + dnl libtool is used for linking. Use -R options. + for dir in $rpathdirs; do + $1="${$1}${$1:+ }-R$dir" + done + else + dnl The linker is used for linking directly. + if test -n "$acl_hardcode_libdir_separator"; then + dnl Weird platform: only the last -rpath option counts, the user + dnl must pass all path elements in one option. + alldirs= + for dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + $1="$flag" + else + dnl The -rpath options are cumulative. + for dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + $1="${$1}${$1:+ }$flag" + done + fi + fi + fi + fi + fi + AC_SUBST([$1]) +]) + +# lib-prefix.m4 serial 5 (gettext-0.15) +dnl Copyright (C) 2001-2005 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and +dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't +dnl require excessive bracketing. +ifdef([AC_HELP_STRING], +[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], +[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) + +dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed +dnl to access previously installed libraries. The basic assumption is that +dnl a user will want packages to use other packages he previously installed +dnl with the same --prefix option. +dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate +dnl libraries, but is otherwise very convenient. +AC_DEFUN([AC_LIB_PREFIX], +[ + AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_LIB_ARG_WITH([lib-prefix], +[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib + --without-lib-prefix don't search for libraries in includedir and libdir], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + fi + fi +]) + if test $use_additional = yes; then + dnl Potentially add $additional_includedir to $CPPFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's already present in $CPPFLAGS, + dnl 3. if it's /usr/local/include and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + for x in $CPPFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $CPPFLAGS. + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" + fi + fi + fi + fi + dnl Potentially add $additional_libdir to $LDFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's already present in $LDFLAGS, + dnl 3. if it's /usr/local/lib and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then + haveit= + for x in $LDFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LDFLAGS. + LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" + fi + fi + fi + fi + fi +]) + +dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, +dnl acl_final_exec_prefix, containing the values to which $prefix and +dnl $exec_prefix will expand at the end of the configure script. +AC_DEFUN([AC_LIB_PREPARE_PREFIX], +[ + dnl Unfortunately, prefix and exec_prefix get only finally determined + dnl at the end of configure. + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" +]) + +dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the +dnl variables prefix and exec_prefix bound to the values they will have +dnl at the end of the configure script. +AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], +[ + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + $1 + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" +]) + +dnl AC_LIB_PREPARE_MULTILIB creates a variable acl_libdirstem, containing +dnl the basename of the libdir, either "lib" or "lib64". +AC_DEFUN([AC_LIB_PREPARE_MULTILIB], +[ + dnl There is no formal standard regarding lib and lib64. The current + dnl practice is that on a system supporting 32-bit and 64-bit instruction + dnl sets or ABIs, 64-bit libraries go under $prefix/lib64 and 32-bit + dnl libraries go under $prefix/lib. We determine the compiler's default + dnl mode by looking at the compiler's library search path. If at least + dnl of its elements ends in /lib64 or points to a directory whose absolute + dnl pathname ends in /lib64, we assume a 64-bit ABI. Otherwise we use the + dnl default, namely "lib". + acl_libdirstem=lib + searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` + if test -n "$searchpath"; then + acl_save_IFS="${IFS= }"; IFS=":" + for searchdir in $searchpath; do + if test -d "$searchdir"; then + case "$searchdir" in + */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; + *) searchdir=`cd "$searchdir" && pwd` + case "$searchdir" in + */lib64 ) acl_libdirstem=lib64 ;; + esac ;; + esac + fi + done + IFS="$acl_save_IFS" + fi +]) + +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008 Free Software Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +m4_define([_LT_COPYING], [dnl +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008 Free Software Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +]) + +# serial 56 LT_INIT + + +# LT_PREREQ(VERSION) +# ------------------ +# Complain and exit if this libtool version is less that VERSION. +m4_defun([LT_PREREQ], +[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, + [m4_default([$3], + [m4_fatal([Libtool version $1 or higher is required], + 63)])], + [$2])]) + + +# _LT_CHECK_BUILDDIR +# ------------------ +# Complain if the absolute build directory name contains unusual characters +m4_defun([_LT_CHECK_BUILDDIR], +[case `pwd` in + *\ * | *\ *) + AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; +esac +]) + + +# LT_INIT([OPTIONS]) +# ------------------ +AC_DEFUN([LT_INIT], +[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT +AC_BEFORE([$0], [LT_LANG])dnl +AC_BEFORE([$0], [LT_OUTPUT])dnl +AC_BEFORE([$0], [LTDL_INIT])dnl +m4_require([_LT_CHECK_BUILDDIR])dnl + +dnl Autoconf doesn't catch unexpanded LT_ macros by default: +m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl +m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl +dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 +dnl unless we require an AC_DEFUNed macro: +AC_REQUIRE([LTOPTIONS_VERSION])dnl +AC_REQUIRE([LTSUGAR_VERSION])dnl +AC_REQUIRE([LTVERSION_VERSION])dnl +AC_REQUIRE([LTOBSOLETE_VERSION])dnl +m4_require([_LT_PROG_LTMAIN])dnl + +dnl Parse OPTIONS +_LT_SET_OPTIONS([$0], [$1]) + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ltmain" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +_LT_SETUP + +# Only expand once: +m4_define([LT_INIT]) +])# LT_INIT + +# Old names: +AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) +AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PROG_LIBTOOL], []) +dnl AC_DEFUN([AM_PROG_LIBTOOL], []) + + +# _LT_CC_BASENAME(CC) +# ------------------- +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +m4_defun([_LT_CC_BASENAME], +[for cc_temp in $1""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +]) + + +# _LT_FILEUTILS_DEFAULTS +# ---------------------- +# It is okay to use these file commands and assume they have been set +# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. +m4_defun([_LT_FILEUTILS_DEFAULTS], +[: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} +])# _LT_FILEUTILS_DEFAULTS + + +# _LT_SETUP +# --------- +m4_defun([_LT_SETUP], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +_LT_DECL([], [host_alias], [0], [The host system])dnl +_LT_DECL([], [host], [0])dnl +_LT_DECL([], [host_os], [0])dnl +dnl +_LT_DECL([], [build_alias], [0], [The build system])dnl +_LT_DECL([], [build], [0])dnl +_LT_DECL([], [build_os], [0])dnl +dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +dnl +AC_REQUIRE([AC_PROG_LN_S])dnl +test -z "$LN_S" && LN_S="ln -s" +_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl +dnl +AC_REQUIRE([LT_CMD_MAX_LEN])dnl +_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl +_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl +dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_CMD_RELOAD])dnl +m4_require([_LT_CHECK_MAGIC_METHOD])dnl +m4_require([_LT_CMD_OLD_ARCHIVE])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl + +_LT_CONFIG_LIBTOOL_INIT([ +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi +]) +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +_LT_CHECK_OBJDIR + +m4_require([_LT_TAG_COMPILER])dnl +_LT_PROG_ECHO_BACKSLASH + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([["`\\]]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld="$lt_cv_prog_gnu_ld" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + _LT_PATH_MAGIC + fi + ;; +esac + +# Use C for the default configuration in the libtool script +LT_SUPPORTED_TAG([CC]) +_LT_LANG_C_CONFIG +_LT_LANG_DEFAULT_CONFIG +_LT_CONFIG_COMMANDS +])# _LT_SETUP + + +# _LT_PROG_LTMAIN +# --------------- +# Note that this code is called both from `configure', and `config.status' +# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, +# `config.status' has no value for ac_aux_dir unless we are using Automake, +# so we pass a copy along to make sure it has a sensible value anyway. +m4_defun([_LT_PROG_LTMAIN], +[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl +_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) +ltmain="$ac_aux_dir/ltmain.sh" +])# _LT_PROG_LTMAIN + + + +# So that we can recreate a full libtool script including additional +# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS +# in macros and then make a single call at the end using the `libtool' +# label. + + +# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) +# ---------------------------------------- +# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL_INIT], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_INIT], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_INIT]) + + +# _LT_CONFIG_LIBTOOL([COMMANDS]) +# ------------------------------ +# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) + + +# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) +# ----------------------------------------------------- +m4_defun([_LT_CONFIG_SAVE_COMMANDS], +[_LT_CONFIG_LIBTOOL([$1]) +_LT_CONFIG_LIBTOOL_INIT([$2]) +]) + + +# _LT_FORMAT_COMMENT([COMMENT]) +# ----------------------------- +# Add leading comment marks to the start of each line, and a trailing +# full-stop to the whole comment if one is not present already. +m4_define([_LT_FORMAT_COMMENT], +[m4_ifval([$1], [ +m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], + [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) +)]) + + + + + +# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) +# ------------------------------------------------------------------- +# CONFIGNAME is the name given to the value in the libtool script. +# VARNAME is the (base) name used in the configure script. +# VALUE may be 0, 1 or 2 for a computed quote escaped value based on +# VARNAME. Any other value will be used directly. +m4_define([_LT_DECL], +[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], + [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], + [m4_ifval([$1], [$1], [$2])]) + lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) + m4_ifval([$4], + [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) + lt_dict_add_subkey([lt_decl_dict], [$2], + [tagged?], [m4_ifval([$5], [yes], [no])])]) +]) + + +# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) +# -------------------------------------------------------- +m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) + + +# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_tag_varnames], +[_lt_decl_filter([tagged?], [yes], $@)]) + + +# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) +# --------------------------------------------------------- +m4_define([_lt_decl_filter], +[m4_case([$#], + [0], [m4_fatal([$0: too few arguments: $#])], + [1], [m4_fatal([$0: too few arguments: $#: $1])], + [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], + [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], + [lt_dict_filter([lt_decl_dict], $@)])[]dnl +]) + + +# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) +# -------------------------------------------------- +m4_define([lt_decl_quote_varnames], +[_lt_decl_filter([value], [1], $@)]) + + +# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_dquote_varnames], +[_lt_decl_filter([value], [2], $@)]) + + +# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_varnames_tagged], +[m4_assert([$# <= 2])dnl +_$0(m4_quote(m4_default([$1], [[, ]])), + m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), + m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) +m4_define([_lt_decl_varnames_tagged], +[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) + + +# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_all_varnames], +[_$0(m4_quote(m4_default([$1], [[, ]])), + m4_if([$2], [], + m4_quote(lt_decl_varnames), + m4_quote(m4_shift($@))))[]dnl +]) +m4_define([_lt_decl_all_varnames], +[lt_join($@, lt_decl_varnames_tagged([$1], + lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl +]) + + +# _LT_CONFIG_STATUS_DECLARE([VARNAME]) +# ------------------------------------ +# Quote a variable value, and forward it to `config.status' so that its +# declaration there will have the same value as in `configure'. VARNAME +# must have a single quote delimited value for this to work. +m4_define([_LT_CONFIG_STATUS_DECLARE], +[$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`']) + + +# _LT_CONFIG_STATUS_DECLARATIONS +# ------------------------------ +# We delimit libtool config variables with single quotes, so when +# we write them to config.status, we have to be sure to quote all +# embedded single quotes properly. In configure, this macro expands +# each variable declared with _LT_DECL (and _LT_TAGDECL) into: +# +# <var>='`$ECHO "X$<var>" | $Xsed -e "$delay_single_quote_subst"`' +m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], +[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), + [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAGS +# ---------------- +# Output comment and list of tags supported by the script +m4_defun([_LT_LIBTOOL_TAGS], +[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl +available_tags="_LT_TAGS"dnl +]) + + +# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) +# ----------------------------------- +# Extract the dictionary values for VARNAME (optionally with TAG) and +# expand to a commented shell variable setting: +# +# # Some comment about what VAR is for. +# visible_name=$lt_internal_name +m4_define([_LT_LIBTOOL_DECLARE], +[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], + [description])))[]dnl +m4_pushdef([_libtool_name], + m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl +m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), + [0], [_libtool_name=[$]$1], + [1], [_libtool_name=$lt_[]$1], + [2], [_libtool_name=$lt_[]$1], + [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl +m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl +]) + + +# _LT_LIBTOOL_CONFIG_VARS +# ----------------------- +# Produce commented declarations of non-tagged libtool config variables +# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' +# script. Tagged libtool config variables (even for the LIBTOOL CONFIG +# section) are produced by _LT_LIBTOOL_TAG_VARS. +m4_defun([_LT_LIBTOOL_CONFIG_VARS], +[m4_foreach([_lt_var], + m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAG_VARS(TAG) +# ------------------------- +m4_define([_LT_LIBTOOL_TAG_VARS], +[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) + + +# _LT_TAGVAR(VARNAME, [TAGNAME]) +# ------------------------------ +m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) + + +# _LT_CONFIG_COMMANDS +# ------------------- +# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of +# variables for single and double quote escaping we saved from calls +# to _LT_DECL, we can put quote escaped variables declarations +# into `config.status', and then the shell code to quote escape them in +# for loops in `config.status'. Finally, any additional code accumulated +# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. +m4_defun([_LT_CONFIG_COMMANDS], +[AC_PROVIDE_IFELSE([LT_OUTPUT], + dnl If the libtool generation code has been placed in $CONFIG_LT, + dnl instead of duplicating it all over again into config.status, + dnl then we will have config.status run $CONFIG_LT later, so it + dnl needs to know what name is stored there: + [AC_CONFIG_COMMANDS([libtool], + [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], + dnl If the libtool generation code is destined for config.status, + dnl expand the accumulated commands and init code now: + [AC_CONFIG_COMMANDS([libtool], + [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) +])#_LT_CONFIG_COMMANDS + + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], +[ + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +_LT_CONFIG_STATUS_DECLARATIONS +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# Quote evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_quote_varnames); do + case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_dquote_varnames); do + case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Fix-up fallback echo if it was mangled by the above quoting rules. +case \$lt_ECHO in +*'\\\[$]0 --fallback-echo"')dnl " + lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\` + ;; +esac + +_LT_OUTPUT_LIBTOOL_INIT +]) + + +# LT_OUTPUT +# --------- +# This macro allows early generation of the libtool script (before +# AC_OUTPUT is called), incase it is used in configure for compilation +# tests. +AC_DEFUN([LT_OUTPUT], +[: ${CONFIG_LT=./config.lt} +AC_MSG_NOTICE([creating $CONFIG_LT]) +cat >"$CONFIG_LT" <<_LTEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate a libtool stub with the current configuration. + +lt_cl_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AS_SHELL_SANITIZE +_AS_PREPARE + +exec AS_MESSAGE_FD>&1 +exec AS_MESSAGE_LOG_FD>>config.log +{ + echo + AS_BOX([Running $as_me.]) +} >&AS_MESSAGE_LOG_FD + +lt_cl_help="\ +\`$as_me' creates a local libtool stub from the current configuration, +for use in further configure time tests before the real libtool is +generated. + +Usage: $[0] [[OPTIONS]] + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + +Report bugs to <bug-libtool@gnu.org>." + +lt_cl_version="\ +m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl +m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) +configured by $[0], generated by m4_PACKAGE_STRING. + +Copyright (C) 2008 Free Software Foundation, Inc. +This config.lt script is free software; the Free Software Foundation +gives unlimited permision to copy, distribute and modify it." + +while test $[#] != 0 +do + case $[1] in + --version | --v* | -V ) + echo "$lt_cl_version"; exit 0 ;; + --help | --h* | -h ) + echo "$lt_cl_help"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --quiet | --q* | --silent | --s* | -q ) + lt_cl_silent=: ;; + + -*) AC_MSG_ERROR([unrecognized option: $[1] +Try \`$[0] --help' for more information.]) ;; + + *) AC_MSG_ERROR([unrecognized argument: $[1] +Try \`$[0] --help' for more information.]) ;; + esac + shift +done + +if $lt_cl_silent; then + exec AS_MESSAGE_FD>/dev/null +fi +_LTEOF + +cat >>"$CONFIG_LT" <<_LTEOF +_LT_OUTPUT_LIBTOOL_COMMANDS_INIT +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AC_MSG_NOTICE([creating $ofile]) +_LT_OUTPUT_LIBTOOL_COMMANDS +AS_EXIT(0) +_LTEOF +chmod +x "$CONFIG_LT" + +# configure is writing to config.log, but config.lt does its own redirection, +# appending to config.log, which fails on DOS, as config.log is still kept +# open by configure. Here we exec the FD to /dev/null, effectively closing +# config.log, so it can be properly (re)opened and appended to by config.lt. +if test "$no_create" != yes; then + lt_cl_success=: + test "$silent" = yes && + lt_config_lt_args="$lt_config_lt_args --quiet" + exec AS_MESSAGE_LOG_FD>/dev/null + $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false + exec AS_MESSAGE_LOG_FD>>config.log + $lt_cl_success || AS_EXIT(1) +fi +])# LT_OUTPUT + + +# _LT_CONFIG(TAG) +# --------------- +# If TAG is the built-in tag, create an initial libtool script with a +# default configuration from the untagged config vars. Otherwise add code +# to config.status for appending the configuration named by TAG from the +# matching tagged config vars. +m4_defun([_LT_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_CONFIG_SAVE_COMMANDS([ + m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl + m4_if(_LT_TAG, [C], [ + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL + +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +_LT_COPYING +_LT_LIBTOOL_TAGS + +# ### BEGIN LIBTOOL CONFIG +_LT_LIBTOOL_CONFIG_VARS +_LT_LIBTOOL_TAG_VARS +# ### END LIBTOOL CONFIG + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + _LT_PROG_LTMAIN + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + _LT_PROG_XSI_SHELLFNS + + sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +], +[cat <<_LT_EOF >> "$ofile" + +dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded +dnl in a comment (ie after a #). +# ### BEGIN LIBTOOL TAG CONFIG: $1 +_LT_LIBTOOL_TAG_VARS(_LT_TAG) +# ### END LIBTOOL TAG CONFIG: $1 +_LT_EOF +])dnl /m4_if +], +[m4_if([$1], [], [ + PACKAGE='$PACKAGE' + VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' + RM='$RM' + ofile='$ofile'], []) +])dnl /_LT_CONFIG_SAVE_COMMANDS +])# _LT_CONFIG + + +# LT_SUPPORTED_TAG(TAG) +# --------------------- +# Trace this macro to discover what tags are supported by the libtool +# --tag option, using: +# autoconf --trace 'LT_SUPPORTED_TAG:$1' +AC_DEFUN([LT_SUPPORTED_TAG], []) + + +# C support is built-in for now +m4_define([_LT_LANG_C_enabled], []) +m4_define([_LT_TAGS], []) + + +# LT_LANG(LANG) +# ------------- +# Enable libtool support for the given language if not already enabled. +AC_DEFUN([LT_LANG], +[AC_BEFORE([$0], [LT_OUTPUT])dnl +m4_case([$1], + [C], [_LT_LANG(C)], + [C++], [_LT_LANG(CXX)], + [Java], [_LT_LANG(GCJ)], + [Fortran 77], [_LT_LANG(F77)], + [Fortran], [_LT_LANG(FC)], + [Windows Resource], [_LT_LANG(RC)], + [m4_ifdef([_LT_LANG_]$1[_CONFIG], + [_LT_LANG($1)], + [m4_fatal([$0: unsupported language: "$1"])])])dnl +])# LT_LANG + + +# _LT_LANG(LANGNAME) +# ------------------ +m4_defun([_LT_LANG], +[m4_ifdef([_LT_LANG_]$1[_enabled], [], + [LT_SUPPORTED_TAG([$1])dnl + m4_append([_LT_TAGS], [$1 ])dnl + m4_define([_LT_LANG_]$1[_enabled], [])dnl + _LT_LANG_$1_CONFIG($1)])dnl +])# _LT_LANG + + +# _LT_LANG_DEFAULT_CONFIG +# ----------------------- +m4_defun([_LT_LANG_DEFAULT_CONFIG], +[AC_PROVIDE_IFELSE([AC_PROG_CXX], + [LT_LANG(CXX)], + [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) + +AC_PROVIDE_IFELSE([AC_PROG_F77], + [LT_LANG(F77)], + [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) + +AC_PROVIDE_IFELSE([AC_PROG_FC], + [LT_LANG(FC)], + [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) + +dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal +dnl pulling things in needlessly. +AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([LT_PROG_GCJ], + [LT_LANG(GCJ)], + [m4_ifdef([AC_PROG_GCJ], + [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([A][M_PROG_GCJ], + [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([LT_PROG_GCJ], + [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) + +AC_PROVIDE_IFELSE([LT_PROG_RC], + [LT_LANG(RC)], + [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) +])# _LT_LANG_DEFAULT_CONFIG + +# Obsolete macros: +AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) +AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) +AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) +AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_CXX], []) +dnl AC_DEFUN([AC_LIBTOOL_F77], []) +dnl AC_DEFUN([AC_LIBTOOL_FC], []) +dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) + + +# _LT_TAG_COMPILER +# ---------------- +m4_defun([_LT_TAG_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl +_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl +_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl +_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_TAG_COMPILER + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +m4_defun([_LT_COMPILER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +m4_defun([_LT_LINKER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* +])# _LT_LINKER_BOILERPLATE + +# _LT_REQUIRED_DARWIN_CHECKS +# ------------------------- +m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ + case $host_os in + rhapsody* | darwin*) + AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) + AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) + AC_CHECK_TOOL([LIPO], [lipo], [:]) + AC_CHECK_TOOL([OTOOL], [otool], [:]) + AC_CHECK_TOOL([OTOOL64], [otool64], [:]) + _LT_DECL([], [DSYMUTIL], [1], + [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) + _LT_DECL([], [NMEDIT], [1], + [Tool to change global to local symbols on Mac OS X]) + _LT_DECL([], [LIPO], [1], + [Tool to manipulate fat objects and archives on Mac OS X]) + _LT_DECL([], [OTOOL], [1], + [ldd/readelf like tool for Mach-O binaries on Mac OS X]) + _LT_DECL([], [OTOOL64], [1], + [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) + + AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], + [lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi]) + AC_CACHE_CHECK([for -exported_symbols_list linker flag], + [lt_cv_ld_exported_symbols_list], + [lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [lt_cv_ld_exported_symbols_list=yes], + [lt_cv_ld_exported_symbols_list=no]) + LDFLAGS="$save_LDFLAGS" + ]) + case $host_os in + rhapsody* | darwin1.[[012]]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[[012]]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + if test "$DSYMUTIL" != ":"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac +]) + + +# _LT_DARWIN_LINKER_FEATURES +# -------------------------- +# Checks for linker and compiler features on darwin +m4_defun([_LT_DARWIN_LINKER_FEATURES], +[ + m4_require([_LT_REQUIRED_DARWIN_CHECKS]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_automatic, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_TAGVAR(whole_archive_flag_spec, $1)='' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=echo + _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + m4_if([$1], [CXX], +[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then + _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" + fi +],[]) + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi +]) + +# _LT_SYS_MODULE_PATH_AIX +# ----------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +m4_defun([_LT_SYS_MODULE_PATH_AIX], +[m4_require([_LT_DECL_SED])dnl +AC_LINK_IFELSE(AC_LANG_PROGRAM,[ +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi],[]) +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi +])# _LT_SYS_MODULE_PATH_AIX + + +# _LT_SHELL_INIT(ARG) +# ------------------- +m4_define([_LT_SHELL_INIT], +[ifdef([AC_DIVERSION_NOTICE], + [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], + [AC_DIVERT_PUSH(NOTICE)]) +$1 +AC_DIVERT_POP +])# _LT_SHELL_INIT + + +# _LT_PROG_ECHO_BACKSLASH +# ----------------------- +# Add some code to the start of the generated configure script which +# will find an echo command which doesn't interpret backslashes. +m4_defun([_LT_PROG_ECHO_BACKSLASH], +[_LT_SHELL_INIT([ +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$lt_ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` + ;; +esac + +ECHO=${lt_ECHO-echo} +if test "X[$]1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X[$]1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then + # Yippee, $ECHO works! + : +else + # Restart under the correct shell. + exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} +fi + +if test "X[$]1" = X--fallback-echo; then + # used as fallback echo + shift + cat <<_LT_EOF +[$]* +_LT_EOF + exit 0 +fi + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +if test -z "$lt_ECHO"; then + if test "X${echo_test_string+set}" != Xset; then + # find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if { echo_test_string=`eval $cmd`; } 2>/dev/null && + { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null + then + break + fi + done + fi + + if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && + echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : + else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + ECHO="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$ECHO" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && + echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + ECHO='print -r' + elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} + else + # Try using printf. + ECHO='printf %s\n' + if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && + echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + ECHO="$CONFIG_SHELL [$]0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + ECHO="$CONFIG_SHELL [$]0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do + if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "[$]0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} + else + # Oops. We lost completely, so just stick with echo. + ECHO=echo + fi + fi + fi + fi + fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +lt_ECHO=$ECHO +if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then + lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" +fi + +AC_SUBST(lt_ECHO) +]) +_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) +_LT_DECL([], [ECHO], [1], + [An echo program that does not interpret backslashes]) +])# _LT_PROG_ECHO_BACKSLASH + + +# _LT_ENABLE_LOCK +# --------------- +m4_defun([_LT_ENABLE_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AS_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line __oline__ "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks="$enable_libtool_lock" +])# _LT_ENABLE_LOCK + + +# _LT_CMD_OLD_ARCHIVE +# ------------------- +m4_defun([_LT_CMD_OLD_ARCHIVE], +[AC_CHECK_TOOL(AR, ar, false) +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +_LT_DECL([], [AR], [1], [The archiver]) +_LT_DECL([], [AR_FLAGS], [1]) + +AC_CHECK_TOOL(STRIP, strip, :) +test -z "$STRIP" && STRIP=: +_LT_DECL([], [STRIP], [1], [A symbol stripping program]) + +AC_CHECK_TOOL(RANLIB, ranlib, :) +test -z "$RANLIB" && RANLIB=: +_LT_DECL([], [RANLIB], [1], + [Commands used to install an old-style archive]) + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi +_LT_DECL([], [old_postinstall_cmds], [2]) +_LT_DECL([], [old_postuninstall_cmds], [2]) +_LT_TAGDECL([], [old_archive_cmds], [2], + [Commands used to build an old-style archive]) +])# _LT_CMD_OLD_ARCHIVE + + +# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([_LT_COMPILER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $RM conftest* +]) + +if test x"[$]$2" = xyes; then + m4_if([$5], , :, [$5]) +else + m4_if([$6], , :, [$6]) +fi +])# _LT_COMPILER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) + + +# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------- +# Check whether the given linker option works +AC_DEFUN([_LT_LINKER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" +]) + +if test x"[$]$2" = xyes; then + m4_if([$4], , :, [$4]) +else + m4_if([$5], , :, [$5]) +fi +])# _LT_LINKER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) + + +# LT_CMD_MAX_LEN +#--------------- +AC_DEFUN([LT_CMD_MAX_LEN], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8 ; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ + = "XX$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac +]) +if test -n $lt_cv_sys_max_cmd_len ; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +max_cmd_len=$lt_cv_sys_max_cmd_len +_LT_DECL([], [max_cmd_len], [0], + [What is the maximum length of a command?]) +])# LT_CMD_MAX_LEN + +# Old name: +AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) + + +# _LT_HEADER_DLFCN +# ---------------- +m4_defun([_LT_HEADER_DLFCN], +[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl +])# _LT_HEADER_DLFCN + + +# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ---------------------------------------------------------------- +m4_defun([_LT_TRY_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test "$cross_compiling" = yes; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +[#line __oline__ "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include <dlfcn.h> +#endif + +#include <stdio.h> + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +}] +_LT_EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_TRY_DLOPEN_SELF + + +# LT_SYS_DLOPEN_SELF +# ------------------ +AC_DEFUN([LT_SYS_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +_LT_DECL([dlopen_support], [enable_dlopen], [0], + [Whether dlopen is supported]) +_LT_DECL([dlopen_self], [enable_dlopen_self], [0], + [Whether dlopen of programs is supported]) +_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], + [Whether dlopen of statically linked programs is supported]) +])# LT_SYS_DLOPEN_SELF + +# Old name: +AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) + + +# _LT_COMPILER_C_O([TAGNAME]) +# --------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler. +# This macro does not hard code the compiler like AC_PROG_CC_C_O. +m4_defun([_LT_COMPILER_C_O], +[m4_require([_LT_DECL_SED])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* +]) +_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], + [Does compiler simultaneously support -c and -o options?]) +])# _LT_COMPILER_C_O + + +# _LT_COMPILER_FILE_LOCKS([TAGNAME]) +# ---------------------------------- +# Check to see if we can do hard links to lock some files if needed +m4_defun([_LT_COMPILER_FILE_LOCKS], +[m4_require([_LT_ENABLE_LOCK])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_COMPILER_C_O([$1]) + +hard_links="nottested" +if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) +])# _LT_COMPILER_FILE_LOCKS + + +# _LT_CHECK_OBJDIR +# ---------------- +m4_defun([_LT_CHECK_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +_LT_DECL([], [objdir], [0], + [The name of the directory that contains temporary libtool files])dnl +m4_pattern_allow([LT_OBJDIR])dnl +AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", + [Define to the sub-directory in which libtool stores uninstalled libraries.]) +])# _LT_CHECK_OBJDIR + + +# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) +# -------------------------------------- +# Check hardcoding attributes. +m4_defun([_LT_LINKER_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || + test -n "$_LT_TAGVAR(runpath_var, $1)" || + test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && + test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then + # Linking always hardcodes the temporary library directory. + _LT_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) + +if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || + test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi +_LT_TAGDECL([], [hardcode_action], [0], + [How to hardcode a shared library path into an executable]) +])# _LT_LINKER_HARDCODE_LIBPATH + + +# _LT_CMD_STRIPLIB +# ---------------- +m4_defun([_LT_CMD_STRIPLIB], +[m4_require([_LT_DECL_EGREP]) +striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) +_LT_DECL([], [striplib], [1]) +])# _LT_CMD_STRIPLIB + + +# _LT_SYS_DYNAMIC_LINKER([TAG]) +# ----------------------------- +# PORTME Fill in your ld.so characteristics +m4_defun([_LT_SYS_DYNAMIC_LINKER], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_OBJDUMP])dnl +m4_require([_LT_DECL_SED])dnl +AC_MSG_CHECKING([dynamic linker characteristics]) +m4_if([$1], + [], [ +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` + else + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[[lt_foo]]++; } + if (lt_freq[[lt_foo]] == 1) { print lt_foo; } +}'` + sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[[4-9]]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib<name>.so + # instead of lib<name>.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[123]]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix[[3-9]]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # Some binutils ld are patched to set DT_RUNPATH + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ + LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], + [shlibpath_overrides_runpath=yes])]) + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Add ABI-specific directories to the system library path. + sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + +_LT_DECL([], [variables_saved_for_relink], [1], + [Variables whose values should be saved in libtool wrapper scripts and + restored at link time]) +_LT_DECL([], [need_lib_prefix], [0], + [Do we need the "lib" prefix for modules?]) +_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) +_LT_DECL([], [version_type], [0], [Library versioning type]) +_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) +_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) +_LT_DECL([], [shlibpath_overrides_runpath], [0], + [Is shlibpath searched before the hard-coded library search path?]) +_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) +_LT_DECL([], [library_names_spec], [1], + [[List of archive names. First name is the real one, the rest are links. + The last name is the one that the linker finds with -lNAME]]) +_LT_DECL([], [soname_spec], [1], + [[The coded name of the library, if different from the real name]]) +_LT_DECL([], [postinstall_cmds], [2], + [Command to use after installation of a shared archive]) +_LT_DECL([], [postuninstall_cmds], [2], + [Command to use after uninstallation of a shared archive]) +_LT_DECL([], [finish_cmds], [2], + [Commands used to finish a libtool library installation in a directory]) +_LT_DECL([], [finish_eval], [1], + [[As "finish_cmds", except a single script fragment to be evaled but + not shown]]) +_LT_DECL([], [hardcode_into_libs], [0], + [Whether we should hardcode library paths into libraries]) +_LT_DECL([], [sys_lib_search_path_spec], [2], + [Compile-time system search path for libraries]) +_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], + [Run-time system search path for libraries]) +])# _LT_SYS_DYNAMIC_LINKER + + +# _LT_PATH_TOOL_PREFIX(TOOL) +# -------------------------- +# find a file program which can recognize shared library +AC_DEFUN([_LT_PATH_TOOL_PREFIX], +[m4_require([_LT_DECL_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="m4_if([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +_LT_DECL([], [MAGIC_CMD], [0], + [Used to examine libraries when file_magic_cmd begins with "file"])dnl +])# _LT_PATH_TOOL_PREFIX + +# Old name: +AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) + + +# _LT_PATH_MAGIC +# -------------- +# find a file program which can recognize a shared library +m4_defun([_LT_PATH_MAGIC], +[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# _LT_PATH_MAGIC + + +# LT_PATH_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([LT_PATH_LD], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl + +AC_ARG_WITH([gnu-ld], + [AS_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test "$withval" = no || with_gnu_ld=yes], + [with_gnu_ld=no])dnl + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in + *GNU* | *'with BFD'*) + test "$with_gnu_ld" != no && break + ;; + *) + test "$with_gnu_ld" != yes && break + ;; + esac + fi + done + IFS="$lt_save_ifs" +else + lt_cv_path_LD="$LD" # Let the user override the test with a path. +fi]) +LD="$lt_cv_path_LD" +if test -n "$LD"; then + AC_MSG_RESULT($LD) +else + AC_MSG_RESULT(no) +fi +test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) +_LT_PATH_LD_GNU +AC_SUBST([LD]) + +_LT_TAGDECL([], [LD], [1], [The linker used to build libraries]) +])# LT_PATH_LD + +# Old names: +AU_ALIAS([AM_PROG_LD], [LT_PATH_LD]) +AU_ALIAS([AC_PROG_LD], [LT_PATH_LD]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_PROG_LD], []) +dnl AC_DEFUN([AC_PROG_LD], []) + + +# _LT_PATH_LD_GNU +#- -------------- +m4_defun([_LT_PATH_LD_GNU], +[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld, +[# I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 </dev/null` in +*GNU* | *'with BFD'*) + lt_cv_prog_gnu_ld=yes + ;; +*) + lt_cv_prog_gnu_ld=no + ;; +esac]) +with_gnu_ld=$lt_cv_prog_gnu_ld +])# _LT_PATH_LD_GNU + + +# _LT_CMD_RELOAD +# -------------- +# find reload flag for linker +# -- PORTME Some linkers may need a different reload flag. +m4_defun([_LT_CMD_RELOAD], +[AC_CACHE_CHECK([for $LD option to reload object files], + lt_cv_ld_reload_flag, + [lt_cv_ld_reload_flag='-r']) +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + darwin*) + if test "$GCC" = yes; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac +_LT_DECL([], [reload_flag], [1], [How to create reloadable object files])dnl +_LT_DECL([], [reload_cmds], [2])dnl +])# _LT_CMD_RELOAD + + +# _LT_CHECK_MAGIC_METHOD +# ---------------------- +# how to check for library dependencies +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_MAGIC_METHOD], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +AC_CACHE_CHECK([how to recognize dependent libraries], +lt_cv_deplibs_check_method, +[lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[[4-9]]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[[45]]*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[[3-9]]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +_LT_DECL([], [deplibs_check_method], [1], + [Method to check whether dependent libraries are shared objects]) +_LT_DECL([], [file_magic_cmd], [1], + [Command to use when deplibs_check_method == "file_magic"]) +])# _LT_CHECK_MAGIC_METHOD + + +# LT_PATH_NM +# ---------- +# find the pathname to a BSD- or MS-compatible name lister +AC_DEFUN([LT_PATH_NM], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + : ${lt_cv_path_NM=no} +fi]) +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" +else + # Didn't find any BSD compatible name lister, look for dumpbin. + AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :) + AC_SUBST([DUMPBIN]) + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" + fi +fi +test -z "$NM" && NM=nm +AC_SUBST([NM]) +_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl + +AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], + [lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD) + cat conftest.out >&AS_MESSAGE_LOG_FD + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest*]) +])# LT_PATH_NM + +# Old names: +AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) +AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_PROG_NM], []) +dnl AC_DEFUN([AC_PROG_NM], []) + + +# LT_LIB_M +# -------- +# check for math library +AC_DEFUN([LT_LIB_M], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM="-lm") + ;; +esac +AC_SUBST([LIBM]) +])# LT_LIB_M + +# Old name: +AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_CHECK_LIBM], []) + + +# _LT_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------- +m4_defun([_LT_COMPILER_NO_RTTI], +[m4_require([_LT_TAG_COMPILER])dnl + +_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test "$GCC" = yes; then + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + + _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], + [Compiler flag to turn off builtin functions]) +])# _LT_COMPILER_NO_RTTI + + +# _LT_CMD_GLOBAL_SYMBOLS +# ---------------------- +m4_defun([_LT_CMD_GLOBAL_SYMBOLS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_PATH_NM])dnl +AC_REQUIRE([LT_PATH_LD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_TAG_COMPILER])dnl + +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) + if test "$host_cpu" = ia64; then + symcode='[[ABCDEGRST]]' + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function + # and D for any global variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK ['"\ +" {last_section=section; section=\$ 3};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx]" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + nlist=conftest.nm + if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[[]] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi + +_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], + [Take the output of nm and produce a listing of raw symbols and C names]) +_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], + [Transform the output of nm in a proper C declaration]) +_LT_DECL([global_symbol_to_c_name_address], + [lt_cv_sys_global_symbol_to_c_name_address], [1], + [Transform the output of nm in a C name address pair]) +_LT_DECL([global_symbol_to_c_name_address_lib_prefix], + [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], + [Transform the output of nm in a C name address pair when lib prefix is needed]) +]) # _LT_CMD_GLOBAL_SYMBOLS + + +# _LT_COMPILER_PIC([TAGNAME]) +# --------------------------- +m4_defun([_LT_COMPILER_PIC], +[m4_require([_LT_TAG_COMPILER])dnl +_LT_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_TAGVAR(lt_prog_compiler_static, $1)= + +AC_MSG_CHECKING([for $compiler option to produce PIC]) +m4_if([$1], [CXX], [ + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix[[4-9]]*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64 which still supported -KPIC. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xlc* | xlC*) + # IBM XL 8.0 on PPC + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test "$GCC" = yes; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + hpux9* | hpux10* | hpux11*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + # old Intel for x86_64 which still supported -KPIC. + ecc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' + _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xl*) + # IBM XL C 8.0/Fortran 10.1 on PPC + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + *Sun\ F*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='' + ;; + esac + ;; + esac + ;; + + newsos6) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + rdos*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + solaris*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" + ;; +esac +AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) +_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], + [How to pass a linker flag through the compiler]) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], + [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], + [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], + [Additional compiler flags for building library objects]) + +# +# Check to make sure the static flag actually works. +# +wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" +_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) +_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], + [Compiler flag to prevent dynamic linking]) +])# _LT_COMPILER_PIC + + +# _LT_LINKER_SHLIBS([TAGNAME]) +# ---------------------------- +# See if the linker supports building shared libraries. +m4_defun([_LT_LINKER_SHLIBS], +[AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +m4_if([$1], [CXX], [ + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix[[4-9]]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" + ;; + cygwin* | mingw* | cegcc*) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] +], [ + runpath_var= + _LT_TAGVAR(allow_undefined_flag, $1)= + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(archive_cmds, $1)= + _LT_TAGVAR(archive_expsym_cmds, $1)= + _LT_TAGVAR(compiler_needs_object, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(hardcode_automatic, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= + _LT_TAGVAR(hardcode_libdir_separator, $1)= + _LT_TAGVAR(hardcode_minus_L, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_TAGVAR(inherit_rpath, $1)=no + _LT_TAGVAR(link_all_deplibs, $1)=unknown + _LT_TAGVAR(module_cmds, $1)= + _LT_TAGVAR(module_expsym_cmds, $1)= + _LT_TAGVAR(old_archive_from_new_cmds, $1)= + _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_TAGVAR(thread_safe_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. +dnl Note also adjust exclude_expsyms for C++ above. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + _LT_TAGVAR(ld_shlibs, $1)=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[[3-9]]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach <jrb3@best.com> says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test "$tmp_diet" = no + then + tmp_addflag= + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + _LT_TAGVAR(whole_archive_flag_spec, $1)= + tmp_sharedflag='--shared' ;; + xl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + xlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' + _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then + runpath_var= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + + if test "$GCC" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + bsdi[[45]]*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' + _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + freebsd1*) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + AC_LINK_IFELSE(int foo(void) {}, + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + ) + LDFLAGS="$save_LDFLAGS" + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + else + case $host_os in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + ;; + esac + fi + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + solaris*) + _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' + if test "$GCC" = yes; then + wlarc='${wl}' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='${wl}' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + fi + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + if test x$host_vendor = xsni; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' + ;; + esac + fi + fi +]) +AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) +test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld + +_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl +_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl +_LT_DECL([], [extract_expsyms_cmds], [2], + [The commands to extract the exported symbol list from a shared archive]) + +# +# Do we need to explicitly link libc? +# +case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $_LT_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_MSG_CHECKING([whether -lc should be explicitly linked in]) + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) + _LT_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) + then + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + else + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)]) + ;; + esac + fi + ;; +esac + +_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], + [Whether or not to add -lc for building shared libraries]) +_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], + [enable_shared_with_static_runtimes], [0], + [Whether or not to disallow shared libs when runtime libs are static]) +_LT_TAGDECL([], [export_dynamic_flag_spec], [1], + [Compiler flag to allow reflexive dlopens]) +_LT_TAGDECL([], [whole_archive_flag_spec], [1], + [Compiler flag to generate shared objects directly from archives]) +_LT_TAGDECL([], [compiler_needs_object], [1], + [Whether the compiler copes with passing no objects directly]) +_LT_TAGDECL([], [old_archive_from_new_cmds], [2], + [Create an old-style archive from a shared archive]) +_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], + [Create a temporary old-style archive to link instead of a shared archive]) +_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) +_LT_TAGDECL([], [archive_expsym_cmds], [2]) +_LT_TAGDECL([], [module_cmds], [2], + [Commands used to build a loadable module if different from building + a shared archive.]) +_LT_TAGDECL([], [module_expsym_cmds], [2]) +_LT_TAGDECL([], [with_gnu_ld], [1], + [Whether we are building with GNU ld or not]) +_LT_TAGDECL([], [allow_undefined_flag], [1], + [Flag that allows shared libraries with undefined symbols to be built]) +_LT_TAGDECL([], [no_undefined_flag], [1], + [Flag that enforces no undefined symbols]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], + [Flag to hardcode $libdir into a binary during linking. + This must work even if $libdir does not exist]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1], + [[If ld is used when linking, flag to hardcode $libdir into a binary + during linking. This must work even if $libdir does not exist]]) +_LT_TAGDECL([], [hardcode_libdir_separator], [1], + [Whether we need a single "-rpath" flag with a separated argument]) +_LT_TAGDECL([], [hardcode_direct], [0], + [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + DIR into the resulting binary]) +_LT_TAGDECL([], [hardcode_direct_absolute], [0], + [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + DIR into the resulting binary and the resulting library dependency is + "absolute", i.e impossible to change by setting ${shlibpath_var} if the + library is relocated]) +_LT_TAGDECL([], [hardcode_minus_L], [0], + [Set to "yes" if using the -LDIR flag during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_shlibpath_var], [0], + [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_automatic], [0], + [Set to "yes" if building a shared library automatically hardcodes DIR + into the library and all subsequent libraries and executables linked + against it]) +_LT_TAGDECL([], [inherit_rpath], [0], + [Set to yes if linker adds runtime paths of dependent libraries + to runtime path list]) +_LT_TAGDECL([], [link_all_deplibs], [0], + [Whether libtool must link a program against all its dependency libraries]) +_LT_TAGDECL([], [fix_srcfile_path], [1], + [Fix the shell variable $srcfile for the compiler]) +_LT_TAGDECL([], [always_export_symbols], [0], + [Set to "yes" if exported symbols are required]) +_LT_TAGDECL([], [export_symbols_cmds], [2], + [The commands to list exported symbols]) +_LT_TAGDECL([], [exclude_expsyms], [1], + [Symbols that should not be listed in the preloaded symbols]) +_LT_TAGDECL([], [include_expsyms], [1], + [Symbols that must always be exported]) +_LT_TAGDECL([], [prelink_cmds], [2], + [Commands necessary for linking programs (against libraries) with templates]) +_LT_TAGDECL([], [file_list_spec], [1], + [Specify filename containing input files]) +dnl FIXME: Not yet implemented +dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], +dnl [Compiler flag to generate thread safe objects]) +])# _LT_LINKER_SHLIBS + + +# _LT_LANG_C_CONFIG([TAG]) +# ------------------------ +# Ensure that the configuration variables for a C compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to `libtool'. +m4_defun([_LT_LANG_C_CONFIG], +[m4_require([_LT_DECL_EGREP])dnl +lt_save_CC="$CC" +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + +_LT_TAG_COMPILER +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + LT_SYS_DLOPEN_SELF + _LT_CMD_STRIPLIB + + # Report which library types will actually be built + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_CONFIG($1) +fi +AC_LANG_POP +CC="$lt_save_CC" +])# _LT_LANG_C_CONFIG + + +# _LT_PROG_CXX +# ------------ +# Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++ +# compiler, we have our own version here. +m4_defun([_LT_PROG_CXX], +[ +pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes]) +AC_PROG_CXX +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_PROG_CXXCPP +else + _lt_caught_CXX_error=yes +fi +popdef([AC_MSG_ERROR]) +])# _LT_PROG_CXX + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([_LT_PROG_CXX], []) + + +# _LT_LANG_CXX_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a C++ compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to `libtool'. +m4_defun([_LT_LANG_CXX_CONFIG], +[AC_REQUIRE([_LT_PROG_CXX])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl + +AC_LANG_PUSH(C++) +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(compiler_needs_object, $1)=no +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_caught_CXX_error" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test "$GXX" = yes; then + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + else + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + fi + + if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + LT_PATH_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) + _LT_TAGVAR(ld_shlibs, $1)=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + + if test "$GXX" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty + # executable. + _LT_SYS_MODULE_PATH_AIX + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared + # libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach <jrb3@best.com> says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + freebsd[[12]]*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + freebsd-elf*) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + gnu*) + ;; + + hpux9*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + ;; + *) + if test "$GXX" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib' + fi + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*) + _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"' + _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~ + $RANLIB $oldlib' + _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + *) # Version 6 will use weak symbols + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + ;; + xl*) + # IBM XL 8.0 on PPC, with GNU ld + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + openbsd2*) + # C++ shared libraries are fairly broken + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd=echo + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + case $host in + osf3*) + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + ;; + *) + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~ + $RM $lib.exp' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + case $host in + osf3*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + fi + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) + test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + + _LT_TAGVAR(GCC, $1)="$GXX" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + CC=$lt_save_CC + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test "$_lt_caught_CXX_error" != yes + +AC_LANG_POP +])# _LT_LANG_CXX_CONFIG + + +# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) +# --------------------------------- +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +m4_defun([_LT_SYS_HIDDEN_LIBDEPS], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +# Dependencies to place before and after the object being linked: +_LT_TAGVAR(predep_objects, $1)= +_LT_TAGVAR(postdep_objects, $1)= +_LT_TAGVAR(predeps, $1)= +_LT_TAGVAR(postdeps, $1)= +_LT_TAGVAR(compiler_lib_search_path, $1)= + +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF +int a; +void foo (void) { a = 0; } +_LT_EOF +], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF +], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer*4 a + a=0 + return + end +_LT_EOF +], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer a + a=0 + return + end +_LT_EOF +], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF +public class foo { + private int a; + public void bar (void) { + a = 0; + } +}; +_LT_EOF +]) +dnl Parse the compiler output and extract the necessary +dnl objects, libraries and library flags. +if AC_TRY_EVAL(ac_compile); then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case $p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" || + test $p = "-R"; then + prev=$p + continue + else + prev= + fi + + if test "$pre_test_object_deps_done" = no; then + case $p in + -L* | -R*) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then + _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" + else + _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$_LT_TAGVAR(postdeps, $1)"; then + _LT_TAGVAR(postdeps, $1)="${prev}${p}" + else + _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" + fi + fi + ;; + + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$_LT_TAGVAR(predep_objects, $1)"; then + _LT_TAGVAR(predep_objects, $1)="$p" + else + _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" + fi + else + if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then + _LT_TAGVAR(postdep_objects, $1)="$p" + else + _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling $1 test program" +fi + +$RM -f confest.$objext + +# PORTME: override above test on systems where it is broken +m4_if([$1], [CXX], +[case $host_os in +interix[[3-9]]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + _LT_TAGVAR(predep_objects,$1)= + _LT_TAGVAR(postdep_objects,$1)= + _LT_TAGVAR(postdeps,$1)= + ;; + +linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + if test "$solaris_use_stlport4" != yes; then + _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; + +solaris*) + case $cc_basename in + CC*) + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + if test "$solaris_use_stlport4" != yes; then + _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; +esac +]) + +case " $_LT_TAGVAR(postdeps, $1) " in +*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; +esac + _LT_TAGVAR(compiler_lib_search_dirs, $1)= +if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then + _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` +fi +_LT_TAGDECL([], [compiler_lib_search_dirs], [1], + [The directories searched by this compiler when creating a shared library]) +_LT_TAGDECL([], [predep_objects], [1], + [Dependencies to place before and after the objects being linked to + create a shared library]) +_LT_TAGDECL([], [postdep_objects], [1]) +_LT_TAGDECL([], [predeps], [1]) +_LT_TAGDECL([], [postdeps], [1]) +_LT_TAGDECL([], [compiler_lib_search_path], [1], + [The library search path used internally by the compiler when linking + a shared library]) +])# _LT_SYS_HIDDEN_LIBDEPS + + +# _LT_PROG_F77 +# ------------ +# Since AC_PROG_F77 is broken, in that it returns the empty string +# if there is no fortran compiler, we have our own version here. +m4_defun([_LT_PROG_F77], +[ +pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes]) +AC_PROG_F77 +if test -z "$F77" || test "X$F77" = "Xno"; then + _lt_disable_F77=yes +fi +popdef([AC_MSG_ERROR]) +])# _LT_PROG_F77 + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([_LT_PROG_F77], []) + + +# _LT_LANG_F77_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a Fortran 77 compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_F77_CONFIG], +[AC_REQUIRE([_LT_PROG_F77])dnl +AC_LANG_PUSH(Fortran 77) + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the F77 compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_disable_F77" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC="$CC" + lt_save_GCC=$GCC + CC=${F77-"f77"} + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + GCC=$G77 + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)="$G77" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC="$lt_save_CC" +fi # test "$_lt_disable_F77" != yes + +AC_LANG_POP +])# _LT_LANG_F77_CONFIG + + +# _LT_PROG_FC +# ----------- +# Since AC_PROG_FC is broken, in that it returns the empty string +# if there is no fortran compiler, we have our own version here. +m4_defun([_LT_PROG_FC], +[ +pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes]) +AC_PROG_FC +if test -z "$FC" || test "X$FC" = "Xno"; then + _lt_disable_FC=yes +fi +popdef([AC_MSG_ERROR]) +])# _LT_PROG_FC + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([_LT_PROG_FC], []) + + +# _LT_LANG_FC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for a Fortran compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_FC_CONFIG], +[AC_REQUIRE([_LT_PROG_FC])dnl +AC_LANG_PUSH(Fortran) + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for fc test sources. +ac_ext=${ac_fc_srcext-f} + +# Object file extension for compiled fc test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the FC compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_disable_FC" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC="$CC" + lt_save_GCC=$GCC + CC=${FC-"f95"} + compiler=$CC + GCC=$ac_cv_fc_compiler_gnu + + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC="$lt_save_CC" +fi # test "$_lt_disable_FC" != yes + +AC_LANG_POP +])# _LT_LANG_FC_CONFIG + + +# _LT_LANG_GCJ_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Java Compiler compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_GCJ_CONFIG], +[AC_REQUIRE([LT_PROG_GCJ])dnl +AC_LANG_SAVE + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +lt_save_GCC=$GCC +GCC=yes +CC=${GCJ-"gcj"} +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)="$LD" +_LT_CC_BASENAME([$compiler]) + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds + +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC="$lt_save_CC" +])# _LT_LANG_GCJ_CONFIG + + +# _LT_LANG_RC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for the Windows resource compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_RC_CONFIG], +[AC_REQUIRE([LT_PROG_RC])dnl +AC_LANG_SAVE + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +lt_save_GCC=$GCC +GCC= +CC=${RC-"windres"} +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) +_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + +if test -n "$compiler"; then + : + _LT_CONFIG($1) +fi + +GCC=$lt_save_GCC +AC_LANG_RESTORE +CC="$lt_save_CC" +])# _LT_LANG_RC_CONFIG + + +# LT_PROG_GCJ +# ----------- +AC_DEFUN([LT_PROG_GCJ], +[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], + [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], + [AC_CHECK_TOOL(GCJ, gcj,) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS)])])[]dnl +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_GCJ], []) + + +# LT_PROG_RC +# ---------- +AC_DEFUN([LT_PROG_RC], +[AC_CHECK_TOOL(RC, windres,) +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_RC], []) + + +# _LT_DECL_EGREP +# -------------- +# If we don't have a new enough Autoconf to choose the best grep +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_EGREP], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_REQUIRE([AC_PROG_FGREP])dnl +test -z "$GREP" && GREP=grep +_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) +_LT_DECL([], [EGREP], [1], [An ERE matcher]) +_LT_DECL([], [FGREP], [1], [A literal string matcher]) +dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too +AC_SUBST([GREP]) +]) + + +# _LT_DECL_OBJDUMP +# -------------- +# If we don't have a new enough Autoconf to choose the best objdump +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_OBJDUMP], +[AC_CHECK_TOOL(OBJDUMP, objdump, false) +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) +AC_SUBST([OBJDUMP]) +]) + + +# _LT_DECL_SED +# ------------ +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +m4_defun([_LT_DECL_SED], +[AC_PROG_SED +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" +_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) +_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], + [Sed that helps us avoid accidentally triggering echo(1) options like -n]) +])# _LT_DECL_SED + +m4_ifndef([AC_PROG_SED], [ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # + +m4_defun([AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_SUBST([SED]) +AC_MSG_RESULT([$SED]) +])#AC_PROG_SED +])#m4_ifndef + +# Old name: +AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_SED], []) + + +# _LT_CHECK_SHELL_FEATURES +# ------------------------ +# Find out whether the shell is Bourne or XSI compatible, +# or has some other useful features. +m4_defun([_LT_CHECK_SHELL_FEATURES], +[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) +# Try some XSI features +xsi_shell=no +( _lt_dummy="a/b/c" + test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,, \ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ + && xsi_shell=yes +AC_MSG_RESULT([$xsi_shell]) +_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) + +AC_MSG_CHECKING([whether the shell understands "+="]) +lt_shell_append=no +( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ + >/dev/null 2>&1 \ + && lt_shell_append=yes +AC_MSG_RESULT([$lt_shell_append]) +_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi +_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac +_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl +_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl +])# _LT_CHECK_SHELL_FEATURES + + +# _LT_PROG_XSI_SHELLFNS +# --------------------- +# Bourne and XSI compatible variants of some useful shell functions. +m4_defun([_LT_PROG_XSI_SHELLFNS], +[case $xsi_shell in + yes) + cat << \_LT_EOF >> "$cfgfile" + +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac +} + +# func_basename file +func_basename () +{ + func_basename_result="${1##*/}" +} + +# func_dirname_and_basename file append nondir_replacement +# perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# Implementation must be kept synchronized with func_dirname +# and func_basename. For efficiency, we do not delegate to +# those functions but instead duplicate the functionality here. +func_dirname_and_basename () +{ + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac + func_basename_result="${1##*/}" +} + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +func_stripname () +{ + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary parameter first. + func_stripname_result=${3} + func_stripname_result=${func_stripname_result#"${1}"} + func_stripname_result=${func_stripname_result%"${2}"} +} + +# func_opt_split +func_opt_split () +{ + func_opt_split_opt=${1%%=*} + func_opt_split_arg=${1#*=} +} + +# func_lo2o object +func_lo2o () +{ + case ${1} in + *.lo) func_lo2o_result=${1%.lo}.${objext} ;; + *) func_lo2o_result=${1} ;; + esac +} + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=${1%.*}.lo +} + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=$(( $[*] )) +} + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=${#1} +} + +_LT_EOF + ;; + *) # Bourne compatible functions. + cat << \_LT_EOF >> "$cfgfile" + +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + # Extract subdirectory from the argument. + func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi +} + +# func_basename file +func_basename () +{ + func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` +} + +dnl func_dirname_and_basename +dnl A portable version of this function is already defined in general.m4sh +dnl so there is no need for it here. + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# func_strip_suffix prefix name +func_stripname () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "X${3}" \ + | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "X${3}" \ + | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; + esac +} + +# sed scripts: +my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q' +my_sed_long_arg='1s/^-[[^=]]*=//' + +# func_opt_split +func_opt_split () +{ + func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` + func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` +} + +# func_lo2o object +func_lo2o () +{ + func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` +} + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'` +} + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=`expr "$[@]"` +} + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len` +} + +_LT_EOF +esac + +case $lt_shell_append in + yes) + cat << \_LT_EOF >> "$cfgfile" + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "$[1]+=\$[2]" +} +_LT_EOF + ;; + *) + cat << \_LT_EOF >> "$cfgfile" + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "$[1]=\$$[1]\$[2]" +} + +_LT_EOF + ;; + esac +]) + +# lock.m4 serial 7 (gettext-0.17) +dnl Copyright (C) 2005-2007 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +dnl Tests for a multithreading library to be used. +dnl Defines at most one of the macros USE_POSIX_THREADS, USE_SOLARIS_THREADS, +dnl USE_PTH_THREADS, USE_WIN32_THREADS +dnl Sets the variables LIBTHREAD and LTLIBTHREAD to the linker options for use +dnl in a Makefile (LIBTHREAD for use without libtool, LTLIBTHREAD for use with +dnl libtool). +dnl Sets the variables LIBMULTITHREAD and LTLIBMULTITHREAD similarly, for +dnl programs that really need multithread functionality. The difference +dnl between LIBTHREAD and LIBMULTITHREAD is that on platforms supporting weak +dnl symbols, typically LIBTHREAD="" whereas LIBMULTITHREAD="-lpthread". +dnl Adds to CPPFLAGS the flag -D_REENTRANT or -D_THREAD_SAFE if needed for +dnl multithread-safe programs. + +AC_DEFUN([gl_LOCK_EARLY], +[ + AC_REQUIRE([gl_LOCK_EARLY_BODY]) +]) + +dnl The guts of gl_LOCK_EARLY. Needs to be expanded only once. + +AC_DEFUN([gl_LOCK_EARLY_BODY], +[ + dnl Ordering constraints: This macro modifies CPPFLAGS in a way that + dnl influences the result of the autoconf tests that test for *_unlocked + dnl declarations, on AIX 5 at least. Therefore it must come early. + AC_BEFORE([$0], [gl_FUNC_GLIBC_UNLOCKED_IO])dnl + AC_BEFORE([$0], [gl_ARGP])dnl + + AC_REQUIRE([AC_CANONICAL_HOST]) + dnl _GNU_SOURCE is needed for pthread_rwlock_t on glibc systems. + dnl AC_USE_SYSTEM_EXTENSIONS was introduced in autoconf 2.60 and obsoletes + dnl AC_GNU_SOURCE. + m4_ifdef([AC_USE_SYSTEM_EXTENSIONS], + [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])], + [AC_REQUIRE([AC_GNU_SOURCE])]) + dnl Check for multithreading. + AC_ARG_ENABLE(threads, +AC_HELP_STRING([--enable-threads={posix|solaris|pth|win32}], [specify multithreading API]) +AC_HELP_STRING([--disable-threads], [build without multithread safety]), + [gl_use_threads=$enableval], + [case "$host_os" in + dnl Disable multithreading by default on OSF/1, because it interferes + dnl with fork()/exec(): When msgexec is linked with -lpthread, its child + dnl process gets an endless segmentation fault inside execvp(). + osf*) gl_use_threads=no ;; + *) gl_use_threads=yes ;; + esac + ]) + if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then + # For using <pthread.h>: + case "$host_os" in + osf*) + # On OSF/1, the compiler needs the flag -D_REENTRANT so that it + # groks <pthread.h>. cc also understands the flag -pthread, but + # we don't use it because 1. gcc-2.95 doesn't understand -pthread, + # 2. putting a flag into CPPFLAGS that has an effect on the linker + # causes the AC_TRY_LINK test below to succeed unexpectedly, + # leading to wrong values of LIBTHREAD and LTLIBTHREAD. + CPPFLAGS="$CPPFLAGS -D_REENTRANT" + ;; + esac + # Some systems optimize for single-threaded programs by default, and + # need special flags to disable these optimizations. For example, the + # definition of 'errno' in <errno.h>. + case "$host_os" in + aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;; + solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;; + esac + fi +]) + +dnl The guts of gl_LOCK. Needs to be expanded only once. + +AC_DEFUN([gl_LOCK_BODY], +[ + AC_REQUIRE([gl_LOCK_EARLY_BODY]) + gl_threads_api=none + LIBTHREAD= + LTLIBTHREAD= + LIBMULTITHREAD= + LTLIBMULTITHREAD= + if test "$gl_use_threads" != no; then + dnl Check whether the compiler and linker support weak declarations. + AC_MSG_CHECKING([whether imported symbols can be declared weak]) + gl_have_weak=no + AC_TRY_LINK([extern void xyzzy (); +#pragma weak xyzzy], [xyzzy();], [gl_have_weak=yes]) + AC_MSG_RESULT([$gl_have_weak]) + if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then + # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that + # it groks <pthread.h>. It's added above, in gl_LOCK_EARLY_BODY. + AC_CHECK_HEADER(pthread.h, gl_have_pthread_h=yes, gl_have_pthread_h=no) + if test "$gl_have_pthread_h" = yes; then + # Other possible tests: + # -lpthreads (FSU threads, PCthreads) + # -lgthreads + gl_have_pthread= + # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist + # in libc. IRIX 6.5 has the first one in both libc and libpthread, but + # the second one only in libpthread, and lock.c needs it. + AC_TRY_LINK([#include <pthread.h>], + [pthread_mutex_lock((pthread_mutex_t*)0); + pthread_mutexattr_init((pthread_mutexattr_t*)0);], + [gl_have_pthread=yes]) + # Test for libpthread by looking for pthread_kill. (Not pthread_self, + # since it is defined as a macro on OSF/1.) + if test -n "$gl_have_pthread"; then + # The program links fine without libpthread. But it may actually + # need to link with libpthread in order to create multiple threads. + AC_CHECK_LIB(pthread, pthread_kill, + [LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread + # On Solaris and HP-UX, most pthread functions exist also in libc. + # Therefore pthread_in_use() needs to actually try to create a + # thread: pthread_create from libc will fail, whereas + # pthread_create will actually create a thread. + case "$host_os" in + solaris* | hpux*) + AC_DEFINE([PTHREAD_IN_USE_DETECTION_HARD], 1, + [Define if the pthread_in_use() detection is hard.]) + esac + ]) + else + # Some library is needed. Try libpthread and libc_r. + AC_CHECK_LIB(pthread, pthread_kill, + [gl_have_pthread=yes + LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread + LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread]) + if test -z "$gl_have_pthread"; then + # For FreeBSD 4. + AC_CHECK_LIB(c_r, pthread_kill, + [gl_have_pthread=yes + LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r + LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r]) + fi + fi + if test -n "$gl_have_pthread"; then + gl_threads_api=posix + AC_DEFINE([USE_POSIX_THREADS], 1, + [Define if the POSIX multithreading library can be used.]) + if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then + if test $gl_have_weak = yes; then + AC_DEFINE([USE_POSIX_THREADS_WEAK], 1, + [Define if references to the POSIX multithreading library should be made weak.]) + LIBTHREAD= + LTLIBTHREAD= + fi + fi + # OSF/1 4.0 and MacOS X 10.1 lack the pthread_rwlock_t type and the + # pthread_rwlock_* functions. + AC_CHECK_TYPE([pthread_rwlock_t], + [AC_DEFINE([HAVE_PTHREAD_RWLOCK], 1, + [Define if the POSIX multithreading library has read/write locks.])], + [], + [#include <pthread.h>]) + # glibc defines PTHREAD_MUTEX_RECURSIVE as enum, not as a macro. + AC_TRY_COMPILE([#include <pthread.h>], + [#if __FreeBSD__ == 4 +error "No, in FreeBSD 4.0 recursive mutexes actually don't work." +#else +int x = (int)PTHREAD_MUTEX_RECURSIVE; +return !x; +#endif], + [AC_DEFINE([HAVE_PTHREAD_MUTEX_RECURSIVE], 1, + [Define if the <pthread.h> defines PTHREAD_MUTEX_RECURSIVE.])]) + fi + fi + fi + if test -z "$gl_have_pthread"; then + if test "$gl_use_threads" = yes || test "$gl_use_threads" = solaris; then + gl_have_solaristhread= + gl_save_LIBS="$LIBS" + LIBS="$LIBS -lthread" + AC_TRY_LINK([#include <thread.h> +#include <synch.h>], + [thr_self();], + [gl_have_solaristhread=yes]) + LIBS="$gl_save_LIBS" + if test -n "$gl_have_solaristhread"; then + gl_threads_api=solaris + LIBTHREAD=-lthread + LTLIBTHREAD=-lthread + LIBMULTITHREAD="$LIBTHREAD" + LTLIBMULTITHREAD="$LTLIBTHREAD" + AC_DEFINE([USE_SOLARIS_THREADS], 1, + [Define if the old Solaris multithreading library can be used.]) + if test $gl_have_weak = yes; then + AC_DEFINE([USE_SOLARIS_THREADS_WEAK], 1, + [Define if references to the old Solaris multithreading library should be made weak.]) + LIBTHREAD= + LTLIBTHREAD= + fi + fi + fi + fi + if test "$gl_use_threads" = pth; then + gl_save_CPPFLAGS="$CPPFLAGS" + AC_LIB_LINKFLAGS(pth) + gl_have_pth= + gl_save_LIBS="$LIBS" + LIBS="$LIBS -lpth" + AC_TRY_LINK([#include <pth.h>], [pth_self();], gl_have_pth=yes) + LIBS="$gl_save_LIBS" + if test -n "$gl_have_pth"; then + gl_threads_api=pth + LIBTHREAD="$LIBPTH" + LTLIBTHREAD="$LTLIBPTH" + LIBMULTITHREAD="$LIBTHREAD" + LTLIBMULTITHREAD="$LTLIBTHREAD" + AC_DEFINE([USE_PTH_THREADS], 1, + [Define if the GNU Pth multithreading library can be used.]) + if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then + if test $gl_have_weak = yes; then + AC_DEFINE([USE_PTH_THREADS_WEAK], 1, + [Define if references to the GNU Pth multithreading library should be made weak.]) + LIBTHREAD= + LTLIBTHREAD= + fi + fi + else + CPPFLAGS="$gl_save_CPPFLAGS" + fi + fi + if test -z "$gl_have_pthread"; then + if test "$gl_use_threads" = yes || test "$gl_use_threads" = win32; then + if { case "$host_os" in + mingw*) true;; + *) false;; + esac + }; then + gl_threads_api=win32 + AC_DEFINE([USE_WIN32_THREADS], 1, + [Define if the Win32 multithreading API can be used.]) + fi + fi + fi + fi + AC_MSG_CHECKING([for multithread API to use]) + AC_MSG_RESULT([$gl_threads_api]) + AC_SUBST(LIBTHREAD) + AC_SUBST(LTLIBTHREAD) + AC_SUBST(LIBMULTITHREAD) + AC_SUBST(LTLIBMULTITHREAD) +]) + +AC_DEFUN([gl_LOCK], +[ + AC_REQUIRE([gl_LOCK_EARLY]) + AC_REQUIRE([gl_LOCK_BODY]) + gl_PREREQ_LOCK +]) + +# Prerequisites of lib/lock.c. +AC_DEFUN([gl_PREREQ_LOCK], [ + AC_REQUIRE([AC_C_INLINE]) +]) + +dnl Survey of platforms: +dnl +dnl Platform Available Compiler Supports test-lock +dnl flavours option weak result +dnl --------------- --------- --------- -------- --------- +dnl Linux 2.4/glibc posix -lpthread Y OK +dnl +dnl GNU Hurd/glibc posix +dnl +dnl FreeBSD 5.3 posix -lc_r Y +dnl posix -lkse ? Y +dnl posix -lpthread ? Y +dnl posix -lthr Y +dnl +dnl FreeBSD 5.2 posix -lc_r Y +dnl posix -lkse Y +dnl posix -lthr Y +dnl +dnl FreeBSD 4.0,4.10 posix -lc_r Y OK +dnl +dnl NetBSD 1.6 -- +dnl +dnl OpenBSD 3.4 posix -lpthread Y OK +dnl +dnl MacOS X 10.[123] posix -lpthread Y OK +dnl +dnl Solaris 7,8,9 posix -lpthread Y Sol 7,8: 0.0; Sol 9: OK +dnl solaris -lthread Y Sol 7,8: 0.0; Sol 9: OK +dnl +dnl HP-UX 11 posix -lpthread N (cc) OK +dnl Y (gcc) +dnl +dnl IRIX 6.5 posix -lpthread Y 0.5 +dnl +dnl AIX 4.3,5.1 posix -lpthread N AIX 4: 0.5; AIX 5: OK +dnl +dnl OSF/1 4.0,5.1 posix -pthread (cc) N OK +dnl -lpthread (gcc) Y +dnl +dnl Cygwin posix -lpthread Y OK +dnl +dnl Any of the above pth -lpth 0.0 +dnl +dnl Mingw win32 N OK +dnl +dnl BeOS 5 -- +dnl +dnl The test-lock result shows what happens if in test-lock.c EXPLICIT_YIELD is +dnl turned off: +dnl OK if all three tests terminate OK, +dnl 0.5 if the first test terminates OK but the second one loops endlessly, +dnl 0.0 if the first test already loops endlessly. + +# longlong.m4 serial 13 +dnl Copyright (C) 1999-2007 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Paul Eggert. + +# Define HAVE_LONG_LONG_INT if 'long long int' works. +# This fixes a bug in Autoconf 2.61, but can be removed once we +# assume 2.62 everywhere. + +# Note: If the type 'long long int' exists but is only 32 bits large +# (as on some very old compilers), HAVE_LONG_LONG_INT will not be +# defined. In this case you can treat 'long long int' like 'long int'. + +AC_DEFUN([AC_TYPE_LONG_LONG_INT], +[ + AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int], + [AC_LINK_IFELSE( + [_AC_TYPE_LONG_LONG_SNIPPET], + [dnl This catches a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004. + dnl If cross compiling, assume the bug isn't important, since + dnl nobody cross compiles for this platform as far as we know. + AC_RUN_IFELSE( + [AC_LANG_PROGRAM( + [[@%:@include <limits.h> + @%:@ifndef LLONG_MAX + @%:@ define HALF \ + (1LL << (sizeof (long long int) * CHAR_BIT - 2)) + @%:@ define LLONG_MAX (HALF - 1 + HALF) + @%:@endif]], + [[long long int n = 1; + int i; + for (i = 0; ; i++) + { + long long int m = n << i; + if (m >> i != n) + return 1; + if (LLONG_MAX / 2 < m) + break; + } + return 0;]])], + [ac_cv_type_long_long_int=yes], + [ac_cv_type_long_long_int=no], + [ac_cv_type_long_long_int=yes])], + [ac_cv_type_long_long_int=no])]) + if test $ac_cv_type_long_long_int = yes; then + AC_DEFINE([HAVE_LONG_LONG_INT], 1, + [Define to 1 if the system has the type `long long int'.]) + fi +]) + +# Define HAVE_UNSIGNED_LONG_LONG_INT if 'unsigned long long int' works. +# This fixes a bug in Autoconf 2.61, but can be removed once we +# assume 2.62 everywhere. + +# Note: If the type 'unsigned long long int' exists but is only 32 bits +# large (as on some very old compilers), AC_TYPE_UNSIGNED_LONG_LONG_INT +# will not be defined. In this case you can treat 'unsigned long long int' +# like 'unsigned long int'. + +AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT], +[ + AC_CACHE_CHECK([for unsigned long long int], + [ac_cv_type_unsigned_long_long_int], + [AC_LINK_IFELSE( + [_AC_TYPE_LONG_LONG_SNIPPET], + [ac_cv_type_unsigned_long_long_int=yes], + [ac_cv_type_unsigned_long_long_int=no])]) + if test $ac_cv_type_unsigned_long_long_int = yes; then + AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], 1, + [Define to 1 if the system has the type `unsigned long long int'.]) + fi +]) + +# Expands to a C program that can be used to test for simultaneous support +# of 'long long' and 'unsigned long long'. We don't want to say that +# 'long long' is available if 'unsigned long long' is not, or vice versa, +# because too many programs rely on the symmetry between signed and unsigned +# integer types (excluding 'bool'). +AC_DEFUN([_AC_TYPE_LONG_LONG_SNIPPET], +[ + AC_LANG_PROGRAM( + [[/* Test preprocessor. */ + #if ! (-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + error in preprocessor; + #endif + #if ! (18446744073709551615ULL <= -1ull) + error in preprocessor; + #endif + /* Test literals. */ + long long int ll = 9223372036854775807ll; + long long int nll = -9223372036854775807LL; + unsigned long long int ull = 18446744073709551615ULL; + /* Test constant expressions. */ + typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + ? 1 : -1)]; + typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 + ? 1 : -1)]; + int i = 63;]], + [[/* Test availability of runtime routines for shift and division. */ + long long int llmax = 9223372036854775807ll; + unsigned long long int ullmax = 18446744073709551615ull; + return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) + | (llmax / ll) | (llmax % ll) + | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) + | (ullmax / ull) | (ullmax % ull));]]) +]) + +# Helper functions for option handling. -*- Autoconf -*- +# +# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 6 ltoptions.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) + + +# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) +# ------------------------------------------ +m4_define([_LT_MANGLE_OPTION], +[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) + + +# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) +# --------------------------------------- +# Set option OPTION-NAME for macro MACRO-NAME, and if there is a +# matching handler defined, dispatch to it. Other OPTION-NAMEs are +# saved as a flag. +m4_define([_LT_SET_OPTION], +[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl +m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), + _LT_MANGLE_DEFUN([$1], [$2]), + [m4_warning([Unknown $1 option `$2'])])[]dnl +]) + + +# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) +# ------------------------------------------------------------ +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +m4_define([_LT_IF_OPTION], +[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) + + +# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) +# ------------------------------------------------------- +# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME +# are set. +m4_define([_LT_UNLESS_OPTIONS], +[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), + [m4_define([$0_found])])])[]dnl +m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 +])[]dnl +]) + + +# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) +# ---------------------------------------- +# OPTION-LIST is a space-separated list of Libtool options associated +# with MACRO-NAME. If any OPTION has a matching handler declared with +# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about +# the unknown option and exit. +m4_defun([_LT_SET_OPTIONS], +[# Set options +m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [_LT_SET_OPTION([$1], _LT_Option)]) + +m4_if([$1],[LT_INIT],[ + dnl + dnl Simply set some default values (i.e off) if boolean options were not + dnl specified: + _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no + ]) + _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no + ]) + dnl + dnl If no reference was made to various pairs of opposing options, then + dnl we run the default mode handler for the pair. For example, if neither + dnl `shared' nor `disable-shared' was passed, we enable building of shared + dnl archives by default: + _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) + _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], + [_LT_ENABLE_FAST_INSTALL]) + ]) +])# _LT_SET_OPTIONS + + + +# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) +# ----------------------------------------- +m4_define([_LT_MANGLE_DEFUN], +[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) + + +# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) +# ----------------------------------------------- +m4_define([LT_OPTION_DEFINE], +[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl +])# LT_OPTION_DEFINE + + +# dlopen +# ------ +LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes +]) + +AU_DEFUN([AC_LIBTOOL_DLOPEN], +[_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `dlopen' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) + + +# win32-dll +# --------- +# Declare package support for building win32 dll's. +LT_OPTION_DEFINE([LT_INIT], [win32-dll], +[enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; +esac + +test -z "$AS" && AS=as +_LT_DECL([], [AS], [0], [Assembler program])dnl + +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl + +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl +])# win32-dll + +AU_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `win32-dll' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) + + +# _LT_ENABLE_SHARED([DEFAULT]) +# ---------------------------- +# implement the --enable-shared flag, and supports the `shared' and +# `disable-shared' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_SHARED], +[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([shared], + [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) + + _LT_DECL([build_libtool_libs], [enable_shared], [0], + [Whether or not to build shared libraries]) +])# _LT_ENABLE_SHARED + +LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) +]) + +AC_DEFUN([AC_DISABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], [disable-shared]) +]) + +AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_SHARED], []) +dnl AC_DEFUN([AM_DISABLE_SHARED], []) + + + +# _LT_ENABLE_STATIC([DEFAULT]) +# ---------------------------- +# implement the --enable-static flag, and support the `static' and +# `disable-static' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_STATIC], +[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([static], + [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_static=]_LT_ENABLE_STATIC_DEFAULT) + + _LT_DECL([build_old_libs], [enable_static], [0], + [Whether or not to build static libraries]) +])# _LT_ENABLE_STATIC + +LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) +]) + +AC_DEFUN([AC_DISABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], [disable-static]) +]) + +AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_STATIC], []) +dnl AC_DEFUN([AM_DISABLE_STATIC], []) + + + +# _LT_ENABLE_FAST_INSTALL([DEFAULT]) +# ---------------------------------- +# implement the --enable-fast-install flag, and support the `fast-install' +# and `disable-fast-install' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_FAST_INSTALL], +[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([fast-install], + [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) + +_LT_DECL([fast_install], [enable_fast_install], [0], + [Whether or not to optimize for fast installation])dnl +])# _LT_ENABLE_FAST_INSTALL + +LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) + +# Old names: +AU_DEFUN([AC_ENABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `fast-install' option into LT_INIT's first parameter.]) +]) + +AU_DEFUN([AC_DISABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `disable-fast-install' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) +dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) + + +# _LT_WITH_PIC([MODE]) +# -------------------- +# implement the --with-pic flag, and support the `pic-only' and `no-pic' +# LT_INIT options. +# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +m4_define([_LT_WITH_PIC], +[AC_ARG_WITH([pic], + [AS_HELP_STRING([--with-pic], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [pic_mode="$withval"], + [pic_mode=default]) + +test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) + +_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl +])# _LT_WITH_PIC + +LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) + +# Old name: +AU_DEFUN([AC_LIBTOOL_PICMODE], +[_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `pic-only' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) + + +m4_define([_LTDL_MODE], []) +LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], + [m4_define([_LTDL_MODE], [nonrecursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [recursive], + [m4_define([_LTDL_MODE], [recursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [subproject], + [m4_define([_LTDL_MODE], [subproject])]) + +m4_define([_LTDL_TYPE], []) +LT_OPTION_DEFINE([LTDL_INIT], [installable], + [m4_define([_LTDL_TYPE], [installable])]) +LT_OPTION_DEFINE([LTDL_INIT], [convenience], + [m4_define([_LTDL_TYPE], [convenience])]) + +# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 6 ltsugar.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) + + +# lt_join(SEP, ARG1, [ARG2...]) +# ----------------------------- +# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their +# associated separator. +# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier +# versions in m4sugar had bugs. +m4_define([lt_join], +[m4_if([$#], [1], [], + [$#], [2], [[$2]], + [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) +m4_define([_lt_join], +[m4_if([$#$2], [2], [], + [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) + + +# lt_car(LIST) +# lt_cdr(LIST) +# ------------ +# Manipulate m4 lists. +# These macros are necessary as long as will still need to support +# Autoconf-2.59 which quotes differently. +m4_define([lt_car], [[$1]]) +m4_define([lt_cdr], +[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], + [$#], 1, [], + [m4_dquote(m4_shift($@))])]) +m4_define([lt_unquote], $1) + + +# lt_append(MACRO-NAME, STRING, [SEPARATOR]) +# ------------------------------------------ +# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. +# Note that neither SEPARATOR nor STRING are expanded; they are appended +# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). +# No SEPARATOR is output if MACRO-NAME was previously undefined (different +# than defined and empty). +# +# This macro is needed until we can rely on Autoconf 2.62, since earlier +# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. +m4_define([lt_append], +[m4_define([$1], + m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) + + + +# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) +# ---------------------------------------------------------- +# Produce a SEP delimited list of all paired combinations of elements of +# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list +# has the form PREFIXmINFIXSUFFIXn. +# Needed until we can rely on m4_combine added in Autoconf 2.62. +m4_define([lt_combine], +[m4_if(m4_eval([$# > 3]), [1], + [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl +[[m4_foreach([_Lt_prefix], [$2], + [m4_foreach([_Lt_suffix], + ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, + [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) + + +# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) +# ----------------------------------------------------------------------- +# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited +# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. +m4_define([lt_if_append_uniq], +[m4_ifdef([$1], + [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], + [lt_append([$1], [$2], [$3])$4], + [$5])], + [lt_append([$1], [$2], [$3])$4])]) + + +# lt_dict_add(DICT, KEY, VALUE) +# ----------------------------- +m4_define([lt_dict_add], +[m4_define([$1($2)], [$3])]) + + +# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) +# -------------------------------------------- +m4_define([lt_dict_add_subkey], +[m4_define([$1($2:$3)], [$4])]) + + +# lt_dict_fetch(DICT, KEY, [SUBKEY]) +# ---------------------------------- +m4_define([lt_dict_fetch], +[m4_ifval([$3], + m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), + m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) + + +# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) +# ----------------------------------------------------------------- +m4_define([lt_if_dict_fetch], +[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], + [$5], + [$6])]) + + +# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) +# -------------------------------------------------------------- +m4_define([lt_dict_filter], +[m4_if([$5], [], [], + [lt_join(m4_quote(m4_default([$4], [[, ]])), + lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), + [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl +]) + +# ltversion.m4 -- version numbers -*- Autoconf -*- +# +# Copyright (C) 2004 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# Generated from ltversion.in. + +# serial 3017 ltversion.m4 +# This file is part of GNU Libtool + +m4_define([LT_PACKAGE_VERSION], [2.2.6b]) +m4_define([LT_PACKAGE_REVISION], [1.3017]) + +AC_DEFUN([LTVERSION_VERSION], +[macro_version='2.2.6b' +macro_revision='1.3017' +_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) +_LT_DECL(, macro_revision, 0) +]) + +# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004. +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 4 lt~obsolete.m4 + +# These exist entirely to fool aclocal when bootstrapping libtool. +# +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) +# which have later been changed to m4_define as they aren't part of the +# exported API, or moved to Autoconf or Automake where they belong. +# +# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN +# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us +# using a macro with the same name in our local m4/libtool.m4 it'll +# pull the old libtool.m4 in (it doesn't see our shiny new m4_define +# and doesn't know about Autoconf macros at all.) +# +# So we provide this file, which has a silly filename so it's always +# included after everything else. This provides aclocal with the +# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything +# because those macros already exist, or will be overwritten later. +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# +# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. +# Yes, that means every name once taken will need to remain here until +# we give up compatibility with versions before 1.7, at which point +# we need to keep only those names which we still refer to. + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) + +m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) +m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) +m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) +m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) +m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) +m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) +m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) +m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) +m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) +m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) +m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) +m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) +m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) +m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) +m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) +m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) +m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) +m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) +m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) +m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) +m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) +m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) +m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) +m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) +m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) +m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) +m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) +m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) +m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) +m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) +m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) +m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) +m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) +m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) +m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) +m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) +m4_ifndef([AC_LIBTOOL_RC], [AC_DEFUN([AC_LIBTOOL_RC])]) +m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) +m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) +m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) +m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) +m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) +m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) +m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) +m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) + +# nls.m4 serial 3 (gettext-0.15) +dnl Copyright (C) 1995-2003, 2005-2006 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000. +dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003. + +AC_PREREQ(2.50) + +AC_DEFUN([AM_NLS], +[ + AC_MSG_CHECKING([whether NLS is requested]) + dnl Default is enabled NLS + AC_ARG_ENABLE(nls, + [ --disable-nls do not use Native Language Support], + USE_NLS=$enableval, USE_NLS=yes) + AC_MSG_RESULT($USE_NLS) + AC_SUBST(USE_NLS) +]) + +# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +# +# Copyright © 2004 Scott James Remnant <scott@netsplit.com>. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program 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 +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# PKG_PROG_PKG_CONFIG([MIN-VERSION]) +# ---------------------------------- +AC_DEFUN([PKG_PROG_PKG_CONFIG], +[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4_pattern_allow([^PKG_CONFIG(_PATH)?$]) +AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=m4_default([$1], [0.9.0]) + AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + PKG_CONFIG="" + fi + +fi[]dnl +])# PKG_PROG_PKG_CONFIG + +# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# +# Check to see whether a particular set of modules exists. Similar +# to PKG_CHECK_MODULES(), but does not set variables or print errors. +# +# +# Similar to PKG_CHECK_MODULES, make sure that the first instance of +# this or PKG_CHECK_MODULES is called, or make sure to call +# PKG_CHECK_EXISTS manually +# -------------------------------------------------------------- +AC_DEFUN([PKG_CHECK_EXISTS], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +if test -n "$PKG_CONFIG" && \ + AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then + m4_ifval([$2], [$2], [:]) +m4_ifvaln([$3], [else + $3])dnl +fi]) + + +# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +# --------------------------------------------- +m4_define([_PKG_CONFIG], +[if test -n "$$1"; then + pkg_cv_[]$1="$$1" + elif test -n "$PKG_CONFIG"; then + PKG_CHECK_EXISTS([$3], + [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`], + [pkg_failed=yes]) + else + pkg_failed=untried +fi[]dnl +])# _PKG_CONFIG + +# _PKG_SHORT_ERRORS_SUPPORTED +# ----------------------------- +AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi[]dnl +])# _PKG_SHORT_ERRORS_SUPPORTED + + +# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +# [ACTION-IF-NOT-FOUND]) +# +# +# Note that if there is a possibility the first call to +# PKG_CHECK_MODULES might not happen, you should be sure to include an +# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac +# +# +# -------------------------------------------------------------- +AC_DEFUN([PKG_CHECK_MODULES], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl +AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl + +pkg_failed=no +AC_MSG_CHECKING([for $1]) + +_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) +_PKG_CONFIG([$1][_LIBS], [libs], [$2]) + +m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS +and $1[]_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details.]) + +if test $pkg_failed = yes; then + _PKG_SHORT_ERRORS_SUPPORTED + if test $_pkg_short_errors_supported = yes; then + $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1` + else + $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$2" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD + + ifelse([$4], , [AC_MSG_ERROR(dnl +[Package requirements ($2) were not met: + +$$1_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +_PKG_TEXT +])], + [AC_MSG_RESULT([no]) + $4]) +elif test $pkg_failed = untried; then + ifelse([$4], , [AC_MSG_FAILURE(dnl +[The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +_PKG_TEXT + +To get pkg-config, see <http://pkg-config.freedesktop.org/>.])], + [$4]) +else + $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS + $1[]_LIBS=$pkg_cv_[]$1[]_LIBS + AC_MSG_RESULT([yes]) + ifelse([$3], , :, [$3]) +fi[]dnl +])# PKG_CHECK_MODULES + +# po.m4 serial 15 (gettext-0.17) +dnl Copyright (C) 1995-2007 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000. +dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003. + +AC_PREREQ(2.50) + +dnl Checks for all prerequisites of the po subdirectory. +AC_DEFUN([AM_PO_SUBDIRS], +[ + AC_REQUIRE([AC_PROG_MAKE_SET])dnl + AC_REQUIRE([AC_PROG_INSTALL])dnl + AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake + AC_REQUIRE([AM_NLS])dnl + + dnl Release version of the gettext macros. This is used to ensure that + dnl the gettext macros and po/Makefile.in.in are in sync. + AC_SUBST([GETTEXT_MACRO_VERSION], [0.17]) + + dnl Perform the following tests also if --disable-nls has been given, + dnl because they are needed for "make dist" to work. + + dnl Search for GNU msgfmt in the PATH. + dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. + dnl The second test excludes FreeBSD msgfmt. + AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, + [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && + (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], + :) + AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) + + dnl Test whether it is GNU msgfmt >= 0.15. +changequote(,)dnl + case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; + *) MSGFMT_015=$MSGFMT ;; + esac +changequote([,])dnl + AC_SUBST([MSGFMT_015]) +changequote(,)dnl + case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; + *) GMSGFMT_015=$GMSGFMT ;; + esac +changequote([,])dnl + AC_SUBST([GMSGFMT_015]) + + dnl Search for GNU xgettext 0.12 or newer in the PATH. + dnl The first test excludes Solaris xgettext and early GNU xgettext versions. + dnl The second test excludes FreeBSD xgettext. + AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, + [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], + :) + dnl Remove leftover from FreeBSD xgettext call. + rm -f messages.po + + dnl Test whether it is GNU xgettext >= 0.15. +changequote(,)dnl + case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; + *) XGETTEXT_015=$XGETTEXT ;; + esac +changequote([,])dnl + AC_SUBST([XGETTEXT_015]) + + dnl Search for GNU msgmerge 0.11 or newer in the PATH. + AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, + [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) + + dnl Installation directories. + dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we + dnl have to define it here, so that it can be used in po/Makefile. + test -n "$localedir" || localedir='${datadir}/locale' + AC_SUBST([localedir]) + + dnl Support for AM_XGETTEXT_OPTION. + test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= + AC_SUBST([XGETTEXT_EXTRA_OPTIONS]) + + AC_CONFIG_COMMANDS([po-directories], [[ + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + # Treat a directory as a PO directory if and only if it has a + # POTFILES.in file. This allows packages to have multiple PO + # directories under different names or in different locations. + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assigment from automake < 1.5. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + # Hide the ALL_LINGUAS assigment from automake < 1.5. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done]], + [# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # from automake < 1.5. + eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + ]) +]) + +dnl Postprocesses a Makefile in a directory containing PO files. +AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], +[ + # When this code is run, in config.status, two variables have already been + # set: + # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, + # - LINGUAS is the value of the environment variable LINGUAS at configure + # time. + +changequote(,)dnl + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + # Find a way to echo strings without interpreting backslash. + if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then + gt_echo='echo' + else + if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then + gt_echo='printf %s\n' + else + echo_func () { + cat <<EOT +$* +EOT + } + gt_echo='echo_func' + fi + fi + + # A sed script that extracts the value of VARIABLE from a Makefile. + sed_x_variable=' +# Test if the hold space is empty. +x +s/P/P/ +x +ta +# Yes it was empty. Look if we have the expected variable definition. +/^[ ]*VARIABLE[ ]*=/{ + # Seen the first line of the variable definition. + s/^[ ]*VARIABLE[ ]*=// + ba +} +bd +:a +# Here we are processing a line from the variable definition. +# Remove comment, more precisely replace it with a space. +s/#.*$/ / +# See if the line ends in a backslash. +tb +:b +s/\\$// +# Print the line, without the trailing backslash. +p +tc +# There was no trailing backslash. The end of the variable definition is +# reached. Clear the hold space. +s/^.*$// +x +bd +:c +# A trailing backslash means that the variable definition continues in the +# next line. Put a nonempty string into the hold space to indicate this. +s/^.*$/P/ +x +:d +' +changequote([,])dnl + + # Set POTFILES to the value of the Makefile variable POTFILES. + sed_x_POTFILES=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/POTFILES/g'` + POTFILES=`sed -n -e "$sed_x_POTFILES" < "$ac_file"` + # Compute POTFILES_DEPS as + # $(foreach file, $(POTFILES), $(top_srcdir)/$(file)) + POTFILES_DEPS= + for file in $POTFILES; do + POTFILES_DEPS="$POTFILES_DEPS "'$(top_srcdir)/'"$file" + done + POMAKEFILEDEPS="" + + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # Set ALL_LINGUAS to the value of the Makefile variable LINGUAS. + sed_x_LINGUAS=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/LINGUAS/g'` + ALL_LINGUAS_=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"` + fi + # Hide the ALL_LINGUAS assigment from automake < 1.5. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + # Compute PROPERTIESFILES + # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).properties) + # Compute CLASSFILES + # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).class) + # Compute QMFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).qm) + # Compute MSGFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang)).msg) + # Compute RESOURCESDLLFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang))/$(DOMAIN).resources.dll) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + PROPERTIESFILES= + CLASSFILES= + QMFILES= + MSGFILES= + RESOURCESDLLFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + PROPERTIESFILES="$PROPERTIESFILES \$(top_srcdir)/\$(DOMAIN)_$lang.properties" + CLASSFILES="$CLASSFILES \$(top_srcdir)/\$(DOMAIN)_$lang.class" + QMFILES="$QMFILES $srcdirpre$lang.qm" + frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` + MSGFILES="$MSGFILES $srcdirpre$frobbedlang.msg" + frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` + RESOURCESDLLFILES="$RESOURCESDLLFILES $srcdirpre$frobbedlang/\$(DOMAIN).resources.dll" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + JAVACATALOGS= + QTCATALOGS= + TCLCATALOGS= + CSHARPCATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + JAVACATALOGS="$JAVACATALOGS \$(DOMAIN)_$lang.properties" + QTCATALOGS="$QTCATALOGS $lang.qm" + frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` + TCLCATALOGS="$TCLCATALOGS $frobbedlang.msg" + frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` + CSHARPCATALOGS="$CSHARPCATALOGS $frobbedlang/\$(DOMAIN).resources.dll" + done + fi + + sed -e "s|@POTFILES_DEPS@|$POTFILES_DEPS|g" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@PROPERTIESFILES@|$PROPERTIESFILES|g" -e "s|@CLASSFILES@|$CLASSFILES|g" -e "s|@QMFILES@|$QMFILES|g" -e "s|@MSGFILES@|$MSGFILES|g" -e "s|@RESOURCESDLLFILES@|$RESOURCESDLLFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@JAVACATALOGS@|$JAVACATALOGS|g" -e "s|@QTCATALOGS@|$QTCATALOGS|g" -e "s|@TCLCATALOGS@|$TCLCATALOGS|g" -e "s|@CSHARPCATALOGS@|$CSHARPCATALOGS|g" -e 's,^#distdir:,distdir:,' < "$ac_file" > "$ac_file.tmp" + if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then + # Add dependencies that cannot be formulated as a simple suffix rule. + for lang in $ALL_LINGUAS; do + frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` + cat >> "$ac_file.tmp" <<EOF +$frobbedlang.msg: $lang.po + @echo "\$(MSGFMT) -c --tcl -d \$(srcdir) -l $lang $srcdirpre$lang.po"; \ + \$(MSGFMT) -c --tcl -d "\$(srcdir)" -l $lang $srcdirpre$lang.po || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; } +EOF + done + fi + if grep -l '@CSHARPCATALOGS@' "$ac_file" > /dev/null; then + # Add dependencies that cannot be formulated as a simple suffix rule. + for lang in $ALL_LINGUAS; do + frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` + cat >> "$ac_file.tmp" <<EOF +$frobbedlang/\$(DOMAIN).resources.dll: $lang.po + @echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \ + \$(MSGFMT) -c --csharp -d "\$(srcdir)" -l $lang $srcdirpre$lang.po -r "\$(DOMAIN)" || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; } +EOF + done + fi + if test -n "$POMAKEFILEDEPS"; then + cat >> "$ac_file.tmp" <<EOF +Makefile: $POMAKEFILEDEPS +EOF + fi + mv "$ac_file.tmp" "$ac_file" +]) + +dnl Initializes the accumulator used by AM_XGETTEXT_OPTION. +AC_DEFUN([AM_XGETTEXT_OPTION_INIT], +[ + XGETTEXT_EXTRA_OPTIONS= +]) + +dnl Registers an option to be passed to xgettext in the po subdirectory. +AC_DEFUN([AM_XGETTEXT_OPTION], +[ + AC_REQUIRE([AM_XGETTEXT_OPTION_INIT]) + XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS $1" +]) + +# printf-posix.m4 serial 3 (gettext-0.17) +dnl Copyright (C) 2003, 2007 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. +dnl Test whether the printf() function supports POSIX/XSI format strings with +dnl positions. + +AC_DEFUN([gt_PRINTF_POSIX], +[ + AC_REQUIRE([AC_PROG_CC]) + AC_CACHE_CHECK([whether printf() supports POSIX/XSI format strings], + gt_cv_func_printf_posix, + [ + AC_TRY_RUN([ +#include <stdio.h> +#include <string.h> +/* The string "%2$d %1$d", with dollar characters protected from the shell's + dollar expansion (possibly an autoconf bug). */ +static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' }; +static char buf[100]; +int main () +{ + sprintf (buf, format, 33, 55); + return (strcmp (buf, "55 33") != 0); +}], gt_cv_func_printf_posix=yes, gt_cv_func_printf_posix=no, + [ + AC_EGREP_CPP(notposix, [ +#if defined __NetBSD__ || defined __BEOS__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__ + notposix +#endif + ], gt_cv_func_printf_posix="guessing no", + gt_cv_func_printf_posix="guessing yes") + ]) + ]) + case $gt_cv_func_printf_posix in + *yes) + AC_DEFINE(HAVE_POSIX_PRINTF, 1, + [Define if your printf() function supports format strings with positions.]) + ;; + esac +]) + +# progtest.m4 serial 4 (gettext-0.14.2) +dnl Copyright (C) 1996-2003, 2005 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper <drepper@cygnus.com>, 1996. + +AC_PREREQ(2.50) + +# Search path for a program which passes the given test. + +dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, +dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) +AC_DEFUN([AM_PATH_PROG_WITH_TEST], +[ +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "$2", so it can be a program name with args. +set dummy $2; ac_word=[$]2 +AC_MSG_CHECKING([for $ac_word]) +AC_CACHE_VAL(ac_cv_path_$1, +[case "[$]$1" in + [[\\/]]* | ?:[[\\/]]*) + ac_cv_path_$1="[$]$1" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in ifelse([$5], , $PATH, [$5]); do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD + if [$3]; then + ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" +dnl If no 4th arg is given, leave the cache variable unset, +dnl so AC_PATH_PROGS will keep looking. +ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" +])dnl + ;; +esac])dnl +$1="$ac_cv_path_$1" +if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then + AC_MSG_RESULT([$]$1) +else + AC_MSG_RESULT(no) +fi +AC_SUBST($1)dnl +]) + +# size_max.m4 serial 6 +dnl Copyright (C) 2003, 2005-2006 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_DEFUN([gl_SIZE_MAX], +[ + AC_CHECK_HEADERS(stdint.h) + dnl First test whether the system already has SIZE_MAX. + AC_MSG_CHECKING([for SIZE_MAX]) + AC_CACHE_VAL([gl_cv_size_max], [ + gl_cv_size_max= + AC_EGREP_CPP([Found it], [ +#include <limits.h> +#if HAVE_STDINT_H +#include <stdint.h> +#endif +#ifdef SIZE_MAX +Found it +#endif +], gl_cv_size_max=yes) + if test -z "$gl_cv_size_max"; then + dnl Define it ourselves. Here we assume that the type 'size_t' is not wider + dnl than the type 'unsigned long'. Try hard to find a definition that can + dnl be used in a preprocessor #if, i.e. doesn't contain a cast. + AC_COMPUTE_INT([size_t_bits_minus_1], [sizeof (size_t) * CHAR_BIT - 1], + [#include <stddef.h> +#include <limits.h>], size_t_bits_minus_1=) + AC_COMPUTE_INT([fits_in_uint], [sizeof (size_t) <= sizeof (unsigned int)], + [#include <stddef.h>], fits_in_uint=) + if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then + if test $fits_in_uint = 1; then + dnl Even though SIZE_MAX fits in an unsigned int, it must be of type + dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'. + AC_TRY_COMPILE([#include <stddef.h> + extern size_t foo; + extern unsigned long foo; + ], [], fits_in_uint=0) + fi + dnl We cannot use 'expr' to simplify this expression, because 'expr' + dnl works only with 'long' integers in the host environment, while we + dnl might be cross-compiling from a 32-bit platform to a 64-bit platform. + if test $fits_in_uint = 1; then + gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)" + else + gl_cv_size_max="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)" + fi + else + dnl Shouldn't happen, but who knows... + gl_cv_size_max='((size_t)~(size_t)0)' + fi + fi + ]) + AC_MSG_RESULT([$gl_cv_size_max]) + if test "$gl_cv_size_max" != yes; then + AC_DEFINE_UNQUOTED([SIZE_MAX], [$gl_cv_size_max], + [Define as the maximum value of type 'size_t', if the system doesn't define it.]) + fi +]) + +dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in. +dnl Remove this when we can assume autoconf >= 2.61. +m4_ifdef([AC_COMPUTE_INT], [], [ + AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])]) +]) + +# stdint_h.m4 serial 6 +dnl Copyright (C) 1997-2004, 2006 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Paul Eggert. + +# Define HAVE_STDINT_H_WITH_UINTMAX if <stdint.h> exists, +# doesn't clash with <sys/types.h>, and declares uintmax_t. + +AC_DEFUN([gl_AC_HEADER_STDINT_H], +[ + AC_CACHE_CHECK([for stdint.h], gl_cv_header_stdint_h, + [AC_TRY_COMPILE( + [#include <sys/types.h> +#include <stdint.h>], + [uintmax_t i = (uintmax_t) -1; return !i;], + gl_cv_header_stdint_h=yes, + gl_cv_header_stdint_h=no)]) + if test $gl_cv_header_stdint_h = yes; then + AC_DEFINE_UNQUOTED(HAVE_STDINT_H_WITH_UINTMAX, 1, + [Define if <stdint.h> exists, doesn't clash with <sys/types.h>, + and declares uintmax_t. ]) + fi +]) + +# uintmax_t.m4 serial 10 +dnl Copyright (C) 1997-2004, 2007 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Paul Eggert. + +AC_PREREQ(2.13) + +# Define uintmax_t to 'unsigned long' or 'unsigned long long' +# if it is not already defined in <stdint.h> or <inttypes.h>. + +AC_DEFUN([gl_AC_TYPE_UINTMAX_T], +[ + AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) + AC_REQUIRE([gl_AC_HEADER_STDINT_H]) + if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then + AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT]) + test $ac_cv_type_unsigned_long_long_int = yes \ + && ac_type='unsigned long long' \ + || ac_type='unsigned long' + AC_DEFINE_UNQUOTED(uintmax_t, $ac_type, + [Define to unsigned long or unsigned long long + if <stdint.h> and <inttypes.h> don't define.]) + else + AC_DEFINE(HAVE_UINTMAX_T, 1, + [Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>.]) + fi +]) + +# visibility.m4 serial 1 (gettext-0.15) +dnl Copyright (C) 2005 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +dnl Tests whether the compiler supports the command-line option +dnl -fvisibility=hidden and the function and variable attributes +dnl __attribute__((__visibility__("hidden"))) and +dnl __attribute__((__visibility__("default"))). +dnl Does *not* test for __visibility__("protected") - which has tricky +dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on +dnl MacOS X. +dnl Does *not* test for __visibility__("internal") - which has processor +dnl dependent semantics. +dnl Does *not* test for #pragma GCC visibility push(hidden) - which is +dnl "really only recommended for legacy code". +dnl Set the variable CFLAG_VISIBILITY. +dnl Defines and sets the variable HAVE_VISIBILITY. + +AC_DEFUN([gl_VISIBILITY], +[ + AC_REQUIRE([AC_PROG_CC]) + CFLAG_VISIBILITY= + HAVE_VISIBILITY=0 + if test -n "$GCC"; then + AC_MSG_CHECKING([for simple visibility declarations]) + AC_CACHE_VAL(gl_cv_cc_visibility, [ + gl_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fvisibility=hidden" + AC_TRY_COMPILE( + [extern __attribute__((__visibility__("hidden"))) int hiddenvar; + extern __attribute__((__visibility__("default"))) int exportedvar; + extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void); + extern __attribute__((__visibility__("default"))) int exportedfunc (void);], + [], + gl_cv_cc_visibility=yes, + gl_cv_cc_visibility=no) + CFLAGS="$gl_save_CFLAGS"]) + AC_MSG_RESULT([$gl_cv_cc_visibility]) + if test $gl_cv_cc_visibility = yes; then + CFLAG_VISIBILITY="-fvisibility=hidden" + HAVE_VISIBILITY=1 + fi + fi + AC_SUBST([CFLAG_VISIBILITY]) + AC_SUBST([HAVE_VISIBILITY]) + AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY], + [Define to 1 or 0, depending whether the compiler supports simple visibility declarations.]) +]) + +# wchar_t.m4 serial 1 (gettext-0.12) +dnl Copyright (C) 2002-2003 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. +dnl Test whether <stddef.h> has the 'wchar_t' type. +dnl Prerequisite: AC_PROG_CC + +AC_DEFUN([gt_TYPE_WCHAR_T], +[ + AC_CACHE_CHECK([for wchar_t], gt_cv_c_wchar_t, + [AC_TRY_COMPILE([#include <stddef.h> + wchar_t foo = (wchar_t)'\0';], , + gt_cv_c_wchar_t=yes, gt_cv_c_wchar_t=no)]) + if test $gt_cv_c_wchar_t = yes; then + AC_DEFINE(HAVE_WCHAR_T, 1, [Define if you have the 'wchar_t' type.]) + fi +]) + +# wint_t.m4 serial 2 (gettext-0.17) +dnl Copyright (C) 2003, 2007 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. +dnl Test whether <wchar.h> has the 'wint_t' type. +dnl Prerequisite: AC_PROG_CC + +AC_DEFUN([gt_TYPE_WINT_T], +[ + AC_CACHE_CHECK([for wint_t], gt_cv_c_wint_t, + [AC_TRY_COMPILE([ +/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before + <wchar.h>. + BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included + before <wchar.h>. */ +#include <stddef.h> +#include <stdio.h> +#include <time.h> +#include <wchar.h> + wint_t foo = (wchar_t)'\0';], , + gt_cv_c_wint_t=yes, gt_cv_c_wint_t=no)]) + if test $gt_cv_c_wint_t = yes; then + AC_DEFINE(HAVE_WINT_T, 1, [Define if you have the 'wint_t' type.]) + fi +]) + +# xsize.m4 serial 3 +dnl Copyright (C) 2003-2004 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +AC_DEFUN([gl_XSIZE], +[ + dnl Prerequisites of lib/xsize.h. + AC_REQUIRE([gl_SIZE_MAX]) + AC_REQUIRE([AC_C_INLINE]) + AC_CHECK_HEADERS(stdint.h) +]) + +# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.11' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.11.1], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.11.1])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) + +# Figure out how to run the assembler. -*- Autoconf -*- + +# Copyright (C) 2001, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 5 + +# AM_PROG_AS +# ---------- +AC_DEFUN([AM_PROG_AS], +[# By default we simply use the C compiler to build assembly code. +AC_REQUIRE([AC_PROG_CC]) +test "${CCAS+set}" = set || CCAS=$CC +test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS +AC_ARG_VAR([CCAS], [assembler compiler command (defaults to CC)]) +AC_ARG_VAR([CCASFLAGS], [assembler compiler flags (defaults to CFLAGS)]) +_AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl +]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to +# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is `.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[dnl Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50])dnl +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 9 + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ(2.52)dnl + ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 10 + +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "GCJ", or "OBJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +ifelse([$1], CC, [depcc="$CC" am_compiler_list=], + [$1], CXX, [depcc="$CXX" am_compiler_list=], + [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], UPC, [depcc="$UPC" am_compiler_list=], + [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvisualcpp | msvcmsys) + # This compiler won't grok `-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +#serial 5 + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[{ + # Autoconf 2.62 quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each `.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006, 2008, 2009 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 16 + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.62])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) + AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +AM_MISSING_PROG(AUTOCONF, autoconf) +AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +AM_MISSING_PROG(AUTOHEADER, autoheader) +AM_MISSING_PROG(MAKEINFO, makeinfo) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AM_PROG_MKDIR_P])dnl +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_CC], + defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_CXX], + defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES(OBJC)], + [define([AC_PROG_OBJC], + defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl +]) +_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl +dnl The `parallel-tests' driver may need to know about EXEEXT, so add the +dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro +dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl +]) + +dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST(install_sh)]) + +# Copyright (C) 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- +# From Jim Meyering + +# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 5 + +# AM_MAINTAINER_MODE([DEFAULT-MODE]) +# ---------------------------------- +# Control maintainer-specific portions of Makefiles. +# Default is to disable them, unless `enable' is passed literally. +# For symmetry, `disable' may be passed as well. Anyway, the user +# can override the default with the --enable/--disable switch. +AC_DEFUN([AM_MAINTAINER_MODE], +[m4_case(m4_default([$1], [disable]), + [enable], [m4_define([am_maintainer_other], [disable])], + [disable], [m4_define([am_maintainer_other], [enable])], + [m4_define([am_maintainer_other], [enable]) + m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) +AC_MSG_CHECKING([whether to am_maintainer_other maintainer-specific portions of Makefiles]) + dnl maintainer-mode's default is 'disable' unless 'enable' is passed + AC_ARG_ENABLE([maintainer-mode], +[ --][am_maintainer_other][-maintainer-mode am_maintainer_other make rules and dependencies not useful + (and sometimes confusing) to the casual installer], + [USE_MAINTAINER_MODE=$enableval], + [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) + AC_MSG_RESULT([$USE_MAINTAINER_MODE]) + AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) + MAINT=$MAINTAINER_MODE_TRUE + AC_SUBST([MAINT])dnl +] +) + +AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from `make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 6 + +# AM_PROG_CC_C_O +# -------------- +# Like AC_PROG_CC_C_O, but changed for automake. +AC_DEFUN([AM_PROG_CC_C_O], +[AC_REQUIRE([AC_PROG_CC_C_O])dnl +AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +# FIXME: we rely on the cache variable name because +# there is no other way. +set dummy $CC +am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']` +eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o +if test "$am_t" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +dnl Make sure AC_PROG_CC is never called again, or it will override our +dnl setting of CC. +m4_define([AC_PROG_CC], + [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])]) +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 6 + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it supports --run. +# If it does, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + AC_MSG_WARN([`missing' script is too old or missing]) +fi +]) + +# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_MKDIR_P +# --------------- +# Check for `mkdir -p'. +AC_DEFUN([AM_PROG_MKDIR_P], +[AC_PREREQ([2.60])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, +dnl while keeping a definition of mkdir_p for backward compatibility. +dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. +dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of +dnl Makefile.ins that do not define MKDIR_P, so we do our own +dnl adjustment using top_builddir (which is defined more often than +dnl MKDIR_P). +AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl +case $mkdir_p in + [[\\/$]]* | ?:[[\\/]]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# ------------------------------ +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) + +# _AM_SET_OPTIONS(OPTIONS) +# ---------------------------------- +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 5 + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftest.file +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; +esac + +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + rm -f conftest.file + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT(yes)]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor `install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in `make install-strip', and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006, 2008 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of `v7', `ustar', or `pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. +AM_MISSING_PROG([AMTAR], [tar]) +m4_if([$1], [v7], + [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], + [m4_case([$1], [ustar],, [pax],, + [m4_fatal([Unknown tar format])]) +AC_MSG_CHECKING([how to create a $1 tar archive]) +# Loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' +_am_tools=${am_cv_prog_tar_$1-$_am_tools} +# Do not fold the above two line into one, because Tru64 sh and +# Solaris sh will not grok spaces in the rhs of `-'. +for _am_tool in $_am_tools +do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; + do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar <conftest.tar]) + grep GrepMe conftest.dir/file >/dev/null 2>&1 && break + fi +done +rm -rf conftest.dir + +AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) +AC_MSG_RESULT([$am_cv_prog_tar_$1])]) +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + +m4_include([acinclude.m4]) diff --git a/xchat-2.8.8/autogen.sh b/xchat-2.8.8/autogen.sh new file mode 100755 index 0000000..4f69c07 --- /dev/null +++ b/xchat-2.8.8/autogen.sh @@ -0,0 +1,113 @@ +#!/bin/bash +have_automake=false + +if automake --version < /dev/null > /dev/null 2>&1 ; then + automake_version=`automake --version | grep 'automake (GNU automake)' | sed 's/^[^0-9]*\(.*\)/\1/'` + case $automake_version in + 1.2*|1.3*|1.4|1.4*|1.5*|1.6*|1.7*|1.8*) + ;; + *) + have_automake=true + ;; + esac +fi +if $have_automake ; then + AUTOMAKE="automake" + ACLOCAL="aclocal" +else + if automake-1.9 --version < /dev/null > /dev/null 2>&1 ; then + AUTOMAKE="automake-1.9" + ACLOCAL="aclocal-1.9" + else + echo "automake missing or too old. This requires atleast automake 1.9" + exit 1 + fi +fi + +# ------ START GETTEXT ------ + +echo searching for GNU gettext intl directory... + +dirs="/usr/share /usr/local/share /opt/share /usr /usr/local /opt /usr/gnu/share /opt/local /opt/local/share" +found=0 +for try in $dirs; do + echo -n " -> $try/gettext/intl... " + if test -d $try/gettext/intl; then + echo found it + found=1 + break + fi + echo no +done +if test "$found" != 1; then + echo ERROR: Cannot find gettext/intl directory. + echo ERROR: Install GNU gettext in /usr or /usr/local prefix. + exit 7 +fi; + +echo copying gettext intl files... +if test -f $try/gettext/mkinstalldirs; then + ln -s $try/gettext/mkinstalldirs mkinstalldirs +fi +intldir="$try/gettext/intl" +if test ! -d intl; then + mkdir intl +fi +olddir=`pwd` +cd $intldir +for file in *; do + if test $file != COPYING.LIB-2.0 && test $file != COPYING.LIB-2.1; then + rm -f $olddir/intl/$file + cp $intldir/$file $olddir/intl/ + fi +done +cp -f $try/gettext/po/Makefile.in.in $olddir/po/ +cd $olddir +if test -f intl/plural.c; then + sleep 2 + touch intl/plural.c +fi + +# ------ END GETTEXT ------ + + +echo running $ACLOCAL... +$ACLOCAL $ACLOCAL_FLAGS +if test "$?" != "0"; then + echo aclocal failed, stopping. + exit 2 +fi +echo running libtoolize... +libtoolize --force +if test "$?" != "0"; then + echo libtoolize failed, stopping. + exit 3 +fi +echo running autoheader... +autoheader +if test "$?" != "0"; then + echo autoheader failed, stopping. + exit 4 +fi +echo running $AUTOMAKE... +$AUTOMAKE -a --foreign +if test "$?" != "0"; then + echo automake failed, stopping. + exit 5 +fi +echo running autoconf... +autoconf +if test "$?" != "0"; then + echo autoconf failed, stopping. + exit 6 +fi + +echo if no errors occured, run ./configure --enable-maintainer-mode +exit 0 + +#autogen.sh generates: +# aclocal.m4 Makefile.in config.guess config.sub ltmain.sh +# configure install-sh missing mkinstalldirs depcomp +# +#configure generates: +# config.status libtool Makefile.in diff --git a/xchat-2.8.8/buildAttemp1.txt b/xchat-2.8.8/buildAttemp1.txt new file mode 100644 index 0000000..133aa48 --- /dev/null +++ b/xchat-2.8.8/buildAttemp1.txt @@ -0,0 +1,581 @@ +jdaugherty@somejuan:~/work/pkgs/xchat/xchat-2.8.8$ ./configure +checking for a BSD-compatible install... /usr/bin/install -c +checking whether build environment is sane... yes +checking for a thread-safe mkdir -p... /bin/mkdir -p +checking for gawk... gawk +checking whether make sets $(MAKE)... yes +checking whether to enable maintainer-specific portions of Makefiles... no +checking for gcc... gcc +checking whether the C compiler works... yes +checking for C compiler default output file name... a.out +checking for suffix of executables... +checking whether we are cross compiling... no +checking for suffix of object files... o +checking whether we are using the GNU C compiler... yes +checking whether gcc accepts -g... yes +checking for gcc option to accept ISO C89... none needed +checking for style of include used by make... GNU +checking dependency style of gcc... gcc3 +checking whether gcc and cc understand -c and -o together... yes +checking how to run the C preprocessor... gcc -E +checking dependency style of gcc... gcc3 +checking build system type... x86_64-unknown-linux-gnu +checking host system type... x86_64-unknown-linux-gnu +checking for a sed that does not truncate output... /bin/sed +checking for grep that handles long lines and -e... /usr/local/bin/grep +checking for egrep... /usr/local/bin/grep -E +checking for fgrep... /usr/local/bin/grep -F +checking for ld used by gcc... /usr/bin/ld +checking if the linker (/usr/bin/ld) is GNU ld... yes +checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B +checking the name lister (/usr/bin/nm -B) interface... BSD nm +checking whether ln -s works... yes +checking the maximum length of command line arguments... 1879296 +checking whether the shell understands some XSI constructs... yes +checking whether the shell understands "+="... yes +checking for /usr/bin/ld option to reload object files... -r +checking for objdump... objdump +checking how to recognize dependent libraries... pass_all +checking for ar... ar +checking for strip... strip +checking for ranlib... ranlib +checking command to parse /usr/bin/nm -B output from gcc object... ok +checking for ANSI C header files... yes +checking for sys/types.h... yes +checking for sys/stat.h... yes +checking for stdlib.h... yes +checking for string.h... yes +checking for memory.h... yes +checking for strings.h... yes +checking for inttypes.h... yes +checking for stdint.h... yes +checking for unistd.h... yes +checking for dlfcn.h... yes +checking for objdir... .libs +checking if gcc supports -fno-rtti -fno-exceptions... no +checking for gcc option to produce PIC... -fPIC -DPIC +checking if gcc PIC flag -fPIC -DPIC works... yes +checking if gcc static flag -static works... yes +checking if gcc supports -c -o file.o... yes +checking if gcc supports -c -o file.o... (cached) yes +checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes +checking whether -lc should be explicitly linked in... no +checking dynamic linker characteristics... GNU/Linux ld.so +checking how to hardcode library paths into programs... immediate +checking whether stripping libraries is possible... yes +checking if libtool supports shared libraries... yes +checking whether to build shared libraries... yes +checking whether to build static libraries... no +checking whether NLS is requested... yes +checking for msgfmt... /usr/bin/msgfmt +checking for gmsgfmt... /usr/bin/msgfmt +checking for xgettext... /usr/bin/xgettext +checking for msgmerge... /usr/bin/msgmerge +checking whether we are using the GNU C Library 2 or newer... yes +checking for ranlib... (cached) ranlib +checking for simple visibility declarations... yes +checking for inline... inline +checking for size_t... yes +checking for stdint.h... yes +checking for working alloca.h... yes +checking for alloca... yes +checking for stdlib.h... (cached) yes +checking for unistd.h... (cached) yes +checking for sys/param.h... yes +checking for getpagesize... yes +checking for working mmap... yes +checking whether integer division by zero raises SIGFPE... yes +checking for inttypes.h... yes +checking for unsigned long long int... yes +checking for inttypes.h... (cached) yes +checking whether the inttypes.h PRIxNN macros are broken... no +checking minix/config.h usability... no +checking minix/config.h presence... no +checking for minix/config.h... no +checking whether it is safe to define __EXTENSIONS__... yes +checking for ld used by GCC... /usr/bin/ld -m elf_x86_64 +checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes +checking for shared library run path origin... done +checking whether imported symbols can be declared weak... yes +checking pthread.h usability... yes +checking pthread.h presence... yes +checking for pthread.h... yes +checking for pthread_kill in -lpthread... yes +checking for pthread_rwlock_t... yes +checking for multithread API to use... posix +checking argz.h usability... yes +checking argz.h presence... yes +checking for argz.h... yes +checking for inttypes.h... (cached) yes +checking limits.h usability... yes +checking limits.h presence... yes +checking for limits.h... yes +checking for unistd.h... (cached) yes +checking for sys/param.h... (cached) yes +checking for getcwd... yes +checking for getegid... yes +checking for geteuid... yes +checking for getgid... yes +checking for getuid... yes +checking for mempcpy... yes +checking for munmap... yes +checking for stpcpy... yes +checking for strcasecmp... yes +checking for strdup... yes +checking for strtoul... yes +checking for tsearch... yes +checking for argz_count... yes +checking for argz_stringify... yes +checking for argz_next... yes +checking for __fsetlocking... yes +checking whether feof_unlocked is declared... yes +checking whether fgets_unlocked is declared... yes +checking for iconv... yes +checking for working iconv... yes +checking how to link with libiconv... -liconv +checking for iconv declaration... install-shextern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +checking for NL_LOCALE_NAME macro... yes +checking for bison... bison +checking version of bison... 3.0.4, ok +checking for long long int... yes +checking for wchar_t... yes +checking for wint_t... yes +checking for intmax_t... yes +checking whether printf() supports POSIX/XSI format strings... yes +checking whether we are using the GNU C Library 2.1 or newer... yes +checking for stdint.h... (cached) yes +checking for SIZE_MAX... yes +checking for stdint.h... (cached) yes +checking for CFPreferencesCopyAppValue... no +checking for CFLocaleCopyCurrent... no +checking for ptrdiff_t... yes +checking stddef.h usability... yes +checking stddef.h presence... yes +checking for stddef.h... yes +checking for stdlib.h... (cached) yes +checking for string.h... (cached) yes +checking for asprintf... yes +checking for fwprintf... yes +checking for putenv... yes +checking for setenv... yes +checking for setlocale... yes +checking for snprintf... yes +checking for wcslen... yes +checking whether _snprintf is declared... no +checking whether _snwprintf is declared... no +checking whether getc_unlocked is declared... yes +checking for nl_langinfo and CODESET... yes +checking for LC_MESSAGES... yes +checking for CFPreferencesCopyAppValue... (cached) no +checking for CFLocaleCopyCurrent... (cached) no +checking whether included gettext is requested... no +checking for GNU gettext in libc... yes +checking whether to use NLS... yes +checking where the gettext function comes from... libc +checking for sed... /bin/sed +checking for uname... /bin/uname +checking system type... Linux +checking for pkg-config... /usr/bin/pkg-config +checking pkg-config is at least version 0.16... yes +checking for GLIB - version >= 2.0.3... yes (version 2.56.4) +checking for pkg-config... /usr/bin/pkg-config +checking for GTK+ - version >= 2.10.0... yes (version 2.24.32) +checking for gconftool-2... /usr/bin/gconftool-2 +checking for XSetWMHints in -lX11... yes +checking for perl... /usr/bin/perl +checking for Perl compile flags... ok +checking for perl >= 5.8.0... yes +checking if perl plugin will be backward compatible... yes +checking for python2... /usr/bin/python2 +checking Python version... 2.7 +checking Python compile flags... ok +checking for location of tclConfig.sh... /usr/lib/tclConfig.sh +checking for select... yes +checking for select in -lsocket... no +checking for pkg-config... /usr/bin/pkg-config +checking for openssl through pkg-config... yes +checking for dlopen... no +checking for dlopen in -ldl... yes +checking for pkg-config... (cached) /usr/bin/pkg-config +checking for DBUS... yes +checking for dbus-binding-tool... /usr/bin/dbus-binding-tool +checking for glib-genmarshal... /usr/bin/glib-genmarshal +checking for LIBSEXY... no +no +checking if gcc accepts -Wno-pointer-sign ... yes +checking if gcc accepts -funsigned-char ... yes +checking for modern sigaction... yes +checking for gdk-pixbuf-csource... /usr/bin/gdk-pixbuf-csource +checking for snprintf... (cached) yes +checking for vsnprintf... yes +checking for memrchr... yes +checking for strtoull... yes +checking for gethostbyname... yes +checking for gethostname... yes +checking for strings.h... (cached) yes +checking for socklen_t... yes +configure: creating ./config.status +config.status: creating Makefile +config.status: creating src/Makefile +config.status: creating src/common/Makefile +config.status: creating src/common/dbus/Makefile +config.status: creating src/fe-text/Makefile +config.status: creating src/fe-gtk/Makefile +config.status: creating src/pixmaps/Makefile +config.status: creating plugins/Makefile +config.status: creating plugins/python/Makefile +config.status: creating plugins/perl/Makefile +config.status: creating plugins/tcl/Makefile +config.status: creating intl/Makefile +config.status: creating po/Makefile.in +config.status: creating config.h +config.status: executing depfiles commands +config.status: executing libtool commands +config.status: executing po-directories commands +config.status: creating po/POTFILES +config.status: creating po/Makefile + +xchat 2.8.8 + +Building GTK+ Interface .... : yes +Building TEXT Interface .... : no + +PLUGINS: Perl: yes Python: yes TCL: yes + +mmx tinting ......... : no spelling .............. : static +XShm tinting ........ : no plugin interface ...... : yes +text backend ........ : pango nls/gettext ........... : yes +openssl support ..... : yes ipv6 support .......... : no +dbus support ........ : yes msproxy ntlm (ISA) .... : no + +The binary will be installed in /usr/local/bin + +configure complete, now type 'make' and pray. + +jdaugherty@somejuan:~/work/pkgs/xchat/xchat-2.8.8$ make +make all-recursive +make[1]: Entering directory '/NEWSPACE/work/pkgs/xchat/xchat-2.8.8' +Making all in po +make[2]: Entering directory '/NEWSPACE/work/pkgs/xchat/xchat-2.8.8/po' +test ! -f ./xchat.pot || \ + test -z "be.gmo ca.gmo cs.gmo de.gmo el.gmo es.gmo fi.gmo fr.gmo gl.gmo hu.gmo it.gmo ja.gmo kn.gmo ko.gmo lt.gmo mk.gmo nl.gmo pa.gmo pl.gmo pt.gmo ru.gmo sq.gmo sr.gmo sv.gmo th.gmo uk.gmo vi.gmo zh_CN.gmo zh_TW.gmo" || make be.gmo ca.gmo cs.gmo de.gmo el.gmo es.gmo fi.gmo fr.gmo gl.gmo hu.gmo it.gmo ja.gmo kn.gmo ko.gmo lt.gmo mk.gmo nl.gmo pa.gmo pl.gmo pt.gmo ru.gmo sq.gmo sr.gmo sv.gmo th.gmo uk.gmo vi.gmo zh_CN.gmo zh_TW.gmo +make[3]: Entering directory '/NEWSPACE/work/pkgs/xchat/xchat-2.8.8/po' +rm -f be.gmo && /usr/bin/msgfmt -c --statistics -o be.gmo be.po +be.po:5: warning: header field 'Language' missing in header +1163 translated messages, 47 fuzzy translations, 22 untranslated messages. +rm -f ca.gmo && /usr/bin/msgfmt -c --statistics -o ca.gmo ca.po +ca.po:11: warning: header field 'Language' missing in header +987 translated messages, 159 fuzzy translations, 86 untranslated messages. +rm -f cs.gmo && /usr/bin/msgfmt -c --statistics -o cs.gmo cs.po +cs.po:6: warning: header field 'Language' missing in header +1186 translated messages, 32 fuzzy translations, 14 untranslated messages. +rm -f de.gmo && /usr/bin/msgfmt -c --statistics -o de.gmo de.po +de.po:11: warning: header field 'Language' missing in header +1186 translated messages, 32 fuzzy translations, 14 untranslated messages. +rm -f el.gmo && /usr/bin/msgfmt -c --statistics -o el.gmo el.po +el.po:7: warning: header field 'Language' missing in header +1142 translated messages, 52 fuzzy translations, 38 untranslated messages. +rm -f es.gmo && /usr/bin/msgfmt -c --statistics -o es.gmo es.po +es.po:12: warning: header field 'Language' missing in header +1070 translated messages, 94 fuzzy translations, 68 untranslated messages. +rm -f fi.gmo && /usr/bin/msgfmt -c --statistics -o fi.gmo fi.po +fi.po:10: warning: header field 'Language' missing in header +1186 translated messages, 32 fuzzy translations, 14 untranslated messages. +rm -f fr.gmo && /usr/bin/msgfmt -c --statistics -o fr.gmo fr.po +fr.po:6: warning: header field 'Language' missing in header +1188 translated messages, 30 fuzzy translations, 14 untranslated messages. +rm -f gl.gmo && /usr/bin/msgfmt -c --statistics -o gl.gmo gl.po +gl.po:6: warning: header field 'Language' missing in header +1170 translated messages, 32 fuzzy translations, 30 untranslated messages. +rm -f hu.gmo && /usr/bin/msgfmt -c --statistics -o hu.gmo hu.po +hu.po:8: warning: header field 'Language' missing in header +1229 translated messages, 2 fuzzy translations, 1 untranslated message. +rm -f it.gmo && /usr/bin/msgfmt -c --statistics -o it.gmo it.po +it.po:6: warning: header field 'Language' missing in header +1111 translated messages, 67 fuzzy translations, 54 untranslated messages. +rm -f ja.gmo && /usr/bin/msgfmt -c --statistics -o ja.gmo ja.po +ja.po:10: warning: header field 'Language' missing in header +995 translated messages, 150 fuzzy translations, 87 untranslated messages. +rm -f kn.gmo && /usr/bin/msgfmt -c --statistics -o kn.gmo kn.po +kn.po:7: warning: header field 'Language' missing in header +1229 translated messages, 2 fuzzy translations, 1 untranslated message. +rm -f ko.gmo && /usr/bin/msgfmt -c --statistics -o ko.gmo ko.po +ko.po:2: warning: header field 'Language' missing in header +1228 translated messages, 2 fuzzy translations, 2 untranslated messages. +rm -f lt.gmo && /usr/bin/msgfmt -c --statistics -o lt.gmo lt.po +lt.po:11: warning: header field 'Language' missing in header +561 translated messages, 292 fuzzy translations, 379 untranslated messages. +rm -f mk.gmo && /usr/bin/msgfmt -c --statistics -o mk.gmo mk.po +mk.po:8: warning: header field 'Language' missing in header +1186 translated messages, 32 fuzzy translations, 14 untranslated messages. +rm -f nl.gmo && /usr/bin/msgfmt -c --statistics -o nl.gmo nl.po +nl.po:10: warning: header field 'Language' missing in header +1093 translated messages, 80 fuzzy translations, 59 untranslated messages. +rm -f pa.gmo && /usr/bin/msgfmt -c --statistics -o pa.gmo pa.po +pa.po:8: warning: header field 'Language' missing in header +1118 translated messages, 7 fuzzy translations, 107 untranslated messages. +rm -f pl.gmo && /usr/bin/msgfmt -c --statistics -o pl.gmo pl.po +pl.po:7: warning: header field 'Language' missing in header +1229 translated messages, 2 fuzzy translations, 1 untranslated message. +rm -f pt.gmo && /usr/bin/msgfmt -c --statistics -o pt.gmo pt.po +pt.po:6: warning: header field 'Language' missing in header +1043 translated messages, 100 fuzzy translations, 89 untranslated messages. +rm -f ru.gmo && /usr/bin/msgfmt -c --statistics -o ru.gmo ru.po +ru.po:11: warning: header field 'Language' missing in header +1229 translated messages, 2 fuzzy translations, 1 untranslated message. +rm -f sq.gmo && /usr/bin/msgfmt -c --statistics -o sq.gmo sq.po +sq.po:5: warning: header field 'Language' missing in header +1038 translated messages, 108 fuzzy translations, 86 untranslated messages. +rm -f sr.gmo && /usr/bin/msgfmt -c --statistics -o sr.gmo sr.po +sr.po:12: warning: header field 'Language' missing in header +1093 translated messages, 80 fuzzy translations, 59 untranslated messages. +rm -f sv.gmo && /usr/bin/msgfmt -c --statistics -o sv.gmo sv.po +sv.po:6: warning: header field 'Language' missing in header +1229 translated messages, 2 fuzzy translations, 1 untranslated message. +rm -f th.gmo && /usr/bin/msgfmt -c --statistics -o th.gmo th.po +th.po:7: warning: header field 'Language' missing in header +1017 translated messages, 32 fuzzy translations, 183 untranslated messages. +rm -f uk.gmo && /usr/bin/msgfmt -c --statistics -o uk.gmo uk.po +uk.po:10: warning: header field 'Language' missing in header +1229 translated messages, 2 fuzzy translations, 1 untranslated message. +rm -f vi.gmo && /usr/bin/msgfmt -c --statistics -o vi.gmo vi.po +vi.po:6: warning: header field 'Language' missing in header +1186 translated messages, 32 fuzzy translations, 14 untranslated messages. +rm -f zh_CN.gmo && /usr/bin/msgfmt -c --statistics -o zh_CN.gmo zh_CN.po +zh_CN.po:17: warning: header field 'Language' missing in header +1229 translated messages, 2 fuzzy translations, 1 untranslated message. +rm -f zh_TW.gmo && /usr/bin/msgfmt -c --statistics -o zh_TW.gmo zh_TW.po +zh_TW.po:14: warning: header field 'Language' missing in header +1092 translated messages, 80 fuzzy translations, 60 untranslated messages. +make[3]: Leaving directory '/NEWSPACE/work/pkgs/xchat/xchat-2.8.8/po' +touch stamp-po +make[2]: Leaving directory '/NEWSPACE/work/pkgs/xchat/xchat-2.8.8/po' +Making all in intl +make[2]: Entering directory '/NEWSPACE/work/pkgs/xchat/xchat-2.8.8/intl' +make[2]: Nothing to be done for 'all'. +make[2]: Leaving directory '/NEWSPACE/work/pkgs/xchat/xchat-2.8.8/intl' +Making all in src +make[2]: Entering directory '/NEWSPACE/work/pkgs/xchat/xchat-2.8.8/src' +Making all in pixmaps +make[3]: Entering directory '/NEWSPACE/work/pkgs/xchat/xchat-2.8.8/src/pixmaps' +/usr/bin/gdk-pixbuf-csource --raw --build-list traymsgpng ./message.png trayhilightpng ./highlight.png trayfilepng ./fileoffer.png bookpng ./book.png hoppng ./hop.png oppng ./op.png purplepng ./purple.png redpng ./red.png voicepng ./voice.png xchatpng ./../../xchat.png > ./inline_pngs.h +make[3]: Leaving directory '/NEWSPACE/work/pkgs/xchat/xchat-2.8.8/src/pixmaps' +Making all in common +make[3]: Entering directory '/NEWSPACE/work/pkgs/xchat/xchat-2.8.8/src/common' +Making all in dbus +make[4]: Entering directory '/NEWSPACE/work/pkgs/xchat/xchat-2.8.8/src/common/dbus' +/bin/bash ../../../libtool --mode=execute /usr/bin/glib-genmarshal --header --body marshallers.list > marshallers.h +WARNING: Using --header and --body at the same time is deprecated; use --body --prototypes instead +INFO: Reading marshallers.list... +/bin/bash ../../../libtool --mode=execute /usr/bin/dbus-binding-tool --prefix=remote_object --mode=glib-server --output=remote-object-glue.h remote-object.xml +WARNING: Using --header and --body at the same time is deprecated; use --body --prototypes instead +INFO: Reading /tmp/dbus-binding-tool-c-marshallers.JPDEU2... +WARNING: The token "NONE" is deprecated; use "VOID" instead +WARNING: The token "NONE" is deprecated; use "VOID" instead +make all-am +make[5]: Entering directory '/NEWSPACE/work/pkgs/xchat/xchat-2.8.8/src/common/dbus' +depbase=`echo dbus-plugin.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\ +gcc -DHAVE_CONFIG_H -I. -I../../.. -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -pthread -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -pthread -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -g -O2 -Wall -pipe -Wno-pointer-sign -funsigned-char -MT dbus-plugin.o -MD -MP -MF $depbase.Tpo -c -o dbus-plugin.o dbus-plugin.c &&\ +mv -f $depbase.Tpo $depbase.Po +depbase=`echo dbus-client.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\ +gcc -DHAVE_CONFIG_H -I. -I../../.. -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -pthread -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -pthread -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -g -O2 -Wall -pipe -Wno-pointer-sign -funsigned-char -MT dbus-client.o -MD -MP -MF $depbase.Tpo -c -o dbus-client.o dbus-client.c &&\ +mv -f $depbase.Tpo $depbase.Po +dbus-client.c: In function ‘xchat_remote’: +dbus-client.c:59:3: warning: ‘g_thread_init’ is deprecated [-Wdeprecated-declarations] + g_thread_init (NULL); + ^~~~~~~~~~~~~ +In file included from /usr/include/glib-2.0/glib.h:108, + from /usr/include/glib-2.0/gobject/gbinding.h:28, + from /usr/include/glib-2.0/glib-object.h:23, + from /usr/include/dbus-1.0/dbus/dbus-glib.h:27, + from dbus-client.c:22: +/usr/include/glib-2.0/glib/deprecated/gthread.h:265:10: note: declared here + void g_thread_init (gpointer vtable); + ^~~~~~~~~~~~~ +rm -f libxchatdbus.a +ar cru libxchatdbus.a dbus-plugin.o dbus-client.o +ar: `u' modifier ignored since `D' is the default (see `U') +ranlib libxchatdbus.a +depbase=`echo example.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\ +gcc -DHAVE_CONFIG_H -I. -I../../.. -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -pthread -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -pthread -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -g -O2 -Wall -pipe -Wno-pointer-sign -funsigned-char -MT example.o -MD -MP -MF $depbase.Tpo -c -o example.o example.c &&\ +mv -f $depbase.Tpo $depbase.Po +example.c: In function ‘main’: +example.c:105:2: warning: ‘g_type_init’ is deprecated [-Wdeprecated-declarations] + g_type_init (); + ^~~~~~~~~~~ +In file included from /usr/include/glib-2.0/gobject/gobject.h:24, + from /usr/include/glib-2.0/gobject/gbinding.h:29, + from /usr/include/glib-2.0/glib-object.h:23, + from /usr/include/dbus-1.0/dbus/dbus-glib.h:27, + from example.c:23: +/usr/include/glib-2.0/gobject/gtype.h:686:23: note: declared here + void g_type_init (void); + ^~~~~~~~~~~ +/bin/bash ../../../libtool --tag=CC --mode=link gcc -g -O2 -Wall -pipe -Wno-pointer-sign -funsigned-char -lgmodule-2.0 -o example example.o -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0 -lglib-2.0 -lX11 -lssl -lcrypto -ldl -Wl,--export-dynamic -pthread -lglib-2.0 +libtool: link: gcc -g -O2 -Wall -pipe -Wno-pointer-sign -funsigned-char -o example example.o -pthread -Wl,--export-dynamic -pthread -lgmodule-2.0 -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -lX11 -lssl -lcrypto -ldl -lglib-2.0 -pthread +make[5]: Leaving directory '/NEWSPACE/work/pkgs/xchat/xchat-2.8.8/src/common/dbus' +make[4]: Leaving directory '/NEWSPACE/work/pkgs/xchat/xchat-2.8.8/src/common/dbus' +Making all in . +make[4]: Entering directory '/NEWSPACE/work/pkgs/xchat/xchat-2.8.8/src/common' +depbase=`echo cfgfiles.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\ +gcc -DHAVE_CONFIG_H -I. -I../.. -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -pthread -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -g -O2 -Wall -pipe -Wno-pointer-sign -funsigned-char -MT cfgfiles.o -MD -MP -MF $depbase.Tpo -c -o cfgfiles.o cfgfiles.c &&\ +mv -f $depbase.Tpo $depbase.Po +In file included from xchat.h:3, + from cfgfiles.c:27: +/usr/include/glib-2.0/glib/gslist.h:29:2: error: #error "Only <glib.h> can be included directly." + #error "Only <glib.h> can be included directly." + ^~~~~ +In file included from /usr/include/glib-2.0/glib/gslist.h:32, + from xchat.h:3, + from cfgfiles.c:27: +/usr/include/glib-2.0/glib/gmem.h:29:2: error: #error "Only <glib.h> can be included directly." + #error "Only <glib.h> can be included directly." + ^~~~~ +In file included from /usr/include/glib-2.0/glib/gmem.h:32, + from /usr/include/glib-2.0/glib/gslist.h:32, + from xchat.h:3, + from cfgfiles.c:27: +/usr/include/glib-2.0/glib/gutils.h:29:2: error: #error "Only <glib.h> can be included directly." + #error "Only <glib.h> can be included directly." + ^~~~~ +In file included from /usr/include/glib-2.0/glib/gutils.h:32, + from /usr/include/glib-2.0/glib/gmem.h:32, + from /usr/include/glib-2.0/glib/gslist.h:32, + from xchat.h:3, + from cfgfiles.c:27: +/usr/include/glib-2.0/glib/gtypes.h:29:2: error: #error "Only <glib.h> can be included directly." + #error "Only <glib.h> can be included directly." + ^~~~~ +In file included from /usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h:9, + from /usr/include/glib-2.0/glib/gtypes.h:32, + from /usr/include/glib-2.0/glib/gutils.h:32, + from /usr/include/glib-2.0/glib/gmem.h:32, + from /usr/include/glib-2.0/glib/gslist.h:32, + from xchat.h:3, + from cfgfiles.c:27: +/usr/include/glib-2.0/glib/gmacros.h:33:2: error: #error "Only <glib.h> can be included directly." + #error "Only <glib.h> can be included directly." + ^~~~~ +In file included from /usr/include/glib-2.0/glib/gtypes.h:34, + from /usr/include/glib-2.0/glib/gutils.h:32, + from /usr/include/glib-2.0/glib/gmem.h:32, + from /usr/include/glib-2.0/glib/gslist.h:32, + from xchat.h:3, + from cfgfiles.c:27: +/usr/include/glib-2.0/glib/gversionmacros.h:29:2: error: #error "Only <glib.h> can be included directly." + #error "Only <glib.h> can be included directly." + ^~~~~ +In file included from /usr/include/glib-2.0/glib/gslist.h:33, + from xchat.h:3, + from cfgfiles.c:27: +/usr/include/glib-2.0/glib/gnode.h:29:2: error: #error "Only <glib.h> can be included directly." + #error "Only <glib.h> can be included directly." + ^~~~~ +In file included from xchat.h:4, + from cfgfiles.c:27: +/usr/include/glib-2.0/glib/glist.h:29:2: error: #error "Only <glib.h> can be included directly." + #error "Only <glib.h> can be included directly." + ^~~~~ +In file included from xchat.h:6, + from cfgfiles.c:27: +/usr/include/glib-2.0/glib/giochannel.h:29:2: error: #error "Only <glib.h> can be included directly." + #error "Only <glib.h> can be included directly." + ^~~~~ +In file included from /usr/include/glib-2.0/glib/giochannel.h:32, + from xchat.h:6, + from cfgfiles.c:27: +/usr/include/glib-2.0/glib/gconvert.h:29:2: error: #error "Only <glib.h> can be included directly." + #error "Only <glib.h> can be included directly." + ^~~~~ +In file included from /usr/include/glib-2.0/glib/gconvert.h:32, + from /usr/include/glib-2.0/glib/giochannel.h:32, + from xchat.h:6, + from cfgfiles.c:27: +/usr/include/glib-2.0/glib/gerror.h:23:2: error: #error "Only <glib.h> can be included directly." + #error "Only <glib.h> can be included directly." + ^~~~~ +In file included from /usr/include/glib-2.0/glib/gerror.h:28, + from /usr/include/glib-2.0/glib/gconvert.h:32, + from /usr/include/glib-2.0/glib/giochannel.h:32, + from xchat.h:6, + from cfgfiles.c:27: +/usr/include/glib-2.0/glib/gquark.h:29:2: error: #error "Only <glib.h> can be included directly." + #error "Only <glib.h> can be included directly." + ^~~~~ +In file included from /usr/include/glib-2.0/glib/giochannel.h:33, + from xchat.h:6, + from cfgfiles.c:27: +/usr/include/glib-2.0/glib/gmain.h:22:2: error: #error "Only <glib.h> can be included directly." + #error "Only <glib.h> can be included directly." + ^~~~~ +In file included from /usr/include/glib-2.0/glib/gmain.h:27, + from /usr/include/glib-2.0/glib/giochannel.h:33, + from xchat.h:6, + from cfgfiles.c:27: +/usr/include/glib-2.0/glib/gthread.h:29:2: error: #error "Only <glib.h> can be included directly." + #error "Only <glib.h> can be included directly." + ^~~~~ +In file included from /usr/include/glib-2.0/glib/gthread.h:32, + from /usr/include/glib-2.0/glib/gmain.h:27, + from /usr/include/glib-2.0/glib/giochannel.h:33, + from xchat.h:6, + from cfgfiles.c:27: +/usr/include/glib-2.0/glib/gatomic.h:24:2: error: #error "Only <glib.h> can be included directly." + #error "Only <glib.h> can be included directly." + ^~~~~ +In file included from /usr/include/glib-2.0/glib/giochannel.h:34, + from xchat.h:6, + from cfgfiles.c:27: +/usr/include/glib-2.0/glib/gstring.h:29:2: error: #error "Only <glib.h> can be included directly." + #error "Only <glib.h> can be included directly." + ^~~~~ +In file included from /usr/include/glib-2.0/glib/gstring.h:33, + from /usr/include/glib-2.0/glib/giochannel.h:34, + from xchat.h:6, + from cfgfiles.c:27: +/usr/include/glib-2.0/glib/gunicode.h:24:2: error: #error "Only <glib.h> can be included directly." + #error "Only <glib.h> can be included directly." + ^~~~~ +In file included from /usr/include/glib-2.0/glib/gstring.h:34, + from /usr/include/glib-2.0/glib/giochannel.h:34, + from xchat.h:6, + from cfgfiles.c:27: +/usr/include/glib-2.0/glib/gbytes.h:26:2: error: #error "Only <glib.h> can be included directly." + #error "Only <glib.h> can be included directly." + ^~~~~ +In file included from /usr/include/glib-2.0/glib/gbytes.h:30, + from /usr/include/glib-2.0/glib/gstring.h:34, + from /usr/include/glib-2.0/glib/giochannel.h:34, + from xchat.h:6, + from cfgfiles.c:27: +/usr/include/glib-2.0/glib/garray.h:29:2: error: #error "Only <glib.h> can be included directly." + #error "Only <glib.h> can be included directly." + ^~~~~ +In file included from xchat.h:7, + from cfgfiles.c:27: +/usr/include/glib-2.0/glib/gstrfuncs.h:29:2: error: #error "Only <glib.h> can be included directly." + #error "Only <glib.h> can be included directly." + ^~~~~ +In file included from cfgfiles.c:27: +xchat.h:565:41: error: missing binary operator before token "(" + #if defined(WIN32) && GLIB_CHECK_VERSION(2,4,0) + ^ +cfgfiles.c: In function ‘list_loadconf’: +cfgfiles.c:126:2: warning: ignoring return value of ‘read’, declared with attribute warn_unused_result [-Wunused-result] + read (fh, ibuf, st.st_size); + ^~~~~~~~~~~~~~~~~~~~~~~~~~~ +Makefile:445: recipe for target 'cfgfiles.o' failed +make[4]: *** [cfgfiles.o] Error 1 +make[4]: Leaving directory '/NEWSPACE/work/pkgs/xchat/xchat-2.8.8/src/common' +Makefile:481: recipe for target 'all-recursive' failed +make[3]: *** [all-recursive] Error 1 +make[3]: Leaving directory '/NEWSPACE/work/pkgs/xchat/xchat-2.8.8/src/common' +Makefile:342: recipe for target 'all-recursive' failed +make[2]: *** [all-recursive] Error 1 +make[2]: Leaving directory '/NEWSPACE/work/pkgs/xchat/xchat-2.8.8/src' +Makefile:451: recipe for target 'all-recursive' failed +make[1]: *** [all-recursive] Error 1 +make[1]: Leaving directory '/NEWSPACE/work/pkgs/xchat/xchat-2.8.8' +Makefile:338: recipe for target 'all' failed +make: *** [all] Error 2 +jdaugherty@somejuan:~/work/pkgs/xchat/xchat-2.8.8$ \ No newline at end of file diff --git a/xchat-2.8.8/compile b/xchat-2.8.8/compile new file mode 100755 index 0000000..c0096a7 --- /dev/null +++ b/xchat-2.8.8/compile @@ -0,0 +1,143 @@ +#! /bin/sh +# Wrapper for compilers which do not understand `-c -o'. + +scriptversion=2009-10-06.20; # UTC + +# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009 Free Software +# Foundation, Inc. +# Written by Tom Tromey <tromey@cygnus.com>. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to <bug-automake@gnu.org> or send patches to +# <automake-patches@gnu.org>. + +case $1 in + '') + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: compile [--help] [--version] PROGRAM [ARGS] + +Wrapper for compilers which do not understand `-c -o'. +Remove `-o dest.o' from ARGS, run PROGRAM with the remaining +arguments, and rename the output as expected. + +If you are trying to build a whole package this is not the +right script to run: please start by reading the file `INSTALL'. + +Report bugs to <bug-automake@gnu.org>. +EOF + exit $? + ;; + -v | --v*) + echo "compile $scriptversion" + exit $? + ;; +esac + +ofile= +cfile= +eat= + +for arg +do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as `compile cc -o foo foo.c'. + # So we strip `-o arg' only if arg is an object. + eat=1 + case $2 in + *.o | *.obj) + ofile=$2 + ;; + *) + set x "$@" -o "$2" + shift + ;; + esac + ;; + *.c) + cfile=$1 + set x "$@" "$1" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift +done + +if test -z "$ofile" || test -z "$cfile"; then + # If no `-o' option was seen then we might have been invoked from a + # pattern rule where we don't need one. That is ok -- this is a + # normal compilation that the losing compiler can handle. If no + # `.c' file was seen then we are probably linking. That is also + # ok. + exec "$@" +fi + +# Name of file we expect compiler to create. +cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` + +# Create the lock directory. +# Note: use `[/\\:.-]' here to ensure that we don't use the same name +# that we are using for the .o file. Also, base the name on the expected +# object file name, since that is what matters with a parallel build. +lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d +while true; do + if mkdir "$lockdir" >/dev/null 2>&1; then + break + fi + sleep 1 +done +# FIXME: race condition here if user kills between mkdir and trap. +trap "rmdir '$lockdir'; exit 1" 1 2 15 + +# Run the compile. +"$@" +ret=$? + +if test -f "$cofile"; then + test "$cofile" = "$ofile" || mv "$cofile" "$ofile" +elif test -f "${cofile}bj"; then + test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" +fi + +rmdir "$lockdir" +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/xchat-2.8.8/config.guess b/xchat-2.8.8/config.guess new file mode 100755 index 0000000..dc84c68 --- /dev/null +++ b/xchat-2.8.8/config.guess @@ -0,0 +1,1501 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 +# Free Software Foundation, Inc. + +timestamp='2009-11-20' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program 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 +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Originally written by Per Bothner. Please send patches (context +# diff format) to <config-patches@gnu.org> and include a ChangeLog +# entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to <config-patches@gnu.org>." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm:riscos:*:*|arm:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + s390x:SunOS:*:*) + echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux${UNAME_RELEASE} + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + eval $set_cc_for_build + SUN_ARCH="i386" + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH="x86_64" + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include <stdio.h> /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include <sys/systemcfg.h> + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[456]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include <stdlib.h> + #include <unistd.h> + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include <unistd.h> + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + case ${UNAME_MACHINE} in + pc98) + echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + *:Interix*:*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + 8664:Windows_NT:*) + echo x86_64-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit ;; + arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-unknown-linux-gnu + else + echo ${UNAME_MACHINE}-unknown-linux-gnueabi + fi + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit ;; + crisv32:Linux:*:*) + echo crisv32-axis-linux-gnu + exit ;; + frv:Linux:*:*) + echo frv-unknown-linux-gnu + exit ;; + i*86:Linux:*:*) + LIBC=gnu + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` + echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=${UNAME_MACHINE}el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=${UNAME_MACHINE} + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; + or32:Linux:*:*) + echo or32-unknown-linux-gnu + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-gnu + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-gnu + exit ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name` + echo ${UNAME_MACHINE}-pc-isc$UNAME_REL + elif /bin/uname -X 2>/dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configury will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says <Richard.M.Bartel@ccMail.Census.GOV> + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes <hewes@openmarket.com>. + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + case $UNAME_PROCESSOR in + i386) + eval $set_cc_for_build + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + UNAME_PROCESSOR="x86_64" + fi + fi ;; + unknown) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NSE-?:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c <<EOF +#ifdef _SEQUENT_ +# include <sys/types.h> +# include <sys/utsname.h> +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include <sys/param.h> + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix\n"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include <sys/param.h> +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + c34*) + echo c34-convex-bsd + exit ;; + c38*) + echo c38-convex-bsd + exit ;; + c4*) + echo c4-convex-bsd + exit ;; + esac +fi + +cat >&2 <<EOF +$0: unable to guess system type + +This script, last modified $timestamp, has failed to recognize +the operating system you are using. It is advised that you +download the most up to date version of the config scripts from + + http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +and + http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD + +If the version you run ($0) is already up to date, please +send the following data and any information you think might be +pertinent to <config-patches@gnu.org> in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/xchat-2.8.8/config.h b/xchat-2.8.8/config.h new file mode 100644 index 0000000..4f036dc --- /dev/null +++ b/xchat-2.8.8/config.h @@ -0,0 +1,485 @@ +/* config.h. Generated from config.h.in by configure. */ +/* config.h.in. Generated from configure.in by autoheader. */ + +/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP + systems. This function is required for `alloca.c' support on those systems. + */ +/* #undef CRAY_STACKSEG_END */ + +/* Define to 1 if using `alloca.c'. */ +/* #undef C_ALLOCA */ + +/* Where services dir for DBUS is */ +#define DBUS_SERVICES_DIR "${prefix}/share/dbus-1/services" + +/* Define to 1 if translation of program messages to the user's native + language is requested. */ +#define ENABLE_NLS 1 + +/* Gettext package name */ +#define GETTEXT_PACKAGE "xchat" + +/* Define to 1 if you have `alloca', as a function or macro. */ +#define HAVE_ALLOCA 1 + +/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix). + */ +#define HAVE_ALLOCA_H 1 + +/* Define to 1 if you have the `argz_count' function. */ +#define HAVE_ARGZ_COUNT 1 + +/* Define to 1 if you have the <argz.h> header file. */ +#define HAVE_ARGZ_H 1 + +/* Define to 1 if you have the `argz_next' function. */ +#define HAVE_ARGZ_NEXT 1 + +/* Define to 1 if you have the `argz_stringify' function. */ +#define HAVE_ARGZ_STRINGIFY 1 + +/* Define to 1 if you have the `asprintf' function. */ +#define HAVE_ASPRINTF 1 + +/* Define to 1 if the compiler understands __builtin_expect. */ +#define HAVE_BUILTIN_EXPECT 1 + +/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the + CoreFoundation framework. */ +/* #undef HAVE_CFLOCALECOPYCURRENT */ + +/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in + the CoreFoundation framework. */ +/* #undef HAVE_CFPREFERENCESCOPYAPPVALUE */ + +/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +#define HAVE_DCGETTEXT 1 + +/* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you + don't. */ +#define HAVE_DECL_FEOF_UNLOCKED 1 + +/* Define to 1 if you have the declaration of `fgets_unlocked', and to 0 if + you don't. */ +#define HAVE_DECL_FGETS_UNLOCKED 1 + +/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you + don't. */ +#define HAVE_DECL_GETC_UNLOCKED 1 + +/* Define to 1 if you have the declaration of `_snprintf', and to 0 if you + don't. */ +#define HAVE_DECL__SNPRINTF 0 + +/* Define to 1 if you have the declaration of `_snwprintf', and to 0 if you + don't. */ +#define HAVE_DECL__SNWPRINTF 0 + +/* Define to 1 if you have the <dlfcn.h> header file. */ +#define HAVE_DLFCN_H 1 + +/* Define to 1 if you have the `dlopen' function. */ +/* #undef HAVE_DLOPEN */ + +/* Define to 1 if you have the `fwprintf' function. */ +#define HAVE_FWPRINTF 1 + +/* Define to 1 if you have the `getaddrinfo' function. */ +/* #undef HAVE_GETADDRINFO */ + +/* Define to 1 if you have the `getcwd' function. */ +#define HAVE_GETCWD 1 + +/* Define to 1 if you have the `getegid' function. */ +#define HAVE_GETEGID 1 + +/* Define to 1 if you have the `geteuid' function. */ +#define HAVE_GETEUID 1 + +/* Define to 1 if you have the `getgid' function. */ +#define HAVE_GETGID 1 + +/* Define to 1 if you have the `getpagesize' function. */ +#define HAVE_GETPAGESIZE 1 + +/* Define if the GNU gettext() function is already present or preinstalled. */ +#define HAVE_GETTEXT 1 + +/* Define to 1 if you have the `getuid' function. */ +#define HAVE_GETUID 1 + +/* Define if you have the iconv() function and it works. */ +#define HAVE_ICONV 1 + +/* Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>. */ +#define HAVE_INTMAX_T 1 + +/* Define to 1 if you have the <inttypes.h> header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define if <inttypes.h> exists, doesn't clash with <sys/types.h>, and + declares uintmax_t. */ +#define HAVE_INTTYPES_H_WITH_UINTMAX 1 + +/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */ +#define HAVE_LANGINFO_CODESET 1 + +/* Define if your <locale.h> file defines LC_MESSAGES. */ +#define HAVE_LC_MESSAGES 1 + +/* Define to 1 if you have the `cposix' library (-lcposix). */ +/* #undef HAVE_LIBCPOSIX */ + +/* Define to 1 if you have the `inet' library (-linet). */ +/* #undef HAVE_LIBINET */ + +/* Define to 1 if you have the `net' library (-lnet). */ +/* #undef HAVE_LIBNET */ + +/* Define to 1 if you have the `nsl' library (-lnsl). */ +/* #undef HAVE_LIBNSL */ + +/* Define to 1 if you have the `resolv' library (-lresolv). */ +/* #undef HAVE_LIBRESOLV */ + +/* Define to 1 if you have the `socket' library (-lsocket). */ +/* #undef HAVE_LIBSOCKET */ + +/* Define to 1 if you have the `X11' library (-lX11). */ +#define HAVE_LIBX11 1 + +/* Define to 1 if you have the <limits.h> header file. */ +#define HAVE_LIMITS_H 1 + +/* Define to 1 if the system has the type `long long int'. */ +#define HAVE_LONG_LONG_INT 1 + +/* Define to 1 if you have the <memory.h> header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `mempcpy' function. */ +#define HAVE_MEMPCPY 1 + +/* Define to 1 if you have the `memrchr' function. */ +#define HAVE_MEMRCHR 1 + +/* Define to 1 if you have a working `mmap' system call. */ +#define HAVE_MMAP 1 + +/* Define to 1 if you have the `munmap' function. */ +#define HAVE_MUNMAP 1 + +/* Define if you have <langinfo.h> and it defines the NL_LOCALE_NAME macro if + _GNU_SOURCE is defined. */ +#define HAVE_NL_LOCALE_NAME 1 + +/* Define to 1 if you have the <openssl/ssl.h> header file. */ +/* #undef HAVE_OPENSSL_SSL_H */ + +/* Define if your printf() function supports format strings with positions. */ +#define HAVE_POSIX_PRINTF 1 + +/* Define if the <pthread.h> defines PTHREAD_MUTEX_RECURSIVE. */ +#define HAVE_PTHREAD_MUTEX_RECURSIVE 1 + +/* Define if the POSIX multithreading library has read/write locks. */ +#define HAVE_PTHREAD_RWLOCK 1 + +/* Define to 1 if you have the `putenv' function. */ +#define HAVE_PUTENV 1 + +/* Define to 1 if you have the `setenv' function. */ +#define HAVE_SETENV 1 + +/* Define to 1 if you have the `setlocale' function. */ +#define HAVE_SETLOCALE 1 + +/* Define to 1 if you have the `snprintf' function. */ +#define HAVE_SNPRINTF 1 + +/* Define to 1 if you have the <socks.h> header file. */ +/* #undef HAVE_SOCKS_H */ + +/* Define to 1 if you have the <stddef.h> header file. */ +#define HAVE_STDDEF_H 1 + +/* Define to 1 if you have the <stdint.h> header file. */ +#define HAVE_STDINT_H 1 + +/* Define if <stdint.h> exists, doesn't clash with <sys/types.h>, and declares + uintmax_t. */ +#define HAVE_STDINT_H_WITH_UINTMAX 1 + +/* Define to 1 if you have the <stdlib.h> header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the `stpcpy' function. */ +#define HAVE_STPCPY 1 + +/* Define to 1 if you have the `strcasecmp' function. */ +#define HAVE_STRCASECMP 1 + +/* Define to 1 if you have the `strdup' function. */ +#define HAVE_STRDUP 1 + +/* Define to 1 if you have the <strings.h> header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the <string.h> header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the `strtoul' function. */ +#define HAVE_STRTOUL 1 + +/* Define to 1 if you have the `strtoull' function. */ +#define HAVE_STRTOULL 1 + +/* Define to 1 if you have the <sys/ipc.h> header file. */ +/* #undef HAVE_SYS_IPC_H */ + +/* Define to 1 if you have the <sys/param.h> header file. */ +#define HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the <sys/shm.h> header file. */ +/* #undef HAVE_SYS_SHM_H */ + +/* Define to 1 if you have the <sys/stat.h> header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the <sys/types.h> header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the `tsearch' function. */ +#define HAVE_TSEARCH 1 + +/* Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>. */ +#define HAVE_UINTMAX_T 1 + +/* Define to 1 if you have the <unistd.h> header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to 1 if the system has the type `unsigned long long int'. */ +#define HAVE_UNSIGNED_LONG_LONG_INT 1 + +/* Define to 1 or 0, depending whether the compiler supports simple visibility + declarations. */ +#define HAVE_VISIBILITY 1 + +/* Define to 1 if you have the `vsnprintf' function. */ +#define HAVE_VSNPRINTF 1 + +/* Define if you have the 'wchar_t' type. */ +#define HAVE_WCHAR_T 1 + +/* Define to 1 if you have the `wcslen' function. */ +#define HAVE_WCSLEN 1 + +/* Define if you have the 'wint_t' type. */ +#define HAVE_WINT_T 1 + +/* Define to 1 if you have the <X11/Xft/Xft.h> header file. */ +/* #undef HAVE_X11_XFT_XFT_H */ + +/* Define to 1 if you have the `__fsetlocking' function. */ +#define HAVE___FSETLOCKING 1 + +/* Define as const if the declaration of iconv() needs const. */ +#define ICONV_CONST + +/* Define if integer division by zero raises signal SIGFPE. */ +#define INTDIV0_RAISES_SIGFPE 1 + +/* Define to 1 if the system uses lookupd */ +/* #undef LOOKUPD */ + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#define LT_OBJDIR ".libs/" + +/* Define to 1 if your C compiler doesn't accept -c and -o together. */ +/* #undef NO_MINUS_C_MINUS_O */ + +#define OLD_PERL 1 + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "http://www.xchat.org/" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "XChat" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "XChat 2.8.8" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "xchat" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "2.8.8" + +#define PREFIX "/usr/local" + +/* Define if <inttypes.h> exists and defines unusable PRI* macros. */ +/* #undef PRI_MACROS_BROKEN */ + +/* Define if the pthread_in_use() detection is hard. */ +/* #undef PTHREAD_IN_USE_DETECTION_HARD */ + +/* Define as the maximum value of type 'size_t', if the system doesn't define + it. */ +/* #undef SIZE_MAX */ + +/* #undef SOCKS */ + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at runtime. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +/* #undef STACK_DIRECTION */ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +#define USE_DBUS 1 + +/* #undef USE_GTKSPELL */ + +/* #undef USE_IPV6 */ + +#define USE_LIBSEXY 1 + +/* #undef USE_MMX */ + +/* #undef USE_MSPROXY */ + +#define USE_OPENSSL 1 + +#define USE_PLUGIN 1 + +/* Define if the POSIX multithreading library can be used. */ +#define USE_POSIX_THREADS 1 + +/* Define if references to the POSIX multithreading library should be made + weak. */ +#define USE_POSIX_THREADS_WEAK 1 + +/* Define if the GNU Pth multithreading library can be used. */ +/* #undef USE_PTH_THREADS */ + +/* Define if references to the GNU Pth multithreading library should be made + weak. */ +/* #undef USE_PTH_THREADS_WEAK */ + +/* #undef USE_SHM */ + +#define USE_SIGACTION 1 + +/* Define if the old Solaris multithreading library can be used. */ +/* #undef USE_SOLARIS_THREADS */ + +/* Define if references to the old Solaris multithreading library should be + made weak. */ +/* #undef USE_SOLARIS_THREADS_WEAK */ + +/* Enable extensions on AIX 3, Interix. */ +#ifndef _ALL_SOURCE +# define _ALL_SOURCE 1 +#endif +/* Enable GNU extensions on systems that have them. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif +/* Enable threading extensions on Solaris. */ +#ifndef _POSIX_PTHREAD_SEMANTICS +# define _POSIX_PTHREAD_SEMANTICS 1 +#endif +/* Enable extensions on HP NonStop. */ +#ifndef _TANDEM_SOURCE +# define _TANDEM_SOURCE 1 +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# define __EXTENSIONS__ 1 +#endif + + +/* Define if the Win32 multithreading API can be used. */ +/* #undef USE_WIN32_THREADS */ + +/* #undef USE_XFT */ + +#define USE_XLIB 1 + +/* #undef USING_FREEBSD */ + +#define USING_LINUX 1 + +#define XCHATLIBDIR "/usr/local/lib/xchat" + +#define XCHATSHAREDIR "${prefix}/share" + +/* Define to 1 if on MINIX. */ +/* #undef _MINIX */ + +/* Define to 2 if the system does not provide POSIX.1 features except with + this defined. */ +/* #undef _POSIX_1_SOURCE */ + +/* Define to 1 if you need to in order for `stat' and other things to work. */ +/* #undef _POSIX_SOURCE */ + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +/* #undef inline */ +#endif + +/* Define as the type of the result of subtracting two pointers, if the system + doesn't define it. */ +/* #undef ptrdiff_t */ + +/* Define to `unsigned int' if <sys/types.h> does not define. */ +/* #undef size_t */ + +/* #undef socklen_t */ + +/* Define to unsigned long or unsigned long long if <stdint.h> and + <inttypes.h> don't define. */ +/* #undef uintmax_t */ + + +#define __libc_lock_t gl_lock_t +#define __libc_lock_define gl_lock_define +#define __libc_lock_define_initialized gl_lock_define_initialized +#define __libc_lock_init gl_lock_init +#define __libc_lock_lock gl_lock_lock +#define __libc_lock_unlock gl_lock_unlock +#define __libc_lock_recursive_t gl_recursive_lock_t +#define __libc_lock_define_recursive gl_recursive_lock_define +#define __libc_lock_define_initialized_recursive gl_recursive_lock_define_initialized +#define __libc_lock_init_recursive gl_recursive_lock_init +#define __libc_lock_lock_recursive gl_recursive_lock_lock +#define __libc_lock_unlock_recursive gl_recursive_lock_unlock +#define glthread_in_use libintl_thread_in_use +#define glthread_lock_init libintl_lock_init +#define glthread_lock_lock libintl_lock_lock +#define glthread_lock_unlock libintl_lock_unlock +#define glthread_lock_destroy libintl_lock_destroy +#define glthread_rwlock_init libintl_rwlock_init +#define glthread_rwlock_rdlock libintl_rwlock_rdlock +#define glthread_rwlock_wrlock libintl_rwlock_wrlock +#define glthread_rwlock_unlock libintl_rwlock_unlock +#define glthread_rwlock_destroy libintl_rwlock_destroy +#define glthread_recursive_lock_init libintl_recursive_lock_init +#define glthread_recursive_lock_lock libintl_recursive_lock_lock +#define glthread_recursive_lock_unlock libintl_recursive_lock_unlock +#define glthread_recursive_lock_destroy libintl_recursive_lock_destroy +#define glthread_once libintl_once +#define glthread_once_call libintl_once_call +#define glthread_once_singlethreaded libintl_once_singlethreaded + diff --git a/xchat-2.8.8/config.h.in b/xchat-2.8.8/config.h.in new file mode 100644 index 0000000..5b3512a --- /dev/null +++ b/xchat-2.8.8/config.h.in @@ -0,0 +1,484 @@ +/* config.h.in. Generated from configure.in by autoheader. */ + +/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP + systems. This function is required for `alloca.c' support on those systems. + */ +#undef CRAY_STACKSEG_END + +/* Define to 1 if using `alloca.c'. */ +#undef C_ALLOCA + +/* Where services dir for DBUS is */ +#undef DBUS_SERVICES_DIR + +/* Define to 1 if translation of program messages to the user's native + language is requested. */ +#undef ENABLE_NLS + +/* Gettext package name */ +#undef GETTEXT_PACKAGE + +/* Define to 1 if you have `alloca', as a function or macro. */ +#undef HAVE_ALLOCA + +/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix). + */ +#undef HAVE_ALLOCA_H + +/* Define to 1 if you have the `argz_count' function. */ +#undef HAVE_ARGZ_COUNT + +/* Define to 1 if you have the <argz.h> header file. */ +#undef HAVE_ARGZ_H + +/* Define to 1 if you have the `argz_next' function. */ +#undef HAVE_ARGZ_NEXT + +/* Define to 1 if you have the `argz_stringify' function. */ +#undef HAVE_ARGZ_STRINGIFY + +/* Define to 1 if you have the `asprintf' function. */ +#undef HAVE_ASPRINTF + +/* Define to 1 if the compiler understands __builtin_expect. */ +#undef HAVE_BUILTIN_EXPECT + +/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the + CoreFoundation framework. */ +#undef HAVE_CFLOCALECOPYCURRENT + +/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in + the CoreFoundation framework. */ +#undef HAVE_CFPREFERENCESCOPYAPPVALUE + +/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +#undef HAVE_DCGETTEXT + +/* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you + don't. */ +#undef HAVE_DECL_FEOF_UNLOCKED + +/* Define to 1 if you have the declaration of `fgets_unlocked', and to 0 if + you don't. */ +#undef HAVE_DECL_FGETS_UNLOCKED + +/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you + don't. */ +#undef HAVE_DECL_GETC_UNLOCKED + +/* Define to 1 if you have the declaration of `_snprintf', and to 0 if you + don't. */ +#undef HAVE_DECL__SNPRINTF + +/* Define to 1 if you have the declaration of `_snwprintf', and to 0 if you + don't. */ +#undef HAVE_DECL__SNWPRINTF + +/* Define to 1 if you have the <dlfcn.h> header file. */ +#undef HAVE_DLFCN_H + +/* Define to 1 if you have the `dlopen' function. */ +#undef HAVE_DLOPEN + +/* Define to 1 if you have the `fwprintf' function. */ +#undef HAVE_FWPRINTF + +/* Define to 1 if you have the `getaddrinfo' function. */ +#undef HAVE_GETADDRINFO + +/* Define to 1 if you have the `getcwd' function. */ +#undef HAVE_GETCWD + +/* Define to 1 if you have the `getegid' function. */ +#undef HAVE_GETEGID + +/* Define to 1 if you have the `geteuid' function. */ +#undef HAVE_GETEUID + +/* Define to 1 if you have the `getgid' function. */ +#undef HAVE_GETGID + +/* Define to 1 if you have the `getpagesize' function. */ +#undef HAVE_GETPAGESIZE + +/* Define if the GNU gettext() function is already present or preinstalled. */ +#undef HAVE_GETTEXT + +/* Define to 1 if you have the `getuid' function. */ +#undef HAVE_GETUID + +/* Define if you have the iconv() function and it works. */ +#undef HAVE_ICONV + +/* Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>. */ +#undef HAVE_INTMAX_T + +/* Define to 1 if you have the <inttypes.h> header file. */ +#undef HAVE_INTTYPES_H + +/* Define if <inttypes.h> exists, doesn't clash with <sys/types.h>, and + declares uintmax_t. */ +#undef HAVE_INTTYPES_H_WITH_UINTMAX + +/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */ +#undef HAVE_LANGINFO_CODESET + +/* Define if your <locale.h> file defines LC_MESSAGES. */ +#undef HAVE_LC_MESSAGES + +/* Define to 1 if you have the `cposix' library (-lcposix). */ +#undef HAVE_LIBCPOSIX + +/* Define to 1 if you have the `inet' library (-linet). */ +#undef HAVE_LIBINET + +/* Define to 1 if you have the `net' library (-lnet). */ +#undef HAVE_LIBNET + +/* Define to 1 if you have the `nsl' library (-lnsl). */ +#undef HAVE_LIBNSL + +/* Define to 1 if you have the `resolv' library (-lresolv). */ +#undef HAVE_LIBRESOLV + +/* Define to 1 if you have the `socket' library (-lsocket). */ +#undef HAVE_LIBSOCKET + +/* Define to 1 if you have the `X11' library (-lX11). */ +#undef HAVE_LIBX11 + +/* Define to 1 if you have the <limits.h> header file. */ +#undef HAVE_LIMITS_H + +/* Define to 1 if the system has the type `long long int'. */ +#undef HAVE_LONG_LONG_INT + +/* Define to 1 if you have the <memory.h> header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the `mempcpy' function. */ +#undef HAVE_MEMPCPY + +/* Define to 1 if you have the `memrchr' function. */ +#undef HAVE_MEMRCHR + +/* Define to 1 if you have a working `mmap' system call. */ +#undef HAVE_MMAP + +/* Define to 1 if you have the `munmap' function. */ +#undef HAVE_MUNMAP + +/* Define if you have <langinfo.h> and it defines the NL_LOCALE_NAME macro if + _GNU_SOURCE is defined. */ +#undef HAVE_NL_LOCALE_NAME + +/* Define to 1 if you have the <openssl/ssl.h> header file. */ +#undef HAVE_OPENSSL_SSL_H + +/* Define if your printf() function supports format strings with positions. */ +#undef HAVE_POSIX_PRINTF + +/* Define if the <pthread.h> defines PTHREAD_MUTEX_RECURSIVE. */ +#undef HAVE_PTHREAD_MUTEX_RECURSIVE + +/* Define if the POSIX multithreading library has read/write locks. */ +#undef HAVE_PTHREAD_RWLOCK + +/* Define to 1 if you have the `putenv' function. */ +#undef HAVE_PUTENV + +/* Define to 1 if you have the `setenv' function. */ +#undef HAVE_SETENV + +/* Define to 1 if you have the `setlocale' function. */ +#undef HAVE_SETLOCALE + +/* Define to 1 if you have the `snprintf' function. */ +#undef HAVE_SNPRINTF + +/* Define to 1 if you have the <socks.h> header file. */ +#undef HAVE_SOCKS_H + +/* Define to 1 if you have the <stddef.h> header file. */ +#undef HAVE_STDDEF_H + +/* Define to 1 if you have the <stdint.h> header file. */ +#undef HAVE_STDINT_H + +/* Define if <stdint.h> exists, doesn't clash with <sys/types.h>, and declares + uintmax_t. */ +#undef HAVE_STDINT_H_WITH_UINTMAX + +/* Define to 1 if you have the <stdlib.h> header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the `stpcpy' function. */ +#undef HAVE_STPCPY + +/* Define to 1 if you have the `strcasecmp' function. */ +#undef HAVE_STRCASECMP + +/* Define to 1 if you have the `strdup' function. */ +#undef HAVE_STRDUP + +/* Define to 1 if you have the <strings.h> header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the <string.h> header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the `strtoul' function. */ +#undef HAVE_STRTOUL + +/* Define to 1 if you have the `strtoull' function. */ +#undef HAVE_STRTOULL + +/* Define to 1 if you have the <sys/ipc.h> header file. */ +#undef HAVE_SYS_IPC_H + +/* Define to 1 if you have the <sys/param.h> header file. */ +#undef HAVE_SYS_PARAM_H + +/* Define to 1 if you have the <sys/shm.h> header file. */ +#undef HAVE_SYS_SHM_H + +/* Define to 1 if you have the <sys/stat.h> header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the <sys/types.h> header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the `tsearch' function. */ +#undef HAVE_TSEARCH + +/* Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>. */ +#undef HAVE_UINTMAX_T + +/* Define to 1 if you have the <unistd.h> header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if the system has the type `unsigned long long int'. */ +#undef HAVE_UNSIGNED_LONG_LONG_INT + +/* Define to 1 or 0, depending whether the compiler supports simple visibility + declarations. */ +#undef HAVE_VISIBILITY + +/* Define to 1 if you have the `vsnprintf' function. */ +#undef HAVE_VSNPRINTF + +/* Define if you have the 'wchar_t' type. */ +#undef HAVE_WCHAR_T + +/* Define to 1 if you have the `wcslen' function. */ +#undef HAVE_WCSLEN + +/* Define if you have the 'wint_t' type. */ +#undef HAVE_WINT_T + +/* Define to 1 if you have the <X11/Xft/Xft.h> header file. */ +#undef HAVE_X11_XFT_XFT_H + +/* Define to 1 if you have the `__fsetlocking' function. */ +#undef HAVE___FSETLOCKING + +/* Define as const if the declaration of iconv() needs const. */ +#undef ICONV_CONST + +/* Define if integer division by zero raises signal SIGFPE. */ +#undef INTDIV0_RAISES_SIGFPE + +/* Define to 1 if the system uses lookupd */ +#undef LOOKUPD + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#undef LT_OBJDIR + +/* Define to 1 if your C compiler doesn't accept -c and -o together. */ +#undef NO_MINUS_C_MINUS_O + +#undef OLD_PERL + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +#undef PREFIX + +/* Define if <inttypes.h> exists and defines unusable PRI* macros. */ +#undef PRI_MACROS_BROKEN + +/* Define if the pthread_in_use() detection is hard. */ +#undef PTHREAD_IN_USE_DETECTION_HARD + +/* Define as the maximum value of type 'size_t', if the system doesn't define + it. */ +#undef SIZE_MAX + +#undef SOCKS + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at runtime. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +#undef STACK_DIRECTION + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +#undef USE_DBUS + +#undef USE_GTKSPELL + +#undef USE_IPV6 + +#undef USE_LIBSEXY + +#undef USE_MMX + +#undef USE_MSPROXY + +#undef USE_OPENSSL + +#undef USE_PLUGIN + +/* Define if the POSIX multithreading library can be used. */ +#undef USE_POSIX_THREADS + +/* Define if references to the POSIX multithreading library should be made + weak. */ +#undef USE_POSIX_THREADS_WEAK + +/* Define if the GNU Pth multithreading library can be used. */ +#undef USE_PTH_THREADS + +/* Define if references to the GNU Pth multithreading library should be made + weak. */ +#undef USE_PTH_THREADS_WEAK + +#undef USE_SHM + +#undef USE_SIGACTION + +/* Define if the old Solaris multithreading library can be used. */ +#undef USE_SOLARIS_THREADS + +/* Define if references to the old Solaris multithreading library should be + made weak. */ +#undef USE_SOLARIS_THREADS_WEAK + +/* Enable extensions on AIX 3, Interix. */ +#ifndef _ALL_SOURCE +# undef _ALL_SOURCE +#endif +/* Enable GNU extensions on systems that have them. */ +#ifndef _GNU_SOURCE +# undef _GNU_SOURCE +#endif +/* Enable threading extensions on Solaris. */ +#ifndef _POSIX_PTHREAD_SEMANTICS +# undef _POSIX_PTHREAD_SEMANTICS +#endif +/* Enable extensions on HP NonStop. */ +#ifndef _TANDEM_SOURCE +# undef _TANDEM_SOURCE +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# undef __EXTENSIONS__ +#endif + + +/* Define if the Win32 multithreading API can be used. */ +#undef USE_WIN32_THREADS + +#undef USE_XFT + +#undef USE_XLIB + +#undef USING_FREEBSD + +#undef USING_LINUX + +#undef XCHATLIBDIR + +#undef XCHATSHAREDIR + +/* Define to 1 if on MINIX. */ +#undef _MINIX + +/* Define to 2 if the system does not provide POSIX.1 features except with + this defined. */ +#undef _POSIX_1_SOURCE + +/* Define to 1 if you need to in order for `stat' and other things to work. */ +#undef _POSIX_SOURCE + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +#undef inline +#endif + +/* Define as the type of the result of subtracting two pointers, if the system + doesn't define it. */ +#undef ptrdiff_t + +/* Define to `unsigned int' if <sys/types.h> does not define. */ +#undef size_t + +#undef socklen_t + +/* Define to unsigned long or unsigned long long if <stdint.h> and + <inttypes.h> don't define. */ +#undef uintmax_t + + +#define __libc_lock_t gl_lock_t +#define __libc_lock_define gl_lock_define +#define __libc_lock_define_initialized gl_lock_define_initialized +#define __libc_lock_init gl_lock_init +#define __libc_lock_lock gl_lock_lock +#define __libc_lock_unlock gl_lock_unlock +#define __libc_lock_recursive_t gl_recursive_lock_t +#define __libc_lock_define_recursive gl_recursive_lock_define +#define __libc_lock_define_initialized_recursive gl_recursive_lock_define_initialized +#define __libc_lock_init_recursive gl_recursive_lock_init +#define __libc_lock_lock_recursive gl_recursive_lock_lock +#define __libc_lock_unlock_recursive gl_recursive_lock_unlock +#define glthread_in_use libintl_thread_in_use +#define glthread_lock_init libintl_lock_init +#define glthread_lock_lock libintl_lock_lock +#define glthread_lock_unlock libintl_lock_unlock +#define glthread_lock_destroy libintl_lock_destroy +#define glthread_rwlock_init libintl_rwlock_init +#define glthread_rwlock_rdlock libintl_rwlock_rdlock +#define glthread_rwlock_wrlock libintl_rwlock_wrlock +#define glthread_rwlock_unlock libintl_rwlock_unlock +#define glthread_rwlock_destroy libintl_rwlock_destroy +#define glthread_recursive_lock_init libintl_recursive_lock_init +#define glthread_recursive_lock_lock libintl_recursive_lock_lock +#define glthread_recursive_lock_unlock libintl_recursive_lock_unlock +#define glthread_recursive_lock_destroy libintl_recursive_lock_destroy +#define glthread_once libintl_once +#define glthread_once_call libintl_once_call +#define glthread_once_singlethreaded libintl_once_singlethreaded + diff --git a/xchat-2.8.8/config.h.w32 b/xchat-2.8.8/config.h.w32 new file mode 100644 index 0000000..24bd394 --- /dev/null +++ b/xchat-2.8.8/config.h.w32 @@ -0,0 +1,12 @@ +#define LOCALEDIR "./locale" +#define ENABLE_NLS +#define USE_GMODULE +#define USE_PLUGIN +#define PACKAGE_NAME "xchat" +#define PACKAGE_VERSION "2.8.8-Unofficial" +#define XCHATLIBDIR "." +#define XCHATSHAREDIR "." +#define OLD_PERL +#ifndef USE_IPV6 +#define socklen_t int +#endif diff --git a/xchat-2.8.8/config.log b/xchat-2.8.8/config.log new file mode 100644 index 0000000..c85c3a0 --- /dev/null +++ b/xchat-2.8.8/config.log @@ -0,0 +1,2657 @@ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by XChat configure 2.8.8, which was +generated by GNU Autoconf 2.65. Invocation command line was + + $ ./configure + +## --------- ## +## Platform. ## +## --------- ## + +hostname = somejuan +uname -m = x86_64 +uname -r = 4.15.0-112-generic +uname -s = Linux +uname -v = #113-Ubuntu SMP Thu Jul 9 23:41:39 UTC 2020 + +/usr/bin/uname -p = unknown +/bin/uname -X = unknown + +/bin/arch = unknown +/usr/bin/arch -k = unknown +/usr/convex/getsysinfo = unknown +/usr/bin/hostinfo = unknown +/bin/machine = unknown +/usr/bin/oslevel = unknown +/bin/universe = unknown + +PATH: /home/jdaugherty/.ciao/build/bin +PATH: /home/jdaugherty/.ciaoroot/master/build/bin +PATH: /home/jdaugherty/perl5/bin +PATH: /home/jdaugherty/.autojump/bin +PATH: /home/jdaugherty/bin +PATH: /home/jdaugherty/perl5/bin +PATH: /home/jdaugherty/perl5/bin +PATH: /home/jdaugherty/.local/bin +PATH: /home/jdaugherty/bin +PATH: /home/jdaugherty/.cabal/bin +PATH: /home/jdaugherty/.ghcup/bin +PATH: /home/jdaugherty/.nvm/versions/node/v16.2.0/bin +PATH: /home/jdaugherty/perl5/bin +PATH: /usr/local/sbin +PATH: /usr/local/bin +PATH: /usr/sbin +PATH: /usr/bin +PATH: /sbin +PATH: /bin +PATH: /usr/games +PATH: /usr/local/games +PATH: /snap/bin +PATH: /home/jdaugherty/.dotnet/tools +PATH: /home/jdaugherty/work/pl/logtalk/tools/lgtdoc/xml +PATH: /home/jdaugherty/work/pl/logtalk/scripts +PATH: /home/jdaugherty/work/pl/logtalk/integration +PATH: /home/jdaugherty/Android/Sdk/emulator +PATH: /home/jdaugherty/Android/Sdk/tools +PATH: /home/jdaugherty/Android/Sdk/tools/bin +PATH: /home/jdaugherty/Android/Sdk/platform-tools + + +## ----------- ## +## Core tests. ## +## ----------- ## + +configure:2789: checking for a BSD-compatible install +configure:2857: result: /usr/bin/install -c +configure:2868: checking whether build environment is sane +configure:2918: result: yes +configure:3059: checking for a thread-safe mkdir -p +configure:3098: result: /bin/mkdir -p +configure:3111: checking for gawk +configure:3127: found /usr/bin/gawk +configure:3138: result: gawk +configure:3149: checking whether make sets $(MAKE) +configure:3171: result: yes +configure:3244: checking whether to enable maintainer-specific portions of Makefiles +configure:3253: result: no +configure:3314: checking for gcc +configure:3330: found /usr/bin/gcc +configure:3341: result: gcc +configure:3570: checking for C compiler version +configure:3579: gcc --version >&5 +gcc (Ubuntu 8.4.0-1ubuntu1~18.04) 8.4.0 +Copyright (C) 2018 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +configure:3590: $? = 0 +configure:3579: gcc -v >&5 +Using built-in specs. +COLLECT_GCC=gcc +COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/8/lto-wrapper +OFFLOAD_TARGET_NAMES=nvptx-none +OFFLOAD_TARGET_DEFAULT=1 +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Ubuntu 8.4.0-1ubuntu1~18.04' --with-bugurl=file:///usr/share/doc/gcc-8/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-8 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +Thread model: posix +gcc version 8.4.0 (Ubuntu 8.4.0-1ubuntu1~18.04) +configure:3590: $? = 0 +configure:3579: gcc -V >&5 +gcc: error: unrecognized command line option '-V' +gcc: fatal error: no input files +compilation terminated. +configure:3590: $? = 1 +configure:3579: gcc -qversion >&5 +gcc: error: unrecognized command line option '-qversion'; did you mean '--version'? +gcc: fatal error: no input files +compilation terminated. +configure:3590: $? = 1 +configure:3610: checking whether the C compiler works +configure:3632: gcc -lgmodule-2.0 conftest.c >&5 +configure:3636: $? = 0 +configure:3685: result: yes +configure:3688: checking for C compiler default output file name +configure:3690: result: a.out +configure:3696: checking for suffix of executables +configure:3703: gcc -o conftest -lgmodule-2.0 conftest.c >&5 +configure:3707: $? = 0 +configure:3729: result: +configure:3751: checking whether we are cross compiling +configure:3759: gcc -o conftest -lgmodule-2.0 conftest.c >&5 +configure:3763: $? = 0 +configure:3770: ./conftest +configure:3774: $? = 0 +configure:3789: result: no +configure:3794: checking for suffix of object files +configure:3816: gcc -c conftest.c >&5 +configure:3820: $? = 0 +configure:3841: result: o +configure:3845: checking whether we are using the GNU C compiler +configure:3864: gcc -c conftest.c >&5 +configure:3864: $? = 0 +configure:3873: result: yes +configure:3882: checking whether gcc accepts -g +configure:3902: gcc -c -g conftest.c >&5 +configure:3902: $? = 0 +configure:3943: result: yes +configure:3960: checking for gcc option to accept ISO C89 +configure:4024: gcc -c -g -O2 conftest.c >&5 +configure:4024: $? = 0 +configure:4037: result: none needed +configure:4068: checking for style of include used by make +configure:4096: result: GNU +configure:4121: checking dependency style of gcc +configure:4231: result: gcc3 +configure:4247: checking whether gcc and cc understand -c and -o together +configure:4278: gcc -c conftest.c -o conftest2.o >&5 +configure:4282: $? = 0 +configure:4288: gcc -c conftest.c -o conftest2.o >&5 +configure:4292: $? = 0 +configure:4303: cc -c conftest.c >&5 +configure:4307: $? = 0 +configure:4315: cc -c conftest.c -o conftest2.o >&5 +configure:4319: $? = 0 +configure:4325: cc -c conftest.c -o conftest2.o >&5 +configure:4329: $? = 0 +configure:4347: result: yes +configure:4377: checking how to run the C preprocessor +configure:4408: gcc -E conftest.c +configure:4408: $? = 0 +configure:4422: gcc -E conftest.c +conftest.c:9:10: fatal error: ac_nonexistent.h: No such file or directory + #include <ac_nonexistent.h> + ^~~~~~~~~~~~~~~~~~ +compilation terminated. +configure:4422: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "XChat" +| #define PACKAGE_TARNAME "xchat" +| #define PACKAGE_VERSION "2.8.8" +| #define PACKAGE_STRING "XChat 2.8.8" +| #define PACKAGE_BUGREPORT "http://www.xchat.org/" +| #define PACKAGE_URL "" +| /* end confdefs.h. */ +| #include <ac_nonexistent.h> +configure:4447: result: gcc -E +configure:4467: gcc -E conftest.c +configure:4467: $? = 0 +configure:4481: gcc -E conftest.c +conftest.c:9:10: fatal error: ac_nonexistent.h: No such file or directory + #include <ac_nonexistent.h> + ^~~~~~~~~~~~~~~~~~ +compilation terminated. +configure:4481: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "XChat" +| #define PACKAGE_TARNAME "xchat" +| #define PACKAGE_VERSION "2.8.8" +| #define PACKAGE_STRING "XChat 2.8.8" +| #define PACKAGE_BUGREPORT "http://www.xchat.org/" +| #define PACKAGE_URL "" +| /* end confdefs.h. */ +| #include <ac_nonexistent.h> +configure:4518: checking dependency style of gcc +configure:4626: result: gcc3 +configure:4701: checking build system type +configure:4715: result: x86_64-unknown-linux-gnu +configure:4735: checking host system type +configure:4748: result: x86_64-unknown-linux-gnu +configure:4768: checking for a sed that does not truncate output +configure:4832: result: /bin/sed +configure:4850: checking for grep that handles long lines and -e +configure:4908: result: /usr/local/bin/grep +configure:4913: checking for egrep +configure:4975: result: /usr/local/bin/grep -E +configure:4980: checking for fgrep +configure:5042: result: /usr/local/bin/grep -F +configure:5077: checking for ld used by gcc +configure:5144: result: /usr/bin/ld +configure:5151: checking if the linker (/usr/bin/ld) is GNU ld +configure:5166: result: yes +configure:5178: checking for BSD- or MS-compatible name lister (nm) +configure:5227: result: /usr/bin/nm -B +configure:5345: checking the name lister (/usr/bin/nm -B) interface +configure:5352: gcc -c -g -O2 conftest.c >&5 +configure:5355: /usr/bin/nm -B "conftest.o" +configure:5358: output +0000000000000000 B some_variable +configure:5365: result: BSD nm +configure:5368: checking whether ln -s works +configure:5372: result: yes +configure:5380: checking the maximum length of command line arguments +configure:5500: result: 1879296 +configure:5517: checking whether the shell understands some XSI constructs +configure:5527: result: yes +configure:5531: checking whether the shell understands "+=" +configure:5537: result: yes +configure:5572: checking for /usr/bin/ld option to reload object files +configure:5579: result: -r +configure:5648: checking for objdump +configure:5664: found /usr/bin/objdump +configure:5675: result: objdump +configure:5707: checking how to recognize dependent libraries +configure:5903: result: pass_all +configure:5963: checking for ar +configure:5979: found /usr/bin/ar +configure:5990: result: ar +configure:6068: checking for strip +configure:6084: found /usr/bin/strip +configure:6095: result: strip +configure:6167: checking for ranlib +configure:6183: found /usr/bin/ranlib +configure:6194: result: ranlib +configure:6284: checking command to parse /usr/bin/nm -B output from gcc object +configure:6402: gcc -c -g -O2 conftest.c >&5 +configure:6405: $? = 0 +configure:6409: /usr/bin/nm -B conftest.o \| sed -n -e 's/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p' \> conftest.nm +configure:6412: $? = 0 +configure:6466: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c conftstm.o >&5 +configure:6469: $? = 0 +configure:6507: result: ok +configure:6603: gcc -c -g -O2 conftest.c >&5 +configure:6606: $? = 0 +configure:7312: checking for ANSI C header files +configure:7332: gcc -c -g -O2 conftest.c >&5 +configure:7332: $? = 0 +configure:7405: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +configure:7405: $? = 0 +configure:7405: ./conftest +configure:7405: $? = 0 +configure:7416: result: yes +configure:7429: checking for sys/types.h +configure:7429: gcc -c -g -O2 conftest.c >&5 +configure:7429: $? = 0 +configure:7429: result: yes +configure:7429: checking for sys/stat.h +configure:7429: gcc -c -g -O2 conftest.c >&5 +configure:7429: $? = 0 +configure:7429: result: yes +configure:7429: checking for stdlib.h +configure:7429: gcc -c -g -O2 conftest.c >&5 +configure:7429: $? = 0 +configure:7429: result: yes +configure:7429: checking for string.h +configure:7429: gcc -c -g -O2 conftest.c >&5 +configure:7429: $? = 0 +configure:7429: result: yes +configure:7429: checking for memory.h +configure:7429: gcc -c -g -O2 conftest.c >&5 +configure:7429: $? = 0 +configure:7429: result: yes +configure:7429: checking for strings.h +configure:7429: gcc -c -g -O2 conftest.c >&5 +configure:7429: $? = 0 +configure:7429: result: yes +configure:7429: checking for inttypes.h +configure:7429: gcc -c -g -O2 conftest.c >&5 +configure:7429: $? = 0 +configure:7429: result: yes +configure:7429: checking for stdint.h +configure:7429: gcc -c -g -O2 conftest.c >&5 +configure:7429: $? = 0 +configure:7429: result: yes +configure:7429: checking for unistd.h +configure:7429: gcc -c -g -O2 conftest.c >&5 +configure:7429: $? = 0 +configure:7429: result: yes +configure:7444: checking for dlfcn.h +configure:7444: gcc -c -g -O2 conftest.c >&5 +configure:7444: $? = 0 +configure:7444: result: yes +configure:7598: checking for objdir +configure:7613: result: .libs +configure:7905: checking if gcc supports -fno-rtti -fno-exceptions +configure:7923: gcc -c -g -O2 -fno-rtti -fno-exceptions conftest.c >&5 +cc1: warning: command line option '-fno-rtti' is valid for C++/ObjC++ but not for C +configure:7927: $? = 0 +configure:7940: result: no +configure:7960: checking for gcc option to produce PIC +configure:8232: result: -fPIC -DPIC +configure:8244: checking if gcc PIC flag -fPIC -DPIC works +configure:8262: gcc -c -g -O2 -fPIC -DPIC -DPIC conftest.c >&5 +configure:8266: $? = 0 +configure:8279: result: yes +configure:8303: checking if gcc static flag -static works +configure:8331: result: yes +configure:8346: checking if gcc supports -c -o file.o +configure:8367: gcc -c -g -O2 -o out/conftest2.o conftest.c >&5 +configure:8371: $? = 0 +configure:8393: result: yes +configure:8401: checking if gcc supports -c -o file.o +configure:8448: result: yes +configure:8481: checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries +configure:9467: result: yes +configure:9504: checking whether -lc should be explicitly linked in +configure:9509: gcc -c -g -O2 conftest.c >&5 +configure:9512: $? = 0 +configure:9527: gcc -shared conftest.o -v -Wl,-soname -Wl,conftest -o conftest 2\>\&1 \| /usr/local/bin/grep -lc \>/dev/null 2\>\&1 +configure:9530: $? = 0 +configure:9542: result: no +configure:9706: checking dynamic linker characteristics +configure:10139: gcc -o conftest -g -O2 -lgmodule-2.0 -Wl,-rpath -Wl,/foo conftest.c >&5 +configure:10139: $? = 0 +configure:10360: result: GNU/Linux ld.so +configure:10462: checking how to hardcode library paths into programs +configure:10487: result: immediate +configure:11007: checking whether stripping libraries is possible +configure:11012: result: yes +configure:11047: checking if libtool supports shared libraries +configure:11049: result: yes +configure:11052: checking whether to build shared libraries +configure:11073: result: yes +configure:11076: checking whether to build static libraries +configure:11080: result: no +configure:11126: checking whether NLS is requested +configure:11135: result: yes +configure:11176: checking for msgfmt +configure: trying /usr/bin/msgfmt... +0 translated messages. +configure:11208: result: /usr/bin/msgfmt +configure:11217: checking for gmsgfmt +configure:11248: result: /usr/bin/msgfmt +configure:11299: checking for xgettext +configure: trying /usr/bin/xgettext... +/usr/bin/xgettext: warning: file '/dev/null' extension '' is unknown; will try C +configure:11331: result: /usr/bin/xgettext +configure:11377: checking for msgmerge +configure: trying /usr/bin/msgmerge... +configure:11408: result: /usr/bin/msgmerge +configure:11426: checking whether we are using the GNU C Library 2 or newer +configure:11453: result: yes +configure:11502: checking for ranlib +configure:11529: result: ranlib +configure:11556: checking for simple visibility declarations +configure:11578: gcc -c -g -O2 -fvisibility=hidden conftest.c >&5 +configure:11578: $? = 0 +configure:11587: result: yes +configure:11602: checking for inline +configure:11618: gcc -c -g -O2 conftest.c >&5 +configure:11618: $? = 0 +configure:11626: result: inline +configure:11644: checking for size_t +configure:11644: gcc -c -g -O2 conftest.c >&5 +configure:11644: $? = 0 +configure:11644: gcc -c -g -O2 conftest.c >&5 +conftest.c: In function 'main': +conftest.c:59:21: error: expected expression before ')' token + if (sizeof ((size_t))) + ^ +configure:11644: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "XChat" +| #define PACKAGE_TARNAME "xchat" +| #define PACKAGE_VERSION "2.8.8" +| #define PACKAGE_STRING "XChat 2.8.8" +| #define PACKAGE_BUGREPORT "http://www.xchat.org/" +| #define PACKAGE_URL "" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define GETTEXT_PACKAGE "xchat" +| #define HAVE_VISIBILITY 1 +| /* end confdefs.h. */ +| #include <stdio.h> +| #ifdef HAVE_SYS_TYPES_H +| # include <sys/types.h> +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include <sys/stat.h> +| #endif +| #ifdef STDC_HEADERS +| # include <stdlib.h> +| # include <stddef.h> +| #else +| # ifdef HAVE_STDLIB_H +| # include <stdlib.h> +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include <memory.h> +| # endif +| # include <string.h> +| #endif +| #ifdef HAVE_STRINGS_H +| # include <strings.h> +| #endif +| #ifdef HAVE_INTTYPES_H +| # include <inttypes.h> +| #endif +| #ifdef HAVE_STDINT_H +| # include <stdint.h> +| #endif +| #ifdef HAVE_UNISTD_H +| # include <unistd.h> +| #endif +| int +| main () +| { +| if (sizeof ((size_t))) +| return 0; +| ; +| return 0; +| } +configure:11644: result: yes +configure:11656: checking for stdint.h +configure:11673: gcc -c -g -O2 conftest.c >&5 +configure:11673: $? = 0 +configure:11680: result: yes +configure:11692: checking for working alloca.h +configure:11709: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +configure:11709: $? = 0 +configure:11717: result: yes +configure:11725: checking for alloca +configure:11762: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +configure:11762: $? = 0 +configure:11770: result: yes +configure:11886: checking for stdlib.h +configure:11886: result: yes +configure:11886: checking for unistd.h +configure:11886: result: yes +configure:11886: checking for sys/param.h +configure:11886: gcc -c -g -O2 conftest.c >&5 +configure:11886: $? = 0 +configure:11886: result: yes +configure:11907: checking for getpagesize +configure:11907: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +configure:11907: $? = 0 +configure:11907: result: yes +configure:11916: checking for working mmap +configure:12063: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +configure:12063: $? = 0 +configure:12063: ./conftest +configure:12063: $? = 0 +configure:12073: result: yes +configure:12084: checking whether integer division by zero raises SIGFPE +configure:12150: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +conftest.c:45:5: warning: built-in function 'nan' declared as non-function [-Wbuiltin-declaration-mismatch] + int nan; + ^~~ +configure:12150: $? = 0 +configure:12150: ./conftest +configure:12150: $? = 0 +configure:12162: result: yes +configure:12175: checking for inttypes.h +configure:12192: gcc -c -g -O2 conftest.c >&5 +configure:12192: $? = 0 +configure:12199: result: yes +configure:12210: checking for unsigned long long int +configure:12250: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +configure:12250: $? = 0 +configure:12258: result: yes +configure:12288: checking for inttypes.h +configure:12288: result: yes +configure:12299: checking whether the inttypes.h PRIxNN macros are broken +configure:12320: gcc -c -g -O2 conftest.c >&5 +configure:12320: $? = 0 +configure:12328: result: no +configure:12344: checking minix/config.h usability +configure:12344: gcc -c -g -O2 conftest.c >&5 +conftest.c:69:10: fatal error: minix/config.h: No such file or directory + #include <minix/config.h> + ^~~~~~~~~~~~~~~~ +compilation terminated. +configure:12344: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "XChat" +| #define PACKAGE_TARNAME "xchat" +| #define PACKAGE_VERSION "2.8.8" +| #define PACKAGE_STRING "XChat 2.8.8" +| #define PACKAGE_BUGREPORT "http://www.xchat.org/" +| #define PACKAGE_URL "" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define GETTEXT_PACKAGE "xchat" +| #define HAVE_VISIBILITY 1 +| #define HAVE_STDINT_H_WITH_UINTMAX 1 +| #define HAVE_ALLOCA_H 1 +| #define HAVE_ALLOCA 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_PARAM_H 1 +| #define HAVE_GETPAGESIZE 1 +| #define HAVE_MMAP 1 +| #define INTDIV0_RAISES_SIGFPE 1 +| #define HAVE_INTTYPES_H_WITH_UINTMAX 1 +| #define HAVE_UNSIGNED_LONG_LONG_INT 1 +| #define HAVE_UINTMAX_T 1 +| #define HAVE_INTTYPES_H 1 +| /* end confdefs.h. */ +| #include <stdio.h> +| #ifdef HAVE_SYS_TYPES_H +| # include <sys/types.h> +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include <sys/stat.h> +| #endif +| #ifdef STDC_HEADERS +| # include <stdlib.h> +| # include <stddef.h> +| #else +| # ifdef HAVE_STDLIB_H +| # include <stdlib.h> +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include <memory.h> +| # endif +| # include <string.h> +| #endif +| #ifdef HAVE_STRINGS_H +| # include <strings.h> +| #endif +| #ifdef HAVE_INTTYPES_H +| # include <inttypes.h> +| #endif +| #ifdef HAVE_STDINT_H +| # include <stdint.h> +| #endif +| #ifdef HAVE_UNISTD_H +| # include <unistd.h> +| #endif +| #include <minix/config.h> +configure:12344: result: no +configure:12344: checking minix/config.h presence +configure:12344: gcc -E conftest.c +conftest.c:36:10: fatal error: minix/config.h: No such file or directory + #include <minix/config.h> + ^~~~~~~~~~~~~~~~ +compilation terminated. +configure:12344: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "XChat" +| #define PACKAGE_TARNAME "xchat" +| #define PACKAGE_VERSION "2.8.8" +| #define PACKAGE_STRING "XChat 2.8.8" +| #define PACKAGE_BUGREPORT "http://www.xchat.org/" +| #define PACKAGE_URL "" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define GETTEXT_PACKAGE "xchat" +| #define HAVE_VISIBILITY 1 +| #define HAVE_STDINT_H_WITH_UINTMAX 1 +| #define HAVE_ALLOCA_H 1 +| #define HAVE_ALLOCA 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_PARAM_H 1 +| #define HAVE_GETPAGESIZE 1 +| #define HAVE_MMAP 1 +| #define INTDIV0_RAISES_SIGFPE 1 +| #define HAVE_INTTYPES_H_WITH_UINTMAX 1 +| #define HAVE_UNSIGNED_LONG_LONG_INT 1 +| #define HAVE_UINTMAX_T 1 +| #define HAVE_INTTYPES_H 1 +| /* end confdefs.h. */ +| #include <minix/config.h> +configure:12344: result: no +configure:12344: checking for minix/config.h +configure:12344: result: no +configure:12365: checking whether it is safe to define __EXTENSIONS__ +configure:12383: gcc -c -g -O2 conftest.c >&5 +configure:12383: $? = 0 +configure:12390: result: yes +configure:12484: checking for ld used by GCC +configure:12548: result: /usr/bin/ld -m elf_x86_64 +configure:12555: checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld +configure:12568: result: yes +configure:12575: checking for shared library run path origin +configure:12588: result: done +configure:12634: checking whether imported symbols can be declared weak +configure:12649: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +configure:12649: $? = 0 +configure:12654: result: yes +configure:12659: checking pthread.h usability +configure:12659: gcc -c -g -O2 conftest.c >&5 +configure:12659: $? = 0 +configure:12659: result: yes +configure:12659: checking pthread.h presence +configure:12659: gcc -E conftest.c +configure:12659: $? = 0 +configure:12659: result: yes +configure:12659: checking for pthread.h +configure:12659: result: yes +configure:12687: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +conftest.c: In function 'main': +conftest.c:45:1: warning: null argument where non-null required (argument 1) [-Wnonnull] + pthread_mutex_lock((pthread_mutex_t*)0); + ^~~~~~~~~~~~~~~~~~ +conftest.c:46:12: warning: null argument where non-null required (argument 1) [-Wnonnull] + pthread_mutexattr_init((pthread_mutexattr_t*)0); + ^~~~~~~~~~~~~~~~~~~~~~ +/tmp/ccOXFGUs.o: In function `main': +/home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/conftest.c:46: undefined reference to `pthread_mutexattr_init' +collect2: error: ld returned 1 exit status +configure:12687: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "XChat" +| #define PACKAGE_TARNAME "xchat" +| #define PACKAGE_VERSION "2.8.8" +| #define PACKAGE_STRING "XChat 2.8.8" +| #define PACKAGE_BUGREPORT "http://www.xchat.org/" +| #define PACKAGE_URL "" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define GETTEXT_PACKAGE "xchat" +| #define HAVE_VISIBILITY 1 +| #define HAVE_STDINT_H_WITH_UINTMAX 1 +| #define HAVE_ALLOCA_H 1 +| #define HAVE_ALLOCA 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_PARAM_H 1 +| #define HAVE_GETPAGESIZE 1 +| #define HAVE_MMAP 1 +| #define INTDIV0_RAISES_SIGFPE 1 +| #define HAVE_INTTYPES_H_WITH_UINTMAX 1 +| #define HAVE_UNSIGNED_LONG_LONG_INT 1 +| #define HAVE_UINTMAX_T 1 +| #define HAVE_INTTYPES_H 1 +| #define __EXTENSIONS__ 1 +| #define _ALL_SOURCE 1 +| #define _GNU_SOURCE 1 +| #define _POSIX_PTHREAD_SEMANTICS 1 +| #define _TANDEM_SOURCE 1 +| /* end confdefs.h. */ +| #include <pthread.h> +| int +| main () +| { +| pthread_mutex_lock((pthread_mutex_t*)0); +| pthread_mutexattr_init((pthread_mutexattr_t*)0); +| ; +| return 0; +| } +configure:12750: checking for pthread_kill in -lpthread +configure:12775: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c -lpthread >&5 +configure:12775: $? = 0 +configure:12784: result: yes +configure:12854: checking for pthread_rwlock_t +configure:12854: gcc -c -g -O2 conftest.c >&5 +configure:12854: $? = 0 +configure:12854: gcc -c -g -O2 conftest.c >&5 +conftest.c: In function 'main': +conftest.c:48:31: error: expected expression before ')' token + if (sizeof ((pthread_rwlock_t))) + ^ +configure:12854: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "XChat" +| #define PACKAGE_TARNAME "xchat" +| #define PACKAGE_VERSION "2.8.8" +| #define PACKAGE_STRING "XChat 2.8.8" +| #define PACKAGE_BUGREPORT "http://www.xchat.org/" +| #define PACKAGE_URL "" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define GETTEXT_PACKAGE "xchat" +| #define HAVE_VISIBILITY 1 +| #define HAVE_STDINT_H_WITH_UINTMAX 1 +| #define HAVE_ALLOCA_H 1 +| #define HAVE_ALLOCA 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_PARAM_H 1 +| #define HAVE_GETPAGESIZE 1 +| #define HAVE_MMAP 1 +| #define INTDIV0_RAISES_SIGFPE 1 +| #define HAVE_INTTYPES_H_WITH_UINTMAX 1 +| #define HAVE_UNSIGNED_LONG_LONG_INT 1 +| #define HAVE_UINTMAX_T 1 +| #define HAVE_INTTYPES_H 1 +| #define __EXTENSIONS__ 1 +| #define _ALL_SOURCE 1 +| #define _GNU_SOURCE 1 +| #define _POSIX_PTHREAD_SEMANTICS 1 +| #define _TANDEM_SOURCE 1 +| #define USE_POSIX_THREADS 1 +| #define USE_POSIX_THREADS_WEAK 1 +| /* end confdefs.h. */ +| #include <pthread.h> +| +| int +| main () +| { +| if (sizeof ((pthread_rwlock_t))) +| return 0; +| ; +| return 0; +| } +configure:12854: result: yes +configure:12879: gcc -c -g -O2 conftest.c >&5 +configure:12879: $? = 0 +configure:13477: checking for multithread API to use +configure:13479: result: posix +configure:13947: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +configure:13947: $? = 0 +configure:13958: checking argz.h usability +configure:13958: gcc -c -g -O2 conftest.c >&5 +configure:13958: $? = 0 +configure:13958: result: yes +configure:13958: checking argz.h presence +configure:13958: gcc -E conftest.c +configure:13958: $? = 0 +configure:13958: result: yes +configure:13958: checking for argz.h +configure:13958: result: yes +configure:13958: checking for inttypes.h +configure:13958: result: yes +configure:13958: checking limits.h usability +configure:13958: gcc -c -g -O2 conftest.c >&5 +configure:13958: $? = 0 +configure:13958: result: yes +configure:13958: checking limits.h presence +configure:13958: gcc -E conftest.c +configure:13958: $? = 0 +configure:13958: result: yes +configure:13958: checking for limits.h +configure:13958: result: yes +configure:13958: checking for unistd.h +configure:13958: result: yes +configure:13958: checking for sys/param.h +configure:13958: result: yes +configure:13974: checking for getcwd +configure:13974: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +configure:13974: $? = 0 +configure:13974: result: yes +configure:13974: checking for getegid +configure:13974: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +configure:13974: $? = 0 +configure:13974: result: yes +configure:13974: checking for geteuid +configure:13974: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +configure:13974: $? = 0 +configure:13974: result: yes +configure:13974: checking for getgid +configure:13974: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +configure:13974: $? = 0 +configure:13974: result: yes +configure:13974: checking for getuid +configure:13974: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +configure:13974: $? = 0 +configure:13974: result: yes +configure:13974: checking for mempcpy +configure:13974: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +conftest.c:79:6: warning: conflicting types for built-in function 'mempcpy' [-Wbuiltin-declaration-mismatch] + char mempcpy (); + ^~~~~~~ +configure:13974: $? = 0 +configure:13974: result: yes +configure:13974: checking for munmap +configure:13974: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +configure:13974: $? = 0 +configure:13974: result: yes +configure:13974: checking for stpcpy +configure:13974: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +conftest.c:81:6: warning: conflicting types for built-in function 'stpcpy' [-Wbuiltin-declaration-mismatch] + char stpcpy (); + ^~~~~~ +configure:13974: $? = 0 +configure:13974: result: yes +configure:13974: checking for strcasecmp +configure:13974: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +conftest.c:82:6: warning: conflicting types for built-in function 'strcasecmp' [-Wbuiltin-declaration-mismatch] + char strcasecmp (); + ^~~~~~~~~~ +configure:13974: $? = 0 +configure:13974: result: yes +configure:13974: checking for strdup +configure:13974: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +conftest.c:83:6: warning: conflicting types for built-in function 'strdup' [-Wbuiltin-declaration-mismatch] + char strdup (); + ^~~~~~ +configure:13974: $? = 0 +configure:13974: result: yes +configure:13974: checking for strtoul +configure:13974: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +configure:13974: $? = 0 +configure:13974: result: yes +configure:13974: checking for tsearch +configure:13974: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +configure:13974: $? = 0 +configure:13974: result: yes +configure:13974: checking for argz_count +configure:13974: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +configure:13974: $? = 0 +configure:13974: result: yes +configure:13974: checking for argz_stringify +configure:13974: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +configure:13974: $? = 0 +configure:13974: result: yes +configure:13974: checking for argz_next +configure:13974: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +configure:13974: $? = 0 +configure:13974: result: yes +configure:13974: checking for __fsetlocking +configure:13974: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +configure:13974: $? = 0 +configure:13974: result: yes +configure:13986: checking whether feof_unlocked is declared +configure:14006: gcc -c -g -O2 conftest.c >&5 +configure:14006: $? = 0 +configure:14013: result: yes +configure:14027: checking whether fgets_unlocked is declared +configure:14047: gcc -c -g -O2 conftest.c >&5 +configure:14047: $? = 0 +configure:14054: result: yes +configure:14098: checking for iconv +configure:14120: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +/tmp/ccjfiD5x.o: In function `main': +/home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/conftest.c:74: undefined reference to `libiconv_open' +/home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/conftest.c:75: undefined reference to `libiconv' +/home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/conftest.c:76: undefined reference to `libiconv_close' +collect2: error: ld returned 1 exit status +configure:14120: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "XChat" +| #define PACKAGE_TARNAME "xchat" +| #define PACKAGE_VERSION "2.8.8" +| #define PACKAGE_STRING "XChat 2.8.8" +| #define PACKAGE_BUGREPORT "http://www.xchat.org/" +| #define PACKAGE_URL "" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define GETTEXT_PACKAGE "xchat" +| #define HAVE_VISIBILITY 1 +| #define HAVE_STDINT_H_WITH_UINTMAX 1 +| #define HAVE_ALLOCA_H 1 +| #define HAVE_ALLOCA 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_PARAM_H 1 +| #define HAVE_GETPAGESIZE 1 +| #define HAVE_MMAP 1 +| #define INTDIV0_RAISES_SIGFPE 1 +| #define HAVE_INTTYPES_H_WITH_UINTMAX 1 +| #define HAVE_UNSIGNED_LONG_LONG_INT 1 +| #define HAVE_UINTMAX_T 1 +| #define HAVE_INTTYPES_H 1 +| #define __EXTENSIONS__ 1 +| #define _ALL_SOURCE 1 +| #define _GNU_SOURCE 1 +| #define _POSIX_PTHREAD_SEMANTICS 1 +| #define _TANDEM_SOURCE 1 +| #define USE_POSIX_THREADS 1 +| #define USE_POSIX_THREADS_WEAK 1 +| #define HAVE_PTHREAD_RWLOCK 1 +| #define HAVE_PTHREAD_MUTEX_RECURSIVE 1 +| #define HAVE_BUILTIN_EXPECT 1 +| #define HAVE_ARGZ_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_LIMITS_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_PARAM_H 1 +| #define HAVE_GETCWD 1 +| #define HAVE_GETEGID 1 +| #define HAVE_GETEUID 1 +| #define HAVE_GETGID 1 +| #define HAVE_GETUID 1 +| #define HAVE_MEMPCPY 1 +| #define HAVE_MUNMAP 1 +| #define HAVE_STPCPY 1 +| #define HAVE_STRCASECMP 1 +| #define HAVE_STRDUP 1 +| #define HAVE_STRTOUL 1 +| #define HAVE_TSEARCH 1 +| #define HAVE_ARGZ_COUNT 1 +| #define HAVE_ARGZ_STRINGIFY 1 +| #define HAVE_ARGZ_NEXT 1 +| #define HAVE___FSETLOCKING 1 +| #define HAVE_DECL_FEOF_UNLOCKED 1 +| #define HAVE_DECL_FGETS_UNLOCKED 1 +| /* end confdefs.h. */ +| #include <stdlib.h> +| #include <iconv.h> +| int +| main () +| { +| iconv_t cd = iconv_open("",""); +| iconv(cd,NULL,NULL,NULL,NULL); +| iconv_close(cd); +| ; +| return 0; +| } +configure:14142: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c -liconv >&5 +configure:14142: $? = 0 +configure:14152: result: yes +configure:14155: checking for working iconv +configure:14231: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c -liconv >&5 +configure:14231: $? = 0 +configure:14231: ./conftest +configure:14231: $? = 0 +configure:14243: result: yes +configure:14258: checking how to link with libiconv +configure:14260: result: -liconv +configure:14271: checking for iconv declaration +configure:14300: gcc -c -g -O2 conftest.c >&5 +configure:14300: $? = 0 +configure:14311: result: install-shextern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +configure:14322: checking for NL_LOCALE_NAME macro +configure:14341: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +configure:14341: $? = 0 +configure:14350: result: yes +configure:14362: checking for bison +configure:14378: found /usr/bin/bison +configure:14389: result: bison +configure:14403: checking version of bison +configure:14412: result: 3.0.4, ok +configure:14420: checking for long long int +configure:14460: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +configure:14460: $? = 0 +configure:14490: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +configure:14490: $? = 0 +configure:14490: ./conftest +configure:14490: $? = 0 +configure:14505: result: yes +configure:14514: checking for wchar_t +configure:14531: gcc -c -g -O2 conftest.c >&5 +configure:14531: $? = 0 +configure:14538: result: yes +configure:14547: checking for wint_t +configure:14572: gcc -c -g -O2 conftest.c >&5 +configure:14572: $? = 0 +configure:14579: result: yes +configure:14590: checking for intmax_t +configure:14616: gcc -c -g -O2 conftest.c >&5 +configure:14616: $? = 0 +configure:14623: result: yes +configure:14633: checking whether printf() supports POSIX/XSI format strings +configure:14674: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +configure:14674: $? = 0 +configure:14674: ./conftest +configure:14674: $? = 0 +configure:14685: result: yes +configure:14696: checking whether we are using the GNU C Library 2.1 or newer +configure:14723: result: yes +configure:14732: checking for stdint.h +configure:14732: result: yes +configure:14742: checking for SIZE_MAX +configure:14814: result: yes +configure:14829: checking for stdint.h +configure:14829: result: yes +configure:14841: checking for CFPreferencesCopyAppValue +configure:14859: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c -Wl,-framework -Wl,CoreFoundation >&5 +conftest.c:79:10: fatal error: CoreFoundation/CFPreferences.h: No such file or directory + #include <CoreFoundation/CFPreferences.h> + ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +compilation terminated. +configure:14859: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "XChat" +| #define PACKAGE_TARNAME "xchat" +| #define PACKAGE_VERSION "2.8.8" +| #define PACKAGE_STRING "XChat 2.8.8" +| #define PACKAGE_BUGREPORT "http://www.xchat.org/" +| #define PACKAGE_URL "" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define GETTEXT_PACKAGE "xchat" +| #define HAVE_VISIBILITY 1 +| #define HAVE_STDINT_H_WITH_UINTMAX 1 +| #define HAVE_ALLOCA_H 1 +| #define HAVE_ALLOCA 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_PARAM_H 1 +| #define HAVE_GETPAGESIZE 1 +| #define HAVE_MMAP 1 +| #define INTDIV0_RAISES_SIGFPE 1 +| #define HAVE_INTTYPES_H_WITH_UINTMAX 1 +| #define HAVE_UNSIGNED_LONG_LONG_INT 1 +| #define HAVE_UINTMAX_T 1 +| #define HAVE_INTTYPES_H 1 +| #define __EXTENSIONS__ 1 +| #define _ALL_SOURCE 1 +| #define _GNU_SOURCE 1 +| #define _POSIX_PTHREAD_SEMANTICS 1 +| #define _TANDEM_SOURCE 1 +| #define USE_POSIX_THREADS 1 +| #define USE_POSIX_THREADS_WEAK 1 +| #define HAVE_PTHREAD_RWLOCK 1 +| #define HAVE_PTHREAD_MUTEX_RECURSIVE 1 +| #define HAVE_BUILTIN_EXPECT 1 +| #define HAVE_ARGZ_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_LIMITS_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_PARAM_H 1 +| #define HAVE_GETCWD 1 +| #define HAVE_GETEGID 1 +| #define HAVE_GETEUID 1 +| #define HAVE_GETGID 1 +| #define HAVE_GETUID 1 +| #define HAVE_MEMPCPY 1 +| #define HAVE_MUNMAP 1 +| #define HAVE_STPCPY 1 +| #define HAVE_STRCASECMP 1 +| #define HAVE_STRDUP 1 +| #define HAVE_STRTOUL 1 +| #define HAVE_TSEARCH 1 +| #define HAVE_ARGZ_COUNT 1 +| #define HAVE_ARGZ_STRINGIFY 1 +| #define HAVE_ARGZ_NEXT 1 +| #define HAVE___FSETLOCKING 1 +| #define HAVE_DECL_FEOF_UNLOCKED 1 +| #define HAVE_DECL_FGETS_UNLOCKED 1 +| #define HAVE_ICONV 1 +| #define ICONV_CONST +| #define HAVE_NL_LOCALE_NAME 1 +| #define HAVE_LONG_LONG_INT 1 +| #define HAVE_WCHAR_T 1 +| #define HAVE_WINT_T 1 +| #define HAVE_INTMAX_T 1 +| #define HAVE_POSIX_PRINTF 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_STDINT_H 1 +| /* end confdefs.h. */ +| #include <CoreFoundation/CFPreferences.h> +| int +| main () +| { +| CFPreferencesCopyAppValue(NULL, NULL) +| ; +| return 0; +| } +configure:14868: result: no +configure:14875: checking for CFLocaleCopyCurrent +configure:14893: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c -Wl,-framework -Wl,CoreFoundation >&5 +conftest.c:79:10: fatal error: CoreFoundation/CFLocale.h: No such file or directory + #include <CoreFoundation/CFLocale.h> + ^~~~~~~~~~~~~~~~~~~~~~~~~~~ +compilation terminated. +configure:14893: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "XChat" +| #define PACKAGE_TARNAME "xchat" +| #define PACKAGE_VERSION "2.8.8" +| #define PACKAGE_STRING "XChat 2.8.8" +| #define PACKAGE_BUGREPORT "http://www.xchat.org/" +| #define PACKAGE_URL "" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define GETTEXT_PACKAGE "xchat" +| #define HAVE_VISIBILITY 1 +| #define HAVE_STDINT_H_WITH_UINTMAX 1 +| #define HAVE_ALLOCA_H 1 +| #define HAVE_ALLOCA 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_PARAM_H 1 +| #define HAVE_GETPAGESIZE 1 +| #define HAVE_MMAP 1 +| #define INTDIV0_RAISES_SIGFPE 1 +| #define HAVE_INTTYPES_H_WITH_UINTMAX 1 +| #define HAVE_UNSIGNED_LONG_LONG_INT 1 +| #define HAVE_UINTMAX_T 1 +| #define HAVE_INTTYPES_H 1 +| #define __EXTENSIONS__ 1 +| #define _ALL_SOURCE 1 +| #define _GNU_SOURCE 1 +| #define _POSIX_PTHREAD_SEMANTICS 1 +| #define _TANDEM_SOURCE 1 +| #define USE_POSIX_THREADS 1 +| #define USE_POSIX_THREADS_WEAK 1 +| #define HAVE_PTHREAD_RWLOCK 1 +| #define HAVE_PTHREAD_MUTEX_RECURSIVE 1 +| #define HAVE_BUILTIN_EXPECT 1 +| #define HAVE_ARGZ_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_LIMITS_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_PARAM_H 1 +| #define HAVE_GETCWD 1 +| #define HAVE_GETEGID 1 +| #define HAVE_GETEUID 1 +| #define HAVE_GETGID 1 +| #define HAVE_GETUID 1 +| #define HAVE_MEMPCPY 1 +| #define HAVE_MUNMAP 1 +| #define HAVE_STPCPY 1 +| #define HAVE_STRCASECMP 1 +| #define HAVE_STRDUP 1 +| #define HAVE_STRTOUL 1 +| #define HAVE_TSEARCH 1 +| #define HAVE_ARGZ_COUNT 1 +| #define HAVE_ARGZ_STRINGIFY 1 +| #define HAVE_ARGZ_NEXT 1 +| #define HAVE___FSETLOCKING 1 +| #define HAVE_DECL_FEOF_UNLOCKED 1 +| #define HAVE_DECL_FGETS_UNLOCKED 1 +| #define HAVE_ICONV 1 +| #define ICONV_CONST +| #define HAVE_NL_LOCALE_NAME 1 +| #define HAVE_LONG_LONG_INT 1 +| #define HAVE_WCHAR_T 1 +| #define HAVE_WINT_T 1 +| #define HAVE_INTMAX_T 1 +| #define HAVE_POSIX_PRINTF 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_STDINT_H 1 +| /* end confdefs.h. */ +| #include <CoreFoundation/CFLocale.h> +| int +| main () +| { +| CFLocaleCopyCurrent(); +| ; +| return 0; +| } +configure:14902: result: no +configure:14920: checking for ptrdiff_t +configure:14920: gcc -c -g -O2 conftest.c >&5 +configure:14920: $? = 0 +configure:14920: gcc -c -g -O2 conftest.c >&5 +conftest.c: In function 'main': +conftest.c:115:24: error: expected expression before ')' token + if (sizeof ((ptrdiff_t))) + ^ +configure:14920: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "XChat" +| #define PACKAGE_TARNAME "xchat" +| #define PACKAGE_VERSION "2.8.8" +| #define PACKAGE_STRING "XChat 2.8.8" +| #define PACKAGE_BUGREPORT "http://www.xchat.org/" +| #define PACKAGE_URL "" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define GETTEXT_PACKAGE "xchat" +| #define HAVE_VISIBILITY 1 +| #define HAVE_STDINT_H_WITH_UINTMAX 1 +| #define HAVE_ALLOCA_H 1 +| #define HAVE_ALLOCA 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_PARAM_H 1 +| #define HAVE_GETPAGESIZE 1 +| #define HAVE_MMAP 1 +| #define INTDIV0_RAISES_SIGFPE 1 +| #define HAVE_INTTYPES_H_WITH_UINTMAX 1 +| #define HAVE_UNSIGNED_LONG_LONG_INT 1 +| #define HAVE_UINTMAX_T 1 +| #define HAVE_INTTYPES_H 1 +| #define __EXTENSIONS__ 1 +| #define _ALL_SOURCE 1 +| #define _GNU_SOURCE 1 +| #define _POSIX_PTHREAD_SEMANTICS 1 +| #define _TANDEM_SOURCE 1 +| #define USE_POSIX_THREADS 1 +| #define USE_POSIX_THREADS_WEAK 1 +| #define HAVE_PTHREAD_RWLOCK 1 +| #define HAVE_PTHREAD_MUTEX_RECURSIVE 1 +| #define HAVE_BUILTIN_EXPECT 1 +| #define HAVE_ARGZ_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_LIMITS_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_PARAM_H 1 +| #define HAVE_GETCWD 1 +| #define HAVE_GETEGID 1 +| #define HAVE_GETEUID 1 +| #define HAVE_GETGID 1 +| #define HAVE_GETUID 1 +| #define HAVE_MEMPCPY 1 +| #define HAVE_MUNMAP 1 +| #define HAVE_STPCPY 1 +| #define HAVE_STRCASECMP 1 +| #define HAVE_STRDUP 1 +| #define HAVE_STRTOUL 1 +| #define HAVE_TSEARCH 1 +| #define HAVE_ARGZ_COUNT 1 +| #define HAVE_ARGZ_STRINGIFY 1 +| #define HAVE_ARGZ_NEXT 1 +| #define HAVE___FSETLOCKING 1 +| #define HAVE_DECL_FEOF_UNLOCKED 1 +| #define HAVE_DECL_FGETS_UNLOCKED 1 +| #define HAVE_ICONV 1 +| #define ICONV_CONST +| #define HAVE_NL_LOCALE_NAME 1 +| #define HAVE_LONG_LONG_INT 1 +| #define HAVE_WCHAR_T 1 +| #define HAVE_WINT_T 1 +| #define HAVE_INTMAX_T 1 +| #define HAVE_POSIX_PRINTF 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_STDINT_H 1 +| /* end confdefs.h. */ +| #include <stdio.h> +| #ifdef HAVE_SYS_TYPES_H +| # include <sys/types.h> +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include <sys/stat.h> +| #endif +| #ifdef STDC_HEADERS +| # include <stdlib.h> +| # include <stddef.h> +| #else +| # ifdef HAVE_STDLIB_H +| # include <stdlib.h> +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include <memory.h> +| # endif +| # include <string.h> +| #endif +| #ifdef HAVE_STRINGS_H +| # include <strings.h> +| #endif +| #ifdef HAVE_INTTYPES_H +| # include <inttypes.h> +| #endif +| #ifdef HAVE_STDINT_H +| # include <stdint.h> +| #endif +| #ifdef HAVE_UNISTD_H +| # include <unistd.h> +| #endif +| int +| main () +| { +| if (sizeof ((ptrdiff_t))) +| return 0; +| ; +| return 0; +| } +configure:14920: result: yes +configure:14933: checking stddef.h usability +configure:14933: gcc -c -g -O2 conftest.c >&5 +configure:14933: $? = 0 +configure:14933: result: yes +configure:14933: checking stddef.h presence +configure:14933: gcc -E conftest.c +configure:14933: $? = 0 +configure:14933: result: yes +configure:14933: checking for stddef.h +configure:14933: result: yes +configure:14933: checking for stdlib.h +configure:14933: result: yes +configure:14933: checking for string.h +configure:14933: result: yes +configure:14947: checking for asprintf +configure:14947: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +configure:14947: $? = 0 +configure:14947: result: yes +configure:14947: checking for fwprintf +configure:14947: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +configure:14947: $? = 0 +configure:14947: result: yes +configure:14947: checking for putenv +configure:14947: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +configure:14947: $? = 0 +configure:14947: result: yes +configure:14947: checking for setenv +configure:14947: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +configure:14947: $? = 0 +configure:14947: result: yes +configure:14947: checking for setlocale +configure:14947: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +configure:14947: $? = 0 +configure:14947: result: yes +configure:14947: checking for snprintf +configure:14947: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +conftest.c:110:6: warning: conflicting types for built-in function 'snprintf' [-Wbuiltin-declaration-mismatch] + char snprintf (); + ^~~~~~~~ +configure:14947: $? = 0 +configure:14947: result: yes +configure:14947: checking for wcslen +configure:14947: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +configure:14947: $? = 0 +configure:14947: result: yes +configure:14959: checking whether _snprintf is declared +configure:14979: gcc -c -g -O2 conftest.c >&5 +conftest.c: In function 'main': +conftest.c:95:22: error: '_snprintf' undeclared (first use in this function); did you mean 'vsnprintf'? + char *p = (char *) _snprintf; + ^~~~~~~~~ + vsnprintf +conftest.c:95:22: note: each undeclared identifier is reported only once for each function it appears in +configure:14979: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "XChat" +| #define PACKAGE_TARNAME "xchat" +| #define PACKAGE_VERSION "2.8.8" +| #define PACKAGE_STRING "XChat 2.8.8" +| #define PACKAGE_BUGREPORT "http://www.xchat.org/" +| #define PACKAGE_URL "" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define GETTEXT_PACKAGE "xchat" +| #define HAVE_VISIBILITY 1 +| #define HAVE_STDINT_H_WITH_UINTMAX 1 +| #define HAVE_ALLOCA_H 1 +| #define HAVE_ALLOCA 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_PARAM_H 1 +| #define HAVE_GETPAGESIZE 1 +| #define HAVE_MMAP 1 +| #define INTDIV0_RAISES_SIGFPE 1 +| #define HAVE_INTTYPES_H_WITH_UINTMAX 1 +| #define HAVE_UNSIGNED_LONG_LONG_INT 1 +| #define HAVE_UINTMAX_T 1 +| #define HAVE_INTTYPES_H 1 +| #define __EXTENSIONS__ 1 +| #define _ALL_SOURCE 1 +| #define _GNU_SOURCE 1 +| #define _POSIX_PTHREAD_SEMANTICS 1 +| #define _TANDEM_SOURCE 1 +| #define USE_POSIX_THREADS 1 +| #define USE_POSIX_THREADS_WEAK 1 +| #define HAVE_PTHREAD_RWLOCK 1 +| #define HAVE_PTHREAD_MUTEX_RECURSIVE 1 +| #define HAVE_BUILTIN_EXPECT 1 +| #define HAVE_ARGZ_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_LIMITS_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_PARAM_H 1 +| #define HAVE_GETCWD 1 +| #define HAVE_GETEGID 1 +| #define HAVE_GETEUID 1 +| #define HAVE_GETGID 1 +| #define HAVE_GETUID 1 +| #define HAVE_MEMPCPY 1 +| #define HAVE_MUNMAP 1 +| #define HAVE_STPCPY 1 +| #define HAVE_STRCASECMP 1 +| #define HAVE_STRDUP 1 +| #define HAVE_STRTOUL 1 +| #define HAVE_TSEARCH 1 +| #define HAVE_ARGZ_COUNT 1 +| #define HAVE_ARGZ_STRINGIFY 1 +| #define HAVE_ARGZ_NEXT 1 +| #define HAVE___FSETLOCKING 1 +| #define HAVE_DECL_FEOF_UNLOCKED 1 +| #define HAVE_DECL_FGETS_UNLOCKED 1 +| #define HAVE_ICONV 1 +| #define ICONV_CONST +| #define HAVE_NL_LOCALE_NAME 1 +| #define HAVE_LONG_LONG_INT 1 +| #define HAVE_WCHAR_T 1 +| #define HAVE_WINT_T 1 +| #define HAVE_INTMAX_T 1 +| #define HAVE_POSIX_PRINTF 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_STDDEF_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_ASPRINTF 1 +| #define HAVE_FWPRINTF 1 +| #define HAVE_PUTENV 1 +| #define HAVE_SETENV 1 +| #define HAVE_SETLOCALE 1 +| #define HAVE_SNPRINTF 1 +| #define HAVE_WCSLEN 1 +| /* end confdefs.h. */ +| #include <stdio.h> +| int +| main () +| { +| +| #ifndef _snprintf +| char *p = (char *) _snprintf; +| #endif +| +| ; +| return 0; +| } +configure:14986: result: no +configure:15000: checking whether _snwprintf is declared +configure:15020: gcc -c -g -O2 conftest.c >&5 +conftest.c: In function 'main': +conftest.c:96:22: error: '_snwprintf' undeclared (first use in this function); did you mean 'vsnprintf'? + char *p = (char *) _snwprintf; + ^~~~~~~~~~ + vsnprintf +conftest.c:96:22: note: each undeclared identifier is reported only once for each function it appears in +configure:15020: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "XChat" +| #define PACKAGE_TARNAME "xchat" +| #define PACKAGE_VERSION "2.8.8" +| #define PACKAGE_STRING "XChat 2.8.8" +| #define PACKAGE_BUGREPORT "http://www.xchat.org/" +| #define PACKAGE_URL "" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define GETTEXT_PACKAGE "xchat" +| #define HAVE_VISIBILITY 1 +| #define HAVE_STDINT_H_WITH_UINTMAX 1 +| #define HAVE_ALLOCA_H 1 +| #define HAVE_ALLOCA 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_PARAM_H 1 +| #define HAVE_GETPAGESIZE 1 +| #define HAVE_MMAP 1 +| #define INTDIV0_RAISES_SIGFPE 1 +| #define HAVE_INTTYPES_H_WITH_UINTMAX 1 +| #define HAVE_UNSIGNED_LONG_LONG_INT 1 +| #define HAVE_UINTMAX_T 1 +| #define HAVE_INTTYPES_H 1 +| #define __EXTENSIONS__ 1 +| #define _ALL_SOURCE 1 +| #define _GNU_SOURCE 1 +| #define _POSIX_PTHREAD_SEMANTICS 1 +| #define _TANDEM_SOURCE 1 +| #define USE_POSIX_THREADS 1 +| #define USE_POSIX_THREADS_WEAK 1 +| #define HAVE_PTHREAD_RWLOCK 1 +| #define HAVE_PTHREAD_MUTEX_RECURSIVE 1 +| #define HAVE_BUILTIN_EXPECT 1 +| #define HAVE_ARGZ_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_LIMITS_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_PARAM_H 1 +| #define HAVE_GETCWD 1 +| #define HAVE_GETEGID 1 +| #define HAVE_GETEUID 1 +| #define HAVE_GETGID 1 +| #define HAVE_GETUID 1 +| #define HAVE_MEMPCPY 1 +| #define HAVE_MUNMAP 1 +| #define HAVE_STPCPY 1 +| #define HAVE_STRCASECMP 1 +| #define HAVE_STRDUP 1 +| #define HAVE_STRTOUL 1 +| #define HAVE_TSEARCH 1 +| #define HAVE_ARGZ_COUNT 1 +| #define HAVE_ARGZ_STRINGIFY 1 +| #define HAVE_ARGZ_NEXT 1 +| #define HAVE___FSETLOCKING 1 +| #define HAVE_DECL_FEOF_UNLOCKED 1 +| #define HAVE_DECL_FGETS_UNLOCKED 1 +| #define HAVE_ICONV 1 +| #define ICONV_CONST +| #define HAVE_NL_LOCALE_NAME 1 +| #define HAVE_LONG_LONG_INT 1 +| #define HAVE_WCHAR_T 1 +| #define HAVE_WINT_T 1 +| #define HAVE_INTMAX_T 1 +| #define HAVE_POSIX_PRINTF 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_STDDEF_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_ASPRINTF 1 +| #define HAVE_FWPRINTF 1 +| #define HAVE_PUTENV 1 +| #define HAVE_SETENV 1 +| #define HAVE_SETLOCALE 1 +| #define HAVE_SNPRINTF 1 +| #define HAVE_WCSLEN 1 +| #define HAVE_DECL__SNPRINTF 0 +| /* end confdefs.h. */ +| #include <stdio.h> +| int +| main () +| { +| +| #ifndef _snwprintf +| char *p = (char *) _snwprintf; +| #endif +| +| ; +| return 0; +| } +configure:15027: result: no +configure:15042: checking whether getc_unlocked is declared +configure:15062: gcc -c -g -O2 conftest.c >&5 +configure:15062: $? = 0 +configure:15069: result: yes +configure:15108: checking for nl_langinfo and CODESET +configure:15124: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +configure:15124: $? = 0 +configure:15133: result: yes +configure:15142: checking for LC_MESSAGES +configure:15158: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +configure:15158: $? = 0 +configure:15166: result: yes +configure:15317: checking for CFPreferencesCopyAppValue +configure:15344: result: no +configure:15351: checking for CFLocaleCopyCurrent +configure:15378: result: no +configure:15413: checking whether included gettext is requested +configure:15423: result: no +configure:15446: checking for GNU gettext in libc +configure:15466: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c >&5 +configure:15466: $? = 0 +configure:15475: result: yes +configure:16038: checking whether to use NLS +configure:16040: result: yes +configure:16043: checking where the gettext function comes from +configure:16054: result: libc +configure:16164: checking for sed +configure:16182: found /bin/sed +configure:16194: result: /bin/sed +configure:16208: checking for uname +configure:16226: found /bin/uname +configure:16238: result: /bin/uname +configure:16249: checking system type +configure:16252: result: Linux +configure:16482: checking for pkg-config +configure:16500: found /usr/bin/pkg-config +configure:16512: result: /usr/bin/pkg-config +configure:16537: checking pkg-config is at least version 0.16 +configure:16540: result: yes +configure:16558: checking for GLIB - version >= 2.0.3 +configure:16672: gcc -o conftest -g -O2 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -lgmodule-2.0 conftest.c -lglib-2.0 >&5 +configure:16672: $? = 0 +configure:16672: ./conftest +configure:16672: $? = 0 +configure:16686: result: yes (version 2.56.4) +configure:16782: checking for pkg-config +configure:16813: result: /usr/bin/pkg-config +configure:16835: checking for GTK+ - version >= 2.10.0 +configure:16945: gcc -o conftest -g -O2 -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 -lgmodule-2.0 conftest.c -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype >&5 +configure:16945: $? = 0 +configure:16945: ./conftest +configure:16945: $? = 0 +configure:16959: result: yes (version 2.24.32) +configure:17057: checking for gconftool-2 +configure:17075: found /usr/bin/gconftool-2 +configure:17088: result: /usr/bin/gconftool-2 +configure:17173: checking for XSetWMHints in -lX11 +configure:17198: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c -lX11 >&5 +configure:17198: $? = 0 +configure:17207: result: yes +configure:17227: checking for perl +configure:17245: found /usr/bin/perl +configure:17257: result: /usr/bin/perl +configure:17265: checking for Perl compile flags +configure:17281: result: ok +configure:17290: checking for perl >= 5.8.0 +configure:17294: result: yes +configure:17296: checking if perl plugin will be backward compatible +configure:17299: result: yes +configure:17320: checking for python2 +configure:17338: found /usr/bin/python2 +configure:17350: result: /usr/bin/python2 +configure:17403: checking Python version +configure:17409: result: 2.7 +configure:17412: checking Python compile flags +configure:17419: result: ok +configure:17434: checking for location of tclConfig.sh +configure:17447: result: /usr/lib/tclConfig.sh +configure:17459: checking for select +configure:17459: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c -lX11 >&5 +configure:17459: $? = 0 +configure:17459: result: yes +configure:17697: checking for select in -lsocket +configure:17722: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c -lsocket -lX11 >&5 +/usr/bin/ld: cannot find -lsocket +collect2: error: ld returned 1 exit status +configure:17722: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "XChat" +| #define PACKAGE_TARNAME "xchat" +| #define PACKAGE_VERSION "2.8.8" +| #define PACKAGE_STRING "XChat 2.8.8" +| #define PACKAGE_BUGREPORT "http://www.xchat.org/" +| #define PACKAGE_URL "" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define GETTEXT_PACKAGE "xchat" +| #define HAVE_VISIBILITY 1 +| #define HAVE_STDINT_H_WITH_UINTMAX 1 +| #define HAVE_ALLOCA_H 1 +| #define HAVE_ALLOCA 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_PARAM_H 1 +| #define HAVE_GETPAGESIZE 1 +| #define HAVE_MMAP 1 +| #define INTDIV0_RAISES_SIGFPE 1 +| #define HAVE_INTTYPES_H_WITH_UINTMAX 1 +| #define HAVE_UNSIGNED_LONG_LONG_INT 1 +| #define HAVE_UINTMAX_T 1 +| #define HAVE_INTTYPES_H 1 +| #define __EXTENSIONS__ 1 +| #define _ALL_SOURCE 1 +| #define _GNU_SOURCE 1 +| #define _POSIX_PTHREAD_SEMANTICS 1 +| #define _TANDEM_SOURCE 1 +| #define USE_POSIX_THREADS 1 +| #define USE_POSIX_THREADS_WEAK 1 +| #define HAVE_PTHREAD_RWLOCK 1 +| #define HAVE_PTHREAD_MUTEX_RECURSIVE 1 +| #define HAVE_BUILTIN_EXPECT 1 +| #define HAVE_ARGZ_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_LIMITS_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_PARAM_H 1 +| #define HAVE_GETCWD 1 +| #define HAVE_GETEGID 1 +| #define HAVE_GETEUID 1 +| #define HAVE_GETGID 1 +| #define HAVE_GETUID 1 +| #define HAVE_MEMPCPY 1 +| #define HAVE_MUNMAP 1 +| #define HAVE_STPCPY 1 +| #define HAVE_STRCASECMP 1 +| #define HAVE_STRDUP 1 +| #define HAVE_STRTOUL 1 +| #define HAVE_TSEARCH 1 +| #define HAVE_ARGZ_COUNT 1 +| #define HAVE_ARGZ_STRINGIFY 1 +| #define HAVE_ARGZ_NEXT 1 +| #define HAVE___FSETLOCKING 1 +| #define HAVE_DECL_FEOF_UNLOCKED 1 +| #define HAVE_DECL_FGETS_UNLOCKED 1 +| #define HAVE_ICONV 1 +| #define ICONV_CONST +| #define HAVE_NL_LOCALE_NAME 1 +| #define HAVE_LONG_LONG_INT 1 +| #define HAVE_WCHAR_T 1 +| #define HAVE_WINT_T 1 +| #define HAVE_INTMAX_T 1 +| #define HAVE_POSIX_PRINTF 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_STDDEF_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_ASPRINTF 1 +| #define HAVE_FWPRINTF 1 +| #define HAVE_PUTENV 1 +| #define HAVE_SETENV 1 +| #define HAVE_SETLOCALE 1 +| #define HAVE_SNPRINTF 1 +| #define HAVE_WCSLEN 1 +| #define HAVE_DECL__SNPRINTF 0 +| #define HAVE_DECL__SNWPRINTF 0 +| #define HAVE_DECL_GETC_UNLOCKED 1 +| #define HAVE_LANGINFO_CODESET 1 +| #define HAVE_LC_MESSAGES 1 +| #define ENABLE_NLS 1 +| #define HAVE_GETTEXT 1 +| #define HAVE_DCGETTEXT 1 +| #define USING_LINUX 1 +| #define USE_XLIB 1 +| #define HAVE_LIBX11 1 +| #define OLD_PERL 1 +| /* end confdefs.h. */ +| +| /* Override any GCC internal prototype to avoid an error. +| Use char because int might match the return type of a GCC +| builtin and then its argument prototype would still apply. */ +| #ifdef __cplusplus +| extern "C" +| #endif +| char select (); +| int +| main () +| { +| return select (); +| ; +| return 0; +| } +configure:17731: result: no +configure:17774: checking for pkg-config +configure:17792: found /usr/bin/pkg-config +configure:17804: result: /usr/bin/pkg-config +configure:17812: checking for openssl through pkg-config +configure:17819: result: yes +configure:17916: checking for dlopen +configure:17916: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c -lX11 -lssl -lcrypto >&5 +/tmp/ccLlExWz.o: In function `main': +/home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/conftest.c:136: undefined reference to `dlopen' +collect2: error: ld returned 1 exit status +configure:17916: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "XChat" +| #define PACKAGE_TARNAME "xchat" +| #define PACKAGE_VERSION "2.8.8" +| #define PACKAGE_STRING "XChat 2.8.8" +| #define PACKAGE_BUGREPORT "http://www.xchat.org/" +| #define PACKAGE_URL "" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define GETTEXT_PACKAGE "xchat" +| #define HAVE_VISIBILITY 1 +| #define HAVE_STDINT_H_WITH_UINTMAX 1 +| #define HAVE_ALLOCA_H 1 +| #define HAVE_ALLOCA 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_PARAM_H 1 +| #define HAVE_GETPAGESIZE 1 +| #define HAVE_MMAP 1 +| #define INTDIV0_RAISES_SIGFPE 1 +| #define HAVE_INTTYPES_H_WITH_UINTMAX 1 +| #define HAVE_UNSIGNED_LONG_LONG_INT 1 +| #define HAVE_UINTMAX_T 1 +| #define HAVE_INTTYPES_H 1 +| #define __EXTENSIONS__ 1 +| #define _ALL_SOURCE 1 +| #define _GNU_SOURCE 1 +| #define _POSIX_PTHREAD_SEMANTICS 1 +| #define _TANDEM_SOURCE 1 +| #define USE_POSIX_THREADS 1 +| #define USE_POSIX_THREADS_WEAK 1 +| #define HAVE_PTHREAD_RWLOCK 1 +| #define HAVE_PTHREAD_MUTEX_RECURSIVE 1 +| #define HAVE_BUILTIN_EXPECT 1 +| #define HAVE_ARGZ_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_LIMITS_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_PARAM_H 1 +| #define HAVE_GETCWD 1 +| #define HAVE_GETEGID 1 +| #define HAVE_GETEUID 1 +| #define HAVE_GETGID 1 +| #define HAVE_GETUID 1 +| #define HAVE_MEMPCPY 1 +| #define HAVE_MUNMAP 1 +| #define HAVE_STPCPY 1 +| #define HAVE_STRCASECMP 1 +| #define HAVE_STRDUP 1 +| #define HAVE_STRTOUL 1 +| #define HAVE_TSEARCH 1 +| #define HAVE_ARGZ_COUNT 1 +| #define HAVE_ARGZ_STRINGIFY 1 +| #define HAVE_ARGZ_NEXT 1 +| #define HAVE___FSETLOCKING 1 +| #define HAVE_DECL_FEOF_UNLOCKED 1 +| #define HAVE_DECL_FGETS_UNLOCKED 1 +| #define HAVE_ICONV 1 +| #define ICONV_CONST +| #define HAVE_NL_LOCALE_NAME 1 +| #define HAVE_LONG_LONG_INT 1 +| #define HAVE_WCHAR_T 1 +| #define HAVE_WINT_T 1 +| #define HAVE_INTMAX_T 1 +| #define HAVE_POSIX_PRINTF 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_STDDEF_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_ASPRINTF 1 +| #define HAVE_FWPRINTF 1 +| #define HAVE_PUTENV 1 +| #define HAVE_SETENV 1 +| #define HAVE_SETLOCALE 1 +| #define HAVE_SNPRINTF 1 +| #define HAVE_WCSLEN 1 +| #define HAVE_DECL__SNPRINTF 0 +| #define HAVE_DECL__SNWPRINTF 0 +| #define HAVE_DECL_GETC_UNLOCKED 1 +| #define HAVE_LANGINFO_CODESET 1 +| #define HAVE_LC_MESSAGES 1 +| #define ENABLE_NLS 1 +| #define HAVE_GETTEXT 1 +| #define HAVE_DCGETTEXT 1 +| #define USING_LINUX 1 +| #define USE_XLIB 1 +| #define HAVE_LIBX11 1 +| #define OLD_PERL 1 +| #define USE_OPENSSL 1 +| /* end confdefs.h. */ +| /* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen. +| For example, HP-UX 11i <limits.h> declares gettimeofday. */ +| #define dlopen innocuous_dlopen +| +| /* System header to define __stub macros and hopefully few prototypes, +| which can conflict with char dlopen (); below. +| Prefer <limits.h> to <assert.h> if __STDC__ is defined, since +| <limits.h> exists even on freestanding compilers. */ +| +| #ifdef __STDC__ +| # include <limits.h> +| #else +| # include <assert.h> +| #endif +| +| #undef dlopen +| +| /* Override any GCC internal prototype to avoid an error. +| Use char because int might match the return type of a GCC +| builtin and then its argument prototype would still apply. */ +| #ifdef __cplusplus +| extern "C" +| #endif +| char dlopen (); +| /* The GNU C library defines this for functions which it implements +| to always fail with ENOSYS. Some functions are actually named +| something starting with __ and the normal name is an alias. */ +| #if defined __stub_dlopen || defined __stub___dlopen +| choke me +| #endif +| +| int +| main () +| { +| return dlopen (); +| ; +| return 0; +| } +configure:17916: result: no +configure:17926: checking for dlopen in -ldl +configure:17951: gcc -o conftest -g -O2 -lgmodule-2.0 conftest.c -ldl -lX11 -lssl -lcrypto >&5 +configure:17951: $? = 0 +configure:17960: result: yes +configure:17975: checking for pkg-config +configure:18005: result: /usr/bin/pkg-config +configure:18032: checking for DBUS +configure:18039: $PKG_CONFIG --exists --print-errors "dbus-1 >= 0.60 dbus-glib-1 >= 0.60 gthread-2.0" +configure:18042: $? = 0 +configure:18055: $PKG_CONFIG --exists --print-errors "dbus-1 >= 0.60 dbus-glib-1 >= 0.60 gthread-2.0" +configure:18058: $? = 0 +configure:18101: result: yes +configure:18107: checking for dbus-binding-tool +configure:18125: found /usr/bin/dbus-binding-tool +configure:18138: result: /usr/bin/dbus-binding-tool +configure:18148: checking for glib-genmarshal +configure:18166: found /usr/bin/glib-genmarshal +configure:18179: result: /usr/bin/glib-genmarshal +configure:18321: checking for LIBSEXY +configure:18328: $PKG_CONFIG --exists --print-errors "libsexy >= 0.1.8" +Package libsexy was not found in the pkg-config search path. +Perhaps you should add the directory containing `libsexy.pc' +to the PKG_CONFIG_PATH environment variable +No package 'libsexy' found +configure:18331: $? = 1 +configure:18344: $PKG_CONFIG --exists --print-errors "libsexy >= 0.1.8" +Package libsexy was not found in the pkg-config search path. +Perhaps you should add the directory containing `libsexy.pc' +to the PKG_CONFIG_PATH environment variable +No package 'libsexy' found +configure:18347: $? = 1 +No package 'libsexy' found +configure:18374: result: no +configure:18376: result: no +configure:18731: checking if gcc accepts -Wno-pointer-sign +configure:18750: gcc -c -Wno-pointer-sign conftest.c >&5 +configure:18750: $? = 0 +configure:18753: result: yes +configure:18770: checking if gcc accepts -funsigned-char +configure:18789: gcc -c -funsigned-char conftest.c >&5 +configure:18789: $? = 0 +configure:18792: result: yes +configure:18810: checking for modern sigaction +configure:18825: gcc -c -g -O2 -Wall -pipe -Wno-pointer-sign -funsigned-char conftest.c >&5 +conftest.c: In function 'main': +conftest.c:111:14: warning: unused variable 'si' [-Wunused-variable] + siginfo_t *si; + ^~ +conftest.c:110:18: warning: variable 'act' set but not used [-Wunused-but-set-variable] + struct sigaction act; + ^~~ +configure:18825: $? = 0 +configure:18827: result: yes +configure:18840: checking for gdk-pixbuf-csource +configure:18858: found /usr/bin/gdk-pixbuf-csource +configure:18870: result: /usr/bin/gdk-pixbuf-csource +configure:18886: checking for snprintf +configure:18886: result: yes +configure:18886: checking for vsnprintf +configure:18886: gcc -o conftest -g -O2 -Wall -pipe -Wno-pointer-sign -funsigned-char -lgmodule-2.0 conftest.c -lX11 -lssl -lcrypto -ldl -Wl,--export-dynamic -pthread -lglib-2.0 >&5 +conftest.c:131:6: warning: conflicting types for built-in function 'vsnprintf' [-Wbuiltin-declaration-mismatch] + char vsnprintf (); + ^~~~~~~~~ +configure:18886: $? = 0 +configure:18886: result: yes +configure:18886: checking for memrchr +configure:18886: gcc -o conftest -g -O2 -Wall -pipe -Wno-pointer-sign -funsigned-char -lgmodule-2.0 conftest.c -lX11 -lssl -lcrypto -ldl -Wl,--export-dynamic -pthread -lglib-2.0 >&5 +configure:18886: $? = 0 +configure:18886: result: yes +configure:18886: checking for strtoull +configure:18886: gcc -o conftest -g -O2 -Wall -pipe -Wno-pointer-sign -funsigned-char -lgmodule-2.0 conftest.c -lX11 -lssl -lcrypto -ldl -Wl,--export-dynamic -pthread -lglib-2.0 >&5 +configure:18886: $? = 0 +configure:18886: result: yes +configure:18897: checking for gethostbyname +configure:18897: gcc -o conftest -g -O2 -Wall -pipe -Wno-pointer-sign -funsigned-char -lgmodule-2.0 conftest.c -lX11 -lssl -lcrypto -ldl -Wl,--export-dynamic -pthread -lglib-2.0 >&5 +configure:18897: $? = 0 +configure:18897: result: yes +configure:18995: checking for gethostname +configure:18995: gcc -o conftest -g -O2 -Wall -pipe -Wno-pointer-sign -funsigned-char -lgmodule-2.0 conftest.c -lX11 -lssl -lcrypto -ldl -Wl,--export-dynamic -pthread -lglib-2.0 >&5 +configure:18995: $? = 0 +configure:18995: result: yes +configure:19049: checking for strings.h +configure:19049: result: yes +configure:19060: checking for socklen_t +configure:19085: result: yes +configure:19324: creating ./config.status + +## ---------------------- ## +## Running config.status. ## +## ---------------------- ## + +This file was extended by XChat config.status 2.8.8, which was +generated by GNU Autoconf 2.65. Invocation command line was + + CONFIG_FILES = + CONFIG_HEADERS = + CONFIG_LINKS = + CONFIG_COMMANDS = + $ ./config.status + +on somejuan + +config.status:1299: creating Makefile +config.status:1299: creating src/Makefile +config.status:1299: creating src/common/Makefile +config.status:1299: creating src/common/dbus/Makefile +config.status:1299: creating src/fe-text/Makefile +config.status:1299: creating src/fe-gtk/Makefile +config.status:1299: creating src/pixmaps/Makefile +config.status:1299: creating plugins/Makefile +config.status:1299: creating plugins/python/Makefile +config.status:1299: creating plugins/perl/Makefile +config.status:1299: creating plugins/tcl/Makefile +config.status:1299: creating intl/Makefile +config.status:1299: creating po/Makefile.in +config.status:1299: creating config.h +config.status:1519: executing depfiles commands +config.status:1519: executing libtool commands +config.status:1519: executing po-directories commands + +## ---------------- ## +## Cache variables. ## +## ---------------- ## + +ac_cv_build=x86_64-unknown-linux-gnu +ac_cv_c_compiler_gnu=yes +ac_cv_c_inline=inline +ac_cv_env_CCASFLAGS_set= +ac_cv_env_CCASFLAGS_value= +ac_cv_env_CCAS_set= +ac_cv_env_CCAS_value= +ac_cv_env_CC_set= +ac_cv_env_CC_value= +ac_cv_env_CFLAGS_set= +ac_cv_env_CFLAGS_value= +ac_cv_env_CPPFLAGS_set= +ac_cv_env_CPPFLAGS_value= +ac_cv_env_CPP_set= +ac_cv_env_CPP_value= +ac_cv_env_DBUS_CFLAGS_set= +ac_cv_env_DBUS_CFLAGS_value= +ac_cv_env_DBUS_LIBS_set= +ac_cv_env_DBUS_LIBS_value= +ac_cv_env_GTKSPELL_CFLAGS_set= +ac_cv_env_GTKSPELL_CFLAGS_value= +ac_cv_env_GTKSPELL_LIBS_set= +ac_cv_env_GTKSPELL_LIBS_value= +ac_cv_env_LDFLAGS_set=set +ac_cv_env_LDFLAGS_value=-lgmodule-2.0 +ac_cv_env_LIBSEXY_CFLAGS_set= +ac_cv_env_LIBSEXY_CFLAGS_value= +ac_cv_env_LIBSEXY_LIBS_set= +ac_cv_env_LIBSEXY_LIBS_value= +ac_cv_env_LIBS_set= +ac_cv_env_LIBS_value= +ac_cv_env_PKG_CONFIG_set= +ac_cv_env_PKG_CONFIG_value= +ac_cv_env_build_alias_set= +ac_cv_env_build_alias_value= +ac_cv_env_host_alias_set= +ac_cv_env_host_alias_value= +ac_cv_env_target_alias_set= +ac_cv_env_target_alias_value= +ac_cv_func___fsetlocking=yes +ac_cv_func_alloca_works=yes +ac_cv_func_argz_count=yes +ac_cv_func_argz_next=yes +ac_cv_func_argz_stringify=yes +ac_cv_func_asprintf=yes +ac_cv_func_dlopen=no +ac_cv_func_fwprintf=yes +ac_cv_func_getcwd=yes +ac_cv_func_getegid=yes +ac_cv_func_geteuid=yes +ac_cv_func_getgid=yes +ac_cv_func_gethostbyname=yes +ac_cv_func_gethostname=yes +ac_cv_func_getpagesize=yes +ac_cv_func_getuid=yes +ac_cv_func_mempcpy=yes +ac_cv_func_memrchr=yes +ac_cv_func_mmap_fixed_mapped=yes +ac_cv_func_munmap=yes +ac_cv_func_putenv=yes +ac_cv_func_select=yes +ac_cv_func_setenv=yes +ac_cv_func_setlocale=yes +ac_cv_func_snprintf=yes +ac_cv_func_stpcpy=yes +ac_cv_func_strcasecmp=yes +ac_cv_func_strdup=yes +ac_cv_func_strtoul=yes +ac_cv_func_strtoull=yes +ac_cv_func_tsearch=yes +ac_cv_func_vsnprintf=yes +ac_cv_func_wcslen=yes +ac_cv_gnu_library_2=yes +ac_cv_gnu_library_2_1=yes +ac_cv_have_decl__snprintf=no +ac_cv_have_decl__snwprintf=no +ac_cv_have_decl_feof_unlocked=yes +ac_cv_have_decl_fgets_unlocked=yes +ac_cv_have_decl_getc_unlocked=yes +ac_cv_header_argz_h=yes +ac_cv_header_dlfcn_h=yes +ac_cv_header_inttypes_h=yes +ac_cv_header_limits_h=yes +ac_cv_header_memory_h=yes +ac_cv_header_minix_config_h=no +ac_cv_header_pthread_h=yes +ac_cv_header_stdc=yes +ac_cv_header_stddef_h=yes +ac_cv_header_stdint_h=yes +ac_cv_header_stdlib_h=yes +ac_cv_header_string_h=yes +ac_cv_header_strings_h=yes +ac_cv_header_sys_param_h=yes +ac_cv_header_sys_stat_h=yes +ac_cv_header_sys_types_h=yes +ac_cv_header_unistd_h=yes +ac_cv_host=x86_64-unknown-linux-gnu +ac_cv_lib_X11_XSetWMHints=yes +ac_cv_lib_dl_dlopen=yes +ac_cv_lib_pthread_pthread_kill=yes +ac_cv_lib_socket_select=no +ac_cv_objext=o +ac_cv_path_DBUS_BINDING_TOOL=/usr/bin/dbus-binding-tool +ac_cv_path_EGREP='/usr/local/bin/grep -E' +ac_cv_path_FGREP='/usr/local/bin/grep -F' +ac_cv_path_GCONFTOOL=/usr/bin/gconftool-2 +ac_cv_path_GLIB_GENMARSHAL=/usr/bin/glib-genmarshal +ac_cv_path_GMSGFMT=/usr/bin/msgfmt +ac_cv_path_GREP=/usr/local/bin/grep +ac_cv_path_MSGFMT=/usr/bin/msgfmt +ac_cv_path_MSGMERGE=/usr/bin/msgmerge +ac_cv_path_PKG_CONFIG=/usr/bin/pkg-config +ac_cv_path_SED=/bin/sed +ac_cv_path_XGETTEXT=/usr/bin/xgettext +ac_cv_path_ac_pt_PKG_CONFIG=/usr/bin/pkg-config +ac_cv_path_gdkpixbufcsourcepath=/usr/bin/gdk-pixbuf-csource +ac_cv_path_install='/usr/bin/install -c' +ac_cv_path_mkdir=/bin/mkdir +ac_cv_path_perlpath=/usr/bin/perl +ac_cv_path_pkgconfigpath=/usr/bin/pkg-config +ac_cv_path_pythonpath=/usr/bin/python2 +ac_cv_path_sedpath=/bin/sed +ac_cv_path_unamepath=/bin/uname +ac_cv_prog_AWK=gawk +ac_cv_prog_CPP='gcc -E' +ac_cv_prog_INTLBISON=bison +ac_cv_prog_ac_ct_AR=ar +ac_cv_prog_ac_ct_CC=gcc +ac_cv_prog_ac_ct_OBJDUMP=objdump +ac_cv_prog_ac_ct_RANLIB=ranlib +ac_cv_prog_ac_ct_STRIP=strip +ac_cv_prog_cc_c89= +ac_cv_prog_cc_g=yes +ac_cv_prog_cc_gcc_c_o=yes +ac_cv_prog_make_make_set=yes +ac_cv_safe_to_define___extensions__=yes +ac_cv_type_long_long_int=yes +ac_cv_type_pthread_rwlock_t=yes +ac_cv_type_ptrdiff_t=yes +ac_cv_type_size_t=yes +ac_cv_type_socklen_t=yes +ac_cv_type_unsigned_long_long_int=yes +ac_cv_working_alloca_h=yes +acl_cv_hardcode_direct=no +acl_cv_hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +acl_cv_hardcode_libdir_separator= +acl_cv_hardcode_minus_L=no +acl_cv_libext=a +acl_cv_path_LD='/usr/bin/ld -m elf_x86_64' +acl_cv_prog_gnu_ld=yes +acl_cv_rpath=done +acl_cv_shlibext=so +acl_cv_wl=-Wl, +am_cv_CCAS_dependencies_compiler_type=gcc3 +am_cv_CC_dependencies_compiler_type=gcc3 +am_cv_func_iconv=yes +am_cv_func_iconv_works=yes +am_cv_langinfo_codeset=yes +am_cv_lib_iconv=yes +am_cv_proto_iconv='extern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);' +am_cv_proto_iconv_arg1= +gl_cv_cc_visibility=yes +gl_cv_header_inttypes_h=yes +gl_cv_header_stdint_h=yes +gl_cv_size_max=yes +gt_cv_c_intmax_t=yes +gt_cv_c_wchar_t=yes +gt_cv_c_wint_t=yes +gt_cv_func_CFLocaleCopyCurrent=no +gt_cv_func_CFPreferencesCopyAppValue=no +gt_cv_func_gnugettext1_libc=yes +gt_cv_func_printf_posix=yes +gt_cv_int_divbyzero_sigfpe=yes +gt_cv_inttypes_pri_broken=no +gt_cv_nl_locale_name=yes +gt_cv_val_LC_MESSAGES=yes +lt_cv_deplibs_check_method=pass_all +lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_ld_reload_flag=-r +lt_cv_nm_interface='BSD nm' +lt_cv_objdir=.libs +lt_cv_path_LD=/usr/bin/ld +lt_cv_path_NM='/usr/bin/nm -B' +lt_cv_prog_compiler_c_o=yes +lt_cv_prog_compiler_pic_works=yes +lt_cv_prog_compiler_rtti_exceptions=no +lt_cv_prog_compiler_static_works=yes +lt_cv_prog_gnu_ld=yes +lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p'\''' +lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \([^ ]*\) $/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"\2", (void *) \&\2},/p'\''' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='sed -n -e '\''s/^: \([^ ]*\) $/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \(lib[^ ]*\)$/ {"\2", (void *) \&\2},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"lib\2", (void *) \&\2},/p'\''' +lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^T .* \(.*\)$/extern int \1();/p'\'' -e '\''s/^[ABCDGIRSTW]* .* \(.*\)$/extern char \1;/p'\''' +lt_cv_sys_max_cmd_len=1879296 +nls_cv_force_use_gnu_gettext=no +nls_cv_header_intl= +nls_cv_header_libgt= +nls_cv_use_gnu_gettext=no +pkg_cv_DBUS_CFLAGS='-pthread -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include' +pkg_cv_DBUS_LIBS='-ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0' + +## ----------------- ## +## Output variables. ## +## ----------------- ## + +ACLOCAL='${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run aclocal-1.11' +ALLOCA='' +AMDEPBACKSLASH='\' +AMDEP_FALSE='#' +AMDEP_TRUE='' +AMTAR='${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run tar' +AR='ar' +AUTOCONF='${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run autoconf' +AUTOHEADER='${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run autoheader' +AUTOMAKE='${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run automake-1.11' +AWK='gawk' +BUILD_INCLUDED_LIBINTL='no' +CATOBJEXT='.gmo' +CC='gcc' +CCAS='gcc' +CCASDEPMODE='depmode=gcc3' +CCASFLAGS='-g -O2' +CCDEPMODE='depmode=gcc3' +CFLAGS='-g -O2 -Wall -pipe -Wno-pointer-sign -funsigned-char ' +CFLAG_VISIBILITY='-fvisibility=hidden' +COMMON_CFLAGS='-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -pthread -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include' +COMMON_LIBS='-lglib-2.0 -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0' +CPP='gcc -E' +CPPFLAGS=' ' +CYGPATH_W='echo' +DATADIR='${prefix}/share' +DATADIRNAME='share' +DBUS_BINDING_TOOL='/usr/bin/dbus-binding-tool' +DBUS_CFLAGS='-pthread -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include' +DBUS_LIBS='-ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0' +DBUS_SERVICES_DIR='${prefix}/share/dbus-1/services' +DEFS='-DHAVE_CONFIG_H' +DEPDIR='.deps' +DO_GCONF_FALSE='#' +DO_GCONF_TRUE='' +DO_GTK_FALSE='#' +DO_GTK_TRUE='' +DO_PERL_FALSE='#' +DO_PERL_TRUE='' +DO_PLUGIN_FALSE='#' +DO_PLUGIN_TRUE='' +DO_PYTHON_FALSE='#' +DO_PYTHON_TRUE='' +DO_TCL_FALSE='#' +DO_TCL_TRUE='' +DO_TEXT_FALSE='' +DO_TEXT_TRUE='#' +DSYMUTIL='' +DUMPBIN='' +ECHO_C='' +ECHO_N='-n' +ECHO_T='' +EGREP='/usr/local/bin/grep -E' +EXEEXT='' +FGREP='/usr/local/bin/grep -F' +GCONFTOOL='/usr/bin/gconftool-2' +GENCAT='gencat' +GETTEXT_MACRO_VERSION='0.17' +GETTEXT_PACKAGE='xchat' +GLIBC21='yes' +GLIBC2='yes' +GLIB_CFLAGS='-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include' +GLIB_GENMARSHAL='/usr/bin/glib-genmarshal' +GLIB_LIBS='-lglib-2.0' +GLIB_MKENUMS='glib-mkenums' +GMSGFMT='/usr/bin/msgfmt' +GMSGFMT_015='/usr/bin/msgfmt' +GOBJECT_QUERY='gobject-query' +GREP='/usr/local/bin/grep' +GTKSPELL_CFLAGS='' +GTKSPELL_LIBS='' +GTK_CFLAGS='-pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16' +GTK_LIBS='-lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype' +GUI_CFLAGS=' -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16' +GUI_LIBS=' -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype -Wl,--version-script,$(srcdir)/../version-script -lglib-2.0 -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0' +HAVE_ASPRINTF='1' +HAVE_POSIX_PRINTF='1' +HAVE_SNPRINTF='1' +HAVE_VISIBILITY='1' +HAVE_WPRINTF='0' +INSTALL_DATA='${INSTALL} -m 644' +INSTALL_PROGRAM='${INSTALL}' +INSTALL_SCRIPT='${INSTALL}' +INSTALL_STRIP_PROGRAM='$(install_sh) -c -s' +INSTOBJEXT='.mo' +INTLBISON='bison' +INTLLIBS='' +INTLOBJS='' +INTL_LIBTOOL_SUFFIX_PREFIX='' +INTL_MACOSX_LIBS='' +LD='/usr/bin/ld -m elf_x86_64' +LDFLAGS='-lgmodule-2.0' +LIBICONV='-liconv' +LIBINTL='' +LIBMULTITHREAD='-lpthread' +LIBOBJS='' +LIBPTH='' +LIBPTH_PREFIX='' +LIBS='-lX11 -lssl -lcrypto -ldl -Wl,--export-dynamic -pthread -lglib-2.0 ' +LIBSEXY_CFLAGS='' +LIBSEXY_LIBS='' +LIBTHREAD='' +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +LIPO='' +LN_S='ln -s' +LTLIBC='-lc' +LTLIBICONV='-liconv' +LTLIBINTL='' +LTLIBMULTITHREAD='-lpthread' +LTLIBOBJS='' +LTLIBPTH='' +LTLIBTHREAD='' +MAINT='#' +MAINTAINER_MODE_FALSE='' +MAINTAINER_MODE_TRUE='#' +MAKEINFO='${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run makeinfo' +MKDIR_P='/bin/mkdir -p' +MSGFMT='/usr/bin/msgfmt' +MSGFMT_015='/usr/bin/msgfmt' +MSGMERGE='/usr/bin/msgmerge' +NM='/usr/bin/nm -B' +NMEDIT='' +OBJDUMP='objdump' +OBJEXT='o' +OTOOL64='' +OTOOL='' +PACKAGE='xchat' +PACKAGE_BUGREPORT='http://www.xchat.org/' +PACKAGE_NAME='XChat' +PACKAGE_STRING='XChat 2.8.8' +PACKAGE_TARNAME='xchat' +PACKAGE_URL='' +PACKAGE_VERSION='2.8.8' +PATH_SEPARATOR=':' +PERL_CFLAGS=' -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/lib/x86_64-linux-gnu/perl/5.26/CORE ' +PERL_LDFLAGS='-Wl,-E -fstack-protector-strong -L/usr/local/lib -L/usr/lib/x86_64-linux-gnu/perl/5.26/CORE -lperl -ldl -lm -lpthread -lcrypt' +PKG_CONFIG='/usr/bin/pkg-config' +PLUGIN_INCLUDES='-I$(top_srcdir)/plugins' +POSUB='po' +PRI_MACROS_BROKEN='0' +PY_CFLAGS='-I/usr/include/python2.7' +PY_LIBS='-L/usr/lib/python2.7/config -lpython2.7 -lpthread -lutil' +RANLIB='ranlib' +SED='/bin/sed' +SET_MAKE='' +SHELL='/bin/bash' +STRIP='strip' +TCL_CFLAGS='-I/usr/include -I/usr/include/tcl8.6' +TCL_LIBS='-L/usr/lib/x86_64-linux-gnu -ltcl8.6 -ldl -lz -lpthread -lm' +USE_DBUS_FALSE='#' +USE_DBUS_TRUE='' +USE_INCLUDED_LIBINTL='no' +USE_LIBSEXY_FALSE='#' +USE_LIBSEXY_TRUE='' +USE_MMX_FALSE='' +USE_MMX_TRUE='#' +USE_NLS='yes' +USE_OPENSSL_FALSE='#' +USE_OPENSSL_TRUE='' +VERSION='2.8.8' +WINDRES='' +WOE32='no' +WOE32DLL='no' +XGETTEXT='/usr/bin/xgettext' +XGETTEXT_015='/usr/bin/xgettext' +XGETTEXT_EXTRA_OPTIONS='' +ac_ct_CC='gcc' +ac_ct_DUMPBIN='' +am__EXEEXT_FALSE='' +am__EXEEXT_TRUE='#' +am__fastdepCCAS_FALSE='#' +am__fastdepCCAS_TRUE='' +am__fastdepCC_FALSE='#' +am__fastdepCC_TRUE='' +am__include='include' +am__isrc='' +am__leading_dot='.' +am__quote='' +am__tar='${AMTAR} chof - "$$tardir"' +am__untar='${AMTAR} xf -' +bindir='${exec_prefix}/bin' +build='x86_64-unknown-linux-gnu' +build_alias='' +build_cpu='x86_64' +build_os='linux-gnu' +build_vendor='unknown' +datadir='${datarootdir}' +datarootdir='${prefix}/share' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +dvidir='${docdir}' +exec_prefix='/usr/local' +gdkpixbufcsourcepath='/usr/bin/gdk-pixbuf-csource' +host='x86_64-unknown-linux-gnu' +host_alias='' +host_cpu='x86_64' +host_os='linux-gnu' +host_vendor='unknown' +htmldir='${docdir}' +includedir='${prefix}/include' +infodir='${datarootdir}/info' +install_sh='${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/install-sh' +libdir='${exec_prefix}/lib' +libexecdir='${exec_prefix}/libexec' +localedir='${datarootdir}/locale' +localstatedir='${prefix}/var' +lt_ECHO='echo' +mandir='${datarootdir}/man' +mkdir_p='/bin/mkdir -p' +oldincludedir='/usr/include' +pdfdir='${docdir}' +perlpath='/usr/bin/perl' +pkgconfigpath='/usr/bin/pkg-config' +prefix='/usr/local' +program_transform_name='s,x,x,' +psdir='${docdir}' +pythonpath='/usr/bin/python2' +sbindir='${exec_prefix}/sbin' +sedpath='/bin/sed' +sharedstatedir='${prefix}/com' +sysconfdir='${prefix}/etc' +target_alias='' +unamepath='/bin/uname' +xchatlibdir='${exec_prefix}/lib/xchat' + +## ----------- ## +## confdefs.h. ## +## ----------- ## + +/* confdefs.h */ +#define PACKAGE_NAME "XChat" +#define PACKAGE_TARNAME "xchat" +#define PACKAGE_VERSION "2.8.8" +#define PACKAGE_STRING "XChat 2.8.8" +#define PACKAGE_BUGREPORT "http://www.xchat.org/" +#define PACKAGE_URL "" +#define STDC_HEADERS 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_SYS_STAT_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STRING_H 1 +#define HAVE_MEMORY_H 1 +#define HAVE_STRINGS_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_UNISTD_H 1 +#define HAVE_DLFCN_H 1 +#define LT_OBJDIR ".libs/" +#define GETTEXT_PACKAGE "xchat" +#define HAVE_VISIBILITY 1 +#define HAVE_STDINT_H_WITH_UINTMAX 1 +#define HAVE_ALLOCA_H 1 +#define HAVE_ALLOCA 1 +#define HAVE_STDLIB_H 1 +#define HAVE_UNISTD_H 1 +#define HAVE_SYS_PARAM_H 1 +#define HAVE_GETPAGESIZE 1 +#define HAVE_MMAP 1 +#define INTDIV0_RAISES_SIGFPE 1 +#define HAVE_INTTYPES_H_WITH_UINTMAX 1 +#define HAVE_UNSIGNED_LONG_LONG_INT 1 +#define HAVE_UINTMAX_T 1 +#define HAVE_INTTYPES_H 1 +#define __EXTENSIONS__ 1 +#define _ALL_SOURCE 1 +#define _GNU_SOURCE 1 +#define _POSIX_PTHREAD_SEMANTICS 1 +#define _TANDEM_SOURCE 1 +#define USE_POSIX_THREADS 1 +#define USE_POSIX_THREADS_WEAK 1 +#define HAVE_PTHREAD_RWLOCK 1 +#define HAVE_PTHREAD_MUTEX_RECURSIVE 1 +#define HAVE_BUILTIN_EXPECT 1 +#define HAVE_ARGZ_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_LIMITS_H 1 +#define HAVE_UNISTD_H 1 +#define HAVE_SYS_PARAM_H 1 +#define HAVE_GETCWD 1 +#define HAVE_GETEGID 1 +#define HAVE_GETEUID 1 +#define HAVE_GETGID 1 +#define HAVE_GETUID 1 +#define HAVE_MEMPCPY 1 +#define HAVE_MUNMAP 1 +#define HAVE_STPCPY 1 +#define HAVE_STRCASECMP 1 +#define HAVE_STRDUP 1 +#define HAVE_STRTOUL 1 +#define HAVE_TSEARCH 1 +#define HAVE_ARGZ_COUNT 1 +#define HAVE_ARGZ_STRINGIFY 1 +#define HAVE_ARGZ_NEXT 1 +#define HAVE___FSETLOCKING 1 +#define HAVE_DECL_FEOF_UNLOCKED 1 +#define HAVE_DECL_FGETS_UNLOCKED 1 +#define HAVE_ICONV 1 +#define ICONV_CONST +#define HAVE_NL_LOCALE_NAME 1 +#define HAVE_LONG_LONG_INT 1 +#define HAVE_WCHAR_T 1 +#define HAVE_WINT_T 1 +#define HAVE_INTMAX_T 1 +#define HAVE_POSIX_PRINTF 1 +#define HAVE_STDINT_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_STDDEF_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STRING_H 1 +#define HAVE_ASPRINTF 1 +#define HAVE_FWPRINTF 1 +#define HAVE_PUTENV 1 +#define HAVE_SETENV 1 +#define HAVE_SETLOCALE 1 +#define HAVE_SNPRINTF 1 +#define HAVE_WCSLEN 1 +#define HAVE_DECL__SNPRINTF 0 +#define HAVE_DECL__SNWPRINTF 0 +#define HAVE_DECL_GETC_UNLOCKED 1 +#define HAVE_LANGINFO_CODESET 1 +#define HAVE_LC_MESSAGES 1 +#define ENABLE_NLS 1 +#define HAVE_GETTEXT 1 +#define HAVE_DCGETTEXT 1 +#define USING_LINUX 1 +#define USE_XLIB 1 +#define HAVE_LIBX11 1 +#define OLD_PERL 1 +#define USE_OPENSSL 1 +#define USE_PLUGIN 1 +#define USE_DBUS 1 +#define DBUS_SERVICES_DIR "${prefix}/share/dbus-1/services" +#define USE_LIBSEXY 1 +#define USE_SIGACTION 1 +#define HAVE_SNPRINTF 1 +#define HAVE_VSNPRINTF 1 +#define HAVE_MEMRCHR 1 +#define HAVE_STRTOULL 1 +#define HAVE_STRINGS_H 1 +#define PREFIX "/usr/local" +#define XCHATLIBDIR "/usr/local/lib/xchat" +#define XCHATSHAREDIR "${prefix}/share" + +configure: exit 0 diff --git a/xchat-2.8.8/config.rpath b/xchat-2.8.8/config.rpath new file mode 100755 index 0000000..3f1bef3 --- /dev/null +++ b/xchat-2.8.8/config.rpath @@ -0,0 +1,571 @@ +#! /bin/sh +# Output a system dependent set of variables, describing how to set the +# run time search path of shared libraries in an executable. +# +# Copyright 1996-2005 Free Software Foundation, Inc. +# Taken from GNU libtool, 2001 +# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. +# +# The first argument passed to this file is the canonical host specification, +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld +# should be set by the caller. +# +# The set of defined variables is at the end of this script. + +# Known limitations: +# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer +# than 256 bytes, otherwise the compiler driver will dump core. The only +# known workaround is to choose shorter directory names for the build +# directory and/or the installation directory. + +# All known linkers require a `.a' archive for static linking (except M$VC, +# which needs '.lib'). +libext=a +shrext=.so + +host="$1" +host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + +cc_basename=`echo "$CC" | sed -e 's%^.*/%%'` + +# Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC. + +wl= +if test "$GCC" = yes; then + wl='-Wl,' +else + case "$host_os" in + aix*) + wl='-Wl,' + ;; + darwin*) + case "$cc_basename" in + xlc*) + wl='-Wl,' + ;; + esac + ;; + mingw* | pw32* | os2*) + ;; + hpux9* | hpux10* | hpux11*) + wl='-Wl,' + ;; + irix5* | irix6* | nonstopux*) + wl='-Wl,' + ;; + newsos6) + ;; + linux*) + case $cc_basename in + icc* | ecc*) + wl='-Wl,' + ;; + pgcc | pgf77 | pgf90) + wl='-Wl,' + ;; + ccc*) + wl='-Wl,' + ;; + como) + wl='-lopt=' + ;; + esac + ;; + osf3* | osf4* | osf5*) + wl='-Wl,' + ;; + sco3.2v5*) + ;; + solaris*) + wl='-Wl,' + ;; + sunos4*) + wl='-Qoption ld ' + ;; + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + wl='-Wl,' + ;; + sysv4*MP*) + ;; + unicos*) + wl='-Wl,' + ;; + uts4*) + ;; + esac +fi + +# Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS. + +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no + +case "$host_os" in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + openbsd*) + with_gnu_ld=no + ;; +esac + +ld_shlibs=yes +if test "$with_gnu_ld" = yes; then + case "$host_os" in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + fi + ;; + amigaos*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we cannot use + # them. + ld_shlibs=no + ;; + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + cygwin* | mingw* | pw32*) + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + netbsd*) + ;; + solaris* | sysv5*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + sunos4*) + hardcode_direct=yes + ;; + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + esac + if test "$ld_shlibs" = yes; then + # Unlike libtool, we use -rpath here, not --rpath, since the documented + # option of GNU ld is called -rpath, not --rpath. + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + fi +else + case "$host_os" in + aix3*) + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + else + aix_use_runtimelinking=no + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + esac + fi + hardcode_direct=yes + hardcode_libdir_separator=':' + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct=yes + else + # We have old collect2 + hardcode_direct=unsupported + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + esac + fi + # Begin _LT_AC_SYS_LIBPATH_AIX. + echo 'int main () { return 0; }' > conftest.c + ${CC} ${LDFLAGS} conftest.c -o conftest + aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` + if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` + fi + if test -z "$aix_libpath"; then + aix_libpath="/usr/lib:/lib" + fi + rm -f conftest.c conftest + # End _LT_AC_SYS_LIBPATH_AIX. + if test "$aix_use_runtimelinking" = yes; then + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + else + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + fi + fi + ;; + amigaos*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + bsdi[45]*) + ;; + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + libext=lib + ;; + darwin* | rhapsody*) + hardcode_direct=no + if test "$GCC" = yes ; then + : + else + case "$cc_basename" in + xlc*) + ;; + *) + ld_shlibs=no + ;; + esac + fi + ;; + dgux*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + freebsd1*) + ld_shlibs=no + ;; + freebsd2.2*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + freebsd2*) + hardcode_direct=yes + hardcode_minus_L=yes + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + hpux9*) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + hpux10* | hpux11*) + if test "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=no + ;; + ia64*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=no + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + *) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + irix5* | irix6* | nonstopux*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + netbsd*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + newsos6) + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + openbsd*) + hardcode_direct=yes + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + else + case "$host_os" in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + osf3*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + osf4* | osf5*) + if test "$GCC" = yes; then + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + # Both cc and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + sco3.2v5*) + ;; + solaris*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + sunos4*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + ;; + sysv4) + case $host_vendor in + sni) + hardcode_direct=yes # is this really true??? + ;; + siemens) + hardcode_direct=no + ;; + motorola) + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + ;; + sysv4.3*) + ;; + sysv4*MP*) + if test -d /usr/nec; then + ld_shlibs=yes + fi + ;; + sysv4.2uw2*) + hardcode_direct=yes + hardcode_minus_L=no + ;; + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + ;; + sysv5*) + hardcode_libdir_flag_spec= + ;; + uts4*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + *) + ld_shlibs=no + ;; + esac +fi + +# Check dynamic linker characteristics +# Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER. +libname_spec='lib$name' +case "$host_os" in + aix3*) + ;; + aix4* | aix5*) + ;; + amigaos*) + ;; + beos*) + ;; + bsdi[45]*) + ;; + cygwin* | mingw* | pw32*) + shrext=.dll + ;; + darwin* | rhapsody*) + shrext=.dylib + ;; + dgux*) + ;; + freebsd1*) + ;; + kfreebsd*-gnu) + ;; + freebsd*) + ;; + gnu*) + ;; + hpux9* | hpux10* | hpux11*) + case "$host_cpu" in + ia64*) + shrext=.so + ;; + hppa*64*) + shrext=.sl + ;; + *) + shrext=.sl + ;; + esac + ;; + irix5* | irix6* | nonstopux*) + case "$host_os" in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; + *) libsuff= shlibsuff= ;; + esac + ;; + esac + ;; + linux*oldld* | linux*aout* | linux*coff*) + ;; + linux*) + ;; + knetbsd*-gnu) + ;; + netbsd*) + ;; + newsos6) + ;; + nto-qnx*) + ;; + openbsd*) + ;; + os2*) + libname_spec='$name' + shrext=.dll + ;; + osf3* | osf4* | osf5*) + ;; + sco3.2v5*) + ;; + solaris*) + ;; + sunos4*) + ;; + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + ;; + sysv4*MP*) + ;; + uts4*) + ;; +esac + +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' +escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` +shlibext=`echo "$shrext" | sed -e 's,^\.,,'` +escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` + +LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF + +# How to pass a linker flag through the compiler. +wl="$escaped_wl" + +# Static library suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally "so"). +shlibext="$shlibext" + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec" + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator="$hardcode_libdir_separator" + +# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the +# resulting binary. +hardcode_direct="$hardcode_direct" + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L="$hardcode_minus_L" + +EOF diff --git a/xchat-2.8.8/config.status b/xchat-2.8.8/config.status new file mode 100755 index 0000000..2f7189c --- /dev/null +++ b/xchat-2.8.8/config.status @@ -0,0 +1,2374 @@ +#! /bin/bash +# Generated by configure. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=${CONFIG_SHELL-/bin/bash} +export SHELL +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error ERROR [LINENO LOG_FD] +# --------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with status $?, using 1 if that was 0. +as_fn_error () +{ + as_status=$?; test $as_status -eq 0 && as_status=1 + if test "$3"; then + as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 + fi + $as_echo "$as_me: error: $1" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by XChat $as_me 2.8.8, which was +generated by GNU Autoconf 2.65. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +# Files that config.status was made for. +config_files=" Makefile src/Makefile src/common/Makefile src/common/dbus/Makefile src/fe-text/Makefile src/fe-gtk/Makefile src/pixmaps/Makefile plugins/Makefile plugins/python/Makefile plugins/perl/Makefile plugins/tcl/Makefile intl/Makefile po/Makefile.in" +config_headers=" config.h" +config_commands=" depfiles libtool po-directories" + +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to <http://www.xchat.org/>." + +ac_cs_config="'LDFLAGS=-lgmodule-2.0'" +ac_cs_version="\ +XChat config.status 2.8.8 +configured by ./configure, generated by GNU Autoconf 2.65, + with options \"$ac_cs_config\" + +Copyright (C) 2009 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='/home/jdaugherty/work/pkgs/xchat/xchat-2.8.8' +srcdir='.' +INSTALL='/usr/bin/install -c' +MKDIR_P='/bin/mkdir -p' +AWK='gawk' +test -n "$AWK" || AWK=awk +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +if $ac_cs_recheck; then + set X '/bin/bash' './configure' 'LDFLAGS=-lgmodule-2.0' $ac_configure_extra_args --no-create --no-recursion + shift + $as_echo "running CONFIG_SHELL=/bin/bash $*" >&6 + CONFIG_SHELL='/bin/bash' + export CONFIG_SHELL + exec "$@" +fi + +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +# +# INIT-COMMANDS +# +AMDEP_TRUE="" ac_aux_dir="." + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' +double_quote_subst='s/\(["`\\]\)/\\\1/g' +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' +enable_static='no' +macro_version='2.2.6b' +macro_revision='1.3017' +enable_shared='yes' +pic_mode='default' +enable_fast_install='needless' +host_alias='' +host='x86_64-unknown-linux-gnu' +host_os='linux-gnu' +build_alias='' +build='x86_64-unknown-linux-gnu' +build_os='linux-gnu' +SED='/bin/sed' +Xsed='/bin/sed -e 1s/^X//' +GREP='/usr/local/bin/grep' +EGREP='/usr/local/bin/grep -E' +FGREP='/usr/local/bin/grep -F' +LD='/usr/bin/ld -m elf_x86_64' +NM='/usr/bin/nm -B' +LN_S='ln -s' +max_cmd_len='1879296' +ac_objext='o' +exeext='' +lt_unset='unset' +lt_SP2NL='tr \040 \012' +lt_NL2SP='tr \015\012 \040\040' +reload_flag=' -r' +reload_cmds='$LD$reload_flag -o $output$reload_objs' +OBJDUMP='objdump' +deplibs_check_method='pass_all' +file_magic_cmd='$MAGIC_CMD' +AR='ar' +AR_FLAGS='cru' +STRIP='strip' +RANLIB='ranlib' +old_postinstall_cmds='chmod 644 $oldlib~$RANLIB $oldlib' +old_postuninstall_cmds='' +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs~$RANLIB $oldlib' +CC='gcc' +CFLAGS='-g -O2 -Wall -pipe -Wno-pointer-sign -funsigned-char ' +compiler='gcc' +GCC='yes' +lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p'\''' +lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^T .* \(.*\)$/extern int \1();/p'\'' -e '\''s/^[ABCDGIRSTW]* .* \(.*\)$/extern char \1;/p'\''' +lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \([^ ]*\) $/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"\2", (void *) \&\2},/p'\''' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='sed -n -e '\''s/^: \([^ ]*\) $/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \(lib[^ ]*\)$/ {"\2", (void *) \&\2},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"lib\2", (void *) \&\2},/p'\''' +objdir='.libs' +SHELL='/bin/bash' +ECHO='echo' +MAGIC_CMD='file' +lt_prog_compiler_no_builtin_flag=' -fno-builtin' +lt_prog_compiler_wl='-Wl,' +lt_prog_compiler_pic=' -fPIC -DPIC' +lt_prog_compiler_static='-static' +lt_cv_prog_compiler_c_o='yes' +need_locks='no' +DSYMUTIL='' +NMEDIT='' +LIPO='' +OTOOL='' +OTOOL64='' +libext='a' +shrext_cmds='.so' +extract_expsyms_cmds='' +archive_cmds_need_lc='no' +enable_shared_with_static_runtimes='no' +export_dynamic_flag_spec='${wl}--export-dynamic' +whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' +compiler_needs_object='no' +old_archive_from_new_cmds='' +old_archive_from_expsyms_cmds='' +archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' +module_cmds='' +module_expsym_cmds='' +with_gnu_ld='yes' +allow_undefined_flag='' +no_undefined_flag='' +hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +hardcode_libdir_flag_spec_ld='' +hardcode_libdir_separator='' +hardcode_direct='no' +hardcode_direct_absolute='no' +hardcode_minus_L='no' +hardcode_shlibpath_var='unsupported' +hardcode_automatic='no' +inherit_rpath='no' +link_all_deplibs='unknown' +fix_srcfile_path='' +always_export_symbols='no' +export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' +exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' +include_expsyms='' +prelink_cmds='' +file_list_spec='' +variables_saved_for_relink='PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH' +need_lib_prefix='no' +need_version='no' +version_type='linux' +runpath_var='LD_RUN_PATH' +shlibpath_var='LD_LIBRARY_PATH' +shlibpath_overrides_runpath='yes' +libname_spec='lib$name' +library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +soname_spec='${libname}${release}${shared_ext}$major' +postinstall_cmds='' +postuninstall_cmds='' +finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' +finish_eval='' +hardcode_into_libs='yes' +sys_lib_search_path_spec='/usr/lib/gcc/x86_64-linux-gnu/8 /usr/lib/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib' +sys_lib_dlsearch_path_spec='/lib64 /usr/lib64 /lib /usr/lib /usr/lib/x86_64-linux-gnu/libfakeroot /usr/local/lib/i386-linux-gnu /lib/i386-linux-gnu /usr/lib/i386-linux-gnu /usr/local/lib/i686-linux-gnu /lib/i686-linux-gnu /usr/lib/i686-linux-gnu /usr/local/lib /usr/local/lib/x86_64-linux-gnu /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu /lib32 /usr/lib32 ' +hardcode_action='immediate' +enable_dlopen='unknown' +enable_dlopen_self='unknown' +enable_dlopen_self_static='unknown' +old_striplib='strip --strip-debug' +striplib='strip --strip-unneeded' + +LTCC='gcc' +LTCFLAGS='-g -O2' +compiler='gcc' + +# Quote evaled strings. +for var in SED GREP EGREP FGREP LD NM LN_S lt_SP2NL lt_NL2SP reload_flag OBJDUMP deplibs_check_method file_magic_cmd AR AR_FLAGS STRIP RANLIB CC CFLAGS compiler lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl lt_cv_sys_global_symbol_to_c_name_address lt_cv_sys_global_symbol_to_c_name_address_lib_prefix SHELL ECHO lt_prog_compiler_no_builtin_flag lt_prog_compiler_wl lt_prog_compiler_pic lt_prog_compiler_static lt_cv_prog_compiler_c_o need_locks DSYMUTIL NMEDIT LIPO OTOOL OTOOL64 shrext_cmds export_dynamic_flag_spec whole_archive_flag_spec compiler_needs_object with_gnu_ld allow_undefined_flag no_undefined_flag hardcode_libdir_flag_spec hardcode_libdir_flag_spec_ld hardcode_libdir_separator fix_srcfile_path exclude_expsyms include_expsyms file_list_spec variables_saved_for_relink libname_spec library_names_spec soname_spec finish_eval old_striplib striplib; do + case `eval \\$ECHO "X\\$$var"` in + *[\\\`\"\$]*) + eval "lt_$var=\\\"\`\$ECHO \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\$$var\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds old_postinstall_cmds old_postuninstall_cmds old_archive_cmds extract_expsyms_cmds old_archive_from_new_cmds old_archive_from_expsyms_cmds archive_cmds archive_expsym_cmds module_cmds module_expsym_cmds export_symbols_cmds prelink_cmds postinstall_cmds postuninstall_cmds finish_cmds sys_lib_search_path_spec sys_lib_dlsearch_path_spec; do + case `eval \\$ECHO "X\\$$var"` in + *[\\\`\"\$]*) + eval "lt_$var=\\\"\`\$ECHO \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\$$var\\\"" + ;; + esac +done + +# Fix-up fallback echo if it was mangled by the above quoting rules. +case $lt_ECHO in +*'\$0 --fallback-echo"') lt_ECHO=`$ECHO "X$lt_ECHO" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; +esac + +ac_aux_dir='.' +xsi_shell='yes' +lt_shell_append='yes' + +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes INIT. +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='xchat' + VERSION='2.8.8' + TIMESTAMP='' + RM='rm -f' + ofile='libtool' + + + +# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # from automake < 1.5. + eval 'OBSOLETE_ALL_LINGUAS''="be ca cs de el es fi fr gl hu it ja kn ko lt mk nl pa pl pt ru sq sr sv th uk vi zh_CN zh_TW"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="%UNSET%" + + + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + "src/common/Makefile") CONFIG_FILES="$CONFIG_FILES src/common/Makefile" ;; + "src/common/dbus/Makefile") CONFIG_FILES="$CONFIG_FILES src/common/dbus/Makefile" ;; + "src/fe-text/Makefile") CONFIG_FILES="$CONFIG_FILES src/fe-text/Makefile" ;; + "src/fe-gtk/Makefile") CONFIG_FILES="$CONFIG_FILES src/fe-gtk/Makefile" ;; + "src/pixmaps/Makefile") CONFIG_FILES="$CONFIG_FILES src/pixmaps/Makefile" ;; + "plugins/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/Makefile" ;; + "plugins/python/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/python/Makefile" ;; + "plugins/perl/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/perl/Makefile" ;; + "plugins/tcl/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/tcl/Makefile" ;; + "intl/Makefile") CONFIG_FILES="$CONFIG_FILES intl/Makefile" ;; + "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; + + *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= + trap 'exit_status=$? + { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5 + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$tmp/subs1.awk" && +cat >>"$tmp/subs1.awk" <<\_ACAWK && +S["am__EXEEXT_FALSE"]="" +S["am__EXEEXT_TRUE"]="#" +S["LTLIBOBJS"]="" +S["LIBOBJS"]="" +S["xchatlibdir"]="${exec_prefix}/lib/xchat" +S["PLUGIN_INCLUDES"]="-I$(top_srcdir)/plugins" +S["TCL_CFLAGS"]="-I/usr/include -I/usr/include/tcl8.6" +S["TCL_LIBS"]="-L/usr/lib/x86_64-linux-gnu -ltcl8.6 -ldl -lz -lpthread -lm" +S["PY_LIBS"]="-L/usr/lib/python2.7/config -lpython2.7 -lpthread -lutil" +S["PY_CFLAGS"]="-I/usr/include/python2.7" +S["PERL_LDFLAGS"]="-Wl,-E -fstack-protector-strong -L/usr/local/lib -L/usr/lib/x86_64-linux-gnu/perl/5.26/CORE -lperl -ldl -lm -lpthread -lcrypt" +S["PERL_CFLAGS"]=" -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/lib/"\ +"x86_64-linux-gnu/perl/5.26/CORE " +S["COMMON_CFLAGS"]="-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -pthread -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -"\ +"I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include" +S["COMMON_LIBS"]="-lglib-2.0 -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0" +S["GUI_CFLAGS"]=" -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-"\ +"1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1"\ +".0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I"\ +"/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16" +S["GUI_LIBS"]=" -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfon"\ +"tconfig -lfreetype -Wl,--version-script,$(srcdir)/../version-script -lglib-2.0 -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2."\ +"0" +S["gdkpixbufcsourcepath"]="/usr/bin/gdk-pixbuf-csource" +S["USE_MMX_FALSE"]="" +S["USE_MMX_TRUE"]="#" +S["DO_GCONF_FALSE"]="#" +S["DO_GCONF_TRUE"]="" +S["USE_DBUS_FALSE"]="#" +S["USE_DBUS_TRUE"]="" +S["DO_PLUGIN_FALSE"]="#" +S["DO_PLUGIN_TRUE"]="" +S["DO_TCL_FALSE"]="#" +S["DO_TCL_TRUE"]="" +S["DO_PYTHON_FALSE"]="#" +S["DO_PYTHON_TRUE"]="" +S["DO_PERL_FALSE"]="#" +S["DO_PERL_TRUE"]="" +S["DO_GTK_FALSE"]="#" +S["DO_GTK_TRUE"]="" +S["DO_TEXT_FALSE"]="" +S["DO_TEXT_TRUE"]="#" +S["USE_LIBSEXY_FALSE"]="#" +S["USE_LIBSEXY_TRUE"]="" +S["USE_OPENSSL_FALSE"]="#" +S["USE_OPENSSL_TRUE"]="" +S["LIBSEXY_LIBS"]="" +S["LIBSEXY_CFLAGS"]="" +S["GTKSPELL_LIBS"]="" +S["GTKSPELL_CFLAGS"]="" +S["DBUS_SERVICES_DIR"]="${prefix}/share/dbus-1/services" +S["DATADIR"]="${prefix}/share" +S["DBUS_BINDING_TOOL"]="/usr/bin/dbus-binding-tool" +S["DBUS_LIBS"]="-ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0" +S["DBUS_CFLAGS"]="-pthread -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include" +S["pythonpath"]="/usr/bin/python2" +S["perlpath"]="/usr/bin/perl" +S["pkgconfigpath"]="/usr/bin/pkg-config" +S["GCONFTOOL"]="/usr/bin/gconftool-2" +S["GTK_LIBS"]="-lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfont"\ +"config -lfreetype" +S["GTK_CFLAGS"]="-pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1"\ +".0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1."\ +"0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/"\ +"usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16" +S["GLIB_MKENUMS"]="glib-mkenums" +S["GOBJECT_QUERY"]="gobject-query" +S["GLIB_GENMARSHAL"]="/usr/bin/glib-genmarshal" +S["GLIB_LIBS"]="-lglib-2.0" +S["GLIB_CFLAGS"]="-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include" +S["PKG_CONFIG"]="/usr/bin/pkg-config" +S["unamepath"]="/bin/uname" +S["sedpath"]="/bin/sed" +S["POSUB"]="po" +S["LTLIBINTL"]="" +S["LIBINTL"]="" +S["INTLLIBS"]="" +S["INTL_LIBTOOL_SUFFIX_PREFIX"]="" +S["INTLOBJS"]="" +S["GENCAT"]="gencat" +S["INSTOBJEXT"]=".mo" +S["DATADIRNAME"]="share" +S["CATOBJEXT"]=".gmo" +S["USE_INCLUDED_LIBINTL"]="no" +S["BUILD_INCLUDED_LIBINTL"]="no" +S["LTLIBC"]="-lc" +S["WINDRES"]="" +S["WOE32"]="no" +S["WOE32DLL"]="no" +S["HAVE_WPRINTF"]="0" +S["HAVE_SNPRINTF"]="1" +S["HAVE_ASPRINTF"]="1" +S["HAVE_POSIX_PRINTF"]="1" +S["INTL_MACOSX_LIBS"]="" +S["GLIBC21"]="yes" +S["INTLBISON"]="bison" +S["LTLIBICONV"]="-liconv" +S["LIBICONV"]="-liconv" +S["LTLIBMULTITHREAD"]="-lpthread" +S["LIBMULTITHREAD"]="-lpthread" +S["LTLIBTHREAD"]="" +S["LIBTHREAD"]="" +S["LIBPTH_PREFIX"]="" +S["LTLIBPTH"]="" +S["LIBPTH"]="" +S["PRI_MACROS_BROKEN"]="0" +S["ALLOCA"]="" +S["HAVE_VISIBILITY"]="1" +S["CFLAG_VISIBILITY"]="-fvisibility=hidden" +S["GLIBC2"]="yes" +S["XGETTEXT_EXTRA_OPTIONS"]="" +S["MSGMERGE"]="/usr/bin/msgmerge" +S["XGETTEXT_015"]="/usr/bin/xgettext" +S["XGETTEXT"]="/usr/bin/xgettext" +S["GMSGFMT_015"]="/usr/bin/msgfmt" +S["MSGFMT_015"]="/usr/bin/msgfmt" +S["GMSGFMT"]="/usr/bin/msgfmt" +S["MSGFMT"]="/usr/bin/msgfmt" +S["GETTEXT_MACRO_VERSION"]="0.17" +S["USE_NLS"]="yes" +S["GETTEXT_PACKAGE"]="xchat" +S["OTOOL64"]="" +S["OTOOL"]="" +S["LIPO"]="" +S["NMEDIT"]="" +S["DSYMUTIL"]="" +S["lt_ECHO"]="echo" +S["RANLIB"]="ranlib" +S["AR"]="ar" +S["OBJDUMP"]="objdump" +S["LN_S"]="ln -s" +S["NM"]="/usr/bin/nm -B" +S["ac_ct_DUMPBIN"]="" +S["DUMPBIN"]="" +S["LD"]="/usr/bin/ld -m elf_x86_64" +S["FGREP"]="/usr/local/bin/grep -F" +S["EGREP"]="/usr/local/bin/grep -E" +S["GREP"]="/usr/local/bin/grep" +S["SED"]="/bin/sed" +S["host_os"]="linux-gnu" +S["host_vendor"]="unknown" +S["host_cpu"]="x86_64" +S["host"]="x86_64-unknown-linux-gnu" +S["build_os"]="linux-gnu" +S["build_vendor"]="unknown" +S["build_cpu"]="x86_64" +S["build"]="x86_64-unknown-linux-gnu" +S["LIBTOOL"]="$(SHELL) $(top_builddir)/libtool" +S["am__fastdepCCAS_FALSE"]="#" +S["am__fastdepCCAS_TRUE"]="" +S["CCASDEPMODE"]="depmode=gcc3" +S["CCASFLAGS"]="-g -O2" +S["CCAS"]="gcc" +S["CPP"]="gcc -E" +S["am__fastdepCC_FALSE"]="#" +S["am__fastdepCC_TRUE"]="" +S["CCDEPMODE"]="depmode=gcc3" +S["AMDEPBACKSLASH"]="\\" +S["AMDEP_FALSE"]="#" +S["AMDEP_TRUE"]="" +S["am__quote"]="" +S["am__include"]="include" +S["DEPDIR"]=".deps" +S["OBJEXT"]="o" +S["EXEEXT"]="" +S["ac_ct_CC"]="gcc" +S["CPPFLAGS"]=" " +S["LDFLAGS"]="-lgmodule-2.0" +S["CFLAGS"]="-g -O2 -Wall -pipe -Wno-pointer-sign -funsigned-char " +S["CC"]="gcc" +S["MAINT"]="#" +S["MAINTAINER_MODE_FALSE"]="" +S["MAINTAINER_MODE_TRUE"]="#" +S["am__untar"]="${AMTAR} xf -" +S["am__tar"]="${AMTAR} chof - \"$$tardir\"" +S["AMTAR"]="${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run tar" +S["am__leading_dot"]="." +S["SET_MAKE"]="" +S["AWK"]="gawk" +S["mkdir_p"]="/bin/mkdir -p" +S["MKDIR_P"]="/bin/mkdir -p" +S["INSTALL_STRIP_PROGRAM"]="$(install_sh) -c -s" +S["STRIP"]="strip" +S["install_sh"]="${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/install-sh" +S["MAKEINFO"]="${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run makeinfo" +S["AUTOHEADER"]="${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run autoheader" +S["AUTOMAKE"]="${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run automake-1.11" +S["AUTOCONF"]="${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run autoconf" +S["ACLOCAL"]="${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run aclocal-1.11" +S["VERSION"]="2.8.8" +S["PACKAGE"]="xchat" +S["CYGPATH_W"]="echo" +S["am__isrc"]="" +S["INSTALL_DATA"]="${INSTALL} -m 644" +S["INSTALL_SCRIPT"]="${INSTALL}" +S["INSTALL_PROGRAM"]="${INSTALL}" +S["target_alias"]="" +S["host_alias"]="" +S["build_alias"]="" +S["LIBS"]="-lX11 -lssl -lcrypto -ldl -Wl,--export-dynamic -pthread -lglib-2.0 " +S["ECHO_T"]="" +S["ECHO_N"]="-n" +S["ECHO_C"]="" +S["DEFS"]="-DHAVE_CONFIG_H" +S["mandir"]="${datarootdir}/man" +S["localedir"]="${datarootdir}/locale" +S["libdir"]="${exec_prefix}/lib" +S["psdir"]="${docdir}" +S["pdfdir"]="${docdir}" +S["dvidir"]="${docdir}" +S["htmldir"]="${docdir}" +S["infodir"]="${datarootdir}/info" +S["docdir"]="${datarootdir}/doc/${PACKAGE_TARNAME}" +S["oldincludedir"]="/usr/include" +S["includedir"]="${prefix}/include" +S["localstatedir"]="${prefix}/var" +S["sharedstatedir"]="${prefix}/com" +S["sysconfdir"]="${prefix}/etc" +S["datadir"]="${datarootdir}" +S["datarootdir"]="${prefix}/share" +S["libexecdir"]="${exec_prefix}/libexec" +S["sbindir"]="${exec_prefix}/sbin" +S["bindir"]="${exec_prefix}/bin" +S["program_transform_name"]="s,x,x," +S["prefix"]="/usr/local" +S["exec_prefix"]="/usr/local" +S["PACKAGE_URL"]="" +S["PACKAGE_BUGREPORT"]="http://www.xchat.org/" +S["PACKAGE_STRING"]="XChat 2.8.8" +S["PACKAGE_VERSION"]="2.8.8" +S["PACKAGE_TARNAME"]="xchat" +S["PACKAGE_NAME"]="XChat" +S["PATH_SEPARATOR"]=":" +S["SHELL"]="/bin/bash" +_ACAWK +cat >>"$tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ + || as_fn_error "could not setup config files machinery" "$LINENO" 5 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$tmp/defines.awk" <<\_ACAWK || +BEGIN { +D["PACKAGE_NAME"]=" \"XChat\"" +D["PACKAGE_TARNAME"]=" \"xchat\"" +D["PACKAGE_VERSION"]=" \"2.8.8\"" +D["PACKAGE_STRING"]=" \"XChat 2.8.8\"" +D["PACKAGE_BUGREPORT"]=" \"http://www.xchat.org/\"" +D["PACKAGE_URL"]=" \"\"" +D["STDC_HEADERS"]=" 1" +D["HAVE_SYS_TYPES_H"]=" 1" +D["HAVE_SYS_STAT_H"]=" 1" +D["HAVE_STDLIB_H"]=" 1" +D["HAVE_STRING_H"]=" 1" +D["HAVE_MEMORY_H"]=" 1" +D["HAVE_STRINGS_H"]=" 1" +D["HAVE_INTTYPES_H"]=" 1" +D["HAVE_STDINT_H"]=" 1" +D["HAVE_UNISTD_H"]=" 1" +D["HAVE_DLFCN_H"]=" 1" +D["LT_OBJDIR"]=" \".libs/\"" +D["GETTEXT_PACKAGE"]=" \"xchat\"" +D["HAVE_VISIBILITY"]=" 1" +D["HAVE_STDINT_H_WITH_UINTMAX"]=" 1" +D["HAVE_ALLOCA_H"]=" 1" +D["HAVE_ALLOCA"]=" 1" +D["HAVE_STDLIB_H"]=" 1" +D["HAVE_UNISTD_H"]=" 1" +D["HAVE_SYS_PARAM_H"]=" 1" +D["HAVE_GETPAGESIZE"]=" 1" +D["HAVE_MMAP"]=" 1" +D["INTDIV0_RAISES_SIGFPE"]=" 1" +D["HAVE_INTTYPES_H_WITH_UINTMAX"]=" 1" +D["HAVE_UNSIGNED_LONG_LONG_INT"]=" 1" +D["HAVE_UINTMAX_T"]=" 1" +D["HAVE_INTTYPES_H"]=" 1" +D["__EXTENSIONS__"]=" 1" +D["_ALL_SOURCE"]=" 1" +D["_GNU_SOURCE"]=" 1" +D["_POSIX_PTHREAD_SEMANTICS"]=" 1" +D["_TANDEM_SOURCE"]=" 1" +D["USE_POSIX_THREADS"]=" 1" +D["USE_POSIX_THREADS_WEAK"]=" 1" +D["HAVE_PTHREAD_RWLOCK"]=" 1" +D["HAVE_PTHREAD_MUTEX_RECURSIVE"]=" 1" +D["HAVE_BUILTIN_EXPECT"]=" 1" +D["HAVE_ARGZ_H"]=" 1" +D["HAVE_INTTYPES_H"]=" 1" +D["HAVE_LIMITS_H"]=" 1" +D["HAVE_UNISTD_H"]=" 1" +D["HAVE_SYS_PARAM_H"]=" 1" +D["HAVE_GETCWD"]=" 1" +D["HAVE_GETEGID"]=" 1" +D["HAVE_GETEUID"]=" 1" +D["HAVE_GETGID"]=" 1" +D["HAVE_GETUID"]=" 1" +D["HAVE_MEMPCPY"]=" 1" +D["HAVE_MUNMAP"]=" 1" +D["HAVE_STPCPY"]=" 1" +D["HAVE_STRCASECMP"]=" 1" +D["HAVE_STRDUP"]=" 1" +D["HAVE_STRTOUL"]=" 1" +D["HAVE_TSEARCH"]=" 1" +D["HAVE_ARGZ_COUNT"]=" 1" +D["HAVE_ARGZ_STRINGIFY"]=" 1" +D["HAVE_ARGZ_NEXT"]=" 1" +D["HAVE___FSETLOCKING"]=" 1" +D["HAVE_DECL_FEOF_UNLOCKED"]=" 1" +D["HAVE_DECL_FGETS_UNLOCKED"]=" 1" +D["HAVE_ICONV"]=" 1" +D["ICONV_CONST"]=" " +D["HAVE_NL_LOCALE_NAME"]=" 1" +D["HAVE_LONG_LONG_INT"]=" 1" +D["HAVE_WCHAR_T"]=" 1" +D["HAVE_WINT_T"]=" 1" +D["HAVE_INTMAX_T"]=" 1" +D["HAVE_POSIX_PRINTF"]=" 1" +D["HAVE_STDINT_H"]=" 1" +D["HAVE_STDINT_H"]=" 1" +D["HAVE_STDDEF_H"]=" 1" +D["HAVE_STDLIB_H"]=" 1" +D["HAVE_STRING_H"]=" 1" +D["HAVE_ASPRINTF"]=" 1" +D["HAVE_FWPRINTF"]=" 1" +D["HAVE_PUTENV"]=" 1" +D["HAVE_SETENV"]=" 1" +D["HAVE_SETLOCALE"]=" 1" +D["HAVE_SNPRINTF"]=" 1" +D["HAVE_WCSLEN"]=" 1" +D["HAVE_DECL__SNPRINTF"]=" 0" +D["HAVE_DECL__SNWPRINTF"]=" 0" +D["HAVE_DECL_GETC_UNLOCKED"]=" 1" +D["HAVE_LANGINFO_CODESET"]=" 1" +D["HAVE_LC_MESSAGES"]=" 1" +D["ENABLE_NLS"]=" 1" +D["HAVE_GETTEXT"]=" 1" +D["HAVE_DCGETTEXT"]=" 1" +D["USING_LINUX"]=" 1" +D["USE_XLIB"]=" 1" +D["HAVE_LIBX11"]=" 1" +D["OLD_PERL"]=" 1" +D["USE_OPENSSL"]=" 1" +D["USE_PLUGIN"]=" 1" +D["USE_DBUS"]=" 1" +D["DBUS_SERVICES_DIR"]=" \"${prefix}/share/dbus-1/services\"" +D["USE_LIBSEXY"]=" 1" +D["USE_SIGACTION"]=" 1" +D["HAVE_SNPRINTF"]=" 1" +D["HAVE_VSNPRINTF"]=" 1" +D["HAVE_MEMRCHR"]=" 1" +D["HAVE_STRTOULL"]=" 1" +D["HAVE_STRINGS_H"]=" 1" +D["PREFIX"]=" \"/usr/local\"" +D["XCHATLIBDIR"]=" \"/usr/local/lib/xchat\"" +D["XCHATSHAREDIR"]=" \"${prefix}/share\"" + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+[_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ][_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*([\t (]|$)/ { + line = $ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK + as_fn_error "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$tmp/stdin" \ + || as_fn_error "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + ac_datarootdir_hack=' + s&@datadir@&${datarootdir}&g + s&@docdir@&${datarootdir}/doc/${PACKAGE_TARNAME}&g + s&@infodir@&${datarootdir}/info&g + s&@localedir@&${datarootdir}/locale&g + s&@mandir@&${datarootdir}/man&g + s&\${datarootdir}&${prefix}/share&g' ;; +esac +ac_sed_extra="/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/ +s/:*\${srcdir}:*/:/ +s/:*@srcdir@:*/:/ +s/^\([^=]*=[ ]*\):*/\1/ +s/:*$// +s/^[^=]*=[ ]*$// +} + +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ + || as_fn_error "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&2;} + + rm -f "$tmp/stdin" + case $ac_file in + -) cat "$tmp/out" && rm -f "$tmp/out";; + *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; + esac \ + || as_fn_error "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" + } >"$tmp/config.h" \ + || as_fn_error "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$tmp/config.h" "$ac_file" \ + || as_fn_error "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Autoconf 2.62 quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir=$dirpart/$fdir; as_fn_mkdir_p + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} + ;; + "libtool":C) + + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL + +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008 Free Software Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + +# The names of the tagged configurations supported by this script. +available_tags="" + +# ### BEGIN LIBTOOL CONFIG + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# An object symbol dumper. +OBJDUMP=$lt_OBJDUMP + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that does not interpret backslashes. +ECHO=$lt_ECHO + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# If ld is used when linking, flag to hardcode \$libdir into a binary +# during linking. This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path=$lt_fix_srcfile_path + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# ### END LIBTOOL CONFIG + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + +ltmain="$ac_aux_dir/ltmain.sh" + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + case $xsi_shell in + yes) + cat << \_LT_EOF >> "$cfgfile" + +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac +} + +# func_basename file +func_basename () +{ + func_basename_result="${1##*/}" +} + +# func_dirname_and_basename file append nondir_replacement +# perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# Implementation must be kept synchronized with func_dirname +# and func_basename. For efficiency, we do not delegate to +# those functions but instead duplicate the functionality here. +func_dirname_and_basename () +{ + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac + func_basename_result="${1##*/}" +} + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +func_stripname () +{ + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary parameter first. + func_stripname_result=${3} + func_stripname_result=${func_stripname_result#"${1}"} + func_stripname_result=${func_stripname_result%"${2}"} +} + +# func_opt_split +func_opt_split () +{ + func_opt_split_opt=${1%%=*} + func_opt_split_arg=${1#*=} +} + +# func_lo2o object +func_lo2o () +{ + case ${1} in + *.lo) func_lo2o_result=${1%.lo}.${objext} ;; + *) func_lo2o_result=${1} ;; + esac +} + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=${1%.*}.lo +} + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=$(( $* )) +} + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=${#1} +} + +_LT_EOF + ;; + *) # Bourne compatible functions. + cat << \_LT_EOF >> "$cfgfile" + +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + # Extract subdirectory from the argument. + func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi +} + +# func_basename file +func_basename () +{ + func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` +} + + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# func_strip_suffix prefix name +func_stripname () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "X${3}" \ + | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "X${3}" \ + | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; + esac +} + +# sed scripts: +my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' +my_sed_long_arg='1s/^-[^=]*=//' + +# func_opt_split +func_opt_split () +{ + func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` + func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` +} + +# func_lo2o object +func_lo2o () +{ + func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` +} + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'` +} + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=`expr "$@"` +} + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` +} + +_LT_EOF +esac + +case $lt_shell_append in + yes) + cat << \_LT_EOF >> "$cfgfile" + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "$1+=\$2" +} +_LT_EOF + ;; + *) + cat << \_LT_EOF >> "$cfgfile" + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "$1=\$$1\$2" +} + +_LT_EOF + ;; + esac + + + sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + ;; + "po-directories":C) + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + # Treat a directory as a PO directory if and only if it has a + # POTFILES.in file. This allows packages to have multiple PO + # directories under different names or in different locations. + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assigment from automake < 1.5. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + # Hide the ALL_LINGUAS assigment from automake < 1.5. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done ;; + + esac +done # for ac_tag + + +as_fn_exit 0 diff --git a/xchat-2.8.8/config.sub b/xchat-2.8.8/config.sub new file mode 100755 index 0000000..2a55a50 --- /dev/null +++ b/xchat-2.8.8/config.sub @@ -0,0 +1,1705 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 +# Free Software Foundation, Inc. + +timestamp='2009-11-20' + +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Please send patches to <config-patches@gnu.org>. Submit a context +# diff and a properly formatted GNU ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to <config-patches@gnu.org>." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ + uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ + kopensolaris*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray | -microblaze) + os= + basic_machine=$1 + ;; + -bluegene*) + os=-cnk + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | bfin \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fido | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nios | nios2 \ + | ns16k | ns32k \ + | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e \ + | we32k \ + | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12 | picochip) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nios-* | nios2-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ + | tron-* \ + | ubicom32-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aros) + basic_machine=i386-pc + os=-aros + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + microblaze) + basic_machine=microblaze-xilinx + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-unknown + os=-coff + ;; + tile*) + basic_machine=tile-unknown + os=-linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + z80-*-coff) + basic_machine=z80-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -auroraux) + os=-auroraux + ;; + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -zvmoe) + os=-zvmoe + ;; + -dicos*) + os=-dicos + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mep-*) + os=-elf + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -cnk*|-aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/xchat-2.8.8/configure b/xchat-2.8.8/configure new file mode 100755 index 0000000..ae67052 --- /dev/null +++ b/xchat-2.8.8/configure @@ -0,0 +1,21693 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.65 for XChat 2.8.8. +# +# Report bugs to <http://www.xchat.org/>. +# +# +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +# +# Copyright (C) 1998-2010 Peter Zelezny +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + # We cannot yet assume a decent shell, so we have to provide a + # neutralization value for shells without unset; and this also + # works around shells that cannot unset nonexistent variables. + BASH_ENV=/dev/null + ENV=/dev/null + (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org and +$0: http://www.xchat.org/ about your system, including any +$0: error possibly output before this message. Then install +$0: a modern shell, or manually run the script under such a +$0: shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error ERROR [LINENO LOG_FD] +# --------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with status $?, using 1 if that was 0. +as_fn_error () +{ + as_status=$?; test $as_status -eq 0 && as_status=1 + if test "$3"; then + as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 + fi + $as_echo "$as_me: error: $1" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + + +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$lt_ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','` + ;; +esac + +ECHO=${lt_ECHO-echo} +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then + # Yippee, $ECHO works! + : +else + # Restart under the correct shell. + exec $SHELL "$0" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat <<_LT_EOF +$* +_LT_EOF + exit 0 +fi + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +if test -z "$lt_ECHO"; then + if test "X${echo_test_string+set}" != Xset; then + # find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if { echo_test_string=`eval $cmd`; } 2>/dev/null && + { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null + then + break + fi + done + fi + + if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && + echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : + else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + ECHO="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$ECHO" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && + echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + ECHO='print -r' + elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} + else + # Try using printf. + ECHO='printf %s\n' + if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && + echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + ECHO="$CONFIG_SHELL $0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + ECHO="$CONFIG_SHELL $0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do + if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "$0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} + else + # Oops. We lost completely, so just stick with echo. + ECHO=echo + fi + fi + fi + fi + fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +lt_ECHO=$ECHO +if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then + lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" +fi + + + + +test -n "$DJDIR" || exec 7<&0 </dev/null +exec 6>&1 + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='XChat' +PACKAGE_TARNAME='xchat' +PACKAGE_VERSION='2.8.8' +PACKAGE_STRING='XChat 2.8.8' +PACKAGE_BUGREPORT='http://www.xchat.org/' +PACKAGE_URL='' + +ac_unique_file="configure.in" +# Factoring default headers for most tests. +ac_includes_default="\ +#include <stdio.h> +#ifdef HAVE_SYS_TYPES_H +# include <sys/types.h> +#endif +#ifdef HAVE_SYS_STAT_H +# include <sys/stat.h> +#endif +#ifdef STDC_HEADERS +# include <stdlib.h> +# include <stddef.h> +#else +# ifdef HAVE_STDLIB_H +# include <stdlib.h> +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include <memory.h> +# endif +# include <string.h> +#endif +#ifdef HAVE_STRINGS_H +# include <strings.h> +#endif +#ifdef HAVE_INTTYPES_H +# include <inttypes.h> +#endif +#ifdef HAVE_STDINT_H +# include <stdint.h> +#endif +#ifdef HAVE_UNISTD_H +# include <unistd.h> +#endif" + +gt_needs= +ac_header_list= +ac_subst_vars='am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +LIBOBJS +xchatlibdir +PLUGIN_INCLUDES +TCL_CFLAGS +TCL_LIBS +PY_LIBS +PY_CFLAGS +PERL_LDFLAGS +PERL_CFLAGS +COMMON_CFLAGS +COMMON_LIBS +GUI_CFLAGS +GUI_LIBS +gdkpixbufcsourcepath +USE_MMX_FALSE +USE_MMX_TRUE +DO_GCONF_FALSE +DO_GCONF_TRUE +USE_DBUS_FALSE +USE_DBUS_TRUE +DO_PLUGIN_FALSE +DO_PLUGIN_TRUE +DO_TCL_FALSE +DO_TCL_TRUE +DO_PYTHON_FALSE +DO_PYTHON_TRUE +DO_PERL_FALSE +DO_PERL_TRUE +DO_GTK_FALSE +DO_GTK_TRUE +DO_TEXT_FALSE +DO_TEXT_TRUE +USE_LIBSEXY_FALSE +USE_LIBSEXY_TRUE +USE_OPENSSL_FALSE +USE_OPENSSL_TRUE +LIBSEXY_LIBS +LIBSEXY_CFLAGS +GTKSPELL_LIBS +GTKSPELL_CFLAGS +DBUS_SERVICES_DIR +DATADIR +DBUS_BINDING_TOOL +DBUS_LIBS +DBUS_CFLAGS +pythonpath +perlpath +pkgconfigpath +GCONFTOOL +GTK_LIBS +GTK_CFLAGS +GLIB_MKENUMS +GOBJECT_QUERY +GLIB_GENMARSHAL +GLIB_LIBS +GLIB_CFLAGS +PKG_CONFIG +unamepath +sedpath +POSUB +LTLIBINTL +LIBINTL +INTLLIBS +INTL_LIBTOOL_SUFFIX_PREFIX +INTLOBJS +GENCAT +INSTOBJEXT +DATADIRNAME +CATOBJEXT +USE_INCLUDED_LIBINTL +BUILD_INCLUDED_LIBINTL +LTLIBC +WINDRES +WOE32 +WOE32DLL +HAVE_WPRINTF +HAVE_SNPRINTF +HAVE_ASPRINTF +HAVE_POSIX_PRINTF +INTL_MACOSX_LIBS +GLIBC21 +INTLBISON +LTLIBICONV +LIBICONV +LTLIBMULTITHREAD +LIBMULTITHREAD +LTLIBTHREAD +LIBTHREAD +LIBPTH_PREFIX +LTLIBPTH +LIBPTH +PRI_MACROS_BROKEN +ALLOCA +HAVE_VISIBILITY +CFLAG_VISIBILITY +GLIBC2 +XGETTEXT_EXTRA_OPTIONS +MSGMERGE +XGETTEXT_015 +XGETTEXT +GMSGFMT_015 +MSGFMT_015 +GMSGFMT +MSGFMT +GETTEXT_MACRO_VERSION +USE_NLS +GETTEXT_PACKAGE +OTOOL64 +OTOOL +LIPO +NMEDIT +DSYMUTIL +lt_ECHO +RANLIB +AR +OBJDUMP +LN_S +NM +ac_ct_DUMPBIN +DUMPBIN +LD +FGREP +EGREP +GREP +SED +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +LIBTOOL +am__fastdepCCAS_FALSE +am__fastdepCCAS_TRUE +CCASDEPMODE +CCASFLAGS +CCAS +CPP +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__quote +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +MAINT +MAINTAINER_MODE_FALSE +MAINTAINER_MODE_TRUE +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_maintainer_mode +enable_dependency_tracking +enable_static +enable_shared +with_pic +enable_fast_install +with_gnu_ld +enable_libtool_lock +enable_nls +enable_threads +enable_rpath +with_libpth_prefix +with_libiconv_prefix +with_included_gettext +with_libintl_prefix +enable_socks +enable_ipv6 +enable_xft +enable_openssl +enable_gtkfe +enable_textfe +enable_xlib +enable_python +enable_perl +enable_perl_old +enable_tcl +enable_plugin +enable_dbus +enable_mmx +enable_shm +enable_spell +enable_ntlm +enable_glibtest +enable_gtktest +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +CCAS +CCASFLAGS +PKG_CONFIG +DBUS_CFLAGS +DBUS_LIBS +GTKSPELL_CFLAGS +GTKSPELL_LIBS +LIBSEXY_CFLAGS +LIBSEXY_LIBS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information." + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures XChat 2.8.8 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/xchat] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of XChat 2.8.8:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-maintainer-mode enable make rules and dependencies not useful + (and sometimes confusing) to the casual installer + --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors + --enable-static[=PKGS] build static libraries [default=no] + --enable-shared[=PKGS] build shared libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) + --disable-nls do not use Native Language Support + --enable-threads={posix|solaris|pth|win32} + specify multithreading API + --disable-threads build without multithread safety + --disable-rpath do not hardcode runtime library paths + --enable-socks link with SOCKS5 library (default: no) + --enable-ipv6 enable IPv6 (default: no) + --enable-xft enable use of Xft directly (default: no) + --enable-openssl=PATH enable use of openSSL + --disable-gtkfe disable building gtk frontend + --enable-textfe build the text frontend (default: no) + --disable-xlib disable use of xlib (for non X11 systems) + --disable-python don't build the python plugin + --disable-perl don't build the perl plugin + --disable-perl_old no backwards compatibility for perl plugin + --enable-tcl=PATH directory with Tcl config file: tclConfig.sh + --disable-plugin disable plugin support + --disable-dbus disable DBUS support + --disable-mmx disable MMX assembly routines + --enable-shm enable use of XShm for fast tinting (default: no) + --enable-spell=type enable spelling type: none static libsexy gtkspell + --enable-ntlm enable Microsoft's NTLM auth (libntlm) library support (default: no) + --disable-glibtest do not try to compile and run a test GLIB program + --disable-gtktest do not try to compile and run a test GTK+ program + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-pic try to use only PIC/non-PIC objects [default=use + both] + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-gnu-ld assume the C compiler uses GNU ld default=no + --with-libpth-prefix[=DIR] search for libpth in DIR/include and DIR/lib + --without-libpth-prefix don't search for libpth in includedir and libdir + --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib + --without-libiconv-prefix don't search for libiconv in includedir and libdir + --with-included-gettext use the GNU gettext library included here + --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib + --without-libintl-prefix don't search for libintl in includedir and libdir + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a + nonstandard directory <lib dir> + LIBS libraries to pass to the linker, e.g. -l<library> + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if + you have headers in a nonstandard directory <include dir> + CPP C preprocessor + CCAS assembler compiler command (defaults to CC) + CCASFLAGS assembler compiler flags (defaults to CFLAGS) + PKG_CONFIG path to pkg-config utility + DBUS_CFLAGS C compiler flags for DBUS, overriding pkg-config + DBUS_LIBS linker flags for DBUS, overriding pkg-config + GTKSPELL_CFLAGS + C compiler flags for GTKSPELL, overriding pkg-config + GTKSPELL_LIBS + linker flags for GTKSPELL, overriding pkg-config + LIBSEXY_CFLAGS + C compiler flags for LIBSEXY, overriding pkg-config + LIBSEXY_LIBS + linker flags for LIBSEXY, overriding pkg-config + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to <http://www.xchat.org/>. +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +XChat configure 2.8.8 +generated by GNU Autoconf 2.65 + +Copyright (C) 2009 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. + +Copyright (C) 1998-2010 Peter Zelezny +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_c_check_header_compile + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case <limits.h> declares $2. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_c_check_func + +# ac_fn_c_check_type LINENO TYPE VAR INCLUDES +# ------------------------------------------- +# Tests whether TYPE exists after having included INCLUDES, setting cache +# variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + eval "$3=yes" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_c_check_type + +# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} +( cat <<\_ASBOX +## ------------------------------------ ## +## Report this to http://www.xchat.org/ ## +## ------------------------------------ ## +_ASBOX + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_c_check_header_mongrel + +# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES +# -------------------------------------------- +# Tries to find the compile-time value of EXPR in a program that includes +# INCLUDES, setting VAR accordingly. Returns whether the value could be +# computed +ac_fn_c_compute_int () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_lo=0 ac_mid=0 + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_hi=$ac_mid; break +else + as_fn_arith $ac_mid + 1 && ac_lo=$as_val + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_hi=-1 ac_mid=-1 + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_lo=$ac_mid; break +else + as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + ac_lo= ac_hi= +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_hi=$ac_mid +else + as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in #(( +?*) eval "$3=\$ac_lo"; ac_retval=0 ;; +'') ac_retval=1 ;; +esac + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +static long int longval () { return $2; } +static unsigned long int ulongval () { return $2; } +#include <stdio.h> +#include <stdlib.h> +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + return 1; + if (($2) < 0) + { + long int i = longval (); + if (i != ($2)) + return 1; + fprintf (f, "%ld", i); + } + else + { + unsigned long int i = ulongval (); + if (i != ($2)) + return 1; + fprintf (f, "%lu", i); + } + /* Do not output a trailing newline, as this causes \r\n confusion + on some platforms. */ + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + echo >>conftest.val; read $3 <conftest.val; ac_retval=0 +else + ac_retval=1 +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f conftest.val + + fi + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + as_fn_set_status $ac_retval + +} # ac_fn_c_compute_int +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by XChat $as_me 2.8.8, which was +generated by GNU Autoconf 2.65. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------------- ## +## File substitutions. ## +## ------------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + ac_site_file1=$CONFIG_SITE +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +gt_needs="$gt_needs " +as_fn_append ac_header_list " stdlib.h" +as_fn_append ac_header_list " unistd.h" +as_fn_append ac_header_list " sys/param.h" +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + +ac_config_headers="$ac_config_headers config.h" + + + +am__api_version='1.11' + +ac_aux_dir= +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + for ac_t in install-sh install.sh shtool; do + if test -f "$ac_dir/$ac_t"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/$ac_t -c" + break 2 + fi + done +done +if test -z "$ac_aux_dir"; then + as_fn_error "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } +# Just in case +sleep 1 +echo timestamp > conftest.file +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; +esac + +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + rm -f conftest.file + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + as_fn_error "ls -t appears to fail. Make sure there is not a broken +alias in your environment" "$LINENO" 5 + fi + + test "$2" = conftest.file + ) +then + # Ok. + : +else + as_fn_error "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was `s,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_STRIP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if test "${ac_cv_path_mkdir+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } + +mkdir_p="$MKDIR_P" +case $mkdir_p in + [\\/$]* | ?:[\\/]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_AWK+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='xchat' + VERSION='2.8.8' + + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +# Always define AMTAR for backward compatibility. + +AMTAR=${AMTAR-"${am_missing_run}tar"} + +am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 +$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } + # Check whether --enable-maintainer-mode was given. +if test "${enable_maintainer_mode+set}" = set; then : + enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval +else + USE_MAINTAINER_MODE=no +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 +$as_echo "$USE_MAINTAINER_MODE" >&6; } + if test $USE_MAINTAINER_MODE = yes; then + MAINTAINER_MODE_TRUE= + MAINTAINER_MODE_FALSE='#' +else + MAINTAINER_MODE_TRUE='#' + MAINTAINER_MODE_FALSE= +fi + + MAINT=$MAINTAINER_MODE_TRUE + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "no acceptable C compiler found in \$PATH +See \`config.log' for more details." "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ as_fn_set_status 77 +as_fn_error "C compiler cannot create executables +See \`config.log' for more details." "$LINENO" 5; }; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if test "${ac_cv_objext+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "cannot compute suffix of object files: cannot compile +See \`config.log' for more details." "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if test "${ac_cv_c_compiler_gnu+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if test "${ac_cv_prog_cc_g+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if test "${ac_cv_prog_cc_c89+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdarg.h> +#include <stdio.h> +#include <sys/types.h> +#include <sys/stat.h> +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 +$as_echo_n "checking for style of include used by $am_make... " >&6; } +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from `make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 +$as_echo "$_am_result" >&6; } +rm -f confinc confmf + +# Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then : + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + +depcc="$CC" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvisualcpp | msvcmsys) + # This compiler won't grok `-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + +if test "x$CC" != xcc; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5 +$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5 +$as_echo_n "checking whether cc understands -c and -o together... " >&6; } +fi +set dummy $CC; ac_cc=`$as_echo "$2" | + sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` +if { as_var=ac_cv_prog_cc_${ac_cc}_c_o; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +# Make sure it works both with $CC and with simple cc. +# We do the test twice because some compilers refuse to overwrite an +# existing .o file with -o, though they will create one. +ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5' +rm -f conftest2.* +if { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && + test -f conftest2.$ac_objext && { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; +then + eval ac_cv_prog_cc_${ac_cc}_c_o=yes + if test "x$CC" != xcc; then + # Test first that cc exists at all. + if { ac_try='cc -c conftest.$ac_ext >&5' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5' + rm -f conftest2.* + if { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && + test -f conftest2.$ac_objext && { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; + then + # cc works too. + : + else + # cc exists but doesn't like -o. + eval ac_cv_prog_cc_${ac_cc}_c_o=no + fi + fi + fi +else + eval ac_cv_prog_cc_${ac_cc}_c_o=no +fi +rm -f core conftest* + +fi +if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +$as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h + +fi + +# FIXME: we rely on the cache variable name because +# there is no other way. +set dummy $CC +am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` +eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o +if test "$am_t" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + # <limits.h> exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <ac_nonexistent.h> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + # <limits.h> exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <ac_nonexistent.h> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +# By default we simply use the C compiler to build assembly code. + +test "${CCAS+set}" = set || CCAS=$CC +test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS + + + +depcc="$CCAS" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if test "${am_cv_CCAS_dependencies_compiler_type+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CCAS_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvisualcpp | msvcmsys) + # This compiler won't grok `-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CCAS_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CCAS_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CCAS_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CCAS_dependencies_compiler_type" >&6; } +CCASDEPMODE=depmode=$am_cv_CCAS_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CCAS_dependencies_compiler_type" = gcc3; then + am__fastdepCCAS_TRUE= + am__fastdepCCAS_FALSE='#' +else + am__fastdepCCAS_TRUE='#' + am__fastdepCCAS_FALSE= +fi + + +# Check whether --enable-static was given. +if test "${enable_static+set}" = set; then : + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_static=no +fi + + + + + + + + + +case `pwd` in + *\ * | *\ *) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; +esac + + + +macro_version='2.2.6b' +macro_revision='1.3017' + + + + + + + + + + + + + +ltmain="$ac_aux_dir/ltmain.sh" + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if test "${ac_cv_build+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if test "${ac_cv_host+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if test "${ac_cv_path_SED+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if test "${ac_cv_path_GREP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if test "${ac_cv_path_EGREP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +$as_echo_n "checking for fgrep... " >&6; } +if test "${ac_cv_path_FGREP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 + then ac_cv_path_FGREP="$GREP -F" + else + if test -z "$FGREP"; then + ac_path_FGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in fgrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue +# Check for GNU ac_path_FGREP and select it if it is found. + # Check for GNU $ac_path_FGREP +case `"$ac_path_FGREP" --version 2>&1` in +*GNU*) + ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'FGREP' >> "conftest.nl" + "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_FGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_FGREP="$ac_path_FGREP" + ac_path_FGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_FGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_FGREP"; then + as_fn_error "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_FGREP=$FGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +$as_echo "$ac_cv_path_FGREP" >&6; } + FGREP="$ac_cv_path_FGREP" + + +test -z "$GREP" && GREP=grep + + + + + + + + + + + + + + + + + + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if test "${lt_cv_path_LD+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in + *GNU* | *'with BFD'*) + test "$with_gnu_ld" != no && break + ;; + *) + test "$with_gnu_ld" != yes && break + ;; + esac + fi + done + IFS="$lt_save_ifs" +else + lt_cv_path_LD="$LD" # Let the user override the test with a path. +fi +fi + +LD="$lt_cv_path_LD" +if test -n "$LD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if test "${lt_cv_prog_gnu_ld+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 </dev/null` in +*GNU* | *'with BFD'*) + lt_cv_prog_gnu_ld=yes + ;; +*) + lt_cv_prog_gnu_ld=no + ;; +esac +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if test "${lt_cv_path_NM+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + : ${lt_cv_path_NM=no} +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +$as_echo "$lt_cv_path_NM" >&6; } +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$ac_tool_prefix"; then + for ac_prog in "dumpbin -symbols" "link -dump -symbols" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_DUMPBIN+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DUMPBIN"; then + ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DUMPBIN=$ac_cv_prog_DUMPBIN +if test -n "$DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +$as_echo "$DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$DUMPBIN" && break + done +fi +if test -z "$DUMPBIN"; then + ac_ct_DUMPBIN=$DUMPBIN + for ac_prog in "dumpbin -symbols" "link -dump -symbols" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DUMPBIN"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN +if test -n "$ac_ct_DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +$as_echo "$ac_ct_DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_DUMPBIN" && break +done + + if test "x$ac_ct_DUMPBIN" = x; then + DUMPBIN=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DUMPBIN=$ac_ct_DUMPBIN + fi +fi + + + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" + fi +fi +test -z "$NM" && NM=nm + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +$as_echo_n "checking the name lister ($NM) interface... " >&6; } +if test "${lt_cv_nm_interface+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:5352: $ac_compile\"" >&5) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&5 + (eval echo "\"\$as_me:5355: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&5 + (eval echo "\"\$as_me:5358: output\"" >&5) + cat conftest.out >&5 + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +$as_echo "$lt_cv_nm_interface" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi + +# find the maximum length of command line arguments +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +$as_echo_n "checking the maximum length of command line arguments... " >&6; } +if test "${lt_cv_sys_max_cmd_len+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8 ; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test "X"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ + = "XX$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac + +fi + +if test -n $lt_cv_sys_max_cmd_len ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +$as_echo "$lt_cv_sys_max_cmd_len" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +$as_echo "none" >&6; } +fi +max_cmd_len=$lt_cv_sys_max_cmd_len + + + + + + +: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 +$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } +# Try some XSI features +xsi_shell=no +( _lt_dummy="a/b/c" + test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,, \ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ + && xsi_shell=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 +$as_echo "$xsi_shell" >&6; } + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 +$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } +lt_shell_append=no +( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ + >/dev/null 2>&1 \ + && lt_shell_append=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 +$as_echo "$lt_shell_append" >&6; } + + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi + + + + + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +$as_echo_n "checking for $LD option to reload object files... " >&6; } +if test "${lt_cv_ld_reload_flag+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_reload_flag='-r' +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +$as_echo "$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + darwin*) + if test "$GCC" = yes; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_OBJDUMP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +$as_echo_n "checking how to recognize dependent libraries... " >&6; } +if test "${lt_cv_deplibs_check_method+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[4-9]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +$as_echo "$lt_cv_deplibs_check_method" >&6; } +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_AR+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_AR+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_AR="ar" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +else + AR="$ac_cv_prog_AR" +fi + +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru + + + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_STRIP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +test -z "$STRIP" && STRIP=: + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_RANLIB+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +test -z "$RANLIB" && RANLIB=: + + + + + + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[ABCDGISTW]' + ;; +hpux*) + if test "$host_cpu" = ia64; then + symcode='[ABCDEGRST]' + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function + # and D for any global variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK '"\ +" {last_section=section; section=\$ 3};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\""; } >&5 + (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +$as_echo "failed" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } +fi + + + + + + + + + + + + + + + + + + + + + + + +# Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then : + enableval=$enable_libtool_lock; +fi + +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '#line 6564 "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +$as_echo_n "checking whether the C compiler needs -belf... " >&6; } +if test "${lt_cv_cc_needs_belf+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_cc_needs_belf=yes +else + lt_cv_cc_needs_belf=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +$as_echo "$lt_cv_cc_needs_belf" >&6; } + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks="$enable_libtool_lock" + + + case $host_os in + rhapsody* | darwin*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_DSYMUTIL+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +$as_echo "$DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +$as_echo "$ac_ct_DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DSYMUTIL" = x; then + DSYMUTIL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DSYMUTIL=$ac_ct_DSYMUTIL + fi +else + DSYMUTIL="$ac_cv_prog_DSYMUTIL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_NMEDIT+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +$as_echo "$NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +$as_echo "$ac_ct_NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_NMEDIT" = x; then + NMEDIT=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + NMEDIT=$ac_ct_NMEDIT + fi +else + NMEDIT="$ac_cv_prog_NMEDIT" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. +set dummy ${ac_tool_prefix}lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_LIPO+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$LIPO"; then + ac_cv_prog_LIPO="$LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_LIPO="${ac_tool_prefix}lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +LIPO=$ac_cv_prog_LIPO +if test -n "$LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +$as_echo "$LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_LIPO"; then + ac_ct_LIPO=$LIPO + # Extract the first word of "lipo", so it can be a program name with args. +set dummy lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_LIPO"; then + ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_LIPO="lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO +if test -n "$ac_ct_LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +$as_echo "$ac_ct_LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_LIPO" = x; then + LIPO=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + LIPO=$ac_ct_LIPO + fi +else + LIPO="$ac_cv_prog_LIPO" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_OTOOL+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL"; then + ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_OTOOL="${ac_tool_prefix}otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL=$ac_cv_prog_OTOOL +if test -n "$OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +$as_echo "$OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL"; then + ac_ct_OTOOL=$OTOOL + # Extract the first word of "otool", so it can be a program name with args. +set dummy otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL"; then + ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_OTOOL="otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL +if test -n "$ac_ct_OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +$as_echo "$ac_ct_OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL" = x; then + OTOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL=$ac_ct_OTOOL + fi +else + OTOOL="$ac_cv_prog_OTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_OTOOL64+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL64"; then + ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL64=$ac_cv_prog_OTOOL64 +if test -n "$OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +$as_echo "$OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL64"; then + ac_ct_OTOOL64=$OTOOL64 + # Extract the first word of "otool64", so it can be a program name with args. +set dummy otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL64"; then + ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_OTOOL64="otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 +if test -n "$ac_ct_OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +$as_echo "$ac_ct_OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL64" = x; then + OTOOL64=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL64=$ac_ct_OTOOL64 + fi +else + OTOOL64="$ac_cv_prog_OTOOL64" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +$as_echo_n "checking for -single_module linker flag... " >&6; } +if test "${lt_cv_apple_cc_single_mod+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&5 + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +$as_echo "$lt_cv_apple_cc_single_mod" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } +if test "${lt_cv_ld_exported_symbols_list+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_ld_exported_symbols_list=yes +else + lt_cv_ld_exported_symbols_list=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[91]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[012]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + if test "$DSYMUTIL" != ":"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if test "${ac_cv_header_stdc+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdlib.h> +#include <stdarg.h> +#include <string.h> +#include <float.h> + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <string.h> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdlib.h> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <ctype.h> +#include <stdlib.h> +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +eval as_val=\$$as_ac_Header + if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in dlfcn.h +do : + ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +" +if test "x$ac_cv_header_dlfcn_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_DLFCN_H 1 +_ACEOF + +fi + +done + + + +# Set options + + + + enable_dlopen=no + + + enable_win32_dll=no + + + # Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then : + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_shared=yes +fi + + + + + + + + + + + +# Check whether --with-pic was given. +if test "${with_pic+set}" = set; then : + withval=$with_pic; pic_mode="$withval" +else + pic_mode=default +fi + + +test -z "$pic_mode" && pic_mode=default + + + + + + + + # Check whether --enable-fast-install was given. +if test "${enable_fast_install+set}" = set; then : + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_fast_install=yes +fi + + + + + + + + + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ltmain" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + + + + + + + + + + + + + + + + + + + + + + + + + +test -z "$LN_S" && LN_S="ln -s" + + + + + + + + + + + + + + +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +$as_echo_n "checking for objdir... " >&6; } +if test "${lt_cv_objdir+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +$as_echo "$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +cat >>confdefs.h <<_ACEOF +#define LT_OBJDIR "$lt_cv_objdir/" +_ACEOF + + + + + + + + + + + + + + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld="$lt_cv_prog_gnu_ld" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/${ac_tool_prefix}file; then + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +$as_echo_n "checking for file... " >&6; } +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/file; then + lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +# Use C for the default configuration in the libtool script + +lt_save_CC="$CC" +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + +if test -n "$compiler"; then + +lt_prog_compiler_no_builtin_flag= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag=' -fno-builtin' + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:7923: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:7927: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + + + + + + + lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } + + if test "$GCC" = yes; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + # old Intel for x86_64 which still supported -KPIC. + ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + xl*) + # IBM XL C 8.0/Fortran 10.1 on PPC + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-qpic' + lt_prog_compiler_static='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + *Sun\ F*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + esac + ;; + esac + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5 +$as_echo "$lt_prog_compiler_pic" >&6; } + + + + + + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if test "${lt_cv_prog_compiler_pic_works+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:8262: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:8266: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works" = xyes; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi + + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if test "${lt_cv_prog_compiler_static_works+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +$as_echo "$lt_cv_prog_compiler_static_works" >&6; } + +if test x"$lt_cv_prog_compiler_static_works" = xyes; then + : +else + lt_prog_compiler_static= +fi + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test "${lt_cv_prog_compiler_c_o+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:8367: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:8371: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test "${lt_cv_prog_compiler_c_o+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:8422: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:8426: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test "$hard_links" = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag= + always_export_symbols=no + archive_cmds= + archive_expsym_cmds= + compiler_needs_object=no + enable_shared_with_static_runtimes=no + export_dynamic_flag_spec= + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + hardcode_automatic=no + hardcode_direct=no + hardcode_direct_absolute=no + hardcode_libdir_flag_spec= + hardcode_libdir_flag_spec_ld= + hardcode_libdir_separator= + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + inherit_rpath=no + link_all_deplibs=unknown + module_cmds= + module_expsym_cmds= + old_archive_from_new_cmds= + old_archive_from_expsyms_cmds= + thread_safe_flag_spec= + whole_archive_flag_spec= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach <jrb3@best.com> says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test "$tmp_diet" = no + then + tmp_addflag= + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; + xl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + xlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' + hardcode_libdir_flag_spec= + hardcode_libdir_flag_spec_ld='-rpath $libdir' + archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + ld_shlibs=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = no; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_direct_absolute=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + file_list_spec='${wl}-f,' + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + export_dynamic_flag_spec='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' ${wl}-bernotok' + allow_undefined_flag=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + archive_cmds_need_lc=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes=yes + ;; + + darwin* | rhapsody*) + + + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + whole_archive_flag_spec='' + link_all_deplibs=yes + allow_undefined_flag="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=echo + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + + else + ld_shlibs=no + fi + + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + freebsd1*) + ld_shlibs=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld='+b $libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='${wl}-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo(void) {} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + inherit_rpath=yes + link_all_deplibs=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + hardcode_direct_absolute=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + archive_cmds_need_lc='no' + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z defs' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='${wl}' + archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag='${wl}-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='${wl}-z,text' + allow_undefined_flag='${wl}-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-R,$libdir' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + + if test x$host_vendor = xsni; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + export_dynamic_flag_spec='${wl}-Blargedynsym' + ;; + esac + fi + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +$as_echo "$ld_shlibs" >&6; } +test "$ld_shlibs" = no && can_build_shared=no + +with_gnu_ld=$with_gnu_ld + + + + + + + + + + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + archive_cmds_need_lc=no + else + archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc" >&5 +$as_echo "$archive_cmds_need_lc" >&6; } + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` + else + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } +}'` + sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[4-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib<name>.so + # instead of lib<name>.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix[3-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # Some binutils ld are patched to set DT_RUNPATH + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Add ABI-specific directories to the system library path. + sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || + test -n "$runpath_var" || + test "X$hardcode_automatic" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +$as_echo "$hardcode_action" >&6; } + +if test "$hardcode_action" = relink || + test "$inherit_rpath" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if test "${ac_cv_lib_dl_dlopen+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = x""yes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = x""yes; then : + lt_cv_dlopen="shl_load" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +$as_echo_n "checking for shl_load in -ldld... " >&6; } +if test "${ac_cv_lib_dld_shl_load+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_shl_load=yes +else + ac_cv_lib_dld_shl_load=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = x""yes; then : + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" +else + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = x""yes; then : + lt_cv_dlopen="dlopen" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if test "${ac_cv_lib_dl_dlopen+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = x""yes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +$as_echo_n "checking for dlopen in -lsvld... " >&6; } +if test "${ac_cv_lib_svld_dlopen+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_svld_dlopen=yes +else + ac_cv_lib_svld_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = x""yes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +$as_echo_n "checking for dld_link in -ldld... " >&6; } +if test "${ac_cv_lib_dld_dld_link+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (); +int +main () +{ +return dld_link (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_dld_link=yes +else + ac_cv_lib_dld_dld_link=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +$as_echo "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = x""yes; then : + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +$as_echo_n "checking whether a program can dlopen itself... " >&6; } +if test "${lt_cv_dlopen_self+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line 10792 "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include <dlfcn.h> +#endif + +#include <stdio.h> + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +$as_echo "$lt_cv_dlopen_self" >&6; } + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +if test "${lt_cv_dlopen_self_static+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line 10888 "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include <dlfcn.h> +#endif + +#include <stdio.h> + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +$as_echo "$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + + + + + + + + + + + + + + + + +striplib= +old_striplib= +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +$as_echo_n "checking whether stripping libraries is possible... " >&6; } +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ;; + esac +fi + + + + + + + + + + + + + # Report which library types will actually be built + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[4-9]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } + + + + +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + + + + + + + + + + + + + ac_config_commands="$ac_config_commands libtool" + + + + +# Only expand once: + + + +GETTEXT_PACKAGE=xchat + + +cat >>confdefs.h <<_ACEOF +#define GETTEXT_PACKAGE "$GETTEXT_PACKAGE" +_ACEOF + + +ALL_LINGUAS="be ca cs de el es fi fr gl hu it ja kn ko lt mk nl pa pl pt ru sq sr sv th uk vi zh_CN zh_TW" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 +$as_echo_n "checking whether NLS is requested... " >&6; } + # Check whether --enable-nls was given. +if test "${enable_nls+set}" = set; then : + enableval=$enable_nls; USE_NLS=$enableval +else + USE_NLS=yes +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +$as_echo "$USE_NLS" >&6; } + + + + + GETTEXT_MACRO_VERSION=0.17 + + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_MSGFMT+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case "$MSGFMT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 && + (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" + ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test "$MSGFMT" != ":"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 +$as_echo "$MSGFMT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_GMSGFMT+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $GMSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac +fi +GMSGFMT=$ac_cv_path_GMSGFMT +if test -n "$GMSGFMT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 +$as_echo "$GMSGFMT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; + *) MSGFMT_015=$MSGFMT ;; + esac + + case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; + *) GMSGFMT_015=$GMSGFMT ;; + esac + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_XGETTEXT+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case "$XGETTEXT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test "$XGETTEXT" != ":"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 +$as_echo "$XGETTEXT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + rm -f messages.po + + case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; + *) XGETTEXT_015=$XGETTEXT ;; + esac + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgmerge", so it can be a program name with args. +set dummy msgmerge; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_MSGMERGE+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case "$MSGMERGE" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then + ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" + ;; +esac +fi +MSGMERGE="$ac_cv_path_MSGMERGE" +if test "$MSGMERGE" != ":"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 +$as_echo "$MSGMERGE" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$localedir" || localedir='${datadir}/locale' + + + test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= + + + ac_config_commands="$ac_config_commands po-directories" + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library 2 or newer" >&5 +$as_echo_n "checking whether we are using the GNU C Library 2 or newer... " >&6; } +if test "${ac_cv_gnu_library_2+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include <features.h> +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ >= 2) + Lucky GNU user + #endif +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "Lucky GNU user" >/dev/null 2>&1; then : + ac_cv_gnu_library_2=yes +else + ac_cv_gnu_library_2=no +fi +rm -f conftest* + + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2" >&5 +$as_echo "$ac_cv_gnu_library_2" >&6; } + + GLIBC2="$ac_cv_gnu_library_2" + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_RANLIB+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + + + + CFLAG_VISIBILITY= + HAVE_VISIBILITY=0 + if test -n "$GCC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for simple visibility declarations" >&5 +$as_echo_n "checking for simple visibility declarations... " >&6; } + if test "${gl_cv_cc_visibility+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + gl_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fvisibility=hidden" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +extern __attribute__((__visibility__("hidden"))) int hiddenvar; + extern __attribute__((__visibility__("default"))) int exportedvar; + extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void); + extern __attribute__((__visibility__("default"))) int exportedfunc (void); +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_cc_visibility=yes +else + gl_cv_cc_visibility=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS="$gl_save_CFLAGS" +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_visibility" >&5 +$as_echo "$gl_cv_cc_visibility" >&6; } + if test $gl_cv_cc_visibility = yes; then + CFLAG_VISIBILITY="-fvisibility=hidden" + HAVE_VISIBILITY=1 + fi + fi + + + +cat >>confdefs.h <<_ACEOF +#define HAVE_VISIBILITY $HAVE_VISIBILITY +_ACEOF + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 +$as_echo_n "checking for inline... " >&6; } +if test "${ac_cv_c_inline+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_inline=no +for ac_kw in inline __inline__ __inline; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __cplusplus +typedef int foo_t; +static $ac_kw foo_t static_foo () {return 0; } +$ac_kw foo_t foo () {return 0; } +#endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_inline=$ac_kw +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + test "$ac_cv_c_inline" != no && break +done + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 +$as_echo "$ac_cv_c_inline" >&6; } + +case $ac_cv_c_inline in + inline | yes) ;; + *) + case $ac_cv_c_inline in + no) ac_val=;; + *) ac_val=$ac_cv_c_inline;; + esac + cat >>confdefs.h <<_ACEOF +#ifndef __cplusplus +#define inline $ac_val +#endif +_ACEOF + ;; +esac + +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = x""yes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define size_t unsigned int +_ACEOF + +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint.h" >&5 +$as_echo_n "checking for stdint.h... " >&6; } +if test "${gl_cv_header_stdint_h+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <sys/types.h> +#include <stdint.h> +int +main () +{ +uintmax_t i = (uintmax_t) -1; return !i; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_header_stdint_h=yes +else + gl_cv_header_stdint_h=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_stdint_h" >&5 +$as_echo "$gl_cv_header_stdint_h" >&6; } + if test $gl_cv_header_stdint_h = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_STDINT_H_WITH_UINTMAX 1 +_ACEOF + + fi + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 +$as_echo_n "checking for working alloca.h... " >&6; } +if test "${ac_cv_working_alloca_h+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <alloca.h> +int +main () +{ +char *p = (char *) alloca (2 * sizeof (int)); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_working_alloca_h=yes +else + ac_cv_working_alloca_h=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 +$as_echo "$ac_cv_working_alloca_h" >&6; } +if test $ac_cv_working_alloca_h = yes; then + +$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 +$as_echo_n "checking for alloca... " >&6; } +if test "${ac_cv_func_alloca_works+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __GNUC__ +# define alloca __builtin_alloca +#else +# ifdef _MSC_VER +# include <malloc.h> +# define alloca _alloca +# else +# ifdef HAVE_ALLOCA_H +# include <alloca.h> +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca /* predefined by HP cc +Olibcalls */ +char *alloca (); +# endif +# endif +# endif +# endif +#endif + +int +main () +{ +char *p = (char *) alloca (1); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_func_alloca_works=yes +else + ac_cv_func_alloca_works=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 +$as_echo "$ac_cv_func_alloca_works" >&6; } + +if test $ac_cv_func_alloca_works = yes; then + +$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h + +else + # The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. + +ALLOCA=\${LIBOBJDIR}alloca.$ac_objext + +$as_echo "#define C_ALLOCA 1" >>confdefs.h + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5 +$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; } +if test "${ac_cv_os_cray+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined CRAY && ! defined CRAY2 +webecray +#else +wenotbecray +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "webecray" >/dev/null 2>&1; then : + ac_cv_os_cray=yes +else + ac_cv_os_cray=no +fi +rm -f conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5 +$as_echo "$ac_cv_os_cray" >&6; } +if test $ac_cv_os_cray = yes; then + for ac_func in _getb67 GETB67 getb67; do + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +eval as_val=\$$as_ac_var + if test "x$as_val" = x""yes; then : + +cat >>confdefs.h <<_ACEOF +#define CRAY_STACKSEG_END $ac_func +_ACEOF + + break +fi + + done +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 +$as_echo_n "checking stack direction for C alloca... " >&6; } +if test "${ac_cv_c_stack_direction+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_c_stack_direction=0 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +find_stack_direction () +{ + static char *addr = 0; + auto char dummy; + if (addr == 0) + { + addr = &dummy; + return find_stack_direction (); + } + else + return (&dummy > addr) ? 1 : -1; +} + +int +main () +{ + return find_stack_direction () < 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_c_stack_direction=1 +else + ac_cv_c_stack_direction=-1 +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 +$as_echo "$ac_cv_c_stack_direction" >&6; } +cat >>confdefs.h <<_ACEOF +#define STACK_DIRECTION $ac_cv_c_stack_direction +_ACEOF + + +fi + + + + + for ac_header in $ac_header_list +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +eval as_val=\$$as_ac_Header + if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + + + +for ac_func in getpagesize +do : + ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize" +if test "x$ac_cv_func_getpagesize" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_GETPAGESIZE 1 +_ACEOF + +fi +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5 +$as_echo_n "checking for working mmap... " >&6; } +if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_mmap_fixed_mapped=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +/* malloc might have been renamed as rpl_malloc. */ +#undef malloc + +/* Thanks to Mike Haertel and Jim Avera for this test. + Here is a matrix of mmap possibilities: + mmap private not fixed + mmap private fixed at somewhere currently unmapped + mmap private fixed at somewhere already mapped + mmap shared not fixed + mmap shared fixed at somewhere currently unmapped + mmap shared fixed at somewhere already mapped + For private mappings, we should verify that changes cannot be read() + back from the file, nor mmap's back from the file at a different + address. (There have been systems where private was not correctly + implemented like the infamous i386 svr4.0, and systems where the + VM page cache was not coherent with the file system buffer cache + like early versions of FreeBSD and possibly contemporary NetBSD.) + For shared mappings, we should conversely verify that changes get + propagated back to all the places they're supposed to be. + + Grep wants private fixed already mapped. + The main things grep needs to know about mmap are: + * does it exist and is it safe to write into the mmap'd area + * how to use it (BSD variants) */ + +#include <fcntl.h> +#include <sys/mman.h> + +#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H +char *malloc (); +#endif + +/* This mess was copied from the GNU getpagesize.h. */ +#ifndef HAVE_GETPAGESIZE +# ifdef _SC_PAGESIZE +# define getpagesize() sysconf(_SC_PAGESIZE) +# else /* no _SC_PAGESIZE */ +# ifdef HAVE_SYS_PARAM_H +# include <sys/param.h> +# ifdef EXEC_PAGESIZE +# define getpagesize() EXEC_PAGESIZE +# else /* no EXEC_PAGESIZE */ +# ifdef NBPG +# define getpagesize() NBPG * CLSIZE +# ifndef CLSIZE +# define CLSIZE 1 +# endif /* no CLSIZE */ +# else /* no NBPG */ +# ifdef NBPC +# define getpagesize() NBPC +# else /* no NBPC */ +# ifdef PAGESIZE +# define getpagesize() PAGESIZE +# endif /* PAGESIZE */ +# endif /* no NBPC */ +# endif /* no NBPG */ +# endif /* no EXEC_PAGESIZE */ +# else /* no HAVE_SYS_PARAM_H */ +# define getpagesize() 8192 /* punt totally */ +# endif /* no HAVE_SYS_PARAM_H */ +# endif /* no _SC_PAGESIZE */ + +#endif /* no HAVE_GETPAGESIZE */ + +int +main () +{ + char *data, *data2, *data3; + const char *cdata2; + int i, pagesize; + int fd, fd2; + + pagesize = getpagesize (); + + /* First, make a file with some known garbage in it. */ + data = (char *) malloc (pagesize); + if (!data) + return 1; + for (i = 0; i < pagesize; ++i) + *(data + i) = rand (); + umask (0); + fd = creat ("conftest.mmap", 0600); + if (fd < 0) + return 2; + if (write (fd, data, pagesize) != pagesize) + return 3; + close (fd); + + /* Next, check that the tail of a page is zero-filled. File must have + non-zero length, otherwise we risk SIGBUS for entire page. */ + fd2 = open ("conftest.txt", O_RDWR | O_CREAT | O_TRUNC, 0600); + if (fd2 < 0) + return 4; + cdata2 = ""; + if (write (fd2, cdata2, 1) != 1) + return 5; + data2 = (char *) mmap (0, pagesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd2, 0L); + if (data2 == MAP_FAILED) + return 6; + for (i = 0; i < pagesize; ++i) + if (*(data2 + i)) + return 7; + close (fd2); + if (munmap (data2, pagesize)) + return 8; + + /* Next, try to mmap the file at a fixed address which already has + something else allocated at it. If we can, also make sure that + we see the same garbage. */ + fd = open ("conftest.mmap", O_RDWR); + if (fd < 0) + return 9; + if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FIXED, fd, 0L)) + return 10; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data2 + i)) + return 11; + + /* Finally, make sure that changes to the mapped area do not + percolate back to the file as seen by read(). (This is a bug on + some variants of i386 svr4.0.) */ + for (i = 0; i < pagesize; ++i) + *(data2 + i) = *(data2 + i) + 1; + data3 = (char *) malloc (pagesize); + if (!data3) + return 12; + if (read (fd, data3, pagesize) != pagesize) + return 13; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data3 + i)) + return 14; + close (fd); + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_mmap_fixed_mapped=yes +else + ac_cv_func_mmap_fixed_mapped=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5 +$as_echo "$ac_cv_func_mmap_fixed_mapped" >&6; } +if test $ac_cv_func_mmap_fixed_mapped = yes; then + +$as_echo "#define HAVE_MMAP 1" >>confdefs.h + +fi +rm -f conftest.mmap conftest.txt + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether integer division by zero raises SIGFPE" >&5 +$as_echo_n "checking whether integer division by zero raises SIGFPE... " >&6; } +if test "${gt_cv_int_divbyzero_sigfpe+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + gt_cv_int_divbyzero_sigfpe= + case "$host_os" in + macos* | darwin[6-9]* | darwin[1-9][0-9]*) + # On MacOS X 10.2 or newer, just assume the same as when cross- + # compiling. If we were to perform the real test, 1 Crash Report + # dialog window would pop up. + case "$host_cpu" in + i[34567]86 | x86_64) + gt_cv_int_divbyzero_sigfpe="guessing yes" ;; + esac + ;; + esac + if test -z "$gt_cv_int_divbyzero_sigfpe"; then + if test "$cross_compiling" = yes; then : + + # Guess based on the CPU. + case "$host_cpu" in + alpha* | i[34567]86 | x86_64 | m68k | s390*) + gt_cv_int_divbyzero_sigfpe="guessing yes";; + *) + gt_cv_int_divbyzero_sigfpe="guessing no";; + esac + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include <stdlib.h> +#include <signal.h> + +static void +sigfpe_handler (int sig) +{ + /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ + exit (sig != SIGFPE); +} + +int x = 1; +int y = 0; +int z; +int nan; + +int main () +{ + signal (SIGFPE, sigfpe_handler); +/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ +#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) + signal (SIGTRAP, sigfpe_handler); +#endif +/* Linux/SPARC yields signal SIGILL. */ +#if defined (__sparc__) && defined (__linux__) + signal (SIGILL, sigfpe_handler); +#endif + + z = x / y; + nan = y / y; + exit (1); +} + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gt_cv_int_divbyzero_sigfpe=yes +else + gt_cv_int_divbyzero_sigfpe=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_int_divbyzero_sigfpe" >&5 +$as_echo "$gt_cv_int_divbyzero_sigfpe" >&6; } + case "$gt_cv_int_divbyzero_sigfpe" in + *yes) value=1;; + *) value=0;; + esac + +cat >>confdefs.h <<_ACEOF +#define INTDIV0_RAISES_SIGFPE $value +_ACEOF + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inttypes.h" >&5 +$as_echo_n "checking for inttypes.h... " >&6; } +if test "${gl_cv_header_inttypes_h+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <sys/types.h> +#include <inttypes.h> +int +main () +{ +uintmax_t i = (uintmax_t) -1; return !i; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_header_inttypes_h=yes +else + gl_cv_header_inttypes_h=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_inttypes_h" >&5 +$as_echo "$gl_cv_header_inttypes_h" >&6; } + if test $gl_cv_header_inttypes_h = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_INTTYPES_H_WITH_UINTMAX 1 +_ACEOF + + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5 +$as_echo_n "checking for unsigned long long int... " >&6; } +if test "${ac_cv_type_unsigned_long_long_int+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + /* Test preprocessor. */ + #if ! (-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + error in preprocessor; + #endif + #if ! (18446744073709551615ULL <= -1ull) + error in preprocessor; + #endif + /* Test literals. */ + long long int ll = 9223372036854775807ll; + long long int nll = -9223372036854775807LL; + unsigned long long int ull = 18446744073709551615ULL; + /* Test constant expressions. */ + typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + ? 1 : -1)]; + typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 + ? 1 : -1)]; + int i = 63; +int +main () +{ +/* Test availability of runtime routines for shift and division. */ + long long int llmax = 9223372036854775807ll; + unsigned long long int ullmax = 18446744073709551615ull; + return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) + | (llmax / ll) | (llmax % ll) + | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) + | (ullmax / ull) | (ullmax % ull)); + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_type_unsigned_long_long_int=yes +else + ac_cv_type_unsigned_long_long_int=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5 +$as_echo "$ac_cv_type_unsigned_long_long_int" >&6; } + if test $ac_cv_type_unsigned_long_long_int = yes; then + +$as_echo "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h + + fi + + + + + if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then + + test $ac_cv_type_unsigned_long_long_int = yes \ + && ac_type='unsigned long long' \ + || ac_type='unsigned long' + +cat >>confdefs.h <<_ACEOF +#define uintmax_t $ac_type +_ACEOF + + else + +$as_echo "#define HAVE_UINTMAX_T 1" >>confdefs.h + + fi + + + for ac_header in inttypes.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "inttypes.h" "ac_cv_header_inttypes_h" "$ac_includes_default" +if test "x$ac_cv_header_inttypes_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_INTTYPES_H 1 +_ACEOF + +fi + +done + + if test $ac_cv_header_inttypes_h = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the inttypes.h PRIxNN macros are broken" >&5 +$as_echo_n "checking whether the inttypes.h PRIxNN macros are broken... " >&6; } +if test "${gt_cv_inttypes_pri_broken+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <inttypes.h> +#ifdef PRId32 +char *p = PRId32; +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gt_cv_inttypes_pri_broken=no +else + gt_cv_inttypes_pri_broken=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_inttypes_pri_broken" >&5 +$as_echo "$gt_cv_inttypes_pri_broken" >&6; } + fi + if test "$gt_cv_inttypes_pri_broken" = yes; then + +cat >>confdefs.h <<_ACEOF +#define PRI_MACROS_BROKEN 1 +_ACEOF + + PRI_MACROS_BROKEN=1 + else + PRI_MACROS_BROKEN=0 + fi + + + + ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" +if test "x$ac_cv_header_minix_config_h" = x""yes; then : + MINIX=yes +else + MINIX= +fi + + + if test "$MINIX" = yes; then + +$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h + + +$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h + + +$as_echo "#define _MINIX 1" >>confdefs.h + + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 +$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } +if test "${ac_cv_safe_to_define___extensions__+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# define __EXTENSIONS__ 1 + $ac_includes_default +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_safe_to_define___extensions__=yes +else + ac_cv_safe_to_define___extensions__=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 +$as_echo "$ac_cv_safe_to_define___extensions__" >&6; } + test $ac_cv_safe_to_define___extensions__ = yes && + $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h + + $as_echo "#define _ALL_SOURCE 1" >>confdefs.h + + $as_echo "#define _GNU_SOURCE 1" >>confdefs.h + + $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + + $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h + + + + + + + # Check whether --enable-threads was given. +if test "${enable_threads+set}" = set; then : + enableval=$enable_threads; gl_use_threads=$enableval +else + case "$host_os" in + osf*) gl_use_threads=no ;; + *) gl_use_threads=yes ;; + esac + +fi + + if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then + # For using <pthread.h>: + case "$host_os" in + osf*) + # On OSF/1, the compiler needs the flag -D_REENTRANT so that it + # groks <pthread.h>. cc also understands the flag -pthread, but + # we don't use it because 1. gcc-2.95 doesn't understand -pthread, + # 2. putting a flag into CPPFLAGS that has an effect on the linker + # causes the AC_TRY_LINK test below to succeed unexpectedly, + # leading to wrong values of LIBTHREAD and LTLIBTHREAD. + CPPFLAGS="$CPPFLAGS -D_REENTRANT" + ;; + esac + # Some systems optimize for single-threaded programs by default, and + # need special flags to disable these optimizations. For example, the + # definition of 'errno' in <errno.h>. + case "$host_os" in + aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;; + solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;; + esac + fi + + + + + + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5 +$as_echo_n "checking for ld used by GCC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | [A-Za-z]:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if test "${acl_cv_path_LD+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in + *GNU* | *'with BFD'*) + test "$with_gnu_ld" != no && break ;; + *) + test "$with_gnu_ld" != yes && break ;; + esac + fi + done + IFS="$ac_save_ifs" +else + acl_cv_path_LD="$LD" # Let the user override the test with a path. +fi +fi + +LD="$acl_cv_path_LD" +if test -n "$LD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if test "${acl_cv_prog_gnu_ld+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU ld's only accept -v. +case `$LD -v 2>&1 </dev/null` in +*GNU* | *'with BFD'*) + acl_cv_prog_gnu_ld=yes ;; +*) + acl_cv_prog_gnu_ld=no ;; +esac +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_prog_gnu_ld" >&5 +$as_echo "$acl_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$acl_cv_prog_gnu_ld + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 +$as_echo_n "checking for shared library run path origin... " >&6; } +if test "${acl_cv_rpath+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 +$as_echo "$acl_cv_rpath" >&6; } + wl="$acl_cv_wl" + acl_libext="$acl_cv_libext" + acl_shlibext="$acl_cv_shlibext" + acl_libname_spec="$acl_cv_libname_spec" + acl_library_names_spec="$acl_cv_library_names_spec" + acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + acl_hardcode_direct="$acl_cv_hardcode_direct" + acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" + # Check whether --enable-rpath was given. +if test "${enable_rpath+set}" = set; then : + enableval=$enable_rpath; : +else + enable_rpath=yes +fi + + + + acl_libdirstem=lib + searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` + if test -n "$searchpath"; then + acl_save_IFS="${IFS= }"; IFS=":" + for searchdir in $searchpath; do + if test -d "$searchdir"; then + case "$searchdir" in + */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; + *) searchdir=`cd "$searchdir" && pwd` + case "$searchdir" in + */lib64 ) acl_libdirstem=lib64 ;; + esac ;; + esac + fi + done + IFS="$acl_save_IFS" + fi + + + + gl_threads_api=none + LIBTHREAD= + LTLIBTHREAD= + LIBMULTITHREAD= + LTLIBMULTITHREAD= + if test "$gl_use_threads" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether imported symbols can be declared weak" >&5 +$as_echo_n "checking whether imported symbols can be declared weak... " >&6; } + gl_have_weak=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +extern void xyzzy (); +#pragma weak xyzzy +int +main () +{ +xyzzy(); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gl_have_weak=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_have_weak" >&5 +$as_echo "$gl_have_weak" >&6; } + if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then + # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that + # it groks <pthread.h>. It's added above, in gl_LOCK_EARLY_BODY. + ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default" +if test "x$ac_cv_header_pthread_h" = x""yes; then : + gl_have_pthread_h=yes +else + gl_have_pthread_h=no +fi + + + if test "$gl_have_pthread_h" = yes; then + # Other possible tests: + # -lpthreads (FSU threads, PCthreads) + # -lgthreads + gl_have_pthread= + # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist + # in libc. IRIX 6.5 has the first one in both libc and libpthread, but + # the second one only in libpthread, and lock.c needs it. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <pthread.h> +int +main () +{ +pthread_mutex_lock((pthread_mutex_t*)0); + pthread_mutexattr_init((pthread_mutexattr_t*)0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gl_have_pthread=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + # Test for libpthread by looking for pthread_kill. (Not pthread_self, + # since it is defined as a macro on OSF/1.) + if test -n "$gl_have_pthread"; then + # The program links fine without libpthread. But it may actually + # need to link with libpthread in order to create multiple threads. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lpthread" >&5 +$as_echo_n "checking for pthread_kill in -lpthread... " >&6; } +if test "${ac_cv_lib_pthread_pthread_kill+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpthread $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char pthread_kill (); +int +main () +{ +return pthread_kill (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_pthread_pthread_kill=yes +else + ac_cv_lib_pthread_pthread_kill=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_kill" >&5 +$as_echo "$ac_cv_lib_pthread_pthread_kill" >&6; } +if test "x$ac_cv_lib_pthread_pthread_kill" = x""yes; then : + LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread + # On Solaris and HP-UX, most pthread functions exist also in libc. + # Therefore pthread_in_use() needs to actually try to create a + # thread: pthread_create from libc will fail, whereas + # pthread_create will actually create a thread. + case "$host_os" in + solaris* | hpux*) + +$as_echo "#define PTHREAD_IN_USE_DETECTION_HARD 1" >>confdefs.h + + esac + +fi + + else + # Some library is needed. Try libpthread and libc_r. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lpthread" >&5 +$as_echo_n "checking for pthread_kill in -lpthread... " >&6; } +if test "${ac_cv_lib_pthread_pthread_kill+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpthread $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char pthread_kill (); +int +main () +{ +return pthread_kill (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_pthread_pthread_kill=yes +else + ac_cv_lib_pthread_pthread_kill=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_kill" >&5 +$as_echo "$ac_cv_lib_pthread_pthread_kill" >&6; } +if test "x$ac_cv_lib_pthread_pthread_kill" = x""yes; then : + gl_have_pthread=yes + LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread + LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread +fi + + if test -z "$gl_have_pthread"; then + # For FreeBSD 4. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lc_r" >&5 +$as_echo_n "checking for pthread_kill in -lc_r... " >&6; } +if test "${ac_cv_lib_c_r_pthread_kill+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lc_r $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char pthread_kill (); +int +main () +{ +return pthread_kill (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_c_r_pthread_kill=yes +else + ac_cv_lib_c_r_pthread_kill=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_r_pthread_kill" >&5 +$as_echo "$ac_cv_lib_c_r_pthread_kill" >&6; } +if test "x$ac_cv_lib_c_r_pthread_kill" = x""yes; then : + gl_have_pthread=yes + LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r + LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r +fi + + fi + fi + if test -n "$gl_have_pthread"; then + gl_threads_api=posix + +$as_echo "#define USE_POSIX_THREADS 1" >>confdefs.h + + if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then + if test $gl_have_weak = yes; then + +$as_echo "#define USE_POSIX_THREADS_WEAK 1" >>confdefs.h + + LIBTHREAD= + LTLIBTHREAD= + fi + fi + # OSF/1 4.0 and MacOS X 10.1 lack the pthread_rwlock_t type and the + # pthread_rwlock_* functions. + ac_fn_c_check_type "$LINENO" "pthread_rwlock_t" "ac_cv_type_pthread_rwlock_t" "#include <pthread.h> +" +if test "x$ac_cv_type_pthread_rwlock_t" = x""yes; then : + +$as_echo "#define HAVE_PTHREAD_RWLOCK 1" >>confdefs.h + +fi + + # glibc defines PTHREAD_MUTEX_RECURSIVE as enum, not as a macro. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <pthread.h> +int +main () +{ +#if __FreeBSD__ == 4 +error "No, in FreeBSD 4.0 recursive mutexes actually don't work." +#else +int x = (int)PTHREAD_MUTEX_RECURSIVE; +return !x; +#endif + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +$as_echo "#define HAVE_PTHREAD_MUTEX_RECURSIVE 1" >>confdefs.h + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + fi + fi + if test -z "$gl_have_pthread"; then + if test "$gl_use_threads" = yes || test "$gl_use_threads" = solaris; then + gl_have_solaristhread= + gl_save_LIBS="$LIBS" + LIBS="$LIBS -lthread" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <thread.h> +#include <synch.h> +int +main () +{ +thr_self(); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gl_have_solaristhread=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gl_save_LIBS" + if test -n "$gl_have_solaristhread"; then + gl_threads_api=solaris + LIBTHREAD=-lthread + LTLIBTHREAD=-lthread + LIBMULTITHREAD="$LIBTHREAD" + LTLIBMULTITHREAD="$LTLIBTHREAD" + +$as_echo "#define USE_SOLARIS_THREADS 1" >>confdefs.h + + if test $gl_have_weak = yes; then + +$as_echo "#define USE_SOLARIS_THREADS_WEAK 1" >>confdefs.h + + LIBTHREAD= + LTLIBTHREAD= + fi + fi + fi + fi + if test "$gl_use_threads" = pth; then + gl_save_CPPFLAGS="$CPPFLAGS" + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libpth" >&5 +$as_echo_n "checking how to link with libpth... " >&6; } +if test "${ac_cv_libpth_libs+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libpth-prefix was given. +if test "${with_libpth_prefix+set}" = set; then : + withval=$with_libpth_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + fi + fi + +fi + + LIBPTH= + LTLIBPTH= + INCPTH= + LIBPTH_PREFIX= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='pth ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBPTH="${LIBPTH}${LIBPTH:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBPTH; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then + LIBPTH="${LIBPTH}${LIBPTH:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBPTH="${LIBPTH}${LIBPTH:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + LIBPTH="${LIBPTH}${LIBPTH:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBPTH; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBPTH="${LIBPTH}${LIBPTH:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBPTH="${LIBPTH}${LIBPTH:+ }$found_so" + else + LIBPTH="${LIBPTH}${LIBPTH:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBPTH="${LIBPTH}${LIBPTH:+ }$found_a" + else + LIBPTH="${LIBPTH}${LIBPTH:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + LIBPTH_PREFIX="$basedir" + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCPTH; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCPTH="${INCPTH}${INCPTH:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBPTH; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBPTH="${LIBPTH}${LIBPTH:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBPTH; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBPTH="${LIBPTH}${LIBPTH:+ }$dep" + LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }$dep" + ;; + esac + done + fi + else + LIBPTH="${LIBPTH}${LIBPTH:+ }-l$name" + LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBPTH="${LIBPTH}${LIBPTH:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBPTH="${LIBPTH}${LIBPTH:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-R$found_dir" + done + fi + + ac_cv_libpth_libs="$LIBPTH" + ac_cv_libpth_ltlibs="$LTLIBPTH" + ac_cv_libpth_cppflags="$INCPTH" + ac_cv_libpth_prefix="$LIBPTH_PREFIX" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libpth_libs" >&5 +$as_echo "$ac_cv_libpth_libs" >&6; } + LIBPTH="$ac_cv_libpth_libs" + LTLIBPTH="$ac_cv_libpth_ltlibs" + INCPTH="$ac_cv_libpth_cppflags" + LIBPTH_PREFIX="$ac_cv_libpth_prefix" + + for element in $INCPTH; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + + + + HAVE_LIBPTH=yes + + + + gl_have_pth= + gl_save_LIBS="$LIBS" + LIBS="$LIBS -lpth" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <pth.h> +int +main () +{ +pth_self(); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gl_have_pth=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gl_save_LIBS" + if test -n "$gl_have_pth"; then + gl_threads_api=pth + LIBTHREAD="$LIBPTH" + LTLIBTHREAD="$LTLIBPTH" + LIBMULTITHREAD="$LIBTHREAD" + LTLIBMULTITHREAD="$LTLIBTHREAD" + +$as_echo "#define USE_PTH_THREADS 1" >>confdefs.h + + if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then + if test $gl_have_weak = yes; then + +$as_echo "#define USE_PTH_THREADS_WEAK 1" >>confdefs.h + + LIBTHREAD= + LTLIBTHREAD= + fi + fi + else + CPPFLAGS="$gl_save_CPPFLAGS" + fi + fi + if test -z "$gl_have_pthread"; then + if test "$gl_use_threads" = yes || test "$gl_use_threads" = win32; then + if { case "$host_os" in + mingw*) true;; + *) false;; + esac + }; then + gl_threads_api=win32 + +$as_echo "#define USE_WIN32_THREADS 1" >>confdefs.h + + fi + fi + fi + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for multithread API to use" >&5 +$as_echo_n "checking for multithread API to use... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_threads_api" >&5 +$as_echo "$gl_threads_api" >&6; } + + + + + + + + + + + + + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libiconv-prefix was given. +if test "${with_libiconv_prefix+set}" = set; then : + withval=$with_libiconv_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + fi + fi + +fi + + LIBICONV= + LTLIBICONV= + INCICONV= + LIBICONV_PREFIX= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='iconv ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + LIBICONV_PREFIX="$basedir" + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" + ;; + esac + done + fi + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" + done + fi + + + + + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; } +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + +$as_echo "#define HAVE_BUILTIN_EXPECT 1" >>confdefs.h + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + for ac_header in argz.h inttypes.h limits.h unistd.h sys/param.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +eval as_val=\$$as_ac_Header + if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + for ac_func in getcwd getegid geteuid getgid getuid mempcpy munmap \ + stpcpy strcasecmp strdup strtoul tsearch argz_count argz_stringify \ + argz_next __fsetlocking +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +eval as_val=\$$as_ac_var + if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether feof_unlocked is declared" >&5 +$as_echo_n "checking whether feof_unlocked is declared... " >&6; } +if test "${ac_cv_have_decl_feof_unlocked+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ + +#ifndef feof_unlocked + char *p = (char *) feof_unlocked; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_have_decl_feof_unlocked=yes +else + ac_cv_have_decl_feof_unlocked=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_decl_feof_unlocked" >&5 +$as_echo "$ac_cv_have_decl_feof_unlocked" >&6; } + if test $ac_cv_have_decl_feof_unlocked = yes; then + gt_value=1 + else + gt_value=0 + fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FEOF_UNLOCKED $gt_value +_ACEOF + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fgets_unlocked is declared" >&5 +$as_echo_n "checking whether fgets_unlocked is declared... " >&6; } +if test "${ac_cv_have_decl_fgets_unlocked+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ + +#ifndef fgets_unlocked + char *p = (char *) fgets_unlocked; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_have_decl_fgets_unlocked=yes +else + ac_cv_have_decl_fgets_unlocked=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_decl_fgets_unlocked" >&5 +$as_echo "$ac_cv_have_decl_fgets_unlocked" >&6; } + if test $ac_cv_have_decl_fgets_unlocked = yes; then + gt_value=1 + else + gt_value=0 + fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FGETS_UNLOCKED $gt_value +_ACEOF + + + + + + + + + am_save_CPPFLAGS="$CPPFLAGS" + + for element in $INCICONV; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 +$as_echo_n "checking for iconv... " >&6; } +if test "${am_cv_func_iconv+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdlib.h> +#include <iconv.h> +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdlib.h> +#include <iconv.h> +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + am_cv_lib_iconv=yes + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$am_save_LIBS" + fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 +$as_echo "$am_cv_func_iconv" >&6; } + if test "$am_cv_func_iconv" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 +$as_echo_n "checking for working iconv... " >&6; } +if test "${am_cv_func_iconv_works+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + am_save_LIBS="$LIBS" + if test $am_cv_lib_iconv = yes; then + LIBS="$LIBS $LIBICONV" + fi + if test "$cross_compiling" = yes; then : + case "$host_os" in + aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; + *) am_cv_func_iconv_works="guessing yes" ;; + esac +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include <iconv.h> +#include <string.h> +int main () +{ + /* Test against AIX 5.1 bug: Failures are not distinguishable from successful + returns. */ + { + iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); + if (cd_utf8_to_88591 != (iconv_t)(-1)) + { + static const char input[] = "\342\202\254"; /* EURO SIGN */ + char buf[10]; + const char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_utf8_to_88591, + (char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + return 1; + } + } +#if 0 /* This bug could be worked around by the caller. */ + /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char buf[50]; + const char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_88591_to_utf8, + (char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + if ((int)res > 0) + return 1; + } + } +#endif + /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is + provided. */ + if (/* Try standardized names. */ + iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) + /* Try IRIX, OSF/1 names. */ + && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) + /* Try AIX names. */ + && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) + /* Try HP-UX names. */ + && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) + return 1; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + am_cv_func_iconv_works=yes +else + am_cv_func_iconv_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + LIBS="$am_save_LIBS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 +$as_echo "$am_cv_func_iconv_works" >&6; } + case "$am_cv_func_iconv_works" in + *no) am_func_iconv=no am_cv_lib_iconv=no ;; + *) am_func_iconv=yes ;; + esac + else + am_func_iconv=no am_cv_lib_iconv=no + fi + if test "$am_func_iconv" = yes; then + +$as_echo "#define HAVE_ICONV 1" >>confdefs.h + + fi + if test "$am_cv_lib_iconv" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 +$as_echo_n "checking how to link with libiconv... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 +$as_echo "$LIBICONV" >&6; } + else + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + + + + if test "$am_cv_func_iconv" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv declaration" >&5 +$as_echo_n "checking for iconv declaration... " >&6; } + if test "${am_cv_proto_iconv+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include <stdlib.h> +#include <iconv.h> +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + am_cv_proto_iconv_arg1="" +else + am_cv_proto_iconv_arg1="const" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);" +fi + + am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ac_t:- + }$am_cv_proto_iconv" >&5 +$as_echo "${ac_t:- + }$am_cv_proto_iconv" >&6; } + +cat >>confdefs.h <<_ACEOF +#define ICONV_CONST $am_cv_proto_iconv_arg1 +_ACEOF + + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for NL_LOCALE_NAME macro" >&5 +$as_echo_n "checking for NL_LOCALE_NAME macro... " >&6; } +if test "${gt_cv_nl_locale_name+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <langinfo.h> +#include <locale.h> +int +main () +{ +char* cs = nl_langinfo(_NL_LOCALE_NAME(LC_MESSAGES)); + return !cs; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gt_cv_nl_locale_name=yes +else + gt_cv_nl_locale_name=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_nl_locale_name" >&5 +$as_echo "$gt_cv_nl_locale_name" >&6; } + if test $gt_cv_nl_locale_name = yes; then + +$as_echo "#define HAVE_NL_LOCALE_NAME 1" >>confdefs.h + + fi + + for ac_prog in bison +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_INTLBISON+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$INTLBISON"; then + ac_cv_prog_INTLBISON="$INTLBISON" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_INTLBISON="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +INTLBISON=$ac_cv_prog_INTLBISON +if test -n "$INTLBISON"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLBISON" >&5 +$as_echo "$INTLBISON" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$INTLBISON" && break +done + + if test -z "$INTLBISON"; then + ac_verc_fail=yes + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of bison" >&5 +$as_echo_n "checking version of bison... " >&6; } + ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5 +$as_echo "$ac_prog_version" >&6; } + fi + if test $ac_verc_fail = yes; then + INTLBISON=: + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5 +$as_echo_n "checking for long long int... " >&6; } +if test "${ac_cv_type_long_long_int+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + /* Test preprocessor. */ + #if ! (-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + error in preprocessor; + #endif + #if ! (18446744073709551615ULL <= -1ull) + error in preprocessor; + #endif + /* Test literals. */ + long long int ll = 9223372036854775807ll; + long long int nll = -9223372036854775807LL; + unsigned long long int ull = 18446744073709551615ULL; + /* Test constant expressions. */ + typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + ? 1 : -1)]; + typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 + ? 1 : -1)]; + int i = 63; +int +main () +{ +/* Test availability of runtime routines for shift and division. */ + long long int llmax = 9223372036854775807ll; + unsigned long long int ullmax = 18446744073709551615ull; + return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) + | (llmax / ll) | (llmax % ll) + | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) + | (ullmax / ull) | (ullmax % ull)); + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + if test "$cross_compiling" = yes; then : + ac_cv_type_long_long_int=yes +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <limits.h> + #ifndef LLONG_MAX + # define HALF \ + (1LL << (sizeof (long long int) * CHAR_BIT - 2)) + # define LLONG_MAX (HALF - 1 + HALF) + #endif +int +main () +{ +long long int n = 1; + int i; + for (i = 0; ; i++) + { + long long int m = n << i; + if (m >> i != n) + return 1; + if (LLONG_MAX / 2 < m) + break; + } + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_type_long_long_int=yes +else + ac_cv_type_long_long_int=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +else + ac_cv_type_long_long_int=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5 +$as_echo "$ac_cv_type_long_long_int" >&6; } + if test $ac_cv_type_long_long_int = yes; then + +$as_echo "#define HAVE_LONG_LONG_INT 1" >>confdefs.h + + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wchar_t" >&5 +$as_echo_n "checking for wchar_t... " >&6; } +if test "${gt_cv_c_wchar_t+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stddef.h> + wchar_t foo = (wchar_t)'\0'; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gt_cv_c_wchar_t=yes +else + gt_cv_c_wchar_t=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wchar_t" >&5 +$as_echo "$gt_cv_c_wchar_t" >&6; } + if test $gt_cv_c_wchar_t = yes; then + +$as_echo "#define HAVE_WCHAR_T 1" >>confdefs.h + + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wint_t" >&5 +$as_echo_n "checking for wint_t... " >&6; } +if test "${gt_cv_c_wint_t+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before + <wchar.h>. + BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included + before <wchar.h>. */ +#include <stddef.h> +#include <stdio.h> +#include <time.h> +#include <wchar.h> + wint_t foo = (wchar_t)'\0'; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gt_cv_c_wint_t=yes +else + gt_cv_c_wint_t=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wint_t" >&5 +$as_echo "$gt_cv_c_wint_t" >&6; } + if test $gt_cv_c_wint_t = yes; then + +$as_echo "#define HAVE_WINT_T 1" >>confdefs.h + + fi + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for intmax_t" >&5 +$as_echo_n "checking for intmax_t... " >&6; } +if test "${gt_cv_c_intmax_t+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include <stddef.h> +#include <stdlib.h> +#if HAVE_STDINT_H_WITH_UINTMAX +#include <stdint.h> +#endif +#if HAVE_INTTYPES_H_WITH_UINTMAX +#include <inttypes.h> +#endif + +int +main () +{ +intmax_t x = -1; + return !x; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gt_cv_c_intmax_t=yes +else + gt_cv_c_intmax_t=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_intmax_t" >&5 +$as_echo "$gt_cv_c_intmax_t" >&6; } + if test $gt_cv_c_intmax_t = yes; then + +$as_echo "#define HAVE_INTMAX_T 1" >>confdefs.h + + fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether printf() supports POSIX/XSI format strings" >&5 +$as_echo_n "checking whether printf() supports POSIX/XSI format strings... " >&6; } +if test "${gt_cv_func_printf_posix+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + if test "$cross_compiling" = yes; then : + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if defined __NetBSD__ || defined __BEOS__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__ + notposix +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "notposix" >/dev/null 2>&1; then : + gt_cv_func_printf_posix="guessing no" +else + gt_cv_func_printf_posix="guessing yes" +fi +rm -f conftest* + + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include <stdio.h> +#include <string.h> +/* The string "%2$d %1$d", with dollar characters protected from the shell's + dollar expansion (possibly an autoconf bug). */ +static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' }; +static char buf[100]; +int main () +{ + sprintf (buf, format, 33, 55); + return (strcmp (buf, "55 33") != 0); +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gt_cv_func_printf_posix=yes +else + gt_cv_func_printf_posix=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_printf_posix" >&5 +$as_echo "$gt_cv_func_printf_posix" >&6; } + case $gt_cv_func_printf_posix in + *yes) + +$as_echo "#define HAVE_POSIX_PRINTF 1" >>confdefs.h + + ;; + esac + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library 2.1 or newer" >&5 +$as_echo_n "checking whether we are using the GNU C Library 2.1 or newer... " >&6; } +if test "${ac_cv_gnu_library_2_1+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include <features.h> +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "Lucky GNU user" >/dev/null 2>&1; then : + ac_cv_gnu_library_2_1=yes +else + ac_cv_gnu_library_2_1=no +fi +rm -f conftest* + + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2_1" >&5 +$as_echo "$ac_cv_gnu_library_2_1" >&6; } + + GLIBC21="$ac_cv_gnu_library_2_1" + + + + for ac_header in stdint.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default" +if test "x$ac_cv_header_stdint_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_STDINT_H 1 +_ACEOF + +fi + +done + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SIZE_MAX" >&5 +$as_echo_n "checking for SIZE_MAX... " >&6; } + if test "${gl_cv_size_max+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + gl_cv_size_max= + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include <limits.h> +#if HAVE_STDINT_H +#include <stdint.h> +#endif +#ifdef SIZE_MAX +Found it +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "Found it" >/dev/null 2>&1; then : + gl_cv_size_max=yes +fi +rm -f conftest* + + if test -z "$gl_cv_size_max"; then + if ac_fn_c_compute_int "$LINENO" "sizeof (size_t) * CHAR_BIT - 1" "size_t_bits_minus_1" "#include <stddef.h> +#include <limits.h>"; then : + +else + size_t_bits_minus_1= +fi + + if ac_fn_c_compute_int "$LINENO" "sizeof (size_t) <= sizeof (unsigned int)" "fits_in_uint" "#include <stddef.h>"; then : + +else + fits_in_uint= +fi + + if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then + if test $fits_in_uint = 1; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stddef.h> + extern size_t foo; + extern unsigned long foo; + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + fits_in_uint=0 +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + if test $fits_in_uint = 1; then + gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)" + else + gl_cv_size_max="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)" + fi + else + gl_cv_size_max='((size_t)~(size_t)0)' + fi + fi + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_size_max" >&5 +$as_echo "$gl_cv_size_max" >&6; } + if test "$gl_cv_size_max" != yes; then + +cat >>confdefs.h <<_ACEOF +#define SIZE_MAX $gl_cv_size_max +_ACEOF + + fi + + + + + for ac_header in stdint.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default" +if test "x$ac_cv_header_stdint_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_STDINT_H 1 +_ACEOF + +fi + +done + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 +$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; } +if test "${gt_cv_func_CFPreferencesCopyAppValue+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <CoreFoundation/CFPreferences.h> +int +main () +{ +CFPreferencesCopyAppValue(NULL, NULL) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gt_cv_func_CFPreferencesCopyAppValue=yes +else + gt_cv_func_CFPreferencesCopyAppValue=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 +$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + +$as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h + + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 +$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; } +if test "${gt_cv_func_CFLocaleCopyCurrent+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <CoreFoundation/CFLocale.h> +int +main () +{ +CFLocaleCopyCurrent(); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gt_cv_func_CFLocaleCopyCurrent=yes +else + gt_cv_func_CFLocaleCopyCurrent=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 +$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; } + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + +$as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h + + fi + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + + + + + + + + ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default" +if test "x$ac_cv_type_ptrdiff_t" = x""yes; then : + +else + +$as_echo "#define ptrdiff_t long" >>confdefs.h + + +fi + + for ac_header in stddef.h stdlib.h string.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +eval as_val=\$$as_ac_Header + if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + for ac_func in asprintf fwprintf putenv setenv setlocale snprintf wcslen +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +eval as_val=\$$as_ac_var + if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether _snprintf is declared" >&5 +$as_echo_n "checking whether _snprintf is declared... " >&6; } +if test "${ac_cv_have_decl__snprintf+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ + +#ifndef _snprintf + char *p = (char *) _snprintf; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_have_decl__snprintf=yes +else + ac_cv_have_decl__snprintf=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_decl__snprintf" >&5 +$as_echo "$ac_cv_have_decl__snprintf" >&6; } + if test $ac_cv_have_decl__snprintf = yes; then + gt_value=1 + else + gt_value=0 + fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL__SNPRINTF $gt_value +_ACEOF + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether _snwprintf is declared" >&5 +$as_echo_n "checking whether _snwprintf is declared... " >&6; } +if test "${ac_cv_have_decl__snwprintf+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ + +#ifndef _snwprintf + char *p = (char *) _snwprintf; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_have_decl__snwprintf=yes +else + ac_cv_have_decl__snwprintf=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_decl__snwprintf" >&5 +$as_echo "$ac_cv_have_decl__snwprintf" >&6; } + if test $ac_cv_have_decl__snwprintf = yes; then + gt_value=1 + else + gt_value=0 + fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL__SNWPRINTF $gt_value +_ACEOF + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getc_unlocked is declared" >&5 +$as_echo_n "checking whether getc_unlocked is declared... " >&6; } +if test "${ac_cv_have_decl_getc_unlocked+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ + +#ifndef getc_unlocked + char *p = (char *) getc_unlocked; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_have_decl_getc_unlocked=yes +else + ac_cv_have_decl_getc_unlocked=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_decl_getc_unlocked" >&5 +$as_echo "$ac_cv_have_decl_getc_unlocked" >&6; } + if test $ac_cv_have_decl_getc_unlocked = yes; then + gt_value=1 + else + gt_value=0 + fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_GETC_UNLOCKED $gt_value +_ACEOF + + + + case $gt_cv_func_printf_posix in + *yes) HAVE_POSIX_PRINTF=1 ;; + *) HAVE_POSIX_PRINTF=0 ;; + esac + + if test "$ac_cv_func_asprintf" = yes; then + HAVE_ASPRINTF=1 + else + HAVE_ASPRINTF=0 + fi + + if test "$ac_cv_func_snprintf" = yes; then + HAVE_SNPRINTF=1 + else + HAVE_SNPRINTF=0 + fi + + if test "$ac_cv_func_wprintf" = yes; then + HAVE_WPRINTF=1 + else + HAVE_WPRINTF=0 + fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5 +$as_echo_n "checking for nl_langinfo and CODESET... " >&6; } +if test "${am_cv_langinfo_codeset+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <langinfo.h> +int +main () +{ +char* cs = nl_langinfo(CODESET); return !cs; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + am_cv_langinfo_codeset=yes +else + am_cv_langinfo_codeset=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_langinfo_codeset" >&5 +$as_echo "$am_cv_langinfo_codeset" >&6; } + if test $am_cv_langinfo_codeset = yes; then + +$as_echo "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h + + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5 +$as_echo_n "checking for LC_MESSAGES... " >&6; } +if test "${gt_cv_val_LC_MESSAGES+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <locale.h> +int +main () +{ +return LC_MESSAGES + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gt_cv_val_LC_MESSAGES=yes +else + gt_cv_val_LC_MESSAGES=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_val_LC_MESSAGES" >&5 +$as_echo "$gt_cv_val_LC_MESSAGES" >&6; } + if test $gt_cv_val_LC_MESSAGES = yes; then + +$as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h + + fi + + + if test "$enable_shared" = yes; then + case "$host_os" in + mingw* | cygwin*) is_woe32dll=yes ;; + *) is_woe32dll=no ;; + esac + else + is_woe32dll=no + fi + WOE32DLL=$is_woe32dll + + + case "$host_os" in + mingw* | cygwin*) is_woe32=yes ;; + *) is_woe32=no ;; + esac + WOE32=$is_woe32 + + if test $WOE32 = yes; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}windres", so it can be a program name with args. +set dummy ${ac_tool_prefix}windres; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_WINDRES+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$WINDRES"; then + ac_cv_prog_WINDRES="$WINDRES" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_WINDRES="${ac_tool_prefix}windres" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +WINDRES=$ac_cv_prog_WINDRES +if test -n "$WINDRES"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WINDRES" >&5 +$as_echo "$WINDRES" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_WINDRES"; then + ac_ct_WINDRES=$WINDRES + # Extract the first word of "windres", so it can be a program name with args. +set dummy windres; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_WINDRES+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_WINDRES"; then + ac_cv_prog_ac_ct_WINDRES="$ac_ct_WINDRES" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_WINDRES="windres" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_WINDRES=$ac_cv_prog_ac_ct_WINDRES +if test -n "$ac_ct_WINDRES"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_WINDRES" >&5 +$as_echo "$ac_ct_WINDRES" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_WINDRES" = x; then + WINDRES="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + WINDRES=$ac_ct_WINDRES + fi +else + WINDRES="$ac_cv_prog_WINDRES" +fi + + fi + + case "$host_os" in + hpux*) LTLIBC="" ;; + *) LTLIBC="-lc" ;; + esac + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 +$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; } +if test "${gt_cv_func_CFPreferencesCopyAppValue+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <CoreFoundation/CFPreferences.h> +int +main () +{ +CFPreferencesCopyAppValue(NULL, NULL) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gt_cv_func_CFPreferencesCopyAppValue=yes +else + gt_cv_func_CFPreferencesCopyAppValue=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 +$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + +$as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h + + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 +$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; } +if test "${gt_cv_func_CFLocaleCopyCurrent+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <CoreFoundation/CFLocale.h> +int +main () +{ +CFLocaleCopyCurrent(); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gt_cv_func_CFLocaleCopyCurrent=yes +else + gt_cv_func_CFLocaleCopyCurrent=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 +$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; } + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + +$as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h + + fi + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + + + + + + + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + + LIBINTL= + LTLIBINTL= + POSUB= + + case " $gt_needs " in + *" need-formatstring-macros "*) gt_api_version=3 ;; + *" need-ngettext "*) gt_api_version=2 ;; + *) gt_api_version=1 ;; + esac + gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" + gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" + + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether included gettext is requested" >&5 +$as_echo_n "checking whether included gettext is requested... " >&6; } + +# Check whether --with-included-gettext was given. +if test "${with_included_gettext+set}" = set; then : + withval=$with_included_gettext; nls_cv_force_use_gnu_gettext=$withval +else + nls_cv_force_use_gnu_gettext=no +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $nls_cv_force_use_gnu_gettext" >&5 +$as_echo "$nls_cv_force_use_gnu_gettext" >&6; } + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + + + if test $gt_api_version -ge 3; then + gt_revision_test_code=' +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +' + else + gt_revision_test_code= + fi + if test $gt_api_version -ge 2; then + gt_expression_test_code=' + * ngettext ("", "", 0)' + else + gt_expression_test_code= + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 +$as_echo_n "checking for GNU gettext in libc... " >&6; } +if { as_var=$gt_func_gnugettext_libc; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <libintl.h> +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; +int +main () +{ +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$gt_func_gnugettext_libc=yes" +else + eval "$gt_func_gnugettext_libc=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$gt_func_gnugettext_libc + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libintl-prefix was given. +if test "${with_libintl_prefix+set}" = set; then : + withval=$with_libintl_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + fi + fi + +fi + + LIBINTL= + LTLIBINTL= + INCINTL= + LIBINTL_PREFIX= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='intl ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + LIBINTL_PREFIX="$basedir" + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" + ;; + esac + done + fi + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" + done + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 +$as_echo_n "checking for GNU gettext in libintl... " >&6; } +if { as_var=$gt_func_gnugettext_libintl; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +else + gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <libintl.h> +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); +int +main () +{ +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$gt_func_gnugettext_libintl=yes" +else + eval "$gt_func_gnugettext_libintl=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <libintl.h> +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); +int +main () +{ +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + eval "$gt_func_gnugettext_libintl=yes" + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" +fi +eval ac_res=\$$gt_func_gnugettext_libintl + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + fi + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ + || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ + && test "$PACKAGE" != gettext-runtime \ + && test "$PACKAGE" != gettext-tools; }; then + gt_use_preinstalled_gnugettext=yes + else + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + + if test "$gt_use_preinstalled_gnugettext" != "yes"; then + nls_cv_use_gnu_gettext=yes + fi + fi + + if test "$nls_cv_use_gnu_gettext" = "yes"; then + BUILD_INCLUDED_LIBINTL=yes + USE_INCLUDED_LIBINTL=yes + LIBINTL="\${top_builddir}/intl/libintl.a $LIBICONV $LIBTHREAD" + LTLIBINTL="\${top_builddir}/intl/libintl.a $LTLIBICONV $LTLIBTHREAD" + LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` + fi + + CATOBJEXT= + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + CATOBJEXT=.gmo + fi + + + if test -n "$INTL_MACOSX_LIBS"; then + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" + LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" + fi + fi + + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + +$as_echo "#define ENABLE_NLS 1" >>confdefs.h + + else + USE_NLS=no + fi + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 +$as_echo_n "checking whether to use NLS... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +$as_echo "$USE_NLS" >&6; } + if test "$USE_NLS" = "yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 +$as_echo_n "checking where the gettext function comes from... " >&6; } + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 +$as_echo "$gt_source" >&6; } + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 +$as_echo_n "checking how to link with libintl... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 +$as_echo "$LIBINTL" >&6; } + + for element in $INCINTL; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + fi + + +$as_echo "#define HAVE_GETTEXT 1" >>confdefs.h + + +$as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h + + fi + + POSUB=po + fi + + + if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then + BUILD_INCLUDED_LIBINTL=yes + fi + + + + + + nls_cv_header_intl= + nls_cv_header_libgt= + + DATADIRNAME=share + + + INSTOBJEXT=.mo + + + GENCAT=gencat + + + INTLOBJS= + if test "$USE_INCLUDED_LIBINTL" = yes; then + INTLOBJS="\$(GETTOBJS)" + fi + + + INTL_LIBTOOL_SUFFIX_PREFIX= + + + + INTLLIBS="$LIBINTL" + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# Extract the first word of "sed", so it can be a program name with args. +set dummy sed; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_sedpath+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $sedpath in + [\\/]* | ?:[\\/]*) + ac_cv_path_sedpath="$sedpath" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_sedpath="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +sedpath=$ac_cv_path_sedpath +if test -n "$sedpath"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $sedpath" >&5 +$as_echo "$sedpath" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +if test "_$sedpath" = _; then + as_fn_error "\"Cannot find sed: I need it\!\"" "$LINENO" 5 +fi + +# Extract the first word of "uname", so it can be a program name with args. +set dummy uname; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_unamepath+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $unamepath in + [\\/]* | ?:[\\/]*) + ac_cv_path_unamepath="$unamepath" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_unamepath="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +unamepath=$ac_cv_path_unamepath +if test -n "$unamepath"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $unamepath" >&5 +$as_echo "$unamepath" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +if test "_$unamepath" = _; then + system="unknown" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking system type" >&5 +$as_echo_n "checking system type... " >&6; } + system=`$unamepath -s` + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $system" >&5 +$as_echo "$system" >&6; } + if test "$system" = "Linux"; then + $as_echo "#define USING_LINUX 1" >>confdefs.h + + fi + if test "$system" = "FreeBSD"; then + $as_echo "#define USING_FREEBSD 1" >>confdefs.h + + fi +fi + + +# Check whether --enable-socks was given. +if test "${enable_socks+set}" = set; then : + enableval=$enable_socks; socks=$enableval +else + socks=no +fi + + +# Check whether --enable-ipv6 was given. +if test "${enable_ipv6+set}" = set; then : + enableval=$enable_ipv6; ipv6=$enableval +else + ipv6=no +fi + + +# Check whether --enable-xft was given. +if test "${enable_xft+set}" = set; then : + enableval=$enable_xft; xft=$enableval +else + xft=no +fi + + +# Check whether --enable-openssl was given. +if test "${enable_openssl+set}" = set; then : + enableval=$enable_openssl; openssl=$enableval +else + openssl=yes +fi + + +# Check whether --enable-gtkfe was given. +if test "${enable_gtkfe+set}" = set; then : + enableval=$enable_gtkfe; gtkfe=$enableval +else + gtkfe=yes +fi + + +# Check whether --enable-textfe was given. +if test "${enable_textfe+set}" = set; then : + enableval=$enable_textfe; textfe=$enableval +else + textfe=no +fi + + + +# Check whether --enable-xlib was given. +if test "${enable_xlib+set}" = set; then : + enableval=$enable_xlib; xlib=$enableval +else + xlib=yes +fi + + +# Check whether --enable-python was given. +if test "${enable_python+set}" = set; then : + enableval=$enable_python; python=$enableval +else + python=yes +fi + + +# Check whether --enable-perl was given. +if test "${enable_perl+set}" = set; then : + enableval=$enable_perl; perl=$enableval +else + perl=yes +fi + + +# Check whether --enable-perl_old was given. +if test "${enable_perl_old+set}" = set; then : + enableval=$enable_perl_old; perl_old=$enableval +else + perl_old=yes +fi + + +# Check whether --enable-tcl was given. +if test "${enable_tcl+set}" = set; then : + enableval=$enable_tcl; tcl=$enableval +else + tcl=yes +fi + + +# Check whether --enable-plugin was given. +if test "${enable_plugin+set}" = set; then : + enableval=$enable_plugin; plugin=$enableval +else + plugin=yes +fi + + +# Check whether --enable-dbus was given. +if test "${enable_dbus+set}" = set; then : + enableval=$enable_dbus; dbus=$enableval +else + dbus=yes +fi + + +# Check whether --enable-mmx was given. +if test "${enable_mmx+set}" = set; then : + enableval=$enable_mmx; mmx=$enableval +else + mmx=yes +fi + + +# Check whether --enable-shm was given. +if test "${enable_shm+set}" = set; then : + enableval=$enable_shm; shm=$enableval +else + shm=no +fi + + +# Check whether --enable-spell was given. +if test "${enable_spell+set}" = set; then : + enableval=$enable_spell; spell=$enableval +else + spell=libsexy +fi + + +# Check whether --enable-ntlm was given. +if test "${enable_ntlm+set}" = set; then : + enableval=$enable_ntlm; ntlm=$enableval +else + ntlm=no +fi + + + +# Check whether --enable-glibtest was given. +if test "${enable_glibtest+set}" = set; then : + enableval=$enable_glibtest; +else + enable_glibtest=yes +fi + + + pkg_config_args=glib-2.0 + for module in . + do + case "$module" in + gmodule) + pkg_config_args="$pkg_config_args gmodule-2.0" + ;; + gmodule-no-export) + pkg_config_args="$pkg_config_args gmodule-no-export-2.0" + ;; + gobject) + pkg_config_args="$pkg_config_args gobject-2.0" + ;; + gthread) + pkg_config_args="$pkg_config_args gthread-2.0" + ;; + gio*) + pkg_config_args="$pkg_config_args $module-2.0" + ;; + esac + done + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_PKG_CONFIG+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +$as_echo "$ac_pt_PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.16 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + PKG_CONFIG="" + fi + +fi + + no_glib="" + + if test "x$PKG_CONFIG" = x ; then + no_glib=yes + PKG_CONFIG=no + fi + + min_glib_version=2.0.3 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLIB - version >= $min_glib_version" >&5 +$as_echo_n "checking for GLIB - version >= $min_glib_version... " >&6; } + + if test x$PKG_CONFIG != xno ; then + ## don't try to run the test against uninstalled libtool libs + if $PKG_CONFIG --uninstalled $pkg_config_args; then + echo "Will use uninstalled version of GLib found in PKG_CONFIG_PATH" + enable_glibtest=no + fi + + if $PKG_CONFIG --atleast-version $min_glib_version $pkg_config_args; then + : + else + no_glib=yes + fi + fi + + if test x"$no_glib" = x ; then + GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0` + GOBJECT_QUERY=`$PKG_CONFIG --variable=gobject_query glib-2.0` + GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0` + + GLIB_CFLAGS=`$PKG_CONFIG --cflags $pkg_config_args` + GLIB_LIBS=`$PKG_CONFIG --libs $pkg_config_args` + glib_config_major_version=`$PKG_CONFIG --modversion glib-2.0 | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` + glib_config_minor_version=`$PKG_CONFIG --modversion glib-2.0 | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` + glib_config_micro_version=`$PKG_CONFIG --modversion glib-2.0 | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` + if test "x$enable_glibtest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GLIB_CFLAGS" + LIBS="$GLIB_LIBS $LIBS" + rm -f conf.glibtest + if test "$cross_compiling" = yes; then : + echo $ac_n "cross compiling; assumed OK... $ac_c" +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include <glib.h> +#include <stdio.h> +#include <stdlib.h> + +int +main () +{ + int major, minor, micro; + char *tmp_version; + + fclose (fopen ("conf.glibtest", "w")); + + /* HP/UX 9 (%@#!) writes to sscanf strings */ + tmp_version = g_strdup("$min_glib_version"); + if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { + printf("%s, bad version string\n", "$min_glib_version"); + exit(1); + } + + if ((glib_major_version != $glib_config_major_version) || + (glib_minor_version != $glib_config_minor_version) || + (glib_micro_version != $glib_config_micro_version)) + { + printf("\n*** 'pkg-config --modversion glib-2.0' returned %d.%d.%d, but GLIB (%d.%d.%d)\n", + $glib_config_major_version, $glib_config_minor_version, $glib_config_micro_version, + glib_major_version, glib_minor_version, glib_micro_version); + printf ("*** was found! If pkg-config was correct, then it is best\n"); + printf ("*** to remove the old version of GLib. You may also be able to fix the error\n"); + printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); + printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); + printf("*** required on your system.\n"); + printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n"); + printf("*** to point to the correct configuration files\n"); + } + else if ((glib_major_version != GLIB_MAJOR_VERSION) || + (glib_minor_version != GLIB_MINOR_VERSION) || + (glib_micro_version != GLIB_MICRO_VERSION)) + { + printf("*** GLIB header files (version %d.%d.%d) do not match\n", + GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION); + printf("*** library (version %d.%d.%d)\n", + glib_major_version, glib_minor_version, glib_micro_version); + } + else + { + if ((glib_major_version > major) || + ((glib_major_version == major) && (glib_minor_version > minor)) || + ((glib_major_version == major) && (glib_minor_version == minor) && (glib_micro_version >= micro))) + { + return 0; + } + else + { + printf("\n*** An old version of GLIB (%d.%d.%d) was found.\n", + glib_major_version, glib_minor_version, glib_micro_version); + printf("*** You need a version of GLIB newer than %d.%d.%d. The latest version of\n", + major, minor, micro); + printf("*** GLIB is always available from ftp://ftp.gtk.org.\n"); + printf("***\n"); + printf("*** If you have already installed a sufficiently new version, this error\n"); + printf("*** probably means that the wrong copy of the pkg-config shell script is\n"); + printf("*** being found. The easiest way to fix this is to remove the old version\n"); + printf("*** of GLIB, but you can also set the PKG_CONFIG environment to point to the\n"); + printf("*** correct copy of pkg-config. (In this case, you will have to\n"); + printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); + printf("*** so that the correct libraries are found at run-time))\n"); + } + } + return 1; +} + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + no_glib=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + if test "x$no_glib" = x ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version)" >&5 +$as_echo "yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version)" >&6; } + glib=yes + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + if test "$PKG_CONFIG" = "no" ; then + echo "*** A new enough version of pkg-config was not found." + echo "*** See http://www.freedesktop.org/software/pkgconfig/" + else + if test -f conf.glibtest ; then + : + else + echo "*** Could not run GLIB test program, checking why..." + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GLIB_CFLAGS" + LIBS="$LIBS $GLIB_LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include <glib.h> +#include <stdio.h> + +int +main () +{ + return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding GLIB or finding the wrong" + echo "*** version of GLIB. If it is not finding GLIB, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" +else + echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occured. This usually means GLIB is incorrectly installed." +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + GLIB_CFLAGS="" + GLIB_LIBS="" + GLIB_GENMARSHAL="" + GOBJECT_QUERY="" + GLIB_MKENUMS="" + glib=no + fi + + + + + + rm -f conf.glibtest + +if test "$glib" = no; then + as_fn_error "\"Cannot find glib\"" "$LINENO" 5 +fi + +COMMON_CFLAGS="$GLIB_CFLAGS" +COMMON_LIBS="$GLIB_LIBS" + + +# Check whether --enable-gtktest was given. +if test "${enable_gtktest+set}" = set; then : + enableval=$enable_gtktest; +else + enable_gtktest=yes +fi + + + pkg_config_args=gtk+-2.0 + for module in . + do + case "$module" in + gthread) + pkg_config_args="$pkg_config_args gthread-2.0" + ;; + esac + done + + no_gtk="" + + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_PKG_CONFIG+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no" + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + if test x$PKG_CONFIG != xno ; then + if pkg-config --atleast-pkgconfig-version 0.7 ; then + : + else + echo "*** pkg-config too old; version 0.7 or better required." + no_gtk=yes + PKG_CONFIG=no + fi + else + no_gtk=yes + fi + + min_gtk_version=2.10.0 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK+ - version >= $min_gtk_version" >&5 +$as_echo_n "checking for GTK+ - version >= $min_gtk_version... " >&6; } + + if test x$PKG_CONFIG != xno ; then + ## don't try to run the test against uninstalled libtool libs + if $PKG_CONFIG --uninstalled $pkg_config_args; then + echo "Will use uninstalled version of GTK+ found in PKG_CONFIG_PATH" + enable_gtktest=no + fi + + if $PKG_CONFIG --atleast-version $min_gtk_version $pkg_config_args; then + : + else + no_gtk=yes + fi + fi + + if test x"$no_gtk" = x ; then + GTK_CFLAGS=`$PKG_CONFIG $pkg_config_args --cflags` + GTK_LIBS=`$PKG_CONFIG $pkg_config_args --libs` + gtk_config_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` + gtk_config_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` + gtk_config_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` + if test "x$enable_gtktest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$GTK_LIBS $LIBS" + rm -f conf.gtktest + if test "$cross_compiling" = yes; then : + echo $ac_n "cross compiling; assumed OK... $ac_c" +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include <gtk/gtk.h> +#include <stdio.h> +#include <stdlib.h> + +int +main () +{ + int major, minor, micro; + char *tmp_version; + + fclose (fopen ("conf.gtktest", "w")); + + /* HP/UX 9 (%@#!) writes to sscanf strings */ + tmp_version = g_strdup("$min_gtk_version"); + if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { + printf("%s, bad version string\n", "$min_gtk_version"); + exit(1); + } + + if ((gtk_major_version != $gtk_config_major_version) || + (gtk_minor_version != $gtk_config_minor_version) || + (gtk_micro_version != $gtk_config_micro_version)) + { + printf("\n*** 'pkg-config --modversion gtk+-2.0' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", + $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version, + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf ("*** was found! If pkg-config was correct, then it is best\n"); + printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n"); + printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); + printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); + printf("*** required on your system.\n"); + printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n"); + printf("*** to point to the correct configuration files\n"); + } + else if ((gtk_major_version != GTK_MAJOR_VERSION) || + (gtk_minor_version != GTK_MINOR_VERSION) || + (gtk_micro_version != GTK_MICRO_VERSION)) + { + printf("*** GTK+ header files (version %d.%d.%d) do not match\n", + GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); + printf("*** library (version %d.%d.%d)\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + } + else + { + if ((gtk_major_version > major) || + ((gtk_major_version == major) && (gtk_minor_version > minor)) || + ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))) + { + return 0; + } + else + { + printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n", + major, minor, micro); + printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n"); + printf("***\n"); + printf("*** If you have already installed a sufficiently new version, this error\n"); + printf("*** probably means that the wrong copy of the pkg-config shell script is\n"); + printf("*** being found. The easiest way to fix this is to remove the old version\n"); + printf("*** of GTK+, but you can also set the PKG_CONFIG environment to point to the\n"); + printf("*** correct copy of pkg-config. (In this case, you will have to\n"); + printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); + printf("*** so that the correct libraries are found at run-time))\n"); + } + } + return 1; +} + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + no_gtk=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + if test "x$no_gtk" = x ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version)" >&5 +$as_echo "yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version)" >&6; } + havegtk=yes + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + if test "$PKG_CONFIG" = "no" ; then + echo "*** A new enough version of pkg-config was not found." + echo "*** See http://pkgconfig.sourceforge.net" + else + if test -f conf.gtktest ; then + : + else + echo "*** Could not run GTK+ test program, checking why..." + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$LIBS $GTK_LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include <gtk/gtk.h> +#include <stdio.h> + +int +main () +{ + return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding GTK+ or finding the wrong" + echo "*** version of GTK+. If it is not finding GTK+, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" +else + echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occured. This usually means GTK+ is incorrectly installed." +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + GTK_CFLAGS="" + GTK_LIBS="" + havegtk=no + fi + + + rm -f conf.gtktest + + +if test "$havegtk" = no; then + gtkfe=no + echo + echo Cannot find GTK\! Not building GTK FrontEnd. + echo +fi + +if test "$gtkfe" != yes; then + gnome=no + COMMON_LIBS="$GLIB_LIBS" + COMMON_CFLAGS="$GLIB_CFLAGS" +fi + + +GUI_LIBS="$GUI_LIBS $GTK_LIBS" +GUI_CFLAGS="$GUI_CFLAGS $GTK_CFLAGS" + +gnome=no +#if test "$gnome" = yes; then +# AC_PATH_PROG(pkgconfigpath, pkg-config) +# AC_MSG_CHECKING(Gnome2 compile flags) +# GNOME_CFLAGS="`$pkgconfigpath libgnome-2.0 --cflags 2>/dev/null`" +# if test "_$GNOME_CFLAGS" = _ ; then +# gnome=no +# AC_MSG_RESULT([Gnome not found, building without it.]) +# else +# GNOME_VER="`$pkgconfigpath libgnome-2.0 --modversion`" +# GUI_LIBS="$GUI_LIBS `$pkgconfigpath libgnome-2.0 --libs`" +# GUI_CFLAGS="$GUI_CFLAGS $GNOME_CFLAGS" +# AC_DEFINE(USE_GNOME) +# AC_MSG_RESULT(ok) +# fi +#fi + +# GConf +# Extract the first word of "gconftool-2", so it can be a program name with args. +set dummy gconftool-2; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_GCONFTOOL+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $GCONFTOOL in + [\\/]* | ?:[\\/]*) + ac_cv_path_GCONFTOOL="$GCONFTOOL" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_GCONFTOOL="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_GCONFTOOL" && ac_cv_path_GCONFTOOL="no" + ;; +esac +fi +GCONFTOOL=$ac_cv_path_GCONFTOOL +if test -n "$GCONFTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GCONFTOOL" >&5 +$as_echo "$GCONFTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + +if test "$xft" = yes; then + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_pkgconfigpath+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $pkgconfigpath in + [\\/]* | ?:[\\/]*) + ac_cv_path_pkgconfigpath="$pkgconfigpath" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_pkgconfigpath="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +pkgconfigpath=$ac_cv_path_pkgconfigpath +if test -n "$pkgconfigpath"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pkgconfigpath" >&5 +$as_echo "$pkgconfigpath" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if $pkgconfigpath xft --exists; then + GUI_CFLAGS="$GUI_CFLAGS `$pkgconfigpath xft --cflags`" + GUI_LIBS="$GUI_LIBS `$pkgconfigpath xft --libs`" + else + xft=no + oldCPPFLAGS=$CPPFLAGS + CPPFLAGS="$CPPFLAGS $GTK_CFLAGS" + for ac_header in X11/Xft/Xft.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "X11/Xft/Xft.h" "ac_cv_header_X11_Xft_Xft_h" "$ac_includes_default" +if test "x$ac_cv_header_X11_Xft_Xft_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_X11_XFT_XFT_H 1 +_ACEOF + xft=yes +fi + +done + + CPPFLAGS=$oldCPPFLAGS + fi + if test "$xft" = yes; then + $as_echo "#define USE_XFT 1" >>confdefs.h + + fi +fi + + +if test "$xlib" = yes; then + $as_echo "#define USE_XLIB 1" >>confdefs.h + + if test "$system" = "SunOS"; then + LIBS="$LIBS -L/usr/openwin/lib -lX11" + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XSetWMHints in -lX11" >&5 +$as_echo_n "checking for XSetWMHints in -lX11... " >&6; } +if test "${ac_cv_lib_X11_XSetWMHints+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lX11 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char XSetWMHints (); +int +main () +{ +return XSetWMHints (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_X11_XSetWMHints=yes +else + ac_cv_lib_X11_XSetWMHints=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_X11_XSetWMHints" >&5 +$as_echo "$ac_cv_lib_X11_XSetWMHints" >&6; } +if test "x$ac_cv_lib_X11_XSetWMHints" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBX11 1 +_ACEOF + + LIBS="-lX11 $LIBS" + +fi + + fi +else + shm=no +fi + + +if test "$perl" = yes; then + # Extract the first word of "perl", so it can be a program name with args. +set dummy perl; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_perlpath+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $perlpath in + [\\/]* | ?:[\\/]*) + ac_cv_path_perlpath="$perlpath" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_perlpath="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +perlpath=$ac_cv_path_perlpath +if test -n "$perlpath"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $perlpath" >&5 +$as_echo "$perlpath" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Perl compile flags" >&5 +$as_echo_n "checking for Perl compile flags... " >&6; } + PERL_CFLAGS=`$perlpath -MExtUtils::Embed -e ccopts 2>/dev/null` + if test "_$PERL_CFLAGS" = _ ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found, building without perl." >&5 +$as_echo "not found, building without perl." >&6; } + perl=no + else + PERL_LDFLAGS=`$perlpath -MExtUtils::Embed -e ldopts |$sedpath 's/-lgdbm //'` + PERL_LDFLAGS=`echo $PERL_LDFLAGS |$sedpath 's/-ldb //'` + PERL_LDFLAGS=`echo $PERL_LDFLAGS |$sedpath 's/-lndbm //'` + if test "$system" = "Linux"; then + PERL_LDFLAGS=`echo $PERL_LDFLAGS |$sedpath 's/-lnsl //'` + PERL_LDFLAGS=`echo $PERL_LDFLAGS |$sedpath 's/-lposix //'` + fi + PERL_LDFLAGS=`echo $PERL_LDFLAGS |$sedpath 's/-lc //'` + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } + +# oldLIBS=$LIBS +# LIBS="$LIBS $PERL_LDFLAGS" +# AC_CHECK_FUNC(eval_pv) +# AC_CHECK_FUNC(call_pv) +# LIBS=$oldLIBS + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for perl >= 5.8.0" >&5 +$as_echo_n "checking for perl >= 5.8.0... " >&6; } + PERL_VER=`$perlpath -e 'print $]>= 5.008?"yes":"no"'` + if test "$PERL_VER" = "yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if perl plugin will be backward compatible" >&5 +$as_echo_n "checking if perl plugin will be backward compatible... " >&6; } + if test "$perl_old" = "yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + $as_echo "#define OLD_PERL 1" >>confdefs.h + + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + echo "perl version too old, building without perl." + perl=no + fi + fi +fi + + +if test "$python" = yes; then + # Extract the first word of "python2", so it can be a program name with args. +set dummy python2; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_pythonpath+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $pythonpath in + [\\/]* | ?:[\\/]*) + ac_cv_path_pythonpath="$pythonpath" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_pythonpath="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +pythonpath=$ac_cv_path_pythonpath +if test -n "$pythonpath"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pythonpath" >&5 +$as_echo "$pythonpath" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "_$pythonpath" = _ ; then + # Extract the first word of "python", so it can be a program name with args. +set dummy python; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_pythonpath+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $pythonpath in + [\\/]* | ?:[\\/]*) + ac_cv_path_pythonpath="$pythonpath" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_pythonpath="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +pythonpath=$ac_cv_path_pythonpath +if test -n "$pythonpath"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pythonpath" >&5 +$as_echo "$pythonpath" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi + if test "_$pythonpath" = _ ; then + python=no + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python version" >&5 +$as_echo_n "checking Python version... " >&6; } + PY_VER=`$pythonpath -c 'import distutils.sysconfig; print distutils.sysconfig.get_config_vars("VERSION")[0];'` + PY_LIB=`$pythonpath -c 'import distutils.sysconfig; print distutils.sysconfig.get_python_lib(standard_lib=1);'` + PY_INC=`$pythonpath -c 'import distutils.sysconfig; print distutils.sysconfig.get_config_vars("INCLUDEPY")[0];'` + $pythonpath -c "import sys; map(int,sys.version[:3].split('.')) >= [2,2] or sys.exit(1)" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PY_VER" >&5 +$as_echo "$PY_VER" >&6; } + if test "$?" != "1"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python compile flags" >&5 +$as_echo_n "checking Python compile flags... " >&6; } + PY_PREFIX=`$pythonpath -c 'import sys; print sys.prefix'` + PY_EXEC_PREFIX=`$pythonpath -c 'import sys; print sys.exec_prefix'` + if test -f $PY_INC/Python.h; then + PY_LIBS="-L$PY_LIB/config -lpython$PY_VER -lpthread -lutil" + PY_CFLAGS="-I$PY_INC" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } + else + python=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: Can't find Python.h" >&5 +$as_echo "Can't find Python.h" >&6; } + fi + else + echo "Python too old. Only 2.2 or above is supported." + python=no + fi + fi +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for location of tclConfig.sh" >&5 +$as_echo_n "checking for location of tclConfig.sh... " >&6; } +dirs="$tcl /lib /usr/lib /usr/tcl/lib /usr/lib/tcl8.4 /usr/local/lib /usr/local/tcl-8.4/lib /usr/local/tcl/lib /opt/lib /usr/lib/tcl8.3" +found=0 +if test "$tcl" != "no"; then + tcl=no + for try in $dirs; do + if test -f $try/tclConfig.sh; then + found=1 + . $try/tclConfig.sh + TCL_LIBS="$TCL_LIB_SPEC $TCL_LIBS" + TCL_CFLAGS="-I${TCL_PREFIX}/include $TCL_INCLUDE_SPEC" + tcl=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $try/tclConfig.sh" >&5 +$as_echo "$try/tclConfig.sh" >&6; } + break + fi + done + if test "$found" -eq 0 ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: tclConfig.sh not found - use the --enable-tcl option" >&5 +$as_echo "tclConfig.sh not found - use the --enable-tcl option" >&6; } + fi +fi + + +ac_fn_c_check_func "$LINENO" "select" "ac_cv_func_select" +if test "x$ac_cv_func_select" = x""yes; then : + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for select in -lsocket" >&5 +$as_echo_n "checking for select in -lsocket... " >&6; } +if test "${ac_cv_lib_socket_select+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char select (); +int +main () +{ +return select (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_socket_select=yes +else + ac_cv_lib_socket_select=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_select" >&5 +$as_echo "$ac_cv_lib_socket_select" >&6; } +if test "x$ac_cv_lib_socket_select" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBSOCKET 1 +_ACEOF + + LIBS="-lsocket $LIBS" + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for select in -lnsl" >&5 +$as_echo_n "checking for select in -lnsl... " >&6; } +if test "${ac_cv_lib_nsl_select+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char select (); +int +main () +{ +return select (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_nsl_select=yes +else + ac_cv_lib_nsl_select=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_select" >&5 +$as_echo "$ac_cv_lib_nsl_select" >&6; } +if test "x$ac_cv_lib_nsl_select" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBNSL 1 +_ACEOF + + LIBS="-lnsl $LIBS" + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for select in -linet" >&5 +$as_echo_n "checking for select in -linet... " >&6; } +if test "${ac_cv_lib_inet_select+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-linet $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char select (); +int +main () +{ +return select (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_inet_select=yes +else + ac_cv_lib_inet_select=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_inet_select" >&5 +$as_echo "$ac_cv_lib_inet_select" >&6; } +if test "x$ac_cv_lib_inet_select" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBINET 1 +_ACEOF + + LIBS="-linet $LIBS" + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for select in -lcposix" >&5 +$as_echo_n "checking for select in -lcposix... " >&6; } +if test "${ac_cv_lib_cposix_select+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcposix $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char select (); +int +main () +{ +return select (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_cposix_select=yes +else + ac_cv_lib_cposix_select=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cposix_select" >&5 +$as_echo "$ac_cv_lib_cposix_select" >&6; } +if test "x$ac_cv_lib_cposix_select" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBCPOSIX 1 +_ACEOF + + LIBS="-lcposix $LIBS" + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for select in -lnet" >&5 +$as_echo_n "checking for select in -lnet... " >&6; } +if test "${ac_cv_lib_net_select+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnet $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char select (); +int +main () +{ +return select (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_net_select=yes +else + ac_cv_lib_net_select=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_net_select" >&5 +$as_echo "$ac_cv_lib_net_select" >&6; } +if test "x$ac_cv_lib_net_select" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBNET 1 +_ACEOF + + LIBS="-lnet $LIBS" + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: i can not find select. you might need to help me" >&5 +$as_echo "$as_me: WARNING: i can not find select. you might need to help me" >&2;} +fi + +fi + +fi + +fi + +fi + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for select in -lsocket" >&5 +$as_echo_n "checking for select in -lsocket... " >&6; } +if test "${ac_cv_lib_socket_select+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char select (); +int +main () +{ +return select (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_socket_select=yes +else + ac_cv_lib_socket_select=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_select" >&5 +$as_echo "$ac_cv_lib_socket_select" >&6; } +if test "x$ac_cv_lib_socket_select" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBSOCKET 1 +_ACEOF + + LIBS="-lsocket $LIBS" + +fi + + +if test "$ipv6" = yes; then + for ac_func in getaddrinfo +do : + ac_fn_c_check_func "$LINENO" "getaddrinfo" "ac_cv_func_getaddrinfo" +if test "x$ac_cv_func_getaddrinfo" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_GETADDRINFO 1 +_ACEOF + have_getaddrinfo=yes +fi +done + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable IPv6 support" >&5 +$as_echo_n "checking whether to enable IPv6 support... " >&6; } + if test "$have_getaddrinfo" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + $as_echo "#define USE_IPV6 1" >>confdefs.h + + else + ipv6=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi +fi + + +retry=no +if test "$openssl" != no; then + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_pkgconfigpath+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $pkgconfigpath in + [\\/]* | ?:[\\/]*) + ac_cv_path_pkgconfigpath="$pkgconfigpath" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_pkgconfigpath="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +pkgconfigpath=$ac_cv_path_pkgconfigpath +if test -n "$pkgconfigpath"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pkgconfigpath" >&5 +$as_echo "$pkgconfigpath" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for openssl through pkg-config" >&5 +$as_echo_n "checking for openssl through pkg-config... " >&6; } + if $pkgconfigpath openssl --exists; then + CPPFLAGS="$CPPFLAGS `$pkgconfigpath openssl --cflags`" + LIBS="$LIBS `$pkgconfigpath openssl --libs`" + $as_echo "#define USE_OPENSSL 1" >>confdefs.h + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + openssl=yes + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + retry=yes + fi +fi + +if test "$retry" = "yes"; then + unset openssl_path ac_cv_lib_ssl_SSL_new ac_cv_header_openssl_ssl_h + if test "$openssl" != yes; then + openssl_path=$openssl + fi + openssl=no + SAVED_LIBS=$LIBS + LIBS="$LIBS -lcrypto" + if test -n "$openssl_path"; then + LIBS="-L$openssl_path/lib $LIBS" + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSL_new in -lssl" >&5 +$as_echo_n "checking for SSL_new in -lssl... " >&6; } +if test "${ac_cv_lib_ssl_SSL_new+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lssl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char SSL_new (); +int +main () +{ +return SSL_new (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_ssl_SSL_new=yes +else + ac_cv_lib_ssl_SSL_new=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ssl_SSL_new" >&5 +$as_echo "$ac_cv_lib_ssl_SSL_new" >&6; } +if test "x$ac_cv_lib_ssl_SSL_new" = x""yes; then : + have_openssl=yes +fi + + LIBS=$SAVED_LIBS + if test "$have_openssl" = yes; then + SAVED_CPPFLAGS=$CPPFLAGS + if test -n "$openssl_path"; then + CPPFLAGS="-I$openssl_path/include $CPPFLAGS" + fi + for ac_header in openssl/ssl.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "openssl/ssl.h" "ac_cv_header_openssl_ssl_h" "$ac_includes_default" +if test "x$ac_cv_header_openssl_ssl_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_OPENSSL_SSL_H 1 +_ACEOF + have_openssl_h=yes +fi + +done + + if test "$have_openssl_h" = yes; then + openssl=yes + $as_echo "#define USE_OPENSSL 1" >>confdefs.h + + LIBS="$LIBS -lssl -lcrypto" + if test -n "$openssl_path"; then + LIBS="-L$openssl_path/lib $LIBS" + fi + else + CPPFLAGS=$SAVED_CPPFLAGS + fi + fi +fi + + +if test "$plugin" = yes; then + for ac_func in dlopen +do : + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_DLOPEN 1 +_ACEOF + have_dl=yes +fi +done + + if test "$have_dl" != yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if test "${ac_cv_lib_dl_dlopen+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = x""yes; then : + have_dl=yes +fi + + if test "$have_dl" = yes; then + LIBS="$LIBS -ldl" + fi + fi + if test "$have_dl" = yes; then + $as_echo "#define USE_PLUGIN 1" >>confdefs.h + + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_pkgconfigpath+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $pkgconfigpath in + [\\/]* | ?:[\\/]*) + ac_cv_path_pkgconfigpath="$pkgconfigpath" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_pkgconfigpath="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +pkgconfigpath=$ac_cv_path_pkgconfigpath +if test -n "$pkgconfigpath"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pkgconfigpath" >&5 +$as_echo "$pkgconfigpath" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + RDYNAMIC_FLAGS="`$pkgconfigpath gmodule-2.0 --libs | $sedpath 's/ -lgmodule-2.0//'`" + LIBS="$LIBS $RDYNAMIC_FLAGS" + if test "$LD" = ""; then + VS="`ld --help | grep version-script 2> /dev/null`" + else + VS="`$LD --help | grep version-script 2> /dev/null`" + fi + if test "$VS" != ""; then + GUI_LIBS="$GUI_LIBS -Wl,--version-script,\$(srcdir)/../version-script" + fi + else + plugin=no + fi +fi + + +if test "x$dbus" = "xyes" ; then + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for DBUS" >&5 +$as_echo_n "checking for DBUS... " >&6; } + +if test -n "$DBUS_CFLAGS"; then + pkg_cv_DBUS_CFLAGS="$DBUS_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"dbus-1 >= 0.60 dbus-glib-1 >= 0.60 gthread-2.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "dbus-1 >= 0.60 dbus-glib-1 >= 0.60 gthread-2.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_DBUS_CFLAGS=`$PKG_CONFIG --cflags "dbus-1 >= 0.60 dbus-glib-1 >= 0.60 gthread-2.0" 2>/dev/null` +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$DBUS_LIBS"; then + pkg_cv_DBUS_LIBS="$DBUS_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"dbus-1 >= 0.60 dbus-glib-1 >= 0.60 gthread-2.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "dbus-1 >= 0.60 dbus-glib-1 >= 0.60 gthread-2.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_DBUS_LIBS=`$PKG_CONFIG --libs "dbus-1 >= 0.60 dbus-glib-1 >= 0.60 gthread-2.0" 2>/dev/null` +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + DBUS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "dbus-1 >= 0.60 dbus-glib-1 >= 0.60 gthread-2.0" 2>&1` + else + DBUS_PKG_ERRORS=`$PKG_CONFIG --print-errors "dbus-1 >= 0.60 dbus-glib-1 >= 0.60 gthread-2.0" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$DBUS_PKG_ERRORS" >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + dbus=no + +elif test $pkg_failed = untried; then + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + dbus=no + +else + DBUS_CFLAGS=$pkg_cv_DBUS_CFLAGS + DBUS_LIBS=$pkg_cv_DBUS_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + dbus=yes +fi + # Extract the first word of "dbus-binding-tool", so it can be a program name with args. +set dummy dbus-binding-tool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_DBUS_BINDING_TOOL+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $DBUS_BINDING_TOOL in + [\\/]* | ?:[\\/]*) + ac_cv_path_DBUS_BINDING_TOOL="$DBUS_BINDING_TOOL" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_DBUS_BINDING_TOOL="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_DBUS_BINDING_TOOL" && ac_cv_path_DBUS_BINDING_TOOL="no" + ;; +esac +fi +DBUS_BINDING_TOOL=$ac_cv_path_DBUS_BINDING_TOOL +if test -n "$DBUS_BINDING_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DBUS_BINDING_TOOL" >&5 +$as_echo "$DBUS_BINDING_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + # Extract the first word of "glib-genmarshal", so it can be a program name with args. +set dummy glib-genmarshal; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_GLIB_GENMARSHAL+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $GLIB_GENMARSHAL in + [\\/]* | ?:[\\/]*) + ac_cv_path_GLIB_GENMARSHAL="$GLIB_GENMARSHAL" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_GLIB_GENMARSHAL="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_GLIB_GENMARSHAL" && ac_cv_path_GLIB_GENMARSHAL="no" + ;; +esac +fi +GLIB_GENMARSHAL=$ac_cv_path_GLIB_GENMARSHAL +if test -n "$GLIB_GENMARSHAL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GLIB_GENMARSHAL" >&5 +$as_echo "$GLIB_GENMARSHAL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$DBUS_BINDING_TOOL" = "xno" || test "x$GLIB_GENMARSHAL" = "xno" || test "x$dbus" = "xno" ; then + dbus="no" + else + COMMON_LIBS="$COMMON_LIBS $DBUS_LIBS" + COMMON_CFLAGS="$COMMON_CFLAGS $DBUS_CFLAGS" + $as_echo "#define USE_DBUS 1" >>confdefs.h + + + EXP_VAR=DATADIR + FROM_VAR=$datadir + + prefix_save=$prefix + exec_prefix_save=$exec_prefix + + if test "x$prefix" = "xNONE"; then + prefix=$ac_default_prefix + fi + if test "x$exec_prefix" = "xNONE"; then + exec_prefix=$prefix + fi + + full_var="$FROM_VAR" + while true; do + new_full_var="`eval echo $full_var`" + if test "x$new_full_var"="x$full_var"; then break; fi + full_var=$new_full_var + done + + full_var=$new_full_var + DATADIR="$full_var" + + + prefix=$prefix_save + exec_prefix=$exec_prefix_save + + + DBUS_SERVICES_DIR="$DATADIR/dbus-1/services" + + +cat >>confdefs.h <<_ACEOF +#define DBUS_SERVICES_DIR "$DBUS_SERVICES_DIR" +_ACEOF + + fi +fi + + +if test "$spell" = "gtkspell" ; then + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTKSPELL" >&5 +$as_echo_n "checking for GTKSPELL... " >&6; } + +if test -n "$GTKSPELL_CFLAGS"; then + pkg_cv_GTKSPELL_CFLAGS="$GTKSPELL_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtkspell-2.0 >= 2.0.2\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gtkspell-2.0 >= 2.0.2") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GTKSPELL_CFLAGS=`$PKG_CONFIG --cflags "gtkspell-2.0 >= 2.0.2" 2>/dev/null` +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$GTKSPELL_LIBS"; then + pkg_cv_GTKSPELL_LIBS="$GTKSPELL_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtkspell-2.0 >= 2.0.2\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gtkspell-2.0 >= 2.0.2") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GTKSPELL_LIBS=`$PKG_CONFIG --libs "gtkspell-2.0 >= 2.0.2" 2>/dev/null` +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + GTKSPELL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gtkspell-2.0 >= 2.0.2" 2>&1` + else + GTKSPELL_PKG_ERRORS=`$PKG_CONFIG --print-errors "gtkspell-2.0 >= 2.0.2" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$GTKSPELL_PKG_ERRORS" >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + spell=no + +elif test $pkg_failed = untried; then + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + spell=no + +else + GTKSPELL_CFLAGS=$pkg_cv_GTKSPELL_CFLAGS + GTKSPELL_LIBS=$pkg_cv_GTKSPELL_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + : +fi + if test "$spell" != "no" ; then + GUI_LIBS="$GUI_LIBS $GTKSPELL_LIBS" + GUI_CFLAGS="$GUI_CFLAGS $GTKSPELL_CFLAGS" + $as_echo "#define USE_GTKSPELL 1" >>confdefs.h + + fi +fi + +if test "$spell" = "libsexy" ; then + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBSEXY" >&5 +$as_echo_n "checking for LIBSEXY... " >&6; } + +if test -n "$LIBSEXY_CFLAGS"; then + pkg_cv_LIBSEXY_CFLAGS="$LIBSEXY_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsexy >= 0.1.8\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libsexy >= 0.1.8") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBSEXY_CFLAGS=`$PKG_CONFIG --cflags "libsexy >= 0.1.8" 2>/dev/null` +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$LIBSEXY_LIBS"; then + pkg_cv_LIBSEXY_LIBS="$LIBSEXY_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsexy >= 0.1.8\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libsexy >= 0.1.8") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBSEXY_LIBS=`$PKG_CONFIG --libs "libsexy >= 0.1.8" 2>/dev/null` +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + LIBSEXY_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "libsexy >= 0.1.8" 2>&1` + else + LIBSEXY_PKG_ERRORS=`$PKG_CONFIG --print-errors "libsexy >= 0.1.8" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$LIBSEXY_PKG_ERRORS" >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +else + LIBSEXY_CFLAGS=$pkg_cv_LIBSEXY_CFLAGS + LIBSEXY_LIBS=$pkg_cv_LIBSEXY_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + libsexy=yes +fi + if test "$libsexy" = "yes" ; then + GUI_LIBS="$GUI_LIBS $LIBSEXY_LIBS" + GUI_CFLAGS="$GUI_CFLAGS $LIBSEXY_CFLAGS" + $as_echo "#define USE_LIBSEXY 1" >>confdefs.h + + else + spell="static" + fi +fi + +if test "$spell" = "static" ; then + $as_echo "#define USE_LIBSEXY 1" >>confdefs.h + +fi + + + if test "x$openssl" = "xyes"; then + USE_OPENSSL_TRUE= + USE_OPENSSL_FALSE='#' +else + USE_OPENSSL_TRUE='#' + USE_OPENSSL_FALSE= +fi + + if test "x$spell" = "xstatic"; then + USE_LIBSEXY_TRUE= + USE_LIBSEXY_FALSE='#' +else + USE_LIBSEXY_TRUE='#' + USE_LIBSEXY_FALSE= +fi + + if test "x$textfe" = "xyes"; then + DO_TEXT_TRUE= + DO_TEXT_FALSE='#' +else + DO_TEXT_TRUE='#' + DO_TEXT_FALSE= +fi + + if test "x$gtkfe" = "xyes"; then + DO_GTK_TRUE= + DO_GTK_FALSE='#' +else + DO_GTK_TRUE='#' + DO_GTK_FALSE= +fi + + if test "x$perl" = "xyes"; then + DO_PERL_TRUE= + DO_PERL_FALSE='#' +else + DO_PERL_TRUE='#' + DO_PERL_FALSE= +fi + + if test "x$python" = "xyes"; then + DO_PYTHON_TRUE= + DO_PYTHON_FALSE='#' +else + DO_PYTHON_TRUE='#' + DO_PYTHON_FALSE= +fi + + if test "x$tcl" = "xyes"; then + DO_TCL_TRUE= + DO_TCL_FALSE='#' +else + DO_TCL_TRUE='#' + DO_TCL_FALSE= +fi + + if test "x$plugin" = "xyes"; then + DO_PLUGIN_TRUE= + DO_PLUGIN_FALSE='#' +else + DO_PLUGIN_TRUE='#' + DO_PLUGIN_FALSE= +fi + + if test "x$dbus" = "xyes"; then + USE_DBUS_TRUE= + USE_DBUS_FALSE='#' +else + USE_DBUS_TRUE='#' + USE_DBUS_FALSE= +fi + + if test "x$GCONFTOOL" != "xno"; then + DO_GCONF_TRUE= + DO_GCONF_FALSE='#' +else + DO_GCONF_TRUE='#' + DO_GCONF_FALSE= +fi + + + +if test "$socks" = yes; then + socks=no + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SOCKSconnect in -lsocks5" >&5 +$as_echo_n "checking for SOCKSconnect in -lsocks5... " >&6; } +if test "${ac_cv_lib_socks5_SOCKSconnect+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocks5 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char SOCKSconnect (); +int +main () +{ +return SOCKSconnect (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_socks5_SOCKSconnect=yes +else + ac_cv_lib_socks5_SOCKSconnect=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socks5_SOCKSconnect" >&5 +$as_echo "$ac_cv_lib_socks5_SOCKSconnect" >&6; } +if test "x$ac_cv_lib_socks5_SOCKSconnect" = x""yes; then : + have_socks=yes +fi + + if test "$have_socks" = yes; then + for ac_header in socks.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "socks.h" "ac_cv_header_socks_h" "$ac_includes_default" +if test "x$ac_cv_header_socks_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SOCKS_H 1 +_ACEOF + have_socks_h=yes +fi + +done + + if test "$have_socks_h" = yes; then + socks=yes + $as_echo "#define SOCKS 1" >>confdefs.h + + LIBS="$LIBS -lsocks5" + fi + fi +fi + + +have_ntlm="no" +if test "x$ntlm" = "xyes" ; then + have_ntlm="no" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ntlm_smb_encrypt in -lntlm" >&5 +$as_echo_n "checking for ntlm_smb_encrypt in -lntlm... " >&6; } +if test "${ac_cv_lib_ntlm_ntlm_smb_encrypt+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lntlm $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char ntlm_smb_encrypt (); +int +main () +{ +return ntlm_smb_encrypt (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_ntlm_ntlm_smb_encrypt=yes +else + ac_cv_lib_ntlm_ntlm_smb_encrypt=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ntlm_ntlm_smb_encrypt" >&5 +$as_echo "$ac_cv_lib_ntlm_ntlm_smb_encrypt" >&6; } +if test "x$ac_cv_lib_ntlm_ntlm_smb_encrypt" = x""yes; then : + have_ntlm=yes +fi + + if test "$have_ntlm" = yes; then + LIBS="$LIBS -lntlm" + $as_echo "#define USE_MSPROXY 1" >>confdefs.h + + fi +fi + + +if test "$shm" = yes; then + oldl=$LIBS + oldc=$CPPFLAGS + LIBS="$LIBS `$pkgconfigpath --libs-only-L xft`" + CPPFLAGS="$CPPFLAGS `$pkgconfigpath --cflags-only-I xft`" + shm=no + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XShmAttach in -lXext" >&5 +$as_echo_n "checking for XShmAttach in -lXext... " >&6; } +if test "${ac_cv_lib_Xext_XShmAttach+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lXext $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char XShmAttach (); +int +main () +{ +return XShmAttach (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_Xext_XShmAttach=yes +else + ac_cv_lib_Xext_XShmAttach=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xext_XShmAttach" >&5 +$as_echo "$ac_cv_lib_Xext_XShmAttach" >&6; } +if test "x$ac_cv_lib_Xext_XShmAttach" = x""yes; then : + shm=yes +fi + + if test "$shm" = yes; then + shm=no + for ac_header in sys/ipc.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "sys/ipc.h" "ac_cv_header_sys_ipc_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_ipc_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SYS_IPC_H 1 +_ACEOF + shm=yes +fi + +done + + if test "$shm" = yes; then + shm=no + for ac_header in sys/shm.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "sys/shm.h" "ac_cv_header_sys_shm_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_shm_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SYS_SHM_H 1 +_ACEOF + shm=yes +fi + +done + + fi + fi + + LIBS=$oldl + if test "$shm" = yes; then + GUI_LIBS="$GUI_LIBS `$pkgconfigpath --libs-only-L xft` -lX11 -lXext" + $as_echo "#define USE_SHM 1" >>confdefs.h + + else + CPPFLAGS=$oldc + fi +fi + + +if test "$mmx" = "yes"; then + case $host_cpu in + i386|i486|i586|i686|i786|k6|k7) + mmx=yes + ;; + *) + mmx=no + esac + if test "$system" = "OpenBSD"; then + mmx=no + fi + if test "$mmx" = "yes"; then + $as_echo "#define USE_MMX 1" >>confdefs.h + + fi +fi + + if test "$mmx" = "yes"; then + USE_MMX_TRUE= + USE_MMX_FALSE='#' +else + USE_MMX_TRUE='#' + USE_MMX_FALSE= +fi + + + +if test "x$GCC" = "xyes"; then + if test -z "`echo "$CFLAGS" | grep "\-Wall" 2> /dev/null`" ; then + CFLAGS="$CFLAGS -Wall" + fi + if test "$system" = "Linux" -o "$system" = "FreeBSD"; then + if test -z "`echo "$CFLAGS" | grep "\-pipe" 2> /dev/null`" ; then + CFLAGS="$CFLAGS -pipe" + fi + fi + if test -z "`echo "$CFLAGS" | grep "\-g " 2> /dev/null`" ; then + CFLAGS="$CFLAGS -g" + fi +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -Wno-pointer-sign " >&5 +$as_echo_n "checking if gcc accepts -Wno-pointer-sign ... " >&6; } + +safe_CFLAGS=$CFLAGS +CFLAGS="-Wno-pointer-sign" + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + +int main () { return 0 ; } + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +no_pointer_sign=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +else + +no_pointer_sign=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +CFLAGS=$safe_CFLAGS + +if test x$no_pointer_sign = xyes; then + CFLAGS="$CFLAGS -Wno-pointer-sign" +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -funsigned-char " >&5 +$as_echo_n "checking if gcc accepts -funsigned-char ... " >&6; } + +safe_CFLAGS=$CFLAGS +CFLAGS="-funsigned-char" + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + +int main () { return 0 ; } + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +unsigned_char=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +else + +unsigned_char=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +CFLAGS=$safe_CFLAGS + +if test x$unsigned_char = xyes; then + CFLAGS="$CFLAGS -funsigned-char" +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for modern sigaction" >&5 +$as_echo_n "checking for modern sigaction... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <signal.h> +int +main () +{ +struct sigaction act; + siginfo_t *si; + act.sa_sigaction = 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + $as_echo "#define USE_SIGACTION 1" >>confdefs.h + + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +# Extract the first word of "gdk-pixbuf-csource", so it can be a program name with args. +set dummy gdk-pixbuf-csource; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_gdkpixbufcsourcepath+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $gdkpixbufcsourcepath in + [\\/]* | ?:[\\/]*) + ac_cv_path_gdkpixbufcsourcepath="$gdkpixbufcsourcepath" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_gdkpixbufcsourcepath="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +gdkpixbufcsourcepath=$ac_cv_path_gdkpixbufcsourcepath +if test -n "$gdkpixbufcsourcepath"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdkpixbufcsourcepath" >&5 +$as_echo "$gdkpixbufcsourcepath" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + +if test "$gtkfe" != no -a "_$gdkpixbufcsourcepath" = _; then + as_fn_error "\"Cannot find gdk-pixbuf-csource: Install GTK+ 2.0\!\"" "$LINENO" 5 +fi + +for ac_func in snprintf vsnprintf memrchr strtoull +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +eval as_val=\$$as_ac_var + if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname" +if test "x$ac_cv_func_gethostbyname" = x""yes; then : + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lresolv" >&5 +$as_echo_n "checking for gethostbyname in -lresolv... " >&6; } +if test "${ac_cv_lib_resolv_gethostbyname+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lresolv $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char gethostbyname (); +int +main () +{ +return gethostbyname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_resolv_gethostbyname=yes +else + ac_cv_lib_resolv_gethostbyname=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv_gethostbyname" >&5 +$as_echo "$ac_cv_lib_resolv_gethostbyname" >&6; } +if test "x$ac_cv_lib_resolv_gethostbyname" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBRESOLV 1 +_ACEOF + + LIBS="-lresolv $LIBS" + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 +$as_echo_n "checking for gethostbyname in -lnsl... " >&6; } +if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char gethostbyname (); +int +main () +{ +return gethostbyname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_nsl_gethostbyname=yes +else + ac_cv_lib_nsl_gethostbyname=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 +$as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; } +if test "x$ac_cv_lib_nsl_gethostbyname" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBNSL 1 +_ACEOF + + LIBS="-lnsl $LIBS" + +fi + +fi + +fi + + +ac_fn_c_check_func "$LINENO" "gethostname" "ac_cv_func_gethostname" +if test "x$ac_cv_func_gethostname" = x""yes; then : + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostname in -lnsl" >&5 +$as_echo_n "checking for gethostname in -lnsl... " >&6; } +if test "${ac_cv_lib_nsl_gethostname+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char gethostname (); +int +main () +{ +return gethostname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_nsl_gethostname=yes +else + ac_cv_lib_nsl_gethostname=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostname" >&5 +$as_echo "$ac_cv_lib_nsl_gethostname" >&6; } +if test "x$ac_cv_lib_nsl_gethostname" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBNSL 1 +_ACEOF + + LIBS="-lnsl $LIBS" + +fi + +fi + + +for ac_header in strings.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "strings.h" "ac_cv_header_strings_h" "$ac_includes_default" +if test "x$ac_cv_header_strings_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_STRINGS_H 1 +_ACEOF + +fi + +done + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for socklen_t" >&5 +$as_echo_n "checking for socklen_t... " >&6; } +if test "${ac_cv_type_socklen_t+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <sys/types.h> +#include <sys/socket.h> +#if STDC_HEADERS +#include <stdlib.h> +#include <stddef.h> +#endif +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "socklen_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then : + ac_cv_type_socklen_t=yes +else + ac_cv_type_socklen_t=no +fi +rm -f conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_socklen_t" >&5 +$as_echo "$ac_cv_type_socklen_t" >&6; } +if test $ac_cv_type_socklen_t = no; then + $as_echo "#define socklen_t int" >>confdefs.h + +fi + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if (defined(__APPLE__) && defined(__MACH__)) + lookupd +#endif +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "lookupd" >/dev/null 2>&1; then : + +$as_echo "#define LOOKUPD 1" >>confdefs.h + +fi +rm -f conftest* + + +LIBS="$LIBS $INTLLIBS" +CFLAGS="$CFLAGS $CPPFLAGS" + +GUI_LIBS="$GUI_LIBS $COMMON_LIBS" + + + + + + + + + + + + + + + +PLUGIN_INCLUDES='-I$(top_srcdir)/plugins' + + +test "x$prefix" = xNONE && prefix="$ac_default_prefix" +test "x$exec_prefix" = xNONE && exec_prefix="$prefix" + +cat >>confdefs.h <<_ACEOF +#define PREFIX "${prefix}" +_ACEOF + + +XCHATLIBDIR=`eval echo ${libdir}/xchat` +cat >>confdefs.h <<_ACEOF +#define XCHATLIBDIR "$XCHATLIBDIR" +_ACEOF + + +XCHATSHAREDIR=`eval echo ${datadir}` +cat >>confdefs.h <<_ACEOF +#define XCHATSHAREDIR "$XCHATSHAREDIR" +_ACEOF + + +xchatlibdir=${libdir}/xchat + + +ac_config_files="$ac_config_files Makefile src/Makefile src/common/Makefile src/common/dbus/Makefile src/fe-text/Makefile src/fe-gtk/Makefile src/pixmaps/Makefile plugins/Makefile plugins/python/Makefile plugins/perl/Makefile plugins/tcl/Makefile intl/Makefile po/Makefile.in" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + test "x$cache_file" != "x/dev/null" && + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + cat confcache >$cache_file + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then + as_fn_error "conditional \"MAINTAINER_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCCAS_TRUE}" && test -z "${am__fastdepCCAS_FALSE}"; then + as_fn_error "conditional \"am__fastdepCCAS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${USE_OPENSSL_TRUE}" && test -z "${USE_OPENSSL_FALSE}"; then + as_fn_error "conditional \"USE_OPENSSL\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${USE_LIBSEXY_TRUE}" && test -z "${USE_LIBSEXY_FALSE}"; then + as_fn_error "conditional \"USE_LIBSEXY\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${DO_TEXT_TRUE}" && test -z "${DO_TEXT_FALSE}"; then + as_fn_error "conditional \"DO_TEXT\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${DO_GTK_TRUE}" && test -z "${DO_GTK_FALSE}"; then + as_fn_error "conditional \"DO_GTK\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${DO_PERL_TRUE}" && test -z "${DO_PERL_FALSE}"; then + as_fn_error "conditional \"DO_PERL\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${DO_PYTHON_TRUE}" && test -z "${DO_PYTHON_FALSE}"; then + as_fn_error "conditional \"DO_PYTHON\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${DO_TCL_TRUE}" && test -z "${DO_TCL_FALSE}"; then + as_fn_error "conditional \"DO_TCL\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${DO_PLUGIN_TRUE}" && test -z "${DO_PLUGIN_FALSE}"; then + as_fn_error "conditional \"DO_PLUGIN\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${USE_DBUS_TRUE}" && test -z "${USE_DBUS_FALSE}"; then + as_fn_error "conditional \"USE_DBUS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${DO_GCONF_TRUE}" && test -z "${DO_GCONF_FALSE}"; then + as_fn_error "conditional \"DO_GCONF\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${USE_MMX_TRUE}" && test -z "${USE_MMX_FALSE}"; then + as_fn_error "conditional \"USE_MMX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: ${CONFIG_STATUS=./config.status} +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error ERROR [LINENO LOG_FD] +# --------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with status $?, using 1 if that was 0. +as_fn_error () +{ + as_status=$?; test $as_status -eq 0 && as_status=1 + if test "$3"; then + as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 + fi + $as_echo "$as_me: error: $1" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by XChat $as_me 2.8.8, which was +generated by GNU Autoconf 2.65. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to <http://www.xchat.org/>." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +XChat config.status 2.8.8 +configured by $0, generated by GNU Autoconf 2.65, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2009 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`' +macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`' +macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`' +enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`' +pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`' +host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`' +host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`' +host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`' +build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`' +build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`' +build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`' +SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`' +Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`' +GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`' +EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`' +FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`' +LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`' +NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`' +LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`' +max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`' +ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`' +exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`' +lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`' +lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`' +lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`' +reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`' +reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`' +deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`' +file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`' +AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`' +AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`' +STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`' +RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' +CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`' +compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`' +GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' +objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`' +SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`' +ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`' +need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`' +LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`' +OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`' +libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' +module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`' +fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' +need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`' +version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`' +runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`' +libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`' +soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`' +finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`' +sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`' +old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`' +striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`' + +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# Quote evaled strings. +for var in SED \ +GREP \ +EGREP \ +FGREP \ +LD \ +NM \ +LN_S \ +lt_SP2NL \ +lt_NL2SP \ +reload_flag \ +OBJDUMP \ +deplibs_check_method \ +file_magic_cmd \ +AR \ +AR_FLAGS \ +STRIP \ +RANLIB \ +CC \ +CFLAGS \ +compiler \ +lt_cv_sys_global_symbol_pipe \ +lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_c_name_address \ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +SHELL \ +ECHO \ +lt_prog_compiler_no_builtin_flag \ +lt_prog_compiler_wl \ +lt_prog_compiler_pic \ +lt_prog_compiler_static \ +lt_cv_prog_compiler_c_o \ +need_locks \ +DSYMUTIL \ +NMEDIT \ +LIPO \ +OTOOL \ +OTOOL64 \ +shrext_cmds \ +export_dynamic_flag_spec \ +whole_archive_flag_spec \ +compiler_needs_object \ +with_gnu_ld \ +allow_undefined_flag \ +no_undefined_flag \ +hardcode_libdir_flag_spec \ +hardcode_libdir_flag_spec_ld \ +hardcode_libdir_separator \ +fix_srcfile_path \ +exclude_expsyms \ +include_expsyms \ +file_list_spec \ +variables_saved_for_relink \ +libname_spec \ +library_names_spec \ +soname_spec \ +finish_eval \ +old_striplib \ +striplib; do + case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds \ +old_postinstall_cmds \ +old_postuninstall_cmds \ +old_archive_cmds \ +extract_expsyms_cmds \ +old_archive_from_new_cmds \ +old_archive_from_expsyms_cmds \ +archive_cmds \ +archive_expsym_cmds \ +module_cmds \ +module_expsym_cmds \ +export_symbols_cmds \ +prelink_cmds \ +postinstall_cmds \ +postuninstall_cmds \ +finish_cmds \ +sys_lib_search_path_spec \ +sys_lib_dlsearch_path_spec; do + case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Fix-up fallback echo if it was mangled by the above quoting rules. +case \$lt_ECHO in +*'\\\$0 --fallback-echo"') lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\` + ;; +esac + +ac_aux_dir='$ac_aux_dir' +xsi_shell='$xsi_shell' +lt_shell_append='$lt_shell_append' + +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='$PACKAGE' + VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' + RM='$RM' + ofile='$ofile' + + + +# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # from automake < 1.5. + eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + "src/common/Makefile") CONFIG_FILES="$CONFIG_FILES src/common/Makefile" ;; + "src/common/dbus/Makefile") CONFIG_FILES="$CONFIG_FILES src/common/dbus/Makefile" ;; + "src/fe-text/Makefile") CONFIG_FILES="$CONFIG_FILES src/fe-text/Makefile" ;; + "src/fe-gtk/Makefile") CONFIG_FILES="$CONFIG_FILES src/fe-gtk/Makefile" ;; + "src/pixmaps/Makefile") CONFIG_FILES="$CONFIG_FILES src/pixmaps/Makefile" ;; + "plugins/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/Makefile" ;; + "plugins/python/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/python/Makefile" ;; + "plugins/perl/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/perl/Makefile" ;; + "plugins/tcl/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/tcl/Makefile" ;; + "intl/Makefile") CONFIG_FILES="$CONFIG_FILES intl/Makefile" ;; + "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; + + *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= + trap 'exit_status=$? + { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5 + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' <conf$$subs.awk | sed ' +/^[^""]/{ + N + s/\n// +} +' >>$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ + || as_fn_error "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/ +s/:*\${srcdir}:*/:/ +s/:*@srcdir@:*/:/ +s/^\([^=]*=[ ]*\):*/\1/ +s/:*$// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_t=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_t"; then + break + elif $ac_last_try; then + as_fn_error "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' <confdefs.h | sed ' +s/'"$ac_delim"'/"\\\ +"/g' >>$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$tmp/stdin" \ + || as_fn_error "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ + || as_fn_error "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&2;} + + rm -f "$tmp/stdin" + case $ac_file in + -) cat "$tmp/out" && rm -f "$tmp/out";; + *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; + esac \ + || as_fn_error "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" + } >"$tmp/config.h" \ + || as_fn_error "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$tmp/config.h" "$ac_file" \ + || as_fn_error "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Autoconf 2.62 quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir=$dirpart/$fdir; as_fn_mkdir_p + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} + ;; + "libtool":C) + + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL + +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008 Free Software Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + +# The names of the tagged configurations supported by this script. +available_tags="" + +# ### BEGIN LIBTOOL CONFIG + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# An object symbol dumper. +OBJDUMP=$lt_OBJDUMP + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that does not interpret backslashes. +ECHO=$lt_ECHO + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# If ld is used when linking, flag to hardcode \$libdir into a binary +# during linking. This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path=$lt_fix_srcfile_path + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# ### END LIBTOOL CONFIG + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + +ltmain="$ac_aux_dir/ltmain.sh" + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + case $xsi_shell in + yes) + cat << \_LT_EOF >> "$cfgfile" + +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac +} + +# func_basename file +func_basename () +{ + func_basename_result="${1##*/}" +} + +# func_dirname_and_basename file append nondir_replacement +# perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# Implementation must be kept synchronized with func_dirname +# and func_basename. For efficiency, we do not delegate to +# those functions but instead duplicate the functionality here. +func_dirname_and_basename () +{ + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac + func_basename_result="${1##*/}" +} + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +func_stripname () +{ + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary parameter first. + func_stripname_result=${3} + func_stripname_result=${func_stripname_result#"${1}"} + func_stripname_result=${func_stripname_result%"${2}"} +} + +# func_opt_split +func_opt_split () +{ + func_opt_split_opt=${1%%=*} + func_opt_split_arg=${1#*=} +} + +# func_lo2o object +func_lo2o () +{ + case ${1} in + *.lo) func_lo2o_result=${1%.lo}.${objext} ;; + *) func_lo2o_result=${1} ;; + esac +} + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=${1%.*}.lo +} + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=$(( $* )) +} + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=${#1} +} + +_LT_EOF + ;; + *) # Bourne compatible functions. + cat << \_LT_EOF >> "$cfgfile" + +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + # Extract subdirectory from the argument. + func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi +} + +# func_basename file +func_basename () +{ + func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` +} + + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# func_strip_suffix prefix name +func_stripname () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "X${3}" \ + | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "X${3}" \ + | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; + esac +} + +# sed scripts: +my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' +my_sed_long_arg='1s/^-[^=]*=//' + +# func_opt_split +func_opt_split () +{ + func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` + func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` +} + +# func_lo2o object +func_lo2o () +{ + func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` +} + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'` +} + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=`expr "$@"` +} + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` +} + +_LT_EOF +esac + +case $lt_shell_append in + yes) + cat << \_LT_EOF >> "$cfgfile" + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "$1+=\$2" +} +_LT_EOF + ;; + *) + cat << \_LT_EOF >> "$cfgfile" + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "$1=\$$1\$2" +} + +_LT_EOF + ;; + esac + + + sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + ;; + "po-directories":C) + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + # Treat a directory as a PO directory if and only if it has a + # POTFILES.in file. This allows packages to have multiple PO + # directories under different names or in different locations. + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assigment from automake < 1.5. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + # Hide the ALL_LINGUAS assigment from automake < 1.5. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit $? +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + +echo +echo xchat $VERSION +echo +echo Building GTK+ Interface .... : $gtkfe +echo Building TEXT Interface .... : $textfe +echo +echo PLUGINS: Perl: $perl Python: $python TCL: $tcl +echo +echo mmx tinting ......... : $mmx\ spelling .............. : $spell +echo XShm tinting ........ : $shm\ plugin interface ...... : $plugin +if test "$xft" = no; then + echo text backend ........ : pango\ nls/gettext ........... : $USE_NLS +else + echo text backend ........ : xft\ nls/gettext ........... : $USE_NLS +fi +echo openssl support ..... : $openssl\ ipv6 support .......... : $ipv6 +echo dbus support ........ : $dbus\ msproxy ntlm \(ISA\) .... : $have_ntlm +echo +echo The binary will be installed in $prefix/bin +echo + +if test "$gtkfe" = no; then + echo Warning: The GTK \(GUI\) frontend will not be built. + echo +fi + +if test "$spell" = "gtkspell"; then + echo Warning: GTK SPELL is not the recommended spelling library. + echo +fi + +echo configure complete, now type \'make\' and pray. +echo diff --git a/xchat-2.8.8/configure.in b/xchat-2.8.8/configure.in new file mode 100644 index 0000000..460dbba --- /dev/null +++ b/xchat-2.8.8/configure.in @@ -0,0 +1,830 @@ +dnl Process this file with autoconf to produce a configure script. + +AC_INIT([XChat],[2.8.8],[http://www.xchat.org/],[xchat]) + +AC_PREREQ([2.59]) +AC_COPYRIGHT([Copyright (C) 1998-2010 Peter Zelezny]) + +AC_CONFIG_HEADERS([config.h]) +AC_CONFIG_SRCDIR([configure.in]) + +AM_INIT_AUTOMAKE([1.9 dist-bzip2 subdir-objects no-define]) + +AM_MAINTAINER_MODE +AC_PROG_CC +AM_PROG_CC_C_O +AC_PROG_CPP +AM_PROG_AS +AM_DISABLE_STATIC +AC_PROG_LIBTOOL + +dnl ----------------------------------------------------------- +dnl Language Support +dnl ----------------------------------------------------------- +GETTEXT_PACKAGE=xchat +AC_SUBST(GETTEXT_PACKAGE) +AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[Gettext package name]) + +ALL_LINGUAS="be ca cs de el es fi fr gl hu it ja kn ko lt mk nl pa pl pt ru sq sr sv th uk vi zh_CN zh_TW" +AM_GNU_GETTEXT + +dnl displaced from acconfig.h +AH_VERBATIM([OLD_PERL],[#undef OLD_PERL]) +AH_VERBATIM([PREFIX],[#undef PREFIX]) +AH_VERBATIM([XCHATLIBDIR],[#undef XCHATLIBDIR]) +AH_VERBATIM([XCHATSHAREDIR],[#undef XCHATSHAREDIR]) +AH_VERBATIM([SOCKS],[#undef SOCKS]) +AH_VERBATIM([USE_MSPROXY],[#undef USE_MSPROXY]) +dnl AH_VERBATIM([USE_GNOME],[#undef USE_GNOME]) +AH_VERBATIM([USE_SHM],[#undef USE_SHM]) +AH_VERBATIM([USE_GTKSPELL],[#undef USE_GTKSPELL]) +AH_VERBATIM([USE_LIBSEXY],[#undef USE_LIBSEXY]) +AH_VERBATIM([USE_IPV6],[#undef USE_IPV6]) +AH_VERBATIM([USE_MMX],[#undef USE_MMX]) +AH_VERBATIM([USE_OPENSSL],[#undef USE_OPENSSL]) +AH_VERBATIM([USE_PLUGIN],[#undef USE_PLUGIN]) +AH_VERBATIM([USE_XFT],[#undef USE_XFT]) +AH_VERBATIM([USE_XLIB],[#undef USE_XLIB]) +AH_VERBATIM([USE_SIGACTION],[#undef USE_SIGACTION]) +AH_VERBATIM([USING_FREEBSD],[#undef USING_FREEBSD]) +AH_VERBATIM([USING_LINUX],[#undef USING_LINUX]) +AH_VERBATIM([socklen_t],[#undef socklen_t]) +AH_VERBATIM([USE_DBUS],[#undef USE_DBUS]) + +AC_PATH_PROG(sedpath, sed) +if test "_$sedpath" = _; then + AC_MSG_ERROR("Cannot find sed: I need it\!") +fi + +AC_PATH_PROG(unamepath, uname) +if test "_$unamepath" = _; then + system="unknown" +else + AC_MSG_CHECKING(system type) + system=`$unamepath -s` + AC_MSG_RESULT($system) + if test "$system" = "Linux"; then + AC_DEFINE(USING_LINUX) + fi + if test "$system" = "FreeBSD"; then + AC_DEFINE(USING_FREEBSD) + fi +fi + +dnl ********************************************************************* +dnl ** configure switches *********************************************** +dnl ********************************************************************* + +AC_ARG_ENABLE(socks, +[ --enable-socks link with SOCKS5 library (default: no)], + socks=$enableval, socks=no) + +AC_ARG_ENABLE(ipv6, +[ --enable-ipv6 enable IPv6 (default: no)], + ipv6=$enableval, ipv6=no) + +AC_ARG_ENABLE(xft, +[ --enable-xft enable use of Xft directly (default: no)], + xft=$enableval, xft=no) + +AC_ARG_ENABLE(openssl, +[ --enable-openssl[=PATH] enable use of openSSL], + openssl=$enableval, openssl=yes) + +AC_ARG_ENABLE(gtkfe, +[ --disable-gtkfe disable building gtk frontend], + gtkfe=$enableval, gtkfe=yes) + +AC_ARG_ENABLE(textfe, +[ --enable-textfe build the text frontend (default: no)], + textfe=$enableval, textfe=no) + +dnl AC_ARG_ENABLE(gnome, +dnl [ --disable-gnome disable use of gnome], +dnl gnome=$enableval, gnome=yes) + +AC_ARG_ENABLE(xlib, +[ --disable-xlib disable use of xlib (for non X11 systems)], + xlib=$enableval, xlib=yes) + +AC_ARG_ENABLE(python, +[ --disable-python don't build the python plugin], + python=$enableval, python=yes) + +AC_ARG_ENABLE(perl, +[ --disable-perl don't build the perl plugin], + perl=$enableval, perl=yes) + +AC_ARG_ENABLE(perl_old, +[ --disable-perl_old no backwards compatibility for perl plugin], + perl_old=$enableval, perl_old=yes) + +AC_ARG_ENABLE(tcl, +[ --enable-tcl[=PATH] directory with Tcl config file: tclConfig.sh], + tcl=$enableval, tcl=yes) + +AC_ARG_ENABLE(plugin, +[ --disable-plugin disable plugin support], + plugin=$enableval, plugin=yes) + +AC_ARG_ENABLE(dbus, +[ --disable-dbus disable DBUS support], + dbus=$enableval, dbus=yes) + +AC_ARG_ENABLE(mmx, +[ --disable-mmx disable MMX assembly routines], + mmx=$enableval, mmx=yes) + +AC_ARG_ENABLE(shm, +[ --enable-shm enable use of XShm for fast tinting (default: no)], + shm=$enableval, shm=no) + +AC_ARG_ENABLE(spell, +[ --enable-spell=type enable spelling type: none static libsexy gtkspell], + spell=$enableval, spell=libsexy) + +AC_ARG_ENABLE(ntlm, +[ --enable-ntlm enable Microsoft's NTLM auth (libntlm) library support (default: no)], + ntlm=$enableval, ntlm=no) + +dnl ********************************************************************* +dnl ** GLIB ************************************************************* +dnl ********************************************************************* + +AM_PATH_GLIB_2_0(2.0.3, glib=yes, glib=no) +if test "$glib" = no; then + AC_MSG_ERROR("Cannot find glib") +fi + +COMMON_CFLAGS="$GLIB_CFLAGS" +COMMON_LIBS="$GLIB_LIBS" + +dnl ********************************************************************* +dnl ** GTK ************************************************************** +dnl ********************************************************************* + +AM_PATH_GTK_2_0(2.10.0, havegtk=yes, havegtk=no) + +if test "$havegtk" = no; then + gtkfe=no + echo + echo Cannot find GTK\! Not building GTK FrontEnd. + echo +fi + +if test "$gtkfe" != yes; then + gnome=no + COMMON_LIBS="$GLIB_LIBS" + COMMON_CFLAGS="$GLIB_CFLAGS" +fi + +dnl ********************************************************************* +dnl ** GNOME ************************************************************ +dnl ********************************************************************* + +GUI_LIBS="$GUI_LIBS $GTK_LIBS" +GUI_CFLAGS="$GUI_CFLAGS $GTK_CFLAGS" + +gnome=no +#if test "$gnome" = yes; then +# AC_PATH_PROG(pkgconfigpath, pkg-config) +# AC_MSG_CHECKING(Gnome2 compile flags) +# GNOME_CFLAGS="`$pkgconfigpath libgnome-2.0 --cflags 2>/dev/null`" +# if test "_$GNOME_CFLAGS" = _ ; then +# gnome=no +# AC_MSG_RESULT([Gnome not found, building without it.]) +# else +# GNOME_VER="`$pkgconfigpath libgnome-2.0 --modversion`" +# GUI_LIBS="$GUI_LIBS `$pkgconfigpath libgnome-2.0 --libs`" +# GUI_CFLAGS="$GUI_CFLAGS $GNOME_CFLAGS" +# AC_DEFINE(USE_GNOME) +# AC_MSG_RESULT(ok) +# fi +#fi + +# GConf +AC_PATH_PROG(GCONFTOOL, gconftool-2, no) + +dnl ********************************************************************* +dnl ** XFT ************************************************************** +dnl ********************************************************************* + +if test "$xft" = yes; then + AC_PATH_PROG(pkgconfigpath, pkg-config) + if $pkgconfigpath xft --exists; then + GUI_CFLAGS="$GUI_CFLAGS `$pkgconfigpath xft --cflags`" + GUI_LIBS="$GUI_LIBS `$pkgconfigpath xft --libs`" + else + xft=no + oldCPPFLAGS=$CPPFLAGS + CPPFLAGS="$CPPFLAGS $GTK_CFLAGS" + AC_CHECK_HEADERS(X11/Xft/Xft.h, xft=yes) + CPPFLAGS=$oldCPPFLAGS + fi + if test "$xft" = yes; then + AC_DEFINE(USE_XFT) + fi +fi + +dnl ********************************************************************* +dnl ** XLIB ************************************************************* +dnl ********************************************************************* + +if test "$xlib" = yes; then + AC_DEFINE(USE_XLIB) + if test "$system" = "SunOS"; then + LIBS="$LIBS -L/usr/openwin/lib -lX11" + else + AC_CHECK_LIB(X11, XSetWMHints) + fi +else + shm=no +fi + +dnl ********************************************************************* +dnl ** PERL ************************************************************* +dnl ********************************************************************* + +if test "$perl" = yes; then + AC_PATH_PROG(perlpath, perl) + AC_MSG_CHECKING(for Perl compile flags) + PERL_CFLAGS=`$perlpath -MExtUtils::Embed -e ccopts 2>/dev/null` + if test "_$PERL_CFLAGS" = _ ; then + AC_MSG_RESULT([not found, building without perl.]) + perl=no + else + PERL_LDFLAGS=`$perlpath -MExtUtils::Embed -e ldopts |$sedpath 's/-lgdbm //'` + PERL_LDFLAGS=`echo $PERL_LDFLAGS |$sedpath 's/-ldb //'` + PERL_LDFLAGS=`echo $PERL_LDFLAGS |$sedpath 's/-lndbm //'` + if test "$system" = "Linux"; then + PERL_LDFLAGS=`echo $PERL_LDFLAGS |$sedpath 's/-lnsl //'` + PERL_LDFLAGS=`echo $PERL_LDFLAGS |$sedpath 's/-lposix //'` + fi + PERL_LDFLAGS=`echo $PERL_LDFLAGS |$sedpath 's/-lc //'` + AC_MSG_RESULT(ok) + +# oldLIBS=$LIBS +# LIBS="$LIBS $PERL_LDFLAGS" +# AC_CHECK_FUNC(eval_pv) +# AC_CHECK_FUNC(call_pv) +# LIBS=$oldLIBS + + AC_MSG_CHECKING(for perl >= 5.8.0) + PERL_VER=`$perlpath -e 'print $]>= 5.008?"yes":"no"'` + if test "$PERL_VER" = "yes"; then + AC_MSG_RESULT(yes) + AC_MSG_CHECKING(if perl plugin will be backward compatible) + if test "$perl_old" = "yes"; then + AC_MSG_RESULT(yes) + AC_DEFINE(OLD_PERL) + else + AC_MSG_RESULT(no) + fi + else + AC_MSG_RESULT(no) + echo "perl version too old, building without perl." + perl=no + fi + fi +fi + +dnl ********************************************************************* +dnl ** PYTHON *********************************************************** +dnl ********************************************************************* + +if test "$python" = yes; then + AC_PATH_PROG(pythonpath, python2) + if test "_$pythonpath" = _ ; then + AC_PATH_PROG(pythonpath, python) + fi + if test "_$pythonpath" = _ ; then + python=no + else + AC_MSG_CHECKING(Python version) + changequote(<<, >>)dnl + PY_VER=`$pythonpath -c 'import distutils.sysconfig; print distutils.sysconfig.get_config_vars("VERSION")[0];'` + PY_LIB=`$pythonpath -c 'import distutils.sysconfig; print distutils.sysconfig.get_python_lib(standard_lib=1);'` + PY_INC=`$pythonpath -c 'import distutils.sysconfig; print distutils.sysconfig.get_config_vars("INCLUDEPY")[0];'` + $pythonpath -c "import sys; map(int,sys.version[:3].split('.')) >= [2,2] or sys.exit(1)" + changequote([, ])dnl + AC_MSG_RESULT($PY_VER) + if test "$?" != "1"; then + AC_MSG_CHECKING(Python compile flags) + PY_PREFIX=`$pythonpath -c 'import sys; print sys.prefix'` + PY_EXEC_PREFIX=`$pythonpath -c 'import sys; print sys.exec_prefix'` + if test -f $PY_INC/Python.h; then + PY_LIBS="-L$PY_LIB/config -lpython$PY_VER -lpthread -lutil" + PY_CFLAGS="-I$PY_INC" + AC_MSG_RESULT(ok) + else + python=no + AC_MSG_RESULT([Can't find Python.h]) + fi + else + echo "Python too old. Only 2.2 or above is supported." + python=no + fi + fi +fi + +dnl ********************************************************************* +dnl ** TCL ************************************************************** +dnl ********************************************************************* + +AC_MSG_CHECKING(for location of tclConfig.sh) +dirs="$tcl /lib /usr/lib /usr/tcl/lib /usr/lib/tcl8.4 /usr/local/lib /usr/local/tcl-8.4/lib /usr/local/tcl/lib /opt/lib /usr/lib/tcl8.3" +found=0 +if test "$tcl" != "no"; then + tcl=no + for try in $dirs; do + if test -f $try/tclConfig.sh; then + found=1 + . $try/tclConfig.sh + TCL_LIBS="$TCL_LIB_SPEC $TCL_LIBS" + TCL_CFLAGS="-I${TCL_PREFIX}/include $TCL_INCLUDE_SPEC" + tcl=yes + AC_MSG_RESULT($try/tclConfig.sh) + break + fi + done + if test "$found" -eq 0 ; then + AC_MSG_RESULT([tclConfig.sh not found - use the --enable-tcl option]) + fi +fi + +dnl ********************************************************************* +dnl ** IPv6 ************************************************************* +dnl ********************************************************************* + +dnl purely for Solaris +AC_CHECK_FUNC(select, , + AC_CHECK_LIB(socket, select, , + AC_CHECK_LIB(nsl, select, , + AC_CHECK_LIB(inet, select, , + AC_CHECK_LIB(cposix, select, , + AC_CHECK_LIB(net, select, , + AC_MSG_WARN(i can not find select. you might need to help me))))))) +AC_CHECK_LIB(socket, select) + +if test "$ipv6" = yes; then + AC_CHECK_FUNCS(getaddrinfo, have_getaddrinfo=yes) + AC_MSG_CHECKING(whether to enable IPv6 support) + if test "$have_getaddrinfo" = yes; then + AC_MSG_RESULT(yes) + AC_DEFINE(USE_IPV6) + else + ipv6=no + AC_MSG_RESULT(no) + fi +fi + +dnl ********************************************************************* +dnl ** OPENSSL ********************************************************** +dnl ********************************************************************* + +retry=no +if test "$openssl" != no; then + AC_PATH_PROG(pkgconfigpath, pkg-config) + AC_MSG_CHECKING(for openssl through pkg-config) + if $pkgconfigpath openssl --exists; then + CPPFLAGS="$CPPFLAGS `$pkgconfigpath openssl --cflags`" + LIBS="$LIBS `$pkgconfigpath openssl --libs`" + AC_DEFINE(USE_OPENSSL) + AC_MSG_RESULT(yes) + openssl=yes + else + AC_MSG_RESULT(no) + retry=yes + fi +fi + +if test "$retry" = "yes"; then + unset openssl_path ac_cv_lib_ssl_SSL_new ac_cv_header_openssl_ssl_h + if test "$openssl" != yes; then + openssl_path=$openssl + fi + openssl=no + SAVED_LIBS=$LIBS + LIBS="$LIBS -lcrypto" + if test -n "$openssl_path"; then + LIBS="-L$openssl_path/lib $LIBS" + fi + AC_CHECK_LIB(ssl, SSL_new, have_openssl=yes) + LIBS=$SAVED_LIBS + if test "$have_openssl" = yes; then + SAVED_CPPFLAGS=$CPPFLAGS + if test -n "$openssl_path"; then + CPPFLAGS="-I$openssl_path/include $CPPFLAGS" + fi + AC_CHECK_HEADERS(openssl/ssl.h, have_openssl_h=yes) + if test "$have_openssl_h" = yes; then + openssl=yes + AC_DEFINE(USE_OPENSSL) + LIBS="$LIBS -lssl -lcrypto" + if test -n "$openssl_path"; then + LIBS="-L$openssl_path/lib $LIBS" + fi + else + CPPFLAGS=$SAVED_CPPFLAGS + fi + fi +fi + +dnl ********************************************************************* +dnl ** PLUGIN *********************************************************** +dnl ********************************************************************* + +if test "$plugin" = yes; then + AC_CHECK_FUNCS(dlopen, have_dl=yes) + if test "$have_dl" != yes; then + AC_CHECK_LIB(dl, dlopen, have_dl=yes) + if test "$have_dl" = yes; then + LIBS="$LIBS -ldl" + fi + fi + if test "$have_dl" = yes; then + AC_DEFINE(USE_PLUGIN) + AC_PATH_PROG(pkgconfigpath, pkg-config) + dnl we just need the -Wl,--export-dynamic, but not -lgmodule-2.0 + RDYNAMIC_FLAGS="`$pkgconfigpath gmodule-2.0 --libs | $sedpath 's/ -lgmodule-2.0//'`" + LIBS="$LIBS $RDYNAMIC_FLAGS" + if test "$LD" = ""; then + VS="`ld --help | grep version-script 2> /dev/null`" + else + VS="`$LD --help | grep version-script 2> /dev/null`" + fi + if test "$VS" != ""; then + GUI_LIBS="$GUI_LIBS -Wl,--version-script,\$(srcdir)/../version-script" + fi + else + plugin=no + fi +fi + +dnl ####################################################################### +dnl # Check for DBUS libraries +dnl ####################################################################### + +if test "x$dbus" = "xyes" ; then + PKG_CHECK_MODULES(DBUS, [dbus-1 >= 0.60 dbus-glib-1 >= 0.60 gthread-2.0], dbus=yes, [ + AC_MSG_RESULT(no) + dbus=no + ]) + AC_PATH_PROG(DBUS_BINDING_TOOL, dbus-binding-tool, no) + AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal, no) + if test "x$DBUS_BINDING_TOOL" = "xno" || test "x$GLIB_GENMARSHAL" = "xno" || test "x$dbus" = "xno" ; then + dbus="no" + else + COMMON_LIBS="$COMMON_LIBS $DBUS_LIBS" + COMMON_CFLAGS="$COMMON_CFLAGS $DBUS_CFLAGS" + AC_DEFINE(USE_DBUS) + AS_AC_EXPAND(DATADIR, $datadir) + + DBUS_SERVICES_DIR="$DATADIR/dbus-1/services" + AC_SUBST(DBUS_SERVICES_DIR) + AC_DEFINE_UNQUOTED(DBUS_SERVICES_DIR, "$DBUS_SERVICES_DIR", [Where services dir for DBUS is]) + fi +fi + +dnl ********************************************************************* +dnl ** SPELL ************************************************************ +dnl ********************************************************************* + +if test "$spell" = "gtkspell" ; then + PKG_CHECK_MODULES(GTKSPELL, gtkspell-2.0 >= 2.0.2, [], [ + AC_MSG_RESULT(no) + spell=no + ]) + if test "$spell" != "no" ; then + GUI_LIBS="$GUI_LIBS $GTKSPELL_LIBS" + GUI_CFLAGS="$GUI_CFLAGS $GTKSPELL_CFLAGS" + AC_DEFINE(USE_GTKSPELL) + fi +fi + +if test "$spell" = "libsexy" ; then + PKG_CHECK_MODULES([LIBSEXY], [libsexy >= 0.1.8], libsexy=yes, AC_MSG_RESULT(no)) + if test "$libsexy" = "yes" ; then + GUI_LIBS="$GUI_LIBS $LIBSEXY_LIBS" + GUI_CFLAGS="$GUI_CFLAGS $LIBSEXY_CFLAGS" + AC_DEFINE(USE_LIBSEXY) + else + dnl use builtin static one + spell="static" + fi +fi + +if test "$spell" = "static" ; then + AC_DEFINE(USE_LIBSEXY) +fi + +dnl ********************************************************************* +dnl ** CONDITIONALS ***************************************************** +dnl ********************************************************************* + +AM_CONDITIONAL(USE_OPENSSL, test "x$openssl" = "xyes") +AM_CONDITIONAL(USE_LIBSEXY, test "x$spell" = "xstatic") +AM_CONDITIONAL(DO_TEXT, test "x$textfe" = "xyes") +AM_CONDITIONAL(DO_GTK, test "x$gtkfe" = "xyes") +AM_CONDITIONAL(DO_PERL, test "x$perl" = "xyes") +AM_CONDITIONAL(DO_PYTHON, test "x$python" = "xyes") +AM_CONDITIONAL(DO_TCL, test "x$tcl" = "xyes") +AM_CONDITIONAL(DO_PLUGIN, test "x$plugin" = "xyes") +AM_CONDITIONAL(USE_DBUS, test "x$dbus" = "xyes") +AM_CONDITIONAL(DO_GCONF, test "x$GCONFTOOL" != "xno") + +dnl ********************************************************************* +dnl ** SOCKS5 *********************************************************** +dnl ********************************************************************* + +if test "$socks" = yes; then + socks=no + AC_CHECK_LIB(socks5, SOCKSconnect, have_socks=yes) + if test "$have_socks" = yes; then + AC_CHECK_HEADERS(socks.h, have_socks_h=yes) + if test "$have_socks_h" = yes; then + socks=yes + AC_DEFINE(SOCKS) + LIBS="$LIBS -lsocks5" + fi + fi +fi + +dnl ********************************************************************* +dnl ** MS PROXY ********************************************************* +dnl ********************************************************************* + +have_ntlm="no" +if test "x$ntlm" = "xyes" ; then + have_ntlm="no" + AC_CHECK_LIB(ntlm, ntlm_smb_encrypt, have_ntlm=yes) + if test "$have_ntlm" = yes; then + LIBS="$LIBS -lntlm" + AC_DEFINE(USE_MSPROXY) + fi +fi + +dnl ********************************************************************* +dnl ** XShm ************************************************************* +dnl ********************************************************************* + +if test "$shm" = yes; then + oldl=$LIBS + oldc=$CPPFLAGS + LIBS="$LIBS `$pkgconfigpath --libs-only-L xft`" + CPPFLAGS="$CPPFLAGS `$pkgconfigpath --cflags-only-I xft`" + shm=no + AC_CHECK_LIB(Xext, XShmAttach, shm=yes) + if test "$shm" = yes; then + shm=no + AC_CHECK_HEADERS(sys/ipc.h, shm=yes) + if test "$shm" = yes; then + shm=no + AC_CHECK_HEADERS(sys/shm.h, shm=yes) + fi + fi + + LIBS=$oldl + if test "$shm" = yes; then + GUI_LIBS="$GUI_LIBS `$pkgconfigpath --libs-only-L xft` -lX11 -lXext" + AC_DEFINE(USE_SHM) + else + CPPFLAGS=$oldc + fi +fi + +dnl ********************************************************************* +dnl ** MMX ************************************************************** +dnl ********************************************************************* + +dnl we don't need mmx on *this* machine, just i386, because +dnl it's checked at runtime. +if test "$mmx" = "yes"; then + case $host_cpu in + i386|i486|i586|i686|i786|k6|k7) + mmx=yes + ;; + *) + mmx=no + esac + if test "$system" = "OpenBSD"; then + dnl openbsd fails because mmx_cmod doesn't prefix its symbols with underscore. + dnl xtext.o: Undefined symbol `_shade_ximage_15_mmx' referenced from text segment + mmx=no + fi + if test "$mmx" = "yes"; then + AC_DEFINE(USE_MMX) + fi +fi + +AM_CONDITIONAL(USE_MMX, test "$mmx" = "yes") + +dnl ********************************************************************* +dnl ** GCC FLAGS ******************************************************** +dnl ********************************************************************* + +dnl Only use -Wall and -pipe if we have gcc +if test "x$GCC" = "xyes"; then + if test -z "`echo "$CFLAGS" | grep "\-Wall" 2> /dev/null`" ; then + CFLAGS="$CFLAGS -Wall" + fi + if test "$system" = "Linux" -o "$system" = "FreeBSD"; then + if test -z "`echo "$CFLAGS" | grep "\-pipe" 2> /dev/null`" ; then + CFLAGS="$CFLAGS -pipe" + fi + fi + if test -z "`echo "$CFLAGS" | grep "\-g " 2> /dev/null`" ; then + CFLAGS="$CFLAGS -g" + fi +fi + +dnl does this compiler support -Wno-pointer-sign ? +AC_MSG_CHECKING([if gcc accepts -Wno-pointer-sign ]) + +safe_CFLAGS=$CFLAGS +CFLAGS="-Wno-pointer-sign" + +AC_TRY_COMPILE(, [ +int main () { return 0 ; } +], +[ +no_pointer_sign=yes +AC_MSG_RESULT([yes]) +], [ +no_pointer_sign=no +AC_MSG_RESULT([no]) +]) +CFLAGS=$safe_CFLAGS + +if test x$no_pointer_sign = xyes; then + CFLAGS="$CFLAGS -Wno-pointer-sign" +fi + +dnl does this compiler support -funsigned-char ? +AC_MSG_CHECKING([if gcc accepts -funsigned-char ]) + +safe_CFLAGS=$CFLAGS +CFLAGS="-funsigned-char" + +AC_TRY_COMPILE(, [ +int main () { return 0 ; } +], +[ +unsigned_char=yes +AC_MSG_RESULT([yes]) +], [ +unsigned_char=no +AC_MSG_RESULT([no]) +]) +CFLAGS=$safe_CFLAGS + +if test x$unsigned_char = xyes; then + CFLAGS="$CFLAGS -funsigned-char" +fi + +dnl ********************************************************************* +dnl ** FUNCTIONS/LIBS/CFLAGS ******************************************** +dnl ********************************************************************* + +AC_MSG_CHECKING(for modern sigaction) +dnl libc5 on linux and FreeBSD 3.x doesn't have siginfo_t +dnl and the sa_sigation field. +AC_TRY_COMPILE( + [#include <signal.h>], + [struct sigaction act; + siginfo_t *si; + act.sa_sigaction = 0;], + [ + AC_MSG_RESULT(yes) + AC_DEFINE(USE_SIGACTION) + ], + AC_MSG_RESULT(no)) + +AC_PATH_PROG(gdkpixbufcsourcepath, gdk-pixbuf-csource) +AC_SUBST(gdkpixbufcsourcepath) +if test "$gtkfe" != no -a "_$gdkpixbufcsourcepath" = _; then + AC_MSG_ERROR("Cannot find gdk-pixbuf-csource: Install GTK+ 2.0\!") +fi + +dnl if we don't have this, use g_snprintf instead +AC_CHECK_FUNCS(snprintf vsnprintf memrchr strtoull) + +AC_CHECK_FUNC(gethostbyname, , + AC_CHECK_LIB(resolv, gethostbyname, , + AC_CHECK_LIB(nsl, gethostbyname))) + +AC_CHECK_FUNC(gethostname, , AC_CHECK_LIB(nsl, gethostname)) + +dnl necessary for IRIX +AC_CHECK_HEADERS(strings.h) + +dnl Check for type in sys/socket.h - from Squid source (GPL) +AC_CACHE_CHECK(for socklen_t, ac_cv_type_socklen_t, [ +AC_EGREP_CPP([socklen_t[^a-zA-Z_0-9]], [#include <sys/types.h> +#include <sys/socket.h> +#if STDC_HEADERS +#include <stdlib.h> +#include <stddef.h> +#endif], +ac_cv_type_socklen_t=yes, +ac_cv_type_socklen_t=no) +]) +if test $ac_cv_type_socklen_t = no; then + AC_DEFINE(socklen_t, int) +fi + +dnl Mac OS X and Darwin use lookupd, which caches DNS queries by default +AC_EGREP_CPP(lookupd, dnl +[#if (defined(__APPLE__) && defined(__MACH__)) + lookupd +#endif], AC_DEFINE([LOOKUPD],1,[Define to 1 if the system uses lookupd])) + +dnl freebsd needs this +LIBS="$LIBS $INTLLIBS" +CFLAGS="$CFLAGS $CPPFLAGS" + +GUI_LIBS="$GUI_LIBS $COMMON_LIBS" + +dnl make these visible to all Makefiles +AC_SUBST(GUI_LIBS) +AC_SUBST(GUI_CFLAGS) +AC_SUBST(COMMON_LIBS) +AC_SUBST(COMMON_CFLAGS) +AC_SUBST(PERL_CFLAGS) +AC_SUBST(PERL_LDFLAGS) +AC_SUBST(PY_CFLAGS) +AC_SUBST(PY_LIBS) +AC_SUBST(TCL_LIBS) +AC_SUBST(TCL_CFLAGS) +AC_SUBST(DBUS_CFLAGS) +AC_SUBST(DBUS_LIBS) + + +PLUGIN_INCLUDES='-I$(top_srcdir)/plugins' +AC_SUBST(PLUGIN_INCLUDES) + +dnl for plugin.c and pixmaps.c +test "x$prefix" = xNONE && prefix="$ac_default_prefix" +test "x$exec_prefix" = xNONE && exec_prefix="$prefix" + +AC_DEFINE_UNQUOTED(PREFIX, "${prefix}") + +XCHATLIBDIR=`eval echo ${libdir}/xchat` +AC_DEFINE_UNQUOTED(XCHATLIBDIR, "$XCHATLIBDIR") + +XCHATSHAREDIR=`eval echo ${datadir}` +AC_DEFINE_UNQUOTED(XCHATSHAREDIR, "$XCHATSHAREDIR") + +dnl for plugins/xxx/Makefile.am +xchatlibdir=${libdir}/xchat +AC_SUBST(xchatlibdir) + +AC_OUTPUT([ +Makefile +src/Makefile +src/common/Makefile +src/common/dbus/Makefile +src/fe-text/Makefile +src/fe-gtk/Makefile +src/pixmaps/Makefile +plugins/Makefile +plugins/python/Makefile +plugins/perl/Makefile +plugins/tcl/Makefile +intl/Makefile +po/Makefile.in +]) + +echo +echo xchat $VERSION +echo +echo Building GTK+ Interface .... : $gtkfe +echo Building TEXT Interface .... : $textfe +echo +echo PLUGINS: Perl: $perl Python: $python TCL: $tcl +echo +echo mmx tinting ......... : $mmx\ spelling .............. : $spell +echo XShm tinting ........ : $shm\ plugin interface ...... : $plugin +if test "$xft" = no; then + echo text backend ........ : pango\ nls/gettext ........... : $USE_NLS +else + echo text backend ........ : xft\ nls/gettext ........... : $USE_NLS +fi +echo openssl support ..... : $openssl\ ipv6 support .......... : $ipv6 +echo dbus support ........ : $dbus\ msproxy ntlm \(ISA\) .... : $have_ntlm +echo +echo The binary will be installed in $prefix/bin +echo + +if test "$gtkfe" = no; then + echo Warning: The GTK \(GUI\) frontend will not be built. + echo +fi + +if test "$spell" = "gtkspell"; then + echo Warning: GTK SPELL is not the recommended spelling library. + echo +fi + +echo configure complete, now type \'make\' and pray. +echo diff --git a/xchat-2.8.8/depcomp b/xchat-2.8.8/depcomp new file mode 100755 index 0000000..df8eea7 --- /dev/null +++ b/xchat-2.8.8/depcomp @@ -0,0 +1,630 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2009-04-28.21; # UTC + +# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free +# Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program 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 General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. + +case $1 in + '') + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by `PROGRAMS ARGS'. + object Object file output by `PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputing dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to <bug-automake@gnu.org>. +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +cygpath_u="cygpath -u -f -" +if test "$depmode" = msvcmsys; then + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u="sed s,\\\\\\\\,/,g" + depmode=msvisualcpp +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. +## Unfortunately, FreeBSD c89 acceptance of flags depends upon +## the command line argument order; so add the flags where they +## appear in depend2.am. Note that the slowdown incurred here +## affects only configure: in makefiles, %FASTDEP% shortcuts this. + for arg + do + case $arg in + -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; + *) set fnord "$@" "$arg" ;; + esac + shift # fnord + shift # $arg + done + "$@" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory +## that the space means something, we add a space to the output as +## well. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' +' ' ' >> "$depfile" + echo >> "$depfile" + + # The second pass generates a dummy entry for each header file. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts `$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.u + tmpdepfile2=$base.u + tmpdepfile3=$dir.libs/$base.u + "$@" -Wc,-M + else + tmpdepfile1=$dir$base.u + tmpdepfile2=$dir$base.u + tmpdepfile3=$dir$base.u + "$@" -M + fi + stat=$? + + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +icc) + # Intel's C compiler understands `-MD -MF file'. However on + # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # ICC 7.0 will fill foo.d with something like + # foo.o: sub/foo.c + # foo.o: sub/foo.h + # which is wrong. We want: + # sub/foo.o: sub/foo.c + # sub/foo.o: sub/foo.h + # sub/foo.c: + # sub/foo.h: + # ICC 7.1 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using \ : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | + sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp2) + # The "hp" stanza above does not work with aCC (C++) and HP's ia64 + # compilers, which have integrated preprocessors. The correct option + # to use with these is +Maked; it writes dependencies to a file named + # 'foo.d', which lands next to the object file, wherever that + # happens to be. + # Much of this is similar to the tru64 case; see comments there. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir.libs/$base.d + "$@" -Wc,+Maked + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + "$@" +Maked + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" + # Add `dependent.h:' lines. + sed -ne '2,${ + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" "$tmpdepfile2" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + + if test "$libtool" = yes; then + # With Tru64 cc, shared objects can also be used to make a + # static library. This mechanism is used in libtool 1.4 series to + # handle both shared and static libraries in a single compilation. + # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. + # + # With libtool 1.5 this exception was removed, and libtool now + # generates 2 separate objects for the 2 libraries. These two + # compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 + tmpdepfile2=$dir$base.o.d # libtool 1.5 + tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 + tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.o.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + tmpdepfile4=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for `:' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. + "$@" $dashmflag | + sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +' < "$tmpdepfile" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no eat=no + for arg + do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + if test $eat = yes; then + eat=no + continue + fi + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -arch) + eat=yes ;; + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix=`echo "$object" | sed 's/^.*\././'` + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E | + sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + IFS=" " + for arg + do + case "$arg" in + -o) + shift + ;; + $object) + shift + ;; + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E 2>/dev/null | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvcmsys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/xchat-2.8.8/faq.html b/xchat-2.8.8/faq.html new file mode 100644 index 0000000..4f4c1cd --- /dev/null +++ b/xchat-2.8.8/faq.html @@ -0,0 +1,537 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head> +<title>XCHAT FAQ + + + + +

    X-Chat 2.8 Frequently Asked Questions

    + +

    1. Section One: Compiling and Installing.

    +

    +1. I get this error: /bin/sh: no: command not found +

    +2. How do I compile X-Chat on my Sun OS system? +

    +

    + +

    2. Section Two: Using X-Chat.

    +

    +1. How do I enable identd in X-Chat? (How do I get rid of the ~ in front of my username?) +

    +2. How do I auto join more than one channel with keys? +

    +3. How do I autoconnect and join a channel when X-Chat loads? +

    +4. How do I cut and paste in X-Chat? +

    +5. How do I connect through a proxy? +

    +6. How do I show @ and + in front of nicknames that are Op and Voice when they talk? +

    +7. How do I change the Op and Voice userlist icons and Tree View icons? +

    +8. How do I set different ban types? +

    +9. Why can't I see accented-letters/umlauts/upper-ascii-chars in X-Chat? +

    +10. Why does the timestamp overlap some nicknames? +

    +11. How do I turn on Conference mode where I will not see join or part messages? +

    +12. How can I run the /dccserver command? +

    +13. Why doesn't DCC send work behind a router (IPNat/ADSL)? +

    +14. How do I execute multiple commands in one line? +

    +15. How do I enable Emacs key bindings in XChat? +

    +16. I get this error: "Unknown file type abc.yz. Maybe you need to install the Perl or Python plugin?" +

    +17. How do I play sound files on certain events? +

    +18. How do I auto-load scripts at startup? +

    +19. How do I minimize X-Chat to the System Tray (Notification Area)? +

    +20. Can I select and copy text with the time stamps? +

    +21. What's the deal with opening URLs in XChat on Linux/Unix? +

    +22. Where are the log files saved to? +

    +23. How do I rotate log files every so often? +

    +24. How do I enable graphical smilies (emoticons)? +

    +

    + +

    3. Section Three: Contributions, Development and Bugs.

    +

    +1. Why does X-Chat leak so much memory? +

    +2. My copy of X-Chat crashes, what can I do? +

    +3. Can I write a new language translation for X-Chat? +

    + +

    + +

    1. Section One: Compiling and Installing.

    + +

    1. I get this error: /bin/sh: no: command not found

    +

    +If you get an error something like: +

    +
    +Making all in po
    +make[2]: Entering directory `/home/zed/xchat/files/xchat-1.8.7/po'
    +file=./`echo ca | sed 's,.*/,,'`.gmo \
    +  && rm -f $file && PATH=../src:$PATH no -o $file ca.po
    +/bin/sh: no: command not found
    +make[2]: *** [ca.gmo] Error 127
    +make[2]: Leaving directory `/home/zed/xchat/files/xchat-1.8.7/po'
    +make[1]: *** [all-recursive] Error 1
    +make[1]: Leaving directory `/home/zed/xchat/files/xchat-1.8.7'
    +make: *** [all-recursive-am] Error 2
    +
    +

    +It means you don't have GNU gettext installed. There are two solutions: +

    +
      +
    • Install GNU gettext and try again.
    • +
    • Use ./configure --disable-nls. This will disable foreign +language support and all menus and GUI will be in English only.
    • +
    + +

    2. How do I compile X-Chat on my Sun OS system?

    +

    + X-Chat uses GNU gettext which in turn requires gmake, either install that + and or use ./configure --disable-nls with Sun's own make. +

    + +

    2. Section Two: Using X-Chat.

    + +

    1. How do I enable identd in X-Chat?

    +

    +UNIX:
    + Identd isn't actually apart of X-Chat. You will need to download and install + your own ident server. Most distributions, including Fedora, come with an + ident server program called oidentd. Make sure it is enabled in + /etc/xinetd.conf or read you distribution's documentation. + + As an alternative, you can try this experimental identd server: xchat_auth + +

    WINDOWS:
    + The win32 version of X-Chat comes with a built-in identd server. It is + enabled by default, but can be disabled with /set identd 0. +

    + +

    2. How do I auto join more than one channel with keys?

    +

    + In the Server list's channel column enter multiple channels and separate + them by commas, eg: "#linux,#warez,#chat". Do not put spaces between the + channels. If the channels also have keys (passwords), then the syntax is: + "#channel1,#channel2,#channel3 key1,key2,key3" +

    +

    + Example: If you want to join #abc and #talk without keys, but #linux with + a key of "secret", you would enter: "#linux,#abc,#talk secret". +

    + +

    3. How do I autoconnect and join a channel when X-Chat loads?

    +

    +In the Server list, select the Network you want to auto-connect to, click Edit +and turn ON the "Auto connect to this network at startup" checkbox. +

    + +

    4. How do I cut and paste in X-Chat?

    +

    +It's exactly the same as any other X application. You simply mark the text +you want, and then press middle mouse button to paste (if you only have a +2 button mouse, press left and right buttons at once). +

    + +

    5. How do I connect through a proxy?

    +

    +Go to the menus, Settings -> Preferences -> Network Setup and fill in the requested +information there. Authentication (using a username and password) is +only supported for HTTP and Socks5. +

    + +

    6. How do I show @ and + in front of nicknames that are Op and Voice when they talk?

    +

    +To display @ and + characters next to nicknames as they talk, do the following: +

    +

    +In the menus, open up Settings -> Advanced -> Text Events. Find the +Channel Message event in the list. The $3 code can be inserted to +print the user's mode-character (e.g. @ or +). For example, you might want +to change the default: + +

    %C18%H<%H$4$1%H>%H%O$t$2

    To: +

    %C18%H<%H$4$3$1%H>%H%O$t$2 +

    Don't forget to press Enter, so the changes take effect in the +list at the top of the window. +

    + +

    7. How do I change the Op and Voice userlist icons and Tree View icons?

    +

    +Unix/Linux +
    The default icons are hard coded (compiled) in. You can override them by creating +some PNG files in ${PREFIX}/share/xchat. ${PREFIX} is usually /usr, so that +would translate to /usr/share/xchat. If you compiled from source tarball without +specifying a prefix, it will be /usr/local instead. +
    +
    +Windows +
    Your own custom icons can be placed in C:\Program Files\XChat\Icons. Image format +may be PNG or ICO. PNG support on Windows 2000 may require installing GDI+, but it's +standard on XP or newer. +

    + +
    + + + + + + + + + + + + + + + + + + +
    NameDescription
    op.pngUserlist: Op
    hop.pngUserlist: Half-Op
    voice.pngUserlist: Voice
    red.pngUserlist: Owner
    purple.pngUserlist: Founder
    server.pngTree: Server
    channel.pngTree: Channel
    dialog.pngTree: Dialog/Query
    util.pngTree: Utility (Channel List, DCC etc)
    message.pngTray: Message
    highlight.pngTray: Highlighted Message
    fileoffer.pngTray: DCC
    xchat.pngMain XChat icon
    +
    + +
    Tree View icons: Type /set tab_icons 1 to enable them and then restart XChat. +
    + +

    8. How do I set different ban types?

    +

    + Three ways: +

    +
      +
    • + Right click the nickname in the userlist, and choose a ban type from the + "Kick/Ban" submenu. +
    • +
    • + You can also do it manually: + + /ban <nick> <ban type> + + where the <ban type> is a number from 0 to 3. +
    • + +
    • + /set irc_ban_type <ban type> + sets the default ban type to use for all bans. The different types are: + +
        +
      • 0 *!*@*.host
      • +
      • 1 *!*@domain
      • +
      • 2 *!*user@*.host
      • +
      • 3 *!*user@domain
      • +
      + +
    • +
    + +

    9. Why can't I see accented-letters/umlauts/upper-ascii-chars in X-Chat?

    +

    +Refer to http://xchat.org/encoding/.
    +Note: Log files are always written in UTF-8/Unicode. +

    + +

    10. Why does the timestamp overlap some nicknames?

    +

    +Some networks allow very long nicknames (up to 32 letters). It can be annoying to have +the separator bar move too far to the right, just for one long nick. Therefore, it has +a set limit for the distance it will move to the right. If you use a large font, you +may need to adjust this distance. It is set in pixels, for example: +

    +
    +      /set text_max_indent 320
    +
    + +

    +Once you adjust this setting high enough, overlapping timestamps and nicknames should +not occur. The adjustment will not take effect immediately, a restart may be needed. +

    + +

    11. How do I turn on Conference mode where I will not see join or part messages?

    +

    +Right-click on the tab you want to change. In the submenu of the channel +name, there's a toggle-item "Show join/part messages", simply turn this off. +

    If you want to turn this option on globally, type:

    +
    /set irc_conf_mode 1
    +

    Then all channels you join after setting this will start with "Show join/part messages" turned off.

    + +

    12. How can I run the /dccserver command?

    +

    +In short you can not do this (easily). This is a mIRC only proprietary feature +that is quite nonstandard. There is no code for doing this, mainly because +/dccserver runs on port 59 which in turn would require running X-Chat as +root. Why do you need this anyway? Just use normal DCC. +

    +Unofficial unix patches are available here. +

    Update: DCC Server feature has been added in the official Windows release 2.4.1b. +

    + +

    13. Why doesn't DCC send work behind a router (IPNat/ADSL)?

    +

    + If you are behind a IP-NAT or ADSL router, you will most likely have + an address like 192.168.0.1. This address is not usable on the Internet, and + must be translated. +

    + When offering a DCC file, xchat will tell the receiver your address. If it says + 192.168.0.1, the receiver will not be able to connect. One way to make it send + your "real" address is to enable the "Get my IP from IRC Server" option in xchat. + This option is available in Preferences -> File Transfers. When you turn it + ON, you will have to re-login to the server before it'll take effect. +

    + You will also need to forward some ports for use in DCC send. You may pick almost + any port range you wish, for example, in xchat set: +

    +
    		First DCC send port: 4990
    +		 Last DCC send port: 5000
    +
    +

    + This will allow you to send up to ten files at the same time, which should be plenty + for most people. Lastly, configure your router/modem to forward ports 4990-5000 to + your PC's address. You'll have to consult your router/modem's manual on how to do this. +

    + +

    14. How do I execute multiple commands in one line?

    +

    + There are three ways to do this: +

    +
      +
    • /LOAD -e <textfile>, where <textfile> is a full pathname to a file +containing commands on each line.
    • +
    • +Separate your commands with CTRL-SHIFT-u-a (CTRL-SHIFT-a on older GTK+ and Windows). This will appear as a little box with numbers on it.
    • +
    • You can create two UserCommands, with the same name, and then execute +the UserCommand. It will be executed in the same order as it's written +in the UserCommands GUI.
    • +
    + +

    15. How do I enable Emacs key bindings in XChat?

    +

    +The standard Emacs key bindings, such as CTRL-w, CTRL-u etc, are supported by +GTK+ 2.0, but normally disabled. If you run Gnome 2, you can re-enable them in +your Gnome menu under: Preferences -> Keyboard Shortcuts. +

    +

    +Note: This doesn't work in the latest Gnome (2.8 and newer). In this case, you need +to run "gconf-editor", and directly change the key /desktop/gnome/interface/gtk_key_theme +from "Default" to "Emacs". Then you need to re-start XChat. +

    +

    +If you don't use Gnome 2, but still want Emacs key bindings, it's beyond the +scope of this document. You might find some hints here: +GTK+ 2.4.0 release notes. +

    + +

    16. I get this error: "Unknown file type abc.yz. Maybe you need to install the Perl or Python plugin?"

    +

    +If you get this error when trying to load a Perl or Python script, it means +the plugin for running those scripts isn't loaded. +

    +
      +
    • The Perl, Python and TCL plugins come with XChat in the same archive.
    • +
    • During ./configure, it will check for Perl, Python and TCL libs and headers, you should check if it failed there.
    • +
    • The plugins directory can be found by issuing the shell command +
      xchat -p
      +
    • +
    • All *.so files are auto-loaded at startup (*.dll on Windows).
    • +
    • If you downloaded a binary package, maybe the packager decided to exclude the Perl or Python plugins.
    • +
    + +

    17. How do I play sound files on certain events?

    +

    +In the menus, go to: Settings > Preferences > Sound. +Select the event you want to make a sound on, then type in a +sound filename (or use the Browse button). +

    + +

    18. How do I auto-load scripts at startup?

    +

    +You just have to place the scripts into XChat's data directory. XChat +will auto-load scripts if they have the right extension .e.g If a filename +ends in .pl, it will be loaded as a Perl script. +This data directory is different on each platform: +

    +Windows +

    +It depends on your version of Windows and where it stores the +Application Data folder. On Windows XP it is usually: +

    +C:\Documents and Settings\username\Application Data\X-Chat 2\ +
    or simply: +
    +C:\Program Files\XChat\Plugins\ +


    +UNIX +

    +~/.xchat2/ +Where "~" represents your home directory i.e.: $HOME/.xchat2/ +

    + +

    19. How do I minimize X-Chat to the System Tray (Notification Area)?

    +

    +There are two plugins available that allow this: +
    Unix: SysTray Plugin +
    Windows: xTray +

    +

    +Note that XChat 2.8.0+ has its own tray feature, but you can disable it +in Settings > Preferences > Alerts and still run these plugins, if you prefer. +

    + +

    20. Can I select and copy text with the time stamps?

    +

    +Yes, but this requires at least XChat 2.6.3. Simply hold down SHIFT while marking +the text and the time stamps will be included. +

    + +

    21. What's the deal with opening URLs in XChat on Unix/Linux?

    +

    +Right-clicking on a URL and selecting Open Link in Browser will open the link +in your "preferred browser". In Gnome, your preferred browser can be changed in System > Preferences > More Preferences > Preferred Applications. +

    +Notes for 2.8.0 or newer: +

    +Everything should just work automatically without any changes from you. Here's how the current +logic works: +

    + +
      +
    • First, it tries to run xdg-open, which is a universal URL handler from freedesktop.org. Most modern Linux desktops will have this now, or in the near future.
    • +
    • If xdg-open doesn't exist, it will try to detect a running Gnome or KDE desktop. This is done via the environment variables GNOME_DESKTOP_SESSION_ID and KDE_FULL_SESSION.
    • +
    • If Gnome is detected, it will execute: gnome-open <url>
    • +
    • If KDE is detected, it will execute: kfmclient exec <url>
    • +
    + +

    +Notes for 2.6.8 or older: +

    +If you're not using Gnome, e.g KDE or some other desktop environment, you're fresh out of luck! +
    Note for Debian and Ubuntu: Integration with Gnome is broken on this distro! Please set +sensible-browser instead. We have no control over what the Debian packagers do, so complain +to them for this screw up. Example: +sudo update-alternatives --set x-www-browser /usr/bin/firefox + +

    +More details +

    +While holding down CTRL you can single left-click a URL to open it in your preferred browser. If you really want to change this to plain left-click you can type: /set gui_url_mod 0, provided you have XChat 2.6.6 or newer. +

    +You can also add more items to the right-click menu in XChat: Settings > Advanced > URL Handlers. +
    For example, you could add an entry like !firefox -a firefox -remote 'openURL(%s,new-tab)' +
    But this kind of messing around shouldn't be necessary, it just works automatically in Gnome, KDE and Windows with 2.8.0+! +

    + +

    22. Where are the log files saved to?

    +

    +UNIX +
    +
    ~/.xchat2/xchatlogs/ +
    where ~ represents your home directory. +
    +
    +
    Windows +
    +
    Windows XP/2000: C:\Documents and Settings\username\Application Data\X-Chat 2\xchatlogs +
    Windows Vista/7: C:\Users\username\AppData\Roaming\X-Chat 2\xchatlogs +

    + +

    23. How do I rotate log files every so often?

    +

    +Requires: 2.6.1+ +

    +By default settings, no rotation occurs, your log files will just keep getting larger. +

    +Go to Settings > Preferences > Logging and change the log filename to any one of these: +

    +
    + + + + + +
    SettingExample filename that would be written
    %Y-%m-%d/%n-%c.log 2006-12-30/FreeNode-#channel.log
    %n/%Y-%m-%d/%c.logFreeNode/2006-12-30/#channel.log
    %n/%c.logFreeNode/#channel.log (no rotation)
    +
    +

    +%Y, %m and %d represents the current year, month and day respectively. %n is the +network name, e.g. "FreeNode" or "UnderNet", and finally, %c is the channel. In these +examples, a new log filename and folder would be created after midnight. +

    +You can find more possibilities at http://xchat.org/docs/log/. +

    + +

    24. How do I enable graphical smilies (emoticons)?

    +

    +This feature is only available in the official Windows XChat release. You have to +TICK this feature during installation. If you didn't do this, you can simply run +the installer again, and TICK the "Eye Candy Theme" when given the option. +

    +If you want to use the graphical theme, but disable it just for smilies (i.e leave +it ON for things like Join/Part, Modes etc only), type this command and restart: +

    +/set text_emoticons off +

    + +

    3. Section Three: Contributions, Development and Bugs.

    + +

    1. Why does X-Chat leak so much memory?

    +

    +The simple answer is, it doesn't! There are some GTK+ pixmap based themes around that +leak a lot of memory. Please try using a different theme and see if that resolves the +problem. X-Chat itself only allocates about 40kb of memory through malloc()! +

    + +

    2. My copy of X-Chat crashes, what can I do?

    +

    +Firstly, make sure it's the latest stable version of X-Chat. Stable versions have +an EVEN middle number, e.g.: 2.8.0 or 2.8.1. Often late fixes are placed in this +directory: 2.8.x patches +

    + If you still experience crashes, you should consider running it through GDB. This + will help us find a fix quickly, and it's easy to do! See here. +

    + +

    3. Can I write a new language translation for X-Chat?

    +

    +You sure can, but I don't accept translations directly. They must be done through the +Translation Project. +All the relevant information should be on that page. +

    + + + diff --git a/xchat-2.8.8/install-sh b/xchat-2.8.8/install-sh new file mode 100755 index 0000000..6781b98 --- /dev/null +++ b/xchat-2.8.8/install-sh @@ -0,0 +1,520 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2009-04-28.21; # UTC + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. + +nl=' +' +IFS=" "" $nl" + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit=${DOITPROG-} +if test -z "$doit"; then + doit_exec=exec +else + doit_exec=$doit +fi + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +posix_glob='?' +initialize_posix_glob=' + test "$posix_glob" != "?" || { + if (set -f) 2>/dev/null; then + posix_glob= + else + posix_glob=: + fi + } +' + +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +chgrpcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog +rmcmd="$rmprog -f" +stripcmd= + +src= +dst= +dir_arg= +dst_arg= + +copy_on_change=false +no_target_directory= + +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -C install only if different (preserve the last data modification time) + -d create directories instead of installing files. + -g GROUP $chgrpprog installed files to GROUP. + -m MODE $chmodprog installed files to MODE. + -o USER $chownprog installed files to USER. + -s $stripprog installed files. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG +" + +while test $# -ne 0; do + case $1 in + -c) ;; + + -C) copy_on_change=true;; + + -d) dir_arg=true;; + + -g) chgrpcmd="$chgrpprog $2" + shift;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + case $mode in + *' '* | *' '* | *' +'* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; + + -o) chowncmd="$chownprog $2" + shift;; + + -s) stripcmd=$stripprog;; + + -t) dst_arg=$2 + shift;; + + -T) no_target_directory=true;; + + --version) echo "$0 $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call `install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + trap '(exit $?); exit' 1 2 13 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names starting with `-'. + case $src in + -*) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + + dst=$dst_arg + # Protect names starting with `-'. + case $dst in + -*) dst=./$dst;; + esac + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test -n "$no_target_directory"; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dst=$dstdir/`basename "$src"` + dstdir_status=0 + else + # Prefer dirname, but fall back on a substitute if dirname fails. + dstdir=` + (dirname "$dst") 2>/dev/null || + expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$dst" : 'X\(//\)[^/]' \| \ + X"$dst" : 'X\(//\)$' \| \ + X"$dst" : 'X\(/\)' \| . 2>/dev/null || + echo X"$dst" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q' + ` + + test -d "$dstdir" + dstdir_status=$? + fi + fi + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + + if (umask $mkdir_umask && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writeable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + ls_ld_tmpdir=`ls -ld "$tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/d" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null + fi + trap '' 0;; + esac;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # The umask is ridiculous, or mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + -*) prefix='./';; + *) prefix='';; + esac + + eval "$initialize_posix_glob" + + oIFS=$IFS + IFS=/ + $posix_glob set -f + set fnord $dstdir + shift + $posix_glob set +f + IFS=$oIFS + + prefixes= + + for d + do + test -z "$d" && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + + eval "$initialize_posix_glob" && + $posix_glob set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + $posix_glob set +f && + + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || + + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/xchat-2.8.8/intl/ChangeLog b/xchat-2.8.8/intl/ChangeLog new file mode 100644 index 0000000..3ec9081 --- /dev/null +++ b/xchat-2.8.8/intl/ChangeLog @@ -0,0 +1,4 @@ +2007-11-07 GNU + + * Version 0.17 released. + diff --git a/xchat-2.8.8/intl/Makefile b/xchat-2.8.8/intl/Makefile new file mode 100644 index 0000000..7a0d577 --- /dev/null +++ b/xchat-2.8.8/intl/Makefile @@ -0,0 +1,587 @@ +# Makefile for directory with message catalog handling library of GNU gettext +# Copyright (C) 1995-1998, 2000-2007 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU Library General Public License as published +# by the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program 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 +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +# USA. + +PACKAGE = xchat +VERSION = 2.8.8 + +SHELL = /bin/sh + +srcdir = . +top_srcdir = .. +top_builddir = .. + +# The VPATH variables allows builds with $builddir != $srcdir, assuming a +# 'make' program that supports VPATH (such as GNU make). This line is removed +# by autoconf automatically when "$(srcdir)" = ".". +# In this directory, the VPATH handling is particular: +# 1. If INTL_LIBTOOL_SUFFIX_PREFIX is 'l' (indicating a build with libtool), +# the .c -> .lo rules carefully use $(srcdir), so that VPATH can be omitted. +# 2. If PACKAGE = gettext-tools, VPATH _must_ be omitted, because otherwise +# 'make' does the wrong thing if GNU gettext was configured with +# "./configure --srcdir=`pwd`", namely it gets confused by the .lo and .la +# files it finds in srcdir = ../../gettext-runtime/intl. + + +prefix = /usr/local +exec_prefix = /usr/local +transform = s,x,x, +libdir = ${exec_prefix}/lib +includedir = ${prefix}/include +datarootdir = ${prefix}/share +datadir = ${datarootdir} +localedir = $(datadir)/locale +gettextsrcdir = $(datadir)/gettext/intl +aliaspath = $(localedir) +subdir = intl + +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 + +# We use $(mkdir_p). +# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as +# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions, +# ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/install-sh does not start with $(SHELL), so we add it. +# In automake >= 1.10, /bin/mkdir -p is derived from ${MKDIR_P}, which is defined +# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake +# versions, $(mkinstalldirs) and $(install_sh) are unused. +mkinstalldirs = $(SHELL) ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/install-sh -d +install_sh = $(SHELL) ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/install-sh +MKDIR_P = /bin/mkdir -p +mkdir_p = /bin/mkdir -p + +l = + +AR = ar +CC = gcc +LIBTOOL = $(SHELL) $(top_builddir)/libtool +RANLIB = ranlib +YACC = bison -y -d +YFLAGS = --name-prefix=__gettext +WINDRES = + +# -DBUILDING_LIBINTL: Change expansion of LIBINTL_DLL_EXPORTED macro. +# -DBUILDING_DLL: Change expansion of RELOCATABLE_DLL_EXPORTED macro. +DEFS = -DLOCALEDIR=\"$(localedir)\" -DLOCALE_ALIAS_PATH=\"$(aliaspath)\" \ +-DLIBDIR=\"$(libdir)\" -DBUILDING_LIBINTL -DBUILDING_DLL -DIN_LIBINTL \ +-DENABLE_RELOCATABLE=1 -DIN_LIBRARY -DINSTALLDIR=\"$(libdir)\" -DNO_XMALLOC \ +-Dset_relocation_prefix=libintl_set_relocation_prefix \ +-Drelocate=libintl_relocate \ +-DDEPENDS_ON_LIBICONV=1 -DHAVE_CONFIG_H +CPPFLAGS = +CFLAGS = -g -O2 -Wall -pipe -Wno-pointer-sign -funsigned-char -fvisibility=hidden +LDFLAGS = -lgmodule-2.0 $(LDFLAGS_no) +LDFLAGS_yes = -Wl,--export-all-symbols +LDFLAGS_no = +LIBS = -lX11 -lssl -lcrypto -ldl -Wl,--export-dynamic -pthread -lglib-2.0 + +COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) + +HEADERS = \ + gmo.h \ + gettextP.h \ + hash-string.h \ + loadinfo.h \ + plural-exp.h \ + eval-plural.h \ + localcharset.h \ + lock.h \ + relocatable.h \ + tsearch.h tsearch.c \ + xsize.h \ + printf-args.h printf-args.c \ + printf-parse.h wprintf-parse.h printf-parse.c \ + vasnprintf.h vasnwprintf.h vasnprintf.c \ + os2compat.h \ + libgnuintl.h.in +SOURCES = \ + bindtextdom.c \ + dcgettext.c \ + dgettext.c \ + gettext.c \ + finddomain.c \ + hash-string.c \ + loadmsgcat.c \ + localealias.c \ + textdomain.c \ + l10nflist.c \ + explodename.c \ + dcigettext.c \ + dcngettext.c \ + dngettext.c \ + ngettext.c \ + plural.y \ + plural-exp.c \ + localcharset.c \ + lock.c \ + relocatable.c \ + langprefs.c \ + localename.c \ + log.c \ + printf.c \ + version.c \ + osdep.c \ + os2compat.c \ + intl-exports.c \ + intl-compat.c +OBJECTS = \ + bindtextdom.$lo \ + dcgettext.$lo \ + dgettext.$lo \ + gettext.$lo \ + finddomain.$lo \ + hash-string.$lo \ + loadmsgcat.$lo \ + localealias.$lo \ + textdomain.$lo \ + l10nflist.$lo \ + explodename.$lo \ + dcigettext.$lo \ + dcngettext.$lo \ + dngettext.$lo \ + ngettext.$lo \ + plural.$lo \ + plural-exp.$lo \ + localcharset.$lo \ + lock.$lo \ + relocatable.$lo \ + langprefs.$lo \ + localename.$lo \ + log.$lo \ + printf.$lo \ + version.$lo \ + osdep.$lo \ + intl-compat.$lo +OBJECTS_RES_yes = libintl.res +OBJECTS_RES_no = +DISTFILES.common = Makefile.in \ +config.charset locale.alias ref-add.sin ref-del.sin export.h libintl.rc \ +$(HEADERS) $(SOURCES) +DISTFILES.generated = plural.c +DISTFILES.normal = VERSION +DISTFILES.gettext = COPYING.LIB-2.0 COPYING.LIB-2.1 libintl.glibc README.woe32 +DISTFILES.obsolete = xopen-msg.sed linux-msg.sed po2tbl.sed.in cat-compat.c \ +COPYING.LIB-2 gettext.h libgettext.h plural-eval.c libgnuintl.h \ +libgnuintl.h_vms Makefile.vms libgnuintl.h.msvc-static \ +libgnuintl.h.msvc-shared Makefile.msvc + +all: all-no +all-yes: libintl.$la libintl.h charset.alias ref-add.sed ref-del.sed +all-no: all-no-no +all-no-yes: libgnuintl.$la +all-no-no: + +libintl.a libgnuintl.a: $(OBJECTS) + rm -f $@ + $(AR) cru $@ $(OBJECTS) + $(RANLIB) $@ + +libintl.la libgnuintl.la: $(OBJECTS) $(OBJECTS_RES_no) + $(LIBTOOL) --mode=link \ + $(CC) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) $(LDFLAGS) -o $@ \ + $(OBJECTS) -liconv $(LIBS) -lc \ + $(OBJECTS_RES_no) \ + -version-info $(LTV_CURRENT):$(LTV_REVISION):$(LTV_AGE) \ + -rpath $(libdir) \ + -no-undefined + +# Libtool's library version information for libintl. +# Before making a gettext release, the gettext maintainer must change this +# according to the libtool documentation, section "Library interface versions". +# Maintainers of other packages that include the intl directory must *not* +# change these values. +LTV_CURRENT=8 +LTV_REVISION=2 +LTV_AGE=0 + +.SUFFIXES: +.SUFFIXES: .c .y .o .lo .sin .sed + +.c.o: + $(COMPILE) $< + +.y.c: + $(YACC) $(YFLAGS) --output $@ $< + rm -f $*.h + +bindtextdom.lo: $(srcdir)/bindtextdom.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/bindtextdom.c +dcgettext.lo: $(srcdir)/dcgettext.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcgettext.c +dgettext.lo: $(srcdir)/dgettext.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dgettext.c +gettext.lo: $(srcdir)/gettext.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/gettext.c +finddomain.lo: $(srcdir)/finddomain.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/finddomain.c +hash-string.lo: $(srcdir)/hash-string.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/hash-string.c +loadmsgcat.lo: $(srcdir)/loadmsgcat.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/loadmsgcat.c +localealias.lo: $(srcdir)/localealias.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localealias.c +textdomain.lo: $(srcdir)/textdomain.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/textdomain.c +l10nflist.lo: $(srcdir)/l10nflist.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/l10nflist.c +explodename.lo: $(srcdir)/explodename.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/explodename.c +dcigettext.lo: $(srcdir)/dcigettext.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcigettext.c +dcngettext.lo: $(srcdir)/dcngettext.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcngettext.c +dngettext.lo: $(srcdir)/dngettext.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dngettext.c +ngettext.lo: $(srcdir)/ngettext.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/ngettext.c +plural.lo: $(srcdir)/plural.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/plural.c +plural-exp.lo: $(srcdir)/plural-exp.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/plural-exp.c +localcharset.lo: $(srcdir)/localcharset.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localcharset.c +lock.lo: $(srcdir)/lock.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/lock.c +relocatable.lo: $(srcdir)/relocatable.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/relocatable.c +langprefs.lo: $(srcdir)/langprefs.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/langprefs.c +localename.lo: $(srcdir)/localename.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localename.c +log.lo: $(srcdir)/log.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/log.c +printf.lo: $(srcdir)/printf.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/printf.c +version.lo: $(srcdir)/version.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/version.c +osdep.lo: $(srcdir)/osdep.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/osdep.c +intl-compat.lo: $(srcdir)/intl-compat.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/intl-compat.c + +# This rule is executed only on Woe32 systems. +# The following sed expressions come from the windres-options script. They are +# inlined here, so that they can be written in a Makefile without requiring a +# temporary file. They must contain literal newlines rather than semicolons, +# so that they work with the sed-3.02 that is shipped with MSYS. We can use +# GNU bash's $'\n' syntax to obtain such a newline. +libintl.res: $(srcdir)/libintl.rc + nl=$$'\n'; \ + sed_extract_major='/^[0-9]/{'$${nl}'s/^\([0-9]*\).*/\1/p'$${nl}q$${nl}'}'$${nl}'c\'$${nl}0$${nl}q; \ + sed_extract_minor='/^[0-9][0-9]*[.][0-9]/{'$${nl}'s/^[0-9]*[.]\([0-9]*\).*/\1/p'$${nl}q$${nl}'}'$${nl}'c\'$${nl}0$${nl}q; \ + sed_extract_subminor='/^[0-9][0-9]*[.][0-9][0-9]*[.][0-9]/{'$${nl}'s/^[0-9]*[.][0-9]*[.]\([0-9]*\).*/\1/p'$${nl}q$${nl}'}'$${nl}'c\'$${nl}0$${nl}q; \ + $(WINDRES) \ + "-DPACKAGE_VERSION_STRING=\\\"$(VERSION)\\\"" \ + "-DPACKAGE_VERSION_MAJOR="`echo '$(VERSION)' | sed -n -e "$$sed_extract_major"` \ + "-DPACKAGE_VERSION_MINOR="`echo '$(VERSION)' | sed -n -e "$$sed_extract_minor"` \ + "-DPACKAGE_VERSION_SUBMINOR="`echo '$(VERSION)' | sed -n -e "$$sed_extract_subminor"` \ + -i $(srcdir)/libintl.rc -o libintl.res --output-format=coff + +ref-add.sed: $(srcdir)/ref-add.sin + sed -e '/^#/d' -e 's/@''PACKAGE''@/xchat/g' $(srcdir)/ref-add.sin > t-ref-add.sed + mv t-ref-add.sed ref-add.sed +ref-del.sed: $(srcdir)/ref-del.sin + sed -e '/^#/d' -e 's/@''PACKAGE''@/xchat/g' $(srcdir)/ref-del.sin > t-ref-del.sed + mv t-ref-del.sed ref-del.sed + +INCLUDES = -I. -I$(srcdir) -I.. + +libgnuintl.h: $(srcdir)/libgnuintl.h.in + sed -e '/IN_LIBGLOCALE/d' \ + -e 's,@''HAVE_POSIX_PRINTF''@,1,g' \ + -e 's,@''HAVE_ASPRINTF''@,1,g' \ + -e 's,@''HAVE_SNPRINTF''@,1,g' \ + -e 's,@''HAVE_WPRINTF''@,0,g' \ + < $(srcdir)/libgnuintl.h.in \ + | if test 'no' = yes; then \ + sed -e 's/extern \([^()]*\);/extern __declspec (dllimport) \1;/'; \ + else \ + cat; \ + fi \ + | sed -e 's/extern \([^"]\)/extern LIBINTL_DLL_EXPORTED \1/' \ + -e "/#define _LIBINTL_H/r $(srcdir)/export.h" \ + | sed -e 's,@''HAVE_VISIBILITY''@,1,g' \ + > libgnuintl.h + +libintl.h: $(srcdir)/libgnuintl.h.in + sed -e '/IN_LIBGLOCALE/d' \ + -e 's,@''HAVE_POSIX_PRINTF''@,1,g' \ + -e 's,@''HAVE_ASPRINTF''@,1,g' \ + -e 's,@''HAVE_SNPRINTF''@,1,g' \ + -e 's,@''HAVE_WPRINTF''@,0,g' \ + < $(srcdir)/libgnuintl.h.in > libintl.h + +charset.alias: $(srcdir)/config.charset + $(SHELL) $(srcdir)/config.charset 'x86_64-unknown-linux-gnu' > t-$@ + mv t-$@ $@ + +check: all + +# We must not install the libintl.h/libintl.a files if we are on a +# system which has the GNU gettext() function in its C library or in a +# separate library. +# If you want to use the one which comes with this version of the +# package, you have to use `configure --with-included-gettext'. +install: install-exec install-data +install-exec: all + if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \ + && test 'no' = yes; then \ + $(mkdir_p) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \ + $(INSTALL_DATA) libintl.h $(DESTDIR)$(includedir)/libintl.h; \ + $(LIBTOOL) --mode=install \ + $(INSTALL_DATA) libintl.$la $(DESTDIR)$(libdir)/libintl.$la; \ + if test "@RELOCATABLE@" = yes; then \ + dependencies=`sed -n -e 's,^dependency_libs=\(.*\),\1,p' < $(DESTDIR)$(libdir)/libintl.la | sed -e "s,^',," -e "s,'\$$,,"`; \ + if test -n "$$dependencies"; then \ + rm -f $(DESTDIR)$(libdir)/libintl.la; \ + fi; \ + fi; \ + else \ + : ; \ + fi + if test "$(PACKAGE)" = "gettext-tools" \ + && test 'no' = no \ + && test yes != no; then \ + $(mkdir_p) $(DESTDIR)$(libdir); \ + $(LIBTOOL) --mode=install \ + $(INSTALL_DATA) libgnuintl.$la $(DESTDIR)$(libdir)/libgnuintl.$la; \ + rm -f $(DESTDIR)$(libdir)/preloadable_libintl.so; \ + $(INSTALL_DATA) $(DESTDIR)$(libdir)/libgnuintl.so $(DESTDIR)$(libdir)/preloadable_libintl.so; \ + $(LIBTOOL) --mode=uninstall \ + rm -f $(DESTDIR)$(libdir)/libgnuintl.$la; \ + else \ + : ; \ + fi + if test 'no' = yes; then \ + test yes != no || $(mkdir_p) $(DESTDIR)$(libdir); \ + temp=$(DESTDIR)$(libdir)/t-charset.alias; \ + dest=$(DESTDIR)$(libdir)/charset.alias; \ + if test -f $(DESTDIR)$(libdir)/charset.alias; then \ + orig=$(DESTDIR)$(libdir)/charset.alias; \ + sed -f ref-add.sed $$orig > $$temp; \ + $(INSTALL_DATA) $$temp $$dest; \ + rm -f $$temp; \ + else \ + if test yes = no; then \ + orig=charset.alias; \ + sed -f ref-add.sed $$orig > $$temp; \ + $(INSTALL_DATA) $$temp $$dest; \ + rm -f $$temp; \ + fi; \ + fi; \ + $(mkdir_p) $(DESTDIR)$(localedir); \ + test -f $(DESTDIR)$(localedir)/locale.alias \ + && orig=$(DESTDIR)$(localedir)/locale.alias \ + || orig=$(srcdir)/locale.alias; \ + temp=$(DESTDIR)$(localedir)/t-locale.alias; \ + dest=$(DESTDIR)$(localedir)/locale.alias; \ + sed -f ref-add.sed $$orig > $$temp; \ + $(INSTALL_DATA) $$temp $$dest; \ + rm -f $$temp; \ + else \ + : ; \ + fi +install-data: all + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + $(INSTALL_DATA) VERSION $(DESTDIR)$(gettextsrcdir)/VERSION; \ + $(INSTALL_DATA) ChangeLog.inst $(DESTDIR)$(gettextsrcdir)/ChangeLog; \ + dists="COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common)"; \ + for file in $$dists; do \ + $(INSTALL_DATA) $(srcdir)/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + chmod a+x $(DESTDIR)$(gettextsrcdir)/config.charset; \ + dists="$(DISTFILES.generated)"; \ + for file in $$dists; do \ + if test -f $$file; then dir=.; else dir=$(srcdir); fi; \ + $(INSTALL_DATA) $$dir/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + dists="$(DISTFILES.obsolete)"; \ + for file in $$dists; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi + +install-strip: install + +install-dvi install-html install-info install-ps install-pdf: + +installdirs: + if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \ + && test 'no' = yes; then \ + $(mkdir_p) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \ + else \ + : ; \ + fi + if test "$(PACKAGE)" = "gettext-tools" \ + && test 'no' = no \ + && test yes != no; then \ + $(mkdir_p) $(DESTDIR)$(libdir); \ + else \ + : ; \ + fi + if test 'no' = yes; then \ + test yes != no || $(mkdir_p) $(DESTDIR)$(libdir); \ + $(mkdir_p) $(DESTDIR)$(localedir); \ + else \ + : ; \ + fi + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + else \ + : ; \ + fi + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: + if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \ + && test 'no' = yes; then \ + rm -f $(DESTDIR)$(includedir)/libintl.h; \ + $(LIBTOOL) --mode=uninstall \ + rm -f $(DESTDIR)$(libdir)/libintl.$la; \ + else \ + : ; \ + fi + if test "$(PACKAGE)" = "gettext-tools" \ + && test 'no' = no \ + && test yes != no; then \ + rm -f $(DESTDIR)$(libdir)/preloadable_libintl.so; \ + else \ + : ; \ + fi + if test 'no' = yes; then \ + if test -f $(DESTDIR)$(libdir)/charset.alias; then \ + temp=$(DESTDIR)$(libdir)/t-charset.alias; \ + dest=$(DESTDIR)$(libdir)/charset.alias; \ + sed -f ref-del.sed $$dest > $$temp; \ + if grep '^# Packages using this file: $$' $$temp > /dev/null; then \ + rm -f $$dest; \ + else \ + $(INSTALL_DATA) $$temp $$dest; \ + fi; \ + rm -f $$temp; \ + fi; \ + if test -f $(DESTDIR)$(localedir)/locale.alias; then \ + temp=$(DESTDIR)$(localedir)/t-locale.alias; \ + dest=$(DESTDIR)$(localedir)/locale.alias; \ + sed -f ref-del.sed $$dest > $$temp; \ + if grep '^# Packages using this file: $$' $$temp > /dev/null; then \ + rm -f $$dest; \ + else \ + $(INSTALL_DATA) $$temp $$dest; \ + fi; \ + rm -f $$temp; \ + fi; \ + else \ + : ; \ + fi + if test "$(PACKAGE)" = "gettext-tools"; then \ + for file in VERSION ChangeLog COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common) $(DISTFILES.generated); do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi + +info dvi ps pdf html: + +$(OBJECTS): ../config.h libgnuintl.h +bindtextdom.$lo dcgettext.$lo dcigettext.$lo dcngettext.$lo dgettext.$lo dngettext.$lo finddomain.$lo gettext.$lo intl-compat.$lo loadmsgcat.$lo localealias.$lo ngettext.$lo textdomain.$lo: $(srcdir)/gettextP.h $(srcdir)/gmo.h $(srcdir)/loadinfo.h +hash-string.$lo dcigettext.$lo loadmsgcat.$lo: $(srcdir)/hash-string.h +explodename.$lo l10nflist.$lo: $(srcdir)/loadinfo.h +dcigettext.$lo loadmsgcat.$lo plural.$lo plural-exp.$lo: $(srcdir)/plural-exp.h +dcigettext.$lo: $(srcdir)/eval-plural.h +localcharset.$lo: $(srcdir)/localcharset.h +bindtextdom.$lo dcigettext.$lo finddomain.$lo loadmsgcat.$lo localealias.$lo lock.$lo log.$lo: $(srcdir)/lock.h +localealias.$lo localcharset.$lo relocatable.$lo: $(srcdir)/relocatable.h +printf.$lo: $(srcdir)/printf-args.h $(srcdir)/printf-args.c $(srcdir)/printf-parse.h $(srcdir)/wprintf-parse.h $(srcdir)/xsize.h $(srcdir)/printf-parse.c $(srcdir)/vasnprintf.h $(srcdir)/vasnwprintf.h $(srcdir)/vasnprintf.c + +# A bison-2.1 generated plural.c includes if ENABLE_NLS. +PLURAL_DEPS_yes = libintl.h +PLURAL_DEPS_no = +plural.$lo: $(PLURAL_DEPS_no) + +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) + here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES) + +ctags: CTAGS + +CTAGS: $(HEADERS) $(SOURCES) + here=`pwd`; cd $(srcdir) && ctags -o $$here/CTAGS $(HEADERS) $(SOURCES) + +id: ID + +ID: $(HEADERS) $(SOURCES) + here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES) + + +mostlyclean: + rm -f *.a *.la *.o *.obj *.lo libintl.res core core.* + rm -f libgnuintl.h libintl.h charset.alias ref-add.sed ref-del.sed + rm -f -r .libs _libs + +clean: mostlyclean + +distclean: clean + rm -f Makefile ID TAGS + if test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; then \ + rm -f ChangeLog.inst $(DISTFILES.normal); \ + else \ + : ; \ + fi + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + + +# GNU gettext needs not contain the file `VERSION' but contains some +# other files which should not be distributed in other packages. +distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: Makefile + if test "$(PACKAGE)" = "gettext-tools"; then \ + : ; \ + else \ + if test "$(PACKAGE)" = "gettext-runtime"; then \ + additional="$(DISTFILES.gettext)"; \ + else \ + additional="$(DISTFILES.normal)"; \ + fi; \ + $(MAKE) $(DISTFILES.common) $(DISTFILES.generated) $$additional; \ + for file in ChangeLog $(DISTFILES.common) $(DISTFILES.generated) $$additional; do \ + if test -f $$file; then dir=.; else dir=$(srcdir); fi; \ + cp -p $$dir/$$file $(distdir) || test $$file = Makefile.in || exit 1; \ + done; \ + fi + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status +# This would be more efficient, but doesn't work any more with autoconf-2.57, +# when AC_CONFIG_FILES([intl/Makefile:somedir/Makefile.in]) is used. +# cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/xchat-2.8.8/intl/Makefile.in b/xchat-2.8.8/intl/Makefile.in new file mode 100644 index 0000000..cfed085 --- /dev/null +++ b/xchat-2.8.8/intl/Makefile.in @@ -0,0 +1,587 @@ +# Makefile for directory with message catalog handling library of GNU gettext +# Copyright (C) 1995-1998, 2000-2007 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU Library General Public License as published +# by the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program 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 +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +# USA. + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ + +SHELL = /bin/sh + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +top_builddir = .. + +# The VPATH variables allows builds with $builddir != $srcdir, assuming a +# 'make' program that supports VPATH (such as GNU make). This line is removed +# by autoconf automatically when "$(srcdir)" = ".". +# In this directory, the VPATH handling is particular: +# 1. If INTL_LIBTOOL_SUFFIX_PREFIX is 'l' (indicating a build with libtool), +# the .c -> .lo rules carefully use $(srcdir), so that VPATH can be omitted. +# 2. If PACKAGE = gettext-tools, VPATH _must_ be omitted, because otherwise +# 'make' does the wrong thing if GNU gettext was configured with +# "./configure --srcdir=`pwd`", namely it gets confused by the .lo and .la +# files it finds in srcdir = ../../gettext-runtime/intl. +VPATH = $(srcdir) + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +transform = @program_transform_name@ +libdir = @libdir@ +includedir = @includedir@ +datarootdir = @datarootdir@ +datadir = @datadir@ +localedir = $(datadir)/locale +gettextsrcdir = $(datadir)/gettext/intl +aliaspath = $(localedir) +subdir = intl + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ + +# We use $(mkdir_p). +# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as +# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions, +# @install_sh@ does not start with $(SHELL), so we add it. +# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined +# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake +# versions, $(mkinstalldirs) and $(install_sh) are unused. +mkinstalldirs = $(SHELL) @install_sh@ -d +install_sh = $(SHELL) @install_sh@ +MKDIR_P = @MKDIR_P@ +mkdir_p = @mkdir_p@ + +l = @INTL_LIBTOOL_SUFFIX_PREFIX@ + +AR = ar +CC = @CC@ +LIBTOOL = @LIBTOOL@ +RANLIB = @RANLIB@ +YACC = @INTLBISON@ -y -d +YFLAGS = --name-prefix=__gettext +WINDRES = @WINDRES@ + +# -DBUILDING_LIBINTL: Change expansion of LIBINTL_DLL_EXPORTED macro. +# -DBUILDING_DLL: Change expansion of RELOCATABLE_DLL_EXPORTED macro. +DEFS = -DLOCALEDIR=\"$(localedir)\" -DLOCALE_ALIAS_PATH=\"$(aliaspath)\" \ +-DLIBDIR=\"$(libdir)\" -DBUILDING_LIBINTL -DBUILDING_DLL -DIN_LIBINTL \ +-DENABLE_RELOCATABLE=1 -DIN_LIBRARY -DINSTALLDIR=\"$(libdir)\" -DNO_XMALLOC \ +-Dset_relocation_prefix=libintl_set_relocation_prefix \ +-Drelocate=libintl_relocate \ +-DDEPENDS_ON_LIBICONV=1 @DEFS@ +CPPFLAGS = @CPPFLAGS@ +CFLAGS = @CFLAGS@ @CFLAG_VISIBILITY@ +LDFLAGS = @LDFLAGS@ $(LDFLAGS_@WOE32DLL@) +LDFLAGS_yes = -Wl,--export-all-symbols +LDFLAGS_no = +LIBS = @LIBS@ + +COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) + +HEADERS = \ + gmo.h \ + gettextP.h \ + hash-string.h \ + loadinfo.h \ + plural-exp.h \ + eval-plural.h \ + localcharset.h \ + lock.h \ + relocatable.h \ + tsearch.h tsearch.c \ + xsize.h \ + printf-args.h printf-args.c \ + printf-parse.h wprintf-parse.h printf-parse.c \ + vasnprintf.h vasnwprintf.h vasnprintf.c \ + os2compat.h \ + libgnuintl.h.in +SOURCES = \ + bindtextdom.c \ + dcgettext.c \ + dgettext.c \ + gettext.c \ + finddomain.c \ + hash-string.c \ + loadmsgcat.c \ + localealias.c \ + textdomain.c \ + l10nflist.c \ + explodename.c \ + dcigettext.c \ + dcngettext.c \ + dngettext.c \ + ngettext.c \ + plural.y \ + plural-exp.c \ + localcharset.c \ + lock.c \ + relocatable.c \ + langprefs.c \ + localename.c \ + log.c \ + printf.c \ + version.c \ + osdep.c \ + os2compat.c \ + intl-exports.c \ + intl-compat.c +OBJECTS = \ + bindtextdom.$lo \ + dcgettext.$lo \ + dgettext.$lo \ + gettext.$lo \ + finddomain.$lo \ + hash-string.$lo \ + loadmsgcat.$lo \ + localealias.$lo \ + textdomain.$lo \ + l10nflist.$lo \ + explodename.$lo \ + dcigettext.$lo \ + dcngettext.$lo \ + dngettext.$lo \ + ngettext.$lo \ + plural.$lo \ + plural-exp.$lo \ + localcharset.$lo \ + lock.$lo \ + relocatable.$lo \ + langprefs.$lo \ + localename.$lo \ + log.$lo \ + printf.$lo \ + version.$lo \ + osdep.$lo \ + intl-compat.$lo +OBJECTS_RES_yes = libintl.res +OBJECTS_RES_no = +DISTFILES.common = Makefile.in \ +config.charset locale.alias ref-add.sin ref-del.sin export.h libintl.rc \ +$(HEADERS) $(SOURCES) +DISTFILES.generated = plural.c +DISTFILES.normal = VERSION +DISTFILES.gettext = COPYING.LIB-2.0 COPYING.LIB-2.1 libintl.glibc README.woe32 +DISTFILES.obsolete = xopen-msg.sed linux-msg.sed po2tbl.sed.in cat-compat.c \ +COPYING.LIB-2 gettext.h libgettext.h plural-eval.c libgnuintl.h \ +libgnuintl.h_vms Makefile.vms libgnuintl.h.msvc-static \ +libgnuintl.h.msvc-shared Makefile.msvc + +all: all-@USE_INCLUDED_LIBINTL@ +all-yes: libintl.$la libintl.h charset.alias ref-add.sed ref-del.sed +all-no: all-no-@BUILD_INCLUDED_LIBINTL@ +all-no-yes: libgnuintl.$la +all-no-no: + +libintl.a libgnuintl.a: $(OBJECTS) + rm -f $@ + $(AR) cru $@ $(OBJECTS) + $(RANLIB) $@ + +libintl.la libgnuintl.la: $(OBJECTS) $(OBJECTS_RES_@WOE32@) + $(LIBTOOL) --mode=link \ + $(CC) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) $(LDFLAGS) -o $@ \ + $(OBJECTS) @LTLIBICONV@ @INTL_MACOSX_LIBS@ $(LIBS) @LTLIBTHREAD@ @LTLIBC@ \ + $(OBJECTS_RES_@WOE32@) \ + -version-info $(LTV_CURRENT):$(LTV_REVISION):$(LTV_AGE) \ + -rpath $(libdir) \ + -no-undefined + +# Libtool's library version information for libintl. +# Before making a gettext release, the gettext maintainer must change this +# according to the libtool documentation, section "Library interface versions". +# Maintainers of other packages that include the intl directory must *not* +# change these values. +LTV_CURRENT=8 +LTV_REVISION=2 +LTV_AGE=0 + +.SUFFIXES: +.SUFFIXES: .c .y .o .lo .sin .sed + +.c.o: + $(COMPILE) $< + +.y.c: + $(YACC) $(YFLAGS) --output $@ $< + rm -f $*.h + +bindtextdom.lo: $(srcdir)/bindtextdom.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/bindtextdom.c +dcgettext.lo: $(srcdir)/dcgettext.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcgettext.c +dgettext.lo: $(srcdir)/dgettext.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dgettext.c +gettext.lo: $(srcdir)/gettext.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/gettext.c +finddomain.lo: $(srcdir)/finddomain.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/finddomain.c +hash-string.lo: $(srcdir)/hash-string.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/hash-string.c +loadmsgcat.lo: $(srcdir)/loadmsgcat.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/loadmsgcat.c +localealias.lo: $(srcdir)/localealias.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localealias.c +textdomain.lo: $(srcdir)/textdomain.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/textdomain.c +l10nflist.lo: $(srcdir)/l10nflist.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/l10nflist.c +explodename.lo: $(srcdir)/explodename.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/explodename.c +dcigettext.lo: $(srcdir)/dcigettext.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcigettext.c +dcngettext.lo: $(srcdir)/dcngettext.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcngettext.c +dngettext.lo: $(srcdir)/dngettext.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dngettext.c +ngettext.lo: $(srcdir)/ngettext.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/ngettext.c +plural.lo: $(srcdir)/plural.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/plural.c +plural-exp.lo: $(srcdir)/plural-exp.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/plural-exp.c +localcharset.lo: $(srcdir)/localcharset.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localcharset.c +lock.lo: $(srcdir)/lock.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/lock.c +relocatable.lo: $(srcdir)/relocatable.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/relocatable.c +langprefs.lo: $(srcdir)/langprefs.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/langprefs.c +localename.lo: $(srcdir)/localename.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localename.c +log.lo: $(srcdir)/log.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/log.c +printf.lo: $(srcdir)/printf.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/printf.c +version.lo: $(srcdir)/version.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/version.c +osdep.lo: $(srcdir)/osdep.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/osdep.c +intl-compat.lo: $(srcdir)/intl-compat.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/intl-compat.c + +# This rule is executed only on Woe32 systems. +# The following sed expressions come from the windres-options script. They are +# inlined here, so that they can be written in a Makefile without requiring a +# temporary file. They must contain literal newlines rather than semicolons, +# so that they work with the sed-3.02 that is shipped with MSYS. We can use +# GNU bash's $'\n' syntax to obtain such a newline. +libintl.res: $(srcdir)/libintl.rc + nl=$$'\n'; \ + sed_extract_major='/^[0-9]/{'$${nl}'s/^\([0-9]*\).*/\1/p'$${nl}q$${nl}'}'$${nl}'c\'$${nl}0$${nl}q; \ + sed_extract_minor='/^[0-9][0-9]*[.][0-9]/{'$${nl}'s/^[0-9]*[.]\([0-9]*\).*/\1/p'$${nl}q$${nl}'}'$${nl}'c\'$${nl}0$${nl}q; \ + sed_extract_subminor='/^[0-9][0-9]*[.][0-9][0-9]*[.][0-9]/{'$${nl}'s/^[0-9]*[.][0-9]*[.]\([0-9]*\).*/\1/p'$${nl}q$${nl}'}'$${nl}'c\'$${nl}0$${nl}q; \ + $(WINDRES) \ + "-DPACKAGE_VERSION_STRING=\\\"$(VERSION)\\\"" \ + "-DPACKAGE_VERSION_MAJOR="`echo '$(VERSION)' | sed -n -e "$$sed_extract_major"` \ + "-DPACKAGE_VERSION_MINOR="`echo '$(VERSION)' | sed -n -e "$$sed_extract_minor"` \ + "-DPACKAGE_VERSION_SUBMINOR="`echo '$(VERSION)' | sed -n -e "$$sed_extract_subminor"` \ + -i $(srcdir)/libintl.rc -o libintl.res --output-format=coff + +ref-add.sed: $(srcdir)/ref-add.sin + sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $(srcdir)/ref-add.sin > t-ref-add.sed + mv t-ref-add.sed ref-add.sed +ref-del.sed: $(srcdir)/ref-del.sin + sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $(srcdir)/ref-del.sin > t-ref-del.sed + mv t-ref-del.sed ref-del.sed + +INCLUDES = -I. -I$(srcdir) -I.. + +libgnuintl.h: $(srcdir)/libgnuintl.h.in + sed -e '/IN_LIBGLOCALE/d' \ + -e 's,@''HAVE_POSIX_PRINTF''@,@HAVE_POSIX_PRINTF@,g' \ + -e 's,@''HAVE_ASPRINTF''@,@HAVE_ASPRINTF@,g' \ + -e 's,@''HAVE_SNPRINTF''@,@HAVE_SNPRINTF@,g' \ + -e 's,@''HAVE_WPRINTF''@,@HAVE_WPRINTF@,g' \ + < $(srcdir)/libgnuintl.h.in \ + | if test '@WOE32DLL@' = yes; then \ + sed -e 's/extern \([^()]*\);/extern __declspec (dllimport) \1;/'; \ + else \ + cat; \ + fi \ + | sed -e 's/extern \([^"]\)/extern LIBINTL_DLL_EXPORTED \1/' \ + -e "/#define _LIBINTL_H/r $(srcdir)/export.h" \ + | sed -e 's,@''HAVE_VISIBILITY''@,@HAVE_VISIBILITY@,g' \ + > libgnuintl.h + +libintl.h: $(srcdir)/libgnuintl.h.in + sed -e '/IN_LIBGLOCALE/d' \ + -e 's,@''HAVE_POSIX_PRINTF''@,@HAVE_POSIX_PRINTF@,g' \ + -e 's,@''HAVE_ASPRINTF''@,@HAVE_ASPRINTF@,g' \ + -e 's,@''HAVE_SNPRINTF''@,@HAVE_SNPRINTF@,g' \ + -e 's,@''HAVE_WPRINTF''@,@HAVE_WPRINTF@,g' \ + < $(srcdir)/libgnuintl.h.in > libintl.h + +charset.alias: $(srcdir)/config.charset + $(SHELL) $(srcdir)/config.charset '@host@' > t-$@ + mv t-$@ $@ + +check: all + +# We must not install the libintl.h/libintl.a files if we are on a +# system which has the GNU gettext() function in its C library or in a +# separate library. +# If you want to use the one which comes with this version of the +# package, you have to use `configure --with-included-gettext'. +install: install-exec install-data +install-exec: all + if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \ + && test '@USE_INCLUDED_LIBINTL@' = yes; then \ + $(mkdir_p) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \ + $(INSTALL_DATA) libintl.h $(DESTDIR)$(includedir)/libintl.h; \ + $(LIBTOOL) --mode=install \ + $(INSTALL_DATA) libintl.$la $(DESTDIR)$(libdir)/libintl.$la; \ + if test "@RELOCATABLE@" = yes; then \ + dependencies=`sed -n -e 's,^dependency_libs=\(.*\),\1,p' < $(DESTDIR)$(libdir)/libintl.la | sed -e "s,^',," -e "s,'\$$,,"`; \ + if test -n "$$dependencies"; then \ + rm -f $(DESTDIR)$(libdir)/libintl.la; \ + fi; \ + fi; \ + else \ + : ; \ + fi + if test "$(PACKAGE)" = "gettext-tools" \ + && test '@USE_INCLUDED_LIBINTL@' = no \ + && test @GLIBC2@ != no; then \ + $(mkdir_p) $(DESTDIR)$(libdir); \ + $(LIBTOOL) --mode=install \ + $(INSTALL_DATA) libgnuintl.$la $(DESTDIR)$(libdir)/libgnuintl.$la; \ + rm -f $(DESTDIR)$(libdir)/preloadable_libintl.so; \ + $(INSTALL_DATA) $(DESTDIR)$(libdir)/libgnuintl.so $(DESTDIR)$(libdir)/preloadable_libintl.so; \ + $(LIBTOOL) --mode=uninstall \ + rm -f $(DESTDIR)$(libdir)/libgnuintl.$la; \ + else \ + : ; \ + fi + if test '@USE_INCLUDED_LIBINTL@' = yes; then \ + test @GLIBC21@ != no || $(mkdir_p) $(DESTDIR)$(libdir); \ + temp=$(DESTDIR)$(libdir)/t-charset.alias; \ + dest=$(DESTDIR)$(libdir)/charset.alias; \ + if test -f $(DESTDIR)$(libdir)/charset.alias; then \ + orig=$(DESTDIR)$(libdir)/charset.alias; \ + sed -f ref-add.sed $$orig > $$temp; \ + $(INSTALL_DATA) $$temp $$dest; \ + rm -f $$temp; \ + else \ + if test @GLIBC21@ = no; then \ + orig=charset.alias; \ + sed -f ref-add.sed $$orig > $$temp; \ + $(INSTALL_DATA) $$temp $$dest; \ + rm -f $$temp; \ + fi; \ + fi; \ + $(mkdir_p) $(DESTDIR)$(localedir); \ + test -f $(DESTDIR)$(localedir)/locale.alias \ + && orig=$(DESTDIR)$(localedir)/locale.alias \ + || orig=$(srcdir)/locale.alias; \ + temp=$(DESTDIR)$(localedir)/t-locale.alias; \ + dest=$(DESTDIR)$(localedir)/locale.alias; \ + sed -f ref-add.sed $$orig > $$temp; \ + $(INSTALL_DATA) $$temp $$dest; \ + rm -f $$temp; \ + else \ + : ; \ + fi +install-data: all + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + $(INSTALL_DATA) VERSION $(DESTDIR)$(gettextsrcdir)/VERSION; \ + $(INSTALL_DATA) ChangeLog.inst $(DESTDIR)$(gettextsrcdir)/ChangeLog; \ + dists="COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common)"; \ + for file in $$dists; do \ + $(INSTALL_DATA) $(srcdir)/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + chmod a+x $(DESTDIR)$(gettextsrcdir)/config.charset; \ + dists="$(DISTFILES.generated)"; \ + for file in $$dists; do \ + if test -f $$file; then dir=.; else dir=$(srcdir); fi; \ + $(INSTALL_DATA) $$dir/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + dists="$(DISTFILES.obsolete)"; \ + for file in $$dists; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi + +install-strip: install + +install-dvi install-html install-info install-ps install-pdf: + +installdirs: + if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \ + && test '@USE_INCLUDED_LIBINTL@' = yes; then \ + $(mkdir_p) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \ + else \ + : ; \ + fi + if test "$(PACKAGE)" = "gettext-tools" \ + && test '@USE_INCLUDED_LIBINTL@' = no \ + && test @GLIBC2@ != no; then \ + $(mkdir_p) $(DESTDIR)$(libdir); \ + else \ + : ; \ + fi + if test '@USE_INCLUDED_LIBINTL@' = yes; then \ + test @GLIBC21@ != no || $(mkdir_p) $(DESTDIR)$(libdir); \ + $(mkdir_p) $(DESTDIR)$(localedir); \ + else \ + : ; \ + fi + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + else \ + : ; \ + fi + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: + if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \ + && test '@USE_INCLUDED_LIBINTL@' = yes; then \ + rm -f $(DESTDIR)$(includedir)/libintl.h; \ + $(LIBTOOL) --mode=uninstall \ + rm -f $(DESTDIR)$(libdir)/libintl.$la; \ + else \ + : ; \ + fi + if test "$(PACKAGE)" = "gettext-tools" \ + && test '@USE_INCLUDED_LIBINTL@' = no \ + && test @GLIBC2@ != no; then \ + rm -f $(DESTDIR)$(libdir)/preloadable_libintl.so; \ + else \ + : ; \ + fi + if test '@USE_INCLUDED_LIBINTL@' = yes; then \ + if test -f $(DESTDIR)$(libdir)/charset.alias; then \ + temp=$(DESTDIR)$(libdir)/t-charset.alias; \ + dest=$(DESTDIR)$(libdir)/charset.alias; \ + sed -f ref-del.sed $$dest > $$temp; \ + if grep '^# Packages using this file: $$' $$temp > /dev/null; then \ + rm -f $$dest; \ + else \ + $(INSTALL_DATA) $$temp $$dest; \ + fi; \ + rm -f $$temp; \ + fi; \ + if test -f $(DESTDIR)$(localedir)/locale.alias; then \ + temp=$(DESTDIR)$(localedir)/t-locale.alias; \ + dest=$(DESTDIR)$(localedir)/locale.alias; \ + sed -f ref-del.sed $$dest > $$temp; \ + if grep '^# Packages using this file: $$' $$temp > /dev/null; then \ + rm -f $$dest; \ + else \ + $(INSTALL_DATA) $$temp $$dest; \ + fi; \ + rm -f $$temp; \ + fi; \ + else \ + : ; \ + fi + if test "$(PACKAGE)" = "gettext-tools"; then \ + for file in VERSION ChangeLog COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common) $(DISTFILES.generated); do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi + +info dvi ps pdf html: + +$(OBJECTS): ../config.h libgnuintl.h +bindtextdom.$lo dcgettext.$lo dcigettext.$lo dcngettext.$lo dgettext.$lo dngettext.$lo finddomain.$lo gettext.$lo intl-compat.$lo loadmsgcat.$lo localealias.$lo ngettext.$lo textdomain.$lo: $(srcdir)/gettextP.h $(srcdir)/gmo.h $(srcdir)/loadinfo.h +hash-string.$lo dcigettext.$lo loadmsgcat.$lo: $(srcdir)/hash-string.h +explodename.$lo l10nflist.$lo: $(srcdir)/loadinfo.h +dcigettext.$lo loadmsgcat.$lo plural.$lo plural-exp.$lo: $(srcdir)/plural-exp.h +dcigettext.$lo: $(srcdir)/eval-plural.h +localcharset.$lo: $(srcdir)/localcharset.h +bindtextdom.$lo dcigettext.$lo finddomain.$lo loadmsgcat.$lo localealias.$lo lock.$lo log.$lo: $(srcdir)/lock.h +localealias.$lo localcharset.$lo relocatable.$lo: $(srcdir)/relocatable.h +printf.$lo: $(srcdir)/printf-args.h $(srcdir)/printf-args.c $(srcdir)/printf-parse.h $(srcdir)/wprintf-parse.h $(srcdir)/xsize.h $(srcdir)/printf-parse.c $(srcdir)/vasnprintf.h $(srcdir)/vasnwprintf.h $(srcdir)/vasnprintf.c + +# A bison-2.1 generated plural.c includes if ENABLE_NLS. +PLURAL_DEPS_yes = libintl.h +PLURAL_DEPS_no = +plural.$lo: $(PLURAL_DEPS_@USE_INCLUDED_LIBINTL@) + +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) + here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES) + +ctags: CTAGS + +CTAGS: $(HEADERS) $(SOURCES) + here=`pwd`; cd $(srcdir) && ctags -o $$here/CTAGS $(HEADERS) $(SOURCES) + +id: ID + +ID: $(HEADERS) $(SOURCES) + here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES) + + +mostlyclean: + rm -f *.a *.la *.o *.obj *.lo libintl.res core core.* + rm -f libgnuintl.h libintl.h charset.alias ref-add.sed ref-del.sed + rm -f -r .libs _libs + +clean: mostlyclean + +distclean: clean + rm -f Makefile ID TAGS + if test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; then \ + rm -f ChangeLog.inst $(DISTFILES.normal); \ + else \ + : ; \ + fi + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + + +# GNU gettext needs not contain the file `VERSION' but contains some +# other files which should not be distributed in other packages. +distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: Makefile + if test "$(PACKAGE)" = "gettext-tools"; then \ + : ; \ + else \ + if test "$(PACKAGE)" = "gettext-runtime"; then \ + additional="$(DISTFILES.gettext)"; \ + else \ + additional="$(DISTFILES.normal)"; \ + fi; \ + $(MAKE) $(DISTFILES.common) $(DISTFILES.generated) $$additional; \ + for file in ChangeLog $(DISTFILES.common) $(DISTFILES.generated) $$additional; do \ + if test -f $$file; then dir=.; else dir=$(srcdir); fi; \ + cp -p $$dir/$$file $(distdir) || test $$file = Makefile.in || exit 1; \ + done; \ + fi + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status +# This would be more efficient, but doesn't work any more with autoconf-2.57, +# when AC_CONFIG_FILES([intl/Makefile:somedir/Makefile.in]) is used. +# cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/xchat-2.8.8/intl/VERSION b/xchat-2.8.8/intl/VERSION new file mode 100644 index 0000000..889d4e9 --- /dev/null +++ b/xchat-2.8.8/intl/VERSION @@ -0,0 +1 @@ +GNU gettext library from gettext-0.17 diff --git a/xchat-2.8.8/intl/bindtextdom.c b/xchat-2.8.8/intl/bindtextdom.c new file mode 100644 index 0000000..dab5d4f --- /dev/null +++ b/xchat-2.8.8/intl/bindtextdom.c @@ -0,0 +1,340 @@ +/* Implementation of the bindtextdomain(3) function + Copyright (C) 1995-1998, 2000-2003, 2005-2006 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* Handle multi-threaded applications. */ +#ifdef _LIBC +# include +# define gl_rwlock_define __libc_rwlock_define +# define gl_rwlock_wrlock __libc_rwlock_wrlock +# define gl_rwlock_unlock __libc_rwlock_unlock +#else +# include "lock.h" +#endif + +/* Some compilers, like SunOS4 cc, don't have offsetof in . */ +#ifndef offsetof +# define offsetof(type,ident) ((size_t)&(((type*)0)->ident)) +#endif + +/* @@ end of prolog @@ */ + +/* Lock variable to protect the global data in the gettext implementation. */ +gl_rwlock_define (extern, _nl_state_lock attribute_hidden) + + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define BINDTEXTDOMAIN __bindtextdomain +# define BIND_TEXTDOMAIN_CODESET __bind_textdomain_codeset +# ifndef strdup +# define strdup(str) __strdup (str) +# endif +#else +# define BINDTEXTDOMAIN libintl_bindtextdomain +# define BIND_TEXTDOMAIN_CODESET libintl_bind_textdomain_codeset +#endif + +/* Specifies the directory name *DIRNAMEP and the output codeset *CODESETP + to be used for the DOMAINNAME message catalog. + If *DIRNAMEP or *CODESETP is NULL, the corresponding attribute is not + modified, only the current value is returned. + If DIRNAMEP or CODESETP is NULL, the corresponding attribute is neither + modified nor returned. */ +static void +set_binding_values (const char *domainname, + const char **dirnamep, const char **codesetp) +{ + struct binding *binding; + int modified; + + /* Some sanity checks. */ + if (domainname == NULL || domainname[0] == '\0') + { + if (dirnamep) + *dirnamep = NULL; + if (codesetp) + *codesetp = NULL; + return; + } + + gl_rwlock_wrlock (_nl_state_lock); + + modified = 0; + + for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next) + { + int compare = strcmp (domainname, binding->domainname); + if (compare == 0) + /* We found it! */ + break; + if (compare < 0) + { + /* It is not in the list. */ + binding = NULL; + break; + } + } + + if (binding != NULL) + { + if (dirnamep) + { + const char *dirname = *dirnamep; + + if (dirname == NULL) + /* The current binding has be to returned. */ + *dirnamep = binding->dirname; + else + { + /* The domain is already bound. If the new value and the old + one are equal we simply do nothing. Otherwise replace the + old binding. */ + char *result = binding->dirname; + if (strcmp (dirname, result) != 0) + { + if (strcmp (dirname, _nl_default_dirname) == 0) + result = (char *) _nl_default_dirname; + else + { +#if defined _LIBC || defined HAVE_STRDUP + result = strdup (dirname); +#else + size_t len = strlen (dirname) + 1; + result = (char *) malloc (len); + if (__builtin_expect (result != NULL, 1)) + memcpy (result, dirname, len); +#endif + } + + if (__builtin_expect (result != NULL, 1)) + { + if (binding->dirname != _nl_default_dirname) + free (binding->dirname); + + binding->dirname = result; + modified = 1; + } + } + *dirnamep = result; + } + } + + if (codesetp) + { + const char *codeset = *codesetp; + + if (codeset == NULL) + /* The current binding has be to returned. */ + *codesetp = binding->codeset; + else + { + /* The domain is already bound. If the new value and the old + one are equal we simply do nothing. Otherwise replace the + old binding. */ + char *result = binding->codeset; + if (result == NULL || strcmp (codeset, result) != 0) + { +#if defined _LIBC || defined HAVE_STRDUP + result = strdup (codeset); +#else + size_t len = strlen (codeset) + 1; + result = (char *) malloc (len); + if (__builtin_expect (result != NULL, 1)) + memcpy (result, codeset, len); +#endif + + if (__builtin_expect (result != NULL, 1)) + { + if (binding->codeset != NULL) + free (binding->codeset); + + binding->codeset = result; + modified = 1; + } + } + *codesetp = result; + } + } + } + else if ((dirnamep == NULL || *dirnamep == NULL) + && (codesetp == NULL || *codesetp == NULL)) + { + /* Simply return the default values. */ + if (dirnamep) + *dirnamep = _nl_default_dirname; + if (codesetp) + *codesetp = NULL; + } + else + { + /* We have to create a new binding. */ + size_t len = strlen (domainname) + 1; + struct binding *new_binding = + (struct binding *) malloc (offsetof (struct binding, domainname) + len); + + if (__builtin_expect (new_binding == NULL, 0)) + goto failed; + + memcpy (new_binding->domainname, domainname, len); + + if (dirnamep) + { + const char *dirname = *dirnamep; + + if (dirname == NULL) + /* The default value. */ + dirname = _nl_default_dirname; + else + { + if (strcmp (dirname, _nl_default_dirname) == 0) + dirname = _nl_default_dirname; + else + { + char *result; +#if defined _LIBC || defined HAVE_STRDUP + result = strdup (dirname); + if (__builtin_expect (result == NULL, 0)) + goto failed_dirname; +#else + size_t len = strlen (dirname) + 1; + result = (char *) malloc (len); + if (__builtin_expect (result == NULL, 0)) + goto failed_dirname; + memcpy (result, dirname, len); +#endif + dirname = result; + } + } + *dirnamep = dirname; + new_binding->dirname = (char *) dirname; + } + else + /* The default value. */ + new_binding->dirname = (char *) _nl_default_dirname; + + if (codesetp) + { + const char *codeset = *codesetp; + + if (codeset != NULL) + { + char *result; + +#if defined _LIBC || defined HAVE_STRDUP + result = strdup (codeset); + if (__builtin_expect (result == NULL, 0)) + goto failed_codeset; +#else + size_t len = strlen (codeset) + 1; + result = (char *) malloc (len); + if (__builtin_expect (result == NULL, 0)) + goto failed_codeset; + memcpy (result, codeset, len); +#endif + codeset = result; + } + *codesetp = codeset; + new_binding->codeset = (char *) codeset; + } + else + new_binding->codeset = NULL; + + /* Now enqueue it. */ + if (_nl_domain_bindings == NULL + || strcmp (domainname, _nl_domain_bindings->domainname) < 0) + { + new_binding->next = _nl_domain_bindings; + _nl_domain_bindings = new_binding; + } + else + { + binding = _nl_domain_bindings; + while (binding->next != NULL + && strcmp (domainname, binding->next->domainname) > 0) + binding = binding->next; + + new_binding->next = binding->next; + binding->next = new_binding; + } + + modified = 1; + + /* Here we deal with memory allocation failures. */ + if (0) + { + failed_codeset: + if (new_binding->dirname != _nl_default_dirname) + free (new_binding->dirname); + failed_dirname: + free (new_binding); + failed: + if (dirnamep) + *dirnamep = NULL; + if (codesetp) + *codesetp = NULL; + } + } + + /* If we modified any binding, we flush the caches. */ + if (modified) + ++_nl_msg_cat_cntr; + + gl_rwlock_unlock (_nl_state_lock); +} + +/* Specify that the DOMAINNAME message catalog will be found + in DIRNAME rather than in the system locale data base. */ +char * +BINDTEXTDOMAIN (const char *domainname, const char *dirname) +{ + set_binding_values (domainname, &dirname, NULL); + return (char *) dirname; +} + +/* Specify the character encoding in which the messages from the + DOMAINNAME message catalog will be returned. */ +char * +BIND_TEXTDOMAIN_CODESET (const char *domainname, const char *codeset) +{ + set_binding_values (domainname, NULL, &codeset); + return (char *) codeset; +} + +#ifdef _LIBC +/* Aliases for function names in GNU C Library. */ +weak_alias (__bindtextdomain, bindtextdomain); +weak_alias (__bind_textdomain_codeset, bind_textdomain_codeset); +#endif diff --git a/xchat-2.8.8/intl/config.charset b/xchat-2.8.8/intl/config.charset new file mode 100755 index 0000000..e8c258b --- /dev/null +++ b/xchat-2.8.8/intl/config.charset @@ -0,0 +1,640 @@ +#! /bin/sh +# Output a system dependent table of character encoding aliases. +# +# Copyright (C) 2000-2004, 2006 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU Library General Public License as published +# by the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program 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 +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +# USA. +# +# The table consists of lines of the form +# ALIAS CANONICAL +# +# ALIAS is the (system dependent) result of "nl_langinfo (CODESET)". +# ALIAS is compared in a case sensitive way. +# +# CANONICAL is the GNU canonical name for this character encoding. +# It must be an encoding supported by libiconv. Support by GNU libc is +# also desirable. CANONICAL is case insensitive. Usually an upper case +# MIME charset name is preferred. +# The current list of GNU canonical charset names is as follows. +# +# name MIME? used by which systems +# ASCII, ANSI_X3.4-1968 glibc solaris freebsd netbsd darwin +# ISO-8859-1 Y glibc aix hpux irix osf solaris freebsd netbsd darwin +# ISO-8859-2 Y glibc aix hpux irix osf solaris freebsd netbsd darwin +# ISO-8859-3 Y glibc solaris +# ISO-8859-4 Y osf solaris freebsd netbsd darwin +# ISO-8859-5 Y glibc aix hpux irix osf solaris freebsd netbsd darwin +# ISO-8859-6 Y glibc aix hpux solaris +# ISO-8859-7 Y glibc aix hpux irix osf solaris netbsd darwin +# ISO-8859-8 Y glibc aix hpux osf solaris +# ISO-8859-9 Y glibc aix hpux irix osf solaris darwin +# ISO-8859-13 glibc netbsd darwin +# ISO-8859-14 glibc +# ISO-8859-15 glibc aix osf solaris freebsd darwin +# KOI8-R Y glibc solaris freebsd netbsd darwin +# KOI8-U Y glibc freebsd netbsd darwin +# KOI8-T glibc +# CP437 dos +# CP775 dos +# CP850 aix osf dos +# CP852 dos +# CP855 dos +# CP856 aix +# CP857 dos +# CP861 dos +# CP862 dos +# CP864 dos +# CP865 dos +# CP866 freebsd netbsd darwin dos +# CP869 dos +# CP874 woe32 dos +# CP922 aix +# CP932 aix woe32 dos +# CP943 aix +# CP949 osf woe32 dos +# CP950 woe32 dos +# CP1046 aix +# CP1124 aix +# CP1125 dos +# CP1129 aix +# CP1250 woe32 +# CP1251 glibc solaris netbsd darwin woe32 +# CP1252 aix woe32 +# CP1253 woe32 +# CP1254 woe32 +# CP1255 glibc woe32 +# CP1256 woe32 +# CP1257 woe32 +# GB2312 Y glibc aix hpux irix solaris freebsd netbsd darwin +# EUC-JP Y glibc aix hpux irix osf solaris freebsd netbsd darwin +# EUC-KR Y glibc aix hpux irix osf solaris freebsd netbsd darwin +# EUC-TW glibc aix hpux irix osf solaris netbsd +# BIG5 Y glibc aix hpux osf solaris freebsd netbsd darwin +# BIG5-HKSCS glibc solaris +# GBK glibc aix osf solaris woe32 dos +# GB18030 glibc solaris netbsd +# SHIFT_JIS Y hpux osf solaris freebsd netbsd darwin +# JOHAB glibc solaris woe32 +# TIS-620 glibc aix hpux osf solaris +# VISCII Y glibc +# TCVN5712-1 glibc +# GEORGIAN-PS glibc +# HP-ROMAN8 hpux +# HP-ARABIC8 hpux +# HP-GREEK8 hpux +# HP-HEBREW8 hpux +# HP-TURKISH8 hpux +# HP-KANA8 hpux +# DEC-KANJI osf +# DEC-HANYU osf +# UTF-8 Y glibc aix hpux osf solaris netbsd darwin +# +# Note: Names which are not marked as being a MIME name should not be used in +# Internet protocols for information interchange (mail, news, etc.). +# +# Note: ASCII and ANSI_X3.4-1968 are synonymous canonical names. Applications +# must understand both names and treat them as equivalent. +# +# The first argument passed to this file is the canonical host specification, +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM + +host="$1" +os=`echo "$host" | sed -e 's/^[^-]*-[^-]*-\(.*\)$/\1/'` +echo "# This file contains a table of character encoding aliases," +echo "# suitable for operating system '${os}'." +echo "# It was automatically generated from config.charset." +# List of references, updated during installation: +echo "# Packages using this file: " +case "$os" in + linux-gnulibc1*) + # Linux libc5 doesn't have nl_langinfo(CODESET); therefore + # localcharset.c falls back to using the full locale name + # from the environment variables. + echo "C ASCII" + echo "POSIX ASCII" + for l in af af_ZA ca ca_ES da da_DK de de_AT de_BE de_CH de_DE de_LU \ + en en_AU en_BW en_CA en_DK en_GB en_IE en_NZ en_US en_ZA \ + en_ZW es es_AR es_BO es_CL es_CO es_DO es_EC es_ES es_GT \ + es_HN es_MX es_PA es_PE es_PY es_SV es_US es_UY es_VE et \ + et_EE eu eu_ES fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR \ + fr_LU ga ga_IE gl gl_ES id id_ID in in_ID is is_IS it it_CH \ + it_IT kl kl_GL nl nl_BE nl_NL no no_NO pt pt_BR pt_PT sv \ + sv_FI sv_SE; do + echo "$l ISO-8859-1" + echo "$l.iso-8859-1 ISO-8859-1" + echo "$l.iso-8859-15 ISO-8859-15" + echo "$l.iso-8859-15@euro ISO-8859-15" + echo "$l@euro ISO-8859-15" + echo "$l.cp-437 CP437" + echo "$l.cp-850 CP850" + echo "$l.cp-1252 CP1252" + echo "$l.cp-1252@euro CP1252" + #echo "$l.atari-st ATARI-ST" # not a commonly used encoding + echo "$l.utf-8 UTF-8" + echo "$l.utf-8@euro UTF-8" + done + for l in cs cs_CZ hr hr_HR hu hu_HU pl pl_PL ro ro_RO sk sk_SK sl \ + sl_SI sr sr_CS sr_YU; do + echo "$l ISO-8859-2" + echo "$l.iso-8859-2 ISO-8859-2" + echo "$l.cp-852 CP852" + echo "$l.cp-1250 CP1250" + echo "$l.utf-8 UTF-8" + done + for l in mk mk_MK ru ru_RU; do + echo "$l ISO-8859-5" + echo "$l.iso-8859-5 ISO-8859-5" + echo "$l.koi8-r KOI8-R" + echo "$l.cp-866 CP866" + echo "$l.cp-1251 CP1251" + echo "$l.utf-8 UTF-8" + done + for l in ar ar_SA; do + echo "$l ISO-8859-6" + echo "$l.iso-8859-6 ISO-8859-6" + echo "$l.cp-864 CP864" + #echo "$l.cp-868 CP868" # not a commonly used encoding + echo "$l.cp-1256 CP1256" + echo "$l.utf-8 UTF-8" + done + for l in el el_GR gr gr_GR; do + echo "$l ISO-8859-7" + echo "$l.iso-8859-7 ISO-8859-7" + echo "$l.cp-869 CP869" + echo "$l.cp-1253 CP1253" + echo "$l.cp-1253@euro CP1253" + echo "$l.utf-8 UTF-8" + echo "$l.utf-8@euro UTF-8" + done + for l in he he_IL iw iw_IL; do + echo "$l ISO-8859-8" + echo "$l.iso-8859-8 ISO-8859-8" + echo "$l.cp-862 CP862" + echo "$l.cp-1255 CP1255" + echo "$l.utf-8 UTF-8" + done + for l in tr tr_TR; do + echo "$l ISO-8859-9" + echo "$l.iso-8859-9 ISO-8859-9" + echo "$l.cp-857 CP857" + echo "$l.cp-1254 CP1254" + echo "$l.utf-8 UTF-8" + done + for l in lt lt_LT lv lv_LV; do + #echo "$l BALTIC" # not a commonly used encoding, wrong encoding name + echo "$l ISO-8859-13" + done + for l in ru_UA uk uk_UA; do + echo "$l KOI8-U" + done + for l in zh zh_CN; do + #echo "$l GB_2312-80" # not a commonly used encoding, wrong encoding name + echo "$l GB2312" + done + for l in ja ja_JP ja_JP.EUC; do + echo "$l EUC-JP" + done + for l in ko ko_KR; do + echo "$l EUC-KR" + done + for l in th th_TH; do + echo "$l TIS-620" + done + for l in fa fa_IR; do + #echo "$l ISIRI-3342" # a broken encoding + echo "$l.utf-8 UTF-8" + done + ;; + linux* | *-gnu*) + # With glibc-2.1 or newer, we don't need any canonicalization, + # because glibc has iconv and both glibc and libiconv support all + # GNU canonical names directly. Therefore, the Makefile does not + # need to install the alias file at all. + # The following applies only to glibc-2.0.x and older libcs. + echo "ISO_646.IRV:1983 ASCII" + ;; + aix*) + echo "ISO8859-1 ISO-8859-1" + echo "ISO8859-2 ISO-8859-2" + echo "ISO8859-5 ISO-8859-5" + echo "ISO8859-6 ISO-8859-6" + echo "ISO8859-7 ISO-8859-7" + echo "ISO8859-8 ISO-8859-8" + echo "ISO8859-9 ISO-8859-9" + echo "ISO8859-15 ISO-8859-15" + echo "IBM-850 CP850" + echo "IBM-856 CP856" + echo "IBM-921 ISO-8859-13" + echo "IBM-922 CP922" + echo "IBM-932 CP932" + echo "IBM-943 CP943" + echo "IBM-1046 CP1046" + echo "IBM-1124 CP1124" + echo "IBM-1129 CP1129" + echo "IBM-1252 CP1252" + echo "IBM-eucCN GB2312" + echo "IBM-eucJP EUC-JP" + echo "IBM-eucKR EUC-KR" + echo "IBM-eucTW EUC-TW" + echo "big5 BIG5" + echo "GBK GBK" + echo "TIS-620 TIS-620" + echo "UTF-8 UTF-8" + ;; + hpux*) + echo "iso88591 ISO-8859-1" + echo "iso88592 ISO-8859-2" + echo "iso88595 ISO-8859-5" + echo "iso88596 ISO-8859-6" + echo "iso88597 ISO-8859-7" + echo "iso88598 ISO-8859-8" + echo "iso88599 ISO-8859-9" + echo "iso885915 ISO-8859-15" + echo "roman8 HP-ROMAN8" + echo "arabic8 HP-ARABIC8" + echo "greek8 HP-GREEK8" + echo "hebrew8 HP-HEBREW8" + echo "turkish8 HP-TURKISH8" + echo "kana8 HP-KANA8" + echo "tis620 TIS-620" + echo "big5 BIG5" + echo "eucJP EUC-JP" + echo "eucKR EUC-KR" + echo "eucTW EUC-TW" + echo "hp15CN GB2312" + #echo "ccdc ?" # what is this? + echo "SJIS SHIFT_JIS" + echo "utf8 UTF-8" + ;; + irix*) + echo "ISO8859-1 ISO-8859-1" + echo "ISO8859-2 ISO-8859-2" + echo "ISO8859-5 ISO-8859-5" + echo "ISO8859-7 ISO-8859-7" + echo "ISO8859-9 ISO-8859-9" + echo "eucCN GB2312" + echo "eucJP EUC-JP" + echo "eucKR EUC-KR" + echo "eucTW EUC-TW" + ;; + osf*) + echo "ISO8859-1 ISO-8859-1" + echo "ISO8859-2 ISO-8859-2" + echo "ISO8859-4 ISO-8859-4" + echo "ISO8859-5 ISO-8859-5" + echo "ISO8859-7 ISO-8859-7" + echo "ISO8859-8 ISO-8859-8" + echo "ISO8859-9 ISO-8859-9" + echo "ISO8859-15 ISO-8859-15" + echo "cp850 CP850" + echo "big5 BIG5" + echo "dechanyu DEC-HANYU" + echo "dechanzi GB2312" + echo "deckanji DEC-KANJI" + echo "deckorean EUC-KR" + echo "eucJP EUC-JP" + echo "eucKR EUC-KR" + echo "eucTW EUC-TW" + echo "GBK GBK" + echo "KSC5601 CP949" + echo "sdeckanji EUC-JP" + echo "SJIS SHIFT_JIS" + echo "TACTIS TIS-620" + echo "UTF-8 UTF-8" + ;; + solaris*) + echo "646 ASCII" + echo "ISO8859-1 ISO-8859-1" + echo "ISO8859-2 ISO-8859-2" + echo "ISO8859-3 ISO-8859-3" + echo "ISO8859-4 ISO-8859-4" + echo "ISO8859-5 ISO-8859-5" + echo "ISO8859-6 ISO-8859-6" + echo "ISO8859-7 ISO-8859-7" + echo "ISO8859-8 ISO-8859-8" + echo "ISO8859-9 ISO-8859-9" + echo "ISO8859-15 ISO-8859-15" + echo "koi8-r KOI8-R" + echo "ansi-1251 CP1251" + echo "BIG5 BIG5" + echo "Big5-HKSCS BIG5-HKSCS" + echo "gb2312 GB2312" + echo "GBK GBK" + echo "GB18030 GB18030" + echo "cns11643 EUC-TW" + echo "5601 EUC-KR" + echo "ko_KR.johap92 JOHAB" + echo "eucJP EUC-JP" + echo "PCK SHIFT_JIS" + echo "TIS620.2533 TIS-620" + #echo "sun_eu_greek ?" # what is this? + echo "UTF-8 UTF-8" + ;; + freebsd* | os2*) + # FreeBSD 4.2 doesn't have nl_langinfo(CODESET); therefore + # localcharset.c falls back to using the full locale name + # from the environment variables. + # Likewise for OS/2. OS/2 has XFree86 just like FreeBSD. Just + # reuse FreeBSD's locale data for OS/2. + echo "C ASCII" + echo "US-ASCII ASCII" + for l in la_LN lt_LN; do + echo "$l.ASCII ASCII" + done + for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \ + fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT la_LN \ + lt_LN nl_BE nl_NL no_NO pt_PT sv_SE; do + echo "$l.ISO_8859-1 ISO-8859-1" + echo "$l.DIS_8859-15 ISO-8859-15" + done + for l in cs_CZ hr_HR hu_HU la_LN lt_LN pl_PL sl_SI; do + echo "$l.ISO_8859-2 ISO-8859-2" + done + for l in la_LN lt_LT; do + echo "$l.ISO_8859-4 ISO-8859-4" + done + for l in ru_RU ru_SU; do + echo "$l.KOI8-R KOI8-R" + echo "$l.ISO_8859-5 ISO-8859-5" + echo "$l.CP866 CP866" + done + echo "uk_UA.KOI8-U KOI8-U" + echo "zh_TW.BIG5 BIG5" + echo "zh_TW.Big5 BIG5" + echo "zh_CN.EUC GB2312" + echo "ja_JP.EUC EUC-JP" + echo "ja_JP.SJIS SHIFT_JIS" + echo "ja_JP.Shift_JIS SHIFT_JIS" + echo "ko_KR.EUC EUC-KR" + ;; + netbsd*) + echo "646 ASCII" + echo "ISO8859-1 ISO-8859-1" + echo "ISO8859-2 ISO-8859-2" + echo "ISO8859-4 ISO-8859-4" + echo "ISO8859-5 ISO-8859-5" + echo "ISO8859-7 ISO-8859-7" + echo "ISO8859-13 ISO-8859-13" + echo "ISO8859-15 ISO-8859-15" + echo "eucCN GB2312" + echo "eucJP EUC-JP" + echo "eucKR EUC-KR" + echo "eucTW EUC-TW" + echo "BIG5 BIG5" + echo "SJIS SHIFT_JIS" + ;; + darwin[56]*) + # Darwin 6.8 doesn't have nl_langinfo(CODESET); therefore + # localcharset.c falls back to using the full locale name + # from the environment variables. + echo "C ASCII" + for l in en_AU en_CA en_GB en_US la_LN; do + echo "$l.US-ASCII ASCII" + done + for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \ + fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT nl_BE \ + nl_NL no_NO pt_PT sv_SE; do + echo "$l ISO-8859-1" + echo "$l.ISO8859-1 ISO-8859-1" + echo "$l.ISO8859-15 ISO-8859-15" + done + for l in la_LN; do + echo "$l.ISO8859-1 ISO-8859-1" + echo "$l.ISO8859-15 ISO-8859-15" + done + for l in cs_CZ hr_HR hu_HU la_LN pl_PL sl_SI; do + echo "$l.ISO8859-2 ISO-8859-2" + done + for l in la_LN lt_LT; do + echo "$l.ISO8859-4 ISO-8859-4" + done + for l in ru_RU; do + echo "$l.KOI8-R KOI8-R" + echo "$l.ISO8859-5 ISO-8859-5" + echo "$l.CP866 CP866" + done + for l in bg_BG; do + echo "$l.CP1251 CP1251" + done + echo "uk_UA.KOI8-U KOI8-U" + echo "zh_TW.BIG5 BIG5" + echo "zh_TW.Big5 BIG5" + echo "zh_CN.EUC GB2312" + echo "ja_JP.EUC EUC-JP" + echo "ja_JP.SJIS SHIFT_JIS" + echo "ko_KR.EUC EUC-KR" + ;; + darwin*) + # Darwin 7.5 has nl_langinfo(CODESET), but it is useless: + # - It returns the empty string when LANG is set to a locale of the + # form ll_CC, although ll_CC/LC_CTYPE is a symlink to an UTF-8 + # LC_CTYPE file. + # - The environment variables LANG, LC_CTYPE, LC_ALL are not set by + # the system; nl_langinfo(CODESET) returns "US-ASCII" in this case. + # - The documentation says: + # "... all code that calls BSD system routines should ensure + # that the const *char parameters of these routines are in UTF-8 + # encoding. All BSD system functions expect their string + # parameters to be in UTF-8 encoding and nothing else." + # It also says + # "An additional caveat is that string parameters for files, + # paths, and other file-system entities must be in canonical + # UTF-8. In a canonical UTF-8 Unicode string, all decomposable + # characters are decomposed ..." + # but this is not true: You can pass non-decomposed UTF-8 strings + # to file system functions, and it is the OS which will convert + # them to decomposed UTF-8 before accessing the file system. + # - The Apple Terminal application displays UTF-8 by default. + # - However, other applications are free to use different encodings: + # - xterm uses ISO-8859-1 by default. + # - TextEdit uses MacRoman by default. + # We prefer UTF-8 over decomposed UTF-8-MAC because one should + # minimize the use of decomposed Unicode. Unfortunately, through the + # Darwin file system, decomposed UTF-8 strings are leaked into user + # space nevertheless. + echo "* UTF-8" + ;; + beos*) + # BeOS has a single locale, and it has UTF-8 encoding. + echo "* UTF-8" + ;; + msdosdjgpp*) + # DJGPP 2.03 doesn't have nl_langinfo(CODESET); therefore + # localcharset.c falls back to using the full locale name + # from the environment variables. + echo "#" + echo "# The encodings given here may not all be correct." + echo "# If you find that the encoding given for your language and" + echo "# country is not the one your DOS machine actually uses, just" + echo "# correct it in this file, and send a mail to" + echo "# Juan Manuel Guerrero " + echo "# and Bruno Haible ." + echo "#" + echo "C ASCII" + # ISO-8859-1 languages + echo "ca CP850" + echo "ca_ES CP850" + echo "da CP865" # not CP850 ?? + echo "da_DK CP865" # not CP850 ?? + echo "de CP850" + echo "de_AT CP850" + echo "de_CH CP850" + echo "de_DE CP850" + echo "en CP850" + echo "en_AU CP850" # not CP437 ?? + echo "en_CA CP850" + echo "en_GB CP850" + echo "en_NZ CP437" + echo "en_US CP437" + echo "en_ZA CP850" # not CP437 ?? + echo "es CP850" + echo "es_AR CP850" + echo "es_BO CP850" + echo "es_CL CP850" + echo "es_CO CP850" + echo "es_CR CP850" + echo "es_CU CP850" + echo "es_DO CP850" + echo "es_EC CP850" + echo "es_ES CP850" + echo "es_GT CP850" + echo "es_HN CP850" + echo "es_MX CP850" + echo "es_NI CP850" + echo "es_PA CP850" + echo "es_PY CP850" + echo "es_PE CP850" + echo "es_SV CP850" + echo "es_UY CP850" + echo "es_VE CP850" + echo "et CP850" + echo "et_EE CP850" + echo "eu CP850" + echo "eu_ES CP850" + echo "fi CP850" + echo "fi_FI CP850" + echo "fr CP850" + echo "fr_BE CP850" + echo "fr_CA CP850" + echo "fr_CH CP850" + echo "fr_FR CP850" + echo "ga CP850" + echo "ga_IE CP850" + echo "gd CP850" + echo "gd_GB CP850" + echo "gl CP850" + echo "gl_ES CP850" + echo "id CP850" # not CP437 ?? + echo "id_ID CP850" # not CP437 ?? + echo "is CP861" # not CP850 ?? + echo "is_IS CP861" # not CP850 ?? + echo "it CP850" + echo "it_CH CP850" + echo "it_IT CP850" + echo "lt CP775" + echo "lt_LT CP775" + echo "lv CP775" + echo "lv_LV CP775" + echo "nb CP865" # not CP850 ?? + echo "nb_NO CP865" # not CP850 ?? + echo "nl CP850" + echo "nl_BE CP850" + echo "nl_NL CP850" + echo "nn CP865" # not CP850 ?? + echo "nn_NO CP865" # not CP850 ?? + echo "no CP865" # not CP850 ?? + echo "no_NO CP865" # not CP850 ?? + echo "pt CP850" + echo "pt_BR CP850" + echo "pt_PT CP850" + echo "sv CP850" + echo "sv_SE CP850" + # ISO-8859-2 languages + echo "cs CP852" + echo "cs_CZ CP852" + echo "hr CP852" + echo "hr_HR CP852" + echo "hu CP852" + echo "hu_HU CP852" + echo "pl CP852" + echo "pl_PL CP852" + echo "ro CP852" + echo "ro_RO CP852" + echo "sk CP852" + echo "sk_SK CP852" + echo "sl CP852" + echo "sl_SI CP852" + echo "sq CP852" + echo "sq_AL CP852" + echo "sr CP852" # CP852 or CP866 or CP855 ?? + echo "sr_CS CP852" # CP852 or CP866 or CP855 ?? + echo "sr_YU CP852" # CP852 or CP866 or CP855 ?? + # ISO-8859-3 languages + echo "mt CP850" + echo "mt_MT CP850" + # ISO-8859-5 languages + echo "be CP866" + echo "be_BE CP866" + echo "bg CP866" # not CP855 ?? + echo "bg_BG CP866" # not CP855 ?? + echo "mk CP866" # not CP855 ?? + echo "mk_MK CP866" # not CP855 ?? + echo "ru CP866" + echo "ru_RU CP866" + echo "uk CP1125" + echo "uk_UA CP1125" + # ISO-8859-6 languages + echo "ar CP864" + echo "ar_AE CP864" + echo "ar_DZ CP864" + echo "ar_EG CP864" + echo "ar_IQ CP864" + echo "ar_IR CP864" + echo "ar_JO CP864" + echo "ar_KW CP864" + echo "ar_MA CP864" + echo "ar_OM CP864" + echo "ar_QA CP864" + echo "ar_SA CP864" + echo "ar_SY CP864" + # ISO-8859-7 languages + echo "el CP869" + echo "el_GR CP869" + # ISO-8859-8 languages + echo "he CP862" + echo "he_IL CP862" + # ISO-8859-9 languages + echo "tr CP857" + echo "tr_TR CP857" + # Japanese + echo "ja CP932" + echo "ja_JP CP932" + # Chinese + echo "zh_CN GBK" + echo "zh_TW CP950" # not CP938 ?? + # Korean + echo "kr CP949" # not CP934 ?? + echo "kr_KR CP949" # not CP934 ?? + # Thai + echo "th CP874" + echo "th_TH CP874" + # Other + echo "eo CP850" + echo "eo_EO CP850" + ;; +esac diff --git a/xchat-2.8.8/intl/dcgettext.c b/xchat-2.8.8/intl/dcgettext.c new file mode 100644 index 0000000..c2a63f0 --- /dev/null +++ b/xchat-2.8.8/intl/dcgettext.c @@ -0,0 +1,56 @@ +/* Implementation of the dcgettext(3) function. + Copyright (C) 1995-1999, 2000-2003 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DCGETTEXT __dcgettext +# define DCIGETTEXT __dcigettext +#else +# define DCGETTEXT libintl_dcgettext +# define DCIGETTEXT libintl_dcigettext +#endif + +/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY + locale. */ +char * +DCGETTEXT (const char *domainname, const char *msgid, int category) +{ + return DCIGETTEXT (domainname, msgid, NULL, 0, 0, category); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +INTDEF(__dcgettext) +weak_alias (__dcgettext, dcgettext); +#endif diff --git a/xchat-2.8.8/intl/dcigettext.c b/xchat-2.8.8/intl/dcigettext.c new file mode 100644 index 0000000..623e51d --- /dev/null +++ b/xchat-2.8.8/intl/dcigettext.c @@ -0,0 +1,1689 @@ +/* Implementation of the internal dcigettext function. + Copyright (C) 1995-1999, 2000-2007 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Tell glibc's to provide a prototype for mempcpy(). + This must come before because may include + , and once has been included, it's too late. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +/* NL_LOCALE_NAME does not work in glibc-2.4. Ignore it. */ +#undef HAVE_NL_LOCALE_NAME + +#include + +#ifdef __GNUC__ +# define alloca __builtin_alloca +# define HAVE_ALLOCA 1 +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# if defined HAVE_ALLOCA_H || defined _LIBC +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca +char *alloca (); +# endif +# endif +# endif +# endif +#endif + +#include +#ifndef errno +extern int errno; +#endif +#ifndef __set_errno +# define __set_errno(val) errno = (val) +#endif + +#include +#include +#include + +#if defined HAVE_UNISTD_H || defined _LIBC +# include +#endif + +#include + +#ifdef _LIBC + /* Guess whether integer division by zero raises signal SIGFPE. + Set to 1 only if you know for sure. In case of doubt, set to 0. */ +# if defined __alpha__ || defined __arm__ || defined __i386__ \ + || defined __m68k__ || defined __s390__ +# define INTDIV0_RAISES_SIGFPE 1 +# else +# define INTDIV0_RAISES_SIGFPE 0 +# endif +#endif +#if !INTDIV0_RAISES_SIGFPE +# include +#endif + +#if defined HAVE_SYS_PARAM_H || defined _LIBC +# include +#endif + +#if !defined _LIBC +# if HAVE_NL_LOCALE_NAME +# include +# endif +# include "localcharset.h" +#endif + +#include "gettextP.h" +#include "plural-exp.h" +#ifdef _LIBC +# include +#else +# ifdef IN_LIBGLOCALE +# include +# endif +# include "libgnuintl.h" +#endif +#include "hash-string.h" + +/* Handle multi-threaded applications. */ +#ifdef _LIBC +# include +# define gl_rwlock_define_initialized __libc_rwlock_define_initialized +# define gl_rwlock_rdlock __libc_rwlock_rdlock +# define gl_rwlock_wrlock __libc_rwlock_wrlock +# define gl_rwlock_unlock __libc_rwlock_unlock +#else +# include "lock.h" +#endif + +/* Alignment of types. */ +#if defined __GNUC__ && __GNUC__ >= 2 +# define alignof(TYPE) __alignof__ (TYPE) +#else +# define alignof(TYPE) \ + ((int) &((struct { char dummy1; TYPE dummy2; } *) 0)->dummy2) +#endif + +/* Some compilers, like SunOS4 cc, don't have offsetof in . */ +#ifndef offsetof +# define offsetof(type,ident) ((size_t)&(((type*)0)->ident)) +#endif + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ANSI C functions. This is required by the standard + because some ANSI C functions will require linking with this object + file and the name space must not be polluted. */ +# define getcwd __getcwd +# ifndef stpcpy +# define stpcpy __stpcpy +# endif +# define tfind __tfind +#else +# if !defined HAVE_GETCWD +char *getwd (); +# define getcwd(buf, max) getwd (buf) +# else +# if VMS +# define getcwd(buf, max) (getcwd) (buf, max, 0) +# else +char *getcwd (); +# endif +# endif +# ifndef HAVE_STPCPY +static char *stpcpy (char *dest, const char *src); +# endif +# ifndef HAVE_MEMPCPY +static void *mempcpy (void *dest, const void *src, size_t n); +# endif +#endif + +/* Use a replacement if the system does not provide the `tsearch' function + family. */ +#if HAVE_TSEARCH || defined _LIBC +# include +#else +# define tsearch libintl_tsearch +# define tfind libintl_tfind +# define tdelete libintl_tdelete +# define twalk libintl_twalk +# include "tsearch.h" +#endif + +#ifdef _LIBC +# define tsearch __tsearch +#endif + +/* Amount to increase buffer size by in each try. */ +#define PATH_INCR 32 + +/* The following is from pathmax.h. */ +/* Non-POSIX BSD systems might have gcc's limits.h, which doesn't define + PATH_MAX but might cause redefinition warnings when sys/param.h is + later included (as on MORE/BSD 4.3). */ +#if defined _POSIX_VERSION || (defined HAVE_LIMITS_H && !defined __GNUC__) +# include +#endif + +#ifndef _POSIX_PATH_MAX +# define _POSIX_PATH_MAX 255 +#endif + +#if !defined PATH_MAX && defined _PC_PATH_MAX +# define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 : pathconf ("/", _PC_PATH_MAX)) +#endif + +/* Don't include sys/param.h if it already has been. */ +#if defined HAVE_SYS_PARAM_H && !defined PATH_MAX && !defined MAXPATHLEN +# include +#endif + +#if !defined PATH_MAX && defined MAXPATHLEN +# define PATH_MAX MAXPATHLEN +#endif + +#ifndef PATH_MAX +# define PATH_MAX _POSIX_PATH_MAX +#endif + +/* Pathname support. + ISSLASH(C) tests whether C is a directory separator character. + IS_ABSOLUTE_PATH(P) tests whether P is an absolute path. If it is not, + it may be concatenated to a directory pathname. + IS_PATH_WITH_DIR(P) tests whether P contains a directory specification. + */ +#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__ + /* Win32, Cygwin, OS/2, DOS */ +# define ISSLASH(C) ((C) == '/' || (C) == '\\') +# define HAS_DEVICE(P) \ + ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \ + && (P)[1] == ':') +# define IS_ABSOLUTE_PATH(P) (ISSLASH ((P)[0]) || HAS_DEVICE (P)) +# define IS_PATH_WITH_DIR(P) \ + (strchr (P, '/') != NULL || strchr (P, '\\') != NULL || HAS_DEVICE (P)) +#else + /* Unix */ +# define ISSLASH(C) ((C) == '/') +# define IS_ABSOLUTE_PATH(P) ISSLASH ((P)[0]) +# define IS_PATH_WITH_DIR(P) (strchr (P, '/') != NULL) +#endif + +/* Whether to support different locales in different threads. */ +#if defined _LIBC || HAVE_NL_LOCALE_NAME || (HAVE_STRUCT___LOCALE_STRUCT___NAMES && defined USE_IN_GETTEXT_TESTS) || defined IN_LIBGLOCALE +# define HAVE_PER_THREAD_LOCALE +#endif + +/* This is the type used for the search tree where known translations + are stored. */ +struct known_translation_t +{ + /* Domain in which to search. */ + const char *domainname; + + /* The category. */ + int category; + +#ifdef HAVE_PER_THREAD_LOCALE + /* Name of the relevant locale category, or "" for the global locale. */ + const char *localename; +#endif + +#ifdef IN_LIBGLOCALE + /* The character encoding. */ + const char *encoding; +#endif + + /* State of the catalog counter at the point the string was found. */ + int counter; + + /* Catalog where the string was found. */ + struct loaded_l10nfile *domain; + + /* And finally the translation. */ + const char *translation; + size_t translation_length; + + /* Pointer to the string in question. */ + char msgid[ZERO]; +}; + +gl_rwlock_define_initialized (static, tree_lock) + +/* Root of the search tree with known translations. */ +static void *root; + +/* Function to compare two entries in the table of known translations. */ +static int +transcmp (const void *p1, const void *p2) +{ + const struct known_translation_t *s1; + const struct known_translation_t *s2; + int result; + + s1 = (const struct known_translation_t *) p1; + s2 = (const struct known_translation_t *) p2; + + result = strcmp (s1->msgid, s2->msgid); + if (result == 0) + { + result = strcmp (s1->domainname, s2->domainname); + if (result == 0) + { +#ifdef HAVE_PER_THREAD_LOCALE + result = strcmp (s1->localename, s2->localename); + if (result == 0) +#endif + { +#ifdef IN_LIBGLOCALE + result = strcmp (s1->encoding, s2->encoding); + if (result == 0) +#endif + /* We compare the category last (though this is the cheapest + operation) since it is hopefully always the same (namely + LC_MESSAGES). */ + result = s1->category - s2->category; + } + } + } + + return result; +} + +/* Name of the default domain used for gettext(3) prior any call to + textdomain(3). The default value for this is "messages". */ +const char _nl_default_default_domain[] attribute_hidden = "messages"; + +#ifndef IN_LIBGLOCALE +/* Value used as the default domain for gettext(3). */ +const char *_nl_current_default_domain attribute_hidden + = _nl_default_default_domain; +#endif + +/* Contains the default location of the message catalogs. */ +#if defined __EMX__ +extern const char _nl_default_dirname[]; +#else +# ifdef _LIBC +extern const char _nl_default_dirname[]; +libc_hidden_proto (_nl_default_dirname) +# endif +const char _nl_default_dirname[] = LOCALEDIR; +# ifdef _LIBC +libc_hidden_data_def (_nl_default_dirname) +# endif +#endif + +#ifndef IN_LIBGLOCALE +/* List with bindings of specific domains created by bindtextdomain() + calls. */ +struct binding *_nl_domain_bindings; +#endif + +/* Prototypes for local functions. */ +static char *plural_lookup (struct loaded_l10nfile *domain, + unsigned long int n, + const char *translation, size_t translation_len) + internal_function; + +#ifdef IN_LIBGLOCALE +static const char *guess_category_value (int category, + const char *categoryname, + const char *localename) + internal_function; +#else +static const char *guess_category_value (int category, + const char *categoryname) + internal_function; +#endif + +#ifdef _LIBC +# include "../locale/localeinfo.h" +# define category_to_name(category) \ + _nl_category_names.str + _nl_category_name_idxs[category] +#else +static const char *category_to_name (int category) internal_function; +#endif +#if (defined _LIBC || HAVE_ICONV) && !defined IN_LIBGLOCALE +static const char *get_output_charset (struct binding *domainbinding) + internal_function; +#endif + + +/* For those loosing systems which don't have `alloca' we have to add + some additional code emulating it. */ +#ifdef HAVE_ALLOCA +/* Nothing has to be done. */ +# define freea(p) /* nothing */ +# define ADD_BLOCK(list, address) /* nothing */ +# define FREE_BLOCKS(list) /* nothing */ +#else +struct block_list +{ + void *address; + struct block_list *next; +}; +# define ADD_BLOCK(list, addr) \ + do { \ + struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \ + /* If we cannot get a free block we cannot add the new element to \ + the list. */ \ + if (newp != NULL) { \ + newp->address = (addr); \ + newp->next = (list); \ + (list) = newp; \ + } \ + } while (0) +# define FREE_BLOCKS(list) \ + do { \ + while (list != NULL) { \ + struct block_list *old = list; \ + list = list->next; \ + free (old->address); \ + free (old); \ + } \ + } while (0) +# undef alloca +# define alloca(size) (malloc (size)) +# define freea(p) free (p) +#endif /* have alloca */ + + +#ifdef _LIBC +/* List of blocks allocated for translations. */ +typedef struct transmem_list +{ + struct transmem_list *next; + char data[ZERO]; +} transmem_block_t; +static struct transmem_list *transmem_list; +#else +typedef unsigned char transmem_block_t; +#endif + + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DCIGETTEXT __dcigettext +#else +# define DCIGETTEXT libintl_dcigettext +#endif + +/* Lock variable to protect the global data in the gettext implementation. */ +gl_rwlock_define_initialized (, _nl_state_lock attribute_hidden) + +/* Checking whether the binaries runs SUID must be done and glibc provides + easier methods therefore we make a difference here. */ +#ifdef _LIBC +# define ENABLE_SECURE __libc_enable_secure +# define DETERMINE_SECURE +#else +# ifndef HAVE_GETUID +# define getuid() 0 +# endif +# ifndef HAVE_GETGID +# define getgid() 0 +# endif +# ifndef HAVE_GETEUID +# define geteuid() getuid() +# endif +# ifndef HAVE_GETEGID +# define getegid() getgid() +# endif +static int enable_secure; +# define ENABLE_SECURE (enable_secure == 1) +# define DETERMINE_SECURE \ + if (enable_secure == 0) \ + { \ + if (getuid () != geteuid () || getgid () != getegid ()) \ + enable_secure = 1; \ + else \ + enable_secure = -1; \ + } +#endif + +/* Get the function to evaluate the plural expression. */ +#include "eval-plural.h" + +/* Look up MSGID in the DOMAINNAME message catalog for the current + CATEGORY locale and, if PLURAL is nonzero, search over string + depending on the plural form determined by N. */ +#ifdef IN_LIBGLOCALE +char * +gl_dcigettext (const char *domainname, + const char *msgid1, const char *msgid2, + int plural, unsigned long int n, + int category, + const char *localename, const char *encoding) +#else +char * +DCIGETTEXT (const char *domainname, const char *msgid1, const char *msgid2, + int plural, unsigned long int n, int category) +#endif +{ +#ifndef HAVE_ALLOCA + struct block_list *block_list = NULL; +#endif + struct loaded_l10nfile *domain; + struct binding *binding; + const char *categoryname; + const char *categoryvalue; + const char *dirname; + char *xdomainname; + char *single_locale; + char *retval; + size_t retlen; + int saved_errno; + struct known_translation_t *search; + struct known_translation_t **foundp = NULL; + size_t msgid_len; +#if defined HAVE_PER_THREAD_LOCALE && !defined IN_LIBGLOCALE + const char *localename; +#endif + size_t domainname_len; + + /* If no real MSGID is given return NULL. */ + if (msgid1 == NULL) + return NULL; + +#ifdef _LIBC + if (category < 0 || category >= __LC_LAST || category == LC_ALL) + /* Bogus. */ + return (plural == 0 + ? (char *) msgid1 + /* Use the Germanic plural rule. */ + : n == 1 ? (char *) msgid1 : (char *) msgid2); +#endif + + /* Preserve the `errno' value. */ + saved_errno = errno; + + gl_rwlock_rdlock (_nl_state_lock); + + /* If DOMAINNAME is NULL, we are interested in the default domain. If + CATEGORY is not LC_MESSAGES this might not make much sense but the + definition left this undefined. */ + if (domainname == NULL) + domainname = _nl_current_default_domain; + + /* OS/2 specific: backward compatibility with older libintl versions */ +#ifdef LC_MESSAGES_COMPAT + if (category == LC_MESSAGES_COMPAT) + category = LC_MESSAGES; +#endif + + msgid_len = strlen (msgid1) + 1; + + /* Try to find the translation among those which we found at + some time. */ + search = (struct known_translation_t *) + alloca (offsetof (struct known_translation_t, msgid) + msgid_len); + memcpy (search->msgid, msgid1, msgid_len); + search->domainname = domainname; + search->category = category; +#ifdef HAVE_PER_THREAD_LOCALE +# ifndef IN_LIBGLOCALE +# ifdef _LIBC + localename = __current_locale_name (category); +# else +# if HAVE_NL_LOCALE_NAME + /* NL_LOCALE_NAME is public glibc API introduced in glibc-2.4. */ + localename = nl_langinfo (NL_LOCALE_NAME (category)); +# else +# if HAVE_STRUCT___LOCALE_STRUCT___NAMES && defined USE_IN_GETTEXT_TESTS + /* The __names field is not public glibc API and must therefore not be used + in code that is installed in public locations. */ + { + locale_t thread_locale = uselocale (NULL); + if (thread_locale != LC_GLOBAL_LOCALE) + localename = thread_locale->__names[category]; + else + localename = ""; + } +# endif +# endif +# endif +# endif + search->localename = localename; +# ifdef IN_LIBGLOCALE + search->encoding = encoding; +# endif + + /* Since tfind/tsearch manage a balanced tree, concurrent tfind and + tsearch calls can be fatal. */ + gl_rwlock_rdlock (tree_lock); + + foundp = (struct known_translation_t **) tfind (search, &root, transcmp); + + gl_rwlock_unlock (tree_lock); + + freea (search); + if (foundp != NULL && (*foundp)->counter == _nl_msg_cat_cntr) + { + /* Now deal with plural. */ + if (plural) + retval = plural_lookup ((*foundp)->domain, n, (*foundp)->translation, + (*foundp)->translation_length); + else + retval = (char *) (*foundp)->translation; + + gl_rwlock_unlock (_nl_state_lock); + __set_errno (saved_errno); + return retval; + } +#endif + + /* See whether this is a SUID binary or not. */ + DETERMINE_SECURE; + + /* First find matching binding. */ +#ifdef IN_LIBGLOCALE + /* We can use a trivial binding, since _nl_find_msg will ignore it anyway, + and _nl_load_domain and _nl_find_domain just pass it through. */ + binding = NULL; + dirname = bindtextdomain (domainname, NULL); +#else + for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next) + { + int compare = strcmp (domainname, binding->domainname); + if (compare == 0) + /* We found it! */ + break; + if (compare < 0) + { + /* It is not in the list. */ + binding = NULL; + break; + } + } + + if (binding == NULL) + dirname = _nl_default_dirname; + else + { + dirname = binding->dirname; +#endif + if (!IS_ABSOLUTE_PATH (dirname)) + { + /* We have a relative path. Make it absolute now. */ + size_t dirname_len = strlen (dirname) + 1; + size_t path_max; + char *resolved_dirname; + char *ret; + + path_max = (unsigned int) PATH_MAX; + path_max += 2; /* The getcwd docs say to do this. */ + + for (;;) + { + resolved_dirname = (char *) alloca (path_max + dirname_len); + ADD_BLOCK (block_list, tmp_dirname); + + __set_errno (0); + ret = getcwd (resolved_dirname, path_max); + if (ret != NULL || errno != ERANGE) + break; + + path_max += path_max / 2; + path_max += PATH_INCR; + } + + if (ret == NULL) + /* We cannot get the current working directory. Don't signal an + error but simply return the default string. */ + goto return_untranslated; + + stpcpy (stpcpy (strchr (resolved_dirname, '\0'), "/"), dirname); + dirname = resolved_dirname; + } +#ifndef IN_LIBGLOCALE + } +#endif + + /* Now determine the symbolic name of CATEGORY and its value. */ + categoryname = category_to_name (category); +#ifdef IN_LIBGLOCALE + categoryvalue = guess_category_value (category, categoryname, localename); +#else + categoryvalue = guess_category_value (category, categoryname); +#endif + + domainname_len = strlen (domainname); + xdomainname = (char *) alloca (strlen (categoryname) + + domainname_len + 5); + ADD_BLOCK (block_list, xdomainname); + + stpcpy ((char *) mempcpy (stpcpy (stpcpy (xdomainname, categoryname), "/"), + domainname, domainname_len), + ".mo"); + + /* Creating working area. */ + single_locale = (char *) alloca (strlen (categoryvalue) + 1); + ADD_BLOCK (block_list, single_locale); + + + /* Search for the given string. This is a loop because we perhaps + got an ordered list of languages to consider for the translation. */ + while (1) + { + /* Make CATEGORYVALUE point to the next element of the list. */ + while (categoryvalue[0] != '\0' && categoryvalue[0] == ':') + ++categoryvalue; + if (categoryvalue[0] == '\0') + { + /* The whole contents of CATEGORYVALUE has been searched but + no valid entry has been found. We solve this situation + by implicitly appending a "C" entry, i.e. no translation + will take place. */ + single_locale[0] = 'C'; + single_locale[1] = '\0'; + } + else + { + char *cp = single_locale; + while (categoryvalue[0] != '\0' && categoryvalue[0] != ':') + *cp++ = *categoryvalue++; + *cp = '\0'; + + /* When this is a SUID binary we must not allow accessing files + outside the dedicated directories. */ + if (ENABLE_SECURE && IS_PATH_WITH_DIR (single_locale)) + /* Ingore this entry. */ + continue; + } + + /* If the current locale value is C (or POSIX) we don't load a + domain. Return the MSGID. */ + if (strcmp (single_locale, "C") == 0 + || strcmp (single_locale, "POSIX") == 0) + break; + + /* Find structure describing the message catalog matching the + DOMAINNAME and CATEGORY. */ + domain = _nl_find_domain (dirname, single_locale, xdomainname, binding); + + if (domain != NULL) + { +#if defined IN_LIBGLOCALE + retval = _nl_find_msg (domain, binding, encoding, msgid1, &retlen); +#else + retval = _nl_find_msg (domain, binding, msgid1, 1, &retlen); +#endif + + if (retval == NULL) + { + int cnt; + + for (cnt = 0; domain->successor[cnt] != NULL; ++cnt) + { +#if defined IN_LIBGLOCALE + retval = _nl_find_msg (domain->successor[cnt], binding, + encoding, msgid1, &retlen); +#else + retval = _nl_find_msg (domain->successor[cnt], binding, + msgid1, 1, &retlen); +#endif + + if (retval != NULL) + { + domain = domain->successor[cnt]; + break; + } + } + } + + /* Returning -1 means that some resource problem exists + (likely memory) and that the strings could not be + converted. Return the original strings. */ + if (__builtin_expect (retval == (char *) -1, 0)) + break; + + if (retval != NULL) + { + /* Found the translation of MSGID1 in domain DOMAIN: + starting at RETVAL, RETLEN bytes. */ + FREE_BLOCKS (block_list); + if (foundp == NULL) + { + /* Create a new entry and add it to the search tree. */ + size_t size; + struct known_translation_t *newp; + + size = offsetof (struct known_translation_t, msgid) + + msgid_len + domainname_len + 1; +#ifdef HAVE_PER_THREAD_LOCALE + size += strlen (localename) + 1; +#endif + newp = (struct known_translation_t *) malloc (size); + if (newp != NULL) + { + char *new_domainname; +#ifdef HAVE_PER_THREAD_LOCALE + char *new_localename; +#endif + + new_domainname = + (char *) mempcpy (newp->msgid, msgid1, msgid_len); + memcpy (new_domainname, domainname, domainname_len + 1); +#ifdef HAVE_PER_THREAD_LOCALE + new_localename = new_domainname + domainname_len + 1; + strcpy (new_localename, localename); +#endif + newp->domainname = new_domainname; + newp->category = category; +#ifdef HAVE_PER_THREAD_LOCALE + newp->localename = new_localename; +#endif +#ifdef IN_LIBGLOCALE + newp->encoding = encoding; +#endif + newp->counter = _nl_msg_cat_cntr; + newp->domain = domain; + newp->translation = retval; + newp->translation_length = retlen; + + gl_rwlock_wrlock (tree_lock); + + /* Insert the entry in the search tree. */ + foundp = (struct known_translation_t **) + tsearch (newp, &root, transcmp); + + gl_rwlock_unlock (tree_lock); + + if (foundp == NULL + || __builtin_expect (*foundp != newp, 0)) + /* The insert failed. */ + free (newp); + } + } + else + { + /* We can update the existing entry. */ + (*foundp)->counter = _nl_msg_cat_cntr; + (*foundp)->domain = domain; + (*foundp)->translation = retval; + (*foundp)->translation_length = retlen; + } + + __set_errno (saved_errno); + + /* Now deal with plural. */ + if (plural) + retval = plural_lookup (domain, n, retval, retlen); + + gl_rwlock_unlock (_nl_state_lock); + return retval; + } + } + } + + return_untranslated: + /* Return the untranslated MSGID. */ + FREE_BLOCKS (block_list); + gl_rwlock_unlock (_nl_state_lock); +#ifndef _LIBC + if (!ENABLE_SECURE) + { + extern void _nl_log_untranslated (const char *logfilename, + const char *domainname, + const char *msgid1, const char *msgid2, + int plural); + const char *logfilename = getenv ("GETTEXT_LOG_UNTRANSLATED"); + + if (logfilename != NULL && logfilename[0] != '\0') + _nl_log_untranslated (logfilename, domainname, msgid1, msgid2, plural); + } +#endif + __set_errno (saved_errno); + return (plural == 0 + ? (char *) msgid1 + /* Use the Germanic plural rule. */ + : n == 1 ? (char *) msgid1 : (char *) msgid2); +} + + +/* Look up the translation of msgid within DOMAIN_FILE and DOMAINBINDING. + Return it if found. Return NULL if not found or in case of a conversion + failure (problem in the particular message catalog). Return (char *) -1 + in case of a memory allocation failure during conversion (only if + ENCODING != NULL resp. CONVERT == true). */ +char * +internal_function +#ifdef IN_LIBGLOCALE +_nl_find_msg (struct loaded_l10nfile *domain_file, + struct binding *domainbinding, const char *encoding, + const char *msgid, + size_t *lengthp) +#else +_nl_find_msg (struct loaded_l10nfile *domain_file, + struct binding *domainbinding, + const char *msgid, int convert, + size_t *lengthp) +#endif +{ + struct loaded_domain *domain; + nls_uint32 nstrings; + size_t act; + char *result; + size_t resultlen; + + if (domain_file->decided <= 0) + _nl_load_domain (domain_file, domainbinding); + + if (domain_file->data == NULL) + return NULL; + + domain = (struct loaded_domain *) domain_file->data; + + nstrings = domain->nstrings; + + /* Locate the MSGID and its translation. */ + if (domain->hash_tab != NULL) + { + /* Use the hashing table. */ + nls_uint32 len = strlen (msgid); + nls_uint32 hash_val = __hash_string (msgid); + nls_uint32 idx = hash_val % domain->hash_size; + nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2)); + + while (1) + { + nls_uint32 nstr = + W (domain->must_swap_hash_tab, domain->hash_tab[idx]); + + if (nstr == 0) + /* Hash table entry is empty. */ + return NULL; + + nstr--; + + /* Compare msgid with the original string at index nstr. + We compare the lengths with >=, not ==, because plural entries + are represented by strings with an embedded NUL. */ + if (nstr < nstrings + ? W (domain->must_swap, domain->orig_tab[nstr].length) >= len + && (strcmp (msgid, + domain->data + W (domain->must_swap, + domain->orig_tab[nstr].offset)) + == 0) + : domain->orig_sysdep_tab[nstr - nstrings].length > len + && (strcmp (msgid, + domain->orig_sysdep_tab[nstr - nstrings].pointer) + == 0)) + { + act = nstr; + goto found; + } + + if (idx >= domain->hash_size - incr) + idx -= domain->hash_size - incr; + else + idx += incr; + } + /* NOTREACHED */ + } + else + { + /* Try the default method: binary search in the sorted array of + messages. */ + size_t top, bottom; + + bottom = 0; + top = nstrings; + while (bottom < top) + { + int cmp_val; + + act = (bottom + top) / 2; + cmp_val = strcmp (msgid, (domain->data + + W (domain->must_swap, + domain->orig_tab[act].offset))); + if (cmp_val < 0) + top = act; + else if (cmp_val > 0) + bottom = act + 1; + else + goto found; + } + /* No translation was found. */ + return NULL; + } + + found: + /* The translation was found at index ACT. If we have to convert the + string to use a different character set, this is the time. */ + if (act < nstrings) + { + result = (char *) + (domain->data + W (domain->must_swap, domain->trans_tab[act].offset)); + resultlen = W (domain->must_swap, domain->trans_tab[act].length) + 1; + } + else + { + result = (char *) domain->trans_sysdep_tab[act - nstrings].pointer; + resultlen = domain->trans_sysdep_tab[act - nstrings].length; + } + +#if defined _LIBC || HAVE_ICONV +# ifdef IN_LIBGLOCALE + if (encoding != NULL) +# else + if (convert) +# endif + { + /* We are supposed to do a conversion. */ +# ifndef IN_LIBGLOCALE + const char *encoding = get_output_charset (domainbinding); +# endif + size_t nconversions; + struct converted_domain *convd; + size_t i; + + /* Protect against reallocation of the table. */ + gl_rwlock_rdlock (domain->conversions_lock); + + /* Search whether a table with converted translations for this + encoding has already been allocated. */ + nconversions = domain->nconversions; + convd = NULL; + + for (i = nconversions; i > 0; ) + { + i--; + if (strcmp (domain->conversions[i].encoding, encoding) == 0) + { + convd = &domain->conversions[i]; + break; + } + } + + gl_rwlock_unlock (domain->conversions_lock); + + if (convd == NULL) + { + /* We have to allocate a new conversions table. */ + gl_rwlock_wrlock (domain->conversions_lock); + + /* Maybe in the meantime somebody added the translation. + Recheck. */ + for (i = nconversions; i > 0; ) + { + i--; + if (strcmp (domain->conversions[i].encoding, encoding) == 0) + { + convd = &domain->conversions[i]; + goto found_convd; + } + } + + { + /* Allocate a table for the converted translations for this + encoding. */ + struct converted_domain *new_conversions = + (struct converted_domain *) + (domain->conversions != NULL + ? realloc (domain->conversions, + (nconversions + 1) * sizeof (struct converted_domain)) + : malloc ((nconversions + 1) * sizeof (struct converted_domain))); + + if (__builtin_expect (new_conversions == NULL, 0)) + { + /* Nothing we can do, no more memory. We cannot use the + translation because it might be encoded incorrectly. */ + unlock_fail: + gl_rwlock_unlock (domain->conversions_lock); + return (char *) -1; + } + + domain->conversions = new_conversions; + + /* Copy the 'encoding' string to permanent storage. */ + encoding = strdup (encoding); + if (__builtin_expect (encoding == NULL, 0)) + /* Nothing we can do, no more memory. We cannot use the + translation because it might be encoded incorrectly. */ + goto unlock_fail; + + convd = &new_conversions[nconversions]; + convd->encoding = encoding; + + /* Find out about the character set the file is encoded with. + This can be found (in textual form) in the entry "". If this + entry does not exist or if this does not contain the 'charset=' + information, we will assume the charset matches the one the + current locale and we don't have to perform any conversion. */ +# ifdef _LIBC + convd->conv = (__gconv_t) -1; +# else +# if HAVE_ICONV + convd->conv = (iconv_t) -1; +# endif +# endif + { + char *nullentry; + size_t nullentrylen; + + /* Get the header entry. This is a recursion, but it doesn't + reallocate domain->conversions because we pass + encoding = NULL or convert = 0, respectively. */ + nullentry = +# ifdef IN_LIBGLOCALE + _nl_find_msg (domain_file, domainbinding, NULL, "", + &nullentrylen); +# else + _nl_find_msg (domain_file, domainbinding, "", 0, &nullentrylen); +# endif + + if (nullentry != NULL) + { + const char *charsetstr; + + charsetstr = strstr (nullentry, "charset="); + if (charsetstr != NULL) + { + size_t len; + char *charset; + const char *outcharset; + + charsetstr += strlen ("charset="); + len = strcspn (charsetstr, " \t\n"); + + charset = (char *) alloca (len + 1); +# if defined _LIBC || HAVE_MEMPCPY + *((char *) mempcpy (charset, charsetstr, len)) = '\0'; +# else + memcpy (charset, charsetstr, len); + charset[len] = '\0'; +# endif + + outcharset = encoding; + +# ifdef _LIBC + /* We always want to use transliteration. */ + outcharset = norm_add_slashes (outcharset, "TRANSLIT"); + charset = norm_add_slashes (charset, ""); + int r = __gconv_open (outcharset, charset, &convd->conv, + GCONV_AVOID_NOCONV); + if (__builtin_expect (r != __GCONV_OK, 0)) + { + /* If the output encoding is the same there is + nothing to do. Otherwise do not use the + translation at all. */ + if (__builtin_expect (r != __GCONV_NULCONV, 1)) + { + gl_rwlock_unlock (domain->conversions_lock); + free ((char *) encoding); + return NULL; + } + + convd->conv = (__gconv_t) -1; + } +# else +# if HAVE_ICONV + /* When using GNU libc >= 2.2 or GNU libiconv >= 1.5, + we want to use transliteration. */ +# if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || __GLIBC__ > 2 \ + || _LIBICONV_VERSION >= 0x0105 + if (strchr (outcharset, '/') == NULL) + { + char *tmp; + + len = strlen (outcharset); + tmp = (char *) alloca (len + 10 + 1); + memcpy (tmp, outcharset, len); + memcpy (tmp + len, "//TRANSLIT", 10 + 1); + outcharset = tmp; + + convd->conv = iconv_open (outcharset, charset); + + freea (outcharset); + } + else +# endif + convd->conv = iconv_open (outcharset, charset); +# endif +# endif + + freea (charset); + } + } + } + convd->conv_tab = NULL; + /* Here domain->conversions is still == new_conversions. */ + domain->nconversions++; + } + + found_convd: + gl_rwlock_unlock (domain->conversions_lock); + } + + if ( +# ifdef _LIBC + convd->conv != (__gconv_t) -1 +# else +# if HAVE_ICONV + convd->conv != (iconv_t) -1 +# endif +# endif + ) + { + /* We are supposed to do a conversion. First allocate an + appropriate table with the same structure as the table + of translations in the file, where we can put the pointers + to the converted strings in. + There is a slight complication with plural entries. They + are represented by consecutive NUL terminated strings. We + handle this case by converting RESULTLEN bytes, including + NULs. */ + + if (convd->conv_tab == NULL + && ((convd->conv_tab = + (char **) calloc (nstrings + domain->n_sysdep_strings, + sizeof (char *))) + == NULL)) + /* Mark that we didn't succeed allocating a table. */ + convd->conv_tab = (char **) -1; + + if (__builtin_expect (convd->conv_tab == (char **) -1, 0)) + /* Nothing we can do, no more memory. We cannot use the + translation because it might be encoded incorrectly. */ + return (char *) -1; + + if (convd->conv_tab[act] == NULL) + { + /* We haven't used this string so far, so it is not + translated yet. Do this now. */ + /* We use a bit more efficient memory handling. + We allocate always larger blocks which get used over + time. This is faster than many small allocations. */ + __libc_lock_define_initialized (static, lock) +# define INITIAL_BLOCK_SIZE 4080 + static unsigned char *freemem; + static size_t freemem_size; + + const unsigned char *inbuf; + unsigned char *outbuf; + int malloc_count; +# ifndef _LIBC + transmem_block_t *transmem_list = NULL; +# endif + + __libc_lock_lock (lock); + + inbuf = (const unsigned char *) result; + outbuf = freemem + sizeof (size_t); + + malloc_count = 0; + while (1) + { + transmem_block_t *newmem; +# ifdef _LIBC + size_t non_reversible; + int res; + + if (freemem_size < sizeof (size_t)) + goto resize_freemem; + + res = __gconv (convd->conv, + &inbuf, inbuf + resultlen, + &outbuf, + outbuf + freemem_size - sizeof (size_t), + &non_reversible); + + if (res == __GCONV_OK || res == __GCONV_EMPTY_INPUT) + break; + + if (res != __GCONV_FULL_OUTPUT) + { + /* We should not use the translation at all, it + is incorrectly encoded. */ + __libc_lock_unlock (lock); + return NULL; + } + + inbuf = (const unsigned char *) result; +# else +# if HAVE_ICONV + const char *inptr = (const char *) inbuf; + size_t inleft = resultlen; + char *outptr = (char *) outbuf; + size_t outleft; + + if (freemem_size < sizeof (size_t)) + goto resize_freemem; + + outleft = freemem_size - sizeof (size_t); + if (iconv (convd->conv, + (ICONV_CONST char **) &inptr, &inleft, + &outptr, &outleft) + != (size_t) (-1)) + { + outbuf = (unsigned char *) outptr; + break; + } + if (errno != E2BIG) + { + __libc_lock_unlock (lock); + return NULL; + } +# endif +# endif + + resize_freemem: + /* We must allocate a new buffer or resize the old one. */ + if (malloc_count > 0) + { + ++malloc_count; + freemem_size = malloc_count * INITIAL_BLOCK_SIZE; + newmem = (transmem_block_t *) realloc (transmem_list, + freemem_size); +# ifdef _LIBC + if (newmem != NULL) + transmem_list = transmem_list->next; + else + { + struct transmem_list *old = transmem_list; + + transmem_list = transmem_list->next; + free (old); + } +# endif + } + else + { + malloc_count = 1; + freemem_size = INITIAL_BLOCK_SIZE; + newmem = (transmem_block_t *) malloc (freemem_size); + } + if (__builtin_expect (newmem == NULL, 0)) + { + freemem = NULL; + freemem_size = 0; + __libc_lock_unlock (lock); + return (char *) -1; + } + +# ifdef _LIBC + /* Add the block to the list of blocks we have to free + at some point. */ + newmem->next = transmem_list; + transmem_list = newmem; + + freemem = (unsigned char *) newmem->data; + freemem_size -= offsetof (struct transmem_list, data); +# else + transmem_list = newmem; + freemem = newmem; +# endif + + outbuf = freemem + sizeof (size_t); + } + + /* We have now in our buffer a converted string. Put this + into the table of conversions. */ + *(size_t *) freemem = outbuf - freemem - sizeof (size_t); + convd->conv_tab[act] = (char *) freemem; + /* Shrink freemem, but keep it aligned. */ + freemem_size -= outbuf - freemem; + freemem = outbuf; + freemem += freemem_size & (alignof (size_t) - 1); + freemem_size = freemem_size & ~ (alignof (size_t) - 1); + + __libc_lock_unlock (lock); + } + + /* Now convd->conv_tab[act] contains the translation of all + the plural variants. */ + result = convd->conv_tab[act] + sizeof (size_t); + resultlen = *(size_t *) convd->conv_tab[act]; + } + } + + /* The result string is converted. */ + +#endif /* _LIBC || HAVE_ICONV */ + + *lengthp = resultlen; + return result; +} + + +/* Look up a plural variant. */ +static char * +internal_function +plural_lookup (struct loaded_l10nfile *domain, unsigned long int n, + const char *translation, size_t translation_len) +{ + struct loaded_domain *domaindata = (struct loaded_domain *) domain->data; + unsigned long int index; + const char *p; + + index = plural_eval (domaindata->plural, n); + if (index >= domaindata->nplurals) + /* This should never happen. It means the plural expression and the + given maximum value do not match. */ + index = 0; + + /* Skip INDEX strings at TRANSLATION. */ + p = translation; + while (index-- > 0) + { +#ifdef _LIBC + p = __rawmemchr (p, '\0'); +#else + p = strchr (p, '\0'); +#endif + /* And skip over the NUL byte. */ + p++; + + if (p >= translation + translation_len) + /* This should never happen. It means the plural expression + evaluated to a value larger than the number of variants + available for MSGID1. */ + return (char *) translation; + } + return (char *) p; +} + +#ifndef _LIBC +/* Return string representation of locale CATEGORY. */ +static const char * +internal_function +category_to_name (int category) +{ + const char *retval; + + switch (category) + { +#ifdef LC_COLLATE + case LC_COLLATE: + retval = "LC_COLLATE"; + break; +#endif +#ifdef LC_CTYPE + case LC_CTYPE: + retval = "LC_CTYPE"; + break; +#endif +#ifdef LC_MONETARY + case LC_MONETARY: + retval = "LC_MONETARY"; + break; +#endif +#ifdef LC_NUMERIC + case LC_NUMERIC: + retval = "LC_NUMERIC"; + break; +#endif +#ifdef LC_TIME + case LC_TIME: + retval = "LC_TIME"; + break; +#endif +#ifdef LC_MESSAGES + case LC_MESSAGES: + retval = "LC_MESSAGES"; + break; +#endif +#ifdef LC_RESPONSE + case LC_RESPONSE: + retval = "LC_RESPONSE"; + break; +#endif +#ifdef LC_ALL + case LC_ALL: + /* This might not make sense but is perhaps better than any other + value. */ + retval = "LC_ALL"; + break; +#endif + default: + /* If you have a better idea for a default value let me know. */ + retval = "LC_XXX"; + } + + return retval; +} +#endif + +/* Guess value of current locale from value of the environment variables + or system-dependent defaults. */ +static const char * +internal_function +#ifdef IN_LIBGLOCALE +guess_category_value (int category, const char *categoryname, + const char *locale) + +#else +guess_category_value (int category, const char *categoryname) +#endif +{ + const char *language; +#ifndef IN_LIBGLOCALE + const char *locale; +# ifndef _LIBC + const char *language_default; + int locale_defaulted; +# endif +#endif + + /* We use the settings in the following order: + 1. The value of the environment variable 'LANGUAGE'. This is a GNU + extension. Its value can be a colon-separated list of locale names. + 2. The value of the environment variable 'LC_ALL', 'LC_xxx', or 'LANG'. + More precisely, the first among these that is set to a non-empty value. + This is how POSIX specifies it. The value is a single locale name. + 3. A system-dependent preference list of languages. Its value can be a + colon-separated list of locale names. + 4. A system-dependent default locale name. + This way: + - System-dependent settings can be overridden by environment variables. + - If the system provides both a list of languages and a default locale, + the former is used. */ + +#ifndef IN_LIBGLOCALE + /* Fetch the locale name, through the POSIX method of looking to `LC_ALL', + `LC_xxx', and `LANG'. On some systems this can be done by the + `setlocale' function itself. */ +# ifdef _LIBC + locale = __current_locale_name (category); +# else +# if HAVE_STRUCT___LOCALE_STRUCT___NAMES && defined USE_IN_GETTEXT_TESTS + /* The __names field is not public glibc API and must therefore not be used + in code that is installed in public locations. */ + locale_t thread_locale = uselocale (NULL); + if (thread_locale != LC_GLOBAL_LOCALE) + { + locale = thread_locale->__names[category]; + locale_defaulted = 0; + } + else +# endif + { + locale = _nl_locale_name_posix (category, categoryname); + locale_defaulted = 0; + if (locale == NULL) + { + locale = _nl_locale_name_default (); + locale_defaulted = 1; + } + } +# endif +#endif + + /* Ignore LANGUAGE and its system-dependent analogon if the locale is set + to "C" because + 1. "C" locale usually uses the ASCII encoding, and most international + messages use non-ASCII characters. These characters get displayed + as question marks (if using glibc's iconv()) or as invalid 8-bit + characters (because other iconv()s refuse to convert most non-ASCII + characters to ASCII). In any case, the output is ugly. + 2. The precise output of some programs in the "C" locale is specified + by POSIX and should not depend on environment variables like + "LANGUAGE" or system-dependent information. We allow such programs + to use gettext(). */ + if (strcmp (locale, "C") == 0) + return locale; + + /* The highest priority value is the value of the 'LANGUAGE' environment + variable. */ + language = getenv ("LANGUAGE"); + if (language != NULL && language[0] != '\0') + return language; +#if !defined IN_LIBGLOCALE && !defined _LIBC + /* The next priority value is the locale name, if not defaulted. */ + if (locale_defaulted) + { + /* The next priority value is the default language preferences list. */ + language_default = _nl_language_preferences_default (); + if (language_default != NULL) + return language_default; + } + /* The least priority value is the locale name, if defaulted. */ +#endif + return locale; +} + +#if (defined _LIBC || HAVE_ICONV) && !defined IN_LIBGLOCALE +/* Returns the output charset. */ +static const char * +internal_function +get_output_charset (struct binding *domainbinding) +{ + /* The output charset should normally be determined by the locale. But + sometimes the locale is not used or not correctly set up, so we provide + a possibility for the user to override this: the OUTPUT_CHARSET + environment variable. Moreover, the value specified through + bind_textdomain_codeset overrides both. */ + if (domainbinding != NULL && domainbinding->codeset != NULL) + return domainbinding->codeset; + else + { + /* For speed reasons, we look at the value of OUTPUT_CHARSET only + once. This is a user variable that is not supposed to change + during a program run. */ + static char *output_charset_cache; + static int output_charset_cached; + + if (!output_charset_cached) + { + const char *value = getenv ("OUTPUT_CHARSET"); + + if (value != NULL && value[0] != '\0') + { + size_t len = strlen (value) + 1; + char *value_copy = (char *) malloc (len); + + if (value_copy != NULL) + memcpy (value_copy, value, len); + output_charset_cache = value_copy; + } + output_charset_cached = 1; + } + + if (output_charset_cache != NULL) + return output_charset_cache; + else + { +# ifdef _LIBC + return _NL_CURRENT (LC_CTYPE, CODESET); +# else +# if HAVE_ICONV + return locale_charset (); +# endif +# endif + } + } +} +#endif + +/* @@ begin of epilog @@ */ + +/* We don't want libintl.a to depend on any other library. So we + avoid the non-standard function stpcpy. In GNU C Library this + function is available, though. Also allow the symbol HAVE_STPCPY + to be defined. */ +#if !_LIBC && !HAVE_STPCPY +static char * +stpcpy (char *dest, const char *src) +{ + while ((*dest++ = *src++) != '\0') + /* Do nothing. */ ; + return dest - 1; +} +#endif + +#if !_LIBC && !HAVE_MEMPCPY +static void * +mempcpy (void *dest, const void *src, size_t n) +{ + return (void *) ((char *) memcpy (dest, src, n) + n); +} +#endif + +#if !_LIBC && !HAVE_TSEARCH +# include "tsearch.c" +#endif + + +#ifdef _LIBC +/* If we want to free all resources we have to do some work at + program's end. */ +libc_freeres_fn (free_mem) +{ + void *old; + + while (_nl_domain_bindings != NULL) + { + struct binding *oldp = _nl_domain_bindings; + _nl_domain_bindings = _nl_domain_bindings->next; + if (oldp->dirname != _nl_default_dirname) + /* Yes, this is a pointer comparison. */ + free (oldp->dirname); + free (oldp->codeset); + free (oldp); + } + + if (_nl_current_default_domain != _nl_default_default_domain) + /* Yes, again a pointer comparison. */ + free ((char *) _nl_current_default_domain); + + /* Remove the search tree with the known translations. */ + __tdestroy (root, free); + root = NULL; + + while (transmem_list != NULL) + { + old = transmem_list; + transmem_list = transmem_list->next; + free (old); + } +} +#endif diff --git a/xchat-2.8.8/intl/dcngettext.c b/xchat-2.8.8/intl/dcngettext.c new file mode 100644 index 0000000..eb36833 --- /dev/null +++ b/xchat-2.8.8/intl/dcngettext.c @@ -0,0 +1,57 @@ +/* Implementation of the dcngettext(3) function. + Copyright (C) 1995-1999, 2000-2003 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DCNGETTEXT __dcngettext +# define DCIGETTEXT __dcigettext +#else +# define DCNGETTEXT libintl_dcngettext +# define DCIGETTEXT libintl_dcigettext +#endif + +/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY + locale. */ +char * +DCNGETTEXT (const char *domainname, + const char *msgid1, const char *msgid2, unsigned long int n, + int category) +{ + return DCIGETTEXT (domainname, msgid1, msgid2, 1, n, category); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__dcngettext, dcngettext); +#endif diff --git a/xchat-2.8.8/intl/dgettext.c b/xchat-2.8.8/intl/dgettext.c new file mode 100644 index 0000000..9b0d0de --- /dev/null +++ b/xchat-2.8.8/intl/dgettext.c @@ -0,0 +1,58 @@ +/* Implementation of the dgettext(3) function. + Copyright (C) 1995-1997, 2000-2003 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "gettextP.h" + +#include + +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DGETTEXT __dgettext +# define DCGETTEXT INTUSE(__dcgettext) +#else +# define DGETTEXT libintl_dgettext +# define DCGETTEXT libintl_dcgettext +#endif + +/* Look up MSGID in the DOMAINNAME message catalog of the current + LC_MESSAGES locale. */ +char * +DGETTEXT (const char *domainname, const char *msgid) +{ + return DCGETTEXT (domainname, msgid, LC_MESSAGES); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__dgettext, dgettext); +#endif diff --git a/xchat-2.8.8/intl/dngettext.c b/xchat-2.8.8/intl/dngettext.c new file mode 100644 index 0000000..3278438 --- /dev/null +++ b/xchat-2.8.8/intl/dngettext.c @@ -0,0 +1,59 @@ +/* Implementation of the dngettext(3) function. + Copyright (C) 1995-1997, 2000-2003 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "gettextP.h" + +#include + +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DNGETTEXT __dngettext +# define DCNGETTEXT __dcngettext +#else +# define DNGETTEXT libintl_dngettext +# define DCNGETTEXT libintl_dcngettext +#endif + +/* Look up MSGID in the DOMAINNAME message catalog of the current + LC_MESSAGES locale and skip message according to the plural form. */ +char * +DNGETTEXT (const char *domainname, + const char *msgid1, const char *msgid2, unsigned long int n) +{ + return DCNGETTEXT (domainname, msgid1, msgid2, n, LC_MESSAGES); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__dngettext, dngettext); +#endif diff --git a/xchat-2.8.8/intl/eval-plural.h b/xchat-2.8.8/intl/eval-plural.h new file mode 100644 index 0000000..21eecb3 --- /dev/null +++ b/xchat-2.8.8/intl/eval-plural.h @@ -0,0 +1,108 @@ +/* Plural expression evaluation. + Copyright (C) 2000-2003, 2007 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef STATIC +#define STATIC static +#endif + +/* Evaluate the plural expression and return an index value. */ +STATIC +unsigned long int +internal_function +plural_eval (const struct expression *pexp, unsigned long int n) +{ + switch (pexp->nargs) + { + case 0: + switch (pexp->operation) + { + case var: + return n; + case num: + return pexp->val.num; + default: + break; + } + /* NOTREACHED */ + break; + case 1: + { + /* pexp->operation must be lnot. */ + unsigned long int arg = plural_eval (pexp->val.args[0], n); + return ! arg; + } + case 2: + { + unsigned long int leftarg = plural_eval (pexp->val.args[0], n); + if (pexp->operation == lor) + return leftarg || plural_eval (pexp->val.args[1], n); + else if (pexp->operation == land) + return leftarg && plural_eval (pexp->val.args[1], n); + else + { + unsigned long int rightarg = plural_eval (pexp->val.args[1], n); + + switch (pexp->operation) + { + case mult: + return leftarg * rightarg; + case divide: +#if !INTDIV0_RAISES_SIGFPE + if (rightarg == 0) + raise (SIGFPE); +#endif + return leftarg / rightarg; + case module: +#if !INTDIV0_RAISES_SIGFPE + if (rightarg == 0) + raise (SIGFPE); +#endif + return leftarg % rightarg; + case plus: + return leftarg + rightarg; + case minus: + return leftarg - rightarg; + case less_than: + return leftarg < rightarg; + case greater_than: + return leftarg > rightarg; + case less_or_equal: + return leftarg <= rightarg; + case greater_or_equal: + return leftarg >= rightarg; + case equal: + return leftarg == rightarg; + case not_equal: + return leftarg != rightarg; + default: + break; + } + } + /* NOTREACHED */ + break; + } + case 3: + { + /* pexp->operation must be qmop. */ + unsigned long int boolarg = plural_eval (pexp->val.args[0], n); + return plural_eval (pexp->val.args[boolarg ? 1 : 2], n); + } + } + /* NOTREACHED */ + return 0; +} diff --git a/xchat-2.8.8/intl/explodename.c b/xchat-2.8.8/intl/explodename.c new file mode 100644 index 0000000..eb5dd75 --- /dev/null +++ b/xchat-2.8.8/intl/explodename.c @@ -0,0 +1,135 @@ +/* Copyright (C) 1995-1998, 2000-2001, 2003, 2005, 2007 Free Software Foundation, Inc. + Contributed by Ulrich Drepper , 1995. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +#include "loadinfo.h" + +/* On some strange systems still no definition of NULL is found. Sigh! */ +#ifndef NULL +# if defined __STDC__ && __STDC__ +# define NULL ((void *) 0) +# else +# define NULL 0 +# endif +#endif + +/* @@ end of prolog @@ */ + +/* Split a locale name NAME into a leading language part and all the + rest. Return a pointer to the first character after the language, + i.e. to the first byte of the rest. */ +static char *_nl_find_language (const char *name); + +static char * +_nl_find_language (const char *name) +{ + while (name[0] != '\0' && name[0] != '_' && name[0] != '@' && name[0] != '.') + ++name; + + return (char *) name; +} + + +int +_nl_explode_name (char *name, + const char **language, const char **modifier, + const char **territory, const char **codeset, + const char **normalized_codeset) +{ + char *cp; + int mask; + + *modifier = NULL; + *territory = NULL; + *codeset = NULL; + *normalized_codeset = NULL; + + /* Now we determine the single parts of the locale name. First + look for the language. Termination symbols are `_', '.', and `@'. */ + mask = 0; + *language = cp = name; + cp = _nl_find_language (*language); + + if (*language == cp) + /* This does not make sense: language has to be specified. Use + this entry as it is without exploding. Perhaps it is an alias. */ + cp = strchr (*language, '\0'); + else + { + if (cp[0] == '_') + { + /* Next is the territory. */ + cp[0] = '\0'; + *territory = ++cp; + + while (cp[0] != '\0' && cp[0] != '.' && cp[0] != '@') + ++cp; + + mask |= XPG_TERRITORY; + } + + if (cp[0] == '.') + { + /* Next is the codeset. */ + cp[0] = '\0'; + *codeset = ++cp; + + while (cp[0] != '\0' && cp[0] != '@') + ++cp; + + mask |= XPG_CODESET; + + if (*codeset != cp && (*codeset)[0] != '\0') + { + *normalized_codeset = _nl_normalize_codeset (*codeset, + cp - *codeset); + if (*normalized_codeset == NULL) + return -1; + else if (strcmp (*codeset, *normalized_codeset) == 0) + free ((char *) *normalized_codeset); + else + mask |= XPG_NORM_CODESET; + } + } + } + + if (cp[0] == '@') + { + /* Next is the modifier. */ + cp[0] = '\0'; + *modifier = ++cp; + + if (cp[0] != '\0') + mask |= XPG_MODIFIER; + } + + if (*territory != NULL && (*territory)[0] == '\0') + mask &= ~XPG_TERRITORY; + + if (*codeset != NULL && (*codeset)[0] == '\0') + mask &= ~XPG_CODESET; + + return mask; +} diff --git a/xchat-2.8.8/intl/export.h b/xchat-2.8.8/intl/export.h new file mode 100644 index 0000000..b5c47ad --- /dev/null +++ b/xchat-2.8.8/intl/export.h @@ -0,0 +1,6 @@ + +#if @HAVE_VISIBILITY@ && BUILDING_LIBINTL +#define LIBINTL_DLL_EXPORTED __attribute__((__visibility__("default"))) +#else +#define LIBINTL_DLL_EXPORTED +#endif diff --git a/xchat-2.8.8/intl/finddomain.c b/xchat-2.8.8/intl/finddomain.c new file mode 100644 index 0000000..cab2c99 --- /dev/null +++ b/xchat-2.8.8/intl/finddomain.c @@ -0,0 +1,212 @@ +/* Handle list of needed message catalogs + Copyright (C) 1995-1999, 2000-2001, 2003-2007 Free Software Foundation, Inc. + Written by Ulrich Drepper , 1995. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include + +#if defined HAVE_UNISTD_H || defined _LIBC +# include +#endif + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* Handle multi-threaded applications. */ +#ifdef _LIBC +# include +# define gl_rwlock_define_initialized __libc_rwlock_define_initialized +# define gl_rwlock_rdlock __libc_rwlock_rdlock +# define gl_rwlock_wrlock __libc_rwlock_wrlock +# define gl_rwlock_unlock __libc_rwlock_unlock +#else +# include "lock.h" +#endif + +/* @@ end of prolog @@ */ +/* List of already loaded domains. */ +static struct loaded_l10nfile *_nl_loaded_domains; + + +/* Return a data structure describing the message catalog described by + the DOMAINNAME and CATEGORY parameters with respect to the currently + established bindings. */ +struct loaded_l10nfile * +internal_function +_nl_find_domain (const char *dirname, char *locale, + const char *domainname, struct binding *domainbinding) +{ + struct loaded_l10nfile *retval; + const char *language; + const char *modifier; + const char *territory; + const char *codeset; + const char *normalized_codeset; + const char *alias_value; + int mask; + + /* LOCALE can consist of up to four recognized parts for the XPG syntax: + + language[_territory][.codeset][@modifier] + + Beside the first part all of them are allowed to be missing. If + the full specified locale is not found, the less specific one are + looked for. The various parts will be stripped off according to + the following order: + (1) codeset + (2) normalized codeset + (3) territory + (4) modifier + */ + + /* We need to protect modifying the _NL_LOADED_DOMAINS data. */ + gl_rwlock_define_initialized (static, lock); + gl_rwlock_rdlock (lock); + + /* If we have already tested for this locale entry there has to + be one data set in the list of loaded domains. */ + retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname, + strlen (dirname) + 1, 0, locale, NULL, NULL, + NULL, NULL, domainname, 0); + + gl_rwlock_unlock (lock); + + if (retval != NULL) + { + /* We know something about this locale. */ + int cnt; + + if (retval->decided <= 0) + _nl_load_domain (retval, domainbinding); + + if (retval->data != NULL) + return retval; + + for (cnt = 0; retval->successor[cnt] != NULL; ++cnt) + { + if (retval->successor[cnt]->decided <= 0) + _nl_load_domain (retval->successor[cnt], domainbinding); + + if (retval->successor[cnt]->data != NULL) + break; + } + + return retval; + /* NOTREACHED */ + } + + /* See whether the locale value is an alias. If yes its value + *overwrites* the alias name. No test for the original value is + done. */ + alias_value = _nl_expand_alias (locale); + if (alias_value != NULL) + { +#if defined _LIBC || defined HAVE_STRDUP + locale = strdup (alias_value); + if (locale == NULL) + return NULL; +#else + size_t len = strlen (alias_value) + 1; + locale = (char *) malloc (len); + if (locale == NULL) + return NULL; + + memcpy (locale, alias_value, len); +#endif + } + + /* Now we determine the single parts of the locale name. First + look for the language. Termination symbols are `_', '.', and `@'. */ + mask = _nl_explode_name (locale, &language, &modifier, &territory, + &codeset, &normalized_codeset); + if (mask == -1) + /* This means we are out of core. */ + return NULL; + + /* We need to protect modifying the _NL_LOADED_DOMAINS data. */ + gl_rwlock_wrlock (lock); + + /* Create all possible locale entries which might be interested in + generalization. */ + retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname, + strlen (dirname) + 1, mask, language, territory, + codeset, normalized_codeset, modifier, + domainname, 1); + + gl_rwlock_unlock (lock); + + if (retval == NULL) + /* This means we are out of core. */ + goto out; + + if (retval->decided <= 0) + _nl_load_domain (retval, domainbinding); + if (retval->data == NULL) + { + int cnt; + for (cnt = 0; retval->successor[cnt] != NULL; ++cnt) + { + if (retval->successor[cnt]->decided <= 0) + _nl_load_domain (retval->successor[cnt], domainbinding); + if (retval->successor[cnt]->data != NULL) + break; + } + } + + /* The room for an alias was dynamically allocated. Free it now. */ + if (alias_value != NULL) + free (locale); + +out: + /* The space for normalized_codeset is dynamically allocated. Free it. */ + if (mask & XPG_NORM_CODESET) + free ((void *) normalized_codeset); + + return retval; +} + + +#ifdef _LIBC +/* This is called from iconv/gconv_db.c's free_mem, as locales must + be freed before freeing gconv steps arrays. */ +void __libc_freeres_fn_section +_nl_finddomain_subfreeres () +{ + struct loaded_l10nfile *runp = _nl_loaded_domains; + + while (runp != NULL) + { + struct loaded_l10nfile *here = runp; + if (runp->data != NULL) + _nl_unload_domain ((struct loaded_domain *) runp->data); + runp = runp->next; + free ((char *) here->filename); + free (here); + } +} +#endif diff --git a/xchat-2.8.8/intl/gettext.c b/xchat-2.8.8/intl/gettext.c new file mode 100644 index 0000000..d82d439 --- /dev/null +++ b/xchat-2.8.8/intl/gettext.c @@ -0,0 +1,63 @@ +/* Implementation of gettext(3) function. + Copyright (C) 1995, 1997, 2000-2003 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef _LIBC +# define __need_NULL +# include +#else +# include /* Just for NULL. */ +#endif + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define GETTEXT __gettext +# define DCGETTEXT INTUSE(__dcgettext) +#else +# define GETTEXT libintl_gettext +# define DCGETTEXT libintl_dcgettext +#endif + +/* Look up MSGID in the current default message catalog for the current + LC_MESSAGES locale. If not found, returns MSGID itself (the default + text). */ +char * +GETTEXT (const char *msgid) +{ + return DCGETTEXT (NULL, msgid, LC_MESSAGES); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__gettext, gettext); +#endif diff --git a/xchat-2.8.8/intl/gettextP.h b/xchat-2.8.8/intl/gettextP.h new file mode 100644 index 0000000..5706fb5 --- /dev/null +++ b/xchat-2.8.8/intl/gettextP.h @@ -0,0 +1,297 @@ +/* Header describing internals of libintl library. + Copyright (C) 1995-1999, 2000-2007 Free Software Foundation, Inc. + Written by Ulrich Drepper , 1995. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _GETTEXTP_H +#define _GETTEXTP_H + +#include /* Get size_t. */ + +#ifdef _LIBC +# include "../iconv/gconv_int.h" +#else +# if HAVE_ICONV +# include +# endif +#endif + +/* Handle multi-threaded applications. */ +#ifdef _LIBC +# include +# define gl_rwlock_define __libc_rwlock_define +#else +# include "lock.h" +#endif + +#ifdef _LIBC +extern char *__gettext (const char *__msgid); +extern char *__dgettext (const char *__domainname, const char *__msgid); +extern char *__dcgettext (const char *__domainname, const char *__msgid, + int __category); +extern char *__ngettext (const char *__msgid1, const char *__msgid2, + unsigned long int __n); +extern char *__dngettext (const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int n); +extern char *__dcngettext (const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int __n, int __category); +extern char *__dcigettext (const char *__domainname, + const char *__msgid1, const char *__msgid2, + int __plural, unsigned long int __n, + int __category); +extern char *__textdomain (const char *__domainname); +extern char *__bindtextdomain (const char *__domainname, + const char *__dirname); +extern char *__bind_textdomain_codeset (const char *__domainname, + const char *__codeset); +extern void _nl_finddomain_subfreeres (void) attribute_hidden; +extern void _nl_unload_domain (struct loaded_domain *__domain) + internal_function attribute_hidden; +#else +/* Declare the exported libintl_* functions, in a way that allows us to + call them under their real name. */ +# undef _INTL_REDIRECT_INLINE +# undef _INTL_REDIRECT_MACROS +# define _INTL_REDIRECT_MACROS +# include "libgnuintl.h" +# ifdef IN_LIBGLOCALE +extern char *gl_dcigettext (const char *__domainname, + const char *__msgid1, const char *__msgid2, + int __plural, unsigned long int __n, + int __category, + const char *__localename, const char *__encoding); +# else +extern char *libintl_dcigettext (const char *__domainname, + const char *__msgid1, const char *__msgid2, + int __plural, unsigned long int __n, + int __category); +# endif +#endif + +#include "loadinfo.h" + +#include "gmo.h" /* Get nls_uint32. */ + +/* @@ end of prolog @@ */ + +#ifndef internal_function +# define internal_function +#endif + +#ifndef attribute_hidden +# define attribute_hidden +#endif + +/* Tell the compiler when a conditional or integer expression is + almost always true or almost always false. */ +#ifndef HAVE_BUILTIN_EXPECT +# define __builtin_expect(expr, val) (expr) +#endif + +#ifndef W +# define W(flag, data) ((flag) ? SWAP (data) : (data)) +#endif + + +#ifdef _LIBC +# include +# define SWAP(i) bswap_32 (i) +#else +static inline nls_uint32 +# ifdef __cplusplus +SWAP (nls_uint32 i) +# else +SWAP (i) + nls_uint32 i; +# endif +{ + return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24); +} +#endif + + +/* In-memory representation of system dependent string. */ +struct sysdep_string_desc +{ + /* Length of addressed string, including the trailing NUL. */ + size_t length; + /* Pointer to addressed string. */ + const char *pointer; +}; + +/* Cache of translated strings after charset conversion. + Note: The strings are converted to the target encoding only on an as-needed + basis. */ +struct converted_domain +{ + /* The target encoding name. */ + const char *encoding; + /* The descriptor for conversion from the message catalog's encoding to + this target encoding. */ +#ifdef _LIBC + __gconv_t conv; +#else +# if HAVE_ICONV + iconv_t conv; +# endif +#endif + /* The table of translated strings after charset conversion. */ + char **conv_tab; +}; + +/* The representation of an opened message catalog. */ +struct loaded_domain +{ + /* Pointer to memory containing the .mo file. */ + const char *data; + /* 1 if the memory is mmap()ed, 0 if the memory is malloc()ed. */ + int use_mmap; + /* Size of mmap()ed memory. */ + size_t mmap_size; + /* 1 if the .mo file uses a different endianness than this machine. */ + int must_swap; + /* Pointer to additional malloc()ed memory. */ + void *malloced; + + /* Number of static strings pairs. */ + nls_uint32 nstrings; + /* Pointer to descriptors of original strings in the file. */ + const struct string_desc *orig_tab; + /* Pointer to descriptors of translated strings in the file. */ + const struct string_desc *trans_tab; + + /* Number of system dependent strings pairs. */ + nls_uint32 n_sysdep_strings; + /* Pointer to descriptors of original sysdep strings. */ + const struct sysdep_string_desc *orig_sysdep_tab; + /* Pointer to descriptors of translated sysdep strings. */ + const struct sysdep_string_desc *trans_sysdep_tab; + + /* Size of hash table. */ + nls_uint32 hash_size; + /* Pointer to hash table. */ + const nls_uint32 *hash_tab; + /* 1 if the hash table uses a different endianness than this machine. */ + int must_swap_hash_tab; + + /* Cache of charset conversions of the translated strings. */ + struct converted_domain *conversions; + size_t nconversions; + gl_rwlock_define (, conversions_lock) + + const struct expression *plural; + unsigned long int nplurals; +}; + +/* We want to allocate a string at the end of the struct. But ISO C + doesn't allow zero sized arrays. */ +#ifdef __GNUC__ +# define ZERO 0 +#else +# define ZERO 1 +#endif + +/* A set of settings bound to a message domain. Used to store settings + from bindtextdomain() and bind_textdomain_codeset(). */ +struct binding +{ + struct binding *next; + char *dirname; + char *codeset; + char domainname[ZERO]; +}; + +/* A counter which is incremented each time some previous translations + become invalid. + This variable is part of the external ABI of the GNU libintl. */ +#ifdef IN_LIBGLOCALE +# include +extern LIBGLOCALE_DLL_EXPORTED int _nl_msg_cat_cntr; +#else +extern LIBINTL_DLL_EXPORTED int _nl_msg_cat_cntr; +#endif + +#ifndef _LIBC +extern const char *_nl_language_preferences_default (void); +# define gl_locale_name_canonicalize _nl_locale_name_canonicalize +extern void _nl_locale_name_canonicalize (char *name); +# define gl_locale_name_posix _nl_locale_name_posix +extern const char *_nl_locale_name_posix (int category, + const char *categoryname); +# define gl_locale_name_default _nl_locale_name_default +extern const char *_nl_locale_name_default (void); +# define gl_locale_name _nl_locale_name +extern const char *_nl_locale_name (int category, const char *categoryname); +#endif + +struct loaded_l10nfile *_nl_find_domain (const char *__dirname, char *__locale, + const char *__domainname, + struct binding *__domainbinding) + internal_function; +void _nl_load_domain (struct loaded_l10nfile *__domain, + struct binding *__domainbinding) + internal_function; + +#ifdef IN_LIBGLOCALE +char *_nl_find_msg (struct loaded_l10nfile *domain_file, + struct binding *domainbinding, const char *encoding, + const char *msgid, + size_t *lengthp) + internal_function; +#else +char *_nl_find_msg (struct loaded_l10nfile *domain_file, + struct binding *domainbinding, const char *msgid, + int convert, size_t *lengthp) + internal_function; +#endif + +/* The internal variables in the standalone libintl.a must have different + names than the internal variables in GNU libc, otherwise programs + using libintl.a cannot be linked statically. */ +#if !defined _LIBC +# define _nl_default_dirname libintl_nl_default_dirname +# define _nl_domain_bindings libintl_nl_domain_bindings +#endif + +/* Contains the default location of the message catalogs. */ +extern const char _nl_default_dirname[]; +#ifdef _LIBC +libc_hidden_proto (_nl_default_dirname) +#endif + +/* List with bindings of specific domains. */ +extern struct binding *_nl_domain_bindings; + +/* The internal variables in the standalone libintl.a must have different + names than the internal variables in GNU libc, otherwise programs + using libintl.a cannot be linked statically. */ +#if !defined _LIBC +# define _nl_default_default_domain libintl_nl_default_default_domain +# define _nl_current_default_domain libintl_nl_current_default_domain +#endif + +/* Name of the default text domain. */ +extern const char _nl_default_default_domain[] attribute_hidden; + +/* Default text domain in which entries for gettext(3) are to be found. */ +extern const char *_nl_current_default_domain attribute_hidden; + +/* @@ begin of epilog @@ */ + +#endif /* gettextP.h */ diff --git a/xchat-2.8.8/intl/gmo.h b/xchat-2.8.8/intl/gmo.h new file mode 100644 index 0000000..da9dbaa --- /dev/null +++ b/xchat-2.8.8/intl/gmo.h @@ -0,0 +1,152 @@ +/* Description of GNU message catalog format: general file layout. + Copyright (C) 1995, 1997, 2000-2002, 2004, 2006 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _GETTEXT_H +#define _GETTEXT_H 1 + +#include + +/* @@ end of prolog @@ */ + +/* The magic number of the GNU message catalog format. */ +#define _MAGIC 0x950412de +#define _MAGIC_SWAPPED 0xde120495 + +/* Revision number of the currently used .mo (binary) file format. */ +#define MO_REVISION_NUMBER 0 +#define MO_REVISION_NUMBER_WITH_SYSDEP_I 1 + +/* The following contortions are an attempt to use the C preprocessor + to determine an unsigned integral type that is 32 bits wide. An + alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but + as of version autoconf-2.13, the AC_CHECK_SIZEOF macro doesn't work + when cross-compiling. */ + +#if __STDC__ +# define UINT_MAX_32_BITS 4294967295U +#else +# define UINT_MAX_32_BITS 0xFFFFFFFF +#endif + +/* If UINT_MAX isn't defined, assume it's a 32-bit type. + This should be valid for all systems GNU cares about because + that doesn't include 16-bit systems, and only modern systems + (that certainly have ) have 64+-bit integral types. */ + +#ifndef UINT_MAX +# define UINT_MAX UINT_MAX_32_BITS +#endif + +#if UINT_MAX == UINT_MAX_32_BITS +typedef unsigned nls_uint32; +#else +# if USHRT_MAX == UINT_MAX_32_BITS +typedef unsigned short nls_uint32; +# else +# if ULONG_MAX == UINT_MAX_32_BITS +typedef unsigned long nls_uint32; +# else + /* The following line is intended to throw an error. Using #error is + not portable enough. */ + "Cannot determine unsigned 32-bit data type." +# endif +# endif +#endif + + +/* Header for binary .mo file format. */ +struct mo_file_header +{ + /* The magic number. */ + nls_uint32 magic; + /* The revision number of the file format. */ + nls_uint32 revision; + + /* The following are only used in .mo files with major revision 0 or 1. */ + + /* The number of strings pairs. */ + nls_uint32 nstrings; + /* Offset of table with start offsets of original strings. */ + nls_uint32 orig_tab_offset; + /* Offset of table with start offsets of translated strings. */ + nls_uint32 trans_tab_offset; + /* Size of hash table. */ + nls_uint32 hash_tab_size; + /* Offset of first hash table entry. */ + nls_uint32 hash_tab_offset; + + /* The following are only used in .mo files with minor revision >= 1. */ + + /* The number of system dependent segments. */ + nls_uint32 n_sysdep_segments; + /* Offset of table describing system dependent segments. */ + nls_uint32 sysdep_segments_offset; + /* The number of system dependent strings pairs. */ + nls_uint32 n_sysdep_strings; + /* Offset of table with start offsets of original sysdep strings. */ + nls_uint32 orig_sysdep_tab_offset; + /* Offset of table with start offsets of translated sysdep strings. */ + nls_uint32 trans_sysdep_tab_offset; +}; + +/* Descriptor for static string contained in the binary .mo file. */ +struct string_desc +{ + /* Length of addressed string, not including the trailing NUL. */ + nls_uint32 length; + /* Offset of string in file. */ + nls_uint32 offset; +}; + +/* The following are only used in .mo files with minor revision >= 1. */ + +/* Descriptor for system dependent string segment. */ +struct sysdep_segment +{ + /* Length of addressed string, including the trailing NUL. */ + nls_uint32 length; + /* Offset of string in file. */ + nls_uint32 offset; +}; + +/* Pair of a static and a system dependent segment, in struct sysdep_string. */ +struct segment_pair +{ + /* Size of static segment. */ + nls_uint32 segsize; + /* Reference to system dependent string segment, or ~0 at the end. */ + nls_uint32 sysdepref; +}; + +/* Descriptor for system dependent string. */ +struct sysdep_string +{ + /* Offset of static string segments in file. */ + nls_uint32 offset; + /* Alternating sequence of static and system dependent segments. + The last segment is a static segment, including the trailing NUL. */ + struct segment_pair segments[1]; +}; + +/* Marker for the end of the segments[] array. This has the value 0xFFFFFFFF, + regardless whether 'int' is 16 bit, 32 bit, or 64 bit. */ +#define SEGMENTS_END ((nls_uint32) ~0) + +/* @@ begin of epilog @@ */ + +#endif /* gettext.h */ diff --git a/xchat-2.8.8/intl/hash-string.c b/xchat-2.8.8/intl/hash-string.c new file mode 100644 index 0000000..3c513f0 --- /dev/null +++ b/xchat-2.8.8/intl/hash-string.c @@ -0,0 +1,51 @@ +/* Implements a string hashing function. + Copyright (C) 1995, 1997, 1998, 2000, 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C 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. + + The GNU C 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 the GNU C Library; if not, write to the Free + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +/* Specification. */ +#include "hash-string.h" + + +/* Defines the so called `hashpjw' function by P.J. Weinberger + [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools, + 1986, 1987 Bell Telephone Laboratories, Inc.] */ +unsigned long int +__hash_string (const char *str_param) +{ + unsigned long int hval, g; + const char *str = str_param; + + /* Compute the hash value for the given string. */ + hval = 0; + while (*str != '\0') + { + hval <<= 4; + hval += (unsigned char) *str++; + g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4)); + if (g != 0) + { + hval ^= g >> (HASHWORDBITS - 8); + hval ^= g; + } + } + return hval; +} diff --git a/xchat-2.8.8/intl/hash-string.h b/xchat-2.8.8/intl/hash-string.h new file mode 100644 index 0000000..98c07e4 --- /dev/null +++ b/xchat-2.8.8/intl/hash-string.h @@ -0,0 +1,36 @@ +/* Description of GNU message catalog format: string hashing function. + Copyright (C) 1995, 1997-1998, 2000-2003, 2005 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* @@ end of prolog @@ */ + +/* We assume to have `unsigned long int' value with at least 32 bits. */ +#define HASHWORDBITS 32 + + +#ifndef _LIBC +# ifdef IN_LIBINTL +# define __hash_string libintl_hash_string +# else +# define __hash_string hash_string +# endif +#endif + +/* Defines the so called `hashpjw' function by P.J. Weinberger + [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools, + 1986, 1987 Bell Telephone Laboratories, Inc.] */ +extern unsigned long int __hash_string (const char *str_param); diff --git a/xchat-2.8.8/intl/intl-compat.c b/xchat-2.8.8/intl/intl-compat.c new file mode 100644 index 0000000..9b9ecbb --- /dev/null +++ b/xchat-2.8.8/intl/intl-compat.c @@ -0,0 +1,133 @@ +/* intl-compat.c - Stub functions to call gettext functions from GNU gettext + Library. + Copyright (C) 1995, 2000-2003, 2005 Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "gettextP.h" + +/* @@ end of prolog @@ */ + +/* This file redirects the gettext functions (without prefix) to those + defined in the included GNU libintl library (with "libintl_" prefix). + It is compiled into libintl in order to make the AM_GNU_GETTEXT test + of gettext <= 0.11.2 work with the libintl library >= 0.11.3 which + has the redirections primarily in the include file. + It is also compiled into libgnuintl so that libgnuintl.so can be used + as LD_PRELOADable library on glibc systems, to provide the extra + features that the functions in the libc don't have (namely, logging). */ + + +#undef gettext +#undef dgettext +#undef dcgettext +#undef ngettext +#undef dngettext +#undef dcngettext +#undef textdomain +#undef bindtextdomain +#undef bind_textdomain_codeset + + +/* When building a DLL, we must export some functions. Note that because + the functions are only defined for binary backward compatibility, we + don't need to use __declspec(dllimport) in any case. */ +#if HAVE_VISIBILITY && BUILDING_DLL +# define DLL_EXPORTED __attribute__((__visibility__("default"))) +#elif defined _MSC_VER && BUILDING_DLL +# define DLL_EXPORTED __declspec(dllexport) +#else +# define DLL_EXPORTED +#endif + + +DLL_EXPORTED +char * +gettext (const char *msgid) +{ + return libintl_gettext (msgid); +} + + +DLL_EXPORTED +char * +dgettext (const char *domainname, const char *msgid) +{ + return libintl_dgettext (domainname, msgid); +} + + +DLL_EXPORTED +char * +dcgettext (const char *domainname, const char *msgid, int category) +{ + return libintl_dcgettext (domainname, msgid, category); +} + + +DLL_EXPORTED +char * +ngettext (const char *msgid1, const char *msgid2, unsigned long int n) +{ + return libintl_ngettext (msgid1, msgid2, n); +} + + +DLL_EXPORTED +char * +dngettext (const char *domainname, + const char *msgid1, const char *msgid2, unsigned long int n) +{ + return libintl_dngettext (domainname, msgid1, msgid2, n); +} + + +DLL_EXPORTED +char * +dcngettext (const char *domainname, + const char *msgid1, const char *msgid2, unsigned long int n, + int category) +{ + return libintl_dcngettext (domainname, msgid1, msgid2, n, category); +} + + +DLL_EXPORTED +char * +textdomain (const char *domainname) +{ + return libintl_textdomain (domainname); +} + + +DLL_EXPORTED +char * +bindtextdomain (const char *domainname, const char *dirname) +{ + return libintl_bindtextdomain (domainname, dirname); +} + + +DLL_EXPORTED +char * +bind_textdomain_codeset (const char *domainname, const char *codeset) +{ + return libintl_bind_textdomain_codeset (domainname, codeset); +} diff --git a/xchat-2.8.8/intl/intl-exports.c b/xchat-2.8.8/intl/intl-exports.c new file mode 100644 index 0000000..7176589 --- /dev/null +++ b/xchat-2.8.8/intl/intl-exports.c @@ -0,0 +1,36 @@ +/* List of exported symbols of libintl on Cygwin. + Copyright (C) 2006 Free Software Foundation, Inc. + Written by Bruno Haible , 2006. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + + /* IMP(x) is a symbol that contains the address of x. */ +#define IMP(x) _imp__##x + + /* Ensure that the variable x is exported from the library, and that a + pseudo-variable IMP(x) is available. */ +#define VARIABLE(x) \ + /* Export x without redefining x. This code was found by compiling a \ + snippet: \ + extern __declspec(dllexport) int x; int x = 42; */ \ + asm (".section .drectve\n"); \ + asm (".ascii \" -export:" #x ",data\"\n"); \ + asm (".data\n"); \ + /* Allocate a pseudo-variable IMP(x). */ \ + extern int x; \ + void * IMP(x) = &x; + +VARIABLE(libintl_version) diff --git a/xchat-2.8.8/intl/l10nflist.c b/xchat-2.8.8/intl/l10nflist.c new file mode 100644 index 0000000..365aeb7 --- /dev/null +++ b/xchat-2.8.8/intl/l10nflist.c @@ -0,0 +1,400 @@ +/* Copyright (C) 1995-1999, 2000-2006 Free Software Foundation, Inc. + Contributed by Ulrich Drepper , 1995. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Tell glibc's to provide a prototype for stpcpy(). + This must come before because may include + , and once has been included, it's too late. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#if defined _LIBC || defined HAVE_ARGZ_H +# include +#endif +#include +#include +#include + +#include "loadinfo.h" + +/* On some strange systems still no definition of NULL is found. Sigh! */ +#ifndef NULL +# if defined __STDC__ && __STDC__ +# define NULL ((void *) 0) +# else +# define NULL 0 +# endif +#endif + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ANSI C functions. This is required by the standard + because some ANSI C functions will require linking with this object + file and the name space must not be polluted. */ +# ifndef stpcpy +# define stpcpy(dest, src) __stpcpy(dest, src) +# endif +#else +# ifndef HAVE_STPCPY +static char *stpcpy (char *dest, const char *src); +# endif +#endif + +/* Pathname support. + ISSLASH(C) tests whether C is a directory separator character. + IS_ABSOLUTE_PATH(P) tests whether P is an absolute path. If it is not, + it may be concatenated to a directory pathname. + */ +#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__ + /* Win32, Cygwin, OS/2, DOS */ +# define ISSLASH(C) ((C) == '/' || (C) == '\\') +# define HAS_DEVICE(P) \ + ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \ + && (P)[1] == ':') +# define IS_ABSOLUTE_PATH(P) (ISSLASH ((P)[0]) || HAS_DEVICE (P)) +#else + /* Unix */ +# define ISSLASH(C) ((C) == '/') +# define IS_ABSOLUTE_PATH(P) ISSLASH ((P)[0]) +#endif + +/* Define function which are usually not available. */ + +#ifdef _LIBC +# define __argz_count(argz, len) INTUSE(__argz_count) (argz, len) +#elif defined HAVE_ARGZ_COUNT +# undef __argz_count +# define __argz_count argz_count +#else +/* Returns the number of strings in ARGZ. */ +static size_t +argz_count__ (const char *argz, size_t len) +{ + size_t count = 0; + while (len > 0) + { + size_t part_len = strlen (argz); + argz += part_len + 1; + len -= part_len + 1; + count++; + } + return count; +} +# undef __argz_count +# define __argz_count(argz, len) argz_count__ (argz, len) +#endif /* !_LIBC && !HAVE_ARGZ_COUNT */ + +#ifdef _LIBC +# define __argz_stringify(argz, len, sep) \ + INTUSE(__argz_stringify) (argz, len, sep) +#elif defined HAVE_ARGZ_STRINGIFY +# undef __argz_stringify +# define __argz_stringify argz_stringify +#else +/* Make '\0' separated arg vector ARGZ printable by converting all the '\0's + except the last into the character SEP. */ +static void +argz_stringify__ (char *argz, size_t len, int sep) +{ + while (len > 0) + { + size_t part_len = strlen (argz); + argz += part_len; + len -= part_len + 1; + if (len > 0) + *argz++ = sep; + } +} +# undef __argz_stringify +# define __argz_stringify(argz, len, sep) argz_stringify__ (argz, len, sep) +#endif /* !_LIBC && !HAVE_ARGZ_STRINGIFY */ + +#ifdef _LIBC +#elif defined HAVE_ARGZ_NEXT +# undef __argz_next +# define __argz_next argz_next +#else +static char * +argz_next__ (char *argz, size_t argz_len, const char *entry) +{ + if (entry) + { + if (entry < argz + argz_len) + entry = strchr (entry, '\0') + 1; + + return entry >= argz + argz_len ? NULL : (char *) entry; + } + else + if (argz_len > 0) + return argz; + else + return 0; +} +# undef __argz_next +# define __argz_next(argz, len, entry) argz_next__ (argz, len, entry) +#endif /* !_LIBC && !HAVE_ARGZ_NEXT */ + + +/* Return number of bits set in X. */ +static inline int +pop (int x) +{ + /* We assume that no more than 16 bits are used. */ + x = ((x & ~0x5555) >> 1) + (x & 0x5555); + x = ((x & ~0x3333) >> 2) + (x & 0x3333); + x = ((x >> 4) + x) & 0x0f0f; + x = ((x >> 8) + x) & 0xff; + + return x; +} + + +struct loaded_l10nfile * +_nl_make_l10nflist (struct loaded_l10nfile **l10nfile_list, + const char *dirlist, size_t dirlist_len, + int mask, const char *language, const char *territory, + const char *codeset, const char *normalized_codeset, + const char *modifier, + const char *filename, int do_allocate) +{ + char *abs_filename; + struct loaded_l10nfile **lastp; + struct loaded_l10nfile *retval; + char *cp; + size_t dirlist_count; + size_t entries; + int cnt; + + /* If LANGUAGE contains an absolute directory specification, we ignore + DIRLIST. */ + if (IS_ABSOLUTE_PATH (language)) + dirlist_len = 0; + + /* Allocate room for the full file name. */ + abs_filename = (char *) malloc (dirlist_len + + strlen (language) + + ((mask & XPG_TERRITORY) != 0 + ? strlen (territory) + 1 : 0) + + ((mask & XPG_CODESET) != 0 + ? strlen (codeset) + 1 : 0) + + ((mask & XPG_NORM_CODESET) != 0 + ? strlen (normalized_codeset) + 1 : 0) + + ((mask & XPG_MODIFIER) != 0 + ? strlen (modifier) + 1 : 0) + + 1 + strlen (filename) + 1); + + if (abs_filename == NULL) + return NULL; + + /* Construct file name. */ + cp = abs_filename; + if (dirlist_len > 0) + { + memcpy (cp, dirlist, dirlist_len); + __argz_stringify (cp, dirlist_len, PATH_SEPARATOR); + cp += dirlist_len; + cp[-1] = '/'; + } + + cp = stpcpy (cp, language); + + if ((mask & XPG_TERRITORY) != 0) + { + *cp++ = '_'; + cp = stpcpy (cp, territory); + } + if ((mask & XPG_CODESET) != 0) + { + *cp++ = '.'; + cp = stpcpy (cp, codeset); + } + if ((mask & XPG_NORM_CODESET) != 0) + { + *cp++ = '.'; + cp = stpcpy (cp, normalized_codeset); + } + if ((mask & XPG_MODIFIER) != 0) + { + *cp++ = '@'; + cp = stpcpy (cp, modifier); + } + + *cp++ = '/'; + stpcpy (cp, filename); + + /* Look in list of already loaded domains whether it is already + available. */ + lastp = l10nfile_list; + for (retval = *l10nfile_list; retval != NULL; retval = retval->next) + if (retval->filename != NULL) + { + int compare = strcmp (retval->filename, abs_filename); + if (compare == 0) + /* We found it! */ + break; + if (compare < 0) + { + /* It's not in the list. */ + retval = NULL; + break; + } + + lastp = &retval->next; + } + + if (retval != NULL || do_allocate == 0) + { + free (abs_filename); + return retval; + } + + dirlist_count = (dirlist_len > 0 ? __argz_count (dirlist, dirlist_len) : 1); + + /* Allocate a new loaded_l10nfile. */ + retval = + (struct loaded_l10nfile *) + malloc (sizeof (*retval) + + (((dirlist_count << pop (mask)) + (dirlist_count > 1 ? 1 : 0)) + * sizeof (struct loaded_l10nfile *))); + if (retval == NULL) + { + free (abs_filename); + return NULL; + } + + retval->filename = abs_filename; + + /* We set retval->data to NULL here; it is filled in later. + Setting retval->decided to 1 here means that retval does not + correspond to a real file (dirlist_count > 1) or is not worth + looking up (if an unnormalized codeset was specified). */ + retval->decided = (dirlist_count > 1 + || ((mask & XPG_CODESET) != 0 + && (mask & XPG_NORM_CODESET) != 0)); + retval->data = NULL; + + retval->next = *lastp; + *lastp = retval; + + entries = 0; + /* Recurse to fill the inheritance list of RETVAL. + If the DIRLIST is a real list (i.e. DIRLIST_COUNT > 1), the RETVAL + entry does not correspond to a real file; retval->filename contains + colons. In this case we loop across all elements of DIRLIST and + across all bit patterns dominated by MASK. + If the DIRLIST is a single directory or entirely redundant (i.e. + DIRLIST_COUNT == 1), we loop across all bit patterns dominated by + MASK, excluding MASK itself. + In either case, we loop down from MASK to 0. This has the effect + that the extra bits in the locale name are dropped in this order: + first the modifier, then the territory, then the codeset, then the + normalized_codeset. */ + for (cnt = dirlist_count > 1 ? mask : mask - 1; cnt >= 0; --cnt) + if ((cnt & ~mask) == 0 + && !((cnt & XPG_CODESET) != 0 && (cnt & XPG_NORM_CODESET) != 0)) + { + if (dirlist_count > 1) + { + /* Iterate over all elements of the DIRLIST. */ + char *dir = NULL; + + while ((dir = __argz_next ((char *) dirlist, dirlist_len, dir)) + != NULL) + retval->successor[entries++] + = _nl_make_l10nflist (l10nfile_list, dir, strlen (dir) + 1, + cnt, language, territory, codeset, + normalized_codeset, modifier, filename, + 1); + } + else + retval->successor[entries++] + = _nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len, + cnt, language, territory, codeset, + normalized_codeset, modifier, filename, 1); + } + retval->successor[entries] = NULL; + + return retval; +} + +/* Normalize codeset name. There is no standard for the codeset + names. Normalization allows the user to use any of the common + names. The return value is dynamically allocated and has to be + freed by the caller. */ +const char * +_nl_normalize_codeset (const char *codeset, size_t name_len) +{ + int len = 0; + int only_digit = 1; + char *retval; + char *wp; + size_t cnt; + + for (cnt = 0; cnt < name_len; ++cnt) + if (isalnum ((unsigned char) codeset[cnt])) + { + ++len; + + if (isalpha ((unsigned char) codeset[cnt])) + only_digit = 0; + } + + retval = (char *) malloc ((only_digit ? 3 : 0) + len + 1); + + if (retval != NULL) + { + if (only_digit) + wp = stpcpy (retval, "iso"); + else + wp = retval; + + for (cnt = 0; cnt < name_len; ++cnt) + if (isalpha ((unsigned char) codeset[cnt])) + *wp++ = tolower ((unsigned char) codeset[cnt]); + else if (isdigit ((unsigned char) codeset[cnt])) + *wp++ = codeset[cnt]; + + *wp = '\0'; + } + + return (const char *) retval; +} + + +/* @@ begin of epilog @@ */ + +/* We don't want libintl.a to depend on any other library. So we + avoid the non-standard function stpcpy. In GNU C Library this + function is available, though. Also allow the symbol HAVE_STPCPY + to be defined. */ +#if !_LIBC && !HAVE_STPCPY +static char * +stpcpy (char *dest, const char *src) +{ + while ((*dest++ = *src++) != '\0') + /* Do nothing. */ ; + return dest - 1; +} +#endif diff --git a/xchat-2.8.8/intl/langprefs.c b/xchat-2.8.8/intl/langprefs.c new file mode 100644 index 0000000..59c8def --- /dev/null +++ b/xchat-2.8.8/intl/langprefs.c @@ -0,0 +1,130 @@ +/* Determine the user's language preferences. + Copyright (C) 2004-2006 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Written by Bruno Haible . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#if HAVE_CFPREFERENCESCOPYAPPVALUE +# include +# include +# include +# include +# include +extern void _nl_locale_name_canonicalize (char *name); +#endif + +/* Determine the user's language preferences, as a colon separated list of + locale names in XPG syntax + language[_territory][.codeset][@modifier] + The result must not be freed; it is statically allocated. + The LANGUAGE environment variable does not need to be considered; it is + already taken into account by the caller. */ + +const char * +_nl_language_preferences_default (void) +{ +#if HAVE_CFPREFERENCESCOPYAPPVALUE /* MacOS X 10.2 or newer */ + { + /* Cache the preferences list, since CoreFoundation calls are expensive. */ + static const char *cached_languages; + static int cache_initialized; + + if (!cache_initialized) + { + CFTypeRef preferences = + CFPreferencesCopyAppValue (CFSTR ("AppleLanguages"), + kCFPreferencesCurrentApplication); + if (preferences != NULL + && CFGetTypeID (preferences) == CFArrayGetTypeID ()) + { + CFArrayRef prefArray = (CFArrayRef)preferences; + int n = CFArrayGetCount (prefArray); + char buf[256]; + size_t size = 0; + int i; + + for (i = 0; i < n; i++) + { + CFTypeRef element = CFArrayGetValueAtIndex (prefArray, i); + if (element != NULL + && CFGetTypeID (element) == CFStringGetTypeID () + && CFStringGetCString ((CFStringRef)element, + buf, sizeof (buf), + kCFStringEncodingASCII)) + { + _nl_locale_name_canonicalize (buf); + size += strlen (buf) + 1; + /* Most GNU programs use msgids in English and don't ship + an en.mo message catalog. Therefore when we see "en" + in the preferences list, arrange for gettext() to + return the msgid, and ignore all further elements of + the preferences list. */ + if (strcmp (buf, "en") == 0) + break; + } + else + break; + } + if (size > 0) + { + char *languages = (char *) malloc (size); + + if (languages != NULL) + { + char *p = languages; + + for (i = 0; i < n; i++) + { + CFTypeRef element = + CFArrayGetValueAtIndex (prefArray, i); + if (element != NULL + && CFGetTypeID (element) == CFStringGetTypeID () + && CFStringGetCString ((CFStringRef)element, + buf, sizeof (buf), + kCFStringEncodingASCII)) + { + _nl_locale_name_canonicalize (buf); + strcpy (p, buf); + p += strlen (buf); + *p++ = ':'; + if (strcmp (buf, "en") == 0) + break; + } + else + break; + } + *--p = '\0'; + + cached_languages = languages; + } + } + } + cache_initialized = 1; + } + if (cached_languages != NULL) + return cached_languages; + } +#endif + + return NULL; +} diff --git a/xchat-2.8.8/intl/libgnuintl.h.in b/xchat-2.8.8/intl/libgnuintl.h.in new file mode 100644 index 0000000..c9da798 --- /dev/null +++ b/xchat-2.8.8/intl/libgnuintl.h.in @@ -0,0 +1,419 @@ +/* Message catalogs for internationalization. + Copyright (C) 1995-1997, 2000-2007 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _LIBINTL_H +#define _LIBINTL_H 1 + +#include + +/* The LC_MESSAGES locale category is the category used by the functions + gettext() and dgettext(). It is specified in POSIX, but not in ANSI C. + On systems that don't define it, use an arbitrary value instead. + On Solaris, defines __LOCALE_H (or _LOCALE_H in Solaris 2.5) + then includes (i.e. this file!) and then only defines + LC_MESSAGES. To avoid a redefinition warning, don't define LC_MESSAGES + in this case. */ +#if !defined LC_MESSAGES && !(defined __LOCALE_H || (defined _LOCALE_H && defined __sun)) +# define LC_MESSAGES 1729 +#endif + +/* We define an additional symbol to signal that we use the GNU + implementation of gettext. */ +#define __USE_GNU_GETTEXT 1 + +/* Provide information about the supported file formats. Returns the + maximum minor revision number supported for a given major revision. */ +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) \ + ((major) == 0 || (major) == 1 ? 1 : -1) + +/* Resolve a platform specific conflict on DJGPP. GNU gettext takes + precedence over _conio_gettext. */ +#ifdef __DJGPP__ +# undef gettext +#endif + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Version number: (major<<16) + (minor<<8) + subminor */ +#define LIBINTL_VERSION 0x001100 +extern int libintl_version; + + +/* We redirect the functions to those prefixed with "libintl_". This is + necessary, because some systems define gettext/textdomain/... in the C + library (namely, Solaris 2.4 and newer, and GNU libc 2.0 and newer). + If we used the unprefixed names, there would be cases where the + definition in the C library would override the one in the libintl.so + shared library. Recall that on ELF systems, the symbols are looked + up in the following order: + 1. in the executable, + 2. in the shared libraries specified on the link command line, in order, + 3. in the dependencies of the shared libraries specified on the link + command line, + 4. in the dlopen()ed shared libraries, in the order in which they were + dlopen()ed. + The definition in the C library would override the one in libintl.so if + either + * -lc is given on the link command line and -lintl isn't, or + * -lc is given on the link command line before -lintl, or + * libintl.so is a dependency of a dlopen()ed shared library but not + linked to the executable at link time. + Since Solaris gettext() behaves differently than GNU gettext(), this + would be unacceptable. + + The redirection happens by default through macros in C, so that &gettext + is independent of the compilation unit, but through inline functions in + C++, in order not to interfere with the name mangling of class fields or + class methods called 'gettext'. */ + +/* The user can define _INTL_REDIRECT_INLINE or _INTL_REDIRECT_MACROS. + If he doesn't, we choose the method. A third possible method is + _INTL_REDIRECT_ASM, supported only by GCC. */ +#if !(defined _INTL_REDIRECT_INLINE || defined _INTL_REDIRECT_MACROS) +# if __GNUC__ >= 2 && !(__APPLE_CC__ > 1) && !defined __MINGW32__ && !(__GNUC__ == 2 && defined _AIX) && (defined __STDC__ || defined __cplusplus) +# define _INTL_REDIRECT_ASM +# else +# ifdef __cplusplus +# define _INTL_REDIRECT_INLINE +# else +# define _INTL_REDIRECT_MACROS +# endif +# endif +#endif +/* Auxiliary macros. */ +#ifdef _INTL_REDIRECT_ASM +# define _INTL_ASM(cname) __asm__ (_INTL_ASMNAME (__USER_LABEL_PREFIX__, #cname)) +# define _INTL_ASMNAME(prefix,cnamestring) _INTL_STRINGIFY (prefix) cnamestring +# define _INTL_STRINGIFY(prefix) #prefix +#else +# define _INTL_ASM(cname) +#endif + +/* _INTL_MAY_RETURN_STRING_ARG(n) declares that the given function may return + its n-th argument literally. This enables GCC to warn for example about + printf (gettext ("foo %y")). */ +#if __GNUC__ >= 3 && !(__APPLE_CC__ > 1 && defined __cplusplus) +# define _INTL_MAY_RETURN_STRING_ARG(n) __attribute__ ((__format_arg__ (n))) +#else +# define _INTL_MAY_RETURN_STRING_ARG(n) +#endif + +/* Look up MSGID in the current default message catalog for the current + LC_MESSAGES locale. If not found, returns MSGID itself (the default + text). */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_gettext (const char *__msgid) + _INTL_MAY_RETURN_STRING_ARG (1); +static inline char *gettext (const char *__msgid) +{ + return libintl_gettext (__msgid); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define gettext libintl_gettext +#endif +extern char *gettext (const char *__msgid) + _INTL_ASM (libintl_gettext) + _INTL_MAY_RETURN_STRING_ARG (1); +#endif + +/* Look up MSGID in the DOMAINNAME message catalog for the current + LC_MESSAGES locale. */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_dgettext (const char *__domainname, const char *__msgid) + _INTL_MAY_RETURN_STRING_ARG (2); +static inline char *dgettext (const char *__domainname, const char *__msgid) +{ + return libintl_dgettext (__domainname, __msgid); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define dgettext libintl_dgettext +#endif +extern char *dgettext (const char *__domainname, const char *__msgid) + _INTL_ASM (libintl_dgettext) + _INTL_MAY_RETURN_STRING_ARG (2); +#endif + +/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY + locale. */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_dcgettext (const char *__domainname, const char *__msgid, + int __category) + _INTL_MAY_RETURN_STRING_ARG (2); +static inline char *dcgettext (const char *__domainname, const char *__msgid, + int __category) +{ + return libintl_dcgettext (__domainname, __msgid, __category); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define dcgettext libintl_dcgettext +#endif +extern char *dcgettext (const char *__domainname, const char *__msgid, + int __category) + _INTL_ASM (libintl_dcgettext) + _INTL_MAY_RETURN_STRING_ARG (2); +#endif + + +/* Similar to `gettext' but select the plural form corresponding to the + number N. */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_ngettext (const char *__msgid1, const char *__msgid2, + unsigned long int __n) + _INTL_MAY_RETURN_STRING_ARG (1) _INTL_MAY_RETURN_STRING_ARG (2); +static inline char *ngettext (const char *__msgid1, const char *__msgid2, + unsigned long int __n) +{ + return libintl_ngettext (__msgid1, __msgid2, __n); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define ngettext libintl_ngettext +#endif +extern char *ngettext (const char *__msgid1, const char *__msgid2, + unsigned long int __n) + _INTL_ASM (libintl_ngettext) + _INTL_MAY_RETURN_STRING_ARG (1) _INTL_MAY_RETURN_STRING_ARG (2); +#endif + +/* Similar to `dgettext' but select the plural form corresponding to the + number N. */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_dngettext (const char *__domainname, const char *__msgid1, + const char *__msgid2, unsigned long int __n) + _INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3); +static inline char *dngettext (const char *__domainname, const char *__msgid1, + const char *__msgid2, unsigned long int __n) +{ + return libintl_dngettext (__domainname, __msgid1, __msgid2, __n); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define dngettext libintl_dngettext +#endif +extern char *dngettext (const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int __n) + _INTL_ASM (libintl_dngettext) + _INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3); +#endif + +/* Similar to `dcgettext' but select the plural form corresponding to the + number N. */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_dcngettext (const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int __n, int __category) + _INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3); +static inline char *dcngettext (const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int __n, int __category) +{ + return libintl_dcngettext (__domainname, __msgid1, __msgid2, __n, __category); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define dcngettext libintl_dcngettext +#endif +extern char *dcngettext (const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int __n, int __category) + _INTL_ASM (libintl_dcngettext) + _INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3); +#endif + + +#ifndef IN_LIBGLOCALE + +/* Set the current default message catalog to DOMAINNAME. + If DOMAINNAME is null, return the current default. + If DOMAINNAME is "", reset to the default of "messages". */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_textdomain (const char *__domainname); +static inline char *textdomain (const char *__domainname) +{ + return libintl_textdomain (__domainname); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define textdomain libintl_textdomain +#endif +extern char *textdomain (const char *__domainname) + _INTL_ASM (libintl_textdomain); +#endif + +/* Specify that the DOMAINNAME message catalog will be found + in DIRNAME rather than in the system locale data base. */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_bindtextdomain (const char *__domainname, + const char *__dirname); +static inline char *bindtextdomain (const char *__domainname, + const char *__dirname) +{ + return libintl_bindtextdomain (__domainname, __dirname); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define bindtextdomain libintl_bindtextdomain +#endif +extern char *bindtextdomain (const char *__domainname, const char *__dirname) + _INTL_ASM (libintl_bindtextdomain); +#endif + +/* Specify the character encoding in which the messages from the + DOMAINNAME message catalog will be returned. */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_bind_textdomain_codeset (const char *__domainname, + const char *__codeset); +static inline char *bind_textdomain_codeset (const char *__domainname, + const char *__codeset) +{ + return libintl_bind_textdomain_codeset (__domainname, __codeset); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define bind_textdomain_codeset libintl_bind_textdomain_codeset +#endif +extern char *bind_textdomain_codeset (const char *__domainname, + const char *__codeset) + _INTL_ASM (libintl_bind_textdomain_codeset); +#endif + +#endif /* IN_LIBGLOCALE */ + + +/* Support for format strings with positions in *printf(), following the + POSIX/XSI specification. + Note: These replacements for the *printf() functions are visible only + in source files that #include or #include "gettext.h". + Packages that use *printf() in source files that don't refer to _() + or gettext() but for which the format string could be the return value + of _() or gettext() need to add this #include. Oh well. */ + +#if !@HAVE_POSIX_PRINTF@ + +#include +#include + +/* Get va_list. */ +#if __STDC__ || defined __cplusplus || defined _MSC_VER +# include +#else +# include +#endif + +#undef fprintf +#define fprintf libintl_fprintf +extern int fprintf (FILE *, const char *, ...); +#undef vfprintf +#define vfprintf libintl_vfprintf +extern int vfprintf (FILE *, const char *, va_list); + +#undef printf +#if defined __NetBSD__ || defined __BEOS__ || defined __CYGWIN__ || defined __MINGW32__ +/* Don't break __attribute__((format(printf,M,N))). + This redefinition is only possible because the libc in NetBSD, Cygwin, + mingw does not have a function __printf__. */ +# define libintl_printf __printf__ +#endif +#define printf libintl_printf +extern int printf (const char *, ...); +#undef vprintf +#define vprintf libintl_vprintf +extern int vprintf (const char *, va_list); + +#undef sprintf +#define sprintf libintl_sprintf +extern int sprintf (char *, const char *, ...); +#undef vsprintf +#define vsprintf libintl_vsprintf +extern int vsprintf (char *, const char *, va_list); + +#if @HAVE_SNPRINTF@ + +#undef snprintf +#define snprintf libintl_snprintf +extern int snprintf (char *, size_t, const char *, ...); +#undef vsnprintf +#define vsnprintf libintl_vsnprintf +extern int vsnprintf (char *, size_t, const char *, va_list); + +#endif + +#if @HAVE_ASPRINTF@ + +#undef asprintf +#define asprintf libintl_asprintf +extern int asprintf (char **, const char *, ...); +#undef vasprintf +#define vasprintf libintl_vasprintf +extern int vasprintf (char **, const char *, va_list); + +#endif + +#if @HAVE_WPRINTF@ + +#undef fwprintf +#define fwprintf libintl_fwprintf +extern int fwprintf (FILE *, const wchar_t *, ...); +#undef vfwprintf +#define vfwprintf libintl_vfwprintf +extern int vfwprintf (FILE *, const wchar_t *, va_list); + +#undef wprintf +#define wprintf libintl_wprintf +extern int wprintf (const wchar_t *, ...); +#undef vwprintf +#define vwprintf libintl_vwprintf +extern int vwprintf (const wchar_t *, va_list); + +#undef swprintf +#define swprintf libintl_swprintf +extern int swprintf (wchar_t *, size_t, const wchar_t *, ...); +#undef vswprintf +#define vswprintf libintl_vswprintf +extern int vswprintf (wchar_t *, size_t, const wchar_t *, va_list); + +#endif + +#endif + + +/* Support for relocatable packages. */ + +/* Sets the original and the current installation prefix of the package. + Relocation simply replaces a pathname starting with the original prefix + by the corresponding pathname with the current prefix instead. Both + prefixes should be directory names without trailing slash (i.e. use "" + instead of "/"). */ +#define libintl_set_relocation_prefix libintl_set_relocation_prefix +extern void + libintl_set_relocation_prefix (const char *orig_prefix, + const char *curr_prefix); + + +#ifdef __cplusplus +} +#endif + +#endif /* libintl.h */ diff --git a/xchat-2.8.8/intl/libintl.rc b/xchat-2.8.8/intl/libintl.rc new file mode 100644 index 0000000..f00f0b3 --- /dev/null +++ b/xchat-2.8.8/intl/libintl.rc @@ -0,0 +1,38 @@ +/* Resources for intl.dll */ + +#include + +VS_VERSION_INFO VERSIONINFO + FILEVERSION PACKAGE_VERSION_MAJOR,PACKAGE_VERSION_MINOR,PACKAGE_VERSION_SUBMINOR,0 + PRODUCTVERSION PACKAGE_VERSION_MAJOR,PACKAGE_VERSION_MINOR,PACKAGE_VERSION_SUBMINOR,0 + FILEFLAGSMASK 0x3fL /* VS_FFI_FILEFLAGSMASK */ +#ifdef _DEBUG + FILEFLAGS 0x1L /* VS_FF_DEBUG */ +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x10004L /* VOS_DOS_WINDOWS32 */ + FILETYPE 0x2L /* VFT_DLL */ + FILESUBTYPE 0x0L /* VFT2_UNKNOWN */ +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "04090000" /* Lang = US English, Charset = ASCII */ + BEGIN + VALUE "Comments", "This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA\0" + VALUE "CompanyName", "Free Software Foundation\0" + VALUE "FileDescription", "LGPLed libintl for Windows NT/2000/XP/Vista and Windows 95/98/ME\0" + VALUE "FileVersion", PACKAGE_VERSION_STRING "\0" + VALUE "InternalName", "intl.dll\0" + VALUE "LegalCopyright", "Copyright (C) 1995-2007\0" + VALUE "LegalTrademarks", "\0" + VALUE "OriginalFilename", "intl.dll\0" + VALUE "ProductName", "libintl: accessing NLS message catalogs\0" + VALUE "ProductVersion", PACKAGE_VERSION_STRING "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0409, 0 /* US English, ASCII */ + END +END diff --git a/xchat-2.8.8/intl/loadinfo.h b/xchat-2.8.8/intl/loadinfo.h new file mode 100644 index 0000000..a7a1970 --- /dev/null +++ b/xchat-2.8.8/intl/loadinfo.h @@ -0,0 +1,132 @@ +/* Copyright (C) 1996-1999, 2000-2003, 2005-2006 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1996. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _LOADINFO_H +#define _LOADINFO_H 1 + +/* Declarations of locale dependent catalog lookup functions. + Implemented in + + localealias.c Possibly replace a locale name by another. + explodename.c Split a locale name into its various fields. + l10nflist.c Generate a list of filenames of possible message catalogs. + finddomain.c Find and open the relevant message catalogs. + + The main function _nl_find_domain() in finddomain.c is declared + in gettextP.h. + */ + +#ifndef internal_function +# define internal_function +#endif + +#ifndef LIBINTL_DLL_EXPORTED +# define LIBINTL_DLL_EXPORTED +#endif + +/* Tell the compiler when a conditional or integer expression is + almost always true or almost always false. */ +#ifndef HAVE_BUILTIN_EXPECT +# define __builtin_expect(expr, val) (expr) +#endif + +/* Separator in PATH like lists of pathnames. */ +#if ((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__) || defined __EMX__ || defined __DJGPP__ + /* Win32, OS/2, DOS */ +# define PATH_SEPARATOR ';' +#else + /* Unix */ +# define PATH_SEPARATOR ':' +#endif + +/* Encoding of locale name parts. */ +#define XPG_NORM_CODESET 1 +#define XPG_CODESET 2 +#define XPG_TERRITORY 4 +#define XPG_MODIFIER 8 + + +struct loaded_l10nfile +{ + const char *filename; + int decided; + + const void *data; + + struct loaded_l10nfile *next; + struct loaded_l10nfile *successor[1]; +}; + + +/* Normalize codeset name. There is no standard for the codeset + names. Normalization allows the user to use any of the common + names. The return value is dynamically allocated and has to be + freed by the caller. */ +extern const char *_nl_normalize_codeset (const char *codeset, + size_t name_len); + +/* Lookup a locale dependent file. + *L10NFILE_LIST denotes a pool of lookup results of locale dependent + files of the same kind, sorted in decreasing order of ->filename. + DIRLIST and DIRLIST_LEN are an argz list of directories in which to + look, containing at least one directory (i.e. DIRLIST_LEN > 0). + MASK, LANGUAGE, TERRITORY, CODESET, NORMALIZED_CODESET, MODIFIER + are the pieces of the locale name, as produced by _nl_explode_name(). + FILENAME is the filename suffix. + The return value is the lookup result, either found in *L10NFILE_LIST, + or - if DO_ALLOCATE is nonzero - freshly allocated, or possibly NULL. + If the return value is non-NULL, it is added to *L10NFILE_LIST, and + its ->next field denotes the chaining inside *L10NFILE_LIST, and + furthermore its ->successor[] field contains a list of other lookup + results from which this lookup result inherits. */ +extern struct loaded_l10nfile * +_nl_make_l10nflist (struct loaded_l10nfile **l10nfile_list, + const char *dirlist, size_t dirlist_len, int mask, + const char *language, const char *territory, + const char *codeset, const char *normalized_codeset, + const char *modifier, + const char *filename, int do_allocate); + +/* Lookup the real locale name for a locale alias NAME, or NULL if + NAME is not a locale alias (but possibly a real locale name). + The return value is statically allocated and must not be freed. */ +/* Part of the libintl ABI only for the sake of the gettext.m4 macro. */ +extern LIBINTL_DLL_EXPORTED const char *_nl_expand_alias (const char *name); + +/* Split a locale name NAME into its pieces: language, modifier, + territory, codeset. + NAME gets destructively modified: NUL bytes are inserted here and + there. *LANGUAGE gets assigned NAME. Each of *MODIFIER, *TERRITORY, + *CODESET gets assigned either a pointer into the old NAME string, or + NULL. *NORMALIZED_CODESET gets assigned the expanded *CODESET, if it + is different from *CODESET; this one is dynamically allocated and has + to be freed by the caller. + The return value is a bitmask, where each bit corresponds to one + filled-in value: + XPG_MODIFIER for *MODIFIER, + XPG_TERRITORY for *TERRITORY, + XPG_CODESET for *CODESET, + XPG_NORM_CODESET for *NORMALIZED_CODESET. + */ +extern int _nl_explode_name (char *name, const char **language, + const char **modifier, const char **territory, + const char **codeset, + const char **normalized_codeset); + +#endif /* loadinfo.h */ diff --git a/xchat-2.8.8/intl/loadmsgcat.c b/xchat-2.8.8/intl/loadmsgcat.c new file mode 100644 index 0000000..3432a8c --- /dev/null +++ b/xchat-2.8.8/intl/loadmsgcat.c @@ -0,0 +1,1336 @@ +/* Load needed message catalogs. + Copyright (C) 1995-1999, 2000-2007 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Tell glibc's to provide a prototype for mempcpy(). + This must come before because may include + , and once has been included, it's too late. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include +#include + +#ifdef __GNUC__ +# undef alloca +# define alloca __builtin_alloca +# define HAVE_ALLOCA 1 +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# if defined HAVE_ALLOCA_H || defined _LIBC +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca +char *alloca (); +# endif +# endif +# endif +# endif +#endif + +#include +#include + +#if defined HAVE_UNISTD_H || defined _LIBC +# include +#endif + +#ifdef _LIBC +# include +# include +#endif + +#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ + || (defined _LIBC && defined _POSIX_MAPPED_FILES) +# include +# undef HAVE_MMAP +# define HAVE_MMAP 1 +#else +# undef HAVE_MMAP +#endif + +#if defined HAVE_STDINT_H_WITH_UINTMAX || defined _LIBC +# include +#endif +#if defined HAVE_INTTYPES_H || defined _LIBC +# include +#endif + +#include "gmo.h" +#include "gettextP.h" +#include "hash-string.h" +#include "plural-exp.h" + +#ifdef _LIBC +# include "../locale/localeinfo.h" +# include +#endif + +/* Handle multi-threaded applications. */ +#ifdef _LIBC +# include +#else +# include "lock.h" +#endif + +/* Provide fallback values for macros that ought to be defined in . + Note that our fallback values need not be literal strings, because we don't + use them with preprocessor string concatenation. */ +#if !defined PRId8 || PRI_MACROS_BROKEN +# undef PRId8 +# define PRId8 "d" +#endif +#if !defined PRIi8 || PRI_MACROS_BROKEN +# undef PRIi8 +# define PRIi8 "i" +#endif +#if !defined PRIo8 || PRI_MACROS_BROKEN +# undef PRIo8 +# define PRIo8 "o" +#endif +#if !defined PRIu8 || PRI_MACROS_BROKEN +# undef PRIu8 +# define PRIu8 "u" +#endif +#if !defined PRIx8 || PRI_MACROS_BROKEN +# undef PRIx8 +# define PRIx8 "x" +#endif +#if !defined PRIX8 || PRI_MACROS_BROKEN +# undef PRIX8 +# define PRIX8 "X" +#endif +#if !defined PRId16 || PRI_MACROS_BROKEN +# undef PRId16 +# define PRId16 "d" +#endif +#if !defined PRIi16 || PRI_MACROS_BROKEN +# undef PRIi16 +# define PRIi16 "i" +#endif +#if !defined PRIo16 || PRI_MACROS_BROKEN +# undef PRIo16 +# define PRIo16 "o" +#endif +#if !defined PRIu16 || PRI_MACROS_BROKEN +# undef PRIu16 +# define PRIu16 "u" +#endif +#if !defined PRIx16 || PRI_MACROS_BROKEN +# undef PRIx16 +# define PRIx16 "x" +#endif +#if !defined PRIX16 || PRI_MACROS_BROKEN +# undef PRIX16 +# define PRIX16 "X" +#endif +#if !defined PRId32 || PRI_MACROS_BROKEN +# undef PRId32 +# define PRId32 "d" +#endif +#if !defined PRIi32 || PRI_MACROS_BROKEN +# undef PRIi32 +# define PRIi32 "i" +#endif +#if !defined PRIo32 || PRI_MACROS_BROKEN +# undef PRIo32 +# define PRIo32 "o" +#endif +#if !defined PRIu32 || PRI_MACROS_BROKEN +# undef PRIu32 +# define PRIu32 "u" +#endif +#if !defined PRIx32 || PRI_MACROS_BROKEN +# undef PRIx32 +# define PRIx32 "x" +#endif +#if !defined PRIX32 || PRI_MACROS_BROKEN +# undef PRIX32 +# define PRIX32 "X" +#endif +#if !defined PRId64 || PRI_MACROS_BROKEN +# undef PRId64 +# define PRId64 (sizeof (long) == 8 ? "ld" : "lld") +#endif +#if !defined PRIi64 || PRI_MACROS_BROKEN +# undef PRIi64 +# define PRIi64 (sizeof (long) == 8 ? "li" : "lli") +#endif +#if !defined PRIo64 || PRI_MACROS_BROKEN +# undef PRIo64 +# define PRIo64 (sizeof (long) == 8 ? "lo" : "llo") +#endif +#if !defined PRIu64 || PRI_MACROS_BROKEN +# undef PRIu64 +# define PRIu64 (sizeof (long) == 8 ? "lu" : "llu") +#endif +#if !defined PRIx64 || PRI_MACROS_BROKEN +# undef PRIx64 +# define PRIx64 (sizeof (long) == 8 ? "lx" : "llx") +#endif +#if !defined PRIX64 || PRI_MACROS_BROKEN +# undef PRIX64 +# define PRIX64 (sizeof (long) == 8 ? "lX" : "llX") +#endif +#if !defined PRIdLEAST8 || PRI_MACROS_BROKEN +# undef PRIdLEAST8 +# define PRIdLEAST8 "d" +#endif +#if !defined PRIiLEAST8 || PRI_MACROS_BROKEN +# undef PRIiLEAST8 +# define PRIiLEAST8 "i" +#endif +#if !defined PRIoLEAST8 || PRI_MACROS_BROKEN +# undef PRIoLEAST8 +# define PRIoLEAST8 "o" +#endif +#if !defined PRIuLEAST8 || PRI_MACROS_BROKEN +# undef PRIuLEAST8 +# define PRIuLEAST8 "u" +#endif +#if !defined PRIxLEAST8 || PRI_MACROS_BROKEN +# undef PRIxLEAST8 +# define PRIxLEAST8 "x" +#endif +#if !defined PRIXLEAST8 || PRI_MACROS_BROKEN +# undef PRIXLEAST8 +# define PRIXLEAST8 "X" +#endif +#if !defined PRIdLEAST16 || PRI_MACROS_BROKEN +# undef PRIdLEAST16 +# define PRIdLEAST16 "d" +#endif +#if !defined PRIiLEAST16 || PRI_MACROS_BROKEN +# undef PRIiLEAST16 +# define PRIiLEAST16 "i" +#endif +#if !defined PRIoLEAST16 || PRI_MACROS_BROKEN +# undef PRIoLEAST16 +# define PRIoLEAST16 "o" +#endif +#if !defined PRIuLEAST16 || PRI_MACROS_BROKEN +# undef PRIuLEAST16 +# define PRIuLEAST16 "u" +#endif +#if !defined PRIxLEAST16 || PRI_MACROS_BROKEN +# undef PRIxLEAST16 +# define PRIxLEAST16 "x" +#endif +#if !defined PRIXLEAST16 || PRI_MACROS_BROKEN +# undef PRIXLEAST16 +# define PRIXLEAST16 "X" +#endif +#if !defined PRIdLEAST32 || PRI_MACROS_BROKEN +# undef PRIdLEAST32 +# define PRIdLEAST32 "d" +#endif +#if !defined PRIiLEAST32 || PRI_MACROS_BROKEN +# undef PRIiLEAST32 +# define PRIiLEAST32 "i" +#endif +#if !defined PRIoLEAST32 || PRI_MACROS_BROKEN +# undef PRIoLEAST32 +# define PRIoLEAST32 "o" +#endif +#if !defined PRIuLEAST32 || PRI_MACROS_BROKEN +# undef PRIuLEAST32 +# define PRIuLEAST32 "u" +#endif +#if !defined PRIxLEAST32 || PRI_MACROS_BROKEN +# undef PRIxLEAST32 +# define PRIxLEAST32 "x" +#endif +#if !defined PRIXLEAST32 || PRI_MACROS_BROKEN +# undef PRIXLEAST32 +# define PRIXLEAST32 "X" +#endif +#if !defined PRIdLEAST64 || PRI_MACROS_BROKEN +# undef PRIdLEAST64 +# define PRIdLEAST64 PRId64 +#endif +#if !defined PRIiLEAST64 || PRI_MACROS_BROKEN +# undef PRIiLEAST64 +# define PRIiLEAST64 PRIi64 +#endif +#if !defined PRIoLEAST64 || PRI_MACROS_BROKEN +# undef PRIoLEAST64 +# define PRIoLEAST64 PRIo64 +#endif +#if !defined PRIuLEAST64 || PRI_MACROS_BROKEN +# undef PRIuLEAST64 +# define PRIuLEAST64 PRIu64 +#endif +#if !defined PRIxLEAST64 || PRI_MACROS_BROKEN +# undef PRIxLEAST64 +# define PRIxLEAST64 PRIx64 +#endif +#if !defined PRIXLEAST64 || PRI_MACROS_BROKEN +# undef PRIXLEAST64 +# define PRIXLEAST64 PRIX64 +#endif +#if !defined PRIdFAST8 || PRI_MACROS_BROKEN +# undef PRIdFAST8 +# define PRIdFAST8 "d" +#endif +#if !defined PRIiFAST8 || PRI_MACROS_BROKEN +# undef PRIiFAST8 +# define PRIiFAST8 "i" +#endif +#if !defined PRIoFAST8 || PRI_MACROS_BROKEN +# undef PRIoFAST8 +# define PRIoFAST8 "o" +#endif +#if !defined PRIuFAST8 || PRI_MACROS_BROKEN +# undef PRIuFAST8 +# define PRIuFAST8 "u" +#endif +#if !defined PRIxFAST8 || PRI_MACROS_BROKEN +# undef PRIxFAST8 +# define PRIxFAST8 "x" +#endif +#if !defined PRIXFAST8 || PRI_MACROS_BROKEN +# undef PRIXFAST8 +# define PRIXFAST8 "X" +#endif +#if !defined PRIdFAST16 || PRI_MACROS_BROKEN +# undef PRIdFAST16 +# define PRIdFAST16 "d" +#endif +#if !defined PRIiFAST16 || PRI_MACROS_BROKEN +# undef PRIiFAST16 +# define PRIiFAST16 "i" +#endif +#if !defined PRIoFAST16 || PRI_MACROS_BROKEN +# undef PRIoFAST16 +# define PRIoFAST16 "o" +#endif +#if !defined PRIuFAST16 || PRI_MACROS_BROKEN +# undef PRIuFAST16 +# define PRIuFAST16 "u" +#endif +#if !defined PRIxFAST16 || PRI_MACROS_BROKEN +# undef PRIxFAST16 +# define PRIxFAST16 "x" +#endif +#if !defined PRIXFAST16 || PRI_MACROS_BROKEN +# undef PRIXFAST16 +# define PRIXFAST16 "X" +#endif +#if !defined PRIdFAST32 || PRI_MACROS_BROKEN +# undef PRIdFAST32 +# define PRIdFAST32 "d" +#endif +#if !defined PRIiFAST32 || PRI_MACROS_BROKEN +# undef PRIiFAST32 +# define PRIiFAST32 "i" +#endif +#if !defined PRIoFAST32 || PRI_MACROS_BROKEN +# undef PRIoFAST32 +# define PRIoFAST32 "o" +#endif +#if !defined PRIuFAST32 || PRI_MACROS_BROKEN +# undef PRIuFAST32 +# define PRIuFAST32 "u" +#endif +#if !defined PRIxFAST32 || PRI_MACROS_BROKEN +# undef PRIxFAST32 +# define PRIxFAST32 "x" +#endif +#if !defined PRIXFAST32 || PRI_MACROS_BROKEN +# undef PRIXFAST32 +# define PRIXFAST32 "X" +#endif +#if !defined PRIdFAST64 || PRI_MACROS_BROKEN +# undef PRIdFAST64 +# define PRIdFAST64 PRId64 +#endif +#if !defined PRIiFAST64 || PRI_MACROS_BROKEN +# undef PRIiFAST64 +# define PRIiFAST64 PRIi64 +#endif +#if !defined PRIoFAST64 || PRI_MACROS_BROKEN +# undef PRIoFAST64 +# define PRIoFAST64 PRIo64 +#endif +#if !defined PRIuFAST64 || PRI_MACROS_BROKEN +# undef PRIuFAST64 +# define PRIuFAST64 PRIu64 +#endif +#if !defined PRIxFAST64 || PRI_MACROS_BROKEN +# undef PRIxFAST64 +# define PRIxFAST64 PRIx64 +#endif +#if !defined PRIXFAST64 || PRI_MACROS_BROKEN +# undef PRIXFAST64 +# define PRIXFAST64 PRIX64 +#endif +#if !defined PRIdMAX || PRI_MACROS_BROKEN +# undef PRIdMAX +# define PRIdMAX (sizeof (uintmax_t) == sizeof (long) ? "ld" : "lld") +#endif +#if !defined PRIiMAX || PRI_MACROS_BROKEN +# undef PRIiMAX +# define PRIiMAX (sizeof (uintmax_t) == sizeof (long) ? "li" : "lli") +#endif +#if !defined PRIoMAX || PRI_MACROS_BROKEN +# undef PRIoMAX +# define PRIoMAX (sizeof (uintmax_t) == sizeof (long) ? "lo" : "llo") +#endif +#if !defined PRIuMAX || PRI_MACROS_BROKEN +# undef PRIuMAX +# define PRIuMAX (sizeof (uintmax_t) == sizeof (long) ? "lu" : "llu") +#endif +#if !defined PRIxMAX || PRI_MACROS_BROKEN +# undef PRIxMAX +# define PRIxMAX (sizeof (uintmax_t) == sizeof (long) ? "lx" : "llx") +#endif +#if !defined PRIXMAX || PRI_MACROS_BROKEN +# undef PRIXMAX +# define PRIXMAX (sizeof (uintmax_t) == sizeof (long) ? "lX" : "llX") +#endif +#if !defined PRIdPTR || PRI_MACROS_BROKEN +# undef PRIdPTR +# define PRIdPTR \ + (sizeof (void *) == sizeof (long) ? "ld" : \ + sizeof (void *) == sizeof (int) ? "d" : \ + "lld") +#endif +#if !defined PRIiPTR || PRI_MACROS_BROKEN +# undef PRIiPTR +# define PRIiPTR \ + (sizeof (void *) == sizeof (long) ? "li" : \ + sizeof (void *) == sizeof (int) ? "i" : \ + "lli") +#endif +#if !defined PRIoPTR || PRI_MACROS_BROKEN +# undef PRIoPTR +# define PRIoPTR \ + (sizeof (void *) == sizeof (long) ? "lo" : \ + sizeof (void *) == sizeof (int) ? "o" : \ + "llo") +#endif +#if !defined PRIuPTR || PRI_MACROS_BROKEN +# undef PRIuPTR +# define PRIuPTR \ + (sizeof (void *) == sizeof (long) ? "lu" : \ + sizeof (void *) == sizeof (int) ? "u" : \ + "llu") +#endif +#if !defined PRIxPTR || PRI_MACROS_BROKEN +# undef PRIxPTR +# define PRIxPTR \ + (sizeof (void *) == sizeof (long) ? "lx" : \ + sizeof (void *) == sizeof (int) ? "x" : \ + "llx") +#endif +#if !defined PRIXPTR || PRI_MACROS_BROKEN +# undef PRIXPTR +# define PRIXPTR \ + (sizeof (void *) == sizeof (long) ? "lX" : \ + sizeof (void *) == sizeof (int) ? "X" : \ + "llX") +#endif + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ISO C functions. This is required by the standard + because some ISO C functions will require linking with this object + file and the name space must not be polluted. */ +# define open(name, flags) open_not_cancel_2 (name, flags) +# define close(fd) close_not_cancel_no_status (fd) +# define read(fd, buf, n) read_not_cancel (fd, buf, n) +# define mmap(addr, len, prot, flags, fd, offset) \ + __mmap (addr, len, prot, flags, fd, offset) +# define munmap(addr, len) __munmap (addr, len) +#endif + +/* For those losing systems which don't have `alloca' we have to add + some additional code emulating it. */ +#ifdef HAVE_ALLOCA +# define freea(p) /* nothing */ +#else +# define alloca(n) malloc (n) +# define freea(p) free (p) +#endif + +/* For systems that distinguish between text and binary I/O. + O_BINARY is usually declared in . */ +#if !defined O_BINARY && defined _O_BINARY + /* For MSC-compatible compilers. */ +# define O_BINARY _O_BINARY +# define O_TEXT _O_TEXT +#endif +#ifdef __BEOS__ + /* BeOS 5 has O_BINARY and O_TEXT, but they have no effect. */ +# undef O_BINARY +# undef O_TEXT +#endif +/* On reasonable systems, binary I/O is the default. */ +#ifndef O_BINARY +# define O_BINARY 0 +#endif + + +/* We need a sign, whether a new catalog was loaded, which can be associated + with all translations. This is important if the translations are + cached by one of GCC's features. */ +int _nl_msg_cat_cntr; + + +/* Expand a system dependent string segment. Return NULL if unsupported. */ +static const char * +get_sysdep_segment_value (const char *name) +{ + /* Test for an ISO C 99 section 7.8.1 format string directive. + Syntax: + P R I { d | i | o | u | x | X } + { { | LEAST | FAST } { 8 | 16 | 32 | 64 } | MAX | PTR } */ + /* We don't use a table of 14 times 6 'const char *' strings here, because + data relocations cost startup time. */ + if (name[0] == 'P' && name[1] == 'R' && name[2] == 'I') + { + if (name[3] == 'd' || name[3] == 'i' || name[3] == 'o' || name[3] == 'u' + || name[3] == 'x' || name[3] == 'X') + { + if (name[4] == '8' && name[5] == '\0') + { + if (name[3] == 'd') + return PRId8; + if (name[3] == 'i') + return PRIi8; + if (name[3] == 'o') + return PRIo8; + if (name[3] == 'u') + return PRIu8; + if (name[3] == 'x') + return PRIx8; + if (name[3] == 'X') + return PRIX8; + abort (); + } + if (name[4] == '1' && name[5] == '6' && name[6] == '\0') + { + if (name[3] == 'd') + return PRId16; + if (name[3] == 'i') + return PRIi16; + if (name[3] == 'o') + return PRIo16; + if (name[3] == 'u') + return PRIu16; + if (name[3] == 'x') + return PRIx16; + if (name[3] == 'X') + return PRIX16; + abort (); + } + if (name[4] == '3' && name[5] == '2' && name[6] == '\0') + { + if (name[3] == 'd') + return PRId32; + if (name[3] == 'i') + return PRIi32; + if (name[3] == 'o') + return PRIo32; + if (name[3] == 'u') + return PRIu32; + if (name[3] == 'x') + return PRIx32; + if (name[3] == 'X') + return PRIX32; + abort (); + } + if (name[4] == '6' && name[5] == '4' && name[6] == '\0') + { + if (name[3] == 'd') + return PRId64; + if (name[3] == 'i') + return PRIi64; + if (name[3] == 'o') + return PRIo64; + if (name[3] == 'u') + return PRIu64; + if (name[3] == 'x') + return PRIx64; + if (name[3] == 'X') + return PRIX64; + abort (); + } + if (name[4] == 'L' && name[5] == 'E' && name[6] == 'A' + && name[7] == 'S' && name[8] == 'T') + { + if (name[9] == '8' && name[10] == '\0') + { + if (name[3] == 'd') + return PRIdLEAST8; + if (name[3] == 'i') + return PRIiLEAST8; + if (name[3] == 'o') + return PRIoLEAST8; + if (name[3] == 'u') + return PRIuLEAST8; + if (name[3] == 'x') + return PRIxLEAST8; + if (name[3] == 'X') + return PRIXLEAST8; + abort (); + } + if (name[9] == '1' && name[10] == '6' && name[11] == '\0') + { + if (name[3] == 'd') + return PRIdLEAST16; + if (name[3] == 'i') + return PRIiLEAST16; + if (name[3] == 'o') + return PRIoLEAST16; + if (name[3] == 'u') + return PRIuLEAST16; + if (name[3] == 'x') + return PRIxLEAST16; + if (name[3] == 'X') + return PRIXLEAST16; + abort (); + } + if (name[9] == '3' && name[10] == '2' && name[11] == '\0') + { + if (name[3] == 'd') + return PRIdLEAST32; + if (name[3] == 'i') + return PRIiLEAST32; + if (name[3] == 'o') + return PRIoLEAST32; + if (name[3] == 'u') + return PRIuLEAST32; + if (name[3] == 'x') + return PRIxLEAST32; + if (name[3] == 'X') + return PRIXLEAST32; + abort (); + } + if (name[9] == '6' && name[10] == '4' && name[11] == '\0') + { + if (name[3] == 'd') + return PRIdLEAST64; + if (name[3] == 'i') + return PRIiLEAST64; + if (name[3] == 'o') + return PRIoLEAST64; + if (name[3] == 'u') + return PRIuLEAST64; + if (name[3] == 'x') + return PRIxLEAST64; + if (name[3] == 'X') + return PRIXLEAST64; + abort (); + } + } + if (name[4] == 'F' && name[5] == 'A' && name[6] == 'S' + && name[7] == 'T') + { + if (name[8] == '8' && name[9] == '\0') + { + if (name[3] == 'd') + return PRIdFAST8; + if (name[3] == 'i') + return PRIiFAST8; + if (name[3] == 'o') + return PRIoFAST8; + if (name[3] == 'u') + return PRIuFAST8; + if (name[3] == 'x') + return PRIxFAST8; + if (name[3] == 'X') + return PRIXFAST8; + abort (); + } + if (name[8] == '1' && name[9] == '6' && name[10] == '\0') + { + if (name[3] == 'd') + return PRIdFAST16; + if (name[3] == 'i') + return PRIiFAST16; + if (name[3] == 'o') + return PRIoFAST16; + if (name[3] == 'u') + return PRIuFAST16; + if (name[3] == 'x') + return PRIxFAST16; + if (name[3] == 'X') + return PRIXFAST16; + abort (); + } + if (name[8] == '3' && name[9] == '2' && name[10] == '\0') + { + if (name[3] == 'd') + return PRIdFAST32; + if (name[3] == 'i') + return PRIiFAST32; + if (name[3] == 'o') + return PRIoFAST32; + if (name[3] == 'u') + return PRIuFAST32; + if (name[3] == 'x') + return PRIxFAST32; + if (name[3] == 'X') + return PRIXFAST32; + abort (); + } + if (name[8] == '6' && name[9] == '4' && name[10] == '\0') + { + if (name[3] == 'd') + return PRIdFAST64; + if (name[3] == 'i') + return PRIiFAST64; + if (name[3] == 'o') + return PRIoFAST64; + if (name[3] == 'u') + return PRIuFAST64; + if (name[3] == 'x') + return PRIxFAST64; + if (name[3] == 'X') + return PRIXFAST64; + abort (); + } + } + if (name[4] == 'M' && name[5] == 'A' && name[6] == 'X' + && name[7] == '\0') + { + if (name[3] == 'd') + return PRIdMAX; + if (name[3] == 'i') + return PRIiMAX; + if (name[3] == 'o') + return PRIoMAX; + if (name[3] == 'u') + return PRIuMAX; + if (name[3] == 'x') + return PRIxMAX; + if (name[3] == 'X') + return PRIXMAX; + abort (); + } + if (name[4] == 'P' && name[5] == 'T' && name[6] == 'R' + && name[7] == '\0') + { + if (name[3] == 'd') + return PRIdPTR; + if (name[3] == 'i') + return PRIiPTR; + if (name[3] == 'o') + return PRIoPTR; + if (name[3] == 'u') + return PRIuPTR; + if (name[3] == 'x') + return PRIxPTR; + if (name[3] == 'X') + return PRIXPTR; + abort (); + } + } + } + /* Test for a glibc specific printf() format directive flag. */ + if (name[0] == 'I' && name[1] == '\0') + { +#if defined _LIBC || __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) + /* The 'I' flag, in numeric format directives, replaces ASCII digits + with the 'outdigits' defined in the LC_CTYPE locale facet. This is + used for Farsi (Persian) and maybe Arabic. */ + return "I"; +#else + return ""; +#endif + } + /* Other system dependent strings are not valid. */ + return NULL; +} + +/* Load the message catalogs specified by FILENAME. If it is no valid + message catalog do nothing. */ +void +internal_function +_nl_load_domain (struct loaded_l10nfile *domain_file, + struct binding *domainbinding) +{ + __libc_lock_define_initialized_recursive (static, lock) + int fd = -1; + size_t size; +#ifdef _LIBC + struct stat64 st; +#else + struct stat st; +#endif + struct mo_file_header *data = (struct mo_file_header *) -1; + int use_mmap = 0; + struct loaded_domain *domain; + int revision; + const char *nullentry; + size_t nullentrylen; + + __libc_lock_lock_recursive (lock); + if (domain_file->decided != 0) + { + /* There are two possibilities: + + + this is the same thread calling again during this initialization + via _nl_find_msg. We have initialized everything this call needs. + + + this is another thread which tried to initialize this object. + Not necessary anymore since if the lock is available this + is finished. + */ + goto done; + } + + domain_file->decided = -1; + domain_file->data = NULL; + + /* Note that it would be useless to store domainbinding in domain_file + because domainbinding might be == NULL now but != NULL later (after + a call to bind_textdomain_codeset). */ + + /* If the record does not represent a valid locale the FILENAME + might be NULL. This can happen when according to the given + specification the locale file name is different for XPG and CEN + syntax. */ + if (domain_file->filename == NULL) + goto out; + + /* Try to open the addressed file. */ + fd = open (domain_file->filename, O_RDONLY | O_BINARY); + if (fd == -1) + goto out; + + /* We must know about the size of the file. */ + if ( +#ifdef _LIBC + __builtin_expect (fstat64 (fd, &st) != 0, 0) +#else + __builtin_expect (fstat (fd, &st) != 0, 0) +#endif + || __builtin_expect ((size = (size_t) st.st_size) != st.st_size, 0) + || __builtin_expect (size < sizeof (struct mo_file_header), 0)) + /* Something went wrong. */ + goto out; + +#ifdef HAVE_MMAP + /* Now we are ready to load the file. If mmap() is available we try + this first. If not available or it failed we try to load it. */ + data = (struct mo_file_header *) mmap (NULL, size, PROT_READ, + MAP_PRIVATE, fd, 0); + + if (__builtin_expect (data != (struct mo_file_header *) -1, 1)) + { + /* mmap() call was successful. */ + close (fd); + fd = -1; + use_mmap = 1; + } +#endif + + /* If the data is not yet available (i.e. mmap'ed) we try to load + it manually. */ + if (data == (struct mo_file_header *) -1) + { + size_t to_read; + char *read_ptr; + + data = (struct mo_file_header *) malloc (size); + if (data == NULL) + goto out; + + to_read = size; + read_ptr = (char *) data; + do + { + long int nb = (long int) read (fd, read_ptr, to_read); + if (nb <= 0) + { +#ifdef EINTR + if (nb == -1 && errno == EINTR) + continue; +#endif + goto out; + } + read_ptr += nb; + to_read -= nb; + } + while (to_read > 0); + + close (fd); + fd = -1; + } + + /* Using the magic number we can test whether it really is a message + catalog file. */ + if (__builtin_expect (data->magic != _MAGIC && data->magic != _MAGIC_SWAPPED, + 0)) + { + /* The magic number is wrong: not a message catalog file. */ +#ifdef HAVE_MMAP + if (use_mmap) + munmap ((caddr_t) data, size); + else +#endif + free (data); + goto out; + } + + domain = (struct loaded_domain *) malloc (sizeof (struct loaded_domain)); + if (domain == NULL) + goto out; + domain_file->data = domain; + + domain->data = (char *) data; + domain->use_mmap = use_mmap; + domain->mmap_size = size; + domain->must_swap = data->magic != _MAGIC; + domain->malloced = NULL; + + /* Fill in the information about the available tables. */ + revision = W (domain->must_swap, data->revision); + /* We support only the major revisions 0 and 1. */ + switch (revision >> 16) + { + case 0: + case 1: + domain->nstrings = W (domain->must_swap, data->nstrings); + domain->orig_tab = (const struct string_desc *) + ((char *) data + W (domain->must_swap, data->orig_tab_offset)); + domain->trans_tab = (const struct string_desc *) + ((char *) data + W (domain->must_swap, data->trans_tab_offset)); + domain->hash_size = W (domain->must_swap, data->hash_tab_size); + domain->hash_tab = + (domain->hash_size > 2 + ? (const nls_uint32 *) + ((char *) data + W (domain->must_swap, data->hash_tab_offset)) + : NULL); + domain->must_swap_hash_tab = domain->must_swap; + + /* Now dispatch on the minor revision. */ + switch (revision & 0xffff) + { + case 0: + domain->n_sysdep_strings = 0; + domain->orig_sysdep_tab = NULL; + domain->trans_sysdep_tab = NULL; + break; + case 1: + default: + { + nls_uint32 n_sysdep_strings; + + if (domain->hash_tab == NULL) + /* This is invalid. These minor revisions need a hash table. */ + goto invalid; + + n_sysdep_strings = + W (domain->must_swap, data->n_sysdep_strings); + if (n_sysdep_strings > 0) + { + nls_uint32 n_sysdep_segments; + const struct sysdep_segment *sysdep_segments; + const char **sysdep_segment_values; + const nls_uint32 *orig_sysdep_tab; + const nls_uint32 *trans_sysdep_tab; + nls_uint32 n_inmem_sysdep_strings; + size_t memneed; + char *mem; + struct sysdep_string_desc *inmem_orig_sysdep_tab; + struct sysdep_string_desc *inmem_trans_sysdep_tab; + nls_uint32 *inmem_hash_tab; + unsigned int i, j; + + /* Get the values of the system dependent segments. */ + n_sysdep_segments = + W (domain->must_swap, data->n_sysdep_segments); + sysdep_segments = (const struct sysdep_segment *) + ((char *) data + + W (domain->must_swap, data->sysdep_segments_offset)); + sysdep_segment_values = + (const char **) + alloca (n_sysdep_segments * sizeof (const char *)); + for (i = 0; i < n_sysdep_segments; i++) + { + const char *name = + (char *) data + + W (domain->must_swap, sysdep_segments[i].offset); + nls_uint32 namelen = + W (domain->must_swap, sysdep_segments[i].length); + + if (!(namelen > 0 && name[namelen - 1] == '\0')) + { + freea (sysdep_segment_values); + goto invalid; + } + + sysdep_segment_values[i] = get_sysdep_segment_value (name); + } + + orig_sysdep_tab = (const nls_uint32 *) + ((char *) data + + W (domain->must_swap, data->orig_sysdep_tab_offset)); + trans_sysdep_tab = (const nls_uint32 *) + ((char *) data + + W (domain->must_swap, data->trans_sysdep_tab_offset)); + + /* Compute the amount of additional memory needed for the + system dependent strings and the augmented hash table. + At the same time, also drop string pairs which refer to + an undefined system dependent segment. */ + n_inmem_sysdep_strings = 0; + memneed = domain->hash_size * sizeof (nls_uint32); + for (i = 0; i < n_sysdep_strings; i++) + { + int valid = 1; + size_t needs[2]; + + for (j = 0; j < 2; j++) + { + const struct sysdep_string *sysdep_string = + (const struct sysdep_string *) + ((char *) data + + W (domain->must_swap, + j == 0 + ? orig_sysdep_tab[i] + : trans_sysdep_tab[i])); + size_t need = 0; + const struct segment_pair *p = sysdep_string->segments; + + if (W (domain->must_swap, p->sysdepref) != SEGMENTS_END) + for (p = sysdep_string->segments;; p++) + { + nls_uint32 sysdepref; + + need += W (domain->must_swap, p->segsize); + + sysdepref = W (domain->must_swap, p->sysdepref); + if (sysdepref == SEGMENTS_END) + break; + + if (sysdepref >= n_sysdep_segments) + { + /* Invalid. */ + freea (sysdep_segment_values); + goto invalid; + } + + if (sysdep_segment_values[sysdepref] == NULL) + { + /* This particular string pair is invalid. */ + valid = 0; + break; + } + + need += strlen (sysdep_segment_values[sysdepref]); + } + + needs[j] = need; + if (!valid) + break; + } + + if (valid) + { + n_inmem_sysdep_strings++; + memneed += needs[0] + needs[1]; + } + } + memneed += 2 * n_inmem_sysdep_strings + * sizeof (struct sysdep_string_desc); + + if (n_inmem_sysdep_strings > 0) + { + unsigned int k; + + /* Allocate additional memory. */ + mem = (char *) malloc (memneed); + if (mem == NULL) + goto invalid; + + domain->malloced = mem; + inmem_orig_sysdep_tab = (struct sysdep_string_desc *) mem; + mem += n_inmem_sysdep_strings + * sizeof (struct sysdep_string_desc); + inmem_trans_sysdep_tab = (struct sysdep_string_desc *) mem; + mem += n_inmem_sysdep_strings + * sizeof (struct sysdep_string_desc); + inmem_hash_tab = (nls_uint32 *) mem; + mem += domain->hash_size * sizeof (nls_uint32); + + /* Compute the system dependent strings. */ + k = 0; + for (i = 0; i < n_sysdep_strings; i++) + { + int valid = 1; + + for (j = 0; j < 2; j++) + { + const struct sysdep_string *sysdep_string = + (const struct sysdep_string *) + ((char *) data + + W (domain->must_swap, + j == 0 + ? orig_sysdep_tab[i] + : trans_sysdep_tab[i])); + const struct segment_pair *p = + sysdep_string->segments; + + if (W (domain->must_swap, p->sysdepref) + != SEGMENTS_END) + for (p = sysdep_string->segments;; p++) + { + nls_uint32 sysdepref; + + sysdepref = + W (domain->must_swap, p->sysdepref); + if (sysdepref == SEGMENTS_END) + break; + + if (sysdep_segment_values[sysdepref] == NULL) + { + /* This particular string pair is + invalid. */ + valid = 0; + break; + } + } + + if (!valid) + break; + } + + if (valid) + { + for (j = 0; j < 2; j++) + { + const struct sysdep_string *sysdep_string = + (const struct sysdep_string *) + ((char *) data + + W (domain->must_swap, + j == 0 + ? orig_sysdep_tab[i] + : trans_sysdep_tab[i])); + const char *static_segments = + (char *) data + + W (domain->must_swap, sysdep_string->offset); + const struct segment_pair *p = + sysdep_string->segments; + + /* Concatenate the segments, and fill + inmem_orig_sysdep_tab[k] (for j == 0) and + inmem_trans_sysdep_tab[k] (for j == 1). */ + + struct sysdep_string_desc *inmem_tab_entry = + (j == 0 + ? inmem_orig_sysdep_tab + : inmem_trans_sysdep_tab) + + k; + + if (W (domain->must_swap, p->sysdepref) + == SEGMENTS_END) + { + /* Only one static segment. */ + inmem_tab_entry->length = + W (domain->must_swap, p->segsize); + inmem_tab_entry->pointer = static_segments; + } + else + { + inmem_tab_entry->pointer = mem; + + for (p = sysdep_string->segments;; p++) + { + nls_uint32 segsize = + W (domain->must_swap, p->segsize); + nls_uint32 sysdepref = + W (domain->must_swap, p->sysdepref); + size_t n; + + if (segsize > 0) + { + memcpy (mem, static_segments, segsize); + mem += segsize; + static_segments += segsize; + } + + if (sysdepref == SEGMENTS_END) + break; + + n = strlen (sysdep_segment_values[sysdepref]); + memcpy (mem, sysdep_segment_values[sysdepref], n); + mem += n; + } + + inmem_tab_entry->length = + mem - inmem_tab_entry->pointer; + } + } + + k++; + } + } + if (k != n_inmem_sysdep_strings) + abort (); + + /* Compute the augmented hash table. */ + for (i = 0; i < domain->hash_size; i++) + inmem_hash_tab[i] = + W (domain->must_swap_hash_tab, domain->hash_tab[i]); + for (i = 0; i < n_inmem_sysdep_strings; i++) + { + const char *msgid = inmem_orig_sysdep_tab[i].pointer; + nls_uint32 hash_val = __hash_string (msgid); + nls_uint32 idx = hash_val % domain->hash_size; + nls_uint32 incr = + 1 + (hash_val % (domain->hash_size - 2)); + + for (;;) + { + if (inmem_hash_tab[idx] == 0) + { + /* Hash table entry is empty. Use it. */ + inmem_hash_tab[idx] = 1 + domain->nstrings + i; + break; + } + + if (idx >= domain->hash_size - incr) + idx -= domain->hash_size - incr; + else + idx += incr; + } + } + + domain->n_sysdep_strings = n_inmem_sysdep_strings; + domain->orig_sysdep_tab = inmem_orig_sysdep_tab; + domain->trans_sysdep_tab = inmem_trans_sysdep_tab; + + domain->hash_tab = inmem_hash_tab; + domain->must_swap_hash_tab = 0; + } + else + { + domain->n_sysdep_strings = 0; + domain->orig_sysdep_tab = NULL; + domain->trans_sysdep_tab = NULL; + } + + freea (sysdep_segment_values); + } + else + { + domain->n_sysdep_strings = 0; + domain->orig_sysdep_tab = NULL; + domain->trans_sysdep_tab = NULL; + } + } + break; + } + break; + default: + /* This is an invalid revision. */ + invalid: + /* This is an invalid .mo file. */ + if (domain->malloced) + free (domain->malloced); +#ifdef HAVE_MMAP + if (use_mmap) + munmap ((caddr_t) data, size); + else +#endif + free (data); + free (domain); + domain_file->data = NULL; + goto out; + } + + /* No caches of converted translations so far. */ + domain->conversions = NULL; + domain->nconversions = 0; + gl_rwlock_init (domain->conversions_lock); + + /* Get the header entry and look for a plural specification. */ +#ifdef IN_LIBGLOCALE + nullentry = + _nl_find_msg (domain_file, domainbinding, NULL, "", &nullentrylen); +#else + nullentry = _nl_find_msg (domain_file, domainbinding, "", 0, &nullentrylen); +#endif + EXTRACT_PLURAL_EXPRESSION (nullentry, &domain->plural, &domain->nplurals); + + out: + if (fd != -1) + close (fd); + + domain_file->decided = 1; + + done: + __libc_lock_unlock_recursive (lock); +} + + +#ifdef _LIBC +void +internal_function __libc_freeres_fn_section +_nl_unload_domain (struct loaded_domain *domain) +{ + size_t i; + + if (domain->plural != &__gettext_germanic_plural) + __gettext_free_exp ((struct expression *) domain->plural); + + for (i = 0; i < domain->nconversions; i++) + { + struct converted_domain *convd = &domain->conversions[i]; + + free (convd->encoding); + if (convd->conv_tab != NULL && convd->conv_tab != (char **) -1) + free (convd->conv_tab); + if (convd->conv != (__gconv_t) -1) + __gconv_close (convd->conv); + } + if (domain->conversions != NULL) + free (domain->conversions); + __libc_rwlock_fini (domain->conversions_lock); + + if (domain->malloced) + free (domain->malloced); + +# ifdef _POSIX_MAPPED_FILES + if (domain->use_mmap) + munmap ((caddr_t) domain->data, domain->mmap_size); + else +# endif /* _POSIX_MAPPED_FILES */ + free ((void *) domain->data); + + free (domain); +} +#endif diff --git a/xchat-2.8.8/intl/localcharset.c b/xchat-2.8.8/intl/localcharset.c new file mode 100644 index 0000000..e796ae7 --- /dev/null +++ b/xchat-2.8.8/intl/localcharset.c @@ -0,0 +1,461 @@ +/* Determine a canonical name for the current locale's character encoding. + + Copyright (C) 2000-2006 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Written by Bruno Haible . */ + +#include + +/* Specification. */ +#include "localcharset.h" + +#include +#include +#include +#include + +#if defined _WIN32 || defined __WIN32__ +# define WIN32_NATIVE +#endif + +#if defined __EMX__ +/* Assume EMX program runs on OS/2, even if compiled under DOS. */ +# define OS2 +#endif + +#if !defined WIN32_NATIVE +# if HAVE_LANGINFO_CODESET +# include +# else +# if 0 /* see comment below */ +# include +# endif +# endif +# ifdef __CYGWIN__ +# define WIN32_LEAN_AND_MEAN +# include +# endif +#elif defined WIN32_NATIVE +# define WIN32_LEAN_AND_MEAN +# include +#endif +#if defined OS2 +# define INCL_DOS +# include +#endif + +#if ENABLE_RELOCATABLE +# include "relocatable.h" +#else +# define relocate(pathname) (pathname) +#endif + +/* Get LIBDIR. */ +#ifndef LIBDIR +# include "configmake.h" +#endif + +#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__ + /* Win32, Cygwin, OS/2, DOS */ +# define ISSLASH(C) ((C) == '/' || (C) == '\\') +#endif + +#ifndef DIRECTORY_SEPARATOR +# define DIRECTORY_SEPARATOR '/' +#endif + +#ifndef ISSLASH +# define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR) +#endif + +#if HAVE_DECL_GETC_UNLOCKED +# undef getc +# define getc getc_unlocked +#endif + +/* The following static variable is declared 'volatile' to avoid a + possible multithread problem in the function get_charset_aliases. If we + are running in a threaded environment, and if two threads initialize + 'charset_aliases' simultaneously, both will produce the same value, + and everything will be ok if the two assignments to 'charset_aliases' + are atomic. But I don't know what will happen if the two assignments mix. */ +#if __STDC__ != 1 +# define volatile /* empty */ +#endif +/* Pointer to the contents of the charset.alias file, if it has already been + read, else NULL. Its format is: + ALIAS_1 '\0' CANONICAL_1 '\0' ... ALIAS_n '\0' CANONICAL_n '\0' '\0' */ +static const char * volatile charset_aliases; + +/* Return a pointer to the contents of the charset.alias file. */ +static const char * +get_charset_aliases (void) +{ + const char *cp; + + cp = charset_aliases; + if (cp == NULL) + { +#if !(defined VMS || defined WIN32_NATIVE || defined __CYGWIN__) + FILE *fp; + const char *dir; + const char *base = "charset.alias"; + char *file_name; + + /* Make it possible to override the charset.alias location. This is + necessary for running the testsuite before "make install". */ + dir = getenv ("CHARSETALIASDIR"); + if (dir == NULL || dir[0] == '\0') + dir = relocate (LIBDIR); + + /* Concatenate dir and base into freshly allocated file_name. */ + { + size_t dir_len = strlen (dir); + size_t base_len = strlen (base); + int add_slash = (dir_len > 0 && !ISSLASH (dir[dir_len - 1])); + file_name = (char *) malloc (dir_len + add_slash + base_len + 1); + if (file_name != NULL) + { + memcpy (file_name, dir, dir_len); + if (add_slash) + file_name[dir_len] = DIRECTORY_SEPARATOR; + memcpy (file_name + dir_len + add_slash, base, base_len + 1); + } + } + + if (file_name == NULL || (fp = fopen (file_name, "r")) == NULL) + /* Out of memory or file not found, treat it as empty. */ + cp = ""; + else + { + /* Parse the file's contents. */ + char *res_ptr = NULL; + size_t res_size = 0; + + for (;;) + { + int c; + char buf1[50+1]; + char buf2[50+1]; + size_t l1, l2; + char *old_res_ptr; + + c = getc (fp); + if (c == EOF) + break; + if (c == '\n' || c == ' ' || c == '\t') + continue; + if (c == '#') + { + /* Skip comment, to end of line. */ + do + c = getc (fp); + while (!(c == EOF || c == '\n')); + if (c == EOF) + break; + continue; + } + ungetc (c, fp); + if (fscanf (fp, "%50s %50s", buf1, buf2) < 2) + break; + l1 = strlen (buf1); + l2 = strlen (buf2); + old_res_ptr = res_ptr; + if (res_size == 0) + { + res_size = l1 + 1 + l2 + 1; + res_ptr = (char *) malloc (res_size + 1); + } + else + { + res_size += l1 + 1 + l2 + 1; + res_ptr = (char *) realloc (res_ptr, res_size + 1); + } + if (res_ptr == NULL) + { + /* Out of memory. */ + res_size = 0; + if (old_res_ptr != NULL) + free (old_res_ptr); + break; + } + strcpy (res_ptr + res_size - (l2 + 1) - (l1 + 1), buf1); + strcpy (res_ptr + res_size - (l2 + 1), buf2); + } + fclose (fp); + if (res_size == 0) + cp = ""; + else + { + *(res_ptr + res_size) = '\0'; + cp = res_ptr; + } + } + + if (file_name != NULL) + free (file_name); + +#else + +# if defined VMS + /* To avoid the troubles of an extra file charset.alias_vms in the + sources of many GNU packages, simply inline the aliases here. */ + /* The list of encodings is taken from the OpenVMS 7.3-1 documentation + "Compaq C Run-Time Library Reference Manual for OpenVMS systems" + section 10.7 "Handling Different Character Sets". */ + cp = "ISO8859-1" "\0" "ISO-8859-1" "\0" + "ISO8859-2" "\0" "ISO-8859-2" "\0" + "ISO8859-5" "\0" "ISO-8859-5" "\0" + "ISO8859-7" "\0" "ISO-8859-7" "\0" + "ISO8859-8" "\0" "ISO-8859-8" "\0" + "ISO8859-9" "\0" "ISO-8859-9" "\0" + /* Japanese */ + "eucJP" "\0" "EUC-JP" "\0" + "SJIS" "\0" "SHIFT_JIS" "\0" + "DECKANJI" "\0" "DEC-KANJI" "\0" + "SDECKANJI" "\0" "EUC-JP" "\0" + /* Chinese */ + "eucTW" "\0" "EUC-TW" "\0" + "DECHANYU" "\0" "DEC-HANYU" "\0" + "DECHANZI" "\0" "GB2312" "\0" + /* Korean */ + "DECKOREAN" "\0" "EUC-KR" "\0"; +# endif + +# if defined WIN32_NATIVE || defined __CYGWIN__ + /* To avoid the troubles of installing a separate file in the same + directory as the DLL and of retrieving the DLL's directory at + runtime, simply inline the aliases here. */ + + cp = "CP936" "\0" "GBK" "\0" + "CP1361" "\0" "JOHAB" "\0" + "CP20127" "\0" "ASCII" "\0" + "CP20866" "\0" "KOI8-R" "\0" + "CP20936" "\0" "GB2312" "\0" + "CP21866" "\0" "KOI8-RU" "\0" + "CP28591" "\0" "ISO-8859-1" "\0" + "CP28592" "\0" "ISO-8859-2" "\0" + "CP28593" "\0" "ISO-8859-3" "\0" + "CP28594" "\0" "ISO-8859-4" "\0" + "CP28595" "\0" "ISO-8859-5" "\0" + "CP28596" "\0" "ISO-8859-6" "\0" + "CP28597" "\0" "ISO-8859-7" "\0" + "CP28598" "\0" "ISO-8859-8" "\0" + "CP28599" "\0" "ISO-8859-9" "\0" + "CP28605" "\0" "ISO-8859-15" "\0" + "CP38598" "\0" "ISO-8859-8" "\0" + "CP51932" "\0" "EUC-JP" "\0" + "CP51936" "\0" "GB2312" "\0" + "CP51949" "\0" "EUC-KR" "\0" + "CP51950" "\0" "EUC-TW" "\0" + "CP54936" "\0" "GB18030" "\0" + "CP65001" "\0" "UTF-8" "\0"; +# endif +#endif + + charset_aliases = cp; + } + + return cp; +} + +/* Determine the current locale's character encoding, and canonicalize it + into one of the canonical names listed in config.charset. + The result must not be freed; it is statically allocated. + If the canonical name cannot be determined, the result is a non-canonical + name. */ + +#ifdef STATIC +STATIC +#endif +const char * +locale_charset (void) +{ + const char *codeset; + const char *aliases; + +#if !(defined WIN32_NATIVE || defined OS2) + +# if HAVE_LANGINFO_CODESET + + /* Most systems support nl_langinfo (CODESET) nowadays. */ + codeset = nl_langinfo (CODESET); + +# ifdef __CYGWIN__ + /* Cygwin 2006 does not have locales. nl_langinfo (CODESET) always + returns "US-ASCII". As long as this is not fixed, return the suffix + of the locale name from the environment variables (if present) or + the codepage as a number. */ + if (codeset != NULL && strcmp (codeset, "US-ASCII") == 0) + { + const char *locale; + static char buf[2 + 10 + 1]; + + locale = getenv ("LC_ALL"); + if (locale == NULL || locale[0] == '\0') + { + locale = getenv ("LC_CTYPE"); + if (locale == NULL || locale[0] == '\0') + locale = getenv ("LANG"); + } + if (locale != NULL && locale[0] != '\0') + { + /* If the locale name contains an encoding after the dot, return + it. */ + const char *dot = strchr (locale, '.'); + + if (dot != NULL) + { + const char *modifier; + + dot++; + /* Look for the possible @... trailer and remove it, if any. */ + modifier = strchr (dot, '@'); + if (modifier == NULL) + return dot; + if (modifier - dot < sizeof (buf)) + { + memcpy (buf, dot, modifier - dot); + buf [modifier - dot] = '\0'; + return buf; + } + } + } + + /* Woe32 has a function returning the locale's codepage as a number. */ + sprintf (buf, "CP%u", GetACP ()); + codeset = buf; + } +# endif + +# else + + /* On old systems which lack it, use setlocale or getenv. */ + const char *locale = NULL; + + /* But most old systems don't have a complete set of locales. Some + (like SunOS 4 or DJGPP) have only the C locale. Therefore we don't + use setlocale here; it would return "C" when it doesn't support the + locale name the user has set. */ +# if 0 + locale = setlocale (LC_CTYPE, NULL); +# endif + if (locale == NULL || locale[0] == '\0') + { + locale = getenv ("LC_ALL"); + if (locale == NULL || locale[0] == '\0') + { + locale = getenv ("LC_CTYPE"); + if (locale == NULL || locale[0] == '\0') + locale = getenv ("LANG"); + } + } + + /* On some old systems, one used to set locale = "iso8859_1". On others, + you set it to "language_COUNTRY.charset". In any case, we resolve it + through the charset.alias file. */ + codeset = locale; + +# endif + +#elif defined WIN32_NATIVE + + static char buf[2 + 10 + 1]; + + /* Woe32 has a function returning the locale's codepage as a number. */ + sprintf (buf, "CP%u", GetACP ()); + codeset = buf; + +#elif defined OS2 + + const char *locale; + static char buf[2 + 10 + 1]; + ULONG cp[3]; + ULONG cplen; + + /* Allow user to override the codeset, as set in the operating system, + with standard language environment variables. */ + locale = getenv ("LC_ALL"); + if (locale == NULL || locale[0] == '\0') + { + locale = getenv ("LC_CTYPE"); + if (locale == NULL || locale[0] == '\0') + locale = getenv ("LANG"); + } + if (locale != NULL && locale[0] != '\0') + { + /* If the locale name contains an encoding after the dot, return it. */ + const char *dot = strchr (locale, '.'); + + if (dot != NULL) + { + const char *modifier; + + dot++; + /* Look for the possible @... trailer and remove it, if any. */ + modifier = strchr (dot, '@'); + if (modifier == NULL) + return dot; + if (modifier - dot < sizeof (buf)) + { + memcpy (buf, dot, modifier - dot); + buf [modifier - dot] = '\0'; + return buf; + } + } + + /* Resolve through the charset.alias file. */ + codeset = locale; + } + else + { + /* OS/2 has a function returning the locale's codepage as a number. */ + if (DosQueryCp (sizeof (cp), cp, &cplen)) + codeset = ""; + else + { + sprintf (buf, "CP%u", cp[0]); + codeset = buf; + } + } + +#endif + + if (codeset == NULL) + /* The canonical name cannot be determined. */ + codeset = ""; + + /* Resolve alias. */ + for (aliases = get_charset_aliases (); + *aliases != '\0'; + aliases += strlen (aliases) + 1, aliases += strlen (aliases) + 1) + if (strcmp (codeset, aliases) == 0 + || (aliases[0] == '*' && aliases[1] == '\0')) + { + codeset = aliases + strlen (aliases) + 1; + break; + } + + /* Don't return an empty string. GNU libc and GNU libiconv interpret + the empty string as denoting "the locale's character encoding", + thus GNU libiconv would call this function a second time. */ + if (codeset[0] == '\0') + codeset = "ASCII"; + + return codeset; +} diff --git a/xchat-2.8.8/intl/localcharset.h b/xchat-2.8.8/intl/localcharset.h new file mode 100644 index 0000000..129e4a4 --- /dev/null +++ b/xchat-2.8.8/intl/localcharset.h @@ -0,0 +1,42 @@ +/* Determine a canonical name for the current locale's character encoding. + Copyright (C) 2000-2003 Free Software Foundation, Inc. + This file is part of the GNU CHARSET Library. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _LOCALCHARSET_H +#define _LOCALCHARSET_H + + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Determine the current locale's character encoding, and canonicalize it + into one of the canonical names listed in config.charset. + The result must not be freed; it is statically allocated. + If the canonical name cannot be determined, the result is a non-canonical + name. */ +extern const char * locale_charset (void); + + +#ifdef __cplusplus +} +#endif + + +#endif /* _LOCALCHARSET_H */ diff --git a/xchat-2.8.8/intl/locale.alias b/xchat-2.8.8/intl/locale.alias new file mode 100644 index 0000000..1044a40 --- /dev/null +++ b/xchat-2.8.8/intl/locale.alias @@ -0,0 +1,77 @@ +# Locale name alias data base. +# Copyright (C) 1996-2001,2003,2007 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU Library General Public License as published +# by the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program 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 +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +# USA. + +# The format of this file is the same as for the corresponding file of +# the X Window System, which normally can be found in +# /usr/lib/X11/locale/locale.alias +# A single line contains two fields: an alias and a substitution value. +# All entries are case independent. + +# Note: This file is obsolete and is kept around for the time being for +# backward compatibility. Nobody should rely on the names defined here. +# Locales should always be specified by their full name. + +# Packages using this file: + +bokmal nb_NO.ISO-8859-1 +bokml nb_NO.ISO-8859-1 +catalan ca_ES.ISO-8859-1 +croatian hr_HR.ISO-8859-2 +czech cs_CZ.ISO-8859-2 +danish da_DK.ISO-8859-1 +dansk da_DK.ISO-8859-1 +deutsch de_DE.ISO-8859-1 +dutch nl_NL.ISO-8859-1 +eesti et_EE.ISO-8859-1 +estonian et_EE.ISO-8859-1 +finnish fi_FI.ISO-8859-1 +franais fr_FR.ISO-8859-1 +french fr_FR.ISO-8859-1 +galego gl_ES.ISO-8859-1 +galician gl_ES.ISO-8859-1 +german de_DE.ISO-8859-1 +greek el_GR.ISO-8859-7 +hebrew he_IL.ISO-8859-8 +hrvatski hr_HR.ISO-8859-2 +hungarian hu_HU.ISO-8859-2 +icelandic is_IS.ISO-8859-1 +italian it_IT.ISO-8859-1 +japanese ja_JP.eucJP +japanese.euc ja_JP.eucJP +ja_JP ja_JP.eucJP +ja_JP.ujis ja_JP.eucJP +japanese.sjis ja_JP.SJIS +korean ko_KR.eucKR +korean.euc ko_KR.eucKR +ko_KR ko_KR.eucKR +lithuanian lt_LT.ISO-8859-13 +no_NO nb_NO.ISO-8859-1 +no_NO.ISO-8859-1 nb_NO.ISO-8859-1 +norwegian nb_NO.ISO-8859-1 +nynorsk nn_NO.ISO-8859-1 +polish pl_PL.ISO-8859-2 +portuguese pt_PT.ISO-8859-1 +romanian ro_RO.ISO-8859-2 +russian ru_RU.ISO-8859-5 +slovak sk_SK.ISO-8859-2 +slovene sl_SI.ISO-8859-2 +slovenian sl_SI.ISO-8859-2 +spanish es_ES.ISO-8859-1 +swedish sv_SE.ISO-8859-1 +thai th_TH.TIS-620 +turkish tr_TR.ISO-8859-9 diff --git a/xchat-2.8.8/intl/localealias.c b/xchat-2.8.8/intl/localealias.c new file mode 100644 index 0000000..910db53 --- /dev/null +++ b/xchat-2.8.8/intl/localealias.c @@ -0,0 +1,439 @@ +/* Handle aliases for locale names. + Copyright (C) 1995-1999, 2000-2001, 2003, 2005-2006 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Tell glibc's to provide a prototype for mempcpy(). + This must come before because may include + , and once has been included, it's too late. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#if defined _LIBC || defined HAVE___FSETLOCKING +# include +#endif +#include + +#ifdef __GNUC__ +# undef alloca +# define alloca __builtin_alloca +# define HAVE_ALLOCA 1 +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# if defined HAVE_ALLOCA_H || defined _LIBC +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca +char *alloca (); +# endif +# endif +# endif +# endif +#endif + +#include +#include + +#include "gettextP.h" + +#if ENABLE_RELOCATABLE +# include "relocatable.h" +#else +# define relocate(pathname) (pathname) +#endif + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ANSI C functions. This is required by the standard + because some ANSI C functions will require linking with this object + file and the name space must not be polluted. */ +# define strcasecmp __strcasecmp + +# ifndef mempcpy +# define mempcpy __mempcpy +# endif +# define HAVE_MEMPCPY 1 +# define HAVE___FSETLOCKING 1 +#endif + +/* Handle multi-threaded applications. */ +#ifdef _LIBC +# include +#else +# include "lock.h" +#endif + +#ifndef internal_function +# define internal_function +#endif + +/* Some optimizations for glibc. */ +#ifdef _LIBC +# define FEOF(fp) feof_unlocked (fp) +# define FGETS(buf, n, fp) fgets_unlocked (buf, n, fp) +#else +# define FEOF(fp) feof (fp) +# define FGETS(buf, n, fp) fgets (buf, n, fp) +#endif + +/* For those losing systems which don't have `alloca' we have to add + some additional code emulating it. */ +#ifdef HAVE_ALLOCA +# define freea(p) /* nothing */ +#else +# define alloca(n) malloc (n) +# define freea(p) free (p) +#endif + +#if defined _LIBC_REENTRANT || HAVE_DECL_FGETS_UNLOCKED +# undef fgets +# define fgets(buf, len, s) fgets_unlocked (buf, len, s) +#endif +#if defined _LIBC_REENTRANT || HAVE_DECL_FEOF_UNLOCKED +# undef feof +# define feof(s) feof_unlocked (s) +#endif + + +__libc_lock_define_initialized (static, lock) + + +struct alias_map +{ + const char *alias; + const char *value; +}; + + +#ifndef _LIBC +# define libc_freeres_ptr(decl) decl +#endif + +libc_freeres_ptr (static char *string_space); +static size_t string_space_act; +static size_t string_space_max; +libc_freeres_ptr (static struct alias_map *map); +static size_t nmap; +static size_t maxmap; + + +/* Prototypes for local functions. */ +static size_t read_alias_file (const char *fname, int fname_len) + internal_function; +static int extend_alias_table (void); +static int alias_compare (const struct alias_map *map1, + const struct alias_map *map2); + + +const char * +_nl_expand_alias (const char *name) +{ + static const char *locale_alias_path; + struct alias_map *retval; + const char *result = NULL; + size_t added; + + __libc_lock_lock (lock); + + if (locale_alias_path == NULL) + locale_alias_path = LOCALE_ALIAS_PATH; + + do + { + struct alias_map item; + + item.alias = name; + + if (nmap > 0) + retval = (struct alias_map *) bsearch (&item, map, nmap, + sizeof (struct alias_map), + (int (*) (const void *, + const void *) + ) alias_compare); + else + retval = NULL; + + /* We really found an alias. Return the value. */ + if (retval != NULL) + { + result = retval->value; + break; + } + + /* Perhaps we can find another alias file. */ + added = 0; + while (added == 0 && locale_alias_path[0] != '\0') + { + const char *start; + + while (locale_alias_path[0] == PATH_SEPARATOR) + ++locale_alias_path; + start = locale_alias_path; + + while (locale_alias_path[0] != '\0' + && locale_alias_path[0] != PATH_SEPARATOR) + ++locale_alias_path; + + if (start < locale_alias_path) + added = read_alias_file (start, locale_alias_path - start); + } + } + while (added != 0); + + __libc_lock_unlock (lock); + + return result; +} + + +static size_t +internal_function +read_alias_file (const char *fname, int fname_len) +{ + FILE *fp; + char *full_fname; + size_t added; + static const char aliasfile[] = "/locale.alias"; + + full_fname = (char *) alloca (fname_len + sizeof aliasfile); +#ifdef HAVE_MEMPCPY + mempcpy (mempcpy (full_fname, fname, fname_len), + aliasfile, sizeof aliasfile); +#else + memcpy (full_fname, fname, fname_len); + memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile); +#endif + +#ifdef _LIBC + /* Note the file is opened with cancellation in the I/O functions + disabled. */ + fp = fopen (relocate (full_fname), "rc"); +#else + fp = fopen (relocate (full_fname), "r"); +#endif + freea (full_fname); + if (fp == NULL) + return 0; + +#ifdef HAVE___FSETLOCKING + /* No threads present. */ + __fsetlocking (fp, FSETLOCKING_BYCALLER); +#endif + + added = 0; + while (!FEOF (fp)) + { + /* It is a reasonable approach to use a fix buffer here because + a) we are only interested in the first two fields + b) these fields must be usable as file names and so must not + be that long + We avoid a multi-kilobyte buffer here since this would use up + stack space which we might not have if the program ran out of + memory. */ + char buf[400]; + char *alias; + char *value; + char *cp; + int complete_line; + + if (FGETS (buf, sizeof buf, fp) == NULL) + /* EOF reached. */ + break; + + /* Determine whether the line is complete. */ + complete_line = strchr (buf, '\n') != NULL; + + cp = buf; + /* Ignore leading white space. */ + while (isspace ((unsigned char) cp[0])) + ++cp; + + /* A leading '#' signals a comment line. */ + if (cp[0] != '\0' && cp[0] != '#') + { + alias = cp++; + while (cp[0] != '\0' && !isspace ((unsigned char) cp[0])) + ++cp; + /* Terminate alias name. */ + if (cp[0] != '\0') + *cp++ = '\0'; + + /* Now look for the beginning of the value. */ + while (isspace ((unsigned char) cp[0])) + ++cp; + + if (cp[0] != '\0') + { + value = cp++; + while (cp[0] != '\0' && !isspace ((unsigned char) cp[0])) + ++cp; + /* Terminate value. */ + if (cp[0] == '\n') + { + /* This has to be done to make the following test + for the end of line possible. We are looking for + the terminating '\n' which do not overwrite here. */ + *cp++ = '\0'; + *cp = '\n'; + } + else if (cp[0] != '\0') + *cp++ = '\0'; + +#ifdef IN_LIBGLOCALE + /* glibc's locale.alias contains entries for ja_JP and ko_KR + that make it impossible to use a Japanese or Korean UTF-8 + locale under the name "ja_JP" or "ko_KR". Ignore these + entries. */ + if (strchr (alias, '_') == NULL) +#endif + { + size_t alias_len; + size_t value_len; + + if (nmap >= maxmap) + if (__builtin_expect (extend_alias_table (), 0)) + goto out; + + alias_len = strlen (alias) + 1; + value_len = strlen (value) + 1; + + if (string_space_act + alias_len + value_len > string_space_max) + { + /* Increase size of memory pool. */ + size_t new_size = (string_space_max + + (alias_len + value_len > 1024 + ? alias_len + value_len : 1024)); + char *new_pool = (char *) realloc (string_space, new_size); + if (new_pool == NULL) + goto out; + + if (__builtin_expect (string_space != new_pool, 0)) + { + size_t i; + + for (i = 0; i < nmap; i++) + { + map[i].alias += new_pool - string_space; + map[i].value += new_pool - string_space; + } + } + + string_space = new_pool; + string_space_max = new_size; + } + + map[nmap].alias = + (const char *) memcpy (&string_space[string_space_act], + alias, alias_len); + string_space_act += alias_len; + + map[nmap].value = + (const char *) memcpy (&string_space[string_space_act], + value, value_len); + string_space_act += value_len; + + ++nmap; + ++added; + } + } + } + + /* Possibly not the whole line fits into the buffer. Ignore + the rest of the line. */ + if (! complete_line) + do + if (FGETS (buf, sizeof buf, fp) == NULL) + /* Make sure the inner loop will be left. The outer loop + will exit at the `feof' test. */ + break; + while (strchr (buf, '\n') == NULL); + } + + out: + /* Should we test for ferror()? I think we have to silently ignore + errors. --drepper */ + fclose (fp); + + if (added > 0) + qsort (map, nmap, sizeof (struct alias_map), + (int (*) (const void *, const void *)) alias_compare); + + return added; +} + + +static int +extend_alias_table () +{ + size_t new_size; + struct alias_map *new_map; + + new_size = maxmap == 0 ? 100 : 2 * maxmap; + new_map = (struct alias_map *) realloc (map, (new_size + * sizeof (struct alias_map))); + if (new_map == NULL) + /* Simply don't extend: we don't have any more core. */ + return -1; + + map = new_map; + maxmap = new_size; + return 0; +} + + +static int +alias_compare (const struct alias_map *map1, const struct alias_map *map2) +{ +#if defined _LIBC || defined HAVE_STRCASECMP + return strcasecmp (map1->alias, map2->alias); +#else + const unsigned char *p1 = (const unsigned char *) map1->alias; + const unsigned char *p2 = (const unsigned char *) map2->alias; + unsigned char c1, c2; + + if (p1 == p2) + return 0; + + do + { + /* I know this seems to be odd but the tolower() function in + some systems libc cannot handle nonalpha characters. */ + c1 = isupper (*p1) ? tolower (*p1) : *p1; + c2 = isupper (*p2) ? tolower (*p2) : *p2; + if (c1 == '\0') + break; + ++p1; + ++p2; + } + while (c1 == c2); + + return c1 - c2; +#endif +} diff --git a/xchat-2.8.8/intl/localename.c b/xchat-2.8.8/intl/localename.c new file mode 100644 index 0000000..af4c229 --- /dev/null +++ b/xchat-2.8.8/intl/localename.c @@ -0,0 +1,1507 @@ +/* Determine name of the currently selected locale. + Copyright (C) 1995-1999, 2000-2007 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Written by Ulrich Drepper , 1995. */ +/* Win32 code written by Tor Lillqvist . */ +/* MacOS X code written by Bruno Haible . */ + +#include + +/* Specification. */ +#ifdef IN_LIBINTL +# include "gettextP.h" +#else +# include "localename.h" +#endif + +#include +#include + +#if HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE +# include +# include +# if HAVE_CFLOCALECOPYCURRENT +# include +# elif HAVE_CFPREFERENCESCOPYAPPVALUE +# include +# endif +#endif + +#if defined _WIN32 || defined __WIN32__ +# define WIN32_NATIVE +#endif + +#ifdef WIN32_NATIVE +# define WIN32_LEAN_AND_MEAN +# include +/* List of language codes, sorted by value: + 0x01 LANG_ARABIC + 0x02 LANG_BULGARIAN + 0x03 LANG_CATALAN + 0x04 LANG_CHINESE + 0x05 LANG_CZECH + 0x06 LANG_DANISH + 0x07 LANG_GERMAN + 0x08 LANG_GREEK + 0x09 LANG_ENGLISH + 0x0a LANG_SPANISH + 0x0b LANG_FINNISH + 0x0c LANG_FRENCH + 0x0d LANG_HEBREW + 0x0e LANG_HUNGARIAN + 0x0f LANG_ICELANDIC + 0x10 LANG_ITALIAN + 0x11 LANG_JAPANESE + 0x12 LANG_KOREAN + 0x13 LANG_DUTCH + 0x14 LANG_NORWEGIAN + 0x15 LANG_POLISH + 0x16 LANG_PORTUGUESE + 0x17 LANG_RHAETO_ROMANCE + 0x18 LANG_ROMANIAN + 0x19 LANG_RUSSIAN + 0x1a LANG_CROATIAN == LANG_SERBIAN + 0x1b LANG_SLOVAK + 0x1c LANG_ALBANIAN + 0x1d LANG_SWEDISH + 0x1e LANG_THAI + 0x1f LANG_TURKISH + 0x20 LANG_URDU + 0x21 LANG_INDONESIAN + 0x22 LANG_UKRAINIAN + 0x23 LANG_BELARUSIAN + 0x24 LANG_SLOVENIAN + 0x25 LANG_ESTONIAN + 0x26 LANG_LATVIAN + 0x27 LANG_LITHUANIAN + 0x28 LANG_TAJIK + 0x29 LANG_FARSI + 0x2a LANG_VIETNAMESE + 0x2b LANG_ARMENIAN + 0x2c LANG_AZERI + 0x2d LANG_BASQUE + 0x2e LANG_SORBIAN + 0x2f LANG_MACEDONIAN + 0x30 LANG_SUTU + 0x31 LANG_TSONGA + 0x32 LANG_TSWANA + 0x33 LANG_VENDA + 0x34 LANG_XHOSA + 0x35 LANG_ZULU + 0x36 LANG_AFRIKAANS + 0x37 LANG_GEORGIAN + 0x38 LANG_FAEROESE + 0x39 LANG_HINDI + 0x3a LANG_MALTESE + 0x3b LANG_SAAMI + 0x3c LANG_GAELIC + 0x3d LANG_YIDDISH + 0x3e LANG_MALAY + 0x3f LANG_KAZAK + 0x40 LANG_KYRGYZ + 0x41 LANG_SWAHILI + 0x42 LANG_TURKMEN + 0x43 LANG_UZBEK + 0x44 LANG_TATAR + 0x45 LANG_BENGALI + 0x46 LANG_PUNJABI + 0x47 LANG_GUJARATI + 0x48 LANG_ORIYA + 0x49 LANG_TAMIL + 0x4a LANG_TELUGU + 0x4b LANG_KANNADA + 0x4c LANG_MALAYALAM + 0x4d LANG_ASSAMESE + 0x4e LANG_MARATHI + 0x4f LANG_SANSKRIT + 0x50 LANG_MONGOLIAN + 0x51 LANG_TIBETAN + 0x52 LANG_WELSH + 0x53 LANG_CAMBODIAN + 0x54 LANG_LAO + 0x55 LANG_BURMESE + 0x56 LANG_GALICIAN + 0x57 LANG_KONKANI + 0x58 LANG_MANIPURI + 0x59 LANG_SINDHI + 0x5a LANG_SYRIAC + 0x5b LANG_SINHALESE + 0x5c LANG_CHEROKEE + 0x5d LANG_INUKTITUT + 0x5e LANG_AMHARIC + 0x5f LANG_TAMAZIGHT + 0x60 LANG_KASHMIRI + 0x61 LANG_NEPALI + 0x62 LANG_FRISIAN + 0x63 LANG_PASHTO + 0x64 LANG_TAGALOG + 0x65 LANG_DIVEHI + 0x66 LANG_EDO + 0x67 LANG_FULFULDE + 0x68 LANG_HAUSA + 0x69 LANG_IBIBIO + 0x6a LANG_YORUBA + 0x70 LANG_IGBO + 0x71 LANG_KANURI + 0x72 LANG_OROMO + 0x73 LANG_TIGRINYA + 0x74 LANG_GUARANI + 0x75 LANG_HAWAIIAN + 0x76 LANG_LATIN + 0x77 LANG_SOMALI + 0x78 LANG_YI + 0x79 LANG_PAPIAMENTU +*/ +/* Mingw headers don't have latest language and sublanguage codes. */ +# ifndef LANG_AFRIKAANS +# define LANG_AFRIKAANS 0x36 +# endif +# ifndef LANG_ALBANIAN +# define LANG_ALBANIAN 0x1c +# endif +# ifndef LANG_AMHARIC +# define LANG_AMHARIC 0x5e +# endif +# ifndef LANG_ARABIC +# define LANG_ARABIC 0x01 +# endif +# ifndef LANG_ARMENIAN +# define LANG_ARMENIAN 0x2b +# endif +# ifndef LANG_ASSAMESE +# define LANG_ASSAMESE 0x4d +# endif +# ifndef LANG_AZERI +# define LANG_AZERI 0x2c +# endif +# ifndef LANG_BASQUE +# define LANG_BASQUE 0x2d +# endif +# ifndef LANG_BELARUSIAN +# define LANG_BELARUSIAN 0x23 +# endif +# ifndef LANG_BENGALI +# define LANG_BENGALI 0x45 +# endif +# ifndef LANG_BURMESE +# define LANG_BURMESE 0x55 +# endif +# ifndef LANG_CAMBODIAN +# define LANG_CAMBODIAN 0x53 +# endif +# ifndef LANG_CATALAN +# define LANG_CATALAN 0x03 +# endif +# ifndef LANG_CHEROKEE +# define LANG_CHEROKEE 0x5c +# endif +# ifndef LANG_DIVEHI +# define LANG_DIVEHI 0x65 +# endif +# ifndef LANG_EDO +# define LANG_EDO 0x66 +# endif +# ifndef LANG_ESTONIAN +# define LANG_ESTONIAN 0x25 +# endif +# ifndef LANG_FAEROESE +# define LANG_FAEROESE 0x38 +# endif +# ifndef LANG_FARSI +# define LANG_FARSI 0x29 +# endif +# ifndef LANG_FRISIAN +# define LANG_FRISIAN 0x62 +# endif +# ifndef LANG_FULFULDE +# define LANG_FULFULDE 0x67 +# endif +# ifndef LANG_GAELIC +# define LANG_GAELIC 0x3c +# endif +# ifndef LANG_GALICIAN +# define LANG_GALICIAN 0x56 +# endif +# ifndef LANG_GEORGIAN +# define LANG_GEORGIAN 0x37 +# endif +# ifndef LANG_GUARANI +# define LANG_GUARANI 0x74 +# endif +# ifndef LANG_GUJARATI +# define LANG_GUJARATI 0x47 +# endif +# ifndef LANG_HAUSA +# define LANG_HAUSA 0x68 +# endif +# ifndef LANG_HAWAIIAN +# define LANG_HAWAIIAN 0x75 +# endif +# ifndef LANG_HEBREW +# define LANG_HEBREW 0x0d +# endif +# ifndef LANG_HINDI +# define LANG_HINDI 0x39 +# endif +# ifndef LANG_IBIBIO +# define LANG_IBIBIO 0x69 +# endif +# ifndef LANG_IGBO +# define LANG_IGBO 0x70 +# endif +# ifndef LANG_INDONESIAN +# define LANG_INDONESIAN 0x21 +# endif +# ifndef LANG_INUKTITUT +# define LANG_INUKTITUT 0x5d +# endif +# ifndef LANG_KANNADA +# define LANG_KANNADA 0x4b +# endif +# ifndef LANG_KANURI +# define LANG_KANURI 0x71 +# endif +# ifndef LANG_KASHMIRI +# define LANG_KASHMIRI 0x60 +# endif +# ifndef LANG_KAZAK +# define LANG_KAZAK 0x3f +# endif +# ifndef LANG_KONKANI +# define LANG_KONKANI 0x57 +# endif +# ifndef LANG_KYRGYZ +# define LANG_KYRGYZ 0x40 +# endif +# ifndef LANG_LAO +# define LANG_LAO 0x54 +# endif +# ifndef LANG_LATIN +# define LANG_LATIN 0x76 +# endif +# ifndef LANG_LATVIAN +# define LANG_LATVIAN 0x26 +# endif +# ifndef LANG_LITHUANIAN +# define LANG_LITHUANIAN 0x27 +# endif +# ifndef LANG_MACEDONIAN +# define LANG_MACEDONIAN 0x2f +# endif +# ifndef LANG_MALAY +# define LANG_MALAY 0x3e +# endif +# ifndef LANG_MALAYALAM +# define LANG_MALAYALAM 0x4c +# endif +# ifndef LANG_MALTESE +# define LANG_MALTESE 0x3a +# endif +# ifndef LANG_MANIPURI +# define LANG_MANIPURI 0x58 +# endif +# ifndef LANG_MARATHI +# define LANG_MARATHI 0x4e +# endif +# ifndef LANG_MONGOLIAN +# define LANG_MONGOLIAN 0x50 +# endif +# ifndef LANG_NEPALI +# define LANG_NEPALI 0x61 +# endif +# ifndef LANG_ORIYA +# define LANG_ORIYA 0x48 +# endif +# ifndef LANG_OROMO +# define LANG_OROMO 0x72 +# endif +# ifndef LANG_PAPIAMENTU +# define LANG_PAPIAMENTU 0x79 +# endif +# ifndef LANG_PASHTO +# define LANG_PASHTO 0x63 +# endif +# ifndef LANG_PUNJABI +# define LANG_PUNJABI 0x46 +# endif +# ifndef LANG_RHAETO_ROMANCE +# define LANG_RHAETO_ROMANCE 0x17 +# endif +# ifndef LANG_SAAMI +# define LANG_SAAMI 0x3b +# endif +# ifndef LANG_SANSKRIT +# define LANG_SANSKRIT 0x4f +# endif +# ifndef LANG_SERBIAN +# define LANG_SERBIAN 0x1a +# endif +# ifndef LANG_SINDHI +# define LANG_SINDHI 0x59 +# endif +# ifndef LANG_SINHALESE +# define LANG_SINHALESE 0x5b +# endif +# ifndef LANG_SLOVAK +# define LANG_SLOVAK 0x1b +# endif +# ifndef LANG_SOMALI +# define LANG_SOMALI 0x77 +# endif +# ifndef LANG_SORBIAN +# define LANG_SORBIAN 0x2e +# endif +# ifndef LANG_SUTU +# define LANG_SUTU 0x30 +# endif +# ifndef LANG_SWAHILI +# define LANG_SWAHILI 0x41 +# endif +# ifndef LANG_SYRIAC +# define LANG_SYRIAC 0x5a +# endif +# ifndef LANG_TAGALOG +# define LANG_TAGALOG 0x64 +# endif +# ifndef LANG_TAJIK +# define LANG_TAJIK 0x28 +# endif +# ifndef LANG_TAMAZIGHT +# define LANG_TAMAZIGHT 0x5f +# endif +# ifndef LANG_TAMIL +# define LANG_TAMIL 0x49 +# endif +# ifndef LANG_TATAR +# define LANG_TATAR 0x44 +# endif +# ifndef LANG_TELUGU +# define LANG_TELUGU 0x4a +# endif +# ifndef LANG_THAI +# define LANG_THAI 0x1e +# endif +# ifndef LANG_TIBETAN +# define LANG_TIBETAN 0x51 +# endif +# ifndef LANG_TIGRINYA +# define LANG_TIGRINYA 0x73 +# endif +# ifndef LANG_TSONGA +# define LANG_TSONGA 0x31 +# endif +# ifndef LANG_TSWANA +# define LANG_TSWANA 0x32 +# endif +# ifndef LANG_TURKMEN +# define LANG_TURKMEN 0x42 +# endif +# ifndef LANG_UKRAINIAN +# define LANG_UKRAINIAN 0x22 +# endif +# ifndef LANG_URDU +# define LANG_URDU 0x20 +# endif +# ifndef LANG_UZBEK +# define LANG_UZBEK 0x43 +# endif +# ifndef LANG_VENDA +# define LANG_VENDA 0x33 +# endif +# ifndef LANG_VIETNAMESE +# define LANG_VIETNAMESE 0x2a +# endif +# ifndef LANG_WELSH +# define LANG_WELSH 0x52 +# endif +# ifndef LANG_XHOSA +# define LANG_XHOSA 0x34 +# endif +# ifndef LANG_YI +# define LANG_YI 0x78 +# endif +# ifndef LANG_YIDDISH +# define LANG_YIDDISH 0x3d +# endif +# ifndef LANG_YORUBA +# define LANG_YORUBA 0x6a +# endif +# ifndef LANG_ZULU +# define LANG_ZULU 0x35 +# endif +# ifndef SUBLANG_ARABIC_SAUDI_ARABIA +# define SUBLANG_ARABIC_SAUDI_ARABIA 0x01 +# endif +# ifndef SUBLANG_ARABIC_IRAQ +# define SUBLANG_ARABIC_IRAQ 0x02 +# endif +# ifndef SUBLANG_ARABIC_EGYPT +# define SUBLANG_ARABIC_EGYPT 0x03 +# endif +# ifndef SUBLANG_ARABIC_LIBYA +# define SUBLANG_ARABIC_LIBYA 0x04 +# endif +# ifndef SUBLANG_ARABIC_ALGERIA +# define SUBLANG_ARABIC_ALGERIA 0x05 +# endif +# ifndef SUBLANG_ARABIC_MOROCCO +# define SUBLANG_ARABIC_MOROCCO 0x06 +# endif +# ifndef SUBLANG_ARABIC_TUNISIA +# define SUBLANG_ARABIC_TUNISIA 0x07 +# endif +# ifndef SUBLANG_ARABIC_OMAN +# define SUBLANG_ARABIC_OMAN 0x08 +# endif +# ifndef SUBLANG_ARABIC_YEMEN +# define SUBLANG_ARABIC_YEMEN 0x09 +# endif +# ifndef SUBLANG_ARABIC_SYRIA +# define SUBLANG_ARABIC_SYRIA 0x0a +# endif +# ifndef SUBLANG_ARABIC_JORDAN +# define SUBLANG_ARABIC_JORDAN 0x0b +# endif +# ifndef SUBLANG_ARABIC_LEBANON +# define SUBLANG_ARABIC_LEBANON 0x0c +# endif +# ifndef SUBLANG_ARABIC_KUWAIT +# define SUBLANG_ARABIC_KUWAIT 0x0d +# endif +# ifndef SUBLANG_ARABIC_UAE +# define SUBLANG_ARABIC_UAE 0x0e +# endif +# ifndef SUBLANG_ARABIC_BAHRAIN +# define SUBLANG_ARABIC_BAHRAIN 0x0f +# endif +# ifndef SUBLANG_ARABIC_QATAR +# define SUBLANG_ARABIC_QATAR 0x10 +# endif +# ifndef SUBLANG_AZERI_LATIN +# define SUBLANG_AZERI_LATIN 0x01 +# endif +# ifndef SUBLANG_AZERI_CYRILLIC +# define SUBLANG_AZERI_CYRILLIC 0x02 +# endif +# ifndef SUBLANG_BENGALI_INDIA +# define SUBLANG_BENGALI_INDIA 0x01 +# endif +# ifndef SUBLANG_BENGALI_BANGLADESH +# define SUBLANG_BENGALI_BANGLADESH 0x02 +# endif +# ifndef SUBLANG_CHINESE_MACAU +# define SUBLANG_CHINESE_MACAU 0x05 +# endif +# ifndef SUBLANG_ENGLISH_SOUTH_AFRICA +# define SUBLANG_ENGLISH_SOUTH_AFRICA 0x07 +# endif +# ifndef SUBLANG_ENGLISH_JAMAICA +# define SUBLANG_ENGLISH_JAMAICA 0x08 +# endif +# ifndef SUBLANG_ENGLISH_CARIBBEAN +# define SUBLANG_ENGLISH_CARIBBEAN 0x09 +# endif +# ifndef SUBLANG_ENGLISH_BELIZE +# define SUBLANG_ENGLISH_BELIZE 0x0a +# endif +# ifndef SUBLANG_ENGLISH_TRINIDAD +# define SUBLANG_ENGLISH_TRINIDAD 0x0b +# endif +# ifndef SUBLANG_ENGLISH_ZIMBABWE +# define SUBLANG_ENGLISH_ZIMBABWE 0x0c +# endif +# ifndef SUBLANG_ENGLISH_PHILIPPINES +# define SUBLANG_ENGLISH_PHILIPPINES 0x0d +# endif +# ifndef SUBLANG_ENGLISH_INDONESIA +# define SUBLANG_ENGLISH_INDONESIA 0x0e +# endif +# ifndef SUBLANG_ENGLISH_HONGKONG +# define SUBLANG_ENGLISH_HONGKONG 0x0f +# endif +# ifndef SUBLANG_ENGLISH_INDIA +# define SUBLANG_ENGLISH_INDIA 0x10 +# endif +# ifndef SUBLANG_ENGLISH_MALAYSIA +# define SUBLANG_ENGLISH_MALAYSIA 0x11 +# endif +# ifndef SUBLANG_ENGLISH_SINGAPORE +# define SUBLANG_ENGLISH_SINGAPORE 0x12 +# endif +# ifndef SUBLANG_FRENCH_LUXEMBOURG +# define SUBLANG_FRENCH_LUXEMBOURG 0x05 +# endif +# ifndef SUBLANG_FRENCH_MONACO +# define SUBLANG_FRENCH_MONACO 0x06 +# endif +# ifndef SUBLANG_FRENCH_WESTINDIES +# define SUBLANG_FRENCH_WESTINDIES 0x07 +# endif +# ifndef SUBLANG_FRENCH_REUNION +# define SUBLANG_FRENCH_REUNION 0x08 +# endif +# ifndef SUBLANG_FRENCH_CONGO +# define SUBLANG_FRENCH_CONGO 0x09 +# endif +# ifndef SUBLANG_FRENCH_SENEGAL +# define SUBLANG_FRENCH_SENEGAL 0x0a +# endif +# ifndef SUBLANG_FRENCH_CAMEROON +# define SUBLANG_FRENCH_CAMEROON 0x0b +# endif +# ifndef SUBLANG_FRENCH_COTEDIVOIRE +# define SUBLANG_FRENCH_COTEDIVOIRE 0x0c +# endif +# ifndef SUBLANG_FRENCH_MALI +# define SUBLANG_FRENCH_MALI 0x0d +# endif +# ifndef SUBLANG_FRENCH_MOROCCO +# define SUBLANG_FRENCH_MOROCCO 0x0e +# endif +# ifndef SUBLANG_FRENCH_HAITI +# define SUBLANG_FRENCH_HAITI 0x0f +# endif +# ifndef SUBLANG_GERMAN_LUXEMBOURG +# define SUBLANG_GERMAN_LUXEMBOURG 0x04 +# endif +# ifndef SUBLANG_GERMAN_LIECHTENSTEIN +# define SUBLANG_GERMAN_LIECHTENSTEIN 0x05 +# endif +# ifndef SUBLANG_KASHMIRI_INDIA +# define SUBLANG_KASHMIRI_INDIA 0x02 +# endif +# ifndef SUBLANG_MALAY_MALAYSIA +# define SUBLANG_MALAY_MALAYSIA 0x01 +# endif +# ifndef SUBLANG_MALAY_BRUNEI_DARUSSALAM +# define SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02 +# endif +# ifndef SUBLANG_NEPALI_INDIA +# define SUBLANG_NEPALI_INDIA 0x02 +# endif +# ifndef SUBLANG_PUNJABI_INDIA +# define SUBLANG_PUNJABI_INDIA 0x01 +# endif +# ifndef SUBLANG_PUNJABI_PAKISTAN +# define SUBLANG_PUNJABI_PAKISTAN 0x02 +# endif +# ifndef SUBLANG_ROMANIAN_ROMANIA +# define SUBLANG_ROMANIAN_ROMANIA 0x01 +# endif +# ifndef SUBLANG_ROMANIAN_MOLDOVA +# define SUBLANG_ROMANIAN_MOLDOVA 0x02 +# endif +# ifndef SUBLANG_SERBIAN_LATIN +# define SUBLANG_SERBIAN_LATIN 0x02 +# endif +# ifndef SUBLANG_SERBIAN_CYRILLIC +# define SUBLANG_SERBIAN_CYRILLIC 0x03 +# endif +# ifndef SUBLANG_SINDHI_PAKISTAN +# define SUBLANG_SINDHI_PAKISTAN 0x01 +# endif +# ifndef SUBLANG_SINDHI_AFGHANISTAN +# define SUBLANG_SINDHI_AFGHANISTAN 0x02 +# endif +# ifndef SUBLANG_SPANISH_GUATEMALA +# define SUBLANG_SPANISH_GUATEMALA 0x04 +# endif +# ifndef SUBLANG_SPANISH_COSTA_RICA +# define SUBLANG_SPANISH_COSTA_RICA 0x05 +# endif +# ifndef SUBLANG_SPANISH_PANAMA +# define SUBLANG_SPANISH_PANAMA 0x06 +# endif +# ifndef SUBLANG_SPANISH_DOMINICAN_REPUBLIC +# define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07 +# endif +# ifndef SUBLANG_SPANISH_VENEZUELA +# define SUBLANG_SPANISH_VENEZUELA 0x08 +# endif +# ifndef SUBLANG_SPANISH_COLOMBIA +# define SUBLANG_SPANISH_COLOMBIA 0x09 +# endif +# ifndef SUBLANG_SPANISH_PERU +# define SUBLANG_SPANISH_PERU 0x0a +# endif +# ifndef SUBLANG_SPANISH_ARGENTINA +# define SUBLANG_SPANISH_ARGENTINA 0x0b +# endif +# ifndef SUBLANG_SPANISH_ECUADOR +# define SUBLANG_SPANISH_ECUADOR 0x0c +# endif +# ifndef SUBLANG_SPANISH_CHILE +# define SUBLANG_SPANISH_CHILE 0x0d +# endif +# ifndef SUBLANG_SPANISH_URUGUAY +# define SUBLANG_SPANISH_URUGUAY 0x0e +# endif +# ifndef SUBLANG_SPANISH_PARAGUAY +# define SUBLANG_SPANISH_PARAGUAY 0x0f +# endif +# ifndef SUBLANG_SPANISH_BOLIVIA +# define SUBLANG_SPANISH_BOLIVIA 0x10 +# endif +# ifndef SUBLANG_SPANISH_EL_SALVADOR +# define SUBLANG_SPANISH_EL_SALVADOR 0x11 +# endif +# ifndef SUBLANG_SPANISH_HONDURAS +# define SUBLANG_SPANISH_HONDURAS 0x12 +# endif +# ifndef SUBLANG_SPANISH_NICARAGUA +# define SUBLANG_SPANISH_NICARAGUA 0x13 +# endif +# ifndef SUBLANG_SPANISH_PUERTO_RICO +# define SUBLANG_SPANISH_PUERTO_RICO 0x14 +# endif +# ifndef SUBLANG_SWEDISH_FINLAND +# define SUBLANG_SWEDISH_FINLAND 0x02 +# endif +# ifndef SUBLANG_TAMAZIGHT_ARABIC +# define SUBLANG_TAMAZIGHT_ARABIC 0x01 +# endif +# ifndef SUBLANG_TAMAZIGHT_ALGERIA_LATIN +# define SUBLANG_TAMAZIGHT_ALGERIA_LATIN 0x02 +# endif +# ifndef SUBLANG_TIGRINYA_ETHIOPIA +# define SUBLANG_TIGRINYA_ETHIOPIA 0x01 +# endif +# ifndef SUBLANG_TIGRINYA_ERITREA +# define SUBLANG_TIGRINYA_ERITREA 0x02 +# endif +# ifndef SUBLANG_URDU_PAKISTAN +# define SUBLANG_URDU_PAKISTAN 0x01 +# endif +# ifndef SUBLANG_URDU_INDIA +# define SUBLANG_URDU_INDIA 0x02 +# endif +# ifndef SUBLANG_UZBEK_LATIN +# define SUBLANG_UZBEK_LATIN 0x01 +# endif +# ifndef SUBLANG_UZBEK_CYRILLIC +# define SUBLANG_UZBEK_CYRILLIC 0x02 +# endif +#endif + +# if HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE +/* MacOS X 10.2 or newer */ + +/* Canonicalize a MacOS X locale name to a Unix locale name. + NAME is a sufficiently large buffer. + On input, it contains the MacOS X locale name. + On output, it contains the Unix locale name. */ +# if !defined IN_LIBINTL +static +# endif +void +gl_locale_name_canonicalize (char *name) +{ + /* This conversion is based on a posting by + Deborah GoldSmith on 2005-03-08, + http://lists.apple.com/archives/carbon-dev/2005/Mar/msg00293.html */ + + /* Convert legacy (NeXTstep inherited) English names to Unix (ISO 639 and + ISO 3166) names. Prior to MacOS X 10.3, there is no API for doing this. + Therefore we do it ourselves, using a table based on the results of the + MacOS X 10.3.8 function + CFLocaleCreateCanonicalLocaleIdentifierFromString(). */ + typedef struct { const char legacy[21+1]; const char unixy[5+1]; } + legacy_entry; + static const legacy_entry legacy_table[] = { + { "Afrikaans", "af" }, + { "Albanian", "sq" }, + { "Amharic", "am" }, + { "Arabic", "ar" }, + { "Armenian", "hy" }, + { "Assamese", "as" }, + { "Aymara", "ay" }, + { "Azerbaijani", "az" }, + { "Basque", "eu" }, + { "Belarusian", "be" }, + { "Belorussian", "be" }, + { "Bengali", "bn" }, + { "Brazilian Portugese", "pt_BR" }, + { "Brazilian Portuguese", "pt_BR" }, + { "Breton", "br" }, + { "Bulgarian", "bg" }, + { "Burmese", "my" }, + { "Byelorussian", "be" }, + { "Catalan", "ca" }, + { "Chewa", "ny" }, + { "Chichewa", "ny" }, + { "Chinese", "zh" }, + { "Chinese, Simplified", "zh_CN" }, + { "Chinese, Traditional", "zh_TW" }, + { "Chinese, Tradtional", "zh_TW" }, + { "Croatian", "hr" }, + { "Czech", "cs" }, + { "Danish", "da" }, + { "Dutch", "nl" }, + { "Dzongkha", "dz" }, + { "English", "en" }, + { "Esperanto", "eo" }, + { "Estonian", "et" }, + { "Faroese", "fo" }, + { "Farsi", "fa" }, + { "Finnish", "fi" }, + { "Flemish", "nl_BE" }, + { "French", "fr" }, + { "Galician", "gl" }, + { "Gallegan", "gl" }, + { "Georgian", "ka" }, + { "German", "de" }, + { "Greek", "el" }, + { "Greenlandic", "kl" }, + { "Guarani", "gn" }, + { "Gujarati", "gu" }, + { "Hawaiian", "haw" }, /* Yes, "haw", not "cpe". */ + { "Hebrew", "he" }, + { "Hindi", "hi" }, + { "Hungarian", "hu" }, + { "Icelandic", "is" }, + { "Indonesian", "id" }, + { "Inuktitut", "iu" }, + { "Irish", "ga" }, + { "Italian", "it" }, + { "Japanese", "ja" }, + { "Javanese", "jv" }, + { "Kalaallisut", "kl" }, + { "Kannada", "kn" }, + { "Kashmiri", "ks" }, + { "Kazakh", "kk" }, + { "Khmer", "km" }, + { "Kinyarwanda", "rw" }, + { "Kirghiz", "ky" }, + { "Korean", "ko" }, + { "Kurdish", "ku" }, + { "Latin", "la" }, + { "Latvian", "lv" }, + { "Lithuanian", "lt" }, + { "Macedonian", "mk" }, + { "Malagasy", "mg" }, + { "Malay", "ms" }, + { "Malayalam", "ml" }, + { "Maltese", "mt" }, + { "Manx", "gv" }, + { "Marathi", "mr" }, + { "Moldavian", "mo" }, + { "Mongolian", "mn" }, + { "Nepali", "ne" }, + { "Norwegian", "nb" }, /* Yes, "nb", not the obsolete "no". */ + { "Nyanja", "ny" }, + { "Nynorsk", "nn" }, + { "Oriya", "or" }, + { "Oromo", "om" }, + { "Panjabi", "pa" }, + { "Pashto", "ps" }, + { "Persian", "fa" }, + { "Polish", "pl" }, + { "Portuguese", "pt" }, + { "Portuguese, Brazilian", "pt_BR" }, + { "Punjabi", "pa" }, + { "Pushto", "ps" }, + { "Quechua", "qu" }, + { "Romanian", "ro" }, + { "Ruanda", "rw" }, + { "Rundi", "rn" }, + { "Russian", "ru" }, + { "Sami", "se_NO" }, /* Not just "se". */ + { "Sanskrit", "sa" }, + { "Scottish", "gd" }, + { "Serbian", "sr" }, + { "Simplified Chinese", "zh_CN" }, + { "Sindhi", "sd" }, + { "Sinhalese", "si" }, + { "Slovak", "sk" }, + { "Slovenian", "sl" }, + { "Somali", "so" }, + { "Spanish", "es" }, + { "Sundanese", "su" }, + { "Swahili", "sw" }, + { "Swedish", "sv" }, + { "Tagalog", "tl" }, + { "Tajik", "tg" }, + { "Tajiki", "tg" }, + { "Tamil", "ta" }, + { "Tatar", "tt" }, + { "Telugu", "te" }, + { "Thai", "th" }, + { "Tibetan", "bo" }, + { "Tigrinya", "ti" }, + { "Tongan", "to" }, + { "Traditional Chinese", "zh_TW" }, + { "Turkish", "tr" }, + { "Turkmen", "tk" }, + { "Uighur", "ug" }, + { "Ukrainian", "uk" }, + { "Urdu", "ur" }, + { "Uzbek", "uz" }, + { "Vietnamese", "vi" }, + { "Welsh", "cy" }, + { "Yiddish", "yi" } + }; + + /* Convert new-style locale names with language tags (ISO 639 and ISO 15924) + to Unix (ISO 639 and ISO 3166) names. */ + typedef struct { const char langtag[7+1]; const char unixy[12+1]; } + langtag_entry; + static const langtag_entry langtag_table[] = { + /* MacOS X has "az-Arab", "az-Cyrl", "az-Latn". + The default script for az on Unix is Latin. */ + { "az-Latn", "az" }, + /* MacOS X has "ga-dots". Does not yet exist on Unix. */ + { "ga-dots", "ga" }, + /* MacOS X has "kk-Cyrl". Does not yet exist on Unix. */ + /* MacOS X has "mn-Cyrl", "mn-Mong". + The default script for mn on Unix is Cyrillic. */ + { "mn-Cyrl", "mn" }, + /* MacOS X has "ms-Arab", "ms-Latn". + The default script for ms on Unix is Latin. */ + { "ms-Latn", "ms" }, + /* MacOS X has "tg-Cyrl". + The default script for tg on Unix is Cyrillic. */ + { "tg-Cyrl", "tg" }, + /* MacOS X has "tk-Cyrl". Does not yet exist on Unix. */ + /* MacOS X has "tt-Cyrl". + The default script for tt on Unix is Cyrillic. */ + { "tt-Cyrl", "tt" }, + /* MacOS X has "zh-Hans", "zh-Hant". + Country codes are used to distinguish these on Unix. */ + { "zh-Hans", "zh_CN" }, + { "zh-Hant", "zh_TW" } + }; + + /* Convert script names (ISO 15924) to Unix conventions. + See http://www.unicode.org/iso15924/iso15924-codes.html */ + typedef struct { const char script[4+1]; const char unixy[9+1]; } + script_entry; + static const script_entry script_table[] = { + { "Arab", "arabic" }, + { "Cyrl", "cyrillic" }, + { "Mong", "mongolian" } + }; + + /* Step 1: Convert using legacy_table. */ + if (name[0] >= 'A' && name[0] <= 'Z') + { + unsigned int i1, i2; + i1 = 0; + i2 = sizeof (legacy_table) / sizeof (legacy_entry); + while (i2 - i1 > 1) + { + /* At this point we know that if name occurs in legacy_table, + its index must be >= i1 and < i2. */ + unsigned int i = (i1 + i2) >> 1; + const legacy_entry *p = &legacy_table[i]; + if (strcmp (name, p->legacy) < 0) + i2 = i; + else + i1 = i; + } + if (strcmp (name, legacy_table[i1].legacy) == 0) + { + strcpy (name, legacy_table[i1].unixy); + return; + } + } + + /* Step 2: Convert using langtag_table and script_table. */ + if (strlen (name) == 7 && name[2] == '-') + { + unsigned int i1, i2; + i1 = 0; + i2 = sizeof (langtag_table) / sizeof (langtag_entry); + while (i2 - i1 > 1) + { + /* At this point we know that if name occurs in langtag_table, + its index must be >= i1 and < i2. */ + unsigned int i = (i1 + i2) >> 1; + const langtag_entry *p = &langtag_table[i]; + if (strcmp (name, p->langtag) < 0) + i2 = i; + else + i1 = i; + } + if (strcmp (name, langtag_table[i1].langtag) == 0) + { + strcpy (name, langtag_table[i1].unixy); + return; + } + + i1 = 0; + i2 = sizeof (script_table) / sizeof (script_entry); + while (i2 - i1 > 1) + { + /* At this point we know that if (name + 3) occurs in script_table, + its index must be >= i1 and < i2. */ + unsigned int i = (i1 + i2) >> 1; + const script_entry *p = &script_table[i]; + if (strcmp (name + 3, p->script) < 0) + i2 = i; + else + i1 = i; + } + if (strcmp (name + 3, script_table[i1].script) == 0) + { + name[2] = '@'; + strcpy (name + 3, script_table[i1].unixy); + return; + } + } + + /* Step 3: Convert new-style dash to Unix underscore. */ + { + char *p; + for (p = name; *p != '\0'; p++) + if (*p == '-') + *p = '_'; + } +} + +#endif + +/* XPG3 defines the result of 'setlocale (category, NULL)' as: + "Directs 'setlocale()' to query 'category' and return the current + setting of 'local'." + However it does not specify the exact format. Neither do SUSV2 and + ISO C 99. So we can use this feature only on selected systems (e.g. + those using GNU C Library). */ +#if defined _LIBC || (defined __GLIBC__ && __GLIBC__ >= 2) +# define HAVE_LOCALE_NULL +#endif + +/* Determine the current locale's name, and canonicalize it into XPG syntax + language[_territory][.codeset][@modifier] + The codeset part in the result is not reliable; the locale_charset() + should be used for codeset information instead. + The result must not be freed; it is statically allocated. */ + +const char * +gl_locale_name_posix (int category, const char *categoryname) +{ + /* Use the POSIX methods of looking to 'LC_ALL', 'LC_xxx', and 'LANG'. + On some systems this can be done by the 'setlocale' function itself. */ +#if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL + return setlocale (category, NULL); +#else + const char *retval; + + /* Setting of LC_ALL overrides all other. */ + retval = getenv ("LC_ALL"); + if (retval != NULL && retval[0] != '\0') + return retval; + /* Next comes the name of the desired category. */ + retval = getenv (categoryname); + if (retval != NULL && retval[0] != '\0') + return retval; + /* Last possibility is the LANG environment variable. */ + retval = getenv ("LANG"); + if (retval != NULL && retval[0] != '\0') + return retval; + + return NULL; +#endif +} + +const char * +gl_locale_name_default (void) +{ + /* POSIX:2001 says: + "All implementations shall define a locale as the default locale, to be + invoked when no environment variables are set, or set to the empty + string. This default locale can be the POSIX locale or any other + implementation-defined locale. Some implementations may provide + facilities for local installation administrators to set the default + locale, customizing it for each location. POSIX:2001 does not require + such a facility. */ + +#if !(HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE || defined(WIN32_NATIVE)) + + /* The system does not have a way of setting the locale, other than the + POSIX specified environment variables. We use C as default locale. */ + return "C"; + +#else + + /* Return an XPG style locale name language[_territory][@modifier]. + Don't even bother determining the codeset; it's not useful in this + context, because message catalogs are not specific to a single + codeset. */ + +# if HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE + /* MacOS X 10.2 or newer */ + { + /* Cache the locale name, since CoreFoundation calls are expensive. */ + static const char *cached_localename; + + if (cached_localename == NULL) + { + char namebuf[256]; +# if HAVE_CFLOCALECOPYCURRENT /* MacOS X 10.3 or newer */ + CFLocaleRef locale = CFLocaleCopyCurrent (); + CFStringRef name = CFLocaleGetIdentifier (locale); + + if (CFStringGetCString (name, namebuf, sizeof(namebuf), + kCFStringEncodingASCII)) + { + gl_locale_name_canonicalize (namebuf); + cached_localename = strdup (namebuf); + } + CFRelease (locale); +# elif HAVE_CFPREFERENCESCOPYAPPVALUE /* MacOS X 10.2 or newer */ + CFTypeRef value = + CFPreferencesCopyAppValue (CFSTR ("AppleLocale"), + kCFPreferencesCurrentApplication); + if (value != NULL + && CFGetTypeID (value) == CFStringGetTypeID () + && CFStringGetCString ((CFStringRef)value, namebuf, sizeof(namebuf), + kCFStringEncodingASCII)) + { + gl_locale_name_canonicalize (namebuf); + cached_localename = strdup (namebuf); + } +# endif + if (cached_localename == NULL) + cached_localename = "C"; + } + return cached_localename; + } + +# endif + +# if defined(WIN32_NATIVE) /* WIN32, not Cygwin */ + { + LCID lcid; + LANGID langid; + int primary, sub; + + /* Use native Win32 API locale ID. */ + lcid = GetThreadLocale (); + + /* Strip off the sorting rules, keep only the language part. */ + langid = LANGIDFROMLCID (lcid); + + /* Split into language and territory part. */ + primary = PRIMARYLANGID (langid); + sub = SUBLANGID (langid); + + /* Dispatch on language. + See also http://www.unicode.org/unicode/onlinedat/languages.html . + For details about languages, see http://www.ethnologue.com/ . */ + switch (primary) + { + case LANG_AFRIKAANS: return "af_ZA"; + case LANG_ALBANIAN: return "sq_AL"; + case LANG_AMHARIC: return "am_ET"; + case LANG_ARABIC: + switch (sub) + { + case SUBLANG_ARABIC_SAUDI_ARABIA: return "ar_SA"; + case SUBLANG_ARABIC_IRAQ: return "ar_IQ"; + case SUBLANG_ARABIC_EGYPT: return "ar_EG"; + case SUBLANG_ARABIC_LIBYA: return "ar_LY"; + case SUBLANG_ARABIC_ALGERIA: return "ar_DZ"; + case SUBLANG_ARABIC_MOROCCO: return "ar_MA"; + case SUBLANG_ARABIC_TUNISIA: return "ar_TN"; + case SUBLANG_ARABIC_OMAN: return "ar_OM"; + case SUBLANG_ARABIC_YEMEN: return "ar_YE"; + case SUBLANG_ARABIC_SYRIA: return "ar_SY"; + case SUBLANG_ARABIC_JORDAN: return "ar_JO"; + case SUBLANG_ARABIC_LEBANON: return "ar_LB"; + case SUBLANG_ARABIC_KUWAIT: return "ar_KW"; + case SUBLANG_ARABIC_UAE: return "ar_AE"; + case SUBLANG_ARABIC_BAHRAIN: return "ar_BH"; + case SUBLANG_ARABIC_QATAR: return "ar_QA"; + } + return "ar"; + case LANG_ARMENIAN: return "hy_AM"; + case LANG_ASSAMESE: return "as_IN"; + case LANG_AZERI: + switch (sub) + { + /* FIXME: Adjust this when Azerbaijani locales appear on Unix. */ + case SUBLANG_AZERI_LATIN: return "az_AZ@latin"; + case SUBLANG_AZERI_CYRILLIC: return "az_AZ@cyrillic"; + } + return "az"; + case LANG_BASQUE: + switch (sub) + { + case SUBLANG_DEFAULT: return "eu_ES"; + } + return "eu"; /* Ambiguous: could be "eu_ES" or "eu_FR". */ + case LANG_BELARUSIAN: return "be_BY"; + case LANG_BENGALI: + switch (sub) + { + case SUBLANG_BENGALI_INDIA: return "bn_IN"; + case SUBLANG_BENGALI_BANGLADESH: return "bn_BD"; + } + return "bn"; + case LANG_BULGARIAN: return "bg_BG"; + case LANG_BURMESE: return "my_MM"; + case LANG_CAMBODIAN: return "km_KH"; + case LANG_CATALAN: return "ca_ES"; + case LANG_CHEROKEE: return "chr_US"; + case LANG_CHINESE: + switch (sub) + { + case SUBLANG_CHINESE_TRADITIONAL: return "zh_TW"; + case SUBLANG_CHINESE_SIMPLIFIED: return "zh_CN"; + case SUBLANG_CHINESE_HONGKONG: return "zh_HK"; + case SUBLANG_CHINESE_SINGAPORE: return "zh_SG"; + case SUBLANG_CHINESE_MACAU: return "zh_MO"; + } + return "zh"; + case LANG_CROATIAN: /* LANG_CROATIAN == LANG_SERBIAN + * What used to be called Serbo-Croatian + * should really now be two separate + * languages because of political reasons. + * (Says tml, who knows nothing about Serbian + * or Croatian.) + * (I can feel those flames coming already.) + */ + switch (sub) + { + case SUBLANG_DEFAULT: return "hr_HR"; + case SUBLANG_SERBIAN_LATIN: return "sr_CS"; + case SUBLANG_SERBIAN_CYRILLIC: return "sr_CS@cyrillic"; + } + return "hr"; + case LANG_CZECH: return "cs_CZ"; + case LANG_DANISH: return "da_DK"; + case LANG_DIVEHI: return "dv_MV"; + case LANG_DUTCH: + switch (sub) + { + case SUBLANG_DUTCH: return "nl_NL"; + case SUBLANG_DUTCH_BELGIAN: /* FLEMISH, VLAAMS */ return "nl_BE"; + } + return "nl"; + case LANG_EDO: return "bin_NG"; + case LANG_ENGLISH: + switch (sub) + { + /* SUBLANG_ENGLISH_US == SUBLANG_DEFAULT. Heh. I thought + * English was the language spoken in England. + * Oh well. + */ + case SUBLANG_ENGLISH_US: return "en_US"; + case SUBLANG_ENGLISH_UK: return "en_GB"; + case SUBLANG_ENGLISH_AUS: return "en_AU"; + case SUBLANG_ENGLISH_CAN: return "en_CA"; + case SUBLANG_ENGLISH_NZ: return "en_NZ"; + case SUBLANG_ENGLISH_EIRE: return "en_IE"; + case SUBLANG_ENGLISH_SOUTH_AFRICA: return "en_ZA"; + case SUBLANG_ENGLISH_JAMAICA: return "en_JM"; + case SUBLANG_ENGLISH_CARIBBEAN: return "en_GD"; /* Grenada? */ + case SUBLANG_ENGLISH_BELIZE: return "en_BZ"; + case SUBLANG_ENGLISH_TRINIDAD: return "en_TT"; + case SUBLANG_ENGLISH_ZIMBABWE: return "en_ZW"; + case SUBLANG_ENGLISH_PHILIPPINES: return "en_PH"; + case SUBLANG_ENGLISH_INDONESIA: return "en_ID"; + case SUBLANG_ENGLISH_HONGKONG: return "en_HK"; + case SUBLANG_ENGLISH_INDIA: return "en_IN"; + case SUBLANG_ENGLISH_MALAYSIA: return "en_MY"; + case SUBLANG_ENGLISH_SINGAPORE: return "en_SG"; + } + return "en"; + case LANG_ESTONIAN: return "et_EE"; + case LANG_FAEROESE: return "fo_FO"; + case LANG_FARSI: return "fa_IR"; + case LANG_FINNISH: return "fi_FI"; + case LANG_FRENCH: + switch (sub) + { + case SUBLANG_FRENCH: return "fr_FR"; + case SUBLANG_FRENCH_BELGIAN: /* WALLOON */ return "fr_BE"; + case SUBLANG_FRENCH_CANADIAN: return "fr_CA"; + case SUBLANG_FRENCH_SWISS: return "fr_CH"; + case SUBLANG_FRENCH_LUXEMBOURG: return "fr_LU"; + case SUBLANG_FRENCH_MONACO: return "fr_MC"; + case SUBLANG_FRENCH_WESTINDIES: return "fr"; /* Caribbean? */ + case SUBLANG_FRENCH_REUNION: return "fr_RE"; + case SUBLANG_FRENCH_CONGO: return "fr_CG"; + case SUBLANG_FRENCH_SENEGAL: return "fr_SN"; + case SUBLANG_FRENCH_CAMEROON: return "fr_CM"; + case SUBLANG_FRENCH_COTEDIVOIRE: return "fr_CI"; + case SUBLANG_FRENCH_MALI: return "fr_ML"; + case SUBLANG_FRENCH_MOROCCO: return "fr_MA"; + case SUBLANG_FRENCH_HAITI: return "fr_HT"; + } + return "fr"; + case LANG_FRISIAN: return "fy_NL"; + case LANG_FULFULDE: + /* Spoken in Nigeria, Guinea, Senegal, Mali, Niger, Cameroon, Benin. */ + return "ff_NG"; + case LANG_GAELIC: + switch (sub) + { + case 0x01: /* SCOTTISH */ return "gd_GB"; + case 0x02: /* IRISH */ return "ga_IE"; + } + return "C"; + case LANG_GALICIAN: return "gl_ES"; + case LANG_GEORGIAN: return "ka_GE"; + case LANG_GERMAN: + switch (sub) + { + case SUBLANG_GERMAN: return "de_DE"; + case SUBLANG_GERMAN_SWISS: return "de_CH"; + case SUBLANG_GERMAN_AUSTRIAN: return "de_AT"; + case SUBLANG_GERMAN_LUXEMBOURG: return "de_LU"; + case SUBLANG_GERMAN_LIECHTENSTEIN: return "de_LI"; + } + return "de"; + case LANG_GREEK: return "el_GR"; + case LANG_GUARANI: return "gn_PY"; + case LANG_GUJARATI: return "gu_IN"; + case LANG_HAUSA: return "ha_NG"; + case LANG_HAWAIIAN: + /* FIXME: Do they mean Hawaiian ("haw_US", 1000 speakers) + or Hawaii Creole English ("cpe_US", 600000 speakers)? */ + return "cpe_US"; + case LANG_HEBREW: return "he_IL"; + case LANG_HINDI: return "hi_IN"; + case LANG_HUNGARIAN: return "hu_HU"; + case LANG_IBIBIO: return "nic_NG"; + case LANG_ICELANDIC: return "is_IS"; + case LANG_IGBO: return "ig_NG"; + case LANG_INDONESIAN: return "id_ID"; + case LANG_INUKTITUT: return "iu_CA"; + case LANG_ITALIAN: + switch (sub) + { + case SUBLANG_ITALIAN: return "it_IT"; + case SUBLANG_ITALIAN_SWISS: return "it_CH"; + } + return "it"; + case LANG_JAPANESE: return "ja_JP"; + case LANG_KANNADA: return "kn_IN"; + case LANG_KANURI: return "kr_NG"; + case LANG_KASHMIRI: + switch (sub) + { + case SUBLANG_DEFAULT: return "ks_PK"; + case SUBLANG_KASHMIRI_INDIA: return "ks_IN"; + } + return "ks"; + case LANG_KAZAK: return "kk_KZ"; + case LANG_KONKANI: + /* FIXME: Adjust this when such locales appear on Unix. */ + return "kok_IN"; + case LANG_KOREAN: return "ko_KR"; + case LANG_KYRGYZ: return "ky_KG"; + case LANG_LAO: return "lo_LA"; + case LANG_LATIN: return "la_VA"; + case LANG_LATVIAN: return "lv_LV"; + case LANG_LITHUANIAN: return "lt_LT"; + case LANG_MACEDONIAN: return "mk_MK"; + case LANG_MALAY: + switch (sub) + { + case SUBLANG_MALAY_MALAYSIA: return "ms_MY"; + case SUBLANG_MALAY_BRUNEI_DARUSSALAM: return "ms_BN"; + } + return "ms"; + case LANG_MALAYALAM: return "ml_IN"; + case LANG_MALTESE: return "mt_MT"; + case LANG_MANIPURI: + /* FIXME: Adjust this when such locales appear on Unix. */ + return "mni_IN"; + case LANG_MARATHI: return "mr_IN"; + case LANG_MONGOLIAN: + switch (sub) + { + case SUBLANG_DEFAULT: return "mn_MN"; + } + return "mn"; /* Ambiguous: could be "mn_CN" or "mn_MN". */ + case LANG_NEPALI: + switch (sub) + { + case SUBLANG_DEFAULT: return "ne_NP"; + case SUBLANG_NEPALI_INDIA: return "ne_IN"; + } + return "ne"; + case LANG_NORWEGIAN: + switch (sub) + { + case SUBLANG_NORWEGIAN_BOKMAL: return "nb_NO"; + case SUBLANG_NORWEGIAN_NYNORSK: return "nn_NO"; + } + return "no"; + case LANG_ORIYA: return "or_IN"; + case LANG_OROMO: return "om_ET"; + case LANG_PAPIAMENTU: return "pap_AN"; + case LANG_PASHTO: + return "ps"; /* Ambiguous: could be "ps_PK" or "ps_AF". */ + case LANG_POLISH: return "pl_PL"; + case LANG_PORTUGUESE: + switch (sub) + { + case SUBLANG_PORTUGUESE: return "pt_PT"; + /* Hmm. SUBLANG_PORTUGUESE_BRAZILIAN == SUBLANG_DEFAULT. + Same phenomenon as SUBLANG_ENGLISH_US == SUBLANG_DEFAULT. */ + case SUBLANG_PORTUGUESE_BRAZILIAN: return "pt_BR"; + } + return "pt"; + case LANG_PUNJABI: + switch (sub) + { + case SUBLANG_PUNJABI_INDIA: return "pa_IN"; /* Gurmukhi script */ + case SUBLANG_PUNJABI_PAKISTAN: return "pa_PK"; /* Arabic script */ + } + return "pa"; + case LANG_RHAETO_ROMANCE: return "rm_CH"; + case LANG_ROMANIAN: + switch (sub) + { + case SUBLANG_ROMANIAN_ROMANIA: return "ro_RO"; + case SUBLANG_ROMANIAN_MOLDOVA: return "ro_MD"; + } + return "ro"; + case LANG_RUSSIAN: + switch (sub) + { + case SUBLANG_DEFAULT: return "ru_RU"; + } + return "ru"; /* Ambiguous: could be "ru_RU" or "ru_UA" or "ru_MD". */ + case LANG_SAAMI: /* actually Northern Sami */ return "se_NO"; + case LANG_SANSKRIT: return "sa_IN"; + case LANG_SINDHI: + switch (sub) + { + case SUBLANG_SINDHI_PAKISTAN: return "sd_PK"; + case SUBLANG_SINDHI_AFGHANISTAN: return "sd_AF"; + } + return "sd"; + case LANG_SINHALESE: return "si_LK"; + case LANG_SLOVAK: return "sk_SK"; + case LANG_SLOVENIAN: return "sl_SI"; + case LANG_SOMALI: return "so_SO"; + case LANG_SORBIAN: + /* FIXME: Adjust this when such locales appear on Unix. */ + return "wen_DE"; + case LANG_SPANISH: + switch (sub) + { + case SUBLANG_SPANISH: return "es_ES"; + case SUBLANG_SPANISH_MEXICAN: return "es_MX"; + case SUBLANG_SPANISH_MODERN: + return "es_ES@modern"; /* not seen on Unix */ + case SUBLANG_SPANISH_GUATEMALA: return "es_GT"; + case SUBLANG_SPANISH_COSTA_RICA: return "es_CR"; + case SUBLANG_SPANISH_PANAMA: return "es_PA"; + case SUBLANG_SPANISH_DOMINICAN_REPUBLIC: return "es_DO"; + case SUBLANG_SPANISH_VENEZUELA: return "es_VE"; + case SUBLANG_SPANISH_COLOMBIA: return "es_CO"; + case SUBLANG_SPANISH_PERU: return "es_PE"; + case SUBLANG_SPANISH_ARGENTINA: return "es_AR"; + case SUBLANG_SPANISH_ECUADOR: return "es_EC"; + case SUBLANG_SPANISH_CHILE: return "es_CL"; + case SUBLANG_SPANISH_URUGUAY: return "es_UY"; + case SUBLANG_SPANISH_PARAGUAY: return "es_PY"; + case SUBLANG_SPANISH_BOLIVIA: return "es_BO"; + case SUBLANG_SPANISH_EL_SALVADOR: return "es_SV"; + case SUBLANG_SPANISH_HONDURAS: return "es_HN"; + case SUBLANG_SPANISH_NICARAGUA: return "es_NI"; + case SUBLANG_SPANISH_PUERTO_RICO: return "es_PR"; + } + return "es"; + case LANG_SUTU: return "bnt_TZ"; /* or "st_LS" or "nso_ZA"? */ + case LANG_SWAHILI: return "sw_KE"; + case LANG_SWEDISH: + switch (sub) + { + case SUBLANG_DEFAULT: return "sv_SE"; + case SUBLANG_SWEDISH_FINLAND: return "sv_FI"; + } + return "sv"; + case LANG_SYRIAC: return "syr_TR"; /* An extinct language. */ + case LANG_TAGALOG: return "tl_PH"; + case LANG_TAJIK: return "tg_TJ"; + case LANG_TAMAZIGHT: + switch (sub) + { + /* FIXME: Adjust this when Tamazight locales appear on Unix. */ + case SUBLANG_TAMAZIGHT_ARABIC: return "ber_MA@arabic"; + case SUBLANG_TAMAZIGHT_ALGERIA_LATIN: return "ber_DZ@latin"; + } + return "ber_MA"; + case LANG_TAMIL: + switch (sub) + { + case SUBLANG_DEFAULT: return "ta_IN"; + } + return "ta"; /* Ambiguous: could be "ta_IN" or "ta_LK" or "ta_SG". */ + case LANG_TATAR: return "tt_RU"; + case LANG_TELUGU: return "te_IN"; + case LANG_THAI: return "th_TH"; + case LANG_TIBETAN: return "bo_CN"; + case LANG_TIGRINYA: + switch (sub) + { + case SUBLANG_TIGRINYA_ETHIOPIA: return "ti_ET"; + case SUBLANG_TIGRINYA_ERITREA: return "ti_ER"; + } + return "ti"; + case LANG_TSONGA: return "ts_ZA"; + case LANG_TSWANA: return "tn_BW"; + case LANG_TURKISH: return "tr_TR"; + case LANG_TURKMEN: return "tk_TM"; + case LANG_UKRAINIAN: return "uk_UA"; + case LANG_URDU: + switch (sub) + { + case SUBLANG_URDU_PAKISTAN: return "ur_PK"; + case SUBLANG_URDU_INDIA: return "ur_IN"; + } + return "ur"; + case LANG_UZBEK: + switch (sub) + { + case SUBLANG_UZBEK_LATIN: return "uz_UZ"; + case SUBLANG_UZBEK_CYRILLIC: return "uz_UZ@cyrillic"; + } + return "uz"; + case LANG_VENDA: return "ve_ZA"; + case LANG_VIETNAMESE: return "vi_VN"; + case LANG_WELSH: return "cy_GB"; + case LANG_XHOSA: return "xh_ZA"; + case LANG_YI: return "sit_CN"; + case LANG_YIDDISH: return "yi_IL"; + case LANG_YORUBA: return "yo_NG"; + case LANG_ZULU: return "zu_ZA"; + default: return "C"; + } + } +# endif +#endif +} + +const char * +gl_locale_name (int category, const char *categoryname) +{ + const char *retval; + + retval = gl_locale_name_posix (category, categoryname); + if (retval != NULL) + return retval; + + return gl_locale_name_default (); +} diff --git a/xchat-2.8.8/intl/lock.c b/xchat-2.8.8/intl/lock.c new file mode 100644 index 0000000..f60a8d9 --- /dev/null +++ b/xchat-2.8.8/intl/lock.c @@ -0,0 +1,922 @@ +/* Locking in multithreaded situations. + Copyright (C) 2005-2006 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Written by Bruno Haible , 2005. + Based on GCC's gthr-posix.h, gthr-posix95.h, gthr-solaris.h, + gthr-win32.h. */ + +#include + +#include "lock.h" + +/* ========================================================================= */ + +#if USE_POSIX_THREADS + +/* Use the POSIX threads library. */ + +# if PTHREAD_IN_USE_DETECTION_HARD + +/* The function to be executed by a dummy thread. */ +static void * +dummy_thread_func (void *arg) +{ + return arg; +} + +int +glthread_in_use (void) +{ + static int tested; + static int result; /* 1: linked with -lpthread, 0: only with libc */ + + if (!tested) + { + pthread_t thread; + + if (pthread_create (&thread, NULL, dummy_thread_func, NULL) != 0) + /* Thread creation failed. */ + result = 0; + else + { + /* Thread creation works. */ + void *retval; + if (pthread_join (thread, &retval) != 0) + abort (); + result = 1; + } + tested = 1; + } + return result; +} + +# endif + +/* -------------------------- gl_lock_t datatype -------------------------- */ + +/* ------------------------- gl_rwlock_t datatype ------------------------- */ + +# if HAVE_PTHREAD_RWLOCK + +# if !defined PTHREAD_RWLOCK_INITIALIZER + +void +glthread_rwlock_init (gl_rwlock_t *lock) +{ + if (pthread_rwlock_init (&lock->rwlock, NULL) != 0) + abort (); + lock->initialized = 1; +} + +void +glthread_rwlock_rdlock (gl_rwlock_t *lock) +{ + if (!lock->initialized) + { + if (pthread_mutex_lock (&lock->guard) != 0) + abort (); + if (!lock->initialized) + glthread_rwlock_init (lock); + if (pthread_mutex_unlock (&lock->guard) != 0) + abort (); + } + if (pthread_rwlock_rdlock (&lock->rwlock) != 0) + abort (); +} + +void +glthread_rwlock_wrlock (gl_rwlock_t *lock) +{ + if (!lock->initialized) + { + if (pthread_mutex_lock (&lock->guard) != 0) + abort (); + if (!lock->initialized) + glthread_rwlock_init (lock); + if (pthread_mutex_unlock (&lock->guard) != 0) + abort (); + } + if (pthread_rwlock_wrlock (&lock->rwlock) != 0) + abort (); +} + +void +glthread_rwlock_unlock (gl_rwlock_t *lock) +{ + if (!lock->initialized) + abort (); + if (pthread_rwlock_unlock (&lock->rwlock) != 0) + abort (); +} + +void +glthread_rwlock_destroy (gl_rwlock_t *lock) +{ + if (!lock->initialized) + abort (); + if (pthread_rwlock_destroy (&lock->rwlock) != 0) + abort (); + lock->initialized = 0; +} + +# endif + +# else + +void +glthread_rwlock_init (gl_rwlock_t *lock) +{ + if (pthread_mutex_init (&lock->lock, NULL) != 0) + abort (); + if (pthread_cond_init (&lock->waiting_readers, NULL) != 0) + abort (); + if (pthread_cond_init (&lock->waiting_writers, NULL) != 0) + abort (); + lock->waiting_writers_count = 0; + lock->runcount = 0; +} + +void +glthread_rwlock_rdlock (gl_rwlock_t *lock) +{ + if (pthread_mutex_lock (&lock->lock) != 0) + abort (); + /* Test whether only readers are currently running, and whether the runcount + field will not overflow. */ + /* POSIX says: "It is implementation-defined whether the calling thread + acquires the lock when a writer does not hold the lock and there are + writers blocked on the lock." Let's say, no: give the writers a higher + priority. */ + while (!(lock->runcount + 1 > 0 && lock->waiting_writers_count == 0)) + { + /* This thread has to wait for a while. Enqueue it among the + waiting_readers. */ + if (pthread_cond_wait (&lock->waiting_readers, &lock->lock) != 0) + abort (); + } + lock->runcount++; + if (pthread_mutex_unlock (&lock->lock) != 0) + abort (); +} + +void +glthread_rwlock_wrlock (gl_rwlock_t *lock) +{ + if (pthread_mutex_lock (&lock->lock) != 0) + abort (); + /* Test whether no readers or writers are currently running. */ + while (!(lock->runcount == 0)) + { + /* This thread has to wait for a while. Enqueue it among the + waiting_writers. */ + lock->waiting_writers_count++; + if (pthread_cond_wait (&lock->waiting_writers, &lock->lock) != 0) + abort (); + lock->waiting_writers_count--; + } + lock->runcount--; /* runcount becomes -1 */ + if (pthread_mutex_unlock (&lock->lock) != 0) + abort (); +} + +void +glthread_rwlock_unlock (gl_rwlock_t *lock) +{ + if (pthread_mutex_lock (&lock->lock) != 0) + abort (); + if (lock->runcount < 0) + { + /* Drop a writer lock. */ + if (!(lock->runcount == -1)) + abort (); + lock->runcount = 0; + } + else + { + /* Drop a reader lock. */ + if (!(lock->runcount > 0)) + abort (); + lock->runcount--; + } + if (lock->runcount == 0) + { + /* POSIX recommends that "write locks shall take precedence over read + locks", to avoid "writer starvation". */ + if (lock->waiting_writers_count > 0) + { + /* Wake up one of the waiting writers. */ + if (pthread_cond_signal (&lock->waiting_writers) != 0) + abort (); + } + else + { + /* Wake up all waiting readers. */ + if (pthread_cond_broadcast (&lock->waiting_readers) != 0) + abort (); + } + } + if (pthread_mutex_unlock (&lock->lock) != 0) + abort (); +} + +void +glthread_rwlock_destroy (gl_rwlock_t *lock) +{ + if (pthread_mutex_destroy (&lock->lock) != 0) + abort (); + if (pthread_cond_destroy (&lock->waiting_readers) != 0) + abort (); + if (pthread_cond_destroy (&lock->waiting_writers) != 0) + abort (); +} + +# endif + +/* --------------------- gl_recursive_lock_t datatype --------------------- */ + +# if HAVE_PTHREAD_MUTEX_RECURSIVE + +# if !(defined PTHREAD_RECURSIVE_MUTEX_INITIALIZER || defined PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) + +void +glthread_recursive_lock_init (gl_recursive_lock_t *lock) +{ + pthread_mutexattr_t attributes; + + if (pthread_mutexattr_init (&attributes) != 0) + abort (); + if (pthread_mutexattr_settype (&attributes, PTHREAD_MUTEX_RECURSIVE) != 0) + abort (); + if (pthread_mutex_init (&lock->recmutex, &attributes) != 0) + abort (); + if (pthread_mutexattr_destroy (&attributes) != 0) + abort (); + lock->initialized = 1; +} + +void +glthread_recursive_lock_lock (gl_recursive_lock_t *lock) +{ + if (!lock->initialized) + { + if (pthread_mutex_lock (&lock->guard) != 0) + abort (); + if (!lock->initialized) + glthread_recursive_lock_init (lock); + if (pthread_mutex_unlock (&lock->guard) != 0) + abort (); + } + if (pthread_mutex_lock (&lock->recmutex) != 0) + abort (); +} + +void +glthread_recursive_lock_unlock (gl_recursive_lock_t *lock) +{ + if (!lock->initialized) + abort (); + if (pthread_mutex_unlock (&lock->recmutex) != 0) + abort (); +} + +void +glthread_recursive_lock_destroy (gl_recursive_lock_t *lock) +{ + if (!lock->initialized) + abort (); + if (pthread_mutex_destroy (&lock->recmutex) != 0) + abort (); + lock->initialized = 0; +} + +# endif + +# else + +void +glthread_recursive_lock_init (gl_recursive_lock_t *lock) +{ + if (pthread_mutex_init (&lock->mutex, NULL) != 0) + abort (); + lock->owner = (pthread_t) 0; + lock->depth = 0; +} + +void +glthread_recursive_lock_lock (gl_recursive_lock_t *lock) +{ + pthread_t self = pthread_self (); + if (lock->owner != self) + { + if (pthread_mutex_lock (&lock->mutex) != 0) + abort (); + lock->owner = self; + } + if (++(lock->depth) == 0) /* wraparound? */ + abort (); +} + +void +glthread_recursive_lock_unlock (gl_recursive_lock_t *lock) +{ + if (lock->owner != pthread_self ()) + abort (); + if (lock->depth == 0) + abort (); + if (--(lock->depth) == 0) + { + lock->owner = (pthread_t) 0; + if (pthread_mutex_unlock (&lock->mutex) != 0) + abort (); + } +} + +void +glthread_recursive_lock_destroy (gl_recursive_lock_t *lock) +{ + if (lock->owner != (pthread_t) 0) + abort (); + if (pthread_mutex_destroy (&lock->mutex) != 0) + abort (); +} + +# endif + +/* -------------------------- gl_once_t datatype -------------------------- */ + +static const pthread_once_t fresh_once = PTHREAD_ONCE_INIT; + +int +glthread_once_singlethreaded (pthread_once_t *once_control) +{ + /* We don't know whether pthread_once_t is an integer type, a floating-point + type, a pointer type, or a structure type. */ + char *firstbyte = (char *)once_control; + if (*firstbyte == *(const char *)&fresh_once) + { + /* First time use of once_control. Invert the first byte. */ + *firstbyte = ~ *(const char *)&fresh_once; + return 1; + } + else + return 0; +} + +#endif + +/* ========================================================================= */ + +#if USE_PTH_THREADS + +/* Use the GNU Pth threads library. */ + +/* -------------------------- gl_lock_t datatype -------------------------- */ + +/* ------------------------- gl_rwlock_t datatype ------------------------- */ + +/* --------------------- gl_recursive_lock_t datatype --------------------- */ + +/* -------------------------- gl_once_t datatype -------------------------- */ + +void +glthread_once_call (void *arg) +{ + void (**gl_once_temp_addr) (void) = (void (**) (void)) arg; + void (*initfunction) (void) = *gl_once_temp_addr; + initfunction (); +} + +int +glthread_once_singlethreaded (pth_once_t *once_control) +{ + /* We know that pth_once_t is an integer type. */ + if (*once_control == PTH_ONCE_INIT) + { + /* First time use of once_control. Invert the marker. */ + *once_control = ~ PTH_ONCE_INIT; + return 1; + } + else + return 0; +} + +#endif + +/* ========================================================================= */ + +#if USE_SOLARIS_THREADS + +/* Use the old Solaris threads library. */ + +/* -------------------------- gl_lock_t datatype -------------------------- */ + +/* ------------------------- gl_rwlock_t datatype ------------------------- */ + +/* --------------------- gl_recursive_lock_t datatype --------------------- */ + +void +glthread_recursive_lock_init (gl_recursive_lock_t *lock) +{ + if (mutex_init (&lock->mutex, USYNC_THREAD, NULL) != 0) + abort (); + lock->owner = (thread_t) 0; + lock->depth = 0; +} + +void +glthread_recursive_lock_lock (gl_recursive_lock_t *lock) +{ + thread_t self = thr_self (); + if (lock->owner != self) + { + if (mutex_lock (&lock->mutex) != 0) + abort (); + lock->owner = self; + } + if (++(lock->depth) == 0) /* wraparound? */ + abort (); +} + +void +glthread_recursive_lock_unlock (gl_recursive_lock_t *lock) +{ + if (lock->owner != thr_self ()) + abort (); + if (lock->depth == 0) + abort (); + if (--(lock->depth) == 0) + { + lock->owner = (thread_t) 0; + if (mutex_unlock (&lock->mutex) != 0) + abort (); + } +} + +void +glthread_recursive_lock_destroy (gl_recursive_lock_t *lock) +{ + if (lock->owner != (thread_t) 0) + abort (); + if (mutex_destroy (&lock->mutex) != 0) + abort (); +} + +/* -------------------------- gl_once_t datatype -------------------------- */ + +void +glthread_once (gl_once_t *once_control, void (*initfunction) (void)) +{ + if (!once_control->inited) + { + /* Use the mutex to guarantee that if another thread is already calling + the initfunction, this thread waits until it's finished. */ + if (mutex_lock (&once_control->mutex) != 0) + abort (); + if (!once_control->inited) + { + once_control->inited = 1; + initfunction (); + } + if (mutex_unlock (&once_control->mutex) != 0) + abort (); + } +} + +int +glthread_once_singlethreaded (gl_once_t *once_control) +{ + /* We know that gl_once_t contains an integer type. */ + if (!once_control->inited) + { + /* First time use of once_control. Invert the marker. */ + once_control->inited = ~ 0; + return 1; + } + else + return 0; +} + +#endif + +/* ========================================================================= */ + +#if USE_WIN32_THREADS + +/* -------------------------- gl_lock_t datatype -------------------------- */ + +void +glthread_lock_init (gl_lock_t *lock) +{ + InitializeCriticalSection (&lock->lock); + lock->guard.done = 1; +} + +void +glthread_lock_lock (gl_lock_t *lock) +{ + if (!lock->guard.done) + { + if (InterlockedIncrement (&lock->guard.started) == 0) + /* This thread is the first one to need this lock. Initialize it. */ + glthread_lock_init (lock); + else + /* Yield the CPU while waiting for another thread to finish + initializing this lock. */ + while (!lock->guard.done) + Sleep (0); + } + EnterCriticalSection (&lock->lock); +} + +void +glthread_lock_unlock (gl_lock_t *lock) +{ + if (!lock->guard.done) + abort (); + LeaveCriticalSection (&lock->lock); +} + +void +glthread_lock_destroy (gl_lock_t *lock) +{ + if (!lock->guard.done) + abort (); + DeleteCriticalSection (&lock->lock); + lock->guard.done = 0; +} + +/* ------------------------- gl_rwlock_t datatype ------------------------- */ + +static inline void +gl_waitqueue_init (gl_waitqueue_t *wq) +{ + wq->array = NULL; + wq->count = 0; + wq->alloc = 0; + wq->offset = 0; +} + +/* Enqueues the current thread, represented by an event, in a wait queue. + Returns INVALID_HANDLE_VALUE if an allocation failure occurs. */ +static HANDLE +gl_waitqueue_add (gl_waitqueue_t *wq) +{ + HANDLE event; + unsigned int index; + + if (wq->count == wq->alloc) + { + unsigned int new_alloc = 2 * wq->alloc + 1; + HANDLE *new_array = + (HANDLE *) realloc (wq->array, new_alloc * sizeof (HANDLE)); + if (new_array == NULL) + /* No more memory. */ + return INVALID_HANDLE_VALUE; + /* Now is a good opportunity to rotate the array so that its contents + starts at offset 0. */ + if (wq->offset > 0) + { + unsigned int old_count = wq->count; + unsigned int old_alloc = wq->alloc; + unsigned int old_offset = wq->offset; + unsigned int i; + if (old_offset + old_count > old_alloc) + { + unsigned int limit = old_offset + old_count - old_alloc; + for (i = 0; i < limit; i++) + new_array[old_alloc + i] = new_array[i]; + } + for (i = 0; i < old_count; i++) + new_array[i] = new_array[old_offset + i]; + wq->offset = 0; + } + wq->array = new_array; + wq->alloc = new_alloc; + } + event = CreateEvent (NULL, TRUE, FALSE, NULL); + if (event == INVALID_HANDLE_VALUE) + /* No way to allocate an event. */ + return INVALID_HANDLE_VALUE; + index = wq->offset + wq->count; + if (index >= wq->alloc) + index -= wq->alloc; + wq->array[index] = event; + wq->count++; + return event; +} + +/* Notifies the first thread from a wait queue and dequeues it. */ +static inline void +gl_waitqueue_notify_first (gl_waitqueue_t *wq) +{ + SetEvent (wq->array[wq->offset + 0]); + wq->offset++; + wq->count--; + if (wq->count == 0 || wq->offset == wq->alloc) + wq->offset = 0; +} + +/* Notifies all threads from a wait queue and dequeues them all. */ +static inline void +gl_waitqueue_notify_all (gl_waitqueue_t *wq) +{ + unsigned int i; + + for (i = 0; i < wq->count; i++) + { + unsigned int index = wq->offset + i; + if (index >= wq->alloc) + index -= wq->alloc; + SetEvent (wq->array[index]); + } + wq->count = 0; + wq->offset = 0; +} + +void +glthread_rwlock_init (gl_rwlock_t *lock) +{ + InitializeCriticalSection (&lock->lock); + gl_waitqueue_init (&lock->waiting_readers); + gl_waitqueue_init (&lock->waiting_writers); + lock->runcount = 0; + lock->guard.done = 1; +} + +void +glthread_rwlock_rdlock (gl_rwlock_t *lock) +{ + if (!lock->guard.done) + { + if (InterlockedIncrement (&lock->guard.started) == 0) + /* This thread is the first one to need this lock. Initialize it. */ + glthread_rwlock_init (lock); + else + /* Yield the CPU while waiting for another thread to finish + initializing this lock. */ + while (!lock->guard.done) + Sleep (0); + } + EnterCriticalSection (&lock->lock); + /* Test whether only readers are currently running, and whether the runcount + field will not overflow. */ + if (!(lock->runcount + 1 > 0)) + { + /* This thread has to wait for a while. Enqueue it among the + waiting_readers. */ + HANDLE event = gl_waitqueue_add (&lock->waiting_readers); + if (event != INVALID_HANDLE_VALUE) + { + DWORD result; + LeaveCriticalSection (&lock->lock); + /* Wait until another thread signals this event. */ + result = WaitForSingleObject (event, INFINITE); + if (result == WAIT_FAILED || result == WAIT_TIMEOUT) + abort (); + CloseHandle (event); + /* The thread which signalled the event already did the bookkeeping: + removed us from the waiting_readers, incremented lock->runcount. */ + if (!(lock->runcount > 0)) + abort (); + return; + } + else + { + /* Allocation failure. Weird. */ + do + { + LeaveCriticalSection (&lock->lock); + Sleep (1); + EnterCriticalSection (&lock->lock); + } + while (!(lock->runcount + 1 > 0)); + } + } + lock->runcount++; + LeaveCriticalSection (&lock->lock); +} + +void +glthread_rwlock_wrlock (gl_rwlock_t *lock) +{ + if (!lock->guard.done) + { + if (InterlockedIncrement (&lock->guard.started) == 0) + /* This thread is the first one to need this lock. Initialize it. */ + glthread_rwlock_init (lock); + else + /* Yield the CPU while waiting for another thread to finish + initializing this lock. */ + while (!lock->guard.done) + Sleep (0); + } + EnterCriticalSection (&lock->lock); + /* Test whether no readers or writers are currently running. */ + if (!(lock->runcount == 0)) + { + /* This thread has to wait for a while. Enqueue it among the + waiting_writers. */ + HANDLE event = gl_waitqueue_add (&lock->waiting_writers); + if (event != INVALID_HANDLE_VALUE) + { + DWORD result; + LeaveCriticalSection (&lock->lock); + /* Wait until another thread signals this event. */ + result = WaitForSingleObject (event, INFINITE); + if (result == WAIT_FAILED || result == WAIT_TIMEOUT) + abort (); + CloseHandle (event); + /* The thread which signalled the event already did the bookkeeping: + removed us from the waiting_writers, set lock->runcount = -1. */ + if (!(lock->runcount == -1)) + abort (); + return; + } + else + { + /* Allocation failure. Weird. */ + do + { + LeaveCriticalSection (&lock->lock); + Sleep (1); + EnterCriticalSection (&lock->lock); + } + while (!(lock->runcount == 0)); + } + } + lock->runcount--; /* runcount becomes -1 */ + LeaveCriticalSection (&lock->lock); +} + +void +glthread_rwlock_unlock (gl_rwlock_t *lock) +{ + if (!lock->guard.done) + abort (); + EnterCriticalSection (&lock->lock); + if (lock->runcount < 0) + { + /* Drop a writer lock. */ + if (!(lock->runcount == -1)) + abort (); + lock->runcount = 0; + } + else + { + /* Drop a reader lock. */ + if (!(lock->runcount > 0)) + abort (); + lock->runcount--; + } + if (lock->runcount == 0) + { + /* POSIX recommends that "write locks shall take precedence over read + locks", to avoid "writer starvation". */ + if (lock->waiting_writers.count > 0) + { + /* Wake up one of the waiting writers. */ + lock->runcount--; + gl_waitqueue_notify_first (&lock->waiting_writers); + } + else + { + /* Wake up all waiting readers. */ + lock->runcount += lock->waiting_readers.count; + gl_waitqueue_notify_all (&lock->waiting_readers); + } + } + LeaveCriticalSection (&lock->lock); +} + +void +glthread_rwlock_destroy (gl_rwlock_t *lock) +{ + if (!lock->guard.done) + abort (); + if (lock->runcount != 0) + abort (); + DeleteCriticalSection (&lock->lock); + if (lock->waiting_readers.array != NULL) + free (lock->waiting_readers.array); + if (lock->waiting_writers.array != NULL) + free (lock->waiting_writers.array); + lock->guard.done = 0; +} + +/* --------------------- gl_recursive_lock_t datatype --------------------- */ + +void +glthread_recursive_lock_init (gl_recursive_lock_t *lock) +{ + lock->owner = 0; + lock->depth = 0; + InitializeCriticalSection (&lock->lock); + lock->guard.done = 1; +} + +void +glthread_recursive_lock_lock (gl_recursive_lock_t *lock) +{ + if (!lock->guard.done) + { + if (InterlockedIncrement (&lock->guard.started) == 0) + /* This thread is the first one to need this lock. Initialize it. */ + glthread_recursive_lock_init (lock); + else + /* Yield the CPU while waiting for another thread to finish + initializing this lock. */ + while (!lock->guard.done) + Sleep (0); + } + { + DWORD self = GetCurrentThreadId (); + if (lock->owner != self) + { + EnterCriticalSection (&lock->lock); + lock->owner = self; + } + if (++(lock->depth) == 0) /* wraparound? */ + abort (); + } +} + +void +glthread_recursive_lock_unlock (gl_recursive_lock_t *lock) +{ + if (lock->owner != GetCurrentThreadId ()) + abort (); + if (lock->depth == 0) + abort (); + if (--(lock->depth) == 0) + { + lock->owner = 0; + LeaveCriticalSection (&lock->lock); + } +} + +void +glthread_recursive_lock_destroy (gl_recursive_lock_t *lock) +{ + if (lock->owner != 0) + abort (); + DeleteCriticalSection (&lock->lock); + lock->guard.done = 0; +} + +/* -------------------------- gl_once_t datatype -------------------------- */ + +void +glthread_once (gl_once_t *once_control, void (*initfunction) (void)) +{ + if (once_control->inited <= 0) + { + if (InterlockedIncrement (&once_control->started) == 0) + { + /* This thread is the first one to come to this once_control. */ + InitializeCriticalSection (&once_control->lock); + EnterCriticalSection (&once_control->lock); + once_control->inited = 0; + initfunction (); + once_control->inited = 1; + LeaveCriticalSection (&once_control->lock); + } + else + { + /* Undo last operation. */ + InterlockedDecrement (&once_control->started); + /* Some other thread has already started the initialization. + Yield the CPU while waiting for the other thread to finish + initializing and taking the lock. */ + while (once_control->inited < 0) + Sleep (0); + if (once_control->inited <= 0) + { + /* Take the lock. This blocks until the other thread has + finished calling the initfunction. */ + EnterCriticalSection (&once_control->lock); + LeaveCriticalSection (&once_control->lock); + if (!(once_control->inited > 0)) + abort (); + } + } + } +} + +#endif + +/* ========================================================================= */ diff --git a/xchat-2.8.8/intl/lock.h b/xchat-2.8.8/intl/lock.h new file mode 100644 index 0000000..144531d --- /dev/null +++ b/xchat-2.8.8/intl/lock.h @@ -0,0 +1,1105 @@ +/* Locking in multithreaded situations. + Copyright (C) 2005-2007 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Written by Bruno Haible , 2005. + Based on GCC's gthr-posix.h, gthr-posix95.h, gthr-solaris.h, + gthr-win32.h. */ + +/* This file contains locking primitives for use with a given thread library. + It does not contain primitives for creating threads or for other + synchronization primitives. + + Normal (non-recursive) locks: + Type: gl_lock_t + Declaration: gl_lock_define(extern, name) + Initializer: gl_lock_define_initialized(, name) + Initialization: gl_lock_init (name); + Taking the lock: gl_lock_lock (name); + Releasing the lock: gl_lock_unlock (name); + De-initialization: gl_lock_destroy (name); + + Read-Write (non-recursive) locks: + Type: gl_rwlock_t + Declaration: gl_rwlock_define(extern, name) + Initializer: gl_rwlock_define_initialized(, name) + Initialization: gl_rwlock_init (name); + Taking the lock: gl_rwlock_rdlock (name); + gl_rwlock_wrlock (name); + Releasing the lock: gl_rwlock_unlock (name); + De-initialization: gl_rwlock_destroy (name); + + Recursive locks: + Type: gl_recursive_lock_t + Declaration: gl_recursive_lock_define(extern, name) + Initializer: gl_recursive_lock_define_initialized(, name) + Initialization: gl_recursive_lock_init (name); + Taking the lock: gl_recursive_lock_lock (name); + Releasing the lock: gl_recursive_lock_unlock (name); + De-initialization: gl_recursive_lock_destroy (name); + + Once-only execution: + Type: gl_once_t + Initializer: gl_once_define(extern, name) + Execution: gl_once (name, initfunction); +*/ + + +#ifndef _LOCK_H +#define _LOCK_H + +/* ========================================================================= */ + +#if USE_POSIX_THREADS + +/* Use the POSIX threads library. */ + +# include +# include + +# ifdef __cplusplus +extern "C" { +# endif + +# if PTHREAD_IN_USE_DETECTION_HARD + +/* The pthread_in_use() detection needs to be done at runtime. */ +# define pthread_in_use() \ + glthread_in_use () +extern int glthread_in_use (void); + +# endif + +# if USE_POSIX_THREADS_WEAK + +/* Use weak references to the POSIX threads library. */ + +/* Weak references avoid dragging in external libraries if the other parts + of the program don't use them. Here we use them, because we don't want + every program that uses libintl to depend on libpthread. This assumes + that libpthread would not be loaded after libintl; i.e. if libintl is + loaded first, by an executable that does not depend on libpthread, and + then a module is dynamically loaded that depends on libpthread, libintl + will not be multithread-safe. */ + +/* The way to test at runtime whether libpthread is present is to test + whether a function pointer's value, such as &pthread_mutex_init, is + non-NULL. However, some versions of GCC have a bug through which, in + PIC mode, &foo != NULL always evaluates to true if there is a direct + call to foo(...) in the same function. To avoid this, we test the + address of a function in libpthread that we don't use. */ + +# pragma weak pthread_mutex_init +# pragma weak pthread_mutex_lock +# pragma weak pthread_mutex_unlock +# pragma weak pthread_mutex_destroy +# pragma weak pthread_rwlock_init +# pragma weak pthread_rwlock_rdlock +# pragma weak pthread_rwlock_wrlock +# pragma weak pthread_rwlock_unlock +# pragma weak pthread_rwlock_destroy +# pragma weak pthread_once +# pragma weak pthread_cond_init +# pragma weak pthread_cond_wait +# pragma weak pthread_cond_signal +# pragma weak pthread_cond_broadcast +# pragma weak pthread_cond_destroy +# pragma weak pthread_mutexattr_init +# pragma weak pthread_mutexattr_settype +# pragma weak pthread_mutexattr_destroy +# ifndef pthread_self +# pragma weak pthread_self +# endif + +# if !PTHREAD_IN_USE_DETECTION_HARD +# pragma weak pthread_cancel +# define pthread_in_use() (pthread_cancel != NULL) +# endif + +# else + +# if !PTHREAD_IN_USE_DETECTION_HARD +# define pthread_in_use() 1 +# endif + +# endif + +/* -------------------------- gl_lock_t datatype -------------------------- */ + +typedef pthread_mutex_t gl_lock_t; +# define gl_lock_define(STORAGECLASS, NAME) \ + STORAGECLASS pthread_mutex_t NAME; +# define gl_lock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS pthread_mutex_t NAME = gl_lock_initializer; +# define gl_lock_initializer \ + PTHREAD_MUTEX_INITIALIZER +# define gl_lock_init(NAME) \ + do \ + { \ + if (pthread_in_use () && pthread_mutex_init (&NAME, NULL) != 0) \ + abort (); \ + } \ + while (0) +# define gl_lock_lock(NAME) \ + do \ + { \ + if (pthread_in_use () && pthread_mutex_lock (&NAME) != 0) \ + abort (); \ + } \ + while (0) +# define gl_lock_unlock(NAME) \ + do \ + { \ + if (pthread_in_use () && pthread_mutex_unlock (&NAME) != 0) \ + abort (); \ + } \ + while (0) +# define gl_lock_destroy(NAME) \ + do \ + { \ + if (pthread_in_use () && pthread_mutex_destroy (&NAME) != 0) \ + abort (); \ + } \ + while (0) + +/* ------------------------- gl_rwlock_t datatype ------------------------- */ + +# if HAVE_PTHREAD_RWLOCK + +# ifdef PTHREAD_RWLOCK_INITIALIZER + +typedef pthread_rwlock_t gl_rwlock_t; +# define gl_rwlock_define(STORAGECLASS, NAME) \ + STORAGECLASS pthread_rwlock_t NAME; +# define gl_rwlock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS pthread_rwlock_t NAME = gl_rwlock_initializer; +# define gl_rwlock_initializer \ + PTHREAD_RWLOCK_INITIALIZER +# define gl_rwlock_init(NAME) \ + do \ + { \ + if (pthread_in_use () && pthread_rwlock_init (&NAME, NULL) != 0) \ + abort (); \ + } \ + while (0) +# define gl_rwlock_rdlock(NAME) \ + do \ + { \ + if (pthread_in_use () && pthread_rwlock_rdlock (&NAME) != 0) \ + abort (); \ + } \ + while (0) +# define gl_rwlock_wrlock(NAME) \ + do \ + { \ + if (pthread_in_use () && pthread_rwlock_wrlock (&NAME) != 0) \ + abort (); \ + } \ + while (0) +# define gl_rwlock_unlock(NAME) \ + do \ + { \ + if (pthread_in_use () && pthread_rwlock_unlock (&NAME) != 0) \ + abort (); \ + } \ + while (0) +# define gl_rwlock_destroy(NAME) \ + do \ + { \ + if (pthread_in_use () && pthread_rwlock_destroy (&NAME) != 0) \ + abort (); \ + } \ + while (0) + +# else + +typedef struct + { + int initialized; + pthread_mutex_t guard; /* protects the initialization */ + pthread_rwlock_t rwlock; /* read-write lock */ + } + gl_rwlock_t; +# define gl_rwlock_define(STORAGECLASS, NAME) \ + STORAGECLASS gl_rwlock_t NAME; +# define gl_rwlock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS gl_rwlock_t NAME = gl_rwlock_initializer; +# define gl_rwlock_initializer \ + { 0, PTHREAD_MUTEX_INITIALIZER } +# define gl_rwlock_init(NAME) \ + do \ + { \ + if (pthread_in_use ()) \ + glthread_rwlock_init (&NAME); \ + } \ + while (0) +# define gl_rwlock_rdlock(NAME) \ + do \ + { \ + if (pthread_in_use ()) \ + glthread_rwlock_rdlock (&NAME); \ + } \ + while (0) +# define gl_rwlock_wrlock(NAME) \ + do \ + { \ + if (pthread_in_use ()) \ + glthread_rwlock_wrlock (&NAME); \ + } \ + while (0) +# define gl_rwlock_unlock(NAME) \ + do \ + { \ + if (pthread_in_use ()) \ + glthread_rwlock_unlock (&NAME); \ + } \ + while (0) +# define gl_rwlock_destroy(NAME) \ + do \ + { \ + if (pthread_in_use ()) \ + glthread_rwlock_destroy (&NAME); \ + } \ + while (0) +extern void glthread_rwlock_init (gl_rwlock_t *lock); +extern void glthread_rwlock_rdlock (gl_rwlock_t *lock); +extern void glthread_rwlock_wrlock (gl_rwlock_t *lock); +extern void glthread_rwlock_unlock (gl_rwlock_t *lock); +extern void glthread_rwlock_destroy (gl_rwlock_t *lock); + +# endif + +# else + +typedef struct + { + pthread_mutex_t lock; /* protects the remaining fields */ + pthread_cond_t waiting_readers; /* waiting readers */ + pthread_cond_t waiting_writers; /* waiting writers */ + unsigned int waiting_writers_count; /* number of waiting writers */ + int runcount; /* number of readers running, or -1 when a writer runs */ + } + gl_rwlock_t; +# define gl_rwlock_define(STORAGECLASS, NAME) \ + STORAGECLASS gl_rwlock_t NAME; +# define gl_rwlock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS gl_rwlock_t NAME = gl_rwlock_initializer; +# define gl_rwlock_initializer \ + { PTHREAD_MUTEX_INITIALIZER, PTHREAD_COND_INITIALIZER, PTHREAD_COND_INITIALIZER, 0, 0 } +# define gl_rwlock_init(NAME) \ + do \ + { \ + if (pthread_in_use ()) \ + glthread_rwlock_init (&NAME); \ + } \ + while (0) +# define gl_rwlock_rdlock(NAME) \ + do \ + { \ + if (pthread_in_use ()) \ + glthread_rwlock_rdlock (&NAME); \ + } \ + while (0) +# define gl_rwlock_wrlock(NAME) \ + do \ + { \ + if (pthread_in_use ()) \ + glthread_rwlock_wrlock (&NAME); \ + } \ + while (0) +# define gl_rwlock_unlock(NAME) \ + do \ + { \ + if (pthread_in_use ()) \ + glthread_rwlock_unlock (&NAME); \ + } \ + while (0) +# define gl_rwlock_destroy(NAME) \ + do \ + { \ + if (pthread_in_use ()) \ + glthread_rwlock_destroy (&NAME); \ + } \ + while (0) +extern void glthread_rwlock_init (gl_rwlock_t *lock); +extern void glthread_rwlock_rdlock (gl_rwlock_t *lock); +extern void glthread_rwlock_wrlock (gl_rwlock_t *lock); +extern void glthread_rwlock_unlock (gl_rwlock_t *lock); +extern void glthread_rwlock_destroy (gl_rwlock_t *lock); + +# endif + +/* --------------------- gl_recursive_lock_t datatype --------------------- */ + +# if HAVE_PTHREAD_MUTEX_RECURSIVE + +# if defined PTHREAD_RECURSIVE_MUTEX_INITIALIZER || defined PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP + +typedef pthread_mutex_t gl_recursive_lock_t; +# define gl_recursive_lock_define(STORAGECLASS, NAME) \ + STORAGECLASS pthread_mutex_t NAME; +# define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS pthread_mutex_t NAME = gl_recursive_lock_initializer; +# ifdef PTHREAD_RECURSIVE_MUTEX_INITIALIZER +# define gl_recursive_lock_initializer \ + PTHREAD_RECURSIVE_MUTEX_INITIALIZER +# else +# define gl_recursive_lock_initializer \ + PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +# endif +# define gl_recursive_lock_init(NAME) \ + do \ + { \ + if (pthread_in_use () && pthread_mutex_init (&NAME, NULL) != 0) \ + abort (); \ + } \ + while (0) +# define gl_recursive_lock_lock(NAME) \ + do \ + { \ + if (pthread_in_use () && pthread_mutex_lock (&NAME) != 0) \ + abort (); \ + } \ + while (0) +# define gl_recursive_lock_unlock(NAME) \ + do \ + { \ + if (pthread_in_use () && pthread_mutex_unlock (&NAME) != 0) \ + abort (); \ + } \ + while (0) +# define gl_recursive_lock_destroy(NAME) \ + do \ + { \ + if (pthread_in_use () && pthread_mutex_destroy (&NAME) != 0) \ + abort (); \ + } \ + while (0) + +# else + +typedef struct + { + pthread_mutex_t recmutex; /* recursive mutex */ + pthread_mutex_t guard; /* protects the initialization */ + int initialized; + } + gl_recursive_lock_t; +# define gl_recursive_lock_define(STORAGECLASS, NAME) \ + STORAGECLASS gl_recursive_lock_t NAME; +# define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS gl_recursive_lock_t NAME = gl_recursive_lock_initializer; +# define gl_recursive_lock_initializer \ + { PTHREAD_MUTEX_INITIALIZER, PTHREAD_MUTEX_INITIALIZER, 0 } +# define gl_recursive_lock_init(NAME) \ + do \ + { \ + if (pthread_in_use ()) \ + glthread_recursive_lock_init (&NAME); \ + } \ + while (0) +# define gl_recursive_lock_lock(NAME) \ + do \ + { \ + if (pthread_in_use ()) \ + glthread_recursive_lock_lock (&NAME); \ + } \ + while (0) +# define gl_recursive_lock_unlock(NAME) \ + do \ + { \ + if (pthread_in_use ()) \ + glthread_recursive_lock_unlock (&NAME); \ + } \ + while (0) +# define gl_recursive_lock_destroy(NAME) \ + do \ + { \ + if (pthread_in_use ()) \ + glthread_recursive_lock_destroy (&NAME); \ + } \ + while (0) +extern void glthread_recursive_lock_init (gl_recursive_lock_t *lock); +extern void glthread_recursive_lock_lock (gl_recursive_lock_t *lock); +extern void glthread_recursive_lock_unlock (gl_recursive_lock_t *lock); +extern void glthread_recursive_lock_destroy (gl_recursive_lock_t *lock); + +# endif + +# else + +/* Old versions of POSIX threads on Solaris did not have recursive locks. + We have to implement them ourselves. */ + +typedef struct + { + pthread_mutex_t mutex; + pthread_t owner; + unsigned long depth; + } + gl_recursive_lock_t; +# define gl_recursive_lock_define(STORAGECLASS, NAME) \ + STORAGECLASS gl_recursive_lock_t NAME; +# define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS gl_recursive_lock_t NAME = gl_recursive_lock_initializer; +# define gl_recursive_lock_initializer \ + { PTHREAD_MUTEX_INITIALIZER, (pthread_t) 0, 0 } +# define gl_recursive_lock_init(NAME) \ + do \ + { \ + if (pthread_in_use ()) \ + glthread_recursive_lock_init (&NAME); \ + } \ + while (0) +# define gl_recursive_lock_lock(NAME) \ + do \ + { \ + if (pthread_in_use ()) \ + glthread_recursive_lock_lock (&NAME); \ + } \ + while (0) +# define gl_recursive_lock_unlock(NAME) \ + do \ + { \ + if (pthread_in_use ()) \ + glthread_recursive_lock_unlock (&NAME); \ + } \ + while (0) +# define gl_recursive_lock_destroy(NAME) \ + do \ + { \ + if (pthread_in_use ()) \ + glthread_recursive_lock_destroy (&NAME); \ + } \ + while (0) +extern void glthread_recursive_lock_init (gl_recursive_lock_t *lock); +extern void glthread_recursive_lock_lock (gl_recursive_lock_t *lock); +extern void glthread_recursive_lock_unlock (gl_recursive_lock_t *lock); +extern void glthread_recursive_lock_destroy (gl_recursive_lock_t *lock); + +# endif + +/* -------------------------- gl_once_t datatype -------------------------- */ + +typedef pthread_once_t gl_once_t; +# define gl_once_define(STORAGECLASS, NAME) \ + STORAGECLASS pthread_once_t NAME = PTHREAD_ONCE_INIT; +# define gl_once(NAME, INITFUNCTION) \ + do \ + { \ + if (pthread_in_use ()) \ + { \ + if (pthread_once (&NAME, INITFUNCTION) != 0) \ + abort (); \ + } \ + else \ + { \ + if (glthread_once_singlethreaded (&NAME)) \ + INITFUNCTION (); \ + } \ + } \ + while (0) +extern int glthread_once_singlethreaded (pthread_once_t *once_control); + +# ifdef __cplusplus +} +# endif + +#endif + +/* ========================================================================= */ + +#if USE_PTH_THREADS + +/* Use the GNU Pth threads library. */ + +# include +# include + +# ifdef __cplusplus +extern "C" { +# endif + +# if USE_PTH_THREADS_WEAK + +/* Use weak references to the GNU Pth threads library. */ + +# pragma weak pth_mutex_init +# pragma weak pth_mutex_acquire +# pragma weak pth_mutex_release +# pragma weak pth_rwlock_init +# pragma weak pth_rwlock_acquire +# pragma weak pth_rwlock_release +# pragma weak pth_once + +# pragma weak pth_cancel +# define pth_in_use() (pth_cancel != NULL) + +# else + +# define pth_in_use() 1 + +# endif + +/* -------------------------- gl_lock_t datatype -------------------------- */ + +typedef pth_mutex_t gl_lock_t; +# define gl_lock_define(STORAGECLASS, NAME) \ + STORAGECLASS pth_mutex_t NAME; +# define gl_lock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS pth_mutex_t NAME = gl_lock_initializer; +# define gl_lock_initializer \ + PTH_MUTEX_INIT +# define gl_lock_init(NAME) \ + do \ + { \ + if (pth_in_use() && !pth_mutex_init (&NAME)) \ + abort (); \ + } \ + while (0) +# define gl_lock_lock(NAME) \ + do \ + { \ + if (pth_in_use() && !pth_mutex_acquire (&NAME, 0, NULL)) \ + abort (); \ + } \ + while (0) +# define gl_lock_unlock(NAME) \ + do \ + { \ + if (pth_in_use() && !pth_mutex_release (&NAME)) \ + abort (); \ + } \ + while (0) +# define gl_lock_destroy(NAME) \ + (void)(&NAME) + +/* ------------------------- gl_rwlock_t datatype ------------------------- */ + +typedef pth_rwlock_t gl_rwlock_t; +# define gl_rwlock_define(STORAGECLASS, NAME) \ + STORAGECLASS pth_rwlock_t NAME; +# define gl_rwlock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS pth_rwlock_t NAME = gl_rwlock_initializer; +# define gl_rwlock_initializer \ + PTH_RWLOCK_INIT +# define gl_rwlock_init(NAME) \ + do \ + { \ + if (pth_in_use() && !pth_rwlock_init (&NAME)) \ + abort (); \ + } \ + while (0) +# define gl_rwlock_rdlock(NAME) \ + do \ + { \ + if (pth_in_use() \ + && !pth_rwlock_acquire (&NAME, PTH_RWLOCK_RD, 0, NULL)) \ + abort (); \ + } \ + while (0) +# define gl_rwlock_wrlock(NAME) \ + do \ + { \ + if (pth_in_use() \ + && !pth_rwlock_acquire (&NAME, PTH_RWLOCK_RW, 0, NULL)) \ + abort (); \ + } \ + while (0) +# define gl_rwlock_unlock(NAME) \ + do \ + { \ + if (pth_in_use() && !pth_rwlock_release (&NAME)) \ + abort (); \ + } \ + while (0) +# define gl_rwlock_destroy(NAME) \ + (void)(&NAME) + +/* --------------------- gl_recursive_lock_t datatype --------------------- */ + +/* In Pth, mutexes are recursive by default. */ +typedef pth_mutex_t gl_recursive_lock_t; +# define gl_recursive_lock_define(STORAGECLASS, NAME) \ + STORAGECLASS pth_mutex_t NAME; +# define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS pth_mutex_t NAME = gl_recursive_lock_initializer; +# define gl_recursive_lock_initializer \ + PTH_MUTEX_INIT +# define gl_recursive_lock_init(NAME) \ + do \ + { \ + if (pth_in_use() && !pth_mutex_init (&NAME)) \ + abort (); \ + } \ + while (0) +# define gl_recursive_lock_lock(NAME) \ + do \ + { \ + if (pth_in_use() && !pth_mutex_acquire (&NAME, 0, NULL)) \ + abort (); \ + } \ + while (0) +# define gl_recursive_lock_unlock(NAME) \ + do \ + { \ + if (pth_in_use() && !pth_mutex_release (&NAME)) \ + abort (); \ + } \ + while (0) +# define gl_recursive_lock_destroy(NAME) \ + (void)(&NAME) + +/* -------------------------- gl_once_t datatype -------------------------- */ + +typedef pth_once_t gl_once_t; +# define gl_once_define(STORAGECLASS, NAME) \ + STORAGECLASS pth_once_t NAME = PTH_ONCE_INIT; +# define gl_once(NAME, INITFUNCTION) \ + do \ + { \ + if (pth_in_use ()) \ + { \ + void (*gl_once_temp) (void) = INITFUNCTION; \ + if (!pth_once (&NAME, glthread_once_call, &gl_once_temp)) \ + abort (); \ + } \ + else \ + { \ + if (glthread_once_singlethreaded (&NAME)) \ + INITFUNCTION (); \ + } \ + } \ + while (0) +extern void glthread_once_call (void *arg); +extern int glthread_once_singlethreaded (pth_once_t *once_control); + +# ifdef __cplusplus +} +# endif + +#endif + +/* ========================================================================= */ + +#if USE_SOLARIS_THREADS + +/* Use the old Solaris threads library. */ + +# include +# include +# include + +# ifdef __cplusplus +extern "C" { +# endif + +# if USE_SOLARIS_THREADS_WEAK + +/* Use weak references to the old Solaris threads library. */ + +# pragma weak mutex_init +# pragma weak mutex_lock +# pragma weak mutex_unlock +# pragma weak mutex_destroy +# pragma weak rwlock_init +# pragma weak rw_rdlock +# pragma weak rw_wrlock +# pragma weak rw_unlock +# pragma weak rwlock_destroy +# pragma weak thr_self + +# pragma weak thr_suspend +# define thread_in_use() (thr_suspend != NULL) + +# else + +# define thread_in_use() 1 + +# endif + +/* -------------------------- gl_lock_t datatype -------------------------- */ + +typedef mutex_t gl_lock_t; +# define gl_lock_define(STORAGECLASS, NAME) \ + STORAGECLASS mutex_t NAME; +# define gl_lock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS mutex_t NAME = gl_lock_initializer; +# define gl_lock_initializer \ + DEFAULTMUTEX +# define gl_lock_init(NAME) \ + do \ + { \ + if (thread_in_use () && mutex_init (&NAME, USYNC_THREAD, NULL) != 0) \ + abort (); \ + } \ + while (0) +# define gl_lock_lock(NAME) \ + do \ + { \ + if (thread_in_use () && mutex_lock (&NAME) != 0) \ + abort (); \ + } \ + while (0) +# define gl_lock_unlock(NAME) \ + do \ + { \ + if (thread_in_use () && mutex_unlock (&NAME) != 0) \ + abort (); \ + } \ + while (0) +# define gl_lock_destroy(NAME) \ + do \ + { \ + if (thread_in_use () && mutex_destroy (&NAME) != 0) \ + abort (); \ + } \ + while (0) + +/* ------------------------- gl_rwlock_t datatype ------------------------- */ + +typedef rwlock_t gl_rwlock_t; +# define gl_rwlock_define(STORAGECLASS, NAME) \ + STORAGECLASS rwlock_t NAME; +# define gl_rwlock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS rwlock_t NAME = gl_rwlock_initializer; +# define gl_rwlock_initializer \ + DEFAULTRWLOCK +# define gl_rwlock_init(NAME) \ + do \ + { \ + if (thread_in_use () && rwlock_init (&NAME, USYNC_THREAD, NULL) != 0) \ + abort (); \ + } \ + while (0) +# define gl_rwlock_rdlock(NAME) \ + do \ + { \ + if (thread_in_use () && rw_rdlock (&NAME) != 0) \ + abort (); \ + } \ + while (0) +# define gl_rwlock_wrlock(NAME) \ + do \ + { \ + if (thread_in_use () && rw_wrlock (&NAME) != 0) \ + abort (); \ + } \ + while (0) +# define gl_rwlock_unlock(NAME) \ + do \ + { \ + if (thread_in_use () && rw_unlock (&NAME) != 0) \ + abort (); \ + } \ + while (0) +# define gl_rwlock_destroy(NAME) \ + do \ + { \ + if (thread_in_use () && rwlock_destroy (&NAME) != 0) \ + abort (); \ + } \ + while (0) + +/* --------------------- gl_recursive_lock_t datatype --------------------- */ + +/* Old Solaris threads did not have recursive locks. + We have to implement them ourselves. */ + +typedef struct + { + mutex_t mutex; + thread_t owner; + unsigned long depth; + } + gl_recursive_lock_t; +# define gl_recursive_lock_define(STORAGECLASS, NAME) \ + STORAGECLASS gl_recursive_lock_t NAME; +# define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS gl_recursive_lock_t NAME = gl_recursive_lock_initializer; +# define gl_recursive_lock_initializer \ + { DEFAULTMUTEX, (thread_t) 0, 0 } +# define gl_recursive_lock_init(NAME) \ + do \ + { \ + if (thread_in_use ()) \ + glthread_recursive_lock_init (&NAME); \ + } \ + while (0) +# define gl_recursive_lock_lock(NAME) \ + do \ + { \ + if (thread_in_use ()) \ + glthread_recursive_lock_lock (&NAME); \ + } \ + while (0) +# define gl_recursive_lock_unlock(NAME) \ + do \ + { \ + if (thread_in_use ()) \ + glthread_recursive_lock_unlock (&NAME); \ + } \ + while (0) +# define gl_recursive_lock_destroy(NAME) \ + do \ + { \ + if (thread_in_use ()) \ + glthread_recursive_lock_destroy (&NAME); \ + } \ + while (0) +extern void glthread_recursive_lock_init (gl_recursive_lock_t *lock); +extern void glthread_recursive_lock_lock (gl_recursive_lock_t *lock); +extern void glthread_recursive_lock_unlock (gl_recursive_lock_t *lock); +extern void glthread_recursive_lock_destroy (gl_recursive_lock_t *lock); + +/* -------------------------- gl_once_t datatype -------------------------- */ + +typedef struct + { + volatile int inited; + mutex_t mutex; + } + gl_once_t; +# define gl_once_define(STORAGECLASS, NAME) \ + STORAGECLASS gl_once_t NAME = { 0, DEFAULTMUTEX }; +# define gl_once(NAME, INITFUNCTION) \ + do \ + { \ + if (thread_in_use ()) \ + { \ + glthread_once (&NAME, INITFUNCTION); \ + } \ + else \ + { \ + if (glthread_once_singlethreaded (&NAME)) \ + INITFUNCTION (); \ + } \ + } \ + while (0) +extern void glthread_once (gl_once_t *once_control, void (*initfunction) (void)); +extern int glthread_once_singlethreaded (gl_once_t *once_control); + +# ifdef __cplusplus +} +# endif + +#endif + +/* ========================================================================= */ + +#if USE_WIN32_THREADS + +# include + +# ifdef __cplusplus +extern "C" { +# endif + +/* We can use CRITICAL_SECTION directly, rather than the Win32 Event, Mutex, + Semaphore types, because + - we need only to synchronize inside a single process (address space), + not inter-process locking, + - we don't need to support trylock operations. (TryEnterCriticalSection + does not work on Windows 95/98/ME. Packages that need trylock usually + define their own mutex type.) */ + +/* There is no way to statically initialize a CRITICAL_SECTION. It needs + to be done lazily, once only. For this we need spinlocks. */ + +typedef struct { volatile int done; volatile long started; } gl_spinlock_t; + +/* -------------------------- gl_lock_t datatype -------------------------- */ + +typedef struct + { + gl_spinlock_t guard; /* protects the initialization */ + CRITICAL_SECTION lock; + } + gl_lock_t; +# define gl_lock_define(STORAGECLASS, NAME) \ + STORAGECLASS gl_lock_t NAME; +# define gl_lock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS gl_lock_t NAME = gl_lock_initializer; +# define gl_lock_initializer \ + { { 0, -1 } } +# define gl_lock_init(NAME) \ + glthread_lock_init (&NAME) +# define gl_lock_lock(NAME) \ + glthread_lock_lock (&NAME) +# define gl_lock_unlock(NAME) \ + glthread_lock_unlock (&NAME) +# define gl_lock_destroy(NAME) \ + glthread_lock_destroy (&NAME) +extern void glthread_lock_init (gl_lock_t *lock); +extern void glthread_lock_lock (gl_lock_t *lock); +extern void glthread_lock_unlock (gl_lock_t *lock); +extern void glthread_lock_destroy (gl_lock_t *lock); + +/* ------------------------- gl_rwlock_t datatype ------------------------- */ + +/* It is impossible to implement read-write locks using plain locks, without + introducing an extra thread dedicated to managing read-write locks. + Therefore here we need to use the low-level Event type. */ + +typedef struct + { + HANDLE *array; /* array of waiting threads, each represented by an event */ + unsigned int count; /* number of waiting threads */ + unsigned int alloc; /* length of allocated array */ + unsigned int offset; /* index of first waiting thread in array */ + } + gl_waitqueue_t; +typedef struct + { + gl_spinlock_t guard; /* protects the initialization */ + CRITICAL_SECTION lock; /* protects the remaining fields */ + gl_waitqueue_t waiting_readers; /* waiting readers */ + gl_waitqueue_t waiting_writers; /* waiting writers */ + int runcount; /* number of readers running, or -1 when a writer runs */ + } + gl_rwlock_t; +# define gl_rwlock_define(STORAGECLASS, NAME) \ + STORAGECLASS gl_rwlock_t NAME; +# define gl_rwlock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS gl_rwlock_t NAME = gl_rwlock_initializer; +# define gl_rwlock_initializer \ + { { 0, -1 } } +# define gl_rwlock_init(NAME) \ + glthread_rwlock_init (&NAME) +# define gl_rwlock_rdlock(NAME) \ + glthread_rwlock_rdlock (&NAME) +# define gl_rwlock_wrlock(NAME) \ + glthread_rwlock_wrlock (&NAME) +# define gl_rwlock_unlock(NAME) \ + glthread_rwlock_unlock (&NAME) +# define gl_rwlock_destroy(NAME) \ + glthread_rwlock_destroy (&NAME) +extern void glthread_rwlock_init (gl_rwlock_t *lock); +extern void glthread_rwlock_rdlock (gl_rwlock_t *lock); +extern void glthread_rwlock_wrlock (gl_rwlock_t *lock); +extern void glthread_rwlock_unlock (gl_rwlock_t *lock); +extern void glthread_rwlock_destroy (gl_rwlock_t *lock); + +/* --------------------- gl_recursive_lock_t datatype --------------------- */ + +/* The Win32 documentation says that CRITICAL_SECTION already implements a + recursive lock. But we need not rely on it: It's easy to implement a + recursive lock without this assumption. */ + +typedef struct + { + gl_spinlock_t guard; /* protects the initialization */ + DWORD owner; + unsigned long depth; + CRITICAL_SECTION lock; + } + gl_recursive_lock_t; +# define gl_recursive_lock_define(STORAGECLASS, NAME) \ + STORAGECLASS gl_recursive_lock_t NAME; +# define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS gl_recursive_lock_t NAME = gl_recursive_lock_initializer; +# define gl_recursive_lock_initializer \ + { { 0, -1 }, 0, 0 } +# define gl_recursive_lock_init(NAME) \ + glthread_recursive_lock_init (&NAME) +# define gl_recursive_lock_lock(NAME) \ + glthread_recursive_lock_lock (&NAME) +# define gl_recursive_lock_unlock(NAME) \ + glthread_recursive_lock_unlock (&NAME) +# define gl_recursive_lock_destroy(NAME) \ + glthread_recursive_lock_destroy (&NAME) +extern void glthread_recursive_lock_init (gl_recursive_lock_t *lock); +extern void glthread_recursive_lock_lock (gl_recursive_lock_t *lock); +extern void glthread_recursive_lock_unlock (gl_recursive_lock_t *lock); +extern void glthread_recursive_lock_destroy (gl_recursive_lock_t *lock); + +/* -------------------------- gl_once_t datatype -------------------------- */ + +typedef struct + { + volatile int inited; + volatile long started; + CRITICAL_SECTION lock; + } + gl_once_t; +# define gl_once_define(STORAGECLASS, NAME) \ + STORAGECLASS gl_once_t NAME = { -1, -1 }; +# define gl_once(NAME, INITFUNCTION) \ + glthread_once (&NAME, INITFUNCTION) +extern void glthread_once (gl_once_t *once_control, void (*initfunction) (void)); + +# ifdef __cplusplus +} +# endif + +#endif + +/* ========================================================================= */ + +#if !(USE_POSIX_THREADS || USE_PTH_THREADS || USE_SOLARIS_THREADS || USE_WIN32_THREADS) + +/* Provide dummy implementation if threads are not supported. */ + +/* -------------------------- gl_lock_t datatype -------------------------- */ + +typedef int gl_lock_t; +# define gl_lock_define(STORAGECLASS, NAME) +# define gl_lock_define_initialized(STORAGECLASS, NAME) +# define gl_lock_init(NAME) +# define gl_lock_lock(NAME) +# define gl_lock_unlock(NAME) + +/* ------------------------- gl_rwlock_t datatype ------------------------- */ + +typedef int gl_rwlock_t; +# define gl_rwlock_define(STORAGECLASS, NAME) +# define gl_rwlock_define_initialized(STORAGECLASS, NAME) +# define gl_rwlock_init(NAME) +# define gl_rwlock_rdlock(NAME) +# define gl_rwlock_wrlock(NAME) +# define gl_rwlock_unlock(NAME) + +/* --------------------- gl_recursive_lock_t datatype --------------------- */ + +typedef int gl_recursive_lock_t; +# define gl_recursive_lock_define(STORAGECLASS, NAME) +# define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) +# define gl_recursive_lock_init(NAME) +# define gl_recursive_lock_lock(NAME) +# define gl_recursive_lock_unlock(NAME) + +/* -------------------------- gl_once_t datatype -------------------------- */ + +typedef int gl_once_t; +# define gl_once_define(STORAGECLASS, NAME) \ + STORAGECLASS gl_once_t NAME = 0; +# define gl_once(NAME, INITFUNCTION) \ + do \ + { \ + if (NAME == 0) \ + { \ + NAME = ~ 0; \ + INITFUNCTION (); \ + } \ + } \ + while (0) + +#endif + +/* ========================================================================= */ + +#endif /* _LOCK_H */ diff --git a/xchat-2.8.8/intl/log.c b/xchat-2.8.8/intl/log.c new file mode 100644 index 0000000..e3ab5d0 --- /dev/null +++ b/xchat-2.8.8/intl/log.c @@ -0,0 +1,116 @@ +/* Log file output. + Copyright (C) 2003, 2005 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Written by Bruno Haible . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +/* Handle multi-threaded applications. */ +#ifdef _LIBC +# include +#else +# include "lock.h" +#endif + +/* Print an ASCII string with quotes and escape sequences where needed. */ +static void +print_escaped (FILE *stream, const char *str) +{ + putc ('"', stream); + for (; *str != '\0'; str++) + if (*str == '\n') + { + fputs ("\\n\"", stream); + if (str[1] == '\0') + return; + fputs ("\n\"", stream); + } + else + { + if (*str == '"' || *str == '\\') + putc ('\\', stream); + putc (*str, stream); + } + putc ('"', stream); +} + +static char *last_logfilename = NULL; +static FILE *last_logfile = NULL; +__libc_lock_define_initialized (static, lock) + +static inline void +_nl_log_untranslated_locked (const char *logfilename, const char *domainname, + const char *msgid1, const char *msgid2, int plural) +{ + FILE *logfile; + + /* Can we reuse the last opened logfile? */ + if (last_logfilename == NULL || strcmp (logfilename, last_logfilename) != 0) + { + /* Close the last used logfile. */ + if (last_logfilename != NULL) + { + if (last_logfile != NULL) + { + fclose (last_logfile); + last_logfile = NULL; + } + free (last_logfilename); + last_logfilename = NULL; + } + /* Open the logfile. */ + last_logfilename = (char *) malloc (strlen (logfilename) + 1); + if (last_logfilename == NULL) + return; + strcpy (last_logfilename, logfilename); + last_logfile = fopen (logfilename, "a"); + if (last_logfile == NULL) + return; + } + logfile = last_logfile; + + fprintf (logfile, "domain "); + print_escaped (logfile, domainname); + fprintf (logfile, "\nmsgid "); + print_escaped (logfile, msgid1); + if (plural) + { + fprintf (logfile, "\nmsgid_plural "); + print_escaped (logfile, msgid2); + fprintf (logfile, "\nmsgstr[0] \"\"\n"); + } + else + fprintf (logfile, "\nmsgstr \"\"\n"); + putc ('\n', logfile); +} + +/* Add to the log file an entry denoting a failed translation. */ +void +_nl_log_untranslated (const char *logfilename, const char *domainname, + const char *msgid1, const char *msgid2, int plural) +{ + __libc_lock_lock (lock); + _nl_log_untranslated_locked (logfilename, domainname, msgid1, msgid2, plural); + __libc_lock_unlock (lock); +} diff --git a/xchat-2.8.8/intl/ngettext.c b/xchat-2.8.8/intl/ngettext.c new file mode 100644 index 0000000..a33529c --- /dev/null +++ b/xchat-2.8.8/intl/ngettext.c @@ -0,0 +1,65 @@ +/* Implementation of ngettext(3) function. + Copyright (C) 1995, 1997, 2000-2003 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef _LIBC +# define __need_NULL +# include +#else +# include /* Just for NULL. */ +#endif + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +#include + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define NGETTEXT __ngettext +# define DCNGETTEXT __dcngettext +#else +# define NGETTEXT libintl_ngettext +# define DCNGETTEXT libintl_dcngettext +#endif + +/* Look up MSGID in the current default message catalog for the current + LC_MESSAGES locale. If not found, returns MSGID itself (the default + text). */ +char * +NGETTEXT (const char *msgid1, const char *msgid2, unsigned long int n) +{ + return DCNGETTEXT (NULL, msgid1, msgid2, n, LC_MESSAGES); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__ngettext, ngettext); +#endif diff --git a/xchat-2.8.8/intl/os2compat.c b/xchat-2.8.8/intl/os2compat.c new file mode 100644 index 0000000..d041de2 --- /dev/null +++ b/xchat-2.8.8/intl/os2compat.c @@ -0,0 +1,98 @@ +/* OS/2 compatibility functions. + Copyright (C) 2001-2002 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#define OS2_AWARE +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include + +/* A version of getenv() that works from DLLs */ +extern unsigned long DosScanEnv (const unsigned char *pszName, unsigned char **ppszValue); + +char * +_nl_getenv (const char *name) +{ + unsigned char *value; + if (DosScanEnv (name, &value)) + return NULL; + else + return value; +} + +/* A fixed size buffer. */ +char libintl_nl_default_dirname[MAXPATHLEN+1]; + +char *_nlos2_libdir = NULL; +char *_nlos2_localealiaspath = NULL; +char *_nlos2_localedir = NULL; + +static __attribute__((constructor)) void +nlos2_initialize () +{ + char *root = getenv ("UNIXROOT"); + char *gnulocaledir = getenv ("GNULOCALEDIR"); + + _nlos2_libdir = gnulocaledir; + if (!_nlos2_libdir) + { + if (root) + { + size_t sl = strlen (root); + _nlos2_libdir = (char *) malloc (sl + strlen (LIBDIR) + 1); + memcpy (_nlos2_libdir, root, sl); + memcpy (_nlos2_libdir + sl, LIBDIR, strlen (LIBDIR) + 1); + } + else + _nlos2_libdir = LIBDIR; + } + + _nlos2_localealiaspath = gnulocaledir; + if (!_nlos2_localealiaspath) + { + if (root) + { + size_t sl = strlen (root); + _nlos2_localealiaspath = (char *) malloc (sl + strlen (LOCALE_ALIAS_PATH) + 1); + memcpy (_nlos2_localealiaspath, root, sl); + memcpy (_nlos2_localealiaspath + sl, LOCALE_ALIAS_PATH, strlen (LOCALE_ALIAS_PATH) + 1); + } + else + _nlos2_localealiaspath = LOCALE_ALIAS_PATH; + } + + _nlos2_localedir = gnulocaledir; + if (!_nlos2_localedir) + { + if (root) + { + size_t sl = strlen (root); + _nlos2_localedir = (char *) malloc (sl + strlen (LOCALEDIR) + 1); + memcpy (_nlos2_localedir, root, sl); + memcpy (_nlos2_localedir + sl, LOCALEDIR, strlen (LOCALEDIR) + 1); + } + else + _nlos2_localedir = LOCALEDIR; + } + + if (strlen (_nlos2_localedir) <= MAXPATHLEN) + strcpy (libintl_nl_default_dirname, _nlos2_localedir); +} diff --git a/xchat-2.8.8/intl/os2compat.h b/xchat-2.8.8/intl/os2compat.h new file mode 100644 index 0000000..a18d582 --- /dev/null +++ b/xchat-2.8.8/intl/os2compat.h @@ -0,0 +1,46 @@ +/* OS/2 compatibility defines. + This file is intended to be included from config.h + Copyright (C) 2001-2002 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* When included from os2compat.h we need all the original definitions */ +#ifndef OS2_AWARE + +#undef LIBDIR +#define LIBDIR _nlos2_libdir +extern char *_nlos2_libdir; + +#undef LOCALEDIR +#define LOCALEDIR _nlos2_localedir +extern char *_nlos2_localedir; + +#undef LOCALE_ALIAS_PATH +#define LOCALE_ALIAS_PATH _nlos2_localealiaspath +extern char *_nlos2_localealiaspath; + +#endif + +#undef HAVE_STRCASECMP +#define HAVE_STRCASECMP 1 +#define strcasecmp stricmp +#define strncasecmp strnicmp + +/* We have our own getenv() which works even if library is compiled as DLL */ +#define getenv _nl_getenv + +/* Older versions of gettext used -1 as the value of LC_MESSAGES */ +#define LC_MESSAGES_COMPAT (-1) diff --git a/xchat-2.8.8/intl/osdep.c b/xchat-2.8.8/intl/osdep.c new file mode 100644 index 0000000..3cc35c0 --- /dev/null +++ b/xchat-2.8.8/intl/osdep.c @@ -0,0 +1,26 @@ +/* OS dependent parts of libintl. + Copyright (C) 2001-2002, 2006 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#if defined __CYGWIN__ +# include "intl-exports.c" +#elif defined __EMX__ +# include "os2compat.c" +#else +/* Avoid AIX compiler warning. */ +typedef int dummy; +#endif diff --git a/xchat-2.8.8/intl/plural-exp.c b/xchat-2.8.8/intl/plural-exp.c new file mode 100644 index 0000000..751a688 --- /dev/null +++ b/xchat-2.8.8/intl/plural-exp.c @@ -0,0 +1,155 @@ +/* Expression parsing for plural form selection. + Copyright (C) 2000-2001, 2003, 2005-2007 Free Software Foundation, Inc. + Written by Ulrich Drepper , 2000. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +#include "plural-exp.h" + +#if (defined __GNUC__ && !(__APPLE_CC__ > 1) && !defined __cplusplus) \ + || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L) + +/* These structs are the constant expression for the germanic plural + form determination. It represents the expression "n != 1". */ +static const struct expression plvar = +{ + .nargs = 0, + .operation = var, +}; +static const struct expression plone = +{ + .nargs = 0, + .operation = num, + .val = + { + .num = 1 + } +}; +struct expression GERMANIC_PLURAL = +{ + .nargs = 2, + .operation = not_equal, + .val = + { + .args = + { + [0] = (struct expression *) &plvar, + [1] = (struct expression *) &plone + } + } +}; + +# define INIT_GERMANIC_PLURAL() + +#else + +/* For compilers without support for ISO C 99 struct/union initializers: + Initialization at run-time. */ + +static struct expression plvar; +static struct expression plone; +struct expression GERMANIC_PLURAL; + +static void +init_germanic_plural () +{ + if (plone.val.num == 0) + { + plvar.nargs = 0; + plvar.operation = var; + + plone.nargs = 0; + plone.operation = num; + plone.val.num = 1; + + GERMANIC_PLURAL.nargs = 2; + GERMANIC_PLURAL.operation = not_equal; + GERMANIC_PLURAL.val.args[0] = &plvar; + GERMANIC_PLURAL.val.args[1] = &plone; + } +} + +# define INIT_GERMANIC_PLURAL() init_germanic_plural () + +#endif + +void +internal_function +EXTRACT_PLURAL_EXPRESSION (const char *nullentry, + const struct expression **pluralp, + unsigned long int *npluralsp) +{ + if (nullentry != NULL) + { + const char *plural; + const char *nplurals; + + plural = strstr (nullentry, "plural="); + nplurals = strstr (nullentry, "nplurals="); + if (plural == NULL || nplurals == NULL) + goto no_plural; + else + { + char *endp; + unsigned long int n; + struct parse_args args; + + /* First get the number. */ + nplurals += 9; + while (*nplurals != '\0' && isspace ((unsigned char) *nplurals)) + ++nplurals; + if (!(*nplurals >= '0' && *nplurals <= '9')) + goto no_plural; +#if defined HAVE_STRTOUL || defined _LIBC + n = strtoul (nplurals, &endp, 10); +#else + for (endp = nplurals, n = 0; *endp >= '0' && *endp <= '9'; endp++) + n = n * 10 + (*endp - '0'); +#endif + if (nplurals == endp) + goto no_plural; + *npluralsp = n; + + /* Due to the restrictions bison imposes onto the interface of the + scanner function we have to put the input string and the result + passed up from the parser into the same structure which address + is passed down to the parser. */ + plural += 7; + args.cp = plural; + if (PLURAL_PARSE (&args) != 0) + goto no_plural; + *pluralp = args.res; + } + } + else + { + /* By default we are using the Germanic form: singular form only + for `one', the plural form otherwise. Yes, this is also what + English is using since English is a Germanic language. */ + no_plural: + INIT_GERMANIC_PLURAL (); + *pluralp = &GERMANIC_PLURAL; + *npluralsp = 2; + } +} diff --git a/xchat-2.8.8/intl/plural-exp.h b/xchat-2.8.8/intl/plural-exp.h new file mode 100644 index 0000000..d6cb8c5 --- /dev/null +++ b/xchat-2.8.8/intl/plural-exp.h @@ -0,0 +1,129 @@ +/* Expression parsing and evaluation for plural form selection. + Copyright (C) 2000-2003, 2005-2007 Free Software Foundation, Inc. + Written by Ulrich Drepper , 2000. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _PLURAL_EXP_H +#define _PLURAL_EXP_H + +#ifndef internal_function +# define internal_function +#endif + +#ifndef attribute_hidden +# define attribute_hidden +#endif + +#ifdef __cplusplus +extern "C" { +#endif + + +enum expression_operator +{ + /* Without arguments: */ + var, /* The variable "n". */ + num, /* Decimal number. */ + /* Unary operators: */ + lnot, /* Logical NOT. */ + /* Binary operators: */ + mult, /* Multiplication. */ + divide, /* Division. */ + module, /* Modulo operation. */ + plus, /* Addition. */ + minus, /* Subtraction. */ + less_than, /* Comparison. */ + greater_than, /* Comparison. */ + less_or_equal, /* Comparison. */ + greater_or_equal, /* Comparison. */ + equal, /* Comparison for equality. */ + not_equal, /* Comparison for inequality. */ + land, /* Logical AND. */ + lor, /* Logical OR. */ + /* Ternary operators: */ + qmop /* Question mark operator. */ +}; + +/* This is the representation of the expressions to determine the + plural form. */ +struct expression +{ + int nargs; /* Number of arguments. */ + enum expression_operator operation; + union + { + unsigned long int num; /* Number value for `num'. */ + struct expression *args[3]; /* Up to three arguments. */ + } val; +}; + +/* This is the data structure to pass information to the parser and get + the result in a thread-safe way. */ +struct parse_args +{ + const char *cp; + struct expression *res; +}; + + +/* Names for the libintl functions are a problem. This source code is used + 1. in the GNU C Library library, + 2. in the GNU libintl library, + 3. in the GNU gettext tools. + The function names in each situation must be different, to allow for + binary incompatible changes in 'struct expression'. Furthermore, + 1. in the GNU C Library library, the names have a __ prefix, + 2.+3. in the GNU libintl library and in the GNU gettext tools, the names + must follow ANSI C and not start with __. + So we have to distinguish the three cases. */ +#ifdef _LIBC +# define FREE_EXPRESSION __gettext_free_exp +# define PLURAL_PARSE __gettextparse +# define GERMANIC_PLURAL __gettext_germanic_plural +# define EXTRACT_PLURAL_EXPRESSION __gettext_extract_plural +#elif defined (IN_LIBINTL) +# define FREE_EXPRESSION libintl_gettext_free_exp +# define PLURAL_PARSE libintl_gettextparse +# define GERMANIC_PLURAL libintl_gettext_germanic_plural +# define EXTRACT_PLURAL_EXPRESSION libintl_gettext_extract_plural +#else +# define FREE_EXPRESSION free_plural_expression +# define PLURAL_PARSE parse_plural_expression +# define GERMANIC_PLURAL germanic_plural +# define EXTRACT_PLURAL_EXPRESSION extract_plural_expression +#endif + +extern void FREE_EXPRESSION (struct expression *exp) + internal_function; +extern int PLURAL_PARSE (void *arg); +extern struct expression GERMANIC_PLURAL attribute_hidden; +extern void EXTRACT_PLURAL_EXPRESSION (const char *nullentry, + const struct expression **pluralp, + unsigned long int *npluralsp) + internal_function; + +#if !defined (_LIBC) && !defined (IN_LIBINTL) && !defined (IN_LIBGLOCALE) +extern unsigned long int plural_eval (const struct expression *pexp, + unsigned long int n); +#endif + + +#ifdef __cplusplus +} +#endif + +#endif /* _PLURAL_EXP_H */ diff --git a/xchat-2.8.8/intl/plural.c b/xchat-2.8.8/intl/plural.c new file mode 100644 index 0000000..7a4d947 --- /dev/null +++ b/xchat-2.8.8/intl/plural.c @@ -0,0 +1,1961 @@ +/* A Bison parser, made by GNU Bison 2.3a. */ + +/* Skeleton implementation for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "2.3a" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 1 + +/* Using locations. */ +#define YYLSP_NEEDED 0 + +/* Substitute the variable and function names. */ +#define yyparse __gettextparse +#define yylex __gettextlex +#define yyerror __gettexterror +#define yylval __gettextlval +#define yychar __gettextchar +#define yydebug __gettextdebug +#define yynerrs __gettextnerrs + + +/* Copy the first part of user declarations. */ +/* Line 164 of yacc.c. */ +#line 1 "plural.y" + +/* Expression parsing for plural form selection. + Copyright (C) 2000-2001, 2003, 2005-2006 Free Software Foundation, Inc. + Written by Ulrich Drepper , 2000. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* For bison < 2.0, the bison generated parser uses alloca. AIX 3 forces us + to put this declaration at the beginning of the file. The declaration in + bison's skeleton file comes too late. This must come before + because may include arbitrary system headers. + This can go away once the AM_INTL_SUBDIR macro requires bison >= 2.0. */ +#if defined _AIX && !defined __GNUC__ + #pragma alloca +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include "plural-exp.h" + +/* The main function generated by the parser is called __gettextparse, + but we want it to be called PLURAL_PARSE. */ +#ifndef _LIBC +# define __gettextparse PLURAL_PARSE +#endif + +#define YYLEX_PARAM &((struct parse_args *) arg)->cp +#define YYPARSE_PARAM arg + + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + EQUOP2 = 258, + CMPOP2 = 259, + ADDOP2 = 260, + MULOP2 = 261, + NUMBER = 262 + }; +#endif +/* Tokens. */ +#define EQUOP2 258 +#define CMPOP2 259 +#define ADDOP2 260 +#define MULOP2 261 +#define NUMBER 262 + + + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +{/* Line 191 of yacc.c. */ +#line 51 "plural.y" + + unsigned long int num; + enum expression_operator op; + struct expression *exp; +} +/* Line 191 of yacc.c. */ +#line 175 "plural.c" + YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +#endif + + + + +/* Copy the second part of user declarations. */ +/* Line 221 of yacc.c. */ +#line 57 "plural.y" + +/* Prototypes for local functions. */ +static int yylex (YYSTYPE *lval, const char **pexp); +static void yyerror (const char *str); + +/* Allocation of expressions. */ + +static struct expression * +new_exp (int nargs, enum expression_operator op, + struct expression * const *args) +{ + int i; + struct expression *newp; + + /* If any of the argument could not be malloc'ed, just return NULL. */ + for (i = nargs - 1; i >= 0; i--) + if (args[i] == NULL) + goto fail; + + /* Allocate a new expression. */ + newp = (struct expression *) malloc (sizeof (*newp)); + if (newp != NULL) + { + newp->nargs = nargs; + newp->operation = op; + for (i = nargs - 1; i >= 0; i--) + newp->val.args[i] = args[i]; + return newp; + } + + fail: + for (i = nargs - 1; i >= 0; i--) + FREE_EXPRESSION (args[i]); + + return NULL; +} + +static inline struct expression * +new_exp_0 (enum expression_operator op) +{ + return new_exp (0, op, NULL); +} + +static inline struct expression * +new_exp_1 (enum expression_operator op, struct expression *right) +{ + struct expression *args[1]; + + args[0] = right; + return new_exp (1, op, args); +} + +static struct expression * +new_exp_2 (enum expression_operator op, struct expression *left, + struct expression *right) +{ + struct expression *args[2]; + + args[0] = left; + args[1] = right; + return new_exp (2, op, args); +} + +static inline struct expression * +new_exp_3 (enum expression_operator op, struct expression *bexp, + struct expression *tbranch, struct expression *fbranch) +{ + struct expression *args[3]; + + args[0] = bexp; + args[1] = tbranch; + args[2] = fbranch; + return new_exp (3, op, args); +} + + +/* Line 221 of yacc.c. */ +#line 265 "plural.c" + +#ifdef short +# undef short +#endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; +#endif + +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +typedef signed char yytype_int8; +#else +typedef short int yytype_int8; +#endif + +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(e) ((void) (e)) +#else +# define YYUSE(e) /* empty */ +#endif + +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) +#else +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int yyi) +#else +static int +YYID (yyi) + int yyi; +#endif +{ + return yyi; +} +#endif + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined _STDLIB_H \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss; + YYSTYPE yyvs; + }; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) + +#endif + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 9 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 54 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 16 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 3 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 13 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 27 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 262 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const yytype_uint8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 10, 2, 2, 2, 2, 5, 2, + 14, 15, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 12, 2, + 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 13, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 6, 7, + 8, 9, 11 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint8 yyprhs[] = +{ + 0, 0, 3, 5, 11, 15, 19, 23, 27, 31, + 35, 38, 40, 42 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int8 yyrhs[] = +{ + 17, 0, -1, 18, -1, 18, 3, 18, 12, 18, + -1, 18, 4, 18, -1, 18, 5, 18, -1, 18, + 6, 18, -1, 18, 7, 18, -1, 18, 8, 18, + -1, 18, 9, 18, -1, 10, 18, -1, 13, -1, + 11, -1, 14, 18, 15, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint8 yyrline[] = +{ + 0, 154, 154, 162, 166, 170, 174, 178, 182, 186, + 190, 194, 198, 203 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "'?'", "'|'", "'&'", "EQUOP2", "CMPOP2", + "ADDOP2", "MULOP2", "'!'", "NUMBER", "':'", "'n'", "'('", "')'", + "$accept", "start", "exp", 0 +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 63, 124, 38, 258, 259, 260, 261, + 33, 262, 58, 110, 40, 41 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 16, 17, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 1, 5, 3, 3, 3, 3, 3, 3, + 2, 1, 1, 3 +}; + +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint8 yydefact[] = +{ + 0, 0, 12, 11, 0, 0, 2, 10, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 13, 0, 4, + 5, 6, 7, 8, 9, 0, 3 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int8 yydefgoto[] = +{ + -1, 5, 6 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -10 +static const yytype_int8 yypact[] = +{ + -9, -9, -10, -10, -9, 8, 36, -10, 13, -10, + -9, -9, -9, -9, -9, -9, -9, -10, 26, 41, + 45, 18, -2, 14, -10, -9, 36 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int8 yypgoto[] = +{ + -10, -10, -1 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -1 +static const yytype_uint8 yytable[] = +{ + 7, 1, 2, 8, 3, 4, 15, 16, 9, 18, + 19, 20, 21, 22, 23, 24, 10, 11, 12, 13, + 14, 15, 16, 16, 26, 14, 15, 16, 17, 10, + 11, 12, 13, 14, 15, 16, 0, 0, 25, 10, + 11, 12, 13, 14, 15, 16, 12, 13, 14, 15, + 16, 13, 14, 15, 16 +}; + +static const yytype_int8 yycheck[] = +{ + 1, 10, 11, 4, 13, 14, 8, 9, 0, 10, + 11, 12, 13, 14, 15, 16, 3, 4, 5, 6, + 7, 8, 9, 9, 25, 7, 8, 9, 15, 3, + 4, 5, 6, 7, 8, 9, -1, -1, 12, 3, + 4, 5, 6, 7, 8, 9, 5, 6, 7, 8, + 9, 6, 7, 8, 9 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint8 yystos[] = +{ + 0, 10, 11, 13, 14, 17, 18, 18, 18, 0, + 3, 4, 5, 6, 7, 8, 9, 15, 18, 18, + 18, 18, 18, 18, 18, 12, 18 +}; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ + +#define YYFAIL goto yyerrlab + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + + +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (YYID (0)) +#endif + + +/* YY_LOCATION_PRINT -- Print the location on the stream. + This macro was not mandated originally: define only if we know + we won't break user code: when these are the locations we know. */ + +#ifndef YY_LOCATION_PRINT +# if YYLTYPE_IS_TRIVIAL +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (&yylval, YYLEX_PARAM) +#else +# define YYLEX yylex (&yylval) +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); +# endif + switch (yytype) + { + default: + break; + } +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +#else +static void +yy_stack_print (yybottom, yytop) + yytype_int16 *yybottom; + yytype_int16 *yytop; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, int yyrule) +#else +static void +yy_reduce_print (yyvsp, yyrule) + YYSTYPE *yyvsp; + int yyrule; +#endif +{ + int yynrhs = yyr2[yyrule]; + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + fprintf (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + fprintf (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule); \ +} while (YYID (0)) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static YYSIZE_T +yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static char * +yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into YYRESULT an error message about the unexpected token + YYCHAR while in state YYSTATE. Return the number of bytes copied, + including the terminating null byte. If YYRESULT is null, do not + copy anything; just return the number of bytes that would be + copied. As a special case, return 0 if an ordinary "syntax error" + message will do. Return YYSIZE_MAXIMUM if overflow occurs during + size calculation. */ +static YYSIZE_T +yysyntax_error (char *yyresult, int yystate, int yychar) +{ + int yyn = yypact[yystate]; + + if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) + return 0; + else + { + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; + +# if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +# endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } + + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + + if (yysize_overflow) + return YYSIZE_MAXIMUM; + + if (yyresult) + { + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + char *yyp = yyresult; + int yyi = 0; + while ((*yyp = *yyf) != '\0') + { + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } + } + } + return yysize; + } +} +#endif /* YYERROR_VERBOSE */ + + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +#else +static void +yydestruct (yymsg, yytype, yyvaluep) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; +#endif +{ + YYUSE (yyvaluep); + + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + + default: + break; + } +} + + +/* Prevent warnings from -Wmissing-prototypes. */ + +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (void); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + + + + + + +/*----------. +| yyparse. | +`----------*/ + +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void) +#else +int +yyparse () + +#endif +#endif +{ + /* The lookahead symbol. */ +int yychar; + +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; + + int yystate; + int yyn; + int yyresult; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Lookahead token as an internal (translated) token number. */ + int yytoken = 0; +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss = yyssa; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp; + + + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + YYSIZE_T yystacksize = YYINITDEPTH; + + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + + yyssp = yyss; + yyvsp = yyvs; + + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); + +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + if (yystate == YYFINAL) + YYACCEPT; + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + lookahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to lookahead token. */ + yyn = yypact[yystate]; + if (yyn == YYPACT_NINF) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the lookahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token. */ + yychar = YYEMPTY; + + yystate = yyn; + *++yyvsp = yylval; + + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 2: +/* Line 1269 of yacc.c. */ +#line 155 "plural.y" + { + if ((yyvsp[(1) - (1)].exp) == NULL) + YYABORT; + ((struct parse_args *) arg)->res = (yyvsp[(1) - (1)].exp); + } + break; + + case 3: +/* Line 1269 of yacc.c. */ +#line 163 "plural.y" + { + (yyval.exp) = new_exp_3 (qmop, (yyvsp[(1) - (5)].exp), (yyvsp[(3) - (5)].exp), (yyvsp[(5) - (5)].exp)); + } + break; + + case 4: +/* Line 1269 of yacc.c. */ +#line 167 "plural.y" + { + (yyval.exp) = new_exp_2 (lor, (yyvsp[(1) - (3)].exp), (yyvsp[(3) - (3)].exp)); + } + break; + + case 5: +/* Line 1269 of yacc.c. */ +#line 171 "plural.y" + { + (yyval.exp) = new_exp_2 (land, (yyvsp[(1) - (3)].exp), (yyvsp[(3) - (3)].exp)); + } + break; + + case 6: +/* Line 1269 of yacc.c. */ +#line 175 "plural.y" + { + (yyval.exp) = new_exp_2 ((yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].exp), (yyvsp[(3) - (3)].exp)); + } + break; + + case 7: +/* Line 1269 of yacc.c. */ +#line 179 "plural.y" + { + (yyval.exp) = new_exp_2 ((yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].exp), (yyvsp[(3) - (3)].exp)); + } + break; + + case 8: +/* Line 1269 of yacc.c. */ +#line 183 "plural.y" + { + (yyval.exp) = new_exp_2 ((yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].exp), (yyvsp[(3) - (3)].exp)); + } + break; + + case 9: +/* Line 1269 of yacc.c. */ +#line 187 "plural.y" + { + (yyval.exp) = new_exp_2 ((yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].exp), (yyvsp[(3) - (3)].exp)); + } + break; + + case 10: +/* Line 1269 of yacc.c. */ +#line 191 "plural.y" + { + (yyval.exp) = new_exp_1 (lnot, (yyvsp[(2) - (2)].exp)); + } + break; + + case 11: +/* Line 1269 of yacc.c. */ +#line 195 "plural.y" + { + (yyval.exp) = new_exp_0 (var); + } + break; + + case 12: +/* Line 1269 of yacc.c. */ +#line 199 "plural.y" + { + if (((yyval.exp) = new_exp_0 (num)) != NULL) + (yyval.exp)->val.num = (yyvsp[(1) - (1)].num); + } + break; + + case 13: +/* Line 1269 of yacc.c. */ +#line 204 "plural.y" + { + (yyval.exp) = (yyvsp[(2) - (3)].exp); + } + break; + + +/* Line 1269 of yacc.c. */ +#line 1572 "plural.c" + default: break; + } + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else + { + YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); + if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) + { + YYSIZE_T yyalloc = 2 * yysize; + if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) + yyalloc = YYSTACK_ALLOC_MAXIMUM; + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yyalloc); + if (yymsg) + yymsg_alloc = yyalloc; + else + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + } + } + + if (0 < yysize && yysize <= yymsg_alloc) + { + (void) yysyntax_error (yymsg, yystate, yychar); + yyerror (yymsg); + } + else + { + yyerror (YY_("syntax error")); + if (yysize != 0) + goto yyexhaustedlab; + } + } +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse lookahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse lookahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + *++yyvsp = yylval; + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#ifndef yyoverflow +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); +} + + +/* Line 1486 of yacc.c. */ +#line 209 "plural.y" + + +void +internal_function +FREE_EXPRESSION (struct expression *exp) +{ + if (exp == NULL) + return; + + /* Handle the recursive case. */ + switch (exp->nargs) + { + case 3: + FREE_EXPRESSION (exp->val.args[2]); + /* FALLTHROUGH */ + case 2: + FREE_EXPRESSION (exp->val.args[1]); + /* FALLTHROUGH */ + case 1: + FREE_EXPRESSION (exp->val.args[0]); + /* FALLTHROUGH */ + default: + break; + } + + free (exp); +} + + +static int +yylex (YYSTYPE *lval, const char **pexp) +{ + const char *exp = *pexp; + int result; + + while (1) + { + if (exp[0] == '\0') + { + *pexp = exp; + return YYEOF; + } + + if (exp[0] != ' ' && exp[0] != '\t') + break; + + ++exp; + } + + result = *exp++; + switch (result) + { + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + { + unsigned long int n = result - '0'; + while (exp[0] >= '0' && exp[0] <= '9') + { + n *= 10; + n += exp[0] - '0'; + ++exp; + } + lval->num = n; + result = NUMBER; + } + break; + + case '=': + if (exp[0] == '=') + { + ++exp; + lval->op = equal; + result = EQUOP2; + } + else + result = YYERRCODE; + break; + + case '!': + if (exp[0] == '=') + { + ++exp; + lval->op = not_equal; + result = EQUOP2; + } + break; + + case '&': + case '|': + if (exp[0] == result) + ++exp; + else + result = YYERRCODE; + break; + + case '<': + if (exp[0] == '=') + { + ++exp; + lval->op = less_or_equal; + } + else + lval->op = less_than; + result = CMPOP2; + break; + + case '>': + if (exp[0] == '=') + { + ++exp; + lval->op = greater_or_equal; + } + else + lval->op = greater_than; + result = CMPOP2; + break; + + case '*': + lval->op = mult; + result = MULOP2; + break; + + case '/': + lval->op = divide; + result = MULOP2; + break; + + case '%': + lval->op = module; + result = MULOP2; + break; + + case '+': + lval->op = plus; + result = ADDOP2; + break; + + case '-': + lval->op = minus; + result = ADDOP2; + break; + + case 'n': + case '?': + case ':': + case '(': + case ')': + /* Nothing, just return the character. */ + break; + + case ';': + case '\n': + case '\0': + /* Be safe and let the user call this function again. */ + --exp; + result = YYEOF; + break; + + default: + result = YYERRCODE; +#if YYDEBUG != 0 + --exp; +#endif + break; + } + + *pexp = exp; + + return result; +} + + +static void +yyerror (const char *str) +{ + /* Do nothing. We don't print error messages here. */ +} + diff --git a/xchat-2.8.8/intl/plural.y b/xchat-2.8.8/intl/plural.y new file mode 100644 index 0000000..ec36a09 --- /dev/null +++ b/xchat-2.8.8/intl/plural.y @@ -0,0 +1,385 @@ +%{ +/* Expression parsing for plural form selection. + Copyright (C) 2000-2001, 2003, 2005-2006 Free Software Foundation, Inc. + Written by Ulrich Drepper , 2000. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* For bison < 2.0, the bison generated parser uses alloca. AIX 3 forces us + to put this declaration at the beginning of the file. The declaration in + bison's skeleton file comes too late. This must come before + because may include arbitrary system headers. + This can go away once the AM_INTL_SUBDIR macro requires bison >= 2.0. */ +#if defined _AIX && !defined __GNUC__ + #pragma alloca +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include "plural-exp.h" + +/* The main function generated by the parser is called __gettextparse, + but we want it to be called PLURAL_PARSE. */ +#ifndef _LIBC +# define __gettextparse PLURAL_PARSE +#endif + +#define YYLEX_PARAM &((struct parse_args *) arg)->cp +#define YYPARSE_PARAM arg +%} +%pure_parser +%expect 7 + +%union { + unsigned long int num; + enum expression_operator op; + struct expression *exp; +} + +%{ +/* Prototypes for local functions. */ +static int yylex (YYSTYPE *lval, const char **pexp); +static void yyerror (const char *str); + +/* Allocation of expressions. */ + +static struct expression * +new_exp (int nargs, enum expression_operator op, + struct expression * const *args) +{ + int i; + struct expression *newp; + + /* If any of the argument could not be malloc'ed, just return NULL. */ + for (i = nargs - 1; i >= 0; i--) + if (args[i] == NULL) + goto fail; + + /* Allocate a new expression. */ + newp = (struct expression *) malloc (sizeof (*newp)); + if (newp != NULL) + { + newp->nargs = nargs; + newp->operation = op; + for (i = nargs - 1; i >= 0; i--) + newp->val.args[i] = args[i]; + return newp; + } + + fail: + for (i = nargs - 1; i >= 0; i--) + FREE_EXPRESSION (args[i]); + + return NULL; +} + +static inline struct expression * +new_exp_0 (enum expression_operator op) +{ + return new_exp (0, op, NULL); +} + +static inline struct expression * +new_exp_1 (enum expression_operator op, struct expression *right) +{ + struct expression *args[1]; + + args[0] = right; + return new_exp (1, op, args); +} + +static struct expression * +new_exp_2 (enum expression_operator op, struct expression *left, + struct expression *right) +{ + struct expression *args[2]; + + args[0] = left; + args[1] = right; + return new_exp (2, op, args); +} + +static inline struct expression * +new_exp_3 (enum expression_operator op, struct expression *bexp, + struct expression *tbranch, struct expression *fbranch) +{ + struct expression *args[3]; + + args[0] = bexp; + args[1] = tbranch; + args[2] = fbranch; + return new_exp (3, op, args); +} + +%} + +/* This declares that all operators have the same associativity and the + precedence order as in C. See [Harbison, Steele: C, A Reference Manual]. + There is no unary minus and no bitwise operators. + Operators with the same syntactic behaviour have been merged into a single + token, to save space in the array generated by bison. */ +%right '?' /* ? */ +%left '|' /* || */ +%left '&' /* && */ +%left EQUOP2 /* == != */ +%left CMPOP2 /* < > <= >= */ +%left ADDOP2 /* + - */ +%left MULOP2 /* * / % */ +%right '!' /* ! */ + +%token EQUOP2 CMPOP2 ADDOP2 MULOP2 +%token NUMBER +%type exp + +%% + +start: exp + { + if ($1 == NULL) + YYABORT; + ((struct parse_args *) arg)->res = $1; + } + ; + +exp: exp '?' exp ':' exp + { + $$ = new_exp_3 (qmop, $1, $3, $5); + } + | exp '|' exp + { + $$ = new_exp_2 (lor, $1, $3); + } + | exp '&' exp + { + $$ = new_exp_2 (land, $1, $3); + } + | exp EQUOP2 exp + { + $$ = new_exp_2 ($2, $1, $3); + } + | exp CMPOP2 exp + { + $$ = new_exp_2 ($2, $1, $3); + } + | exp ADDOP2 exp + { + $$ = new_exp_2 ($2, $1, $3); + } + | exp MULOP2 exp + { + $$ = new_exp_2 ($2, $1, $3); + } + | '!' exp + { + $$ = new_exp_1 (lnot, $2); + } + | 'n' + { + $$ = new_exp_0 (var); + } + | NUMBER + { + if (($$ = new_exp_0 (num)) != NULL) + $$->val.num = $1; + } + | '(' exp ')' + { + $$ = $2; + } + ; + +%% + +void +internal_function +FREE_EXPRESSION (struct expression *exp) +{ + if (exp == NULL) + return; + + /* Handle the recursive case. */ + switch (exp->nargs) + { + case 3: + FREE_EXPRESSION (exp->val.args[2]); + /* FALLTHROUGH */ + case 2: + FREE_EXPRESSION (exp->val.args[1]); + /* FALLTHROUGH */ + case 1: + FREE_EXPRESSION (exp->val.args[0]); + /* FALLTHROUGH */ + default: + break; + } + + free (exp); +} + + +static int +yylex (YYSTYPE *lval, const char **pexp) +{ + const char *exp = *pexp; + int result; + + while (1) + { + if (exp[0] == '\0') + { + *pexp = exp; + return YYEOF; + } + + if (exp[0] != ' ' && exp[0] != '\t') + break; + + ++exp; + } + + result = *exp++; + switch (result) + { + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + { + unsigned long int n = result - '0'; + while (exp[0] >= '0' && exp[0] <= '9') + { + n *= 10; + n += exp[0] - '0'; + ++exp; + } + lval->num = n; + result = NUMBER; + } + break; + + case '=': + if (exp[0] == '=') + { + ++exp; + lval->op = equal; + result = EQUOP2; + } + else + result = YYERRCODE; + break; + + case '!': + if (exp[0] == '=') + { + ++exp; + lval->op = not_equal; + result = EQUOP2; + } + break; + + case '&': + case '|': + if (exp[0] == result) + ++exp; + else + result = YYERRCODE; + break; + + case '<': + if (exp[0] == '=') + { + ++exp; + lval->op = less_or_equal; + } + else + lval->op = less_than; + result = CMPOP2; + break; + + case '>': + if (exp[0] == '=') + { + ++exp; + lval->op = greater_or_equal; + } + else + lval->op = greater_than; + result = CMPOP2; + break; + + case '*': + lval->op = mult; + result = MULOP2; + break; + + case '/': + lval->op = divide; + result = MULOP2; + break; + + case '%': + lval->op = module; + result = MULOP2; + break; + + case '+': + lval->op = plus; + result = ADDOP2; + break; + + case '-': + lval->op = minus; + result = ADDOP2; + break; + + case 'n': + case '?': + case ':': + case '(': + case ')': + /* Nothing, just return the character. */ + break; + + case ';': + case '\n': + case '\0': + /* Be safe and let the user call this function again. */ + --exp; + result = YYEOF; + break; + + default: + result = YYERRCODE; +#if YYDEBUG != 0 + --exp; +#endif + break; + } + + *pexp = exp; + + return result; +} + + +static void +yyerror (const char *str) +{ + /* Do nothing. We don't print error messages here. */ +} diff --git a/xchat-2.8.8/intl/printf-args.c b/xchat-2.8.8/intl/printf-args.c new file mode 100644 index 0000000..cbd437d --- /dev/null +++ b/xchat-2.8.8/intl/printf-args.c @@ -0,0 +1,188 @@ +/* Decomposed printf argument list. + Copyright (C) 1999, 2002-2003, 2005-2007 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* This file can be parametrized with the following macros: + ENABLE_UNISTDIO Set to 1 to enable the unistdio extensions. + PRINTF_FETCHARGS Name of the function to be defined. + STATIC Set to 'static' to declare the function static. */ + +#ifndef PRINTF_FETCHARGS +# include +#endif + +/* Specification. */ +#ifndef PRINTF_FETCHARGS +# include "printf-args.h" +#endif + +#ifdef STATIC +STATIC +#endif +int +PRINTF_FETCHARGS (va_list args, arguments *a) +{ + size_t i; + argument *ap; + + for (i = 0, ap = &a->arg[0]; i < a->count; i++, ap++) + switch (ap->type) + { + case TYPE_SCHAR: + ap->a.a_schar = va_arg (args, /*signed char*/ int); + break; + case TYPE_UCHAR: + ap->a.a_uchar = va_arg (args, /*unsigned char*/ int); + break; + case TYPE_SHORT: + ap->a.a_short = va_arg (args, /*short*/ int); + break; + case TYPE_USHORT: + ap->a.a_ushort = va_arg (args, /*unsigned short*/ int); + break; + case TYPE_INT: + ap->a.a_int = va_arg (args, int); + break; + case TYPE_UINT: + ap->a.a_uint = va_arg (args, unsigned int); + break; + case TYPE_LONGINT: + ap->a.a_longint = va_arg (args, long int); + break; + case TYPE_ULONGINT: + ap->a.a_ulongint = va_arg (args, unsigned long int); + break; +#if HAVE_LONG_LONG_INT + case TYPE_LONGLONGINT: + ap->a.a_longlongint = va_arg (args, long long int); + break; + case TYPE_ULONGLONGINT: + ap->a.a_ulonglongint = va_arg (args, unsigned long long int); + break; +#endif + case TYPE_DOUBLE: + ap->a.a_double = va_arg (args, double); + break; + case TYPE_LONGDOUBLE: + ap->a.a_longdouble = va_arg (args, long double); + break; + case TYPE_CHAR: + ap->a.a_char = va_arg (args, int); + break; +#if HAVE_WINT_T + case TYPE_WIDE_CHAR: + /* Although ISO C 99 7.24.1.(2) says that wint_t is "unchanged by + default argument promotions", this is not the case in mingw32, + where wint_t is 'unsigned short'. */ + ap->a.a_wide_char = + (sizeof (wint_t) < sizeof (int) + ? va_arg (args, int) + : va_arg (args, wint_t)); + break; +#endif + case TYPE_STRING: + ap->a.a_string = va_arg (args, const char *); + /* A null pointer is an invalid argument for "%s", but in practice + it occurs quite frequently in printf statements that produce + debug output. Use a fallback in this case. */ + if (ap->a.a_string == NULL) + ap->a.a_string = "(NULL)"; + break; +#if HAVE_WCHAR_T + case TYPE_WIDE_STRING: + ap->a.a_wide_string = va_arg (args, const wchar_t *); + /* A null pointer is an invalid argument for "%ls", but in practice + it occurs quite frequently in printf statements that produce + debug output. Use a fallback in this case. */ + if (ap->a.a_wide_string == NULL) + { + static const wchar_t wide_null_string[] = + { + (wchar_t)'(', + (wchar_t)'N', (wchar_t)'U', (wchar_t)'L', (wchar_t)'L', + (wchar_t)')', + (wchar_t)0 + }; + ap->a.a_wide_string = wide_null_string; + } + break; +#endif + case TYPE_POINTER: + ap->a.a_pointer = va_arg (args, void *); + break; + case TYPE_COUNT_SCHAR_POINTER: + ap->a.a_count_schar_pointer = va_arg (args, signed char *); + break; + case TYPE_COUNT_SHORT_POINTER: + ap->a.a_count_short_pointer = va_arg (args, short *); + break; + case TYPE_COUNT_INT_POINTER: + ap->a.a_count_int_pointer = va_arg (args, int *); + break; + case TYPE_COUNT_LONGINT_POINTER: + ap->a.a_count_longint_pointer = va_arg (args, long int *); + break; +#if HAVE_LONG_LONG_INT + case TYPE_COUNT_LONGLONGINT_POINTER: + ap->a.a_count_longlongint_pointer = va_arg (args, long long int *); + break; +#endif +#if ENABLE_UNISTDIO + /* The unistdio extensions. */ + case TYPE_U8_STRING: + ap->a.a_u8_string = va_arg (args, const uint8_t *); + /* A null pointer is an invalid argument for "%U", but in practice + it occurs quite frequently in printf statements that produce + debug output. Use a fallback in this case. */ + if (ap->a.a_u8_string == NULL) + { + static const uint8_t u8_null_string[] = + { '(', 'N', 'U', 'L', 'L', ')', 0 }; + ap->a.a_u8_string = u8_null_string; + } + break; + case TYPE_U16_STRING: + ap->a.a_u16_string = va_arg (args, const uint16_t *); + /* A null pointer is an invalid argument for "%lU", but in practice + it occurs quite frequently in printf statements that produce + debug output. Use a fallback in this case. */ + if (ap->a.a_u16_string == NULL) + { + static const uint16_t u16_null_string[] = + { '(', 'N', 'U', 'L', 'L', ')', 0 }; + ap->a.a_u16_string = u16_null_string; + } + break; + case TYPE_U32_STRING: + ap->a.a_u32_string = va_arg (args, const uint32_t *); + /* A null pointer is an invalid argument for "%llU", but in practice + it occurs quite frequently in printf statements that produce + debug output. Use a fallback in this case. */ + if (ap->a.a_u32_string == NULL) + { + static const uint32_t u32_null_string[] = + { '(', 'N', 'U', 'L', 'L', ')', 0 }; + ap->a.a_u32_string = u32_null_string; + } + break; +#endif + default: + /* Unknown type. */ + return -1; + } + return 0; +} diff --git a/xchat-2.8.8/intl/printf-args.h b/xchat-2.8.8/intl/printf-args.h new file mode 100644 index 0000000..cf89c3e --- /dev/null +++ b/xchat-2.8.8/intl/printf-args.h @@ -0,0 +1,155 @@ +/* Decomposed printf argument list. + Copyright (C) 1999, 2002-2003, 2006-2007 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _PRINTF_ARGS_H +#define _PRINTF_ARGS_H + +/* This file can be parametrized with the following macros: + ENABLE_UNISTDIO Set to 1 to enable the unistdio extensions. + PRINTF_FETCHARGS Name of the function to be declared. + STATIC Set to 'static' to declare the function static. */ + +/* Default parameters. */ +#ifndef PRINTF_FETCHARGS +# define PRINTF_FETCHARGS printf_fetchargs +#endif + +/* Get size_t. */ +#include + +/* Get wchar_t. */ +#if HAVE_WCHAR_T +# include +#endif + +/* Get wint_t. */ +#if HAVE_WINT_T +# include +#endif + +/* Get va_list. */ +#include + + +/* Argument types */ +typedef enum +{ + TYPE_NONE, + TYPE_SCHAR, + TYPE_UCHAR, + TYPE_SHORT, + TYPE_USHORT, + TYPE_INT, + TYPE_UINT, + TYPE_LONGINT, + TYPE_ULONGINT, +#if HAVE_LONG_LONG_INT + TYPE_LONGLONGINT, + TYPE_ULONGLONGINT, +#endif + TYPE_DOUBLE, + TYPE_LONGDOUBLE, + TYPE_CHAR, +#if HAVE_WINT_T + TYPE_WIDE_CHAR, +#endif + TYPE_STRING, +#if HAVE_WCHAR_T + TYPE_WIDE_STRING, +#endif + TYPE_POINTER, + TYPE_COUNT_SCHAR_POINTER, + TYPE_COUNT_SHORT_POINTER, + TYPE_COUNT_INT_POINTER, + TYPE_COUNT_LONGINT_POINTER +#if HAVE_LONG_LONG_INT +, TYPE_COUNT_LONGLONGINT_POINTER +#endif +#if ENABLE_UNISTDIO + /* The unistdio extensions. */ +, TYPE_U8_STRING +, TYPE_U16_STRING +, TYPE_U32_STRING +#endif +} arg_type; + +/* Polymorphic argument */ +typedef struct +{ + arg_type type; + union + { + signed char a_schar; + unsigned char a_uchar; + short a_short; + unsigned short a_ushort; + int a_int; + unsigned int a_uint; + long int a_longint; + unsigned long int a_ulongint; +#if HAVE_LONG_LONG_INT + long long int a_longlongint; + unsigned long long int a_ulonglongint; +#endif + float a_float; + double a_double; + long double a_longdouble; + int a_char; +#if HAVE_WINT_T + wint_t a_wide_char; +#endif + const char* a_string; +#if HAVE_WCHAR_T + const wchar_t* a_wide_string; +#endif + void* a_pointer; + signed char * a_count_schar_pointer; + short * a_count_short_pointer; + int * a_count_int_pointer; + long int * a_count_longint_pointer; +#if HAVE_LONG_LONG_INT + long long int * a_count_longlongint_pointer; +#endif +#if ENABLE_UNISTDIO + /* The unistdio extensions. */ + const uint8_t * a_u8_string; + const uint16_t * a_u16_string; + const uint32_t * a_u32_string; +#endif + } + a; +} +argument; + +typedef struct +{ + size_t count; + argument *arg; +} +arguments; + + +/* Fetch the arguments, putting them into a. */ +#ifdef STATIC +STATIC +#else +extern +#endif +int PRINTF_FETCHARGS (va_list args, arguments *a); + +#endif /* _PRINTF_ARGS_H */ diff --git a/xchat-2.8.8/intl/printf-parse.c b/xchat-2.8.8/intl/printf-parse.c new file mode 100644 index 0000000..6ed1cc3 --- /dev/null +++ b/xchat-2.8.8/intl/printf-parse.c @@ -0,0 +1,590 @@ +/* Formatted output to strings. + Copyright (C) 1999-2000, 2002-2003, 2006-2007 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* This file can be parametrized with the following macros: + CHAR_T The element type of the format string. + CHAR_T_ONLY_ASCII Set to 1 to enable verification that all characters + in the format string are ASCII. + DIRECTIVE Structure denoting a format directive. + Depends on CHAR_T. + DIRECTIVES Structure denoting the set of format directives of a + format string. Depends on CHAR_T. + PRINTF_PARSE Function that parses a format string. + Depends on CHAR_T. + STATIC Set to 'static' to declare the function static. + ENABLE_UNISTDIO Set to 1 to enable the unistdio extensions. */ + +#ifndef PRINTF_PARSE +# include +#endif + +/* Specification. */ +#ifndef PRINTF_PARSE +# include "printf-parse.h" +#endif + +/* Default parameters. */ +#ifndef PRINTF_PARSE +# define PRINTF_PARSE printf_parse +# define CHAR_T char +# define DIRECTIVE char_directive +# define DIRECTIVES char_directives +#endif + +/* Get size_t, NULL. */ +#include + +/* Get intmax_t. */ +#if defined IN_LIBINTL || defined IN_LIBASPRINTF +# if HAVE_STDINT_H_WITH_UINTMAX +# include +# endif +# if HAVE_INTTYPES_H_WITH_UINTMAX +# include +# endif +#else +# include +#endif + +/* malloc(), realloc(), free(). */ +#include + +/* errno. */ +#include + +/* Checked size_t computations. */ +#include "xsize.h" + +#if CHAR_T_ONLY_ASCII +/* c_isascii(). */ +# include "c-ctype.h" +#endif + +#ifdef STATIC +STATIC +#endif +int +PRINTF_PARSE (const CHAR_T *format, DIRECTIVES *d, arguments *a) +{ + const CHAR_T *cp = format; /* pointer into format */ + size_t arg_posn = 0; /* number of regular arguments consumed */ + size_t d_allocated; /* allocated elements of d->dir */ + size_t a_allocated; /* allocated elements of a->arg */ + size_t max_width_length = 0; + size_t max_precision_length = 0; + + d->count = 0; + d_allocated = 1; + d->dir = (DIRECTIVE *) malloc (d_allocated * sizeof (DIRECTIVE)); + if (d->dir == NULL) + /* Out of memory. */ + goto out_of_memory_1; + + a->count = 0; + a_allocated = 0; + a->arg = NULL; + +#define REGISTER_ARG(_index_,_type_) \ + { \ + size_t n = (_index_); \ + if (n >= a_allocated) \ + { \ + size_t memory_size; \ + argument *memory; \ + \ + a_allocated = xtimes (a_allocated, 2); \ + if (a_allocated <= n) \ + a_allocated = xsum (n, 1); \ + memory_size = xtimes (a_allocated, sizeof (argument)); \ + if (size_overflow_p (memory_size)) \ + /* Overflow, would lead to out of memory. */ \ + goto out_of_memory; \ + memory = (argument *) (a->arg \ + ? realloc (a->arg, memory_size) \ + : malloc (memory_size)); \ + if (memory == NULL) \ + /* Out of memory. */ \ + goto out_of_memory; \ + a->arg = memory; \ + } \ + while (a->count <= n) \ + a->arg[a->count++].type = TYPE_NONE; \ + if (a->arg[n].type == TYPE_NONE) \ + a->arg[n].type = (_type_); \ + else if (a->arg[n].type != (_type_)) \ + /* Ambiguous type for positional argument. */ \ + goto error; \ + } + + while (*cp != '\0') + { + CHAR_T c = *cp++; + if (c == '%') + { + size_t arg_index = ARG_NONE; + DIRECTIVE *dp = &d->dir[d->count]; /* pointer to next directive */ + + /* Initialize the next directive. */ + dp->dir_start = cp - 1; + dp->flags = 0; + dp->width_start = NULL; + dp->width_end = NULL; + dp->width_arg_index = ARG_NONE; + dp->precision_start = NULL; + dp->precision_end = NULL; + dp->precision_arg_index = ARG_NONE; + dp->arg_index = ARG_NONE; + + /* Test for positional argument. */ + if (*cp >= '0' && *cp <= '9') + { + const CHAR_T *np; + + for (np = cp; *np >= '0' && *np <= '9'; np++) + ; + if (*np == '$') + { + size_t n = 0; + + for (np = cp; *np >= '0' && *np <= '9'; np++) + n = xsum (xtimes (n, 10), *np - '0'); + if (n == 0) + /* Positional argument 0. */ + goto error; + if (size_overflow_p (n)) + /* n too large, would lead to out of memory later. */ + goto error; + arg_index = n - 1; + cp = np + 1; + } + } + + /* Read the flags. */ + for (;;) + { + if (*cp == '\'') + { + dp->flags |= FLAG_GROUP; + cp++; + } + else if (*cp == '-') + { + dp->flags |= FLAG_LEFT; + cp++; + } + else if (*cp == '+') + { + dp->flags |= FLAG_SHOWSIGN; + cp++; + } + else if (*cp == ' ') + { + dp->flags |= FLAG_SPACE; + cp++; + } + else if (*cp == '#') + { + dp->flags |= FLAG_ALT; + cp++; + } + else if (*cp == '0') + { + dp->flags |= FLAG_ZERO; + cp++; + } + else + break; + } + + /* Parse the field width. */ + if (*cp == '*') + { + dp->width_start = cp; + cp++; + dp->width_end = cp; + if (max_width_length < 1) + max_width_length = 1; + + /* Test for positional argument. */ + if (*cp >= '0' && *cp <= '9') + { + const CHAR_T *np; + + for (np = cp; *np >= '0' && *np <= '9'; np++) + ; + if (*np == '$') + { + size_t n = 0; + + for (np = cp; *np >= '0' && *np <= '9'; np++) + n = xsum (xtimes (n, 10), *np - '0'); + if (n == 0) + /* Positional argument 0. */ + goto error; + if (size_overflow_p (n)) + /* n too large, would lead to out of memory later. */ + goto error; + dp->width_arg_index = n - 1; + cp = np + 1; + } + } + if (dp->width_arg_index == ARG_NONE) + { + dp->width_arg_index = arg_posn++; + if (dp->width_arg_index == ARG_NONE) + /* arg_posn wrapped around. */ + goto error; + } + REGISTER_ARG (dp->width_arg_index, TYPE_INT); + } + else if (*cp >= '0' && *cp <= '9') + { + size_t width_length; + + dp->width_start = cp; + for (; *cp >= '0' && *cp <= '9'; cp++) + ; + dp->width_end = cp; + width_length = dp->width_end - dp->width_start; + if (max_width_length < width_length) + max_width_length = width_length; + } + + /* Parse the precision. */ + if (*cp == '.') + { + cp++; + if (*cp == '*') + { + dp->precision_start = cp - 1; + cp++; + dp->precision_end = cp; + if (max_precision_length < 2) + max_precision_length = 2; + + /* Test for positional argument. */ + if (*cp >= '0' && *cp <= '9') + { + const CHAR_T *np; + + for (np = cp; *np >= '0' && *np <= '9'; np++) + ; + if (*np == '$') + { + size_t n = 0; + + for (np = cp; *np >= '0' && *np <= '9'; np++) + n = xsum (xtimes (n, 10), *np - '0'); + if (n == 0) + /* Positional argument 0. */ + goto error; + if (size_overflow_p (n)) + /* n too large, would lead to out of memory + later. */ + goto error; + dp->precision_arg_index = n - 1; + cp = np + 1; + } + } + if (dp->precision_arg_index == ARG_NONE) + { + dp->precision_arg_index = arg_posn++; + if (dp->precision_arg_index == ARG_NONE) + /* arg_posn wrapped around. */ + goto error; + } + REGISTER_ARG (dp->precision_arg_index, TYPE_INT); + } + else + { + size_t precision_length; + + dp->precision_start = cp - 1; + for (; *cp >= '0' && *cp <= '9'; cp++) + ; + dp->precision_end = cp; + precision_length = dp->precision_end - dp->precision_start; + if (max_precision_length < precision_length) + max_precision_length = precision_length; + } + } + + { + arg_type type; + + /* Parse argument type/size specifiers. */ + { + int flags = 0; + + for (;;) + { + if (*cp == 'h') + { + flags |= (1 << (flags & 1)); + cp++; + } + else if (*cp == 'L') + { + flags |= 4; + cp++; + } + else if (*cp == 'l') + { + flags += 8; + cp++; + } + else if (*cp == 'j') + { + if (sizeof (intmax_t) > sizeof (long)) + { + /* intmax_t = long long */ + flags += 16; + } + else if (sizeof (intmax_t) > sizeof (int)) + { + /* intmax_t = long */ + flags += 8; + } + cp++; + } + else if (*cp == 'z' || *cp == 'Z') + { + /* 'z' is standardized in ISO C 99, but glibc uses 'Z' + because the warning facility in gcc-2.95.2 understands + only 'Z' (see gcc-2.95.2/gcc/c-common.c:1784). */ + if (sizeof (size_t) > sizeof (long)) + { + /* size_t = long long */ + flags += 16; + } + else if (sizeof (size_t) > sizeof (int)) + { + /* size_t = long */ + flags += 8; + } + cp++; + } + else if (*cp == 't') + { + if (sizeof (ptrdiff_t) > sizeof (long)) + { + /* ptrdiff_t = long long */ + flags += 16; + } + else if (sizeof (ptrdiff_t) > sizeof (int)) + { + /* ptrdiff_t = long */ + flags += 8; + } + cp++; + } + else + break; + } + + /* Read the conversion character. */ + c = *cp++; + switch (c) + { + case 'd': case 'i': +#if HAVE_LONG_LONG_INT + /* If 'long long' exists and is larger than 'long': */ + if (flags >= 16 || (flags & 4)) + type = TYPE_LONGLONGINT; + else +#endif + /* If 'long long' exists and is the same as 'long', we parse + "lld" into TYPE_LONGINT. */ + if (flags >= 8) + type = TYPE_LONGINT; + else if (flags & 2) + type = TYPE_SCHAR; + else if (flags & 1) + type = TYPE_SHORT; + else + type = TYPE_INT; + break; + case 'o': case 'u': case 'x': case 'X': +#if HAVE_LONG_LONG_INT + /* If 'long long' exists and is larger than 'long': */ + if (flags >= 16 || (flags & 4)) + type = TYPE_ULONGLONGINT; + else +#endif + /* If 'unsigned long long' exists and is the same as + 'unsigned long', we parse "llu" into TYPE_ULONGINT. */ + if (flags >= 8) + type = TYPE_ULONGINT; + else if (flags & 2) + type = TYPE_UCHAR; + else if (flags & 1) + type = TYPE_USHORT; + else + type = TYPE_UINT; + break; + case 'f': case 'F': case 'e': case 'E': case 'g': case 'G': + case 'a': case 'A': + if (flags >= 16 || (flags & 4)) + type = TYPE_LONGDOUBLE; + else + type = TYPE_DOUBLE; + break; + case 'c': + if (flags >= 8) +#if HAVE_WINT_T + type = TYPE_WIDE_CHAR; +#else + goto error; +#endif + else + type = TYPE_CHAR; + break; +#if HAVE_WINT_T + case 'C': + type = TYPE_WIDE_CHAR; + c = 'c'; + break; +#endif + case 's': + if (flags >= 8) +#if HAVE_WCHAR_T + type = TYPE_WIDE_STRING; +#else + goto error; +#endif + else + type = TYPE_STRING; + break; +#if HAVE_WCHAR_T + case 'S': + type = TYPE_WIDE_STRING; + c = 's'; + break; +#endif + case 'p': + type = TYPE_POINTER; + break; + case 'n': +#if HAVE_LONG_LONG_INT + /* If 'long long' exists and is larger than 'long': */ + if (flags >= 16 || (flags & 4)) + type = TYPE_COUNT_LONGLONGINT_POINTER; + else +#endif + /* If 'long long' exists and is the same as 'long', we parse + "lln" into TYPE_COUNT_LONGINT_POINTER. */ + if (flags >= 8) + type = TYPE_COUNT_LONGINT_POINTER; + else if (flags & 2) + type = TYPE_COUNT_SCHAR_POINTER; + else if (flags & 1) + type = TYPE_COUNT_SHORT_POINTER; + else + type = TYPE_COUNT_INT_POINTER; + break; +#if ENABLE_UNISTDIO + /* The unistdio extensions. */ + case 'U': + if (flags >= 16) + type = TYPE_U32_STRING; + else if (flags >= 8) + type = TYPE_U16_STRING; + else + type = TYPE_U8_STRING; + break; +#endif + case '%': + type = TYPE_NONE; + break; + default: + /* Unknown conversion character. */ + goto error; + } + } + + if (type != TYPE_NONE) + { + dp->arg_index = arg_index; + if (dp->arg_index == ARG_NONE) + { + dp->arg_index = arg_posn++; + if (dp->arg_index == ARG_NONE) + /* arg_posn wrapped around. */ + goto error; + } + REGISTER_ARG (dp->arg_index, type); + } + dp->conversion = c; + dp->dir_end = cp; + } + + d->count++; + if (d->count >= d_allocated) + { + size_t memory_size; + DIRECTIVE *memory; + + d_allocated = xtimes (d_allocated, 2); + memory_size = xtimes (d_allocated, sizeof (DIRECTIVE)); + if (size_overflow_p (memory_size)) + /* Overflow, would lead to out of memory. */ + goto out_of_memory; + memory = (DIRECTIVE *) realloc (d->dir, memory_size); + if (memory == NULL) + /* Out of memory. */ + goto out_of_memory; + d->dir = memory; + } + } +#if CHAR_T_ONLY_ASCII + else if (!c_isascii (c)) + { + /* Non-ASCII character. Not supported. */ + goto error; + } +#endif + } + d->dir[d->count].dir_start = cp; + + d->max_width_length = max_width_length; + d->max_precision_length = max_precision_length; + return 0; + +error: + if (a->arg) + free (a->arg); + if (d->dir) + free (d->dir); + errno = EINVAL; + return -1; + +out_of_memory: + if (a->arg) + free (a->arg); + if (d->dir) + free (d->dir); +out_of_memory_1: + errno = ENOMEM; + return -1; +} + +#undef PRINTF_PARSE +#undef DIRECTIVES +#undef DIRECTIVE +#undef CHAR_T_ONLY_ASCII +#undef CHAR_T diff --git a/xchat-2.8.8/intl/printf-parse.h b/xchat-2.8.8/intl/printf-parse.h new file mode 100644 index 0000000..e785338 --- /dev/null +++ b/xchat-2.8.8/intl/printf-parse.h @@ -0,0 +1,75 @@ +/* Parse printf format string. + Copyright (C) 1999, 2002-2003 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _PRINTF_PARSE_H +#define _PRINTF_PARSE_H + +#include "printf-args.h" + + +/* Flags */ +#define FLAG_GROUP 1 /* ' flag */ +#define FLAG_LEFT 2 /* - flag */ +#define FLAG_SHOWSIGN 4 /* + flag */ +#define FLAG_SPACE 8 /* space flag */ +#define FLAG_ALT 16 /* # flag */ +#define FLAG_ZERO 32 + +/* arg_index value indicating that no argument is consumed. */ +#define ARG_NONE (~(size_t)0) + +/* A parsed directive. */ +typedef struct +{ + const char* dir_start; + const char* dir_end; + int flags; + const char* width_start; + const char* width_end; + size_t width_arg_index; + const char* precision_start; + const char* precision_end; + size_t precision_arg_index; + char conversion; /* d i o u x X f e E g G c s p n U % but not C S */ + size_t arg_index; +} +char_directive; + +/* A parsed format string. */ +typedef struct +{ + size_t count; + char_directive *dir; + size_t max_width_length; + size_t max_precision_length; +} +char_directives; + + +/* Parses the format string. Fills in the number N of directives, and fills + in directives[0], ..., directives[N-1], and sets directives[N].dir_start + to the end of the format string. Also fills in the arg_type fields of the + arguments and the needed count of arguments. */ +#ifdef STATIC +STATIC +#else +extern +#endif +int printf_parse (const char *format, char_directives *d, arguments *a); + +#endif /* _PRINTF_PARSE_H */ diff --git a/xchat-2.8.8/intl/printf.c b/xchat-2.8.8/intl/printf.c new file mode 100644 index 0000000..0088e51 --- /dev/null +++ b/xchat-2.8.8/intl/printf.c @@ -0,0 +1,427 @@ +/* Formatted output to strings, using POSIX/XSI format strings with positions. + Copyright (C) 2003, 2006-2007 Free Software Foundation, Inc. + Written by Bruno Haible , 2003. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef __GNUC__ +# define alloca __builtin_alloca +# define HAVE_ALLOCA 1 +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# if defined HAVE_ALLOCA_H || defined _LIBC +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca +char *alloca (); +# endif +# endif +# endif +# endif +#endif + +#include + +#if !HAVE_POSIX_PRINTF + +#include +#include +#include +#include + +/* Some systems, like OSF/1 4.0 and Woe32, don't have EOVERFLOW. */ +#ifndef EOVERFLOW +# define EOVERFLOW E2BIG +#endif + +/* When building a DLL, we must export some functions. Note that because + the functions are only defined for binary backward compatibility, we + don't need to use __declspec(dllimport) in any case. */ +#if defined _MSC_VER && BUILDING_DLL +# define DLL_EXPORTED __declspec(dllexport) +#else +# define DLL_EXPORTED +#endif + +#define STATIC static + +/* This needs to be consistent with libgnuintl.h.in. */ +#if defined __NetBSD__ || defined __BEOS__ || defined __CYGWIN__ || defined __MINGW32__ +/* Don't break __attribute__((format(printf,M,N))). + This redefinition is only possible because the libc in NetBSD, Cygwin, + mingw does not have a function __printf__. */ +# define libintl_printf __printf__ +#endif + +/* Define auxiliary functions declared in "printf-args.h". */ +#include "printf-args.c" + +/* Define auxiliary functions declared in "printf-parse.h". */ +#include "printf-parse.c" + +/* Define functions declared in "vasnprintf.h". */ +#define vasnprintf libintl_vasnprintf +#include "vasnprintf.c" +#if 0 /* not needed */ +#define asnprintf libintl_asnprintf +#include "asnprintf.c" +#endif + +DLL_EXPORTED +int +libintl_vfprintf (FILE *stream, const char *format, va_list args) +{ + if (strchr (format, '$') == NULL) + return vfprintf (stream, format, args); + else + { + size_t length; + char *result = libintl_vasnprintf (NULL, &length, format, args); + int retval = -1; + if (result != NULL) + { + size_t written = fwrite (result, 1, length, stream); + free (result); + if (written == length) + { + if (length > INT_MAX) + errno = EOVERFLOW; + else + retval = length; + } + } + return retval; + } +} + +DLL_EXPORTED +int +libintl_fprintf (FILE *stream, const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libintl_vfprintf (stream, format, args); + va_end (args); + return retval; +} + +DLL_EXPORTED +int +libintl_vprintf (const char *format, va_list args) +{ + return libintl_vfprintf (stdout, format, args); +} + +DLL_EXPORTED +int +libintl_printf (const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libintl_vprintf (format, args); + va_end (args); + return retval; +} + +DLL_EXPORTED +int +libintl_vsprintf (char *resultbuf, const char *format, va_list args) +{ + if (strchr (format, '$') == NULL) + return vsprintf (resultbuf, format, args); + else + { + size_t length = (size_t) ~0 / (4 * sizeof (char)); + char *result = libintl_vasnprintf (resultbuf, &length, format, args); + if (result != resultbuf) + { + free (result); + return -1; + } + if (length > INT_MAX) + { + errno = EOVERFLOW; + return -1; + } + else + return length; + } +} + +DLL_EXPORTED +int +libintl_sprintf (char *resultbuf, const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libintl_vsprintf (resultbuf, format, args); + va_end (args); + return retval; +} + +#if HAVE_SNPRINTF + +# if HAVE_DECL__SNPRINTF + /* Windows. */ +# define system_vsnprintf _vsnprintf +# else + /* Unix. */ +# define system_vsnprintf vsnprintf +# endif + +DLL_EXPORTED +int +libintl_vsnprintf (char *resultbuf, size_t length, const char *format, va_list args) +{ + if (strchr (format, '$') == NULL) + return system_vsnprintf (resultbuf, length, format, args); + else + { + size_t maxlength = length; + char *result = libintl_vasnprintf (resultbuf, &length, format, args); + if (result != resultbuf) + { + if (maxlength > 0) + { + size_t pruned_length = + (length < maxlength ? length : maxlength - 1); + memcpy (resultbuf, result, pruned_length); + resultbuf[pruned_length] = '\0'; + } + free (result); + } + if (length > INT_MAX) + { + errno = EOVERFLOW; + return -1; + } + else + return length; + } +} + +DLL_EXPORTED +int +libintl_snprintf (char *resultbuf, size_t length, const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libintl_vsnprintf (resultbuf, length, format, args); + va_end (args); + return retval; +} + +#endif + +#if HAVE_ASPRINTF + +DLL_EXPORTED +int +libintl_vasprintf (char **resultp, const char *format, va_list args) +{ + size_t length; + char *result = libintl_vasnprintf (NULL, &length, format, args); + if (result == NULL) + return -1; + if (length > INT_MAX) + { + free (result); + errno = EOVERFLOW; + return -1; + } + *resultp = result; + return length; +} + +DLL_EXPORTED +int +libintl_asprintf (char **resultp, const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libintl_vasprintf (resultp, format, args); + va_end (args); + return retval; +} + +#endif + +#if HAVE_FWPRINTF + +#include + +#define WIDE_CHAR_VERSION 1 + +#include "wprintf-parse.h" +/* Define auxiliary functions declared in "wprintf-parse.h". */ +#define CHAR_T wchar_t +#define DIRECTIVE wchar_t_directive +#define DIRECTIVES wchar_t_directives +#define PRINTF_PARSE wprintf_parse +#include "printf-parse.c" + +/* Define functions declared in "vasnprintf.h". */ +#define vasnwprintf libintl_vasnwprintf +#include "vasnprintf.c" +#if 0 /* not needed */ +#define asnwprintf libintl_asnwprintf +#include "asnprintf.c" +#endif + +# if HAVE_DECL__SNWPRINTF + /* Windows. */ +# define system_vswprintf _vsnwprintf +# else + /* Unix. */ +# define system_vswprintf vswprintf +# endif + +DLL_EXPORTED +int +libintl_vfwprintf (FILE *stream, const wchar_t *format, va_list args) +{ + if (wcschr (format, '$') == NULL) + return vfwprintf (stream, format, args); + else + { + size_t length; + wchar_t *result = libintl_vasnwprintf (NULL, &length, format, args); + int retval = -1; + if (result != NULL) + { + size_t i; + for (i = 0; i < length; i++) + if (fputwc (result[i], stream) == WEOF) + break; + free (result); + if (i == length) + { + if (length > INT_MAX) + errno = EOVERFLOW; + else + retval = length; + } + } + return retval; + } +} + +DLL_EXPORTED +int +libintl_fwprintf (FILE *stream, const wchar_t *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libintl_vfwprintf (stream, format, args); + va_end (args); + return retval; +} + +DLL_EXPORTED +int +libintl_vwprintf (const wchar_t *format, va_list args) +{ + return libintl_vfwprintf (stdout, format, args); +} + +DLL_EXPORTED +int +libintl_wprintf (const wchar_t *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libintl_vwprintf (format, args); + va_end (args); + return retval; +} + +DLL_EXPORTED +int +libintl_vswprintf (wchar_t *resultbuf, size_t length, const wchar_t *format, va_list args) +{ + if (wcschr (format, '$') == NULL) + return system_vswprintf (resultbuf, length, format, args); + else + { + size_t maxlength = length; + wchar_t *result = libintl_vasnwprintf (resultbuf, &length, format, args); + if (result != resultbuf) + { + if (maxlength > 0) + { + size_t pruned_length = + (length < maxlength ? length : maxlength - 1); + memcpy (resultbuf, result, pruned_length * sizeof (wchar_t)); + resultbuf[pruned_length] = 0; + } + free (result); + /* Unlike vsnprintf, which has to return the number of character that + would have been produced if the resultbuf had been sufficiently + large, the vswprintf function has to return a negative value if + the resultbuf was not sufficiently large. */ + if (length >= maxlength) + return -1; + } + if (length > INT_MAX) + { + errno = EOVERFLOW; + return -1; + } + else + return length; + } +} + +DLL_EXPORTED +int +libintl_swprintf (wchar_t *resultbuf, size_t length, const wchar_t *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libintl_vswprintf (resultbuf, length, format, args); + va_end (args); + return retval; +} + +#endif + +#endif diff --git a/xchat-2.8.8/intl/ref-add.sin b/xchat-2.8.8/intl/ref-add.sin new file mode 100644 index 0000000..3678c28 --- /dev/null +++ b/xchat-2.8.8/intl/ref-add.sin @@ -0,0 +1,31 @@ +# Add this package to a list of references stored in a text file. +# +# Copyright (C) 2000 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU Library General Public License as published +# by the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program 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 +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +# USA. +# +# Written by Bruno Haible . +# +/^# Packages using this file: / { + s/# Packages using this file:// + ta + :a + s/ @PACKAGE@ / @PACKAGE@ / + tb + s/ $/ @PACKAGE@ / + :b + s/^/# Packages using this file:/ +} diff --git a/xchat-2.8.8/intl/ref-del.sin b/xchat-2.8.8/intl/ref-del.sin new file mode 100644 index 0000000..0c12d8e --- /dev/null +++ b/xchat-2.8.8/intl/ref-del.sin @@ -0,0 +1,26 @@ +# Remove this package from a list of references stored in a text file. +# +# Copyright (C) 2000 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU Library General Public License as published +# by the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program 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 +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +# USA. +# +# Written by Bruno Haible . +# +/^# Packages using this file: / { + s/# Packages using this file:// + s/ @PACKAGE@ / / + s/^/# Packages using this file:/ +} diff --git a/xchat-2.8.8/intl/relocatable.c b/xchat-2.8.8/intl/relocatable.c new file mode 100644 index 0000000..5e1dde6 --- /dev/null +++ b/xchat-2.8.8/intl/relocatable.c @@ -0,0 +1,468 @@ +/* Provide relocatable packages. + Copyright (C) 2003-2006 Free Software Foundation, Inc. + Written by Bruno Haible , 2003. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + + +/* Tell glibc's to provide a prototype for getline(). + This must come before because may include + , and once has been included, it's too late. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#include + +/* Specification. */ +#include "relocatable.h" + +#if ENABLE_RELOCATABLE + +#include +#include +#include +#include + +#ifdef NO_XMALLOC +# define xmalloc malloc +#else +# include "xalloc.h" +#endif + +#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ +# define WIN32_LEAN_AND_MEAN +# include +#endif + +#if DEPENDS_ON_LIBCHARSET +# include +#endif +#if DEPENDS_ON_LIBICONV && HAVE_ICONV +# include +#endif +#if DEPENDS_ON_LIBINTL && ENABLE_NLS +# include +#endif + +/* Faked cheap 'bool'. */ +#undef bool +#undef false +#undef true +#define bool int +#define false 0 +#define true 1 + +/* Pathname support. + ISSLASH(C) tests whether C is a directory separator character. + IS_PATH_WITH_DIR(P) tests whether P contains a directory specification. + */ +#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__ + /* Win32, Cygwin, OS/2, DOS */ +# define ISSLASH(C) ((C) == '/' || (C) == '\\') +# define HAS_DEVICE(P) \ + ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \ + && (P)[1] == ':') +# define IS_PATH_WITH_DIR(P) \ + (strchr (P, '/') != NULL || strchr (P, '\\') != NULL || HAS_DEVICE (P)) +# define FILE_SYSTEM_PREFIX_LEN(P) (HAS_DEVICE (P) ? 2 : 0) +#else + /* Unix */ +# define ISSLASH(C) ((C) == '/') +# define IS_PATH_WITH_DIR(P) (strchr (P, '/') != NULL) +# define FILE_SYSTEM_PREFIX_LEN(P) 0 +#endif + +/* Original installation prefix. */ +static char *orig_prefix; +static size_t orig_prefix_len; +/* Current installation prefix. */ +static char *curr_prefix; +static size_t curr_prefix_len; +/* These prefixes do not end in a slash. Anything that will be concatenated + to them must start with a slash. */ + +/* Sets the original and the current installation prefix of this module. + Relocation simply replaces a pathname starting with the original prefix + by the corresponding pathname with the current prefix instead. Both + prefixes should be directory names without trailing slash (i.e. use "" + instead of "/"). */ +static void +set_this_relocation_prefix (const char *orig_prefix_arg, + const char *curr_prefix_arg) +{ + if (orig_prefix_arg != NULL && curr_prefix_arg != NULL + /* Optimization: if orig_prefix and curr_prefix are equal, the + relocation is a nop. */ + && strcmp (orig_prefix_arg, curr_prefix_arg) != 0) + { + /* Duplicate the argument strings. */ + char *memory; + + orig_prefix_len = strlen (orig_prefix_arg); + curr_prefix_len = strlen (curr_prefix_arg); + memory = (char *) xmalloc (orig_prefix_len + 1 + curr_prefix_len + 1); +#ifdef NO_XMALLOC + if (memory != NULL) +#endif + { + memcpy (memory, orig_prefix_arg, orig_prefix_len + 1); + orig_prefix = memory; + memory += orig_prefix_len + 1; + memcpy (memory, curr_prefix_arg, curr_prefix_len + 1); + curr_prefix = memory; + return; + } + } + orig_prefix = NULL; + curr_prefix = NULL; + /* Don't worry about wasted memory here - this function is usually only + called once. */ +} + +/* Sets the original and the current installation prefix of the package. + Relocation simply replaces a pathname starting with the original prefix + by the corresponding pathname with the current prefix instead. Both + prefixes should be directory names without trailing slash (i.e. use "" + instead of "/"). */ +void +set_relocation_prefix (const char *orig_prefix_arg, const char *curr_prefix_arg) +{ + set_this_relocation_prefix (orig_prefix_arg, curr_prefix_arg); + + /* Now notify all dependent libraries. */ +#if DEPENDS_ON_LIBCHARSET + libcharset_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg); +#endif +#if DEPENDS_ON_LIBICONV && HAVE_ICONV && _LIBICONV_VERSION >= 0x0109 + libiconv_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg); +#endif +#if DEPENDS_ON_LIBINTL && ENABLE_NLS && defined libintl_set_relocation_prefix + libintl_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg); +#endif +} + +#if !defined IN_LIBRARY || (defined PIC && defined INSTALLDIR) + +/* Convenience function: + Computes the current installation prefix, based on the original + installation prefix, the original installation directory of a particular + file, and the current pathname of this file. Returns NULL upon failure. */ +#ifdef IN_LIBRARY +#define compute_curr_prefix local_compute_curr_prefix +static +#endif +const char * +compute_curr_prefix (const char *orig_installprefix, + const char *orig_installdir, + const char *curr_pathname) +{ + const char *curr_installdir; + const char *rel_installdir; + + if (curr_pathname == NULL) + return NULL; + + /* Determine the relative installation directory, relative to the prefix. + This is simply the difference between orig_installprefix and + orig_installdir. */ + if (strncmp (orig_installprefix, orig_installdir, strlen (orig_installprefix)) + != 0) + /* Shouldn't happen - nothing should be installed outside $(prefix). */ + return NULL; + rel_installdir = orig_installdir + strlen (orig_installprefix); + + /* Determine the current installation directory. */ + { + const char *p_base = curr_pathname + FILE_SYSTEM_PREFIX_LEN (curr_pathname); + const char *p = curr_pathname + strlen (curr_pathname); + char *q; + + while (p > p_base) + { + p--; + if (ISSLASH (*p)) + break; + } + + q = (char *) xmalloc (p - curr_pathname + 1); +#ifdef NO_XMALLOC + if (q == NULL) + return NULL; +#endif + memcpy (q, curr_pathname, p - curr_pathname); + q[p - curr_pathname] = '\0'; + curr_installdir = q; + } + + /* Compute the current installation prefix by removing the trailing + rel_installdir from it. */ + { + const char *rp = rel_installdir + strlen (rel_installdir); + const char *cp = curr_installdir + strlen (curr_installdir); + const char *cp_base = + curr_installdir + FILE_SYSTEM_PREFIX_LEN (curr_installdir); + + while (rp > rel_installdir && cp > cp_base) + { + bool same = false; + const char *rpi = rp; + const char *cpi = cp; + + while (rpi > rel_installdir && cpi > cp_base) + { + rpi--; + cpi--; + if (ISSLASH (*rpi) || ISSLASH (*cpi)) + { + if (ISSLASH (*rpi) && ISSLASH (*cpi)) + same = true; + break; + } + /* Do case-insensitive comparison if the filesystem is always or + often case-insensitive. It's better to accept the comparison + if the difference is only in case, rather than to fail. */ +#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__ + /* Win32, Cygwin, OS/2, DOS - case insignificant filesystem */ + if ((*rpi >= 'a' && *rpi <= 'z' ? *rpi - 'a' + 'A' : *rpi) + != (*cpi >= 'a' && *cpi <= 'z' ? *cpi - 'a' + 'A' : *cpi)) + break; +#else + if (*rpi != *cpi) + break; +#endif + } + if (!same) + break; + /* The last pathname component was the same. opi and cpi now point + to the slash before it. */ + rp = rpi; + cp = cpi; + } + + if (rp > rel_installdir) + /* Unexpected: The curr_installdir does not end with rel_installdir. */ + return NULL; + + { + size_t curr_prefix_len = cp - curr_installdir; + char *curr_prefix; + + curr_prefix = (char *) xmalloc (curr_prefix_len + 1); +#ifdef NO_XMALLOC + if (curr_prefix == NULL) + return NULL; +#endif + memcpy (curr_prefix, curr_installdir, curr_prefix_len); + curr_prefix[curr_prefix_len] = '\0'; + + return curr_prefix; + } + } +} + +#endif /* !IN_LIBRARY || PIC */ + +#if defined PIC && defined INSTALLDIR + +/* Full pathname of shared library, or NULL. */ +static char *shared_library_fullname; + +#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ + +/* Determine the full pathname of the shared library when it is loaded. */ + +BOOL WINAPI +DllMain (HINSTANCE module_handle, DWORD event, LPVOID reserved) +{ + (void) reserved; + + if (event == DLL_PROCESS_ATTACH) + { + /* The DLL is being loaded into an application's address range. */ + static char location[MAX_PATH]; + + if (!GetModuleFileName (module_handle, location, sizeof (location))) + /* Shouldn't happen. */ + return FALSE; + + if (!IS_PATH_WITH_DIR (location)) + /* Shouldn't happen. */ + return FALSE; + + { +#if defined __CYGWIN__ + /* On Cygwin, we need to convert paths coming from Win32 system calls + to the Unix-like slashified notation. */ + static char location_as_posix_path[2 * MAX_PATH]; + /* There's no error return defined for cygwin_conv_to_posix_path. + See cygwin-api/func-cygwin-conv-to-posix-path.html. + Does it overflow the buffer of expected size MAX_PATH or does it + truncate the path? I don't know. Let's catch both. */ + cygwin_conv_to_posix_path (location, location_as_posix_path); + location_as_posix_path[MAX_PATH - 1] = '\0'; + if (strlen (location_as_posix_path) >= MAX_PATH - 1) + /* A sign of buffer overflow or path truncation. */ + return FALSE; + shared_library_fullname = strdup (location_as_posix_path); +#else + shared_library_fullname = strdup (location); +#endif + } + } + + return TRUE; +} + +#else /* Unix except Cygwin */ + +static void +find_shared_library_fullname () +{ +#if defined __linux__ && __GLIBC__ >= 2 + /* Linux has /proc/self/maps. glibc 2 has the getline() function. */ + FILE *fp; + + /* Open the current process' maps file. It describes one VMA per line. */ + fp = fopen ("/proc/self/maps", "r"); + if (fp) + { + unsigned long address = (unsigned long) &find_shared_library_fullname; + for (;;) + { + unsigned long start, end; + int c; + + if (fscanf (fp, "%lx-%lx", &start, &end) != 2) + break; + if (address >= start && address <= end - 1) + { + /* Found it. Now see if this line contains a filename. */ + while (c = getc (fp), c != EOF && c != '\n' && c != '/') + continue; + if (c == '/') + { + size_t size; + int len; + + ungetc (c, fp); + shared_library_fullname = NULL; size = 0; + len = getline (&shared_library_fullname, &size, fp); + if (len >= 0) + { + /* Success: filled shared_library_fullname. */ + if (len > 0 && shared_library_fullname[len - 1] == '\n') + shared_library_fullname[len - 1] = '\0'; + } + } + break; + } + while (c = getc (fp), c != EOF && c != '\n') + continue; + } + fclose (fp); + } +#endif +} + +#endif /* (WIN32 or Cygwin) / (Unix except Cygwin) */ + +/* Return the full pathname of the current shared library. + Return NULL if unknown. + Guaranteed to work only on Linux, Cygwin and Woe32. */ +static char * +get_shared_library_fullname () +{ +#if !(defined _WIN32 || defined __WIN32__ || defined __CYGWIN__) + static bool tried_find_shared_library_fullname; + if (!tried_find_shared_library_fullname) + { + find_shared_library_fullname (); + tried_find_shared_library_fullname = true; + } +#endif + return shared_library_fullname; +} + +#endif /* PIC */ + +/* Returns the pathname, relocated according to the current installation + directory. */ +const char * +relocate (const char *pathname) +{ +#if defined PIC && defined INSTALLDIR + static int initialized; + + /* Initialization code for a shared library. */ + if (!initialized) + { + /* At this point, orig_prefix and curr_prefix likely have already been + set through the main program's set_program_name_and_installdir + function. This is sufficient in the case that the library has + initially been installed in the same orig_prefix. But we can do + better, to also cover the cases that 1. it has been installed + in a different prefix before being moved to orig_prefix and (later) + to curr_prefix, 2. unlike the program, it has not moved away from + orig_prefix. */ + const char *orig_installprefix = INSTALLPREFIX; + const char *orig_installdir = INSTALLDIR; + const char *curr_prefix_better; + + curr_prefix_better = + compute_curr_prefix (orig_installprefix, orig_installdir, + get_shared_library_fullname ()); + if (curr_prefix_better == NULL) + curr_prefix_better = curr_prefix; + + set_relocation_prefix (orig_installprefix, curr_prefix_better); + + initialized = 1; + } +#endif + + /* Note: It is not necessary to perform case insensitive comparison here, + even for DOS-like filesystems, because the pathname argument was + typically created from the same Makefile variable as orig_prefix came + from. */ + if (orig_prefix != NULL && curr_prefix != NULL + && strncmp (pathname, orig_prefix, orig_prefix_len) == 0) + { + if (pathname[orig_prefix_len] == '\0') + /* pathname equals orig_prefix. */ + return curr_prefix; + if (ISSLASH (pathname[orig_prefix_len])) + { + /* pathname starts with orig_prefix. */ + const char *pathname_tail = &pathname[orig_prefix_len]; + char *result = + (char *) xmalloc (curr_prefix_len + strlen (pathname_tail) + 1); + +#ifdef NO_XMALLOC + if (result != NULL) +#endif + { + memcpy (result, curr_prefix, curr_prefix_len); + strcpy (result + curr_prefix_len, pathname_tail); + return result; + } + } + } + /* Nothing to relocate. */ + return pathname; +} + +#endif diff --git a/xchat-2.8.8/intl/relocatable.h b/xchat-2.8.8/intl/relocatable.h new file mode 100644 index 0000000..f6d3832 --- /dev/null +++ b/xchat-2.8.8/intl/relocatable.h @@ -0,0 +1,79 @@ +/* Provide relocatable packages. + Copyright (C) 2003, 2005 Free Software Foundation, Inc. + Written by Bruno Haible , 2003. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _RELOCATABLE_H +#define _RELOCATABLE_H + +#ifdef __cplusplus +extern "C" { +#endif + + +/* This can be enabled through the configure --enable-relocatable option. */ +#if ENABLE_RELOCATABLE + +/* When building a DLL, we must export some functions. Note that because + this is a private .h file, we don't need to use __declspec(dllimport) + in any case. */ +#if HAVE_VISIBILITY && BUILDING_DLL +# define RELOCATABLE_DLL_EXPORTED __attribute__((__visibility__("default"))) +#elif defined _MSC_VER && BUILDING_DLL +# define RELOCATABLE_DLL_EXPORTED __declspec(dllexport) +#else +# define RELOCATABLE_DLL_EXPORTED +#endif + +/* Sets the original and the current installation prefix of the package. + Relocation simply replaces a pathname starting with the original prefix + by the corresponding pathname with the current prefix instead. Both + prefixes should be directory names without trailing slash (i.e. use "" + instead of "/"). */ +extern RELOCATABLE_DLL_EXPORTED void + set_relocation_prefix (const char *orig_prefix, + const char *curr_prefix); + +/* Returns the pathname, relocated according to the current installation + directory. */ +extern const char * relocate (const char *pathname); + +/* Memory management: relocate() leaks memory, because it has to construct + a fresh pathname. If this is a problem because your program calls + relocate() frequently, think about caching the result. */ + +/* Convenience function: + Computes the current installation prefix, based on the original + installation prefix, the original installation directory of a particular + file, and the current pathname of this file. Returns NULL upon failure. */ +extern const char * compute_curr_prefix (const char *orig_installprefix, + const char *orig_installdir, + const char *curr_pathname); + +#else + +/* By default, we use the hardwired pathnames. */ +#define relocate(pathname) (pathname) + +#endif + + +#ifdef __cplusplus +} +#endif + +#endif /* _RELOCATABLE_H */ diff --git a/xchat-2.8.8/intl/textdomain.c b/xchat-2.8.8/intl/textdomain.c new file mode 100644 index 0000000..70131bc --- /dev/null +++ b/xchat-2.8.8/intl/textdomain.c @@ -0,0 +1,127 @@ +/* Implementation of the textdomain(3) function. + Copyright (C) 1995-1998, 2000-2003, 2005-2006 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* Handle multi-threaded applications. */ +#ifdef _LIBC +# include +# define gl_rwlock_define __libc_rwlock_define +# define gl_rwlock_wrlock __libc_rwlock_wrlock +# define gl_rwlock_unlock __libc_rwlock_unlock +#else +# include "lock.h" +#endif + +/* @@ end of prolog @@ */ + + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define TEXTDOMAIN __textdomain +# ifndef strdup +# define strdup(str) __strdup (str) +# endif +#else +# define TEXTDOMAIN libintl_textdomain +#endif + +/* Lock variable to protect the global data in the gettext implementation. */ +gl_rwlock_define (extern, _nl_state_lock attribute_hidden) + +/* Set the current default message catalog to DOMAINNAME. + If DOMAINNAME is null, return the current default. + If DOMAINNAME is "", reset to the default of "messages". */ +char * +TEXTDOMAIN (const char *domainname) +{ + char *new_domain; + char *old_domain; + + /* A NULL pointer requests the current setting. */ + if (domainname == NULL) + return (char *) _nl_current_default_domain; + + gl_rwlock_wrlock (_nl_state_lock); + + old_domain = (char *) _nl_current_default_domain; + + /* If domain name is the null string set to default domain "messages". */ + if (domainname[0] == '\0' + || strcmp (domainname, _nl_default_default_domain) == 0) + { + _nl_current_default_domain = _nl_default_default_domain; + new_domain = (char *) _nl_current_default_domain; + } + else if (strcmp (domainname, old_domain) == 0) + /* This can happen and people will use it to signal that some + environment variable changed. */ + new_domain = old_domain; + else + { + /* If the following malloc fails `_nl_current_default_domain' + will be NULL. This value will be returned and so signals we + are out of core. */ +#if defined _LIBC || defined HAVE_STRDUP + new_domain = strdup (domainname); +#else + size_t len = strlen (domainname) + 1; + new_domain = (char *) malloc (len); + if (new_domain != NULL) + memcpy (new_domain, domainname, len); +#endif + + if (new_domain != NULL) + _nl_current_default_domain = new_domain; + } + + /* We use this possibility to signal a change of the loaded catalogs + since this is most likely the case and there is no other easy we + to do it. Do it only when the call was successful. */ + if (new_domain != NULL) + { + ++_nl_msg_cat_cntr; + + if (old_domain != new_domain && old_domain != _nl_default_default_domain) + free (old_domain); + } + + gl_rwlock_unlock (_nl_state_lock); + + return new_domain; +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__textdomain, textdomain); +#endif diff --git a/xchat-2.8.8/intl/tsearch.c b/xchat-2.8.8/intl/tsearch.c new file mode 100644 index 0000000..d549dd4 --- /dev/null +++ b/xchat-2.8.8/intl/tsearch.c @@ -0,0 +1,684 @@ +/* Copyright (C) 1995, 1996, 1997, 2000, 2006 Free Software Foundation, Inc. + Contributed by Bernd Schmidt , 1997. + + NOTE: The canonical source of this file is maintained with the GNU C + Library. Bugs can be reported to bug-glibc@gnu.org. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Tree search for red/black trees. + The algorithm for adding nodes is taken from one of the many "Algorithms" + books by Robert Sedgewick, although the implementation differs. + The algorithm for deleting nodes can probably be found in a book named + "Introduction to Algorithms" by Cormen/Leiserson/Rivest. At least that's + the book that my professor took most algorithms from during the "Data + Structures" course... + + Totally public domain. */ + +/* Red/black trees are binary trees in which the edges are colored either red + or black. They have the following properties: + 1. The number of black edges on every path from the root to a leaf is + constant. + 2. No two red edges are adjacent. + Therefore there is an upper bound on the length of every path, it's + O(log n) where n is the number of nodes in the tree. No path can be longer + than 1+2*P where P is the length of the shortest path in the tree. + Useful for the implementation: + 3. If one of the children of a node is NULL, then the other one is red + (if it exists). + + In the implementation, not the edges are colored, but the nodes. The color + interpreted as the color of the edge leading to this node. The color is + meaningless for the root node, but we color the root node black for + convenience. All added nodes are red initially. + + Adding to a red/black tree is rather easy. The right place is searched + with a usual binary tree search. Additionally, whenever a node N is + reached that has two red successors, the successors are colored black and + the node itself colored red. This moves red edges up the tree where they + pose less of a problem once we get to really insert the new node. Changing + N's color to red may violate rule 2, however, so rotations may become + necessary to restore the invariants. Adding a new red leaf may violate + the same rule, so afterwards an additional check is run and the tree + possibly rotated. + + Deleting is hairy. There are mainly two nodes involved: the node to be + deleted (n1), and another node that is to be unchained from the tree (n2). + If n1 has a successor (the node with a smallest key that is larger than + n1), then the successor becomes n2 and its contents are copied into n1, + otherwise n1 becomes n2. + Unchaining a node may violate rule 1: if n2 is black, one subtree is + missing one black edge afterwards. The algorithm must try to move this + error upwards towards the root, so that the subtree that does not have + enough black edges becomes the whole tree. Once that happens, the error + has disappeared. It may not be necessary to go all the way up, since it + is possible that rotations and recoloring can fix the error before that. + + Although the deletion algorithm must walk upwards through the tree, we + do not store parent pointers in the nodes. Instead, delete allocates a + small array of parent pointers and fills it while descending the tree. + Since we know that the length of a path is O(log n), where n is the number + of nodes, this is likely to use less memory. */ + +/* Tree rotations look like this: + A C + / \ / \ + B C A G + / \ / \ --> / \ + D E F G B F + / \ + D E + + In this case, A has been rotated left. This preserves the ordering of the + binary tree. */ + +#include + +/* Specification. */ +#ifdef IN_LIBINTL +# include "tsearch.h" +#else +# include +#endif + +#include + +typedef int (*__compar_fn_t) (const void *, const void *); +typedef void (*__action_fn_t) (const void *, VISIT, int); + +#ifndef weak_alias +# define __tsearch tsearch +# define __tfind tfind +# define __tdelete tdelete +# define __twalk twalk +#endif + +#ifndef internal_function +/* Inside GNU libc we mark some function in a special way. In other + environments simply ignore the marking. */ +# define internal_function +#endif + +typedef struct node_t +{ + /* Callers expect this to be the first element in the structure - do not + move! */ + const void *key; + struct node_t *left; + struct node_t *right; + unsigned int red:1; +} *node; +typedef const struct node_t *const_node; + +#undef DEBUGGING + +#ifdef DEBUGGING + +/* Routines to check tree invariants. */ + +#include + +#define CHECK_TREE(a) check_tree(a) + +static void +check_tree_recurse (node p, int d_sofar, int d_total) +{ + if (p == NULL) + { + assert (d_sofar == d_total); + return; + } + + check_tree_recurse (p->left, d_sofar + (p->left && !p->left->red), d_total); + check_tree_recurse (p->right, d_sofar + (p->right && !p->right->red), d_total); + if (p->left) + assert (!(p->left->red && p->red)); + if (p->right) + assert (!(p->right->red && p->red)); +} + +static void +check_tree (node root) +{ + int cnt = 0; + node p; + if (root == NULL) + return; + root->red = 0; + for(p = root->left; p; p = p->left) + cnt += !p->red; + check_tree_recurse (root, 0, cnt); +} + + +#else + +#define CHECK_TREE(a) + +#endif + +/* Possibly "split" a node with two red successors, and/or fix up two red + edges in a row. ROOTP is a pointer to the lowest node we visited, PARENTP + and GPARENTP pointers to its parent/grandparent. P_R and GP_R contain the + comparison values that determined which way was taken in the tree to reach + ROOTP. MODE is 1 if we need not do the split, but must check for two red + edges between GPARENTP and ROOTP. */ +static void +maybe_split_for_insert (node *rootp, node *parentp, node *gparentp, + int p_r, int gp_r, int mode) +{ + node root = *rootp; + node *rp, *lp; + rp = &(*rootp)->right; + lp = &(*rootp)->left; + + /* See if we have to split this node (both successors red). */ + if (mode == 1 + || ((*rp) != NULL && (*lp) != NULL && (*rp)->red && (*lp)->red)) + { + /* This node becomes red, its successors black. */ + root->red = 1; + if (*rp) + (*rp)->red = 0; + if (*lp) + (*lp)->red = 0; + + /* If the parent of this node is also red, we have to do + rotations. */ + if (parentp != NULL && (*parentp)->red) + { + node gp = *gparentp; + node p = *parentp; + /* There are two main cases: + 1. The edge types (left or right) of the two red edges differ. + 2. Both red edges are of the same type. + There exist two symmetries of each case, so there is a total of + 4 cases. */ + if ((p_r > 0) != (gp_r > 0)) + { + /* Put the child at the top of the tree, with its parent + and grandparent as successors. */ + p->red = 1; + gp->red = 1; + root->red = 0; + if (p_r < 0) + { + /* Child is left of parent. */ + p->left = *rp; + *rp = p; + gp->right = *lp; + *lp = gp; + } + else + { + /* Child is right of parent. */ + p->right = *lp; + *lp = p; + gp->left = *rp; + *rp = gp; + } + *gparentp = root; + } + else + { + *gparentp = *parentp; + /* Parent becomes the top of the tree, grandparent and + child are its successors. */ + p->red = 0; + gp->red = 1; + if (p_r < 0) + { + /* Left edges. */ + gp->left = p->right; + p->right = gp; + } + else + { + /* Right edges. */ + gp->right = p->left; + p->left = gp; + } + } + } + } +} + +/* Find or insert datum into search tree. + KEY is the key to be located, ROOTP is the address of tree root, + COMPAR the ordering function. */ +void * +__tsearch (const void *key, void **vrootp, __compar_fn_t compar) +{ + node q; + node *parentp = NULL, *gparentp = NULL; + node *rootp = (node *) vrootp; + node *nextp; + int r = 0, p_r = 0, gp_r = 0; /* No they might not, Mr Compiler. */ + + if (rootp == NULL) + return NULL; + + /* This saves some additional tests below. */ + if (*rootp != NULL) + (*rootp)->red = 0; + + CHECK_TREE (*rootp); + + nextp = rootp; + while (*nextp != NULL) + { + node root = *rootp; + r = (*compar) (key, root->key); + if (r == 0) + return root; + + maybe_split_for_insert (rootp, parentp, gparentp, p_r, gp_r, 0); + /* If that did any rotations, parentp and gparentp are now garbage. + That doesn't matter, because the values they contain are never + used again in that case. */ + + nextp = r < 0 ? &root->left : &root->right; + if (*nextp == NULL) + break; + + gparentp = parentp; + parentp = rootp; + rootp = nextp; + + gp_r = p_r; + p_r = r; + } + + q = (struct node_t *) malloc (sizeof (struct node_t)); + if (q != NULL) + { + *nextp = q; /* link new node to old */ + q->key = key; /* initialize new node */ + q->red = 1; + q->left = q->right = NULL; + + if (nextp != rootp) + /* There may be two red edges in a row now, which we must avoid by + rotating the tree. */ + maybe_split_for_insert (nextp, rootp, parentp, r, p_r, 1); + } + + return q; +} +#ifdef weak_alias +weak_alias (__tsearch, tsearch) +#endif + + +/* Find datum in search tree. + KEY is the key to be located, ROOTP is the address of tree root, + COMPAR the ordering function. */ +void * +__tfind (key, vrootp, compar) + const void *key; + void *const *vrootp; + __compar_fn_t compar; +{ + node *rootp = (node *) vrootp; + + if (rootp == NULL) + return NULL; + + CHECK_TREE (*rootp); + + while (*rootp != NULL) + { + node root = *rootp; + int r; + + r = (*compar) (key, root->key); + if (r == 0) + return root; + + rootp = r < 0 ? &root->left : &root->right; + } + return NULL; +} +#ifdef weak_alias +weak_alias (__tfind, tfind) +#endif + + +/* Delete node with given key. + KEY is the key to be deleted, ROOTP is the address of the root of tree, + COMPAR the comparison function. */ +void * +__tdelete (const void *key, void **vrootp, __compar_fn_t compar) +{ + node p, q, r, retval; + int cmp; + node *rootp = (node *) vrootp; + node root, unchained; + /* Stack of nodes so we remember the parents without recursion. It's + _very_ unlikely that there are paths longer than 40 nodes. The tree + would need to have around 250.000 nodes. */ + int stacksize = 100; + int sp = 0; + node *nodestack[100]; + + if (rootp == NULL) + return NULL; + p = *rootp; + if (p == NULL) + return NULL; + + CHECK_TREE (p); + + while ((cmp = (*compar) (key, (*rootp)->key)) != 0) + { + if (sp == stacksize) + abort (); + + nodestack[sp++] = rootp; + p = *rootp; + rootp = ((cmp < 0) + ? &(*rootp)->left + : &(*rootp)->right); + if (*rootp == NULL) + return NULL; + } + + /* This is bogus if the node to be deleted is the root... this routine + really should return an integer with 0 for success, -1 for failure + and errno = ESRCH or something. */ + retval = p; + + /* We don't unchain the node we want to delete. Instead, we overwrite + it with its successor and unchain the successor. If there is no + successor, we really unchain the node to be deleted. */ + + root = *rootp; + + r = root->right; + q = root->left; + + if (q == NULL || r == NULL) + unchained = root; + else + { + node *parent = rootp, *up = &root->right; + for (;;) + { + if (sp == stacksize) + abort (); + nodestack[sp++] = parent; + parent = up; + if ((*up)->left == NULL) + break; + up = &(*up)->left; + } + unchained = *up; + } + + /* We know that either the left or right successor of UNCHAINED is NULL. + R becomes the other one, it is chained into the parent of UNCHAINED. */ + r = unchained->left; + if (r == NULL) + r = unchained->right; + if (sp == 0) + *rootp = r; + else + { + q = *nodestack[sp-1]; + if (unchained == q->right) + q->right = r; + else + q->left = r; + } + + if (unchained != root) + root->key = unchained->key; + if (!unchained->red) + { + /* Now we lost a black edge, which means that the number of black + edges on every path is no longer constant. We must balance the + tree. */ + /* NODESTACK now contains all parents of R. R is likely to be NULL + in the first iteration. */ + /* NULL nodes are considered black throughout - this is necessary for + correctness. */ + while (sp > 0 && (r == NULL || !r->red)) + { + node *pp = nodestack[sp - 1]; + p = *pp; + /* Two symmetric cases. */ + if (r == p->left) + { + /* Q is R's brother, P is R's parent. The subtree with root + R has one black edge less than the subtree with root Q. */ + q = p->right; + if (q->red) + { + /* If Q is red, we know that P is black. We rotate P left + so that Q becomes the top node in the tree, with P below + it. P is colored red, Q is colored black. + This action does not change the black edge count for any + leaf in the tree, but we will be able to recognize one + of the following situations, which all require that Q + is black. */ + q->red = 0; + p->red = 1; + /* Left rotate p. */ + p->right = q->left; + q->left = p; + *pp = q; + /* Make sure pp is right if the case below tries to use + it. */ + nodestack[sp++] = pp = &q->left; + q = p->right; + } + /* We know that Q can't be NULL here. We also know that Q is + black. */ + if ((q->left == NULL || !q->left->red) + && (q->right == NULL || !q->right->red)) + { + /* Q has two black successors. We can simply color Q red. + The whole subtree with root P is now missing one black + edge. Note that this action can temporarily make the + tree invalid (if P is red). But we will exit the loop + in that case and set P black, which both makes the tree + valid and also makes the black edge count come out + right. If P is black, we are at least one step closer + to the root and we'll try again the next iteration. */ + q->red = 1; + r = p; + } + else + { + /* Q is black, one of Q's successors is red. We can + repair the tree with one operation and will exit the + loop afterwards. */ + if (q->right == NULL || !q->right->red) + { + /* The left one is red. We perform the same action as + in maybe_split_for_insert where two red edges are + adjacent but point in different directions: + Q's left successor (let's call it Q2) becomes the + top of the subtree we are looking at, its parent (Q) + and grandparent (P) become its successors. The former + successors of Q2 are placed below P and Q. + P becomes black, and Q2 gets the color that P had. + This changes the black edge count only for node R and + its successors. */ + node q2 = q->left; + q2->red = p->red; + p->right = q2->left; + q->left = q2->right; + q2->right = q; + q2->left = p; + *pp = q2; + p->red = 0; + } + else + { + /* It's the right one. Rotate P left. P becomes black, + and Q gets the color that P had. Q's right successor + also becomes black. This changes the black edge + count only for node R and its successors. */ + q->red = p->red; + p->red = 0; + + q->right->red = 0; + + /* left rotate p */ + p->right = q->left; + q->left = p; + *pp = q; + } + + /* We're done. */ + sp = 1; + r = NULL; + } + } + else + { + /* Comments: see above. */ + q = p->left; + if (q->red) + { + q->red = 0; + p->red = 1; + p->left = q->right; + q->right = p; + *pp = q; + nodestack[sp++] = pp = &q->right; + q = p->left; + } + if ((q->right == NULL || !q->right->red) + && (q->left == NULL || !q->left->red)) + { + q->red = 1; + r = p; + } + else + { + if (q->left == NULL || !q->left->red) + { + node q2 = q->right; + q2->red = p->red; + p->left = q2->right; + q->right = q2->left; + q2->left = q; + q2->right = p; + *pp = q2; + p->red = 0; + } + else + { + q->red = p->red; + p->red = 0; + q->left->red = 0; + p->left = q->right; + q->right = p; + *pp = q; + } + sp = 1; + r = NULL; + } + } + --sp; + } + if (r != NULL) + r->red = 0; + } + + free (unchained); + return retval; +} +#ifdef weak_alias +weak_alias (__tdelete, tdelete) +#endif + + +/* Walk the nodes of a tree. + ROOT is the root of the tree to be walked, ACTION the function to be + called at each node. LEVEL is the level of ROOT in the whole tree. */ +static void +internal_function +trecurse (const void *vroot, __action_fn_t action, int level) +{ + const_node root = (const_node) vroot; + + if (root->left == NULL && root->right == NULL) + (*action) (root, leaf, level); + else + { + (*action) (root, preorder, level); + if (root->left != NULL) + trecurse (root->left, action, level + 1); + (*action) (root, postorder, level); + if (root->right != NULL) + trecurse (root->right, action, level + 1); + (*action) (root, endorder, level); + } +} + + +/* Walk the nodes of a tree. + ROOT is the root of the tree to be walked, ACTION the function to be + called at each node. */ +void +__twalk (const void *vroot, __action_fn_t action) +{ + const_node root = (const_node) vroot; + + CHECK_TREE (root); + + if (root != NULL && action != NULL) + trecurse (root, action, 0); +} +#ifdef weak_alias +weak_alias (__twalk, twalk) +#endif + + +#ifdef _LIBC + +/* The standardized functions miss an important functionality: the + tree cannot be removed easily. We provide a function to do this. */ +static void +internal_function +tdestroy_recurse (node root, __free_fn_t freefct) +{ + if (root->left != NULL) + tdestroy_recurse (root->left, freefct); + if (root->right != NULL) + tdestroy_recurse (root->right, freefct); + (*freefct) ((void *) root->key); + /* Free the node itself. */ + free (root); +} + +void +__tdestroy (void *vroot, __free_fn_t freefct) +{ + node root = (node) vroot; + + CHECK_TREE (root); + + if (root != NULL) + tdestroy_recurse (root, freefct); +} +weak_alias (__tdestroy, tdestroy) + +#endif /* _LIBC */ diff --git a/xchat-2.8.8/intl/tsearch.h b/xchat-2.8.8/intl/tsearch.h new file mode 100644 index 0000000..f08e4a9 --- /dev/null +++ b/xchat-2.8.8/intl/tsearch.h @@ -0,0 +1,83 @@ +/* Binary tree data structure. + Copyright (C) 2006 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _TSEARCH_H +#define _TSEARCH_H + +#if HAVE_TSEARCH + +/* Get tseach(), tfind(), tdelete(), twalk() declarations. */ +#include + +#else + +#ifdef __cplusplus +extern "C" { +#endif + +/* See , + + for details. */ + +typedef enum +{ + preorder, + postorder, + endorder, + leaf +} +VISIT; + +/* Searches an element in the tree *VROOTP that compares equal to KEY. + If one is found, it is returned. Otherwise, a new element equal to KEY + is inserted in the tree and is returned. */ +extern void * tsearch (const void *key, void **vrootp, + int (*compar) (const void *, const void *)); + +/* Searches an element in the tree *VROOTP that compares equal to KEY. + If one is found, it is returned. Otherwise, NULL is returned. */ +extern void * tfind (const void *key, void *const *vrootp, + int (*compar) (const void *, const void *)); + +/* Searches an element in the tree *VROOTP that compares equal to KEY. + If one is found, it is removed from the tree, and its parent node is + returned. Otherwise, NULL is returned. */ +extern void * tdelete (const void *key, void **vrootp, + int (*compar) (const void *, const void *)); + +/* Perform a depth-first, left-to-right traversal of the tree VROOT. + The ACTION function is called: + - for non-leaf nodes: 3 times, before the left subtree traversal, + after the left subtree traversal but before the right subtree traversal, + and after the right subtree traversal, + - for leaf nodes: once. + The arguments passed to ACTION are: + 1. the node; it can be casted to a 'const void * const *', i.e. into a + pointer to the key, + 2. an indicator which visit of the node this is, + 3. the level of the node in the tree (0 for the root). */ +extern void twalk (const void *vroot, + void (*action) (const void *, VISIT, int)); + +#ifdef __cplusplus +} +#endif + +#endif + +#endif /* _TSEARCH_H */ diff --git a/xchat-2.8.8/intl/vasnprintf.c b/xchat-2.8.8/intl/vasnprintf.c new file mode 100644 index 0000000..4a8e7f0 --- /dev/null +++ b/xchat-2.8.8/intl/vasnprintf.c @@ -0,0 +1,4677 @@ +/* vsprintf with automatic memory allocation. + Copyright (C) 1999, 2002-2007 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* This file can be parametrized with the following macros: + VASNPRINTF The name of the function being defined. + FCHAR_T The element type of the format string. + DCHAR_T The element type of the destination (result) string. + FCHAR_T_ONLY_ASCII Set to 1 to enable verification that all characters + in the format string are ASCII. MUST be set if + FCHAR_T and DCHAR_T are not the same type. + DIRECTIVE Structure denoting a format directive. + Depends on FCHAR_T. + DIRECTIVES Structure denoting the set of format directives of a + format string. Depends on FCHAR_T. + PRINTF_PARSE Function that parses a format string. + Depends on FCHAR_T. + DCHAR_CPY memcpy like function for DCHAR_T[] arrays. + DCHAR_SET memset like function for DCHAR_T[] arrays. + DCHAR_MBSNLEN mbsnlen like function for DCHAR_T[] arrays. + SNPRINTF The system's snprintf (or similar) function. + This may be either snprintf or swprintf. + TCHAR_T The element type of the argument and result string + of the said SNPRINTF function. This may be either + char or wchar_t. The code exploits that + sizeof (TCHAR_T) | sizeof (DCHAR_T) and + alignof (TCHAR_T) <= alignof (DCHAR_T). + DCHAR_IS_TCHAR Set to 1 if DCHAR_T and TCHAR_T are the same type. + DCHAR_CONV_FROM_ENCODING A function to convert from char[] to DCHAR[]. + DCHAR_IS_UINT8_T Set to 1 if DCHAR_T is uint8_t. + DCHAR_IS_UINT16_T Set to 1 if DCHAR_T is uint16_t. + DCHAR_IS_UINT32_T Set to 1 if DCHAR_T is uint32_t. */ + +/* Tell glibc's to provide a prototype for snprintf(). + This must come before because may include + , and once has been included, it's too late. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#ifndef VASNPRINTF +# include +#endif +#ifndef IN_LIBINTL +# include +#endif + +/* Specification. */ +#ifndef VASNPRINTF +# if WIDE_CHAR_VERSION +# include "vasnwprintf.h" +# else +# include "vasnprintf.h" +# endif +#endif + +#include /* localeconv() */ +#include /* snprintf(), sprintf() */ +#include /* abort(), malloc(), realloc(), free() */ +#include /* memcpy(), strlen() */ +#include /* errno */ +#include /* CHAR_BIT */ +#include /* DBL_MAX_EXP, LDBL_MAX_EXP */ +#if HAVE_NL_LANGINFO +# include +#endif +#ifndef VASNPRINTF +# if WIDE_CHAR_VERSION +# include "wprintf-parse.h" +# else +# include "printf-parse.h" +# endif +#endif + +/* Checked size_t computations. */ +#include "xsize.h" + +#if (NEED_PRINTF_DOUBLE || NEED_PRINTF_LONG_DOUBLE) && !defined IN_LIBINTL +# include +# include "float+.h" +#endif + +#if (NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE) && !defined IN_LIBINTL +# include +# include "isnan.h" +#endif + +#if (NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE) && !defined IN_LIBINTL +# include +# include "isnanl-nolibm.h" +# include "fpucw.h" +#endif + +#if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_DOUBLE) && !defined IN_LIBINTL +# include +# include "isnan.h" +# include "printf-frexp.h" +#endif + +#if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE) && !defined IN_LIBINTL +# include +# include "isnanl-nolibm.h" +# include "printf-frexpl.h" +# include "fpucw.h" +#endif + +/* Some systems, like OSF/1 4.0 and Woe32, don't have EOVERFLOW. */ +#ifndef EOVERFLOW +# define EOVERFLOW E2BIG +#endif + +#if HAVE_WCHAR_T +# if HAVE_WCSLEN +# define local_wcslen wcslen +# else + /* Solaris 2.5.1 has wcslen() in a separate library libw.so. To avoid + a dependency towards this library, here is a local substitute. + Define this substitute only once, even if this file is included + twice in the same compilation unit. */ +# ifndef local_wcslen_defined +# define local_wcslen_defined 1 +static size_t +local_wcslen (const wchar_t *s) +{ + const wchar_t *ptr; + + for (ptr = s; *ptr != (wchar_t) 0; ptr++) + ; + return ptr - s; +} +# endif +# endif +#endif + +/* Default parameters. */ +#ifndef VASNPRINTF +# if WIDE_CHAR_VERSION +# define VASNPRINTF vasnwprintf +# define FCHAR_T wchar_t +# define DCHAR_T wchar_t +# define TCHAR_T wchar_t +# define DCHAR_IS_TCHAR 1 +# define DIRECTIVE wchar_t_directive +# define DIRECTIVES wchar_t_directives +# define PRINTF_PARSE wprintf_parse +# define DCHAR_CPY wmemcpy +# else +# define VASNPRINTF vasnprintf +# define FCHAR_T char +# define DCHAR_T char +# define TCHAR_T char +# define DCHAR_IS_TCHAR 1 +# define DIRECTIVE char_directive +# define DIRECTIVES char_directives +# define PRINTF_PARSE printf_parse +# define DCHAR_CPY memcpy +# endif +#endif +#if WIDE_CHAR_VERSION + /* TCHAR_T is wchar_t. */ +# define USE_SNPRINTF 1 +# if HAVE_DECL__SNWPRINTF + /* On Windows, the function swprintf() has a different signature than + on Unix; we use the _snwprintf() function instead. */ +# define SNPRINTF _snwprintf +# else + /* Unix. */ +# define SNPRINTF swprintf +# endif +#else + /* TCHAR_T is char. */ +# /* Use snprintf if it exists under the name 'snprintf' or '_snprintf'. + But don't use it on BeOS, since BeOS snprintf produces no output if the + size argument is >= 0x3000000. */ +# if (HAVE_DECL__SNPRINTF || HAVE_SNPRINTF) && !defined __BEOS__ +# define USE_SNPRINTF 1 +# else +# define USE_SNPRINTF 0 +# endif +# if HAVE_DECL__SNPRINTF + /* Windows. */ +# define SNPRINTF _snprintf +# else + /* Unix. */ +# define SNPRINTF snprintf + /* Here we need to call the native snprintf, not rpl_snprintf. */ +# undef snprintf +# endif +#endif +/* Here we need to call the native sprintf, not rpl_sprintf. */ +#undef sprintf + +#if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE) && !defined IN_LIBINTL +/* Determine the decimal-point character according to the current locale. */ +# ifndef decimal_point_char_defined +# define decimal_point_char_defined 1 +static char +decimal_point_char () +{ + const char *point; + /* Determine it in a multithread-safe way. We know nl_langinfo is + multithread-safe on glibc systems, but is not required to be multithread- + safe by POSIX. sprintf(), however, is multithread-safe. localeconv() + is rarely multithread-safe. */ +# if HAVE_NL_LANGINFO && __GLIBC__ + point = nl_langinfo (RADIXCHAR); +# elif 1 + char pointbuf[5]; + sprintf (pointbuf, "%#.0f", 1.0); + point = &pointbuf[1]; +# else + point = localeconv () -> decimal_point; +# endif + /* The decimal point is always a single byte: either '.' or ','. */ + return (point[0] != '\0' ? point[0] : '.'); +} +# endif +#endif + +#if NEED_PRINTF_INFINITE_DOUBLE && !NEED_PRINTF_DOUBLE && !defined IN_LIBINTL + +/* Equivalent to !isfinite(x) || x == 0, but does not require libm. */ +static int +is_infinite_or_zero (double x) +{ + return isnan (x) || x + x == x; +} + +#endif + +#if NEED_PRINTF_INFINITE_LONG_DOUBLE && !NEED_PRINTF_LONG_DOUBLE && !defined IN_LIBINTL + +/* Equivalent to !isfinite(x), but does not require libm. */ +static int +is_infinitel (long double x) +{ + return isnanl (x) || (x + x == x && x != 0.0L); +} + +#endif + +#if (NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE) && !defined IN_LIBINTL + +/* Converting 'long double' to decimal without rare rounding bugs requires + real bignums. We use the naming conventions of GNU gmp, but vastly simpler + (and slower) algorithms. */ + +typedef unsigned int mp_limb_t; +# define GMP_LIMB_BITS 32 +typedef int mp_limb_verify[2 * (sizeof (mp_limb_t) * CHAR_BIT == GMP_LIMB_BITS) - 1]; + +typedef unsigned long long mp_twolimb_t; +# define GMP_TWOLIMB_BITS 64 +typedef int mp_twolimb_verify[2 * (sizeof (mp_twolimb_t) * CHAR_BIT == GMP_TWOLIMB_BITS) - 1]; + +/* Representation of a bignum >= 0. */ +typedef struct +{ + size_t nlimbs; + mp_limb_t *limbs; /* Bits in little-endian order, allocated with malloc(). */ +} mpn_t; + +/* Compute the product of two bignums >= 0. + Return the allocated memory in case of success, NULL in case of memory + allocation failure. */ +static void * +multiply (mpn_t src1, mpn_t src2, mpn_t *dest) +{ + const mp_limb_t *p1; + const mp_limb_t *p2; + size_t len1; + size_t len2; + + if (src1.nlimbs <= src2.nlimbs) + { + len1 = src1.nlimbs; + p1 = src1.limbs; + len2 = src2.nlimbs; + p2 = src2.limbs; + } + else + { + len1 = src2.nlimbs; + p1 = src2.limbs; + len2 = src1.nlimbs; + p2 = src1.limbs; + } + /* Now 0 <= len1 <= len2. */ + if (len1 == 0) + { + /* src1 or src2 is zero. */ + dest->nlimbs = 0; + dest->limbs = (mp_limb_t *) malloc (1); + } + else + { + /* Here 1 <= len1 <= len2. */ + size_t dlen; + mp_limb_t *dp; + size_t k, i, j; + + dlen = len1 + len2; + dp = (mp_limb_t *) malloc (dlen * sizeof (mp_limb_t)); + if (dp == NULL) + return NULL; + for (k = len2; k > 0; ) + dp[--k] = 0; + for (i = 0; i < len1; i++) + { + mp_limb_t digit1 = p1[i]; + mp_twolimb_t carry = 0; + for (j = 0; j < len2; j++) + { + mp_limb_t digit2 = p2[j]; + carry += (mp_twolimb_t) digit1 * (mp_twolimb_t) digit2; + carry += dp[i + j]; + dp[i + j] = (mp_limb_t) carry; + carry = carry >> GMP_LIMB_BITS; + } + dp[i + len2] = (mp_limb_t) carry; + } + /* Normalise. */ + while (dlen > 0 && dp[dlen - 1] == 0) + dlen--; + dest->nlimbs = dlen; + dest->limbs = dp; + } + return dest->limbs; +} + +/* Compute the quotient of a bignum a >= 0 and a bignum b > 0. + a is written as a = q * b + r with 0 <= r < b. q is the quotient, r + the remainder. + Finally, round-to-even is performed: If r > b/2 or if r = b/2 and q is odd, + q is incremented. + Return the allocated memory in case of success, NULL in case of memory + allocation failure. */ +static void * +divide (mpn_t a, mpn_t b, mpn_t *q) +{ + /* Algorithm: + First normalise a and b: a=[a[m-1],...,a[0]], b=[b[n-1],...,b[0]] + with m>=0 and n>0 (in base beta = 2^GMP_LIMB_BITS). + If m=n=1, perform a single-precision division: + r:=0, j:=m, + while j>0 do + {Here (q[m-1]*beta^(m-1)+...+q[j]*beta^j) * b[0] + r*beta^j = + = a[m-1]*beta^(m-1)+...+a[j]*beta^j und 0<=r=n>1, perform a multiple-precision division: + We have a/b < beta^(m-n+1). + s:=intDsize-1-(hightest bit in b[n-1]), 0<=s=beta/2. + For j=m-n,...,0: {Here 0 <= r < b*beta^(j+1).} + Compute q* : + q* := floor((r[j+n]*beta+r[j+n-1])/b[n-1]). + In case of overflow (q* >= beta) set q* := beta-1. + Compute c2 := ((r[j+n]*beta+r[j+n-1]) - q* * b[n-1])*beta + r[j+n-2] + and c3 := b[n-2] * q*. + {We have 0 <= c2 < 2*beta^2, even 0 <= c2 < beta^2 if no overflow + occurred. Furthermore 0 <= c3 < beta^2. + If there was overflow and + r[j+n]*beta+r[j+n-1] - q* * b[n-1] >= beta, i.e. c2 >= beta^2, + the next test can be skipped.} + While c3 > c2, {Here 0 <= c2 < c3 < beta^2} + Put q* := q* - 1, c2 := c2 + b[n-1]*beta, c3 := c3 - b[n-2]. + If q* > 0: + Put r := r - b * q* * beta^j. In detail: + [r[n+j],...,r[j]] := [r[n+j],...,r[j]] - q* * [b[n-1],...,b[0]]. + hence: u:=0, for i:=0 to n-1 do + u := u + q* * b[i], + r[j+i]:=r[j+i]-(u mod beta) (+ beta, if carry), + u:=u div beta (+ 1, if carry in subtraction) + r[n+j]:=r[n+j]-u. + {Since always u = (q* * [b[i-1],...,b[0]] div beta^i) + 1 + < q* + 1 <= beta, + the carry u does not overflow.} + If a negative carry occurs, put q* := q* - 1 + and [r[n+j],...,r[j]] := [r[n+j],...,r[j]] + [0,b[n-1],...,b[0]]. + Set q[j] := q*. + Normalise [q[m-n],..,q[0]]; this yields the quotient q. + Shift [r[n-1],...,r[0]] right by s bits and normalise; this yields the + rest r. + The room for q[j] can be allocated at the memory location of r[n+j]. + Finally, round-to-even: + Shift r left by 1 bit. + If r > b or if r = b and q[0] is odd, q := q+1. + */ + const mp_limb_t *a_ptr = a.limbs; + size_t a_len = a.nlimbs; + const mp_limb_t *b_ptr = b.limbs; + size_t b_len = b.nlimbs; + mp_limb_t *roomptr; + mp_limb_t *tmp_roomptr = NULL; + mp_limb_t *q_ptr; + size_t q_len; + mp_limb_t *r_ptr; + size_t r_len; + + /* Allocate room for a_len+2 digits. + (Need a_len+1 digits for the real division and 1 more digit for the + final rounding of q.) */ + roomptr = (mp_limb_t *) malloc ((a_len + 2) * sizeof (mp_limb_t)); + if (roomptr == NULL) + return NULL; + + /* Normalise a. */ + while (a_len > 0 && a_ptr[a_len - 1] == 0) + a_len--; + + /* Normalise b. */ + for (;;) + { + if (b_len == 0) + /* Division by zero. */ + abort (); + if (b_ptr[b_len - 1] == 0) + b_len--; + else + break; + } + + /* Here m = a_len >= 0 and n = b_len > 0. */ + + if (a_len < b_len) + { + /* m beta^(m-2) <= a/b < beta^m */ + r_ptr = roomptr; + q_ptr = roomptr + 1; + { + mp_limb_t den = b_ptr[0]; + mp_limb_t remainder = 0; + const mp_limb_t *sourceptr = a_ptr + a_len; + mp_limb_t *destptr = q_ptr + a_len; + size_t count; + for (count = a_len; count > 0; count--) + { + mp_twolimb_t num = + ((mp_twolimb_t) remainder << GMP_LIMB_BITS) | *--sourceptr; + *--destptr = num / den; + remainder = num % den; + } + /* Normalise and store r. */ + if (remainder > 0) + { + r_ptr[0] = remainder; + r_len = 1; + } + else + r_len = 0; + /* Normalise q. */ + q_len = a_len; + if (q_ptr[q_len - 1] == 0) + q_len--; + } + } + else + { + /* n>1: multiple precision division. + beta^(m-1) <= a < beta^m, beta^(n-1) <= b < beta^n ==> + beta^(m-n-1) <= a/b < beta^(m-n+1). */ + /* Determine s. */ + size_t s; + { + mp_limb_t msd = b_ptr[b_len - 1]; /* = b[n-1], > 0 */ + s = 31; + if (msd >= 0x10000) + { + msd = msd >> 16; + s -= 16; + } + if (msd >= 0x100) + { + msd = msd >> 8; + s -= 8; + } + if (msd >= 0x10) + { + msd = msd >> 4; + s -= 4; + } + if (msd >= 0x4) + { + msd = msd >> 2; + s -= 2; + } + if (msd >= 0x2) + { + msd = msd >> 1; + s -= 1; + } + } + /* 0 <= s < GMP_LIMB_BITS. + Copy b, shifting it left by s bits. */ + if (s > 0) + { + tmp_roomptr = (mp_limb_t *) malloc (b_len * sizeof (mp_limb_t)); + if (tmp_roomptr == NULL) + { + free (roomptr); + return NULL; + } + { + const mp_limb_t *sourceptr = b_ptr; + mp_limb_t *destptr = tmp_roomptr; + mp_twolimb_t accu = 0; + size_t count; + for (count = b_len; count > 0; count--) + { + accu += (mp_twolimb_t) *sourceptr++ << s; + *destptr++ = (mp_limb_t) accu; + accu = accu >> GMP_LIMB_BITS; + } + /* accu must be zero, since that was how s was determined. */ + if (accu != 0) + abort (); + } + b_ptr = tmp_roomptr; + } + /* Copy a, shifting it left by s bits, yields r. + Memory layout: + At the beginning: r = roomptr[0..a_len], + at the end: r = roomptr[0..b_len-1], q = roomptr[b_len..a_len] */ + r_ptr = roomptr; + if (s == 0) + { + memcpy (r_ptr, a_ptr, a_len * sizeof (mp_limb_t)); + r_ptr[a_len] = 0; + } + else + { + const mp_limb_t *sourceptr = a_ptr; + mp_limb_t *destptr = r_ptr; + mp_twolimb_t accu = 0; + size_t count; + for (count = a_len; count > 0; count--) + { + accu += (mp_twolimb_t) *sourceptr++ << s; + *destptr++ = (mp_limb_t) accu; + accu = accu >> GMP_LIMB_BITS; + } + *destptr++ = (mp_limb_t) accu; + } + q_ptr = roomptr + b_len; + q_len = a_len - b_len + 1; /* q will have m-n+1 limbs */ + { + size_t j = a_len - b_len; /* m-n */ + mp_limb_t b_msd = b_ptr[b_len - 1]; /* b[n-1] */ + mp_limb_t b_2msd = b_ptr[b_len - 2]; /* b[n-2] */ + mp_twolimb_t b_msdd = /* b[n-1]*beta+b[n-2] */ + ((mp_twolimb_t) b_msd << GMP_LIMB_BITS) | b_2msd; + /* Division loop, traversed m-n+1 times. + j counts down, b is unchanged, beta/2 <= b[n-1] < beta. */ + for (;;) + { + mp_limb_t q_star; + mp_limb_t c1; + if (r_ptr[j + b_len] < b_msd) /* r[j+n] < b[n-1] ? */ + { + /* Divide r[j+n]*beta+r[j+n-1] by b[n-1], no overflow. */ + mp_twolimb_t num = + ((mp_twolimb_t) r_ptr[j + b_len] << GMP_LIMB_BITS) + | r_ptr[j + b_len - 1]; + q_star = num / b_msd; + c1 = num % b_msd; + } + else + { + /* Overflow, hence r[j+n]*beta+r[j+n-1] >= beta*b[n-1]. */ + q_star = (mp_limb_t)~(mp_limb_t)0; /* q* = beta-1 */ + /* Test whether r[j+n]*beta+r[j+n-1] - (beta-1)*b[n-1] >= beta + <==> r[j+n]*beta+r[j+n-1] + b[n-1] >= beta*b[n-1]+beta + <==> b[n-1] < floor((r[j+n]*beta+r[j+n-1]+b[n-1])/beta) + {<= beta !}. + If yes, jump directly to the subtraction loop. + (Otherwise, r[j+n]*beta+r[j+n-1] - (beta-1)*b[n-1] < beta + <==> floor((r[j+n]*beta+r[j+n-1]+b[n-1])/beta) = b[n-1] ) */ + if (r_ptr[j + b_len] > b_msd + || (c1 = r_ptr[j + b_len - 1] + b_msd) < b_msd) + /* r[j+n] >= b[n-1]+1 or + r[j+n] = b[n-1] and the addition r[j+n-1]+b[n-1] gives a + carry. */ + goto subtract; + } + /* q_star = q*, + c1 = (r[j+n]*beta+r[j+n-1]) - q* * b[n-1] (>=0, 0, decrease it by + b[n-1]*beta+b[n-2]. Because of b[n-1]*beta+b[n-2] >= beta^2/2 + this can happen only twice. */ + if (c3 > c2) + { + q_star = q_star - 1; /* q* := q* - 1 */ + if (c3 - c2 > b_msdd) + q_star = q_star - 1; /* q* := q* - 1 */ + } + } + if (q_star > 0) + subtract: + { + /* Subtract r := r - b * q* * beta^j. */ + mp_limb_t cr; + { + const mp_limb_t *sourceptr = b_ptr; + mp_limb_t *destptr = r_ptr + j; + mp_twolimb_t carry = 0; + size_t count; + for (count = b_len; count > 0; count--) + { + /* Here 0 <= carry <= q*. */ + carry = + carry + + (mp_twolimb_t) q_star * (mp_twolimb_t) *sourceptr++ + + (mp_limb_t) ~(*destptr); + /* Here 0 <= carry <= beta*q* + beta-1. */ + *destptr++ = ~(mp_limb_t) carry; + carry = carry >> GMP_LIMB_BITS; /* <= q* */ + } + cr = (mp_limb_t) carry; + } + /* Subtract cr from r_ptr[j + b_len], then forget about + r_ptr[j + b_len]. */ + if (cr > r_ptr[j + b_len]) + { + /* Subtraction gave a carry. */ + q_star = q_star - 1; /* q* := q* - 1 */ + /* Add b back. */ + { + const mp_limb_t *sourceptr = b_ptr; + mp_limb_t *destptr = r_ptr + j; + mp_limb_t carry = 0; + size_t count; + for (count = b_len; count > 0; count--) + { + mp_limb_t source1 = *sourceptr++; + mp_limb_t source2 = *destptr; + *destptr++ = source1 + source2 + carry; + carry = + (carry + ? source1 >= (mp_limb_t) ~source2 + : source1 > (mp_limb_t) ~source2); + } + } + /* Forget about the carry and about r[j+n]. */ + } + } + /* q* is determined. Store it as q[j]. */ + q_ptr[j] = q_star; + if (j == 0) + break; + j--; + } + } + r_len = b_len; + /* Normalise q. */ + if (q_ptr[q_len - 1] == 0) + q_len--; +# if 0 /* Not needed here, since we need r only to compare it with b/2, and + b is shifted left by s bits. */ + /* Shift r right by s bits. */ + if (s > 0) + { + mp_limb_t ptr = r_ptr + r_len; + mp_twolimb_t accu = 0; + size_t count; + for (count = r_len; count > 0; count--) + { + accu = (mp_twolimb_t) (mp_limb_t) accu << GMP_LIMB_BITS; + accu += (mp_twolimb_t) *--ptr << (GMP_LIMB_BITS - s); + *ptr = (mp_limb_t) (accu >> GMP_LIMB_BITS); + } + } +# endif + /* Normalise r. */ + while (r_len > 0 && r_ptr[r_len - 1] == 0) + r_len--; + } + /* Compare r << 1 with b. */ + if (r_len > b_len) + goto increment_q; + { + size_t i; + for (i = b_len;;) + { + mp_limb_t r_i = + (i <= r_len && i > 0 ? r_ptr[i - 1] >> (GMP_LIMB_BITS - 1) : 0) + | (i < r_len ? r_ptr[i] << 1 : 0); + mp_limb_t b_i = (i < b_len ? b_ptr[i] : 0); + if (r_i > b_i) + goto increment_q; + if (r_i < b_i) + goto keep_q; + if (i == 0) + break; + i--; + } + } + if (q_len > 0 && ((q_ptr[0] & 1) != 0)) + /* q is odd. */ + increment_q: + { + size_t i; + for (i = 0; i < q_len; i++) + if (++(q_ptr[i]) != 0) + goto keep_q; + q_ptr[q_len++] = 1; + } + keep_q: + if (tmp_roomptr != NULL) + free (tmp_roomptr); + q->limbs = q_ptr; + q->nlimbs = q_len; + return roomptr; +} + +/* Convert a bignum a >= 0, multiplied with 10^extra_zeroes, to decimal + representation. + Destroys the contents of a. + Return the allocated memory - containing the decimal digits in low-to-high + order, terminated with a NUL character - in case of success, NULL in case + of memory allocation failure. */ +static char * +convert_to_decimal (mpn_t a, size_t extra_zeroes) +{ + mp_limb_t *a_ptr = a.limbs; + size_t a_len = a.nlimbs; + /* 0.03345 is slightly larger than log(2)/(9*log(10)). */ + size_t c_len = 9 * ((size_t)(a_len * (GMP_LIMB_BITS * 0.03345f)) + 1); + char *c_ptr = (char *) malloc (xsum (c_len, extra_zeroes)); + if (c_ptr != NULL) + { + char *d_ptr = c_ptr; + for (; extra_zeroes > 0; extra_zeroes--) + *d_ptr++ = '0'; + while (a_len > 0) + { + /* Divide a by 10^9, in-place. */ + mp_limb_t remainder = 0; + mp_limb_t *ptr = a_ptr + a_len; + size_t count; + for (count = a_len; count > 0; count--) + { + mp_twolimb_t num = + ((mp_twolimb_t) remainder << GMP_LIMB_BITS) | *--ptr; + *ptr = num / 1000000000; + remainder = num % 1000000000; + } + /* Store the remainder as 9 decimal digits. */ + for (count = 9; count > 0; count--) + { + *d_ptr++ = '0' + (remainder % 10); + remainder = remainder / 10; + } + /* Normalize a. */ + if (a_ptr[a_len - 1] == 0) + a_len--; + } + /* Remove leading zeroes. */ + while (d_ptr > c_ptr && d_ptr[-1] == '0') + d_ptr--; + /* But keep at least one zero. */ + if (d_ptr == c_ptr) + *d_ptr++ = '0'; + /* Terminate the string. */ + *d_ptr = '\0'; + } + return c_ptr; +} + +# if NEED_PRINTF_LONG_DOUBLE + +/* Assuming x is finite and >= 0: + write x as x = 2^e * m, where m is a bignum. + Return the allocated memory in case of success, NULL in case of memory + allocation failure. */ +static void * +decode_long_double (long double x, int *ep, mpn_t *mp) +{ + mpn_t m; + int exp; + long double y; + size_t i; + + /* Allocate memory for result. */ + m.nlimbs = (LDBL_MANT_BIT + GMP_LIMB_BITS - 1) / GMP_LIMB_BITS; + m.limbs = (mp_limb_t *) malloc (m.nlimbs * sizeof (mp_limb_t)); + if (m.limbs == NULL) + return NULL; + /* Split into exponential part and mantissa. */ + y = frexpl (x, &exp); + if (!(y >= 0.0L && y < 1.0L)) + abort (); + /* x = 2^exp * y = 2^(exp - LDBL_MANT_BIT) * (y * LDBL_MANT_BIT), and the + latter is an integer. */ + /* Convert the mantissa (y * LDBL_MANT_BIT) to a sequence of limbs. + I'm not sure whether it's safe to cast a 'long double' value between + 2^31 and 2^32 to 'unsigned int', therefore play safe and cast only + 'long double' values between 0 and 2^16 (to 'unsigned int' or 'int', + doesn't matter). */ +# if (LDBL_MANT_BIT % GMP_LIMB_BITS) != 0 +# if (LDBL_MANT_BIT % GMP_LIMB_BITS) > GMP_LIMB_BITS / 2 + { + mp_limb_t hi, lo; + y *= (mp_limb_t) 1 << (LDBL_MANT_BIT % (GMP_LIMB_BITS / 2)); + hi = (int) y; + y -= hi; + if (!(y >= 0.0L && y < 1.0L)) + abort (); + y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2); + lo = (int) y; + y -= lo; + if (!(y >= 0.0L && y < 1.0L)) + abort (); + m.limbs[LDBL_MANT_BIT / GMP_LIMB_BITS] = (hi << (GMP_LIMB_BITS / 2)) | lo; + } +# else + { + mp_limb_t d; + y *= (mp_limb_t) 1 << (LDBL_MANT_BIT % GMP_LIMB_BITS); + d = (int) y; + y -= d; + if (!(y >= 0.0L && y < 1.0L)) + abort (); + m.limbs[LDBL_MANT_BIT / GMP_LIMB_BITS] = d; + } +# endif +# endif + for (i = LDBL_MANT_BIT / GMP_LIMB_BITS; i > 0; ) + { + mp_limb_t hi, lo; + y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2); + hi = (int) y; + y -= hi; + if (!(y >= 0.0L && y < 1.0L)) + abort (); + y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2); + lo = (int) y; + y -= lo; + if (!(y >= 0.0L && y < 1.0L)) + abort (); + m.limbs[--i] = (hi << (GMP_LIMB_BITS / 2)) | lo; + } + if (!(y == 0.0L)) + abort (); + /* Normalise. */ + while (m.nlimbs > 0 && m.limbs[m.nlimbs - 1] == 0) + m.nlimbs--; + *mp = m; + *ep = exp - LDBL_MANT_BIT; + return m.limbs; +} + +# endif + +# if NEED_PRINTF_DOUBLE + +/* Assuming x is finite and >= 0: + write x as x = 2^e * m, where m is a bignum. + Return the allocated memory in case of success, NULL in case of memory + allocation failure. */ +static void * +decode_double (double x, int *ep, mpn_t *mp) +{ + mpn_t m; + int exp; + double y; + size_t i; + + /* Allocate memory for result. */ + m.nlimbs = (DBL_MANT_BIT + GMP_LIMB_BITS - 1) / GMP_LIMB_BITS; + m.limbs = (mp_limb_t *) malloc (m.nlimbs * sizeof (mp_limb_t)); + if (m.limbs == NULL) + return NULL; + /* Split into exponential part and mantissa. */ + y = frexp (x, &exp); + if (!(y >= 0.0 && y < 1.0)) + abort (); + /* x = 2^exp * y = 2^(exp - DBL_MANT_BIT) * (y * DBL_MANT_BIT), and the + latter is an integer. */ + /* Convert the mantissa (y * DBL_MANT_BIT) to a sequence of limbs. + I'm not sure whether it's safe to cast a 'double' value between + 2^31 and 2^32 to 'unsigned int', therefore play safe and cast only + 'double' values between 0 and 2^16 (to 'unsigned int' or 'int', + doesn't matter). */ +# if (DBL_MANT_BIT % GMP_LIMB_BITS) != 0 +# if (DBL_MANT_BIT % GMP_LIMB_BITS) > GMP_LIMB_BITS / 2 + { + mp_limb_t hi, lo; + y *= (mp_limb_t) 1 << (DBL_MANT_BIT % (GMP_LIMB_BITS / 2)); + hi = (int) y; + y -= hi; + if (!(y >= 0.0 && y < 1.0)) + abort (); + y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2); + lo = (int) y; + y -= lo; + if (!(y >= 0.0 && y < 1.0)) + abort (); + m.limbs[DBL_MANT_BIT / GMP_LIMB_BITS] = (hi << (GMP_LIMB_BITS / 2)) | lo; + } +# else + { + mp_limb_t d; + y *= (mp_limb_t) 1 << (DBL_MANT_BIT % GMP_LIMB_BITS); + d = (int) y; + y -= d; + if (!(y >= 0.0 && y < 1.0)) + abort (); + m.limbs[DBL_MANT_BIT / GMP_LIMB_BITS] = d; + } +# endif +# endif + for (i = DBL_MANT_BIT / GMP_LIMB_BITS; i > 0; ) + { + mp_limb_t hi, lo; + y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2); + hi = (int) y; + y -= hi; + if (!(y >= 0.0 && y < 1.0)) + abort (); + y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2); + lo = (int) y; + y -= lo; + if (!(y >= 0.0 && y < 1.0)) + abort (); + m.limbs[--i] = (hi << (GMP_LIMB_BITS / 2)) | lo; + } + if (!(y == 0.0)) + abort (); + /* Normalise. */ + while (m.nlimbs > 0 && m.limbs[m.nlimbs - 1] == 0) + m.nlimbs--; + *mp = m; + *ep = exp - DBL_MANT_BIT; + return m.limbs; +} + +# endif + +/* Assuming x = 2^e * m is finite and >= 0, and n is an integer: + Returns the decimal representation of round (x * 10^n). + Return the allocated memory - containing the decimal digits in low-to-high + order, terminated with a NUL character - in case of success, NULL in case + of memory allocation failure. */ +static char * +scale10_round_decimal_decoded (int e, mpn_t m, void *memory, int n) +{ + int s; + size_t extra_zeroes; + unsigned int abs_n; + unsigned int abs_s; + mp_limb_t *pow5_ptr; + size_t pow5_len; + unsigned int s_limbs; + unsigned int s_bits; + mpn_t pow5; + mpn_t z; + void *z_memory; + char *digits; + + if (memory == NULL) + return NULL; + /* x = 2^e * m, hence + y = round (2^e * 10^n * m) = round (2^(e+n) * 5^n * m) + = round (2^s * 5^n * m). */ + s = e + n; + extra_zeroes = 0; + /* Factor out a common power of 10 if possible. */ + if (s > 0 && n > 0) + { + extra_zeroes = (s < n ? s : n); + s -= extra_zeroes; + n -= extra_zeroes; + } + /* Here y = round (2^s * 5^n * m) * 10^extra_zeroes. + Before converting to decimal, we need to compute + z = round (2^s * 5^n * m). */ + /* Compute 5^|n|, possibly shifted by |s| bits if n and s have the same + sign. 2.322 is slightly larger than log(5)/log(2). */ + abs_n = (n >= 0 ? n : -n); + abs_s = (s >= 0 ? s : -s); + pow5_ptr = (mp_limb_t *) malloc (((int)(abs_n * (2.322f / GMP_LIMB_BITS)) + 1 + + abs_s / GMP_LIMB_BITS + 1) + * sizeof (mp_limb_t)); + if (pow5_ptr == NULL) + { + free (memory); + return NULL; + } + /* Initialize with 1. */ + pow5_ptr[0] = 1; + pow5_len = 1; + /* Multiply with 5^|n|. */ + if (abs_n > 0) + { + static mp_limb_t const small_pow5[13 + 1] = + { + 1, 5, 25, 125, 625, 3125, 15625, 78125, 390625, 1953125, 9765625, + 48828125, 244140625, 1220703125 + }; + unsigned int n13; + for (n13 = 0; n13 <= abs_n; n13 += 13) + { + mp_limb_t digit1 = small_pow5[n13 + 13 <= abs_n ? 13 : abs_n - n13]; + size_t j; + mp_twolimb_t carry = 0; + for (j = 0; j < pow5_len; j++) + { + mp_limb_t digit2 = pow5_ptr[j]; + carry += (mp_twolimb_t) digit1 * (mp_twolimb_t) digit2; + pow5_ptr[j] = (mp_limb_t) carry; + carry = carry >> GMP_LIMB_BITS; + } + if (carry > 0) + pow5_ptr[pow5_len++] = (mp_limb_t) carry; + } + } + s_limbs = abs_s / GMP_LIMB_BITS; + s_bits = abs_s % GMP_LIMB_BITS; + if (n >= 0 ? s >= 0 : s <= 0) + { + /* Multiply with 2^|s|. */ + if (s_bits > 0) + { + mp_limb_t *ptr = pow5_ptr; + mp_twolimb_t accu = 0; + size_t count; + for (count = pow5_len; count > 0; count--) + { + accu += (mp_twolimb_t) *ptr << s_bits; + *ptr++ = (mp_limb_t) accu; + accu = accu >> GMP_LIMB_BITS; + } + if (accu > 0) + { + *ptr = (mp_limb_t) accu; + pow5_len++; + } + } + if (s_limbs > 0) + { + size_t count; + for (count = pow5_len; count > 0;) + { + count--; + pow5_ptr[s_limbs + count] = pow5_ptr[count]; + } + for (count = s_limbs; count > 0;) + { + count--; + pow5_ptr[count] = 0; + } + pow5_len += s_limbs; + } + pow5.limbs = pow5_ptr; + pow5.nlimbs = pow5_len; + if (n >= 0) + { + /* Multiply m with pow5. No division needed. */ + z_memory = multiply (m, pow5, &z); + } + else + { + /* Divide m by pow5 and round. */ + z_memory = divide (m, pow5, &z); + } + } + else + { + pow5.limbs = pow5_ptr; + pow5.nlimbs = pow5_len; + if (n >= 0) + { + /* n >= 0, s < 0. + Multiply m with pow5, then divide by 2^|s|. */ + mpn_t numerator; + mpn_t denominator; + void *tmp_memory; + tmp_memory = multiply (m, pow5, &numerator); + if (tmp_memory == NULL) + { + free (pow5_ptr); + free (memory); + return NULL; + } + /* Construct 2^|s|. */ + { + mp_limb_t *ptr = pow5_ptr + pow5_len; + size_t i; + for (i = 0; i < s_limbs; i++) + ptr[i] = 0; + ptr[s_limbs] = (mp_limb_t) 1 << s_bits; + denominator.limbs = ptr; + denominator.nlimbs = s_limbs + 1; + } + z_memory = divide (numerator, denominator, &z); + free (tmp_memory); + } + else + { + /* n < 0, s > 0. + Multiply m with 2^s, then divide by pow5. */ + mpn_t numerator; + mp_limb_t *num_ptr; + num_ptr = (mp_limb_t *) malloc ((m.nlimbs + s_limbs + 1) + * sizeof (mp_limb_t)); + if (num_ptr == NULL) + { + free (pow5_ptr); + free (memory); + return NULL; + } + { + mp_limb_t *destptr = num_ptr; + { + size_t i; + for (i = 0; i < s_limbs; i++) + *destptr++ = 0; + } + if (s_bits > 0) + { + const mp_limb_t *sourceptr = m.limbs; + mp_twolimb_t accu = 0; + size_t count; + for (count = m.nlimbs; count > 0; count--) + { + accu += (mp_twolimb_t) *sourceptr++ << s_bits; + *destptr++ = (mp_limb_t) accu; + accu = accu >> GMP_LIMB_BITS; + } + if (accu > 0) + *destptr++ = (mp_limb_t) accu; + } + else + { + const mp_limb_t *sourceptr = m.limbs; + size_t count; + for (count = m.nlimbs; count > 0; count--) + *destptr++ = *sourceptr++; + } + numerator.limbs = num_ptr; + numerator.nlimbs = destptr - num_ptr; + } + z_memory = divide (numerator, pow5, &z); + free (num_ptr); + } + } + free (pow5_ptr); + free (memory); + + /* Here y = round (x * 10^n) = z * 10^extra_zeroes. */ + + if (z_memory == NULL) + return NULL; + digits = convert_to_decimal (z, extra_zeroes); + free (z_memory); + return digits; +} + +# if NEED_PRINTF_LONG_DOUBLE + +/* Assuming x is finite and >= 0, and n is an integer: + Returns the decimal representation of round (x * 10^n). + Return the allocated memory - containing the decimal digits in low-to-high + order, terminated with a NUL character - in case of success, NULL in case + of memory allocation failure. */ +static char * +scale10_round_decimal_long_double (long double x, int n) +{ + int e; + mpn_t m; + void *memory = decode_long_double (x, &e, &m); + return scale10_round_decimal_decoded (e, m, memory, n); +} + +# endif + +# if NEED_PRINTF_DOUBLE + +/* Assuming x is finite and >= 0, and n is an integer: + Returns the decimal representation of round (x * 10^n). + Return the allocated memory - containing the decimal digits in low-to-high + order, terminated with a NUL character - in case of success, NULL in case + of memory allocation failure. */ +static char * +scale10_round_decimal_double (double x, int n) +{ + int e; + mpn_t m; + void *memory = decode_double (x, &e, &m); + return scale10_round_decimal_decoded (e, m, memory, n); +} + +# endif + +# if NEED_PRINTF_LONG_DOUBLE + +/* Assuming x is finite and > 0: + Return an approximation for n with 10^n <= x < 10^(n+1). + The approximation is usually the right n, but may be off by 1 sometimes. */ +static int +floorlog10l (long double x) +{ + int exp; + long double y; + double z; + double l; + + /* Split into exponential part and mantissa. */ + y = frexpl (x, &exp); + if (!(y >= 0.0L && y < 1.0L)) + abort (); + if (y == 0.0L) + return INT_MIN; + if (y < 0.5L) + { + while (y < (1.0L / (1 << (GMP_LIMB_BITS / 2)) / (1 << (GMP_LIMB_BITS / 2)))) + { + y *= 1.0L * (1 << (GMP_LIMB_BITS / 2)) * (1 << (GMP_LIMB_BITS / 2)); + exp -= GMP_LIMB_BITS; + } + if (y < (1.0L / (1 << 16))) + { + y *= 1.0L * (1 << 16); + exp -= 16; + } + if (y < (1.0L / (1 << 8))) + { + y *= 1.0L * (1 << 8); + exp -= 8; + } + if (y < (1.0L / (1 << 4))) + { + y *= 1.0L * (1 << 4); + exp -= 4; + } + if (y < (1.0L / (1 << 2))) + { + y *= 1.0L * (1 << 2); + exp -= 2; + } + if (y < (1.0L / (1 << 1))) + { + y *= 1.0L * (1 << 1); + exp -= 1; + } + } + if (!(y >= 0.5L && y < 1.0L)) + abort (); + /* Compute an approximation for l = log2(x) = exp + log2(y). */ + l = exp; + z = y; + if (z < 0.70710678118654752444) + { + z *= 1.4142135623730950488; + l -= 0.5; + } + if (z < 0.8408964152537145431) + { + z *= 1.1892071150027210667; + l -= 0.25; + } + if (z < 0.91700404320467123175) + { + z *= 1.0905077326652576592; + l -= 0.125; + } + if (z < 0.9576032806985736469) + { + z *= 1.0442737824274138403; + l -= 0.0625; + } + /* Now 0.95 <= z <= 1.01. */ + z = 1 - z; + /* log(1-z) = - z - z^2/2 - z^3/3 - z^4/4 - ... + Four terms are enough to get an approximation with error < 10^-7. */ + l -= z * (1.0 + z * (0.5 + z * ((1.0 / 3) + z * 0.25))); + /* Finally multiply with log(2)/log(10), yields an approximation for + log10(x). */ + l *= 0.30102999566398119523; + /* Round down to the next integer. */ + return (int) l + (l < 0 ? -1 : 0); +} + +# endif + +# if NEED_PRINTF_DOUBLE + +/* Assuming x is finite and > 0: + Return an approximation for n with 10^n <= x < 10^(n+1). + The approximation is usually the right n, but may be off by 1 sometimes. */ +static int +floorlog10 (double x) +{ + int exp; + double y; + double z; + double l; + + /* Split into exponential part and mantissa. */ + y = frexp (x, &exp); + if (!(y >= 0.0 && y < 1.0)) + abort (); + if (y == 0.0) + return INT_MIN; + if (y < 0.5) + { + while (y < (1.0 / (1 << (GMP_LIMB_BITS / 2)) / (1 << (GMP_LIMB_BITS / 2)))) + { + y *= 1.0 * (1 << (GMP_LIMB_BITS / 2)) * (1 << (GMP_LIMB_BITS / 2)); + exp -= GMP_LIMB_BITS; + } + if (y < (1.0 / (1 << 16))) + { + y *= 1.0 * (1 << 16); + exp -= 16; + } + if (y < (1.0 / (1 << 8))) + { + y *= 1.0 * (1 << 8); + exp -= 8; + } + if (y < (1.0 / (1 << 4))) + { + y *= 1.0 * (1 << 4); + exp -= 4; + } + if (y < (1.0 / (1 << 2))) + { + y *= 1.0 * (1 << 2); + exp -= 2; + } + if (y < (1.0 / (1 << 1))) + { + y *= 1.0 * (1 << 1); + exp -= 1; + } + } + if (!(y >= 0.5 && y < 1.0)) + abort (); + /* Compute an approximation for l = log2(x) = exp + log2(y). */ + l = exp; + z = y; + if (z < 0.70710678118654752444) + { + z *= 1.4142135623730950488; + l -= 0.5; + } + if (z < 0.8408964152537145431) + { + z *= 1.1892071150027210667; + l -= 0.25; + } + if (z < 0.91700404320467123175) + { + z *= 1.0905077326652576592; + l -= 0.125; + } + if (z < 0.9576032806985736469) + { + z *= 1.0442737824274138403; + l -= 0.0625; + } + /* Now 0.95 <= z <= 1.01. */ + z = 1 - z; + /* log(1-z) = - z - z^2/2 - z^3/3 - z^4/4 - ... + Four terms are enough to get an approximation with error < 10^-7. */ + l -= z * (1.0 + z * (0.5 + z * ((1.0 / 3) + z * 0.25))); + /* Finally multiply with log(2)/log(10), yields an approximation for + log10(x). */ + l *= 0.30102999566398119523; + /* Round down to the next integer. */ + return (int) l + (l < 0 ? -1 : 0); +} + +# endif + +#endif + +DCHAR_T * +VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp, + const FCHAR_T *format, va_list args) +{ + DIRECTIVES d; + arguments a; + + if (PRINTF_PARSE (format, &d, &a) < 0) + /* errno is already set. */ + return NULL; + +#define CLEANUP() \ + free (d.dir); \ + if (a.arg) \ + free (a.arg); + + if (PRINTF_FETCHARGS (args, &a) < 0) + { + CLEANUP (); + errno = EINVAL; + return NULL; + } + + { + size_t buf_neededlength; + TCHAR_T *buf; + TCHAR_T *buf_malloced; + const FCHAR_T *cp; + size_t i; + DIRECTIVE *dp; + /* Output string accumulator. */ + DCHAR_T *result; + size_t allocated; + size_t length; + + /* Allocate a small buffer that will hold a directive passed to + sprintf or snprintf. */ + buf_neededlength = + xsum4 (7, d.max_width_length, d.max_precision_length, 6); +#if HAVE_ALLOCA + if (buf_neededlength < 4000 / sizeof (TCHAR_T)) + { + buf = (TCHAR_T *) alloca (buf_neededlength * sizeof (TCHAR_T)); + buf_malloced = NULL; + } + else +#endif + { + size_t buf_memsize = xtimes (buf_neededlength, sizeof (TCHAR_T)); + if (size_overflow_p (buf_memsize)) + goto out_of_memory_1; + buf = (TCHAR_T *) malloc (buf_memsize); + if (buf == NULL) + goto out_of_memory_1; + buf_malloced = buf; + } + + if (resultbuf != NULL) + { + result = resultbuf; + allocated = *lengthp; + } + else + { + result = NULL; + allocated = 0; + } + length = 0; + /* Invariants: + result is either == resultbuf or == NULL or malloc-allocated. + If length > 0, then result != NULL. */ + + /* Ensures that allocated >= needed. Aborts through a jump to + out_of_memory if needed is SIZE_MAX or otherwise too big. */ +#define ENSURE_ALLOCATION(needed) \ + if ((needed) > allocated) \ + { \ + size_t memory_size; \ + DCHAR_T *memory; \ + \ + allocated = (allocated > 0 ? xtimes (allocated, 2) : 12); \ + if ((needed) > allocated) \ + allocated = (needed); \ + memory_size = xtimes (allocated, sizeof (DCHAR_T)); \ + if (size_overflow_p (memory_size)) \ + goto out_of_memory; \ + if (result == resultbuf || result == NULL) \ + memory = (DCHAR_T *) malloc (memory_size); \ + else \ + memory = (DCHAR_T *) realloc (result, memory_size); \ + if (memory == NULL) \ + goto out_of_memory; \ + if (result == resultbuf && length > 0) \ + DCHAR_CPY (memory, result, length); \ + result = memory; \ + } + + for (cp = format, i = 0, dp = &d.dir[0]; ; cp = dp->dir_end, i++, dp++) + { + if (cp != dp->dir_start) + { + size_t n = dp->dir_start - cp; + size_t augmented_length = xsum (length, n); + + ENSURE_ALLOCATION (augmented_length); + /* This copies a piece of FCHAR_T[] into a DCHAR_T[]. Here we + need that the format string contains only ASCII characters + if FCHAR_T and DCHAR_T are not the same type. */ + if (sizeof (FCHAR_T) == sizeof (DCHAR_T)) + { + DCHAR_CPY (result + length, (const DCHAR_T *) cp, n); + length = augmented_length; + } + else + { + do + result[length++] = (unsigned char) *cp++; + while (--n > 0); + } + } + if (i == d.count) + break; + + /* Execute a single directive. */ + if (dp->conversion == '%') + { + size_t augmented_length; + + if (!(dp->arg_index == ARG_NONE)) + abort (); + augmented_length = xsum (length, 1); + ENSURE_ALLOCATION (augmented_length); + result[length] = '%'; + length = augmented_length; + } + else + { + if (!(dp->arg_index != ARG_NONE)) + abort (); + + if (dp->conversion == 'n') + { + switch (a.arg[dp->arg_index].type) + { + case TYPE_COUNT_SCHAR_POINTER: + *a.arg[dp->arg_index].a.a_count_schar_pointer = length; + break; + case TYPE_COUNT_SHORT_POINTER: + *a.arg[dp->arg_index].a.a_count_short_pointer = length; + break; + case TYPE_COUNT_INT_POINTER: + *a.arg[dp->arg_index].a.a_count_int_pointer = length; + break; + case TYPE_COUNT_LONGINT_POINTER: + *a.arg[dp->arg_index].a.a_count_longint_pointer = length; + break; +#if HAVE_LONG_LONG_INT + case TYPE_COUNT_LONGLONGINT_POINTER: + *a.arg[dp->arg_index].a.a_count_longlongint_pointer = length; + break; +#endif + default: + abort (); + } + } +#if ENABLE_UNISTDIO + /* The unistdio extensions. */ + else if (dp->conversion == 'U') + { + arg_type type = a.arg[dp->arg_index].type; + int flags = dp->flags; + int has_width; + size_t width; + int has_precision; + size_t precision; + + has_width = 0; + width = 0; + if (dp->width_start != dp->width_end) + { + if (dp->width_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->width_arg_index].a.a_int; + if (arg < 0) + { + /* "A negative field width is taken as a '-' flag + followed by a positive field width." */ + flags |= FLAG_LEFT; + width = (unsigned int) (-arg); + } + else + width = arg; + } + else + { + const FCHAR_T *digitp = dp->width_start; + + do + width = xsum (xtimes (width, 10), *digitp++ - '0'); + while (digitp != dp->width_end); + } + has_width = 1; + } + + has_precision = 0; + precision = 0; + if (dp->precision_start != dp->precision_end) + { + if (dp->precision_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->precision_arg_index].a.a_int; + /* "A negative precision is taken as if the precision + were omitted." */ + if (arg >= 0) + { + precision = arg; + has_precision = 1; + } + } + else + { + const FCHAR_T *digitp = dp->precision_start + 1; + + precision = 0; + while (digitp != dp->precision_end) + precision = xsum (xtimes (precision, 10), *digitp++ - '0'); + has_precision = 1; + } + } + + switch (type) + { + case TYPE_U8_STRING: + { + const uint8_t *arg = a.arg[dp->arg_index].a.a_u8_string; + const uint8_t *arg_end; + size_t characters; + + if (has_precision) + { + /* Use only PRECISION characters, from the left. */ + arg_end = arg; + characters = 0; + for (; precision > 0; precision--) + { + int count = u8_strmblen (arg_end); + if (count == 0) + break; + if (count < 0) + { + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EILSEQ; + return NULL; + } + arg_end += count; + characters++; + } + } + else if (has_width) + { + /* Use the entire string, and count the number of + characters. */ + arg_end = arg; + characters = 0; + for (;;) + { + int count = u8_strmblen (arg_end); + if (count == 0) + break; + if (count < 0) + { + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EILSEQ; + return NULL; + } + arg_end += count; + characters++; + } + } + else + { + /* Use the entire string. */ + arg_end = arg + u8_strlen (arg); + /* The number of characters doesn't matter. */ + characters = 0; + } + + if (has_width && width > characters + && !(dp->flags & FLAG_LEFT)) + { + size_t n = width - characters; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_SET (result + length, ' ', n); + length += n; + } + +# if DCHAR_IS_UINT8_T + { + size_t n = arg_end - arg; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_CPY (result + length, arg, n); + length += n; + } +# else + { /* Convert. */ + DCHAR_T *converted = result + length; + size_t converted_len = allocated - length; +# if DCHAR_IS_TCHAR + /* Convert from UTF-8 to locale encoding. */ + if (u8_conv_to_encoding (locale_charset (), + iconveh_question_mark, + arg, arg_end - arg, NULL, + &converted, &converted_len) + < 0) +# else + /* Convert from UTF-8 to UTF-16/UTF-32. */ + converted = + U8_TO_DCHAR (arg, arg_end - arg, + converted, &converted_len); + if (converted == NULL) +# endif + { + int saved_errno = errno; + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = saved_errno; + return NULL; + } + if (converted != result + length) + { + ENSURE_ALLOCATION (xsum (length, converted_len)); + DCHAR_CPY (result + length, converted, converted_len); + free (converted); + } + length += converted_len; + } +# endif + + if (has_width && width > characters + && (dp->flags & FLAG_LEFT)) + { + size_t n = width - characters; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_SET (result + length, ' ', n); + length += n; + } + } + break; + + case TYPE_U16_STRING: + { + const uint16_t *arg = a.arg[dp->arg_index].a.a_u16_string; + const uint16_t *arg_end; + size_t characters; + + if (has_precision) + { + /* Use only PRECISION characters, from the left. */ + arg_end = arg; + characters = 0; + for (; precision > 0; precision--) + { + int count = u16_strmblen (arg_end); + if (count == 0) + break; + if (count < 0) + { + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EILSEQ; + return NULL; + } + arg_end += count; + characters++; + } + } + else if (has_width) + { + /* Use the entire string, and count the number of + characters. */ + arg_end = arg; + characters = 0; + for (;;) + { + int count = u16_strmblen (arg_end); + if (count == 0) + break; + if (count < 0) + { + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EILSEQ; + return NULL; + } + arg_end += count; + characters++; + } + } + else + { + /* Use the entire string. */ + arg_end = arg + u16_strlen (arg); + /* The number of characters doesn't matter. */ + characters = 0; + } + + if (has_width && width > characters + && !(dp->flags & FLAG_LEFT)) + { + size_t n = width - characters; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_SET (result + length, ' ', n); + length += n; + } + +# if DCHAR_IS_UINT16_T + { + size_t n = arg_end - arg; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_CPY (result + length, arg, n); + length += n; + } +# else + { /* Convert. */ + DCHAR_T *converted = result + length; + size_t converted_len = allocated - length; +# if DCHAR_IS_TCHAR + /* Convert from UTF-16 to locale encoding. */ + if (u16_conv_to_encoding (locale_charset (), + iconveh_question_mark, + arg, arg_end - arg, NULL, + &converted, &converted_len) + < 0) +# else + /* Convert from UTF-16 to UTF-8/UTF-32. */ + converted = + U16_TO_DCHAR (arg, arg_end - arg, + converted, &converted_len); + if (converted == NULL) +# endif + { + int saved_errno = errno; + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = saved_errno; + return NULL; + } + if (converted != result + length) + { + ENSURE_ALLOCATION (xsum (length, converted_len)); + DCHAR_CPY (result + length, converted, converted_len); + free (converted); + } + length += converted_len; + } +# endif + + if (has_width && width > characters + && (dp->flags & FLAG_LEFT)) + { + size_t n = width - characters; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_SET (result + length, ' ', n); + length += n; + } + } + break; + + case TYPE_U32_STRING: + { + const uint32_t *arg = a.arg[dp->arg_index].a.a_u32_string; + const uint32_t *arg_end; + size_t characters; + + if (has_precision) + { + /* Use only PRECISION characters, from the left. */ + arg_end = arg; + characters = 0; + for (; precision > 0; precision--) + { + int count = u32_strmblen (arg_end); + if (count == 0) + break; + if (count < 0) + { + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EILSEQ; + return NULL; + } + arg_end += count; + characters++; + } + } + else if (has_width) + { + /* Use the entire string, and count the number of + characters. */ + arg_end = arg; + characters = 0; + for (;;) + { + int count = u32_strmblen (arg_end); + if (count == 0) + break; + if (count < 0) + { + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EILSEQ; + return NULL; + } + arg_end += count; + characters++; + } + } + else + { + /* Use the entire string. */ + arg_end = arg + u32_strlen (arg); + /* The number of characters doesn't matter. */ + characters = 0; + } + + if (has_width && width > characters + && !(dp->flags & FLAG_LEFT)) + { + size_t n = width - characters; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_SET (result + length, ' ', n); + length += n; + } + +# if DCHAR_IS_UINT32_T + { + size_t n = arg_end - arg; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_CPY (result + length, arg, n); + length += n; + } +# else + { /* Convert. */ + DCHAR_T *converted = result + length; + size_t converted_len = allocated - length; +# if DCHAR_IS_TCHAR + /* Convert from UTF-32 to locale encoding. */ + if (u32_conv_to_encoding (locale_charset (), + iconveh_question_mark, + arg, arg_end - arg, NULL, + &converted, &converted_len) + < 0) +# else + /* Convert from UTF-32 to UTF-8/UTF-16. */ + converted = + U32_TO_DCHAR (arg, arg_end - arg, + converted, &converted_len); + if (converted == NULL) +# endif + { + int saved_errno = errno; + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = saved_errno; + return NULL; + } + if (converted != result + length) + { + ENSURE_ALLOCATION (xsum (length, converted_len)); + DCHAR_CPY (result + length, converted, converted_len); + free (converted); + } + length += converted_len; + } +# endif + + if (has_width && width > characters + && (dp->flags & FLAG_LEFT)) + { + size_t n = width - characters; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_SET (result + length, ' ', n); + length += n; + } + } + break; + + default: + abort (); + } + } +#endif +#if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE) && !defined IN_LIBINTL + else if ((dp->conversion == 'a' || dp->conversion == 'A') +# if !(NEED_PRINTF_DIRECTIVE_A || (NEED_PRINTF_LONG_DOUBLE && NEED_PRINTF_DOUBLE)) + && (0 +# if NEED_PRINTF_DOUBLE + || a.arg[dp->arg_index].type == TYPE_DOUBLE +# endif +# if NEED_PRINTF_LONG_DOUBLE + || a.arg[dp->arg_index].type == TYPE_LONGDOUBLE +# endif + ) +# endif + ) + { + arg_type type = a.arg[dp->arg_index].type; + int flags = dp->flags; + int has_width; + size_t width; + int has_precision; + size_t precision; + size_t tmp_length; + DCHAR_T tmpbuf[700]; + DCHAR_T *tmp; + DCHAR_T *pad_ptr; + DCHAR_T *p; + + has_width = 0; + width = 0; + if (dp->width_start != dp->width_end) + { + if (dp->width_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->width_arg_index].a.a_int; + if (arg < 0) + { + /* "A negative field width is taken as a '-' flag + followed by a positive field width." */ + flags |= FLAG_LEFT; + width = (unsigned int) (-arg); + } + else + width = arg; + } + else + { + const FCHAR_T *digitp = dp->width_start; + + do + width = xsum (xtimes (width, 10), *digitp++ - '0'); + while (digitp != dp->width_end); + } + has_width = 1; + } + + has_precision = 0; + precision = 0; + if (dp->precision_start != dp->precision_end) + { + if (dp->precision_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->precision_arg_index].a.a_int; + /* "A negative precision is taken as if the precision + were omitted." */ + if (arg >= 0) + { + precision = arg; + has_precision = 1; + } + } + else + { + const FCHAR_T *digitp = dp->precision_start + 1; + + precision = 0; + while (digitp != dp->precision_end) + precision = xsum (xtimes (precision, 10), *digitp++ - '0'); + has_precision = 1; + } + } + + /* Allocate a temporary buffer of sufficient size. */ + if (type == TYPE_LONGDOUBLE) + tmp_length = + (unsigned int) ((LDBL_DIG + 1) + * 0.831 /* decimal -> hexadecimal */ + ) + + 1; /* turn floor into ceil */ + else + tmp_length = + (unsigned int) ((DBL_DIG + 1) + * 0.831 /* decimal -> hexadecimal */ + ) + + 1; /* turn floor into ceil */ + if (tmp_length < precision) + tmp_length = precision; + /* Account for sign, decimal point etc. */ + tmp_length = xsum (tmp_length, 12); + + if (tmp_length < width) + tmp_length = width; + + tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */ + + if (tmp_length <= sizeof (tmpbuf) / sizeof (DCHAR_T)) + tmp = tmpbuf; + else + { + size_t tmp_memsize = xtimes (tmp_length, sizeof (DCHAR_T)); + + if (size_overflow_p (tmp_memsize)) + /* Overflow, would lead to out of memory. */ + goto out_of_memory; + tmp = (DCHAR_T *) malloc (tmp_memsize); + if (tmp == NULL) + /* Out of memory. */ + goto out_of_memory; + } + + pad_ptr = NULL; + p = tmp; + if (type == TYPE_LONGDOUBLE) + { +# if NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE + long double arg = a.arg[dp->arg_index].a.a_longdouble; + + if (isnanl (arg)) + { + if (dp->conversion == 'A') + { + *p++ = 'N'; *p++ = 'A'; *p++ = 'N'; + } + else + { + *p++ = 'n'; *p++ = 'a'; *p++ = 'n'; + } + } + else + { + int sign = 0; + DECL_LONG_DOUBLE_ROUNDING + + BEGIN_LONG_DOUBLE_ROUNDING (); + + if (signbit (arg)) /* arg < 0.0L or negative zero */ + { + sign = -1; + arg = -arg; + } + + if (sign < 0) + *p++ = '-'; + else if (flags & FLAG_SHOWSIGN) + *p++ = '+'; + else if (flags & FLAG_SPACE) + *p++ = ' '; + + if (arg > 0.0L && arg + arg == arg) + { + if (dp->conversion == 'A') + { + *p++ = 'I'; *p++ = 'N'; *p++ = 'F'; + } + else + { + *p++ = 'i'; *p++ = 'n'; *p++ = 'f'; + } + } + else + { + int exponent; + long double mantissa; + + if (arg > 0.0L) + mantissa = printf_frexpl (arg, &exponent); + else + { + exponent = 0; + mantissa = 0.0L; + } + + if (has_precision + && precision < (unsigned int) ((LDBL_DIG + 1) * 0.831) + 1) + { + /* Round the mantissa. */ + long double tail = mantissa; + size_t q; + + for (q = precision; ; q--) + { + int digit = (int) tail; + tail -= digit; + if (q == 0) + { + if (digit & 1 ? tail >= 0.5L : tail > 0.5L) + tail = 1 - tail; + else + tail = - tail; + break; + } + tail *= 16.0L; + } + if (tail != 0.0L) + for (q = precision; q > 0; q--) + tail *= 0.0625L; + mantissa += tail; + } + + *p++ = '0'; + *p++ = dp->conversion - 'A' + 'X'; + pad_ptr = p; + { + int digit; + + digit = (int) mantissa; + mantissa -= digit; + *p++ = '0' + digit; + if ((flags & FLAG_ALT) + || mantissa > 0.0L || precision > 0) + { + *p++ = decimal_point_char (); + /* This loop terminates because we assume + that FLT_RADIX is a power of 2. */ + while (mantissa > 0.0L) + { + mantissa *= 16.0L; + digit = (int) mantissa; + mantissa -= digit; + *p++ = digit + + (digit < 10 + ? '0' + : dp->conversion - 10); + if (precision > 0) + precision--; + } + while (precision > 0) + { + *p++ = '0'; + precision--; + } + } + } + *p++ = dp->conversion - 'A' + 'P'; +# if WIDE_CHAR_VERSION + { + static const wchar_t decimal_format[] = + { '%', '+', 'd', '\0' }; + SNPRINTF (p, 6 + 1, decimal_format, exponent); + } + while (*p != '\0') + p++; +# else + if (sizeof (DCHAR_T) == 1) + { + sprintf ((char *) p, "%+d", exponent); + while (*p != '\0') + p++; + } + else + { + char expbuf[6 + 1]; + const char *ep; + sprintf (expbuf, "%+d", exponent); + for (ep = expbuf; (*p = *ep) != '\0'; ep++) + p++; + } +# endif + } + + END_LONG_DOUBLE_ROUNDING (); + } +# else + abort (); +# endif + } + else + { +# if NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_DOUBLE + double arg = a.arg[dp->arg_index].a.a_double; + + if (isnan (arg)) + { + if (dp->conversion == 'A') + { + *p++ = 'N'; *p++ = 'A'; *p++ = 'N'; + } + else + { + *p++ = 'n'; *p++ = 'a'; *p++ = 'n'; + } + } + else + { + int sign = 0; + + if (signbit (arg)) /* arg < 0.0 or negative zero */ + { + sign = -1; + arg = -arg; + } + + if (sign < 0) + *p++ = '-'; + else if (flags & FLAG_SHOWSIGN) + *p++ = '+'; + else if (flags & FLAG_SPACE) + *p++ = ' '; + + if (arg > 0.0 && arg + arg == arg) + { + if (dp->conversion == 'A') + { + *p++ = 'I'; *p++ = 'N'; *p++ = 'F'; + } + else + { + *p++ = 'i'; *p++ = 'n'; *p++ = 'f'; + } + } + else + { + int exponent; + double mantissa; + + if (arg > 0.0) + mantissa = printf_frexp (arg, &exponent); + else + { + exponent = 0; + mantissa = 0.0; + } + + if (has_precision + && precision < (unsigned int) ((DBL_DIG + 1) * 0.831) + 1) + { + /* Round the mantissa. */ + double tail = mantissa; + size_t q; + + for (q = precision; ; q--) + { + int digit = (int) tail; + tail -= digit; + if (q == 0) + { + if (digit & 1 ? tail >= 0.5 : tail > 0.5) + tail = 1 - tail; + else + tail = - tail; + break; + } + tail *= 16.0; + } + if (tail != 0.0) + for (q = precision; q > 0; q--) + tail *= 0.0625; + mantissa += tail; + } + + *p++ = '0'; + *p++ = dp->conversion - 'A' + 'X'; + pad_ptr = p; + { + int digit; + + digit = (int) mantissa; + mantissa -= digit; + *p++ = '0' + digit; + if ((flags & FLAG_ALT) + || mantissa > 0.0 || precision > 0) + { + *p++ = decimal_point_char (); + /* This loop terminates because we assume + that FLT_RADIX is a power of 2. */ + while (mantissa > 0.0) + { + mantissa *= 16.0; + digit = (int) mantissa; + mantissa -= digit; + *p++ = digit + + (digit < 10 + ? '0' + : dp->conversion - 10); + if (precision > 0) + precision--; + } + while (precision > 0) + { + *p++ = '0'; + precision--; + } + } + } + *p++ = dp->conversion - 'A' + 'P'; +# if WIDE_CHAR_VERSION + { + static const wchar_t decimal_format[] = + { '%', '+', 'd', '\0' }; + SNPRINTF (p, 6 + 1, decimal_format, exponent); + } + while (*p != '\0') + p++; +# else + if (sizeof (DCHAR_T) == 1) + { + sprintf ((char *) p, "%+d", exponent); + while (*p != '\0') + p++; + } + else + { + char expbuf[6 + 1]; + const char *ep; + sprintf (expbuf, "%+d", exponent); + for (ep = expbuf; (*p = *ep) != '\0'; ep++) + p++; + } +# endif + } + } +# else + abort (); +# endif + } + /* The generated string now extends from tmp to p, with the + zero padding insertion point being at pad_ptr. */ + if (has_width && p - tmp < width) + { + size_t pad = width - (p - tmp); + DCHAR_T *end = p + pad; + + if (flags & FLAG_LEFT) + { + /* Pad with spaces on the right. */ + for (; pad > 0; pad--) + *p++ = ' '; + } + else if ((flags & FLAG_ZERO) && pad_ptr != NULL) + { + /* Pad with zeroes. */ + DCHAR_T *q = end; + + while (p > pad_ptr) + *--q = *--p; + for (; pad > 0; pad--) + *p++ = '0'; + } + else + { + /* Pad with spaces on the left. */ + DCHAR_T *q = end; + + while (p > tmp) + *--q = *--p; + for (; pad > 0; pad--) + *p++ = ' '; + } + + p = end; + } + + { + size_t count = p - tmp; + + if (count >= tmp_length) + /* tmp_length was incorrectly calculated - fix the + code above! */ + abort (); + + /* Make room for the result. */ + if (count >= allocated - length) + { + size_t n = xsum (length, count); + + ENSURE_ALLOCATION (n); + } + + /* Append the result. */ + memcpy (result + length, tmp, count * sizeof (DCHAR_T)); + if (tmp != tmpbuf) + free (tmp); + length += count; + } + } +#endif +#if (NEED_PRINTF_INFINITE_DOUBLE || NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE || NEED_PRINTF_LONG_DOUBLE) && !defined IN_LIBINTL + else if ((dp->conversion == 'f' || dp->conversion == 'F' + || dp->conversion == 'e' || dp->conversion == 'E' + || dp->conversion == 'g' || dp->conversion == 'G' + || dp->conversion == 'a' || dp->conversion == 'A') + && (0 +# if NEED_PRINTF_DOUBLE + || a.arg[dp->arg_index].type == TYPE_DOUBLE +# elif NEED_PRINTF_INFINITE_DOUBLE + || (a.arg[dp->arg_index].type == TYPE_DOUBLE + /* The systems (mingw) which produce wrong output + for Inf, -Inf, and NaN also do so for -0.0. + Therefore we treat this case here as well. */ + && is_infinite_or_zero (a.arg[dp->arg_index].a.a_double)) +# endif +# if NEED_PRINTF_LONG_DOUBLE + || a.arg[dp->arg_index].type == TYPE_LONGDOUBLE +# elif NEED_PRINTF_INFINITE_LONG_DOUBLE + || (a.arg[dp->arg_index].type == TYPE_LONGDOUBLE + /* Some systems produce wrong output for Inf, + -Inf, and NaN. */ + && is_infinitel (a.arg[dp->arg_index].a.a_longdouble)) +# endif + )) + { +# if (NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE) && (NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE) + arg_type type = a.arg[dp->arg_index].type; +# endif + int flags = dp->flags; + int has_width; + size_t width; + int has_precision; + size_t precision; + size_t tmp_length; + DCHAR_T tmpbuf[700]; + DCHAR_T *tmp; + DCHAR_T *pad_ptr; + DCHAR_T *p; + + has_width = 0; + width = 0; + if (dp->width_start != dp->width_end) + { + if (dp->width_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->width_arg_index].a.a_int; + if (arg < 0) + { + /* "A negative field width is taken as a '-' flag + followed by a positive field width." */ + flags |= FLAG_LEFT; + width = (unsigned int) (-arg); + } + else + width = arg; + } + else + { + const FCHAR_T *digitp = dp->width_start; + + do + width = xsum (xtimes (width, 10), *digitp++ - '0'); + while (digitp != dp->width_end); + } + has_width = 1; + } + + has_precision = 0; + precision = 0; + if (dp->precision_start != dp->precision_end) + { + if (dp->precision_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->precision_arg_index].a.a_int; + /* "A negative precision is taken as if the precision + were omitted." */ + if (arg >= 0) + { + precision = arg; + has_precision = 1; + } + } + else + { + const FCHAR_T *digitp = dp->precision_start + 1; + + precision = 0; + while (digitp != dp->precision_end) + precision = xsum (xtimes (precision, 10), *digitp++ - '0'); + has_precision = 1; + } + } + + /* POSIX specifies the default precision to be 6 for %f, %F, + %e, %E, but not for %g, %G. Implementations appear to use + the same default precision also for %g, %G. */ + if (!has_precision) + precision = 6; + + /* Allocate a temporary buffer of sufficient size. */ +# if NEED_PRINTF_DOUBLE && NEED_PRINTF_LONG_DOUBLE + tmp_length = (type == TYPE_LONGDOUBLE ? LDBL_DIG + 1 : DBL_DIG + 1); +# elif NEED_PRINTF_INFINITE_DOUBLE && NEED_PRINTF_LONG_DOUBLE + tmp_length = (type == TYPE_LONGDOUBLE ? LDBL_DIG + 1 : 0); +# elif NEED_PRINTF_LONG_DOUBLE + tmp_length = LDBL_DIG + 1; +# elif NEED_PRINTF_DOUBLE + tmp_length = DBL_DIG + 1; +# else + tmp_length = 0; +# endif + if (tmp_length < precision) + tmp_length = precision; +# if NEED_PRINTF_LONG_DOUBLE +# if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE + if (type == TYPE_LONGDOUBLE) +# endif + if (dp->conversion == 'f' || dp->conversion == 'F') + { + long double arg = a.arg[dp->arg_index].a.a_longdouble; + if (!(isnanl (arg) || arg + arg == arg)) + { + /* arg is finite and nonzero. */ + int exponent = floorlog10l (arg < 0 ? -arg : arg); + if (exponent >= 0 && tmp_length < exponent + precision) + tmp_length = exponent + precision; + } + } +# endif +# if NEED_PRINTF_DOUBLE +# if NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE + if (type == TYPE_DOUBLE) +# endif + if (dp->conversion == 'f' || dp->conversion == 'F') + { + double arg = a.arg[dp->arg_index].a.a_double; + if (!(isnan (arg) || arg + arg == arg)) + { + /* arg is finite and nonzero. */ + int exponent = floorlog10 (arg < 0 ? -arg : arg); + if (exponent >= 0 && tmp_length < exponent + precision) + tmp_length = exponent + precision; + } + } +# endif + /* Account for sign, decimal point etc. */ + tmp_length = xsum (tmp_length, 12); + + if (tmp_length < width) + tmp_length = width; + + tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */ + + if (tmp_length <= sizeof (tmpbuf) / sizeof (DCHAR_T)) + tmp = tmpbuf; + else + { + size_t tmp_memsize = xtimes (tmp_length, sizeof (DCHAR_T)); + + if (size_overflow_p (tmp_memsize)) + /* Overflow, would lead to out of memory. */ + goto out_of_memory; + tmp = (DCHAR_T *) malloc (tmp_memsize); + if (tmp == NULL) + /* Out of memory. */ + goto out_of_memory; + } + + pad_ptr = NULL; + p = tmp; + +# if NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE +# if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE + if (type == TYPE_LONGDOUBLE) +# endif + { + long double arg = a.arg[dp->arg_index].a.a_longdouble; + + if (isnanl (arg)) + { + if (dp->conversion >= 'A' && dp->conversion <= 'Z') + { + *p++ = 'N'; *p++ = 'A'; *p++ = 'N'; + } + else + { + *p++ = 'n'; *p++ = 'a'; *p++ = 'n'; + } + } + else + { + int sign = 0; + DECL_LONG_DOUBLE_ROUNDING + + BEGIN_LONG_DOUBLE_ROUNDING (); + + if (signbit (arg)) /* arg < 0.0L or negative zero */ + { + sign = -1; + arg = -arg; + } + + if (sign < 0) + *p++ = '-'; + else if (flags & FLAG_SHOWSIGN) + *p++ = '+'; + else if (flags & FLAG_SPACE) + *p++ = ' '; + + if (arg > 0.0L && arg + arg == arg) + { + if (dp->conversion >= 'A' && dp->conversion <= 'Z') + { + *p++ = 'I'; *p++ = 'N'; *p++ = 'F'; + } + else + { + *p++ = 'i'; *p++ = 'n'; *p++ = 'f'; + } + } + else + { +# if NEED_PRINTF_LONG_DOUBLE + pad_ptr = p; + + if (dp->conversion == 'f' || dp->conversion == 'F') + { + char *digits; + size_t ndigits; + + digits = + scale10_round_decimal_long_double (arg, precision); + if (digits == NULL) + { + END_LONG_DOUBLE_ROUNDING (); + goto out_of_memory; + } + ndigits = strlen (digits); + + if (ndigits > precision) + do + { + --ndigits; + *p++ = digits[ndigits]; + } + while (ndigits > precision); + else + *p++ = '0'; + /* Here ndigits <= precision. */ + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + for (; precision > ndigits; precision--) + *p++ = '0'; + while (ndigits > 0) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + + free (digits); + } + else if (dp->conversion == 'e' || dp->conversion == 'E') + { + int exponent; + + if (arg == 0.0L) + { + exponent = 0; + *p++ = '0'; + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + for (; precision > 0; precision--) + *p++ = '0'; + } + } + else + { + /* arg > 0.0L. */ + int adjusted; + char *digits; + size_t ndigits; + + exponent = floorlog10l (arg); + adjusted = 0; + for (;;) + { + digits = + scale10_round_decimal_long_double (arg, + (int)precision - exponent); + if (digits == NULL) + { + END_LONG_DOUBLE_ROUNDING (); + goto out_of_memory; + } + ndigits = strlen (digits); + + if (ndigits == precision + 1) + break; + if (ndigits < precision + || ndigits > precision + 2) + /* The exponent was not guessed + precisely enough. */ + abort (); + if (adjusted) + /* None of two values of exponent is + the right one. Prevent an endless + loop. */ + abort (); + free (digits); + if (ndigits == precision) + exponent -= 1; + else + exponent += 1; + adjusted = 1; + } + + /* Here ndigits = precision+1. */ + *p++ = digits[--ndigits]; + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + while (ndigits > 0) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + + free (digits); + } + + *p++ = dp->conversion; /* 'e' or 'E' */ +# if WIDE_CHAR_VERSION + { + static const wchar_t decimal_format[] = + { '%', '+', '.', '2', 'd', '\0' }; + SNPRINTF (p, 6 + 1, decimal_format, exponent); + } + while (*p != '\0') + p++; +# else + if (sizeof (DCHAR_T) == 1) + { + sprintf ((char *) p, "%+.2d", exponent); + while (*p != '\0') + p++; + } + else + { + char expbuf[6 + 1]; + const char *ep; + sprintf (expbuf, "%+.2d", exponent); + for (ep = expbuf; (*p = *ep) != '\0'; ep++) + p++; + } +# endif + } + else if (dp->conversion == 'g' || dp->conversion == 'G') + { + if (precision == 0) + precision = 1; + /* precision >= 1. */ + + if (arg == 0.0L) + /* The exponent is 0, >= -4, < precision. + Use fixed-point notation. */ + { + size_t ndigits = precision; + /* Number of trailing zeroes that have to be + dropped. */ + size_t nzeroes = + (flags & FLAG_ALT ? 0 : precision - 1); + + --ndigits; + *p++ = '0'; + if ((flags & FLAG_ALT) || ndigits > nzeroes) + { + *p++ = decimal_point_char (); + while (ndigits > nzeroes) + { + --ndigits; + *p++ = '0'; + } + } + } + else + { + /* arg > 0.0L. */ + int exponent; + int adjusted; + char *digits; + size_t ndigits; + size_t nzeroes; + + exponent = floorlog10l (arg); + adjusted = 0; + for (;;) + { + digits = + scale10_round_decimal_long_double (arg, + (int)(precision - 1) - exponent); + if (digits == NULL) + { + END_LONG_DOUBLE_ROUNDING (); + goto out_of_memory; + } + ndigits = strlen (digits); + + if (ndigits == precision) + break; + if (ndigits < precision - 1 + || ndigits > precision + 1) + /* The exponent was not guessed + precisely enough. */ + abort (); + if (adjusted) + /* None of two values of exponent is + the right one. Prevent an endless + loop. */ + abort (); + free (digits); + if (ndigits < precision) + exponent -= 1; + else + exponent += 1; + adjusted = 1; + } + /* Here ndigits = precision. */ + + /* Determine the number of trailing zeroes + that have to be dropped. */ + nzeroes = 0; + if ((flags & FLAG_ALT) == 0) + while (nzeroes < ndigits + && digits[nzeroes] == '0') + nzeroes++; + + /* The exponent is now determined. */ + if (exponent >= -4 + && exponent < (long)precision) + { + /* Fixed-point notation: + max(exponent,0)+1 digits, then the + decimal point, then the remaining + digits without trailing zeroes. */ + if (exponent >= 0) + { + size_t count = exponent + 1; + /* Note: count <= precision = ndigits. */ + for (; count > 0; count--) + *p++ = digits[--ndigits]; + if ((flags & FLAG_ALT) || ndigits > nzeroes) + { + *p++ = decimal_point_char (); + while (ndigits > nzeroes) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + } + else + { + size_t count = -exponent - 1; + *p++ = '0'; + *p++ = decimal_point_char (); + for (; count > 0; count--) + *p++ = '0'; + while (ndigits > nzeroes) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + } + else + { + /* Exponential notation. */ + *p++ = digits[--ndigits]; + if ((flags & FLAG_ALT) || ndigits > nzeroes) + { + *p++ = decimal_point_char (); + while (ndigits > nzeroes) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + *p++ = dp->conversion - 'G' + 'E'; /* 'e' or 'E' */ +# if WIDE_CHAR_VERSION + { + static const wchar_t decimal_format[] = + { '%', '+', '.', '2', 'd', '\0' }; + SNPRINTF (p, 6 + 1, decimal_format, exponent); + } + while (*p != '\0') + p++; +# else + if (sizeof (DCHAR_T) == 1) + { + sprintf ((char *) p, "%+.2d", exponent); + while (*p != '\0') + p++; + } + else + { + char expbuf[6 + 1]; + const char *ep; + sprintf (expbuf, "%+.2d", exponent); + for (ep = expbuf; (*p = *ep) != '\0'; ep++) + p++; + } +# endif + } + + free (digits); + } + } + else + abort (); +# else + /* arg is finite. */ + abort (); +# endif + } + + END_LONG_DOUBLE_ROUNDING (); + } + } +# if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE + else +# endif +# endif +# if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE + { + double arg = a.arg[dp->arg_index].a.a_double; + + if (isnan (arg)) + { + if (dp->conversion >= 'A' && dp->conversion <= 'Z') + { + *p++ = 'N'; *p++ = 'A'; *p++ = 'N'; + } + else + { + *p++ = 'n'; *p++ = 'a'; *p++ = 'n'; + } + } + else + { + int sign = 0; + + if (signbit (arg)) /* arg < 0.0 or negative zero */ + { + sign = -1; + arg = -arg; + } + + if (sign < 0) + *p++ = '-'; + else if (flags & FLAG_SHOWSIGN) + *p++ = '+'; + else if (flags & FLAG_SPACE) + *p++ = ' '; + + if (arg > 0.0 && arg + arg == arg) + { + if (dp->conversion >= 'A' && dp->conversion <= 'Z') + { + *p++ = 'I'; *p++ = 'N'; *p++ = 'F'; + } + else + { + *p++ = 'i'; *p++ = 'n'; *p++ = 'f'; + } + } + else + { +# if NEED_PRINTF_DOUBLE + pad_ptr = p; + + if (dp->conversion == 'f' || dp->conversion == 'F') + { + char *digits; + size_t ndigits; + + digits = + scale10_round_decimal_double (arg, precision); + if (digits == NULL) + goto out_of_memory; + ndigits = strlen (digits); + + if (ndigits > precision) + do + { + --ndigits; + *p++ = digits[ndigits]; + } + while (ndigits > precision); + else + *p++ = '0'; + /* Here ndigits <= precision. */ + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + for (; precision > ndigits; precision--) + *p++ = '0'; + while (ndigits > 0) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + + free (digits); + } + else if (dp->conversion == 'e' || dp->conversion == 'E') + { + int exponent; + + if (arg == 0.0) + { + exponent = 0; + *p++ = '0'; + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + for (; precision > 0; precision--) + *p++ = '0'; + } + } + else + { + /* arg > 0.0. */ + int adjusted; + char *digits; + size_t ndigits; + + exponent = floorlog10 (arg); + adjusted = 0; + for (;;) + { + digits = + scale10_round_decimal_double (arg, + (int)precision - exponent); + if (digits == NULL) + goto out_of_memory; + ndigits = strlen (digits); + + if (ndigits == precision + 1) + break; + if (ndigits < precision + || ndigits > precision + 2) + /* The exponent was not guessed + precisely enough. */ + abort (); + if (adjusted) + /* None of two values of exponent is + the right one. Prevent an endless + loop. */ + abort (); + free (digits); + if (ndigits == precision) + exponent -= 1; + else + exponent += 1; + adjusted = 1; + } + + /* Here ndigits = precision+1. */ + *p++ = digits[--ndigits]; + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + while (ndigits > 0) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + + free (digits); + } + + *p++ = dp->conversion; /* 'e' or 'E' */ +# if WIDE_CHAR_VERSION + { + static const wchar_t decimal_format[] = + /* Produce the same number of exponent digits + as the native printf implementation. */ +# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + { '%', '+', '.', '3', 'd', '\0' }; +# else + { '%', '+', '.', '2', 'd', '\0' }; +# endif + SNPRINTF (p, 6 + 1, decimal_format, exponent); + } + while (*p != '\0') + p++; +# else + { + static const char decimal_format[] = + /* Produce the same number of exponent digits + as the native printf implementation. */ +# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + "%+.3d"; +# else + "%+.2d"; +# endif + if (sizeof (DCHAR_T) == 1) + { + sprintf ((char *) p, decimal_format, exponent); + while (*p != '\0') + p++; + } + else + { + char expbuf[6 + 1]; + const char *ep; + sprintf (expbuf, decimal_format, exponent); + for (ep = expbuf; (*p = *ep) != '\0'; ep++) + p++; + } + } +# endif + } + else if (dp->conversion == 'g' || dp->conversion == 'G') + { + if (precision == 0) + precision = 1; + /* precision >= 1. */ + + if (arg == 0.0) + /* The exponent is 0, >= -4, < precision. + Use fixed-point notation. */ + { + size_t ndigits = precision; + /* Number of trailing zeroes that have to be + dropped. */ + size_t nzeroes = + (flags & FLAG_ALT ? 0 : precision - 1); + + --ndigits; + *p++ = '0'; + if ((flags & FLAG_ALT) || ndigits > nzeroes) + { + *p++ = decimal_point_char (); + while (ndigits > nzeroes) + { + --ndigits; + *p++ = '0'; + } + } + } + else + { + /* arg > 0.0. */ + int exponent; + int adjusted; + char *digits; + size_t ndigits; + size_t nzeroes; + + exponent = floorlog10 (arg); + adjusted = 0; + for (;;) + { + digits = + scale10_round_decimal_double (arg, + (int)(precision - 1) - exponent); + if (digits == NULL) + goto out_of_memory; + ndigits = strlen (digits); + + if (ndigits == precision) + break; + if (ndigits < precision - 1 + || ndigits > precision + 1) + /* The exponent was not guessed + precisely enough. */ + abort (); + if (adjusted) + /* None of two values of exponent is + the right one. Prevent an endless + loop. */ + abort (); + free (digits); + if (ndigits < precision) + exponent -= 1; + else + exponent += 1; + adjusted = 1; + } + /* Here ndigits = precision. */ + + /* Determine the number of trailing zeroes + that have to be dropped. */ + nzeroes = 0; + if ((flags & FLAG_ALT) == 0) + while (nzeroes < ndigits + && digits[nzeroes] == '0') + nzeroes++; + + /* The exponent is now determined. */ + if (exponent >= -4 + && exponent < (long)precision) + { + /* Fixed-point notation: + max(exponent,0)+1 digits, then the + decimal point, then the remaining + digits without trailing zeroes. */ + if (exponent >= 0) + { + size_t count = exponent + 1; + /* Note: count <= precision = ndigits. */ + for (; count > 0; count--) + *p++ = digits[--ndigits]; + if ((flags & FLAG_ALT) || ndigits > nzeroes) + { + *p++ = decimal_point_char (); + while (ndigits > nzeroes) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + } + else + { + size_t count = -exponent - 1; + *p++ = '0'; + *p++ = decimal_point_char (); + for (; count > 0; count--) + *p++ = '0'; + while (ndigits > nzeroes) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + } + else + { + /* Exponential notation. */ + *p++ = digits[--ndigits]; + if ((flags & FLAG_ALT) || ndigits > nzeroes) + { + *p++ = decimal_point_char (); + while (ndigits > nzeroes) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + *p++ = dp->conversion - 'G' + 'E'; /* 'e' or 'E' */ +# if WIDE_CHAR_VERSION + { + static const wchar_t decimal_format[] = + /* Produce the same number of exponent digits + as the native printf implementation. */ +# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + { '%', '+', '.', '3', 'd', '\0' }; +# else + { '%', '+', '.', '2', 'd', '\0' }; +# endif + SNPRINTF (p, 6 + 1, decimal_format, exponent); + } + while (*p != '\0') + p++; +# else + { + static const char decimal_format[] = + /* Produce the same number of exponent digits + as the native printf implementation. */ +# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + "%+.3d"; +# else + "%+.2d"; +# endif + if (sizeof (DCHAR_T) == 1) + { + sprintf ((char *) p, decimal_format, exponent); + while (*p != '\0') + p++; + } + else + { + char expbuf[6 + 1]; + const char *ep; + sprintf (expbuf, decimal_format, exponent); + for (ep = expbuf; (*p = *ep) != '\0'; ep++) + p++; + } + } +# endif + } + + free (digits); + } + } + else + abort (); +# else + /* arg is finite. */ + if (!(arg == 0.0)) + abort (); + + pad_ptr = p; + + if (dp->conversion == 'f' || dp->conversion == 'F') + { + *p++ = '0'; + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + for (; precision > 0; precision--) + *p++ = '0'; + } + } + else if (dp->conversion == 'e' || dp->conversion == 'E') + { + *p++ = '0'; + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + for (; precision > 0; precision--) + *p++ = '0'; + } + *p++ = dp->conversion; /* 'e' or 'E' */ + *p++ = '+'; + /* Produce the same number of exponent digits as + the native printf implementation. */ +# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + *p++ = '0'; +# endif + *p++ = '0'; + *p++ = '0'; + } + else if (dp->conversion == 'g' || dp->conversion == 'G') + { + *p++ = '0'; + if (flags & FLAG_ALT) + { + size_t ndigits = + (precision > 0 ? precision - 1 : 0); + *p++ = decimal_point_char (); + for (; ndigits > 0; --ndigits) + *p++ = '0'; + } + } + else + abort (); +# endif + } + } + } +# endif + + /* The generated string now extends from tmp to p, with the + zero padding insertion point being at pad_ptr. */ + if (has_width && p - tmp < width) + { + size_t pad = width - (p - tmp); + DCHAR_T *end = p + pad; + + if (flags & FLAG_LEFT) + { + /* Pad with spaces on the right. */ + for (; pad > 0; pad--) + *p++ = ' '; + } + else if ((flags & FLAG_ZERO) && pad_ptr != NULL) + { + /* Pad with zeroes. */ + DCHAR_T *q = end; + + while (p > pad_ptr) + *--q = *--p; + for (; pad > 0; pad--) + *p++ = '0'; + } + else + { + /* Pad with spaces on the left. */ + DCHAR_T *q = end; + + while (p > tmp) + *--q = *--p; + for (; pad > 0; pad--) + *p++ = ' '; + } + + p = end; + } + + { + size_t count = p - tmp; + + if (count >= tmp_length) + /* tmp_length was incorrectly calculated - fix the + code above! */ + abort (); + + /* Make room for the result. */ + if (count >= allocated - length) + { + size_t n = xsum (length, count); + + ENSURE_ALLOCATION (n); + } + + /* Append the result. */ + memcpy (result + length, tmp, count * sizeof (DCHAR_T)); + if (tmp != tmpbuf) + free (tmp); + length += count; + } + } +#endif + else + { + arg_type type = a.arg[dp->arg_index].type; + int flags = dp->flags; +#if !USE_SNPRINTF || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION + int has_width; + size_t width; +#endif +#if !USE_SNPRINTF || NEED_PRINTF_UNBOUNDED_PRECISION + int has_precision; + size_t precision; +#endif +#if NEED_PRINTF_UNBOUNDED_PRECISION + int prec_ourselves; +#else +# define prec_ourselves 0 +#endif +#if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION + int pad_ourselves; +#else +# define pad_ourselves 0 +#endif + TCHAR_T *fbp; + unsigned int prefix_count; + int prefixes[2]; +#if !USE_SNPRINTF + size_t tmp_length; + TCHAR_T tmpbuf[700]; + TCHAR_T *tmp; +#endif + +#if !USE_SNPRINTF || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION + has_width = 0; + width = 0; + if (dp->width_start != dp->width_end) + { + if (dp->width_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->width_arg_index].a.a_int; + if (arg < 0) + { + /* "A negative field width is taken as a '-' flag + followed by a positive field width." */ + flags |= FLAG_LEFT; + width = (unsigned int) (-arg); + } + else + width = arg; + } + else + { + const FCHAR_T *digitp = dp->width_start; + + do + width = xsum (xtimes (width, 10), *digitp++ - '0'); + while (digitp != dp->width_end); + } + has_width = 1; + } +#endif + +#if !USE_SNPRINTF || NEED_PRINTF_UNBOUNDED_PRECISION + has_precision = 0; + precision = 6; + if (dp->precision_start != dp->precision_end) + { + if (dp->precision_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->precision_arg_index].a.a_int; + /* "A negative precision is taken as if the precision + were omitted." */ + if (arg >= 0) + { + precision = arg; + has_precision = 1; + } + } + else + { + const FCHAR_T *digitp = dp->precision_start + 1; + + precision = 0; + while (digitp != dp->precision_end) + precision = xsum (xtimes (precision, 10), *digitp++ - '0'); + has_precision = 1; + } + } +#endif + +#if !USE_SNPRINTF + /* Allocate a temporary buffer of sufficient size for calling + sprintf. */ + { + switch (dp->conversion) + { + + case 'd': case 'i': case 'u': +# if HAVE_LONG_LONG_INT + if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT) + tmp_length = + (unsigned int) (sizeof (unsigned long long) * CHAR_BIT + * 0.30103 /* binary -> decimal */ + ) + + 1; /* turn floor into ceil */ + else +# endif + if (type == TYPE_LONGINT || type == TYPE_ULONGINT) + tmp_length = + (unsigned int) (sizeof (unsigned long) * CHAR_BIT + * 0.30103 /* binary -> decimal */ + ) + + 1; /* turn floor into ceil */ + else + tmp_length = + (unsigned int) (sizeof (unsigned int) * CHAR_BIT + * 0.30103 /* binary -> decimal */ + ) + + 1; /* turn floor into ceil */ + if (tmp_length < precision) + tmp_length = precision; + /* Multiply by 2, as an estimate for FLAG_GROUP. */ + tmp_length = xsum (tmp_length, tmp_length); + /* Add 1, to account for a leading sign. */ + tmp_length = xsum (tmp_length, 1); + break; + + case 'o': +# if HAVE_LONG_LONG_INT + if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT) + tmp_length = + (unsigned int) (sizeof (unsigned long long) * CHAR_BIT + * 0.333334 /* binary -> octal */ + ) + + 1; /* turn floor into ceil */ + else +# endif + if (type == TYPE_LONGINT || type == TYPE_ULONGINT) + tmp_length = + (unsigned int) (sizeof (unsigned long) * CHAR_BIT + * 0.333334 /* binary -> octal */ + ) + + 1; /* turn floor into ceil */ + else + tmp_length = + (unsigned int) (sizeof (unsigned int) * CHAR_BIT + * 0.333334 /* binary -> octal */ + ) + + 1; /* turn floor into ceil */ + if (tmp_length < precision) + tmp_length = precision; + /* Add 1, to account for a leading sign. */ + tmp_length = xsum (tmp_length, 1); + break; + + case 'x': case 'X': +# if HAVE_LONG_LONG_INT + if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT) + tmp_length = + (unsigned int) (sizeof (unsigned long long) * CHAR_BIT + * 0.25 /* binary -> hexadecimal */ + ) + + 1; /* turn floor into ceil */ + else +# endif + if (type == TYPE_LONGINT || type == TYPE_ULONGINT) + tmp_length = + (unsigned int) (sizeof (unsigned long) * CHAR_BIT + * 0.25 /* binary -> hexadecimal */ + ) + + 1; /* turn floor into ceil */ + else + tmp_length = + (unsigned int) (sizeof (unsigned int) * CHAR_BIT + * 0.25 /* binary -> hexadecimal */ + ) + + 1; /* turn floor into ceil */ + if (tmp_length < precision) + tmp_length = precision; + /* Add 2, to account for a leading sign or alternate form. */ + tmp_length = xsum (tmp_length, 2); + break; + + case 'f': case 'F': + if (type == TYPE_LONGDOUBLE) + tmp_length = + (unsigned int) (LDBL_MAX_EXP + * 0.30103 /* binary -> decimal */ + * 2 /* estimate for FLAG_GROUP */ + ) + + 1 /* turn floor into ceil */ + + 10; /* sign, decimal point etc. */ + else + tmp_length = + (unsigned int) (DBL_MAX_EXP + * 0.30103 /* binary -> decimal */ + * 2 /* estimate for FLAG_GROUP */ + ) + + 1 /* turn floor into ceil */ + + 10; /* sign, decimal point etc. */ + tmp_length = xsum (tmp_length, precision); + break; + + case 'e': case 'E': case 'g': case 'G': + tmp_length = + 12; /* sign, decimal point, exponent etc. */ + tmp_length = xsum (tmp_length, precision); + break; + + case 'a': case 'A': + if (type == TYPE_LONGDOUBLE) + tmp_length = + (unsigned int) (LDBL_DIG + * 0.831 /* decimal -> hexadecimal */ + ) + + 1; /* turn floor into ceil */ + else + tmp_length = + (unsigned int) (DBL_DIG + * 0.831 /* decimal -> hexadecimal */ + ) + + 1; /* turn floor into ceil */ + if (tmp_length < precision) + tmp_length = precision; + /* Account for sign, decimal point etc. */ + tmp_length = xsum (tmp_length, 12); + break; + + case 'c': +# if HAVE_WINT_T && !WIDE_CHAR_VERSION + if (type == TYPE_WIDE_CHAR) + tmp_length = MB_CUR_MAX; + else +# endif + tmp_length = 1; + break; + + case 's': +# if HAVE_WCHAR_T + if (type == TYPE_WIDE_STRING) + { + tmp_length = + local_wcslen (a.arg[dp->arg_index].a.a_wide_string); + +# if !WIDE_CHAR_VERSION + tmp_length = xtimes (tmp_length, MB_CUR_MAX); +# endif + } + else +# endif + tmp_length = strlen (a.arg[dp->arg_index].a.a_string); + break; + + case 'p': + tmp_length = + (unsigned int) (sizeof (void *) * CHAR_BIT + * 0.25 /* binary -> hexadecimal */ + ) + + 1 /* turn floor into ceil */ + + 2; /* account for leading 0x */ + break; + + default: + abort (); + } + +# if ENABLE_UNISTDIO + /* Padding considers the number of characters, therefore the + number of elements after padding may be + > max (tmp_length, width) + but is certainly + <= tmp_length + width. */ + tmp_length = xsum (tmp_length, width); +# else + /* Padding considers the number of elements, says POSIX. */ + if (tmp_length < width) + tmp_length = width; +# endif + + tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */ + } + + if (tmp_length <= sizeof (tmpbuf) / sizeof (TCHAR_T)) + tmp = tmpbuf; + else + { + size_t tmp_memsize = xtimes (tmp_length, sizeof (TCHAR_T)); + + if (size_overflow_p (tmp_memsize)) + /* Overflow, would lead to out of memory. */ + goto out_of_memory; + tmp = (TCHAR_T *) malloc (tmp_memsize); + if (tmp == NULL) + /* Out of memory. */ + goto out_of_memory; + } +#endif + + /* Decide whether to handle the precision ourselves. */ +#if NEED_PRINTF_UNBOUNDED_PRECISION + switch (dp->conversion) + { + case 'd': case 'i': case 'u': + case 'o': + case 'x': case 'X': case 'p': + prec_ourselves = has_precision && (precision > 0); + break; + default: + prec_ourselves = 0; + break; + } +#endif + + /* Decide whether to perform the padding ourselves. */ +#if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION + switch (dp->conversion) + { +# if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO + /* If we need conversion from TCHAR_T[] to DCHAR_T[], we need + to perform the padding after this conversion. Functions + with unistdio extensions perform the padding based on + character count rather than element count. */ + case 'c': case 's': +# endif +# if NEED_PRINTF_FLAG_ZERO + case 'f': case 'F': case 'e': case 'E': case 'g': case 'G': + case 'a': case 'A': +# endif + pad_ourselves = 1; + break; + default: + pad_ourselves = prec_ourselves; + break; + } +#endif + + /* Construct the format string for calling snprintf or + sprintf. */ + fbp = buf; + *fbp++ = '%'; +#if NEED_PRINTF_FLAG_GROUPING + /* The underlying implementation doesn't support the ' flag. + Produce no grouping characters in this case; this is + acceptable because the grouping is locale dependent. */ +#else + if (flags & FLAG_GROUP) + *fbp++ = '\''; +#endif + if (flags & FLAG_LEFT) + *fbp++ = '-'; + if (flags & FLAG_SHOWSIGN) + *fbp++ = '+'; + if (flags & FLAG_SPACE) + *fbp++ = ' '; + if (flags & FLAG_ALT) + *fbp++ = '#'; + if (!pad_ourselves) + { + if (flags & FLAG_ZERO) + *fbp++ = '0'; + if (dp->width_start != dp->width_end) + { + size_t n = dp->width_end - dp->width_start; + /* The width specification is known to consist only + of standard ASCII characters. */ + if (sizeof (FCHAR_T) == sizeof (TCHAR_T)) + { + memcpy (fbp, dp->width_start, n * sizeof (TCHAR_T)); + fbp += n; + } + else + { + const FCHAR_T *mp = dp->width_start; + do + *fbp++ = (unsigned char) *mp++; + while (--n > 0); + } + } + } + if (!prec_ourselves) + { + if (dp->precision_start != dp->precision_end) + { + size_t n = dp->precision_end - dp->precision_start; + /* The precision specification is known to consist only + of standard ASCII characters. */ + if (sizeof (FCHAR_T) == sizeof (TCHAR_T)) + { + memcpy (fbp, dp->precision_start, n * sizeof (TCHAR_T)); + fbp += n; + } + else + { + const FCHAR_T *mp = dp->precision_start; + do + *fbp++ = (unsigned char) *mp++; + while (--n > 0); + } + } + } + + switch (type) + { +#if HAVE_LONG_LONG_INT + case TYPE_LONGLONGINT: + case TYPE_ULONGLONGINT: +# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + *fbp++ = 'I'; + *fbp++ = '6'; + *fbp++ = '4'; + break; +# else + *fbp++ = 'l'; + /*FALLTHROUGH*/ +# endif +#endif + case TYPE_LONGINT: + case TYPE_ULONGINT: +#if HAVE_WINT_T + case TYPE_WIDE_CHAR: +#endif +#if HAVE_WCHAR_T + case TYPE_WIDE_STRING: +#endif + *fbp++ = 'l'; + break; + case TYPE_LONGDOUBLE: + *fbp++ = 'L'; + break; + default: + break; + } +#if NEED_PRINTF_DIRECTIVE_F + if (dp->conversion == 'F') + *fbp = 'f'; + else +#endif + *fbp = dp->conversion; +#if USE_SNPRINTF +# if !(__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)) + fbp[1] = '%'; + fbp[2] = 'n'; + fbp[3] = '\0'; +# else + /* On glibc2 systems from glibc >= 2.3 - probably also older + ones - we know that snprintf's returns value conforms to + ISO C 99: the gl_SNPRINTF_DIRECTIVE_N test passes. + Therefore we can avoid using %n in this situation. + On glibc2 systems from 2004-10-18 or newer, the use of %n + in format strings in writable memory may crash the program + (if compiled with _FORTIFY_SOURCE=2), so we should avoid it + in this situation. */ + fbp[1] = '\0'; +# endif +#else + fbp[1] = '\0'; +#endif + + /* Construct the arguments for calling snprintf or sprintf. */ + prefix_count = 0; + if (!pad_ourselves && dp->width_arg_index != ARG_NONE) + { + if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) + abort (); + prefixes[prefix_count++] = a.arg[dp->width_arg_index].a.a_int; + } + if (dp->precision_arg_index != ARG_NONE) + { + if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) + abort (); + prefixes[prefix_count++] = a.arg[dp->precision_arg_index].a.a_int; + } + +#if USE_SNPRINTF + /* The SNPRINTF result is appended after result[0..length]. + The latter is an array of DCHAR_T; SNPRINTF appends an + array of TCHAR_T to it. This is possible because + sizeof (TCHAR_T) divides sizeof (DCHAR_T) and + alignof (TCHAR_T) <= alignof (DCHAR_T). */ +# define TCHARS_PER_DCHAR (sizeof (DCHAR_T) / sizeof (TCHAR_T)) + /* Prepare checking whether snprintf returns the count + via %n. */ + ENSURE_ALLOCATION (xsum (length, 1)); + *(TCHAR_T *) (result + length) = '\0'; +#endif + + for (;;) + { + int count = -1; + +#if USE_SNPRINTF + int retcount = 0; + size_t maxlen = allocated - length; + /* SNPRINTF can fail if its second argument is + > INT_MAX. */ + if (maxlen > INT_MAX / TCHARS_PER_DCHAR) + maxlen = INT_MAX / TCHARS_PER_DCHAR; + maxlen = maxlen * TCHARS_PER_DCHAR; +# define SNPRINTF_BUF(arg) \ + switch (prefix_count) \ + { \ + case 0: \ + retcount = SNPRINTF ((TCHAR_T *) (result + length), \ + maxlen, buf, \ + arg, &count); \ + break; \ + case 1: \ + retcount = SNPRINTF ((TCHAR_T *) (result + length), \ + maxlen, buf, \ + prefixes[0], arg, &count); \ + break; \ + case 2: \ + retcount = SNPRINTF ((TCHAR_T *) (result + length), \ + maxlen, buf, \ + prefixes[0], prefixes[1], arg, \ + &count); \ + break; \ + default: \ + abort (); \ + } +#else +# define SNPRINTF_BUF(arg) \ + switch (prefix_count) \ + { \ + case 0: \ + count = sprintf (tmp, buf, arg); \ + break; \ + case 1: \ + count = sprintf (tmp, buf, prefixes[0], arg); \ + break; \ + case 2: \ + count = sprintf (tmp, buf, prefixes[0], prefixes[1],\ + arg); \ + break; \ + default: \ + abort (); \ + } +#endif + + switch (type) + { + case TYPE_SCHAR: + { + int arg = a.arg[dp->arg_index].a.a_schar; + SNPRINTF_BUF (arg); + } + break; + case TYPE_UCHAR: + { + unsigned int arg = a.arg[dp->arg_index].a.a_uchar; + SNPRINTF_BUF (arg); + } + break; + case TYPE_SHORT: + { + int arg = a.arg[dp->arg_index].a.a_short; + SNPRINTF_BUF (arg); + } + break; + case TYPE_USHORT: + { + unsigned int arg = a.arg[dp->arg_index].a.a_ushort; + SNPRINTF_BUF (arg); + } + break; + case TYPE_INT: + { + int arg = a.arg[dp->arg_index].a.a_int; + SNPRINTF_BUF (arg); + } + break; + case TYPE_UINT: + { + unsigned int arg = a.arg[dp->arg_index].a.a_uint; + SNPRINTF_BUF (arg); + } + break; + case TYPE_LONGINT: + { + long int arg = a.arg[dp->arg_index].a.a_longint; + SNPRINTF_BUF (arg); + } + break; + case TYPE_ULONGINT: + { + unsigned long int arg = a.arg[dp->arg_index].a.a_ulongint; + SNPRINTF_BUF (arg); + } + break; +#if HAVE_LONG_LONG_INT + case TYPE_LONGLONGINT: + { + long long int arg = a.arg[dp->arg_index].a.a_longlongint; + SNPRINTF_BUF (arg); + } + break; + case TYPE_ULONGLONGINT: + { + unsigned long long int arg = a.arg[dp->arg_index].a.a_ulonglongint; + SNPRINTF_BUF (arg); + } + break; +#endif + case TYPE_DOUBLE: + { + double arg = a.arg[dp->arg_index].a.a_double; + SNPRINTF_BUF (arg); + } + break; + case TYPE_LONGDOUBLE: + { + long double arg = a.arg[dp->arg_index].a.a_longdouble; + SNPRINTF_BUF (arg); + } + break; + case TYPE_CHAR: + { + int arg = a.arg[dp->arg_index].a.a_char; + SNPRINTF_BUF (arg); + } + break; +#if HAVE_WINT_T + case TYPE_WIDE_CHAR: + { + wint_t arg = a.arg[dp->arg_index].a.a_wide_char; + SNPRINTF_BUF (arg); + } + break; +#endif + case TYPE_STRING: + { + const char *arg = a.arg[dp->arg_index].a.a_string; + SNPRINTF_BUF (arg); + } + break; +#if HAVE_WCHAR_T + case TYPE_WIDE_STRING: + { + const wchar_t *arg = a.arg[dp->arg_index].a.a_wide_string; + SNPRINTF_BUF (arg); + } + break; +#endif + case TYPE_POINTER: + { + void *arg = a.arg[dp->arg_index].a.a_pointer; + SNPRINTF_BUF (arg); + } + break; + default: + abort (); + } + +#if USE_SNPRINTF + /* Portability: Not all implementations of snprintf() + are ISO C 99 compliant. Determine the number of + bytes that snprintf() has produced or would have + produced. */ + if (count >= 0) + { + /* Verify that snprintf() has NUL-terminated its + result. */ + if (count < maxlen + && ((TCHAR_T *) (result + length)) [count] != '\0') + abort (); + /* Portability hack. */ + if (retcount > count) + count = retcount; + } + else + { + /* snprintf() doesn't understand the '%n' + directive. */ + if (fbp[1] != '\0') + { + /* Don't use the '%n' directive; instead, look + at the snprintf() return value. */ + fbp[1] = '\0'; + continue; + } + else + { + /* Look at the snprintf() return value. */ + if (retcount < 0) + { + /* HP-UX 10.20 snprintf() is doubly deficient: + It doesn't understand the '%n' directive, + *and* it returns -1 (rather than the length + that would have been required) when the + buffer is too small. */ + size_t bigger_need = + xsum (xtimes (allocated, 2), 12); + ENSURE_ALLOCATION (bigger_need); + continue; + } + else + count = retcount; + } + } +#endif + + /* Attempt to handle failure. */ + if (count < 0) + { + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EINVAL; + return NULL; + } + +#if USE_SNPRINTF + /* Handle overflow of the allocated buffer. + If such an overflow occurs, a C99 compliant snprintf() + returns a count >= maxlen. However, a non-compliant + snprintf() function returns only count = maxlen - 1. To + cover both cases, test whether count >= maxlen - 1. */ + if ((unsigned int) count + 1 >= maxlen) + { + /* If maxlen already has attained its allowed maximum, + allocating more memory will not increase maxlen. + Instead of looping, bail out. */ + if (maxlen == INT_MAX / TCHARS_PER_DCHAR) + goto overflow; + else + { + /* Need at least count * sizeof (TCHAR_T) bytes. + But allocate proportionally, to avoid looping + eternally if snprintf() reports a too small + count. */ + size_t n = + xmax (xsum (length, + (count + TCHARS_PER_DCHAR - 1) + / TCHARS_PER_DCHAR), + xtimes (allocated, 2)); + + ENSURE_ALLOCATION (n); + continue; + } + } +#endif + +#if NEED_PRINTF_UNBOUNDED_PRECISION + if (prec_ourselves) + { + /* Handle the precision. */ + TCHAR_T *prec_ptr = +# if USE_SNPRINTF + (TCHAR_T *) (result + length); +# else + tmp; +# endif + size_t prefix_count; + size_t move; + + prefix_count = 0; + /* Put the additional zeroes after the sign. */ + if (count >= 1 + && (*prec_ptr == '-' || *prec_ptr == '+' + || *prec_ptr == ' ')) + prefix_count = 1; + /* Put the additional zeroes after the 0x prefix if + (flags & FLAG_ALT) || (dp->conversion == 'p'). */ + else if (count >= 2 + && prec_ptr[0] == '0' + && (prec_ptr[1] == 'x' || prec_ptr[1] == 'X')) + prefix_count = 2; + + move = count - prefix_count; + if (precision > move) + { + /* Insert zeroes. */ + size_t insert = precision - move; + TCHAR_T *prec_end; + +# if USE_SNPRINTF + size_t n = + xsum (length, + (count + insert + TCHARS_PER_DCHAR - 1) + / TCHARS_PER_DCHAR); + length += (count + TCHARS_PER_DCHAR - 1) / TCHARS_PER_DCHAR; + ENSURE_ALLOCATION (n); + length -= (count + TCHARS_PER_DCHAR - 1) / TCHARS_PER_DCHAR; + prec_ptr = (TCHAR_T *) (result + length); +# endif + + prec_end = prec_ptr + count; + prec_ptr += prefix_count; + + while (prec_end > prec_ptr) + { + prec_end--; + prec_end[insert] = prec_end[0]; + } + + prec_end += insert; + do + *--prec_end = '0'; + while (prec_end > prec_ptr); + + count += insert; + } + } +#endif + +#if !DCHAR_IS_TCHAR +# if !USE_SNPRINTF + if (count >= tmp_length) + /* tmp_length was incorrectly calculated - fix the + code above! */ + abort (); +# endif + + /* Convert from TCHAR_T[] to DCHAR_T[]. */ + if (dp->conversion == 'c' || dp->conversion == 's') + { + /* type = TYPE_CHAR or TYPE_WIDE_CHAR or TYPE_STRING + TYPE_WIDE_STRING. + The result string is not certainly ASCII. */ + const TCHAR_T *tmpsrc; + DCHAR_T *tmpdst; + size_t tmpdst_len; + /* This code assumes that TCHAR_T is 'char'. */ + typedef int TCHAR_T_verify + [2 * (sizeof (TCHAR_T) == 1) - 1]; +# if USE_SNPRINTF + tmpsrc = (TCHAR_T *) (result + length); +# else + tmpsrc = tmp; +# endif + tmpdst = NULL; + tmpdst_len = 0; + if (DCHAR_CONV_FROM_ENCODING (locale_charset (), + iconveh_question_mark, + tmpsrc, count, + NULL, + &tmpdst, &tmpdst_len) + < 0) + { + int saved_errno = errno; + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = saved_errno; + return NULL; + } + ENSURE_ALLOCATION (xsum (length, tmpdst_len)); + DCHAR_CPY (result + length, tmpdst, tmpdst_len); + free (tmpdst); + count = tmpdst_len; + } + else + { + /* The result string is ASCII. + Simple 1:1 conversion. */ +# if USE_SNPRINTF + /* If sizeof (DCHAR_T) == sizeof (TCHAR_T), it's a + no-op conversion, in-place on the array starting + at (result + length). */ + if (sizeof (DCHAR_T) != sizeof (TCHAR_T)) +# endif + { + const TCHAR_T *tmpsrc; + DCHAR_T *tmpdst; + size_t n; + +# if USE_SNPRINTF + if (result == resultbuf) + { + tmpsrc = (TCHAR_T *) (result + length); + /* ENSURE_ALLOCATION will not move tmpsrc + (because it's part of resultbuf). */ + ENSURE_ALLOCATION (xsum (length, count)); + } + else + { + /* ENSURE_ALLOCATION will move the array + (because it uses realloc(). */ + ENSURE_ALLOCATION (xsum (length, count)); + tmpsrc = (TCHAR_T *) (result + length); + } +# else + tmpsrc = tmp; + ENSURE_ALLOCATION (xsum (length, count)); +# endif + tmpdst = result + length; + /* Copy backwards, because of overlapping. */ + tmpsrc += count; + tmpdst += count; + for (n = count; n > 0; n--) + *--tmpdst = (unsigned char) *--tmpsrc; + } + } +#endif + +#if DCHAR_IS_TCHAR && !USE_SNPRINTF + /* Make room for the result. */ + if (count > allocated - length) + { + /* Need at least count elements. But allocate + proportionally. */ + size_t n = + xmax (xsum (length, count), xtimes (allocated, 2)); + + ENSURE_ALLOCATION (n); + } +#endif + + /* Here count <= allocated - length. */ + + /* Perform padding. */ +#if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION + if (pad_ourselves && has_width) + { + size_t w; +# if ENABLE_UNISTDIO + /* Outside POSIX, it's preferrable to compare the width + against the number of _characters_ of the converted + value. */ + w = DCHAR_MBSNLEN (result + length, count); +# else + /* The width is compared against the number of _bytes_ + of the converted value, says POSIX. */ + w = count; +# endif + if (w < width) + { + size_t pad = width - w; +# if USE_SNPRINTF + /* Make room for the result. */ + if (xsum (count, pad) > allocated - length) + { + /* Need at least count + pad elements. But + allocate proportionally. */ + size_t n = + xmax (xsum3 (length, count, pad), + xtimes (allocated, 2)); + + length += count; + ENSURE_ALLOCATION (n); + length -= count; + } + /* Here count + pad <= allocated - length. */ +# endif + { +# if !DCHAR_IS_TCHAR || USE_SNPRINTF + DCHAR_T * const rp = result + length; +# else + DCHAR_T * const rp = tmp; +# endif + DCHAR_T *p = rp + count; + DCHAR_T *end = p + pad; +# if NEED_PRINTF_FLAG_ZERO + DCHAR_T *pad_ptr; +# if !DCHAR_IS_TCHAR + if (dp->conversion == 'c' + || dp->conversion == 's') + /* No zero-padding for string directives. */ + pad_ptr = NULL; + else +# endif + { + pad_ptr = (*rp == '-' ? rp + 1 : rp); + /* No zero-padding of "inf" and "nan". */ + if ((*pad_ptr >= 'A' && *pad_ptr <= 'Z') + || (*pad_ptr >= 'a' && *pad_ptr <= 'z')) + pad_ptr = NULL; + } +# endif + /* The generated string now extends from rp to p, + with the zero padding insertion point being at + pad_ptr. */ + + count = count + pad; /* = end - rp */ + + if (flags & FLAG_LEFT) + { + /* Pad with spaces on the right. */ + for (; pad > 0; pad--) + *p++ = ' '; + } +# if NEED_PRINTF_FLAG_ZERO + else if ((flags & FLAG_ZERO) && pad_ptr != NULL) + { + /* Pad with zeroes. */ + DCHAR_T *q = end; + + while (p > pad_ptr) + *--q = *--p; + for (; pad > 0; pad--) + *p++ = '0'; + } +# endif + else + { + /* Pad with spaces on the left. */ + DCHAR_T *q = end; + + while (p > rp) + *--q = *--p; + for (; pad > 0; pad--) + *p++ = ' '; + } + } + } + } +#endif + +#if DCHAR_IS_TCHAR && !USE_SNPRINTF + if (count >= tmp_length) + /* tmp_length was incorrectly calculated - fix the + code above! */ + abort (); +#endif + + /* Here still count <= allocated - length. */ + +#if !DCHAR_IS_TCHAR || USE_SNPRINTF + /* The snprintf() result did fit. */ +#else + /* Append the sprintf() result. */ + memcpy (result + length, tmp, count * sizeof (DCHAR_T)); +#endif +#if !USE_SNPRINTF + if (tmp != tmpbuf) + free (tmp); +#endif + +#if NEED_PRINTF_DIRECTIVE_F + if (dp->conversion == 'F') + { + /* Convert the %f result to upper case for %F. */ + DCHAR_T *rp = result + length; + size_t rc; + for (rc = count; rc > 0; rc--, rp++) + if (*rp >= 'a' && *rp <= 'z') + *rp = *rp - 'a' + 'A'; + } +#endif + + length += count; + break; + } + } + } + } + + /* Add the final NUL. */ + ENSURE_ALLOCATION (xsum (length, 1)); + result[length] = '\0'; + + if (result != resultbuf && length + 1 < allocated) + { + /* Shrink the allocated memory if possible. */ + DCHAR_T *memory; + + memory = (DCHAR_T *) realloc (result, (length + 1) * sizeof (DCHAR_T)); + if (memory != NULL) + result = memory; + } + + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + *lengthp = length; + /* Note that we can produce a big string of a length > INT_MAX. POSIX + says that snprintf() fails with errno = EOVERFLOW in this case, but + that's only because snprintf() returns an 'int'. This function does + not have this limitation. */ + return result; + + overflow: + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EOVERFLOW; + return NULL; + + out_of_memory: + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + out_of_memory_1: + CLEANUP (); + errno = ENOMEM; + return NULL; + } +} + +#undef TCHARS_PER_DCHAR +#undef SNPRINTF +#undef USE_SNPRINTF +#undef DCHAR_CPY +#undef PRINTF_PARSE +#undef DIRECTIVES +#undef DIRECTIVE +#undef DCHAR_IS_TCHAR +#undef TCHAR_T +#undef DCHAR_T +#undef FCHAR_T +#undef VASNPRINTF diff --git a/xchat-2.8.8/intl/vasnprintf.h b/xchat-2.8.8/intl/vasnprintf.h new file mode 100644 index 0000000..ff1d183 --- /dev/null +++ b/xchat-2.8.8/intl/vasnprintf.h @@ -0,0 +1,78 @@ +/* vsprintf with automatic memory allocation. + Copyright (C) 2002-2004 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _VASNPRINTF_H +#define _VASNPRINTF_H + +/* Get va_list. */ +#include + +/* Get size_t. */ +#include + +#ifndef __attribute__ +/* This feature is available in gcc versions 2.5 and later. */ +# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__ +# define __attribute__(Spec) /* empty */ +# endif +/* The __-protected variants of `format' and `printf' attributes + are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */ +# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) +# define __format__ format +# define __printf__ printf +# endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Write formatted output to a string dynamically allocated with malloc(). + You can pass a preallocated buffer for the result in RESULTBUF and its + size in *LENGTHP; otherwise you pass RESULTBUF = NULL. + If successful, return the address of the string (this may be = RESULTBUF + if no dynamic memory allocation was necessary) and set *LENGTHP to the + number of resulting bytes, excluding the trailing NUL. Upon error, set + errno and return NULL. + + When dynamic memory allocation occurs, the preallocated buffer is left + alone (with possibly modified contents). This makes it possible to use + a statically allocated or stack-allocated buffer, like this: + + char buf[100]; + size_t len = sizeof (buf); + char *output = vasnprintf (buf, &len, format, args); + if (output == NULL) + ... error handling ...; + else + { + ... use the output string ...; + if (output != buf) + free (output); + } + */ +extern char * asnprintf (char *resultbuf, size_t *lengthp, const char *format, ...) + __attribute__ ((__format__ (__printf__, 3, 4))); +extern char * vasnprintf (char *resultbuf, size_t *lengthp, const char *format, va_list args) + __attribute__ ((__format__ (__printf__, 3, 0))); + +#ifdef __cplusplus +} +#endif + +#endif /* _VASNPRINTF_H */ diff --git a/xchat-2.8.8/intl/vasnwprintf.h b/xchat-2.8.8/intl/vasnwprintf.h new file mode 100644 index 0000000..6ff03ce --- /dev/null +++ b/xchat-2.8.8/intl/vasnwprintf.h @@ -0,0 +1,46 @@ +/* vswprintf with automatic memory allocation. + Copyright (C) 2002-2003 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _VASNWPRINTF_H +#define _VASNWPRINTF_H + +/* Get va_list. */ +#include + +/* Get wchar_t, size_t. */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Write formatted output to a string dynamically allocated with malloc(). + You can pass a preallocated buffer for the result in RESULTBUF and its + size in *LENGTHP; otherwise you pass RESULTBUF = NULL. + If successful, return the address of the string (this may be = RESULTBUF + if no dynamic memory allocation was necessary) and set *LENGTHP to the + number of resulting bytes, excluding the trailing NUL. Upon error, set + errno and return NULL. */ +extern wchar_t * asnwprintf (wchar_t *resultbuf, size_t *lengthp, const wchar_t *format, ...); +extern wchar_t * vasnwprintf (wchar_t *resultbuf, size_t *lengthp, const wchar_t *format, va_list args); + +#ifdef __cplusplus +} +#endif + +#endif /* _VASNWPRINTF_H */ diff --git a/xchat-2.8.8/intl/version.c b/xchat-2.8.8/intl/version.c new file mode 100644 index 0000000..a968cf7 --- /dev/null +++ b/xchat-2.8.8/intl/version.c @@ -0,0 +1,26 @@ +/* libintl library version. + Copyright (C) 2005 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "libgnuintl.h" + +/* Version number: (major<<16) + (minor<<8) + subminor */ +int libintl_version = LIBINTL_VERSION; diff --git a/xchat-2.8.8/intl/wprintf-parse.h b/xchat-2.8.8/intl/wprintf-parse.h new file mode 100644 index 0000000..600b89a --- /dev/null +++ b/xchat-2.8.8/intl/wprintf-parse.h @@ -0,0 +1,75 @@ +/* Parse printf format string. + Copyright (C) 1999, 2002-2003 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _WPRINTF_PARSE_H +#define _WPRINTF_PARSE_H + +#include "printf-args.h" + + +/* Flags */ +#define FLAG_GROUP 1 /* ' flag */ +#define FLAG_LEFT 2 /* - flag */ +#define FLAG_SHOWSIGN 4 /* + flag */ +#define FLAG_SPACE 8 /* space flag */ +#define FLAG_ALT 16 /* # flag */ +#define FLAG_ZERO 32 + +/* arg_index value indicating that no argument is consumed. */ +#define ARG_NONE (~(size_t)0) + +/* A parsed directive. */ +typedef struct +{ + const wchar_t* dir_start; + const wchar_t* dir_end; + int flags; + const wchar_t* width_start; + const wchar_t* width_end; + size_t width_arg_index; + const wchar_t* precision_start; + const wchar_t* precision_end; + size_t precision_arg_index; + wchar_t conversion; /* d i o u x X f e E g G c s p n U % but not C S */ + size_t arg_index; +} +wchar_t_directive; + +/* A parsed format string. */ +typedef struct +{ + size_t count; + wchar_t_directive *dir; + size_t max_width_length; + size_t max_precision_length; +} +wchar_t_directives; + + +/* Parses the format string. Fills in the number N of directives, and fills + in directives[0], ..., directives[N-1], and sets directives[N].dir_start + to the end of the format string. Also fills in the arg_type fields of the + arguments and the needed count of arguments. */ +#ifdef STATIC +STATIC +#else +extern +#endif +int wprintf_parse (const wchar_t *format, wchar_t_directives *d, arguments *a); + +#endif /* _WPRINTF_PARSE_H */ diff --git a/xchat-2.8.8/intl/xsize.h b/xchat-2.8.8/intl/xsize.h new file mode 100644 index 0000000..b3023a7 --- /dev/null +++ b/xchat-2.8.8/intl/xsize.h @@ -0,0 +1,109 @@ +/* xsize.h -- Checked size_t computations. + + Copyright (C) 2003 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _XSIZE_H +#define _XSIZE_H + +/* Get size_t. */ +#include + +/* Get SIZE_MAX. */ +#include +#if HAVE_STDINT_H +# include +#endif + +/* The size of memory objects is often computed through expressions of + type size_t. Example: + void* p = malloc (header_size + n * element_size). + These computations can lead to overflow. When this happens, malloc() + returns a piece of memory that is way too small, and the program then + crashes while attempting to fill the memory. + To avoid this, the functions and macros in this file check for overflow. + The convention is that SIZE_MAX represents overflow. + malloc (SIZE_MAX) is not guaranteed to fail -- think of a malloc + implementation that uses mmap --, it's recommended to use size_overflow_p() + or size_in_bounds_p() before invoking malloc(). + The example thus becomes: + size_t size = xsum (header_size, xtimes (n, element_size)); + void *p = (size_in_bounds_p (size) ? malloc (size) : NULL); +*/ + +/* Convert an arbitrary value >= 0 to type size_t. */ +#define xcast_size_t(N) \ + ((N) <= SIZE_MAX ? (size_t) (N) : SIZE_MAX) + +/* Sum of two sizes, with overflow check. */ +static inline size_t +#if __GNUC__ >= 3 +__attribute__ ((__pure__)) +#endif +xsum (size_t size1, size_t size2) +{ + size_t sum = size1 + size2; + return (sum >= size1 ? sum : SIZE_MAX); +} + +/* Sum of three sizes, with overflow check. */ +static inline size_t +#if __GNUC__ >= 3 +__attribute__ ((__pure__)) +#endif +xsum3 (size_t size1, size_t size2, size_t size3) +{ + return xsum (xsum (size1, size2), size3); +} + +/* Sum of four sizes, with overflow check. */ +static inline size_t +#if __GNUC__ >= 3 +__attribute__ ((__pure__)) +#endif +xsum4 (size_t size1, size_t size2, size_t size3, size_t size4) +{ + return xsum (xsum (xsum (size1, size2), size3), size4); +} + +/* Maximum of two sizes, with overflow check. */ +static inline size_t +#if __GNUC__ >= 3 +__attribute__ ((__pure__)) +#endif +xmax (size_t size1, size_t size2) +{ + /* No explicit check is needed here, because for any n: + max (SIZE_MAX, n) == SIZE_MAX and max (n, SIZE_MAX) == SIZE_MAX. */ + return (size1 >= size2 ? size1 : size2); +} + +/* Multiplication of a count with an element size, with overflow check. + The count must be >= 0 and the element size must be > 0. + This is a macro, not an inline function, so that it works correctly even + when N is of a wider tupe and N > SIZE_MAX. */ +#define xtimes(N, ELSIZE) \ + ((N) <= SIZE_MAX / (ELSIZE) ? (size_t) (N) * (ELSIZE) : SIZE_MAX) + +/* Check for overflow. */ +#define size_overflow_p(SIZE) \ + ((SIZE) == SIZE_MAX) +/* Check against overflow. */ +#define size_in_bounds_p(SIZE) \ + ((SIZE) != SIZE_MAX) + +#endif /* _XSIZE_H */ diff --git a/xchat-2.8.8/libtool b/xchat-2.8.8/libtool new file mode 100755 index 0000000..b6a5a45 --- /dev/null +++ b/xchat-2.8.8/libtool @@ -0,0 +1,8893 @@ +#! /bin/bash + +# libtool - Provide generalized library-building support services. +# Generated automatically by config.status (xchat) 2.8.8 +# Libtool was configured on host somejuan: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008 Free Software Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + +# The names of the tagged configurations supported by this script. +available_tags="" + +# ### BEGIN LIBTOOL CONFIG + +# Whether or not to build static libraries. +build_old_libs=no + +# Which release of libtool.m4 was used? +macro_version=2.2.6b +macro_revision=1.3017 + +# Whether or not to build shared libraries. +build_libtool_libs=yes + +# What type of objects to build. +pic_mode=default + +# Whether or not to optimize for fast installation. +fast_install=needless + +# The host system. +host_alias= +host=x86_64-unknown-linux-gnu +host_os=linux-gnu + +# The build system. +build_alias= +build=x86_64-unknown-linux-gnu +build_os=linux-gnu + +# A sed program that does not truncate output. +SED="/bin/sed" + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP="/usr/local/bin/grep" + +# An ERE matcher. +EGREP="/usr/local/bin/grep -E" + +# A literal string matcher. +FGREP="/usr/local/bin/grep -F" + +# A BSD- or MS-compatible name lister. +NM="/usr/bin/nm -B" + +# Whether we need soft or hard links. +LN_S="ln -s" + +# What is the maximum length of a command? +max_cmd_len=1879296 + +# Object file suffix (normally "o"). +objext=o + +# Executable file suffix (normally ""). +exeext= + +# whether the shell understands "unset". +lt_unset=unset + +# turn spaces into newlines. +SP2NL="tr \\040 \\012" + +# turn newlines into spaces. +NL2SP="tr \\015\\012 \\040\\040" + +# How to create reloadable object files. +reload_flag=" -r" +reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs" + +# An object symbol dumper. +OBJDUMP="objdump" + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method="pass_all" + +# Command to use when deplibs_check_method == "file_magic". +file_magic_cmd="\$MAGIC_CMD" + +# The archiver. +AR="ar" +AR_FLAGS="cru" + +# A symbol stripping program. +STRIP="strip" + +# Commands used to install an old-style archive. +RANLIB="ranlib" +old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$oldlib" +old_postuninstall_cmds="" + +# A C compiler. +LTCC="gcc" + +# LTCC compiler flags. +LTCFLAGS="-g -O2 -Wall -pipe -Wno-pointer-sign -funsigned-char " + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p'" + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl="sed -n -e 's/^T .* \\(.*\\)\$/extern int \\1();/p' -e 's/^[ABCDGIRSTW]* .* \\(.*\\)\$/extern char \\1;/p'" + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/ {\"\\2\", (void *) \\&\\2},/p'" + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\(lib[^ ]*\\)\$/ {\"\\2\", (void *) \\&\\2},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/ {\"lib\\2\", (void *) \\&\\2},/p'" + +# The name of the directory that contains temporary libtool files. +objdir=.libs + +# Shell to use when invoking shell scripts. +SHELL="/bin/bash" + +# An echo program that does not interpret backslashes. +ECHO="echo" + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=file + +# Must we lock files when doing compilation? +need_locks="no" + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL="" + +# Tool to change global to local symbols on Mac OS X. +NMEDIT="" + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO="" + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL="" + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64="" + +# Old archive suffix (normally "a"). +libext=a + +# Shared library suffix (normally ".so"). +shrext_cmds=".so" + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds="" + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" + +# Do we need the "lib" prefix for modules? +need_lib_prefix=no + +# Do we need a version for libraries? +need_version=no + +# Library versioning type. +version_type=linux + +# Shared library runtime path variable. +runpath_var=LD_RUN_PATH + +# Shared library path variable. +shlibpath_var=LD_LIBRARY_PATH + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=yes + +# Format of library name prefix. +libname_spec="lib\$name" + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix \${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}" + +# The coded name of the library, if different from the real name. +soname_spec="\${libname}\${release}\${shared_ext}\$major" + +# Command to use after installation of a shared archive. +postinstall_cmds="" + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds="" + +# Commands used to finish a libtool library installation in a directory. +finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir" + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval="" + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=yes + +# Compile-time system search path for libraries. +sys_lib_search_path_spec="/usr/lib/gcc/x86_64-linux-gnu/8 /usr/lib/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib" + +# Run-time system search path for libraries. +sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib /usr/lib/x86_64-linux-gnu/libfakeroot /usr/local/lib/i386-linux-gnu /lib/i386-linux-gnu /usr/lib/i386-linux-gnu /usr/local/lib/i686-linux-gnu /lib/i686-linux-gnu /usr/lib/i686-linux-gnu /usr/local/lib /usr/local/lib/x86_64-linux-gnu /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu /lib32 /usr/lib32 " + +# Whether dlopen is supported. +dlopen_support=unknown + +# Whether dlopen of programs is supported. +dlopen_self=unknown + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=unknown + +# Commands to strip libraries. +old_striplib="strip --strip-debug" +striplib="strip --strip-unneeded" + + +# The linker used to build libraries. +LD="/usr/bin/ld -m elf_x86_64" + +# Commands used to build an old-style archive. +old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$oldlib" + +# A language specific compiler. +CC="gcc" + +# Is the compiler the GNU compiler? +with_gcc=yes + +# Compiler flag to turn off builtin functions. +no_builtin_flag=" -fno-builtin" + +# How to pass a linker flag through the compiler. +wl="-Wl," + +# Additional compiler flags for building library objects. +pic_flag=" -fPIC -DPIC" + +# Compiler flag to prevent dynamic linking. +link_static_flag="-static" + +# Does compiler simultaneously support -c and -o options? +compiler_c_o="yes" + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=no + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=no + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec="\${wl}--export-dynamic" + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive" + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object="no" + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds="" + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds="" + +# Commands used to build a shared archive. +archive_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib" +archive_expsym_cmds="echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~ + cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~ + echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~ + \$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o \$lib" + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds="" +module_expsym_cmds="" + +# Whether we are building with GNU ld or not. +with_gnu_ld="yes" + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag="" + +# Flag that enforces no undefined symbols. +no_undefined_flag="" + +# Flag to hardcode $libdir into a binary during linking. +# This must work even if $libdir does not exist +hardcode_libdir_flag_spec="\${wl}-rpath \${wl}\$libdir" + +# If ld is used when linking, flag to hardcode $libdir into a binary +# during linking. This must work even if $libdir does not exist. +hardcode_libdir_flag_spec_ld="" + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator="" + +# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=no + +# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting ${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=no + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=no + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=unsupported + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=no + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=no + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=unknown + +# Fix the shell variable $srcfile for the compiler. +fix_srcfile_path="" + +# Set to "yes" if exported symbols are required. +always_export_symbols=no + +# The commands to list exported symbols. +export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols" + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*" + +# Symbols that must always be exported. +include_expsyms="" + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds="" + +# Specify filename containing input files. +file_list_spec="" + +# How to hardcode a shared library path into an executable. +hardcode_action=immediate + +# ### END LIBTOOL CONFIG + +# Generated from ltmain.m4sh. + +# ltmain.sh (GNU libtool) 2.2.6b +# Written by Gordon Matzigkeit , 1996 + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool 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 +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, +# or obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +# Usage: $progname [OPTION]... [MODE-ARG]... +# +# Provide generalized library-building support services. +# +# --config show all configuration variables +# --debug enable verbose shell tracing +# -n, --dry-run display commands without modifying any files +# --features display basic configuration information and exit +# --mode=MODE use operation mode MODE +# --preserve-dup-deps don't remove duplicate dependency libraries +# --quiet, --silent don't print informational messages +# --tag=TAG use configuration variables from tag TAG +# -v, --verbose print informational messages (default) +# --version print version information +# -h, --help print short or long help message +# +# MODE must be one of the following: +# +# clean remove files from the build directory +# compile compile a source file into a libtool object +# execute automatically set library path, then run a program +# finish complete the installation of libtool libraries +# install install libraries or executables +# link create a library or an executable +# uninstall remove libraries from an installed directory +# +# MODE-ARGS vary depending on the MODE. +# Try `$progname --help --mode=MODE' for a more detailed description of MODE. +# +# When reporting a bug, please describe a test case to reproduce it and +# include the following information: +# +# host-triplet: $host +# shell: $SHELL +# compiler: $LTCC +# compiler flags: $LTCFLAGS +# linker: $LD (gnu? $with_gnu_ld) +# $progname: (GNU libtool) 2.2.6b +# automake: $automake_version +# autoconf: $autoconf_version +# +# Report bugs to . + +PROGRAM=ltmain.sh +PACKAGE=libtool +VERSION=2.2.6b +TIMESTAMP="" +package_revision=1.3017 + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# NLS nuisances: We save the old values to restore during execute mode. +# Only set LANG and LC_ALL to C if already set. +# These must not be set unconditionally because not all systems understand +# e.g. LANG=C (notably SCO). +lt_user_locale= +lt_safe_locale= +for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES +do + eval "if test \"\${$lt_var+set}\" = set; then + save_$lt_var=\$$lt_var + $lt_var=C + export $lt_var + lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" + lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" + fi" +done + +$lt_unset CDPATH + + + + + +: ${CP="cp -f"} +: ${ECHO="echo"} +: ${EGREP="/bin/grep -E"} +: ${FGREP="/bin/grep -F"} +: ${GREP="/bin/grep"} +: ${LN_S="ln -s"} +: ${MAKE="make"} +: ${MKDIR="mkdir"} +: ${MV="mv -f"} +: ${RM="rm -f"} +: ${SED="/bin/sed"} +: ${SHELL="${CONFIG_SHELL-/bin/sh}"} +: ${Xsed="$SED -e 1s/^X//"} + +# Global variables: +EXIT_SUCCESS=0 +EXIT_FAILURE=1 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. + +exit_status=$EXIT_SUCCESS + +# Make sure IFS has a sensible default +lt_nl=' +' +IFS=" $lt_nl" + +dirname="s,/[^/]*$,," +basename="s,^.*/,," + +# func_dirname_and_basename file append nondir_replacement +# perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# Implementation must be kept synchronized with func_dirname +# and func_basename. For efficiency, we do not delegate to +# those functions but instead duplicate the functionality here. +func_dirname_and_basename () +{ + # Extract subdirectory from the argument. + func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi + func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` +} + +# Generated shell functions inserted here. + +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac +} + +# func_basename file +func_basename () +{ + func_basename_result="${1##*/}" +} + +# func_dirname_and_basename file append nondir_replacement +# perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# Implementation must be kept synchronized with func_dirname +# and func_basename. For efficiency, we do not delegate to +# those functions but instead duplicate the functionality here. +func_dirname_and_basename () +{ + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac + func_basename_result="${1##*/}" +} + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +func_stripname () +{ + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary parameter first. + func_stripname_result=${3} + func_stripname_result=${func_stripname_result#"${1}"} + func_stripname_result=${func_stripname_result%"${2}"} +} + +# func_opt_split +func_opt_split () +{ + func_opt_split_opt=${1%%=*} + func_opt_split_arg=${1#*=} +} + +# func_lo2o object +func_lo2o () +{ + case ${1} in + *.lo) func_lo2o_result=${1%.lo}.${objext} ;; + *) func_lo2o_result=${1} ;; + esac +} + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=${1%.*}.lo +} + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=$(( $* )) +} + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=${#1} +} + + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "$1+=\$2" +} +# Generated shell functions inserted here. + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" + +# The name of this program: +# In the unlikely event $progname began with a '-', it would play havoc with +# func_echo (imagine progname=-n), so we prepend ./ in that case: +func_dirname_and_basename "$progpath" +progname=$func_basename_result +case $progname in + -*) progname=./$progname ;; +esac + +# Make sure we have an absolute path for reexecution: +case $progpath in + [\\/]*|[A-Za-z]:\\*) ;; + *[\\/]*) + progdir=$func_dirname_result + progdir=`cd "$progdir" && pwd` + progpath="$progdir/$progname" + ;; + *) + save_IFS="$IFS" + IFS=: + for progdir in $PATH; do + IFS="$save_IFS" + test -x "$progdir/$progname" && break + done + IFS="$save_IFS" + test -n "$progdir" || progdir=`pwd` + progpath="$progdir/$progname" + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed="${SED}"' -e 1s/^X//' +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Re-`\' parameter expansions in output of double_quote_subst that were +# `\'-ed in input to the same. If an odd number of `\' preceded a '$' +# in input to double_quote_subst, that '$' was protected from expansion. +# Since each input `\' is now two `\'s, look for any number of runs of +# four `\'s followed by two `\'s and then a '$'. `\' that '$'. +bs='\\' +bs2='\\\\' +bs4='\\\\\\\\' +dollar='\$' +sed_double_backslash="\ + s/$bs4/&\\ +/g + s/^$bs2$dollar/$bs&/ + s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g + s/\n//g" + +# Standard options: +opt_dry_run=false +opt_help=false +opt_quiet=false +opt_verbose=false +opt_warning=: + +# func_echo arg... +# Echo program name prefixed message, along with the current mode +# name if it has been set yet. +func_echo () +{ + $ECHO "$progname${mode+: }$mode: $*" +} + +# func_verbose arg... +# Echo program name prefixed message in verbose mode only. +func_verbose () +{ + $opt_verbose && func_echo ${1+"$@"} + + # A bug in bash halts the script if the last line of a function + # fails when set -e is in force, so we need another command to + # work around that: + : +} + +# func_error arg... +# Echo program name prefixed message to standard error. +func_error () +{ + $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 +} + +# func_warning arg... +# Echo program name prefixed warning message to standard error. +func_warning () +{ + $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 + + # bash bug again: + : +} + +# func_fatal_error arg... +# Echo program name prefixed message to standard error, and exit. +func_fatal_error () +{ + func_error ${1+"$@"} + exit $EXIT_FAILURE +} + +# func_fatal_help arg... +# Echo program name prefixed message to standard error, followed by +# a help hint, and exit. +func_fatal_help () +{ + func_error ${1+"$@"} + func_fatal_error "$help" +} +help="Try \`$progname --help' for more information." ## default + + +# func_grep expression filename +# Check whether EXPRESSION matches any line of FILENAME, without output. +func_grep () +{ + $GREP "$1" "$2" >/dev/null 2>&1 +} + + +# func_mkdir_p directory-path +# Make sure the entire path to DIRECTORY-PATH is available. +func_mkdir_p () +{ + my_directory_path="$1" + my_dir_list= + + if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then + + # Protect directory names starting with `-' + case $my_directory_path in + -*) my_directory_path="./$my_directory_path" ;; + esac + + # While some portion of DIR does not yet exist... + while test ! -d "$my_directory_path"; do + # ...make a list in topmost first order. Use a colon delimited + # list incase some portion of path contains whitespace. + my_dir_list="$my_directory_path:$my_dir_list" + + # If the last portion added has no slash in it, the list is done + case $my_directory_path in */*) ;; *) break ;; esac + + # ...otherwise throw away the child directory and loop + my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"` + done + my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'` + + save_mkdir_p_IFS="$IFS"; IFS=':' + for my_dir in $my_dir_list; do + IFS="$save_mkdir_p_IFS" + # mkdir can fail with a `File exist' error if two processes + # try to create one of the directories concurrently. Don't + # stop in that case! + $MKDIR "$my_dir" 2>/dev/null || : + done + IFS="$save_mkdir_p_IFS" + + # Bail out if we (or some other process) failed to create a directory. + test -d "$my_directory_path" || \ + func_fatal_error "Failed to create \`$1'" + fi +} + + +# func_mktempdir [string] +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, STRING is the basename for that directory. +func_mktempdir () +{ + my_template="${TMPDIR-/tmp}/${1-$progname}" + + if test "$opt_dry_run" = ":"; then + # Return a directory name, but don't create it in dry-run mode + my_tmpdir="${my_template}-$$" + else + + # If mktemp works, use that first and foremost + my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` + + if test ! -d "$my_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + my_tmpdir="${my_template}-${RANDOM-0}$$" + + save_mktempdir_umask=`umask` + umask 0077 + $MKDIR "$my_tmpdir" + umask $save_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$my_tmpdir" || \ + func_fatal_error "cannot create temporary directory \`$my_tmpdir'" + fi + + $ECHO "X$my_tmpdir" | $Xsed +} + + +# func_quote_for_eval arg +# Aesthetically quote ARG to be evaled later. +# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT +# is double-quoted, suitable for a subsequent eval, whereas +# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters +# which are still active within double quotes backslashified. +func_quote_for_eval () +{ + case $1 in + *[\\\`\"\$]*) + func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;; + *) + func_quote_for_eval_unquoted_result="$1" ;; + esac + + case $func_quote_for_eval_unquoted_result in + # Double-quote args containing shell metacharacters to delay + # word splitting, command substitution and and variable + # expansion for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" + ;; + *) + func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" + esac +} + + +# func_quote_for_expand arg +# Aesthetically quote ARG to be evaled later; same as above, +# but do not quote variable references. +func_quote_for_expand () +{ + case $1 in + *[\\\`\"]*) + my_arg=`$ECHO "X$1" | $Xsed \ + -e "$double_quote_subst" -e "$sed_double_backslash"` ;; + *) + my_arg="$1" ;; + esac + + case $my_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting and command substitution for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + my_arg="\"$my_arg\"" + ;; + esac + + func_quote_for_expand_result="$my_arg" +} + + +# func_show_eval cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. +func_show_eval () +{ + my_cmd="$1" + my_fail_exp="${2-:}" + + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + if ${opt_dry_run-false}; then :; else + eval "$my_cmd" + my_status=$? + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi + fi +} + + +# func_show_eval_locale cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. Use the saved locale for evaluation. +func_show_eval_locale () +{ + my_cmd="$1" + my_fail_exp="${2-:}" + + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + if ${opt_dry_run-false}; then :; else + eval "$lt_user_locale + $my_cmd" + my_status=$? + eval "$lt_safe_locale" + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi + fi +} + + + + + +# func_version +# Echo version message to standard output and exit. +func_version () +{ + $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / { + s/^# // + s/^# *$// + s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ + p + }' < "$progpath" + exit $? +} + +# func_usage +# Echo short help message to standard output and exit. +func_usage () +{ + $SED -n '/^# Usage:/,/# -h/ { + s/^# // + s/^# *$// + s/\$progname/'$progname'/ + p + }' < "$progpath" + $ECHO + $ECHO "run \`$progname --help | more' for full usage" + exit $? +} + +# func_help +# Echo long help message to standard output and exit. +func_help () +{ + $SED -n '/^# Usage:/,/# Report bugs to/ { + s/^# // + s/^# *$// + s*\$progname*'$progname'* + s*\$host*'"$host"'* + s*\$SHELL*'"$SHELL"'* + s*\$LTCC*'"$LTCC"'* + s*\$LTCFLAGS*'"$LTCFLAGS"'* + s*\$LD*'"$LD"'* + s/\$with_gnu_ld/'"$with_gnu_ld"'/ + s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ + s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ + p + }' < "$progpath" + exit $? +} + +# func_missing_arg argname +# Echo program name prefixed message to standard error and set global +# exit_cmd. +func_missing_arg () +{ + func_error "missing argument for $1" + exit_cmd=exit +} + +exit_cmd=: + + + + + +# Check that we have a working $ECHO. +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then + # Yippee, $ECHO works! + : +else + # Restart under the correct shell, and then maybe $ECHO will work. + exec $SHELL "$progpath" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null 2>&1; then + taglist="$taglist $tagname" + + # Evaluate the configuration. Be careful to quote the path + # and the sed script, to avoid splitting on whitespace, but + # also don't use non-portable quotes within backquotes within + # quotes we have to do it in 2 steps: + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` + eval "$extractedcf" + else + func_error "ignoring unknown tag $tagname" + fi + ;; + esac +} + +# Parse options once, thoroughly. This comes as soon as possible in +# the script to make things like `libtool --version' happen quickly. +{ + + # Shorthand for --mode=foo, only valid as the first argument + case $1 in + clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; + compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; + execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; + finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; + install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; + link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; + uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; + esac + + # Parse non-mode specific arguments: + while test "$#" -gt 0; do + opt="$1" + shift + + case $opt in + --config) func_config ;; + + --debug) preserve_args="$preserve_args $opt" + func_echo "enabling shell trace mode" + opt_debug='set -x' + $opt_debug + ;; + + -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break + execute_dlfiles="$execute_dlfiles $1" + shift + ;; + + --dry-run | -n) opt_dry_run=: ;; + --features) func_features ;; + --finish) mode="finish" ;; + + --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break + case $1 in + # Valid mode arguments: + clean) ;; + compile) ;; + execute) ;; + finish) ;; + install) ;; + link) ;; + relink) ;; + uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument for $opt" + exit_cmd=exit + break + ;; + esac + + mode="$1" + shift + ;; + + --preserve-dup-deps) + opt_duplicate_deps=: ;; + + --quiet|--silent) preserve_args="$preserve_args $opt" + opt_silent=: + ;; + + --verbose| -v) preserve_args="$preserve_args $opt" + opt_silent=false + ;; + + --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break + preserve_args="$preserve_args $opt $1" + func_enable_tag "$1" # tagname is set here + shift + ;; + + # Separate optargs to long options: + -dlopen=*|--mode=*|--tag=*) + func_opt_split "$opt" + set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} + shift + ;; + + -\?|-h) func_usage ;; + --help) opt_help=: ;; + --version) func_version ;; + + -*) func_fatal_help "unrecognized option \`$opt'" ;; + + *) nonopt="$opt" + break + ;; + esac + done + + + case $host in + *cygwin* | *mingw* | *pw32* | *cegcc*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_duplicate_deps + ;; + esac + + # Having warned about all mis-specified options, bail out if + # anything was wrong. + $exit_cmd $EXIT_FAILURE +} + +# func_check_version_match +# Ensure that we are using m4 macros, and libtool script from the same +# release of libtool. +func_check_version_match () +{ + if test "$package_revision" != "$macro_revision"; then + if test "$VERSION" != "$macro_version"; then + if test -z "$macro_version"; then + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from an older release. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + fi + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, +$progname: but the definition of this LT_INIT comes from revision $macro_revision. +$progname: You should recreate aclocal.m4 with macros from revision $package_revision +$progname: of $PACKAGE $VERSION and run autoconf again. +_LT_EOF + fi + + exit $EXIT_MISMATCH + fi +} + + +## ----------- ## +## Main. ## +## ----------- ## + +$opt_help || { + # Sanity checks first: + func_check_version_match + + if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then + func_fatal_configuration "not configured to build any kind of library" + fi + + test -z "$mode" && func_fatal_error "error: you must specify a MODE." + + + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" + + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$execute_dlfiles" && test "$mode" != execute; then + func_error "unrecognized option \`-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$progname --help --mode=$mode' for more information." +} + + +# func_lalib_p file +# True iff FILE is a libtool `.la' library or `.lo' object file. +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_lalib_p () +{ + test -f "$1" && + $SED -e 4q "$1" 2>/dev/null \ + | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 +} + +# func_lalib_unsafe_p file +# True iff FILE is a libtool `.la' library or `.lo' object file. +# This function implements the same check as func_lalib_p without +# resorting to external programs. To this end, it redirects stdin and +# closes it afterwards, without saving the original file descriptor. +# As a safety measure, use it only where a negative result would be +# fatal anyway. Works if `file' does not exist. +func_lalib_unsafe_p () +{ + lalib_p=no + if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then + for lalib_p_l in 1 2 3 4 + do + read lalib_p_line + case "$lalib_p_line" in + \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; + esac + done + exec 0<&5 5<&- + fi + test "$lalib_p" = yes +} + +# func_ltwrapper_script_p file +# True iff FILE is a libtool wrapper script +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_script_p () +{ + func_lalib_p "$1" +} + +# func_ltwrapper_executable_p file +# True iff FILE is a libtool wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_executable_p () +{ + func_ltwrapper_exec_suffix= + case $1 in + *.exe) ;; + *) func_ltwrapper_exec_suffix=.exe ;; + esac + $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 +} + +# func_ltwrapper_scriptname file +# Assumes file is an ltwrapper_executable +# uses $file to determine the appropriate filename for a +# temporary ltwrapper_script. +func_ltwrapper_scriptname () +{ + func_ltwrapper_scriptname_result="" + if func_ltwrapper_executable_p "$1"; then + func_dirname_and_basename "$1" "" "." + func_stripname '' '.exe' "$func_basename_result" + func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" + fi +} + +# func_ltwrapper_p file +# True iff FILE is a libtool wrapper script or wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_p () +{ + func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" +} + + +# func_execute_cmds commands fail_cmd +# Execute tilde-delimited COMMANDS. +# If FAIL_CMD is given, eval that upon failure. +# FAIL_CMD may read-access the current command in variable CMD! +func_execute_cmds () +{ + $opt_debug + save_ifs=$IFS; IFS='~' + for cmd in $1; do + IFS=$save_ifs + eval cmd=\"$cmd\" + func_show_eval "$cmd" "${2-:}" + done + IFS=$save_ifs +} + + +# func_source file +# Source FILE, adding directory component if necessary. +# Note that it is not necessary on cygwin/mingw to append a dot to +# FILE even if both FILE and FILE.exe exist: automatic-append-.exe +# behavior happens only for exec(3), not for open(2)! Also, sourcing +# `FILE.' does not work on cygwin managed mounts. +func_source () +{ + $opt_debug + case $1 in + */* | *\\*) . "$1" ;; + *) . "./$1" ;; + esac +} + + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + $opt_debug + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + func_quote_for_eval "$arg" + CC_quoted="$CC_quoted $func_quote_for_eval_result" + done + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + func_quote_for_eval "$arg" + CC_quoted="$CC_quoted $func_quote_for_eval_result" + done + case "$@ " in + " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + func_echo "unable to infer tagged configuration" + func_fatal_error "specify a tag with \`--tag'" +# else +# func_verbose "using $tagname tagged configuration" + fi + ;; + esac + fi +} + + + +# func_write_libtool_object output_name pic_name nonpic_name +# Create a libtool object file (analogous to a ".la" file), +# but don't create it if we're doing a dry run. +func_write_libtool_object () +{ + write_libobj=${1} + if test "$build_libtool_libs" = yes; then + write_lobj=\'${2}\' + else + write_lobj=none + fi + + if test "$build_old_libs" = yes; then + write_oldobj=\'${3}\' + else + write_oldobj=none + fi + + $opt_dry_run || { + cat >${write_libobj}T <?"'"'"' &()|`$[]' \ + && func_warning "libobj name \`$libobj' may not contain shell special characters." + func_dirname_and_basename "$obj" "/" "" + objname="$func_basename_result" + xdir="$func_dirname_result" + lobj=${xdir}$objdir/$objname + + test -z "$base_compile" && \ + func_fatal_help "you must specify a compilation command" + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2* | cegcc*) + pic_mode=default + ;; + esac + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test "$compiler_c_o" = no; then + output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then + $ECHO "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + removelist="$removelist $output_obj" + $ECHO "$srcfile" > "$lockfile" + fi + + $opt_dry_run || $RM $removelist + removelist="$removelist $lockfile" + trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 + + if test -n "$fix_srcfile_path"; then + eval srcfile=\"$fix_srcfile_path\" + fi + func_quote_for_eval "$srcfile" + qsrcfile=$func_quote_for_eval_result + + # Only build a PIC object if we are building libtool libraries. + if test "$build_libtool_libs" = yes; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + if test "$pic_mode" != no; then + command="$base_compile $qsrcfile $pic_flag" + else + # Don't build PIC code + command="$base_compile $qsrcfile" + fi + + func_mkdir_p "$xdir$objdir" + + if test -z "$output_obj"; then + # Place PIC objects in $objdir + command="$command -o $lobj" + fi + + func_show_eval_locale "$command" \ + 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' + + if test "$need_locks" = warn && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + func_show_eval '$MV "$output_obj" "$lobj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + + # Allow error messages only from the first compilation. + if test "$suppress_opt" = yes; then + suppress_output=' >/dev/null 2>&1' + fi + fi + + # Only build a position-dependent object if we build old libraries. + if test "$build_old_libs" = yes; then + if test "$pic_mode" != yes; then + # Don't build PIC code + command="$base_compile $qsrcfile$pie_flag" + else + command="$base_compile $qsrcfile $pic_flag" + fi + if test "$compiler_c_o" = yes; then + command="$command -o $obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + command="$command$suppress_output" + func_show_eval_locale "$command" \ + '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' + + if test "$need_locks" = warn && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + func_show_eval '$MV "$output_obj" "$obj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + fi + + $opt_dry_run || { + func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" + + # Unlock the critical section if it was locked + if test "$need_locks" != no; then + removelist=$lockfile + $RM "$lockfile" + fi + } + + exit $EXIT_SUCCESS +} + +$opt_help || { +test "$mode" = compile && func_mode_compile ${1+"$@"} +} + +func_mode_help () +{ + # We need to display help for each of the modes. + case $mode in + "") + # Generic help is extracted from the usage comments + # at the start of this file. + func_help + ;; + + clean) + $ECHO \ +"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + + compile) + $ECHO \ +"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -no-suppress do not suppress compiler output for multiple passes + -prefer-pic try to building PIC objects only + -prefer-non-pic try to building non-PIC objects only + -shared do not build a \`.o' file suitable for static linking + -static only build a \`.o' file suitable for static linking + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + + execute) + $ECHO \ +"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + + finish) + $ECHO \ +"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + + install) + $ECHO \ +"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The following components of INSTALL-COMMAND are treated specially: + + -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + + link) + $ECHO \ +"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE Use a list of object files found in FILE to specify objects + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -shared only do dynamic linking of libtool libraries + -shrext SUFFIX override the standard shared library file extension + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + -weak LIBNAME declare that the target provides the LIBNAME interface + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + + uninstall) + $ECHO \ +"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + + *) + func_fatal_help "invalid operation mode \`$mode'" + ;; + esac + + $ECHO + $ECHO "Try \`$progname --help' for more information about other modes." + + exit $? +} + + # Now that we've collected a possible --mode arg, show help if necessary + $opt_help && func_mode_help + + +# func_mode_execute arg... +func_mode_execute () +{ + $opt_debug + # The first argument is the command name. + cmd="$nonopt" + test -z "$cmd" && \ + func_fatal_help "you must specify a COMMAND" + + # Handle -dlopen flags immediately. + for file in $execute_dlfiles; do + test -f "$file" \ + || func_fatal_help "\`$file' is not a file" + + dir= + case $file in + *.la) + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "\`$lib' is not a valid libtool archive" + + # Read the libtool library. + dlname= + library_names= + func_source "$file" + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && \ + func_warning "\`$file' was not linked with \`-export-dynamic'" + continue + fi + + func_dirname "$file" "" "." + dir="$func_dirname_result" + + if test -f "$dir/$objdir/$dlname"; then + dir="$dir/$objdir" + else + if test ! -f "$dir/$dlname"; then + func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" + fi + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + func_dirname "$file" "" "." + dir="$func_dirname_result" + ;; + + *) + func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -*) ;; + *) + # Do a test to see if this is really a libtool program. + if func_ltwrapper_script_p "$file"; then + func_source "$file" + # Transform arg to wrapped name. + file="$progdir/$program" + elif func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + func_source "$func_ltwrapper_scriptname_result" + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + func_quote_for_eval "$file" + args="$args $func_quote_for_eval_result" + done + + if test "X$opt_dry_run" = Xfalse; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES + do + eval "if test \"\${save_$lt_var+set}\" = set; then + $lt_var=\$save_$lt_var; export $lt_var + else + $lt_unset $lt_var + fi" + done + + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" + $ECHO "export $shlibpath_var" + fi + $ECHO "$cmd$args" + exit $EXIT_SUCCESS + fi +} + +test "$mode" = execute && func_mode_execute ${1+"$@"} + + +# func_mode_finish arg... +func_mode_finish () +{ + $opt_debug + libdirs="$nonopt" + admincmds= + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for dir + do + libdirs="$libdirs $dir" + done + + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + func_execute_cmds "$finish_cmds" 'admincmds="$admincmds +'"$cmd"'"' + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $opt_dry_run || eval "$cmds" || admincmds="$admincmds + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + $opt_silent && exit $EXIT_SUCCESS + + $ECHO "X----------------------------------------------------------------------" | $Xsed + $ECHO "Libraries have been installed in:" + for libdir in $libdirs; do + $ECHO " $libdir" + done + $ECHO + $ECHO "If you ever happen to want to link against installed libraries" + $ECHO "in a given directory, LIBDIR, you must either use libtool, and" + $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'" + $ECHO "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable" + $ECHO " during execution" + fi + if test -n "$runpath_var"; then + $ECHO " - add LIBDIR to the \`$runpath_var' environment variable" + $ECHO " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $ECHO " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + $ECHO " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + $ECHO + + $ECHO "See any operating system documentation about shared libraries for" + case $host in + solaris2.[6789]|solaris2.1[0-9]) + $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual" + $ECHO "pages." + ;; + *) + $ECHO "more information, such as the ld(1) and ld.so(8) manual pages." + ;; + esac + $ECHO "X----------------------------------------------------------------------" | $Xsed + exit $EXIT_SUCCESS +} + +test "$mode" = finish && func_mode_finish ${1+"$@"} + + +# func_mode_install arg... +func_mode_install () +{ + $opt_debug + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + $ECHO "X$nonopt" | $GREP shtool >/dev/null; then + # Aesthetically quote it. + func_quote_for_eval "$nonopt" + install_prog="$func_quote_for_eval_result " + arg=$1 + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + func_quote_for_eval "$arg" + install_prog="$install_prog$func_quote_for_eval_result" + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + for arg + do + if test -n "$dest"; then + files="$files $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=yes ;; + -f) + case " $install_prog " in + *[\\\ /]cp\ *) ;; + *) prev=$arg ;; + esac + ;; + -g | -m | -o) + prev=$arg + ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + func_quote_for_eval "$arg" + install_prog="$install_prog $func_quote_for_eval_result" + done + + test -z "$install_prog" && \ + func_fatal_help "you must specify an install program" + + test -n "$prev" && \ + func_fatal_help "the \`$prev' option requires an argument" + + if test -z "$files"; then + if test -z "$dest"; then + func_fatal_help "no file or destination specified" + else + func_fatal_help "you must specify a destination" + fi + fi + + # Strip any trailing slash from the destination. + func_stripname '' '/' "$dest" + dest=$func_stripname_result + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + func_dirname_and_basename "$dest" "" "." + destdir="$func_dirname_result" + destname="$func_basename_result" + + # Not a directory, so check to see that there is only one file specified. + set dummy $files; shift + test "$#" -gt 1 && \ + func_fatal_help "\`$dest' is not a directory" + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + func_fatal_help "\`$destdir' must be an absolute directory name" + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + staticlibs="$staticlibs $file" + ;; + + *.la) + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "\`$file' is not a valid libtool archive" + + library_names= + old_library= + relink_command= + func_source "$file" + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) current_libdirs="$current_libdirs $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) future_libdirs="$future_libdirs $libdir" ;; + esac + fi + + func_dirname "$file" "/" "" + dir="$func_dirname_result" + dir="$dir$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + test "$inst_prefix_dir" = "$destdir" && \ + func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"` + fi + + func_warning "relinking \`$file'" + func_show_eval "$relink_command" \ + 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' + fi + + # See the names of the shared library. + set dummy $library_names; shift + if test -n "$1"; then + realname="$1" + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \ + 'exit $?' + tstripme="$stripme" + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + case $realname in + *.dll.a) + tstripme="" + ;; + esac + ;; + esac + if test -n "$tstripme" && test -n "$striplib"; then + func_show_eval "$striplib $destdir/$realname" 'exit $?' + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try `ln -sf' first, because the `ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + test "$linkname" != "$realname" \ + && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + func_execute_cmds "$postinstall_cmds" 'exit $?' + fi + + # Install the pseudo-library for information purposes. + func_basename "$file" + name="$func_basename_result" + instname="$dir/$name"i + func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' + + # Maybe install the static library, too. + test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + func_basename "$file" + destfile="$func_basename_result" + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + func_lo2o "$destfile" + staticdest=$func_lo2o_result + ;; + *.$objext) + staticdest="$destfile" + destfile= + ;; + *) + func_fatal_help "cannot copy a libtool object to \`$destfile'" + ;; + esac + + # Install the libtool object if requested. + test -n "$destfile" && \ + func_show_eval "$install_prog $file $destfile" 'exit $?' + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + func_lo2o "$file" + staticobj=$func_lo2o_result + func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + func_basename "$file" + destfile="$func_basename_result" + destfile="$destdir/$destfile" + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext="" + case $file in + *.exe) + if test ! -f "$file"; then + func_stripname '' '.exe' "$file" + file=$func_stripname_result + stripped_ext=".exe" + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin* | *mingw*) + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + wrapper=$func_ltwrapper_scriptname_result + else + func_stripname '' '.exe' "$file" + wrapper=$func_stripname_result + fi + ;; + *) + wrapper=$file + ;; + esac + if func_ltwrapper_script_p "$wrapper"; then + notinst_deplibs= + relink_command= + + func_source "$wrapper" + + # Check the variables that should have been set. + test -z "$generated_by_libtool_version" && \ + func_fatal_error "invalid libtool wrapper script \`$wrapper'" + + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + func_source "$lib" + fi + libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + func_warning "\`$lib' has not been installed in \`$libdir'" + finalize=no + fi + done + + relink_command= + func_source "$wrapper" + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + $opt_dry_run || { + if test "$finalize" = yes; then + tmpdir=`func_mktempdir` + func_basename "$file$stripped_ext" + file="$func_basename_result" + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` + + $opt_silent || { + func_quote_for_expand "$relink_command" + eval "func_echo $func_quote_for_expand_result" + } + if eval "$relink_command"; then : + else + func_error "error: relink \`$file' with the above command before installing it" + $opt_dry_run || ${RM}r "$tmpdir" + continue + fi + file="$outputname" + else + func_warning "cannot relink \`$file'" + fi + } + else + # Install the binary that we compiled earlier. + file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + func_stripname '' '.exe' "$destfile" + destfile=$func_stripname_result + ;; + esac + ;; + esac + func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' + $opt_dry_run || if test -n "$outputname"; then + ${RM}r "$tmpdir" + fi + ;; + esac + done + + for file in $staticlibs; do + func_basename "$file" + name="$func_basename_result" + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + + func_show_eval "$install_prog \$file \$oldlib" 'exit $?' + + if test -n "$stripme" && test -n "$old_striplib"; then + func_show_eval "$old_striplib $oldlib" 'exit $?' + fi + + # Do each command in the postinstall commands. + func_execute_cmds "$old_postinstall_cmds" 'exit $?' + done + + test -n "$future_libdirs" && \ + func_warning "remember to run \`$progname --finish$future_libdirs'" + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + $opt_dry_run && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi +} + +test "$mode" = install && func_mode_install ${1+"$@"} + + +# func_generate_dlsyms outputname originator pic_p +# Extract symbols from dlprefiles and create ${outputname}S.o with +# a dlpreopen symbol table. +func_generate_dlsyms () +{ + $opt_debug + my_outputname="$1" + my_originator="$2" + my_pic_p="${3-no}" + my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` + my_dlsyms= + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + my_dlsyms="${my_outputname}S.c" + else + func_error "not configured to extract global symbols from dlpreopened files" + fi + fi + + if test -n "$my_dlsyms"; then + case $my_dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${my_outputname}.nm" + + func_show_eval "$RM $nlist ${nlist}S ${nlist}T" + + # Parse the name list into a source file. + func_verbose "creating $output_objdir/$my_dlsyms" + + $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ +/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ +/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + func_verbose "generating symbol list for \`$output'" + + $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + for progfile in $progfiles; do + func_verbose "extracting global C symbols from \`$progfile'" + $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $opt_dry_run || { + eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + if test -n "$export_symbols_regex"; then + $opt_dry_run || { + eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$outputname.exp" + $opt_dry_run || { + $RM $export_symbols + eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + } + else + $opt_dry_run || { + eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + case $host in + *cygwin | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + } + fi + fi + + for dlprefile in $dlprefiles; do + func_verbose "extracting global C symbols from \`$dlprefile'" + func_basename "$dlprefile" + name="$func_basename_result" + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + done + + $opt_dry_run || { + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $MV "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if $GREP -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + $GREP -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' + else + $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms" + fi + + $ECHO >> "$output_objdir/$my_dlsyms" "\ + +/* The mapping between symbol names and symbols. */ +typedef struct { + const char *name; + void *address; +} lt_dlsymlist; +" + case $host in + *cygwin* | *mingw* | *cegcc* ) + $ECHO >> "$output_objdir/$my_dlsyms" "\ +/* DATA imports from DLLs on WIN32 con't be const, because + runtime relocations are performed -- see ld's documentation + on pseudo-relocs. */" + lt_dlsym_const= ;; + *osf5*) + echo >> "$output_objdir/$my_dlsyms" "\ +/* This system does not cope well with relocations in const data */" + lt_dlsym_const= ;; + *) + lt_dlsym_const=const ;; + esac + + $ECHO >> "$output_objdir/$my_dlsyms" "\ +extern $lt_dlsym_const lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[]; +$lt_dlsym_const lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[] = +{\ + { \"$my_originator\", (void *) 0 }," + + case $need_lib_prefix in + no) + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + *) + eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + esac + $ECHO >> "$output_objdir/$my_dlsyms" "\ + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_${my_prefix}_LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + } # !$opt_dry_run + + pic_flag_for_symtable= + case "$compile_command " in + *" -static "*) ;; + *) + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; + *-*-hpux*) + pic_flag_for_symtable=" $pic_flag" ;; + *) + if test "X$my_pic_p" != Xno; then + pic_flag_for_symtable=" $pic_flag" + fi + ;; + esac + ;; + esac + symtab_cflags= + for arg in $LTCFLAGS; do + case $arg in + -pie | -fpie | -fPIE) ;; + *) symtab_cflags="$symtab_cflags $arg" ;; + esac + done + + # Now compile the dynamic symbol file. + func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' + + # Clean up the generated files. + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' + + # Transform the symbol file into the correct name. + symfileobj="$output_objdir/${my_outputname}S.$objext" + case $host in + *cygwin* | *mingw* | *cegcc* ) + if test -f "$output_objdir/$my_outputname.def"; then + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + else + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` + fi + ;; + *) + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` + ;; + esac + ;; + *) + func_fatal_error "unknown suffix for \`$my_dlsyms'" + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + fi +} + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +func_win32_libid () +{ + $opt_debug + win32_libid_type="unknown" + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | + $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then + win32_nmres=`eval $NM -f posix -A $1 | + $SED -n -e ' + 1,100{ + / I /{ + s,.*,import, + p + q + } + }'` + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $ECHO "$win32_libid_type" +} + + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + $opt_debug + f_ex_an_ar_dir="$1"; shift + f_ex_an_ar_oldlib="$1" + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?' + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" + fi +} + + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + $opt_debug + my_gentop="$1"; shift + my_oldlibs=${1+"$@"} + my_oldobjs="" + my_xlib="" + my_xabs="" + my_xdir="" + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + func_basename "$my_xlib" + my_xlib="$func_basename_result" + my_xlib_u=$my_xlib + while :; do + case " $extracted_archives " in + *" $my_xlib_u "*) + func_arith $extracted_serial + 1 + extracted_serial=$func_arith_result + my_xlib_u=lt$extracted_serial-$my_xlib ;; + *) break ;; + esac + done + extracted_archives="$extracted_archives $my_xlib_u" + my_xdir="$my_gentop/$my_xlib_u" + + func_mkdir_p "$my_xdir" + + case $host in + *-darwin*) + func_verbose "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + $opt_dry_run || { + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + darwin_base_archive=`basename "$darwin_archive"` + darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` + if test -n "$darwin_arches"; then + darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches ; do + func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" + $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" + func_extract_an_archive "`pwd`" "${darwin_base_archive}" + cd "$darwin_curdir" + $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" + done # $darwin_arches + ## Okay now we've a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` + $LIPO -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + $RM -rf unfat-$$ + cd "$darwin_orig_dir" + else + cd $darwin_orig_dir + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + } # !$opt_dry_run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` + done + + func_extract_archives_result="$my_oldobjs" +} + + + +# func_emit_wrapper_part1 [arg=no] +# +# Emit the first part of a libtool wrapper script on stdout. +# For more information, see the description associated with +# func_emit_wrapper(), below. +func_emit_wrapper_part1 () +{ + func_emit_wrapper_part1_arg1=no + if test -n "$1" ; then + func_emit_wrapper_part1_arg1=$1 + fi + + $ECHO "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='${SED} -e 1s/^X//' +sed_quote_subst='$sed_quote_subst' + +# Be Bourne compatible +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variables: + generated_by_libtool_version='$macro_version' + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$ECHO are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + ECHO=\"$qecho\" + file=\"\$0\" + # Make sure echo works. + if test \"X\$1\" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift + elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then + # Yippee, \$ECHO works! + : + else + # Restart under the correct shell, and then maybe \$ECHO will work. + exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} + fi + fi\ +" + $ECHO "\ + + # Find the directory that this script lives in. + thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` + done +" +} +# end: func_emit_wrapper_part1 + +# func_emit_wrapper_part2 [arg=no] +# +# Emit the second part of a libtool wrapper script on stdout. +# For more information, see the description associated with +# func_emit_wrapper(), below. +func_emit_wrapper_part2 () +{ + func_emit_wrapper_part2_arg1=no + if test -n "$1" ; then + func_emit_wrapper_part2_arg1=$1 + fi + + $ECHO "\ + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1 + if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then + # special case for '.' + if test \"\$thisdir\" = \".\"; then + thisdir=\`pwd\` + fi + # remove .libs from thisdir + case \"\$thisdir\" in + *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;; + $objdir ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + $ECHO "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $MKDIR \"\$progdir\" + else + $RM \"\$progdir/\$file\" + fi" + + $ECHO "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + $ECHO \"\$relink_command_output\" >&2 + $RM \"\$progdir/\$file\" + exit 1 + fi + fi + + $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $RM \"\$progdir/\$program\"; + $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $RM \"\$progdir/\$file\" + fi" + else + $ECHO "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $ECHO "\ + + if test -f \"\$progdir/\$program\"; then" + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $ECHO "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` + + export $shlibpath_var +" + fi + + # fixup the dll searchpath if we need to. + if test -n "$dllsearchpath"; then + $ECHO "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + $ECHO "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2* | *-cegcc*) + $ECHO "\ + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $ECHO "\ + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $ECHO "\ + \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 + exit 1 + fi + else + # The program doesn't exist. + \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 + \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 + $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi +fi\ +" +} +# end: func_emit_wrapper_part2 + + +# func_emit_wrapper [arg=no] +# +# Emit a libtool wrapper script on stdout. +# Don't directly open a file because we may want to +# incorporate the script contents within a cygwin/mingw +# wrapper executable. Must ONLY be called from within +# func_mode_link because it depends on a number of variables +# set therein. +# +# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +# variable will take. If 'yes', then the emitted script +# will assume that the directory in which it is stored is +# the $objdir directory. This is a cygwin/mingw-specific +# behavior. +func_emit_wrapper () +{ + func_emit_wrapper_arg1=no + if test -n "$1" ; then + func_emit_wrapper_arg1=$1 + fi + + # split this up so that func_emit_cwrapperexe_src + # can call each part independently. + func_emit_wrapper_part1 "${func_emit_wrapper_arg1}" + func_emit_wrapper_part2 "${func_emit_wrapper_arg1}" +} + + +# func_to_host_path arg +# +# Convert paths to host format when used with build tools. +# Intended for use with "native" mingw (where libtool itself +# is running under the msys shell), or in the following cross- +# build environments: +# $build $host +# mingw (msys) mingw [e.g. native] +# cygwin mingw +# *nix + wine mingw +# where wine is equipped with the `winepath' executable. +# In the native mingw case, the (msys) shell automatically +# converts paths for any non-msys applications it launches, +# but that facility isn't available from inside the cwrapper. +# Similar accommodations are necessary for $host mingw and +# $build cygwin. Calling this function does no harm for other +# $host/$build combinations not listed above. +# +# ARG is the path (on $build) that should be converted to +# the proper representation for $host. The result is stored +# in $func_to_host_path_result. +func_to_host_path () +{ + func_to_host_path_result="$1" + if test -n "$1" ; then + case $host in + *mingw* ) + lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + case $build in + *mingw* ) # actually, msys + # awkward: cmd appends spaces to result + lt_sed_strip_trailing_spaces="s/[ ]*\$//" + func_to_host_path_tmp1=`( cmd //c echo "$1" |\ + $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` + func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ + $SED -e "$lt_sed_naive_backslashify"` + ;; + *cygwin* ) + func_to_host_path_tmp1=`cygpath -w "$1"` + func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ + $SED -e "$lt_sed_naive_backslashify"` + ;; + * ) + # Unfortunately, winepath does not exit with a non-zero + # error code, so we are forced to check the contents of + # stdout. On the other hand, if the command is not + # found, the shell will set an exit code of 127 and print + # *an error message* to stdout. So we must check for both + # error code of zero AND non-empty stdout, which explains + # the odd construction: + func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` + if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then + func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ + $SED -e "$lt_sed_naive_backslashify"` + else + # Allow warning below. + func_to_host_path_result="" + fi + ;; + esac + if test -z "$func_to_host_path_result" ; then + func_error "Could not determine host path corresponding to" + func_error " '$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback: + func_to_host_path_result="$1" + fi + ;; + esac + fi +} +# end: func_to_host_path + +# func_to_host_pathlist arg +# +# Convert pathlists to host format when used with build tools. +# See func_to_host_path(), above. This function supports the +# following $build/$host combinations (but does no harm for +# combinations not listed here): +# $build $host +# mingw (msys) mingw [e.g. native] +# cygwin mingw +# *nix + wine mingw +# +# Path separators are also converted from $build format to +# $host format. If ARG begins or ends with a path separator +# character, it is preserved (but converted to $host format) +# on output. +# +# ARG is a pathlist (on $build) that should be converted to +# the proper representation on $host. The result is stored +# in $func_to_host_pathlist_result. +func_to_host_pathlist () +{ + func_to_host_pathlist_result="$1" + if test -n "$1" ; then + case $host in + *mingw* ) + lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + # Remove leading and trailing path separator characters from + # ARG. msys behavior is inconsistent here, cygpath turns them + # into '.;' and ';.', and winepath ignores them completely. + func_to_host_pathlist_tmp2="$1" + # Once set for this call, this variable should not be + # reassigned. It is used in tha fallback case. + func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\ + $SED -e 's|^:*||' -e 's|:*$||'` + case $build in + *mingw* ) # Actually, msys. + # Awkward: cmd appends spaces to result. + lt_sed_strip_trailing_spaces="s/[ ]*\$//" + func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\ + $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` + func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ + $SED -e "$lt_sed_naive_backslashify"` + ;; + *cygwin* ) + func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"` + func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ + $SED -e "$lt_sed_naive_backslashify"` + ;; + * ) + # unfortunately, winepath doesn't convert pathlists + func_to_host_pathlist_result="" + func_to_host_pathlist_oldIFS=$IFS + IFS=: + for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do + IFS=$func_to_host_pathlist_oldIFS + if test -n "$func_to_host_pathlist_f" ; then + func_to_host_path "$func_to_host_pathlist_f" + if test -n "$func_to_host_path_result" ; then + if test -z "$func_to_host_pathlist_result" ; then + func_to_host_pathlist_result="$func_to_host_path_result" + else + func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result" + fi + fi + fi + IFS=: + done + IFS=$func_to_host_pathlist_oldIFS + ;; + esac + if test -z "$func_to_host_pathlist_result" ; then + func_error "Could not determine the host path(s) corresponding to" + func_error " '$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback. This may break if $1 contains DOS-style drive + # specifications. The fix is not to complicate the expression + # below, but for the user to provide a working wine installation + # with winepath so that path translation in the cross-to-mingw + # case works properly. + lt_replace_pathsep_nix_to_dos="s|:|;|g" + func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ + $SED -e "$lt_replace_pathsep_nix_to_dos"` + fi + # Now, add the leading and trailing path separators back + case "$1" in + :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" + ;; + esac + case "$1" in + *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;" + ;; + esac + ;; + esac + fi +} +# end: func_to_host_pathlist + +# func_emit_cwrapperexe_src +# emit the source code for a wrapper executable on stdout +# Must ONLY be called from within func_mode_link because +# it depends on a number of variable set therein. +func_emit_cwrapperexe_src () +{ + cat < +#include +#ifdef _MSC_VER +# include +# include +# include +# define setmode _setmode +#else +# include +# include +# ifdef __CYGWIN__ +# include +# define HAVE_SETENV +# ifdef __STRICT_ANSI__ +char *realpath (const char *, char *); +int putenv (char *); +int setenv (const char *, const char *, int); +# endif +# endif +#endif +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(PATH_MAX) +# define LT_PATHMAX PATH_MAX +#elif defined(MAXPATHLEN) +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef S_IXOTH +# define S_IXOTH 0 +#endif +#ifndef S_IXGRP +# define S_IXGRP 0 +#endif + +#ifdef _MSC_VER +# define S_IXUSR _S_IEXEC +# define stat _stat +# ifndef _INTPTR_T_DEFINED +# define intptr_t int +# endif +#endif + +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ + defined (__OS2__) +# define HAVE_DOS_BASED_FILE_SYSTEM +# define FOPEN_WB "wb" +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#ifdef __CYGWIN__ +# define FOPEN_WB "wb" +#endif + +#ifndef FOPEN_WB +# define FOPEN_WB "w" +#endif +#ifndef _O_BINARY +# define _O_BINARY 0 +#endif + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free ((void *) stale); stale = 0; } \ +} while (0) + +#undef LTWRAPPER_DEBUGPRINTF +#if defined DEBUGWRAPPER +# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args +static void +ltwrapper_debugprintf (const char *fmt, ...) +{ + va_list args; + va_start (args, fmt); + (void) vfprintf (stderr, fmt, args); + va_end (args); +} +#else +# define LTWRAPPER_DEBUGPRINTF(args) +#endif + +const char *program_name = NULL; + +void *xmalloc (size_t num); +char *xstrdup (const char *string); +const char *base_name (const char *name); +char *find_executable (const char *wrapper); +char *chase_symlinks (const char *pathspec); +int make_executable (const char *path); +int check_executable (const char *path); +char *strendzap (char *str, const char *pat); +void lt_fatal (const char *message, ...); +void lt_setenv (const char *name, const char *value); +char *lt_extend_str (const char *orig_value, const char *add, int to_end); +void lt_opt_process_env_set (const char *arg); +void lt_opt_process_env_prepend (const char *arg); +void lt_opt_process_env_append (const char *arg); +int lt_split_name_value (const char *arg, char** name, char** value); +void lt_update_exe_path (const char *name, const char *value); +void lt_update_lib_path (const char *name, const char *value); + +static const char *script_text_part1 = +EOF + + func_emit_wrapper_part1 yes | + $SED -e 's/\([\\"]\)/\\\1/g' \ + -e 's/^/ "/' -e 's/$/\\n"/' + echo ";" + cat <"))); + for (i = 0; i < newargc; i++) + { + LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : ""))); + } + +EOF + + case $host_os in + mingw*) + cat <<"EOF" + /* execv doesn't actually work on mingw as expected on unix */ + rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); + if (rval == -1) + { + /* failed to start process */ + LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno)); + return 127; + } + return rval; +EOF + ;; + *) + cat <<"EOF" + execv (lt_argv_zero, newargz); + return rval; /* =127, but avoids unused variable warning */ +EOF + ;; + esac + + cat <<"EOF" +} + +void * +xmalloc (size_t num) +{ + void *p = (void *) malloc (num); + if (!p) + lt_fatal ("Memory exhausted"); + + return p; +} + +char * +xstrdup (const char *string) +{ + return string ? strcpy ((char *) xmalloc (strlen (string) + 1), + string) : NULL; +} + +const char * +base_name (const char *name) +{ + const char *base; + +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + /* Skip over the disk name in MSDOS pathnames. */ + if (isalpha ((unsigned char) name[0]) && name[1] == ':') + name += 2; +#endif + + for (base = name; *name; name++) + if (IS_DIR_SEPARATOR (*name)) + base = name + 1; + return base; +} + +int +check_executable (const char *path) +{ + struct stat st; + + LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n", + path ? (*path ? path : "EMPTY!") : "NULL!")); + if ((!path) || (!*path)) + return 0; + + if ((stat (path, &st) >= 0) + && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) + return 1; + else + return 0; +} + +int +make_executable (const char *path) +{ + int rval = 0; + struct stat st; + + LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n", + path ? (*path ? path : "EMPTY!") : "NULL!")); + if ((!path) || (!*path)) + return 0; + + if (stat (path, &st) >= 0) + { + rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); + } + return rval; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise + Does not chase symlinks, even on platforms that support them. +*/ +char * +find_executable (const char *wrapper) +{ + int has_slash = 0; + const char *p; + const char *p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + int tmp_len; + char *concat_name; + + LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n", + wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!")); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char *path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char *q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR (*q)) + break; + p_len = q - p; + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + tmp_len = strlen (tmp); + concat_name = + XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = + XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + tmp_len = strlen (tmp); + concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + return NULL; +} + +char * +chase_symlinks (const char *pathspec) +{ +#ifndef S_ISLNK + return xstrdup (pathspec); +#else + char buf[LT_PATHMAX]; + struct stat s; + char *tmp_pathspec = xstrdup (pathspec); + char *p; + int has_symlinks = 0; + while (strlen (tmp_pathspec) && !has_symlinks) + { + LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n", + tmp_pathspec)); + if (lstat (tmp_pathspec, &s) == 0) + { + if (S_ISLNK (s.st_mode) != 0) + { + has_symlinks = 1; + break; + } + + /* search backwards for last DIR_SEPARATOR */ + p = tmp_pathspec + strlen (tmp_pathspec) - 1; + while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + p--; + if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + { + /* no more DIR_SEPARATORS left */ + break; + } + *p = '\0'; + } + else + { + char *errstr = strerror (errno); + lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr); + } + } + XFREE (tmp_pathspec); + + if (!has_symlinks) + { + return xstrdup (pathspec); + } + + tmp_pathspec = realpath (pathspec, buf); + if (tmp_pathspec == 0) + { + lt_fatal ("Could not follow symlinks for %s", pathspec); + } + return xstrdup (tmp_pathspec); +#endif +} + +char * +strendzap (char *str, const char *pat) +{ + size_t len, patlen; + + assert (str != NULL); + assert (pat != NULL); + + len = strlen (str); + patlen = strlen (pat); + + if (patlen <= len) + { + str += len - patlen; + if (strcmp (str, pat) == 0) + *str = '\0'; + } + return str; +} + +static void +lt_error_core (int exit_status, const char *mode, + const char *message, va_list ap) +{ + fprintf (stderr, "%s: %s: ", program_name, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, "FATAL", message, ap); + va_end (ap); +} + +void +lt_setenv (const char *name, const char *value) +{ + LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n", + (name ? name : ""), + (value ? value : ""))); + { +#ifdef HAVE_SETENV + /* always make a copy, for consistency with !HAVE_SETENV */ + char *str = xstrdup (value); + setenv (name, str, 1); +#else + int len = strlen (name) + 1 + strlen (value) + 1; + char *str = XMALLOC (char, len); + sprintf (str, "%s=%s", name, value); + if (putenv (str) != EXIT_SUCCESS) + { + XFREE (str); + } +#endif + } +} + +char * +lt_extend_str (const char *orig_value, const char *add, int to_end) +{ + char *new_value; + if (orig_value && *orig_value) + { + int orig_value_len = strlen (orig_value); + int add_len = strlen (add); + new_value = XMALLOC (char, add_len + orig_value_len + 1); + if (to_end) + { + strcpy (new_value, orig_value); + strcpy (new_value + orig_value_len, add); + } + else + { + strcpy (new_value, add); + strcpy (new_value + add_len, orig_value); + } + } + else + { + new_value = xstrdup (add); + } + return new_value; +} + +int +lt_split_name_value (const char *arg, char** name, char** value) +{ + const char *p; + int len; + if (!arg || !*arg) + return 1; + + p = strchr (arg, (int)'='); + + if (!p) + return 1; + + *value = xstrdup (++p); + + len = strlen (arg) - strlen (*value); + *name = XMALLOC (char, len); + strncpy (*name, arg, len-1); + (*name)[len - 1] = '\0'; + + return 0; +} + +void +lt_opt_process_env_set (const char *arg) +{ + char *name = NULL; + char *value = NULL; + + if (lt_split_name_value (arg, &name, &value) != 0) + { + XFREE (name); + XFREE (value); + lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg); + } + + lt_setenv (name, value); + XFREE (name); + XFREE (value); +} + +void +lt_opt_process_env_prepend (const char *arg) +{ + char *name = NULL; + char *value = NULL; + char *new_value = NULL; + + if (lt_split_name_value (arg, &name, &value) != 0) + { + XFREE (name); + XFREE (value); + lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg); + } + + new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + XFREE (name); + XFREE (value); +} + +void +lt_opt_process_env_append (const char *arg) +{ + char *name = NULL; + char *value = NULL; + char *new_value = NULL; + + if (lt_split_name_value (arg, &name, &value) != 0) + { + XFREE (name); + XFREE (value); + lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg); + } + + new_value = lt_extend_str (getenv (name), value, 1); + lt_setenv (name, new_value); + XFREE (new_value); + XFREE (name); + XFREE (value); +} + +void +lt_update_exe_path (const char *name, const char *value) +{ + LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n", + (name ? name : ""), + (value ? value : ""))); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + /* some systems can't cope with a ':'-terminated path #' */ + int len = strlen (new_value); + while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) + { + new_value[len-1] = '\0'; + } + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +void +lt_update_lib_path (const char *name, const char *value) +{ + LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n", + (name ? name : ""), + (value ? value : ""))); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + } +} + + +EOF +} +# end: func_emit_cwrapperexe_src + +# func_mode_link arg... +func_mode_link () +{ + $opt_debug + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # which system we are compiling for in order to pass an extra + # flag for every libtool invocation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll which has undefined symbols, in which case not + # even a static library is built. For now, we need to specify + # -no-undefined on the libtool link line when we can be certain + # that all symbols are satisfied, otherwise we get a static library. + allow_undefined=yes + ;; + *) + allow_undefined=yes + ;; + esac + libtool_args=$nonopt + base_compile="$nonopt $@" + compile_command=$nonopt + finalize_command=$nonopt + + compile_rpath= + finalize_rpath= + compile_shlibpath= + finalize_shlibpath= + convenience= + old_convenience= + deplibs= + old_deplibs= + compiler_flags= + linker_flags= + dllsearchpath= + lib_search_path=`pwd` + inst_prefix_dir= + new_inherited_linker_flags= + + avoid_version=no + dlfiles= + dlprefiles= + dlself=no + export_dynamic=no + export_symbols= + export_symbols_regex= + generated= + libobjs= + ltlibs= + module=no + no_install=no + objs= + non_pic_objects= + precious_files_regex= + prefer_static_libs=no + preload=no + prev= + prevarg= + release= + rpath= + xrpath= + perm_rpath= + temp_rpath= + thread_safe=no + vinfo= + vinfo_number=no + weak_libs= + single_module="${wl}-single_module" + func_infer_tag $base_compile + + # We need to know -static, to get the right output filenames. + for arg + do + case $arg in + -shared) + test "$build_libtool_libs" != yes && \ + func_fatal_configuration "can not build a shared library" + build_old_libs=no + break + ;; + -all-static | -static | -static-libtool-libs) + case $arg in + -all-static) + if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then + func_warning "complete static linking is impossible in this configuration" + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + esac + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg="$1" + shift + func_quote_for_eval "$arg" + qarg=$func_quote_for_eval_unquoted_result + func_append libtool_args " $func_quote_for_eval_result" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + func_append compile_command " @OUTPUT@" + func_append finalize_command " @OUTPUT@" + ;; + esac + + case $prev in + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + func_append compile_command " @SYMFILE@" + func_append finalize_command " @SYMFILE@" + preload=yes + fi + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + else + dlprefiles="$dlprefiles $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols="$arg" + test -f "$arg" \ + || func_fatal_error "symbol file \`$arg' does not exist" + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + framework) + case $host in + *-*-darwin*) + case "$deplibs " in + *" $qarg.ltframework "*) ;; + *) deplibs="$deplibs $qarg.ltframework" # this is fixed later + ;; + esac + ;; + esac + prev= + continue + ;; + inst_prefix) + inst_prefix_dir="$arg" + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat "$save_arg"` + do +# moreargs="$moreargs $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test "$pic_object" = none && + test "$non_pic_object" = none; then + func_fatal_error "cannot find name of object for \`$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "\`$arg' is not a valid libtool object" + fi + fi + done + else + func_fatal_error "link input file \`$arg' does not exist" + fi + arg=$save_arg + prev= + continue + ;; + precious_regex) + precious_files_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) rpath="$rpath $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) xrpath="$xrpath $arg" ;; + esac + fi + prev= + continue + ;; + shrext) + shrext_cmds="$arg" + prev= + continue + ;; + weak) + weak_libs="$weak_libs $arg" + prev= + continue + ;; + xcclinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xcompiler) + compiler_flags="$compiler_flags $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xlinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $wl$qarg" + prev= + func_append compile_command " $wl$qarg" + func_append finalize_command " $wl$qarg" + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg="$arg" + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + # See comment for -static flag below, for more details. + func_append compile_command " $link_static_flag" + func_append finalize_command " $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + func_fatal_error "\`-allow-undefined' must not be used because it is the default" + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + func_fatal_error "more than one -exported-symbols argument is not allowed" + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework) + prev=framework + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + func_append compile_command " $arg" + func_append finalize_command " $arg" + ;; + esac + continue + ;; + + -L*) + func_stripname '-L' '' "$arg" + dir=$func_stripname_result + if test -z "$dir"; then + if test "$#" -gt 0; then + func_fatal_error "require no space between \`-L' and \`$1'" + else + func_fatal_error "need path for \`-L' option" + fi + fi + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + test -z "$absdir" && \ + func_fatal_error "cannot determine absolute directory name of \`$dir'" + dir="$absdir" + ;; + esac + case "$deplibs " in + *" -L$dir "*) ;; + *) + deplibs="$deplibs -L$dir" + lib_search_path="$lib_search_path $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + ::) dllsearchpath=$dir;; + *) dllsearchpath="$dllsearchpath:$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) dllsearchpath="$dllsearchpath:$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + deplibs="$deplibs System.ltframework" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test "X$arg" = "X-lc" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test "X$arg" = "X-lc" && continue + ;; + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + deplibs="$deplibs $arg" + continue + ;; + + -module) + module=yes + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + # Darwin uses the -arch flag to determine output architecture. + -model|-arch|-isysroot) + compiler_flags="$compiler_flags $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) + compiler_flags="$compiler_flags $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case "$new_inherited_linker_flags " in + *" $arg "*) ;; + * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; + esac + continue + ;; + + -multi_module) + single_module="${wl}-multi_module" + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) + # The PATH hackery in wrapper scripts is required on Windows + # and Darwin in order for the loader to find any dlls it needs. + func_warning "\`-no-install' is ignored for $host" + func_warning "assuming \`-no-fast-install' instead" + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + func_stripname '-R' '' "$arg" + dir=$func_stripname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + continue + ;; + + -shared) + # The effects of -shared are defined in a previous loop. + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -static | -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -weak) + prev=weak + continue + ;; + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + func_quote_for_eval "$flag" + arg="$arg $wl$func_quote_for_eval_result" + compiler_flags="$compiler_flags $func_quote_for_eval_result" + done + IFS="$save_ifs" + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Wl,*) + func_stripname '-Wl,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + func_quote_for_eval "$flag" + arg="$arg $wl$func_quote_for_eval_result" + compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" + linker_flags="$linker_flags $func_quote_for_eval_result" + done + IFS="$save_ifs" + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # -msg_* for osf cc + -msg_*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + + # -64, -mips[0-9] enable 64-bit mode on the SGI compiler + # -r[0-9][0-9]* specifies the processor on the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler + # +DA*, +DD* enable 64-bit mode on the HP compiler + # -q* pass through compiler args for the IBM compiler + # -m*, -t[45]*, -txscale* pass through architecture-specific + # compiler args for GCC + # -F/path gives path to uninstalled frameworks, gcc on darwin + # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC + # @file GCC response files + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + func_append compile_command " $arg" + func_append finalize_command " $arg" + compiler_flags="$compiler_flags $arg" + continue + ;; + + # Some other compiler flag. + -* | +*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + + *.$objext) + # A standard object. + objs="$objs $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test "$pic_object" = none && + test "$non_pic_object" = none; then + func_fatal_error "cannot find name of object for \`$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "\`$arg' is not a valid libtool object" + fi + fi + ;; + + *.$libext) + # An archive. + deplibs="$deplibs $arg" + old_deplibs="$old_deplibs $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + dlfiles="$dlfiles $arg" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + dlprefiles="$dlprefiles $arg" + prev= + else + deplibs="$deplibs $arg" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + done # argument parsing loop + + test -n "$prev" && \ + func_fatal_help "the \`$prevarg' option requires an argument" + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + func_basename "$output" + outputname="$func_basename_result" + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + func_dirname "$output" "/" "" + output_objdir="$func_dirname_result$objdir" + # Create the object directory. + func_mkdir_p "$output_objdir" + + # Determine the type of output + case $output in + "") + func_fatal_help "you must specify an output file" + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if $opt_duplicate_deps ; then + case "$libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + libs="$libs $deplib" + done + + if test "$linkmode" = lib; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if $opt_duplicate_compiler_generated_deps; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; + esac + pre_post_deps="$pre_post_deps $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + + case $linkmode in + lib) + passes="conv dlpreopen link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + + for pass in $passes; do + # The preopen pass in lib mode reverses $deplibs; put it back here + # so that -L comes before libs that need it for instance... + if test "$linkmode,$pass" = "lib,link"; then + ## FIXME: Find the place where the list is rebuilt in the wrong + ## order, and fix it there properly + tmp_deplibs= + for deplib in $deplibs; do + tmp_deplibs="$deplib $tmp_deplibs" + done + deplibs="$tmp_deplibs" + fi + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan"; then + libs="$deplibs" + deplibs= + fi + if test "$linkmode" = prog; then + case $pass in + dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + esac + fi + if test "$linkmode,$pass" = "lib,dlpreopen"; then + # Collect and forward deplibs of preopened libtool libs + for lib in $dlprefiles; do + # Ignore non-libtool-libs + dependency_libs= + case $lib in + *.la) func_source "$lib" ;; + esac + + # Collect preopened libtool deplibs, except any this library + # has declared as weak libs + for deplib in $dependency_libs; do + deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` + case " $weak_libs " in + *" $deplib_base "*) ;; + *) deplibs="$deplibs $deplib" ;; + esac + done + done + libs="$dlprefiles" + fi + if test "$pass" = dlopen; then + # Collect dlpreopened libraries + save_deplibs="$deplibs" + deplibs= + fi + + for deplib in $libs; do + lib= + found=no + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + compiler_flags="$compiler_flags $deplib" + if test "$linkmode" = lib ; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; + esac + fi + fi + continue + ;; + -l*) + if test "$linkmode" != lib && test "$linkmode" != prog; then + func_warning "\`-l' is ignored for archives/objects" + continue + fi + func_stripname '-l' '' "$deplib" + name=$func_stripname_result + if test "$linkmode" = lib; then + searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" + else + searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" + fi + for searchdir in $searchdirs; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib="$searchdir/lib${name}${search_ext}" + if test -f "$lib"; then + if test "$search_ext" = ".la"; then + found=yes + else + found=no + fi + break 2 + fi + done + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + else # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $deplib "*) + if func_lalib_p "$lib"; then + library_names= + old_library= + func_source "$lib" + for l in $old_library $library_names; do + ll="$l" + done + if test "X$ll" = "X$old_library" ; then # only static version available + found=no + func_dirname "$lib" "" "." + ladir="$func_dirname_result" + lib=$ladir/$old_library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + fi + ;; # -l + *.ltframework) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + if test "$linkmode" = lib ; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; + esac + fi + fi + continue + ;; + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test "$pass" = conv && continue + newdependency_libs="$deplib $newdependency_libs" + func_stripname '-L' '' "$deplib" + newlib_search_path="$newlib_search_path $func_stripname_result" + ;; + prog) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test "$pass" = scan; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + func_stripname '-L' '' "$deplib" + newlib_search_path="$newlib_search_path $func_stripname_result" + ;; + *) + func_warning "\`-L' is ignored for archives/objects" + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test "$pass" = link; then + func_stripname '-R' '' "$deplib" + dir=$func_stripname_result + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) lib="$deplib" ;; + *.$libext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + # Linking convenience modules into shared libraries is allowed, + # but linking other static libraries is non-portable. + case " $dlpreconveniencelibs " in + *" $deplib "*) ;; + *) + valid_a_lib=no + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=yes + fi + ;; + pass_all) + valid_a_lib=yes + ;; + esac + if test "$valid_a_lib" != yes; then + $ECHO + $ECHO "*** Warning: Trying to link with static lib archive $deplib." + $ECHO "*** I have the capability to make that library automatically link in when" + $ECHO "*** you link to this library. But I can only do this if you have a" + $ECHO "*** shared version of the library, which you do not appear to have" + $ECHO "*** because the file extensions .$libext of this argument makes me believe" + $ECHO "*** that it is just a static archive that I should not use here." + else + $ECHO + $ECHO "*** Warning: Linking the shared library $output against the" + $ECHO "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + ;; + esac + continue + ;; + prog) + if test "$pass" != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + elif test "$linkmode" = prog; then + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + newdlprefiles="$newdlprefiles $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + newdlfiles="$newdlfiles $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + + if test "$found" = yes || test -f "$lib"; then : + else + func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" + fi + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$lib" \ + || func_fatal_error "\`$lib' is not a valid libtool archive" + + func_dirname "$lib" "" "." + ladir="$func_dirname_result" + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + inherited_linker_flags= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + func_source "$lib" + + # Convert "-framework foo" to "foo.ltframework" + if test -n "$inherited_linker_flags"; then + tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` + for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do + case " $new_inherited_linker_flags " in + *" $tmp_inherited_linker_flag "*) ;; + *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; + esac + done + fi + dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then + test -n "$dlopen" && dlfiles="$dlfiles $dlopen" + test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" + fi + + if test "$pass" = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + func_fatal_error "cannot find name of link library for \`$lib'" + fi + # It is a libtool convenience library, so add in its objects. + convenience="$convenience $ladir/$objdir/$old_library" + old_convenience="$old_convenience $ladir/$objdir/$old_library" + elif test "$linkmode" != prog && test "$linkmode" != lib; then + func_fatal_error "\`$lib' is not a convenience library" + fi + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if $opt_duplicate_deps ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + for l in $old_library $library_names; do + linklib="$l" + done + if test -z "$linklib"; then + func_fatal_error "cannot find name of link library for \`$lib'" + fi + + # This library was specified with -dlopen. + if test "$pass" = dlopen; then + if test -z "$libdir"; then + func_fatal_error "cannot -dlopen a convenience library: \`$lib'" + fi + if test -z "$dlname" || + test "$dlopen_support" != yes || + test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + dlprefiles="$dlprefiles $lib $dependency_libs" + else + newdlfiles="$newdlfiles $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + func_warning "cannot determine absolute directory name of \`$ladir'" + func_warning "passing it literally to the linker, although it might fail" + abs_ladir="$ladir" + fi + ;; + esac + func_basename "$lib" + laname="$func_basename_result" + + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + func_warning "library \`$lib' was moved." + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$libdir" + absdir="$libdir" + fi + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir="$ladir" + absdir="$abs_ladir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + fi + fi # $installed = yes + func_stripname 'lib' '.la' "$laname" + name=$func_stripname_result + + # This library was specified with -dlpreopen. + if test "$pass" = dlpreopen; then + if test -z "$libdir" && test "$linkmode" = prog; then + func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" + fi + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + newdlprefiles="$newdlprefiles $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + newdlprefiles="$newdlprefiles $dir/$dlname" + else + newdlprefiles="$newdlprefiles $dir/$linklib" + fi + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test "$linkmode" = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test "$linkmode" = prog && test "$pass" != link; then + newlib_search_path="$newlib_search_path $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + newlib_search_path="$newlib_search_path $func_stripname_result" + ;; + esac + # Need to link against all dependency_libs? + if test "$linkalldeplibs" = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if $opt_duplicate_deps ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test "$linkmode,$pass" = "prog,link"; then + if test -n "$library_names" && + { { test "$prefer_static_libs" = no || + test "$prefer_static_libs,$installed" = "built,yes"; } || + test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath:" in + *"$absdir:"*) ;; + *) temp_rpath="$temp_rpath$absdir:" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test "$use_static_libs" = built && test "$installed" = yes; then + use_static_libs=no + fi + if test -n "$library_names" && + { test "$use_static_libs" = no || test -z "$old_library"; }; then + case $host in + *cygwin* | *mingw* | *cegcc*) + # No point in relinking DLLs because paths are not encoded + notinst_deplibs="$notinst_deplibs $lib" + need_relink=no + ;; + *) + if test "$installed" = no; then + notinst_deplibs="$notinst_deplibs $lib" + need_relink=yes + fi + ;; + esac + # This is a shared library + + # Warn about portability, can't link against -module's on some + # systems (darwin). Don't bleat about dlopened modules though! + dlopenmodule="" + for dlpremoduletest in $dlprefiles; do + if test "X$dlpremoduletest" = "X$lib"; then + dlopenmodule="$dlpremoduletest" + break + fi + done + if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then + $ECHO + if test "$linkmode" = prog; then + $ECHO "*** Warning: Linking the executable $output against the loadable module" + else + $ECHO "*** Warning: Linking the shared library $output against the loadable module" + fi + $ECHO "*** $linklib is not portable!" + fi + if test "$linkmode" = lib && + test "$hardcode_into_libs" = yes; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + shift + realname="$1" + shift + libname=`eval "\\$ECHO \"$libname_spec\""` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw* | *cegcc*) + func_arith $current - $age + major=$func_arith_result + versuffix="-$major" + ;; + esac + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + func_basename "$soroot" + soname="$func_basename_result" + func_stripname 'lib' '.dll' "$soname" + newlib=libimp-$func_stripname_result.a + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + func_verbose "extracting exported symbol list from \`$soname'" + func_execute_cmds "$extract_expsyms_cmds" 'exit $?' + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + func_verbose "generating import library for \`$soname'" + func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test "$linkmode" = prog || test "$mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + case $host in + *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; + *-*-sysv4*uw2*) add_dir="-L$dir" ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir="-L$dir" ;; + *-*-darwin* ) + # if the lib is a (non-dlopened) module then we can not + # link against it, someone is ignoring the earlier warnings + if /usr/bin/file -L $add 2> /dev/null | + $GREP ": [^:]* bundle" >/dev/null ; then + if test "X$dlopenmodule" != "X$lib"; then + $ECHO "*** Warning: lib $linklib is a module, not a shared library" + if test -z "$old_library" ; then + $ECHO + $ECHO "*** And there doesn't seem to be a static archive available" + $ECHO "*** The link will probably fail, sorry" + else + add="$dir/$old_library" + fi + elif test -n "$old_library"; then + add="$dir/$old_library" + fi + fi + esac + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + relink) + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$dir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test "$lib_linked" != yes; then + func_fatal_configuration "unsupported hardcode properties" + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; + esac + fi + if test "$linkmode" = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test "$hardcode_direct" != yes && + test "$hardcode_minus_L" != yes && + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + fi + fi + fi + + if test "$linkmode" = prog || test "$mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + add="-l$name" + elif test "$hardcode_automatic" = yes; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib" ; then + add="$inst_prefix_dir$libdir/$linklib" + else + add="$libdir/$linklib" + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + fi + + if test "$linkmode" = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test "$linkmode" = prog; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + $ECHO + $ECHO "*** Warning: This system can not link to static lib archive $lib." + $ECHO "*** I have the capability to make that library automatically link in when" + $ECHO "*** you link to this library. But I can only do this if you have a" + $ECHO "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then + $ECHO "*** But as you try to build a module library, libtool will still create " + $ECHO "*** a static module, that should work as long as the dlopening application" + $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + $ECHO + $ECHO "*** However, this would only work if libtool was able to extract symbol" + $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" + $ECHO "*** not find such a program. So, this module is probably useless." + $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test "$linkmode" = lib; then + if test -n "$dependency_libs" && + { test "$hardcode_into_libs" != yes || + test "$build_old_libs" = yes || + test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) func_stripname '-R' '' "$libdir" + temp_xrpath=$func_stripname_result + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) xrpath="$xrpath $temp_xrpath";; + esac;; + *) temp_deplibs="$temp_deplibs $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi + + newlib_search_path="$newlib_search_path $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + if $opt_duplicate_deps ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + + if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + case $deplib in + -L*) path="$deplib" ;; + *.la) + func_dirname "$deplib" "" "." + dir="$func_dirname_result" + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + func_warning "cannot determine absolute directory name of \`$dir'" + absdir="$dir" + fi + ;; + esac + if $GREP "^installed=no" $deplib > /dev/null; then + case $host in + *-*-darwin*) + depdepl= + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names" ; then + for tmp in $deplibrary_names ; do + depdepl=$tmp + done + if test -f "$absdir/$objdir/$depdepl" ; then + depdepl="$absdir/$objdir/$depdepl" + darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + if test -z "$darwin_install_name"; then + darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + fi + compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" + linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" + path= + fi + fi + ;; + *) + path="-L$absdir/$objdir" + ;; + esac + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "\`$deplib' is not a valid libtool archive" + test "$absdir" != "$libdir" && \ + func_warning "\`$deplib' seems to be moved" + + path="-L$absdir" + fi + ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + if test "$pass" = link; then + if test "$linkmode" = "prog"; then + compile_deplibs="$new_inherited_linker_flags $compile_deplibs" + finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" + else + compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + fi + fi + dependency_libs="$newdependency_libs" + if test "$pass" = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test "$pass" != dlopen; then + if test "$pass" != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) lib_search_path="$lib_search_path $dir" ;; + esac + done + newlib_search_path= + fi + + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_deplibs" + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs ; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i="" + ;; + esac + if test -n "$i" ; then + tmp_libs="$tmp_libs $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test "$linkmode" = prog; then + dlfiles="$newdlfiles" + fi + if test "$linkmode" = prog || test "$linkmode" = lib; then + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + func_warning "\`-dlopen' is ignored for archives" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "\`-l' and \`-L' are ignored for archives" ;; + esac + + test -n "$rpath" && \ + func_warning "\`-rpath' is ignored for archives" + + test -n "$xrpath" && \ + func_warning "\`-R' is ignored for archives" + + test -n "$vinfo" && \ + func_warning "\`-version-info/-version-number' is ignored for archives" + + test -n "$release" && \ + func_warning "\`-release' is ignored for archives" + + test -n "$export_symbols$export_symbols_regex" && \ + func_warning "\`-export-symbols' is ignored for archives" + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + objs="$objs$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form `libNAME.la'. + case $outputname in + lib*) + func_stripname 'lib' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + test "$module" = no && \ + func_fatal_help "libtool library \`$output' must begin with \`lib'" + + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + func_stripname '' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + func_stripname '' '.la' "$outputname" + libname=$func_stripname_result + fi + ;; + esac + + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" + else + $ECHO + $ECHO "*** Warning: Linking the shared library $output against the non-libtool" + $ECHO "*** objects $objs is not portable!" + libobjs="$libobjs $objs" + fi + fi + + test "$dlself" != no && \ + func_warning "\`-dlopen self' is ignored for libtool libraries" + + set dummy $rpath + shift + test "$#" -gt 1 && \ + func_warning "ignoring multiple \`-rpath's for a libtool library" + + install_libdir="$1" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + # Some compilers have problems with a `.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + test -n "$vinfo" && \ + func_warning "\`-version-info/-version-number' is ignored for convenience libraries" + + test -n "$release" && \ + func_warning "\`-release' is ignored for convenience libraries" + else + + # Parse the version information argument. + save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + shift + IFS="$save_ifs" + + test -n "$7" && \ + func_fatal_help "too many parameters to \`-version-info'" + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major="$1" + number_minor="$2" + number_revision="$3" + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # which has an extra 1 added just for fun + # + case $version_type in + darwin|linux|osf|windows|none) + func_arith $number_major + $number_minor + current=$func_arith_result + age="$number_minor" + revision="$number_revision" + ;; + freebsd-aout|freebsd-elf|sunos) + current="$number_major" + revision="$number_minor" + age="0" + ;; + irix|nonstopux) + func_arith $number_major + $number_minor + current=$func_arith_result + age="$number_minor" + revision="$number_minor" + lt_irix_increment=no + ;; + esac + ;; + no) + current="$1" + revision="$2" + age="$3" + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "CURRENT \`$current' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "REVISION \`$revision' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "AGE \`$age' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + if test "$age" -gt "$current"; then + func_error "AGE \`$age' is greater than the current interface number \`$current'" + func_fatal_error "\`$vinfo' is not valid version information" + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + func_arith $current - $age + major=.$func_arith_result + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + func_arith $current + 1 + minor_current=$func_arith_result + xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current" + ;; + + irix | nonstopux) + if test "X$lt_irix_increment" = "Xno"; then + func_arith $current - $age + else + func_arith $current - $age + 1 + fi + major=$func_arith_result + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring="$verstring_prefix$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test "$loop" -ne 0; do + func_arith $revision - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" + ;; + + linux) + func_arith $current - $age + major=.$func_arith_result + versuffix="$major.$age.$revision" + ;; + + osf) + func_arith $current - $age + major=.$func_arith_result + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test "$loop" -ne 0; do + func_arith $current - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + verstring="$verstring:${current}.0" + ;; + + qnx) + major=".$current" + versuffix=".$current" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. + func_arith $current - $age + major=$func_arith_result + versuffix="-$major" + ;; + + *) + func_fatal_configuration "unknown library version type \`$version_type'" + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring="0.0" + ;; + esac + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + func_warning "undefined symbols not allowed in $host shared libraries" + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + + fi + + func_generate_dlsyms "$libname" "$libname" "yes" + libobjs="$libobjs $symfileobj" + test "X$libobjs" = "X " && libobjs= + + if test "$mode" != relink; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$ECHO "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext | *.gcno) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) + if test "X$precious_files_regex" != "X"; then + if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + removelist="$removelist $p" + ;; + *) ;; + esac + done + test -n "$removelist" && \ + func_show_eval "${RM}r \$removelist" + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + oldlibs="$oldlibs $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + #for path in $notinst_path; do + # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"` + # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"` + # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"` + #done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + temp_xrpath="$temp_xrpath -R$libdir" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles="$dlfiles" + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) dlfiles="$dlfiles $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles="$dlprefiles" + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) dlprefiles="$dlprefiles $lib" ;; + esac + done + + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + deplibs="$deplibs System.ltframework" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test "$build_libtool_need_lc" = "yes"; then + deplibs="$deplibs -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $opt_dry_run || $RM conftest.c + cat > conftest.c </dev/null` + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null | + $GREP " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | + $SED -e 10q | + $EGREP "$file_magic_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $ECHO + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + $ECHO "*** I have the capability to make that library automatically link in when" + $ECHO "*** you link to this library. But I can only do this if you have a" + $ECHO "*** shared version of the library, which you do not appear to have" + $ECHO "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $ECHO "*** with $libname but no candidates were found. (...for file magic test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a file magic. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + for a_deplib in $deplibs; do + case $a_deplib in + -l*) + func_stripname -l '' "$a_deplib" + name=$func_stripname_result + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval "\\$ECHO \"$libname_spec\""` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib="$potent_lib" # see symlink-check above in file_magic test + if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \ + $EGREP "$match_pattern_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $ECHO + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + $ECHO "*** I have the capability to make that library automatically link in when" + $ECHO "*** you link to this library. But I can only do this if you have a" + $ECHO "*** shared version of the library, which you do not appear to have" + $ECHO "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a regex pattern. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \ + -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + for i in $predeps $postdeps ; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"` + done + fi + if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' | + $GREP . >/dev/null; then + $ECHO + if test "X$deplibs_check_method" = "Xnone"; then + $ECHO "*** Warning: inter-library dependencies are not supported in this platform." + else + $ECHO "*** Warning: inter-library dependencies are not known to be supported." + fi + $ECHO "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + fi + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library with the System framework + newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'` + ;; + esac + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + $ECHO + $ECHO "*** Warning: libtool could not satisfy all declared inter-library" + $ECHO "*** dependencies of module $libname. Therefore, libtool will create" + $ECHO "*** a static module, that should work as long as the dlopening" + $ECHO "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + $ECHO + $ECHO "*** However, this would only work if libtool was able to extract symbol" + $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" + $ECHO "*** not find such a program. So, this module is probably useless." + $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + $ECHO "*** The inter-library dependencies that have been dropped here will be" + $ECHO "*** automatically added whenever a program is linked with this library" + $ECHO "*** or is declared to -dlopen it." + + if test "$allow_undefined" = no; then + $ECHO + $ECHO "*** Since this library must not contain undefined symbols," + $ECHO "*** because either the platform does not support them or" + $ECHO "*** it was explicitly requested with -no-undefined," + $ECHO "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + case $host in + *-*-darwin*) + newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + new_libs="$new_libs -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$new_libs $deplib" ;; + esac + ;; + *) new_libs="$new_libs $deplib" ;; + esac + done + deplibs="$new_libs" + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + if test "$hardcode_into_libs" = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + dep_rpath="$dep_rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + if test -n "$hardcode_libdir_flag_spec_ld"; then + eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" + else + eval dep_rpath=\"$hardcode_libdir_flag_spec\" + fi + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath="$finalize_shlibpath" + test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + shift + realname="$1" + shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib="$output_objdir/$realname" + linknames= + for link + do + linknames="$linknames $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + test "X$libobjs" = "X " && libobjs= + + delfiles= + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" + export_symbols="$output_objdir/$libname.uexp" + delfiles="$delfiles $export_symbols" + fi + + orig_export_symbols= + case $host_os in + cygwin* | mingw* | cegcc*) + if test -n "$export_symbols" && test -z "$export_symbols_regex"; then + # exporting using user supplied symfile + if test "x`$SED 1q $export_symbols`" != xEXPORTS; then + # and it's NOT already a .def file. Must figure out + # which of the given symbols are data symbols and tag + # them as such. So, trigger use of export_symbols_cmds. + # export_symbols gets reassigned inside the "prepare + # the list of exported symbols" if statement, so the + # include_expsyms logic still works. + orig_export_symbols="$export_symbols" + export_symbols= + always_export_symbols=yes + fi + fi + ;; + esac + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + func_verbose "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $opt_dry_run || $RM $export_symbols + cmds=$export_symbols_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + func_len " $cmd" + len=$func_len_result + if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + func_show_eval "$cmd" 'exit $?' + skipped_export=false + else + # The command line is too long to execute in one step. + func_verbose "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS="$save_ifs" + if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' + fi + + if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + tmp_deplibs="$tmp_deplibs $test_deplib" + ;; + esac + done + deplibs="$tmp_deplibs" + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec" && + test "$compiler_needs_object" = yes && + test -z "$libobjs"; then + # extract the archives, so we have objects to list. + # TODO: could optimize this to just extract one archive. + whole_archive_flag_spec= + fi + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + else + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + libobjs="$libobjs $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + linker_flags="$linker_flags $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test "$mode" = relink; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test "X$skipped_export" != "X:" && + func_len " $test_cmds" && + len=$func_len_result && + test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise + # or, if using GNU ld and skipped_export is not :, use a linker + # script. + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + output_la=`$ECHO "X$output" | $Xsed -e "$basename"` + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + last_robj= + k=1 + + if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then + output=${output_objdir}/${output_la}.lnkscript + func_verbose "creating GNU ld script: $output" + $ECHO 'INPUT (' > $output + for obj in $save_libobjs + do + $ECHO "$obj" >> $output + done + $ECHO ')' >> $output + delfiles="$delfiles $output" + elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then + output=${output_objdir}/${output_la}.lnk + func_verbose "creating linker input file list: $output" + : > $output + set x $save_libobjs + shift + firstobj= + if test "$compiler_needs_object" = yes; then + firstobj="$1 " + shift + fi + for obj + do + $ECHO "$obj" >> $output + done + delfiles="$delfiles $output" + output=$firstobj\"$file_list_spec$output\" + else + if test -n "$save_libobjs"; then + func_verbose "creating reloadable object files..." + output=$output_objdir/$output_la-${k}.$objext + eval test_cmds=\"$reload_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + if test "X$objlist" = X || + test "$len" -lt "$max_cmd_len"; then + func_append objlist " $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test "$k" -eq 1 ; then + # The first file doesn't have a previous command to add. + eval concat_cmds=\"$reload_cmds $objlist $last_robj\" + else + # All subsequent reloadable object files will link in + # the last one created. + eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\" + fi + last_robj=$output_objdir/$output_la-${k}.$objext + func_arith $k + 1 + k=$func_arith_result + output=$output_objdir/$output_la-${k}.$objext + objlist=$obj + func_len " $last_robj" + func_arith $len0 + $func_len_result + len=$func_arith_result + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" + if test -n "$last_robj"; then + eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" + fi + delfiles="$delfiles $output" + + else + output= + fi + + if ${skipped_export-false}; then + func_verbose "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $opt_dry_run || $RM $export_symbols + libobjs=$output + # Append the command to create the export file. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + fi + + test -n "$save_libobjs" && + func_verbose "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs="$IFS"; IFS='~' + for cmd in $concat_cmds; do + IFS="$save_ifs" + $opt_silent || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + if test -n "$export_symbols_regex" && ${skipped_export-false}; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + + if ${skipped_export-false}; then + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' + fi + + if test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + fi + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + fi + + if test -n "$delfiles"; then + # Append the command to remove temporary files to $cmds. + eval cmds=\"\$cmds~\$RM $delfiles\" + fi + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $dlprefiles + libobjs="$libobjs $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $opt_silent || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + func_show_eval '${RM}r "$gentop"' + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + obj) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + func_warning "\`-dlopen' is ignored for objects" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "\`-l' and \`-L' are ignored for objects" ;; + esac + + test -n "$rpath" && \ + func_warning "\`-rpath' is ignored for objects" + + test -n "$xrpath" && \ + func_warning "\`-R' is ignored for objects" + + test -n "$vinfo" && \ + func_warning "\`-version-info' is ignored for objects" + + test -n "$release" && \ + func_warning "\`-release' is ignored for objects" + + case $output in + *.lo) + test -n "$objs$old_deplibs" && \ + func_fatal_error "cannot build library object \`$output' from non-libtool objects" + + libobj=$output + func_lo2o "$libobj" + obj=$func_lo2o_result + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $opt_dry_run || $RM $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec and hope we can get by with + # turning comma into space.. + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" + reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` + else + gentop="$output_objdir/${obj}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # Create the old-style object. + reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" + func_execute_cmds "$reload_cmds" 'exit $?' + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + func_execute_cmds "$reload_cmds" 'exit $?' + fi + + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) func_stripname '' '.exe' "$output" + output=$func_stripname_result.exe;; + esac + test -n "$vinfo" && \ + func_warning "\`-version-info' is ignored for programs" + + test -n "$release" && \ + func_warning "\`-release' is ignored for programs" + + test "$preload" = yes \ + && test "$dlopen_support" = unknown \ + && test "$dlopen_self" = unknown \ + && test "$dlopen_self_static" = unknown && \ + func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` + finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` + ;; + esac + + case $host in + *-*-darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + # But is supposedly fixed on 10.4 or later (yay!). + if test "$tagname" = CXX ; then + case ${MACOSX_DEPLOYMENT_TARGET-10.0} in + 10.[0123]) + compile_command="$compile_command ${wl}-bind_at_load" + finalize_command="$finalize_command ${wl}-bind_at_load" + ;; + esac + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + new_libs="$new_libs -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$new_libs $deplib" ;; + esac + ;; + *) new_libs="$new_libs $deplib" ;; + esac + done + compile_deplibs="$new_libs" + + + compile_command="$compile_command $compile_deplibs" + finalize_command="$finalize_command $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + ::) dllsearchpath=$libdir;; + *) dllsearchpath="$dllsearchpath:$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) dllsearchpath="$dllsearchpath:$testbindir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + fi + + func_generate_dlsyms "$outputname" "@PROGRAM@" "no" + + # template prelinking step + if test -n "$prelink_cmds"; then + func_execute_cmds "$prelink_cmds" 'exit $?' + fi + + wrappers_required=yes + case $host in + *cygwin* | *mingw* ) + if test "$build_libtool_libs" != yes; then + wrappers_required=no + fi + ;; + *cegcc) + # Disable wrappers for cegcc, we are cross compiling anyway. + wrappers_required=no + ;; + *) + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + wrappers_required=no + fi + ;; + esac + if test "$wrappers_required" = no; then + # Replace the output file specification. + compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + exit_status=0 + func_show_eval "$link_command" 'exit_status=$?' + + # Delete the generated files. + if test -f "$output_objdir/${outputname}S.${objext}"; then + func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' + fi + + exit $exit_status + fi + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + rpath="$rpath$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$no_install" = yes; then + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. + link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $opt_dry_run || $RM $output + # Link the executable and exit + func_show_eval "$link_command" 'exit $?' + exit $EXIT_SUCCESS + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + func_warning "this platform does not like uninstalled shared libraries" + func_warning "\`$output' will be relinked during installation" + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname + + func_show_eval "$link_command" 'exit $?' + + # Now create the wrapper script. + func_verbose "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` + fi + + # Quote $ECHO for shipping. + if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then + case $progpath in + [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; + *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; + esac + qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"` + else + qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"` + fi + + # Only actually do things if not in dry run mode. + $opt_dry_run || { + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) func_stripname '' '.exe' "$output" + output=$func_stripname_result ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + func_stripname '' '.exe' "$outputname" + outputname=$func_stripname_result ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + func_dirname_and_basename "$output" "" "." + output_name=$func_basename_result + output_path=$func_dirname_result + cwrappersource="$output_path/$objdir/lt-$output_name.c" + cwrapper="$output_path/$output_name.exe" + $RM $cwrappersource $cwrapper + trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + func_emit_cwrapperexe_src > $cwrappersource + + # The wrapper executable is built using the $host compiler, + # because it contains $host paths and files. If cross- + # compiling, it, like the target executable, must be + # executed on the $host or under an emulation environment. + $opt_dry_run || { + $LTCC $LTCFLAGS -o $cwrapper $cwrappersource + $STRIP $cwrapper + } + + # Now, create the wrapper script for func_source use: + func_ltwrapper_scriptname $cwrapper + $RM $func_ltwrapper_scriptname_result + trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 + $opt_dry_run || { + # note: this script will not be executed, so do not chmod. + if test "x$build" = "x$host" ; then + $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result + else + func_emit_wrapper no > $func_ltwrapper_scriptname_result + fi + } + ;; + * ) + $RM $output + trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 + + func_emit_wrapper no > $output + chmod +x $output + ;; + esac + } + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save $symfileobj" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$old_deplibs $non_pic_objects" + if test "$preload" = yes && test -f "$symfileobj"; then + oldobjs="$oldobjs $symfileobj" + fi + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $addlibs + oldobjs="$oldobjs $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + cmds=$old_archive_from_new_cmds + else + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $dlprefiles + oldobjs="$oldobjs $func_extract_archives_result" + fi + + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + func_basename "$obj" + $ECHO "$func_basename_result" + done | sort | sort -uc >/dev/null 2>&1); then + : + else + $ECHO "copying selected object files to avoid basename conflicts..." + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + func_mkdir_p "$gentop" + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + func_basename "$obj" + objbase="$func_basename_result" + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + func_arith $counter + 1 + counter=$func_arith_result + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + oldobjs="$oldobjs $gentop/$newobj" + ;; + *) oldobjs="$oldobjs $obj" ;; + esac + done + fi + eval cmds=\"$old_archive_cmds\" + + func_len " $cmds" + len=$func_len_result + if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + func_verbose "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + oldobjs= + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + eval test_cmds=\"$old_archive_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + for obj in $save_oldobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + func_append objlist " $obj" + if test "$len" -lt "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj" ; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + objlist= + len=$len0 + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test "X$oldobjs" = "X" ; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + func_execute_cmds "$cmds" 'exit $?' + done + + test -n "$generated" && \ + func_show_eval "${RM}r$generated" + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + func_verbose "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` + if test "$hardcode_automatic" = yes ; then + relink_command= + fi + + # Only create the output if not a dry run. + $opt_dry_run || { + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + func_basename "$deplib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "\`$deplib' is not a valid libtool archive" + newdependency_libs="$newdependency_libs $libdir/$name" + ;; + *) newdependency_libs="$newdependency_libs $deplib" ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + + for lib in $dlfiles; do + case $lib in + *.la) + func_basename "$lib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "\`$lib' is not a valid libtool archive" + newdlfiles="$newdlfiles $libdir/$name" + ;; + *) newdlfiles="$newdlfiles $lib" ;; + esac + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + *.la) + # Only pass preopened files to the pseudo-archive (for + # eventual linking with the app. that links it) if we + # didn't already link the preopened objects directly into + # the library: + func_basename "$lib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "\`$lib' is not a valid libtool archive" + newdlprefiles="$newdlprefiles $libdir/$name" + ;; + esac + done + dlprefiles="$newdlprefiles" + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlfiles="$newdlfiles $abs" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlprefiles="$newdlprefiles $abs" + done + dlprefiles="$newdlprefiles" + fi + $RM $output + # place dlname in correct position for cygwin + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + esac + $ECHO > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='$new_inherited_linker_flags' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Names of additional weak libraries provided by this library +weak_library_names='$weak_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test "$installed" = no && test "$need_relink" = yes; then + $ECHO >> $output "\ +relink_command=\"$relink_command\"" + fi + done + } + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' + ;; + esac + exit $EXIT_SUCCESS +} + +{ test "$mode" = link || test "$mode" = relink; } && + func_mode_link ${1+"$@"} + + +# func_mode_uninstall arg... +func_mode_uninstall () +{ + $opt_debug + RM="$nonopt" + files= + rmforce= + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + for arg + do + case $arg in + -f) RM="$RM $arg"; rmforce=yes ;; + -*) RM="$RM $arg" ;; + *) files="$files $arg" ;; + esac + done + + test -z "$RM" && \ + func_fatal_help "you must specify an RM program" + + rmdirs= + + origobjdir="$objdir" + for file in $files; do + func_dirname "$file" "" "." + dir="$func_dirname_result" + if test "X$dir" = X.; then + objdir="$origobjdir" + else + objdir="$dir/$origobjdir" + fi + func_basename "$file" + name="$func_basename_result" + test "$mode" = uninstall && objdir="$dir" + + # Remember objdir for removal later, being careful to avoid duplicates + if test "$mode" = clean; then + case " $rmdirs " in + *" $objdir "*) ;; + *) rmdirs="$rmdirs $objdir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if { test -L "$file"; } >/dev/null 2>&1 || + { test -h "$file"; } >/dev/null 2>&1 || + test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif test "$rmforce" = yes; then + continue + fi + + rmfiles="$file" + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if func_lalib_p "$file"; then + func_source $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + rmfiles="$rmfiles $objdir/$n" + done + test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" + + case "$mode" in + clean) + case " $library_names " in + # " " in the beginning catches empty $dlname + *" $dlname "*) ;; + *) rmfiles="$rmfiles $objdir/$dlname" ;; + esac + test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if func_lalib_p "$file"; then + + # Read the .lo file + func_source $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" && + test "$pic_object" != none; then + rmfiles="$rmfiles $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" && + test "$non_pic_object" != none; then + rmfiles="$rmfiles $dir/$non_pic_object" + fi + fi + ;; + + *) + if test "$mode" = clean ; then + noexename=$name + case $file in + *.exe) + func_stripname '' '.exe' "$file" + file=$func_stripname_result + func_stripname '' '.exe' "$name" + noexename=$func_stripname_result + # $file with .exe has already been added to rmfiles, + # add $file without .exe + rmfiles="$rmfiles $file" + ;; + esac + # Do a test to see if this is a libtool program. + if func_ltwrapper_p "$file"; then + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + relink_command= + func_source $func_ltwrapper_scriptname_result + rmfiles="$rmfiles $func_ltwrapper_scriptname_result" + else + relink_command= + func_source $dir/$noexename + fi + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then + rmfiles="$rmfiles $objdir/lt-$name" + fi + if test "X$noexename" != "X$name" ; then + rmfiles="$rmfiles $objdir/lt-${noexename}.c" + fi + fi + fi + ;; + esac + func_show_eval "$RM $rmfiles" 'exit_status=1' + done + objdir="$origobjdir" + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + func_show_eval "rmdir $dir >/dev/null 2>&1" + fi + done + + exit $exit_status +} + +{ test "$mode" = uninstall || test "$mode" = clean; } && + func_mode_uninstall ${1+"$@"} + +test -z "$mode" && { + help="$generic_help" + func_fatal_help "you must specify a MODE" +} + +test -z "$exec_cmd" && \ + func_fatal_help "invalid operation mode \`$mode'" + +if test -n "$exec_cmd"; then + eval exec "$exec_cmd" + exit $EXIT_FAILURE +fi + +exit $exit_status + + +# The TAGs below are defined such that we never get into a situation +# in which we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +build_libtool_libs=no +build_old_libs=yes +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: +# vi:sw=2 + diff --git a/xchat-2.8.8/ltmain.sh b/xchat-2.8.8/ltmain.sh new file mode 100755 index 0000000..a72f2fd --- /dev/null +++ b/xchat-2.8.8/ltmain.sh @@ -0,0 +1,8406 @@ +# Generated from ltmain.m4sh. + +# ltmain.sh (GNU libtool) 2.2.6b +# Written by Gordon Matzigkeit , 1996 + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool 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 +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, +# or obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +# Usage: $progname [OPTION]... [MODE-ARG]... +# +# Provide generalized library-building support services. +# +# --config show all configuration variables +# --debug enable verbose shell tracing +# -n, --dry-run display commands without modifying any files +# --features display basic configuration information and exit +# --mode=MODE use operation mode MODE +# --preserve-dup-deps don't remove duplicate dependency libraries +# --quiet, --silent don't print informational messages +# --tag=TAG use configuration variables from tag TAG +# -v, --verbose print informational messages (default) +# --version print version information +# -h, --help print short or long help message +# +# MODE must be one of the following: +# +# clean remove files from the build directory +# compile compile a source file into a libtool object +# execute automatically set library path, then run a program +# finish complete the installation of libtool libraries +# install install libraries or executables +# link create a library or an executable +# uninstall remove libraries from an installed directory +# +# MODE-ARGS vary depending on the MODE. +# Try `$progname --help --mode=MODE' for a more detailed description of MODE. +# +# When reporting a bug, please describe a test case to reproduce it and +# include the following information: +# +# host-triplet: $host +# shell: $SHELL +# compiler: $LTCC +# compiler flags: $LTCFLAGS +# linker: $LD (gnu? $with_gnu_ld) +# $progname: (GNU libtool) 2.2.6b +# automake: $automake_version +# autoconf: $autoconf_version +# +# Report bugs to . + +PROGRAM=ltmain.sh +PACKAGE=libtool +VERSION=2.2.6b +TIMESTAMP="" +package_revision=1.3017 + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# NLS nuisances: We save the old values to restore during execute mode. +# Only set LANG and LC_ALL to C if already set. +# These must not be set unconditionally because not all systems understand +# e.g. LANG=C (notably SCO). +lt_user_locale= +lt_safe_locale= +for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES +do + eval "if test \"\${$lt_var+set}\" = set; then + save_$lt_var=\$$lt_var + $lt_var=C + export $lt_var + lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" + lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" + fi" +done + +$lt_unset CDPATH + + + + + +: ${CP="cp -f"} +: ${ECHO="echo"} +: ${EGREP="/bin/grep -E"} +: ${FGREP="/bin/grep -F"} +: ${GREP="/bin/grep"} +: ${LN_S="ln -s"} +: ${MAKE="make"} +: ${MKDIR="mkdir"} +: ${MV="mv -f"} +: ${RM="rm -f"} +: ${SED="/bin/sed"} +: ${SHELL="${CONFIG_SHELL-/bin/sh}"} +: ${Xsed="$SED -e 1s/^X//"} + +# Global variables: +EXIT_SUCCESS=0 +EXIT_FAILURE=1 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. + +exit_status=$EXIT_SUCCESS + +# Make sure IFS has a sensible default +lt_nl=' +' +IFS=" $lt_nl" + +dirname="s,/[^/]*$,," +basename="s,^.*/,," + +# func_dirname_and_basename file append nondir_replacement +# perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# Implementation must be kept synchronized with func_dirname +# and func_basename. For efficiency, we do not delegate to +# those functions but instead duplicate the functionality here. +func_dirname_and_basename () +{ + # Extract subdirectory from the argument. + func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi + func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` +} + +# Generated shell functions inserted here. + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" + +# The name of this program: +# In the unlikely event $progname began with a '-', it would play havoc with +# func_echo (imagine progname=-n), so we prepend ./ in that case: +func_dirname_and_basename "$progpath" +progname=$func_basename_result +case $progname in + -*) progname=./$progname ;; +esac + +# Make sure we have an absolute path for reexecution: +case $progpath in + [\\/]*|[A-Za-z]:\\*) ;; + *[\\/]*) + progdir=$func_dirname_result + progdir=`cd "$progdir" && pwd` + progpath="$progdir/$progname" + ;; + *) + save_IFS="$IFS" + IFS=: + for progdir in $PATH; do + IFS="$save_IFS" + test -x "$progdir/$progname" && break + done + IFS="$save_IFS" + test -n "$progdir" || progdir=`pwd` + progpath="$progdir/$progname" + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed="${SED}"' -e 1s/^X//' +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Re-`\' parameter expansions in output of double_quote_subst that were +# `\'-ed in input to the same. If an odd number of `\' preceded a '$' +# in input to double_quote_subst, that '$' was protected from expansion. +# Since each input `\' is now two `\'s, look for any number of runs of +# four `\'s followed by two `\'s and then a '$'. `\' that '$'. +bs='\\' +bs2='\\\\' +bs4='\\\\\\\\' +dollar='\$' +sed_double_backslash="\ + s/$bs4/&\\ +/g + s/^$bs2$dollar/$bs&/ + s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g + s/\n//g" + +# Standard options: +opt_dry_run=false +opt_help=false +opt_quiet=false +opt_verbose=false +opt_warning=: + +# func_echo arg... +# Echo program name prefixed message, along with the current mode +# name if it has been set yet. +func_echo () +{ + $ECHO "$progname${mode+: }$mode: $*" +} + +# func_verbose arg... +# Echo program name prefixed message in verbose mode only. +func_verbose () +{ + $opt_verbose && func_echo ${1+"$@"} + + # A bug in bash halts the script if the last line of a function + # fails when set -e is in force, so we need another command to + # work around that: + : +} + +# func_error arg... +# Echo program name prefixed message to standard error. +func_error () +{ + $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 +} + +# func_warning arg... +# Echo program name prefixed warning message to standard error. +func_warning () +{ + $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 + + # bash bug again: + : +} + +# func_fatal_error arg... +# Echo program name prefixed message to standard error, and exit. +func_fatal_error () +{ + func_error ${1+"$@"} + exit $EXIT_FAILURE +} + +# func_fatal_help arg... +# Echo program name prefixed message to standard error, followed by +# a help hint, and exit. +func_fatal_help () +{ + func_error ${1+"$@"} + func_fatal_error "$help" +} +help="Try \`$progname --help' for more information." ## default + + +# func_grep expression filename +# Check whether EXPRESSION matches any line of FILENAME, without output. +func_grep () +{ + $GREP "$1" "$2" >/dev/null 2>&1 +} + + +# func_mkdir_p directory-path +# Make sure the entire path to DIRECTORY-PATH is available. +func_mkdir_p () +{ + my_directory_path="$1" + my_dir_list= + + if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then + + # Protect directory names starting with `-' + case $my_directory_path in + -*) my_directory_path="./$my_directory_path" ;; + esac + + # While some portion of DIR does not yet exist... + while test ! -d "$my_directory_path"; do + # ...make a list in topmost first order. Use a colon delimited + # list incase some portion of path contains whitespace. + my_dir_list="$my_directory_path:$my_dir_list" + + # If the last portion added has no slash in it, the list is done + case $my_directory_path in */*) ;; *) break ;; esac + + # ...otherwise throw away the child directory and loop + my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"` + done + my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'` + + save_mkdir_p_IFS="$IFS"; IFS=':' + for my_dir in $my_dir_list; do + IFS="$save_mkdir_p_IFS" + # mkdir can fail with a `File exist' error if two processes + # try to create one of the directories concurrently. Don't + # stop in that case! + $MKDIR "$my_dir" 2>/dev/null || : + done + IFS="$save_mkdir_p_IFS" + + # Bail out if we (or some other process) failed to create a directory. + test -d "$my_directory_path" || \ + func_fatal_error "Failed to create \`$1'" + fi +} + + +# func_mktempdir [string] +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, STRING is the basename for that directory. +func_mktempdir () +{ + my_template="${TMPDIR-/tmp}/${1-$progname}" + + if test "$opt_dry_run" = ":"; then + # Return a directory name, but don't create it in dry-run mode + my_tmpdir="${my_template}-$$" + else + + # If mktemp works, use that first and foremost + my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` + + if test ! -d "$my_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + my_tmpdir="${my_template}-${RANDOM-0}$$" + + save_mktempdir_umask=`umask` + umask 0077 + $MKDIR "$my_tmpdir" + umask $save_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$my_tmpdir" || \ + func_fatal_error "cannot create temporary directory \`$my_tmpdir'" + fi + + $ECHO "X$my_tmpdir" | $Xsed +} + + +# func_quote_for_eval arg +# Aesthetically quote ARG to be evaled later. +# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT +# is double-quoted, suitable for a subsequent eval, whereas +# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters +# which are still active within double quotes backslashified. +func_quote_for_eval () +{ + case $1 in + *[\\\`\"\$]*) + func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;; + *) + func_quote_for_eval_unquoted_result="$1" ;; + esac + + case $func_quote_for_eval_unquoted_result in + # Double-quote args containing shell metacharacters to delay + # word splitting, command substitution and and variable + # expansion for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" + ;; + *) + func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" + esac +} + + +# func_quote_for_expand arg +# Aesthetically quote ARG to be evaled later; same as above, +# but do not quote variable references. +func_quote_for_expand () +{ + case $1 in + *[\\\`\"]*) + my_arg=`$ECHO "X$1" | $Xsed \ + -e "$double_quote_subst" -e "$sed_double_backslash"` ;; + *) + my_arg="$1" ;; + esac + + case $my_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting and command substitution for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + my_arg="\"$my_arg\"" + ;; + esac + + func_quote_for_expand_result="$my_arg" +} + + +# func_show_eval cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. +func_show_eval () +{ + my_cmd="$1" + my_fail_exp="${2-:}" + + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + if ${opt_dry_run-false}; then :; else + eval "$my_cmd" + my_status=$? + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi + fi +} + + +# func_show_eval_locale cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. Use the saved locale for evaluation. +func_show_eval_locale () +{ + my_cmd="$1" + my_fail_exp="${2-:}" + + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + if ${opt_dry_run-false}; then :; else + eval "$lt_user_locale + $my_cmd" + my_status=$? + eval "$lt_safe_locale" + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi + fi +} + + + + + +# func_version +# Echo version message to standard output and exit. +func_version () +{ + $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / { + s/^# // + s/^# *$// + s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ + p + }' < "$progpath" + exit $? +} + +# func_usage +# Echo short help message to standard output and exit. +func_usage () +{ + $SED -n '/^# Usage:/,/# -h/ { + s/^# // + s/^# *$// + s/\$progname/'$progname'/ + p + }' < "$progpath" + $ECHO + $ECHO "run \`$progname --help | more' for full usage" + exit $? +} + +# func_help +# Echo long help message to standard output and exit. +func_help () +{ + $SED -n '/^# Usage:/,/# Report bugs to/ { + s/^# // + s/^# *$// + s*\$progname*'$progname'* + s*\$host*'"$host"'* + s*\$SHELL*'"$SHELL"'* + s*\$LTCC*'"$LTCC"'* + s*\$LTCFLAGS*'"$LTCFLAGS"'* + s*\$LD*'"$LD"'* + s/\$with_gnu_ld/'"$with_gnu_ld"'/ + s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ + s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ + p + }' < "$progpath" + exit $? +} + +# func_missing_arg argname +# Echo program name prefixed message to standard error and set global +# exit_cmd. +func_missing_arg () +{ + func_error "missing argument for $1" + exit_cmd=exit +} + +exit_cmd=: + + + + + +# Check that we have a working $ECHO. +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then + # Yippee, $ECHO works! + : +else + # Restart under the correct shell, and then maybe $ECHO will work. + exec $SHELL "$progpath" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null 2>&1; then + taglist="$taglist $tagname" + + # Evaluate the configuration. Be careful to quote the path + # and the sed script, to avoid splitting on whitespace, but + # also don't use non-portable quotes within backquotes within + # quotes we have to do it in 2 steps: + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` + eval "$extractedcf" + else + func_error "ignoring unknown tag $tagname" + fi + ;; + esac +} + +# Parse options once, thoroughly. This comes as soon as possible in +# the script to make things like `libtool --version' happen quickly. +{ + + # Shorthand for --mode=foo, only valid as the first argument + case $1 in + clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; + compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; + execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; + finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; + install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; + link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; + uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; + esac + + # Parse non-mode specific arguments: + while test "$#" -gt 0; do + opt="$1" + shift + + case $opt in + --config) func_config ;; + + --debug) preserve_args="$preserve_args $opt" + func_echo "enabling shell trace mode" + opt_debug='set -x' + $opt_debug + ;; + + -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break + execute_dlfiles="$execute_dlfiles $1" + shift + ;; + + --dry-run | -n) opt_dry_run=: ;; + --features) func_features ;; + --finish) mode="finish" ;; + + --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break + case $1 in + # Valid mode arguments: + clean) ;; + compile) ;; + execute) ;; + finish) ;; + install) ;; + link) ;; + relink) ;; + uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument for $opt" + exit_cmd=exit + break + ;; + esac + + mode="$1" + shift + ;; + + --preserve-dup-deps) + opt_duplicate_deps=: ;; + + --quiet|--silent) preserve_args="$preserve_args $opt" + opt_silent=: + ;; + + --verbose| -v) preserve_args="$preserve_args $opt" + opt_silent=false + ;; + + --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break + preserve_args="$preserve_args $opt $1" + func_enable_tag "$1" # tagname is set here + shift + ;; + + # Separate optargs to long options: + -dlopen=*|--mode=*|--tag=*) + func_opt_split "$opt" + set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} + shift + ;; + + -\?|-h) func_usage ;; + --help) opt_help=: ;; + --version) func_version ;; + + -*) func_fatal_help "unrecognized option \`$opt'" ;; + + *) nonopt="$opt" + break + ;; + esac + done + + + case $host in + *cygwin* | *mingw* | *pw32* | *cegcc*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_duplicate_deps + ;; + esac + + # Having warned about all mis-specified options, bail out if + # anything was wrong. + $exit_cmd $EXIT_FAILURE +} + +# func_check_version_match +# Ensure that we are using m4 macros, and libtool script from the same +# release of libtool. +func_check_version_match () +{ + if test "$package_revision" != "$macro_revision"; then + if test "$VERSION" != "$macro_version"; then + if test -z "$macro_version"; then + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from an older release. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + fi + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, +$progname: but the definition of this LT_INIT comes from revision $macro_revision. +$progname: You should recreate aclocal.m4 with macros from revision $package_revision +$progname: of $PACKAGE $VERSION and run autoconf again. +_LT_EOF + fi + + exit $EXIT_MISMATCH + fi +} + + +## ----------- ## +## Main. ## +## ----------- ## + +$opt_help || { + # Sanity checks first: + func_check_version_match + + if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then + func_fatal_configuration "not configured to build any kind of library" + fi + + test -z "$mode" && func_fatal_error "error: you must specify a MODE." + + + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" + + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$execute_dlfiles" && test "$mode" != execute; then + func_error "unrecognized option \`-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$progname --help --mode=$mode' for more information." +} + + +# func_lalib_p file +# True iff FILE is a libtool `.la' library or `.lo' object file. +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_lalib_p () +{ + test -f "$1" && + $SED -e 4q "$1" 2>/dev/null \ + | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 +} + +# func_lalib_unsafe_p file +# True iff FILE is a libtool `.la' library or `.lo' object file. +# This function implements the same check as func_lalib_p without +# resorting to external programs. To this end, it redirects stdin and +# closes it afterwards, without saving the original file descriptor. +# As a safety measure, use it only where a negative result would be +# fatal anyway. Works if `file' does not exist. +func_lalib_unsafe_p () +{ + lalib_p=no + if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then + for lalib_p_l in 1 2 3 4 + do + read lalib_p_line + case "$lalib_p_line" in + \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; + esac + done + exec 0<&5 5<&- + fi + test "$lalib_p" = yes +} + +# func_ltwrapper_script_p file +# True iff FILE is a libtool wrapper script +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_script_p () +{ + func_lalib_p "$1" +} + +# func_ltwrapper_executable_p file +# True iff FILE is a libtool wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_executable_p () +{ + func_ltwrapper_exec_suffix= + case $1 in + *.exe) ;; + *) func_ltwrapper_exec_suffix=.exe ;; + esac + $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 +} + +# func_ltwrapper_scriptname file +# Assumes file is an ltwrapper_executable +# uses $file to determine the appropriate filename for a +# temporary ltwrapper_script. +func_ltwrapper_scriptname () +{ + func_ltwrapper_scriptname_result="" + if func_ltwrapper_executable_p "$1"; then + func_dirname_and_basename "$1" "" "." + func_stripname '' '.exe' "$func_basename_result" + func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" + fi +} + +# func_ltwrapper_p file +# True iff FILE is a libtool wrapper script or wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_p () +{ + func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" +} + + +# func_execute_cmds commands fail_cmd +# Execute tilde-delimited COMMANDS. +# If FAIL_CMD is given, eval that upon failure. +# FAIL_CMD may read-access the current command in variable CMD! +func_execute_cmds () +{ + $opt_debug + save_ifs=$IFS; IFS='~' + for cmd in $1; do + IFS=$save_ifs + eval cmd=\"$cmd\" + func_show_eval "$cmd" "${2-:}" + done + IFS=$save_ifs +} + + +# func_source file +# Source FILE, adding directory component if necessary. +# Note that it is not necessary on cygwin/mingw to append a dot to +# FILE even if both FILE and FILE.exe exist: automatic-append-.exe +# behavior happens only for exec(3), not for open(2)! Also, sourcing +# `FILE.' does not work on cygwin managed mounts. +func_source () +{ + $opt_debug + case $1 in + */* | *\\*) . "$1" ;; + *) . "./$1" ;; + esac +} + + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + $opt_debug + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + func_quote_for_eval "$arg" + CC_quoted="$CC_quoted $func_quote_for_eval_result" + done + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + func_quote_for_eval "$arg" + CC_quoted="$CC_quoted $func_quote_for_eval_result" + done + case "$@ " in + " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + func_echo "unable to infer tagged configuration" + func_fatal_error "specify a tag with \`--tag'" +# else +# func_verbose "using $tagname tagged configuration" + fi + ;; + esac + fi +} + + + +# func_write_libtool_object output_name pic_name nonpic_name +# Create a libtool object file (analogous to a ".la" file), +# but don't create it if we're doing a dry run. +func_write_libtool_object () +{ + write_libobj=${1} + if test "$build_libtool_libs" = yes; then + write_lobj=\'${2}\' + else + write_lobj=none + fi + + if test "$build_old_libs" = yes; then + write_oldobj=\'${3}\' + else + write_oldobj=none + fi + + $opt_dry_run || { + cat >${write_libobj}T <?"'"'"' &()|`$[]' \ + && func_warning "libobj name \`$libobj' may not contain shell special characters." + func_dirname_and_basename "$obj" "/" "" + objname="$func_basename_result" + xdir="$func_dirname_result" + lobj=${xdir}$objdir/$objname + + test -z "$base_compile" && \ + func_fatal_help "you must specify a compilation command" + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2* | cegcc*) + pic_mode=default + ;; + esac + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test "$compiler_c_o" = no; then + output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then + $ECHO "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + removelist="$removelist $output_obj" + $ECHO "$srcfile" > "$lockfile" + fi + + $opt_dry_run || $RM $removelist + removelist="$removelist $lockfile" + trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 + + if test -n "$fix_srcfile_path"; then + eval srcfile=\"$fix_srcfile_path\" + fi + func_quote_for_eval "$srcfile" + qsrcfile=$func_quote_for_eval_result + + # Only build a PIC object if we are building libtool libraries. + if test "$build_libtool_libs" = yes; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + if test "$pic_mode" != no; then + command="$base_compile $qsrcfile $pic_flag" + else + # Don't build PIC code + command="$base_compile $qsrcfile" + fi + + func_mkdir_p "$xdir$objdir" + + if test -z "$output_obj"; then + # Place PIC objects in $objdir + command="$command -o $lobj" + fi + + func_show_eval_locale "$command" \ + 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' + + if test "$need_locks" = warn && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + func_show_eval '$MV "$output_obj" "$lobj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + + # Allow error messages only from the first compilation. + if test "$suppress_opt" = yes; then + suppress_output=' >/dev/null 2>&1' + fi + fi + + # Only build a position-dependent object if we build old libraries. + if test "$build_old_libs" = yes; then + if test "$pic_mode" != yes; then + # Don't build PIC code + command="$base_compile $qsrcfile$pie_flag" + else + command="$base_compile $qsrcfile $pic_flag" + fi + if test "$compiler_c_o" = yes; then + command="$command -o $obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + command="$command$suppress_output" + func_show_eval_locale "$command" \ + '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' + + if test "$need_locks" = warn && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + func_show_eval '$MV "$output_obj" "$obj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + fi + + $opt_dry_run || { + func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" + + # Unlock the critical section if it was locked + if test "$need_locks" != no; then + removelist=$lockfile + $RM "$lockfile" + fi + } + + exit $EXIT_SUCCESS +} + +$opt_help || { +test "$mode" = compile && func_mode_compile ${1+"$@"} +} + +func_mode_help () +{ + # We need to display help for each of the modes. + case $mode in + "") + # Generic help is extracted from the usage comments + # at the start of this file. + func_help + ;; + + clean) + $ECHO \ +"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + + compile) + $ECHO \ +"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -no-suppress do not suppress compiler output for multiple passes + -prefer-pic try to building PIC objects only + -prefer-non-pic try to building non-PIC objects only + -shared do not build a \`.o' file suitable for static linking + -static only build a \`.o' file suitable for static linking + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + + execute) + $ECHO \ +"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + + finish) + $ECHO \ +"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + + install) + $ECHO \ +"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The following components of INSTALL-COMMAND are treated specially: + + -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + + link) + $ECHO \ +"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE Use a list of object files found in FILE to specify objects + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -shared only do dynamic linking of libtool libraries + -shrext SUFFIX override the standard shared library file extension + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + -weak LIBNAME declare that the target provides the LIBNAME interface + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + + uninstall) + $ECHO \ +"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + + *) + func_fatal_help "invalid operation mode \`$mode'" + ;; + esac + + $ECHO + $ECHO "Try \`$progname --help' for more information about other modes." + + exit $? +} + + # Now that we've collected a possible --mode arg, show help if necessary + $opt_help && func_mode_help + + +# func_mode_execute arg... +func_mode_execute () +{ + $opt_debug + # The first argument is the command name. + cmd="$nonopt" + test -z "$cmd" && \ + func_fatal_help "you must specify a COMMAND" + + # Handle -dlopen flags immediately. + for file in $execute_dlfiles; do + test -f "$file" \ + || func_fatal_help "\`$file' is not a file" + + dir= + case $file in + *.la) + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "\`$lib' is not a valid libtool archive" + + # Read the libtool library. + dlname= + library_names= + func_source "$file" + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && \ + func_warning "\`$file' was not linked with \`-export-dynamic'" + continue + fi + + func_dirname "$file" "" "." + dir="$func_dirname_result" + + if test -f "$dir/$objdir/$dlname"; then + dir="$dir/$objdir" + else + if test ! -f "$dir/$dlname"; then + func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" + fi + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + func_dirname "$file" "" "." + dir="$func_dirname_result" + ;; + + *) + func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -*) ;; + *) + # Do a test to see if this is really a libtool program. + if func_ltwrapper_script_p "$file"; then + func_source "$file" + # Transform arg to wrapped name. + file="$progdir/$program" + elif func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + func_source "$func_ltwrapper_scriptname_result" + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + func_quote_for_eval "$file" + args="$args $func_quote_for_eval_result" + done + + if test "X$opt_dry_run" = Xfalse; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES + do + eval "if test \"\${save_$lt_var+set}\" = set; then + $lt_var=\$save_$lt_var; export $lt_var + else + $lt_unset $lt_var + fi" + done + + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" + $ECHO "export $shlibpath_var" + fi + $ECHO "$cmd$args" + exit $EXIT_SUCCESS + fi +} + +test "$mode" = execute && func_mode_execute ${1+"$@"} + + +# func_mode_finish arg... +func_mode_finish () +{ + $opt_debug + libdirs="$nonopt" + admincmds= + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for dir + do + libdirs="$libdirs $dir" + done + + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + func_execute_cmds "$finish_cmds" 'admincmds="$admincmds +'"$cmd"'"' + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $opt_dry_run || eval "$cmds" || admincmds="$admincmds + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + $opt_silent && exit $EXIT_SUCCESS + + $ECHO "X----------------------------------------------------------------------" | $Xsed + $ECHO "Libraries have been installed in:" + for libdir in $libdirs; do + $ECHO " $libdir" + done + $ECHO + $ECHO "If you ever happen to want to link against installed libraries" + $ECHO "in a given directory, LIBDIR, you must either use libtool, and" + $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'" + $ECHO "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable" + $ECHO " during execution" + fi + if test -n "$runpath_var"; then + $ECHO " - add LIBDIR to the \`$runpath_var' environment variable" + $ECHO " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $ECHO " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + $ECHO " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + $ECHO + + $ECHO "See any operating system documentation about shared libraries for" + case $host in + solaris2.[6789]|solaris2.1[0-9]) + $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual" + $ECHO "pages." + ;; + *) + $ECHO "more information, such as the ld(1) and ld.so(8) manual pages." + ;; + esac + $ECHO "X----------------------------------------------------------------------" | $Xsed + exit $EXIT_SUCCESS +} + +test "$mode" = finish && func_mode_finish ${1+"$@"} + + +# func_mode_install arg... +func_mode_install () +{ + $opt_debug + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + $ECHO "X$nonopt" | $GREP shtool >/dev/null; then + # Aesthetically quote it. + func_quote_for_eval "$nonopt" + install_prog="$func_quote_for_eval_result " + arg=$1 + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + func_quote_for_eval "$arg" + install_prog="$install_prog$func_quote_for_eval_result" + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + for arg + do + if test -n "$dest"; then + files="$files $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=yes ;; + -f) + case " $install_prog " in + *[\\\ /]cp\ *) ;; + *) prev=$arg ;; + esac + ;; + -g | -m | -o) + prev=$arg + ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + func_quote_for_eval "$arg" + install_prog="$install_prog $func_quote_for_eval_result" + done + + test -z "$install_prog" && \ + func_fatal_help "you must specify an install program" + + test -n "$prev" && \ + func_fatal_help "the \`$prev' option requires an argument" + + if test -z "$files"; then + if test -z "$dest"; then + func_fatal_help "no file or destination specified" + else + func_fatal_help "you must specify a destination" + fi + fi + + # Strip any trailing slash from the destination. + func_stripname '' '/' "$dest" + dest=$func_stripname_result + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + func_dirname_and_basename "$dest" "" "." + destdir="$func_dirname_result" + destname="$func_basename_result" + + # Not a directory, so check to see that there is only one file specified. + set dummy $files; shift + test "$#" -gt 1 && \ + func_fatal_help "\`$dest' is not a directory" + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + func_fatal_help "\`$destdir' must be an absolute directory name" + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + staticlibs="$staticlibs $file" + ;; + + *.la) + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "\`$file' is not a valid libtool archive" + + library_names= + old_library= + relink_command= + func_source "$file" + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) current_libdirs="$current_libdirs $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) future_libdirs="$future_libdirs $libdir" ;; + esac + fi + + func_dirname "$file" "/" "" + dir="$func_dirname_result" + dir="$dir$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + test "$inst_prefix_dir" = "$destdir" && \ + func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"` + fi + + func_warning "relinking \`$file'" + func_show_eval "$relink_command" \ + 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' + fi + + # See the names of the shared library. + set dummy $library_names; shift + if test -n "$1"; then + realname="$1" + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \ + 'exit $?' + tstripme="$stripme" + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + case $realname in + *.dll.a) + tstripme="" + ;; + esac + ;; + esac + if test -n "$tstripme" && test -n "$striplib"; then + func_show_eval "$striplib $destdir/$realname" 'exit $?' + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try `ln -sf' first, because the `ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + test "$linkname" != "$realname" \ + && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + func_execute_cmds "$postinstall_cmds" 'exit $?' + fi + + # Install the pseudo-library for information purposes. + func_basename "$file" + name="$func_basename_result" + instname="$dir/$name"i + func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' + + # Maybe install the static library, too. + test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + func_basename "$file" + destfile="$func_basename_result" + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + func_lo2o "$destfile" + staticdest=$func_lo2o_result + ;; + *.$objext) + staticdest="$destfile" + destfile= + ;; + *) + func_fatal_help "cannot copy a libtool object to \`$destfile'" + ;; + esac + + # Install the libtool object if requested. + test -n "$destfile" && \ + func_show_eval "$install_prog $file $destfile" 'exit $?' + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + func_lo2o "$file" + staticobj=$func_lo2o_result + func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + func_basename "$file" + destfile="$func_basename_result" + destfile="$destdir/$destfile" + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext="" + case $file in + *.exe) + if test ! -f "$file"; then + func_stripname '' '.exe' "$file" + file=$func_stripname_result + stripped_ext=".exe" + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin* | *mingw*) + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + wrapper=$func_ltwrapper_scriptname_result + else + func_stripname '' '.exe' "$file" + wrapper=$func_stripname_result + fi + ;; + *) + wrapper=$file + ;; + esac + if func_ltwrapper_script_p "$wrapper"; then + notinst_deplibs= + relink_command= + + func_source "$wrapper" + + # Check the variables that should have been set. + test -z "$generated_by_libtool_version" && \ + func_fatal_error "invalid libtool wrapper script \`$wrapper'" + + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + func_source "$lib" + fi + libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + func_warning "\`$lib' has not been installed in \`$libdir'" + finalize=no + fi + done + + relink_command= + func_source "$wrapper" + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + $opt_dry_run || { + if test "$finalize" = yes; then + tmpdir=`func_mktempdir` + func_basename "$file$stripped_ext" + file="$func_basename_result" + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` + + $opt_silent || { + func_quote_for_expand "$relink_command" + eval "func_echo $func_quote_for_expand_result" + } + if eval "$relink_command"; then : + else + func_error "error: relink \`$file' with the above command before installing it" + $opt_dry_run || ${RM}r "$tmpdir" + continue + fi + file="$outputname" + else + func_warning "cannot relink \`$file'" + fi + } + else + # Install the binary that we compiled earlier. + file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + func_stripname '' '.exe' "$destfile" + destfile=$func_stripname_result + ;; + esac + ;; + esac + func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' + $opt_dry_run || if test -n "$outputname"; then + ${RM}r "$tmpdir" + fi + ;; + esac + done + + for file in $staticlibs; do + func_basename "$file" + name="$func_basename_result" + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + + func_show_eval "$install_prog \$file \$oldlib" 'exit $?' + + if test -n "$stripme" && test -n "$old_striplib"; then + func_show_eval "$old_striplib $oldlib" 'exit $?' + fi + + # Do each command in the postinstall commands. + func_execute_cmds "$old_postinstall_cmds" 'exit $?' + done + + test -n "$future_libdirs" && \ + func_warning "remember to run \`$progname --finish$future_libdirs'" + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + $opt_dry_run && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi +} + +test "$mode" = install && func_mode_install ${1+"$@"} + + +# func_generate_dlsyms outputname originator pic_p +# Extract symbols from dlprefiles and create ${outputname}S.o with +# a dlpreopen symbol table. +func_generate_dlsyms () +{ + $opt_debug + my_outputname="$1" + my_originator="$2" + my_pic_p="${3-no}" + my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` + my_dlsyms= + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + my_dlsyms="${my_outputname}S.c" + else + func_error "not configured to extract global symbols from dlpreopened files" + fi + fi + + if test -n "$my_dlsyms"; then + case $my_dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${my_outputname}.nm" + + func_show_eval "$RM $nlist ${nlist}S ${nlist}T" + + # Parse the name list into a source file. + func_verbose "creating $output_objdir/$my_dlsyms" + + $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ +/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ +/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + func_verbose "generating symbol list for \`$output'" + + $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + for progfile in $progfiles; do + func_verbose "extracting global C symbols from \`$progfile'" + $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $opt_dry_run || { + eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + if test -n "$export_symbols_regex"; then + $opt_dry_run || { + eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$outputname.exp" + $opt_dry_run || { + $RM $export_symbols + eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + } + else + $opt_dry_run || { + eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + case $host in + *cygwin | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + } + fi + fi + + for dlprefile in $dlprefiles; do + func_verbose "extracting global C symbols from \`$dlprefile'" + func_basename "$dlprefile" + name="$func_basename_result" + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + done + + $opt_dry_run || { + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $MV "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if $GREP -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + $GREP -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' + else + $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms" + fi + + $ECHO >> "$output_objdir/$my_dlsyms" "\ + +/* The mapping between symbol names and symbols. */ +typedef struct { + const char *name; + void *address; +} lt_dlsymlist; +" + case $host in + *cygwin* | *mingw* | *cegcc* ) + $ECHO >> "$output_objdir/$my_dlsyms" "\ +/* DATA imports from DLLs on WIN32 con't be const, because + runtime relocations are performed -- see ld's documentation + on pseudo-relocs. */" + lt_dlsym_const= ;; + *osf5*) + echo >> "$output_objdir/$my_dlsyms" "\ +/* This system does not cope well with relocations in const data */" + lt_dlsym_const= ;; + *) + lt_dlsym_const=const ;; + esac + + $ECHO >> "$output_objdir/$my_dlsyms" "\ +extern $lt_dlsym_const lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[]; +$lt_dlsym_const lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[] = +{\ + { \"$my_originator\", (void *) 0 }," + + case $need_lib_prefix in + no) + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + *) + eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + esac + $ECHO >> "$output_objdir/$my_dlsyms" "\ + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_${my_prefix}_LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + } # !$opt_dry_run + + pic_flag_for_symtable= + case "$compile_command " in + *" -static "*) ;; + *) + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; + *-*-hpux*) + pic_flag_for_symtable=" $pic_flag" ;; + *) + if test "X$my_pic_p" != Xno; then + pic_flag_for_symtable=" $pic_flag" + fi + ;; + esac + ;; + esac + symtab_cflags= + for arg in $LTCFLAGS; do + case $arg in + -pie | -fpie | -fPIE) ;; + *) symtab_cflags="$symtab_cflags $arg" ;; + esac + done + + # Now compile the dynamic symbol file. + func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' + + # Clean up the generated files. + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' + + # Transform the symbol file into the correct name. + symfileobj="$output_objdir/${my_outputname}S.$objext" + case $host in + *cygwin* | *mingw* | *cegcc* ) + if test -f "$output_objdir/$my_outputname.def"; then + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + else + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` + fi + ;; + *) + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` + ;; + esac + ;; + *) + func_fatal_error "unknown suffix for \`$my_dlsyms'" + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + fi +} + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +func_win32_libid () +{ + $opt_debug + win32_libid_type="unknown" + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | + $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then + win32_nmres=`eval $NM -f posix -A $1 | + $SED -n -e ' + 1,100{ + / I /{ + s,.*,import, + p + q + } + }'` + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $ECHO "$win32_libid_type" +} + + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + $opt_debug + f_ex_an_ar_dir="$1"; shift + f_ex_an_ar_oldlib="$1" + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?' + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" + fi +} + + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + $opt_debug + my_gentop="$1"; shift + my_oldlibs=${1+"$@"} + my_oldobjs="" + my_xlib="" + my_xabs="" + my_xdir="" + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + func_basename "$my_xlib" + my_xlib="$func_basename_result" + my_xlib_u=$my_xlib + while :; do + case " $extracted_archives " in + *" $my_xlib_u "*) + func_arith $extracted_serial + 1 + extracted_serial=$func_arith_result + my_xlib_u=lt$extracted_serial-$my_xlib ;; + *) break ;; + esac + done + extracted_archives="$extracted_archives $my_xlib_u" + my_xdir="$my_gentop/$my_xlib_u" + + func_mkdir_p "$my_xdir" + + case $host in + *-darwin*) + func_verbose "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + $opt_dry_run || { + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + darwin_base_archive=`basename "$darwin_archive"` + darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` + if test -n "$darwin_arches"; then + darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches ; do + func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" + $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" + func_extract_an_archive "`pwd`" "${darwin_base_archive}" + cd "$darwin_curdir" + $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" + done # $darwin_arches + ## Okay now we've a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` + $LIPO -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + $RM -rf unfat-$$ + cd "$darwin_orig_dir" + else + cd $darwin_orig_dir + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + } # !$opt_dry_run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` + done + + func_extract_archives_result="$my_oldobjs" +} + + + +# func_emit_wrapper_part1 [arg=no] +# +# Emit the first part of a libtool wrapper script on stdout. +# For more information, see the description associated with +# func_emit_wrapper(), below. +func_emit_wrapper_part1 () +{ + func_emit_wrapper_part1_arg1=no + if test -n "$1" ; then + func_emit_wrapper_part1_arg1=$1 + fi + + $ECHO "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='${SED} -e 1s/^X//' +sed_quote_subst='$sed_quote_subst' + +# Be Bourne compatible +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variables: + generated_by_libtool_version='$macro_version' + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$ECHO are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + ECHO=\"$qecho\" + file=\"\$0\" + # Make sure echo works. + if test \"X\$1\" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift + elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then + # Yippee, \$ECHO works! + : + else + # Restart under the correct shell, and then maybe \$ECHO will work. + exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} + fi + fi\ +" + $ECHO "\ + + # Find the directory that this script lives in. + thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` + done +" +} +# end: func_emit_wrapper_part1 + +# func_emit_wrapper_part2 [arg=no] +# +# Emit the second part of a libtool wrapper script on stdout. +# For more information, see the description associated with +# func_emit_wrapper(), below. +func_emit_wrapper_part2 () +{ + func_emit_wrapper_part2_arg1=no + if test -n "$1" ; then + func_emit_wrapper_part2_arg1=$1 + fi + + $ECHO "\ + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1 + if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then + # special case for '.' + if test \"\$thisdir\" = \".\"; then + thisdir=\`pwd\` + fi + # remove .libs from thisdir + case \"\$thisdir\" in + *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;; + $objdir ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + $ECHO "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $MKDIR \"\$progdir\" + else + $RM \"\$progdir/\$file\" + fi" + + $ECHO "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + $ECHO \"\$relink_command_output\" >&2 + $RM \"\$progdir/\$file\" + exit 1 + fi + fi + + $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $RM \"\$progdir/\$program\"; + $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $RM \"\$progdir/\$file\" + fi" + else + $ECHO "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $ECHO "\ + + if test -f \"\$progdir/\$program\"; then" + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $ECHO "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` + + export $shlibpath_var +" + fi + + # fixup the dll searchpath if we need to. + if test -n "$dllsearchpath"; then + $ECHO "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + $ECHO "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2* | *-cegcc*) + $ECHO "\ + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $ECHO "\ + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $ECHO "\ + \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 + exit 1 + fi + else + # The program doesn't exist. + \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 + \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 + $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi +fi\ +" +} +# end: func_emit_wrapper_part2 + + +# func_emit_wrapper [arg=no] +# +# Emit a libtool wrapper script on stdout. +# Don't directly open a file because we may want to +# incorporate the script contents within a cygwin/mingw +# wrapper executable. Must ONLY be called from within +# func_mode_link because it depends on a number of variables +# set therein. +# +# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +# variable will take. If 'yes', then the emitted script +# will assume that the directory in which it is stored is +# the $objdir directory. This is a cygwin/mingw-specific +# behavior. +func_emit_wrapper () +{ + func_emit_wrapper_arg1=no + if test -n "$1" ; then + func_emit_wrapper_arg1=$1 + fi + + # split this up so that func_emit_cwrapperexe_src + # can call each part independently. + func_emit_wrapper_part1 "${func_emit_wrapper_arg1}" + func_emit_wrapper_part2 "${func_emit_wrapper_arg1}" +} + + +# func_to_host_path arg +# +# Convert paths to host format when used with build tools. +# Intended for use with "native" mingw (where libtool itself +# is running under the msys shell), or in the following cross- +# build environments: +# $build $host +# mingw (msys) mingw [e.g. native] +# cygwin mingw +# *nix + wine mingw +# where wine is equipped with the `winepath' executable. +# In the native mingw case, the (msys) shell automatically +# converts paths for any non-msys applications it launches, +# but that facility isn't available from inside the cwrapper. +# Similar accommodations are necessary for $host mingw and +# $build cygwin. Calling this function does no harm for other +# $host/$build combinations not listed above. +# +# ARG is the path (on $build) that should be converted to +# the proper representation for $host. The result is stored +# in $func_to_host_path_result. +func_to_host_path () +{ + func_to_host_path_result="$1" + if test -n "$1" ; then + case $host in + *mingw* ) + lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + case $build in + *mingw* ) # actually, msys + # awkward: cmd appends spaces to result + lt_sed_strip_trailing_spaces="s/[ ]*\$//" + func_to_host_path_tmp1=`( cmd //c echo "$1" |\ + $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` + func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ + $SED -e "$lt_sed_naive_backslashify"` + ;; + *cygwin* ) + func_to_host_path_tmp1=`cygpath -w "$1"` + func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ + $SED -e "$lt_sed_naive_backslashify"` + ;; + * ) + # Unfortunately, winepath does not exit with a non-zero + # error code, so we are forced to check the contents of + # stdout. On the other hand, if the command is not + # found, the shell will set an exit code of 127 and print + # *an error message* to stdout. So we must check for both + # error code of zero AND non-empty stdout, which explains + # the odd construction: + func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` + if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then + func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ + $SED -e "$lt_sed_naive_backslashify"` + else + # Allow warning below. + func_to_host_path_result="" + fi + ;; + esac + if test -z "$func_to_host_path_result" ; then + func_error "Could not determine host path corresponding to" + func_error " '$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback: + func_to_host_path_result="$1" + fi + ;; + esac + fi +} +# end: func_to_host_path + +# func_to_host_pathlist arg +# +# Convert pathlists to host format when used with build tools. +# See func_to_host_path(), above. This function supports the +# following $build/$host combinations (but does no harm for +# combinations not listed here): +# $build $host +# mingw (msys) mingw [e.g. native] +# cygwin mingw +# *nix + wine mingw +# +# Path separators are also converted from $build format to +# $host format. If ARG begins or ends with a path separator +# character, it is preserved (but converted to $host format) +# on output. +# +# ARG is a pathlist (on $build) that should be converted to +# the proper representation on $host. The result is stored +# in $func_to_host_pathlist_result. +func_to_host_pathlist () +{ + func_to_host_pathlist_result="$1" + if test -n "$1" ; then + case $host in + *mingw* ) + lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + # Remove leading and trailing path separator characters from + # ARG. msys behavior is inconsistent here, cygpath turns them + # into '.;' and ';.', and winepath ignores them completely. + func_to_host_pathlist_tmp2="$1" + # Once set for this call, this variable should not be + # reassigned. It is used in tha fallback case. + func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\ + $SED -e 's|^:*||' -e 's|:*$||'` + case $build in + *mingw* ) # Actually, msys. + # Awkward: cmd appends spaces to result. + lt_sed_strip_trailing_spaces="s/[ ]*\$//" + func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\ + $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` + func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ + $SED -e "$lt_sed_naive_backslashify"` + ;; + *cygwin* ) + func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"` + func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ + $SED -e "$lt_sed_naive_backslashify"` + ;; + * ) + # unfortunately, winepath doesn't convert pathlists + func_to_host_pathlist_result="" + func_to_host_pathlist_oldIFS=$IFS + IFS=: + for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do + IFS=$func_to_host_pathlist_oldIFS + if test -n "$func_to_host_pathlist_f" ; then + func_to_host_path "$func_to_host_pathlist_f" + if test -n "$func_to_host_path_result" ; then + if test -z "$func_to_host_pathlist_result" ; then + func_to_host_pathlist_result="$func_to_host_path_result" + else + func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result" + fi + fi + fi + IFS=: + done + IFS=$func_to_host_pathlist_oldIFS + ;; + esac + if test -z "$func_to_host_pathlist_result" ; then + func_error "Could not determine the host path(s) corresponding to" + func_error " '$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback. This may break if $1 contains DOS-style drive + # specifications. The fix is not to complicate the expression + # below, but for the user to provide a working wine installation + # with winepath so that path translation in the cross-to-mingw + # case works properly. + lt_replace_pathsep_nix_to_dos="s|:|;|g" + func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ + $SED -e "$lt_replace_pathsep_nix_to_dos"` + fi + # Now, add the leading and trailing path separators back + case "$1" in + :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" + ;; + esac + case "$1" in + *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;" + ;; + esac + ;; + esac + fi +} +# end: func_to_host_pathlist + +# func_emit_cwrapperexe_src +# emit the source code for a wrapper executable on stdout +# Must ONLY be called from within func_mode_link because +# it depends on a number of variable set therein. +func_emit_cwrapperexe_src () +{ + cat < +#include +#ifdef _MSC_VER +# include +# include +# include +# define setmode _setmode +#else +# include +# include +# ifdef __CYGWIN__ +# include +# define HAVE_SETENV +# ifdef __STRICT_ANSI__ +char *realpath (const char *, char *); +int putenv (char *); +int setenv (const char *, const char *, int); +# endif +# endif +#endif +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(PATH_MAX) +# define LT_PATHMAX PATH_MAX +#elif defined(MAXPATHLEN) +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef S_IXOTH +# define S_IXOTH 0 +#endif +#ifndef S_IXGRP +# define S_IXGRP 0 +#endif + +#ifdef _MSC_VER +# define S_IXUSR _S_IEXEC +# define stat _stat +# ifndef _INTPTR_T_DEFINED +# define intptr_t int +# endif +#endif + +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ + defined (__OS2__) +# define HAVE_DOS_BASED_FILE_SYSTEM +# define FOPEN_WB "wb" +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#ifdef __CYGWIN__ +# define FOPEN_WB "wb" +#endif + +#ifndef FOPEN_WB +# define FOPEN_WB "w" +#endif +#ifndef _O_BINARY +# define _O_BINARY 0 +#endif + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free ((void *) stale); stale = 0; } \ +} while (0) + +#undef LTWRAPPER_DEBUGPRINTF +#if defined DEBUGWRAPPER +# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args +static void +ltwrapper_debugprintf (const char *fmt, ...) +{ + va_list args; + va_start (args, fmt); + (void) vfprintf (stderr, fmt, args); + va_end (args); +} +#else +# define LTWRAPPER_DEBUGPRINTF(args) +#endif + +const char *program_name = NULL; + +void *xmalloc (size_t num); +char *xstrdup (const char *string); +const char *base_name (const char *name); +char *find_executable (const char *wrapper); +char *chase_symlinks (const char *pathspec); +int make_executable (const char *path); +int check_executable (const char *path); +char *strendzap (char *str, const char *pat); +void lt_fatal (const char *message, ...); +void lt_setenv (const char *name, const char *value); +char *lt_extend_str (const char *orig_value, const char *add, int to_end); +void lt_opt_process_env_set (const char *arg); +void lt_opt_process_env_prepend (const char *arg); +void lt_opt_process_env_append (const char *arg); +int lt_split_name_value (const char *arg, char** name, char** value); +void lt_update_exe_path (const char *name, const char *value); +void lt_update_lib_path (const char *name, const char *value); + +static const char *script_text_part1 = +EOF + + func_emit_wrapper_part1 yes | + $SED -e 's/\([\\"]\)/\\\1/g' \ + -e 's/^/ "/' -e 's/$/\\n"/' + echo ";" + cat <"))); + for (i = 0; i < newargc; i++) + { + LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : ""))); + } + +EOF + + case $host_os in + mingw*) + cat <<"EOF" + /* execv doesn't actually work on mingw as expected on unix */ + rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); + if (rval == -1) + { + /* failed to start process */ + LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno)); + return 127; + } + return rval; +EOF + ;; + *) + cat <<"EOF" + execv (lt_argv_zero, newargz); + return rval; /* =127, but avoids unused variable warning */ +EOF + ;; + esac + + cat <<"EOF" +} + +void * +xmalloc (size_t num) +{ + void *p = (void *) malloc (num); + if (!p) + lt_fatal ("Memory exhausted"); + + return p; +} + +char * +xstrdup (const char *string) +{ + return string ? strcpy ((char *) xmalloc (strlen (string) + 1), + string) : NULL; +} + +const char * +base_name (const char *name) +{ + const char *base; + +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + /* Skip over the disk name in MSDOS pathnames. */ + if (isalpha ((unsigned char) name[0]) && name[1] == ':') + name += 2; +#endif + + for (base = name; *name; name++) + if (IS_DIR_SEPARATOR (*name)) + base = name + 1; + return base; +} + +int +check_executable (const char *path) +{ + struct stat st; + + LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n", + path ? (*path ? path : "EMPTY!") : "NULL!")); + if ((!path) || (!*path)) + return 0; + + if ((stat (path, &st) >= 0) + && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) + return 1; + else + return 0; +} + +int +make_executable (const char *path) +{ + int rval = 0; + struct stat st; + + LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n", + path ? (*path ? path : "EMPTY!") : "NULL!")); + if ((!path) || (!*path)) + return 0; + + if (stat (path, &st) >= 0) + { + rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); + } + return rval; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise + Does not chase symlinks, even on platforms that support them. +*/ +char * +find_executable (const char *wrapper) +{ + int has_slash = 0; + const char *p; + const char *p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + int tmp_len; + char *concat_name; + + LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n", + wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!")); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char *path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char *q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR (*q)) + break; + p_len = q - p; + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + tmp_len = strlen (tmp); + concat_name = + XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = + XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + tmp_len = strlen (tmp); + concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + return NULL; +} + +char * +chase_symlinks (const char *pathspec) +{ +#ifndef S_ISLNK + return xstrdup (pathspec); +#else + char buf[LT_PATHMAX]; + struct stat s; + char *tmp_pathspec = xstrdup (pathspec); + char *p; + int has_symlinks = 0; + while (strlen (tmp_pathspec) && !has_symlinks) + { + LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n", + tmp_pathspec)); + if (lstat (tmp_pathspec, &s) == 0) + { + if (S_ISLNK (s.st_mode) != 0) + { + has_symlinks = 1; + break; + } + + /* search backwards for last DIR_SEPARATOR */ + p = tmp_pathspec + strlen (tmp_pathspec) - 1; + while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + p--; + if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + { + /* no more DIR_SEPARATORS left */ + break; + } + *p = '\0'; + } + else + { + char *errstr = strerror (errno); + lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr); + } + } + XFREE (tmp_pathspec); + + if (!has_symlinks) + { + return xstrdup (pathspec); + } + + tmp_pathspec = realpath (pathspec, buf); + if (tmp_pathspec == 0) + { + lt_fatal ("Could not follow symlinks for %s", pathspec); + } + return xstrdup (tmp_pathspec); +#endif +} + +char * +strendzap (char *str, const char *pat) +{ + size_t len, patlen; + + assert (str != NULL); + assert (pat != NULL); + + len = strlen (str); + patlen = strlen (pat); + + if (patlen <= len) + { + str += len - patlen; + if (strcmp (str, pat) == 0) + *str = '\0'; + } + return str; +} + +static void +lt_error_core (int exit_status, const char *mode, + const char *message, va_list ap) +{ + fprintf (stderr, "%s: %s: ", program_name, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, "FATAL", message, ap); + va_end (ap); +} + +void +lt_setenv (const char *name, const char *value) +{ + LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n", + (name ? name : ""), + (value ? value : ""))); + { +#ifdef HAVE_SETENV + /* always make a copy, for consistency with !HAVE_SETENV */ + char *str = xstrdup (value); + setenv (name, str, 1); +#else + int len = strlen (name) + 1 + strlen (value) + 1; + char *str = XMALLOC (char, len); + sprintf (str, "%s=%s", name, value); + if (putenv (str) != EXIT_SUCCESS) + { + XFREE (str); + } +#endif + } +} + +char * +lt_extend_str (const char *orig_value, const char *add, int to_end) +{ + char *new_value; + if (orig_value && *orig_value) + { + int orig_value_len = strlen (orig_value); + int add_len = strlen (add); + new_value = XMALLOC (char, add_len + orig_value_len + 1); + if (to_end) + { + strcpy (new_value, orig_value); + strcpy (new_value + orig_value_len, add); + } + else + { + strcpy (new_value, add); + strcpy (new_value + add_len, orig_value); + } + } + else + { + new_value = xstrdup (add); + } + return new_value; +} + +int +lt_split_name_value (const char *arg, char** name, char** value) +{ + const char *p; + int len; + if (!arg || !*arg) + return 1; + + p = strchr (arg, (int)'='); + + if (!p) + return 1; + + *value = xstrdup (++p); + + len = strlen (arg) - strlen (*value); + *name = XMALLOC (char, len); + strncpy (*name, arg, len-1); + (*name)[len - 1] = '\0'; + + return 0; +} + +void +lt_opt_process_env_set (const char *arg) +{ + char *name = NULL; + char *value = NULL; + + if (lt_split_name_value (arg, &name, &value) != 0) + { + XFREE (name); + XFREE (value); + lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg); + } + + lt_setenv (name, value); + XFREE (name); + XFREE (value); +} + +void +lt_opt_process_env_prepend (const char *arg) +{ + char *name = NULL; + char *value = NULL; + char *new_value = NULL; + + if (lt_split_name_value (arg, &name, &value) != 0) + { + XFREE (name); + XFREE (value); + lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg); + } + + new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + XFREE (name); + XFREE (value); +} + +void +lt_opt_process_env_append (const char *arg) +{ + char *name = NULL; + char *value = NULL; + char *new_value = NULL; + + if (lt_split_name_value (arg, &name, &value) != 0) + { + XFREE (name); + XFREE (value); + lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg); + } + + new_value = lt_extend_str (getenv (name), value, 1); + lt_setenv (name, new_value); + XFREE (new_value); + XFREE (name); + XFREE (value); +} + +void +lt_update_exe_path (const char *name, const char *value) +{ + LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n", + (name ? name : ""), + (value ? value : ""))); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + /* some systems can't cope with a ':'-terminated path #' */ + int len = strlen (new_value); + while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) + { + new_value[len-1] = '\0'; + } + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +void +lt_update_lib_path (const char *name, const char *value) +{ + LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n", + (name ? name : ""), + (value ? value : ""))); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + } +} + + +EOF +} +# end: func_emit_cwrapperexe_src + +# func_mode_link arg... +func_mode_link () +{ + $opt_debug + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # which system we are compiling for in order to pass an extra + # flag for every libtool invocation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll which has undefined symbols, in which case not + # even a static library is built. For now, we need to specify + # -no-undefined on the libtool link line when we can be certain + # that all symbols are satisfied, otherwise we get a static library. + allow_undefined=yes + ;; + *) + allow_undefined=yes + ;; + esac + libtool_args=$nonopt + base_compile="$nonopt $@" + compile_command=$nonopt + finalize_command=$nonopt + + compile_rpath= + finalize_rpath= + compile_shlibpath= + finalize_shlibpath= + convenience= + old_convenience= + deplibs= + old_deplibs= + compiler_flags= + linker_flags= + dllsearchpath= + lib_search_path=`pwd` + inst_prefix_dir= + new_inherited_linker_flags= + + avoid_version=no + dlfiles= + dlprefiles= + dlself=no + export_dynamic=no + export_symbols= + export_symbols_regex= + generated= + libobjs= + ltlibs= + module=no + no_install=no + objs= + non_pic_objects= + precious_files_regex= + prefer_static_libs=no + preload=no + prev= + prevarg= + release= + rpath= + xrpath= + perm_rpath= + temp_rpath= + thread_safe=no + vinfo= + vinfo_number=no + weak_libs= + single_module="${wl}-single_module" + func_infer_tag $base_compile + + # We need to know -static, to get the right output filenames. + for arg + do + case $arg in + -shared) + test "$build_libtool_libs" != yes && \ + func_fatal_configuration "can not build a shared library" + build_old_libs=no + break + ;; + -all-static | -static | -static-libtool-libs) + case $arg in + -all-static) + if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then + func_warning "complete static linking is impossible in this configuration" + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + esac + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg="$1" + shift + func_quote_for_eval "$arg" + qarg=$func_quote_for_eval_unquoted_result + func_append libtool_args " $func_quote_for_eval_result" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + func_append compile_command " @OUTPUT@" + func_append finalize_command " @OUTPUT@" + ;; + esac + + case $prev in + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + func_append compile_command " @SYMFILE@" + func_append finalize_command " @SYMFILE@" + preload=yes + fi + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + else + dlprefiles="$dlprefiles $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols="$arg" + test -f "$arg" \ + || func_fatal_error "symbol file \`$arg' does not exist" + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + framework) + case $host in + *-*-darwin*) + case "$deplibs " in + *" $qarg.ltframework "*) ;; + *) deplibs="$deplibs $qarg.ltframework" # this is fixed later + ;; + esac + ;; + esac + prev= + continue + ;; + inst_prefix) + inst_prefix_dir="$arg" + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat "$save_arg"` + do +# moreargs="$moreargs $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test "$pic_object" = none && + test "$non_pic_object" = none; then + func_fatal_error "cannot find name of object for \`$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "\`$arg' is not a valid libtool object" + fi + fi + done + else + func_fatal_error "link input file \`$arg' does not exist" + fi + arg=$save_arg + prev= + continue + ;; + precious_regex) + precious_files_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) rpath="$rpath $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) xrpath="$xrpath $arg" ;; + esac + fi + prev= + continue + ;; + shrext) + shrext_cmds="$arg" + prev= + continue + ;; + weak) + weak_libs="$weak_libs $arg" + prev= + continue + ;; + xcclinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xcompiler) + compiler_flags="$compiler_flags $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xlinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $wl$qarg" + prev= + func_append compile_command " $wl$qarg" + func_append finalize_command " $wl$qarg" + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg="$arg" + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + # See comment for -static flag below, for more details. + func_append compile_command " $link_static_flag" + func_append finalize_command " $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + func_fatal_error "\`-allow-undefined' must not be used because it is the default" + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + func_fatal_error "more than one -exported-symbols argument is not allowed" + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework) + prev=framework + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + func_append compile_command " $arg" + func_append finalize_command " $arg" + ;; + esac + continue + ;; + + -L*) + func_stripname '-L' '' "$arg" + dir=$func_stripname_result + if test -z "$dir"; then + if test "$#" -gt 0; then + func_fatal_error "require no space between \`-L' and \`$1'" + else + func_fatal_error "need path for \`-L' option" + fi + fi + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + test -z "$absdir" && \ + func_fatal_error "cannot determine absolute directory name of \`$dir'" + dir="$absdir" + ;; + esac + case "$deplibs " in + *" -L$dir "*) ;; + *) + deplibs="$deplibs -L$dir" + lib_search_path="$lib_search_path $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + ::) dllsearchpath=$dir;; + *) dllsearchpath="$dllsearchpath:$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) dllsearchpath="$dllsearchpath:$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + deplibs="$deplibs System.ltframework" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test "X$arg" = "X-lc" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test "X$arg" = "X-lc" && continue + ;; + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + deplibs="$deplibs $arg" + continue + ;; + + -module) + module=yes + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + # Darwin uses the -arch flag to determine output architecture. + -model|-arch|-isysroot) + compiler_flags="$compiler_flags $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) + compiler_flags="$compiler_flags $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case "$new_inherited_linker_flags " in + *" $arg "*) ;; + * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; + esac + continue + ;; + + -multi_module) + single_module="${wl}-multi_module" + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) + # The PATH hackery in wrapper scripts is required on Windows + # and Darwin in order for the loader to find any dlls it needs. + func_warning "\`-no-install' is ignored for $host" + func_warning "assuming \`-no-fast-install' instead" + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + func_stripname '-R' '' "$arg" + dir=$func_stripname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + continue + ;; + + -shared) + # The effects of -shared are defined in a previous loop. + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -static | -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -weak) + prev=weak + continue + ;; + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + func_quote_for_eval "$flag" + arg="$arg $wl$func_quote_for_eval_result" + compiler_flags="$compiler_flags $func_quote_for_eval_result" + done + IFS="$save_ifs" + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Wl,*) + func_stripname '-Wl,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + func_quote_for_eval "$flag" + arg="$arg $wl$func_quote_for_eval_result" + compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" + linker_flags="$linker_flags $func_quote_for_eval_result" + done + IFS="$save_ifs" + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # -msg_* for osf cc + -msg_*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + + # -64, -mips[0-9] enable 64-bit mode on the SGI compiler + # -r[0-9][0-9]* specifies the processor on the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler + # +DA*, +DD* enable 64-bit mode on the HP compiler + # -q* pass through compiler args for the IBM compiler + # -m*, -t[45]*, -txscale* pass through architecture-specific + # compiler args for GCC + # -F/path gives path to uninstalled frameworks, gcc on darwin + # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC + # @file GCC response files + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + func_append compile_command " $arg" + func_append finalize_command " $arg" + compiler_flags="$compiler_flags $arg" + continue + ;; + + # Some other compiler flag. + -* | +*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + + *.$objext) + # A standard object. + objs="$objs $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test "$pic_object" = none && + test "$non_pic_object" = none; then + func_fatal_error "cannot find name of object for \`$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "\`$arg' is not a valid libtool object" + fi + fi + ;; + + *.$libext) + # An archive. + deplibs="$deplibs $arg" + old_deplibs="$old_deplibs $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + dlfiles="$dlfiles $arg" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + dlprefiles="$dlprefiles $arg" + prev= + else + deplibs="$deplibs $arg" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + done # argument parsing loop + + test -n "$prev" && \ + func_fatal_help "the \`$prevarg' option requires an argument" + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + func_basename "$output" + outputname="$func_basename_result" + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + func_dirname "$output" "/" "" + output_objdir="$func_dirname_result$objdir" + # Create the object directory. + func_mkdir_p "$output_objdir" + + # Determine the type of output + case $output in + "") + func_fatal_help "you must specify an output file" + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if $opt_duplicate_deps ; then + case "$libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + libs="$libs $deplib" + done + + if test "$linkmode" = lib; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if $opt_duplicate_compiler_generated_deps; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; + esac + pre_post_deps="$pre_post_deps $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + + case $linkmode in + lib) + passes="conv dlpreopen link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + + for pass in $passes; do + # The preopen pass in lib mode reverses $deplibs; put it back here + # so that -L comes before libs that need it for instance... + if test "$linkmode,$pass" = "lib,link"; then + ## FIXME: Find the place where the list is rebuilt in the wrong + ## order, and fix it there properly + tmp_deplibs= + for deplib in $deplibs; do + tmp_deplibs="$deplib $tmp_deplibs" + done + deplibs="$tmp_deplibs" + fi + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan"; then + libs="$deplibs" + deplibs= + fi + if test "$linkmode" = prog; then + case $pass in + dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + esac + fi + if test "$linkmode,$pass" = "lib,dlpreopen"; then + # Collect and forward deplibs of preopened libtool libs + for lib in $dlprefiles; do + # Ignore non-libtool-libs + dependency_libs= + case $lib in + *.la) func_source "$lib" ;; + esac + + # Collect preopened libtool deplibs, except any this library + # has declared as weak libs + for deplib in $dependency_libs; do + deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` + case " $weak_libs " in + *" $deplib_base "*) ;; + *) deplibs="$deplibs $deplib" ;; + esac + done + done + libs="$dlprefiles" + fi + if test "$pass" = dlopen; then + # Collect dlpreopened libraries + save_deplibs="$deplibs" + deplibs= + fi + + for deplib in $libs; do + lib= + found=no + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + compiler_flags="$compiler_flags $deplib" + if test "$linkmode" = lib ; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; + esac + fi + fi + continue + ;; + -l*) + if test "$linkmode" != lib && test "$linkmode" != prog; then + func_warning "\`-l' is ignored for archives/objects" + continue + fi + func_stripname '-l' '' "$deplib" + name=$func_stripname_result + if test "$linkmode" = lib; then + searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" + else + searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" + fi + for searchdir in $searchdirs; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib="$searchdir/lib${name}${search_ext}" + if test -f "$lib"; then + if test "$search_ext" = ".la"; then + found=yes + else + found=no + fi + break 2 + fi + done + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + else # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $deplib "*) + if func_lalib_p "$lib"; then + library_names= + old_library= + func_source "$lib" + for l in $old_library $library_names; do + ll="$l" + done + if test "X$ll" = "X$old_library" ; then # only static version available + found=no + func_dirname "$lib" "" "." + ladir="$func_dirname_result" + lib=$ladir/$old_library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + fi + ;; # -l + *.ltframework) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + if test "$linkmode" = lib ; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; + esac + fi + fi + continue + ;; + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test "$pass" = conv && continue + newdependency_libs="$deplib $newdependency_libs" + func_stripname '-L' '' "$deplib" + newlib_search_path="$newlib_search_path $func_stripname_result" + ;; + prog) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test "$pass" = scan; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + func_stripname '-L' '' "$deplib" + newlib_search_path="$newlib_search_path $func_stripname_result" + ;; + *) + func_warning "\`-L' is ignored for archives/objects" + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test "$pass" = link; then + func_stripname '-R' '' "$deplib" + dir=$func_stripname_result + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) lib="$deplib" ;; + *.$libext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + # Linking convenience modules into shared libraries is allowed, + # but linking other static libraries is non-portable. + case " $dlpreconveniencelibs " in + *" $deplib "*) ;; + *) + valid_a_lib=no + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=yes + fi + ;; + pass_all) + valid_a_lib=yes + ;; + esac + if test "$valid_a_lib" != yes; then + $ECHO + $ECHO "*** Warning: Trying to link with static lib archive $deplib." + $ECHO "*** I have the capability to make that library automatically link in when" + $ECHO "*** you link to this library. But I can only do this if you have a" + $ECHO "*** shared version of the library, which you do not appear to have" + $ECHO "*** because the file extensions .$libext of this argument makes me believe" + $ECHO "*** that it is just a static archive that I should not use here." + else + $ECHO + $ECHO "*** Warning: Linking the shared library $output against the" + $ECHO "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + ;; + esac + continue + ;; + prog) + if test "$pass" != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + elif test "$linkmode" = prog; then + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + newdlprefiles="$newdlprefiles $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + newdlfiles="$newdlfiles $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + + if test "$found" = yes || test -f "$lib"; then : + else + func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" + fi + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$lib" \ + || func_fatal_error "\`$lib' is not a valid libtool archive" + + func_dirname "$lib" "" "." + ladir="$func_dirname_result" + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + inherited_linker_flags= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + func_source "$lib" + + # Convert "-framework foo" to "foo.ltframework" + if test -n "$inherited_linker_flags"; then + tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` + for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do + case " $new_inherited_linker_flags " in + *" $tmp_inherited_linker_flag "*) ;; + *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; + esac + done + fi + dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then + test -n "$dlopen" && dlfiles="$dlfiles $dlopen" + test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" + fi + + if test "$pass" = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + func_fatal_error "cannot find name of link library for \`$lib'" + fi + # It is a libtool convenience library, so add in its objects. + convenience="$convenience $ladir/$objdir/$old_library" + old_convenience="$old_convenience $ladir/$objdir/$old_library" + elif test "$linkmode" != prog && test "$linkmode" != lib; then + func_fatal_error "\`$lib' is not a convenience library" + fi + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if $opt_duplicate_deps ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + for l in $old_library $library_names; do + linklib="$l" + done + if test -z "$linklib"; then + func_fatal_error "cannot find name of link library for \`$lib'" + fi + + # This library was specified with -dlopen. + if test "$pass" = dlopen; then + if test -z "$libdir"; then + func_fatal_error "cannot -dlopen a convenience library: \`$lib'" + fi + if test -z "$dlname" || + test "$dlopen_support" != yes || + test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + dlprefiles="$dlprefiles $lib $dependency_libs" + else + newdlfiles="$newdlfiles $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + func_warning "cannot determine absolute directory name of \`$ladir'" + func_warning "passing it literally to the linker, although it might fail" + abs_ladir="$ladir" + fi + ;; + esac + func_basename "$lib" + laname="$func_basename_result" + + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + func_warning "library \`$lib' was moved." + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$libdir" + absdir="$libdir" + fi + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir="$ladir" + absdir="$abs_ladir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + fi + fi # $installed = yes + func_stripname 'lib' '.la' "$laname" + name=$func_stripname_result + + # This library was specified with -dlpreopen. + if test "$pass" = dlpreopen; then + if test -z "$libdir" && test "$linkmode" = prog; then + func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" + fi + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + newdlprefiles="$newdlprefiles $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + newdlprefiles="$newdlprefiles $dir/$dlname" + else + newdlprefiles="$newdlprefiles $dir/$linklib" + fi + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test "$linkmode" = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test "$linkmode" = prog && test "$pass" != link; then + newlib_search_path="$newlib_search_path $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + newlib_search_path="$newlib_search_path $func_stripname_result" + ;; + esac + # Need to link against all dependency_libs? + if test "$linkalldeplibs" = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if $opt_duplicate_deps ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test "$linkmode,$pass" = "prog,link"; then + if test -n "$library_names" && + { { test "$prefer_static_libs" = no || + test "$prefer_static_libs,$installed" = "built,yes"; } || + test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath:" in + *"$absdir:"*) ;; + *) temp_rpath="$temp_rpath$absdir:" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test "$use_static_libs" = built && test "$installed" = yes; then + use_static_libs=no + fi + if test -n "$library_names" && + { test "$use_static_libs" = no || test -z "$old_library"; }; then + case $host in + *cygwin* | *mingw* | *cegcc*) + # No point in relinking DLLs because paths are not encoded + notinst_deplibs="$notinst_deplibs $lib" + need_relink=no + ;; + *) + if test "$installed" = no; then + notinst_deplibs="$notinst_deplibs $lib" + need_relink=yes + fi + ;; + esac + # This is a shared library + + # Warn about portability, can't link against -module's on some + # systems (darwin). Don't bleat about dlopened modules though! + dlopenmodule="" + for dlpremoduletest in $dlprefiles; do + if test "X$dlpremoduletest" = "X$lib"; then + dlopenmodule="$dlpremoduletest" + break + fi + done + if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then + $ECHO + if test "$linkmode" = prog; then + $ECHO "*** Warning: Linking the executable $output against the loadable module" + else + $ECHO "*** Warning: Linking the shared library $output against the loadable module" + fi + $ECHO "*** $linklib is not portable!" + fi + if test "$linkmode" = lib && + test "$hardcode_into_libs" = yes; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + shift + realname="$1" + shift + libname=`eval "\\$ECHO \"$libname_spec\""` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw* | *cegcc*) + func_arith $current - $age + major=$func_arith_result + versuffix="-$major" + ;; + esac + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + func_basename "$soroot" + soname="$func_basename_result" + func_stripname 'lib' '.dll' "$soname" + newlib=libimp-$func_stripname_result.a + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + func_verbose "extracting exported symbol list from \`$soname'" + func_execute_cmds "$extract_expsyms_cmds" 'exit $?' + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + func_verbose "generating import library for \`$soname'" + func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test "$linkmode" = prog || test "$mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + case $host in + *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; + *-*-sysv4*uw2*) add_dir="-L$dir" ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir="-L$dir" ;; + *-*-darwin* ) + # if the lib is a (non-dlopened) module then we can not + # link against it, someone is ignoring the earlier warnings + if /usr/bin/file -L $add 2> /dev/null | + $GREP ": [^:]* bundle" >/dev/null ; then + if test "X$dlopenmodule" != "X$lib"; then + $ECHO "*** Warning: lib $linklib is a module, not a shared library" + if test -z "$old_library" ; then + $ECHO + $ECHO "*** And there doesn't seem to be a static archive available" + $ECHO "*** The link will probably fail, sorry" + else + add="$dir/$old_library" + fi + elif test -n "$old_library"; then + add="$dir/$old_library" + fi + fi + esac + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + relink) + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$dir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test "$lib_linked" != yes; then + func_fatal_configuration "unsupported hardcode properties" + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; + esac + fi + if test "$linkmode" = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test "$hardcode_direct" != yes && + test "$hardcode_minus_L" != yes && + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + fi + fi + fi + + if test "$linkmode" = prog || test "$mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + add="-l$name" + elif test "$hardcode_automatic" = yes; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib" ; then + add="$inst_prefix_dir$libdir/$linklib" + else + add="$libdir/$linklib" + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + fi + + if test "$linkmode" = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test "$linkmode" = prog; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + $ECHO + $ECHO "*** Warning: This system can not link to static lib archive $lib." + $ECHO "*** I have the capability to make that library automatically link in when" + $ECHO "*** you link to this library. But I can only do this if you have a" + $ECHO "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then + $ECHO "*** But as you try to build a module library, libtool will still create " + $ECHO "*** a static module, that should work as long as the dlopening application" + $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + $ECHO + $ECHO "*** However, this would only work if libtool was able to extract symbol" + $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" + $ECHO "*** not find such a program. So, this module is probably useless." + $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test "$linkmode" = lib; then + if test -n "$dependency_libs" && + { test "$hardcode_into_libs" != yes || + test "$build_old_libs" = yes || + test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) func_stripname '-R' '' "$libdir" + temp_xrpath=$func_stripname_result + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) xrpath="$xrpath $temp_xrpath";; + esac;; + *) temp_deplibs="$temp_deplibs $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi + + newlib_search_path="$newlib_search_path $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + if $opt_duplicate_deps ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + + if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + case $deplib in + -L*) path="$deplib" ;; + *.la) + func_dirname "$deplib" "" "." + dir="$func_dirname_result" + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + func_warning "cannot determine absolute directory name of \`$dir'" + absdir="$dir" + fi + ;; + esac + if $GREP "^installed=no" $deplib > /dev/null; then + case $host in + *-*-darwin*) + depdepl= + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names" ; then + for tmp in $deplibrary_names ; do + depdepl=$tmp + done + if test -f "$absdir/$objdir/$depdepl" ; then + depdepl="$absdir/$objdir/$depdepl" + darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + if test -z "$darwin_install_name"; then + darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + fi + compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" + linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" + path= + fi + fi + ;; + *) + path="-L$absdir/$objdir" + ;; + esac + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "\`$deplib' is not a valid libtool archive" + test "$absdir" != "$libdir" && \ + func_warning "\`$deplib' seems to be moved" + + path="-L$absdir" + fi + ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + if test "$pass" = link; then + if test "$linkmode" = "prog"; then + compile_deplibs="$new_inherited_linker_flags $compile_deplibs" + finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" + else + compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + fi + fi + dependency_libs="$newdependency_libs" + if test "$pass" = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test "$pass" != dlopen; then + if test "$pass" != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) lib_search_path="$lib_search_path $dir" ;; + esac + done + newlib_search_path= + fi + + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_deplibs" + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs ; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i="" + ;; + esac + if test -n "$i" ; then + tmp_libs="$tmp_libs $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test "$linkmode" = prog; then + dlfiles="$newdlfiles" + fi + if test "$linkmode" = prog || test "$linkmode" = lib; then + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + func_warning "\`-dlopen' is ignored for archives" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "\`-l' and \`-L' are ignored for archives" ;; + esac + + test -n "$rpath" && \ + func_warning "\`-rpath' is ignored for archives" + + test -n "$xrpath" && \ + func_warning "\`-R' is ignored for archives" + + test -n "$vinfo" && \ + func_warning "\`-version-info/-version-number' is ignored for archives" + + test -n "$release" && \ + func_warning "\`-release' is ignored for archives" + + test -n "$export_symbols$export_symbols_regex" && \ + func_warning "\`-export-symbols' is ignored for archives" + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + objs="$objs$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form `libNAME.la'. + case $outputname in + lib*) + func_stripname 'lib' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + test "$module" = no && \ + func_fatal_help "libtool library \`$output' must begin with \`lib'" + + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + func_stripname '' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + func_stripname '' '.la' "$outputname" + libname=$func_stripname_result + fi + ;; + esac + + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" + else + $ECHO + $ECHO "*** Warning: Linking the shared library $output against the non-libtool" + $ECHO "*** objects $objs is not portable!" + libobjs="$libobjs $objs" + fi + fi + + test "$dlself" != no && \ + func_warning "\`-dlopen self' is ignored for libtool libraries" + + set dummy $rpath + shift + test "$#" -gt 1 && \ + func_warning "ignoring multiple \`-rpath's for a libtool library" + + install_libdir="$1" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + # Some compilers have problems with a `.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + test -n "$vinfo" && \ + func_warning "\`-version-info/-version-number' is ignored for convenience libraries" + + test -n "$release" && \ + func_warning "\`-release' is ignored for convenience libraries" + else + + # Parse the version information argument. + save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + shift + IFS="$save_ifs" + + test -n "$7" && \ + func_fatal_help "too many parameters to \`-version-info'" + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major="$1" + number_minor="$2" + number_revision="$3" + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # which has an extra 1 added just for fun + # + case $version_type in + darwin|linux|osf|windows|none) + func_arith $number_major + $number_minor + current=$func_arith_result + age="$number_minor" + revision="$number_revision" + ;; + freebsd-aout|freebsd-elf|sunos) + current="$number_major" + revision="$number_minor" + age="0" + ;; + irix|nonstopux) + func_arith $number_major + $number_minor + current=$func_arith_result + age="$number_minor" + revision="$number_minor" + lt_irix_increment=no + ;; + esac + ;; + no) + current="$1" + revision="$2" + age="$3" + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "CURRENT \`$current' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "REVISION \`$revision' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "AGE \`$age' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + if test "$age" -gt "$current"; then + func_error "AGE \`$age' is greater than the current interface number \`$current'" + func_fatal_error "\`$vinfo' is not valid version information" + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + func_arith $current - $age + major=.$func_arith_result + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + func_arith $current + 1 + minor_current=$func_arith_result + xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current" + ;; + + irix | nonstopux) + if test "X$lt_irix_increment" = "Xno"; then + func_arith $current - $age + else + func_arith $current - $age + 1 + fi + major=$func_arith_result + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring="$verstring_prefix$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test "$loop" -ne 0; do + func_arith $revision - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" + ;; + + linux) + func_arith $current - $age + major=.$func_arith_result + versuffix="$major.$age.$revision" + ;; + + osf) + func_arith $current - $age + major=.$func_arith_result + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test "$loop" -ne 0; do + func_arith $current - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + verstring="$verstring:${current}.0" + ;; + + qnx) + major=".$current" + versuffix=".$current" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. + func_arith $current - $age + major=$func_arith_result + versuffix="-$major" + ;; + + *) + func_fatal_configuration "unknown library version type \`$version_type'" + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring="0.0" + ;; + esac + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + func_warning "undefined symbols not allowed in $host shared libraries" + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + + fi + + func_generate_dlsyms "$libname" "$libname" "yes" + libobjs="$libobjs $symfileobj" + test "X$libobjs" = "X " && libobjs= + + if test "$mode" != relink; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$ECHO "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext | *.gcno) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) + if test "X$precious_files_regex" != "X"; then + if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + removelist="$removelist $p" + ;; + *) ;; + esac + done + test -n "$removelist" && \ + func_show_eval "${RM}r \$removelist" + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + oldlibs="$oldlibs $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + #for path in $notinst_path; do + # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"` + # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"` + # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"` + #done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + temp_xrpath="$temp_xrpath -R$libdir" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles="$dlfiles" + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) dlfiles="$dlfiles $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles="$dlprefiles" + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) dlprefiles="$dlprefiles $lib" ;; + esac + done + + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + deplibs="$deplibs System.ltframework" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test "$build_libtool_need_lc" = "yes"; then + deplibs="$deplibs -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $opt_dry_run || $RM conftest.c + cat > conftest.c </dev/null` + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null | + $GREP " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | + $SED -e 10q | + $EGREP "$file_magic_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $ECHO + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + $ECHO "*** I have the capability to make that library automatically link in when" + $ECHO "*** you link to this library. But I can only do this if you have a" + $ECHO "*** shared version of the library, which you do not appear to have" + $ECHO "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $ECHO "*** with $libname but no candidates were found. (...for file magic test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a file magic. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + for a_deplib in $deplibs; do + case $a_deplib in + -l*) + func_stripname -l '' "$a_deplib" + name=$func_stripname_result + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval "\\$ECHO \"$libname_spec\""` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib="$potent_lib" # see symlink-check above in file_magic test + if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \ + $EGREP "$match_pattern_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $ECHO + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + $ECHO "*** I have the capability to make that library automatically link in when" + $ECHO "*** you link to this library. But I can only do this if you have a" + $ECHO "*** shared version of the library, which you do not appear to have" + $ECHO "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a regex pattern. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \ + -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + for i in $predeps $postdeps ; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"` + done + fi + if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' | + $GREP . >/dev/null; then + $ECHO + if test "X$deplibs_check_method" = "Xnone"; then + $ECHO "*** Warning: inter-library dependencies are not supported in this platform." + else + $ECHO "*** Warning: inter-library dependencies are not known to be supported." + fi + $ECHO "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + fi + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library with the System framework + newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'` + ;; + esac + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + $ECHO + $ECHO "*** Warning: libtool could not satisfy all declared inter-library" + $ECHO "*** dependencies of module $libname. Therefore, libtool will create" + $ECHO "*** a static module, that should work as long as the dlopening" + $ECHO "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + $ECHO + $ECHO "*** However, this would only work if libtool was able to extract symbol" + $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" + $ECHO "*** not find such a program. So, this module is probably useless." + $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + $ECHO "*** The inter-library dependencies that have been dropped here will be" + $ECHO "*** automatically added whenever a program is linked with this library" + $ECHO "*** or is declared to -dlopen it." + + if test "$allow_undefined" = no; then + $ECHO + $ECHO "*** Since this library must not contain undefined symbols," + $ECHO "*** because either the platform does not support them or" + $ECHO "*** it was explicitly requested with -no-undefined," + $ECHO "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + case $host in + *-*-darwin*) + newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + new_libs="$new_libs -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$new_libs $deplib" ;; + esac + ;; + *) new_libs="$new_libs $deplib" ;; + esac + done + deplibs="$new_libs" + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + if test "$hardcode_into_libs" = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + dep_rpath="$dep_rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + if test -n "$hardcode_libdir_flag_spec_ld"; then + eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" + else + eval dep_rpath=\"$hardcode_libdir_flag_spec\" + fi + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath="$finalize_shlibpath" + test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + shift + realname="$1" + shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib="$output_objdir/$realname" + linknames= + for link + do + linknames="$linknames $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + test "X$libobjs" = "X " && libobjs= + + delfiles= + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" + export_symbols="$output_objdir/$libname.uexp" + delfiles="$delfiles $export_symbols" + fi + + orig_export_symbols= + case $host_os in + cygwin* | mingw* | cegcc*) + if test -n "$export_symbols" && test -z "$export_symbols_regex"; then + # exporting using user supplied symfile + if test "x`$SED 1q $export_symbols`" != xEXPORTS; then + # and it's NOT already a .def file. Must figure out + # which of the given symbols are data symbols and tag + # them as such. So, trigger use of export_symbols_cmds. + # export_symbols gets reassigned inside the "prepare + # the list of exported symbols" if statement, so the + # include_expsyms logic still works. + orig_export_symbols="$export_symbols" + export_symbols= + always_export_symbols=yes + fi + fi + ;; + esac + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + func_verbose "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $opt_dry_run || $RM $export_symbols + cmds=$export_symbols_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + func_len " $cmd" + len=$func_len_result + if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + func_show_eval "$cmd" 'exit $?' + skipped_export=false + else + # The command line is too long to execute in one step. + func_verbose "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS="$save_ifs" + if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' + fi + + if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + tmp_deplibs="$tmp_deplibs $test_deplib" + ;; + esac + done + deplibs="$tmp_deplibs" + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec" && + test "$compiler_needs_object" = yes && + test -z "$libobjs"; then + # extract the archives, so we have objects to list. + # TODO: could optimize this to just extract one archive. + whole_archive_flag_spec= + fi + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + else + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + libobjs="$libobjs $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + linker_flags="$linker_flags $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test "$mode" = relink; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test "X$skipped_export" != "X:" && + func_len " $test_cmds" && + len=$func_len_result && + test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise + # or, if using GNU ld and skipped_export is not :, use a linker + # script. + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + output_la=`$ECHO "X$output" | $Xsed -e "$basename"` + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + last_robj= + k=1 + + if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then + output=${output_objdir}/${output_la}.lnkscript + func_verbose "creating GNU ld script: $output" + $ECHO 'INPUT (' > $output + for obj in $save_libobjs + do + $ECHO "$obj" >> $output + done + $ECHO ')' >> $output + delfiles="$delfiles $output" + elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then + output=${output_objdir}/${output_la}.lnk + func_verbose "creating linker input file list: $output" + : > $output + set x $save_libobjs + shift + firstobj= + if test "$compiler_needs_object" = yes; then + firstobj="$1 " + shift + fi + for obj + do + $ECHO "$obj" >> $output + done + delfiles="$delfiles $output" + output=$firstobj\"$file_list_spec$output\" + else + if test -n "$save_libobjs"; then + func_verbose "creating reloadable object files..." + output=$output_objdir/$output_la-${k}.$objext + eval test_cmds=\"$reload_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + if test "X$objlist" = X || + test "$len" -lt "$max_cmd_len"; then + func_append objlist " $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test "$k" -eq 1 ; then + # The first file doesn't have a previous command to add. + eval concat_cmds=\"$reload_cmds $objlist $last_robj\" + else + # All subsequent reloadable object files will link in + # the last one created. + eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\" + fi + last_robj=$output_objdir/$output_la-${k}.$objext + func_arith $k + 1 + k=$func_arith_result + output=$output_objdir/$output_la-${k}.$objext + objlist=$obj + func_len " $last_robj" + func_arith $len0 + $func_len_result + len=$func_arith_result + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" + if test -n "$last_robj"; then + eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" + fi + delfiles="$delfiles $output" + + else + output= + fi + + if ${skipped_export-false}; then + func_verbose "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $opt_dry_run || $RM $export_symbols + libobjs=$output + # Append the command to create the export file. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + fi + + test -n "$save_libobjs" && + func_verbose "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs="$IFS"; IFS='~' + for cmd in $concat_cmds; do + IFS="$save_ifs" + $opt_silent || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + if test -n "$export_symbols_regex" && ${skipped_export-false}; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + + if ${skipped_export-false}; then + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' + fi + + if test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + fi + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + fi + + if test -n "$delfiles"; then + # Append the command to remove temporary files to $cmds. + eval cmds=\"\$cmds~\$RM $delfiles\" + fi + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $dlprefiles + libobjs="$libobjs $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $opt_silent || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + func_show_eval '${RM}r "$gentop"' + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + obj) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + func_warning "\`-dlopen' is ignored for objects" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "\`-l' and \`-L' are ignored for objects" ;; + esac + + test -n "$rpath" && \ + func_warning "\`-rpath' is ignored for objects" + + test -n "$xrpath" && \ + func_warning "\`-R' is ignored for objects" + + test -n "$vinfo" && \ + func_warning "\`-version-info' is ignored for objects" + + test -n "$release" && \ + func_warning "\`-release' is ignored for objects" + + case $output in + *.lo) + test -n "$objs$old_deplibs" && \ + func_fatal_error "cannot build library object \`$output' from non-libtool objects" + + libobj=$output + func_lo2o "$libobj" + obj=$func_lo2o_result + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $opt_dry_run || $RM $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec and hope we can get by with + # turning comma into space.. + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" + reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` + else + gentop="$output_objdir/${obj}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # Create the old-style object. + reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" + func_execute_cmds "$reload_cmds" 'exit $?' + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + func_execute_cmds "$reload_cmds" 'exit $?' + fi + + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) func_stripname '' '.exe' "$output" + output=$func_stripname_result.exe;; + esac + test -n "$vinfo" && \ + func_warning "\`-version-info' is ignored for programs" + + test -n "$release" && \ + func_warning "\`-release' is ignored for programs" + + test "$preload" = yes \ + && test "$dlopen_support" = unknown \ + && test "$dlopen_self" = unknown \ + && test "$dlopen_self_static" = unknown && \ + func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` + finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` + ;; + esac + + case $host in + *-*-darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + # But is supposedly fixed on 10.4 or later (yay!). + if test "$tagname" = CXX ; then + case ${MACOSX_DEPLOYMENT_TARGET-10.0} in + 10.[0123]) + compile_command="$compile_command ${wl}-bind_at_load" + finalize_command="$finalize_command ${wl}-bind_at_load" + ;; + esac + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + new_libs="$new_libs -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$new_libs $deplib" ;; + esac + ;; + *) new_libs="$new_libs $deplib" ;; + esac + done + compile_deplibs="$new_libs" + + + compile_command="$compile_command $compile_deplibs" + finalize_command="$finalize_command $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + ::) dllsearchpath=$libdir;; + *) dllsearchpath="$dllsearchpath:$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) dllsearchpath="$dllsearchpath:$testbindir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + fi + + func_generate_dlsyms "$outputname" "@PROGRAM@" "no" + + # template prelinking step + if test -n "$prelink_cmds"; then + func_execute_cmds "$prelink_cmds" 'exit $?' + fi + + wrappers_required=yes + case $host in + *cygwin* | *mingw* ) + if test "$build_libtool_libs" != yes; then + wrappers_required=no + fi + ;; + *cegcc) + # Disable wrappers for cegcc, we are cross compiling anyway. + wrappers_required=no + ;; + *) + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + wrappers_required=no + fi + ;; + esac + if test "$wrappers_required" = no; then + # Replace the output file specification. + compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + exit_status=0 + func_show_eval "$link_command" 'exit_status=$?' + + # Delete the generated files. + if test -f "$output_objdir/${outputname}S.${objext}"; then + func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' + fi + + exit $exit_status + fi + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + rpath="$rpath$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$no_install" = yes; then + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. + link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $opt_dry_run || $RM $output + # Link the executable and exit + func_show_eval "$link_command" 'exit $?' + exit $EXIT_SUCCESS + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + func_warning "this platform does not like uninstalled shared libraries" + func_warning "\`$output' will be relinked during installation" + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname + + func_show_eval "$link_command" 'exit $?' + + # Now create the wrapper script. + func_verbose "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` + fi + + # Quote $ECHO for shipping. + if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then + case $progpath in + [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; + *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; + esac + qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"` + else + qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"` + fi + + # Only actually do things if not in dry run mode. + $opt_dry_run || { + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) func_stripname '' '.exe' "$output" + output=$func_stripname_result ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + func_stripname '' '.exe' "$outputname" + outputname=$func_stripname_result ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + func_dirname_and_basename "$output" "" "." + output_name=$func_basename_result + output_path=$func_dirname_result + cwrappersource="$output_path/$objdir/lt-$output_name.c" + cwrapper="$output_path/$output_name.exe" + $RM $cwrappersource $cwrapper + trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + func_emit_cwrapperexe_src > $cwrappersource + + # The wrapper executable is built using the $host compiler, + # because it contains $host paths and files. If cross- + # compiling, it, like the target executable, must be + # executed on the $host or under an emulation environment. + $opt_dry_run || { + $LTCC $LTCFLAGS -o $cwrapper $cwrappersource + $STRIP $cwrapper + } + + # Now, create the wrapper script for func_source use: + func_ltwrapper_scriptname $cwrapper + $RM $func_ltwrapper_scriptname_result + trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 + $opt_dry_run || { + # note: this script will not be executed, so do not chmod. + if test "x$build" = "x$host" ; then + $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result + else + func_emit_wrapper no > $func_ltwrapper_scriptname_result + fi + } + ;; + * ) + $RM $output + trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 + + func_emit_wrapper no > $output + chmod +x $output + ;; + esac + } + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save $symfileobj" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$old_deplibs $non_pic_objects" + if test "$preload" = yes && test -f "$symfileobj"; then + oldobjs="$oldobjs $symfileobj" + fi + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $addlibs + oldobjs="$oldobjs $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + cmds=$old_archive_from_new_cmds + else + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $dlprefiles + oldobjs="$oldobjs $func_extract_archives_result" + fi + + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + func_basename "$obj" + $ECHO "$func_basename_result" + done | sort | sort -uc >/dev/null 2>&1); then + : + else + $ECHO "copying selected object files to avoid basename conflicts..." + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + func_mkdir_p "$gentop" + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + func_basename "$obj" + objbase="$func_basename_result" + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + func_arith $counter + 1 + counter=$func_arith_result + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + oldobjs="$oldobjs $gentop/$newobj" + ;; + *) oldobjs="$oldobjs $obj" ;; + esac + done + fi + eval cmds=\"$old_archive_cmds\" + + func_len " $cmds" + len=$func_len_result + if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + func_verbose "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + oldobjs= + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + eval test_cmds=\"$old_archive_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + for obj in $save_oldobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + func_append objlist " $obj" + if test "$len" -lt "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj" ; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + objlist= + len=$len0 + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test "X$oldobjs" = "X" ; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + func_execute_cmds "$cmds" 'exit $?' + done + + test -n "$generated" && \ + func_show_eval "${RM}r$generated" + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + func_verbose "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` + if test "$hardcode_automatic" = yes ; then + relink_command= + fi + + # Only create the output if not a dry run. + $opt_dry_run || { + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + func_basename "$deplib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "\`$deplib' is not a valid libtool archive" + newdependency_libs="$newdependency_libs $libdir/$name" + ;; + *) newdependency_libs="$newdependency_libs $deplib" ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + + for lib in $dlfiles; do + case $lib in + *.la) + func_basename "$lib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "\`$lib' is not a valid libtool archive" + newdlfiles="$newdlfiles $libdir/$name" + ;; + *) newdlfiles="$newdlfiles $lib" ;; + esac + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + *.la) + # Only pass preopened files to the pseudo-archive (for + # eventual linking with the app. that links it) if we + # didn't already link the preopened objects directly into + # the library: + func_basename "$lib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "\`$lib' is not a valid libtool archive" + newdlprefiles="$newdlprefiles $libdir/$name" + ;; + esac + done + dlprefiles="$newdlprefiles" + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlfiles="$newdlfiles $abs" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlprefiles="$newdlprefiles $abs" + done + dlprefiles="$newdlprefiles" + fi + $RM $output + # place dlname in correct position for cygwin + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + esac + $ECHO > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='$new_inherited_linker_flags' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Names of additional weak libraries provided by this library +weak_library_names='$weak_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test "$installed" = no && test "$need_relink" = yes; then + $ECHO >> $output "\ +relink_command=\"$relink_command\"" + fi + done + } + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' + ;; + esac + exit $EXIT_SUCCESS +} + +{ test "$mode" = link || test "$mode" = relink; } && + func_mode_link ${1+"$@"} + + +# func_mode_uninstall arg... +func_mode_uninstall () +{ + $opt_debug + RM="$nonopt" + files= + rmforce= + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + for arg + do + case $arg in + -f) RM="$RM $arg"; rmforce=yes ;; + -*) RM="$RM $arg" ;; + *) files="$files $arg" ;; + esac + done + + test -z "$RM" && \ + func_fatal_help "you must specify an RM program" + + rmdirs= + + origobjdir="$objdir" + for file in $files; do + func_dirname "$file" "" "." + dir="$func_dirname_result" + if test "X$dir" = X.; then + objdir="$origobjdir" + else + objdir="$dir/$origobjdir" + fi + func_basename "$file" + name="$func_basename_result" + test "$mode" = uninstall && objdir="$dir" + + # Remember objdir for removal later, being careful to avoid duplicates + if test "$mode" = clean; then + case " $rmdirs " in + *" $objdir "*) ;; + *) rmdirs="$rmdirs $objdir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if { test -L "$file"; } >/dev/null 2>&1 || + { test -h "$file"; } >/dev/null 2>&1 || + test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif test "$rmforce" = yes; then + continue + fi + + rmfiles="$file" + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if func_lalib_p "$file"; then + func_source $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + rmfiles="$rmfiles $objdir/$n" + done + test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" + + case "$mode" in + clean) + case " $library_names " in + # " " in the beginning catches empty $dlname + *" $dlname "*) ;; + *) rmfiles="$rmfiles $objdir/$dlname" ;; + esac + test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if func_lalib_p "$file"; then + + # Read the .lo file + func_source $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" && + test "$pic_object" != none; then + rmfiles="$rmfiles $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" && + test "$non_pic_object" != none; then + rmfiles="$rmfiles $dir/$non_pic_object" + fi + fi + ;; + + *) + if test "$mode" = clean ; then + noexename=$name + case $file in + *.exe) + func_stripname '' '.exe' "$file" + file=$func_stripname_result + func_stripname '' '.exe' "$name" + noexename=$func_stripname_result + # $file with .exe has already been added to rmfiles, + # add $file without .exe + rmfiles="$rmfiles $file" + ;; + esac + # Do a test to see if this is a libtool program. + if func_ltwrapper_p "$file"; then + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + relink_command= + func_source $func_ltwrapper_scriptname_result + rmfiles="$rmfiles $func_ltwrapper_scriptname_result" + else + relink_command= + func_source $dir/$noexename + fi + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then + rmfiles="$rmfiles $objdir/lt-$name" + fi + if test "X$noexename" != "X$name" ; then + rmfiles="$rmfiles $objdir/lt-${noexename}.c" + fi + fi + fi + ;; + esac + func_show_eval "$RM $rmfiles" 'exit_status=1' + done + objdir="$origobjdir" + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + func_show_eval "rmdir $dir >/dev/null 2>&1" + fi + done + + exit $exit_status +} + +{ test "$mode" = uninstall || test "$mode" = clean; } && + func_mode_uninstall ${1+"$@"} + +test -z "$mode" && { + help="$generic_help" + func_fatal_help "you must specify a MODE" +} + +test -z "$exec_cmd" && \ + func_fatal_help "invalid operation mode \`$mode'" + +if test -n "$exec_cmd"; then + eval exec "$exec_cmd" + exit $EXIT_FAILURE +fi + +exit $exit_status + + +# The TAGs below are defined such that we never get into a situation +# in which we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +build_libtool_libs=no +build_old_libs=yes +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: +# vi:sw=2 + diff --git a/xchat-2.8.8/missing b/xchat-2.8.8/missing new file mode 100755 index 0000000..28055d2 --- /dev/null +++ b/xchat-2.8.8/missing @@ -0,0 +1,376 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. + +scriptversion=2009-04-28.21; # UTC + +# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, +# 2008, 2009 Free Software Foundation, Inc. +# Originally by Fran,cois Pinard , 1996. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program 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 General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +run=: +sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' +sed_minuso='s/.* -o \([^ ]*\).*/\1/p' + +# In the cases where this matters, `missing' is being run in the +# srcdir already. +if test -f configure.ac; then + configure_ac=configure.ac +else + configure_ac=configure.in +fi + +msg="missing on your system" + +case $1 in +--run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 + # Exit code 63 means version mismatch. This often happens + # when the user try to use an ancient version of a tool on + # a file that requires a minimum version. In this case we + # we should proceed has if the program had been absent, or + # if --run hadn't been passed. + if test $? = 63; then + run=: + msg="probably too old" + fi + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + --run try to run the given command, and emulate it if it fails + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + autom4te touch the output file, or create a stub one + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + help2man touch the output file + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + tar try tar, gnutar, gtar, then tar without non-portable flags + yacc create \`y.tab.[ch]', if possible, from existing .[ch] + +Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and +\`g' are ignored when checking the name. + +Send bug reports to ." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit $? + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + +esac + +# normalize program name to check for. +program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + +# Now exit if we have it, but it failed. Also exit now if we +# don't have it and --version was passed (most likely to detect +# the program). This is about non-GNU programs, so use $1 not +# $program. +case $1 in + lex*|yacc*) + # Not GNU programs, they don't have --version. + ;; + + tar*) + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + exit 1 + fi + ;; + + *) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + # Could not run --version or --help. This is probably someone + # running `$TOOL --version' or `$TOOL --help' to check whether + # $TOOL exists and not knowing $TOOL uses missing. + exit 1 + fi + ;; +esac + +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. +case $program in + aclocal*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acinclude.m4' or \`${configure_ac}'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`${configure_ac}'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acconfig.h' or \`${configure_ac}'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` + test -z "$files" && files="config.h" + touch_files= + for f in $files; do + case $f in + *:*) touch_files="$touch_files "`echo "$f" | + sed -e 's/^[^:]*://' -e 's/:.*//'`;; + *) touch_files="$touch_files $f.in";; + esac + done + touch $touch_files + ;; + + automake*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print | + sed 's/\.am$/.in/' | + while read f; do touch "$f"; done + ;; + + autom4te*) + echo 1>&2 "\ +WARNING: \`$1' is needed, but is $msg. + You might have modified some files without having the + proper tools for further handling them. + You can get \`$1' as part of \`Autoconf' from any GNU + archive site." + + file=`echo "$*" | sed -n "$sed_output"` + test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo "#! /bin/sh" + echo "# Created by GNU Automake missing as a replacement of" + echo "# $ $@" + echo "exit 0" + chmod +x $file + exit 1 + fi + ;; + + bison*|yacc*) + echo 1>&2 "\ +WARNING: \`$1' $msg. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if test $# -ne 1; then + eval LASTARG="\${$#}" + case $LASTARG in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if test -f "$SRCFILE"; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if test -f "$SRCFILE"; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if test ! -f y.tab.h; then + echo >y.tab.h + fi + if test ! -f y.tab.c; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex*|flex*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if test $# -ne 1; then + eval LASTARG="\${$#}" + case $LASTARG in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if test -f "$SRCFILE"; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if test ! -f lex.yy.c; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + help2man*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a dependency of a manual page. You may need the + \`Help2man' package in order for those modifications to take + effect. You can get \`Help2man' from any GNU archive site." + + file=`echo "$*" | sed -n "$sed_output"` + test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo ".ab help2man is required to generate this page" + exit $? + fi + ;; + + makeinfo*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + # The file to touch is that specified with -o ... + file=`echo "$*" | sed -n "$sed_output"` + test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` + if test -z "$file"; then + # ... or it is the one specified with @setfilename ... + infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n ' + /^@setfilename/{ + s/.* \([^ ]*\) *$/\1/ + p + q + }' $infile` + # ... or it is derived from the source name (dir/f.texi becomes f.info) + test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info + fi + # If the file does not exist, the user really needs makeinfo; + # let's fail without touching anything. + test -f $file || exit 1 + touch $file + ;; + + tar*) + shift + + # We have already tried tar in the generic part. + # Look for gnutar/gtar before invocation to avoid ugly error + # messages. + if (gnutar --version > /dev/null 2>&1); then + gnutar "$@" && exit 0 + fi + if (gtar --version > /dev/null 2>&1); then + gtar "$@" && exit 0 + fi + firstarg="$1" + if shift; then + case $firstarg in + *o*) + firstarg=`echo "$firstarg" | sed s/o//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + case $firstarg in + *h*) + firstarg=`echo "$firstarg" | sed s/h//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + fi + + echo 1>&2 "\ +WARNING: I can't seem to be able to run \`tar' with the given arguments. + You may want to install GNU tar or Free paxutils, or check the + command line arguments." + exit 1 + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and is $msg. + You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequisites for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/xchat-2.8.8/plugins/Make.plugin b/xchat-2.8.8/plugins/Make.plugin new file mode 100644 index 0000000..4a4c56f --- /dev/null +++ b/xchat-2.8.8/plugins/Make.plugin @@ -0,0 +1,38 @@ +# Makefile stub for creating standalone plugin distributions. + +plugin_dist: pg_dist pg_dist/config.status + pgi=`cd $(srcdir)/.. && pwd`; cd pg_dist; \ + $(MAKE) $(AM_MAKEFLAGS) PLUGIN_INCLUDES=-I$$pgi distcheck dist + +pg_dist: pg_distdir pg_dist/configure.in pg_dist/install-sh + cd pg_dist \ + && libtoolize --copy --force --automake \ + && automake --copy --add-missing --foreign \ + && autoconf -l ../$(top_srcdir) + +pg_distdir: $(DISTFILES) + test -d pg_dist || mkdir pg_dist + for dfile in $(DISTFILES); do \ + test -f $$dfile && cp $$dfile pg_dist \ + || test -f $(srcdir)/$$dfile && cp $(srcdir)/$$dfile pg_dist; done + sed '/Make.plugin/d' < $(srcdir)/Makefile.am > pg_dist/Makefile.am + +pg_dist/configure.in: $(srcdir)/../plugin-conf.in + rm -f pg_dist/configure.in + test -f $(srcdir)/config.stub \ + && cat $(srcdir)/config.stub > pg_dist/configure.in || true + cat $(srcdir)/../plugin-conf.in | \ + sed 's%@PLUGIN_VERSION@%$(PLUGIN_VERSION)%; \ + s%@PLUGIN@%$(PLUGIN)%' >> pg_dist/configure.in + +pg_dist/install-sh: pg_distdir + cp $(top_srcdir)/install-sh pg_dist + +pg_dist/config.status: pg_dist/configure + cd pg_dist \ + && test -f config.status && $(SHELL) ./config.status --recheck \ + || $(SHELL) ./configure --enable-maintainer-mode + +DISTCLEANFILES = pg_dist/* pg_dist + +# diff --git a/xchat-2.8.8/plugins/Makefile b/xchat-2.8.8/plugins/Makefile new file mode 100644 index 0000000..a347bf7 --- /dev/null +++ b/xchat-2.8.8/plugins/Makefile @@ -0,0 +1,654 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# plugins/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + +pkgdatadir = $(datadir)/xchat +pkgincludedir = $(includedir)/xchat +pkglibdir = $(libdir)/xchat +pkglibexecdir = $(libexecdir)/xchat +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +subdir = plugins +DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +HEADERS = $(noinst_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = . python perl tcl +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run aclocal-1.11 +ALLOCA = +AMTAR = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run tar +AR = ar +AUTOCONF = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run autoconf +AUTOHEADER = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run autoheader +AUTOMAKE = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run automake-1.11 +AWK = gawk +BUILD_INCLUDED_LIBINTL = no +CATOBJEXT = .gmo +CC = gcc +CCAS = gcc +CCASDEPMODE = depmode=gcc3 +CCASFLAGS = -g -O2 +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 -Wall -pipe -Wno-pointer-sign -funsigned-char +CFLAG_VISIBILITY = -fvisibility=hidden +COMMON_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -pthread -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include +COMMON_LIBS = -lglib-2.0 -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DATADIR = ${prefix}/share +DATADIRNAME = share +DBUS_BINDING_TOOL = /usr/bin/dbus-binding-tool +DBUS_CFLAGS = -pthread -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include +DBUS_LIBS = -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0 +DBUS_SERVICES_DIR = ${prefix}/share/dbus-1/services +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/local/bin/grep -E +EXEEXT = +FGREP = /usr/local/bin/grep -F +GCONFTOOL = /usr/bin/gconftool-2 +GENCAT = gencat +GETTEXT_MACRO_VERSION = 0.17 +GETTEXT_PACKAGE = xchat +GLIBC2 = yes +GLIBC21 = yes +GLIB_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include +GLIB_GENMARSHAL = /usr/bin/glib-genmarshal +GLIB_LIBS = -lglib-2.0 +GLIB_MKENUMS = glib-mkenums +GMSGFMT = /usr/bin/msgfmt +GMSGFMT_015 = /usr/bin/msgfmt +GOBJECT_QUERY = gobject-query +GREP = /usr/local/bin/grep +GTKSPELL_CFLAGS = +GTKSPELL_LIBS = +GTK_CFLAGS = -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 +GTK_LIBS = -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype +GUI_CFLAGS = -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 +GUI_LIBS = -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype -Wl,--version-script,$(srcdir)/../version-script -lglib-2.0 -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0 +HAVE_ASPRINTF = 1 +HAVE_POSIX_PRINTF = 1 +HAVE_SNPRINTF = 1 +HAVE_VISIBILITY = 1 +HAVE_WPRINTF = 0 +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +INSTOBJEXT = .mo +INTLBISON = bison +INTLLIBS = +INTLOBJS = +INTL_LIBTOOL_SUFFIX_PREFIX = +INTL_MACOSX_LIBS = +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = -lgmodule-2.0 +LIBICONV = -liconv +LIBINTL = +LIBMULTITHREAD = -lpthread +LIBOBJS = +LIBPTH = +LIBPTH_PREFIX = +LIBS = -lX11 -lssl -lcrypto -ldl -Wl,--export-dynamic -pthread -lglib-2.0 +LIBSEXY_CFLAGS = +LIBSEXY_LIBS = +LIBTHREAD = +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBC = -lc +LTLIBICONV = -liconv +LTLIBINTL = +LTLIBMULTITHREAD = -lpthread +LTLIBOBJS = +LTLIBPTH = +LTLIBTHREAD = +MAINT = # +MAKEINFO = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run makeinfo +MKDIR_P = /bin/mkdir -p +MSGFMT = /usr/bin/msgfmt +MSGFMT_015 = /usr/bin/msgfmt +MSGMERGE = /usr/bin/msgmerge +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = xchat +PACKAGE_BUGREPORT = http://www.xchat.org/ +PACKAGE_NAME = XChat +PACKAGE_STRING = XChat 2.8.8 +PACKAGE_TARNAME = xchat +PACKAGE_URL = +PACKAGE_VERSION = 2.8.8 +PATH_SEPARATOR = : +PERL_CFLAGS = -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/lib/x86_64-linux-gnu/perl/5.26/CORE +PERL_LDFLAGS = -Wl,-E -fstack-protector-strong -L/usr/local/lib -L/usr/lib/x86_64-linux-gnu/perl/5.26/CORE -lperl -ldl -lm -lpthread -lcrypt +PKG_CONFIG = /usr/bin/pkg-config +PLUGIN_INCLUDES = -I$(top_srcdir)/plugins +POSUB = po +PRI_MACROS_BROKEN = 0 +PY_CFLAGS = -I/usr/include/python2.7 +PY_LIBS = -L/usr/lib/python2.7/config -lpython2.7 -lpthread -lutil +RANLIB = ranlib +SED = /bin/sed +SET_MAKE = +SHELL = /bin/bash +STRIP = strip +TCL_CFLAGS = -I/usr/include -I/usr/include/tcl8.6 +TCL_LIBS = -L/usr/lib/x86_64-linux-gnu -ltcl8.6 -ldl -lz -lpthread -lm +USE_INCLUDED_LIBINTL = no +USE_NLS = yes +VERSION = 2.8.8 +WINDRES = +WOE32 = no +WOE32DLL = no +XGETTEXT = /usr/bin/xgettext +XGETTEXT_015 = /usr/bin/xgettext +XGETTEXT_EXTRA_OPTIONS = +abs_builddir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/plugins +abs_srcdir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/plugins +abs_top_builddir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8 +abs_top_srcdir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8 +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = /usr/local +gdkpixbufcsourcepath = /usr/bin/gdk-pixbuf-csource +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +lt_ECHO = echo +mandir = ${datarootdir}/man +mkdir_p = /bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +perlpath = /usr/bin/perl +pkgconfigpath = /usr/bin/pkg-config +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +pythonpath = /usr/bin/python2 +sbindir = ${exec_prefix}/sbin +sedpath = /bin/sed +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +unamepath = /bin/uname +xchatlibdir = ${exec_prefix}/lib/xchat + +# temp. solution while mailcheck & xdcc arn't in SUBDIRS +EXTRA_DIST = plugin20.html Make.plugin plugin-conf.in \ + xdcc/xdcc.c \ + xdcc/Makefile.am + +noinst_HEADERS = xchat-plugin.h +pythondir = python +perldir = perl +tcldir = tcl + +#SUBDIRS = . $(pythondir) $(perldir) mailcheck xdcc +SUBDIRS = . $(pythondir) $(perldir) $(tcldir) +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign plugins/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign plugins/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(HEADERS) +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/xchat-2.8.8/plugins/Makefile.am b/xchat-2.8.8/plugins/Makefile.am new file mode 100644 index 0000000..d90f813 --- /dev/null +++ b/xchat-2.8.8/plugins/Makefile.am @@ -0,0 +1,21 @@ +# temp. solution while mailcheck & xdcc arn't in SUBDIRS +EXTRA_DIST = plugin20.html Make.plugin plugin-conf.in \ + xdcc/xdcc.c \ + xdcc/Makefile.am + +noinst_HEADERS = xchat-plugin.h + +if DO_PYTHON +pythondir = python +endif + +if DO_PERL +perldir = perl +endif + +if DO_TCL +tcldir = tcl +endif + +#SUBDIRS = . $(pythondir) $(perldir) mailcheck xdcc +SUBDIRS = . $(pythondir) $(perldir) $(tcldir) diff --git a/xchat-2.8.8/plugins/Makefile.in b/xchat-2.8.8/plugins/Makefile.in new file mode 100644 index 0000000..4f15241 --- /dev/null +++ b/xchat-2.8.8/plugins/Makefile.in @@ -0,0 +1,654 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = plugins +DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +HEADERS = $(noinst_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = . python perl tcl +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +COMMON_CFLAGS = @COMMON_CFLAGS@ +COMMON_LIBS = @COMMON_LIBS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DATADIRNAME = @DATADIRNAME@ +DBUS_BINDING_TOOL = @DBUS_BINDING_TOOL@ +DBUS_CFLAGS = @DBUS_CFLAGS@ +DBUS_LIBS = @DBUS_LIBS@ +DBUS_SERVICES_DIR = @DBUS_SERVICES_DIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GCONFTOOL = @GCONFTOOL@ +GENCAT = @GENCAT@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GLIB_CFLAGS = @GLIB_CFLAGS@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GLIB_LIBS = @GLIB_LIBS@ +GLIB_MKENUMS = @GLIB_MKENUMS@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GOBJECT_QUERY = @GOBJECT_QUERY@ +GREP = @GREP@ +GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ +GTKSPELL_LIBS = @GTKSPELL_LIBS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_LIBS = @GTK_LIBS@ +GUI_CFLAGS = @GUI_CFLAGS@ +GUI_LIBS = @GUI_LIBS@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBSEXY_CFLAGS = @LIBSEXY_CFLAGS@ +LIBSEXY_LIBS = @LIBSEXY_LIBS@ +LIBTHREAD = @LIBTHREAD@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBC = @LTLIBC@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTHREAD = @LTLIBTHREAD@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL_CFLAGS = @PERL_CFLAGS@ +PERL_LDFLAGS = @PERL_LDFLAGS@ +PKG_CONFIG = @PKG_CONFIG@ +PLUGIN_INCLUDES = @PLUGIN_INCLUDES@ +POSUB = @POSUB@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +PY_CFLAGS = @PY_CFLAGS@ +PY_LIBS = @PY_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TCL_CFLAGS = @TCL_CFLAGS@ +TCL_LIBS = @TCL_LIBS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WOE32 = @WOE32@ +WOE32DLL = @WOE32DLL@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gdkpixbufcsourcepath = @gdkpixbufcsourcepath@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +perlpath = @perlpath@ +pkgconfigpath = @pkgconfigpath@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pythonpath = @pythonpath@ +sbindir = @sbindir@ +sedpath = @sedpath@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +unamepath = @unamepath@ +xchatlibdir = @xchatlibdir@ + +# temp. solution while mailcheck & xdcc arn't in SUBDIRS +EXTRA_DIST = plugin20.html Make.plugin plugin-conf.in \ + xdcc/xdcc.c \ + xdcc/Makefile.am + +noinst_HEADERS = xchat-plugin.h +@DO_PYTHON_TRUE@pythondir = python +@DO_PERL_TRUE@perldir = perl +@DO_TCL_TRUE@tcldir = tcl + +#SUBDIRS = . $(pythondir) $(perldir) mailcheck xdcc +SUBDIRS = . $(pythondir) $(perldir) $(tcldir) +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign plugins/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign plugins/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(HEADERS) +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/xchat-2.8.8/plugins/perl/.deps/perl.Plo b/xchat-2.8.8/plugins/perl/.deps/perl.Plo new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/plugins/perl/.deps/perl.Plo @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/plugins/perl/IRC.pm b/xchat-2.8.8/plugins/perl/IRC.pm new file mode 100644 index 0000000..676f99e --- /dev/null +++ b/xchat-2.8.8/plugins/perl/IRC.pm @@ -0,0 +1,256 @@ +{ +package IRC; +sub IRC::register { + my ($script_name, $version, $callback) = @_; + my $package = caller; + $callback = Xchat::Embed::fix_callback( $package, $callback) if $callback; + Xchat::register( $script_name, $version, undef, $callback ); +} + + +sub IRC::add_command_handler { + my ($command, $callback) = @_; + my $package = caller; + + $callback = Xchat::Embed::fix_callback( $package, $callback ); + + # starting index for word_eol array + # this is for compatibility with '' as the command + my $start_index = $command ? 1 : 0; + + Xchat::hook_command( $command, + sub { + no strict 'refs'; + return &{$callback}($_[1][$start_index]); + } + ); + return; +} + +sub IRC::add_message_handler { + my ($message, $callback) = @_; + my $package = caller; + $callback = Xchat::Embed::fix_callback( $package, $callback ); + + Xchat::hook_server( $message, + sub { + no strict 'refs'; + return &{$callback}( $_[1][0] ); + } + ); + return; +} + +sub IRC::add_print_handler { + my ($event, $callback) = @_; + my $package = caller; + $callback = Xchat::Embed::fix_callback( $package, $callback ); + Xchat::hook_print( $event, + sub { + my @word = @{$_[0]}; + no strict 'refs'; + return &{$callback}( join( ' ', @word[0..3] ), @word ); + } + ); + return; +} + +sub IRC::add_timeout_handler { + my ($timeout, $callback) = @_; + my $package = caller; + $callback = Xchat::Embed::fix_callback( $package, $callback ); + Xchat::hook_timer( $timeout, + sub { + no strict 'refs'; + &{$callback}; + return 0; + } + ); + return; +} + +sub IRC::command { + my $command = shift; + if( $command =~ m{^/} ) { + $command =~ s{^/}{}; + Xchat::command( $command ); + } else { + Xchat::command( qq[say $command] ); + } +} + +sub IRC::command_with_channel { + my ($command, $channel, $server) = @_; + my $old_ctx = Xchat::get_context; + my $ctx = Xchat::find_context( $channel, $server ); + + if( $ctx ) { + Xchat::set_context( $ctx ); + IRC::command( $command ); + Xchat::set_context( $ctx ); + } +} + +sub IRC::command_with_server { + my ($command, $server) = @_; + my $old_ctx = Xchat::get_context; + my $ctx = Xchat::find_context( undef, $server ); + + if( $ctx ) { + Xchat::set_context( $ctx ); + IRC::command( $command ); + Xchat::set_context( $ctx ); + } +} + +sub IRC::dcc_list { + my @dccs; + for my $dcc ( Xchat::get_list( 'dcc' ) ) { + push @dccs, $dcc->{nick}; + push @dccs, $dcc->{file} ? $dcc->{file} : ''; + push @dccs, @{$dcc}{qw(type status cps size)}; + push @dccs, $dcc->{type} == 0 ? $dcc->{pos} : $dcc->{resume}; + push @dccs, $dcc->{address32}; + push @dccs, $dcc->{destfile} ? $dcc->{destfile} : ''; + } + return @dccs; +} + +sub IRC::channel_list { + my @channels; + for my $channel ( Xchat::get_list( 'channels' ) ) { + push @channels, @{$channel}{qw(channel server)}, + Xchat::context_info( $channel->{context} )->{nick}; + } + return @channels; +} + +sub IRC::get_info { + my $id = shift; + my @ids = qw(version nick channel server xchatdir away network host topic); + + if( $id >= 0 && $id <= 8 && $id != 5 ) { + my $info = Xchat::get_info($ids[$id]); + return defined $info ? $info : ''; + } else { + if( $id == 5 ) { + return Xchat::get_info( 'away' ) ? 1 : 0; + } else { + return 'Error2'; + } + } +} + +sub IRC::get_prefs { + return 'Unknown variable' unless defined $_[0]; + my $result = Xchat::get_prefs(shift); + return defined $result ? $result : 'Unknown variable'; +} + +sub IRC::ignore_list { + my @ignores; + for my $ignore ( Xchat::get_list( 'ignore' ) ) { + push @ignores, $ignore->{mask}; + my $flags = $ignore->{flags}; + push @ignores, $flags & 1, $flags & 2, $flags & 4, $flags & 8, $flags & 16, + $flags & 32, ':'; + } + return @ignores; +} + +sub IRC::print { + Xchat::print( $_ ) for @_; + return; +} + +sub IRC::print_with_channel { + Xchat::print( @_ ); +} + +sub IRC::send_raw { + Xchat::commandf( qq[quote %s], shift ); +} + +sub IRC::server_list { + my @servers; + for my $channel ( Xchat::get_list( 'channels' ) ) { + push @servers, $channel->{server} if $channel->{server}; + } + return @servers; +} + +sub IRC::user_info { + my $user; + if( @_ > 0 ) { + $user = Xchat::user_info( shift ); + } else { + $user = Xchat::user_info(); + } + + my @info; + if( $user ) { + push @info, $user->{nick}; + if( $user->{host} ) { + push @info, $user->{host}; + } else { + push @info, 'FETCHING'; + } + push @info, $user->{prefix} eq '@' ? 1 : 0; + push @info, $user->{prefix} eq '+' ? 1 : 0; + } + return @info; +} + +sub IRC::user_list { + my ($channel, $server) = @_; + my $ctx = Xchat::find_context( $channel, $server ); + my $old_ctx = Xchat::get_context; + + if( $ctx ) { + Xchat::set_context( $ctx ); + my @users; + for my $user ( Xchat::get_list( 'users' ) ) { + push @users, $user->{nick}; + if( $user->{host} ) { + push @users, $user->{host}; + } else { + push @users, 'FETCHING'; + } + push @users, $user->{prefix} eq '@' ? 1 : 0; + push @users, $user->{prefix} eq '+' ? 1 : 0; + push @users, ':'; + } + Xchat::set_context( $old_ctx ); + return @users; + } else { + return; + } +} + +sub IRC::user_list_short { + my ($channel, $server) = @_; + my $ctx = Xchat::find_context( $channel, $server ); + my $old_ctx = Xchat::get_context; + + if( $ctx ) { + Xchat::set_context( $ctx ); + my @users; + for my $user ( Xchat::get_list( 'users' ) ) { + my $nick = $user->{nick}; + my $host = $user->{host} || 'FETCHING'; + push @users, $nick, $host; + } + Xchat::set_context( $old_ctx ); + return @users; + } else { + return; + } + +} + +sub IRC::add_user_list {} +sub IRC::sub_user_list {} +sub IRC::clear_user_list {} +sub IRC::notify_list {} +sub IRC::perl_script_list {} +} diff --git a/xchat-2.8.8/plugins/perl/Makefile b/xchat-2.8.8/plugins/perl/Makefile new file mode 100644 index 0000000..bad2925 --- /dev/null +++ b/xchat-2.8.8/plugins/perl/Makefile @@ -0,0 +1,621 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# plugins/perl/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + +pkgdatadir = $(datadir)/xchat +pkgincludedir = $(includedir)/xchat +pkglibdir = $(libdir)/xchat +pkglibexecdir = $(libexecdir)/xchat +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +subdir = plugins/perl +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(libdir)" +LTLIBRARIES = $(lib_LTLIBRARIES) +am__DEPENDENCIES_1 = +perl_la_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_perl_la_OBJECTS = perl.lo +perl_la_OBJECTS = $(am_perl_la_OBJECTS) +perl_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(perl_la_LDFLAGS) \ + $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(perl_la_SOURCES) +DIST_SOURCES = $(perl_la_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run aclocal-1.11 +ALLOCA = +AMTAR = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run tar +AR = ar +AUTOCONF = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run autoconf +AUTOHEADER = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run autoheader +AUTOMAKE = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run automake-1.11 +AWK = gawk +BUILD_INCLUDED_LIBINTL = no +CATOBJEXT = .gmo +CC = gcc +CCAS = gcc +CCASDEPMODE = depmode=gcc3 +CCASFLAGS = -g -O2 +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 -Wall -pipe -Wno-pointer-sign -funsigned-char +CFLAG_VISIBILITY = -fvisibility=hidden +COMMON_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -pthread -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include +COMMON_LIBS = -lglib-2.0 -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DATADIR = ${prefix}/share +DATADIRNAME = share +DBUS_BINDING_TOOL = /usr/bin/dbus-binding-tool +DBUS_CFLAGS = -pthread -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include +DBUS_LIBS = -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0 +DBUS_SERVICES_DIR = ${prefix}/share/dbus-1/services +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/local/bin/grep -E +EXEEXT = +FGREP = /usr/local/bin/grep -F +GCONFTOOL = /usr/bin/gconftool-2 +GENCAT = gencat +GETTEXT_MACRO_VERSION = 0.17 +GETTEXT_PACKAGE = xchat +GLIBC2 = yes +GLIBC21 = yes +GLIB_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include +GLIB_GENMARSHAL = /usr/bin/glib-genmarshal +GLIB_LIBS = -lglib-2.0 +GLIB_MKENUMS = glib-mkenums +GMSGFMT = /usr/bin/msgfmt +GMSGFMT_015 = /usr/bin/msgfmt +GOBJECT_QUERY = gobject-query +GREP = /usr/local/bin/grep +GTKSPELL_CFLAGS = +GTKSPELL_LIBS = +GTK_CFLAGS = -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 +GTK_LIBS = -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype +GUI_CFLAGS = -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 +GUI_LIBS = -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype -Wl,--version-script,$(srcdir)/../version-script -lglib-2.0 -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0 +HAVE_ASPRINTF = 1 +HAVE_POSIX_PRINTF = 1 +HAVE_SNPRINTF = 1 +HAVE_VISIBILITY = 1 +HAVE_WPRINTF = 0 +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +INSTOBJEXT = .mo +INTLBISON = bison +INTLLIBS = +INTLOBJS = +INTL_LIBTOOL_SUFFIX_PREFIX = +INTL_MACOSX_LIBS = +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = -lgmodule-2.0 +LIBICONV = -liconv +LIBINTL = +LIBMULTITHREAD = -lpthread +LIBOBJS = +LIBPTH = +LIBPTH_PREFIX = +LIBS = -lX11 -lssl -lcrypto -ldl -Wl,--export-dynamic -pthread -lglib-2.0 +LIBSEXY_CFLAGS = +LIBSEXY_LIBS = +LIBTHREAD = +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBC = -lc +LTLIBICONV = -liconv +LTLIBINTL = +LTLIBMULTITHREAD = -lpthread +LTLIBOBJS = +LTLIBPTH = +LTLIBTHREAD = +MAINT = # +MAKEINFO = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run makeinfo +MKDIR_P = /bin/mkdir -p +MSGFMT = /usr/bin/msgfmt +MSGFMT_015 = /usr/bin/msgfmt +MSGMERGE = /usr/bin/msgmerge +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = xchat +PACKAGE_BUGREPORT = http://www.xchat.org/ +PACKAGE_NAME = XChat +PACKAGE_STRING = XChat 2.8.8 +PACKAGE_TARNAME = xchat +PACKAGE_URL = +PACKAGE_VERSION = 2.8.8 +PATH_SEPARATOR = : +PERL_CFLAGS = -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/lib/x86_64-linux-gnu/perl/5.26/CORE +PERL_LDFLAGS = -Wl,-E -fstack-protector-strong -L/usr/local/lib -L/usr/lib/x86_64-linux-gnu/perl/5.26/CORE -lperl -ldl -lm -lpthread -lcrypt +PKG_CONFIG = /usr/bin/pkg-config +PLUGIN_INCLUDES = -I$(top_srcdir)/plugins +POSUB = po +PRI_MACROS_BROKEN = 0 +PY_CFLAGS = -I/usr/include/python2.7 +PY_LIBS = -L/usr/lib/python2.7/config -lpython2.7 -lpthread -lutil +RANLIB = ranlib +SED = /bin/sed +SET_MAKE = +SHELL = /bin/bash +STRIP = strip +TCL_CFLAGS = -I/usr/include -I/usr/include/tcl8.6 +TCL_LIBS = -L/usr/lib/x86_64-linux-gnu -ltcl8.6 -ldl -lz -lpthread -lm +USE_INCLUDED_LIBINTL = no +USE_NLS = yes +VERSION = 2.8.8 +WINDRES = +WOE32 = no +WOE32DLL = no +XGETTEXT = /usr/bin/xgettext +XGETTEXT_015 = /usr/bin/xgettext +XGETTEXT_EXTRA_OPTIONS = +abs_builddir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/plugins/perl +abs_srcdir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/plugins/perl +abs_top_builddir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8 +abs_top_srcdir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8 +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = /usr/local +gdkpixbufcsourcepath = /usr/bin/gdk-pixbuf-csource +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/install-sh +libdir = $(xchatlibdir)/plugins +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +lt_ECHO = echo +mandir = ${datarootdir}/man +mkdir_p = /bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +perlpath = /usr/bin/perl +pkgconfigpath = /usr/bin/pkg-config +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +pythonpath = /usr/bin/python2 +sbindir = ${exec_prefix}/sbin +sedpath = /bin/sed +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../../ +top_builddir = ../.. +top_srcdir = ../.. +unamepath = /bin/uname +xchatlibdir = ${exec_prefix}/lib/xchat +EXTRA_DIST = alt_completion.pl xchat2-perldocs.html xchat2-perl.html generate_header Xchat.pm IRC.pm Pod/ +lib_LTLIBRARIES = perl.la +perl_la_SOURCES = perl.c +perl_la_LDFLAGS = -avoid-version -module +perl_la_LIBADD = $(PERL_LDFLAGS) +BUILT_SOURCES = xchat.pm.h irc.pm.h +#CFLAGS = -g -O2 -Wall -pipe -Wno-pointer-sign -funsigned-char -Wno-unused +INCLUDES = $(PERL_CFLAGS) $(COMMON_CFLAGS) -I$(srcdir)/.. +CLEANFILES = xchat.pm.h irc.pm.h +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign plugins/perl/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign plugins/perl/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +perl.la: $(perl_la_OBJECTS) $(perl_la_DEPENDENCIES) + $(perl_la_LINK) -rpath $(libdir) $(perl_la_OBJECTS) $(perl_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/perl.Plo + +.c.o: + depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ + $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ + $(am__mv) $$depbase.Tpo $$depbase.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(COMPILE) -c -o $@ $< + +.c.obj: + depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ + $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ + $(am__mv) $$depbase.Tpo $$depbase.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: + depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ + $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ + $(am__mv) $$depbase.Tpo $$depbase.Plo +# source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(LTLIBRARIES) +installdirs: + for dir in "$(DESTDIR)$(libdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +clean: clean-am + +clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-libLTLIBRARIES + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-libLTLIBRARIES + +.MAKE: all check install install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libLTLIBRARIES clean-libtool ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am \ + install-libLTLIBRARIES install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-libLTLIBRARIES + +xchat.pm.h irc.pm.h: Xchat.pm IRC.pm + perl generate_header + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/xchat-2.8.8/plugins/perl/Makefile.am b/xchat-2.8.8/plugins/perl/Makefile.am new file mode 100644 index 0000000..bbf9714 --- /dev/null +++ b/xchat-2.8.8/plugins/perl/Makefile.am @@ -0,0 +1,15 @@ + +EXTRA_DIST=alt_completion.pl xchat2-perldocs.html xchat2-perl.html generate_header Xchat.pm IRC.pm Pod/ + +libdir = $(xchatlibdir)/plugins + +lib_LTLIBRARIES = perl.la +perl_la_SOURCES = perl.c +perl_la_LDFLAGS = -avoid-version -module +perl_la_LIBADD = $(PERL_LDFLAGS) +BUILT_SOURCES = xchat.pm.h irc.pm.h +#CFLAGS = @CFLAGS@ -Wno-unused +INCLUDES = $(PERL_CFLAGS) $(COMMON_CFLAGS) -I$(srcdir)/.. +CLEANFILES = xchat.pm.h irc.pm.h +xchat.pm.h irc.pm.h: Xchat.pm IRC.pm + perl generate_header diff --git a/xchat-2.8.8/plugins/perl/Makefile.in b/xchat-2.8.8/plugins/perl/Makefile.in new file mode 100644 index 0000000..10286ac --- /dev/null +++ b/xchat-2.8.8/plugins/perl/Makefile.in @@ -0,0 +1,621 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = plugins/perl +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(libdir)" +LTLIBRARIES = $(lib_LTLIBRARIES) +am__DEPENDENCIES_1 = +perl_la_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_perl_la_OBJECTS = perl.lo +perl_la_OBJECTS = $(am_perl_la_OBJECTS) +perl_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(perl_la_LDFLAGS) \ + $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(perl_la_SOURCES) +DIST_SOURCES = $(perl_la_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +COMMON_CFLAGS = @COMMON_CFLAGS@ +COMMON_LIBS = @COMMON_LIBS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DATADIRNAME = @DATADIRNAME@ +DBUS_BINDING_TOOL = @DBUS_BINDING_TOOL@ +DBUS_CFLAGS = @DBUS_CFLAGS@ +DBUS_LIBS = @DBUS_LIBS@ +DBUS_SERVICES_DIR = @DBUS_SERVICES_DIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GCONFTOOL = @GCONFTOOL@ +GENCAT = @GENCAT@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GLIB_CFLAGS = @GLIB_CFLAGS@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GLIB_LIBS = @GLIB_LIBS@ +GLIB_MKENUMS = @GLIB_MKENUMS@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GOBJECT_QUERY = @GOBJECT_QUERY@ +GREP = @GREP@ +GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ +GTKSPELL_LIBS = @GTKSPELL_LIBS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_LIBS = @GTK_LIBS@ +GUI_CFLAGS = @GUI_CFLAGS@ +GUI_LIBS = @GUI_LIBS@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBSEXY_CFLAGS = @LIBSEXY_CFLAGS@ +LIBSEXY_LIBS = @LIBSEXY_LIBS@ +LIBTHREAD = @LIBTHREAD@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBC = @LTLIBC@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTHREAD = @LTLIBTHREAD@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL_CFLAGS = @PERL_CFLAGS@ +PERL_LDFLAGS = @PERL_LDFLAGS@ +PKG_CONFIG = @PKG_CONFIG@ +PLUGIN_INCLUDES = @PLUGIN_INCLUDES@ +POSUB = @POSUB@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +PY_CFLAGS = @PY_CFLAGS@ +PY_LIBS = @PY_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TCL_CFLAGS = @TCL_CFLAGS@ +TCL_LIBS = @TCL_LIBS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WOE32 = @WOE32@ +WOE32DLL = @WOE32DLL@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gdkpixbufcsourcepath = @gdkpixbufcsourcepath@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = $(xchatlibdir)/plugins +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +perlpath = @perlpath@ +pkgconfigpath = @pkgconfigpath@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pythonpath = @pythonpath@ +sbindir = @sbindir@ +sedpath = @sedpath@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +unamepath = @unamepath@ +xchatlibdir = @xchatlibdir@ +EXTRA_DIST = alt_completion.pl xchat2-perldocs.html xchat2-perl.html generate_header Xchat.pm IRC.pm Pod/ +lib_LTLIBRARIES = perl.la +perl_la_SOURCES = perl.c +perl_la_LDFLAGS = -avoid-version -module +perl_la_LIBADD = $(PERL_LDFLAGS) +BUILT_SOURCES = xchat.pm.h irc.pm.h +#CFLAGS = @CFLAGS@ -Wno-unused +INCLUDES = $(PERL_CFLAGS) $(COMMON_CFLAGS) -I$(srcdir)/.. +CLEANFILES = xchat.pm.h irc.pm.h +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign plugins/perl/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign plugins/perl/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +perl.la: $(perl_la_OBJECTS) $(perl_la_DEPENDENCIES) + $(perl_la_LINK) -rpath $(libdir) $(perl_la_OBJECTS) $(perl_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/perl.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(LTLIBRARIES) +installdirs: + for dir in "$(DESTDIR)$(libdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +clean: clean-am + +clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-libLTLIBRARIES + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-libLTLIBRARIES + +.MAKE: all check install install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libLTLIBRARIES clean-libtool ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am \ + install-libLTLIBRARIES install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-libLTLIBRARIES + +xchat.pm.h irc.pm.h: Xchat.pm IRC.pm + perl generate_header + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/xchat-2.8.8/plugins/perl/Pod/Pod/Html.pm b/xchat-2.8.8/plugins/perl/Pod/Pod/Html.pm new file mode 100644 index 0000000..92b392b --- /dev/null +++ b/xchat-2.8.8/plugins/perl/Pod/Pod/Html.pm @@ -0,0 +1,2364 @@ +package Pod::Html; +use strict; +require Exporter; + +use vars qw($VERSION @ISA @EXPORT @EXPORT_OK); +$VERSION = 1.08; +@ISA = qw(Exporter); +@EXPORT = qw(pod2html htmlify); +@EXPORT_OK = qw(anchorify); + +use Carp; +use Config; +use Cwd; +use File::Spec; +use File::Spec::Unix; +use Getopt::Long; + +use locale; # make \w work right in non-ASCII lands + +=head1 NAME + +Pod::Html - module to convert pod files to HTML + +=head1 SYNOPSIS + + use Pod::Html; + pod2html([options]); + +=head1 DESCRIPTION + +Converts files from pod format (see L) to HTML format. It +can automatically generate indexes and cross-references, and it keeps +a cache of things it knows how to cross-reference. + +=head1 FUNCTIONS + +=head2 pod2html + + pod2html("pod2html", + "--podpath=lib:ext:pod:vms", + "--podroot=/usr/src/perl", + "--htmlroot=/perl/nmanual", + "--libpods=perlfunc:perlguts:perlvar:perlrun:perlop", + "--recurse", + "--infile=foo.pod", + "--outfile=/perl/nmanual/foo.html"); + +pod2html takes the following arguments: + +=over 4 + +=item backlink + + --backlink="Back to Top" + +Adds "Back to Top" links in front of every C heading (except for +the first). By default, no backlinks are generated. + +=item cachedir + + --cachedir=name + +Creates the item and directory caches in the given directory. + +=item css + + --css=stylesheet + +Specify the URL of a cascading style sheet. Also disables all HTML/CSS +C + + + +$block +END_OF_HEAD + + # load/reload/validate/cache %Pages and %Items + get_cache( $Dircache, $Itemcache, \@Podpath, $Podroot, $Recurse ); + + # scan the pod for =item directives + scan_items( \%Local_Items, "", @poddata ); + + # put an index at the top of the file. note, if $Doindex is 0 we + # still generate an index, but surround it with an html comment. + # that way some other program can extract it if desired. + $index =~ s/--+/-/g; + + my $hr = ( $Doindex and $index ) ? qq(
    ) : ""; + + unless ($Doindex) { + $index = qq(\n); + } + + print HTML << "END_OF_INDEX"; + + +
    +

    +$index +$hr +
    + + +END_OF_INDEX + + # now convert this file + my $after_item; # set to true after an =item + my $need_dd = 0; + warn "Converting input file $Podfile\n" if $Verbose; + foreach my $i ( 0 .. $#poddata ) { + $_ = $poddata[$i]; + $Paragraph = $i + 1; + if (/^(=.*)/s) { # is it a pod directive? + $Ignore = 0; + $after_item = 0; + $need_dd = 0; + $_ = $1; + if (/^=begin\s+(\S+)\s*(.*)/si) { # =begin + process_begin( $1, $2 ); + } elsif (/^=end\s+(\S+)\s*(.*)/si) { # =end + process_end( $1, $2 ); + } elsif (/^=cut/) { # =cut + process_cut(); + } elsif (/^=pod/) { # =pod + process_pod(); + } else { + next if @Begin_Stack && $Begin_Stack[-1] ne 'html'; + + if (/^=(head[1-6])\s+(.*\S)/s) { # =head[1-6] heading + process_head( $1, $2, $Doindex && $index ); + } elsif (/^=item\s*(.*\S)?/sm) { # =item text + $need_dd = process_item($1); + $after_item = 1; + } elsif (/^=over\s*(.*)/) { # =over N + process_over(); + } elsif (/^=back/) { # =back + process_back($need_dd); + } elsif (/^=for\s+(\S+)\s*(.*)/si) { # =for + process_for( $1, $2 ); + } else { + /^=(\S*)\s*/; + warn "$0: $Podfile: unknown pod directive '$1' in " + . "paragraph $Paragraph. ignoring.\n" + unless $Quiet; + } + } + $Top = 0; + } else { + next if $Ignore; + next if @Begin_Stack && $Begin_Stack[-1] ne 'html'; + print HTML and next if @Begin_Stack && $Begin_Stack[-1] eq 'html'; + print HTML "
    \n" if $need_dd; + my $text = $_; + if ( $text =~ /\A\s+/ ) { + process_pre( \$text ); + print HTML "
    \n$text
    \n"; + + } else { + process_text( \$text ); + + # experimental: check for a paragraph where all lines + # have some ...\t...\t...\n pattern + if ( $text =~ /\t/ ) { + my @lines = split( "\n", $text ); + if ( @lines > 1 ) { + my $all = 2; + foreach my $line (@lines) { + if ( $line =~ /\S/ && $line !~ /\t/ ) { + $all--; + last if $all == 0; + } + } + if ( $all > 0 ) { + $text =~ s/\t+//g; + $text =~ s/^//gm; + $text = + '' + . $text + . '
    '; + } + } + } + ## end of experimental + + if ($after_item) { + $After_Lpar = 1; + } + print HTML "

    $text

    \n"; + } + print HTML "
    \n" if $need_dd; + $after_item = 0; + } + } + + # finish off any pending directives + finish_list(); + + # link to page index + print HTML "

    $Backlink

    \n" + if $Doindex + and $index + and $Backlink; + + print HTML < + + +END_OF_TAIL + + # close the html file + close(HTML); + + warn "Finished\n" if $Verbose; +} + +############################################################################## + +sub usage { + my $podfile = shift; + warn "$0: $podfile: @_\n" if @_; + die < --infile= --outfile= + --podpath=:...: --podroot= + --libpods=:...: --recurse --verbose --index + --netscape --norecurse --noindex --cachedir= + + --backlink - set text for "back to top" links (default: none). + --cachedir - directory for the item and directory cache files. + --css - stylesheet URL + --flush - flushes the item and directory caches. + --[no]header - produce block header/footer (default is no headers). + --help - prints this message. + --hiddendirs - search hidden directories in podpath + --htmldir - directory for resulting HTML files. + --htmlroot - http-server base directory from which all relative paths + in podpath stem (default is /). + --[no]index - generate an index at the top of the resulting html + (default behaviour). + --infile - filename for the pod to convert (input taken from stdin + by default). + --libpods - colon-separated list of pages to search for =item pod + directives in as targets of C<> and implicit links (empty + by default). note, these are not filenames, but rather + page names like those that appear in L<> links. + --outfile - filename for the resulting html file (output sent to + stdout by default). + --podpath - colon-separated list of directories containing library + pods (empty by default). + --podroot - filesystem base directory from which all relative paths + in podpath stem (default is .). + --[no]quiet - suppress some benign warning messages (default is off). + --[no]recurse - recurse on those subdirectories listed in podpath + (default behaviour). + --title - title that will appear in resulting html file. + --[no]verbose - self-explanatory (off by default). + --[no]netscape - deprecated, has no effect. for backwards compatibility only. + +END_OF_USAGE + +} + +sub parse_command_line { + my ( + $opt_backlink, $opt_cachedir, $opt_css, $opt_flush, + $opt_header, $opt_help, $opt_htmldir, $opt_htmlroot, + $opt_index, $opt_infile, $opt_libpods, $opt_netscape, + $opt_outfile, $opt_podpath, $opt_podroot, $opt_quiet, + $opt_recurse, $opt_title, $opt_verbose, $opt_hiddendirs + ); + + unshift @ARGV, split ' ', $Config{pod2html} if $Config{pod2html}; + my $result = GetOptions( + 'backlink=s' => \$opt_backlink, + 'cachedir=s' => \$opt_cachedir, + 'css=s' => \$opt_css, + 'flush' => \$opt_flush, + 'header!' => \$opt_header, + 'help' => \$opt_help, + 'hiddendirs!' => \$opt_hiddendirs, + 'htmldir=s' => \$opt_htmldir, + 'htmlroot=s' => \$opt_htmlroot, + 'index!' => \$opt_index, + 'infile=s' => \$opt_infile, + 'libpods=s' => \$opt_libpods, + 'netscape!' => \$opt_netscape, + 'outfile=s' => \$opt_outfile, + 'podpath=s' => \$opt_podpath, + 'podroot=s' => \$opt_podroot, + 'quiet!' => \$opt_quiet, + 'recurse!' => \$opt_recurse, + 'title=s' => \$opt_title, + 'verbose!' => \$opt_verbose, + ); + usage( "-", "invalid parameters" ) if not $result; + + usage("-") if defined $opt_help; # see if the user asked for help + $opt_help = ""; # just to make -w shut-up. + + @Podpath = split( ":", $opt_podpath ) if defined $opt_podpath; + @Libpods = split( ":", $opt_libpods ) if defined $opt_libpods; + + $Backlink = $opt_backlink if defined $opt_backlink; + $Cachedir = $opt_cachedir if defined $opt_cachedir; + $Css = $opt_css if defined $opt_css; + $Header = $opt_header if defined $opt_header; + $Htmldir = $opt_htmldir if defined $opt_htmldir; + $Htmlroot = $opt_htmlroot if defined $opt_htmlroot; + $Doindex = $opt_index if defined $opt_index; + $Podfile = $opt_infile if defined $opt_infile; + $HiddenDirs = $opt_hiddendirs if defined $opt_hiddendirs; + $Htmlfile = $opt_outfile if defined $opt_outfile; + $Podroot = $opt_podroot if defined $opt_podroot; + $Quiet = $opt_quiet if defined $opt_quiet; + $Recurse = $opt_recurse if defined $opt_recurse; + $Title = $opt_title if defined $opt_title; + $Verbose = $opt_verbose if defined $opt_verbose; + + warn "Flushing item and directory caches\n" + if $opt_verbose && defined $opt_flush; + $Dircache = "$Cachedir/pod2htmd.tmp"; + $Itemcache = "$Cachedir/pod2htmi.tmp"; + if ( defined $opt_flush ) { + 1 while unlink( $Dircache, $Itemcache ); + } +} + +my $Saved_Cache_Key; + +sub get_cache { + my ( $dircache, $itemcache, $podpath, $podroot, $recurse ) = @_; + my @cache_key_args = @_; + + # A first-level cache: + # Don't bother reading the cache files if they still apply + # and haven't changed since we last read them. + + my $this_cache_key = cache_key(@cache_key_args); + + return if $Saved_Cache_Key and $this_cache_key eq $Saved_Cache_Key; + + # load the cache of %Pages and %Items if possible. $tests will be + # non-zero if successful. + my $tests = 0; + if ( -f $dircache && -f $itemcache ) { + warn "scanning for item cache\n" if $Verbose; + $tests = load_cache( $dircache, $itemcache, $podpath, $podroot ); + } + + # if we didn't succeed in loading the cache then we must (re)build + # %Pages and %Items. + if ( !$tests ) { + warn "scanning directories in pod-path\n" if $Verbose; + scan_podpath( $podroot, $recurse, 0 ); + } + $Saved_Cache_Key = cache_key(@cache_key_args); +} + +sub cache_key { + my ( $dircache, $itemcache, $podpath, $podroot, $recurse ) = @_; + return join( '!', + $dircache, $itemcache, $recurse, @$podpath, $podroot, stat($dircache), + stat($itemcache) ); +} + +# +# load_cache - tries to find if the caches stored in $dircache and $itemcache +# are valid caches of %Pages and %Items. if they are valid then it loads +# them and returns a non-zero value. +# +sub load_cache { + my ( $dircache, $itemcache, $podpath, $podroot ) = @_; + my ($tests); + local $_; + + $tests = 0; + + open( CACHE, "<$itemcache" ) + || die "$0: error opening $itemcache for reading: $!\n"; + $/ = "\n"; + + # is it the same podpath? + $_ = ; + chomp($_); + $tests++ if ( join( ":", @$podpath ) eq $_ ); + + # is it the same podroot? + $_ = ; + chomp($_); + $tests++ if ( $podroot eq $_ ); + + # load the cache if its good + if ( $tests != 2 ) { + close(CACHE); + return 0; + } + + warn "loading item cache\n" if $Verbose; + while () { + /(.*?) (.*)$/; + $Items{$1} = $2; + } + close(CACHE); + + warn "scanning for directory cache\n" if $Verbose; + open( CACHE, "<$dircache" ) + || die "$0: error opening $dircache for reading: $!\n"; + $/ = "\n"; + $tests = 0; + + # is it the same podpath? + $_ = ; + chomp($_); + $tests++ if ( join( ":", @$podpath ) eq $_ ); + + # is it the same podroot? + $_ = ; + chomp($_); + $tests++ if ( $podroot eq $_ ); + + # load the cache if its good + if ( $tests != 2 ) { + close(CACHE); + return 0; + } + + warn "loading directory cache\n" if $Verbose; + while () { + /(.*?) (.*)$/; + $Pages{$1} = $2; + } + + close(CACHE); + + return 1; +} + +# +# scan_podpath - scans the directories specified in @podpath for directories, +# .pod files, and .pm files. it also scans the pod files specified in +# @Libpods for =item directives. +# +sub scan_podpath { + my ( $podroot, $recurse, $append ) = @_; + my ( $pwd, $dir ); + my ( $libpod, $dirname, $pod, @files, @poddata ); + + unless ($append) { + %Items = (); + %Pages = (); + } + + # scan each directory listed in @Podpath + $pwd = getcwd(); + chdir($podroot) + || die "$0: error changing to directory $podroot: $!\n"; + foreach $dir (@Podpath) { + scan_dir( $dir, $recurse ); + } + + # scan the pods listed in @Libpods for =item directives + foreach $libpod (@Libpods) { + + # if the page isn't defined then we won't know where to find it + # on the system. + next unless defined $Pages{$libpod} && $Pages{$libpod}; + + # if there is a directory then use the .pod and .pm files within it. + # NOTE: Only finds the first so-named directory in the tree. + # if ($Pages{$libpod} =~ /([^:]*[^(\.pod|\.pm)]):/) { + if ( $Pages{$libpod} =~ /([^:]*(?; + close(POD); + clean_data( \@poddata ); + + scan_items( \%Items, "$dirname/$pod", @poddata ); + } + + # use the names of files as =item directives too. +### Don't think this should be done this way - confuses issues.(WL) +### foreach $pod (@files) { +### $pod =~ /^(.*)(\.pod|\.pm)$/; +### $Items{$1} = "$dirname/$1.html" if $1; +### } + } elsif ( $Pages{$libpod} =~ /([^:]*\.pod):/ + || $Pages{$libpod} =~ /([^:]*\.pm):/ ) + { + + # scan the .pod or .pm file for =item directives + $pod = $1; + open( POD, "<$pod" ) + || die "$0: error opening $pod for input: $!\n"; + @poddata = ; + close(POD); + clean_data( \@poddata ); + + scan_items( \%Items, "$pod", @poddata ); + } else { + warn "$0: shouldn't be here (line " . __LINE__ . "\n" unless $Quiet; + } + } + @poddata = (); # clean-up a bit + + chdir($pwd) + || die "$0: error changing to directory $pwd: $!\n"; + + # cache the item list for later use + warn "caching items for later use\n" if $Verbose; + open( CACHE, ">$Itemcache" ) + || die "$0: error open $Itemcache for writing: $!\n"; + + print CACHE join( ":", @Podpath ) . "\n$podroot\n"; + foreach my $key ( keys %Items ) { + print CACHE "$key $Items{$key}\n"; + } + + close(CACHE); + + # cache the directory list for later use + warn "caching directories for later use\n" if $Verbose; + open( CACHE, ">$Dircache" ) + || die "$0: error open $Dircache for writing: $!\n"; + + print CACHE join( ":", @Podpath ) . "\n$podroot\n"; + foreach my $key ( keys %Pages ) { + print CACHE "$key $Pages{$key}\n"; + } + + close(CACHE); +} + +# +# scan_dir - scans the directory specified in $dir for subdirectories, .pod +# files, and .pm files. notes those that it finds. this information will +# be used later in order to figure out where the pages specified in L<> +# links are on the filesystem. +# +sub scan_dir { + my ( $dir, $recurse ) = @_; + my ( $t, @subdirs, @pods, $pod, $dirname, @dirs ); + local $_; + + @subdirs = (); + @pods = (); + + opendir( DIR, $dir ) + || die "$0: error opening directory $dir: $!\n"; + while ( defined( $_ = readdir(DIR) ) ) { + if ( -d "$dir/$_" + && $_ ne "." + && $_ ne ".." + && ( $HiddenDirs || !/^\./ ) ) + { # directory + $Pages{$_} = "" unless defined $Pages{$_}; + $Pages{$_} .= "$dir/$_:"; + push( @subdirs, $_ ); + } elsif (/\.pod\z/) { # .pod + s/\.pod\z//; + $Pages{$_} = "" unless defined $Pages{$_}; + $Pages{$_} .= "$dir/$_.pod:"; + push( @pods, "$dir/$_.pod" ); + } elsif (/\.html\z/) { # .html + s/\.html\z//; + $Pages{$_} = "" unless defined $Pages{$_}; + $Pages{$_} .= "$dir/$_.pod:"; + } elsif (/\.pm\z/) { # .pm + s/\.pm\z//; + $Pages{$_} = "" unless defined $Pages{$_}; + $Pages{$_} .= "$dir/$_.pm:"; + push( @pods, "$dir/$_.pm" ); + } elsif ( -T "$dir/$_" ) { # script(?) + local *F; + if ( open( F, "$dir/$_" ) ) { + my $line; + while ( defined( $line = ) ) { + if ( $line =~ /^=(?:pod|head1)/ ) { + $Pages{$_} = "" unless defined $Pages{$_}; + $Pages{$_} .= "$dir/$_.pod:"; + last; + } + } + close(F); + } + } + } + closedir(DIR); + + # recurse on the subdirectories if necessary + if ($recurse) { + foreach my $subdir (@subdirs) { + scan_dir( "$dir/$subdir", $recurse ); + } + } +} + +# +# scan_headings - scan a pod file for head[1-6] tags, note the tags, and +# build an index. +# +sub scan_headings { + my ( $sections, @data ) = @_; + my ( $tag, $which_head, $otitle, $listdepth, $index ); + + local $Ignore = 0; + + $listdepth = 0; + $index = ""; + + # scan for =head directives, note their name, and build an index + # pointing to each of them. + foreach my $line (@data) { + if ( $line =~ /^=(head)([1-6])\s+(.*)/ ) { + ( $tag, $which_head, $otitle ) = ( $1, $2, $3 ); + + my $title = depod($otitle); + my $name = anchorify($title); + $$sections{$name} = 1; + $title = process_text( \$otitle ); + + while ( $which_head != $listdepth ) { + if ( $which_head > $listdepth ) { + $index .= "\n" + . ( "\t" x ($listdepth) ) + . ( $listdepth > 0 ? qq{
  • \n} + . "\t"x($listdepth + 1): "" ) + . "
      "; + $listdepth++; + } elsif ( $which_head < $listdepth ) { + $listdepth--; + $index .= "\n" + . ( "\t" x $listdepth ) + . ( $listdepth > 0 ? "\t" : "" ) + . "
    " + . ( $listdepth >= 0 ? "\n" . ("\t"x$listdepth) + . "
  • " : "" ) + . "\n"; + } + } + + $index .= "\n" + . ( "\t" x $listdepth ) . "
  • " + . "" + . $title + . "
  • "; + } + } + + # finish off the lists + while ( $listdepth-- ) { + $index .= "\n" . ( "\t" x $listdepth ) + . ($listdepth > 0 ? "\t" : "") + ."\n" + . ($listdepth > 0 ? ("\t" x $listdepth) . "" : "" ); + } + + # get rid of bogus lists + $index =~ s,\t*
      \s*
    \n,,g; + + return $index; +} + +# +# scan_items - scans the pod specified by $pod for =item directives. we +# will use this information later on in resolving C<> links. +# +sub scan_items { + my ( $itemref, $pod, @poddata ) = @_; + my ( $i, $item ); + local $_; + + $pod =~ s/\.pod\z//; + $pod .= ".html" if $pod; + + foreach $i ( 0 .. $#poddata ) { + my $txt = depod( $poddata[$i] ); + + # figure out what kind of item it is. + # Build string for referencing this item. + if ( $txt =~ /\A=item\s+\*\s*(.*)\Z/s ) { # bullet + next unless $1; + $item = $1; + } elsif ( $txt =~ /\A=item\s+(?>\d+\.?)\s*(.*)\Z/s ) { # numbered list + $item = $1; + } elsif ( $txt =~ /\A=item\s+(.*)\Z/s ) { # plain item + $item = $1; + } else { + next; + } + my $fid = fragment_id($item); + $$itemref{$fid} = "$pod" if $fid; + } +} + +# +# process_head - convert a pod head[1-6] tag and convert it to HTML format. +# +sub process_head { + my ( $tag, $heading, $hasindex ) = @_; + + # figure out the level of the =head + $tag =~ /head([1-6])/; + my $level = $1; + + if ($Listlevel) { + warn +"$0: $Podfile: unterminated list at =head in paragraph $Paragraph. ignoring.\n" + unless $Quiet; + while ($Listlevel) { + process_back(); + } + } + + print HTML "

    \n"; + if ( $level == 1 && !$Top ) { + print HTML "$Backlink\n" + if $hasindex and $Backlink; + print HTML "

    \n
    \n"; + } else { + print HTML "

    \n"; + } + + my $name = anchorify( depod($heading) ); + my $convert = process_text( \$heading ); + $convert =~ s{]+>}{}g; + print HTML "$convert\n"; +} + +# +# emit_item_tag - print an =item's text +# Note: The global $EmittedItem is used for inhibiting self-references. +# +my $EmittedItem; + +sub emit_item_tag($$$) { + my ( $otext, $text, $compact ) = @_; + my $item = fragment_id( depod($text), -generate ); + Carp::confess( "Undefined fragment '$text' (" + . depod($text) + . ") from fragment_id() in emit_item_tag() in $Podfile" ) + if !defined $item; + $EmittedItem = $item; + ### print STDERR "emit_item_tag=$item ($text)\n"; + + print HTML ''; + if ( $Items_Named{$item}++ ) { + print HTML process_text( \$otext ); + } else { + my $name = $item; + $name = anchorify($name); + print HTML +#qq{}, + process_text( \$otext ), + # '' + ; + } + print HTML "\n"; + undef($EmittedItem); +} + +sub emit_li { + my ($tag) = @_; + if ( $Items_Seen[$Listlevel]++ == 0 ) { + push( @Listend, "" ); + print HTML "<$tag>\n"; + } + my $emitted = $tag eq 'dl' ? 'dt' : 'li'; + print HTML "<$emitted>"; + return $emitted; +} + +# +# process_item - convert a pod item tag and convert it to HTML format. +# +sub process_item { + my ($otext) = @_; + my $need_dd = 0; # set to 1 if we need a
    after an item + + # lots of documents start a list without doing an =over. this is + # bad! but, the proper thing to do seems to be to just assume + # they did do an =over. so warn them once and then continue. + if ( $Listlevel == 0 ) { + warn +"$0: $Podfile: unexpected =item directive in paragraph $Paragraph. ignoring.\n" + unless $Quiet; + process_over(); + } + + # formatting: insert a paragraph if preceding item has >1 paragraph + if ($After_Lpar) { + print HTML $need_dd ? "\n" : "\n" if $After_Lpar; + $After_Lpar = 0; + } + + # remove formatting instructions from the text + my $text = depod($otext); + + my $emitted; # the tag actually emitted, used for closing + + # all the list variants: + if ( $text =~ /\A\*/ ) { # bullet + $emitted = emit_li('ul'); + if ( $text =~ /\A\*\s+(\S.*)\Z/s ) { # with additional text + my $tag = $1; + $otext =~ s/\A\*\s+//; + emit_item_tag( $otext, $tag, 1 ); + } + print HTML "" + } elsif ( $text =~ /\A\d+/ ) { # numbered list + $emitted = emit_li('ol'); + if ( $text =~ /\A(?>\d+\.?)\s*(\S.*)\Z/s ) { # with additional text + my $tag = $1; + $otext =~ s/\A\d+\.?\s*//; + emit_item_tag( $otext, $tag, 1 ); + } + print HTML ""; + } else { # definition list + $emitted = emit_li('dl'); + if ( $text =~ /\A(.+)\Z/s ) { # should have text + emit_item_tag( $otext, $text, 1 ); + } + $need_dd = 1; + } + print HTML "\n"; + return $need_dd; +} + +# +# process_over - process a pod over tag and start a corresponding HTML list. +# +sub process_over { + + # start a new list + $Listlevel++; + push( @Items_Seen, 0 ); + $After_Lpar = 0; +} + +# +# process_back - process a pod back tag and convert it to HTML format. +# +sub process_back { + my $need_dd = shift; + if ( $Listlevel == 0 ) { + warn +"$0: $Podfile: unexpected =back directive in paragraph $Paragraph. ignoring.\n" + unless $Quiet; + return; + } + + # close off the list. note, I check to see if $Listend[$Listlevel] is + # defined because an =item directive may have never appeared and thus + # $Listend[$Listlevel] may have never been initialized. + $Listlevel--; + if ( defined $Listend[$Listlevel] ) { + print HTML $need_dd ? "\n" : "\n" if $After_Lpar; + print HTML $Listend[$Listlevel]; + print HTML "\n"; + pop(@Listend); + } + $After_Lpar = 0; + + # clean up item count + pop(@Items_Seen); +} + +# +# process_cut - process a pod cut tag, thus start ignoring pod directives. +# +sub process_cut { + $Ignore = 1; +} + +# +# process_pod - process a pod tag, thus stop ignoring pod directives +# until we see a corresponding cut. +# +sub process_pod { + + # no need to set $Ignore to 0 cause the main loop did it +} + +# +# process_for - process a =for pod tag. if it's for html, spit +# it out verbatim, if illustration, center it, otherwise ignore it. +# +sub process_for { + my ( $whom, $text ) = @_; + if ( $whom =~ /^(pod2)?html$/i ) { + print HTML $text; + } elsif ( $whom =~ /^illustration$/i ) { + 1 while chomp $text; + for my $ext (qw[.png .gif .jpeg .jpg .tga .pcl .bmp]) { + $text .= $ext, last if -r "$text$ext"; + } + print HTML +qq{

    $text illustration

    }; + } +} + +# +# process_begin - process a =begin pod tag. this pushes +# whom we're beginning on the begin stack. if there's a +# begin stack, we only print if it us. +# +sub process_begin { + my ( $whom, $text ) = @_; + $whom = lc($whom); + push( @Begin_Stack, $whom ); + if ( $whom =~ /^(pod2)?html$/ ) { + print HTML $text if $text; + } +} + +# +# process_end - process a =end pod tag. pop the +# begin stack. die if we're mismatched. +# +sub process_end { + my ( $whom, $text ) = @_; + $whom = lc($whom); + if ( !defined $Begin_Stack[-1] or $Begin_Stack[-1] ne $whom ) { + Carp::confess( + "Unmatched begin/end at chunk $Paragraph in pod $Podfile\n"); + } + pop(@Begin_Stack); +} + +# +# process_pre - indented paragraph, made into
    
    +#
    +sub process_pre {
    +	my ($text) = @_;
    +	my ($rest);
    +	return if $Ignore;
    +
    +	$rest = $$text;
    +
    +	# insert spaces in place of tabs
    +	$rest =~ s#(.+)#
    +	    my $line = $1;
    +            1 while $line =~ s/(\t+)/' ' x ((length($1) * 8) - $-[0] % 8)/e;
    +	    $line;
    +	#eg;
    +
    +	# convert some special chars to HTML escapes
    +	$rest = html_escape($rest);
    +
    +	# try and create links for all occurrences of perl.* within
    +	# the preformatted text.
    +	$rest =~ s{
    +	         (\s*)(perl\w+)
    +	      }{
    +		 if ( defined $Pages{$2} ){	# is a link
    +		     qq($1$2);
    +		 } elsif (defined $Pages{dosify($2)}) {	# is a link
    +		     qq($1$2);
    +		 } else {
    +		     "$1$2";
    +		 }
    +	      }xeg;
    +	$rest =~ s{
    +		 ('
    +	|			# or:
    +	    [$punc]*		# 0 or more punctuation
    +	    (?:			#   followed
    +		[^$any]		#   by a non-url char
    +	    |			#   or
    +		$		#   end of the string
    +	    )			#
    +	|			# or else
    +	    $			#   then end of the string
    +        )
    +      }{$1}igox;
    +
    +	# text should be as it is (verbatim)
    +	$$text = $rest;
    +}
    +
    +#
    +# pure text processing
    +#
    +# pure_text/inIS_text: differ with respect to automatic C<> recognition.
    +# we don't want this to happen within IS
    +#
    +sub pure_text($) {
    +	my $text = shift();
    +	process_puretext( $text, 1 );
    +}
    +
    +sub inIS_text($) {
    +	my $text = shift();
    +	process_puretext( $text, 0 );
    +}
    +
    +#
    +# process_puretext - process pure text (without pod-escapes) converting
    +#  double-quotes and handling implicit C<> links.
    +#
    +sub process_puretext {
    +	my ( $text, $notinIS ) = @_;
    +
    +	## Guessing at func() or [\$\@%&]*var references in plain text is destined
    +	## to produce some strange looking ref's. uncomment to disable:
    +	## $notinIS = 0;
    +
    +	my ( @words, $lead, $trail );
    +
    +	# keep track of leading and trailing white-space
    +	$lead  = ( $text =~ s/\A(\s+)//s ? $1 : "" );
    +	$trail = ( $text =~ s/(\s+)\Z//s ? $1 : "" );
    +
    +	# split at space/non-space boundaries
    +	@words = split( /(?<=\s)(?=\S)|(?<=\S)(?=\s)/, $text );
    +
    +	# process each word individually
    +	foreach my $word (@words) {
    +
    +		# skip space runs
    +		next if $word =~ /^\s*$/;
    +
    +		# see if we can infer a link or a function call
    +		#
    +		# NOTE: This is a word based search, it won't automatically
    +		# mark "substr($var, 1, 2)" because the 1st word would be "substr($var"
    +		# User has to enclose those with proper C<>
    +
    +		if (
    +			   $notinIS
    +			&& $word =~ m/
    +		^([a-z_]{2,})                 # The function name
    +		\(
    +		    ([0-9][a-z]*              # Manual page(1) or page(1M)
    +		    |[^)]*[\$\@\%][^)]+       # ($foo), (1, @foo), (%hash)
    +		    |                         # ()
    +		    )
    +		\)
    +		([.,;]?)$                     # a possible punctuation follows
    +	    /xi
    +			)
    +		{
    +
    +			# has parenthesis so should have been a C<> ref
    +			## try for a pagename (perlXXX(1))?
    +			my ( $func, $args, $rest ) = ( $1, $2, $3 || '' );
    +			if ( $args =~ /^\d+$/ ) {
    +				my $url = page_sect( $word, '' );
    +				if ( defined $url ) {
    +					$word =
    +qq(the $word manpage$rest);
    +					next;
    +				}
    +			}
    +			## try function name for a link, append tt'ed argument list
    +			$word = emit_C( $func, '', "($args)" ) . $rest;
    +
    +#### disabled. either all (including $\W, $\w+{.*} etc.) or nothing.
    +##      } elsif( $notinIS && $word =~ /^[\$\@%&*]+\w+$/) {
    +##	    # perl variables, should be a C<> ref
    +##	    $word = emit_C( $word );
    +
    +		} elsif ( $word =~ m,^\w+://\w, ) {
    +
    +			# looks like a URL
    +			# Don't relativize it: leave it as the author intended
    +			$word = qq($word);
    +		} elsif ( $word =~ /[\w.-]+\@[\w-]+\.\w/ ) {
    +
    +			# looks like an e-mail address
    +			my ( $w1, $w2, $w3 ) = ( "", $word, "" );
    +			( $w1, $w2, $w3 ) = ( "(", $1, ")$2" ) if $word =~ /^\((.*?)\)(,?)/;
    +			( $w1, $w2, $w3 ) = ( "<", $1, ">$2" )
    +				if $word =~ /^<(.*?)>(,?)/;
    +			$word = qq($w1$w2$w3);
    +		} else {
    +			$word = html_escape($word) if $word =~ /["&<>]/;
    +		}
    +	}
    +
    +	# put everything back together
    +	return $lead . join( '', @words ) . $trail;
    +}
    +
    +#
    +# process_text - handles plaintext that appears in the input pod file.
    +# there may be pod commands embedded within the text so those must be
    +# converted to html commands.
    +#
    +
    +sub process_text1($$;$$);
    +sub pattern ($) { $_[0] ? '\s+' . ( '>' x ( $_[0] + 1 ) ) : '>' }
    +sub closing ($) { local ($_) = shift; ( defined && s/\s+\z// ) ? length : 0 }
    +
    +sub process_text {
    +	return if $Ignore;
    +	my ($tref) = @_;
    +	my $res = process_text1( 0, $tref );
    +	$res =~ s/\s+$//s;
    +	$$tref = $res;
    +}
    +
    +sub process_text_rfc_links {
    +	my $text = shift;
    +
    +	# For every "RFCnnnn" or "RFC nnn", link it to the authoritative
    +	# ource. Do not use the /i modifier here. Require "RFC" to be written in
    +	#  in capital letters.
    +
    +	$text =~ s{
    +	(?<=[^<>[:alpha:]])           # Make sure this is not an URL already
    +	(RFC\s*([0-9]{1,5}))(?![0-9]) # max 5 digits
    +    }
    +    {$1}gx;
    +
    +	$text;
    +}
    +
    +sub process_text1($$;$$) {
    +	my ( $lev, $rstr, $func, $closing ) = @_;
    +	my $res = '';
    +
    +	unless ( defined $func ) {
    +		$func = '';
    +		$lev++;
    +	}
    +
    +	if ( $func eq 'B' ) {
    +
    +		# B - boldface
    +		$res = '' . process_text1( $lev, $rstr ) . '';
    +
    +	} elsif ( $func eq 'C' ) {
    +
    +		# C - can be a ref or 
    +		# need to extract text
    +		my $par = go_ahead( $rstr, 'C', $closing );
    +
    +		## clean-up of the link target
    +		my $text = depod($par);
    +
    +		### my $x = $par =~ /[BI]call emit_C($par) lev=$lev, par with BI=$x\n";
    +
    +		$res = emit_C( $text, $lev > 1 || ( $par =~ /[BI] - convert to character
    +		$$rstr =~ s/^([^>]*)>//;
    +		my $escape = $1;
    +		$escape =~ s/^(\d+|X[\dA-F]+)$/#$1/i;
    +		$res = "&$escape;";
    +
    +	} elsif ( $func eq 'F' ) {
    +
    +		# F - italicize
    +		$res = '' . process_text1( $lev, $rstr ) . '';
    +
    +	} elsif ( $func eq 'I' ) {
    +
    +		# I - italicize
    +		$res = '' . process_text1( $lev, $rstr ) . '';
    +
    +	} elsif ( $func eq 'L' ) {
    +
    +		# L - link
    +		## L => produce text, use cross-ref for linking
    +		## L => make text from cross-ref
    +		## need to extract text
    +		my $par = go_ahead( $rstr, 'L', $closing );
    +
    +		# some L<>'s that shouldn't be:
    +		# a) full-blown URL's are emitted as-is
    +		if ( $par =~ m{^\w+://}s ) {
    +			return make_URL_href($par);
    +		}
    +
    +		# b) C<...> is stripped and treated as C<>
    +		if ( $par =~ /^C<(.*)>$/ ) {
    +			my $text = depod($1);
    +			return emit_C( $text, $lev > 1 || ( $par =~ /[BI] L<$par> to page $page, ident $ident\n";
    +
    +		} elsif ( $par =~ m{^(.*?)/"?(.*?)"?$} ) {    # [name]/"section"
    +			    # even though this should be a "section", we go for ident first
    +			( $page, $ident ) = ( $1, $2 );
    +			### print STDERR "--> L<$par> to page $page, section $section\n";
    +
    +		} elsif ( $par =~ /\s/ ) {  # this must be a section with missing quotes
    +			( $page, $section ) = ( '', $par );
    +			### print STDERR "--> L<$par> to void page, section $section\n";
    +
    +		} else {
    +			( $page, $section ) = ( $par, '' );
    +			### print STDERR "--> L<$par> to page $par, void section\n";
    +		}
    +
    +		# now, either $section or $ident is defined. the convoluted logic
    +		# below tries to resolve L<> according to what the user specified.
    +		# failing this, we try to find the next best thing...
    +		my ( $url, $ltext, $fid );
    +
    +	RESOLVE: {
    +			if ( defined $ident ) {
    +				## try to resolve $ident as an item
    +				( $url, $fid ) = coderef( $page, $ident );
    +				if ($url) {
    +					if ( !defined($linktext) ) {
    +						$linktext = $ident;
    +						$linktext .= " in " if $ident && $page;
    +						$linktext .= "the $page manpage" if $page;
    +					}
    +					###  print STDERR "got coderef url=$url\n";
    +					last RESOLVE;
    +				}
    +				## no luck: go for a section (auto-quoting!)
    +				$section = $ident;
    +			}
    +			## now go for a section
    +			my $htmlsection = htmlify($section);
    +			$url = page_sect( $page, $htmlsection );
    +			if ($url) {
    +				if ( !defined($linktext) ) {
    +					$linktext = $section;
    +					$linktext .= " in " if $section && $page;
    +					$linktext .= "the $page manpage" if $page;
    +				}
    +				### print STDERR "got page/section url=$url\n";
    +				last RESOLVE;
    +			}
    +			## no luck: go for an ident
    +			if ($section) {
    +				$ident = $section;
    +			} else {
    +				$ident = $page;
    +				$page  = undef();
    +			}
    +			( $url, $fid ) = coderef( $page, $ident );
    +			if ($url) {
    +				if ( !defined($linktext) ) {
    +					$linktext = $ident;
    +					$linktext .= " in " if $ident && $page;
    +					$linktext .= "the $page manpage" if $page;
    +				}
    +				### print STDERR "got section=>coderef url=$url\n";
    +				last RESOLVE;
    +			}
    +
    +			# warning; show some text.
    +			$linktext = $opar unless defined $linktext;
    +			warn
    +"$0: $Podfile: cannot resolve L<$opar> in paragraph $Paragraph.\n"
    +				unless $Quiet;
    +		}
    +
    +		# now we have a URL or just plain code
    +		$$rstr = $linktext . '>' . $$rstr;
    +		if ( defined($url) ) {
    +			$res = "" . process_text1( $lev, $rstr ) . '';
    +		} else {
    +			$res = '' . process_text1( $lev, $rstr ) . '';
    +		}
    +
    +	} elsif ( $func eq 'S' ) {
    +
    +		# S - non-breaking spaces
    +		$res = process_text1( $lev, $rstr );
    +		$res =~ s/ / /g;
    +
    +	} elsif ( $func eq 'X' ) {
    +
    +		# X<> - ignore
    +		warn "$0: $Podfile: invalid X<> in paragraph $Paragraph.\n"
    +			unless $$rstr =~ s/^[^>]*>//
    +				or $Quiet;
    +	} elsif ( $func eq 'Z' ) {
    +
    +		# Z<> - empty
    +		warn "$0: $Podfile: invalid Z<> in paragraph $Paragraph.\n"
    +			unless $$rstr =~ s/^>//
    +				or $Quiet;
    +
    +	} else {
    +		my $term = pattern $closing;
    +		while ( $$rstr =~ s/\A(.*?)(([BCEFILSXZ])<(<+[^\S\n]+)?|$term)//s ) {
    +
    +			# all others: either recurse into new function or
    +			# terminate at closing angle bracket(s)
    +			my $pt = $1;
    +			$pt .= $2 if !$3 && $lev == 1;
    +			$res .= $lev == 1 ? pure_text($pt) : inIS_text($pt);
    +			return $res if !$3 && $lev > 1;
    +			if ($3) {
    +				$res .= process_text1( $lev, $rstr, $3, closing $4 );
    +			}
    +		}
    +		if ( $lev == 1 ) {
    +			$res .= pure_text($$rstr);
    +		} elsif ( !$Quiet ) {
    +			my $snippet = substr( $$rstr, 0, 60 );
    +			warn
    +"$0: $Podfile: undelimited $func<> in paragraph $Paragraph: '$snippet'.\n"
    +
    +		}
    +		$res = process_text_rfc_links($res);
    +	}
    +	return $res;
    +}
    +
    +#
    +# go_ahead: extract text of an IS (can be nested)
    +#
    +sub go_ahead($$$) {
    +	my ( $rstr, $func, $closing ) = @_;
    +	my $res     = '';
    +	my @closing = ($closing);
    +	while ( $$rstr =~
    +		s/\A(.*?)(([BCEFILSXZ])<(<+\s+)?|@{[pattern $closing[0]]})//s )
    +	{
    +		$res .= $1;
    +		unless ($3) {
    +			shift @closing;
    +			return $res unless @closing;
    +		} else {
    +			unshift @closing, closing $4;
    +		}
    +		$res .= $2;
    +	}
    +	unless ($Quiet) {
    +		my $snippet = substr( $$rstr, 0, 60 );
    +		warn
    +"$0: $Podfile: undelimited $func<> in paragraph $Paragraph (go_ahead): '$snippet'.\n";
    +	}
    +	return $res;
    +}
    +
    +#
    +# emit_C - output result of C
    +#    $text is the depod-ed text
    +#
    +sub emit_C($;$$) {
    +	my ( $text, $nocode, $args ) = @_;
    +	$args = '' unless defined $args;
    +	my $res;
    +	my ( $url, $fid ) = coderef( undef(), $text );
    +
    +	# need HTML-safe text
    +	my $linktext = html_escape("$text$args");
    +
    +	if ( $text !~ /^[\$@%]/
    +		&& defined($url)
    +		&& ( !defined($EmittedItem) || $EmittedItem ne $fid ) )
    +	{
    +		$res = "$linktext";
    +	} elsif ( 0 && $nocode ) {
    +		$res = $linktext;
    +	} else {
    +		$res = "$linktext";
    +	}
    +	return $res;
    +}
    +
    +#
    +# html_escape: make text safe for HTML
    +#
    +sub html_escape {
    +	my $rest = $_[0];
    +	$rest =~ s/&/&/g;
    +	$rest =~ s//>/g;
    +	$rest =~ s/"/"/g;
    +
    +	# ' is only in XHTML, not HTML4.  Be conservative
    +	#$rest   =~ s/'/'/g;
    +	return $rest;
    +}
    +
    +#
    +# dosify - convert filenames to 8.3
    +#
    +sub dosify {
    +	my ($str) = @_;
    +	return lc($str) if $^O eq 'VMS';    # VMS just needs casing
    +	if ($Is83) {
    +		$str = lc $str;
    +		$str =~ s/(\.\w+)/substr ($1,0,4)/ge;
    +		$str =~ s/(\w+)/substr ($1,0,8)/ge;
    +	}
    +	return $str;
    +}
    +
    +#
    +# page_sect - make a URL from the text of a L<>
    +#
    +sub page_sect($$) {
    +	my ( $page, $section ) = @_;
    +	my ( $linktext, $page83, $link );    # work strings
    +
    +	# check if we know that this is a section in this page
    +	if ( !defined $Pages{$page} && defined $Sections{$page} ) {
    +		$section = $page;
    +		$page    = "";
    +		### print STDERR "reset page='', section=$section\n";
    +	}
    +
    +	$page83 = dosify($page);
    +	$page = $page83 if ( defined $Pages{$page83} );
    +	if ( $page eq "" ) {
    +		$link = "#" . anchorify($section);
    +	} elsif ( $page =~ /::/ ) {
    +		$page =~ s,::,/,g;
    +
    +		# Search page cache for an entry keyed under the html page name,
    +		# then look to see what directory that page might be in.  NOTE:
    +		# this will only find one page. A better solution might be to produce
    +		# an intermediate page that is an index to all such pages.
    +		my $page_name = $page;
    +		$page_name =~ s,^.*/,,s;
    +		if ( defined( $Pages{$page_name} )
    +			&& $Pages{$page_name} =~ /([^:]*$page)\.(?:pod|pm):/ )
    +		{
    +			$page = $1;
    +		} else {
    +
    +			# NOTE: This branch assumes that all A::B pages are located in
    +			# $Htmlroot/A/B.html . This is often incorrect, since they are
    +			# often in $Htmlroot/lib/A/B.html or such like. Perhaps we could
    +			# analyze the contents of %Pages and figure out where any
    +			# cousins of A::B are, then assume that.  So, if A::B isn't found,
    +			# but A::C is found in lib/A/C.pm, then A::B is assumed to be in
    +			# lib/A/B.pm. This is also limited, but it's an improvement.
    +			# Maybe a hints file so that the links point to the correct places
    +			# nonetheless?
    +
    +		}
    +		$link = "$Htmlroot/$page.html";
    +		$link .= "#" . anchorify($section) if ($section);
    +	} elsif ( !defined $Pages{$page} ) {
    +		$link = "";
    +	} else {
    +		$section = anchorify($section) if $section ne "";
    +		### print STDERR "...section=$section\n";
    +
    +		# if there is a directory by the name of the page, then assume that an
    +		# appropriate section will exist in the subdirectory
    +		#	if ($section ne "" && $Pages{$page} =~ /([^:]*[^(\.pod|\.pm)]):/) {
    +		if ( $section ne "" && $Pages{$page} =~ /([^:]*(?, Foo.(pod|pm) is preferred to A/Foo.(pod|pm)
    +			if ( $Pages{$page} =~ /([^:]*)\.(?:pod|pm):/ ) {
    +				$link = "$Htmlroot/$1.html$section";
    +			} else {
    +				$link = "";
    +			}
    +		}
    +	}
    +
    +	if ($link) {
    +
    +		# Here, we take advantage of the knowledge that $Htmlfileurl ne ''
    +		# implies $Htmlroot eq ''. This means that the link in question
    +		# needs a prefix of $Htmldir if it begins with '/'. The test for
    +		# the initial '/' is done to avoid '#'-only links, and to allow
    +		# for other kinds of links, like file:, ftp:, etc.
    +		my $url;
    +		if ( $Htmlfileurl ne '' ) {
    +			$link = "$Htmldir$link" if $link =~ m{^/}s;
    +			$url = relativize_url( $link, $Htmlfileurl );
    +
    +			# print( "  b: [$link,$Htmlfileurl,$url]\n" );
    +		} else {
    +			$url = $link;
    +		}
    +		return $url;
    +
    +	} else {
    +		return undef();
    +	}
    +}
    +
    +#
    +# relativize_url - convert an absolute URL to one relative to a base URL.
    +# Assumes both end in a filename.
    +#
    +sub relativize_url {
    +	my ( $dest, $source ) = @_;
    +
    +	my ( $dest_volume, $dest_directory, $dest_file ) =
    +		File::Spec::Unix->splitpath($dest);
    +	$dest = File::Spec::Unix->catpath( $dest_volume, $dest_directory, '' );
    +
    +	my ( $source_volume, $source_directory, $source_file ) =
    +		File::Spec::Unix->splitpath($source);
    +	$source =
    +		File::Spec::Unix->catpath( $source_volume, $source_directory, '' );
    +
    +	my $rel_path = '';
    +	if ( $dest ne '' ) {
    +		$rel_path = File::Spec::Unix->abs2rel( $dest, $source );
    +	}
    +
    +	if (   $rel_path ne ''
    +		&& substr( $rel_path, -1 ) ne '/'
    +		&& substr( $dest_file, 0, 1 ) ne '#' )
    +	{
    +		$rel_path .= "/$dest_file";
    +	} else {
    +		$rel_path .= "$dest_file";
    +	}
    +
    +	return $rel_path;
    +}
    +
    +#
    +# coderef - make URL from the text of a C<>
    +#
    +sub coderef($$) {
    +	my ( $page, $item ) = @_;
    +	my ($url);
    +
    +	my $fid = fragment_id($item);
    +
    +	if ( defined($page) && $page ne "" ) {
    +
    +		# we have been given a $page...
    +		$page =~ s{::}{/}g;
    +
    +		Carp::confess(
    +"Undefined fragment '$item' from fragment_id() in coderef() in $Podfile"
    +		) if !defined $fid;
    +
    +		# Do we take it? Item could be a section!
    +		my $base = $Items{$fid} || "";
    +		$base =~ s{[^/]*/}{};
    +		if ( $base ne "$page.html" ) {
    +			###   print STDERR "coderef( $page, $item ): items{$fid} = $Items{$fid} = $base => discard page!\n";
    +			$page = undef();
    +		}
    +
    +	} else {
    +
    +		# no page - local items precede cached items
    +		if ( defined($fid) ) {
    +			if ( exists $Local_Items{$fid} ) {
    +				$page = $Local_Items{$fid};
    +			} else {
    +				$page = $Items{$fid};
    +			}
    +		}
    +	}
    +
    +	# if there was a pod file that we found earlier with an appropriate
    +	# =item directive, then create a link to that page.
    +	if ( defined $page ) {
    +		if ($page) {
    +			if ( exists $Pages{$page} and $Pages{$page} =~ /([^:.]*)\.[^:]*:/ )
    +			{
    +				$page = $1 . '.html';
    +			}
    +			my $link = "$Htmlroot/$page#" . anchorify($fid);
    +
    +			# Here, we take advantage of the knowledge that $Htmlfileurl
    +			# ne '' implies $Htmlroot eq ''.
    +			if ( $Htmlfileurl ne '' ) {
    +				$link = "$Htmldir$link";
    +				$url = relativize_url( $link, $Htmlfileurl );
    +			} else {
    +				$url = $link;
    +			}
    +		} else {
    +			$url = "#" . anchorify($fid);
    +		}
    +
    +		confess "url has space: $url" if $url =~ /"[^"]*\s[^"]*"/;
    +	}
    +	return ( $url, $fid );
    +}
    +
    +#
    +# Adapted from Nick Ing-Simmons' PodToHtml package.
    +sub relative_url {
    +	my $source_file      = shift;
    +	my $destination_file = shift;
    +
    +	my $source = URI::file->new_abs($source_file);
    +	my $uo = URI::file->new( $destination_file, $source )->abs;
    +	return $uo->rel->as_string;
    +}
    +
    +#
    +# finish_list - finish off any pending HTML lists.  this should be called
    +# after the entire pod file has been read and converted.
    +#
    +sub finish_list {
    +	while ( $Listlevel > 0 ) {
    +		print HTML "\n";
    +		$Listlevel--;
    +	}
    +}
    +
    +#
    +# htmlify - converts a pod section specification to a suitable section
    +# specification for HTML. Note that we keep spaces and special characters
    +# except ", ? (Netscape problem) and the hyphen (writer's problem...).
    +#
    +sub htmlify {
    +	my ($heading) = @_;
    +	$heading =~ s/(\s+)/ /g;
    +	$heading =~ s/\s+\Z//;
    +	$heading =~ s/\A\s+//;
    +
    +	# The hyphen is a disgrace to the English language.
    +	# $heading =~ s/[-"?]//g;
    +	$heading =~ s/["?]//g;
    +	$heading = lc($heading);
    +	return $heading;
    +}
    +
    +#
    +# similar to htmlify, but turns non-alphanumerics into underscores
    +#
    +sub anchorify {
    +	my ($anchor) = @_;
    +	$anchor =~ s/\([^)]*\)//;
    +	$anchor = htmlify($anchor);
    +	$anchor =~ s/\W/_/g;
    +	$anchor =~ tr/_/_/s;
    +	return $anchor;
    +}
    +
    +#
    +# depod - convert text by eliminating all interior sequences
    +# Note: can be called with copy or modify semantics
    +#
    +my %E2c;
    +$E2c{lt}     = '<';
    +$E2c{gt}     = '>';
    +$E2c{sol}    = '/';
    +$E2c{verbar} = '|';
    +$E2c{amp}    = '&';    # in Tk's pods
    +
    +sub depod1($;$$);
    +
    +sub depod($) {
    +	my $string;
    +	if ( ref( $_[0] ) ) {
    +		$string = ${ $_[0] };
    +		${ $_[0] } = depod1( \$string );
    +	} else {
    +		$string = $_[0];
    +		depod1( \$string );
    +	}
    +}
    +
    +sub depod1($;$$) {
    +	my ( $rstr, $func, $closing ) = @_;
    +	my $res = '';
    +	return $res unless defined $$rstr;
    +	if ( !defined($func) ) {
    +
    +		# skip to next begin of an interior sequence
    +		while ( $$rstr =~ s/\A(.*?)([BCEFILSXZ])<(<+[^\S\n]+)?//s ) {
    +
    +			# recurse into its text
    +			$res .= $1 . depod1( $rstr, $2, closing $3);
    +		}
    +		$res .= $$rstr;
    +	} elsif ( $func eq 'E' ) {
    +
    +		# E - convert to character
    +		$$rstr =~ s/^([^>]*)>//;
    +		$res .= $E2c{$1} || "";
    +	} elsif ( $func eq 'X' ) {
    +
    +		# X<> - ignore
    +		$$rstr =~ s/^[^>]*>//;
    +	} elsif ( $func eq 'Z' ) {
    +
    +		# Z<> - empty
    +		$$rstr =~ s/^>//;
    +	} else {
    +
    +		# all others: either recurse into new function or
    +		# terminate at closing angle bracket
    +		my $term = pattern $closing;
    +		while ( $$rstr =~ s/\A(.*?)(([BCEFILSXZ])<(<+[^\S\n]+)?|$term)//s ) {
    +			$res .= $1;
    +			last unless $3;
    +			$res .= depod1( $rstr, $3, closing $4 );
    +		}
    +		## If we're here and $2 ne '>': undelimited interior sequence.
    +		## Ignored, as this is called without proper indication of where we are.
    +		## Rely on process_text to produce diagnostics.
    +	}
    +	return $res;
    +}
    +
    +{
    +	my %seen;    # static fragment record hash
    +
    +	sub fragment_id_readable {
    +		my $text     = shift;
    +		my $generate = shift;    # optional flag
    +
    +		my $orig = $text;
    +
    +		# leave the words for the fragment identifier,
    +		# change everything else to underbars.
    +		$text =~
    +			s/[^A-Za-z0-9_]+/_/g;    # do not use \W to avoid locale dependency.
    +		$text =~ s/_{2,}/_/g;
    +		$text =~ s/\A_//;
    +		$text =~ s/_\Z//;
    +
    +		unless ($text) {
    +
    +			# Nothing left after removing punctuation, so leave it as is
    +			# E.g. if option is named: "=item -#"
    +
    +			$text = $orig;
    +		}
    +
    +		if ($generate) {
    +			if ( exists $seen{$text} ) {
    +
    +				# This already exists, make it unique
    +				$seen{$text}++;
    +				$text = $text . $seen{$text};
    +			} else {
    +				$seen{$text} = 1;    # first time seen this fragment
    +			}
    +		}
    +
    +		$text;
    +	}
    +}
    +
    +my @HC;
    +
    +sub fragment_id_obfuscated {         # This was the old "_2d_2d__"
    +	my $text     = shift;
    +	my $generate = shift;            # optional flag
    +
    +	# text? Normalize by obfuscating the fragment id to make it unique
    +	$text =~ s/\s+/_/sg;
    +
    +	$text =~ s{(\W)}{
    +        defined( $HC[ord($1)] ) ? $HC[ord($1)]
    +        : ( $HC[ord($1)] = sprintf( "%%%02X", ord($1) ) ) }gxe;
    +	$text = substr( $text, 0, 50 );
    +
    +	$text;
    +}
    +
    +#
    +# fragment_id - construct a fragment identifier from:
    +#   a) =item text
    +#   b) contents of C<...>
    +#
    +
    +sub fragment_id {
    +	my $text     = shift;
    +	my $generate = shift;    # optional flag
    +
    +	$text =~ s/\s+\Z//s;
    +	if ($text) {
    +
    +		# a method or function?
    +		return $1 if $text =~ /(\w+)\s*\(/;
    +		return $1 if $text =~ /->\s*(\w+)\s*\(?/;
    +
    +		# a variable name?
    +		return $1 if $text =~ /^([\$\@%*]\S+)/;
    +
    +		# some pattern matching operator?
    +		return $1 if $text =~ m|^(\w+/).*/\w*$|;
    +
    +		# fancy stuff... like "do { }"
    +		return $1 if $text =~ m|^(\w+)\s*{.*}$|;
    +
    +		# honour the perlfunc manpage: func [PAR[,[ ]PAR]...]
    +		# and some funnies with ... Module ...
    +		return $1 if $text =~ m{^([a-z\d_]+)(\s+[A-Z,/& ][A-Z\d,/& ]*)?$};
    +		return $1 if $text =~ m{^([a-z\d]+)\s+Module(\s+[A-Z\d,/& ]+)?$};
    +
    +		return fragment_id_readable( $text, $generate );
    +	} else {
    +		return;
    +	}
    +}
    +
    +#
    +# make_URL_href - generate HTML href from URL
    +# Special treatment for CGI queries.
    +#
    +sub make_URL_href($) {
    +	my ($url) = @_;
    +	if ( $url !~ s{^(http:[-\w/#~:.+=&%@!]+)(\?.*)$}{$1}i ) {
    +		$url = "$url";
    +	}
    +	return $url;
    +}
    +
    +1;
    diff --git a/xchat-2.8.8/plugins/perl/Xchat.pm b/xchat-2.8.8/plugins/perl/Xchat.pm
    new file mode 100644
    index 0000000..70daffa
    --- /dev/null
    +++ b/xchat-2.8.8/plugins/perl/Xchat.pm
    @@ -0,0 +1,963 @@
    +# line 1 "Xchat.pm"
    +BEGIN {
    +	$INC{'Xchat.pm'} = 'DUMMY';
    +}
    +
    +$SIG{__WARN__} = sub {
    +	my $message = shift @_;
    +	my ($package) = caller;
    +	
    +	# redirect Gtk/Glib errors and warnings back to STDERR
    +	my $message_levels =	qr/ERROR|CRITICAL|WARNING|MESSAGE|INFO|DEBUG/;
    +	if( $message =~ /^(?:Gtk|GLib|Gdk)(?:-\w+)?-$message_levels/i ) {
    +		print STDERR $message;
    +	} else {
    +
    +		if( defined &Xchat::Internal::print ) {
    +			Xchat::print( $message );
    +		} else {
    +			warn $message;
    +		}
    +	}
    +};
    +
    +use File::Spec ();
    +use File::Basename ();
    +use File::Glob ();
    +use List::Util ();
    +use Symbol();
    +use Time::HiRes ();
    +use Carp ();
    +
    +{
    +package Xchat;
    +use base qw(Exporter);
    +use strict;
    +use warnings;
    +
    +sub PRI_HIGHEST ();
    +sub PRI_HIGH ();
    +sub PRI_NORM ();
    +sub PRI_LOW ();
    +sub PRI_LOWEST ();
    +
    +sub EAT_NONE ();
    +sub EAT_XCHAT ();
    +sub EAT_PLUIN ();
    +sub EAT_ALL ();
    +
    +sub KEEP ();
    +sub REMOVE ();
    +sub FD_READ ();
    +sub FD_WRITE ();
    +sub FD_EXCEPTION ();
    +sub FD_NOTSOCKET ();
    +
    +sub get_context;
    +sub Xchat::Internal::context_info;
    +sub Xchat::Internal::print;
    +
    +our %EXPORT_TAGS = (
    +	constants => [
    +		qw(PRI_HIGHEST PRI_HIGH PRI_NORM PRI_LOW PRI_LOWEST), # priorities
    +		qw(EAT_NONE EAT_XCHAT EAT_PLUGIN EAT_ALL), # callback return values
    +		qw(FD_READ FD_WRITE FD_EXCEPTION FD_NOTSOCKET), # fd flags
    +		qw(KEEP REMOVE), # timers
    +	],
    +	hooks => [
    +		qw(hook_server hook_command hook_print hook_timer hook_fd unhook),
    +	],
    +	util => [
    +		qw(register nickcmp strip_code send_modes), # misc
    +		qw(print prnt printf prntf command commandf emit_print), # output
    +		qw(find_context get_context set_context), # context
    +		qw(get_info get_prefs get_list context_info user_info), # input
    +	],
    +);
    +
    +$EXPORT_TAGS{all} = [ map { @{$_} } @EXPORT_TAGS{qw(constants hooks util)}];
    +our @EXPORT = @{$EXPORT_TAGS{constants}};
    +our @EXPORT_OK = @{$EXPORT_TAGS{all}};
    +
    +sub register {
    +	my $package = Xchat::Embed::find_pkg();
    +	my $pkg_info = Xchat::Embed::pkg_info( $package );
    +	my $filename = $pkg_info->{filename};
    +	my ($name, $version, $description, $callback) = @_;
    +	
    +	if( defined $pkg_info->{gui_entry} ) {
    +		Xchat::print( "Xchat::register called more than once in "
    +			. $pkg_info->{filename} );
    +		return ();
    +	}
    +	
    +	$description = "" unless defined $description;
    +	$pkg_info->{shutdown} = $callback;
    +	unless( $name && $name =~ /[[:print:]\w]/ ) {
    +		$name = "Not supplied";
    +	}
    +	unless( $version && $version =~ /\d+(?:\.\d+)?/ ) {
    +		$version = "NaN";
    +	}
    +	$pkg_info->{gui_entry} =
    +		Xchat::Internal::register( $name, $version, $description, $filename );
    +	# keep with old behavior
    +	return ();
    +}
    +
    +sub hook_server {
    +	return undef unless @_ >= 2;
    +	my $message = shift;
    +	my $callback = shift;
    +	my $options = shift;
    +	my $package = Xchat::Embed::find_pkg();
    +	
    +	$callback = Xchat::Embed::fix_callback( $package, $callback );
    +	
    +	my ($priority, $data) = ( Xchat::PRI_NORM, undef );
    +	
    +	if( ref( $options ) eq 'HASH' ) {
    +		if( exists( $options->{priority} ) && defined( $options->{priority} ) ) {
    +			$priority = $options->{priority};
    +		}
    +		
    +		if( exists( $options->{data} ) && defined( $options->{data} ) ) {
    +			$data = $options->{data};
    +		}
    +	}
    +	
    +	my $pkg_info = Xchat::Embed::pkg_info( $package );
    +	my $hook = Xchat::Internal::hook_server(
    +		$message, $priority, $callback, $data
    +	);
    +	push @{$pkg_info->{hooks}}, $hook if defined $hook;
    +	return $hook;
    +}
    +
    +sub hook_command {
    +	return undef unless @_ >= 2;
    +	my $command = shift;
    +	my $callback = shift;
    +	my $options = shift;
    +	my $package = Xchat::Embed::find_pkg();
    +
    +	$callback = Xchat::Embed::fix_callback( $package, $callback );
    +	
    +	my ($priority, $help_text, $data) = ( Xchat::PRI_NORM, undef, undef );
    +	
    +	if( ref( $options ) eq 'HASH' ) {
    +		if( exists( $options->{priority} ) && defined( $options->{priority} ) ) {
    +			$priority = $options->{priority};
    +		}
    +
    +		if(
    +			exists( $options->{help_text} )
    +			&& defined( $options->{help_text} )
    +		) {
    +			$help_text = $options->{help_text};
    +		}
    +
    +		if ( exists( $options->{data} ) && defined( $options->{data} ) ) {
    +			$data = $options->{data};
    +		}
    +	}
    +	
    +	my $pkg_info = Xchat::Embed::pkg_info( $package );
    +	my $hook = Xchat::Internal::hook_command(
    +		$command, $priority, $callback, $help_text, $data
    +	);
    +	push @{$pkg_info->{hooks}}, $hook if defined $hook;
    +	return $hook;
    +}
    +
    +sub hook_print {
    +	return undef unless @_ >= 2;
    +	my $event = shift;
    +	my $callback = shift;
    +	my $options = shift;
    +	my $package = Xchat::Embed::find_pkg();
    +
    +	$callback = Xchat::Embed::fix_callback( $package, $callback );
    +	
    +	my ($priority, $data) = ( Xchat::PRI_NORM, undef );
    +	
    +	if ( ref( $options ) eq 'HASH' ) {
    +		if ( exists( $options->{priority} ) && defined( $options->{priority} ) ) {
    +			$priority = $options->{priority};
    +		}
    +
    +		if ( exists( $options->{data} ) && defined( $options->{data} ) ) {
    +			$data = $options->{data};
    +		}
    +	}
    +	
    +	my $pkg_info = Xchat::Embed::pkg_info( $package );
    +	my $hook = Xchat::Internal::hook_print(
    +		$event, $priority, $callback, $data
    +	);
    +	push @{$pkg_info->{hooks}}, $hook if defined $hook;
    +	return $hook;
    +}
    +
    +sub hook_timer {
    +	return undef unless @_ >= 2;
    +	my ($timeout, $callback, $data) = @_;
    +	my $package = Xchat::Embed::find_pkg();
    +
    +	$callback = Xchat::Embed::fix_callback( $package, $callback );
    +
    +	if(
    +		ref( $data ) eq 'HASH' && exists( $data->{data} )
    +		&& defined( $data->{data} )
    +	) {
    +		$data = $data->{data};
    +	}
    +	
    +	my $pkg_info = Xchat::Embed::pkg_info( $package );
    +	my $hook = Xchat::Internal::hook_timer( $timeout, $callback, $data, $package );
    +	push @{$pkg_info->{hooks}}, $hook if defined $hook;
    +	return $hook;
    +}
    +
    +sub hook_fd {
    +	return undef unless @_ >= 2;
    +	my ($fd, $callback, $options) = @_;
    +	return undef unless defined $fd && defined $callback;
    +
    +	my $fileno = fileno $fd;
    +	return undef unless defined $fileno; # no underlying fd for this handle
    +	
    +	my ($package) = Xchat::Embed::find_pkg();
    +	$callback = Xchat::Embed::fix_callback( $package, $callback );
    +	
    +	my ($flags, $data) = (Xchat::FD_READ, undef);
    +
    +	if( ref( $options ) eq 'HASH' ) {
    +		if( exists( $options->{flags} ) && defined( $options->{flags} ) ) {
    +			$flags = $options->{flags};
    +		}
    +		
    +		if ( exists( $options->{data} ) && defined( $options->{data} ) ) {
    +			$data = $options->{data};
    +		}
    +	}
    +	
    +	my $cb = sub {
    +		my $userdata = shift;
    +		return $userdata->{CB}->(
    +			$userdata->{FD}, $userdata->{FLAGS}, $userdata->{DATA},
    +		);
    +	};
    +	
    +	my $pkg_info = Xchat::Embed::pkg_info( $package );
    +	my $hook = Xchat::Internal::hook_fd(
    +		$fileno, $cb, $flags, {
    +			DATA => $data, FD => $fd, CB => $callback, FLAGS => $flags,
    +		}
    +	);
    +	push @{$pkg_info->{hooks}}, $hook if defined $hook;
    +	return $hook;
    +}
    +
    +sub unhook {
    +	my $hook = shift @_;
    +	my $package = shift @_;
    +	($package) = caller unless $package;
    +	my $pkg_info = Xchat::Embed::pkg_info( $package );
    +
    +	if( defined( $hook )
    +		&& $hook =~ /^\d+$/
    +		&& grep { $_ == $hook } @{$pkg_info->{hooks}} ) {
    +		$pkg_info->{hooks} = [grep { $_ != $hook } @{$pkg_info->{hooks}}];
    +		return Xchat::Internal::unhook( $hook );
    +	}
    +	return ();
    +}
    +
    +sub _do_for_each {
    +	my ($cb, $channels, $servers) = @_;
    +
    +	# not specifying any channels or servers is not the same as specifying
    +	# undef for both
    +	# - not specifying either results in calling the callback inthe current ctx
    +	# - specifying undef for for both results in calling the callback in the
    +	#   front/currently selected tab
    +	if( @_ == 3 && !($channels || $servers) ) { 
    +		$channels = [ undef ];
    +		$servers = [ undef ];
    +	} elsif( !($channels || $servers) ) {
    +		$cb->();
    +		return 1;
    +	}
    +
    +	$channels = [ $channels ] unless ref( $channels ) eq 'ARRAY';
    +
    +	if( $servers ) {
    +		$servers = [ $servers ] unless ref( $servers ) eq 'ARRAY';
    +	} else {
    +		$servers = [ undef ];
    +	}
    +
    +	my $num_done;
    +	my $old_ctx = Xchat::get_context();
    +	for my $server ( @$servers ) {
    +		for my $channel ( @$channels ) {
    +			if( Xchat::set_context( $channel, $server ) ) {
    +				$cb->();
    +				$num_done++
    +			}
    +		}
    +	}
    +	Xchat::set_context( $old_ctx );
    +	return $num_done;
    +}
    +
    +sub print {
    +	my $text = shift @_;
    +	return "" unless defined $text;
    +	if( ref( $text ) eq 'ARRAY' ) {
    +		if( $, ) {
    +			$text = join $, , @$text;
    +		} else {
    +			$text = join "", @$text;
    +		}
    +	}
    +	
    +	return _do_for_each(
    +		sub { Xchat::Internal::print( $text ); },
    +		@_
    +	);
    +}
    +
    +sub printf {
    +	my $format = shift;
    +	Xchat::print( sprintf( $format, @_ ) );
    +}
    +
    +# make Xchat::prnt() and Xchat::prntf() as aliases for Xchat::print() and 
    +# Xchat::printf(), mainly useful when these functions are exported
    +sub prnt {
    +	goto &Xchat::print;
    +}
    +
    +sub prntf {
    +	goto &Xchat::printf;
    +}
    +
    +sub command {
    +	my $command = shift;
    +	return "" unless defined $command;
    +	my @commands;
    +	
    +	if( ref( $command ) eq 'ARRAY' ) {
    +		@commands = @$command;
    +	} else {
    +		@commands = ($command);
    +	}
    +	
    +	return _do_for_each(
    +		sub { Xchat::Internal::command( $_ ) foreach @commands },
    +		@_
    +	);
    +}
    +
    +sub commandf {
    +	my $format = shift;
    +	Xchat::command( sprintf( $format, @_ ) );
    +}
    +
    +sub set_context {
    +	my $context;
    +	if( @_ == 2 ) {
    +		my ($channel, $server) = @_;
    +		$context = Xchat::find_context( $channel, $server );
    +	} elsif( @_ == 1 ) {
    +		if( defined $_[0] && $_[0] =~ /^\d+$/ ) {
    +			$context = $_[0];
    +		} else {
    +			$context = Xchat::find_context( $_[0] );
    +		}
    +	} elsif( @_ == 0 ) {
    +		$context = Xchat::find_context();
    +	}
    +	return $context ? Xchat::Internal::set_context( $context ) : 0;
    +}
    +
    +sub get_info {
    +	my $id = shift;
    +	my $info;
    +	
    +	if( defined( $id ) ) {
    +		if( grep { $id eq $_ } qw(state_cursor id) ) {
    +			$info = Xchat::get_prefs( $id );
    +		} else {
    +			$info = Xchat::Internal::get_info( $id );
    +		}
    +	}
    +	return $info;
    +}
    +
    +sub user_info {
    +	my $nick = Xchat::strip_code(shift @_ || Xchat::get_info( "nick" ));
    +	my $user;
    +	for (Xchat::get_list( "users" ) ) {
    +		if ( Xchat::nickcmp( $_->{nick}, $nick ) == 0 ) {
    +			$user = $_;
    +			last;
    +		}
    +	}
    +	return $user;
    +}
    +
    +sub context_info {
    +	my $ctx = shift @_ || Xchat::get_context;
    +	my $old_ctx = Xchat::get_context;
    +	my @fields = (
    +		qw(away channel charset host id inputbox libdirfs modes network),
    +		qw(nick nickserv server topic version win_ptr win_status),
    +		qw(xchatdir xchatdirfs state_cursor),
    +	);
    +
    +	if( Xchat::set_context( $ctx ) ) {
    +		my %info;
    +		for my $field ( @fields ) {
    +			$info{$field} = Xchat::get_info( $field );
    +		}
    +		
    +		my $ctx_info = Xchat::Internal::context_info;
    +		@info{keys %$ctx_info} = values %$ctx_info;
    +		
    +		Xchat::set_context( $old_ctx );
    +		return %info if wantarray;
    +		return \%info;
    +	} else {
    +		return undef;
    +	}
    +}
    +
    +sub get_list {
    +	unless( grep { $_[0] eq $_ } qw(channels dcc ignore notify users networks) ) {
    +		Carp::carp( "'$_[0]' does not appear to be a valid list name" );
    +	}
    +	if( $_[0] eq 'networks' ) {
    +		return Xchat::List::Network->get();
    +	} else {
    +		return Xchat::Internal::get_list( $_[0] );
    +	}
    +}
    +
    +sub strip_code {
    +	my $pattern = qr<
    +		\cB| #Bold
    +		\cC\d{0,2}(?:,\d{1,2})?| #Color
    +		\e\[(?:\d{1,2}(?:;\d{1,2})*)?m| # ANSI color code
    +		\cG| #Beep
    +		\cO| #Reset
    +		\cV| #Reverse
    +		\c_  #Underline
    +	>x;
    +		
    +	if( defined wantarray ) {
    +		my $msg = shift;
    +		$msg =~ s/$pattern//g;
    +		return $msg;
    +	} else {
    +		$_[0] =~ s/$pattern//g if defined $_[0];
    +	}
    +}
    +
    +} # end of Xchat package
    +
    +{
    +package Xchat::Embed;
    +use strict;
    +use warnings;
    +# list of loaded scripts keyed by their package names
    +our %scripts;
    +
    +sub load {
    +	my $file = expand_homedir( shift @_ );
    +	my $package = file2pkg( $file );
    +	
    +	if( exists $scripts{$package} ) {
    +		my $pkg_info = pkg_info( $package );
    +		my $filename = File::Basename::basename( $pkg_info->{filename} );
    +		Xchat::printf(
    +			qq{'%s' already loaded from '%s'.\n},
    +			$filename, $pkg_info->{filename}
    +		);
    +		Xchat::print(
    +			'If this is a different script then it rename and try '.
    +			'loading it again.'
    +		);
    +		return 2;
    +	}
    +	
    +	if( open my $source_handle, $file ) {
    +		my $source = do {local $/; <$source_handle>};
    +		close $source_handle;
    +		# we shouldn't care about things after __END__
    +		$source =~ s/^__END__.*//ms;
    +		
    +		if(
    +			my @replacements = $source =~
    +				m/^\s*package ((?:[^\W:]+(?:::)?)+)\s*?;/mg
    +		) {
    +			
    +			if ( @replacements > 1 ) {
    +				Xchat::print(
    +					"Too many package defintions, only 1 is allowed\n"
    +				);
    +				return 1;
    +			}
    +			
    +			my $original_package = shift @replacements;
    +			
    +			# remove original package declaration
    +			$source =~ s/^(package $original_package\s*;)/#$1/m;
    +			
    +			# fixes things up for code calling subs with fully qualified names
    +			$source =~ s/${original_package}:://g;
    +		}
    +		
    +		# this must come before the eval or the filename will not be found in
    +		# Xchat::register
    +		$scripts{$package}{filename} = $file;
    +		$scripts{$package}{loaded_at} = Time::HiRes::time();
    +
    +		my $full_path = File::Spec->rel2abs( $file );
    +		$source =~ s/^/#line 1 "$full_path"\n\x7Bpackage $package;/;
    +
    +		# make sure we add the closing } even if the last line is a comment
    +		if( $source =~ /^#.*\Z/m ) {
    +			$source =~ s/^(?=#.*\Z)/\x7D/m;
    +		} else {
    +			$source =~ s/\Z/\x7D/;
    +		}
    +
    +		_do_eval( $source );
    +
    +		unless( exists $scripts{$package}{gui_entry} ) {
    +			$scripts{$package}{gui_entry} =
    +				Xchat::Internal::register(
    +					"", "unknown", "", $file
    +				);
    +		}
    +		
    +		if( $@ ) {
    +			# something went wrong
    +			$@ =~ s/\(eval \d+\)/$file/g;
    +			Xchat::print( "Error loading '$file':\n$@\n" );
    +			# make sure the script list doesn't contain false information
    +			unload( $scripts{$package}{filename} );
    +			return 1;
    +		}
    +	} else {
    +		Xchat::print( "Error opening '$file': $!\n" );
    +		return 2;
    +	}
    +
    +	return 0;
    +}
    +
    +sub _do_eval {
    +	no strict;
    +	no warnings;
    +	eval $_[0];
    +}
    +
    +sub unload {
    +	my $file = shift @_;
    +	my $package = file2pkg( $file );
    +	my $pkg_info = pkg_info( $package );
    +
    +	if( $pkg_info ) {	
    +		# take care of the shutdown callback
    +		if( exists $pkg_info->{shutdown} ) {
    +			# allow incorrectly written scripts to be unloaded
    +			eval {
    +				if( ref $pkg_info->{shutdown} eq 'CODE' ) {
    +					$pkg_info->{shutdown}->();
    +				} elsif ( $pkg_info->{shutdown} ) {
    +					no strict 'refs';
    +					&{$pkg_info->{shutdown}};
    +				}
    +			};
    +		}
    +
    +		if( exists $pkg_info->{hooks} ) {
    +			for my $hook ( @{$pkg_info->{hooks}} ) {
    +				Xchat::unhook( $hook, $package );
    +			}
    +		}
    +
    +
    +		if( exists $pkg_info->{gui_entry} ) {
    +			plugingui_remove( $pkg_info->{gui_entry} );
    +		}
    +		
    +		Symbol::delete_package( $package );
    +		delete $scripts{$package};
    +		return Xchat::EAT_ALL;
    +	} else {
    +		Xchat::print( qq{"$file" is not loaded.\n} );
    +		return Xchat::EAT_NONE;
    +	}
    +}
    +
    +sub unload_all {
    +	for my $package ( keys %scripts ) {
    +		unload( $scripts{$package}->{filename} );
    +	}
    +	
    +	return Xchat::EAT_ALL;
    +}
    +
    +sub reload {
    +	my $file = shift @_;
    +	my $package = file2pkg( $file );
    +	my $pkg_info = pkg_info( $package );
    +	my $fullpath = $file;
    +	
    +	if( $pkg_info ) {
    +		$fullpath = $pkg_info->{filename};
    +		unload( $file );
    +	}
    +	
    +	load( $fullpath );
    +	return Xchat::EAT_ALL;
    +}
    +
    +sub reload_all {
    +	my @dirs = Xchat::get_info( "xchatdirfs" ) || Xchat::get_info( "xchatdir" );
    +	push @dirs, File::Spec->catdir( $dirs[0], "plugins" );
    +	for my $dir ( @dirs ) {
    +		my $auto_load_glob = File::Spec->catfile( $dir, "*.pl" );
    +		my @scripts = map { $_->{filename} }
    +			sort { $a->{loaded_at} <=> $b->{loaded_at} } values %scripts;
    +		push @scripts, File::Glob::bsd_glob( $auto_load_glob );
    +
    +		my %seen;
    +		@scripts = grep { !$seen{ $_ }++ } @scripts;
    +
    +		unload_all();
    +		for my $script ( @scripts ) {
    +			if( !pkg_info( file2pkg( $script ) ) ) {
    +				load( $script );
    +			}
    +		}
    +	}
    +}
    +#sub auto_load {
    +#	my $dir = Xchat::get_info( "xchatdirfs" ) || Xchat::get_info( "xchatdir" );
    +#
    +#	if( opendir my $dir_handle, $dir ) {
    +#		my @files = readdir $dir_handle;
    +# 		
    +#		for( @files ) {
    +#			my $fullpath = File::Spec->catfile( $dir, $_ );
    +#			load( $fullpath ) if $fullpath =~ m/\.pl$/i;
    +#		}
    +#
    +#		closedir $dir_handle;
    +#	}
    +#}
    +
    +sub expand_homedir {
    +	my $file = shift @_;
    +
    +	if ( $^O eq "MSWin32" ) {
    +		$file =~ s/^~/$ENV{USERPROFILE}/;
    +	} else {
    +		$file =~ s{^~}{
    +			(getpwuid($>))[7] ||  $ENV{HOME} || $ENV{LOGDIR}
    +		}ex;
    +	}
    +	return $file;
    +}
    +
    +sub file2pkg {
    +	my $string = File::Basename::basename( shift @_ );
    +	$string =~ s/\.pl$//i;
    +	$string =~ s|([^A-Za-z0-9/])|'_'.unpack("H*",$1)|eg;
    +	return "Xchat::Script::" . $string;
    +}
    +
    +sub pkg_info {
    +	my $package = shift @_;
    +	return $scripts{$package};
    +}
    +
    +sub find_external_pkg {
    +	my $level = 1;
    +
    +	while( my @frame = caller( $level ) ) {
    +		return @frame if $frame[0] !~ /^Xchat/;
    +		$level++;
    +	}
    +
    +}
    +
    +sub find_pkg {
    +	my $level = 1;
    +
    +	while( my ($package, $file, $line) = caller( $level ) ) {
    +		return $package if $package =~ /^Xchat::Script::/;
    +		$level++;
    +	}
    +
    +	my @frame = find_external_pkg();
    +	my $location;
    +
    +	if( $frame[0] or $frame[1] ) {
    +		$location = $frame[1] ? $frame[1] : "package $frame[0]";
    +		$location .= " line $frame[2]";
    +	} else {
    +		$location = "unknown location";
    +	}
    +
    +	die "Unable to determine which script this hook belongs to. at $location\n";
    +
    +}
    +
    +sub fix_callback {
    +	my ($package, $callback) = @_;
    +	
    +	unless( ref $callback ) {
    +		# change the package to the correct one in case it was hardcoded
    +		$callback =~ s/^.*:://;
    +		$callback = qq[${package}::$callback];
    +
    +		no strict 'subs';
    +		$callback = \&{$callback};
    +	}
    +	
    +	return $callback;
    +}
    +} # end of Xchat::Embed package
    +
    +{
    +package Xchat::List::Network;
    +use strict;
    +use warnings;
    +use Storable qw(dclone);
    +my $last_modified;
    +my @servers;
    +
    +sub get {
    +	my $server_file = Xchat::get_info( "xchatdirfs" ) . "/servlist_.conf";
    +
    +	# recreate the list only if the server list file has changed
    +	if( -f $server_file && 
    +			(!defined $last_modified || $last_modified != -M $server_file ) ) {
    +		$last_modified = -M _;
    +
    +		if( open my $fh, "<", $server_file ) {
    +			local $/ = "\n\n";
    +			while( my $record = <$fh> ) {
    +				chomp $record;
    +				next if $record =~ /^v=/; # skip the version line
    +				push @servers, Xchat::List::Network::Entry::parse( $record );
    +			}
    +		} else {
    +			warn "Unable to open '$server_file': $!";
    +		}
    +	}
    +
    +	my $clone = dclone( \@servers );
    +	return @$clone;
    +}
    +} # end of Xchat::List::Network
    +
    +{
    +package Xchat::List::Network::Entry;
    +use strict;
    +use warnings;
    +
    +my %key_for = (
    +	I => "irc_nick1",
    +	i => "irc_nick2",
    +	U => "irc_user_name",
    +	R => "irc_real_name",
    +	P => "server_password",
    +	B => "nickserv_password",
    +	N => "network",
    +	D => "selected",
    +	E => "encoding",
    +);
    +my $letter_key_re = join "|", keys %key_for;
    +
    +sub parse {
    +	my $data  = shift;
    +	my $entry = {
    +		irc_nick1       => undef,
    +		irc_nick2       => undef,
    +		irc_user_name   => undef,
    +		irc_real_name   => undef,
    +		server_password => undef,
    +
    +		# the order of the channels need to be maintained
    +		# list of { channel => .., key => ... }
    +		autojoins         => Xchat::List::Network::AutoJoin->new( '' ),
    +		connect_commands   => [],
    +		flags             => {},
    +		selected          => undef,
    +		encoding          => undef,
    +		servers           => [],
    +		nickserv_password => undef,
    +		network           => undef,
    +	};
    +
    +	my @fields = split /\n/, $data;
    +	chomp @fields;
    +
    +	for my $field ( @fields ) {
    +	SWITCH: for ( $field ) {
    +			/^($letter_key_re)=(.*)/ && do {
    +				$entry->{ $key_for{ $1 } } = $2;
    +				last SWITCH;
    +			};
    +
    +			/^J.(.*)/ && do {
    +				$entry->{ autojoins } =
    +					Xchat::List::Network::AutoJoin->new( $1 );
    +			};
    +
    +			/^F.(.*)/ && do {
    +				$entry->{ flags } = parse_flags( $1 );
    +			};
    +
    +			/^S.(.+)/ && do {
    +				push @{$entry->{servers}}, parse_server( $1 );
    +			};
    +
    +			/^C.(.+)/ && do {
    +				push @{$entry->{connect_commands}}, $1;
    +			};
    +		}
    +	}
    +
    +#	$entry->{ autojoins } = $entry->{ autojoin_channels };
    +	return $entry;
    +}
    +
    +sub parse_flags {
    +	my $value = shift || 0;
    +	my %flags;
    +
    +	$flags{ "cycle" }         = $value & 1  ? 1 : 0;
    +	$flags{ "use_global" }    = $value & 2  ? 1 : 0;
    +	$flags{ "use_ssl" }       = $value & 4  ? 1 : 0;
    +	$flags{ "autoconnect" }   = $value & 8  ? 1 : 0;
    +	$flags{ "use_proxy" }     = $value & 16 ? 1 : 0;
    +	$flags{ "allow_invalid" } = $value & 32 ? 1 : 0;
    +
    +	return \%flags;
    +}
    +
    +sub parse_server {
    +	my $data = shift;
    +	if( $data ) {
    +		my ($host, $port) = split /\//, $data;
    +		unless( $port ) {
    +			my @parts = split /:/, $host;
    +
    +			# if more than 2 then we are probably dealing with a IPv6 address
    +			# if less than 2 then no port was specified
    +			if( @parts == 2 ) {
    +				$port = $parts[1];
    +			}
    +		}
    +
    +		$port ||= 6667;
    +		return { host => $host, port => $port };
    +	}
    +}
    +
    +} # end of Xchat::List::Network::Entry
    +
    +{
    +package Xchat::List::Network::AutoJoin;
    +use strict;
    +use warnings;
    +
    +use overload
    +#	'%{}' => \&as_hash,
    +#	'@{}' => \&as_array,
    +	'""'   => 'as_string',
    +	'0+'   => 'as_bool';
    +
    +sub new {
    +	my $class = shift;
    +	my $line = shift;
    +
    +	my @autojoins;
    +
    +	if ( $line ) {
    +		my ( $channels, $keys ) = split / /, $line, 2;
    +		my @channels = split /,/, $channels;
    +		my @keys     = split /,/, ($keys || '');
    +
    +		for my $channel ( @channels ) {
    +			my $key = shift @keys;
    +			$key = '' unless defined $key;
    +
    +			push @autojoins, {
    +				channel => $channel,
    +				key     => $key,
    +				};
    +		}
    +	}
    +	return bless \@autojoins, $class;
    +}
    +
    +sub channels {
    +	my $self = shift;
    +
    +	if( wantarray ) {
    +		return map { $_->{channel} } @$self;
    +	} else {
    +		return scalar @$self;
    +	}
    +}
    +
    +sub keys {
    +	my $self = shift;
    +	return map { $_->{key} } @$self  ;
    +
    +}
    +
    +sub pairs {
    +	my $self = shift;
    +
    +	my @channels = $self->channels;
    +	my @keys = $self->keys;
    +
    +	my @pairs = map { $_ => shift @keys } @channels;
    +}
    +
    +sub as_hash {
    +	my $self = shift;
    +	return +{ $self->pairs };
    +}
    +
    +sub as_string {
    +	my $self = shift;
    +	return join " ",
    +		join( ",", $self->channels ),
    +		join( ",", $self->keys );
    +}
    +
    +sub as_array {
    +	my $self = shift;
    +	return [ map { \%$_ } @$self ];
    +}
    +
    +sub as_bool {
    +	my $self = shift;
    +	return $self->channels ? 1 : "";
    +}
    +
    +} # end of Xchat::Server::AutoJoin
    +
    +1;
    diff --git a/xchat-2.8.8/plugins/perl/alt_completion.pl b/xchat-2.8.8/plugins/perl/alt_completion.pl
    new file mode 100644
    index 0000000..a21c24c
    --- /dev/null
    +++ b/xchat-2.8.8/plugins/perl/alt_completion.pl
    @@ -0,0 +1,463 @@
    +use strict;
    +use warnings;
    +use Xchat ();
    +use File::Spec ();
    +use File::Basename qw(fileparse);
    +
    +# if the last time you addressed someone was greater than this many minutes
    +# ago, ignore it
    +# this avoids having people you have talked to a long time ago coming up too
    +# early in the completion list
    +# Setting this to 0 will disable the check which is effectively the same as
    +# setting it to infinity
    +my $last_use_threshold = 10; # 10 minutes
    +
    +# added to the front of a completion the same way as a suffix, only if
    +# the word is at the beginning of the line
    +my $prefix = '';
    +
    +my $path_completion = 1;
    +my $base_path = '';
    +
    +Xchat::register(
    +	"Tab Completion", "1.0303_01", "Alternative tab completion behavior"
    +);
    +Xchat::hook_print( "Key Press", \&complete );
    +Xchat::hook_print( "Close Context", \&close_context );
    +Xchat::hook_print( "Focus Tab", \&focus_tab );
    +Xchat::hook_print( "Part", \&clean_selected );
    +Xchat::hook_print( "Part with Reason", \&clean_selected );
    +Xchat::hook_command( "", \&track_selected );
    +
    +sub SHIFT() { 1 }
    +sub CTRL() { 4 }
    +sub ALT() { 8 }
    +
    +my %completions;
    +my %last_visit;
    +my %selected;
    +my %escape_map = (
    +	'[' => qr![\[{]!,
    +	'{' => qr![\[{]!,
    +	'}' => qr![\]}]!,
    +	']' => qr![\]}]!,
    +	'\\' => qr![\\\|]!,
    +	'|' => qr![\\\|]!,
    +	'.' => qr!\.!,
    +	'^' => qr!\^!,
    +	'$' => qr!\$!,
    +	'*' => qr!\*!,
    +	'+' => qr!\+!,
    +	'?' => qr!\?!,
    +	'(' => qr!\(!,
    +	')' => qr!\)!,
    +	'-' => qr!\-!,
    +);
    +
    +my $escapes = join "", keys %escape_map;
    +$escapes = qr/[\Q$escapes\E]/;
    +
    +sub complete {
    +	# if $_[0][0] contains the value of the key pressed
    +	# $_[0][1] contains modifiers
    +	# the value for tab is 0xFF09
    +	# the value for shift-tab(Left Tab) is 0xFE20
    +	# we don't care about other keys
    +
    +	return Xchat::EAT_NONE unless $_[0][0] == 0xFF09 || $_[0][0] == 0xFE20;
    +	return Xchat::EAT_NONE if $_[0][0] == 0xFF09 && $_[0][1] & (CTRL|ALT|SHIFT);
    +	
    +	# we also don't care about other kinds of tabs besides channel tabs
    +#	return Xchat::EAT_NONE unless Xchat::context_info()->{type} == 2;
    +	
    +	# In case some other script decides to be stupid and alter the base index
    +	local $[ = 0;
    +	
    +	# loop backwards for shift+tab
    +	my $delta = $_[0][1] & SHIFT ? -1 : 1;
    +	my $context = Xchat::get_context;
    +	$completions{$context} ||= {};
    +	
    +	my $completions = $completions{$context};
    +	$completions->{pos} ||= -1;
    +
    +	my $suffix = Xchat::get_prefs( "completion_suffix" );
    +	$suffix =~ s/^\s+//;
    +	
    +	my $input = Xchat::get_info( "inputbox" );
    +	my $cursor_pos = Xchat::get_info( "state_cursor" );
    +	my $left = substr( $input, 0, $cursor_pos );
    +	my $right = substr( $input, $cursor_pos );
    +	my $length = length $left;
    +
    +	# trim spaces from the end of $left to avoid grabbing the wrong word
    +	# this is mainly needed for completion at the very beginning where a space
    +	# is added after the completion
    +	$left =~ s/\s+$//;
    +
    +	# always add one to the index because
    +	# 1) if a space is found we want the position after it
    +	# 2) if a space isn't found then we get back -1
    +	my $word_start = rindex( $left, " " ) + 1;
    +	my $word = substr( $left, $word_start );
    +	$left = substr( $left, 0, -length $word );
    +
    +	my $command_char = Xchat::get_prefs( "input_command_char" );
    +	# ignore commands
    +	if( ($word !~ m{^[${command_char}]})
    +		or ( $word =~ m{^[${command_char}]} and $word_start != 0 ) ) {
    +
    +		if( $cursor_pos == length $input # end of input box
    +			# not a valid nick char
    +			&& $input =~ /(?{pos} # not continuing a completion
    +			&& $word !~ m{^(?:[&#/~]|[[:alpha:]]:\\)} ) { # not a channel or path
    +			$word_start = $cursor_pos;
    +			$left = $input;
    +			$length = length $length;
    +			$right = "";
    +			$word = "";
    +		}
    +
    +		if( $word_start == 0 && $prefix && $word =~ /^\Q$prefix/ ) {
    +			$word =~ s/^\Q$prefix//;
    +		}
    +
    +		my $completed; # this is going to be the "completed" word
    +
    +		# for parital completions and channel names so a : isn't added
    +		my $skip_suffix = ($word =~ /^[&#]/) ? 1 : 0;
    +		
    +		# continuing from a previous completion
    +		if(
    +			exists $completions->{matches} && @{$completions->{matches}}
    +			&& $cursor_pos == $completions->{pos}
    +			&& $word =~ /^\Q$completions->{matches}[$completions->{index}]/
    +		) {
    +			$completions->{index} += $delta;
    +
    +			if( $completions->{index} < 0 ) {
    +				$completions->{index} += @{$completions->{matches}};
    +			} else {
    +				$completions->{index} %= @{$completions->{matches}};
    +			}
    +
    +			$completed = $completions->{matches}[ $completions->{index} ];
    +		} else {
    +
    +			if( $word =~ /^[&#]/ ) {
    +			# channel name completion
    +				$completions->{matches} = [ matching_channels( $word ) ];
    +			} elsif( $word =~ m{^(?:~|/|[[:alpha:]]:\\)} ) {
    +			# file name completion
    +				$completions->{matches} = [ matching_files( $word ) ];
    +				$skip_suffix = 1;
    +			} else {
    +			# nick completion
    +				# fix $word so { equals [, ] equals }, \ equals |
    +				# and escape regex metacharacters
    +				$word =~ s/($escapes)/$escape_map{$1}/g;
    +
    +				$completions->{matches} = [ matching_nicks( $word ) ];
    +			}
    +			$completions->{index} = 0;
    +
    +			$completed = $completions->{matches}[ $completions->{index} ];
    +		}
    +		
    +		my $completion_amount = Xchat::get_prefs( "completion_amount" );
    +		
    +		# don't cycle if the number of possible completions is greater than
    +		# completion_amount
    +		if(
    +			@{$completions->{matches}} > $completion_amount
    +			&& @{$completions->{matches}} != 1
    +		) {
    +			# don't print if we tabbed in the beginning and the list of possible
    +			# completions includes all nicks in the channel
    +			if( @{$completions->{matches}} < Xchat::get_list("users") ) {
    +				Xchat::print( join " ", @{$completions->{matches}}, "\n" );
    +			}
    +			
    +			$completed = lcs( $completions->{matches} );
    +			$skip_suffix = 1;
    +		}
    +		
    +		if( $completed ) {
    +			
    +			if( $word_start == 0 && !$skip_suffix ) {
    +				# at the start of the line append completion suffix
    +				Xchat::command( "settext $prefix$completed$suffix$right");
    +				$completions->{pos} = length( "$prefix$completed$suffix" );
    +			} else {
    +				Xchat::command( "settext $left$completed$right" );
    +				$completions->{pos} = length( "$left$completed" );
    +			}
    +			
    +			Xchat::command( "setcursor $completions->{pos}" );
    +		}
    +
    +=begin
    +# debugging stuff
    +		local $, = " ";
    +		my $input_length = length $input;
    +		Xchat::print [
    +			qq{input[$input]},
    +			qq{input_length[$input_length]},
    +			qq{cursor[$cursor_pos]},
    +			qq{start[$word_start]},
    +			qq{length[$length]},
    +			qq{left[$left]},
    +			qq{word[$word]}, qq{[right[$right]},
    +			qq{completed[$completed]},
    +			qq{pos[$completions->{pos}]},
    +		];
    +		use Data::Dumper;
    +		local $Data::Dumper::Indent = 0;
    +		Xchat::print Dumper $completions->{matches};
    +=cut
    +
    +		return Xchat::EAT_ALL;
    +	} else {
    +		return Xchat::EAT_NONE;
    +	}
    +}
    +
    +
    +# all channels starting with $word
    +sub matching_channels {
    +	my $word = shift;
    +
    +	# for use in compare_channels();
    +	our $current_chan;
    +	local $current_chan = Xchat::get_info( "channel" );
    +
    +	my $conn_id = Xchat::get_info( "id" );
    +	$word =~ s/^[&#]+//;
    +
    +	return
    +		map {	$_->[1]->{channel} }
    +		sort compare_channels map {
    +			my $chan = $_->{channel};
    +			$chan =~ s/^[#&]+//;
    +
    +			# comparisons will be done based only on the name
    +			# matching name, same connection, only channels
    +			$chan =~ /^$word/ && $_->{id} == $conn_id ?
    +			[ $chan, $_ ] :
    +			()
    +		} channels();
    +}
    +
    +sub channels {
    +	return grep { $_->{type} == 2 } Xchat::get_list( "channels" );
    +}
    +
    +sub compare_channels {
    +	# package variable, value set in matching_channels()
    +	our $current_chan;
    +
    +	# turn off warnings generated from channels that have not yet been visited
    +	# since the script was loaded
    +	no warnings "uninitialized";
    +
    +	# the current channel is always first, then ordered by most recently visited
    +	return
    +		$a->[1]{channel} eq $current_chan ? -1 :
    +		$b->[1]{channel} eq $current_chan ? 1 :
    +		$last_visit{ $b->[1]{context} } <=> $last_visit{ $a->[1]{context} }
    +		|| $a->[1]{channel} cmp $b->[1]{channel};
    +
    +}
    +
    +sub matching_nicks {
    +	my $word = shift;
    +
    +	# for use in compare_nicks()
    +	our ($my_nick, $selections, $now);
    +	local $my_nick = Xchat::get_info( "nick" );
    +	local $selections = $selected{ Xchat::get_context() };
    +	local $now = time;
    +
    +	return
    +		map { $_->{nick} }
    +		sort compare_nicks grep {
    +			$_->{nick} =~ /^$word/i
    +		} Xchat::get_list( "users" )
    +
    +}
    +
    +sub max {
    +	return unless @_;
    +	my $max = shift;
    +	for(@_) {
    +		$max = $_ if $_ > $max;
    +	}
    +	return $max;
    +}
    +
    +sub compare_times {
    +	# package variables set in matching_nicks()
    +	our $selections;
    +	our $now;
    +	
    +	for my $nick ( $a->{nick}, $b->{nick} ) {
    +		# turn off the warnings that get generated from users who have yet
    +		# to speak since the script was loaded
    +		no warnings "uninitialized";
    +
    +		if( $last_use_threshold
    +			&& (( $now - $selections->{$nick}) > ($last_use_threshold * 60)) ) {
    +			delete $selections->{ $nick }
    +		}
    +	}
    +	my $a_time = $selections->{ $a->{nick} } || 0 ;
    +	my $b_time = $selections->{ $b->{nick} } || 0 ;
    +	
    +	if( $a_time || $b_time ) {
    +		return $b_time <=> $a_time;
    +	} elsif( !$a_time && !$b_time ) {
    +		return $b->{lasttalk} <=> $a->{lasttalk};
    +	}
    +
    +}
    +
    +sub compare_nicks {
    +	# more package variables, value set in matching_nicks()
    +	our $my_nick;
    +
    +	# our own nick is always last, then ordered by the people we spoke to most
    +	# recently and the people who were speaking most recently
    +	return 
    +		$a->{nick} eq $my_nick ? 1 :
    +		$b->{nick} eq $my_nick ? -1 :
    +		compare_times()
    +		|| Xchat::nickcmp( $a->{nick}, $b->{nick} );
    +
    +#		$selections->{ $b->{nick} } <=> $selections->{ $a->{nick} }
    +#		||	$b->{lasttalk} <=> $a->{lasttalk}
    +
    +}
    +
    +sub matching_files {
    +	my $word = shift;
    +
    +	my $path = expand_tilde( $word );
    +	my ($file, $dir) = fileparse( $path );
    +
    +	if( opendir my $dir_handle, $dir ) {
    +		my @files;
    +
    +		if( $file ) {
    +			@files = grep { /^\Q$file/ } readdir $dir_handle;
    +		} else {
    +			@files = readdir $dir_handle;
    +		}
    +
    +		return sort map { File::Spec->catfile( $dir, $_ ) }
    +			grep { !/^\.{1,2}$/ } @files;
    +	} else {
    +		return ();
    +	}
    +}
    +
    +# Remove completion related data for tabs that are closed
    +sub close_context {
    +	my $context = Xchat::get_context;
    +	delete $completions{$context};
    +	delete $last_visit{$context};
    +	return Xchat::EAT_NONE;
    +}
    +
    +# track visit times
    +sub focus_tab {
    +	$last_visit{Xchat::get_context()} = time();
    +}
    +
    +# keep track of the last time a message was addressed to someone
    +# a message is considered addressed to someone if their nick is used followed
    +# by the completion suffix
    +sub track_selected {
    +	my $input = $_[1][0];
    +	return Xchat::EAT_NONE unless defined $input;
    +
    +	my $suffix = Xchat::get_prefs( "completion_suffix" );
    +	for( grep defined, $input =~ /^(.+)\Q$suffix/, $_[0][0] ) {
    +		if( in_channel( $_ ) ) {
    +			$selected{Xchat::get_context()}{$_} = time();
    +			last;
    +		}
    +	}
    +
    +	return Xchat::EAT_NONE;
    +}
    +
    +# if a user is in the current channel
    +# user_info() can also be used instead of the loop
    +sub in_channel {
    +	my $target = shift;
    +	for my $nick ( nicks() ) {
    +		if( $nick eq $target ) {
    +			return 1;
    +		}
    +	}
    +
    +	return 0;
    +}
    +
    +# list of nicks in the current channel
    +sub nicks {
    +	return map { $_->{nick} } Xchat::get_list( "users" );
    +}
    +
    +# remove people from the selected list when they leave the channel
    +sub clean_selected {
    +	delete $selected{ Xchat::get_context() }{$_[0][0]};
    +	return Xchat::EAT_NONE;
    +}
    +
    +# Longest common substring
    +# Used for partial completion when using non-cycling completion
    +sub lcs {
    +	my @nicks = @{+shift};
    +	return "" if @nicks == 0;
    +	return $nicks[0] if @nicks == 1;
    +
    +	my $substring = shift @nicks;
    +
    +	while(@nicks) {
    +		$substring = common_string( $substring, shift @nicks );
    +	}
    +	
    +	return $substring;
    +}
    +
    +sub common_string {
    +	my ($nick1, $nick2) = @_;
    +	my $index = 0;
    +
    +	$index++ while(
    +		($index < length $nick1) && ($index < length $nick2) &&
    +			lc(substr( $nick1, $index, 1 )) eq lc(substr( $nick2, $index, 1 ))
    +	);
    +	
    +	
    +	return substr( $nick1, 0, $index );
    +}
    +
    +sub expand_tilde {
    +	my $file = shift;
    +
    +	$file =~ s/^~/home_dir()/e;
    +	return $file;
    +}
    +
    +sub home_dir {
    +	return $base_path if $base_path;
    +
    +	if ( $^O eq "MSWin32" ) {
    +		return $ENV{USERPROFILE};
    +	} else {
    +		return ((getpwuid($>))[7] ||  $ENV{HOME} || $ENV{LOGDIR});
    +	}
    +}
    diff --git a/xchat-2.8.8/plugins/perl/generate_header b/xchat-2.8.8/plugins/perl/generate_header
    new file mode 100755
    index 0000000..05b12b7
    --- /dev/null
    +++ b/xchat-2.8.8/plugins/perl/generate_header
    @@ -0,0 +1,36 @@
    +#!/usr/bin/perl
    +
    +use strict;
    +use warnings;
    +
    +sub header {
    +  my $file = shift;
    +  open my $input, "<", $file or die "Couldn't open '$file':$!";
    +  my @file = <$input>;
    +  close $file;
    +  return qq{"#line 1 \\"$file\\"\\n"\n}, toc(@file);
    +}
    +
    +sub toc {
    +  my @lines = @_;
    +  for( @lines ) {
    +    if( /^\s*$/s ) { $_ = qq{"\\n"\n}; next; }
    +    if( /^\s*#/ ) { $_ = qq{"\\n"\n}; next; }
    +    s/\\/\\\\/g; # double the number of \'s
    +    s/"/\\"/g;
    +    s/^\s*/"/;
    +    s/\n/\\n"\n/;
    +  }
    +  return @lines;
    +}
    +
    +for my $files ( [ "Xchat.pm", "xchat.pm.h" ], [ "IRC.pm", "irc.pm.h" ] ) {
    +	my ($input, $output) = @$files;
    +
    +	open my $header, ">", $output or die "Couldn't open '$output': $!";
    +
    +	print $header qq{#line 1 "$input"\n};
    +	print $header header( $input );
    +
    +	close $header;
    +}
    diff --git a/xchat-2.8.8/plugins/perl/perl.c b/xchat-2.8.8/plugins/perl/perl.c
    new file mode 100644
    index 0000000..989deeb
    --- /dev/null
    +++ b/xchat-2.8.8/plugins/perl/perl.c
    @@ -0,0 +1,1518 @@
    +/* X-Chat 2.0 PERL Plugin
    + * Copyright (C) 1998-2002 Peter Zelezny.
    + *
    + * This program is free software; you can redistribute it and/or modify
    + * it under the terms of the GNU General Public License as published by
    + * the Free Software Foundation; either version 2 of the License, or
    + * (at your option) any later version.
    + *
    + * This program 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 General Public License for more details.
    + *
    + * You should have received a copy of the GNU General Public License
    + * along with this program; if not, write to the Free Software
    + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
    + */
    +
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#ifdef ENABLE_NLS
    +#include 
    +#endif
    +#ifdef WIN32
    +#include 
    +#endif
    +
    +#undef PACKAGE
    +#include "../../config.h"		  /* for #define OLD_PERL */
    +#include "xchat-plugin.h"
    +
    +static xchat_plugin *ph;		  /* plugin handle */
    +
    +static int perl_load_file (char *script_name);
    +
    +#ifdef WIN32
    +
    +static DWORD
    +child (char *str)
    +{
    +	MessageBoxA (0, str, "Perl DLL Error",
    +					 MB_OK | MB_ICONHAND | MB_SETFOREGROUND | MB_TASKMODAL);
    +	return 0;
    +}
    +
    +static void
    +thread_mbox (char *str)
    +{
    +	DWORD tid;
    +
    +	CloseHandle (CreateThread (NULL, 0, (LPTHREAD_START_ROUTINE) child,
    +										str, 0, &tid));
    +}
    +
    +#endif
    +
    +/* leave this before XSUB.h, to avoid readdir() being redefined */
    +
    +static void
    +perl_auto_load_from_path (const char *path)
    +{
    +	DIR *dir;
    +	struct dirent *ent;
    +
    +	dir = opendir (path);
    +	if (dir) {
    +		while ((ent = readdir (dir))) {
    +			int len = strlen (ent->d_name);
    +			if (len > 3 && strcasecmp (".pl", ent->d_name + len - 3) == 0) {
    +				char *file = malloc (len + strlen (path) + 2);
    +				sprintf (file, "%s/%s", path, ent->d_name);
    +				perl_load_file (file);
    +				free (file);
    +			}
    +		}
    +		closedir (dir);
    +	}
    +}
    +
    +static int
    +perl_auto_load (void *unused)
    +{
    +	const char *xdir;
    +	char *sub_dir;
    +#ifdef WIN32
    +	int copied = 0;
    +	char *slash = NULL;
    +#endif
    +
    +	/* get the dir in local filesystem encoding (what opendir() expects!) */
    +	xdir = xchat_get_info (ph, "xchatdirfs");
    +	if (!xdir)			/* xchatdirfs is new for 2.0.9, will fail on older */
    +		xdir = xchat_get_info (ph, "xchatdir");
    +
    +	/* autoload from ~/.xchat2/ or ${APPDATA}\X-Chat 2\ on win32 */
    +	perl_auto_load_from_path (xdir);
    +
    +	sub_dir = malloc (strlen (xdir) + 9);
    +	strcpy (sub_dir, xdir);
    +	strcat (sub_dir, "/plugins");
    +	perl_auto_load_from_path (sub_dir);
    +	free (sub_dir);
    +
    +#ifdef WIN32
    +	/* autoload from  C:\program files\xchat\plugins\ */
    +	sub_dir = malloc (1025 + 9);
    +	copied = GetModuleFileName( 0, sub_dir, 1024 );
    +	sub_dir[copied] = '\0';
    +	slash = strrchr( sub_dir, '\\' );
    +	if( slash != NULL ) {
    +		*slash = '\0';
    +	}
    +	perl_auto_load_from_path ( strncat (sub_dir, "\\plugins", 9));
    +	free (sub_dir);
    +#endif
    +	return 0;
    +}
    +
    +#include 
    +#define WIN32IOP_H
    +#include 
    +#include 
    +
    +typedef struct
    +{
    +	SV *callback;
    +	SV *userdata;
    +	xchat_hook *hook;   /* required for timers */
    +	xchat_context *ctx; /* allow timers to remember their context */
    +	SV *package;      /* need to track the package name when removing hooks
    +	                       by returning REMOVE
    +							   */
    +	unsigned int depth;
    +} HookData;
    +
    +static PerlInterpreter *my_perl = NULL;
    +extern void boot_DynaLoader (pTHX_ CV * cv);
    +
    +/*
    +  this is used for autoload and shutdown callbacks
    +*/
    +static int
    +execute_perl (SV * function, char *args)
    +{
    +
    +	int count, ret_value = 1;
    +
    +	dSP;
    +	ENTER;
    +	SAVETMPS;
    +
    +	PUSHMARK (SP);
    +	XPUSHs (sv_2mortal (newSVpv (args, 0)));
    +	PUTBACK;
    +
    +	count = call_sv (function, G_EVAL | G_SCALAR);
    +	SPAGAIN;
    +
    +	if (SvTRUE (ERRSV)) {
    +		/*STRLEN n_a;
    +		xchat_printf(ph, "Perl error: %s\n", SvPV(ERRSV, count)); */
    +		if (!SvOK (POPs)) {}		/* remove undef from the top of the stack */
    +	} else if (count != 1) {
    +		xchat_printf (ph, "Perl error: expected 1 value from %s, "
    +						  "got: %d\n", function, count);
    +	} else {
    +		ret_value = POPi;
    +	}
    +
    +	PUTBACK;
    +	FREETMPS;
    +	LEAVE;
    +
    +	return ret_value;
    +}
    +
    +static char *
    +get_filename (char *word[], char *word_eol[])
    +{
    +	int len;
    +	char *file;
    +
    +	len = strlen (word[2]);
    +
    +	/* if called as /load "filename.pl" the only difference between word and
    +	 * word_eol will be the two quotes
    +	 */
    +	
    +	if (strchr (word[2], ' ') != NULL
    +		|| (strlen (word_eol[2]) - strlen(word[2])) == 2 )
    +	{
    +		file = word[2];
    +	} else {
    +		file = word_eol[2];
    +	}
    +
    +	len = strlen (file);
    +
    +	if (len > 3 && strncasecmp (".pl", file + len - 3, 3) == 0) {
    +		return file;
    +	}
    +
    +	return NULL;
    +}
    +
    +static SV *
    +list_item_to_sv ( xchat_list *list, const char *const *fields )
    +{
    +	HV *hash = newHV();
    +	SV *field_value;
    +	const char *field;
    +	int field_index = 0;
    +	const char *field_name;
    +	int name_len;
    +
    +	while (fields[field_index] != NULL) {
    +		field_name = fields[field_index] + 1;
    +		name_len = strlen (field_name);
    +
    +		switch (fields[field_index][0]) {
    +		case 's':
    +			field = xchat_list_str (ph, list, field_name);
    +			if (field != NULL) {
    +				field_value = newSVpvn (field, strlen (field));
    +			} else {
    +				field_value = &PL_sv_undef;
    +			}
    +			break;
    +		case 'p':
    +			field_value = newSViv (PTR2IV (xchat_list_str (ph, list,
    +																	 field_name)));
    +			break;
    +		case 'i':
    +			field_value = newSVuv (xchat_list_int (ph, list, field_name));
    +			break;
    +		case 't':
    +			field_value = newSVnv (xchat_list_time (ph, list, field_name));
    +			break;
    +		default:
    +			field_value = &PL_sv_undef;
    +		}
    +		hv_store (hash, field_name, name_len, field_value, 0);
    +		field_index++;
    +	}
    +	return sv_2mortal (newRV_noinc ((SV *) hash));
    +}
    +
    +static AV *
    +array2av (char *array[])
    +{
    +	int count = 0;
    +	SV *temp = NULL;
    +	AV *av = newAV();
    +	sv_2mortal ((SV *)av);
    +
    +	for (
    +		count = 1;
    +		count < 32 && array[count] != NULL && array[count][0] != 0;
    +		count++
    +	) {
    +		temp = newSVpv (array[count], 0);
    +		SvUTF8_on (temp);
    +		av_push (av, temp);
    +	}
    +
    +	return av;
    +}
    +
    +static int
    +fd_cb (int fd, int flags, void *userdata)
    +{
    +	HookData *data = (HookData *) userdata;
    +	int retVal = 0;
    +	int count = 0;
    +
    +	dSP;
    +	ENTER;
    +	SAVETMPS;
    +
    +	PUSHMARK (SP);
    +	XPUSHs (data->userdata);
    +	PUTBACK;
    +
    +	count = call_sv (data->callback, G_EVAL);
    +	SPAGAIN;
    +
    +	if (SvTRUE (ERRSV)) {
    +		xchat_printf (ph, "Error in fd callback %s", SvPV_nolen (ERRSV));
    +		if (!SvOK (POPs)) {}		  /* remove undef from the top of the stack */
    +		retVal = XCHAT_EAT_ALL;
    +	} else {
    +		if (count != 1) {
    +			xchat_print (ph, "Fd handler should only return 1 value.");
    +			retVal = XCHAT_EAT_NONE;
    +		} else {
    +			retVal = POPi;
    +			if (retVal == 0) {
    +				/* if 0 is returned, the fd is going to get unhooked */
    +				PUSHMARK (SP);
    +				XPUSHs (sv_2mortal (newSViv (PTR2IV (data->hook))));
    +				PUTBACK;
    +
    +				call_pv ("Xchat::unhook", G_EVAL);
    +				SPAGAIN;
    +
    +				SvREFCNT_dec (data->callback);
    +
    +				if (data->userdata) {
    +					SvREFCNT_dec (data->userdata);
    +				}
    +				free (data);
    +			}
    +		}
    +
    +	}
    +
    +	PUTBACK;
    +	FREETMPS;
    +	LEAVE;
    +
    +	return retVal;
    +}
    +
    +static int
    +timer_cb (void *userdata)
    +{
    +	HookData *data = (HookData *) userdata;
    +	int retVal = 0;
    +	int count = 0;
    +
    +	dSP;
    +	ENTER;
    +	SAVETMPS;
    +
    +	PUSHMARK (SP);
    +	XPUSHs (data->userdata);
    +	PUTBACK;
    +
    +	if (data->ctx) {
    +		xchat_set_context (ph, data->ctx);
    +	}
    +	count = call_sv (data->callback, G_EVAL);
    +	SPAGAIN;
    +
    +	if (SvTRUE (ERRSV)) {
    +		xchat_printf (ph, "Error in timer callback %s", SvPV_nolen (ERRSV));
    +		if (!SvOK (POPs)) {}		  /* remove undef from the top of the stack */
    +		retVal = XCHAT_EAT_ALL;
    +	} else {
    +		if (count != 1) {
    +			xchat_print (ph, "Timer handler should only return 1 value.");
    +			retVal = XCHAT_EAT_NONE;
    +		} else {
    +			retVal = POPi;
    +			if (retVal == 0) {
    +				/* if 0 is return the timer is going to get unhooked */
    +				PUSHMARK (SP);
    +				XPUSHs (sv_2mortal (newSViv (PTR2IV (data->hook))));
    +				XPUSHs (sv_mortalcopy (data->package));
    +				PUTBACK;
    +
    +				call_pv ("Xchat::unhook", G_EVAL);
    +				SPAGAIN;
    +			}
    +		}
    +
    +	}
    +
    +	PUTBACK;
    +	FREETMPS;
    +	LEAVE;
    +
    +	return retVal;
    +}
    +
    +static int
    +server_cb (char *word[], char *word_eol[], void *userdata)
    +{
    +	HookData *data = (HookData *) userdata;
    +	int retVal = 0;
    +	int count = 0;
    +
    +	dSP;
    +	ENTER;
    +	SAVETMPS;
    +
    +	if (data->depth)
    +		return XCHAT_EAT_NONE;
    +
    +	/*               xchat_printf (ph, */
    +	/*                               "Recieved %d words in server callback", av_len (wd)); */
    +	PUSHMARK (SP);
    +	XPUSHs (newRV_noinc ((SV *) array2av (word)));
    +	XPUSHs (newRV_noinc ((SV *) array2av (word_eol)));
    +	XPUSHs (data->userdata);
    +	PUTBACK;
    +
    +	data->depth++;
    +	count = call_sv (data->callback, G_EVAL);
    +	data->depth--;
    +	SPAGAIN;
    +	if (SvTRUE (ERRSV)) {
    +		xchat_printf (ph, "Error in server callback %s", SvPV_nolen (ERRSV));
    +		if (!SvOK (POPs)) {}		  /* remove undef from the top of the stack */
    +		retVal = XCHAT_EAT_NONE;
    +	} else {
    +		if (count != 1) {
    +			xchat_print (ph, "Server handler should only return 1 value.");
    +			retVal = XCHAT_EAT_NONE;
    +		} else {
    +			retVal = POPi;
    +		}
    +
    +	}
    +
    +	PUTBACK;
    +	FREETMPS;
    +	LEAVE;
    +
    +	return retVal;
    +}
    +
    +static int
    +command_cb (char *word[], char *word_eol[], void *userdata)
    +{
    +	HookData *data = (HookData *) userdata;
    +	int retVal = 0;
    +	int count = 0;
    +
    +	dSP;
    +	ENTER;
    +	SAVETMPS;
    +	
    +	if (data->depth)
    +		return XCHAT_EAT_NONE;
    +
    +	/*               xchat_printf (ph, "Recieved %d words in command callback", */
    +	/*                               av_len (wd)); */
    +	PUSHMARK (SP);
    +	XPUSHs (newRV_noinc ((SV *) array2av (word)));
    +	XPUSHs (newRV_noinc ((SV *) array2av (word_eol)));
    +	XPUSHs (data->userdata);
    +	PUTBACK;
    +
    +	data->depth++;
    +	count = call_sv (data->callback, G_EVAL);
    +	data->depth--;
    +	SPAGAIN;
    +	if (SvTRUE (ERRSV)) {
    +		xchat_printf (ph, "Error in command callback %s", SvPV_nolen (ERRSV));
    +		if (!SvOK (POPs)) {}		  /* remove undef from the top of the stack */
    +		retVal = XCHAT_EAT_XCHAT;
    +	} else {
    +		if (count != 1) {
    +			xchat_print (ph, "Command handler should only return 1 value.");
    +			retVal = XCHAT_EAT_NONE;
    +		} else {
    +			retVal = POPi;
    +		}
    +
    +	}
    +
    +	PUTBACK;
    +	FREETMPS;
    +	LEAVE;
    +
    +	return retVal;
    +}
    +
    +static int
    +print_cb (char *word[], void *userdata)
    +{
    +
    +	HookData *data = (HookData *) userdata;
    +	SV *temp = NULL;
    +	int retVal = 0;
    +	int count = 1;
    +	int last_index = 31;
    +	/* must be initialized after SAVETMPS */
    +	AV *wd = NULL;
    +
    +	dSP;
    +	ENTER;
    +	SAVETMPS;
    +
    +	if (data->depth)
    +		return XCHAT_EAT_NONE;
    +
    +	wd = newAV ();
    +	sv_2mortal ((SV *) wd);
    +
    +	/* need to scan backwards to find the index of the last element since some
    +	   events such as "DCC Timeout" can have NULL elements in between non NULL
    +	   elements */
    +
    +	while (last_index >= 0
    +			 && (word[last_index] == NULL || word[last_index][0] == 0)) {
    +		last_index--;
    +	}
    +
    +	for (count = 1; count <= last_index; count++) {
    +		if (word[count] == NULL) {
    +			av_push (wd, &PL_sv_undef);
    +		} else if (word[count][0] == 0) {
    +			av_push (wd, newSVpvn ("",0));	
    +		} else {
    +			temp = newSVpv (word[count], 0);
    +			SvUTF8_on (temp);
    +			av_push (wd, temp);
    +		}
    +	}
    +
    +	/*xchat_printf (ph, "Recieved %d words in print callback", av_len (wd)+1); */
    +	PUSHMARK (SP);
    +	XPUSHs (newRV_noinc ((SV *) wd));
    +	XPUSHs (data->userdata);
    +	PUTBACK;
    +
    +	data->depth++;
    +	count = call_sv (data->callback, G_EVAL);
    +	data->depth--;
    +	SPAGAIN;
    +	if (SvTRUE (ERRSV)) {
    +		xchat_printf (ph, "Error in print callback %s", SvPV_nolen (ERRSV));
    +		if (!SvOK (POPs)) {}		  /* remove undef from the top of the stack */
    +		retVal = XCHAT_EAT_NONE;
    +	} else {
    +		if (count != 1) {
    +			xchat_print (ph, "Print handler should only return 1 value.");
    +			retVal = XCHAT_EAT_NONE;
    +		} else {
    +			retVal = POPi;
    +		}
    +
    +	}
    +
    +	PUTBACK;
    +	FREETMPS;
    +	LEAVE;
    +
    +	return retVal;
    +}
    +
    +/* custom IRC perl functions for scripting */
    +
    +/* Xchat::Internal::register (scriptname, version, desc, shutdowncallback, filename)
    + *
    + */
    +
    +static
    +XS (XS_Xchat_register)
    +{
    +	char *name, *version, *desc, *filename;
    +	void *gui_entry;
    +	dXSARGS;
    +	if (items != 4) {
    +		xchat_printf (ph,
    +						  "Usage: Xchat::Internal::register(scriptname, version, desc, filename)");
    +	} else {
    +		name = SvPV_nolen (ST (0));
    +		version = SvPV_nolen (ST (1));
    +		desc = SvPV_nolen (ST (2));
    +		filename = SvPV_nolen (ST (3));
    +
    +		gui_entry = xchat_plugingui_add (ph, filename, name,
    +													desc, version, NULL);
    +
    +		XSRETURN_IV (PTR2IV (gui_entry));
    +
    +	}
    +}
    +
    +
    +/* Xchat::print(output) */
    +static
    +XS (XS_Xchat_print)
    +{
    +
    +	char *text = NULL;
    +
    +	dXSARGS;
    +	if (items != 1) {
    +		xchat_print (ph, "Usage: Xchat::Internal::print(text)");
    +	} else {
    +		text = SvPV_nolen (ST (0));
    +		xchat_print (ph, text);
    +	}
    +	XSRETURN_EMPTY;
    +}
    +
    +static
    +XS (XS_Xchat_emit_print)
    +{
    +	char *event_name;
    +	int RETVAL;
    +	int count;
    +
    +	dXSARGS;
    +	if (items < 1) {
    +		xchat_print (ph, "Usage: Xchat::emit_print(event_name, ...)");
    +	} else {
    +		event_name = (char *) SvPV_nolen (ST (0));
    +		RETVAL = 0;
    +
    +		/* we need to figure out the number of defined values passed in */
    +		for (count = 0; count < items; count++) {
    +			if (!SvOK (ST (count))) {
    +				break;
    +			}
    +		}
    +
    +		switch (count) {
    +		case 1:
    +			RETVAL = xchat_emit_print (ph, event_name, NULL);
    +			break;
    +		case 2:
    +			RETVAL = xchat_emit_print (ph, event_name,
    +												SvPV_nolen (ST (1)), NULL);
    +			break;
    +		case 3:
    +			RETVAL = xchat_emit_print (ph, event_name,
    +												SvPV_nolen (ST (1)),
    +												SvPV_nolen (ST (2)), NULL);
    +			break;
    +		case 4:
    +			RETVAL = xchat_emit_print (ph, event_name,
    +												SvPV_nolen (ST (1)),
    +												SvPV_nolen (ST (2)),
    +												SvPV_nolen (ST (3)), NULL);
    +			break;
    +		case 5:
    +			RETVAL = xchat_emit_print (ph, event_name,
    +												SvPV_nolen (ST (1)),
    +												SvPV_nolen (ST (2)),
    +												SvPV_nolen (ST (3)),
    +												SvPV_nolen (ST (4)), NULL);
    +			break;
    +
    +		}
    +
    +		XSRETURN_IV (RETVAL);
    +	}
    +}
    +
    +static
    +XS (XS_Xchat_send_modes)
    +{
    +	AV *p_targets = NULL;
    +	int modes_per_line = 0;
    +	char sign;
    +	char mode;
    +	int i = 0;
    +	const char **targets;
    +	int target_count = 0;
    +	SV **elem;
    +
    +	dXSARGS;
    +	if (items < 3 || items > 4) {
    +		xchat_print (ph,
    +			"Usage: Xchat::send_modes( targets, sign, mode, modes_per_line)"
    +		);
    +	} else {
    +		if (SvROK (ST (0))) {
    +			p_targets = (AV*) SvRV (ST (0));
    +			target_count = av_len (p_targets) + 1;
    +			targets = malloc (target_count * sizeof (char *));
    +			for (i = 0; i < target_count; i++ ) {
    +				elem = av_fetch (p_targets, i, 0);
    +
    +				if (elem != NULL) {
    +					targets[i] = SvPV_nolen (*elem);
    +				} else {
    +					targets[i] = "";
    +				}
    +			}
    +		} else{
    +			targets = malloc (sizeof (char *));
    +			targets[0] = SvPV_nolen (ST (0));
    +			target_count = 1;
    +		}
    +		
    +		if (target_count == 0) {
    +			XSRETURN_EMPTY;
    +		}
    +
    +		sign = (SvPV_nolen (ST (1)))[0];
    +		mode = (SvPV_nolen (ST (2)))[0];
    +
    +		if (items == 4 ) {
    +			modes_per_line = (int) SvIV (ST (3)); 
    +		}
    +
    +		xchat_send_modes (ph, targets, target_count, modes_per_line, sign, mode);
    +		free (targets);
    +	}
    +}
    +static
    +XS (XS_Xchat_get_info)
    +{
    +	SV *temp = NULL;
    +	dXSARGS;
    +	if (items != 1) {
    +		xchat_print (ph, "Usage: Xchat::get_info(id)");
    +	} else {
    +		SV *id = ST (0);
    +		const char *RETVAL;
    +
    +		RETVAL = xchat_get_info (ph, SvPV_nolen (id));
    +		if (RETVAL == NULL) {
    +			XSRETURN_UNDEF;
    +		}
    +
    +		if (!strncmp ("win_ptr", SvPV_nolen (id), 7)) {
    +			XSRETURN_IV (PTR2IV (RETVAL));
    +		} else {
    +			
    +			if (
    +				!strncmp ("libdirfs", SvPV_nolen (id), 8) ||
    +				!strncmp ("xchatdirfs", SvPV_nolen (id), 10)
    +			) {
    +				XSRETURN_PV (RETVAL);
    +			} else {
    +				temp = newSVpv (RETVAL, 0);
    +				SvUTF8_on (temp);
    +				PUSHMARK (SP);
    +				XPUSHs (sv_2mortal (temp));
    +				PUTBACK;
    +			}
    +		}
    +	}
    +}
    +
    +static
    +XS (XS_Xchat_context_info)
    +{
    +	const char *const *fields;
    +	dXSARGS;
    +
    +	if (items > 0 ) {
    +		xchat_print (ph, "Usage: Xchat::Internal::context_info()");
    +	}
    +	fields = xchat_list_fields (ph, "channels" );
    +	XPUSHs (list_item_to_sv (NULL, fields));
    +	XSRETURN (1);
    +}
    +
    +static
    +XS (XS_Xchat_get_prefs)
    +{
    +	const char *str;
    +	int integer;
    +	SV *temp = NULL;
    +	dXSARGS;
    +	if (items != 1) {
    +		xchat_print (ph, "Usage: Xchat::get_prefs(name)");
    +	} else {
    +
    +
    +		switch (xchat_get_prefs (ph, SvPV_nolen (ST (0)), &str, &integer)) {
    +		case 0:
    +			XSRETURN_UNDEF;
    +			break;
    +		case 1:
    +			temp = newSVpv (str, 0);
    +			SvUTF8_on (temp);
    +			SP -= items;
    +			sp = mark;
    +			XPUSHs (sv_2mortal (temp));
    +			PUTBACK;
    +			break;
    +		case 2:
    +			XSRETURN_IV (integer);
    +			break;
    +		case 3:
    +			if (integer) {
    +				XSRETURN_YES;
    +			} else {
    +				XSRETURN_NO;
    +			}
    +		}
    +	}
    +}
    +
    +/* Xchat::Internal::hook_server(name, priority, callback, userdata) */
    +static
    +XS (XS_Xchat_hook_server)
    +{
    +
    +	char *name;
    +	int pri;
    +	SV *callback;
    +	SV *userdata;
    +	xchat_hook *hook;
    +	HookData *data;
    +
    +	dXSARGS;
    +
    +	if (items != 4) {
    +		xchat_print (ph,
    +						 "Usage: Xchat::Internal::hook_server(name, priority, callback, userdata)");
    +	} else {
    +		name = SvPV_nolen (ST (0));
    +		pri = (int) SvIV (ST (1));
    +		callback = ST (2);
    +		userdata = ST (3);
    +		data = NULL;
    +		data = malloc (sizeof (HookData));
    +		if (data == NULL) {
    +			XSRETURN_UNDEF;
    +		}
    +
    +		data->callback = sv_mortalcopy (callback);
    +		SvREFCNT_inc (data->callback);
    +		data->userdata = sv_mortalcopy (userdata);
    +		SvREFCNT_inc (data->userdata);
    +		data->depth = 0;
    +		data->package = NULL;
    +		hook = xchat_hook_server (ph, name, pri, server_cb, data);
    +
    +		XSRETURN_IV (PTR2IV (hook));
    +	}
    +}
    +
    +/* Xchat::Internal::hook_command(name, priority, callback, help_text, userdata) */
    +static
    +XS (XS_Xchat_hook_command)
    +{
    +	char *name;
    +	int pri;
    +	SV *callback;
    +	char *help_text = NULL;
    +	SV *userdata;
    +	xchat_hook *hook;
    +	HookData *data;
    +
    +	dXSARGS;
    +
    +	if (items != 5) {
    +		xchat_print (ph,
    +						 "Usage: Xchat::Internal::hook_command(name, priority, callback, help_text, userdata)");
    +	} else {
    +		name = SvPV_nolen (ST (0));
    +		pri = (int) SvIV (ST (1));
    +		callback = ST (2);
    +
    +		/* leave the help text has NULL if the help text is undefined to avoid
    +		 * overriding the default help message for builtin commands */
    +		if (SvOK(ST (3))) {
    +			help_text = SvPV_nolen (ST (3));
    +		}
    +
    +		userdata = ST (4);
    +		data = NULL;
    +
    +		data = malloc (sizeof (HookData));
    +		if (data == NULL) {
    +			XSRETURN_UNDEF;
    +		}
    +
    +		data->callback = sv_mortalcopy (callback);
    +		SvREFCNT_inc (data->callback);
    +		data->userdata = sv_mortalcopy (userdata);
    +		SvREFCNT_inc (data->userdata);
    +		data->depth = 0;
    +		data->package = NULL;
    +		hook = xchat_hook_command (ph, name, pri, command_cb, help_text, data);
    +
    +		XSRETURN_IV (PTR2IV (hook));
    +	}
    +
    +}
    +
    +/* Xchat::Internal::hook_print(name, priority, callback, [userdata]) */
    +static
    +XS (XS_Xchat_hook_print)
    +{
    +
    +	char *name;
    +	int pri;
    +	SV *callback;
    +	SV *userdata;
    +	xchat_hook *hook;
    +	HookData *data;
    +	dXSARGS;
    +	if (items != 4) {
    +		xchat_print (ph,
    +						 "Usage: Xchat::Internal::hook_print(name, priority, callback, userdata)");
    +	} else {
    +		name = SvPV_nolen (ST (0));
    +		pri = (int) SvIV (ST (1));
    +		callback = ST (2);
    +		data = NULL;
    +		userdata = ST (3);
    +
    +		data = malloc (sizeof (HookData));
    +		if (data == NULL) {
    +			XSRETURN_UNDEF;
    +		}
    +
    +		data->callback = sv_mortalcopy (callback);
    +		SvREFCNT_inc (data->callback);
    +		data->userdata = sv_mortalcopy (userdata);
    +		SvREFCNT_inc (data->userdata);
    +		data->depth = 0;
    +		data->package = NULL;
    +		hook = xchat_hook_print (ph, name, pri, print_cb, data);
    +
    +		XSRETURN_IV (PTR2IV (hook));
    +	}
    +}
    +
    +/* Xchat::Internal::hook_timer(timeout, callback, userdata) */
    +static
    +XS (XS_Xchat_hook_timer)
    +{
    +	int timeout;
    +	SV *callback;
    +	SV *userdata;
    +	xchat_hook *hook;
    +	SV *package;
    +	HookData *data;
    +
    +	dXSARGS;
    +
    +	if (items != 4) {
    +		xchat_print (ph,
    +						 "Usage: Xchat::Internal::hook_timer(timeout, callback, userdata, package)");
    +	} else {
    +		timeout = (int) SvIV (ST (0));
    +		callback = ST (1);
    +		data = NULL;
    +		userdata = ST (2);
    +		package = ST (3);
    +
    +		data = malloc (sizeof (HookData));
    +		if (data == NULL) {
    +			XSRETURN_UNDEF;
    +		}
    +
    +		data->callback = sv_mortalcopy (callback);
    +		SvREFCNT_inc (data->callback);
    +		data->userdata = sv_mortalcopy (userdata);
    +		SvREFCNT_inc (data->userdata);
    +		data->ctx = xchat_get_context (ph);
    +		data->package = sv_mortalcopy (package);
    +		SvREFCNT_inc (data->package);
    +		hook = xchat_hook_timer (ph, timeout, timer_cb, data);
    +		data->hook = hook;
    +
    +		XSRETURN_IV (PTR2IV (hook));
    +	}
    +}
    +
    +/* Xchat::Internal::hook_fd(fd, callback, flags, userdata) */
    +static
    +XS (XS_Xchat_hook_fd)
    +{
    +	int fd;
    +	SV *callback;
    +	int flags;
    +	SV *userdata;
    +	xchat_hook *hook;
    +	HookData *data;
    +
    +	dXSARGS;
    +
    +	if (items != 4) {
    +		xchat_print (ph,
    +						 "Usage: Xchat::Internal::hook_fd(fd, callback, flags, userdata)");
    +	} else {
    +		fd = (int) SvIV (ST (0));
    +		callback = ST (1);
    +		flags = (int) SvIV (ST (2));
    +		userdata = ST (3);
    +		data = NULL;
    +
    +#ifdef WIN32
    +		if ((flags & XCHAT_FD_NOTSOCKET) == 0) {
    +			/* this _get_osfhandle if from win32iop.h in the perl distribution,
    +			 *  not the one provided by Windows
    +			 */ 
    +			fd = _get_osfhandle(fd);
    +			if (fd < 0) {
    +				xchat_print(ph, "Invalid file descriptor");
    +				XSRETURN_UNDEF;
    +			}
    +		}
    +#endif
    +
    +		data = malloc (sizeof (HookData));
    +		if (data == NULL) {
    +			XSRETURN_UNDEF;
    +		}
    +
    +		data->callback = sv_mortalcopy (callback);
    +		SvREFCNT_inc (data->callback);
    +		data->userdata = sv_mortalcopy (userdata);
    +		SvREFCNT_inc (data->userdata);
    +		data->package = NULL;
    +		hook = xchat_hook_fd (ph, fd, flags, fd_cb, data);
    +		data->hook = hook;
    +
    +		XSRETURN_IV (PTR2IV (hook));
    +	}
    +}
    +
    +static
    +XS (XS_Xchat_unhook)
    +{
    +	xchat_hook *hook;
    +	HookData *userdata;
    +	int retCount = 0;
    +	dXSARGS;
    +	if (items != 1) {
    +		xchat_print (ph, "Usage: Xchat::unhook(hook)");
    +	} else {
    +		hook = INT2PTR (xchat_hook *, SvUV (ST (0)));
    +		userdata = (HookData *) xchat_unhook (ph, hook);
    +
    +		if (userdata != NULL) {
    +			if (userdata->callback != NULL) {
    +				SvREFCNT_dec (userdata->callback);
    +			}
    +
    +			if (userdata->userdata != NULL) {
    +				XPUSHs (sv_mortalcopy (userdata->userdata));
    +				SvREFCNT_dec (userdata->userdata);
    +				retCount = 1;
    +			}
    +
    +			if (userdata->package != NULL) {
    +				SvREFCNT_dec (userdata->package);
    +			}
    +			free (userdata);
    +		}
    +		XSRETURN (retCount);
    +	}
    +	XSRETURN_EMPTY;
    +}
    +
    +/* Xchat::Internal::command(command) */
    +static
    +XS (XS_Xchat_command)
    +{
    +	char *cmd = NULL;
    +
    +	dXSARGS;
    +	if (items != 1) {
    +		xchat_print (ph, "Usage: Xchat::Internal::command(command)");
    +	} else {
    +		cmd = SvPV_nolen (ST (0));
    +		xchat_command (ph, cmd);
    +
    +	}
    +	XSRETURN_EMPTY;
    +}
    +
    +static
    +XS (XS_Xchat_find_context)
    +{
    +	char *server = NULL;
    +	char *chan = NULL;
    +	xchat_context *RETVAL;
    +
    +	dXSARGS;
    +	if (items > 2)
    +		xchat_print (ph, "Usage: Xchat::find_context ([channel, [server]])");
    +	{
    +
    +		switch (items) {
    +		case 0:						  /* no server name and no channel name */
    +			/* nothing to do, server and chan are already NULL */
    +			break;
    +		case 1:						  /* channel name only */
    +			/* change channel value only if it is true or 0 */
    +			/* otherwise leave it as null */
    +			if (SvTRUE (ST (0)) || SvNIOK (ST (0))) {
    +				chan = SvPV_nolen (ST (0));
    +				/*                               xchat_printf( ph, "XSUB - find_context( %s, NULL )", chan ); */
    +			}
    +			/* else { xchat_print( ph, "XSUB - find_context( NULL, NULL )" ); } */
    +			/* chan is already NULL */
    +			break;
    +		case 2:						  /* server and channel */
    +			/* change channel value only if it is true or 0 */
    +			/* otherwise leave it as NULL */
    +			if (SvTRUE (ST (0)) || SvNIOK (ST (0))) {
    +				chan = SvPV_nolen (ST (0));
    +				/*                               xchat_printf( ph, "XSUB - find_context( %s, NULL )", SvPV_nolen(ST(0) )); */
    +			}
    +
    +			/* else { xchat_print( ph, "XSUB - 2 arg NULL chan" ); } */
    +			/* change server value only if it is true or 0 */
    +			/* otherwise leave it as NULL */
    +			if (SvTRUE (ST (1)) || SvNIOK (ST (1))) {
    +				server = SvPV_nolen (ST (1));
    +				/*                               xchat_printf( ph, "XSUB - find_context( NULL, %s )", SvPV_nolen(ST(1) )); */
    +			}
    +			/*  else { xchat_print( ph, "XSUB - 2 arg NULL server" ); } */
    +			break;
    +		}
    +
    +		RETVAL = xchat_find_context (ph, server, chan);
    +		if (RETVAL != NULL) {
    +			/*                      xchat_print (ph, "XSUB - context found"); */
    +			XSRETURN_IV (PTR2IV (RETVAL));
    +		} else {
    +			/*           xchat_print (ph, "XSUB - context not found"); */
    +			XSRETURN_UNDEF;
    +		}
    +	}
    +}
    +
    +static
    +XS (XS_Xchat_get_context)
    +{
    +	dXSARGS;
    +	if (items != 0) {
    +		xchat_print (ph, "Usage: Xchat::get_context()");
    +	} else {
    +		XSRETURN_IV (PTR2IV (xchat_get_context (ph)));
    +	}
    +}
    +
    +static
    +XS (XS_Xchat_set_context)
    +{
    +	xchat_context *ctx;
    +	dXSARGS;
    +	if (items != 1) {
    +		xchat_print (ph, "Usage: Xchat::set_context(ctx)");
    +	} else {
    +		ctx = INT2PTR (xchat_context *, SvUV (ST (0)));
    +		XSRETURN_IV ((IV) xchat_set_context (ph, ctx));
    +	}
    +}
    +
    +static
    +XS (XS_Xchat_nickcmp)
    +{
    +	dXSARGS;
    +	if (items != 2) {
    +		xchat_print (ph, "Usage: Xchat::nickcmp(s1, s2)");
    +	} else {
    +		XSRETURN_IV ((IV) xchat_nickcmp (ph, SvPV_nolen (ST (0)),
    +													SvPV_nolen (ST (1))));
    +	}
    +}
    +
    +static
    +XS (XS_Xchat_get_list)
    +{
    +	SV *name;
    +	xchat_list *list;
    +	const char *const *fields;
    +	int count = 0;					  /* return value for scalar context */
    +	dXSARGS;
    +
    +	if (items != 1) {
    +		xchat_print (ph, "Usage: Xchat::get_list(name)");
    +	} else {
    +		SP -= items;				  /*remove the argument list from the stack */
    +
    +		name = ST (0);
    +
    +		list = xchat_list_get (ph, SvPV_nolen (name));
    +
    +		if (list == NULL) {
    +			XSRETURN_EMPTY;
    +		}
    +
    +		if (GIMME_V == G_SCALAR) {
    +			while (xchat_list_next (ph, list)) {
    +				count++;
    +			}
    +			xchat_list_free (ph, list);
    +			XSRETURN_IV ((IV) count);
    +		}
    +
    +		fields = xchat_list_fields (ph, SvPV_nolen (name));
    +		while (xchat_list_next (ph, list)) {
    +			XPUSHs (list_item_to_sv (list, fields));
    +		}
    +		xchat_list_free (ph, list);
    +
    +		PUTBACK;
    +		return;
    +	}
    +}
    +
    +static
    +XS (XS_Xchat_Embed_plugingui_remove)
    +{
    +	void *gui_entry;
    +	dXSARGS;
    +	if (items != 1) {
    +		xchat_print (ph, "Usage: Xchat::Embed::plugingui_remove(handle)");
    +	} else {
    +		gui_entry = INT2PTR (void *, SvUV (ST (0)));
    +		xchat_plugingui_remove (ph, gui_entry);
    +	}
    +	XSRETURN_EMPTY;
    +}
    +
    +/* xs_init is the second argument perl_parse. As the name hints, it
    +   initializes XS subroutines (see the perlembed manpage) */
    +static void
    +xs_init (pTHX)
    +{
    +	HV *stash;
    +
    +	/* This one allows dynamic loading of perl modules in perl
    +	   scripts by the 'use perlmod;' construction */
    +	newXS ("DynaLoader::boot_DynaLoader", boot_DynaLoader, __FILE__);
    +	/* load up all the custom IRC perl functions */
    +	newXS ("Xchat::Internal::register", XS_Xchat_register, __FILE__);
    +	newXS ("Xchat::Internal::hook_server", XS_Xchat_hook_server, __FILE__);
    +	newXS ("Xchat::Internal::hook_command", XS_Xchat_hook_command, __FILE__);
    +	newXS ("Xchat::Internal::hook_print", XS_Xchat_hook_print, __FILE__);
    +	newXS ("Xchat::Internal::hook_timer", XS_Xchat_hook_timer, __FILE__);
    +	newXS ("Xchat::Internal::hook_fd", XS_Xchat_hook_fd, __FILE__);
    +	newXS ("Xchat::Internal::unhook", XS_Xchat_unhook, __FILE__);
    +	newXS ("Xchat::Internal::print", XS_Xchat_print, __FILE__);
    +	newXS ("Xchat::Internal::command", XS_Xchat_command, __FILE__);
    +	newXS ("Xchat::Internal::set_context", XS_Xchat_set_context, __FILE__);
    +	newXS ("Xchat::Internal::get_info", XS_Xchat_get_info, __FILE__);
    +	newXS ("Xchat::Internal::context_info", XS_Xchat_context_info, __FILE__);
    +	newXS ("Xchat::Internal::get_list", XS_Xchat_get_list, __FILE__);
    +	
    +	newXS ("Xchat::find_context", XS_Xchat_find_context, __FILE__);
    +	newXS ("Xchat::get_context", XS_Xchat_get_context, __FILE__);
    +	newXS ("Xchat::get_prefs", XS_Xchat_get_prefs, __FILE__);
    +	newXS ("Xchat::emit_print", XS_Xchat_emit_print, __FILE__);
    +	newXS ("Xchat::send_modes", XS_Xchat_send_modes, __FILE__);
    +	newXS ("Xchat::nickcmp", XS_Xchat_nickcmp, __FILE__);
    +
    +	newXS ("Xchat::Embed::plugingui_remove", XS_Xchat_Embed_plugingui_remove,
    +			 __FILE__);
    +
    +	stash = get_hv ("Xchat::", TRUE);
    +	if (stash == NULL) {
    +		exit (1);
    +	}
    +
    +	newCONSTSUB (stash, "PRI_HIGHEST", newSViv (XCHAT_PRI_HIGHEST));
    +	newCONSTSUB (stash, "PRI_HIGH", newSViv (XCHAT_PRI_HIGH));
    +	newCONSTSUB (stash, "PRI_NORM", newSViv (XCHAT_PRI_NORM));
    +	newCONSTSUB (stash, "PRI_LOW", newSViv (XCHAT_PRI_LOW));
    +	newCONSTSUB (stash, "PRI_LOWEST", newSViv (XCHAT_PRI_LOWEST));
    +
    +	newCONSTSUB (stash, "EAT_NONE", newSViv (XCHAT_EAT_NONE));
    +	newCONSTSUB (stash, "EAT_XCHAT", newSViv (XCHAT_EAT_XCHAT));
    +	newCONSTSUB (stash, "EAT_PLUGIN", newSViv (XCHAT_EAT_PLUGIN));
    +	newCONSTSUB (stash, "EAT_ALL", newSViv (XCHAT_EAT_ALL));
    +	newCONSTSUB (stash, "FD_READ", newSViv (XCHAT_FD_READ));
    +	newCONSTSUB (stash, "FD_WRITE", newSViv (XCHAT_FD_WRITE));
    +	newCONSTSUB (stash, "FD_EXCEPTION", newSViv (XCHAT_FD_EXCEPTION));
    +	newCONSTSUB (stash, "FD_NOTSOCKET", newSViv (XCHAT_FD_NOTSOCKET));
    +	newCONSTSUB (stash, "KEEP", newSViv (1));
    +	newCONSTSUB (stash, "REMOVE", newSViv (0));
    +}
    +
    +static void
    +perl_init (void)
    +{
    +	int warn;
    +	int arg_count;
    +	char *perl_args[] = { "", "-e", "0", "-w" };
    +	char *env[] = { "" };
    +	static const char xchat_definitions[] = {
    +		/* Redefine the $SIG{__WARN__} handler to have XChat
    +		   printing warnings in the main window. (TheHobbit) */
    +#include "xchat.pm.h"
    +	};
    +#ifdef OLD_PERL
    +	static const char irc_definitions[] = {
    +#include "irc.pm.h"
    +	};
    +#endif
    +#ifdef ENABLE_NLS
    +
    +	/* Problem is, dynamicaly loaded modules check out the $]
    +	   var. It appears that in the embedded interpreter we get
    +	   5,00503 as soon as the LC_NUMERIC locale calls for a comma
    +	   instead of a point in separating integer and decimal
    +	   parts. I realy can't understant why... The following
    +	   appears to be an awful workaround... But it'll do until I
    +	   (or someone else :)) found the "right way" to solve this
    +	   nasty problem. (TheHobbit ) */
    +
    +	setlocale (LC_NUMERIC, "C");
    +
    +#endif
    +
    +	warn = 0;
    +	xchat_get_prefs (ph, "perl_warnings", NULL, &warn);
    +	arg_count = warn ? 4 : 3;
    +
    +	PERL_SYS_INIT3 (&arg_count, (char ***)&perl_args, (char ***)&env);
    +	my_perl = perl_alloc ();
    +	perl_construct (my_perl);
    +	PL_exit_flags |= PERL_EXIT_DESTRUCT_END;
    +	perl_parse (my_perl, xs_init, arg_count, perl_args, (char **)NULL);
    +
    +	/*
    +	   Now initialising the perl interpreter by loading the
    +	   perl_definition array.
    +	 */
    +
    +	eval_pv (xchat_definitions, TRUE);
    +#ifdef OLD_PERL
    +	eval_pv (irc_definitions, TRUE);
    +#endif
    +
    +}
    +
    +
    +static int
    +perl_load_file (char *filename)
    +{
    +#ifdef WIN32
    +	static HMODULE lib = NULL;
    +
    +	if (!lib) {
    +		lib = LoadLibraryA (PERL_DLL);
    +		if (!lib) {
    +			if (GetLastError () == ERROR_BAD_EXE_FORMAT)
    +				/* http://forum.xchat.org/viewtopic.php?t=3277 */
    +				thread_mbox ("Cannot use this " PERL_DLL "\n\n"
    +								 "32-bit ActivePerl is required.");
    +			else {
    +				/* a lot of people install this old version */
    +				lib = LoadLibraryA ("perl56.dll");
    +				if (lib) {
    +					FreeLibrary (lib);
    +					lib = NULL;
    +					thread_mbox ("Cannot open " PERL_DLL "\n\n"
    +									 "You must have ActivePerl 5.8 installed in order to\n"
    +									 "run perl scripts.\n\n"
    +									 "I have found Perl 5.6, but that is too old.");
    +				} else {
    +					thread_mbox ("Cannot open " PERL_DLL "\n\n"
    +									 "You must have ActivePerl 5.8 installed in order to\n"
    +									 "run perl scripts.\n\n"
    +									 "http://www.activestate.com/ActivePerl/\n\n"
    +									 "Make sure perl's bin directory is in your PATH.");
    +				}
    +			}
    +			/* failure */
    +			return FALSE;
    +		}
    +
    +		/* success */
    +		FreeLibrary (lib);
    +	}
    +#endif
    +
    +	if (my_perl == NULL) {
    +		perl_init ();
    +	}
    +
    +	return execute_perl (sv_2mortal (newSVpv ("Xchat::Embed::load", 0)),
    +								filename);
    +
    +}
    +
    +static void
    +perl_end (void)
    +{
    +
    +	if (my_perl != NULL) {
    +		execute_perl (sv_2mortal (newSVpv ("Xchat::Embed::unload_all", 0)), "");
    +		PL_perl_destruct_level = 1;
    +		perl_destruct (my_perl);
    +		perl_free (my_perl);
    +		PERL_SYS_TERM();
    +		my_perl = NULL;
    +	}
    +
    +}
    +
    +static int
    +perl_command_unloadall (char *word[], char *word_eol[], void *userdata)
    +{
    +	if (my_perl != NULL) {
    +		execute_perl (sv_2mortal (newSVpv ("Xchat::Embed::unload_all", 0)), "");
    +		return XCHAT_EAT_XCHAT;
    +	}
    +
    +	return XCHAT_EAT_XCHAT;
    +}
    +
    +static int
    +perl_command_reloadall (char *word[], char *word_eol[], void *userdata)
    +{
    +	if (my_perl != NULL) {
    +		execute_perl (sv_2mortal (newSVpv ("Xchat::Embed::reload_all", 0)), "");
    +
    +		return XCHAT_EAT_XCHAT;
    +	} else {
    +		perl_auto_load( NULL );
    +	}
    +	return XCHAT_EAT_XCHAT;
    +}
    +
    +static int
    +perl_command_load (char *word[], char *word_eol[], void *userdata)
    +{
    +	char *file = get_filename (word, word_eol);
    +
    +	if (file != NULL )
    +	{
    +		perl_load_file (file);
    +		return XCHAT_EAT_XCHAT;
    +	}
    +
    +	return XCHAT_EAT_NONE;
    +}
    +
    +static int
    +perl_command_unload (char *word[], char *word_eol[], void *userdata)
    +{
    +	char *file = get_filename (word, word_eol);
    +	
    +	if (my_perl != NULL && file != NULL) {
    +		execute_perl (sv_2mortal (newSVpv ("Xchat::Embed::unload", 0)), file);
    +		return XCHAT_EAT_XCHAT;
    +	}
    +
    +	return XCHAT_EAT_NONE;
    +}
    +
    +static int
    +perl_command_reload (char *word[], char *word_eol[], void *userdata)
    +{
    +	char *file = get_filename (word, word_eol);
    +	
    +	if (my_perl != NULL && file != NULL) {
    +		execute_perl (sv_2mortal (newSVpv ("Xchat::Embed::reload", 0)), file);
    +		return XCHAT_EAT_XCHAT;
    +	}
    +	
    +	return XCHAT_EAT_XCHAT;
    +}
    +
    +void
    +xchat_plugin_get_info (char **name, char **desc, char **version,
    +							  void **reserved)
    +{
    +	*name = "Perl";
    +	*desc = "Perl scripting interface";
    +	*version = PACKAGE_VERSION;
    +	if (reserved)
    +		*reserved = NULL;
    +}
    +
    +
    +/* Reinit safeguard */
    +
    +static int initialized = 0;
    +static int reinit_tried = 0;
    +
    +int
    +xchat_plugin_init (xchat_plugin * plugin_handle, char **plugin_name,
    +						 char **plugin_desc, char **plugin_version, char *arg)
    +{
    +	ph = plugin_handle;
    +
    +	if (initialized != 0) {
    +		xchat_print (ph, "Perl interface already loaded\n");
    +		reinit_tried++;
    +		return 0;
    +	}
    +	initialized = 1;
    +
    +	*plugin_name = "Perl";
    +	*plugin_desc = "Perl scripting interface";
    +	*plugin_version = PACKAGE_VERSION;
    +
    +	xchat_hook_command (ph, "load", XCHAT_PRI_NORM, perl_command_load, 0, 0);
    +	xchat_hook_command (ph, "unload", XCHAT_PRI_NORM, perl_command_unload, 0,
    +							  0);
    +	xchat_hook_command (ph, "reload", XCHAT_PRI_NORM, perl_command_reload, 0,
    +							  0);
    +	xchat_hook_command (ph, "pl_reload", XCHAT_PRI_NORM, perl_command_reload, 0,
    +							  0);
    +	xchat_hook_command (ph, "unloadall", XCHAT_PRI_NORM,
    +							  perl_command_unloadall, 0, 0);
    +	xchat_hook_command (ph, "reloadall", XCHAT_PRI_NORM,
    +							  perl_command_reloadall, 0, 0);
    +
    +	/*perl_init (); */
    +	xchat_hook_timer (ph, 0, perl_auto_load, NULL );
    +
    +	xchat_print (ph, "Perl interface loaded\n");
    +
    +	return 1;
    +}
    +
    +int
    +xchat_plugin_deinit (xchat_plugin * plugin_handle)
    +{
    +	if (reinit_tried) {
    +		reinit_tried--;
    +		return 1;
    +	}
    +
    +	perl_end ();
    +
    +	xchat_print (plugin_handle, "Perl interface unloaded\n");
    +
    +	return 1;
    +}
    diff --git a/xchat-2.8.8/plugins/perl/xchat2-perl.html b/xchat-2.8.8/plugins/perl/xchat2-perl.html
    new file mode 100644
    index 0000000..07b3f7b
    --- /dev/null
    +++ b/xchat-2.8.8/plugins/perl/xchat2-perl.html
    @@ -0,0 +1,958 @@
    +
    +
    +
    +
    +X-Chat 2 Perl Interface
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + X-Chat 2 Perl Interface +
    + + + +
    +

    + + + +
    +
    + + +

    +

    +

    X-Chat 2 Perl Interface

    +

    +

    +

    Introduction

    +

    This is the new Perl interface for X-Chat 2. However, due to changes in +xchat's plugin code you will need xchat 2.0.8 or above to load this. Scripts +written using the old interface will continue to work. If there are any +problems, questions, comments or suggestions please email them to the address +on the bottom of this page.

    +

    +

    +

    Constants

    +

    +

    +

    Priorities

    +
      +
    • Xchat::PRI_HIGHEST +
    • +
    • Xchat::PRI_HIGH +
    • +
    • Xchat::PRI_NORM +
    • +
    • Xchat::PRI_LOW +
    • +
    • Xchat::PRI_LOWEST +
    • +
    +

    +

    +

    Return values

    +
      +
    • Xchat::EAT_NONE - pass the event along +
    • +
    • Xchat::EAT_XCHAT - don't let xchat see this event +
    • +
    • Xchat::EAT_PLUGIN - don't let other scripts and plugins see this event +
    • +
    • Xchat::EAT_ALL - don't let anything see this event +
    • +
    +

    +

    +

    Timer specific

    +
      +
    • Xchat::KEEP - keep the timer going +
    • +
    • Xchat::REMOVE - remove the timer +
    • +
    +

    +

    +

    Functions

    +

    +

    +

    Xchat::register( $name, $version, [$description,[$callback]] )

    +
      +
    • $name - The name of this script +
    • +
    • $version - This script's version +
    • +
    • $description - A description for this script +
    • +
    • $callback - This is a function that will be called when the is script + unloaded. This can be either a reference to a + function or an anonymous sub reference. +
    • +
    +

    This is the first thing to call in every script.

    +

    +

    +

    Xchat::hook_server( $message, $callback, [\%options] )

    +

    +

    +

    Xchat::hook_command( $command, $callback, [\%options] )

    +

    +

    +

    Xchat::hook_print( $event,$callback, [\%options] )

    +

    +

    +

    Xchat::hook_timer( $timeout,$callback, [\%options | $data] )

    +

    These functions can be to intercept various events. +hook_server can be used to intercept any incoming message from the IRC server. +hook_command can be used to intercept any command, if the command doesn't currently exist then a new one is created. +hook_print can be used to intercept any of the events listed in Setttings->Advanced->Text Events +hook_timer can be used to create a new timer

    +
      +
    • $message - server message to hook such as PRIVMSG +
    • +
    • $command - command to intercept, without the leading / +
    • +
    • $event - one of the events listed in Settings->Advanced->Text Events +
    • +
    • $timeout - timeout in milliseconds +
    • +
    • $callback - callback function, this is called whenever + the hooked event is trigged, the following are + the conditions that will trigger the different hooks. + This can be either a reference to a + function or an anonymous sub reference. +
    • +
    • \%options - a hash reference containing addional options for the hooks +
    • +
    +

    Valid keys for \%options:

    + + + + + + +
    data Additional data that is to be associated with the
    + hook. For timer hooks this value can be provided either as
    + Xchat::hook_timer( $timeout, $cb,{data=>$data})
    + or Xchat::hook_timer( $timeout, $cb, $data ).
    + However, this means that hook_timer cannot be provided
    + with a hash reference containing data as a key.
    example:
    + my $options = { data => [@arrayOfStuff] };
    + Xchat::hook_timer( $timeout, $cb, $options );
    +
    + In this example, the timer's data will be
    + [@arrayOfStuff] and not { data => [@arrayOfStuff] }
    +
    + This key is valid for all of the hook functions.
    +
    + Default is undef.
    +
    priority Sets the priority for the hook.
    + It can be set to one of the + Xchat::PRI_* constants.
    +
    + This key only applies to server, command + and print hooks.
    +
    + Default is Xchat::PRI_NORM. +
    help_text Text displayed for /help $command.
    +
    + This key only applies to command hooks.
    +
    + Default is "". +

    +

    +

    When callbacks are invoked

    +

    Each of the hooks will be triggered at different times depending on the type +of hook.

    + + + + + + + + + + + +
    Hook Type When the callback will be invoked
    server hooks a $message message is + received from the server +
    command hooks the $command command is + executed, either by the user or from a script +
    print hooks X-Chat is about to print the message for the + $event event +
    timer hooks called every $timeout milliseconds + (1000 millisecond is 1 second) +

    The value return from these hook functions can be passed to Xchat::unhook +to remove the hook.

    +

    +

    +

    Callback Arguments

    +

    All callback functions will receive their arguments in @_ like every +other Perl subroutine.

    +

    +Server and command callbacks
    +
    +$_[0] - array reference containing the IRC message or command and +arguments broken into words
    +example:
    +/command arg1 arg2 arg3
    +$_[0][0] - command
    +$_[0][1] - arg1
    +$_[0][2] - arg2
    +$_[0][3] - arg3
    +
    +$_[1] - array reference containing the Nth word to the last word
    +example:
    +/command arg1 arg2 arg3
    +$_[1][0] - command arg1 arg2 arg3
    +$_[1][1] - arg1 arg2 arg3
    +$_[1][2] - arg2 arg3
    +$_[1][3] - arg3
    +
    +$_[2] - the data that was passed to the hook function
    +
    +Print callbacks
    +
    +$_[0] - array reference containing the values for the + text event see Settings->Advanced->Text Events
    +$_[1] - the data that was passed to the hook function
    +
    +Timer callbacks
    +
    +$_[0] - the data that was passed to the hook function
    +
    +

    +

    +

    Callback return values

    +

    All server, command and print callbacks should return one of +the Xchat::EAT_* constants. +Timer callbacks can return Xchat::REMOVE to remove +the timer or Xchat::KEEP to keep it going

    +

    +

    +

    Miscellaneous Hook Related Information

    +

    For server hooks, if $message is "RAW LINE" then $cb will be called for +every IRC message than X-Chat receives.

    +

    For command hooks if $command is "" then $cb will be called for +messages entered by the user that is not a command.

    +

    For print hooks besides those events listed in +Settings->Advanced->Text Events, these additional events can be used.

    + + + + + + + + + + + + + + + +
    Event Description
    "Open Context" a new context is created
    "Close Context" a context has been close
    "Focus Tab" when a tab is brought to the front
    "Focus Window" when a top level window is focused or the + main tab window is focused by the window manager +
    "DCC Chat Text" when text from a DCC Chat arrives. + $_[0] will have these values
    +
    + $_[0][0] - Address
    + $_[0][1] - Port
    + $_[0][2] - Nick
    + $_[0][3] - Message
    +
    "Key Press" used for intercepting key presses, the key value is in $_[0][0]

    +

    +

    Xchat::unhook( $hook )

    +
      +
    • $hook - the hook that was previously returned by one of the Xchat::hook_* functions +
    • +
    +

    This function is used to removed a hook previously added with one of +the Xchat::hook_* functions

    +

    It returns the data that was passed to the Xchat::hook_* function when +the hook was added

    +

    +

    +

    Xchat::print( $text | \@lines, [$channel,[$server]] )

    +
      +
    • $text - the text to print +
    • +
    • \@lines - array reference containing lines of text to be printed + all the elements will be joined together before printing +
    • +
    • $channel - channel or tab with the given name where $text + will be printed +
    • +
    • $server - specifies that the text will be printed in a channel or tab + that is associated with $server +
    • +
    +

    The first argument can either be a string or an array reference of strings. +Either or both of $channel and $server can be undef.

    +

    If called as Xchat::print( $text ), it will always return true. +If called with either the channel or the channel and the server +specified then it will return true if a context is found and +false otherwise. The text will not be printed if the context +is not found. The meaning of setting $channel or $server to +undef is the same as +find_context.

    +

    +

    +

    Xchat::printf( $format, LIST )

    +
      +
    • $format - a format string, see "perldoc -f sprintf" for further detail +
    • +
    • LIST - list of values for the format fields +
    • +
    +

    +

    +

    Xchat::command( $command | \@commands, [$channel,[$server]] )

    +
      +
    • $command - the command to execute, without the leading / +
    • +
    • \@commands - array reference containing a list of commands to execute +
    • +
    • $channel - channel or tab with the given name where $command will be executed +
    • +
    • $server - specifies that the command will be executed in a channel or tab that is associated with $server +
    • +
    +

    The first argument can either be a string or an array reference of strings. +Either or both of $channel and $server can be undef.

    +

    If called as Xchat::command( $command ), it will always return true. +If called with either the channel or the channel and the server +specified then it will return true if a context is found and false +otherwise. The command will not be executed if the context is not found. +The meaning of setting $channel or $server to undef is the same +as find_context.

    +

    +

    +

    Xchat::commandf( $format, LIST )

    +
      +
    • $format - a format string, see "perldoc -f sprintf" for further detail +
    • +
    • LIST - list of values for the format fields +
    • +
    +

    +

    +

    Xchat::find_context( [$channel, [$server]] )

    +
      +
    • $channel - name of a channel +
    • +
    • $server - name of a server +
    • +
    +

    Either or both of $channel and $server can be undef. Calling +Xchat::find_context() is the same as calling +Xchat::find_context( undef, undef) and +Xchat::find_context( $channel ) is +the same as Xchat::find_context( $channel, undef ).

    +

    If $server is undef, find any channel named $channel. +If $channel is undef, find the front most window +or tab named $server.If both $channel and +$server are undef, find the currently focused tab or window.

    +

    Return the context found for one of the above situations or undef if such +a context cannot be found.

    +

    +

    +

    Xchat::get_context()

    +

    Returns the current context.

    +

    +

    +

    Xchat::set_context( $context | $channel,[$server] )

    + +

    See find_context for more details on $channel and $server.

    +

    Returns true on success, false on failure

    +

    +

    +

    Xchat::get_info( $id )

    +
      +
    • $id - one of the following case sensitive values +
    • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ID Return value
    away away reason or undef if you are not away
    channel current channel name
    charset character-set used in the current context
    event_text <Event Name> text event format string for <Event name>
    + Example: +

    + my $channel_msg_format = Xchat::get_info( "event_text Channel Message" ); +

    +
    host real hostname of the current server
    id connection id
    inputbox contents of the inputbox
    libdirfsthe system wide directory where xchat will look for plugins. + this string is in the same encoding as the local file system
    modes the current channels modes or undef if not known
    network current network name or undef
    nick current nick
    nickserv nickserv password for this network or undef
    server current server name
    + (what the server claims to be) undef if not connected +
    state_cursorcurrent inputbox cursor position in characters
    topic current channel topic
    version xchat version number
    win_statusstatus of the xchat window, possible values are "active", "hidden" + and "normal"
    win_ptr native window pointer, GtkWindow * on Unix, HWND on Win32.
    + On Unix if you have the Glib module installed you can use my $window = Glib::Object->new_from_pointer( Xchat::get_info( "win_ptr" ) ); to get a Gtk2::Window object.
    + Additionally when you have detached tabs, each of the windows will return a different win_ptr for the different Gtk2::Window objects.
    + See char_count.pl for a longer example of a script that uses this to show how many characters you currently have in your input box. +
    xchatdir xchat config directory encoded in UTF-8
    + examples:
    + /home/user/.xchat2
    + C:\Documents and Settings\user\Application Data\X-Chat 2 +
    xchatdirfs same as xchatdir except encoded in the locale file system encoding

    This function is used to retrieve certain information about the current +context.

    +

    +

    Xchat::get_prefs( $name )

    +
      +
    • $name - name of a X-Chat setting (available through the /set command) +
    • +
    +

    This function provides a way to retrieve X-Chat's setting information.

    +

    Returns undef if there is no setting called called $name.

    +

    +

    +

    Xchat::emit_print( $event, LIST )

    +
      +
    • $event - name from the Event column in Settings->Advanced->Text Events +
    • +
    • LIST - this depends on the Description column on the bottom of Settings->Advanced->Text Events +
    • +
    +

    This functions is used to generate one of the events listed under +Settings->Advanced->Text Events

    +

    Note: when using this function you MUST return Xchat::EAT_ALL otherwise you will end up with duplicate events. +One is the original and the second is the one you emit.

    +

    Returns true on success, false on failure

    +

    +

    +

    Xchat::send_modes( $target | \@targets, $sign, $mode, [ $modes_per_line ] )

    +
      +
    • $target - a single nick to set the mode on +
    • +
    • \@targets - an array reference of the nicks to set the mode on +
    • +
    • $sign - the mode sign, either '+' or '-' +
    • +
    • $mode - the mode character such as 'o' and 'v', this can only be one character long +
    • +
    • $modes_per_line - an optional argument maximum number of modes to send per at once, pass 0 use the current server's maximum (default) +
    • +
    +

    Send multiple mode changes for the current channel. It may send multiple MODE lines if the request doesn't fit on one.

    +

    Example:

    +

    + +use strict; +use warning; +use Xchat qw(:all);hook_command( "MODES", sub { + my (undef, $who, $sign, $mode) = @{$_[0]}; my @targets = split /,/, $who; + if( @targets > 1 ) { + send_modes( \@targets, $sign, $mode, 1 ); + } else { + send_modes( $who, $sign, $mode ); + } return EAT_XCHAT; +}); + +

    +

    +

    Xchat::nickcmp( $nick1, $nick2 )

    +
      +
    • $nick1, $nick2 - the two nicks or channel names that are to be compared +
    • +
    +

    The comparsion is based on the current server. Either a RFC1459 compliant +string compare or plain ascii will be using depending on the server. The +comparison is case insensitive.

    +

    Returns a number less than, equal to or greater than zero if +$nick1 is +found respectively, to be less than, to match, or be greater than +$nick2.

    +

    +

    +

    Xchat::get_list( $name )

    +
      +
    • $name - name of the list, one of the following: +"channels", "dcc", "ignore", "notify", "users" +
    • +
    +

    This function will return a list of hash references. The hash references +will have different keys depend on the list. An empty list is returned +if there is no such list.

    +

    "channels" - list of channels, querys and their server

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Key Description
    channel tab name
    chantypeschannel types supported by the server, typically "#&"
    context can be used with set_context
    flags Server Bits:
    + 0 - Connected
    + 1 - Connecting
    + 2 - Away
    + 3 - EndOfMotd(Login complete)
    + 4 - Has WHOX
    + 5 - Has IDMSG (FreeNode)
    +
    +

    The following correspond to the /chanopt command

    + 6 - Hide Join/Part Message (text_hidejoinpart)
    + 7 - unused (was for color paste)
    + 8 - Beep on message (alert_beep)
    + 9 - Blink Tray (alert_tray)
    + 10 - Blink Task Bar (alert_taskbar)
    +

    Example of checking if the current context has Hide Join/Part messages set:

    +

    + +if( Xchat::context_info->{flags} & (1 >> 6) ) { + Xchat::print( "Hide Join/Part messages is enabled" ); +} + +

    id Unique server ID
    maxmodes Maximum modes per line
    laglag in milliseconds
    network network name to which this channel belongs
    nickprefixes Nickname prefixes e.g. "+@"
    nickmodes Nickname mode chars e.g. "vo"
    queuenumber of bytes in the send queue
    server server name to which this channel belongs
    type the type of this context
    + 1 - server
    + 2 - channel
    + 3 - dialog
    +
    users Number of users in this channel

    "dcc" - list of DCC file transfers

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Key Value
    address32 address of the remote user(ipv4 address)
    cps bytes per second(speed)
    destfile destination full pathname
    file file name
    nicknick of the person this DCC connection is connected to
    port TCP port number
    pos bytes sent/received
    resume point at which this file was resumed
    + (zero if it was not resumed) +
    size file size in bytes
    status DCC Status:
    + 0 - queued
    + 1 - active
    + 2 - failed
    + 3 - done
    + 4 - connecting
    + 5 - aborted +
    type DCC Type:
    + 0 - send
    + 1 - receive
    + 2 - chatrecv
    + 3 - chatsend +

    "ignore" - current ignore list

    + + + + + + +
    Key Value
    mask ignore mask. e.g: *!*@*.aol.com
    flags Bit field of flags.
    + 0 - private
    + 1 - notice
    + 2 - channel
    + 3 - ctcp
    + 4 - invite
    + 5 - unignore
    + 6 - nosave
    + 7 - dcc
    +

    "notify" - list of people on notify

    + + + + + + + + + + + + + + + + + +
    Key Value
    networkscomma separated list of networks where you will be notfified about this user's online/offline status or undef if you will be notificed on every network you are connected to
    nick nickname
    flags 0 = is online
    on time when user came online
    off time when user went offline
    seen time when user was last verified still online

    the values indexed by on, off and seen can be passed to localtime +and gmtime, see perldoc -f localtime and perldoc -f gmtime for more +detail

    "users" - list of users in the current channel

    + + + + + + + + + + + + + + + + + + + + + +
    Key Value
    away away status(boolean)
    lasttalklast time a user was seen talking, this is the an epoch time(number of seconds since a certain date, that date depends on the OS)
    nick nick name
    hosthost name in the form: user@host or undef if not known
    prefix prefix character, .e.g: @ or +
    realnameReal name or undef
    selectedselected status in the user list, only works when retrieving the user list of the focused tab. You can use the /USELECT command to select the nicks

    "networks" - list of networks and the associated settings from network list

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Key Value
    autojoins An object with the following methods:
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    MethodDescription
    channels()returns a list of this networks' autojoin channels in list context, a count of the number autojoin channels in scalar context
    keys()returns a list of the keys to go with the channels, the order is the same as the channels, if a channel doesn't have a key, '' will be returned in it's place
    pairs()a combination of channels() and keys(), returns a list of (channels, keys) pairs. This can be assigned to a hash for a mapping from channel to key.
    as_hash()return the pairs as a hash reference
    as_string()the original string that was used to construct this autojoin object, this can be used with the JOIN command to join all the channels in the autojoin list
    as_array()return an array reference of hash references consisting of the keys "channel" and "key"
    as_bool()returns true if the network has autojoins and false otherwise
    +
    connect_commands An array reference containing the connect commands for a network. An empty array if there aren't any
    encoding the encoding for the network
    flags + a hash reference corresponding to the checkboxes in the network edit window + + + + + + + + + + + + + + + + + + + + +
    allow_invalidtrue if "Accept invalid SSL certificate" is checked
    autoconnecttrue if "Auto connect to this network at startup" is checked
    cycletrue if "Connect to selected server only" is NOT checked
    use_globaltrue if "Use global user information" is checked
    use_proxytrue if "Bypass proxy server" is NOT checked
    use_ssltrue if "Use SSL for all the servers on this network" is checked
    +
    irc_nick1Corresponds with the "Nick name" field in the network edit window
    irc_nick2Corresponds with the "Second choice" field in the network edit window
    irc_real_nameCorresponds with the "Real name" field in the network edit window
    irc_user_nameCorresponds with the "User name" field in the network edit window
    networkName of the network
    nickserv_passwordCorresponds with the "Nickserv password" field in the network edit window
    selectedIndex into the list of servers in the "servers" key, this is used if the "cycle" flag is false
    server_passwordCorresponds with the "Server password" field in the network edit window
    serversAn array reference of hash references with a "host" and "port" key. If a port is not specified then 6667 will be used.

    +

    +

    Xchat::user_info( [$nick] )

    +
      +
    • $nick - the nick to look for, if this is not given your own nick will be + used as default +
    • +
    +

    This function is mainly intended to be used as a shortcut for when you need +to retrieve some information about only one user in a channel. Otherwise it +is better to use get_list. +If $nick is found a hash reference containing the same keys as those in the +"users" list of get_list is returned otherwise undef is returned. +Since it relies on get_list this function can only be used in a +channel context.

    +

    +

    +

    Xchat::context_info( [$context] )

    + +

    This function will return the information normally retrieved with get_info, except this is for the context that is passed in. The information will be returned in the form of a hash. The keys of the hash are the $id you would normally supply to get_info as well as all the keys that are valid for the items in the "channels" list from get_list. Use of this function is more efficient than calling get_list( "channels" ) and searching through the result.

    +

    Example:

    +

    + +use strict; +use warnings; +use Xchat qw(:all); # imports all the functions documented on this page +register( "User Count", "0.1", + "Print out the number of users on the current channel" ); +hook_command( "UCOUNT", \&display_count ); +sub display_count { + prnt "There are " . context_info()->{users} . " users in this channel."; + return EAT_XCHAT; +} + +

    +

    +

    Xchat::strip_code( $string )

    +
      +
    • $string - string to remove codes from +
    • +
    +

    This function will remove bold, color, beep, reset, reverse and underline codes from $string. It will also remove ANSI escape codes which might get used by certain terminal based clients. If it is called in void context $string will be modified otherwise a modified copy of $string is returned.

    +

    +

    +

    Contact Information

    +

    Contact Lian Wan Situ at <atmcmnky [at] yahoo.com> for questions, comments and +corrections about this page or the Perl plugin itself. You can also find me +in #xchat on FreeNode under the nick Khisanth.

    + + +
    + X-Chat 2 Perl Interface +
    + + + + diff --git a/xchat-2.8.8/plugins/perl/xchat2-perldocs.html b/xchat-2.8.8/plugins/perl/xchat2-perldocs.html new file mode 100644 index 0000000..10d8f31 --- /dev/null +++ b/xchat-2.8.8/plugins/perl/xchat2-perldocs.html @@ -0,0 +1,475 @@ +XChat - IRC (chat) client for UNIX + + + +

    This interface is deprecated

    + + + + + +
    +
    +

    Xchat Perl Docs

    + + +
    + + +
    + +Introduction +
    +
    + +
    +

    Good Hello!

    +

    The purpose of this page is to give people some quick documentation on the +things that they will encounter when they try to code scripts for X-Chat. +It is not meant to be a comprehensive programming tutorial, +by any means. If that's what you're looking for, then you can just keep on +looking.

    +

    If you're going to do any scripting with X-Chat at all, you will +need to know perl. It also won't hurt to have had experience writing tcl for +eggdrops or ircII scripts. Otherwise you're going to have to be very careful +to avoid creating conditions which could flood you offline or do other +not-so-optimal things. ;) Thankfully, it shouldn't take most intelligent +people more than a week (month on the outside) enough perl to do some nice +things in it. +Perl is a very flexible language.

    +

    You should probably also go read (or at least skim over and then carefully +bookmark this copy of the thing that defines how IRC works: RFC 1459. +Other documents that scripters might find useful would be this +nice list of server +numerics, and this list of changes +for Hybrid 6 which is something everyone on EFNet should read. In fact, I +strongly suggest saving copies of these documents to your local +hard drive, because you will be back to look at them again soon.

    +

    One last thing... While you may hear that RFC 1459 isn't being followed very +well, and this is partly true, do your absolute best to stick with RFC-compliant +behaviours anyway because otherwise there's a good chance that your script will +never interoperate properly with others, or at least just piss off a lot of other +people. Pay special attention to section 2.2 of the RFC.

    +
    + + +
    +Standard Disclaimer + +
    +This documentation is provided on an "as-is" basis and comes with no warranty of accuracy or usefulness, either expressed or implied. It is subject to change without any notice, and may contain omissions or errors which could cause your genitalia to shrivel and fall off, or spontaneously combust. If you have any further questions,
    please feel free to seek professional help.
    +
    + + +
    + + +
    + +About Handlers +
    +
    + +
    +There are [currently] four basic ways to make things call the subroutines you write for X-Chat and they are: +
    • message handlers - Triggered by messagse sent from the IRC server to your client
    • +
    • command handlers - triggered by / commands typed in by the user at the keyboard
    • +
    • timeout handlers - triggered by gtk+
    • +
    • print handlers - triggered just before xchat calls its built in print handlers for events
    +
    + + +
    + + +
    + +About Exit Codes +
    +
    + +
    +These are very important. Every time you set up a handler, it takes precedent over the built-in functions and commands of X-Chat. That is, whatever thing which triggered your subroutine will go to your code before it goes to X-Chat to be dealt with. In this way you can replace almost every built-in function that the client has with your own routines. The thing to remember is that if your code exits by hitting the end of your subroutine, or by a plain 'return' statement, processing of the event will go on to whatever other things have set up hooks for the event, and then (provided nothing else exits with a return value of 1) to X-Chat itself. There is only one problem with this, (which is solved by the brokering handler that I'll explain that later) and that is that you cannot really control what order the custom routines get called. Normally they will execute in order of which ones were installed first, but a single script has no real way of knowing this. Beware. +
    + + +
    + + +
    + +About @_ +
    +
    + +
    +If you've never heard of @_ before, then you've obviously not coded in perl. When a message handler triggers, the raw line from the IRC server is passed to the subroutine you specify in @_. When a command handler is triggered, only the arguments are passed to the routine through @_ and they are not broken into a list, but left as one long string. You'll have to parse those yourself with split. (I advise using s/\s+/ /g to collapse the blank space to single space first.) When a timer handler is triggered, I *think* absolutely nothing is passed in @_, but it's not like anything terrifically important could be passed along anyway. Be especially careful when setting up message handlers for mode changes, since the modes are not broken up into individual events like they are with eggdrop. The upside of this is that X-Chat has no mode hooks of it's own, so you don't have to worry about it too much. (This is not the case with the brokering handler, however.) +
    + + +
    + + +
    + +About Context +
    +
    + +
    +There are some really nice things about coding for X-Chat, and the biggest one is that it's fairly good about determining the proper context for things. If a server sends something that triggers a message handler, then you can be sure that unless you specify otherwise, that your IRC::print or IRC::command function call will go back to that server and that server alone. If you really really need to know what the current context is, use the IRC::get_info function as detailed below. +
    + +
    + + +
    + + +
    + +script initialization commands +
    +
    + + +
    + + +
    + +IRC::register(scriptname, version, shutdownroutine, unused); +
    +
    + +
    +

    This is the first function your script should call, example:

    +

    IRC::register ("my script", "1.0", "", "");

    +

    The "shutdownroutine" arg is a function that will be called when X-Chat shuts down, so you get a chance to save config files etc. You can omit this arg, it is optional. The "unused" arg is reserved for future use, for now just provide "". This function also returns X-Chat's version number.

    +
    + + +
    + + +
    + +Handler initialization commands +
    +
    + + +
    + + +
    + +IRC::add_message_handler(message, subroutine_name); +
    +
    + +
    +

    This function allows you to set up hooks to subroutines so that when a particular message arrives from the IRC server that you are connected to, it can be passed to a subroutine to be dealt with appropriately. The message argument is essentially the second solid token from the raw line sent by the IRC server, and X-Chat doesn't know that some numeric messages have associated text messages, so for now set up a handler for both if you want to be sure odd servers don't screw up your expectations. (Read: fear IRCNet.) The entire line sent by the IRC server will be passed to your subroutine in @_. For the completely uninitiated, messages are things like 'PRIVMSG', 'NOTICE', '372', etc.

    +
    + + +
    + + +
    + +IRC::add_command_handler(command, subroutine_name); +
    +
    + +
    +

    This function allows you to set up hooks for actual commands that the user can type into the text window. The arguments are passed to the subroutine via @_, and arrive as a single string. @_ will be null if no arguments are supplied. It's recommended that you be sure and collapse the excess whitespace with s/\s+/ /g before attempting to chop the line up with split. As mentioned earlier, exiting with an undefined return value will allow the command to be parsed by other handlers, while using a return value of 1 will signal the program that no further parsing needs to be done with this command.

    +
    + + +
    + + +
    + +IRC::add_timeout_handler(interval, subroutine_name); +
    +
    + +
    +

    This function allows you to set up hooks for subroutines to be called at a particular interval. The interval is measured in milliseconds, so don't use a particularly small value unless you wish to drive the CPU load through the roof. 1000ms = 1 second. No values will be passed to the routine via @_ and return values don't affect anything either.

    +
    + + +
    + + +
    + +IRC::add_print_handler(message, subroutine_name); +
    +
    + +
    +

    This function allows you to catch the system messages (those who generally start by three stars) and to execute a function each time an event appear. The events are those you can see in "Settings->Edit Events Texts". message is the name of the event (you can find it in the Edit Events box, "Events" column) , subroutine_name is the name of the function that will get messages. Be carrful: all the arguments are sent to function in $_[0] separated by spaces.

    +
    + + +
    + + +
    + +Output commands +
    +
    + + +
    + + +
    + +IRC::print(text); +
    +
    + +
    +This is a very simple routine. All it does is put the contents of the text string to the current window. The current window will be whichever window a command was typed into when called from a command handler, or in whichever window the message command is appropriate to if it is called from within a message handler. As with any perl program, newlines are not assumed, so don't forget to end the line with \n if you don't want things to look screwey. +
    + + +
    + + +
    + +IRC::print_with_channel( text, channelname, servername ); +
    +
    + +
    +This routine does the same thing as IRC::Print does, except it allows you to direct the output to a specific window. It returns 1 on success, 0 on fail. +
    + + +
    + + +
    + +IRC::command(text); +
    +
    + +
    +This routine allows you to execute commands in the current context. The text string containing the command will be parsed by everything that would normally parse a command, including your own command handlers, so be careful. Newlines are assumed, thankfully. +
    + + +
    + + +
    + +IRC::command_with_server(text, servername); +
    +
    + +
    +This routine allows you to specify the context of the server for which the command will be executed. It's not particularly useful unless you're managing a connection manually, yet the command still exists for it's usefulness in doing things like managing a bnc connection, etc. Newlines are assumed here as well. +
    + + +
    + + +
    + +IRC::send_raw(text); +
    +
    + +
    +This routine is very useful in that it allows you to send a string directly to the IRC server you are connected to. It is assumed that the server will be the one you first connected to if there is no clear context for the command, otherwise it will go to whatever server triggered the message handler or command handler window. You must specify newlines here always or you can be guaranteed that strange things will happen. The text message you specify should be a proper RAW IRC message, so don't play with it if you don't know how to do these. Additionally, while newlines are also not assumed here as with the IRC::print function, the RFC specifies that newlines are a CR+LF pair, even if most servers will accept a mere newline. It's best to play it safe and use \r\n instead of just \n. +
    + + +
    + + +
    + +Information retrieval commands +
    +
    + + +
    + + +
    + +IRC::get_info(integer); +
    +
    + +
    +This function returns a bit of selected information depending on what the value of the integer is. +Here's a list of the currently supported values: +
    • 0 - xchat version
    • +
    • 1 - your nickname
    • +
    • 2 - channel
    • +
    • 3 - server
    • +
    • 4 - xchatdir
    • +
    • 5 - away status
    • +
    • 6 - network name
    • +
    • 7 - server hostname
    • +
    • 8 - channel topic
    +

    If you are requesting information that isn't available in the current context, then it will return null.

    +

    Any numbers other than the above will return an error message.

    +
    + + +
    + + +
    + +IRC::get_prefs(var); +
    +
    + +
    +This command lets you read the preferences that are set in the xchat configuration file. Just look at the xchat.conf dir to see what variables are available to use with this command. Returns the value of the variable requested or "Unknown Variable" if the variable isn't available. +
    + + +
    + + +
    + +IRC::user_info( nickname ); +
    +
    + +
    +Returns a flat list of information on the nickname specified consisting of... nickname, nick host, and whether they have op or voice in the current context. +
    + + +
    + + +
    + +IRC::channel_list( ); +
    +
    + +
    +This command returns a flat list which contains the current channel, server, and nickname for all channels the client is currently in. You'll have to break the list up into groups of three yourself. No arguments are necessary, or used [currently]. +
    + + +
    + + +
    + +IRC::server_list( ); +
    +
    + +
    +This command returns a flat list of servers. (Note, it is incompatible with xchat 1.8 in that it also returns a list of servers you are NOT connected to as well.) +
    + + +
    + + +
    + +IRC::user_list(channel, server); +
    +
    + +
    +

    Works very much like the dcc_list command below, except that is returns information about the users on the channel provided as first argument. The second argument is the server and is optional.

    +

    NOTE: If a user has both op and voice, only the op flag will be set to 1 by this command in xchat2.

    +
    + + +
    + + +
    + +IRC::user_list_short(channel, server); +
    +
    + +
    +

    A simpler version of IRC::user_list that returns pairs of nick & user@host suitable for assigning to a hash.

    +

    NOTE: If a user has both op and voice, only the op flag will be set to 1 by this command in xchat2.

    +
    + + +
    + + +
    + +IRC::dcc_list( ); +
    +
    + +
    +This command does essentially the same thing as channel_list, giving you the details of each DCC connection currently in progress. I have no idea exactly what is returned because I haven't had a chance to poke at this one much, but suffice it to say that it's a flat list, and the first time you play with it the meaning of the returned values should be pretty obvious. +
    + + +
    + + +
    + +IRC::ignore_list( ); +
    +
    + +
    +This command returns a flat list of the contents of your ignore list. You'll have to play with it a little as I have not had a chance to yet. Works basically the same as the other list commands. +
    + + +
    + + +
    + +Unimplemented commands that were available in xchat 1.8.x +
    +
    + +
    +add_user_list , sub_user_list , clear_user_list, notify_list were available in xchat 1.8.x but are not implemented in xchat 2 at this time. +
    + +
    +
    +

    +This document originally written by Dagmar d'Surreal on March 26th, 1998 for xchat 1.4
    +Updated on July 30th, 1999 by Peter Zelezny
    +Updated on May 16th, 2003 by DaNumber8 to comply with the perl plugin for xchat2 version 2.0.3
    + diff --git a/xchat-2.8.8/plugins/plugin-conf.in b/xchat-2.8.8/plugins/plugin-conf.in new file mode 100644 index 0000000..d05792b --- /dev/null +++ b/xchat-2.8.8/plugins/plugin-conf.in @@ -0,0 +1,20 @@ + +AC_INIT(@PLUGIN@-config.h.in) +AM_CONFIG_HEADER(@PLUGIN@-config.h) +AM_INIT_AUTOMAKE(xchat-@PLUGIN@, @PLUGIN_VERSION@) +AM_MAINTAINER_MODE +AM_DISABLE_STATIC +AM_PROG_LIBTOOL + +AC_ARG_WITH(plugin-includes, +[ --with-plugin-includes directory containing xchat-plugin.h], + PLUGIN_INCLUDES=$enableval) + +AC_SUBST(PLUGIN_INCLUDES) + +xchatlibdir=${libdir}/xchat +AC_SUBST(xchatlibdir) + +AC_OUTPUT( +Makefile +) diff --git a/xchat-2.8.8/plugins/plugin20.html b/xchat-2.8.8/plugins/plugin20.html new file mode 100644 index 0000000..f5140bb --- /dev/null +++ b/xchat-2.8.8/plugins/plugin20.html @@ -0,0 +1,999 @@ + + + +XChat 2.0 Plugin Interface + + + + +

    XChat 2.0 Plugin Interface

    + + +plugin20.html revision 2.86 +
    Latest version of this document is available at:
    http://xchat.org/docs/plugin20.html + +

    1. Documentation:

    +
    +1.0 Introduction +
    1.1 Sample plugin +
    1.2 What is word and word_eol? +
    1.3 Lists and fields +
    1.4 Plugins on Windows (Win32) +
    1.5 Controlling the GUI +
      1.5.1 Basic Control +
      1.5.2 Custom Menu Items +
      1.5.3 System Tray +
    1.6 Handling UTF-8/Unicode strings +
    + +

    2. Function reference:

    +
    +xchat_hook_command +
    xchat_hook_fd +
    xchat_hook_print +
    xchat_hook_server +
    xchat_hook_timer +
    xchat_unhook +
    +
    xchat_command +
    xchat_commandf +
    xchat_print +
    xchat_printf +
    xchat_emit_print +
    xchat_send_modes +
    +
    xchat_find_context +
    xchat_get_context +
    xchat_get_info +
    xchat_get_prefs +
    xchat_set_context +
    +
    xchat_nickcmp +
    xchat_strip +
    xchat_free +
    +
    xchat_list_get +
    xchat_list_free +
    xchat_list_fields (not documented yet) +
    xchat_list_next +
    xchat_list_str +
    xchat_list_int +
    xchat_list_time +
    +
    xchat_plugingui_add (not documented yet) +
    xchat_plugingui_remove (not documented yet) +

    + +

    Introduction

    +Plugins for XChat are written in C. The interface aims to keep 100% +binary compatability. This means that if you upgrade XChat, you will +not need to recompile your plugins, they'll continue to work. The +interface doesn't depend on any structures and offsets, so compiler +versions shouldn't have an impact either. The only real requirement of +an XChat plugin, is that it define a "xchat_plugin_init" symbol. This +is your entry point function, see the example below. You should make +all your global variables and functions static, so that a symbol +is not exported. There is no harm in exporting these symbols, but they +are not necessary and only pollute the name-space. Plugins are compiled as shared objects +(.so files), for example: +

    +Most UNIX systems:
    +	gcc -Wl,--export-dynamic -Wall -O1 -shared -fPIC myplugin.c -o myplugin.so
    +
    +MacOSX:
    +	gcc -no-cpp-precomp -g -O2 -Wall -bundle -flat_namespace -undefined suppress -o myplugin.so myplugin.c
    +
    + +See the Windows section on how to compile a plugin +using visual studio. +

    +All strings passed to and from plugins are encoded in UTF-8, regardless +of locale. What does this mean? +


    + +

    Sample plugin

    +This simple plugin autoOps anyone who joins a channel you're in. It also +adds a new command /AUTOOPTOGGLE, which can be used to turn the feature ON +or OFF. Every XChat plugin must define an xchat_plugin_init function, this +is the normal entry point. xchat_plugin_deinit is optional. +
    +
    +
    +
    +#include "xchat-plugin.h"
    +
    +#define PNAME "AutoOp"
    +#define PDESC "Auto Ops anyone that joins"
    +#define PVERSION "0.1"
    +
    +static xchat_plugin *ph;   /* plugin handle */
    +static int enable = 1;
    +
    +static int join_cb(char *word[], void *userdata)
    +{
    +   if (enable)
    +      /* Op ANYONE who joins */
    +      xchat_commandf(ph, "OP %s", word[1]);
    +   /* word[1] is the nickname, as in the Settings->Advanced->TextEvents window in xchat */
    +
    +   return XCHAT_EAT_NONE;  /* don't eat this event, xchat needs to see it! */
    +}
    +
    +static int autooptoggle_cb(char *word[], char *word_eol[], void *userdata)
    +{
    +   if (!enable)
    +   {
    +      enable = 1;
    +      xchat_print(ph, "AutoOping now enabled!\n");
    +   } else
    +   {
    +      enable = 0;
    +      xchat_print(ph, "AutoOping now disabled!\n");
    +   }
    +
    +   return XCHAT_EAT_ALL;   /* eat this command so xchat and other plugins can't process it */
    +}
    +
    +void xchat_plugin_get_info(char **name, char **desc, char **version, void **reserved)
    +{
    +   *name = PNAME;
    +   *desc = PDESC;
    +   *version = PVERSION;
    +}
    +
    +int xchat_plugin_init(xchat_plugin *plugin_handle,
    +                      char **plugin_name,
    +                      char **plugin_desc,
    +                      char **plugin_version,
    +                      char *arg)
    +{
    +   /* we need to save this for use with any xchat_* functions */
    +   ph = plugin_handle;
    +
    +   /* tell xchat our info */
    +   *plugin_name = PNAME;
    +   *plugin_desc = PDESC;
    +   *plugin_version = PVERSION;
    +
    +   xchat_hook_command(ph, "AutoOpToggle", XCHAT_PRI_NORM, autooptoggle_cb, "Usage: AUTOOPTOGGLE, Turns OFF/ON Auto Oping", 0);
    +   xchat_hook_print(ph, "Join", XCHAT_PRI_NORM, join_cb, 0);
    +
    +   xchat_print(ph, "AutoOpPlugin loaded successfully!\n");
    +
    +   return 1;       /* return 1 for success */
    +}
    +
    +
    +
    + +

    What's word and word_eol?

    + +They are arrays of strings. They contain the parameters the user entered +for the particular command. For example, if you executed: + +
    +/command NICK hi there
    +
    +word[1] is command
    +word[2] is NICK
    +word[3] is hi
    +word[4] is there
    +
    +word_eol[1] is command NICK hi there
    +word_eol[2] is NICK hi there
    +word_eol[3] is hi there
    +word_eol[4] is there
    +
    +These arrays are simply provided for your convenience. You are NOT allowed +to alter them. Both arrays are limited to 32 elements (index 31). word[0] and +word_eol[0] are reserved and should not be read. +


    +

    Lists and Fields

    +Lists of information (DCCs, Channels, Userlist etc) can be retreived +with xchat_list_get. All fields are READ ONLY and must be copied if +needed for a long time after calling xchat_list_str. The types of lists and fields available are: +
    + +"channels" - list of channels, querys and their servers. +
    + + + + + + + + + + + + + + + +
    NameDescriptionType
    channelChannel or query namestring
    chantypesChannel types e.g. "#!&"
    (Added in version 2.0.9. Older versions will return NULL)
    string
    context(xchat_context *) pointer. Can be used with xchat_set_contextstring
    flagsServer/Channel Bits:
    + + + + + + + + + + + + + +
    Bit #ValueDescription
    01Connected
    12Connecting in Progress
    24You are away
    38End of MOTD (Login complete)
    416Has WHOX (ircu)
    532Has IDMSG (FreeNode)
    664Hide Join/Part Messages
    7128unused (was Color Paste in old versions)
    8256Beep on Message
    9512Blink Tray
    101024Blink Task Bar
    +
    (Bits 0-5 added in 2.0.9. Bits 6-8 added in 2.6.6. Bit 9 added in 2.8.0. Bit 10 in 2.8.6)
    int
    idUnique server ID
    (Added in version 2.0.8. Older versions will return -1)
    int
    lagLag in milliseconds
    (Added in version 2.6.8. Older versions will return -1)
    int
    maxmodesMaximum modes per line
    (Added in version 2.0.9. Older versions will return -1)
    int
    networkNetwork name to which this channel belongs
    (Added in version 2.0.2. Older versions will return NULL)
    string
    nickprefixesNickname prefixes e.g. "@+"
    (Added in version 2.0.9. Older versions will return NULL)
    string
    nickmodesNickname mode chars e.g. "ov"
    (Added in version 2.0.9. Older versions will return NULL)
    string
    queueNumber of bytes in the send-queue
    (Added in version 2.6.8. Older versions will return -1)
    int
    serverServer name to which this channel belongsstring
    typeType of context this is: 1-Server 2-Channel 3-Dialog
    (Added in version 2.0.2. Older versions will return -1)
    int
    usersNumber of users in this channel
    (Added in version 2.0.8. Older versions will return -1)
    int
    +
    + +"dcc" - list of DCC file transfers. Fields: +
    + + + + + + + + + + + + + +
    NameDescriptionType
    address32Address of the remote user (ipv4 address)int
    cpsBytes per second (speed)int
    destfileDestination full pathnamestring
    fileFile namestring
    nickNickname of person who the file is from/tostring
    portTCP port numberint
    posBytes sent/receivedint
    resumePoint at which this file was resumed (or zero if it was not resumed)int
    sizeFile size in bytes, low order 32 bits (cast it to unsigned)int
    sizehighFile size in bytes, high order 32 bitsint
    statusDCC Status: 0-Queued 1-Active 2-Failed 3-Done 4-Connecting 5-Abortedint
    typeDCC Type: 0-Send 1-Receive 2-ChatRecv 3-ChatSendint
    +
    + +"ignore" - current ignore list. +
    + + + +
    NameDescriptionType
    maskIgnore mask. .e.g: *!*@*.aol.comstring
    flagsBit field of flags. 0=Private 1=Notice 2=Channel 3=Ctcp
    +4=Invite 5=UnIgnore 6=NoSave 7=DCC
    int
    +
    + +"notify" - list of people on notify. +
    + + + + + + + +
    NameDescriptionType
    networksNetworks to which this nick applies. Comma separated. May be NULL. +
    (Added in version 2.6.8)
    string
    nickNicknamestring
    flagsBit field of flags. 0=Is online.int
    onTime when user came online.time_t
    offTime when user went offline.time_t
    seenTime when user the user was last verified still online.time_t
    +The entire "notify" list was added in xchat 2.0.8. Fields are +only valid for the context when xchat_list_get() was called +(i.e. you get information about the user ON THAT ONE SERVER ONLY). You +may cycle through the "channels" list to find notify information for every +server. +
    + +"users" - list of users in the current channel. +
    + + + + + + + + +
    NameDescriptionType
    awayAway status (boolean)
    (Added in version 2.0.6. Older versions will return -1)
    int
    lasttalkLast time the user was seen talking
    (Added in version 2.4.2. Older versions will return -1)
    time_t
    nickNick namestring
    hostHost name in the form: user@host (or NULL if not known).string
    prefixPrefix character, .e.g: @ or +. Points to a single char.string
    realnameReal name or NULL
    (Added in version 2.8.6)
    string
    selectedSelected status in the user list, only works for retrieving the user list of the focused tab
    (Added in version 2.6.1. Older versions will return -1)
    int
    +
    + +
    + +Example: +
    +
    +   list = xchat_list_get(ph, "dcc");
    +   if(list)
    +   {
    +      xchat_print(ph, "--- DCC LIST ------------------\n"
    +                      "File  To/From   KB/s   Position\n");
    +
    +      while(xchat_list_next(ph, list))
    +      {
    +         xchat_printf(ph, "%6s %10s %.2f  %d\n",
    +             xchat_list_str(ph, list, "file"),
    +             xchat_list_str(ph, list, "nick"),
    +             xchat_list_int(ph, list, "cps") / 1024,
    +             xchat_list_int(ph, list, "pos"));
    +      }
    +
    +      xchat_list_free(ph, list);
    +   }
    +
    + +
    + +

    Plugins on Windows (Win32)

    +Yes, it can be done. All you need is either +MSVC (Visual Studio) or +MINGW, both these compilers are free to download. +Simply compile your plugin as a DLL. You should have the following files: + +
      +
    • xchat-plugin.h - Main Plugin header
    • +
    • plugin.c - Your plugin, you need to write this one :)
    • +
    • plugin.def - A simple text file containing the following:
    • +
    +
    +EXPORTS
    +  xchat_plugin_init
    +  xchat_plugin_deinit
    +  xchat_plugin_get_info
    +
    + +
    Leave out xchat_plugin_deinit if you don't intend to define that +function. Then, to compile, type this at your command prompt:

    +
    +MSVC +
     cl -O1 -MD -G5 -DWIN32 -c plugin.c
    +
     link /DLL /out:plugin.dll /SUBSYSTEM:WINDOWS plugin.obj /def:plugin.def /base:0x00d40000 +

    +GCC (MINGW) +
     gcc -Wall -Os -DWIN32 -c plugin.c
    +
     dllwrap --def plugin.def --dllname plugin.dll plugin.o

    +
    +
    For a complete example, have a look at the source code of the DNS Plugin, which also contains a Makefile. +

    +Caveat: Plugins compiled on Win32 MUST have a +global variable called ph, which is the plugin_handle, much like +in the sample plugin above. +

    + +

    Controlling the GUI

    +

    +A simple way to perform basic GUI functions is to use the /GUI command. +You can execute this command through the input-box, or by calling +xchat_command(ph, "GUI .....");. +

    +
    + + + + + + + + + + + +
    GUI ATTACHSame function as "Attach Window" in the XChat menu (new for 2.6.2).
    GUI DETACHSame function as "Detach Tab" in the XChat menu (new for 2.6.2).
    GUI APPLYSimilar to clicking OK in the settings window. Execute this after /SET to activate GUI changes (new for 2.8.0)
    GUI COLOR nChange the tab color of the current context, where n is a number from 0 to 3.
    GUI FOCUSFocus the current window or tab.
    GUI FLASHFlash the taskbar button. It will flash only if the window isn't focused and will stop when it is focused by the user.
    GUI HIDEHide the main xchat window completely (this is used by the Systray plugin).
    GUI ICONIFYIconify (minimize to taskbar) the current xchat window.
    GUI MSGBOX textDisplays a asynchronous message box with your text (new for 2.4.5).
    GUI SHOWShow the main xchat window (if currently hidden).
    +
    +

    +Note, the FLASH, ICONIFY and COLOR args were added in xchat 2.0.8, they +will not work with previous versions. +

    +Starting from 2.4.5 you can add your own items to the menu bar. The menu command has this syntax: +
    +	MENU [-eX] [-i<ICONFILE>] [-k<mod>,<key>] [-m] [-pX] [-rX,group] [-tX] {ADD|DEL} <path> [command] [unselect command]
    +For example: +
    +	MENU -p5 ADD FServe
    +	MENU ADD "FServe/Show File List" "fs list"
    +	MENU ADD FServe/-
    +	MENU -k4,101 -t1 ADD "FServe/Enabled" "fs on" "fs off"
    +	MENU -e0 ADD "FServe/Do Something" "fs action"
    +
    +In the example above, it would be recommended to execute "MENU DEL FServe" inside your xchat_plugin_deinit function. The special item with name "-" will add a separator line. +

    +Parameters and flags: +
    + + + + + + + + +
    -eXSet enable flag to X. -e0 for disable, -e1 for enable. This lets you create a disabled (shaded) item.
    -iFILEUse an icon filename FILE (new for 2.8.0). Not supported for toggles or radio items.
    -k<mod>,<key>Specify a keyboard shortcut. "mod" is the modifier which is a bitwise OR of: 1-SHIFT 4-CTRL 8-ALT in decimal. "key" is the key value in decimal, e.g. -k5,101 would specify SHIFT-CTRL-E.
    -mSpecify that this label should be treated as Pango Markup language. Since forward slash ("/") is already used in menu paths, you should replace closing tags with an ASCII 003 instead e.g.: xchat_command(ph, "MENU -m ADD \"<b>Bold Menu<\003b>\""); (new for 2.6.6).
    -pXSpecify a menu item's position number. e.g. -p5 will cause the item to be inserted in the 5th place. New for 2.8.0: If the position is a negative number, it will be used as an offset from the bottom/right-most item.
    -rX,groupSpecify a radio menu item, with initial state X and a group name (new for 2.8.0). The group name should be the exact label of another menu item (without the path) that this item will be grouped with. For radio items, only a select command will be executed (no unselect command).
    -tXSpecify a toggle menu item with an initial state. -t0 for an "unticked" item and -t1 for a "ticked" item.
    +
    + +If you want to change an item's toggle state or enabled flag, +just ADD an item with exactly the same name and command and specify the -tX -eX parameters you need. +

    It's also possible to add items to XChat's existing menus, for example:
    +
    	MENU ADD "Settings/Sub Menu"
    +	MENU -t0 ADD "Settings/Sub Menu/My Setting" myseton mysetoff
    +
    +However, internal names and layouts of XChat's menu may change in the future, so use at own risk. +

    +Here is an example of Radio items: +
    	MENU ADD "Language"
    +	MENU -r1,"English" ADD "Language/English" cmd1
    +	MENU -r0,"English" ADD "Language/Spanish" cmd2
    +	MENU -r0,"English" ADD "Language/German" cmd3
    +
    +From 2.8.0, you can also change menus other than the main one (i.e popup menus). Currently they are: +
    + + + + + + + + +
    Root NameMenu
    $TABTab menu (right click a channel/query tab or treeview row)
    $TRAYSystem Tray menu
    $URLURL link menu
    $NICKUserlist nick-name popup menu
    $CHANMenu when clicking a channel in the text area (since 2.8.4)
    +
    +
    +	Example: MENU -p0 ADD "$TAB/Cycle Channel" cycle
    +
    + +
    +Starting from 2.8.0 you can manipulate XChat's system tray icon using the /TRAY command: +
    + Usage: 
    + TRAY -f <timeout> <file1> [<file2>] Flash tray between two icons. Leave off file2 to use default xchat icon.
    + TRAY -f <filename>                  Set tray to a fixed icon.
    + TRAY -i <number>                    Flash tray with an internal icon.
    +                                     2=Message 5=Highlight 8=Private 11=File
    + TRAY -t <text>                      Set the tray tooltip.
    + TRAY -b <title> <text>              Set the tray balloon.
    +                                     Supported on Windows from 2.8.1 and 2.8.2 on Linux (libnotify required on Linux).
    +
    +Filenames can be ICO or PNG format. PNG format is supported on Linux/BSD and Windows XP (but requires installation of GDI+ on Windows 2000). Set a timeout of -1 to use XChat's default. +

    + +

    Handling UTF-8/Unicode strings

    +

    +The XChat plugin API specifies that strings passed to and from xchat must be encoded in UTF-8. +

    +What does this mean for the plugin programmer? You just have to be a little careful when +passing strings obtained from IRC to system calls. For example, if you're writing a file-server +bot, someone might message you a filename. Can you pass this filename directly to open()? Maybe! +If you're lazy... The correct thing to do is to convert the string to "system locale encoding", +otherwise your plugin will fail on non-ascii characters. +

    +Here are examples on how to do this conversion on Unix and Windows. In this example, someone will +CTCP you the message "SHOWFILE <filename>". +

    +

    +
    +static int ctcp_cb(char *word[], char *word_eol[], void *userdata)
    +{
    +	if(strcmp(word[1], "SHOWFILE") == 0)
    +	{
    +		get_file_name(nick, word[2]);
    +	}
    +
    +	return XCHAT_EAT_XCHAT;
    +}
    +
    +static void get_file_name(char *nick, char *fname)
    +{
    +	char buf[256];
    +	FILE *fp;
    +
    +	/* the fname is in UTF-8, because it came from the xchat API */
    +
    #ifdef _WIN32
    +	wchar_t wide_name[MAX_PATH];
    +
    +	/* convert UTF-8 to WIDECHARs (aka UTF-16LE) */
    +	if (MultiByteToWideChar(CP_UTF8, 0, fname, -1, wide_name, MAX_PATH) < 1)
    +		return;
    +
    +	/* now we have WIDECHARs, so we can _wopen() or CreateFileW(). */
    +	/* _wfopen actually requires NT4, Win2000, XP or newer. */
    +	fp = _wfopen(wide_name, "r");
    +
    #else
    +	char *loc_name;
    +
    +	/* convert UTF-8 to System Encoding */
    +	loc_name = g_filename_from_utf8(fname, -1, 0, 0, 0);
    +	if(!loc_name)
    +		return;
    +
    +	/* now open using the system's encoding */
    +	fp = fopen(loc_name, "r");
    +	g_free(loc_name);
    +
    #endif
    +	if (fp)
    +	{
    +		while (fgets (buf, sizeof(buf), fp))
    +		{
    +			/* send every line to the user that requested it */
    +			xchat_commandf (ph, "QUOTE NOTICE %s :%s", nick, buf);
    +		}
    +		fclose (fp);
    +	}
    +}
    +
    + + + +

    + +

    Functions

    + +

     xchat_hook_command() 

    +Prototype: xchat_hook *xchat_hook_command(xchat_plugin *ph, const char *name, int pri, xchat_cmd_cb *callb, const char *help_text, void *userdata); +
    +
    Description: Adds a new /command. This allows your program to +handle commands entered at the input box. To capture text without a "/" at +the start (non-commands), you may hook a special name of "". i.e xchat_hook_command(ph, "", ...);. +
    +Starting from version 2.6.8, commands hooked that begin with a period ('.') will be hidden in /HELP and /HELP -l. +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    name: Name of the command (without the forward slash). +
    pri: Priority of this command. Use XCHAT_PRI_NORM. +
    callb: Callback function. This will be called when the user executes the given command name. +
    help_text: String of text to display when the user executes /help for this command. May be NULL if you're lazy. +
    userdata: Pointer passed to the callback function.
    +Returns: Pointer to the hook. Can be passed to xchat_unhook. +
    +
    Example: +
    +
    +static int onotice_cb(char *word[], char *word_eol[], void *userdata)
    +{
    +	if(word_eol[2][0] == 0)
    +	{
    +		xchat_printf(ph, "Second arg must be the message!\n");
    +		return XCHAT_EAT_ALL;
    +	}
    +
    +	xchat_commandf(ph, "NOTICE @%s :%s", xchat_get_info(ph, "channel"), word_eol[2]);
    +	return XCHAT_EAT_ALL;
    +}
    +
    +xchat_hook_command(ph, "ONOTICE", XCHAT_PRI_NORM, onotice_cb,
    +                   "Usage: ONOTICE <message> Sends a notice to all ops", NULL);
    +
    +
    +
    + +

     xchat_hook_fd() 

    +Prototype: xchat_hook *xchat_hook_fd(xchat_plugin *ph, int fd, int flags, xchat_fd_cb *callb, void *userdata); +
    +
    Description: Hooks a socket or file descriptor. WIN32: Passing a pipe from MSVCR71, MSVCR80 or other variations is not supported at this time. +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    fd: The file descriptor or socket. +
    flags: One or more of XCHAT_FD_READ, XCHAT_FD_WRITE, XCHAT_FD_EXCEPTION, XCHAT_FD_NOTSOCKET. Use bitwise OR to combine them. +XCHAT_FD_NOTSOCKET tells xchat that the provided fd is not a socket, but a "MSVCRT.DLL" pipe. +
    callb: Callback function. This will be called when the socket is available for reading/writing or exception (depending on your chosen flags) +
    userdata: Pointer passed to the callback function.
    +Returns: Pointer to the hook. Can be passed to xchat_unhook. +


    + +

     xchat_hook_print() 

    +Prototype: xchat_hook *xchat_hook_print(xchat_plugin *ph, const char *name, int pri, xchat_print_cb *callb, void *userdata); +
    +
    Description: Registers a function to trap any print events. +The event names may be any available in the "Advanced > Text Events" window. +There are also some extra "special" events you may hook using this function. +Currently they are:
    +"Open Context" - Called when a new xchat_context is created. +
    "Close Context" - Called when a xchat_context pointer is closed. +
    "Focus Tab" - Called when a tab is brought to front. +
    "Focus Window" - Called a toplevel window is focused, or the main +tab-window is focused by the window manager. +
    "DCC Chat Text" - Called when some text from a DCC Chat arrives. It provides these elements in the word[] array:
    word[1] Address +
    word[2] Port +
    word[3] Nick +
    word[4] The Message +
    +"Key Press" - Called when some keys are pressed in the input-box (since 2.4.2). It provides these elements in the word[] array:
    word[1] Key Value +
    word[2] State Bitfield (shift, capslock, alt) +
    word[3] String version of the key +
    word[4] Length of the string (may be 0 for unprintable keys) +
    +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    name: Name of the print event (as in Edit Event Texts Window). +
    pri: Priority of this command. Use XCHAT_PRI_NORM. +
    callb: Callback function. This will be called when this event name is printed. +
    userdata: Pointer passed to the callback function.
    +Returns: Pointer to the hook. Can be passed to xchat_unhook. +
    +
    Example: +
    +
    +static int youpart_cb(char *word[], void *userdata)
    +{
    +	xchat_printf(ph, "You have left channel %s\n", word[3]);
    +	return XCHAT_EAT_XCHAT;	/* dont let xchat do its normal printing */
    +}
    +
    +xchat_hook_print(ph, "You Part", XCHAT_PRI_NORM, youpart_cb, NULL);
    +
    +
    +
    + +

     xchat_hook_server() 

    +Prototype: xchat_hook *xchat_hook_server(xchat_plugin *ph, const char *name, int pri, xchat_serv_cb *callb, void *userdata); +
    +
    Description: Registers a function to be called when a certain server event occurs. You can +use this to trap PRIVMSG, NOTICE, PART, a server numeric etc... If you want to +hook every line that comes from the IRC server, you may use the special name of "RAW LINE". +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    name: Name of the server event. +
    pri: Priority of this command. Use XCHAT_PRI_NORM. +
    callb: Callback function. This will be called when this event is received from the server. +
    userdata: Pointer passed to the callback function.
    +Returns: Pointer to the hook. Can be passed to xchat_unhook. +
    +
    Example: +
    +
    +static int kick_cb(char *word[], char *word_eol[], void *userdata)
    +{
    +	xchat_printf(ph, "%s was kicked from %s (reason=%s)\n", word[4], word[3], word_eol[5]);
    +	return XCHAT_EAT_NONE;	/* don't eat this event, let other plugins and xchat see it too */
    +}
    +
    +xchat_hook_server(ph, "KICK", XCHAT_PRI_NORM, kick_cb, NULL);
    +
    +
    +
    + +

     xchat_hook_timer() 

    +Prototype: xchat_hook *xchat_hook_timer(xchat_plugin *ph, int timeout, xchat_timer_cb *callb, void *userdata); +
    +
    Description: Registers a function to be called every "timeout" milliseconds. +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    timeout: Timeout in milliseconds (1000 is 1 second). +
    callb: Callback function. This will be called every "timeout" milliseconds. +
    userdata: Pointer passed to the callback function.
    +Returns: Pointer to the hook. Can be passed to xchat_unhook. +
    +
    Example: +
    +
    +static xchat_hook *myhook;
    +
    +static int stop_cb(char *word[], char *word_eol[], void *userdata)
    +{
    +	if(myhook != NULL)
    +	{
    +		xchat_unhook(ph, myhook);
    +		myhook = NULL;
    +		xchat_print(ph, "Timeout removed!\n");
    +	}
    +
    +	return XCHAT_EAT_ALL;
    +}
    +
    +static int timeout_cb(void *userdata)
    +{
    +	xchat_print(ph, "Annoying message every 5 seconds! Type /STOP to stop it.\n");
    +	return 1;	/* return 1 to keep the timeout going */
    +}
    +
    +myhook = xchat_hook_timer(ph, 5000, timeout_cb, NULL);
    +xchat_hook_command(ph, "STOP", XCHAT_PRI_NORM, stop_cb, NULL, NULL);
    +

    +
    + +

     xchat_unhook() 

    +Prototype: void *xchat_unhook(xchat_plugin *ph, xchat_hook *hook); +
    +
    Description: Unhooks any hook registered with xchat_hook_print/server/timer/command. When plugins are unloaded, all of its hooks are automatically +removed, so you don't need to call this within your xchat_plugin_deinit() function. +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    hook: Pointer to the hook, as returned by xchat_hook_*. +
    +Returns: The userdata you originally gave to xchat_hook_*. +

    + +

     xchat_command() 

    +Prototype: void xchat_command(xchat_plugin *ph, const char *command); +
    +
    Description: Executes a command as if it were typed in xchat's input box. +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    command: Command to execute, without the forward slash "/". +

    +
    + +

     xchat_commandf() 

    +Prototype: void xchat_commandf(xchat_plugin *ph, const char *format, ...); +
    +
    Description: Executes a command as if it were typed in xchat's input box and provides string formating like printf. +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    format: The format string. +

    +
    + +

     xchat_print() 

    +Prototype: void xchat_print(xchat_plugin *ph, const char *text); +
    +
    Description: Prints some text to the current tab/window. +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    text: Text to print. May contain mIRC color codes. +

    +
    + +

     xchat_printf() 

    +Prototype: void xchat_printf(xchat_plugin *ph, const char *format, ...); +
    +
    Description: Prints some text to the current tab/window and provides formating like printf. +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    format: The format string. +

    +
    + +

     xchat_emit_print() 

    +Prototype: int xchat_emit_print(xchat_plugin *ph, const char *event_name, ...); +
    +
    Description: Generates a print event. This can be any +event found in the Preferences > Advanced > Text Events window. The vararg parameter list +MUST always be NULL terminated. Special care should be taken when calling this function +inside a print callback (from xchat_hook_print), as not to cause endless recursion. +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    event_name: Text event to print. +

    +
    +Returns: 1-Success 0-Failure. +

    +Example: +
    +xchat_emit_print(ph, "Channel Message", "John", "Hi there", "@", NULL);
    +
    +

    + +

     xchat_send_modes() (new for 2.0.9)

    +Prototype: void xchat_send_modes (xchat_plugin *ph, const char *targets[], int ntargets, int modes_per_line, char sign, char mode) +
    +
    Description: Sends a number of channel mode changes to the current channel. For example, you can Op a whole +group of people in one go. It may send multiple MODE lines if the request doesn't fit on one. Pass 0 for +modes_per_line to use the current server's maximum possible. This function should only be called while +in a channel context. +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    targets: Array of targets (strings). The names of people whom the action will be performed on. +
    ntargets: Number of elements in the array given. +
    modes_per_line: Maximum modes to send per line. +
    sign: Mode sign, '-' or '+'. +
    mode: Mode char, e.g. 'o' for Ops.
    +
    +Example: (Ops the three names given) +
    +const char *names_to_Op[] = {"John", "Jack", "Jill"};
    +xchat_send_modes(ph, names_to_Op, 3, 0, '+', 'o');
    +
    +

    + +

     xchat_find_context() 

    +Prototype: xchat_context *xchat_find_context(xchat_plugin *ph, const char *servname, const char *channel); +
    +
    Description: Finds a context based on a channel and servername. If servname is NULL, it finds any channel (or query) by the given name. If channel is NULL, it finds the front-most tab/window of the given servname. If NULL is given for both arguments, the currently focused tab/window will be returned.
    +Changed in 2.6.1. If servname is NULL, it finds the channel (or query) by the given name in the same server group as the current context. If that doesn't exists then find any by the given name. +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    servname: Servername or NULL. +
    channel: Channelname or NULL. +
    +
    +Returns: Context pointer (for use with xchat_set_context) or NULL. +


    + +

     xchat_get_context() 

    +Prototype: xchat_context *xchat_get_context(xchat_plugin *ph); +
    +
    Description: Returns the current context for your plugin. You can use this later with xchat_set_context. +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    +
    +Returns: Context pointer (for use with xchat_set_context). +


    + +

     xchat_get_info() 

    +Prototype: const char *xchat_get_info(xchat_plugin *ph, const char *id); +
    +
    Description: Returns information based on your current context. +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    id: ID of the information you want. Currently supported IDs are (case sensitive): +
    + + + + + + + + + + + + + + + + + + + +
    awayaway reason or NULL if you are not away.
    channelcurrent channel name.
    charsetcharacter-set used in the current context (since 2.4.2).
    event_text <name>text event format string for name (since 2.8.2).
    hostreal hostname of the server you connected to.
    inputboxthe input-box contents, what the user has typed (since 2.4.1).
    libdirfslibrary directory. e.g. /usr/lib/xchat. The same directory used for auto-loading plugins (since 2.4.0).This string isn't necessarily UTF-8, but local file system encoding.
    modeschannel modes, if known, or NULL (since 2.8.1).
    networkcurrent network name or NULL.
    nickyour current nick name.
    nickservnickserv password for this network or NULL (since 2.4.3).
    servercurrent server name (what the server claims to be). NULL if you are not connected.
    topiccurrent channel topic.
    versionxchat version number.
    win_ptrnative window pointer. Unix: (GtkWindow *) Win32: HWND (since 2.6.0).
    win_statuswindow status: "active", "hidden" or "normal" (since 2.0.9).
    xchatdirxchat config directory, e.g.: /home/user/.xchat2 This string is encoded in UTF-8, which means you _should_ convert it to "locale" encoding before using functions like open() or OpenFile(). For best Unicode support on Linux, convert this string using g_filename_from_utf8 and on Windows convert this string to UTF-16LE (wide) and use OpenFileW() etc.
    xchatdirfsxchat config directory, e.g.: /home/user/.xchat2 (since 2.0.9).This string is encoded in local file system encoding, making it ideal for direct use with functions like open() or OpenFile(). For real Unicode support on Windows, it's best not to use xchatdirfs, but xchatdir instead.
    +
    +
    +Returns: A string of the requested information, or NULL. This string must +not be freed and must be copied if needed after the call to xchat_get_info. +


    + +

     xchat_get_prefs() 

    +Prototype: int xchat_get_prefs(xchat_plugin *ph, const char *name, const char **string, int *integer); +
    +
    Description: Provides xchat's setting information (that which is available through the /set command). +A few extra bits of information are available that don't appear in the /set list, currently they are: +
    +
    + + + +
    state_cursorCurrent input-box cursor position (characters, not bytes). Since 2.4.2.
    idUnique server id. Since 2.6.1.
    +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    name: Setting name required. +
    string: Pointer-pointer which to set. +
    integer: Pointer to an integer to set, if setting is a Boolean or Integer type. +
    +Returns: 0-Failed 1-Returned a string 2-Returned an Integer 3-Returned a Boolean. +

    Example: +
    +
    +{
    +	int i;
    +	const char *str;
    +
    +	if (xchat_get_prefs (ph, "irc_nick1", &str, &i) == 1)
    +	{
    +		xchat_printf (ph, "Current nickname setting: %s\n", str);
    +	}
    +}
    +
    +

    + + +

     xchat_set_context() 

    +Prototype: int xchat_set_context(xchat_plugin *ph, xchat_context *ctx); +
    +
    Description: Changes your current context to the one given. +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    ctx: Context to change to (obtained with xchat_get_context or xchat_find_context). +
    +
    +Returns: 1 for success, 0 for failure. +


    + +

     xchat_nickcmp() 

    +Prototype: int xchat_nickcmp(xchat_plugin *ph, const char *s1, const char *s2); +
    +
    Description: Performs a nick name comparision, based on the current server connection. This might be a RFC1459 compliant string compare, or +plain ascii (in the case of DALNet). Use this to compare channels and nicknames. The function works the same way as strcasecmp. +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    s1: String to compare. +
    s2: String to compare s1 to. +
    +
    +Quote from RFC1459: +
    + Because of IRC's scandanavian origin, the characters {}| are + considered to be the lower case equivalents of the characters []\, + respectively. This is a critical issue when determining the + equivalence of two nicknames. +
    +Returns: + An integer + less than, equal to, or greater than zero if s1 is found, + respectively, to be less than, to match, or be greater than s2. +


    + +

     xchat_strip() (new for 2.4.2)

    +Prototype: char *xchat_strip(xchat_plugin *ph, const char *str, int len, int flags); +
    +
    Description: Strips mIRC color codes and/or text attributes (bold, underlined etc) from the given string and returns a newly allocated string. +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    str: String to strip. +
    len: Length of the string (or -1 for NULL terminated). +
    flags: Bit-field of flags: 0-Strip mIRC colors, 1-Strip text attributes. +
    +
    +Returns: +A newly allocated string or NULL for failure. You must free this string with xchat_free. +

    Example: +
    +
    +{
    +	char *new_text;
    +
    +	/* strip both colors and attributes by using the 0 and 1 bits (1 BITWISE-OR 2) */
    +	new_text = xchat_strip(ph, "\00312Blue\003 \002Bold!\002", -1, 1 | 2);
    +
    +	if(new_text)
    +	{
    +		/* new_text should now contain only "Blue Bold!" */
    +		xchat_printf(ph, "%s\n", new_text);
    +		xchat_free(ph, new_text);
    +	}
    +}
    +
    + +

    + +

     xchat_free() (new for 2.4.2)

    +Prototype: void xchat_free(xchat_plugin *ph, void *ptr); +
    +
    Description: Frees a string returned by xchat_* functions. Currently only used to free strings from xchat_strip. +
    +
    Arguments: +
    ph: Plugin handle (as given to xchat_plugin_init). +
    ptr: Pointer to free. +
    +
    + +

    + + + diff --git a/xchat-2.8.8/plugins/python/.deps/python.Plo b/xchat-2.8.8/plugins/python/.deps/python.Plo new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/plugins/python/.deps/python.Plo @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/plugins/python/Makefile b/xchat-2.8.8/plugins/python/Makefile new file mode 100644 index 0000000..d208540 --- /dev/null +++ b/xchat-2.8.8/plugins/python/Makefile @@ -0,0 +1,611 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# plugins/python/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + +pkgdatadir = $(datadir)/xchat +pkgincludedir = $(includedir)/xchat +pkglibdir = $(libdir)/xchat +pkglibexecdir = $(libexecdir)/xchat +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +subdir = plugins/python +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(libdir)" +LTLIBRARIES = $(lib_LTLIBRARIES) +am__DEPENDENCIES_1 = +python_la_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_python_la_OBJECTS = python.lo +python_la_OBJECTS = $(am_python_la_OBJECTS) +python_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(python_la_LDFLAGS) $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(python_la_SOURCES) +DIST_SOURCES = $(python_la_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run aclocal-1.11 +ALLOCA = +AMTAR = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run tar +AR = ar +AUTOCONF = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run autoconf +AUTOHEADER = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run autoheader +AUTOMAKE = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run automake-1.11 +AWK = gawk +BUILD_INCLUDED_LIBINTL = no +CATOBJEXT = .gmo +CC = gcc +CCAS = gcc +CCASDEPMODE = depmode=gcc3 +CCASFLAGS = -g -O2 +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 -Wall -pipe -Wno-pointer-sign -funsigned-char +CFLAG_VISIBILITY = -fvisibility=hidden +COMMON_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -pthread -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include +COMMON_LIBS = -lglib-2.0 -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DATADIR = ${prefix}/share +DATADIRNAME = share +DBUS_BINDING_TOOL = /usr/bin/dbus-binding-tool +DBUS_CFLAGS = -pthread -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include +DBUS_LIBS = -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0 +DBUS_SERVICES_DIR = ${prefix}/share/dbus-1/services +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/local/bin/grep -E +EXEEXT = +FGREP = /usr/local/bin/grep -F +GCONFTOOL = /usr/bin/gconftool-2 +GENCAT = gencat +GETTEXT_MACRO_VERSION = 0.17 +GETTEXT_PACKAGE = xchat +GLIBC2 = yes +GLIBC21 = yes +GLIB_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include +GLIB_GENMARSHAL = /usr/bin/glib-genmarshal +GLIB_LIBS = -lglib-2.0 +GLIB_MKENUMS = glib-mkenums +GMSGFMT = /usr/bin/msgfmt +GMSGFMT_015 = /usr/bin/msgfmt +GOBJECT_QUERY = gobject-query +GREP = /usr/local/bin/grep +GTKSPELL_CFLAGS = +GTKSPELL_LIBS = +GTK_CFLAGS = -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 +GTK_LIBS = -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype +GUI_CFLAGS = -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 +GUI_LIBS = -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype -Wl,--version-script,$(srcdir)/../version-script -lglib-2.0 -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0 +HAVE_ASPRINTF = 1 +HAVE_POSIX_PRINTF = 1 +HAVE_SNPRINTF = 1 +HAVE_VISIBILITY = 1 +HAVE_WPRINTF = 0 +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +INSTOBJEXT = .mo +INTLBISON = bison +INTLLIBS = +INTLOBJS = +INTL_LIBTOOL_SUFFIX_PREFIX = +INTL_MACOSX_LIBS = +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = -lgmodule-2.0 +LIBICONV = -liconv +LIBINTL = +LIBMULTITHREAD = -lpthread +LIBOBJS = +LIBPTH = +LIBPTH_PREFIX = +LIBS = -lX11 -lssl -lcrypto -ldl -Wl,--export-dynamic -pthread -lglib-2.0 +LIBSEXY_CFLAGS = +LIBSEXY_LIBS = +LIBTHREAD = +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBC = -lc +LTLIBICONV = -liconv +LTLIBINTL = +LTLIBMULTITHREAD = -lpthread +LTLIBOBJS = +LTLIBPTH = +LTLIBTHREAD = +MAINT = # +MAKEINFO = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run makeinfo +MKDIR_P = /bin/mkdir -p +MSGFMT = /usr/bin/msgfmt +MSGFMT_015 = /usr/bin/msgfmt +MSGMERGE = /usr/bin/msgmerge +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = xchat +PACKAGE_BUGREPORT = http://www.xchat.org/ +PACKAGE_NAME = XChat +PACKAGE_STRING = XChat 2.8.8 +PACKAGE_TARNAME = xchat +PACKAGE_URL = +PACKAGE_VERSION = 2.8.8 +PATH_SEPARATOR = : +PERL_CFLAGS = -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/lib/x86_64-linux-gnu/perl/5.26/CORE +PERL_LDFLAGS = -Wl,-E -fstack-protector-strong -L/usr/local/lib -L/usr/lib/x86_64-linux-gnu/perl/5.26/CORE -lperl -ldl -lm -lpthread -lcrypt +PKG_CONFIG = /usr/bin/pkg-config +PLUGIN_INCLUDES = -I$(top_srcdir)/plugins +POSUB = po +PRI_MACROS_BROKEN = 0 +PY_CFLAGS = -I/usr/include/python2.7 +PY_LIBS = -L/usr/lib/python2.7/config -lpython2.7 -lpthread -lutil +RANLIB = ranlib +SED = /bin/sed +SET_MAKE = +SHELL = /bin/bash +STRIP = strip +TCL_CFLAGS = -I/usr/include -I/usr/include/tcl8.6 +TCL_LIBS = -L/usr/lib/x86_64-linux-gnu -ltcl8.6 -ldl -lz -lpthread -lm +USE_INCLUDED_LIBINTL = no +USE_NLS = yes +VERSION = 2.8.8 +WINDRES = +WOE32 = no +WOE32DLL = no +XGETTEXT = /usr/bin/xgettext +XGETTEXT_015 = /usr/bin/xgettext +XGETTEXT_EXTRA_OPTIONS = +abs_builddir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/plugins/python +abs_srcdir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/plugins/python +abs_top_builddir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8 +abs_top_srcdir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8 +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = /usr/local +gdkpixbufcsourcepath = /usr/bin/gdk-pixbuf-csource +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/install-sh +libdir = $(xchatlibdir)/plugins +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +lt_ECHO = echo +mandir = ${datarootdir}/man +mkdir_p = /bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +perlpath = /usr/bin/perl +pkgconfigpath = /usr/bin/pkg-config +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +pythonpath = /usr/bin/python2 +sbindir = ${exec_prefix}/sbin +sedpath = /bin/sed +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../../ +top_builddir = ../.. +top_srcdir = ../.. +unamepath = /bin/uname +xchatlibdir = ${exec_prefix}/lib/xchat +EXTRA_DIST = +lib_LTLIBRARIES = python.la +python_la_SOURCES = python.c +python_la_LDFLAGS = -avoid-version -module +python_la_LIBADD = $(PY_LIBS) +INCLUDES = $(PY_CFLAGS) $(COMMON_CFLAGS) -I$(srcdir)/.. +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign plugins/python/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign plugins/python/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +python.la: $(python_la_OBJECTS) $(python_la_DEPENDENCIES) + $(python_la_LINK) -rpath $(libdir) $(python_la_OBJECTS) $(python_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/python.Plo + +.c.o: + depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ + $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ + $(am__mv) $$depbase.Tpo $$depbase.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(COMPILE) -c -o $@ $< + +.c.obj: + depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ + $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ + $(am__mv) $$depbase.Tpo $$depbase.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: + depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ + $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ + $(am__mv) $$depbase.Tpo $$depbase.Plo +# source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) +installdirs: + for dir in "$(DESTDIR)$(libdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-libLTLIBRARIES + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-libLTLIBRARIES + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libLTLIBRARIES clean-libtool ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am \ + install-libLTLIBRARIES install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-libLTLIBRARIES + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/xchat-2.8.8/plugins/python/Makefile.am b/xchat-2.8.8/plugins/python/Makefile.am new file mode 100644 index 0000000..1e4adff --- /dev/null +++ b/xchat-2.8.8/plugins/python/Makefile.am @@ -0,0 +1,10 @@ +EXTRA_DIST = + +libdir = $(xchatlibdir)/plugins + +lib_LTLIBRARIES = python.la +python_la_SOURCES = python.c +python_la_LDFLAGS = -avoid-version -module +python_la_LIBADD = $(PY_LIBS) +INCLUDES = $(PY_CFLAGS) $(COMMON_CFLAGS) -I$(srcdir)/.. + diff --git a/xchat-2.8.8/plugins/python/Makefile.in b/xchat-2.8.8/plugins/python/Makefile.in new file mode 100644 index 0000000..4b47c54 --- /dev/null +++ b/xchat-2.8.8/plugins/python/Makefile.in @@ -0,0 +1,611 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = plugins/python +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(libdir)" +LTLIBRARIES = $(lib_LTLIBRARIES) +am__DEPENDENCIES_1 = +python_la_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_python_la_OBJECTS = python.lo +python_la_OBJECTS = $(am_python_la_OBJECTS) +python_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(python_la_LDFLAGS) $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(python_la_SOURCES) +DIST_SOURCES = $(python_la_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +COMMON_CFLAGS = @COMMON_CFLAGS@ +COMMON_LIBS = @COMMON_LIBS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DATADIRNAME = @DATADIRNAME@ +DBUS_BINDING_TOOL = @DBUS_BINDING_TOOL@ +DBUS_CFLAGS = @DBUS_CFLAGS@ +DBUS_LIBS = @DBUS_LIBS@ +DBUS_SERVICES_DIR = @DBUS_SERVICES_DIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GCONFTOOL = @GCONFTOOL@ +GENCAT = @GENCAT@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GLIB_CFLAGS = @GLIB_CFLAGS@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GLIB_LIBS = @GLIB_LIBS@ +GLIB_MKENUMS = @GLIB_MKENUMS@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GOBJECT_QUERY = @GOBJECT_QUERY@ +GREP = @GREP@ +GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ +GTKSPELL_LIBS = @GTKSPELL_LIBS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_LIBS = @GTK_LIBS@ +GUI_CFLAGS = @GUI_CFLAGS@ +GUI_LIBS = @GUI_LIBS@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBSEXY_CFLAGS = @LIBSEXY_CFLAGS@ +LIBSEXY_LIBS = @LIBSEXY_LIBS@ +LIBTHREAD = @LIBTHREAD@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBC = @LTLIBC@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTHREAD = @LTLIBTHREAD@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL_CFLAGS = @PERL_CFLAGS@ +PERL_LDFLAGS = @PERL_LDFLAGS@ +PKG_CONFIG = @PKG_CONFIG@ +PLUGIN_INCLUDES = @PLUGIN_INCLUDES@ +POSUB = @POSUB@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +PY_CFLAGS = @PY_CFLAGS@ +PY_LIBS = @PY_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TCL_CFLAGS = @TCL_CFLAGS@ +TCL_LIBS = @TCL_LIBS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WOE32 = @WOE32@ +WOE32DLL = @WOE32DLL@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gdkpixbufcsourcepath = @gdkpixbufcsourcepath@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = $(xchatlibdir)/plugins +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +perlpath = @perlpath@ +pkgconfigpath = @pkgconfigpath@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pythonpath = @pythonpath@ +sbindir = @sbindir@ +sedpath = @sedpath@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +unamepath = @unamepath@ +xchatlibdir = @xchatlibdir@ +EXTRA_DIST = +lib_LTLIBRARIES = python.la +python_la_SOURCES = python.c +python_la_LDFLAGS = -avoid-version -module +python_la_LIBADD = $(PY_LIBS) +INCLUDES = $(PY_CFLAGS) $(COMMON_CFLAGS) -I$(srcdir)/.. +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign plugins/python/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign plugins/python/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +python.la: $(python_la_OBJECTS) $(python_la_DEPENDENCIES) + $(python_la_LINK) -rpath $(libdir) $(python_la_OBJECTS) $(python_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/python.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) +installdirs: + for dir in "$(DESTDIR)$(libdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-libLTLIBRARIES + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-libLTLIBRARIES + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libLTLIBRARIES clean-libtool ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am \ + install-libLTLIBRARIES install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-libLTLIBRARIES + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/xchat-2.8.8/plugins/python/python.c b/xchat-2.8.8/plugins/python/python.c new file mode 100644 index 0000000..f3c7a28 --- /dev/null +++ b/xchat-2.8.8/plugins/python/python.c @@ -0,0 +1,2240 @@ +/* +* Copyright (c) 2002-2003 Gustavo Niemeyer +* +* XChat Python Plugin Interface +* +* Xchat Python Plugin Interface is free software; you can redistribute +* it and/or modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 of the +* License, or (at your option) any later version. +* +* pybot 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 General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this file; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +/* Thread support + * ============== + * + * The python interpreter has a global interpreter lock. Any thread + * executing must acquire it before working with data accessible from + * python code. Here we must also care about xchat not being + * thread-safe. We do this by using an xchat lock, which protects + * xchat instructions from being executed out of time (when this + * plugin is not "active"). + * + * When xchat calls python code: + * - Change the current_plugin for the executing plugin; + * - Release xchat lock + * - Acquire the global interpreter lock + * - Make the python call + * - Release the global interpreter lock + * - Acquire xchat lock + * + * When python code calls xchat: + * - Release the global interpreter lock + * - Acquire xchat lock + * - Restore context, if necessary + * - Make the xchat call + * - Release xchat lock + * - Acquire the global interpreter lock + * + * Inside a timer, so that individual threads have a chance to run: + * - Release xchat lock + * - Go ahead threads. Have a nice time! + * - Acquire xchat lock + * + */ + +#include +#include +#include +#include +#include +#include + +#include "xchat-plugin.h" +#include "Python.h" +#include "structmember.h" +#include "pythread.h" + +#define VERSION_MAJOR 0 +#define VERSION_MINOR 1 + +#ifdef WIN32 +#undef WITH_THREAD /* Thread support locks up xchat on Win32. */ +#define VERSION "0.8/2.4" /* Linked to python24.dll */ +#else +#define VERSION "0.8" +#endif + +#define NONE 0 +#define ALLOW_THREADS 1 +#define RESTORE_CONTEXT 2 + +#ifdef WITH_THREAD +#define ACQUIRE_XCHAT_LOCK() PyThread_acquire_lock(xchat_lock, 1) +#define RELEASE_XCHAT_LOCK() PyThread_release_lock(xchat_lock) +#define BEGIN_XCHAT_CALLS(x) \ + do { \ + PyObject *calls_plugin = NULL; \ + PyThreadState *calls_thread; \ + if ((x) & RESTORE_CONTEXT) \ + calls_plugin = Plugin_GetCurrent(); \ + calls_thread = PyEval_SaveThread(); \ + ACQUIRE_XCHAT_LOCK(); \ + if (!((x) & ALLOW_THREADS)) { \ + PyEval_RestoreThread(calls_thread); \ + calls_thread = NULL; \ + } \ + if (calls_plugin) \ + xchat_set_context(ph, \ + Plugin_GetContext(calls_plugin)); \ + while (0) +#define END_XCHAT_CALLS() \ + RELEASE_XCHAT_LOCK(); \ + if (calls_thread) \ + PyEval_RestoreThread(calls_thread); \ + } while(0) +#else +#define ACQUIRE_XCHAT_LOCK() +#define RELEASE_XCHAT_LOCK() +#define BEGIN_XCHAT_CALLS(x) +#define END_XCHAT_CALLS() +#endif + +#ifdef WITH_THREAD + +#define BEGIN_PLUGIN(plg) \ + do { \ + xchat_context *begin_plugin_ctx = xchat_get_context(ph); \ + RELEASE_XCHAT_LOCK(); \ + Plugin_AcquireThread(plg); \ + Plugin_SetContext(plg, begin_plugin_ctx); \ + } while (0) +#define END_PLUGIN(plg) \ + do { \ + Plugin_ReleaseThread(plg); \ + ACQUIRE_XCHAT_LOCK(); \ + } while (0) + +#else /* !WITH_THREAD (win32) */ + +static PyThreadState *pTempThread; + +#define BEGIN_PLUGIN(plg) \ + do { \ + xchat_context *begin_plugin_ctx = xchat_get_context(ph); \ + RELEASE_XCHAT_LOCK(); \ + PyEval_AcquireLock(); \ + pTempThread = PyThreadState_Swap(((PluginObject *)(plg))->tstate); \ + Plugin_SetContext(plg, begin_plugin_ctx); \ + } while (0) +#define END_PLUGIN(plg) \ + do { \ + ((PluginObject *)(plg))->tstate = PyThreadState_Swap(pTempThread); \ + PyEval_ReleaseLock(); \ + ACQUIRE_XCHAT_LOCK(); \ + } while (0) + +#endif /* !WITH_THREAD */ + +#define Plugin_Swap(x) \ + PyThreadState_Swap(((PluginObject *)(x))->tstate) +#define Plugin_AcquireThread(x) \ + PyEval_AcquireThread(((PluginObject *)(x))->tstate) +#define Plugin_ReleaseThread(x) \ + Util_ReleaseThread(((PluginObject *)(x))->tstate) +#define Plugin_GetFilename(x) \ + (((PluginObject *)(x))->filename) +#define Plugin_GetName(x) \ + (((PluginObject *)(x))->name) +#define Plugin_GetVersion(x) \ + (((PluginObject *)(x))->version) +#define Plugin_GetDesc(x) \ + (((PluginObject *)(x))->description) +#define Plugin_GetHooks(x) \ + (((PluginObject *)(x))->hooks) +#define Plugin_GetContext(x) \ + (((PluginObject *)(x))->context) +#define Plugin_SetFilename(x, y) \ + ((PluginObject *)(x))->filename = (y); +#define Plugin_SetName(x, y) \ + ((PluginObject *)(x))->name = (y); +#define Plugin_SetVersion(x, y) \ + ((PluginObject *)(x))->version = (y); +#define Plugin_SetDescription(x, y) \ + ((PluginObject *)(x))->description = (y); +#define Plugin_SetHooks(x, y) \ + ((PluginObject *)(x))->hooks = (y); +#define Plugin_SetContext(x, y) \ + ((PluginObject *)(x))->context = (y); + +#define HOOK_XCHAT 1 +#define HOOK_UNLOAD 2 + +/* ===================================================================== */ +/* Object definitions */ + +typedef struct { + PyObject_HEAD + int softspace; /* We need it for print support. */ +} XChatOutObject; + +typedef struct { + PyObject_HEAD + xchat_context *context; +} ContextObject; + +typedef struct { + PyObject_HEAD + const char *listname; + PyObject *dict; +} ListItemObject; + +typedef struct { + PyObject_HEAD + char *name; + char *version; + char *filename; + char *description; + GSList *hooks; + PyThreadState *tstate; + xchat_context *context; + void *gui; +} PluginObject; + +typedef struct { + int type; + PyObject *plugin; + PyObject *callback; + PyObject *userdata; + void *data; /* A handle, when type == HOOK_XCHAT */ +} Hook; + + +/* ===================================================================== */ +/* Function declarations */ + +static PyObject *Util_BuildList(char *word[]); +static void Util_Autoload(); +static char *Util_Expand(char *filename); + +static int Callback_Command(char *word[], char *word_eol[], void *userdata); +static int Callback_Print(char *word[], void *userdata); +static int Callback_Timer(void *userdata); +static int Callback_ThreadTimer(void *userdata); + +static PyObject *XChatOut_New(); +static PyObject *XChatOut_write(PyObject *self, PyObject *args); +static void XChatOut_dealloc(PyObject *self); + +static void Context_dealloc(PyObject *self); +static PyObject *Context_set(ContextObject *self, PyObject *args); +static PyObject *Context_command(ContextObject *self, PyObject *args); +static PyObject *Context_prnt(ContextObject *self, PyObject *args); +static PyObject *Context_get_info(ContextObject *self, PyObject *args); +static PyObject *Context_get_list(ContextObject *self, PyObject *args); +static PyObject *Context_compare(ContextObject *a, ContextObject *b, int op); +static PyObject *Context_FromContext(xchat_context *context); +static PyObject *Context_FromServerAndChannel(char *server, char *channel); + +static PyObject *Plugin_New(char *filename, PyMethodDef *xchat_methods, + PyObject *xcoobj); +static PyObject *Plugin_GetCurrent(); +static PluginObject *Plugin_ByString(char *str); +static Hook *Plugin_AddHook(int type, PyObject *plugin, PyObject *callback, + PyObject *userdata, void *data); +static void Plugin_RemoveHook(PyObject *plugin, Hook *hook); +static void Plugin_RemoveAllHooks(PyObject *plugin); + +static PyObject *Module_xchat_command(PyObject *self, PyObject *args); +static PyObject *Module_xchat_prnt(PyObject *self, PyObject *args); +static PyObject *Module_xchat_get_context(PyObject *self, PyObject *args); +static PyObject *Module_xchat_find_context(PyObject *self, PyObject *args, + PyObject *kwargs); +static PyObject *Module_xchat_get_info(PyObject *self, PyObject *args); +static PyObject *Module_xchat_hook_command(PyObject *self, PyObject *args, + PyObject *kwargs); +static PyObject *Module_xchat_hook_server(PyObject *self, PyObject *args, + PyObject *kwargs); +static PyObject *Module_xchat_hook_print(PyObject *self, PyObject *args, + PyObject *kwargs); +static PyObject *Module_xchat_hook_timer(PyObject *self, PyObject *args, + PyObject *kwargs); +static PyObject *Module_xchat_unhook(PyObject *self, PyObject *args); +static PyObject *Module_xchat_get_info(PyObject *self, PyObject *args); +static PyObject *Module_xchat_get_list(PyObject *self, PyObject *args); +static PyObject *Module_xchat_get_lists(PyObject *self, PyObject *args); +static PyObject *Module_xchat_nickcmp(PyObject *self, PyObject *args); +static PyObject *Module_xchat_strip(PyObject *self, PyObject *args); + +static void IInterp_Exec(char *command); +static int IInterp_Cmd(char *word[], char *word_eol[], void *userdata); + +static void Command_PyList(); +static void Command_PyLoad(char *filename); +static void Command_PyUnload(char *name); +static void Command_PyReload(char *name); +static void Command_PyAbout(); +static int Command_Py(char *word[], char *word_eol[], void *userdata); + +/* ===================================================================== */ +/* Static declarations and definitions */ + +staticforward PyTypeObject Plugin_Type; +staticforward PyTypeObject XChatOut_Type; +staticforward PyTypeObject Context_Type; +staticforward PyTypeObject ListItem_Type; + +static PyThreadState *main_tstate = NULL; +static void *thread_timer = NULL; + +static xchat_plugin *ph; +static GSList *plugin_list = NULL; + +static PyObject *interp_plugin = NULL; +static PyObject *xchatout = NULL; + +#ifdef WITH_THREAD +static PyThread_type_lock xchat_lock = NULL; +#endif + +static const char usage[] = "\ +Usage: /PY LOAD \n\ + UNLOAD \n\ + RELOAD \n\ + LIST\n\ + EXEC \n\ + CONSOLE\n\ + ABOUT\n\ +\n"; + +static const char about[] = "\ +\n\ +X-Chat Python Interface " VERSION "\n\ +\n\ +Copyright (c) 2002-2003 Gustavo Niemeyer \n\ +\n"; + + +/* ===================================================================== */ +/* Utility functions */ + +static PyObject * +Util_BuildList(char *word[]) +{ + PyObject *list; + int listsize = 0; + int i; + while (word[listsize] && word[listsize][0]) + listsize++; + list = PyList_New(listsize); + if (list == NULL) { + PyErr_Print(); + return NULL; + } + for (i = 0; i != listsize; i++) { + PyObject *o = PyString_FromString(word[i]); + if (o == NULL) { + Py_DECREF(list); + PyErr_Print(); + return NULL; + } + PyList_SetItem(list, i, o); + } + return list; +} + +static void +Util_Autoload_from (const char *dir_name) +{ +#ifndef PATH_MAX +#define PATH_MAX 1024 /* Hurd doesn't define it */ +#endif + char oldcwd[PATH_MAX]; + struct dirent *ent; + DIR *dir; + if (getcwd(oldcwd, PATH_MAX) == NULL) + return; + if (chdir(dir_name) != 0) + return; + dir = opendir("."); + if (dir == NULL) + return; + while ((ent = readdir(dir))) { + int len = strlen(ent->d_name); + if (len > 3 && strcmp(".py", ent->d_name+len-3) == 0) + Command_PyLoad(ent->d_name); + } + closedir(dir); + chdir(oldcwd); +} + +static void +Util_Autoload() +{ + /* we need local filesystem encoding for chdir, opendir etc */ + + /* auto-load from ~/.xchat2/ or %APPDATA%\X-Chat 2\ */ + Util_Autoload_from(xchat_get_info(ph, "xchatdirfs")); + +#ifdef WIN32 /* also auto-load C:\Program Files\XChat\Plugins\*.py */ + Util_Autoload_from(XCHATLIBDIR"/plugins"); +#endif +} + +static char * +Util_Expand(char *filename) +{ + char *expanded; + + /* Check if this is an absolute path. */ + if (g_path_is_absolute(filename)) { + if (g_file_test(filename, G_FILE_TEST_EXISTS)) + return g_strdup(filename); + else + return NULL; + } + + /* Check if it starts with ~/ and expand the home if positive. */ + if (*filename == '~' && *(filename+1) == '/') { + expanded = g_build_filename(g_get_home_dir(), + filename+2, NULL); + if (g_file_test(expanded, G_FILE_TEST_EXISTS)) + return expanded; + else { + g_free(expanded); + return NULL; + } + } + + /* Check if it's in the current directory. */ + expanded = g_build_filename(g_get_current_dir(), + filename, NULL); + if (g_file_test(expanded, G_FILE_TEST_EXISTS)) + return expanded; + g_free(expanded); + + /* Check if ~/.xchat2/ exists. */ + expanded = g_build_filename(xchat_get_info(ph, "xchatdir"), + filename, NULL); + if (g_file_test(expanded, G_FILE_TEST_EXISTS)) + return expanded; + g_free(expanded); + + return NULL; +} + +/* Similar to PyEval_ReleaseThread, but accepts NULL thread states. */ +static void +Util_ReleaseThread(PyThreadState *tstate) +{ + PyThreadState *old_tstate; + if (tstate == NULL) + Py_FatalError("PyEval_ReleaseThread: NULL thread state"); + old_tstate = PyThreadState_Swap(NULL); + if (old_tstate != tstate && old_tstate != NULL) + Py_FatalError("PyEval_ReleaseThread: wrong thread state"); + PyEval_ReleaseLock(); +} + +/* ===================================================================== */ +/* Hookable functions. These are the entry points to python code, besides + * the load function, and the hooks for interactive interpreter. */ + +static int +Callback_Command(char *word[], char *word_eol[], void *userdata) +{ + Hook *hook = (Hook *) userdata; + PyObject *retobj; + PyObject *word_list, *word_eol_list; + int ret = 0; + + BEGIN_PLUGIN(hook->plugin); + + word_list = Util_BuildList(word+1); + if (word_list == NULL) { + END_PLUGIN(hook->plugin); + return 0; + } + word_eol_list = Util_BuildList(word_eol+1); + if (word_eol_list == NULL) { + Py_DECREF(word_list); + END_PLUGIN(hook->plugin); + return 0; + } + + retobj = PyObject_CallFunction(hook->callback, "(OOO)", word_list, + word_eol_list, hook->userdata); + Py_DECREF(word_list); + Py_DECREF(word_eol_list); + + if (retobj == Py_None) { + ret = XCHAT_EAT_NONE; + Py_DECREF(retobj); + } else if (retobj) { + ret = PyInt_AsLong(retobj); + Py_DECREF(retobj); + } else { + PyErr_Print(); + } + + END_PLUGIN(hook->plugin); + + return ret; +} + +/* No Callback_Server() here. We use Callback_Command() as well. */ + +static int +Callback_Print(char *word[], void *userdata) +{ + Hook *hook = (Hook *) userdata; + PyObject *retobj; + PyObject *word_list; + PyObject *word_eol_list; + char **word_eol; + char *word_eol_raw; + int listsize = 0; + int next = 0; + int i; + int ret = 0; + + /* Cut off the message identifier. */ + word += 1; + + /* XChat doesn't provide a word_eol for print events, so we + * build our own here. */ + while (word[listsize] && word[listsize][0]) + listsize++; + word_eol = (char **) g_malloc(sizeof(char*)*(listsize+1)); + if (word_eol == NULL) { + xchat_print(ph, "Not enough memory to alloc word_eol " + "for python plugin callback."); + return 0; + } + /* First build a word clone, but NULL terminated. */ + memcpy(word_eol, word, listsize*sizeof(char*)); + word_eol[listsize] = NULL; + /* Then join it. */ + word_eol_raw = g_strjoinv(" ", word_eol); + if (word_eol_raw == NULL) { + xchat_print(ph, "Not enough memory to alloc word_eol_raw " + "for python plugin callback."); + return 0; + } + /* And rebuild the real word_eol. */ + for (i = 0; i != listsize; i++) { + word_eol[i] = word_eol_raw+next; + next += strlen(word[i])+1; + } + word_eol[i] = ""; + + BEGIN_PLUGIN(hook->plugin); + + word_list = Util_BuildList(word); + if (word_list == NULL) { + g_free(word_eol_raw); + g_free(word_eol); + END_PLUGIN(hook->plugin); + return 0; + } + word_eol_list = Util_BuildList(word_eol); + if (word_eol_list == NULL) { + g_free(word_eol_raw); + g_free(word_eol); + Py_DECREF(word_list); + END_PLUGIN(hook->plugin); + return 0; + } + + retobj = PyObject_CallFunction(hook->callback, "(OOO)", word_list, + word_eol_list, hook->userdata); + Py_DECREF(word_list); + Py_DECREF(word_eol_list); + + g_free(word_eol_raw); + g_free(word_eol); + if (retobj == Py_None) { + ret = XCHAT_EAT_NONE; + Py_DECREF(retobj); + } else if (retobj) { + ret = PyInt_AsLong(retobj); + Py_DECREF(retobj); + } else { + PyErr_Print(); + } + + END_PLUGIN(hook->plugin); + + return ret; +} + +static int +Callback_Timer(void *userdata) +{ + Hook *hook = (Hook *) userdata; + PyObject *retobj; + int ret = 0; + PyObject *plugin; + + plugin = hook->plugin; + + BEGIN_PLUGIN(hook->plugin); + + retobj = PyObject_CallFunction(hook->callback, "(O)", hook->userdata); + + if (retobj) { + ret = PyObject_IsTrue(retobj); + Py_DECREF(retobj); + } else { + PyErr_Print(); + } + + /* Returning 0 for this callback unhooks itself. */ + if (ret == 0) + Plugin_RemoveHook(plugin, hook); + + END_PLUGIN(plugin); + + return ret; +} + +#ifdef WITH_THREAD +static int +Callback_ThreadTimer(void *userdata) +{ + RELEASE_XCHAT_LOCK(); + usleep(1); + ACQUIRE_XCHAT_LOCK(); + return 1; +} +#endif + +/* ===================================================================== */ +/* XChatOut object */ + +/* We keep this information global, so we can reset it when the + * deinit function is called. */ +/* XXX This should be somehow bound to the printing context. */ +static char *xchatout_buffer = NULL; +static int xchatout_buffer_size = 0; +static int xchatout_buffer_pos = 0; + +static PyObject * +XChatOut_New() +{ + XChatOutObject *xcoobj; + xcoobj = PyObject_New(XChatOutObject, &XChatOut_Type); + if (xcoobj != NULL) + xcoobj->softspace = 0; + return (PyObject *) xcoobj; +} + +static void +XChatOut_dealloc(PyObject *self) +{ + self->ob_type->tp_free((PyObject *)self); +} + +/* This is a little bit complex because we have to buffer data + * until a \n is received, since xchat breaks the line automatically. + * We also crop the last \n for this reason. */ +static PyObject * +XChatOut_write(PyObject *self, PyObject *args) +{ + int new_buffer_pos, data_size, print_limit, add_space; + char *data, *pos; + if (!PyArg_ParseTuple(args, "s#:write", &data, &data_size)) + return NULL; + if (!data_size) { + Py_INCREF(Py_None); + return Py_None; + } + BEGIN_XCHAT_CALLS(RESTORE_CONTEXT|ALLOW_THREADS); + if (((XChatOutObject *)self)->softspace) { + add_space = 1; + ((XChatOutObject *)self)->softspace = 0; + } else { + add_space = 0; + } + if (xchatout_buffer_size-xchatout_buffer_pos < data_size+add_space) { + char *new_buffer; + /* This buffer grows whenever needed, and does not + * shrink. If we ever implement unloading of the + * python interface, we must find some way to free + * this buffer as well. */ + xchatout_buffer_size += data_size*2+16; + new_buffer = g_realloc(xchatout_buffer, xchatout_buffer_size); + if (new_buffer == NULL) { + xchat_print(ph, "Not enough memory to print"); + /* The system is out of resources. Let's help. */ + g_free(xchatout_buffer); + xchatout_buffer = NULL; + xchatout_buffer_size = 0; + xchatout_buffer_pos = 0; + /* Return something valid, since we have + * already warned the user, and he probably + * won't be able to notice this exception. */ + goto exit; + } + xchatout_buffer = new_buffer; + } + memcpy(xchatout_buffer+xchatout_buffer_pos, data, data_size); + print_limit = new_buffer_pos = xchatout_buffer_pos+data_size; + pos = xchatout_buffer+print_limit; + if (add_space && *(pos-1) != '\n') { + *pos = ' '; + *(pos+1) = 0; + new_buffer_pos++; + } + while (*pos != '\n' && print_limit > xchatout_buffer_pos) { + pos--; + print_limit--; + } + if (*pos == '\n') { + /* Crop it, inserting the string limiter there. */ + *pos = 0; + xchat_print(ph, xchatout_buffer); + if (print_limit < new_buffer_pos) { + /* There's still data to be printed. */ + print_limit += 1; /* Include the limiter. */ + xchatout_buffer_pos = new_buffer_pos-print_limit; + memmove(xchatout_buffer, xchatout_buffer+print_limit, + xchatout_buffer_pos); + } else { + xchatout_buffer_pos = 0; + } + } else { + xchatout_buffer_pos = new_buffer_pos; + } + +exit: + END_XCHAT_CALLS(); + Py_INCREF(Py_None); + return Py_None; +} + +#define OFF(x) offsetof(XChatOutObject, x) + +static PyMemberDef XChatOut_members[] = { + {"softspace", T_INT, OFF(softspace), 0}, + {0} +}; + +static PyMethodDef XChatOut_methods[] = { + {"write", XChatOut_write, METH_VARARGS}, + {NULL, NULL} +}; + +statichere PyTypeObject XChatOut_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "xchat.XChatOut", /*tp_name*/ + sizeof(XChatOutObject), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + XChatOut_dealloc, /*tp_dealloc*/ + 0, /*tp_print*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_compare*/ + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + PyObject_GenericGetAttr,/*tp_getattro*/ + PyObject_GenericSetAttr,/*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT, /*tp_flags*/ + 0, /*tp_doc*/ + 0, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + XChatOut_methods, /*tp_methods*/ + XChatOut_members, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + 0, /*tp_dictoffset*/ + 0, /*tp_init*/ + PyType_GenericAlloc, /*tp_alloc*/ + PyType_GenericNew, /*tp_new*/ + _PyObject_Del, /*tp_free*/ + 0, /*tp_is_gc*/ +}; + + +/* ===================================================================== */ +/* Context object */ + +static void +Context_dealloc(PyObject *self) +{ + self->ob_type->tp_free((PyObject *)self); +} + +static PyObject * +Context_set(ContextObject *self, PyObject *args) +{ + PyObject *plugin = Plugin_GetCurrent(); + Plugin_SetContext(plugin, self->context); + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject * +Context_command(ContextObject *self, PyObject *args) +{ + char *text; + if (!PyArg_ParseTuple(args, "s:command", &text)) + return NULL; + BEGIN_XCHAT_CALLS(ALLOW_THREADS); + xchat_set_context(ph, self->context); + xchat_command(ph, text); + END_XCHAT_CALLS(); + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject * +Context_prnt(ContextObject *self, PyObject *args) +{ + char *text; + if (!PyArg_ParseTuple(args, "s:prnt", &text)) + return NULL; + BEGIN_XCHAT_CALLS(ALLOW_THREADS); + xchat_set_context(ph, self->context); + xchat_print(ph, text); + END_XCHAT_CALLS(); + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject * +Context_emit_print(ContextObject *self, PyObject *args) +{ + char *argv[10]; + char *name; + int res; + memset(&argv, 0, sizeof(char*)*10); + if (!PyArg_ParseTuple(args, "s|ssssss:print_event", &name, + &argv[0], &argv[1], &argv[2], + &argv[3], &argv[4], &argv[5], + &argv[6], &argv[7], &argv[8])) + return NULL; + BEGIN_XCHAT_CALLS(ALLOW_THREADS); + xchat_set_context(ph, self->context); + res = xchat_emit_print(ph, name, argv[0], argv[1], argv[2], + argv[3], argv[4], argv[5], + argv[6], argv[7], argv[8]); + END_XCHAT_CALLS(); + return PyInt_FromLong(res); +} + +static PyObject * +Context_get_info(ContextObject *self, PyObject *args) +{ + const char *info; + char *name; + if (!PyArg_ParseTuple(args, "s:get_info", &name)) + return NULL; + BEGIN_XCHAT_CALLS(NONE); + xchat_set_context(ph, self->context); + info = xchat_get_info(ph, name); + END_XCHAT_CALLS(); + if (info == NULL) { + Py_INCREF(Py_None); + return Py_None; + } + return PyString_FromString(info); +} + +static PyObject * +Context_get_list(ContextObject *self, PyObject *args) +{ + PyObject *plugin = Plugin_GetCurrent(); + xchat_context *saved_context = Plugin_GetContext(plugin); + PyObject *ret; + Plugin_SetContext(plugin, self->context); + ret = Module_xchat_get_list((PyObject*)self, args); + Plugin_SetContext(plugin, saved_context); + return ret; +} + +/* needed to make context1 == context2 work */ +static PyObject * +Context_compare(ContextObject *a, ContextObject *b, int op) +{ + PyObject *ret; + /* check for == */ + if (op == Py_EQ) + ret = (a->context == b->context ? Py_True : Py_False); + /* check for != */ + else if (op == Py_NE) + ret = (a->context != b->context ? Py_True : Py_False); + /* only makes sense as == and != */ + else + { + PyErr_SetString(PyExc_TypeError, "contexts are either equal or not equal"); + ret = NULL; + } + + return ret; +} + +static PyMethodDef Context_methods[] = { + {"set", (PyCFunction) Context_set, METH_NOARGS}, + {"command", (PyCFunction) Context_command, METH_VARARGS}, + {"prnt", (PyCFunction) Context_prnt, METH_VARARGS}, + {"emit_print", (PyCFunction) Context_emit_print, METH_VARARGS}, + {"get_info", (PyCFunction) Context_get_info, METH_VARARGS}, + {"get_list", (PyCFunction) Context_get_list, METH_VARARGS}, + {NULL, NULL} +}; + +statichere PyTypeObject Context_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "xchat.Context", /*tp_name*/ + sizeof(ContextObject), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + Context_dealloc, /*tp_dealloc*/ + 0, /*tp_print*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_compare*/ + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + PyObject_GenericGetAttr,/*tp_getattro*/ + PyObject_GenericSetAttr,/*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT, /*tp_flags*/ + 0, /*tp_doc*/ + 0, /*tp_traverse*/ + 0, /*tp_clear*/ + (richcmpfunc)Context_compare, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + Context_methods, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + 0, /*tp_dictoffset*/ + 0, /*tp_init*/ + PyType_GenericAlloc, /*tp_alloc*/ + PyType_GenericNew, /*tp_new*/ + _PyObject_Del, /*tp_free*/ + 0, /*tp_is_gc*/ +}; + +static PyObject * +Context_FromContext(xchat_context *context) +{ + ContextObject *ctxobj = PyObject_New(ContextObject, &Context_Type); + if (ctxobj != NULL) + ctxobj->context = context; + return (PyObject *) ctxobj; +} + +static PyObject * +Context_FromServerAndChannel(char *server, char *channel) +{ + ContextObject *ctxobj; + xchat_context *context; + BEGIN_XCHAT_CALLS(NONE); + context = xchat_find_context(ph, server, channel); + END_XCHAT_CALLS(); + if (context == NULL) + return NULL; + ctxobj = PyObject_New(ContextObject, &Context_Type); + if (ctxobj == NULL) + return NULL; + ctxobj->context = context; + return (PyObject *) ctxobj; +} + + +/* ===================================================================== */ +/* ListItem object */ + +#undef OFF +#define OFF(x) offsetof(ListItemObject, x) + +static PyMemberDef ListItem_members[] = { + {"__dict__", T_OBJECT, OFF(dict), 0}, + {0} +}; + +static void +ListItem_dealloc(PyObject *self) +{ + Py_DECREF(((ListItemObject*)self)->dict); + self->ob_type->tp_free((PyObject *)self); +} + +static PyObject * +ListItem_repr(PyObject *self) +{ + return PyString_FromFormat("<%s list item at %p>", + ((ListItemObject*)self)->listname, self); +} + +statichere PyTypeObject ListItem_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "xchat.ListItem", /*tp_name*/ + sizeof(ListItemObject), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + ListItem_dealloc, /*tp_dealloc*/ + 0, /*tp_print*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_compare*/ + ListItem_repr, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + PyObject_GenericGetAttr,/*tp_getattro*/ + PyObject_GenericSetAttr,/*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT, /*tp_flags*/ + 0, /*tp_doc*/ + 0, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + ListItem_members, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + OFF(dict), /*tp_dictoffset*/ + 0, /*tp_init*/ + PyType_GenericAlloc, /*tp_alloc*/ + PyType_GenericNew, /*tp_new*/ + _PyObject_Del, /*tp_free*/ + 0, /*tp_is_gc*/ +}; + +static PyObject * +ListItem_New(const char *listname) +{ + ListItemObject *item; + item = PyObject_New(ListItemObject, &ListItem_Type); + if (item != NULL) { + /* listname parameter must be statically allocated. */ + item->listname = listname; + item->dict = PyDict_New(); + if (item->dict == NULL) { + Py_DECREF(item); + item = NULL; + } + } + return (PyObject *) item; +} + + +/* ===================================================================== */ +/* Plugin object */ + +#define GET_MODULE_DATA(x, force) \ + o = PyObject_GetAttrString(m, "__module_" #x "__"); \ + if (o == NULL) { \ + if (force) { \ + xchat_print(ph, "Module has no __module_" #x "__ " \ + "defined"); \ + goto error; \ + } \ + plugin->x = g_strdup(""); \ + } else {\ + if (!PyString_Check(o)) { \ + xchat_print(ph, "Variable __module_" #x "__ " \ + "must be a string"); \ + goto error; \ + } \ + plugin->x = g_strdup(PyString_AsString(o)); \ + if (plugin->x == NULL) { \ + xchat_print(ph, "Not enough memory to allocate " #x); \ + goto error; \ + } \ + } + +static PyObject * +Plugin_New(char *filename, PyMethodDef *xchat_methods, PyObject *xcoobj) +{ + PluginObject *plugin = NULL; + PyObject *m, *o; + char *argv[] = {"", 0}; + + if (filename) { + char *old_filename = filename; + filename = Util_Expand(filename); + if (filename == NULL) { + xchat_printf(ph, "File not found: %s", old_filename); + return NULL; + } + } + + /* Allocate plugin structure. */ + plugin = PyObject_New(PluginObject, &Plugin_Type); + if (plugin == NULL) { + xchat_print(ph, "Can't create plugin object"); + goto error; + } + + Plugin_SetName(plugin, NULL); + Plugin_SetVersion(plugin, NULL); + Plugin_SetFilename(plugin, NULL); + Plugin_SetDescription(plugin, NULL); + Plugin_SetHooks(plugin, NULL); + Plugin_SetContext(plugin, xchat_get_context(ph)); + + /* Start a new interpreter environment for this plugin. */ + PyEval_AcquireLock(); + plugin->tstate = Py_NewInterpreter(); + if (plugin->tstate == NULL) { + xchat_print(ph, "Can't create interpreter state"); + goto error; + } + + PySys_SetArgv(1, argv); + PySys_SetObject("__plugin__", (PyObject *) plugin); + + /* Set stdout and stderr to xchatout. */ + Py_INCREF(xcoobj); + PySys_SetObject("stdout", xcoobj); + Py_INCREF(xcoobj); + PySys_SetObject("stderr", xcoobj); + + /* Add xchat module to the environment. */ + m = Py_InitModule("xchat", xchat_methods); + if (m == NULL) { + xchat_print(ph, "Can't create xchat module"); + goto error; + } + + PyModule_AddIntConstant(m, "EAT_NONE", XCHAT_EAT_NONE); + PyModule_AddIntConstant(m, "EAT_XCHAT", XCHAT_EAT_XCHAT); + PyModule_AddIntConstant(m, "EAT_PLUGIN", XCHAT_EAT_PLUGIN); + PyModule_AddIntConstant(m, "EAT_ALL", XCHAT_EAT_ALL); + PyModule_AddIntConstant(m, "PRI_HIGHEST", XCHAT_PRI_HIGHEST); + PyModule_AddIntConstant(m, "PRI_HIGH", XCHAT_PRI_HIGH); + PyModule_AddIntConstant(m, "PRI_NORM", XCHAT_PRI_NORM); + PyModule_AddIntConstant(m, "PRI_LOW", XCHAT_PRI_LOW); + PyModule_AddIntConstant(m, "PRI_LOWEST", XCHAT_PRI_LOWEST); + + o = Py_BuildValue("(ii)", VERSION_MAJOR, VERSION_MINOR); + if (o == NULL) { + xchat_print(ph, "Can't create version tuple"); + goto error; + } + PyObject_SetAttrString(m, "__version__", o); + + if (filename) { + FILE *fp; + + plugin->filename = filename; + + /* It's now owned by the plugin. */ + filename = NULL; + + /* Open the plugin file. */ + fp = fopen(plugin->filename, "r"); + if (fp == NULL) { + xchat_printf(ph, "Can't open file %s: %s\n", + plugin->filename, strerror(errno)); + goto error; + } + + /* Run the plugin. */ + if (PyRun_SimpleFile(fp, plugin->filename) != 0) { + xchat_printf(ph, "Error loading module %s\n", + plugin->filename); + fclose(fp); + goto error; + } + fclose(fp); + + m = PyDict_GetItemString(PyImport_GetModuleDict(), + "__main__"); + if (m == NULL) { + xchat_print(ph, "Can't get __main__ module"); + goto error; + } + GET_MODULE_DATA(name, 1); + GET_MODULE_DATA(version, 0); + GET_MODULE_DATA(description, 0); + plugin->gui = xchat_plugingui_add(ph, plugin->filename, + plugin->name, + plugin->description, + plugin->version, NULL); + } + + PyEval_ReleaseThread(plugin->tstate); + + return (PyObject *) plugin; + +error: + g_free(filename); + + if (plugin) { + if (plugin->tstate) + Py_EndInterpreter(plugin->tstate); + Py_DECREF(plugin); + } + PyEval_ReleaseLock(); + + return NULL; +} + +static PyObject * +Plugin_GetCurrent() +{ + PyObject *plugin; + plugin = PySys_GetObject("__plugin__"); + if (plugin == NULL) + PyErr_SetString(PyExc_RuntimeError, "lost sys.__plugin__"); + return plugin; +} + +static PluginObject * +Plugin_ByString(char *str) +{ + GSList *list; + PluginObject *plugin; + char *basename; + list = plugin_list; + while (list != NULL) { + plugin = (PluginObject *) list->data; + basename = g_path_get_basename(plugin->filename); + if (basename == NULL) + break; + if (strcasecmp(plugin->name, str) == 0 || + strcasecmp(plugin->filename, str) == 0 || + strcasecmp(basename, str) == 0) { + g_free(basename); + return plugin; + } + g_free(basename); + list = list->next; + } + return NULL; +} + +static Hook * +Plugin_AddHook(int type, PyObject *plugin, PyObject *callback, + PyObject *userdata, void *data) +{ + Hook *hook = (Hook *) g_malloc(sizeof(Hook)); + if (hook == NULL) { + PyErr_NoMemory(); + return NULL; + } + hook->type = type; + hook->plugin = plugin; + Py_INCREF(callback); + hook->callback = callback; + Py_INCREF(userdata); + hook->userdata = userdata; + hook->data = NULL; + Plugin_SetHooks(plugin, g_slist_append(Plugin_GetHooks(plugin), + hook)); + + return hook; +} + +static void +Plugin_RemoveHook(PyObject *plugin, Hook *hook) +{ + GSList *list; + /* Is this really a hook of the running plugin? */ + list = g_slist_find(Plugin_GetHooks(plugin), hook); + if (list) { + /* Ok, unhook it. */ + if (hook->type == HOOK_XCHAT) { + /* This is an xchat hook. Unregister it. */ + BEGIN_XCHAT_CALLS(NONE); + xchat_unhook(ph, (xchat_hook*)hook->data); + END_XCHAT_CALLS(); + } + Plugin_SetHooks(plugin, + g_slist_remove(Plugin_GetHooks(plugin), + hook)); + Py_DECREF(hook->callback); + Py_DECREF(hook->userdata); + g_free(hook); + } +} + +static void +Plugin_RemoveAllHooks(PyObject *plugin) +{ + GSList *list = Plugin_GetHooks(plugin); + while (list) { + Hook *hook = (Hook *) list->data; + if (hook->type == HOOK_XCHAT) { + /* This is an xchat hook. Unregister it. */ + BEGIN_XCHAT_CALLS(NONE); + xchat_unhook(ph, (xchat_hook*)hook->data); + END_XCHAT_CALLS(); + } + Py_DECREF(hook->callback); + Py_DECREF(hook->userdata); + g_free(hook); + list = list->next; + } + Plugin_SetHooks(plugin, NULL); +} + +static void +Plugin_Delete(PyObject *plugin) +{ + PyThreadState *tstate = ((PluginObject*)plugin)->tstate; + GSList *list = Plugin_GetHooks(plugin); + while (list) { + Hook *hook = (Hook *) list->data; + if (hook->type == HOOK_UNLOAD) { + PyObject *retobj; + retobj = PyObject_CallFunction(hook->callback, "(O)", + hook->userdata); + if (retobj) { + Py_DECREF(retobj); + } else { + PyErr_Print(); + PyErr_Clear(); + } + } + list = list->next; + } + Plugin_RemoveAllHooks(plugin); + xchat_plugingui_remove(ph, ((PluginObject *)plugin)->gui); + Py_DECREF(plugin); + /*PyThreadState_Swap(tstate); needed? */ + Py_EndInterpreter(tstate); +} + +static void +Plugin_dealloc(PluginObject *self) +{ + g_free(self->filename); + g_free(self->name); + g_free(self->version); + g_free(self->description); + self->ob_type->tp_free((PyObject *)self); +} + +statichere PyTypeObject Plugin_Type = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "xchat.Plugin", /*tp_name*/ + sizeof(PluginObject), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + (destructor)Plugin_dealloc, /*tp_dealloc*/ + 0, /*tp_print*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_compare*/ + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + PyObject_GenericGetAttr,/*tp_getattro*/ + PyObject_GenericSetAttr,/*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT, /*tp_flags*/ + 0, /*tp_doc*/ + 0, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + 0, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + 0, /*tp_dictoffset*/ + 0, /*tp_init*/ + PyType_GenericAlloc, /*tp_alloc*/ + PyType_GenericNew, /*tp_new*/ + _PyObject_Del, /*tp_free*/ + 0, /*tp_is_gc*/ +}; + + +/* ===================================================================== */ +/* XChat module */ + +static PyObject * +Module_xchat_command(PyObject *self, PyObject *args) +{ + char *text; + if (!PyArg_ParseTuple(args, "s:command", &text)) + return NULL; + BEGIN_XCHAT_CALLS(RESTORE_CONTEXT|ALLOW_THREADS); + xchat_command(ph, text); + END_XCHAT_CALLS(); + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject * +Module_xchat_prnt(PyObject *self, PyObject *args) +{ + char *text; + if (!PyArg_ParseTuple(args, "s:prnt", &text)) + return NULL; + BEGIN_XCHAT_CALLS(RESTORE_CONTEXT|ALLOW_THREADS); + xchat_print(ph, text); + END_XCHAT_CALLS(); + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject * +Module_xchat_emit_print(PyObject *self, PyObject *args) +{ + char *argv[10]; + char *name; + int res; + memset(&argv, 0, sizeof(char*)*10); + if (!PyArg_ParseTuple(args, "s|ssssss:print_event", &name, + &argv[0], &argv[1], &argv[2], + &argv[3], &argv[4], &argv[5], + &argv[6], &argv[7], &argv[8])) + return NULL; + BEGIN_XCHAT_CALLS(RESTORE_CONTEXT|ALLOW_THREADS); + res = xchat_emit_print(ph, name, argv[0], argv[1], argv[2], + argv[3], argv[4], argv[5], + argv[6], argv[7], argv[8]); + END_XCHAT_CALLS(); + return PyInt_FromLong(res); +} + +static PyObject * +Module_xchat_get_info(PyObject *self, PyObject *args) +{ + const char *info; + char *name; + if (!PyArg_ParseTuple(args, "s:get_info", &name)) + return NULL; + BEGIN_XCHAT_CALLS(RESTORE_CONTEXT); + info = xchat_get_info(ph, name); + END_XCHAT_CALLS(); + if (info == NULL) { + Py_INCREF(Py_None); + return Py_None; + } + return PyString_FromString(info); +} + +static PyObject * +Module_xchat_get_prefs(PyObject *self, PyObject *args) +{ + PyObject *res; + const char *info; + int integer; + char *name; + int type; + if (!PyArg_ParseTuple(args, "s:get_prefs", &name)) + return NULL; + BEGIN_XCHAT_CALLS(NONE); + type = xchat_get_prefs(ph, name, &info, &integer); + END_XCHAT_CALLS(); + switch (type) { + case 0: + Py_INCREF(Py_None); + res = Py_None; + break; + case 1: + res = PyString_FromString((char*)info); + break; + case 2: + case 3: + res = PyInt_FromLong(integer); + break; + default: + PyErr_Format(PyExc_RuntimeError, + "unknown get_prefs type (%d), " + "please report", type); + res = NULL; + break; + } + return res; +} + +static PyObject * +Module_xchat_get_context(PyObject *self, PyObject *args) +{ + PyObject *plugin; + PyObject *ctxobj; + plugin = Plugin_GetCurrent(); + if (plugin == NULL) + return NULL; + ctxobj = Context_FromContext(Plugin_GetContext(plugin)); + if (ctxobj == NULL) { + Py_INCREF(Py_None); + return Py_None; + } + return ctxobj; +} + +static PyObject * +Module_xchat_find_context(PyObject *self, PyObject *args, PyObject *kwargs) +{ + char *server = NULL; + char *channel = NULL; + PyObject *ctxobj; + char *kwlist[] = {"server", "channel", 0}; + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|zz:find_context", + kwlist, &server, &channel)) + return NULL; + ctxobj = Context_FromServerAndChannel(server, channel); + if (ctxobj == NULL) { + Py_INCREF(Py_None); + return Py_None; + } + return ctxobj; +} + +static PyObject * +Module_xchat_hook_command(PyObject *self, PyObject *args, PyObject *kwargs) +{ + char *name; + PyObject *callback; + PyObject *userdata = Py_None; + int priority = XCHAT_PRI_NORM; + char *help = NULL; + PyObject *plugin; + Hook *hook; + char *kwlist[] = {"name", "callback", "userdata", + "priority", "help", 0}; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "sO|Oiz:hook_command", + kwlist, &name, &callback, &userdata, + &priority, &help)) + return NULL; + + plugin = Plugin_GetCurrent(); + if (plugin == NULL) + return NULL; + if (!PyCallable_Check(callback)) { + PyErr_SetString(PyExc_TypeError, "callback is not callable"); + return NULL; + } + + hook = Plugin_AddHook(HOOK_XCHAT, plugin, callback, userdata, NULL); + if (hook == NULL) + return NULL; + + BEGIN_XCHAT_CALLS(NONE); + hook->data = (void*)xchat_hook_command(ph, name, priority, + Callback_Command, help, hook); + END_XCHAT_CALLS(); + + return PyInt_FromLong((long)hook); +} + +static PyObject * +Module_xchat_hook_server(PyObject *self, PyObject *args, PyObject *kwargs) +{ + char *name; + PyObject *callback; + PyObject *userdata = Py_None; + int priority = XCHAT_PRI_NORM; + PyObject *plugin; + Hook *hook; + char *kwlist[] = {"name", "callback", "userdata", "priority", 0}; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "sO|Oi:hook_server", + kwlist, &name, &callback, &userdata, + &priority)) + return NULL; + + plugin = Plugin_GetCurrent(); + if (plugin == NULL) + return NULL; + if (!PyCallable_Check(callback)) { + PyErr_SetString(PyExc_TypeError, "callback is not callable"); + return NULL; + } + + hook = Plugin_AddHook(HOOK_XCHAT, plugin, callback, userdata, NULL); + if (hook == NULL) + return NULL; + + BEGIN_XCHAT_CALLS(NONE); + hook->data = (void*)xchat_hook_server(ph, name, priority, + Callback_Command, hook); + END_XCHAT_CALLS(); + + return PyInt_FromLong((long)hook); +} + +static PyObject * +Module_xchat_hook_print(PyObject *self, PyObject *args, PyObject *kwargs) +{ + char *name; + PyObject *callback; + PyObject *userdata = Py_None; + int priority = XCHAT_PRI_NORM; + PyObject *plugin; + Hook *hook; + char *kwlist[] = {"name", "callback", "userdata", "priority", 0}; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "sO|Oi:hook_print", + kwlist, &name, &callback, &userdata, + &priority)) + return NULL; + + plugin = Plugin_GetCurrent(); + if (plugin == NULL) + return NULL; + if (!PyCallable_Check(callback)) { + PyErr_SetString(PyExc_TypeError, "callback is not callable"); + return NULL; + } + + hook = Plugin_AddHook(HOOK_XCHAT, plugin, callback, userdata, NULL); + if (hook == NULL) + return NULL; + + BEGIN_XCHAT_CALLS(NONE); + hook->data = (void*)xchat_hook_print(ph, name, priority, + Callback_Print, hook); + END_XCHAT_CALLS(); + + return PyInt_FromLong((long)hook); +} + + +static PyObject * +Module_xchat_hook_timer(PyObject *self, PyObject *args, PyObject *kwargs) +{ + int timeout; + PyObject *callback; + PyObject *userdata = Py_None; + PyObject *plugin; + Hook *hook; + char *kwlist[] = {"timeout", "callback", "userdata", 0}; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "iO|O:hook_timer", + kwlist, &timeout, &callback, + &userdata)) + return NULL; + + plugin = Plugin_GetCurrent(); + if (plugin == NULL) + return NULL; + if (!PyCallable_Check(callback)) { + PyErr_SetString(PyExc_TypeError, "callback is not callable"); + return NULL; + } + + hook = Plugin_AddHook(HOOK_XCHAT, plugin, callback, userdata, NULL); + if (hook == NULL) + return NULL; + + BEGIN_XCHAT_CALLS(NONE); + hook->data = (void*)xchat_hook_timer(ph, timeout, + Callback_Timer, hook); + END_XCHAT_CALLS(); + + return PyInt_FromLong((long)hook); +} + +static PyObject * +Module_xchat_hook_unload(PyObject *self, PyObject *args, PyObject *kwargs) +{ + PyObject *callback; + PyObject *userdata = Py_None; + PyObject *plugin; + Hook *hook; + char *kwlist[] = {"callback", "userdata", 0}; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|O:hook_unload", + kwlist, &callback, &userdata)) + return NULL; + + plugin = Plugin_GetCurrent(); + if (plugin == NULL) + return NULL; + if (!PyCallable_Check(callback)) { + PyErr_SetString(PyExc_TypeError, "callback is not callable"); + return NULL; + } + + hook = Plugin_AddHook(HOOK_UNLOAD, plugin, callback, userdata, NULL); + if (hook == NULL) + return NULL; + + return PyInt_FromLong((long)hook); +} + +static PyObject * +Module_xchat_unhook(PyObject *self, PyObject *args) +{ + PyObject *plugin; + Hook *hook; + if (!PyArg_ParseTuple(args, "l:unhook", &hook)) + return NULL; + plugin = Plugin_GetCurrent(); + if (plugin == NULL) + return NULL; + Plugin_RemoveHook(plugin, hook); + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject * +Module_xchat_get_list(PyObject *self, PyObject *args) +{ + xchat_list *list; + PyObject *l; + const char *name; + const char *const *fields; + int i; + + if (!PyArg_ParseTuple(args, "s:get_list", &name)) + return NULL; + /* This function is thread safe, and returns statically + * allocated data. */ + fields = xchat_list_fields(ph, "lists"); + for (i = 0; fields[i]; i++) { + if (strcmp(fields[i], name) == 0) { + /* Use the static allocated one. */ + name = fields[i]; + break; + } + } + if (fields[i] == NULL) { + PyErr_SetString(PyExc_KeyError, "list not available"); + return NULL; + } + l = PyList_New(0); + if (l == NULL) + return NULL; + BEGIN_XCHAT_CALLS(RESTORE_CONTEXT); + list = xchat_list_get(ph, (char*)name); + if (list == NULL) + goto error; + fields = xchat_list_fields(ph, (char*)name); + while (xchat_list_next(ph, list)) { + PyObject *o = ListItem_New(name); + if (o == NULL || PyList_Append(l, o) == -1) { + Py_XDECREF(o); + goto error; + } + Py_DECREF(o); /* l is holding a reference */ + for (i = 0; fields[i]; i++) { + const char *fld = fields[i]+1; + PyObject *attr = NULL; + const char *sattr; + int iattr; + switch(fields[i][0]) { + case 's': + sattr = xchat_list_str(ph, list, (char*)fld); + attr = PyString_FromString(sattr?sattr:""); + break; + case 'i': + iattr = xchat_list_int(ph, list, (char*)fld); + attr = PyInt_FromLong((long)iattr); + break; + case 'p': + sattr = xchat_list_str(ph, list, (char*)fld); + if (strcmp(fld, "context") == 0) { + attr = Context_FromContext( + (xchat_context*)sattr); + break; + } + default: /* ignore unknown (newly added?) types */ + continue; + } + if (attr == NULL) + goto error; + PyObject_SetAttrString(o, (char*)fld, attr); /* add reference on attr in o */ + Py_DECREF(attr); /* make o own attr */ + } + } + xchat_list_free(ph, list); + goto exit; +error: + if (list) + xchat_list_free(ph, list); + Py_DECREF(l); + l = NULL; + +exit: + END_XCHAT_CALLS(); + return l; +} + +static PyObject * +Module_xchat_get_lists(PyObject *self, PyObject *args) +{ + PyObject *l, *o; + const char *const *fields; + int i; + /* This function is thread safe, and returns statically + * allocated data. */ + fields = xchat_list_fields(ph, "lists"); + l = PyList_New(0); + if (l == NULL) + return NULL; + for (i = 0; fields[i]; i++) { + o = PyString_FromString(fields[i]); + if (o == NULL || PyList_Append(l, o) == -1) { + Py_DECREF(l); + Py_XDECREF(o); + return NULL; + } + Py_DECREF(o); /* l is holding a reference */ + } + return l; +} + +static PyObject * +Module_xchat_nickcmp(PyObject *self, PyObject *args) +{ + char *s1, *s2; + if (!PyArg_ParseTuple(args, "ss:nickcmp", &s1, &s2)) + return NULL; + return PyInt_FromLong((long) xchat_nickcmp(ph, s1, s2)); +} + +static PyObject * +Module_xchat_strip(PyObject *self, PyObject *args) +{ + PyObject *result; + char *str, *str2; + int len = -1, flags = 1 | 2; + if (!PyArg_ParseTuple(args, "s|ii:strip", &str, &len, &flags)) + return NULL; + str2 = xchat_strip(ph, str, len, flags); + result = PyString_FromString(str2); + xchat_free(ph, str2); + return result; +} + +static PyMethodDef Module_xchat_methods[] = { + {"command", Module_xchat_command, + METH_VARARGS}, + {"prnt", Module_xchat_prnt, + METH_VARARGS}, + {"emit_print", Module_xchat_emit_print, + METH_VARARGS}, + {"get_info", Module_xchat_get_info, + METH_VARARGS}, + {"get_prefs", Module_xchat_get_prefs, + METH_VARARGS}, + {"get_context", Module_xchat_get_context, + METH_NOARGS}, + {"find_context", (PyCFunction)Module_xchat_find_context, + METH_VARARGS|METH_KEYWORDS}, + {"hook_command", (PyCFunction)Module_xchat_hook_command, + METH_VARARGS|METH_KEYWORDS}, + {"hook_server", (PyCFunction)Module_xchat_hook_server, + METH_VARARGS|METH_KEYWORDS}, + {"hook_print", (PyCFunction)Module_xchat_hook_print, + METH_VARARGS|METH_KEYWORDS}, + {"hook_timer", (PyCFunction)Module_xchat_hook_timer, + METH_VARARGS|METH_KEYWORDS}, + {"hook_unload", (PyCFunction)Module_xchat_hook_unload, + METH_VARARGS|METH_KEYWORDS}, + {"unhook", Module_xchat_unhook, + METH_VARARGS}, + {"get_list", Module_xchat_get_list, + METH_VARARGS}, + {"get_lists", Module_xchat_get_lists, + METH_NOARGS}, + {"nickcmp", Module_xchat_nickcmp, + METH_VARARGS}, + {"strip", Module_xchat_strip, + METH_VARARGS}, + {NULL, NULL} +}; + + +/* ===================================================================== */ +/* Python interactive interpreter functions */ + +static void +IInterp_Exec(char *command) +{ + PyObject *m, *d, *o; + char *buffer; + int len; + + BEGIN_PLUGIN(interp_plugin); + + m = PyImport_AddModule("__main__"); + if (m == NULL) { + xchat_print(ph, "Can't get __main__ module"); + goto fail; + } + d = PyModule_GetDict(m); + len = strlen(command); + buffer = (char *) g_malloc(len+2); + if (buffer == NULL) { + xchat_print(ph, "Not enough memory for command buffer"); + goto fail; + } + memcpy(buffer, command, len); + buffer[len] = '\n'; + buffer[len+1] = 0; + o = PyRun_StringFlags(buffer, Py_single_input, d, d, NULL); + g_free(buffer); + if (o == NULL) { + PyErr_Print(); + goto fail; + } + Py_DECREF(o); + if (Py_FlushLine()) + PyErr_Clear(); + +fail: + END_PLUGIN(interp_plugin); + + return; +} + +static int +IInterp_Cmd(char *word[], char *word_eol[], void *userdata) +{ + char *channel = (char *) xchat_get_info(ph, "channel"); + if (channel && channel[0] == '>' && strcmp(channel, ">>python<<") == 0) { + xchat_printf(ph, ">>> %s\n", word_eol[1]); + IInterp_Exec(word_eol[1]); + return 1; + } + return 0; +} + + +/* ===================================================================== */ +/* Python command handling */ + +static void +Command_PyList() +{ + GSList *list; + list = plugin_list; + if (list == NULL) { + xchat_print(ph, "No python modules loaded"); + } else { + xchat_print(ph, + "Name Version Filename Description\n" + "---- ------- -------- -----------\n"); + while (list != NULL) { + PluginObject *plg = (PluginObject *) list->data; + char *basename = g_path_get_basename(plg->filename); + xchat_printf(ph, "%-12s %-8s %-20s %-10s\n", + plg->name, + *plg->version ? plg->version + : "", + basename, + *plg->description ? plg->description + : ""); + g_free(basename); + list = list->next; + } + xchat_print(ph, "\n"); + } +} + +static void +Command_PyLoad(char *filename) +{ + PyObject *plugin; + RELEASE_XCHAT_LOCK(); + plugin = Plugin_New(filename, Module_xchat_methods, xchatout); + ACQUIRE_XCHAT_LOCK(); + if (plugin) + plugin_list = g_slist_append(plugin_list, plugin); +} + +static void +Command_PyUnload(char *name) +{ + PluginObject *plugin = Plugin_ByString(name); + if (!plugin) { + xchat_print(ph, "Can't find a python plugin with that name"); + } else { + BEGIN_PLUGIN(plugin); + Plugin_Delete((PyObject*)plugin); + END_PLUGIN(plugin); + plugin_list = g_slist_remove(plugin_list, plugin); + } +} + +static void +Command_PyReload(char *name) +{ + PluginObject *plugin = Plugin_ByString(name); + if (!plugin) { + xchat_print(ph, "Can't find a python plugin with that name"); + } else { + char *filename = strdup(plugin->filename); + Command_PyUnload(filename); + Command_PyLoad(filename); + g_free(filename); + } +} + +static void +Command_PyAbout() +{ + xchat_print(ph, about); +} + +static int +Command_Py(char *word[], char *word_eol[], void *userdata) +{ + char *cmd = word[2]; + int ok = 0; + if (strcasecmp(cmd, "LIST") == 0) { + ok = 1; + Command_PyList(); + } else if (strcasecmp(cmd, "EXEC") == 0) { + if (word[3][0]) { + ok = 1; + IInterp_Exec(word_eol[3]); + } + } else if (strcasecmp(cmd, "LOAD") == 0) { + if (word[3][0]) { + ok = 1; + Command_PyLoad(word[3]); + } + } else if (strcasecmp(cmd, "UNLOAD") == 0) { + if (word[3][0]) { + ok = 1; + Command_PyUnload(word[3]); + } + } else if (strcasecmp(cmd, "RELOAD") == 0) { + if (word[3][0]) { + ok = 1; + Command_PyReload(word[3]); + } + } else if (strcasecmp(cmd, "CONSOLE") == 0) { + ok = 1; + xchat_command(ph, "QUERY >>python<<"); + } else if (strcasecmp(cmd, "ABOUT") == 0) { + ok = 1; + Command_PyAbout(); + } + if (!ok) + xchat_print(ph, usage); + return XCHAT_EAT_ALL; +} + +static int +Command_Load(char *word[], char *word_eol[], void *userdata) +{ + int len = strlen(word[2]); + if (len > 3 && strcasecmp(".py", word[2]+len-3) == 0) { + Command_PyLoad(word[2]); + return XCHAT_EAT_XCHAT; + } + return XCHAT_EAT_NONE; +} + +static int +Command_Unload(char *word[], char *word_eol[], void *userdata) +{ + int len = strlen(word[2]); + if (len > 3 && strcasecmp(".py", word[2]+len-3) == 0) { + Command_PyUnload(word[2]); + return XCHAT_EAT_XCHAT; + } + return XCHAT_EAT_NONE; +} + +/* ===================================================================== */ +/* Autoload function */ + +/* ===================================================================== */ +/* (De)initialization functions */ + +static int initialized = 0; +static int reinit_tried = 0; + +void +xchat_plugin_get_info(char **name, char **desc, char **version, void **reserved) +{ + *name = "Python"; + *version = VERSION; + *desc = "Python scripting interface"; + if (reserved) + *reserved = NULL; +} + +int +xchat_plugin_init(xchat_plugin *plugin_handle, + char **plugin_name, + char **plugin_desc, + char **plugin_version, + char *arg) +{ + char *argv[] = {"", 0}; + + ph = plugin_handle; + + /* Block double initalization. */ + if (initialized != 0) { + xchat_print(ph, "Python interface already loaded"); + /* deinit is called even when init fails, so keep track + * of a reinit failure. */ + reinit_tried++; + return 0; + } + initialized = 1; + + *plugin_name = "Python"; + *plugin_version = VERSION; + *plugin_desc = "Python scripting interface"; + + /* Initialize python. */ + Py_SetProgramName("xchat"); + Py_Initialize(); + PySys_SetArgv(1, argv); + + Plugin_Type.ob_type = &PyType_Type; + Context_Type.ob_type = &PyType_Type; + XChatOut_Type.ob_type = &PyType_Type; + + xchatout = XChatOut_New(); + if (xchatout == NULL) { + xchat_print(ph, "Can't allocate xchatout object"); + return 0; + } + +#ifdef WITH_THREAD + PyEval_InitThreads(); + xchat_lock = PyThread_allocate_lock(); + if (xchat_lock == NULL) { + xchat_print(ph, "Can't allocate xchat lock"); + Py_DECREF(xchatout); + xchatout = NULL; + return 0; + } +#endif + + main_tstate = PyEval_SaveThread(); + + interp_plugin = Plugin_New(NULL, Module_xchat_methods, xchatout); + if (interp_plugin == NULL) { + xchat_print(ph, "Plugin_New() failed.\n"); +#ifdef WITH_THREAD + PyThread_free_lock(xchat_lock); +#endif + Py_DECREF(xchatout); + xchatout = NULL; + return 0; + } + + + xchat_hook_command(ph, "", XCHAT_PRI_NORM, IInterp_Cmd, 0, 0); + xchat_hook_command(ph, "PY", XCHAT_PRI_NORM, Command_Py, usage, 0); + xchat_hook_command(ph, "LOAD", XCHAT_PRI_NORM, Command_Load, 0, 0); + xchat_hook_command(ph, "UNLOAD", XCHAT_PRI_NORM, Command_Unload, 0, 0); +#ifdef WITH_THREAD + thread_timer = xchat_hook_timer(ph, 300, Callback_ThreadTimer, NULL); +#endif + + xchat_print(ph, "Python interface loaded\n"); + + Util_Autoload(); + return 1; +} + +int +xchat_plugin_deinit() +{ + GSList *list; + + /* A reinitialization was tried. Just give up and live the + * environment as is. We are still alive. */ + if (reinit_tried) { + reinit_tried--; + return 1; + } + + list = plugin_list; + while (list != NULL) { + PyObject *plugin = (PyObject *) list->data; + BEGIN_PLUGIN(plugin); + Plugin_Delete(plugin); + END_PLUGIN(plugin); + list = list->next; + } + g_slist_free(plugin_list); + plugin_list = NULL; + + /* Reset xchatout buffer. */ + g_free(xchatout_buffer); + xchatout_buffer = NULL; + xchatout_buffer_size = 0; + xchatout_buffer_pos = 0; + + if (interp_plugin) { + Py_DECREF(interp_plugin); + interp_plugin = NULL; + } + + /* Switch back to the main thread state. */ + if (main_tstate) { + PyThreadState_Swap(main_tstate); + main_tstate = NULL; + } + Py_Finalize(); + +#ifdef WITH_THREAD + if (thread_timer != NULL) { + xchat_unhook(ph, thread_timer); + thread_timer = NULL; + } + PyThread_free_lock(xchat_lock); +#endif + + xchat_print(ph, "Python interface unloaded\n"); + initialized = 0; + + return 1; +} + diff --git a/xchat-2.8.8/plugins/tcl/.deps/tclplugin.Plo b/xchat-2.8.8/plugins/tcl/.deps/tclplugin.Plo new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/plugins/tcl/.deps/tclplugin.Plo @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/plugins/tcl/Makefile b/xchat-2.8.8/plugins/tcl/Makefile new file mode 100644 index 0000000..e6b7357 --- /dev/null +++ b/xchat-2.8.8/plugins/tcl/Makefile @@ -0,0 +1,611 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# plugins/tcl/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + +pkgdatadir = $(datadir)/xchat +pkgincludedir = $(includedir)/xchat +pkglibdir = $(libdir)/xchat +pkglibexecdir = $(libexecdir)/xchat +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +subdir = plugins/tcl +DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(libdir)" +LTLIBRARIES = $(lib_LTLIBRARIES) +am__DEPENDENCIES_1 = +tcl_la_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_tcl_la_OBJECTS = tclplugin.lo +tcl_la_OBJECTS = $(am_tcl_la_OBJECTS) +tcl_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(tcl_la_LDFLAGS) \ + $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(tcl_la_SOURCES) +DIST_SOURCES = $(tcl_la_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run aclocal-1.11 +ALLOCA = +AMTAR = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run tar +AR = ar +AUTOCONF = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run autoconf +AUTOHEADER = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run autoheader +AUTOMAKE = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run automake-1.11 +AWK = gawk +BUILD_INCLUDED_LIBINTL = no +CATOBJEXT = .gmo +CC = gcc +CCAS = gcc +CCASDEPMODE = depmode=gcc3 +CCASFLAGS = -g -O2 +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 -Wall -pipe -Wno-pointer-sign -funsigned-char +CFLAG_VISIBILITY = -fvisibility=hidden +COMMON_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -pthread -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include +COMMON_LIBS = -lglib-2.0 -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DATADIR = ${prefix}/share +DATADIRNAME = share +DBUS_BINDING_TOOL = /usr/bin/dbus-binding-tool +DBUS_CFLAGS = -pthread -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include +DBUS_LIBS = -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0 +DBUS_SERVICES_DIR = ${prefix}/share/dbus-1/services +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/local/bin/grep -E +EXEEXT = +FGREP = /usr/local/bin/grep -F +GCONFTOOL = /usr/bin/gconftool-2 +GENCAT = gencat +GETTEXT_MACRO_VERSION = 0.17 +GETTEXT_PACKAGE = xchat +GLIBC2 = yes +GLIBC21 = yes +GLIB_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include +GLIB_GENMARSHAL = /usr/bin/glib-genmarshal +GLIB_LIBS = -lglib-2.0 +GLIB_MKENUMS = glib-mkenums +GMSGFMT = /usr/bin/msgfmt +GMSGFMT_015 = /usr/bin/msgfmt +GOBJECT_QUERY = gobject-query +GREP = /usr/local/bin/grep +GTKSPELL_CFLAGS = +GTKSPELL_LIBS = +GTK_CFLAGS = -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 +GTK_LIBS = -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype +GUI_CFLAGS = -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 +GUI_LIBS = -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype -Wl,--version-script,$(srcdir)/../version-script -lglib-2.0 -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0 +HAVE_ASPRINTF = 1 +HAVE_POSIX_PRINTF = 1 +HAVE_SNPRINTF = 1 +HAVE_VISIBILITY = 1 +HAVE_WPRINTF = 0 +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +INSTOBJEXT = .mo +INTLBISON = bison +INTLLIBS = +INTLOBJS = +INTL_LIBTOOL_SUFFIX_PREFIX = +INTL_MACOSX_LIBS = +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = -lgmodule-2.0 +LIBICONV = -liconv +LIBINTL = +LIBMULTITHREAD = -lpthread +LIBOBJS = +LIBPTH = +LIBPTH_PREFIX = +LIBS = -lX11 -lssl -lcrypto -ldl -Wl,--export-dynamic -pthread -lglib-2.0 +LIBSEXY_CFLAGS = +LIBSEXY_LIBS = +LIBTHREAD = +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBC = -lc +LTLIBICONV = -liconv +LTLIBINTL = +LTLIBMULTITHREAD = -lpthread +LTLIBOBJS = +LTLIBPTH = +LTLIBTHREAD = +MAINT = # +MAKEINFO = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run makeinfo +MKDIR_P = /bin/mkdir -p +MSGFMT = /usr/bin/msgfmt +MSGFMT_015 = /usr/bin/msgfmt +MSGMERGE = /usr/bin/msgmerge +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = xchat +PACKAGE_BUGREPORT = http://www.xchat.org/ +PACKAGE_NAME = XChat +PACKAGE_STRING = XChat 2.8.8 +PACKAGE_TARNAME = xchat +PACKAGE_URL = +PACKAGE_VERSION = 2.8.8 +PATH_SEPARATOR = : +PERL_CFLAGS = -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/lib/x86_64-linux-gnu/perl/5.26/CORE +PERL_LDFLAGS = -Wl,-E -fstack-protector-strong -L/usr/local/lib -L/usr/lib/x86_64-linux-gnu/perl/5.26/CORE -lperl -ldl -lm -lpthread -lcrypt +PKG_CONFIG = /usr/bin/pkg-config +PLUGIN_INCLUDES = -I$(top_srcdir)/plugins +POSUB = po +PRI_MACROS_BROKEN = 0 +PY_CFLAGS = -I/usr/include/python2.7 +PY_LIBS = -L/usr/lib/python2.7/config -lpython2.7 -lpthread -lutil +RANLIB = ranlib +SED = /bin/sed +SET_MAKE = +SHELL = /bin/bash +STRIP = strip +TCL_CFLAGS = -I/usr/include -I/usr/include/tcl8.6 +TCL_LIBS = -L/usr/lib/x86_64-linux-gnu -ltcl8.6 -ldl -lz -lpthread -lm +USE_INCLUDED_LIBINTL = no +USE_NLS = yes +VERSION = 2.8.8 +WINDRES = +WOE32 = no +WOE32DLL = no +XGETTEXT = /usr/bin/xgettext +XGETTEXT_015 = /usr/bin/xgettext +XGETTEXT_EXTRA_OPTIONS = +abs_builddir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/plugins/tcl +abs_srcdir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/plugins/tcl +abs_top_builddir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8 +abs_top_srcdir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8 +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = /usr/local +gdkpixbufcsourcepath = /usr/bin/gdk-pixbuf-csource +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/install-sh +libdir = $(xchatlibdir)/plugins +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +lt_ECHO = echo +mandir = ${datarootdir}/man +mkdir_p = /bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +perlpath = /usr/bin/perl +pkgconfigpath = /usr/bin/pkg-config +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +pythonpath = /usr/bin/python2 +sbindir = ${exec_prefix}/sbin +sedpath = /bin/sed +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../../ +top_builddir = ../.. +top_srcdir = ../.. +unamepath = /bin/uname +xchatlibdir = ${exec_prefix}/lib/xchat +EXTRA_DIST = printevents.h tclplugin.h README +lib_LTLIBRARIES = tcl.la +tcl_la_SOURCES = tclplugin.c +tcl_la_LDFLAGS = -avoid-version -module +tcl_la_LIBADD = $(TCL_LIBS) +INCLUDES = $(TCL_CFLAGS) $(COMMON_CFLAGS) -I$(srcdir)/.. +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign plugins/tcl/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign plugins/tcl/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +tcl.la: $(tcl_la_OBJECTS) $(tcl_la_DEPENDENCIES) + $(tcl_la_LINK) -rpath $(libdir) $(tcl_la_OBJECTS) $(tcl_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/tclplugin.Plo + +.c.o: + depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ + $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ + $(am__mv) $$depbase.Tpo $$depbase.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(COMPILE) -c -o $@ $< + +.c.obj: + depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ + $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ + $(am__mv) $$depbase.Tpo $$depbase.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: + depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ + $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ + $(am__mv) $$depbase.Tpo $$depbase.Plo +# source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) +installdirs: + for dir in "$(DESTDIR)$(libdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-libLTLIBRARIES + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-libLTLIBRARIES + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libLTLIBRARIES clean-libtool ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am \ + install-libLTLIBRARIES install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-libLTLIBRARIES + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/xchat-2.8.8/plugins/tcl/Makefile.am b/xchat-2.8.8/plugins/tcl/Makefile.am new file mode 100644 index 0000000..804fc83 --- /dev/null +++ b/xchat-2.8.8/plugins/tcl/Makefile.am @@ -0,0 +1,10 @@ + +EXTRA_DIST=printevents.h tclplugin.h README + +libdir = $(xchatlibdir)/plugins + +lib_LTLIBRARIES = tcl.la +tcl_la_SOURCES = tclplugin.c +tcl_la_LDFLAGS = -avoid-version -module +tcl_la_LIBADD = $(TCL_LIBS) +INCLUDES = $(TCL_CFLAGS) $(COMMON_CFLAGS) -I$(srcdir)/.. diff --git a/xchat-2.8.8/plugins/tcl/Makefile.in b/xchat-2.8.8/plugins/tcl/Makefile.in new file mode 100644 index 0000000..db3ae92 --- /dev/null +++ b/xchat-2.8.8/plugins/tcl/Makefile.in @@ -0,0 +1,611 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = plugins/tcl +DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(libdir)" +LTLIBRARIES = $(lib_LTLIBRARIES) +am__DEPENDENCIES_1 = +tcl_la_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_tcl_la_OBJECTS = tclplugin.lo +tcl_la_OBJECTS = $(am_tcl_la_OBJECTS) +tcl_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(tcl_la_LDFLAGS) \ + $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(tcl_la_SOURCES) +DIST_SOURCES = $(tcl_la_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +COMMON_CFLAGS = @COMMON_CFLAGS@ +COMMON_LIBS = @COMMON_LIBS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DATADIRNAME = @DATADIRNAME@ +DBUS_BINDING_TOOL = @DBUS_BINDING_TOOL@ +DBUS_CFLAGS = @DBUS_CFLAGS@ +DBUS_LIBS = @DBUS_LIBS@ +DBUS_SERVICES_DIR = @DBUS_SERVICES_DIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GCONFTOOL = @GCONFTOOL@ +GENCAT = @GENCAT@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GLIB_CFLAGS = @GLIB_CFLAGS@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GLIB_LIBS = @GLIB_LIBS@ +GLIB_MKENUMS = @GLIB_MKENUMS@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GOBJECT_QUERY = @GOBJECT_QUERY@ +GREP = @GREP@ +GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ +GTKSPELL_LIBS = @GTKSPELL_LIBS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_LIBS = @GTK_LIBS@ +GUI_CFLAGS = @GUI_CFLAGS@ +GUI_LIBS = @GUI_LIBS@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBSEXY_CFLAGS = @LIBSEXY_CFLAGS@ +LIBSEXY_LIBS = @LIBSEXY_LIBS@ +LIBTHREAD = @LIBTHREAD@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBC = @LTLIBC@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTHREAD = @LTLIBTHREAD@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL_CFLAGS = @PERL_CFLAGS@ +PERL_LDFLAGS = @PERL_LDFLAGS@ +PKG_CONFIG = @PKG_CONFIG@ +PLUGIN_INCLUDES = @PLUGIN_INCLUDES@ +POSUB = @POSUB@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +PY_CFLAGS = @PY_CFLAGS@ +PY_LIBS = @PY_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TCL_CFLAGS = @TCL_CFLAGS@ +TCL_LIBS = @TCL_LIBS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WOE32 = @WOE32@ +WOE32DLL = @WOE32DLL@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gdkpixbufcsourcepath = @gdkpixbufcsourcepath@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = $(xchatlibdir)/plugins +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +perlpath = @perlpath@ +pkgconfigpath = @pkgconfigpath@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pythonpath = @pythonpath@ +sbindir = @sbindir@ +sedpath = @sedpath@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +unamepath = @unamepath@ +xchatlibdir = @xchatlibdir@ +EXTRA_DIST = printevents.h tclplugin.h README +lib_LTLIBRARIES = tcl.la +tcl_la_SOURCES = tclplugin.c +tcl_la_LDFLAGS = -avoid-version -module +tcl_la_LIBADD = $(TCL_LIBS) +INCLUDES = $(TCL_CFLAGS) $(COMMON_CFLAGS) -I$(srcdir)/.. +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign plugins/tcl/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign plugins/tcl/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +tcl.la: $(tcl_la_OBJECTS) $(tcl_la_DEPENDENCIES) + $(tcl_la_LINK) -rpath $(libdir) $(tcl_la_OBJECTS) $(tcl_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tclplugin.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) +installdirs: + for dir in "$(DESTDIR)$(libdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-libLTLIBRARIES + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-libLTLIBRARIES + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libLTLIBRARIES clean-libtool ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am \ + install-libLTLIBRARIES install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-libLTLIBRARIES + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/xchat-2.8.8/plugins/tcl/README b/xchat-2.8.8/plugins/tcl/README new file mode 100644 index 0000000..e46635e --- /dev/null +++ b/xchat-2.8.8/plugins/tcl/README @@ -0,0 +1,55 @@ +Please read this document before asking questions. + +(1) WHAT IS THE TCL PLUGIN? + + The XChat Tcl Plugin adds the complete Tcl scripting language to the + XChat 1.9.x and 2.x IRC client. The design philosophy behind the tcl + plugin was to give all the power of the C API. yet completely shield + the user from all the complexities of it. It is lightly modeled after + after Xircon; an old windows TCL enabled client with a little bit of + eggdrop functionality to it. + + Features: + * Uses the popular TCL scripting language. + * Familiar to eggdrop bot owners. + * Adds many new XChat specific commands to the Tcl language for + handling of events, user commands, timers, etc. + * It's actually documented! (Hey, what a concept!) + * Works with XChat 1.9.x and 2.x. + * Open source (GPL) + + The supplied documentation for Tcl Plugin commands can be + found in doc/tclplugin.html + + For a comprehensive list of IRC server tokens, see + doc/tokens.txt + + +(2) HOW TO GET TCL PLUGIN + + You can always find the latest version of the Tcl Plugin at: + + http://www.scriptkitties.com/tclplugin + + You must also have Tcl 8.3 or higher installed on your system. + + Tcl can be obtained from: + + http://sourceforge.net/projects/tcl + http://tcl.activestate.com (pre-compiled binaries) + + Tcl Man Pages + + http://tcl.activestate.com/man/ + + Tcl Tutorials: + + http://hegel.ittc.ukans.edu/topics/tcltk/tutorial-noplugin/ + http://jan.netcomp.monash.edu.au/ProgrammingUnix/tcl/tcl_tut.html + http://users.belgacom.net/bruno.champagne/tcl.html + + +(3) QUICK STARTUP + + SEE 'INSTALL' + diff --git a/xchat-2.8.8/plugins/tcl/printevents.h b/xchat-2.8.8/plugins/tcl/printevents.h new file mode 100755 index 0000000..dfea4ae --- /dev/null +++ b/xchat-2.8.8/plugins/tcl/printevents.h @@ -0,0 +1,319 @@ +/*************************************************************************** + printevents.h - TCL plugin header file + ------------------------------------------------- + begin : Sat Nov 9 17:31:20 MST 2002 + copyright : Copyright 2002-2007 Daniel P. Stasinski + email : mooooooo@avenues.org + generated : Mon May 21 06:03:00 PM MST 2007 + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +typedef struct { + char *event; + char *emit; + int argc; + xchat_hook *hook; +} print_event; + +enum +{ + CHAT, + XC_APPFOCUS, + XC_TABOPEN, + XC_TABCLOSE, + XC_TABFOCUS, + XC_KEYPRESS, + XC_ADDNOTIFY, + XC_BANLIST, + XC_BANNED, + XC_BEEP, + XC_CHANGENICK, + XC_CHANACTION, + XC_HCHANACTION, + XC_CHANBAN, + XC_CHANDATE, + XC_CHANDEHOP, + XC_CHANDEOP, + XC_CHANDEVOICE, + XC_CHANEXEMPT, + XC_CHANHOP, + XC_CHANINVITE, + XC_CHANLISTHEAD, + XC_CHANMSG, + XC_CHANMODEGEN, + XC_CHANMODES, + XC_HCHANMSG, + XC_CHANNOTICE, + XC_CHANOP, + XC_CHANRMEXEMPT, + XC_CHANRMINVITE, + XC_CHANRMKEY, + XC_CHANRMLIMIT, + XC_CHANSETKEY, + XC_CHANSETLIMIT, + XC_CHANUNBAN, + XC_CHANVOICE, + XC_CONNECTED, + XC_CONNECT, + XC_CONNFAIL, + XC_CTCPGEN, + XC_CTCPGENC, + XC_CTCPSEND, + XC_CTCPSND, + XC_CTCPSNDC, + XC_DCCCHATABORT, + XC_DCCCONCHAT, + XC_DCCCHATF, + XC_DCCCHATOFFER, + XC_DCCCHATOFFERING, + XC_DCCCHATREOFFER, + XC_DCCCONFAIL, + XC_DCCGENERICOFFER, + XC_DCCHEAD, + XC_MALFORMED, + XC_DCCOFFER, + XC_DCCIVAL, + XC_DCCRECVABORT, + XC_DCCRECVCOMP, + XC_DCCCONRECV, + XC_DCCRECVERR, + XC_DCCFILEERR, + XC_DCCRENAME, + XC_DCCRESUMEREQUEST, + XC_DCCSENDABORT, + XC_DCCSENDCOMP, + XC_DCCCONSEND, + XC_DCCSENDFAIL, + XC_DCCSENDOFFER, + XC_DCCSTALL, + XC_DCCTOUT, + XC_DELNOTIFY, + XC_DISCON, + XC_FOUNDIP, + XC_GENMSG, + XC_IGNOREADD, + XC_IGNORECHANGE, + XC_IGNOREFOOTER, + XC_IGNOREHEADER, + XC_IGNOREREMOVE, + XC_IGNOREEMPTY, + XC_INVITE, + XC_INVITED, + XC_JOIN, + XC_KEYWORD, + XC_KICK, + XC_KILL, + XC_MSGSEND, + XC_MOTD, + XC_MOTDSKIP, + XC_NICKCLASH, + XC_NICKFAIL, + XC_NODCC, + XC_NOCHILD, + XC_NOTICE, + XC_NOTICESEND, + XC_NOTIFYEMPTY, + XC_NOTIFYHEAD, + XC_NOTIFYNUMBER, + XC_NOTIFYOFFLINE, + XC_NOTIFYONLINE, + XC_OPENDIALOG, + XC_PART, + XC_PARTREASON, + XC_PINGREP, + XC_PINGTIMEOUT, + XC_PRIVMSG, + XC_DPRIVMSG, + XC_ALREADYPROCESS, + XC_QUIT, + XC_RAWMODES, + XC_WALLOPS, + XC_RESOLVINGUSER, + XC_SERVERCONNECTED, + XC_SERVERERROR, + XC_SERVERLOOKUP, + XC_SERVNOTICE, + XC_SERVTEXT, + XC_STOPCONNECT, + XC_TOPIC, + XC_NEWTOPIC, + XC_TOPICDATE, + XC_UKNHOST, + XC_USERLIMIT, + XC_USERSONCHAN, + XC_WHOIS_AUTH, + XC_WHOIS5, + XC_WHOIS2, + XC_WHOIS6, + XC_WHOIS_ID, + XC_WHOIS4, + XC_WHOIS4T, + XC_WHOIS1, + XC_WHOIS_REALHOST, + XC_WHOIS3, + XC_WHOIS_SPECIAL, + XC_UJOIN, + XC_UKICK, + XC_UPART, + XC_UPARTREASON, + XC_UACTION, + XC_UINVITE, + XC_UCHANMSG, + XC_UCHANGENICK, + XC_SIZE +}; + +static print_event xc[] = { + { "CHAT", "DCC Chat Text", -1, NULL }, + { "XC_APPFOCUS", "Focus Window", -3, NULL }, + { "XC_TABOPEN", "Open Context", -2, NULL }, + { "XC_TABCLOSE", "Close Context", -2, NULL }, + { "XC_TABFOCUS", "Focus Tab", -2, NULL }, + { "XC_KEYPRESS", "Key Press", 4, NULL }, + { "XC_ADDNOTIFY", "Add Notify", 1, NULL }, + { "XC_BANLIST", "Ban List", 4, NULL }, + { "XC_BANNED", "Banned", 1, NULL }, + { "XC_BEEP", "Beep", 0, NULL }, + { "XC_CHANGENICK", "Change Nick", 2, NULL }, + { "XC_CHANACTION", "Channel Action", 3, NULL }, + { "XC_HCHANACTION", "Channel Action Hilight", 3, NULL }, + { "XC_CHANBAN", "Channel Ban", 2, NULL }, + { "XC_CHANDATE", "Channel Creation", 2, NULL }, + { "XC_CHANDEHOP", "Channel DeHalfOp", 2, NULL }, + { "XC_CHANDEOP", "Channel DeOp", 2, NULL }, + { "XC_CHANDEVOICE", "Channel DeVoice", 2, NULL }, + { "XC_CHANEXEMPT", "Channel Exempt", 2, NULL }, + { "XC_CHANHOP", "Channel Half-Operator", 2, NULL }, + { "XC_CHANINVITE", "Channel INVITE", 2, NULL }, + { "XC_CHANLISTHEAD", "Channel List", 0, NULL }, + { "XC_CHANMSG", "Channel Message", 4, NULL }, + { "XC_CHANMODEGEN", "Channel Mode Generic", 4, NULL }, + { "XC_CHANMODES", "Channel Modes", 2, NULL }, + { "XC_HCHANMSG", "Channel Msg Hilight", 4, NULL }, + { "XC_CHANNOTICE", "Channel Notice", 3, NULL }, + { "XC_CHANOP", "Channel Operator", 2, NULL }, + { "XC_CHANRMEXEMPT", "Channel Remove Exempt", 2, NULL }, + { "XC_CHANRMINVITE", "Channel Remove Invite", 2, NULL }, + { "XC_CHANRMKEY", "Channel Remove Keyword", 1, NULL }, + { "XC_CHANRMLIMIT", "Channel Remove Limit", 1, NULL }, + { "XC_CHANSETKEY", "Channel Set Key", 2, NULL }, + { "XC_CHANSETLIMIT", "Channel Set Limit", 2, NULL }, + { "XC_CHANUNBAN", "Channel UnBan", 2, NULL }, + { "XC_CHANVOICE", "Channel Voice", 2, NULL }, + { "XC_CONNECTED", "Connected", 0, NULL }, + { "XC_CONNECT", "Connecting", 3, NULL }, + { "XC_CONNFAIL", "Connection Failed", 1, NULL }, + { "XC_CTCPGEN", "CTCP Generic", 2, NULL }, + { "XC_CTCPGENC", "CTCP Generic to Channel", 3, NULL }, + { "XC_CTCPSEND", "CTCP Send", 2, NULL }, + { "XC_CTCPSND", "CTCP Sound", 2, NULL }, + { "XC_CTCPSNDC", "CTCP Sound to Channel", 3, NULL }, + { "XC_DCCCHATABORT", "DCC CHAT Abort", 1, NULL }, + { "XC_DCCCONCHAT", "DCC CHAT Connect", 2, NULL }, + { "XC_DCCCHATF", "DCC CHAT Failed", 4, NULL }, + { "XC_DCCCHATOFFER", "DCC CHAT Offer", 1, NULL }, + { "XC_DCCCHATOFFERING", "DCC CHAT Offering", 1, NULL }, + { "XC_DCCCHATREOFFER", "DCC CHAT Reoffer", 1, NULL }, + { "XC_DCCCONFAIL", "DCC Conection Failed", 3, NULL }, + { "XC_DCCGENERICOFFER", "DCC Generic Offer", 2, NULL }, + { "XC_DCCHEAD", "DCC Header", 0, NULL }, + { "XC_MALFORMED", "DCC Malformed", 2, NULL }, + { "XC_DCCOFFER", "DCC Offer", 3, NULL }, + { "XC_DCCIVAL", "DCC Offer Not Valid", 0, NULL }, + { "XC_DCCRECVABORT", "DCC RECV Abort", 2, NULL }, + { "XC_DCCRECVCOMP", "DCC RECV Complete", 4, NULL }, + { "XC_DCCCONRECV", "DCC RECV Connect", 3, NULL }, + { "XC_DCCRECVERR", "DCC RECV Failed", 4, NULL }, + { "XC_DCCFILEERR", "DCC RECV File Open Error", 2, NULL }, + { "XC_DCCRENAME", "DCC Rename", 2, NULL }, + { "XC_DCCRESUMEREQUEST", "DCC RESUME Request", 3, NULL }, + { "XC_DCCSENDABORT", "DCC SEND Abort", 2, NULL }, + { "XC_DCCSENDCOMP", "DCC SEND Complete", 3, NULL }, + { "XC_DCCCONSEND", "DCC SEND Connect", 3, NULL }, + { "XC_DCCSENDFAIL", "DCC SEND Failed", 3, NULL }, + { "XC_DCCSENDOFFER", "DCC SEND Offer", 4, NULL }, + { "XC_DCCSTALL", "DCC Stall", 3, NULL }, + { "XC_DCCTOUT", "DCC Timeout", 3, NULL }, + { "XC_DELNOTIFY", "Delete Notify", 1, NULL }, + { "XC_DISCON", "Disconnected", 1, NULL }, + { "XC_FOUNDIP", "Found IP", 1, NULL }, + { "XC_GENMSG", "Generic Message", 2, NULL }, + { "XC_IGNOREADD", "Ignore Add", 1, NULL }, + { "XC_IGNORECHANGE", "Ignore Changed", 1, NULL }, + { "XC_IGNOREFOOTER", "Ignore Footer", 0, NULL }, + { "XC_IGNOREHEADER", "Ignore Header", 0, NULL }, + { "XC_IGNOREREMOVE", "Ignore Remove", 1, NULL }, + { "XC_IGNOREEMPTY", "Ignorelist Empty", 0, NULL }, + { "XC_INVITE", "Invite", 1, NULL }, + { "XC_INVITED", "Invited", 3, NULL }, + { "XC_JOIN", "Join", 3, NULL }, + { "XC_KEYWORD", "Keyword", 1, NULL }, + { "XC_KICK", "Kick", 4, NULL }, + { "XC_KILL", "Killed", 2, NULL }, + { "XC_MSGSEND", "Message Send", 2, NULL }, + { "XC_MOTD", "Motd", 1, NULL }, + { "XC_MOTDSKIP", "MOTD Skipped", 0, NULL }, + { "XC_NICKCLASH", "Nick Clash", 2, NULL }, + { "XC_NICKFAIL", "Nick Failed", 0, NULL }, + { "XC_NODCC", "No DCC", 0, NULL }, + { "XC_NOCHILD", "No Running Process", 0, NULL }, + { "XC_NOTICE", "Notice", 2, NULL }, + { "XC_NOTICESEND", "Notice Send", 2, NULL }, + { "XC_NOTIFYEMPTY", "Notify Empty", 0, NULL }, + { "XC_NOTIFYHEAD", "Notify Header", 0, NULL }, + { "XC_NOTIFYNUMBER", "Notify Number", 1, NULL }, + { "XC_NOTIFYOFFLINE", "Notify Offline", 3, NULL }, + { "XC_NOTIFYONLINE", "Notify Online", 3, NULL }, + { "XC_OPENDIALOG", "Open Dialog", 0, NULL }, + { "XC_PART", "Part", 3, NULL }, + { "XC_PARTREASON", "Part with Reason", 4, NULL }, + { "XC_PINGREP", "Ping Reply", 2, NULL }, + { "XC_PINGTIMEOUT", "Ping Timeout", 1, NULL }, + { "XC_PRIVMSG", "Private Message", 3, NULL }, + { "XC_DPRIVMSG", "Private Message to Dialog", 3, NULL }, + { "XC_ALREADYPROCESS", "Process Already Running", 0, NULL }, + { "XC_QUIT", "Quit", 3, NULL }, + { "XC_RAWMODES", "Raw Modes", 2, NULL }, + { "XC_WALLOPS", "Receive Wallops", 2, NULL }, + { "XC_RESOLVINGUSER", "Resolving User", 2, NULL }, + { "XC_SERVERCONNECTED", "Server Connected", 0, NULL }, + { "XC_SERVERERROR", "Server Error", 1, NULL }, + { "XC_SERVERLOOKUP", "Server Lookup", 1, NULL }, + { "XC_SERVNOTICE", "Server Notice", 2, NULL }, + { "XC_SERVTEXT", "Server Text", 2, NULL }, + { "XC_STOPCONNECT", "Stop Connection", 1, NULL }, + { "XC_TOPIC", "Topic", 2, NULL }, + { "XC_NEWTOPIC", "Topic Change", 3, NULL }, + { "XC_TOPICDATE", "Topic Creation", 3, NULL }, + { "XC_UKNHOST", "Unknown Host", 0, NULL }, + { "XC_USERLIMIT", "User Limit", 1, NULL }, + { "XC_USERSONCHAN", "Users On Channel", 2, NULL }, + { "XC_WHOIS_AUTH", "WhoIs Authenticated", 3, NULL }, + { "XC_WHOIS5", "WhoIs Away Line", 2, NULL }, + { "XC_WHOIS2", "WhoIs Channel/Oper Line", 2, NULL }, + { "XC_WHOIS6", "WhoIs End", 1, NULL }, + { "XC_WHOIS_ID", "WhoIs Identified", 2, NULL }, + { "XC_WHOIS4", "WhoIs Idle Line", 2, NULL }, + { "XC_WHOIS4T", "WhoIs Idle Line with Signon", 3, NULL }, + { "XC_WHOIS1", "WhoIs Name Line", 4, NULL }, + { "XC_WHOIS_REALHOST", "WhoIs Real Host", 4, NULL }, + { "XC_WHOIS3", "WhoIs Server Line", 2, NULL }, + { "XC_WHOIS_SPECIAL", "WhoIs Special", 3, NULL }, + { "XC_UJOIN", "You Join", 3, NULL }, + { "XC_UKICK", "You Kicked", 4, NULL }, + { "XC_UPART", "You Part", 3, NULL }, + { "XC_UPARTREASON", "You Part with Reason", 4, NULL }, + { "XC_UACTION", "Your Action", 3, NULL }, + { "XC_UINVITE", "Your Invitation", 3, NULL }, + { "XC_UCHANMSG", "Your Message", 4, NULL }, + { "XC_UCHANGENICK", "Your Nick Changing", 2, NULL } +}; + diff --git a/xchat-2.8.8/plugins/tcl/tclplugin.c b/xchat-2.8.8/plugins/tcl/tclplugin.c new file mode 100755 index 0000000..17dc755 --- /dev/null +++ b/xchat-2.8.8/plugins/tcl/tclplugin.c @@ -0,0 +1,2290 @@ +/*************************************************************************** + tclplugin.c - Tcl plugin for xchat 1.9.x / 2.x.x + -------------------------------------------------s + begin : Sat Nov 19 17:31:20 MST 2002 + copyright : Copyright 2002-2010 Daniel P. Stasinski + email : daniel@avenues.org + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +static char RCSID[] = "$Id: tclplugin.c,v 1.64 2010/03/10 04:24:16 mooooooo Exp $"; + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef WIN32 +#include +#define bzero(mem, sz) memset((mem), 0, (sz)) +#define bcopy(src, dest, count) memmove((dest), (src), (count)) +#else +#include +#endif + +#include "xchat-plugin.h" +#include "tclplugin.h" +#include "printevents.h" + +static int nexttimerid = 0; +static int nexttimerindex = 0; +static timer timers[MAX_TIMERS]; + +static char VERSION[16]; + +static int initialized = 0; +static int reinit_tried = 0; +static Tcl_Interp *interp = NULL; +static xchat_plugin *ph; +static xchat_hook *raw_line_hook; +static xchat_hook *Command_TCL_hook; +static xchat_hook *Command_Source_hook; +static xchat_hook *Command_Reload_hook; +static xchat_hook *Command_Load_hook; +static xchat_hook *Event_Handler_hook; +static xchat_hook *Null_Command_hook; + +static int complete_level = 0; +static t_complete complete[MAX_COMPLETES + 1]; +static Tcl_HashTable cmdTablePtr; +static Tcl_HashTable aliasTablePtr; + +static int nextprocid = 0x1000; +#define PROCPREFIX "__xctcl_" + +static char unknown[] = { +"rename unknown iunknown\n" +"proc ::unknown {args} {\n" +" global errorInfo errorCode\n" +" if { [string index [lindex $args 0] 0] == \"/\" } {\n" +" command \"[string range [join $args \" \"] 1 end]\"\n" +" } else {\n" +" set code [catch {uplevel iunknown $args} msg]\n" +" if {$code == 1} {\n" +" set new [split $errorInfo \\n]\n" +" set new [join [lrange $new 0 [expr {[llength $new] - 8}]] \\n]\n" +" return -code error -errorcode $errorCode -errorinfo $new $msg\n" +" } else {\n" +" return -code $code $msg\n" +" }\n" +" }\n" +"}\n" +"proc unsupported0 {from to {bytes \"\"}} {\n" +" set b [expr {$bytes == \"\" ? \"\" : \"-size [list $bytes]\"}]\n" +" eval [list fcopy $from $to] $b\n" +"}\n" +}; + +static char sourcedirs[] = { + "set files [lsort [glob -nocomplain -directory [xchatdir] \"*.tcl\"]]\n" + "set init [lsearch -glob $files \"*/init.tcl\"]\n" + "if { $init > 0 } {\n" + "set initfile [lindex $files $init]\n" + "set files [lreplace $files $init $init]\n" + "set files [linsert $files 0 $initfile]\n" "}\n" "foreach f $files {\n" "if { [catch { source $f } errMsg] } {\n" "puts \"Tcl plugin\\tError sourcing \\\"$f\\\" ($errMsg)\"\n" "} else {\n" "puts \"Tcl plugin\\tSourced \\\"$f\\\"\"\n" "}\n" "}\n" +}; + +static char inlinetcl[] = { +"proc splitsrc { } {\n" +"uplevel \"scan \\$_src \\\"%\\\\\\[^!\\\\\\]!%\\\\\\[^@\\\\\\]@%s\\\" _nick _ident _host\"\n" +"}\n" + +"proc ::exit { } {\n" +"puts \"Using 'exit' is bad\"\n" +"}\n" + +"proc ::away { args } { return [eval [join [list getinfo $args away]]] }\n" +"proc ::channel { args } { return [eval [join [list getinfo $args channel]]] }\n" +"proc ::tab { args } { return [eval [join [list getinfo $args channel]]] }\n" +"proc ::charset { args } { return [eval [join [list getinfo $args charset]]] }\n" +"proc ::host { args } { return [eval [join [list getinfo $args host]]] }\n" +"proc ::inputbox { args } { return [eval [join [list getinfo $args inputbox]]] }\n" +"proc ::libdirfs { args } { return [eval [join [list getinfo $args libdirfs]]] }\n" +"proc ::network { args } { return [eval [join [list getinfo $args network]]] }\n" +"proc ::nickserv { args } { return [eval [join [list getinfo $args nickserv]]] }\n" +"proc ::server { args } { return [eval [join [list getinfo $args server]]] }\n" +"proc ::version { args } { return [eval [join [list getinfo $args version]]] }\n" +"proc ::win_status { args } { return [eval [join [list getinfo $args win_status]]] }\n" +"proc ::xchatdir { args } { return [eval [join [list getinfo $args xchatdir]]] }\n" +"proc ::xchatdirfs { args } { return [eval [join [list getinfo $args xchatdirfs]]] }\n" + +"proc ::color { {arg {}} } { return \"\\003$arg\" }\n" +"proc ::bold { } { return \"\\002\" }\n" +"proc ::underline { } { return \"\\037\" }\n" +"proc ::reverse { } { return \"\\026\" }\n" +"proc ::reset { } { return \"\\017\" }\n" + +"proc ::__xctcl_errorInfo { } {\n" +" set text [split $::errorInfo \\n]\n" +" puts [string trim [join [lrange $text 0 [expr {[llength $text] - 4}]] \\n]]\n" +"}\n" + +"proc ::bgerror { message } {\n" +" set text [split $::errorInfo \\n]\n" +" puts [string trim [join [lrange $text 0 [expr {[llength $text] - 4}]] \\n]]\n" +"}\n" +}; + +static void NiceErrorInfo () +{ + Tcl_Eval(interp, "::__xctcl_errorInfo"); +} + +static void Tcl_MyDStringAppend(Tcl_DString * ds, char *string) +{ + Tcl_DStringAppend(ds, string, strlen(string)); +} + +static char *InternalProcName(int value) +{ + static char result[32]; + sprintf(result, "%s%08x", PROCPREFIX, value); + return result; +} + +static int SourceInternalProc(int id, const char *args, const char *source) +{ + Tcl_DString ds; + int result; + Tcl_DStringInit(&ds); + + Tcl_MyDStringAppend(&ds, "proc "); + Tcl_MyDStringAppend(&ds, InternalProcName(id)); + Tcl_MyDStringAppend(&ds, " { "); + Tcl_MyDStringAppend(&ds, args); + Tcl_MyDStringAppend(&ds, " } {\n"); + Tcl_MyDStringAppend(&ds, source); + Tcl_MyDStringAppend(&ds, "\n}\n\n"); + + result = Tcl_Eval(interp, ds.string); + + Tcl_DStringFree(&ds); + + return result; +} + +static int EvalInternalProc(const char *procname, int ct, ...) +{ + Tcl_DString ds; + int result; + va_list ap; + char *buf; + + Tcl_DStringInit(&ds); + + Tcl_MyDStringAppend(&ds, procname); + + if (ct) { + va_start(ap, ct); + while (ct--) { + if ((buf = va_arg(ap, char *)) != NULL) + Tcl_DStringAppendElement(&ds, buf); + else + Tcl_MyDStringAppend(&ds, " \"\""); + } + va_end(ap); + } + + result = Tcl_Eval(interp, ds.string); + + Tcl_DStringFree(&ds); + + return result; +} + + +static void DeleteInternalProc(const char *proc) +{ + Tcl_DString ds; + + Tcl_DStringInit(&ds); + Tcl_MyDStringAppend(&ds, "rename "); + Tcl_MyDStringAppend(&ds, proc); + Tcl_MyDStringAppend(&ds, " {}"); + Tcl_Eval(interp, ds.string); + Tcl_DStringFree(&ds); +} + +static char *StrDup(const char *string, int *length) +{ + char *result; + + if (string == NULL) + return NULL; + + *length = strlen(string); + result = Tcl_Alloc(*length + 1); + strncpy(result, string, *length); + result[*length] = 0; + + return result; +} + +static char *myitoa(long value) +{ + static char result[32]; + sprintf(result, "%ld", value); + return result; +} + +static xchat_context *atoctx(const char *nptr) +{ + int isnum = 1; + int x = 0; + + if (!nptr) + return NULL; + + while (isnum && nptr[x]) { + if (!isdigit(nptr[x++])) + isnum--; + } + + if (isnum && x) + return (xchat_context *) atol(nptr); + else + return NULL; +} + +static xchat_context *xchat_smart_context(const char *arg1, const char *arg2) +{ + const char *server, *s, *n; + xchat_context *result = NULL; + xchat_context *ctx = NULL; + xchat_context *actx = NULL; + xchat_list *list; + + if (arg1 == NULL) + return xchat_get_context(ph);; + + if (arg1 && arg2) { + result = xchat_find_context(ph, arg1, arg2); + if (result == NULL) + result = xchat_find_context(ph, arg2, arg1); + return result; + } else { + + actx = atoctx(arg1); + + server = xchat_get_info(ph, "server"); + + list = xchat_list_get(ph, "channels"); + + if (list != NULL) { + + while (xchat_list_next(ph, list)) { + + ctx = (xchat_context *)xchat_list_str(ph, list, "context"); + + if (actx) { + if (ctx == actx) { + result = ctx; + break; + } + } else { + + s = xchat_list_str(ph, list, "server"); + + if (xchat_list_int(ph, list, "type") == 1) { + if (strcasecmp(arg1, s) == 0) { + result = ctx; + break; + } + n = xchat_list_str(ph, list, "network"); + if (n) { + if (strcasecmp(arg1, n) == 0) { + result = ctx; + break; + } + } + } else { + if ((strcasecmp(server, s) == 0) && (strcasecmp(arg1, xchat_list_str(ph, list, "channel")) == 0)) { + result = ctx; + break; + } + } + } + } + + xchat_list_free(ph, list); + } + + } + + return result; +} + +static void queue_nexttimer() +{ + int x; + time_t then; + + nexttimerindex = 0; + then = (time_t) 0x7fffffff; + + for (x = 1; x < MAX_TIMERS; x++) { + if (timers[x].timerid) { + if (timers[x].timestamp < then) { + then = timers[x].timestamp; + nexttimerindex = x; + } + } + } +} + +static int insert_timer(int seconds, int count, const char *script) +{ + int x; + int dummy; + time_t now; + int id; + + if (script == NULL) + return (-1); + + id = (nextprocid++ % INT_MAX) + 1; + + now = time(NULL); + + for (x = 1; x < MAX_TIMERS; x++) { + if (timers[x].timerid == 0) { + if (SourceInternalProc(id, "", script) == TCL_ERROR) { + xchat_printf(ph, "\0039TCL plugin\003\tERROR (timer %d) ", timers[x].timerid); + NiceErrorInfo (); + return (-1); + } + timers[x].timerid = (nexttimerid++ % INT_MAX) + 1; + timers[x].timestamp = now + seconds; + timers[x].count = count; + timers[x].seconds = seconds; + timers[x].procPtr = StrDup(InternalProcName(id), &dummy); + queue_nexttimer(); + return (timers[x].timerid); + } + } + + return (-1); +} + +static void do_timer() +{ + xchat_context *origctx; + time_t now; + int index; + + if (!nexttimerindex) + return; + + now = time(NULL); + + if (now < timers[nexttimerindex].timestamp) + return; + + index = nexttimerindex; + origctx = xchat_get_context(ph); + if (EvalInternalProc(timers[index].procPtr, 0) == TCL_ERROR) { + xchat_printf(ph, "\0039TCL plugin\003\tERROR (timer %d) ", timers[index].timerid); + NiceErrorInfo (); + } + xchat_set_context(ph, origctx); + + if (timers[index].count != -1) + timers[index].count--; + + if (timers[index].count == 0) { + timers[index].timerid = 0; + if (timers[index].procPtr != NULL) { + DeleteInternalProc(timers[index].procPtr); + Tcl_Free(timers[index].procPtr); + } + timers[index].procPtr = NULL; + } else { + timers[index].timestamp += timers[index].seconds; + } + + queue_nexttimer(); + + return; + +} + +static int Server_raw_line(char *word[], char *word_eol[], void *userdata) +{ + char *src, *cmd, *dest, *rest; + char *chancmd = NULL; + char *procList; + Tcl_HashEntry *entry = NULL; + xchat_context *origctx; + int len; + int dummy; + char *string = NULL; + int ctcp = 0; + int count; + int list_argc, proc_argc; + const char **list_argv, **proc_argv; + int private = 0; + + if (word[0][0] == 0) + return XCHAT_EAT_NONE; + + if (complete_level == MAX_COMPLETES) + return XCHAT_EAT_NONE; + + complete_level++; + complete[complete_level].defresult = XCHAT_EAT_NONE; /* XCHAT_EAT_PLUGIN; */ + complete[complete_level].result = XCHAT_EAT_NONE; + complete[complete_level].word = word; + complete[complete_level].word_eol = word_eol; + + if (word[1][0] == ':') { + src = word[1]; + cmd = word[2]; + dest = word[3]; + rest = word_eol[4]; + } else { + src = ""; + cmd = word[1]; + if (word_eol[2][0] == ':') { + dest = ""; + rest = word_eol[2]; + } else { + dest = word[2]; + rest = word_eol[3]; + } + } + + if (src[0] == ':') + src++; + if (dest[0] == ':') + dest++; + if (rest[0] == ':') + rest++; + + if (rest[0] == 0x01) { + rest++; + if (strcasecmp("PRIVMSG", cmd) == 0) { + if (strncasecmp(rest, "ACTION ", 7) == 0) { + cmd = "ACTION"; + rest += 7; + } else + cmd = "CTCP"; + } else if (!strcasecmp("NOTICE", cmd)) + cmd = "CTCR"; + ctcp = 1; + } else if (!strcasecmp("NOTICE", cmd) && (strchr(src, '!') == NULL)) { + cmd = "SNOTICE"; + } else if (rest[0] == '!') { + chancmd = word[4] + 1; + } + + if (chancmd != NULL) { + string = StrDup(chancmd, &dummy); + Tcl_UtfToUpper(string); + if ((entry = Tcl_FindHashEntry(&cmdTablePtr, string)) == NULL) { + Tcl_Free(string); + } else { + cmd = chancmd; + rest = word_eol[5]; + } + } + + if (entry == NULL) { + string = StrDup(cmd, &dummy); + Tcl_UtfToUpper(string); + entry = Tcl_FindHashEntry(&cmdTablePtr, string); + } + + if (entry != NULL) { + + procList = Tcl_GetHashValue(entry); + + if (isalpha(dest[0])) + private = 1; + + rest = StrDup(rest, &len); + if (ctcp) { + if (rest != NULL) { + if ((len > 1) && (rest[len - 1] == 0x01)) + rest[len - 1] = 0; + } + } + + if (Tcl_SplitList(interp, procList, &list_argc, &list_argv) == TCL_OK) { + + for (count = 0; count < list_argc; count++) { + + if (Tcl_SplitList(interp, list_argv[count], &proc_argc, &proc_argv) != TCL_OK) + continue; + + origctx = xchat_get_context(ph); + if (EvalInternalProc(proc_argv[1], 7, src, dest, cmd, rest, word_eol[1], proc_argv[0], myitoa(private)) == TCL_ERROR) { + xchat_printf(ph, "\0039TCL plugin\003\tERROR (on %s %s) ", cmd, proc_argv[0]); + NiceErrorInfo (); + } + xchat_set_context(ph, origctx); + + Tcl_Free((char *) proc_argv); + + if ((complete[complete_level].result == XCHAT_EAT_PLUGIN) || (complete[complete_level].result == XCHAT_EAT_ALL)) + break; + + } + + Tcl_Free((char *) list_argv); + + } + + Tcl_Free(rest); + + } + + if (string) + Tcl_Free(string); + + return complete[complete_level--].result; + +} + +static int Print_Hook(char *word[], void *userdata) +{ + char *procList; + Tcl_HashEntry *entry; + xchat_context *origctx; + int count; + int list_argc, proc_argc; + const char **list_argv, **proc_argv; + Tcl_DString ds; + int x; + + if (complete_level == MAX_COMPLETES) + return XCHAT_EAT_NONE; + + complete_level++; + complete[complete_level].defresult = XCHAT_EAT_NONE; /* XCHAT_EAT_PLUGIN; */ + complete[complete_level].result = XCHAT_EAT_NONE; + complete[complete_level].word = word; + complete[complete_level].word_eol = word; + + if ((entry = Tcl_FindHashEntry(&cmdTablePtr, xc[(int) userdata].event)) != NULL) { + + procList = Tcl_GetHashValue(entry); + + if (Tcl_SplitList(interp, procList, &list_argc, &list_argv) == TCL_OK) { + + for (count = 0; count < list_argc; count++) { + + if (Tcl_SplitList(interp, list_argv[count], &proc_argc, &proc_argv) != TCL_OK) + continue; + + origctx = xchat_get_context(ph); + + Tcl_DStringInit(&ds); + + if ((int) userdata == CHAT) { + Tcl_DStringAppend(&ds, word[3], strlen(word[3])); + Tcl_DStringAppend(&ds, "!*@", 3); + Tcl_DStringAppend(&ds, word[1], strlen(word[1])); + if (EvalInternalProc(proc_argv[1], 7, ds.string, word[2], xc[(int) userdata].event, word[4], "", proc_argv[0], "0") == TCL_ERROR) { + xchat_printf(ph, "\0039TCL plugin\003\tERROR (on %s %s) ", xc[(int) userdata].event, proc_argv[0]); + NiceErrorInfo (); + } + } else { + if (xc[(int) userdata].argc > 0) { + for (x = 0; x <= xc[(int) userdata].argc; x++) + Tcl_DStringAppendElement(&ds, word[x]); + } + if (EvalInternalProc(proc_argv[1], 7, "", "", xc[(int) userdata].event, "", ds.string, proc_argv[0], "0") == TCL_ERROR) { + xchat_printf(ph, "\0039Tcl plugin\003\tERROR (on %s %s) ", xc[(int) userdata].event, proc_argv[0]); + NiceErrorInfo (); + } + } + + Tcl_DStringFree(&ds); + + xchat_set_context(ph, origctx); + + Tcl_Free((char *) proc_argv); + + if ((complete[complete_level].result == XCHAT_EAT_PLUGIN) || (complete[complete_level].result == XCHAT_EAT_ALL)) + break; + + } + + Tcl_Free((char *) list_argv); + + } + } + + return complete[complete_level--].result; +} + + +static int tcl_timerexists(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + int x; + int timerid; + + BADARGS(2, 2, " schedid"); + + if (Tcl_GetInt(irp, argv[1], &timerid) != TCL_OK) { + Tcl_AppendResult(irp, "Invalid timer id", NULL); + return TCL_ERROR; + } + + if (timerid) { + for (x = 1; x < MAX_TIMERS; x++) { + if (timers[x].timerid == timerid) { + Tcl_AppendResult(irp, "1", NULL); + return TCL_OK; + } + } + } + + Tcl_AppendResult(irp, "0", NULL); + + return TCL_OK; +} + +static int tcl_killtimer(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + int x; + int timerid; + + BADARGS(2, 2, " timerid"); + + if (Tcl_GetInt(irp, argv[1], &timerid) != TCL_OK) { + Tcl_AppendResult(irp, "Invalid timer id", NULL); + return TCL_ERROR; + } + + if (timerid) { + for (x = 1; x < MAX_TIMERS; x++) { + if (timers[x].timerid == timerid) { + timers[x].timerid = 0; + if (timers[x].procPtr != NULL) { + DeleteInternalProc(timers[x].procPtr); + Tcl_Free(timers[x].procPtr); + } + timers[x].procPtr = NULL; + break; + } + } + } + + queue_nexttimer(); + + return TCL_OK; +} + +static int tcl_timers(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + int x; + Tcl_DString ds; + time_t now; + + BADARGS(1, 1, ""); + + now = time(NULL); + + Tcl_DStringInit(&ds); + + for (x = 1; x < MAX_TIMERS; x++) { + if (timers[x].timerid) { + Tcl_DStringStartSublist(&ds); + Tcl_DStringAppendElement(&ds, myitoa((long)timers[x].timerid)); + Tcl_DStringAppendElement(&ds, myitoa((long)timers[x].timestamp - now)); + Tcl_DStringAppendElement(&ds, timers[x].procPtr); + Tcl_DStringAppendElement(&ds, myitoa((long)timers[x].seconds)); + Tcl_DStringAppendElement(&ds, myitoa((long)timers[x].count)); + Tcl_DStringEndSublist(&ds); + } + } + + Tcl_AppendResult(interp, ds.string, NULL); + Tcl_DStringFree(&ds); + + return TCL_OK; +} + +static int tcl_timer(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + int seconds; + int timerid; + int repeat = 0; + int count = 0; + int first = 1; + char reply[32]; + + BADARGS(3, 6, " ?-repeat? ?-count times? seconds {script | procname ?args?}"); + + while (argc--) { + if (strcasecmp(argv[first], "-repeat") == 0) { + repeat++; + } else if (strcasecmp(argv[first], "-count") == 0) { + if (Tcl_GetInt(irp, argv[++first], &count) != TCL_OK) + return TCL_ERROR; + } else { + break; + } + first++; + } + + if (repeat && !count) + count = -1; + + if (!count) + count = 1; + + if (Tcl_GetInt(irp, argv[first++], &seconds) != TCL_OK) + return TCL_ERROR; + + if ((timerid = insert_timer(seconds, count, argv[first++])) == -1) { + Tcl_AppendResult(irp, "0", NULL); + return TCL_ERROR; + } + + sprintf(reply, "%d", timerid); + + Tcl_AppendResult(irp, reply, NULL); + + queue_nexttimer(); + + return TCL_OK; +} + +static int tcl_on(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + int newentry; + char *procList; + Tcl_HashEntry *entry; + char *token; + int dummy; + Tcl_DString ds; + int index; + int count; + int list_argc, proc_argc; + int id; + const char **list_argv, **proc_argv; + + BADARGS(4, 4, " token label {script | procname ?args?}"); + + id = (nextprocid++ % INT_MAX) + 1; + + if (SourceInternalProc(id, "_src _dest _cmd _rest _raw _label _private", argv[3]) == TCL_ERROR) { + xchat_printf(ph, "\0039Tcl plugin\003\tERROR (on %s:%s) ", argv[1], argv[2]); + NiceErrorInfo (); + return TCL_OK; + } + + token = StrDup(argv[1], &dummy); + Tcl_UtfToUpper(token); + + Tcl_DStringInit(&ds); + + entry = Tcl_CreateHashEntry(&cmdTablePtr, token, &newentry); + if (!newentry) { + procList = Tcl_GetHashValue(entry); + if (Tcl_SplitList(interp, procList, &list_argc, &list_argv) == TCL_OK) { + for (count = 0; count < list_argc; count++) { + if (Tcl_SplitList(interp, list_argv[count], &proc_argc, &proc_argv) != TCL_OK) + continue; + if (strcmp(proc_argv[0], argv[2])) { + Tcl_DStringStartSublist(&ds); + Tcl_DStringAppendElement(&ds, proc_argv[0]); + Tcl_DStringAppendElement(&ds, proc_argv[1]); + Tcl_DStringEndSublist(&ds); + } else { + DeleteInternalProc(proc_argv[1]); + } + Tcl_Free((char *) proc_argv); + } + Tcl_Free((char *) list_argv); + } + Tcl_Free(procList); + } + + Tcl_DStringStartSublist(&ds); + Tcl_DStringAppendElement(&ds, argv[2]); + Tcl_DStringAppendElement(&ds, InternalProcName(id)); + Tcl_DStringEndSublist(&ds); + + procList = StrDup(ds.string, &dummy); + + Tcl_SetHashValue(entry, procList); + + if ((strncmp(token, "XC_", 3) == 0) || (strcmp(token, "CHAT") == 0)) { + for (index = 0; index < XC_SIZE; index++) { + if (strcmp(xc[index].event, token) == 0) { + if (xc[index].hook == NULL) { + xc[index].hook = xchat_hook_print(ph, xc[index].emit, XCHAT_PRI_NORM, Print_Hook, (void *) index); + break; + } + } + } + } + + Tcl_Free(token); + Tcl_DStringFree(&ds); + + return TCL_OK; +} + +static int tcl_off(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + char *procList; + Tcl_HashEntry *entry; + char *token; + int dummy; + Tcl_DString ds; + int index; + int count; + int list_argc, proc_argc; + const char **list_argv, **proc_argv; + + BADARGS(2, 3, " token ?label?"); + + token = StrDup(argv[1], &dummy); + Tcl_UtfToUpper(token); + + Tcl_DStringInit(&ds); + + if ((entry = Tcl_FindHashEntry(&cmdTablePtr, token)) != NULL) { + + procList = Tcl_GetHashValue(entry); + + if (argc == 3) { + if (Tcl_SplitList(interp, procList, &list_argc, &list_argv) == TCL_OK) { + for (count = 0; count < list_argc; count++) { + if (Tcl_SplitList(interp, list_argv[count], &proc_argc, &proc_argv) != TCL_OK) + continue; + if (strcmp(proc_argv[0], argv[2])) { + Tcl_DStringStartSublist(&ds); + Tcl_DStringAppendElement(&ds, proc_argv[0]); + Tcl_DStringAppendElement(&ds, proc_argv[1]); + Tcl_DStringEndSublist(&ds); + } else + DeleteInternalProc(proc_argv[1]); + Tcl_Free((char *) proc_argv); + } + Tcl_Free((char *) list_argv); + } + } + + Tcl_Free(procList); + + if (ds.length) { + procList = StrDup(ds.string, &dummy); + Tcl_SetHashValue(entry, procList); + } else { + Tcl_DeleteHashEntry(entry); + } + + if (!ds.length) { + if ((strncmp(token, "XC_", 3) == 0) || (strcmp(token, "CHAT") == 0)) { + for (index = 0; index < XC_SIZE; index++) { + if (strcmp(xc[index].event, token) == 0) { + if (xc[index].hook != NULL) { + xchat_unhook(ph, xc[index].hook); + xc[index].hook = NULL; + break; + } + } + } + } + } + } + + Tcl_Free(token); + Tcl_DStringFree(&ds); + + return TCL_OK; +} + +static int tcl_alias(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + int newentry; + alias *aliasPtr; + Tcl_HashEntry *entry; + char *string; + const char *help = NULL; + int dummy; + int id; + + BADARGS(3, 4, " name ?help? {script | procname ?args?}"); + + string = StrDup(argv[1], &dummy); + Tcl_UtfToUpper(string); + + if (strlen(argv[argc - 1])) { + + if (argc == 4) + help = argv[2]; + + id = (nextprocid++ % INT_MAX) + 1; + + if (SourceInternalProc(id, "_cmd _rest", argv[argc - 1]) == TCL_ERROR) { + xchat_printf(ph, "\0039Tcl plugin\003\tERROR (alias %s) ", argv[1]); + NiceErrorInfo (); + return TCL_OK; + } + + entry = Tcl_CreateHashEntry(&aliasTablePtr, string, &newentry); + if (newentry) { + aliasPtr = (alias *) Tcl_Alloc(sizeof(alias)); + if (string[0] == '@') + aliasPtr->hook = NULL; + else + aliasPtr->hook = xchat_hook_command(ph, string, XCHAT_PRI_NORM, Command_Alias, help, 0); + } else { + aliasPtr = Tcl_GetHashValue(entry); + DeleteInternalProc(aliasPtr->procPtr); + Tcl_Free(aliasPtr->procPtr); + } + + aliasPtr->procPtr = StrDup(InternalProcName(id), &dummy); + + Tcl_SetHashValue(entry, aliasPtr); + + } else { + + if ((entry = Tcl_FindHashEntry(&aliasTablePtr, string)) != NULL) { + aliasPtr = Tcl_GetHashValue(entry); + DeleteInternalProc(aliasPtr->procPtr); + Tcl_Free(aliasPtr->procPtr); + if (aliasPtr->hook) + xchat_unhook(ph, aliasPtr->hook); + Tcl_Free((char *) aliasPtr); + Tcl_DeleteHashEntry(entry); + } + } + + Tcl_Free(string); + + return TCL_OK; +} + +static int tcl_complete(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + BADARGS(1, 2, " ?EAT_NONE|EAT_XCHAT|EAT_PLUGIN|EAT_ALL?"); + + if (argc == 2) { + if (Tcl_GetInt(irp, argv[1], &complete[complete_level].result) != TCL_OK) { + if (strcasecmp("EAT_NONE", argv[1]) == 0) + complete[complete_level].result = XCHAT_EAT_NONE; + else if (strcasecmp("EAT_XCHAT", argv[1]) == 0) + complete[complete_level].result = XCHAT_EAT_XCHAT; + else if (strcasecmp("EAT_PLUGIN", argv[1]) == 0) + complete[complete_level].result = XCHAT_EAT_PLUGIN; + else if (strcasecmp("EAT_ALL", argv[1]) == 0) + complete[complete_level].result = XCHAT_EAT_ALL; + else + BADARGS(1, 2, " ?EAT_NONE|EAT_XCHAT|EAT_PLUGIN|EAT_ALL?"); + } + } else + complete[complete_level].result = complete[complete_level].defresult; + + return TCL_RETURN; +} + +static int tcl_command(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + xchat_context *origctx; + xchat_context *ctx = NULL; + const char *string = NULL; + + BADARGS(2, 4, " ?server|network|context? ?#channel|nick? text"); + + origctx = xchat_get_context(ph); + + switch (argc) { + case 2: + ctx = origctx; + break; + case 3: + ctx = xchat_smart_context(argv[1], NULL); + break; + case 4: + ctx = xchat_smart_context(argv[1], argv[2]); + break; + default:; + } + + CHECKCTX(ctx); + + string = argv[argc - 1]; + + if (string[0] == '/') + string++; + + xchat_set_context(ph, ctx); + xchat_command(ph, string); + xchat_set_context(ph, origctx); + + return TCL_OK; +} + +static int tcl_raw(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + xchat_context *origctx; + xchat_context *ctx = NULL; + const char *string = NULL; + + BADARGS(2, 4, " ?server|network|context? ?#channel|nick? text"); + + origctx = xchat_get_context(ph); + + switch (argc) { + case 2: + ctx = origctx; + break; + case 3: + ctx = xchat_smart_context(argv[1], NULL); + break; + case 4: + ctx = xchat_smart_context(argv[1], argv[2]); + break; + default:; + } + + CHECKCTX(ctx); + + string = argv[argc - 1]; + + xchat_set_context(ph, ctx); + xchat_commandf(ph, "RAW %s", string); + xchat_set_context(ph, origctx); + + return TCL_OK; +} + + +static int tcl_prefs(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + int i; + const char *str; + + BADARGS(2, 2, " name"); + + switch (xchat_get_prefs (ph, argv[1], &str, &i)) { + case 1: + Tcl_AppendResult(irp, str, NULL); + break; + case 2: + case 3: + Tcl_AppendResult(irp, myitoa(i), NULL); + break; + default: + Tcl_AppendResult(irp, NULL); + } + + return TCL_OK; +} + +static int tcl_info(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[], char *id) +{ + char *result; + int max_argc; + xchat_context *origctx, *ctx; + + if (id == NULL) { + BADARGS(2, 3, " ?server|network|context? id"); + max_argc = 3; + } else { + BADARGS(1, 2, " ?server|network|context?"); + max_argc = 2; + } + + origctx = xchat_get_context(ph); + + if (argc == max_argc) { + ctx = xchat_smart_context(argv[1], NULL); + CHECKCTX(ctx); + xchat_set_context(ph, ctx); + } + + if (id == NULL) + id = argv[argc-1]; + + if ((result = xchat_get_info(ph, id)) == NULL) + result = ""; + + Tcl_AppendResult(irp, result, NULL); + + xchat_set_context(ph, origctx); + + return TCL_OK; +} + +static int tcl_me(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + return tcl_info(cd, irp, argc, argv, "nick"); +} + +static int tcl_getinfo(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + return tcl_info(cd, irp, argc, argv, NULL); +} + +static int tcl_getlist(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + xchat_list *list = NULL; + const char *name = NULL; + const char * const *fields; + const char *field; + const char *sattr; + int iattr; + int i; + time_t t; + Tcl_DString ds; + xchat_context *origctx; + xchat_context *ctx = NULL; + + origctx = xchat_get_context(ph); + + BADARGS(1, 2, " list"); + + Tcl_DStringInit(&ds); + + fields = xchat_list_fields(ph, "lists"); + + if (argc == 1) { + for (i = 0; fields[i] != NULL; i++) { + Tcl_DStringAppendElement(&ds, fields[i]); + } + goto done; + } + + for (i = 0; fields[i] != NULL; i++) { + if (strcmp(fields[i], argv[1]) == 0) { + name = fields[i]; + break; + } + } + + if (name == NULL) + goto done; + + list = xchat_list_get(ph, name); + if (list == NULL) + goto done; + + fields = xchat_list_fields(ph, name); + + Tcl_DStringStartSublist(&ds); + for (i = 0; fields[i] != NULL; i++) { + field = fields[i] + 1; + Tcl_DStringAppendElement(&ds, field); + } + Tcl_DStringEndSublist(&ds); + + while (xchat_list_next(ph, list)) { + + Tcl_DStringStartSublist(&ds); + + for (i = 0; fields[i] != NULL; i++) { + + field = fields[i] + 1; + + switch (fields[i][0]) { + case 's': + sattr = xchat_list_str(ph, list, (char *) field); + Tcl_DStringAppendElement(&ds, sattr); + break; + case 'i': + iattr = xchat_list_int(ph, list, (char *) field); + Tcl_DStringAppendElement(&ds, myitoa((long)iattr)); + break; + case 't': + t = xchat_list_time(ph, list, (char *) field); + Tcl_DStringAppendElement(&ds, myitoa((long)t)); + break; + case 'p': + sattr = xchat_list_str(ph, list, (char *) field); + if (strcmp(field, "context") == 0) { + ctx = (xchat_context *) sattr; + Tcl_DStringAppendElement(&ds, myitoa((long)ctx)); + } else + Tcl_DStringAppendElement(&ds, "*"); + break; + default: + Tcl_DStringAppendElement(&ds, "*"); + break; + } + } + + Tcl_DStringEndSublist(&ds); + + } + + xchat_list_free(ph, list); + + done: + + xchat_set_context(ph, origctx); + + Tcl_AppendResult(irp, ds.string, NULL); + + Tcl_DStringFree(&ds); + + return TCL_OK; +} + +/* + * tcl_xchat_puts - stub for tcl puts command + * This is modified from the original internal "puts" command. It redirects + * stdout to the current context, while still allowing all normal puts features + */ + +static int tcl_xchat_puts(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + Tcl_Channel chan; + const char *string; + int newline; + const char *channelId = NULL; + int result; + int mode; + int trap_stdout = 0; + + switch (argc) { + + case 2: + string = argv[1]; + newline = 1; + trap_stdout = 1; + break; + + case 3: + if (strcmp(argv[1], "-nonewline") == 0) { + newline = 0; + trap_stdout = 1; + } else { + newline = 1; + channelId = argv[1]; + } + string = argv[2]; + break; + + case 4: + if (strcmp(argv[1], "-nonewline") == 0) { + channelId = argv[2]; + string = argv[3]; + } else { + if (strcmp(argv[3], "nonewline") != 0) { + Tcl_AppendResult(interp, "bad argument \"", argv[3], "\": should be \"nonewline\"", (char *) NULL); + return TCL_ERROR; + } + channelId = argv[1]; + string = argv[2]; + } + newline = 0; + break; + + default: + Tcl_AppendResult(interp, argv, "?-nonewline? ?channelId? string", NULL); + return TCL_ERROR; + } + + if (!trap_stdout && (strcmp(channelId, "stdout") == 0)) + trap_stdout = 1; + + if (trap_stdout) { + if (newline) + xchat_printf(ph, "%s\n", string); + else + xchat_print(ph, string); + return TCL_OK; + } + + chan = Tcl_GetChannel(interp, channelId, &mode); + if (chan == (Tcl_Channel) NULL) { + return TCL_ERROR; + } + if ((mode & TCL_WRITABLE) == 0) { + Tcl_AppendResult(interp, "channel \"", channelId, "\" wasn't opened for writing", (char *) NULL); + return TCL_ERROR; + } + + result = Tcl_Write(chan, string, strlen(string)); + if (result < 0) { + goto error; + } + if (newline != 0) { + result = Tcl_WriteChars(chan, "\n", 1); + if (result < 0) { + goto error; + } + } + return TCL_OK; + + error: + Tcl_AppendResult(interp, "error writing \"", channelId, "\": ", Tcl_PosixError(interp), (char *) NULL); + + return TCL_ERROR; +} + +static int tcl_print(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + xchat_context *origctx; + xchat_context *ctx = NULL; + const char *string = NULL; + + BADARGS(2, 4, " ?server|network|context? ?#channel|nick? text"); + + origctx = xchat_get_context(ph); + + switch (argc) { + case 2: + ctx = origctx; + break; + case 3: + ctx = xchat_smart_context(argv[1], NULL); + break; + case 4: + ctx = xchat_smart_context(argv[1], argv[2]); + break; + default:; + } + + CHECKCTX(ctx); + + string = argv[argc - 1]; + + xchat_set_context(ph, ctx); + xchat_print(ph, string); + xchat_set_context(ph, origctx); + + return TCL_OK; +} + +static int tcl_setcontext(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + xchat_context *ctx = NULL; + + BADARGS(2, 2, " context"); + + ctx = xchat_smart_context(argv[1], NULL); + + CHECKCTX(ctx); + + xchat_set_context(ph, ctx); + + return TCL_OK; +} + +static int tcl_findcontext(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + xchat_context *ctx = NULL; + + BADARGS(1, 3, " ?server|network|context? ?channel?"); + + switch (argc) { + case 1: + ctx = xchat_find_context(ph, NULL, NULL); + break; + case 2: + ctx = xchat_smart_context(argv[1], NULL); + break; + case 3: + ctx = xchat_smart_context(argv[1], argv[2]); + break; + default:; + } + + CHECKCTX(ctx); + + Tcl_AppendResult(irp, myitoa((long)ctx), NULL); + + return TCL_OK; +} + +static int tcl_getcontext(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + xchat_context *ctx = NULL; + + BADARGS(1, 1, ""); + + ctx = xchat_get_context(ph); + + Tcl_AppendResult(irp, myitoa((long)ctx), NULL); + + return TCL_OK; +} + +static int tcl_channels(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + const char *server, *channel; + xchat_list *list; + Tcl_DString ds; + xchat_context *origctx; + xchat_context *ctx; + + origctx = xchat_get_context(ph); + + BADARGS(1, 2, " ?server|network|context?"); + + if (argc == 2) { + ctx = xchat_smart_context(argv[1], NULL); + CHECKCTX(ctx); + xchat_set_context(ph, ctx); + } + + server = (char *) xchat_get_info(ph, "server"); + + Tcl_DStringInit(&ds); + + list = xchat_list_get(ph, "channels"); + + if (list != NULL) { + while (xchat_list_next(ph, list)) { + if (xchat_list_int(ph, list, "type") != 2) + continue; + if (strcasecmp(server, xchat_list_str(ph, list, "server")) != 0) + continue; + channel = xchat_list_str(ph, list, "channel"); + Tcl_DStringAppendElement(&ds, channel); + } + xchat_list_free(ph, list); + } + + Tcl_AppendResult(irp, ds.string, NULL); + + Tcl_DStringFree(&ds); + + xchat_set_context(ph, origctx); + + return TCL_OK; +} + +static int tcl_servers(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + const char *server; + xchat_list *list; + Tcl_DString ds; + + BADARGS(1, 1, ""); + + Tcl_DStringInit(&ds); + + list = xchat_list_get(ph, "channels"); + + if (list != NULL) { + while (xchat_list_next(ph, list)) { + if (xchat_list_int(ph, list, "type") == 1) { + server = xchat_list_str(ph, list, "server"); + Tcl_DStringAppendElement(&ds, server); + } + } + xchat_list_free(ph, list); + } + + Tcl_AppendResult(irp, ds.string, NULL); + + Tcl_DStringFree(&ds); + + return TCL_OK; +} + +static int tcl_queries(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + const char *server, *channel; + xchat_list *list; + Tcl_DString ds; + xchat_context *origctx; + xchat_context *ctx; + + origctx = xchat_get_context(ph); + + BADARGS(1, 2, " ?server|network|context?"); + + if (argc == 2) { + ctx = xchat_smart_context(argv[1], NULL); + CHECKCTX(ctx); + xchat_set_context(ph, ctx); + } + + server = (char *) xchat_get_info(ph, "server"); + + Tcl_DStringInit(&ds); + + list = xchat_list_get(ph, "channels"); + + if (list != NULL) { + while (xchat_list_next(ph, list)) { + if (xchat_list_int(ph, list, "type") != 3) + continue; + if (strcasecmp(server, xchat_list_str(ph, list, "server")) != 0) + continue; + channel = xchat_list_str(ph, list, "channel"); + Tcl_DStringAppendElement(&ds, channel); + } + xchat_list_free(ph, list); + } + + Tcl_AppendResult(irp, ds.string, NULL); + + Tcl_DStringFree(&ds); + + xchat_set_context(ph, origctx); + + return TCL_OK; +} + +static int tcl_users(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + xchat_context *origctx, *ctx = NULL; + xchat_list *list; + Tcl_DString ds; + + BADARGS(1, 3, " ?server|network|context? ?channel?"); + + origctx = xchat_get_context(ph); + + switch (argc) { + case 1: + ctx = origctx; + break; + case 2: + ctx = xchat_smart_context(argv[1], NULL); + break; + case 3: + ctx = xchat_smart_context(argv[1], argv[2]); + break; + default:; + } + + CHECKCTX(ctx); + + xchat_set_context(ph, ctx); + + Tcl_DStringInit(&ds); + + list = xchat_list_get(ph, "users"); + + if (list != NULL) { + + Tcl_DStringStartSublist(&ds); + Tcl_DStringAppendElement(&ds, "nick"); + Tcl_DStringAppendElement(&ds, "host"); + Tcl_DStringAppendElement(&ds, "prefix"); + Tcl_DStringAppendElement(&ds, "away"); + Tcl_DStringAppendElement(&ds, "lasttalk"); + Tcl_DStringAppendElement(&ds, "selected"); + Tcl_DStringEndSublist(&ds); + + while (xchat_list_next(ph, list)) { + Tcl_DStringStartSublist(&ds); + Tcl_DStringAppendElement(&ds, (const char *) xchat_list_str(ph, list, "nick")); + Tcl_DStringAppendElement(&ds, (const char *) xchat_list_str(ph, list, "host")); + Tcl_DStringAppendElement(&ds, (const char *) xchat_list_str(ph, list, "prefix")); + Tcl_DStringAppendElement(&ds, myitoa((long)xchat_list_int(ph, list, "away"))); + Tcl_DStringAppendElement(&ds, myitoa((long)xchat_list_time(ph, list, "lasttalk"))); + Tcl_DStringAppendElement(&ds, myitoa((long)xchat_list_int(ph, list, "selected"))); + Tcl_DStringEndSublist(&ds); + } + + xchat_list_free(ph, list); + } + + Tcl_AppendResult(irp, ds.string, NULL); + + Tcl_DStringFree(&ds); + + xchat_set_context(ph, origctx); + + return TCL_OK; +} + +static int tcl_notifylist(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + xchat_list *list; + Tcl_DString ds; + + BADARGS(1, 1, ""); + + Tcl_DStringInit(&ds); + + list = xchat_list_get(ph, "notify"); + + if (list != NULL) { + + Tcl_DStringStartSublist(&ds); + Tcl_DStringAppendElement(&ds, "nick"); + Tcl_DStringAppendElement(&ds, "flags"); + Tcl_DStringAppendElement(&ds, "on"); + Tcl_DStringAppendElement(&ds, "off"); + Tcl_DStringAppendElement(&ds, "seen"); + Tcl_DStringAppendElement(&ds, "networks"); + Tcl_DStringEndSublist(&ds); + + while (xchat_list_next(ph, list)) { + Tcl_DStringStartSublist(&ds); + Tcl_DStringAppendElement(&ds, (const char *) xchat_list_str(ph, list, "nick")); + Tcl_DStringAppendElement(&ds, (const char *) xchat_list_str(ph, list, "flags")); + Tcl_DStringAppendElement(&ds, myitoa((long)xchat_list_time(ph, list, "on"))); + Tcl_DStringAppendElement(&ds, myitoa((long)xchat_list_time(ph, list, "off"))); + Tcl_DStringAppendElement(&ds, myitoa((long)xchat_list_time(ph, list, "seen"))); + Tcl_DStringAppendElement(&ds, (const char *) xchat_list_str(ph, list, "networks")); + Tcl_DStringEndSublist(&ds); + } + + xchat_list_free(ph, list); + + } + + Tcl_AppendResult(irp, ds.string, NULL); + + Tcl_DStringFree(&ds); + + return TCL_OK; +} + +static int tcl_chats(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + xchat_list *list; + Tcl_DString ds; + + BADARGS(1, 1, ""); + + Tcl_DStringInit(&ds); + + list = xchat_list_get(ph, "dcc"); + + if (list != NULL) { + while (xchat_list_next(ph, list)) { + switch (xchat_list_int(ph, list, "type")) { + case 2: + case 3: + if (xchat_list_int(ph, list, "status") == 1) + Tcl_DStringAppendElement(&ds, (const char *) xchat_list_str(ph, list, "nick")); + break; + } + } + xchat_list_free(ph, list); + } + + Tcl_AppendResult(irp, ds.string, NULL); + + Tcl_DStringFree(&ds); + + return TCL_OK; +} + +static int tcl_ignores(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + xchat_list *list; + Tcl_DString ds; + int flags; + + BADARGS(1, 1, ""); + + Tcl_DStringInit(&ds); + + list = xchat_list_get(ph, "ignore"); + + if (list != NULL) { + + while (xchat_list_next(ph, list)) { + Tcl_DStringStartSublist(&ds); + Tcl_DStringAppendElement(&ds, (const char *) xchat_list_str(ph, list, "mask")); + Tcl_DStringStartSublist(&ds); + flags = xchat_list_int(ph, list, "flags"); + if (flags & 1) + Tcl_DStringAppendElement(&ds, "PRIVMSG"); + if (flags & 2) + Tcl_DStringAppendElement(&ds, "NOTICE"); + if (flags & 4) + Tcl_DStringAppendElement(&ds, "CHANNEL"); + if (flags & 8) + Tcl_DStringAppendElement(&ds, "CTCP"); + if (flags & 16) + Tcl_DStringAppendElement(&ds, "INVITE"); + if (flags & 32) + Tcl_DStringAppendElement(&ds, "UNIGNORE"); + if (flags & 64) + Tcl_DStringAppendElement(&ds, "NOSAVE"); + Tcl_DStringEndSublist(&ds); + Tcl_DStringEndSublist(&ds); + } + xchat_list_free(ph, list); + } + + Tcl_AppendResult(irp, ds.string, NULL); + + Tcl_DStringFree(&ds); + + return TCL_OK; +} + +static int tcl_dcclist(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + xchat_list *list; + Tcl_DString ds; + int dcctype; + + BADARGS(1, 1, ""); + + Tcl_DStringInit(&ds); + + list = xchat_list_get(ph, "dcc"); + + if (list != NULL) { + + while (xchat_list_next(ph, list)) { + Tcl_DStringStartSublist(&ds); + dcctype = xchat_list_int(ph, list, "type"); + switch (dcctype) { + case 0: + Tcl_DStringAppendElement(&ds, "filesend"); + break; + case 1: + Tcl_DStringAppendElement(&ds, "filerecv"); + break; + case 2: + Tcl_DStringAppendElement(&ds, "chatrecv"); + break; + case 3: + Tcl_DStringAppendElement(&ds, "chatsend"); + break; + } + switch (xchat_list_int(ph, list, "status")) { + case 0: + Tcl_DStringAppendElement(&ds, "queued"); + break; + case 1: + Tcl_DStringAppendElement(&ds, "active"); + break; + case 2: + Tcl_DStringAppendElement(&ds, "failed"); + break; + case 3: + Tcl_DStringAppendElement(&ds, "done"); + break; + case 4: + Tcl_DStringAppendElement(&ds, "connecting"); + break; + case 5: + Tcl_DStringAppendElement(&ds, "aborted"); + break; + } + + Tcl_DStringAppendElement(&ds, (const char *) xchat_list_str(ph, list, "nick")); + + switch (dcctype) { + case 0: + Tcl_DStringAppendElement(&ds, (const char *) xchat_list_str(ph, list, "file")); + break; + case 1: + Tcl_DStringAppendElement(&ds, (const char *) xchat_list_str(ph, list, "destfile")); + break; + } + + Tcl_DStringAppendElement(&ds, myitoa((long)xchat_list_int(ph, list, "size"))); + Tcl_DStringAppendElement(&ds, myitoa((long)xchat_list_int(ph, list, "resume"))); + Tcl_DStringAppendElement(&ds, myitoa((long)xchat_list_int(ph, list, "pos"))); + Tcl_DStringAppendElement(&ds, myitoa((long)xchat_list_int(ph, list, "cps"))); + Tcl_DStringAppendElement(&ds, myitoa((long)xchat_list_int(ph, list, "address32"))); + Tcl_DStringAppendElement(&ds, myitoa((long)xchat_list_int(ph, list, "port"))); + Tcl_DStringEndSublist(&ds); + } + xchat_list_free(ph, list); + } + + Tcl_AppendResult(irp, ds.string, NULL); + + Tcl_DStringFree(&ds); + + return TCL_OK; +} + + +static int tcl_strip(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + char *new_text; + int flags = 1 | 2; + + BADARGS(2, 3, " text ?flags?"); + + if (argc == 3) { + if (Tcl_GetInt(irp, argv[2], &flags) != TCL_OK) + return TCL_ERROR; + } + + new_text = xchat_strip(ph, argv[1], -1, flags); + + if(new_text) { + Tcl_AppendResult(irp, new_text, NULL); + xchat_free(ph, new_text); + } + + return TCL_OK; +} + +static int tcl_topic(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + xchat_context *origctx, *ctx = NULL; + BADARGS(1, 3, " ?server|network|context? ?channel?"); + + origctx = xchat_get_context(ph); + + switch (argc) { + case 1: + ctx = origctx; + break; + case 2: + ctx = xchat_smart_context(argv[1], NULL); + break; + case 3: + ctx = xchat_smart_context(argv[1], argv[2]); + break; + default:; + } + + CHECKCTX(ctx); + + xchat_set_context(ph, ctx); + Tcl_AppendResult(irp, xchat_get_info(ph, "topic"), NULL); + xchat_set_context(ph, origctx); + + return TCL_OK; +} + +static int tcl_xchat_nickcmp(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + BADARGS(3, 3, " string1 string2"); + Tcl_AppendResult(irp, myitoa((long)xchat_nickcmp(ph, argv[1], argv[2])), NULL); + return TCL_OK; +} + +static int tcl_word(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + int index; + + BADARGS(2, 2, " index"); + + if (Tcl_GetInt(irp, argv[1], &index) != TCL_OK) + return TCL_ERROR; + + if (!index || (index > 31)) + Tcl_AppendResult(interp, "", NULL); + else + Tcl_AppendResult(interp, complete[complete_level].word[index], NULL); + + return TCL_OK; +} + +static int tcl_word_eol(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]) +{ + int index; + + BADARGS(2, 2, " index"); + + if (Tcl_GetInt(irp, argv[1], &index) != TCL_OK) + return TCL_ERROR; + + if (!index || (index > 31)) + Tcl_AppendResult(interp, "", NULL); + else + Tcl_AppendResult(interp, complete[complete_level].word_eol[index], NULL); + + return TCL_OK; +} + +static int Command_Alias(char *word[], char *word_eol[], void *userdata) +{ + alias *aliasPtr; + Tcl_HashEntry *entry; + xchat_context *origctx; + int dummy; + char *string; + + if (complete_level == MAX_COMPLETES) + return XCHAT_EAT_NONE; + + complete_level++; + complete[complete_level].defresult = XCHAT_EAT_ALL; + complete[complete_level].result = XCHAT_EAT_NONE; + complete[complete_level].word = word; + complete[complete_level].word_eol = word_eol; + + string = StrDup(word[1], &dummy); + + Tcl_UtfToUpper(string); + + if ((entry = Tcl_FindHashEntry(&aliasTablePtr, string)) != NULL) { + aliasPtr = Tcl_GetHashValue(entry); + origctx = xchat_get_context(ph); + if (EvalInternalProc(aliasPtr->procPtr, 2, string, word_eol[2]) == TCL_ERROR) { + xchat_printf(ph, "\0039Tcl plugin\003\tERROR (alias %s) ", string); + NiceErrorInfo (); + } + xchat_set_context(ph, origctx); + } + + Tcl_Free(string); + + return complete[complete_level--].result; +} + +static int Null_Command_Alias(char *word[], char *word_eol[], void *userdata) +{ + alias *aliasPtr; + Tcl_HashEntry *entry; + xchat_context *origctx; + int dummy; + const char *channel; + char *string; + Tcl_DString ds; + static int recurse = 0; + + if (recurse) + return XCHAT_EAT_NONE; + + if (complete_level == MAX_COMPLETES) + return XCHAT_EAT_NONE; + + complete_level++; + complete[complete_level].defresult = XCHAT_EAT_ALL; + complete[complete_level].result = XCHAT_EAT_NONE; + complete[complete_level].word = word; + complete[complete_level].word_eol = word_eol; + + recurse++; + + channel = xchat_get_info(ph, "channel"); + Tcl_DStringInit(&ds); + Tcl_DStringAppend(&ds, "@", 1); + Tcl_DStringAppend(&ds, channel, strlen(channel)); + string = StrDup(ds.string, &dummy); + Tcl_DStringFree(&ds); + + Tcl_UtfToUpper(string); + + if ((entry = Tcl_FindHashEntry(&aliasTablePtr, string)) != NULL) { + aliasPtr = Tcl_GetHashValue(entry); + origctx = xchat_get_context(ph); + if (EvalInternalProc(aliasPtr->procPtr, 2, string, word_eol[1]) == TCL_ERROR) { + xchat_printf(ph, "\0039Tcl plugin\003\tERROR (alias %s) ", string); + NiceErrorInfo (); + } + xchat_set_context(ph, origctx); + } + + Tcl_Free(string); + + recurse--; + + return complete[complete_level--].result; +} + +static int Command_TCL(char *word[], char *word_eol[], void *userdata) +{ + const char *errorInfo; + + complete_level++; + complete[complete_level].word = word; + complete[complete_level].word_eol = word_eol; + + if (Tcl_Eval(interp, word_eol[2]) == TCL_ERROR) { + errorInfo = Tcl_GetVar(interp, "errorInfo", TCL_GLOBAL_ONLY); + xchat_printf(ph, "\0039Tcl plugin\003\tERROR: %s ", errorInfo); + } else + xchat_printf(ph, "\0039Tcl plugin\003\tRESULT: %s ", Tcl_GetStringResult(interp)); + + complete_level--; + + return XCHAT_EAT_ALL; +} + +static int Command_Source(char *word[], char *word_eol[], void *userdata) +{ + const char *xchatdir; + Tcl_DString ds; + struct stat dummy; + int len; + const char *errorInfo; + + if (!strlen(word_eol[2])) + return XCHAT_EAT_NONE; + + complete_level++; + complete[complete_level].word = word; + complete[complete_level].word_eol = word_eol; + + len = strlen(word[2]); + + if (len > 4 && strcasecmp(".tcl", word[2] + len - 4) == 0) { + + xchatdir = xchat_get_info(ph, "xchatdir"); + + Tcl_DStringInit(&ds); + + if (stat(word_eol[2], &dummy) == 0) { + Tcl_DStringAppend(&ds, word_eol[2], strlen(word_eol[2])); + } else { + if (!strchr(word_eol[2], '/')) { + Tcl_DStringAppend(&ds, xchatdir, strlen(xchatdir)); + Tcl_DStringAppend(&ds, "/", 1); + Tcl_DStringAppend(&ds, word_eol[2], strlen(word_eol[2])); + } + } + + if (Tcl_EvalFile(interp, ds.string) == TCL_ERROR) { + errorInfo = Tcl_GetVar(interp, "errorInfo", TCL_GLOBAL_ONLY); + xchat_printf(ph, "\0039Tcl plugin\003\tERROR: %s ", errorInfo); + } else + xchat_printf(ph, "\0039Tcl plugin\003\tSourced %s\n", ds.string); + + Tcl_DStringFree(&ds); + + complete_level--; + + return XCHAT_EAT_XCHAT; + + } else { + complete_level--; + return XCHAT_EAT_NONE; + } + +} + +static int Command_Reloadall(char *word[], char *word_eol[], void *userdata) +{ + Tcl_Plugin_DeInit(); + Tcl_Plugin_Init(); + + xchat_print(ph, "\0039Tcl plugin\003\tRehashed\n"); + + return XCHAT_EAT_ALL; +} + +static int TCL_Event_Handler(void *userdata) +{ + Tcl_DoOneEvent(TCL_DONT_WAIT); + do_timer(); + return 1; +} + +static void Tcl_Plugin_Init() +{ + int x; + const char *xchatdir; + + interp = Tcl_CreateInterp(); + + Tcl_FindExecutable(NULL); + + Tcl_Init(interp); + + nextprocid = 0x1000; + + Tcl_CreateCommand(interp, "alias", tcl_alias, NULL, NULL); + Tcl_CreateCommand(interp, "channels", tcl_channels, NULL, NULL); + Tcl_CreateCommand(interp, "chats", tcl_chats, NULL, NULL); + Tcl_CreateCommand(interp, "command", tcl_command, NULL, NULL); + Tcl_CreateCommand(interp, "complete", tcl_complete, NULL, NULL); + Tcl_CreateCommand(interp, "dcclist", tcl_dcclist, NULL, NULL); + Tcl_CreateCommand(interp, "notifylist", tcl_notifylist, NULL, NULL); + Tcl_CreateCommand(interp, "findcontext", tcl_findcontext, NULL, NULL); + Tcl_CreateCommand(interp, "getcontext", tcl_getcontext, NULL, NULL); + Tcl_CreateCommand(interp, "getinfo", tcl_getinfo, NULL, NULL); + Tcl_CreateCommand(interp, "getlist", tcl_getlist, NULL, NULL); + Tcl_CreateCommand(interp, "ignores", tcl_ignores, NULL, NULL); + Tcl_CreateCommand(interp, "killtimer", tcl_killtimer, NULL, NULL); + Tcl_CreateCommand(interp, "me", tcl_me, NULL, NULL); + Tcl_CreateCommand(interp, "on", tcl_on, NULL, NULL); + Tcl_CreateCommand(interp, "off", tcl_off, NULL, NULL); + Tcl_CreateCommand(interp, "nickcmp", tcl_xchat_nickcmp, NULL, NULL); + Tcl_CreateCommand(interp, "print", tcl_print, NULL, NULL); + Tcl_CreateCommand(interp, "prefs", tcl_prefs, NULL, NULL); + Tcl_CreateCommand(interp, "::puts", tcl_xchat_puts, NULL, NULL); + Tcl_CreateCommand(interp, "queries", tcl_queries, NULL, NULL); + Tcl_CreateCommand(interp, "raw", tcl_raw, NULL, NULL); + Tcl_CreateCommand(interp, "servers", tcl_servers, NULL, NULL); + Tcl_CreateCommand(interp, "setcontext", tcl_setcontext, NULL, NULL); + Tcl_CreateCommand(interp, "strip", tcl_strip, NULL, NULL); + Tcl_CreateCommand(interp, "timer", tcl_timer, NULL, NULL); + Tcl_CreateCommand(interp, "timerexists", tcl_timerexists, NULL, NULL); + Tcl_CreateCommand(interp, "timers", tcl_timers, NULL, NULL); + Tcl_CreateCommand(interp, "topic", tcl_topic, NULL, NULL); + Tcl_CreateCommand(interp, "users", tcl_users, NULL, NULL); + Tcl_CreateCommand(interp, "word", tcl_word, NULL, NULL); + Tcl_CreateCommand(interp, "word_eol", tcl_word_eol, NULL, NULL); + + Tcl_InitHashTable(&cmdTablePtr, TCL_STRING_KEYS); + Tcl_InitHashTable(&aliasTablePtr, TCL_STRING_KEYS); + + bzero(timers, sizeof(timers)); + nexttimerid = 0; + nexttimerindex = 0; + + for (x = 0; x < XC_SIZE; x++) + xc[x].hook = NULL; + + xchatdir = xchat_get_info(ph, "xchatdir"); + + if (Tcl_Eval(interp, unknown) == TCL_ERROR) { + xchat_printf(ph, "Error sourcing internal 'unknown' (%s)\n", Tcl_GetStringResult(interp)); + } + + if (Tcl_Eval(interp, inlinetcl) == TCL_ERROR) { + xchat_printf(ph, "Error sourcing internal 'inlinetcl' (%s)\n", Tcl_GetStringResult(interp)); + } + + if (Tcl_Eval(interp, sourcedirs) == TCL_ERROR) { + xchat_printf(ph, "Error sourcing internal 'sourcedirs' (%s)\n", Tcl_GetStringResult(interp)); + } + +} + +static void Tcl_Plugin_DeInit() +{ + int x; + char *procPtr; + alias *aliasPtr; + Tcl_HashEntry *entry; + Tcl_HashSearch search; + + /* Be sure to free all the memory for ON and ALIAS entries */ + + entry = Tcl_FirstHashEntry(&cmdTablePtr, &search); + while (entry != NULL) { + procPtr = Tcl_GetHashValue(entry); + Tcl_Free(procPtr); + entry = Tcl_NextHashEntry(&search); + } + + Tcl_DeleteHashTable(&cmdTablePtr); + + entry = Tcl_FirstHashEntry(&aliasTablePtr, &search); + while (entry != NULL) { + aliasPtr = Tcl_GetHashValue(entry); + Tcl_Free(aliasPtr->procPtr); + if (aliasPtr->hook) + xchat_unhook(ph, aliasPtr->hook); + Tcl_Free((char *) aliasPtr); + entry = Tcl_NextHashEntry(&search); + } + + Tcl_DeleteHashTable(&aliasTablePtr); + + for (x = 1; x < MAX_TIMERS; x++) { + if (timers[x].timerid) { + timers[x].timerid = 0; + if (timers[x].procPtr != NULL) + Tcl_Free(timers[x].procPtr); + timers[x].procPtr = NULL; + break; + } + } + + for (x = 0; x < XC_SIZE; x++) { + if (xc[x].hook != NULL) { + xchat_unhook(ph, xc[x].hook); + xc[x].hook = NULL; + } + } + + Tcl_DeleteInterp(interp); +} + +static void banner() +{ + xchat_printf(ph, "Tcl plugin for XChat - Version %s\n", VERSION); + xchat_print(ph, "Copyright 2002-2005 Daniel P. Stasinski\n"); + xchat_print(ph, "http://www.scriptkitties.com/tclplugin/\n"); +} + +int xchat_plugin_init(xchat_plugin * plugin_handle, char **plugin_name, char **plugin_desc, char **plugin_version, char *arg) +{ +#ifdef WIN32 + HINSTANCE lib; +#endif + + strncpy(VERSION, &RCSID[19], 5); + + ph = plugin_handle; + +#ifdef WIN32 + lib = LoadLibraryA(TCL_DLL); + if (!lib) { + xchat_print(ph, "You must have ActiveTCL installed in order to run Tcl scripts.\n" "http://aspn.activestate.com/ASPN/Tcl/\n" "Make sure Tcl's bin directory is in your PATH.\n\n"); + return 0; + } + FreeLibrary(lib); +#endif + + if (initialized != 0) { + banner(); + xchat_print(ph, "Tcl plugin already loaded"); + reinit_tried++; + return 0; + } + initialized = 1; + + *plugin_name = "Tcl"; + *plugin_desc = "Tcl scripting interface"; + *plugin_version = VERSION; + + Tcl_Plugin_Init(); + + raw_line_hook = xchat_hook_server(ph, "RAW LINE", XCHAT_PRI_NORM, Server_raw_line, NULL); + Command_TCL_hook = xchat_hook_command(ph, "tcl", XCHAT_PRI_NORM, Command_TCL, 0, 0); + Command_Source_hook = xchat_hook_command(ph, "source", XCHAT_PRI_NORM, Command_Source, 0, 0); + Command_Reload_hook = xchat_hook_command(ph, "reloadall", XCHAT_PRI_NORM, Command_Reloadall, 0, 0); + Command_Load_hook = xchat_hook_command(ph, "LOAD", XCHAT_PRI_NORM, Command_Source, 0, 0); + Event_Handler_hook = xchat_hook_timer(ph, 100, TCL_Event_Handler, 0); + Null_Command_hook = xchat_hook_command(ph, "", XCHAT_PRI_NORM, Null_Command_Alias, "", 0); + + banner(); + xchat_print(ph, "Tcl interface loaded\n"); + + return 1; /* return 1 for success */ +} + +int xchat_plugin_deinit() +{ + if (reinit_tried) { + reinit_tried--; + return 1; + } + + xchat_unhook(ph, raw_line_hook); + xchat_unhook(ph, Command_TCL_hook); + xchat_unhook(ph, Command_Source_hook); + xchat_unhook(ph, Command_Reload_hook); + xchat_unhook(ph, Command_Load_hook); + xchat_unhook(ph, Event_Handler_hook); + xchat_unhook(ph, Null_Command_hook); + + Tcl_Plugin_DeInit(); + + xchat_print(ph, "Tcl interface unloaded\n"); + initialized = 0; + + return 1; +} + +void xchat_plugin_get_info(char **name, char **desc, char **version, void **reserved) +{ + strncpy(VERSION, &RCSID[19], 5); + *name = "tclplugin"; + *desc = "Tcl plugin for XChat"; + *version = VERSION; + if (reserved) + *reserved = NULL; +} + diff --git a/xchat-2.8.8/plugins/tcl/tclplugin.h b/xchat-2.8.8/plugins/tcl/tclplugin.h new file mode 100755 index 0000000..075c28f --- /dev/null +++ b/xchat-2.8.8/plugins/tcl/tclplugin.h @@ -0,0 +1,98 @@ +/*************************************************************************** + tclplugin.h - TCL plugin header file + ------------------------------------------------- + begin : Sat Nov 9 17:31:20 MST 2002 + copyright : Copyright 2002-2010 Daniel P. Stasinski + email : daniel@avenues.org + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#define BADARGS(nl,nh,example) \ + if ((argc<(nl)) || (argc>(nh))) { \ + Tcl_AppendResult(irp,"wrong # args: should be \"",argv[0], \ + (example),"\"",NULL); \ + return TCL_ERROR; \ + } + +#define CHECKCTX(ctx) \ + if (ctx == NULL) { \ + Tcl_AppendResult(irp, "No such server/channel/nick", NULL); \ + return TCL_ERROR; \ + } + +typedef struct { + char *procPtr; + xchat_hook *hook; +} alias; + +typedef struct { + int timerid; + time_t timestamp; + char *procPtr; + int count; + int seconds; +} timer; + +typedef struct { + int result; + int defresult; + char **word; + char **word_eol; +} t_complete; + +#define MAX_TIMERS 512 +#define MAX_COMPLETES 128 + +static char *StrDup(const char *string, int *length); +static char *myitoa(long value); +static xchat_context *xchat_smart_context(const char *arg1, const char *arg2); +static void queue_nexttimer(); +static int insert_timer(int seconds, int count, const char *script); +static void do_timer(); +static int Server_raw_line(char *word[], char *word_eol[], void *userdata); +static int Print_Hook(char *word[], void *userdata); +static int tcl_timerexists(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_killtimer(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_timers(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_timer(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_on(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_off(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_alias(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_complete(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_raw(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_command(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_xchat_puts(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_print(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_channels(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_servers(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_queries(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_users(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_chats(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_ignores(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_dcclist(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_me(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_xchat_nickcmp(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_strip(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_topic(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_word(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_word_eol(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int tcl_notifylist(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]); +static int Command_Alias(char *word[], char *word_eol[], void *userdata); +static int Null_Command_Alias(char *word[], char *word_eol[], void *userdata); +static int Command_TCL(char *word[], char *word_eol[], void *userdata); +static int Command_Source(char *word[], char *word_eol[], void *userdata); +static int Command_Reload(char *word[], char *word_eol[], void *userdata); +static int TCL_Event_Handler(void *userdata); +static void Tcl_Plugin_Init(); +static void Tcl_Plugin_DeInit(); +static void banner(); +int xchat_plugin_init(xchat_plugin * plugin_handle, char **plugin_name, char **plugin_desc, char **plugin_version, char *arg); +int xchat_plugin_deinit(); diff --git a/xchat-2.8.8/plugins/xchat-plugin.h b/xchat-2.8.8/plugins/xchat-plugin.h new file mode 100644 index 0000000..30b1929 --- /dev/null +++ b/xchat-2.8.8/plugins/xchat-plugin.h @@ -0,0 +1,334 @@ +/* You can distribute this header with your plugins for easy compilation */ +#ifndef XCHAT_PLUGIN_H +#define XCHAT_PLUGIN_H + +#include + +#define XCHAT_IFACE_MAJOR 1 +#define XCHAT_IFACE_MINOR 9 +#define XCHAT_IFACE_MICRO 11 +#define XCHAT_IFACE_VERSION ((XCHAT_IFACE_MAJOR * 10000) + \ + (XCHAT_IFACE_MINOR * 100) + \ + (XCHAT_IFACE_MICRO)) + +#define XCHAT_PRI_HIGHEST 127 +#define XCHAT_PRI_HIGH 64 +#define XCHAT_PRI_NORM 0 +#define XCHAT_PRI_LOW (-64) +#define XCHAT_PRI_LOWEST (-128) + +#define XCHAT_FD_READ 1 +#define XCHAT_FD_WRITE 2 +#define XCHAT_FD_EXCEPTION 4 +#define XCHAT_FD_NOTSOCKET 8 + +#define XCHAT_EAT_NONE 0 /* pass it on through! */ +#define XCHAT_EAT_XCHAT 1 /* don't let xchat see this event */ +#define XCHAT_EAT_PLUGIN 2 /* don't let other plugins see this event */ +#define XCHAT_EAT_ALL (XCHAT_EAT_XCHAT|XCHAT_EAT_PLUGIN) /* don't let anything see this event */ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct _xchat_plugin xchat_plugin; +typedef struct _xchat_list xchat_list; +typedef struct _xchat_hook xchat_hook; +#ifndef PLUGIN_C +typedef struct _xchat_context xchat_context; +#endif + +#ifndef PLUGIN_C +struct _xchat_plugin +{ + /* these are only used on win32 */ + xchat_hook *(*xchat_hook_command) (xchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], char *word_eol[], void *user_data), + const char *help_text, + void *userdata); + xchat_hook *(*xchat_hook_server) (xchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], char *word_eol[], void *user_data), + void *userdata); + xchat_hook *(*xchat_hook_print) (xchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], void *user_data), + void *userdata); + xchat_hook *(*xchat_hook_timer) (xchat_plugin *ph, + int timeout, + int (*callback) (void *user_data), + void *userdata); + xchat_hook *(*xchat_hook_fd) (xchat_plugin *ph, + int fd, + int flags, + int (*callback) (int fd, int flags, void *user_data), + void *userdata); + void *(*xchat_unhook) (xchat_plugin *ph, + xchat_hook *hook); + void (*xchat_print) (xchat_plugin *ph, + const char *text); + void (*xchat_printf) (xchat_plugin *ph, + const char *format, ...); + void (*xchat_command) (xchat_plugin *ph, + const char *command); + void (*xchat_commandf) (xchat_plugin *ph, + const char *format, ...); + int (*xchat_nickcmp) (xchat_plugin *ph, + const char *s1, + const char *s2); + int (*xchat_set_context) (xchat_plugin *ph, + xchat_context *ctx); + xchat_context *(*xchat_find_context) (xchat_plugin *ph, + const char *servname, + const char *channel); + xchat_context *(*xchat_get_context) (xchat_plugin *ph); + const char *(*xchat_get_info) (xchat_plugin *ph, + const char *id); + int (*xchat_get_prefs) (xchat_plugin *ph, + const char *name, + const char **string, + int *integer); + xchat_list * (*xchat_list_get) (xchat_plugin *ph, + const char *name); + void (*xchat_list_free) (xchat_plugin *ph, + xchat_list *xlist); + const char * const * (*xchat_list_fields) (xchat_plugin *ph, + const char *name); + int (*xchat_list_next) (xchat_plugin *ph, + xchat_list *xlist); + const char * (*xchat_list_str) (xchat_plugin *ph, + xchat_list *xlist, + const char *name); + int (*xchat_list_int) (xchat_plugin *ph, + xchat_list *xlist, + const char *name); + void * (*xchat_plugingui_add) (xchat_plugin *ph, + const char *filename, + const char *name, + const char *desc, + const char *version, + char *reserved); + void (*xchat_plugingui_remove) (xchat_plugin *ph, + void *handle); + int (*xchat_emit_print) (xchat_plugin *ph, + const char *event_name, ...); + int (*xchat_read_fd) (xchat_plugin *ph, + void *src, + char *buf, + int *len); + time_t (*xchat_list_time) (xchat_plugin *ph, + xchat_list *xlist, + const char *name); + char *(*xchat_gettext) (xchat_plugin *ph, + const char *msgid); + void (*xchat_send_modes) (xchat_plugin *ph, + const char **targets, + int ntargets, + int modes_per_line, + char sign, + char mode); + char *(*xchat_strip) (xchat_plugin *ph, + const char *str, + int len, + int flags); + void (*xchat_free) (xchat_plugin *ph, + void *ptr); +}; +#endif + + +xchat_hook * +xchat_hook_command (xchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], char *word_eol[], void *user_data), + const char *help_text, + void *userdata); + +xchat_hook * +xchat_hook_server (xchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], char *word_eol[], void *user_data), + void *userdata); + +xchat_hook * +xchat_hook_print (xchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], void *user_data), + void *userdata); + +xchat_hook * +xchat_hook_timer (xchat_plugin *ph, + int timeout, + int (*callback) (void *user_data), + void *userdata); + +xchat_hook * +xchat_hook_fd (xchat_plugin *ph, + int fd, + int flags, + int (*callback) (int fd, int flags, void *user_data), + void *userdata); + +void * +xchat_unhook (xchat_plugin *ph, + xchat_hook *hook); + +void +xchat_print (xchat_plugin *ph, + const char *text); + +void +xchat_printf (xchat_plugin *ph, + const char *format, ...); + +void +xchat_command (xchat_plugin *ph, + const char *command); + +void +xchat_commandf (xchat_plugin *ph, + const char *format, ...); + +int +xchat_nickcmp (xchat_plugin *ph, + const char *s1, + const char *s2); + +int +xchat_set_context (xchat_plugin *ph, + xchat_context *ctx); + +xchat_context * +xchat_find_context (xchat_plugin *ph, + const char *servname, + const char *channel); + +xchat_context * +xchat_get_context (xchat_plugin *ph); + +const char * +xchat_get_info (xchat_plugin *ph, + const char *id); + +int +xchat_get_prefs (xchat_plugin *ph, + const char *name, + const char **string, + int *integer); + +xchat_list * +xchat_list_get (xchat_plugin *ph, + const char *name); + +void +xchat_list_free (xchat_plugin *ph, + xchat_list *xlist); + +const char * const * +xchat_list_fields (xchat_plugin *ph, + const char *name); + +int +xchat_list_next (xchat_plugin *ph, + xchat_list *xlist); + +const char * +xchat_list_str (xchat_plugin *ph, + xchat_list *xlist, + const char *name); + +int +xchat_list_int (xchat_plugin *ph, + xchat_list *xlist, + const char *name); + +time_t +xchat_list_time (xchat_plugin *ph, + xchat_list *xlist, + const char *name); + +void * +xchat_plugingui_add (xchat_plugin *ph, + const char *filename, + const char *name, + const char *desc, + const char *version, + char *reserved); + +void +xchat_plugingui_remove (xchat_plugin *ph, + void *handle); + +int +xchat_emit_print (xchat_plugin *ph, + const char *event_name, ...); + +char * +xchat_gettext (xchat_plugin *ph, + const char *msgid); + +void +xchat_send_modes (xchat_plugin *ph, + const char **targets, + int ntargets, + int modes_per_line, + char sign, + char mode); + +char * +xchat_strip (xchat_plugin *ph, + const char *str, + int len, + int flags); + +void +xchat_free (xchat_plugin *ph, + void *ptr); + +#if !defined(PLUGIN_C) && defined(WIN32) +#ifndef XCHAT_PLUGIN_HANDLE +#define XCHAT_PLUGIN_HANDLE (ph) +#endif +#define xchat_hook_command ((XCHAT_PLUGIN_HANDLE)->xchat_hook_command) +#define xchat_hook_server ((XCHAT_PLUGIN_HANDLE)->xchat_hook_server) +#define xchat_hook_print ((XCHAT_PLUGIN_HANDLE)->xchat_hook_print) +#define xchat_hook_timer ((XCHAT_PLUGIN_HANDLE)->xchat_hook_timer) +#define xchat_hook_fd ((XCHAT_PLUGIN_HANDLE)->xchat_hook_fd) +#define xchat_unhook ((XCHAT_PLUGIN_HANDLE)->xchat_unhook) +#define xchat_print ((XCHAT_PLUGIN_HANDLE)->xchat_print) +#define xchat_printf ((XCHAT_PLUGIN_HANDLE)->xchat_printf) +#define xchat_command ((XCHAT_PLUGIN_HANDLE)->xchat_command) +#define xchat_commandf ((XCHAT_PLUGIN_HANDLE)->xchat_commandf) +#define xchat_nickcmp ((XCHAT_PLUGIN_HANDLE)->xchat_nickcmp) +#define xchat_set_context ((XCHAT_PLUGIN_HANDLE)->xchat_set_context) +#define xchat_find_context ((XCHAT_PLUGIN_HANDLE)->xchat_find_context) +#define xchat_get_context ((XCHAT_PLUGIN_HANDLE)->xchat_get_context) +#define xchat_get_info ((XCHAT_PLUGIN_HANDLE)->xchat_get_info) +#define xchat_get_prefs ((XCHAT_PLUGIN_HANDLE)->xchat_get_prefs) +#define xchat_list_get ((XCHAT_PLUGIN_HANDLE)->xchat_list_get) +#define xchat_list_free ((XCHAT_PLUGIN_HANDLE)->xchat_list_free) +#define xchat_list_fields ((XCHAT_PLUGIN_HANDLE)->xchat_list_fields) +#define xchat_list_str ((XCHAT_PLUGIN_HANDLE)->xchat_list_str) +#define xchat_list_int ((XCHAT_PLUGIN_HANDLE)->xchat_list_int) +#define xchat_list_time ((XCHAT_PLUGIN_HANDLE)->xchat_list_time) +#define xchat_list_next ((XCHAT_PLUGIN_HANDLE)->xchat_list_next) +#define xchat_plugingui_add ((XCHAT_PLUGIN_HANDLE)->xchat_plugingui_add) +#define xchat_plugingui_remove ((XCHAT_PLUGIN_HANDLE)->xchat_plugingui_remove) +#define xchat_emit_print ((XCHAT_PLUGIN_HANDLE)->xchat_emit_print) +#define xchat_gettext ((XCHAT_PLUGIN_HANDLE)->xchat_gettext) +#define xchat_send_modes ((XCHAT_PLUGIN_HANDLE)->xchat_send_modes) +#define xchat_strip ((XCHAT_PLUGIN_HANDLE)->xchat_strip) +#define xchat_free ((XCHAT_PLUGIN_HANDLE)->xchat_free) +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/xchat-2.8.8/plugins/xdcc/Makefile.am b/xchat-2.8.8/plugins/xdcc/Makefile.am new file mode 100644 index 0000000..24f93f1 --- /dev/null +++ b/xchat-2.8.8/plugins/xdcc/Makefile.am @@ -0,0 +1,7 @@ +libdir = $(xchatdir)/plugins + +lib_LTLIBRARIES = xdcc.la +xdcc_la_SOURCES = xdcc.c +xdcc_la_LDFLAGS = -avoid-version -module +INCLUDES = $(COMMON_CFLAGS) -I$(srcdir)/.. + diff --git a/xchat-2.8.8/plugins/xdcc/xdcc.c b/xchat-2.8.8/plugins/xdcc/xdcc.c new file mode 100644 index 0000000..147a3c3 --- /dev/null +++ b/xchat-2.8.8/plugins/xdcc/xdcc.c @@ -0,0 +1,327 @@ +/* xchat 2.0 plugin: simple xdcc server example */ + +#include +#include +#include +#include +#include + +#include "xchat-plugin.h" + +static xchat_plugin *ph; /* plugin handle */ + +static int xdcc_on = 1; +static int xdcc_slots = 3; +static GSList *file_list = 0; + +typedef struct fileoffer +{ + char *file; + char *fullpath; + char *desc; + int downloads; +} fileoffer; + + +/* find the number of open dccs */ + +static int num_open_dccs(void) +{ + xchat_list *list; + int num = 0; + + list = xchat_list_get(ph, "dcc"); + if(!list) + return 0; + + while(xchat_list_next(ph, list)) + { + /* check only ACTIVE dccs */ + if(xchat_list_int(ph, list, "status") == 1) + { + /* check only SEND dccs */ + if(xchat_list_int(ph, list, "type") == 0) + num++; + } + } + + xchat_list_free(ph, list); + + return num; +} + +static void xdcc_get(char *nick, char *host, char *arg) +{ + int num; + GSList *list; + fileoffer *offer; + + if(arg[0] == '#') + arg++; + + num = atoi(arg); + list = g_slist_nth(file_list, num - 1); + if(!list) + { + xchat_commandf(ph, "quote NOTICE %s :No such file number #%d!", nick, num); + return; + } + + if(num_open_dccs() >= xdcc_slots) + { + xchat_commandf(ph, "quote NOTICE %s :All slots full. Try again later.", nick); + return; + } + + offer = (fileoffer *) list->data; + offer->downloads++; + xchat_commandf(ph, "quote NOTICE %s :Sending offer #%d %s", nick, num, offer->file); + xchat_commandf(ph, "dcc send %s %s", nick, offer->fullpath); +} + +static void xdcc_del(char *name) +{ + GSList *list; + fileoffer *offer; + + list = file_list; + while(list) + { + offer = (fileoffer *) list->data; + if(strcasecmp(name, offer->file) == 0) + { + file_list = g_slist_remove(file_list, offer); + xchat_printf(ph, "%s [%s] removed.\n", offer->file, offer->fullpath); + free(offer->file); + free(offer->desc); + free(offer->fullpath); + free(offer); + return; + } + list = list->next; + } +} + +static void xdcc_add(char *name, char *fullpath, char *desc, int dl) +{ + fileoffer *offer; + + offer = (fileoffer *) malloc(sizeof(fileoffer)); + offer->file = strdup(name); + offer->desc = strdup(desc); + offer->fullpath = strdup(fullpath); + offer->downloads = dl; + + file_list = g_slist_append(file_list, offer); +} + +static void xdcc_list(char *nick, char *host, char *arg, char *cmd) +{ + GSList *list; + int i = 0; + fileoffer *offer; + + xchat_commandf(ph, "%s %s :XDCC List:", cmd, nick); + list = file_list; + while(list) + { + i++; + offer = (fileoffer *) list->data; + xchat_commandf(ph, "%s %s :[#%d] %s - %s [%d dl]", cmd, + nick, i, offer->file, offer->desc, offer->downloads); + list = list->next; + } + + if(i == 0) + xchat_commandf(ph, "%s %s :- list empty.", cmd, nick); + else + xchat_commandf(ph, "%s %s :%d files listed.", cmd, nick, i); +} + +static int xdcc_command(char *word[], char *word_eol[], void *userdata) +{ + if(strcasecmp(word[2], "ADD") == 0) + { + if(!word_eol[5][0]) + xchat_print(ph, "Syntax: /XDCC ADD \n"); + else + { + if(access(word[4], R_OK) == 0) + { + xdcc_add(word[3], word[4], word_eol[5], 0); + xchat_printf(ph, "%s [%s] added.\n", word[3], word[4]); + } + else + xchat_printf(ph, "Cannot read %s\n", word[4]); + } + return XCHAT_EAT_XCHAT; + } + + if(strcasecmp(word[2], "DEL") == 0) + { + xdcc_del(word[3]); + return XCHAT_EAT_XCHAT; + } + + if(strcasecmp(word[2], "SLOTS") == 0) + { + if(word[3][0]) + { + xdcc_slots = atoi(word[3]); + xchat_printf(ph, "XDCC slots set to %d\n", xdcc_slots); + } else + { + xchat_printf(ph, "XDCC slots: %d\n", xdcc_slots); + } + return XCHAT_EAT_XCHAT; + } + + if(strcasecmp(word[2], "ON") == 0) + { + xdcc_on = TRUE; + xchat_print(ph, "XDCC now ON\n"); + return XCHAT_EAT_XCHAT; + } + + if(strcasecmp(word[2], "LIST") == 0) + { + xdcc_list("", "", "", "echo"); + return XCHAT_EAT_XCHAT; + } + + if(strcasecmp(word[2], "OFF") == 0) + { + xdcc_on = FALSE; + xchat_print(ph, "XDCC now OFF\n"); + return XCHAT_EAT_XCHAT; + } + + xchat_print(ph, "Syntax: XDCC ADD \n" + " XDCC DEL \n" + " XDCC SLOTS \n" + " XDCC LIST\n" + " XDCC ON\n" + " XDCC OFF\n\n"); + + return XCHAT_EAT_XCHAT; +} + +static void xdcc_remote(char *from, char *msg) +{ + char *ex, *nick, *host; + + ex = strchr(from, '!'); + if(!ex) + return; + ex[0] = 0; + nick = from; + host = ex + 1; + + if(xdcc_on == 0) + { + xchat_commandf(ph, "notice %s XDCC is turned OFF!", from); + return; + } + + if(strncasecmp(msg, "LIST", 4) == 0) + xdcc_list(nick, host, msg + 4, "quote notice"); + else if(strncasecmp(msg, "GET ", 4) == 0) + xdcc_get(nick, host, msg + 4); + else + xchat_commandf(ph, "notice %s Unknown XDCC command!", from); +} + +static int ctcp_cb(char *word[], void *userdata) +{ + char *msg = word[1]; + char *from = word[2]; + + if(strncasecmp(msg, "XDCC ", 5) == 0) + xdcc_remote(from, msg + 5); + + return XCHAT_EAT_NONE; +} + +static void xdcc_save(void) +{ + char buf[512]; + FILE *fp; + GSList *list; + fileoffer *offer; + + snprintf(buf, sizeof(buf), "%s/xdcclist.conf", xchat_get_info(ph, "xchatdir")); + + fp = fopen(buf, "w"); + if(!fp) + return; + + list = file_list; + while(list) + { + offer = (fileoffer *) list->data; + fprintf(fp, "%s\n%s\n%s\n%d\n\n\n", offer->file, offer->fullpath, + offer->desc, offer->downloads); + list = list->next; + } + + fclose(fp); +} + +static void xdcc_load(void) +{ + char buf[512]; + char file[128]; + char path[128]; + char desc[128]; + char dl[128]; + FILE *fp; + + snprintf(buf, sizeof(buf), "%s/xdcclist.conf", xchat_get_info(ph, "xchatdir")); + + fp = fopen(buf, "r"); + if(!fp) + return; + + while(fgets(file, sizeof(file), fp)) + { + file[strlen(file)-1] = 0; + fgets(path, sizeof(path), fp); + path[strlen(path)-1] = 0; + fgets(desc, sizeof(desc), fp); + desc[strlen(desc)-1] = 0; + fgets(dl, sizeof(dl), fp); + dl[strlen(dl)-1] = 0; + fgets(buf, sizeof(buf), fp); + fgets(buf, sizeof(buf), fp); + xdcc_add(file, path, desc, atoi(dl)); + } + + fclose(fp); +} + +int xchat_plugin_deinit(void) +{ + xdcc_save(); + xchat_print(ph, "XDCC List saved\n"); + return 1; +} + +int xchat_plugin_init(xchat_plugin *plugin_handle, + char **plugin_name, char **plugin_desc, char **plugin_version, + char *arg) +{ + ph = plugin_handle; + + *plugin_name = "XDCC"; + *plugin_desc = "Very simple XDCC server"; + *plugin_version = "0.1"; + + xchat_hook_command(ph, "XDCC", XCHAT_PRI_NORM, xdcc_command, 0, 0); + xchat_hook_print(ph, "CTCP Generic", XCHAT_PRI_NORM, ctcp_cb, 0); + xchat_hook_print(ph, "CTCP Generic to Channel", XCHAT_PRI_NORM, ctcp_cb, 0); + + xdcc_load(); + xchat_print(ph, "XDCC loaded. Type /XDCC for help.\n"); + + return 1; +} diff --git a/xchat-2.8.8/po/Makefile b/xchat-2.8.8/po/Makefile new file mode 100644 index 0000000..690bcdf --- /dev/null +++ b/xchat-2.8.8/po/Makefile @@ -0,0 +1,473 @@ +# Makefile for PO directory in any package using GNU gettext. +# Copyright (C) 1995-1997, 2000-2007 by Ulrich Drepper +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU General Public +# License but which still want to provide support for the GNU gettext +# functionality. +# Please note that the actual code of GNU gettext is covered by the GNU +# General Public License and is *not* in the public domain. +# +# Origin: gettext-0.17 +GETTEXT_MACRO_VERSION = 0.17 + +PACKAGE = xchat +VERSION = 2.8.8 +PACKAGE_BUGREPORT = http://www.xchat.org/ + +SHELL = /bin/sh + + +srcdir = . +top_srcdir = .. + + +prefix = /usr/local +exec_prefix = /usr/local +datarootdir = ${prefix}/share +datadir = ${datarootdir} +localedir = ${datarootdir}/locale +gettextsrcdir = $(datadir)/gettext/po + +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 + +# We use $(mkdir_p). +# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as +# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions, +# ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/install-sh does not start with $(SHELL), so we add it. +# In automake >= 1.10, /bin/mkdir -p is derived from ${MKDIR_P}, which is defined +# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake +# versions, $(mkinstalldirs) and $(install_sh) are unused. +mkinstalldirs = $(SHELL) ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/install-sh -d +install_sh = $(SHELL) ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/install-sh +MKDIR_P = /bin/mkdir -p +mkdir_p = /bin/mkdir -p + +GMSGFMT_ = /usr/bin/msgfmt +GMSGFMT_no = /usr/bin/msgfmt +GMSGFMT_yes = /usr/bin/msgfmt +GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT)) +MSGFMT_ = /usr/bin/msgfmt +MSGFMT_no = /usr/bin/msgfmt +MSGFMT_yes = /usr/bin/msgfmt +MSGFMT = $(MSGFMT_$(USE_MSGCTXT)) +XGETTEXT_ = /usr/bin/xgettext +XGETTEXT_no = /usr/bin/xgettext +XGETTEXT_yes = /usr/bin/xgettext +XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT)) +MSGMERGE = msgmerge +MSGMERGE_UPDATE = /usr/bin/msgmerge --update +MSGINIT = msginit +MSGCONV = msgconv +MSGFILTER = msgfilter + +POFILES = be.po ca.po cs.po de.po el.po es.po fi.po fr.po gl.po hu.po it.po ja.po kn.po ko.po lt.po mk.po nl.po pa.po pl.po pt.po ru.po sq.po sr.po sv.po th.po uk.po vi.po zh_CN.po zh_TW.po +GMOFILES = be.gmo ca.gmo cs.gmo de.gmo el.gmo es.gmo fi.gmo fr.gmo gl.gmo hu.gmo it.gmo ja.gmo kn.gmo ko.gmo lt.gmo mk.gmo nl.gmo pa.gmo pl.gmo pt.gmo ru.gmo sq.gmo sr.gmo sv.gmo th.gmo uk.gmo vi.gmo zh_CN.gmo zh_TW.gmo +UPDATEPOFILES = be.po-update ca.po-update cs.po-update de.po-update el.po-update es.po-update fi.po-update fr.po-update gl.po-update hu.po-update it.po-update ja.po-update kn.po-update ko.po-update lt.po-update mk.po-update nl.po-update pa.po-update pl.po-update pt.po-update ru.po-update sq.po-update sr.po-update sv.po-update th.po-update uk.po-update vi.po-update zh_CN.po-update zh_TW.po-update +DUMMYPOFILES = be.nop ca.nop cs.nop de.nop el.nop es.nop fi.nop fr.nop gl.nop hu.nop it.nop ja.nop kn.nop ko.nop lt.nop mk.nop nl.nop pa.nop pl.nop pt.nop ru.nop sq.nop sr.nop sv.nop th.nop uk.nop vi.nop zh_CN.nop zh_TW.nop +DISTFILES.common = Makefile.in.in remove-potcdate.sin \ +$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) +DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \ +$(POFILES) $(GMOFILES) \ +$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) + +POTFILES = \ + ../src/common/cfgfiles.c \ + ../src/common/dcc.c \ + ../src/common/ignore.c \ + ../src/common/notify.c \ + ../src/common/outbound.c \ + ../src/common/plugin.c \ + ../src/common/server.c \ + ../src/common/servlist.c \ + ../src/common/textevents.h \ + ../src/common/text.c \ + ../src/common/util.c \ + ../src/common/xchat.c \ + ../src/common/dbus/dbus-client.c \ + ../src/common/dbus/dbus-plugin.c \ + ../src/fe-gtk/about.c \ + ../src/fe-gtk/ascii.c \ + ../src/fe-gtk/banlist.c \ + ../src/fe-gtk/chanlist.c \ + ../src/fe-gtk/dccgui.c \ + ../src/fe-gtk/editlist.c \ + ../src/fe-gtk/fe-gtk.c \ + ../src/fe-gtk/fkeys.c \ + ../src/fe-gtk/gtkutil.c \ + ../src/fe-gtk/ignoregui.c \ + ../src/fe-gtk/joind.c \ + ../src/fe-gtk/maingui.c \ + ../src/fe-gtk/menu.c \ + ../src/fe-gtk/notifygui.c \ + ../src/fe-gtk/plugin-tray.c \ + ../src/fe-gtk/plugingui.c \ + ../src/fe-gtk/rawlog.c \ + ../src/fe-gtk/search.c \ + ../src/fe-gtk/servlistgui.c \ + ../src/fe-gtk/setup.c \ + ../src/fe-gtk/textgui.c \ + ../src/fe-gtk/urlgrab.c \ + ../src/fe-gtk/userlistgui.c + +CATALOGS = be.gmo ca.gmo cs.gmo de.gmo el.gmo es.gmo fi.gmo fr.gmo gl.gmo hu.gmo it.gmo ja.gmo kn.gmo ko.gmo lt.gmo mk.gmo nl.gmo pa.gmo pl.gmo pt.gmo ru.gmo sq.gmo sr.gmo sv.gmo th.gmo uk.gmo vi.gmo zh_CN.gmo zh_TW.gmo + +# Makevars gets inserted here. (Don't remove this line!) +DOMAIN = $(PACKAGE) +subdir = po +top_builddir = .. +XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ +COPYRIGHT_HOLDER = +MSGID_BUGS_ADDRESS = www.xchat.org +EXTRA_LOCALE_CATEGORIES = + +.SUFFIXES: +.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update + +.po.mo: + @echo "$(MSGFMT) -c -o $@ $<"; \ + $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ + +.po.gmo: + @lang=`echo $* | sed -e 's,.*/,,'`; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \ + cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo + +.sin.sed: + sed -e '/^#/d' $< > t-$@ + mv t-$@ $@ + + +all: check-macro-version all-yes + +all-yes: stamp-po +all-no: + +# Ensure that the gettext macros and this Makefile.in.in are in sync. +check-macro-version: + @test "$(GETTEXT_MACRO_VERSION)" = "0.17" \ + || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version 0.17" 1>&2; \ + exit 1; \ + } + +# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no +# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because +# we don't want to bother translators with empty POT files). We assume that +# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty. +# In this case, stamp-po is a nop (i.e. a phony target). + +# stamp-po is a timestamp denoting the last time at which the CATALOGS have +# been loosely updated. Its purpose is that when a developer or translator +# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, +# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent +# invocations of "make" will do nothing. This timestamp would not be necessary +# if updating the $(CATALOGS) would always touch them; however, the rule for +# $(POFILES) has been designed to not touch files that don't need to be +# changed. +stamp-po: $(srcdir)/$(DOMAIN).pot + test ! -f $(srcdir)/$(DOMAIN).pot || \ + test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) + @test ! -f $(srcdir)/$(DOMAIN).pot || { \ + echo "touch stamp-po" && \ + echo timestamp > stamp-poT && \ + mv stamp-poT stamp-po; \ + } + +# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', +# otherwise packages like GCC can not be built if only parts of the source +# have been downloaded. + +# This target rebuilds $(DOMAIN).pot; it is an expensive operation. +# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. +$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed + if LC_ALL=C grep 'GNU xchat' $(top_srcdir)/* 2>/dev/null | grep -v 'libtool:' >/dev/null; then \ + package_gnu='GNU '; \ + else \ + package_gnu=''; \ + fi; \ + if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \ + msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \ + else \ + msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \ + fi; \ + case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \ + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' \ + --msgid-bugs-address="$$msgid_bugs_address" \ + ;; \ + *) \ + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' \ + --package-name="$${package_gnu}xchat" \ + --package-version='2.8.8' \ + --msgid-bugs-address="$$msgid_bugs_address" \ + ;; \ + esac + test ! -f $(DOMAIN).po || { \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ + sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ + if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ + else \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + else \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + } + +# This rule has no dependencies: we don't need to update $(DOMAIN).pot at +# every "make" invocation, only create it when it is missing. +# Only "make $(DOMAIN).pot-update" or "make dist" will force an update. +$(srcdir)/$(DOMAIN).pot: + $(MAKE) $(DOMAIN).pot-update + +# This target rebuilds a PO file if $(DOMAIN).pot has changed. +# Note that a PO file is not touched if it doesn't need to be changed. +$(POFILES): $(srcdir)/$(DOMAIN).pot + @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ + if test -f "$(srcdir)/$${lang}.po"; then \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ + cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot; \ + else \ + $(MAKE) $${lang}.po-create; \ + fi + + +install: install-exec install-data +install-exec: +install-data: install-data-yes + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + for file in $(DISTFILES.common) Makevars.template; do \ + $(INSTALL_DATA) $(srcdir)/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + for file in Makevars; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +install-data-no: all +install-data-yes: all + $(mkdir_p) $(DESTDIR)$(datadir) + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkdir_p) $(DESTDIR)$$dir; \ + if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ + $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ + echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ + fi; \ + done; \ + done + +install-strip: install + +installdirs: installdirs-exec installdirs-data +installdirs-exec: +installdirs-data: installdirs-data-yes + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + else \ + : ; \ + fi +installdirs-data-no: +installdirs-data-yes: + $(mkdir_p) $(DESTDIR)$(datadir) + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkdir_p) $(DESTDIR)$$dir; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + fi; \ + done; \ + done + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: uninstall-exec uninstall-data +uninstall-exec: +uninstall-data: uninstall-data-yes + if test "$(PACKAGE)" = "gettext-tools"; then \ + for file in $(DISTFILES.common) Makevars.template; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +uninstall-data-no: +uninstall-data-yes: + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + done; \ + done + +check: all + +info dvi ps pdf html tags TAGS ctags CTAGS ID: + +mostlyclean: + rm -f remove-potcdate.sed + rm -f stamp-poT + rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po + rm -fr *.o + +clean: mostlyclean + +distclean: clean + rm -f Makefile Makefile.in POTFILES *.mo + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + rm -f stamp-po $(GMOFILES) + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: + $(MAKE) update-po + @$(MAKE) dist2 +# This is a separate target because 'update-po' must be executed before. +dist2: stamp-po $(DISTFILES) + dists="$(DISTFILES)"; \ + if test "$(PACKAGE)" = "gettext-tools"; then \ + dists="$$dists Makevars.template"; \ + fi; \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + dists="$$dists $(DOMAIN).pot stamp-po"; \ + fi; \ + if test -f $(srcdir)/ChangeLog; then \ + dists="$$dists ChangeLog"; \ + fi; \ + for i in 0 1 2 3 4 5 6 7 8 9; do \ + if test -f $(srcdir)/ChangeLog.$$i; then \ + dists="$$dists ChangeLog.$$i"; \ + fi; \ + done; \ + if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ + for file in $$dists; do \ + if test -f $$file; then \ + cp -p $$file $(distdir) || exit 1; \ + else \ + cp -p $(srcdir)/$$file $(distdir) || exit 1; \ + fi; \ + done + +update-po: Makefile + $(MAKE) $(DOMAIN).pot-update + test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) + $(MAKE) update-gmo + +# General rule for creating PO files. + +.nop.po-create: + @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ + echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ + exit 1 + +# General rule for updating PO files. + +.nop.po-update: + @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ + if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \ + tmpdir=`pwd`; \ + echo "$$lang:"; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ + cd $(srcdir); \ + if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \ + if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ + rm -f $$tmpdir/$$lang.new.po; \ + else \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "msgmerge for $$lang.po failed!" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi + +$(DUMMYPOFILES): + +update-gmo: Makefile $(GMOFILES) + @: + +Makefile: Makefile.in.in Makevars $(top_builddir)/config.status POTFILES.in + cd $(top_builddir) \ + && $(SHELL) ./config.status $(subdir)/$@.in po-directories + +force: + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/xchat-2.8.8/po/Makefile.in b/xchat-2.8.8/po/Makefile.in new file mode 100644 index 0000000..e5d1120 --- /dev/null +++ b/xchat-2.8.8/po/Makefile.in @@ -0,0 +1,429 @@ +# Makefile for PO directory in any package using GNU gettext. +# Copyright (C) 1995-1997, 2000-2007 by Ulrich Drepper +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU General Public +# License but which still want to provide support for the GNU gettext +# functionality. +# Please note that the actual code of GNU gettext is covered by the GNU +# General Public License and is *not* in the public domain. +# +# Origin: gettext-0.17 +GETTEXT_MACRO_VERSION = 0.17 + +PACKAGE = xchat +VERSION = 2.8.8 +PACKAGE_BUGREPORT = http://www.xchat.org/ + +SHELL = /bin/sh + + +srcdir = . +top_srcdir = .. + + +prefix = /usr/local +exec_prefix = /usr/local +datarootdir = ${prefix}/share +datadir = ${datarootdir} +localedir = ${datarootdir}/locale +gettextsrcdir = $(datadir)/gettext/po + +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 + +# We use $(mkdir_p). +# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as +# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions, +# ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/install-sh does not start with $(SHELL), so we add it. +# In automake >= 1.10, /bin/mkdir -p is derived from ${MKDIR_P}, which is defined +# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake +# versions, $(mkinstalldirs) and $(install_sh) are unused. +mkinstalldirs = $(SHELL) ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/install-sh -d +install_sh = $(SHELL) ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/install-sh +MKDIR_P = /bin/mkdir -p +mkdir_p = /bin/mkdir -p + +GMSGFMT_ = /usr/bin/msgfmt +GMSGFMT_no = /usr/bin/msgfmt +GMSGFMT_yes = /usr/bin/msgfmt +GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT)) +MSGFMT_ = /usr/bin/msgfmt +MSGFMT_no = /usr/bin/msgfmt +MSGFMT_yes = /usr/bin/msgfmt +MSGFMT = $(MSGFMT_$(USE_MSGCTXT)) +XGETTEXT_ = /usr/bin/xgettext +XGETTEXT_no = /usr/bin/xgettext +XGETTEXT_yes = /usr/bin/xgettext +XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT)) +MSGMERGE = msgmerge +MSGMERGE_UPDATE = /usr/bin/msgmerge --update +MSGINIT = msginit +MSGCONV = msgconv +MSGFILTER = msgfilter + +POFILES = @POFILES@ +GMOFILES = @GMOFILES@ +UPDATEPOFILES = @UPDATEPOFILES@ +DUMMYPOFILES = @DUMMYPOFILES@ +DISTFILES.common = Makefile.in.in remove-potcdate.sin \ +$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) +DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \ +$(POFILES) $(GMOFILES) \ +$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) + +POTFILES = \ + +CATALOGS = @CATALOGS@ + +# Makevars gets inserted here. (Don't remove this line!) + +.SUFFIXES: +.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update + +.po.mo: + @echo "$(MSGFMT) -c -o $@ $<"; \ + $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ + +.po.gmo: + @lang=`echo $* | sed -e 's,.*/,,'`; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \ + cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo + +.sin.sed: + sed -e '/^#/d' $< > t-$@ + mv t-$@ $@ + + +all: check-macro-version all-yes + +all-yes: stamp-po +all-no: + +# Ensure that the gettext macros and this Makefile.in.in are in sync. +check-macro-version: + @test "$(GETTEXT_MACRO_VERSION)" = "0.17" \ + || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version 0.17" 1>&2; \ + exit 1; \ + } + +# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no +# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because +# we don't want to bother translators with empty POT files). We assume that +# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty. +# In this case, stamp-po is a nop (i.e. a phony target). + +# stamp-po is a timestamp denoting the last time at which the CATALOGS have +# been loosely updated. Its purpose is that when a developer or translator +# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, +# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent +# invocations of "make" will do nothing. This timestamp would not be necessary +# if updating the $(CATALOGS) would always touch them; however, the rule for +# $(POFILES) has been designed to not touch files that don't need to be +# changed. +stamp-po: $(srcdir)/$(DOMAIN).pot + test ! -f $(srcdir)/$(DOMAIN).pot || \ + test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) + @test ! -f $(srcdir)/$(DOMAIN).pot || { \ + echo "touch stamp-po" && \ + echo timestamp > stamp-poT && \ + mv stamp-poT stamp-po; \ + } + +# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', +# otherwise packages like GCC can not be built if only parts of the source +# have been downloaded. + +# This target rebuilds $(DOMAIN).pot; it is an expensive operation. +# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. +$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed + if LC_ALL=C grep 'GNU xchat' $(top_srcdir)/* 2>/dev/null | grep -v 'libtool:' >/dev/null; then \ + package_gnu='GNU '; \ + else \ + package_gnu=''; \ + fi; \ + if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \ + msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \ + else \ + msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \ + fi; \ + case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \ + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' \ + --msgid-bugs-address="$$msgid_bugs_address" \ + ;; \ + *) \ + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' \ + --package-name="$${package_gnu}xchat" \ + --package-version='2.8.8' \ + --msgid-bugs-address="$$msgid_bugs_address" \ + ;; \ + esac + test ! -f $(DOMAIN).po || { \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ + sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ + if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ + else \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + else \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + } + +# This rule has no dependencies: we don't need to update $(DOMAIN).pot at +# every "make" invocation, only create it when it is missing. +# Only "make $(DOMAIN).pot-update" or "make dist" will force an update. +$(srcdir)/$(DOMAIN).pot: + $(MAKE) $(DOMAIN).pot-update + +# This target rebuilds a PO file if $(DOMAIN).pot has changed. +# Note that a PO file is not touched if it doesn't need to be changed. +$(POFILES): $(srcdir)/$(DOMAIN).pot + @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ + if test -f "$(srcdir)/$${lang}.po"; then \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ + cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot; \ + else \ + $(MAKE) $${lang}.po-create; \ + fi + + +install: install-exec install-data +install-exec: +install-data: install-data-yes + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + for file in $(DISTFILES.common) Makevars.template; do \ + $(INSTALL_DATA) $(srcdir)/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + for file in Makevars; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +install-data-no: all +install-data-yes: all + $(mkdir_p) $(DESTDIR)$(datadir) + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkdir_p) $(DESTDIR)$$dir; \ + if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ + $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ + echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ + fi; \ + done; \ + done + +install-strip: install + +installdirs: installdirs-exec installdirs-data +installdirs-exec: +installdirs-data: installdirs-data-yes + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + else \ + : ; \ + fi +installdirs-data-no: +installdirs-data-yes: + $(mkdir_p) $(DESTDIR)$(datadir) + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkdir_p) $(DESTDIR)$$dir; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + fi; \ + done; \ + done + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: uninstall-exec uninstall-data +uninstall-exec: +uninstall-data: uninstall-data-yes + if test "$(PACKAGE)" = "gettext-tools"; then \ + for file in $(DISTFILES.common) Makevars.template; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +uninstall-data-no: +uninstall-data-yes: + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + done; \ + done + +check: all + +info dvi ps pdf html tags TAGS ctags CTAGS ID: + +mostlyclean: + rm -f remove-potcdate.sed + rm -f stamp-poT + rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po + rm -fr *.o + +clean: mostlyclean + +distclean: clean + rm -f Makefile Makefile.in POTFILES *.mo + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + rm -f stamp-po $(GMOFILES) + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: + $(MAKE) update-po + @$(MAKE) dist2 +# This is a separate target because 'update-po' must be executed before. +dist2: stamp-po $(DISTFILES) + dists="$(DISTFILES)"; \ + if test "$(PACKAGE)" = "gettext-tools"; then \ + dists="$$dists Makevars.template"; \ + fi; \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + dists="$$dists $(DOMAIN).pot stamp-po"; \ + fi; \ + if test -f $(srcdir)/ChangeLog; then \ + dists="$$dists ChangeLog"; \ + fi; \ + for i in 0 1 2 3 4 5 6 7 8 9; do \ + if test -f $(srcdir)/ChangeLog.$$i; then \ + dists="$$dists ChangeLog.$$i"; \ + fi; \ + done; \ + if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ + for file in $$dists; do \ + if test -f $$file; then \ + cp -p $$file $(distdir) || exit 1; \ + else \ + cp -p $(srcdir)/$$file $(distdir) || exit 1; \ + fi; \ + done + +update-po: Makefile + $(MAKE) $(DOMAIN).pot-update + test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) + $(MAKE) update-gmo + +# General rule for creating PO files. + +.nop.po-create: + @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ + echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ + exit 1 + +# General rule for updating PO files. + +.nop.po-update: + @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ + if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \ + tmpdir=`pwd`; \ + echo "$$lang:"; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ + cd $(srcdir); \ + if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \ + if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ + rm -f $$tmpdir/$$lang.new.po; \ + else \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "msgmerge for $$lang.po failed!" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi + +$(DUMMYPOFILES): + +update-gmo: Makefile $(GMOFILES) + @: + +Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@ + cd $(top_builddir) \ + && $(SHELL) ./config.status $(subdir)/$@.in po-directories + +force: + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/xchat-2.8.8/po/Makefile.in.in b/xchat-2.8.8/po/Makefile.in.in new file mode 100644 index 0000000..fecf500 --- /dev/null +++ b/xchat-2.8.8/po/Makefile.in.in @@ -0,0 +1,429 @@ +# Makefile for PO directory in any package using GNU gettext. +# Copyright (C) 1995-1997, 2000-2007 by Ulrich Drepper +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU General Public +# License but which still want to provide support for the GNU gettext +# functionality. +# Please note that the actual code of GNU gettext is covered by the GNU +# General Public License and is *not* in the public domain. +# +# Origin: gettext-0.17 +GETTEXT_MACRO_VERSION = 0.17 + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + +SHELL = /bin/sh +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +datarootdir = @datarootdir@ +datadir = @datadir@ +localedir = @localedir@ +gettextsrcdir = $(datadir)/gettext/po + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ + +# We use $(mkdir_p). +# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as +# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions, +# @install_sh@ does not start with $(SHELL), so we add it. +# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined +# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake +# versions, $(mkinstalldirs) and $(install_sh) are unused. +mkinstalldirs = $(SHELL) @install_sh@ -d +install_sh = $(SHELL) @install_sh@ +MKDIR_P = @MKDIR_P@ +mkdir_p = @mkdir_p@ + +GMSGFMT_ = @GMSGFMT@ +GMSGFMT_no = @GMSGFMT@ +GMSGFMT_yes = @GMSGFMT_015@ +GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT)) +MSGFMT_ = @MSGFMT@ +MSGFMT_no = @MSGFMT@ +MSGFMT_yes = @MSGFMT_015@ +MSGFMT = $(MSGFMT_$(USE_MSGCTXT)) +XGETTEXT_ = @XGETTEXT@ +XGETTEXT_no = @XGETTEXT@ +XGETTEXT_yes = @XGETTEXT_015@ +XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT)) +MSGMERGE = msgmerge +MSGMERGE_UPDATE = @MSGMERGE@ --update +MSGINIT = msginit +MSGCONV = msgconv +MSGFILTER = msgfilter + +POFILES = @POFILES@ +GMOFILES = @GMOFILES@ +UPDATEPOFILES = @UPDATEPOFILES@ +DUMMYPOFILES = @DUMMYPOFILES@ +DISTFILES.common = Makefile.in.in remove-potcdate.sin \ +$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) +DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \ +$(POFILES) $(GMOFILES) \ +$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) + +POTFILES = \ + +CATALOGS = @CATALOGS@ + +# Makevars gets inserted here. (Don't remove this line!) + +.SUFFIXES: +.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update + +.po.mo: + @echo "$(MSGFMT) -c -o $@ $<"; \ + $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ + +.po.gmo: + @lang=`echo $* | sed -e 's,.*/,,'`; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \ + cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo + +.sin.sed: + sed -e '/^#/d' $< > t-$@ + mv t-$@ $@ + + +all: check-macro-version all-@USE_NLS@ + +all-yes: stamp-po +all-no: + +# Ensure that the gettext macros and this Makefile.in.in are in sync. +check-macro-version: + @test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \ + || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \ + exit 1; \ + } + +# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no +# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because +# we don't want to bother translators with empty POT files). We assume that +# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty. +# In this case, stamp-po is a nop (i.e. a phony target). + +# stamp-po is a timestamp denoting the last time at which the CATALOGS have +# been loosely updated. Its purpose is that when a developer or translator +# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, +# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent +# invocations of "make" will do nothing. This timestamp would not be necessary +# if updating the $(CATALOGS) would always touch them; however, the rule for +# $(POFILES) has been designed to not touch files that don't need to be +# changed. +stamp-po: $(srcdir)/$(DOMAIN).pot + test ! -f $(srcdir)/$(DOMAIN).pot || \ + test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) + @test ! -f $(srcdir)/$(DOMAIN).pot || { \ + echo "touch stamp-po" && \ + echo timestamp > stamp-poT && \ + mv stamp-poT stamp-po; \ + } + +# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', +# otherwise packages like GCC can not be built if only parts of the source +# have been downloaded. + +# This target rebuilds $(DOMAIN).pot; it is an expensive operation. +# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. +$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed + if LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null | grep -v 'libtool:' >/dev/null; then \ + package_gnu='GNU '; \ + else \ + package_gnu=''; \ + fi; \ + if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \ + msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \ + else \ + msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \ + fi; \ + case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \ + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' \ + --msgid-bugs-address="$$msgid_bugs_address" \ + ;; \ + *) \ + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' \ + --package-name="$${package_gnu}@PACKAGE@" \ + --package-version='@VERSION@' \ + --msgid-bugs-address="$$msgid_bugs_address" \ + ;; \ + esac + test ! -f $(DOMAIN).po || { \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ + sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ + if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ + else \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + else \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + } + +# This rule has no dependencies: we don't need to update $(DOMAIN).pot at +# every "make" invocation, only create it when it is missing. +# Only "make $(DOMAIN).pot-update" or "make dist" will force an update. +$(srcdir)/$(DOMAIN).pot: + $(MAKE) $(DOMAIN).pot-update + +# This target rebuilds a PO file if $(DOMAIN).pot has changed. +# Note that a PO file is not touched if it doesn't need to be changed. +$(POFILES): $(srcdir)/$(DOMAIN).pot + @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ + if test -f "$(srcdir)/$${lang}.po"; then \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ + cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot; \ + else \ + $(MAKE) $${lang}.po-create; \ + fi + + +install: install-exec install-data +install-exec: +install-data: install-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + for file in $(DISTFILES.common) Makevars.template; do \ + $(INSTALL_DATA) $(srcdir)/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + for file in Makevars; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +install-data-no: all +install-data-yes: all + $(mkdir_p) $(DESTDIR)$(datadir) + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkdir_p) $(DESTDIR)$$dir; \ + if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ + $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ + echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ + fi; \ + done; \ + done + +install-strip: install + +installdirs: installdirs-exec installdirs-data +installdirs-exec: +installdirs-data: installdirs-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + else \ + : ; \ + fi +installdirs-data-no: +installdirs-data-yes: + $(mkdir_p) $(DESTDIR)$(datadir) + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkdir_p) $(DESTDIR)$$dir; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + fi; \ + done; \ + done + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: uninstall-exec uninstall-data +uninstall-exec: +uninstall-data: uninstall-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + for file in $(DISTFILES.common) Makevars.template; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +uninstall-data-no: +uninstall-data-yes: + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + done; \ + done + +check: all + +info dvi ps pdf html tags TAGS ctags CTAGS ID: + +mostlyclean: + rm -f remove-potcdate.sed + rm -f stamp-poT + rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po + rm -fr *.o + +clean: mostlyclean + +distclean: clean + rm -f Makefile Makefile.in POTFILES *.mo + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + rm -f stamp-po $(GMOFILES) + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: + $(MAKE) update-po + @$(MAKE) dist2 +# This is a separate target because 'update-po' must be executed before. +dist2: stamp-po $(DISTFILES) + dists="$(DISTFILES)"; \ + if test "$(PACKAGE)" = "gettext-tools"; then \ + dists="$$dists Makevars.template"; \ + fi; \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + dists="$$dists $(DOMAIN).pot stamp-po"; \ + fi; \ + if test -f $(srcdir)/ChangeLog; then \ + dists="$$dists ChangeLog"; \ + fi; \ + for i in 0 1 2 3 4 5 6 7 8 9; do \ + if test -f $(srcdir)/ChangeLog.$$i; then \ + dists="$$dists ChangeLog.$$i"; \ + fi; \ + done; \ + if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ + for file in $$dists; do \ + if test -f $$file; then \ + cp -p $$file $(distdir) || exit 1; \ + else \ + cp -p $(srcdir)/$$file $(distdir) || exit 1; \ + fi; \ + done + +update-po: Makefile + $(MAKE) $(DOMAIN).pot-update + test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) + $(MAKE) update-gmo + +# General rule for creating PO files. + +.nop.po-create: + @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ + echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ + exit 1 + +# General rule for updating PO files. + +.nop.po-update: + @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ + if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \ + tmpdir=`pwd`; \ + echo "$$lang:"; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ + cd $(srcdir); \ + if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \ + if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ + rm -f $$tmpdir/$$lang.new.po; \ + else \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "msgmerge for $$lang.po failed!" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi + +$(DUMMYPOFILES): + +update-gmo: Makefile $(GMOFILES) + @: + +Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@ + cd $(top_builddir) \ + && $(SHELL) ./config.status $(subdir)/$@.in po-directories + +force: + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/xchat-2.8.8/po/Makevars b/xchat-2.8.8/po/Makevars new file mode 100644 index 0000000..771c7f2 --- /dev/null +++ b/xchat-2.8.8/po/Makevars @@ -0,0 +1,7 @@ +DOMAIN = $(PACKAGE) +subdir = po +top_builddir = .. +XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ +COPYRIGHT_HOLDER = +MSGID_BUGS_ADDRESS = www.xchat.org +EXTRA_LOCALE_CATEGORIES = diff --git a/xchat-2.8.8/po/POTFILES b/xchat-2.8.8/po/POTFILES new file mode 100644 index 0000000..2bbc16d --- /dev/null +++ b/xchat-2.8.8/po/POTFILES @@ -0,0 +1,37 @@ + ../src/common/cfgfiles.c \ + ../src/common/dcc.c \ + ../src/common/ignore.c \ + ../src/common/notify.c \ + ../src/common/outbound.c \ + ../src/common/plugin.c \ + ../src/common/server.c \ + ../src/common/servlist.c \ + ../src/common/textevents.h \ + ../src/common/text.c \ + ../src/common/util.c \ + ../src/common/xchat.c \ + ../src/common/dbus/dbus-client.c \ + ../src/common/dbus/dbus-plugin.c \ + ../src/fe-gtk/about.c \ + ../src/fe-gtk/ascii.c \ + ../src/fe-gtk/banlist.c \ + ../src/fe-gtk/chanlist.c \ + ../src/fe-gtk/dccgui.c \ + ../src/fe-gtk/editlist.c \ + ../src/fe-gtk/fe-gtk.c \ + ../src/fe-gtk/fkeys.c \ + ../src/fe-gtk/gtkutil.c \ + ../src/fe-gtk/ignoregui.c \ + ../src/fe-gtk/joind.c \ + ../src/fe-gtk/maingui.c \ + ../src/fe-gtk/menu.c \ + ../src/fe-gtk/notifygui.c \ + ../src/fe-gtk/plugin-tray.c \ + ../src/fe-gtk/plugingui.c \ + ../src/fe-gtk/rawlog.c \ + ../src/fe-gtk/search.c \ + ../src/fe-gtk/servlistgui.c \ + ../src/fe-gtk/setup.c \ + ../src/fe-gtk/textgui.c \ + ../src/fe-gtk/urlgrab.c \ + ../src/fe-gtk/userlistgui.c diff --git a/xchat-2.8.8/po/POTFILES.in b/xchat-2.8.8/po/POTFILES.in new file mode 100644 index 0000000..f0f06df --- /dev/null +++ b/xchat-2.8.8/po/POTFILES.in @@ -0,0 +1,37 @@ +src/common/cfgfiles.c +src/common/dcc.c +src/common/ignore.c +src/common/notify.c +src/common/outbound.c +src/common/plugin.c +src/common/server.c +src/common/servlist.c +src/common/textevents.h +src/common/text.c +src/common/util.c +src/common/xchat.c +src/common/dbus/dbus-client.c +src/common/dbus/dbus-plugin.c +src/fe-gtk/about.c +src/fe-gtk/ascii.c +src/fe-gtk/banlist.c +src/fe-gtk/chanlist.c +src/fe-gtk/dccgui.c +src/fe-gtk/editlist.c +src/fe-gtk/fe-gtk.c +src/fe-gtk/fkeys.c +src/fe-gtk/gtkutil.c +src/fe-gtk/ignoregui.c +src/fe-gtk/joind.c +src/fe-gtk/maingui.c +src/fe-gtk/menu.c +src/fe-gtk/notifygui.c +src/fe-gtk/plugin-tray.c +src/fe-gtk/plugingui.c +src/fe-gtk/rawlog.c +src/fe-gtk/search.c +src/fe-gtk/servlistgui.c +src/fe-gtk/setup.c +src/fe-gtk/textgui.c +src/fe-gtk/urlgrab.c +src/fe-gtk/userlistgui.c diff --git a/xchat-2.8.8/po/be.gmo b/xchat-2.8.8/po/be.gmo new file mode 100644 index 0000000000000000000000000000000000000000..05fd44b17495c5caff41ce2ba49bd2cfc3ef15d8 GIT binary patch literal 114859 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 literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/po/be.po b/xchat-2.8.8/po/be.po new file mode 100644 index 0000000..c11deb5 --- /dev/null +++ b/xchat-2.8.8/po/be.po @@ -0,0 +1,5681 @@ +# translation of xchat-2.8.1.po to Belarusian +# This file is put in the public domain. +# Pavel Piatruk , 2006, 2007. +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.8.1\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2007-05-23 12:27+0300\n" +"Last-Translator: Pavel Piatruk \n" +"Language-Team: Belarusian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.10.2\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Не магу стварыць ~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Я заняты" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Выходжу" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* Выконваць IRC з-пад root'a - глупства.\n" +" Вы павінны стварыць карыстальніцкі\n" +" рахунак у сістэме і ўжываць яго\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Чаканне" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Актыўны" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Памылка" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Выканана" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Злучэнне" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Перарвана" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "Няма доступу да %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Памылка" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s прапануе \"%s\". Вы згодны?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Няма актыўных каналаў данніх (DCC)\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "Так " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "Не " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Вас затапліваюць CTCP запытамі з %s, %s ігнаруецца\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "Вас затапліваюць паведамленнямі з %s, аўтадыялог адключаны\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s у сеціве\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s адключаны\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #\n" +msgstr "Не зайшлі на канал. Паспрабуйце /join #\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server []\n" +msgstr "Няма злучэння. Паспрабуйце /server <вузел> [<порт>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Ужо пазначаны адышэдшым: %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "Ужо пазначаны вярнуўшымся.\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "Для запуску патрэбна праграма /bin/sh !\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Даступныя каманды:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Вызначаныя карыстальнікам каманды:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Вызначаныя плагінам каманды:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP for more information, or /HELP -l" +msgstr "Набярыце /HELP <каманда> для даведкі ці /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Невядомы аргумент '%s' праігнараваны." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "Плагін не знойдзены.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Гэты плагін немагчыма выгрузіць.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON , adds a button under the user-list" +msgstr "ADDBUTTON <імя> <дзеянне>, дадае кнопку пад спісам карыстальнікаў" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN , sends a command to all channels you're in" +msgstr "ALLCHAN <каманда>, дасылае каманду на ўсе каналы, куды вы зайшлі" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL , sends a command to all channels you're in" +msgstr "ALLCHANL <каманда>, дасылае каманду на ўсе каналы, куды вы зайшлі" + +#: src/common/outbound.c:3501 +msgid "ALLSERV , sends a command to all servers you're in" +msgstr "ALLSERV <каманда>, дасылае каманду на ўсе серверы, з якімі вы злучаны" + +#: src/common/outbound.c:3502 +msgid "AWAY [], sets you away" +msgstr "AWAY [<прычына>], усталяваць статус \"адыйшоў\"" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "BACK, пазначае вас вярнуўшымся (не адышэдшым)" + +#: src/common/outbound.c:3505 +msgid "" +"BAN [], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <маска> [<тыпзабароны>], забараняе доступ да канала кожнаму, хто " +"адпавядае маске. Калі гэткія карыстальнікі ўжо на канале, яны не будуць " +"выпхнутыя. (Трэба правы аператара)" + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] []" +msgstr "SET [-e] [-quiet] <пераменная> [<значэнне>]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "CLEAR, Ачышчае бягучае тэкставае акно або гісторыю каманд" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, Закрывае бягучае акно ці ўкладку" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] , finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <код|маска>, шукае код краіны, напрыклад: au = australia" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP , send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <мянушка> <паведамленне>, дасылае мянушцы CTCP-паведамленне, напрыклад, " +"VERSION ці USERINFO" + +#: src/common/outbound.c:3516 +#, fuzzy +msgid "" +"CYCLE [], parts the current or given channel and immediately rejoins" +msgstr "CYCLE, выйсці з бягучага канала і адразу зайсці зноў" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET - accept an offered file\n" +"DCC SEND [-maxcps=#] [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT - offer DCC CHAT to someone\n" +"DCC PCHAT - offer DCC CHAT using passive mode\n" +"DCC CLOSE example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <мянушка> - дазволіць прапанаваны файл\n" +"DCC SEND [-maxcps=#] <мянушка> [файл] - даслаць файл камусьці\n" +"DCC PSEND [-maxcps=#] <мянушка> [файл] - даслаць файл у пасіўным рэжыме\n" +"DCC LIST - паказаць спіс DCC\n" +"DCC CHAT <мянушка> - прапанаваць DCC CHAT камусьці\n" +"DCC PCHAT <мянушка> - прапанаваць DCC CHAT у пасіўным " +"рэжыме\n" +"DCC CLOSE <тып> <мянушка> <файл> напрыклад:\n" +" /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP , removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <мянушка>, выдаляе статус паўаператара ў мянушкі на бягучым канале " +"(патрэбен статус аператара)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON , deletes a button from under the user-list" +msgstr "DELBUTTON <імя>, выдаляе кнопку пад спісам карыстальнікаў" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP , removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <мянушка>, выдаляе статус аператара ў мянушкі на бягучым канале " +"(патрэбен статус аператара)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE , removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <мянушка>, выдаляе права голасу ў мянушкі на бягучым канале " +"(патрэбен статус аператара)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, Адлучыцца ад сервера" + +#: src/common/outbound.c:3538 +msgid "DNS , Finds a users IP number" +msgstr "DNS <мянушка|вузел|ip>, Знайсці IP-адрас карыстальніка" + +#: src/common/outbound.c:3539 +msgid "ECHO , Prints text locally" +msgstr "ECHO <тэкст>, Выводзіць тэкст на лакальнай машыне" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] , runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <каманда>, запускае каманду. Калі ўжыты параметр -o, вывад будзе " +"дасланы ў бягучы канал, інакш у бягучае тэкставае акно" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, дасылае працэсу сігнал SIGCONT" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], забівае выконваючуюся каманду ў бягучай сесіі. Калі адзначаны " +"флаг -9, працэсу дасылается сігнал SIGKILL" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, дасылае працэсу сігнал SIGSTOP" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, дасылае данні на стандартны ўваход працэса (stdin)" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, скінуць чаргу дасылкі на бягучы сервер" + +#: src/common/outbound.c:3556 +msgid "GATE [], proxies through a host, port defaults to 23" +msgstr "GATE <вузел> [<порт>], далучыцца праз вузел, прадвызначаны порт 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST [password], Kills a ghosted nickname" +msgstr "GHOST <мянушка> <пароль>, Выпхнуць з канала карыстальніка-здань" + +#: src/common/outbound.c:3565 +msgid "HOP , gives chanhalf-op status to the nick (needs chanop)" +msgstr "" +"HOP <мянушка>, даць правы паў-аператара карыстальніку (патрэбна мець правы " +"аператара)" + +#: src/common/outbound.c:3566 +msgid "ID , identifies yourself to nickserv" +msgstr "ID <пароль>, ідэнтыфікаваць сябе nickserv" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE \n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <маска> <тыпы..> <уласцівасці..>\n" +" маска - маска для ігнаравання, напрыклад: *!*@*.aol.com\n" +" тыпы - тыпы дадзеных для ігнаравання:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" уласцівасці - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE [], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <мянушка> [<канал>], запрасіць кагосьці на канал, калі назва канала " +"не пазначана - на бягучы канал (патрэбен статус аператара)" + +#: src/common/outbound.c:3576 +msgid "JOIN , joins the channel" +msgstr "JOIN <канал>, увайсці на канал" + +#: src/common/outbound.c:3578 +msgid "KICK , kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <мянушка>, выпхнуць карыстальніка з бягучага канала (патрэбен статус " +"аператара)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN , bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <мянушка>, забараняе, а потым выпіхвае карыстальніка з бягучага " +"канала (патрэбен статус аператара)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, выканаць праверку сігнала" + +#: src/common/outbound.c:3585 +msgid "LASTLOG , searches for a string in the buffer" +msgstr "LASTLOG <радок>, знайсці радок у буферы" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] , loads a plugin or script" +msgstr "LOAD [-e] <файл>, загрузіць плагін ці скрыпт" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, Адабраць паў-аператара ва ўсіх карыстальнікаў бягучага канала " +"(патрэбен статус аператара)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, Адабраць аператара ва ўсіх карыстальнікаў бягучага канала (патрабуе " +"статус аператара)" + +#: src/common/outbound.c:3594 +msgid "" +"ME , sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <дзеянне>, дасылае дзеянне на бягучы канал (дзеянні пішуцца ад трэцяй " +"асобы, напрыклад, /me скача)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, Выпхнуць усіх карыстальнікаў з бягучага канала, акрамя вас (патрэбен " +"статус аператара)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, Надаць усім карыстальнікам бягучага канала статус аператара (патрэбен " +"статус аператара)" + +#: src/common/outbound.c:3602 +msgid "MSG , sends a private message" +msgstr "MSG <мянушка> <паведамленне>, дасылае асабістае паведамленне" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, Пералічыць мянушкі карыстальнікаў на бягучым канале" + +#: src/common/outbound.c:3607 +msgid "NCTCP , Sends a CTCP notice" +msgstr "NCTCP <мянушка> <паведамленне>, Дасылае CTCP-абвяшчэнне" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] []" +msgstr "NEWSERVER [-noconnect] []" + +#: src/common/outbound.c:3609 +msgid "NICK , sets your nick" +msgstr "NICK <мянушка>, змяняе вашую мянушку" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE , sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <мянушка/канал> <паведамленне>, дасылае абвяшчэнне. Абвяшчэнні гэта " +"тып паведамленняў, на якія трэба аўтаматычна рэагаваць" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n сеціва1[,сеціва2]] [<мянушка>], пералічвае ваш спіс абвяшчэнняў " +"ці дадае некага ў яго" + +#: src/common/outbound.c:3616 +msgid "OP , gives chanop status to the nick (needs chanop)" +msgstr "" +"OP , дае мянушцы статус аператара канала (патрэбен статус аператара)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [] [], leaves the channel, by default the current one" +msgstr "" +"PART [<канал>] [<прычына>], выйсці з канала, калі канал не вызначаны, то з " +"бягучага" + +#: src/common/outbound.c:3620 +msgid "PING , CTCP pings nick or channel" +msgstr "PING <мянушка | канал>, CTCP пінг мянушкі ці канала" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] , opens up a new privmsg window to someone" +msgstr "QUERY [-nofocus] <мянушка>, адкрывае дыялог для асабістай размовы" + +#: src/common/outbound.c:3624 +msgid "QUIT [], disconnects from the current server" +msgstr "QUIT [<прычына>], адлучыцца ад бягучага сервера" + +#: src/common/outbound.c:3626 +msgid "QUOTE , sends the text in raw form to the server" +msgstr "QUOTE <тэкст>, даслаць тэкст у неапрацованай форме да сервера" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [] [] [], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<вузел>] [<порт>] [<пароль>], Можа быць выклікана як /" +"RECONNECT для перадалучэння да бягучага сервера ці /RECONNECT ALL для " +"перадалучэння да ўсіх адкрытых сервераў" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [] [] [], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [-ssl] [<вузел>] [<порт>] [<пароль>], Можа быць выклікана як /" +"RECONNECT для перадалучэння да бягучага сервера ці /RECONNECT ALL для " +"перадалучэння да ўсіх адкрытых сервераў" + +#: src/common/outbound.c:3634 +msgid "" +"RECV , send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <>, дасылае неапрацованыя дадзеныя xchat, як яны былі атрыманы з IRC-" +"сервера" + +#: src/common/outbound.c:3637 +msgid "SAY , sends the text to the object in the current window" +msgstr "SAY <тэкст>, дасылае тэкст аб'екту ў бягучым акне" + +#: src/common/outbound.c:3638 +msgid "SEND []" +msgstr "SEND []" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] , connects and joins a channel" +msgstr "SERVCHAN [-ssl] <вузел> <порт> <канал>, злучыцца і ўвайсці на канал" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN , connects and joins a channel" +msgstr "SERVCHAN <вузел> <порт> <канал>, злучыцца і ўвайсці на канал" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] [] [], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <вузел> [<порт>] [<пароль>], злучыцца з серверам, " +"прадвызначаны порт 6667, для звычайнай сувязі і 9999 для ssl-злучэнняў" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER [] [], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <вузел> [<порт>] [<пароль>], злучыцца з серверам, прадвызначаны порт " +"6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] []" +msgstr "SET [-e] [-quiet] <пераменная> [<значэнне>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]" +msgstr "SETCURSOR [-|+]<пазіцыя>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<тэма>], усталяваць тэму, калі яна вызначана, інакш вывесці бягучую " +"тэму" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f [] Blink tray between two icons.\n" +"TRAY -f Set tray to a fixed icon.\n" +"TRAY -i Blink tray with an internal icon.\n" +"TRAY -t Set the tray tooltip.\n" +"TRAY -b <text> Set the tray balloon." +msgstr "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Мірганне ў сподку між двума значкамі.\n" +"TRAY -f <filename> Замацаваць значку ў сподкавым элеменце.\n" +"TRAY -i <number> Мірганне ў сподку ўнутранай значкай.\n" +"TRAY -t <text> Усталяваць тэкст сподкавага элемента.\n" +"TRAY -b <title> <text> Усталяваць выплыўны тэкст сподкавага " +"элемента." + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <маска> [<маска>...], зняць забарону з вызначаных масак." + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <mask> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <імя>, выгрузіць плагін ці скрыпт" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, адкрыць URL у вашым браўзеры" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <мянушка1> <мянушка2> і г.д., падсвечваць вызначаную(ыя) " +"мянушку(і) ў спісе карыстальнікаў" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "" +"VOICE <мянушка>, даць голас камусьці (патрэбен статус аператара канала)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <паведамленне>, напісаць паведамленне ва ўсіх каналах" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <паведамленне>, даслаць паведамленне ўсім аператарам бягучага канала" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Карыстанне: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"Ніякай даведкі не існуе для гэтай каманды.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Няма гэткай каманды.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Дрэнныя аргументы карыстальніцкай каманды.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Зашмат рэкурсіўных падкаманд, перарываюся." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Невядомая каманда. Паспрабуйце /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "Няма сімвала xchat_plugin_init; ці гэта сапраўды плагін Xchat?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Ці вы ўпэўнены, што гэта сумяшчальны з SSL сервер і порт?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Немагчыма знайсці імя %s\n" +"Праверце вашыя наладкі IP!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Не атрымліваецца злучыцца з проксі.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Спрабую іншы сервер %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Увага: \"%s\" знаказбор невядомы. Ніякага пераўтварэння знакаў для сеціва %s " +"не будзе." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 дададзены ў спіс абвяшчэнняў." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Спіс забароненых:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tНемагчыма ўвайсці на%C26 %B$1 %O(Вы пад забаронаю)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 вядомы як $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 выставіў забарону на $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tКанал $1 створаны на $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O адабраў статус паў-аператара канала ў%C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O адабраў статус аператара канала ў%C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O адабраў голас у%C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 усталяваў выключэнне на $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O даў статус паў-аператара канала%C26 $2" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 усталяваў запрашэнне на $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UКанал Карыст. Тэма" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 усталяваў рэжым $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Рэжымы канала $1: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O даў статус аператара канала %C26 $2" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 выдаліў выключэнне на $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 выдаліў запрашэнне на $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 выдаліў ключавое слова канала" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 выдаліў абмежаванне карыстальніка" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 усталяваў ключавое слова канала: $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 усталяваў абмежаванне канала ў $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 выдаліў забарону на $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O даў голас%C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Злучана. Уваход..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22Злучэнне з $1 ($2), порт $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "Злучэнне не атрымалася. Памылка: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tАтрымана CTCP $1 ад $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tАтрымана CTCP $1 ад $2 (да $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tАтрыманы CTCP-гук $1 ад $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tАтрыманы CTCP-гук $1 ад $2 (да $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tDCC CHAT з %C26$1%O перарвана." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC CHAT злучэнне ўсталявана з %C26$1 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tDCC CHAT з %C26$1%O страчана ($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tАтрымана прапанова DCC CHAT ад $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tПрапануецца DCC CHAT $1" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tУжо прапануецца CHAT to $1" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$tDCC $1 спроба злучэння з%C26 $2%O не ўдалася (err=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tАтрымана '$1%O' ад $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 Тып Да/Ад Статус Памер Паз Файл " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O.%010%C22*%O" +"$tContents of packet: $2" +msgstr "" +"%C22*%O$tАтрыманы няправільны DCC запыт ад %C26$1%O.%010%C22*%O$tЗмест " +"пакета: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tПрапанова%C26 $1%O да%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tНяма гэткай прапановы DCC." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV%C26 $2%O да%C26 $1%O перарвана." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC RECV%C26 $1%O ад%C26 $3%O завершана %C30[%C26$4%O cps%C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC RECV злучэнне ўсталявана з%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV%C26 $1%O з%C26 $3%O не атрымалася ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV: Немагчыма адкрыць $1 для запісу ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "%C22*%O$tФайл%C26 $1%C ужо існуе, захоўваю як %C26 $2%O." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Oзапытаў працяг%C26 $2 %Cз%C26 $3%C." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC SEND%C26 $2%O да%C26 $1%O перарвана." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC SEND%C26 $1%O з%C26 $2%O завершана %C30[%C26$3%O cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC SEND злучэнне ўсталявана з %C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND%C26 $1%O да%C26 $2%O не атрымалася. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Oпрапанаваў%C26 $2 %O(%C26$3 %Oбайтаў)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oда%C26 $3 %C перарвана: страчана хуткасць." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oда%C26 $3 %O перарвана: выйшаў час." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 выдалены са спіса абвяшчэнняў" + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tЗлучэнне страчана ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tЗнойдзены ваш IP: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O дададзены ў спіс ігнараванняў." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "Ігнараванне %C26$1%O зменена." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 Маска вузла PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O выдалены са спісу ігнараванняў." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " Спіс ігнараванняў пусты." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "" +"%C22*%O$tНемагчыма ўвайсці на%C26 %B$1 %O(Уваход толькі па запрашэннях)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tВы былі запрошаны на%C26 $1%O by%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) увайшоў на $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$tНемагчыма увайсці на%C26 %B$1 %O(Патрэбна ключавое слова)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 выпхнуў $2 з $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$t $1 выпхнуў вас ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22\"Паведамленне дня\" прапушчана." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 ужо выкарыстоўваецца. Спрабую $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$tМянушка ўжо кімсьці выкарыстоўваецца. Паспрабуйце каманду /NICK для " +"выбару іншай." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tНяма гэткага DCC." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tЗараз няма працуючых працэсаў" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tСпіс абвяшчэнняў пусты." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Спіс абвяшчэнняў " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 карыстальнікаў у спісе абвяшчэнняў." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tАбвяшчэнне: $1 адключыўся ($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tАбвяшчэнне: $1 падключыўся ($3)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) выйшаў з $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) выйшаў з $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tАдказ на пінг ад $1: $2 сек" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tНе атрымана адказаў на пінг на працягу $1 сек, разлучаемся." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tПрацэс ужо запушчаны" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 зыйшоў (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 усталяваў рэжым%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tШукаецца нумар IP %C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22Злучана." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22Шукаецца $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tСпынена папярэдняя спроба злучэння (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29Тэма для $1%C %C29: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 змяніў тэму на: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29Тэма для $1%C %C29усталявана $2%C %C29у $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tНевядомы хост. Магчыма, вы памыліліся?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "" +"%C22*%O$tНемагчыма ўвасці на %C26 %B$1 %O(Дасягнута карыстальніцкае " +"абмежаванне)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Карыстальнікі на $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cадыйшоў %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OКанец спіса WHOIS." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O без дзеянняў%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O бяздзейны%C26 $2%O, увайшоў:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" +"%C22*%O$t%C28[%O$1%C28] %Oсапраўдны user@host%C27 $2%O, сапраўдны IP%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Размаўляем на $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$t$3 выпхнуў вас з $2 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tВы выйшлі з канала $3" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tВы выйшлі з канала $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tВы запрошаны %C26 $1%O на %C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tЦяпер вы вядомы як $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** КАНЕЦ УВАХОДУ НА %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** ПАЧАТАК УВАХОДУ НА %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Немагчыма адкрыць лог-файл(ы) для запісу. Праверце\n" +" правы на %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Левае паведамленне" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Правае паведамленне" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "Мянушка ўваходзячай асобы" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "Канал для ўваходу" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "Хост гэтай асобы" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Мянушка" + +#: src/common/text.c:973 +msgid "The action" +msgstr "Дзеянне" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Знак рэжыму" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Вылучаны тэкст" + +#: src/common/text.c:980 +msgid "The text" +msgstr "Тэкст" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Паведамленне" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Старая мянушка" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Новая мянушка" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Мянушка асобы, якая змяніла тэму" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Тэма" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Канал" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "Мянушка асобы, якая выпхнула вас" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "Асоба, якую выпхнулі" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "Канал" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "Прычына" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "Мянушка асобы, што выходзіць" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "Час" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "Стваральнік" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Мянушка" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Прычына" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Хост" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "Адкуль" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "Час у фармаце x.x (глядзі ніжэй)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "Спіс каналаў" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "Гук" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "Мянушка гэтай асобы" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "CTCP падзея" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "Мянушка асобы, якая ўсталявала ключ" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "Ключ" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "Мянушка асобы, якая ўсталявала абмежаванне" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "Абмежаванне" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "Мянушка асобы, якая дала статус аператара" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "Мянушка асобы, якая атрымала статус аператара" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "Мянушка асобы, якая атрымала статус паў-аператара" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "Мянушка асобы, якая дала статус паў-аператара" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "Мянушка асобы, якая дала голас" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "Мянушка асобы, якая атрымала голас" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "Мянушка асобы, якая ўсталявала забарону" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "Маска забароны" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "Мянушка, якая выдаліла ключ" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "Мянушка, якая выдаліла абмежаванне" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "Мянушка асобы, якая адабрала статус аператара" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "Мянушка асобы, у якой быў адабраны статус аператара" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "Мянушка асобы, якая адабрала статус паў-аператара" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Мянушка асобы, у якой быў адабраны статус паў-аператара" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "Мянушка асобы, якая адабрала голас" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "Мянушка асобы, у якой быў адабраны голас" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "Мянушка асобы, якая зняла забарону" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "Мянушка асобы, якая ўсталявала выключэнне" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "Маска выключэння" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "Мянушка асобы, якая выдаліла выключэнне" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "Мянушка асобы, якая зрабіла запрашэнне" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "Маска запрашэння" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "Мянушка асобы, якая выдаліла запрашэнне" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "Мянушка асобы, якая ўсталявала рэжым" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "Знак рэжыму (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "Сімвал рэжыму" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "Канал для ўжыцця" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Імя карыстальніка" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Поўнае імя" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Член канала /\"аператар IRC\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Інфармацыя аб серверы" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Час бяздзеяння" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Час з уваходу" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Прычына адыходу" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Паведамленне" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Рахунак" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "Сапраўдны user@host" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "Сапраўдны IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Назва канала" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Тэкст" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Назва сервера" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Мянушка асобы, якая запрасіла вас" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Карыстальнікі" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Мянушка выкарыстоўваецца" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Спрабуемая мянушка" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Порт" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Сеціва" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Радок рэжымаў" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "IP адрас" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "Тып DCC" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Імя файла" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Назва файла ў атрымальніка" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS(знакаў у секунду)" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Шлях" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Пазіцыя" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Памер" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "Радок DCC" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Колькасць абвяшчэнняў" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Старое імя файла" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Новае імя файла" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Атрымальнік" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Маска камп'ютэра" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Назва камп'ютэра" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "Пакет" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Секунды" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Мянушка запрошанай асобы" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Маска забароны" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Хто ўсталяваў забарону" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Час забароны" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Памылка апрацоўкі падзеі %s.\n" +"Ужываем стандартныя паводзіны." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"Немагчыма прачытаць гукавы файл:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "Аддалены вузел закрыў сокет" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "У злучэнні адмоўлена" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Няма шляху да вузла" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Час злучэння выйшаў" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Немагчыма ўжыць гэта адрас" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Злучэнне пераўсталяваны тым бокам" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Узнясення астравы" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Андора" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Злучаныя Арабскія Эміраты" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Аўганістан" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Антыгуа і Барбуда" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Ангілья" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Албанія" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Арменія" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Нідэрландскія Антылы" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Ангола" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Антарктыка" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Аргентына" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "Адваротны DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Амерыканскае Самоа" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Аўстрыя" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "НАТО Фэйл" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Аўстралія" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Аруба" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Аланавы астравы" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Азербайджан" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Боснія і Герцагавіна" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Барбадос" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Бангладэш" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Бельгія" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Буркіна Фасо" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Баўгарыя" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Бахрэйн" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Бурундзі" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Бізнесовыя" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Бенін" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Бэрмуды" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Брунэй" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Балівія" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Бразілія" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Багамы" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Бутан" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Востраў Бувет" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Батсвана" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Беларусь" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Белізе" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Канада" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Какос астравы" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "Дэмакратычная Рэспубліка Конга" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "Цэнтральна-Афрыканская Рэспубліка" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Конга" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Швейцарыя" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Кот д'Івуар" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Астравы Кука" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Чылі" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Камерун" + +#: src/common/util.c:898 +msgid "China" +msgstr "Кітай" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Калумбія" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Камерцыйныя Адрасы" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Коста Рыка" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Сербія і Чарнагорыя" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Куба" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Кабо Вердэ" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Востраў Каляд" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Кіпр" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "Чэхія" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Нямеччына" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Джыбуці" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Данія" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Дамініка" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "Дамініканская Рэспубліка" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Алжыр" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Эквадор" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Адукацыйныя" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Эстонія" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Егіпет" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Заходняя Сахара" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Эрытрэя" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Гішпанія" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Эфіёпія" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Еўразвяз" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Фінляндыя" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Фіджы" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Фалклендскія астравы (Мальвіны)" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Федэрацыя Мiкранэзіі" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Астравы Фароэ" + +#: src/common/util.c:928 +msgid "France" +msgstr "Францыя" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Габон" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Вялікая Брытанія" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Грэнада" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Грузія" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Французская Грэнада" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Брытанскія астравы Канала" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Гана" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Гібралтар" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Грынланд" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Гамбія" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Гвінея" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Урад" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Гвадэлупа" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Экватарыяльная Гвінэя" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Грэцыя" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Св.Георгія і Св.Сэндвіча астравы" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Гватэмала" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Гуам" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Гвінея-Бісаў" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Гвіяна" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Гонг-Конг" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Астравы Гэарда і МакДональда " + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Гандурас" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Харватыя" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Гаіці" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Вугоршчына" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Інданэзія" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Ірландыя" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Ізраіль" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Востраў Мэн" + +#: src/common/util.c:959 +msgid "India" +msgstr "Індыя" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Інфармацыйныя" + +#: src/common/util.c:961 +msgid "International" +msgstr "Міжнародныя" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Брытанская тэрыторыя Індыйскага акіяна" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Ірак" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Іран" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Ісландыя" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Італія" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Джэрсі" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Ямайка" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Ярданія" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Японія" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Кенія" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Кыргызстан" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Камбоджа" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Кiрыбацi" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Каморы" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "Сэнт-Кітс і Нэвіс" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Паўночная Карэя" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Паўднёвая Карэя" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Кувэйт" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Кайманавы астравы" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Казахстан" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Лаос" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Ліван" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Сэнт-Люсія" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Ліхтэнштэйн" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Шры-Ланка" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Лібэрыя" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Лесота" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Літва" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Люксэмбург" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Латвія" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Лівія" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Марока" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Манака" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Малдова" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "Злучаныя Штаты, медыцына" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Мадагаскар" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Маршалавы астравы" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Вайсковыя" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Македонія" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Малі" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "М'янма" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Манголія" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Макау" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Паўночныя Марыянскія астравы" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Мартыніка" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Маўрытанія" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Мантсэрат" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Мальта" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Маўрыцы" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Мальдывы" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Малаві" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Мэксыка" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Малайзыя" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Мазамбік" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Намібія" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Новая Каледонія" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Нігер" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Унутраныя сецівы" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Норфалк" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Нігерыя" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Нікарагуа" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Галяндыя" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Нарвэгія" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Нэпал" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Науру" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Ніўэ" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Новая Зеландыя" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Аман" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Унутраныя некамерцыйныя арганізацыі" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Панама" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Пэру" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Французская Палінэзія" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Папуа Новая Гвінея" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Філіпіны" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Пакістан" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Польшча" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "Сэн-П'ер і Мікелон" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Піткэрн" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Пуэрта Рыка" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Палестынская тэрыторыя" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Партугалія" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Палаў" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Парагвай" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Катар" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Рэюньён" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Румынія" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "Старое сеціва ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Расія" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Руанда" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Саўдаўская Арабія" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Саламонавы астравы" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Сэйшэлы" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Судан" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Швецыя" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Сінгапур" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "Востраў Сьвятой Алены" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Славенія" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Астравы Свальбард і Яна Майхема" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Славакія" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Сьера-Леонэ" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "Сан-Марына" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Сенегал" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Самалі" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Сурынам" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "Сан-Тамэ і Прынсіпі" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Былы СССР" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "Сальвадор" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Сырыя" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Свазылэнд" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Астравы Тэркс і Кайкас" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Чад" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Французскія паўднёвыя тэрыторыі" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Тога" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Тайланд" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Таджыкістан" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Такелаў" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Усходні Тымор" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Туркменістан" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Туніс" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Тонга" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Турцыя" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Трынідад і Табага" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Тувалу" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Тайвань" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Злучаная Рэспубліка Танзанія" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Украіна" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Уганда" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Аб'яднанае Каралеўства" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "Злучаныя Штаты Амерыкі" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Уругвай" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Узбекістан" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Ватыкан" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "Св.Вінсент і Грэнадзіны" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Венесуэла" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Брытанскія астравы Вірджын" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "ЗША астравы Вірджын" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "В'етнам" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Вануату" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Воліс і Футуна астравы" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Самоа" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Йемен" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Маёт" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Югаславія" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Паўдневая Афрыка" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Забмія" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Зімбабвэ" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Невядома" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "Пачаць дыялог" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "Даслаць файл" + +#: src/common/xchat.c:728 +#, fuzzy +msgid "_User Info (WhoIs)" +msgstr "Звесткі (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +#, fuzzy +msgid "O_perator Actions" +msgstr "Дзеянні аператара" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Даць аператара" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Забраць аператара" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Даць голас" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Забраць голас" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Выпхнуць/забараніць" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Выпхнуць" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Забараніць" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "Выпхнуць і забараніць" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Выйсці з канала" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Увайсці на канал..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Вызначце канал для ўваходу:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Спасылкі сервера" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Пінгаваць сервер" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Схаваць версію" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Аператар" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "Адабраць аператара" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "пакуль" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Увядзіце прычыну выпіхвання %s:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Даслаць файл" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Дыялог" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "Хто ёсць" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Даслаць" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Размова" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Ачысціць" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "Немагчыма злучыцца з шынай сесій (session bus)" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "Немагчыма скончыць NameHasOwner" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "Немагчыма скончыць Command" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "аддалены доступ" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "Плагін для аддаленага доступу (выкарыстоўвае DBUS)" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Немагчыма злучыцца з шынай сесій : %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Немагчыма дасягнуць %s : %s\n" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "Аб праграме" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Шматплатформенны кліент IRC" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Палітра літар" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "Не злучана." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Трэба выбраць некалькі забаронаў." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "Ці вы ўпэўнены, што хочаце выдаліць усе забароны у %s?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Маска" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "Адкуль" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Дата" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" +"Вы можаце адкрыць акно са спісам забаронаў толькі пры адкрытай укладцы " +"канала." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: спіс забаронаў (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Выдаліць" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Сціснуць" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Аднавіць" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Паказ %d/%d карыстальнікаў на %d/%d каналах." + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Абярыце імя файла для вываду" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "У_вайсці на канал" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "_Капіяваць назву канала" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "Капіяваць тэкст _тэмы" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: Спіс каналаў (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "_Пошук" + +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "Спіс спа_мповак" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "Захаваць _спіс як..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "Паказаць толькі:" + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "каналы з ад" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "да" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "карыстальнікамі" + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "Глядзець у" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "Назва канала" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "Тып пошуку:" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "Просты пошук" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "Узор адпавядае (Wildcards)" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "Рэгулярны выраз" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Знайсці:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Даслаць файл %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Працяг гэтага файла немагчымы." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"Немагчыма атрымаць доступ да файла: %s\n" +"%s.\n" +"Працяг немагчымы." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"Файл у тэчцы спампоўванняў большы за прапанаваны файл. Працяг немагчымы." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "Немагчыма працягнуць той жа самы файл з двух чалавек." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: запампоўкі і спампоўкі" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Статус" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Файл" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "Прайшло часу" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Абодва" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Запампоўкі" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "Спампоўкі" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Падрабязнасці" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Файл:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "Адрас:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Перарваць" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Прыняць" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Працягнуць" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Адкрыць тэчку..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: Спіс DCC Chat" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Прын" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Дасл" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "Час пачатку" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*НОВЫ" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "ЗМЯНІ МЯНЕ" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Імя" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Каманда" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Вышэй" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Ніжэй" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Адмяніць" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Захаваць" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Дадаць" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Выдаліць" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Сартаваць" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Дапамога" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "Не злучацца з серверамі аўтаматычна" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "Выкарыстоўваць іншую тэчку наладак" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "Не загружаць плагіны аўтаматычна" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "Паказаць тэчку аўтазагрузкі плагінаў" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "Паказаць тэчку карыстальніцкіх наладак" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Адкрыць URL, irc://server:port/channel" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Выканаць каманду:" + +#: src/fe-gtk/fe-gtk.c:132 +#, fuzzy +msgid "Open URL or execute command in an existing XChat" +msgstr "Адкрыць URL у існуючым XChat" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +#, fuzzy +msgid "level" +msgstr "Ніколі" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Паказаць звесткі аб версіі" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"Памылка адкрыцця шрыфту:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "Буфер пошуку пусты.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d байтаў" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Сеціўная чарга дасылкі: %d байтаў" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"Дзеянне Выканаць Каманду выконвае Данні 1 як каманду, быццам яна была " +"ўведзена ў полі ўводу, у якім была націснута паслядоўнасць клавішаў. Можа " +"змяшчаць тэкст (які будзе дасланы да канала ці асобы), каманды або каманды " +"карыстальніка. Падчас выканання ўсе знакі \\n у Данніх 1 будуць скарыставаны " +"для пазначэння падзелаў паміж камандамі, такім чынам, магчыма выканаць больш " +"за адну каманду. Калі вы жадаеце ўжыць \\ у тэксце каманды, пішыце замест " +"гэтага \\\\" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"Каманда Змяніць Старонку пераключае старонкі ў нататніку. Усталюйце Данні 1 " +"на старонку, куды трэба пераключыцца. Калі Данні 2 ўсталяваны, то будзе " +"лічыцца адносна бягучай пазіцыі." + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"Каманда Ўставіць у буфер уставіць змест Данніх 1 у поле, дзе была націснута " +"камбінацыя клавішаў, у бягучую пазіцыю курсора" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"Каманда Пракрутка Старонкі пракручвае тэкставае аздабленне ўніз ці ўверх на " +"адну старонку ці на адзін радок. Усталюйце Данні 1 як Up, Down, +1 ці -1." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"Каманда Усталяваць Буфер усталёўвае значэнне поля поля, дзе была націснута " +"камбінацыя клавішаў, у значэнне Данніх 1" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"Каманда Апошняя Каманда вяртае ў поле апошнюю каманду, гэтаксама ж, як у " +"каманднай абалонцы націсканне кнопкі Ўверх" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"Каманда Наступная Каманда вяртае ў поле наступную каманду, гэтаксама ж, як у " +"каманднай абалонцы націсканне кнопкі Ўніз" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Гэта каманда змяняе тэкст у полі для дапаўнення нескончанай мянушкі ці " +"каманы. Калі Данні 1 усталяваныя, двайны націск табуляцыі выбярэ не " +"наступную, а апошнюю мянушку" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Гэта каманда пракручвае ўніз і ўверх спіс карыстальнікаў. Калі Данні 1 " +"усталяваны, будзе пракрутка ўверх, інакш - уніз" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Гэта каманда правярае апошняе ўведзенае слова ў спіс заменаў і замяняе ў " +"выпадку знаходжання адпаведнасці" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Гэта каманда перамяшчае пярэднюю ўкладку на адну пазіцыю ўлева" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Гэта каманда перамяшчае пярэднюю ўкладку на адну пазіцыю ўправа" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Гэта каманда перамяшчае бягучую групу ўкладак на адну пазіцыю ўлева" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Гэта каманда перамяшчае бягучую групу ўкладак на адну пазіцыю ўправа" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "Запісаць радок у журнал, але не дасылаць да сервера" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "Памылка загрузкі наладак камбінацыяў клавішаў" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<ніякі>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Мад" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Клавіша" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Дзеянне" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: Камбінацыі клавішаў" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Данні 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Данні 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Памылка адкрыцця файла наладак клавішаў\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Невядомая назва клавішы %s у файле наладак клавішаў\n" +"Загрузка перарвана, выпраўце %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Невядомае дзеянне %s у файле наладак клавішаў\n" +"Загрузка перарвана, выпраўце %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Чакаўся радок данніх (пачатак Dx{:|!}) , але атрымана:\n" +"%s\n" +"\n" +"Загрузка перарвана, выпраўце %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"Файл наладак клавішаў пашкоджаны, загрузка перарвана\n" +"Выпраўце %s/keybindings\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "Немагчыма запісаць у гэты файл" + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Немагчыма прачытаць гэты файл" + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Гэта маска ўжо існуе" + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Асабісты" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Абвяшчэнне" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Запрашэнне" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Не ігнараваць" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Увядзіце маску для ігнаравання:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: Спіс ігнараванняў" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Статыстыка ігнараванняў:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Канал:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Асабісты:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Абвяшчэнне:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Запрашэнне:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "Дадаць..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "Імя канала занадта кароткае, паспрабуйце зноў." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: Злучэнне выканана" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "Злучэнне з %s выканана." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"У акне спіса сервераў ніводнага канала (пакоя размовы) не было ўведзена для " +"аўтаматычнага ўваходу для гэтага сеціва." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "Што вы маеце рабіць наступным?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "_Нічога, Я ўвайду на канал пазней." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "_Увайсці на канал:" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Калі вы ведаеце імя канала для ўваходу, увядзіце яго тут." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "_Адкрыць акно спісу каналаў." + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "Атрыманне спісу каналаў патрабуе хвіліну ці дзве." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "_Заўсёды паказваць гэты дыялог пасля злучэння." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Дыялог з" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Тэма для %s : %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Ніякай тэмы не ўсталявана" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "Гэты сервер мае %d адкрытых каналаў ці дыялогаў. Ці закрыць іх усе?" + +#: src/fe-gtk/maingui.c:1283 +#, fuzzy +msgid "Quit XChat?" +msgstr "Аб праграме" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1310 +#, fuzzy, c-format +msgid "You are connected to %i IRC networks." +msgstr "" +"Вы злучаны з <b>%u</b> сецівамі IRC.\n" +"Ці ўпэўнены, што хочаце выйсці?" + +#: src/fe-gtk/maingui.c:1312 +#, fuzzy +msgid "Are you sure you want to quit?" +msgstr "Ці вы ўпэўнены, што хочаце выдаліць усе забароны у %s?" + +#: src/fe-gtk/maingui.c:1314 +#, fuzzy +msgid "Some file transfers are still active." +msgstr "Некаторыя перадачы файлаў актыўныя, выйсці з xchat?" + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Пакіньце ўласцівасць ці код колеру" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Тлусты</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Падкрэслены</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Звычайны" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Колеры 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Колеры 8-15" + +#: src/fe-gtk/maingui.c:1612 +#, fuzzy +msgid "_Settings" +msgstr "Наладкі" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "Схаваць паведамленні аб уваходзе і адыходзе" + +#: src/fe-gtk/maingui.c:1625 +#, fuzzy +msgid "_Extra Alerts" +msgstr "Тэрміновыя паведамленні" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "Гукавы сігнал пры паведамлення" + +#: src/fe-gtk/maingui.c:1628 +#, fuzzy +msgid "Blink Tray _Icon" +msgstr "Міргаць сподкавай значкай пры:" + +#: src/fe-gtk/maingui.c:1629 +#, fuzzy +msgid "Blink Task _Bar" +msgstr "Міргаць сподкам пры:" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +#, fuzzy +msgid "_Detach" +msgstr "Адлучыць укладку" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "_Закрыць" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "Абмежаванне карыстальніка павінна быць лічбай!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Ахова тэмы" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Няма вонкавых паведамленняў" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Сакрэт" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Толькі па запрашэннях" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Мадэраваны" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Спіс забарон" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Ключавое слова" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Абмежаванне карыстальніка" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Паказаць/Схаваць спіс карыстальнікаў" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"Немагчыма ўсталяваць празрысты фон!\n" +"\n" +"Пэўна, выкарыстоўваецца несумяшчальны мэнэджэр акон\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Увядзіце новую мянушку:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Вузел невядомы" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Сапраўднае імя:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Карыстальнік:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "Краіна:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Сервер:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "%u хвілін таму" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Апошняе паведамленне:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Паведамленне адыходу:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"Меню зараз схована. Яно вернецца, калі націснеце F9 ці шчоўкнеце правай " +"кнопкай мышы на свабоднай прасторы тэкставага акна." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Адкрыць спасылку ў браўзеры" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Капіяваць пазначаную спасылку" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Увайсці на канал" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Выйсці з канала" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Каналы па кругу" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: Меню карыстальніка" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Рэдагаваць гэтае меню..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Атрымаць спіс каналаў..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Каманды карыстальніка - Спецыянальныя кады:\n" +"\n" +"%c = бягучы канал\n" +"%m = інфармацыя пра машыну\n" +"%n = ваша мянушка\n" +"%t = час/дата\n" +"%v = версія xchat\n" +"%2 = слова 2\n" +"%3 = слова 3\n" +"&2 = слова 2 ад канцу радка\n" +"&3 = слова 3 ад канцу радка\n" +"\n" +"напрыклад:\n" +"/cmd john hello\n" +"\n" +"%2 будзе \"john\"\n" +"&2 будзе \"john hello\"." + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Кнопкі спісу карыстальнікаў- Спецыяльныя кады:\n" +"\n" +"%a = усе пазначаныя мянушкі\n" +"%c = бягучы канал\n" +"%h = назва вузла пазначанай мянушкі\n" +"%e = назва бягучага сеціва\n" +"%m = інфармацыя пра машыну\n" +"%n = ваша мянушка\n" +"%s = пазначаная мянушка\n" +"%t = час/дата\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Кнопкі дыялогу - Спецыяльныя кады:\n" +"\n" +"%a = усе пазначаныя мянушкі\n" +"%c = бягучы канал\n" +"%e = назва бягучага сеціва\n" +"%h = назва вузла пазначанай мянушкі\n" +"%m = інфармацыя пра машыну\n" +"%n = ваша мянушка\n" +"%s = пазначаная мянушка\n" +"%t = час/дата\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"Адказы CTCP - Спецыянальныя кады::\n" +"\n" +"%d = данні (ctcp цалкам)\n" +"%e = назва бягучага сеціва\n" +"%m = інфармацыя пра машыну\n" +"%s = мянушка таго, хто даслаў ctcp\n" +"%t = час/дата\n" +"%2 = слова 2\n" +"%3 = слова 3\n" +"&2 = слова 2 ад канцу радка\n" +"&3 = слова 3 ад канцу радка\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"Апрацоўшчыкі URL - Спецыяльныя кады:\n" +"\n" +"%s = радок URL\n" +"\n" +"Змяшчэнне ! (клічніка) наперадзе каманды\n" +"азначае, што яе будзе апрацоўваць камандная\n" +"абалонка, а не XChat" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: Вызначаныя карыстальнікам каманды" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: Кантэкстнае меню спісу карыстальнікаў" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Замяніць" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: Замена" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: Апрацоўчыкі URL" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: Кнопкі спісу карыстальнікаў" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: Кнопкі дыялогу" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: Адказы CTCP" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "Спіс _сеціў..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "_Новы" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Укладка сервера..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Укладка канала..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Акно сервера..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Акно канала..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "Загрузіць плагін ці скрыпт..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "_Выйсці" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "Пра_гляд" + +#: src/fe-gtk/menu.c:1591 +#, fuzzy +msgid "_Menu Bar" +msgstr "Меню" + +#: src/fe-gtk/menu.c:1592 +#, fuzzy +msgid "_Topic Bar" +msgstr "Тэма" + +#: src/fe-gtk/menu.c:1593 +#, fuzzy +msgid "_User List" +msgstr "Спіс карыстальнікаў" + +#: src/fe-gtk/menu.c:1594 +#, fuzzy +msgid "U_serlist Buttons" +msgstr "Кнопкі спісу карыстальнікаў" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "Кнопкі рэжыму" + +#: src/fe-gtk/menu.c:1597 +#, fuzzy +msgid "_Channel Switcher" +msgstr "каналы з ад" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "Укладкі" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "Дрэва" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "Вымярэнне сеціва" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Выкл" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Графік" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "_Сервер" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "_Разлучыцца" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "_Перадалучыцца" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "Увайсці на канал..." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "Увайсці на канал..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Пазначыць як \"Адыйшоў\"" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "_Меню карыстальніка" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "Наладкі" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "_Асаблівасці" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Адмысловыя" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Аўтазамена..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "Адказы CTCP..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Кнопкі дыялогаў..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Камбінацыі клавішаў..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Тэксты падзеяў..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "Апрацоўшчыкі URL..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Каманды карыстальніка..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Кнопкі спісу карыстальнікаў..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Меню спісу карыстальнікаў..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "Акно" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Спіс забароненых..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Палітра літараў..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Прамыя размовы..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Абмен файламі..." + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "Спіс забароненых..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Спіс ігнараванняў.." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Плагіны і скрыпты..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Журнал падзеяў..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "Зборшчык URL..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Скінуць маркер" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "А_чысціць тэкст" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Шукаць тэкст..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Захаваць тэкст" + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_Дапамога" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "_Змест" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "Аб праграме" + +#: src/fe-gtk/menu.c:2147 +#, fuzzy +msgid "_Attach" +msgstr "_Далучыць акно" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Апошні прагляд" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Разлучаны" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Ніколі" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "%d хвілін таму" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Злучаны" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Увядзіце мянушку:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "Абвяшчаць у гэтых сецівах:" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "Прымаецца спіс сеціваў, падзеленых коскамі." + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "XChat: Спіс ігнараванняў" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "Пачаць дыялог" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" +"Адсутнічае 'notify-send' для адкрыцця балёнікавых выплыўных паведамленняў.\n" +"Калі ласка, устанавіце libnotify." + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "XChat: злучана з %u сецівамі і %u каналамі" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "_Вярнуць" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "С_хаваць" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "_Міргаць пры" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "Канальным паведамленні" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "Асабістым паведамленні" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "Падсвечаным паведамленні" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "Адыход" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, fuzzy, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat: Падсвечанае паведамленне ад: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat: %u падсвечаных паведамленняў, апошняе ад: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat: Новае агульнае паведамленне ад: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat: %u новых агульных паведамленняў." + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat: Асабістае паведамленне ад: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "XChat: %u асабістых паведамленняў, апошняе ад: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat: прапанова файла ад: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "XChat: %u прапаноў файлаў, апошняя ад: %s (%s)" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Версія" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Апісанне" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Выберыце плагін ці скрыпт для загрузкі" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: плагіны і скрыпты" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "_Загрузіць" + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "_Выгрузіць" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Захаваць як..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: Журнал (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Ачысціць журнал" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "Адкрытае вамі акно пошуку болей не існуе." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "Пошук дасягнуў канца, не знойдзена." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: Пошук" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "_Улічваць рэгістр" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "Пошук _назад" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "_Знайсці" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Новае сеціва" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Сапраўды выдаліць сеціва \"%s\" і ўсе яго серверы?" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "Канал" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: Спіс каналаў (%s)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "Пароль:" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "_Рэдагаваць" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "Імя карыстальніка і сапраўднае імя не могуць быць пустымі." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: Рэдагаваць %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Сервера для %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Злучацца толькі з абранымі серверамі" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Не зацыклівацца на серверах, калі злучэнні абрываюцца" + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Падрабязнасці" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Выкарыстоўваць глабальная звесткі" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "_Мянушка" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Другі выбар" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "_Імя карыстальніка" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "Сапраўднае _імя" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Злучэнне" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Аўтаматычна злучацца з гэтым серверам пры старце" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "Выкарыстоўваць проксі" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "Ужываць SSL для ўсіх сервераў у гэтым сеціве" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Прымаць несапраўдны SSL-сертыфікат" + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "Выйсці з канала: " + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "Каналы для ўваходу, падзеленыя коскамі, але не прагаламі!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Каманда злучэння" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Дадатковыя каманды для выканання пасля злучэння. Калі патрэбна больш за " +"адну, прапішыце LOAD -e <файл>, дзе <файл> гэта тэкставы файл з камандамі." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Пароль для Nickserv:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Калі ваша мянушка патрабуе пароль, вы можаце ўвесці яго тут. Не ўсе сецівы " +"IRC падтрымліваюць гэта" + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Пароль сервера:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Пароль для сервера, калі сумняваецеся, пакіньце пустым." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Знаказбор:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: спіс абвяшчэнняў" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Звесткі аб карыстальніку" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Трэці выбар" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Сецівы" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "Не паказваць спіс сервераў пры старце" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "_Змяніць..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "_Упарадкаваць" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" +"Упарадкоўвае спіс сеціў паводле алфавіту. Выкарыстоўвайце камбінацыі SHIFT-" +"UP ды SHIFT-DOWN, каб зрушваць слупок." + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "_Злучыцца" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Выгляд тэкставага акна" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Шрыфт:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Фонавая выява:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Лініі пракруткі:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Каляровыя мянушкі" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Пазначыць кожнай персоне розны колер" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Рабіць водступ перад мянушкамі" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Выраўняць мянушкі па правым краі" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Празрысты фон" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Паказваць маркер" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Устаўляць чырвоную лінію пасля апошняга прагледжанага тэксту" + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Параметры празрыстасці" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Чырвоны" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Зялёны" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Блакітны" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Адзнакі часу" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Ужываць адзнакі часу" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Фармат адзнакаў часу" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Глядзіце man strftime" + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "Апошнесказаны парадак " + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Акно ўводу" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Шрыфт і колер як у тэкставым акне" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Праверка правапісу" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Дапаўненне мянушак" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "Аўтаматычнае дапаўненне мянушак (без клавішы TAB)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Суфікс дапаўнення мянушак" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "Дапаўненне сартавана" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Коды ў полі ўводу" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Разумець %nnn як ASCII код" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Разумець %C, %B як Колер, Тлусты і г.д." + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, Аператары першыя" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "A-Z, Аператары апошнія" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Не сартаваць" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Верх" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Ніз" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Схаваць" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Спіс карыстальнікаў" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Паказваць імёны хастоў у спісе карыстальнікаў" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Сартаваць спіс карыстальнікаў па:" + +#: src/fe-gtk/setup.c:205 +#, fuzzy +msgid "Show user list at:" +msgstr "Паказаць/Схаваць спіс карыстальнікаў" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Сачыць за адышэдшымі" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "Сачыць за адышэдшымі і маляваць іх іншым колерам" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "На каналах менш за" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Рэакцыя на падвоены націск мышы" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Вокны" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Укладкі" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Заўсёды" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Толькі запрошаныя ўкладкі" + +#: src/fe-gtk/setup.c:242 +#, fuzzy +msgid "Tree" +msgstr "Дрэва" + +#: src/fe-gtk/setup.c:249 +#, fuzzy +msgid "Switcher type:" +msgstr "Тып пошуку:" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Адкрываць дадатковыя ўкладкі для паведамленняў сервера (message)" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Адкрываць дадатковыя ўкладкі для заўваг сервера (notice)" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "Адкрываць новую ўкладку для атрымання асабістага паведамлення" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Сартаваць укладкі ў алфавітным парадку" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "Маленькія ўкладкі" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Фокус на новыя ўкладкі:" + +#: src/fe-gtk/setup.c:258 +#, fuzzy +msgid "Show channel switcher at:" +msgstr "каналы з ад" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Скарачаць укладкі да:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "знакаў" + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Укладкі ці вокны:" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Адкрываць каналы ў:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Адкрываць дыялогі ў:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Адкрываць сродкі ў:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Адкрываць DCC, Ігнараванне, Абвяшчэнні і г.д. ва ўкладках ці вокнах?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "Не" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Так" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "Выбіраць тэчку для захоўвання кожны раз" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Файлы і тэчкі" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Аўтаматычна згаджацца з прапановамі файлаў" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Спампоўваць файлы ў:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Перамяшчаць завершаныя файлы ў:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Захоўваць мянушкі ў імёнах файлаў" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Сеціўныя наладкі" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Атрымаць мой адрас ад IRC-сервера" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Запытаць IRC-сервер аб вашым сапраўдным адрасе. Выкарыстоувайце, калі вы " +"маеце адрас кшталту 192.168.*.*!" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "DCC IP адрас:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Абвяшчаць аб гэтым адрасе пры прапанове файлаў." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Першы порт для дасылкі DCC:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Апошні порт для дасылкі DCC:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!Пакіньце парты нулявымі для поўнага дыяпазону." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Найвялікшая хуткасць перадачы файлаў (байтаў у секунду)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Адно запампоўванне:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Найвялікшая хуткасць для адной перадачы" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Адно спампоўванне:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Усе запампоўванні:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Найвялікшая хуткасць" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Усе спампоўванні:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Тэрміновыя паведамленні" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "Паказваць балёнікі ў сподку пры:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "Міргаць сподкавай значкай пры:" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "Міргаць сподкам пры:" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "Паведаміць піскам пры:" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "Задзейнічаць значку ў сістэмным сподку" + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "Падсвечаныя паведамленні" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Падсвечваць паведамленні, дзе згадана ваша мянушка і:" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "Дадатковыя словы для падсветкі:" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "Мянушкі, тэкст ад якіх не падсвечваць" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "Мянушкі, тэкст ад якіх заўжды падсвечваць" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Некалькі словаў, падзеленых коскамі." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Прадвызначаныя паведамленні" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Выхад:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Выйсці з канала: " + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Адыйсці:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Адыход" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Паведамляць аб адыходзе" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Паведамляць аб вашым адыходзе на ўсіх каналах" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Паказваць \"Адышэдшы\" толькі адзін раз" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Паказваць аднолькавыя паведамленні аб адыходзе толькі адзін раз" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Аўтаматычна здымаць статус \"Адышэдшы\"" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Здымаць статус \"Адышэдшы\" перад дасылкай паведамленняў" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Дадатковыя наладкі" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Затрымка паміж спробамі злучыцца" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Паказваць рэжымы ў чыстым выглядзе " + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Whois пры абвяшчэнні" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "Дасылать /WHOIS, калі карыстальнік са спісу абвяшчэнняў злучаецца" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Схаваць паведамленні аб уваходзе і адыходзе" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Схаваць паведамленні аб уваходзе/адыходзе" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Аўтаматычна адкрываць вокны DCC" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Акно дасылкі" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Акно атрымання" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Акно размовы" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Журнал" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "Дазволіць журналяванне дыялогаў" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Імя файла журналу:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "(%s=Сервер %c=Канал %n=Сеціва)." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Устаўляць адзнакі часу ў журнал" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Фармат адзнакаў часу:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Адключана)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Усе злучэнні" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "Толькі IRC-сервер" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "Толькі атрыманне DCC" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Ваш адрас" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Ужываць адрас:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "Карысна толькі для кампутараў з некалькімі адрасамі." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Проксі-сервер" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Хост:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Порт:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Тып:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Выкарыстоўваць проксі для:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Спраўжванне на проксі" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Спраўжванне на проксі-серверы (толькі MS Proxy, HTTP ці Socks5)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Праверка на проксі-серверы (толькі HTTP ці Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Імя карыстальніка:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Пароль:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Абярыце файл выявы" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "Абярыце тэчку для спамповак" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Абярыце шрыфт" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Агляд.." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Пазначаць ідэнтыфікаваных карыстальнікаў:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Пазначаць неідэнтыфікаваных карыстальнікаў:" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "Адкрыць тэчку данніх" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Вылучце колер" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Колеры тэксту" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "Колеры mIRC:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Лакальныя колеры:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Колер літар:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Фон:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Адзначэнне тэксту" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Колеры інтэрфейсу" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Новыя дадзеныя:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Лінія-адзнака:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Новае паведамленне:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Адышэдшы карыстальнік:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Падсветка:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Падзея" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Гукавы файл" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Абярыце гукавы файл" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Спосаб граць гук:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "Вонкавая праграма для _прайгравання гуку:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "_Вонкавая праграма" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_Аўтаматычна" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "Каталог з гукавымі файламі:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Гукавы файл:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "_Знайсці..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "_Граць" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Інтэрфейс" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Тэкставае акно" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Спіс карыстальнікаў" + +#: src/fe-gtk/setup.c:1703 +#, fuzzy +msgid "Channel switcher" +msgstr "каналы з ад" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Колеры" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Размовы" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Агульнае" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Гук" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Сеціўныя наладкі" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Абмен файламі" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Катэгорыі" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" +"Вы не можаце размясціць дрэва ўверсе ці ўнізе!\n" +"Спачатку змяніце Асяроддзе на <b>Ўкладкі</b> ў меню <b>Прагляд</b>." + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Некаторыя наладкі будуць зменены толькі пасля рэстарту." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*УВАГА*\n" +"Аўтапрыманне DCC у вашу хатнюю тэчку ёсць\n" +"небяспечным і можа быць выкарыставана, напрыклад,\n" +"нехта можа даслаць вам .bash_profile" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: Асаблівасці" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Узнікла памылка пры апрацоўцы радка" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Гэты сігнал прымае толькі %d аргументаў, $%d няправільны" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Друкаваць тэкставы файл" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Рэдагаваць падзеі" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ Лічба" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Загрузіць з..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Праверыць усё" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: Зборшчык URL" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Ачысціць спіс" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Капіяваць выбраны URL" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Капіяваць" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Захаваць спіс у файл" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d апер, %d усяго" + +#~ msgid "" +#~ "Set per channel options\n" +#~ "CHANOPT CONFMODE ON|OFF - Toggle conf mode/showing of join and part " +#~ "messages\n" +#~ "CHANOPT COLORPASTE ON|OFF - Toggle color paste\n" +#~ "CHANOPT BEEP ON|OFF - Toggle beep on message\n" +#~ "CHANOPT TRAY ON|OFF - Toggle tray blink on message" +#~ msgstr "" +#~ "Наладкі адносна канала\n" +#~ "CHANOPT CONFMODE ON|OFF - Пераключыцца паміж рэжымам канферэнцыі і " +#~ "паказам уваходных і выходзячых паведамленняў\n" +#~ "CHANOPT COLORPASTE ON|OFF - Пераключыць устаўку колераў\n" +#~ "CHANOPT BEEP ON|OFF - Пераключыць пішчанне пры паведамленнях \n" +#~ "CHANOPT TRAY ON|OFF - Пераключыць мірганне ў сподку пры паведамленнях" + +#~ msgid "Direct client-to-client" +#~ msgstr "Прамое дачыненне (DCC)" + +#~ msgid "Send File" +#~ msgstr "Даслаць файл" + +#~ msgid "Offer Chat" +#~ msgstr "Прапанаваць размову" + +#~ msgid "Abort Chat" +#~ msgstr "Перарваць размову" + +#~ msgid "Userinfo" +#~ msgstr "Звесткі аб карыстальніку" + +#~ msgid "Clientinfo" +#~ msgstr "Звесткі аб кліенце" + +#~ msgid "Time" +#~ msgstr "Час" + +#~ msgid "Finger" +#~ msgstr "Водціск" + +#~ msgid "Oper" +#~ msgstr "Аперацыя" + +#~ msgid "Kill this user" +#~ msgstr "Выпхнуць карыстальніка" + +#~ msgid "Mode" +#~ msgstr "Рэжым" + +#~ msgid "Give Half-Ops" +#~ msgstr "Даць паў-аператара" + +#~ msgid "Take Half-Ops" +#~ msgstr "Забраць паў-аператара" + +#~ msgid "Ignore" +#~ msgstr "Ігнараванне" + +#~ msgid "Ignore User" +#~ msgstr "Ігнараваць карыстальніка" + +#~ msgid "UnIgnore User" +#~ msgstr "Не ігнараваць карыстальніка" + +#~ msgid "Info" +#~ msgstr "Інфа" + +#~ msgid "Who" +#~ msgstr "Хто" + +#~ msgid "DNS Lookup" +#~ msgstr "Прагляд DNS" + +#~ msgid "Trace" +#~ msgstr "Trace" + +#~ msgid "UserHost" +#~ msgstr "Камп'ютэр карыстальніка" + +#~ msgid "External" +#~ msgstr "Вонкавы" + +#~ msgid "Traceroute" +#~ msgstr "Traceroute" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "Unban" +#~ msgstr "Дазволіць" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "Усе ўкладкі закрытыя, выйсці з xchat?" + +#~ msgid "Blink tray on message" +#~ msgstr "Мірганне ў сподку пры паведамленні" + +#~ msgid "Show join/part messages" +#~ msgstr "Паказваць паведамленні аб уваходзе/выхадзе" + +#~ msgid "Color paste" +#~ msgstr "Колер" + +#~ msgid "_Close Tab" +#~ msgstr "Закрыць укладку" + +#~ msgid "_Layout" +#~ msgstr "Асяроддзе" + +#~ msgid "Channel List..." +#~ msgstr "Спіс каналаў..." + +#~ msgid "Notify List..." +#~ msgstr "Спіс абвяшчэнняў..." + +#~ msgid "_Close Window" +#~ msgstr "_Закрыць акно" + +#~ msgid "User" +#~ msgstr "Карыстальнік" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: спіс абвяшчэнняў" + +#~ msgid "Quit..." +#~ msgstr "Выхад..." + +#~ msgid "C_hannels to join:" +#~ msgstr "Каналы для ўваходу:" + +#~ msgid "Resizable user list" +#~ msgstr "Змяняемая шырыня спіса карыстальнікаў" + +#~ msgid "Left" +#~ msgstr "Лева" + +#~ msgid "Right" +#~ msgstr "Права" + +#~ msgid "Show tabs at:" +#~ msgstr "Паказваць укладкі:" diff --git a/xchat-2.8.8/po/ca.gmo b/xchat-2.8.8/po/ca.gmo new file mode 100644 index 0000000000000000000000000000000000000000..bd061ca65ff6379839c601cc54820a7f5d643529 GIT binary patch literal 76924 zcmd3vcYIsb-T!aGHerMv<_*MT+KC+qiOF(oCvoD1M?zRZwq#q0EE$bB4twuH*}KrP zDWgy}lo2RpL)m-N(n2X^m-Typ&N)|>oS3H1^ZfDC>vi=$dynrKS9)`^wa@nWyuOy_ zZ4bZS(ep;GgMOM!J#TrV=Z%29a8q~*+yveTw}$t@_2ElS|2Ete{Wp-Hyq%gnZy1~o zC&0boXn3OIEpRycH{f{q6D)+|n>}w7Y=H{rFt`J}814e^hCY1D(QC2phQn<!p9z(Y zeWB8S6qNs~93OUk4=O!_7T9!*b*zQTUjoYhc&POK4l4Y29KVNqpx=6-=as{HI34~H zPJz$Bk+5KI&zl8Hp^7#G$HH5n^7j^0_&>r@SiH#QGX%$>KNc$do1yCI3#f7$x{r;2 z4=8;CD!*sLDex{h5q<%8hokoOyb^c-RJorHr^1`zWcVp8gQNDd@wGvf;}uZ#@q{z~ z63$1z$No0lqoLA&CsceNL8W(x13a%9E{2Nt8Yp+K!R_FNi*0^J!XosQa8H<oO79I& z@xBk`exn0DZ%a5D`fvtReh-AIr(>ZHZ-i<m&p?&)7f|+o$fjc+9E1K4NS3{;pyFGr z)uwj}R637_KD-5%!{=c!+^Wr%dllRb{h@Ftcr#Ra{TWulZ=vdQM%e0;a60-s;EwQX zDEC`MZ2Z%pk3I!Qz_XnGPN;tNDpWsw51M?z0`z{n=hecoQ2FVF!{7^WTlgtl2NraY zC%7qG7oG*Tffqu#`#oF>J`Fd9&%vqiU8wf4Q>SfLd&51@p8=JR$DqRh2(AY|g$n;` zXaA!!-yv$v3!&m2=k!%j{%YX*u-S2cI23(5+z>8@8^L3s+@Apz&jn6@8QdEEHBjy3 z0jT`E1m*5EsC>N(<^MBh{w-9z-V*8pYyefhK2-VEz|G-8sQO+CH-MKyg>x-b{%?k= zpF1E!gZC(uJAbKlHwG$QrEn8C7mkE`JM$x;>g^o3HoOVS|E+LCcpp^$ABP3-6{vXM zcly7<3($WFRc@!ptiNAFAN>tb>3!PqC8+Xw3o8Hb!42WZPX7&5JcGKdzadcWws86# z91Ee!w+JddyE*eRXFdzcU$wJuboP5gmG^;A`R##ncL-E?$HI-^DNcU@RQX*7)$VSG z^8X@KIeh|^@2{c4*&yzDL*Qmm`Q8aCKO^C6SPIq8dY%3fsPgy#Dm@>;1K>ZP>Z>+k z^S3`#IkiE>lW<(_cqCN%PjdVvRJzWCCGc9P{`NXld;Qw!H|e(d83Q$rmcwx{1LgkL zQ0c$d@lSAL^v^-{r+1;!{T)<(y@PD~S|6$$CP2BL28Y5LXMO-wK9<5sFby|>*TK!; z-BA9Xf(ri)sQkYR<?kO*_5QWv4{%fTYbEXYw*{2_9H{iyLZxSKxDkv%g_DAt!9$?R z?=+}<oCDSWE^+#sp~Ab%>F<Y%?@v(U@GDU9d<!>&Yo~1aYz?<SKLINKDyaN4!l7^> zl)orcy3%k2JPIm(S3#xcCMbV*INs~{Ae6sHpbuYw%Ewnw<@W<r`x=tA<+~|Vd_Gk8 zV<A(kw;R+v_)Dm9<Vm<U9Fej4I~0yZe=$_}k2*dBm9Cc@UxzA}cbxsd;P&Xhh04cP z%WOUF2)95#1}eN6P~|b(+3yXN{xH<|l!8j{sgCDBmGiIQba*pVIzDseUqK)J20b?3 zF;L}D3Xg@8;4bhU7=~{<ebsW?{-aRkbPiOyFN11-*FdH7R=72M1gc%U<?KIzO4ny_ zE4X&A9Y3~%o1-s*GOvQ$!2O`Y%Rt3*JXCn6LA9&1;V5{kvwst+96p39pHHFO{|Hs? zYp?J;L?LfW=))BJH9QNBhkG1s%ew;(Lm!7q#|cpWFN11NH$#=@{f-aAI`of0#XIZ} z8}BHn^c2G_;U3Ps7AikYQ1!eoRR8XF_D4XK=W&i_K(&KQpyIy*Dm}Nr?chUD>3JJ! z-2DKS!%v~|UvjARzXw#j(;a6!*1?@IUjXI47b={?q0)aMRDGWTN5hMq{t+nme}+oe z%TVe3(D4(faK3<w_eZF3);-LocPNzoR#5(YsBlI){qArE`l(R)I|M4eBjL92cxV1= zDF0VMjUzX}G4O7v^7#-d-oc04{A>hGyino#Q2q*?eW~M~Q0^+B(q9MFt`|7_I4nlr z17C($!ghH05yS;Qgo^hgDF0tT)${jI;SM>{wwJA-@?8j(-ic7{z8)&SAt?79Q0@+b z3g>WVej3#Hb3RnNeb|}51=UVIg7WuosD8HoQPzBW=%X)!>hE<<pM)yUGojky1yJd~ z5~{pzaJ<Et-vQ<BekgxWK&AURI2^tL<^MZpzShy!-3CzQzA03Gc5voJumb&VumLWI zD#u5m!hIgD1z&}G!8f7$*MwtiJhP$FSqIgAo1FQ6P9KI!XBSksY3Rel;qLHKxHfzd zs=Qu<D*sO%zlHL@*0Hu+3!wV_Hc<H-={O!Le|tE6rDF|T2lHmAdf5jm{7$HRB%#7N z0V;i`!+G#RSP4IbF*x=(yY4#=PDlSfEP}fnZ^PdUD%^!o;e_B$Fb0+WQ=rP{Ovj7h z+UT!<>%eQF+T%@7{+@uU=Z~TC^^M~?C)oD18B{#GK!sE6^b?`dF&&PFbD_dr4tIoS z!S&!Rj(0<)ZzWWCkHPif3sCj`CRBLuI(`h5p0A+7S?fgWe?z!F`puxi*$&EnSI1(< zNl@ebbSQTVop~!%c`kwKU*|!U!$VNz^FHi?e}l^J-Y41c_lFyxk3hLgIA);A?_j8L z|9GhMTm;omFNbOmw?d_RC6xasocW)j^7%GYIG;Fv3l-lwCtLeX9Jhxu9}ShhiBSD) zGE{tXp~kaCa0EQa@f@gnxf?1SuR{5I4{HAY94cMwo?_EK1S<S3pxh0Equ^+${?iB* zUpv&e)&n)qp9tmtQaBaf1l5l|fg8f_q3UJ*Q*C_?hhx!?a{6Yd^4k|Gyf!!mu7GMM zzjyX`z#-`Ghf4pGPX9Jkx<7#$H~$4Uf<t~`<KGsl9qtO1k0Ll2mctTQ2@ByesPelA zDt`|^<@Y(L_}+)};nz_9Do(TInt>|E!=U>8F;MYc0OkKOsPexVD*boEQursRdi~DX zuXDQ1$Hq|Qwz<>q<n$w;!kGY7o>QR8s}U-`C{#IgL!~DJ<^EvDW8kLfPlYP)OPu+Y zQ0cl6D%^XZ;(r0|0pEe;aM&;HI(=U_3H|9%@jT-AB)kdzbMP8?%o$dmDn8Tp$3vmQ zJpn5Ivz+-waAWjW!SV1msQi5B%s+w3$M;bATjwmx0;q5{fvWedq5PG=p>VR(&x3Ne z7gYR<pxQ^onWv!Y_h2ahzkohG8)`hh4Q>Iybozp`?Y>hrY{L9BNELeTL8T*gj;+^I zq2fCis+@iU3*a?yOZa=Ja(@geUoScR>u_`QA3=?;KS1SY*txcx#zNIonbS8x<*yYg z{Y#+c>w_H6gbMFgsC+yMmCiSz;{OIJo$H)u(=ilof_^I~^If6JzZC8X_k@bC2P)l% zL*?ffsB*jjD%|U#{NDvt-hYIf!si`7fC}d;sQUjAs(dy&-<H=la4YmXLfP*QRUVaa zS9l;)c*jG<dmdE0*FnX52UP!h2r8XVLFMZ?sQkPKRbC%Ee(vo54VA8f3+#TzW>EeY zLCqTnK-1r$(t8Y4e5b*!;e}A;aSK#>9(DFFLiu|aDnEaPO5fK|;S9Ra*3%HEaD1ro zdooly7ee_z04n`qXWs=C&M8pt&VfqL#Zd0Afwk~PsC@hYRSttMvhFv7ihmeXxFejt z$mu6LmP7fU2i2bHq2g(S%1;8y|6z{D!|l+Y4u`?t!d>7W;luE6kRigm>0)FhSaAt5 z9J~#lH;6gnSM*8r4_#{4uQM;R@mv8F-tVE({gmS?Q04tTRJuNc+rS^-4sfeqTl3wZ z@;?)*eKk0J2Q=*(syq*e3g<*;e>POTUIA4vcSHGq)#*Qj#ppNvja|3QfJNw+z_IW= zI2u0W_zyS|{Wh0d_cNjFmqPhF+v!(2egel~zV#J$oUDWjHw_i<rBME!h6?8gDEA|; zwEd+SjzWJh+#X&Im5&GDw(xDJcK01rxo&=yEr%VU>UET33EUZd8Jr6Dhr7cIU?F@4 zZUn!Anh(~#nlTaH3gvF}HFo}343)lfpwhh(9sxgtr7(G|E&nT^`uFeP+VCN`9()w8 z1D}Os;7f2VIQTkizAn`GFa)Z-?f_L^B~CvVDxCe`x-bmYewISDo8`{@mv9pL^Pu8; z8Y&+zK$X{qzqRGP3sn5Ia96k&RKHjb)!vSW8pqFtweT9Kc)x~9$B%G1T=#lg-iJet z*C#-Qb1_u=`z=)Z9)$Au8dN`f4=#W|LG_OXH`slzZa5zOlTh{e1C+mYZ?yHiF&vA2 z7*se_(1#(Y@;l1$Ojv;aa<~D!5vn}zgz8_<IP-r%rTZIL1UI4)sND91s)ur@a%h1{ zPX|<Z-B9jUK*e(eEQ2RQrT33e?cgaW_wP9KzdL>oRZri+`LOhN*56@J<#8NrftSLK z;a6}YxX#VCel~}Se;2184HfSc$8u+1?N|>dVBZ3(;Bip>=m|Ik{>AYNsQe7N#kP+j zQ1NaGRsTCel|!M^7el$<-EpQfpAVJqMyPb|2j#C74uwmd`Js+SJNpyihS;Cs%rAk; z*X2(CTc^Jn%H3T~|3|3y{1j9?e}>A}Yj79%SEzgp`Ms5=w}o>D(H5Y}rTtdhUeAS_ zp}!uEhWA6|<8N>j`~r@IJKSc&t%9nrC@g_T!(w<VoCM#8li_x^+xF26_e6gh904D9 z{3leq-trDR&XhyN7l$%G7b@PBQ1$kAsPNal)2=_JL8Z3`j)RxMLiiLcg<m+1yvxc3 z`@pR+UjY@)8E_(e6#DQ7sBm_?+n!s`hkK#_1yuWa8_s~c-edFK4lB{02dBd~pvrao zdu@ERa6I}hSOzbKs+X6c;{6`ZgA@K>$NPh!@_!zj3?G2X-@oDRaKwF_UBG={1-uGY z!@t8l;qLd_etr;~i~ck?1-=Yx;bsrm_zr{`|E`0x;h*75IP5`t?z0b6e(!|J-%n8f zD_7cZ&wwrHUxUh5$wM~(F}NN2>!9lG5x5)t6fS@x9=7Q|7*0cf9~=RHfO5a{A8ozO zgJaMi3RRw0!$SB9l>48c;vMmb^|u(RzK@5~;a#v5eha6<{r+U*Js&FGH{fu%-J`ZX zr@@`k9}1P;OQG8J3vdUx-eWeNLRf{q7Al-G;cWOURJ_|fZpYJwa1{Duq3myfYHwdc z`5X6yZ68bE2Ix<M!{Av^{pbd$e)|T@z`w&T7<$sSlc%B5^)Xxr7Cc4X;igdf^WZk{ z61Wq*9j*mmf{N!gSOLF;DxWD&TP}k$(BA^p-ad!x!qLyz@o0kMWT^6+31#2v7=?<r z8!8<q!u8;3aD8~L<E2pj@ETYEAAlReC!GDuQ2yR=`j4QG{$FrMxcRd-Kc!IdPlB7k zX;A)Zop}pXy!*lJVFVV!qoCrw8V-fG!1?fDsQMWCXX|e}sC<lo8^bYhKR5--|2a_M zUk25Fu7zs<Pr{M#BWFJJIji3dD*XN6marXe0S|#&!Cyk<<7#Jr2UNK{1+Ry%I{Ooz zcl8X_t}cPf_Y011IDP;($NUqh_A=-NTR%HNrGGM1xl};q<3KnBMxA~cRQVq6cpOwb zr#k)FP~ltzRZdqyg>yaJ65i(YPdL5+*T(!!sC>N#75=AC?eZ(A`q}hFo6bp4<y8+= zPm7#>DO5T$Q0Y0!@g!J>{tP$<z5~_YhP-6k%RH#~>)>+O1QqTRQ0adYs{G%F%EuRu zKS0H^?#q@NL*;ubxHTLOO+SLWqF)9T|HW_={1a3^{0z3hp|2n#zz(<zybCJ6H=)A) z3snC81&6_(pwd0;Rh!Noq2d_<H-huw7H|>V62_hRF;L}u2Al%VhiVVc!L8t5;AZeg zsPSRwYc~H|LWNrh74JmH$x!`Z8q_#Z0~P)$a8r1u(_ao%zt=(4-|bN4^nkN}1**K? zhDy(eQ04n?XFm9KTOR8}*$;(dVIfp_dqJgpU#N19LyZgPLzUkhP~oqHiuX}x{ti^W zK86~v{|%M?DR0>LW;#|w<-5^wAym8A531Z_P~o2mmGASR%I{jJ_-}B$6RI8`f+_ec zoCd4jwC4&(!w~v^!eZF?mYvs*ges4F93O&8&l8T%Le=w&&i-Sl@%Rg<^4aQbTmC-W z2K_jw@T#ENNi9_Uv_jQq9Ln9HQ0?#>$6rCkb2Y4le}Ky8TJP9#Zar9teix|ltD)@o zf@i@NI1c^|D*s!*YxO6?S?KS8ivK$({{`>a`q~UC-Z73dq3US?RJ!+vN^cbI2#<n0 z!^_}y@FD2Kx1svqp!aP*9|IN7RH*u^gp=SrsPr5OmH&qvpM+{JFGAJh`%v}$89WIN z{=mj_D!c;y4RCkZ{GqLflc3Uf7F7Ga1uDO9LFMBgaBcW+xGww&?hn`fi<Ni7Q0YA! z%HQ!&^>+@G`|F_E+s$x$crPr3uR^8M`>Ty-sN)WBJ&Z>~*_S}|uUSz37r?b(3Mzd) za9?;dTnD}d<^Kc6PvH9KzjXW&7NKA7BkO*5sP?!g+!j_rjXMXzQLqPUe7h7X+`FL4 z`$4CF1}ff{q00YFXa0A%0s7CO%I^oKAN)64E<>Qg+1%-e!zJiPLAgKEnV$!ho?k)5 zbDJ~22Wnne2}|J%a5P;1@3tOFq4Hf0m5zB%-wahh`$LU8NvLt^B&c$}7%HE?gUbJ% zQ1$RGtc0J#VS|{LKc-EiZ~Vlr+g^YL=wF74?>#7gpTLdak5KhD<R3P^(NO803Keex zs=XWy70yYHXG8UuOQFKM2WotJ5{`r$ernsnM5z4CfQoM+RK6l`W4IiSg~vPI0!N^K z3vLM4{-+IpQ>c0z4pk4ujuWBEWipienNaDiapp}>`P<j&mqXRp5m4@qgG$G#Q1x~Z zR5{%M4}f>TB;5Klmwzb#XFFa9JJ4SSRbCtX%cf%osCpg^H-)8eGg#rw7eK|o7^+;` zVF^44?g4)TmCx6p(*HJ8I6pwev+?IP{GFlFKNiZo3@ZI~P~q<l)lL^fmD4h)bRFjG zkB6$4UqJc02o8r=LWTP$XZ{jA2>m;7DQx<}%0c(RX7rQ4WK4yp!in%}sB#+nmCav? z<5aj4=5wIZ*8vr894cMQq4Iqsl>g)4F7On%E4&GA0$+k#!oNUME>P*+_-h;94p8BZ zglZQPpz=QzmcvS@@Q#CH;PuY_Whj4dL#6K{DF6S2o5Sy&e$#Jkd)Xc;++wJ7O@hkL zY-ir!^m{|qb1PK1UCuo1co^IP^Anu@N~myef-28D;BN3^sPqp1)|O8VJOzCt)cE@r zRQlh8Dvyt$%JDnLLI1Yq>p|sbD=7Oha2TB6I1ehFVW@DILgg<3H-m>m<>w5jetEIu zwNUNpcBg+BsyzM-m9E#}*6;(UcKriXd)xLqJN{2~Tmna9ejb#+2chDB+?l@ymA-Yp zxAsGz+Rc{Ghugvla8I}ej6t=dBcbBI0&0G}7j6e%hwAU&Kr>GLV9O~2<vtBnAE&_G z;aO1eKjzGzh1;Wl1-8Pkpvq^_kG6cmQ0X`bZVQits-MfC(tQ(D`QHlFuAhdgpAVqQ z?_0PdT<a%0uI~(Ipf7}FFar00mqPh_87iEQ;Z|_4H^{gj24|yR1QqV3Q1ySU)87P@ z&%5AI_#jmIKM$4OH=z2@$58cNJjjN#Csa69PCp+iUoBAmb04U1mO|Bc8me5+appHb zxxXDMoO_)4gN~0w)zkA(>HDWM{{||bg9Z;W^|Ccof31Zx;37C5o)4$N58x!Y%UU*` zeW2>;K=?RZ3Lk=dtUbuv2YwG#o(tEp`CJMWf5zz#g{s%%q00XvsPsP%<?mIfeE-9l zf9?2#Ghb`nL8hG#feLpL+zC#1`U4!>q0$+Lim%t1|HAPcsP=dXRKK|bs$Dz{)!qu$ z8|2M|g>VjRhwbnNcqQC&{XwSv-2+w6FG7{$2T=L>3@ZMwp~`#k27^q0+y<)NMmc>E zRD9FmIJh@dyFM1G9sCL^e>XwJ^9)qF-*WsA&P4wSl>g#_L8jgB>$n1{pPdg?4!1e; z$Dz{sH)sA&$8|Qe?Q~nHb}$mEoKsNo9t;)EQE(f0E>wTH2`ashK(*7C9sdax|N290 zdnkk&56455&n&2P)Ix>Z1V_M5sCIWMoD3g=Du*AS`oj(z*>ui;Dwi6lcC#;3`G%p| zQxqzmL!r`tg5zmW<JLJ){w{}$;PuXay^U?V*ci&+WT^3U22?)lp~ja3p~~TKsQNz- zD%{JV%I#*T{NDvNe!K*go_C<ei;tn&$B$6%w%Ej$M~UMeP~l92YA01t<H&)|yvs2I zmCi%qp70o``0j@a|1oF(HdH$Q0@cnwclH}?YTfSwmCquma-0TzILn#0LFGRMmCs|K z@^c1MeO(N9fX_qqtAD|J;r2rZc_+hHVGnHIY>=0LZ^D}gA%AT?$h!pnpe+X(dFfK9 z@)@#~Z5KO2<!_>68B}?dL$#j+pz;}p%GV00aytvE{aggqPG5j>_c2tv8N9U(cPLal z*aj;9!=c=jKp)P5^4|&74iASKAAbckj=cdV!Y#M4@l`{aALaCSLG{nip~}f;@gesM zq3Y{oDDy|)?(j!g0(aZi&L8bi?yiOk_kAe;+iy3>>}NE<vFHznGQSSW|66bj9J>7= zvtFGFRX?pz<$DBF`JDj=!}Fl({X)k}VIle};B@#noC6DX7-ZI;jZo!v1pEU$9jadI zceLrg56(b8Xs1DDKffGSpg$fS4<Cn9VUus$<>^rE{357y+zwTb_duodA*g&l=Ip<6 z{0?r8xi{SQ$1R}RX%SRDr$g0m15|j6p!!h=YTSuKwXdV$Ztx_hzYoqu|3|3#bd#M2 z898Yzl$^I890?DE3g-l<_%4QOFE_$Y_(!Pl$M0g(F$o@meg;(e-2>(S324R#sCM=- z+!_uUVa-QCAN_cEENp=4XD`CjpjT+;gVUkHc@`?auS4bceW>>F8C1FpceU-V7OK4; z0~Ox|P~~^C<4UOU?s=&8^tm(NaimS>cvyycJyd)rK_8w0N5Na5;(r}#-1rE}-Pcg* z{0TP0f>G9dG1R!)0cC%LGe6n!OgIJe3t<g>0jhp?9&Ph67KYH5L(Mn8fr|GwsB(P> zDu3@ojTc`+jhCB@vGEUsYH!0GN5V?<MeqQagev!Eq3ZiP$Bo9?cDxf*`xpyVp5vkN zI|nMA^^SW(jmIIVe0D*#ljTl-I8-`Lg7SAdRJzZHa(Auc@1VlD11cX6IsH>k|0<OG z_nrCQq3YvnXTSD18_&j2?O+S2c*ejIxF?kRE;tCTa75|dsW11r3d^O+xcmHzLFJE_ zeIrkN9^=^wvom>$QJ>3m0nb#q!`}-$r=r*AIn;N+FR&ZWqt9{hGR&VtJp=Vf)QfmV z7+c0`%+}+%miS(kJ$xMdQ9Mtgz8<q5c=RcPZyS~UqDgzF;cf+wKHFfQbZ)PNb<W({ zvbMqOD>Mu6cOU#7eg{8;f8}B5TjjG6VNAkYW0=}6#b`bcV1AENYy4kC*kfGW)&+aQ zD1OVMcA&O69{0b+%@Wl2^DIUk<vA1eeuVdD?0<v45dCwgnR>kmJm>Q~!lTc8xDdC8 z^PGU&mwEK*L4P#r-&<|=yT#ex02y+<yK$$_@6mU`=bhdd^0k-KKMBvpO?6-a@5Vpf z#(ZwaZa-9=xEsy$G5RBT4s`zI=-?c6HU3gO&A8F$a_mZ-TKa=f7h|?JZmvataE{%t zQQw;r){Z%L?>hCLV2bA?o+*T}IotrQg}=Wk0{6KQ{bqWw-vzV7;gOKx#Cs6)t$9Af zY%Y3zeu;V}>Ob&IK^=T9Lh%xA^{Idbu!H9jp0jb6!t7}m#$c$qMW2g#e4e@3Z{qx; z^`1dJ5qC%MXx`H22MZ&&oP&9%)8B$xpBF96{Cyp9BGQ=8ZKxk2yi?Kd?c4}w@JO~Q z#{Mzv7s$|k9>(lV)M?D0a^W<>KVx<XcELwue38>cFmK0=<Q#n-K)o|WH1>W6HE;a^ zH~aByh}nENndfB8?}k^xb>tTHlc;NndnD>pFguWEYt;I5!XscQ&wZHd^E759xKB7Y zTcXxSvQmWSK%U=X_8`0-?hos6t2w)!N1tBwf9ClY>g9THH&$kFTONJ>Y2lrT{zdHO zqrb`7$tvaSHMjKtBwSi${vCdI<+;uI{S><ko&BDUhvV)@>=*NV>H@n4u8SV=+PfWY z?%c}yT-19KratA^>9Y^|%beNeup2jD^Bl+XJDx_|Y=U_P_lTO_`#cqxo#^~u>Zq{v zITih>xPOc1Sky_}kFr+YQ<%Mg{vgb^MID1Lz$j+-!r-$L=GUVMWBxS!HpfnG9^&~@ zX4t>Rvpep?JUyuOY0GiH67^Qtorc}U&iqQ$r(o916MVM9Zkn?{9`lcI^R?5*an!&Q z$Lt!OZ=5GYKJPu}=3&$qpxzzo^OS{m2w`pK+<bxEXw=Q{bLZ|TXIJichBKG<^)ZX% zzrmU9jQ&{6m%_U+pX1E0MSYg@--247ndsZ#Kb*PDhF~`V{X96uxtmQG(|OLu{t?Uy zdH#X^1fC|I;Bz(pPQq>wW_1`I<1GG-{uRs@p_km%|FahcJ^0-hH<B-k;D`7*CMR9; z(}=k~A7Z|dReHUc?T<bQXE^&6*sXNws&Zjm3yU!O75v=!)tW<}yD*!8-<dqOpnr?! zV%)BD;jzr}Zb3cAg(W}tyYQuc+?juc*=^4J(HytiJN54HPM#NWqxH=k!u%x+@r*-# z64d7d3lFj1+mEM(=bt?H;CC};HyHP|n0auy$R~{bdg%2z5%rmvFMxaVu*C9uG5;O* z<IoQ?uI$&LAcNUTI2m`h!TBy6xoALriHk$}LAce2WuEtpQ(prwx5nPDF&~P)mPfz& zGm+<J%%)?X#;ghbL+I~8e-eBiwn2TifaBmTxGO;|dHHIdW6|G_zZTTTU_ONB0o32} ztd06{o+o&&z|At;&gMA|wLS;)tj!}Cc5}>japouE{%X{F@SMj}ie8_kJawpJ@MCzS zGrtu#C&&SxyD;05IF`a;a3p4Xpq|Pz0=+)Z!<W$i9)G7hGnu!d&;4la7knPY?ogiX zd0xTK3Gj3teO^O<G~ta$zl7%p)YD)M&tI|o5I2*IOVS5_iTRDV`3ukKJX_#q6wm5D zFJoVi#c+5l&l23-34>1oVfj2~VYapl<4W|4ac~hl1wMrN<=Fp?hoz<Yyl3GZ>hxMq zY>2xr;4J)I=<J0t==G`PDRgn%;LI*U|E4n=iv6pY?<U9Yb2#D4X)Ao)xw{ngU!47K zQ6J{Ql2MZ9V`q0G+z3B$p4V`59d1kE!LS^=-|+Y@OnJFeZlvIIF6u{dSBCuvsL!8x zZs2(qyE@Eo<Y`BJ2=@EvLH(c$?+M&p#Z!%02X^1`Y{Jul{W_ROP@ji-0&0CWLcca{ z^;rgAa^c(z+t5FT{mU>7&*r%qcSrL)hy5Msqw>h-5%de;dzk4n5B<GXX}+gnUg_)x zWA_`>!{IJGe@Fd_v->r1{g~sg4D(62DRB0Gg6-(_c@pl4`%9dDH@GSG3CwOneS!0{ zGy3(M`Y5;~`bBUD+^m4V;+bQEH0$tNF~1l$8}nSib2HC5Jg?(UpXt~~(7%cP9Ms*I zy~J|>W>;W#7V7mOR_1dliv6+E=P;fgqq1Lr#O@}i|2sU+siU|*6uZ;WFLVLjgV~qp zyWj_ezmIeKOVs-Ogu7qB7(5y`2g09>jXfuO0rmZuz0GqKk3Mr9t<HX5?98qsjNJ%( z9e5#TT|CRs&y+u&H_(5>^A*qQ)~k0J{GMk4ex~z0#d8Jv0^I1cCC@g5k%6;iz~_Bu zcNFRsPW>173GOz9HO3Wf5H906AG3Fz**1j#5$eM*+lyx^`Y!za6ZP>>pCPE9#$2Cz zxGwq`*lmaUSI)f5T6;%g*Wt`Mo&RR+enPz#&v!hRV1EryFX|;cA=H=RW(Lm#_<siK za}ah5dET*F?_Si8qn?GE5%_t6=ilhhKp*0H6!liPc?|U|)En~XQ-wQyegk*q>E=0~ z=Ple`1@+mQ=Xvz{Ovda3!uS{Z)6l=qGn}W1=VZ+P;Qagv{uQ%zFgwxtJp{czm6&}7 zm%|WtpTOgJ^!YvdJ>aW6TM))9^z&rFryTV=Ji+IC{QNr5^yAk~|Dy}{JoMW;znc>7 zF+9&=wz+fniQ}iZuXcW3#LW&oXY=UO<jkdh7_<9$uE4B@XK(4@8`xFx9F~(#xxWLu zqg*&+;VYQ^UG8!BAkP`jZe7$B&Tk|3`gFrzV75Qc_UO;&$)LW8rwo6s*bhVfEKe2B zc<eXC{0YntLfzoPnTOr_ibvr&v#T+i<l^2Jb?~_rMGg96o!MA85kG^R+jE@5e=96! zc06XoQ5QQuH^3v%SMpqf-R<Z%K>aq{*!jO5zC##$VYaI?6NchWpB;G)z%C4*fp=hj z8t(Vy`J){0d5z})^t)j<+xgoJw~Ki;!2EAKpYvRXUY`qb^AGqV`e!k(;L+!93-f&* zb|<2$cYgM8ZXU+$Wc-hTF=r<a7opx4ehELq?I>s0irK5E-{pB3_4RNq>^DGt7U2xz z`4wufpf2HeMq=H5Xjv#43$?}~ej@ItJ40!|Ez#8#iie8}Jl`)YDxHw>6YcG>Xgrc* z5D)a#9q~jm;>V(?v>#3Rk*@A^Z?QMRugi3`@}p8C(shY+w7s{#gTjiEDPs!jN2H}F zoHe4vFPt@M#Kh5lXDH<_Nf24sA5rS%Ijc+b_~}q=X*AxUv^wkQgi<1RQx#lAb47!- zDJ^l~mzEH^f?XPITWW&!+mnedf5b$8)QH^*>kBJNOGXn@j)#gwJRWIFM~S7K(ustN z{i<X#ku38^l*nbN37TMMg(!$rx=iu=1XfWxf!Gxm!RNUQg~P<1PWbV@@+i)C5lcow z;a)!)_cN(TvELX;CwrCGo@lz0P>YN6-G?KwNSZKBW(EvZ8E@+h#XA&xXM_}VN89)& zD=OZ;tWbGz3V11BaUW0ptdo(h#Ii`rZw<w>h2Q5nuvJX)NX%av>Fr7ITZ_371a2bB z)kuCOkZ62aG;NyW0BN9jk~FBUXgV)~R3tr6`ixb-#Hlj+MUdyrL@<z}0W)EO7%&IM zwkr{i5c7zMw3t;hAlp>oEWfZ~;)H!^(xrv7q})HxrAi>Bma_VKSFu;Ps-TscAoDBS zxUj99*4-C&zPYb17fW<>s2N7%c`Y!<rEFE0C3L9L(SCO#nWp&{*018eCXq0`H`ATh zkrY&IeRHMXv^3h?-9J5(2)D3a?U-RGl8l6LK8f<faFmpkV_|)3Z#t4Pz1a3mV-fgE zMh?nEQtB(DG8su_x+2*yD%5?fZen3Yen}8>VZGlGRl5%wPiH9BUX<vLBtz*$(odyB z=}d}XU3hr~xjOIvz0YNdXq&q2z%c|J>t~bLm(84RuP{v>`v=iKnQP|TCUro!EvC_G z<St>r%<Fq3WU?AN19|D>{Y~2+rM5qlW<=v3U06@^&FL(wxM%bV^@Mu+d}>_BV_t>i zMWLQmQMyOoINd+k`l@)CR_8CATVLH|rm*}5k{=+$cT7Wfa%N{D#l)t-OAG7A(d4kG zZuk$;(bRH>qx`gB84bsRW;;->@?9zFRFwHSPI0Tt<jhFres?m_7D+LPP;zeONoL}4 z`f^|B<<7!%JoWO5x#i8atM@soV8~CT&7^Ijv9o#os9*phg6w!0>m8j_f&=+%q`yY# zr@=I`CVteo?3|$DZtIMM*TmPNM8*#xzA&pHapd{v8$R0zP=iMxbGT`*vVt~Tg0y60 z1wWKdn|UqUQ>hFqJouv`$>cPIo1Cm$&$e1Lk_EmP%PJUDV#pkRksoShD5c!j%wv5z z+NES>(gS-n73h*I@rGd$*)N)+yi~7BkcQjr+><}^DAhp|uujRONo3xjy;^56`h*0o z{-w}ZRk0u_#8p#dOX%lQq!64tm3hv1UN2d;TVj&SlCp=$=eKpI%%sX3<>A%N8A|rg zg%#B1>hoYzK!4AU)tWq3UpR`T%y-S7u~tK(-_Cr}lZ>jq%{<yKWldFemH)ePQV4zJ z6tp;{cr~TO^gVDX4IEM+F6WLlD%U<AYfwVblxv|h%26Xqa$C&oM1~=`H<3v)pqBaj zjws0yjB><_>IOe<Rv;?YY^L)Bk~)?H@laPJJNyNLH$#a(zOK4rzIp^QxF2GC>x?9G zDul&Tx9TYw>5lc9nxg_!5t1EFjq}6V4CMD+`RW^W+cL>yB%a3qD&sB=Q<=6-UnOV8 z-u$QoyByPciAG9MZr{sYtOO3SWsz;BIr2b5PM*vXsYFtv%h;$~`KmF}7C|lw`y(Yk zjC3oioS?D}LcU#-(ZEfRYvjfsC3$jU&h*_sye88S)NTG#sQq33Y}nc2GsW%#&sp>3 zB%=#SFp<=VD^E_wv_4eGDwpEI2_+NI*zu(z5l>U$l4Jeu5NpwNzD(Z4+6?KJHWFDD zO(0h0jMKsFGO9Zoo<^7G8?~BQ)U~rl4Jx)G+nyuKS(?%uQ=w(5*Jzq$opq%?7>y$l zhjL~AmbhK~NqQ;vYeT)Q5%n~`E1F7mN6eHIP0#3yIhZ^LTsF!<XJ{GIYlI=r3IUpC zf~3~_t-V2lDtsr*7gpqCE<c2&QIm+)UJaKlHO$(*G~fA1qH{6zMH57+d<W6g8-EkW zj7ay7#OxBdW<?5VhnlxcWVS`-d5T5a*)j>F1tVfj40awSDxKD&7Digb80U6$+-+RR zWdDElQC*l&STC|xGaD^6+KCzXll3x}TJ8#^magiwp|N^_UsvB;t+~F=c3(Adzq)Qg zwck=#J;%?6(%jn}@%`q+_}S`)e46Zv$Zv|Sz{2+%5-Gu-O%pW=eaZXeBEF`KC>g&H zX(yriSVnB&SRpvr9V(sDY<4U(J8F60%U3iN^qik{#%kNtAA-K|#@?1no|S=H_GC9@ zBqh6DEC$s+2X<ZL_E_>AwFL5QHdl6iqtalD#VZUGH;Ym!$lf>~rW1&EUZD}X%>bi* zxpQG^=VHGyVftE6D4y1|6KZRVbko^JRYp_VoC}Zk#z<fo$;OG~1s3I|*E1;R3J%47 zMQ5aKsdjn_e4kaS`YuuxV@}*JOpRYoLrvp1MQDvy+V`s)88T9SGJz0}te#3|7-NR} z>J_QZL?#v{Br5{@A>WAE<!x<@z6>W!#Th0`vujAA37AcS0&ff-e^%9;>N>xseh!%9 zvur3#IUB?f8TGfSt6Dh58?&&yu@2iY1?8D+F$D7(2ECg3I}^;>VO9ujtigK=+Srm} zs0wS7E2(i)=^`hQ<=wGFRPrsmX;mF%1x@%%#3PKW<ce9%N)qI%xHXjOT+H08fz+GI ziYYSPo0?8fpV~UTu&AUYHFbRJ^r_=9AQxV_-<64_qusGkS`&aNz=~Luq1`Jl+DFeg zzrH&~{UlQuRaVYwX>P8s^QTJMnC?#vnVrSy<9wPQiS=7E=`_`YV8aqddvug(vPk=i zUU^N8>4Q_-y25x+lI6qg(3*x4iv^=kN~JTBW*m(N9&7yniO;60#s&YuBPm>_EvTFr z7nU#b_npdGDV2y%-(QJks>9wa%)N3gW$bq(?9qZ~-VPeCL$PSsZ)&RX+aj!Z+M{i( zxMZz%2DKII;J0*BSe1#4wyY`kwxz~m8P3CDzb?`vvUp6Dp;#7*w<$WO@S7rO$=B3j zdj~@{MI0jBm>NuVO28(@VlWzlq(oX8mC?rhFk7RsM2IS&0$R04O&pYehIZE9lvKyq zkRX6A{HuvJg}M?18xJRvNwFglGsrNjNf9Tn?DUvzj4sk2>R|B58k>fnXV<^>ahnb$ zDXKPwmX3C0LZ&Co3ME@JVa#Y5s*Y3!MY>bVa<wH>=%H?N0$^*^_|hici~>A$(5|C# zdGCsta!F=d(WTlVag8jl+%Q<mJ{XNx!-)$=W41}R*#M!nt6GXRhPe3KO@fSw5b{f= zloppvnp`}lc#L|6+z$83GpTfv#zBly88QsiYYfz!v@l9}_E1h5EgF%=Lv0aB`9|;L zCl!>*Z#<G_S9&Q+b#2@w8R)D#1`@Z3XHPxUOQjN8S4brpLp;yKyF&6sb$aE&mtULe zz@he>Y?HTY65FONPODQ#wvPB-5lOa&qDyFSvzS$<YVMs*hoQBlnMBoNP%>)KuX;5~ zk$|>N4SgzAGgBLxL^`*02s(bTU)?TOtW>DlU^j=lF>ak`VoD&Kh@>=!=qN<CUH+(e zB%%h5t3>x`Zx+e#U=Y;^+C>X2%Q2BUOcWjLpGu5X^(u$KaKy+zE7TbxsbVt3Ff>cK zrR_^7$tqMoGSqg36dkb;Ti%^gDw~jk3MUAK+DK*$JEEB`>5(b`yHtE9yVR^_b!OCw zXVDO-Xwn$VDAkErbQ!H>Rw6~CH7$B>B)KBekw6xfahmuN=@j#=(NW*%Gs}<|>_Fhn zN`_WMV}KQTs*`zDTSRQ*rDAl;z_dCZj*^r5wg}(NZ1Y4lBW0}@M3c;j*`Z}tlBQ~! z=PZ_dk*Hs(?4?4n5RqqM9U-;vS(zjaDCEy(9F>Nuh{6=ZO)5py6*X1mjsCvO42R6E zZfdS?Ttv&Mh($t-#<^`H9a)~{=t$ker=o%>gMM$4SW#2oR3(oI0?qSi{fuYc^eXCG z>Y5uF){9d6Ga+y?aY#=z7H$hAH5;`PxSfp{q**4*ew-iaDDy)Ze;Qvw*R5!1^0Wvv zUrd8EKBhr8#<^+DB*Cl{ow<6gT#hqIr!fa(qG{v{sv4WBnNu}#w=iE-*UhfC!D|qR zMp9~I3a-qnSggXKc9y46+m7y4gt}T2)SVOv4a_bGS0S1cXp6)IZE8vkV~<p#OTLK& zg)*5Jriu$1b)=x4Dlgp$Brb^@Ss&;-+|jBV*8(diRvk9J*a&8&fjJ`z@`>q%CL&_V zvoZpgY_gFsS|(yFeYAEnn;Im|ih^bUW;-O9`i5t-f**RaDfpE3K@^}}zcNfBJSNyV z%SND`Dcou#W%vx@M)+S4Nroe&E=}J`Qt&8yIX=!d`U=JhMsUBp-A;ql4^uY+GCeA+ zFLkScer=?SW8+k3w0r!{nw|)U`2>;IoVV<pbyr7%vzq2mtEq0+MeUrBYoZbfT+<+| zJ007YU2BOd-60}i?agw}^c3WE#4=N%scz;JrXsvCxThmYUn<&CzTU;>oFM#|h>WwK zAIgi7KTt@}<eSl_qBBXKWaJA*o{Cr~+GQmt4d<)}G+Dc*<M(tj^<@_is)!Voq$X~^ z%`t^jCPO{Q<X%Ohja676;8Y}Hl3s`y1;=Tom-#9p>P|+2xd9L`<(CJS1jtmPE0JVy zW;dfFp>Lg(2MmT8IkVg1lyQoKYRXL#w}eKPBC+1UUQ?xWDq$iSX=g^ESy<oJh_Y0@ zbVnj&vCksA+l^sjX-@XK6?%7XU%V}iHJC8v`;8KgDiXBh@W^V8tCCcL76Y0S+j3KE zR!uYk7MiB>OAbvU8B`<_$OVLvOmuq{=_D;z;!s6zo21d8F{3jRHzSxvVV7@a0!E8s zrpb!lZp~{ID<W+2Wjh4&j3=3f&gv?=%;=ktdnhJZX}RrHR?V$%aKoq$m+ZlO8<D%i z$>3NrD=%mq)e10oevo@jX#E6$%Bq^Y<qEr*=AMBDdbdz9!LDw#Qdu=Xx)R<0yCf~B zudb+CCCB!-k!sZu?EfgQ)lC)kb>n>2*sk(jIJUyP%DN^S=^+|c4~cd&SIu^lo&+EI zRIttLRfcF@B^IRu^%SY^=Bqu#YLS7>N%WPbI5F=^v@zyz86#)_+83mK)2k{YM&yL4 zwq&&1tbR~S4!4(5==EkytBi)!!7cn*W+7>&K4+q<BiL%Ctk#*<AVqEwlY9Nz`pPOD z&H0QHlI6O*$|ccOPLHBqWrFEUT_sS&vx&sWbQaU#)18Ql9i51rF*}X8RiPQ9Ok?Zo zt~wcDq{2HT;}%k89?>{l=2cb9t@o!&XrYiBXz&P_Mudqaj1=xwRaQ6qwN+kKbGcWw zcU1*KNx}#vW~jmwl9Cf--2Ej<#YG9fJr-i~GbK?K3DJz6nRGXUJ7z4X&2~#aff^|$ z#v%m=-Aal4C9*=dNmXlNxk&}>r#V=cE5pJ5epB@vSs6F;t7~dV?G)rR?O>`Wkyf3w zvPBVTQx)WPOyn^wtcp$YrzjD+fnePP!DC1a3V0-=rHTVduwj6N$jZ1`*jU|+%x8BI z!fLQ)KF_8aK`@mLBU@L6*h6fNGSGWfZJ7`&R<A0|{&5xQU`=e)&6<>IBk_#dR8=^` zik(#Jpqq{5Xqsk(P*v5@%QC+z#^N`&%!U&;D@_gF8WXy@362s@27{-PG>`jVv<PEt z7CxBS&9}fb9_caDmO4S!j6qI%g~0e37~9pE49%jakbQxwgEG3kLErJ`WRR;vUKP>} z4k5R^?6=uxQyp=a$!x{9N9~qdfwM<sKq#jURVW(S3u@Q}kV)9~d5Q&DTWjVjW^gtI zQDm4mv{q<|o8pmIuZl*HVM=l$I_X>9O@~!TW>nEtJAYJbgr$UOG?mK_E<0rSp`(q2 z(ve7)As!Z($b;iXdJqBuEx0|poRp0x3v5>?Z3wbe%PDSEloc>F7APuhe|027U5Xxo zEl7<DPOVf447IDG+)#-h(?qqUpfx17jLg0QnWKxVl{vwM0BY*XEB&H~KULz2>WJ>j z7=imf6E$=iBm+Q^6+|-(DvXG(RE)Id5>o8Vu4!qSyBAB4Scao(*X`|jnwxD$n$8{e zx%rccc(ctdJ_pl4+RPOL3dc_H)`4uy_G&vvHDv`7yJvIZFmHcob|{%(m&5HA&5kaK zdb1_W=}TQX*d*%Ppj6IS$g+<_Kc{$1_KXCli-iL$9!zl5Lp;U79?2l|GV^W5eQ7B! z7C&}yx01K!COL{L!I14oUs8kF>C}b}mWehdOLZUCcXWl>$|&E-h+Xv?H7g<(RZWfF zY~pVtYn)ResL)rmT6VgIM68!3DUI40aL&dsmh4*xYcVjJV*zirs?wx;PI)u)xMovr zeJDxV_n_r1$1$bjrW3P_!5sUbGnx7?o#@R8wKA^EVfjYPb0TpT1~Hgmp)GxqrAIGJ z`(5mY*j=PP*`RN4%9}$?;33+IfA)e<v3g?H)+!e0(v?-}GKqH5+0~Q?Wp>M{TXPkS ze%~gE*_*@N$YfmGBK*T@sJoMI?u_`_CeStrI?hWC7}%t<RfNhcI_EIPMq-H!!X3&k zeQ}wDeF0Qve6lE-#cqBmgJG`{pDP9ST~g~O1Ja^3xfltspQtytxw*lc8)ARMo6GWn ztsUA^Z5uOmDAu<hI+shr-rOkHSL1?N@M(Usnm~%wmEG}-h?Kh%bR@F7fzUdY6B9+A zGweD#V>~p&xg4Kol58KL=<w(Bg^G<MeX$E?PA84VY!k`UG^#*B0GT+OD7{{_9g)T} z=#6LZhB9EnW#L;rvP&{O4l4br-Jw)UmsA;x$QGNN?P`NsF0)`^Kh17GNEGy{=hW3V z(r^_oI~UroL&`#xFtVA{9Fq8Um#)aPUaKY$J8{{4kuk%^%p6l3O2mp8)r=1l6xVeu z8Sa8<Iq;^PK(=orVI|tjj333MkIw1X!QqT<oH?#T&4vf!Y(>R5b5=LbXP3x$ap@$Y zy85Q_1qcCqwNzI%dpglmk5uzek95_kPH7KO8AaWp30YxMu!{y3$JxrwlU;)5(66Oc zH+X%E8n2oS77b9<L8&8NG3=vf1T~w2)%G|}yM~f3oVE!`pCQZX=!@BNJVna|XIyfI zLZ>vXU2P*J69xvpDM$@g)p3csPF6uDL2y=LIf6HPkWMe*4k?EHe~D^LZDt0xv!6Os zOyZH*qfxpQt8uHOTaiZdfH`HWmJHL*{sC^BikQqA+Zb4Ro)OIISPZbdX83JGHt92~ zv-{RL28no4gHEf`etoio<BAm~L)HP;2M|YS0vrmnsbHcTM;__Zk#t+Gn|R#Z^kzyb zZ>p%S_Bn-NuB<lKuO0k)E!M3OMbCVouY>q<b;x$8X6ag4q>>@Fa;iDw?Dgi=bNZKU zPvgu+i<_ry8}jC{Q>-<{JPse?-aJOw2;MYER0J+^G-?O)=&d-Nud6w>$x5Pba|aKm z(zDCJeiD8EWv;?7+wi94yRCQXHvT^jFtj4Hw3F&5eUW%?i0@uKejs>BZVE(5Nd#>i z17*6?<7g<_RoC%YBwR3{+{TCzZ!b`YtqG0QO`Ui^Dl@A+OwD!s`4onyukq}q8--;u z+DZfQ=4W~s?Y;TE$&TI?CaE>$b1LRmRm?|{N+j9kqP<Ht(29vGlmu2&-qg%Ntv^+V zFYyk>$`n%tc6R$egbXk9U=7on(Y)x@gxDaeQ7`Eyei$=za$;0XOoX^gYp1>@qMIT? z)mxn#PRfiW(ZE*DDe$997jC9OlVUqR;nhUhI#fu}R?5F7%H|69ZMfya3|zxPIAhNB zYB)L1_EfX(4Kej#s!Q%(O@_A<SOh0Kyjru*GLELr4se*=P((@%!%CE!WX<wfBf@`Z zZ3Ly&+3G^#YCuqU|0xj0>Fm+5UBfAAYozIFwF$A-q#R*ed$^QH5Z^?akrixcgwds3 zdSmglB*T(yv{$PR;!<q8SoT~hvRr4kW`B~ty4pzd&y;GjdC!)i-91@D?@cs6J3;k3 zGf;D7fxZl3DccxoLv2V%d`B4ZX$-ZYaHu1c;>ZFedF-1S{G_Cgq9q(tXzCAR9}D$F z4SF?IpbzWrzZAweEi+C6v*Loe{=hbnwpq%o9Y+8~KV#2iVvZ0MPDB@$<B0Xrs1r47 z7DSVxd6|<YW=X}aJHSyEGAKD7s|{r&R@%%-8D%T6Hncq2mFe=$vZ2{68~i5rOgW+% zWiFzquIasuBU~m4+;g#uB+>az({9(YVl{RWLV~pj*1ZXukymR4J-9sDmhft$ZAmxB z)<$C_5IL+iL8&sas?SjVsLU?AQE9J1LkF5zII)bPMebBM+5yvnFN!qtDn3whZPM5= zL{!Gn!<KGKL@9H{mu#3-k#>`66DzbrFlC0U+(qnl<+W8!<9x{!b{<koF!y3s(}cY` za}>2|vukoUFpM>It!09_Dr%fc<S;{|z4?$dt<9^eM_A*#IlGBD-VJQ4oPwDF*o0ba z?sJ(TS%&~dK-5I*20i*6>kE57N0(nhI{!u_G5hT4gjYvO^cB@IsgB(aS_X4-9c?G$ z)p6W`Izq;ilEhNEYF~E;xMyb!bzCk>b8H@*AY~0$;&X)VtmU3X5Z^t1MTi?qru#{! zHmQ;^R)H)di+y-6LV}>wl6%XH%H_~%R7ut^qCzsnod&N?lbpUJE2-wS7%}=*MtTN! zPN4`>4qVf~0k<C7*$g32nNyB#Mc32G#vTKD-s^FzbF|7m#??8pGPAj#Y^;Nn+kGj9 zJH|a@p;ZNUK<xrViDGlWeyh5obak!(Yv@*cuc%<x2EA)E?)AuGznL@F@n%)EOIFY_ z4q1q&7=wbgLe0=NFf?0Zomx=^7mO(&7R-9pGcf6nWprfSuER%bY~L6}VxhX_%p6rN zw(b@)FwqQqnKEO0N~$qORkTChn?SBKZhh-^2A-4ciCAz{BP}mB&S&p|JWH+314cXT zGGsScu+Wu@I!;#I#*;QpOx9J13~Bwg6O<L(Ee$AKdk>sCSAXSIR1Pw`QeMtcMc?AN z@1VlXr*Soxeyf@K_I8g)W4Bk2RGn?#(loVoCK8->Ha3*UDK8l*4AT<oDQmAj9#kYH z+C@Q;1#JtJVZ*VM+Zneyd$CAr8yT`Vojm(88#_22M-0Jb7#4kI-Nb6pW)yK>>o~L3 zqeY}W*-y=|KByk%8+Q8G2{JQ)D^J(|6g0BJK(17lj84{(YnhT{NUXfE=+XkH&w%}4 zCIzjq<))#$u{n3SiJDg6E{?HvsW<M-uuQ>lNHySklL^Ob&}Bk1{Q8FkMav*;Mrd8q zXS>Vvd3G*sXkJ5TDYF1|(ZKkV(YHBUq1`bB2X{CcXoX!NEW5c!r4h<)#WdJqs23a7 zhZWf%ZC^G8sg&Eor1;xa17WVKNz^woZYzV{(qjAv-M=A}?lcXgA;Rd~z}YabLDITX zo-X8@FOKik*ion3LeV5ixBZkI7955((y1e}Jhm20By8q1nbRY)L}0s4Lu~{7%zWVx zWu}9PfGfJx41=gSb}>>&$~0;jNVp1!A9m_`vuQCJS`Z225=-!^bb;59Vd<REVQT_4 z8!%C`%r>j&XdD}N3B_z+2Un8JCM9;Z;Jm$Bs?5ccc%offmYnpc7O7Y5&vKZ<i|b~o zBKfZ?rI)15O&0}VH!KK&1Ebt_)%RLP&T(NNbZ4Wj*M5lB^=2a14Hs3X3{;W9Sy>=& z2i};ylHOjKC`$=m?y0Y<tEwRKqEsrjKWWgIJ6#I9<0(b3`J~G`v^%D79dl8Wl1H^} zAKw=and-ZuhQ{=ayxnfwyBSS$e6jaqcD}Ng+wdv5QodD)uB21B3I6{-rCdzSsT@-u z!IqhsY`9g+5JRWq(giBY&Az9S-57`_+k!UM$iXKIKW!~EMna429yJwcU)Qv(LvV3M zTC~hG)2CdRp;$-nG(#&N=_0r3b}Hp4BA{&?jJLRFYy&1SuB`^zq!i2eV(-2&($1}% zPS~YO3X05c(-kdU2htlO#)iADoEosp!(^#dM2%)5bB-Wn%+XS#gfUKlIK%cDwa^Kq z0k4s(jaoc3a`j9@-t34G%QXNravhF4P))_Y+flcpNHNEE@o-O+jc|MYt%<9?xz&)< zM_ltvv@X$^vnC&!ThPgDC-uy$Y)-b`*PH-N-yg%q1=`CD=5yOua<`D&{BMUg$vu*m zgE2kp-E}%A75ooEscH<8FhGCJrb8XdRq{BKPq*J~4=#{~CQX{OhshXW=BMlbBxp0) z#I>Etu0-~vovTY4`={`+(|Rh;mh?1Nv@|x=D@lip-JcS&!~b-zX>o8px+%ms?bl@3 zhxF{dWm<rd&Eg3R61?NUUV);~oY5BL;G!v%2}k|%WJoKHCgue5Wo8p~FqxRENg9(v zW~pY)%;c=uPmM(@IH^+}Q&%F!RcypB%^OT?O=jb%FF>ocJ5CZk?N5&s;Eu9jM(orX zj=V`rfDvxnrGd_!lkMgJnvT#N>fo3Z;V2y8s75ywn#^@2(&(mG?Cd<MlxwrD&qd!A zy{s80M7lR?=g%N0PLAxAgCKu_b9;K^oaxXJ3ubA3*<(VYEL7Uj2b~ACf-#2b0pso4 z>E_NwD0?9n0g8K8l$?sy+yQjbuX(S403(|Ep`uJuXQno_=9X2GTDH=4&VG4d#Bj4z zX)@Bc#>YVI?%_F`g=R)Jb#I+^X9XVXLUp4s>{g=5W-mL7X6@P38Eq$J+T>)Wl7z}{ z)Nm<-I>1{ecUpBFn=G>aHd+mprsXKV8mUcVvvzhrhWR!Ba=i*DH;AsjJsIO~ygBYt zShmcf+KljP^a_dB6xDn6_Ozl2AuYtrE>o^2H^tb^Sn3D2dW_!OoNr<TPwnOz><+kw zM-ahDGB2mF%|zEx&th=b`9C{LIwaQ^XBVif`6d5zp@)iRrqC^RHOsWNw%T>f8es#r zjWdZR33~dn(m#a~igkBVhKTJH1Uu<SlN{NqwPi1w<|rxUtZ~X;oPFCSFb}Q`bg_$& zVCKR#;zzl;<mohaW!KcrSmLo0MdHk!vP9aZWYn)g3MRX}YRC~Iz1}G2vqNbIcy<$_ zv@)z4RPc7RsnwQFjG0R23mAEH+M{7evy44W)nI|OE`@nbToA`Cn`CMlUK0l#t-(R( zJTsv6(z>!W(4!mQgyuE%Fel=XeLZgNTcciWEpwBmnwv*c&6+s-l8YjDtK@bXmAN=% z?(DdGL~PUaxb=*a+Kg+D{*p3Z65nihkv_^S43<RQDy3PKtD|Y7ut(F)q4)|ji#O8< z{PI}LGn<F{GRIlvyh+MJMcu=gxkD$Tt}?fH)G>`#r(MmRjD5;E3VXX(BPt_?8d;`G zS9WkMyDqjMX-Y|MDEG2{)NY!yv8#OfGq*UYX0^<Wd1Hp1gk}n9u$D^<jtz{EgM&4T zpQ4z}i2{wYM{kO1Ox8Nl)GCRHv~s}{Aq0uXT!<+#O`h<~;H?WNl$hxUHYlu%b$iM< zE>(&oERh)Q2CzY)gz2P5)#f~Kt34(eT&G%Q(?xv>>p*Y`=17|hciu+=XPNVkzO0yV z5KMG*X#AV;lorkIgG;(u0LhM~%Lb0U1|$7a4vSJ++*4^rcI6<C8~>aQxv*T@Ax$aT zOMa4SLNo*R!?XzOOAgt#?aszUrkD$LBf%stCO>ZBsMP4Ub#xT1V$pnz_-vA(0%N^} zFQgrf&$blm)YksXD9v@)HH=bQA*)2%nBjOZ$fi5`$X@(23jvbpN;<m`(0jM$6=a>V z^J0sZpnWw!`**dVmJ}3v{~BS>sgs*CEGya=II_j4G8om<DbYA+Ln)0(LHn`W1LN&( z<LGfganm63-<{#LsD)~i<i#w~2JaWA8iO0=rZWV&Vkl%zGFKA0G{Uc7afqxLgE*vc zrAwRV?t!`FNJ}wqBq&h|KkuSe;NEnYY*z~TgZCR8^gxO^!<3O$Uge*nVe3fk1y}nG zwynX+YyEq+5#n-I2R+en2VIfYME*?$Yq&Js7z3##vh?rj5sp`gtfiZ~4K#{z{@4=v zFDlW<!>FQxp?^>8*Ytm;n*}XDsIpbMtck>IC$XkNUQ(PI$aH%;n&wongSChTJ7d#e z-t0F@+dhr5l}4kX(`YoG>!k+;<kYlJg`rgqo7cG(CI)M(QH;6I*fIcfh0&<F6{jCm z%LZ>&jSM(xg0~INIJ2A6ea;wfjJf?GH3jN+{*0-9GmQNz4ti`P(vwy5D$A&`<BLWc zS9WL3My0eX4>?ihTK}xE*%`z0DuG&G8a~6kAgUaNBRYKLBymlh{})cpjq)`NI1{H% zf6i_2?zj?dt7xFy<+`-BG>}VLfVmf{FjXT1xzn*mP+%le^|B^Te?FPHf&S+@$aVem znaXwf^OcqB@;}y<9A`)VY^!m-Yt@#?9FXUpl&rB^o0c_n?uu>=U9WjE)+7-cLDY7F zzCS=Q1kU<~2IEjAl-pMGLg{ar?^p7-da;R|ja)aXxbAI-H{COErNZc@4YOvFnlft? zsWbr@BXdX0nCKQc6aMnz<yymcAt{YYMf7_ku|$s@q3o*J+*Z)0r{+yvTz8uZX5sJN zi8aEkL`2PxW@cfg?Ll;4=w<=Jgrmj3MmR}o{jT+JZP9F@ldAr{y4^kTv@&Clyqi0t z+`R~PDA1WV$|bv*`9RXIT$>r!32RI|NQ=x-?Dy+^R1(GVC-`+MRgW#=?3<o_5^zaY z0@lQ>qlj3fh$S^yFc){Smw1c>!{tZq+$nw|AS&o_W+@;e32@XwUV^zNWYcTh>mpKC zn#@Z)_b?ERZO}>ks<zz`Qofymk+AIcEg3bhmr|>3o%wOvH=dN9KtR_HK|9CYEa=@l zt{+<Y?|qp&Ap?114_Ts}HY0TZh&zzl3dk#szLfPjHes&Tb;`*{I?bRAj6f7zf;JVv z@=Co%b%2BzENS{GG-pYp4R5VtY?z2x!AmTh&$?(7zD=&CaYQ<*(d>a}XNI0pXx{E- z|8N8<>=?G$l0Y0$H)Bbymo<!<eTS}Y*W=2(<^-=SH7Ay`cFI6DL-<Z0XvB3|spX1} zv9*s9$foR2W`EhPnHTAJcp=n$v!Td>&;H<pHBcWdBr)cuzGv>X(52`Pye}WTtd23= zBCLyalw)(EHKZi56Rvwa&Ad@9SqJDR3`jhsfX41KRB#C~(f4*_b4Iryy=GPl{`k37 zHN0r&Qa#;l6B^+;+INYR1F58QScF7}w=%D#F7FM031-t-ZgbRQga+GLxOvlN?j0G4 zj77A5SSR<I@xJDY?*5pY*C*_+hbRaQL)!Rr3vS}4f_Y2K(|e9Q{?tq|mOUxsH(M~G zBbrUXR`Uva(m3O$dMh{Pv=JaDb16Cwqs?hyOB1^*dGD_Cl68$e(+Y8rW!?u@t1RIP zicmrKWSvgdAd+f!HlJPlC?LT+|1t%Xag95l2n)vp9ZycYLTkWT;TV7k7vN)-<; zC|Jb$tczVg7V3H*zJoGg6RyaNf}CUouh|yR^4LKz$LeMQq<suGP%u8EGTl0c;~GH$ z5o;fhojVkI%}d+YepOdgE2&gqIG?D(yvE?%Xm5!Dx;7HlPFg=xI%~Q8!4E9#h4tWP zwJO|Q3*TH`U>)79_}%X<n+9*1IX6&OonFjl@S4BklMOc6;g2j#jdYjLxgZ_b5QmvB z)Unn$MlRcgR{K(syPVo$e<(u@jaj5!8wh5XwlzW@))Ljcf)p$>RK9FvQ0!hyGQ-WD zUav(zdSYM5X(1y0G>LkDaB9g2Vz!I5@v14v9lYT!;&;U8^!Ddh$q~MoHgu#VI}N45 zRu=)%P&7)Iy>}8psKJ(kZTm9F-S##vYRu0~J0&-0jB3@>cVlcsAATf=!CP0e+%FOG z{(-X%ylYz-`9?*+^uV~Gm`$}PeH<Fv6G`njs0kC6op;!&<NknLTR$e8oR>dkW6T;7 z-I;FFzcEq3#*-A*Be`GE8gbi<`7hbpJ26J4L~04yUpXeR_7{};-H2Hbiu1-w##=y{ zYkQ<3n&y^(`iZvynQH}mwjoqZ1k}iaXhb{p-oosU8@Y8SLzelK0XsfALrv$Ze>a4r zoHyOx>GP(RHJ~ruur)2FPg)2T;0yKg3ri#Y1R3o~r9L~8&g5J_S{O=d@l<AhrAvwE zd%s^ZWXAU2Vs6~fp5khqWHGxH6zbM*QP}&H!6`8>3VI9KwAE#&CVno3-vU~QTy2*5 zI;1wbKmcd$CVe&8<~YmbgO<Q0CNJ17h8-&BMO95)GF%j4hVwK|GDFf}u(TIp+G7cp zi=;$9(^kk7Z^k`Y>-F}054BvlUBx{qGAqxHOmwj>8!nbK&9Q*4`S|s-XET_Z;aQE| ziI8e6<~MDMWtH^H?dw=pQ)!ReyhWLg1n<)62KYWj<$COoXGxay_OY*d?Gx>44Yl?} zyv5~uKN$qS&*Lrb`%RU_=C@3|#T9M?$6KuTRPDF=z~ZXl#Yf&Z)0>XoVqTRCdy6@K z==K)ZFsmA8bxdcb7nXU88+bX=Tij&E9Y|O87PrLZ6w;>xceXaX*4~I`_e`kdF1;#d z2bnU@&D9#sw1Q%v&i%BAoyaO@wKREo79QJ4h(bC=FRBg~xz1DOZq$_)PcELo?~Z69 zE8;$VG+Z<*(~&A_=6C&jdV1{7i4-T29R&^bMO+0y4q~EY2a(aWbi#x^iYAm4@r%$U z6U$0>8_RE0PAI6Myo-!*6$`PkROVMDIY{AXAxvRqR$k*zWyfF2$jpwe<;Aq->G+8= zY<EP8nj^e7$~_j|{Gj(wZ41o|C-`kM>#DZ8wyH1vC8XQcP?3?A%qnL*$4Sxno~DD* z(x$aE&n}wW=g!?{E~;Y1qZL@0Ke;uU=4A<%U9qCs4E6|zampBNYFg=@5{*z!i~GZ; z`6UHj0o}7R%5H!kTEdYKTO%ocL`=WZVlG8vZ0^*BkmdN@DVlQd#}{$at@R5Rp>&@q zJ-yGUCgf}I;AQIY$V@83^+l#s2^GAo<gdJjo#zaKX|etiW941?tr`9kBgYR*Ds^av z&9>;uTl9O(D=!Va<o)|a{-0!+(*u^fA^V%*Ie(^s2%}IUY-NXZbd}>~P5&yxZ$}EF zsZuWb`BydqbAAG|#Qbh%-=AyD<uIS&leEP2(l8~noQw?ghZ!}lsLa3+jx5m|UA(OH zpZ-0Anj=rjZ#%C+D@#Nc6nlOV=KLrwzrMM|c%(>Ke75uZ2Y%B?Tf|AmMvj(Q3lLgY zEBRFC=Z!M^TdjD_#u;p~t02}eTKqB(GN`5bB>`G^7eyKTWMwu2hJMpPD6~iiuc0Bw z2KCvO3SLXk_%S8g%)umqIl&a%s%~9ET}2>9GcWeiE=dBZK~~MpUjKkcx@~0FqJAy~ zBzPHZI@_}P+y*Hi#@Nd1`GbzWPLUTm<&(`u?vLJ6>{h1Yy>;81R?Wrg%Si=9f5zWx z;_fQ~`i<=|eQ6G_yoCurr-%nEiB(+cv}K^8U`ee-wvuD^(#;=!P`Ek&VnA+llbtdS z*WkZDG{|UWwPw9Qm0qFh*RSR(DfGD9GB@_Yh?dg@^3Agyhjli$g6K8WkNK$zI(u%< z$@LcWE%(PDBta7vqseOi8>Fve@=I1)-RJ&#wE}G#Nvlb8t-PA6K9s3mg-&yptk#Vf zlAmz%Blh*2*U1ZSq?vBW>ypbO?#IAO`OW?8zlZSqNNG+=bACve_-qjP57T=&V$%*4 zyAI3`%DL_pcAF799Q-K*!x&|Ya}?&^7FPdvBCBacsYqAU{-+4Pw2{+RLpGqCU(B}Y z;#Z7U31uYmSW>^R(dXaz&hO3x`;Yj`7-)Vb#{T1l)^q=Lvik?JnpFRHX&5-sEp9HR z0RHd)ZiISHCs}Z^k7bT~^=AU+4@>mh!T<Ze9YHRoujEZP=8{)_BhUZ$5i5Jl>{@v# z_k$RB*g}s{-NAp5@cy+-_{Ab?$nPKra~+DDplDqEMu&V$!e+A~gD3q7&(DOC^M57! zClYO7hr*#%|B7T@$jN3LEhCw?NoLXkvwn0$J*+PZT&Bz*V0tvpm(wln%_M#xMX#E2 zfwWoUV(!?1?AOhxm$4~eH^C%5_?MEECu$XE=SM`bF2znyB8*^YPv!pqz|RL($Ed)t zFX2mzNJ0pvuQd<D40B8#yaQ)Ot^V`qnupY>JR7Mgm}_(WW~T)6BZL}Kb8EAPlTC?7 zYJ_CN3U%gfUM3ObC0G447Dh-X|BW)IB>%-9op95|N{;-~$ucGeW|f>4uKF~82;~0k zDfkihi45IDs@G8Un?xjBf4suLi;$!-P=9{1YG|fd-E7Nr;Ht;vi%hC1DMrbH${g8L zPqzQSmH#g&d#~b@Vz5!>rr*S<QsnHYOFuI}N>^>L+^M3$W+P={)Q`>QOhpxWrLTVu z34{g;tgk8tPOeFZ*&}7iZKmzq$&1%Ea;8Q7Wl1oh=^sFB5vVu@{MVG4{K@d=!^>$b z`TwF~TfM2a0h4Izg;uK4c53~{f=6{(nVNg_Zc?Tu%d{tx(s0qus+D7u)?`#aA#Vzs zcG9)-dfR5q-Z{%f{i8r`2Qf(+sKuzMm}~6WzA$hF)QpU1DWG46Q4_OWM<pH1wkS<P z`zoog+z0$0mNf}ATinIwhwp=OTCG=8tbJ)y53?&STPZok%rDWIAwi2`3N7#dSxljs zsnJy9GH&Hkva9}8OCas>bKfjYa66LSg~-aQ<Tl#^RlB*OWtD!jsudxOh0-buJGNuA zP%<lc-~N4z9mkndmW7f<?6IkvG1l{gKRV#eHXHM=Crsn)6m#Q_+frJ~qeyBlU}&Jt z*w?1nHp4u~d){D0TeBMsZK3YIS<L)y7TGHzXr?r~%OEjdZ6Vc{0(_g(XDwgYL$M-j zNR1^Ynf)E*4a+(1Ochw6cTK0rpf==-5v#8i1TC~Lsf|GiNtoCEp_6$Lvgn!=R7WD7 z_fIh<Imw8AO_k(4c%A+i<-xm6x#ma@`L4`mD~er(KaiuG%?7*08MyaH*?Q0W`<VRj zxf-`7QPA4*-TmjF-Eu<>Xf=bqkxopD>MPK^lrdQ8g0^;oG{We`4s(>DJuADeSpDD1 zP!W``mO|ZXWc~kGMx!9x2W&~HqiITtvQSvv48Q9C%h2iaXNU^Z_jL1@=89aWK9UM0 z*<&#q7`E{+n&dRe+CV6^-G|){cEtP!et#QDD>l*!DvZN)JhE&?%AEh1(T*0kKqQ9@ zuun2KE9v0IZB6twVl{^#RTbI)f64uunHIB9<iv;qq8Y93uVoZP5O`nELH}R`U-f@w z`clO|QDkB)S5=905+!KF>i$$lKEjkLE~!ehXX6I$f&Wq_@SuM-asLMM|EfEi-Z-!8 zj?Y@3Vh|vp3|JD<uIdI!DT=n0h!P!2t`QUwM&wwXfFcEsrf`BT@&&T$t}E@LAP@q` zivmhke!f_L|NlAn<(U~ul+!F~z?$JR&&z%8J@>qy^H+1I@BLrBi!f!HyKdyAy!__% z>bm5c=XUrqlzYVv6SYsNoBWanRU>?v#dECqLn-99?g&6;-$H3RJ-`8_TOSg;*MFZ{ zi}BYre3^sdDZn?Z!be-lm&46K@AlVun<j7!f}r?J8sN;f6RXs0dV?3cAkeU?TBimu zv-H;7;?&&mC9|E{W$ihNHOf1|aB)i%m*}>uABD!BQ>2e#B0t2#VVD}bK?1NQr^&E2 zh^~rU!)owuZ1$8DaP%K8zxxZ-7<g@PAQ;#KaeI0Wc+FiJ<vejSkQc(QNrmkCnJ{9T zPBuR^ij5ag-*^?;5yD?^wMb+$gHqOLWF{5AsB7w+NL)iZpLNwaizT$c#cMb>d+FP{ zkQA1qFXA%twHour_9n0N*0499(;;JcJzwc*m_FFdBx)<+n-p7hjSe$=y1++nox<X8 z2Qy}PP29l9H+N|Wa(B9aZ~6-$aE>1SVt=~pD4T!$^zQxLdsDhBZ~S`y!6Wc*Xpne+ z@9ywl0N~_Qy0-^ry+W%+ha^^cI<;~&zg9|f7McXI<|LSj7K^oVfRv!&TXKgEZ_dB@ z<Qixu!&{ld6tkd_pp{<S;5K^0H4Gf|n0G+nJYq(Sc*BfnIx8T~%;Kuy;832eZjxG} zy7fkoIOosEAc1NSdBlI^-j@=@c%GcUKnl{?Y2@WBgk1n`2sRlR$M3>r8Ny+0p;$Qz z$*hy_)1gxc7gUt_>TkYS#imzyGE0CkqM^Ft&+Xv>ltU13u~G>UWoO5B6UTZs71!c4 zJxr5btKs=kkaIvq2_l&`*c@^jNt+;bYj{cS7EQ)YxjIq4l=u)~h=NYel?up89`ggk z0T##e4`7a!aZpP@&_OGAgLk@@p+Z<WnZ;pJcmUF&4hg1A|2I|cQHw-;0`QwB!%I~e z?+Qj|4nPZ(_sS(y1V06X7PZ;<P=!v#tCEdK6HMwnAC`ryR#W|5?f-U9scXaFSGnB` zM4ggvLjl<?EdaJ->wv5S!8f1r4t~4gl@4-I{D@*yj%`wp0Ck3!^kLE)C$`RFT99@2 z9d1MQCCH8Tm3qE*pqJmwiHO?i&hS<yr`JaU-p+8bAN7JG#yDRG++m0sp%HhOUEVcd zcUZ_nSR_5^(d#gZx(7)Lq}5d{D*644x&wP&d^5Zui60Snwg@LxIje);0sjW(EBcvD zhTrKsUmjq1DftvS#!3obiNf%WF;Qsu#I2u$MB0xs;tChO@nQ!<Nf`v)m1fHhEKESX zSB0Ks0Qy!sXu9(ukhPGQ7EZQxcar!dU{hs{s|s+^7FkWAAbCBhTY5-~3<tB>b}r-_ zqB1w*CtO>Uigp(5ixT7KMFaU6UaIxjOuaQh3|lR=;nN$}I8?}#rD^AwDvDzYRu|up zmnG@PdNNbK3(?C(7{2yC%Sl?aM4cIndxk9uyZf31kW~b6N!F=uNlAsmh<WwA{G$m) z%MnabeiXZmzQFvu&y5=1kC_IO6()8Sg*<Rc2yL1S2PtS2ASSIt0aC<r(zMCqkX+Vd zg|U~}iN=O^3d7M*^CGY9ZBh>sHs~N{rwV66?inK05DJzM?XS)+*nr9iy*<1-eTp~* zM5rJN4X-yKg;Za<V)|Lw+oZM{RA_juOqJWi8^a1MC|#v(VuA{paT&L$0t>MuVv93s zGKDP!FwkrXs8Dc9y;JC9>Juz>Ne(RDLSYEOT*|SaP#}g-x`yAALPrlzb6Rpjh<}yy zl)*6hQru*w{k9!p2p*>4Z-W@R&ubi0ak~{?Xn#q*E@l{Sk}SXmsT0(*JdE0ScDBHU z)K~o^s6@9j&d@_jQOB1HVMbzu0Cn79QqYD3G_*h&ux}`oFFFgbPoK|F13#WVmny?< z2V<yXRBIqZ#ZjadYq?jsWvB_vdpQ=?hqS_?*lB`i^y<+jDrfO6*z_}D44B#r0MUX@ z*$F?Ct`V4{oC{`p1|WKT9{_6ktD=UkvcgG#5V0`~LbN*L6B#(X)F(Z1zxyAu=H&H3 zy+xrzNy6c+$b?e1QkUizDbn?~Vyrufl2kKgzU1|AQ!==S9p7BPI3m^DIkR9=B&?kl zx-c)%6wU@*G#(D*`IM1zZnzG#c*}G3sh{ln8Rhs{9bH_qJ~Si^-2o9i+)7?QF>CX~ zh;cCyQg3kZ!Rz=T1s`wP=_+>*JzF^omqu}+3DTp`J?oHdOq{T-B*0Ou`9j}s>O1h= zd7ybq+av<jgOdBVL+IfQWS4?x!>tn@DfTW|=R}o}cF%{mLPG*2ncE_%10{*1^>2iZ zB-M2yOeF4Jx%I6dh!|0kD<ek*{{gF|`ALpGIV_utDLd9}M32N3CBD6Peb5Q7;|u*v zfNq-BtRU8f8o!cIq@*Uv0Ti~mw&MI^K%cPh6vyCf0Z!6G@J{jx=n!Z%w6EWCOyl|4 z`LUK137IE;G9kD!8YaFFZ5U-%qIx2gCSR%f#aC#H!C5POQq|<v$XH`#X>jMh0fGS` zON!cZN9Jn?*;sF_sJCf;h@8TjF2{4>gr&rYPKP&cLBHz^KhcdCM&UX>Lr6*wlu#D` zih4@g8L}0^-NaEs&C&&)l%o7pEG29;ELgUInS7{yv{@wmUnM)5oS3W7nKWyuJ-HsA z*z4#}<Z;-sXhKH`l3$$Jl80qtx8$WUwv<2uUgD-gw(!5OQB@L*$HVQ^3QVWytAUp; z7HiB!)XF|cbO~jUS^0sS>DR95U^z0|B=W-#B@2wl1nKbn{UsUxSSphal*t)bL15ZP zheTCzeul>Uboi@u#;Q8=2-u~-nZ8=cw&-@|L)`d4;egJRW)U$8_6Hpz?4qY6Mm{QT zpi>f@sSpA(he=(_;JP$%f;BDi4Kh<DhtzxUy~<mU*@QhU*=4U#Gou;YrIxgM6Vu;0 zAG~G2Taz@t_fRv<{2kBBRFv=ggambR4h8)?taTs}iY0-f3{{nN4~(ZWnEyo6wqyyc zr#%Iypy^^FDKxbM-wjn^a!2;6F`x8l&?m@5pijj*2wq7>n~Xb1)JjxOT7d!;CKMEe zKB(@uKs1pcFSh`<v%|}_d*RbnKyd|rtJj>4tu}u;0nk#$G>d%_N5o_EM{OrD*OcBy zp*)D_oETStL19rmxgf!M69}r?4iyt>Hu*xl)X{(K&pOE}7o>L?Uc3k~AQzeSV>pl~ zlGlV$7S{+u3B8!tlzxQSVlSXHczMCmWidi}WGJ@z1x6b)W!=-@P&Nnz54F2<unrGp zTSYq}LUAmnkJyr0MZ~ZeIKqlrMyOW73^5#X669u9Ob?yb5;K+6k7Y!M_VUcLs7p+0 zm*~eGT2%2>F$rkDU?T-qlpc}!FYB;TicDzgN_q@hhK6c))}p){+>G^Wd@@JsSLI}R zOjgqy{}j~k2eSx_I)S7*6sau(6o%CL0259s&ZhQ`O&~{`21ynSUPXpuJgMn*={8z^ z(d$bpzb<G&O(h|+>jB+*abuhslnG%ba4Gu_<m)|A!v$O80XkI`ES7wDE9#~di@>IQ z#XLZ$XeGV>lyW#WT!%ZAw9c-QiUxJ^>V~Vl%h1kGR>Pl7Rk6l$*IDZU@}T`J?_x2< zS?fshrUa)u1-b;rxpMLK-wL0RrYN8P#>I9DTEW85Le0t~Y*30431-@`tAL@}1g&Dq zVdU$&H#@Uah{b0pu_R^tTEVj7GU<C_mkP-BGcU1tZC`Fwd{j?u#Xw1POOwYPjl(Ec z!y7rO_FpWlV^P>80iIx2@V&N<33er}>WxU_D4vEIiANC%=QxHqTAHM(DeAg3O}QYU z9x0v`{3=yX=Yu^_Y04^ru#R>j7so7#Mb@ajT@lih8LR}E7=eRzWURxe3*jAIDWXBh zT!1?4JQXsQfUpV`7GE<P^O(lLp~B$pG#jYQ(EE@1?c}%>I7t%aricl3_*hC&{fYd= z^hJ#Csq8ndA6B<qLlClOk&Rcl0M=ar$D&3<W~VqaEo|9OB@0FSv~u8N6955a9@m;? zHak(jF(?Wm++ulFYO{MwQ-&qSW)JkN(3uYaf0N~rTH~ie&_c;Ka+cmv8@0Y(Z(n)= zoYNz@rit*>QM_|zXBmW?*E!$e<`grOIgz!@{1<EYVU~~B;mgn5HLen@mYz?K=(L^U zcpj#XBc&xi4K#Xb19--O*Afqd-syd);D+6}-SkQi1i8~`<r<+Ow^#>_Ohj__8@`=k zv$CtJ?wGSy?|CYBqCCy2-#t14NXw3R*uaeJYv7^z8#c=zNEAFHDVj}Fk5w-ceSG6Q zN5)`>D_Q{0X*JIKva!@Xee#(xxr*k~<8rMmlpCc;nu7w5GbXiDX`1o++M0ky;z=03 z^+NGOL+ct|uEBK;Z;aPPZ~!Y9u#N|@gP9ko_1PR=(Cb_r7SAd=!v=O&Otsh+mWx#J zs<GxObU#_S1g$=j^SyQP3$o5(*t3zWr|>=srH$kZZoa6Zw7mKZ0YcdhXkHNGZCXqE zML7CO=7_9*A$^^L^p(`26X9Z7!4pc%--Gov-GcR1#0UD!$wtvabp}A*sj0wZ$6l=~ zSrZi&Y<Qg;HqgNq6&q}_t17C=1H7X^V#J3QPDVQGUyewhYaTRhkWc~^Rk6~ldaRRO znr2G2Y`cQxFPFeWT*#}C1~Q>yhH<=MhT#yl5<e+lpdMvy;n`=@9JDjttg88vk_DLl z%Jsn&`a{MjdnzC5zRHioGNT12!7BlcX%{q3ObncwUuCaAm_R$h2cBbD3wuo5Da&(M zOh~pshS(J{V$UpRS@)=^*EVQ~WHrDL@r6Vsv!|q@l9e~U(bO02s-0Hya;i2{ysLp! z_MBGs^W{z0-0a4Slle^~is8h9*H6_fuGqffZm9zn%}BipEXnm7(J@=xNGt_DICA~F zKT!ev-CsT$qneS@@jhI$gfxrL;bo9!Wzr05Cgnz<7v^2*L7N-H>a|JHPOZkv*7W`> z?I7F(ou`2IlF0!~x^1OtPvXR7v?vE(OL(M)LP{B-6y5#G+wv%wMIFN{`#cH{McYbJ zQnHv5w0SYrqTM878YM}+r^+z}aXJt?EJyh2D82&1z@jZIF{MSwCbJ&leLT6Bs#@9D zVwQHQ^@<!k;TbIhMF%aTQjyS8y7;6KCvP#~x{UqnT-iGdRtYto-Qze{NeSU8NTIKX z*T)NicMD6+TiFTg<+#sbTICb#fYk80A;g8P_SNiycZt(r;t!0XhW2Yiq8x^3l@!YA zF;wlC6+ZBIJ}NLnOq4YwspN*ng6T{5Tz*3|_F!wAE3~yZ6RAU!5u}b`*SO(-kojh6 z78jD5lXOasX!qk7e@$Wbbb&Io1I6D9{#rzC6M@a7&uGMO#8`sg{tW+ud~$%V!LSp2 zZGU{u_)ig`0N6Aepqm+kt?sdp(H+BB*$_FE$ETusr5#k^*}5lWP;YbZ_LPMbhwa8t z+LN#1MEm(VfZIcvNF&u$%QCW~rl_?5zncJUQH6o4Bu3S#-MmJ;_B~cdw9dFjSA_AM zG~IhmO5i1Nn`F>d^NS$f991m`*f2RoAirG=@eL8`y^1m_`gJ5Fwt(hNWK8VhUV(r^ zF~a4Eyefe?u>^ZTAwU}?u~T~xxZ%IO&$p|{`D4)$K4B85IF}Gj_JCP6xi^0i*5w_X z>{1bug7@V~;)ugcCTgPc^Brxi1vqZQYbK*Q;(|lWm)QPF5V_Y7<02_Vr$f~nm~pG1 z_D`d?m{<U8#>~--BE1N5Qk^A#a*9^M$n_|45652ME<b7H4HhZo8z$fLt9{7cNwB%g zA6PWS|BGiClTLF1S<nQ;X*QDj1SC0F`Ar?aHj93fJtq&Aym_J;G7J?-hef644V8(j za^MzSB!Cxz-I8m8s6hJyzbx?SK25Gulf6O?_HUNq>8r2+1Jzw_Ou*weo)Z-R;cFyJ zyUN?Pgs2e_Wn17-6AH`ZU{;asVncM$cDrhus?E^}c7`ias$I;r1=?<S>7G~|*oJNA zL^NWHrH=u-JDL;775nT7J1mpc+BrBuJC&wC4Y1wEk(yIg1y<5gL=gwZFMbvdwBS{7 z7X$*H9)=AsF;$dy4hiutcBQ``FR-<610z9cfjYbd22Z+1G?79YM3$G1q|HCQ9@W0) zGcH&7Xv-Z!lV`cbaFh!rQ*ZM@aheDo>1wF%%qpuOd6|2_8@vK04~9f9wyI_|-zA;v z1er%p5|$`$EKlfO35#m<?)J&AY!L#YmF>Eoo2yQd%gRhSkX@K4dc&J_7(HBg=Zrz^ zVNgJbEbALN4MNz9JlZlz5(YR2(glBTj-<eZ=i1+l(e$F7gXpf%jC|ACYojo-%<o7{ zz3pVbFAWu8#K=^brHNG*MS|<qYhViz)ni%K@+H@B_R1x<yg9d}ftXL}X*8?g1?WK| zr?s;?l;%-Qo4OJ8YKm-#2HE(m%2T=<5gbQUx^76!tz@>z%`A0pa(_nlvZM=H9?x~r z>CS_PyZ1TXu=t2({#g&djf#Cvk_5XBhtP8Rxlx<IdLisBja4eaSOZ~;BLm<0i>~Ab z2Qvj-5%ha-(UV{yVc}LU8ouk)jHMC8*}pW<FOev_W7BPQP}1MHLcRa9C`;Ghhk663 zuN-F3A|?w2UcW31=vJ!CQrH6DPPv6Fb>i*>pjY7aX}W?GH?Hm;t2wQL!;Zmb^LYO% zzrBpcE3k34T}RUIWFDedzvFBaI^8}CP3oETi-Z|@X1(@ia_)Vu{WRcx99}2>UuYu* z05B`cB6cZ>iDOZcRG_4p)1p#isbSAUD<aQ3l3^5ZtJr`x0j@!R&zn$T1PU&&#$DkW zvA?*PMMv=t=$vtRnsO9~lyltm3t8`{$~C41w+KmK@pG$*b4`V2nT%t)D2*Pwq*Vw2 zf}6;K|15o)H{3|AO`mvuT1+rI%NS5UO~2Lsz#C*G@E5V}r&ErAJMOK8aKVwv9;?Us zaYd{^W6K+>VN5@va=pNqeq3gzIZN^Ln0@4jJ<3kn*+IN1Kq-%J5v9f+EENAfXI^EZ z&G5O3E^`OpuqXv-!Pojeyj)}n1*1o2!!tEWv_fwU)rZOJ?2XuMggDa>hWi+@qN#Mp zt7MJ$J5f_PB;oK@A{&;N#ke{e2iX}gdCf-4X%Q*d<Q2PX?(t~4fn^7r;3P^*BGSMX zAn&Nmr4>n=+BdcB+V$>}3-Q31fjiVnh}-Ay@-7o(j8X~K({GX-E$E@Tny+$c3J%fH z_&SNjoT#~g5j6}Q%jmoUq<K^?9|(z(xH?=A61{f?9arlGZ1sq(`POUhDv}l4tv^u_ z3y}#K(RY#~AO)?fH(dtV`NJT6omU+E<jmkoRm_5KYVTUG5{Wx-9{Ye#10+hYj1dwS z5Z=gQ+iT`*?AJD5NMO;FCVzSYRN@>DHy6)WD%)jY1(|p}GKirn^bs4Yif9aP3CsYS z=rEHCdIL4F<GBqw@qyTv9!01g)m3Dtg({p&Sw;1`JkPE;a;6-ymXMo=WCjp<xqy)M zZ-r5mlp>efRWDJ-lKYJJl7+1B4qH;9&z}gflDoes!4>#Y3&u&Xd1QS`RG~6ga5^Bv zH89*BcM%_!0+&ppZjn({Ep*G#MaLT6NTDG-Vxs70YZHI5&=L%btr#1sPj(<*BTW@_ z$|s$9Q;--d1#?xzn&16)Ny%S4>LD3pq)@*d4&VI=;yAuoQBa&o8f9)KU*JO|vPcSo zvN(wG8BdYost%WN32CDnjG-Bs?&_PzWlWW-s%g&AYLtFQKB{e;9%<250F@Q5#q@%7 z;^b~Ziv=82=(ifUqhK0+gN=)uwOL*Y=Q#~~A)oGDe*FLWB^sJztZPINysAn>Vp&D9 zU)|WFO$MqzvWv7E^cGfKCFR<@@qc3_Q<7mxvC8^E@eXbzZ<-{Z;zqbpqZdwhB#f7T zDRSNCrP#?_I?^Ii(~ef4l+ctqB_jBk4JD!Jr`S^RoD(OO{IM~bV`W&#M3f`GP!A6h z<Kk(-e8kAT*9BzU3zEh-7?#SMcQb{`2XIO{zmMC{Y=+o=+u>3ytA)+)WWByR<8x(D zNWdUP%gV^D8a!8UdAJEGG-TFEBpzfaOrOmoYRil}kPK_Au#kCZ(gQ<|cdFJgKp|a( ziQlHoPj2%7g{({li5IMM1Pxgh2y;#@MLvpHEBlU7p<giVtUT7Ff1Vr_Y{>$`_&3}~ z@R05D4##ngZ`1*a88VVWAV}cT%VXx-5F`H%PYZ^V1SQLYew8?_BgcaAX&Cf~)liKi zxp6+gw#@1#kfa3QPb5FTeq5^si8>+N-h(DdhtUPPHX$XWN$%ou5h$TiC2?TgQL2Of z(U8RYwWIyFXg|CVb{_=M)L;^47m^Z1NYJ01KNHvBTbxS`k^)(<5*b9=423jN1e^id zJ#t?O$w2I>&06}w+2v%>(dF|6BAD_q)Jih*H4&2T{0R<SU{4-O*ThLhfJbPPrwoB5 zSQ16Y#^JfohnG(gjox77MF?~W4iZq6*Z+~;G)Ki(#`z2?NsK@ehM2V!+k(z`0^F}V z8Tu=V$j<N*pw9D4f5v}CCD{7UOq$*}XLs$^j(n|OQQaqz*@7gNf6D)AJLGUw%+j&S zP()-Q<eB-vdRc;9%1R}S8*EzxYgE7=%{myq#T`I?28)}MwP2it=#+4%0pVxB<`$)q z-hklOZ?tI52xvMTnsDJFVwuAqaMg^|eaV*5fkUXmwM`7C?0k`IFBSUZ?3ki-tn0>2 zM{M81LFUOjny-Oo?xLKnvfOBR{Q|q%sYIA%L_Xodt;|&>5&Dc0H=fGr(d7f@CUMeI z@*n2VyCZj7ssBTiv^3%f0VtgTv4dsFG`;_M8b&Ipo-LJ`Sdoq!-)ada8;?HfF*zfe z&I6CtLk=*`GhjJa_*7N3+a)mXFNM&F!1Wgf3SEw|IYZzb5u<%Je9LdlfLy86Ft5U6 z5UF=ryljsrM24&pMWH-!M8zf6Qlid6S(Ty2q_U?1TtZjQ48N(W4<TU2$6BVCcrR`X zG;VOOW>1D!ve+rh)h7Pb`D;vaZtAta$wC7vRPGqp&&6ian#Ae2^SK*7W$mDGrXz`B zH*k7iU}AOd6Qz&sQ|6<TEjjh%zso%$@eb%asd-;(I^T`&xtMOCd$RquVSADU0Nq9E zlx@3x<w4*a?0`Mfp;OU47t@OE352IGJ&6}6U+-uY$yt2<nNkq8{%fW3R8UWw0?6m^ zQeim(Vp3=uq2s_pb;qQc9s7KaMOVIYRSFP}Ry5C(2Io1B1a`@4Yau%pg}OFwarWB? zc$6uZQH=KK_{n6K?cxO4WP?R`=}()SHAf-@Ckxopac$L7i>ADeJe?7j`MS3r*3fR2 zUt18NN}QDO$nq%PQsm?As5i63&&q6MT8SBDzo7DKVaLd>s7?}>WDL4M3A>V|_aa4j z`m5Wh|7Qss`m5WNfwFkv&q;w<_!6A&g&PYgsdhFEm-UZ&(dsi135p)LU&$HukSeQ= zbN?aUNCI7!gS-wFwA$I4p(3FfET;rosGcO@4UD$;Lh7?^^iGR07J7gb@(SP}MW#$h z@kn3R1Im!CtDx9WAV)6nzt7aRLM}OiUwRlgp~GJz)D#QnEQIkmB##8XgSpYha*sCe zQ|Jiw;)HP^xv4V6wq^T9%)KNvXTbzQ)^|<*e1qIBO`ceu`lBiRmEn9%s0b2rC@Ibl zoY3~%`wI1KeXd?6i?Nc+>5f->o`P88=VjdaSGRwGj?tc1%Rivjura&2J`S@|jK&j9 zZfKqB{^eT+qn70T>){SpBJ|+(c3523%n|sOq!0-)mo`yu!R3{33Ph-90Uzgi$?YzZ z_U2UO@MzNbYm|s?YO7W#8z+k>*)ach#^QFbxZDZv;%}iV$rETpcqT-yO5$tDB$wlj z{1t_@yvj?ZRA__e6keqMs_b=doY+SuP1V54(jh}_u0b${pku$fW{fFx$e$DWofA6J zJTgkvRM@~C{E}q-fdrM)YBw@6-^s4r-1^rAF<j_HoivGNGIfq`GGX@dt?IVYQqO2v z^yoRRh3h_<8UOB2f)(`<Q4~i6Flv0!M!`pP@TmK@?VHOsa6j%O7Z~I-YPB!hz9YsQ z!OuPWVtH*CBRnF#onpc60E3Bv1TX2VHEoc@m*}id#7F6GaTo7e{t@w^YHl7aQg5<{ zmqhXBEw`45DDH`mnvJxPgA9$(CP^1M0av8N+a_su_ft@h9YC5N#+MzOMfsI224PnB z#N-~V#ZDCJv(Z$fy{l$Q%uRn!1B>)X9?7&(+7nH{@wVGfXfeCdNQ3ZK22j8BzH-eV zZnPPtlHda39-~~Icinx<)h%g#`(Qn)E!TyX@S)cfBDrjk+Wq*xRbG=GFjKBq*vk2b zKCrC#We*f%)J)bU{;}MbFYE^SHE4u)J!9jtZ1?{`*L=WAZ#=IN{|7ztO60NSVNxM4 zS*vc1zb7fb;|}i~?>nx2CrNkL38&;rTW;-|k^y&xi6JQ(lkOdpIHp^ej|6_^_A7gI zc{v4-$Q_MGjIUoR?ZCDD*WdhIr@|gDxgilC6gDQ#;s3)>JCN?~P-!QCyw^v-Cn{d` zxpD;bk0d!);2bjA>UCTO$aDL$ENed!Bd@lHCWU@LvUGTT3|%Q5VLC8DcB)|%$a<)D z!RLNgDPV3COP(gS0S`@sz<MTcKgxbV4y|Y4M&kl3Q<Zd%?<8TE6^`~F$>OF`%2|iS zVYkc3VM1weqne?o$pWz65kewWQ@;_59eGl25?GfyRX5c9@_T1v{Ai1fAr;2W*n}=h z`wXjgEi+D<B90qH2-Uc?J|{|$<(>)+x|&|0NykJt&0dZb_2vjWqG<LNk!M-kcgZ7+ z<&A2dhZIKiT3E_C--A4BJR+m%dgdfDZGc}(3uC%kKt8M@R+Ca{%S^6xueR@bhZ3^b z909|wasCr%Q?r)lVlmOKFp8_+W&23b*iwHTsid}T+KeY}AOo$MpvHt5*`J#8yqQe~ z>8N(jYjfDK3BS2mkbvt{zL*hcB5J%9uVlyDXnv6puPbMy1kNj)P!8$n-ZcRtOs-JX zUC;x}+dZg$RFXlDKH;m5AYTt`m51?yo}aE+yibAuib1o?!dx8pr1P@%$jTzShQxW3 zyHq+kS;RE$Y>6HALkA^Pdg`WRk!We32e%OFs}esK(}wv<LZ6&ED+;~iv!T9*UoWs< z7gPKm>gAG%uW&*r(+sUo@%|bXmN>9}H$}fYyjPV!k&2LjueBJ9bdB;IuP;$#snpM4 zx(Yj#Ovx;w#I2e}AefE~1GZd0UB`h9*Nf7IN{Ww+E;d~xUNO9g1x#qgqW>!#EUK(+ zB^?X9>}+PwFS`ET?78|wtDDS;dbrpz^ck!W8>2fC6ZoYYkL_ao;~rF9@1sp{*utX( z5L><%kXS`wW!XjJ*YfKIqER(y?8&exQ*dLCFG!e#ec#UvwCIARunb$Fg2zHo>ShOW zEJ1wvmv|qRGfiPx(oEb_4(hEH+;GH}+&cDz7&mB^XrtD<C8`|fS)MEKX#Z5Cx18)` zBY;WZ#zL;Y14VW@6<q8Rzq5>CeaCbmdu#!Ty(0UF2SN(_G9AjP{U6NvE+^XmdIx?T zt*_-EW)WHVIN&bYk??mb0A+V$FGW+{{={7I^xN^a+@Z<RYaCdYr0}HoRMKC&tdRbw z%t^?ti>GEdZ8$GV*I<X>d3F@ftdE-QqL5v2HvU})oe;Ln^)scole=Csd9&?q_zohW zokoz58H*H-oSIg-R7?^+focIntWj+VI1&AveY1$_`A1~-x+{&kfGRXx9XJrE+lA`3 zvy_UF+FP$dDD}K4F>edArAcMzDzzpvZ07}QUCZP;CC&4Wj%T8hkU=g7Z&IXc90IF9 zrGd^ElZ|1aD?zL~Q18cv%KR#YKjM5fl}y#NT_OR+<F!TEk+k-JwWxM>+pU?}UWk@q zXfAzkdjaw&asl$u5wV=myKrW)JUlLHhiY!wBiB5r$zy4v!)&hyoHQ{9>OC?gsgv%D zq2*k1;(Y}Lb0k6Nbq?ZT+u(N#H{6yMYO@F-HFFo|t7L(GsVFkQyn72WdtU^*;nh#4 zU&7mt$=(w@@9>9)&pUie5!MDiZ{|iarf}bBm1<Tzevpz0gEYW5H2GH}`x>IRyV9!k zB^MThOjMY{FcYRG#GBCH2ndJlNvPgM0`*RIajr^z0I>9Q`s?+6a>-|`;Z&|kQZI4? z2Npe2VNg;AVTQ_zk+752!Ge0{p>z;*A6^QjclrR<s(KhaYIh_Q=(i2)9sW4^BF(gL zUIf-$x>p>@Hh}N+x=usW`sqiB<!c*6Mo@$QEaBlfbExPgJ#3DK-_y_ju5o=45Qr}n zJFuW>m`rh=05r`-0yaW=yE8g@S8XT({VqFRtj3YuP0;m}S|l#it{3|6=yLDPl1$7# z4pV8m4G5T^O+Xkh$Wqm#^jgBEC01YjPB&#QjvE!LEH8^X82yYvOzs*TI7(Y8Ja8ix z_B1?(1^H!mm}p4BYE8wfC04LIY)u}w_Nb4Esu9{WSg?D?sP7PYCjM8u9L1DaCLzDa zn8EXlGftJ+%KhB?;PGC>sdVa5YVk_tdTh%R-V&(6>i%7VyN~a%dE%-OH!uwGT&ZFc znt%RrHF3fOQxO6OMUt8(<-R5l$MH#u+b0ufHZ{Iblraz;_=eY!X$hO)j*w?;sXGD~ K?th=mCjSc=(9C=Q literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/po/ca.po b/xchat-2.8.8/po/ca.po new file mode 100644 index 0000000..39cd8a0 --- /dev/null +++ b/xchat-2.8.8/po/ca.po @@ -0,0 +1,7050 @@ +# Catalan messages for X-Chat +# Copyright (C) 2001-2007 +# Softcatalà <info@softcatala.org>, 2001. +# Yannick Garcia <ygp@tinet.fut.es>, 2001. +# Antoni Bella Perez <bella5@teleline.es>, 2002, 2003. +# Ernest Adrogué Calveras <eadrogue@gmx.net>, 2004, 2007. +# David Planella Molas <david.planella@gmail.com>, 2007. +# This file is distributed under the same license as the xchat package. +# +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.8.0\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2007-01-26 13:24+0100\n" +"Last-Translator: Ernest Adrogué <eadrogue@gmx.net>\n" +"Language-Team: Catalan <ca@dodds.net>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "No s'ha pogut crear el directori ~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Ara estic ocupat" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Me'n vaig" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* Connectar-se a l'IRC com a root és estúpid! Hauríeu\n" +" de crear un compte d'usuari i fer-ho des d'allí.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Esperant" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Actiu" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Ha fallat" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Fet" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Connecta" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Avortat" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "No es pot accedir a %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Error" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s us està oferint «%s». Voleu acceptar-lo?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "No hi ha connexions DCC actives\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "SÍ " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "NO " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Esteu sent bombardejat amb peticions CTCP des de %s, s'ignorarà %s\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "" +"Esteu sent atacat amb peticions MSG des de %s, s'ha desactivat l'opció " +"gui_auto_open_dialog.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s connectat\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s no connectat\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "No esteu a cap canal. Proveu amb /join #<canal>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "No connectat. Proveu amb /server <màquina> [<port>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "Es necessita /bin/sh per a executar-lo!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Ordres disponibles:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Ordres definides per l'usuari:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Ordres definides pels connectors:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Per a més informació feu /HELP <ordre>, o /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "S'ignorarà l'argument desconegut «%s»." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "No s'ha trobat tal connector.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Aquest connector refusa ser descarregat.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <nom> <acció>, afegeix un botó sota la llista d'usuaris" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <cmd>, envia una ordre a tots els canals on estigueu" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <cmd>, envia una ordre a tots els canals on estigueu" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <cmd>, envia una ordre a tots els servidors on estigueu" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<motiu>], marca el vostre sobrenom com a absent" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <màscara> [<tipus>], bandeja tots els usuaris que coincideixin amb la " +"màscara. Si ja es troben el canal amb això no els fareu fora (necessiteu ser " +"operador del canal)" + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "SET [-quiet] <variable> [<valor>]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "" +"CLEAR [ALL|HISTORY], Esborra la finestra de text actual o l'historial " +"d'ordres" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, Tanca la finestra o pestanya actual" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY <codi>, cerca un codi de país, p.ex: au = Austràlia" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <sobrenom> <missatge>, envia el missatge CTCP a l'usuari indicat, els " +"missatges més comuns són VERSION i USERINFO" + +#: src/common/outbound.c:3516 +#, fuzzy +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "CYCLE, surt i retorna immediatament al canal actual" + +#: src/common/outbound.c:3518 +#, fuzzy +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <sobrenom> - accepta un fitxer ofert\n" +"DCC SEND [-maxcps=#] <sobrenom> [fitxer] - envia un fitxer\n" +"DCC PSEND [-maxcps=#] <sobrenom> [fitxer] - envia un fitxer en mode passiu\n" +"DCC LIST - mostra la llista de connexions " +"DCC\n" +"DCC CHAT <sobrenom> - proposa un XAT DCC a algú\n" +"DCC CLOSE <tipus> <sobrenom> <fitxer> exemple:\n" +" /dcc close send albanoguer fitxer.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <sobrenom>, treu l'estatus de semi-operador del canal al sobrenom " +"indicat (necessiteu ser operador del canal)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <nom>, elimina un botó de sota la llista d'usuaris" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <sobrenom>, treu l'estatus d'operador del canal al sobrenom indicat " +"(necessiteu ser operador del canal)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <sobrenom>, treu l'estatus de veu al sobrenom indicat (necessiteu " +"ser operador del canal)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, Finalitza la connexió amb el servidor" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <sobrenom|màquina|ip>, Cerca l'adreça IP d'un usuari" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <text>, Escriu el text localment" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <ordre>, executa l'ordre. Si useu l'argument -o s'enviarà la " +"sortida cap al canal actual, si no es mostrarà a la finestra de text actual" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, envia un senyal SIGCONT al procés" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], mata un procés que s'estigui executant en la sessió actual. " +"Si s'empreu -9 el senyal serà SIGKILL" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, envia un senyal SIGSTOP al procés" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, envia dades als processos en stdin (entrada estàndard)" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, neteja la cua d'enviaments al servidor actual" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" +"GATE <màquina> [<port>], usa el servidor intermedi indicat, el port per " +"omissió és el 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" +"GHOST <sobrenom> <contrasenya>, termina una sessió fantasma per a aquest " +"sobrenom" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" +"HOP <sobrenom>, dóna l'estatus d'operador de canal a l'usuari indicat " +"(necessiteu ser operador del canal)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <contrasenya>, us identificarà al servidor de sobrenoms nickserv" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <màscara> <tipus..> <opcions..>\n" +" màscara - màscara de la màquina a ignorar, p.ex: *!*@*.pooles.rima-tde." +"net\n" +" tipus - tipus de les dades a ignorar, una de les següents o totes " +"(«ALL»):\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI\n" +" opcions - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <sobrenom> [<canal>], convida l'usuari indicat a un canal, per " +"omissió al canal actual (necessiteu ser operador del canal)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <canal>, entra al canal" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <sobrenom>, fa fora l'usuari indicat del canal actual (necessiteu ser " +"operador del canal)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <sobrenom>, bandeja l'usuari indicat després de fer-lo fora del " +"canal (necessiteu ser operador del canal)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, força una nova comprovació del retard" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <cadena>, cerca una cadena de text en el buffer" + +#: src/common/outbound.c:3587 +#, fuzzy +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD <fitxer>, carrega un connector o script" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, Treu l'estatus a tots els semi-operadors del canal en el canal " +"actual (necessiteu ser operador del canal)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, Treu l'estatus a tots els operadors del canal en el canal actual " +"(necessiteu ser operador del canal)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <acció>, anuncia una acció al canal actual (les accions s'escriuen en " +"tercera persona, com ara /me salta d'alegria)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, Fa fora tots els usuaris del canal actual (necessiteu ser operador " +"del canal)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, Dóna l'estatus d'operador a tots els usuaris en el canal actual " +"(necessiteu ser operador del canal)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <sobrenom> <missatge>, envia un missatge privat" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, Llista els usuaris que hi ha al canal actual" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <sobrenom> <missatge>, Envia un avís per CTCP" + +#: src/common/outbound.c:3608 +#, fuzzy +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER <nom_màquina> [<port>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <sobrenom>, canvia el vostre sobrenom" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <sobrenom/canal> <missatge>, envia una avís. Els avisos són uns tipus " +"de missatge que no haurien de generar respostes automàtiques" + +#: src/common/outbound.c:3614 +#, fuzzy +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [<sobrenom>], mostra la llista de notificacions o hi afegeix algú" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" +"OP <sobrenom>, dóna l'estatus d'operador del canal a l'usuari (necessiteu " +"ser operador del canal)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<canal>] [<motiu>], deixa el canal, per omissió l'actual" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <sobrenom | canal>, envia un ping CTCP a l'usuari o canal indicat" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "" +"QUERY [-nofocus] <sobrenom>, obre una finestra de xat privat amb <sobrenom>" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<motiu>], finalitza la connexió amb el servidor actual" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <text>, envia el text «en cru» cap al servidor" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONENCT [-ssl] [<sistema>] [<port>] [<contrasenya>], Pot invocar-se sols " +"amb /RECONNECT per així reconnectar-se al servidor actual o amb /RECONNECT " +"ALL per a reconnectar-se a tots els servidors oberts" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONENCT [<sistema>] [<port>] [<contrasenya>], Pot invocar-se sols amb /" +"RECONNECT per així reconnectar-se al servidor actual o amb /RECONNECT ALL " +"per a reconnectar-se a tots els servidors oberts" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <text>, envia dades «en brut» a l'X-Chat, com si foren rebudes des del " +"servidor IRC" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <text>, envia el text a l'objecte a la finestra actual" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <sobrenom> [<fitxer>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <màquina> <port> <canal>, connecta i entra en un canal" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <màquina> <port> <canal>, connecta i entra en un canal" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <màquina> [<port>] [<contrasenya>], connecta amb un servidor, " +"el port per omissió per a connexions normals és el 6667, i el 9999 per a " +"connexions ssl" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <màquina> [<port>] [<contrasenya>], connecta amb un servidor, el port " +"per omissió és el 6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-quiet] <variable> [<valor>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<posició>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "TOPIC [<tema>], estableix o mostra el tema del canal actual" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <màscara> [<màscara>...], readmet els usuaris indicats al canal." + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <màscara> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <fitxer>, desactiva un connector o script" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, obre una URL en el navegador" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <sobrenom1> <sobrenom2> etc, realça el(s) sobrenom(s) a la " +"llista d'usuaris del canal" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "" +"VOICE <sobrenom>, dóna l'estatus de veu a algú (necessiteu ser operador del " +"canal)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <missatge>, escriu un missatge a tots els canals" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <missatge>, envia un missatge a tots els operadors del canal actual" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Sintaxi: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"No hi ha ajuda disponible per a aquesta ordre.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "No existeix tal ordre.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Els arguments per a l'ordre d'usuari no són vàlids.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Massa ordres d'usuari recursives, s'avorta." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Ordre desconeguda. Proveu /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "" +"No hi ha cap símbol xchat_plugin_init; esteu segur que aquest és un " +"connector per a l'xchat?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "" +"Esteu segur que aquest servidor permet l'ús d'SSL i el port és correcte?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"No s'ha pogut resoldre el nom de la màquina %s\n" +"Comproveu la vostra configuració IP\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Ha fallat la connexió amb el servidor intermediari.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Passant al següent servidor de %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Atenció: El joc de caràcters «%s» és desconegut. No es farà cap conversió per " +"la xarxa %s." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 ha estat afegit a la llista de notificació." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Llista de bandejats: %C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tNo podeu entrar a%C26 %B$1 %O(heu estat bandejat)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 ara és conegut com a $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 ha bandejat $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tCanal $1 creat el $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O treu l'estatus de semi-operador del canal a%C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O treu l'estatus d'operador del canal a%C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O treu l'estatus de veu a%C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 dóna l'estatus d'exempt a $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O dóna l'estatus de semi-operador del canal a%C26 $2" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 dóna l'estatus de convidat a $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UCanal Usuaris Tema" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 assigna el mode $2$3 a $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Canal $1 modes: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O dóna l'estatus d'operador del canal%C26 a $2" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 treu l'estatus d'exempt a $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 treu l'estatus de convidat a $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 elimina la contrasenya del canal" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 elimina el límit d'usuaris" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 defineix la contrasenya del canal com a $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 estableix el límit d'usuaris del canal en $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 treu l'estatus de bandejat a $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O dóna l'estatus de veu a%C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Connectat. S'està iniciant la sessió..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22Connectant amb $1 ($2) al port $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21Ha fallat la connexió. Error: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tS'ha rebut un CTCP $1 de $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tS'ha rebut una connexió CTCP $1 de $2 (per a $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tS'ha rebut un so CTCP $1 de $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tS'ha rebut un so CTCP $1 de $2 (per a $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tXat DCC amb %C26$1%O avortat." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "" +"%C22*%O$tS'ha establert una connexió de xat DCC amb %C26$1 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tS'ha interromput el xat directe (DCC Chat) amb %C26$1%O. ($4)" + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tS'ha rebut una oferta de xat directe (DCC CHAT) de $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tS'ha ofert un xat directe (DCC CHAT) a $1" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tJa s'ha ofert un xat directe (DCC CHAT) a $1" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "" +"%C22*%O$tL'intent de connexió DCC $1 amb%C26 $2%O ha fallat (error=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tS'ha rebut un «$1%O» de $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 Tipus Per a/De Estat Mida Pos Fitxer " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O.%010%C22*%O" +"$tContents of packet: $2" +msgstr "" +"%C22*%O$tS'ha rebut una petició DCC mal formada de %C26$1%O.%010%C22*%O" +"$tContingut del paquet: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tS'està oferint%C26 $1%O a%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tNo existeix tal oferta DCC." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tS'ha avortat la recepció del fitxer %C26 $2%O a %C26 $1%O." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tS'ha completat la recepció del fitxer%C26 $1%O de%C26 $3%O %C30[%C26" +"$4%O cps%C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tConnexió DCC RECV establerta amb%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tLa recepció del fitxer%C26 $1%O de%C26 $3%O ha fallat ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "" +"%C22*%O$tRecepció DCC: No s'ha pogut obrir $1 amb permís d'escriptura ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "%C22*%O$tEl fitxer%C26 $1%C ja existeix, es desarà com a%C26 $2%O." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "" +"%C22*%O$t%C26$1 %Oha demanat reprendre la recepció de%C26 $2 %Cdes de %C26 " +"$3%C." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tL'enviament DCC%C26 $2%O a%C26 $1%O ha estat avortat." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tL'enviament DCC%C26 $1%O a%C26 $2%O s'ha completat %C30[%C26$3%O cps" +"%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "" +"%C22*%O$tS'ha establert una connexió DCC SEND amb%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tL'enviament DCC%C26 $1%O a%C26 $2%O ha fallat. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Ous ha ofert el fitxer%C26 $2 %O(%C26$3 %Coctets)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cencallat - avortant." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "" +"%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Oha excedit el temps d'espera - avortant." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 ha estat eliminat de la llista de notificació." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tDesconnectat ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tS'ha trobat la vostra IP: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O s'ha afegit a la llista d'usuaris ignorats." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "L'estatus d'usuari ignorat de %C26$1%O ha canviat." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 Màquina PRIV NOTI CAN CTCP DCC CONV NOIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O ha estat eliminat de la llista d'usuaris ignorats." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " La llista d'usuaris ignorats és buida." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "" +"%C22*%O$tNo podeu entrar a%C26 %B$1 %O(És un canal només per a convidats)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tHeu estat convidat a%C26 $1%O per %C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) ha entrat a $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$tNo podeu entrar a%C26 %B$1 %O(Necessiteu una contrasenya)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 ha fet fora a $2 de $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$tUs ha matat $1 ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22S'ha omès el missatge del dia." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 ja està agafat. S'està reintentant amb $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$tEl sobrenom ja està agafat. Useu l'ordre /NICK per a provar-ho amb " +"un altre." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tNo existeix tal connexió DCC." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tNo hi ha cap procés executant-se en aquests moments" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tLa llista de notificació està buida." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Llista de notificació " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 usuari(s) a la llista de notificació." + +#: src/common/textevents.h:282 +#, fuzzy +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tNotificació: $1 no està connectat ($2)." + +#: src/common/textevents.h:285 +#, fuzzy +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tNotificació: $1 està en línia ($2)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) ha deixat $3" + +#: src/common/textevents.h:294 +#, fuzzy +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) ha deixat $3 (%O%C23$4)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tResposta al ping des de $1: $2 segon(s)" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tPing sense resposta després de $1 seconds, desconnectant." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tJa hi ha un procés en execució" + +#: src/common/textevents.h:318 +#, fuzzy +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 s'ha desconectat (%O%C23$2)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 estableix els modes%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Missatge als operadors%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tS'està cercant l'adreça IP de%C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22Connectat." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22S'està resolent $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tS'ha aturat l'anterior intent de connexió (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29El tema de $1%C %C29és: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 ha canviat el tema a: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29El tema de $1%C %C29ha estat establert per $2%C %C29el $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tMàquina desconeguda. Potser l'heu escrita malament?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "" +"%C22*%O$tNo podeu entrar a%C26 %B$1 %O(S'ha assolit el límit d'usuaris)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Usuaris a $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Ces troba absent %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OFinal de la llista WHOIS." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O inactiu%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, entrada:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" +"%C22*%O$t%C28[%O$1%C28] %Ousuari@màquina real%C27 $2%O, IP real IP%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Ara esteu parlant a $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tHeu estat expulsat de $2 per $3 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tHeu deixat el canal $3" + +#: src/common/textevents.h:411 +#, fuzzy +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tHeu deixat el canal $3 (%O%C23$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tHeu convidat%C26 $1%O a%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tAra sou conegut com a $2" + +#: src/common/text.c:347 +#, fuzzy +msgid "Loaded log from" +msgstr "Carrega des de" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** FINAL DEL REGISTRE A %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** INICI EL REGISTRE A %s\n" + +# ESTIC AQUÍ +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* No s'ha(n) pogut obrir el(s) fitxer(s) de registre amb permís\n" +" d'escriptura. Reviseu els permisos de %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Missatge de l'esquerra" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Missatge de la dreta" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "Sobrenom de la persona que entra" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "Canal al qual s'entra" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "Màquina de la persona" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Sobrenom" + +#: src/common/text.c:973 +msgid "The action" +msgstr "Acció" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Caràcter de mode" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Text identificat" + +#: src/common/text.c:980 +msgid "The text" +msgstr "Text" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Missatge" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Sobrenom antic" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Sobrenom nou" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Sobrenom de la persona que ha canviat el tema" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Tema" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Canal" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "Sobrenom de qui l'ha fet fora" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "Persona expulsada" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "Canal" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "Motiu" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "Sobrenom de la persona que surt" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "Hora" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "Creador" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Sobrenom" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Motiu" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Màquina" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "De qui prové" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "Hora en format x.x (vegeu més avall)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "Canal de destinació" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "So" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "Sobrenom de la persona" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "Esdeveniment CTCP" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "Sobrenom de la persona que estableix la contrasenya" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "La contrasenya" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "El sobrenom de la persona que estableix el límit" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "Límit" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "Sobrenom de la persona que dóna l'estatus d'operador" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "Sobrenom de la persona a qui s'ha fet operador" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "Sobrenom de la persona a qui s'ha fet semi-operador" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "Sobrenom de la persona que dóna l'estatus de semi-operador" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "Sobrenom de la persona que dóna l'estatus de veu" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "Sobrenom de la persona a qui s'ha donat veu" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "Sobrenom de la persona que dóna l'estatus de bandejat" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "Màscara d'usuaris bandejats" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "Sobrenom de qui ha eliminat la contrasenya" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "Sobrenom de qui ha eliminat el límit" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "Sobrenom de la persona que ha tret l'estatus d'operador" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "Sobrenom de la persona a qui s'ha tret l'estatus d'operador" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "Sobrenom de la persona que ha tret l'estatus de semi-operador" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Sobrenom de la persona a qui s'ha tret l'estatus de semi-operador" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "Sobrenom de la persona que ha tret l'estatus de veu" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "Sobrenom de la persona a qui s'ha tret l'estatus de veu" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "Sobrenom de la persona que ha tret l'estatus de bandejat" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "Sobrenom de la persona que dóna l'estatus d'exempt" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "Màscara d'usuaris als quals es dóna l'estatus d'exempt" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "Sobrenom de la persona a qui s'ha eliminat la exempció" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "Sobrenom de la persona que dóna l'estatus de convidat" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "Màscara de convidats" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "Sobrenom de la persona que ha tret l'estatus de convidat" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "Sobrenom de la persona que estableix el mode" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "Senyal del mode (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "Lletra del mode" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "Canal al qual s'estableix" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Nom d'usuari" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Nom complet" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Membre del canal/\"és un operador IRC\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Informació del servidor" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Temps inactiu" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Temps d'accés" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Motiu de l'absència" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Missatge" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Compte" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "usuari@màquina real" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "IP real" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Nom del canal" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Text" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Nom del servidor" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Sobrenom de la persona que us ha convidat" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Usuaris" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Sobrenom en ús" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Provant el sobrenom escollit" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Port" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Xarxa" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Cadena de modes" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "Adreça IP" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "Tipus de DCC" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Nom del fitxer" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Nom del fitxer de destí" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Ubicació" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Posició" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Mida" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "Cadena DCC" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Nombre d'elements notificats" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Nom del fitxer antic" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Nom del fitxer nou" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Receptor" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Màscara de la màquina" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Nom de la màquina" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "Paquet" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Segons" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Sobrenom de la persona que ha estat convidada" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Màscara d'usuaris bandejats" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Qui ha establert el bandejament" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Duració del bandejament" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Error en analitzar l'esdeveniment %s.\n" +"Es carrega el predeterminat." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"No s'ha pogut llegir el fitxer de so:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "La màquina remota ha tancat la connexió" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Connexió refusada" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "No hi ha cap ruta cap a la màquina" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "S'ha excedit el temps d'espera" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "No s'ha pogut assignar aquesta adreça" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Connexió reiniciada des de l'altre costat" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Illa Ascensió" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Emirats Àrabs Units" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Afganistan" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Antigua i Barbuda" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Albània" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Armènia" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Antilles Holandeses" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Antàrtida" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Argentina" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "DNS invers" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Samoa Americana" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Àustria" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "Camp de l'OTAN" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Austràlia" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Illes Aland" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Azerbaitjan" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Bòsnia i Hercegovina" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Bangladesh" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Bèlgica" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Bulgària" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Bahrain" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Negocis" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Benín" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Brunei Darussalam" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Bolívia" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Brasil" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Bahames" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Bhutan" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Illa Bouvet" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Bielorússia" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Canadà" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Illes Cocos" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "República Democràtica del Congo" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "República Centreafricana" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Congo" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Suïssa" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Costa d'Ivori" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Illes Cook" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Xile" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Camerun" + +#: src/common/util.c:898 +msgid "China" +msgstr "Xina" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Colòmbia" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Internic Comercial" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Sèrbia i Montenegro" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Cuba" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Cap Verd" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Illa Christmas" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Xipre" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "República Txeca" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Alemanya" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Djibouti" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Dinamarca" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Dominica" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "República Dominicana" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Algèria" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Equador" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Institució educativa" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Estònia" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Egipte" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Sàhara Occidental" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Espanya" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Etiòpia" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Unió Europea" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Finlàndia" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Fiji" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Illes Malvines" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Micronèsia" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Illes Faroe" + +#: src/common/util.c:928 +msgid "France" +msgstr "França" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Gran Bretanya" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Granada" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Geòrgia" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Guaiana Francesa" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Illes del Canal Britànic" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Ghana" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Groenlàndia" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Gàmbia" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Institució governamental" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Guadalupe" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Guinea Equatorial" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Grècia" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Illes Geòrgia del Sud i Sandwich del Sud" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Guinea Bissau" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Guyana" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Illes Heard i McDonald" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Hondures" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Croàcia" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Haití" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Hongria" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Indonèsia" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Irlanda" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Israel" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Illa de Man" + +#: src/common/util.c:959 +msgid "India" +msgstr "Índia" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Informatiu" + +#: src/common/util.c:961 +msgid "International" +msgstr "Internacional" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Territori Britànic de l'Oceà Índic" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Iraq" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Iran" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Islàndia" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Itàlia" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Jamaica" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Jordània" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Japó" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Kenya" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Kyrgyzstan" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Cambodja" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Comoros" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "St. Kitts i Nevis" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Corea del Nord" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Corea del Sud" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Kuwait" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Illes Caiman" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Kazakhstan" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Líban" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Saint Lucia" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Libèria" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Lituània" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Luxemburg" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Letònia" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Líbia" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Marroc" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Mónaco" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Moldàvia" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "Servei mèdic dels Estats Units" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Madagascar" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Illes Marshall" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Institució militar" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Macedònia" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Mongòlia" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Macau" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Illes Marianes del Nord" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Martinica" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Mauritània" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Maurici" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Maldives" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Mèxic" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Malàisia" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Moçambic" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Namíbia" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Nova Caledònia" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Níger" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Xarxa Internic" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Illes Norfolk" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Nigèria" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Països Baixos" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Noruega" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Nova Zelanda" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Organització Internic sense ànim de lucre" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Panamà" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Perú" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Polinèsia Francesa" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Papua Nova Guinea" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Filipines" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Paquistan" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Polònia" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "St. Pierre i Miquelon" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Puerto Rico" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Palestina" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Portugal" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Paraguai" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Qatar" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Reunion" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Romania" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "ARPAnet de l'antiga escola" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Rússia" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Rwanda" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Aràbia Saudita" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Illes Salomó" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Seychelles" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Sudan" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Suècia" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Singapur" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "St. Helena" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Eslovènia" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Illes Svalbard i Jan Mayen" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "República Eslovaca" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Somàlia" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Surinam" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "Sao Tomé i Príncipe" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Antiga URSS" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Síria" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Swazilàndia" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Illes Turks i Caicos" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Txad" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Territoris Francesos del Sud" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Tailàndia" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Tadjikistan" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Timor Oriental" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Tunísia" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Turquia" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Trinitat i Tobago" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Tanzània" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Ucraïna" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Regne Unit" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "Estats Units d'Amèrica" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Uruguai" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Uzbekistan" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Ciutat Estat del Vaticà" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "St. Vincent i les Granadines" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Veneçuela" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Illes Verge Britàniques" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "Illes Verge Americanes" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Illes Wallis i Futuna" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Iemen" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Iugoslàvia" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Sud-àfrica" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Zàmbia" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Desconegut" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "Obre una finestra de diàleg" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "Envia un fitxer" + +#: src/common/xchat.c:728 +msgid "_User Info (WhoIs)" +msgstr "" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +msgid "O_perator Actions" +msgstr "" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Dóna l'estatus d'operador" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Treu l'estatus d'operador" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Dóna l'estatus de veu" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Treu l'estatus de veu" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Fes fora/Bandeja" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Fes fora" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Bandeja" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "Fes fora i bandeja" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Deixa el canal" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Entra al canal..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Introduïu el canal on entrar:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Enllaços del servidor" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Ping al servidor" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Oculta la versió" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Op" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "adéu" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Introduïu el motiu per a fer fora a %s:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Envia fitxer" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Diàleg" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "WhoIs (Qui és?)" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Envia" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Xat" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Neteja" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +#, fuzzy +msgid "Couldn't connect to session bus" +msgstr "No s'ha pogut establir connexió amb el bus de la sessió: %s\n" + +#: src/common/dbus/dbus-client.c:86 +#, fuzzy +msgid "Failed to complete NameHasOwner" +msgstr "" +"Error en obrir el tipus de lletra:\n" +"\n" +"%s" + +#: src/common/dbus/dbus-client.c:112 +#, fuzzy +msgid "Failed to complete Command" +msgstr "" +"Error en obrir el tipus de lletra:\n" +"\n" +"%s" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "accés remot" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "connector per a l'accés remot a través del DBUS" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "No s'ha pogut establir connexió amb el bus de la sessió: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "No s'ha pogut adquirir %s: %s\n" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "_Quant a" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Un client d'IRC multiplataforma" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Taula de caràcters" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +#, fuzzy +msgid "Not connected." +msgstr "Desconnecta" + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Heu de seleccionar algun usuari bandejat." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Màscara" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "Per" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Data" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" + +#: src/fe-gtk/banlist.c:391 +#, fuzzy, c-format +msgid "XChat: Ban List (%s)" +msgstr "X-Chat: Llista d'usuaris bandejats (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Elimina" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Escurça" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Refresca" + +#: src/fe-gtk/chanlist.c:111 +#, fuzzy, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Estadístiques d'usuaris i canals: %d/%d usuaris en %d/%d canals" + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Seleccioneu un nom de fitxer" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +#, fuzzy +msgid "_Join Channel" +msgstr "Entra al canal" + +#: src/fe-gtk/chanlist.c:633 +#, fuzzy +msgid "_Copy Channel Name" +msgstr "Nom del canal" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "" + +#: src/fe-gtk/chanlist.c:724 +#, fuzzy, c-format +msgid "XChat: Channel List (%s)" +msgstr "X-Chat: Llista de canals (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:787 +#, fuzzy +msgid "_Download List" +msgstr "Desa els fitxers baixats a:" + +#: src/fe-gtk/chanlist.c:793 +#, fuzzy +msgid "Save _List..." +msgstr "Llista de servidors..." + +#: src/fe-gtk/chanlist.c:806 +#, fuzzy +msgid "Show only:" +msgstr "Mostra el_s colors" + +#: src/fe-gtk/chanlist.c:818 +#, fuzzy +msgid "channels with" +msgstr "Canal" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "a" + +#: src/fe-gtk/chanlist.c:843 +#, fuzzy +msgid "users." +msgstr "usuaris" + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "Nom del canal" + +#: src/fe-gtk/chanlist.c:882 +#, fuzzy +msgid "Search type:" +msgstr "Cerca el text..." + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Cerca:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Envia un fitxer a %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "La transferència d'aquest fitxer no es pot reprendre." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"No s'ha pogut accedir al fitxer: %s\n" +"%s.\n" +"No es pot continuar." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"El fitxer del directori de recepcions és més gran que el fitxer ofert. No es " +"pot continuar." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "" +"No es pot reprendre la recepció del mateix fitxer des de dues persones " +"diferents." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Estat" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Fitxer" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Tots dos" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "" + +#: src/fe-gtk/dccgui.c:804 +#, fuzzy +msgid "Downloads" +msgstr "Desa els fitxers baixats a:" + +#: src/fe-gtk/dccgui.c:809 +#, fuzzy +msgid "Details" +msgstr "Les vostres dades" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Fitxer:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "Adreça:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Avorta" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Accepta" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Reprèn" + +#: src/fe-gtk/dccgui.c:830 +#, fuzzy +msgid "Open Folder..." +msgstr "Envia un fitxer..." + +#: src/fe-gtk/dccgui.c:990 +#, fuzzy +msgid "XChat: DCC Chat List" +msgstr "X-Chat: Llista de xats DCC" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Rebut" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Enviat" + +#: src/fe-gtk/dccgui.c:1004 +#, fuzzy +msgid "Start Time" +msgstr "Hora d'inici" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*NOU*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "EDITA'M" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Nom" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Ordre" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Mou amunt" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Mou avall" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Cancel·la" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Desa" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Afegeix" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Esborra" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Ordena" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Ajuda" + +#: src/fe-gtk/fe-gtk.c:124 +#, fuzzy +msgid "Don't auto connect to servers" +msgstr "Reconnexió automàtica al servidor" + +#: src/fe-gtk/fe-gtk.c:125 +#, fuzzy +msgid "Use a different config directory" +msgstr "useu un directori de configuració diferent" + +#: src/fe-gtk/fe-gtk.c:126 +#, fuzzy +msgid "Don't auto load any plugins" +msgstr "no carreguis automàticament els connectors" + +#: src/fe-gtk/fe-gtk.c:127 +#, fuzzy +msgid "Show plugin auto-load directory" +msgstr "mostra el directori de càrrega automàtica de connectors" + +#: src/fe-gtk/fe-gtk.c:128 +#, fuzzy +msgid "Show user config directory" +msgstr "mostra el directori de configuració de l'usuari" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Executa l'ordre:" + +#: src/fe-gtk/fe-gtk.c:132 +#, fuzzy +msgid "Open URL or execute command in an existing XChat" +msgstr "Obre l'URL en una instància existent de l'XChat-GNOME" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +#, fuzzy +msgid "level" +msgstr "Mai" + +#: src/fe-gtk/fe-gtk.c:135 +#, fuzzy +msgid "Show version information" +msgstr "mostra informació de la versió" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"No s'ha pogut obrir el tipus de lletra:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "El buffer de cerca està buit.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d octets" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"L'acció ^BRun Command^B executa les dades de Dades 1 com si les haguessiu " +"escrit a la línia d'entrada on heu escrit la seqüència de tecles. Pot " +"contenir text (que s'enviarà al canal/persona), ordres, o ordres d'usuari. " +"Durant l'execució tots els caràcters ^B\\n^B de Dades 1 s'utilitzen per " +"delimitar diferents ordres, de manera que se'n pot executar més d'una. Si " +"voleu escriure un signe ^B\\^B en el text heu d'escriure ^B\\\\^B" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"L'ordre ^BChange Page^B passa una pàgina a la llibreta. Poseu a Dades 1 la " +"pàgina a la qual voleu anar. Si Dades 2 no està en blanc el canvi de pàgina " +"serà relatiu a la posició actual" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"L'ordre ^BInsert in Buffer^B insereix el contingut de Dades 1 en el lloc on " +"hagueu escrit la seqüència de tecles a la posició del cursor" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"L'ordre ^BScroll Page^B desplaça l'objecte de text una pàgina (o una línia) " +"amunt o avall. Definiu Dades 1 com a «Up» (amunt), «Down» (avall), +1 o -1." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"L'ordre ^BSet Buffer^B col·loca el contingut de Dades 1 a l'objecte on heu " +"premut la seqüència de tecles" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"L'ordre ^BLast Command^B col·loca l'última ordre executada a la línia - " +"igual que prémer la fletxa amunt a la shell" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"L'ordre ^BNext Command^B col·loca la següent ordre a la línia - igual que " +"prémer la fletxa avall a la shell" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Aquesta ordre canvia el text de la línia per a completar un sobrenom o ordre " +"incompleta. Si Dades 1 no està en blanc una doble tabulació seleccionarà " +"l'anterior sobrenom i no el següent" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Aquesta ordre desplaça amunt o avall la llista de sobrenoms. Si Dades 1 està " +"en blanc es desplaçarà avall, i en cas contrari, amunt" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Aquesta ordre cerca l'última paraula escrita a la llista de substitucions i " +"la substitueix en cas de trobar-la" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Aquesta ordre mou la pestanya davantera una posició cap a l'esquerra" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Aquesta ordre mou la pestanya davantera una posició cap a la dreta" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Aquesta ordre mou el conjunt de pestanyes actual cap a l'esquerra" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Aquesta ordre mou el conjunt de pestanyes actual cap a la dreta" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "Introdueix la línia a l'historial però no l'envia al servidor" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "Hi ha hagut un error en carregar la configuració dels vincles de tecla" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<cap>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Modificador" + +# Contrasenya per als canals protegits per contrasenya (dpm) +# Aquí està parlant de tecles (eac) +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Tecla" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Acció" + +#: src/fe-gtk/fkeys.c:718 +#, fuzzy +msgid "XChat: Keyboard Shortcuts" +msgstr "X-Chat: Vincles de tecla" + +# la paraula 'shift' va impresa a la tecla +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Dades 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Dades 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "" +"Error en obrir el fitxer de configuració del teclat\n" +"\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Nom de tecla «%s» desconegut en el fitxer de configuració\n" +"de vincles de tecla. S'avorta la càrrega, si us plau\n" +"reviseu %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Acció «%s» desconeguda en el fitxer de configuració\n" +"de vincles de tecla. S'avorta la càrrega, si us plau\n" +"reviseu %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"S'esperava una línia de Dades (començada per Dx{:|!}) però s'ha obtingut:\n" +"%s\n" +"\n" +"S'avorta la càrrega, si us plau, reviseu %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"El fitxer de configuració de vincles de tecla està malmès.\n" +"Si us plau, reviseu %s/keybindings.conf\n" +"\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "No es pot escriure a aquest fitxer." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Aquest fitxer no es pot llegir." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Aquesta màscara ja existeix." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Privats" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Avisos" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Invitacions" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Deixa d'ignorar" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Introduïu una màscara a ignorar:" + +#: src/fe-gtk/ignoregui.c:353 +#, fuzzy +msgid "XChat: Ignore list" +msgstr "X-Chat: Llista d'usuaris ignorats" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Estatus d'ignorat:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Canal:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privats:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Avisos:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Invitacions:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +#, fuzzy +msgid "Add..." +msgstr "Afegeix" + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "" + +#: src/fe-gtk/joind.c:125 +#, fuzzy +msgid "XChat: Connection Complete" +msgstr "S'ha excedit el temps d'espera" + +#: src/fe-gtk/joind.c:150 +#, fuzzy, c-format +msgid "Connection to %s complete." +msgstr "Connexió reiniciada des de l'altre costat" + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "" + +#: src/fe-gtk/joind.c:179 +#, fuzzy +msgid "_Join this channel:" +msgstr "Entra al canal" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" + +#: src/fe-gtk/joind.c:198 +#, fuzzy +msgid "O_pen the Channel-List window." +msgstr "Obre els canals en:" + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "" + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Diàleg amb" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "El tema per a %s és: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "No hi ha cap tema establert" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" + +#: src/fe-gtk/maingui.c:1283 +#, fuzzy +msgid "Quit XChat?" +msgstr "Quant a l'X-Chat" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1310 +#, fuzzy, c-format +msgid "You are connected to %i IRC networks." +msgstr "Connecta-t'hi automàticament a l'inici" + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "" + +#: src/fe-gtk/maingui.c:1314 +#, fuzzy +msgid "Some file transfers are still active." +msgstr "" +"Encara hi ha transferències de fitxers actives, voleu sortir de l'X-Chat?" + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1552 +#, fuzzy +msgid "Insert Attribute or Color Code" +msgstr "Inseriu el codi de color" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "" + +#: src/fe-gtk/maingui.c:1555 +#, fuzzy +msgid "<u>Underline</u>" +msgstr "Subratllat" + +#: src/fe-gtk/maingui.c:1557 +#, fuzzy +msgid "Normal" +msgstr "Noruega" + +#: src/fe-gtk/maingui.c:1559 +#, fuzzy +msgid "Colors 0-7" +msgstr "Colors" + +#: src/fe-gtk/maingui.c:1569 +#, fuzzy +msgid "Colors 8-15" +msgstr "Colors" + +#: src/fe-gtk/maingui.c:1612 +#, fuzzy +msgid "_Settings" +msgstr "Conf_iguració" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "Amaga els missatges d'entrades i sortides" + +#: src/fe-gtk/maingui.c:1625 +#, fuzzy +msgid "_Extra Alerts" +msgstr "Altres andròmines" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "Avís sonor a cada missatge" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +#, fuzzy +msgid "_Detach" +msgstr "Separa la pestanya" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "_Tanca" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "El límit d'usuaris ha de ser un número!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Protecció del tema" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Cap missatge de fora" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Secret" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Només convidats" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Moderat" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Llista de bandejats" + +# Contrasenya per als canals protegits per contrasenya (dpm) +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Contrasenya" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Límit d'usuaris" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Mostra/Oculta la llista d'usuaris" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"No s'ha pogut fer transparent el fons!\n" +"\n" +"Potser esteu utilitzant un gestor de finestres\n" +"no compatible que no està soportat.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Introduïu el nou sobrenom:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Màquina desconeguda" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Nom real:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Usuari:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "País:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Servidor:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Últim missatge:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Missatge d'absència:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:944 +#, fuzzy +msgid "Open Link in Browser" +msgstr "_Obre l'enllaç en el navegador" + +#: src/fe-gtk/menu.c:945 +#, fuzzy +msgid "Copy Selected Link" +msgstr "Copia l'URL seleccionat" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Entra al canal" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Deixa el canal" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Canvia de canal" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +#, fuzzy +msgid "XChat: User menu" +msgstr "X-Chat: Menú d'usuari" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Edita aquest menú..." + +#: src/fe-gtk/menu.c:1280 +#, fuzzy +msgid "Retrieve channel list..." +msgstr "Llista de canals..." + +#: src/fe-gtk/menu.c:1348 +#, fuzzy +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Ordres d'usuari - Codis especials:\n" +"\n" +"%c = canal actual\n" +"%m = informació de la màquina\n" +"%n = el vostre sobrenom\n" +"%t = hora i data\n" +"%v = versió de l'xchat\n" +"%2 = paraula 2\n" +"%3 = paraula 3\n" +"&2 = paraula 2 fins a final de línia\n" +"&3 = paraula 3 fins a final de línia\n" +"\n" +"p.ex:\n" +"/cmd john hello\n" +"\n" +"%2 seria \"john\"\n" +"&2 seria \"john hello\"." + +#: src/fe-gtk/menu.c:1364 +#, fuzzy +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Botons de la llista d'usuaris - Codis especials:\n" +"\n" +"%a = tots els sobrenoms seleccionats\n" +"%c = canal actual\n" +"%h = màquina del sobrenom seleccionat\n" +"%m = informació de la màquina\n" +"%n = el vostre sobrenom\n" +"%s = sobrenom seleccionat\n" +"%t = hora i data\n" + +#: src/fe-gtk/menu.c:1374 +#, fuzzy +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Botons de diàleg - Codis especials:\n" +"\n" +"%a = tots els sobrenoms seleccionats\n" +"%c = canal actual\n" +"%h = màquina del sobrenom seleccionat\n" +"%m = informació de la màquina\n" +"%n = el vostre sobrenom\n" +"%s = sobrenom seleccionat\n" +"%t = hora i data\n" + +#: src/fe-gtk/menu.c:1384 +#, fuzzy +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"Respostes CTCP - Codis especials:\n" +"\n" +"%d = dades (el CTCP sencer)\n" +"%m = informació de la màquina\n" +"%s = sobrenom de qui envia el ctcp\n" +"%t = hora i data\n" +"%2 = paraula 2\n" +"%3 = paraula 3\n" +"&2 = paraula 2 fins a final de línia\n" +"&3 = paraula 3 fins a final de línia\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, fuzzy, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"Gestió d'URLs - Codis especials:\n" +"\n" +"%s = la cadena d'URL\n" +"\n" +"Poseu un ! al davant de l'ordre per\n" +"indicar que l'ha executar la shell" + +#: src/fe-gtk/menu.c:1404 +#, fuzzy +msgid "XChat: User Defined Commands" +msgstr "X-Chat: Ordres definides per l'usuari" + +#: src/fe-gtk/menu.c:1411 +#, fuzzy +msgid "XChat: Userlist Popup menu" +msgstr "X-Chat: Menú emergent de la llista d'usuaris" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "" + +#: src/fe-gtk/menu.c:1418 +#, fuzzy +msgid "XChat: Replace" +msgstr "X-Chat: Substitueix" + +#: src/fe-gtk/menu.c:1425 +#, fuzzy +msgid "XChat: URL Handlers" +msgstr "X-Chat: Gestió d'URLs" + +#: src/fe-gtk/menu.c:1444 +#, fuzzy +msgid "XChat: Userlist buttons" +msgstr "X-Chat: Botons de la llista d'usuaris" + +#: src/fe-gtk/menu.c:1451 +#, fuzzy +msgid "XChat: Dialog buttons" +msgstr "X-Chat: Botons de diàleg" + +#: src/fe-gtk/menu.c:1458 +#, fuzzy +msgid "XChat: CTCP Replies" +msgstr "X-Chat: Respostes CTCP" + +#: src/fe-gtk/menu.c:1564 +#, fuzzy +msgid "_XChat" +msgstr "_X-Chat" + +#: src/fe-gtk/menu.c:1565 +#, fuzzy +msgid "Network Li_st..." +msgstr "Configuració de la xarxa" + +#: src/fe-gtk/menu.c:1568 +#, fuzzy +msgid "_New" +msgstr "Nou" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Pestanya de servidor..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Pestanya de canal..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Finestra de servidor..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Finestra de canals..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +#, fuzzy +msgid "_Load Plugin or Script..." +msgstr "Carrega un connector o script..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +#, fuzzy +msgid "_Quit" +msgstr "Surt" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "" + +#: src/fe-gtk/menu.c:1591 +#, fuzzy +msgid "_Menu Bar" +msgstr "Barra de menú" + +#: src/fe-gtk/menu.c:1592 +#, fuzzy +msgid "_Topic Bar" +msgstr "Barra del tema" + +#: src/fe-gtk/menu.c:1593 +#, fuzzy +msgid "_User List" +msgstr "Llista d'usuaris" + +#: src/fe-gtk/menu.c:1594 +#, fuzzy +msgid "U_serlist Buttons" +msgstr "Botons de la llista d'usuaris..." + +#: src/fe-gtk/menu.c:1595 +#, fuzzy +msgid "M_ode Buttons" +msgstr "Botons de mode" + +#: src/fe-gtk/menu.c:1597 +#, fuzzy +msgid "_Channel Switcher" +msgstr "_Tema del canal" + +#: src/fe-gtk/menu.c:1599 +#, fuzzy +msgid "_Tabs" +msgstr "Pestanyes" + +#: src/fe-gtk/menu.c:1600 +#, fuzzy +msgid "T_ree" +msgstr "Traça" + +#: src/fe-gtk/menu.c:1602 +#, fuzzy +msgid "_Network Meters" +msgstr "Monitor de la xarxa" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Desactivat" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Gràfic" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "_Servidor" + +#: src/fe-gtk/menu.c:1611 +#, fuzzy +msgid "_Disconnect" +msgstr "Desconnecta" + +#: src/fe-gtk/menu.c:1612 +#, fuzzy +msgid "_Reconnect" +msgstr "Torna a connectar" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "Entra al canal..." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "Entra al canal..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Marca'm _absent" + +#: src/fe-gtk/menu.c:1619 +#, fuzzy +msgid "_Usermenu" +msgstr "Nom d'usuari" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "Conf_iguració" + +#: src/fe-gtk/menu.c:1622 +#, fuzzy +msgid "_Preferences" +msgstr "Preferè_ncies..." + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Avançat" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Substitució automàtica..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "Respostes CTCP..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Botons de diàleg..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Vincles de tecla..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Esdeveniments..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "Gestió d'URLs..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Ordres de l'usuari..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Botons de la llista d'usuaris..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Menú emergent de la llista d'usuaris..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_Finestra" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Llista d'usuaris bandejats..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Taula de caràcters..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Xat directe..." + +#: src/fe-gtk/menu.c:1640 +#, fuzzy +msgid "File Transfers..." +msgstr "Transferències de _fitxers" + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "Llista d'usuaris bandejats..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Llista d'usuaris ignorats..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Connectors i scripts..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Registre en brut..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "Capturador d'URLs..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Resitua la línia de separació" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "_Neteja el text" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Cerca el text..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Desa el text..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_Ajuda" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "_Contingut" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "_Quant a" + +#: src/fe-gtk/menu.c:2147 +#, fuzzy +msgid "_Attach" +msgstr "Adjunta una pestanya" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Vist per últim cop" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Desconnectat" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Mai" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Connectat" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Introduïu el sobrenom a afegir:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "X-Chat: Llista de fitxers enviats" + +#: src/fe-gtk/notifygui.c:434 +#, fuzzy +msgid "Open Dialog" +msgstr "Obre una finestra de diàleg" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:589 +#, fuzzy +msgid "_Restore" +msgstr "Xarxa" + +#: src/fe-gtk/plugin-tray.c:591 +#, fuzzy +msgid "_Hide" +msgstr "Oculta" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +#, fuzzy +msgid "Channel Message" +msgstr "Nom del canal" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +#, fuzzy +msgid "Private Message" +msgstr "Missatge privat de %s" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +#, fuzzy +msgid "Highlighted Message" +msgstr "Avís sonor quan hi hagi missatges realçats" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "Absència" + +#: src/fe-gtk/plugin-tray.c:605 +#, fuzzy +msgid "_Back" +msgstr "Negre" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, fuzzy, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "Missatge privat de %s" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Versió" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Descripció" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Seleccioneu el connector o script a carregar" + +#: src/fe-gtk/plugingui.c:221 +#, fuzzy +msgid "XChat: Plugins and Scripts" +msgstr "X-Chat: Connectors i scripts" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "_Carrega..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "_Descarrega" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +#, fuzzy +msgid "Save As..." +msgstr "Desa com a" + +#: src/fe-gtk/rawlog.c:95 +#, fuzzy, c-format +msgid "XChat: Rawlog (%s)" +msgstr "X-Chat: Registre brut (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Neteja" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "La finestra que vàreu obrir per aquesta cerca ja no existeix." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "" + +#: src/fe-gtk/search.c:116 +#, fuzzy +msgid "XChat: Search" +msgstr "X-Chat: Cerca" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "_Cerca" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Xarxa nova" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Voleu eliminar la xarxa \"%s\" i tots els seus servidors?" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "Canal" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "X-Chat: Llista de canals (%s)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "Contrasenya:" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "Edita" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "El nom d'usuari i el nom real no es poden deixar en blanc." + +#: src/fe-gtk/servlistgui.c:1397 +#, fuzzy, c-format +msgid "XChat: Edit %s" +msgstr "X-Chat: Detalls de %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Servidors per a %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Connectar-se només al servedor seleccionat" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Quan falla la connexió, no ho reintenta amb cada un dels servidors." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Les vostres dades" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Utilitza la informació global d'usuari" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "Sobrenom:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Segona opció:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "Nom d'usuari" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "Nom real:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Connexió" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Connecta-t'hi automàticament a l'inici" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "Utilitza un servidor intermedi" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "Utilitza SSL amb tots els servidors d'aquesta xarxa" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Accepta certificats SSL invàlids" + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "En deixar el canal:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "Canals on entrar, separats per comes, però sense espais!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Ordre de connexió:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Executa aquesta ordre un cop establerta la connexió. Si en necessiteu més " +"d'una poseu LOAD -e <fitxer> on <fitxer> és un fitxer de text amb les ordres " +"a executar." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Contrasenya per al servidor de sobrenoms:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Contrasenya per al servidor:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Contrasenya per al servidor. En cas de dubte, deixeu-ho en blanc." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Joc de caràcters:" + +#: src/fe-gtk/servlistgui.c:1649 +#, fuzzy +msgid "XChat: Network List" +msgstr "X-Chat: Llista de notificació" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Informació de l'usuari" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Tercera opció:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Xarxes" + +#: src/fe-gtk/servlistgui.c:1786 +#, fuzzy +msgid "Skip network list on startup" +msgstr "Omet mostrar la llista de servidors a l'inici" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "Edita..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "Ordena" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "Connecta" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Aparença de la finestra de text" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Tipus de lletra:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Imatge de fons:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Línies fora la finestra:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Acoloreix els sobrenoms" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Assigna un color diferent a cada persona" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Sagna els sobrenoms" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Alinea els sobrenoms a la dreta" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Fons transparent" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Mostra una línia de separació" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Insereix una línia vermella després de l'últim text llegit" + +#: src/fe-gtk/setup.c:115 +#, fuzzy +msgid "Transparency Settings" +msgstr "Valors del tint" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Roig:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Verd:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Blau:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Data i hora" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Mostra marques horàries" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Format de la data i l'hora" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Per a més detalls consulteu la pàgina del manual strftime (3)." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Línia d'entrada" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Usa el tipus de lletra i colors de la finestra de text" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Comprovació de l'ortografia" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Compleció de sobrenoms" + +#: src/fe-gtk/setup.c:144 +#, fuzzy +msgid "Automatic nick completion (without TAB key)" +msgstr "Compleció automàtica de sobrenoms" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Sufix de compleció de sobrenoms:" + +#: src/fe-gtk/setup.c:147 +#, fuzzy +msgid "Nick completion sorted:" +msgstr "Sufix de compleció de sobrenoms:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Codis de la caixa d'entrada" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Interpreta %nnn com a un valor ASCII" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Interpreta %C, %B com a color, negreta, etc" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, primer els operadors" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, operadors al final" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Desordenat" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Dalt" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Baix" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Oculta" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Llista d'usuaris" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Mostra els noms de les màquines a la llista d'usuaris" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Ordena la llista d'usuaris amb:" + +#: src/fe-gtk/setup.c:205 +#, fuzzy +msgid "Show user list at:" +msgstr "Mostra/Oculta la llista d'usuaris" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Seguiment d'absències" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "En canals més petits de:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Acció per al doble-clic" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Finestres" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Pestanyes" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Sempre" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Només les pestanyes demanades" + +#: src/fe-gtk/setup.c:242 +#, fuzzy +msgid "Tree" +msgstr "Traça" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Obre una pestanya adicional per als missatges del servidor" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Obre una pestanya adicional per als avisos del servidor" + +#: src/fe-gtk/setup.c:252 +#, fuzzy +msgid "Open a new tab when you receive a private message" +msgstr "Obre una pestanya adicional per als missatges del servidor" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Ordena les pestanyes per ordre alfabètic" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "Pestanyes petites" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Dóna el focus a les pestanyes noves:" + +#: src/fe-gtk/setup.c:258 +#, fuzzy +msgid "Show channel switcher at:" +msgstr "En canals més petits de:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Abreuja el títol a:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "lletres com a màxim." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Pestanyes o finestres" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Obre els canals en:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Obre els diàlegs en:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Obre les utilitats en:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Voleu obrir DCCs, notificacions, etc. en pestanyes o finestres?" + +#: src/fe-gtk/setup.c:271 +#, fuzzy +msgid "No" +msgstr "Cap" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Fitxers i directoris" + +#: src/fe-gtk/setup.c:280 +#, fuzzy +msgid "Auto accept file offers:" +msgstr "Accepta automàticament fitxers" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Desa els fitxers baixats a:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Mou els fitxers completats a:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Afegeix el sobrenom en els noms dels fitxers" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Configuració de la xarxa" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Obtingues la meva adreça IP des del servidor" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Pregunta al servidor per la vostra adreça real. Useu això si teniu una " +"adreça 192.168.*.*" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "Adreça IP" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Anuncia aquesta adreça com a pròpia quan s'ofereixin fitxers." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Primer port d'enviament DCC:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Últim port d'enviament DCC:" + +#: src/fe-gtk/setup.c:292 +#, fuzzy +msgid "!Leave ports at zero for full range." +msgstr "(Deixeu els ports a zero per usar tot l'interval)." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Velocitat màxima de transferència de fitxers (octets per segon)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Un únic enviament:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Velocitat màxima per a una transferència" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Una única recepció:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Tots els enviaments combinats:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Velocitat màxima per a tot el tràfic" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Totes les recepcions combinades:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Alertes" + +#: src/fe-gtk/setup.c:333 +#, fuzzy +msgid "Show tray balloons on:" +msgstr "Mostra les pestanyes a:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:339 +#, fuzzy +msgid "Enable system tray icon" +msgstr "Activa el seguiment d'absències" + +#: src/fe-gtk/setup.c:341 +#, fuzzy +msgid "Highlighted Messages" +msgstr "Avís sonor quan hi hagi missatges realçats" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:344 +#, fuzzy +msgid "Extra words to highlight:" +msgstr "Altres paraules a realçar:" + +#: src/fe-gtk/setup.c:345 +#, fuzzy +msgid "Nick names not to highlight:" +msgstr "Sobrenoms que no s'han de realçar:" + +#: src/fe-gtk/setup.c:346 +#, fuzzy +msgid "Nick names to always highlight:" +msgstr "Sobrenoms que no s'han de realçar:" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "(Llista de paraules separades per comes)." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Missatges per defecte" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "En sortir:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "En deixar el canal:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Missatge d'absència:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Absència" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Anuncia missatge d'absència" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Anuncia l'absència a tots els canals" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Anúncia l'absència una sola vegada" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Mostra els anuncis idèntics d'absència una sola vegada" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Treu l'estatus d'absent automàticament" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Desmarca'm automàticament com a absent abans d'enviar missatges" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Configuració avançada" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Retard de reconnexió automàtica:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Mostra els MODEs en brut" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Whois a cada notificació" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" +"Envia un /WHOIS a cada usuari de la llista de notificació quan es connecti" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Amaga els missatges d'entrades i sortides" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Oculta els missatges d'entrada i sortida del canal" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Obre finestres DCC automàticament" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Finestra d'enviament" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Finestra de rebudes" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Finestra de xat" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Enregistrament" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "Enregistra les converses" + +#: src/fe-gtk/setup.c:388 +#, fuzzy +msgid "Log filename:" +msgstr "Màscara del fitxer:" + +#: src/fe-gtk/setup.c:389 +#, fuzzy, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "(%s=Servidor %c=Canal %n=Xarxa)." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Afegeix la data i l'hora en el registre" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Format de l'informació horària:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Inhabilitat)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "" + +#: src/fe-gtk/setup.c:414 +#, fuzzy +msgid "All Connections" +msgstr "Connexió" + +#: src/fe-gtk/setup.c:415 +#, fuzzy +msgid "IRC Server Only" +msgstr "Només convidats" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "La vostra adreça" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Vincula a:" + +#: src/fe-gtk/setup.c:424 +#, fuzzy +msgid "Only useful for computers with multiple addresses." +msgstr "(Només és útil en ordinadors amb múltiples adreces)." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Servidor intermediari" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Nom de la màquina:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Port:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Tipus:" + +#: src/fe-gtk/setup.c:430 +#, fuzzy +msgid "Use proxy for:" +msgstr "Utilitza un servidor intermedi" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "" + +#: src/fe-gtk/setup.c:434 +#, fuzzy +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Usa un sistema d'autenticació pel servidor intermedi (HTTP i Socks5)" + +#: src/fe-gtk/setup.c:436 +#, fuzzy +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Usa un sistema d'autenticació pel servidor intermedi (HTTP i Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Nom d'usuari:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Contrasenya:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Seleccioneu un fitxer d'imatge" + +#: src/fe-gtk/setup.c:905 +#, fuzzy +msgid "Select Download Folder" +msgstr "Seleccioneu un color" + +# títol d'un diàleg. eac +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Seleccioneu un tipus de lletra" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Vés a..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Marca els usuaris identificats amb:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Marca els usuaris no identificats amb:" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Seleccioneu un color" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Colors del text" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "Colors del mIRC:" + +#: src/fe-gtk/setup.c:1305 +#, fuzzy +msgid "Local colors:" +msgstr "Colors adicionals:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Primer pla:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Fons:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Text seleccionat" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Colors de l'interfície" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Dades noves:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Línia de separació:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Missatge nou:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Usuari absent::" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Text realçat:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Esdeveniment" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Fitxer d'àudio" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Seleccioneu un fitxer d'àudio" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Mètode de reproducció:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "Programa extern de reproducció:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "Programa _extern" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_Automàtic" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "Directori de fitxers d'àudio:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Fitxer d'àudio:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "_Vés a..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "Re_produeix" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Interfície" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Caixa de text" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Llista d'usuaris" + +#: src/fe-gtk/setup.c:1703 +#, fuzzy +msgid "Channel switcher" +msgstr "_Tema del canal" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Colors" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Conversacions" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "General" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Àudio" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Configuració de la xarxa" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Transferències de fitxers" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Categories" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" +"Algunes de les opcions que han canviat requereixen reiniciar l'X-Chat per a " +"tenir efecte." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*ATENCIÓ*\n" +"Acceptar automàticament DCCs al vostre\n" +"directori personal pot ser perillós. P.ex:\n" +"Algú podria enviar-vos un .bash_profile" + +#: src/fe-gtk/setup.c:2058 +#, fuzzy +msgid "XChat: Preferences" +msgstr "X-Chat: Preferències" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "S'ha produït un error en analitzar la cadena" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Aquest senyal sols ha passat %d arguments, $%d no és vàlid" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Imprimeix un fitxer de text" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Edició d'esdeveniments" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ Número" + +#: src/fe-gtk/textgui.c:440 +#, fuzzy +msgid "Load From..." +msgstr "Carrega des de" + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Comprova-ho tot" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +#, fuzzy +msgid "XChat: URL Grabber" +msgstr "X-Chat: capturador d'URLs" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Neteja la llista" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Copia l'URL seleccionat" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Copia" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Desa la llista a un fitxer" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d operadors, %d en total" + +#~ msgid "CLEAR, Clears the current text window" +#~ msgstr "CLEAR, Esborra el text de la finestra actual" + +#~ msgid "QUERY <nick>, opens up a new privmsg window to someone" +#~ msgstr "" +#~ "QUERY <sobrenom>, obre una finestra nova de missatges privats per a algú" + +#~ msgid "%C18*$t$1%O $2" +#~ msgstr "%C18*$t$1%O $2" + +#~ msgid "%C21*%O$t%C21%B$1%O%C21 $2" +#~ msgstr "%C21*%O$t%C21%B$1%O%C21 $2" + +#~ msgid "%C18%B%B$4$1%O%C18%O$t$2" +#~ msgstr "%C18%B%B$4$1%O%C18%O$t$2" + +#~ msgid "$4%C21%B$1%O$t%C21$2" +#~ msgstr "$4%C21%B$1%O$t%C21$2" + +#~ msgid "%C28-%C29$1/$2%C28-%O$t$3" +#~ msgstr "%C28-%C29$1/$2%C28-%O$t$3" + +#~ msgid "$1$t$2" +#~ msgstr "$1$t$2" + +#~ msgid "%C19>%O$1%C19<%O$t$2%O" +#~ msgstr "%C19>%O$1%C19<%O$t$2%O" + +#~ msgid "%C16*%O$t$1%O" +#~ msgstr "%C16*%O$t$1%O" + +#~ msgid "%C28-%C29$1%C28-%O$t$2" +#~ msgstr "%C28-%C29$1%C28-%O$t$2" + +#~ msgid "%C19>%O$1%C19<%O$t$2" +#~ msgstr "%C19>%O$1%C19<%O$t$2" + +#~ msgid "%C28*%C29$3$1%C28*$t%O$2" +#~ msgstr "%C28*%C29$3$1%C28*$t%O$2" + +#~ msgid "%C18%B%B$3$1%O$t$2" +#~ msgstr "%C18%B%B$3$1%O$t$2" + +#~ msgid "%C22*%O$t$1" +#~ msgstr "%C22*%O$t$1" + +#~ msgid "%C31%B%B$4$1%O%C30$t$2" +#~ msgstr "%C31%B%B$4$1%O%C30$t$2" + +#~ msgid "PID" +#~ msgstr "PID" + +#~ msgid "Servername" +#~ msgstr "Nom del servidor" + +#~ msgid "France, Metropolitan" +#~ msgstr "França, Metropolitana" + +#~ msgid "Neutral Zone" +#~ msgstr "Zona neutral" + +#~ msgid "US Minor Outlying Islands" +#~ msgstr "Illes Perifèriques Menors dels EUA" + +#~ msgid "Direct client-to-client" +#~ msgstr "Directe Client-a-Client" + +#~ msgid "Send File" +#~ msgstr "Envia un fitxer" + +#~ msgid "Offer Chat" +#~ msgstr "Ofereix un xat" + +#~ msgid "Abort Chat" +#~ msgstr "Avorta el xat" + +#~ msgid "Userinfo" +#~ msgstr "Informació de l'usuari" + +#~ msgid "Clientinfo" +#~ msgstr "Informació del client" + +#~ msgid "Time" +#~ msgstr "Hora" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "Operador" + +#~ msgid "Kill this user" +#~ msgstr "Mata aquest usuari" + +#~ msgid "Mode" +#~ msgstr "Mode" + +#~ msgid "Give Half-Ops" +#~ msgstr "Dóna l'estatus de semi-operador" + +#~ msgid "Take Half-Ops" +#~ msgstr "Treu l'estatus de semi-operador" + +#~ msgid "Ignore" +#~ msgstr "Ignora" + +#~ msgid "Ignore User" +#~ msgstr "Ignora l'usuari" + +#~ msgid "UnIgnore User" +#~ msgstr "Deixa d'ignorar l'usuari" + +#~ msgid "Info" +#~ msgstr "Informació" + +#~ msgid "Who" +#~ msgstr "Qui" + +#~ msgid "DNS Lookup" +#~ msgstr "Consulta DNS" + +#~ msgid "UserHost" +#~ msgstr "UsuariMàquina" + +#~ msgid "External" +#~ msgstr "Extern" + +#~ msgid "Traceroute" +#~ msgstr "Traceroute" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "Unban" +#~ msgstr "Readmet" + +#~ msgid "I can't save an empty list!" +#~ msgstr "No podeu desar una llista buida!" + +#~ msgid "List display options:" +#~ msgstr "Opcions de visualització:" + +#~ msgid "Minimum Users:" +#~ msgstr "Mínim d'usuaris:" + +#~ msgid "Maximum Users:" +#~ msgstr "Màxim d'usuaris:" + +#~ msgid "Regex Match:" +#~ msgstr "Filtra amb l'expressió regular:" + +#~ msgid "Apply Match to:" +#~ msgstr "Aplica la coincidència a:" + +#~ msgid "Apply" +#~ msgstr "Aplica" + +#~ msgid "Refresh the list" +#~ msgstr "Refresca la llista" + +#~ msgid "Save the list" +#~ msgstr "Desa la llista" + +#~ msgid "From:" +#~ msgstr "De:" + +#~ msgid "To:" +#~ msgstr "A:" + +#~ msgid "Size:" +#~ msgstr "Mida:" + +#~ msgid "Started:" +#~ msgstr "Inici:" + +#~ msgid "Speed limit:" +#~ msgstr "Limitació de velocitat:" + +#~ msgid "MIME Type" +#~ msgstr "Tipus MIME" + +#~ msgid "X-Chat: File Receive List" +#~ msgstr "X-Chat: Llista de fitxers rebuts" + +#~ msgid "Open" +#~ msgstr "Obre" + +#~ msgid "Ack" +#~ msgstr "Rebut" + +#~ msgid "To" +#~ msgstr "A" + +#~ msgid "To/From" +#~ msgstr "A/De" + +#~ msgid "Options" +#~ msgstr "Opcions" + +#~ msgid "don't auto connect" +#~ msgstr "no et connectis automàticament als servidors" + +#~ msgid "DIRECTORY" +#~ msgstr "DIRECTORI" + +#~ msgid "Add new" +#~ msgstr "Afegeix" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "No hi ha més pestanyes obertes, voleu sortir de l'X-Chat?" + +#~ msgid "Show join/part messages" +#~ msgstr "Mostra missatges d'entrada/sortida" + +#~ msgid "Color paste" +#~ msgstr "Enganxa amb color" + +#~ msgid "Go to" +#~ msgstr "Vés a" + +#~ msgid "Close Tab" +#~ msgstr "Tanca la pestanya" + +#~ msgid "Close this tab/window" +#~ msgstr "Tanca aquesta pestanya/finestra" + +#~ msgid "User List Buttons" +#~ msgstr "Botons de la llista d'usuaris" + +#~ msgid "Settings saved." +#~ msgstr "S'ha desat la configuració." + +#~ msgid "New Shell Tab..." +#~ msgstr "Pestanya de shell nova..." + +#~ msgid "_IRC" +#~ msgstr "_IRC" + +#~ msgid "Invisible" +#~ msgstr "Invisible" + +#~ msgid "Receive Wallops" +#~ msgstr "Rep wallops" + +#~ msgid "Receive Server Notices" +#~ msgstr "Rep els avisos del servidor" + +#~ msgid "Auto Rejoin when Kicked" +#~ msgstr "Reentra automàticament en cas d'expulsió" + +#~ msgid "Never-give-up ReConnect" +#~ msgstr "Intents de reconnexió ad infinitum" + +#~ msgid "Auto Open Dialog Windows" +#~ msgstr "Obre finestres de diàleg automàticament" + +#~ msgid "Auto Accept Direct Chat" +#~ msgstr "Accepta automàticament xats DCC" + +#~ msgid "Preferences..." +#~ msgstr "Preferències..." + +#~ msgid "Reload Settings" +#~ msgstr "Rellegeix la configuració" + +#~ msgid "Save Settings now" +#~ msgstr "Desa la configuració ara" + +#~ msgid "Save Settings on exit" +#~ msgstr "Desa la configuració en sortir" + +#~ msgid "File Receive..." +#~ msgstr "Fitxers rebuts..." + +#~ msgid "File Send..." +#~ msgstr "Fitxer enviats..." + +#~ msgid "Notify List..." +#~ msgstr "Llista de notificació..." + +#~ msgid "User" +#~ msgstr "Usuari" + +#~ msgid "Server" +#~ msgstr "Servidor" + +#~ msgid "Save rawlog" +#~ msgstr "Desa un registre brut" + +#~ msgid "Save rawlog..." +#~ msgstr "Desa el registra brut..." + +#~ msgid "Find" +#~ msgstr "Cerca" + +#~ msgid "Close" +#~ msgstr "Tanca" + +#~ msgid "Real na_me:" +#~ msgstr "Nom real:" + +#~ msgid "C_hannels to join:" +#~ msgstr "Canals on entrar:" + +#~ msgid "X-Chat: Server List" +#~ msgstr "X-Chat: Llista de servidors" + +#~ msgid "Connect in new tab" +#~ msgstr "Connecta en una pestanya nova" + +#~ msgid "Tint (shade) transparency" +#~ msgstr "Transparència tintada" + +# què fa?. eac +#~ msgid "Strip mIRC colors" +#~ msgstr "Treu els colors del mIRC" + +#~ msgid "Completes nick names without using the TAB key" +#~ msgstr "Completa els sobrenoms sense haver d'usar la tecla TAB" + +#~ msgid "Input Box Appearance" +#~ msgstr "Aparença de la línia d'entrada" + +#~ msgid "Info text" +#~ msgstr "Text informatiu" + +#~ msgid "User list buttons enabled" +#~ msgstr "Habilita els botons de la llista d'usuaris" + +#~ msgid "Resizable user list" +#~ msgstr "Llista d'usuaris redimensionable" + +#~ msgid "Lag meter:" +#~ msgstr "Mesurador de retard:" + +#~ msgid "Throttle meter:" +#~ msgstr "Mesurador de velocitat:" + +#~ msgid "Left" +#~ msgstr "A l'esquerra" + +#~ msgid "Right" +#~ msgstr "A la dreta" + +#~ msgid "Tabs Location" +#~ msgstr "Posició de les pestanyes" + +#~ msgid "Convert spaces to underscore before sending" +#~ msgstr "Converteix els espais en guions baixos abans d'enviar" + +#~ msgid "(Can be a text file relative to ~/.xchat2/)." +#~ msgstr "(Pot ser un fitxer de text relatiu a ~/.xchat2/)." + +#~ msgid "(Can be a text file relative to config dir)." +#~ msgstr "(Pot ser un fitxer de text relatiu al directori de configuració)." + +#~ msgid "Flash taskbar on highlighted messages" +#~ msgstr "Il·lumina la barra de tasques quan hi hagi missatges realçats" + +#~ msgid "Beep on private messages" +#~ msgstr "Avís sonor de missatges privats" + +#~ msgid "Beep on channel messages" +#~ msgstr "Avís sonor de missatges al canal" + +#~ msgid "(See strftime manpage for details)." +#~ msgstr "(Per a més detalls consulteu la pàgina del manual strftime (3))." + +#~ msgid "(disabled)" +#~ msgstr "(inhabilitat)" + +#~ msgid "A star (*)" +#~ msgstr "Un asterisc (*)" + +#~ msgid "A red star (*)" +#~ msgstr "Un asterisc roig (*)" + +#~ msgid "Select a file to save to" +#~ msgstr "Seleccioneu un fitxer on desar-ho" + +#~ msgid "" +#~ " File: %s\n" +#~ " To/From: %s\n" +#~ " Size: %u\n" +#~ " Port: %d\n" +#~ " IP Number: %s\n" +#~ "Start Time: %s Max CPS: %d\n" +#~ msgstr "" +#~ " Fitxer: %s\n" +#~ " A/De: %s\n" +#~ " Mida: %u\n" +#~ " Port: %d\n" +#~ " Adreça IP: %s\n" +#~ " Inici: %s CPS màxim: %d\n" + +#~ msgid "User: %s" +#~ msgstr "Usuari: %s" + +#~ msgid "Realname: %s" +#~ msgstr "Nom real: %s" + +#~ msgid "Server: %s" +#~ msgstr "Servidor: %s" + +#~ msgid "%C22*%O$t%C28[%O$1%C28] %O$2" +#~ msgstr "%C22*%O$t%C28[%O$1%C28] %O$2" + +#~ msgid "Former Czechoslovakia" +#~ msgstr "Antiga Txecoslovàquia" + +#~ msgid "Zaire" +#~ msgstr "Zaire" + +#~ msgid "<span weight=\"bold\">List Filtering</span>" +#~ msgstr "<span weight=\"bold\">Filtres de la llista</span>" + +#~ msgid "Channel _Name" +#~ msgstr "_Nom del canal" + +#~ msgid "in:" +#~ msgstr "a:" + +#~ msgid "<span weight=\"bold\">Automatically Join Channels</span>" +#~ msgstr "<span weight=\"bold\">Entra automàticament als canals</span>" + +#~ msgid "<span weight=\"bold\">User Info</span>" +#~ msgstr "<span weight=\"bold\">Informació de l'usuari</span>" + +#~ msgid "Cycle _until connected" +#~ msgstr "S_urt i entra al canal fins a connectar-te" + +#~ msgid "Use _these user settings:" +#~ msgstr "U_tilitza aquesta informació d'usuari:" + +#~ msgid "User and Channels" +#~ msgstr "Usuaris i canals" + +#~ msgid "_Automatically connect to network" +#~ msgstr "Connecta a aquesta xarxa _automàticament a l'inici" + +#~ msgid "_Name:" +#~ msgstr "_Nom:" + +#~ msgid "_Real Name:" +#~ msgstr "Nom _real:" + +#~ msgid "_Use secure connection (SSL)" +#~ msgstr "_Utilitza una connexió segura (SSL)" + +#~ msgid "<span size=\"small\" style=\"italic\">Opaque</span>" +#~ msgstr "<span size=\"small\" style=\"italic\">Opac</span>" + +#~ msgid "<span size=\"small\" style=\"italic\">Transparent</span>" +#~ msgstr "<span size=\"small\" style=\"italic\">Transparent</span>" + +#~ msgid "<span weight=\"bold\">Background</span>" +#~ msgstr "<span weight=\"bold\">Fons</span>" + +#~ msgid "<span weight=\"bold\">DCC Settings</span>" +#~ msgstr "<span weight=\"bold\">Paràmetres DCC</span>" + +#~ msgid "<span weight=\"bold\">Extra Colors</span>" +#~ msgstr "<span weight=\"bold\">Colors addicionals</span>" + +#~ msgid "<span weight=\"bold\">File Transfers</span>" +#~ msgstr "<span weight=\"bold\">Transferència de fitxers</span>" + +#~ msgid "<span weight=\"bold\">General</span>" +#~ msgstr "<span weight=\"bold\">General</span>" + +#~ msgid "<span weight=\"bold\">Highlighting</span>" +#~ msgstr "<span weight=\"bold\">Realçament</span>" + +#~ msgid "<span weight=\"bold\">Text Colors</span>" +#~ msgstr "<span weight=\"bold\">Colors del text</span>" + +#~ msgid "<span weight=\"bold\">Throttling</span>" +#~ msgstr "<span weight=\"bold\">Restricció d'entrada</span>" + +#~ msgid "<span weight=\"bold\">User Interface</span>" +#~ msgstr "<span weight=\"bold\">Interfície d'usuari</span>" + +#~ msgid "<span weight=\"bold\">mIRC Colors</span>" +#~ msgstr "<span weight=\"bold\">Colors del mIRC</span>" + +#~ msgid "Auto-accept DCC file tr_ansfers" +#~ msgstr "Accepta _automàticament fitxers per DCC" + +#~ msgid "Buil_t-in schemes:" +#~ msgstr "Esquemes in_tegrats:" + +#~ msgid "Glo_bal receive KB/s: " +#~ msgstr "KB/s de baixada glo_bals:" + +#~ msgid "I_mage file:" +#~ msgstr "Fitxer d'i_matge:" + +#~ msgid "In_dividual send KB/s: " +#~ msgstr "KB/s de pujada in_dividuals:" + +#~ msgid "Indi_vidual receive KB/s: " +#~ msgstr "KB/s de baixada indi_viduals:" + +#~ msgid "Select Completed Files Directory" +#~ msgstr "Seleccioneu el directori per als fitxers completats:" + +#~ msgid "" +#~ "To edit a shortcut key, click on the corresponding row and type a new " +#~ "accelerator, or press backspace to clear." +#~ msgstr "" +#~ "Per a editar una tecla de drecera cliqueu a la fila corresponent i " +#~ "teclegeu una nova drecera, o bé premeu la tecla de retrocés per a " +#~ "esborrar la drecera." + +#~ msgid "Use _system terminal font" +#~ msgstr "Utilitza el tipus de lletra de terminal del _sistema" + +#~ msgid "Use t_his IP address:" +#~ msgstr "Utilitza aquesta adreça I_P:" + +#~ msgid "Use this f_ont:" +#~ msgstr "Utilitza aquest _tipus de lletra" + +#~ msgid "_Background color:" +#~ msgstr "Color de _fons:" + +#~ msgid "_Foreground color:" +#~ msgstr "Color de _primer pla:" + +#~ msgid "_Global send KB/s: " +#~ msgstr "KB/s de pujada _globals:" + +#~ msgid "_Nickname:" +#~ msgstr "Sobre_nom:" + +#~ msgid "_None (use solid color)" +#~ msgstr "_Cap (utilitza color sòlid)" + +#~ msgid "_Part message:" +#~ msgstr "Missatge de _sortida:" + +#~ msgid "_Quit message:" +#~ msgstr "Missatge de _desconnexió:" + +#~ msgid "spell checking" +#~ msgstr "comprovació ortogràfica" + +#~ msgid "" +#~ "Welcome to XChat-GNOME! Since this is your first time using this " +#~ "application, there are a couple things you'll need to configure before " +#~ "you can get started.\n" +#~ "\n" +#~ "These are the names by which you'll be recognized on IRC. Your nick name " +#~ "is the name by which you'll be known, whereas the real name is useful for " +#~ "things such as registering with services. You do not have to use your " +#~ "real name if you do not want to." +#~ msgstr "" +#~ "Benvingut a l'XChat-GNOME. Atès que és la primera vegada que feu servir " +#~ "aquesta aplicació, haureu de configurar uns quants paràmetres abans de " +#~ "començar.\n" +#~ "\n" +#~ "Aquests són els noms pels quals sereu reconegut en els xats IRC. En un " +#~ "xat sereu reconegut pel sobrenom, mentre que el nom real s'utilitzarà per " +#~ "a altres finalitats, com per exemple, per al registre a determinats " +#~ "serveis. No cal que utilitzeu el vostre nom real si és que no ho desitgeu." + +#~ msgid "XChat-GNOME Setup" +#~ msgstr "Configuració de l'XChat-GNOME" + +#~ msgid "_Real name:" +#~ msgstr "Nom _real:" + +#~ msgid "Chat with people using IRC" +#~ msgstr "Xerreu amb altres persones a través de l'IRC" + +#~ msgid "IRC Chat" +#~ msgstr "Xat IRC" + +#~ msgid "XChat-GNOME IRC Chat" +#~ msgstr "Xat IRC de l'XChat-GNOME" + +#~ msgid "Apply on all _servers" +#~ msgstr "Aplica-ho per a tots els _servidors" + +#~ msgid "nickname" +#~ msgstr "sobrenom" + +#~ msgid "Screensaver activated, going away." +#~ msgstr "" +#~ "S'ha activat l'estalvi de pantalla, es commutarà a l'estat d'absència" + +#~ msgid "Screensaver is off, welcome back" +#~ msgstr "S'ha desactivat l'estalvi de pantalla, benvingut de nou" + +#~ msgid "NetworkManager connection monitor" +#~ msgstr "Monitor de la connexió del NetworkManager" + +#~ msgid "%s loaded successfully\n" +#~ msgstr "«%s» s'ha carregat satisfactòriament\n" + +#~ msgid "Notification" +#~ msgstr "Notificació" + +#~ msgid "A notification area plugin." +#~ msgstr "Un connector per a l'àrea de notificació." + +#~ msgid "Notification plugin loaded.\n" +#~ msgstr "S'ha carregat el connector de notificació.\n" + +#~ msgid "Notification plugin unloaded.\n" +#~ msgstr "S'ha descarregat el connector de notificació.\n" + +#~ msgid "Level of the messages that require a notification" +#~ msgstr "Nivell dels missatges pels quals es requereix una notificació" + +#~ msgid "" +#~ "Messages are classified according to their importance. Select level of " +#~ "messages above which the notification icon will be displayed. Valid " +#~ "values are: \"0\" (always displayed), \"1\" (all messages including " +#~ "information), \"2\" (all channel messages), \"3\" (only private or " +#~ "highlighted messages)." +#~ msgstr "" +#~ "Els missatges es classifiquen segons la seva importància. Seleccioneu el " +#~ "nivell d'importància dels missatges per sobre del qual es mostrarà la " +#~ "icona de notificació. Els valors següents són assignables: «0» (sempre " +#~ "visible), «1» (tots els missatges, incloent-hi els d'informació), «2» (tots " +#~ "els missatges dels canals), «3» (només els missatges privats o realçats)." + +#~ msgid "<span weight=\"bold\">Notification level</span>" +#~ msgstr "<span weight=\"bold\">Nivell de la notificació</span>" + +#~ msgid "Notify each _event" +#~ msgstr "Notifica tots els _esdeveniments" + +#~ msgid "_Always display notification icon" +#~ msgstr "Mostr_a sempre la icona de notificació" + +#~ msgid "On-screen display" +#~ msgstr "Monitor a la pantalla (OSD)" + +# FIXME (dpm) és correcte «no tenir el focus»? +#~ msgid "" +#~ "Pops up notification of important messages when XChat-GNOME doesn't have " +#~ "the focus" +#~ msgstr "" +#~ "Mostra la notificació de missatges importants quan l'XChat-GNOME no té el " +#~ "focus" + +#~ msgid "Error closing notification: %s\n" +#~ msgstr "S'ha produït un error en tancar la notificació: %s\n" + +#~ msgid "Message in %s" +#~ msgstr "Missatge a %s" + +#~ msgid "Message from %s" +#~ msgstr "Missatge de %s" + +#~ msgid "OSD loaded\n" +#~ msgstr "S'ha carregat l'OSD\n" + +#~ msgid "OSD initialization failed\n" +#~ msgstr "No s'ha pogut inicialitzar l'OSD\n" + +#~ msgid "Grabs URLs and puts them in a separate window for easy viewing." +#~ msgstr "" +#~ "Captura URLs i les posa en una altra finestra per a una visualització més " +#~ "còmoda." + +#~ msgid "URL Scraper failed to load: couldn't compile URL regex.\n" +#~ msgstr "" +#~ "No s'ha pogut carregar el capturador d'URLs: no s'ha pogut compilar " +#~ "l'expressió regular per a l'URL.\n" + +#~ msgid "URL Scraper failed to load: couldn't compile e-mail regex.\n" +#~ msgstr "" +#~ "No s'ha pogut carregar el capturador d'URLs: no s'ha pogut compilar " +#~ "l'expressió regular per a l'adreça de correu electrònic.\n" + +#~ msgid "URL Scraper loaded.\n" +#~ msgstr "S'ha carregat el capturador d'URLs.\n" + +#~ msgid "URL Scraper unloaded.\n" +#~ msgstr "S'ha descarregat el capturador d'URLs.\n" + +#~ msgid "URL Scraper history length" +#~ msgstr "Mida de l'historial del capturador d'URLs" + +#~ msgid "URL Scraper show timestamps" +#~ msgstr "Mostra la data i hora de cada missatge" + +#~ msgid "Sound Notification" +#~ msgstr "Notificació per àudio" + +#~ msgid "" +#~ "Play a sound when you receive a private message or your nick is " +#~ "highlighted." +#~ msgstr "" +#~ "Reprodueix un so en rebre un missatge privat o bé en ésser realçat el " +#~ "vostre sobrenom." + +#~ msgid "Sound-notification plugin loaded.\n" +#~ msgstr "S'ha carregat el connector de notificació per àudio.\n" + +#~ msgid "Sound-notification plugin unloaded.\n" +#~ msgstr "S'ha descarregat el connector de notificació per àudio.\n" + +#~ msgid "" +#~ "Set per channel options\n" +#~ "CHANOPT CONFMODE ON|OFF - Toggle conf mode/showing of join and part " +#~ "messages\n" +#~ "CHANOPT COLORPASTE ON|OFF - Toggle color paste\n" +#~ "CHANOPT BEEP ON|OFF - Toggle beep on message" +#~ msgstr "" +#~ "Estableix les opcions per a cada canal individual\n" +#~ "CHANOPT CONFMODE ON|OFF - Mostra o oculta els missatges d'entrada i de " +#~ "sortida\n" +#~ "CHANOPT COLORPASTE ON|OFF - Commuta poder enganxar amb colors\n" +#~ "CHANOPT BEEP ON|OFF - Commuta la reproducció del to del sistema en rebre " +#~ "un missatge" + +#~ msgid "-%C10-%C11-%O$tReceived a CTCP $1 from $2 (to $3)" +#~ msgstr "-%C10-%C11-%O$tS'ha rebut un CTCP $1 de $2 (per a $3)" + +#~ msgid "-%C10-%C11-%O$tReceived a CTCP Sound $1 from $2" +#~ msgstr "-%C10-%C11-%O$tS'ha rebut un CTCP Sound $1 de $2" + +#~ msgid "" +#~ "-%C10-%C11-%O$tDCC CHAT failed. Connection to $1 %C14[%O$2:$3%C14]%O lost." +#~ msgstr "" +#~ "-%C10-%C11-%O$tNo s'ha pogut establir la DCC. S'ha perdut la connexió amb " +#~ "$1 %C14[%O$2:$3%C14]%O." + +#~ msgid "-%C10-%C11-%O$tDCC RECV $1 ($2) failed. Connection to $3 lost." +#~ msgstr "" +#~ "-%C10-%C11-%O$tNo s'ha pogut rebre el fitxer $1 ($2). S'ha perdut la " +#~ "connexió amb $3." + +#~ msgid "" +#~ "-%C10-%C11-%O$tDCC SEND %C11$1%O failed. Connection to %C11$2%O lost." +#~ msgstr "" +#~ "-%C10-%C11-%O$tLa conexió DCC SEND no s'ha pogut establir. S'ha perdut la " +#~ "connexió amb %C11$2%O." + +#~ msgid "-%C10-%C11-%O$t$1%O" +#~ msgstr "-%C10-%C11-%O$t$1%O" + +#~ msgid "-%C10-%C11-%O$t%C12[%O$1%C12]%C $2" +#~ msgstr "-%C10-%C11-%O$t%C12[%O$1%C12]%C $2" + +#~ msgid "-%C10-%C11-%O$t%C12[%O$1%C12] %C$2" +#~ msgstr "-%C10-%C11-%O$t%C12[%O$1%C12] %C$2" + +#~ msgid "-%C10-%C11-%O$t%C12[%O$1%C12]%O idle %C11$2%O" +#~ msgstr "-%C10-%C11-%O$t%C12[%O$1%C12]%O inactiu %C11$2%O" + +#~ msgid "-%C10-%C11-%O$t%C12[%O$1%C12] %C14(%O$2@$3%C14) %O: $4%O" +#~ msgstr "-%C10-%C11-%O$t%C12[%O$1%C12] %C14(%O$2@$3%C14) %O: $4%O" + +#~ msgid "-%C10-%C11-%O$t%C12[%O$1%C12]%O $2" +#~ msgstr "-%C10-%C11-%O$t%C12[%O$1%C12]%O $2" + +#~ msgid "%C6<%O$1%C6>%O$t$2%O" +#~ msgstr "%C6<%O$1%C6>%O$t$2%O" + +#~ msgid "%s loaded successfully!\n" +#~ msgstr "S'ha carregat %s amb èxit\n" + +#~ msgid "Run XChat-GNOME in a terminal?" +#~ msgstr "Voleu executar XChat-GNOME en un terminal?" + +#~ msgid "Set it at TRUE if you want it activated" +#~ msgstr "Establiu-ho com a TRUE si ho voleu habilitar" + +#~ msgid "The handler for \"irc://\" URLs" +#~ msgstr "El gestor per a URLs del tipus «irc://»" + +#~ msgid "" +#~ "X-Chat GNOME is free software; you can redistribute it and/or modify it " +#~ "under the terms of the GNU General Public License as published by the " +#~ "Free Software Foundation; either version 2 of the License, or (at your " +#~ "option) any later version." +#~ msgstr "" +#~ "L'X-Chat GNOME és programari lliure; podeu redistribuir-lo i/o modificar-" +#~ "lo sota els termes de la Llicència Pública General GNU tal i com ha estat " +#~ "publicada per la Free Software Foundation; la sigui la versió 2 de la " +#~ "llicència o (si ho preferiu) qualsevol versió posterior. " + +#~ msgid "" +#~ "X-Chat GNOME 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 General " +#~ "Public License for more details." +#~ msgstr "" +#~ "L'X-Chat GNOME es distribueix amb l'expectativa que serà útil, però SENSE " +#~ "CAP GARANTIA; fins i tot sense la garantia implícita de COMERCIABILITAT o " +#~ "ADEQUACIÓ PER A UN PROPÒSIT PARTICULAR. Vegeu la Llicència Pública " +#~ "General GNU per a obtenir-ne més detalls." + +#~ msgid "" +#~ "You should have received a copy of the GNU General Public License along " +#~ "with X-Chat GNOME; if not, write to the Free Software Foundation, Inc., " +#~ "59 Temple Place, Suite 330, Boston, MA 02111-1307 USA" +#~ msgstr "" +#~ "Hauríeu d'haver rebut una còpia de la Llicència Pública General GNU " +#~ "juntament amb l'X-Chat GNOME; en cas contrari, escriviu a la Free " +#~ "Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA " +#~ "02111, USA." + +#~ msgid "Copyright © 2004-2006" +#~ msgstr "Copyright © 2004-2006" + +# broma dolenta (eac) +#~ msgid "" +#~ "It has been well observed that a trombone is not a suitable instrument " +#~ "for a gentleman" +#~ msgstr "L'home descendeix del mono i el mono descendeix de l'arbre" + +#~ msgid "XChat-GNOME Web Site" +#~ msgstr "Lloc web de l'XChat-GNOME" + +#~ msgid "translator-credits" +#~ msgstr "" +#~ "Softcatalà <info@softcatala.org>\n" +#~ "Yannick Garcia <ygp@tinet.fut.es>\n" +#~ "Antoni Bella Perez <bella5@teleline.es>\n" +#~ "Ernest Adrogué Calveras <eadrogue@gmx.net>\n" +#~ "David Planella Molas <david.planella@gmail.com>" + +#~ msgid "Automatically display the channel list dialog" +#~ msgstr "Mostra el diàleg amb la llista de canals de manera automàtica" + +#~ msgid "Background image filename" +#~ msgstr "Imatge de fons:" + +#~ msgid "Default nickname used by servers without special options set" +#~ msgstr "" +#~ "Sobrenom per defecte utilitzat pels servidors sense cap opció especial " +#~ "habilitada" + +#~ msgid "Default real name used by servers without special options set" +#~ msgstr "" +#~ "Nom real per defecte utilitzat pels servidors sense cap opció especial " +#~ "habilitada" + +# FIXME (dpm) Com es podria traduir «nickstamp»? +#~ msgid "Display redundant nickstamps" +#~ msgstr "Mostra els nickstamps redundants" + +#~ msgid "Font for the main window" +#~ msgstr "Tipus de lletra de la finestra principal" + +#~ msgid "Height of the channel list" +#~ msgstr "Alçada de la llista de canals" + +#~ msgid "Height of the main window" +#~ msgstr "Alçada de la finestra principal" + +#~ msgid "" +#~ "If set to true, when you join a server without automatically joining a " +#~ "channel, the channel list dialog will be displayed" +#~ msgstr "" +#~ "Si s'estableix a «true», en entrar a un servidor sense entrar " +#~ "automàticament a cap canal, es mostrarà el diàleg amb la llista de canals" + +#~ msgid "Languages to use for spellchecking" +#~ msgstr "Idiomes per als quals s'utilitzarà la comprovació ortogràfica" + +#~ msgid "List of enabled plugins" +#~ msgstr "Llista dels connectors habilitats" + +#~ msgid "Message sent on away" +#~ msgstr "Missatge que s'envia en commutar a absent" + +#~ msgid "Message sent on channel part" +#~ msgstr "Missatge que s'envia en sortir d'un canal" + +#~ msgid "Message sent on quit" +#~ msgstr "Missatge que s'envia en desconnectar-se" + +#~ msgid "Position of the horizontal pane in the main window" +#~ msgstr "Posició de la subfinestra horitzontal dins de la finestra principal" + +#~ msgid "Selected background type" +#~ msgstr "Tipus de fons seleccionat" + +#~ msgid "Show colors in the main window" +#~ msgstr "Mostra colors a la pantalla principal" + +#~ msgid "Show timestamps in the main window" +#~ msgstr "Mostra la marca horària a la finestra principal" + +#~ msgid "Width of the channel list" +#~ msgstr "Amplada de la llista de canals" + +#~ msgid "Width of the main window" +#~ msgstr "Amplada de la finestra principal" + +#~ msgid "X position of the main window on the screen" +#~ msgstr "Posició X de la finestra principal a la pantalla" + +#~ msgid "Y position of the main window on the screen" +#~ msgstr "Posició Y de la finestra principal a la pantalla" + +#~ msgid "xchat configuration version" +#~ msgstr "versió de la configuració de l'xchat" + +#~ msgid "_Copy Link Location" +#~ msgstr "_Copia l'adreça de l'enllaç" + +#~ msgid "Se_nd Message To..." +#~ msgstr "E_nvia el missatge a..." + +#~ msgid "_Send File" +#~ msgstr "_Envia un fitxer" + +#~ msgid "Paste File _Contents" +#~ msgstr "Enganxa el _contingut del fitxer" + +#~ msgid "Paste File_name" +#~ msgstr "Enganxa el _nom del fitxer" + +#~ msgid "" +#~ "URI list dropped on XChat-GNOME had wrong format (%d) or length (%d)\n" +#~ msgstr "" +#~ "La llista d'URIs deixada anar a l'XChat-GNOME té un format (%d) o " +#~ "llargada (%d) incorrectes\n" + +#~ msgid "Error reading file \"%s\": %s\n" +#~ msgstr "S'ha produït un error en llegir el fitxer «%s»: %s\n" + +#~ msgid "Error converting URI \"%s\" into filename: %s\n" +#~ msgstr "" +#~ "S'ha produït un error en convertir l'URI «%s» en un nom de fitxer: %s\n" + +#~ msgid "Error retrieving file information for \"%s\": %s\n" +#~ msgstr "S'ha produït un error en obtenir la informació del fitxer «%s»: %s\n" + +#~ msgid "Save Transcript" +#~ msgstr "Desa la transcripció" + +#~ msgid "Error saving %s" +#~ msgstr "S'ha produït un error en desar %s" + +#~ msgid "%" +#~ msgstr "%" + +#~ msgid "Remaining" +#~ msgstr "Restant" + +#~ msgid "Incoming File Transfer" +#~ msgstr "Transferència de fitxer d'entrada" + +#~ msgid "" +#~ "%s is attempting to send you a file named \"%s\". Do you wish to accept " +#~ "the transfer?" +#~ msgstr "%s vol enviar-vos el fitxer «%s». Voleu acceptar la transferència?" + +#~ msgid "" +#~ "<b>%s</b>\n" +#~ "<small>from %s</small>\n" +#~ "%s of %s" +#~ msgstr "" +#~ "<b>%s</b>\n" +#~ "<small>de %s</small>\n" +#~ "%s de %s" + +#~ msgid "starting" +#~ msgstr "s'està iniciant" + +#~ msgid "" +#~ "<b>%s</b>\n" +#~ "<small>from %s</small>\n" +#~ "%s of %s at %s/s" +#~ msgstr "" +#~ "<b>%s</b>\n" +#~ "<small>de %s</small>\n" +#~ "%s de %s a %s/s" + +#~ msgid "queued" +#~ msgstr "s'ha posat a la cua" + +#~ msgid "Transfer of %s to %s failed" +#~ msgstr "No s'ha pogut transferir %s a %s" + +#~ msgid "Transfer of %s from %s failed" +#~ msgstr "No s'ha pogut transferir %s a %s" + +#~ msgid "Transfer failed" +#~ msgstr "No s'ha pogut completar la transferència" + +#~ msgid "stalled" +#~ msgstr "s'ha encallat" + +#~ msgid "%.2d:%.2d:%.2d" +#~ msgstr "%.2d:%.2d:%.2d" + +#~ msgid "%.2d:%.2d" +#~ msgstr "%.2d:%.2d" + +#~ msgid "Use directory instead of the default config dir" +#~ msgstr "Utilitza aquest directori en comptes del directori per defecte" + +#~ msgid "Open an irc:// url" +#~ msgstr "Obre una url de tipus irc://" + +#~ msgid "" +#~ "xchat-gnome: %s\n" +#~ "Try `xchat-gnome --help' for more information\n" +#~ msgstr "" +#~ "xchat-gnome: %s\n" +#~ "Proveu `xchat-gnome --help' per a més informació\n" + +#~ msgid "Incoming DCC Chat" +#~ msgstr "Xat DCC d'entrada" + +#~ msgid "" +#~ "%s is attempting to create a direct chat. Do you wish to accept the " +#~ "connection?" +#~ msgstr "%s vol crear un xat directe. Voleu acceptar la connexió?" + +#~ msgid "Unable to show '%s'" +#~ msgstr "No s'ha pogut mostrar «%s»" + +#~ msgid "_Previous" +#~ msgstr "_Anterior" + +#~ msgid "_Next" +#~ msgstr "_Següent" + +#~ msgid "" +#~ "<span foreground=\"dark grey\">Reached end, continuing from top</span>" +#~ msgstr "" +#~ "<span foreground=\"dark grey\">S'ha arribat al capdavall, es continuarà " +#~ "des del capdamunt</span>" + +#~ msgid "" +#~ "<span foreground=\"dark grey\">Reached beginning, continuing from bottom</" +#~ "span>" +#~ msgstr "" +#~ "<span foreground=\"dark grey\">S'ha arribat al capdamunt, es continuarà " +#~ "des del capdavall</span>" + +#~ msgid "<span foreground=\"red\">Search string not found</span>" +#~ msgstr "<span foreground=\"red\">No s'ha trobat la cadena de cerca</span>" + +#~ msgid "%s Network Properties" +#~ msgstr "Propietats de la xarxa %s" + +#~ msgid "Invalid input" +#~ msgstr "Entrada incorrecta" + +#~ msgid "You must enter a network name" +#~ msgstr "Heu d'introduir un nom de xarxa" + +#~ msgid "You must enter a nick name" +#~ msgstr "Heu d'introduir un sobrenom" + +#~ msgid "You must enter a real name" +#~ msgstr "Heu d'introduir un nom real" + +#~ msgid "UTF-8 (Unicode)" +#~ msgstr "UTF-8 (Unicode)" + +#~ msgid "ISO-8859-15 (Western Europe)" +#~ msgstr "ISO-8859-15 (Europa occidental)" + +#~ msgid "ISO-8859-2 (Central Europe)" +#~ msgstr "ISO-8859-2 (Europa central)" + +#~ msgid "ISO-8859-7 (Greek)" +#~ msgstr "ISO-8859-7 (grec)" + +#~ msgid "ISO-8859-8 (Hebrew)" +#~ msgstr "ISO-8859-8 (hebreu)" + +#~ msgid "ISO-8859-9 (Turkish)" +#~ msgstr "ISO-8859-9 (turc)" + +#~ msgid "ISO-2022-JP (Japanese)" +#~ msgstr "ISO-2022-JP (japonès)" + +#~ msgid "SJIS (Japanese)" +#~ msgstr "SJIS (japonès)" + +#~ msgid "CP949 (Korean)" +#~ msgstr "CP949 (coreà)" + +#~ msgid "KOI8-R (Cyrillic)" +#~ msgstr "KOI8-R (ciríl·lic)" + +#~ msgid "CP1251 (Cyrillic)" +#~ msgstr "CP1251 (ciríl·lic)" + +#~ msgid "CP1256 (Arabic)" +#~ msgstr "CP1256 (àrab)" + +#~ msgid "CP1257 (Baltic)" +#~ msgstr "CP1257 (bàltic)" + +#~ msgid "GB18030 (Chinese)" +#~ msgstr "GB18030 (xinès)" + +#~ msgid "TIS-620 (Thai)" +#~ msgstr "TIS-620 (tailandès)" + +#~ msgid "In_sert" +#~ msgstr "In_sereix" + +#~ msgid "_Discussion" +#~ msgstr "_Conversa" + +#~ msgid "_Go" +#~ msgstr "_Vés a" + +#~ msgid "_Connect..." +#~ msgstr "_Connecta..." + +#~ msgid "Cu_t" +#~ msgstr "Re_talla" + +#~ msgid "_Save Transcript" +#~ msgstr "_Desa la transcripció" + +#~ msgid "_Leave" +#~ msgstr "_Surt" + +#~ msgid "Cl_ose" +#~ msgstr "_Tanca" + +#~ msgid "Change _Topic" +#~ msgstr "Canvia el _tema" + +#~ msgid "_Users" +#~ msgstr "_Usuaris" + +#~ msgid "Ex-Chat" +#~ msgstr "Xat" + +#~ msgid "Error showing help" +#~ msgstr "S'ha produït un error en mostrar l'ajuda" + +#~ msgid "" +#~ "The way the D-Bus plugin works has changed.\n" +#~ "To avoid problems, you should remove the old plugin file.\n" +#~ "\n" +#~ "<b>Please delete %s</b>" +#~ msgstr "" +#~ "El funcionament del connector del D-Bus ha canviat.\n" +#~ "És recomanable que suprimiu el fitxer del connector antic.\n" +#~ "\n" +#~ "<b>Si us plau, suprimiu %s</b>" + +#~ msgid "D-Bus plugin is still installed" +#~ msgstr "El connector del D-Bus encara està instal·lat" + +#~ msgid "Pre_vious Network" +#~ msgstr "Xarxa _anterior" + +#~ msgid "Nex_t Network" +#~ msgstr "Xarxa _següent" + +#~ msgid "_Previous Discussion" +#~ msgstr "Conversa a_nterior" + +#~ msgid "_Next Discussion" +#~ msgstr "Conversa s_egüent" + +#~ msgid "_Join" +#~ msgstr "_Entra-hi" + +#~ msgid "_Auto-join on connect" +#~ msgstr "_Entra-hi en connectar" + +#~ msgid "Black on White" +#~ msgstr "Negre sobre blanc" + +#~ msgid "White on Black" +#~ msgstr "Blanc sobre negre" + +#~ msgid "Custom" +#~ msgstr "Personalitzat" + +#~ msgid "System Theme Colors" +#~ msgstr "Colors del sistema" + +#~ msgid "File Transfers & DCC" +#~ msgstr "Transferències de fitxers" + +#~ msgid "Effects" +#~ msgstr "Efectes" + +#~ msgid "An error occurred unloading %s" +#~ msgstr "S'ha produït un error en descarregar %s" + +#~ msgid "Plugin Unload Failed" +#~ msgstr "S'ha produït un error en descarregar el connector" + +#~ msgid "Plugin Load Failed" +#~ msgstr "S'ha produït un error en carregar el connector" + +#~ msgid "Open Plugin" +#~ msgstr "Obre un connector" + +#~ msgid "Scripts and Plugins" +#~ msgstr "Scripts i connectors" + +#~ msgid "Enable" +#~ msgstr "Habilita" + +#~ msgid "Plugin" +#~ msgstr "Connector" + +#~ msgid "Error in language %s activation: %s\n" +#~ msgstr "S'ha produït un error en activar l'idioma %s: %s\n" + +#~ msgid "Error in spell checking configuration: %s\n" +#~ msgstr "" +#~ "S'ha produït un error en la configuració de la comprovació ortogràfica: %" +#~ "s\n" + +#~ msgid "" +#~ "In order to get spell-checking, you need to have libenchant installed " +#~ "with at least one dictionary." +#~ msgstr "" +#~ "Per a poder utilitzar la comprovació de l'ortografia heu de tenir la " +#~ "llibrerialibenchant instal·lada amb un diccionari com a mínim." + +#~ msgid "_Check spelling" +#~ msgstr "_Comprova l'ortografia" + +#~ msgid "Choose languages to use for spellcheck:" +#~ msgstr "Seleccioneu els idiomes per als quals es comprovarà l'ortografia:" + +#~ msgid "Language" +#~ msgstr "Idioma" + +#~ msgid "%s%.1fs lag" +#~ msgstr "%s%.1fs de retard" + +#~ msgid "Error in spellchecking configuration: %s\n" +#~ msgstr "" +#~ "S'ha produït un error a la configuració de la comprovació ortogràfica: %" +#~ "s\n" + +#~ msgid "Dark Blue" +#~ msgstr "Blau fosc" + +#~ msgid "Dark Green" +#~ msgstr "Verd fosc" + +#~ msgid "Brown" +#~ msgstr "Marró" + +#~ msgid "Purple" +#~ msgstr "Porpra" + +#~ msgid "Orange" +#~ msgstr "Taronja" + +#~ msgid "Yellow" +#~ msgstr "Groc" + +#~ msgid "Aqua" +#~ msgstr "Aigua marina" + +#~ msgid "Light Blue" +#~ msgstr "Blau clar" + +#~ msgid "Violet" +#~ msgstr "Violeta" + +#~ msgid "Grey" +#~ msgstr "Gris" + +#~ msgid "Light Grey" +#~ msgstr "Gris clar" + +#~ msgid "Changing topic for %s" +#~ msgstr "S'ha canviat el tema de %s" + +#~ msgid "_Send File..." +#~ msgstr "Envia un fitxer" + +#~ msgid "_Kick" +#~ msgstr "_Fes fora" + +#~ msgid "_Ban" +#~ msgstr "_Bandeja" + +# FIXME (dpm) Què fa op exactament? (menú contextual de la llista d'usuaris) +# Crec que habilita el mode d'operador per a l'usuari seleccionat. +#~ msgid "_Op" +#~ msgstr "Fes-lo _operador" + +#~ msgid "" +#~ "%s\n" +#~ "<span weight=\"bold\">Name:</span> %s" +#~ msgstr "" +#~ "%s\n" +#~ "<span weight=\"bold\">Nom:</span> %s" + +#~ msgid "" +#~ "%s\n" +#~ "<span weight=\"bold\">Country:</span> %s" +#~ msgstr "" +#~ "%s\n" +#~ "<span weight=\"bold\">País:</span> %s" + +#~ msgid "" +#~ "%s\n" +#~ "<span weight=\"bold\">Last message:</span> %d minute ago" +#~ msgid_plural "" +#~ "%s\n" +#~ "<span weight=\"bold\">Last message:</span> %d minutes ago" +#~ msgstr[0] "" +#~ "%s\n" +#~ "<span weight=\"bold\">Últim missatge:</span> fa %d minut" +#~ msgstr[1] "" +#~ "%s\n" +#~ "<span weight=\"bold\">Últim missatge:</span> fa %d minuts" + +#~ msgid "" +#~ "%s\n" +#~ "<span weight=\"bold\">Away message:</span> %s" +#~ msgstr "" +#~ "%s\n" +#~ "<span weight=\"bold\">Missatge d'absència:</span> %s" + +#~ msgid "%d User" +#~ msgid_plural "%d Users" +#~ msgstr[0] "%d usuari" +#~ msgstr[1] "%d usuaris" + +#~ msgid "_Information" +#~ msgstr "Informatiu" + +#~ msgid "_Connect" +#~ msgstr "Connecta" + +#~ msgid "Nick Name:" +#~ msgstr "Sobrenom:" + +#~ msgid "Orientation" +#~ msgstr "Argentina" + +#~ msgid "The orientation of the tray." +#~ msgstr "Sobrenom de la persona" + +#~ msgid "server" +#~ msgstr "Servidor" + +#~ msgid "id" +#~ msgstr "Cerca" + +#~ msgid "name" +#~ msgstr "Nom" + +#~ msgid "Failed to complete SetContext" +#~ msgstr "" +#~ "Error en obrir el tipus de lletra:\n" +#~ "\n" +#~ "%s" + +#~ msgid "Failed to complete print" +#~ msgstr "" +#~ "Error en obrir el tipus de lletra:\n" +#~ "\n" +#~ "%s" + +#~ msgid "Failed to complete GetInfo" +#~ msgstr "" +#~ "Error en obrir el tipus de lletra:\n" +#~ "\n" +#~ "%s" + +#~ msgid "Failed to complete GetPrefs" +#~ msgstr "" +#~ "Error en obrir el tipus de lletra:\n" +#~ "\n" +#~ "%s" + +#~ msgid "_Auto-join" +#~ msgstr "_Automàtic" diff --git a/xchat-2.8.8/po/cs.gmo b/xchat-2.8.8/po/cs.gmo new file mode 100644 index 0000000000000000000000000000000000000000..125885cba7381219f3a536b8088ae9297d6944e4 GIT binary patch literal 94322 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 VQL=KI=k}z$nlB)A6GuO4KAk@hvCXIj0 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 literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/po/cs.po b/xchat-2.8.8/po/cs.po new file mode 100644 index 0000000..df18350 --- /dev/null +++ b/xchat-2.8.8/po/cs.po @@ -0,0 +1,5844 @@ +# Translation of `xchat' messages to Czech. +# Copyright (C) 1999 Free Software Foundation, Inc. +# Jakub Moc <Jakub.Moc@volny.cz>, 1999. +# +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.8.4\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2007-06-26 11:42+0200\n" +"Last-Translator: Martin Šín <martin.sin@zshk.cz>\n" +"Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Nemohu vytvořit ~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Pracuji" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Odcházím" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* Spuštění IRC pod uživatelem root je hloupé! Měli byste si\n" +" vytvořit uživatelský účet a ten používat pro přihlášení.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Čekám" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Aktivní" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Selhalo" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Hotovo" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Připojit" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Zrušeno" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "Nemohu přistoupit k %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Chyba" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s nabízí \"%s\". Souhlasíte?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Žádné aktivní DCC\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "ANO " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "NE " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Jste zavalen CTCP od %s, ignoruji %s\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "Jste zavalen MSG od %s, nastavuji gui_auto_open_dialog na VYPNUTO.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s online\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s offline\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Nejste připojeni k žádnému kanálu. Zkuste /join #<channel>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Nepřipojeno. Zkuste /server <host> [<port>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Označen jako pryč: %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "Označen jako zpět.\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "Pro spuštění potřebuji /bin/sh !\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Dostupné příkazy:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Uživatelské příkazy:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Příkazy obsažené v pluginu:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Pro více informací zadejte /HELP <command>, nebo /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Ignorován neznámý argument '%s'." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "Nebyl nalezen žádný plugin.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Tento plugin se odmítá uvolnit z paměti.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <name> <action>, přidá tlačítko pod uživatelským seznamem." + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <cmd>, pošle příkaz na všechny kanály, na kterých jste" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHANL <cmd>, pošle příkaz na všechny kanály, na kterých jste" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <cmd>, pošle příkaz na všechny servery, na kterých jste" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<reason>], nastaví že jste pryč" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "BACK, vás nastaví zpět (přítomen)" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <mask> [<bantype>], zakáže každého, kdo odpovídá masce na aktuálním " +"kanálu. Pokud se již nacházíte na kanálu, nedojde k jeho vyhození (na to je " +"potřeba chanop)" + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <variable> [<value>]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "CLEAR [ALL|HISTORY], smaže aktuální textové okno nebo historii příkazů" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, zavře aktuální okno/kartu" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <code|wildcard>, nalezne kód země, např: cs = CR" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <nick> <zpráva>, pošle zprávu CTCP dané přezdívce, běžné zprávy jsou " +"VERSION a USERINFO" + +#: src/common/outbound.c:3516 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "" +"CYCLE [<channel>], odejde z aktuálního nebo zadaného kanálu a ihned se zas " +"připojí" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <nick> - přijme nabízený soubor\n" +"DCC SEND [-maxcps=#] <nick> [file] - pošle někomu soubor\n" +"DCC PSEND [-maxcps=#] <nick> [file] - pošle soubor pomocí pasivního módu\n" +"DCC LIST - zobrazí seznam DCC\n" +"DCC CHAT <nick> - nabídne někomu DCC CHAT\n" +"DCC PCHAT <nick> - nabídne DCC CHAT v pasivní režimu\n" +"DCC CLOSE <type> <nick> <file> příklad:\n" +" /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <nick>, odstraní právo chanhalf-op z přezdívky na aktuálním kanálu " +"(vyžaduje chanop)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <name>, smaže tlačítko pod uživatelským seznamem" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <nick>, odstraní právo chanop z přezdívky na aktuálním kanálu (vyžaduje " +"chanop)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <nick>, odstraní právo voice z přezdívky na aktuálním kanálu " +"(vyžaduje chanop)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, odpojí se od serveru" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <nick|host|ip>, nalezne uživatelovu IP adresu" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <text>, napíše text lokálně" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <command>, spustí příkaz. Je-li nastavena značka -o, bude výstup " +"zobrazen na aktuálním kanálu, jinak se vytiskne do aktuálního textového pole" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, pošle procesu SIGCONT" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], zabije spuštěný příkaz v současném sezení. Pokud předáte " +"procesu -9, bude proces SIGKILLed" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, pošle procesu signál SIGSTOP" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, pošle data z procesu na stdin" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, vymaže aktuální frontu zpráv serveru" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <host> [<port>], použije proxy hostitele, výchozí port je 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <nick> <password>, zabije ducha přezdívky" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <nick>, předá právo chanhalf-op přezdívce (vyžaduje chanop)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <password>, identifikuje vás pro nickserv" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <mask> <types..> <options..>\n" +" mask - maska hostitele, kterého chcete ignorovat, např: *!*@*.aol.com\n" +" types - typ igrnorování, jeden nebo všechny z:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <nick> [<channel>], pozve někoho na kanál, výchozí je aktuální " +"aktuální kanál (vyžaduje chanop)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <channel>, připojí se ke kanálu" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "KICK <nick>, vyhodí nick z aktuálního kanálu (vyžaduje chanop)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <nick>, vypoví a pak vyhodí nick z aktuálního kanálu (vyžaduje " +"chanop)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, vynutí novou kontrolu lagu" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <string>, hledá řetězec v bufferu" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <file>, nahraje plugin nebo skript" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, hromadný deop všech chanhalf-op v aktuálním kanálu (vyžaduje chanop)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, hromadný deop všech chanop v aktuálním kanálu (vyžaduje chanop)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <action>, pošle na aktuální kanál nějakou akci (akce jsou psány v třetí " +"osobě, např. /me jumps)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, hromadný vyhozov všech kromě vás aktuálním kanálu (vyžaduje chanop)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, hromadný op všech uživatelů na aktuálním kanálu (vyžaduje chanop)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <nick> <message>, pošle soukromou zprávu" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, zobrazí seznam přezdívek v aktuálním kanálu" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <nick> <message>, pošle poznámku CTCP" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <hostname> [<port>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <nickname>, nastaví váš nick" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <nick/channel> <message>, pošle poznámku. Poznámka je typ zprávy, na " +"kterou může být zpětně reagováno" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n network1[,network2,...]] [<nick>], zobrazí váš seznam upozornění " +"nebo tam někoho přidá" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <nick>, dá právo chanop určené přezdívce (vyžaduje chanop)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" +"PART [<channel>] [<reason>], opustí kanál, ve výchozím nastavení ten aktuální" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <nick | channel>, CTCP ping přezdívky nebo kanálu" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "QUERY [-nofocus] <nick>, otevře nové okno pro privmsg přezdívky" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<reason>], odpojí se od aktuálního serveru" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <text>, pošle text serveru" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Může být volán stejně jako /" +"RECONNECT pro nové připojení k aktuálnímu serveru nebo pomocí /RECONNECT ALL " +"pro připojení ke všem otevřeným serverům" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<host>] [<port>] [<password>], Může být volán stejně jako /" +"RECONNECT pro nové připojení k aktuálnímu serveru nebo pomocí /RECONNECT ALL " +"pro připojení ke všem otevřeným serverům" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <text>, pošle text xchatu, stejně jako by byl přijmut od serveru irc" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <text>, pošle text do aktuálního okna" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <nick> [<file>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <host> <port> <channel>, připojí se a vstoupí do kanálu" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <host> <port> <channel>, připojí se a vstoupí do kanálu" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <host> [<port>] [<password>], připojí se k serveru na výchozím " +"portu 6667 pro běžná připojení a portu 9999 pro připojení ssl" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <host> [<port>] [<password>], připojí se k serveru na výchozím portu " +"6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <variable> [<value>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<position>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "TOPIC [<topic>], nastaví téma kanálu, jinak ukáže aktuální téma" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Změní ikonu podle jmen souborů.\n" +"TRAY -f <filename> Nastaví ikonu na pevnou.\n" +"TRAY -i <number> Zabliká ikonou v daném intervalu.\n" +"TRAY -t <text> Nastaví tip ikony.\n" +"TRAY -b <title> <text> Nastaví kontextovou nápovědu ikony.." + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <mask> [<mask>...], povolí danou masku." + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <mask> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <name>, uvolní z paměti plugin nebo skript" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, otevře URL ve vašem prohlížeči" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <nick1> <nick2> atd, zvýrazní nick v uživatelském seznamu " +"kanálu" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <nick>, přidá právo hlasování někomu (vyžaduje chanop)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <message>, napíše zpráva všem na kanálu" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <message>, pošle zprávu všem chanop na aktuálním kanálu" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Použití: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"K přikazu není k dispozici žádná nápověda.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Takový příkaz neexistuje.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Špatné argumenty přikazu.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Příliš mnoho rekurzivních příkazů, ruším." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Neznámý příkaz. Zkuste /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "Žádný symbol xchat_plugin_init; jedná se určitě o plugin xchatu?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Jste si jistí, že server podporuje SSL a tento port?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Nemohu přeložit hostitele %s\n" +"Zkontrolujte vaše nastavení IP!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Překlad proxy selhal.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Zkouším další server v %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Čekám: symbol \"%s\" je neznámý. Pro síť %s nebude použita žádná konverze." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 přidán do seznamu oznámení" + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tNemohu připojit%C26 %B$1 %O(Byl jste vypovězen)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 je nyní znám jako $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 nastavil ban na $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tKanál $1 vytvořen na $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O odstranil práva half-operator z%C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O odstranil práva operator z%C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O odstranil hlas z%C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 osvobodil $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O dal právo half-operator%C26 $2" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 vás pozval na $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UKanál Uživatelé Téma" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 nastavil mód $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Kanál $1 módy: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O dal právo operator%C26 $2" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 zrušil osvobození na $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 zrušil pozvání na $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 zrušil klíčové slovo kanálu" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 zrušil limit uživatele" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 nastavil klíčové slovo kanálu na $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 nastavil limit kanálu na $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 zrušil ban na $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O dal hlas%C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Připojen. Přihlašuji se..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22Přihlašuji se k $1 ($2) port $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21Přihlášení selhalo. Chyba: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tObdržen CTCP $1 od $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tObdržen CTCP $1 od $2 (na $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tObdržel sondu CTCP $1 od $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tObdržel sondu CTCP $1 od $2 (na $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tDCC CHAT s %C26$1%O zrušen." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$tPřipojení DCC CHAT navázáno s %C26$1 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tDCC CHAT s %C26$1%O ztraceno ($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tPřijata nabídka DCC CHAT od $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tNabízí DCC CHAT $1" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tJiž nabízí CHAT $1" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$tPožadavek $1 na DCC připojení k%C26 $2%O selhal (err=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tPřišel '$1%O' od $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 Typ Do/Od Stav Velikost Poz Soubor " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O.%010%C22*%O" +"$tContents of packet: $2" +msgstr "%C22*%O$tPřišel zkomolený požadavek DCC od %C26$1%O.%010%C22*%O" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tNabízí%C26 $1%O k%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tTakový požadavek DCC neexistuje." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV%C26 $2%O k%C26 $1%O zrušen." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC RECV%C26 $1%O od%C26 $3%O hotovo %C30[%C26$4%O cps%C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tPřipojení DCC RECV vytvořeno s%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV%C26 $1%O od%C26 $3%O selhalo ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV: Nemohu otevřít $1 pro zápis ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "%C22*%O$tThe file%C26 $1%C již existuje, ukládám jako%C26 $2%O." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Opožádal o zopakování%C26 $2 %Cz%C26 $3%C." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC SEND%C26 $2%O s%C26 $1%O zrušen." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "%C22*%O$tDCC SEND%C26 $1%O s%C26 $2%O hotovo %C30[%C26$3%O cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tPřipojení DCC SEND vytvořeno s%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND%C26 $1%O s%C26 $2%O selhalo. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Onabídl%C26 $2 %O(%C26$3 %Obytů)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Os%C26 $3 %Czastaveno - ruším." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Os%C26 $3 %Ovypršelo - ruším." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 smazán ze seznamu upozornění." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tOdpojen ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tNalezena vaše IP: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O přidán do seznamu ignorovaných." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "Ignorování %C26$1%O změněno." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 Maska PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O odstraněn ze seznamu ignorovaných." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " Seznam ignorovaných je prázdný." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "%C22*%O$tNemohu se připojit%C26 %B$1 %O(Kanál je pouze pro zvané)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tByl jste pozván do%C26 $1%O od%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) přišel do $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$tNemohu se připojit%C26 %B$1 %O(Vyžaduje klíčové slovo)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 vykopl $2 z $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$tByl jste zabit $1 ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD přeskočena." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 se již používá. Zkouším s $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "%C22*%O$tPřezdívka se již používá. Použijte /NICK a zkuste jinou." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tTakový DCC neexistuje." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tŽádný proces v současné době neběží" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tSeznam upozornění je prázdný." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Seznam upozornění " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 uživatelů v seznamu upozornění." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tUpozornění: $1 je offline ($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tUpozornění: $1 je online ($3)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) opustil $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) opustil $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tOdpověď ping od $1: $2 sekund" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tŽádná odpověď na ping po $1 sekund, odpojuji." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tA proces již běží" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 odešel (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 nastavil módy%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tHledám IP adresu pro%C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22Připojen." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22Hledá $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tUkončen předchozí pokus o připojení (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29Téma pro $1%C %C29je: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 změnil téma na: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29Téma pro $1%C %C29nastavil $2%C %C29v $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tNeznámý počítač. Možná špatně napsán?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "" +"%C22*%O$tNemohu se připojit k%C26 %B$1 %O(Uživatelský limit překročen)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Uživatelů na $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cje pryč %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OKonec seznamu WHOIS." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O nečinnost%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O nečinnost%C26 $2%O, přihlášen:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %Ouživatel@počítač%C27 $2%O, IP adresa%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Nyní hovoříte na $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tByl jste vykopnut z $2 od $3 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tOpustil jste kanál $3" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tOpustil jste kanál $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tByl jste pozván%C26 $1%O na%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tJste znám jako $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "Načtený log z" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** KONČÍM ZÁZNAM V %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** ZAČÍNÁM ZÁZNAM V %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Nemohu otevřít soubor(y) se záznamem pro zápis.\n" +" Zkontrolujte oprávnění k %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Zpráva při ukončení" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Zpráva při ukončení" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "Přezdívka připojujícího se člověka" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "Připojil jste se ke kanálu" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "Osobní počítač" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Přezdívka" + +#: src/common/text.c:973 +msgid "The action" +msgstr "Akce" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Znak módu" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Textová identifikace" + +#: src/common/text.c:980 +msgid "The text" +msgstr "Text" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Zpráva" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Stará přezdívka" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Nová přezdívka" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Přezdívka osoby, která změnila téma" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Téma:" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Kanál" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "Přezdívka vyhazovače" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "Osoba bude vyhozena" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "Kanál" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "Důvod" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "Přezdívka odcházející osoby" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "Čas" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "Autor" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Nick" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Důvod" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Hostitel" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "Odkud je" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "Čas ve formátu x.x (podívejte se dále)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "Kanál k" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "Zvuk" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "Přezdívka osoby" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "Událost CTCP" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "Přezdívka osoby, která nastavila klíč" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "Klíč" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "Přezdívka osoby, která nastavila limit" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "Limit" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "Přezdívka osoby, která může op-ovat" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "Přezdívka osoby, která byla op-ována" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "Přezdívka osoby, která byla halfop-ována" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "Přezdívka osoby, která může halfop-ovat" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "Přezdívka osoby, o které bylo hlasováno" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "Přezdívka osoby, která byla hlasována" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "Přezdívka osoby, která byla vykázána" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "Maska banu" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "Přezdívka toho, kdo odstranil klíč" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "Přezdívka toho, kdo odstranil limit" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "Přezdívka toho, kdo dělá deop-ování" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "Přezdívka toho, kdo byl deop-ován" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "Přezdívka toho, kdo byl deop-ován" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Přezdívka toho, kdo byl dehalfop-ován" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "Přezdívka toho, kdo dělá hlasování" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "Přezdívka toho, kdo byl zbaven hlasování" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "Přezdívka toho, kdo může odbanovat" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "Přezdívka toho, kdo může osvobodit" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "Vyňatá maska" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "Přezdívka osoby, která odstranila výjimku" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "Přezdívka osoby, která provedla pozvání" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "Maska pro pozvání" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "Přezdívka osoby, která odstranila pozvání" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "Přezdívka osoby, která nastavuje mód" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "Znaménka módu (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "Znaky módu" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "Kanál na kterém to bude nastaveno" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Uživatelské jméno" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Celé jméno" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Příslušenství ke kanálu/\"je operátor IRC\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Informace o serveru" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Doba nečinnosti" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Čas přihlášení" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Důvod nepřítomnosti" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Zpráva" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Účet" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "Skutený uživatel@počítač" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "Skutečná IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Jméno kanálu" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Text" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Jméno serveru" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Přezdívka uživatele, který vás pozval" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Uživatelé" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Přezdívka se používá" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Přezdívka bude vyzkoušena" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Port" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Síť" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Módy" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "IP adresa" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "Typ DCC" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Jméno souboru" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Požadované jméno souboru" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Cesta" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Pozice" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Velikost" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "Řetězec DCC" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Počet položek k oznámení" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Původní název souboru" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Nový název souboru" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Přijímač" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Maska hostitele" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Hostitelský název" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "Balíček" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Sekund" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Přezdívka pozvaného uživatele" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Maska pro ban" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Kdo nastavil ban" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Trvání banu" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Chyba při analýze události %s.\n" +"Načítám výchozí nastavení." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"Nemůžu přečíst zvkukový soubor:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "Vzdálený počítač zavřel soket" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Připojení odmítnuto" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Není cesta k počítači" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Připojení vypršelo" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Nemohu přiřadit tuto adresu" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Připojení resetováno hostitelem" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Ostrov Nanebevstoupení" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Andora" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Spojené arabské emiráty" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Afgánistán" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Antigua a Barbuda" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Albánie" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Arménie" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Nizozemské Antily" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Antarktida" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Argentina" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "Reverzní DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Americká Samoa" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Rakousko" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Austrálie" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Alandské ostrovy" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Ázerbájdžán" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Bosna a Hercegovina" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Bangladéš" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Belgie" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Bulharsko" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Bahrain" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Businesses" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Bermudy" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Brunei Darussalam" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Bolívie" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Brazílie" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Bahamy" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Bhutan" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Bouvet Island" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Bělorusko" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Kanada" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Kokosové ostrovy" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "Demokratická republika Kongo" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "Středoafrická republika" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Kongo" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Švýcarsko" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Cote d'Ivoire" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Cook Islands" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Chile" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Kamerun" + +#: src/common/util.c:898 +msgid "China" +msgstr "Čína" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Kolombie" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Internic Commercial" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Srbsko a Černá hora" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Kuba" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Cape Verde" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Vánoční ostrov" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Kypr" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "Česká republika" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Německo" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Djibouti" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Dánsko" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Dominica" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "Dominkánská republika" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Algeria" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Ekvádor" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Vzdělávací instituce" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Estonsko" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Egypt" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Západní Sahara" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Španělsko" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Etiopie" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Evropská unie" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Finsko" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Fidži" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Falklandské ostrovy" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Mikronésie" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Faroe Islands" + +#: src/common/util.c:928 +msgid "France" +msgstr "Francie" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Velká Británie" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Gruzie" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Francouzská Guayana" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Britské satelitní ostrovy" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Ghana" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Grónsko" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Vláda" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Guadeloupe" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Rovníková Guinea" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Řecko" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "S. Georgia a S. Sandwich Isles" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Guinea-Bissau" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Guyana" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Heard a McDonald Islands" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Chorvatsko" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Maďarsko" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Indonésie" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Irsko" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Israel" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Isle of Man" + +#: src/common/util.c:959 +msgid "India" +msgstr "Indie" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Infromační" + +#: src/common/util.c:961 +msgid "International" +msgstr "Mezinárodní" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Britské teritorium Indického oceánu" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Irák" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Irán" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Island" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Itálie" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Jamajka" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Jordánsko" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Japonsko" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Keňa" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Kyrgyzstán" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Kambodža" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Comoros" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "St. Kitts and Nevis" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Severní Korea" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Jižní Korea" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Kuvajt" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Cayman Islands" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Kazachstán" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Libanon" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Saint Lucia" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Lichtenštejnsko" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Srí Lanka" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Libérie" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Litva" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Lucembursko" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Lotyšsko" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Libya" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Maroko" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Monako" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Moldávie" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "United States Medical" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Madagaskar" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Marshall Islands" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Vojenské" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Makedonie" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Mongolsko" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Macau" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Northern Mariana Islands" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Martinique" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Mauretánie" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Mauritius" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Maldivy" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Mexiko" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Malajsie" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Mozambik" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Namibie" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Nová Kaledonie" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Internic Network" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Norfolk Island" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Nigérie" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Holandsko" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Norsko" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Nepál" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Nový Zéland" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Omán" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Internic Non-Profit Organization" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Francouzská Polynésie" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Papua-Nová Guinea" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Filipíny" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Pákistán" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Polsko" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "St. Pierre and Miquelon" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Puerto Rico" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Palestinské teritorium" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Portugalsko" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Paraguay" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Qatar" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Sjednocení" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Rumunsko" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "Starý školní ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Ruská federace" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Rwanda" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Saudská arábie" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Šalamounovy ostrovy" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Seychelles" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Súdán" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Švédsko" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Singapur" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "St. Helena" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Slovinsko" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard and Jan Mayen Islands" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Slovenská republika" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Somálsko" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Surinam" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "Sao Tome and Principe" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Bývalé USSR" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "El Salvádor" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Sýrie" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Swaziland" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Turks and Caicos Islands" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Čad" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Francouzská jižní teritoria" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Thajsko" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Tajikistan" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Východní Timor" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Turkménistán" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Tunis" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Turecko" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Trinidad a Tobago" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Tanzánie" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Ukrajina" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Spojené Království" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "USA" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Uruguay" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Uzbekistán" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Městský stát Vatikán" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "St. Vincent and the Grenadines" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "British Virgin Islands" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "US Virgin Islands" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Wallis and Futuna Islands" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Yemen" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Jugoslávie" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Jižní Afrika" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Zambie" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Neznámé" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "Otevřít dialogové okno" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "Poslat soubor" + +#: src/common/xchat.c:728 +#, fuzzy +msgid "_User Info (WhoIs)" +msgstr "Informace o uživateli (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +#, fuzzy +msgid "O_perator Actions" +msgstr "Akce operátora" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Dát práva Op" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Vzít práva Op" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Dát hlas" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Vzít hlas" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Kick/Ban" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Kick" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Ban" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "KickBan" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Opustit kanál" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Vstoupit do kanálu..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Zadat kanál pro připojení:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Odkazy serveru" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Ping serveru" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Ukrýt verzi" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Op" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "hoj" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Zadat důvod vyhození %s:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Poslat soubor" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Dialog" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "KdoJe" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Poslat" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Chat" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Smazat" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "Nemohu se připojit k sezení" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "Chyba při vykonávání NameHasOwner" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "Chyba při vykonávání Command" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "vzdálený přístup" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "plugin pro vzdálený přístup používá DBUS" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Nemohu se připojit k sezení: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Chyba při získání %s: %s\n" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "_O programu" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Multiplatformní klient IRC" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Mapa znaků" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "Nepřipojen" + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Musíte vybrat nějký ban." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "Určitě chcete odstranit všechny bany na %s?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Maska" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "Z" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Datum" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Okno se seznamem banů otevřet pouze pokud se nacházíte na kanálu." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: Seznam Banů (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Odstranit" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Sbalit" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Aktualizovat" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "%d/%d uživatelů na %d/%d kanálech." + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Vyberte požadovaný název souboru" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "_Připojit se ke kanálu" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "_Zkopírovat jméno kanálu" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "Zkopíruje _téma kanálu" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: Seznam kanálu (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "_Vyhledávání" + +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "Seznam _stahování" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "_Uložit seznam..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "Pouze zobrazit:" + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "s kanály" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "do" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "uživatelů." + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "Podívat se:" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "Jméno kanálu" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "Typ hledání:" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "Jednoduché vyhledávání" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "Maska odpovídá (Wildcards)" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "Regulární výraz" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Najít:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Poslat soubor %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Nové odeslání souboru není možné." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"Nemohu přistoupit k souboru: %s\n" +"%s.\n" +"Nové poslání není možné." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"Stahovaný soubor je větší než se vejde na disk. Pokračování ve stahování " +"není možné." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "Nemohu pokračovat ve stahování souboru od dvou lidí." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: Upload a Download" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Stav" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Soubor" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Obě" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Upload" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "Download" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Detaily" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Soubor:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "Adresa:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Zrušit" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Přijmout" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Pokračovat" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Otevřít adresář" + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: Seznam DCC Chat" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Přijmuto" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Odesláno" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "Čas" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*NOVÉ*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "UPRAV MĚ" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "JMÉNO" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Příkaz" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Posun nahoru" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Posun dolů" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Zrušit" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Uložit" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Přidat nové" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Smazat" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Setřídit" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Nápověda" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "Nepřipojovat se automaticky k serverům" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "Použít jiný konfigurační adresář" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "Nenačítat automaticky žádné pluginy" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "Zobrazit adresář s automaticky načtenými pluginy" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "Zobrazit uživatelský konfigurační adresář" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Otevřít URL irc://server:port/channel" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Vykonat příkaz" + +#: src/fe-gtk/fe-gtk.c:132 +#, fuzzy +msgid "Open URL or execute command in an existing XChat" +msgstr "Otevře URL ve stávajícím XChatu" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Spustit minimalizované. Úroveň 0=Normální 1=Ikona 2=Oznamovací oblast" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "úroveň" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Zobrazit informace o verzi" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"Chyba při otvírání písma:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "Zjistit zda je buffer prázdný.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d bytů" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Po síti posláno: %d bytů" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"Příkaz Spusit spustí data v Data 1 tak, jako by byla zadána do vstupního " +"pole, tam kde jste stiskli klíčovou sekvenci. Z tohoto důvodu může obsahovat " +"text (který bude poslán na kanál nebo člověku), příkazy a uživatelské " +"příkazy. Jakmile to spustíte, všechny znaky \\n v Data 1 jsou použity pro " +"oddělení příkazů, takže je možné spustit více jak jeden příkaz. Pokud chcete " +"\\ v aktuálním textu, pak zadejte \\\\" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"Změna Stránky - příkazy pro přepínání mezi stránkami v záložkách. Nastavte " +"Data 1 na stránku na kterou se chcete přepnout. Pokud je Data 2 nastavena na " +"nějakou hodnotu, přepnutí bude relativní a bude se vztahovat k aktuální " +"pozici" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"Příkaz pro vkládání do bufferu - vloží obsah Data 1 do položky, kde byla " +"stisknuta klíčová sekvence. Vloží to na místo aktuální pozice kurzoru" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"Příkaz pro posun stránky - pohybuje textovým polem nahoru a dolů nebo po " +"řádku. Nastavte Data 1 buď na nahoru, dolů, +1 nebo -1." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"Příkaz nastavení bufferu - nastaví položku, kde byla zadána řídící sekvence " +"na obsah Data 1" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"Příkaz pro poslední příkaz nastaví položku na obsah posledního příkazu, " +"který jsme zadali. Toho docílíme stiskem klávesy nahoru v shellu." + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"Příkaz další nastaví položku na obsah dalšího příkazu, který jsme zadali. " +"Toho docílíme stiskem klávesy dolů v shellu" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Tento příkaz změní text a provede jeho kompletaci z původně neúplné " +"přezdívky nebo příkazu. Pokud jsou Data 1 nastavena, můžeme stisknout " +"Tabulátor a vybrat nick." + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Tento příkaz umožní pohyb nahoru a dolů v seznamu přezdívek. Pokud jsou Data " +"1na něco nastavena, bude se pohybovat nahoru, jinak to bude dolů" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Tento příkaz zkontroluje poslední zadané slovo ve vstupním poli proti " +"seznamu náhrad a nahradí ho, pokud najde odpovídající náhradu" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Tento příkaz přesune otevřenou záložku o jednu doleva" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Tento příkaz přesune otevřenou záložku o jednu doprava" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Tento příkaz přesune aktuální rodinu záložek doleva" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Tento příkaz přesune aktuální rodinu záložek doprava" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "Přesune vstupní řádek do historie, ale nepošle ho na server" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "Při načítání konfigurace klávesových zkratek došlo k chybě" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<žádný>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Mód" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Klíč" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Akce" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: Klávesové zkratky" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Data 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Data 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Chyba při načítání konfigurace kláves\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Chybný název klávesy %s v konfiguračním souboru\n" +"Načítání zrušeno, opravte prosím %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Neznámá akce %s kláves v konfiguračním souboru\n" +"Načítání zrušeno, opravte prosím %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Očekávám datový řádek (beginning Dx{:|!}) ale našel jsem:\n" +"%s\n" +"\n" +"Načítání zrušeno, opravte prosím %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"Konfigurační soubor s přiřazením kláves je poškozen, načítání zrušeno\n" +"Opravte prosím %s/keybindings\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "Nemohu do tohoto souboru zapisovat." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Nemohu z tohoto souboru číst." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Maska již existuje." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Důvěrné" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Poznámka" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Pozvat" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Zrušit ignoraci" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Zadejte masku pro ignorování:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: Seznam ignorovaných" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Stav ignorování:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Kanál:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Důvěrné:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Poznámka:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Pozvat:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "Přidat..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "Název kanálu je příliš krátký, zkuste to znovu." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: Dokončení připojení" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "Připojení k %s je hotovo." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"V okně se seznamem serverů, ne kanálů (místnost chat) bylo zadáno " +"automatické připojení k této síti." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "Přejete si provést další?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "_Ne, ke kanálu se připojím později." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "_Připojit se k tomuto kanálu:" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" +"Pokud víte jméno kanálu, kte kterému se chcete připojit, pak ho zde zadejte." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "O_tevřít seznam kanálů." + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "Získávám seznam kanálů, to může chvíli trvat." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "_Vždy zobrait tento dialog po požipojení." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Dialog k" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Téma pro %s je: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Žádné téma není nastaveno" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"Tento server má s tím asociováno %d kanálů nebo dialogů. Zavřít všechny?" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "Ukončit XChat?" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "Příště se neptat." + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Jste připojen k %i sítím IRC." + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "Určitě chcete skončit?" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "Některé přenosy souborů jsou stále aktivní." + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "_Schovat do ikony" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Vložit atributy nebo barvy" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Tučně</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Podtrženo</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Normální" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Barvy 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Barvy 8-15" + +#: src/fe-gtk/maingui.c:1612 +#, fuzzy +msgid "_Settings" +msgstr "Nas_tavení" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "Skrývat zprávy o připojení a odchodu" + +#: src/fe-gtk/maingui.c:1625 +#, fuzzy +msgid "_Extra Alerts" +msgstr "Upozornění" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "Zazvonit při zprávě" + +#: src/fe-gtk/maingui.c:1628 +#, fuzzy +msgid "Blink Tray _Icon" +msgstr "Zablikat oznamovací ikonou při:" + +#: src/fe-gtk/maingui.c:1629 +#, fuzzy +msgid "Blink Task _Bar" +msgstr "Zablikat pruhem úlohy při:" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +#, fuzzy +msgid "_Detach" +msgstr "_Odpojit Záložku" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "_Zavřít" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "Uživatelský limit musí být číslo!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Ochrana tématu" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Žádné zprávy zvenku" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Tajné" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Pouze pozvat" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Moderováno" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Seznam vypovězených" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Klíčové slovo" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Uživatelský limit" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Zobrazit/skrýt seznam uživatelů" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"Nemohu nastavit transparentní pozadí!\n" +"\n" +"Možná používáte nějaký netypický okenní\n" +"mazažer, který není v současné době podporován.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Zadejte novou přezdívku:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Počítač není znám" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Skutečné jméno:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Uživatel:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "Země:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Server:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "před %u minutami" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Poslední zpráva:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Zpráva pryč:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"Panel s menu je nyní skrytý. Můžete ho opět zobrazit pomocí stisku klávesy " +"F9 nebo kliknutím pravého tlačítka myši na prázdnou plochu hlavního " +"textového pole." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Otevřít odkaz v prohlížeči" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Kopírovat vybraný odkaz" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Připojit se ke kanálu" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Opustit kanál" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Otočit kanál" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "X-Chat: Uživatelské menu" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Upravit toto menu..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Získat seznam kanálů..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Uživatelské příkazy - Speciální kódy:\n" +"\n" +"%c = aktuální kanál\n" +"%e = jméno aktuální sítě\n" +"%m = informace o počítači\n" +"%n = váš nick\n" +"%t = čas/datum\n" +"%v = verze xchatu\n" +"%2 = slovo 2\n" +"%3 = slovo 3\n" +"&2 = slovo 2 do konce řádku\n" +"&3 = slovo 3 do konce řádku\n" +"\n" +"např:\n" +"/cmd honza ahoj\n" +"\n" +"%2 bude \"honza\"\n" +"&2 bude \"honza ahoj\"." + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Uživatelská tlačítka - Speciální kódy:\n" +"\n" +"%a = všechny vybrané přezdívky\n" +"%c = aktuální kanál\n" +"%e = jméno aktuální sítě\n" +"%h = vybrat hostitelský název přezdívky\n" +"%m = informace o počítači\n" +"%n = váš nick\n" +"%s = vybraný nick\n" +"%t = čas/datum\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Dialogová tlačítka - Speciální kódy:\n" +"\n" +"%a = všechny zvolené přezdívky\n" +"%c = aktuální kanál\n" +"%e = jméno aktuální sítě\n" +"%h = zvloený hostitelský název nicku\n" +"%m = informace o počítači\n" +"%n = váš nick\n" +"%s = zvolený nick\n" +"%t = čas/datum\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"Odpovědi CTCP - Speciální kódy:\n" +"\n" +"%d = data (kompletní ctcp)\n" +"%e = jméno aktuální sítě\n" +"%m = informace o počítači\n" +"%s = nick, který poslal ctcp\n" +"%t = čas/datum\n" +"%2 = slovo 2\n" +"%3 = slovo 3\n" +"&2 = slovo 2 do konce řádku\n" +"&3 = slovo 3 do konce řádku\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"Obsluhy URL - Speciální kódy:\n" +"\n" +"%s = řetězec URL\n" +"\n" +"Přidání ! na začátek příkazu symbolizuje,\n" +"že to chcete poslat shellu namísto\n" +"XChatu" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "X-Chat: Uživatelem definované příkazy" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: Menu se seznamem uživatelů" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Nahradit s" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "X-Chat: Nahrazení" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: Obsluhy URL" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: Tlačítka uživatelského seznamu" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: Dialogová tlačítka" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: Odpovědi CTCP" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "Se_znam sítí..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "_Nový" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Záložka serveru..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Záložka kanálu" + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Okno serveru..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Okno kanálu..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "_Nahrát plugin nebo skript..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "_Konec" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "Z_obrazit" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "Panel _menu" + +#: src/fe-gtk/menu.c:1592 +msgid "_Topic Bar" +msgstr "Panel _téma" + +#: src/fe-gtk/menu.c:1593 +msgid "_User List" +msgstr "Seznam _uživatelů" + +#: src/fe-gtk/menu.c:1594 +msgid "U_serlist Buttons" +msgstr "_Tlačítka seznamu uživatelů" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "T_lačítka módů" + +#: src/fe-gtk/menu.c:1597 +msgid "_Channel Switcher" +msgstr "_Přepínač kanálu" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "_Záložky" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "Stro_m" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "_Měření sítě" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Vypnuto" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Graf" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "_Server" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "_Odpojit" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "_Znovu připojit" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "Vstoupit do kanálu..." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "Vstoupit do kanálu..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Jsem pryč (AWAY)" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "_Uživatelské menu" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "Nas_tavení" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "_Předvolby" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Pokročilá nastavení" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Automaticky nahradit..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "CTCP odpovědi..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Dialogová tlačítka..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Klávesové zkratky..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Textové události..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "Obsluhy URL adres..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Uživatelské příkazy..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Tlačítka seznamu uživatelů..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Okna seznamu uživatelů..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_Okno" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Seznam banů..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Graf..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Přímý rozhovor..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Přenosy souboru..." + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "Seznam banů..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Seznam ignorovaných..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Pluginy a skripty..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Surový záznam..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "Lapač URL..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Resetovat označený řádek" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "_Smazat text" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Hledat text..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Uložit text..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_Nápověda" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "_Obsah" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "_O programu" + +#: src/fe-gtk/menu.c:2147 +#, fuzzy +msgid "_Attach" +msgstr "_Připojit okno" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Naposledy viděn" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Offline" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Nikdy" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "před %d minutami" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Online" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Zadejte přezdívku pro přidání:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "Oznámit na těchto sítích:" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "Čárkou oddělený seznam zvolených sítí." + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "XChat: Seznam poslaných souborů" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "Otevřít dialog" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" +"Nemohu nalézt 'notify-send' pro zobrazení upozornění.\n" +"Nainstalujte prosím libnotify." + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "XChat: Připojen k %u sítím a %u kanálům" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "_Obnovit" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "_Skrýt" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "_Zablikat při" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "Zpráva kanálu" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "Soukromá zpráva" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "Zvýrazněná zpráva" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "Away" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat: Zvýrazněná zpráva od: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat: %u zvýrazněných zpráv, poslední od: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat: Nová veřejná zpráva od: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat: %u nových veřejných zpráv." + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat: Soukromá zpráva od: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "XChat: %u soukromých zpráv, poslední od: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat: Nabídka souboru od: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "XChat: %u nabídnutých souborů, poslední od: %s (%s)" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Verze" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Popis" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Zvolit plugin nebo skript pro načtení" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: Pluginy a skripty" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "_Načíst..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "_Uvolnit" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Uložit jako..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: Rawlog (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Smazat rawlog" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "Okno, které jste otevřeli více neexistuje." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "Nebylo nic nalezeno." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: Vyhledávání" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "_Velikost písma" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "Hledat _zpětně" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "_Najít" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Nová síť" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "" +"Skutečně chcete odstranit síť \"%s\" a všechny servery, které obsahuje?" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "Kanál" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: Seznam kanálu (%s)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "Heslo:" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "_Editovat" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "Uživatelské jméno a skutečné jméno nemohou být prázdná políčka." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: Upravit %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Servery pro %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Připojit pouze k vybraným serverům" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Neopakovat znovu všechny servery, pokud selže připojení." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Vaše detaily" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Použít globální informace o uživateli" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "_Přezdívka:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Druhá volba:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "_Uživatelské jméno:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "_Skutečné jméno:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Připojuji" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Automaticky připojit ke zvolené síti při startu" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "Použít server proxy" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "Použít SSL pro všechny servery v této síti" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Přijmout neplatné certifikáty SSL" + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "Opuštění kanálu:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "Kanály, ke kterým se připojit, jsou odděleny čárkami, ne mezerami!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Příkaz po připojení:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Extra příkaz, který se provede po připojení. Pokud chcete zadat více jak " +"jeden příkaz, nastavte ho na LOAD -e <jmenosouboru>, kde <jmenosouboru> je " +"textový soubor s příkazy, které je potřeba vykonat." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Heslo pro nickserv:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Pokud váš nick vyžaduje heslo, zadejte ho zde. Tato možnost není podporována " +"všemi sítěmi IRC." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Heslo:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Heslo pro server, pokud si nejste jistí, nechte prázdné." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Znaková sada:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: Seznam sítí" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Uživatelské informace" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Třetí volba:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Sítě" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "Přeskočit seznam serverů při startu" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "_Editovat..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "_Setřídit" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" +"Seřadí seznam sítí podle abecedy. Pro posun použijte klávesy SHIFT-NAHORU a " +"SHIFT-DOLŮ." + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "_Připojení" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Vzhled textového pole" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Písmo:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Obrázek na pozadí:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Posuvníky:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Barevné přezdívky" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Přiřadí každému člověku na IRC jinou barvu" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Odsazovat přezdívky" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Zarovnávat přezdívky vpravo" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Transparentní pozadí" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Zobrazit dělící čáru" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Vloží červenou čáru za poslední řádek textu." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Nastavení průhlednosti" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Červená:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Zelená:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Modrá:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Časové značky" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Povolit časové značky" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Formát časových značek:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Pro další detaily se podívejte na manuálovou stránku strftime." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "Poslední řečené pořadí" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Vstupní pole" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Použít v textu písmo a barvy" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Kontrola pravopisu" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Dokončování přezdívky" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "Automatické dokončování přezdívky (bez klávesy TAB)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Přípona dokončení přezdívky:" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "Dokončování přezdívky setříděno:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Vstupní box s kódy" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Interpretuje %nnn jako hodnoty ASCII" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Interpretuje %C, %B jako barvu, tučně atd" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, Op je první" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-a, Op je poslední" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Netřídit" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "Levý (Horní)" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "Levý (Dolní)" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "Pravý (horní)" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "Pravý (Dolní)" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Nahoře" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Dole" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Skryté" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Seznam uživatelů" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Zobrazit hostitelské názvy v seznamu uživatelů" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Seznam uživatelů setříděný podle:" + +#: src/fe-gtk/setup.c:205 +msgid "Show user list at:" +msgstr "Zobrazit seznam uživatelů:" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Sledování away" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "Sleduje stav away (pryč) uživatelů a označuje je jinou barvou" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "Na kanálech menších jak:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Akce při dvojkliku" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Okna" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Záložky" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Vždy" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Pouze požadované záložky" + +#: src/fe-gtk/setup.c:242 +#, fuzzy +msgid "Tree" +msgstr "Stro_m" + +#: src/fe-gtk/setup.c:249 +#, fuzzy +msgid "Switcher type:" +msgstr "Typ hledání:" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Otevřít speciální záložku pro zprávy serveru" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Otevřít speciální záložku pro oznámení serveru" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "Otevřít novou záložku jakmile přijde soukromá zpráva" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Třídit záložky v abecedním pořadí" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "Malé záložky" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Zaměřit se na nové záložky:" + +#: src/fe-gtk/setup.c:258 +msgid "Show channel switcher at:" +msgstr "Zobrazit přepínač kanálu:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Zkrácené popisky záložek na:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "znaky." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Záložky nebo okna" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Otevřít kanály v:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Otevřít dialogy v:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Otevřít utility v:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Otevřít DCC, ignorace, oznámení, atd. v záložkách nebo oknech?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "Ne" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Yes" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "Projít vždy dialogem uložení" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Soubory a adresáře" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Automaticky přijmout nabídku souboru:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Stáhnout soubory do:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Přesunout kompletní soubory do:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Uložit přezdívku ve jméně souborů" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Nastavení sítě" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Vzít moji adresu ze serveru IRC" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Zeptat se IRC serveru na skutečnou adresu. Použít tuto pokud máte nějakou " +"192.168.*.*!" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "DCC IP adresa:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "V okamžiku nabízení souboru tvrdit, že máte tuto adresu." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "První port pro odesílání DCC:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Poslední port pro odesílání DCC:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!Nechat porty na nule pro nulové rozmezí." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Maximální rychlost přenosu souboru (bytů za sekundu)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Jeden upload:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Maximální rychlost jednoho přenosu" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Jeden download:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Kombinace všech uploadů:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Maximální rychlost pro všechny soubory" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Kombinace všech downloadů:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Upozornění" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "Zobrazit upozornění oznamovací ikony při:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "Zablikat oznamovací ikonou při:" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "Zablikat pruhem úlohy při:" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "Vydat zvuk při:" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "Povolit ikonu panelu nástrojů" + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "Zvýrazněné zprávy" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Zvýrazněné zprávy jsou ty, kde je zmíněna vaše přezdívka a také:" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "Další slova pro zvýraznění:" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "Přezdívky, které se nebudou zvýrazňovat:" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "Přezdívky, které se budou zvýrazňovat:" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Více slov oddělte pomocí čárek." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Výchozí zpráva" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Konec:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Opuštění kanálu:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Pryč" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Away" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Zasílat away (pryč) zprávy" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Zaslat away zprávu na kanál(y) k nimž jste připojeni" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Zobrazovat away jednou" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Zobrazit identické zprávy away pouze jednou" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Automaticky zrušit stav away" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Zrušit stav away před odesláním zprávy" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Rozšířená nastavení" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Zpoždění při opakovaném automatickém připojení:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Zobrazit módy v jejich podobě" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Whois při oznámení" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" +"Pošle /WHOIS jakmile přijde uživatel, který je na vašem seznamu upozornění" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Skrývat zprávy o připojení a odchodu" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Skryje zprávy kanálu o připojení/odchodu" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Automaticky otevřít okna DCC" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Poslat okno" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Obdržet okno" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Okno hovoru" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Přihlašování" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "Povolí ukládání hovoru" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Jméno logu:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Server %c=Kanál %n=Síť." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Přidat do logů časové značky" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Formát časových značek v logu:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Vypnuto)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Všechna připojení" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "Pouze servery IRC" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "Pouze Příjem DCC" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Vaše adresa" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Přiřadit k:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "Užitečné pouze v případě počítačů s více adresami." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Proxy server" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Jméno počítače:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Port:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Typ:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Použít proxy" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Autentikace Proxy" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Použít autentikaci (MS proxy, HTTP nebo Socks5 pouze)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Použít autentikaci (HTTP nebo Socks5 pouze)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Uživatelské jméno:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Heslo:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Zvolit soubor s obrázkem" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "Zvolit adresář pro stažení" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Výběr písma" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Procházet..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Označit idetifikované uživatele s:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Označit neidentifikované uživatele s:" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "Otevřít adresář s daty" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Výběr barvy" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Barvy textu" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "barvy mIRC" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Místní barvy:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Popředí:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Pozadí:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Text pro označení" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Barvy rozhraní" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Nová data:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Značící čára" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Nová zpráva:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Uživatel je pryč:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Zvýraznění:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Událost" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Soubor se zvukem" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Zvolit soubor se zvukem" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Metoda přehrávání zvuku:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "Externí _program pro přehrávání zvuku:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "_Externí program" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_Automaticky" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "Adresář pro zvuky:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Zvukový soubor:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "_Procházet..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "Př_ehrát" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Uživatelské rozhraní" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Textové pole" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Seznam uživatelů" + +#: src/fe-gtk/setup.c:1703 +msgid "Channel switcher" +msgstr "Přepínač kanálu" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Barvy" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Chatování" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Obecné" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Zvuky" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Nastavení sítě" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Přenosy souboru" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Kategorie" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" +"Strom není možné umístit nahoru nebo dospod!\n" +"Změňte prosím nejprve rozložení <b>Záložek</b> v nabídce <b>Zobrazit</b>." + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Některá z nastavení, která byla změněna, vyžadují restart aplikace." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*UPOZORNĚNÍ*\n" +"Automatické přijmutí DCC do vašeho domovského adresáře\n" +"může být nebezpečné a zneužitelné. Např.:\n" +"Někdo vám může poslat soubor .bash_profile" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: Nastavení" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Při zpracování textu došlo k chybě" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Tento signál obsahoval pouze %d argumenty, $%d je neplatné" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Tiskne textové soubory" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Editovat události" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ Počet" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Nahrát z..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Vyzkoušet všechny" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: Grabování URL" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Smazat seznam" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Kopírovat vybranou adresu URL" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Kopírovat" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Uložit seznam do souboru" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d op, %d celkem" + +#~ msgid "" +#~ "Set per channel options\n" +#~ "CHANOPT CONFMODE ON|OFF - Toggle conf mode/showing of join and part " +#~ "messages\n" +#~ "CHANOPT COLORPASTE ON|OFF - Toggle color paste\n" +#~ "CHANOPT BEEP ON|OFF - Toggle beep on message\n" +#~ "CHANOPT TRAY ON|OFF - Toggle tray blink on message" +#~ msgstr "" +#~ "Množina voleb kanálu\n" +#~ "CHANOPT CONFMODE ON|OFF - Zapne mód zobrazující připojení a částečné " +#~ "zprávy kanálu\n" +#~ "CHANOPT COLORPASTE ON|OFF - Zapne barvu\n" +#~ "CHANOPT BEEP ON|OFF - Zapne zvuk při zprávě\n" +#~ "CHANOPT TRAY ON|OFF - Zapne blikání při zprávě" + +#~ msgid "Direct client-to-client" +#~ msgstr "Přímo klient-klient" + +#~ msgid "Send File" +#~ msgstr "Poslat soubor" + +#~ msgid "Offer Chat" +#~ msgstr "Nabídnout hovor" + +#~ msgid "Abort Chat" +#~ msgstr "Zrušit hovor" + +#~ msgid "Userinfo" +#~ msgstr "Uživatelinfo" + +#~ msgid "Clientinfo" +#~ msgstr "Klientinfo" + +#~ msgid "Time" +#~ msgstr "Čas" + +#~ msgid "Finger" +#~ msgstr "Prst" + +#~ msgid "Oper" +#~ msgstr "Oper" + +#~ msgid "Kill this user" +#~ msgstr "Zabít tohoto uživatele" + +#~ msgid "Mode" +#~ msgstr "Mód" + +#~ msgid "Give Half-Ops" +#~ msgstr "Dát práva Half-Op" + +#~ msgid "Take Half-Ops" +#~ msgstr "Vzít Half-Op" + +#~ msgid "Ignore" +#~ msgstr "Ignorovat" + +#~ msgid "Ignore User" +#~ msgstr "Ignorovat uživatele" + +#~ msgid "UnIgnore User" +#~ msgstr "Zrušit ignoraci uživatele" + +#~ msgid "Info" +#~ msgstr "Informace" + +#~ msgid "Who" +#~ msgstr "Kdo" + +#~ msgid "DNS Lookup" +#~ msgstr "DNS Lookup" + +#~ msgid "Trace" +#~ msgstr "Trasa" + +#~ msgid "UserHost" +#~ msgstr "UserHost" + +#~ msgid "External" +#~ msgstr "Externí" + +#~ msgid "Traceroute" +#~ msgstr "Trasovat cestu" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "About XChat" +#~ msgstr "O XChatu" + +#~ msgid "Unban" +#~ msgstr "Odbanovat" + +#~ msgid "Blink tray on message" +#~ msgstr "Zablikat při zprávě" + +#~ msgid "Show join/part messages" +#~ msgstr "Zobrazit zprávu o příhlášní/odchodu" + +#~ msgid "Color paste" +#~ msgstr "Vkládání barev" + +#~ msgid "_Close Tab" +#~ msgstr "_Zavřít záložku" + +#~ msgid "Channel List..." +#~ msgstr "Seznam kanálů..." + +#~ msgid "Notify List..." +#~ msgstr "Seznam oznámení..." + +#~ msgid "_Close Window" +#~ msgstr "_Zavřít okno" + +#~ msgid "User" +#~ msgstr "Uživatel" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: Seznam upozornění" + +#~ msgid "C_hannels to join:" +#~ msgstr "_Připojit se ke kanálům:" + +#~ msgid "Channel Switcher" +#~ msgstr "Přepínač kanálu" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "Žádné další záložky nejsou otevřené, ukončit xchat." + +#~ msgid "_Layout" +#~ msgstr "_Rozložení" + +#~ msgid "Quit..." +#~ msgstr "Konec..." + +#~ msgid "Resizable user list" +#~ msgstr "Uživatelský seznam se změnou velikosti" + +#~ msgid "Left" +#~ msgstr "Vlevo" + +#~ msgid "Right" +#~ msgstr "Vpravo" + +#~ msgid "Show tabs at:" +#~ msgstr "Zobrazit záložky v:" + +#~ msgid "US Minor Outlying Islands" +#~ msgstr "US Minor Outlying Islands" + +#~ msgid "File Offer" +#~ msgstr "Nabídka souboru" + +#~ msgid "Flash taskbar on highlighted messages" +#~ msgstr "Zaměřit se na zvýrazněnou zprávu" + +#~ msgid "Flash taskbar on private messages" +#~ msgstr "Při soukromé zprávě zablikat v panelu úloh" + +#~ msgid "Beep on highlighted messages" +#~ msgstr "Zvuk při zvýrazněných zprávách" + +#~ msgid "Beep on private messages" +#~ msgstr "Zvuk při soukromé zprávě" + +#~ msgid "Beep on channel messages" +#~ msgstr "Zvuk při zprávě kanálu" + +#~ msgid "%s loaded successfully!\n" +#~ msgstr "%s úspěšně načten!\n" + +#~ msgid "I can't save an empty list!" +#~ msgstr "Nemohu uložit prázdný seznam!" + +#~ msgid "List display options:" +#~ msgstr "Možnosti zobrazení:" + +#~ msgid "Minimum Users:" +#~ msgstr "Minimum uživatelů:" + +#~ msgid "Maximum Users:" +#~ msgstr "Maximum uživatelů:" + +#~ msgid "Regex Match:" +#~ msgstr "Regex odpovídá:" + +#~ msgid "Apply Match to:" +#~ msgstr "Použít porovnání na:" + +#~ msgid "Apply" +#~ msgstr "Použít" + +#~ msgid "Refresh the list" +#~ msgstr "Aktualizovat seznam" + +#~ msgid "Save the list" +#~ msgstr "Uložit seznam" + +#~ msgid "None" +#~ msgstr "Žádný" + +#~ msgid "To" +#~ msgstr "Na" + +#~ msgid "Started" +#~ msgstr "Začal" + +#~ msgid "Speed limit" +#~ msgstr "Omezení rychlosti" + +#~ msgid "XChat: File Receive List" +#~ msgstr "XChat: Seznam přijmutých souborů" + +#~ msgid "Open" +#~ msgstr "Otevřít" + +#~ msgid "Ack" +#~ msgstr "Ack" + +#~ msgid "To/From" +#~ msgstr "Do/Z" + +#~ msgid "Go to" +#~ msgstr "Jít na" + +#~ msgid "(Can be a text file relative to ~/.xchat2/)." +#~ msgstr "(Může být textový soubor, relativně vzhledem k ~/.xchat2/)" + +#~ msgid "(Can be a text file relative to config dir)." +#~ msgstr "(Může být textový soubor, relativně ke konfiguračnímu adresáři)" + +#~ msgid "%C18*$t$1%O $2" +#~ msgstr "%C18*$t$1%O $2" + +#~ msgid "%C21*%O$t%C21%B$1%O%C21 $2" +#~ msgstr "%C21*%O$t%C21%B$1%O%C21 $2" + +#~ msgid "%C18%H<%H$4$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$4$1%H>%H%O$t$2" + +#~ msgid "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" +#~ msgstr "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" + +#~ msgid "%C28-%C29$1/$2%C28-%O$t$3" +#~ msgstr "%C28-%C29$1/$2%C28-%O$t$3" + +#~ msgid "$1$t$2" +#~ msgstr "$1$t$2" + +#~ msgid "%C19>%O$1%C19<%O$t$2" +#~ msgstr "%C19>%O$1%C19<%O$t$2" + +#~ msgid "%C16*%O$t$1%O" +#~ msgstr "%C16*%O$t$1%O" + +#~ msgid "%C28-%C29$1%C28-%O$t$2" +#~ msgstr "%C28-%C29$1%C28-%O$t$2" + +#~ msgid "%C28*%C29$3$1%C28*$t%O$2" +#~ msgstr "%C28*%C29$3$1%C28*$t%O$2" + +#~ msgid "%C18%H<%H$3$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$3$1%H>%H%O$t$2" + +#~ msgid "%C22*%O$t$1" +#~ msgstr "%C22*%O$t$1" + +#~ msgid "%C31%H<%H$4$1%H>%H%O%C30$t$2" +#~ msgstr "%C31%H<%H$4$1%H>%H%O%C30$t$2" + +#~ msgid "PID" +#~ msgstr "PID" + +#~ msgid "Server" +#~ msgstr "Server" + +#~ msgid "Open an irc:// url" +#~ msgstr "Otevřít url irc://" + +#~ msgid "irc://server:port/channel" +#~ msgstr "irc://server:port/kanál" + +#~ msgid "Execute a xchat command" +#~ msgstr "Vykonat příkaz xchatu" + +#~ msgid "\"Command to execute\"" +#~ msgstr "\"Příkaz pro vykonání\"" + +#~ msgid "Prints some text to the current tab/window" +#~ msgstr "Vytiskne nějaký text na aktuální záložku/okno" + +#~ msgid "\"Text to print\"" +#~ msgstr "\"Text pro vytištění\"" + +#~ msgid "Change the context to the channel" +#~ msgstr "Změnit kontext podle kanálu" + +#~ msgid "Change the context to the server" +#~ msgstr "Změnit kontext podle serveru" + +#~ msgid "server" +#~ msgstr "server" + +#~ msgid "Get some informations from xchat" +#~ msgstr "Získat nějaké informace z xchatu" + +#~ msgid "id" +#~ msgstr "id" + +#~ msgid "Get settings from xchat" +#~ msgstr "Získat nastavení z xchatu" + +#~ msgid "name" +#~ msgstr "jméno" + +#~ msgid "" +#~ "xchat-remote: %s\n" +#~ "Try `xchat-remote --help' for more information\n" +#~ msgstr "" +#~ "xchat-remote: %s\n" +#~ "Pro více informací zkuste 'xchat-remote --help'\n" + +#~ msgid "Failed to complete SetContext" +#~ msgstr "Chyba při nastavení SetContext" + +#~ msgid "Failed to complete print" +#~ msgstr "Chyba při tisku" + +#~ msgid "Failed to complete GetInfo" +#~ msgstr "Chyba při vykonání GetInfo" + +#~ msgid "Failed to complete GetPrefs" +#~ msgstr "Chyba při vykonání GetPrefs" + +#~ msgid "%s doesn't exist\n" +#~ msgstr "%s neexistuje\n" diff --git a/xchat-2.8.8/po/de.gmo b/xchat-2.8.8/po/de.gmo new file mode 100644 index 0000000000000000000000000000000000000000..735f1ed41d9e1e865b392c89aa6b331b23501314 GIT binary patch literal 94657 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 {CTI2Z61xVO;@Xhu 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 literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/po/de.po b/xchat-2.8.8/po/de.po new file mode 100644 index 0000000..d61d006 --- /dev/null +++ b/xchat-2.8.8/po/de.po @@ -0,0 +1,5685 @@ +# X-Chat german translation file +# Copyright (C) 2000, 2003 Free Software Foundation, Inc. +# Hauke Hagenhoff <Hauke.Hagenhoff@gmx.de>, 2003,2004. +# Karl Eichwalder <ke@gnu.franken.de>, 2003. +# Benedikt Roth <Benedikt.Roth@gmx.net>, 2000. +# Christian Meyer <linux@chrisim.de>, 2000. +# Matthias Warkus <mawa@iname.com>, 1999. +# Tamer Fahmy <e9526976@stud2.tuwien.ac.at>, 1999. +# +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.8.4\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2007-06-24 18:36+0100\n" +"Last-Translator: Hauke Hagenhoff <Hauke.Hagenhoff@gmx.de>\n" +"Language-Team: German <translation-team-de@lists.sourceforge.net>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Kann ~/.xchat2 nicht erzeugen" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Ich bin beschäftigt" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Verlassend" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* IRC als Root laufen zu lassen ist dumm! Du solltest\n" +" ein Benutzerkonto anlegen und dieses zum Einloggen verwenden.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Wartend" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Aktiv" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Gescheitert" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Erledigt" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Verbindung" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Abgebrochen" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "Kann nicht auf %s zugreifen\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Fehler" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s bietet \"%s\" an. Willst Du annehmen?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Keine aktiven DCCs\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "JA " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "NEIN " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "CTCP-Flut von %s, ignoriere %s\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "MSG-Flut von %s, deaktiviere automatische Dialoge.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s online\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s offline\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Kein Channel betreten. Versuche /join #<channel>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Nicht verbunden. Versuche /server <Host> [<Port>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Bereits als abwesend markiert: %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "Bereits als anwesend markiert.\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "/bin/sh wird benötigt!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Verfügbare Kommandos: " + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Benutzerdefinierte Kommandos:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Durch Plugins definierte Kommandos:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Gib /HELP <Kommando> für mehr Informationen ein, oder /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Unbekanntes Argument '%s' ignoriert." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "Kein solches Plugin gefunden.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Dieses Plugin kann nicht entladen werden.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "" +"ADDBUTTON <Name> <Aktion>, fügt einen Knopf unter der Benutzerliste hinzu" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "" +"ALLCHAN <Kommando>, sendet ein Kommando an alle Channels in denen Du bist" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "" +"ALLCHANL <Kommando>, sendet ein Kommando an alle Channels in denen Du bist" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "" +"ALLSERV <Kommando>, sendet ein Kommando an alle Server auf denen Du bist" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<Grund>], setzt Dich auf abwesend" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "BACK, setzt Dich auf anwesend (nicht \"abwesend\")" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <Maske> [<Banntyp>], bannt jeden mit der entsprechenden Maske aus dem " +"aktuellen Channel. Wenn diese bereits im Channel sind, werden sie nicht " +"gekickt (Erfordert Op-Status)" + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "" +"SET [-e] [-or] [-quiet] <Variable> [<Wert>], setzt eine Variable oder zeigt " +"ihren Wert" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "" +"CLEAR [ALL|HISTORY], Löscht das aktuelle Textfenster oder die " +"Kommandohistorie" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, Schließt das aktuelle Textfenster/Reiter" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" +"COUNTRY [-s] <Kode|Wildcard>, findet einen Länderkode, z.B.: de = " +"Bundesrepublik Deutschland" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <Nick> <Nachricht>, sendet die CTCP-Nachricht an den Nick, übliche " +"Nachrichten sind VERSION und USERINFO" + +#: src/common/outbound.c:3516 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "" +"CYCLE [<Channel>], verläßt den aktuellen oder angegebenen Channel und " +"betritt ihn direkt wieder" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <Nick> - akzeptiere eine angebotene Datei\n" +"DCC SEND [-maxcps=#] <Nick> [Datei] - Sendet eine Datei an jemanden\n" +"DCC PSEND [-maxcps=#] <Nick> [Datei] - Sendet eine Datei im passiven Modus " +"an jemanden\n" +"DCC LIST - zeigt die DCC-Liste\n" +"DCC CHAT <Nick> - bietet jemandem einen DCC-CHAT an\n" +"DCC PCHAT <Nick> - bietet jemandem einen DCC-CHAT im " +"passiven Modus an\n" +"DCC CLOSE <Typ> <Nick> <Datei> - Schließt einen DCC-Transfer\n" +" Beispiel: /dcc close send markus datei.zip" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <Nick>, entfernt den HalbOp-Status bei Nick im aktuellen Channel " +"(Erfordert Op-Status)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <Name>, entfernt einen Knopf unter der Benutzerliste" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <Nick>, entfernt den Op-Status bei Nick im aktuellen Channel (Erfordert " +"Op-Status)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <Nick>, entfernt den Voice-Status bei Nick im aktuellen Channel " +"(Erfordert Op-Status)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, Trennt die Server-Verbindung" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <Nick|Host|IP>, Findet die IP-Adresse eines Nutzers" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <Text>, Zeigt Text lokal an" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <Kommando>, führt das Kommando aus. Wenn -o angegeben wurde, wird " +"die Ausgabe in das aktuelle Fenster gesendet, ansonsten wird sie lokal " +"gezeigt" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, sendet das Signal SIGCONT" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], killt einen laufenden exec in der aktuellen Sitzung. Wenn -9 " +"angegeben wurde, wird der Prozess SIGKILLed" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, sendet dem Prozess das Signal SIGSTOP" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, sendet Daten an den stdin des Prozesses" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, löscht die Sendewarteschlange des aktuellen Servers" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <Host> [<Port>], verbindet durch einen Proxy, Standardport ist 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <Nick> <Passwort>, Trennt einen verwaisten Nick" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <Nick>, gibt Nick HalbOp-Status (Erfordert Op-Status)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <Passwort>, identifiziert Dich beim NickServ" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <Maske> <Typen> <Optionen>\n" +" Maske - Hostmaske, die zu ignorieren ist, z.B.: *!*@*.aol.com\n" +" Typen - Datentypen, die zu ignorieren sind, einer oder alle von:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" Optionen - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <Nick> [<Channel>], lädt jemanden in einen Channel ein, standardmäßig " +"den aktuellen (Erfordert Op-Status)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <Channel>, betritt einen Channel" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <Nick>, kickt den Nick aus dem aktuellen Channel (Erfordert Op-Status)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <Nick>, bannt den Nick und kickt dann den Nick aus dem aktuellen " +"Channel (Erfordert Op-Status)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, erzwingt eine neue Lag-Prüfung" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <Zeichenkette>, sucht im Puffer nach einer Zeichenkette" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <Datei>, lädt ein Plugin oder ein Skript" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, Nimmt allen HalbOps im aktuellen Channel den HalbOp-Status " +"(Erfordert Op-Status)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, Nimmt allen Ops im aktuellen Channel den Op-Status (Erfordert Op-" +"Status)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <Aktion>, sendet die Aktion in den aktuellen Channel (Aktionen werden in " +"der 3. Person geschrieben, wie /me springt)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, Kickt alle außer Dich im aktuellen Channel (Erfordert Op-Status)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, gibt allen Benutzern im aktuellen Channel Op (Erfordert Op-Status)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <Nick> <Nachricht>, sendet eine private Nachricht" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, Listet die Nicks im aktuellen Channel auf" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <Nick> <Nachricht>, Sendet eine CTCP-Notiz" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "" +"NEWSERVER [-noconnect] <Hostname> [<Port>], verbindet mit einem Server in " +"einem neuen Reiter" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <Nickname>, setzt Deinen Nick" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <Nick/Channel> <Nachricht>, sendet eine Notiz. Notizen sind " +"Nachrichten, auf die automatisch reagiert werden sollte" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n network1[,network2,...]] [<nick>], zeigt Deine " +"Benachrichtigungsliste oder fügt jemanden hinzu" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <Nick>, gibt Nick Op-Status (Erfordert Op-Status)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" +"PART [<Channel>] [<Grund>], verläßt den Channel, standardmäßig den aktuellen" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <Nick | Channel>, pingt den Nick oder Channel per CTCP an" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "QUERY [-nofocus] <nick>, öffnet ein neues Dialogfenster mit jemandem" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<Grund>], trennt XChat vom aktuellen Server" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <Text>, sendet den Text im Rohformat an den Server" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<Host>] [<Port>] [<Passwort>], Kann einfach als /RECONNECT " +"aufgerufen werden um sich mit dem aktuellen Server wiederzuverbinden, oder " +"als /RECONNECT ALL um sich mit allen aktiven Servern wiederzuverbinden" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<Host>] [<Port>] [<Passwort>], Kann einfach als /RECONNECT " +"aufgerufen werden um sich mit dem aktuellen Server wiederzuverbinden, oder " +"als /RECONNECT ALL um sich mit allen aktiven Servern wiederzuverbinden" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <Text>, sendet Rohdaten an XChat, als ob sie vom IRC-Server empfangen " +"wurden" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <Text>, sendet den Text ans Ziel im aktuellen Fenster" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <Nick> [<Datei>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <Host> <Port> <Channel>, verbindet und betritt einen Channel" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <Host> <Port> <Channel>, verbindet und betritt einen Channel" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <Host> [<Port>] [<Passwort>], verbindet mit einem Server, der " +"Standard-Port ist 6667 für normale Verbindungen und 9999 für SSL-Verbindungen" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <Host> [<Port>] [<Passwort>], verbindet mit einem Server, der " +"Standard-Port ist 6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "" +"SET [-e] [-or] [-quiet] <Variable> [<Wert>], setzt eine Variable oder zeigt " +"ihren Wert" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<Position>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<Thema>], setzt das Thema, wenn eins angegeben wurde, oder zeigt das " +"aktuelle" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" +"\n" +"TRAY -f <Zeitüberschreitung> <Datei1> [<Datei2>] Wechselt im " +"Benachrichtigungsbereich zwischen zwei Symbolen.\n" +"TRAY -f <Dateiname> Setzt Benachrichtigungssysmbol auf ein " +"festes Symbol.\n" +"TRAY -i <Nummer> Blnkt im Benachrichtigungsbereich mit " +"einem internen Symbol.\n" +"TRAY -t <Text> Setzt den Tooltip für den " +"Benachrichtigungsbereich.\n" +"TRAY -b <Titel> <Text> Setzt den Ballontext für den " +"Benachrichtigungsbereich." + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "" +"UNBAN <Maske> [<Maske>...], entfernt den Bann für eine spezielle Hostmaske" + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "" +"UNIGNORE <Maske> [QUIET], hört auf, die angegebene Hostmaske zu ignorieren" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <Name>, entfernt ein Plugin oder Skript" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, öffnet einen URL in Deinem Browser" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <Nick1> <Nick2> ... <Nickn>, markiert Nick(s) in der " +"Channel-Benutzerliste" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <Nick>, gibt jemandem Voice-Status (Erfordert Op-Status)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <Nachricht>, schreibt eine Nachricht in alle Channels" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <Nachricht>, sendet eine Nachricht an alle Ops im aktuellen Channel" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Benutzung: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"Keine Hilfe für dieses Kommando verfügbar.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Kein solches Kommando.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Ungültige Argumente für das Benutzerkommando.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Zu viele rekursive Benutzerkommandos - Abbruch." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Unbekanntes Kommando. Versuche /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "Kein xchat_plugin_init Symbol; ist dies wirklich ein XChat-Plugin?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Bist Du sicher, daß dies ein SSL-fähiger Server und Port ist?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Kann Hostname %s nicht auflösen\n" +"Prüfe Deine IP-Einstellungen!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Durchlaufen der Proxies gescheitert.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Springe zum nächsten Server in %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Warnung: Zeichensatz \"%s\" ist unbekannt. Es wird keine Konvertierung für " +"Netzwerk %s vorgenommen." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 zur Benachrichtigungsliste hinzugefügt." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Bannliste:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tKann%C26 %B$1%O$t nicht betreten %O(Du bist gebannt)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 ist jetzt bekannt als $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 setzt einen Bann auf $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tChannel $1 erzeugt am $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O entfernt Halb-Op-Status bei%C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O entfernt Op-Status bei%C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O entfernt Voice-Status bei%C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 setzt Ausnahme auf $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O gibt Halb-Op-Status an%C26 $2" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 setzt Einladung für $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UChannel Nutzer Thema%O" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 setzt Modus $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Channel $1 Modi: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O gibt Op-Status an%C26 $2" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 entfernt Ausnahme von $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 entfernt Einladung für $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 entfernt das Channel-Schlüsselwort" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 entfernt die Benutzerobergrenze" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 setzt das Channel-Schlüsselwort auf $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 setzt die Benutzerobergrenze auf $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 entfernt den Bann auf $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O gibt Voice-Status an%C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Verbunden. Anmeldevorgang läuft..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22Verbinde mit $1 ($2) Port $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21Verbindung gescheitert. Fehler: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tCTCP $1 von $2 empfangen" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tCTCP $1 von $2 empfangen (An $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tCTCP-Sound $1 von $2 empfangen" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tCTCP Sound $1 empfangen von $2 (an $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tDCC CHAT mit %C26$1%O abgebrochen." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC-CHAT-Verbindung mit %C26$1 %C30[%O$2%C30]%O aufgebaut%O" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tDCC CHAT mit %C26$1%O verloren. ($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tDCC-CHAT-Angebot von $1 empfangen" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tDCC-CHAT an $1 angeboten" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tBiete $1 bereits einen DCC-CHAT an" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$tDCC $1 Verbindung mit%C26 $2%O gescheitert (Fehler=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$t '$1%O' von $2 empfangen" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 Typ Zu/Von Status Größe Pos Datei" + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O.%010%C22*%O" +"$tContents of packet: $2" +msgstr "" +"%C22*%O$tFehlformatierte DCC Anforderung von %C26$1%O.%010%C22*%O$tInhalt " +"des Pakets: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tBiete%C26 $2%O %C26 $1 %O$tan" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tKein solches DCC-Angebot." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV%C26 $2%O von%C26 $1%O abgebrochen." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC RECV%C26 $1%O von%C26 $3%O vollständig %C30[%C26$4%O cps%C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC RECV Verbindung aufgebaut mit%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV%C26 $1%O von%C26 $3%O gescheitert. ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV: Kann $1 nicht schreiben ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "" +"%C22*%O$tDie Datei%C26 $1%C existiert bereits, speichere stattdessen als%C26 " +"$2%O." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "" +"%C22*%O$t%C26$1 %Ohat angefordert,%C26 $2 %Cvon%C26 $3%C an fortzusetzen." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC SEND%C26 $2%O an%C26 $1%O abgebrochen." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC SEND%C26 $1%O an%C26 $2%O vollständig %C30[%C26$3%O cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC SEND Verbindung aufgebaut mit%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND%C26 $1%O an%C26 $2%O gescheitert. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Ohat uns%C26 $2 %Oangeboten (%C26$3 %Obytes)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oan%C26 $3 %Chängt - Abbruch." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oan%C26 $3%O: Zeitüberschreitung - Abbruch." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 von der Benachrichtigungsliste gelöscht." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tGetrennt ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tHabe Deine IP gefunden: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O wird jetzt ignoriert." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "Ignorierung von %C26$1%O geändert." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 Hostmaske DIAL NOTI CHAN CTCP DCC EINL UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O wird nicht mehr ignoriert." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " Niemand wird ignoriert." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "" +"%C22*%O$tKann%C26 %B$1 %O$tnicht betreten %O(Channel ist nur auf Einladung " +"zu betreten)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tDu wurdest von%C26 $2%C nach %C26 $1%O eingeladen (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) hat $2 betreten" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$tKann%C26 %B$1 %Onicht betreten (Erfordert ein Schlüsselwort)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 hat $2 aus $3 gekickt ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$tDu bist von $1 gekillt worden ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD übersprungen." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 bereits in Benutzung. Erneuter Versuch mit $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$tNickname bereits in Benutzung, benutze /NICK um einen anderen zu " +"probieren." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tKein solcher DCC." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tKein solcher Prozess läuft derzeit" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tDie Benachrichtigungsliste ist leer." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Benachrichtigungsliste " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 Nutzer in der Benachrichtigungsliste." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tBenachrichtigung: $1 ist offline ($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tBenachrichtigung: $1 ist online ($3)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) hat $3 verlassen" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) hat $3 verlassen (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tPing-Antwort von $1: $2 Sekunde(n)" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tKeine Ping-Antwort seit $1 Sekunden, trenne." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tEin Prozess läuft bereits" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 hat die Verbindung getrennt (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 setzt die Modi%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tSuche nach IP-Nummer für%C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22Verbunden." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22Suche nach $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tVorhergehender Verbindungsversuch (PID=$1) abgebrochen" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29Das Thema für $1%C %C29ist: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 hat das Thema geändert zu: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29Das Thema für $1%C %C29wurde gesetzt durch $2%C %C29um $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tUnbekannter Host. Vielleicht hast Du ihn falsch geschrieben?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "%C22*%O$tKann%C26 %B$1 %Onicht betreten (Benutzerobergrenze erreicht)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Benutzer in $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cist abwesend %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OEnde der WHOIS-Liste." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O untätig%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O untätig%C26 $2%O, Online seit:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %Owahrer Nutzer@Host%C27 $2%O, wahre IP%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Du sprichst jetzt in $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tDu wurdest durch $3 aus $2 gekickt ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tDu hast Channel $3 verlassen" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tDu hast Channel $3 verlassen (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tDu hast %C26 $1%O nach%C26 $2%O$t eingeladen %O(%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tDu bist jetzt bekannt als $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "Logbuch geladen von" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** BEENDE LOGBUCH UM %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** BEGINNE LOGBUCH UM %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Kann Logbuchdatei(en) nicht zum Schreiben öffnen. Prüfe\n" +" die Berechtigungen von %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Linke Nachricht" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Rechte Nachricht" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "Der Nick der Person, die den Channel betritt" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "Der Channel, der betreten wird" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "Die Hostmask der Person" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Nickname" + +#: src/common/text.c:973 +msgid "The action" +msgstr "Die Aktion" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Moduszeichen" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Identifierter Text" + +#: src/common/text.c:980 +msgid "The text" +msgstr "Der Text" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Die Nachricht" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Alter Nickname" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Neuer Nickname" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Nick der Person, die das Thema geändert hat" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Thema" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Channel" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "Der Nickname des Kickenden" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "Die Person, die gekickt wird" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "Der Channel" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "Der Grund" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "Der Nick der Person, die den Channel verläßt" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "Die Zeit" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "Der Erzeuger" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Nick" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Grund" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Host" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "Von wem es ist" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "Die Zeit im x.x-Format (siehe unten)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "Der Channel an den es geht" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "Der Klang" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "Der Nick der Person" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "Das CTCP-Ereignis" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "Der Nick der Person, die den Schlüssel gesetzt hat" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "Der Schlüssel" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "Der Nick der Person, die das Limit gesetzt hat" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "Das Limit" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "Der Nick der Person, die Op-Status erteilte" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "Der Nick der Person, die Op-Status erhielt" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "Der Nick der Person, die HalfOp-Status erhielt" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "Der Nick der Person, die HalfOp-Status erteilte" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "Der Nick der Person, die Voice erteilte" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "Der Nick der Person, die Voice erhielt" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "Der Nick der Person, die bannte" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "Die Bannmaske" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "Der Nick, der den Schlüssel entfernte" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "Der Nick, der das Limit entfernte" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "Der Nick der Person, die Op nahm" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "Der Nick der Person, die Op abgenommen bekam" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "Der Nick der Person, die HalfOp nahm" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Der Nick der Person, die HalfOp abgenommen bekam" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "Der Nick der Person, die Voice nahm" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "Der Nick der Person, die Voice abgenommen bekam" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "Der Nick der Person, die den Bann entfernte" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "Der Nick der Person, die die Ausnahme setzte" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "Die Ausnahme-Maske" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "Der Nick der Person, die die Ausnahme entfernte" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "Der Nick der Person, die die Einladung aussprach" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "Die Einladungs-Maske" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "Der Nick der Person, die die Einladung zurücknahm" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "Der Nick der Person, die den Modus setzte" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "Die Moduszeichen (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "Der Modusbuchstabe" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "Der Channel, der eingestellt wird" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Benutzername" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Voller Name" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Channelinformation/\"ist ein IRC-Operator\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Server-Information" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Untätig" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Zeitpunkt der Einwahl" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Abwesenheitsgrund" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Nachricht" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Konto" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "Echter Benutzer@Host" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "Echte IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Channel-Name" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Text" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Server-Name" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Nick der Person, die Dich einlud" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Benutzer" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Nickname in Benutzung" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Nick wird versucht" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Port" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Netzwerk" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Modusfolge" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "IP-Adresse" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "DCC-Typ" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Dateiname" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Zieldateiname" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Pfadname" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Position" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Größe" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "DCC Zeichenfolge" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Anzahl der Notify-Einträge" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Alter Dateiname" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Neuer Dateiname" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Empfänger" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Hostmaske" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Hostname" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "Das Paket" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Sekunden" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Nick der Person, die eingeladen wurde" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Bann-Maske" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Wer setzte den Bann" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Bannzeit" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Fehler beim Abarbeiten von Ereignis %s.\n" +"Lade Standard" + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"Kann diese Sounddatei nicht lesen:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "Gegenseite hat den Socket geschlossen" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Verbindung verweigert" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Keine Route zum Host" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Verbindung wegen Zeitüberschreitung geschlossen" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Kann diese Adresse nicht zuteilen" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Verbindung von der Gegenseite zurückgesetzt" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Himmelfahrtsinsel" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Vereinigte Arabische Emirate" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Afghanistan" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Antigua und Barbuda" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Albanien" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Armenien" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Niederländische Antillen" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Antarktis" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Argentinien" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "Reverse DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Amerikanisch Samoa" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Österreich" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "NATO" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Australien" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Åland-Inseln" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Aserbaidschan" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Bosnien und Herzegowina" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Bangladesch" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Belgien" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Bulgarien" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Bahrain" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Geschäftsdomain" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Brunei Darussalam" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Bolivien" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Brasilien" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Bahamas" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Bhutan" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Bouvet-Insel" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Botsuana" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Belarus (Weißrussland)" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Kanada" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Kokos-Inseln" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "Demokratische Republik Kongo" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "Zentralafrikanische Republik" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Kongo" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Schweiz" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Côte d'Ivoire" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Cook-Inseln" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Chile" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Kamerun" + +#: src/common/util.c:898 +msgid "China" +msgstr "China" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Kolumbien" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Internic geschäftlich" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Serbien und Montenegro" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Kuba" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Kap Verde" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Weihnachtsinsel" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Zypern" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "Tschechische Republik" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Bundesrepublik Deutschland" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Dschibuti" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Dänemark" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Dominica" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "Dominikanische Republik" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Algerien" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Ecuador" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Bildungseinrichtung" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Estland" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Arabische Republik Ägypten" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Westliche Sahara" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Spanien" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Äthiopien" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Europäische Union" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Finnland" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Fidschi" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Falkland-Inseln" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Mikronesien" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Färör-Inseln" + +#: src/common/util.c:928 +msgid "France" +msgstr "Frankreich" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Gabun" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Großbritannien" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Georgien" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Französisch Guyana" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Britische Kanalinseln" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Ghana" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Grönland" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Amerikanische Regierung" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Guadeloupe" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Äquatorial-Guinea" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Griechenland" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "S. Georgia- und S. Sandwich-Inseln" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Guinea-Bissau" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Guyana" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Heard- und McDonald-Inseln" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Kroatien" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Ungarn" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Indonesien" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Irland" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Israel" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Isle of Man" + +#: src/common/util.c:959 +msgid "India" +msgstr "Indien" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Informative Domain" + +#: src/common/util.c:961 +msgid "International" +msgstr "International" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Britische Gebiete im indischen Ozean" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Irak" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Iran" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Island" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Italien" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Jamaika" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Jordanien" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Japan" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Kenia" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Kirgisistan" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Kambodscha" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Komoren" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "St. Kitts und Nevis" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Nordkorea" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Südkorea" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Kuwait" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Cayman-Inseln" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Kasachstan" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Libanon" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Saint Lucia" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Liberia" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Litauen" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Luxemburg" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Lettland" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Libyen" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Marokko" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Monaco" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Moldawien" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "Vereinigte Staaten medizinisch" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Madagaskar" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Marshallinseln" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Militärisch" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Mazedonien" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Mongolei" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Macau" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Nördliche Mariana-Inseln" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Martinique" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Mauretanien" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Mauritius" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Malediven" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Mexiko" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Malaysia" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Mosambik" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Namibia" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Neu Kaledonien" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Internic Netzwerk" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Norfolk-Insel" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Nigeria" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Niederlande" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Norwegen" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Neuseeland" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Internic Non-Profit-Organisation" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Französisch Polynesien" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Papua-Neuguinea" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Philippinen" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Polen" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "St. Pierre und Miquelon" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Puerto Rico" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Palästinensergebiete" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Portugal" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Paraguay" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Katar" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Reunion" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Rumänien" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "Old School ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Russische Föderation" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Ruanda" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Saudi-Arabien" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Solomon-Inseln" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Seychellen" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Sudan" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Schweden" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Singapur" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "St. Helena" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Slowenien" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard- und Jan Mayen-Inseln" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Slowakische Republik" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Somalia" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Suriname" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "São Tomé und Príncipe" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Frühere UdSSR" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Syrien" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Swasiland" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Turks und Caicoc Inseln" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Tschad" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Südliche französische Gebiete" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Thailand" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Tadschikistan" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Ost-Timor" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Tunesien" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Türkei" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Trinidad und Tobago" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Tansania" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Ukraine" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Vereinigtes Königreich" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "Vereinigte Staaten von Amerika" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Uruguay" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Usbekistan" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Vatikanstadt" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "St. Vincent und die Grenadinen" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Britische Jungferninseln" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "Amerikanische Jungferninseln" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Wallis- und Futuna-Inseln" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Jemen" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Jugoslawien" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Südafrika" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Sambia" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Simbabwe" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Unbekannt" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "Dialogfenster öffnen" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "Sende eine Datei" + +#: src/common/xchat.c:728 +#, fuzzy +msgid "_User Info (WhoIs)" +msgstr "Benutzerinformationen (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +#, fuzzy +msgid "O_perator Actions" +msgstr "Bedieneraktionen" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Op geben" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Op nehmen" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Voice geben" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Voice nehmen" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Kicken/Bannen" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Kicken" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Bannen" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "KickBannen" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Channel verlassen" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Betrete Channel..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Zu betretender Channel:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Serververbindungen" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Server anpingen" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Version verstecken" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Op" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "bye" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Kickgrund für %s eingeben:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Dateiversand" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Dialog" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Sende" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Chat" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Lösche" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "Konnte nicht zur Sitzungs-Busschnittstelle verbinden" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "Konnte NamehatBesitzer nicht abschließen" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "Konnte Kommando nicht abschließen" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "Fernzugriff" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "Plugin für den Fernzugriff mittels DBUS" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Konnte nicht zur Sitzungs-Busschnittstelle verbinden: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Ermittlung von %s scheiterte: %s\n" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "Ü_ber" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Ein portabler IRC-Client" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Zeichentabelle" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "Nicht verbunden." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Du mußt Bans auswählen" + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "Bist Du sicher, daß Du alle Bans in %s entfernen willst?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Maske" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "Von" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Datum" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" +"Du kannst die Bannliste nur öffnen, während Du in einem Channel-Reiter bist." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: Bannliste (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Entfernen" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Abschneiden" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Aktualisieren" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Zeige %d/%d Benutzer in %d/%d Channels." + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Gib einen Dateinamen für die Ausgabe an" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "Channel betreten (_Join)" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "_Channel-Name kopieren" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "_Thementext kopieren" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: Channel-Liste (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "_Suche" + +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "Liste herunterla_den" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "_Liste speichern..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "Zeige nur:" + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "Channels mit" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "bis" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "Benutzern." + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "Suche in:" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "Channel-Name" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "Suchart:" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "Einfache Suche" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "Suchmasken-Entsprechung" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "Regulärer Ausdruck" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Finde:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Sende Datei an %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Diese Datei ist nicht fortsetzbar." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"Kann nicht auf die Datei %s zugreifen\n" +"%s.\n" +"Fortsetzen nicht möglich." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"Datei im Downloadverzeichnis ist größer als die angebotene Datei. Fortsetzen " +"nicht möglich." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "Kann dieselbe Datei nicht von zwei Leuten fortsetzen." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: Uploads und Downloads" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Status" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Datei" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Beides" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Uploads" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "Downloads" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Details" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Datei:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "Adresse:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Abbrechen" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Annehmen" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Fortsetzen" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Verzeichnis öffnen..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: DCC-Chatliste" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Rein " + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Raus" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "Startzeit" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*NEU*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "ÄNDERE MICH" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Name" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Kommando" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Nach oben" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Nach unten" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Abbruch" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Speichern" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Hinzufügen" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Löschen" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Sortiere" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Hilfe" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "Nicht automatisch mit Servern verbinden" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "Benutze ein anderes Konfigurationsverzeichnis" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "Plugins nicht automatisch laden" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "Plugin-Autostart-Verzeichnis anzeigen" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "Benutzerkonfigurationsverzeichnis anzeigen" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Öffne eine irc:://Server:Port/Channel-URL" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Kommando ausführen:" + +#: src/fe-gtk/fe-gtk.c:132 +#, fuzzy +msgid "Open URL or execute command in an existing XChat" +msgstr "Öffne URL in einem bestehenden XChat" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" +"Minimiert starten. Level 0=Normal 1=Minimiert 2=Im Benachrichtigungsbereich" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "Stufe" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Versionsinformationen anzeigen" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"Kann Schriftartdatei nicht öffnen:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "Suchpuffer ist leer.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d Bytes" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Netzwerk-Sendewarteschlange: %d Bytes" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"Die Run Command Aktion führt die Daten in \"Daten 1\" aus, als ob sie in die " +"Eingabezeile eingegeben worden wären, in der die Tastenfolge gedrückt wurde. " +"Daher kann \"Daten 1\" Text, der in den Channel/Dialog gesendet wird, " +"Kommandos oder benutzerdefinierte Kommandos enthalten. \\n trennt Kommandos, " +"so daß es möglich ist, mehrere Kommandos auszuführen. Wenn Du ein \\ im Text " +"benötigst, gib \\\\ ein." + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"Die Change Page Aktion schaltet zwischen Reitern um. Tragen Sie in \"Daten 1" +"\" den Reiter ein, zu dem Du wechseln willst. Wenn in \"Daten 2\" " +"irgendetwas steht, dann ist die Umschaltung relativ zur aktuellen Position" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"Die Insert in Buffer Aktion fügt den Inhalt von \"Daten 1\" in die Zeile der " +"Historie in dem die Tastenfolge gedrückt wurde an der gegenwärtigen Cursor-" +"Position ein." + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"Die Scroll Page Aktion rollt den Text eine Seite auf oder ab. Mögliche Werte " +"für \"Daten 1\": Up, Down, +1 oder -1." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"Die Set Buffer Aktion setzt die Zeile der Historie in der die " +"Tastenkombination gedrückt wurde auf den Wert von \"Daten 1\"." + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "Die Last Command Aktion blättert eine Zeile in der Historie hoch." + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "Die Next Command Aktion blättert eine Zeile in der Historie abwärts." + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Diese Aktion vervollständigt einen unvöllständigen Nick oder Befehl. Wenn " +"\"Daten 1\" gesetzt ist, springt 2x [Tab] auf die letzte, nicht die nächste " +"Möglichkeit." + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Diese Aktion blättert durch die Liste der Nicknamen. Wenn \"Daten 1\" " +"gesetzt ist, wird hochgeblättert, sonst runter. " + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Diese Aktion vergleicht das zuletzt Eingegebene mit der Textersetzungsliste " +"und ersetzt es, wenn sie eine Entsprechung findet." + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Diese Aktion bewegt den aktiven Reiter eine Position nach links." + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Diese Aktion bewegt den aktiven Reiter eine Position nach rechts." + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Diese Aktion bewegt die aktuelle Reitergruppe nach links." + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Diese Aktion bewegt die aktuelle Reitergruppe nach rechts." + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "Eingabezeile in der Historie speichern, aber nicht absenden." + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "Fehler beim Laden der Tastaturkürzel-Konfiguration" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<leer>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Mod" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Taste" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Aktion" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: Tastenkürzel" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Umschalt" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Strg" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Daten 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Daten 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Fehler beim Öffnen der Konfigurationsdatei fr die Tastatur\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Unbekannter Tastenname %s in der Tastenbindungs-\n" +"Konfigurationsdatei. Ladevorgang abgebrochen,\n" +"bitte korrigiere %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Unbekannte Aktion %s in der Tastenbindungs-\n" +"Konfigurationsdatei. Ladevorgang abgebrochen,\n" +"bitte korrigiere %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Erwarte Datenzeile (beginnend mit Dx{:|!}), aber bekam:\n" +"%s\n" +"\n" +"Ladevorgang abgebrochen, bitte korrigiere %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"Tastenbindungs-Konfigurationsdatei ist defekt,\n" +"Ladevorgang abgebrochen, bitte korrigiere %s/keybindings\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "Kann in diese Datei nicht schreiben." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Kann diese Datei nicht lesen." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Diese Maske gibt es bereits." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Privat" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Notiz" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Einlad." + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Unignore" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Maske zum Ignorieren eingeben:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: Ignorierliste" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Ignore-Status" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Channel:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privat:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Notiz:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Einladungen" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "Hinzufügen..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "Channelname zu kurz, bitte erneut versuchen." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: Verbindung hergestellt" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "Verbindung zu %s fertiggestellt." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"Im Serverlistenfenster wurde kein Channel (Chatraum) eingegeben, der in " +"diesem Netzwerk automatisch betreten werden soll." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "Was möchtest Du als Nächstes tun?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "_Nichts, ich werde später einen Channel betreten." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "Diesen Channel _betreten" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" +"Wenn Du den Namen des Channels weißt, den Du betreten willst, gib ihn hier " +"ein." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "Channel-Liste ö_ffnen:" + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "Der Empfang der Channelliste kann ein bis zwei Minuten dauern." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "_Diesen Dialogs nach jeder Verbindund anzeigen." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Dialog mit" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Thema für %s ist: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Kein Thema gesetzt" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"Diesem Server sind noch %d Channels oder Dialoge zugeordnet. Alle schließen?" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "XChat beenden?" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "Beim nächsten Mal nicht nachfragen." + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Du bist mit %i IRC-Netzwerken verbunden." + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "Bist Du sicher, daß Du beenden willst?" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "Einige Dateitransfers sind noch aktiv." + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "In den Benachrichtigungsbereich _minimieren" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Attribut oder Farbkode einsetzen" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Fett</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Unterstrichen</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Normal" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Farben 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Farben 8-15" + +#: src/fe-gtk/maingui.c:1612 +#, fuzzy +msgid "_Settings" +msgstr "_Einstellungen" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "Join/Part-Nachrichten verstecken" + +#: src/fe-gtk/maingui.c:1625 +#, fuzzy +msgid "_Extra Alerts" +msgstr "Warnungen" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "Bei Nachricht piepsen" + +#: src/fe-gtk/maingui.c:1628 +#, fuzzy +msgid "Blink Tray _Icon" +msgstr "Symbol im Benachrichtigungsbereich blinken lassen bei:" + +#: src/fe-gtk/maingui.c:1629 +#, fuzzy +msgid "Blink Task _Bar" +msgstr "Taskleiste blinken lassen bei:" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +#, fuzzy +msgid "_Detach" +msgstr "Reiter _lösen" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "S_chließen" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "Benutzerlimit muß eine Zahl sein!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Themenschutz" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Keine Nachrichten von Außen" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Geheim" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Nur auf Einladung" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Moderiert" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Bannliste" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Schlüsselwort" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Benutzerlimit" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Benutzerliste zeigen/verstecken" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"Transparenter Hintergrund nicht aktivierbar!\n" +"\n" +"Eventuell benutzt Du einen nicht\n" +"unterstützten Windowmanager.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Neuen Nicknamen eingeben:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Host unbekannt" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Wahrer Name:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Benutzer:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "Land:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Server:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "vor %u Minuten" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Letzte Nachricht:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Abwesenheitsnachricht:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"Die Menüzeile ist jetzt versteckt. Du kannst sie durch Druck auf F9 oder " +"Rechtsklick in einem freien Bereich des Textfeldes wieder sichtbar machen." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Link im Browser öffnen" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Ausgewählte URL kopieren" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Channel betreten" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Channel verlassen" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Channel rotieren" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: Benutzermenü" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Dieses Menü ändern..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Empfange Channelliste..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Benutzerkommandos - Spezielle Kodes:\n" +"\n" +"%c = aktueller Channel\n" +"%e = aktuelles Netzwerk\n" +"%m = Computerinfo\n" +"%n = Dein Nick\n" +"%t = Zeit/Datum\n" +"%v = XChat Version\n" +"%2 = Wort 2\n" +"%3 = Wort 3\n" +"&2 = Wort 2 bis zum Ende der Zeile\n" +"&3 = Wort 3 bis zum Ende der Zeile\n" +"\n" +"z.B.:\n" +"/cmd john hallo\n" +"\n" +"%2 wäre \"john\"\n" +"&2 wäre \"john hallo\"." + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Benutzerlisten-Knöpfe - Spezielle Kodes:\n" +"\n" +"%a = alle ausgewählten Nicks\n" +"%c = aktueller Channel\n" +"%e = aktuelles Netzwerk\n" +"%h = die Hostmaske des ausgewählten Nicks\n" +"%m = Computerinfo\n" +"%n = Dein Nick\n" +"%s = ausgewählter Nick\n" +"%t = Zeit/Datum\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Dialog-Knöpfe - Spezielle Kodes:\n" +"\n" +"%a = alle ausgewählten Nicks\n" +"%c = aktueller Channel\n" +"%e = aktuelles Netzwerk\n" +"%h = die Hostmaske des ausgewählten Nicks\n" +"%m = Computerinfo\n" +"%n = Dein Nick\n" +"%s = ausgewählter Nick\n" +"%t = Zeit/Datum\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"CTCP-Antworten - Spezielle Kodes:\n" +"\n" +"%d = Daten (Der gesamte CTCP)\n" +"%e = aktuelles Netzwerk\n" +"%m = Computerinfo\n" +"%s = Der Nick des Absenders\n" +"%t = Zeit/Datum\n" +"%2 = Wort 2\n" +"%3 = Wort 3\n" +"&2 = Wort 2 bis zum Ende der Zeile\n" +"&3 = Wort 3 bis zum Ende der Zeile\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"URL-Handling - Spezielle Kodes:\n" +"\n" +"%s = die URL\n" +"\n" +"Ein ! am Anfang des Kommandos sagt,\n" +"daß das Kommando auf der Shell statt\n" +"in XChat gestartet wird" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: Benutzerdefinierte Kommandos" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: Benutzerlistenmenü" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Ersetzen durch" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: Ersetzen" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: URL-Handling" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: Benutzerlistenknöpfe" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: Dialogknöpfe" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: CTCP-Antworten" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "Netzwerk-Li_ste..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "_Neu" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Serverreiter..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Channelreiter..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Serverfenster..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Channelfenster..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "L_ade Plugins oder Skripte..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "_Beenden" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "A_nsicht" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "_Menüzeile" + +#: src/fe-gtk/menu.c:1592 +msgid "_Topic Bar" +msgstr "_Themenzeile" + +#: src/fe-gtk/menu.c:1593 +msgid "_User List" +msgstr "Ben_utzerliste" + +#: src/fe-gtk/menu.c:1594 +msgid "U_serlist Buttons" +msgstr "Benutzerli_sten-Knöpfe" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "M_odusknöpfe" + +#: src/fe-gtk/menu.c:1597 +msgid "_Channel Switcher" +msgstr "_Channel-Umschalter" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "_Reiter" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "_Baum" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "_Netzwerkmeter" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Aus" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Grafisch" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "_Server" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "_Trennen" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "_Wiederverbinden" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "Betrete Channel..." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "Betrete Channel..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Als abwesend markiert" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "_Benutzermenü" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "_Einstellungen" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "_Optionen" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Fortgeschritten" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Automatisches Ersetzen..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "CTCP-Antworten..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Dialog-Knöpfe..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Tastenkürzel..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Textereignisse" + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "URL-Handling..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Benutzerkommandos..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Benutzerlisten-Knöpfe..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Benutzerlisten-Menü..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_Fenster" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Bannliste..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Zeichentabelle..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "DCC Chat..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Dateitransfers..." + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "Bannliste..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Ignorierliste..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Plugins und Skripte..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Rohdaten-Logbuch..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "URL-Grabber..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Markierungslinie zurücksetzen" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "_Lösche Text" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Suche Text..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Speichere Text..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_Hilfe" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "_Inhalt" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "Ü_ber" + +#: src/fe-gtk/menu.c:2147 +#, fuzzy +msgid "_Attach" +msgstr "Fenster _anhängen" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Zuletzt gesehen" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Offline" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Niemals" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "vor %d Minuten" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Online" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Hinzuzufügenden Nickname eingeben:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "Benachrichtige in diesen Netzen:" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "Eine kommagetrennte Liste von Netzen wird akzeptiert" + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "XChat: Ignorierliste" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "Dialogfenster öffnen" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" +"Kann 'notify-send' nicht finden, um Ballon-Hinweise zu senden.\n" +"Bitte installiere libnotify." + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "XChat: Verbunden mit %u Netzwerken und %u Channels" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "_Wiederherstellen" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "_Verstecken" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "_Blinke bei" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "Channel-Nachricht" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "Privaten Nachricht" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "Hervorgehobene Nachricht" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "Abwesend" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat: Hervorgehobene Nachricht von: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat: %u hervorgehobene Nachrichten, letzte von: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat: Neue öffentliche Nachricht von: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat: %u neue öffentliche Nachrichten." + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat: Private Nachricht von: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "XChat: %u private Nachrichten, letzte von: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat: Dateiangebot von: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "XChat: %u Dateiangebote, letztes von: %s (%s)" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Version" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Beschreibung" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Wähle ein Plugin oder Skript zum Laden" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: Plugins und Skripte" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "_Laden..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "_Entladen" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Speichern als..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: Rohdatenlog (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Rohdatenlog löschen" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "Das Fenster für das diese Suche geöffnet wurde existiert nicht mehr." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "Suche beendet, kein Treffer." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: Suche" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "Groß-/Kleinschreibung _beachten" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "_Rückwärts suchen" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "_Finde" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Neues Netzwerk" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Wirklich das Netzwerk \"%s\" und alle seine Server löschen?" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "Channel" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: Channel-Liste (%s)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "Passwort:" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "_Editieren" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "Benutzername und wahrer Name dürfen nicht leer sein." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: Editiere %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Server für %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Nur mit dem angegebenen Server verbinden" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Nicht alle Server durchlaufen wenn die Verbindung scheitert." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Deine Details" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Globale Benutzerinformationen benutzen" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "_Nickname:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Zweite Wahl:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "Ben_utzer:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "Wahrer Name:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Verbinde" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Automatisches Verbinden mit diesem Netzwerk beim Start" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "Proxy-Server benutzen" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "SSL für alle Server dieses Netzes benutzen" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Ungültiges SSL-Zertifikat akzeptieren" + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "Channel verlassen:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "" +"Zu betretende Channels getrennt durch Kommata, nicht durch Leerzeichen!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Verbindungskommando:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Kommando, das nach der Verbindung ausgeführt werden soll. Für mehrere " +"Kommandos benutze LOAD -e <Dateiname>, wobei <Dateiname> eine Textdatei mit " +"den auszuführenden Kommandos ist." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "NickServ-Passwort:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Wenn Dein Nickname ein Passwort erfordert, gib es hier ein. Nicht alle IRC-" +"Netzwerke unterstützen dies." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Server-Passwort:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Serverpasswort. Im Zweifel freilassen." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Zeichensatz:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: Netzwerkliste" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Benutzer-Information" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Dritte Wahl:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Netzwerke" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "Keine Netzwerkliste beim Start" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "_Editiere..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "Sortiere" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" +"Sortiert die Netzwerkliste alphabetisch. Benutze Umschalt+Auf und Umschalt" +"+Ab um eine Zeile zu bewegen." + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "_Verbinde" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Textfeld-Aussehen" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Schriftart:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Hintergrundbild:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Textpufferzeilen:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Farbige Nicks" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Jeder Person im IRC eine Farbe zuordnen" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Nicks einrücken" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Nicknamen rechts ausrichten" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Transparenter Hintergrund" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Markierungslinie zeigen" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Eine rote Linie nach dem zuletzt gelesenen Text einfügen" + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Transparenzseinstellungen" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Rot:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Grün:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Blau:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Zeitstempel" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Datumsstempel aktivieren" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Zeitstempelformat:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "strftime man-Seite für Details" + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "Reihenfolge wie letzte Wortmeldungen" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Eingabezeile" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Textfenster-Schrift und -Farben nutzen" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Rechtschreibprüfung" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Nickvervollständigung" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "Automatische Nickvervollständigung (ohne Tabulator-Taste)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Anhang für Nickvervollständigung:" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "Nickvervollständigung sortiert nach:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Kodes für Eingabezeile" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "%nnn als ASCII-Werte auswerten" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "%C, %B als Farbe, Fettschrift usw. auswerten" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, Ops zuerst" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, Ops zuletzt" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Unsortiert" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "Links (Oben)" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "Links (Unten)" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "Rechts (Oben)" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "Rechts (Unten)" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Oben" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Unten" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Versteckt" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Benutzerliste" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Hostnamen in Benutzerliste zeigen" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Benutzerliste sortiert nach:" + +#: src/fe-gtk/setup.c:205 +msgid "Show user list at:" +msgstr "Benutzerliste zeigen:" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Abwesenheitsverfolgung" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "" +"Verfolge den Abwesenheitsstatus der Benutzer und zeige sie in einer anderen " +"Farbe" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "In Channels mit weniger Nutzern als:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Aktion bei Doppelklick" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Fenster" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Reiter" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Immer" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Nur angeforderte Reiter" + +#: src/fe-gtk/setup.c:242 +#, fuzzy +msgid "Tree" +msgstr "_Baum" + +#: src/fe-gtk/setup.c:249 +#, fuzzy +msgid "Switcher type:" +msgstr "Suchart:" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Öffne Reiter für Servermeldungen" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Öffne Reiter für Servernotizen" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "Öffne einen neuen Reiter für empfangene private Nachrichten" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Reiter alphabetisch sortieren" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "Kleine Reiter" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Neue Reiter im Vordergrund:" + +#: src/fe-gtk/setup.c:258 +msgid "Show channel switcher at:" +msgstr "Channel-Umschalter anzeigen:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Reiternamen kürzen auf:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "Zeichen." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Reiter oder Fenster" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Öffne Channels in:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Öffne Dialoge in:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Öffne Hilfsmittel in:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Öffne DCC, Ignore, Notify usw. in Reitern oder Fenstern?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "Nein" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Ja" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "Bei jedem Mal einen Ordner zum Speichern suchen" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Dateien und Verzeichnisse" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Dateiangebote automatisch annehmen:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Dateien ziehen nach:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Fertige Downloads verschieben nach:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Speichere Nick in Dateinamen" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Netzwerkeinstellungen" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Hole meine IP vom IRC-Server" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Fragt den IRC-Server nach Deiner wahren IP-Adresse. Benutze dies, wenn Du " +"eine 192.168.*.*-Adresse hast!" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "DCC IP-Adresse:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Behaupten, Du seist an dieser Adresse, wenn Du Dateien anbietest." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Erster DCC-Versand-Port:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Letzter DCC-Versand-Port:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "(Belasse die Ports bei 0 für die gesamte Breite." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Maximale Dateitransfergeschwindigkeiten (Bytes/s)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Ein Upload:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Max. Geschw. für einen Transfer" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Ein Download:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Alle Uploads zusammen:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Max. Geschw. für alle Transfers" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Alle Downloads zusammen:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Warnungen" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "Benachrichtigungsbereich-Ballons zeigen:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "Symbol im Benachrichtigungsbereich blinken lassen bei:" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "Taskleiste blinken lassen bei:" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "Piepsen bei:" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "Symbol im Benachrichtigungsbereich aktivieren." + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "Hervorgehobene Nachrichten" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" +"Hervorgehobene Nachrichten sind solche, in denen der eigene Nick fällt, aber " +"auch:" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "Extra Wörter zum Hervorheben:" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "Nicht hervorzuhebende Nicks:" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "Immer hervorzuhebende Nicks:" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Mehrere Wörter durch Kommata trennen." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Standardnachrichten" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Beenden:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Channel verlassen:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Abwesend:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Abwesend" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Abwesenheitsnachrichten öffentlich" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Abwesenheitsnachrichten in allen Channels öffentlich" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Abwesenheit einmal zeigen" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Zeige identische Abwesenheitsnachrichten nur einmal" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Automatisch Abwesenheit beenden" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Automatisch Abwesenheit beenden vor dem Versand von Nachrichten" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Erweiterte Einstellungen" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Wiederverbindungsverzögerung:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Modi in Rohform anzeigen" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "WHOIS bei Notify" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "Sendet ein /WHOIS wenn ein Nutzer aus der Notify-Liste kommt" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Join/Part-Nachrichten verstecken" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Join/Part-Nachrichten standardmäßig verstecken" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "DCC-Fenster automatisch öffnen" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Versandfenster" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Empfangsfenster" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Chatfenster" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Logbücher" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "Konversationen loggen" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Logbuchname:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Server %c=Channel %n=Netzwerk." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Datumsstempel in Logs einfügen" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Datumsstempelformat:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Deaktiviert)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Alle Verbindungen" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "Nur IRC-Server" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "Nur DCC Get" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Deine Adresse" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Binden an:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "Nur für Computer mit mehreren Adressen." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Proxy-Server:" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Hostname:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Port:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Typ:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Proxy benutzen für:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Proxy-Authentifizierung" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "" +"Authentifikation mit dem Proxy-Server (Nur MS Proxy, HTTP oder Socks v5)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Authentifizierung benutzen (Nur HTTP oder Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Benutzer:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Passwort:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Bilddatei auswählen" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "Ordner für heruntergeladene Dateien wählen" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Schriftart auswählen" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Suche..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Identifzierte Benutzer markieren durch:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Nicht identifizierte Benutzer markieren durch:" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "Datenverzeichnis öffnen" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Farbe wählen" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Textfarben" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "mIRC-Farben:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Lokale Farben:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Vordergrund:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Hintergrund:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Markierungstext" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Schnittstellenfarben" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Neue Daten:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Markierungslinie:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Neue Nachricht:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Abwesender Benutzer:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Hervorhebung:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Ereignis" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Klangdatei:" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Wähle eine Klangdatei aus" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Klangabspielmethode:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "Externer Klangspieler:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "_Externes Programm" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_Automatisch" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "Verzeichnis für Klang_dateien:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Klangdatei:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "_Durchsuche" + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "Abs_pielen" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Schnittstelle" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Textfenster" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Benutzerliste" + +#: src/fe-gtk/setup.c:1703 +msgid "Channel switcher" +msgstr "Channel-Umschalter" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Farben" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Chatten" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Allgemein" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Klang" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Netzwerk-Setup" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Dateitransfers" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Kategorien" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" +"Du kannst die Baumansicht nicht oben oder unten anzeigen!\n" +"Wechsle erst im <b>Ansicht</b>-Menü zur <b>Reiter</b>-Ansicht." + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Einige Einstellungen wurden geändert, die einen Neustart erfordern." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*WARNUNG*\n" +"Automatisches Annehmen von DCCs in Dein home-\n" +"Verzeichnis kann gefährlich sein und ist\n" +"ausnutzbar. Zum Beispiel könnte Dir jemand\n" +"ein .bash_profile schicken" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: Einstellungen" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Fehler beim Auswerten des Strings" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Diesem Signal werden nur %d Argumente übergeben, $%d ist ungültig" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Textdatei drucken" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Ereignis ändern" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ Nummer" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Lade von..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Alle testen" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: URL-Sammler" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Liste löschen" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Ausgewählte URL kopieren" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Kopiere" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Liste in Datei speichern" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d Ops, %d Gesamt" + +#~ msgid "" +#~ "Set per channel options\n" +#~ "CHANOPT CONFMODE ON|OFF - Toggle conf mode/showing of join and part " +#~ "messages\n" +#~ "CHANOPT COLORPASTE ON|OFF - Toggle color paste\n" +#~ "CHANOPT BEEP ON|OFF - Toggle beep on message\n" +#~ "CHANOPT TRAY ON|OFF - Toggle tray blink on message" +#~ msgstr "" +#~ "Optionen je Channel einstellen\n" +#~ "CHANOPT CONFMODE ON|OFF - Konferenzmodus/Anzeige von Join/Part-" +#~ "Nachrichten umschalten\n" +#~ "CHANOPT COLORPASTE ON|OFF - Farbiges Einfügen umschalten\n" +#~ "CHANOPT BEEP ON|OFF - Piepton bei Nachricht umschalten\n" +#~ "CHANOPT TRAY ON|OFF - Blinken im Benachrichtigungsbereich umschalten" + +#~ msgid "Direct client-to-client" +#~ msgstr "Direkt Client2Client" + +#~ msgid "Send File" +#~ msgstr "Sende Datei" + +#~ msgid "Offer Chat" +#~ msgstr "Biete Chat an" + +#~ msgid "Abort Chat" +#~ msgstr "Chat abbrechen" + +#~ msgid "Userinfo" +#~ msgstr "Benutzerinformation" + +#~ msgid "Clientinfo" +#~ msgstr "Clientinformation" + +#~ msgid "Time" +#~ msgstr "Zeit" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "Oper" + +#~ msgid "Kill this user" +#~ msgstr "Benutzer killen" + +#~ msgid "Mode" +#~ msgstr "Modus" + +#~ msgid "Give Half-Ops" +#~ msgstr "Half-Op geben" + +#~ msgid "Take Half-Ops" +#~ msgstr "Half-Op nehmen" + +#~ msgid "Ignore" +#~ msgstr "Ignorieren" + +#~ msgid "Ignore User" +#~ msgstr "Ignoriere Benutzer" + +#~ msgid "UnIgnore User" +#~ msgstr "Benutzer nicht mehr ignorieren" + +#~ msgid "Info" +#~ msgstr "Info" + +#~ msgid "Who" +#~ msgstr "Who" + +#~ msgid "DNS Lookup" +#~ msgstr "DNS-Suche" + +#~ msgid "Trace" +#~ msgstr "Verfolgung" + +#~ msgid "UserHost" +#~ msgstr "BenutzerHost" + +#~ msgid "External" +#~ msgstr "Extern" + +#~ msgid "Traceroute" +#~ msgstr "Traceroute (Verfolgung)" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "About XChat" +#~ msgstr "Über XChat" + +#~ msgid "Unban" +#~ msgstr "Bann entfernen" + +#~ msgid "Blink tray on message" +#~ msgstr "Bei Nachricht im Benachrichtigungsbereich blinken" + +#~ msgid "Show join/part messages" +#~ msgstr "Join/Part-Nachrichten anzeigen" + +#~ msgid "Color paste" +#~ msgstr "Farbiges Einfügen" + +#~ msgid "_Close Tab" +#~ msgstr "Reiter s_chließen" + +#~ msgid "Channel List..." +#~ msgstr "Channelliste..." + +#~ msgid "Notify List..." +#~ msgstr "Benachrichtigungs-Liste..." + +#~ msgid "_Close Window" +#~ msgstr "Fenster s_chließen" + +#~ msgid "User" +#~ msgstr "Benutzer" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: Benachrichtigungs-Liste" + +#~ msgid "C_hannels to join:" +#~ msgstr "Zu betretende C_hannels:" + +#~ msgid "Channel Switcher" +#~ msgstr "Channels-Umschalter" diff --git a/xchat-2.8.8/po/el.gmo b/xchat-2.8.8/po/el.gmo new file mode 100644 index 0000000000000000000000000000000000000000..477ea43c1a996e940b5a61ba8cb8f3d3897080a0 GIT binary patch literal 116492 zcmd44cYIXE9`}Euh#DKBpjhxwA}xig5NRO<2&9<=P!Vyn*(3{_-M9q^*n982UwiMp z_pVp3y<fXt3sx-G^1MGYb2b|;dhhFbet-PV%aix?`kk5Y%$db^diOZZ<5||j^R|O8 z4f4EyujhHk&XlX?Ennn$Z{&GiCmf8uG30rrvcq23Z)x(p&ETVOEBG>0xG&)buy@$H zZwq(CJ_h!Od%%9M6OM$Zz+vza$FJZ3>{~Z`UI{FP1#mGO3QvSe=T5jid<_nQtDz6K ziCFFe6>d+s4O|ITj?>{_crR4^_Z__!Ywr)0|3t^Vpz3!ZR5{OtD%V3$>3-|DNvr4W zjD099gL}gv@FF+@J_S{t)ll*Kw0YiWSOHc3<**Q*3l;xKsD9ZfYU@7~D*YN~KOCwa z*T4zz1vp0G7kl0~I0cS^8L0YP4kyAVVJYmn#O6~5cf@`O915>;?k_^6(<f%jI|nNL zl~Coo9xDBBod2M9&)XJz15~*aum~OtcY$|7rMDU?pTf8eKNt4Fz7JG=j(}>9YoHIG zckbW7Vc7d7tou}`a3MGX9tP!qBUHKGgu~$`9iF!Uj)%(sR9Fe0f+cXveQbKuq3RWZ z#qe^d_I?G9g_|ZlZwFWoWe-EO+nG@HyC15)|ArNCSjzTq0#3$$5mf)b2Nlmt+wu&7 zKGua$_21vwFNPane*|s{pM|~PTTu1=68f-T#`>4SeC(C58a6`J`y#0E_B)ikZoSm= z)`Mf<A#eiR2;K{O!YAR@@Oh~GK7)$)3tSiWS!VO=2PIEK;dmH<lEd@i&hRy;`u19G z^DBYtV;={V&m<`S>CQdu+?T+uaZft?F;MYNcJ{NO+U0MKSHaD(-waicN8u*$1*mxM zLgn{~vwsCQ!@e4B1$%Z{`Rfn2#y-~BtD))}hKk<`)emu~boX=ahe4I+SlAby2Gu{; zK=sFKa0~bW91DMhlDoncp0^>~6DqwHsD6n<wR;-QgNH$ddkZSu$FL9l3aTDGR@!oJ z35Q@Wg7TjWRgNXFA3Ov0fHy*=cN<iDJpk2S&p?&;4XAQ_<m{hA_0wv2Hte&nZSNbP z;y(m^_#9OERyqC%)qa0Kwa>cy+3*`f*|&zuZva%hLgzl#*(W(xK(&80RJj_R`yS4{ z2`as)^G`be<xu@`AXL52fC_gmRC<>})%zM}zYD6}9)zmzt5ES*!vS!U{cXFIK*`$# zsPyK*jbS5HJwj0RiozK%4K=RscJ_ZlwabtLY`I3jy|9mjzrYiq`t|4oZGF#%YUc}~ z^1H_IR>%9G>hrkcb5P}b8IFRVz-?f^gRH!dg|b&c)vpzff&0Tkc$4#g7pfk=IIefF zmH%E)<75Y@b{!8@?@4e7tbi(iJ5;;u2Q_YvhAP)t&i!gQ5c?fa^?DQT1V4m|zwIID z5O4%k{K-)HRYSE$Jyg8CpyZ;}u^npsq~K_HsB^y^sy_EZmFo$p{(l)Noe!Y$`vR&x z|9}eL^H7`L=CBC+_E7bm12wK2oV^vQ90_O7K$T-ZxC1;MD!uEV^0^bL9iM?)!jGW( z<rk>(^*PMecOX>wAyDa+Lbc-@sPq;>)uRn6pQUgxJRPcDcSDu;5!eGh<M@K(D^T&@ zgg*QXs{Z+h+jid^u8ZA=D%W7B{uu?8e;HIhRd7!@7w!UYg7e^4a5q?Sge~9sa0K@I zU{Clj$8Vs@_mksqQ1xBsNE>boxE=Ow;QDZ9C^?t{)qZoF``%FLw!zn70;;_#kFwzx zK*>`p)V#P94udDc4d7jl4@0&4GjMzOF5DLW1}DRQN89r51{H20+z@s^AFhBZ=Q&XA zcQK@Cz02VsSagi%HN#z@?6<)}_y){}>mO_5_l6r`-v+84J3_5n<KcR+&iT)C?oCkT zSphY^kAs@mE`gHQyPW%TQ1bT?RJy-ImABV%Hr=hE<f%U#3MWJPw?eg30;(OCLzUwQ zsQx+*E`;YpAN~q2g4-W&*S!az`sZt?_Wuz|?l(Wd=2r++t}3YXB5)J96iPl0bvz2H z+{eQjcp=;ru7WDh?@;CJaiXpNCQ$B!pz1LUN^VBM&EO2@KM$(C_jGK7DsLL994lcj zcodX8oDEg3+o1aYZde8%h01UJlWhD=pz__)aXZJsa3Jo5P~mH#(wPfY{zXvo&<2OW zl(U})75)mSa$N^i&U+jmhDzrtsC-|7O6M)8@_yp{zkrIj8Y-RNoPDE{8C%$ULxr!0 z%5OeYe=T(G%c0`$2RDX?!r|~FsP?%BD&N<j(SxAs^&?dIyi;uY`B3pUgYw_bu>dMu zF;qRqL&^VC=f4{)#vX#N!4qK%jGoHe0iTD;|3#>Neg`U@ubh1~RQf$nLl=d;;Cwh2 zN}jHTYL|PU>hly#z>nePaNg;*UD}}1i9>~74wc{G&i!=QANz%H1iT+g{y%sA>z!fc zYBQ+#KHLHpJNIeO$KC)nU!<M=OsMw16H0C$fU4g!Q2q9j<Ll1-9jI_0L&f_Rs$YMG z1K=M}@dun~-G@PiD}m~touKMf?%W$-IrcqZ9XubZy;nh{`wLtbdS@}$fgZ3AoClRp z462-IsDAHs?gu;j(NOuH0+sIB(1(}8aquxX9R3QG&XBWhyA?w9$5hAJuow15sPrOG z?Hq&Z=M_-pIm+=QsQRAe?3X!S2UV}zppgrxe4c^||B`cm&v6x0eSd>We~WW$J-3Cb z&tNzkmO#nh3K)a;!#S|<T)W;Zhbrgoun0Z|mH+op<yq%ETaFE&((Mg3e{T;}-$_vI zJKeDws=ekx#a{rog(0YT`$5Ucc~JGb((yK^c6=BrpO>K0dDq!Lgldmfumt`LmF}?f zt^8L&wL`OG461x-sPtAsmGf{Yxj6wUy;B^|gDTJEQ0d$P75^Tncn?FR^NjO<)$v`& zPvF-0uYwA<!3C~gpxSj?I09C};V=VtfEPlw(*v*_J_Z-Uu@~C<pA1!=GoZ?Q0aW-a z9j}LK&s*V^@Ik2XuRyiuJC3X1cG$hY+5X)gs$L_Y(i`jCOQG6f7F4=(9Yaw0w>$r3 zj)yw;lc4(R9H?=8Ayoc1z^&kej<3VP*uQb?%Oc(%`z}!B*#jzm81{xKsPY{SRj*^A z@;Mc*1J8mAe=ZyfuYsE1UWUs5GpPCW7uXkWe6bBb2u{R421@=rp!)j&sCpj`)t@Ij z_p718-2~N-4?6cRq003=><52^%BSxo_S~Wfs(!6-U3fTD_@klP`DCbiUf}FE!5-M} zhf41esPXs?RJp!@D(6p7_51^lhFe@}+hYbCg}oB0{wty49Sc?dGoj?<a;R|kzykOc z91OR-%-SbFwc8@7boPNN=fQ9eJPj)Tdr<wh#pSl2wu73N2Ev|jJXHKCP~qyJ>b*Nu zxm%#*>MZAfF;u;;fj!`3Q00Hx*<W?`x1iGd6sn)Tfok{sD{Q_4pyCgO>%k(p0UYBv z5vp7jaD6xrN{;q&{&A>wS_W0#W1;dn3#vRf!JXlKunew-W8wHK?S8WzD&I>SuYxyV zzX9@}7rM&omm6Je=Zig{(v3isXCLR@3Ds|h!V-82RJ%Ux+@FFQV1FH|zVADJ0+r4e zQ2q8jRJ*Q!jcXsMdJTo@=W)(`CR9CZpw_`wsC3SQ8^KGV<nc!5em_+Dk3*H~4d}!7 z;AFVYwYDA0pzQNt1w0Klz&GIuu;e;hzWd>Z*k6ar?*piITm|#t4^Z;uU2n_Z7pmTa zp!|nA_c3r2>{Fq}Ne$F`(F9fB{o$tYL}$MMs@^xkZQxUIWB3tNxNo7_A&*W}JvW2{ zU@s`S8}00sQ28x^lAi;h+Wl0h^sa-d*WFO%ejIKFpK<PQLG|aSa2NOuRK7(w+VJC` z>R$@g?sZV<hN05!fU5Vtuopbq@f@ghu7Rr0El}<CFjV_K2UU-kod4%g?ez=X5%#^w zrZ)*HUJcaxwL4UMbwah@sjxS^7OGqiK$YuRsB*my)xV!W)&Co)b!jzJJ8W^Yt^XjX zb}n=r1La=|Rgc+l2CRol=Pao5oDa2r-Un5$?QXH<9SBv9BB=Ff0#rNh3RTWl=bwg( zcOX<d9S&9A)1c~o0o(#!1(nWyQ1kmM&i@Cfa(lPhbk>LJ&rP7h^@U1r98|a|Q01Bd zm2W+)hPyfYWl;6I2CDuyLdAO!syt6XrT?O{zvb+oIDQQk|7WOj{|=R3@7rws`a{Jp za@+~3-={#y?E*LmX5gdnEO;_pbUSD1@LQOMkvmvh@)-YcCHB-^_8ejrR691_ZPN?G z<=FRwD*tN7ynAdvYz$Steo*pM0Jn#eo%^0p?a&7M!sX6>0+d`_0M)*iL#1=0^S>AN z!Tu~%KYRccf1P`+y&o*bJ{}H-t*{853`f8R;4t`wW8eGix#U!+@NH23r$EKK*V#XJ z>~p_8hnWIP@Q*>IdoEPIPe8@{5h|U62W<FSxFhy`;ZS%n+zvhi`@_$m#@_}HT6r7< z)vmk14dD!^{;hM|9S+3a1Si77;5hgYEPy}3O<@0r?0QuQQ`p~z3b*USc6~bn7Gl2- zs@$K$17W{M?0)TRI9l#d{m>ub=?#a&9&i#=e@%ny!P!vlSO?dIE1mlRQ1jSfQ1W{^ zEQ41;_2(DR^y6dJzaLb(MX)Cv2Q|JYLdjF5b8mt>VUNP~;Du22y9{bvzXjC~-$RwB z|KqkF213bmB|H)C1|^T5!Oh{%uo`akgw20<xIXs1q2#^|ZUEndTf%=qrS}I^eKvj4 zmUA#vyh(6dSOMq35Y)K51MUg`0VPi*PuX-ALB(rx?11^$m&2j(5U75+21@?kg+AQq zX`4?WRC#7WxzC4_^N0`C54S&K`2@_z{yN+cehAeMU%~C+de2(-K~VK9f<<r|RC{;8 zH{nvKeyxAbwqFa}0Q+*NbPs|Ge+*Q9C&5y9E>t~Vg_5gxp~8Rb+<$fK@ps$L8^byH zmqW!n0jeF(fOFxEa8tPc^L8ES3pc^O6Wk0=hbl*-v+n_w&SJ+T9D#iW91Aal8lP{% zk?<F&b{O%3t?yJQd2ECwupMd~p9dB04k&qe7OGqyz#ZVXQ1$Ko4_p2MsP>xzhrkA? zbXLON@N_sBUg_-5L8bQ|RQ<ko?!QB&v-yj5ekpLA27BSY2rAtUsPS<ORC`?PcqP<0 zxgM&%H^WKrL%0+Ue96W?3vP`47RLvn`t>=e_^(5i>uuN*ehwuM-#Yuh;c)EhylmqY zIgW=4Uk)V)vte)82seVQQ1wnhmHS|*bdQ9a!;_r*#g11xUJq5CTj3V)VJNwI6)OHW zQ0e~yB_};!vGZGBDEDol+J6XCzEx25uXpxEQ1y>MrPl!^SDlUrLB%`D@dW378dUn{ zLDlz4=YO;FzZ0rG9)xPwC!p%_3{*aEK$YVII0%02{I`77?jr|6#V>%DG5!nTU=n)q zHTzxhCkF45b(kOCvU>2t@7Vd{Be)Ck^4?_*fs>%*=Wr-_I0KG@FGJ<K(LZf_mcSb9 zm2e6?6H1O=gR|j=@6l$k5$*~vhZ;9O!yVzU_wD>r2bIqLQ0v>Xa5BvQ!0y*7q2e6` zYvGMh>E(TB_p=R9{)fRa@K!h-eg;*q;*ab&TMXx6KN+fgpTU7}?8o#moDY@nC9n>D z02P1iC-z*R1CGFc6;yt&K-IhFr?y>Y!134@!~NjJa635QGaG&~ti~RP%I6-qGyFGf zhhzR_^|Qah71+1@+}_(b0ZzmIIa~~jzd+{TS#Ung|I)T|6I8u#g}cFDpvu?q6?-ap z3T%fjLHSQxW!vu@sPvzOs$Z|KZNE>1W!P818{j=K4%@%6^Z8p){#$)(`+avf1N+fX z{qq7G3kQ8?!|etuv7Zemzz<<D?Ek&(_iCv2I2u;KhoIzcgC7`6a58L$Prw8$T5Z?U z^WaGAzc~AdAFUi52^(?02dX@q|76#dFr0(^Y^eM`hU)+RKU@0}sQfR6MesAIcH8O~ zyFMHSjhsNO=N~|YpZaf`&f!qyc@b^^d;DtG*G=G7*hfIgVL2>?XFLCwq2%#9cscC* z8*>%B4=UUZzuWSE4wde}KajmV(t}%IAMNFt`Emx_8v9&02*#n}pA6T9&q9TN0mk4* zFb(VT^1KXu94>{E*2y#a)-7;T?4QFe;V;g<*}8e=yuUx}i+dByhn;XVJQQvWZ-@Qh zBT)Ii<M=HcfW2prJR^5Qq0(=JeP9$S-vgZc@y>oR^l`rlmctj}1i00Dw!FK-q1cav zs_%_Z<+>FrzXzbo^}gdO$6w)i+&83A8{jmk@|+IUpI5^J;agDhv~c}AvtC^fRnCVT zUx2-^{}VEly>DP|_|^tC+$y*e_TQo8f82(7W<F_#Q?Z{4XTz6a9rW|_jC}0_mCx<4 zKYR>s3qOJyw|N`cb}53JVXuMem%U&U%s@oddkqeTFK(P?)}x=G<hRErHoe(U<!^y% zzhzMQu7sPzqoLaKT&VOfcmDT5wePb~?Y0W4oqKF*xw&J1xIOM8oV^mN9p=Fe;bBnu zodDI3=R>vM<520o0VV&dpycEysPb;QneC??pys_gXFm~YUV0EJ{06=9%s!z%RJyaE z+HnC?`pclk&#`a;ycEuad7I~XVOR;(F4w{y@J4tcybXSq$DG_d&&>N}Tjm)(U@y2M z{>@PRatu^?&vCp4s=oI^wd*rb?eQwqywkH!o>?E$Q2q2URDCw=n`hS7I(QQHi{VN* zZmT@IPD0fqZ);nxZJ_3#5;zIYgv#$QsD3&TPK4({$=4fD?ea6!yws<km7DQU?hD~! z*a<g*AHu!iw@`A>u#F9$f!kp}8>-&7!$I%~sP_K?sz3jLqu>VH<{5pl6z+>X0@W|? zL#6v891Z(zXZy1XD%~ciagc&)&kLZ^zYc2Nc@S#-cp0j`rQ6%`&4dacgK}T#>_<Yi z!x?ZkybVfj^ZHxv03~OWp!#<|I2K+4mEY@7`F{!3uHFuLMn9PZW#0!X+;vd(dI-*i zAHqFgsc*-_Y0%UM4pVq2xqA(&|K5g$@KdPuwa)-sk3~@J9D|bA6QSh)RJaYi3aWmO zLZ$y9JRN=q_kl+b%rpDtU*XBvj~is=#vh#LwPN23s(z0-z7Ew-UqF>FuOQE?pFN@a zXDl28E1=5V2^IfPSPajAlGn$e!oLe2WjuWiC4aXKvE_dq`q)>&D%fkNoj(^srFR@u z{0pJl>qa;Wz6rHX3?7ze_Vs%~mE%<?xp^N-t~VWS$JubG_UeF2?{K&po&hBf$B)SK zo`<hP*{>?hGxzs?fIDDsEVAv9hAPKVa3^>(RDJ&im2SUco6m4K4f|B6aEHKM;9XF1 zwHm6NBTB6N%!krnPKA=6XQ2A=D=0bs4K9KCBW-<`Liw+P%J+9DdERW4buWTG_KENz zxDZO7{L#n*{jeCS-`^Tz!%rV;>(v0YZte#a{x+!j(i>;j{aH}$*yOkzs(i=8!SEdT zG<*Q69>?xv=acK8^oDz&#@8#({Wqw7-e_klU;Uxlw+gENmcotT$x!3#e5m|xf~xQR zQ2D$K)enEbp0Ielogc@+4EAcM_IlXyACB)ieht-*f4~~pYl4-hMNs8i4Ew_UpvJ|i zP~-YasB-owwdwm%<tl+HXEoG1u?JMV#Zcuq04lxXp~7A2{BLspk2}8N_z_%0xbLCH zW8*G%p4}a495z9vdpguOxD-lmZ-9Hk=b`4eqKUTu+F=3qL!jz?rE|Xvs$9>*A@CEZ zbT*r0Spt3RwNUXopyd1@sP+93DEatOcI0f`$$8#o*bArRdF#Lzq5NNgn$Ny~N~hOU zTb=<>`OSpK!&Z1BTnz`pE6VJ8@-!@zJ3J5$nr7o)0#*N~p!)4)sCnp9I2z`a+x{5~ zHILN8Bs>R}!%e5#cC3dgN66U^f|B18p~`<1oCF_$weWYSaa~hk^F0Kryr)CS?VV8T z;<JvgK-K$QDEa;xN)CQ?+;E1SFZx1-tB2~}uwxP`{ez&!(<M;ho`%ivEw~>nn`z5) zKUBN?11g=jp~mSKQ1jCrvuwRqLCM#8mA1V3aDD7sK(*(#Q1OeQ)}2XE?XVlvcsLz4 zz;B@HTQS>?>l)}|-xsRi&x4ZN2cgRS1C+e=oMYvv7%IQ{Q0=l9YFsUI_S2xsaS>F# zZiJHCd!XXI2-WW&!|mW7umo;bW%ZIOsBrs3g*(adDyaG5VVHmus`I?t;FVDAxpz&T zcQ||pD*s5W)$7wx<$n~aJYPc9|0k$&<<;ex{qNRL@oJ#zz0ffZ75)II_(#Gy@Dx}F z--VjzM(%3o*?Oq{Uk0TIo()x>o1o%93N_z650%eHQ2OU;sCl5dKF{uZq4d2EpxXHx z$KRpiZ`5GNfe)p3Oof`Cr$hP2q59<zsC@ngmCjAhe!t`M&iy^OIsRWcdW}~9?G07_ z-J#;gU>od&v*G(tdREcgJaaCx7;cFDdiXKC6W#zXoM-F5>wH_DJ)y>5J5;+L1l2w# zI{$N^=D};A^8E*tT)zv|-oH5i?RK;FX;9&sq55kdsCi)p^x>&c`P~ZDFHb_r*LzUy z^$S$^&33o;VNms+4Ari?!eY1*s{gNo(i>L8YB+iiD-Q?48tgAX#rGH3`E3mJvA00g z_Xx++q3V4p><Mpx%I|ilar+(|4kzwu*Zo!~{ryI$aryz2d~dbTj*BT!^|&6Y-=Bo4 z?;B9*eCyn|-^;ddF^u5e2-OaELCvFohvVQ!a5~&}kuA^OQ0;IxR6YI$rQiMx2g9xR zw*4^)O8yo>^~Zit@eX(Xw?ftPRj7W*3t9bU8>sR$z;)oAQ0;pU90~KAtlaMcee4V1 zB)Bh}2k(Nr!p*~WUm1o|vEL6RPhPX-j!^AZ1(PrhcY~imwcFH)lUJyCdqUOsV5sqZ z5>)@*0+r6=a0y%m3*mwmTmK`W<mED`e*PA!oqvOx&wIDpdTa%i?|4`WD;*Do%J+V# zc6<(Me7y>l&U?;%HB`QTK$WYo&9>7ND7jw*HQ%NjPlS@6YoX-hJ$O9)87_uLM)S;l zf$yN^+g%si@;?YQFFgZ?<snya0PGRV^A5#*$99{~)o=jzC!pl+Ur^(>Pu$jTB-{u4 z5~y~08%kgM6slf561Kkm;AYqdLbcCmsP(@bs-MHo{Z{Ax7}R|9v2!2PVdZlyY{k6+ zs(tQ;lDp@i<oy$<^nZgY_on;Ub{`34p914B1XZ8sq1K~+!+qgC$vp39_!T@6cBbq& z%un0)9}Lyb<Du$X=iC=Sl_LQ)UXFyS|7B49bvGOeUxSjvyo~L)A+QGf0;q9!74+fX zq009)91FKyYR7RMl>gyS<Mnc=d>@07uXkYs{0d5rrY*DQFbOC<=0&La;1{U$M=rPh zumFz0z7neaE{7V|cR=YA?>qONoq67A*tdcTcP&&q+y|B3lThh=4;9~EVbh-tmH%R> zb~p*De0M>$=O@sIe?axCztWxuje$yU0@V16!1?e-C^^`0U)w(WK$Y_{xEFj1mcwED zS^svZ`Q;)gIr%44zN?|+b<_QAe+`Ff$0=}kSObgU6;Snk6>5I})NvJ5f3Jp$x8(tO z=Dyb;sQ$kh&W2CG_u&=?+VQX&svLhn=`Vc_vh7g_wJz)qHUA$274A}~^zVj}pQqsF z@N1}fVV#35`$DzzaJVzv6)OHwQ0;mF+!)>jRiFEz<nDQ>a{K_5&&G#XZVT1F!{Kr` z4ywJbgNpwYRQxxg()A9t>1+ZemxG;s5>)s`sPaUh@>vN-!=s_*gL|RUd)wL9In2fz z2rF?P10^^6L9HiOL8dP6C)fvukI3`Bz`gUxJnuu;a#Wu86ARFsqw~D4uunfO&wB-q zIo_5p{{$<igP{7S8me7Ko@nRCX;Ag3gL02TweLze9$o|`M{h!{AK$?uxa~={|0|*5 z?FBX8b~yX~P~lF5<KTU88vGtg-giFP>XBh6xxX0BgsY(BY3Eby{_0@30Q=Lh77jVp zo{KGmGq6AF>|35@+i$VsEwBRr-{CAc{dC)&$3eC8o3IKNoMGLQQ0@;vx#yp0^P3M< zzRO`5{0?fIjXTTMCk54Bw?WnaZMYHq97=9~gd4(*&bE43AGkmEU11VF4^^-7bL_fv z3e3>Y*TIi)AADY(w+!Z=Z`YxNq3qu~d+Y-HUEv*gBJNLKm}h?Hvd7=-xP1@~!~I<- zIp6RiD{ouEjj<QNb~xJEFN9jZuZ08PZBYI78ax~JxY)|U1yJMkaj5z3ODK8odx>QM z)H*sAY96nJ8Xs|}@*e=zPCvpu;JTOE^6mwvV&4~PJl_i?7tcHYtuM>-@@Su(U?J|~ zFSqkw1fGHYY^Z!jUtw7edlJ48YQ9=<rH$7CH6G7{TfuwbF7RcjdTf4`-Pih1<7_^h z04H9Z=luYe!h>P#8ap4Xf+}y%Yi&OLp!9)aSOzCU$<cvuZ}<$9ycJz%<!Kqzc)1m} z!4KfDb<q2+x9zv|MmztX236iWq2|vQpvwI@)VLXPlXXwRQtZdVrSNg6@=U&&b4uEy z1}eWDZng4J4VCUPsQKUosCKx**>8thFP?|0=kVLCemM!MUH68PrwmlQgJBq+1P_Bh zIQNye+jc)1-h%s8Q1w`Jhb>Phls<7el-xW5mHr2CIQ$8!e+S)Z&lSeP8tfC{e0U5T z1wVlEV4u6J9LAuJ{RpUe><Xy<cpfVJc6ZzKYoNw+C-mWka3}bnbN>mdU3a+0`tJcH z7c1dpcq`O;`90hj_P*DSli6?p_714}o(#vrYv4%u9+W=V`#vl0wNUjx18Uy94XT_! zLygZ7_uKX!3wvTOgA3s-xDs9l--H7nu;u?9s$IuDXxE>5sPVZBt_x3wD);G7{dfyh zyFUmuf4u@z@Sjlged9w`?pvVj`$5Ui2~hL><xuP3+fey_=lpv;Z1Wuo)z0Nm^X6hG z`CJZ_-jPu4bvD#`c@LZg--AZ}9<l8=3HrDv;rj3tsB)hJtKkh$<@z1=g?%5j`4vI+ z!!A(s^jya%RQUa%%6}SEd9HT$d!gdJ2sKW=gerH>$85O1Q2j9!YQ8OjO1~5;y&9<U zHN#zDC)E7<H0%L?gi7yMm<M0t&mPPJC-Oc-N0s2F_`$OuhM~A0N4QqrHwmYQWzqXg z9m}&d=5sNB?Cf6=Msr2IGURy_yJS_*O@uiE`xf}k#{4O9pLA*Nh1>SLg9z7--=@4X zFrSS7X@r{uHJ2X=S%$nv@m~Sogkx}@4{v~a?%_R>H-i87a>#l1A^vgLYsl+O{J+7x z0JEO=NMi{8zu}&8ZeQWvio1_n4R0;)TZCzZ^IVwG_-~F~Pm^=2#jTTYdivnD4gQ*| zHo|Rx-YVn6UJ<{^F76A?Ek#^Cr^1<py^c3dn1AtpiCJUoBHj<MSG)Wa{&^Q~9k?#x zuE*^ms6L-YSk2`OF>fyy4y&2(j)3iiYr?MqzxkMhX94yS-YD;<&iza0xd;~E&UBxB z)+5XS+=8bb`*m1W;<mR7*NWS4%#z*y@Dg6FOV9C^QlCcnE^nAPyJ6qb<@-;^a>D<v z@c56$Z8i25!b#?vu%Cxr&*}I-1(`0r*LgR`JdSX8;Jy#+<I>Bx@JB<RFun2H7aoK^ zs-ZUk`z6F#iT!Ncx5MoV-U=806qv+*3tY&13t{hdegx;f3Smj(X59Xb`61lO2>(6y zB=0-CEPdt~L^wUC@g@kXC(rR#%>Onna%8@DVQ<6A6y%L@;l76NJ97u_LkagS+y%GY zct>E?^Ro-HE?kJ)D5!btIm&Y}oR8c2@C59e<F~(yC*3B4TZD9H@E(g@&sDggT6l%L z{c(Q)d+_`lx5u$Bho$fp=dmGnJ%^C~TbTEU!J|2L0B+CX_LFn`-1+}Z8het**1WxN z+Z6k+Foqp<#6116Z;btL=);#`?sF~nVjK=6{9@t<&#Sn9faNOQ2XWsyC*IC3+yRao zlCGW|T$qP(AMe}>;ds)%41ehbao#0_`-h7=0G@|i@EnC<j`Q2hrFS;m4Yyj-TI>S0 zk>>H3cg1}?@4haqyiev`hJ7{fG~R3FnDeYp+)1u{+v5HJ??3h8KFqmeHP5%MEV7(~ zc@gh2%sUV+4|4?b0^S+KUFynkFYLj4Fz*%4jUeV}Cf+ia=2!S_$@`tN7vQ%C>HLJ7 zbobj`+%qsg=FCcD3(T#AeGv1Wgb$ugFmHloA%5lXM&7Fkdl>GUVrFaVUBtUSZjWNu zvnydw!M+E4f^s~8+d7yVU74PSQ;Bm5?z>}t7xQNL>v<9TO6=3&K2Xm;;KSBv{x)Er z#hXtUJw@boFnojeZp?Z%!>@(62kG{4Zq~>CeH*_J?zQkt(s~i|6TFY(-2=B9d0)gm zcz(dHM@j9;`w8}T(!K$Qd4wB?UAkEC^ucXo7yono7Vv(^JBW7_@%Dpy{szZjuOywl zoZCpuC-PPj|4G7Zi}?Y}f5-n!-U7@Md1vCc0n~Fk+#72Dj~eM6!}}U9s<L+pZugN! zDGZ*|U0$+pfVnSa(DNMOcjp~}{S|mJZ@-+dEjF09feZgI>FPOzS32kq*dOFg6Hm`! znDcq{jCO8Cm}`v-GEUmlabNDj^oHfQ{R6&-`#9%5ll)$EaRO*h6g-;~r`VPAQ0I6) z_LZ0yyRzmH{$=d9@K%%V{_q%HJ?;42XN}%5E>Br~%wOVnIcfdI`*+;*?=0%6!~Q1h ziM@z01q$Qho`L-%%#(4`(*yevymh>dxR1sCdfs1owWrZD)WVyJ|Btx;fc-ekXJKw8 zo}P=aH^Dx}h8#I}Sv#HEBZS|U_aN-g!o`G1Q^sDf5PKZ+$8awG^`v(*@9+5S4Y!BC z@CMI?7zPtQkM|q=-zVPFxV-`OoQYd2JP-S&#JdK2?z1uWYj8LUzgsc?9d1Y1gLzNF z{au%i;=F@@3I2y;UdlTG^N+X{k@p`^&ol5--ght`&6~te&xNEjjPMuYw<GM$+ZXe4 zm;OlX&+wM=4#({*IGea}!svO`g&Xedz3`iY+bnoFZd*D3eF(dXxHr0RihBuu6W}1+ zKjzhQDE@Cdv+Vh#GbYC_x9<saAn&&L{SCYJCNB_XJ=}gF%{JZ<m>=NP^Ah$);QNG$ z@_xdrXG`M$f#1If*U38q^Y!=@;I}>I&oMuO`)6=2+=h2g+}9^w8nd1^;2pTVg?Sm_ zj>3Mf@v(oV;<q=ip7(ekC(NbTpC;T~=l&~h3$Z^6SHKMjcd_%Eg4<;B(^H6_o>|UM z=3jZ2=Gc$I{4;LP@_ypNWArv6ofF~V_&<(&0)B#hQ{43ofqUY90_Kl+zrnvhT;%e; z9RCs6&*WW-+tn~h_-ewv0OK%tim@L+_>qJ=AM<E92#)3LNw^xg%7uTMNFQOo0<P=w zQaZQecBKm=`>DJQ&i^vv50@j)D$IJm<~^T0Z-Qa?ciex1dhT_c=)yki?ADjGNcThB zCg8uFbKD*CkGKuN?`v0%e?u83@Mmw_SG%wmV4sS8CUK774dXr+`*FBmOd8wawmbG~ z6xls@;<goT!<>C0=3Q~q^EX(D{R?Z&{!J7AGM5HNVCK=e*_AHdU|d=-m+|g^|B)`t zB<%BCDmqWl^Ac{a6ZanYhjlV%A9ds#JcIFT#&R*-k#`vHO~g4Ch6y*8^q2BRu<wHV z5xgnhFmLX27M8h$%Q(mB@FVQc@@_-e#l&yGZ5Ql%3VAOuCiDY1(3Po%u)7gvLzn(w z%vHRv5ns;@m_LNy!4rA)RJpJ+S2}YsenVUwx$lAbR{Y+DTj2MM3#YS@`3jKp^un){ za6NgaVIG&`_Y3A0m+vO{MR<3n>|Z-K1zivG=D01#JP!YVl1}gxyL#?Qm^*m)b@Ap9 zW+UFScpt-UcOneL+!OP7SmqKq9{V<=u|D=EaX%FM-Mo4pf^GP9SgUs@+!D8)2)6<6 z^Vpl=E4*7!E<F{ze-P#cXO~+DdxAH3VuYXQ{J+CI&3P=sd==r|hI+nrlz9`%(Kjc} z5AeIqrFk0Wr~<iXYsDk%Q_g=Jd>*@+>ZF`Bej(fiyqDpB0Ne>4%e#tjBYD?T1fJvZ z`;2&X)|&nMGhx%%?!>Q*uuEKcAN#8=)K8f2<GqLXDc*jBxgT!Ldj{#Y@t(x{81{+8 znU483-T~QMnB&N&KmM=qCR`r!evNlwPPm@Vd@bRkyn5~=uAY6d&&0eA@5k61u)pg3 zDpUr{b8^xiWn$Ss-{zQQOcC~W-Zxx)xlMO*s~mTM2jG4!VSaaIQ8+zU^0xE7gWq81 zcLC<FcxO<SBYE{~N*cdo?#H_`e#a8_L(KPK-pd9tzx|qp+bG-?@J?~=m%@8_x5BS4 z?q3l1N9<#HE3n6S|HgYc_M3Tk;%y|qod~xHaeBjn_)o_CJ=C+KUfj(?*wZjygWoxX z*$De;=XZ_^a+kCJ3tmCEp}bQFH=j3nt|#tySmqIC1@F@?ua_OKaA_#~-MqKpemriE zVLljh)TNcg9^(z33Al%Nt4RN4!k@}}Af8vd^p1g768{i*9br=VT?%L8_KZtpiQ@1c z%DW$aQ*qD7e+k?Rj&|XMjR|vCj=d7|L4>L1eIN5v#6OoX8CV1-;r=D&HJ{gU+X4UW zT)loE+zGfn3G)g38h*jEEpGF2(zqY<hB<bH+l(-i;OV?~6ZbF|zZp(e0G=<1vxIPZ z-pfh<T<7)#EWtfPnGVWH{}AUN!>=E4cXDMOh5aoTt`2_S(mWaSEW&lb-{3jKzaQ%9 z=h7<2uY`1_Ks}%H-oZNu|Jz9CGt7%z*neSuoj1XI5q{efrylbSE<cRkY|Nc5{5qKb zfm;pl?YuAXUX9;0SMIA7--R9O(g+deQ(iqs<39%Xec;(}eco>fUk1;1@$SMec*c_M z;m+N-<@g;<oDlC;x&8ziiCa1GI^b^D&m+!yikv^ayxgBz(dbW%N5e}d`)hrQ{7^U? z=}7ybxSwcgi6kS<eoHhKF_9Z8YNq=OirPcV!yTzfgBAuUEl`MszF*|0BJpNFWMcT~ zgr7>ZM-p)xx$eKj?jAXlipE?0j!-HUT^jM*6U{b}s>+7OwU*mCl1N)(nXj70qN%hg zb@{BazpQhSt*D7)!me5H|B}Fe#Q&4Bmsiy`RQMCqogI<MLCZ~4%XM`{WO=B)BNi#m z&(^V|IUM%Gu|z6j+jeoHEuLzRrrSpFtX;?@;jeoew}i^Mwo(9%#e7HWz`{6ySO zw}sMvIMLo7iZ>VMd-;v^WxM-DEfgV2w`9_kLfMa+>@P5e(UTYY(_+#15<i^`b^1+_ z^s-2VWR@lTXgCp16?dhec=1qsPSLX^Ziu99e40^`up9|e^dNSWx@X#(BFV05XXE<0 z`7cu~5yNOa9ZAMRv2LlPsYPTtRaom|%Fq@G%8`hrqa8v1O{#xdt-iJty2We?#bOCc z?)iQ}(ddyW2@35K$?tNA2lmR=cp@1wQs+lgex$u4-C67nsEUM;-;P8wo$~386_I4Z zZ%HKmmP{<>CqwbpNU=BAuQ3hc4Nli2($SXAHB%`lA2nfkLG9qQ3<c8$kMawq4IMmY znBNvk`HK^jsM#Mp+UpjqhGCEn#g=FoAq&oXGO3JGxQR-xys^B_`ivgs(jPsF)RpWK z<_MFl-;zwU`-8{$LkEv7s4XZTJ!%*^<wPh?#N&~0I!Z1rNMEG6*sn+?6UkD4@F;~G zZIUM0X(3uGl`d8OK8cl&9!c&>i{!h73^g~CHv$yzYLDXXA!5l$sJRp2@H44Mv0ooa zCp%SFBQ=9Z7Z-OA-yDfW(xhoB^QWn*;^8*+3b{*u5*^Vnf2oR^x2r1jaGVBS!k@TL zq&2*gk@m#WNXl>0Eb1D+D{|ngoZ^v~za-MRERk&PmO&6EvRsn%7l}mUOQUHs-2bEu zG*1$NV$SH6K`MeouDyK5YmLIGGuFtUTQHNsp9T8UN|+@6v<AjkQ$INm9)rYmtAOg2 zQva{LH`QC^u7Qy~C6nsjjV6SZU1YW^?e6Zr22w21+A86S#=FT?PDuHxiAFI@Mh`Os z9-%I%{g3cfiG&%GnT~G5LrGQFHcs~&mP9)`)-2CXq+3uc>2zx{!FQrna2zTlty56j z)R~T?%-FOe&Uggzl97Efk(5RNrA$Urnf6FFjdBeNYa3Hg-n}KrxuDi>Wf4yKOB2zs z#)OO5t;KA(Kx%Esu4Hotk0Q@CU8jLDipijxT;V-_ft{pAk6-8)l#dxX6zk}zG$!U@ z1+{cyjv)L;ct&Pu8LL+|rsganb}MbSEJ&SHcJ4L@t(k0X1$s@Q#h*W`wz9!Y&)u7; zdxA_&F-=R!scnfAleQ8cT~J#{!{bp|_g}K3!E=XN_p;y_ZH@(<_h+^09!goKqAXBx znp=XCGuxK=9mzyEl42;)a&A^lX5w)qx-0cE=V8Q8vK}Z(xl?>O(^(>I79^96U8!n^ z2E&jHvSU5gIV`6I|14%bQX55DgDLWVi6h~%^PQSI+!ks6Ut;Z^$oL`FZ)QYR({3@k zCXp}+Y6z_{rAymnfTH7Q9b}nLn>jl>Q0NT1F#1Cy$>by!?wqRI$hKQFo`YB#(bCh% zEt5vG4mF`e(DG|UHT~dn)(XrRNBxVYsJ2GB($(C-2+*iP(8r8i*wwAdJm^Uql(L$f zy3Igq4TesdmQJu{W$G)+=LK!?pCz&t{p%7b1s6_DmoqtaHRRg!wXqm#*;z`n*V-$j zTuOZ>d5I1bT^dTN*|KC*4Q(d!HCo$jVg9tW|ChQcg|4~<ovjiFx>N4pRKs`0_#f&O zO}Wz1{X++j%I%vOi41dCXCjki1}gOz3?7vu2sx`#Wu0&Jb2Ub`sNL4F8gxTx|JnH> z(83sdeo0Mb`5eg}3K{Bq0zE33(~Rs?I@G$!NJp&Gv^UM3icsw4RH5ITtw48CSFEmS zDx66sBk?rx|6`&eU@8-CGn+XxS#{4k@ayI(m0QZHW<aOm(|FxRX^qiCvw@7(zh;<P zZI@NG+~JZtKL!D^jhdCxob|CTr*VwpJxW@OYoVdJ>wA499ARB<_J?SV9^&-$oTRb= zLcZ1Xk#Cda{}jd_Dt%^5&ceB7dJRURG;01^s%wV)%e1r2XZp`2p0kt4DMouJhLCEK zR3xY4*cfVLwM%iq$WbG)Se>Xm!Dcd!=F3{%5n_jvR_k_6hz)4`XkQ3hWN9>!VK>mV zxe4a=p&ilYNsO(oSdDBIv?C5Wwmds9BFowEAlIqTQuS+;)gfg=X)s6QXk?*W-E(f- zZYiWU6#Lbo&ZdZltlu6@r8*)pHdmxEr7P!P+4|GXhyt`}3)-Zuyj^~^G6Y4f^_x0_ z0+sttnJg&Jsa*FImPAb<nmRRJP<73YaCG<JL&(nM)Rj$;rRp7IQ)}Xl89q3@W+rCu z>BNc>B8OyVx1UxbyG4pcS~%zk)@h^M{FOiXYactNU>X`q_e8ZTmX|7L14)~g;%)M< zbMu&Bul(o1g4lnZh0;aAVHwRSkZn?1%dv%{#;^5&<9~LPsF+j=rul4T%;`cEGWiz? zWTP~4Qsw)NiIN!_-#iWJP?|B}H$+$9;rn$7EIc!iePhrcMIT?pp9zCUmCV-(N{2)q zC)(DIwcs#g^n^yU!Pcs)V+mieqS<ZQUj}1yXaob5#zf<AMZKerwR@558G;mFcQV7Y z-xa`aR@{+5_ds(4l{H%{yJb;pa3bIpG?O>GEg9OQ@eD>k)S8f$+7|jSo#6DvD==!c znaDK$2Nt9T7W>l^W=t;&#W^YCkjxyoGN@CN8Y0Q1Xs-p~NkIV$;*)APhf5@vP<G7& zU6~D?9!=?}uX&g^Tzbq9jtQj3uvs;;5sO8xK2z+Mw?)F7?X^WXUhIe@HK(AUF&D=D zf>g<J22h%~DN?Jq`oCXU&s3K3lL^#%7ROXN!`wH(*J$OOH4|$lC94#3)Mpg$vT&GH zLC43<+5y=!NGeIfY@YMI;XMAdikX!)epT&EFw^IBwjkwv(2nG^rdLhH{Ndj4`DOJr z_zur6%Ve7^SZ{IYlxow)i8ES65=A_b?92~y0K*j8tRtPI=5v*cnnadc`d%A6fl zw3g;K*pq7JdunBmT1k&u6*q-aZHrJoG{Jiln<h_7#F{6TG)?v<vY(28bb2z*1x2Gq zrQ|-b1P5y5P0UQ58*h#zbwW6?Bs1A7^V>5ziHwEPTD45;mdB#3M_yUc9(oJ?+Kv>R zmrUU_efqSyjg7T6oR^xD)`=l=$TqpqN3^Ml-;_zG={wXqWJbqTG<dQ|M{HhMRTX+Y zQN!)cM9{IkVz|R#BXyiVx+ycIrW?W#iN=G7RsUBp8!GDO{g;T85DD*=<9tq~7ffVp zl}f}XFH~V!pH1VlkN3*7@3DU)%^u>##|Z~5GND+s*>7m5^1~6fM=jAX8#H-K2%%0T z9sIc+G}iP)MyKO6dw7ZQSW58bX1|92jVP3w3)pg|N--=A#ly<g8T^JwT3dsZSJu+X zazjgpNIoW^s!R#^#MnYcLy!W=ir^V*%t!ff2c>e4`OO?2#u6cVhJI<%DK2^9o<TO( zbftMX?Q9PvbttO?j#4vdf_=I3XhNl7kd?)#dyGKj(@ypp1r4G01f_~MCz46AH4!t& zu%OEjr^PtkF=r?3R6o?p^p<rtW2>9rnleOKK1R^sVWpOiwq`<RuuTgkn=;L~Az$j$ zR0c!3O=kg;NYizp4h=*)-pqb#O&yp|p(44F6g!wR?c9x;71NGg=L$5(6vDSMnxb)K z*B&w5kjyk;ONAqGO?IxEa9ENuLq;>4%U7$AsV8k6(-@N!6l+>@<!vz)FxpheA2nfg z@u;1~7Y{EU9)um>m1R<VI*F;jWin)Ds@1eC4RwB$_FqQ3Y67cg2NViNjL3COXlClR z$9xh&c{m+ZEp8evZWjc7Pe1^ZOv*MKlb$<*;ItbFF|O?)y2RHPKS>!Mm&`%^P#u%& zV4<;WnhsZnb%mu(JDF1?QAQfPGBXVM<5#CzNmM2~TCJHHhjpZBZJL8@ApY{XqbU?! z%pjRoRz4?ZXiHH2p*k&+Pz}SIxvD*s;<My}iS(%XNXA@XIyb_M(aBtk_@~2dn(;N+ zDYRAfWpi7?U`i|YD_azb9Vj9c9Ba}4CalvGO=C7EA}KAM`raYmc8V2=XiO3+(LvED zYAb7p7LImCMQM(U%nZk5E61tYRY-)?0Kr7dSezDW3sF=t8DfH+rp91AN(svvBm;8P zfsYKWu@J}AZ8EBwkalcNkP01}%ow&tGwrgYivf=7_?v9kP@C44(Y!PbVMAspV=SXm zCt}g1NaVCcih*Iq=B!9^MWi*s)<n)}@=K&s3^8L%^FPv_mdGqc&$4ryH!T@j5sd-P zM^bI56FMv7JTnzzst8;w<IPcOQX7u&w~_O%s21X^_q=ElMIbv{PD?Tz*gVm0Y>{M$ zX)!ZB?pniyFb%|JKN9t)s{vA>Scu|fVyz*KvT2zl5*YGlu!hJ&XGJ03kQu@huDq(E ztlnS1s<`hgz984u?~ZJh$08wCqFm|GCq=#>X^{F9DOfI<txP4%7hFZ;b8PpBHckl& zg;!oXx2Cb4C9NpM2l6oA9rj%ojWvfuNv*^!ByLw?7AOu#<X`AVT1)*<#-GHWU;-(x zYw)ydH-EC9i`~rZmUL5gv$c2bnj$pR3r*1x_h2SB!(d)TeM2SsgeKUztksn@Giq(} znu?-SsmO2Wh=ij|e=1k1G(R6rmSUkmr9*7m8EDJe5=_<Mbhu+!egRrPp264)<|U~s z`33A4@N4G;mR?|jZb{^$4a?0;Mx-OP1PxfDm*nyb*p%R_F;GH&Br)1J=-Ze-I=^5{ zmu*b`j=6qzW{mi{e89%ue3IQUH~88D<aevO1WYYi>Xk2&Tp+s3)0pjq>XnDun-U1N z3@DN)6)4;x#u^AmVuG2>P)|5Xmpa?sMarXDu?zT$Ua!wDn#L5RBY_q!H8dLod#n3+ z?-rrJ%c<J?mlPXieRSY1<$${unxafbG;}vFa}hv3*-Tj45;4Y`&Kb-}9!0j>1G55h z1{kP11F}^i4%3|JuN19d7b>$y*A0P=NP@*Bn}H5d39A*0Wh%&<{p7qzvN=NO(o8%_ zWDa8|7ZkEHLOC+Q66%+=SiJ?&L}O#m#dOoGKbms_`qhzkZW5&0q8%jzrB9F!3p(4N zWQY+vFejYRXtMSiDv-4_hMG+GyZOv6(zz~bp=@Z=T<HYT+lG=-XpcEtncAtlO#vCQ z2Ih!_`5dB^uOmd6P~JGrF!KuAL=<=<1E~)5fYbm*V=d*jgD(@}*WK=l<bt3kn~Y4b zVAfI;qoQKaeuclx=H+ckW-wNgU?wk*g`(|N$JX+wL8#WVDi1>(btSuJRo|tkn?{BG zYrcOuV=}aitsVaeQJAxUKnE^Q#H7%YF$UcrG9z9MM|aC9fIqTmXXoONFB&xtGq+W8 z8cUlQ4QV&ESf$bI0rY{wgpMN>_Kr)+FAJ`}&@zekM3NN~rJIepQ@sP)9*CoFI}deK ziYo#%zIJ~`4^6~loq@m98y8esWHQpiGOvsSjUFdDM4j6aiO^169@&pL-5e845-Noh zGL0I(3g<LmhcfQyWDvR{RdFlFIxVtCCU$yKm~64<)>jb(jnJ=`5?-EQ05%V)<XdbK zLD0TddQRA>h^E5k001#mGySE%-E9y^ix#bxOrTbhM>5gjm8X*oNU7Q7onh^*f-#EC zC~K@qT321O8dV)pW?t#+kS<fcBEo@vcATRpd(xF>(ww#G0$G@loOG5NdjrZfT_P`? zQhC!WX4TfYRZ^c>?e&W=C28Y`xG2#fO<8AGcD`cCF(Mf#g!X$vpggXr0Zy-|>b4W- zGljWLqIKNu!A-Jj+lWuE_>*$|zZPj;ZDl#P$y5!rfuP3r!~6eBT`L>PYikO9&X$~{ zxHhxB=S{C^u$k_wrDNY{2bs@sI*l}6CV}AlkvCmR!zhc<0{s-J?ch&Kh=UL&Z@0~y zZkiMK_C%OTlKn~`4I2B5B}VY{h}n|BR5%&!FdKW!+U(h@M@&;@o}L~_a|<cuO-GGk zX0q_7nX{6$YB(XIS7<Al9ZG7|RDMC&_yp>Wq=~iXueF{w6Qx^1LsHpgcI{eG+{7^p zuQCqQq;84)r*^bP&9peUx@vESS!ZAxjA`qYVz<c_u6BBb*)B72OYLqapz+a2Eod%5 z-?QDw(6CllZI*!Pi=$2K8Kd6x1nP_Cn7|Ovb{I~YWkPH0TdnlaDP6ug<6yyN!i;6u z5(Iu>Gl!(x*m1RT{f}Oeg6QJgrO9ZFT@$Q6oT_x}5cy+|RE)-<<(KIqIA!rF%4gNO zOMiua9TNyUHly*!5@GFny^86Tjed27SJ7DJRqR$#jt-wNI=s0;sbQAktifh)Z&hlW zS(NZwVj({6q||h5xy<sJNq4Zi<7SmycJbXO8I=AQJ0Ajcs3eNl6~>gRDY4v?g7MfW z1wtDK<sEzoZK#|nFB4`?WmOfWoxrw6UuZNlQC8jI;HWba*7=AjwkreM7oCO_o8nJU zA#}sXh6$3#ksOrp5LP-h2OFolKPia3Oqlugm5miaAhT<rS~;bT=oGn`&1yx6mAx^_ zBJEX#Ga-(pyozQ%g;Y=u&drRuQCdlLB%YB3S2Slh+@sVehn0Ldi>47p6!D7IPEG_X zVw`ZrmfCdU_Bg4NuWRl04yZ1mdKK1P3$m7j_71Yq-O^yiQV-1LHf5=EHYW_Y*>3}Z zYdo^dEFPL{vTh7prx$9S3Y_gJiIO#^3k4kLRP2+HW~wdL%nTc&kXM1GOhCw;N&DBF z<E!sDnK7RrTcY+zKi~PIOPc%9?339+X-`qbXi|)3JGatYY*}>xR)K2AHwz3I7He(F z=f+L5DXLe2aPak_OCPFO&IZt2e=xJRwo?AkrU(Pn2-EcCD@*qsu-`DFy0#|LrA$`& zCiCEy1tSYhQG5F6a!OW06*$^d+1M0SEO%FV?Pf(Yk_xTk_10vlo#t7N@*k8&4JYYU z0Yfe7D7PdL$B3>@1a(-$?LKp;NadIWBz;b!C4s8ivgv+N#9nn)A2Ezka0zejJR27c zfRLFAilpt@%ekyP=x4e+t$8FUNU=AgYHq`<UD?UUGTgFp(?NDzNpobv*J$O_UL+Io zW|%v%4oWE$HkX=c9II8?0P+d+L6$s|aZaSHR}EE|6-w1Ei${_<{^rY13tzXjXHVe~ zThi@VdPXRjh-5X)8PUa2Z-zDq`r|ip5jn->g_OpbabdpT48)vHcYRG!GjaUHfi@$W zwl-~L_6aECtN?4>)tcn!RGWcGz0~|w%Nql2Ph;8j%5DjzP$*DbRe*dB@uljSR@Kok zo{2EpoW>$&E{v-gsycs@5qnl=%xu*;=xC_-W{`iF+_*J@s>#698JDxwC1RZ%6EQ-Z z1D6$;u##P;SK6iO6R0;sm$ps0XO=ahd`Sh;fu)M1FBgdMavh^&S1+^h<BoqYGL0~e z9^=gnH8Ca4<XnNAXGZ8vJ{Qi6Bsd<EJ&E9T!nEJc8K&EqWtG>iQ)_P~Jwb$M6Y)6= z#>BRsuSnJ~PggdrQFr0=*^jR*`r>Ck?a{a9Hy%tPVeQMjnOs{=#&wwK%}j<m+W5<r zH(!T)I=sZjr4s{YN!e@{VKS#7GnvREu|x)q9AmrwFa>i~hsjKK7Ddze^cc$E*r~$j zs_yot=~@(bhKH6BDM)MT=d&6c>%3VZP9?orY*M9FH2c+I6oOE!>%+_}ejnk@igL3& zE|`-DErQnKv>dZrFJXG6-JN!-J)N6XZBSjfH(7KGhF@!2j2AJ?8kw4$lIzXlf>S2R zK`@3^e-3{zaRjVC9JiZmAI4%1eC28cEijO1CeC4Jr&npGyb@;B5>8=h7gl;sX)1@b zYbQs5>Hb9ha7O25Om<Y2Pa-XnOR1P>m7I**V?t?FUggZ1+Ioap`RX?jY^Rt9FeQwV zEwlMKidhYdj6~bBcM`EHqdmVIK4AFN;l-guteCmV#4t&5rfA808t4N-G@a>l%qk@> z(US9{7rwgJ)mP5rq?K=&g?>$KV<l!z=h&B&mlyh#HS=)bG}mO~%1K5wwGCzS&^~sZ zTUpWQDU?R3L`I|3b+HDjy`91|?Y{a_6;>Uq-*YUJ?QkP<Ybb7ON?&E2*R?zKG^`rz z`GMKIR&qM1NvtyH1@t_fELL)d*B)@AL24b709XlUUevZn(jG{q0tBDFB!0BGQC!fM zw3HQlHj!jjF=0dKZqA0xkEkRIYev#_5YzT5bM}BGmFY0kl}?06*WR7b#|o_t&f36U znmO0mv{MK!U8unPc!H2tnY2w&r1<V!y^s^HY`umOKCSBo?e>z5xuj&OX7yn{-D@Xd zzF|p24}R>T?*-<_$`xDrse$eEpn;Q;3o|KykuuHhm7G8`t6B{bo7D4ZiRG-doOC<8 zRBm)jzTEm{X^t4!-5UuthgK$J;EjGw5si9eRTFhrOggPOj8z}2P$nrUoL1kI9&WB! zRI2-0IQ1ipGm*SG88Z%cQ_G5AZS07p5=4?Zo9}X~u^$3+91`)OI$c%Z=p@<7cjy(S zzBT}N+RzmlK3oOjD9~hANE0weM$+NjF!8wgQ433aSwnecrO#J(6q!o%OA`lsG-I8R z1lCvm*@r()-uWmbDXx}BDjDL;wvr1mo!;zPu6|_4Vxj3#r$pKD=gsDOnKqZR`79jw zX0u{Nh^9%mJP46vkyy?~x(PZ*7f*u|5oz2uU9)6lm(Kq(nw5t67-?n=_W_c=jT;sI z|0coEiqMiax}Wkz;+-M>cIx#5tyoHJpx;Zw3iE+J)4{>A-5~4wL!>$XPnBwB+jvX9 zQfx|S?Q77fG%B;v<#5%=_vX+T=1&P<6pg_W2}eM@Ihkdwp5C0!WNYUNQ`D-mndP%8 z^vRY%!`U>`qjW88bGcDZVpU}gjoi}lC+ahIyp?q(#nOwP{Rqk#u5k}Go=q9)8J<zb z7ZmYZQTxM3TS=vE4*|3q*yA0qD#YP!l?K!rnxAnqU!skv0UgAID@t`FmT0u{0TG9^ zzI9faU*82{V{MwEIL0Y8o)jH6@uinUbc@if`dCtY5KVYhQNAxIrDzj<R~6-`k_)74 zEYXIlIA_V2%O2W&`BD)jja52Lu=*5}WR<&(rAf)!veSV%e+i*45QYsFCDAFc_McT5 ze)h##OS09gHb<L<3?x1*HS>{$-GvrRRl}Wan)4j9Ty#HTSaYQ!DQ)1_mJ+wtg0A{6 z1EiW2HG2`M>rlcvNwHXKL990=XWykyL$qO#-x!3}s-;LnlpZW${ac)2cRtLk)^Kzs zwgWnQ7a+3S{7hLZBQwKVGwuEzzdBp@Y#Z8>uKzK514l-Q<(>Y}%7!vZ)`09=&0?aH z88Zg#*IkZumZJG)rKx%mi%f6^=~aiqD8KxTur?uE)qF^74W;-(jFAQ~6PDzKn|D$u zix%@$SQ=b2{;|-qs6nR|HSEp$ZI%qiIW0GCZe+E-;5<)<f~D4v&yGcZ;m^8eu6!t+ zh<-{FM{s39MEyo7FIZB@p852Ta--b!+mt99UX0vVs19YcW3ZKzG0HiAb!d6CJ=5-Y z+j8oIvu;}qHTNkc2uvhQX<TXy!gKMNB5BE2mfCc7rPbvpT{75a616jdjCs{ohlk5K z0rIM&;iS_Bs-rOqh&o-JpjFj73@F+klle?%OggJF-x;b|Boj+%TDBBQM<>#{<%1#3 z5>E__{64|>vHzML#}4OqSO&Xy`+ZhhKw31hLYqI+W^9An$-Snmx}u@bm$uZk(wO_1 zYmslS#(eqzPa$k@m;H=4eXSiJ7btZ(uYyYuMRC5>na@_t!fkG!(Y1^9%+EJWsuDpX z)b>7})h@l7TGVs?HfFy+l(;FCJ;Q$v1zUh(bNARRB+LMuwdiUw>VXT-_(c!2S4wqX z(;Oe8NSV)Z>4eE`hOSibYfr25j9O6WOrr~#bQdl}!8gMZ?VcZz=w!+6cXEFoYBn3X zJDH>Rv+mVUPyLB%D_+C#93qOoQiBj@yc#~-Vvf)QNon$_T(hs6Zd`~rj;ypx<SEjJ zi>%5VI0WC*vmv^Uh&Toc?h^;0Il<yqm$NB#w&na?=9h=K@M~rb*)){YOUBEEHs(FJ z!lrG90%_M(YD})RtwpV6<DzUOL)_Q%YNRIUkF-sFnbh{!*qd1IxOT+{d(u<@C(#6; zF{Po9=$h`V`O)RhoxXNw54!jvf$8=eYa6+Hp#S*U!rB7aot*hylkpB}WRGK++L_~x z2g7t}b}OVpag1gEs?(#)Ts6p<PUq4(K|$%@yb`;UZMX9%=B%vKFEK{|gR)wz3CO8Y zidi)fX*!LaIgaKQgvOa1%<qqAI~^<X1vGGR+E0tFa9C%4hl0|NI*24Fn7Qz=$c9_Q zRLf}TL_>(}qA+GF#Bk9L38meHbsE(aA}6_36?|QmwOs;Dr?qhmK`d+5ffv)bPR6pw zgap#vKkXCUl%cI%cdKm>wJuZl8Yg0^pq+jUXm$Go1cZj+#2InijuzA;`!679N{HJq zTpwvqc{v|XyH19>KAk#sBQD8X<Jw;BB3-)FyjhO0q44EyLW{lHmKMEQ+`L+LK-rNb zOGCIVk>CnSeO(zPH2%uM$W|>~=hemoxuAn+PVV|@3PW?NWf=-iPOZ(}=9SrI#wTsF zJ7-JCvZm8Zd2!`3#iat)H`X}~E(C{<spelZaJR;p7VSBpu4C{SHMmvEd5GDib5LTN zj@_J&I854_^6cd_uE*LK`YJnv1r7PP4)#N-F<W<OvBp}Ze+-0_>@__X-fjgbxcwR@ z4UA8X`YD?9_%$>ilMFJ6+Q7lSBB_E-T-<y_1E{b5ER+O-l_MJ{nhckgl-MLnbyg9q zKfZ22n55jGl}<~;D{;;OwDIn8;NuY*fKJ5}rmn2MG53fFGb6)YNauToe*SLOU@J?1 zdPanH;nnFE3}!L%_YK5^Wz;Ok`spLb){<BCvrWyb3oT*EN3QCawKMu_K5R1<(YJyd zly!{E_7I*O+^p8T?v7OJ?Bv~v562cx*s<6HK-1hRxot1xqD39r%r$szG0py{iKSvm zaW)FA5lXiiVaI?NYGUBxtv__WyT^!TUKe3)tmBRm|5^cKDCOyQi{_6z{=%FNhoVU; zWxns~43&V*5^l|YjCt$9rhwzx2J=zhY+5;x*V0u-&ze63#F%Mi*5U_8^cjni`Fd-V z(Ucjwa*)Oy(64rypK~V-qr7vUn!P;oWY0ycV}qHzTnNOJnT-3T!4Goty}AqsLJ8ff zNnqy8HEIrzG@LQw<L-x=k7B`nVza#CXWQM|b#8^Z6B<vn=*tDFmxKVZNFbejIOd=3 zF*|IHpZ1jg8545}RSDQLN>bqCbgo#U=D1lo=UPj!d&_29t0PbyM`gDsk_I_Q4uV?% z!Nx6!#vGCKcIBsOr5?YNuC1x5C@1rxR4OJ#ORE|GR#5QaLx$kI8TE^skJ91vNuBQ2 z-bKevC0*%IsjjQ)Sj@oc_65z(S}agGu{iEkDZ9nghCs2^h_0nmxds0Je@XehOit&R z{s>OV%`(o9eVCybvz(t|aucol(VD8xY#7K`Jy$w7O3>_G9|<k8pQ`9U{hWbQYQq|| zMdzg5?^L6h$j7Wox;7Oo%I3#vW^AgJqwE2!aIlULo~aSoS>MWPU`@)fls~A1^^q3t z#kIlK3||g?zAj@oUtQ|C?1OHk{O!MQr5mjJK`wz+3}Aj9VU|EF`lgG1q8%x#lDu^r z6-X(i)NU>{cN1+37!RYi(oAk%v`Rob7h%%cX@}eo>LhRI?P|A-`8r-Ng&PHh>rP(1 z_TYh9=hbr>t$l4hm(Vpq&xn{Eqb8+#j_A1(+)(Vh?|61*E9PcGym?ua8Pr~tZ{P<{ zxxH?e7BeK>Xh<|I*5w_o;gmfX)2^M(KSE%q4@RE$!;=?!+TH1ENuYw+Z<4tOt=YLk z)2$R(9lHf9P&T?7<4%$Lzet5G<{Dby8q-6z9Mn};J*7Bui<Wx2uWa^nDQfLbJMFZy zshHWenz`ry%cRZH7&q#0px)ApT+3AhP2jPrN=j#WX1^?7%F|drx4xlPJL!E#ETo0( zk~G<CSQPv^tRcj*;8$fht@rHju8;tuUB?qRB={96XI#og>sUC-=hB8yra9`DB}3YS zHn0SlKYp265oI@vodnxh76o5qj4h_mE2cRm4K{?)F|>$FisURa#peVh#!u8xK(v0b z3OAT@+pgrTb&-NB<3O1x*2Ny-YP(_oZL|Eqqm8+VBL{uh;ik9Q!USI0<|_vpkcGcZ zAEN`S(&avT8t67ovc+7>VQh7TTJ<}SB;sH$@=;@R3)T-Vas|q(a}IIgL>I_3hOHK% zrqJPe5D_WM-i^<?@daGJ=CRsCkQ9m7ds{(+1;OptaTiS2Ebu@_(I0yaf-DPECG5d4 z#caC+gT`8k{l|mM?dp)ZWhY$-#WG?4ISHzOF3l;6)#BBuN-!eD2g;H}I*i=t;7MLd z<jHQmaz1YbPSW00CbKou#2=U&?S*&eGvBBhMzn0u4!4-As}wh&J=!<b?Bt~1oO?91 zMO!GDK00W-g?`UJKgi8C`haNqw;1&UFRI8Pl(A~UH=-!H)DmQ7Z0lzaC3SjkA_dz6 zHBfF6?Og|xHlF-lZgz)k4v>n>2bAn@fo)KeBjTtpE^Byc#%G9AE~L+XC^T_O%xwWh zv|SR_fuCQcf7sG%i0WTevLA9AqB=A2?Qp?|&-Lt16oy}D>7Vt=uB>Lf5)GZ-{Cck; z#^K@;Ke+Vj$!>nV*uaXI8tWO116->oT5!#t-z;<L%XFdHg!NI^w%9W2Zj<J9d%&Xa ztM*$kBFN&aEHyyP`e*(X!U&&c!hEf4kixA$>PBsgIB)G}qc^24^M&4gSdqV7uiW0< zbl=(o+uu$$%&MHxSTvUl+>8xtnO-};#@=nCAV%k)Xo+Pi0tX=WuNhW3M*259h*SQe zY~Ka$!CkU;PU;e<9_AL0`xS|^*wc=N4rXWm@5jh5&BV7XZCo0XQNM~^5RJ*dyTMfv zrb}a-!?y~%L*WcA%4ov7P7+|}?`oaj##sC1K99LvAE8xIt!MUDjAmK9)$EP>c^^hD zqI(VeQjcgHj%ze{4SZv53hu7VHmgM^11j6q%k<Mb680LFp>Pn9lL3BRX`MRtg^C-P zmE2gJXiko@zoS+;+*wi!<H%e%HFrJT{Zr0dm$|L2)4)w=uW=EVdpstJl=-8{)y@;L zM^SXZ;;7rUHcFS$og-tgca9oE@fAi<YDDJzvRKS()TaaeF`wPb_;*&=xoTc8Ztm;1 zF;|#7pqi14RbS;B+qg!j`eU%aC(=r!6$hElwClnrq2<@k2M8oLX?`$m|NRx`<K_n9 zncr_1)iA-`8_g4(x;4^N>qt*zRj6ZWSSQ%3`Y9UQeA*2DNmQ*-W`wADDMX}+FL&s9 z=&0t}<R~-3@H2~9?(Gem6yC+UdusxZcE@~*!=*0{^K{gzPtHo+Mc^ldG3~1KdEFdP zY6#;U=!StBVr$_p9x#NbnGdgBRWa$H`{{~<iEkDXM4Xd1S9G(bl^?RqVW+(;Df<$> zTBn#xxJ1WSJa!{SnP-njtLK)5GI1uXU$*_9^4|XGuBzJi+{KUiE4H*b2INUdI4>HJ zD~6~!0^yQG&N)h@0z}9?A))djdfV<o6wuRPca&U@fK9CAYM-i*RMd#PnX3K+_VX|G z=kpzNt-aRX`$<C3`@?N5p6s>OTyu^&-p80@&Q-zse%`(9!9%dYu8RHV;GngN`)VvE zg>JUgEFB*8ot7`CiWdf>o{0Xk1FZu=gb_iju~<YvunP+h%WEHV$m~?P$sx`2Ee-nU zY3dZZX|`3-zHB_99bh(0_o1B!!KC&@hlzd0CKa4zVFmtgRFIQ8r2BkG5mM97P!fqV z_9W_~N255{^87PK9~}>!R7rLGQz@uzm7Krht`6NW#CR(+JK-ObCz(su;colZG050$ zP>V2hvqCpwEzyC;@!>oelxh|Y6l3_KVb@g{p+y|wl<a}@4f`LJ^LFhcFuf=pn%?%U z+eE%-0L`bdP^X-$?{klgV=AO>`_{K^D{d&ycTuwA4i^jN_2-W~^)ylpH!=SZSfv>; z=7zs@n-@j>FpH~rG6$ZcKn<q2Yx>#kzQ49z%>(nR7#1aQf%UH=W|>Lh)7eT|ZVf~> zgCxI5*ovd*m?|=|-e8!5fu{-gJfAdAEU3rSl>U64<dr3nTXU$3oTEjME-XodUN^L% zVN-4XmCrk=T9RgKS1f1oe=>+*38jJ_5lBjSpo0WCgeERDJVHo;!!L9t82R}GW2&=r zq2B`3!`}#oz#Fl$_~gs2QBAF$f=q~0PZ^I2`}}SP&-UFX+t45^j!&~%M4Cf^Sml15 zn(L6w70q3bk|lF$X0*Qs$Jw>J<+Iz??#SKB@fI?K-8l?~96rA8?c`{Ad8yNSOME}Y z5h&vPslyh8P~C8|%|AxdY%IIUj!z$hrq^p*yVVNlBGE>(8@4PeZPXGD$hHL$A%!+- z=kjBRFu;^9H`Da`U=BOIF%5>TuRp0_%j*+s*z$(7vT<*6dah~Gwal3qpHX`tx#_kA z%S|?KsJqG5HxI_m0HFqvcRJbM01aKUxoSv5F*M}WQ7?-R$M5R?cUsdLr>0e!c$a$1 z{Zf8tH*>ElrDQeoOGR5hj4*tbYziv)yIa3&GUZuZv@ItOdko;w<Ik6dsys!CkIkQJ zVBBxj(mlz*w6js-MeCbtn4`-v@j8I0ZbBi9f-bZgPKRWnu#uwoEZG3n;#(Mu7#8u~ zDsA>ZbA)=ZE>*-;c1gQn6t%D0ZR=Q;X8o~vxT&}ftS@;k2|y8uwXN0jifEv0p2ytv z&XJ#uq_rq^^za(dFH`WaZ{5ih0F~=>vhq-lAJ0_ESJum0dXAue1TfKM!JGD$V)kzA z2>94qb9nS~qUF7lByisCMqImE31FhhC_&XHpBay7G+je>k%2jxZ&Tbt3Z?mc9%cCP z--_Me=rzh~^(jsNSVf7~V0L7LjX7lV#_4lq>yynfb72e|#1reb)r0`1Jh6S!0N1pO zrRD@3#8Nmjaeb>#e7hF=a=#nK{tH|pBN9Q--GECaxw$wGuOvQkw~$PZ>^S*d*YLAQ ze}n`;4u+A4&*~!or`91UBAiqBB55p>YrI3R?4%;u{Aqsi3_CzB2N8F3A}InlC+0T^ zn`fVEBD{05|2SKr_fzNUI`MwW(1`nwlS6SIEo(yrUM|C%tLnUL(%JpV(fir0&wm`I zk-uc030>=qw7Q|tZw8p`Oq=ZYV5jh;^?+up+(8f0?Z1*Drs8VCk(R~nMD%cs!!6u) z<zWWx@U;0|IE5i<#}>mOzfWaT@Ke+M$Di;(#r-VDSm(H(1AcVM_=n9&wOH;&L9vT^ z@#FL3C-$GVV12UR8nbO*+x;L112k;hm&9_yi$Ru;Mc5Oq;To=Ia@GePP8GPGqqTAQ zmxKh%oAGW+#Hc=eGIg189jVGV@bGvy%{Q|X<#Fz(^0^N3vkUblurHTATf)G9(|b>! zINGlcbG9P4z;N=zPvk_T6KTdKttTi@HdSJiuOTbcqO9EJUT5zpJGLynwrSHN?2A{~ z9h!cM0ZKBPgWPbo31#DYIci0L$+3@SBDyH@(58gkyq&{r<&S?N_&7BJC;;vwLpD17 zi9?7UtcB%6tS0BYB;}b8(qwsS$9-;0xQhs-?X0TG3D30z7hM$4CuR?@;eqA11OMtd zTZbnH+HPN$;89IICk}b;Q=2yZGa<F>fy}7B+rv6MyC|4EM<Q_$8Pe@a{3b+<q)*Cx z60@3mYAP1Z+IG!Q9<_;qO$w9v<%jCQMV;yHXO9^Cp6qUZ9i%_SmcrJ?q#y`>=&-0h zx^Nea-e1S~@t`(}b>{@{YNce;l%<jSc+T<b4B?i1P@dVnuxyx<VZHgiyM4DOo}PYY z^U2S&&0iFRbx#;0&dkRek(BwNmAi%8#)boR5}lln{r$Gf;aMDb;xNi8To}irTPpw< za!;Ura-dF8oE$iDn%c(iO%8aZVePm*z<}dQkm(jT5vm6&*B)Jc2k$I5e5e(I-!<Lv z6%RF3mAY`Qz?DtW0C0)2Z>jTie~4&gz6Wz*UBdC7K8h-=&q*ku{nCWbo=Z^+_jaZ) z$J%eqZN|t|s@Tq~UBP%j(PgGqDu`P+?PAp#UrVQ1EFJ6hot$@3Rf=uV<*$9#7YD3u z+QwO^q!FGu=BKib9%rBQj_LC`?iJa;-3PaOtl0QgwY?oCAEGbn%o}^g1hF>35ACG! zgD&9Z*K+AoZYK`lOjtY_AVBZrD^P6ZY)`w_;|Ug5<12;KtP&bF=o&q0c}K3u-l&!6 ztDG?M<&<^VS-q2f{wF*L#TgFg)=?+-9y$Kp>F2sTqA3XRM<E5l_^(eKZVMUXLv^a+ zG{Ix%{NO=%wc`u*rr$VpjLpucC*L62F^#tC$SGVN)%xTc1Xur+Wuim;$`a$`8%GYi z2s(MJKc~0pFHC+;PAmVS-PCVal{AZYvb|<)?EE#%F&>2)V8vT*?}_r6FBr7WCXcyq znjDBHb)%Z(sIQzpb$U<*{MexrW=VEdK@jiF4<OTXJzeHzE7hl_Cc9PCF4=tOIgb{s z{TtnqAqQ4W9<%<H(!zb5kI8|wkGXVHqGygb8-bYiQ+0OKf8x2xV$y85DBz8&E)pk+ z<MkfULV-c%i4^cjhe@|!#lKHWhqxtJfYY^PpOXvlz>jKrSyQ58%>#$AQ{Omm+j}2O zqM`Q2FCC*kv(ByS-`P6o(<(nk?VnvAh%duV4;t?bAxpZ~8YxdFXwdFzIp5{RRlvdw zz$x=@geY=z-E&sgQD5+)#c(G;k3DzeF%IP|s<+m@9XwQrVfEnT442LQ<yR;|!8>Fh z;A&h~6?2sXw0^(7w5zcj@!@`-#T*KYV#i2dJ<y7})2`b`SQ#Wu!2(wgcB>%mXtlaa zO7AEy9uY{|xWTtgrIiJ=D_!vByLSzS{(FC~odm5^y0DP2p?|0WdZ1O+Hb=0BIwpir z>GZHQ0)A>5g~)7HJnHE8&%5`r#pj<7(}=$(C;G?)aaa~4sS26D&4&^FMxRoH(A-tt zppQNL(ic>MRk&esri!WO<Cb}1RSJ$s;Mf?@48qp#ZEabV0Qxd#<iI`E(J6KS;9fn! z9<SrieyZCWYacA#!r`{(NcR1#UV9=t5{^#k%jtN6{(U}AL<8D@14e4t7~_`bQPJlB z;ygMry}zpO1y8)EIBD|Fr=LE~$=_}^{g<`-{jbh&H{mn+mpa|!UyeNc#GxmiKRh{j zzvpN1PtNA9m6kY!l~h<h<c6l*_V>xbD#F*49ZaHuf7(irzc>jHvCNXs!&<q6^Ap_o z-FT;j_Mn0}$=~$0yE~N!chX~cCI>ls<*CU*${?QOFI72{ga619MmIpa3gnG&J0}Mp zB&1y`#Y+D^$&ZIpM*bxJ{^VdMzz?BYI1iHR=lMhQ7hi_{9%lb7{KW2t&tUspLcvAq z_(Yw}SA`Bf0%`d>klKS*El&<ogIYSwpPt^!kWB>n*Ax%e7Q7skOC|>o91}|ZRjA54 z$nVI>LHT8Ju<Xg?U}Sjm#P<$Q8aTC2V^V8E*tTaqQK8)Kos(8|U_4-k7_ILIAK1)W z;pPKhKCo{xdN5&~?lfS~5eXU#LD%*?wbopRoo#o|j;){DdN(J@y8mH~-Oxv#TKn?p zr%$f!=UbJ}KmU9k5WDsGiKjO`vUiPYR<bBWwXDz*0`0i_?tfUjd&e5z7P))J&K)~G zdpCDBJqX9HB{c(b{dy<P%Xc_IbNW@nU`~hU2vK)?=ibx2u;WYA_Hww(k)vCmK5-wf zA0y0q`taKR!yM#f?aSeRC5%6M@=K>qe|M`M_vxq8@S!~q?VitOJF{qPyq3&MQoGxb z`y<D`Ai0V9PJQvf{;#ZkZr;vV9yPtTn>4S{-_Ggho;Y#}JwUGc=-O8Zkw{=21Mys* z{Nj!;m}cSU7q=Xne(H<U?RR`((?6}%kvo~_*S~DZ+I0KY?RRh8&Z9?;6NaB!>t@s@ zGk?$>gE{@`qq}$S+Rc}BHHtU-va+8?o_#R8wEpASyVKd#*+=WIuD>{4e_{Oxvuo== zTz`3Xm0y3Fy~Beaap%S9?8^EN)?cCJWiDU3{s)+cZ6D7_SJq!hzx3s(^AU$l*I$~h z|8RD7I(vV1(e|_V`0t|(wejbghaEibq(0VA40DBPzRM)vV^{!tpALS+_&?<D6~F;I zA293pf`*qs%J0FzmGu_`){Q;@ow;9~eF#1;&OV|O`=h6KMd$~!%Waew-QbrFDVo0S z*P-ojK%{HHa}lJizeMlXW*;&MdKJ8!Q?Ma6Z#c}y9_14vvVDzu{YUGsg;QQ^NjLss zHa+9D4=g*FGoSrI%0Q71XIBOX_AGv-`q?AjJ#_RLoOKL*|BdR|>vH{c{UtiP*hYA7 zN{{b_Bi;db@6j*h{~egU1d}+_l_{g;pDVoiBN#?%(vO|VB62rbxB0iJ*Ixlr*qFE8 zUw?IqnEimC*A^z0uU-#l>esJlXL#+(?03BLL!fxqX-@fb)j_XJcQ~kAYwwo}^6s<J zd{%q?)y5ONGeF_`OB;NpdiJ)EG17;O2Yb%@eviH*_2IPe>?L7wzUwb`L-Hl<P~|;P zl`b|IhyB|8@49ol)_5Ex^a3+f{-iO=Xm%}!EL9&j@pmwb!qBx2Tt3+i>QrYS)Q+zY z?gDbI@Wz$dAK-ykyZ6yv=}@i-r0XwrWATx1aCMpgJ`iKl{)R&@kR!Negb(F?y8!^$ zX#KVM=fJ^!DOr`lAAkY9<~W-s-3P;)qF8t~`^7*P!7JceWg@$&{(n;3eK|8mLOQ9t z!uP~yXV7ey!VzK0_hg(uA;Uj_beI#B=(XwHozMWECZ`_K!gg{H-yEkW<)X0;-yUCp zN^blEjWr9G(Vr;NV$xM`jXphI-+iqwlrJNogE5~18+_M%_Es40A`@U{HILTj=Du1E zr0?+ZmD!)QXz$Gay#5o#7P@WYA5{k5QIupV1+g^vsND8^iEexMVYlt#;{5t+A?sDA zo)_&O2E-<B^|2=A188=|??O&E1FQei`RvWk(irsI#0SrN3-hBn7Znm1xi?#-B9@4< zbu@O=pX5?3ihS=WbwLf>bP1}y3;gH83O@vE7w4*0Rk!@{bly-$|DHE4uD={)!sP>8 zE&xfNs<o&r_&J<21~QoYpwTMC0ETzOC9|Gg9e<ROkMV(ncaV~+Z4!{-rvP(h^zBBQ zU4bZ97#xP5T`nq<AL<~jug}e?w4!z6R|UEBZ8IV&-l&_>Lmz+;RKW=G%Y!#F^=Cl3 zEJ$Las0#B9zB;)Qa$lA$VvF7f0TIEEGnHoerX5F!wb@5wn12T){s^+(GtzCaDKN@k ziOjgY{?Fz1M(Bo2F)gs-%j&^J)S(csgR`anm~PDV0@NMaT5k&8dk!qSjv<7P0L&Tj z=Vnmf$zHnF@)hF@)y8;)A<VwSa6|8P)yL{Xf~K}RHN7A-aMblATlF$~BZJ{2*O1Oq zoxFfyw9#0A^6ro0M|}jwczvMR27;M(XQJ_IT5Y7zG!n0SpwwJKf&3gspgTZ8;ubq4 zOVKODbbGzl9dZ5Yrr+Ca1`YAPhYz?eb#*3&@sHRw{d#3;sD3lr1=KqNd<pIIQfU>N zf~we9I828<bKxhvq<(z4o8}nwd_Q|{&m`~A&PeSl<M1W*9ek#{ea@6$ImBr2F;v?y zsm*(lm=0R>CZ3E_R$8uNO$bV)WZ&T~pu<SjHJ`m-f`?D2!Yjc(n6Cwj@I-7~6W!L` zhz#{*%usMaOI9btfd^t`SF_(T=>-l(i*3iajYN>PpYv1We9m*n=N_N>!EwHB`sp2C zf|mTgWAk2k^KVB`joS-@$`+)&*DI&K8^7O4FB`v~kDTxLhkOjQv&f4u?VVk~oWwI6 zSXVeAJM_lr9syTupuaXS4swzqM<E9;`%<%)#t8(7q0A*<04P50dRMvHqfUrw_B>K8 z?%8N+5PhiX#&eP*^p54`kAUPw9?PBA>1<{DfLEM3@L8d;y$wK{oh7zX%a-Vr3Mkh? zxl6pJ)1ajM9*X`DZoM)GX4W|$FQcqAjH3<`D>s3AaU|O<gp4d{a*PL*Cf>h<Y%eIG zrd9%c`J{Wd%-&j0l-8oUCHp%3V)|cTG?l56CaN$iD=p+`$TQuPz#=GHn31d&&v-ni zA16)J8$82e+y&HGXUnD=Sk=+c6`p?*+y)NksxvX_JNmfHRGDsF9{kYoio!0N81g56 z(s5gKKJdsp9SlzAE-UyL7&8!LE{@&@cv9-(H_iR`=@y>%{`(ilAA6q(ZA7|azF`)j z53GQ&4b?;qE#L8M6BqTqYUbTUBqqub8X~aupJ=oOYNk|Pb0rpSE`ZA8gIrU_1#`^= zVP8;*>Ri5se9zsF55x?dZT$8^a3s)vFulNpA~=hU9z#&iFo)5@CU+ab2ypE~>;t%> z;y0e}fS{QxM~8eP0$YgPc*4@&#;si=``nZ+v%#nTcF3pW_hp+gNpFmvH<2F`y!5nl zy0HT3LQoi4(zc9RC_<Q_aI~bCc^KoaI9>6MhQ#=oc+ANWH^VsM!Nzku4nN=i?R?Q- z>)0SH^94eDE##Z`6hSn`>^mOLMrCO#TvjsA_$M?%`Jq>t`Su~9W<LWbeZEB&jLjv% zf$zxs3YcFa;$J+yozriAdizi=&MJnO9a}BGh!Ww|Mu9n`LqD`s#E<FXB@{MM75@@# z_dyF3y>9TWGqo6_53)KfaP0G&(``AGv11DTN5H-Yb{vP`BPKLik33Vy;@%9AyE^$Q z1Hppo+aSa9sk)h$ie`p9#g1b)G4{v<w)(D8rxI%*t1E{4k!0$ulls4`TEqEj-(V%A zjA~e?s9+Q^+u@X#`AbehE?Y79IMF=lA#6E(;Vfua$XFn~*S5hPVj*JIGv=J_wk+6< z8+3y;)>)}wsbg{(y-Q!d2%FzCV)NC0lHz$CCu!wNJs&sAXn4C(q(EwL6<dG?^i~Cz z^4}`fxVB|>W#FC9&Vf864c56-0oL?08kx@osZ9$CN(}zcU&X_mzk{gD*Qt4F1QC*f zdwWyOvHHb1c$N1Iq1<S!*-zkI*Wy0rpex_IxzSA(i40R=J)PyipnhOOwKRRm+B@Co zH0~PG7E__$T91)$du*M_5Rzi+=DWAw%|)ffAecV8p8G3Ed}ZpDIJ$YiL~#A3adu&L z9)Oi>Q@5%S^boFiFwI1M4+39n9d)+>QU>c*c(@#>5zxKmxg$?~5sg2XZam1rs!GSt zyOtJ|lHf!`xokMkPm~Zhn<D3``}so{QC(r1hAQD@-X|3gXlNZkipmlPgP3mpMbaQ| zL5CM;h-<FFYgy7CGoFqxgm9kp@P)x-lrM}$m&K&da`2Li%aG%|)~ty%!<S<}H;e^f zhmCS@7Uim&;4TW3q&kuK5Vhxll?lE>??#VT^9ixJ`XeP{)V*WJ@SQn8@|tURHD7Vi z%k$jKH>J}7vbP6hZ#uo_PL>~n6jt39XDH>`j1c*bea8cR`W{s0-v-PQ?DTjR8kPgm z<#;->6sc;yEg(sBdke2I6|r;A<}VXtjzPdBKjkB|M{AVq7W082URgJV-Q=aFSP}L; zcYgf$y8f>ZgqU0yc?f)wx$yV5cTpYkiT)?Mrx!jqF&!+3U<_7dI{VhM3+rt`nzxF} zUfd>czykcQr9g-IRz)z210`o^_3!Af9|nAvx#EDZo|+r}akS5^@#piO-oDMsR|;h7 z78EP9^7)PmpPxnbbjuU4R9p~c-6WSh{(0uqOnavqKi=!fC`Xbj{%tI8K$rgW$W*T! zBDYnf22#ooT3$6WIWkx`$`T{`JYF7ZYuF2eb&Do**Jdts<1}?TLd26tRYA@^qO${% z1=Ufa)T4Pi8z&8C{|=!rY?IC1dDof2djeY$zyrW8FY}_!APgTYc}o4EiEy?5+GO_j zHqrr<>PGFD$ZdFN=_EZY>2v$$leeRx9o0^wkM$!;`gLGl@n$UURrK@8FA}l2(zT%F zr<<Sr;%J7OkJ<7vp)l)#GyLqOd7K{3V@q_KYu=R)>sI9&5@*-$nB3|5e9LBmB2z!X zsB5oXwlQXCU;@`)+9LkRmv>68j}+DCt0Ks)Eat~mQegfZjPNJXgmn$3s(vbka<fbe zc;1%18lImkoDqkh(X6K&wH)kZZTeb1GFCR$kNli+MW%Cs;UEiV{>01IJ|$Gj`a9^S ztlZc=7Iz^(L|2W9<qygX%tH?os_~R6h;Wh*)?XW?WgQ|DZ0Yyw!A@TUJ&4Ok6qek{ z|HRp^AkeR8|F<i{7iPbhomUl|;pZ6^LVnHP-_*_X-1;R?ErYFB-{ir^dyTQq&fdOr za_8(EUBAu6FJZU0xq6#lj6M6sotp%tgR>~6uLlCJfjG<y8Bx8xMns;d25U95@r%+5 z{<N(LlQ#{?gACd_^eVoj`-Z@){J=9@*X=XVw635P?;vjH)?eAV3FPz@Wiq2x6lysb zpj-a{q?XQ<E9eEWMN%dG)+Y{~e8#Ur<^Vkkc4t3MkgA__#lqc*^&D!PwCD2FsrzWQ zd2Rdll>FYijT_Kla_{N;X8%1%iEIFNGV=WO&1?5=JAL0|hR@6R<-QX8Q@oisoSF#z zzyRM{UjB#$aF-}QRP-kIul<YvRn4zT0HY38Cig!;UFZJ&dpVC&HUiC%$SM?5^v3J& zveP3<gBThi=$9-TW21n~C@^NS#`x9hlUBXfXBhy-1>JrV3Df9P2KKM-s_H}Uh})Kz zA2gEih^mo&v?4-RXpJKGo>XJq`*(otG8Kz}>Gf(iC_7dE2aoDerMEUH*f7<+(wBcn zUfg)Hk8xz{H}8#pq^t;1vJn_`#BUxh2PY1YX+jvZ!XV*0!B2@|jgoDt)k$-Eo5(I) zN;4?0vaYPFr9psMYf8NtVPXolT*}tN3C`A%T3ml|GJCz_y$Kox(czMk3RP!kK`!>D z@jXWQKy7NoLFe^K%-8y>6J$J&2b^mp0*Fc?$X$Bk>TQhbC^ffpg3^o|g~;&UE8q=N z(n+O6>UtVKN{!PG5Dm(f!jOP(+cUT@7y`g3)R5Dfphe3#UDUQ(Y=Usml%Ky#Q<tP> z=jjZkA|?QVq}}XtwW%9vqkK3r53|r+xf_F?HvFgojm-h)ks7(VpXv)mGB5Kt_9|M4 zu0hDSk0|npnl6vrxzH1!USU=FGH;%3ih*b|v2SMvZ1FzB8|(HdCURQta@sVR%~xxf zT;nNF@J_+r6$)*d+<){G#K5;xw}7!TbXGY6s)ogQaR5=I_P1J)z>StnbD7uKbr;e0 zxe)RCS~vxU+A<Oh&xP4k^l@;;#3PtIhZ>=FC^mi(*s{RC(72OQX>}b%=d3b45a7b5 zbGp>s)B`Jp-1H;5^etf0?<l+WT8EoCDFUsz57)Nv+{`6{61tW=aWBGA8zdHbTMJ75 zv~ISVv9*(;j4lLFc89mi&qMIP08xj&?g#{4=T*n<oqcfvKx4eHa;IO-{cEtv7r+5y zt0qJbo_f&Y#Jwd!szq`<;$(9FNe;oxL8^6lCH&dUqS9#2#lDe+RT-5S-!>zfnFo)R zTwE=ur|8~VV;&^^@jq7O*1=rHZGLG80s2s_#)gc9>@4+_1%$>{X7hgl>R4KzZvXs_ zt=s?pb6fA+dM8pcW!C_|`28tSfv~~1RaMfk)7|PXbuAH2@i2`D4OW1PttgR~=;437 zxaxTR8cY#wR%}2&gLpU^S2)Jam7(4-WbA=fLWL~0XA<x<?b{j&%;qSXhqgBHJ`5-~ zhNzQ7N36UA$r_dct@A=-`8I9fSLMjSE_V)wS`ACNLh9AFcsf-{p(XwxhIl{T7zx(0 z7MCGXkh}l>FW<2|ImR^17)N8R#5FT4ZM&#+#Go@QrYG&k$m*#G)!<pQ`56pRJOwB< zd@+WNTQZ0WEP)Evtnf8xYaoUVn+MRVv|F$>7}{%#^OVov_dTw(g<rnk@94?HKwtHK zoiZ9oz$!Dag?7XZZ5mE@rA@hmA#iqiu6GN&cxnnP*yVCiEBZ`4(PUs7TfJelj|hU5 z&4|*y)tmFmpKw&{LhCq?7_%rn5jAHJg);D6(F124YNRyFI;KYiZ_rxdhau7@B*xgz z;q>gSaF)SKgR9`oZnWdi!C_|=#PwHYXY^H(H)w$OK{#v!WqxA=q2~7+A%Dzz1zL&3 z&_)d1CzzU~<sF@h^7~tv5s~T8!6|$63RBiN;}NwRVKn4)@@2M353+E}m(d&lr|l(8 z>i}SM087~bojz<whqM~_ST$mC9+-EgzVK!QRr^`88!h-V9G?#|Q?fa}XaELhb{Ar8 z?7{u4xSDQWE2$S0<q@@HQxi8MA9ILEjm}ufI3`XVr1)8+@I8FO2AL6AEL(4bF<=oI z%z2uj^@@baGa>(fp!YVBYp~=G1x&ECjz0^+c%e{rd0KGO5kVi1L!mzcy$G;9H!8F) z*9z}w%Da$VAu;O^wMp|TL0)>{(sXt%$nv>q033hOq|0DdWcDBYxSC$L++e_SVPXPP zCXr!#2(;&>28v^0O8p6zhP+{@7<JbIgSO7n2^8x+HdhN>)TJyh@)CRy^%o9=Fg%vZ zEo%K0psO#XHCCTttOfs2#ENCP$j8B*RJ9#WoD8ID{!P%|6Q{f}d~kZb+@_)n5UnGQ z{q^Ex*Mqz7=L-)+*5Ciyo_+iGKKjopFH!%eHd<4nOG*d`1cybRz!5#8-sl|gm*{)% zK0Z=TZ{|D%ljkec*<w%Im=s+DxVXMD*|qn;!~6ND5UCKXpxz5Ah`la!JqXuZ*J{E+ zvz82iFqq7g(yzZrMEe4%o9WXhreEaGVZQD%+4ac2iL0*p)4o|0E#Diz6?q1E2Fwr3 zZ?kgS6mK1y$AyuQRcZuMOiE_RTc|y#U;Ys{=1#ASFy$MT`}UAm5gE*lBcvYP^YB;p zYUROv=-QL97L3<41ui*60F)*}<+?QV;vkr(aw1KPfMpd$t1Htj{3ZxyDAuF^F9zz` z^vP3CK6l5a&4)n~4_k6)WQu?^$=V_cR#2|ow7HJU0nXN4lZDI7J(;j_p9VX<Hj(3I zl)1NqPY|C2wu(nZzoa?C^!l>FBlCo@ilGE`)8;yXr|3)^!u&+G^DO&xr8|Cy7uh$1 zlfGlq=6eb!-JN?p8%J2?Z6q<am#%vD4Qo1eFc61jo^``>-t;$%oqqf-Fnb$OTKyrT zHT#OB9uzi&nz*!d&{z^@=b_9;2c<iWnoj=^DKJj^V}GNtWz*97a5t}9)VRG2FGZ#3 zc#YHd>M=TUAEBYX*a&?LtDHoP23?7%Zoz!mzH1$sZ`*(qxpR7o$zM8CfOLMGqAqpm zJg6an!dty>T?L%o^51+FviX-<3WJ=EfU@w&t~%}484HDCNjoB^{Sy?Yg0%sX#mqg* zIsAxy_}{nH-t-;IK-m|Hv#q-q#uTI&m3|S=%S(EEI915Uje%L{btE~fx(8i1nx6@8 zt#snq)(0La+MtDXa+{bdC%-QOm-HwjWooee;=&%hvXIo8m#=Xm)Jl3+o+*sgU}!ro zS6~dQjL#fGsXIXQpBVC|r8<Q6I?QuJY%rOA<q5ttm~Qc2X(4$nMiy5%%xG5XCt);Q z{cBSWH{g&7?W=4@cNM6_ksWxLZ@}$|xXR&Ekx>H|KCW2Hx1G!z@@HZLb-wJ3(s)^A zP?wY01;7Lg>v&*V^|o}WPpNT*g*7h<dULb3-9E%nEF8VMRKVG}oa}e}#O=P^o5hBP z>gA%nnBnVe#bWO@_1?5EjULbFoM=Qo29CuD#5B6z7#B2P^9CR*vb8YNAuGrpSU`M6 z*AArGtML-_#w_8{9g4N3FNp4LD=-O(2RLooxM5fm-vXSGOHQ{HyGLC^1aR-D^lD(` zvJKaQimho8sa`BHN807LXk)P#S$HLQGE7yIC5Lk37D3*5MEXYnvfKfacpVH#NK@+x zY!>Meg*@Nq11yu-`6$Me4Do7w)Zfw%l51deW&Pje$0>bZkC)@g+FKVvz}Y5~XC?<K z-wh!FORQx{9^D%1q?D}FQqk&KYbh2nDHmc{+oOrru^wGBunsDt!3{|@Y@vTweJQ$1 zyalUKzx?Fh_!dhn+|-w7Yg$fErde!3kNA-aaD!s5Y33M#FjL;P9yXNmr-b^j3+g~r zI&vOE2J5p(onJ-#W!ruYeBp9>_u4-!-um3y_P;X&5Guv?Mr!aWiUUh_VBUVNWg4s< zcrA2X;(XN4nDa$Hcs;Aa%G_Wd`B8ki3}JYo4_Rt2EeO^ld0+u~(O3n;uAnBHEpI~O zx$iUR9OX59mYznffv*&aErkeX?D80clLJ=TK$m_J^f)P{c{CO-6~Gb~6xWWP)eI6e zwK>NjkI*kP)BtJl1kOLT0T&(oCMsG77o4Na7)TX32Ek$CUJcOG=865D2D`FaoOoEJ zU&$L;DkbuLeH=+feLu4@^$y{dZmq;!fu&o;Ml7al0-EJDUOqVPP{|m%wJaE*33^B5 z6At)>KB*X-&VCKukU~3*ZZ)og8q5l{PZMo|e_y+y12sl?hg@cgh6HcOt`cA%I9Le! z>-5?d!+yJ-C|Hq!Qr7?@9tCraG=GTd*Ze_`VoYnxOUYb@(NKGnU8hbQRfn0nz~x6; zqk?sdN6gvJ7F0sr<{P{P9?fL6V4*c?as{Iz-!kh;iJ~!flCWT_Nx?VJDy5;}W8IuY z2oMgfvck?xvb^vXL!|rWQ(8LWlNxX2|Kpc}CHN5V%T@1;kRHOTd6RLw#BVy<{k6e| z+#?609r4X;D-BP25lnO;lP7HXS%@``eB)*>(<Tu*Orl6@m%(BZ_y%d)2X;TWqDX`E zNqO$Q$d+1d5u|cWh=@oVdV|(1Qx0GQ&2vq!no*YlA|__?!0u0ihrbF6#z&rhEZPkB z440<;i%@0HK0Y`N6(V^HvNL3XMkZ`N(ot^Er3oMGtu)p5S3O>T@%u-fGeIW%UdCr} z4al@220_hLktVdYyg>Tyd1Oxf&=TK?mZS;{iiWwO?aQ|aaetxUMxpe%mdOK$_dZAV zGk4ViR)<G~XsZW@rY+sqC&BDmW8ZV+%{Y&ljh;{p{`#wSqQZ$2dM;3n%+fqC0Lgv0 zrWuMh82}j#|0X@WAku^y_%%WCF_!#fRbnSI7dzoHt(Mhs4-mUidhSpq!BRsYp}^3x zw}F4!tqJzt+@{TSsP%>#;#RVF&r}+$l*EYp;(<js=%n-qD2c;G&_Ky8<pb+<ZSlUM zPYnUf;$7Bo1(H_1bu;<FGHe@DG2zn!<>SPfB2xq+VwJIqxT+)ZX{`=Ai#~NLZfbWT ziSdecHKcU}&NZj2xxM9~y$|fZqf8z*2o4+v35s*I`KfId3#)ZYQuT^`ml|T9*eL_W z=*FeKK%NipS!<3W$eO_GrBH-NtEt=+$aTZ_SBGpw_^6aDmC_XqUOpJQWt9WKa5(JC zT$EL|l^sF6)E?5e6L+amCBpQK0umE;AaqZd*KnH+cmS*{)QFd;ybYnCsrc6i!SFJU z@k*9TlCB)h2{QKQi*!Cy)rNKYl|BYRq9|c>90?q9g#!f+Hb!kGyLWwUud5q8ou3(o z^1c8p8sLP^iL&%Ix&opFZ&>pElDgSnQyTLhv-7jFuD_k_U@VQx=#$<5w41M|t{s1z z5lt%q9f-Q5v8X`K6-odRYevDtMq5>3FtFsj1~FQ*YtyykG!GidW8fH=T(2q&CQGPW zXfVmtUJ6!xXSG8EFtq?ib$|r4x%n#1n50TH1>{RTH0EB46*6ti?SAqvgU-5+09gjr zg7v33I17!`zCB;{McyN%f*aG-*Y`a5AXxl-l}Dl+nF`t%j35@xxXsb2tK2!Zd|>U# zf<ar{%|FIDXfhJQ;_^Vfu_3}gKS%g2Oeo-wCdAs`Be#SbUmWA+u}AmpXWefBED$_) zB=Q^z8nVX&;Ou!0Ib~jzv{@pE@#+~#LJN7e-0;~2e#D7c|G{MTOD5H=`%uIMOY)Kd zibo_Zkk?`_SGsN0l*$Gz2TM>4t@qTZ$su{A+23af*wRTxy*AkXO+qHNbCK;AvvadE z*6Bdn-_z^`ClUZ>A50NhS>B4xloV<&WOq5T3Shg+9l%y6=<qn;#^)zqr;BED=AM>P z*49UT&E%0Q6pCA0Vq?hOq;wiNqB%$(pyw9f1yvd~UY@^1M@Cd_o6f42Qf9lt@~>#S z>~i#(*SXn9_3nz7fuyfr>g!Riu`$r7t7yIXB=0Tom4@->asm_()I`Bq*-)Up9Gsdr zx`<__=Zoonsy2m^3+E!t?L)XNEYueQ$2%y71*5PGb5oIcpRjl^@Mx^)@<zaDn|UZO z5(GKY7<-d-JoGxY!C`_$M;<)r-auuZFrRqdXP8try#QlwoMlv3LlBfM9qeX@l*5`U zn+u~No6L(Uzg#Mw_NJ=Uof(%$3>9Bl6S9MSZ|W@NBfV_WW=u|=!uyG8=7s44-~C^A ze*aVd8{3J>#^9@4N6_yHbG2>Lrr8C}%h(U$g@r>wP|)Wb!zXsP{?oD~Mmm2&ptLnj ze%M~bhl9G0212Q`p4{kj+LpdJs5^sL%;!M_AkFkkYLwqYW=@dNiC}S1n#<MVxR`<J z^aZ2s{pc+1Fjz396&qi`@uFztW>|93iR&#;d`&gaaPKZ%2YR~tVaVWB610`Vpl9Ma zthx9YSElN#=3`-NoMGR{r2lixLW@@$%;N{WW$oQ36GaPt&}h0He7KF}&@s(8U~_h| z6s?UGXYw82(TZ#Pm(ZmpC-eW62M_G~+J9zV61`IS9g86ayv}rCt8ypf>nNv=R60d@ z4NO{}7=cwD@}=_Lba`_ar|H`C<H0MfClj>}(>H2)K3W#3=Q6|_Sq+)bJ!~|3J3~~y z&%|$*m6%b6Tk*0d@PF;l$-U1X<23m(9Gbatp+Go!X`kPK*E6LaeO0l-y7wU6{2QDs z;X)?XS<xIm2@AbCySi}Kl_4S@G1<rZE?~xwB$SddWr4h&>H}peR$T=!zpXYXN}^~W zJN+76WtB{-yh~^1qXEnw25;7-ysgTDv(#E{;$Xp%UKE)O^a4pm`b|hRVoCGOqXWbc z%3lbLzT(Z*Mcin@BmAIIHcFBV+aVsZKNEUmj1JL#mbs}4;2paA4Qk+{qFX!`3}n$m zN9NMJ@;{l_C8>#q6ZhDWFk_}2BufYvL{Vt^-?aQW!<G$*pEwsso}B}P7+inz-cKvS zIXgSg|6kV#l|_iX>Mk0H3+8^|={XqTgV4hTou&7~VZVxoO!jCBD5dtTTudZ<2JJ)c zN)VAco}w&zDonn5|Nh;m$>k^-5w-%^&m*MnI1#cMsC_d{j#QDYcoX%7SNxfXfc{=( z0$manh0`7Ph!829N+C-Tyu8@5!jMp#UAcnHfJ^L|{%V`QGbCW5O>Vr&#G2-cDk%ql zu&043n}>w{NCHHSC0hZw<p>=xOwON{wW1cn3oMb#UUb5&%^JL$4|=e}dhzx*jvt}+ zkH9(Wbl|Kce1+fHsoUTqV%{UQDG?P)S#d2TtYxUkBE?HUX5O${>YIlFaw^9RCtjf` zA`0r%DMX{g;@BY16)2ha5B3W0@}|q7IFF6zbt0n}X;S#7k+^T~6#o)jFpP;2*Dc8T zNK*Y+$m)eZl^f6M5tJa;o4udABnS0WvAQxDEq@3{i-;9d^kvXnB0OC0Xjo5D-K`C9 zKjW33QPIAwEkO56gc9-J=nd;Q(Eq=UJfVDhrSulFe}DEX)UjfuV8>=y2Hl^zFM)8| zb@Mvj$m&=46w!IV;~=9nvF>{4awZ#sg=z7v>@6R@SX$Oo+7L6Kkt<)?#^s;8ixq=^ z%=dKx72>2Qm}%+V?ye!Rc&{`N)&>umMlL!+;kUt$Fh%a2>2DQ1nDKp8d;6)FEY*40 z_~s6fk-xh*kinLE8kwA1c#agj&3q`(Vxp}|S_8ffhkM(}XDU^?$W}B45M{e%y7Y~E zhskoZv+yuD(#Sz!afrUwKN6#=R-z>;O(%OEFoB1q7j#w!Q=UB8^VNs<KC0gCV_>#M z!;o1soV~Yot2?EyN;yRmXwakFWDCC(>d?i)!Te$s?z(ulKF2ym^HJS==cn%c(w$rR z3=iKx<9jsrIUm_?ee_^x90sYGa#sp7)gy+YS&?x0PW$Tq_sFArzHyg_bg`24@ZSA< z_)TRhA2WLR8~moOJd;_NBf~$uci;WrAWM`F2T!)yTnncT(4Ixi)Lo=`+I|`(*n}gG z`W^T9S#UKu#|EFm+1^@h-JtJ6(y;VJd+7!Xse4d9O2OhfG0Yt$gJ3PQuC_l0%N)W; zL!TEKq_zrMd)XZ2fe}V@N*sZBsmTngY~|%_5^WjTZizZ^2pzYmvtEUP!sh6mZoZ<k z)^_2)+}ErbZ~HC-^w~(cBWYWo1g$EX#q5wd%b#vlVt_8@a-|u~!c7w<rmm&Q&VOB5 z3ry5g&5+(;s41kt|EOcJswBhO^=|&1%<4+KD&B=Dj!<`;$rZ^0#BX-BS%8HMnvZGH zttccEkWzswrb>_S;>yNop)+>Dh<#y?9M_*@19EcOg4sxht{EWqZMnf{L>p0PX+p5f z+nvAz(+w72BxN5`2nh_@&EFE$VnJ7kr72-vw|>XW*U8F?0kU5prFj+gQ=8B`y1J~{ zHPAev=ynb28+bv{hcH!wY`NcYDrG4PbK!Dt%W0JRYsrMZ4Zw~pro1(JVM-(VN81|N zN+Gi%QT6oLbCQ+~uJ3`t;#EgsVO4vw6gF`SglA1MyKy#&CVh$oxJDw1!Yu*n$yiDt zB`!ruFpU_)SQ?CxkyZ~UlF@hV<If1GGa4pnJKggF6HS4YnxU`YE7hZ-%~LJ&>&!&a zHAv*r^+zG?vQ2xA`C-x{Puj5O3BL5(-F-_WyurMG0G0(?PciFJ+P7&wBZIZ2d#Una zZVulL!f>r{LwWu#Lcj?}UshrB&NO;0&?D#bQ%{zV%cvi$ztDy3ewL%_5B#XNHXl32 zqCs_f|Gr&&_9*Bs30#WH23SHaivq+zQ;RB-W~$e56GOw%EyVhl42xpxe!O2lhU%PM z;C}XV`jDFne~A$5eqWk>;DwaTLh$4t_wI4~=)h3b#v=8fCy|RZRacZikkMPT$;?Gu zW7~_&j~?h5)TSy60&?kdVhv_<b^ZTPxL-@Jl|o(F;|-gj{$So;hHZ#F=+BY9zGv6h zo3Vy^%HU67-g5Stz_n?7`2c4m2P%{e*guR-!x;7(SX&3lX4^OgjDyx~W3VN&dO~>r zN~4?92)f@7;zE1s^5Zpw>cr`24CltCy9;WoUWB>eB}ghRqB>p+O%!yvPVce3$#4C> zULp25BFM|jP%a}>LPJAvEqI7=(=O9ra#*zL3p6(YoIdc!O-Z*8(a+8=Lk@wP0$&Mv zc;roxW5sEN4aE&%E>FIWKbJq-+=%Oy|AO1v{H#K{$UI3H5oj<ju`-WH?d1|yHhV`R zlbc#a_;2#y{a@YnwcXj~9hV$yq54<DfS;VsqT$Hi6PZqzr@Yytho0u`efuBW`&Ga2 zc!D#4UG|o#C3W}V3i>fcs*bBhC5#wHbOrtWFj)?b1evQ3{fECCbDnJWH`flkvOZu1 z<$F$}77&+B@0Abk6_bF4=&>H1eDcJR=T7OITx3YJ_l3+!xxblwS+%aUNbIRy4?;fl z*<u4cBVv94Rm9ZisLC_tT@>kqM-OZ(O&a%7EDy#I%r~8hbD^7-xFC)UGb{5N^n}OU zqDAk7YMpMToemZ}<4HQMR!Vj<zIbqOjvXS3XSiS7g5@%$I+%FDS4$N%eG@MI9RRm@ zF_-JFIdy(A1Of;n$ard8l)o)p{US-y&F^JL<#rCQQwNZDiaekafV6x?`Wl#OCh=<C z(kq{{O8EhWtC8WS{abXF%Acq`0O}j8cQvyq4{uAjyzxeG-Z#@4o?*~2ql-S;zL_cE zl7cI~Nw{tz;P>G2p$9BzMMU1pd&~uVK6RM-Oh)}6@Iq|0+8~|NpQ;kgbqji*QEz@w zzxW;sErfOQ9MioSJM&O7t4!H|JLi>2abuz0prI1_1I=z?I2mI8hCGkE<U)t(J|rXb z>ur4Sq!MEa%^N|(z~m^77uH|dI^D+ing8|BvBO8E&mK9%cb`u```n>BCJ$*J7id%K z)*Wr2r)DP3TKEzfXNpbtILS|dw2(;0v1v4T868^eE`u1B%O$dw8ic{>2cm$gb@ZxP z`($A3oAT}8?|yH(WzW9*!O1=}d*u*Jy7W1&^09_Q?XWOc>CLlU&=+Nvv{P=rIoMQK zO-3Qf@g-9QRC9~2p3KgXM}2+vR^8KQG9{%CN@7~wa^4xMUqD`4me!R2IV13lNVSW? zSkge(fZFQJ1hC2nbLn{VaH@aq;SO}BCaxBj{ecwNFG|*V0Lvgt2xUf!2URsVqpW0H zlA&s82|yx9rE$H!u!n0+>$~;#<~lr|u$z1U?PJX~?=nq)9@czq2OFsWzA%?m2J}(U z#!Uu!V~~SlHG05N2W4CsJ!rhpAVD5a+fO5DjY}L6S`^y*o9%{sUONL6#uo*y^ckbd z^CHkb$}Io@ZuJgBFuo-p*eciLqAqS(*%&lg5WN5oQA+d{eB6zeMcUz57?*N<B8Oc9 zq#vokznS*|*gWYX+(Fn{#-RSqt6t!|D3-=#c%kj609czHOd$u{s<euA5M^Ha^^u2; zKSk6mViYZ&yDXLvA8K%kw&rg_%ZhIGE`ATHJA-&_vM)YfZ!+_ON<I~~LS-gb32kSh zctaD}VAeCo4AQ1iR@Lp>D)P)%T$(db>bYy_3|Bl{|H=Fge2P=$9dIJZG*N9fpVj{7 z+pNr6prA`6ds3AcI$xK21hWD`;ZEtU2u@_U{)5TG_dm3IABN#|@X>1j2T2YlQ-}*W zOGS6A;rzs&=;dC<Q$MT@-zE>|w2KY&?F{lVlg^0JD@d$^Du7fhi(EZOk^AuO$2{+H zH)oNo9XsAWX|E$)sT43w2PIT(#j{(dyzlWzz8P}wlG3!21aFPX2!_Ghg1lwT$}NOn z26`K2`z2}ZiD~RzEf>8F^!9#)+4}1nl_n=k^V>?cL>eqUh&F&q!G|ECC(wCCu7z!3 zI0I_KR!^(ldWSpC%(v4wQzYz?Jyj^f)ZmpZhfbe5K0R^x(37VQKZOr*N2d7|PWxOt zrh@4cK-<50*YI-3T{yFkKmJYDEf$T^wIt>>U2`r20(_+bj{zUujS3hQ60&s7@(w5z z(aH2d0g<gPM9o9RGH{w*`IFmOn*jxIKEehV&VoS41B@@s-mXUF%z`&BH5u4KX<b>^ zKCL;tp$}uyUVoYS81blbVG-ROJt~gE)@i<cu#+UY)Cbw;I+^{N7Ja=QY)fB#3uy=d zF&ZJ0RE?xD3cOAIPIqYdP4qK|C^$e3&)#vS)F4g`0qFBx@ehkchxr7SUlo27VAUX~ z>}T4#`)_nLOn7y}$N>&f3m8{WP_2`Jtn@dRxya_CTt#n27W_!i{|A(hzB#1hR2wr= zA<>+KzCWUn^*&*JVYR3S%=RrIT`#ajCM7jbV{yThn!k~|MuXX2Kh2O2BM#%Iht9%W zY;KXqeH%+fhc0ykJFJ45cQ*i=K|qS4;9B;Fxd5`<gPlVZzXff(Xgr6$rQW&>b}yVs zoMtvSk{=(u(yen@$2J13K?qU%3JPy9f|%}9q)GuJpBSRN=@m;y(}&44ojiQvJK;Oe zHFbd^YF=im%O((61QVX@MN!E6RV7`+WRUcFxeMg_{P_+Oi^J6tT|wR++yhsVesEb^ zFl#DoU_vkiufscy2P5}ar`!I^aq8axmwOGOj~zaGA6>V7F_s7nN<`J`RTq$gdB%jy zOYp`dl-<-8$f>=$tw5~Qk$%X)tZvW~gJ?mqNvag{AzmOA?!jg3h2mM6uxpQ^LCLS1 zN^c3S_KxW6SPeGr^EKq-Y57jE@5*^OxM+6%WGaB;+BApuAAIiU>8FnzJ9y;SkyHP# z;tR(_mq>Tv?ipwSq<Z}eY9XRh=Q*Wl<W=A{RR6%e?dnk_p2S$WhClN;eFh~)h}dFD zG3a8@MD?G@g7#+D8XNl7?@+0&Tx#`novB7DDSQ&~)#^Gdx0=Be1u8Ue%AHEp!;;Z9 zLAP{Mb+>%CaeXu@91F=Hz}&;oK%8Oj*?bBj!H$^hoP-ibm22k&hvl>oHtW6P$#93U zy|+AshGY~Rw9_l)8kxuJz+E?3d6>O?knUvpmeuPW8lf$5PU_Nl7^=LXQY-hg6%xS{ zb6o)W3U2P=MVyOSX4&#OcKH5BAGx2x4Fsqf&kPdjvWib|6Gq)Ed1iVzE)(H2omWH$ z8c1U3rdq1x!l^2aTgeYWnKzMwBxuEd%N+HEvpL@LOiWMjv6N0&*;0EQ=8Z-y_aGQ} z3o{0OrzLGt%&5Dn513{%Z5&L-U2C=cSPUXaI0&#xX?FZDkFK8<=FSf*=wjmdaWGRl zg-ZA@bkEv=gj7fBWc*1XqgP4DCu7{T{Kf)I(V*S~sdX+9IBTQI-xRJ=^YZku<0lSN z2Xp+?k#B!btg~{t71c7%5u;dCy-qhKT=wYwCnLSZ7Xm2!#%!a~mY)A+*kO{-3nO;C z*dMUbq(LwHg|NVT(L_P`QujjwB>*2x96IW2b`As9N{1Xfzrs?Dfs&>@-IuyuFmoGN ztefsJKKNM8$VZ|0&Gp^M!+}R1M5V1KPQxiXa^lII+qRW{-Dwr>wr0gwVG(5YY6A)+ zjkYj_vfCkb3;I{JDnG=&^g*+%nBE?_|Iz(R)l=TE?jrTm#%wU46--9o#-z{=Riti| zB*3VT_TF6z_EL3lnlb%8BQSYn&%-U}I{p5r1EX*Ky{4Bd>zs^1KE63n#|Z})$Dhp9 zlik8!RGBxD0<C8){Rv1q<mNxZc4rZnl+{)%QI0BX8WZj$B2?kEpyubwU^<8eX9)FS z$r-?tuD!X1DHLtA-9io1O5Or7RimL2jdl)maaYGkbr5&6@-%vt178NCgu%J_u~6yJ zwcvnBFL;F_<pQH#X3pS`fzrwdLuPR)=p{{MLrRx~s~je%lpMfJW2z3wMxKi*0l`)A z4;R5(ZvWDAesS^$3$FRYlz0bzD|i;%&~xEcS;s|UwBgwdp)(e>-5f?>m8Sws<KYF@ zj=7(UmFxUZFd&D+^xauQc^iBO@CZaqx-}2ybpMns;K#T7cSIh}=zrKb_|b5gClnRc z4j{97dVvuC1$*nntTUs5LS58ZMDhW^NoTGsM}6u=EZtJ04ic<O&jV5A$VT~=+6kcV zSTZv3`LTjoKG7q40l?cvqjt8X?rL{V4=m8D3BFhK-S6QhI{%k=D>#_WehmU3We0ic z5k!T$B?bSkfK?>}4vgx>^t~&T-IlhFExJj_mG7gRf?XsZhY4mZofUM6dqR=x^3#7l zu$#k!O)Gx;_>-qkl2q*KNz`?<A1R8kG!%Fknt7PCS-Tg;B&tzgB8|}34NNFzjrtvF zTQL`4aWWL{pk#nfZSX*$f~;Op$Aa;n5A4k*kWum3hAUf;!k{OPG@{0+Xp+TqB(96N zI6=D7Y^V4!X^*y{f9HfRkMDhW_N(2ynC#lglSd!d!mJQwilBW|dsF;z=;X=gkDqvo zyQsjof)>N5%PoUBNH#!n9*5*r*|qJ&;g%Kd2m&V6K*m#}D5=fqX3?6O3q8ca2z)59 z8)f}fpn%PFzu~t0$f!mKDnt{E&6gYp)aa@aramT${{Mp^zj8HV)@7a!<6bP=*t^QQ zon=Ro0l=?e+b9|oYG{^B5a@jnw<}X)R|oFEbDNgmHktj0sx`(TO{1vrk}k!UM$sPR z{qF08rIO$ayT)FYl^Hj%GX-L~Q2Y$Ac@{V>i(c3DdqLr~Oc!9GLcg?H%CL}#LP}ZG z*LsAdWJ)Ic+4MYIz$IZVOXvHMooPfD=}#_?q$z7MKuB{YMmiSn91=K>i%^)ROo<^o zmrJGZtruz%Dii7RJEAP+-xb`tuysah=D&Ap0t=ZJk;;~wc?Bp@Zt028ArY;M#hqDQ zDV4E2ZtQ6hyIK(;o}N7Z<i8$1r5!Xn(;<qY4ooyKq*=@>Fc4WoQD0gpMP3-GLLHQI z*}F`cuV>_u37pKzk24jfDNNl_zdBdGxTs5wL0It@J#vLQM)i8B2_s}}&p^p?jY2P% zqzoPlMyzMpF$$GlJ=V6H6fHVZKpP$gI^Mqqn)tf>!}}^F^=EbX$UFJ9jHP%$&Tz@E z(@_vHO?E<e2jF;a_6EnQUO{9T=gMT?*6CLdA3yOl6)%U5JvHTWAOAjo<jH5IR@$E2 zI@!m!>Taw#Brez=+d@X*F0k=KkXAgEtW2~E_gPHd{V<z+`piAjkO^MPb`_dJM7v>C zjHZu%!!0ozC)~;?27ED;h^y4z&`XHXUY5kBs?=zMfNef%Gs+tooatX{a8_?O9CM`` zfXZGp-Nr*5UqYI(Nxg(oToIJ&V3ZX9{onunKLih1NRDgr*M{h(0NTInz@z*2y14!Q z&pv*yIc~-MK6oA;YAb~Y>4`Ljc>_Jp)DpZIDIyf|{&}!r#tTvLCp!AAu&Ch`?0M+; zbpLTG#ljQs;nyEI_T-W04p(D^QEQOu(KGOMU-O{j?^#ZskYbfd)X<8XIFIXWPD44Y zdg#k^->Kf0Hf(qhJ=0X&^|~80f=6VEfrPCFp_fd|7a@LqDJu>F{<KcOys}~5nYIoL zfgP$(6?YUutIOzBwT2JlG}zHz3T0`!&|#sxl9&OfB(CF?=|M2<)F}i(kN1Vcurw}Y zvo|^~Y7u)vyxqGiUaz=t!b|Fk@epv*%j(M@DYM1buUsk|1hp>Exi)}~m)=gj)ax0) z62Yw9V+0rwpBIc=V%k2Yl7PQVr8g4r;9D{a4`3?8RoXE-^BMecJEagwY^HE!`YZ+e z+}GKlruy5bj>xDLSoM8s#R(=eVdC;;hI&{`Td5BEylKx7MMQ1ZyfM8%aZz71=u!Ye zP~KVPLSsXh5&#`+;MSEOT_Q|b=VvwKjCeBLVgl%YsaXfgob7^$OcdNnQ{}sx0A=)r z$KE+y7-`-#M2eFLlLBE-Jm{*P*CryKcP*q$jwo^1h;wlcq`0(nV_|UU>L?r$WC8#h zz@+_2{a3<jX<%O~yMKchT27=C{kF%xws+4yy?5Po83%E!b%Sg>Yz9GEj=W(=TX-CN z1t?v#%37GYS0hT*e2uA2($XP=Nx?m=c3y_zzqSLP8+4^v{!^YY&D4l>+BK>-A4K84 z8ATJ2rapLMxEHQId9%udJ3>uUMwA|_{8e?&iVWU3F)&)KSe-nmKxUC#D`NIEEXZyq zl^F%GWTu;5S-hX@T?xJ11Ike$9Df1MbUt64?0e?OxADO<JVKX3zA{O{yOIc|J`gEW zk)~Eg(GNB)bV>$Rw|uHwCNK3@{KAX4n_|1Fwe)1=Vu;5-e)z0%O4<zmGk1LbkVtkP z@mkolua{i~V?wOVk2FFq8o;{D{dmhP8*QZz0A$PXcdKIn6UyFH2=Xh_O{`BwyTZjt zpGdw;_cabkUO-HRLPRDs$bwW<1X`dzKG4HIuBlP;7OuhPSX(X75GAiB8xBC%y`u!H z7@-c8!6JxIdMt-krVXo&PIOpco^9$v<}^6Pp;sWC_8E}%JR+~X0)KA;lSCmNtS<|K z#epN==|NN?sG{A-hARoKG&^fGn$7^B;9EdzM%w)*sOiutTs<V$Xt(o-3Bv*j@e5nw zQqV?^3!gMyaaek6xFT{MJSq|z-bjtW)-Cm=aoav3=aYY1|NNbB>OWa5PfH~U5mI0! zs4rKnu3y0A%RDz1kPoWhr7?2@;c_F*&5!9GC0SA|%e}yxE^9^qGO^rHiH|1O*>chD z>}kL-@-4^)P_r@V0V{AJup~F5KmrPcSaEY%9noAT6`9aWp{@hC%H5`uW^D&u1r16W z&8|nbFa?I_MqO{6&XoQ_z3VqMx3<s1Q8>u-YkR)3e{FV-G|R7M|It~pcJ~eLUhr;n z%7QHB<eLED3Y&=PeLUGICaZUokp&IuPvQi{ujoT!Jg&|)BKF`X-KfC2&s)`cd)ZrE zmZq*-%hHdR4ptYaBPGL=1}z!s+*)Z50*0#zcJI5q@vAr&EvO>JBcCy=OY<kN#v63k z3VD8s{K{P|cVWURwdFOS%^bf=taXB6uj&H*8-y88in;J`ij{IZA}FLJee3k=M^2qO znXJachre^gQ;BB3hk)mR3D)cg!!(6aA6i9=8!!kAf0k!-DH#eXMs)a}1BFcPNk7IB zFmS1)03eRoq^UxABT9BqMIY%z&9Z!&pong>-GNRn&OTJKy8@|w-#K*ji9;uz>OlQR zy!(d^eedwGu8Z0VMEah0`9@lI+fvlXz4&nBU6!PInt^=6VX}KTo;V>gB6VfqOe<c1 zZCZ(#GLb}OcN8($>Q4qCQ()>W$upV6IBHa;Y?uTx%)MdgD}Di+2e~I_p}-hS%>?wK zO5dYZs4U$uqG$}*Im1vNy}?13NkZ2}PND<Ivavz(Lb`EyP}L|8Ic-N((I+Ui_`k8{ z>p)x8gn&SNCc_J#5{CHF46k&-&IzkpS5=D~8oDfm?-R92Z=_-1rRP7VZv-_#7I<1} z(Hu^PA?B4wt4R-)agww7zW}9YlQS>^ejlW<y-4qMg#?7!%L&aN#*My8%fc%&M-8PX z%`MthmnwUB>Z}m*pXnB1$%m3#<8Ii+fH81@NBM`DDq~TOWvt^o#zBm7Y;iiEIt8Y7 zX?h#tT~>~OdOG4IywKaqBo(hJjIkENT&nla>#vEp;=j4?8w52-MUm0mHFU_o!_aZy z>ipB~(_Ddrt_xY%a-AZ(lBDZx*j}^h#zi_SoTt+|(j^C~?hxEQJwc}`LdKSr%4)Zz zMg~-XvZvwI>K`a-ny#gQiFO`o*Bg*B6W`%o9s`Md;PP=Nr-=pNwaik%{6(-ws}9v? z14(ZM`sv4mWrU>UnJN9h<v)z_E+lB6I15YA!KXt9PdW?g<@vrMZZjZK6O42yF4t=G zfxzw*Q+cownRr9-V>Jp9!ok_Sr9tKeZ_GYE+lu)^HXzNydXrxKQ0_<x6weY?&H+D9 zdKv-G**S-1{)1gI?JTU}RKgnoT*&B3ccl)~<{ynzrHK%CwZTvTI%bng*?I_-tD^6! zr%<JyJ?epH>T_``D$oh*KcTod9IBlUHljt~SvWz-!;CFWmNZIw1q2cQ7n~?l9CiH( zCs`tLlao}|!HEYf+{T<-c`nhF4~CO$D#Zq&O8J<OL<PEH?X+j&U_XSWp{8=dy3X+r z&(Zs3sVqf%X_H7D&qG0DxUPB=^#YhHgrGueTB9nR6?}{ZL+SjO-`I^+8h?=wL8MBl znL7%WdhLdkDMPBAN+r!Fp#{yd%eE*g!;))vWPPDi-APxVDCT7L4vL`Lzx*y>>Kf>u z^QXzpm^84WArSNM&u!m2b{jpY&P9d@;#UG4;bcYa(5XYy?KI{#HdCm*zfLgeXD3xd z^Hs$FID(D^m7ivcojM;V>&0)^W^?#}iRLngWy2VP5JXwuX+8ugGv?e*92**s0Ds%J zm|V?cOp>6r<H*iH(Im#SEDjiK9Mj;x?OWfvZArRO+GQ3;J1C_==bp91PS?t~1swER zMZ|Y5TJuN-Y5alSf$p(j>px+_K*|I!Hk2$H(=t{hy9k~_R}-z5c<pVjYOSL!GS6l0 z>h!>KcTFES{`|4Krk{o0m!@mm@miLY8B>D?dJBtqL60S4=FQ%mMFD6bQ~<GKD-?P! zryGdnf;{%b=~Z{A6eD&+138&p(3{h&b{^x4*$CPm$Olap83#&Q6rgIEdt0^yy-mV( zi3W_FbPdnS|L~g`gVG|gP_B*L`Cgal(k+!uc-+3{+Ge@lvK0!uGWnIyOCJX>C7Q)< z3kYyj;CF8u+tGQqToWJ2GvtKQi}ZuM8&6rCLC<pgfEOXYSn@Wr&kmZfLx1c<t_Gg0 zTH&QB2O%wEv2|6BF=`)#Hq3=}J7h1v*hAXY4+792@y0By#3#x1wwQ2&#-2{<_j2Yk zh;4O6{Prakw#)mA>EYz#Yg)=%pr-eQUXL96&XH4xd)N)kP3&K8lV-U_pxX0MNrL!| zgc8m2f0&o~C^}8Ni=`oG!sDWb+~^(JgNu#ZPq%z_+Zq+Hd24AqhHpwOMrbP=bCMW+ zjb?lOE^f80oD~oTwcj@acQ{t}KCE8y+Em(8hy7~d@#p?Bef_2S$rt<n5+I#E)=OBw zzN~sMPalR5rz`Pfh4-B6E0n1iVI&Q=1mudouT6)7@iAc?TZ<I}aZ6AxaLTPBa@0*T zWuF{{?@;z+m0V-vzZ?^P0x~SXbj!jpn%OOjLep6YyeVPaC{BL5bu_K&?bar^s;5sp zNj|yMyEdPElEdCU*(8TO-SQ+Mp>agd>}c>sv$>(kTB+L>`olyHjP5Gk(*m-Udh6z( zxn2)99>2`*26O4`nTKbUqMMnzN<=s?dz}<iGdy(@s4anwKT~TN_%_;a=A`S_ye>T$ z;<A>TsbA$des}A4bu97ku@;y3L|CP%bxNCqs5b~S>p$t73mimx8pJTQU?aeWjo>Lh zC(yZieOcd@XZWbKAD1j~i&W3(vktc}ly^%8#%+}IBq<koYWSxceOU@SI4YB21Y`J- z>j?Yh*6MJ-IY!OrYgK6ai5m?WGti<2z#Znoi1oF+;Ycg%x`jAmXlTQ2v$*6UTrKR& zg;*jQCX5FGuVglRo39a6IJHRLU{pWS_@-ME(wP;(H8r!=S&%li&|~dG1^|@QWIq5c ziGXEMH2N5TM1TYB9Ce;A7=}YYJO~*Ro9L<_CE=?u3JV;Ly8i0gsY6cyqYTo57-~xZ zMa4rkz;sI;fyu|RDo5I|=24$5x{Mn%P5^f2zbaWoptWfy@QQYN?ge8*tlJ@$$CR+x zx(Wf7I8)RyC0dShkG^Q03{c~pNfOTumhX{EDH0Co*Y>4xEu>W>;D!>yeX$a*<*m%4 z3C^G~NFf7e;||1pN~~d~+&|72*>INNftQu>L83zDhFooJD(p>csX8*g<fl-MOJVFp z2}cbF9Ak0{TK)%(tJ2Epb+<C291%fOdMboRI=d;>as~I3Ug`4Qe~Fpi(zv%cQ`Bi? zvx||KT~xZN-$Z`PQZns1OTqwAn4LD@V!ai$elq!I%q5=d;VWI|Y0e3Y17#yBQp`Pc z--@C!pLB}?a&sj7iU%1<Nc2b&t+FWQr($5)S@qir<ZNUqlxMD9WP-mcKG#h#PlFsQ z6y{Q|xcLO3K%bQg<Z+HOjKxfvp=sDwzZ5V!CbPPLwCP>bPYaynB(FM9o;tggrg7O+ z&g{Ae|1mSM<JzXT)RQsWWzh>|8e0?MF1KLPQwetgz%B2otOP$)SvkpZGV@tJwc^6f z*)+2Y5r!7QmwK0+F7&a(Xfz(QeX!0+yh*g$?xbewl&iMH>Cu^sV@s)P7m1yK3n`b_ z)r!(2Co<`ii%f$FXE6t{^O-$4@e6W6yVuo=_>7X!0WSRx9lb?VRd6W<f`wW8DMS{7 z^E_&rd#y&R$w(;1-O#o}{`?)$*2#z&c{=41>)I#k&=^cjTPDAgtCL}9N~274P<kI! zgRZKYt8zlHPX|o*_53iHcVkkYxf46AQ*yJ?O^l-sHy4GPF2=`jfvl`qyR29okQ9(O z0JlLVB=`Z(7B0&~HtXV={=EER|LGI|3aSfHyAB<B@;I1gAbPgiAd8Hm-koMyQYqvE zL8J+6u-ox#yB~an?HY3qxpZGo%ojjenUXpx*{k>_Ix0)$tz`Evwf@$Q0?2wRINv!r z@Nmv=fA-MHeAFfXQW(Gy1OSgp6z|idSc+=WNw$?}3SOCm;$+yQbJw5(UGG`(ah-4G zb25+fG>38DEBD2Pa9<9ij@RrLe6dFkpEx@0&fPu_t9ILUb<i1+gCFiaed1{P;n~v8 z;hYSiGeA{@qFRY@5BSNk8hTk_s5kg$s3bUefJyUqY9@XgX6y{P3>UV<!<nB`64S8e zLX7O@dO5&=Q&_t$LD|kte8zM-{i2`!K{n~0Z<_L*1=Pr=z_y8Yrqz6xTJfP_%dd1= z1IM!>l6JWNrtu{jnRoE;?Cc$<tgqI*UZ*%-cH0D?gSA`85%rYszX;<$?Rw_WDN0Xn z5(7ck8JMIHT^v=&0E*H)s;O8OO-d_YnjF}-`@!10e2D$YYi<c2uIjD7xZTe*4c7VA zU)+Ik5H+vA026hZ$)vE$-NnXYdG^s3rEvYlJ4VZdTNEB{iR`hFA89Vq;t*Lip|=3~ z>W14=)IHG;ep6G%l!NFBC%1v=Rj0meO}MkDtDr5N0N<zJgmbVB9z6r0NE^)>G(3^x zQOo>NV<db`bWrN`-8H6SX>}L5c3wew>m|Irb!iiw=#&zW08UnR6%0TqzG@zQv7vfp zSkBrwv@OC^PXcR+&6z-F9f|PApb%tp(T-2mdpMJUe;4t%sI1^{a0{PC%nlm^{?C9@ zja+#V4D~NXG0n?v^oP=p-iu;72b!!hGY~0fhM!qh7_uggK-KSMKP4>~V))@Ss5j8W zI6(8dE{lSqv7b47^f~6f@LIn>r1?!#rZZ4`*9*hriU|z3aT8J(@POTA+Y#2;MCiHj z3FOi*;}k%AmZH2?>Vx&47I&)Hulrf#?i&=pm?8xANvkF`kvhPtEiIqfeDX8ukNR9w zUu8g+Vu&6>Qy3=Gi}Tdi7=#7?XTp~P0Ru%9cBReT_u?BrLfy6`nZ&m&+Md8J5z0t_ zwkV>9H<Jd+d^L~~RcHmjpiR(LE=a~HQzq5;IUN(MSK<XOkEj-3LOo4)JNy(a0Qvlz zV|IQEYp9^#Z67f1uhkgk26fr3$U9(e!Hk8zQ@;z@IYg;P|2xuUAFGFl+ClPn-Kej9 z`yTB5B;ye#P?)SArG(Mp32-uRZMdQ(8V7L;EeEH`&VlXK_`r2#6xO^ErQn#fO<`_@ zY!9bRBY8p<rej=E4VtrgTisT-Un$JX45PPWPDV4i)O}PoIY*La1E}Yv4+4owXY97e ztfP#!DjK@+Of-kfqN*FSsT-H0o`u_r`GU;>$P|&?&<}dD`9Vyy)%zAmEim1*`7nM` zu@a1ns_3&XH7o=SRdl9blj55;KU-a{bcj{MwKp=sOVIJ+rp?FZ-q@-fdA!3-n@?4% zgqeI<5_oiP<fgLUS2k__PMYA^^qX1g5X()Qchr+E1GZz+=6l9>?%DJ=i)|_kAx2Xy zl60PFm(<)fQ#L0qhHTT{EOz?wyTCKxBbA%BJ^AcY)Bke(nPZ9+{4%?U*Gi4)LTTvj zHo0BUS3c=qz8(F)F{kt;$x9K;wDY1$2HJ8)-R%R*ocJ7phCxKv;K_JUP#6Cln&~yg zO+bV835x;uB10GOeDR}oHTW^=xD@fou?9<B!7SRqmq>E+`ip+8^i7i`%wZY83k#~* zR0cF|%~eq2ft#-JK;wdMZbk>t_kxXR7OYxiBnTMFaT*8}5`;Fo!IaF6AeGSZw@eOu zKu=gIz<5KsODLVaMc0A-CKSS<60+oz)Izw6oqsV;LxROF`-b|Au|xR&3cBQ(lF=3V zR>iXn7>HN~?XRnqDw13U%L+(tMu~k4f<|uN3S-0!ZcO^L9C&;KRvm7l4X-!enj10L z07<Qw>yKeHH<Ha0FyGkQe-*$KK<%zcz*}~?{B*;Jcc)pZZAPDP4g+T_WnN$l@|wb3 zw5=ya`c-SA59Lc&2q^e>GCPOl;DgJYk~;xPgsL@t&9{`5t1RL9W-{fTt<xI?TUfdN zBPD9~;p8#C#@kLM8PrA1(;{>Ct{b$xJR`lb>CKM`Xj)0-M*qIqQR1o^!=rh5iR4&G z&8?2Xyi`p=0Y3^~eUvk_(jz!<IswU)C>S@n*@ynq$2i*SNS{0V%IQ<5j~x=(T3GFm zTgoI>^PP82XBSj$wVN|3Of+Q_uW9a-?<N^@`{t9k8^ZOvc^JL8G2?ZK)y$Wh!YXMH z?A4bsfHryg%t|0G^=>BfFMiYi@T{KAoPINVU1w4?Ys>S%^a|WVtUUo_@*j=OXoBNu zN`{6P9X5C9C>}<V>9I_67M)K6%zz6RS3R__=$~?){xN2^O?~p%Gshc-8R??b!*LNe zOW3u0ZCJOM4f}9H<RPm2k_p<m`ScX4S!t@u<m&wSN)in@_>@S~$a`T4FxJ*UV!CDX z$vawiQ~G22mD5l123ai=4R*%7eq}|!iL1fY%6`cWi{n&9VvgPMwA|^|0VMs*Ha;;o zFu;9_6WkDxfdlYmw&V@xo;b{Ok33txc`L##T)S_va~_&Zo4%_MVbsxiSg=lK(4ZIo z6cPAL1ka<Iu$&90-X5!oZp>eFqD5EqfKL(`qjmDk#3ya5NQbxqlnAAOB+jBa=`omt zbC~<43m!w6*FJXYo1KLtT)))Kt}k`bm5Uc0kkJl|RxC&=sb|1a&8wMh04b`d@)R;1 z9-$he?>*>*DuWyhSV!w^n1ktG9Z<~4B{~`P{VPU`>R{l;lw1xJvvXO+(Q3rJQ2P&h zN<v*1ELBx{CQ&D14dFJH>>(?Zsht?CW4DE;gTqeqx%=K)YzWjwr}Ql_dYD|jsL>i& z<$nCK4#R^xJ5s-qcOaLF6oOZ3o>^;07ZUJ&cQ>1_?q7HloZwl8%n=OKHFSWRIupFC z=lYk=W_pTA8Yx$c)gIRiIQo9(4%N^d>K_-5*fWB$hujL9oRc5sA~try`Ysma?>cW_ zpwIa2rOE8SGeW5pauL5`Zd6a4QyFmgLxAa0#3Bm220%-iyZgqJjIHj}>%w4?5H2Ys z7unw>W?H#dfPvL4R!?>IauhIGchA7!rs1WQ@uebz0#>xY9N6zm=~Q5}Dx`i*6CUtG zc^25ZOuNQf2)z$&1t2oSzpYwTF_aCojVcQ4y4%R`19UdY$9-zWH-H`3W#@Ld5QcUA zr*z3!$xX@QdY{?yJiYgc`yxOc_^{Ny+n%^jbscYH&Iz<+()v&B;1t_2H&wtw<O-xN z;iYyclaYQjQ&umEQeGqRThhi#vHBh0tQi24y5>4In)(-ng10?>L&rjn?;8D_YaQaO zw{p|eQhnd;U)JuQ@ZVk2y?!)w$*Rh0{|y9LtOfnNKz{|j{<Y7mlY_H!f%!7O;7^rc zzo7(AJT4qi=B+H^DB6Rp9}fh`q6XvrOx6T>m(dGKI=@MDzXppn>$sIMTj>MM;*$69 zyoa~#LL)}hDCi*ZvTGSN4vw&56kK!690K17^%c8}M&Se!keQ+dt?)-_(z*T7Qt%~x zirm)%NGYrVeB2$Ww%$(0C>=~a#ge7vrIi-AW^s1>0URY-#symf3l_jbdhpPcI<fO0 zVb3+Nf#eh!&+tlrsLMf;oCjya)m>t&2!NWj1u`pI6x$El?4;3eu#ree<<lEvbXGD8 zzeFTElbJQ4C6igx9DM|!ZoLlh7qRJ;Ndm|hn9m=zvdum!>{qc-62)am81^lRt5$Hq zIp#rG>a&(W9FJh|>7|1ZI(r$M&IQ;-qM`%{aLvKNf1R_(vQ0x2sz=5j;6jLM4-i7d zFRDeuR@{CekF=;c<Qq2RxkHRygM-5prg>SGkQ{{5LkSo?Y5rI@6w)_8iMy&cfHCgj zL3&Y%qCzgv?O=_9Ct-*;1d}!i&24w)U{KK)wx*p&=^sp&pk|O<Ac^o6)WH^D8abzg zDYo<iz-7Xna`ZYFna4Z_<9tk<E&#B~HW{K;Ors?yi%}<d=Cl=uf+b2BaLV4EM|bU< zl!VOru!|!Z7wXzrwn8a&(T~i<4WkxL`f;X?iAlq#Jn-cM`+)7H-<<He(Do<*&YhG0 E4@6^0umAu6 literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/po/el.po b/xchat-2.8.8/po/el.po new file mode 100644 index 0000000..ee413fb --- /dev/null +++ b/xchat-2.8.8/po/el.po @@ -0,0 +1,5919 @@ +# Greek translations for X-Chat package. +# Copyright (C) Dokianakis Fanis<madf@hellug.gr>, 2000 - 2003. +# Sarantis Paskalis <paskalis@di.uoa.gr> +# Stavros Giannouris <stavrosg2002@freemail.gr>, 2005 - 2007. +# Stathis Kamperis <ekamperi@auth.gr>, 2006 +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.8.0\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2007-02-18 02:22+0200\n" +"Last-Translator: Stavros Giannouris <stavrosg2002@freemail.gr>\n" +"Language-Team: Greek <nls@tux.hellug.gr>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: KBabel 1.10.1\n" +"X-Poedit-Language: Greek\n" +"X-Poedit-Country: GREECE\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Δεν ήταν δυνατή η δημιουργία του ~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Είμαι απασχολημένος/η" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Αποχώρησε" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* Το να χρησιμοποιείτε το IRC σαν root είναι ηλίθιο!\n" +" Πρέπει να δημιουργήσετε ένα λογαριασμό απλού χρήστη\n" +" και να χρησιμοποιείτε αυτόν.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Αναμονή" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Ενεργό" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Απέτυχε" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Έγινε" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Σύνδεση" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Ματαιώθηκε" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "Αδυναμία πρόσβασης στο %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Σφάλμα" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "Ο/Η %s σας προσφέρει το \"%s\". Θέλετε να το δεχτείτε;" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Δεν υπάρχουν ενεργά DCC\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "ΝΑΙ " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "ΟΧΙ " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Πλημμυρίζεστε με μηνύματα CTCP από τον %s. Αγνοώ τον %s\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s συνδέθηκε\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s αποσυνδέθηκε\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Δεν έχετε συνδεθεί σε κανάλι. Δοκιμάστε /join #<channel>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Δεν έχετε συνδεθεί. Δοκιμάστε /server <διακομιστής> [<θύρα>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Είστε ήδη απομακρυσμένος/η: %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "Έχετε επιστρέψει ήδη.\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "Το /bin/sh χρειάζεται για την εκτέλεση!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Διαθέσιμες εντολές:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Εντολές ορισμένες από το χρήστη:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Εντολές ορισμένες από πρόσθετο:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "" +"Πληκτρολογείστε /HELP <εντολή> για περισσότερες πληροφορίες, ή /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Η άγνωστη επιλογή '%s' αγνοήθηκε." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "Δε βρέθηκε τέτοιο πρόσθετο.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Αυτό το πρόσθετο αρνείται να αποφορτωθεί.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <όνομα> <δράση>, προσθέτει ένα κουμπί στη λίστα χρηστών" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <εντολή>, στέλνει μια εντολή σε όλα τα κανάλια που βρίσκεστε" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHANL <εντολή>, στέλνει μια εντολή σε όλα τα κανάλια που βρίσκεστε" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <εντολή>, στέλνει μια εντολή στους διακομιστές που βρίσκεστε" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<αιτία>], σας ορίζει ως απών" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "BACK, ορίζει ότι έχετε επιστρέψει (όχι απομακρυσμένος/η)" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <μάσκα> [<τύπος ban>], κάνει ban σε όποιο ταιριάζει στη μάσκα από το " +"τρέχον κανάλι. Εάν είναι ήδη στο κανάλι δεν τους κάνει kick (χρειάζεται " +"chanop)" + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-quiet] <μεταβλητή> [<τιμή>]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "CLEAR [ALL|HISTORY], Καθαρίζει το τρέχον παράθυρο κειμένου" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, Κλείνει το τρέχον παράθυρο/καρτέλα" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY <κωδικός>, βρίσκει τον κωδικό μιας χώρας, πχ: gr = greece" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <nick> <μήνυμα>, στέλνει ένα μήνυμα CTCP στο nick, συνηθέστερα μηνύματα " +"είναι τα VERSION και USERINFO" + +#: src/common/outbound.c:3516 +#, fuzzy +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "CYCLE, αποσυνδέεται από το τρέχον κανάλι και επανασυνδέεται άμεσα" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <nick> - λήψη ενός προσφερθέντος αρχείου\n" +"DCC SEND [-maxcps=#] <nick> [αρχείο] - αποστολή ενός αρχείου σε κάποιον\n" +"DCC PSEND [-maxcps=#] <nick> [αρχείο] - αποστολή ενός αρχείου σε παθητική " +"κατάσταση λειτουργίας\n" +"DCC LIST - εμφάνιση της λίστας DCC\n" +"DCC CHAT <nick> - προσφορά συνομιλίας DCC σε κάποιον\n" +"DCC PCHAT <nick> - προσφορά συνομιλίας DCC σε παθητική " +"κατάσταση λειτουργίας\n" +"DCC CLOSE <τύπος> <nick> <αρχείο> παράδειγμα:\n" +" /dcc close send mixalhs file.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <nick>, αφαίρεση της κατάστασης chanhalf-op από το nick στο τρέχον " +"κανάλι (χρειάζεται chanop)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <όνομα>, διαγραφή ενός κουμπιού κάτω από τη λίστα χρηστών" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <nick>, αφαίρεση της κατάστασης chanop από το nick στο τρέχον κανάλι " +"(χρειάζεται chanop)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <nick>, αφαίρεση της κατάστασης voice από το nick στο τρέχον κανάλι " +"(χρειάζεται chanop)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, Αποσύνδεση από το διακομιστή" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <nick|διακομιστής|ip>, Ανίχνευση του αριθμού IP ενός χρήστη" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <κείμενο>, Τοπική εκτύπωση κειμένου" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <εντολή>, εκτελεί την εντολή. Εάν δοθεί το -o τότε η έξοδος θα " +"σταλθεί στο τρέχον κανάλι, αλλιώς στέλνεται στο τρέχον κουτί κειμένου" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, στέλνει στη διεργασία ένα SIGCONT σήμα" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], σκοτώνει ένα εκτελούμενο exec στη τρέχουσα συνεδρία. Εάν " +"δοθεί το -9 τότε στέλνει στη διεργασία ένα SIGKILL σήμα" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, στέλνει στη διεργασία ένα SIGSTOP σήμα" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, στέλνει δεδομένα στο ρεύμα stdin της διεργασίας" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, καθαρίζει σειρά αποστολής του τρέχοντος διακομιστή" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" +"GATE <διακομιστής> [<port>], θέτει proxy ένα διακομιστή, εξ'ορισμού θύρα 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <ψευδώνυμο> <συνθηματικό>, Αποσυνδέει ένα ψευδώνυμο-φάντασμα" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <nick>, δίνει κατάσταση chanhalf-op στο nick (χρειάζεται chanop)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <κωδικός>, " + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <μάσκα> <τύποι..> <επιλογές..>\n" +" μάσκα - μάσκα διακομιστή για ignore πχ: *!*@*.otenet.gr\n" +" τύποι - τύποι δεδομένων για ignore, ένα από:\n" +" PRIV, CHAN, NOTI, CTCP, INVI, ALL\n" +" επιλογές - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"/INVITE <nick> [<κανάλι>], καλεί κάποιον σε ένα κανάλι, εξ'ορισμού το " +"τρέχον κανάλι (χρειάζεται chanop)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <κανάλι>, συνδέεται στο κανάλι" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "KICK <nick>, διώχνει το nick από τρέχον κανάλι (χρειάζεται chanop)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <nick>, κάνει ban και διώχνει το nick από τρέχον κανάλι (χρειάζεται " +"chanop)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, απαίτηση νέου ελέγχου για lag" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <string>, αναζήτηση ενός string στη προσωρινή μνήμη." + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <αρχείο>, φορτώνει ένα πρόσθετο ή ένα script" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, Μαζικό deop όλων των chanhalf-ops στο τρέχον κανάλι (χρειάζεται " +"chanop)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, Μαζικό deop όλων των chanops στο τρέχον κανάλι (χρειάζεται chanop)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <δράση>, στέλνει τη δράση στο τρέχον κανάλι (οι δράσεις γράφονται στο " +"τρίτο πρόσωπο, πχ. /me kanei mia toumpa)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, Μαζικό kick όλων εκτός από εσένα στο τρέχον κανάλι (χρειάζεται chanop)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, Δίνει μαζικά op σε όλους τους χρήστες στο τρέχον κανάλι (χρειάζεται " +"chanop)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <nick> <μήνυμα>, στέλνει ένα προσωπικό μήνυμα" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, Δείχνει μια λίστα με όλα τα ονόματα στο τρέχον κανάλι" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <nick> <μήνυμα>, Στέλνει μία CTCP αναγγελία" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <διακομιστής> [<θύρα>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <ψευδώνυμο>, θέτει το ψευδώνυμο σας" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <nick/κανάλι> <μήνυμα>, στέλνει μια αναγγελία. Οι αναγγελίες είναι " +"τύποι μηνυμάτων που θα πρέπει να αντιδρά αυτόματα(auto reacted to)" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n δίκτυο1[,δίκτυο2,...]][ <ψευδώνυμο>], δείχνει τη λίστα " +"ειδοποίησης ή προσθέτει κάποιον σε αυτήν" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <nick>, δίνει κατάσταση chanop στο nick, (χρειάζεται chanop)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<κανάλι>] [<αιτία>], φεύγει από το κανάλι, εξ'ορισμού το τρέχον" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <nick | κανάλι>, κάνει ένα CTCP ping στο nick ή το κανάλι" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "QUERY [-nofocus] <nick>, ανοίγει ένα παράθυρο για προσωπική συζήτηση" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<αιτία>], αποσύνδεση από τον τρέχοντα διακομιστή" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <κείμενο>, στέλνει ένα κείμενο σε ωμή μορφή στο διακομιστή" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONΝECT [-ssl] [<διακομιστής>] [<port>] [<password>] , Μπορεί να κληθεί " +"απλά σαν /reconnect για επανασύνδεση στον τρέχοντα διακομιστή ή με /" +"reconnect all για όλους τους ανοικτούς διακομιστές" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONΝECT [<διακομιστής>] [<port>] [<password>], Μπορεί να κληθεί απλά σαν /" +"reconnect για επανασύνδεση στον τρέχοντα διακομιστή ή με /reconnect all για " +"όλους τους ανοικτούς διακομιστές" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <κείμενο>, στέλνει ωμά δεδομένα στο xchat, όπως λαμβάνονται από τον irc " +"server" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <κείμενο>, στέλνει το κείμενο στο αντικείμενο στο παράθυρο" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <ψευδώνυμο> [<αρχείο>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <διακομιστής> <port> <κανάλι>, σύνδεση σε διακομιστή και " +"κανάλι" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN <διακομιστής> <port> <κανάλι>, σύνδεση σε διακομιστή και κανάλι" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <διακομιστής> [<port>] [<password>], σύνδεση σε ένα διακομιστή," +"εξ'ορισμού port το 6667" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <διακομιστής> [<port>] [<password>], σύνδεση σε ένα διακομιστή, " +"εξ'ορισμού port το 6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-quiet] <μεταβλητή> [<τιμή>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<θέση>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<θέμα>], θέτει το θέμα αν δοθεί κάποιο, αλλιώς δείχνει το τρέχον" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" +"\n" +"TRAY -f <χρονικό όριο> <αρχείο1> [<αρχείο2>] Αναβόσβημα με τα 2 εικονίδια.\n" +"TRAY -f <όνομα αρχείου> Ορισμός εικονιδίου συστήματος.\n" +"TRAY -i <αριθμός> Αναβόσβημα με το προεπιλεγμένο\n" +" εικονίδιο.\n" +"TRAY -t <κείμενο> Ορισμός αναδυόμενου κειμένου.\n" +"TRAY -b <τίτλος> <κείμενο> Ορισμός του μπαλονιού." + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <mask> [<mask>...], κάνει unban με τις ορισμένες επιλογές" + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <μάσκα> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <αρχείο>, αποφορτώνει ένα Perl script" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, ανοίγει ένα URL στον περιηγητή σας" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <χρήστης1> <χρήστης2> κλπ, επισημαίνει τον(ους) χρήστη(ες) " +"στη λίστα χρηστών" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <nick>, δίνει κατάσταση voice σε κάποιον (θέλει chanop)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <μήνυμα>, αποστολή του μηνύματος σε όλα τα κανάλια" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <μήνυμα>, αποστολή του μηνύματος σε όλους τους chanops στο τρέχον " +"κανάλι" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Χρήση: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"Δεν υπάρχει διαθέσιμη βοήθεια για αυτή την εντολή.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Δεν υπάρχει τέτοια εντολή.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Κακές επιλογές για την εντολή χρήστη.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Εγκατάλειψη, πάρα πολλές επαναλαμβανόμενες εντολές χρήστη." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Άγνωστη εντολή. Δοκιμάστε /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "" +"Δεν υπάρχει το σύμβολο xchat_plugin_init· σίγουρα είναι πρόσθετο xchat;" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "" +"Είστε σίγουρος/η ότι αυτός ο διακομιστής και η θύρα είναι ικανά για SSL;\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Δεν ήταν δυνατή η εύρεση του ονόματος διακομιστή %s\n" +"Ελέγξτε τις ρυθμίσεις IP σας!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Απέτυχε η διάβαση από το proxy\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Μετάβαση στον επόμενο διακομιστή σε %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Προειδοποίηση: Το σύνολο χαρακτήρων \"%s\" είναι άγνωστο. Δεν θα γίνει καμία " +"μετατροπή για το δίκτυο %s." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 προστέθηκε στη λίστα ειδοποίησης." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Λίστα Ban:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tΔεν ήταν δυνατή η σύνδεση στο%C26 %B$1 %O(Έχετε ban)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 λέγεται τώρα $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 βάζει ban στον/στην $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tΤο κανάλι $1 δημιουργήθηκε την $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O αφαιρεί το voice από%C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 θέτει εξαίρεση στο $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 προσκαλεί τον/την $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UΚανάλι Χρήστες Θέμα" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 ορίζει κατάσταση $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Καταστάσεις καναλιού $1: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 αφαιρεί την εξαίρεση στο $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 αφαιρεί την πρόσκληση από $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 αφαιρεί το συνθηματικό του καναλιού" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 αφαιρεί το όριο χρηστών" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 ορίζει το $2 σαν συνθηματικό καναλιού" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 ορίζει το όριο χρηστών στο κανάλι σε $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 αφαιρεί το ban από $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O δίνει voice στον/στην%C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Αποκαταστάθηκε επαφή. Γίνεται σύνδεση..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22Γίνεται σύνδεση στο $1 ($2) θύρα $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21Η Σύνδεση απέτυχε. Σφάλμα: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tΕλήφθη ένα CTCP $1 από $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tΕλήφθη ένα CTCP $1 από $2 (προς $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tΕλήφθη ένα CTCP Ήχος $1 από $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tΕλήφθη ένα CTCP Ήχος $1 από $2 (προς $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tΗ συνομιλία DCC με τον/την %C26$1%O ακυρώθηκε." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$tαποκαταστάθηκε συνομιλία DCC με%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tΑκυρώθηκε η συνομιλία DCC με %C26$1%O." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tΕλήφθη αίτημα DCC CHAT από $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tΠροσφέρεται DCC CHAT προς $1" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tΠροσφέρεται ήδη CHAT προς $1" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "" +"%C22*%O$tΗ προσπάθεια σύνδεσης DCC $1 στο%C26 $2%O απέτυχε (σφάλμα=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tΠαρελήφθη '$1%O' από τον/την$2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "" +"%C24,18 Τύπος Προς/Από Κατάσταση Μέγεθος Θεσ Αρχείο " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O.%010%C22*%O" +"$tContents of packet: $2" +msgstr "" +"%C22*%O$tΛήφθηκε μια εσφαλμένη αίτηση DCC από %C26$1%O.%010%C22*%O" +"$tΠεριεχόμενα πακέτου: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tΠροσφέρεται%C26 $1%O στον/στην%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tΔεν υπάρχει τέτοια προσφορά DCC." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV%C26 $2%O προς%C26 $1%O ακυρώθηκε." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tαποκαταστάθηκε σύνδεση DCC RECV με%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV%C26 $1%O από%C26 $3%O απέτυχε ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tΛήψη DCC: Δεν ήταν δυνατό το άνοιγμα του $1 για εγγραφή ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "" +"%C22*%O$tΤο αρχείο%C26 $1%C υπάρχει ήδη, γίνεται αποθήκευση σαν%C26 $2%O." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Oζήτησε να συνεχίσει%C26 $2 %Cαπό%C26 $3%C." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tΑκυρώθηκε το DCC SEND%C26 $2%O με %C26 $1%O." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tαποκαταστάθηκε σύνδεση DCC SEND με%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Oπροσέφερε%C26 $2 %O(%C26$3 %Obytes)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "" + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "" +"%C22*%O$tΤο χρονικό όριο για τη DCC $1%C26 $2 %Oπρος%C26 $3 %Oέληξε - " +"ακύρωση." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 διαγράφτηκε από τη λίστα επισήμανσης." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tΑποσυνδεθήκατε ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tΒρέθηκε η διεύθυνση IP σας: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O προστέθηκε στην λίστα αγνόησης." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "Αγνόηση στο %C26$1%O άλλαξε." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "" + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O αφαιρέθηκε από τη λίστα αγνοημένων." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " Η λίστα αγνοημένων είναι άδεια." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "%C22*%O$tΔεν ήταν δυνατή η σύνδεση στο%C26 %B$1 %O(Μόνο με πρόσκληση)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tΠροσκληθήκατε στο%C26 $1%O από τον/την%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) συνδέθηκε στο $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "" +"%C22*%O$tΔεν ήταν δυνατή η σύνδεση στο%C26 %B$1 %O(Απαιτεί συνθηματικό)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 πέταξε έξω τον/την $2 από το $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$tΣας έκανε kill ο/η $1 ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22Το μήνυμα της ημέρας παραλείφθηκε." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 χρησιμοποιείται ήδη. Προσπάθεια με $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$tΤο ψευδώνυμο χρησιμοποιείται ήδη. Χρησιμοποιήστε την εντολή /NICK " +"για να δοκιμάσετε ένα άλλο." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tΔεν υπάρχει τέτοιο DCC." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tΔεν τρέχει καμία διεργασία" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tΗ λίστα ειδοποίησης είναι άδεια." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Λίστα ειδοποίησης" + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 χρήστες στη λίστα ειδοποίησης." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tΕπισήμανση: ο/η $1 αποσυνδέθηκε ($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tΕπισήμανση: ο/η $1 είναι συνδεδεμένος ($3)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) αποχώρησε από $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) αποχώρησε από $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tΑπάντηση ping από $1: $2 δευτερόλεπτο(α)" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tΔεν υπάρχει απάντηση ping για $1 δευτερόλεπτα, αποσύνδεση." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tΕκτελείται ήδη μια διεργασία" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 αποχώρησε (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tΕύρεση διεύθυνσης IP για %C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22Έγινε σύνδεση." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22Αναζήτηση $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tΣταμάτησε η προηγούμενη προσπάθεια σύνδεσης (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29Το θέμα για το $1%C %C29είναι: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 άλλαξε το θέμα σε: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29Το θέμα για το $1%C %C29ορίστηκε από $2%C %C29στις $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tΆγνωστος διακομιστής. Μήπως το γράψατε λάθος;" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "" +"%C22*%O$tΑδυναμία σύνδεσης στο%C26 %B$1 %O(Έχει εξαντληθεί το όριο χρηστών)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Χρήστες στο $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cαπουσιάζει %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OΤέλος λίστας WHOIS." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O αδρανής%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O αδρανής%C26 $2%O, συνδέθηκε:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" +"%C22*%O$t%C28[%O$1%C28] %Oπραγματικός χρήστης@διακομιστή%C27 $2%O, " +"πραγματική IP%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Μιλάτε στο $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tΑποβληθήκατε από το $2 από τον/την $3 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tΕγκαταλείψατε το κανάλι $3" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tΕγκαταλείψατε το κανάλι $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tΠροσκαλέσατε τον/την %C26 $1%O στο%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tΑπο τώρα ονομάζεστε $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** ΛΗΞΗ ΤΗΣ ΚΑΤΑΓΡΑΦΗΣ ΣΤΙΣ %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** ΕΝΑΡΞΗ ΤΗΣ ΚΑΤΑΓΡΑΦΗΣ ΣΤΙΣ %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Αδυναμία ανοίγματος αρχείου(ων) καταγραφής για εγγραφή.\n" +" Ελέγξτε τα δικαιώματα στο %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Αριστερό μήνυμα" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Δεξί μήνυμα" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "Το ψευδώνυμο του συνδεόμενου ατόμου" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "Το συνδεόμενο κανάλι" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "Ο διακομιστής του ατόμου" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Ψευδώνυμο" + +#: src/common/text.c:973 +msgid "The action" +msgstr "Η δράση" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Χαρακτήρας κατάστασης" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Στοιχισμένο κείμενο" + +#: src/common/text.c:980 +msgid "The text" +msgstr "Το κείμενο" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Το μήνυμα" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Παλιό ψευδώνυμο" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Νέο ψευδώνυμο" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Το ψευδώνυμο του ατόμου που άλλαξε το θέμα" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Θέμα" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Κανάλι" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "Το ψευδώνυμο του ατόμου που έκανε kick" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "Το άτομο που έγινε kick" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "Το κανάλι" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "Η αιτία" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "Το ψευδώνυμο του ατόμου που φεύγει" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "Η ώρα" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "Ο δημιουργός" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Ψευδώνυμο" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Αιτία" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Διακομιστής" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "Από ποιον είναι" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "Η ώρα σε x.x μορφή (δείτε παρακάτω)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "Το κανάλι πρόκειται να" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "Ο ήχος" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "Το ψευδώνυμο του ατόμου" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "Το γεγονός CTCP" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "Το ψευδώνυμο του ατόμου που έθεσε το κλειδί" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "Το κλειδί" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "Το ψευδώνυμο του ατόμου που έθεσε το όριο" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "Το όριο" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "Το ψευδώνυμο του ατόμου που έδωσε το op" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "Το ψευδώνυμο του ατόμου που του δόθηκε op" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "Το ψευδώνυμο του ατόμου που του δόθηκε halfop" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "Το ψευδώνυμο του ατόμου που έδωσε το halfop" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "Το ψευδώνυμο του ατόμου που έδωσε το voice" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "Το ψευδώνυμο του ατόμου που του δόθηκε voice" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "Το ψευδώνυμο του ατόμου που έκανε το ban" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "Η μάσκα του ban" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "Το ψευδώνυμο που αφαίρεσε το κλειδί" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "Το ψευδώνυμο που αφαίρεσε το όριο" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "Το ψευδώνυμο του ατόμου που έκανε το deop" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "Το ψευδώνυμο του ατόμου που του έγινε deop" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "Το ψευδώνυμο του ατόμου που έκανε το dehalfop" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Το ψευδώνυμο του ατόμου που του έγινε dehalfop" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "Το ψευδώνυμο του ατόμου που έκανε το devoice" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "Το ψευδώνυμο του ατόμου που του έγινε devoice" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "Το ψευδώνυμο του ατόμου που έκανε το unban" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "Το ψευδώνυμο του ατόμου που έκανε την εξαίρεση" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "Η μάσκα της εξαίρεσης" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "Το ψευδώνυμο του ατόμου που αφαίρεσε την εξαίρεση" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "Το ψευδώνυμο του ατόμου που έκανε το invite" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "Η μάσκα invite" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "Το ψευδώνυμο του ατόμου που αφαίρεσε το invite" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "Το ψευδώνυμο του ατόμου που θέτει τη κατάσταση" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "Το πρόσημο της κατάστασης (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "Το γράμμα της κατάστασης" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "Το κανάλι στο οποίο ρυθμίστηκε" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Όνομα χρήστη" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Πλήρες όνομα" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Μέλη καναλιού/\"είναι ένας IRC operator\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Πληροφορίες διακομιστή" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Χρόνος αδράνειας" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Ώρα σύνδεσης" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Αιτία απουσίας" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Μήνυμα" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Λογαριασμός" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "Πραγματικά χρήστης@διακομιστής" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "Πραγματική διεύθυνση IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Όνομα καναλιού" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Κείμενο" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Όνομα διακομιστή" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Το ψευδώνυμο του ατόμου που σας προσκάλεσε" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Χρήστες" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Το ψευδώνυμο είναι σε χρήση" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Το ψευδώνυμο δοκιμάζεται" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Θύρα" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Δίκτυο" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "String καταστάσεων" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "Διεύθυνση IP" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "Τύπος DCC" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Όνομα αρχείου" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Όνομα αρχείου προορισμού" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Όνομα διαδρομής" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Θέση" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Μέγεθος" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "Αναγνωριστικό DCC" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Αριθμός ειδοποιούμενων αντικειμένων" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Παλιό όνομα αρχείου" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Νέο όνομα αρχείου" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Παραλήπτης" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Μάσκα διακομιστή" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Όνομα διακομιστή" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "Το πακέτο" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Δευτερόλεπτα" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Το ψευδώνυμο του ατόμου που έχει προσκληθεί" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Μάσκα ban" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Ποιος έθεσε το ban" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Ώρα ban" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Σφάλμα κατά την ανάλυση του γεγονότος %s.\n" +"Φόρτωμα προκαθορισμένου." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"Αδυναμία ανάγνωσης του αρχείου ήχου:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "Ο απομακρυσμένος διακομιστής έκλεισε το socket" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Άρνηση σύνδεσης" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Δεν υπάρχει διαδρομή προς το διακομιστή" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Λήξη χρόνου σύνδεσης" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Αδυναμία παραχώρησης αυτής της διεύθυνσης" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Κλείσιμο της σύνδεσης από το ταίρι" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Ascension Island" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Ανδόρα" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Ηνωμένα Αραβικά Εμιράτα" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Αφγανιστάν" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Αντίγκουα και Μπαρμπούντα" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Αγκίλα" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Αλβανία" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Αρμενία" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Ολλανδικές Αντίλλες" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Αγκόλα" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Ανταρκτική" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Αργεντινή" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "Αντίστροφο DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Αμερικάνικη Σαμόα" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Αυστρία" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "Πεδίο ΝΑΤΟ" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Αυστραλία" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Αρούμπα" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Νησιά Αλαντ" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Αζερμπαιζάν" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Βοσνία και Ερζεγοβίνη" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Νησιά Μπαρμπάντος" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Μπαγκλαντές" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Βέλγιο" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Μπουρκίνα Φάσο" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Βουλγαρία" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Μπαχραίν" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Μπουρουντί" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Επιχειρήσεις" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Μπενίν" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Νησιά Βερμούδων" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Μπρούνει Νταρουσαλλέμ" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Βολιβία" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Βραζιλία" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Νησιά Μπαχάμες" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Μουτάν" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Νησί Μουβέτ" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Μποτσουάνα" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Λευκορωσία" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Μπελίζ" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Καναδάς" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Νησιά Κοκος" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "Λαϊκή Δημοκρατία του Κονγκό" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "Δημοκρατία της Κεντρικής Αφρικής" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Κονγκο" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Ελβετία" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Ακτή Ελεφαντοστού" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Νησιά Κουκ" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Χιλή" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Καμερούν" + +#: src/common/util.c:898 +msgid "China" +msgstr "Λαϊκή Δημοκρατία της Κίνας" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Κολομβία" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Εμπορικό Internic" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Κόστα Ρίκα" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Σερβία και Μαυροβούνιο" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Κούβα" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Ακρωτήριο Verde" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Νησί των Χριστουγέννων" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Κύπρος" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "Τσέχικη Δημοκρατία" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Γερμανία" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Τζιμπουτί" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Δανία" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Δομινικη" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "Δομινικανή Δημοκρατία" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Αλγερία" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Ισημερινός" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Εκπαιδευτικό Ίδρυμα (ΗΠΑ)" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Εσθονία" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Αίγυπτος" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Δυτική Σαχάρα" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Ερυθρέα" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Ισπανία" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Αιθιοπία" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Ευρωπαϊκή Ένωση" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Φινλανδία" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Νησιά Φίτζι" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Νησιά Φώκλαντ" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Μικρονησία" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Νησιά Φαρόε" + +#: src/common/util.c:928 +msgid "France" +msgstr "Γαλλία" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Γκαμπόν" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Μεγάλη Βρετανία" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Γρανάδα" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Γεωργία" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Γαλλική Γουινέα" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Βρετανικοί Νήσοι Καναλιού" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Γκάνα" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Γιβλαρτάρ" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Γροιλανδία" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Γκάμπια" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Γουινέα" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Κυβέρνηση (ΗΠΑ)" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Γουαδελούπη" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Ισημερινή Γουινέα" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Ελλάδα" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "S. Georgia and S. Sandwich Isles." + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Γουατεμάλα" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Γκουάμ" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Γουινέα" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Γουιάνα" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Χονγκ Κονγκ" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Νησιά Χερντ και ΜακΝτόναλντ" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Ονδούρας" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Κροατία" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Αϊτή" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Ουγγαρία" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Ινδονησία" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Ιρλανδία" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Ισραήλ" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Isle of Man" + +#: src/common/util.c:959 +msgid "India" +msgstr "Ινδία" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Πληροφοριακό" + +#: src/common/util.c:961 +msgid "International" +msgstr "Διεθνές" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Βρετανική Περιοχή Δυτικού Ωκεανού" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Ιράκ" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Ιράν" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Ισλανδία" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Ιταλία" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Τζέρσεϋ" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Τζαμάικα" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Ιορδανία" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Ιαπωνία" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Κένυα" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Κουρτζεκισταν" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Καμπότζη" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Κιριμπάτι" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Κομόρες" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "St. Kitts and Nevis" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Βόρεια Κορέα" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Νότια Κορέα" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Κουβέιτ" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Νησιά Κέυμαν" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Καζακστάν" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Λάος" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Λίβανο" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Άγιος Λουκάς" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Λιχτενστάιν" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Σρι Λάνκα" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Λιβερία" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Λεσότο" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Λιθουανία" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Λουξεμβούργο" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Λεττονία" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Λιβύη" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Μαρόκο" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Μονακό" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Μολδαβία" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "Ιατρικό (ΗΠΑ)" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Μαδαγασκάρη" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Νησιά Μάρσαλ" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Στρατιωτικό (ΗΠΑ)" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "ΠΓΔΜ" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Μαλί" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Μιαμάρ" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Μογγολία" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Μακάο" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Νήσοι Βόρειας Μαριάνας" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Μαρτινίκα" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Μαυριτανία" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Μονσεράτ" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Μάλτα" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Μαυριτία" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Μαλβίδες" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Μαλάουι" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Μεξικό" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Μαλαισία" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Μοζαμβίκη" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Ναμίμπια" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Νέα Καληδονία" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Νίγηρας" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Δίκτυο Internic" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Νήσοι Νόρφολκ" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Νιγηρία" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Νικαράγουα" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Ολλανδία" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Νορβηγία" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Νεπάλ" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Ναούρου" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Νιούε" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Νέα Ζηλανδία" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Ομάν" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Μη Κερδοσκοπικός Οργανισμός Internic" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Παναμάς" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Περού" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Γαλλική Πολυνησία" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Παπούα Νέα Γουινέα" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Φιλιππίνες" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Πακιστάν" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Πολωνία" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "Αγ. Πιερ και Μικελλόν" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Πιτκάιρν" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Πουέρτο Ρίκο" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Παλαιστινιακά Εδάφη" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Πορτογαλία" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Παλάο" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Παραγουάη" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Κατάρ" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Επανένωση" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Ρουμανία" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "ARPAnet παλιάς σχολής" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Ρωσική Ομοσπονδία" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Ρουάντα" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Σαουδική Αραβία" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Νησιά Σολομώντα" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Σευχέλλες" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Σουδάν" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Σουηδία" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Σιγκαπούρη" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "Αγία Ελένη" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Σλοβενία" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Νήσοι Svalbard και Jan Mayen" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Δημοκρατία της Σλοβακίας" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Σιέρα Λεόνε" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "Σαν Μαρίνο" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Σενεγάλη" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Σομαλία" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Σουρινάμ" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "Sao Tome και Principe" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Πρώην ΕΣΣΔ" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "Ελ Σαλβαδόρ" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Συρία" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Σουαζιλάνδη" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Νήσοι Turks και Caicos" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Τσαντ" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Γαλλικές Νότιες Περιοχές" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Τόγκο" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Ταΐλάνδη" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Τατζικιστάν" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Τοκελάου" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Ανατολικό Τιμούρ" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Τουρκμενιστάν" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Τυνησία" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Τόνγκα" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Τουρκία" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Τρινιδάδ και Τομπάγκο" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Τουβάλου" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Ταϊβάν" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Τανζανία" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Ουκρανία" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Ουγκάντα" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Ηνωμένο Βασίλειο" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "Ηνωμένες Πολιτείες της Αμερικής" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Ουρουγουάη" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Ουζμπεκιστάν" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Πόλη του Βατικανού" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "Άγιος Βικέντιος και Γρεναδίνη" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Βενεζουέλα" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Βρετανικοί Παρθένοι Νήσοι" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "Αμερικάνικοι Παρθένοι Νήσοι" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Βιετνάμ" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Βανουάτου" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Νήσοι Wallis και Futuna" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Σαμόα" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Υεμένη" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Μα-γιοτ" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Γιουγκοσλαβία" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Νότιος Αφρική" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Ζάμπια" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Ζιμπάμπουε" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Άγνωστο" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "Άνοιγμα παραθύρου διαλόγου" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "Αποστολή αρχείου" + +#: src/common/xchat.c:728 +#, fuzzy +msgid "_User Info (WhoIs)" +msgstr "Πληροφορίες χρήστη (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +#, fuzzy +msgid "O_perator Actions" +msgstr "Ενέργειες Operator" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Απόδοση Chanops" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Αφαίρεση Chanops" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Απόδοση Voice" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Αφαίρεση Voice" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Kick/Ban" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Kick" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Ban" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "KickBan" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Εγκατάλειψη καναλιού" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Σύνδεση στο κανάλι...." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Εισάγετε το κανάλι προς σύνδεση:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Συνδέσεις διακομιστών" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Ping στο διακομιστή" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Απόκρυψη έκδοσης" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Op" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "αντίο" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Εισάγετε αιτία για το kick του %s:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Αποστολή" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Διάλογος" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "ΠοιοςΕίναι" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Αποστολή" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Διάλογος" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Καθαρισμός" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "Δεν ήταν δυνατή η σύνδεση στο δίαυλο μηνυμάτων" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "Η ολοκλήρωση της εντολής NameHasOwner απέτυχε" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "Η εκτέλεση της εντολής απέτυχε" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "απομακρυσμένη πρόσβαση" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "πρόσθετο για απομακρυσμένη πρόσβαση μέσω DBUS" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Δεν ήταν δυνατή η σύνδεση στο δίαυλο μηνυμάτων: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Η λήψη του %s απέτυχε: %s\n" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "_Περί" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Πελάτης IRC πολλαπλών πλατφόρμων" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Χάρτης χαρακτήρων" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "Δεν υπάρχει σύνδεση." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Πρέπει να επιλέξετε μερικά ban." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "Θέλετε σίγουρα να αφαιρέσετε όλα τα bans στο %s;" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Μάσκα" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "Από" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Ημερομηνία" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Μπορείτε να ανοίξετε τη λίστα ban μόνο μέσα από μια καρτέλα καναλιού." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: Λίστα Ban (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Αφαίρεση" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Απομάκρυνση υπολοίπων" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Ανανέωση" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "%d/%d χρήστες σε %d/%d κανάλια." + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Επιλέξτε όνομα αρχείου" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "_Σύνδεση σε κανάλι" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "_Αντιγραφή ονόματος καναλιού" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "Αν_τιγραφή κειμένου θέματος" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: Λίστα καναλιών (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "_Αναζήτηση" + +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "_Λήψεις αρχείων" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "Αποθήκευση _λίστας..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "Να εμφανιστεί μόνο:" + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "κανάλια με" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "σε" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "χρήστες:" + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "Αναζήτηση σε:" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "Όνομα καναλιού" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "Τύπος αναζήτησης:" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "Απλή αναζήτηση" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "Ταίριασμα μοτίβου (χαρακτήρες μπαλαντέρ)" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "Κανονική έκφραση" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Εύρεση:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Αποστολή αρχείου στο %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Αυτό το αρχείο δεν μπορεί να συνεχιστεί." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"Αδύνατη η πρόσβαση στο αρχείο: %s\n" +"%s.\n" +"Η συνέχιση είναι αδύνατη." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"Το αρχείο στον κατάλογο ληφθέντων αρχείων είναι μεγαλύτερο από αυτό που " +"προσφέρεται. Η συνέχιση είναι αδύνατη." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "Η συνέχιση λήψης του ίδιου αρχείου από δυο ανθρώπους είναι αδύνατη." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: Λήψεις και αποστολές αρχείων" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Κατάσταση" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Αρχείο" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "Απομένει" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Και τα δύο" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Αποστολές" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "Λήψεις αρχείων" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Λεπτομέρειες" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Αρχείο:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "Διεύθυνση:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Ακύρωση" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Αποδοχή" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Συνέχιση" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Άνοιγμα Φακέλου..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: Λίστα συνομιλίας DCC" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Έλαβ" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Στάλθ" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "Ώρα έναρξης" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*ΝΕΟ*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "ΔΙΟΡΘΩΣΕ ΜΕ" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Όνομα" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Εντολή" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Προς πάνω" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Προς κάτω" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Άκυρο" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Αποθήκευση" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Προσθήκη νέου" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Διαγραφή" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Ταξινόμηση" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Βοήθεια" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "Όχι αυτόματη σύνδεση στους διακομιστές" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "Χρήση διαφορετικού καταλόγου ρυθμίσεων" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "Όχι αυτόματο φόρτωμα προσθέτων" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "Προβολή καταλόγου αρθρωμάτων αυτόματου φορτώματος" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "Εμφάνιση καταλόγου ρυθμίσεων χρήστη" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Άνοιγμα ενός URL τύπου irc://server:port/channel" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Εκτέλεση εντολής:" + +#: src/fe-gtk/fe-gtk.c:132 +#, fuzzy +msgid "Open URL or execute command in an existing XChat" +msgstr "Άνοιγμα του URL σε ένα υπάρχον XChat" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +#, fuzzy +msgid "level" +msgstr "Ποτέ" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Προβολή πληροφοριών έκδοσης" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"Αδυναμία ανοίγματος γραμματοσειράς:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "Η μνήμη εύρεσης είναι άδεια.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d bytes" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Ουρά αποστολής: %d bytes" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"Η πράξη Εκτέλεση Εντολής εκτελεί τα δεδομένα στο Data 1 σαν να είχαν δοθεί " +"στο κουτί εισαγωγής όπου πατήθηκε η ακολουθία των πλήκτρων. Έτσι μπορεί να " +"περιέχει κείμενο (που θα σταλθεί στο κανάλι/άτομο), εντολές ή εντολές " +"χρήστη. Κατά την εκτέλεση όλοι οι \\n χαρακτήρες στο Data 1 οριοθετούν " +"ξεχωριστές εντολές, ώστε να είναι δυνατή η εκτέλεση πάνω από μίας εντολής. " +"Εάν θέλετε το \\ στο κείμενο, εκτελέστε και μετά πατήστε \\\\" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"Η εντολή Αλλαγή Καρτέλας εναλλάσσει μεταξύ καρτελών στο πρόχειρο. Θέστε Data " +"1 στη καρτέλα που θέλετε να μεταβείτε. Εάν Data 2 είναι καθορισμένο σε κάτι " +"τότε η αλλαγή θα είναι σχετική με τη τρέχουσα Θέση" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"Η εντολή Εισαγωγή στη Προσωρινή Μνήμη θα εισάγει τα περιεχόμενα του Data 1 " +"στην εγγραφή όπου η ακολουθία πλήκτρων πατήθηκε στη τρέχουσα θέση του κέρσορα" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"Η εντολή Μετακίνηση Καρτέλας μετακινεί το παράθυρο κειμένου πάνω ή κάτω. " +"κατά μία καρτέλα ή μια γραμμή. Ορίστε το Data 1 σε Up, Down, +1 ή -1." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"Η εντολή Καθορισμός Προσωρινής Μνήμης θέτει την εγγραφή όπου η ακολουθία " +"πλήκτρων πατήθηκε στα περιεχόμενα του Data 1" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"Η εντολή Περασμένη Εντολή θέτει την εγγραφή να περιέχει την τελευταία εντολή " +"που εισήχθηκε - όμοιο σαν το πάνω βέλος στο κέλυφος" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"Η εντολή Επόμενη Εντολή θέτει την εγγραφή να περιέχει την επόμενη εντολή που " +"εισήχθηκε - όμοιο σαν το κάτω βέλος στο κέλυφος" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Αυτή η εντολή αλλάζει το κείμενο της εγγραφής να συμπληρώνει ένα μη πλήρες " +"ψευδώνυμο ή εντολή. Αν το Data 1 είναι καθορισμένο τότε το διπλό-tab σε ένα " +"κορδόνι (string) θα επιλέξει το τελευταίο nick και όχι το επόμενο" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Αυτή η εντολή μετακινεί πάνω και κάτω μέσα στη λίστα των ψευδωνύμων. Αν το " +"Data 1 είναι καθορισμένο τότε μετακινεί πάνω αλλιώς κάτω" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Αυτή η εντολή ελέγχει εάν υπάρχει η τελευταία λέξη που γράφτηκε στη λίστα " +"αντικαταστάσεων και την αντικαθιστά εάν βρει ταίρι" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Αυτή η εντολή μετακινεί την επιλεγμένη καρτέλα μια θέση αριστερά" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Αυτή η εντολή μετακινεί την επιλεγμένη καρτέλα μια θέση δεξιά" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Αυτή η εντολή μετακινεί την τρέχουσα ομάδα καρτελών στα αριστερά" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Αυτή η εντολή μετακινεί την τρέχουσα ομάδα καρτελών στα δεξιά" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "" +"Προώθηση της γραμμής εισαγωγής στο ιστορικό αλλά όχι αποστολή στο διακομιστή" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "Σφάλμα κατά το φόρτωμα των ρυθμίσεων των πλήκτρων συντόμευσης" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<κανένα>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Mod" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Πλήκτρο" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Δράση" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: Συντομεύσεις πληκτρολογίου" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Δεδομένα 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Δεδομένα 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Σφάλμα κατά το άνοιγμα του αρχείου ρυθμίσεων των πλήκτρων\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Άγνωστο όνομα πλήκτρου %s στο αρχείο ρυθμίσεων των συντομεύσεων " +"πληκτρολογίου\n" +"Ακυρώθηκε το φόρτωμα, παρακαλώ διορθώστε το %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Άγνωστη δράση %s στο αρχείο ρυθμίσεων των συντομεύσεων πληκτρολογίου\n" +"Ακυρώθηκε το φόρτωμα, παρακαλώ διορθώστε το %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Αναμενόταν γραμμή Data (αρχίζει με Dx{:|!}) αλλά βρέθηκε:\n" +"%s\n" +"\n" +"Το φόρτωμα ακυρώθηκε. Παρακαλώ διορθώστε το %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"Το αρχείο συντομεύσεων πληκτρολογίου είναι κατεστραμμένο, και δεν φορτώθηκε\n" +"Παρακαλώ διορθώστε το %s/keybindings.conf\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "Δεν ήταν δυνατή η εγγραφή σε αυτό το αρχείο." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Δεν ήταν δυνατή η ανάγνωση αυτού του αρχείου." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Αυτή η μάσκα υπάρχει ήδη" + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Προσωπικό" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Ειδοποίηση" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Πρόσκληση" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Αποαγνόηση" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Εισάγετε μάσκα προς αγνόηση:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: Λίστα αγνοημένων" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Στατιστικά αγνοημένων:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Κανάλι:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Προσωπικό:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Ειδοποίηση:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Πρόσκληση:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "Προσθήκη..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "Το όνομα του καναλιού είναι πολύ μικρό, προσπαθήσετε ξανά." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: Η σύνδεση ολοκληρώθηκε" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "Η σύνδεση στο %s ολοκληρώθηκε" + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "Δεν έχει οριστεί κανένα κανάλι για αυτόματη σύνδεση σε αυτό το δίκτυο." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "Τι θέλετε να κάνετε τώρα;" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "_Τίποτα, θα συνδεθώ σε ένα κανάλι αργότερα." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "_Σύνδεση στο κανάλι:" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" +"Εάν γνωρίζετε το όνομα του καναλιού που θέλετε να συνδεθείτε, εισάγετε το " +"εδώ." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "Ά_νοιγμα λίστας καναλιών." + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "Η λήψη της λίστας καναλιών μπορεί να πάρει ένα δυο λεπτά." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "_Να εμφανίζεται πάντα αυτό το πλαίσιο διαλόγου μετά τη σύνδεση." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Διάλογος με" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Το θέμα για το %s είναι: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Δεν έχει οριστεί θέμα" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"Αυτός ο διακομιστής έχει ακόμα %d κανάλια ή συνομιλίες ανοιχτά. Να κλείσουν " +"όλα;" + +#: src/fe-gtk/maingui.c:1283 +#, fuzzy +msgid "Quit XChat?" +msgstr "Περί XChat" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1310 +#, fuzzy, c-format +msgid "You are connected to %i IRC networks." +msgstr "" +"Είστε συνδεδεμένοι σε <b>%u</b> δίκτυα IRC.\n" +"Θέλετε σίγουρα να κλείσετε το xchat;" + +#: src/fe-gtk/maingui.c:1312 +#, fuzzy +msgid "Are you sure you want to quit?" +msgstr "Θέλετε σίγουρα να αφαιρέσετε όλα τα bans στο %s;" + +#: src/fe-gtk/maingui.c:1314 +#, fuzzy +msgid "Some file transfers are still active." +msgstr "Υπάρχουν ενεργές μεταφορές αρχείων, επιβεβαίωση εγκατάλειψης;" + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Εισαγωγή ιδιότητας ή χρωματικού κώδικα" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Έντονα</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Υπογραμμισμένο</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Κανονικό" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Χρώματα 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Χρώματα 8-15" + +#: src/fe-gtk/maingui.c:1612 +#, fuzzy +msgid "_Settings" +msgstr "Ρυθμίσ_εις" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "Απόκρυψη μηνυμάτων εισόδου/εξόδου" + +#: src/fe-gtk/maingui.c:1625 +#, fuzzy +msgid "_Extra Alerts" +msgstr "Συναγερμοί" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "Μπιπ σε μήνυμα" + +#: src/fe-gtk/maingui.c:1628 +#, fuzzy +msgid "Blink Tray _Icon" +msgstr "Εναλλαγή εικονιδίου σε μήνυμα" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +#, fuzzy +msgid "_Detach" +msgstr "_Απόσπαση καρτέλας" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "_Κλείσιμο" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "Το όριο χρηστών πρέπει να είναι αριθμός!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Προστασία θέματος" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Όχι εξωτερικά μηνύματα" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Μυστικό" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Μόνο επί πρόσκληση" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Ελεγχόμενο" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Λίστα Ban" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Λέξη κλειδί" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Όριο χρηστών" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Εμφάνιση/Απόκρυψη λίστας χρηστών" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"Αδύνατη η χρήση διαφανούς παρασκηνίου!\n" +"\n" +"Πιθανόν να χρησιμοποιείτε έναν μη-σύμμορφο διαχειριστή\n" +"παραθύρων που δεν υποστηρίζεται προς το παρόν.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Εισάγετε νέο ψευδώνυμο:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Άγνωστος διακομιστής" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Αληθινό όνομα:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Χρήστης:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "Χώρα:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Διακομιστής:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "πριν από %u λεπτά" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Τελευταίο μήνυμα:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Μήνυμα απουσίας:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"Τα μενού είναι κρυμμένα. Μπορείτε να τα εμφανίσετε ξανά πατώντας το F9 ή με " +"δεξί κλικ σε ένα άδειο σημείο στο κυρίως παράθυρο." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Άνοιγμα συνδέσμου στον περιηγητή" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Αντιγραφή επιλεγμένου συνδέσμου" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Σύνδεση στο κανάλι" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Εγκατάλειψη καναλιού" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Επανασύνδεση στο κανάλι" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: Μενού χρήστη" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Επεξεργασία αυτού του μενού..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Λίστα καναλιών..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Εντολές χρήστη - Ειδικοί κώδικες:\n" +"\n" +"%c = τρέχον κανάλι\n" +"%e = όνομα τρέχοντος δικτύου\n" +"%m = πληροφορίες συστήματος\n" +"%n = το ψευδώνυμο σας\n" +"%t = ώρα/ημερομηνία\n" +"%v = έκδοση xchat\n" +"%2 = λέξη 2\n" +"%3 = λέξη 3\n" +"&2 = λέξη 2 μέχρι το τέλος της γραμμής\n" +"&3 = λέξη 3 μέχρι το τέλος της γραμμής\n" +"\n" +"πχ:\n" +"/cmd john γειά\n" +"\n" +"%2 θα είναι \"john\"\n" +"&2 θα είναι \"john γειά\"." + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Κουμπιά λίστας χρηστών - Ειδικοί κώδικες:\n" +"\n" +"%a = όλα τα επιλεγμένα ψευδώνυμα\n" +"%c = τρέχον κανάλι\n" +"%e = όνομα τρέχοντος δικτύου\n" +"%h = διακομιστής επιλεγμένου ψευδώνυμου\n" +"%m = πληροφορίες συστήματος\n" +"%n = το ψευδώνυμο σας\n" +"%s = επιλεγμένο ψευδώνυμο\n" +"%t = ώρα/ημερομηνία\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Κουμπιά διαλόγου - Ειδικοί κώδικες:\n" +"\n" +"%a = όλα τα επιλεγμένα ψευδώνυμα\n" +"%c = τρέχον κανάλι\n" +"%e = όνομα τρέχοντος δικτύου\n" +"%h = διακομιστής επιλεγμένου ψευδώνυμου\n" +"%m = πληροφορίες συστήματος\n" +"%n = το ψευδώνυμο σας\n" +"%s = επιλεγμένο ψευδώνυμο\n" +"%t = ώρα/ημερομηνία\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"Απαντήσεις CTCP - Ειδικοί κώδικες:\n" +"\n" +"%d = δεδομένα (ολόκληρο το ctcp)\n" +"%e = όνομα τρέχοντος δικτύου\n" +"%m = πληροφορίες συστήματος\n" +"%s = ψευδώνυμο αυτού που έστειλε το ctcp\n" +"%t = ώρα/ημερομηνία\n" +"%2 = λέξη 2\n" +"%3 = λέξη 3\n" +"&2 = λέξη 2 μέχρι το τέλος της γραμμής\n" +"&3 = λέξη 3 μέχρι το τέλος της γραμμής\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"Χειριστές διευθύνσεων - Ειδικοί κώδικες:\n" +"\n" +"%s = το URL\n" +"\n" +"Ένα ! μπροστά από την εντολή δείχνει\n" +"δείχνει ότι πρέπει να σταλθεί στο\n" +"κέλυφος αντί στο XChat" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: Εντολές καθορισμένες από το χρήστη" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: Αναδυόμενο μενού λίστας χρηστών" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Αντικατάσταση με" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: Αντικατάσταση" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: Χειριστές διευθύνσεων" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: Κουμπιά λίστας χρηστών" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: Κουμπιά διαλόγου" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: Απαντήσεις CTCP" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "Λί_στα δικτύων" + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "_Νέο" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Καρτέλα διακομιστή..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Καρτέλα καναλιού..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Παράθυρο διακομιστή..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Παράθυρο καναλιού..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "_Φόρτωση πρόσθετου ή δέσμης ενεργειών..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "_Έξοδος" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "_Προβολή" + +#: src/fe-gtk/menu.c:1591 +#, fuzzy +msgid "_Menu Bar" +msgstr "_Μπάρα μενού" + +#: src/fe-gtk/menu.c:1592 +#, fuzzy +msgid "_Topic Bar" +msgstr "Μπάρα _θέματος" + +#: src/fe-gtk/menu.c:1593 +#, fuzzy +msgid "_User List" +msgstr "Λίστα χρηστών" + +#: src/fe-gtk/menu.c:1594 +#, fuzzy +msgid "U_serlist Buttons" +msgstr "Κουμπιά λίστας _χρηστών..." + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "Κουμπιά _λειτουργιών " + +#: src/fe-gtk/menu.c:1597 +#, fuzzy +msgid "_Channel Switcher" +msgstr "κανάλια με" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "_Καρτέλες" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "Δεντ_ροδιάταξη" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "Μ_ετρητές δικτύου" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Κλειστό" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Γράφημα" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "Διακομι_στής" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "_Αποσύνδεση" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "_Επανασύνδεση" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "Σύνδεση στο κανάλι...." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "Σύνδεση στο κανάλι...." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Σημείωση απουσίας" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "Μενού _χρήστη" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "Ρυθμίσ_εις" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "Προτιμήσεις" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Για προχωρημένους" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Αυτόματη αντικατάσταση..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "Απαντήσεις CTCP..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Κουμπιά διαλόγου..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Συντομεύσεις πληκτρολογίου..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Γεγονότα κειμένου..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "Χειριστές διευθύνσεων..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Εντολές χρήστη..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Κουμπιά λίστας χρηστών..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Μενού λίστας χρηστών..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_Παράθυρα" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Λίστα Ban..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Χάρτης χαρακτήρων..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Άμεση συνομιλία..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Μεταφορές αρχείων..." + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "Λίστα Ban..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Λίστα αγνοημένων..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Πρόσθετα και δέσμες ενεργειών..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Ωμή καταγραφή..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "Καταγραφέας URL..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Επαναφορά διαχωριστικής γραμμής" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "Καθα_ρισμός κειμένου" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Εύρεση κειμένου..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Αποθήκευση κειμένου..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_Βοήθεια" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "Περι_εχόμενα" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "_Περί" + +#: src/fe-gtk/menu.c:2147 +#, fuzzy +msgid "_Attach" +msgstr "_Σύνδεση παραθύρου" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Τελευταία εμφάνιση" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Αποσυνδεδεμένος" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Ποτέ" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "πριν από %d λεπτά" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Συνδεδεμένος" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Εισάγετε ψευδώνυμο για προσθήκη:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "Ειδοποίηση σε αυτά τα δίκτυα:" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "Είναι αποδεκτή μια λίστα δικτύων χωρισμένη με κόμματα." + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "XChat: Λίστα αποστολής αρχείων" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "Άνοιγμα διαλόγου" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "XChat: Συνδεδεμένο σε %u δίκτυα και %u κανάλια" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "_Επαναφορά" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "Απόκρυψ_η" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "Μήνυμα σε κανάλι" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "Προσωπικό μήνυμα" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "Επισημασμένο μήνυμα" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "Απουσία" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, fuzzy, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat: Επισημασμένο μήνυμα από: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat: %u επισημασμένα μηνύματα, τελευταίο από: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat: Νέο δημόσιο μήνυμα από: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat: %u νέα δημόσια μηνύματα." + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat: Προσωπικό μήνυμα από: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "XChat: %u προσωπικά μηνύματα, το τελευταίο από: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat: Προσφορά αρχείου από: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "XChat:%u προσφορές αρχείων, τελευταία από: %s (%s)" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Έκδοση" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Περιγραφή" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Επιλογή ενός πρόσθετου ή δέσμης ενεργειών για φόρτωμα" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: Πρόσθετα και δέσμες ενεργειών" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "_Άνοιγμα..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "Α_ποφόρτωση" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Αποθήκευση ως..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: Ωμή καταγραφή (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Καθαρισμός ωμής καταγραφής" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "Το παράθυρο για το οποίο ανοίξατε αυτή την Αναζήτηση δεν υπάρχει πια." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "Η αναζήτηση έφτασε στο τέλος." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: Αναζήτηση" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "_Διάκριση πεζών από κεφαλαία" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "Αναζήτηση πρός τα _πίσω" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "_Εύρεση" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Νέο δίκτυο" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Επιβεβαίωση διαγραφής του δικτύου \"%s\" και των διακομιστών του;" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "Κανάλι" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: Λίστα καναλιών (%s)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "Συνθηματικό διακομιστή:" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "_Επεξεργασία" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "Το όνομα χρήστη και το πραγματικό όνομα δεν πρέπει να είναι κενά." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: Επεξεργασία %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Διακομιστές για %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Σύνδεση μόνο στον επιλεγμένο διακομιστή" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Όχι προσπάθεια σε όλους τους διακομιστές όταν αποτύχει η σύνδεση." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Οι λεπτομέρειες σας" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Χρήση γενικών πληροφοριών χρήστη" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "Ψευδώ_νυμο:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Δεύτερη επιλογή:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "Όν_ομα χρήστη:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "Πρ_αγματικό όνομα:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Γίνεται σύνδεση" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Αυτόματη σύνδεση κατά την εκκίνηση" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "Χρήση διακομιστή proxy" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "Χρήση SSL για όλους τους διακομιστές σε αυτό το δίκτυο" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Αποδοχή μη έγκυρων πιστοποιητικών SSL" + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "Εγκατάλειψη καναλιού:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "Κανάλια για σύνδεση, χωρισμένα με κόμμα και όχι κενό!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Εντολή σύνδεσης:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Επί πλέον εντολή που θα εκτελεστεί μετά τη σύνδεση. Εάν χρειάζεστε " +"περισσότερες από μια, ορίστε το σε LOAD -e <αρχείο>, όπου <αρχείο> ένα " +"αρχείο κειμένου που θα περιέχει τις εντολές που πρέπει να εκτελεστούν." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Συνθηματικό Nickserv:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Εάν το ψευδώνυμο σας απαιτεί συνθηματικό, εισάγετε το εδώ. Δεν υποστηρίζεται " +"από όλα τα δίκτυα IRC." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Συνθηματικό διακομιστή:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Συνθηματικό διακομιστή, αφήστε κενό αν δεν είστε σίγουροι." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Σετ χαρακτήρων:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: Λίστα δικτύων" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Πληροφορίες χρήστη" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Τρίτη επιλογή:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Δίκτυα" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "Να μην εμφανίζεται η λίστα δικτύων στην εκκίνηση" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "_Επεξεργασία..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "Ταξινόμη_ση" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" +"Ταξινομεί τη λίστα δικτύων κατά αλφαβητική σειρά. Χρησιμοποιήστε τα SHIFT-" +"ΠΑΝΩ και SHIFT-ΚΑΤΩ για να μετακινηθείτε στις γραμμές." + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "Σύν_δεση" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Εμφάνιση πλαισίου κειμένου" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Γραμματοσειρά:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Εικόνα παρασκηνίου:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Συγκράτηση γραμμών:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Χρωματισμένα ψευδώνυμα" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Δίνει στο ψευδώνυμο του καθένα διαφορετικό χρώμα" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Στοίχιση ψευδωνύμων" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Στοιχίζει δεξιά τα ψευδώνυμα" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Διαφανές παρασκήνιο" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Χρήση διαχωριστικής γραμμής" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Εισάγει μια κόκκινη γραμμή μετά το κείμενο που έχει διαβαστεί." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Ρυθμίσεις διαφάνειας" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Κόκκινο:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Πράσινο:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Μπλε:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Επισήμανση ώρας" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Ενεργοποίηση καταγραφής ώρας" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Μορφή ώρας καταγραφής:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Δείτε την σελίδα man του strftime για λεπτομέρειες." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "Αυτός που μίλησε τελευταίος" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Πλαίσιο εισόδου" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Χρήση γραμματοσειράς και χρωμάτων του πλαισίου κειμένου" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Έλεγχος ορθογραφίας" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Συμπλήρωση ψευδωνύμων" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "Αυτόματη συμπλήρωση ψευδωνύμων (χωρίς το TAB)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Επίθεμα συμπλήρωσης ψευδωνύμων:" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "Η αυτόματη συμπλήρωση ταξινομείται κατά:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Κώδικες πλαισίου εισαγωγής" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Μετάφραση του %nnn σαν ASCII τιμή" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Μετάφραση %C, %B σαν Χρώμα, Έντονο κείμενο κλπ" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, Ops πρώτα" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, Ops τελευταίοι" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Αταξινόμητο" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Κορυφή" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Βάση" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Κρυφό" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Λίστα χρηστών" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Προβολή ονομάτων διακομιστών στη λίστα χρηστών" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Ταξινόμηση λίστας χρηστών κατά:" + +#: src/fe-gtk/setup.c:205 +#, fuzzy +msgid "Show user list at:" +msgstr "Εμφάνιση/Απόκρυψη λίστας χρηστών" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Παρακολούθηση απουσιών" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "" +"Παρακολούθηση των απουσιών και επισήμανση των απόντων χρηστών με διαφορετικό " +"χρώμα" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "Σε κανάλια μικρότερα από:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Ενέργεια κατά το διπλό κλικ" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Παράθυρα" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Καρτέλες" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Πάντα" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Μόνο οι καρτέλες που ζητήθηκαν" + +#: src/fe-gtk/setup.c:242 +#, fuzzy +msgid "Tree" +msgstr "Δεντ_ροδιάταξη" + +#: src/fe-gtk/setup.c:249 +#, fuzzy +msgid "Switcher type:" +msgstr "Τύπος αναζήτησης:" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Άνοιγμα καρτέλας για τα μηνύματα διακομιστή" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Άνοιγμα καρτέλας για τις ειδοποιήσεις διακομιστή" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "Άνοιγμα καρτέλας για τα νέα προσωπικά μηνύματα" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Ταξινόμηση καρτελών με αλφαβητική σειρά" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "Μικρές καρτέλες" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Εστίαση νέων καρτελών:" + +#: src/fe-gtk/setup.c:258 +#, fuzzy +msgid "Show channel switcher at:" +msgstr "κανάλια με" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Συντόμευση καρτελών σε:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "χαρακτήρες." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Καρτέλες ή παράθυρα" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Άνοιγμα καναλιών σε:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Άνοιγμα διαλόγων σε:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Άνοιγμα εργαλείων σε:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Καρτέλες ή παράθυρα για τα DCC, Ignore, Notify κλπ.;" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "Όχι" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Ναι" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "Επιλογή φακέλου αποθήκευσης κάθε φορά" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Αρχεία και Κατάλογοι" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Αυτόματη αποδοχή αρχείων:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Αποθήκευση αρχείων στο:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Μετακίνηση ολοκληρωμένων αρχείων στο:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Αποθήκευση ψευδωνύμων στα ονόματα αρχείων" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Ρυθμίσεις δικτύου" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Λήψη της διεύθυνσης IP από τον διακομιστή IRC" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Ερώτηση στον διακομιστή IRC για την πραγματική σας διεύθυνση. " +"Χρησιμοποιείστε το όταν έχετε διεύθυνση IP της μορφής 192.168.*.* ή 10.*.*." +"* !" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "DCC διεύθυνση IP:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Απαίτηση τής χρήσης αυτής της διευθύνσης κατα την προσφορά αρχείων." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Αρχική θύρα DCC αποστολής:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Τελική θύρα DCC αποστολής:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!Αφήστε τις θύρες στο 0 για πλήρες εύρος." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Μέγιστες ταχύτητες μεταφοράς αρχείων (bytes ανά δευτερόλεπτο)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Αποστολή ενός αρχείου:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Μέγιστη ταχύτητα για μια μεταφορά" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Λήψη ενός αρχείου:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Όλες οι αποστολές αρχείων μαζί:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Μέγιστη ταχύτητα για όλα τα αρχεία" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Όλες οι λήψεις αρχείων συνδυασμένες:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Συναγερμοί" + +#: src/fe-gtk/setup.c:333 +#, fuzzy +msgid "Show tray balloons on:" +msgstr "Εμφάνιση καρτελών στο:" + +#: src/fe-gtk/setup.c:335 +#, fuzzy +msgid "Blink tray icon on:" +msgstr "Εναλλαγή εικονιδίου σε μήνυμα" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "Ενεργοποίηση εικονιδίου συστήματος" + +#: src/fe-gtk/setup.c:341 +#, fuzzy +msgid "Highlighted Messages" +msgstr "Επισημασμένο μήνυμα" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:344 +#, fuzzy +msgid "Extra words to highlight:" +msgstr "Επιπλέον λέξεις για επισήμανση:" + +#: src/fe-gtk/setup.c:345 +#, fuzzy +msgid "Nick names not to highlight:" +msgstr "Ψευδώνυμα στα οποία δε θα γίνεται επισήμανση:" + +#: src/fe-gtk/setup.c:346 +#, fuzzy +msgid "Nick names to always highlight:" +msgstr "Ψευδώνυμα στα οποία δε θα γίνεται επισήμανση:" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Διαχωρίστε πολλές λέξεις με κόμματα." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Προκαθορισμένα μηνύματα" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Έξοδος:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Εγκατάλειψη καναλιού:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Απουσία:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Απουσία" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Ανακοίνωση μηνυμάτων απουσίας" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Ανακοίνωση της απουσίας σας σε όλα τα κανάλια" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Εμφάνιση του μηνύματος απουσίας μια φορά" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Εμφάνιση των όμοιων μηνυμάτων ειδοποίησης μόνο μια φορά" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Αυτόματη απενεργοποίηση της απουσίας" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Απενεργοποίηση της σημείωσης της απουσίας πριν την αποστολή μηνυμάτων" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Προχωρημένες ρυθμίσεις" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Καθυστέρηση στην αυτόματη επανασύνδεση:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Εμφάνιση των καταστάσεων (MODE) σε ωμή μορφή" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Whois κατά την ειδοποίηση" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" +"Κάνει ένα /WHOIS όταν συνδεθεί ένας χρήστης που βρίσκεται στη λίστα " +"ειδοποίησής σας." + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Απόκρυψη μηνυμάτων εισόδου/εξόδου" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Προκαθορισμένη απόκρυψη μηνυμάτων εισόδου/εξόδου" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Αυτόματο άνοιγμα παραθύρων DCC" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Παράθυρο αποστολής" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Παράθυρο λήψης" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Παράθυρο συζήτησης" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Καταγραφή" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "Ενεργοποίηση της καταγραφής των συζητήσεων" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Όνομα αρχείων καταγραφής:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Διακομιστής %c=Κανάλι %n=Δίκτυο." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Χρονοσήμανση των αρχείων καταγραφής" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Μορφή καταγραφόμενης ώρας:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Απενεργοποιημένο)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Όλες οι συνδέσεις" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "Μόνο διακομιστές IRC" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "Μόνο λήψη DCC" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Η διεύθυνσή σας" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Διεύθυνση για τη σύνδεση:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "Χρήσιμο μόνο για υπολογιστές με πολλαπλές διευθύνσεις." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Διακομιστής Proxy" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Όνομα διακομιστή:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Θύρα:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Τύπος:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Χρήση διακομιστή proxy για:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Πιστοποίηση proxy" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Χρήση πιστοποίησης (μόνο MS Proxy, HTTP και Socks5)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Χρήση πιστοποίησης (μόνο HTTP και Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Όνομα χρήστη:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Συνθηματικό διακομιστή:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Επιλογή ενός αρχείου εικόνας" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "Επιλογή φακέλου αρχείων" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Επιλογή γραμματοσειράς" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Περιήγηση..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Επισήμανση των καταχωρημένων χρηστών με:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Επισήμανση των μη-καταχωρημένων χρηστών με:" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "Άνοιγμα φακέλου δεδομένων" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Επιλογή χρώματος" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Χρώματα κειμένου" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "χρώματα mIRC:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Τοπικά χρώματα:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Πλάνο:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Φόντο:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Χρώμα επισήμανσης:" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Χρώματα διεπαφής" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Νέα δεδομένα:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Γραμμή επισήμανσης:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Νέο μήνυμα:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Χρήστης απουσίας:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Επισήμανση:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Γεγονός" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Αρχείο ήχου" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Επιλογή αρχείου ήχου" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Μέθοδος αναπαραγωγής ήχων:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "Εξωτερικό _πρόγραμμα αναπαραγωγής ήχων:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "_Εξωτερικό πρόγραμμα" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_Αυτόματο" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "Κατάλογος αρχείων ή_χου:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Αρχείο ήχου:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "_Περιήγηση..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "_Αναπαραγωγή" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Διεπαφή" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Πλαίσιο κείμενου" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Λίστα χρηστών" + +#: src/fe-gtk/setup.c:1703 +#, fuzzy +msgid "Channel switcher" +msgstr "κανάλια με" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Χρώματα" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Συνομιλία" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Γενικές" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Ήχος" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Ρυθμίσεις δικτύου" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Μεταφορές αρχείων" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Κατηγορίες" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" +"Δε μπορείτε να τοποθετήσετε το δέντρο πάνω ή κάτω!\n" +"Παρακαλώ αλλάξτε πρώτα σε διάταξη <b>καρτέλες</b> στο μενού <b>προβολή</b>." + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" +"Άλλαξαν ορισμένες ρυθμίσεις που απαιτούν επανεκκίνηση για να ενεργοποιηθούν." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*ΠΡΟΕΙΔΟΠΟΙΗΣΗ*\n" +"Η αυτόματη αποδοχή DCC στο αρχικό κατάλογό σας\n" +"είναι επικίνδυνη και εκμεταλλεύσιμη. Πχ:\n" +"Κάποιος μπορεί να σας στείλει ένα .bash_profile" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: Προτιμήσεις" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Σφάλμα κατά την ανάλυση του αλφαριθμητικού" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Αυτό το σήμα παίρνει μόνο %d επιλογές, $%d δεν είναι έγκυρο" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Τυπώνει αρχεία κειμένου" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Επεξεργασία γεγονότων" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ Αριθμός" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Άνοιγμα από..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Δοκιμή όλων" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "Σύνδεσμος" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: Καταγραφέας διευθύνσεων" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Καθαρισμός λίστας" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Αντιγραφή επιλεγμένου συνδέσμου" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Αντιγραφή" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Αποθήκευση λίστας σε αρχείο" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d ops, %d σύνολο" + +#~ msgid "" +#~ "Set per channel options\n" +#~ "CHANOPT CONFMODE ON|OFF - Toggle conf mode/showing of join and part " +#~ "messages\n" +#~ "CHANOPT COLORPASTE ON|OFF - Toggle color paste\n" +#~ "CHANOPT BEEP ON|OFF - Toggle beep on message\n" +#~ "CHANOPT TRAY ON|OFF - Toggle tray blink on message" +#~ msgstr "" +#~ "Επιλογές ανά κανάλι\n" +#~ "CHANOPT CONFMODE ON|OFF - Εναλλαγή προβολής μηνυμάτων σύνδεσης/" +#~ "αποσύνδεσης\n" +#~ "CHANOPT COLORPASTE ON|OFF - Εναλλαγή επικόλλησης χρωμάτων\n" +#~ "CHANOPT BEEP ON|OFF - Εναλλαγή ηχητικής ειδοποίησης για μηνύματα\n" +#~ "CHANOPT TRAY ON|OFF - Εναλλαγή οπτικής ειδοποίησης για μηνύματα" + +#~ msgid "US Minor Outlying Islands" +#~ msgstr "Μικροί Απόμερο Νήσοι των ΗΠΑ" + +#~ msgid "Direct client-to-client" +#~ msgstr "Σε απευθείας σύνδεση (DCC)" + +#~ msgid "Send File" +#~ msgstr "Αποστολή αρχείου" + +#~ msgid "Offer Chat" +#~ msgstr "Συνομιλία" + +#~ msgid "Abort Chat" +#~ msgstr "Ακύρωση συνομιλίας" + +#~ msgid "Userinfo" +#~ msgstr "Πληροφορίες χρήστη" + +#~ msgid "Clientinfo" +#~ msgstr "Πληροφορίες πελάτη" + +#~ msgid "Time" +#~ msgstr "Ώρα" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "Oper" + +#~ msgid "Kill this user" +#~ msgstr "Kill this user" + +#~ msgid "Mode" +#~ msgstr "Κατάσταση" + +#~ msgid "Give Half-Ops" +#~ msgstr "Απόδοση Half-Ops" + +#~ msgid "Take Half-Ops" +#~ msgstr "Αφαίρεση Half-Ops" + +#~ msgid "Ignore" +#~ msgstr "Αγνόησε" + +#~ msgid "Ignore User" +#~ msgstr "Αγνόησε χρήστη" + +#~ msgid "UnIgnore User" +#~ msgstr "ΑποΑγνόηση χρήστη" + +#~ msgid "Info" +#~ msgstr "Πληροφορίες" + +#~ msgid "Who" +#~ msgstr "Ποιος" + +#~ msgid "DNS Lookup" +#~ msgstr "DNS Lookup" + +#~ msgid "Trace" +#~ msgstr "Εντοπισμός" + +#~ msgid "External" +#~ msgstr "Εξωτερικό" + +#~ msgid "Traceroute" +#~ msgstr "Traceroute" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "Unban" +#~ msgstr "Αφαίρεση Ban" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "Δεν υπάρχουν άλλες ανοικτές καρτέλες, έξοδος από το xchat;" + +#~ msgid "Show join/part messages" +#~ msgstr "Εμφάνιση μηνυμάτων εισόδου/εξόδου" + +#~ msgid "Color paste" +#~ msgstr "Επικόλληση χρωμάτων" + +#~ msgid "_Close Tab" +#~ msgstr "_Κλείσιμο καρτέλας" + +#~ msgid "_Layout" +#~ msgstr "_Διάταξη" + +#~ msgid "Channel List..." +#~ msgstr "Λίστα καναλιών..." + +#~ msgid "Notify List..." +#~ msgstr "Λίστα ειδοποίησης..." + +#~ msgid "_Close Window" +#~ msgstr "_Κλείσιμο παραθύρου" + +#~ msgid "User" +#~ msgstr "Χρήστης" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: Λίστα ειδοποίησης" + +#~ msgid "File Offer" +#~ msgstr "Προσφορά αρχείου" + +#~ msgid "Quit..." +#~ msgstr "Έξοδος..." + +#~ msgid "C_hannels to join:" +#~ msgstr "Σύνδεσ_η στα κανάλια:" + +#~ msgid "Resizable user list" +#~ msgstr "Μεταβλητή λίστα χρηστών" + +#~ msgid "Left" +#~ msgstr "Αριστερά" + +#~ msgid "Right" +#~ msgstr "Δεξιά" + +#~ msgid "Flash taskbar on highlighted messages" +#~ msgstr "Ειδοποίηση στην γραμμή εργασιών για τα επισημασμένα μηνύματα" + +#~ msgid "Flash taskbar on private messages" +#~ msgstr "Ειδοποίηση στην γραμμή εργασιών για τα προσωπικά μηνύματα" + +#~ msgid "Beep on highlighted messages" +#~ msgstr "Μπιπ για επεσημασμένα μηνύματα" + +#~ msgid "Beep on private messages" +#~ msgstr "Μπιπ για προσωπικά μηνύματα" + +#~ msgid "Beep on channel messages" +#~ msgstr "Μπιπ για μηνύματα στο κανάλι" + +#~ msgid "%s loaded successfully!\n" +#~ msgstr "Το %s φορτώθηκε με επιτυχία!\n" + +#~ msgid "I can't save an empty list!" +#~ msgstr "Δεν είναι δυνατή η αποθήκευση μιας άδειας λίστας!" + +#~ msgid "List display options:" +#~ msgstr "Απεικόνιση επιλογών εμφάνισης:" + +#~ msgid "Minimum Users:" +#~ msgstr "Ελάχιστοι χρήστες:" + +#~ msgid "Maximum Users:" +#~ msgstr "Μέγιστοι χρήστες:" + +#~ msgid "Regex Match:" +#~ msgstr "Ταίριασμα κανονικής έκφρασης:" + +#~ msgid "Apply Match to:" +#~ msgstr "Εφαρμογή ταιριάσματος στο:" + +#~ msgid "Apply" +#~ msgstr "Εφαρμογή" + +#~ msgid "Refresh the list" +#~ msgstr "Ανανέωση λίστας" + +#~ msgid "Save the list" +#~ msgstr "Αποθήκευση λίστας" + +#~ msgid "None" +#~ msgstr "Κανένα" + +#~ msgid "To" +#~ msgstr "Προς" + +#~ msgid "Started" +#~ msgstr "Ξεκίνησε" + +#~ msgid "Speed limit" +#~ msgstr "Όριο ταχύτητας" + +#~ msgid "XChat: File Receive List" +#~ msgstr "XChat: Λίστα λήψης αρχείων" + +#~ msgid "Open" +#~ msgstr "Άνοιγμα" + +#~ msgid "Ack" +#~ msgstr "Ack" + +#~ msgid "To/From" +#~ msgstr "Προς/Από" + +#~ msgid "Go to" +#~ msgstr "Μετάβαση σε" + +#~ msgid "(Can be a text file relative to ~/.xchat2/)." +#~ msgstr "(Μπορεί να είναι αρχείο κειμένου σχετικό με ~/.xchat2/)." + +#~ msgid "(Can be a text file relative to config dir)." +#~ msgstr "" +#~ "(Μπορεί να είναι αρχείο κειμένου σχετικό με τον κατάλογο ρυθμίσεων)." + +#~ msgid "%C18*$t$1%O $2" +#~ msgstr "%C18*$t$1%O $2" + +#~ msgid "%C21*%O$t%C21%B$1%O%C21 $2" +#~ msgstr "%C21*%O$t%C21%B$1%O%C21 $2" + +#~ msgid "%C18%H<%H$4$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$4$1%H>%H%O$t$2" + +#~ msgid "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" +#~ msgstr "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" + +#~ msgid "%C28-%C29$1/$2%C28-%O$t$3" +#~ msgstr "%C28-%C29$1/$2%C28-%O$t$3" + +#~ msgid "$1$t$2" +#~ msgstr "$1$t$2" + +#~ msgid "%C19>%O$1%C19<%O$t$2" +#~ msgstr "%C19>%O$1%C19<%O$t$2" + +#~ msgid "%C16*%O$t$1%O" +#~ msgstr "%C16*%O$t$1%O" + +#~ msgid "%C28-%C29$1%C28-%O$t$2" +#~ msgstr "%C28-%C29$1%C28-%O$t$2" + +#~ msgid "%C28*%C29$3$1%C28*$t%O$2" +#~ msgstr "%C28*%C29$3$1%C28*$t%O$2" + +#~ msgid "%C18%H<%H$3$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$3$1%H>%H%O$t$2" + +#~ msgid "%C22*%O$t$1" +#~ msgstr "%C22*%O$t$1" + +#~ msgid "%C31%H<%H$4$1%H>%H%O%C30$t$2" +#~ msgstr "%C31%H<%H$4$1%H>%H%O%C30$t$2" + +#~ msgid "PID" +#~ msgstr "PID" + +#~ msgid "Server" +#~ msgstr "Διακομιστής" + +#~ msgid "Tabs Location" +#~ msgstr "Τοποθέτηση καρτελών" + +#~ msgid "Open an irc:// url" +#~ msgstr "Άνοιγμα συνδέσμου τύπου irc://" + +#~ msgid "irc://server:port/channel" +#~ msgstr "irc://διακομιστής:θύρα/κανάλι" + +#~ msgid "Execute a xchat command" +#~ msgstr "Εκτέλεση μιας εντολής του xchat" + +#~ msgid "\"Command to execute\"" +#~ msgstr "\"Εντολή προς εκτέλεση\"" + +#~ msgid "Prints some text to the current tab/window" +#~ msgstr "Εμφανίζει κείμενο στην τρέχουσα καρτέλα/παράθυρο" + +#~ msgid "\"Text to print\"" +#~ msgstr "\"Κείμενο προς εμφάνιση\"" + +#~ msgid "server" +#~ msgstr "διακομιστής" + +#~ msgid "Get some informations from xchat" +#~ msgstr "Λήψη πληροφοριών από το xchat" + +#~ msgid "Get settings from xchat" +#~ msgstr "Λήψη ρυθμίσεων από το xchat" + +#~ msgid "name" +#~ msgstr "όνομα" + +#~ msgid "" +#~ "xchat-remote: %s\n" +#~ "Try `xchat-remote --help' for more information\n" +#~ msgstr "" +#~ "xchat-remote: %s\n" +#~ "Δοκιμάστε `xchat-remote --help' για περισσότερες πληροφορίες\n" + +#~ msgid "Failed to complete SetContext" +#~ msgstr "Η εκτέλεση της εντολής SetContext απέτυχε" + +#~ msgid "Failed to complete print" +#~ msgstr "Η εκτύπωση απέτυχε" + +#~ msgid "Failed to complete GetInfo" +#~ msgstr "Η εκτέλεση της εντολής GetInfo απέτυχε" + +#~ msgid "Failed to complete GetPrefs" +#~ msgstr "Η εκτέλεση της εντολής GetPrefs απέτυχε" + +#~ msgid "%s doesn't exist\n" +#~ msgstr "Το %s δεν υπάρχει\n" + +#~ msgid "France, Metropolitan" +#~ msgstr "Γαλλία, Μητροπολιτική" + +#~ msgid "Neutral Zone" +#~ msgstr "Ουδέτερη Ζώνη" + +#~ msgid "From:" +#~ msgstr "Από:" + +#~ msgid "To:" +#~ msgstr "Προς:" + +#~ msgid "Size:" +#~ msgstr "Μέγεθος:" + +#~ msgid "MIME Type" +#~ msgstr "Τύπος MIME" + +#~ msgid "Settings saved." +#~ msgstr "Αποθήκευση ρυθμίσεων" + +#~ msgid "Save rawlog" +#~ msgstr "Αποθήκευση ωμής καταγραφής" + +#~ msgid "Save rawlog..." +#~ msgstr "Αποθήκευση ωμής καταγραφής..." + +#~ msgid "XChat: Server List" +#~ msgstr "XChat: Λίστα διακομιστών" + +#~ msgid "Completes nick names without using the TAB key" +#~ msgstr "Συμπληρώνει τα ψευδώνυμα χωρίς τη χρήση του πλήκτρου TAB" + +#~ msgid "Input Box Appearance" +#~ msgstr "Εμφάνιση πλαισίου εισαγωγής" + +#~ msgid "Convert spaces to underscore before sending" +#~ msgstr "Μετάφραση των κενών σε κάτω παύλες πριν την αποστολή" + +#~ msgid "(See strftime manpage for details)." +#~ msgstr "(Δείτε τη καρτέλα man του strftime για λεπτομέρειες)." diff --git a/xchat-2.8.8/po/es.gmo b/xchat-2.8.8/po/es.gmo new file mode 100644 index 0000000000000000000000000000000000000000..4c50d5bfe046e2ba23cea683975a59e01dd3375f GIT binary patch literal 84761 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 literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/po/es.po b/xchat-2.8.8/po/es.po new file mode 100644 index 0000000..f5748c2 --- /dev/null +++ b/xchat-2.8.8/po/es.po @@ -0,0 +1,5960 @@ +# Mensajes en español para X-Chat +# Copyright (C) 2004 Free Software Foundation, Inc. +# This file is distributed under the same license as the X-Chat package. +# Juan Pablo Puerta <jppuerta@iname.com>, 1999 +# Antonio de la Torre <adltorre@terra.es>, 2001 +# Pablo Gonzalo del Campo <pablodc@bigfoot.com>,2002 +# Ramón Rey Vicente <ramon.rey@hispalinux.es>, 2003,2004 +# Rafael Bermúdez <rafaelbermudez@gmail.com>, 2006 +# Rubén C. Díaz Alonso <outime@gmail.com>, 2006 +# +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.6.7\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2006-08-30 13:56-0700\n" +"Last-Translator: Rubén C. Díaz Alonso <outime@gmail.com>\n" +"Language-Team: Spanish <es@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "No se puede crear ~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Estoy ocupado" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Saliendo" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* ¡Ejecutar IRC como root es peligroso!. Debería crear una\n" +" cuenta de usuario normal y usarla para conectarse.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Esperando" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Activo" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Ha fallado" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Terminado" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Conectar" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Abortado" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "No se puede acceder a %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Error" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s está ofreciendo \"%s\". ¿Deseas aceptar?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "No hay DCCs activos\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "SÍ " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "NO " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Está recibiendo demasiados CTCP de %s, ignorando a %s\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "Está recibiendo demasiados MSG de %s, desactivando autodiálogo.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s conectados\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s desconectados\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "No ha entrado en ningún canal. Intente /join #<canal>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "No está conectado. Intente /server <equipo> [<puerto>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "¡Se necesita /bin/sh para poder ejecutarse!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Órdenes disponibles:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Órdenes definidas por el usuario:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Órdenes definidas por el complemento:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Escriba /HELP <orden> para obtener más información, ó /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Argumento desconocido '%s' ignorado." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "No se encontró la extensión.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Esta extensión se niega a ser desactivada.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "" +"ADDBUTTON <nombre> <acción>, añade un botón debajo de la lista de usuarios" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "" +"ALLCHAN <cmd>, envía una orden a todos los canales a los que se ha unido" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "" +"ALLCHAN <cmd>, envía una orden a todos los canales a los que se ha unido" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "" +"ALLSERV <cmd>, envía una orden a todos los servidores a los que se ha " +"conectado" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<razón>], establece su ausencia" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <máscara> [<tipo de veto>], banea a todos aquellos que concuerden con la " +"máscara del canal actual. Si ya están en el canal esto no les expulsa (es " +"necesario ser operador del canal)" + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "SET [-quite] <variable> [<valor>]" + +#: src/common/outbound.c:3508 +#, fuzzy +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "CLEAR, Limpia la ventana de texto actual" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, Cierra la ventana o solapa actual" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" +"COUNTRY [-s] <código|comodín>, busca un código de país, ej: au = Australia" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <apodo> <mensaje>, envía el mensaje CTCP al apodo, los mensajes comunes " +"son VERSION y USERINFO" + +#: src/common/outbound.c:3516 +#, fuzzy +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "CYCLE, se marcha del canal actual y vuelve a entrar inmediatamente" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <apodo> - recibe un archivo ofrecido\n" +"DCC SEND [-maxcps=#] <apodo> [archivo] - envía un archivo a una persona\n" +"DCC PSEND [-maxcps=#] <apodo> [archivo] - envía un archivo usando modo " +"pasivo\n" +"DCC LIST - muestra la lista DCC\n" +"DCC CHAT <apodo> - ofrece el DCC CHAT a alguien\n" +"DCC PCHAT <apodo> - ofrece el DCC CHAT usando modo " +"pasivo\n" +"DCC CLOSE <tipo> <apodo> <archivo> - ejemplo:\n" +" /dcc close send juanperez archivo.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <apodo>, quita el estado de semi-operador del canal al apodo en el " +"canal actual (necesita ser operador del canal)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <nombre>, borra un botón de debajo de la lista de usuarios" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <apodo>, quita el estado de operador al apodo en el canal actual " +"(necesita ser operador del canal)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <apodo>, quita el estado de voz del apodo en el canal actual " +"(necesita ser operador del canal)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, Se desconecta del servidor" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <apodo|equipo|ip>, Busca la dirección IP de un usuario" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <texto>, Imprime texto localmente" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <orden>, ejecuta la orden. Si se usa la bandera -o entonces la " +"salida es enviada al canal actual, si no, se imprime en la caja de texto " +"actual" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, envía al proceso la señal de continuar" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], mata un ejecutable corriendo en la sesión actual. Si de " +"indica -9 el proceso es matado por la fuerza" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, envía al proceso la señal de detenerse" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, envía los datos a la entrada estándar del proceso" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, borra la cola de envío actual del servidor" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" +"GATE <equipo> [<puerto>], utiliza un proxy a través de un equipo, el puerto " +"predeterminado es el 23" + +# fuzzy +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <apodo> <contraseña> " + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" +"HOP <apodo>, otorga estado de semi-operador al apodo (necesita ser operador " +"del canal)" + +# fuzzy +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <contraseña> " + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <máscara> <tipos..> <opciones..>\n" +" máscara - máscara de equipos a ignorar, ej: *!*@*.aol.com\n" +" tipos - tipos de datos a ignorar, uno o todos de:\n" +" PRIV, CHAN, NOTI, CTCP, INVI, ALL\n" +" opciones - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <apodo> [<canal>], invita a alguien a un canal, por omisión el canal " +"actual (necesita ser operador del canal)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <canal>, entra al canal" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <apodo>, expulsa al apodo del canal actual (necesita ser operador del " +"canal)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <apodo>, banea y luego expulsa al apodo del canal actual (necesita " +"ser operador del canal)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, fuerza una nueva prueba de retardo" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <texto>, busca el texto en el buffer" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <archivo>, carga un complemento (plugin) o un guión (script)" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, Quita masivamente el estado de semi-operador en el canal actual " +"(necesita ser operador del canal)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, Quita masivamente el estado de operador en el canal actual (necesita " +"ser operador del canal)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <acción>, envía la acción al canal actual (las acciones están escritas en " +"tercera persona del inglés, como /me jumps)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, Expulsa masivamente a todos excepto a usted en el canal actual " +"(necesita ser operador del canal)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, Otorga masivamente el estado de operador del canal actual (necesita ser " +"operador del canal)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <apodo> <mensaje>, envía un mensaje privado" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, Lista los apodos del canal actual" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <apodo> <mensaje>, Envía una noticia CTCP" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <nombre del equipo> [<puerto>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <apodo>, establece su apodo" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <apodo/canal> <mensaje>, envía una noticia. Las noticias son una " +"especie de mensaje que debería ser auto publicado" + +#: src/common/outbound.c:3614 +#, fuzzy +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [<apodo>], lista su lista de notificaciones o agrega a alguien a ella" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" +"OP <apodo>, otorga el estado de operador del canal al apodo (necesita ser " +"operador del canal)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" +"PART [<canal>] [<razón>], abandona el canal, por omisión el canal actual" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <apodo | canal>, Envía pings CTCP al apodo o canal" + +#: src/common/outbound.c:3622 +#, fuzzy +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "" +"QUERY <apodo>, abre una nueva ventana privada de mensajes hacia alguien" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<razón>], se desconecta del servidor actual" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <texto>, envía el texto en formato plano hacia el servidor" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<equipo>] [<puerto>] [<contraseña>], Puede ser llamado " +"sólo como /RECONNECT para reconectarse al servidor actual o con /" +"RECONNECT_ALL para reconectarse a todos los servidores abiertos" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<equipo>] [<puerto>] [<contraseña>], Puede ser llamado sólo como /" +"RECONNECT para reconectarse al servidor actual o con /RECONNECT ALL para " +"reconectarse a todos los servidores abiertos" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <texto>, envía datos crudos hacia xchat como si estos fuesen recibidos " +"desde el servidor IRC" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <texto>, envía el texto hacia un objeto de la ventana actual" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <apodo> [<archivo>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <equipo> <puerto> <canal>, Lo conecta y entra en un canal" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <host> <port> <channel>, Le conecta y entra en un canal" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <equipo> [<puerto>] [<contraseña>], lo conecta al servidor, el " +"puerto predeterminado es 6667 para conexiones normales y 9999 para " +"conexiones ssl" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <equipo> [<puerto>] [<contraseña>], lo conecta a un servidor, el " +"puerto predeterminado es 6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-quite] <variable> [<valor>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<posición>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<asunto>], Establece el asunto si se provee uno, si no, muestra el " +"topic actual" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "" +"UNBAN <máscara> [<máscara>...], reincorpora las máscaras especificadas." + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <máscara> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <nombre>, desactiva una extensión (plugin) o un guión (script)" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, abre una URL en su navegador" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <apodo1> <apodo2> etc, resalta el (los) apodo(s) en la " +"lista de usuarios del canal" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "" +"VOICE <apodo>, le otorga el estado de voz a alguien (necesita ser operador " +"del canal)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <mensaje>, escribe el mensaje a todos los canales" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <mensaje>, envía el mensaje a todos los operadores del canal en el " +"canal actual" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Uso: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"No hay ayuda disponible para esa orden.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "No existe esa orden.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Argumentos erróneos para la orden de usuario.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Demasiados comandos recursivos de usuario, abortando." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Orden desconocida. Pruebe /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "" +"No tiene el símbolo xchat_plugin_init. ¿Es de verdad una extensiçon de xchat?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "¿Está seguro de que es un servidor y un puerto con SSL?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"No se pudo resolver el nombre de equipo %s\n" +"¡Verifique su configuración de IP!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Ha fallado el proxy traversal.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Ciclando al siguiente servidor en %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Atención: el conjunto de caracteres \"%s\" es desconocido. No se\n" +"aplicará conversión para la red %s." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 añadido a la lista de notificaciones." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Lista de bans:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tNo puede entrar%C26 %B$1 %O(Estás baneado)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 es ahora conocido como $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 banea a $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tCanal $1 creado en $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O quita semi-OP a%C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O quita OP de a%C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O quita voz a%C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 establece a $2 como exento" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O da estado de semi-OP a%C26 $2" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 invita a $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UTema de los usuarios del canal" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 establece modo $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Canal $1 modos: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O da OP a%C26 $2" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 quita la exención a $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 quita invitación a $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 quita contraseña del canal" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 quita límite de usuarios" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 establece contraseña del canal del canal como $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 establece límite del canal a $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 quita veto a $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O da voz a%C26 $2" + +#: src/common/textevents.h:96 +#, fuzzy +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Conectado. Ahora registrándose.." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22Conectando a $1 ($2) puerto $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21Fallo en la conexión. Error: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tSe ha recibido un CTCP $1 de $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tSe ha recibido un CTCP $1 de $2 (a $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tSe ha recibido un sonido CTCP $1 de $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tSe ha recibido un CTCP $1 de $2 (a $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tCharla DCC para %C26$1%O abortada." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "" +"%C22*%O$tConexión para charla DCC establecida con %C26$1 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tCharla DCC con %C26$1%O perdida. $4." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tSe ha recibido una oferta de charla DCC de $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tOfreciendo charla DCC a $1" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tYa se está ofreciendo una charla a $1" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$tEl intento de conexión DCC $1 con%C26 $2%O falló (err=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tSe ha recibido '$1%O' de $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 Tipo De/Para Estado Tamaño Pos Archivo " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O.%010%C22*%O" +"$tContents of packet: $2" +msgstr "" +"%C22*%O$tSe ha recibido una petición DCC errónea de %C26$1%O.%010%C22*%O" +"$tContenidos del paquete: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tOfrece%C26 $1%O a%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tNo existe tal oferta DCC." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "-%C10-%C11-%O$tRecepción DCC %C11$2%O para %C11$1%O abortado." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tRecepción DCC %C26 $1%O de%C26 $3%O completada %C30[%C26$4%O cps%" +"C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "" +"%C22*%O$tConexión para recepción DCC establecida con%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tRecepción DCC %C26 $1%O de%C26 $3%O falló ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tRecepción DCC: No se pudo abrir $1 para escritura ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "" +"%C22*%O$tEl archivo%C26 $1%C ya existe, guardándolo como%C26 $2%O en su " +"lugar." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Oha pedido retomar %C26 $2 %Cde%C26 $3%C." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tEnvío DCC%C26 $2%O para%C26 $1%O abortado." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tEnvío DCC%C26 $1%O para%C26 $2%O completado %C30[%C26$3%O cps%C30]%" +"O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tConexión para envío DCC establecida con%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tEl envío DCC%C26 $1%O para%C26 $2%O falló. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Oha ofrecido%C26 $2 %O(%C26$3 %Obytes)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Opara%C26 $3 %Cse paró - abortando." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "" +"%C22*%O$tDCC $1%C26 $2 %Opara%C26 $3 %Oagotó el tiempo de espera - abortando." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 borrado de la lista de notificaciones." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tDesconectado ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tEncontró su IP: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O añadido a la lista de ignorados." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "Ignorar a %C26$1%O cambió" + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 Máscara PRIV NOTI CAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O se quitó de la lista de ignorados." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " La lista de ignorados está vacía." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "" +"%C22*%O$tNo pudo entrar a%C26 %B$1 %O(El canal es sólo para invitados)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tHa sido invitado a%C26 $1%O por%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) ha entrado en $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$tNo pudo entrar%C26 %B$1 %O(Requiere palabra clave)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 ha echado a $2 de $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$tHa sido eliminado por $1 ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22Se saltó el mensaje del día (MOTD)." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 ya está en uso. Reintentando con $2.." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$tEl apodo ya está siendo usado. Use /NICK para intentar con otro." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tNo existe ese DCC." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tNo se está ejecutando ningún proceso actualmente" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tLa lista de notificaciones está vacía." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Lista de notificación " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 usuarios en la lista de notificaciones." + +#: src/common/textevents.h:282 +#, fuzzy +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "-%C10-%C11-%O$tNotificación: $1 se ha desconectado ($2)." + +#: src/common/textevents.h:285 +#, fuzzy +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tNotificación: $1 se ha conectado ($2)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) ha abandonado $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) ha abandonado $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tRespuesta al Ping de $1 : $2 segundo(s)" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tNo hubo respuesta al ping en $1 segundos, desconectando." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tYa se está ejecutando un proceso" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 se ha marchado (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 establece modos%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Mensajes de los operadores%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tBuscando número de IP para%C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22Conectado." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22Buscando $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tSe paró el anterior intento de conexión (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29El topic para $1%C %C29es $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 ha cambiado el topic a: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29Topic para $1%C %C29definido por $2%C %C29en $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tEquipo desconocido. ¿Quizá se ha equivocado?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "" +"%C22*%O$tNo puede entrar a%C26 %B$1 %O(Se llegó al límite de usuarios)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Usuarios en $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cestá ausente %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OFinal de la lista WHOIS." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O inactivo%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O inactivo%C26 $2%O, entró:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" +"%C22*%O$t%C28[%O$1%C28] %Overdadero usuario@equipo%C27 $2%O, verdadera IP%" +"C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Has entrado en $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tSe le ha echado de $2 por $3 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tHa abandonado el canal $3" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tHa abandonado el canal $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tEstá invitando%C26 $1%O a%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tUsted es ahora conocido como $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** FINALIZANDO CONEXIÓN EN %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** INICIANDO CONEXIÓN EN %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* No se pudo abrir el archivo de registro para escritura. Compruebe los\n" +" persisos de %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Mensaje de ausencia" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "El mensaje" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "El apodo de la persona que entra" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "El canal al que está entrando" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "El equipo de la persona" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Apodo" + +#: src/common/text.c:973 +msgid "The action" +msgstr "La acción" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Modo carácter" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Texto de info" + +#: src/common/text.c:980 +msgid "The text" +msgstr "El texto" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "El mensaje" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Apodo anterior" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Nuevo apodo" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Apodo de la persona que ha cambiado el topic" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Topic" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Canal" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "El apodo del que expulsa" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "La persona que esta siendo expulsada" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "El canal" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "La razón" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "El apodo de la persona que abandona" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "El tiempo" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "El creador" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Apodo" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Razón" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Equipo" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "De quién viene" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "El tiempo en el formato x.x (vea debajo)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "El canal se va a" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "El sonido" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "El apodo de la persona" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "El evento CTCP" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "El apodo de la persona que establece la clave" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "La clave" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "El apodo de la persona que establece el límite" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "El limite" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "El apodo de la persona que otorgó los permisos de operador" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "El apodo de la persona que ha sido convertida en operador" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "El apodo de la persona que ha sido convertida en semi-operador" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "El apodo de la persona que otorgó los permisos de semi-operador" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "El apodo de la persona que otorgó los permisos de voz" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "El apodo de la persona que ha sido convertida en voz" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "El apodo de la persona que realizó el veto (banning)" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "La máscara de vetos" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "El apodo de quien ha eliminado la clave" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "El apodo de quien ha eliminado el límite" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "El apodo de la persona que ha revocado los permisos de operador" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "El apodo de la persona a la que se la quitado el permiso de operador" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "El apodo de la persona que ha removido los permisos de semi-operador" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "" +"El apodo de la persona a la que se la quitado los permisos de semi-operador" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "El apodo de la persona que ha revocado lo permisos de voz" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "El apodo de la persona a la que se la quitado los permisos de voz" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "El apodo de la persona que ha revocado el veto" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "El apodo de la persona que otorgó la excepción" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "La máscara de excención" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "El apodo de la persona que ha quitado la exención" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "El apodo de la persona que ha realizado la invitación" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "La máscara de invitación" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "El apodo de la persona que ha removido la invitación" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "El apodo de la persona que ha establecido el modo" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "El signo del modo (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "La letra del modo" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "El canal esta siendo configurado" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Nombre de usuario" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Nombre completo" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Membresía de canal/es un operador de IRC" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Información del servidor" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Tiempo inactivo" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Tiempo de conexión" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Razón de ausencia" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Mensaje" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Cuenta" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "Verdadero usuario@equipo" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "Verdadera IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Nombre del canal" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Texto" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Nombre del servidor" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Apodo de la persona que le ha invitado" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Usuarios" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Apodo en uso" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Intentando usar el apodo" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Puerto" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Red" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Cadena de modos" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "Dirección IP" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "Tipo DCC" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Nombre de archivo" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Nombre de archivo de destino" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Ruta" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Posición" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Tamaño" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "Cadena DCC" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Número de elementos de notificación" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Nombre anterior del archivo" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Nombre nuevo del archivo" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Receptor" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Máscara de equipo" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Nombre de equipo" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "El paquete" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Segundos" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Apodo de la persona que ha sido invitada" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Máscara de veto" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Quien ha establecido el veto" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Tiempo de veto" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Error al analizar el evento %s.\n" +"Cargando el predeterminado" + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"No se puede leer el archivo de sonido:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "Puerto cerrado en el equipo remoto" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Conexión rechazada" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "No hay ruta hacia el equipo" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Tiempo de espera de la conexión agotado" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "No se puede asignar esa dirección" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Conexión reiniciada por el par" + +#: src/common/util.c:848 +#, fuzzy +msgid "Ascension Island" +msgstr "Islas Cocos" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Emiratos Arabes Unidos" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Afganistán" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Antigua y Barbuda" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Albania" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Armenia" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Antillas Holandesas" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Antártida" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Argentina" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "DNS inverso" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Samoa Americano" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Austria" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "Fiel a la OTAN" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Australia" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:866 +#, fuzzy +msgid "Aland Islands" +msgstr "Islas Malvinas" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Azerbaiyán" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Bosnia y Herzegovina" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Bangladesh" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Bélgica" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Bulgaria" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Bahrain" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Negocios" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Brunei" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Bolivia" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Brasil" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Bahamas" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Bután" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Isla Bouvet" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Bielorrusia" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Belice" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Canadá" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Islas Cocos" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "República Centro Africana" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Congo" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Suiza" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Costa de Marfil" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Islas Cook" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Chile" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Camerún" + +#: src/common/util.c:898 +msgid "China" +msgstr "China" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Colombia" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Anuncio de Internic" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Serbia y Montenegro" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Cuba" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Cabo Verde" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Isla Natividad" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Chipre" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "República Checa" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Alemania" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Dibuti" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Dinamarca" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Dominica" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "República Dominicana" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Argelia" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Ecuador" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Institución educativa" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Estonia" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Egipto" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Sahara Occidental" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "España" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Etiopía" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Finlandia" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Fiji" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Islas Malvinas" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Micronesia" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Islas Feroe" + +#: src/common/util.c:928 +msgid "France" +msgstr "Francia" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Gabón" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Gran Bretaña" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Granada" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Georgia" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Guayana Francesa" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Islas del Canal de la Mancha" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Gana" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Groenlandia" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Gobierno" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Guadalupe" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Guinea Ecuatorial" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Grecia" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Islas Georgia y Sandwich del Sur" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Guinea-Bissau" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Guayana" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Islas Heard y McDonald" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Croacia" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Haití" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Hungría" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Indonesia" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Irlanda" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Israel" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "" + +#: src/common/util.c:959 +msgid "India" +msgstr "India" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Informativo" + +#: src/common/util.c:961 +msgid "International" +msgstr "Internacional" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Territorio Oceánico Indio Británico" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Iraq" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Irán" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Islandia" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Italia" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Jamaica" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Jordania" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Japón" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Kenia" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Kyrgyzstan" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Camboya" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Comores" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "San Kitts y Nevis" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Corea del Norte" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Corea del Sur" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Kuwait" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Islas Caimán" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Kazajistán" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Líbano" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Santa Lucía" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Liberia" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Lesoto" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Lituania" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Luxemburgo" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Letonia" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Libia" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Marruecos" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Mónaco" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Moldavia" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "Servicio médico de Estados Unidos" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Madagascar" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Islas Marshall" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Militar" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Macedonia" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Mongolia" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Macao" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Islas Marianas del Norte" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Martinica" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Mauritania" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Mauricio" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Maldivas" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "México" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Malasia" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Mozambique" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Namibia" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Nueva Caledonia" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Níger" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Red de Internic" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Isla Norfolk" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Nigeria" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Holanda" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Noruega" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Nueva Zelanda" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Omán" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Organización sin ánimo de lucro Internic" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Panamá" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Perú" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Polinesia Francesa" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Papau Nueva Guinea" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Filipinas" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Pakistán" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Polonia" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "San Pierre y Miquelon" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Puerto Rico" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Territorio Palestino" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Portugal" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Paraguay" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Qatar" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Reunión" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Rumania" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "Vieja escuela de ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Federación Rusa" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Ruanda" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Arabia Saudí" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Islas Salomón" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Seychelles" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Sudán" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Suecia" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Singapur" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "Santa Helena" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Eslovenia" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Islas Svalbard y Jan Mayen" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "República de Eslovaquia" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Sierra Leona" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Somalia" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Surinam" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "Santo Tomé y Principe" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Antigua URSS" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Siria" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Swazilandia" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Islas Turks y Caicos" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Chad" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Territorios Franceses del Sur" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Tailandia" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Tayikistán" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Timor Oriental" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Túnez" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Turquía" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Trinidad y Tobago" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Tanzania" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Ucrania" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Reino Unido" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "Estados Unidos" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Uruguay" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Uzbekistán" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Ciudad Estado del Vaticano" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "San Vicente y las Granadinas" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Islas Virgenes Británicas" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "Islas Virgenes Norteamericanas" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Islas Wallis y Futuna" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Yemen" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Yugoslavia" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Sudáfrica" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Zambia" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Desconocido" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "Abrir la ventana de diálogo" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "Enviar un archivo" + +#: src/common/xchat.c:728 +#, fuzzy +msgid "_User Info (WhoIs)" +msgstr "Información de usuario (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +#, fuzzy +msgid "O_perator Actions" +msgstr "Opciones" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Dar Op" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Tomar Op" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Dar voz" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Tomar voz" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Echar/Banear" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Echar" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Banear" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "Echar y banear" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Abandonar canal" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Entrar al canal..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Introduzca el canal al que quiere entrar:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Enlaces del servidor" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Ping al servidor" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Ocultar la versión" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Op" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "Quitar Op" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "adiós" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Introduzca razón para expulsar a %s:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Enviar archivo" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Diálogo" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Enviar" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Charla" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Limpiar" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "No se ha podido conectar al bus de la sesión" + +#: src/common/dbus/dbus-client.c:86 +#, fuzzy +msgid "Failed to complete NameHasOwner" +msgstr "Imposible completar comando" + +#: src/common/dbus/dbus-client.c:112 +#, fuzzy +msgid "Failed to complete Command" +msgstr "Imposible completar comando" + +#: src/common/dbus/dbus-plugin.c:30 +#, fuzzy +msgid "remote access" +msgstr "acceso remoto xchat" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "complemento para acceso remoto usando DBUS" + +#: src/common/dbus/dbus-plugin.c:897 +#, fuzzy, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "No se ha podido conectar al bus de la sesión : %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Imposible adquirir %s: %s\n" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "_Acerca de" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Un cliente de IRC multiplataforma." + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Lista de caracteres" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "No conectado." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Debe seleccionar algún baneado" + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Máscara" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "De" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Fecha" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Sólo puedes abrir la lista de bans mientras hay pestaña de canal." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: Lista de bans (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Quitar" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Achicar" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Refrescar" + +#: src/fe-gtk/chanlist.c:111 +#, fuzzy, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Estadísticas de usuarios y canales: %d/%d Usuarios en %d/%d Canales" + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Seleccione un archivo de salida" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +#, fuzzy +msgid "_Join Channel" +msgstr "Entrar al canal" + +#: src/fe-gtk/chanlist.c:633 +#, fuzzy +msgid "_Copy Channel Name" +msgstr "Nombre del canal" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: Lista de canales (%s)" + +#: src/fe-gtk/chanlist.c:781 +#, fuzzy +msgid "_Search" +msgstr "XChat: Buscar" + +#: src/fe-gtk/chanlist.c:787 +#, fuzzy +msgid "_Download List" +msgstr "Descargar archivos en:" + +#: src/fe-gtk/chanlist.c:793 +#, fuzzy +msgid "Save _List..." +msgstr "Lista de servidores..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "" + +#: src/fe-gtk/chanlist.c:818 +#, fuzzy +msgid "channels with" +msgstr "canal" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:843 +#, fuzzy +msgid "users." +msgstr "Usuarios" + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:861 +#, fuzzy +msgid "Channel name" +msgstr "Nombre del canal" + +#: src/fe-gtk/chanlist.c:882 +#, fuzzy +msgid "Search type:" +msgstr "Buscar texto..." + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:890 +#, fuzzy +msgid "Pattern Match (Wildcards)" +msgstr "Coincidir con exp. regular:" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Buscar:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Enviar archivo a %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Ese archivo no se puede retomar" + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"No se pudo acceder al archivo: %s\n" +"%s.\n" +"No es posible retomar." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"El archivo en el directorio de descarga es más grande que el archivo " +"afrecido. No es posible retomar." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "No se puede retomar el mismo archivo de dos personas." + +#: src/fe-gtk/dccgui.c:745 +#, fuzzy +msgid "XChat: Uploads and Downloads" +msgstr "XChat: Órdenes definidas por el usuario" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Estado" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Archivo" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "Tiempo" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Ambos" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Subidos" + +#: src/fe-gtk/dccgui.c:804 +#, fuzzy +msgid "Downloads" +msgstr "Descargar archivos en:" + +#: src/fe-gtk/dccgui.c:809 +#, fuzzy +msgid "Details" +msgstr "Sus datos" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Archivo:" + +#: src/fe-gtk/dccgui.c:821 +#, fuzzy +msgid "Address:" +msgstr "Dirección" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Abortar" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Aceptar" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Continuar" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Abrir carpeta..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: Lista de conversación DCC" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Recibido" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Enviado" + +#: src/fe-gtk/dccgui.c:1004 +#, fuzzy +msgid "Start Time" +msgstr "Tiempo de inicio" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*NUEVO*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "EDÍTAME" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Nombre" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Comando" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Subir" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Bajar" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Cancelar" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Guardar" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Agregar nuevo" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Borrar" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Ordenar" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Ayuda" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "No reconectarse al servidor automáticamente" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "usar un directorio de configuración diferente" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "No activar automáticamente ningún complemento" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "Mostrar complemento autocargar directorio" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "Mostrar directorio de configuración de usuario" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Abrir una URL irc://server:port/channel" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Ejecutar orden:" + +#: src/fe-gtk/fe-gtk.c:132 +msgid "Open URL or execute command in an existing XChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +#, fuzzy +msgid "level" +msgstr "Nunca" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Mostrar información de la versión" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"ha fallado la apertura de la tipografía:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "El buffer de búsqueda esta vacio.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d bytes" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"La acción ^BRun Command^B ejecuta los datos en Data 1 como si hubiesen sido " +"escritos en la caja de texto donde presionó la secuencia de teclas. No " +"obstante puede contener comandos de texto (los cuales serán enviados al " +"canal o persona), o comandos de usuario. Cuando se ejecuten todos los " +"caracteres en Data 1 son usados para delimitar comandos separados de ese " +"modo es posible ejecutar más de un comando. Si quiere un \\ en el texto de " +"ejecución actual ejecutelo y luego presione Intro \\\\" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"El comando ^BChange Page^B cambia entre las paginas del bloc de notas. " +"Inicialice Data 1 con la página a la que desea cambiar. Si Data 2 está " +"configurado para cualquiera entonces el cambio será relativo a la posición " +"actual." + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"El comando ^BInsert in Buffer^B insertará el contenido de Data 1 en la " +"entrada donde la secuencia de teclas fué presionada en la posición actual " +"del cursor" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"El comando ^BScroll Page^B desplaza el control de texto hacia arriba o abajo " +"un página. Si Data 1 esta configurado como cualquiera la página se " +"desplazará hacia arriba, sino se desplazará hacia abajo." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"El comando ^BSet Buffer^B establece la entrada donde la secuencia de teclas " +"fué introducida a los contenidos de Data 1" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"El comando ^BLast Command^B establece la entrada para contener el último " +"comando ingresado al igual que presionar la tecla arriba en la línea de " +"comandos" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"El comando ^BNext Command^B establece la entrada para que contenga el " +"siguiente comando ingresado al igual que al presionar la tecla abajo en la " +"línea de comandos" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Este comando cambia el texto en la entrada para completar un apodo " +"incompleto o un comando. Si Data 1 esta establecido entonces al presionar " +"dos veces la tecla TAB sobre una cadena seleccionará el último apodo, no el " +"siguiente." + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Este comando desplaza hacia arriba y abajo la lista de apodos. Si Data 1 " +"esta establecido a cualquiera entonces se desplazará hacia arriba, sino se " +"desplazará hacia abajo" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Este comando comprueba la última palabra introducida en la entrada contra la " +"lista de reemplazos y la reemplaza si encuentra una coincidencia" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Este comando mueve una vez la solapa superior hacia la izquierda" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Este comando mueve una posición la solapa superior hacia la derecha" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Este comando mueve la familia actual de solapas hacia la izquierda" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Este comando mueve la familia actual de solapas hacia la izquierda" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "" +"Colocar la linea de entrada en el historial pero sin enviarla al servidor" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "" +"Ha ocurrido un error cargando la configuración de las combinaciones de teclas" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<ninguno>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Mod" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Tecla" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Acción" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: atajos de teclado" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Data 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Data 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Error al abrir el archivo de configuración de teclas\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Nombre de tecla desconocido %s en el archivo de configuración de " +"combinaciones de teclas\n" +"Carga abortada, por favor corrija %s/.xchat/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Acción desconocida %s en el archivo de configuración de combinaciones de " +"teclas\n" +"Carga abortada, por favor corrija %s/.xchat/keybindings\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Se esperaba una linea de datos (comenzando con Dx{:|!}) pero se obtuvo:\n" +"%s\n" +"\n" +"Carga abortada, por favor corrija %s/.xchat/keybindings\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"El archivo de configuración de las combinaciones de teclas está corrupto, " +"carga abortada\n" +"Por favor, corrija %s/.xchat/keybindings.conf\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "No se puede escribir hacia ese archivo." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "No se puede leer ese archivo." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Esa máscara ya existe." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Privado" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Noticia" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Invitar" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "No ignorar" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Introduzca la máscara que quiere ignorar:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: Lista de ignorados" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Estadísticas de ignorados:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Canal:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privado:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Noticia:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Invitar:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +#, fuzzy +msgid "Add..." +msgstr "Agregar" + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "Nombre de canal muy corto, intente de nuevo." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: Conexión completa" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "Conexión a %s completa." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"En la ventana de lista de servidores, no se ha ingresado un canal (chat " +"room) para unirse a él en esta red." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "¿Qué desea hacer después?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "_Nada, me uniré a un canal después." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "Entrar a este canal:" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Si conoce el nombre del canal al que se desea unir, escribalo aquí." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "Abrir la ventana de lista de canales." + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "Recuperando la lista de canales, puede tomar un minuto o dos." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "Siempre mostrar este diálogo después de la conexión." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Diálogo con" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Topic para %s es: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "No está definido ningun topic" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"Este servidor aún tiene %d canales o diálogos asociados con él. ¿Desea " +"cerrarlos todos?" + +#: src/fe-gtk/maingui.c:1283 +#, fuzzy +msgid "Quit XChat?" +msgstr "Acerca de XChat" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1310 +#, fuzzy, c-format +msgid "You are connected to %i IRC networks." +msgstr "Conectarse automáticamente al inicio" + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "" + +#: src/fe-gtk/maingui.c:1314 +#, fuzzy +msgid "Some file transfers are still active." +msgstr "" +"Algunas transferencias de archivos siguen activas, ¿desea salir de xchat?" + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Insertar atributo o código de color" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Negrita</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Subrayado</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Normal" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Colores 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Colores 8-15" + +#: src/fe-gtk/maingui.c:1612 +#, fuzzy +msgid "_Settings" +msgstr "C_onfiguración" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "Ocultar mensajes de entrar/marchar" + +#: src/fe-gtk/maingui.c:1625 +#, fuzzy +msgid "_Extra Alerts" +msgstr "Alertas" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "Pitar al llegar mensaje" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +#, fuzzy +msgid "_Detach" +msgstr "Separar solapa" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "_Cerrar" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "¡El límite de usuarios debe ser un número!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Protección del topic" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "No hay mensajes externos" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Secreto" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Sólo para invitados" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Moderado" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Lista de prohibidos" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Palabra clave" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Límite de usuarios" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Mostrar/Ocultar la lista de usuarios" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"¡Imposible establecer el fondo transparente!\n" +"\n" +"Puede estar usando un gestor de ventanas \n" +"que no está soportado actualmente.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Ingrese el apodo nuevo:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Equipo desconocido" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Nombre real:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Usuario:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "País:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Servidor:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "hace %u minutos" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Último mensaje:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Mensaje de ausencia:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"La barra de menú ahora está oculta. Puede mostrarla otra vez presionando F9 " +"o pulsando el botón derecho en una parte en blanco de área de texto " +"principal." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Abrir enlace en el navegador" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Copiar URL seleccionada" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Entrar al canal" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Invitar Canal" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Ciclar canal" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: Menú de usuario" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Editar este menú..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Recuperar lista de canales..." + +#: src/fe-gtk/menu.c:1348 +#, fuzzy +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Órdenes de usuario - Códigos especiales:\n" +"\n" +"%c = canal actual\n" +"%m = información de la máquina\n" +"%n = su apodo\n" +"%t = hora/fecha\n" +"%v = versión de xchat\n" +"%2 = palabra 2\n" +"%3 = palabra 3\n" +"&2 = palabra 2 hasta el fin de línea\n" +"&3 = palabra 3 hasta el fin de línea\n" +"\n" +"ejemplo:\n" +"/cmd john hello\n" +"\n" +"%2 podría ser \"john\"\n" +"&2 podría ser \"john hello\"." + +#: src/fe-gtk/menu.c:1364 +#, fuzzy +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Botones de la lista de usuarios - Códigos especiales:\n" +"\n" +"%a = todos los apodos seleccionados\n" +"%c = canal actual\n" +"%h = nombre del equipo del apodo seleccionado\n" +"%m = información de la maquina\n" +"%n = su apodo\n" +"%s = apodo seleccionado\n" +"%t = hora/fecha\n" + +#: src/fe-gtk/menu.c:1374 +#, fuzzy +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Botones del dialogo - Códigos especiales:\n" +"\n" +"%a = todos los apodos seleccionados\n" +"%c = canal actual\n" +"%h = nombre del equipo del apodo seleccionado\n" +"%m = información de la maquina\n" +"%n = su apodo\n" +"%s = apodo seleccionado\n" +"%t = hora/fecha\n" + +#: src/fe-gtk/menu.c:1384 +#, fuzzy +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"Respuestas CTCP -Códigos especiales:\n" +"\n" +"%d = datos (el ctcp completo)\n" +"%m = información de la máquina\n" +"%s = apodo de quien envió el ctcp\n" +"%t = hora/fecha\n" +"%2 = palabra 2\n" +"%3 = palabra 3\n" +"&2 = palabra 2 hasta el fin de linea\n" +"&3 = palabra 3 hasta el fin de linea\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"Manejadores de URL - Códigos especiales:\n" +"\n" +"%s = La cadena de la URL\n" +"\n" +"Poner un ! enfrente del comando indica \n" +"que debería ser enviado hacia un shell \n" +"en vez de hacia XChat" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: Órdenes definidas por el usuario" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: Menú emergente de la lista de usuarios" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Reemplazar con" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: Reemplazar" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: Manejadores de URL" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: Botones de la lista de usuarios" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: Botones de diálogo" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: Respuestas CTCP" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +#, fuzzy +msgid "Network Li_st..." +msgstr "Configuración de red" + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "_Nuevo" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Solapa de servidor..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Solapa de canal..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Ventana de servidor..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Ventana de canal..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "Cargar guión o complemento..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "_Salir" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "_Ver" + +#: src/fe-gtk/menu.c:1591 +#, fuzzy +msgid "_Menu Bar" +msgstr "Barra del menú" + +#: src/fe-gtk/menu.c:1592 +#, fuzzy +msgid "_Topic Bar" +msgstr "Barra del topic" + +#: src/fe-gtk/menu.c:1593 +#, fuzzy +msgid "_User List" +msgstr "Lista de usuarios" + +#: src/fe-gtk/menu.c:1594 +#, fuzzy +msgid "U_serlist Buttons" +msgstr "Botones de lista de usuarios" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "Botones del modo del canal" + +#: src/fe-gtk/menu.c:1597 +#, fuzzy +msgid "_Channel Switcher" +msgstr "Lista de canales..." + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "Solapas" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "Árbol" + +#: src/fe-gtk/menu.c:1602 +#, fuzzy +msgid "_Network Meters" +msgstr "Configuración de red" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Apagar" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Gráfico" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "_Servidor" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "_Desconectar" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "_Reconectar" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "Entrar al canal..." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "Entrar al canal..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Ausencia marcada" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "Menú de usuario" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "C_onfiguración" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "_Preferencias" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Avanzado" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Reemplazar automáticamente.." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "Respuestas CTCP..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Botones de diálogo..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Atajos de teclado..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Textos de eventos..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "Manejadores de URL..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Órdenes de usuario..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Botones de lista de usuarios..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Ventana de lista de usuarios..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_Ventana" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Lista de bans..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Lista de caracteres..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Charla directa..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Transferencias de archivos..." + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "Lista de bans..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Lista de ignorados..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Complementos y guiones..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Registro plano..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "Capturador de URL..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Reiniciar la línea de marcado" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "_Limpiar texto" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Buscar texto..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Guardar texto..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "A_yuda" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "_Contenidos" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "_Acerca de" + +#: src/fe-gtk/menu.c:2147 +#, fuzzy +msgid "_Attach" +msgstr "_Ventana adjunta" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Visto por última vez" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Desconectado" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Nunca" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, fuzzy, c-format +msgid "%d minutes ago" +msgstr "hace %u minutos" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Conectado" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Introduzica el apodo a añadir:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "XChat: Lista de archivos a enviar" + +#: src/fe-gtk/notifygui.c:434 +#, fuzzy +msgid "Open Dialog" +msgstr "Abrir la ventana de diálogo" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:591 +#, fuzzy +msgid "_Hide" +msgstr "Oculto" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +#, fuzzy +msgid "Channel Message" +msgstr "Nombre del canal" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +#, fuzzy +msgid "Private Message" +msgstr "Pitar en mensajes privados" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +#, fuzzy +msgid "Highlighted Message" +msgstr "Pitar en mensajes resaltados" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "Ausente" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Versión" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Descripción" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Seleccione una extensión o guión a cargar" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: complementos y guiones" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "_Cargar..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "_Desactivar" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Guardar como..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: Registro plano (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Limpiar registro plano" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "La ventana que ha abierto esta búsqueda no existe mas." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "Terminó la búsqueda, no se encontró." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: Buscar" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "Buscar" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Nueva red" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "¿Realmente desea eliminar la red \"%s\" y todos sus servidores?" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "canal" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: Lista de canales (%s)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "Contraseña:" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "_Editar" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "EL nombre y el nombre real no pueden estar en blanco." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: Editar %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Servidores para %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Conectar únicamente al servidor seleccionado" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "No recorrer todos los servidores cuando la conexión falle." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Sus datos" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Usar información global de usuario" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "Apodo:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Segunda opción:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "Nombre de _usuario:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "Nombre rea_l:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Conectando" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Conectarse automáticamente al inicio" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "Usar un servidor proxy" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "Usar SSL con todos los servidores de esta red" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Aceptar certificado inválido" + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "Abandonar canal:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "Canales a los que entrar, separados por comas, ¡no por espacios!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Orden de conexión:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Orden extra para ejecutar después de conectarse. Si necesita más de una, " +"póngala como «LOAD -e <nombrearchivo>», donde <nombrearchivo> es un archivo " +"de texto con ordenes a ejecutar." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Contraseña del «nickserv»:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Si su apodo requiere contraseña, ingrésela aquí. No todas las redes IRC " +"soportan esta característica." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Contraseña del servidor:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Contraseña para el servidor. En caso de duda, dejar en blanco." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Juego de caracteres:" + +#: src/fe-gtk/servlistgui.c:1649 +#, fuzzy +msgid "XChat: Network List" +msgstr "XChat: Lista de notificacines" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Información sobre usuario" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Tercera opción:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Redes" + +#: src/fe-gtk/servlistgui.c:1786 +#, fuzzy +msgid "Skip network list on startup" +msgstr "No mostrar lista de servidores al inicio" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "_Editar..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "Ordenar" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "C_onectar" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Apariencia" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Tipografía:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Imagen de fondo:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Líneas de desplazamiento:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Apodos coloreados" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Dar a cada persona en el IRC un color diferente" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Indentar apodos" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Justificar los apodos a la derecha." + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Fondo transparente" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Mostrar señalador" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Insertar una línea roja después del último texto leído" + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Configuración de trasparencia" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Rojo:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Verde:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Azul:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Marcas de fecha/hora" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Habilitar marcas de hora" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Formato de inserción de hora:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Vea la página del manual de strftime para obtener más detalles." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Caja de entrada" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Usar la tipografía y colores de la caja de texto" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Corrección ortográfica" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Completar apodo" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "Completar apodo automáticamente (sin TAB)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Sufijo al completar el apodo:" + +#: src/fe-gtk/setup.c:147 +#, fuzzy +msgid "Nick completion sorted:" +msgstr "Sufijo al completar el apodo:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Caja de entrada" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Interpretar %nnn como un valor ASCII" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Interpretar %C, %B como Color, Negrita etc" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, Operadores primero" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, Operadores últimos" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Desordenada" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Arriba" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Abajo" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Oculto" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Lista de usuarios" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Mostrar equipos en la lista de usuarios" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Lista de usuarios ordenada por:" + +#: src/fe-gtk/setup.c:205 +#, fuzzy +msgid "Show user list at:" +msgstr "Mostrar/Ocultar la lista de usuarios" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Razón de ausencia" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "" +"Seguir el estado de ausencia de usuarios y marcarlos en un color diferente" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "En canales más pequeños que:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Comportamiento del doble clic" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Ventanas" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Solapas" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Siempre" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Solo solapas solicitadas" + +#: src/fe-gtk/setup.c:242 +#, fuzzy +msgid "Tree" +msgstr "Árbol" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Abrir solapa extra para los mensajes del servidor" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Abrir solapa extra para las noticias del servidor" + +#: src/fe-gtk/setup.c:252 +#, fuzzy +msgid "Open a new tab when you receive a private message" +msgstr "Abrir solapa extra para los mensajes del servidor" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Ordenar solapas alfabéticamente" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "Solapas pequeñas" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Centrarse en nuevas solapas:" + +#: src/fe-gtk/setup.c:258 +#, fuzzy +msgid "Show channel switcher at:" +msgstr "En canales más pequeños que:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Reducir solapas a:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "letras." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Ventana del último registro" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Abrir canales en:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Abrir diálogos en:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Abrir utilidades en:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "¿Abrir DCC, Ignorar, Notificar etc en solapas o en ventanas?" + +#: src/fe-gtk/setup.c:271 +#, fuzzy +msgid "No" +msgstr "Ninguno" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Sí" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "Elegir carpeta destino cada vez" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Archivos y directorios" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Aceptar archivos automáticamente:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Descargar archivos en:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Mover archivos completados a:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Guardar el apodo en los nombres de archivos" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Configuración de red" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Obtener mi IP del servidor IRC" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Pregunta su dirección real al servidor IRC. ¡Úselo si tiene una dirección " +"del tipo 192.168.*.*!" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "Dirección IP DCC:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Pretender estar en esta dirección cuando esta ofreciendo archivos." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Primer puerto de envío DCC:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Último puerto de envío DCC:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!Dejar los puertos en cero para el rango completo." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Velocidad máxima de transferencia de archivos (B/s)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Una subida:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Velocidad máx. para una transferencia" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Una descarga" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Todas las subidas combinadas:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Velocidad máx. para todo el tráfico" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Todas las descargas combinadas:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Alertas" + +#: src/fe-gtk/setup.c:333 +#, fuzzy +msgid "Show tray balloons on:" +msgstr "Mostrar solapas:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "" + +#: src/fe-gtk/setup.c:341 +#, fuzzy +msgid "Highlighted Messages" +msgstr "Pitar en mensajes resaltados" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:344 +#, fuzzy +msgid "Extra words to highlight:" +msgstr "Palabras adicionales para resaltar:" + +#: src/fe-gtk/setup.c:345 +#, fuzzy +msgid "Nick names not to highlight:" +msgstr "Apodos que no resaltará:" + +#: src/fe-gtk/setup.c:346 +#, fuzzy +msgid "Nick names to always highlight:" +msgstr "Apodos que no resaltará:" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "separar palabras múltiples con comas." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Mensajes predeterminados:" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Salir:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Abandonar canal:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Ausente:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Ausente" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Anunciar mensajes de ausencia" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Anunciar sus mensajes ausencia a todos los canales" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Mostrar fuera de linea (away) sólo una vez" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Mostrar mensajes idénticos de ausencia sólo una vez" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Desmarcar ausencia automáticamente" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Desmarcarse como ausente antes de enviar mensajes" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Configuración avanzada" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Retraso de reconexión automática:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Mostrar los MODOs en forma plana" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Ejecutar Whois en las notificaciones" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" +"Envía un /WHOIS cuando un usuario de la lista de notificaciones se conecta" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Ocultar mensajes de entrar/marchar" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Ocultar mensajes de entrar/marcharse del canal por defecto" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Abrir las ventanas de diálogo automáticamente" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Ventana de envío" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Ventana de recepción" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Ventana de canal" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Registros" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "Habilitar el registro de conversaciones" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Nombre de archivo de registro:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "(%s=Servidor %c=Canal %n=Red)." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Insertar marcas de fecha/hora en los registros" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Formato de fecha/hora para el registro:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Deshabilitado)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Todas las conexiones" + +#: src/fe-gtk/setup.c:415 +#, fuzzy +msgid "IRC Server Only" +msgstr "Sólo para el servidor de IRC" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "Sólo para recepción por DCC" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Su dirección" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Asociar a:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "Sólo es útil para computadoras con direcciones múltiples." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Servidor proxy" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Nombre de equipo:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Puerto:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Tipo:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Usar un servidor proxy para:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Autenticación en el servidor proxy" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Usar autenticación (sólo HTTP, MS Proxy o Socks5)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Usar autenticación (solo HTTP o Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Nombre de usuario:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Contraseña:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Seleccione un archivo de imagen" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "Seleccionar carpeta de descargas" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Seleccionar tipografía" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Buscar..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Marcar usuarios identificados con:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Marcar usuarios no identificados con:" + +#: src/fe-gtk/setup.c:1161 +#, fuzzy +msgid "Open Data Folder" +msgstr "Abrir carpeta..." + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Seleccionar color" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Colores de texto" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "Colores de mIRC:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Colores locales:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Primer plano:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Fondo:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Texto marcado" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Colores de la interfaz" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Dato nuevo:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Línea de señalador:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Mensaje nuevo:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Usuario ausente:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Resaltar:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Evento" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Archivo de sonido:" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Seleccione un archivo de sonido" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Método de reproducción de sonido:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "Programa externo de _reproducción de sonido:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "_Programa externo" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_Automática" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "_Carpeta de archivos de sonido:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Archivo de sonido:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "_Explorar..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "_Reproducir" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Interfaz" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Caja de texto" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Lista de usuarios" + +#: src/fe-gtk/setup.c:1703 +#, fuzzy +msgid "Channel switcher" +msgstr "Lista de canales..." + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Colores" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Conversación" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "General" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Sonido" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Configuración de red" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Transferencias de archivos" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Categorías" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" +"Algunas opciones que han cambiado requieren un reinicio para tener efecto." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*ADVERTENCIA*\n" +"Aceptar automáticamente DCC hacia su directorio de inicio\n" +"puede ser peligroso y es explotable. Por ejemplo: Alguien \n" +"puede enviarle un archivo .bash_profile" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: Preferencias" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Ha ocurrido un error analizando la cadena" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Esta señal sólo ha pasado %d argumentos, $%d es inválido" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Imprimir archivos de textos" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Editar eventos" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ Número" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Cargar desde..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Probar todo" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: Capturador de URL" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Limpiar la lista" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Copiar URL seleccionada" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Copiar" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Guardar lista en un archivo." + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d ops, %d total" + +#~ msgid "%C18*$t$1%O $2" +#~ msgstr "%C18*$t$1%O $2" + +#~ msgid "%C21*%O$t%C21%B$1%O%C21 $2" +#~ msgstr "%C21*%O$t%C21%B$1%O%C21 $2" + +#~ msgid "%C18%H<%H$4$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$4$1%H>%H%O$t$2" + +#~ msgid "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" +#~ msgstr "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" + +#~ msgid "%C28-%C29$1/$2%C28-%O$t$3" +#~ msgstr "%C28-%C29$1/$2%C28-%O$t$3" + +#~ msgid "$1$t$2" +#~ msgstr "$1$t$2" + +#~ msgid "%C19>%O$1%C19<%O$t$2" +#~ msgstr "%C19>%O$1%C19<%O$t$2" + +#~ msgid "%C16*%O$t$1%O" +#~ msgstr "%C16*%O$t$1%O" + +#~ msgid "%C28-%C29$1%C28-%O$t$2" +#~ msgstr "%C28-%C29$1%C28-%O$t$2" + +#~ msgid "%C28*%C29$3$1%C28*$t%O$2" +#~ msgstr "%C28*%C29$3$1%C28*$t%O$2" + +#~ msgid "%C18%H<%H$3$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$3$1%H>%H%O$t$2" + +#~ msgid "%C22*%O$t$1" +#~ msgstr "%C22*%O$t$1" + +#~ msgid "%C31%H<%H$4$1%H>%H%O%C30$t$2" +#~ msgstr "%C31%H<%H$4$1%H>%H%O%C30$t$2" + +#~ msgid "PID" +#~ msgstr "PID" + +#~ msgid "US Minor Outlying Islands" +#~ msgstr "Islas Americanas Menores del Exterior" + +#~ msgid "Direct client-to-client" +#~ msgstr "Cliente a cliente directamente" + +#~ msgid "Send File" +#~ msgstr "Enviar archivo" + +#~ msgid "Offer Chat" +#~ msgstr "Ofrecer charla" + +#~ msgid "Abort Chat" +#~ msgstr "Abortar la charla" + +#~ msgid "Userinfo" +#~ msgstr "Información del usuario" + +#~ msgid "Clientinfo" +#~ msgstr "Información del cliente" + +#~ msgid "Time" +#~ msgstr "Tiempo" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "Operador" + +#~ msgid "Kill this user" +#~ msgstr "Eliminar a este usuario" + +#~ msgid "Mode" +#~ msgstr "Modo" + +#~ msgid "Give Half-Ops" +#~ msgstr "Dar Op" + +#~ msgid "Take Half-Ops" +#~ msgstr "Tomar Op" + +#~ msgid "Ignore" +#~ msgstr "Ignorar" + +#~ msgid "Ignore User" +#~ msgstr "Ignorar usuario" + +#~ msgid "UnIgnore User" +#~ msgstr "No ignorar usario" + +#~ msgid "Info" +#~ msgstr "Info" + +#~ msgid "Who" +#~ msgstr "Who" + +#~ msgid "DNS Lookup" +#~ msgstr "Búsqueda DNS" + +#~ msgid "Trace" +#~ msgstr "Rastrear" + +#~ msgid "UserHost" +#~ msgstr "Máquina del usuario" + +#~ msgid "External" +#~ msgstr "Programas externos" + +#~ msgid "Traceroute" +#~ msgstr "Rastrear ruta" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "Unban" +#~ msgstr "Eliminar veto" + +#~ msgid "I can't save an empty list!" +#~ msgstr "¡No se puede guardar una lista vacia!" + +#~ msgid "List display options:" +#~ msgstr "Opciones para mostrar la lista:" + +#~ msgid "Minimum Users:" +#~ msgstr "Usuarios mínimos:" + +#~ msgid "Maximum Users:" +#~ msgstr "Usuarios máximos:" + +#~ msgid "Regex Match:" +#~ msgstr "Coincidir con exp. regular:" + +#~ msgid "Apply Match to:" +#~ msgstr "Aplicar coincidencia a:" + +#~ msgid "Apply" +#~ msgstr "Aplicar" + +#~ msgid "Refresh the list" +#~ msgstr "Refrescar la lista" + +#~ msgid "Save the list" +#~ msgstr "Guardar la lista" + +#~ msgid "None" +#~ msgstr "Ninguno" + +#~ msgid "To" +#~ msgstr "Para" + +#, fuzzy +#~ msgid "Started" +#~ msgstr "Iniciado" + +#, fuzzy +#~ msgid "Speed limit" +#~ msgstr "Limite de velocidad" + +#~ msgid "XChat: File Receive List" +#~ msgstr "XChat: Lista de recepción de archivos" + +#~ msgid "Open" +#~ msgstr "Abrir" + +#~ msgid "Ack" +#~ msgstr "Aceptado" + +#~ msgid "To/From" +#~ msgstr "Para/De" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "No hay mas solapas abiertas, ¿salir de xchat?" + +#~ msgid "Show join/part messages" +#~ msgstr "Mostrar mensajes de entrada/salida del canal" + +#~ msgid "Color paste" +#~ msgstr "Pegar color" + +#~ msgid "Go to" +#~ msgstr "Ir a" + +#~ msgid "_Close Tab" +#~ msgstr "_Cerrar solapa" + +#~ msgid "_Layout" +#~ msgstr "_Disposición" + +#~ msgid "Notify List..." +#~ msgstr "Lista de notificaciones..." + +#~ msgid "_Close Window" +#~ msgstr "_Cerrar ventana" + +#~ msgid "User" +#~ msgstr "Usuario" + +#~ msgid "Server" +#~ msgstr "Servidor" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: Lista de notificacines" + +#~ msgid "C_hannels to join:" +#~ msgstr "Canales a los que unirse:" + +#~ msgid "Resizable user list" +#~ msgstr "Lista de usuarios redimensionable" + +#~ msgid "Left" +#~ msgstr "Izquierda" + +#~ msgid "Right" +#~ msgstr "Derecha" + +#~ msgid "Tabs Location" +#~ msgstr "Solapas colocadas en:" + +#~ msgid "(Can be a text file relative to ~/.xchat2/)." +#~ msgstr "(Puede ser un archivo de texto relativo a ~/.xchat2/)." + +#~ msgid "(Can be a text file relative to config dir)." +#~ msgstr "" +#~ "(Puede ser un archivo de texto relativo al directorio de configuración)." + +#~ msgid "Flash taskbar on highlighted messages" +#~ msgstr "Iluminar barra de tareas en mensajes resaltados" + +#~ msgid "Beep on channel messages" +#~ msgstr "Pitar en mensajes de canal" + +#~ msgid "Open an irc:// url" +#~ msgstr "Abrir una url irc://" + +#~ msgid "irc://server:port/channel" +#~ msgstr "irc://servidor:puerto/canal" + +#~ msgid "Execute a xchat command" +#~ msgstr "Ejecutar una orden de xchat" + +#~ msgid "\"Command to execute\"" +#~ msgstr "\"Orden a ejecutar\"" + +#~ msgid "Prints some text to the current tab/window" +#~ msgstr "Imprime textos en la ventana/solapa actual" + +#~ msgid "\"Text to print\"" +#~ msgstr "\"Texto a imprimir\"" + +#~ msgid "Change the context to the channel" +#~ msgstr "Cambiar el contexto al canal" + +#~ msgid "Change the context to the server" +#~ msgstr "Cambiar el contexto al servidor" + +#~ msgid "server" +#~ msgstr "servidor" + +#~ msgid "Get some informations from xchat" +#~ msgstr "Obtener información desde xchat" + +#~ msgid "id" +#~ msgstr "id" + +#~ msgid "Get settings from xchat" +#~ msgstr "Obtener configuraciones de xchat" + +#~ msgid "name" +#~ msgstr "nombre" + +#~ msgid "" +#~ "xchat-remote: %s\n" +#~ "Try `xchat-remote --help' for more information\n" +#~ msgstr "" +#~ "xchat-remote: %s\n" +#~ "Intente `xchat-remote --help' para más información\n" + +#~ msgid "Failed to complete SetContext" +#~ msgstr "Imposible completar SetContext" + +#~ msgid "Failed to complete print" +#~ msgstr "Imposible completar la impresión" + +#~ msgid "Failed to complete GetInfo" +#~ msgstr "Imposible completar GetInfo" + +#~ msgid "Failed to complete GetPrefs" +#~ msgstr "Imposible completar GetPrefs" + +#~ msgid "%s doesn't exist\n" +#~ msgstr "no existe %s\n" + +#~ msgid "%s loaded successfully!\n" +#~ msgstr "%s se cargó exitosamente\n" + +#~ msgid "Add" +#~ msgstr "Agregar" + +#~ msgid "Convert spaces to underscore before sending" +#~ msgstr "Convertir espacios a guiones bajos" + +#~ msgid "France, Metropolitan" +#~ msgstr "Francia Metropolitana" + +#~ msgid "Neutral Zone" +#~ msgstr "Zona Neutral" + +#~ msgid "From:" +#~ msgstr "De:" + +#~ msgid "To:" +#~ msgstr "Para:" + +#~ msgid "Size:" +#~ msgstr "Tamaño:" + +#~ msgid "MIME Type" +#~ msgstr "Tipo MIME" + +#~ msgid "Settings saved." +#~ msgstr "Configuraciones guardadas." + +#~ msgid "Save rawlog" +#~ msgstr "Guardar registro plano" + +#~ msgid "Save rawlog..." +#~ msgstr "Guardar registro plano..." + +#~ msgid "XChat: Server List" +#~ msgstr "XChat: Lista de servidores" + +#~ msgid "Completes nick names without using the TAB key" +#~ msgstr "Completar apodos sin usar el tabulador" + +#~ msgid "Input Box Appearance" +#~ msgstr "Apariencia" + +#~ msgid "(See strftime manpage for details)." +#~ msgstr "(Vea la página del manual de strftime para obtener mas detalles)." diff --git a/xchat-2.8.8/po/fi.gmo b/xchat-2.8.8/po/fi.gmo new file mode 100644 index 0000000000000000000000000000000000000000..a149ec76cd587d9a1e5c0ba76937fabd295d5676 GIT binary patch literal 95749 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 %8#k}w1ejV>1;;<z% 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%0DYgDkps1<<`NHIBWoV?T({?;#4J?S%OF2!V$IVdH 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�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%0AC$VuL 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 U7cTqn|NOrSE6hXKH&R>vAL;v}^#A|> literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/po/fi.po b/xchat-2.8.8/po/fi.po new file mode 100644 index 0000000..dc18367 --- /dev/null +++ b/xchat-2.8.8/po/fi.po @@ -0,0 +1,5698 @@ +# translation of xchat-2.8.4.po to finnish +# X-Chat Finnish translation. +# Copyright © 2001-2007 Gnome Finnish Translation Team. +# This file is distributed under the same license as the X-Chat package. +# +# Mika Laari <laari@iki.fi>, 2005-2007. +# Lauri Nurmi <lanurmi@iki.fi>, 2003-2004. +# Jarkko Ranta <jjranta@cc.joensuu.fi>, 2001-2002. +msgid "" +msgstr "" +"Project-Id-Version: xchat-2.8.4\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2007-06-27 20:53+0300\n" +"Last-Translator: Mika Laari <laari@iki.fi>\n" +"Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Hakemiston ~/.xchat2 luominen epäonnistui" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Olen kiireinen" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Lähdössä" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* IRCin ajaminen pääkäyttäjänä on typerää!\n" +" Luo tavallinen käyttäjätunnus ja kirjaudu sillä.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Odottaa" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Aktiivinen" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Epäonnistui" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Valmis" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Yhdistetty" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Keskeytetty" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "Tiedostoa %s ei voi käyttää\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Virhe" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s tarjoaa tiedostoa \"%s\". Hyväksytäänkö?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Ei aktiivisia DCC-yhteyksiä\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "JAA " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "EI " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "CTCP-tulva käyttäjältä %s, ei huomioida osoitetta %s\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "" +"Viestitulva käyttäjältä %s, poistetaan automaattinen keskustelunavaus " +"käytöstä.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-14s tavoitettavissa\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-14s tavoittamattomissa\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Millekään kanavalle ei ole liitytty. Kokeile /join #<kanava>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "" +"Mihinkään palvelimeen ei ole yhteyttä. Kokeile /server <isäntä> [<portti>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Merkitty jo poissaolevaksi: %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "Merkitty jo läsnäolevaksi.\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "Ajamiseen vaaditaan /bin/sh!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Käytettävissä olevat komennot:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Käyttäjän määrittelemät komennot:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Liitännäisten komennot:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Lisätietoja saat kirjoittamalla /HELP <komento> tai /HELP -l." + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Tuntematonta argumenttia \"%s\" ei huomioida." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "Liitännäistä ei löydy.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Liitännäinen ei suostu poistumaan käytöstä.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "" +"ADDBUTTON <nimi> <toiminto>, lisää painikkeen käyttäjäluettelon alapuolelle" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <komento>, lähettää komennon kaikille kanaville, joilla ollaan" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHANL <komento>, lähettää komennon kaikille kanaville, joilla olet." + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "" +"ALLSERV <komento>, lähettää komennon kaikille palvelimille, joilla ollaan" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<syy>], merkitsee poissaolevaksi" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "BACK, merkitsee läsnäolevaksi" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <peite> [<bannityyppi>], bannaa jokaisen peitteeseen täsmäävän käyttäjän " +"nykyiseltä kanavalta. Jos käyttäjät ovat jo kanavalla, tämä komento ei " +"potkaise heitä (vaatii opit)" + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <muuttuja> [<arvo>], asettaa muuttujan arvon." + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "" +"CLEAR [ALL|HISTORY], tyhjentää nykyisen teksti-ikkunan tai komentohistorian" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, sulkee nykyisen ikkunan/välilehden" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <koodi|jokeri>, etsii maakoodin, esim. au = Australia." + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <käyttäjä> <viesti>, lähettää CTCP-viestin käyttäjälle, yleiset viestit " +"ovat VERSION ja USERINFO" + +#: src/common/outbound.c:3516 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "CYCLE, poistuu nykyiseltä kanavalta ja palaa heti takaisin" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <kutsumanimi> - hyväksy tarjottu tiedosto\n" +"DCC SEND [-maxcps=#] <knimi> [tiedosto] - lähetä tiedosto jollekulle\n" +"DCC PSEND [-maxcps=#] <knimi> [tiedosto] - lähetä tiedosto " +"passiivitilaisena\n" +"DCC LIST - näytä DCC-luettelo\n" +"DCC CHAT <kutsumanimi> - ehdota DCC-keskustelua " +"jollekulle\n" +"DCC PCHAT <kutsumanimi> - ehdota DCC-keskustelua " +"passiivitilaisena\n" +"DCC CLOSE <tyyppi> <knimi> <tiedosto> - keskeytä DCC-siirto, " +"esimerkiksi:\n" +" /dcc close send jarkkoranta tiedosto.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <käyttäjä>, poistaa puoliopit käyttäjältä nykyisellä kanavalla (vaatii " +"opit)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <nimi>, poistaa painikkeen käyttäjäluettelon alta" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <käyttäjä>, poistaa opit käyttäjältä nykyisellä kanavalla (vaatii opit)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <käyttäjä>, poistaa puheoikeuden käyttäjältä nykyisellä kanavalla " +"(vaatii opit)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, Katkaisee yhteyden palvelimelle" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <käyttäjä|isäntä|ip>, etsii käyttäjän IP-osoitteen" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <teksti>, tulostaa tekstiä paikallisesti" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <komento>, ajaa komennon. Käytettäessä valitsinta -o tuloste " +"lähetetään nykyiselle kanavalle, muutoin nykyiseen ikkunaan" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, lähettää prosessille signaalin SIGCONT" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], tappaa nykyisestä istunnosta käynnistetyn ohjelman. " +"Käytettäessä valitsinta -9, prosessille lähetetään signaali SIGKILL" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, lähettää prosessille signaalin SIGSTOP" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, lähettää dataa prosessin vakiosyötteeseen" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, tyhjentää nykyisen palvelimen lähetysjonon" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" +"GATE <isäntä> [<portti>], käyttää isäntää välipalvelimena, oletusportti 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" +"GHOST <kutsumanimi> <salasana>, poistaa kummittelemaan jääneen kutsumanimen" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <käyttäjä>, antaa puoliopit käyttäjälle (vaatii opit)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <salasana>, tunnistautuu NickServ-palvelulle." + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <peite> <tyypit..> <valitsimet..>\n" +" peite - peite, jonka mukaan jätetään huomiotta, esim: *!*@*.aol.com\n" +" tyypit - viestityypit, jotka jätetään huomiotta, yksi tai useampi:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" valitsimet - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <käyttäjä> [<kanava>], kutsuu käyttäjän kanavalle, oletuksena " +"nykyiselle (vaatii opit)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <kanava>, liittyy kanavalle" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <käyttäjä>, potkaisee käyttäjän nykyiseltä kanavalta (vaatii opit)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <käyttäjä>, bannaa ja potkaisee käyttäjän nykyiseltä kanavalta " +"(vaatii opit)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, pakottaa uuden viivetarkistuksen" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <merkkijono>, etsii merkkijonoa puskurista" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <tiedosto>, lataa liitännäisen tai komentotiedoston." + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, poistaa opit kaikilta nykyisen kanavan puoliopeilta (vaatii opit)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, poistaa opit kaikilta nykyisen kanavan opeilta (vaatii opit)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <toiminta>, lähettää toiminnan nykyiselle kanavalle (toiminnat " +"kirjoitetaan kolmannessa persoonassa, kuten /me hyppää)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, potkaisee kaikki muut kanavalta (vaatii opit)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, antaa kanavaoperaattorin oikeudet kanavan kaikille käyttäjille (vaatii " +"opit)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <käyttäjä> <viesti>, lähettää yksityisviestin" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, luettelee nykyisellä kanavalla olevat käyttäjät" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <käyttäjä> <viesti>, lähettää CTCP-tiedotteen" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <isäntä> [<portti>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <kutsumanimi>, asettaa oman kutsumanimesi" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <käyttäjä/kanava> <viesti>, lähettää tiedotteen. Tiedotteet ovat " +"viestejä, joihin tulee reagoida automaattisesti" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n verkko1[,verkko2]] [<kutsumanimi>], näyttää ilmoitusluettelon tai " +"lisää siihen jonkun" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" +"OP <käyttäjä>, antaa kanavaoperaattorin oikeudet käyttäjälle (vaatii opit)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<kanava>] [<syy>], poistuu kanavalta, oletuksena nykyiseltä" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <käyttäjä | kanava>, CTCP-pingaa käyttäjää tai kanavaa" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "" +"QUERY [-nofocus] <käyttäjä>, avaa uuden ikkunan kahdenkeskistä keskustelua " +"varten" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<syy>], katkaisee yhteyden nykyiseen palvelimeen" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <teksti>, lähettää tekstin raa'assa muodossa palvelimelle" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<isäntä>] [<portti>] [<salasana>], voidaan kutsua /" +"RECONNECT nykyiseen palvelimeen uudelleen yhdistämiseksi, tai /RECONNECT ALL " +"kaikkiin avoimiin palvelimiin uudelleen yhdistämiseksi" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<isäntä>] [<portti>] [<salasana>], voidaan kutsua /RECONNECT " +"nykyiseen palvelimeen uudelleen yhdistämiseksi, tai /RECONNECT ALL kaikkiin " +"avoimiin palvelimiin uudelleen yhdistämiseksi" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <teksti>, lähetä raakaa dataa xchatille, aivan kuin se olisi " +"vastaanotettu irc-palvelimelta" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <teksti>, lähettää tekstin nykyisen ikkunan kanavalle/henkilölle" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <käyttäjä> [<tiedosto>], lähettää käyttäjälle tiedoston" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <isäntä> <portti> <kanava>, yhdistää ja liittyy kanavalle" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <isäntä> <portti> <kanava>, yhdistää ja liittyy kanavalle" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <isäntä> [<portti>] [<salasana>], yhdistää palvelimelle, " +"oletusportti on 6667 tavanomaisille yhteyksille, 9999 ssl-yhteyksille" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <isäntä> [<portti>] [<salasana>], yhdistää palvelimelle, oletusportti " +"on 6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <muuttuja> [<arvo>], asettaa muuttujan arvon." + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<paikka>, asettaa kursorin haluttuun paikkaan." + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<aihe>], asettaa aiheen, jos se annetaan, muutoin näyttää nykyisen " +"aiheen" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" +"\n" +"TRAY -f <aika> <tied1> [<tied2>] Vuorottelee kahta kuvaketta " +"ilmoitusalueella (välkyttää).\n" +"TRAY -f <tiedostonimi> Muuttumaton kuvake ilmoitusalueelle.\n" +"TRAY -i <numero> Välkyttää sisäänrakennettua kuvaketta.\n" +"TRAY -t <teksti> Asettaa ilmoitusalueen vihjetekstin.\n" +"TRAY -b <otsikko> <teksti> Asettaa ilmoitusalueen puhekuplan tekstin." + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <peite> [<peite>...], poistaa annettujen peitteiden bannin." + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <peite> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <nimi>, poistaa käytöstä liitännäisen tai skriptin" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, avaa URLin selaimeen" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <nimi1> <nimi2> jne., valitsee nimet kanavan " +"käyttäjäluettelosta" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <käyttäjä>, antaa puheoikeuden käyttäjälle (vaatii opit)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <viesti>, kirjoittaa viestin kaikille kanaville" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <viesti>, lähettää viestin kaikille nykyisen kanavan opeille" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Käyttö: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"Komennolle ei ole saatavissa ohjetta.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Komentoa ei ole.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Virheelliset argumentit käyttäjäkomennolle.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Liian monta rekursiivista käyttäjäkomentoa, keskeytetään." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Tuntematon komento. Kokeile komentoa /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "" +"Symbolia xchat_plugin_init ei ole; onko tämä todella xchat-liitännäinen?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Onko tämä varmasti SSL:ää tukeva palvelin ja portti?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Isäntänimen %s selvitys ei onnistu\n" +"Tarkista IP-asetukset!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Välipalvelimen kauttakulku epäonnistui.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Siirrytään seuraavalle %s-verkon palvelimelle...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Varoitus: merkistö \"%s\" on tuntematon. Verkossa %s ei käytetä mitään " +"muunnosta." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 lisättiin ilmoitusluetteloon." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Banniluettelo: %C19$4 %C20$2 %C21$3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tEi voi liittyä kanavalle %C26%B$1%O (sinut on bannattu)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t%C26$1%O tunnetaan nyt nimellä %C26$2%O." + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 asettaa bannin $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tKanava $1 luotu $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "" +"%C22*%O$t%C26$1%O poistaa puolioperaattorin oikeudet käyttäjältä %C26$2%O." + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "" +"%C22*%O$t%C26$1%O poistaa kanavaoperaattorin oikeudet käyttäjältä %C26$2%O." + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O poistaa puheoikeuden käyttäjältä %C26$2%O." + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 asettaa erivapauden $2." + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "" +"%C22*%O$t%C26$1%O antaa puolioperaattorin oikeudet käyttäjälle %C26$2%O." + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t%C26$1%O asettaa kutsun käyttäjälle %C26$2%O." + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UKanava Käyttäjät Aihe%O" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t%C26$1%O asettaa tilan $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Kanavan $1 tilat: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "" +"%C22*%O$t%C26$1%O antaa kanavaoperaattorin oikeudet käyttäjälle %C26$2%O." + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t%C26$1%O poistaa erivapauden $2." + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t%C26$1%O poistaa kutsun $2." + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t%C26$1%O poistaa kanavan tunnussanan." + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t%C26$1%O poistaa käyttäjärajan." + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t%C26$1%O asettaa kanavan tunnussanaksi %C26$2%O." + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t%C26$1%O asettaa kanavan käyttäjärajaksi $2." + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t%C26$1%O poistaa bannin $2." + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O antaa puheoikeuden käyttäjälle %C26$2%O." + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Yhdistetty. Kirjaudutaan sisään..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22Yhdistetään palvelimelle $1 ($2) porttiin $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21Yhdistäminen epäonnistui. Virhe: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tVastaanotettiin CTCP $1 käyttäjältä $2." + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tVastaanotettiin CTCP $1 käyttäjältä $2 (kanavalle $3)." + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tVastaanotettiin CTCP-ääni $1 käyttäjältä $2." + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tVastaanotettiin CTCP-ääni $1 käyttäjältä $2 (kanavalle $3)." + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tDCC-keskustelu käyttäjän %C26$1%O kanssa keskeytetty." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "" +"%C22*%O$tDCC-keskustelu avattu käyttäjän %C26$1%O kanssa. %C14[%O$2%C14]%O" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tDCC-keskustelu käyttäjän %C26$1%O kanssa katkesi. ($4.)" + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tKäyttäjä %C26$1%O ehdottaa DCC-keskustelua." + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tEhdotetaan DCC-keskustelua käyttäjälle %C26$1%O." + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tDCC-keskustelua on jo ehdotettu käyttäjälle %C26$1%O." + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$tDCC $1 -yhteyttä ei saatu käyttäjään %C26$2%O (virhe=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tVastaanotettiin \"$1%O\" käyttäjältä %C26$2%O." + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18Tyyppi Vastapää Tila Koko Paikka Tiedosto " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O.%010%C22*%O" +"$tContents of packet: $2" +msgstr "" +"%C22*%O$tKäyttäjä %C26$1%O lähetti epäkelvon DCC-pyynnön.%010%C22*%O" +"$tPaketin sisältö: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tTarjotaan tiedostoa %C26$1%O käyttäjälle %C26$2%O." + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tTuollaista DCC-lähetystä ei ole tarjottu." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV %C26$2%O käyttäjältä %C26$1%O keskeytetty." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC RECV %C26$1%O käyttäjältä %C26$3%O valmis %C30[%C26$4%O t/s%" +"C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "" +"%C22*%O$tDCC RECV -yhteys muodostettu käyttäjään %C26$1 %C30[%O$2%C30]%O." + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV %C26$1%O käyttäjältä %C26$3%O epäonnistui. ($4.)" + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV: Tiedostoon %C26$1%O ei voi kirjoittaa ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "" +"%C22*%O$tTiedosto %C26$1%O on jo olemassa, joten tallenetaan nimellä %C26$2%" +"O." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "" +"%C22*%O$t%C26$1%O pyytää jatkamaan tiedoston %C26$2%O siirtoa kohdasta %C26" +"$3%O." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC SEND %C26$2%O käyttäjälle %C26$1%O keskeytetty." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC SEND %C26$1%O käyttäjälle %C26$2%O valmis %C30[%C26$3%O t/s%" +"C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "" +"%C22*%O$tDCC SEND -yhteys muodostettu käyttäjään %C26$1 %C30[%O$2%C30]%O." + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND %C26$1%O käyttäjälle %C26$2%O epäonnistui. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1%O tarjoaa tiedostoa %C26$2%O (%C26$3%O tavua)." + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "" +"%C22*%O$tDCC $1 %C26$2%O käyttäjälle %C26$3%O pysähtynyt - keskeytetään." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "" +"%C22*%O$tDCC $1 %C26$2%O käyttäjälle %C26$3%O aikakatkaistu - keskeytetään." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 poistettu ilmoitusluettelosta." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tYhteys katkaistu ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tOma IP löytyi: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O lisätty huomioimattomuusluetteloon." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "Huomioimattomuutta %C26$1%O muutettu." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,28 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 Isännän peite PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O poistettu huomioimattomuusluettelosta." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " Huomioimattomuusluettelo on tyhjä." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "%C22*%O$tKanavalle %C26%B$1%O ei voi liittyä (vain kutsutuille)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$t%C26$2%O kutsuu sinut kanavalle %C26$1%O (%C26$3%O)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1%B ($3) liittyi kanavalle $2." + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$tKanavalle %C26%B$1%O ei voi liittyä (vaatii tunnussanan)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 potkaisi käyttäjän $2 kanavalta $3 ($4%O%C21)." + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$t$1 ($2%O) tappoi sinut." + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD ohitettu." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 on jo käytössä. Kokeillaan kutsumanimeä $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$tKutsumanimi on jo käytössä. Kokeile jotain muuta komennolla /NICK." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tTuollaista DCC:tä ei ole." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tProsesseja ei ole käynnissä." + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tIlmoitusluettelo on tyhjä." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Ilmoitusluettelo " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$tIlmoitusluettelossa on $1 käyttäjä(ä)." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tIlmoitus: $1 on tavoittamattomissa ($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tIlmoitus: $1 on tavoitettavissa ($3)." + +# Miksi koodit %O%C23 ovat peräkkäin? +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 ($2) poistui kanavalta $3." + +# %O%C23 kaiketi peruuttaa muuttujista tulleet (väri)koodit, mutta miksi %B%B? +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1%O%C23 ($2) poistui kanavalta $3%O%C23 (%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tPing-vastaus käyttäjältä $1: $2 sekunti(a)." + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tPingiin ei ole vastattu $1 sekuntiin, katkaistaan yhteys." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tProsessi on jo käynnissä." + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 lopetti ($2%O%C23)." + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 asettaa tilat %B%C30[%O$2%B%C30]." + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tEtsitään IP-osoitetta nimelle %C26$1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$tYhdistetty." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$tEtsitään osoitetta %C26$1%C..." + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tPysäytettiin edellinen yhteysyritys (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29Kanavan $1%C %C29aihe on: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 vaihtoi aiheeksi: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29Aiheen kanavalle $1%C %C29on asettanut $2%C %C29$3." + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tTuntematon isäntä. Onkohan se kirjoitettu väärin?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "" +"%C22*%O$tKanavalle %C26%B$1%O ei voi liittyä (Käyttäjäraja saavutettu)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Käyttäjät kanavalla $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2 %C27$3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28]%C on poissa %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28]%O WHOIS-luettelon loppu." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O jouten %C26$2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O jouten %C26$2%O, kirjautunut: %C26$3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" +"%C22*%O$t%C28[%O$1%C28]%O todellinen käyttäjä@isäntä %C27$2%O, todellinen IP " +"%C27$3." + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Puhut nyt kanavalla $2." + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$t$3 potkaisi sinut kanavalta $2 ($4%O%C23)." + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tPoistuit kanavalta $3." + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tPoistuit kanavalta $3%O%C23 ($4%O%C23)." + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tKutsut käyttäjää %C26$1%O kanavalle %C26$2%O (%C26$3%O)." + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tKutsumanimesi on nyt $2." + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "Loki luettiin tiedostosta" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** LOKIKIRJOITUS LOPPUU %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** LOKIKIRJOITUS ALKAA %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Lokitiedosto(j)a ei voi avata kirjoitusta varten.\n" +" Tarkista oikeudet hakemistossa %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Vasen viesti" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Oikea viesti" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "Liittyvän henkilön kutsumanimi" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "Kanava, jolle liitytään" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "Henkilön isäntänimi" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Kutsumanimi" + +#: src/common/text.c:973 +msgid "The action" +msgstr "Toiminto" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Tilamerkki" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Korostettava teksti" + +#: src/common/text.c:980 +msgid "The text" +msgstr "Teksti" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Viesti" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Vanha kutsumanimi" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Uusi kutsumanimi" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Aihetta muuttaneen henkilön kutsumanimi" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Aihe" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Kanava" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "Potkaisijan kutsumanimi" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "Potkaistava henkilö" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "Kanava" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "Syy" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "Poistuvan henkilön kutsumanimi" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "Aika" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "Luoja" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Kutsumanimi" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Syy" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Isäntä" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "Keneltä se on" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "Aika x.x-muodossa (katso alta)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "Kanava, jolle se on menossa" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "Ääni" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "Henkilön kutsumanimi" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "CTCP-tapahtuma" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "Tunnussanan asettaneen henkilön kutsumanimi" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "Tunnussana" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "Rajan asettaneen henkilön kutsumanimi" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "Raja" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "Opit antaneen henkilön kutsumanimi" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "Opit saaneen henkilön kutsumanimi" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "Puoliopit saaneen henkilön kutsumanimi" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "Puoliopit antaneen henkilön kutsumanimi" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "Puheoikeuden antaneen henkilön kutsumanimi" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "Puheoikeuden saaneen henkilön kutsumanimi" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "Bannin asettajan kutsumanimi" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "Bannipeite" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "Tunnussanan poistajan kutsumanimi" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "Rajan poistajan kutsumanimi" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "Opit poistaneen henkilön kutsumanimi" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "Opit menettäneen henkilön kutsumanimi" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "Puoliopit menettäneen henkilön kutsumanimi" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Puoliopit poistaneen henkilön kutsumanimi" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "Puheoikeuden poistaneen henkilön kutsumanimi" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "Puheoikeuden menettäneen henkilön kutsumanimi" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "Bannin poistaneen henkilön kutsumanimi" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "Erivapauden asettaneen henkilön kutsumanimi" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "Erivapauspeite" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "Erivapauden poistaneen henkilön kutsumanimi" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "Kutsun esittäneen henkilön kutsumanimi" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "Kutsupeite" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "Kutsun poistaneen henkilön kutsumanimi" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "Tilan asettaneen henkilön kutsumanimi" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "Tilan etumerkki (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "Tilakirjain" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "Kanava, jolle se asetetaan" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Käyttäjänimi" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Koko nimi" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Kanavan jäsenyys/\"on IRC-operaattori\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Palvelintiedot" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Joutenoloaika" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Kirjautumisaika" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Poissaolon syy" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Viesti" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Tunnus" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "Todellinen käyttäjä@isäntä" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "Todellinen IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Kanavanimi" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Teksti" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Palvelinnimi" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Sinut kutsuneen henkilön nimi" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Käyttäjiä" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Kutsumanimi on käytössä" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Kokeiltava kutsumanimi" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Portti" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Verkko" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Tilamerkkijono" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "IP-osoite" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "DCC-tyyppi" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Tiedostonimi" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Kohdetiedostonimi" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "t/s" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Polku" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Sijainti" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Koko" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "DCC-merkkijono" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Ilmoitusmerkintöjen määrä" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Vanha tiedostonimi" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Uusi tiedostonimi" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Vastaanottaja" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Isännän peite" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Isäntänimi" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "Paketti" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Sekuntia" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Kutsutun henkilön kutsumanimi" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Bannipeite" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Kuka asetti bannin" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Bannausaika" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Virhe tapahtuman %s jäsentämisessä.\n" +"Ladataan oletus" + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"Äänitiedostoa ei voi lukea:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "Vastapää sulki pistokkeen" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Yhteys torjuttu" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Ei reititystä isäntään" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Yhteys aikakatkaistu" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Osoitetta ei voi asettaa" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Vastapää katkaisi yhteyden" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Ascension Island" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Yhdistyneet Arabiemiraatit" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Afganistan" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Antigua ja Barbuda" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Albania" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Armenia" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Alankomaiden Antillit" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Etelämanner" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Argentiina" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "Käänteisnimipalvelu" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Amerikan Samoa" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Itävalta" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "NATO" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Australia" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Ahvenanmaa" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Azerbaidzan" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Bosnia ja Herzegovina" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Bangladesh" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Belgia" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Bulgaria" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Bahrain" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Liike-elämä" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Brunei" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Bolivia" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Brasilia" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Bahamasaaret" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Bhutan" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Bouvet'n saari" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Valko-Venäjä" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Kanada" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Kookossaaret" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "Kongon demokraattinen tasavalta" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "Keski-Afrikan tasavalta" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Kongo" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Sveitsi" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Norsunluurannikko" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Cooksaaret" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Chile" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Kamerun" + +#: src/common/util.c:898 +msgid "China" +msgstr "Kiina" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Kolumbia" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Kaupallinen" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Serbia ja Montenegro" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Kuuba" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Kap Verde" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Joulusaari" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Kypros" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "Tšekinmaa" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Saksa" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Djibouti" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Tanska" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Dominica" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "Dominikaaninen tasavalta" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Algeria" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Ecuador" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Koulutuksellinen laitos (Yhdysvallat)" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Viro" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Egypti" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Länsi-Sahara" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Espanja" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Etiopia" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Euroopan unioni" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Suomi" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Fidzi" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Falklandsaaret" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Mikronesia" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Färsaaret" + +#: src/common/util.c:928 +msgid "France" +msgstr "Ranska" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Iso-Britannia" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Georgia" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Ranskan Guyana" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Englannin kanaalin saaret" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Ghana" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Grönlanti" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Valtio (Yhdysvallat)" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Guadeloupe" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Päiväntasaajan Guinea" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Kreikka" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Etelä-Georgia ja Eteläiset Sandwichsaaret" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Guinea-Bissau" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Guyana" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Hongkong" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Heard ja McDonaldinsaaret" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Kroatia" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Unkari" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Indonesia" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Irlanti" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Israel" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Mansaari" + +#: src/common/util.c:959 +msgid "India" +msgstr "Intia" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Tiedotuksellinen" + +#: src/common/util.c:961 +msgid "International" +msgstr "Kansainvälinen" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Brittiläinen Intian valtameren alue" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Irak" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Iran" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Islanti" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Italia" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Jamaika" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Jordania" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Japani" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Kenia" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Kirgisia" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Kambodža" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Komorit" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "Saint Kitts ja Nevis" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Pohjois-Korea" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Etelä-Korea" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Kuwait" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Caymansaaret" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Kazakstan" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Libanon" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Saint Lucia" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Liberia" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Liettua" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Luxemburg" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Latvia" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Libya" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Marokko" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Monaco" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Moldova" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "Lääketieteellinen (Yhdysvallat)" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Madagaskar" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Marshallsaaret" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Sotilaallinen (Yhdysvallat)" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Makedonia" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Mongolia" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Macao" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Pohjois-Mariaanit" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Martinique" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Mauritania" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Mauritius" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Malediivit" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Meksiko" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Malesia" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Mosambik" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Namibia" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Uusi-Kaledonia" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Verkko" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Norfolkin saari" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Nigeria" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Alankomaat" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Norja" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Uusi-Seelanti" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Aatteellinen järjestö" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Ranskan Polynesia" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Papua-Uusi-Guinea" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Filippiinit" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Puola" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "Saint-Pierre ja Miquelon" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Puerto Rico" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Brittiläinen Intian valtameren alue" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Portugali" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Paraguay" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Qatar" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Réunion" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Romania" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "Vanha ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Venäjän Federaatio" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Ruanda" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Saudi-Arabia" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Salomosaaret" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Seychellit" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Sudan" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Ruotsi" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Singapore" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "Saint Helena" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Slovenia" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard- ja Jan Mayen -saaret" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Slovakia" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Somalia" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Surinam" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "Sao Tome ja Principe" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Entinen Neuvostoliitto" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Syyria" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Swasimaa" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Turks- ja Cairossaaret" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Tšad" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Ranskan eteläiset maa-alueet" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Thaimaa" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Tadzikistan" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Itä-Timor" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Tunisia" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Turkki" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Trinidad ja Tobago" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Tansania" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Ukraina" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Iso-Britannia" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "Yhdysvallat" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Uruguay" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Uzbekistan" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Vatikaanivaltio" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "Saint Vincent ja Grenadiinit" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Brittiläiset Neitsytsaaret" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "Neitsytsaaret" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Wallis ja Futuna" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Jemen" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Jugoslavia" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Etelä-Afrikka" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Sambia" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Tuntematon" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "Avaa keskusteluikkuna" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "Lähetä tiedosto" + +#: src/common/xchat.c:728 +#, fuzzy +msgid "_User Info (WhoIs)" +msgstr "Käyttäjätiedot (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +#, fuzzy +msgid "O_perator Actions" +msgstr "Opin toiminnot" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Anna opit" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Poista opit" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Anna puheoikeus" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Poista puheoikeus" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Potkaise/Bannaa" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Potkaise" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Bannaa" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "Potkaise ja bannaa" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Poistu kanavalta" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Liity kanavalle..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Anna liityttävän kanavan nimi:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Palvelinlinkit" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Pingaa palvelinta" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Piilota versionumero" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Oppaa" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "Opit pois" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "heihei" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Anna syy miksi %s potkaistaan:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Lähetä" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Keskustele" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "KukaOn" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Lähetä" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Keskustelu" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Tyhjennä" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "Istuntoväylään ei saatu yhteyttä" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "NameHasOwner-komennon suoritus epäonnistui" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "Komennon suoritus epäonnistui" + +# PNAME-makron sisältö (liitännäisen nimi) +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "etäkäyttö" + +# PDESC-makron sisältö (liitännäisen kuvaus) +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "Liitännäinen, joka mahdollistaa etäkäytön DBUS-yhteyden yli." + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Istuntoväylään ei saatu yhteyttä: %s\n" + +# Parametrit ovat dbus-palvelu (DBUS_SERVICE) +# ja virheilmoitus. +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Virhe palvelussa %s: %s\n" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "_Tietoja" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Usealla alustalla toimiva IRC-asiakasohjelma" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Merkistökartta" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "Palvelimeen ei ole yhteyttä." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Valitse vähintään yksi banni." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "Poistetaanko kaikki kanavan %s bannit?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Peite" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "Keneltä" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Päiväys" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Banniluettelon voi avata vain, kun jokin kanavaikkuna on valittuna." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: Banniluettelo (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Poista" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Poista muut" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Päivitä" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Näkyvillä on %d/%d käyttäjää %d/%d kanavalla." + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Valitse tulostiedoston nimi" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "Liity kanavalle" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "Kopioi kanavanimi" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "Kopioi kanavan aihepiiriteksti" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: Kanavaluettelo (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "Hae" + +# Radionappula +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "Lataa luettelo" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "Tallenna luettelo..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "Näytä vain:" + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "kanavat, joilla on" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "—" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "käyttäjää." + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "Käy läpi:" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "Kanavanimi" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "Hakutapa:" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "Yksinkertainen haku" + +# MSWin-versioon +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "Hakulauseke (jokerimerkit)" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "Säännöllinen lauseke" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Etsi:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Lähetä tiedosto käyttäjälle %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Tämän tiedoston siirtoa ei voi jatkaa." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"Tiedostoa ei voi käsitellä: %s\n" +"%s.\n" +"Jatkaminen ei ole mahdollista." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"Tiedosto latauskansiossa on suurempi kuin tarjottu tiedosto. Jatkaminen ei " +"ole mahdollista." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "Saman tiedoston siirtoa ei voi jatkaa kahdelta käyttäjältä." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: Tiedostonsiirrot" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Tila" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Tiedosto" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "Arvioitu aika" + +# Näkymää rajaava radionappula +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Molemmat" + +# Radionappula +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Lähetykset" + +# Radionappula +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "Lataukset" + +# Näyttää tiedoston koko polun omalla koneella +# ja siirtoon käytettävän IP-osoitteen ja portin. +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Lisätiedot" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Tiedosto:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "Osoite:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Keskeytä" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Hyväksy" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Jatka" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Avaa kansio..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: DCC-keskusteluluettelo" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Saapunut" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Lähetetty" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "Aloitusaika" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*UUSI*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "MUOKKAA TÄTÄ" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Nimi" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Komento" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Siirrä ylemmäs" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Siirrä alemmas" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Peru" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Tallenna" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Lisää uusi" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Poista" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Lajittele" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Ohje" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "ei ota yhteyttä palvelimiin" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "käyttää erityistä asetushakemistoa" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "ei lataa liitännäisiä" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "näyttää vakioliitännäisten hakemiston" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "näyttää käyttäjän asetushakemiston" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "avaa URLin (irc://palvelin:portti/kanava)" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Suorita komento:" + +#: src/fe-gtk/fe-gtk.c:132 +#, fuzzy +msgid "Open URL or execute command in an existing XChat" +msgstr "Avaa URL käynnissä olevaan XChattiin" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" +"Aloita pienennettynä. Taso: 0=tavallinen, 1=kuvakkeena, 2=ilmoitusalueella" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "taso" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "näyttää versiotiedot" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"Kirjasimen avaaminen ei onnistunut:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "Hakupuskuri on tyhjä.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d tavua" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Verkon lähetysjonossa on %d tavua." + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"Run Command -komento ajaa Data 1:n sisällön, kuin se olisi kirjoitettu " +"syötekenttään, jossa näppäinyhdistelmää painettiin. Se voi siis sisältää " +"tekstiä (joka lähetetään kanavalle/henkilölle), komentoja tai " +"käyttäjäkomentoja. Ajettaessa kaikki Data 1:n sisältämät \\n-merkit " +"tulkitaan komentojen erottimiksi; siten on mahdollista ajaa useampi komento. " +"Jos haluat \\-merkin varsinaiseen tekstiin, käytä merkintää \\\\" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"Change Page -komento siirtyy välilehdeltä toiselle. Aseta Data 1:n arvoksi " +"lehti, jolle halutaan siirtyä. Jos Data 2 on asetettu, siirtyminen on " +"suhteessa nykyiseen sijaintiin" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"Insert in Buffer -komento lisää Data 1:n sisällön syöteriville kohdistimen " +"kohdalle" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"Scroll Page -komento vierittää tekstikenttää (Data 1:n arvosta riippuen) " +"ylös tai alas yhden sivun (Up, Down) tai rivin (+1, -1) verran." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "Set Buffer -komento asettaa syöteriviksi Data 1:n sisällön" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"Last Command -komento asettaa syöteriviksi edellisen annetun komennon - " +"vastaa ylänuolen painamista kuoressa" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"Next Command -komento asettaa syöteriviksi seuraavan annetun komennon - " +"vastaa alanuolen painamista kuoressa" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Tämä komento täydentää syöterivillä osoittimen edellä olevan epätäydellisen " +"kutsumanimen tai komennon. Jos Data 1 on asetettu, kaksi kertaa painaminen " +"valitsee edellisen kutsumanimen, ei seuraavaa" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Tämä komento vierittää käyttäjäluetteloa ylös ja alas. Jos Data 1 on " +"asetettu, luetteloa vieritetään ylös, muutoin alas" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Tämä komento vertaa viimeistä annettua sanaa korvauslistaan ja muuttaa sen," +"jos löytyy täsmäävyys." + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Tämä komento siirtää päällimmäistä välilehteä yhden vasemmalle" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Tämä komento siirtää päällimmäistä välilehteä yhden oikealle" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Tämä komento siirtää nykyistä välilehtiötä vasemmalle" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Tämä komento siirtää nykyistä välilehtiötä oikealle" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "Lisää syöterivin historiaan, mutta ei lähetä palvelimelle" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "Virhe ladattaessa näppäinsidonta-asetuksia" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<ei mitään>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Määre" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Näppäin" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Toiminto" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: Pikanäppäimet" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Vaihto" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Data 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Data 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Virhe avattaessa näppäinasetustiedostoa\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Tuntematon näppäinnimi %s näppäinsidontojen asetustiedostossa\n" +"Lataus keskeytetty, korjaa tiedosto %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Tuntematon toiminto %s näppäinsidontojen asetustiedostossa\n" +"Lataus keskeytetty, korjaa tiedosto %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Odotettiin Datariviä (alku Dx{:|!}), mutta saatiin:\n" +"%s\n" +"\n" +"Lataus keskeytetty, korjaa tiedosto %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"Näppäinsidontojen asetustiedosto on turmeltunut, lataus keskeytetty\n" +"Korjaa tiedosto %s/keybindings.conf\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "Antamaasi tiedostoon ei voi kirjoittaa." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Antamaasi tiedostoa ei voi lukea." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Kyseinen peite on jo olemassa." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Yksityiset" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Tiedotteet" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Kutsut" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Huomioi toistaiseksi" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Anna peite huomiotta jätettäville:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: Huomioimattomuusluettelo" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Huomioimattomuustilastot:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Kavavia:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Yksityisiä:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Ilmoituksia:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Kutsuja:" + +# Tarkistettava +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "Lisää uusi..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "Kanavan nimi on liian lyhyt. Yritä uudestaan." + +# Sen ikkunan otsikko, joka ilmoittaa, että +# palvelimeen on saatu yhteys. +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: Yhteys muodostettu" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "Yhteys palvelimeen %s on valmis." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"Palvelinluetteloon ei ole tälle IRC-verkolle syötetty yhtään kanavaa, joille " +"tulisi liittyä automaattisesti." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "Mitä haluat tehdä?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "_En mitään, liityn kanaville itse." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "_Liittyä kanavalle:" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Jos tiedät mille kanavalle haluat liittyä, kirjoita sen nimi tähän." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "Avata kanava_luettelon:" + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "Kanavaluettelon kerääminen saattaa kestää parikin minuuttia." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "Näytä tämä valintaikkuna _aina, kun yhteys on muodostettu." + +# Keskusteluikkunan otsikko. Perään tulee +# keskustelukumppanin nimi ja palvelin. +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Keskustelijana" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Kanavan %s aihe on: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Kanavalla ei ole aihetta." + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"Palvelimelta on edelleen auki %d kanavaa tai keskustelua. Suljetaanko kaikki?" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "Lopetetaanko XChat?" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "Älä kysy jatkossa." + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Ollaan yhteydessä %i IRC-verkkoon." + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "Lopetetaanko varmasti?" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "Tiedostonsiirtoja on vielä käynnissä." + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "Pienennä ilmoitusalueelle" + +# syöttökentän tilannevalikko +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Lisää määre tai värikoodi" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Lihavoitu</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Alleviivattu</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Tavallinen" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Värit 0–7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Värit 8–15" + +#: src/fe-gtk/maingui.c:1612 +#, fuzzy +msgid "_Settings" +msgstr "A_setukset" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "Piilota liittymis- ja poistumisviestit" + +#: src/fe-gtk/maingui.c:1625 +#, fuzzy +msgid "_Extra Alerts" +msgstr "Hälytykset" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "Anna äänimerkki viestin saapuessa" + +#: src/fe-gtk/maingui.c:1628 +#, fuzzy +msgid "Blink Tray _Icon" +msgstr "Välkytä ilmoitusalueella, kun tulee:" + +#: src/fe-gtk/maingui.c:1629 +#, fuzzy +msgid "Blink Task _Bar" +msgstr "Välkytä tehtäväpalkkia, kun tulee:" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +#, fuzzy +msgid "_Detach" +msgstr "_Irrota välilehti" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "_Sulje" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "Käyttäjärajan tulee olla numero!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Aiheensuojaus" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Ei ulkopuolisia viestejä" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Salainen" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Vain kutsutuille" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Moderoitu" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Banniluettelo" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Tunnussana" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Käyttäjäraja" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Näytä/piilota käyttäjäluettelo" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"Taustaa ei voi asettaa läpikuultavaksi!\n" +"\n" +"Ikkunointiohjelma on ehkä epäyhteensopiva,\n" +"eikä sitä tällä hetkellä tueta.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Anna uusi kutsumanimi:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Tuntematon isäntä" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Oikea nimi:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Käyttäjä:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "Maa:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Palvelin:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "%u minuuttia sitten" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Puhunut kanavalla:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Poissaoloviesti:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"Valikkopalkki on nyt piilossa. Sen saa taas esiin painamalla Ctrl-F9:ää tai " +"hiiren oikeaa painiketta tekstialueen tyhjässä kohdassa." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Avaa linkki selaimeen" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Kopioi valittu linkki" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Liity kanavalle" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Poistu kanavalta" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Liity kanavalle uudelleen" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: Käyttäjän valikko" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Muokkaa tätä valikkoa..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Valitse kanavaluettelosta..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Käyttäjän komennot - Erikoiskoodit:\n" +"\n" +"%c = nykyinen kanava\n" +"%e = nykyinen verkko\n" +"%m = koneen tiedot\n" +"%n = oma kutsumanimi\n" +"%t = aika/päiväys\n" +"%v = xchat-versio\n" +"%2 = 2. sana\n" +"%3 = 3. sana\n" +"&2 = 2. sanasta rivin loppuun\n" +"&3 = 3. sanasta rivin loppuun\n" +"\n" +"esim:\n" +"/cmd jarkko terve\n" +"\n" +"%2 olisi \"jarkko\"\n" +"&2 olisi \"jarkko terve\"." + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Käyttäjälistapainikkeet - Erikoiskoodit:\n" +"\n" +"%a = kaikki valitut kutsumanimet\n" +"%e = nykyinen verkko\n" +"%c = nykyinen kanava\n" +"%h = valitun käyttäjän isäntänimi\n" +"%m = koneen tiedot\n" +"%n = oma kutsumanimi\n" +"%s = valittu kutsumanimi\n" +"%t = aika/päiväys\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Keskustelupainikkeet - Erikoiskoodit:\n" +"\n" +"%a = kaikki valitut kutsumanimet\n" +"%c = nykyinen kanava\n" +"%e = nykyinen verkko\n" +"%h = valitun käyttäjän isäntänimi\n" +"%m = koneen tiedot\n" +"%n = oma kutsumanimi\n" +"%s = valittu kutsumanimi\n" +"%t = aika/päiväys\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"CTCP-vastaukset - Erikoiskoodit:\n" +"\n" +"%d = data (koko ctcp)\n" +"%e = nykyinen verkko\n" +"%m = koneen tiedot\n" +"%s = ctcp:n lähettäjän kutsumanimi\n" +"%t = aika/päiväys\n" +"%2 = 2. sana\n" +"%3 = 3. sana\n" +"&2 = 2. sanasta rivin loppuun\n" +"&3 = 3. sanasta rivin loppuun\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"URL-käsittelimet - Erikoiskoodit:\n" +"\n" +"%s = URL-merkkijono\n" +"\n" +"Huutomerkki (!) komennon edessä ilmaisee,\n" +"että komento lähetetään XChatin sijaan\n" +"kuorelle." + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: Käyttäjän määrittelemät komennot" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: Käyttäjäluettelon ponnahdusvalikko" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Korvaava teksti" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: Korvaaminen" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: URL-käsittelimet" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: Käyttäjäluettelon painikkeet" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: Keskusteluikkunan painikkeet" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: CTCP-vastaukset" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "Verkkoluettelo..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "Uusi" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Palvelinvälilehti..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Kanavavälilehti..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Palvelinikkuna..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Kanavaikkuna..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "Lataa skripti tai liitännäinen..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "Lopeta" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "Näytä" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "Valikkopalkki" + +#: src/fe-gtk/menu.c:1592 +msgid "_Topic Bar" +msgstr "Aihepalkki" + +#: src/fe-gtk/menu.c:1593 +msgid "_User List" +msgstr "Käyttäjäluettelo" + +#: src/fe-gtk/menu.c:1594 +msgid "U_serlist Buttons" +msgstr "Käyttäjäluettelon painikkeet" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "Tilapainikkeet" + +#: src/fe-gtk/menu.c:1597 +msgid "_Channel Switcher" +msgstr "Kanavavalitsin" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "Välilehtinä" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "Puuna" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "Verkkomittarit" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Poissa" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Graafinen" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "_Palvelin" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "Katkaise yhteys" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "Yhdistä uudelleen" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "Liity kanavalle..." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "Liity kanavalle..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Merkitty poissaolevaksi" + +# Missäköhän tämä näkyy? +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "Käyttäjävalikko" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "A_setukset" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "Ominaisuudet" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Lisäasetukset" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Automaattikorvaukset..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "CTCP-vastaukset..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Keskusteluikkunan painikkeet..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Pikanäppäimet..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Tapahtumatekstit..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "URL-käsittelimet..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Käyttäjän komennot..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Käyttäjäluettelon painikkeet..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Käyttäjäluettelon pikavalikko..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_Ikkuna" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Banniluettelo..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Merkistökartta..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "DCC-keskustelu..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Tiedostonsiirrot..." + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "Banniluettelo..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Huomioimattomuusluettelo..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Skriptit ja liitännäiset..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Raakaloki..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "URL-kaappaaja..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Siirrä lukumerkki loppuun" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "P_yyhi teksti" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Hae tekstistä..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Tallenna teksti..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_Ohje" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "_Sisältö" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "_Tietoja" + +#: src/fe-gtk/menu.c:2147 +#, fuzzy +msgid "_Attach" +msgstr "Kiinnitä ikkuna" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Nähty viimeksi" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Tavoittamattomissa" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Ei koskaan" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "%d minuuttia sitten" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Tavoitettavissa" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Anna lisättävä kutsumanimi:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "Ilmoita seuraavissa verkoissa:" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "Pilkuilla eroteltu luettelo IRC-verkkoja." + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "XChat: Huomioimattomuusluettelo" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "Aloita keskustelu" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" +"Komentoa 'notify-send' ei löydy, joten puhekuplia ei voida näyttää.\n" +"Tilanteen korjaamiseksi pitää asentaa libnotify." + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "XChat: Yhteydessä %u verkkoon ja %u kanavaan" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "Palauta" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "Piilota" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "Välkytä kun tulee" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "Kanavaviesti" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "Yksityisviesti" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "Korostettu viesti" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "Poissaolo" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat: Korostettu viesti käyttäjältä %s (%s)" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat: %u korostettua viestiä, viimeksi käyttäjältä %s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat: Uusi julkinen viesti käyttäjältä: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat: %u uutta julkista viestiä." + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat: Yksityisviesti käyttäjältä %s (%s)" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "XChat: %u yksityisviestiä, viimeksi käyttäjältä %s (%s)" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat: Käyttäjä %s tarjoaa tiedostoa (%s)" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "XChat: %u tiedostoa tarjottu, vimeksi käyttäjältä %s (%s)" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Versio" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Kuvaus" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Valitse ladattava skripti tai liitännäinen" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: Skriptit ja liitännäiset" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "_Lataa..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "_Poista käytöstä" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Tallenna..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: Raakaloki (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Tyhjennä raakaloki" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "Tätä hakua varten avaamaasi ikkunaa ei enää ole." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "Hakutekstiä ei löytynyt" + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: Haku" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "Huomioi kirjainten koko" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "Etsi taaksepäin" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "Etsi" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Uusi verkko" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Haluatko todella poistaa verkon \"%s\" ja kaikki sen palvelimet?" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "Kanava" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: Kanavaluettelo (%s)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "Salasana:" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "_Muokkaa" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "Käyttäjätunnusta ja oikeaa nimeä ei voi jättää tyhjiksi." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: Muokkaa %s-verkkoa" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "%s-verkon palvelimet" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Yhdistä vain valittuun palvelimeen" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "" +"Älä yritä yhdistää muihin palvelimiin, jos valittuun palvelimeen ei saada " +"yhteyttä." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Käyttäjätiedot" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Käytä yleisiä käyttäjätietoja" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "Kutsumanimi:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "2. vaihtoehto:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "Käyttäjätunnus:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "Oikea nimi:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Yhteyden muodostus" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Yhdistä valmiiksi, kun X-Chat käynnistyy" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "Käytä välipalvelinta" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "Käytä SSL-yhteyttä tässä verkossa" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Hyväksy epäkelpo varmenne" + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "Kanavalta poistuminen:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "" +"Näille kanaville liitytään automaattisesti. Erota kanavat toisistaan pilkuin " +"(mutta ei välilyönnein!)." + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Yhdistämiskomento:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Lisäkomento, joka suoritetaan yhteyden muodostuttua. Useita komentoja voi " +"suorittaa laittamalla ne tiedostoon, ja kirjoittamalla tähän \"LOAD -e " +"<tiedostonimi>\"." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Kutsumanimen salasana:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Jos kutsumanimesi on suojattu NickServ-palvelun salasanalla, kirjoita se " +"tähän. Huomaa että kaikki IRC-verkot eivät tue salasanasuojausta." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Palvelimen salasana:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Palvelimelle tarvittava salasana. Jätä tyhjäksi, jos olet epävarma." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Merkistö:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: Verkkoluettelo" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Käyttäjätiedot" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "3. vaihtoehto:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "IRC-verkot" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "Aloita ilman verkkoluetteloa" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "_Muokkaa..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "Lajittele" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" +"Lajittelee verkkoluettelon aakkosjärjestykseen. Riviä voi siirtää " +"näppäilemällä SHIFT-YLÖS ja SHIFT-ALAS." + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "_Yhdistä" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Tekstilaatikon ulkonäkö" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Kirjasin:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Taustakuva:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Vieritettäviä rivejä:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Väritä kutsumanimet" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Anna kullekin käyttäjälle oma väri." + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Sisennä kutsumanimet" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Tasaa kutsumanimet oikealle." + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Läpikuultava tausta" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Näytä lukumerkki" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Erottaa luetun ja lukemattoman tekstin punaisella viivalla." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Läpikuultavuuden säätö" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Punainen:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Vihreä:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Sininen:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Aikaleimat" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Näytä aikaleimat" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Aikaleiman muoto:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Katso yksityiskohtaiset ohjeet manuaalisivulta strftime(3)." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "Puhumisajankohdan mukaan" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Syötekenttä" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Käytä tekstilaatikon kirjasinta ja värejä" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Oikoluku" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Kutsumanimien täydennys" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "Automaattinen kutsumanimien täydennys (ilman tabulaattoria)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Täydennyksen jälkiliite:" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "Kutsumanimitäydennys aakkosjärjestyksessä:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Syötekentän koodit" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Tulkitse %nnn ASCII-arvoksi" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Tulkitse %C väriksi, %B lihavoinniksi, jne" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, opit ensimmäisinä" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, opit viimeisinä" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Lajittelematon" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "Vasemmalla (ylhäällä)" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "Vasemmalla (alhaalla)" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "Oikealla (ylhäällä)" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "Oikealla (alhaalla)" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Ylhäällä" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Alhaalla" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Piilotettu" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Käyttäjäluettelo" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Näytä isäntänimet käyttäjäluettelossa" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Lajittelutapa:" + +#: src/fe-gtk/setup.c:205 +msgid "Show user list at:" +msgstr "Näytä käyttäjäluettelo:" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Poissaolojen seuranta" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "Seuraa poissaoloja ja näytä poissaolevat käyttäjät eri värillä," + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "kun kanavalla on käyttäjiä alle:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Kaksoisnapsautuksen toiminto" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Ikkunat" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Välilehdet" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Aina" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Vain itse avatut" + +#: src/fe-gtk/setup.c:242 +#, fuzzy +msgid "Tree" +msgstr "Puuna" + +#: src/fe-gtk/setup.c:249 +#, fuzzy +msgid "Switcher type:" +msgstr "Hakutapa:" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Palvelinviestit omaan välilehteensä" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Palvelintiedotteet omaan välilehteensä" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "Avaa uusi välilehti yksityisviestin saapuessa" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Välilehdet aakkosjärjestykseen" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "Pienet korvakkeet" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Uudet välilehdet etualalle:" + +#: src/fe-gtk/setup.c:258 +msgid "Show channel switcher at:" +msgstr "Näytä kanavavalitsin:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Typistä välilehtien nimet:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "merkin pituisiksi." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Välilehti vai ikkuna" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Kanavien avaamispaikka:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Keskusteluiden avaamispaikka:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Apuvälineiden avaamispaikka:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "DCC:t, huomioimattomuudet, ilmoitukset jne." + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "Ei" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Kyllä" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "Valitse tallennushakemisto joka kerta" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Tiedostot ja hakemistot" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Hyväksy tarjotut tiedostot automaattisesti:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Lataa hakemistoon:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Siirrä valmiit tiedostot hakemistoon:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Liitä lähettäjän kutsumanimi tiedostonimiin" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Verkkoasetukset" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Hae IP-osoite IRC-palvelimelta" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Tiedustelee osoittettasi IRC-palvelimelta. Rastita, mikäli osoitteesi on " +"esimerkiksi muotoa 192.168.*.*!" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "DCC:n IP-osoite:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Tiedostoja väitetään lähetettävän tästä osoitteesta." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Ensimmäinen DCC-lähetysportti" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Viimeinen DCC-lähetysportti" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "Jätä nolliksi, jos haluat käyttöön kaikki portit." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Siirtonopeuksien ylärajat (tavua sekunnissa)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Yksittäinen lähetys:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Yksittäisen siirron suurin sallittu nopeus." + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Yksittäinen lataus:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Kaikki lähetykset yhteensä:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Yhteenlaskettujen siirtojen suurin sallittu nopeus." + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Kaikki lataukset yhteensä:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Hälytykset" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "Näytä puhekupla, kun tulee:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "Välkytä ilmoitusalueella, kun tulee:" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "Välkytä tehtäväpalkkia, kun tulee:" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "Piipauta, kun tulee:" + +# Pilkku lopussa, koska lause jatkuu seuraavaan asetuskohtaan. +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "Ota ilmoitusalueen kuvake käyttöön" + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "Korostettu viesti" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Viesti korostetaan, kun siinä mainitaan kutsumanimesi tai:" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "Muut korostettavat sanat:" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "Älä korosta viestejä käyttäjiltä:" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "Korosta aina viestit käyttäjiltä:" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Erota sanat toisistaan pilkuilla." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Oletusilmoitukset" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Lopetus:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Kanavalta poistuminen:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Poissaolo:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Poissaolo" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Kuuluta poissaoloviestit" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Lähettää poissaoloviestit kaikille kanaville." + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Näytä poissaoloviestit kerran" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Näyttää identtiset poissaoloviestit vain kerran." + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Lopeta oma poissaolo automaattisesti" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Merkitsee sinut läsnäolevaksi ennen viestien lähettämistä." + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Lisäasetukset" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Automaattisen yhdistämisen viive:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Näytä tilat raakamuodossa" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Suorita whois ilmoituksen yhteydessä" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" +"Lähettää /WHOIS-komennon, kun ilmoitusluettelossa oleva käyttäjä on " +"tavoitettavissa" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Piilota liittymis- ja poistumisviestit" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Piilota liittymis- ja poistumisviestit oletuksena" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Avaa DCC-ikkunat automaattisesti" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Lähetysikkuna" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Vastaanottoikkuna" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Kanavaikkuna" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Lokiasetukset" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "Pidä keskusteluista lokia" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Lokitiedoston nimi:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=palvelin %c=kanava %n=verkko." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Lisää lokeihin aikaleimat" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Lokitiedoston aikaleiman muoto:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Pois käytöstä)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Kaikille yhteyksille" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "Vain IRC-palvelimille" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "Vain DCC-siirroille" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Oma IP-osoite" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Sido osoitteeseen:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "Käyttökelpoinen vain, kun tietokoneessa on monta osoitetta." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Välipalvelin" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Isäntänimi:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Portti:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Tyyppi:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Käytä välipalvelinta:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Välipalvelimelle tunnistautuminen" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Tunnistaudu välipalvelimelle (vain MS Proxy, HTTP ja Socks5)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Tunnistaudu välipalvelimelle (vain HTTP ja Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Käyttäjänimi:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Salasana:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Valitse kuvatiedosto" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "Valitse latauskansio" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Valitse kirjasin" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Selaa..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Merkitse tunnistetut käyttäjät seuraavasti:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Merkitse tuntemattomat käyttäjät seuraavasti:" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "Avaa datakansio" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Valitse väri" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Tekstin värit" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "mIRC-värit:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Omat värit" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Edustaväri:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Taustaväri:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Tekstin maalaus" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Käyttöliittymän värit" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Uusi data:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Lukumerkkiviiva:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Uusi viesti:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Poissaolijat:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Korostus:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Tapahtuma" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Äänitiedosto" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Valitse äänitiedosto" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Äänensoittotapa:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "Ulkoinen soitto-ohjelma:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "Ulkoisella ohjelmalla" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "Automaattinen" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "Äänitiedostojen hakemisto:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Äänitiedosto: " + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "Selaa..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "Soita" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Käyttöliittymä" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Tekstilaatikko" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Käyttäjäluettelo" + +#: src/fe-gtk/setup.c:1703 +msgid "Channel switcher" +msgstr "Kanavavalitsin" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Värit" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Keskustelu" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Yleiset" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Ääni" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Verkkoasetukset" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Tiedostonsiirrot" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Asetusryhmät" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" +"Puuta ei voi laittaa ylös eikä alas!\n" +"Muuta ensin välilehtiasettelua <b>Näytä</b>-valikosta." + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" +"Osa muutoksista tulee voimaan vasta kun ohjelma käynnistetään uudestaan." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*VAROITUS*\n" +"DCC-siirtojen automaattinen hyväksyminen\n" +"kotihakemistoon voi olla vaarallista. Esim:\n" +"Joku voi lähettää tiedoston .bash_profile." + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: Ominaisuudet" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Virhe jäsennettäessä merkkijonoa" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Tälle signaalille annetaan vain %d argumenttia, $%d on virheellinen" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Tallenna tekstitiedosto" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Muokkaa tapahtumatekstejä" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ Numero" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Lataa..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Kokeile kaikki" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: URL-kaappaaja" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Tyhjennä luettelo" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Kopioi valittu URL" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Kopioi" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Tallenna luettelo tiedostoon" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d oppia, %d yhteensä" + +#~ msgid "" +#~ "Set per channel options\n" +#~ "CHANOPT CONFMODE ON|OFF - Toggle conf mode/showing of join and part " +#~ "messages\n" +#~ "CHANOPT COLORPASTE ON|OFF - Toggle color paste\n" +#~ "CHANOPT BEEP ON|OFF - Toggle beep on message\n" +#~ "CHANOPT TRAY ON|OFF - Toggle tray blink on message" +#~ msgstr "" +#~ "Kanavakohtaiset asetukset\n" +#~ "CHANOPT CONFMODE ON|OFF - Liittymis- ja poistumisviestit päälle tai pois\n" +#~ "CHANOPT COLORPASTE ON|OFF - Värien kanssa liittäminen päälle tai pois\n" +#~ "CHANOPT BEEP ON|OFF - Piippaus viestien saapuessa päälle tai pois\n" +#~ "CHANOPT TRAY ON|OFF - Ilmoitusalueella välkytys päälle tai pois" + +#~ msgid "Direct client-to-client" +#~ msgstr "Suora vertaisyhteys" + +#~ msgid "Send File" +#~ msgstr "Lähetä tiedosto" + +#~ msgid "Offer Chat" +#~ msgstr "Ehdota keskustelua" + +#~ msgid "Abort Chat" +#~ msgstr "Keskeytä keskustelu" + +#~ msgid "Userinfo" +#~ msgstr "Käyttäjätiedot" + +#~ msgid "Clientinfo" +#~ msgstr "Asiakasohjelmatiedot" + +#~ msgid "Time" +#~ msgstr "Aika" + +#~ msgid "Finger" +#~ msgstr "Tunnustelu" + +#~ msgid "Oper" +#~ msgstr "Operaattori" + +#~ msgid "Kill this user" +#~ msgstr "Tapa tämä käyttäjä" + +#~ msgid "Mode" +#~ msgstr "Tila" + +#~ msgid "Give Half-Ops" +#~ msgstr "Anna puoliopit" + +#~ msgid "Take Half-Ops" +#~ msgstr "Poista puoliopit" + +#~ msgid "Ignore" +#~ msgstr "Jätä huomiotta" + +#~ msgid "Ignore User" +#~ msgstr "Jätä käyttäjä huomiotta" + +#~ msgid "UnIgnore User" +#~ msgstr "Huomioi käyttäjä jälleen" + +#~ msgid "Info" +#~ msgstr "Tiedot" + +#~ msgid "Who" +#~ msgstr "Kuka" + +#~ msgid "DNS Lookup" +#~ msgstr "DNS-haku" + +#~ msgid "Trace" +#~ msgstr "Jäljitä" + +#~ msgid "UserHost" +#~ msgstr "KäyttäjäIsäntä" + +#~ msgid "External" +#~ msgstr "Ulkoiset" + +#~ msgid "Traceroute" +#~ msgstr "Traceroute" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "About XChat" +#~ msgstr "Tietoja XChatista" + +#~ msgid "Unban" +#~ msgstr "Poista banni" + +#~ msgid "Blink tray on message" +#~ msgstr "Välkytä ilmoitusalueella viestin saapuessa" + +#~ msgid "Show join/part messages" +#~ msgstr "Näytä liittymis/poistumisviestit" + +#~ msgid "Color paste" +#~ msgstr "Liitä väritysten kanssa" + +#~ msgid "_Close Tab" +#~ msgstr "_Sulje välilehti" + +#~ msgid "Channel List..." +#~ msgstr "Kanavaluettelo..." + +#~ msgid "Notify List..." +#~ msgstr "Ilmoitusluettelo..." + +#~ msgid "_Close Window" +#~ msgstr "Sulje ikkuna" + +#~ msgid "User" +#~ msgstr "Käyttäjä" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: Ilmoitusluettelo" + +#~ msgid "C_hannels to join:" +#~ msgstr "Avattavat kanavat:" + +#~ msgid "Channel Switcher" +#~ msgstr "Kanavavalitsin" diff --git a/xchat-2.8.8/po/fr.gmo b/xchat-2.8.8/po/fr.gmo new file mode 100644 index 0000000000000000000000000000000000000000..6106311a733f4eccf456423cd91e5f7bff7bb37b GIT binary patch literal 99923 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 J@5^HGe*kQwP38aq literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/po/fr.po b/xchat-2.8.8/po/fr.po new file mode 100644 index 0000000..8c74c78 --- /dev/null +++ b/xchat-2.8.8/po/fr.po @@ -0,0 +1,6097 @@ +# French translation of XChat. +# This file is put in the public domain. +# Benjamin Sonntag <benjamin@alternc.org>, 2007 +# +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.8.4\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2006-09-08 12:26:43+0200\n" +"Last-Translator: Benjamin Sonntag <benjamin@alternc.org>\n" +"Language-Team: French <traduc@traduc.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Impossible de créer ~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Occupé" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Quitte" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* Utiliser IRC sous un compte root est stupide !\n" +" Vous devriez créer un compte utilisateur et\n" +" l'utiliser pour vous connecter.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Attente" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Actif" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Échec" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Terminé" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Connecter" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Interrompu" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "Impossible d'accéder à %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Erreur" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s vous propose « %s ». Voulez-vous l'accepter ?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Aucun DCC actif\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "OUI " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "NON " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Vous êtes bombardé de requêtes CTCP par %s, %s va être ignoré\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "" +"Vous êtes bombardé de MSG par %s, désactivation de l'option " +"gui_auto_open_dialog.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s connecté\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s déconnecté\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Vous n'avez encore rejoint aucun canal. Essayez /join #<canal>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Vous n'êtes pas encore connecté. Essayez /server <hôte> [<port>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Vous êtes déjà considéré comme absent : %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "Vous êtes déjà considéré comme présent : %s\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "/bin/sh est nécessaire au fonctionnement\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Commandes disponibles :" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Commandes définies par l'utilisateur :" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Commandes définies par un greffon :" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Taper /HELP <commande> pour plus d'informations, ou /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Paramètre inconnu « %s », ignoré." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "Aucun greffon de ce type n'a été trouvé.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Impossible de décharger ce greffon.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "" +"ADDBUTTON <nom> <action>, ajouter un bouton au-dessous de la liste des " +"utilisateurs" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "" +"ALLCHAN <cmd>, envoyer une commande à tous les canaux sur lesquels vous êtes " +"présent" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "" +"ALLCHANL <cmd>, envoyer une commande à tous les canaux sur lesquels vous " +"êtes présent" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "" +"ALLSERV <cmd>, envoyer une commande à tous les serveurs auxquels vous êtes " +"connecté" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<raison>], indiquer que vous êtes absent" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "BACK signale que vous êtes de retour (plus absent)" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <masque> [<typeban>], bannir du canal en cours tous ceux qui " +"correspondent au masque. S'ils sont déjà sur ce canal, ils ne seront pas " +"expulsés (nécessite d'être opérateur [chanop])" + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "SET [-quiet] <variable> [<valeur>] (-quiet = silencieusement)" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "" +"CLEAR [ALL|HISTORY], Efface la fenêtre courant ou l'historique des commandes" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, fermer l'onglet ou la fenêtre en cours" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" +"COUNTRY [-s] <code|joker>, rechercher un code de pays, par exemple : au = " +"Australie" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <pseudo> <message>, envoyer au pseudo un message CTCP, « VERSION » et " +"« USERINFO » sont des messages usuels." + +#: src/common/outbound.c:3516 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "CYCLE [<canal>], quitte et rejoint à nouveau le canal donné" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <pseudo> - accepter le fichier proposé\n" +"DCC SEND [maxcps=#] <pseudo> <fichier> - envoyer un fichier à quelqu'un\n" +"DCC LIST - afficher les connexions DCC\n" +"DCC CHAT <pseudo> - proposer une discussion DCC\n" +"DCC PCHAT <pseudo> - proposer une discussion DCC\n" +" en mode passif\n" +"DCC CLOSE <type> <pseudo> <fichier> - exemple :\n" +" /dcc close send paul fichier.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <pseudo>, supprimer l'état demi-opérateur « chanhalf-op » d'un pseudo " +"sur le canal actuel (nécessite être opérateur [chanop])" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "" +"DELBUTTON <nom>, supprimer un des boutons situés au-dessous de la liste des " +"utilisateurs" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <pseudo>, supprimer l'état opérateur (« chanop ») d'un pseudo sur le " +"canal actuel (nécessite d'être opérateur [chanop])" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <pseudo>, supprimer la parole donnée à un pseudo sur le canal actuel " +"(nécessite d'être opérateur [chanop])" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, se déconnecter du serveur" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <pseudo|hôte|IP>, rechercher l'adresse IP d'un utilisateur" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <texte>, afficher un texte en local" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <commande>, exécuter une commande. Si l'option -o est utilisée, la " +"sortie est envoyée sur le canal actuel, sinon elle est affichée dans la zone " +"de texte actuelle" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, envoyer un signal « SIGCONT » au processus" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], tuer une exécution en cours dans la session actuelle. Si -9 " +"est fourni, le processus est tué par le signal « SIGKILL »" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, envoyer un signal « SIGSTOP » au processus" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, envoyer des données à l'entrée standard des processus" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, vider la file d'envoi du serveur actuel" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" +"GATE <hôte> [<port>], utiliser un hôte comme serveur mandataire (proxy), le " +"port 23 est utilisé par défaut" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <pseudo> <mot-de-passe>, tuer un pseudonyme fantôme" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" +"HOP <pseudo>, donner l'état de demi-opérateur de canal « chanhalf-op » au " +"pseudo (nécessite d'être opérateur [chanop)]" + +# ChtiTux +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <mot de passe>, vous identifie auprès de nickserv" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <masque> <types...> <options...>\n" +" masque - masque d'hôtes à exclure, par ex. : *!*@*.aol.com\n" +" types - types de données à exclure, un seul ou tous :\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <pseudo> [<canal>], inviter quelqu'un sur un canal, par défaut le " +"canal actuel (nécessite d'être opérateur [chanop])" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <canal>, rejoindre le canal" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <pseudo>, expulser le pseudo (kick) hors du canal actuel (nécessite " +"d'être opérateur [chanop])" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <pseudo>, bannir puis expulser (kick) le pseudo du canal actuel " +"(nécessite d'être opérateur [chanop])" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, forcer une nouvelle vérification de latence (lag)" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <chaîne>, rechercher une chaîne mémorisée dans la fenêtre" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <fichier>, charger un greffon ou un script" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, retirer globalement les droits d'opérateur à tous les demi-" +"opérateurs (halfops) du canal actuel (nécessite d'être opérateur [chanop])" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, retirer globalement tous les droits d'opérateur à tous les opérateurs " +"du canal actuel (nécessite d'être opérateur [chanop])" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <action>, envoyer l'action sur le canal actuel (les actions sont écrites " +"à la 3ème personne, comme /me est content)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, jeter (kick) massivement tout le monde sauf vous hors du canal actuel " +"(nécessite d'être opérateur [chanop])" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, donner globalement les droits d'opérateur à tous les utilisateurs du " +"canal actuel (nécessite d'être opérateur [chanop])" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <pseudo> <message>, envoyer un message privé" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, afficher les pseudonymes sur le canal actuel" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <pseudo> <message>, envoyer une notification CTCP" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noreconnect] <nom_hôte> [<port>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <pseudo>, définir votre pseudonyme" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <pseudo/canal> <message>, envoyer une notification. Les notifications " +"sont un type de message auquel on devrait réagir automatiquement" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n réseau1[,réseau2,...]] [<pseudo>], affiche la liste des " +"notifications ou ajoute un quelqu'un à cette liste." + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" +"OP <pseudo>, donner l'état d'opérateur « chanop » au pseudo (nécessite d'être " +"opérateur [chanop])" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" +"PART [<canal>] [<raison>], quitter le canal, par défaut le canal actuel" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <pseudo | canal>, envoyer un ping CTCP au pseudo ou au canal" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "" +"QUERY [-nofocus] <pseudo>, ouvre une fenêtre de chat privé avec quelqu'un" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<raison>], se déconnecter du serveur actuel" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <texte>, transmettre le texte au serveur sous forme brute" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<hôte>] [<port>] [<mot_de_passe>], peut être appelée " +"exactement comme /RECONNECT pour se reconnecter au serveur actuel ou avec /" +"RECONNECT ALL pour se reconnecter à tous les serveurs ouverts" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<hôte>] [<port>] [<mot_de_passe>], peut être appelée exactement " +"comme /RECONNECT pour se reconnecter au serveur actuel ou avec /RECONNECT " +"ALL pour se reconnecter à tous les serveurs ouverts" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <texte>, transmettre vers xchat le texte sous forme brute, comme s'il " +"avait été reçu depuis le serveur IRC" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <texte>, envoyer un texte à l'objet de la fenêtre actuelle" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <pseudo> [<fichier>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <hôte> <port> <canal>, se connecter et rejoindre un canal" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <hôte> <port> <canal>, se connecter et rejoindre un canal" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <hôte> [<port>] [<mot_de_passe>], se connecter à un serveur, " +"le port par défaut est 6667 pour les connexions normales, et 9999 pour les " +"connexions ssl" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <hôte> [<port>] [<mot_de_passe>], se connecter à un serveur, le port " +"par défaut est 6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <variable> [<valeur>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<position>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<sujet>], définir le sujet si on en fournit un, sinon afficher le " +"sujet actuel" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" +"\n" +"TRAY -f <délai> <fichier1> [<fichier2>] Spécifie les fichiers à utiliser " +"pour faire clignoter l'icone de barre d'état.\n" +"TRAY -f <fichier> Spécifie le fichier à utiliser pour " +"l'icone de barre d'état.\n" +"TRAY -i <numéro> Spécifie un icone interne pour le " +"clignotement de la barre d'état.\n" +"TRAY -t <texte> Spécifie le message d'aide de l'icone de " +"barre d'état.\n" +"TRAY -b <titre> <texte> Spécifie le message flottant de l'icone " +"de barre d'état." + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "" +"UNBAN <masque> [<masque>...], supprimer le bannissement pour les masques " +"fournis." + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <masque> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <nom>, décharger un greffon ou un script" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, ouvrir une URL dans votre navigateur" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <pseudo1> <npseudo2> etc., mettre en surbrillance le(s) " +"pseudonyme(s) dans la liste des utilisateurs du canal" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "" +"VOICE <pseudo>, donner la parole à quelqu'un (nécessite d'être opérateur " +"[chanop])" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <message>, écrire le message sur tous les canaux" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <message>, envoyer le message à tous les opérateurs du canal actuel " +"(chanops)" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Utilisation : %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"Aucune aide n'est disponible pour cette commande.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Cette commande n'existe pas.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Paramètres de la commande utilisateur erronés.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Trop de commandes utilisateur récursives, abandon." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Commande inconnue. Essayez /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "" +"Le symbole xchat_plugin_init n'existe pas ; est-ce vraiment un greffon " +"xchat ?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Êtes-vous sûr que ce serveur et ce port gèrent SSL ?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Résolution du nom d'hôte %s impossible.\n" +"Veuillez vérifier vos réglages IP.\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "La traversée du serveur mandataire (proxy) a échoué.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Passage au serveur suivant dans %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Attention : le jeu de caractères « %s » est inconnu. Aucune conversion ne " +"sera effectuée pour le réseau %s." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 a été ajouté à la liste de notification." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Liste de bannissement : %C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tImpossible de rejoindre%C26 %B$1 %O(Vous êtes banni)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 s'appelle maintenant $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 met un ban sur $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tCanal $1 créé le $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "" +"%C22*%O$t%C26$1%Oi enlève son état de demi-opérateur « half-operator » de " +"canal à%C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O enlève son état d'opérateur de canal à%C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O enlève la parole à%C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$t définit « l'exempt » sur $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O donne l'état de demi-opérateur à%C26 $2" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 définit l'invite sur $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UCanal Utilisateurs Sujet" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 active le mode $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Modes du canal $1 : $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O donne l'état d'opérateur de canal à%C26 $2" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 supprime l'exempt sur $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 supprime l'invite sur $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 enlève le mot-clé du canal" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 enlève la limite d'utilisateurs" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 définit le mot-clé du canal à $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 définit la limite du canal à $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 supprime l'état de bannissement de $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O donne la parole à%C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Connecté. Identification en cours..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22Connexion à $1 ($2) port $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21La connexion a échoué. Erreur : $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tUn CTCP $1 de $2 a été reçu" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tUn CTCP $1 de $2 (pour $3) a été reçu" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tUn son CTCP $1 a été reçu de $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tUn son CTCP $1 de $2 (pour $3) a été reçu" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tDCC CHAT à %C26$1%O interrompu." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$tConnexion DCC CHAT établie à %C26$1 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tPerte du DCC CHAT avec %C26$1%O ($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tRéception d'une offre de DCC CHAT de $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tProposition de DCC CHAT à $1" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tUn CHAT est déjà proposé à $1" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$tDCC $1 tentative de connexion à%C26 $2%O échouée (err=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$t« $1%O » reçu de $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 Type À/De État Taille Pos Fichier " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O.%010%C22*%O" +"$tContents of packet: $2" +msgstr "" +"%C22*%O$tReçu une requête DCC mal formée de %C26$1%O.%010%C22*%O$tContenu du " +"paquet : $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tProposition de%C26 $1%O à%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tPas d'offre DCC correspondante." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV%C26 $2%O vers%C26 $1%O interrompu." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC RECV%C26 $1%O de%C26 $3%O terminé %C30[%C26$4%O cps%C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC RECV connexion établie avec%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV%C26 $1%O de%C26 $3%O échoué ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV : ouverture de $1 en écriture impossible ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "%C22*%O$tLe fichier%C26 $1%C existe déjà, enregistré sous%C26 $2%O." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Oa demandé à reprendre%C26 $2 %Cdepuis%C26 $3%C." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC SEND%C26 $2%O vers%C26 $1%O interrompu." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC SEND%C26 $1%O à%C26 $2%O terminé %C30[%C26$3%O cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC SEND connexion établie vers%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND%C26 $1%O vers%C26 $2%O échoué. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Oa proposé%C26 $2 %O(%C26$3 %Ooctets)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oà%C26 $3 %Cfigé - abandon." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oà%C26 $3 %Odélai dépassé - abandon." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 supprimé de la liste de notification." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tDéconnecté ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tVotre IP a été trouvée : [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O ajouté à la liste d'exclusion." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "Exclusion sur %C26$1%O modifiée." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 Masque d'hôte PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O enlevé de la liste d'exclusion." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " La liste d'ignorance est vide." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "%C22*%O$tNe peut rejoindre%C26 %B$1 %O(Canal en invite seulement)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tVous êtes invité sur%C26 $1%O par%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) a rejoint $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$tNe peut rejoindre%C26 %B$1 %O(Requiert le mot-clé)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 a expulsé $2 de $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$tVous avez été tué par $1 ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD sauté." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 est déjà utilisé. Réessai avec $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$tPseudonyme déjà utilisé. Utilisez /NICK pour en essayer un autre." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tAucun DCC correspondant." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tAucun processus ne tourne actuellement" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tLa liste de notification est vide." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Liste de notification " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 utilisateurs dans la liste de notification." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tNotify: $1 est hors-ligne ($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tNotify: $1 est en ligne ($3)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) a quitté $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) a quitté $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tRéponse de $1 à la requête ping : $2 seconde(s)" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "" +"%C22*%O$tAucune réponse à la requête ping depuis $1 secondes, déconnexion." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tUn processus tourne déjà" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 est parti (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 définit les modes%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tRecherche de l'adresse IP de%C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22Connecté." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22Recherche de $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tArrêt de la tentative de connexion précédente (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29Le sujet de $1%C %C29est : $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 a changé le sujet en : $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29Sujet de $1%C %C29défini par $2%C %C29le $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tHôte inconnu. Peut-être avez vous fait une faute de frappe ?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "" +"%C22*%O$tImpossible de rejoindre%C26 %B$1 %O(limite d'utilisateurs atteinte)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Utilisateurs sur $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cest absent %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OFin de la liste WHOIS." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O inactif %C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "" +"%C22*%O$t%C28[%O$1%C28]%O inactif %C26 $2%O, ouverture de session :%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" +"%C22*%O$t%C28[%O$1%C28] %Outilisateur réel@hôte%C27 $2%O, IP réelle%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Vous parlez maintenant sur $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tVous avez été expulsé de $2 par $3 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tVous avez quitté le canal $3" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tVous avez quitté le canal $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tVous avez invité%C26 $1%O à%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tVous-vous appelez maintenant $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "Historique chargé depuis" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** FIN DU JOURNAL À %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** DÉBUT DU JOURNAL À %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Impossible d'ouvrir le(s) fichier(s) journaux en écriture.\n" +" Veuillez vérifier les permissions de %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Message de gauche" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Message de droite" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "Pseudo de la personne qui arrive" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "Canal à rejoindre" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "Hôte de la personne" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Pseudonyme" + +#: src/common/text.c:973 +msgid "The action" +msgstr "Action" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Caractère de mode" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Texte identifié" + +#: src/common/text.c:980 +msgid "The text" +msgstr "Texte" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Message" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Ancien pseudonyme" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Nouveau pseudonyme" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Pseudonyme de la personne qui a changé le sujet" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Sujet" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Canal" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "Pseudonyme de celui qui a expulsé" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "Personne qui se fait expulser" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "Canal" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "Raison" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "Pseudonyme de la personne qui part" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "Heure" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "Créateur" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Pseudonyme" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Raison" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Hôte" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "Émetteur" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "Heure au format x.x (voir ci-dessous)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "Canal de destination" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "Son" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "Pseudonyme de la personne" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "Événement CTCP" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "Pseudonyme de la personne qui a défini la clé" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "Clé" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "Pseudonyme de la personne qui a défini la limite" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "Limite" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "Pseudonyme de la personne qui a donné l'état d'opérateur" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "Pseudonyme de la personne qui a reçu l'état d'opérateur" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "Pseudonyme de la personne qui a reçu l'état de demi-opérateur" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "Pseudonyme de la personne qui a donné l'état de demi-opérateur" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "Pseudonyme de la personne qui a donné la parole" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "Pseudonyme de la personne à qui a été donnée la parole" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "Pseudonyme de la personne qui a fait le bannissement" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "Masque de bannissement" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "Pseudonyme de la personne qui a supprimé la clé" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "Pseudonyme de la personne qui a supprimé la limite" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "Pseudonyme de la personne qui a supprimé l'état d'opérateur" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "Pseudonyme de la personne à qui on a supprimé l'état d'opérateur" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "Pseudonyme de la personne qui a supprimé l'état de demi-opérateur" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Pseudonyme de la personne à qui on a supprimé l'état de demi-opérateur" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "Pseudonyme de la personne qui a supprimé la parole" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "Pseudonyme de la personne à qui on a supprimé la parole" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "Pseudonyme de la personne qui a supprimé l'état de bannissement" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "Pseudonyme de la personne qui a fait l' « exempt »" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "Masque d'exempt" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "Pseudonyme de la personne qui a supprimé l'exempt" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "Pseudonyme de la personne qui a fait l'invite" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "Masque d'invite" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "Pseudonyme de la personne qui a enlevé l'invite" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "Pseudonyme de la personne qui a défini le mode" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "Signe du mode (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "Lettre de mode" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "Canal de destination" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Nom d'utilisateur" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Nom complet" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Membre des canaux (opérateur IRC)" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Informations serveur" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Durée d'inactivité" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Heure de connexion" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Raison de l'absence" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Message" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Compte" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "utilisateur réel@hôte" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "IP réelle" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Nom du canal" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Texte" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Nom du serveur" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Pseudonyme de la personne qui vous a invité" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Utilisateurs" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Pseudonyme déjà utilisé" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Pseudonyme en essai" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Port" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Réseau" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Chaîne de modes" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "Adresse IP" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "Type de DCC" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Nom de fichier" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Nom du fichier de destination" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "cps" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Chemin" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Position" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Taille" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "Chaîne DCC" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Nombre de notifications" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Ancien nom de fichier" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Nouveau nom de fichier" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Destinataire" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Masque d'hôte" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Nom d'hôte" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "Paquet" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Secondes" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Pseudonyme de la personne qui a été invitée" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Masque de bannissement" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "qui a défini le bannissement" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Heure du bannissement" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Erreur d'analyse de l'événement %s.\n" +"Chargement des valeurs par défaut." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"Impossible de lire le fichier audio :\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "L'hôte distant a fermé la socket" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Connexion refusée" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Pas de route vers l'hôte" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Expiration du délai de connexion" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Ne peut assigner cette adresse" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Connexion réinitialisée à l'autre extrémité" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Île Ascension" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Andorre" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Émirats Arabes Unis" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Afghanistan" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Antigua-et-barbuda" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Albanie" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Arménie" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Antilles néerlandaises" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Antarctique" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Argentine" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "DNS inverse" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Samoa américaines" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Autriche" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Australie" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Aland, îles" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Azerbaïdjan" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Bosnie-herzégovine" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Barbade" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Bangladesh" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Belgique" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Burkina faso" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Bulgarie" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Bahreïn" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Businesses" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Bénin" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Bermudes" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Brunéi darussalam" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Bolivie" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Brésil" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Bahamas" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Bhoutan" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Bouvet, île" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Bélarus" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Canada" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Cocos (keeling), îles" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "République Démocratique du Congo" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "Centrafricaine, république" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Congo" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Suisse" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Côte d'Ivoire" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Cook, îles" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Chili" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Cameroun" + +#: src/common/util.c:898 +msgid "China" +msgstr "Chine" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Colombie" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Internic commercial" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Costa rica" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Serbie Montenegro" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Cuba" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Cap-vert" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Christmas, île" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Chypre" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "Tchèque, république" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Allemagne" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Djibouti" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Danemark" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Dominique" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "Dominicaine, république" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Algérie" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Équateur" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Institution éducative" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Estonie" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Égypte" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Sahara occidental" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Érythrée" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Espagne" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Éthiopie" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Union Européenne" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Finlande" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Fidji" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Falkland, îles (malvinas)" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Micronésie, états fédérés de" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Féroé, îles" + +#: src/common/util.c:928 +msgid "France" +msgstr "France" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Grande Bretagne" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Grenade" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Géorgie" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Guyane française" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Îles anglo-normandes" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Ghana" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Groenland" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Gambie" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Guinée" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Gouvernement" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Guadeloupe" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Guinée équatoriale" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Grèce" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Géorgie du sud et les îles Sandwich du sud" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Guinée-bissau" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Guyana" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Hong-kong" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Heard, île et mcdonald, îles" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Croatie" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Haïti" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Hongrie" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Indonésie" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Irlande" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Israël" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Île de Man" + +#: src/common/util.c:959 +msgid "India" +msgstr "Inde" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Informatif" + +#: src/common/util.c:961 +msgid "International" +msgstr "International" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Océan indien, territoire britannique de l'" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Iraq" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Iran, république islamique d'" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Islande" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Italie" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Jamaïque" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Jordanie" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Japon" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Kenya" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Kirghizistan" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Cambodge" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Comores" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "Saint-kitts-et-nevis" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Corée, république populaire démocratique de" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Corée, république de" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Koweït" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Caïmanes, îles" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Kazakhstan" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Lao, République Démocratique Populaire" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Liban" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Sainte-lucie" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Sri lanka" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Libéria" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Lituanie" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Luxembourg" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Lettonie" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Libyenne, jamahiriya arabe" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Maroc" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Monaco" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Moldova, république de" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "Médical États-Unis" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Madagascar" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Marshall, îles" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Militaire" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Macédoine, l'ex-République Yougoslave de" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Mongolie" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Macao" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Mariannes du nord, îles" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Martinique" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Mauritanie" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Malte" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Maurice" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Maldives" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Mexique" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Malaisie" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Mozambique" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Namibie" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Nouvelle-Calédonie" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Réseau Internic" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Norfolk, île" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Nigéria" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Pays-Bas" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Norvège" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Népal" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Niué" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Nouvelle-Zélande" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Internic Organisation non-lucrative" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Pérou" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Polynésie française" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Papouasie-nouvelle-Guinée" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Philippines" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Pologne" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "Saint-Pierre-et-Miquelon" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Porto Rico" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Territoires Palestiniens" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Portugal" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Palaos" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Paraguay" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Qatar" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Réunion" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Roumanie" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "Ancien ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Russie, fédération de" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Rwanda" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Arabie saoudite" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Salomon, îles" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Seychelles" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Soudan" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Suède" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Singapour" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "Sainte-Hélène" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Slovénie" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard et île jan mayen" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Slovaquie" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Sierra Léone" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "Saint-Marin" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Sénégal" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Somalie" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Suriname" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "Sao Tomé-et-Principe" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Ex URSS" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Syrienne, république arabe" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Swaziland" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Turks et caïques, îles" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Tchad" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Terres australes françaises" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Thaïlande" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Tadjikistan" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Timor-Leste" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Turkménistan" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Tunisie" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Turquie" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Trinité-et-Tobago" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Taïwan, province de chine" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Tanzanie, République-Unie de" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Ukraine" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Ouganda" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Royaume-Uni" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "États-Unis" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Uruguay" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Ouzbékistan" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Saint-Siège (État de la Cité du Vatican)" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "Saint-Vincent et les Grenadines" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Vénézuela" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Îles Vierges Britanniques" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "Îles Vierges des États-Unis" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Viet Nam" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Wallis et Futuna" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Yémen" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Yougoslavie" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Afrique du Sud" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Zambie" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Inconnu" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "Ouvrir la fenêtre de dialogue" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "Envoyer un fichier" + +#: src/common/xchat.c:728 +#, fuzzy +msgid "_User Info (WhoIs)" +msgstr "Informations de l'utilisateur (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +#, fuzzy +msgid "O_perator Actions" +msgstr "Actions de l'opérateur" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Donner l'état d'opérateur" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Prendre l'état d'opérateur" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Donner la parole" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Prendre la parole" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Expulser/Bannir" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Expulser" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Bannir" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "ExpulserBannir" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Quitter le canal" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Rejoindre un canal..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Entrer le canal à rejoindre :" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Liens du serveur" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Envoyer une requête ping au serveur" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Cacher la version" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Op" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "Suppr. Op." + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "au revoir" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Entrer la raison pour expulser %s :" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Envoyer un fichier" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Dialogue" + +# Non traduit pour garder signification /DCC send +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "WhoIs" + +# Non traduit pour garder signification /DCC send +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Send" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Chat" + +# Attention problème : devrait être traduit parfois +# Non traduit pour garder signification /DCC send +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Clear" + +# Non traduit pour garder signification /DCC send +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "Impossible de se connecter au bus de session" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "Impossible de compléter NameHasOwner" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "Impossible de terminer la commande" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "accès distant" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "greffon pour l'accès à distance en utilisant DBUS" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Impossible de se connecter au bus: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Échec de l'acquisition de %s : %s\n" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "À _propos" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Client IRC multiplateformes" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Table de caractères" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "Non connecté." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Vous devez sélectionner des bannissements." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "Voulez-vous vraiment enlever les bannissements de %s ?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Masque" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "De" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Date" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" +"Vous ne pouvez ouvrir la fenêtre de liste de banissement lorsque vous vous " +"trouvez dans un onglet de canal." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat : liste de bannissement (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Enlever" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Scinder" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Rafraîchir" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Affichage de %d/%d utilisateurs sur %d/%d canaux." + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Choisir un nom de fichier de sortie" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "Re_joint le canal" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "_Copie le nom du canal" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "Copie le suje_t du canal" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat : liste des canaux (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "_Recherche" + +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "_Télécharger" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "Sauver la _Liste" + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "Seuls les canaux " + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "ayant entre" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "et" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "utilisateurs." + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "Chercher dans :" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "Nom du canal" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "Type de recherche :" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "Recherche simple" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "Recherche par motif (*)" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "Expression rationnelle" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Rechercher :" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Envoyer le fichier à %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Ce fichier ne peut être repris." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"Impossible d'accéder au fichier : %s\n" +"%s.\n" +"Reprise impossible." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"Le fichier dans le répertoire des téléchargements est plus gros que le " +"fichier proposé. La reprise est impossible." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "" +"Impossible de reprendre le même fichier en provenance de deux personnes " +"différentes." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: Envois et réceptions" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "État" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Fichier" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "Heure de fin estimée" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Les deux" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Envois" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "Récupération" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Détails" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Fichier : " + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "Adresse : " + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Interrompre" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Accepter" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Reprendre" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Ouvrir le dossier..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat : liste de Chat DCC" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Recv" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Envoyé" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "Heure de début" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*NOUVEAU*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "ÉDITEZ MOI" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Nom" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Commande" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Vers le haut" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Vers le bas" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Annuler" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Enregistrer" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Nouveau" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Supprimer" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Trier" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Aide" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "Ne pas se connecter automatiquement aux serveurs" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "Utiliser un répertoire de configuration différent" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "Ne charger aucun greffon automatiquement" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "Afficher le répertoire de chargement automatique des greffons" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "Afficher le répertoire de configuration de l'utilisateur" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Ouvrir une URL irc://serveur:port/canal" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Exécuter la commande :" + +#: src/fe-gtk/fe-gtk.c:132 +#, fuzzy +msgid "Open URL or execute command in an existing XChat" +msgstr "Ouvrir l'URL dans un XChat existant" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Démarré minimisé. 0=Normal 1=Minimisé 2=Dans l'icone d'état" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "niveau" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Afficher la version" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"L'ouverture de la police a échoué :\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "Le tampon de recherche est vide.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d octets" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "File d'envoi du serveur : %d octets" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"L'action Run Command exécute les données dans Données 1 comme si elles " +"avaient été tapées dans la zone de saisie où vous avez pressé la séquence de " +"touches. Ainsi, elle peut contenir du texte (qui sera envoyé au canal/" +"personne), des commandes ou des commandes utilisateur. Quand elle s'exécute " +"tous les caractères \\n dans Données 1 sont utilisés pour délimiter des " +"commandes séparées ce qui permet de lancer plus d'une commande. Si vous " +"voulez un \\ dans le texte effectivement exécuté, entrez \\\\" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"La commande Change Page échange les pages présentes dans le bloc-notes. " +"Définissez Données 1 à la page vers laquelle vous voulez sauter. Si Données " +"2 est défini alors l'échange sera relatif à la position actuelle" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"La commande Insert in Buffer insérera le contenu de Données 1 dans la zone " +"où la séquence de touches a été pressée à la position actuelle du curseur" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"La commande Scroll Page fait défiler l'élément graphique textuel vers le " +"haut ou vers le bas d'une page ou d'une ligne. Définir Data 1 soit à Up, " +"Down, +1 ou -1." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"La commande Set Buffer met le contenu de Données 1 dans la zone où la " +"séquence de touches a été pressée" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"La commande Last Command met dans la zone la dernière commande entrée - même " +"comportement que la flèche vers le haut du pavé numérique dans un " +"interpréteur de commandes" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"La commande Next Command met dans la zone la prochaine commande entrée - " +"même comportement que la flèche vers le bas du pavé numérique dans un " +"interpréteur de commandes" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Cette commande change le texte de la zone de saisie pour compléter un pseudo " +"ou une commande incomplet. Si Données 1 est défini, alors un double appui " +"dans une chaîne sélectionnera le dernier pseudo, pas le suivant" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Cette commande parcourt vers le haut ou le bas la liste des pseudonymes. Si " +"Données 1 est défini elle parcourt vers le haut, sinon elle parcourt vers le " +"bas" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Cette commande vérifie si le dernier mot saisi dans la zone est présent dans " +"la liste de remplacements et le remplace si elle trouve une correspondance" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Cette commande déplace l'onglet de devant d'un cran vers la gauche" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Cette commande déplace l'onglet de devant d'un cran vers la droite" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Cette commande déplace l'ensemble des onglets vers la gauche" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Cette commande déplace l'ensemble des onglets vers la droite" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "" +"Placer la ligne de saisie dans l'historique mais ne pas l'afficher sur le " +"serveur" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "" +"Il y a eu une erreur au chargement de la configuration des raccourcis clavier" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<aucun>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Mod" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Touche" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Action" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat : raccourcis clavier" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Majuscule" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Données 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Données 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Erreur d'ouverture du fichier des raccourcis clavier\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Nom de touche %s inconnu dans le fichier de configuration des raccourcis " +"clavier\n" +"Chargement interrompu, veuillez corriger %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Action %s inconnue dans le fichier de configuration des raccourcis clavier\n" +"Chargement interrompu, veuillez corriger %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Attente d'une ligne de données (commençant par Dx{:|!}) mais reçu :\n" +"%s\n" +"\n" +"Chargement interrompu, veuillez corriger %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"Le fichier de configuration des raccourcis clavier est corrompu\n" +"Chargement interrompu, veuillez corriger %s/keybindings.conf\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "Impossible d'écrire dans ce fichier." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Impossible de lire ce fichier." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Ce masque existe déjà." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Privé" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Notice" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Inviter" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Ne plus exclure" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Entrer le masque d'exclusion :" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat : liste d'ignorance" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Statistiques d'ignorance :" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Canal :" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privé :" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Notice :" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP :" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Invite :" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "Ajouter..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "Le nom de canal est trop court, veuillez réessayer." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat : fin de la procédure de connexion" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "Connecté à %s." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"Dans la fenêtre de liste des serveurs, aucun canal (salon de discussion) de " +"ce réseau n'a été défini comme devant être rejoint automatiquement." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "Que désirez-vous faire maintenant ?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "_Rien, je rejoindrai un canal plus tard." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "Re_joindre le canal :" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" +"Si vous connaissez le nom du canal que vous désirez rejoindre, entrez-le ici." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "Ou_vrir la fenêtre de liste des canaux." + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "" +"La récupération de la liste des canaux peut prendre une ou deux minutes." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "_Toujours afficher ce dialogue après la connexion." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Dialoguer avec" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Le sujet de %s est : %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Aucun sujet n'est défini" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"Ce serveur comporte déjà %d canaux ou dialogues qui lui sont associés. Faut-" +"il tous les fermer ?" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "Quitter XChat ?" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "Ne plus me demander." + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Vous êtes connecté à %i réseaux IRC." + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "Voulez-vous vraiment quitter ?" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "Des transferts de fichiers sont en cours." + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "_Minimiser dans la barre d'état" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Insérer un attribut ou un code de couleur" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Gras</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Souligné</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Normal" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Couleurs 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Couleurs 8-15" + +#: src/fe-gtk/maingui.c:1612 +#, fuzzy +msgid "_Settings" +msgstr "_Paramètres" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "Cacher les messages join/part" + +#: src/fe-gtk/maingui.c:1625 +#, fuzzy +msgid "_Extra Alerts" +msgstr "Alertes" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "Biper sur les messages" + +#: src/fe-gtk/maingui.c:1628 +#, fuzzy +msgid "Blink Tray _Icon" +msgstr "Clignoter l'icone de barre d'état" + +#: src/fe-gtk/maingui.c:1629 +#, fuzzy +msgid "Blink Task _Bar" +msgstr "Quand faire clignoter la barre d'état :" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +#, fuzzy +msgid "_Detach" +msgstr "_Détacher l'onglet" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "_Fermer" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "La limite d'utilisateurs doit être un nombre !\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Protection du sujet (Topic)" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Aucun message de l'extérieur" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Secret" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Invite seulement" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Modéré" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Liste de bannissement" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Mot-clé" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Limite d'utilisateurs" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Afficher/Cacher la liste des utilisateurs" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"Impossible de définir un arrière-plan transparent.\n" +"\n" +"Il est possible que vous utilisiez un gestionnaire\n" +"de fenêtres qui n'est pas géré pour le moment.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Entrer le nouveau pseudonyme :" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Hôte inconnu" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Nom réel :" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Utilisateur :" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "Pays :" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Serveur :" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "il y a %u minutes" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Dernier message :" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Message d'absence :" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"La barre de menu est maintenant cachée. Vous pouvez l'afficher de nouveau en " +"pressant F9 ou en cliquant avec le bouton droit de la souris dans une partie " +"vierge de la zone de texte principale." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Ouvrir le lien dans un navigateur" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Copier le lien sélectionné" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Rejoindre le canal" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Partir du canal" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Cycler canal" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat : menu utilisateur" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Éditer ce menu..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Récupérer la liste des canaux..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Commandes utilisateur - codes d'échappement :\n" +"\n" +"%c = canal actuel\n" +"%e = réseau actuel\n" +"%m = informations sur la machine\n" +"%n = votre pseudo\n" +"%t = date/heure\n" +"%v = version de xchat\n" +"%2 = 2e mot\n" +"%3 = 3e mot\n" +"&2 = du 2e mot à la fin de la ligne\n" +"&3 = du 3e mot à la fin de la ligne\n" +"\n" +"exemple :\n" +"/cmd sylvain bonjour\n" +"\n" +"%2 sera \"sylvain\"\n" +"&2 sera \"sylvain bonjour\"." + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Boutons de la liste des utilisateurs - code d'échappement : \n" +"\n" +"%a = tous les pseudos sélectionnés\n" +"%c = canal actuel\n" +"%e = réseau actuel\n" +"%h = nom d'hôte du pseudo sélectionné\n" +"%m = informations sur la machine\n" +"%n = votre pseudo\n" +"%s = le pseudo sélectionné\n" +"%t = date/heure\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Boutons de la boite de dialogue - Codes d'échappement : \n" +"\n" +"%a = tous les pseudos sélectionnés\n" +"%c = canal actuel\n" +"%e = réseau actuel\n" +"%h = nom d'hôte du pseudo sélectionné\n" +"%m = informations sur la machine\n" +"%n = votre pseudo\n" +"%s = le pseudo sélectionné\n" +"%t = date/heure\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"Réponses CTCP - Codes d'échappement :\n" +"\n" +"%d = données (toute la réponse CTCP)\n" +"%e = réseau actuel\n" +"%m = informations sur la machine\n" +"%s = pseudo ayant envoyé le CTCP\n" +"%t = date/heure\n" +"%2 = 2e mot\n" +"%3 = 3e mot\n" +"&2 = du 2e mot à la fin de la ligne\n" +"&3 = du 3e mot à la fin de la ligne\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"Gestionnaires d'URL - Codes spéciaux :\n" +"\n" +"%s = la chaîne d'URL\n" +"\n" +"Placer un ! devant la commande\n" +"indique qu'elle devrait être\n" +"envoyée à un interpréteur de commandes\n" +"au lieu de XChat" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat : commandes définies par l'utilisateur" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat : menu de la liste des utilisateurs" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Remplacer par" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat : remplacer" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat : gestionnaires d'URL" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat : boutons de la liste des utilisateurs" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat : boutons de dialogue" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat : réponses CTCP" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "Li_ste des réseaux..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "_Nouveau" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Onglet de serveur..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Onglet de canal..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Fenêtre de serveur..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Fenêtre de canal..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "_Charger un greffon ou un script..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "_Quitter" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "_Vue" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "Barre de _menu" + +#: src/fe-gtk/menu.c:1592 +msgid "_Topic Bar" +msgstr "Barre de suje_t" + +#: src/fe-gtk/menu.c:1593 +msgid "_User List" +msgstr "Liste d'_utilisateurs" + +#: src/fe-gtk/menu.c:1594 +msgid "U_serlist Buttons" +msgstr "Bouton_s de la liste des utilisateurs" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "Boutons de m_ode" + +#: src/fe-gtk/menu.c:1597 +msgid "_Channel Switcher" +msgstr "Sélecteur de _canaux" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "_Onglets" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "_Arbre" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "_Indicateurs du réseau" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Aucun" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Graphique" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "_Serveur" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "Se _déconnecter" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "Se _reconnecter" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "Rejoindre un canal..." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "Rejoindre un canal..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Marquer absent (Away)" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "Menu de l_utilisateur" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "_Paramètres" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "_Préférences" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "_Avancés" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Remplacement automatique..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "Réponses CTCP..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Boutons de dialogue..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Raccourcis clavier..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Événements textuels..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "Gestionnaires d'URL..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Commandes utilisateur..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Boutons de la liste des utilisateurs..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Menu contextuel de la liste des utilisateurs..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_Fenêtre" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Liste de bannissement..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Table de caractères..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Chat direct..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Transferts de fichiers..." + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "Liste de bannissement..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Liste d'ignorance..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Greffons et scripts..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Journal brut..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "Capture d'URL..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Repositionner la ligne de repérage" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "_Effacer le texte" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Rechercher du texte..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Enregistrer le texte..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_Aide" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "_Contenu" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "À _propos" + +#: src/fe-gtk/menu.c:2147 +#, fuzzy +msgid "_Attach" +msgstr "_Attacher la fenêtre" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Dernière apparition" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Déconnecté" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Jamais" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "il y a %d minutes" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Connecté" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Entrer le pseudonyme à ajouter :" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "Notifier depuis les réseaux suivants :" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "Entrez les réseaux séparés par une virgule." + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "XChat : liste des fichiers envoyés" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "Ouvrir la fenêtre de dialogue" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" +"Je ne trouve pas 'notify-send' pour ouvrir les fenêtres d'alertes.\n" +"Merci d'installer libnotify." + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "XChat : Vous êtes connecté à %u réseaux et %u canaux" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "Affiche_r" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "Cac_her" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "_Clignoter lors des" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "Messages de canaux" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "Messages privés" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "Messages en surbrillance" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "Absent" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat : Message en surbrillance de %s (%s)" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat : %u messages en surbrillance. Le dernier est de %s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat : Nouveau message public de %s (%s)" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat : %u nouveaux messages publics." + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat : Message privé de %s (%s)" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "XChat : %u messages privés. Le dernier est de %s (%s)" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat : Demande de transfert de fichier de %s (%s)" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "" +"XChat : %u demandes de transferts de fichier. Le dernier est de %s (%s)" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Version" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Description" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Sélectionner un greffon ou un script à charger" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat : greffons et scripts" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "_Charger..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "_Décharger" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Enregistrer sous..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat : journal brut (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Effacer les journaux bruts" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "" +"La fenêtre pour laquelle vous avez ouvert cette recherche n'existe plus." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "Fin atteinte lors de la recherche, non trouvé." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat : chercher" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "_Sensible à la casse" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "Rechercher vers l'a_rrière" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "_Rechercher" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Nouveau réseau" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Voulez-vous vraiment supprimer le réseau « %s » et tous ses serveurs ?" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "canal" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat : liste des canaux (%s)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "Mot de passe :" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "_Éditer" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "Le nom d'utilisateur et le nom réel ne peuvent être laissés blancs." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat : éditer %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Serveur pour %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Ne se connecter qu'aux serveurs sélectionnés" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Ne pas passer au serveur suivant lorsque la connexion échoue." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Vos paramètres" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Utiliser les informations utilisateur globales" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "_Pseudonyme :" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Second choix :" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "Nom d'_utilisateur :" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "Nom _réel :" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Connexion en cours" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Connexion automatique à ce réseau au démarrage" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "Utiliser un serveur mandataire (proxy)" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "Utiliser SSL pour tous les serveurs de ce réseau" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Accepter un certificat SSL non valable" + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "Quitter le canal :" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "Canaux à rejoindre, séparé par des virgules, mais sans espace !" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Commande de connexion :" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Commande supplémentaire à exécuter après la connexion. Si vous avez besoin " +"de plus d'une seule commande, positionnez ceci à « LOAD -e " +"<nom_de_fichier> », où <nom_de_fichier> est un fichier texte contenant les " +"commandes à exécuter." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Mot de passe pour « nickserv » :" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Si votre pseudonyme a besoin d'un mot de passe, veuillez l'entrer ici. Ce " +"n'est pas géré par tous les réseaux IRC." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Mot de passe du serveur :" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Mot de passe du serveur en cas de doute, le laisser blanc." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Jeu de caractères :" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat : liste des réseaux" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Information utilisateur" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Troisième choix :" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Réseaux" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "Sauter la liste des réseaux au démarrage" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "_Éditer..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "_Trier" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" +"Trie les réseaux dans l'ordre alphabétique. Utilisez Shift-Haut et Shift-Bas " +"pour déplacer une ligne." + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "C_onnecter" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Apparence de la boîte de texte" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Police :" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Image d'arrière-plan :" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Lignes de défilement :" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Colorer les pseudonymes" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Attribuer une couleur différente à chaque personne sur l'IRC" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Indenter les pseudonymes" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Afficher les pseudonymes en les justifiant à droite" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Arrière-plan transparent" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Afficher la ligne de repérage" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Insérer une ligne rouge après le dernier texte lu." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Paramètres de transparence" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Rouge :" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Vert :" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Bleu :" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Horodatage" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Activer l'horodatage" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Format de l'horodatage :" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Voir la page de manuel de strftime pour plus de détails." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "Le dernier ayant parlé d'abord" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Boîte de saisie" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Utiliser la police et les couleurs de la boîte de texte" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Vérification orthographique" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Complétion des pseudonymes" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "" +"Complétion automatique des pseudonymes (sans utilisation de la tocuhe de " +"tabulation)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Suffixe pour la complétion des pseudonymes :" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "Tri de la complétion des pseudo :" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Codes de la boîte de saisie" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Interpréter %nnn comme une valeur ASCII" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Interpréter %C, %B comme Color, Bold, etc." + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, les opérateurs en premier" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "A-Z, les opérateurs en dernier" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Non classé" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "Gauche (Haut)" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "Gauche (Bas)" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "Droite (Haut)" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "Droite (Bas)" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Haut" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Bas" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Cachés" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Liste Utilisateur" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Afficher les noms d'hôtes dans la liste des utilisateurs" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Liste des utilisateurs classée par :" + +#: src/fe-gtk/setup.c:205 +msgid "Show user list at:" +msgstr "Position de la liste des utilisateurs :" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Suivi de l'absence" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "" +"Suivre l'état d'absence des utilisateurs et les afficher dans une couleur " +"différente" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "Sur les canaux plus petits que :" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Action sur un double clic" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Fenêtres" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Onglets" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Toujours" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Uniquement les onglets nécessaires" + +#: src/fe-gtk/setup.c:242 +msgid "Tree" +msgstr "Arbre" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "Type de liste des canaux :" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Ouvrir un onglet supplémentaire pour les messages du serveur" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Ouvrir un onglet supplémentaire pour les notifications du serveur" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "Ouvrir un nouvel onglet lors de la réception de message privé" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Trier les onglets par ordre alphabétique" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "Petits onglets" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Focus sur les nouveaux onglets :" + +#: src/fe-gtk/setup.c:258 +msgid "Show channel switcher at:" +msgstr "Position de la liste des canaux :" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Réduire les étiquettes des onglets à :" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "lettres." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Onglets ou fenêtres" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Ouvrir les canaux dans :" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Ouvrir les boîtes de dialogue dans :" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Ouvrir les utilitaires dans :" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Faut-il DCC, Ignore, Notify, etc., dans des onglets ou des fenêtres ?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "Non" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Oui" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "Parcourir pour le dossier d'enregistrement à chaque fois" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Fichiers et répertoires" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Accepter automatiquement les propositions de fichiers :" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Télécharger les fichiers vers :" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Déplacer les fichiers terminés vers :" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Enregistrer le pseudonyme dans des noms de fichiers" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Paramètres du réseau" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Obtenir mon adresse depuis le serveur IRC" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Demander au serveur IRC votre adresse réelle. À utiliser si vous avez une " +"adresse du style 192.168.*.* !" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "Adresse IP DCC :" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "" +"Prétendre que vous êtes à cette adresse quand vous proposez des fichiers." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Premier port DCC Send :" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Dernier port DCC Send :" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "Laisser les ports à zéro pour la plage complète." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Vitesse maximale des transferts de fichiers (octets par seconde)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Par envoi :" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Vitesse maximale pour un transfert" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Par téléchargement :" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Tous les transferts combinés :" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Vitesse maximale pour tous les fichiers" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Tous les téléchargements combinés :" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Alertes" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "Quand montrer une fenêtre de notification :" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "Clignoter l'icone de barre d'état" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "Quand faire clignoter la barre d'état :" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "Quand émettre un bip : " + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "Activer l'icone de barre d'état" + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "Messages en surbrillance" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" +"Les messages en surbrillance sont ceux où apparait votre pseudo, mais aussi :" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "Mots déclenchant une surbrillance :" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "Pseudo à ne pas mettre en surbrillance :" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "Pseudos à toujours mettre en surbrillance :" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Séparer les mots avec des virgules." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Messages par défaut" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Quitter :" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Quitter le canal :" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Absent :" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Absent" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Annoncer les messages d'absence" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Annoncer vos messages d'absence sur tous les canaux" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "N'afficher qu'une seule fois le message d'absence" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "N'afficher qu'une seule fois les messages de départ identiques" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Enlever la marque d'absence automatiquement" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "" +"Enlever automatiquement la marque d'absence vous concernant avant d'envoyer " +"des messages" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Paramètres avancés" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Délai de reconnexion automatique :" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Afficher les MODEs sous forme brute" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Whois sur les notifications" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" +"Envoyer un /WHOIS quand un utilisateur arrive en ligne dans votre liste de " +"notification" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Cacher les messages join/part" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Cacher par défaut les messages join/part du canal" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Ouvrir automatiquement les fenêtres DCC" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Fenêtre d'envoi" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Fenêtre de réception" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Fenêtre de bavardage" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Journalisation" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "Activer l'enregistrement des conversations" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Nom du fichier journal :" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Serveur %c=Canal %n=Réseau." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Insérer l'horodatage dans les journaux" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Format de l'horodatage du journal :" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Désactivé)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "Proxy MS (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Toutes les connexions" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "Serveur IRC uniquement" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "« DCC Get » uniquement" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Votre adresse" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Lier à :" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "N'est utile que pour les ordinateurs ayant plusieurs adresses." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Serveur mandataire (proxy)" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Nom d'hôte :" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Port :" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Type :" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Utiliser le serveur mandataire (proxy) pour :" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Authentification par le proxy" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Utiliser l'authentification (Proxy MS, HTTP ou Socks5 uniquement)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Utiliser l'authentification (HTTP ou Socks5 uniquement)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Nom d'utilisateur :" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Mot de passe :" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Sélectionner une image" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "Choisir le dossier pour le réception de fichiers" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Choisir une police" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Parcourir..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Marquer les utilisateurs identifiés par :" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Marquer les utilisateurs non identifiés par :" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "Ouvrir le dossier des données" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Choisir la couleur" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Couleurs du texte" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "Couleurs mIRC :" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Couleurs locales :" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Premier plan :" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Arrière-plan :" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Texte d'inscription" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Couleurs de l'interface" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Nouvelles données :" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Ligne de repérage :" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Nouveau message :" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Utilisateur absent :" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Surbrillance :" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Événement" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Fichier son" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Sélectionner un fichier son" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Méthode pour reproduire les sons :" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "Programme de reproduction externe :" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "Programme _externe" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_Automatique" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "_Répertoire des fichiers son :" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Fichier son :" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "_Parcourir..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "_Jouer" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Interface" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Boîte de texte" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Liste des utilisateurs" + +#: src/fe-gtk/setup.c:1703 +msgid "Channel switcher" +msgstr "Liste des canaux" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Couleurs" + +# Non traduit pour garder signification /DCC send +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Bavardage" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Général" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Son" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Réglages relatifs au réseau" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Transferts de fichiers" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Catégories" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" +"Vous ne pouvez pas placer l'arbre en haut ou en bas !\n" +"Merci de passer en mode <b>Onglets</b> dans le menu <b>Vue</b> d'abord." + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" +"Certains réglages qui ont été modifiés nécessitent un redémarrage afin " +"d'être effectifs." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*ATTENTION*\n" +"Accepter automatiquement les DCC dans votre répertoire personnel\n" +"peut être dangereux et peut être exploité. Par exemple :\n" +"quelqu'un pourrait vous envoyer un .bash_profile" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat : préférences" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Il y a eu une erreur d'analyse de la chaîne" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Ce signal n'a reçu que %d paramètres, $%d n'est pas valable" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Afficher le fichier de texte" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Éditer les événements" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ Numéro" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Charger depuis..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Tout tester" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat : récupération d'URL" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Effacer la liste" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Copier l'URL sélectionnée" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Copier" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Enregistrer la liste dans un fichier" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d ops, %d total" + +#~ msgid "CLEAR, Clears the current text window" +#~ msgstr "CLEAR, effacer la fenêtre de texte actuelle" + +#~ msgid "CYCLE, parts current channel and immediately rejoins" +#~ msgstr "CYCLE, quitter le canal actuel et y revenir immédiatement" + +#~ msgid "NOTIFY [<nick>], lists your notify list or adds someone to it" +#~ msgstr "" +#~ "NOTIFY [<pseudo>], afficher votre liste de notifications ou y ajouter " +#~ "quelqu'un" + +#~ msgid "QUERY <nick>, opens up a new privmsg window to someone" +#~ msgstr "" +#~ "QUERY <pseudo>, ouvrir une nouvelle fenêtre de message privé avec " +#~ "quelqu'un" + +#~ msgid "%C18*$t$1%O $2" +#~ msgstr "%C18*$t$1%O $2" + +#~ msgid "%C21*%O$t%C21%B$1%O%C21 $2" +#~ msgstr "%C21*%O$t%C21%B$1%O%C21 $2" + +#~ msgid "%C18%H<%H$4$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$4$1%H>%H%O$t$2" + +#~ msgid "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" +#~ msgstr "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" + +#~ msgid "%C28-%C29$1/$2%C28-%O$t$3" +#~ msgstr "%C28-%C29$1/$2%C28-%O$t$3" + +#~ msgid "$1$t$2" +#~ msgstr "$1$t$2" + +#~ msgid "%C19>%O$1%C19<%O$t$2" +#~ msgstr "%C19>%O$1%C19<%O$t$2" + +#~ msgid "%C16*%O$t$1%O" +#~ msgstr "%C16*%O$t$1%O" + +#~ msgid "%C28-%C29$1%C28-%O$t$2" +#~ msgstr "%C28-%C29$1%C28-%O$t$2" + +#~ msgid "%C22*%O$tNotify: $1 is offline ($2)." +#~ msgstr "%C22*%O$tNotification : $1 est déconnecté ($2)." + +#~ msgid "%C22*%O$tNotify: $1 is online ($2)." +#~ msgstr "%C22*%O$tNotification : $1 est connecté ($2)." + +#~ msgid "%C28*%C29$3$1%C28*$t%O$2" +#~ msgstr "%C28*%C29$3$1%C28*$t%O$2" + +#~ msgid "%C18%H<%H$3$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$3$1%H>%H%O$t$2" + +#~ msgid "%C22*%O$t$1" +#~ msgstr "%C22*%O$t$1" + +#~ msgid "%C31%H<%H$4$1%H>%H%O%C30$t$2" +#~ msgstr "%C31%H<%H$4$1%H>%H%O%C30$t$2" + +#~ msgid "PID" +#~ msgstr "PID" + +#~ msgid "US Minor Outlying Islands" +#~ msgstr "Îles mineures éloignées des États-Unis" + +#~ msgid "Direct client-to-client" +#~ msgstr "Client-vers-client direct" + +#~ msgid "Send File" +#~ msgstr "Envoyer un fichier" + +#~ msgid "Offer Chat" +#~ msgstr "Proposer une discussion" + +#~ msgid "Abort Chat" +#~ msgstr "Abandonner la discussion" + +#~ msgid "Userinfo" +#~ msgstr "Informations sur l'utilisateur" + +#~ msgid "Clientinfo" +#~ msgstr "Informations sur le client" + +#~ msgid "Time" +#~ msgstr "Délai" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "Opér" + +#~ msgid "Kill this user" +#~ msgstr "Tuer cet utilisateur" + +#~ msgid "Mode" +#~ msgstr "Mode" + +#~ msgid "Give Half-Ops" +#~ msgstr "Donner l'état de demi-opérateur" + +#~ msgid "Take Half-Ops" +#~ msgstr "Prendre l'état de demi-opérateur" + +#~ msgid "Ignore" +#~ msgstr "Ignorer" + +#~ msgid "Ignore User" +#~ msgstr "Ignorer l'utilisateur" + +#~ msgid "UnIgnore User" +#~ msgstr "Ne pas exclure l'utilisateur" + +#~ msgid "Info" +#~ msgstr "Info" + +# Non traduit pour garder signification /DCC send +#~ msgid "Who" +#~ msgstr "who" + +#~ msgid "DNS Lookup" +#~ msgstr "Résolution DNS" + +#~ msgid "Trace" +#~ msgstr "Trace" + +#~ msgid "UserHost" +#~ msgstr "Hôte de l'utilisateur" + +#~ msgid "External" +#~ msgstr "Externe" + +#~ msgid "Traceroute" +#~ msgstr "Traceroute" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "About XChat" +#~ msgstr "À propos de XChat" + +#~ msgid "Unban" +#~ msgstr "Suppr. ban." + +#~ msgid "User and Channel Statistics: %d/%d Users on %d/%d Channels" +#~ msgstr "" +#~ "Statistiques des utilisateurs et canaux : %d/%d utilisateurs sur %d/%d " +#~ "canaux" + +#~ msgid "I can't save an empty list!" +#~ msgstr "Impossible d'enregistrer une liste vide." + +#~ msgid "List display options:" +#~ msgstr "Options d'affichage de la liste :" + +#~ msgid "Minimum Users:" +#~ msgstr "Nombre minimum d'utilisateurs :" + +#~ msgid "Maximum Users:" +#~ msgstr "Nombre maximum d'utilisateurs :" + +#~ msgid "Pattern Match:" +#~ msgstr "Correspondance avec le motif :" + +#~ msgid "Regex Match:" +#~ msgstr "Correspondance avec l'expression rationnelle :" + +#~ msgid "Apply Match to:" +#~ msgstr "Appliquer la correspondance à :" + +#~ msgid "Apply" +#~ msgstr "Appliquer" + +#~ msgid "Refresh the list" +#~ msgstr "Rafraîchir la liste" + +#~ msgid "Save the list" +#~ msgstr "Enregistrer la liste" + +#~ msgid "None" +#~ msgstr "Aucun" + +#~ msgid "To" +#~ msgstr "À" + +#~ msgid "Address" +#~ msgstr "Adresse" + +#~ msgid "Started" +#~ msgstr "Démarré" + +#~ msgid "Speed limit" +#~ msgstr "Limite de vitesse" + +#~ msgid "XChat: File Receive List" +#~ msgstr "XChat : liste des fichiers reçus" + +#~ msgid "Open" +#~ msgstr "Ouvrir" + +#~ msgid "Ack" +#~ msgstr "Acquittement" + +#~ msgid "XChat: Uploads und Downloads" +#~ msgstr "XChat : envois et récupération de fichiers" + +#~ msgid "To/From" +#~ msgstr "À/De" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "Aucun autre onglet ouvert, voulez-vous quitter xchat ?" + +#~ msgid "Show join/part messages" +#~ msgstr "Afficher les messages join/part" + +#~ msgid "Color paste" +#~ msgstr "Coller la couleur" + +#~ msgid "Go to" +#~ msgstr "Aller à" + +#~ msgid "_Close Tab" +#~ msgstr "_Fermer l'onglet" + +#~ msgid "Some file transfers still active, quit xchat?" +#~ msgstr "" +#~ "Des transferts de fichiers sont toujours actifs, voulez-vous quitter " +#~ "xchat ?" + +#~ msgid "" +#~ "User Commands - Special codes:\n" +#~ "\n" +#~ "%c = current channel\n" +#~ "%m = machine info\n" +#~ "%n = your nick\n" +#~ "%t = time/date\n" +#~ "%v = xchat version\n" +#~ "%2 = word 2\n" +#~ "%3 = word 3\n" +#~ "&2 = word 2 to the end of line\n" +#~ "&3 = word 3 to the end of line\n" +#~ "\n" +#~ "eg:\n" +#~ "/cmd john hello\n" +#~ "\n" +#~ "%2 would be \"john\"\n" +#~ "&2 would be \"john hello\"." +#~ msgstr "" +#~ "Commandes utilisateur - Codes spéciaux :\n" +#~ "\n" +#~ "%c = canal actuel\n" +#~ "%m = informations concernant la machine\n" +#~ "%n = votre pseudonyme\n" +#~ "%t = heure/date\n" +#~ "%v = version de xchat\n" +#~ "%2 = mot 2\n" +#~ "%3 = mot 3\n" +#~ "&2 = du mot 2 jusqu'à la fin de la ligne\n" +#~ "&3 = du mot 3 jusqu'à la fin de la ligne\n" +#~ "\n" +#~ "ex :\n" +#~ "/cmd salut john\n" +#~ "\n" +#~ "%2 donnerait « salut »\n" +#~ "&2 donnerait « salut john »." + +#~ msgid "" +#~ "Userlist Buttons - Special codes:\n" +#~ "\n" +#~ "%a = all selected nicks\n" +#~ "%c = current channel\n" +#~ "%h = selected nick's hostname\n" +#~ "%m = machine info\n" +#~ "%n = your nick\n" +#~ "%s = selected nick\n" +#~ "%t = time/date\n" +#~ msgstr "" +#~ "Boutons Liste Utilisateurs - Codes spéciaux :\n" +#~ "\n" +#~ "%a = tous les pseudonymes sélectionnés\n" +#~ "%c = canal actuel\n" +#~ "%h = nom d'hôte du pseudonyme sélectionné\n" +#~ "%m = informations concernant la machine\n" +#~ "%n = votre pseudonyme\n" +#~ "%s = pseudonyme sélectionné\n" +#~ "%t = heure/date\n" + +#~ msgid "" +#~ "Dialog Buttons - Special codes:\n" +#~ "\n" +#~ "%a = all selected nicks\n" +#~ "%c = current channel\n" +#~ "%h = selected nick's hostname\n" +#~ "%m = machine info\n" +#~ "%n = your nick\n" +#~ "%s = selected nick\n" +#~ "%t = time/date\n" +#~ msgstr "" +#~ "Boutons de dialogue - Codes spéciaux :\n" +#~ "\n" +#~ "%a = tous les pseudonymes sélectionnés\n" +#~ "%c = canal actuel\n" +#~ "%h = nom d'hôte du pseudonyme sélectionné\n" +#~ "%m = informations concernant la machine\n" +#~ "%n = votre pseudonyme\n" +#~ "%s = pseudonyme sélectionné\n" +#~ "%t = heure/date\n" + +#~ msgid "" +#~ "CTCP Replies - Special codes:\n" +#~ "\n" +#~ "%d = data (the whole ctcp)\n" +#~ "%m = machine info\n" +#~ "%s = nick who sent the ctcp\n" +#~ "%t = time/date\n" +#~ "%2 = word 2\n" +#~ "%3 = word 3\n" +#~ "&2 = word 2 to the end of line\n" +#~ "&3 = word 3 to the end of line\n" +#~ "\n" +#~ msgstr "" +#~ "Réponses CTCP - Codes Spéciaux :\n" +#~ "\n" +#~ "%d = données (l'ensemble du CTCP)\n" +#~ "%m = informations concernant la machine\n" +#~ "%s = pseudonyme qui a envoyé le CTCP\n" +#~ "%t = heure/date\n" +#~ "%2 = mot 2\n" +#~ "%3 = mot 3\n" +#~ "&2 = du mot 2 jusqu'à la fin de la ligne\n" +#~ "&3 = du mot 3 jusqu'à la fin de la ligne\n" +#~ "\n" + +#~ msgid "_Menubar" +#~ msgstr "Barre de _menu" + +#~ msgid "_Topicbar" +#~ msgstr "Barre de _sujet" + +#~ msgid "_Userlist Buttons" +#~ msgstr "Boutons de la liste des _utilisateurs..." + +#~ msgid "_Layout" +#~ msgstr "_Disposition" + +#~ msgid "Channel List..." +#~ msgstr "Liste des canaux..." + +#~ msgid "Notify List..." +#~ msgstr "Liste de notification..." + +#~ msgid "_Close Window" +#~ msgstr "_Fermer la fenêtre" + +#~ msgid "User" +#~ msgstr "Utilisateur" + +#~ msgid "Server" +#~ msgstr "Serveur" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat : liste de notification" + +#~ msgid "C_hannels to join:" +#~ msgstr "Canaux à rejoindre :" + +#~ msgid "Resizable user list" +#~ msgstr "Liste des utilisateurs redimensionnable" + +#~ msgid "Left" +#~ msgstr "Gauche" + +#~ msgid "Right" +#~ msgstr "Droite" + +#~ msgid "Tabs Location" +#~ msgstr "Emplacement des onglets" + +#~ msgid "Show tabs at:" +#~ msgstr "Afficher les onglets en :" + +#~ msgid "(Can be a text file relative to ~/.xchat2/)." +#~ msgstr "(Peut être un fichier texte relatif à ~/.xchat2/)." + +#~ msgid "(Can be a text file relative to config dir)." +#~ msgstr "" +#~ "(Peut être un fichier texte relatif au répertoire de configuration)." + +#~ msgid "Flash taskbar on highlighted messages" +#~ msgstr "" +#~ "Faire clignoter la barre de tâches pour les messages en surbrillance" + +#~ msgid "Beep on highlighted messages" +#~ msgstr "Biper sur les messages en surbrillance" + +#~ msgid "Beep on private messages" +#~ msgstr "Biper sur les messages privés" + +#~ msgid "Beep on channel messages" +#~ msgstr "Biper sur les messages du canal" + +#~ msgid "Extra words to highlight on:" +#~ msgstr "Mots à mettre en surbrillance :" + +#~ msgid "Nicks not to highlight on:" +#~ msgstr "Pseudos à ne pas mettre en surbrillance :" + +#~ msgid "Open an irc:// url" +#~ msgstr "Ouvrir une URL irc://" + +#~ msgid "irc://server:port/channel" +#~ msgstr "irc://serveur:port/canal" + +#~ msgid "Execute a xchat command" +#~ msgstr "Exécuter une commande de xchat" + +#~ msgid "\"Command to execute\"" +#~ msgstr "« Commande à exécuter »" + +#~ msgid "Prints some text to the current tab/window" +#~ msgstr "Envoyer un texte vers la fenêtre ou l'onglet actuel" + +#~ msgid "\"Text to print\"" +#~ msgstr "« Texte à envoyer »" + +#~ msgid "Change the context to the channel" +#~ msgstr "Modifier le contexte du canal" + +#~ msgid "Change the context to the server" +#~ msgstr "Modifier le contexte du serveur" + +#~ msgid "server" +#~ msgstr "serveur" + +#~ msgid "Get some informations from xchat" +#~ msgstr "Obtenir des informations de xchat" + +#~ msgid "id" +#~ msgstr "id" + +#~ msgid "Get settings from xchat" +#~ msgstr "Obtenir la configuration de xchat" + +#~ msgid "name" +#~ msgstr "nom" + +#~ msgid "" +#~ "xchat-remote: %s\n" +#~ "Try `xchat-remote --help' for more information\n" +#~ msgstr "" +#~ "xchat-remote : %s\n" +#~ "Essayez « xchat-remote --help » pour davantage d'informations\n" + +#~ msgid "Failed to complete command" +#~ msgstr "Échec de la commande" + +#~ msgid "Failed to complete SetContext" +#~ msgstr "Échec de SetContext" + +#~ msgid "Failed to complete print" +#~ msgstr "Échec de l'impression" + +#~ msgid "Failed to complete GetInfo" +#~ msgstr "Échec de GetInfo" + +#~ msgid "Failed to complete GetPrefs" +#~ msgstr "Échec de GetPrefs" + +#~ msgid "%s doesn't exist\n" +#~ msgstr "%s n'existe pas\n" + +#~ msgid "xchat remote access" +#~ msgstr "accès à distance de xchat" + +#~ msgid "Couldn't connect to session bus : %s\n" +#~ msgstr "Impossible de se connecter au bus de session : %s\n" + +#~ msgid "%s loaded successfully!\n" +#~ msgstr "%s a été chargé avec succès.\n" + +#~ msgid "" +#~ "Set per channel options\n" +#~ "CHANOPT CONFMODE ON|OFF - Toggle conf mode/showing of join and part " +#~ "messages\n" +#~ "CHANOPT COLORPASTE ON|OFF - Toggle color paste\n" +#~ "CHANOPT BEEP ON|OFF - Toggle beep on message\n" +#~ "CHANOPT TRAY ON|OFF - Toggle tray blink on message" +#~ msgstr "" +#~ "Modifie les options du canal\n" +#~ "CHANOPT CONFMODE ON|OFF - Active ou désactive le mode conférence (qui " +#~ "n'affiche plus les personnes entrant et sortant du canal)\n" +#~ "CHANOPT COLORPASTE ON|OFF - Active ou désactive le collage de la couleur\n" +#~ "CHANOPT BEEP ON|OFF - Active ou désactive le beep lors des messages\n" +#~ "CHANOPT TRAY ON|OFF - Active ou désactive le clignotement de l'icone de " +#~ "barre d'état lors des messages" + +#~ msgid "Blink tray on message" +#~ msgstr "Faire clignoter l'icone en cas de message" diff --git a/xchat-2.8.8/po/gl.gmo b/xchat-2.8.8/po/gl.gmo new file mode 100644 index 0000000000000000000000000000000000000000..aa51385cef02084bd797ace8c5b379a4cccd2d1f GIT binary patch literal 93097 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 ZIjah9N$Q$M4-fZ?)}5j%(nwc|{|^=KCA9zm literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/po/gl.po b/xchat-2.8.8/po/gl.po new file mode 100644 index 0000000..8c9e94c --- /dev/null +++ b/xchat-2.8.8/po/gl.po @@ -0,0 +1,5707 @@ +# translation of gl.po to Galego +# This file is put in the public domain. +# +# Ignacio Casal Quinteiro <nacho.resa@gmail.com>, 2005, 2006. +msgid "" +msgstr "" +"Project-Id-Version: gl\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2006-11-03 20:27+0100\n" +"Last-Translator: Ignacio Casal Quinteiro <nacho.resa@gmail.com>\n" +"Language-Team: Galego <trasno@ceu.fi.udc.es>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Non se pode crear ~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Estou ocupado" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Abandonando" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* Executar o IRC como root é estúpido! Debería\n" +" crear unha conta de usuario e usala para conectarse.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Agardando" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Activo" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Fallou" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Rematado" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Conectar" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Abortado" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "Non se pode acceder a %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Erro" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s ofreceche \"%s\". Quere aceptar?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Non hai DCCs activos\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "Si " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "Non.." + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Está recibindo demasiados CTCP de %s, ignorando %s\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "" +"Está recibindo demasiados MSG de %s, desactivando gui_auto_open_dialog.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s conectados\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s desconectados\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Non entrou en ningún canal. Tente /join #<canal>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Non conectado. Tente /server <equipo> [<porto>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Xa está marcado como ausente: %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "Necesítase /bin/sh para executarse!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Comandos dispoñibles:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Comandos definidos polo usuario:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Compoñentes definidos polo usuario:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Escriba /HELP <comando> para máis información, ou /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Argumento descoñecido '%s' ignorado." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "Non se atopou ningún complemento.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Ese complemento négase a ser desactivado.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "" +"ADDBUTTON <nome> <acción>, engade un botón debaixo da lista de usuarios" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <cmd>, envía unha orde a todos as canles aos que se uniu" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "" +"ALLCHANL <cmd>, envía un comando a todos as canles aos que está conectado" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "" +"ALLSERV <cmd>, envía un comando a todos os servidores aos que está conectado" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<razón>], establece súa ausencia" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <máscara> [<tipo de veto>], veta a todos aqueles que concorden coa " +"máscara da canle actual. Se xa están na canle isto non os expulsa (é " +"necesario ser operador da canle)" + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <variable> [<valor>]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "CLEAR [ALL|HISTORY], Limpa o texto da ventá actual" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, Pecha a ventá/solapa actual" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" +"COUNTRY [-s] <code|wildcard>, busca o código de país, ex: au = australia" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <alcume> <mensaxe>, envía a mensaxe CTCP ao alcume, as mensaxes comúns " +"son VERSION e USERINFO" + +#: src/common/outbound.c:3516 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "" +"CYCLE [<canle>], márchase da canle actual e inmediatamente volve a entrar" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <alcume> - acepta un ficheiro ofrecido\n" +"DCC SEND [-maxcps=#] <alcume> [ficheiro] - envía un ficheiro a alguén\n" +"DCC PSEND [-maxcps=#] <alcume> [ficheiro] - envía un ficheiro a alguén " +"usando o modo pasivo\n" +"DCC LIST - amosa a lista DCC\n" +"DCC CHAT <alcume> - ofrece o DCC CHAT a alguén\n" +"DCC PCHAT <alcume> - ofrece o DCC CHAT usando modo " +"pasivo\n" +"DCC CLOSE <tipo> <alcume> <ficheiro> exemplo:\n" +" /dcc close send xoándapena ficheiro.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <alcume>, elimina o estado de semi-operador da canle ao alcume na " +"canle actual (necesita ser operador da canle)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <nome>, borra un botón de debaixo da lista de usuarios" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <alcume>, quita o estado de operador da canle ao alcume na canle actual " +"(necesita ser operador da canle)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <alcume>, quita o estado de voz do alcume na canle actual (necesita " +"ser operador da canle)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, Desconéctase do servidor" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <alcume|equipo|ip>, Busca o enderezo IP dun usuario" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <texto>, Imprime texto localmente" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <comando>, executa o comando. Se se usa a bandeira -o entón a " +"saída envíase á canle actual, se non, imprímese na caixa de texto actual" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, envía o proceso SIGCONT" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], mata un executable correndo na sesión actual. Se se indica -9 " +"o proceso é matado pola forza" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, envía ao proceso o sinal de deterse" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, envía os datos á entrada estándar do proceso" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, borra a cola de envío actual do servidor" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" +"GATE <equipo> [<porto>], utiliza un proxy a través dun equipo, o porto por " +"defecto é o 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <alcume> <contrasinal>, Mata un alcume pantasma" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" +"HOP <alcume>, da o estado de semi-operador ao alcume (necesita ser operador " +"da canle)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <contrasinal>, identifícate no servidor" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <máscara> <tipos..> <opcións..>\n" +" máscara - máscara de equipos a ignorar, ex: *!*@*.aol.com\n" +" tipos - tipos de datos a ignorar, un ou todos:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" opcións - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <alcume> [<canle>], invita a alguén a unha canle, por omisión a canle " +"actual (necesita ser operador da canle)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <canle>, entra á canle" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <alcume>, expulsa ao alcume da canle actual (necesita ser operador da " +"canle)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <alcume>, veta e logo expulsa ao alcume da canle actual (necesita " +"ser operador da canle)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, forza unha nova comprobación de retardo" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <cadea>, busca o texto no búfer" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <ficheiro>, carga un complemento ou script" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, Quita masivamente o estado de semi-operador na canle actual " +"(necesita ser operador da canle)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, Quita masivamente o estado de operador na canle actual (necesita ser " +"operador da canle)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <acción>, envía a acción á canle actual (as accións están escritas en " +"terceira persoa, como /me jumps)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, Expulsa masivamente a todos excepto a vostede na canle actual " +"(necesita ser operador da canle)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, Otorga masivamente o estado de operador da canle actual (necesita ser " +"operador da canle)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <alcume> <mensaxe>, envía unha mensaxe privado" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, Lista os alcumes da canle actual" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <alcume> <mensaxe>, Envía unha noticia CTCP" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <nome do equipo> [<porto>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <alcume>, establece seu alcume" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <alcume/canle> <mensaxe>, envía unha noticia. As noticias son un tipo " +"de mensaxe que debería ser auto publicado" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n network1[,network2,...]] [<alcume>], lista súa lista de " +"notificacións ou agrega a alguén a ela" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" +"OP <alcume>, otorga o estado de operador da canle ao alcume (necesita ser " +"operador da canle)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<canle>] [<razón>], abandona a canle, por defecto a canle actual" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <alcume | canle>, Envía pings CTCP ao alcume ou canle" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "" +"QUERY [-nofocus] <alcume>, abre unha nova ventá privada de mensaxes hacia " +"alguén" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<razón>], desconéctase do servidor actual" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <texto>, envía o texto en formato chan hacia o servidor" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<equipo>] [<porto>] [<contrasinal>], Pode ser chamado só " +"como /RECONNECT para reconectarse ao servidor actual ou con /RECONNECT ALL " +"para reconectarse a todos os servidores abertos" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<equipo>] [<porto>] [<contrasinal>], Pode ser chamado só como /" +"RECONNECT para reconectarse ao servidor actual ou con /RECONNECT ALL para " +"reconectarse a todos os servidores abertos" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <text>, envía datos en bruto hacia xchat como se estos fosen recibidos " +"desde o servidor IRC" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <texto>, envía texto hacia un obxecto da ventá actual" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <nick> [<ficheiro>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <equipo> <porto> <canle>, Conéctao e entra nunha canle" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <equipo> <porto> <canle>, Conéctao e entra nunha canle" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <equipo> [<porto>] [<contrasinal>], conéctao ao servidor, o " +"porto por defecto é 6667 para conexións normais e 9999 para conexións ssl" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <equipo> [<porto>] [<contrasinal>], conéctao ao servidor, por defecto " +"o porto é 6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <variable> [<valor>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<posición>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<tópico>], estable o tópico se se provee un, se non mostra o tópico " +"actual " + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <máscara> [<máscara>...], reincorpora as máscaras especificadas." + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <máscara> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <nome>, desactiva un complemento ou script" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, abre unha URL no seu navegador" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <alcume1> <alcume2> etc, resalta o(s) alcume(s) na lista " +"de usuarios da canle" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "" +"VOICE <alcume>, otorga o estado de voz a alguén (necesita ser operador da " +"canle)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <mensaxe>, escribe a mensaxe a todos as canles" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <mensaxe>, envía a mensaxe a todos os operadores da canle na canle " +"actual" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Uso: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"Non hai axuda dispoñible para ese comando.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Non existe ese comando.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Argumentos erróneos para o comando de usuario.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Demasiados comandos recursivos de usuario, abortando." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Comando descoñecido. Tente con /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "" +"Non hai o símbolo xchat_plugin_init; é realmente un complemento de xchat?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Está seguro de que é un servidor e porto SSL?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Non se pode resolver o nome do equipo %s\n" +"Comprobe súa configuración de IP!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Fallou o proxy traversal.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Ciclando ao seguinte servidor en %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Aviso: O conxunto de caracteres \"%s\" é descoñecido. Non se aplicará " +"conversión para a rede %s." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 engadido á lista de notificacións." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Lista de vetados:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tNon se pode entrar%C26 %B$1 %O(Está vetado)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 é agora coñecido como $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 veta a $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tCanle $1 creada en $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O quita o estado de semi-operador da canle a %C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O quita o estado de operador da canle a%C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O quita voz a%C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 establece a $2 como exento" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O da estado de semi-operador da canle a%C26 $2" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 invita a $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UCanle Usuarios Tópico" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 establece modo $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Canle $1 modos: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O da estado de operador de canle a%C26 $2" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 quita a exención a $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 quieta a invitación a $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 quita a palabra clave da canle" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 quita o límite de usuarios" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 establece palabra clave da canle como $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 establece límite da canle a $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 quita o veto a $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O dalle voz a%C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Conectado. Agora rexistrándose..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22Conectando a $1 ($2) porto $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21Conexión fallida. Erro: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tRecibiuse un CTCP $1 de $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tRecibiuse un CTCP $1 de $2 (a $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tRecibiuse un son CTCP $1 de $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tRecibiuse un son CTCP $1 de $2 (a $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tDCC CHAT a %C26$1%O abortada." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$tConexión para CHAT DCC establecida con %C26$1 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tCHAT DCC a %C26$1%O lost ($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tRecibiuse unha oferta de CHAT DCC de $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tOfrecendo CHAT DCC a $1" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tXa está ofrecendo un CHAT a $1" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$tO intento de conexión DCC $1 con%C26 $2%O fallou (erro=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tRecibiu '$1%O' de $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 Tipo A/De Estado Tamaño Pos Ficheiro " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O.%010%C22*%O" +"$tContents of packet: $2" +msgstr "" +"%C22*%O$tRecibiu unha petición DCC errónea de %C26$1%O.%010%C22*%O$tContidos " +"do paquete: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tOfrece%C26 $1%O a%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tNon existe tal ofrecemento DCC." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tRecepción DCC%C26 $2%O para%C26 $1%O abortado." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tRecepción DCC%C26 $1%O de%C26 $3%O completada %C30[%C26$4%O cps%" +"C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "" +"%C22*%O$tConexión para recepción DCC establecida con%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tRecepción DCC%C26 $1%O de%C26 $3%O fallou ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tRecepción DCC: Non se pode abrir $1 para escritura ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "" +"%C22*%O$tO ficheiro%C26 $1%C xa existe, gardándoo como%C26 $2%O no seu lugar." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Opuido retomar%C26 $2 %Cde%C26 $3%C." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tEnvío DCC%C26 $2%O a%C26 $1%O abortado." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tEnvío DCC%C26 $1%O a%C26 $2%O completado %C30[%C26$3%O cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tConexión para envío DCC establecida con%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tO envío DCC%C26 $1%O a%C26 $2%O fallou. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Oofreceu%C26 $2 %O(%C26$3 %Obytes)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oa%C26 $3 %Cparouse - abortando." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "" +"%C22*%O$tDCC $1%C26 $2 %Opara%C26 $3 %Oagotou o tempo de espera - abortando." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 borrado da lista de notificacións." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tDesconectado ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tAtopouse súa IP: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O engadido á lista de ignorados." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "Ignorar a %C26$1%O cambiou." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 Máscara PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O quitouse da lista de ignorados." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " A lista de ignorados está baleira." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "%C22*%O$tNon pode entrar%C26 %B$1 %O(Canle só para invitados)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tFoi invitado a%C26 $1%O por%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) entrou en $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$tNon pode entrar%C26 %B$1 %O(Requírese contrasinal)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 botou fora a $2 de $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$tFoi eliminado por $1 ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22Saltou a mensaxe do día (MOTD)." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 xa está en uso. Reintentando con $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "%C22*%O$tO alcume xa está en uso. Use /NICK para tentalo con outro." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tNon existe ese DCC." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tNon hai ningún proceso en execución actualmente" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tA lista de notificacións está baleira." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Lista de notificacións " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 usuarios na lista de notificacións." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tNotificación: $1 está desconectado ($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tNotificación: $1 está conectado ($3)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) abandonou $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) abandonou $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tResposta ao ping de $1: $2 segundo(s)" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tNon houbo resposta ao ping en $1 seconds, desconectando." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tXa hai un proceso en execución" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 marchouse (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 establece modos%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Mensaxes dos operadores%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tBuscando número de IP para%C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22Conectado." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22Buscando $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tDeteuse o anterior intento de conexión (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29O tópico para $1%C %C29é: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 cambiou o tópico a: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29Tópico para $1%C %C29establecido por $2%C %C29en $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tEquipo descoñecido. Equivocouse?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "%C22*%O$tNon pode entrar%C26 %B$1 %O(Chegouse ao límite de usuarios)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Usuarios en $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cestá ausente %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OFin da lista WHOIS." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O inactivo%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O inactivo%C26 $2%O, entrou:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" +"%C22*%O$t%C28[%O$1%C28] %Overdadeiro usuario@equipo%C27 $2%O, verdadeira IP%" +"C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Falando agora a $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tBotouselle de $2 por $3 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tAbandonou a canle $3" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tAbandonaste a canle $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tEstá invitado%C26 $1%O a%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tEres coñecido agora como $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "Rexistro cargado desde" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** FINALIZANDO CONEXIÓN EN %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** INICIANDO CONEXIÓN EN %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Non se pode abrir o ficheiro(s) de rexistro para escritura. Comprobe os\n" +" permisos de %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Mensaxe de ausencia" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "A mensaxe" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "O alcume da persoa que entra" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "A canle á que está entrando" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "O equipo da persoa" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Alcume" + +#: src/common/text.c:973 +msgid "The action" +msgstr "A acción" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Modo carácter" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Texto de identificación" + +#: src/common/text.c:980 +msgid "The text" +msgstr "O texto" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "A mensaxe" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Alcume antigo" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Novo alcume" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Alcume da persoa que cambiou o tópico" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Tópico" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Canle" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "O alcume do que expulsa" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "A persoa que está sendo expulsada" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "A canle" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "A razón" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "O alcume da persoa que abandona" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "O tempo" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "O creador" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Alcume" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Razón" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Equipo" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "De quén ven" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "O tempo no formato x.x (vexa debaixo)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "A canle vaise a" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "O son" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "O alcume da persoa" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "O evento CTCP" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "O alcume da persoa que establece a clave" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "A clave" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "O alcume da persoa que establece o límite" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "O límite" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "O alcume da persoa que otorgou os permisos de operador" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "O alcume da persoa que foi convertida en operador" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "O alcume da persoa que foi convertida en semi-operador" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "O alcume da persoa que otorgou os permisos de semi-operador" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "O alcume da persoa que otorgou os permisos de voz" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "O alcume da persoa que foi convertida en voz" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "O alcume da persoa que realizou o veto (banning)" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "A máscara de vetos" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "O alcume de quen eliminou a clave" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "O alcume de quen eliminou o límite" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "O alcume da persoa que revocou os permisos de operador" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "O alcume da persoa á que se lle quitou o permiso de operador" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "O alcume da persoa que quitou os permisos de semi-operador" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "O alcume da persoa á que se lle quitou os permisos de semi-operador" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "O alcume da persoa que revocou os permisos de voz" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "O alcume da persoa á que se lle quitaron os permisos de voz" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "O alcume da persoa que revocou o veto" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "O alcume da persoa que otorgou a execpción" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "A máscara de exención" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "O alcume da persoa que quitou a exención" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "O alcume da persoa que realizou a invitación" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "A máscara de invitación" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "O alcume da persoa que eliminou a invitación" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "O alcume da persoa que estableceu o modo" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "O signo do modo (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "A letra do modo" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "A canle está sendo configurada" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Nome de usuario" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Nome completo" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Membro especial da canle/\"é un operador de IRC\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Información do servidor" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Tempo inactivo" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Tempo de conexión" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Razón de ausencia" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Mensaxe" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Conta" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "Verdadeiro usuario@equipo" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "Verdadeira IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Nome da canle" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Texto" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Nome do servidor" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Alcume da persoa que lle invitou" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Usuarios" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Alcume en uso" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Tentando usar o alcume" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Porto" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Rede" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Cadea de modos" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "Enderezo IP" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "Tipo DCC" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Nome de ficheiro" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Nome do ficheiro de destino" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Nome da ruta" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Posición" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Tamaño" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "Cadea DCC" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Número de elementos de notificación" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Nome anterior do ficheiro" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Nome novo do ficheiro" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Receptor" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Máscara de equipo" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Nome de equipo" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "O paquete" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Segundos" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Alcume da persoa que foi invitada" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Máscara de veto" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Quen estableceu o veto" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Tempo de veto" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Erro ao analizar o evento %s.\n" +"Cargando o predeterminado." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"Non se pode ler o ficheiro de son:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "Porto pechado no equipo remoto" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Conexión rechazada" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Non hai ruta hacia o equipo" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Tempo de espera da conexión agotado" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Non se pode asignar ese enderezo" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Conexión reiniciada polo par" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Isla Ascensión" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Emiratos Árabes Unidos" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Afganistán" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Antiga e Barbuda" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Anguila" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Albania" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Armenia" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Antilas holandesas" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Antártida" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Arxentina" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "DNS inverso" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Samoa Americana" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Austria" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "Fiel á OTAN" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Australia" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Islas Aland" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Azerbaián" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Bosnia e Herzegovina" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Bangladesh" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Bélxica" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Bulgaria" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Bahrain" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Negocios" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Brunei Darussalam" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Bolivia" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Brasil" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Bahamas" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Bután" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Isla Bouvet" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Bielorusia" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Belice" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Canadá" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Islas Cocos" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "República Democrática do Congo" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "República Centro Africana" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Congo" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Suiza" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Costa d'Ivoire" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Islas Cook" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Chile" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Camerón" + +#: src/common/util.c:898 +msgid "China" +msgstr "China" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Colombia" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Internic Commercial" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Serbia e Montenegro" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Cuba" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Cabo Verde" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Isla Navidade" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Chipre" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "República Checa" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Alemania" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Dibuti" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Dinamarca" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Dominica" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "República Dominicana" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Arxelia" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Ecuador" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Institución Educativa" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Estonia" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Exipto" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Sahara Occidental" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "España" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Etiopía" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Unión Europea" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Finlandia" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Fixi" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Islas Malvinas" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Micronesia" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Islas Feroe" + +#: src/common/util.c:928 +msgid "France" +msgstr "Francia" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Gabón" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Gran Bretaña" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Granada" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Xeorxia" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Guaiana Francesa" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Islas da Canle da Mancha" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Gana" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Xibraltar" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Groenlandia" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Governo" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Guadalupe" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Guinea Ecuatorial" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Grecia" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "S. Xeorxia e S. Islas Sandwich" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Guinea-Bissau" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Guaiana" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Islas Heard e McDonald" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Croacia" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Haití" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Hungría" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Indonesia" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Irlanda" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Israel" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Isla de Man" + +#: src/common/util.c:959 +msgid "India" +msgstr "India" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Informativo" + +#: src/common/util.c:961 +msgid "International" +msgstr "Internacional" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Territorio Oceánico Indio Británico" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Iraq" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Irán" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Islandia" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Italia" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Xersei" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Xamaica" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Xordania" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Xapón" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Kenia" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Kyrgyzstan" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Camboia" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Comoros" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "San Kitts e Nevis" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Corea do Norte" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Corea do Sur" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Kuwait" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Islas Caimán" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Kazakhstan" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Líbano" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Santa Lucía" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Liberia" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Lesoto" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Lituania" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Luxemburgo" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Letonia" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Libia" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Marrocos" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Mónaco" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Moldavia" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "Servizo Médico de Estados Unidos" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Madagascar" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Islas Marshall" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Militar" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Macedonia" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Mongolia" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Macao" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Islas Marianas do Norte" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Martinica" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Mauritania" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Mauricio" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Maldivas" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "México" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Malasia" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Mozambique" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Namibia" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Nova Caledonia" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Níger" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Rede de Internic" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Isla Norfolk" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Nigeria" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Holanda" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Noruega" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Nova Zelanda" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Omán" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Organización sen ánimo de lucro Internic" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Panamá" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Perú" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Polinesia Francesa" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Papua Nova Guinea" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Filipinas" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Pakistán" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Polonia" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "San Pierre e Miquelón" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Porto Rico" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Territorio Palestino" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Portugal" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Paraguai" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Qatar" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Reunión" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Rumanía" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "Antiga escola de ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Federación Rusa" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Ruanda" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Arabia Saudí" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Islas Salomón" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Seychelles" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Sudán" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Suecia" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Singapur" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "Santa Helena" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Eslovenia" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Islas Svalbard e Jan Mayen" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "República de Eslovaquia" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Serra Leona" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "San Mariño" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Somalia" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Suriname" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "Santo Tomé e Principe" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Antiga URSS" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "O Salvador" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Siria" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Swaziland" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Islas Turks e Caicos" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Chad" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Territorios Franceses do Sur" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Tailandia" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Tajikistan" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Timor Oriental" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Túnez" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Turquía" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Trinidade e Tobago" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Tanzania" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Ucrania" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Reino Unido" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "Estados Unidos de América" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Uruguai" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Uzbekistan" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Cidade Estado do Vaticano" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "San Vicente e as Granadinas" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Islas Vírxenes Británicas" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "Islas Vírxenes Norteamericanas" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Islas Wallis e Futuna" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Iemen" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Maiote" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Iugoslavia" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Sudáfrica" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Zambia" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Descoñecido" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "Abrir a ventá de diálogo" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "Enviar un ficheiro" + +#: src/common/xchat.c:728 +#, fuzzy +msgid "_User Info (WhoIs)" +msgstr "Información de usuario (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +#, fuzzy +msgid "O_perator Actions" +msgstr "Opcións de operador" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Dar Op" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Tomar Op" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Dar Voz" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Tomar Voz" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Botar/Vetar" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Botar" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Vetar" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "Botar e vetar" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Abandoar a canle" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Entrar á canle..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Introduza a canle á que quere entrar:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Ligazóns do servidor" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Ping ao servidor" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Agochar versión" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Op" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "Quitar Op" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "adeus" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Introduza razón para expulsar a %s:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Enviar ficheiro" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Diálogo" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Enviar" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Chat" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Limpar" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "Non se puido conectar ao bus de sesión" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "Fallou ao completar NameHasOwner" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "Fallou ao completar o Comando" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "acceso remoto" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "complemento para acceso remoto usando DBUS" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Non se puido conectar ao bus de sesión: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Fallou ao adquirir %s: %s\n" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "_Acerca de" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Un cliente de IRC multiplataforma" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Mapa de caracteres" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "Non conectado." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Debe seleccionar algún vetado." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "Está seguro de que quere eliminar tódolos vetos en %s?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Máscara" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "De" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Data" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Só podes abrir a ventá da lista de vetados nunha solapa da canle." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: Lista de vetados (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Eliminar" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Achicar" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Refrescar" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Amosando %d/%d usuarios en %d/%d canles." + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Seleccione un nome de ficheiro de saída" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "_Entrar á canle" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "_Copiar o nome da canle" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "Copiar texto do _tema" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: Lista de Canles (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "_Procurar" + +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "_Descargar lista" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "Gardar _lista..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "Amosar só:" + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "canles con" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "a" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "usuarios." + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "Procurar en:" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "Nome da canle" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "Buscar tipo..." + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "Busca simple" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "Patrón de coincidencia (Comodíns)" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "Expresión regular" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Buscar:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Enviar ficheiro a %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Ese ficheiro non se pode continuar." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"Non se pode acceder ao ficheiro: %s\n" +"%s.\n" +"Non é posible continuar." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"O ficheiro no directorio de descarga é máis grande que o ficheiro ofrecido. " +"Non é posible continuar." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "Non se pode reanudar o mesmo ficheiro de dúas persoas." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: Cargas e descargas" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Estado" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Ficheiro" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "Tempo" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Ambos" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Subidas" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "Descargas" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Detalles" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Ficheiro:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "Enderezo:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Abortar" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Aceptar" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Continuar" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Abrir cartafol..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: Lista de Chat DCC" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Recibido" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Enviado" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "Tempo de comezo" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*NOVO*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "EDÍTAME" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Nome" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Comando" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Mover arriba" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Mover abaixo" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Cancelar" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Gardar" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Engadir novo" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Borrar" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Ordenar" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Axuda" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "Non reconectarse ao servidor automaticamente" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "Usar un directorio de configuración diferente" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "Non cargar automaticamente ningún complemento" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "Amosar o directorio de complementos activados automaticamente" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "Amosar o directorio de configuración de usuario" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Abrir unha URL irc://servidor:porto/canle" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Executar comando:" + +#: src/fe-gtk/fe-gtk.c:132 +#, fuzzy +msgid "Open URL or execute command in an existing XChat" +msgstr "Abrir URL nun XChat existente" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Iniciar minimizado. Nivel 0=Normal 1=Iconificado 2=Bandexa" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "nivel" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Amosar a información da versión" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"Fallou ao abrir a fonte:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "O búfer de busca está baleiro.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d bytes" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Cola de envío de rede: %d bytes" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"A acción Executar Comando executa os datos en Data 1 coma se foran escritos " +"na caixa de texto onde premeu a secuencia de teclas. Non obstante pode " +"conter comandos de texto (os cales enviaranse á canle ou persoa), ou " +"comandos de usuario. Cando se executen todos os caracteres en Data 1 son " +"usados para delimitar comandos separados de ese modo é posible executar máis " +"dun comando. Se quere un \\ no texto de execución actual execúteo e logo " +"prema Intro \\\\" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"O comando Cambiar Páxina cambia entre as páxinas do caderno. Inicialice Data " +"1 coa páxina á que desexa cambiar. Se Data 2 está configurado para calquera " +"entón o cambio será relativo á posición actual." + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"O comando Inserir no Búfer insertará o contido de Data 1 na entrada onde a " +"secuencia de teclas foi pulsada na posicón actual do cursor" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"O comando Desprazar Páxina despraza o control de texto enriba ou abaixo nun " +"páxina ou nunha liña. Establece Data 1 desprazarase hacia arriba, abaixo +1 " +"ou -1." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"O comando Establecer búfer establece a entrada onde a secuencia de teclas " +"foi introducida aos contidos de Data 1" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"O comando Último Comando establece a entrada para conter o último comando " +"introducido á igual que premer a tecla enriba na liña de comandos" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"O comando Seguinte Comando establece a entrada que conteña o seguinte " +"comando ingresado á igual que ao premer a tecla abaixo na liña de comandos" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Este comando cambia o texto na entrada para completar un alcume incompleto " +"ou un comando. Se Data 1 está establecido entón ao premer dúas veces a tecla " +"TAB sobre unha cadea seleccionará o último alcume, non o seguinte." + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Este comando despraza hacia arriba e abaixo a lista de alcumes. Se Data 1 " +"está establecido a calquera entón desprazarase hacia arriba, se non " +"desprazarase hacia abaixo" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Este comando comproba a última palabra introducida na entrada contra a lista " +"de remprazos e a rempraza se atopa unha coincidencia" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Este comando move unha vez solapa superior á esquerda" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Este comando move unha vez solapa superior á dereita" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Este comando move a familia actual de solapas á esquerda" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Este comando move a familia actual de solapas á dereita" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "Colocar a liña de entrada no historial pero sen enviala ao servidor" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "Houbo un erro cargando a configuración das combinacións de teclas" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<ningún>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Mod" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Tecla" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Acción" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: Atallos de teclado" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Maiús" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Data 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Data 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Erro ao abrir o ficheiro de configuración de teclas\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Nome de tecla %s descoñecido no ficheiro de configuración de combinacións de " +"teclas\n" +"Carga abortada, por favor corrixa %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Acción descoñecida %s no ficheiro de configuración de combinacións de " +"teclas\n" +"Carga abortada, Por favor corrixa %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Esperábase unha liña de datos (comezando con Dx{:|!}) pero obtúbose:\n" +"%s\n" +"\n" +"Carga abortada, Por favor corrixa %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"O ficheiro de configuración da combinacións de teclas está corrupto\n" +"Por favor corrixa %s/keybindings.conf\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "Non se pode escribir nese ficheiro." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Non se pode ler ese ficheiro." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Esa máscara xa existe." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Privado" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Noticia" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Invitar" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Non ignorar" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Introduza a máscara que quere ignorar:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: Lista de ignorados" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Estatísticas de ignorados:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Canle:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privado:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Noticia:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Invitar:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "Engadir..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "O nome da canle é demasiado corto, ténteo de novo." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: Conexión completada" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "Conexión a %s completada." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"Na ventá da lista de servidores, non se introduciu ningunha canle (sala de " +"chat) para entrar automaticamente nesta rede." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "Que quere facer despois?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "_Nada, unireime a unha canle máis tarde." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "_Entrar nesta canle:" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Se coñece o nome da canle na que quere entrar, introdúcea aquí." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "A_brir a ventá de lista canles." + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "Obter a lista de canles pode levar un ou dous minutos." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "Amosar este diálogo _sempre despois de conectar." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Diálogo con" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "O tópico para %s é: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Non está establecido ningún tópico" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"Este servidor ten todavía %d canles ou diálogos asociados. Pechalos todos?" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "Quere saír de XChat?" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "Non preguntar a seguinte vez." + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Está conectado a %i redes IRC." + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "Está seguro de que quere saír?" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "Algunhas transferencias de ficheiros seguen activas." + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "_Minimizar á bandexa" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Inserir atributo ou código de cor" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Grosa</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Subraiado</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Normal" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Cores 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Cores 8-15" + +#: src/fe-gtk/maingui.c:1612 +#, fuzzy +msgid "_Settings" +msgstr "C_onfiguración" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "Ocultar mensaxes de entrada e saída" + +#: src/fe-gtk/maingui.c:1625 +#, fuzzy +msgid "_Extra Alerts" +msgstr "Alertas" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "Bip ao recibir unha mensaxe" + +#: src/fe-gtk/maingui.c:1628 +#, fuzzy +msgid "Blink Tray _Icon" +msgstr "Intermitencia da icona da bandexa en:" + +#: src/fe-gtk/maingui.c:1629 +#, fuzzy +msgid "Blink Task _Bar" +msgstr "Intermitencia da barra de tarefas en:" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +#, fuzzy +msgid "_Detach" +msgstr "_Separar solapa" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "_Pechar" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "O límite de usuarios debe ser un número!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Protección do tópico" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Non hai mensaxes externas" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Secreto" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Só para invitados" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Moderado" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Lista de vetados" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Palabra clave" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Límite de usuarios" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Mostrar/Ocultar lista de usuarios" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"Imposible establecer o fondo transparente!\n" +"\n" +"Pode estar usando un xestor de ventás\n" +"que non está soportado actualmente.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Introduza o novo alcume:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Equipo descoñecido" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Nome real:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Usuario:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "País: " + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Servidor:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "Quedan %u minutos" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Última mensaxe: " + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Mensaxe de ausencia: " + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"A barra de menú está agochada. Pode amosala outra vez premendo F9 ou " +"premendo co botón dereito do rato na parte branca da área de texto principal." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Abrir ligazón no navegador" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Copiar a ligazón seleccionada" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Entrar á canle" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Invitar canle" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Ciclar canle" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: Menú de usuario" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Editar este menú..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Obter lista de canles..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Comandos de usuario - Códigos especiais:\n" +"\n" +"%c = canle actual\n" +"%m = info da máquina\n" +"%n = seu alcume\n" +"%t = hora/data\n" +"%v = versión de xchat\n" +"%2 = palabra 2\n" +"%3 = palabra 3\n" +"&2 = palabra 2 ata o fin de liña\n" +"&3 = palabra 3 ata o fin de liña\n" +"\n" +"ex:\n" +"/cmd john hello\n" +"\n" +"%2 podería ser \"john\"\n" +"&2 podería ser \"john hello\"." + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Botóns da lista de usuarios - Códigos especiais:\n" +"\n" +"%a = todos os alcumes seleccionados\n" +"%c = canle actual\n" +"%e = nome da rede actual\n" +"%h = nome do equipo do alcume seleccionado\n" +"%m = información da máquina\n" +"%n = seu alcume\n" +"%s = alcume seleccionado\n" +"%t = hora/data\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Botóns de diálogo - Códigos especiais:\n" +"\n" +"%a = todos os alcumes seleccionados\n" +"%c = canle actual\n" +"%e = nome da rede actual\n" +"%h = nome do equipo do alcume seleccionado\n" +"%m = información da máquina\n" +"%n = seu alcume\n" +"%s = alcume seleccionado\n" +"%t = hora/data\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"Respostas CTCP - Códigos especiais:\n" +"\n" +"%d = datos (o ctcp completo)\n" +"%e = nome da rede actual\n" +"%m = información da máquina\n" +"%s = alcume de quen enviou o ctcp\n" +"%t = hora/data\n" +"%2 = palabra 2\n" +"%3 = palabra 3\n" +"&2 = palabra 2 do fin de liña\n" +"&3 = palabra 3 do fin de liña\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"Manexadores de URL -Códigos especiais:\n" +"\n" +"%s = a cadea URL\n" +"\n" +"Poñer un ! enfrente do comando indica\n" +"que debería enviarse hacia un shell\n" +"en vez de hacia XChat" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: Comandos definidos polo usuario" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: Menú emerxente da lista de usuarios" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Reemprazar con" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: Reemprazar" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: Manexadores de URL" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: Botóns da lista de usuarios" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: Botóns de diálogo" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: Respostas CTCP" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "Li_sta de redes..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "_Novo" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Solapa de servidor..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Solapa de canle..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Ventá de servidor..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Ventá de canle..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "_Cargar script ou complemento..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "_Saír" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "_Ver" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "Barra de _menú" + +#: src/fe-gtk/menu.c:1592 +msgid "_Topic Bar" +msgstr "Barra de _tópico" + +#: src/fe-gtk/menu.c:1593 +msgid "_User List" +msgstr "Lista de _usuarios" + +#: src/fe-gtk/menu.c:1594 +msgid "U_serlist Buttons" +msgstr "Botóns de lista de u_suarios" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "Botóns de m_odo" + +#: src/fe-gtk/menu.c:1597 +msgid "_Channel Switcher" +msgstr "Cambiar _canles" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "_Solapas" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "Á_rbore" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "Configuración de _rede" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Apagar" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Gráfico" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "_Servidor" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "_Desconectar" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "_Reconectar" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "Entrar á canle..." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "Entrar á canle..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Ausencia marcada" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "Menú de _usuario" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "C_onfiguración" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "Preferencias" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Avanzado" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Remprazar automaticamente..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "Respostas CTCP..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Botóns de diálogo..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Atallos de teclado..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Textos de eventos..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "Manexadores de URL..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Comandos de usuario..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Botóns de lista de usuarios..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Lista de usuarios emerxente..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_Ventá" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Lista de vetados..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Mapa de caracteres..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Chat directo..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Transferencias de ficheiros..." + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "Lista de vetados..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Lista de ignorados..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Complementos e Scripts..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Rexistro crú..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "Capturador de URL..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Reiniciar marcador de liña" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "_Limpar texto" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Buscar texto..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Gardar texto..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "A_xuda" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "_Contidos" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "_Acerca de" + +#: src/fe-gtk/menu.c:2147 +#, fuzzy +msgid "_Attach" +msgstr "_Ventá de adxunto" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Visto por última vez" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Desconectado" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Nunca" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "fai %d minutos" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Conectado" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Introduza o alcume a engadir:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "Notificar nestas redes:" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "XChat: Lista de ignorados" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "Abrir diálogo" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "XChat: Conectado a %u redes e %u canles" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "_Restaurar" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "_Ocultar" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "_Intermitencia en" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "Mensaxe de canle" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "Mensaxe privada" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "Resaltar mensaxe" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "Ausente" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat: Resaltar mensaxe de %s (%s)" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat: %u mensaxes resaltadas, a última de: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat: Nova mensaxe pública de %s (%s)" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat: %u novas mensaxes públicas" + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat: Mensaxe privada desde %s (%s)" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "XChat: %u mensaxes privadas, a última de: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat: Ofrécese ficheiro desde: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "XChat: %u ficheiro ofrecidos, o último de: %s (%s)" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Versión" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Descrición" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Seleccione un Complemento ou Script a cargar" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: Complementos e Scripts" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "_Cargar..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "_Desactivar" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Gardar como..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: Rexistro crú (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Limpar rexistro crú" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "A ventá que abreu esta busca non existe máis." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "" + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: Buscar" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "_Coincidir maiúsculas" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "Buscar para _atrás" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "_Procurar" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Nova rede" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Realmente desexa eliminar a rede \"%s\" e todos os seus servidores?" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "Canle" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: Lista de Canles (%s)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "Contrasinal:" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "E_ditar" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "O nome de usuario e nome verdadeiro non poden estár en branco." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: Editar %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Servidor para %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Conectar só ao servidor seleccionado" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "" +"Non ciclar a non ser que todos os servidores aos que está conectando fallen." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Seus detalles" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Usar información global de usuario" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "_Alcume:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Segunda elección:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "Nome de _usuario:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "Nome _verdadeiro:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Conectando" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Conectarse automaticamente a esta rede ao inicio" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "Usar un servidor proxy" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "Usar SSL para todos os servidores desta rede" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Aceptar certificado SSL inválido" + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "Abandonar a canle:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "Canles ás que entrar, separados por comas, non por espacios!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Comando de conexión:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Comando extra para executar despois de conectar. Se necesita máis que un, " +"establece isto a LOAD -e <nome de ficheiro>, onde <nome de ficheiro> é un " +"ficheiro de texto de comandos a executar." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Contrasinal do servidor de alcumes:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Se o teu alcume require dun contrasinal, introdúceo aquí. Non todas as redes " +"IRC soportan isto." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Contrasinal do servidor:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Contrasinal para o servidor, se duda, déixeo en branco." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Conxunto de caracteres:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: Lista de redes" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Información de usuario" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Terceira elección:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Redes" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "Saltar a lista de servidores ao inicio" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "_Editar..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "_Ordenar" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "C_onectar" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Apariencia da caixa de texto" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Fonte:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Imaxe de fondo:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Liñas de desprazamento:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Alcumes con cores" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Dar a cada persoa unha cor diferente no IRC" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Indentar alcumes" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Xustificar alcumes á dereita." + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Fondo transparente" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Mostrar liña de marcado" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Inserir unha liña vermella despois do último texto lido." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Configuración de transparencia" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Vermello:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Verde:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Azul:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Inserción de hora:" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Activar inserción de hora" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Formato de inserción de hora:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Vexa a páxina do manual de strftime para máis detalles" + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Caixa de entrada" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Usar a fonte e cores da caixa de texto" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Comprobar ortografía" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Completado de alcume" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "Completar alcume automaticamente (sen a tecla TAB)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Sufixo de completado para o alcume:" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "Completado de alcume ordenado:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Códigos de caixa de entrada" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Interpretar %nnn como un valor ASCII" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Interpretar %C, %B como Cor, Grosa etc" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, Operadores primeiro" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, Operadores abaixo" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Desordenada" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Enriba" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Abaixo" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Oculto" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Lista de usuarios" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Mostrar os nomes dos equipos na lista de usuarios" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Lista de usuarios ordenada por:" + +#: src/fe-gtk/setup.c:205 +msgid "Show user list at:" +msgstr "Mostrar lista de usuarios a:" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Rastreo de ausencia" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "" +"Impresión do estado de ausencia de usuarios e marcalo cunha cor diferente" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "Nas canles máis pequenas que:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Acción facendo dobre pulsación" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Ventás" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Solapas" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Sempre" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Só retomar solapas" + +#: src/fe-gtk/setup.c:242 +msgid "Tree" +msgstr "Árbore" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "Cambiar tipo:" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Abrir unha solapa extra para as mensaxes do servidor" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Abrir unha mensaxe extra para as noticias do servidor" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "Abrir unha solapa nova cando reciba unha mensaxe privada" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Ordenar solapas en orde alfabético" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "Solapas pequenas" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Enfocar as novas solapas:" + +#: src/fe-gtk/setup.c:258 +msgid "Show channel switcher at:" +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Reducir etiquetas das solapas a:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "letras." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Solapas ou Ventás" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Abrir canles en:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Abrir diálogos en:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Abrir utilidades en:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Abrir DCC, Ignorar, Notificar etc, en solapas ou ventás?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "Non" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Si" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Ficheiros e Directorios" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Aceptar ofrecementos de ficheiros:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Descargar ficheiros en:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Mover ficheiros completados a:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Gardar o alcume nos nomes de ficheiros" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Configuracións de rede" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Obter o meu enderezo do servidor IRC" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Preguntarlle ao servidor IRC o teu enderezo verdadeiro. Usa isto se tes un " +"enderezo 192.168.*.*!" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "Enderezo IP DCC:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Pretender estar neste enderezo cando está ofrecendo ficheiros." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Primer porto de envío DCC:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Último porto de envío DCC:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "Deixar os portos en cero para o rango completo." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Velocidade máxima de transferencia de ficheiros (bytes por segundo)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Unha subida:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Velocidade máxima para unha transferencia" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Unha descarga:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Todas as subidas mesturadas:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Velocidade máxima para todos os ficheiros" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Todas as descargas mesturadas:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Alertas" + +#: src/fe-gtk/setup.c:333 +#, fuzzy +msgid "Show tray balloons on:" +msgstr "Amosar solapas:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "Intermitencia da icona da bandexa en:" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "Intermitencia da barra de tarefas en:" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "Emitir un son en:" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "Activar icona da bandexa do sistema" + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "Mensaxes resaltadas" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" +"As mensaxes resaltadas son nas que se menciona o seu alcume, pero tamén:" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "Palabras adicionais para resaltar:" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "Os alcumes a non resaltar:" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "Os alcumes para resaltar sempre:" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Separar palabras múltiples con comas." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Mensaxes predeterminadas" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Saír:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Abandonar a canle:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Ausente:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Ausente" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Anunciar mensaxes de ausencia" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Anunciar súas mensaxes de ausencia a todas as canles" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Mostrar ausencia unha soa vez" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Mostrar mensaxes idénticas de ausencia unha soa vez" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Desmarcar ausencia automaticamente" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Desmarcarse como ausente antes de enviar mensaxes" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Configuración avanzada" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Retraso de reconexión automática:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Mostrar os MODOs en forma crú" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Executar Whois nas notificacións" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "Envía un /WHOIS cando se conecta un usuario da lista de notificacións" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Ocultar mensaxes de entrada e saída" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Ocultar mensaxes de entrada/saída da canle por defecto" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Abrir automaticamente ventás DCC" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Ventá de envío" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Ventá de recepción" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Ventá de Chat" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Rexistros" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "Habilitar o rexistro de conversacións" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Nome do ficheiro de rexistro:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Servidor %c=Canle %n=Rede." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Inserir marcas de data/hora nos rexistros" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Formato de data/hora para o rexistro:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Desactivado)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Tódalas conexións" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "Só servidor IRC" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Seu enderezo" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Ligar a:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "Só é útil para computadoras con enderezos múltiples." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Servidor proxy" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Nome do equipo:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Porto:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Tipo:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Usar proxy para:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Autenticación de Proxy" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Usar autenticación (só MS Proxy, HTTP ou Socks5)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Usar autenticación (só HTTP ou Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Nome de usuario:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Contrasinal:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Seleccionar un ficheiro de imaxe" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "Seleccionar cartafol de descarga" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Seleccionar fonte" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Examinar..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Marcar usuario identificados con:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Marcar usuario non identificados con:" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "Abrir cartafol de datos" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Seleccionar cor" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Cores do texto" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "Cores de mIRC:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Cores locais:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Primeiro plano:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Fondo:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Texto marcado" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Cores da interface" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Dato novo:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Liña marcada:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Nova mensaxe:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Usuario ausente:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Resaltado:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Evento" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Ficheiro de son" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Seleccionar un ficheiro de son" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Método de reproducción de son:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "_Programa de reproducción externo de son:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "Programa _externo" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_Automático" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "_Directorio de ficheiros de son:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Ficheiro de son:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "_Examinar..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "_Reproducir" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Interface" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Caixa de texto" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Lista de usuarios" + +#: src/fe-gtk/setup.c:1703 +#, fuzzy +msgid "Channel switcher" +msgstr "canles con" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Cores" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Chateo" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Xeral" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Son" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Configuración de rede" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Transferencias de ficheiros" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Categorías" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" +"Algunhas opcións que cambiou requiren un reinicio para ter efecto " +"completamente." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*AVISO*\n" +"Aceptar automaticamente DCC ao seu directorio de inicio\n" +"pode ser peligroso e é explotable. Por exemplo:\n" +"Alguén pode enviarlle un ficheiro .bash_profile" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: Preferencias" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Houbo un erro analizando a cadea" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Esta sinal só analizou %d argumentos, $%d é inválido" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Imprimir ficheiros de texto" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Editar eventos" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ Número" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Cargar de..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Probar todo" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: Capturador de URL" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Limpar lista" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Copiar a URL seleccionada" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Copiar" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Gardar lista nun ficheiro" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d ops, %d total" + +#~ msgid "Direct client-to-client" +#~ msgstr "Cliente a cliente directamente" + +#~ msgid "Send File" +#~ msgstr "Enviar ficheiro" + +#~ msgid "Offer Chat" +#~ msgstr "Ofrecer Chat" + +#~ msgid "Abort Chat" +#~ msgstr "Abortar Chat" + +#~ msgid "Userinfo" +#~ msgstr "Información do usuario" + +#~ msgid "Clientinfo" +#~ msgstr "Información do cliente" + +#~ msgid "Time" +#~ msgstr "Tempo" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "Operador" + +#~ msgid "Kill this user" +#~ msgstr "Matar este usuario" + +#~ msgid "Mode" +#~ msgstr "Modo" + +#~ msgid "Give Half-Ops" +#~ msgstr "Dar Semi-Op" + +#~ msgid "Take Half-Ops" +#~ msgstr "Tomar Semi-Op" + +#~ msgid "Ignore" +#~ msgstr "Ignorar" + +#~ msgid "Ignore User" +#~ msgstr "Ignorar Usuario" + +#~ msgid "UnIgnore User" +#~ msgstr "Non ignorar usuario" + +#~ msgid "Info" +#~ msgstr "Info" + +#~ msgid "Who" +#~ msgstr "Who" + +#~ msgid "DNS Lookup" +#~ msgstr "Busca DNS" + +#~ msgid "Trace" +#~ msgstr "Rastrear" + +#~ msgid "UserHost" +#~ msgstr "Máquina do usuario" + +#~ msgid "External" +#~ msgstr "Programas externos" + +#~ msgid "Traceroute" +#~ msgstr "Rastrear ruta" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "About XChat" +#~ msgstr "Acerca de XChat" + +#~ msgid "Blink tray on message" +#~ msgstr "Intermitencia da bandexa en mensaxe" + +#~ msgid "Show join/part messages" +#~ msgstr "Mostrar mensaxe de entrada/saída da canle" + +#~ msgid "Color paste" +#~ msgstr "Pegar cor" + +#~ msgid "_Close Tab" +#~ msgstr "_Pechar solapa" + +#~ msgid "Channel List..." +#~ msgstr "Lista de canles..." + +#~ msgid "Notify List..." +#~ msgstr "Lista de notificacións..." + +#~ msgid "_Close Window" +#~ msgstr "_Pechar Ventá" + +#~ msgid "User" +#~ msgstr "Usuario" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: Lista de notificacións" + +#~ msgid "C_hannels to join:" +#~ msgstr "C_anles para entrar:" + +#~ msgid "Unban" +#~ msgstr "Quitar veto" + +#, fuzzy +#~ msgid "Channel Switcher" +#~ msgstr "canles con" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "Non hai solapas abertas, saír de xchat?" + +#~ msgid "_Layout" +#~ msgstr "_Distribución" + +#, fuzzy +#~ msgid "Quit..." +#~ msgstr "Saír:" + +#~ msgid "Resizable user list" +#~ msgstr "Lista de usuarios redimensionable" + +#~ msgid "Left" +#~ msgstr "Esquerda" + +#~ msgid "Right" +#~ msgstr "Dereita" + +#, fuzzy +#~ msgid "Above user list" +#~ msgstr "Lista de usuarios redimensionable" + +#~ msgid "US Minor Outlying Islands" +#~ msgstr "Islas Americanas Menores do Exterior" + +#, fuzzy +#~ msgid "File Offer" +#~ msgstr "Transferencias de ficheiros" + +#~ msgid "Flash taskbar on highlighted messages" +#~ msgstr "Destello da barra de tarefas nas mensaxes resaltadas" + +#, fuzzy +#~ msgid "Flash taskbar on private messages" +#~ msgstr "Destello da barra de tarefas nas mensaxes resaltadas" + +#~ msgid "Beep on highlighted messages" +#~ msgstr "Bip en mensaxes resaltadas" + +#~ msgid "Beep on private messages" +#~ msgstr "Bip en mensaxes privadas" + +#~ msgid "Beep on channel messages" +#~ msgstr "Bip en mensaxes de canle" + +#~ msgid "%s loaded successfully!\n" +#~ msgstr "%s cargado correctamente!\n" + +#~ msgid "Go to" +#~ msgstr "Ir a" + +#~ msgid "(Can be a text file relative to ~/.xchat2/)." +#~ msgstr "(Pode ser un ficheiro de texto relativo a ~/.xchat2/)." + +#~ msgid "(Can be a text file relative to config dir)." +#~ msgstr "" +#~ "(Pode ser un ficheiro de texto relativo ao directorio de configuración)." diff --git a/xchat-2.8.8/po/hu.gmo b/xchat-2.8.8/po/hu.gmo new file mode 100644 index 0000000000000000000000000000000000000000..863c75433fbc029af812cfb61a39054e8675ba56 GIT binary patch literal 100903 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 JTn6}j{x^OzbOrzb literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/po/hu.po b/xchat-2.8.8/po/hu.po new file mode 100644 index 0000000..636341a --- /dev/null +++ b/xchat-2.8.8/po/hu.po @@ -0,0 +1,5705 @@ +# Hungarian translation of X-Chat +# Copyright (C) 1999-2000, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# +# Horvath Szabolcs <horvathsz@penguinpowered.com>, 1999-2000, 2005. +# Kata Konkoly <kata@linuxforum.hu>, 2005. +# Gabor Kelemen <kelemeng@gnome.hu>, 2005, 2006, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.8.6\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2009-08-25 12:11+0100\n" +"Last-Translator: rezso <rezso@rezso.net>\n" +"Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Nem lehet létrehozni a ~/.xchat2 könyvtárat" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Elfoglalt vagyok" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Távozom" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* Rootként IRC-zni nem okos dolog! Hozzon létre\n" +" egy felhasználót és úgy lépjen be.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Várakozás" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Aktív" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Sikertelen" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Kész" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Kapcsolódás" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Megszakítva" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "%s nem érhető el\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Hiba" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s felajánlja a következőt: \"%s\". El kívánja fogadni?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Nincs aktív DCC\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "IGEN" + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "NEM" + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "%s CTCP floodol, %s figyelmen kívül lesz hagyva\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "%s MSG floodol, automatikus ablakmegnyitás kikapcsolva.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s online\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s offline\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "" +"Nincs benn egy csatornán sem. Próbálja meg a /join #<csatorna> parancsot.\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Nincs kapcsolat. Próbálja ezt: /server <host> [<port>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Már megjelölve távollévőként: %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "Már megjelölve visszatértként.\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "A /bin/sh-ra szükség van a futáshoz!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Elérhető parancsok:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Felhasználó által megadott parancsok:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Bővítmény által megadott parancsok:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "" +"További információkért adja ki a /HELP <parancs> vagy /HELP -l parancsot" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "\"%s\" ismeretlen argumentum, mellőzve." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "Nem található ilyen bővítmény.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Ezt a bővítményt nem lehet kikapcsolni.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <név> <akció>, a felhasználólista alá helyez el egy gombot" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <parancs>, parancs küldése minden csatornára, ahol benn van" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHANL <parancs>, parancs küldése minden csatornára, ahol benn van" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <parancs>, parancs küldése minden kiszolgálóra, ahol benn van" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<indoklás>], távollét beállítása" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "BACK, visszatértnek (nem távollévőnek) jelöli" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <maszk> [<kitiltástípus>], kitilt mindenkit, akire illik a maszk az " +"adott csatornán. Ha már benn vannak a csatornán, nem rúgja ki őket (ehhez " +"chanop-jog kell)" + +#: src/common/outbound.c:3506 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <változó> [<érték>]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "" +"CLEAR, [ALL|HISTORY] törli az aktuális szövegablakot vagy a parancstörténetet" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, bezárja az aktuális ablakot/fület" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" +"COUNTRY [-s] <kód|helyettesítőkarakter>, országkód keresése, például au = " +"Ausztrália" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <becenév> <üzenet>, CTCP üzenet küldése a becenévnek, gyakori üzenetek: " +"VERSION és USERINFO" + +#: src/common/outbound.c:3516 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "" +"CYCLE [<csatorna>], kilép és azonnal visszalép az aktuális vagy a megadott " +"csatornára" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <becenév> - küldött fájl elfogadása\n" +"DCC SEND [-maxcps=#] <becenév> [fájl] - fájlküldés\n" +"DCC PSEND [-maxcps=#] <becenév> [fájl] - fájlküldés passzív módban\n" +"DCC LIST - DCC lista mutatása\n" +"DCC CHAT <becenév> - DCC CHAT meghívás\n" +"DCC PCHAT <becenév> - DCC CHAT meghívás passzív módban\n" +"DCC CLOSE <típus> <becenév> <fájl> DCC átvitel bezárása; példa:\n" +" /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <becenév>, elveszi a fél-op státuszt az adott csatornán a becenévtől " +"(op-jog szükséges)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <név>, gomb törlése a felhasználólista alól" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <becenév>, op-jog megvonása a becenévtől az adott csatornán (op-jog " +"szükséges)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <becenév>, megvonja a voice státuszt a becenévtől az adott csatornán " +"(op-jog szükséges)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, bontja a kapcsolatot a kiszolgálóval" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <becenév|gép|ip>, a felhasználó IP számának keresése" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <szöveg>, szöveg helyi megjelenítése" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <parancs>, parancs futtatása. Ha -o -val használja, a kimenet az " +"aktuális csatornára megy, egyébként az aktuális szövegdobozba" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, SIGCONT küldése a folyamatnak" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], futó exec kilövése az aktuális munkafolyamatban. Ha a -9 " +"kapcsolóval használja, a folyamat SIGKILL szignált kap" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, SIGSTOP küldése a folyamatnak" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, adatok küldése a folyamat szabványos bemenetére" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, törli az aktuális kiszolgáló küldési várakozási sorát" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" +"GATE <kiszolgáló> [<port>], a kiszolgáló beállítása proxyként, az " +"alapértelmezett portszám a 23" + +# FIXME +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <becenév> <jelszó>: Egy ghost-olt becenév kilövése" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <becenév>, fél-op státuszt ad a becenévnek (op-jog szükséges)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <jelszó>, azonosítja a becenév-kiszolgáló felé" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <maszk> <típusok..> <opciók..>\n" +" maszk - a mellőzendő gépek maszkja, például *!*@*.aol.com\n" +" típusok - a mellőzendő adatok típusa, a következők legalább egyike:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" opciók - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <becenév> [<csatorna>], meghívja a becenevet egy csatornára, " +"alapértelmezésben az aktuálisra (op-jog szükséges)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <csatorna>, belépés a csatornára" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <becenév>, kirúgja a becenevet az adott csatornáról (op-jog szükséges)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <becenév>, kitiltja, majd kirúgja a becenevet az aktuális " +"csatornáról (op-jog szükséges)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, új lag ellenőrzés kikényszerítése" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <karakterlánc>, karakterlánc keresése a pufferben" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <fájl>, bővítmény vagy parancsfájl betöltése" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, minden fél-op-tól elveszi a fél-op jogot az adott csatornán (op-jog " +"szükséges)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, minden op-tól elveszi az op-jogot az adott csatornán (op-jog " +"szükséges)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <akció>, az adott tevékenységet az aktuális csatornára küldi (az igék 3. " +"személyben írandók, például: /me ugrál)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, tömegesen kirúg mindenkit az adott csatornáról, kivéve Önt (op-jog " +"szükséges)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, tömeges op-jog adása mindenkinek az adott csatornán (op-jog szükséges)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <becenév> <üzenet>, privát üzenet küldése" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, felsorolja az aktuális csatornán lévő beceneveket" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <becenév> <üzenet>, CTCP figyelmeztetés küldése" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <kiszolgálónév> [<port>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <becenév>, beállítja a becenevét" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <becenév/csatorna> <üzenet>, figyelmeztetés küldése . A " +"figyelmeztetés olyan üzenet, amire automatikusan reagálni kell" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n hálózat1[,hálózat2,...]] [<becenév>], megjeleníti az értesítési " +"listát vagy hozzáad valakit" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <becenév>, op-jogot ad a becenévnek (op-jog szükséges)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" +"PART [<csatorna>] [<indoklás>], kilép a csatornáról, alapértelmezésben az " +"aktuálisról" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <becenév | csatorna>, CTCP-pingeli a becenevet vagy a csatornát" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "" +"QUERY [-nofocus] <becenév>, új privát üzenetablak megnyitása az adott " +"becenévhez" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<indoklás>], bontja a kapcsolatot az aktuális kiszolgálóval" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <szöveg>, nyers formában küldi a szöveget a kiszolgálóra" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<kiszolgáló>] [<port>] [<jelszó>], Ugyanúgy használható, " +"mint a /RECONNECT (újracsatlakozás az aktuális kiszolgálóhoz) vagy /" +"RECONNECT ALL (minden nyitott kiszolgálóhoz csatlakozik)" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<host>] [<port>] [<jelszó>], Ugyanúgy használható, mint a /" +"RECONNECT (újracsatlakozás az aktuális kiszolgálóhoz) vagy /RECONNECT ALL " +"(minden nyitott kiszolgálóhoz csatlakozik)" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <szöveg>, nyers adatok küldése az XChatnek, mintha az irc kiszolgálótól " +"érkezett volna" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <szöveg>, szöveget küld az aktuális ablakban lévő objektumba" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <becenév> [<fájl>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <host> <port> <csatorna>, csatlakozik és belép egy adott " +"csatornára" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN <host> <port> <csatorna>, csatlakozik és belép az adott csatornára" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <host> [<port>] [<jelszó>], csatlakozik a kiszolgálóhoz, az " +"alapértelmezett port 6667 normál kapcsolathoz, és 9999 SSL kapcsolathoz" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <host> [<port>] [<jelszó>], csatlakozik az adott kiszolgálóhoz, az " +"alapértelmezett port a 6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <változó> [<érték>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<pozíció>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<téma>], beállítja a témát, ha megadja, vagy megmutatja az aktuális " +"témát" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" +"\n" +"TRAY -f <időkorlát> <fájl1> [<fájl2>] Villogjon a tálcán a két ikon között.\n" +"TRAY -f <fájlnév> A tálca beállítása rögzített ikonra.\n" +"TRAY -i <szám> Tálca villogtatása belső ikonnal.\n" +"TRAY -t <szöveg> A tálca gyorstippjének beállítása.\n" +"TRAY -b <cím> <szöveg> A tálca feliratának beállítása." + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <maszk> [<maszk>...], kitiltás feloldása az adott maszkokra." + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <maszk> [QUIET] az adott maszk mellőzésének megszüntetése" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <név>, kikapcsol egy bővítményt vagy parancsfájlt" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, megnyitja az adott URL-t a böngészőben" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <nick1> <nick2> stb, kiemeli a beceneve(ke)t a csatorna " +"felhasználólistájában" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <becenév>, voice státuszt ad valakinek (op-jog szükséges)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <üzenet>, kiírja az üzenetet az összes csatornára" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <üzenet>, elküldi az üzenetet az aktuális csatorna összes opjának" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Használat: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"Ehhez a parancshoz nincs súgó.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Nincs ilyen parancs.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Hibás argumentum a felhasználói parancs mellett.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Túl sok rekurzív felhasználói parancs, kilépek." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Ismeretlen parancs. Próbálja a /help parancsot\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "" +"Nincs xchat_plugin_init szimbólum; biztos, hogy ez egy XChat bővítmény?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Biztos, hogy ez SSL-re képes kiszolgáló és port?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Nem lehet feloldani a(z) %s gépnevet\n" +"Ellenőrizze az IP-beállításait!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Nem sikerült átjutni a proxyn.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Ugrás a következő kiszolgálóra %s múlva...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Figyelem: a \"%s\" karakterkészlet ismeretlen. Nem lesz konverzió a(z) %s " +"hálózaton." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 hozzáadva az értesítési listához." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Tiltólista:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tNem lehet csatlakozni ehhez:%C26 %B$1 %O(Ki van tiltva)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 mostantól $2-ként ismert" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 kitiltja $2-t" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tA(z) $1 csatorna létrehozva ekkor: $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O elvette a fél-operátori státuszt ettől:%C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O elvette az operátori státuszt ettől:%C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O elvette a voice jogot ettől:%C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 kivételt állít be erre: $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O fél-operátor jogot ad ennek:%C26 $2" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 meghívja $2-t" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UCsatorna Felhasználók Téma" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 beállítja a(z) $2$3 $4 módot" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22 $1 csatorna módjai: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O operátorjogot ad ennek:%C26 $2" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 elveszi a kivételezést erről: $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 visszavonja a meghívást ettől: $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 eltávolítja a csatorna kulcsszót" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 eltávolítja a felhasználói limitet" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 a csatorna kulcsszót beállítja erre: $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 a csatorna limitet beállítja erre: $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 eltávolítja a kitiltást erről: $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O voice jogot ad ennek:%C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Kapcsolódás megtörtént. Belépés folyamatban..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22Kapcsolódás ehhez: $1 ($2) port $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21Kapcsolódás sikertelen. A hiba: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tCTCP $1 érkezett ettől: $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tCTCP $1 érkezett ettől: $2 ($3 számára)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tCTCP Sound $1 érkezett ettől: $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tCTCP $1 érkezett ettől: $2 ($3 számára)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tDCC CHAT megszakadt ezzel:%C26$1%O." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC CHAT kapcsolat létrejött ezzel: %C26$1 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tDCC CHAT %C26$1%O felé megszakadt ($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tDCC CHAT ajánlat érkezett ettől: $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$t $1 DCC CHAT meghívása" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tMár zajlik $1 CHAT meghívása" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "" +"%C22*%O$tDCC $1 kapcsolódási kísérlet %C26 $2%O felé sikertelen (Hiba=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$t\"$1%O\" érkezett ettől: $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 Típus Kinek/Kitől Állapot Méret Pos Fájl " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O.%010%C22*%O" +"$tContents of packet: $2" +msgstr "" +"%C22*%O$tHibás formátumú DCC kérés érkezett ettől: %C26$1%O.%010%C22*%O$tA " +"csomag tartalma: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tFelkínálva ez: %C26 $1%O ennek: %C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tNincs ilyen DCC ajánlat." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV%C26 $2%O megszakítva ehhez: %C26 $1%O." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC RECV%C26 $1%O ettől: %C26 $3%O befejeződött %C30[%C26$4%O cps%" +"C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC RECV kapcsolat létrejött ezzel:%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV%C26 $1%O ettől:%C26 $3%O sikertelen ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV: Nem lehet megnyitni $1-t írásra ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "%C22*%O$tA %C26 $1%C fájl már létezik, helyette %C26 $2%O-ként mentem." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Okéri %C26 $2 %C folytatását innen:%C26 $3%C." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC SEND%C26 $2%O ennek:%C26 $1%O megszakítva." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC SEND%C26 $1%O ennek:%C26 $2%O befejeződött %C30[%C26$3%O cps%" +"C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC SEND kapcsolat létrejött ezzel:%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND%C26 $1%O %C26 $2%O felé sikertelen. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Ofelkínálta ezt:%C26 $2 %O(%C26$3 %Obájt)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oehhez:%C26 $3 %Celakadt - megszakítom." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "" +"%C22*%O$tDCC $1%C26 $2 %Oehhez:%C26 $3 %O túllépte az időkorlátot - " +"megszakítom." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 törölve az értesítési listáról." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tKapcsolat bontva ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tAz IP címe: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O hozzáadva a mellőzési listához." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "%C26$1%O mellőzése megváltoztatva." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 Kiszolgálómaszk PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O eltávolítva a mellőzési listából." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr "A figyelmen kívül hagyási lista üres." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "" +"%C22*%O$tNem lehet csatlakozni ehhez: %C26 %B$1 %O(A csatornára csak " +"meghívással lehet belépni)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tMeghívást kapott ide:%C26 $1%O ettől:%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) csatlakozott ide: $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$tNem lehet csatlakozni ehhez:%C26 %B$1 %O(Kulcsszó szükséges)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 kirúgta $2-t innen: $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$t$1 kill-t küldött Önre ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD átugorva." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1-t már használja valaki. Újra próbálom ezzel: $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$tEz a becenév már használatban van. A /NICK segítségével próbálhat " +"ki másikat." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tNincs ilyen DCC." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tJelenleg nem fut semmilyen folyamat" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tAz értesítési lista üres." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Értesítési lista " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 felhasználó van az értesítési listán." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tÉrtesítés: $1 offline ($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tÉrtesítés: $1 online ($3)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) kilépett innen: $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) kilépett innen: $3 (%O%C23$4)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tPing válasz innen: $1: $2 másodperc" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tNincs ping válasz $1 másodperc óta, kapcsolat bontva." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tMár fut egy folyamat" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 kilépett (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 beállítja a módokat %B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallop-ok%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tKeresem a következő IP címét:%C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22Kapcsolódva." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22Keresem ezt: $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tAz előző kapcsolódási kísérlet leállítva(pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29A(z) $1%C %C29 témája ez: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 megváltoztatta a témát erre: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29$1%C %C29 témáját $2%C %C29 beállította ekkor: $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tIsmeretlen gépnév. Talán elgépelte?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "" +"%C22*%O$tNem lehet csatlakozni ehhez:%C26 %B$1 %O(Felhasználói limit elérve)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Felhasználók ezen: $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Ctávol van %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OWHOIS lista vége." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O tétlen%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O tétlen%C26 $2%O, bejelentkezett:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %Ovalós user@host%C27 $2%O, valós IP%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Most itt beszélget: $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tKi lett rúgva innen: $2, $3 által($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tKilépett a(z) $3 csatornáról" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tKilépett a(z) $3 csatornáról (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tMeghívta %C26 $1%O-t erre: %C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tMostantól ezen a néven ismert: $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "Napló betöltve" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** NAPLÓZÁS BEFEJEZÉSE EKKOR: %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** NAPLÓZÁS KEZDETE EKKOR: %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Nem lehet írni a naplófájl(oka)t. Ellenőrizze a\n" +" jogosultságokat a(z) %s/xchatlogs fájlon" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Bal oldali üzenet" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Jobb oldali üzenet" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "A csatlakozó személy beceneve" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "A csatorna, amelyre belép" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "A személy gépe" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Becenév" + +#: src/common/text.c:973 +msgid "The action" +msgstr "A művelet" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Mód karakter" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Azonosított szöveg" + +#: src/common/text.c:980 +msgid "The text" +msgstr "A szöveg" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Az üzenet" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Régi becenév" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Új becenév" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "A témát megváltoztató személy beceneve" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Téma" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Csatorna" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "A kirúgó beceneve" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "A kirúgott személy" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "A csatorna" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "Az indoklás" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "A kilépő személy beceneve" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "Az idő" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "A létrehozó" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Becenév" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Indoklás" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Kiszolgáló" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "Kitől jött" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "Az idő x.x formátumban (lásd lejjebb)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "A csatorna, amelyre megy" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "A hang" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "A személy beceneve" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "A CTCP esemény" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "A személy beceneve, aki a kulcsot beállította" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "A kulcs" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "A személy beceneve, aki beállította a limitet" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "A limit" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "Annak a beceneve, aki az op-jogot adta" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "Annak a beceneve, aki op-jogot kapott" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "Annak a beceneve, aki fél-op jogot kapott" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "Annak a beceneve, aki a fél-op jogot adta" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "Annak a beceneve, aki voice jogot adott" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "Annak a beceneve, aki voice jogot kapott" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "Annak a beceneve, aki a kitiltást végezte" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "A kitiltásmaszk" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "Annak a beceneve, aki eltávolította a kulcsot" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "Annak a beceneve, aki eltávolította a limitet" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "Annak a beceneve, aki elvette az op-jogot" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "Annak a beceneve, akitől elvették az op-jogot" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "Annak a beceneve, aki elvette a fél-op jogot" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Annak a beceneve, akitől elvették a fél-op jogot" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "Annak a beceneve, aki megvonta a voice jogot" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "Annak a beceneve, akitől megvonták a voice jogot" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "Annak a beceneve, aki a kitiltást visszavonta" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "Annak a beceneve, aki a kivételezést beállította" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "A kivételezés maszkja" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "Annak a beceneve, aki a kivételezést eltávolította" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "Annak a beceneve, aki a meghívást küldte" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "A meghívás maszkja" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "Annak a beceneve, aki a meghívást visszavonta" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "Annak a beceneve, aki a módot beállította" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "A mód előjele (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "A mód betűjele" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "A csatorna, amelyre beállítják" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Felhasználónév" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Teljes név" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Csatornatagság/\"IRC operátor\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Kiszolgálóinformáció" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Tétlenség ideje" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Bejelentkezés ideje" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Távollét oka" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Üzenet" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Fiók" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "Valós user@host" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "Valós IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Csatorna neve" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Szöveg" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Kiszolgáló neve" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Annak a beceneve, aki meghívta" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Felhasználók" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "A becenév használatban van" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Próbált becenév" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Port" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Hálózat" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Módok karakterlánca" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "IP cím" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "DCC típus" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Fájlnév" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Cél fájlnév" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Elérési út" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Pozíció" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Méret" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "DCC karakterlánc" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Az értesítési bejegyzések száma" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Régi fájlnév" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Új fájlnév" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Címzett" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Kiszolgálómaszk" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Kiszolgálónév" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "A csomag" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "másodperc" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Annak a beceneve, akit meghívtak" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Kitiltásmaszk" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Ki állította be a kitiltást" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Kitiltás ideje" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Hiba a(z) %s esemény feldolgozásakor.\n" +"Az alapértelmezés kerül betöltésre." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"Nem lehet olvasni ezt a hangfájlt:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "A távoli gép lezárta a foglalatot" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Kapcsolódás elutasítva" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Nincs útvonal a kiszolgálóhoz" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Időtúllépés miatt a kapcsolat megszakadt" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Ezt a címet nem lehet kiosztani" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "A kapcsolatot a túloldali gép visszaállította" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Ascension-sziget" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Egyesült Arab Emirátusok" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Afganisztán" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Antigua és Barbuda" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Albánia" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Örményország" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Holland Antillák" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Antarktisz" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Argentína" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "Fordított DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Amerikai Szamoa" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Ausztria" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "NATO" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Ausztrália" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Aland-szigetek" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Azerbajdzsán" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Bosznia-Hercegovina" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Banglades" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Belgium" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Bulgária" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Bahrein" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Üzleti" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Brunei Szultánátus" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Bolívia" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Brazília" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Bahama-szigetek" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Bhután" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Bouvet-sziget" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Fehéroroszország" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Belizé" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Kanada" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Kókusz-szigetek" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "Kongói Demokratikus Köztársaság" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "Közép-Afrikai Köztársaság" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Kongó" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Svájc" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Elefántcsont-part" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Cook-szigetek" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Chile" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Kamerun" + +#: src/common/util.c:898 +msgid "China" +msgstr "Kína" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Kolumbia" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Internic kereskedelmi" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Szerbia és Montenegro" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Kuba" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Cape Verde" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Karácsony-szigetek" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Ciprus" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "Cseh Köztársaság" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Németország" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Dzsibuti" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Dánia" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Dominika" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "Dominikai Köztársaság" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Algéria" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Ecuador" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Oktatási intézmény" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Észtország" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Egyiptom" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Nyugat-Szahara" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Spanyolország" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Etiópia" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Európai Unió" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Finnország" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Fidzsi" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Falkland-szigetek" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Micronesia" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Faroe-szigetek" + +#: src/common/util.c:928 +msgid "France" +msgstr "Franciaország" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Nagy-Britannia" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Grúzia" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Francia Guyana" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Brit Csatorna-szigetek" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Ghána" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Gibraltár" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Grönland" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Kormányzat" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Guadeloupe" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Egyenlítői Guinea" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Görögország" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Szt. György- és S. Sandwich-szigetek" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Bissau-Guinea" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Guyana" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Heard- és McDonald-szigetek" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Horvátország" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Magyarország" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Indonézia" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Írország" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Izrael" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Man szigete" + +#: src/common/util.c:959 +msgid "India" +msgstr "India" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Információs tartomány" + +#: src/common/util.c:961 +msgid "International" +msgstr "Nemzetközi" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Brit Indiai-óceáni terület" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Irak" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Irán" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Izland" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Olaszország" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Jamaica" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Jordánia" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Japán" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Kenya" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Kirgizisztán" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Kambodzsa" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Comore-szigetek" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "St. Kitts és Nevis" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Észak-Korea" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Dél-Korea" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Kuvait" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Kajmán-szigetek" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Kazahsztán" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Laosz" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Libanon" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Saint Lucia" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Libéria" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Litvánia" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Luxemburg" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Lettország" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Líbia" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Marokkó" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Monaco" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Moldova" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "Egyesült Államok (egészségügy)" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Madagaszkár" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Marshall-szigetek" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Katonai" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Macedónia" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Mianmar" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Mongólia" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Makaó" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Északi Mariana-szigetek" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Martinique" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Mauritánia" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Málta" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Mauritius" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Maldív-szigetek" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Mexikó" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Malajzia" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Mozambik" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Namíbia" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Új-Kaledónia" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Internic hálózat" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Norfolk-szigetek" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Nigéria" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Hollandia" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Norvégia" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Nepál" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Új-Zéland" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Internic non-profit szervezet" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Francia Polinézia" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Pápua Új-Guinea" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Fülöp-szigetek" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Pakisztán" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Lengyelország" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "St. Pierre és Miquelon" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Puerto Rico" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Palesztin terület" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Portugália" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Paraguay" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Katar" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Réunion" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Románia" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "Régimódi ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Orosz Föderáció" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Ruanda" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Szaúd-Arábia" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Salamon-szigetek" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Seychelle-szigetek" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Szudán" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Svédország" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Szingapúr" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "Szt. Ilona" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Szlovénia" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard és Jan Mayen szigetek" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Szlovák Köztársaság" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Szenegál" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Szomália" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Suriname" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "Sao Tome és Principe" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Korábbi Szovjetunió" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Szíria" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Szváziföld" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Turks és Caicos szigetek" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Csád" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Déli Francia Területek" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Togó" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Thaiföld" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Tadzsikisztán" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Kelet-Timor" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Türkmenisztán" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Tunézia" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Törökország" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Trinidad és Tobago" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Tajvan" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Tanzánia" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Ukrajna" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Egyesült Királyság" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "Amerikai Egyesült Államok" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Uruguay" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Üzbegisztán" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Vatikán Állam" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "St. Vincent és a Grenadines" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Brit Virgin-szigetek" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "USA Virgin-szigetek" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Wallis és Futuna szigetek" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Szamoa" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Jemen" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Jugoszlávia" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Dél-Afrika" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Zambia" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Ismeretlen" + +#: src/common/xchat.c:726 +msgid "_Open Dialog Window" +msgstr "Párbeszédablak _nyitása" + +#: src/common/xchat.c:727 +msgid "_Send a File" +msgstr "_Fájl küldése" + +#: src/common/xchat.c:728 +msgid "_User Info (WhoIs)" +msgstr "Felhasz_nálóinformációk (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "Hozzá_adás a barátok listájához" + +#: src/common/xchat.c:730 +msgid "O_perator Actions" +msgstr "O_perátori műveletek" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Op-jog adása" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Op-jog elvétele" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Voice jog adása" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Voice jog elvétele" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Kirúgás/kitiltás" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Kirúgás" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Kitiltás" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "Kirúgás és kitiltás" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Csatorna elhagyása" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Csatlakozás csatornához..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Írja be a csatorna nevét, amelyhez csatlakozni akar:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Kiszolgáló hivatkozások" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Kiszolgáló pingelése" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Verzió elrejtése" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Op" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "viszlát" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Adja meg %s kirúgásának okát:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Fájlküldés" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Párbeszéd" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Küldés" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Csevegés" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Összes törlése" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "Nem lehet csatlakozni a munkamenet buszhoz" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "Nem sikerült a NameHasOwner befejezése" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "Nem sikerült a parancs végrehajtása" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "távoli elérés" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "DBUS-t használó bővítmény távoli eléréshez" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Nem lehet csatlakozni a munkamenetbuszhoz: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "A(z) %s lekérése nem sikerült: %s\n" + +#: src/fe-gtk/about.c:100 +msgid "About " +msgstr "Névjegy" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Többplatformos IRC-kliens" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Karaktertábla" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "Nincs kapcsolat." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Ki kell választania néhány kitiltást." + +# ?#: ../src/fe-gtk/banlist.c:206 +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "Valóban el kívánja távolítani az összes kitiltást a következőn: %s?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Maszk" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "Kitől" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Dátum" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Csak a csatornafülön nyithatja meg a kitiltáslistát." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: Kitiltáslista (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Eltávolítás" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Levágás" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Frissítés" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "%d/%d felhasználó megjelenítése %d/%d csatornán." + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Válasszon egy kimeneti fájlnevet" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "Belépés _csatornára" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "Csatornané_v másolása" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "Té_ma szövegének másolása" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: Csatornalista (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "_Keresés" + +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "_Lista letöltése" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "List_a mentése..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "Megjelenítés:" + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "csak a(z)" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "és" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "közötti felhasználószámú csatornák." + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "Keresés:" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "Csatorna neve" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "Keresés típusa:" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "Egyszerű keresés" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "Mintaillesztés (helyettesítő karakterek)" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "Reguláris kifejezés" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Keresés:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Fájl küldése %s számára" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Ezt a fájlt nem lehet folytatni." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"Nem lehet hozzáférni a következő fájlhoz: %s\n" +"%s.\n" +"A folytatás nem lehetséges." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"A letöltési könyvtárban lévő fájl nagyobb, mint a felkínált. A folytatás nem " +"lehetséges." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "Nem lehet ugyanazt a fájlt két embertől folytatni." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: Feltöltések és letöltések" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Állapot" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Fájl" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Mindkettő" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Feltöltések" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "Letöltések" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Részletek" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Fájl:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "Cím:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Megszakítás" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Elfogadás" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Folytatás" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Mappa megnyitása..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: DCC csevegés lista" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Bejövő" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Elküldött" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "Kezdés időpontja" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*ÚJ*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "SZERKESZT" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Név" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Parancs" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Mozgatás fel" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Mozgatás le" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Mégsem" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Mentés" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Új hozzáadása" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Törlés" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Rendezés" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Súgó" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "Ne csatlakozzon újra automatikusan a kiszolgálókra" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "Másik konfigurációs könyvtár használata" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "Ne töltsön be automatikusan egy bővítményt sem" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "Mutassa az automatikusan betöltődő bővítménykönyvtárat" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "Mutassa a felhasználói konfigurációs könyvtárat" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Egy irc://kiszolgáló:port/csatorna URL megnyitása" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Parancs végrehajtása:" + +#: src/fe-gtk/fe-gtk.c:132 +msgid "Open URL or execute command in an existing XChat" +msgstr "URL megnyitása vagy parancs végrehajtása meglévő XChatben" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" +"Indítás minimalizálva. Lehetséges értékek: 0=normál, 0=ikonméret 2=tálca" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "szint" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Mutassa a verzióinformációt" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"Nem sikerült a következő betűkészlet megnyitása:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "A keresési puffer üres.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d bájt" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Hálózati küldési sor: %d bájt" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"A \"Parancs futtatása\" művelet úgy futtatja az Adat1-ben lévő adatokat, " +"mintha abba a beviteli mezőbe írta volna be, ahol lenyomta a " +"billentyűsorozatot. Ezért tartalmazhat szöveget (ami majd a csatornára/" +"személynek megy), parancsokat vagy felhasználói parancsokat. Futtatáskor az " +"összes \\n karakter, ami az Adat1-ben van, a parancsok elválasztására " +"szolgál, tehát több parancsot is lehet egymás után futtatni. Ha \\-t akar " +"elhelyezni a szövegben, használja így: \\\\" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"Az \"Oldal váltása\" parancs a noteszlapok közt vált. Állítsa be az Adat1-et " +"arra az oldalra, amelyre váltani akar. Ha az Adat2 bármire be van állítva, " +"akkor a váltás a jelenlegi pozícióhoz képest megy végbe" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"A \"Beszúrás a pufferbe\" parancs az Adat1 tartalmát szúrja be az aktuális " +"kurzorpozícióba, ahol a billentyűkombinációt lenyomta" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"Az \"Oldal görgetése\" parancs a szöveget egy sorral vagy oldallal felfelé " +"vagy lefelé görgeti. Az Adat1-ben állítsa be, hogy Fel, Le, +1 vagy -1." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"A \"Puffer beállítása\" parancs a billentyűlenyomáskor bevitt adatokat adja " +"hozzá az Adat1 tartalmához" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"Az \"Utolsó parancs\" az utoljára bevitt parancsot állítja be - ugyanaz, " +"mint amikor egy parancsértelmezőben megnyomja a felfelé nyilat" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"A \"Következő parancs\" a következő bevitt parancsot jeleníti meg - " +"ugyanaz, mint amikor egy parancsértelmezőben megnyomja a lefelé nyilat" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Ez a parancs kiegészíti a megkezdett becenevet vagy parancsot. Ha az Adat1 " +"be van állítva, akkor a TAB kétszeri lenyomása az utolsó becenevet választja " +"ki, nem a következőt" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Ez a parancs fel- vagy lefelé görgeti a becenevek listáját. Ha az Adat1 " +"bármire be van állítva, akkor felfelé görget, egyéb esetben lefelé" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Ez a parancs összehasonlítja az utolsó bevitt szót a cserelista tartalmával " +"és lecseréli, ha egyezést talál" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Ez a parancs eggyel balra mozgatja az első fület" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Ez a parancs eggyel jobbra mozgatja az első fület" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Ez a parancs az aktuális fülek csoportját balra mozgatja" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Ez a parancs az aktuális fülek csoportját jobbra mozgatja" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "" +"A beviteli mező tartalmát hozzáadja az előzményekhez, de nem küldi el a " +"kiszolgálónak" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "Hiba történt a billentyűkombinációk betöltésekor" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<nincs>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Mod" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Billentyű" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Művelet" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: Gyorsbillentyűk" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Adat1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Adat2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Hiba a billentyű-konfigurációs fájl megnyitásakor \n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Ismeretlen billentyűnév a billentyű-konfigurációs fájlban: \"%s\"\n" +"Betöltés megszakítva, kérem javítsa a(z) %s/keybindings.conf fájlt\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Ismeretlen művelet a billentyű-konfigurációs fájlban: \"%s\"\n" +"Betöltés megszakítva, kérem javítsa a(z) %s/keybindings fájlt\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"A rendszer adatsort várt, (kezdet Dx{:|!}) de ezt kapta:\n" +"%s\n" +"\n" +"Betöltés megszakítva, kérem javítsa ki a(z) %s/keybindings fájlt\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"A gyorsbillentyű-fájl megsérült, betöltés megszakítva\n" +"Kérem javítsa a(z) %s /keybindings.conf fájlt\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "Nem lehet írni ezt a fájlt." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Nem lehet olvasni ezt a fájlt." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Ez a maszk már létezik." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Privát üzenet" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Figyelmeztetés" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Meghívás" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Mellőzés megszüntetése" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Írja be a mellőzendő maszkot:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: Mellőzési lista" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Mellőzési statisztika:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Csatorna:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privát:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Figyelmeztetés:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Meghívás:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "Hozzáadás..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "A csatornanév túl rövid, próbálja újra." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: A kapcsolat kész" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "A kapcsolódás kész a következőhöz: %s." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"A Kiszolgálólista ablakban nincs megadva olyan csatorna (csevegőszoba), " +"amelyhez ezen a hálózaton automatikusan csatlakozni kellene." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "Mit szeretne tenni ezután?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "_Semmit, később lépek be egy csatornára." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "_Belépés erre a csatornára:" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Ha tudja a csatorna nevét, amelyre be kíván lépni, adja meg itt." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "_Csatornalista ablak megnyitása." + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "A csatornalista lekérése eltarthat pár percig." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "_Mindig jelenjen meg ez a párbeszédablak csatlakozás után." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Párbeszéd" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "A(z) %s témája: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Nincs beállítva téma" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"Ehhez a kiszolgálóhoz még %d csatorna vagy párbeszéd van társítva. Az " +"összeset bezárja?" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "Kilép az XChatből?" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "Ne kérdezze újra." + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "%i IRC hálózathoz van kapcsolódva." + +# ?#: ../src/fe-gtk/banlist.c:206 +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "Biztos, hogy ki szeretne lépni?" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "Még vannak aktív fájlátvitelek." + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "_Minimalizálás a tálcára" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Attribútum vagy színkód beszúrása" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Félkövér</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Aláhúzott</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Normál" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Színek 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Színek 8-15" + +#: src/fe-gtk/maingui.c:1612 +msgid "_Settings" +msgstr "_Beállítások" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "_Naplózás" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "Visszatekintés új_ratöltése" + +#: src/fe-gtk/maingui.c:1617 +msgid "_Hide Join/Part Messages" +msgstr "A csatlakozási/távozási üzenetek elre_jtése" + +#: src/fe-gtk/maingui.c:1625 +msgid "_Extra Alerts" +msgstr "_Extra figyelmeztetések" + +#: src/fe-gtk/maingui.c:1627 +msgid "Beep on _Message" +msgstr "Üzenetkor _csipog" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "_Tálcaikon villogtatása" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "_Feladatsáv villogtatása" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +msgid "_Detach" +msgstr "_Leválasztás" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "Be_zárás" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "A felhasználó-limit egy szám legyen!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Témavédelem" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Nincs külső üzenet" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Titkos" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Csak meghívásra" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Moderált" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Kitiltási lista" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Kulcsszó" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Felhasználó-limit" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Felhasználólista mutatása/elrejtése" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"Nem lehet átlátszó hátteret beállítani!\n" +"\n" +"Lehet, hogy olyan ablakkezelőt használ, amely\n" +"ezt jelenleg még nem támogatja.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Írja be az új becenevet:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Ismeretlen gépnév" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Valódi név:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Felhasználó:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "Ország:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Kiszolgáló:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "%u perccel ezelőtt" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Utolsó üzenet:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Távol üzenet:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "%d becenév kiválasztva." + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"A menüsáv most rejtett. Újra megjelenítheti az F9 megnyomásával vagy a fő " +"szövegterület egy üres részén való jobbkattintással." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Hivatkozás megnyitása böngészőben" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Kijelölt hivatkozás másolása" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Belépés csatornára" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Kilépés a csatornáról" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Ki- és belépés a csatornára" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "_Eltávolítás a Kedvencek közül" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "Hozzá_adás a Kedvencekhez" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: Felhasználói menü" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Ezen menü szerkesztése..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Csatornalista lekérése..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Felhasználói parancsok - Különleges kódok:\n" +"\n" +"%c = jelenlegi csatorna\n" +"%e = jelenlegi hálózat neve\n" +"%m = gép infó\n" +"%n = az Ön beceneve\n" +"%t = idő/dátum\n" +"%v = xchat verzió\n" +"%2 = 2. szó\n" +"%3 = 3. szó\n" +"&2 = 2. szótól a sor végéig\n" +"&3 = 3. szótól a sor végéig\n" +"\n" +"például:\n" +"/cmd john hello\n" +"\n" +"%2 ez lesz: \"john\"\n" +"&2 ez lesz: \"john hello\"." + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Felhasználólista gombok - Különleges kódok:\n" +"\n" +"%a = az összes kijelölt becenév\n" +"%c = a jelenlegi csatorna\n" +"%e = jelenlegi hálózat neve\n" +"%h = a kijelölt becenév gépének neve\n" +"%m = gép infó\n" +"%n = az Ön beceneve\n" +"%s = kijelölt becenév\n" +"%t = idő/dátum\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Párbeszédgombok - Különleges kódok:\n" +"\n" +"%a = az összes kijelölt becenév\n" +"%c = a jelenlegi csatorna\n" +"%e = jelenlegi hálózat neve\n" +"%h = a kijelölt becenév gépének neve\n" +"%m = gép infó\n" +"%n = az Ön beceneve\n" +"%s = kijelölt becenév\n" +"%t = idő/dátum\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"CTCP válaszok - Különleges kódok:\n" +"\n" +"%d = adatok (a teljes ctcp)\n" +"%e = jelenlegi hálózat neve\n" +"%m = gép infó\n" +"%s = a ctcp-t küldő becenév\n" +"%t = idő/dátum\n" +"%2 = 2. szó\n" +"%3 = 3. szó\n" +"&2 = 2. szótól a sor végéig\n" +"&3 = 3. szótól a sor végéig\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"URL kezelés - Speciális kódok:\n" +"\n" +"%s = az URL karakterlánc\n" +"\n" +"Egy ! -t tegyen a parancs elejére,\n" +"ha egy shellbe kell küldeni,\n" +"és nem az XChatnek" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: Felhasználó által megadott parancsok" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: Felhasználólista helyi menü" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Csere" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: Csere" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: URL-ek kezelése" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: Felhasználólista gombok" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: Párbeszédgombok" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: CTCP  válaszok" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "_Hálózatlista..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "Ú_j" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Kiszolgáló fül..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Csatorna fül..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Kiszolgáló ablak..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Csatorna ablak..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "_Bővítmény vagy parancsfájl betöltése..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "_Kilépés" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "_Nézet" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "_Menüsáv" + +#: src/fe-gtk/menu.c:1592 +msgid "_Topic Bar" +msgstr "_Témasáv" + +#: src/fe-gtk/menu.c:1593 +msgid "_User List" +msgstr "_Felhasználólista" + +#: src/fe-gtk/menu.c:1594 +msgid "U_serlist Buttons" +msgstr "Felhasználólista_gombok" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "_Mód gombok" + +#: src/fe-gtk/menu.c:1597 +msgid "_Channel Switcher" +msgstr "_Csatornaváltó" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "_Fülek" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "F_a" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "_Hálózatfigyelők" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Ki" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Grafikon" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "_Kiszolgáló" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "_Szétkapcsolás" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "Ú_jrakapcsolódás" + +#: src/fe-gtk/menu.c:1613 +msgid "Join a Channel..." +msgstr "Belépés csatornára..." + +#: src/fe-gtk/menu.c:1614 +msgid "List of Channels..." +msgstr "Csatornák listája..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Nem vagyok itt" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "_Felhasználói menü" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "B_eállítások" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "_Beállítások" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Haladó" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Automatikus csere..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "CTCP  válaszok..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Párbeszédgombok..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Gyorsbillentyűk..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Szövegesemények..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "URL-ek kezelése..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Saját parancsok..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Gombok..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Felhasználólista helyi menü..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_Ablak" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Kitiltáslista..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Karaktertábla..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Közvetlen csevegés..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Fájlátvitelek..." + +#: src/fe-gtk/menu.c:1641 +msgid "Friends List..." +msgstr "Barátok listája..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Mellőzési lista..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Bővítmények és parancsfájlok..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Nyers napló..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "URL elfogó..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Jelzővonal visszaállítása" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "Szöveg _törlése" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Szöveg keresése..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Szöveg mentése..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_Súgó" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "_Tartalom" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "Frissítések keresése" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "_Névjegy" + +#: src/fe-gtk/menu.c:2147 +msgid "_Attach" +msgstr "_Csatolás" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Utolsó jelenléte" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Offline" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Soha" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "%d perccel ezelőtt" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Online dokumentáció" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Írja be a hozzáadandó becenevet:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "Értesítés ezeken a hálózatokon:" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "Hálózatok vesszőkkel elválasztott listája adható meg." + +#: src/fe-gtk/notifygui.c:413 +msgid "XChat: Friends List" +msgstr "XChat: Barátok listája" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "Megnyitás párbeszédablak" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" +"A 'notify-send' nem található a figyelmeztető buborékok megjelenítéséhez.\n" +"Telepítse a libnotify csomagot." + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "XChat: Kapcsolódva %u hálózathoz és %u csatornához" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "_Helyreállítás" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "_Elrejtés" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "_Villogjon" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "Csatornaüzenet esetén" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "Privát üzenet esetén" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "Kiemelt üzenet esetén" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "Álla_pot módosítása" + +#: src/fe-gtk/plugin-tray.c:602 +msgid "_Away" +msgstr "_Távol" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "_Vissza" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat: Kiemelt üzenet a következőtől: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat: %u kiemelt üzenet, a legutolsó a következőtől: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat: Új nyilvános üzenet a következőtől: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat: %u új nyilvános üzenet." + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat: Privát üzenet a következőtől: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "XChat: %u privát üzenet, a legutolsó a következőtől: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat: Fájlajánlat a következőtől: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "XChat: %u fájlajánlat, a legutolsó a következőtől: %s (%s)" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Verzió" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Leírás" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Válassza ki a betöltendő bővítményt vagy parancsfájlt" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: Bővítmények és parancsfájlok" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "_Betöltés..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "_Eltávolítás" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Mentés másként..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: Nyers napló (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Nyers napló törlése" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "Az ablak, amelyre ezt a Keresést megnyitotta, már nem létezik." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "A keresés véget ért, nem található." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: Keresés" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "Kis- és _nagybetű" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "Keresés _visszafelé" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "_Keresés" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Új hálózat" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Valóban törli a(z) \"%s\" hálózatot és összes kiszolgálóját?" + +#: src/fe-gtk/servlistgui.c:740 +msgid "#channel" +msgstr "#csatorna" + +#: src/fe-gtk/servlistgui.c:850 +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: Kedvenc csatornák (Automatikus csatlakozási lista)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "E csatornákra fog belépni, amikor csatlakozik ide: %s." + +#: src/fe-gtk/servlistgui.c:906 +msgid "Key (Password)" +msgstr "Kulcs (Jelszó)" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "_Szerkesztés" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "%s eltávolítva." + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "%s hozzáadva." + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "A Felhasználónév és a Valódi név mezőket nem hagyhatja üresen." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: %s szerkesztése" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Kiszolgálók ehhez: %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Csak a kiválasztott kiszolgálókhoz kapcsolódjon" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Ne járja körbe a kiszolgálókat, ha nem sikerül a kapcsolódás." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Részletes információk" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Használja a globális felhasználói információkat" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "Be_cenév:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Második lehetőség:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "_Felhasználónév:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "Való_di név:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Kapcsolódás" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Induláskor automatikusan kapcsolódjon ehhez a kiszolgálóhoz" + +#: src/fe-gtk/servlistgui.c:1462 +msgid "Bypass proxy server" +msgstr "Proxy kiszolgáló használata" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "SSL használata a hálózat összes kiszolgálójához" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Érvénytelen SSL tanúsítvány elfogadása" + +#: src/fe-gtk/servlistgui.c:1475 +msgid "_Favorite channels:" +msgstr "_Kedvenc csatornák:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "" +"Kapcsolódás e csatornákhoz, a felsorolást vesszővel válassza el egymástól, " +"ne szóközzel!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Kapcsolódási parancs:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Extra parancsok a kapcsolódás után. Ha többre van szüksége, állítsa be így: " +"LOAD -e <fájlnév>, ahol a <fájlnév> egy szöveges fájl, amely a végrehajtandó " +"parancsokat tartalmazza." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Nickserv jelszó:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Ha a beceneve jelszót igényel, adja meg itt. Nem minden IRC hálózat " +"támogatja ezt." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Kiszolgáló jelszó:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Jelszó a kiszolgálóhoz, ha nem biztos benne, hagyja üresen." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Karakterkészlet:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: Hálózatlista" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Felhasználói információk" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Harmadik lehetőség:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Hálózatok" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "Ne jelenjen meg a hálózatlista indításkor" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "_Szerkesztés..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "_Rendezés" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" +"A hálózatlistát ábécérendbe rendezi. Sor mozgatásához használja a Shift+fel " +"és Shift+le billentyűket." + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "K_apcsolódás" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Szövegdoboz megjelenése" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Betűtípus:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Háttérkép:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Visszagörgethető sorok:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Színes becenevek" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Mindenkinek külön szín" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Becenevek behúzása" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "A beceneveket jobbra igazítja" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Átlátszó háttér" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Jelzővonal mutatása" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Vörös vonalat szúr be az utolsó olvasott szöveg után." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Áttetszőség beállításai" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Vörös:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Zöld:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Kék:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Időbélyegek" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Időbélyegek engedélyezése" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Időbélyeg formátuma:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Lásd az strftime kézikönyvoldalát." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "Utolsó hozzászólás sorrendjében" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Beviteli doboz" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Használja a Szövegdoboz betűkészletét és színeit" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Helyesírás-ellenőrzés" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Becenév-kiegészítés" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "Automatikus becenév-kiegészítés (a TAB billentyű nélkül)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Becenév-kiegészítés utótagja:" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "Becenév-kiegészítés rendezése:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Bemeneti doboz kódok" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Értelmezze a %nnn-t ASCII értékként" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Értelmezze a %C-t, %B-t mint Szín, Félkövér stb" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, op-ok elöl" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, op-ok hátul" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Rendezetlen" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "Balra (fent)" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "Balra (lent)" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "Jobbra (fent)" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "Jobbra (lent)" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Felül" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Alul" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Rejtett" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Felhasználólista" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "A kiszolgálónevek megjelenítése a felhasználólistában" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Felhasználólista rendezése:" + +#: src/fe-gtk/setup.c:205 +msgid "Show user list at:" +msgstr "Felhasználólista megjelenítése:" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Távollét követés" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "" +"A felhasználók Távol állapotának követése és megjelölésük különböző színekkel" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "Olyan csatornákon, amelyek kisebbek, mint:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Művelet kettős kattintáskor" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Ablakok" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Fülek" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Mindig" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Csak a kívánt fülek" + +#: src/fe-gtk/setup.c:242 +msgid "Tree" +msgstr "Fastruktúra" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "Csatornaváltó típusa:" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Nyisson új fület a kiszolgáló üzeneteihez" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Nyisson új fület a kiszolgáló figyelmeztetéseihez" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "Nyisson új fület privát üzenetek fogadásakor" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Fülek rendezése betűrendbe" + +#: src/fe-gtk/setup.c:254 +msgid "Smaller text" +msgstr "Kisebb szöveg" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Új fül fókuszt kap:" + +#: src/fe-gtk/setup.c:258 +msgid "Show channel switcher at:" +msgstr "A csatornaváltó megjelenítése:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Fülek címkéjének rövidítése:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "betűre." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Fülek vagy ablakok" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Csatornák megnyitása:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Párbeszédablakok megnyitása:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Segédalkalmazások megnyitása:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "" +"A DCC, mellőzési, értesítési stb. ablakokat füleken vagy ablakokban nyissa " +"meg?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "Nem" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Igen" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "Mentési mappa megkeresése minden alkalommal" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Fájlok és könyvtárak" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Fájlajánlatok automatikus elfogadása:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Fájlok letöltése ide:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Kész fájlok átmozgatása ide:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "A bejövő fájlokhoz fűzze hozzá a küldő becenevét" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Hálózati beállítások" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Saját IP lekérdezése az IRC kiszolgálótól" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Lekéri az IRC kiszolgálótól a valós IP címét. Akkor használja, ha 192.168.*." +"* alakú címe van!" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "DCC IP  cím:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Ha fájlt küld, ezt mutatja a címeként." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Első DCC küldés port:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Utolsó DCC küldés port:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!hagyja nullán a portokat a teljes tartomány használatához." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Maximális fájlátviteli sebesség (bájt per másodperc, bps)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Egy feltöltés:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Maximális sebesség egy átvitelhez" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Egy letöltés:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Összes feltöltés együtt:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Maximális sebesség az összes fájlhoz" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Az összes letöltés együtt:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Figyelmeztetések" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "Tálcabuborékok megjelenítése:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "Tálcaikon villogtatása:" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "Feladatsáv villogtatása:" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "Hangjelzés:" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "Rendszertálcaikon engedélyezése" + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "Kiemelt üzenetek" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Kiemelt üzenetek azokon kívül, amelyekben említik a becenevét:" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "További kiemelendő szavak:" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "Nem kiemelendő becenevek:" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "Mindig kiemelendő becenevek:" + +#: src/fe-gtk/setup.c:347 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" +"Több szót vesszőkkel választhat el egymástól.\n" +"Helyettesítő karakterek használhatók." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Alapértelmezett üzenetek" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Kilépés:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Kilépés csatornáról:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Távol:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Távol" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Távol üzenetek bejelentése" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Bejelenti a távollétét az összes csatornán" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Távol mutatása egyszer" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Azonos távol-üzeneteket csak egyszer mutasson" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Automatikusan vonja vissza a távol állapotot" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Távol jelzés visszavonása, mielőtt üzenetet küldene" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Haladó beállítások" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "A kiszolgálóhoz újracsatlakozás késleltetése:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "A MODE-okat nyers formában mutatja" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Értesítéskor Whois" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" +"Küld egy /WHOIS-t, ha az értesítési listán szereplő valamelyik felhasználó " +"online lesz" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Elrejti a belépés és kilépés üzeneteket" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Alapértelmezésben elrejti a csatorna belépés/kilépés üzeneteket" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Közvetlen csevegésablakok automatikus megnyitása" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Küldés ablak" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Fogadás ablak" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Csevegésablak" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Naplózás" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "Visszatekintés megjelenítése az előző folyamatból" + +#: src/fe-gtk/setup.c:387 +msgid "Enable logging of conversations to disk" +msgstr "Csevegések naplózásának engedélyezése" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Naplófájl neve:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=kiszolgáló %c=csatorna %n=hálózat." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Időbélyeg beillesztése a naplófájlokba" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Napló időbélyegének formátuma:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Letiltva)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Az összes kapcsolat" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "Csak IRC kiszolgáló" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "Csak DCC letöltés" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Saját cím" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Kötés:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "Csak több címmel rendelkező gépek esetén hasznos." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Proxy kiszolgáló" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Gép neve:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Port:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Típus:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Proxy használata ehhez:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Proxyhitelesítés" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Hitelesítés használata (csak MS proxy, HTTP vagy Socks5)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Hitelesítés használata (csak HTTP vagy Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Felhasználónév:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Jelszó:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Válasszon egy képfájlt" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "Válasszon letöltési mappát" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Válasszon egy betűtípust" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Tallózás..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Azonosított felhasználók jelölése ezzel:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Azonosítatlan felhasználók jelölése ezzel:" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "Adatmappa megnyitása" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Válasszon színt" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Szövegszín" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "mIRC színek:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Helyi színek:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Előtér:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Háttér:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Szöveg kiemelése" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Megjelenés színe" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Új adatok:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Jelölő vonal:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Új üzenet:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Távollévő felhasználó:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Kiemelés:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Esemény" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Hangfájl" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Válasszon hangfájlt" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Hanglejátszás módszere:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "Külső hanglejátszó_program:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "_Külső program" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_Automatikus" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "Hangfájlok _könyvtára:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Hangfájl:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "_Tallózás..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "_Lejátszás" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Felület" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Szövegdoboz" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Felhasználólista" + +#: src/fe-gtk/setup.c:1703 +msgid "Channel switcher" +msgstr "Csatornaváltó" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Színek" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Csevegés" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Általános" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Hang" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Hálózat beállítása" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Fájlátvitel" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Kategóriák" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" +"Nem helyezheti alulra vagy felülre a fát!\n" +"Először váltson a <b>Nézet</b> menü <b>Fülek</b> elrendezésére." + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Néhány beállítás érvényesítéséhez újraindítás szükséges." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*FIGYELMEZTETÉS*\n" +"DCC automatikus elfogadása a home könyvtárába\n" +"veszélyes és kihasználható lehet. Például:\n" +"Valaki küldhet Önnek egy .bash_profile-t" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: Beállítások" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Hiba történt a karakterlánc feldolgozása közben" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Ez a szignál csak %d argumentumot kapott, $%d érvénytelen" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Szöveges fájl nyomtatása" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Események szerkesztése" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ szám" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Betöltés innen..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Mindet tesztelje" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: URL elfogó" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Lista törlése" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Kijelölt URL másolása" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Másolás" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Lista mentése fájlba" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d op, %d összesen" + +#~ msgid "About XChat" +#~ msgstr "Az XChat névjegye" + +#~ msgid "" +#~ "Set per channel options\n" +#~ "CHANOPT CONFMODE ON|OFF - Toggle conf mode/showing of join and part " +#~ "messages\n" +#~ "CHANOPT COLORPASTE ON|OFF - Toggle color paste\n" +#~ "CHANOPT BEEP ON|OFF - Toggle beep on message\n" +#~ "CHANOPT TRAY ON|OFF - Toggle tray blink on message" +#~ msgstr "" +#~ "Csatornánkénti kapcsolók beállítása\n" +#~ "CHANOPT CONFMODE ON|OFF - Konferenciamód / csatlakozási és kilépési " +#~ "üzenetek megjelenítésének átváltása\n" +#~ "CHANOPT COLORPASTE ON|OFF - Színek beillesztésének átváltása\n" +#~ "CHANOPT BEEP ON|OFF - Üzenetkor csipogás átváltása\n" +#~ "CHANOPT TRAY ON|OFF - Üzenetkor villogjon a tálcán" + +#~ msgid "Direct client-to-client" +#~ msgstr "Közvetlen kliens-kliens kapcsolat (DCC)" + +#~ msgid "Send File" +#~ msgstr "Fájl küldése" + +#~ msgid "Offer Chat" +#~ msgstr "Csevegési ajánlat" + +#~ msgid "Abort Chat" +#~ msgstr "Csevegés megszakítása" + +#~ msgid "Userinfo" +#~ msgstr "Felhasználói infó" + +#~ msgid "Clientinfo" +#~ msgstr "Kliens infó" + +#~ msgid "Time" +#~ msgstr "Idő" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "Oper" + +#~ msgid "Kill this user" +#~ msgstr "Ezen felhasználó kilövése" + +#~ msgid "Mode" +#~ msgstr "Mód" + +#~ msgid "Give Half-Ops" +#~ msgstr "Fél-op jog adása" + +#~ msgid "Take Half-Ops" +#~ msgstr "Fél-op jog elvétele" + +#~ msgid "Ignore" +#~ msgstr "Mellőzés" + +#~ msgid "Ignore User" +#~ msgstr "Felhasználó mellőzése" + +#~ msgid "UnIgnore User" +#~ msgstr "Felhasználó mellőzésének megszüntetése" + +#~ msgid "Info" +#~ msgstr "Információk" + +#~ msgid "Who" +#~ msgstr "Ki" + +#~ msgid "DNS Lookup" +#~ msgstr "DNS kikeresés" + +#~ msgid "Trace" +#~ msgstr "Nyomkövetés" + +#~ msgid "UserHost" +#~ msgstr "Felhasználókiszolgáló" + +#~ msgid "External" +#~ msgstr "Külső programok" + +#~ msgid "Traceroute" +#~ msgstr "Útvonal-nyomkövetés" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "Unban" +#~ msgstr "Kitiltás visszavonása" + +#~ msgid "Blink tray on message" +#~ msgstr "Tálca villogtatása üzenetkor" + +#~ msgid "Show join/part messages" +#~ msgstr "Mutassa a csatlakozás/kilépés üzeneteket" + +#~ msgid "Color paste" +#~ msgstr "Szín beillesztése" + +#~ msgid "_Close Tab" +#~ msgstr "Fül _bezárása" + +#~ msgid "Channel List..." +#~ msgstr "Csatornalista..." + +#~ msgid "Notify List..." +#~ msgstr "Értesítési lista..." + +#~ msgid "_Close Window" +#~ msgstr "Ablak _bezárása" + +#~ msgid "User" +#~ msgstr "Felhasználó" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: Értesítési lista" + +#~ msgid "C_hannels to join:" +#~ msgstr "Ka_pcsolódás a következő csatornákhoz:" + +#~ msgid "Channel Switcher" +#~ msgstr "Csatornaváltó" + +#~ msgid "UTF-8 (Unicode)" +#~ msgstr "UTF-8 (Unicode)" + +#~ msgid "IRC (Latin-1/UTF-8 Hybrid)" +#~ msgstr "IRC (Latin-1/UTF-8 hibrid)" + +#~ msgid "ISO-8859-15 (Western Europe)" +#~ msgstr "ISO-8859-15 (nyugat-európai)" + +#~ msgid "ISO-8859-2 (Central Europe)" +#~ msgstr "ISO-8859-2 (közép-európai)" + +#~ msgid "ISO-8859-7 (Greek)" +#~ msgstr "ISO-8859-7 (görög)" + +#~ msgid "ISO-8859-8 (Hebrew)" +#~ msgstr "ISO-8859-8 (héber)" + +#~ msgid "ISO-8859-9 (Turkish)" +#~ msgstr "ISO-8859-9 (török)" + +#~ msgid "ISO-2022-JP (Japanese)" +#~ msgstr "ISO-2022-JP (japán)" + +#~ msgid "SJIS (Japanese)" +#~ msgstr "SJIS (japán)" + +#~ msgid "CP949 (Korean)" +#~ msgstr "CP949 (koreai)" + +#~ msgid "KOI8-R (Cyrillic)" +#~ msgstr "KOI8-R (cirill)" + +#~ msgid "CP1251 (Cyrillic)" +#~ msgstr "CP1251 (cirill)" + +#~ msgid "CP1256 (Arabic)" +#~ msgstr "CP1256 (arab)" + +#~ msgid "CP1257 (Baltic)" +#~ msgstr "CP1257 (balti)" + +#~ msgid "GB18030 (Chinese)" +#~ msgstr "GB18030 (kínai)" + +#~ msgid "TIS-620 (Thai)" +#~ msgstr "TIS-620 (thai)" + +#~ msgid "System default" +#~ msgstr "Rendszer alapértelmezése" diff --git a/xchat-2.8.8/po/it.gmo b/xchat-2.8.8/po/it.gmo new file mode 100644 index 0000000000000000000000000000000000000000..af90517b80042011a2e0f3ca54729f685a9b298d GIT binary patch literal 88450 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 Z6QDFE@&SP#c@FoGCtn^7s{XC&{{djkJ7xd? literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/po/it.po b/xchat-2.8.8/po/it.po new file mode 100644 index 0000000..4002b53 --- /dev/null +++ b/xchat-2.8.8/po/it.po @@ -0,0 +1,5885 @@ +# Italian translation of XChat. +# +# Eros Palberti - Fabio Viola : How-Tux Team <admin@how-tux.com>, 2006. +# +msgid "" +msgstr "" +"Project-Id-Version: xchat-2.6.7\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2006-10-11 01:00+0200\n" +"Last-Translator: Eros Palberti-Fabio Viola : How-Tux Team <admin@how-tux." +"com>\n" +"Language-Team: Italian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Impossibile creare ~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Sono occupato" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Sto andando via" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* Eseguire IRC come root non è saggio.\n" +" Sarebbe preferibile creare un account utente\n" +" e utilizzare tale utente per effettuare il login.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "In attesa" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Attivo" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Fallito" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Completato" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Connessione" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Interrotto" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "Impossibile accedere a %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Errore" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s sta offrendo \"%s\". Vuoi accettare?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Nessun DCC attivo\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "SI " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "NO " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Hai ricevuto un flood CTCP da parte di %s. %s ignorato\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "" +"Hai ricevuto un flood MSG da parte di %s. gui_auto_open_dialog impostato a " +"OFF.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s connesso\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s non connesso\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Non sei in nessun canale. Prova prima /join #<canale>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Non connesso. Prova prima /server <host> [<porta>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "È necessario /bin/sh per l'esecuzione!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Comandi disponibili:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Comandi definiti dall'utente:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Plugin definiti dall'utente:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Digita /HELP <comando> per ulteriori informazioni, oppure /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Argomento sconosciuto '%s' ignorato." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "Plugin non trovato.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Questo plugin si rifiuta di terminare.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <nome> <azione>, aggiunge un pulsante sotto la lista utenti" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <cmd>, invia un comando a tutti i canali in cui sei presente" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHANL <cmd>, invia un comando a tutti i canali in cui sei presente" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "" +"ALLSERV <cmd>, invia un comando a tutti i server ai quali sei collegato" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<motivo>], cambia il tuo stato in assente" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <mask> [<tipo_di_ban>], allontana dal canale corrente tutti coloro che " +"corrispondono alla maschera di rete specificata. Se essi sono già connessi " +"al canale, questo non li espelle (kick). Bisogna essere operatore." + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-quiet] <variabile> [<valore>]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "" +"CLEAR [ALL|HISTORY], Pulisce la finestra di testo corrente o i comandi " +"recenti" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, chiude la finestra/scheda corrente" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" +"COUNTRY [-s] <codice|wildcard>, cerca un codice paese, per es.: au = " +"Australia" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <nick> <messaggio>, invia il messaggio CTCP al nick indicato, messaggi " +"comuni sono VERSION e USERINFO" + +#: src/common/outbound.c:3516 +#, fuzzy +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "CYCLE, abbandona il canale corrente e vi rientra immediatamente" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <nick> - accetta un file offerto\n" +"DCC SEND [-maxcps=#] <nick> [file] - invia un file a qualcuno\n" +"DCC PSEND [-maxcps=#] <nick> [file] - invia un file utilizzando la modalità " +"passiva\n" +"DCC LIST - visualizza la lista dei collegamenti " +"DCC\n" +"DCC CHAT <nick> - propone una DCC CHAT a qualcuno\n" +"DCC PCHAT <nick> - propone una DCC CHAT utilizzando la " +"modalità passiva\n" +"DCC CLOSE <tipo> <nick> <file> esempio:\n" +" /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <nick>, rimuove lo stato di semi-operatore sul canale corrente per il " +"nick indicato (bisogna essere operatore)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <nome>, cancella un pulsante sotto la lista utenti" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <nick>, rimuove lo stato di operatore sul canale corrente per il nick " +"indicato (bisogna essere operatore)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <nick>, toglie la parola al nick indicato sul canale corrente " +"(bisogna essere operatore)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, disconnette dal server" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <nick|host|ip>, cerca l'indirizzo IP di un utente" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <testo>, stampa un testo in locale" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <comando>, esegue il comando. Se si utilizza l'opzione -o, " +"l'output è inviato al canale corrente, altrimenti è stampato nella corrente " +"text box" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, invia un SIGCONT al processo" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], uccide un'istanza exec nella sessione corrente. Se è " +"specificato -9, il processo è ucciso con SIGKILL" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, invia un SIGSTOP al processo" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, invia dati allo stdin del processo" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, svuota la coda di invio del server corrente" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" +"GATE <host> [<porta>], utilizza un host come proxy, la porta predefinita è " +"la 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <nick> <password>, Uccide il nickname fantasma" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" +"HOP <nick>, dà lo stato di semi-operatore al nick (bisogna essere operatore)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <password>, ti identifica presso il nickserv" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <maschera> <tipi..> <opzioni..>\n" +" maschera - host maschera da ignorare, per es.: *!*@*.aol.com\n" +" tipi - tipi di dato da ignorare, uno o più tra:\n" +" PRIV, CHAN, NOTI, CTCP,DCC, INVI, ALL\n" +" opzioni - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <nick> [<canale>], invita qualcuno in un canale, la regola predefinta " +"è per il canale corrente (bisogna essere operatore del canale)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <canale>, entra nel canale" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <nick>, espelle il nick dal canale corrente (bisogna essere operatore " +"del canale)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <nick>, allontana (ban) e poi espelle (kick) il nick dal canale " +"corrente (bisogna essere operatore del canale)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, forza un nuovo controllo del ritardo (lag)" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <stringa>, cerca una stringa nel buffer" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <file>, carica un plugin o uno script" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, toglie lo stato a tutti i semi-operatori del canale corrente " +"(bisogna essere operatore del canale)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, toglie lo stato a tutti gli operatori del canale corrente (bisogna " +"essere operatore del canale)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <azione>, invia l'azione al canale corrente (le azioni sono scritte in " +"terza persona, es. /me jumps)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, espelle dal canale corrente tutti gli utenti tranne te (bisogna " +"essere operatore del canale)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, rende operatori tutti gli utenti nel canale corrente (bisogna essere " +"operatore del canale)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <nick> <messaggio>, invia un messaggio privato" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, elenca i nick presenti sul canale corrente" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <nick> <messaggio>, invia una notifica CTCP" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER <nome host> [<porta>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <nickname>, imposta il tuo nick" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <nick/canale> <messaggio>, invia una notifica. Le notifiche sono un " +"tipo di messaggio che dovrebbe ottenere una reazione automatica" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n network1[,network2,...]] [<nick>], mostra la tua lista di " +"notifica o aggiunge qualcuno ad essa" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" +"OP <nick>, dà lo stato di operatore al nick indicato (bisogna essere " +"operatore del canale)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" +"PART [<canale>] [<motivo>], abbandona il canale. Se non specificato, quello " +"corrente" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <nick | canale>, invia un ping CTCP al nick o al canale" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "QUERY [-nofocus] <nick>, apre una chat privata con il nick indicato" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<motivo>], disconnette dal server corrente" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <testo>, invia il testo in forma grezza al server" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<host>] [<porta>] [<password>], può essere richiamato " +"semplicemente come /RECONNECT per riconnettersi al server corrente o con /" +"RECONNECT ALL per riconnettersi a tutti i server aperti" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<host>] [<porta>] [<password>], può essere richiamato " +"semplicemente come /RECONNECT per riconnettersi al server corrente o con /" +"RECONNECT ALL per riconnettersi a tutti i server aperti" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <testo>, invia il testo sotto forma di dati grezzi a xchat, come se " +"fosse stato ricevuto dal server irc" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "" +"SAY <testo>, invia il testo all'oggetto a cui corrisponde la finestra " +"corrente" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <nick> [<file>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <host> <porta> <canale>, si connette ed entra nel canale" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <host> <porta> <canale>, si connette ed entra nel canale" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <host> [<porta>] [<password>], si connette al server, la porta " +"predefinita è la 6667 per le connessioni normali e la 9999 per le " +"connessioni ssl" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <host> [<porta>] [<password>], si connette al server, la porta " +"predefinita è la 6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-quiet] <variabile> [<valore>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<posizione>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<argomento>], imposta l'argomento, se specificato, altrimenti mostra " +"quello attuale" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "" +"UNBAN <maschera> [<maschera>...], rimuove il ban per la maschera specificata" + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <maschera> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <nome>, termina un plugin o uno script" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, apre uno URL nel tuo browser" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <nick1> <nick2> ecc., evidenzia i(l) nick nella lista " +"utenti del canale" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "" +"VOICE <nick>, dà la parola a qualcuno (bisogna essere operatore del canale)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <messaggio>, scrive il messaggio su tutti i canali" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <messaggio>, invia il messaggio a tutti gli operatori del canale " +"corrente" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Uso: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"Nessun aiuto disponibile per questo comando.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Comando inesistente.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Argomenti del comando non corretti.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Troppi comandi ricorsivi. Annullati." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Comando sconosciuto. Prova con /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "Nessun simbolo xchat_plugin_init; è veramente un plugin di xchat?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Sei sicuro che il server e la porta supportano SSL?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Impossibile risolvere l'hostname %s\n" +"Verifica le tue impostazioni IP!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Attraversamento del proxy fallito.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Nuovo tentativo con il server successivo di %s in corso...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Attenzione: il set di caratteri \"%s\" è sconosciuto. Non verrà effettuata " +"alcuna conversione per il network %s." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 aggiunto alla lista di notifica." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Lista ban:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tImpossibile entrare in%C26 %B$1 %O(Sei bannato)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 è ora conosciuto come $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 ha impostato un ban su $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tCanale $1 creato su $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "" +"%C22*%O$t%C26$1%O ha tolto lo stato di semi-operatore del canale a%C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O ha tolto lo stato di operatore del canale da%C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O ha tolto la parola a%C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 ha impostato l'exempt su $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "" +"%C22*%O$t%C26$1%O ha dato lo stato di semi-operatore del canale a%C26 $2" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 ha impostato l'invito su $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UCanale Utenti Argomento" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 ha impostato la modalità $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Canale $1 modalità: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O ha dato lo stato di operatore del canale a%C26 $2" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 ha rimosso l'exempt su $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 ha rimosso l'invito su $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 ha rimosso la parola chiave del canale" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 ha rimosso il limite di utenti" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 ha impostato come parola chiave del canale $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 ha impostato il limite utenti del canale a $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 ha rimosso il ban da $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O ha dato la parola a%C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Connesso. Login in corso.." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22Connessione a $1 ($2) porta $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21Connessione fallita. Errore: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tRicevuto un CTCP $1 da $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tRicevuto un CTCP $1 da $2 (per $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tRicevuto un suono CTCP $1 da $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tRicevuto un suono CTCP $1 da $2 (per $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tDCC CHAT con %C26$1%O interrotta." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$tConnessione DCC CHAT stabilita con %C26$1 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tDCC CHAT con %C26$1%O perduta ($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tRicevuta una richiesta di CHAT DCC da $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tInvito a una CHAT DCC per $1" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tInvito alla CHAT per $1 già effettuato" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "" +"%C22*%O$tDCC Tentativo di connessione DCC $1 a %C26 $2%O fallito (err=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tRicevuto '$1%O' da $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 Tipo Per/Da Stato Dimensione Pos File " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O.%010%C22*%O" +"$tContents of packet: $2" +msgstr "" +"%C22*%O$tRicevuta una richiesta DCC mal formata da %C26$1%O.%010%C22*%O" +"$tContenuto del pacchetto: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tOfferta di %C26 $1%O per%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tOfferta DCC inesistente." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV di%C26 $2%O da%C26 $1%O interrotto." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC RECV di%C26 $1%O da%C26 $3%O completato %C30[%C26$4%O cps%C30]%" +"O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tConnessione DCC RECV stabilita con%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV di%C26 $1%O da%C26 $3%O fallito ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV: Impossibile aprire $1 in scrittura ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "%C22*%O$tIl file%C26 $1%C esiste già, verrà salvato come %C26 $2%O." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Oha richiesto di continuare%C26 $2 %Cda%C26 $3%C." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC SEND%C26 $2%O per%C26 $1%O interrotto." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC SEND%C26 $1%O per%C26 $2%O completato %C30[%C26$3%O cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC SEND connessione stabilita con%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND%C26 $1%O con%C26 $2%O fallito. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Oha offerto%C26 $2 %O(%C26$3 %Obyte)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "" +"%C22*%O$tDCC $1%C26 $2 %Oper%C26 $3 %Cbloccato - interruzione in corso." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oper%C26 $3 %Oscaduto - interruzione in corso." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 rimosso dalla lista di notifica." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tDisconnesso ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tTrovato il tuo IP: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O aggiunto alla lista utenti ignorati." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "Lo stato degli utenti ignorati su %C26$1%O è cambiato." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O rimosso dalla lista utenti ignorati." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " La lista utenti ignorati è vuota." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "" +"%C22*%O$tImpossibile entrare in%C26 %B$1 %O(L'accesso al canale è solamente " +"su invito)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tSei stato invitato su%C26 $1%O da%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) è entrato in $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$tImpossibile entrare in%C26 %B$1 %O(Richiesta parola chiave)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 ha espulso $2 da $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$tSei stato ucciso (kill) da $1 ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD Saltato." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 è gia in uso. Ritento con $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "%C22*%O$tNickname già in uso. Utilizza /NICK per sceglierne un altro." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tDCC non esistente." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tNessun processo attualmente in esecuzione" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tLa lista di notifica è vuota." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Lista di notifica " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 utenti nella lista di notifica." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tNotifica: $1 non è connesso ($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tNotifica: $1 è connesso ($3)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) ha abbandonato $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) ha abbandonato $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tRisposta al ping da $1: $2 secondi" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "" +"%C22*%O$tNessuna risposta al ping per $1 secondi, disconnessione in corso." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tUn processo è già in esecuzione" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 è uscito (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 ha impostato le modalità%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tRicerca dell'indirizzo IP per%C26 $1%O in corso..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22Connesso." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22Ricerca di $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "" +"%C22*%O$tIl tentativo di connessione precedente è stato interrotto (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29L'argomento di $1%C %C29è: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 ha scelto come argomento: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29Argomento per $1%C %C29impostato da $2%C %C29a $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tHost sconosciuto. Forse è scritto male?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "" +"%C22*%O$tImpossibile entrare in%C26 %B$1 %O(Raggiunto il limite di utenti)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Utenti in $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cè assente %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OFine della lista WHOIS." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O inattivo%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O inattivo%C26 $2%O, connesso:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %Oreale user@host%C27 $2%O, reale IP%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Ora parla su $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tSei stato espulso (kick) da $2 da $3 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tSei uscito dal canale $3" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tSei uscito dal canale $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tHai invitato%C26 $1%O in%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tSei ora conosciuto come $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** FINE DEL LOG %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** INIZIO DEL LOG %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Impossibile aprire i file di log in scrittura.\n" +" Verifica i permessi su %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Messaggio a sinistra" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Messaggio a destra" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "Il nick della persona che è entrata" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "Il canale nel quale sta entrando" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "L'host della persona" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Nickname" + +#: src/common/text.c:973 +msgid "The action" +msgstr "L'azione" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Il carattere della modalità" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Testo identificato" + +#: src/common/text.c:980 +msgid "The text" +msgstr "Il testo" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Il messaggio" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Vecchio nickname" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Nuovo nickname" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Nick dell'utente che ha cambiato l'argomento" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Argomento" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Canale" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "Il nickname di chi ha effettuato il kick" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "La persona che ha ricevuto il kick" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "Il canale" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "Il motivo" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "Il nick della persona che è andata via" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "L'ora" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "Il creatore" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Nick" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Motivo" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Host" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "Da chi è stato fatto" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "L'ora nel formato x.x (vedi più giù)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "Il canale al quale è destinato" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "Il suono" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "Il nick della persona" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "L'evento CTCP" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "Il nick della persona che ha impostato la chiave" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "La chiave" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "Il nick della persona che ha impostato il limite" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "Il limite" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "Il nick della persona che ha impostato l'op" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "Il nick della persona che è stata resa op" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "Il nick della persona che è stata resa halfop" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "Il nick della persona che ha impostato l'halfop" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "Il nick della persona che ha dato la parola" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "Il nick della persona che ha ricevuto la parola" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "Il nick della persona che ha impostato il ban" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "La maschera del ban" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "Il nick della persona che ha rimosso la chiave" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "Il nick della persona che ha rimosso il limite" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "Il nick della persona che ha rimosso l'op" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "Il nick della persona che è stata rimossa da op" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "Il nick della persona che ha rimosso lo stato di semi-operatore" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Il nick della persona che è stata rimossa da halfop" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "Il nick della persona che ha tolto la parola" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "Il nick della persona a cui è stata tolta la parola" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "Il nick della persona che ha rimosso il ban" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "Il nick della persona che ha impostato l'exempt" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "La maschera di exempt" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "Il nick della persona che ha rimosso l'exempt" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "Il nick della persona che ha impostato l'invito" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "La maschera di invito" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "Il nick della persona che ha rimosso l'invito" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "Il nick della persona che ha impostato la modalità" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "Il segno della modalità (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "La lettera della modalità" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "Il canale su cui ha effetto l'impostazione" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Nome utente" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Nome completo" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Appartenenza al canale / \"è un operatore IRC\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Informazioni sul server" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Tempo di inattività" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Orario di connessione" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Motivo dell'assenza" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Messaggio" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Account" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "utente@host effettivo" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "IP effettivo" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Nome del canale" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Testo" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Nome del server" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Nick della persona che ti ha invitato" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Utenti" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Nickname già in uso" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Nick in via di prova" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Porta" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Rete" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Stringhe modalità" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "Indirizzo IP" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "Tipo DCC" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Nome del file" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Nome del file di destinazione" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Percorso" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Posizione" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Dimensione" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "Stringa DCC" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Numero degli utenti nella lista di notifica" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Vecchio nome del file" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Nuovo nome del file" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Destinatario" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Maschera dell'host" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Nome dell'host" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "Il pacchetto" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Secondi" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Nick della persona che è stata invitata" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Maschera dei ban" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Chi ha impostato il ban" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Ora del ban" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Errore nell'analisi dell'evento %s.\n" +"Verranno caricati i valori predefiniti." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"Impossibile leggere il file audio:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "L'host remoto ha chiuso il socket" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Connessione rifiutata" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Nessun instradamento per l'host" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Connessione scaduta" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Impossibile assegnare l'indirizzo" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Connessione interrotta dall'host remoto" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Isole Cocos" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Emirati Arabi Uniti" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Afghanistan" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Antigua e Barbuda" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Albania" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Armenia" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Antille Olandesi" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Antartide" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Argentina" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "DNS inverso" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Samoa Americane" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Austria" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Australia" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Isole Falkland" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Azerbaijan" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Bosnia-Herzegovina" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Bangladesh" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Belgio" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Bulgaria" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Bahrain" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Businesses" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Brunei Darussalam" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Bolivia" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Brasile" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Bahamas" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Bhutan" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Isola Bouvet" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Bielorussia" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Canada" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Isole Cocos" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "Repubblica Democratica del Congo" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "Repubblica Centrafricana" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Congo" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Svizzera" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Costa d'Avorio" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Isole Cook" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Cile" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Camerun" + +#: src/common/util.c:898 +msgid "China" +msgstr "Cina" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Colombia" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Internic, commerciale" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Serbia e Montenegro" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Cuba" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Capo Verde" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Isola Christmas" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Cipro" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "Repubblica Ceca" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Germania" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Gibuti" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Danimarca" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Dominica" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "Repubblica Dominicana" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Algeria" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Ecuador" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Istituzione educativa" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Estonia" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Egitto" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Sahara Occidentale" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Spagna" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Etiopia" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Unione Europea" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Finlandia" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Fiji" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Isole Falkland" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Micronesia" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Isole Faroe" + +#: src/common/util.c:928 +msgid "France" +msgstr "Francia" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Gran Bretagna" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Georgia" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Guyana Francese" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Isole del Canale Britannico" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Ghana" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Gibilterra" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Groenlandia" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Governativo" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Guadalupa" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Guinea Equatoriale" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Grecia" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Isole S.Georgia e S.Sandwich" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Guinea-Bissau" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Guyana" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Isole Heard and McDonald" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Croazia" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Ungheria" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Indonesia" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Irlanda" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Israele" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Isle of Man" + +#: src/common/util.c:959 +msgid "India" +msgstr "India" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Informativo" + +#: src/common/util.c:961 +msgid "International" +msgstr "Internazionale" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Territori Britannici dell'Oceano Indiano" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Iraq" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Iran" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Islanda" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Italia" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Giamaica" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Giordania" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Giappone" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Kenya" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Kirghizistan" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Cambogia" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Comore" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "S. Kitts e Nevis" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Corea del Nord" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Corea del Sud" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Kuwait" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Isole Cayman" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Kazakistan" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Libano" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Santa Lucia" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Liberia" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Lituania" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Lussemburgo" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Lettonia" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Libia" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Marocco" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Monaco" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Moldavia" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "Stati Uniti, sanità" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Madagascar" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Isole Marshall" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Militare" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Macedonia" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Mongolia" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Macao" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Isole Marianne del Nord" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Martinica" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Mauritania" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Muritius" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Maldive" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Messico" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Malesia" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Mozambico" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Namibia" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Nuova Caledonia" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Network Internic" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Isola Norfolk" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Nigeria" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Paesi Bassi" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Norvegia" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Nuova Zelanda" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Internic, associazione no-profit" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Perù" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Polinesia Francese" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Papua - Nuova Guinea" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Filippine" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Polonia" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "St. Pierre e Miquelon" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Porto Rico" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Territori palestinesi" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Portogallo" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Paraguay" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Qatar" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Reunion" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Romania" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "ARPAnet vecchio tipo" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Federazione Russa" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Ruanda" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Arabia Saudita" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Isole Salomone" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Seychelles" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Sudan" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Svezia" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Singapore" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "S. Helena" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Slovenia" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Isole Svalbard e Jan Mayen" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Repubblica Slovacca" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Somalia" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Suriname" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "Sao Tome e Principe" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Ex URSS" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Siria" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Swaziland" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Isole Turks e Caicos" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Chad" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Terre Australi Francesi" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Thailandia" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Tajikistan" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Timor Est" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Tunisia" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Turchia" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Trinidad e Tobago" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Tanzania" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Ucraina" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Regno Unito" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "Stati Uniti d'America" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Uruguay" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Uzbekistan" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Città del Vaticano" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "St. Vincent e le Grenadine" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Isole Vergini Britanniche" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "Isole Vergini Americane" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Isole Wallis e Futuna" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Yemen" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Iugoslavia" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Sud Africa" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Zambia" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Zimbawe" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Sconosciuto" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "Apri la finestra di dialogo" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "Invia un File" + +#: src/common/xchat.c:728 +#, fuzzy +msgid "_User Info (WhoIs)" +msgstr "Informazione Utente (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +#, fuzzy +msgid "O_perator Actions" +msgstr "Opzioni" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Assegna lo stato di Op" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Rimuovi lo stato di Op" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Dai la parola (voice)" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Prendi la parola (voice)" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Kick/Ban" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Kick" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Ban" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "KickBan" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Esci dal canale" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Entra nel canale..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Nome del canale nel quale entrare:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Link dei server" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Fai ping sul server" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Nascondi versione" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Op" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "arrivederci" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Immetti il motivo per il kick a %s :" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Invia un file" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Dialogo" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Invia" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Chat" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Pulisci" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "Impossibile collegarsi al bus di sessione" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "Completamento di NameHasOwner fallito" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "Completamento del comando fallito" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "accesso remoto" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "plugin per l'accesso remoto usando DBUS" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Impossibile collegarsi al bus di sessione: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Fallita acquisizione %s: %s\n" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "_Informazioni" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Client IRC multipiattaforma" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Tabella caratteri" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "Non connesso" + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Devi selezionare alcuni ban." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "Sei sicuro di voler rimuovere tutti i ban in %s?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Maschera" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "Da" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Data" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" +"Puoi aprire la finestra Lista dei Ban solamente mentre sei nella scheda di " +"un canale" + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: Lista dei Ban (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Rimuovi" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Rimuovi i Ban esclusa selezione" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Aggiorna" + +#: src/fe-gtk/chanlist.c:111 +#, fuzzy, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Statistiche Utente e Canale: %d/%d Utenti su %d/%d Canali" + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Scegli il nome di un file di output" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +#, fuzzy +msgid "_Join Channel" +msgstr "Entra nel canale" + +#: src/fe-gtk/chanlist.c:633 +#, fuzzy +msgid "_Copy Channel Name" +msgstr "Nome del canale" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: Lista Canali (%s)" + +#: src/fe-gtk/chanlist.c:781 +#, fuzzy +msgid "_Search" +msgstr "XChat: Cerca" + +#: src/fe-gtk/chanlist.c:787 +#, fuzzy +msgid "_Download List" +msgstr "Download" + +#: src/fe-gtk/chanlist.c:793 +#, fuzzy +msgid "Save _List..." +msgstr "Salva Come..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "" + +#: src/fe-gtk/chanlist.c:818 +#, fuzzy +msgid "channels with" +msgstr "canale" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:843 +#, fuzzy +msgid "users." +msgstr "Utenti" + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:861 +#, fuzzy +msgid "Channel name" +msgstr "Nome del canale" + +#: src/fe-gtk/chanlist.c:882 +#, fuzzy +msgid "Search type:" +msgstr "Cerca Testo..." + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:890 +#, fuzzy +msgid "Pattern Match (Wildcards)" +msgstr "Riscontro Pattern:" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Trova:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Invia un file a %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Questo file non è ripristinabile." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"Impossibile accedere al file: %s\n" +"%s.\n" +"Ripristino non possibile." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"Il file nella cartella di download è più grande di quello offerto. " +"Ripristino non possibile." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "Impossibile ripristinare lo stesso file da due persone" + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: Upload e Download" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Stato" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "File" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "Tempo Mancante" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Entrambi" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Upload" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "Download" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Dettagli" + +#: src/fe-gtk/dccgui.c:820 +#, fuzzy +msgid "File:" +msgstr "File" + +#: src/fe-gtk/dccgui.c:821 +#, fuzzy +msgid "Address:" +msgstr "Indirizzo" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Interrompi" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Accetta" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Ripristina" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Apri Cartella..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: Lista Chat DCC" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Ricevuto" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Inviato" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "Inizio Tempo" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "NUOVO*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "MODIFICAMI" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Nome" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Comando" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Muovi Su" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Muovi Giu" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Cancella" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Salva" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Aggiungi Nuovo" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Cancella" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Ordina" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Aiuto" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "Non connettere automaticamente ai server" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "Usa una cartella di configurazione diversa" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "Impossibile caricare automaticamente alcun plugin" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "Mostra la cartella di auto-caricamento dei plugin" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "Mostra la cartella di configurazione utente" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Apri un URL irc://server:port/channel" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Esegui comando:" + +#: src/fe-gtk/fe-gtk.c:132 +#, fuzzy +msgid "Open URL or execute command in an existing XChat" +msgstr "Apri URL in XChat esistente" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +#, fuzzy +msgid "level" +msgstr "Mai" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Mostra informazioni sulla versione" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"Impossibile aprire il carattere:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "Il buffer di ricerca è vuoto.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d byte" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Coda di invio: %d byte" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"Il comando Run Command esegue il contenuto di Data 1 come se fosse stato " +"digitato dentro la casella dove hai digitato la sequenza chiave. Quindi può " +"contenere testo (che verrà inviato al canale/persona), comandi o comandi " +"utente. Quando esegue tutti \\n caratteri in Data 1 sono usati per " +"delimitare comandi separati in modo da eseguire più di un comando. Se vuoi " +"\\ nel testo attuale allora premi invio \\\\" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"Il comando Change Page cambia pagine. Imposta Data 1 alla pagina a cui vuoi " +"cambiare. Se Data 2 è impostata a qualcosa allora il cambio sarà relativo " +"alla posizione corrente" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"Il comando Insert in Buffer inserirà il contenuto di Data 1 nella casella " +"dove la sequenza chiave è stata premuta nella posizione corrente del cursore" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"Il comando Scroll Page scorre l'oggetto testo su o giu di una pagina o una " +"linea. Imposta Data 1 a su, giu, +1 o -1." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"Il comando Set Buffer imposta la casella dove è stata digitata la sequenza " +"chiave nel contenuto di Data 1" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"Il Last Command comando imposta la casella per contenere l'ultimo comando " +"digitato - corrispondente a premere il tasto su nella shell" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"Il Next Command comando imposta la casella per contenere il successivo " +"comando digitato- corrispondente a premere il tasto giu nella shell" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Qeusto comando cambia il testo nella casella per finire un nick o un comando " +"incompleto. Se Data 1 è impostato allora la doppia pressione sul tasto TAB " +"in una stringa selezionerà l'ultimo nick, non il prossimo" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Questo comando scorre su e giù attraverso la lista dei nick. Se Data 1 è " +"impostato a qualcosa scorrerà verso l'altro, altrimenti verso il basso" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Questo comando confronta l'ultima parola inserita con la lista dei sostituti " +"e rimpiazza se trova parole coincidenti" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Questo comando muove la scheda davanti a sinistra di uno" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Questo comando muove la scheda davanti a destra di uno" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Questo comando muove i tab correnti a sinistra" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Questo comando muove i tab correnti a destra" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "Inserisci la linea di input nella cronologia ma non inviarla al server" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "" +"E' avvenuto un errore durante il caricamento della mappatura della tastiera" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<none>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Mod" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Tasto" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Azione" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: Scorciatoie di Tastiera" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Dati 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Dati 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Errore nell'apertura del file di configurazione dei tasti\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Nome del tasto %s sconosciuto nel file di configurazione\n" +"Caricamento interrotto, per favore controlla %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Azione %s sconosciuta nel file di configurazione\n" +"Caricamento interrotto, per favore controlla %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Aspetto linea dati (inizio Dx{:|!}) ma ottenuto:\n" +"%s\n" +"\n" +"Caricamento interrotto, per favore controlla %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"Il file di configurazione dei tasti è corrotto, caricamento interrotto\n" +"Per favore controlla %s/keybindings.conf\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "Impossibile scrivere su quel file" + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Impossibile leggere quel file" + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Quella maschera esiste già." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Privato" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Notizia" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Invita" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Annulla ignora" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Inserisci maschera da ignorare:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: Lista utenti ignorati" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Stato utenti ignorati:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Canale:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privato:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Notizia:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Invita:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "Aggiungi..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "Nome del canale troppo corto, prova di nuovo." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: Connessione completata" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "Connessione a %s completata." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"Nella finestra Lista-Server, nessun canale (chat room) è stato inserito nel " +"quale entrare automaticamente per questa rete." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "Cosa vuoi fare dopo?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "_Niente, Entrerò nel canale dopo." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "_Entra in questo canale:" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Se conosci il nome del canale nel quale vuoi entrare, scrivilo qui." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "A_pri la finestra Lista-Canali." + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "Richiamare la Lista-Canali potrebbe richiedere un minuto o due." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "_Mostra sempre questa finestra dopo la connessione." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Dialoga con" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Argomento per %s è: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Nessun argomento è impostato" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"Questo server ha ancora %d canali o dialoghi associati ad esso. Chiudere " +"tutto?" + +#: src/fe-gtk/maingui.c:1283 +#, fuzzy +msgid "Quit XChat?" +msgstr "Informazioni su XChat" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1310 +#, fuzzy, c-format +msgid "You are connected to %i IRC networks." +msgstr "Connetti automaticamente a questa rete all'avvio" + +#: src/fe-gtk/maingui.c:1312 +#, fuzzy +msgid "Are you sure you want to quit?" +msgstr "Sei sicuro di voler rimuovere tutti i ban in %s?" + +#: src/fe-gtk/maingui.c:1314 +#, fuzzy +msgid "Some file transfers are still active." +msgstr "Alcuni file sono ancora in trasferimento, chiudere xchat?" + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Inserisci Attributo o Codice colore" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Grassetto</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Sottolineato</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Normale" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Colori 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Colori 8-15" + +#: src/fe-gtk/maingui.c:1612 +#, fuzzy +msgid "_Settings" +msgstr "_Impostazioni" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "Nascondi messaggi di entrata e uscita" + +#: src/fe-gtk/maingui.c:1625 +#, fuzzy +msgid "_Extra Alerts" +msgstr "Avvisi" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "Beep sul messaggio" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +#, fuzzy +msgid "_Detach" +msgstr "_Stacca Scheda" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "_Chiudi" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "Il limite utenti deve essere un numero!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Protezione Argomento" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Nessun fuori messaggio" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Segreto" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Solo Invito" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Moderato" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Lista Ban" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Parola Chiave" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Limite Utenti" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Mostra/Nascondi lista utenti" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"Impossibile impostare la trasparenza dello sfondo!\n" +"\n" +"Potresti usare un window manager\n" +"correntemente non supportato.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Inserisci il nuovo nickname:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Host sconosciuto" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Nome Reale:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Utente:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "Nazione:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Server:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "%u minuti fa" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Ultimo Messaggio:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Messaggio di assenza" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"La barra dei menù è nascosta. Puoi mostrarla nuovamente premendo F9 o " +"cliccandocon il tasto destro in uno spazio bianco dell'area testo." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Apri collegamento nel Browser" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Copia collegamento selezionato" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Entra nel canale" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Abbandona Canale" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Cicla Canale" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: Menù utente" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Modifica questo menù..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Richiama lista canali..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Comandi utente - Codici speciali:\n" +"\n" +"%c = canale corrente\n" +"%e = nome della rete corrente\n" +"%m = informazioni sul computer\n" +"%n = tuo nick\n" +"%t = ora/data\n" +"%v = versione xchat\n" +"%2 = parola 2\n" +"%3 = parola 3\n" +"&2 = parola 2 alla fine della linea\n" +"&3 = parola 3 alla fine della linea\n" +"\n" +"esempio:\n" +"/cmd john hello\n" +"\n" +"%2 è \"john\"\n" +"&2 è \"john hello\"." + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Pulsanti lista utenti - Codici speciali:\n" +"\n" +"%a = tutti i nick selezionati\n" +"%c = canale corrente\n" +"%e = nome della rete corrente\n" +"%h = hostname del nick selezionato\n" +"%m = informazioni sul computer\n" +"%n = tuo nick\n" +"%s = nick selezionato\n" +"%t = ora/data\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Pulsanti dialoghi - Codici speciali:\n" +"\n" +"%a = tutti i nick selezionati\n" +"%c = canale corrente\n" +"%e = nome della rete corrente\n" +"%h = hostname del nick selezionato\n" +"%m = informazioni sul computer\n" +"%n = tuo nick\n" +"%s = nick selezionato\n" +"%t = ora/data\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"Repliche CTCP - Codici speciali:\n" +"\n" +"%d = dati (ctcp intero)\n" +"%e = nome della rete corrente\n" +"%m = informazioni sul computer\n" +"%s = nick che ha inviato il ctcp\n" +"%t = ora/data\n" +"%2 = parola 2\n" +"%3 = parola 3\n" +"&2 = parola 2 alla fine della linea\n" +"&3 = parola 3 allafine della linea\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"Gestore URL - Codici speciali:\n" +"\n" +"%s = stringa dell'URL\n" +"\n" +"Inserire ! davanti al comando\n" +"indica che dovrebbe essere inviato\n" +"ad una shell invece che ad XChat" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: Comandi definiti dall'utente" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: Menà popup lista utente" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Sostituisci con" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: Sostituisci" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: Gestore URL" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: Pulsanti lista utente" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: Pulsanti dialogo" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: Repliche CTCP" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "Li_sta Reti..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "_Nuovo" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Scheda Server..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Scheda Canale..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Finestra Server..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Finestra Canale..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "C_arica Plugin o Script" + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "_Esci" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "_Visualizza" + +#: src/fe-gtk/menu.c:1591 +#, fuzzy +msgid "_Menu Bar" +msgstr "Barra del _Menù" + +#: src/fe-gtk/menu.c:1592 +#, fuzzy +msgid "_Topic Bar" +msgstr "Barra Argomen_to" + +#: src/fe-gtk/menu.c:1593 +#, fuzzy +msgid "_User List" +msgstr "Lista utenti" + +#: src/fe-gtk/menu.c:1594 +#, fuzzy +msgid "U_serlist Buttons" +msgstr "Pulsanti Lista _Utenti" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "Pulsanti M_oredatori" + +#: src/fe-gtk/menu.c:1597 +#, fuzzy +msgid "_Channel Switcher" +msgstr "Lista Canali..." + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "_Schede" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "_Albero" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "Test _Rete" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Disattivato" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Grafico" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "_Server" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "_Disconnetti" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "_Riconnetti" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "Entra nel canale..." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "Entra nel canale..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Segna Assenza" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "Menù _Utente" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "_Impostazioni" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "_Preferenze" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Avanzate" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Risposta Automatica..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "Repliche CTCP..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Pulsanti Dialogo..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Scorciatoie di Tastiera..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Eventi Testuali..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "Gestore URL..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Comandi Utente..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Pulsanti Lista Utenti..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Popup Lista Utenti..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_Finestra" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Lista dei Ban..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Tabella Caratteri..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Chat Diretta..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Trasferimento File..." + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "Lista dei Ban..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Lista utenti ignorati..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Plugin e Script..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Raw Log..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "URL Raccolti..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Reset linea di demarcazione" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "Cance_lla Testo" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Cerca Testo..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Salva Testo..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_Aiuto" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "_Contenuti" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "_Informazioni" + +#: src/fe-gtk/menu.c:2147 +#, fuzzy +msgid "_Attach" +msgstr "_Attacca Finestra" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Ultima volta visto" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Non collegato" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Mai" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, fuzzy, c-format +msgid "%d minutes ago" +msgstr "%u minuti fa" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Collegato" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Inserisci nickname da aggiungere:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "Notifica su queste reti:" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "E' accettata la virgola per separare la lista delle reti." + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "XChat: Lista File Inviata" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "Apri Dialogo" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:591 +#, fuzzy +msgid "_Hide" +msgstr "Nascondi" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +#, fuzzy +msgid "Channel Message" +msgstr "Nome del canale" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +#, fuzzy +msgid "Private Message" +msgstr "Emetti un beep per messaggio privato ricevuto" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +#, fuzzy +msgid "Highlighted Message" +msgstr "Emetti un beep per messaggio evidenziato" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "Assente" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Versione" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Descrizione" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Seleziona il Plugin o lo Script da caricare" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: Plugin e Script" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "_Carica..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "_Scarica" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Salva Come..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: Rawlog (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Cancella rawlog" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "La finestra che hai aperto per questa ricerca non esiste più." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "Ricerca finita, non trovato." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: Cerca" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "_Riscontro caso" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "Cerca _dietro" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "_Trova" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Nuova Rete" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Vuoi veramente rimuovere la rete \"%s\" e tutti i suoi server?" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "canale" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: Lista Canali (%s)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "Password:" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "_Modifica" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "Nome utente e nome reale non possono essere vuoti." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: Modifica %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Server per %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Connetti solo al server selezionato" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Non ricollegarsi attraverso i server quando la connessione fallisce." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Tuoi Dettagli" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Usa informazioni utente globali" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "_Nick name:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Seconda scelta:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "Nome _Utente:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "Nome Rea_le:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Connessione" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Connetti automaticamente a questa rete all'avvio" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "Usa un server proxy" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "Usa SSL per tutti i server di questa rete" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Accetta certificati SSL invalidi" + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "Lascia canale:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "Canali nei quali entrare, separati da virgola, ma senza spazi!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Comando dopo connessione:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Comando extra da eseguire dopo la connessione. Se necessiti di più comandi, " +"imposta questo per caricare -e <filename>, dove <filename> è un file di " +"testo con tutti i comandi da eseguire." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Password del Nickserv:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Se il tuo nickname richiede una password, inseriscila qui. Non tutte le reti " +"IRC lo supportano." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Password del Server:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Password per il server, in caso di dubbio, lasciare vuoto." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Imposta Carattere:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: Lista Reti" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Informazioni Utente" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Terza scelta:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Reti" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "Salta lista reti all'avvio" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "_Modifica..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "_Ordina" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "_Connetti" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Aspetto Area Testo" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Carattere:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Immagine di sfondo:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Linee visibili:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Nickname colorati" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Assegna a ciascuna persona su IRC un colore differente" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Rientra nickname" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Nickname giustificati a destra" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Trasparenza di sfondo" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Mostra linea di demarcazione" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Inserisci una linea rossa dopo l'ultimo messaggio letto." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Impostazioni Trasparenza" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Rosso:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Verde:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Blu:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Stampa Ora" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Attiva stampa ora" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Formato stampa ora:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Vedi la guida di strftime per dettagli." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "Ordina per ultimo che ha parlato" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Area Input" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Usa carattere e colori dell'area testo" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Controllo del periodo" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Completa Nick" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "Completa automaticamente il nick (senza tasto TAB)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Suffisso al completamento nick:" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "Completamento nick ordinati:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Codici Area Input" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Interpreta %nnn come un valore ASCII" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Interpreta %C, %B come Colore, Grassetto ecc." + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, Prima gli Op" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, Dopo gli Op" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Non ordinare" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Alta" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Parte inferiore" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Nascondi" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Lista utenti" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Mostra hostname nella lista utenti" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Lista utenti ordinata per:" + +#: src/fe-gtk/setup.c:205 +#, fuzzy +msgid "Show user list at:" +msgstr "Mostra/Nascondi lista utenti" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Traccia delle assenze" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "Trova lo stato di assenza degli utenti e segnali con colore differente" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "Sui canali più piccoli di:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Azione per doppio click" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Finestre" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Schede" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Sempre" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Solo schede richieste" + +#: src/fe-gtk/setup.c:242 +#, fuzzy +msgid "Tree" +msgstr "_Albero" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Apri una scheda extra per i messaggi del server" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Apri una scheda extra per le notizie del server" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "Apri una nuova scheda quando ricevi un messaggio privato" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Ordina schede in modo alfabetico" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "Schede piccole" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Apri la nuova scheda:" + +#: src/fe-gtk/setup.c:258 +#, fuzzy +msgid "Show channel switcher at:" +msgstr "Sui canali più piccoli di:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Caratteri nomi schede:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "lettere." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Schede o Finestre" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Apri canali in:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Apri dialoghi in:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Apri utilità in:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Apri DCC, lista ignorati, notifiche ecc, in schede o finestre?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "No" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Si" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "Sfoglia per cartelle da salvare ogni momento" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "File e Cartelle" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Accetta automaticamente i file offerti:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Download file in:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Muovi file completi in:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Salva nickname nei nomi dei file " + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Impostazioni Rete" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Prendi il mio indirizzo dal server IRC" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Chiedi al server IRC il tuo indirizzo reale. Usa questo se hai un indirizzo " +"192.168.*.*!" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "DCC indirizzo IP:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Segnala questo indirizzo quando offri file." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Prima porta invio DCC:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Ultima porta invio DCC:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!Lascia porte a zero per range pieno." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Velocità di trasferimento file massima (byte per secondo)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Un Upload:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Velocità massima per un trasferimento" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Un download:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Tutti gli upload combinati:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Velocità massima per tutti i file" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Tutti i download combinati:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Avvisi" + +#: src/fe-gtk/setup.c:333 +#, fuzzy +msgid "Show tray balloons on:" +msgstr "Mostra schede a:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "" + +#: src/fe-gtk/setup.c:341 +#, fuzzy +msgid "Highlighted Messages" +msgstr "Emetti un beep per messaggio evidenziato" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:344 +#, fuzzy +msgid "Extra words to highlight:" +msgstr "Parole extra da evidenziare su:" + +#: src/fe-gtk/setup.c:345 +#, fuzzy +msgid "Nick names not to highlight:" +msgstr "Nick da non evidenziare su:" + +#: src/fe-gtk/setup.c:346 +#, fuzzy +msgid "Nick names to always highlight:" +msgstr "Nick da non evidenziare su:" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Separa più parole con virgole" + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Messaggi di default" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Esci:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Lascia canale:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Assente:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Assente" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Annuncia messaggi di assenza" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Annuncia i tuoi messaggi di assenza a tutti i canali" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Mostra una volta il messaggio di assenza" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Mostra i messaggi di assenza identici una volta" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Togli automaticamente lo stato di assenza" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Togli l'assenza prima di mandare messaggi" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Impostazioni Avanzate" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Connettiti automaticamente dopo:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Mostra modalità in forma raw" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Esegui Whois su notifica" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" +"Invia un /WHOIS quando un utente della tua lista di notifica si collega" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Nascondi messaggi di entrata e uscita" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Nascondi i messaggi di entrata/uscita nei canali" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Apri automaticamente finestre DCC" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Finestra d'invio" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Finestra di ricezione" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Finestra Chat" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Logging" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "Attiva log delle conversazioni" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "File di Log:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Server %c=Canale %n=Rete." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Inserisci orario nei log" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Formato stampa ora dei Log:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Disabilitato)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Sock4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Sock5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Tutte le connessioni" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "Solo Server IRC" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "Ricevi solo DCC" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Tuo Indirizzo" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Abbina a:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "Utile solo per computer con indirizzi multipli" + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Proxy Server" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Hostname:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Porta:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Tipo:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Usa proxy per:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Autenticazione Proxy" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Usa autenticazione (MS Proxy, HTTP o solo Socks5)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Usa autenticazione (HTTP o solo Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Username:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Password:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Seleziona un File Immagine" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "Seleziona Cartella di Download" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Seleziona carattere" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Sfoglia..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Segna utenti identificati con:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Segna utenti non identificati con:" + +#: src/fe-gtk/setup.c:1161 +#, fuzzy +msgid "Open Data Folder" +msgstr "Apri Cartella..." + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Seleziona un colore" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Colore del testo" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "Colori di mIRC:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Colori locali" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Primo piano" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Sfondo" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Seleziona testo" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Interfaccia Colori" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Nuova data:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Seleziona linea:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Nuovo messaggio:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Utente assente:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Evidenziazione:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Evento" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Suona file" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Seleziona un file musicale" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Metodo esecuzione suono:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "_Programma di suono esterno" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "Programma _esterno" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_Automatico" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "Suona file _cartella:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Suona file:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "_Sfoglia..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "_Play" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Interfaccia" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Area testo" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Lista utenti" + +#: src/fe-gtk/setup.c:1703 +#, fuzzy +msgid "Channel switcher" +msgstr "Lista Canali..." + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Colori" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Chatting" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Generale" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Suono" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Setup Rete" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "File trasferiti" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Categorie" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" +"Alcune impostazioni sono state cambiate e richiedono il riavvio per essere " +"attuate." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*ATTENZIONE*\n" +"L'auto accettazione DCC nella tua cartella home\n" +"può essere pericoloso e soggetto a exploit. Esempio:\n" +"Qualcuno può mandarti un .bash_profile" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: Preferenze" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "C'è stato un errore analizzando la stringa" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Questo segnale ha passato solo %d argomenti, $%d non è valido" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Stampa testo su un file" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Modifica Eventi" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ Numero" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Carica Da..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Testa Tutto" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: URL Raccolto" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Cancella lista" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Copia URL selezionato" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Copia" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Salva lista su un file" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d op, %d totali" + +#~ msgid "" +#~ "Set per channel options\n" +#~ "CHANOPT CONFMODE ON|OFF - Toggle conf mode/showing of join and part " +#~ "messages\n" +#~ "CHANOPT COLORPASTE ON|OFF - Toggle color paste\n" +#~ "CHANOPT BEEP ON|OFF - Toggle beep on message" +#~ msgstr "" +#~ "Opzioni del canale\n" +#~ "CHANOPT CONFMODE ON|OFF - Imposta la modalità visiva dei messaggi di " +#~ "entrata e uscita dai canali\n" +#~ "CHANOPT COLORPASTE ON|OFF - Imposta il colore dei messaggi incollati\n" +#~ "CHANOPT BEEP ON|OFF - Imposta il beep sui messaggi ricevuti" + +#~ msgid "US Minor Outlying Islands" +#~ msgstr "Isole esterne minori americane" + +#~ msgid "Direct client-to-client" +#~ msgstr "Client-to-client diretto" + +#~ msgid "Send File" +#~ msgstr "Invia un File" + +#~ msgid "Offer Chat" +#~ msgstr "Invita ad una discussione" + +#~ msgid "Abort Chat" +#~ msgstr "Abbandona la discussione" + +#~ msgid "Userinfo" +#~ msgstr "Informazioni utente" + +#~ msgid "Clientinfo" +#~ msgstr "Informazioni sul client" + +#~ msgid "Time" +#~ msgstr "Tempo" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "Operatore" + +#~ msgid "Kill this user" +#~ msgstr "Uccidi (kill) questo utente" + +#~ msgid "Mode" +#~ msgstr "Modalità" + +#~ msgid "Give Half-Ops" +#~ msgstr "Assegna lo stato di Half-Op" + +#~ msgid "Take Half-Ops" +#~ msgstr "Rimuovi lo stato di Half-Op" + +#~ msgid "Ignore" +#~ msgstr "Ignora" + +#~ msgid "Ignore User" +#~ msgstr "Ignora utente" + +#~ msgid "UnIgnore User" +#~ msgstr "Annulla ignora utente" + +#~ msgid "Info" +#~ msgstr "Info" + +#~ msgid "Who" +#~ msgstr "Who" + +#~ msgid "DNS Lookup" +#~ msgstr "Risoluzione DNS" + +#~ msgid "Trace" +#~ msgstr "Trace" + +#~ msgid "UserHost" +#~ msgstr "Host dell'utente" + +#~ msgid "External" +#~ msgstr "Esterni" + +#~ msgid "Traceroute" +#~ msgstr "Traceroute" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "%s loaded successfully!\n" +#~ msgstr "%s caricamento riuscito!\n" + +#~ msgid "Unban" +#~ msgstr "Rimuovi Ban" + +#~ msgid "I can't save an empty list!" +#~ msgstr "Non posso salvare una lista vuota!" + +#~ msgid "List display options:" +#~ msgstr "Lista opzioni display:" + +#~ msgid "Minimum Users:" +#~ msgstr "Utenti Minimi" + +#~ msgid "Maximum Users:" +#~ msgstr "Utenti Massimi" + +#~ msgid "Regex Match:" +#~ msgstr "Frase da cercare:" + +#~ msgid "Apply Match to:" +#~ msgstr "Applica Riscontro a:" + +#~ msgid "Apply" +#~ msgstr "Applica" + +#~ msgid "Refresh the list" +#~ msgstr "Aggiorna la lista" + +#~ msgid "Save the list" +#~ msgstr "Salva la lista" + +#~ msgid "None" +#~ msgstr "Niente" + +#~ msgid "To" +#~ msgstr "A" + +#~ msgid "Started" +#~ msgstr "Avviato" + +#~ msgid "Speed limit" +#~ msgstr "Limite di Velocità" + +#~ msgid "XChat: File Receive List" +#~ msgstr "XChat: Lista File Ricevuti" + +#~ msgid "Open" +#~ msgstr "Apri" + +#~ msgid "Ack" +#~ msgstr "Trasferito" + +#~ msgid "To/From" +#~ msgstr "A/Da" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "Nessuna altra scheda aperta, chiudere xchat?" + +#~ msgid "Show join/part messages" +#~ msgstr "Mostra messaggi di entrata/uscita" + +#~ msgid "Color paste" +#~ msgstr "Incolla colore" + +#~ msgid "Go to" +#~ msgstr "Vai a" + +#~ msgid "_Close Tab" +#~ msgstr "_Chiudi Scheda" + +#~ msgid "_Layout" +#~ msgstr "_Disposizione" + +#~ msgid "Notify List..." +#~ msgstr "Lista Notifiche..." + +#~ msgid "_Close Window" +#~ msgstr "_Chiudi Finestra" + +#~ msgid "User" +#~ msgstr "Utente" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: Lista Notifiche" + +#~ msgid "C_hannels to join:" +#~ msgstr "C_anale nel quale entrare:" + +#~ msgid "Resizable user list" +#~ msgstr "Lista utenti adattabile" + +#~ msgid "Left" +#~ msgstr "Sinistra" + +#~ msgid "Right" +#~ msgstr "Destra" + +#~ msgid "(Can be a text file relative to ~/.xchat2/)." +#~ msgstr "(Può essere un file di testo relativo a ~/.xchat2/)." + +#~ msgid "(Can be a text file relative to config dir)." +#~ msgstr "" +#~ "(Può essere un file di testo relativo alla cartella di configurazione)." + +#~ msgid "Flash taskbar on highlighted messages" +#~ msgstr "Taskbar lampeggiante ai messaggi evidenziati" + +#~ msgid "Flash taskbar on any private messages" +#~ msgstr "Taskbar lampeggiante ai messaggi evidenziati" + +#~ msgid "Beep on channel messages" +#~ msgstr "Emetti un beep per messaggio ricevuto in canale" + +#~ msgid "PID" +#~ msgstr "PID" + +#~ msgid "Server" +#~ msgstr "Server" + +#~ msgid "%C18*$t$1%O $2" +#~ msgstr "%C18*$t$1%O $2" + +#~ msgid "%C21*%O$t%C21%B$1%O%C21 $2" +#~ msgstr "%C21*%O$t%C21%B$1%O%C21 $2" + +#~ msgid "%C18%H<%H$4$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$4$1%H>%H%O$t$2" + +#~ msgid "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" +#~ msgstr "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" + +#~ msgid "%C28-%C29$1/$2%C28-%O$t$3" +#~ msgstr "%C28-%C29$1/$2%C28-%O$t$3" + +#~ msgid "$1$t$2" +#~ msgstr "$1$t$2" + +#~ msgid "%C19>%O$1%C19<%O$t$2" +#~ msgstr "%C19>%O$1%C19<%O$t$2" + +#~ msgid "%C16*%O$t$1%O" +#~ msgstr "%C16*%O$t$1%O" + +#~ msgid "%C28-%C29$1%C28-%O$t$2" +#~ msgstr "%C28-%C29$1%C28-%O$t$2" + +#~ msgid "%C28*%C29$3$1%C28*$t%O$2" +#~ msgstr "%C28*%C29$3$1%C28*$t%O$2" + +#~ msgid "%C18%H<%H$3$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$3$1%H>%H%O$t$2" + +#~ msgid "%C22*%O$t$1" +#~ msgstr "%C22*%O$t$1" + +#~ msgid "%C31%H<%H$4$1%H>%H%O%C30$t$2" +#~ msgstr "%C31%H<%H$4$1%H>%H%O%C30$t$2" + +#~ msgid "Open an irc:// url" +#~ msgstr "Apri un irc:// url" + +#~ msgid "irc://server:port/channel" +#~ msgstr "irc://server:porta/canale" + +#~ msgid "Execute a xchat command" +#~ msgstr "Esegui un comando di xchat" + +#~ msgid "\"Command to execute\"" +#~ msgstr "\"Comando da eseguire\"" + +#~ msgid "Prints some text to the current tab/window" +#~ msgstr "Stampa testo dalla scheda/finestra corrente" + +#~ msgid "\"Text to print\"" +#~ msgstr "\"Testo da stampare\"" + +#~ msgid "Change the context to the channel" +#~ msgstr "Cambia il contesto al canale" + +#~ msgid "Change the context to the server" +#~ msgstr "Cambia il contesto al server" + +#~ msgid "server" +#~ msgstr "server" + +#~ msgid "Get some informations from xchat" +#~ msgstr "Ottieni alcune informazioni da xchat" + +#~ msgid "id" +#~ msgstr "id" + +#~ msgid "Get settings from xchat" +#~ msgstr "Ottieni impostazioni da xchat" + +#~ msgid "name" +#~ msgstr "nome" + +#~ msgid "" +#~ "xchat-remote: %s\n" +#~ "Try `xchat-remote --help' for more information\n" +#~ msgstr "" +#~ "xchat-remote: %s\n" +#~ "Prova `xchat-remote --help' per maggiori informazioni\n" + +#~ msgid "Failed to complete SetContext" +#~ msgstr "Completamento di SetContext fallito" + +#~ msgid "Failed to complete print" +#~ msgstr "Completamento di stampa fallito" + +#~ msgid "Failed to complete GetInfo" +#~ msgstr "Completamento di GetInfo fallito" + +#~ msgid "Failed to complete GetPrefs" +#~ msgstr "Completamento di GetPrefs fallito" + +#~ msgid "%s doesn't exist\n" +#~ msgstr "%s non esiste\n" diff --git a/xchat-2.8.8/po/ja.gmo b/xchat-2.8.8/po/ja.gmo new file mode 100644 index 0000000000000000000000000000000000000000..6ba82b3b835c5097bce8db629dc2fc199a1611a7 GIT binary patch literal 78583 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 ALjV8( literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/po/ja.po b/xchat-2.8.8/po/ja.po new file mode 100644 index 0000000..4137827 --- /dev/null +++ b/xchat-2.8.8/po/ja.po @@ -0,0 +1,7117 @@ +# xchat for Japanese +# Copyright (C) 1999-2002 Free Software Foundation, Inc. +# +# Yuusuke Tahara <tahara@gehenna.u-aizu.ac.jp>, 1999 +# Takuo KITAME <kitame@debian.org>, 2000 +# Yukihiro Nakai <nakai@gnome.gr.jp>, 2002 +# Tadashi Jokagi <elf2000@users.sourceforge.net>, 2005-2006. +# +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.6.3\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2006-08-07 19:04+0900\n" +"Last-Translator: Tadashi Jokagi <elf2000@users.sourceforge.net>\n" +"Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "~/.xchat2 を作成できません。" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "多忙" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "さようなら" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* IRC を root 権限で立ち上げるなんて愚かにも程があります!\n" +" きちんとユーザーアカウント作成してから そのユーザーで\n" +" ログインしなおしてください。\n" +"\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "待機中" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "アクティブ" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "失敗" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "終了" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "接続" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "中断" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "%s へアクセスできません。\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "エラー" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s が「%s」を提案しています。受け付けますか?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "アクティブな DCC はありません\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "はい " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "いいえ " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "%s から大量の CTCP が来ました。%s を無視します。\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "" +"%s から大量の MSG が来ました。設定 gui_auto_open_dialog をオフにします。\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s オンライン\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s オフライン\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "" +"チャンネルに参加していません。「/join #<チャンネル>」を実行してください。\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "" +"サーバーと接続していません。「/server <ホスト> [<ポート>]」を実行してくださ" +"い。\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "実行には /bin/sh が必要です!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "以下のコマンドが利用できます:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "ユーザー定義コマンド:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "プラグイン定義コマンド:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "詳細は「/HELP <コマンド>」もしくは「/HELP -l」と入力してください。" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "不明な引数 '%s' を無視します。" + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "そのようなプラグインはありません。\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "そのプラグインの読み込み解除を拒絶しています。\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <名前> <動作>, ユーザーリストの下にボタンを加える" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <コマンド>, 参加している全チャンネルへコマンドを送信する" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHANL <コマンド>, 参加している全チャンネルへコマンドを送信する" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <コマンド>, 入っている全サーバーにコマンドを送信する" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<理由>], 離席状態にする" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <マスク> [<禁止タイプ>], 現在のチャンネルから, マスクに一致するニックをバ" +"ンする. 既にチャンネルに参加しているニックに関しては効果がない (なるとが必要)" + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "SET [-quiet] <変数> [<値>]" + +#: src/common/outbound.c:3508 +#, fuzzy +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "CLEAR, 現在のテキストウィンドウの内容を消去する" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, 現在のウィンドウ/タブを閉じる" + +#: src/common/outbound.c:3512 +#, fuzzy +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY <コード>, 国コードを検出, 例: au = オーストラリア" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <ニック> <メッセージ>, CTCP メッセージを指定のニックへ送信する。メッセー" +"ジは普通, VERSION や USERINFO を使う" + +#: src/common/outbound.c:3516 +#, fuzzy +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "CYCLE, 現在のチャンネルを離れ, 直後に再参加する" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <ニック> - 差し出されたファイルを受け取る\n" +"DCC SEND [-maxcps=#] <ニック> <ファイル> - ファイルを送信する\n" +"DCC PSEND [-maxcps=#] <nick> [file] - パッシブモードでファイルを送信す" +"る\n" +"DCC LIST - DCC 一覧を表示する\n" +"DCC CHAT <ニック> - DCC CHAT を申し込む\n" +"DCC PCHAT <ニック> - パッシブモードで DCC CHAT を申し込" +"む\n" +"DCC CLOSE <種類> <ニック> <ファイル> 例:\n" +" /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <ニック>, 現在のチャンネルの指定ニックからハーフなるとを剥奪する (なる" +"とが必要)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <ボタン名>, ユーザーリストの下のボタンを削除する" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <ニック>, 現在のチャンネルの指定ニックからなるとを剥奪する (なるとが必" +"要)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <ニック>, 現在のチャンネルの指定ニックから, 発言権を削除する (なると" +"が必要)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, サーバーからの接続を切断する" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <ニック名|ホスト|IP>, ユーザーの IP アドレスを検索する" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO テキスト, テキストをローカル上に表示する" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <コマンド>, コマンドを実行する. -o フラグを利用すると出力は現在の" +"チャンネルへ送信する。それ以外は現在のテキスト・ボックスに表示する" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, プロセスに対して SIGCONT を発行する" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], 現在のプロセスに対してシグナルを発行する。-9 を指定した場合、" +"プロセスは SIGKILL される" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, プロセスに対して SIGSTOP を発行する" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, プロセスの標準入力へデータを送信する" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, 現在サーバーの送信キューをフラッシュする" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <ホスト> [<ポート>], 指定ホストを通したプロキシ。標準ポートは 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <nick> <password>, ゴーストになってしまったニック名を削除する" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <ニック>, 指定のニックにハーフなるとを与える (なるとが必要)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <パスワード>, nickserv に自分を確認します" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"/IGNORE <マスク> <種類...> <オプション...>\n" +" マスク - 無視するホスト名のマスク, 例: *!*@*.ne.jp\n" +" 種類 - 無視するデータの種類, 以下の一つもしくは全部:\n" +" PRIV, CHAN, NOTI, CTCP, INVI, ALL\n" +" オプション - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <ニック> [<チャンネル>], 指定のチャンネルへ招待する。標準では現在の" +"チャンネル名 (なるとが必要)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <チャンネル>, チャンネルに参加する" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <ニック>, 現在のチャンネルから指定のニックをキックする (なるとが必要)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <ニック>, 現在のチャンネルから指定のニックをキックし、さらにバンする " +"(なるとが必要)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, 新規ラグチェックを強制する" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <文字列>, バッファ中から文字列を検索する" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <ファイル>, スクリプトかプラグインを読み込む" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP, 現在のチャンネルの全員のハーフなるとを剥奪する (なるとが必要)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, 現在のチャンネルの全員のなるとを剥奪する (なるとが必要)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <行動>, 現在のチャンネルに対して, 指定の ACTION を送信する (行動は 『/me " +"jumps』のように第3者側で書かれる)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, 現在のチャンネルの自分以外の全員をキックする (なるとが必要)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, 現在のチャンネルの全員のなるとを剥奪する (なるとが必要)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <ニック> <メッセージ>, プリブを送信する" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, 現在のチャンネルのニックリストを表示する" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <ニック> <メッセージ>, CTCP NOTICE を送信する" + +#: src/common/outbound.c:3608 +#, fuzzy +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER <ホスト名> [<ポート>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <ニック>, 自分のニックを設定する" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <ニック/チャンネル> <メッセージ>, NOTICE を送信する。NOTICE は自動的に" +"応答されるメッセージである" + +#: src/common/outbound.c:3614 +#, fuzzy +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [<ニック>], 自分の通知リストを表示する、または誰かをそれに追加する" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <ニック>, 指定のニックになるとを与える (なるとが必要)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" +"PART [<チャンネル>] [<理由>], チャンネルを去る。デフォルトでは現在のチャンネ" +"ル" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <ニック | チャンネル>, ニックかチャンネルへ CTCP PING をかける" + +#: src/common/outbound.c:3622 +#, fuzzy +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "QUERY <ニック>, 指定ニックとの新規ぷりぶウィンドウを開く" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<理由>], 現在のサーバーから接続を切断する" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <テキスト>, サーバーへ生形式のテキストを送信する" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<ホスト>] [<ポート>] [<パスワード>], /RECONNECTだけで現在の" +"サーバーに接続しなおすこともできるし、/RECONNECT ALLで開いているサーバーすべ" +"てに接続しなおすこともできる" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<ホスト>] [<ポート>] [<パスワード>], /RECONNECTだけで現在のサー" +"バーに接続しなおすこともできるし、/RECONNECT ALLで開いているサーバーすべてに" +"接続しなおすこともできる" + +#: src/common/outbound.c:3634 +#, fuzzy +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "/QUOTE <テキスト>, サーバーへ生形式のテキストを送信する\n" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <テキスト>, カレントウィンドウのオブジェクトへテキストを送信する" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <ニック> [<ファイル>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <ホスト> <ポート> <チャンネル>, 接続およびチャンネルへ参加す" +"る" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN <ホスト> <ポート> <チャンネル>, 接続およびチャンネルへ参加する" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <ホスト> [<ポート>] [<パスワード>], サーバーへ接続する。通常の" +"接続では標準ポート番号は6667、ssl接続では994" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <ホスト> [<ポート>] [<パスワード>], サーバーへ接続する。標準ポート番号" +"は6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-quiet] <変数> [<値>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<位置>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<トピック>], トピックを設定する。引数がなければ現在のトピックを表示す" +"る" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <マスク> [<マスク>...], 指定したマスクのBanを解除する" + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <マスク> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <名前> プラグインかスクリプトの読み込みをやめる" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, ブラウザーで URL を開く" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <ニック1> <ニック2> など、チャンネルのユーザー一覧のニック" +"をハイライトにします" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <ニック>, 発言権を指定のニックへ与える (なるとが必要)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <メッセージ>, 全チャンネルへメッセージを送信する" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <メッセージ>, 現在のチャンネルのなると保持者全員へメッセージを送信す" +"る" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "使い方: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"このコマンドのヘルプは利用できません.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "そのようなコマンドはありません.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "ユーザーコマンドに対して不正な引数を与えています.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "ユーザーコマンドの再帰が多すぎます。アボートします。" + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "不明なコマンドです. 『/help』を実行してください。\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "" +"シンボル「xchat_plugin_init」がありません。これは本当に xchat のプラグインで" +"すか?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"ホスト名「%s」を解決できません。\n" +"IP 設定を確認してください!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 を通知リストへ追加しました。" + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 バン一覧:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +#, fuzzy +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "-%C10-%C11-%O$t Ban されているため %C11%B$1%O 参加できません。" + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 は $2 にニックを変更しました。" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 は $2 をバンしました。" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "-%C10-%C11-%O$t$2 にチャンネル $1 が作成されました。" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O は %C26$2 からハーフなるとを剥奪しました。" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O は $2 からなるとを剥奪しました。" + +#: src/common/textevents.h:39 +#, fuzzy +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "-%C10-%C11-%O$t$1 は $2 から発言権を剥奪しました。" + +#: src/common/textevents.h:42 +#, fuzzy +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "-%C10-%C11-%O$t$1 はチャンネル $2 への免除設定しました。" + +#: src/common/textevents.h:45 +#, fuzzy +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "-%C10-%C11-%O$t$1 は $2 にハーフなるとを与えました。" + +#: src/common/textevents.h:48 +#, fuzzy +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "-%C10-%C11-%O$t$1 は INVITE マスクを設定しました.: $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%Uチャンネル ユーザー トピック" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "-%C10-%C11-%O$t$1 はモードを $2$3 $4 に設定しました。" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22$t チャンネル $1 モード: $2" + +#: src/common/textevents.h:69 +#, fuzzy +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "-%C10-%C11-%O$t$1 は $2 になるとを与えました。" + +#: src/common/textevents.h:72 +#, fuzzy +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "-%C10-%C11-%O$t$1 は $2 への免除を削除しました。" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 は INVITE マスクを削除しました: $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 はチャンネルキーワードを削除しました。" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 はユーザー数制限を削除しました。" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 はチャンネルにキーワード $2 を設定しました。" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 はチャンネルを $2 に制限しました。" + +#: src/common/textevents.h:90 +#, fuzzy +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "-%C10-%C11-%O$t$1 は $2 に対するバンを取り外しました。" + +#: src/common/textevents.h:93 +#, fuzzy +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "-%C10-%C11-%O$t$1 は $2 に発言権を与えました。" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22接続しました。直ちにログインします..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22サーバー $1($2) の、ポート$3 へ接続中%O..." + +#: src/common/textevents.h:102 +#, fuzzy +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "-%C10-%C11-%O$t 接続に失敗しました. エラー: $1" + +#: src/common/textevents.h:105 +#, fuzzy +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "-%C10-%C11-%O$tCTCP 一般 $1 を $2 から受け取りました。" + +#: src/common/textevents.h:108 +#, fuzzy +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "-%C10-%C11-%O$t$2 から($3へ), CTCP $1 を受け取りました。" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tCTCP サウンド $1 を $2 から受け取りました。" + +#: src/common/textevents.h:117 +#, fuzzy +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "-%C10-%C11-%O$t$2 から($3へ), CTCP $1 を受け取りました。" + +#: src/common/textevents.h:120 +#, fuzzy +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "-%C10-%C11-%O$tDCC $1 %C11$2 %Cto %C11$3 %C は中断しました。" + +#: src/common/textevents.h:123 +#, fuzzy +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "" +"-%C10-%C11-%O$tDCC $1 の $4 %C11$2 %C14[%O$3%C14]%O への接続を確立しました。" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$t %C26$1%O との DCC CHAT を失いました ($4)" + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$t$1 から DCC チャット提案を受け取りました。" + +#: src/common/textevents.h:132 +#, fuzzy +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "-%C10-%C11-%O$t$1 への DCC チャットを提案しています。" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$t既に $1 へのチャットは提案しています。" + +#: src/common/textevents.h:138 +#, fuzzy +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "-%C10-%C11-%O$t%C11$2%O への DCC $1 の接続に失敗しました (エラー=$3)。" + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$t$2 から 「$1%O」を受け取りました。" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 種類 To/From 状態 容量 Pos ファイル " + +#: src/common/textevents.h:147 +#, fuzzy +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O.%010%C22*%O" +"$tContents of packet: $2" +msgstr "-%C10-%C11-%O$t%C11$1%O から異常な DCC チャット要求を受け取りました。" + +#: src/common/textevents.h:150 +#, fuzzy +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "-%C10-%C11-%O$t%C11$1 %C を %C11$2%Oへ提案しています...%O" + +#: src/common/textevents.h:153 +#, fuzzy +msgid "%C22*%O$tNo such DCC offer." +msgstr "-%C10-%C11-%O$t そのような DCC 提案はありません。" + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "" + +#: src/common/textevents.h:159 +#, fuzzy +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"-%C10-%C11-%O$t%C11$1%Oの %C11$2%O への DCC 送信は %C14[%C11$3%O cps%C14]%O " +"を完了。" + +#: src/common/textevents.h:162 +#, fuzzy +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "" +"-%C10-%C11-%O$tDCC $1 の $4 %C11$2 %C14[%O$3%C14]%O への接続を確立しました。" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "" + +#: src/common/textevents.h:168 +#, fuzzy +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "-%C10-%C11-%O$tDCC RECV: 出力ファイル $1 を開けません - 中断します。" + +#: src/common/textevents.h:171 +#, fuzzy +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "" +"-%C10-%C11-%O$t ファイル %C11$1%C は既に存在します. かわりに, このファイルを " +"%C11$2%O へ保存します。" + +#: src/common/textevents.h:174 +#, fuzzy +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "" +"-%C10-%C11-%O$t%C11$1 %C は %C11$3%C から %C11$2 %C の再開を要求しました。" + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$t $2%O から $1%O への DCC を中断しました。" + +#: src/common/textevents.h:180 +#, fuzzy +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"-%C10-%C11-%O$t%C11$1%O の %C11$2%O への DCC送信は %C14[%C11$3%O cps%C14]%O " +"を完了。" + +#: src/common/textevents.h:183 +#, fuzzy +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "" +"-%C10-%C11-%O$tDCC $1 の $4 %C11$2 %C14[%O$3%C14]%O への接続を確立しました。" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND%C26 $1%O から %C26 $2%O への送信に失敗しました。 $3" + +#: src/common/textevents.h:189 +#, fuzzy +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "-%C10-%C11-%O$t%C11$1 %C は %C11$2 %C(%C11$3 %Cバイト)を提案しました。" + +#: src/common/textevents.h:192 +#, fuzzy +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "" +"-%C10-%C11-%O$t%C11$3%C への %C11$2%C のDCC $1 は停滞しています - 中断しま" +"す。" + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %O から %C26 $3 %Oタイムアウト - 中断します。" + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 通知一覧から削除しました。" + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$t 接続を切断しました ($1)。" + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$t 自分のIPを見付けました: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O 無視リストへ追加しました。" + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "%C26$1%O の無視設定を変更しました。" + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 ホストマスク PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O 無視リストから削除しました。" + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " 無視リストの内容が空です。" + +#: src/common/textevents.h:228 +#, fuzzy +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "" +"-%C10-%C11-%O$t%C11%B$1 %O は招待のみのチャンネルなため参加できません。" + +#: src/common/textevents.h:231 +#, fuzzy +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "" +"-%C10-%C11-%O$t %C11$2%C から チャンネル %C11$1%C へ招待されました.(%C11$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) は $2 へ参加しました。" + +#: src/common/textevents.h:237 +#, fuzzy +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "-%C10-%C11-%O$t%C11%B$1%O へ参加できません(キーワードが必要です)。" + +#: src/common/textevents.h:240 +#, fuzzy +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "<%C10-%C11-%O$t$1 は $3 から $2 をキックしました. ($4%O)" + +#: src/common/textevents.h:243 +#, fuzzy +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "-%C10-%C11-%O$t $1 によって殺されました. ($2%O)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22 MOTD を飛ばしました。" + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 は既に使用されています。$2 で再試行します..." + +#: src/common/textevents.h:258 +#, fuzzy +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$tニックはすでに使用されています。他を「/NICK」で指定してください。" + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$t そのような DCC はありません。" + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$t現在は実行プロセスがありません。" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$t通知リストの内容が空です。" + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B 通知一覧 " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 ユーザーが通知リストにいます。" + +#: src/common/textevents.h:282 +#, fuzzy +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$t 通知: $1 はオフラインです ($2)" + +#: src/common/textevents.h:285 +#, fuzzy +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "C22*%O$t通知: $1 はオンラインです ($2)。" + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) は $3 から離れました。" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "" +"%C23*%O$t%C23$1 (%O%C23$2) はチャンネル $3 から離れました(%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$t$1 からの Ping 応答 : $2 秒" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tPing 応答が $1 秒間ありません, 切断。" + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tプロセスは既に実行しています。" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 は IRC から離れました (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 はモードを %B %C30[%O$2%B%C30] へ設定しました" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +#, fuzzy +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "-%C10-%C11-%O$t%C11$1%O のIPアドレスを探しています.." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22接続しました。" + +#: src/common/textevents.h:336 +#, fuzzy +msgid "%C22*%O$t%C22Looking up $1" +msgstr "-%C10-%C11-%O$t%C11$1%C を探しています.." + +#: src/common/textevents.h:348 +#, fuzzy +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "-%C10-%C11-%O$t 以前の接続試行が中止されました. (PID=$1)" + +#: src/common/textevents.h:351 +#, fuzzy +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "-%C10-%C11-%O$t %C11$1%C のトピックは %C11$2%O です。" + +#: src/common/textevents.h:354 +#, fuzzy +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "-%C10-%C11-%O$t$1はトピックを変更しました: $2%O" + +#: src/common/textevents.h:357 +#, fuzzy +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "" +"-%C10-%C11-%O$t%C11$3%O に, %C11$1%C のトピックが %C11$2%C によって設定されま" +"した。" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$t不明なホストです。スペルミスしていませんか?" + +#: src/common/textevents.h:363 +#, fuzzy +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "" +"-%C10-%C11-%O$t%C11%B$1%O へ参加できません(ユーザー数が上限を越えました)。" + +#: src/common/textevents.h:366 +#, fuzzy +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "-%C10-%C11-%O$t%C11$1 のユーザー:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %C は離席中です %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %O以上が WhoIs 情報です。" + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O アイドル%C26 $2" + +#: src/common/textevents.h:387 +#, fuzzy +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "-%C10-%C11-%O$t%C12[%O$1%C12] %C アイドル %C11$2%C, signon: %C11$3%O" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19今 $2 で会話中です。" + +#: src/common/textevents.h:405 +#, fuzzy +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "-%C10-%C11-%O$t $3 により チャンネル $2 からキックされました ($4%O)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$t チャンネル $3 から離れました。" + +#: src/common/textevents.h:411 +#, fuzzy +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "" +"-%C10-%C11-%O$t あなたはチャンネル $3 %C14(%O$4%C14)%O から離れました。" + +#: src/common/textevents.h:417 +#, fuzzy +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "-%C10-%C11-%O$t%C11$2%C に %C11$1%C を招待しています (%C11$3%C)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$t あなたは $2 にニックを変更しました。" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** %s でログ記録終了\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** %s からログ記録開始\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* ログファイルを書き込み用に開けません。 \n" +"%s/xchatlogs のパーミッションを確認してください。" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "左メッセージ" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "右メッセージ" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "参加したニック" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "参加したチャンネル" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "ニックのホスト" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "ニックネーム" + +#: src/common/text.c:973 +msgid "The action" +msgstr "アクション" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "モード文字" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "識別テキスト" + +#: src/common/text.c:980 +msgid "The text" +msgstr "テキスト" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "メッセージ" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "旧ニックネーム" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "新ニックネーム" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "トピックを変更したニック" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "トピック" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "チャンネル" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "キックしたニック" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "キックされたニック" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "チャンネル" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "理由" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "離脱したニック" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "時間" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "作成者" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "ニック" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "理由" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "ホスト" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "誰から" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "x.x 形式による時刻 (下参照)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "発行されたチャンネル" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "サウンド" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "ニック" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "CTCP イベント" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "キーワードを設定したニック" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "キーワード" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "制限を設定したニック" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "制限" + +#: src/common/text.c:1100 +#, fuzzy +msgid "The nick of the person who did the op'ing" +msgstr "なるとをくれたニック" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "なるとをもらったニック" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "ハーフなるとをもらったニック" + +#: src/common/text.c:1106 +#, fuzzy +msgid "The nick of the person who did the halfop'ing" +msgstr "ハーフなるとをくれたニック" + +#: src/common/text.c:1110 +#, fuzzy +msgid "The nick of the person who did the voice'ing" +msgstr "発言権をくれたニック" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "発言権をもらったニック" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "バンされたニック" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "バンマスク" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "キーワードを削除したニック" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "制限を削除したニック" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "なるとを取り上げたニック" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "なるとを取られたニック" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "ハーフなるとを取り上げたニック" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "ハーフなるとを取られたニック" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "発言権を取り上げたニック" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "発言権を取り上げられたニック" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "バンを解除したニック" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "免除を行ったニック" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "免除マスク" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "免除を削除したニック" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "招待したニック" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "招待マスク" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "招待マスクを削除したニック" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "モードを設定したニック" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "モードの符号 (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "モード文字" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "チャンネルのモードは" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "ユーザー名" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "フルネーム" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "チャンネル メンバシップ /\"はIRC 管理者\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "サーバー情報" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "アイドル時間" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Signon 時間" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "離席理由" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "メッセージ" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "アカウント" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "リアル user@host" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "リアル IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "チャンネル名" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "テキスト" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "サーバー名" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "自分を招待したニック" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "ユーザー" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "使用するニック" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "次に試行するニック" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IPアドレス" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "ポート" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "ネットワーク" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "モード文字列" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "IP アドレス" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "DCC タイプ" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "ファイル名" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "目的先ファイル名" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "パス名" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "場所" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "サイズ" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "DCC 文字列" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "通知アイテム数" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "旧ファイル名" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "新ファイル名" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "受取人" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "ホストマスク" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "ホスト名" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "パケット" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "秒" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "自分を招待したニック" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "バンマスク" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "バンを設定した人" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "バン時間" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"イベント %s の解析エラーです。\n" +"デフォルトを読み込み中です。" + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"サウンドファイルの読み込みができません:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "リモートホストがソケットを閉じました。" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "接続が拒否されました。" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "ホストへの経路がありません。" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "接続時間アウト" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "そのアドレスは予約できません。" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "peerによって接続がリセットされました。" + +#: src/common/util.c:848 +#, fuzzy +msgid "Ascension Island" +msgstr "ココス諸島" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "アンドラ" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "アラブ首長国連邦" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "アフガニスタン" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "アンティグアバーブーダ" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "アンギラ" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "アルバニア" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "アルメニア" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "蘭領アンティル諸島" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "アンゴラ" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "南極大陸" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "アルゼンチン" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "逆引きDNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "米領サモア" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "オーストリア" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "NATO領地" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "オーストラリア" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "アルーバ" + +#: src/common/util.c:866 +#, fuzzy +msgid "Aland Islands" +msgstr "フォークランド諸島" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "アゼルバイジャン" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "ボスニア・ヘルツェゴビナ" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "バルバドス" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "バングラディシュ" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "ベルギー" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "ブルキナファソ" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "ブルガリア" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "バーレーン" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "ブルンジ" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "ビジネス" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "ベニン" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "バミューダ" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "ブルネイ・ダルサラーム国" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "ボリビア" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "ブラジル" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "バハマ" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "ブータン" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "ブーベ島" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "ボツワナ" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "ベラルーシ" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "ベリーズ" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "カナダ" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "ココス諸島" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "コンゴの民主主義共和国" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "中央アフリカ共和国" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "コンゴ" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "スイス" + +#: src/common/util.c:894 +#, fuzzy +msgid "Cote d'Ivoire" +msgstr "コートジボアール" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "クック諸島" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "チリ" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "カメルーン" + +#: src/common/util.c:898 +msgid "China" +msgstr "中国" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "コロンビア" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "企業" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "コスタリカ" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "セルビアとモンテネグロ" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "キューバ" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "ケープベルデ" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "クリスマス諸島" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "キプロス" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "チェコ共和国" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "ドイツ" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "ジブチ" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "デンマーク" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "ドミニカ" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "ドミニカ共和国" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "アルジェリア" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "エクアドル" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "学術機関" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "ストニア" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "エジプト" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "西サハラ" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "エリトリア" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "スペイン" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "エチオピア" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "欧州連合" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "フィンランド" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "フィジー" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "フォークランド諸島" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "ミクロネシア" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "フェロー諸島" + +#: src/common/util.c:928 +msgid "France" +msgstr "フランス" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "ガボン" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "イギリス" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "グレナダ" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "ジョージア" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "仏領ギアナ" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "英領チャネル諸島" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "ガーナ" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "ジブラルタル" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "グリーンランド" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "ガンビア" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "ギニア" + +#: src/common/util.c:940 +msgid "Government" +msgstr "政治" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "グアドループ" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "赤道ギニア" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "ギリシャ" + +#: src/common/util.c:944 +#, fuzzy +msgid "S. Georgia and S. Sandwich Isles" +msgstr "南ジョージア・南サンドイッチ諸島" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "グァテマラ" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "グアム" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "ギニアビサウ" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "ギアナ" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "香港" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "ハードマクドナルド諸島" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "ホンジュラス" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "クロアチア" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "ハイチ" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "ハンガリー" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "インドネシア" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "アイルランド" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "イスラエル" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "マン島" + +#: src/common/util.c:959 +msgid "India" +msgstr "インド" + +#: src/common/util.c:960 +#, fuzzy +msgid "Informational" +msgstr "国際" + +#: src/common/util.c:961 +msgid "International" +msgstr "国際" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "英領インド洋領域" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "イラク" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "イラン" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "アイスランド" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "イタリア" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "ジャージー" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "ジャマイカ" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "ヨルダン" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "日本" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "ケニア" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "キルギスタン" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "カンボジア" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "キリバス" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "コモロ" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "セントキッツネビス" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "北朝鮮" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "韓国" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "クエート" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "ケイマン諸島" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "カザフスタン" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "ラオス" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "レバノン" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "セントルシア" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "リヒテンシュタイン" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "スリランカ" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "リベリア" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "レソト" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "リトアニア" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "ルクセンブルク" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "ラトビア" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "リビア" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "モロッコ" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "モナコ" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "モルドバ" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "合衆国医療機関" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "マダガスカル" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "マーシャル諸島" + +#: src/common/util.c:999 +msgid "Military" +msgstr "軍事" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "マケドニア" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "マリ" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "ミャンマー" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "モンゴル" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "マカオ" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "北マリアナ諸島" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "マルティニク" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "モーリタニア" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "モントセラト" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "マルタ" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "モーリシャス" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "モルジブ" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "マラウィ" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "メキシコ" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "マレーシア" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "モザンビーク" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "ナミビア" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "ニューカレドニア" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "ニジェール" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "ネットワーク" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "ノーフォーク諸島" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "ナイジェリア" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "ニカラグア" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "オランダ" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "ノルウェー" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "ネパール" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "ナウル" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "ニウエ" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "ニュージーランド" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "オマーン" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "非営利組織" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "パナマ" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "ペルー" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "ポリネシア フランス領" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "パプアニューギニア" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "フィリピン" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "パキスタン" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "ポーランド" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "セントピエールおよびミクロン" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "ピトケイン" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "プエルトリコ" + +#: src/common/util.c:1041 +#, fuzzy +msgid "Palestinian Territory" +msgstr "英領インド洋領域" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "ポルトガル" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "パラオ" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "パラグアイ" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "カタール" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "レユニオン" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "ルーマニア" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "昔ながらの ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "ロシア連邦" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "ルワンダ" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "サウジアラビア" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "ソロモン諸島" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "セーシェル" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "スーダン" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "スウェーデン" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "シンガポール" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "セントヘレナ" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "スロベニア" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "スヴァールバルヤンマイエン諸島" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "スロバキア共和国" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "シェラレオネ" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "サンマリノ" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "セネガル" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "ソマリア" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "スリナム" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "サオトーメプリンシペ" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "旧ソビエト連邦" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "エルサルバドル" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "シリア" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "スワジランド" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "タークスカイコス諸島" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "チャド" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "仏領サザンテリトリー" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "トーゴ" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "タイ" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "タジキスタン" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "トケラウ" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "東チモール" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "トルクメニスタン" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "チュニジア" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "トンガ" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "トルコ" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "トリニダードトバゴ" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "ツバル" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "台湾" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "タンザニア" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "ウクライナ" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "ウガンダ" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "イギリス" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "アメリカ合衆国" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "ウルグアイ" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "ウズベキスタン" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "バチカン市国" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "セントビンセントおよびグレナディーン諸島" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "ベネズエラ" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "英領バージン諸島" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "米バージン諸島" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "ベトナム" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "ヴァヌアトゥ" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "ヴァリスフトゥーナ諸島" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "サモア" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "イエメン" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "マヨット" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "旧ユーゴスラビア" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "南アフリカ" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "ザンビア" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "ジンバブエ" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "不明" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "ダイアログウィンドウを開く" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "ファイル送信" + +#: src/common/xchat.c:728 +#, fuzzy +msgid "_User Info (WhoIs)" +msgstr "ユーザー情報 (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +#, fuzzy +msgid "O_perator Actions" +msgstr "オペレーター操作" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "なるとを与える" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "なるとを奪う" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Voice を与える" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Voice を奪う" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "キック/バン" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "キック" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "バン" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "キックバン" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "チャンネルを離れる" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "チャンネルへ参加..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "参加するチャンネルを入力:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "サーバーリンク" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "ピングサーバー" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "バージョンを隠す" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "なると" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "なると奪略" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "さようなら" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "%s をキックする理由を入力:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "ファイル送信" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "ダイアログ" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "送信" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Chat" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "消去" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "セッションバスに接続できません" + +#: src/common/dbus/dbus-client.c:86 +#, fuzzy +msgid "Failed to complete NameHasOwner" +msgstr "コマンドを完了していません" + +#: src/common/dbus/dbus-client.c:112 +#, fuzzy +msgid "Failed to complete Command" +msgstr "コマンドを完了していません" + +#: src/common/dbus/dbus-plugin.c:30 +#, fuzzy +msgid "remote access" +msgstr "xchat リモートアクセス" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "DBUS を用いてリモートアクセスのプラグイン" + +#: src/common/dbus/dbus-plugin.c:897 +#, fuzzy, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "セッションバスに接続できません : %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "%s の取得に失敗しました: %s\n" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "XChat について(_A)" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "マルチプラットフォーム IRC クライアント" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "文字集合" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "接続していません。" + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "いくつかのバンを選ばなければなりません。" + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "マスク" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "送り元" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "日付" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "チャンネルタブの間だけバン一覧ウィンドウを開くことができます。" + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: バン一覧 (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "削除" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "再描画" + +#: src/fe-gtk/chanlist.c:111 +#, fuzzy, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "" +"ユーザーとチャンネルの統計: %d/%d ユーザーが %d/%d チャンネルにいます。" + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "出力ファイル名の選択" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +#, fuzzy +msgid "_Join Channel" +msgstr "チャンネルへ参加" + +#: src/fe-gtk/chanlist.c:633 +#, fuzzy +msgid "_Copy Channel Name" +msgstr "チャンネル名" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: チャンネル一覧 (%s)" + +#: src/fe-gtk/chanlist.c:781 +#, fuzzy +msgid "_Search" +msgstr "XChat: 検索" + +#: src/fe-gtk/chanlist.c:787 +#, fuzzy +msgid "_Download List" +msgstr "ダウンロード" + +#: src/fe-gtk/chanlist.c:793 +#, fuzzy +msgid "Save _List..." +msgstr "サーバー一覧(_S)..." + +#: src/fe-gtk/chanlist.c:806 +#, fuzzy +msgid "Show only:" +msgstr "チャンネルを表示" + +#: src/fe-gtk/chanlist.c:818 +#, fuzzy +msgid "channels with" +msgstr "チャンネル" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:843 +#, fuzzy +msgid "users." +msgstr "ユーザー" + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "チャンネル名" + +#: src/fe-gtk/chanlist.c:882 +#, fuzzy +msgid "Search type:" +msgstr "テキスト検索..." + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:890 +#, fuzzy +msgid "Pattern Match (Wildcards)" +msgstr "パターンマッチ:" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "検索語:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "%s へ送信するファイル名の選択" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "ファイルはリジュームできません。" + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"ファイルにアクセスできません: %s\n" +"%s.\n" +"おそらく継続できません。" + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "2 人から同じファイルを再開できません。" + +#: src/fe-gtk/dccgui.c:745 +#, fuzzy +msgid "XChat: Uploads and Downloads" +msgstr "XChat: アップロードとダウンロード" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "状態" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "ファイル" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "残り" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "両方" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "アップロード" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "ダウンロード" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "詳細" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "ファイル:" + +#: src/fe-gtk/dccgui.c:821 +#, fuzzy +msgid "Address:" +msgstr "アドレス" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "中断" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "許可" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "再開" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "フォルダーを開く..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: DCC チャット一覧" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "受取" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "送信" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "開始時間" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*新規*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "*データ*" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "名前" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "コマンド" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "上へ移動" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "下へ移動" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "キャンセル" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "保存" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "新規追加" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "削除" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "ソート" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "ヘルプ" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "自動的にサーバーに再接続しない" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "異なる設定ディレクトリを使う" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "いくつかのプラグインは自動読み込まないa" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "プラグイン自動読み込みディレクトリを表示する" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "ユーザー設定ディレクトリを表示する" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "URL irc://server:port/channel を開く" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "コマンド実行:" + +#: src/fe-gtk/fe-gtk.c:132 +msgid "Open URL or execute command in an existing XChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +#, fuzzy +msgid "level" +msgstr "一度もなし" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "バージョン情報を表示する" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"フォントを開けません:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "検索バッファが空です。\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d バイト" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "ネットワーク送信キュー: %d バイト" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"コマンド実行 は, データ1の内容を入力行へ, キーを入力したエントリボックスに実" +"際にタイプしたように 処理を実行します。(チャンネル/ニックへ送信する)コマン" +"ド, もしくはユーザーコマンドを, この中に含めることも可能です。データ1中に, " +"『\\n』文字が使われた場合, この文字は, コマンドの区切りとして解釈されるので, " +"複数のコマンドを実行することも可能です。 実際に『\\』を打たせたいときは, 『\\" +"\\』と入力して下さい" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"ページ変更コマンドは, ノートブックのページ間を切り替えます。切り替えたいペー" +"ジ先を, データ1にセットします。また, データ2に 何かセットされていると, 切り替" +"えが現在位置からの相対位置になります" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"バッファへ挿入 コマンドはデータ1の内容を, 入力行中のカーソルの場所へ挿入しま" +"す。" + +#: src/fe-gtk/fkeys.c:165 +#, fuzzy +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"ページ・スクロール コマンドは, テキスト・モニタ画面を一ページ分, 上下へスク" +"ロールさせます. データ1に何か設定されていれば上へスクロールし, そうでなければ" +"下へスクロールします。" + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"バッファ設定コマンドは, テキスト入力行の内容を, データ1の内容として置き換えま" +"す。" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"最後のコマンドはテキスト入力行に, 最後に入力されたコマンド内容を含ませます. " +"シェル上で, コマンドを直接実行するのと同じです。" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"次のコマンドはテキスト入力行に, 次に入力されたコマンド内容を含ませます. シェ" +"ル上で, コマンドを直接実行するのと同じです。" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"このコマンドは, 入力行中の不完全なニックやコマンドを補完します. データ1が設定" +"されていると, タブキーを2回押した場合に, 次の補完候補でなく, 最後に入力された" +"ニックが補完されます。" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"このコマンドは, ニックリストを上下へスクロールさせます. データ1に何か設定され" +"ていれば上へスクロールし, そうでなければ下へスクロールします。" + +#: src/fe-gtk/fkeys.c:177 +#, fuzzy +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"このコマンドは, 最後に入力された動作内容を置換リストの内容と照らし合わせ, 一" +"致した場合, それを置換します" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "このコマンドはフロントタブを一つずつ左に移動します" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "このコマンドはフロントタブを一つずつ右に移動します" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "このコマンドは現在のタブファミリーを左に移動します" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "このコマンドは現在のタブファミリーを右に移動します" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "入力ラインを履歴に記録するが、サーバーには送信しません" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "キーバインド設定にエラーがあります" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<なし>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "モード" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "キー" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "アクション" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: キーボードショートカット" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "データ1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "データ2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "キー設定ファイルのオープンにエラーが発生しました.\n" + +#: src/fe-gtk/fkeys.c:1019 +#, fuzzy, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"キーバインド設定ファイルに不明なキー名 %s があります。\n" +"読み込みを中断します, ~/.xchat/keybindings.conf を直してください。\n" + +#: src/fe-gtk/fkeys.c:1057 +#, fuzzy, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"キーバインド設定ファイルに不明なアクション %s があります。\n" +"読み込みを中断します, ~/.xchat/keybindings.conf を直してください。\n" + +#: src/fe-gtk/fkeys.c:1078 +#, fuzzy, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"期待すべきデータ行 (Dx{:|!} で開始) しかし読み込み行:\n" +"%s\n" +"\n" +"\n" +"読み込みを中断します, ~/.xchat/keybindings を直してください。\n" + +#: src/fe-gtk/fkeys.c:1147 +#, fuzzy, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"キーバインド設定ファイルに不明なキー名 %s があります。\n" +"読み込みを中断します, ~/.xchat/keybindings.conf を直してください。\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "そのファイルには書き込めません。" + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "そのファイルには読み込めません。" + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "そのマスクは既に存在します。" + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "プライベート" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "通知" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "招待" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "無視解除" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "無視するマスクを入力:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: 無視一覧" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "無視状態:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "チャンネル:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "プライベート:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "通知:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "招待:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "追加..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "チャンネル名が短すぎます。もう一度試してください。" + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: 接続完了" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "%s へ接続完了です。" + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "あなたは何を次に行いたいですか?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "何もしません。後でチャンネルに参加します。(_N)" + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "チャンネルへ参加:" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" +"参加したいチャンネルの名前を分かっている場合は、ここで入力してください。" + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "チャンネル一覧ウィンドウを開きます。(_P)" + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "常にこのダイアログを接続後に表示します。(_A)" + +#: src/fe-gtk/maingui.c:504 +#, fuzzy +msgid "Dialog with" +msgstr "ダイアログ・ウィンドウ" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "%s のトピックは: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "トピックを設定していません" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" + +#: src/fe-gtk/maingui.c:1283 +#, fuzzy +msgid "Quit XChat?" +msgstr "XChat について" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1310 +#, fuzzy, c-format +msgid "You are connected to %i IRC networks." +msgstr "起動したらこのネットワークに自動接続" + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "" + +#: src/fe-gtk/maingui.c:1314 +#, fuzzy +msgid "Some file transfers are still active." +msgstr "いくつかのファイル転送はまだ活動中です。xchat を終了しますか?" + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "色コードか属性を挿入する" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>強調</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>下線</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "通常" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "色 0 から 7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "色 8 から 15" + +#: src/fe-gtk/maingui.c:1612 +msgid "_Settings" +msgstr "設定(_S)" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "参加と退出メッセージを隠す" + +#: src/fe-gtk/maingui.c:1625 +#, fuzzy +msgid "_Extra Alerts" +msgstr "警告" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "メッセージでビープ音を鳴らす" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +#, fuzzy +msgid "_Detach" +msgstr "タブを外す(_D)" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "閉じる(_C)" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "ユーザー制限は数字でなければなりません!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "トピック保護" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "チャンネル外からのメッセージ禁止" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "秘密" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "招待のみ" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "モデレート" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "バン一覧" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "キーワード" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "ユーザー数制限" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "ユーザーリストを表示/隠す" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "新ニックネームを入力:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "不明なホスト" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "本名:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "ユーザー:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "国:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "サーバー:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "%u 分前" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "最後のメッセージ: %s" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "離席メッセージ:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "ブラウザーでリンクを開く" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "選択したリンクをコピーする" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "チャンネルへ参加" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "チャンネルを離れる" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "チャンネルをサイクルする" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: ユーザーメニュー" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "このメニューを編集..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "チャンネルリストの取得..." + +#: src/fe-gtk/menu.c:1348 +#, fuzzy +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"ユーザーコマンド - 特殊コード: \n" +"\n" +"%c = 現在のチャンネル\n" +"%m = マシン情報\n" +"%n = あなたのニック\n" +"%t = 時間/日付\n" +"%v = xchat のバージョン\n" +"%2 = 単語 2\n" +"%3 = 単語 3\n" +"&2 = 単語 2 からファイルの最後まで\n" +"&3 = 単語 3 からファイルの最後まで\n" +"\n" +"例:\n" +"/cmd john hello\n" +"\n" +"%2 は「john」になるでしょう\n" +"&2 は「こんにちは john」です。" + +#: src/fe-gtk/menu.c:1364 +#, fuzzy +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"ユーザー一覧ボタン - 特殊コード:\n" +"\n" +"%a = すべての選択済みニック\n" +"%c = 現在のチャンネル\n" +"%h = 選択済ニックのホスト名\n" +"%m = マシン情報\n" +"%n = あなたのニック\n" +"%s = 選択済ニック\n" +"%t = 日付/時間\n" +"\n" + +#: src/fe-gtk/menu.c:1374 +#, fuzzy +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"ダイアログボタン - 特殊コード:\n" +"\n" +"%a = すべての選択済ニック\n" +"%c = 現在のチャンネル\n" +"%h = 選択済ニックのホスト名\n" +"%m = マシン情報\n" +"%n = あなたのニック\n" +"%s = 選択済ニック\n" +"%t = 時間/日付\n" + +#: src/fe-gtk/menu.c:1384 +#, fuzzy +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"CTCP 返信 - 特殊コード:\n" +"\n" +"%d = データ (the whole ctcp)\n" +"%m = マシン情報\n" +"%s = ctcp を送ったニック\n" +"%t = 時間/日付\n" +"%2 = 単語 2\n" +"%3 = 単語 3\n" +"&2 = 単語 2 から行末\n" +"&3 = 単語 3 から行末\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: ユーザー定義コマンドの" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: ユーザー一覧のポップアップメニュー" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: 置換" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: URL ハンドラー" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: ユーザーリストのボタン" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: ダイアログボタン" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: CTCP 応答" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "ネットワーク一覧(_S)..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "新規(_N)" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "サーバータブ..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "チャンネルタブ..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "サーバーウィンドウ..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "チャンネルウィンドウ..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "プラグインかスクリプトをロードする(L)..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "終了(_Q)" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "閲覧(_V)" + +#: src/fe-gtk/menu.c:1591 +#, fuzzy +msgid "_Menu Bar" +msgstr "メニューバー(_M)" + +#: src/fe-gtk/menu.c:1592 +#, fuzzy +msgid "_Topic Bar" +msgstr "トピックバー(_T)" + +#: src/fe-gtk/menu.c:1593 +#, fuzzy +msgid "_User List" +msgstr "ユーザーリスト" + +#: src/fe-gtk/menu.c:1594 +#, fuzzy +msgid "U_serlist Buttons" +msgstr "ユーザー一覧のボタン" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "モードボタン(_O)" + +#: src/fe-gtk/menu.c:1597 +#, fuzzy +msgid "_Channel Switcher" +msgstr "チャンネルリスト..." + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "タブ(_T)" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "ツリー(_R)" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "ネットワークメーター(_N)" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "オフ" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "グラフ" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "サーバー(_S)" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "切断する(_D)" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "再接続する(_R)" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "チャンネルへ参加..." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "チャンネルへ参加..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "席を離れる" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "ユーザーメニュー(_U)" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "設定(_E)" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "設定(_P)..." + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "高度な設定" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "自動置換..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "CTCP 応答..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "ダイアログボタン..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "キーボードショートカット..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "テキストイベント..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "URL ハンドラ..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "ユーザー定義コマンド..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "ユーザーリストのボタン..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "ユーザーリストのポップアップ..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "ウィンドウ(_W)" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "バンリスト..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "文字集合..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "ダイレクトチャット..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "ファイル転送..." + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "バンリスト..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "無視一覧..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "プラグインとスクリプト..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "生ログ..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "URL 取り込み..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "マーカー行をリセット" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "通常テキスト(_L)" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "テキスト検索..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "テキスト保存..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "ヘルプ(_H)" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "コンテンツ(_C)" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "XChat について(_A)" + +#: src/fe-gtk/menu.c:2147 +#, fuzzy +msgid "_Attach" +msgstr "タブをつける" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "最近の出会い" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "オフライン" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "一度もなし" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, fuzzy, c-format +msgid "%d minutes ago" +msgstr "%u 分前" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "オンライン" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "新ニックネームを入力:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "XChat: ファイル送信一覧" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "ダイアログウィンドウを開く" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:591 +#, fuzzy +msgid "_Hide" +msgstr "隠す" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +#, fuzzy +msgid "Channel Message" +msgstr "チャンネル名" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +#, fuzzy +msgid "Private Message" +msgstr "ぷりぶ をタブへ" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +#, fuzzy +msgid "Highlighted Message" +msgstr "メッセージのハイライト時にビープを鳴らす" + +#: src/fe-gtk/plugin-tray.c:600 +#, fuzzy +msgid "_Change status" +msgstr "チャンネルをタブへ" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "離席" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "バージョン" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "詳細" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "読み込むプラグインかスクリプトを選択する" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat プラグインとスクリプト" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "ロード...(_L)" + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "アンロード(_U)" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "別名で保存..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: 生ログ (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "生ログの消去" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "あなたがこの検索のために開いたウィンドウはもう存在しません。" + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "最後まで検索しました。見つかりません" + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: 検索" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "前を検索(_B)" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "検索(_F)" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "新規ネットワーク" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "本当にネットワーク \"%s\" とそのすべてのサーバーを削除しますか?" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "チャンネル" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: チャンネル一覧 (%s)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "パスワード:" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "編集(_E)" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "ユーザー名と本名は空にできません。" + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: %s 編集" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "%s のサーバー" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "選択したサーバーのみに接続する" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "個人の詳細" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "全体ユーザー情報を使う" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "ニックネーム(_N):" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "2 つ目を選択:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "ユーザー名(_U):" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "本名(_L):" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "接続中" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "起動したらこのネットワークに自動接続" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "プロキシサーバーを使う" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "このネットワークのすべてのサーバーへは SSL を使う" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "不正な証明を受け入れる" + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "チャンネルを離れる:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "参加するチャンネルをカンマ(半角空白じゃない!)で区切って入力する" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "接続コマンド:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Nickserv パスワード:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"ニックネームがパスワードを要求する場合、ここに入力します。すべての IRC ネット" +"ワークがこれをサポートしているとは限りません。" + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "サーバーパスワード:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "サーバーのパスワードで、疑問がある場合、空のままにします。" + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "文字集合:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: ネットワーク一覧" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "ユーザー情報" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "3 つめを選択:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "ネットワーク" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "起動時にネットワーク一覧を飛ばす" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "編集...(_E)" + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "ソート(_S)" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "接続(_O)" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "テキストボックス外観" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "フォント:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "背景の絵:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "スクロール保存行:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "ニックに色を付ける" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "IRC の各個人に異なる色を与える" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "ニックをインデントして揃える" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "ニックを右揃えする." + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "透明な背景" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "マーカーラインを表示" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "最後に読んだテキストの後に赤い線を挿入します。" + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "ファイル転送設定" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "赤:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "緑:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "青:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "タイムスタンプ" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "タイムスタンプを有効" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "タイムスタンプのフォーマット:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "詳細は strftime の man ページを参照してください。" + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "昇順" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "入力ボックス" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "テキストボックスに使用するフォントと色" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "スペルの確認中" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "ニックを補完する" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "自動ニック補完 (TAB キーを使いません)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "ニックの補完接頭語:" + +#: src/fe-gtk/setup.c:147 +#, fuzzy +msgid "Nick completion sorted:" +msgstr "ニックの補完接頭語:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "入力ボックスコード" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "%nnn を ASCII 値と解釈する" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "%C と %b を色とボールドなどと解釈する" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "昇順, 最初になると" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "降順, 最後になると" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "降順" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "ソートしない" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "上部" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "ボタン" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "隠す" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "ユーザーリスト" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "ユーザーリストのホスト名を表示する" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "ユーザーリストのソート基準:" + +#: src/fe-gtk/setup.c:205 +#, fuzzy +msgid "Show user list at:" +msgstr "ユーザーリストを表示/隠す" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "離席追跡" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:209 +#, fuzzy +msgid "On channels smaller than:" +msgstr "チャンネルトピック" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "ダブルクリックでの動作" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "ウィンドウ" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "タブ" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "常に" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "要求があったタブのみ" + +#: src/fe-gtk/setup.c:242 +#, fuzzy +msgid "Tree" +msgstr "ツリー(_R)" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "サーバーからのメッセージは別のタブを開く" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "サーバーからの通知は別のタブを開く" + +#: src/fe-gtk/setup.c:252 +#, fuzzy +msgid "Open a new tab when you receive a private message" +msgstr "サーバーからのメッセージは別のタブを開く" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "アルファベットオーダーでタブをソート" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "小さなタブ" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "新規タブにフォーカス:" + +#: src/fe-gtk/setup.c:258 +#, fuzzy +msgid "Show channel switcher at:" +msgstr "チャンネルを表示" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "指定文字数でタブラベルを縮める:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "文字" + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "タブかウィンドウ" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "チャンネルの開き方:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "ダイアログの開き方:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "ユーティリティの開き方:" + +#: src/fe-gtk/setup.c:264 +#, fuzzy +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "DCC, 無視, 通知やその他ウィンドウに対してタブを用いる" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "いいえ" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "はい" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "ファイルかディレクトリ" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "定時のファイルを自動的に受理する:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "ダウンロードしたファイルの保存先:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "移動を完了したファイルの保存先:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "ファイル名にニックを保存" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "ネットワーク設定" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "IRC サーバーから自分の IP アドレスを取得する" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "DCC IP アドレス:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "" + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "高速 DCC 送信ポート:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "最後の DCC 送信ポート:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "" + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "最大ファイル転送速度 (バイト毎秒)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "ひとつのアップロード" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "ひとつ転送するときの最大速度" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "ひとつダウンロード:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "すべてのアップロードの合計:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "すべてのファイルの最大速度" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "すべてのダウンロードの合計:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "警告" + +#: src/fe-gtk/setup.c:333 +#, fuzzy +msgid "Show tray balloons on:" +msgstr "タブの表示方法:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:339 +#, fuzzy +msgid "Enable system tray icon" +msgstr "離席追跡を有効にする" + +#: src/fe-gtk/setup.c:341 +#, fuzzy +msgid "Highlighted Messages" +msgstr "メッセージのハイライト時にビープを鳴らす" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:344 +#, fuzzy +msgid "Extra words to highlight:" +msgstr "ハイライトする特殊単語:" + +#: src/fe-gtk/setup.c:345 +#, fuzzy +msgid "Nick names not to highlight:" +msgstr "次のニックをハイライトしない:" + +#: src/fe-gtk/setup.c:346 +#, fuzzy +msgid "Nick names to always highlight:" +msgstr "次のニックをハイライトしない:" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "コンマで複数単語を区切ります。" + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "デフォルトメッセージ:" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "終了:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "チャンネルを離れる:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "離席:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "離席" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "離席メッセージをアナウンスする" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "離席メッセージを参加しているすべてのチャネルに流す" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "一度だけ離席を表示" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "同一の離席メッセージをひとつ表示する" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "自動離席解除" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "高度な設定" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "自動再接続の遅延時間:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "参加と退出メッセージを隠す" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "デフォルトで参加/退出チャンネルを隠す" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "自動で DCC ウィンドウを開く" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "送信ウィンドウ" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "受信ウィンドウ" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "チャットウィンドウ" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "ログを残す" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "会話のログ記録を有効にする" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "ログファイル:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=サーバー %c=チャンネル %n=ネットワークです。" + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "常にタイムスタンプを挿入" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "ログタイムスタンプのフォーマット:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(無効)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "自動接続" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "IRC サーバーのみ" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "DCC 取得のみ" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "あなたのアドレス" + +#: src/fe-gtk/setup.c:423 +#, fuzzy +msgid "Bind to:" +msgstr "検索語:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "" + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "プロキシサーバー" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "ホスト名:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "ポート:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "種類:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "プロキシの使用:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "プロキシ認証" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "プロキシサーバーを使う (MS プロキシ、HTTP か Sock5 のみ)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "認証を使う (HTTP か Sock5 のみ)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "ユーザー名:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "パスワード:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "画像ファイル名の選択" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "ダウンロードフォルダーを選択する" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "フォント選択" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "参照..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "次の識別済ユーザーをマークする:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "次の未識別ユーザーをマークする:" + +#: src/fe-gtk/setup.c:1161 +#, fuzzy +msgid "Open Data Folder" +msgstr "フォルダーを開く..." + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "色選択" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "テキスト色" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "mIRC 色:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "ローカルの色:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "前景色:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "背景色:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "マーキングテキスト" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "インタフェース色" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "新規データ:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "マーカー行:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "新規メッセージ:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "離席ユーザー:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "ハイライト:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "イベント" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "サウンドファイル" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "出力ファイルの選択" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "サウンドの再生方法:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "外部サウンド再生プログラム(_P):" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "外部プログラム(_E)" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "自動(_A)" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "サウンドファイルディレクトリ(_D):" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "サウンドファイル:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "参照...(_B)" + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "再生(_P)" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "インタフェース" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "テキスト" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "ユーザーリスト" + +#: src/fe-gtk/setup.c:1703 +#, fuzzy +msgid "Channel switcher" +msgstr "チャンネルリスト..." + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "色" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "チャット" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "一般" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "サウンド" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "ネットワークセットアップ" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "ファイル転送" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "カテゴリ" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*警告*\n" +"ホーム・ディレクトリへ自動DCC受け取りを有効にする\n" +"ことは悪戯される危険があり, 勧められません. 例えば,\n" +"誰からがあなたへ『.bash_profile』ファイルを転送す\n" +"ると, 勝手にシェルの設定が上書きされてしまいます。" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: 設定" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "文字列解析にエラーがありました." + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "このシグナルは %d 個の引数を通します, $%d 個は不適当です。" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "テキストファイルの表示" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "イベント編集" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ 番号" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "読み込み元..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "全てを試行" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: URL 取り込み" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "リスト消去" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "選択した URL をコピー" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "コピー" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "ファイルにリストを保存" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d 個のなると、合計 %d 個" + +#~ msgid "%C18*$t$1%O $2" +#~ msgstr "%C18*$t$1%O $2" + +#~ msgid "%C21*%O$t%C21%B$1%O%C21 $2" +#~ msgstr "%C21*%O$t%C21%B$1%O%C21 $2" + +#, fuzzy +#~ msgid "%C18%H<%H$4$1%H>%H%O$t$2" +#~ msgstr "%C18%B%B$4$1%O%C18%O$t$2" + +#, fuzzy +#~ msgid "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" +#~ msgstr "$4%C21%B$1%O%C21$t$2" + +#~ msgid "%C28-%C29$1/$2%C28-%O$t$3" +#~ msgstr "%C28-%C29$1/$2%C28-%O$t$3" + +#~ msgid "$1$t$2" +#~ msgstr "$1$t$2" + +#~ msgid "%C19>%O$1%C19<%O$t$2" +#~ msgstr "%C19>%O$1%C19<%O$t$2" + +#~ msgid "%C16*%O$t$1%O" +#~ msgstr "%C16*%O$t$1%O" + +#~ msgid "%C28-%C29$1%C28-%O$t$2" +#~ msgstr "%C28-%C29$1%C28-%O$t$2" + +#~ msgid "%C28*%C29$3$1%C28*$t%O$2" +#~ msgstr "%C28*%C29$3$1%C28*$t%O$2" + +#~ msgid "%C18%H<%H$3$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$3$1%H>%H%O$t$2" + +#~ msgid "%C22*%O$t$1" +#~ msgstr "%C22*%O$t$1" + +#~ msgid "%C31%H<%H$4$1%H>%H%O%C30$t$2" +#~ msgstr "%C31%H<%H$4$1%H>%H%O%C30$t$2" + +#~ msgid "PID" +#~ msgstr "PID" + +#~ msgid "US Minor Outlying Islands" +#~ msgstr "米領マイナーアウトライイング諸島" + +#~ msgid "Direct client-to-client" +#~ msgstr "ダイレクトにクライアントからクライアント" + +#~ msgid "Send File" +#~ msgstr "ファイル送信" + +#~ msgid "Offer Chat" +#~ msgstr "チャットの依頼" + +#~ msgid "Abort Chat" +#~ msgstr "Chat について" + +#~ msgid "Userinfo" +#~ msgstr "ユーザー情報" + +#~ msgid "Clientinfo" +#~ msgstr "クライアント情報" + +#~ msgid "Time" +#~ msgstr "時間" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "Oper" + +#~ msgid "Kill this user" +#~ msgstr "このユーザーをkill" + +#~ msgid "Mode" +#~ msgstr "モード" + +#~ msgid "Give Half-Ops" +#~ msgstr "ハーフなるとを与える" + +#~ msgid "Take Half-Ops" +#~ msgstr "ハーフなるとを奪う" + +#~ msgid "Ignore" +#~ msgstr "無視" + +#~ msgid "Ignore User" +#~ msgstr "無視するユーザー" + +#~ msgid "UnIgnore User" +#~ msgstr "無視解除するユーザー" + +#~ msgid "Info" +#~ msgstr "情報" + +#~ msgid "Who" +#~ msgstr "Who" + +#~ msgid "DNS Lookup" +#~ msgstr "DNS 検索" + +#~ msgid "Trace" +#~ msgstr "トレース" + +#~ msgid "UserHost" +#~ msgstr "ユーザーホスト" + +#~ msgid "External" +#~ msgstr "外部" + +#~ msgid "Traceroute" +#~ msgstr "Traceroute" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "Unban" +#~ msgstr "バン解除" + +#~ msgid "I can't save an empty list!" +#~ msgstr "内容が空のリストは保存できません!" + +#~ msgid "List display options:" +#~ msgstr "ディスプレイオプションを表示:" + +#~ msgid "Minimum Users:" +#~ msgstr "最小ユーザー数:" + +#~ msgid "Maximum Users:" +#~ msgstr "最大ユーザー数:" + +#~ msgid "Regex Match:" +#~ msgstr "正規表現マッチ:" + +#~ msgid "Apply" +#~ msgstr "適用" + +#~ msgid "Refresh the list" +#~ msgstr "最新情報に更新" + +#~ msgid "Save the list" +#~ msgstr "リストを保存" + +#~ msgid "None" +#~ msgstr "なし" + +#~ msgid "To" +#~ msgstr "宛先" + +#~ msgid "Started" +#~ msgstr "開始時間" + +#~ msgid "Speed limit" +#~ msgstr "速度制限" + +#~ msgid "XChat: File Receive List" +#~ msgstr "XChat: ファイル受信一覧" + +#~ msgid "Open" +#~ msgstr "開く" + +#~ msgid "Ack" +#~ msgstr "確認" + +#~ msgid "To/From" +#~ msgstr "宛先/送信元" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "その他のタブを開きません。xchat を終了しますか?" + +#~ msgid "Show join/part messages" +#~ msgstr "参加/退出メッセージを表示" + +#~ msgid "Color paste" +#~ msgstr "色貼り付け" + +#~ msgid "_Close Tab" +#~ msgstr "タブを閉じる(_C)" + +#~ msgid "_Layout" +#~ msgstr "レイアウト(_L)" + +#~ msgid "Notify List..." +#~ msgstr "通知一覧..." + +#, fuzzy +#~ msgid "_Attach Window" +#~ msgstr "ウィンドウ(_W)" + +#~ msgid "_Close Window" +#~ msgstr "ウィンドウを閉じる(_C)" + +#~ msgid "User" +#~ msgstr "ユーザー" + +#~ msgid "Server" +#~ msgstr "サーバー" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: 通知一覧" + +#~ msgid "C_hannels to join:" +#~ msgstr "チャンネルに参加(_H):" + +#~ msgid "Resizable user list" +#~ msgstr "ユーザーリストの幅を調節可能にする" + +#~ msgid "Left" +#~ msgstr "左端" + +#~ msgid "Right" +#~ msgstr "右端" + +#~ msgid "Tabs Location" +#~ msgstr "タブの位置" + +#~ msgid "Flash taskbar on highlighted messages" +#~ msgstr "メッセージのハイライト時にタスクバーをフラッシュする" + +#~ msgid "Beep on private messages" +#~ msgstr "プライベートメッセージでビープを鳴らす" + +#~ msgid "Beep on channel messages" +#~ msgstr "チャンネルメッセージでビープ音を鳴らす" + +#~ msgid "Open an irc:// url" +#~ msgstr "irc:// URL を開く" + +#~ msgid "irc://server:port/channel" +#~ msgstr "irc://server:port/channel" + +#~ msgid "Execute a xchat command" +#~ msgstr "コマンド実行:" + +#~ msgid "\"Command to execute\"" +#~ msgstr "\"実行するコマンド\"" + +#~ msgid "Prints some text to the current tab/window" +#~ msgstr "いくつかのテキストを現在のタブ/ウィンドウに表示する" + +#~ msgid "\"Text to print\"" +#~ msgstr "\"テキストを表示する\"" + +#~ msgid "Change the context to the channel" +#~ msgstr "コンテキストをチャンネルに変更" + +#~ msgid "Change the context to the server" +#~ msgstr "サーバーにコンテキストを変更する" + +#~ msgid "server" +#~ msgstr "サーバー" + +#~ msgid "Get some informations from xchat" +#~ msgstr "いくつかの情報を xchat から取得する" + +#~ msgid "id" +#~ msgstr "ID" + +#~ msgid "Get settings from xchat" +#~ msgstr "xchat から設定を取得する" + +#~ msgid "name" +#~ msgstr "名前" + +#~ msgid "" +#~ "xchat-remote: %s\n" +#~ "Try `xchat-remote --help' for more information\n" +#~ msgstr "" +#~ "xchat-remote: %s\n" +#~ "より多くの情報は「xchat-remote --help」を試してください\n" + +#~ msgid "Failed to complete SetContext" +#~ msgstr "SetContext を完了していません" + +#~ msgid "Failed to complete print" +#~ msgstr "印刷を完了していません" + +#~ msgid "Failed to complete GetInfo" +#~ msgstr "GetInfo を完了していません" + +#~ msgid "Failed to complete GetPrefs" +#~ msgstr "GetPrefs を完了していません" + +#~ msgid "%s doesn't exist\n" +#~ msgstr "%s は存在しません\n" + +#~ msgid "%s loaded successfully!\n" +#~ msgstr "%s の読み込みに成功しました!\n" + +#~ msgid "France, Metropolitan" +#~ msgstr "フランス本国" + +#~ msgid "Neutral Zone" +#~ msgstr "中立地帯" + +#~ msgid "Settings saved." +#~ msgstr "設定を保存しました。" + +#~ msgid "Save rawlog" +#~ msgstr "生ログの保存" + +#~ msgid "Save rawlog..." +#~ msgstr "生ログの保存..." + +#~ msgid "XChat: Server List" +#~ msgstr "XChat: サーバー一覧" + +#~ msgid "Completes nick names without using the TAB key" +#~ msgstr "タブキーを使わずにニックを補完" + +#~ msgid "Input Box Appearance" +#~ msgstr "入力ボックス外観" + +#~ msgid "Convert spaces to underscore before sending" +#~ msgstr "送信前にスペースをアンダースコアに変換する" + +#~ msgid "(See strftime manpage for details)." +#~ msgstr "(詳細は strftime の manpage を参照)" + +#~ msgid "From:" +#~ msgstr "送り元:" + +#~ msgid "To:" +#~ msgstr "宛先:" + +#~ msgid "Size:" +#~ msgstr "サイズ:" + +#~ msgid "MIME Type" +#~ msgstr "MIME タイプ" + +#~ msgid "Close" +#~ msgstr "閉じる" + +#~ msgid " : %s\n" +#~ msgstr " : %s\n" + +#~ msgid "Error String" +#~ msgstr "エラー文字列" + +#~ msgid "Error name" +#~ msgstr "エラー名" + +#~ msgid "Error string" +#~ msgstr "エラー文字列" + +#~ msgid "Servername" +#~ msgstr "サーバー名" + +#~ msgid "Former Czechoslovakia" +#~ msgstr "旧チェコスロバキア" + +#~ msgid "Zaire" +#~ msgstr "ザイール" + +#~ msgid "" +#~ " File: %s\n" +#~ " To/From: %s\n" +#~ " Size: %u\n" +#~ " Port: %d\n" +#~ " IP Number: %s\n" +#~ "Start Time: %s Max CPS: %d\n" +#~ msgstr "" +#~ " ファイル: %s\n" +#~ "宛先/送り元: %s\n" +#~ " 容量: %d\n" +#~ " ポート: %d\n" +#~ " IPアドレス: %s\n" +#~ " 開始時刻: %s 最大 CPS: %d\n" + +#, fuzzy +#~ msgid "" +#~ "Options:\n" +#~ " -d, --cfgdir DIRECTORY use a different config dir\n" +#~ " -a, --no-auto don't auto connect\n" +#~ " -v, --version show version information\n" +#~ "\n" +#~ "URL:\n" +#~ " irc://server:port/channel\n" +#~ "\n" +#~ msgstr "" +#~ "%s %s オプション:\n" +#~ "\n" +#~ " --cfgdir <dir> -d\t : 指定の設定ディレクトリを利用する\n" +#~ " --noauto -a\t : 自動接続しない\n" +#~ " --version -v\t : バージョン情報の表示\n" + +#~ msgid "X-Chat: Edit Key Bindings" +#~ msgstr "X-Chat: キー・バインドの編集" + +#~ msgid "Add new" +#~ msgstr "新規追加" + +#~ msgid "new!new@new.com" +#~ msgstr "new!new@new.co.jp" + +#~ msgid "Chan" +#~ msgstr "チャンネル" + +#~ msgid "OK" +#~ msgstr "了解" + +#, fuzzy +#~ msgid "(%s) Channel settings" +#~ msgstr "パネル設定" + +#, fuzzy +#~ msgid "Channel Options" +#~ msgstr "チャンネルをタブへ" + +#~ msgid "User: %s" +#~ msgstr "ユーザー: %s" + +#~ msgid "Realname: %s" +#~ msgstr "本名: %s" + +#~ msgid "New Shell Tab..." +#~ msgstr "新規シェルタブ..." + +#~ msgid "_IRC" +#~ msgstr "_IRC" + +#~ msgid "Invisible" +#~ msgstr "見せない" + +#~ msgid "Receive Wallops" +#~ msgstr "ウォール操作を受け取る" + +#~ msgid "Receive Server Notices" +#~ msgstr "サーバーの通知を受け取る" + +#~ msgid "Auto Rejoin when Kicked" +#~ msgstr "キックされたらに自動的に復帰する" + +#~ msgid "Never-give-up ReConnect" +#~ msgstr "サーバー再接続をあきらめない" + +#~ msgid "Auto Accept Direct Chat" +#~ msgstr "ダイレクトチャットを自動受理する" + +#, fuzzy +#~ msgid "Lists" +#~ msgstr "Banリスト" + +#, fuzzy +#~ msgid "Key Bindings..." +#~ msgstr "キー・バインドの編集..." + +#~ msgid "Reload Settings" +#~ msgstr "設定を読み直す" + +#~ msgid "Save Settings now" +#~ msgstr "現在の設定を保存する" + +#~ msgid "File Receive..." +#~ msgstr "ファイル受信..." + +#~ msgid "File Send..." +#~ msgstr "ファイル送信..." + +#, fuzzy +#~ msgid "Settings for %s" +#~ msgstr "設定" + +#, fuzzy +#~ msgid "_Remove \"%s\"" +#~ msgstr "削除" + +#, fuzzy +#~ msgid "_Add new server" +#~ msgstr "新規サーバー" + +#, fuzzy +#~ msgid "Move \"%s\" _up" +#~ msgstr "削除" + +#, fuzzy +#~ msgid "_Add new network" +#~ msgstr "新規追加" + +#, fuzzy +#~ msgid "Global User Info" +#~ msgstr "ユーザ情報:" + +#, fuzzy +#~ msgid "Nick Names:" +#~ msgstr "ニック:" + +#, fuzzy +#~ msgid "Connect in a _new tab" +#~ msgstr "新規タブで接続" + +#, fuzzy +#~ msgid "Servers" +#~ msgstr "サーバ" + +#, fuzzy +#~ msgid "Nick Name:" +#~ msgstr "ニック:" + +#, fuzzy +#~ msgid "" +#~ "Command to execute after connecting. Can be used to authenticate to " +#~ "NickServ" +#~ msgstr "接続が完了したあとに実行するコマンド" + +#, fuzzy +#~ msgid "Use secure SSL" +#~ msgstr "SSL を使う" + +#, fuzzy +#~ msgid "Edit mode" +#~ msgstr "編集" + +#, fuzzy +#~ msgid "Tint transparency" +#~ msgstr "色合い(シェード)透明度" + +#, fuzzy +#~ msgid "Strip mIRC color" +#~ msgstr "MIRC カラーを無効にする" + +#, fuzzy +#~ msgid "Tint green:" +#~ msgstr "濃淡の詳細設定" + +#~ msgid "Lag meter:" +#~ msgstr "ラグメータ:" + +#~ msgid "Throttle meter:" +#~ msgstr "スロットルメータ:" + +#, fuzzy +#~ msgid "Double-click command:" +#~ msgstr "ダブルクリック・コマンド:" + +#, fuzzy +#~ msgid "Userlist buttons enabled" +#~ msgstr "ユーザーリストボタンを有効にする" + +#, fuzzy +#~ msgid "Only highlight tabs on channel messages" +#~ msgstr "メッセージとアクションのときだけ チャンネルタブをハイライトする" + +#, fuzzy +#~ msgid "Pop new tabs to front" +#~ msgstr "新規タブを前面へ" + +#, fuzzy +#~ msgid "Auto open DCC send list" +#~ msgstr "自動的に DCC 送信ウィンドウを開く" + +#, fuzzy +#~ msgid "Auto open DCC chat list" +#~ msgstr "自動的に DCC チャット・ウィンドウを開く" + +#, fuzzy +#~ msgid "Auto open DCC receive list" +#~ msgstr "自動的に DDC 受信ウィンドウを開く" + +#, fuzzy +#~ msgid "Default part message:" +#~ msgstr "退出メッセージ:" + +#, fuzzy +#~ msgid "Default away message:" +#~ msgstr "離席メッセージをアナウンスする" + +#, fuzzy +#~ msgid "Proxy port:" +#~ msgstr "プロキシタイプ:" + +#, fuzzy +#~ msgid "Proxy type:" +#~ msgstr "プロキシタイプ:" + +#, fuzzy +#~ msgid "Mark back:" +#~ msgstr "マーク背景色" + +#~ msgid "Select a file to save to" +#~ msgstr "保存するファイル名の選択" + +#~ msgid "port" +#~ msgstr "ポート" + +#, fuzzy +#~ msgid "Load Plugin..." +#~ msgstr "プラグイン(*.so)をロード..." + +#, fuzzy +#~ msgid "Replace Popup..." +#~ msgstr "置換ポップアップ・メニュー..." + +#, fuzzy +#~ msgid "Load plugin..." +#~ msgstr "プラグイン(*.so)をロード..." + +#, fuzzy +#~ msgid "X-Chat Homepage..." +#~ msgstr "X-Chat ホームページ..." + +#, fuzzy +#~ msgid "Online Docs..." +#~ msgstr "オンライン・ヘルプ..." + +#, fuzzy +#~ msgid "About X-Chat..." +#~ msgstr "X-Chatについて..." + +#~ msgid "Choose File" +#~ msgstr "ファイル選択" + +#~ msgid "Skip MOTD" +#~ msgstr "ログインメッセージを無視" + +#~ msgid "Don't display the message-of-the-day when logging in" +#~ msgstr "ログインしたときに今日のメッセージを表示しない" + +#, fuzzy +#~ msgid "No Server List on Startup" +#~ msgstr "起動時にサーバーリストを表示しない" + +#~ msgid "Auto ReJoin on Kick" +#~ msgstr "キックされたら自動復帰する" + +#~ msgid "Ascii Chart" +#~ msgstr "ASCII 表" + +#, fuzzy +#~ msgid "Server settings" +#~ msgstr "設定" + +#, fuzzy +#~ msgid "Ban List Window..." +#~ msgstr "Banリストウィンドウ..." + +#, fuzzy +#~ msgid "ASCII Window..." +#~ msgstr "無視リストウィンドウ" + +#, fuzzy +#~ msgid "F_lush Buffer" +#~ msgstr "バッファをフラッシュ" + +#, fuzzy +#~ msgid "Save Buffer..." +#~ msgstr "バッファ保存..." + +#~ msgid "User Modes" +#~ msgstr "状態" + +#, fuzzy +#~ msgid "Plugins" +#~ msgstr "プラグイン..." + +#~ msgid "Edit User Menu" +#~ msgstr "ユーザメニューの編集" + +#, fuzzy +#~ msgid "NewServer" +#~ msgstr "サーバ" + +#, fuzzy +#~ msgid "Open extra tab for each server" +#~ msgstr "通知やサーバからの通知を別のウィンドウ内に表示" + +#, fuzzy +#~ msgid "Server List 2..." +#~ msgstr "サーバリスト.." + +#, fuzzy +#~ msgid "Network Name:" +#~ msgstr "ネットワーク" + +#~ msgid "Open ASCII Chart" +#~ msgstr "ASCII コード表を開く" + +#, fuzzy +#~ msgid "RMDLL <dll name>, unloads a plugin" +#~ msgstr "/RMDLL <DLL名>, プラグインをアンロードする\n" + +#~ msgid "Error compiling script\n" +#~ msgstr "スクリプトのコンパイルにエラーが発生しました.\n" + +#~ msgid "Error Loading file\n" +#~ msgstr "ファイルの読み込みにエラーが発生しました.\n" + +#~ msgid "Perl scripting not available in this compilation.\n" +#~ msgstr "この編集では Perl スクリプトは利用できません.\n" + +#, fuzzy +#~ msgid "LOADDLL <file>, loads a plugin" +#~ msgstr "/LOADDLL <ファイル>, プラグインをロード.\n" + +#, fuzzy +#~ msgid "UNLOADALL, Unloads all perl scripts" +#~ msgstr "/UNLOADALL, 読み込まれている全 Perl スクリプトをアンロードする\n" + +#~ msgid "Scripts & Plugins" +#~ msgstr "スクリプト&プラグイン" + +#, fuzzy +#~ msgid "PKILL <name>, kills the script of the given name" +#~ msgstr "/PKILL <名前>, 指定名のスクリプトを kill する\n" + +#, fuzzy +#~ msgid "PLIST, lists the current python scripts" +#~ msgstr "/PLIST, 現在の Python スクリプトリストを表示する\n" + +#, fuzzy +#~ msgid "PLOAD loads a python script" +#~ msgstr "/PLOAD Python スクリプトをロードする\n" + +#~ msgid "Select a Perl script to load" +#~ msgstr "組み込む Perl スクリプトの選択" + +#~ msgid "Select a Python script to load" +#~ msgstr "組み込む Python スクリプトの選択" + +#~ msgid "Unload All Scripts" +#~ msgstr "すべてのスクリプトをアンロード" + +#~ msgid "Perl List" +#~ msgstr "Perl リスト" + +#, fuzzy +#~ msgid "Load Python Script..." +#~ msgstr "Perl スクリプトをロード..." + +#~ msgid "Python List" +#~ msgstr "Python リスト" + +#~ msgid "gdk_font_load failed" +#~ msgstr "gdk_font_load に失敗しました。" + +#~ msgid "" +#~ "The default download directory is your\n" +#~ "home dir, you should change this at some stage." +#~ msgstr "" +#~ "標準のダウンロードディレクトリがホームディレクトリ\n" +#~ "となっています. そのうちいつか変更するべきです。" + +#~ msgid "Setup.." +#~ msgstr "設定..." + +#~ msgid "Palette.." +#~ msgstr "パレット..." + +#~ msgid "X-Chat: Palette" +#~ msgstr "X-Chat: パレット" + +#~ msgid "Foreground" +#~ msgstr "前景色" + +#~ msgid "Background" +#~ msgstr "背景色" + +#~ msgid "Mark Background" +#~ msgstr "マーク背景色" + +#~ msgid "Mark Foreground" +#~ msgstr "マーク前景色" + +#~ msgid "Color %d" +#~ msgstr "カラー %d" + +#~ msgid "About..." +#~ msgstr "X-Chat について..." + +#~ msgid "No Channel" +#~ msgstr "チャンネルなし" + +#~ msgid "No Server" +#~ msgstr "サーバー無し" + +#~ msgid "Is Tab" +#~ msgstr "タブ状態" + +#~ msgid "Is Not Tab" +#~ msgstr "非タブ状態" + +#~ msgid "Show" +#~ msgstr "表示" + +#~ msgid "Move Here" +#~ msgstr "ここへ移動" + +#, fuzzy +#~ msgid "X-Chat: Setup" +#~ msgstr "X-Chat: 検索" + +#~ msgid "Edit entry:" +#~ msgstr "入力事項の編集:" + +#~ msgid "Name:" +#~ msgstr "題名:" + +#~ msgid "Channels:" +#~ msgstr "チャンネル:" + +#~ msgid "Use proxy server if one is set in Setup->Proxy Server" +#~ msgstr "[設定]-[プロキシサーバ]に何かセットされていたらプロキシサーバを使う" + +#~ msgid "New Group" +#~ msgstr "新規グループ" + +#~ msgid "" +#~ "Cannot use \"root\" as a nickname,\n" +#~ "please change that first." +#~ msgstr "" +#~ "\"root\"というニックは利用できません,\n" +#~ "変更してください." + +#~ msgid "Connect New" +#~ msgstr "新規接続" + +#~ msgid "Failed to load translation table." +#~ msgstr "変換テーブルの読み込みに失敗しました。" + +#~ msgid "" +#~ "The following prefs do not take effect\n" +#~ "immediately, you will have to close the\n" +#~ "window and re-open it:\n" +#~ "\n" +#~ " - Channel Tabs\n" +#~ " - Channel Mode Buttons\n" +#~ " - Userlist Buttons\n" +#~ " - Disable Paned Userlist\n" +#~ " - Notify User color\n" +#~ " - Layout for a vertical panel\n" +#~ " - Auto Indent" +#~ msgstr "" +#~ "以下の設定の変更は直後には反映されません.\n" +#~ "ウィンドウを一旦閉じて、開き直す必要が\n" +#~ "あります:\n" +#~ "\n" +#~ " - チャンネル・タブ\n" +#~ " - チャンネル・モードのボタン表示\n" +#~ " - ユーザーリストボタン\n" +#~ " - ユーザリストのパネル化の無効\n" +#~ " - 通知ユーザ定義色\n" +#~ " - 垂直パネルでのレイアウト\n" +#~ " - 自動インデント" + +#~ msgid "Auto Indent" +#~ msgstr "自動インデント" + +#~ msgid "Auto adjust the separator bar position as needed." +#~ msgstr "必要ならセパレータの位置を自動的に調整する." + +#~ msgid "Draw Separator Bar" +#~ msgstr "セパレートタを描写" + +#~ msgid "Make the separator an actual visible line." +#~ msgstr "セパレータを実際に見えるようにする." + +#~ msgid "Word Wrap" +#~ msgstr "単語を折り返す" + +#~ msgid "Don't split words from one line to the next" +#~ msgstr "単語を1行から次の行へ分けない" + +#~ msgid "Tint the see-through text box to make it darker" +#~ msgstr "テキストボックスを文字が見やすいように半透明にします" + +#~ msgid "Use a font set" +#~ msgstr "フォントセットを使用する" + +#~ msgid "Change in realtime" +#~ msgstr "リアルタイムに変更" + +#~ msgid "Startup and Shutdown" +#~ msgstr "起動と終了" + +#~ msgid "Don't display the server list on X-Chat startup" +#~ msgstr "X-Chat 起動時にサーバーリストを表示しない" + +#~ msgid "Auto Save URL list" +#~ msgstr "URL リストを自動的に保存" + +#~ msgid "Auto save your URL list when exiting from X-Chat" +#~ msgstr "X-Chat を終了するとき, 自動的に URL リストを保存します" + +#~ msgid "Give the User List style" +#~ msgstr "ユーザリストスタイルを与える" + +#~ msgid "Use paned user list instead of a fixed width one" +#~ msgstr "" +#~ "固定幅のユーザリストの代わりに, 幅が調節可能なユーザリストを使います." + +#~ msgid "Complete nicknames when a partial one is entered" +#~ msgstr "不完全なニックの入力があれば、それを補完する" + +#~ msgid "Old-style Nickname Completion" +#~ msgstr "旧スタイルのニック補完" + +#~ msgid "Nickname completion is old-style (instead of GNU-style)" +#~ msgstr "ニックネームの補完は旧スタイル(GNU スタイルの代わり)です。" + +#~ msgid "Give the Input Box style" +#~ msgstr "入力ボックススタイルを与える" + +#~ msgid "Input box gets same style as main text area" +#~ msgstr "入力ボックスをメインのテキストエリアと同じスタイルにする" + +#~ msgid "Nickname Completion Character:" +#~ msgstr "ニックを補完するときにつける文字" + +#~ msgid "Character to append to completed nicknames" +#~ msgstr "ニックネームの補完のときに付加する文字" + +#~ msgid "Output Box" +#~ msgstr "出力ボックス" + +#~ msgid "Strip MIRC color codes from text before displaying" +#~ msgstr "テキストを表示する前に, MIRC の色情報を削除します." + +#~ msgid "Output nicknames in different colors" +#~ msgstr "ニックネームにそれぞれ違った色を付けます." + +#~ msgid "Filter out BEEPs" +#~ msgstr "ビープを抑制する" + +#~ msgid "Remove ^G BEEP codes from text before displaying" +#~ msgstr "テキストを表示する前にビープコード(^G)を取り除きます" + +#~ msgid "Buffer Settings" +#~ msgstr "バッファ設定" + +#~ msgid "Text Buffer Size:" +#~ msgstr "バッファサイズ:" + +#~ msgid "lines (0=Unlimited)." +#~ msgstr "行数 (0=無制限)." + +#~ msgid "Kanji locale <=> JIS translation" +#~ msgstr "漢字の ロケール <=> JIS 変換" + +#~ msgid "Progress bar" +#~ msgstr "プログレスバ−" + +#~ msgid "Buttons" +#~ msgstr "ボタン" + +#~ msgid "Show the TNSIPMLK buttons" +#~ msgstr "チャネルのモードを表す TNSIPMLK ボタンを表示します." + +#~ msgid "User List Buttons" +#~ msgstr "ユーザーリストのボタン" + +#~ msgid "Show the buttons below the user list" +#~ msgstr "ユーザーリストの下にボタンを表示します" + +#~ msgid "Use tabs for channels instead of separate windows" +#~ msgstr "" +#~ "チャネルを開くときに, 新規ウィンドウの代わりにウィンドウ内で開きます." + +#~ msgid "Limited Tab Highlighting" +#~ msgstr "限定したタブのハイライト" + +#~ msgid "Bring new query/channel tabs to front" +#~ msgstr "新規の ぷりぶ/チャンネル・タブを手間へ持ってくる" + +#~ msgid "Use tabs for /query instead of separate windows" +#~ msgstr "ぷりぶ してる時に, 新規ウィンドウの代わりにウィンドウ内で開きます." + +#~ msgid "Window Position" +#~ msgstr "ウィンドウ位置" + +#~ msgid "" +#~ "If Left and Top are set to zero, X-Chat will use\n" +#~ "your window manager defaults." +#~ msgstr "" +#~ "左と上からの値が 0 の場合は, X-Chat の位置はウィンドウマネージャーにまかせ" +#~ "ます." + +#~ msgid "Left:" +#~ msgstr "左端:" + +#~ msgid "Window Size" +#~ msgstr "大きさ" + +#~ msgid "Width:" +#~ msgstr "横幅:" + +#~ msgid "Height:" +#~ msgstr "高さ:" + +#~ msgid "Show Session Tree View" +#~ msgstr "セッション・ツリー・ビューを表示" + +#~ msgid "Hide Session on Panelize" +#~ msgstr "パネル化時にウィンドウを隠す" + +#~ msgid "Hide X-Chat when window moved to the panel" +#~ msgstr "パネルアプレット化の際に, X-Chat ウィンドウを隠します." + +#~ msgid "Panel Applet" +#~ msgstr "パネル・アプレット" + +#~ msgid "Layout For a Vertical Panel" +#~ msgstr "縦のパネルに適したレイアウト" + +#~ msgid "Layout the X-Chat panel applet for a vertical panel" +#~ msgstr "パネルアプレット化の際に, 縦のパネルに適した表示を行います." + +#~ msgid "Raw Mode Display" +#~ msgstr "生表示モード" + +#~ msgid "Display raw mode changes instead of interpretations" +#~ msgstr "注釈したものではなく, モード変更を生データを表示します" + +#~ msgid "Beep when a private message for you is received" +#~ msgstr "ぷりぶ メッセージを受け取ったときに, ビープを鳴らせて知らせます" + +#~ msgid "Beep when a channel message is received" +#~ msgstr "チャンネルメッセージを受け取ったときに, ビープを鳴らせて知らせます" + +#~ msgid "Send /who #chan on join." +#~ msgstr "チャンネル参加時に \"/who #チャンネル\" を送信する。" + +#~ msgid "Find user information when joining a channel." +#~ msgstr "チャンネル参加時にユーザ情報を調べる." + +#~ msgid "" +#~ "These can be a filename relative to ~/.xchat/ to be\n" +#~ "used as a list of random quit or part reasons." +#~ msgstr "" +#~ "終了または退出理由のランダムリストとして使われるファイル名を\n" +#~ "~/.xchat/ からの相対パスで指定できます." + +#~ msgid "seconds." +#~ msgstr "(秒)" + +#~ msgid "Hostname / IP Number:" +#~ msgstr "ホスト名 / IP アドレス:" + +#~ msgid "" +#~ "Most people should leave this blank, it's only\n" +#~ "usefull for machines with multiple addresses." +#~ msgstr "" +#~ "ほとんどの人は, これを空でかまわないはずです, これは\n" +#~ "複数のアドレスをもつマシンに対してのみ役に立ちます。" + +#~ msgid "Public IP Address" +#~ msgstr "パブリックIP アドレス" + +#~ msgid "" +#~ "You may need to set the DCC IP Address if\n" +#~ "you're behind a NAT router or proxy firewall." +#~ msgstr "" +#~ "NATルータやプロクシファイアウォールを使っている場合、\n" +#~ "DCC IPアドレスの設定が必要になります。" + +#~ msgid "Get my IP from Server (for use in DCC Send only)" +#~ msgstr "サーバから自分の IP アドレスを取得 (DCC 送信にのみ)" + +#~ msgid "For people using a 10.* or 192.168.* IP number." +#~ msgstr "10.* もしくは 192.168.* の IP 番号を利用する人のためのもの." + +#~ msgid "Proxy Server Hostname:" +#~ msgstr "プロキシサーバ名:" + +#~ msgid "Proxy Server Port:" +#~ msgstr "プロキシサーバポート:" + +#~ msgid "Only show away messages the first time they're seen" +#~ msgstr "最初の離席メッセージのみを表示する" + +#~ msgid "When typing is started, the away flag is unset" +#~ msgstr "キー入力が開始されたら、離席フラグを解除する" + +#~ msgid "Your away settings" +#~ msgstr "離席の設定" + +#, fuzzy +#~ msgid "Apply a timestamp to disk logs" +#~ msgstr "常にタイムスタンプをディスクログに適用" + +#~ msgid "Generic" +#~ msgstr " 一般" + +#~ msgid "User List Notify Highlighting" +#~ msgstr "ユーザリスト通知のハイライト" + +#~ msgid "Highlight Notifies" +#~ msgstr "通知をハイライトする" + +#~ msgid "Highlight notified users in the user list" +#~ msgstr "ユーザリスト中の通知ユーザをハイライトする" + +#~ msgid "Notified User Color:" +#~ msgstr "通知ユーザの色:" + +#~ msgid "Notification Timeouts" +#~ msgstr "通知タイムアウト" + +#~ msgid "Notify Check Interval:" +#~ msgstr "通知チェック間隔:" + +#~ msgid "seconds (0=Disable)." +#~ msgstr "秒 (0=無効)" + +#~ msgid "Enable Character Translation" +#~ msgstr "文字の置き換えを有効にする" + +#~ msgid "Translation File:" +#~ msgstr "変換ファイル:" + +#~ msgid "Use a ircII style translation file." +#~ msgstr "ircII 形式の変換ファイルを指定してください." + +#~ msgid "Automatically open DCC Send Window" +#~ msgstr "自動的に DCC 送信ウィンドウを開く" + +#~ msgid "Automatically open DCC Recv Window" +#~ msgstr "自動的に DDC 受信ウィンドウを開く" + +#~ msgid "Automatically open DCC Chat Window" +#~ msgstr "自動的に DCC チャット・ウィンドウを開く" + +#~ msgid "Resume on Auto Accept" +#~ msgstr "自動受付を再開する" + +#~ msgid "When Auto-Accepting DCC, try to resume." +#~ msgstr "DCC の自動受付のとき再開を試みます." + +#~ msgid "DCC Offers Timeout:" +#~ msgstr "DCC 提案タイムアウト:" + +#~ msgid "DCC Stall Timeout:" +#~ msgstr "DCC 停滞タイムアウト:" + +#~ msgid "File Permissions:" +#~ msgstr "ファイル・アクセス権:" + +#~ msgid "(octal)" +#~ msgstr "(8進数)" + +#~ msgid "Directory to save to:" +#~ msgstr "保存するディレクトリ先:" + +#~ msgid "Save file with Nickname" +#~ msgstr "ニックネームでファイルを保存する" + +#~ msgid "Put the sender's nickname in incoming filenames" +#~ msgstr "送信者のニックを incoming ファイル名に置く" + +#~ msgid "DCC Send Options" +#~ msgstr "DCC 送信オプション" + +#~ msgid "Fast DCC Send" +#~ msgstr "高速 DCC 送信" + +#~ msgid "Don't wait for ACKs to send more data" +#~ msgstr "大量のデータを送信するため, いちいち確認を待たない" + +#~ msgid "Fill Spaces" +#~ msgstr "スペースの埋め方" + +#~ msgid "File names with spaces will be filled with underscore" +#~ msgstr "ファイル名のスペースをアンダースコアで埋める" + +#~ msgid "(0=Disabled)" +#~ msgstr "(0=無効)" + +#~ msgid "Send Block Size:" +#~ msgstr "送信ブロックサイズ:" + +#~ msgid "(1024=Normal)" +#~ msgstr "(1024=通常)" + +#~ msgid "Built-in Replies" +#~ msgstr "内部応答" + +#~ msgid "Do not reply to CTCP version" +#~ msgstr "CTCP バージョンには応答しない" + +#~ msgid "Sound Dir:" +#~ msgstr "サウンドディレクトリ:" + +#~ msgid "Play Command:" +#~ msgstr "再生コマンド:" + +#~ msgid "Interface Settings" +#~ msgstr "インタフェース設定" + +#~ msgid "IRC Input/Output Settings" +#~ msgstr "IRC 入出力設定" + +#~ msgid "IRC Input/Output" +#~ msgstr "IRC 入出力" + +#~ msgid "Window Layout Settings" +#~ msgstr "ウィンドウ・レイアウト設定" + +#~ msgid "Window Layout" +#~ msgstr "ウィンドウ・レイアウト" + +#~ msgid "Main Window Settings" +#~ msgstr "メインウィンドウ設定" + +#~ msgid "Channel Window Settings" +#~ msgstr "チャンネル・ウィンドウ設定" + +#~ msgid "Dialog Window Settings" +#~ msgstr "ダイアログ・ウィンドウ設定" + +#~ msgid "Panel" +#~ msgstr "パネル" + +#~ msgid "IRC Settings" +#~ msgstr "IRC 設定" + +#~ msgid "IP Address Settings" +#~ msgstr "IP アドレス設定" + +#, fuzzy +#~ msgid "IP Address" +#~ msgstr "IP アドレス" + +#~ msgid "Highlighting Settings" +#~ msgstr "ハイライト設定" + +#~ msgid "Logging Settings" +#~ msgstr "ログイン設定" + +#~ msgid "Notification Settings" +#~ msgstr "通知設定" + +#~ msgid "Notification" +#~ msgstr "通知" + +#~ msgid "Character Set (Translation Tables)" +#~ msgstr "文字集合(変換テーブル)" + +#, fuzzy +#~ msgid "CTCP Settings" +#~ msgstr "DCC 設定" + +#~ msgid "DCC Settings" +#~ msgstr "DCC 設定" + +#~ msgid "Input Box always in focus" +#~ msgstr "入力ボックスをいつもフォーカスする" + +#~ msgid "/TIMER <seconds> <command>\n" +#~ msgstr "/TIMER <秒> <コマンド>\n" + +#~ msgid "Userlist icons" +#~ msgstr "ユーザリストアイコン" + +#~ msgid "Show nickname" +#~ msgstr "ニックを表示" + +#~ msgid "Show nickname and op/voice icon before the input box" +#~ msgstr "入力ボックスの前に自分のニックとop/voiceアイコンを表示" + +#~ msgid "" +#~ "/MKICKB, Sets a ban of *@* and mass kicks everyone except you in the " +#~ "current channel (needs chanop)\n" +#~ msgstr "" +#~ "/MKICKB, 現在のチャンネルで, 自分以外の全員を キックして, さらにバンする " +#~ "(なるとが必要).\n" + +#~ msgid "" +#~ "An IRC Client for UNIX.\n" +#~ "\n" +#~ "This binary was compiled on " +#~ msgstr "" +#~ "UNIXのIRCクライアント。\n" +#~ "\n" +#~ "このバイナリがコンパイルされたのは" + +#~ msgid "" +#~ "(C) 1998-2001 Peter Zelezny <zed@linux.com>\n" +#~ "\n" +#~ "An IRC Client for UNIX.\n" +#~ "\n" +#~ "This binary was compiled on " +#~ msgstr "" +#~ "(C) 1998-2001 Peter Zelezny <zed@linux.com>\n" +#~ "\n" +#~ "UNIXのIRCクライアント。\n" +#~ "\n" +#~ "このバイナリがコンパイルされたのは" + +#~ msgid " Apply " +#~ msgstr "適用" + +#~ msgid "Config dir" +#~ msgstr "設定ディレクトリ" + +#~ msgid "Don't use GNOME Panel" +#~ msgstr "GNOME パネルを利用しない" + +#~ msgid "Open Toolbox" +#~ msgstr "ツールボックスを開く" + +#~ msgid "Beep" +#~ msgstr "ビープ音" + +#~ msgid "Conf" +#~ msgstr "会議" + +#~ msgid "Conference mode (no join/part msgs)" +#~ msgstr "会議モード (参加/分断 メッセージなし)" + +#~ msgid "CP" +#~ msgstr "色貼" + +#~ msgid "Ascii" +#~ msgstr "アスキー" + +#~ msgid "Bold" +#~ msgstr "太字" + +#~ msgid "Hide/Show Userlist" +#~ msgstr "ユーザリストを隠す/表示" + +#~ msgid "K" +#~ msgstr "鍵" + +#~ msgid "Perl Script.." +#~ msgstr "Perl スクリプト..." + +#~ msgid "Python Script.." +#~ msgstr "Python スクリプト..." + +#~ msgid "All Perl Scripts" +#~ msgstr "すべての Perl スクリプト" + +#~ msgid "All Python Scripts" +#~ msgstr "すべての Python スクリプト" + +#~ msgid "All Plugins" +#~ msgstr "すべてのプラグイン" + +#~ msgid "Kill" +#~ msgstr "殺す" + +#~ msgid "User _Modes" +#~ msgstr "状態(_M)" + +#~ msgid "S_cripts & Plugins" +#~ msgstr "拡張(_C)" + +#~ msgid "Use_r Menu" +#~ msgstr "メニュー(_R)" + +#~ msgid "Use the /NOTIFY command to add people to your notify list." +#~ msgstr "『/NOTIFY』コマンドで通知リストへニックを追加してください." + +#~ msgid "Show invites in active window" +#~ msgstr "アクティブウィンドウに INVITE を表示" + +#~ msgid "Show notifies in active window" +#~ msgstr "通知をアクティヴウィンドウに表示" + +#~ msgid "Priv Yes/No" +#~ msgstr "ぷりぶ はい/いいえ" + +#~ msgid "Noti Yes/No" +#~ msgstr "通知 はい/いいえ" + +#~ msgid "Chan Yes/No" +#~ msgstr "チャンネル はい/いいえ" + +#~ msgid "Ctcp Yes/No" +#~ msgstr "CTCP はい/いいえ" + +#~ msgid "Invi Yes/No" +#~ msgstr "招待 はい/いいえ" + +#~ msgid "Unig Yes/No" +#~ msgstr "無視解除 はい/いいえ" + +#~ msgid "Number of messages" +#~ msgstr "メッセージ数" + +#~ msgid "Bytes in mailbox" +#~ msgstr "メールボックス中のバイト数" + +#, fuzzy +#~ msgid "%C2<%O$1%C2>%O$t$2%O" +#~ msgstr "%C6<%O$1%C6>%O$t$2%O" + +#~ msgid "%C6<%O$1%C6>%O$t$2%O" +#~ msgstr "%C6<%O$1%C6>%O$t$2%O" + +#~ msgid "-%C10-%C11-%O$t%C12[%O$1%C12]%C $2" +#~ msgstr "-%C10-%C11-%O$t%C12[%O$1%C12]%O $2" + +#~ msgid "-%C10-%C11-%O$t$1%O" +#~ msgstr "-%C10-%C11-%O$t$1%O" + +#~ msgid "" +#~ "-%C10-%C11-%O$tDCC CHAT failed. Connection to $1 %C14[%O$2:$3%C14]%O lost." +#~ msgstr "" +#~ "-%C10-%C11-%O$tDCC チャットに失敗しました. $1 %C14[%O$2:$3%C14]%O への接続" +#~ "を失いました。" + +#~ msgid "-%C10-%C11-%O$tDCC RECV $1 ($2) failed. Connection to $3 lost." +#~ msgstr "" +#~ "-%C10-%C11-%O$t$1 ($2)の DCC 受取リに失敗しました. $3 への接続を失いまし" +#~ "た。" + +#~ msgid "" +#~ "-%C10-%C11-%O$tDCC SEND %C11$1%O failed. Connection to %C11$2%O lost." +#~ msgstr "" +#~ "-%C10-%C11-%O$t%C11$1%O の DCC 送信に失敗しました. %C11$2%O への接続を失い" +#~ "ました。" + +#~ msgid " $1 $2 $3 $4 $5 $6 $7" +#~ msgstr " $1 $2 $3 $4 $5 $6 $7" + +#~ msgid "-%C10-%C11-%O$tContents of packet: \"$1%O\"." +#~ msgstr "-%C10-%C11-%O$tパケット内容: \"$1%O\"。" + +#~ msgid "<%C10-%C11-%O$t$1 %C14(%O$2%C14)%C has left $3 %C14(%O$4%C14)%O" +#~ msgstr "" +#~ "<%C10-%C11-%O$t$1 %C14(%O$2%C14)%C はチャンネル $3 から離れました. %C14(%O" +#~ "$4%C14)%O" + +#~ msgid "-%C3-%C9-%O$tYou have new mail ($1 messages, $2 bytes total)." +#~ msgstr "-%C3-%C9-%O$t新しいメールがあります ($1 メッセージ, 全 $2 バイト)。" + +#~ msgid "%C08,02 %B-- Notify List --------------- %O" +#~ msgstr "%C08,02 %B-- 通知リスト --------------- %O" + +#~ msgid "" +#~ "%C8,2 Type To/From Status Size Pos File %O%010%B%" +#~ "C9--------------------------------------------------%O" +#~ msgstr "" +#~ "%C8,2 タイプ To/From ステータス サイズ 位置 ファイル %O%010%B" +#~ "%C9--------------------------------------------------%O" + +#~ msgid "Perform a periodic mail check." +#~ msgstr "定期的にメールチェックを行う." + +#~ msgid "/SCPINFO, Lists some information about current Perl bindings\n" +#~ msgstr "/SCPINFO, 現在の Perl バインドについての情報リストを表示する\n" + +#~ msgid "Registered Scripts:\n" +#~ msgstr "登録されているスクリプト:\n" + +#~ msgid "Inbound Handlers:\n" +#~ msgstr "Inbound ハンドラ:\n" + +#~ msgid "Command Handlers:\n" +#~ msgstr "コマンド・ハンドラ:\n" + +#~ msgid "Print Handlers:\n" +#~ msgstr "ハンドラの表示:\n" + +#~ msgid "/LISTDLL, Lists all currenly loaded plugins\n" +#~ msgstr "/LISTDLL, 現在読み込まれているプラグインリストを表示する.\n" + +#~ msgid "{to|from}" +#~ msgstr "{宛先|送り元}" + +#~ msgid "Ok" +#~ msgstr "了解" + +#~ msgid "Unload All Plugins" +#~ msgstr "すべてのプラグインをアンロード" + +#~ msgid "Background XPM:" +#~ msgstr "背景の絵(XPM):" + +#~ msgid "DIRECTORY" +#~ msgstr "ディレクトリ" + +#~ msgid "Close this tab/window" +#~ msgstr "このタブ/ウィンドウを閉じる" + +#~ msgid "Auto Open Dialog Windows" +#~ msgstr "ダイアログ・ウィンドウを自動的に開く" + +#~ msgid "Tint Settings" +#~ msgstr "色合い設定" + +#~ msgid "Info text" +#~ msgstr "情報テキスト" + +#~ msgid "(disabled)" +#~ msgstr "(無効)" + +#~ msgid "%C19>%O$1%C19<%O$t$2%O" +#~ msgstr "%C19>%O$1%C19<%O$t$2%O" + +#~ msgid "%C22*%O$t%C28[%O$1%C28] %O$2" +#~ msgstr "%C22*%O$t%C28[%O$1%C28] %O$2" + +#~ msgid "Delete All" +#~ msgstr "すべて削除" + +#~ msgid "Server: %s" +#~ msgstr "サーバー: %s" + +#~ msgid "Real na_me:" +#~ msgstr "本名(_M):" diff --git a/xchat-2.8.8/po/kn.gmo b/xchat-2.8.8/po/kn.gmo new file mode 100644 index 0000000000000000000000000000000000000000..1c6885e1e5585b456a0ab42f6c1357a673b2d129 GIT binary patch literal 157179 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�Ss> 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 Hcp&g!#I^YT literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/po/kn.po b/xchat-2.8.8/po/kn.po new file mode 100644 index 0000000..9c65f4e --- /dev/null +++ b/xchat-2.8.8/po/kn.po @@ -0,0 +1,5541 @@ +# This file is put in the public domain. +# Translation of xchat-2.8.6 in to Kannada. +# Copyright(C) 2010 THE xchat.po'S +# This file is distributed under the same license as the xchat package. +# Shankar Prasad <svenkate@redhat.com>, 2010. +msgid "" +msgstr "" +"Project-Id-Version: xchat-2.8.6 \n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2010-03-14 00:03+0530\n" +"Last-Translator: Shankar Prasad <svenkate@redhat.com>\n" +"Language-Team: Kannada <debian-l10n-kannada@lists.debian.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "~/.xchat2 ಅನ್ನು ರಚಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "ನಾನು ಕಾರ್ಯನಿರತವಾಗಿದ್ದೇನೆ" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "ಹೊರಹೋಗಲಾಗುತ್ತಿದೆ" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* IRC ಅನ್ನು ನಿರ್ವಾಹಕರಾಗಿ ಚಲಾಯಿಸುವುದು ಮೂರ್ಖತನ! \n" +" ನೀವು ಒಂದು ಬಳಕೆದಾರ ಖಾತೆಯನ್ನು ರಚಿಸಿ ನಂತರ ಒಳಕ್ಕೆ ಪ್ರವೇಶಿಸಬೇಕು.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "ಕಾಯಲಾಗುತ್ತಿದೆ" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "ಸಕ್ರಿಯ" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "ವಿಫಲವಾಗಿದೆ" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "ಆಯಿತು" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "ಸಂಪರ್ಕಿತಗೊಂಡಿದೆ" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "ನಿಲ್ಲಿಸಿದೆ" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "%s ಅನ್ನು ನಿಲುಕಿಸಕೊಳ್ಳಲು ಸಾಧ್ಯವಿಲ್ಲ\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "ದೋಷ" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s ರವರು \"%s\" ಅನ್ನು ನೀಡುತ್ತಿದ್ದಾರೆ. ನೀವು ಸ್ವೀಕರಿಸಲು ಬಯಸುತ್ತೀರೆ?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "ಯಾವುದೆ ಸಕ್ರಿಯ DCCಗಳಿಲ್ಲ\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "ಹೌದು " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "ಇಲ್ಲ " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "ನಿಮ್ಮತ್ತ %s ಇಂದ CTCP ಹರಿಸುತ್ತಿದ್ದಾರೆ, %s ಅನ್ನು ಆಲಕ್ಷಿಸಲಾಗುತ್ತಿದೆ\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "" +"ನಿಮ್ಮತ್ತ %s ಇಂದ MSG ಮಹಾಪೂರ ಹರಿದುಬರುತ್ತಿದೆ, gui_auto_open_dialog ಅನ್ನು OFF ಗೆ " +"ಬದಲಾಯಿಸಲಾಗುತ್ತಿದೆ.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s ಆನ್‌ಲೈನ್\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s ಆಫ್‍ಲೈನ್\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "ಯಾವುದೆ ಚಾನಲ್‌ಗೆ ಸೇರ್ಪಡೆಗೊಂಡಿಲ್ಲ. /join #<channel> ಅನ್ನು ಪ್ರಯತ್ನಿಸಿ ನೋಡಿ\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "ಸಂಪರ್ಕಿತಗೊಂಡಿಲ್ಲ. /server <host> [<port>] ಅನ್ನು ಪ್ರಯತ್ನಿಸಿ ನೋಡಿ\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "ಈಗಾಗಲೆ ಆಚೆ ಹೋಗಿದ್ದಾರೆ ಎಂದು ಗುರುತು ಹಾಕಲಾಗಿದೆ: %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "ಮರಳಿಬಂದಿದ್ದಾರೆ ಎಂದು ಈಗಾಗಲೆ ಗುರುತುಹಾಕಲಾಗಿದೆ.\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "ಚಲಾಯಿಸಲು ನನಗೆ /bin/sh ನ ಅಗತ್ಯವಿದೆ!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "ಲಭ್ಯವಿರುವ ಆಜ್ಞೆಗಳು:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "ಬಳಕೆದಾರರಿಂದ ಸೂಚಿಸಲಾದ ಆಜ್ಞೆಗಳು:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "ಪ್ಲಗ್‌ಇನ್‌ನಿಂದ ಸೂಚಿಸಲಾದ ಆಜ್ಞೆಗಳು:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ /HELP <command> ಅನ್ನು, ಅಥವ /HELP -l ಅನ್ನು ಪ್ರಯತ್ನಿಸಿ" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "'%s' ಎಂಬ ಆಜ್ಞಾತ ಆಜ್ಞೆಯನ್ನು ಆಲಕ್ಷಿಸಲಾಗಿದೆ." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "ಅಂತಹ ಯಾವುದೆ ಪ್ಲಗ್‌ಇನ್ ಕಂಡುಬಂದಿಲ್ಲ.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "ಆ ಪ್ಲಗ್‌ಇನ್ ಲೋಡ್ ಆಗಲು ನಿರಾಕರಿಸಿದೆ.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "" +"ADDBUTTON <name> <action>, ಇದು ಬಳಕೆದಾರ ಪಟ್ಟಿಯಲ್ಲಿ ಒಂದು ಗುಂಡಿಯನ್ನು ಸೇರಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <cmd>, ನೀವು ಇರುವ ಎಲ್ಲಾ ಚಾನಲ್‌ಗೂ ಒಂದು ಆಜ್ಞೆಯನ್ನು ಕಳುಹಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHANL <cmd>, ನೀವು ಇರುವ ಎಲ್ಲಾ ಚಾನಲ್‌ಗೂ ಒಂದು ಆಜ್ಞೆಯನ್ನು ಕಳುಹಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <cmd>, ನೀವು ಇರುವ ಎಲ್ಲಾ ಪರಿಚಾರಕಕ್ಕೂ ಒಂದು ಆಜ್ಞೆಯನ್ನು ಕಳುಹಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<reason>], ಆಚೆ ಹೋಗಿದ್ದಾರೆ ಎಂದು ಸೂಚಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "BACK, ಮರಳಿದ್ದಾರೆ ಎಂದು ಗುರುತುಹಾಕುತ್ತದೆ (ಆಚೆ ಎಂದಲ್ಲ)" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <mask> [<bantype>], ಮುಸುಕಿಗೆ(ಮಾಸ್ಕ್) ತಾಳೆಯಾಗುವ ಪ್ರಸಕ್ತ ಚಾನಲ್‌ನಲ್ಲಿನ ಎಲ್ಲರನ್ನೂ " +"ನಿರ್ಬಂಧಿಸಲಾಗುತ್ತದೆ. ಅವರು ಈಗಾಗಲೆ ಚಾನಲ್‌ನಲ್ಲಿದ್ದಲ್ಲಿ ಇದು ಅವರನ್ನು ಹೊರಹಾಕುವುದಿಲ್ಲ (chanop " +"ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:3506 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <variable> [<value>]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "" +"CLEAR [ALL|HISTORY], ಪ್ರಸಕ್ತ ಪಠ್ಯ ವಿಂಡೊವನ್ನು ಅಥವ ಆಜ್ಞೆಯ ಇತಿಹಾಸವನ್ನು ಅಳಿಸಿಹಾಕುತ್ತದೆ" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, ಪ್ರಸಕ್ತ ವಿಂಡೊ/ಹಾಳೆಯನ್ನು ಮುಚ್ಚುತ್ತದೆ" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" +"COUNTRY [-s] <code|wildcard>, ಒಂದು ದೇಶದ ಸಂಕೇತವನ್ನು ಹುಡುಕುತ್ತದೆ, ಉದಾ: au = " +"australia" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <nick> <message>, ನಿಗದಿತ ಅಡ್ಡಹೆಸರಿಗೆ CTCP ಸಂದೇಶವನ್ನು ಕಳುಹಿಸುತ್ತದೆ, ಸಾಮಾನ್ಯ " +"ಸಂದೇಶಗಳೆಂದರೆ VERSION ಹಾಗು USERINFO ಆಗಿರುತ್ತದೆ" + +#: src/common/outbound.c:3516 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "" +"CYCLE [<channel>], ಪ್ರಸಕ್ತ ಅಥವ ಸೂಚಿಸಲಾದ ಚಾನಲ್‌ನಿಂದ ನಿರ್ಗಮಿಸಿ ನಂತರ ತಕ್ಷಣ ಮರಳಿ " +"ಸೇರಿಕೊಳ್ಳಲಾಗುತ್ತದೆ" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <nick> - ಕಳುಹಿಸಲಾದ ಕಡತವನ್ನು ಸ್ವೀಕರಿಸಿ\n" +"DCC SEND [-maxcps=#] <nick> [ಕಡತ] - ನಿಗದಿತ ವ್ಯಕ್ತಿಗೆ ಕಡತವನ್ನು ಕಳುಹಿಸಿ\n" +"DCC PSEND [-maxcps=#] <nick> [ಕಡತ] - ನಿಷ್ಕ್ರಿಯ ಕ್ರಮದಲ್ಲಿ ಒಂದು ಕಡತವನ್ನು ಕಳುಹಿಸಿ\n" +"DCC LIST - DCC ಪಟ್ಟಿಯನ್ನು ತೋರಿಸಿ\n" +"DCC CHAT <nick> - ನಿಗದಿತ ವ್ಯಕ್ತಿಯೊಂದಿಗೆ DCC CHAT ನಡೆಸಿ\n" +"DCC PCHAT <nick> - ನಿಗದಿತ ವ್ಯಕ್ತಿಯೊಂದಿಗೆ ನಿಷ್ಕ್ರಿಯ ಕ್ರಮದಲ್ಲಿ " +"DCC CHAT ನಡೆಸಿ\n" +"DCC CLOSE <type> <nick> <file> ಉದಾಹರಣೆ:\n" +" /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <nick>, ಪ್ರಸಕ್ತ ಚಾನಲ್‌ನಲ್ಲಿ ಅಡ್ಡಹೆಸರಿನಿಂದ chanhalf-op ಸ್ಥಿತಿಯನ್ನು ತೆಗೆದು " +"ಹಾಕುತ್ತದೆ (chanop ನ ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <name>, ಇದು ಬಳಕೆದಾರ ಪಟ್ಟಿಯಲ್ಲಿನ ಒಂದು ಗುಂಡಿಯನ್ನು ಅಳಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <nick>, ಪ್ರಸಕ್ತ ಚಾನಲ್‌ನಲ್ಲಿ ಅಡ್ಡಹೆಸರಿನಿಂದ chanop ಸ್ಥಿತಿಯನ್ನು ತೆಗೆದು ಹಾಕುತ್ತದೆ " +"(chanop ನ ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <nick>, ಪ್ರಸಕ್ತ ಚಾನಲ್‌ನಲ್ಲಿ ಅಡ್ಡಹೆಸರಿನಿಂದ ಧ್ವನಿ ಸ್ಥಿತಿಯನ್ನು ತೆಗೆದು ಹಾಕುತ್ತದೆ " +"(chanop ನ ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, ಪರಿಚಾರಕದಿಂದ ಸಂಪರ್ಕವನ್ನು ಕಡಿದು ಹಾಕುತ್ತದೆ" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <nick|host|ip>, ಒಬ್ಬ ಬಳಕೆದಾರರ IP ಸಂಖ್ಯೆಯನ್ನು ತಿಳಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <text>, ಪಠ್ಯವನ್ನು ನಿಮಗೆ ಮಾತ್ರ ಕಾಣಿಸುವಂತೆ ಗೋಚರಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <command>, ಆಜ್ಞೆಯನ್ನು ಚಲಾಯಿಸುತ್ತದೆ. -o ಫ್ಲಾಗ್‌ ಅನ್ನು ಬಳಸಲಾಗಿದ್ದರೆ ಔಟ್‌ಪುಟ್ " +"ಅನ್ನು ಪ್ರಸಕ್ತ ಚಾನಲ್‌ಗೆ ಕಳುಹಿಸಲಾಗುತ್ತದೆ, ಇಲ್ಲದೆ ಹೋದಲ್ಲಿ ಪ್ರಸಕ್ತ ಪಠ್ಯ ಚೌಕಕ್ಕೆ ಮುದ್ರಿಸಲಾಗುತ್ತದೆ" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, ಪ್ರಕ್ರಿಯೆ SIGCONT ಅನ್ನು ಕಳುಹಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], ಚಾಲನೆಯಲ್ಲಿರುವ exec ಅನ್ನು ಅಂತ್ಯಗೊಳಿಸುತ್ತದೆ. -9 ಅನ್ನು ನೀಡಲಾಗಿದ್ದರೆ " +"SIGKILL ಆಗುತ್ತದೆ" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECCONT, ಪ್ರಕ್ರಿಯೆ SIGSTOP ಅನ್ನು ಕಳುಹಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, ಪ್ರಕ್ರಿಯೆಗಳ stdin ಗೆ ದತ್ತಾಂಶವನ್ನು ಕಳುಹಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, ಇದು ಪ್ರಸಕ್ತ ಪರಿಚಾರಕದ ಕಳುಹಿಸುವ ಸರತಿಯನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" +"GATE <host> [<port>], ಒಂದು ಆತಿಥೇಯದ ಮೂಲಕ ಪ್ರಾಕ್ಸಿಗಳು, ಪೂರ್ವನಿಯೋಜಿತ ಸಂಪರ್ಕಸ್ಥಾನವು " +"23 ಆಗಿರುತ್ತದೆ" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <nick> <password>, ghost ಮಾಡಲಾದ ಅಡ್ಡಹೆಸರನ್ನು ಕೊಲ್ಲುತ್ತದೆ" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" +"HOP <nick>, ಅಡ್ಡಹೆಸರಿಗೆ chanhalf-op ಸ್ಥಿತಿಯನ್ನು ಒದಗಿಸುತ್ತದೆ (chanop ನ " +"ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <password>, nickserv ನಿಮ್ಮನ್ನು ಗುರುತಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <mask> <types..> <options..>\n" +" mask - ಕಡೆಗಣಿಸಬೇಕಿರುವ ಆತಿಥೇಯ ಮುಸುಕು, ಉದಾ: *!*@*.aol.com\n" +" types - ಕಡೆಗಣಿಸಬೇಕಿರುವ ದತ್ತಾಂಶದ ಬಗೆಗಳು, ಇವುಗಳಲ್ಲಿ ಒಂದು ಅಥವ ಎಲ್ಲವೂ:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <nick> [<channel>], ನಿಗದಿತ ವ್ಯಕ್ತಿಯನ್ನು ಚಾನಲ್‌ಗೆ ಆಮಂತ್ರಿಸುತ್ತದೆ, " +"ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಪ್ರಸಕ್ತ ಚಾನಲ್‌ ಆಗಿರುತ್ತದೆ (chanop ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <channel>, ಚಾನಲ್‌ಗೆ ಸೇರ್ಪಡೆಗೊಳ್ಳುತ್ತದೆ" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <nick>, ನಿಗದಿತ ವ್ಯಕ್ತಿಯನ್ನು ಪ್ರಸಕ್ತ ಚಾನಲ್‌ನಿಂದ ಹೊರಹಾಕುತ್ತದೆ (chanop ನ " +"ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <nick>, ನಿಗದಿತ ವ್ಯಕ್ತಿಯನ್ನು ಪ್ರಸಕ್ತ ಚಾನಲ್‌ನಲ್ಲಿ ಮೊದಲು ನಿಷೇಧಿಸಿ ನಂತರ " +"ಹೊರಹಾಕುತ್ತದೆ (chanop ನ ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, ಹೊಸ ಲ್ಯಾಗ್ ಪರಿಶೀಲನೆಯನ್ನು ಒತ್ತಾಯಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <string>, ಬಫರಿನಲ್ಲಿನ ಒಂದು ವಾಕ್ಯಕ್ಕಾಗಿ ಹುಡುಕುತ್ತದೆ" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <file>, ಪ್ಲಗ್‌ಇನ್ ಅಥವ ಸ್ಕ್ರಿಪ್ಟನ್ನು ಲೋಡ್ ಮಾಡುತ್ತದೆ" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, ಪ್ರಸಕ್ತ ಚಾನಲ್‌ನಲ್ಲಿನ ಎಲ್ಲಾ chanhalf-op ಗಳನ್ನು ಒಟ್ಟಿಗೆ deop ಮಾಡುತ್ತದೆ (chanop " +"ನ ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, ಪ್ರಸಕ್ತ ಚಾನಲ್‌ನಲ್ಲಿನ ಎಲ್ಲಾ chanop ಗಳನ್ನು ಒಟ್ಟಿಗೆ deop ಮಾಡುತ್ತದೆ (chanop ನ " +"ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <action>, ಕ್ರಿಯೆಯನ್ನು ಪ್ರಸಕ್ತ ಚಾನಲ್‌ಗೆ ಕಳುಹಿಸುತ್ತದೆ (ಕ್ರಿಯೆಗಳನ್ನು ಮೂರನೆ ವ್ಯಕ್ತಿ " +"ಹೇಳುವಂತೆ ಬರೆಯಲಾಗುತ್ತದೆ, ಉದಾ., /me jumps)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, ನಿಮ್ಮನ್ನು ಹೊರತು ಪಡಿಸಿ ಎಲ್ಲರನ್ನೂ ಪ್ರಸಕ್ತ ಚಾನಲ್‌ನಿಂದ ಹೊರಹಾಕುತ್ತದೆ (chanop ನ " +"ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, ಚಾನಲ್‌ನಲ್ಲಿನ ಎಲ್ಲಾ ಬಳಕೆದಾರರಿಗೂ ಒಟ್ಟಿಗೆ op ಮಾಡಲಾಗುತ್ತದೆ (chanop ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <nick> <message>, ಒಂದು ಖಾಸಗಿ ಸಂದೇಶವನ್ನು ಕಳುಹಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, ಪ್ರಸಕ್ತ ಚಾನಲ್‌ನಲ್ಲಿನ ಅಡ್ಡಹೆಸರುಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <nick> <message>, ಒಂದು CTCP ಸೂಚನೆಯನ್ನು ಕಳುಹಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <hostname> [<port>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <nickname>, ನಿಮ್ಮ ಅಡ್ಡಹೆಸರನ್ನು ಹೊಂದಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <nick/channel> <message>, ಒಂದು ಸೂಚನೆಯನ್ನು ಕಳುಹಿಸುತ್ತದೆ. ಸೂಚನೆಗಳೆಂದರೆ " +"ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಪ್ರತಿಕ್ರಿಯಿಸಬೇಕಿರುವ ಸಂದೇಶಗಳಾಗಿರುತ್ತವೆ" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n network1[,network2,...]] [<nick>], ನಿಮ್ಮ ಸೂಚನಾ ಪಟ್ಟಿಯನ್ನು ತೋರಿಸುತ್ತದೆ " +"ಅಥವ ಅದಕ್ಕೆ ನಿಶ್ಚಿತ ವ್ಯಕ್ತಿಯನ್ನು ಸೇರಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" +"OP <nick>, ಅಡ್ಡಹೆಸರಿಗೆ chanop ಸ್ಥಿತಿಯನ್ನು ನೀಡುತ್ತದೆ (chanop ನ ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" +"PART [<channel>] [<reason>], ಚಾನಲ್‌ನಿಂದ ಹೊರಹೋಗಲಾಗುತ್ತದೆ, ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಪ್ರಸಕ್ತ " +"ಚಾನಲ್ ಆಗಿರುತ್ತದೆ" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "" +"PING <nick | channel>, ಅಡ್ಡಹೆಸರಿಗೆ ಅಥವ ಚಾನಲ್‌ಗೆ CTCP ಪಿಂಗ್‌ಗಳನ್ನು ಕಳುಹಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "" +"QUERY [-nofocus] <nick>, ನಿಶ್ಚಿತ ವ್ಯಕ್ತಿಯೊಂದಿಗೆ privmsg ವಿಂಡೊವನ್ನು ತೆರೆಯುತ್ತದೆ" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<reason>], ಪರಿಚಾರಕದಿಂದ ಸಂಪರ್ಕವನ್ನು ಕಡಿದು ಹಾಕುತ್ತದೆ" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <text>, ಇದು ಪಠ್ಯವನ್ನು ಕಚ್ಛಾ ರೂಪದಲ್ಲಿ ಪರಿಚಾರಕಕ್ಕೆ ಕಳುಹಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], ಪ್ರಸಕ್ತ ಪರಿಚಾರಕದೊಂದಿಗೆ ಮರಳಿ " +"ಸಂಪರ್ಕ ಹೊಂದಲು /RECONNECT ಬಳಸಬಹುದು ಅಥವ ಲಭ್ಯವಿರುವ ಎಲ್ಲಾ ಮುಕ್ತ ಪರಿಚಾರಕಗಳೊಂದಿಗೆ " +"ಸಂಪರ್ಕಸಾಧಿಸಲು /RECONNECT ALL ಅನ್ನು ಬಳಸಬಹುದು" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<host>] [<port>] [<password>], ಪ್ರಸಕ್ತ ಪರಿಚಾರಕದೊಂದಿಗೆ ಮರಳಿ ಸಂಪರ್ಕ " +"ಹೊಂದಲು /RECONNECT ಬಳಸಬಹುದು ಅಥವ ಲಭ್ಯವಿರುವ ಎಲ್ಲಾ ಮುಕ್ತ ಪರಿಚಾರಕಗಳೊಂದಿಗೆ " +"ಸಂಪರ್ಕಸಾಧಿಸಲು /RECONNECT ALL ಅನ್ನು ಬಳಸಬಹುದು" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <text>, irc ಪರಿಚಾರಕದಂತೆ ಪಡೆದುಕೊಂಡಿದೆಯೊ ಎಂಬಂತೆ ಕಚ್ಛಾದತ್ತಾಂಶವನ್ನು xchat ಗೆ " +"ಕಳುಹಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <text>, ಪ್ರಸಕ್ತ ವಿಂಡೊದಲ್ಲಿ ಪಠ್ಯವನ್ನು ವಸ್ತುವಾಗಿ ಪರಿವರ್ತಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <nick> [<file>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <host> <port> <channel>, ಒಂದು ಚಾನಲ್‌ಗೆ ಸಂಪರ್ಕಿತಗಗೊಂಡು ನಂತರ " +"ಸೇರ್ಪಡೆಗೊಳ್ಳುತ್ತದೆ" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN <host> <port> <channel>, ಒಂದು ಚಾನಲ್‌ಗೆ ಸಂಪರ್ಕಿತಗಗೊಂಡು ನಂತರ " +"ಸೇರ್ಪಡೆಗೊಳ್ಳುತ್ತದೆ" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <host> [<port>] [<password>], ಪರಿಚಾರಕಕ್ಕೆ ಸಂಪರ್ಕಿತಗೊಳ್ಳುತ್ತದೆ, " +"ಸಾಮಾನ್ಯ ಸಂಪರ್ಕಗಳಿಗಾಗಿ 6667 ಆಗಿರುತ್ತದೆ ಹಾಗು ssl ಸಂಪರ್ಕಗಳಿಗಾಗಿ 9999 ಆಗಿರುತ್ತದೆ" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <host> [<port>] [<password>], ಒಂದು ಪರಿಚಾರಕಕ್ಕೆ ಸಂಪರ್ಕಿತಗೊಳ್ಳುತ್ತದೆ, " +"ಪೂರ್ವನಿಯೋಜಿತ ಸಂಪರ್ಕಸ್ಥಾನವು 6667 ಆಗಿರುತ್ತದೆ" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <variable> [<value>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<position>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<topic>], ಸೂಚಿಸಿದ ವಿಷಯವನ್ನು ಹೊಂದಿಸುತ್ತದೆ, ಅಥವ ಪ್ರಸಕ್ತ ವಿಷಯವನ್ನು ತೋರಿಸುತ್ತದೆ " + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] ಎರಡು ಚಿಹ್ನೆಗಳ ನಡುವೆ ಟ್ರೇಯನ್ನು " +"ಮಿನುಗಿಸುತ್ತದೆ.\n" +"TRAY -f <filename> ಟ್ರೇ ಅನ್ನು ಒಂದು ನಿಶ್ಚಿತ ಚಿಹ್ನೆಗೆ " +"ಹೊಂದಿಸುತ್ತದೆ.\n" +"TRAY -i <number> ಒಂದು ಆಂತರಿಕ ಚಿಹ್ನೆಯೊಂದಿಗೆ ಟ್ರೇಯನ್ನು " +"ಮಿನುಗಿಸುತ್ತದೆ.\n" +"TRAY -t <text> ಟ್ರೇಯ ಸಲಹೆಉಪಕರಣವನ್ನು ಹೊಂದಿಸುತ್ತದೆ.\n" +"TRAY -b <title> <text> ಟ್ರೇ ಬಲೂನ್ ಅನ್ನು ಹೊಂದಿಸುತ್ತದೆ." + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "" +"UNBAN <mask> [<mask>...], ಸೂಚಿತ ಮುಸುಕುಗಳ(ಮಾಸ್ಕ್) ನಿಶೇಧವನ್ನು ರದ್ದುಗೊಳಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <mask> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <name>, ಪ್ಲಗ್‌ಇನ್ ಅಥವ ಸ್ಕ್ರಿಪ್ಟನ್ನು ಅನ್‌ಲೋಡ್ ಮಾಡುತ್ತದೆ" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, ಒಂದು URL ಅನ್ನು ನಿಮ್ಮ ಜಾಲವೀಕ್ಷಕದಲ್ಲಿ ತೆರೆಯುತ್ತದೆ" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <nick1> <nick2> ಇತರೆ, ಚಾನಲ್‌ನ ಬಳಕೆದಾರಪಟ್ಟಿಯಲ್ಲಿ ಅಡ್ಡಹೆಸರನ್ನು೯" +"(ಗಳನ್ನು) ಹೈಲೈಟ್ ಮಾಡುತ್ತದೆ" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "" +"VOICE <nick>, ಬೇರೆಯೊಬ್ಬರಿಗೆ ಧ್ವನಿ ಸ್ಥಿತಿಯನ್ನು ಒದಗಿಸುತ್ತದೆ (chanop ನ ಅಗತ್ಯವಿರುತ್ತದೆ)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <message>, ಎಲ್ಲಾ ಚಾನಲ್‌ಗಳಲ್ಲಿಯೂ ಸಂದೇಶವನ್ನು ಬರೆಯುತ್ತದೆ" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <message>, ಪ್ರಸಕ್ತ ಚಾನಲ್‌ನಲ್ಲಿನ ಎಲ್ಲಾ chanops ಸಂದೇಶವನ್ನು ಕಳುಹಿಸುತ್ತದೆ" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "ಬಳಕೆ: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"ಆ ಆಜ್ಞೆಗೆ ಯಾವುದೆ ನೆರವು ಲಭ್ಯವಿಲ್ಲ.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "ಅಂತಹ ಯಾವುದೇ ಆಜ್ಞೆ ಇಲ್ಲ.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "ಬಳಕೆದಾರ ಆಜ್ಞೆಯಲ್ಲಿ ಸರಿಯಲ್ಲದ ಆರ್ಗುಮೆಂಟ್‌ಗಳು.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "ಬಹಳಷ್ಟು ಪುನರಾವರ್ತಿತ ಬಳಕೆದಾರ ಆಜ್ಞೆಗಳು, ನಿಲ್ಲಿಸಲಾಗುತ್ತಿದೆ." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "ಗೊತ್ತಿಲ್ಲದ ಆಜ್ಞೆ. /help ಅನ್ನು ಪ್ರಯತ್ನಿಸಿ\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "xchat_plugin_init ಸಂಕೇತವಾಗಿಲ್ಲ; ಇದು ನಿಜವಾಗಿಯೂ ಒಂದು xchat ಪ್ಲಗ್‌ಇನ್ ಆಗಿದೆಯೆ?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "ಇದು ಒಂದು SSL ಸಮರ್ಥವಾದ ಪರಿಚಾರಕ ಹಾಗು ಸಂಪರ್ಕಸ್ಥಾನ ಎಂದು ನೀವು ಖಚಿತವೆ?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"%s ಎಂಬ ಆತಿಥೇಯ ಹೆಸರನ್ನು ಪರಿಹರಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ\n" +"ನಿಮ್ಮ IP ಸಿದ್ಧತೆಗಳನ್ನು ಪರಿಶೀಲಿಸಿ!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "ಪ್ರಾಕ್ಸಿ ಚಲನೆಯು ವಿಫಲಗೊಂಡಿದೆ.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "%s ನಲ್ಲಿ ಮುಂದಿನ ಪರಿಚಾರಕಕ್ಕೆ ಪ್ರಯತ್ನಿಸಲಾಗುತ್ತದೆ...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"ಎಚ್ಚರಿಕೆ: \"%s\" ಅಕ್ಷರದ ಸೆಟ್‌ ತಿಳಿದಿಲ್ಲ. %s ಎಂಬ ಜಾಲಬಂಧಕ್ಕೆ ಯಾವುದೆ ಮಾತುಕತೆಯನ್ನು " +"ಅನ್ವಯಿಸಲಾಗಿಲ್ಲ." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 ಅನ್ನು ಸೂಚನೆಯ ಪಟ್ಟಿಗೆ ಸೇರಿಸಲಾಗಿದೆ." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 ನಿಷೇಧ ಪಟ್ಟಿ:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$t%C26 %B$1 %O ಅನ್ನು ಸೇರಲು ಸಾಧ್ಯವಿಲ್ಲ(ನಿಮ್ಮನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 ರವರು $2 ಎಂದು ಕರೆಯಲ್ಪಡುತ್ತಾರೆ" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 ರವರು $2 ನಲ್ಲಿ ನಿಶೇಧಿಸಿದ್ದಾರೆ" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tಚಾನಲ್ $1 ಅನ್ನು $2 ನಲ್ಲಿ ನಿರ್ಮಿಸಲಾಗಿದೆ" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "" +"%C22*%O$t%C26$1%O ರವರು ಚಾನಲ್ ಅರೆ-ಕಾರ್ಯನಿರ್ವಾಹಕ(half-operator) ಸ್ಥಿತಿಯನ್ನು %C26 $2 " +"ಇಂದ ತೆಗೆದು ಹಾಕಿದ್ದಾರೆ" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "" +"%C22*%O$t%C26$1%O ರವರು ಚಾನಲ್ ಕಾರ್ಯನಿರ್ವಾಹಕ(half-operator) ಸ್ಥಿತಿಯನ್ನು %C26 $2 ಇಂದ " +"ತೆಗೆದು ಹಾಕಿದ್ದಾರೆ" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O ರವರು %C26 $2 ಇಂದ ಧ್ವನಿಯನ್ನು ತೆಗೆದು ಹಾಕಿದ್ದಾರೆ" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 ರವರು $2 ನಲ್ಲಿ ವಿನಾಯಿತಿಯನ್ನು ಹೊಂದಿಸಿದ್ದಾರೆ" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "" +"%C22*%O$t%C26$1%O ರವರು %C26 $2 ಗೆ ಅರೆ-ಕಾರ್ಯನಿರ್ವಾಹಕ(half-operator) ಸ್ಥಿತಿಯನ್ನು " +"ನೀಡಿದ್ದಾರೆ" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 ರವರು $2 ನಲ್ಲಿ ಆಮಂತ್ರಿಸಿದ್ದಾರೆ" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%Uಚಾನಲ್ ಬಳಕೆದಾರರ ವಿಷಯ" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 ರವರು $2$3 $4 ಗೆ ಕ್ರಮವನ್ನು ಹೊಂದಿಸುತ್ತಾರೆ" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22 $1 ವಾಹಿನಿಯ ಕ್ರಮಗಳು: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "" +"%C22*%O$t%C26$1%O ರವರು %C26 $2 ಗೆ ಕಾರ್ಯನಿರ್ವಾಹಕ(half-operator) ಸ್ಥಿತಿಯನ್ನು " +"ನೀಡಿದ್ದಾರೆ" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1ರವರು $2 ನ ಮೇಲೆ ವಿನಾಯಿತಿಯನ್ನು ತೆಗೆದು ಹಾಕಿದ್ದಾರೆ" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 ರವರು $2 ನಲ್ಲಿ ಆಮಂತ್ರಣವನ್ನು ತೆಗೆದುಹಾಕಿದ್ದಾರೆ" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 ರವರು ಚಾನಲ್ ಕೀಲಿಪದವನ್ನು ತೆಗೆದುಹಾಕಿದ್ದಾರೆ" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 ರವರು ಬಳಕೆದಾರ ಮಿತಿಯನ್ನು ತೆಗೆದುಹಾಕಿದ್ದಾರೆ" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 ರವರು ಚಾನಲ್ ಕೀಲಿಪದವನ್ನು $2 ಗೆ ಹೊಂದಿಸಿದ್ದಾರೆ" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 ರವರು ಬಳಕೆದಾರ ಮಿತಿಯನ್ನು $2 ಗೆ ಹೊಂದಿಸಿದ್ದಾರೆ" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 ರವರು $2 ನಲ್ಲಿ ನಿಶೇಧವನ್ನು ತೆಗೆದುಹಾಕಿದ್ದಾರೆ" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O ರವರು %C26 $2 ಗೆ ಧ್ವನಿಯನ್ನು ನೀಡಿದ್ದಾರೆ" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22ಸಂಪರ್ಕಿತಗೊಂಡಿದೆ. ಈಗ ಪ್ರವೇಶಿಸಲಾಗುತ್ತಿದೆ..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22ರವರು $1 ($2) ಸಂಪರ್ಕಸಾಧನ $3%O ದೊಂದಿಗೆ ಸಂಪರ್ಕಸಾಧಿಸಿದ್ದಾರೆ..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21ಸಂಪರ್ಕವು ವಿಫಲಗೊಂಡಿದೆ. ದೋಷ: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tರವರು $2 ಇಂದ CTCP $1 ಅನ್ನು ಪಡೆದಿದ್ದಾರೆ" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tರವರು $2 ಇಂದ CTCP $1 ಅನ್ನು ಪಡೆದಿದ್ದಾರೆ ($3 ಕ್ಕೆ)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tರವರು $2 ಇಂದ CTCP $ ಶಬ್ಧವನ್ನು ಪಡೆದಿದ್ದಾರೆ" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tರವರು $2 ಇಂದ CTCP $ ಶಬ್ಧವನ್ನು ಪಡೆದಿದ್ದಾರೆ ($3ಕ್ಕೆ)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$t %C26$1%O ನೊಂದಿಗಿನ DCC CHAT ಅನ್ನು ಸ್ಥಗಿತಗೊಳಿಸಲಾಗಿದೆ." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC CHAT ಸಂಪರ್ಕವು %C26$1 %C30ದೊಂದಿಗೆ ಸಾಧಿಸಲಾಗಿದೆ[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tDCC %C26$1%O ಗಾಗಿನ CHAT ಇಲ್ಲವಾಗಿದೆ ($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$t ರವರಿಗೆ $1 ಇಂದ ಒಂದು DCC CHAT ಬಂದಿದೆ" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tರವರು $1 ಗೆ DCC CHAT ಅನ್ನು ನೀಡಲು ಬಯಸಿದ್ದಾರೆ" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tಈಗಾಗಲೆ $1 ಗೆ CHAT ಗಾಗಿ ಬಯಸಿದ್ದಾರೆ" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$t%C26 $2%O ಯೊಂದಿಗೆ DCC $1 ಸಂಪರ್ಕದ ಪ್ರಯತ್ನವು ವಿಫಲಗೊಂಡಿದೆ (err=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tರವರು $2 ಇಂದ '$1%O' ಅನ್ನು ಸ್ವೀಕರಿಸಿದ್ದಾರೆ" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 ಪ್ರಕಾರ ಗೆ/ಇಂದ ಸ್ಥಿತಿ ಗಾತ್ರ ಸ್ಥಳ ಕಡತ " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O.%010%C22*%O" +"$tContents of packet: $2" +msgstr "" +"%C22*%O$t %C26$1%O ಇಂದ ಒಂದು ಸರಿಯಲ್ಲದ DCC ಮನವಿಯನ್ನು ಪಡೆದುಕೊಂಡಿದೆ.%010%C22*%O" +"$tಪ್ಯಾಕೆಟ್‌ನಲ್ಲಿನ ಅಂಶಗಳು: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$t%C26 $1%O ಅನ್ನು %C26 $2 ಗೆ ನೀಡಲಾಗುತ್ತಿದೆ" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tಅಂತಹ ಯಾವುದೆ DCC ನೀಡಿಕೆ ಇಲ್ಲ." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV%C26 $2%O ಗೆ%C26 $1%O ಸ್ಥಗಿತಗೊಳಿಸಲಾಗಿದೆ." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC RECV%C26 $1%O %C26 $3%O ಇಮದ ಪೂರ್ಣಗೊಂಡಿದೆ %C30[%C26$4%O cps%C30]%" +"O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC RECV ಸಂಪರ್ಕವು %C26 ಗೆ ಸಾಧಿಸಲಾಗಿದೆ $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV%C26 $1%O %C26 $3%O ಇಂದ ವಿಫಲಗೊಂಡಿದೆ ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV: $1 ಅನ್ನು ಬರೆಯುವ ಸಲುವಾಗಿ ತೆರೆಯಲಾಗಿಲ್ಲ ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "" +"%C22*%O$t%C26 $1%C ಎಂಬ ಕಡತವು ಈಗಾಗಲೆ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ, ಬದಲಿಗೆ ಅದನ್ನು%C26 $2%O " +"ಉಳಿಸಲಾಗುತ್ತಿದೆ." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "" +"%C22*%O$t%C26$1 %Oರವರು%C26 $2 ಅನ್ನು %Cಇಂದ%C26 $3%C ಮರಳಿ ಆರಂಭಿಸುವಂತೆ ಮನವಿ " +"ಸಲ್ಲಿಸಿದ್ದಾರೆ." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC SEND%C26 $2%O ಗೆ%C26 $1%O ಸ್ಥಗಿತಗೊಳಿಸಲಾಗಿದೆ." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O ಪೂರ್ಣಗೊಂಡಿದೆ %C30[%C26$3%O cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$t%C26 $1 %C30[%O$2%C30] ನೊಂದಿಗೆ DCC SEND ಸಂಪರ್ಕವನ್ನು ಸಾಧಿಸಲಾಗಿದೆ" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O ವಿಫಲಗೊಂಡಿದೆ. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Oರವರು%C26 $2 %O(%C26$3 %Obytes) ಅನ್ನು ನೀಡಬಯಸಿದ್ದಾರೆ" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "" +"%C22*%O$tDCC $1%C26 $2 %O%C26 $3 %Cಗೆ ನಿಲ್ಲಿಸಲಾಗಿದೆ - ಸ್ಥಗಿತಗೊಳಿಸಲಾಗುತ್ತಿದೆ." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "" +"%C22*%O$tDCC $1%C26 $2 %O%C26 $3 %Oಗೆ ಕಾಲಾವಧಿ ತೀರಿದೆ - ಸ್ಥಗಿತಗೊಳಿಸಲಾಗುತ್ತಿದೆ." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 ಅನ್ನು ಸೂಚನಾ ಪಟ್ಟಿಯಿಂದ ಅಳಿಸಿಹಾಕಲಾಗುತ್ತಿದೆ." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tಸಂಪರ್ಕ ಕಡಿದುಹೋಗಿದೆ ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tನಿಮ್ಮ IP ಅನ್ನು ತಿಳಿದುಕೊಂಡಿದ್ದಾರೆ: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O ನಿಮ್ಮನ್ನು ಕಡೆಗಣಿಸುವ ಪಟ್ಟಿಗೆ ಸೇರಿಸಿದ್ದಾರೆ." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "%C26$1%O ನಲ್ಲಿ ಆಲಕ್ಷಿಸುವುದು ವಿಫಲಗೊಂಡಿದೆ." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O ಕಡೆಗಣಿಸಬೇಕಿರುವ ಪಟ್ಟಿಯಿಂದ ತೆಗೆದು ಹಾಕಿದ್ದಾರೆ." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " ಕಡೆಗಣಿಸುವ ಪಟ್ಟಿಯು ಖಾಲಿ ಇದೆ." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "" +"%C22*%O$t%C26 %B$1 %O ಅನ್ನು ಸೇರಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ(ಈ ಚಾನಲ್‌ಗೆ ಕೇವಲ ಆಮಂತ್ರಣದ ಮೇರೆಗೆ " +"ಸೇರಬಹುದು)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tನಿಮ್ಮನ್ನು%C26 $1%O by%C26 $2%C ಗೆ ಆಮಂತ್ರಿಸಲಾಗಿದೆ (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) ರವರು $2 ಗೆ ಸೇರಿದ್ದಾರೆ" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$t%C26 %B$1 %O ಅನ್ನು ಸೇರಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ(ಕೀಲಿಪದದ ಅಗತ್ಯವಿದೆ)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 ರವರು $2 ಅನ್ನು $3 ಇಂದ ಹೊರಹಾಕಿದ್ದಾರೆ ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$t $1 ರವರು ನಿಮ್ಮನ್ನು ಅಂತ್ಯಗೊಳಿಸಿದ್ದಾರೆ ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD ಅನ್ನು ಉಪೇಕ್ಷಿಸಲಾಗಿದೆ." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 ಈಗಾಗಲೆ ಬಳಕೆಯಲ್ಲಿದೆ. $2 ದೊಂದಿಗೆ ಪ್ರಯತ್ನಿಸಲಾಗುತ್ತಿದೆ..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$tಎಂಬ ಅಡ್ಡಹೆಸರು ಈಗಾಗಲೆ ಬಳಕೆಯಲ್ಲಿದೆ. ಬೇರೊಂದು ಅಡ್ಡಹೆಸರಿಗಾಗಿ /NICK ಅನ್ನು " +"ಪ್ರಯತ್ನಿಸಿ." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tಅಂತಹ ಯಾವುದೆ DCC ಇಲ್ಲ." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tಯಾವುದೆ ಪ್ರಕ್ರಿಯೆ ಚಾಲನೆಯಲ್ಲಿಲ್ಲ" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tಸೂಚನಾ ಪಟ್ಟಿ ಖಾಲಿ ಇದೆ." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B ಸೂಚನಾ ಪಟ್ಟಿ " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 ಬಳಕೆದಾರರ ಸೂಚನಾ ಪಟ್ಟಿ." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tಸೂಚನೆ: $1 ರವರು ಆಫ್‌ಲೈನಿನಲ್ಲಿದ್ದಾರೆ ($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tಸೂಚನೆ: $1 ರವರು ಆನ್‌ಲೈನಿನಲ್ಲಿದ್ದಾರೆ ($3)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) ರವರು $3 ಅನ್ನು ಬಿಟ್ಟು ಹೋಗಿದ್ದಾರೆ" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "" +"%C23*%O$t%C23$1 (%O%C23$2) ರವರು $3 ಅನ್ನು ಬಿಟ್ಟು ಹೋಗಿದ್ದಾರೆ (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$t$1 ಇಂದ ಪಿಂಗ್ ಪ್ರತ್ಯುತ್ತರ: $2 ಸೆಕೆಂಡು(ಗಳು)" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "" +"%C22*%O$t$1 ಸೆಕೆಂಡುಗಳಿಗೆ ಯಾವುದೆ ಪಿಂಗ್ ಪ್ರತ್ಯುತ್ತರವಿಲ್ಲ, ಸಂಪರ್ಕ ಕಡಿದುಹಾಕಲಾಗುತ್ತಿದೆ." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tA ಪ್ರಕ್ರಿಯೆಯು ಈಗಾಗಲೆ ಚಾಲನೆಯಲ್ಲಿದೆ" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 ರವರು ನಿರ್ಗಮಿಸಿದ್ದಾರೆ (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 %B %C30ಕ್ರಮಗಳನ್ನು ಹೊಂದಿಸುತ್ತದೆ[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/ಭಾರಿ ಹೊಡೆತಗಳು%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$%C26 $1%O ನ IP ಸಂಖ್ಯೆಗಾಗಿ ಹುಡುಕಲಾಗುತ್ತಿದೆ..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22ಸಂಪರ್ಕಿತಗೊಂಡಿದ್ದಾರೆ." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22 $1 ಗಾಗಿ ಹುಡುಕಲಾಗುತ್ತಿದೆ" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tಹಿಂದಿನ ಸಂಪರ್ಕದ ಪ್ರಯತ್ನವನ್ನು ನಿಲ್ಲಿಸಲಾಗಿದೆ (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29$1%C %C29ಗಾಗಿನ ವಿಷಯವು ಹೀಗಿದೆ: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 ರವರು ವಿಷಯವನ್ನು ಇದಕ್ಕೆ ಬದಲಾಯಿಸಿದ್ದಾರೆ: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "" +"%C29*%O$t%C29 $1%C %C29 ಗಾಗಿನ ವಿಷಯವನ್ನು $2%C %C29 ಎಂಬುದಕ್ಕೆ $3 ಇಂದ ಹೊಂದಿಸಲಾಗಿದೆ" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tಗೊತ್ತಿರದ ಆತಿಥೇಯ. ಸರಿಯಾಗಿ ನಮೂದಿಸಿದ್ದೀರೆ?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "%C22*%O$t%C26 %B$1 %O ಅನ್ನು ಸೇರಲು ಸಾಧ್ಯವಿಲ್ಲ(ಬಳಕೆದಾರ ಮಿತಿಯನ್ನು ತಲುಪಿದೆ)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26$1:%C $2 ನಲ್ಲಿನ ಬಳಕೆದಾರರು" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cರವರು ಆಚೆಹೋಗಿದ್ದಾರೆ %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %O WHOIS ಪಟ್ಟಿಯ ಕೊನೆ." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O %C26 ನಿಶ್ಚಲ $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O %C26 ನಿಶ್ಚಲ $2%O, ಪ್ರವೇಶಿಸಿದ್ದು:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" +"%C22*%O$t%C28[%O$1%C28] %Oನಿಜವಾದ ಬಳಕೆದಾರ@ಆತಿಥೇಯ%C27 $2%O, ನಿಜವಾದ IP%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19ಈಗ $2 ನಲ್ಲಿ ಮಾತನಾಡುತ್ತಿದ್ದಾರೆ" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tನಿಮ್ಮನ್ನು $2 ಇಂದ $3 ರವರು ಹೊರಗಟ್ಟಿದ್ದಾರೆ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tನೀವು $3 ಎಂಬ ಚಾನಲ್‌ನಿಂದ ನಿರ್ಗಮಿಸಿದ್ದೀರಿ" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tನೀವು $3 ಎಂಬ ಚಾನಲ್‌ನಿಂದ ನಿರ್ಗಮಿಸಿದ್ದೀರಿ (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tನೀವು%C26 $1%O ಅನ್ನು %C26 $2%O ಗೆ ಆಹ್ವಾನಿಸಿದ್ದೀರಿ (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tನಿಮ್ಮನ್ನು $2 ಎಂದು ಗುರುತಿಸಲಾಗುತ್ತಿದೆ" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "ಇಲ್ಲಿಂದ ದಾಖಲೆಯನ್ನು ಲೋಡ್ ಮಾಡಲಾಗಿದೆ" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** ದಾಖಲೆಯನ್ನು %s ಎಂಬಲ್ಲಿ ಕೊನೆಗೊಳಿಸಲಾಗಿದೆ\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** %s ಯಲ್ಲಿ ದಾಖಲೆಯನ್ನು ಆರಂಭಿಸಲಾಗಿದೆ\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* ದಾಖಲೆ ಕಡತಗಳನ್ನು ಬರೆಯುವ ಸಲುವಾಗಿ ತೆರೆಯಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ. \n" +" %s/xchatlogs ನಲ್ಲಿ ಅನುಮತಿಗಳನ್ನು ಪರಿಶೀಲಿಸಿ" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "ಎಡ ಸಂದೇಶ" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "ಬಲ ಸಂದೇಶ" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "ಸೇರ್ಪಡೆಗೊಂಡ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "ಸೇರಲಾಗುತ್ತಿರುವ ಚಾನಲ್" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "ವ್ಯಕ್ತಿಯ ಆತಿಥೇಯ ಗಣಕ" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:973 +msgid "The action" +msgstr "ಕ್ರಿಯೆ" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "ಕ್ರಮ char" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "ಗುರುತಿಸಲಾದ ಪಠ್ಯ" + +#: src/common/text.c:980 +msgid "The text" +msgstr "ಪಠ್ಯ" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "ಸಂದೇಶ" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "ಹಳೆಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "ಹೊಸ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "ವಿಷಯವನ್ನು ಬದಲಾಯಿಸಿದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "ವಿಷಯ" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "ಚಾನಲ್" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "ಹೊರಗಟ್ಟಿದವರ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "ಹೊರಹಾಕಲಾಗುತ್ತಿರುವ ವ್ಯಕ್ತಿ" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "ಚಾನಲ್" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "ಕಾರಣ" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "ಹೊರಹೋದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "ಸಮಯ" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "ರಚಿಸಿದವರು" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "ಕಾರಣ" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "ಅತಿಥೇಯ" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "ಇದು ಯಾರಿಂದ ಬಂದಿದೆ" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "x.x ವಿನ್ಯಾಸದಲ್ಲಿ ಸಮಯ (ಕೆಳಗೆ ನೋಡಿ)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "ಇದು ಹೋಗಲಿರುವ ಚಾನಲ್" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "ಧ್ವನಿ" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "CTCP ಘಟನೆ" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "ಕೀಲಿಯನ್ನು ಹೊಂದಿಸಿದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "ಕೀಲಿ" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "ಮಿತಿಯನ್ನು ಹೊಂದಿಸಿದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "ಮಿತಿ" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "op ಅನ್ನು ಮಾಡಿದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "ಯಾರಿಗೆ op ಮಾಡಲಾಯಿತೊ ಆ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "ಯಾರಿಗೆ halfop ಮಾಡಲಾಯಿತೊ ಅವರ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "halfop ಅನ್ನು ಮಾಡಿದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "ಯಾರು voice ಮಾಡಿದರೊ ಆ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "ಯಾವ ವ್ಯಕ್ತಿಗೆ ಧ್ವನಿ ನೀಡಲಾದೆಯೋ ಆ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "ನಿಶೇಧಿಸಿದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "ನಿಶೇಧ ಮುಸುಕು(ಮಾಸ್ಕ್)" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "ಕೀಲಿಯನ್ನು ತೆಗೆದು ಹಾಕಲಾಗದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "ಮಿತಿಯನ್ನು ತೆಗೆದು ಹಾಕಿದೆ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "deop ಅನ್ನು ಯಾರು ಮಾಡಿದರೊ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "ಯಾರಿಗೆ deop ಮಾಡಲಾಯಿತೊ ಆ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "dehalfop ಅನ್ನು ಮಾಡಿದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "ಯಾರಿಗೆ dehalfop ಮಾಡಲಾಯಿತೊ ಆ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "ಯಾವ ವ್ಯಕ್ತಿಗೆ devoice ಮಾಡಲಾಗಿದೆಯೊ ಆ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "devoice ಮಾಡಲ್ಪಟ್ಟ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "ಯಾವ ವ್ಯಕ್ತಿಗೆ unban ಮಾಡಲಾಗಿದೆಯೊ ಆ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "ವಿನಾಯಿತಿಯನ್ನು ಹೊಂದಿಸಿದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "ವಿನಾಯಿತಿ ಮುಸುಕು" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "ವಿನಾಯಿತಿಯನ್ನು ತೆಗೆದು ಹಾಕಿದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "ಆಮಂತ್ರಣವನ್ನು ನೀಡಿದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "ಆಮಂತ್ರಣ ಮುಸುಕು" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "ಆಮಂತ್ರಣವನ್ನು ತೆಗೆದು ಹಾಕಿದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "ಕ್ರಮವನ್ನು ಹೊಂದಿಸಿದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "ಕ್ರಮದ ಚಿಹ್ನೆಗಳು (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "ಕ್ರಮದ ಅಕ್ಷರ" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "ಇದನ್ನು ಹೊಂದಿಸಲಾದ ಚಾನಲ್‌" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "ಬಳಕೆದಾರರ ಹೆಸರು " + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "ಪೂರ್ಣ ಹೆಸರು" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "ಚಾನಲ್ ಸದಸ್ಯತ್ವ/\"IRC ಕಾರ್ಯನಿರ್ವಾಹಕರಾಗಿದ್ದಾರೆ\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "ಪರಿಚಾರಕ(ಸರ್ವರ್‍) ಮಾಹಿತಿ" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "ನಿಶ್ಚಲ ಸಮಯ" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "ಪ್ರವೇಶದ ಸಮಯ" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "ಆಚೆ ಹೋಗಲು ಕಾರಣ" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "ಸಂದೇಶ" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "ಖಾತೆ" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "ನಿಜವಾದ ಬಳಕೆದಾರ@ಆತಿಥೇಯ" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "ನಿಜವಾದ IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "ಚಾನಲ್ ಹೆಸರು" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "ಪಠ್ಯ" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "ಪರಿಚಾರಕದ ಹೆಸರು" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "ನಿಮ್ಮನ್ನು ಆಮಂತ್ರಿಸಲಾದ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "ಬಳಕೆದಾರರು" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "ಬಳಕೆಯಲ್ಲಿರುವ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "ಪ್ರಯತ್ನಿಸಲಾಗುತ್ತಿರುವ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "ಸಂಪರ್ಕಸ್ಥಾನ" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "ಜಾಲಬಂಧ" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "ಕ್ರಮಗಳ ವಾಕ್ಯ" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "IP ವಿಳಾಸ" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "DCC ಬಗೆ" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "ಕಡತದ ಹೆಸರು" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "ನಿರ್ದೇಶಿತ ಕಡತದ ಹೆಸರು" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "ಮಾರ್ಗದ ಹೆಸರು" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "ಸ್ಥಾನ" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "ಗಾತ್ರ" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "DCC ವಾಕ್ಯ" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "ಸೂಚನಾ ಅಂಶಗಳ ಸಂಖ್ಯೆ" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "ಹಳೆಯ ಕಡತದ ಹೆಸರು" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "ಹೊಸ ಕಡತದ ಹೆಸರು" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "ಸ್ವೀಕರಿಸುವವರು" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "ಅತಿಥೇಯಮುಸುಕು" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "ಆತಿಥೇಯಗಣಕ" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "ಪ್ಯಾಕೆಟ್" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "ಸೆಕೆಂಡುಗಳು" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "ಆಮಂತ್ರಿತಗೊಂಡ ವ್ಯಕ್ತಿಯ ಅಡ್ಡಹೆಸರು" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "ನಿಶೇಧಮುಸುಕು" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "ನಿಶೇಧವನ್ನು ವಿಧಿಸಿದವರು" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "ನಿಶೇಧದ ಸಮಯ" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"ಘಟನೆ %s ಅನ್ನು ಪಾರ್ಸ್ ಮಾಡುವಲ್ಲಿ ದೋಷ ಉಂಟಾಗಿದೆ.\n" +"ಪೂರ್ವನಿಯೋಜಿತವನ್ನು ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"ಧ್ವನಿ ಕಡತವನ್ನು ಓದಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "ದೂರಸ್ಥ ಅತಿಥೇಯವು ಸಾಕೆಟ್ ಅನ್ನು ಮುಚ್ಚಿದೆ" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "ಸಂಪರ್ಕವನ್ನು ನಿರಾಕರಿಸಲಾಗಿದೆ" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "ಅತಿಥೇಯಕ್ಕೆ ಯಾವುದೆ ಮಾರ್ಗವಿಲ್ಲ" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "ಸಂಪರ್ಕದ ಸಮಯ ಮೀರಿದೆ" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "ಆ ವಿಳಾಸವನ್ನು ನಿಯೋಜಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "ಪೀರ್ ಇಂದ ಸಂಪರ್ಕವನ್ನು ಮರಳಿ ಹೊಂದಿಸಲಾಗಿದೆ" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "ಅಸೆನ್ಶನ್ ದ್ವೀಪ" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "ಅಂಡೋರ" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "ಯುನೈಟೆಡ್ ಅರಬ್ ಎಮಿರೈಟ್ಸ್‍" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "ಅಫ್ಘಾನಿಸ್ಥಾನ್" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "ಆಂಟಿಗುವಾ ಹಾಗು ಬಾರ್ಬುಡ" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "ಆಂಗ್ವಿಲ್ಲಾ" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "ಅಲ್ಬೇನಿಯಾ" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "ಅರ್ಮೇನಿಯಾ" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "ನೆದರ್ಲ್ಯಾಂಡ್ಸ್‍ ಆಂಟಿಲ್ಲಿಸ್" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "ಅಂಗೋಲಾ" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "ಅಂಟಾರ್ಟಿಕಾ" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "ಅರ್ಜೆಂಟಿನಾ" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "ರಿವರ್ಸ್ DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "ಅಮೇರಿಕನ್ ಸಮೋವಾ" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "ಆಸ್ಟ್ರಿಯಾ" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "ನ್ಯಾಟೊ ಫಿಯೆಲ್" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "ಆಸ್ಟ್ರೇಲಿಯಾ" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "ಅರುಬಾ" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "ಅಲಂದ್ ದ್ವೀಪಗಳು" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "ಅಝರ್ಬೈಜಾನ್" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "ಬೋಸ್ನಿಯಾ ಹಾಗು ಹರ್ಝೆಗೋವಿನಾ" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "ಬಾರ್ಬಡೋಸ್" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "ಬಾಂಗ್ಲಾದೇಶ" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "ಬೆಲ್ಜಿಯಮ್" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "ಬರ್ಕಿನಾ ಫಾಸೋ" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "ಬಲ್ಜೇರಿಯಾ" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "ಬಹರೈನ್" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "ಬುರುಂಡಿ" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "ಬಿಸ್‌ನೆಸಸ್" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "ಬೆನಿನ್" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "ಬರ್ಮುಡಾ" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "ಬ್ರೂನೈ ದರುಸೆಲಂ" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "ಬೊಲಿವಿಯಾ" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "ಬ್ರಝಿಲ್" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "ಬಹಮಾಸ್" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "ಭೂತಾನ್" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "ಬೋವೆಟ್ ಐಲ್ಯಾಂಡ್" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "ಬೋಟ್ಸ್‍ವಾನಾ" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "ಬೆಲಾರಸ್" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "ಬೆಲೀಸ್" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "ಕೆನಡ" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "ಕೊಕೊಸ್ ದ್ವೀಪಗಳು" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "ಡೆಮೊಕ್ರಟಿಕ್ ರಿಪಬ್ಲಿಕ್ ಆಫ್ ಕಾಂಗೊ" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "ಮಧ್ಯ ಆಫ್ರಿಕನ್ ರಿಪಬ್ಲಿಕ್" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "ಕಾಂಗೊ" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "ಸ್ವಿಡ್ಜರ್ಲ್ಯಾಂಡ್" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "ಕೋಟ್ ಡೆವಾಯರ್" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "ಕುಕ್ ದ್ವೀಪಗಳು" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "ಚಿಲಿ" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "ಕ್ಯಾಮೆರೂನ್‌" + +#: src/common/util.c:898 +msgid "China" +msgstr "ಚೈನ" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "ಕೊಲಂಬಿಯ" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "ಇಂಟರ್ನಿಕ್ ಕಮರ್ಶಿಯಲ್" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "ಕೋಸ್ಟಾ ರಿಕಾ" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "ಸರ್ಬಿಯ ಹಾಗು ಮಾಂಟೆನಿಗ್ರೊ" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "ಕ್ಯೂಬ" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "ಕೇಪ್ ವರ್ಡ್" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "ಕ್ರಿಸ್‌ಮಸ್ ದ್ವೀಪ" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "ಸೈಪ್ರಸ್" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "ಜೆಕ್ ರಿಪಬ್ಲಿಕ್‌" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "ಜರ್ಮನಿ" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "ಜಿಬೋಟಿ" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "ಡೆನ್ಮಾರ್ಕ್" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "ಡೊಮನಿಕಾ" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "ಡೊಮನಿಕನ್ ರಿಪಬ್ಲಿಕ್‌" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "ಅಲ್ಜೀರಿಯ" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "ಈಕ್ವೆಡಾರ್" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "ಶೈಕ್ಷಣಿಕ ಸಂಸ್ಥೆ" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "ಎಸ್ಟೊನಿಯ" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "ಈಜಿಪ್ಟ್" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "ಪಶ್ಚಿಮ ಸಹಾರ" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "ಎರಿಟ್ರಿಯಾ" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "ಸ್ಪೇನ್" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "ಇತಿಯೋಪಿಯ" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "ಯುರೋಪಿಯನ್ ಒಕ್ಕೂಟ" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "ಫಿನ್‌ಲ್ಯಾಂಡ್" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "ಫಿಜಿ" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "ಫಾಕ್‌ಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳು" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "ಮೈಕ್ರೋನೇಸಿಯ" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "ಫರೊ ದ್ವೀಪಗಳು" + +#: src/common/util.c:928 +msgid "France" +msgstr "ಫ್ರಾನ್ಸ್" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "ಗೆಬೋನ್" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "ಗ್ರೇಟ್ ಬ್ರಿಟನ್" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "ಗ್ರೆನೆಡ" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "ಜಾರ್ಜಿಯ" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "ಫ್ರೆಂಚ್ ಗಿನಿ" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "ಬ್ರಿಟಿಷ್‌ ಚಾನಲ್ ಐಲ್‌ಗಳು" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "ಘಾನ" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "ಜಿಬ್ರಾಲ್ಟರ್" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "ಗ್ರೀನ್‌ಲ್ಯಾಂಡ್‌" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "ಗೇಂಬಿಯ" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "ಗಿನಿ" + +#: src/common/util.c:940 +msgid "Government" +msgstr "ಸರಕಾರಿ" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "ಗ್ವಾಡೆಲೋಪ್" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "ಈಕ್ವೆಟೋರಿಯಲ್ ಗಿನಿ" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "ಗ್ರೀಸ್" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "ಸೈ. ಜಾರ್ಜಿಯ ಹಾಗು ಸೈ. ಸ್ಯಂಡ್‌ವಿಚ್ ಐಲ್‌ಗಳು" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "ಗ್ವಾಟೆಮಾಲ" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "ಗುವಾಮ್" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "ಗಿನಿ-ಬಿಸಾವು" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "ಗಯಾನ" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "ಹಾಂಕ್‌ಕಾಂಗ್" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "ಹರ್ಡ್ ಹಾಗು ಮ್ಯಾಕ್‌ಡೊನಾಲ್ಡ್ ದ್ವೀಪಗಳು" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "ಹೋಂಡುರಾಸ್" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "ಕ್ರೊಯೇಶಿಯ" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "ಹೈತಿ" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "ಹಂಗೆರಿ" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "ಇಂಡೋನೇಶಿಯ" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "ಐರ್ಲ್ಯಾಂಡ್" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "ಇಸ್ರೇಲ್" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "ಐಲ್ ಆಫ್ ಮ್ಯಾನ್" + +#: src/common/util.c:959 +msgid "India" +msgstr "ಭಾರತ" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "ಇನ್‌ಫಾರ್ಮೇಶನಲ್" + +#: src/common/util.c:961 +msgid "International" +msgstr "ಅಂತರಾಷ್ಟ್ರೀಯ" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "ಬ್ರಿಟಿಷ್ ಇಂಡಿಯನ್ ಓಶಿಯನ್ ಟೆರಿಟರಿ" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "ಇರಾಕ್" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "ಇರಾನ್" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "ಐಸ್‌ಲ್ಯಾಂಡ್" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "ಇಟಲಿ" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "ಜರ್ಸಿ" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "ಜಮೈಕಾ" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "ಜೋರ್ಡಾನ್" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "ಜಪಾನ್" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "ಕೀನ್ಯಾ" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "ಕಿರ್ಗಿಸ್ತಾನ್" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "ಕಾಂಬೊಡಿಯ" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "ಕಿರಿಬಾಟಿ" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "ಕೊಮೊರೊಸ್" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "ಸೈಂಟ್ ಕಿಟ್ಸ್ ಹಾಗು ನೆವಿಸ್" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "ಉತ್ತರ ಕೊರಿಯ" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "ದಕ್ಷಿಣ ಕೊರಿಯ" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "ಕುವೈತ್" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "ಕೇಮ್ಯಾನ್ ದ್ವೀಪಗಳು" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "ಕಝಕಿಸ್ತಾನ್" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "ಲಾವೊಸ್" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "ಲೆಬೆನಾನ್" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "ಸೈಂಟ್ ಲೂಸಿಯ" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "ಲೈಕ್ಟಿಸ್ಟೆನ್" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "ಶ್ರೀಲಂಕ" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "ಲಿಬಿರಿಯ" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "ಲೆಸೊತೊ" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "ಲಿತುವಾನಿಯ" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "ಲಕ್ಸೆಂಬರ್ಗ್" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "ಲಾಟ್ವಿಯ" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "ಲಿಬಿಯ" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "ಮೊರೊಕ್ಕೊ" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "ಮೊನ್ಯಾಕೊ" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "ಮಾಲ್ಡೋವ" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "ಯನೈಟೆಡ್ ಸ್ಟೇಟ್ಸ್ ಆಫ್ ಮೆಡಿಕಲ್" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "ಮಡಗಾಸ್ಕರ್" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "ಮಾರ್ಶಲ್ ದ್ವೀಪಗಳು" + +#: src/common/util.c:999 +msgid "Military" +msgstr "ಮಿಲಿಟರಿ" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "ಮೆಸೆಡೋನಿಯ" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "ಮಾಲಿ" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "ಮಿಯನ್ಮಾರ್" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "ಮಂಗೊಲಿಯ" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "ಮಕಾವು" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "ನಾರ್ತರ್ನ್ ಮರಿಯಾನ ದ್ವೀಪಗಳು" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "ಮಾರ್ಟಿನೀಕ್" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "ಮಾರ್ಟೀನಿಯಾ" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "ಮೊಂಟ್ಸೆರಾಟ್" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "ಮಾಲ್ಟಾ" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "ಮಾರಿಶಸ್" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "ಮಾಲ್ಡೀವ್ಸ್" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "ಮಲಾವಿ" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "ಮೆಕ್ಸಿಕೊ" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "ಮಲೇಶಿಯ" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "ಮೊಝಾಂಬಿಕ್" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "ನಮಿಬಿಯ" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "ನ್ಯೂ ಕೆಲಡೋನಿಯ" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "ನೈಜರ್" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "ಇಂಟರ್ನಿಕ್ ನೆಟ್‌ವರ್ಕ್" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "ನಾರ್ಫೋಕ್ ದ್ವೀಪ" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "ನೈಜೀರಿಯ" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "ನಿಕರಾಗುವ" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "ನೆದರ್ಲ್ಯಾಂಡ್ಸ್" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "ನಾರ್ವೆ" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "ನೇಪಾಲ್" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "ನೌರು" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "ನಿಯು" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "ನ್ಯೂಜಿಲ್ಯಾಂಡ್" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "ಒಮನ್" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "ಇಂಟರ್ನಿಕ್ ನಾನ್-ಪ್ರಾಫಿಟ್ ಆರ್ಗನೈಸೇಶನ್" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "ಪನಾಮ" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "ಪೆರು" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "ಫ್ರೆಂಚ್ ಪಾಲಿನೆಸಿಯಾ" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "ಪಪುವಾ ನ್ಯೂ ಗಿನಿ" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "ಫಿಲಿಪೀನ್ಸ್" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "ಪಾಕಿಸ್ತಾನ್" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "ಪೋಲ್ಯಾಂಡ್" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "ಸೈಂಟ್ ಪಿಯರೆ ಹಾಗು ಮಿಕ್ಯೂಲಾನ್" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "ಪಿಟ್‍ಕೈರ್ನ್" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "ಪೂರ್ಟೊ ರಿಕೊ" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "ಪ್ಯಾಲೆಸ್ತೀನಿಯನ್ ಟೆರಿಟರಿ" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "ಪೋರ್ಚುಗಲ್" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "ಪಲಾವು" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "ಪರುಗ್ವೆ" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "ಕತಾರ್" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "ರಿಯೂನಿಯನ್" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "ರೋಮೇನಿಯ" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "ಓಲ್ಡ್ ಸ್ಕೂಲ್ ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "ರಶೀಯನ್ ಫೆಡರೇಶನ್" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "ರುವಾಂಡ" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "ಸೌದಿ ಅರೇಬಿಯಾ" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "ಸೊಲೊಮನ್ ದ್ವೀಪಗಳು" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "ಸಿಶೇಲ್ಸ್" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "ಸುಡಾನ್" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "ಸ್ವೀಡನ್" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "ಸಿಂಗಪೂರ್" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "ಸೈಂಟ್ ಹೆಲೆನಾ" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "ಸ್ಲೋವೆನಿಯಾ" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "ಸ್ವಾಲ್ಬಾರ್ಡ್ ಹಾಗು ಜಾನ್ ಮೇಯನ್ ದ್ವೀಪಗಳು" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "ಸ್ಲೋವಾಕ್ ರಿಪಬ್ಲಿಕ್‌" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "ಸಿಯರಾ ಲಿಯೋನ್" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "ಸ್ಯಾನ್ ಮಾರಿನೊ" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "ಸೆನೆಗಲ್" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "ಸೋಮಾಲಿಯ" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "ಸುರಿನೇಮ್" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "ಸಾವೋ ಟೋಮ್ ಹಾಗು ಪ್ರಿನ್ಸಿಪಿ" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "ಫಾರ್ಮರ್ USSR" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "ಎಲ್‌ ಸಾಲ್ವಾಡಾರ್" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "ಸಿರಿಯ" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "ಸ್ವಾಝಿಲ್ಯಾಂಡ್" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "ಟರ್ಕ್ಸ್‍ ಹಾಗು ಕೈಕೋಸ್ ಐಲ್ಯಾಂಡ್ಸ್‍" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "ಚಾಡ್" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "ಫ್ರೆಂಚ್ ಸದರ್ನ್ ಪ್ರದೇಶಗಳು" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "ಟೊಗೊ" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "ತೈಲ್ಯಾಂಡ್" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "ತಜಿಕ್‌ಸ್ತಾನ್" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "ಟೊಕೆಲಾವ್" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "ಪೂರ್ವ ತಿಮೋರ್" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "ಟರ್ಕಮೆನಿಸ್ತಾನ್" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "ಟುನೀಸಿಯಾ" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "ಟೋಂಗಾ" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "ಟರ್ಕಿ" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "ಟ್ರಿನಿಡಾಡ್ ಹಾಗು ಟೊಬ್ಯಾಗೊ" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "ಟುವಾಲು" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "ತೈವಾನ್" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "ಟಾಂಝಾನಿಯಾ" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "ಉಕ್ರೇನ್" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "ಉಗಾಂಡ" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "ಯುನೈಟೆಡ್ ಕಿಂಗ್‌ಡಮ್" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "ಯನೈಟೆಡ್ ಸ್ಟೇಟ್ಸ್ ಆಫ್ ಅಮೇರಿಕಾ" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "ಉರುಗ್ವೆ" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "ಉಜ್ಬೇಕಿಸ್ತಾನ್" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "ವ್ಯಾಟಿಕನ್ ಸಿಟಿ ಸ್ಟೇಟ್" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "ಸೈಂಟ್ ವಿನ್ಸೆಂಟ್ ಹಾಗು ಗ್ರೆನಾಡೈನ್ಸ್" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "ವೆನಿಝುವಲಾ" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "ಬ್ರಿಟಿಷ್ ವರ್ಜಿನ್ ದ್ವೀಪಗಳು" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "ಯುಎಸ್ ವರ್ಜಿನ್ ಐಲ್ಯಾಂಡ್‌ಗಳು" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "ವಿಯೆಟ್ನಾನ್" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "ವನುವಾತು" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "ವಾಲಿಸ್ ಹಾಗು ಫುಟುನಾ ದ್ವೀಪಗಳು" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "ಸಮೊವಾ" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "ಯೆಮೆನ್" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "ಮೆಯೋಟ್" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "ಯಗೋಸ್ಲಾವಿಯ" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "ಸೌತ್ ಆಫ್ರಿಕಾ" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "ಜಾಂಬಿಯಾ" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "ಜಿಂಬಾಬ್ವೆ" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "ಗೊತ್ತಿಲ್ಲದ" + +#: src/common/xchat.c:726 +msgid "_Open Dialog Window" +msgstr "ಸಂವಾದ ವಿಂಡೊವನ್ನು ತೆರೆ(_O)" + +#: src/common/xchat.c:727 +msgid "_Send a File" +msgstr "ಕಡತವನ್ನು ಕಳುಹಿಸು(_S)" + +#: src/common/xchat.c:728 +msgid "_User Info (WhoIs)" +msgstr "ಬಳಕೆದಾರ ಮಾಹಿತಿ (WhoIs)(_U)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "ಗೆಳೆಯರ ಪಟ್ಟಿಗೆ ಸೇರಿಸು(_A)" + +#: src/common/xchat.c:730 +msgid "O_perator Actions" +msgstr "ನಿರ್ವಾಹಕರ ಕ್ರಿಯೆಗಳು(_p)" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Ops ಅನ್ನು ನೀಡಿ" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Ops ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "ಧ್ವನಿಯನ್ನು ನೀಡಿ" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "ಧ್ವನಿಯನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "ಹೊರಗಟ್ಟು/ನಿಶೇಧಿಸು" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "ಹೊರಗಟ್ಟು" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "ನಿಶೇಧಿಸು" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "ಹೊರಗಟ್ಟಿ ನಿಶೇಧಿಸು" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "ಚಾನಲ್‌ನಿಂದ ಹೊರನಡೆಯಿರಿ" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "ಒಂದು ಚಾನಲ್ ಅನ್ನು ಸೇರು..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "ಸೇರಬೇಕಿರುವ ಚಾನಲ್‌ ಅನ್ನು ನಮೂದಿಸಿ:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "ಪರಿಚಾರಕದ ಕೊಂಡಿಗಳು" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "ಪರಿಚಾರಕವನ್ನು ಪಿಂಗ್‌ ಮಾಡು" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "ಆವೃತ್ತಿಯನ್ನು ಅಡಗಿಸು" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Op" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "ಶುಭವಾಗಲಿ" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "%s ಅನ್ನು ಹೊರಗಟ್ಟಲು ಕಾರಣ ಕೊಡಿ:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Sendfile" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "ಸಂವಾದ" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "ಕಳುಹಿಸು" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "ಮಾತುಕತೆ" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "ಖಾಲಿಮಾಡಿ" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "ಪಿಂಗ್" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "ಅಧಿವೇಶನದ ಬಸ್‌ನೊಂದಿಗೆ ಸಂಪರ್ಕ ಸಾಧಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "NameHasOwner ಅನ್ನು ಪೂರ್ಣಗೊಳಿಸುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "ಆಜ್ಞೆಯನ್ನು ಪೂರ್ಣಗೊಳಿಸುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "ದೂರಸ್ಥ ನಿಲುಕಣೆ" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "DBUS ಅನ್ನು ಬಳಸಿಕೊಂಡು ದೂರದಿಂದ ಬಳಸುವ ಸಲುವಾಗಿನ ಪ್ಲಗ್‌ಇನ್" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "ಅಧಿವೇಶನದ ಬಸ್‌ನೊಂದಿಗೆ ಸಂಪರ್ಕ ಸಾಧಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "%s ಅನ್ನು ಪಡೆಯಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ: %s\n" + +#: src/fe-gtk/about.c:100 +msgid "About " +msgstr "ಇದರ ಕುರಿತು " + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "ಮಲ್ಟಿಪ್ಲಾಟ್‌ಫಾರ್ಮ್ IRC ಕ್ಲೈಂಟ್" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "ಚಿಹ್ನೆಯ ನಕ್ಷೆ" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "ಸಂಪರ್ಕಿತಗೊಂಡಿಲ್ಲ." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "ಕೆಲವು ನಿಶೇಧಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡಲೆ ಬೇಕು." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "%s ನಲ್ಲಿನ ಎಲ್ಲಾ ನಿಶೇಧಗಳನ್ನು ತೆಗೆದು ಹಾಕಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುತ್ತೀರೆ?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "ಮುಸುಕು" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "ಇವರಿಂದ" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "ದಿನಾಂಕ" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "ಒಂದು ಚಾನಲ್‌ ಹಾಳೆಯಲ್ಲಿದ್ದಾಗ ಮಾತ್ರ ನೀವು ನಿಶೇಧ ಪಟ್ಟಿಯ ವಿಂಡೊವನ್ನು ತೆರೆಯಬಹುದು." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: ನಿಶೇಧ ಪಟ್ಟಿ (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "ತೆಗೆದು ಹಾಕಿ" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "ಕತ್ತರಿಸು" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "ಪುನಶ್ಚೇತನಗೊಳಿಸು" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "%d/%d ಬಳಕೆದಾರರನ್ನು ತೋರಿಸಲಾಗುತ್ತಿದೆ(%d/%d ಚಾನಲ್‌ಗಳಲ್ಲಿ)." + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "ಔಟ್‌ಪುಟ್‌ ಕಡತದ ಹೆಸರನ್ನು ಆಯ್ಕೆ ಮಾಡಿ" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "ಚಾನಲ್ ಅನ್ನು ಸೇರು(_J)" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "ಚಾನಲ್‌ನ ಹೆಸರನ್ನು ಕಾಪಿ ಮಾಡು(_C)" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "ವಿಷಯದ ಪಠ್ಯವನ್ನು ಕಾಪಿ ಮಾಡು(_T)" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: ಚಾನಲ್‌ ಪಟ್ಟಿ (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "ಹುಡುಕು(_S)" + +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "ಡೌನ್‌ಲೋಡ್‌ ಪಟ್ಟಿ(_D)" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "ಪಟ್ಟಿಯನ್ನು ಉಳಿಸು(_L)..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "ಇದನ್ನು ಮಾತ್ರ ತೋರಿಸು:" + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "ಇದರೊಂದಿಗಿನ ಚಾನಲ್" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "ಗೆ" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "ಬಳಕೆದಾರರು." + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "ಇದರಲ್ಲಿ ನೋಡು:" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "ಚಾನಲ್ ಹೆಸರು" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "ಹುಡುಕುವ ಬಗೆ:" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "ಸರಳ ಹುಡುಕಾಟ" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "ನಮೂನೆಯು ತಾಳೆಯಾಗುವಿಕೆ (ವೈಲ್ಡ್ ಕಾರ್ಡುಗಳು)" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "ರೆಗ್ಯುಲರ್ ಎಕ್ಸ್‍ಪ್ರೆಶನ್" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "ಹುಡುಕು:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "%s ಗೆ ಕಡತವನ್ನು ಕಳುಹಿಸು" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "ಆ ಕಡತವನ್ನು ಮರಳಿ ಆರಂಭಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"ಕಡತವನ್ನು ನಿಲುಕಿಸಿಕೊಳ್ಳಲು ಸಾಧ್ಯವಿಲ್ಲ: %s\n" +"%s.\n" +"ಮರಳಿ ಆರಂಭಿಸುವುದು ಸಾಧ್ಯವಿಲ್ಲ." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"ಡೌನ್‌ಲೋಡ್ ಕೋಶದಲ್ಲಿನ ಕಡತದ ಗಾತ್ರವು ನೀಡಲು ಬಯಸಿರುವ ಕಡತಕ್ಕಿಂತ ದೊಡ್ಡದಾಗಿದೆ. ಮರಳಿ " +"ಆರಂಭಿಸುವುದು ಸಾಧ್ಯವಿಲ್ಲ." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "ಒಂದೇ ಕಡತವನ್ನು ಎರಡು ವ್ಯಕ್ತಿಗಳಿಗಾಗಿ ಮರಳಿ ಆರಂಭಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: ಅಪ್‌ಲೋಡ್‌ಗಳು ಹಾಗು ಡೌನ್‌ಲೋಡ್‌ಗಳು" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "ಸ್ಥಿತಿ" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "ಕಡತ" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "ಎರಡೂ" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "ಅಪ್‌ಲೋಡ್‌ಗಳು" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "ಡೌನ್‌ಲೋಡ್‌ಗಳು" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "ವಿವರಗಳು" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "ಕಡತ:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "ವಿಳಾಸ:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "ಸ್ಥಗಿತಗೊಳಿಸು" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "ಅಂಗೀಕರಿಸು" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "ಮರಳಿ ಆರಂಭಿಸು" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "ಕಡತಕೋಶವನ್ನು ತೆರೆ..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: DCC ಮಾತುಕತೆಯ ಪಟ್ಟಿ" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Recv" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "ಕಳುಹಿಸಲಾದ" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "ಆರಂಭಿಸಿದ ಸಮಯ" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*ಹೊಸ*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "EDIT ME" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "ಹೆಸರು" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "ಆಜ್ಞೆ" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "ಮೇಲಕ್ಕೆ ಸ್ಥಳಾಂತರಿಸು" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "ಕೆಳಕ್ಕೆ ಸ್ಥಳಾಂತರಿಸು" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "ರದ್ದುಗೊಳಿಸಿ" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "ಉಳಿಸಿ" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "ಹೊಸತನ್ನು ತೋರಿಸು" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "ಅಳಿಸಿಹಾಕಿ" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "ವಿಂಗಡಿಸು" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "ನೆರವು" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "ಪರಿಚಾರಕಗಳೊಂದಿಗೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸಂಪರ್ಕ ಸಾಧಿಸಬೇಡ" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "ಒಂದು ಪ್ರತ್ಯೇಕವಾದ ಸಂರಚನಾ ಕೋಶವನ್ನು ಬಳಸು" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "ಯಾವುದೆ ಪ್ಲಗ್‌ಇನ್ ಅನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಲೋಡ್ ಮಾಡಬೇಡ" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "ಪ್ಲಗ್‌ಇನ್‌ನ ಸ್ವಯಂ ಲೋಡ್ ಆಗುವ ಕೋಶವನ್ನು ತೋರಿಸು" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "ಬಳಕೆದಾರ ಸಂರಚನಾ ಕೋಶವನ್ನು ತೋರಿಸು" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "ಒಂದು irc://server:port/channel URL ಅನ್ನು ತೆರೆ" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "ಈ ಆಜ್ಞೆಯನ್ನು ಚಲಾಯಿಸು:" + +#: src/fe-gtk/fe-gtk.c:132 +msgid "Open URL or execute command in an existing XChat" +msgstr "URL ಅನ್ನು ತೆರೆ ಅಥವ ಈಗಿರುವ XChat ನಲ್ಲಿ ಆಜ್ಞೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸು" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "ಕಿರಿದಾಗಿಸಲಾದುದರಿಂದ ಆರಂಭಿಸು. ಹಂತ 0=ಸಾಮಾನ್ಯ 1=ಚಿಹ್ನೆ ಮಾಡಲಾದ 2=ಟ್ರೇ" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "ಮಟ್ಟ" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "ಆವೃತ್ತಿಯ ಮಾಹಿತಿಯನ್ನು ತೋರಿಸು" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"ಅಕ್ಷರಶೈಲಿಯನ್ನು ತೆರೆಯಲು ವಿಫಲಗೊಂಡಿದೆ:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "ಹುಡುಕು ಬಫರ್ ಖಾಲಿ ಇದೆ.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d ಬೈಟ್‌ಗಳು" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "ಜಾಲಬಂಧ ಕಳುಹಿಸುವ ಸರತಿ: %d ಬೈಟ್‌ಗಳು" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"ಆಜ್ಞೆಯನ್ನು ಚಲಾಯಿಸು  ಕ್ರಿಯೆಯು ನೀವು ಕೀಲಿ ಅನುಕ್ರಮವನ್ನು ಒತ್ತಿದ ಜಾಗದಲ್ಲಿನ ನಮೂದು ಚೌಕದಲ್ಲಿ " +"ಅದನ್ನು ನಮೂದಿಸಿದಂತೆ ದತ್ತಾಂಶವನ್ನು ದತ್ತಾಂಶ 1 ರಲ್ಲಿ ಚಲಾಯಿಸುತ್ತದೆ. ಹಾಗಾಗಿ ಅದು ಪಠ್ಯವನ್ನು " +"(ಇದನ್ನು ಚಾನಲ್/ವ್ಯಕ್ತಿಗೆ ಕಳುಹಿಸಲಾಗುತ್ತದೆ), ಆಜ್ಞೆಗಳು ಅಥವ ಬಳಕೆದಾರ ಆಜ್ಞೆಗಳನ್ನು " +"ಹೊಂದಿರುತ್ತದೆ. ದತ್ತಾಂಶ 1 ರಲ್ಲಿನ ಎಲ್ಲಾ \\n ಅಕ್ಷರಗಳನ್ನು ಒಂದಕ್ಕಿಂತ ಹೆಚ್ಚಿನ ಆಜ್ಞೆಗಳನ್ನು " +"ಚಲಾಯಿಸುವಂತೆ ಪ್ರತ್ಯೇಕ ಆಜ್ಞೆಯನ್ನು deliminate ಮಾಡಲು ಬಳಸಲಾಗುತ್ತದೆ. ನಿಜವಾದ ಪಠ್ಯವನ್ನು " +"ಚಲಾಯಿಸುವಲ್ಲಿ \\ ಬೇಕಿದ್ದಲ್ಲಿ \\\\ ಅನ್ನು ನಮೂದಿಸಿ" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"Change Page ಆಜ್ಞೆಯು ನೋಟ್‌ಬುಕ್‌ನಲ್ಲಿ ಪುಟಗಳ ನಡುವೆ ಬದಲಾಯಿಸುತ್ತದೆ. ನೀವು ಯಾವ ಪುಟಕ್ಕೆ " +"ಬದಲಾಯಿಸಲು ಬಯಸುತ್ತೀರೊ ಅದಕ್ಕೆ ದತ್ತಾಂಶ 1 ಅನ್ನು ಹೊಂದಿಸಿ. ದತ್ತಾಂಶ 2 ಅನ್ನು ಯಾವುದಕ್ಕಾದರೂ " +"ಹೊಂದಿಸಿದಲ್ಲಿ ಬದಲಾವಣೆಯು ಪ್ರಸಕ್ತ ಸ್ಥಾನಕ್ಕೆ ಅನುಗುಣವಾಗಿ ಆಗುತ್ತದೆ." + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"Insert in Buffer ಆಜ್ಞೆಯು ದತ್ತಾಂಶ 1 ರಲ್ಲಿರುವುದನ್ನು ಪ್ರಸಕ್ತ ತೆರೆಸೂಚಕದ ಸ್ಥಳದಲ್ಲಿ ಒತ್ತಲಾದ " +"ಕೀಲಿ ಅನುಕ್ರಮದ ನಮೂದಿಗೆ ಸೇರಿಸುತ್ತದೆ." + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"Scroll Page ಆಜ್ಞೆಯು ಪಠ್ಯ ವಿಡ್ಗೆಟ್ ಅನ್ನು ಒಂದು ಪುಟದ ಅಥವ ಒಂದು ಸಾಲಿನಕ ಮೇಲಕ್ಕೆ ಅಥವ " +"ಕೆಳಕ್ಕೆ ಚಲಿಸುವಂತೆ ಮಾಡುತ್ತದೆ. ದತ್ತಾಂಶ 1 ಅನ್ನು ಮೇಲಕ್ಕೆ, ಕೆಳಕ್ಕೆ +1 ಅಥವ -1 ಗೆ ಹೊಂದಿಸಿ." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"Set Buffer ಆಜ್ಞೆಯು ದತ್ತಾಂಶ 1 ಕ್ಕೆ ನಮೂದಿಸಲಾದ ವಿಷಯಕ್ಕೆ ನಮೂದಿಸಲಾದ ಕೀಲಿ ಅನುಕ್ರಮಕ್ಕೆ " +"ನಮೂದನ್ನು ಹೊಂದಿಸುತ್ತದೆ" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"ಕೊನೆಯ ಆಜ್ಞೆ ಆಜ್ಞೆಯು ಕೊನೆಯ ಬಾರಿಗೆ ನಮೂದಿಸಲಾದ ಆಜ್ಞೆಯನ್ನು ನಮೂದಿನಲ್ಲಿ ಇರುವಂತೆ " +"ಹೊಂದಿಸುತ್ತದೆ - ಶೆಲ್‌ನಲ್ಲಿ ಮಾಡುವ ರೀತಿಯಲ್ಲಿಯೆ" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"ಕೊನೆಯ ಆಜ್ಞೆ ಆಜ್ಞೆಯು ಮುಂದಿನ ಆಜ್ಞೆಯನ್ನು ನಮೂದಿನಲ್ಲಿ ಇರುವಂತೆ ಹೊಂದಿಸುತ್ತದೆ - ಶೆಲ್‌ನಲ್ಲಿ " +"ಮಾಡುವ ರೀತಿಯಲ್ಲಿಯೆ" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"ಈ ಆಜ್ಞೆಯು ಅಪೂರ್ಣಗೊಂಡ ಅಡ್ಡಹೆಸರು ಅಥವ ಆಜ್ಞೆಯನ್ನು ಪೂರ್ಣಗೊಳಿಸುವ ನಮೂದಿನ ಪಠ್ಯವನ್ನು " +"ಬದಲಾಯಿಸುತ್ತದೆ. ದತ್ತಾಂಶ 1 ಅನ್ನು ಹೊಂದಿಸಲಾಗಿದ್ದಲ್ಲಿ, ಎರಡು ಬಾರಿ ಟ್ಯಾಬ್ ಅನ್ನು ಒತ್ತುವುದರಿಂದ " +"ಕೊನೆಯ ಬಾರಿಯ ಅಡ್ಡಹೆಸರನ್ನು ಆರಿಸುತ್ತದೆಯೆ ಹೊರತು ಮುಂದಿನದ್ದಲ್ಲ" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"ಈ ಆಜ್ಞೆಯು ಅಡ್ಡಹೆಸರುಗಳ ಪಟ್ಟಿಯಲ್ಲಿ ಮೇಲಕ್ಕೆ ಹಾಗು ಕೆಳಕ್ಕೆ ಚಲಿಸುತ್ತದೆ. ದತ್ತಾಂಶ 1 ನ್ನು " +"ಯಾವುದಕ್ಕಾದರೂ ಹೊಂದಿಸಿದಲ್ಲಿ ಇದು ಮೇಲಕ್ಕೆ ಚಲಿಸುತ್ತದೆ ಇಲ್ಲದೆ ಹೋದಲ್ಲಿ ಕೆಳಕ್ಕೆ ಚಲಿಸುತ್ತದೆ" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"ಈ ಆಜ್ಞೆಯು ಬದಲಾಯಿಸುವ ಪಟ್ಟಿಯಲ್ಲಿನ ನಮೂದಿನಲ್ಲಿ ಕಡೆಯದಾಗಿ ನಮೂದಿಸಲಾದ ಹುಡುಕುತ್ತದೆ ಹಾಗು " +"ತಾಳೆಯಾಗುವುದು ಕಂಡು ಬಂದಲ್ಲಿ ಬದಲಾಯಿಸುತ್ತದೆ" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "ಈ ಆಜ್ಞೆಯು ಎದುರಿನ ಹಾಳೆಯನ್ನು ಎಡಕ್ಕೆ ಒಂದು ಹಂತ ಸ್ಥಳಾಂತರಿಸುತ್ತದೆ" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "ಈ ಆಜ್ಞೆಯು ಎದುರಿನ ಹಾಳೆಯನ್ನು ಬಲಕ್ಕೆ ಒಂದು ಹಂತ ಸ್ಥಳಾಂತರಿಸುತ್ತದೆ" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "ಈ ಆಜ್ಞೆಯು ಪ್ರಸಕ್ತ ಹಾಳೆಯ ಸಂಕುಲವನ್ನು ಎಡಕ್ಕೆ ಒಂದು ಹಂತ ಸ್ಥಳಾಂತರಿಸುತ್ತದೆ" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "ಈ ಆಜ್ಞೆಯು ಪ್ರಸಕ್ತ ಹಾಳೆಯ ಸಂಕುಲವನ್ನು ಬಲಕ್ಕೆ ಒಂದು ಹಂತ ಸ್ಥಳಾಂತರಿಸುತ್ತದೆ" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "ಇನ್‌ಪುಟ್ ಸಾಲನ್ನು ಇತಿಹಾಸಕ್ಕೆ ತಳ್ಳುತ್ತದೆ ಆದರೆ ಪರಿಚಾರಕಕ್ಕೆ ಕಳುಹಿಸುವುದಿಲ್ಲ" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "ಕೀಲಿ ಬೈಂಡಿಂಗ್‌ಗಳ ಸಂರಚನೆಯನ್ನು ಲೋಡ್ ಮಾಡುವಲ್ಲಿ ಒಂದು ದೋಷ ಉಂಟಾಗಿದೆ" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<ಏನೂ ಇಲ್ಲ>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Mod" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "ಕೀಲಿ" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "ಕ್ರಿಯೆ" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: ಕೀಲಿಮಣೆ ಶಾರ್ಟ್-ಕಟ್‌ಗಳು" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "ದತ್ತ 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "ದತ್ತ 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "ಕೀಲಿಗಳ ಸಂರಚನಾ ಕಡತವನ್ನು ತೆರೆಯುವಾಗ ದೋಷವುಂಟಾಯಿತು\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"ಕೀಲಿ ಬೈಂಡಿಂಗ್ ಸಂರಚನೆಯ ಕಡತದಲ್ಲಿ ಗೊತ್ತಿರದ %s ಎಂಬ ಕೀಲಿಯ ಹೆಸರು\n" +"ಲೋಡ್ ಮಾಡುವಿಕೆಯನ್ನು ಸ್ಥಗಿತಗೊಳಿಸಲಾಗಿದೆ, ದಯವಿಟ್ಟು %s/keybindingsconf ಅನ್ನು ಸರಿಪಡಿಸಿ\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"ಕೀಲಿ ಬೈಂಡಿಂಗ್ ಸಂರಚನೆಯ ಕಡತದಲ್ಲಿ ಗೊತ್ತಿರದ %s ಎಂಬ ಕ್ರಿಯೆ\n" +"ಲೋಡ್ ಮಾಡುವಿಕೆಯನ್ನು ಸ್ಥಗಿತಗೊಳಿಸಲಾಗಿದೆ, ದಯವಿಟ್ಟು %s/keybindingsconf ಅನ್ನು ಸರಿಪಡಿಸಿ\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"ದತ್ತಾಂಶದ ಸಾಲನ್ನು ನಿರೀಕ್ಷಿಸಲಾಗಿತ್ತು (Dx{:|!} ಇಂದ ಆರಂಭಗೊಳ್ಳುವ) ಆದರೆ ದೊರಕಿದ್ದು ಇದು:\n" +"%s\n" +"\n" +"ದಯವಿಟ್ಟು %s/keybindings.conf ಅನ್ನು ಸರಿಪಡಿಸಿ\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"ಕೀಲಿ ಬೈಂಡಿಂಗ್ ಸಂರಚನೆಯ ಕಡತವು ಹಾಳಾಗಿದೆ, ಲೋಡ್ ಮಾಡುವಿಕೆಯನ್ನು ಸ್ಥಗಿತಗೊಳಿಸಲಾಗಿದೆ\n" +"ದಯವಿಟ್ಟು %s/keybindings.conf ಅನ್ನು ಸರಿಪಡಿಸಿ\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "ಆ ಕಡತಕ್ಕೆ ಬರೆಯಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "ಆ ಕಡತವನ್ನು ಓದಲಾಗಿಲ್ಲ." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "ಆ ಮುಸುಕು ಈಗಾಗಲೇ ಇದೆ." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "ಖಾಸಗಿ" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "ಸೂಚನೆ" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "ಆಮಂತ್ರಿಸಿ" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "ಕಡೆಗಣಿಸಿದ್ದನ್ನು ರದ್ದುಗೊಳಿಸು" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "ಕಡೆಗಣಿಸಲು ಮುಸುಕನ್ನು ನಮೂದಿಸಿ:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: ಕಡೆಗಣಿಸಬೇಕಿರುವ ಪಟ್ಟಿ" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "ಕಡೆಗಣಿಸುವ ಅಂಕಿಅಂಶಗಳು:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "ಚಾನಲ್:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "ಖಾಸಗಿ:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "ಸೂಚನೆ:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "ಆಮಂತ್ರಿಸಿ:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "ಸೇರಿಸು..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "ಚಾನಲ್ ಹೆಸರು ಬಹಳ ಸಣ್ಣದಾಗಿದೆ, ಇನ್ನೊಮ್ಮೆ ಪ್ರಯತ್ನಿಸಿ." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: ಸಂಪರ್ಕವು ಪೂರ್ಣಗೊಂಡಿದೆ" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "%s ಗಾಗಿನ ಸಂಪರ್ಕವು ಪೂರ್ಣಗೊಂಡಿದೆ." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"ಪರಿಚಾರಕ-ಪಟ್ಟಿ ವಿಂಡೊದಲ್ಲಿ, ಈ ಜಾಲಬಂಧಕ್ಕೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸೇರಲು ಯಾವುದೆ ಚಾನಲ್ " +"(ಮಾತುಕತೆಯ ಕೋಣೆಯನ್ನು) ನಮೂದಿಸಲಾಗಿಲ್ಲ." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "ನೀವು ಇದರ ನಂತರ ಏನು ಮಾಡಲು ಬಯಸುವಿರಿ?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "ಏನೂ ಇಲ್ಲ, ನಾನು ಆಮೇಲೆ ಚಾನಲ್‌ನಲ್ಲಿ ಸೇರಿಕೊಳ್ಳುತ್ತೇನೆ(_N)." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "ಚಾನಲ್‌ ಅನ್ನು ಸೇರು(_J):" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "ನೀವು ಸೇರಲು ಬಯಸುವ ಚಾನಲ್‌ನ ಹೆಸರು ತಿಳಿದಿದ್ದಲ್ಲಿ, ಇಲ್ಲಿ ಬರೆಯಿರಿ." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "ಚಾನಲ್-ಪಟ್ಟಿ ವಿಂಡೊವನ್ನು ತೆರೆ(_p)" + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "ಚಾನಲ್-ಪಟ್ಟಿಯನ್ನು ಪಡೆಯಲು ಒಂದೆರಡು ನಿಮಿಷಗಳು ಹಿಡಿಯಬಹುದು." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "ಯಾವಾಗಲೂ ಸಂಪರ್ಕಿತಗೊಂಡ ನಂತರ ಈ ಸಂವಾದವನ್ನು ತೋರಿಸು(_A)." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "ಇದರೊಂದಿಗಿನ ಸಂವಾದ" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "%s ಗಾಗಿನ ವಿಷಯ %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "ವಿಷಯವನ್ನು ಗೊತ್ತುಪಡಿಸಿಲ್ಲ" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"ಈ ಪರಿಚಾರಕವು ಇನ್ನೂ ಸಹ %d ಚಾನಲ್‌ಗಳನ್ನು ಅಥವ ಸಂವಾದಗಳನ್ನು ಹೊಂದಿದೆ. ಎಲ್ಲವನ್ನೂ ಮುಚ್ಚಬೇಕೆ?" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "XChat ನಿಂದ ನಿರ್ಗಮಿಸಬೇಕೆ?" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "ಮುಂದಿನ ಬಾರಿ ಕೇಳಬೇಡ." + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "ನೀವು %i IRC ಜಾಲಬಂಧಗಳೊಂದಿಗೆ ಸಂಪರ್ಕಿತಗೊಂಡಿದ್ದೀರಿ." + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "ನೀವು ಖಚಿತಾವಾಗಿಯೂ ನಿರ್ಗಮಿಸಲು ಬಯಸುತ್ತೀರೆ?" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "ಕೆಲವು ಕಡತ ವರ್ಗಾವಣೆಗಳು ಇನ್ನೂ ಸಹ ಸಕ್ರಿಯವಾಗಿದೆ." + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "ಟ್ರೇಗೆ ಕಿರಿದಾಗಿಸು(_M)" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "ವೈಶಿಷ್ಟ್ಯವನ್ನು ಅಥವ ಬಣ್ಣದ ಸಂಕೇತವನ್ನು ಸೇರಿಸು" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>ಬೋಲ್ಡ್</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>ಅಡಿಗೆರೆ ಎಳೆ</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "ಸಾಮಾನ್ಯ" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "ಬಣ್ಣಗಳು 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "ಬಣ್ಣಗಳು 8-15" + +#: src/fe-gtk/maingui.c:1612 +msgid "_Settings" +msgstr "ಸಿದ್ಧತೆಗಳು(_S)" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "ಡಿಸ್ಕಿಗೆ ದಾಖಲಿಸು(_L)" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "ಸ್ಕ್ರಾಲ್‌ಬ್ಯಾಕನ್ನು ಮರಳಿ ಲೋಡ್ ಮಾಡು(_R)" + +#: src/fe-gtk/maingui.c:1617 +msgid "_Hide Join/Part Messages" +msgstr "ಸೇರ್ಪಡೆಗೊಂಡ/ಹೊರಕ್ಕೆ ತೆರಳಿದ ಸಂದೇಶಗಳನ್ನು ಅಡಗಿಸು(_H)" + +#: src/fe-gtk/maingui.c:1625 +msgid "_Extra Alerts" +msgstr "ಹೆಚ್ಚುವರಿ ಎಚ್ಚರಿಕೆಗಳು(_E)" + +#: src/fe-gtk/maingui.c:1627 +msgid "Beep on _Message" +msgstr "ಸಂದೇಶ ಬಂದಾಗ ಬೀಪ್ ಮಾಡು(_M)" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "ಟ್ರೇ ಚಿಹ್ನೆಯನ್ನು ಮಿನುಗಿಸು(_I)" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "ಕಾರ್ಯ ಪಟ್ಟಿಯನ್ನು ಮಿನುಗಿಸು(_B)" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +msgid "_Detach" +msgstr "ಕಳಚು(_D)" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "ಮುಚ್ಚು(_C)" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "ಬಳಕೆದಾರರ ಮಿತಿಯು ಒಂದು ಸಂಖ್ಯೆಯಾಗಿರಬೇಕು!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "ವಿಷಯದ ಸಂರಕ್ಷಣೆ" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "ಯಾವುದೆ ಹೊರಗಿನ ಸಂದೇಶಗಳಿಲ್ಲ" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "ರಹಸ್ಯ" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "ಆಮಂತ್ರಣದ ಮೇರೆಗೆ ಮಾತ್ರ" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "ನಿರ್ಣಯಿಸಲಾದ" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "ನಿಷೇಧಪಟ್ಟಿ" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "ಕೀಲಿಪದ" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "ಬಳಕೆದಾರ ಮಿತಿ" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "ಬಳಕೆದಾಪಟ್ಟಿಯನ್ನು ತೋರಿಸು/ಅಡಗಿಸು" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"ಪಾರದರ್ಶಕ ಹಿನ್ನಲೆಯನ್ನು ಹೊಂದಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ!\n" +"\n" +"ನೀವು ಬಹುಷಃ ಪ್ರಸಕ್ತ ಬೆಂಬಲವಿರದ ಹೊಂದಿಕೆಯಾಗದ \n" +"ವಿಂಡೊವನ್ನು ವ್ಯವಸ್ಥಾಪಕವನ್ನು ಬಳಸುತ್ತಿರಬಹುದು.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "ಹೊಸ ಅಡ್ಡಹೆಸರನ್ನು ಸೇರಿಸಿ:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "ಅಜ್ಞಾತ ಆತಿಥೇಯ" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "ನಿಜವಾದ ಹೆಸರು:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "ಬಳಕೆದಾರ:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "ದೇಶ:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "ಪರಿಚಾರಕ(ಸರ್ವರ್‍):" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "%u ನಿಮಿಷಗಳ ಹಿಂದೆ" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "ಕಡೆಯ ಸಂದೇಶ:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "ಆಚೆ ಹೋಗಲಾದಾಗಿನ ಸಂದೇಶ:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "%d ಅಡ್ಡಹೆಸರುಗಳನ್ನು ಆರಿಸಲಾಗಿದೆ." + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"ಮೆನುಪಟ್ಟಿಯನ್ನು ಈಗ ಅಡಗಿಸಲಾಗಿದೆ. F9 ಅನ್ನು ಒತ್ತುವ ಮೂಲಕ ಅಥವ ಮುಖ್ಯ ಪಠ್ಯ ಸ್ಥಳದಲ್ಲಿ " +"ಸೂಚಕವನ್ನು ಇರಿಸಿ ಬಲ ಕ್ಲಿಕ್ ಮಾಡುವ ಮೂಲಕ ಅದನ್ನು ಮತ್ತೆ ಕಾಣಿಸಬಹುದು." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "ಕೊಂಡಿಯನ್ನ್ನು ವೀಕ್ಷಕದಲ್ಲಿ ತೆರೆ" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "ಆಯ್ಕೆ ಮಾಡಲಾದ ಸಂಪರ್ಕಕೊಂಡಿಯನ್ನು ಕಾಪಿ ಮಾಡಿ" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "ಒಂದು ಚಾನಲ್ ಅನ್ನು ಸೇರು" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "ಚಾನಲ್‌ನಿಂದ ಹೊರಹೋಗು" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "ಚಾನಲ್‌ನಲ್ಲಿ ಆವರ್ತನಗೊಳಿಸು" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "ಅಚ್ಚುಮೆಚ್ಚಿನವುಗಳಿಂದ ತೆಗೆದು ಹಾಕು(_R)" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "ಅಚ್ಚುಮೆಚ್ಚಿನವುಗಳಿಗೆ ಸೇರಿಸು(_A)" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: ಬಳಕೆದಾರ ಮೆನು" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "ಈ ಮೆನುವನ್ನು ಸಂಪಾದಿಸಿ..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "ಚಾನಲ್ ಪಟ್ಟಿಯನ್ನು ಪಡೆದುಕೊಳ್ಳಿ..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"ಬಳಕೆದಾರ ಆಜ್ಞೆಗಳು - ವಿಶೇಷ ಸಂಕೇತಗಳು:\n" +"\n" +"%c = ಪ್ರಸಕ್ತ ಚಾನಲ್\n" +"%e = ಪ್ರಸಕ್ತ ಜಾಲಬಂಧದ ಹೆಸರು\n" +"%m = ಗಣಕದ ಮಾಹಿತಿ\n" +"%n = ನಿಮ್ಮ ಅಡ್ಡಹೆಸರು\n" +"%t = ಸಮಯ/ದಿನಾಂಕ\n" +"%v = xchat ನ ಆವೃತ್ತಿ\n" +"%2 = ಪದ 2\n" +"%3 = ಪದ 3\n" +"&2 = ಪದ 2 ರಿಂದ ಸಾಲಿನ ಕೊನೆಯವರೆಗೆ\n" +"&3 = ಪದ 3 ರಿಂದ ಸಾಲಿನ ಕೊನೆಯವರೆಗೆ\n" +"\n" +"ಉದಾ:\n" +"/cmd john hello\n" +"\n" +"%2 ಎನ್ನುವುದು \"john\" ಆಗಿದೆ\n" +"&2 ಎನ್ನುವುದು \"john hello\" ಆಗಿದೆ." + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"ಬಳಕೆದಾರ ಗುಂಡಿಗಳು - ವಿಶೇಷ ಸಂಕೇತಗಳು:\n" +"\n" +"%a = ಆಯ್ಕೆ ಮಾಡಲಾದ ಎಲ್ಲಾ ಅಡ್ಡಹೆಸರುಗಳು\n" +"%c = ಪ್ರಸಕ್ತ ಚಾನಲ್\n" +"%e = ಪ್ರಸಕ್ತ ಜಾಲಬಂಧದ ಹೆಸರು\n" +"%h = ಆಯ್ಕೆ ಮಾಡಲಾದ ಅಡ್ಡಹೆಸರಿನ ಆತಿಥೇಯ ಹೆಸರು\n" +"%m = ಗಣಕದ ಮಾಹಿತಿ\n" +"%n = ನಿಮ್ಮ ಅಡ್ಡಹೆಸರು\n" +"%s = ಆಯ್ಕೆ ಮಾಡಲಾದ ಅಡ್ಡಹೆಸರು\n" +"%t = ಸಮಯ/ದಿನಾಂಕ\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"ಸಂವಾದ ಗುಂಡಿಗಳು - ವಿಶೇಷ ಸಂಕೇತಗಳು:\n" +"\n" +"%a = ಆಯ್ಕೆ ಮಾಡಲಾದ ಎಲ್ಲಾ ಅಡ್ಡಹೆಸರುಗಳು\n" +"%c = ಪ್ರಸಕ್ತ ಚಾನಲ್\n" +"%e = ಪ್ರಸಕ್ತ ಜಾಲಬಂಧದ ಹೆಸರು\n" +"%h = ಆಯ್ಕೆ ಮಾಡಲಾದ ಅಡ್ಡಹೆಸರಿನ ಆತಿಥೇಯ ಹೆಸರು\n" +"%m = ಗಣಕದ ಮಾಹಿತಿ\n" +"%n = ನಿಮ್ಮ ಅಡ್ಡಹೆಸರು\n" +"%s = ಆಯ್ಕೆ ಮಾಡಲಾದ ಅಡ್ಡಹೆಸರು\n" +"%t = ಸಮಯ/ದಿನಾಂಕ\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"CTCP ಪ್ರತ್ಯುತ್ತರಗಳು - ವಿಶೇಷ ಸಂಕೇತಗಳು:\n" +"\n" +"%d = ದತ್ತಾಂಶ (ಸಂಪೂರ್ಣ ctcp)\n" +"%e = ಪ್ರಸಕ್ತ ಜಾಲಬಂಧದ ಹೆಸರು\n" +"%m = ಗಣಕದ ಹೆಸರು\n" +"%s = ctcp ಅನ್ನು ಕಳುಹಿಸಿದವರ ಅಡ್ಡಹೆಸರು\n" +"%t = ಸಮಯ/ದಿನಾಂಕ\n" +"%2 = ಪದ 2\n" +"%3 = ಪದ 3\n" +"&2 = ಪದ 2 ರಿಂದ ಸಾಲಿನ ಕೊನೆಯವರೆಗೆ\n" +"&3 = ಪದ 3 ರಿಂದ ಸಾಲಿನ ಕೊನೆಯವರೆಗೆ\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"URL ಹ್ಯಾಂಡ್ಲರುಗಳು - ವಿಶೇಷ ಸಂಕೇತಗಳು:\n" +"\n" +"%s = URL ವಾಕ್ಯಾಂಶ\n" +"\n" +"ಒಂದು ಆಜ್ಞೆಯ ಎದುರು ! ಅನ್ನು ಸೇರಿಸುವುದರಿಂದ\n" +"ಅದನ್ನು XChat ಬದಲಿಗೆ ಶೆಲ್‌ಗೆ ಕಳಿಸಬೇಕು\n" +"ಎಂದು ಸೂಚಿಸುತ್ತದೆ" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: ಬಳಕೆದಾರರಿಂದ ಸೂಚಿತ ಆಜ್ಞೆಗಳು" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: ಬಳಕೆದಾರಪಟ್ಟಿಯ ಪುಟಿಕೆ ಮೆನು" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "ಇದರೊಂದಿಗೆ ಬದಲಿಸು" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: ಬದಲಿಸು" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: URL ಹ್ಯಾಂಡ್ಲರುಗಳು" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: ಬಳಕೆದಾರಪಟ್ಟಿ ಗುಂಡಿಗಳು" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: ಸಂವಾದ ಗುಂಡಿಗಳು" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: CTCP ಪ್ರತ್ಯುತ್ತರಗಳು" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "ಜಾಲಬಂಧ ಪಟ್ಟಿ(_s)..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "ಹೊಸ(_N)" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "ಪರಿಚಾರಕ ಹಾಳೆ..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "ಚಾನಲ್ ಹಾಳೆ..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "ಪರಿಚಾರಕ ವಿಂಡೊ..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "ಚಾನಲ್ ವಿಂಡೊ..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "ಪ್ಲಗ್‌ಇನ್ ಅಥವ ಸ್ಕ್ರಿಪ್ಟನ್ನು ಲೋಡ್ ಮಾಡು(_L)..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "ಹೊರನಡೆ(_Q)" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "ನೋಟ(_V)" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "ಮೆನು ಪಟ್ಟಿ(_M)" + +#: src/fe-gtk/menu.c:1592 +msgid "_Topic Bar" +msgstr "ವಿಷಯದ ಪಟ್ಟಿ(_T)" + +#: src/fe-gtk/menu.c:1593 +msgid "_User List" +msgstr "ಬಳಕೆದಾರರ ಪಟ್ಟಿ(_U)" + +#: src/fe-gtk/menu.c:1594 +msgid "U_serlist Buttons" +msgstr "ಬಳಕೆದಾರಪಟ್ಟಿ ಗುಂಡಿಗಳು(_s)" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "ಕ್ರಮದ ಗುಂಡಿಗಳು(_o)" + +#: src/fe-gtk/menu.c:1597 +msgid "_Channel Switcher" +msgstr "ಚಾನಲ್ ಬದಲಾವಣೆಗಾರ(_C)" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "ಹಾಳೆಗಳು(_T)" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "ವೃಕ್ಷ(_r)" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "ಜಾಲಬಂಧ ಮೀಟರುಗಳು(_N)" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "ಆಫ್" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "ನಕ್ಷೆ(ಗ್ರಾಫ್)" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "ಪರಿಚಾರಕ(ಸರ್ವರ್‍)(_S) " + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "ಸಂಪರ್ಕ ಕಡಿದುಹಾಕು(_D)" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "ಮರಳಿ ಸಂಪರ್ಕಸಾಧಿಸು(_R)" + +#: src/fe-gtk/menu.c:1613 +msgid "Join a Channel..." +msgstr "ಒಂದು ಚಾನಲ್ ಅನ್ನು ಸೇರು..." + +#: src/fe-gtk/menu.c:1614 +msgid "List of Channels..." +msgstr "ಚಾನಲ್‌ಗಳ ಪಟ್ಟಿ..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "ಆಚೆ ಹೋಗಲಾಗಿದೆ ಎಂದು ಸೂಚಿಸಲಾಗಿದೆ" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "ಬಳಕೆದಾರ ಮೆನು(_U)" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "ಸಿದ್ಧತೆಗಳು(_e)" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "ಆದ್ಯತೆಗಳು(_P)" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "ಸುಧಾರಿತ" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "ಸ್ವಯಂ ಬದಲಾವಣೆ..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "CTCP ಪ್ರತ್ಯುತ್ತರಗಳು..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "ಸಂವಾದ ಗುಂಡಿಗಳು..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "ಕೀಲಿಮಣೆ ಶಾರ್ಟ್-ಕಟ್‌ಗಳು..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "ಪಠ್ಯ ಘಟನೆಗಳು..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "URL ಹ್ಯಾಂಡ್ಲರುಗಳು..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "ಬಳಕೆದಾರ ಆಜ್ಞೆಗಳು..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "ಬಳಕೆದಾರಪಟ್ಟಿ ಗುಂಡಿಗಳು..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "ಬಳಕೆದಾರಪಟ್ಟಿ ಪುಟಿಕೆಗಳು..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "ವಿಂಡೊ(_W)" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "ನಿಷೇಧ ಪಟ್ಟಿ..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "ಚಿಹ್ನೆಯ ನಕ್ಷೆ..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "ನೇರವಾದ ಮಾತುಕತೆ..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "ಕಡತ ವರ್ಗಾವಣೆಗಳು..." + +#: src/fe-gtk/menu.c:1641 +msgid "Friends List..." +msgstr "ಗೆಳೆಯರ ಪಟ್ಟಿ..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "ಪಟ್ಟಿಯನ್ನು ಆಲಕ್ಷಿಸು..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "ಪ್ಲಗಿನ್‌ಗಳು ಹಾಗು ಸ್ಕ್ರಿಪ್ಟುಗಳು..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "ಕಚ್ಚಾ(ರಾ) ದಾಖಲೆ..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "URL ಸೆಳೆದುಕೊಳ್ಳುವವ..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "ಗುರುತಿನ ಗೆರೆಯನ್ನು ಮರಳಿ ಹೊಂದಿಸು" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "ಪಠ್ಯವನ್ನು ಅಳಿಸು(_l)" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "ಪಠ್ಯಕ್ಕಾಗಿ ಹುಡುಕು..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "ಪಠ್ಯವನ್ನು ಉಳಿಸು..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "ನೆರವು(_H)" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "ವಿಷಯಗಳು(_C)" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "ಅಪ್‌ಡೇಟ್‌ಗಳಿಗಾಗಿ ಹುಡುಕು" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "ಇದರ ಬಗ್ಗೆ(_A)" + +#: src/fe-gtk/menu.c:2147 +msgid "_Attach" +msgstr "ಲಗತ್ತಿಸು(_A)" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "ಕೊನೆಯ ಬಾರಿಗೆ ಕಂಡಿದ್ದು" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "ಆಫ್‍ಲೈನ್" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "ಎಂದಿಗೂ ಇಲ್ಲ" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "%d ನಿಮಿಷಗಳ ಹಿಂದೆ" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "ಆನ್‍ಲೈನ್" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "ಸೇರಿಸಲು ಅಡ್ಡಹೆಸರುಗಳನ್ನು ನಮೂದಿಸಿ:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "ಈ ಜಾಲಬಂಧಗಳಲ್ಲಿ ಸೂಚಿಸಿ:" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "ವಿರಾಮಚಿಹ್ನೆಗಳಿಂದ ಬೇರ್ಪಡಿಸಲಾದ ಅಂಗೀಕರಿಸಲಾದ ಜಾಲಬಂಧಗಳ ಪಟ್ಟಿ." + +#: src/fe-gtk/notifygui.c:413 +msgid "XChat: Friends List" +msgstr "XChat: ಗೆಳೆಯರ ಪಟ್ಟಿ" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "ಸಂವಾದಚೌಕವನ್ನು ತೆರೆ" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" +"ಬಲೂನ್ ಎಚ್ಚರಿಕೆಗಳನ್ನು ತೆರೆಯಲು 'notify-send' ಕಂಡುಬಂದಿಲ್ಲ.\n" +"ದಯವಿಟ್ಟು libnotify ಅನ್ನು ಅನುಸ್ಥಾಪಿಸಿ." + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "XChat: ನೀವು %u ಜಾಲಬಂಧಗಳೊಂದಿಗೆ ಹಾಗು %u ಚಾನಲ್‌ನೊಂದಿಗೆ ಸಂಪರ್ಕಿತಗೊಂಡಿದ್ದೀರಿ" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "ಮರಳಿ ಸ್ಥಾಪಿಸು(_R)" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "ಅಡಗಿಸು(_H)" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "ಮಿನುಗಿಸು(_B)" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "ಚಾನಲ್ ಸಂದೇಶ" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "ಖಾಸಗಿ ಸಂದೇಶ" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "ಹೈಲೈಟ್ ಮಾಡಲಾದ ಸಂದೇಶ" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "ಸ್ಥಿತಿಯನ್ನು ಬದಲಾಯಿಸು(_C)" + +#: src/fe-gtk/plugin-tray.c:602 +msgid "_Away" +msgstr "ಆಚೆ ಹೋಗಲಾಗಿದೆ(_A)" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "ಹಿಂದೆ(_B)" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat: ಇವರಿಂದ ಹೈಲೈಟ್ ಮಾಡಲಾದ ಸಂದೇಶ : %s (%s)" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat: %u ರವರು ಸಂದೇಶವನ್ನು ಹೈಲೈಟ್ ಮಾಡಿದ್ದಾರೆ, ಇತ್ತೀಚಿನದು: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat: ಇವರಿಂದ ಬಂದ ಹೊಸ ಸಾರ್ವಜನಿಕ ಸಂದೇಶಗಳು: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat: %u ಹೊಸ ಸಾರ್ವಜನಿಕ ಸಂದೇಶಗಳು." + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat: ಇವರಿಮದ ಖಾಸಗಿ ಸಂದೇಶ: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "XChat: %u ರವರಿಂದ ಖಾಸಗಿ ಸಂದೇಶ, ಇತ್ತೀಚಿನದು: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat: ಇವರು ಕಡತವನ್ನು ನೀಡಲು ಬಯಸಿದ್ದಾರೆ: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "XChat: %u ರು ಕಡತ ನೀಡಲು ಬಯಸಿದ್ದಾರೆ, ಇತ್ತೀಚಿನದು: %s (%s)" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "ಆವೃತ್ತಿ" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "ವಿವರಣೆ" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "ಅನುಸ್ಥಾಪಿಸಲು ಪ್ಲಗ್‌ಇನ್ ಅಥವ ಸ್ಕ್ರಿಪ್ಟನ್ನು ಆಯ್ಕೆ ಮಾಡಿ" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: ಪ್ಲಗಿನ್‍ಗಳು ಹಾಗು ಸ್ಕ್ರಿಪ್ಟುಗಳು" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "ಲೋಡ್‌ ಮಾಡು(_L)..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "ಅನ್‌ಲೋಡ್‌ ಮಾಡು(_U)" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "ಹೀಗೆ ಉಳಿಸು..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: Rawlog (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "rawlog ಅನ್ನು ಖಾಲಿಮಾಡಿ" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "ಈ ಹುಡುಕಾಟಕ್ಕಾಗಿ ನೀವು ತೆರೆದ ವಿಂಡೊವು ಈಗ ಅಸ್ತಿತ್ವದಲ್ಲಿ ಇಲ್ಲ." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "ಹುಡುಕುವಿಕೆಯು ಕೊನೆಯನ್ನು ತಲುಪಿದೆ, ಕಂಡುಬಂದಿಲ್ಲ." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: ಹುಡುಕು" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "ಕೇಸ್ ಅನ್ನು ತಾಳೆಮಾಡು(_M)" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "ಹಿಂದಕ್ಕೆ ಹುಡುಕು(_b)" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "ಹುಡುಕು(_F)" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "ಹೊಸ ಜಾಲಬಂಧ" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "ಜಾಲಬಂಧ \"%s\" ಹಾಗು ಅದರ ಎಲ್ಲಾ ಪರಿಚಾರಕಗಳನ್ನು ನಿಜವಾಗಿಯೂ ತೆಗೆದುಹಾಕಬೇಕೆ?" + +#: src/fe-gtk/servlistgui.c:740 +msgid "#channel" +msgstr "#channel" + +#: src/fe-gtk/servlistgui.c:850 +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: ಅಚ್ಚುಮೆಚ್ಚಿನ ಚಾನಲ್‌ಗಳು (ಸ್ವಯಂ-ಸೇರ್ಪಡೆ ಪಟ್ಟಿ)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "ನೀವು %s ದೊಂದಿಗೆ ಸಂಪರ್ಕ ಸಾಧಿಸಿದಾಗ ಈ ಚಾನಲ್‌ಗಳಿಗೆ ಸೇರಿಸಲಾಗುತ್ತದೆ." + +#: src/fe-gtk/servlistgui.c:906 +msgid "Key (Password)" +msgstr "ಕೀಲಿ(ಗುಪ್ತಪದ)" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "ಸಂಪಾದನೆ(_E)" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "%s ಅನ್ನು ತೆಗೆದುಹಾಕಲಾಗಿದೆ." + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "%s ಅನ್ನು ಸೇರಿಸಲಾಗಿದೆ." + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "ಬಳಕೆದಾರ ಹೆಸರು ಹಾಗು ನಿಜವಾದ ಹೆಸರು ಇವುಗಳನ್ನು ಖಾಲಿ ಬಿಡುವಂತಿಲ್ಲ." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: %s ಅನ್ನು ಸಂಪಾದಿಸು" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "%s ಗಾಗಿನ ಪರಿಚಾರಕಗಳು" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "ಆಯ್ದ ಪರಿಚಾರಕದೊಂದಿಗೆ(ಸರ್ವರ್‍) ಮಾತ್ರ ಸಂಪರ್ಕ ಜೋಡಿಸು" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "ಸಂಪರ್ಕವು ವಿಫಲಗೊಂಡಲ್ಲಿ ಎಲ್ಲಾ ಪರಿಚಾರಕದಾದ್ಯಂತ ಆವರ್ತನಗೊಳಿಸಬೇಡ. " + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "ನಿಮ್ಮ ವಿವರಗಳು" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "ಜಾಗತಿಕ ಬಳಕೆದಾರ ಮಾಹಿತಿಯನ್ನು ಬಳಸು" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "ಅಡ್ಡ ಹೆಸರು(_N):" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "ಎರಡನೆಯ ಆಯ್ಕೆ:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "ಬಳಕೆದಾರ ಹೆಸರು(_U):" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "ನಿಜವಾದ ಹೆಸರು(_l):" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "ಸಂಪರ್ಕಿಸುತ್ತಿದೆ" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "ಆರಂಭಿಸಿದಾಗ ಈ ಜಾಲಬಂಧಕ್ಕೆ ತಾನಾಗಿಯೆ ಸಂಪರ್ಕಿತಗೊಳ್ಳು" + +#: src/fe-gtk/servlistgui.c:1462 +msgid "Bypass proxy server" +msgstr "ಪ್ರಾಕ್ಸಿ ಪರಿಚಾರಕವನ್ನು ಬೈಪಾಸ್ ಮಾಡು" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "ಈ ಜಾಲಬಂಧದಲ್ಲಿರುವ ಎಲ್ಲಾ ಪರಿಚಾರಕಗಳಿಗಾಗಿಯೂ SSL ಅನ್ನು ಬಳಸು" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "ಅಮಾನ್ಯವಾದ SSL ಪ್ರಮಾಣಪತ್ರವನ್ನು ಅಂಗೀಕರಿಸು" + +#: src/fe-gtk/servlistgui.c:1475 +msgid "_Favorite channels:" +msgstr "ಅಚ್ಚುಮೆಚ್ಚಿನ ಚಾನಲ್‌ಗಳು(_F):" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "ಸೇರಬೇಕಿರುವ ಚಾನಲ್‌ಗಳ ನಡುವೆ ವಿರಾಮ ಚಿಹ್ನೆಗಳಿರಬೇಕು, ಆದರೆ ಖಾಲಿ ಜಾಗಗಳಿರುವಂತಿಲ್ಲ!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "ಸಂಪರ್ಕ ಸಾಧಿಸುವ ಆಜ್ಞೆ:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"ಸಂಪರ್ಕಿತಗೊಂಡ ನಂತರ ಚಲಾಯಿಸಬೇಕಿರುವ ಹೆಚ್ಚುವರಿ ಆಜ್ಞೆ. ಒಂದಕ್ಕಿಂತ ಹೆಚ್ಚಿನದರ ಅಗತ್ಯವಿದ್ದಲ್ಲಿ, " +"ಇದನ್ಲು LOAD -e <ಕಡತದಹೆಸರು> ಗೆ ಹೊಂದಿಸಿ, ಇಲ್ಲಿ <ಕಡತದಹೆಸರು> ಎನ್ನುವುದು ಆಜ್ಞೆಗಳಿಂದ " +"ತುಂಬಿರುವ ಪಠ್ಯ ಕಡತವಾಗಿರುತ್ತದೆ." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Nickserv ಗುಪ್ತಪದ:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"ನಿಮ್ಮ ಅಡ್ಡಹೆಸರಿಗಾಗಿ ಗುಪ್ತಪದದ ಅಗತ್ಯವಿದ್ದಲ್ಲಿ, ಇಲ್ಲಿ ನಮೂದಿಸಿ. ಎಲ್ಲಾ IRC ಜಾಲಬಂಧಗಳು " +"ಇದನ್ನು ಬೆಂಬಲಿಲಿಸುವುದಿಲ್ಲ." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "ಪರಿಚಾರಕದ ಗುಪ್ತಪದ:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "ಪರಿಚಾರಕಕ್ಕಾಗಿನ ಗುಪ್ತಪದ, ಅನುಮಾವವಿದ್ದಲ್ಲಿ, ಖಾಲಿ ಬಿಡಿ." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "ಚಿಹ್ನೆಯ ನಕ್ಷೆ:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: ಜಾಲಬಂಧ ಪಟ್ಟಿ" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "ಬಳಕೆದಾರ ಮಾಹಿತಿ" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "ಮೂರನೆ ಆಯ್ಕೆ:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "ಜಾಲಬಂಧಗಳು" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "ಆರಂಭಿಸುವಾಗ ಜಾಲಬಂಧ ಪಟ್ಟಿಯನ್ನು ಬಿಟ್ಟುಬಿಡು" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "ಸಂಪಾದನೆ (_E)..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "ವಿಂಗಡಣೆ(_S)" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" +"ಜಾಲಬಂಧದ ಪಟ್ಟಿಯನ್ನು ವರ್ಣಮಾಲೆಯ ಆಧಾರದಲ್ಲಿ ವಿಂಗಡಿಸು. ಸಾಲಿನಲ್ಲಿ ಚಲಿಸಲು SHIFT-UP ಹಾಗು " +"SHIFT-DOWN ಅನ್ನು ಬಳಸಿ." + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "ಸಂಪರ್ಕ ಕಲ್ಪಿಸು (_o)" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "ಪಠ್ಯ ಚೌಕದ ಗೋಚರಿಕೆ" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "ಅಕ್ಷರಶೈಲಿ:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "ಹಿನ್ನಲೆ ಚಿತ್ರ:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "ಸ್ಕ್ರಾಲ್‌ಬ್ಯಾಕ್‌ ಸಾಲುಗಳು:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "ಬಣ್ಣಯುಕ್ತ ಅಡ್ಡಹೆಸರುಗಳು" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "IRC ಯಲ್ಲಿನ ಪ್ರತಿಯೊಬ್ಬರಿಗೂ ಪ್ರತ್ಯೇಕ ಬಣ್ಣವನ್ನು ನೀಡು" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "ಅಡ್ಡಹೆಸರುಗಳನ್ನು ಇಂಡೆಂಟ್ ಮಾಡು" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "ಅಡ್ಡಹೆಸರುಗಳನ್ನು ಬಲಕ್ಕೆ ಜೋಡಿಸಿ ಇರಿಸು" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "ಪಾರದರ್ಶ ಹಿನ್ನಲೆ" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "ಗುರುತಿನ ಗೆರೆಯನ್ನು ತೋರಿಸು" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "ಕೊನೆಯ ಬಾರಿಗೆ ಓದಲಾದ ಪಠ್ಯದ ಕೆಳಗೆ ಕೆಂಪು ಗೆರೆಯನ್ನು ಎಳೆ." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "ಪಾರದರ್ಶಕತೆಯ ಸಿದ್ಧತೆಗಳು" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "ಕೆಂಪು:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "ಹಸಿರು:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "ನೀಲಿ:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "ಸಮಯ ಸ್ವರೂಪಗಳು" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "ಸಮಯ ಸ್ವರೂಪವನ್ನು ಶಕ್ತಗೊಳಿಸು" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "ಸಮಯಸ್ವರೂಪದ ವಿನ್ಯಾಸ:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "ವಿವರಗಳಿಗಾಗಿ strftime ಮ್ಯಾನ್‌ಪೇಜ್‌ ಅನ್ನು ನೋಡಿ." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "ಕೊನೆಯದಾಗಿ ಮಾತನಾಡಿದ ಕ್ರಮ" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "ಇನ್‌ಪುಟ್ ಚೌಕ" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "ಪಠ್ಯ ಚೌಕದ ಅಕ್ಷರಗಳು ಹಾಗು ಬಣ್ಣಗಳನ್ನು ಬಳಸು" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "ಕಾಗುಣಿತ ಪರೀಕ್ಷೆ" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "ಅಡ್ಡಹೆಸರಿನ ಪೂರ್ಣಗೊಳಿಕೆ" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "ತಾನಾಗಿಯೆ ಅಡ್ಡಹೆಸರಿನ ಪೂರ್ಣಗೊಳಿಕೆ (ಟ್ಯಾಬ್ ಕೀಲಿ ಬಳಸದೆ)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "ಅಡ್ಡಹೆಸರು ಪೂರ್ಣಗೊಳಿಕೆಯ ಸಂಜ್ಞೆ:" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "ಅಡ್ಡಹೆಸರಿನ ಪೂರ್ಣಗೊಳಿಕೆಯ ವಿಂಗಡಣೆ:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "ಇನ್‌ಪುಟ್ ಪೆಟ್ಟಿಗೆ ಸಂಕೇತಗಳು" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "%nnn ಅನ್ನು ASCII ಮೌಲ್ಯವಾಗಿ ಅರ್ಥೈಸು" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "%C, %B ಅನ್ನು ಬಣ್ಣ, ಬೋಲ್ಡ್ ಇತ್ಯಾದಿಯಾಗಿ ಅರ್ಥೈಸು" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, Ops ಮೊದಲಿಗೆ" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, Ops ಕೊನೆಯಲ್ಲಿ" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "ವಿಂಗಡಿಸದೆ ಇರುವ" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "ಎಡ (ಮೇಲಿನ)" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "ಎಡ (ಕೆಳಗಿನ)" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "ಬಲ (ಮೇಲಿನ)" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "ಬಲ (ಕೆಳಗಿನ)" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "ಮೇಲೆ" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "ಕೆಳಗೆ" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "ಅಡಗಿಸಲಾದ" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "ಬಳಕೆದಾರರ ಪಟ್ಟಿ" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "ಬಳಕೆದಾರರ ಪಟ್ಟಿಯಲ್ಲಿ ಆತಿಥೇಯ ಹೆಸರುಗಳನ್ನು ತೋರಿಸು" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "ಇದರ ಆಧಾರದಲ್ಲಿ ವಿಭಜಿಸಲಾದ ಬಳಕೆದಾರ ಪಟ್ಟಿ:" + +#: src/fe-gtk/setup.c:205 +msgid "Show user list at:" +msgstr "ಇಲ್ಲಿರುವ ಬಳಕೆದಾರರ ಪಟ್ಟಿಯನ್ನು ತೋರಿಸು:" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "ಆಚೆ ಹೋಗುವಿಕೆಯ ಜಾಡನ್ನು ಇರಿಸುವಿಕೆ" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "" +"ಬಳಕೆದಾರರು ಆಚೆ ಹೋಗಿದ್ದರ ಜಾಡನ್ನು ಇರಿಸಿಕೊಳ್ಳಿ ಹಾಗು ಅವನ್ನು ಭಿನ್ನವಾದ ಬಣ್ಣದಲ್ಲಿ ಗುರುತು " +"ಹಾಕಿ" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "ಇದಕ್ಕಿಂತ ಚಿಕ್ಕದಾದ ಚಾನಲ್‌ಗಳಲ್ಲಿ:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "ಎರಡು ಬಾರಿ ಕ್ಲಿಕ್ ಮಾಡಿದಾಗಿನ ಕ್ರಿಯೆ" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "ವಿಂಡೊಗಳು" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "ಹಾಳೆಗಳು" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "ಯಾವಾಗಲೂ" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "ಮನವಿ ಸಲ್ಲಿಸಲಾದ ಹಾಳೆಗಳು ಮಾತ್ರ" + +#: src/fe-gtk/setup.c:242 +msgid "Tree" +msgstr "ವೃಕ್ಷ" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "ಸ್ವಿಚರ್ ಬಗೆ:" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "ಪರಿಚಾರಕ ಸಂದೇಶಗಳಿಗಾಗಿ ಒಂದು ಹೊಸ ಹಾಳೆಯನ್ನು ತೆರೆ" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "ಪರಿಚಾರಕ ಸೂಚನೆಗಳಿಗಾಗಿ ಒಂದು ಹೊಸ ಹಾಳೆಯನ್ನು ತೆರೆ" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "ಖಾಸಗಿ ಸಂದೇಶವು ಬಂದಾಗ ಒಂದು ಹೊಸ ಹಾಳೆಯನ್ನು ತೆರೆ" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "ಹಾಳೆಗಳನ್ನು ವರ್ಣಮಾಲೆ ಅಕ್ಷರದ ಆಧಾರದಲ್ಲಿ ವಿಂಗಡಿಸಿ" + +#: src/fe-gtk/setup.c:254 +msgid "Smaller text" +msgstr "ಸಣ್ಣ ಅಕ್ಷರಗಳು" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "ಹೊಸ ಹಾಳೆಗಳತ್ತ ಗಮನ ಹರಿಸು:" + +#: src/fe-gtk/setup.c:258 +msgid "Show channel switcher at:" +msgstr "ಇಲ್ಲಿ ಚಾನಲ್ ಬದಲಾವಣೆಗಾರನನ್ನು ತೋರಿಸು:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "ಹಾಳೆಯ ಲೇಬಲ್‌ ಅನ್ನು ಇಷ್ಟು ಚಿಕ್ಕದಾಗಿಸಿ" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "ಅಕ್ಷರಗಳು." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "ಹಾಳೆಗಳು ಹಾಗು ವಿಂಡೊಗಳು" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "ಚಾನಲ್‌ಗಳನ್ನು ಇದರಲ್ಲಿ ತೆರೆ:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "ಸಂವಾದ ಚೌಕಗಳನ್ನು ಇದರಲ್ಲಿ ತೆರೆ:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "ಸವಲತ್ತುಗಳನ್ನು ಇದರಲ್ಲಿ ತೆರೆ:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "" +"DCC, ಕಡೆಗಣಿಸು, ಸೂಚಿಸು ಇತ್ಯಾದಿಗಳನ್ನು ಹೊಸ ಹಾಳೆಗಳಲ್ಲಿ ಅಥವ ವಿಂಡೊಗಳಲ್ಲಿ ತೆರೆಯಬೇಕೆ?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "ಇಲ್ಲ" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "ಹೌದು" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "ಉಳಿಸುವ ಕಡತಕೋಶಕ್ಕಾಗಿ ಪ್ರತೀಬಾರಿಯೂ ಹುಡುಕು" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "ಕಡತಗಳು ಹಾಗು ಕೋಶಗಳು" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "ಕಡತವನ್ನು ನೀಡಿದಾಗ ತಾನಾಗಿಯೆ ಒಪ್ಪಿಕೊ:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "ಕಡತಗಳನ್ನು ಇಲ್ಲಿಗೆ ಡೌನ್‌ಲೋಡ್ ಮಾಡು:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "ಪೂರ್ಣಗೊಂಡ ಕಡತಗಳನ್ನು ಇಲ್ಲಿಗೆ ಸ್ಥಳಾಂತರಿಸು:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "ಅಡ್ಡಹೆಸರನ್ನು ಕಡತದ ಹೆಸರುಗಳಲ್ಲಿ ಉಳಿಸಿಕೊ" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "ಜಾಲಬಂಧ ಸಿದ್ಧತೆಗಳು" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "IRC ಪರಿಚಾರಕದಿಂದ ನನ್ನ ವಿಳಾಸವನ್ನು ಪಡೆದುಕೊ" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"IRC ಪರಿಚಾರಕವನ್ನು ನಿಜವಾದ ವಿಳಾಸಕ್ಕಾಗಿ ಕೇಳುತ್ತದೆ. ನಿಮ್ಮಲ್ಲಿ 192.168.*.* ವಿಳಾಸವಿದ್ದಲ್ಲಿ " +"ಇದನ್ನು ಬಳಸಿ!" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "DCC IP ವಿಳಾಸ:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "ಕಡತಗಳನ್ನು ನೀಡುತ್ತಿರುವಾಗ ನೀವು ಈ ವಿಳಾಸದಲ್ಲಿ ಇದ್ದೀರೆಂದು ತಿಳಿಸಿ" + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "ಮೊದಲ DCC ಕಳುಹಿಸುವ ಸಂಪರ್ಕಸ್ಥಾನ:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "ಕೊನೆಯ DCC ಕಳುಹಿಸುವ ಸಂಪರ್ಕಸ್ಥಾನ:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!Lಸಂಪೂರ್ಣ ವ್ಯಾಪ್ತಿಗಾಗಿ ಸೊನ್ನೆಯಲ್ಲಿಯೆ ಉಳಿಸಿ." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "ಗರಿಷ್ಟ ಕಡತ ವರ್ಗಾವಣೆ ವೇಗ (ಪ್ರತಿ ಸೆಕೆಂಡುಗಳಲ್ಲಿನ ಬೈಟ್‌ಗಳು)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "ಒಂದು ಅಪ್‌ಲೋಡ್:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "ಒಂದು ವರ್ಗಾವಣೆಗಾಗಿನ ಗರಿಷ್ಟ ವೇಗ" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "ಒಂದು ಡೌನ್‌ಲೋಡ್:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "ಎಲ್ಲಾ ಅಪ್‌ಲೋಡ್‌ಗಳೂ ಸೇರಿ:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "ಎಲ್ಲಾ ಕಡತಗಳುಗಾಗಿನ ಗರಿಷ್ಟ ವೇಗ" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "ಎಲ್ಲಾ ಡೌನ್‌ಲೋಡ್‌ಗಳನ್ನು ಒಟ್ಟಿಗೆ ಸೇರಿಸಿ:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "ಎಚ್ಚರಿಕೆಗಳು" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "ಟ್ರೇ ಬಲೂನುಗಳನ್ನು ಇಲ್ಲಿ ತೋರಿಸು:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "ಈ ಸಮಯದಲ್ಲಿ ಟ್ರೇ ಚಿಹ್ನೆಯನ್ನು ಮಿನುಗಿಸು:" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "ಈ ಸಮಯದಲ್ಲಿ ಕಾರ್ಯಪಟ್ಟಿಯನ್ನು ಮಿನುಗಿಸು:" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "ಈ ಸಮಯದಲ್ಲಿ ಬೀಪ್ ಸದ್ದೊಂದನ್ನು ಮಾಡು:" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "ವ್ಯವಸ್ಥೆಯ ಟ್ರೇ ಚಿಹ್ನೆಯನ್ನು ಶಕ್ತಗೊಳಿಸು" + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "ಹೈಲೈಟ್ ಮಾಡಲಾದ ಸಂದೇಶಗಳು" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" +"ಹೈಲೈಟ್ ಮಾಡಲಾದ ಸಂದೇಶಗಳು ನಿಮ್ಮ ಅಡ್ಡಹೆಸರನ್ನು ಉಲ್ಲೇಖಿಸಲಾದವುಗಳಾಗಿರುತ್ತವೆ, ಅದರ ಜೊತೆಗೆ:" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "ಹೈಲೈಟ್ ಮಾಡಲು ಹೆಚ್ಚುವರಿ ಪದಗಳು:" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "ಹೈಲೈಟ್ ಮಾಡಬೇಕಿರುವ ಅಡ್ಡಹೆಸರುಗಳು:" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "ಯಾವಾಗಲೂ ಹೈಲೈಟ್ ಮಾಡಬೇಕಿರುವ ಅಡ್ಡಹೆಸರುಗಳು:" + +#: src/fe-gtk/setup.c:347 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" +"ಅನೇಕ ಪದಗಳನ್ನು ವಿರಾಮ ಚಿಹ್ನೆಗಳ ಮೂಲಕ ಪ್ರತ್ಯೇಕಿಸಿ.\n" +"ವೈಲ್ಡ್‌ಕಾರ್ಡುಗಳಿಗೆ ಬೆಂಬಲವಿರುತ್ತದೆ." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "ಪೂರ್ವನಿಯೋಜಿತ ಸಂದೇಶಗಳು" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "ಹೊರನಡೆ:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "ಚಾನಲ್‌ನಿಂದ ಹೊರನಡೆಯಿರಿ:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "ಆಚೆ ಹೋಗಲಾಗಿದೆ:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "ಆಚೆ ಹೋಗಲಾಗಿದೆ" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "ಆಚೆ ಹೋಗುವ ಸಂದೇಶವನ್ನು ಪ್ರಕಟಿಸಿ" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "ನಿಮ್ಮ ಆಚೆ ಹೋಗುವ ಸಂದೇಶಗಳನ್ನು ಎಲ್ಲಾ ಚಾನಲ್‌ಗಳಿಗೂ ಪ್ರಕಟಿಸಿ" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "ಒಮ್ಮೆ ಮಾತ್ರ ಆಚೆಹೋದುದನ್ನು ತೋರಿಸು" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "ಒಂದೇ ರೀತಿಯ ಆಚೆ ಹೋಗುವ ಸಂದೇಶವನ್ನು ಒಮ್ಮೆ ಮಾತ್ರ ತೋರಿಸು" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಆಚೆ ಹೋದುದನ್ನು ತೆಗೆದು ಹಾಕಿ" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "ಸಂದೇಶಗಳನ್ನು ಕಳುಹಿಸುವ ಮೊದಲೆ ಆಚೆ ಹೋಗಲಾಗಿದೆ ಎಂಬ ಗುರುತನ್ನು ನೀವೆ ತೆಗೆದು ಹಾಕಿ" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "ಪ್ರೌಢ ಸಿದ್ಧತೆಗಳು" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸಂಪರ್ಕಿತಗೊಳ್ಳುವುದರಲ್ಲಿನ ವಿಳಂಬ:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "MODEಗಳನ್ನು ಕಚ್ಛಾ ರೂಪದಲ್ಲಿ ತೋರಿಸು" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "ಸೂಚನೆಯಲ್ಲಿನ Whois" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" +"ನಿಮ್ಮ ಸೂಚನಾ ಪಟ್ಟಿಯಲ್ಲಿನ ಬಳಕೆದಾರರು ಆನ್‌ಲೈನ್ ಬಂದಾಗ /WHOIS ಸಂದೇಶವನ್ನು ಕಳುಹಿಸುತ್ತದೆ" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "ಸೇರ್ಪಡೆಗೊಂಡ/ಹೊರಕ್ಕೆ ತೆರಳುವ ಸಂದೇಶಗಳನ್ನು ಅಡಗಿಸು" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "ಚಾನಲ್‌ಗೆ ಸೇರ್ಪಡೆಗೊಂಡ/ಹೊರಕ್ಕೆ ತೆರಳುವ ಸಂದೇಶಗಳನ್ನು ಅಡಗಿಸು" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "DCC ವಿಂಡೊಗಳನ್ನು ತಾನಾಗಿಯೆ ತೆರೆ" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "ಕಳುಹಿಸುವ ವಿಂಡೊ" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "ಸ್ವೀಕರಿಸುವ ವಿಂಡೊ" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "ಮಾತುಕತೆಯ ವಿಂಡೊ" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "ದಾಖಲಾತಿ" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "ಹಿಂದಿನ ಅಧಿವೇಶನದಿಂದ ಸ್ಕ್ರಾಲ್‌ಬ್ಯಾಕನ್ನು ತೋರಿಸು" + +#: src/fe-gtk/setup.c:387 +msgid "Enable logging of conversations to disk" +msgstr "ಸಂಭಾಷಣೆಗಳನ್ನು ಡಿಸ್ಕಿಗೆ ಬರೆಯುವುದನ್ನು ಶಕ್ತಗೊಳಿಸು" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "ದಾಖಲೆ ಕಡತದ ಹೆಸರು:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=ಪರಿಚಾರಕ %c=ಚಾನಲ್ %n=ಜಾಲಬಂಧ." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "ಸಮಯಮುದ್ರೆಗಳನ್ನು ದಾಖಲೆಗಳಲ್ಲಿ ಸೇರಿಸು" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "ಸಮಯಮುದ್ರೆ ಸ್ವರೂಪವನ್ನು ದಾಖಲಿಸು:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(ಅಶಕ್ತಗೊಳಿಸಲಾದ)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS ಪ್ರಾಕ್ಸಿ (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "ಎಲ್ಲಾ ಸಂಪರ್ಕಗಳು" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "IRC ಪರಿಚಾರಕ(ಸರ್ವರ್‍) ಮಾತ್ರ" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "DCC ಸ್ವೀಕಾರ ಮಾತ್ರ" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "ನಿಮ್ಮ ವಿಳಾಸ" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "ಇದಕ್ಕೆ ಬೈಂಡ್ ಮಾಡು:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "ಅನೇಕ ವಿಳಾಸವನ್ನು ಹೊಂದಿರುವ ಗಣಕಗಳಲ್ಲಿ ಮಾತ್ರ ಸಹಾಯಕವಾಗುತ್ತದೆ." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "ಪ್ರಾಕ್ಸಿ ಪರಿಚಾರಕ" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "ಆತಿಥೇಯಗಣಕ:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "ಸಂಪರ್ಕಸ್ಥಾನ:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "ಬಗೆ:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "ಇದಕ್ಕಾಗಿ ಪ್ರಾಕ್ಸಿ ಬಳಸಿ:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "ಪ್ರಾಕ್ಸಿ ದೃಢೀಕರಣ" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "ದೃಢೀಕರಣವನ್ನು ಬಳಸಿ (MS Proxy, HTTP ಅಥವ Socks5 ಅನ್ನು ಮಾತ್ರ)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "ದೃಢೀಕರಣವನ್ನು ಬಳಸಿ (HTTP ಅಥವ Socks5 ಅನ್ನು ಮಾತ್ರ)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "ಬಳಕೆದಾರ ಹೆಸರು:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "ಗುಪ್ತಪದ:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "ಒಂದು ಚಿತ್ರವನ್ನು ಆಯ್ದುಕೊಳ್ಳಿ" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "ಡೌನ್‌ಲೋಡ್ ಕಡತಕೋಶವನ್ನು ಆಯ್ಕೆ ಮಾಡಿ" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "ಅಕ್ಷರ ಶೈಲಿಯನ್ನು ಆಯ್ದುಕೊಳ್ಳಿ" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "ವೀಕ್ಷಿಸು..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "ಗುರುತಿಸಲಾದ ಬಳಕೆದಾರರನ್ನು ಇದರೊಂದಿಗೆ ಗುರುತುಹಾಕಿ: " + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "ಗುರುತಿಸದೆ ಇರುವ ಬಳಕೆದಾರರನ್ನು ಇದರೊಂದಿಗೆ ಗುರುತುಹಾಕಿ: " + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "ದತ್ತಾಂಶವನ್ನು ಹೊಂದಿರುವ ಕಡತಕೋಶವನ್ನು ತೆರೆ" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "ಬಣ್ಣವನ್ನು ಆಯ್ಕೆಮಾಡಿ" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "ಪಠ್ಯ ಬಣ್ಣಗಳು" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "mIRC ಬಣ್ಣಗಳು:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "ಸ್ಥಳೀಯ ಬಣ್ಣಗಳು:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "ಮುನ್ನೆಲೆ:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "ಹಿನ್ನಲೆ:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "ಪಠ್ಯವನ್ನು ಗುರುತುಹಾಕುವಿಕೆ" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "ಸಂಪರ್ಕಸಾಧನದ ಬಣ್ಣಗಳು" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "ಹೊಸ ದತ್ತಾಂಶ:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "ಗುರುತಿನ ಗೆರೆ:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "ಹೊಸ ಸಂದೇಶ" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "ಆಚೆ ಹೋದ ಬಳಕೆದಾರ:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "ಹೈಲೈಟ್:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "ಘಟನೆ" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "ಧ್ವನಿ ಕಡತ" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "ಧ್ವನಿ ಕಡತವನ್ನು ಆಯ್ದುಕೊಳ್ಳಿ" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "ಸದ್ದು ಮಾಡುವ ವಿಧಾನ:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "ಸದ್ದು ಮಾಡುವ ಬಾಹ್ಯ ಪ್ರೊಗ್ರಾಮ್(_p):" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "ಬಾಹ್ಯ ಪ್ರೊಗ್ರಾಮ್(_E)" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "ಸ್ವಯಂಚಾಲಿತ(_A)" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "ಧ್ವನಿ ಕಡತಗಳ ಕೋಶ(_d):" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "ಧ್ವನಿ ಕಡತ:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "ಜಾಲವೀಕ್ಷಣೆ(_B)..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "ಚಲಾಯಿಸು(_P)" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "ಸಂಪರ್ಕಸಾಧನ" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "ಪಠ್ಯ ಚೌಕ" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "ಬಳಕೆದಾರರ ಪಟ್ಟಿ" + +#: src/fe-gtk/setup.c:1703 +msgid "Channel switcher" +msgstr "ಚಾನಲ್ ಬದಲಾವಣೆಗಾರ" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "ಬಣ್ಣಗಳು" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "ಮಾತುಕತೆ" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "ಸಾಮಾನ್ಯ" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "ಸದ್ದು" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "ಜಾಲಬಂಧ ಸಿದ್ಧತೆ" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "ಕಡತ ವರ್ಗಾವಣೆಗಳು" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "ಪಂಗಡಗಳು" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" +"ವೃಕ್ಷವನ್ನು ನೀವು ಮೇಲೆ ಅಥವ ಕೆಳಗೆ ಇರಿಸುವಂತಿಲ್ಲ!\n" +"ದಯವಿಟ್ಟು ಮೊದಲು <b>ನೋಟ</b>ದ ಮೆನುವಿನಲ್ಲಿ <b>ಹಾಳೆಗಳ</b> ವಿನ್ಯಾಸಕ್ಕೆ ಬದಲಾಯಿಸಿ." + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" +"ಮಾಡಲಾದ ಕೆಲವು ಬದಲಾವಣೆಗಳು ಸಂಪೂರ್ಣವಾಗಿ ಕಾರ್ಯರೂಪಕ್ಕೆ ಬರಲು ಮರಳಿ ಆರಂಭಿಸುವ " +"ಅಗತ್ಯವಿರುತ್ತದೆ." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*ಎಚ್ಚರಿಕೆ*\n" +"DCC ಅನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗು ನಿಮ್ಮ ನೆಲೆ ಕೋಶಕ್ಕೆ ಒಪ್ಪಿಕೊಳ್ಳುವುದು\n" +"ಅಪಾಯಕಾರಿ ಹಾಗು ಮೋಸದ ಬಳಕೆಗೆ ಕಾರಣವಾಗಬಹುದು. ಉದಾ:\n" +"ಯಾರಾದರೂ ನಿಮಗೆ ಒಂದು .bash_profile ಅನ್ನು ಕಳುಹಿಸಬಹುದು" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: ಆದ್ಯತೆಗಳು" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "ವಾಕ್ಯಾಂಶವನ್ನು ಪಾರ್ಸ್ ಮಾಡುವಲ್ಲಿ ದೋಷ ಉಂಟಾಗಿದೆ" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "ಈ ಸಂಜ್ಞೆಯು ಕೇವಲ %d args ಅನ್ನು ರವಾನಿಸಿದೆ, $%d ಅಮಾನ್ಯವಾಗಿದೆ" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "ಪಠ್ಯ ಕಡತವನ್ನು ಮುದ್ರಿಸು" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "ಘಟನೆಗಳನ್ನು ಸಂಪಾದಿಸು" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ ಸಂಖ್ಯೆ" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "ಇದರಿಂದ ಲೋಡ್ ಮಾಡು..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "ಎಲ್ಲವನ್ನೂ ಪರೀಕ್ಷಿಸಿ" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: URL ಸೆಳೆದುಕೊಳ್ಳುವವ" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "ಪಟ್ಟಿಯನ್ನು ಅಳಿಸಿ ಹಾಕಿ" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "ಆಯ್ಕೆ ಮಾಡಲಾದ URL ಅನ್ನು ಕಾಪಿ ಮಾಡಿ" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "ಕಾಪಿ ಮಾಡು" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "ಪಟ್ಟಿಯನ್ನು ಕಡತಕ್ಕೆ ಉಳಿಸಿ" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d ops, %d ಒಟ್ಟು" diff --git a/xchat-2.8.8/po/ko.gmo b/xchat-2.8.8/po/ko.gmo new file mode 100644 index 0000000000000000000000000000000000000000..f0ef263a84eb595b2dd34a7f294e98fe9ed65908 GIT binary patch literal 103992 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 H?9Ki!_eUNQ literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/po/ko.po b/xchat-2.8.8/po/ko.po new file mode 100644 index 0000000..a6789c9 --- /dev/null +++ b/xchat-2.8.8/po/ko.po @@ -0,0 +1,5635 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: \n" +"Last-Translator: Jaesung <jaesung@liberotown.com>\n" +"Language-Team: Korean <translation-team-ko@lists.sourceforge.net>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "~/.xchat2 디렉터리를 생성할 수 없습니다." + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "바빠요~" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "전 이만 갑니다." + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* IRC를 루트 계정으로 실행했습니다!!\n" +" 새로운 사용자 계정를 생성하고 로그인하여 실행하십시오.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "대기 중" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "활성" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "실패" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "확인" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "접속" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "취소됨" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "%s에 접근할 수 없습니다.\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "오류" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s님이 \"%s\"(을)를 전송합니다. 수락하시겠습니까?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "DCC가 활성화되지 않았습니다\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "예 " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "아니오 " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "%s님으로부터 너무 많은 CTCP 요청을 받고 있으므로 %s님을 무시합니다.\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "" +"%s님으로부터 너무 많은 MSG 요청을 받고 있으므로 setting_gui_auto_open_dialog " +"값을 OFF로 설정합니다.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s 접속됨\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s 종료함\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "" +"대화에 참여하고 있지 않습니다. \"/join #대화방 제목\"으로 대화에 참여하세" +"요.\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "" +"접속되어 있지 않습니다. \"/server <서버 주소> [<포트>]\"명령으로 접속하세" +"요.\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "이미 자리 비움 설정 됨: %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "이미 돌아옴으로 표시됨.\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "실행하려면 /bin/sh가 필요합니다!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "사용 가능한 명령:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "사용자 정의 명령:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "플러그인 정의 명령:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "/HELP <명령>, 또는 /HELP -l 명령을 치면 더 많은 정보를 볼 수 있습니다." + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "'%s' 인수는 알 수 없으므로 무시합니다." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "확장 기능을 찾을 수 없습니다.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "해당 확장 기능을 제거했습니다.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <단추명> <동작>, 사용자 목록에 단추를 추가합니다. " + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <명령>, 참여 중인 모든 대화방에 명령을 수행합니다." + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHANL <명령>, 참여 중인 모든 대화방에 명령을 수행합니다." + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <명령>. 접속 중인 모든 서버에서 명령을 수행합니다." + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<이유>], 자리 비움으로 표시합니다." + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "BACK, 돌아옴으로 표시 (자리 비우지 않음)" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <매스크> [<형태>], 현재 대화방에서 해당되는 매스크에 속한 모든 사람을 대" +"화에 참여하지 못하게 합니다. 만약 이미 대화방에 있다면 그들은 강제 퇴장되지 " +"않습니다.(대화방 관리 권한 필요)" + +#: src/common/outbound.c:3506 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <변수> [<값>]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "CLEAR [ALL|HISTORY], 현재 텍스트 창 및 명령어 기록을 지웁니다" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, 현재 창이나 탭을 닫습니다." + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" +"COUNTRY [-s] <코드|wildcard>, 국가 코드를 찾습니다. 예: au = 오스트레일리아" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <대화명> <메시지>, CTCP 메시지를 해당 사용자에게 보냅니다. 널리 쓰이는 " +"메시지는 VERSION과 USERINFO입니다." + +#: src/common/outbound.c:3516 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "" +"CYCLE [<대화방], 현재 대화방이나 주어진 대화방을 나갔다가 바로 다시 들어옵니" +"다." + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <대화명> - 해당 사용자에게 파일 받기를 시도합니" +"다.\n" +"DCC SEND [-maxcps=#] <대화명> [파일] - 해당 사용자에게 파일을 전송합니다.\n" +"DCC PSEND [-maxcps=#] <대화명> [파일] - 해당 사용자에게 파일을 Passive 모드" +"로 전송합니다.\n" +"DCC LIST - DCC 목록을 표시합니다.\n" +"DCC CHAT <대화명> - 해당 사용자와 1:1 대화를 시도합니" +"다.\n" +"DCC PCHAT <대화명> - 해당 사용자와 1:1 대화를 Passive 모드" +"로 시도합니다.\n" +"DCC CLOSE <명령> <대화명> <파일> 예제:\n" +" /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <대화명>, 현재 대화방에서 제한된 관리 권한을 박탈합니다.(관리 권한 필" +"요)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <단추명>, 사용자 목록에서 단추를 지웁니다." + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DEOP <대화명>, 현재 대화방에서 관리 권한을 박탈합니다.(관리 권한 필요)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <대화명>, 현재 대화방에서 해당 사용자의 발언권을 박탈합니다.(관리 권" +"한 필요)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, 서버와 연결을 끊습니다" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <대화명|호스트|IP>, 해당 사용자의 IP주소를 찾습니다." + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <글월>, 글월을 대화창에 출력합니다." + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <명령>, 명령을 실행합니다. 만약 -o 인수를 사용하면 현재 대화방에 결" +"과를 출력하고, 그렇지 않다면 자신에게만 보여줍니다." + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, 프로세스 SIGCONT를 보냅니다." + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], 현재 실행 중인 세션을 종료시킵니다. 만약 -9가 주어진다면 프로" +"세스는 SIGKILL을 받아 강제 종료됩니다." + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, 프로세스 SIGSTOP을 보냅니다." + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, 프로세스의 표준 입력으로 데이터를 보냅니다." + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, 현재 서버에 보낼 목록을 제거합니다." + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" +"GATE <호스트> [<포트>], 해당 호스트를 프록시로 사용합니다. 포트의 기본값은 23" +"입니다." + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <대화명> <암호>, 유령으로 설정된 사용자의 접속을 종료시킵니다." + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" +"HOP <대화명>, 해당 사용자에게 제한된 관리 권한을 부여합니다.(관리 권한 필요)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <암호>, 자신을 NickServ로부터 인증합니다." + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <매스크> <형태..> <추가 인수..>\n" +" 매스크 - 무시할 호스트 매스크, 예: *!*@*.aol.com\n" +" 형태 - 무시할 형태, 사용가능한 값:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" 추가 인수 - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <대화명> [<대화방>], 누군가를 대화방에 초대합니다. 대화방의 기본값은 " +"현재 대화방 입니다.(관리 권한 필요)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <대화방> [<암호>], 대화방에 참여합니다." + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <대화명>, 해당 사용자를 현재 대화방에서 강제 퇴장시킵니다.(관리 권한 필" +"요)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <대화명>, 해당 사용자를 대화방에서 강제 퇴장시키고 다시 참여하지 못하" +"게 합니다.(관리 권한 필요)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, 새로운 lag 확인" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <문자열>, 기억 공간에서 해당 문자열을 검색합니다" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <파일>, 추가 기능이나 혼잣말을 읽어들입니다." + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, 현재 대화방에서 모든 관리자의 권한을 박탈합니다.(관리 권한 필요)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, 현재 대화방에서 모든 관리자의 권한을 박탈합니다.(관리 권한 필요)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <행동>, 현재 대화방에서 행동을 취합니다.(행동은 3자에게 사용합니다. 예: /" +"me 후다다닭==33 )" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, 현재 대화방에서 모든 사람을 강제 퇴장시킵니다.(관리 권한 필요)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, 현재 대화방의 모든 사용자에게 관리 권한을 부여합니다.(관리 권한 필요)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <대화명> <메시지>, 귓속말을 보냅니다." + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, 현재 대화방에 참여하고 있는 모든 대화명을 출력합니다." + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <대화명> <메시지>, CTCP 알림 메시지를 보냅니다." + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <호스트이름> [<포트>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <대화명>, 당신의 대화명을 설정하거나 변경합니다." + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <대화명/대화방> <메시지>, 공지를 보냅니다. 공지사항은 자동으로 취해지" +"는 메시지의 형태입니다." + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n 네트워크1[,네트워크2,...]] [<대화명>], 알림 목록을 표시하거나 목록" +"에 대화명을 추가합니다." + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" +"OP <대화명>, 해당 사용자에게 대화방 관리 권한을 부여합니다.(관리 권한 필요)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" +"PART [<대화방>] [<이유>], 대화방을 나갑니다. 대화방의 기본값은 현재 대화방입" +"니다." + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <대화명 | 대화방>, 사용자나 대화방에 CTCP 핑을 보냅니다." + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "QUERY [-nofocus] <대화명>, 누군가에 대한 새 privmsg 창을 엽니다" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<이유>], 서버와 접속을 종료합니다." + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <텍스트>, 서버에 원시 메시지를 보냅니다." + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<호스트>] [<포트>] [<암호>], 그냥 /RECONNECT는 현재 서버를 " +"재접속하고, /RECONNECT ALL을 사용하면 접속되어 있는 모든 서버에 재접속합니다." + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<호스트>] [<포트>] [<암호>], 그냥 /RECONNECT는 현재 서버를 재접속" +"하고, /RECONNECT ALL을 사용하면 접속되어 있는 모든 서버에 재접속합니다." + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <텍스트>, xchat에 원시 자료를 보냈을때, 만약 IRC 서버로부터 받은 자료가 " +"있다면 수신합니다." + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <텍스트>, 현재 창의 객체에게 텍스트를 보냅니다." + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <대화명> [<파일>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <호스트> <포트> <대화방>, 접속 후, 대화방에 자동 참여하거나 " +"대화방을 개설합니다." + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN <호스트> <포트> <대화방>, 접속 후, 대화방에 자동 참여하거나 대화방" +"을 개설합니다." + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <호스트> [<포트>] [<암호>], 서버에 접속합니다. 일반적인 접속의 " +"포트는 6667이며 ssl 접속을 위해 9999를 사용합니다." + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER [-ssl] <호스트> [<포트>] [<암호>], 서버에 접속합니다. 일반적인 접속의 " +"포트는 6667입니다." + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <변수> [<값>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<위치>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<주제>], 주제가 주어지면 주어진 주제를 설정하고, 그렇지 않다면 현재 주" +"제를 보여 줍니다." + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" +"\n" +"TRAY -f <제한시간> <파일1> [<파일2>] 트레이에서 두 개의 아이콘을 깜빡이게 합" +"니다.\n" +"TRAY -f <파일 이름> 트레이에 해당 아이콘으로 설정합니다.\n" +"TRAY -i <번호> 내장된 아이콘을 깜빡이게 합니다.\n" +"TRAY -t <텍스트> 트레이에 도움말을 표시합니다.\n" +"TRAY -b <제목> <텍스트> 트레이에 제목을 표시합니다." + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "" +"UNBAN <매스크> [<매스크>...], 정의된 매스크를 입장 금지 목록에서 해제합니다." + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <매스크> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <이름>, 추가 기능이나 혼잣말의 사용을 중지합니다." + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, URL을 웹브라우저에서 엽니다." + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <대화명1> <대화명2> 기타, 대화방의 사용자 목록에서 해당 대" +"화명을 강조하여 표시합니다." + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <대화명>, 해당 사용자에게 발언권을 부여합니다.(관리 권한 필요)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <메시지>, 모든 대화방에 메시지를 보냅니다." + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <메시지>, 현재 대화방의 모든 관리자에게 메시지를 보냅니다." + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "사용법: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"이 명령은 도움말이 없습니다..\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "해당 명령이 존재하지 않습니다.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "사용자 명령에 잘못된 인수.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "너무 많은 사용자 명령. 취소됨." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "알 수 없는 명령. /help를 사용하십시오.\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "xchat_plugin_init 기호가 없음; 정말 xchat의 추가 기능입니까?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "정말 SSL이 사용가능한 서버와 포트입니까?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"호스트 이름 %s 를(을) 해석 할 수 없습니다.\n" +"당신의 IP 설정을 확인하십시오!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Proxy 연결 실패.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "%s의 다음 서버로 진행....\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"경고: \"%s\" 알 수 없는 문자셋입니다. %s 네트워크에서는 문자열 변환이 적용되" +"지 않습니다." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1님을 알림 목록에 추가했습니다." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1의 입장 금지 목록:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$t참여할 수 없음%C26 %B$1 %O(당신은 입장 금지당했습니다)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1님의 대화명은 이제 $2입니다." + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1님이 $2에 입장 금지했습니다." + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$t대화방 $1은(는) $2에 만들어졌습니다." + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O님이 %C26$2%C님에게 대화방 관리 권한을 박탈했습니다." + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O님이 %C26$2%C님에게 대화방 관리 권한을 박탈했습니다." + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O님이 %C26 $2님의 발언권을 박탈했습니다." + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1님이 $2(을)를 제거했습니다." + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O님이 %C26$2%C님에게 대화방 관리 권한을 부여했습니다." + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1의 초대 상태는 $2에 설정되었습니다." + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%U대화방 사용자 제목" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1님이 설정 $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22대화방 $1의 상태: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O님이 %C26$2님에게 대화방 관리 권한을 부여했습니다." + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1님이 대화방에서 $2을(를) 해제했습니다." + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1님이 $2 대화방의 초대 가능 상태를 해제했습니다." + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1님이 대화방 암호를 제거했습니다." + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1님이 사용자 제한을 해제했습니다." + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1님이 대화방 암호를 \"$2\"로 설정했습니다." + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1님이 대화방의 참여자 수를 $2명으로 제한했습니다." + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1님이 대화방 $2의 입장 금지 목록을 제거했습니다." + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O님이 %C26 $2님에게 발언권을 부여했습니다." + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22접속되었습니다. 로그인 중입니다...." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22 $1($2)의 포트 $3%O으로 접속 중입니다..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21접속 실패. 오류: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$t$2님으로부터 CTCP $1을(를) 받았습니다" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$t$2님으로부터 CTCP $1을(를) 받았습니다.($3에게)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$t$2님으로부터 CTCP Sound $1을(를) 받았습니다" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$t$2님으로부터 CTCP Sound $1을(를) 받았습니다.($3에게)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$t%C26$1님과 %ODCC CHAT이 취소되었습니다." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$t%C26$1님과 DCC CHAT 접속되었습니다 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$t%C26$1님과%O DCC CHAT의 접속이 끊김($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$t$1님으로부터 DCC CHAT 요청을 받았습니다." + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$t$1님에게 DCC CHAT 요청 중입니다" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$t이미 $1님에게 요청 중입니다." + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$tDCC $1 %C26 $2%O에 접속 실패 (err=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$t$2님으로부터 '$1%O'을(를) 받았습니다." + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 형태 송/수신 상태 크기 위치 파일 " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O.%010%C22*%O" +"$tContents of packet: $2" +msgstr "" +"%C22*%O$tDCC 요청을 %C26$1%O로부터 받았습니다.%010%C22*%O$t패킷의 내용: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$t%C26$2%O님에게 %C26$1%O을(를) 전송합니다." + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tDCC 제공자를 찾을 수 없습니다." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC 받기%C26 $1%O님으로부터 %C26$2%O 받기가 취소되었습니다." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC 받기%C26$3%O님으로부터 %C26$1%O받기 완료 %C30[%C26$4%O cps%C30]%" +"O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC 받기%C26 $1%O님과 접속됨 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC 받기%C26$3%O님에게 %C26$1%O 받기 실패 ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC 받기: $1을 쓸 수 없습니다.($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "" +"%C22*%O$t파일%C26 $1%C은(는) 이미 있습니다. 이름에 %C26$2%O(을)를 추가합니다." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "" +"%C22*%O$t%C26$1%O님이 파일 %C26$2%C을(를) %C26$3%C부터 이어 받기를 요청했습니" +"다." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC 보내기%C26$1%O님에게 %C26$2%O 보내기 취소됨." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC 보내기%C26$2%O님에게 파일 %C26$1%O 보내기 완료 %C30[%C26$3%O cps" +"%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC 보내기 %C26$1%C님과 접속됨.%C30[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC 보내기%C26 $1%O을(를) %C26$2%O님에게 보내기 실패. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1%O님이 %C26$2%O를 보내셨습니다.(%C26$3 %Obytes)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %C지연됨 - 취소됨." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %O시간제한 - 취소됨." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1님은 알림 목록에서 삭제되었습니다." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$t접속 종료됨($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$t당신의 IP를 찾았습니다: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O님을 무시 목록에 추가했습니다." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "무시 목록의 %C26$1%O이(가) 변경됨." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "" +"%C24,18 호스트 매스크 귓말 알림 대화 CTCP 연결 초대 무시안함 " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O님을 무시 목록에서 했습니다." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " 무시 목록이 비어 있습니다." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "" +"%C22*%O$t대화방%C26 %B$1에 참여할 수 없습니다. %O(대화방이 초대만 가능한 상태" +"입니다)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "" +"%C22*%O$t%C26$2%O님이 당신을 대화방 %C26$1%O로 초대하고 계십니다.(%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3)님이 대화방 $2에 참여했습니다." + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$t대화방%C26 %B$1에 참여할 수 없습니다. %O(암호가 필요합니다)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1님이 $3에서 $2님을 강제 퇴장시켰습니다.(이유:$4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$t당신은 $1님으로부터 킬 당했습니다.(이유:$2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22공지사항 무시됨." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t대화명 \"$1\"이 이미 사용 중입니다. \"$2\"로 재시도합니다..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$t대화명이 이미 사용 중입니다. /NICK 명령으로 다른 대화명으로 변경하십" +"시오." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$t요청된 DCC가 없습니다." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$t현재 실행 중인 프로세스가 없습니다." + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$t알림 목록은 비어 있습니다." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B 알림 목록" + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1명의 사용자가 알림 목록에 있습니다." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$t알림: $1 오프라인입니다.($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$t알림: $1 온라인입니다.($3)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1님(%O%C23$2)께서 대화방 $3에서 퇴장했습니다." + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "" +"%C23*%O$t%C23$1님(%O%C23$2)께서 대화방 $3에서 퇴장했습니다.(%O%C23%B%B$4%O%" +"C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$t$1으로부터 핑 회신: $2초" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$t$1초 동안 핑의 회신이 없으므로, 접속이 종료되었습니다." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$t프로세스가 이미 실행 중입니다." + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1님 끝내셨습니다.(%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1님이 상태를 설정했습니다.%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tIP 주소 %C26 $1을(를) 찾는 중%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22접속되었습니다." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22찾는 중 $1.." + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$t이전 접속이 중지됨 (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29 대화방 $1%C %C29의 주제는 $2입니다." + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1님이 주제를 $2(으)로 변경했습니다." + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "" +"%C29*%O$t%C29대화방 $1%C %C29의 주제는 $2%C %C29님이 설정했습니다.(위치: $3)" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$t알 수 없는 호스트. 입력 내용을 확인하십시오." + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "%C22*%O$t대화방 %C26%B$1%C에 참여할 수 없습니다 %O(참여인원수 제한)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26대화방 $1의 사용자:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %C님이 자리를 비우셨습니다 %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OWHOIS 목록의 끝." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O 잠수%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O 잠수%C26 $2%O, 접속:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O실제사용자@호스트%C27 $2%O, 실제 IP%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19당신은 대화방 $2에 참여합니다" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "" +"%C23*$t당신은 $3님으로부터 $2 대화방에서 강제 퇴장당했습니다.(이유:$4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$t당신은 $3에서 퇴장했습니다" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$t당신은 $3에서 퇴장했습니다 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$t당신은 대화방 %C26$2%O로 %C26$1%O님을 초대했습니다.(%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$t당신의 대화명은 $2입니다" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "로그 읽어 들임. 위치:" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** 기록 종료 : %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** 기록 시작 : %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* 로그 파일을 열 수 없습니다. 먼저\n" +" %s/xchatlogs 파일의 권한을 확인하십시오." + +#: src/common/text.c:961 +msgid "Left message" +msgstr "왼쪽 메시지" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "오른쪽 메시지" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "참여하는 사용자의 대화명" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "참여한 대화방" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "사용자의 호스트" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "대화명" + +#: src/common/text.c:973 +msgid "The action" +msgstr "행동" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "상태" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "정보 글월" + +#: src/common/text.c:980 +msgid "The text" +msgstr "글월" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "메시지" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "이전 대화명" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "새 대화명" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "주제를 변경한 사용자의 대화명" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "주제" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "대화방" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "입장 금지한 사람의 대화명" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "퇴장시킨 사람" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "대화방" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "이유" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "퇴장하는 사람의 대화명" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "시간" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "만든이" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "대화명" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "이유" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "호스트" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "사용자의 위치" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "x.x 형태의 시간 (아래를 보십시오)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "대화방 이동" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "소리" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "사용자의 대화명" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "CTCP 이벤트" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "암호를 설정한 사용자의 대화명" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "암호" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "인원 제한을 설정한 사용자의 대화명" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "인원 제한" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "관리 권한을 주는 사용자의 대화명" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "관리 권한을 받는 사용자의 대화명" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "제한된 관리 권한을 받은 사용자의 대화명" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "제한된 관리 권한을 주는 사용자의 대화명" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "발언권을 주는 사용자의 대화명" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "발언권을 받는 사용자의 대화명" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "입장 금지 설정을 한 사용자의 대화명" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "입장 금지 매스크" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "암호를 해제한 사용자의 대화명" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "인원 제한을 해제한 사용자의 대화명" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "관리 권한을 박탈한 사용자의 대화명" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "관리 권한을 박탈당한 사용자의 대화명" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "일부 관리 권한을 박탈한 사용자의 대화명" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "일부 관리 권한을 박탈당한 사용자의 대화명" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "발언권을 박탈한 사용자의 대화명" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "발언권을 박탈당한 사용자의 대화명" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "입장 금지을 해제한 사용자의 대화명" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "제외된 사용자의 대화명" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "제외 매스크" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "제외를 제거한 사용자의 대화명" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "초대한 사용자의 대화명" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "초대할 매스크" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "초대전용 설정을 해제한 사용자의 대화명" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "대화방 상태를 설정한 사용자의 대화명" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "상태 설정은 (+/-) 입니다." + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "상태 기호" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "대화방 설정 변경" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "사용자 이름" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "전체 이름" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "대화방 이용자는 /\"IRC 관리자\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "서버 정보" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "잠수 시간" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "접속 시간" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "자리를 비우는 이유" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "메시지" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "계정" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "실제 user@host" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "실제 IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "대화방 제목" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "글월" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "서버명" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "당신을 초대한 사용자의 대화명" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "참여자" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "사용할 대화명" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "대화명 다시 시도" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "포트" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "네트워크" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "상태 기호" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "IP 주소" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "DCC 형태" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "파일 이름" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "받을 위치" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "경로" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "위치" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "크기" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "DCC 문자" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "알림 항목의 수" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "이전 파일 이름" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "새 파일 이름" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "받는 이" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "호스트 매스크" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "호스트" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "패킷" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "초" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "초대할 사용자의 대화명" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "입장 금지 매스크" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "입장 금지를 설정한 사람" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "입장 금지 시간" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"상황 %s 설정 오류.\n" +"기본값을 사용합니다." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"소리 파일을 읽지 못함:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "원격 호스트에서 소켓이 닫힘" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "접속이 거부됨" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "호스트로 갈 경로가 없음" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "접속 시간 제한" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "해당 주소로 접근할 수 없음" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "접속이 초기화됨" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "어센션 섬" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "안도라" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "아랍 국가 연합" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "아프카니스탄" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "안티과와 바부다" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "앙귈라" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "알바니아" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "아르메니아" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "네덜란드" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "앙골라" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "안타티카" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "아르헨티나" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "DNS 역추적" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "아메리칸 사모아" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "오스트리아" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "북대서양 조약기구" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "오스트레일리아" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "아루바" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "올란드 제도" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "아케르바이젠" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "보스니아와 헬제고비나" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "발바도스" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "방글라데시" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "벨기에" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "버키나 패소" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "불가리아" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "바레인" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "버런디" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "비지니스" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "베닌" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "버뮤다" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "브루나이 달루살람" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "볼리비아" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "브라질" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "바하마" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "부탄" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "부벳섬" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "보스와나" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "베라루스" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "베리제" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "카나다" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "코코스 섬" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "콩고(Democratic Republic fo)" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "중앙 아프리카 공화국" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "콩고" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "스위스" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "코테 드이보르" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "쿡 섬" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "칠레" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "카메룬" + +#: src/common/util.c:898 +msgid "China" +msgstr "중국" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "콜롬비아" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "상업용 인터닉" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "코스타리카" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "세르비아와 몬테니그로" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "쿠바" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "카보베르데" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "크리스마스 섬" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "키프로스 공화국" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "체코 공화국" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "독일" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "동아프리카 공화국 - 지부티" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "덴마크" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "도미니카" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "도미니카 공확국" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "알제리아" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "에콰도르" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "교육 재단" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "에스토니아" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "이집트" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "서사하라" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "에리트리아" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "스페인" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "에디오피아" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "유렵국가 연합" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "핀란드" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "피지" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "포크랜드섬" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "마이크로네시아" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "파로에섬" + +#: src/common/util.c:928 +msgid "France" +msgstr "프랑스" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "가봉" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "영국" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "그레나다" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "죠지아" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "프랑스령 귀아나" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "영국령 섬" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "가나" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "지브롤터" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "그린랜드" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "잠비아" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "기니" + +#: src/common/util.c:940 +msgid "Government" +msgstr "정부" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "과들루프" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "적도 기니" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "그리스" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "성 죠지아와 성 샌드위치 섬" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "과테말라" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "괌" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "기니비사우" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "가이아나" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "홍콩" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "맥도날드 섬과 허드" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "온두라스" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "크로아티아" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "하이티" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "헝가리" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "인도네시아" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "아일랜드" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "이스라엘" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "맨 섬" + +#: src/common/util.c:959 +msgid "India" +msgstr "인도" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "정보" + +#: src/common/util.c:961 +msgid "International" +msgstr "국제" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "인도양" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "이라크" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "이란" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "아이스랜드" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "이탈리아" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "저지 섬" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "자메이카" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "죠단" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "일본" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "케냐" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "키르기스 공화국" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "캄보디아" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "키리바티" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "코모로스" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "성 키티와 네비스" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "조선 민주주의 인민공화국" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "대한민국" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "쿠웨이트" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "케이멘 군도" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "카자흐스탄" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "라오스" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "레바논" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "성 루시아" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "리히텐슈타인" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "스리랑카" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "리베리아" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "레소토" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "리투아니아" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "룩셈부르크" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "라비타" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "리비아" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "모로코" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "모나코" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "몰도바" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "미국 의료" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "마다가스카르" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "마샬 섬" + +#: src/common/util.c:999 +msgid "Military" +msgstr "국방" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "마케도니아" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "말리" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "미얀마" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "몽고" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "마카오" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "노턴 마리아나 섬" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "마르티니크" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "모리타니아" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "몬테세라트" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "말타" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "모리셔스" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "말디브" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "말라위" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "멕시코" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "말레이지아" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "모잠비크" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "나미비아" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "뉴 칼레도니아" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "나이제르" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "인터닉 네트워크" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "노퍽 섬" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "나이지리아" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "니카르과" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "네덜란드" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "노르웨이" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "네팔" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "나우루" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "나우에섬" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "뉴질랜드" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "오만" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "인터닉 비영리 기관" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "파나마" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "페루" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "프랑스령 폴리네시아" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "파푸아 뉴기니" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "필리핀" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "파키스탄" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "폴란드" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "성 피에르와 미퀘론" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "핏케언 제도" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "푸에르토 리코" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "팔레스타인 자치구" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "포르투칼" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "팔라우" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "파라과이" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "콰타르" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "레위니옹" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "로마니아" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "옛 ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "러시아 연합" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "르완다" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "사우디 아라비아" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "솔로몬 섬" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "시실리" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "수단" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "스웨덴" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "싱가폴" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "성 헬레네" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "슬로베니아" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "스발바르와 잔 마옌 군도" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "슬로바키아 공화국" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "시에라리온" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "산마리노" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "세네갈" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "소말리아" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "수리남" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "상토메와 프린시페" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "옛 소비에트 연방" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "엘살바도르" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "시리아" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "스와질랜드" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "터크스카이코스 제도" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "차드" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "프랑스 남부 지역" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "토고 공화국" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "타이" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "타지크스탄" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "토켈라우 제도" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "동 티모르" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "투르크메니스탄" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "튀니지" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "통가" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "터키" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "트리니다드 토바고" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "투발루" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "대만" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "탄자니아" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "우크라이나" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "우간다" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "영국" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "미국" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "우르과이" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "우즈베키스탄" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "바티칸 시국" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "성 빈센트와 그레너딘즈 제도" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "베네주엘라" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "영국령 버진 섬" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "미국 버진 섬" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "베트남" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "바누아투" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "윌리스와 푸투나 군도" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "시모아" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "예멘" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "마요트" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "유고슬라비아" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "남아프리카 공화국" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "잠비아" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "짐바브웨" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "알 수 없음" + +#: src/common/xchat.c:726 +msgid "_Open Dialog Window" +msgstr "귓속말 창 열기(_O)" + +#: src/common/xchat.c:727 +msgid "_Send a File" +msgstr "파일 전송(_S)" + +#: src/common/xchat.c:728 +msgid "_User Info (WhoIs)" +msgstr "사용자 정보(_U)(WhoIs)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "친구 목록에 추가(_A)" + +#: src/common/xchat.c:730 +msgid "O_perator Actions" +msgstr "관리자 명령(_P)" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "관리 권한 주기" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "관리 권한 박탈" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "발언권 주기" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "발언권 뺏기" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "퇴장/입장 금지" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "퇴장" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "입장 금지" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "퇴장 후 입장 금지" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "대화방 나가기" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "대화 참여..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "참여할 대화방 입력:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "서버 연결" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "서버에 핑" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "버전 숨기기" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "관리 권한" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "관리권 뺏기" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "안녕" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "%s님을 강제로 퇴장시키는 이유:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "파일 보내기" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "귓속말" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "사용자 정보" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "보내기" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "대화" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "비우기" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "핑" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "세션 버스에 접속하 수 없습니다." + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "NameHasOwner를 마치는 데 실패했습니다" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "Command를 마치는 데 실패했습니다" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "원격 접근" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "DBUS을 이용한 원격 추가 기능 " + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "세션 버스에 접속하 수 없습니다: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "%s 얻기 실패: %s\n" + +#: src/fe-gtk/about.c:100 +msgid "About " +msgstr "정보" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "다중 환경의 IRC 클라이언트" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "문자표" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "접속되어 있지 않습니다." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "먼저 입장 금지 목록에서 선택 하십시오." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "정말 대화방 %s에서 모든 추방자를 제거 하시겠습니까?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "매스크" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "보낸 이" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "날짜" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "대화방 탭에서만 입장 금지 목록을 열 수 있습니다." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: 입장 금지 목록 (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "제거" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "잘라내기" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "다시" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "%d/%d 사용자 (%d/%d 대화방) 표시." + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "출력할 파일을 선택하십시오." + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "대화방 참여(_J)" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "대화방 제목 복사(_C)" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "제목 복사(_T)" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: 대화방 목록 (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "찾기(_S)" + +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "받기 목록(_D):" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "목록 저장(_L)..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "보기:" + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "대화방, " + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr " " + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "사용자." + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "보기:" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "대화방 제목" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "찾기 종류:" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "간단히 검색" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "일치할 패턴 (와일드카드)" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "정규 표현" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "찾기:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "%s님에게 파일 보내기" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "그 파일은 이어 받을 수 없습니다." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"파일에 접근할 수 없습니다: %s\n" +"%s.\n" +"이어받기가 불가능합니다." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"받을 디렉터리의 파일이 전송 받을 파일보다 큽니다. 이어 받기는 불가능합니다." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "두 사람에게서 같은 파일을 받을 경우 이어 받을 수 없습니다." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: 업로드/다운로드" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "상태" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "파일" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "모두" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "보내기" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "받기" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "자세히" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "파일:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "주소:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "취소" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "허용" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "이어받기" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "디렉터리 열기..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: DCC 대화 목록" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "받음" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "보냄" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "시작 시간" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*새로 만듦*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "수정해 주세요" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "이름" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "명령" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "위로" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "아래로" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "취소" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "저장" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "새로 추가" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "삭제" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "정렬" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "도움말" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "서버에 자동으로 접속하지 않기" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "다른 설정 디렉터리 사용" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "추가 기능을 사용하지 않음" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "자동으로 실행된 추가 기능보기" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "사용자 설정 디렉터리 보기" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "irc://서버:포트/대화방 형태의 URL을 엽니다." + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "접속시 명령:" + +#: src/fe-gtk/fe-gtk.c:132 +msgid "Open URL or execute command in an existing XChat" +msgstr "실행 중인 XChat에서 URL 혹은 실행 커맨드 열기" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "최소화 시작. 단계 0=보통 1=아이콘화 2=알림영역" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "레벨" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "버전 정보 표시" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"글꼴 읽기 실패:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "검색할 기억 공간이 비어 있습니다.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d 바이트" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "네트워크 전송 큐: %d Bytes" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"명령어 실행 명령은 데이터 1의 명령을 입력 창에 입력한 것처럼 실행합니다. 즉 " +"데이터 1에는 일반 텍스트가 들어갈 수도 있고 (이 경우 대화방이나 어떤 사람에" +"게 그대로 전달됩니다), 명령어나 사용자 명령이 들어갈 수도 있습니다. 모든 데이" +"터 1의 \\n 문자로 명령어를 구분하면 여러 개 명령어를 실행할 수도 있습니다. 실" +"제 텍스트로 \\로 쓰려면 \\\\라고 쓰면 됩니다." + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"페이지 바꾸기 명령은 노트북의 페이지를 바꿉니다. 데이터 1을 이동하려는 페이" +"지 번호로 설정하십시오. 데이터 2를 아무 값으로든 설정하면 현재 위치의 상대 위" +"치로 이동합니다." + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"버퍼에 입력 명령은 데이터 1의 내용을 마치 현재 커서 위치에 키로 입력한 것처" +"럼 입력 창에 넣습니다." + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"페이지 스크롤 명령은 텍스트 창을 한 페이지나 한 줄 단위로 위 아래로 스크롤합" +"니다. 데이터 1은 위나 아래로 +1 혹은 -1처럼 설정할 수 있습니다." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "버퍼 설정 명령은 입력창의 내용을 데이터 1의 내용으로 설정합니다." + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"최근 명령 명령은 입력 창의 내용을 최근에 입력한 명령어로 설정합니다. 쉘에서 " +"위 화살표 키를 누른 것과 같습니다." + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"다음 명령 명령은 입력 창의 내용을 다음 명령으로 설정합니다. 쉘에서 아래 화살" +"표 키를 누른 것과 같습니다." + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"이 명령은 입력 창의 텍스트를 대화명이나 명령어로 완성합니다. 데이터 1을 설정" +"하면 문자열에 탭을 두번 누르는 경우에 다음 대화명이 아니라 최근 대화명을 선택" +"합니다." + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"이 명령은 대화명 목록의 스크롤을 올리거나 내립니다. 만약 데이터 1을 어떤 값으" +"로든 설정하면 스크롤을 올리고, 아닐 경우 내립니다." + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"이 명령은 입력 창에서 입력한 마지막 단어를 목록의 단어와 비교해서 일치하면 다" +"른 단어로 바꿉니다." + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "이 명령은 앞의 탭을 왼쪽으로 이동 시킵니다." + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "이 명령은 앞의 탭을 오른쪽으로 이동 시킵니다." + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "이 명령은 현재 탭을 왼쪽으로 이동 시킵니다." + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "이 명령은 현재 탭을 오른쪽으로 이동 시킵니다." + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "입력된 줄은 기록은 했지만 서버로 전송하지 못했습니다." + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "단축키 연결 설정 읽는중 오류가 발생 했습니다." + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<없음>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "상태" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "단축키" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "동작" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: 단축키" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "데이터 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "데이터 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "단축키 설정파일 열기 실패\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"단축키 설정파일의 %s은(는) 알 수 없는 키입니다.\n" +"읽기가 취소되었습니다. %s/keybindings 파일을 수정 하십시오.\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"단축키 설정파일의 %s은(는) 알 수 없는 행동입니다.\n" +"읽기가 취소되었습니다. %s/keybindings 파일을 수정 하십시오.\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"데이터 는 (Dx{:|!}로 시작되는) 기대한 것과 같지만 :\n" +"%s\n" +"\n" +"읽기가 취소되었습니다. %s/keybindings 파일을 수정 하십시오.\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"단축키 설정파일이 올바르지 않아서, 읽기를 취소 했습니다.\n" +"%s/keybindings.conf 파일을 수정 하십시오.\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "해당 파일을 쓸 수 없습니다." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "해당 파일은 열 수 없습니다." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "해당 매스크가 이미 존재합니다." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "개인:" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "알림" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "초대" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "무시해제" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "무시할 매스크 입력:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: 무시 목록" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "무시 상태:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "대화방:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "개인:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "알림:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "초대:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "추가..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "대화방 제목이 너무 짧습니다. 다시 시도하십시오." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: 접속 완료" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "%s에 접속 완료." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"서버 목록창에서, 자동으로 참여할 대화방(대화방)이 이 네트워크에는 없습니다." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "다음에는 무엇을 하시겠습니까?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "아무것도 안 함. 다음에 대화방에 입장하겠습니다.(_N)." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "이 대화방에 참여(_J):" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "대화방 제목을 알고 있다면, 이곳에 입력하십시오." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "대화방 목록 창 열기(_P)." + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "대화방 목록을 받는 중입니다. 잠시만 기다려 주십시오." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "접속 후 이 창을 항상 표시합니다.(_A)." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "귓속말" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "대화방 %s의 주제는 %s입니다." + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "주제가 정해져 있지 않습니다." + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"이 서버는 %d개의 대화방이나 사용자와 연결되어 있습니다. 모두 닫으시겠습니까?" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "XChat을 끝내시겠습니까?" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "다음에 물어보지 않기." + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "%i개의 IRC 네트워크에 접속되어 있습니다." + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "정말로 끝내시겠습니까?" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "아직 파일 전송이 진행 중입니다." + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "알림 영역으로 최소화(_M)" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "색상 코드나 속성 삽입" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>굵게</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>밑줄</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "보통" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "색상 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "색상 8-15" + +#: src/fe-gtk/maingui.c:1612 +msgid "_Settings" +msgstr "설정(_E)" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "디스크에 기록(_L)" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "이전 대화 내용을 다시 읽음(_R)" + +#: src/fe-gtk/maingui.c:1617 +msgid "_Hide Join/Part Messages" +msgstr "입장/퇴장 메시지 숨김(_H)" + +#: src/fe-gtk/maingui.c:1625 +msgid "_Extra Alerts" +msgstr "알림(_E)" + +#: src/fe-gtk/maingui.c:1627 +msgid "Beep on _Message" +msgstr "메시지 비프음(_M)" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "알림 영역 아이콘 깜빡거림(_I)" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "작업 표시줄 깜빡거림" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +msgid "_Detach" +msgstr "탭 분리(_D)" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "닫기(_C)" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "사용자 제한은 숫자만 입력할 수 있습니다.\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "주제 잠금" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "외부 메시지 받지 않음" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "비밀방" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "초대만 가능" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "중재식 대화" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "입장 금지 목록" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "암호" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "사용자 제한" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "사용자 목록을 표시하거나 숨깁니다." + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"배경을 투명하게 할 수 없습니다!\n" +"\n" +"현재 사용하는 창 관리자에서는 호환되지 않습니다.\n" +"현재로서는 해당 창 관리자는 지원하지 않습니다.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "새 대화명 입력:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "알 수 없는 호스트" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "실제 이름:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "사용자:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "국가:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "서버:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "%u분 전" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "마지막 메시지:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "자리 비움 메시지:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "%d개의 대화명이 선택됨." + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"메뉴 막대를 숨깁니다. 다시 보시려면 F9를 누르거나 메인 창에서 마우스 오른쪽 " +"단추를 누르십시오." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "브라우저로 열기" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "선택한 링크 복사" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "대화 참여" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "대화방 나가기" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "나갔다 들어오기" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "즐겨 찾는 대화방에서 제거" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "즐겨 찾기에 추가(_A)" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: 사용자 메뉴" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "이 항목 편집..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "대화방 목록 가져오기..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"사용자 명령 - 특수 코드:\n" +"\n" +"%c = 현재 대화방\n" +"%e = 현재 네트워크 이름\n" +"%m = 컴퓨터 정보\n" +"%n = 대화명\n" +"%t = 날짜/시각\n" +"%v = xchat 버전\n" +"%2 = 단어 2\n" +"%3 = 단어 3\n" +"&2 = 단어 2부터 줄 끝까지\n" +"&3 = 단어 3부터 줄 끝까지\n" +"\n" +"예:\n" +"/cmd john hello\n" +"\n" +"%2는 \"john\"이고\n" +"&2는 \"john hello\"입니다." + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"사용자 목록 단추 - 특수 코드:\n" +"\n" +"%a = 선택한 대화명 전체\n" +"%c = 현재 대화방\n" +"%e = 현재 네트워크 이름\n" +"%h = 선택한 대화명의 호스트 이름\n" +"%m = 컴퓨터 정보\n" +"%n = 대화명\n" +"%s = 선택한 대화명\n" +"%t = 날짜/시각\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"대화 상자 단추 - 특수 코드:\n" +"\n" +"%a = 선택한 대화명 전체\n" +"%c = 현재 대화방\n" +"%e = 현재 네트워크 이름\n" +"%h = 선택한 대화명의 호스트 이름\n" +"%m = 컴퓨터 정보\n" +"%n = 대화명\n" +"%s = 선택한 대화명\n" +"%t = 날짜/시간\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"CTCP 응답 - 특수 코드:\n" +"\n" +"%d = 데이터 (전체 CTCP)\n" +"%e = 현재 네트워크 이름\n" +"%m = 컴퓨터 정보\n" +"%s = CTCP를 보낸 대화명\n" +"%t = 날짜/시각\n" +"%2 = 단어 2\n" +"%3 = 단어 3\n" +"&2 = 단어 2에서 줄 끝까지\n" +"&3 = 단어 3에서 줄 끝까지\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"URL 관리자 - 기능 코드:\n" +"\n" +"%s = URL 문자열\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: 사용자 정의 명령" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: 사용자 팝업 메뉴" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "바꿀글월" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: 바꾸기" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: URL 관리기" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: 사용자 목록 단추" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: 단추" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: CTCP 회신" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "네트워크 목록(_S)..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "새로 만들기(_N)" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "서버 탭..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "대화방 탭..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "서버 창..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "대화방 창..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "추가 기능이나 혼잣말 열기(_L)..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "종료(_Q)" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "보기(_V)" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "메뉴 모음(_M)" + +#: src/fe-gtk/menu.c:1592 +msgid "_Topic Bar" +msgstr "제목 표시줄(_T)" + +#: src/fe-gtk/menu.c:1593 +msgid "_User List" +msgstr "사용자 목록(_U)" + +#: src/fe-gtk/menu.c:1594 +msgid "U_serlist Buttons" +msgstr "사용자 목록 단추(_S)" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "상태 단추(_O)" + +#: src/fe-gtk/menu.c:1597 +msgid "_Channel Switcher" +msgstr "서버/대화방 표시 형태(_C)" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "탭(_T)" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "트리(_R)" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "네트워크 미터 표시(_N)" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "끔" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "그래프" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "서버(_S)" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "접속 해제(_D)" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "다시 접속(_R)" + +#: src/fe-gtk/menu.c:1613 +msgid "Join a Channel..." +msgstr "대화 참여..." + +#: src/fe-gtk/menu.c:1614 +msgid "List of Channels..." +msgstr "대화방 목록..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "자리 비움으로 표시" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "사용자 메뉴(_U)" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "설정(_E)" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "기본 설정(_P)" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "고급 기능" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "자동 변경..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "CTCP 회신..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "단추..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "키보드 바로 가기..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "글월 이벤트..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "URL 관리기..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "사용자 명령..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "사용자 목록 단추..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "사용자 메뉴..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "창(_W)" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "입장 금지 목록..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "문자표..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "대화 직접 연결..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "파일 전송..." + +#: src/fe-gtk/menu.c:1641 +msgid "Friends List..." +msgstr "친구 목록..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "무시 목록..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "추가 기능과 혼잣말..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "로그..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "URL 잡기 도구..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "표시된 줄 초기화" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "글월 삭제(_L)" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "글월 찾기..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "글월 저장..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "도움말(_H)" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "목록(_C)" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "업데이트 확인" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "정보(_A)" + +#: src/fe-gtk/menu.c:2147 +msgid "_Attach" +msgstr "붙이기(_A)" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "최근 접속" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "접속 종료" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "기록 없음" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "%d분 전" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "접속" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "추가할 대화명:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "다음 네트워크 알림:" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "쉼표로 구분한 네트워크 목록 허용함." + +#: src/fe-gtk/notifygui.c:413 +msgid "XChat: Friends List" +msgstr "XChat: 친구 목록" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "대화창 열기" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" +"풍선 알림을 열 때 사용하는 'notify-send' 프로그램을 찾을 수 없습니다.\n" +"libnotify를 설치하십시오." + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "XChat: %u 네트워크의 %u 대화방에 접속됨" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "복원(_R)" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "숨기기(_H)" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "깜빡임(_B)" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "대화방 메시지" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "개인 메시지" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "강조 메시지" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "상태 변경" + +#: src/fe-gtk/plugin-tray.c:602 +msgid "_Away" +msgstr "자리 비움" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "돌아옴(_B)" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat: 다음 사용자의 강조 메시지: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat: %u개의 메시지 알림. 마지막 사용자: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat: 새 공개 메시지: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat: %u개의 공개 메시지." + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat: 비공개 메시지: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "XChat: %u개의 비공개 메시지. 마지막 사용자: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat: 다음 사용자로부터 파일 전송: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "XChat: %u개의 파일 전송. 마지막 사용자: %s (%s)" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "버전" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "참고" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "읽을 추가 기능이나 혼잣말을 선택하십시오." + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: 추가 기능과 혼잣말" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "열기(_L)..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "사용 안 함(_U)" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "다른 이름으로 저장..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: 로그 (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "로그를 삭제합니다." + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "더 검색할 항목이 없습니다." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "검색 완료. 검색된 자료 없음." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: 검색" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "대/소문자 구분(_M)" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "뒤로 검색(_B)" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "찾기(_F)" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "새 네트워크" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "\"%s\" 네트워크를 정말 삭제하시겠습니까?" + +#: src/fe-gtk/servlistgui.c:740 +msgid "#channel" +msgstr "#채널" + +#: src/fe-gtk/servlistgui.c:850 +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: 즐겨 찾는 대화방 목록(자동 입장하는 대화방 목록)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "%s에 접속할 때마다 이 채널에 참여합니다." + +#: src/fe-gtk/servlistgui.c:906 +msgid "Key (Password)" +msgstr "키(암호)" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "편집(_E)" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "%s을(를) 제거하였습니다." + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "%s을(를) 추가하였습니다." + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "사용자 이름과 실제 이름은 공백으로 시작할 수 없습니다." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: %s 편집" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "서버: %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "선택된 서버만 접속" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "접속이 실패했을 때 모든 서버에 접속시도 하지 않음." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "자세한 내용" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "기본 사용자 정보를 사용합니다." + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "대화명(_N):" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "두번째 선택:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "사용자 이름(_U):" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "실제 이름(_L):" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "접속" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "시작시 자동 접속" + +#: src/fe-gtk/servlistgui.c:1462 +msgid "Bypass proxy server" +msgstr "프록시 서버 사용" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "이 네트워크의 모든 서버에 SSL 사용" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "유효하지 않은 인증서 허용" + +#: src/fe-gtk/servlistgui.c:1475 +msgid "_Favorite channels:" +msgstr "즐겨 찾는 대화방(_F):" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "" +"참여할 대화방. 쉼표(,)로 여러개의 대화방을 지정할 수 있으나 공백은 사용할 수 " +"없습니다." + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "접속 명령:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"접속 후에 사용될 기타 명령. 만약 한 가지 이상 명령을 사용하시려면, 이것을 " +"LOAD -e <파일 이름>으로 설정하십시오. <파일 이름>은 텍스트 파일로 실행할 모" +"든 명령을 입력해 두시면 됩니다." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Nickserv 암호:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"만약 당신의 대화명이 암호를 필요로 한다면 여기에 입력하십시오. 모든 IRC 네트" +"워크에서 지원하지는 않습니다." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "서버 암호:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "서버에 사용할 암호. 만약 필요하지 않다면 비워두십시오." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "문자세트:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: 네트워크 목록" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "사용자 정보" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "세번째 선택:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "네트워크" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "시작할 때 네트워크 목록 건너 뛰기" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "편집(_E)..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "정렬(_S)" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" +"가나다 순서로 네트워크 목록을 정렬합니다. SHIFT-UP이나 SHIFT-DOWN 키로 이동" +"할 수 있습니다." + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "접속(_O)" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "글월 상자 모양" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "글꼴:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "배경 이미지:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "스크롤할 줄 개수:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "대화명에 색상 사용" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "IRC의 각 사용자에게 다른 색상 사용" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "대화명 자동 완성" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "대화명을 오른쪽으로 정렬" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "투명한 배경 효과" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "구분선 표시" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "마지막으로 읽은 텍스트 뒤에 빨간색 줄 삽입." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "투명도 설정" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "적색:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "녹색:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "청색:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "시각 표시" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "시각 표시" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "표시할 시각 형태:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "자세한 내용은 strftime의 도움말을 보십시오." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "이름순" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "마지막으로 말한 사용자" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "입력창" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "입력 상자에 지정 글꼴과 색상 사용" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "맞춤법 확인" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "자동 구성에 추가할 문자:" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "TAB 키를 누르지 않고 자동 대화명 완성" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "자동 구성에 추가할 문자:" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "대화명 자동 완성 정렬:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "입력창 코드" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "%nnn을 아스키 값으로 해석" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "%C, %B는 색상, 진하게로 변환" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "이름순(관리자 먼저)" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "이름역순(관리자 나중)" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "이름역순" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "정렬 안 함" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "왼쪽(위)" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "왼쪽(아래)" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "오른쪽(위)" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "오른쪽(아래)" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "위" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "아래" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "숨김" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "사용자 목록" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "사용자 목록에 호스트 이름 표시" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "사용자 목록 정렬:" + +#: src/fe-gtk/setup.c:205 +msgid "Show user list at:" +msgstr "사용자 목록을 표시할 위치:" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "자리 비움 추적" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "자리 비움 상태인 사용자를 추적하여 다른 색상으로 표시합니다." + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "대화방의 자리 비움 상태가 다음보다 작을 때:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "더블 클릭시 동작" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "창" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "탭" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "자리 비움 사용자:" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "오직 요청된 탭만" + +#: src/fe-gtk/setup.c:242 +msgid "Tree" +msgstr "트리" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "서버/대화방 표시 형태:" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "서버 메시지를 탭으로 표시" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "서버 알림을 탭으로 표시" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "개인 메시지를 받으면 새 탭 열기" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "탭을 알파벳으로 정렬" + +#: src/fe-gtk/setup.c:254 +msgid "Smaller text" +msgstr "작은 글자 사용" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "새 탭에 포커스:" + +#: src/fe-gtk/setup.c:258 +msgid "Show channel switcher at:" +msgstr "서버/대화방을 표시할 위치:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "탭 제목 표시 제한:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "글자 이하로 표시" + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "창이나 탭" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "대화방:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "귓속말:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "도구:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "" +"DCC, 목록, 알림 등을 탭으로 열 것인지, 창으로 열 것인지를 선택하십시오." + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "아니오" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "예" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "파일과 디렉터리" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "자동으로 파일 전송을 허용할 사용자:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "다음 위치에 받은 파일 저장:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "다음 위치에 받기가 완료된 파일 이동:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "파일 이름에 대화명을 포함하여 저장" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "네트워크 설정" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "IRC 서버로부터 내 IP를 가져옵니다." + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"만약 당신이 가상 IP를 사용하고 있다면 \"/WHOIS 당신의대화명\"으로 당신의 실" +"제 주소를 찾게 됩니다. 일부 HanIRC에서 숨김 상태 서비스에서는 사용할 수 없습" +"니다." + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "DCC IP 주소:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "파일을 전송할 때 이 주소를 사용하게 됩니다." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "DCC 보내기에 사용할 처음 포트:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "DCC 보내기에 사용할 마지막 포트:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!전체 영역을 사용하려면 0으로 설정하십시오." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "최대 파일 전송 속도 (초당 Byte 전송 속도)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "개별 파일의 보내는 속도:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "보내기 파일 하나당 최대 속도" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "개별 파일의 받는 속도:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "모든 보내기를 합친 속도:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "전체 속도" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "모든 받기를 합친 속도:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "알림" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "알림 영역 풍선 표시:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "알림 영역 아이콘 깜빡거림:" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "작업 표시줄 깜빡거림:" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "비프음:" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "시스템 트레이 아이콘 사용" + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "강조 메시지" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "강조 메시지는 자기 대화명이 언급되는 메시지 및 다음 메시지입니다:" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "추가로 강조할 단어:" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "강조하지 않을 대화명:" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "항상 강조할 대화명:" + +#: src/fe-gtk/setup.c:347 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "여러 개 단어는 쉼표로 구분합니다. 와일드카드 사용도 가능합니다." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "기본 메시지" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "종료:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "대화방 나가기:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "자리 비움:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "자리 비움" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "자리 비움 메시지 알림" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "자리를 비울 때 참여 중인 모든 대화방에 메시지로 알립니다." + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "자리 비움 한 번만 표시" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "자리 비움 메시지를 한 번만 표시합니다." + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "자동으로 자리 비움 해제" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "대화를 시작하면 자동으로 자리 비움 상태를 해제합니다." + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "고급 설정" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "자동 접속 지연 시간:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "raw 폼에서 MODE를 표시함" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Whois에 알림" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "알림 목록에 사용자가 접속하면 /WHOIS 명령을 실행합니다." + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "입장/퇴장 메시지 숨김" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "기본적으로 대화방에 입장/퇴장 메시지를 숨깁니다." + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "자동으로 대화창 열기" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "파일 전송창" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "받기 창" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "대화방 창" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "기록" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "이전 세션에서 저장된 대화 내용 표시" + +#: src/fe-gtk/setup.c:387 +msgid "Enable logging of conversations to disk" +msgstr "대화 내용을 디스크에 저장" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "로그 파일 이름:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=서버 %c=대화방 %n=네트워크." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "로그에 시각 삽입" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "로그에 사용할 시각 형태:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(사용 안 함)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "윈게이트" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS 프록시(ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "모든 연결" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "IRC 서버 전용" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "DCC 받기 전용" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "IP 주소" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "바인딩할 주소:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "여러 개의 주소를 사용하는 컴퓨터에서만 사용합니다." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "프록시 서버" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "호스트:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "포트:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "형태:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "프록시 사용:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "프록시 인증" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "인증 사용(MS 프록시, HTTP 혹은 Socks5 전용)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "인증 사용(HTTP 혹은 Socks5 전용)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "사용자 이름:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "암호:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "이미지파일 선택" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "다운로드 디렉터리 선택" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "글꼴 선택" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "찾아보기..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "인증된 사용자를 다음으로 표시:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "인증되지 않은 사용자를 다음으로 표시:" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "데이터 디렉터리 열기" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "색상 선택" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "글자 색" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "mIRC 색:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "로컬 색:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "글자:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "배경:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "선택한 글월" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "사용자 환경 색상" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "새 데이터:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "이후 표시:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "새 메시지:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "자리 비움 사용자:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "강조:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "상황" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "소리 파일:" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "출력할 파일을 선택하세요." + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "소리 재생 방법:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "외부 소리 재생 프로그램(_P):" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "외부 도구(_E)" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "자동(_A)" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "소리 파일 위치(_D):" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "소리 파일:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "찾아보기(_B)..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "재생(_P)" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "사용자 환경" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "글월창" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "사용자 목록" + +#: src/fe-gtk/setup.c:1703 +msgid "Channel switcher" +msgstr "대화방 바꾸기" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "색상" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "대화" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "일반" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "소리" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "네트워크 설정" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "파일 전송" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "항목" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" +"위나 아래에는 트리를 위치 시킬 수 없습니다!\n" +"<b>보기</b>메뉴의 <b>탭</b> 레이아웃을 먼저 변경하십시오." + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "어떤 설정은 다시 시작해야 효과를 볼 수 있습니다." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*경고*\n" +"당신의 홈 디렉터리로 자동 받기를 할 경우 상당히 위험합니다.\n" +"예:\n" +"어떤 사용자가 당신에게 .bash_profile을 전송했을 때." + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: 기본 설정" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "글월 분석 오류" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "이 신호는 오직 %d 인수에서 동작됩니다. $%d은(는) 올바르지 않습니다." + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "문서 파일 출력" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "상황 편집" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ 숫자" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "읽어들이기, 위치..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "모두 시험" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "주소" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: URL 잡기 도구" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "목록 삭제" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "선택된 URL을 복사" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "복사" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "목록을 파일로 저장합니다" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d명의 관리자, 총 %d명" + +#~ msgid "About XChat" +#~ msgstr "XChat 정보" + +#, fuzzy +#~ msgid "Set _back" +#~ msgstr "뒤로 검색(_B)" + +#~ msgid "" +#~ "Set per channel options\n" +#~ "CHANOPT CONFMODE ON|OFF - Toggle conf mode/showing of join and part " +#~ "messages\n" +#~ "CHANOPT COLORPASTE ON|OFF - Toggle color paste\n" +#~ "CHANOPT BEEP ON|OFF - Toggle beep on message\n" +#~ "CHANOPT TRAY ON|OFF - Toggle tray blink on message" +#~ msgstr "" +#~ "대화방 별 설정\n" +#~ "CHANOPT CONFMODE ON|OFF - 입장과 퇴장 메시지 표시를 설정합니다\n" +#~ "CHANOPT COLORPASTE ON|OFF - 색상 상태를 설정합니다\n" +#~ "CHANOPT BEEP ON|OFF - 삑 소리 알림을 켜거나 끕니다.\n" +#~ "CHANOPT TRAY ON|OFF - 깜빡임 설정을 켜거나 끕니다." + +#~ msgid "Direct client-to-client" +#~ msgstr "직접 연결" + +#~ msgid "Send File" +#~ msgstr "파일 보내기" + +#~ msgid "Offer Chat" +#~ msgstr "대화" + +#~ msgid "Abort Chat" +#~ msgstr "대화 취소" + +#~ msgid "Userinfo" +#~ msgstr "사용자 정보" + +#~ msgid "Clientinfo" +#~ msgstr "클라이언트 정보" + +#~ msgid "Time" +#~ msgstr "시간" + +#~ msgid "Finger" +#~ msgstr "핑거" + +#~ msgid "Oper" +#~ msgstr "서버관리자" + +#~ msgid "Kill this user" +#~ msgstr "이 사용자 죽이기" + +#~ msgid "Mode" +#~ msgstr "상태" + +#~ msgid "Give Half-Ops" +#~ msgstr "제한된 관리 권한 주기" + +#~ msgid "Take Half-Ops" +#~ msgstr "제한된 관리 권한 박탈" + +#~ msgid "Ignore" +#~ msgstr "무시" + +#~ msgid "Ignore User" +#~ msgstr "사용자 무시" + +#~ msgid "UnIgnore User" +#~ msgstr "무시 해제" + +#~ msgid "Info" +#~ msgstr "정보" + +#~ msgid "Who" +#~ msgstr "누구" + +#~ msgid "DNS Lookup" +#~ msgstr "DNS 보기" + +#~ msgid "Trace" +#~ msgstr "추적" + +#~ msgid "UserHost" +#~ msgstr "호스트" + +#~ msgid "External" +#~ msgstr "외부 도구" + +#~ msgid "Traceroute" +#~ msgstr "경로추적" + +#~ msgid "Telnet" +#~ msgstr "텔넷" + +#~ msgid "Unban" +#~ msgstr "입장 금지해제" + +#~ msgid "Blink tray on message" +#~ msgstr "메시지에 알림 영역에서 깜빡이기" + +#~ msgid "Show join/part messages" +#~ msgstr "참여/퇴장 메시지 표시" + +#~ msgid "Color paste" +#~ msgstr "색상추출" + +#~ msgid "_Close Tab" +#~ msgstr "탭 닫기(_C)" + +#~ msgid "Channel List..." +#~ msgstr "대화방 목록..." + +#~ msgid "Notify List..." +#~ msgstr "알림 목록..." + +#~ msgid "_Close Window" +#~ msgstr "창 닫기(_C)" + +#~ msgid "User" +#~ msgstr "사용자" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: 알림 목록" + +#~ msgid "C_hannels to join:" +#~ msgstr "참여할 대화방(_H):" + +#~ msgid "Channel Switcher" +#~ msgstr "대화방 바꾸기" diff --git a/xchat-2.8.8/po/lt.gmo b/xchat-2.8.8/po/lt.gmo new file mode 100644 index 0000000000000000000000000000000000000000..5c1931081f3f6f675265c83ebf657bc658fe4542 GIT binary patch literal 38231 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 LL$!^^oc{a2h0-E* literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/po/lt.po b/xchat-2.8.8/po/lt.po new file mode 100644 index 0000000..087fd6a --- /dev/null +++ b/xchat-2.8.8/po/lt.po @@ -0,0 +1,6565 @@ +# Lithuanian translation of xchat +# Copyright (C) 2000 Free Software Foundation, Inc. +# This file is distributed under the same license as the xchat package. +# Gediminas Paulauskas <menesis@delfi.lt>, 2000. +# Vaidrius Petrauskas <vaidrius@delfi.lt>, 2005. +# Žygimantas Beručka <zygis@gnome.org>, 2006. +# Marius Gedminas <mgedmin@b4net.lt>, 2007. +# Gintautas Miliauskas <gintas@akl.lt>, 2007, 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.8.4\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2008-05-17 22:00+0300\n" +"Last-Translator: Gintautas Miliauskas <gintas@akl.lt>\n" +"Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Nepavyko sukurti ~/.xchat2 katalogo" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Užsiėmęs" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Išeinu" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* Labai neprotinga vykdyti IRC iš root'o! Susikurk\n" +" paprastą varotoją ir naudokis juo, jungdamasis.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Laukiu" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Aktyvus" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Nepavyko" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Baigtas" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Jungiuosi" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Nutrauktas" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "Negaliu pasiekti %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Klaida" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s siūlo „%s“. Ar norite priimti?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Nėra aktyvių DCC sesijų\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "TAIP " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "NE " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Jums %s siunčia daugybę CTCP pranešimų, %s ignoruojamas\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "" +"Jums %s siunčia daugybę MSG pranešimų, „gui_auto_open_dialog“ išjungiamas.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s yra online\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s yra offline\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Tu nesi jokiame kanale. Parašyk /join #<kanalas>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "" +"Tu nesi prisijungęs prie serverio. Parašyk /server <hostas> [<portas>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Jau įjungta nebuvimo veiksena: %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "Jau pažymėtas grįžimas.\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "Man reikia /bin/sh, kad galėčiau vykdytis!\n" + +#: src/common/outbound.c:2146 +#, fuzzy +msgid "Commands Available:" +msgstr "Prieinamos komandos:" + +#: src/common/outbound.c:2160 +#, fuzzy +msgid "User defined commands:" +msgstr "Naudotojo aprašytos komandos:" + +#: src/common/outbound.c:2176 +#, fuzzy +msgid "Plugin defined commands:" +msgstr "Vartotojo aprašytos komandos:" + +#: src/common/outbound.c:2187 +#, fuzzy +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "" +"\n" +"\n" +"Parašyk /HELP <komanda> kad gautum daugiau informacijos, arba /HELP -l\n" +"\n" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Nežinomas argumentas '%s' ignoruojamas." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "Toks įskiepis nerastas.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Šis įskiepis atsisako būti iškraunamas.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <vardas> <veiksmas> - prideda mygtuka po vartotojų sąrašu" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <komanda> - nusiunčia komandą į visus kanalus, kuriuose tu esi" + +#: src/common/outbound.c:3499 +#, fuzzy +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <komanda> - nusiunčia komandą į visus kanalus, kuriuose tu esi" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "" +"ALLSERV <komanda> - nusiunčia komandą visiems serveriams, prie kurių tu esi " +"prisijungęs" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<priežastis>] - įjungia būseną „Manęs nėra“" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <mask> [<bano tipas>] - išbanina iš esamo kanalo visus, kurių maskas " +"sutampa su nurodytu. Jei jie jau yra kanale, ši komanda neišspiria jų " +"(reikia OP statuso kanale)" + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "SET <kintamasis> [<reikšmė>]" + +#: src/common/outbound.c:3508 +#, fuzzy +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "CLEAR - išvalo esamą tekstinį langą" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE - uždaro esamą langą/kortelę" + +#: src/common/outbound.c:3512 +#, fuzzy +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY <kodas> - randa šalį pagal kodą, pvz.: lt = Lietuva" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <vartotojas> <žinutė> - nusiunčia CTCP žinutę vartotojui. Dažniausios " +"žinutės yra VERSION ir USERINFO" + +#: src/common/outbound.c:3516 +#, fuzzy +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "CYCLE - išeina iš aktyvaus kanalo ir iškarta į jį grįžtą" + +#: src/common/outbound.c:3518 +#, fuzzy +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <vartotojas> - gauna siūlomą bylą\n" +"DCC SEND <vartotojas> <failas> - siunčia bylą kitam asmeniui\n" +"DCC LIST - parodo DCC sesijų sąrašą\n" +"DCC CHAT <vartotojas> - pasiūlo kitam asmeniui DCC pokalbį\n" +"DCC CLOSE <tipas> <vatrtotojas> <failas> pavyzdys:\n" +" /dcc close send jonas byla.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <vartotojas> - panaikina kanalo pusiau-operatoriaus teises vartotojui " +"aktyviame kanale (reikia kanalo operatoriaus teisių)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <vardas> - ištrina mygtuką iš po vartotojo sąrašo" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <vartotojas> - panaikina kanalo operatoriaus teises vartotojui " +"aktyviame kanale (reikia kanalo operatoriaus teisių)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <vartotojas> - panaikina balso teisę vartotojui aktyviame kanale " +"(reikia kanalo operatoriaus teisių)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON - atjungia nuo serverio" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <varototojas|hostas|ip> - randa vartotojo IP adresą" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <tekstas> - lokaliai atspausdina tekstą" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <komanda> - įvykdo komandą. Tuo atveju, jei nurodomas -o " +"parametras, komandos grąžinamas tekstas bus nusiųstas į aktyvų kanalą, kitu " +"atveju jis nusiunčiamas į aktyvų langą." + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT - nusiunčia procesui SIGCONT signalą" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9] - nutraukia aktyvioje sesijoje vykdomą komandą. Jei nurodomas " +"parametras -9, procesui bus nusiųstas SIGKILL signalas" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP - nusiunčia procesui SIGSTOP signalą" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE - nusiunčia duomenis proceso stdin įrenginiui" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHHQ - panaikina aktyvaus serverio siuntimo laukiančių duomenų eilę" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" +"GATE <hostas> [<portas>] - jungiasi per proxy serverį. Nutylimas portas - 23" + +#: src/common/outbound.c:3560 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" +"HOP <vartotojas> - suteikia vartotojui kanalo pusiau-operatoriaus teises " +"(reikia kanalo operatoriaus teisių)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <slaptažodis> - identifikuoja Jus nickservui" + +#: src/common/outbound.c:3568 +#, fuzzy +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <mask> <tipai..> <parametrai..>\n" +" mask - maskas, kuris bus ignoruojamas, pvz: *!*@*.takas.lt\n" +" tipai - ignoruotini duomenų tipai, vienas ar keli iš šių:\n" +" PRIV, CHAN, NOTI, CTCP, INVI, ALL\n" +" parametrai - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <vartotojas> [<kanalas>] - pakviečia varotoją į kanalą. Nutylimasis - " +"aktyvus kanalas (reikia kanalo operatoriaus teisių)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <kanalas> - prisijungia prie kanalo" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <vartotojas> - išspiria varotoją iš aktyvaus kanalo (reikia kanalo " +"operatoriaus teisių)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <vartotojas> - išbanina ir išspiria vartotoją iš aktyvaus kanalo " +"(reikia kanalo operatoriaus teisių)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK - iššaukia naują užlaikymo patikrinimą" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <tekstas> - ieško duotojo teksto buferyje" + +#: src/common/outbound.c:3587 +#, fuzzy +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD <failas> - įkrauna įskiepį ar skriptą..." + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP - atima kanalo pusiau-operatoriaus teises iš visų aktyviame kanale " +"jas turinčių (reikia kanalo operatoriaus teisių)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP - atima kanalo operatoriaus teises iš visų aktyviame kanale jas " +"turinčių (reikia kanalo operatoriaus teisių)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <veiksmas> - nusiunčia veiksmą į aktyvų kanalą (veiksmai rašomi trečiuoju " +"asmeniu, pvz., /me pašoka)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK - išspiria iš aktyvaus kanalo visus išskyrus tave (reikia kanalo " +"operatoriaus teisių)" + +#: src/common/outbound.c:3601 +#, fuzzy +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MDEOP - atima kanalo operatoriaus teises iš visų aktyviame kanale jas " +"turinčių (reikia kanalo operatoriaus teisių)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <vartotojas> <žinutė> - nusiunčia privačią žinutę" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES - išvardina visus vartotojus esamame kanale" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <vartotojas> <žinutė> - nuciunčia vartotojui CTCP pastebėjimą" + +#: src/common/outbound.c:3608 +#, fuzzy +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER <serveris> [<portas>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <vardas> - pakeicčia tavo vartotojo vardą" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <vartotojas/kanalas> <žinutė> - nusiunčia pastabą. Pastabos - tai " +"žinutės, į kurias turėtų būti reaguojama automatiškai" + +#: src/common/outbound.c:3614 +#, fuzzy +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [<vartotojas>] - išvardina tavo stebimų vartotojų sąrašą arba prideda/" +"išbraukia iš jo vartotoją" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" +"OP <vartotojas> - suteikia vartotojui kanalo operatoriaus teises (reikia jas " +"turėti pačiam)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" +"PART [<kanalas>] [<priežastis>] - palieka kanalą, pagal nutylėjimą - aktyvųjį" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "" +"PING <vartotojas | kanalas> - nusiunčia vartotojui arba kanalui CTCP PING " +"signalą" + +#: src/common/outbound.c:3622 +#, fuzzy +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "QUERY <vartotojas> - atidaro privačių žinučių su vartotoju langą" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<priežastis>] - atsijungia nuo aktyvaus serverio" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <tekstas> - nusiunčia neformatuotą tekstą serveriui" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<serveris>] [<portas>] [<slaptažodis>] - gali būti " +"iškviečiamas paprasčiausiai komandos /RECONNECT pagalba, kad iš naujo " +"prisijungti prie aktyvaus serverio arba /RECONNECT ALL, kad iš naujo " +"prisijungti prie visų atvirų serverių" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<serveris>] [<portas>] [<slaptažodis>] - gali būti iškviečiamas " +"paprasčiausiai komandos /RECONNECT pagalba, kad iš naujo prisijungti prie " +"aktyvaus serverio arba /RECONNECT ALL, kad iš naujo prisijungti prie visų " +"atvirų serverių" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <tekstas> - nusiunčia neformatuotą tekstą xchat programai, lyg ji jį " +"būtų gavusi iš irc serverio" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <tekstas> - nusiunčia tekstą objektui aktyviame lange" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <slapyvardis> [<failas>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <serveris> <portas> <kanalas> - prisijungia ir įeina į kanalą" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <serveris> <portas> <kanalas> - prisijungia ir įeina į kanalą" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <serveris> [<portas>] [<slaptažodis>] - prisijungia prie " +"serverio, nutylimasis portas yra 6667 paprastiems prisijungimams ir 9999 - " +"prisijungimams su ssl" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <serveris> [<portas>] [<slaptažodis>] - prisijungia prie serverio, " +"nutylimasis portas yra 6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET <kintamasis> [<reikšmė>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<pozicija>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<tema>] - nustato kanalo temą, jei ji duota, arba parodo esamą temą" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <mask> [<mask>...] - nuima baną nurodytiems maskams" + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <mask> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <vardas> - iškrauna įskiepį ar skriptą" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <adresas> - atverti adresą naršyklėje" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <slapyvardis1> <slapyvardis2> ir t.t. - paryškinti " +"slapyvardį(ius) kanalo naudotojų sąraše" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "" +"VOICE <vartotojas> - suteikia vartotojuio balso teisę (reikia kanalo " +"operatoriaus teisių)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <žinutė> - nusiunčia žinutę visiems kanalams" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <žinutė> - nusiunčia žinutę visiems aktyvaus kanalo operatoriams" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Naudojimas: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"Nėra pagalbos įrašo apie šią komandą.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Nėra tokios komandos.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Blogi argumentai vartotojo apibrėžtai komandai.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Per daug rekursiškai vykdomų vartotojo komandų, vykdymas nutraukiamas." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Nežinoma komanda. Bandyk /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "Nerastas xchat_plugin_init simbolis. Ar tai tikrai xchat įskiepis?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Ar tai tikrai SSL šifravimą palaikantis serveris ir prievadas?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Negaliu iššifruoti serverio vardo: %s\n" +"Patikrink savo IP nustatymus!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Proxy jungimasis nepavyko.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Bandomas kitas tinklo „%s“ serveris...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Dėmesio: „%s“ koduotė nežinoma. Konvertavimas tinkle „%s“ nebus vykdomas." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "" + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "" + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "" + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "" + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tGautas CTCP „Sound“ $1 iš $2 (į $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "" + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "" + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "" + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 Tipas Į/Iš Būklą— Dydis Pozicija Failas " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O.%010%C22*%O" +"$tContents of packet: $2" +msgstr "" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "" + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "" + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "" + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "" + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "" + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "" + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "" + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "" + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "" + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "" + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "" + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "" + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "" + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 Formatas PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "" + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " Ignoravimo są…rašas tušąias." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "" + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "" + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "" + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "" + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "" + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "" + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Stebyklą— " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "" + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "" + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "" + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "" + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "" + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "" + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "" + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "" + +#: src/common/text.c:347 +#, fuzzy +msgid "Loaded log from" +msgstr "Įkelti" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** ŽURNALO VEDIMAS NUTRAUKTAS %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** ŽURNALO VEDIMAS NUTRAUKTAS %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Nepavyko atverti žurnalo failo (-ų) rašymui.\n" +" Patikrinkite „%s/xchatlogs“ leidimus" + +#: src/common/text.c:961 +#, fuzzy +msgid "Left message" +msgstr "Žinutė" + +#: src/common/text.c:962 +#, fuzzy +msgid "Right message" +msgstr "Žinutė" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "Prisijungiančio vartotojo vardas" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "Kanalas, prie kurio jungiamasi" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "Vartotojo kompiuteris" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Vartotojo vardas" + +#: src/common/text.c:973 +msgid "The action" +msgstr "Veiksmas" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Statuso simbolis" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +#, fuzzy +msgid "Identified text" +msgstr "Info" + +#: src/common/text.c:980 +msgid "The text" +msgstr "Tekstas" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Žinutė" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Senas vartotojo vardas" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Naujas vartotojo vardas" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Vartotojo, pakeitusio temą, vardas" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Tema" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Kanalas" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "Išspyręs vartotojas" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "Išsipirtas vartotojas" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "Kanalas" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "Priežastis" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "Paliekančiojo kanalą vartotojo vardas" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "Laikas" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "Kūrėjas" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Vartotojo vardas" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Priežastis" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Adresas" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "Nuo ko tai" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "Laikas x.x formatu (žr. žemiau)" + +#: src/common/text.c:1049 src/common/text.c:1086 +#, fuzzy +msgid "The Channel it's going to" +msgstr "Kanalų sąrašo langas..." + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "Garsas" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "Asmens slapyvardis" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "CTCP įvykis" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "Nustačiusio raktą slapyvardis" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "Raktas" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "Nustačiusio limitą, slapyvardis" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "Limitas" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "Davusiojo opą slapyvardis" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "Gavusiojo opą slapyvardis" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "Gavusiojo halfopą slapyvardis" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "Davusiojo halfopą slapyvardis" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "Davusiojo balsą slapyvardis" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "Gavusiojo balsą slapyvardis" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "Uždraudusiojo slapyvardis" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "Draudimo formatas" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "Nuėmusiojo raktą slapyvardis" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "Nuėmusiojo limitą slapyvardis" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "Nuėmusiojo opą slapyvardis" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "Netekusiojo opo slapyvardis" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "Nuėmusiojo halfopą slapyvardis" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Netekusiojo halfopo slapyvardis" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "Nuėmusiojo balsą slapyvardis" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "Netekusiojo balso slapyvardis" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "Pašalinusiojo draudimą slapyvardis" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "Padariusiojo išimtį draudimui slapyvardis" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "Išimties draudimui formatas" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "Pašalinusiojo išimtį draudimui slapyvardis" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "Pakvietusiojo slapyvardis" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "Kvietimo formatas" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "Atšaukusiojo kvietimą slapyvardis" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "Nustačiusiojo režimą slapyvardis" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "Režimo ženklas (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "Režimo raidė" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "Kanalas, kuriame jis nustatomas" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Naudotojo vardas" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Tikrasis vardas" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Kanalo narys/IRC operatorius" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Serverio informacija" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Neveiklumo laikas" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Prisijungimo laikas" + +#: src/common/text.c:1203 +#, fuzzy +msgid "Away reason" +msgstr "Nebūties priežastis:" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +#, fuzzy +msgid "Message" +msgstr "Pabaigos žinutė:" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Paskyra..." + +#: src/common/text.c:1224 +#, fuzzy +msgid "Real user@host" +msgstr "Rodyti vartotojo hostą" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "Tikras IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +#, fuzzy +msgid "Channel Name" +msgstr "Kanalų kortelės" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Tekstas" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +#, fuzzy +msgid "Server Name" +msgstr "Proxy serverio hosto vardas:" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Pakvietusio Jus slapyvardis" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +#, fuzzy +msgid "Users" +msgstr "Vartotojų sąrašas" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Slapyvardis užimtas" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Bandomas slapyvardis" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Prievadas" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Tinklas" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Veiksenų eilutė" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "IP adresas" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "DCC tipas" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Failo vardas" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Paskirties failo pavad." + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "greitis" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Kelias" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +#, fuzzy +msgid "Position" +msgstr "Lango vieta" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Dydis" + +#: src/common/text.c:1385 +#, fuzzy +msgid "DCC String" +msgstr "DCC Nuostatos" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Stebimųjų skaičius" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Ankstesnysis failo pavad." + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Naujasis failo pavad." + +#: src/common/text.c:1411 +#, fuzzy +msgid "Receiver" +msgstr "Gautos bylos" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Adreso formatas" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Adresas" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "Paketas" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "sekundžių" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Pakviestojo slapyvardis" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Draudimo formatas" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Uždraudusysis" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Draudimo laikas" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Klaida apdorojant įvykį „%s“.\n" +"Įkeliamas numatytasis." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"Nepavyko perskaityti garso failo:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "Serveris nutraukė ryšį" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Jungimasis atmestas" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Maršrutas nerastas" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Nepavyko priskirti šio adreso" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Jungimasis nutrūko" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Dangun žengimo sala" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Andora" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Jungtiniai Arabų Emyratai" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Afganistanas" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Antigva ir Barbuda" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Angilija" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Albanija" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Armėnija" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Olandijos Antilai" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Antraktida" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Argentina" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "Atvirkštinis DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Rytų Samoa" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Autrija" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Australija" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Alando salos" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Azerbaidžanas" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Bosnija ir Hercegovina" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Barbadosas" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Bangladešas" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Belgija" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Burkina Fasas" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Bulgarija" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Bahreinas" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Burundis" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Verslo" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Beninas" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Bermudos" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Brunėjus" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Bolivija" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Brazilija" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Bahamos" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Butanas" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Buvė sala" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Botsvana" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Gudija" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Belizas" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Kanada" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Kokosų salos" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "Demokratinė Kongo respublika" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "Centrinės Afrikos respublika" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Kongas" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Šveicarija" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Dramblio Kaulo Krantas" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Kuko salos" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Čilė" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Kamerūnas" + +#: src/common/util.c:898 +msgid "China" +msgstr "Kinija" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Kolumbija" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Komercinė įstaiga" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Kosta Rika" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Serbija ir Juodkalnija" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Kuba" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Žaliojo Kyšulio salos" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Kalėdų sala" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Kipras" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "Čekija" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Vokietija" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Džibutis" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Danija" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Dominika" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "Dominikana" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Alžyras" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Ekvadoras" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Švietimo įstaiga" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Estija" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Egiptas" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Vakarų Sachara" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Eritrėja" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Ispanija" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Etiopija" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Europos Sąjunga" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Suomija" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Fidžis" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Folklando salos" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Mikronezija" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Farerų salos" + +#: src/common/util.c:928 +msgid "France" +msgstr "Prancūzija" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Gabonas" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Didžioji Britanija" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Gruzija" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Prancūzijos Gviana" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Normanų salos" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Gana" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Gibraltaras" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Grenlandija" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Gambija" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Gvinėja" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Vyriausybinė institucija" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Gvadelupė" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Pusiaujo Gvinėja" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Graikija" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Pietų Georgijos ir Pietų Sandvičo salos" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Gvatemala" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Guamas" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Bisau Gvinėja" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Gajana" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Honkongas" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Herdo ir Makdonaldo salos" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Hondūras" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Kroatija" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Haitis" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Vengrija" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Indonezija" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Airija" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Izraelis" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Meno sala" + +#: src/common/util.c:959 +msgid "India" +msgstr "Indija" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Informacinis" + +#: src/common/util.c:961 +msgid "International" +msgstr "Tarptautinis" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Britų teritorija Indijos vandenyne" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Irakas" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Iranas" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Islandija" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Italija" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Džersis" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Jamaika" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Jordanija" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Japonija" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Kenija" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Kirgizija" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Kambodža" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Kiribatis" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Kanarų salos" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "Sent Kitsas ir Nevis" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Šiaurės Korėja" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Pietų Korėja" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Kuveitas" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Kaimanų salos" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Kazachstanas" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Laosas" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Libanas" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Sent Lusija" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Lichtenšteinas" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Šri Lanka" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Liberija" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Lesotas" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Lietuva" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Liuksemburgas" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Latvija" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Libija" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Morokas" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Monakas" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Moldavija" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "JAV medicinos įstaiga" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Madagaskaras" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Maršalo salos" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Karinė institucija" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Makedonija" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Malis" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Birma" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Mongolija" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Makau" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Šiaurinės Marianų salos" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Martinika" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Mauritanija" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Monseratas" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Mauricijus" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Maldyvai" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Malavis" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Meksika" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Malaizija" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Mozambikas" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Namibija" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Naujoji Kaledonija" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Nigeris" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Tinklo įstaiga" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Norfolko sala" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Nigerija" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Nikaragva" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Olandija" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Norvegija" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Nepalas" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Niujė" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Naujoji Zelandija" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Omanas" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Ne pelno įstaiga" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Prancūzijos Polinezija" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Papua Naujoji Gvinėja" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Filipinai" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Pakistanas" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Lenkija" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "Sent Pjeras ir Mikelonai" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Pitkerno salos" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Puerto Rikas" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Palestinos teritorija" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Portugalija" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Paragvajus" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Kataras" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Rejunjonas" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Rumunija" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "Senasis ARPAnetas" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Rusijos federacija" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Ruanda" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Saudo Arabija" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Saliamono salos" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Seišeliai" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Sudanas" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Švedija" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Singapūras" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "Šv. Elenos kolonija" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Slovėnija" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbardo ir Jano Majaus salos" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Slovakija" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Siera Leonė" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "San Marinas" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Senegalas" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Somalis" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Surinamas" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "San Tomė ir Prinsipė" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Buvusi SSRS" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "Salvadoras" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Sirija" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Svazilandas" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Turkso ir Kaikoso salos" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Čadas" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Indijos vandenyno pietų teritorijos" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Togas" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Tailandas" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Tadžikija" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Rytų Timoras" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Turkmėnija" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Tunisas" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Turkija" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Trinidadas ir Tobagas" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Taivanas" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Tanzanija" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Ukraina" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Jungtinė Karalystė" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "Jungtinės Amerikos Valstijos" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Urugvajus" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Uzbekistanas" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Vatikanas" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "Sent Vinsentas ir Grenadinos" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Venesuela" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Mergelės salos (D. Brit.)" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "Mergelės salos (JAV)" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Vietnamas" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Valiso ir Futunos salos" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Jemenas" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Majota" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Jugoslavija" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Pietų Afrika" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Zambija" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Zimbabvė" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Nežinoma" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "Savaime atidaryti dialogų langus" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "Siųsti failą" + +#: src/common/xchat.c:728 +#, fuzzy +msgid "_User Info (WhoIs)" +msgstr "Naudotojo informacija (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +#, fuzzy +msgid "O_perator Actions" +msgstr "Operatoriaus veiksmai" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Suteikti operatoriaus statusą" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Pašalinti operatoriaus statusą" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Suteikti balsą" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Pašalinti balsą" + +#: src/common/xchat.c:737 +#, fuzzy +msgid "Kick/Ban" +msgstr "Vartotojo vardas" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +#, fuzzy +msgid "Kick" +msgstr "Vartotojo vardas" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +#, fuzzy +msgid "Ban" +msgstr "Mygtukai" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +#, fuzzy +msgid "KickBan" +msgstr "Vartotojo vardas" + +#: src/common/xchat.c:757 +#, fuzzy +msgid "Leave Channel" +msgstr "Kanalas" + +#: src/common/xchat.c:758 +#, fuzzy +msgid "Join Channel..." +msgstr "Nauja kanalo kortelė..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +#, fuzzy +msgid "Enter Channel to Join:" +msgstr "Kanalų sąrašo langas..." + +#: src/common/xchat.c:760 +#, fuzzy +msgid "Server Links" +msgstr "Serverių sąrašas..." + +#: src/common/xchat.c:761 +#, fuzzy +msgid "Ping Server" +msgstr "Proxy serveris" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Paslėpti versiją" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Duoti opą" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "Pašalinti opą" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "iki" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Įveskite %s išmetimo priežastį:" + +#: src/common/xchat.c:778 +#, fuzzy +msgid "Sendfile" +msgstr "Garsų katalogas:" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Dialogas" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "„WhoIs“" + +#: src/common/xchat.c:789 +#, fuzzy +msgid "Send" +msgstr "Garsas" + +#: src/common/xchat.c:790 +#, fuzzy +msgid "Chat" +msgstr "X-Chat" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Išvalyti" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "„Ping“" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "Nepavyko prisijungti prie sesijos magistralės" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:30 +#, fuzzy +msgid "remote access" +msgstr "Negaliu pasiekti %s\n" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "įskiepis nuotoliniam priėjimui per DBUS" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Nepavyko prisijungti prie sesijos magistralės: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Nepavyko gauti %s: %s\n" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "Apie X-Chat..." + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Simbolių lentelė" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +#, fuzzy +msgid "Not connected." +msgstr "Atsijungta." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "" + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Šablonas" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "Nuo" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Data" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" + +#: src/fe-gtk/banlist.c:391 +#, fuzzy, c-format +msgid "XChat: Ban List (%s)" +msgstr "Vartotojų sąrašo mygtukai..." + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Atnaujinti" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "" + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +#, fuzzy +msgid "_Join Channel" +msgstr "Nauja kanalo kortelė..." + +#: src/fe-gtk/chanlist.c:633 +#, fuzzy +msgid "_Copy Channel Name" +msgstr "Kanalų kortelės" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "" + +#: src/fe-gtk/chanlist.c:724 +#, fuzzy, c-format +msgid "XChat: Channel List (%s)" +msgstr "Vartotojų sąrašo mygtukai..." + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:787 +#, fuzzy +msgid "_Download List" +msgstr "Garsų katalogas:" + +#: src/fe-gtk/chanlist.c:793 +#, fuzzy +msgid "Save _List..." +msgstr "Serverių sąrašas..." + +#: src/fe-gtk/chanlist.c:806 +#, fuzzy +msgid "Show only:" +msgstr "Rodyti niką" + +#: src/fe-gtk/chanlist.c:818 +#, fuzzy +msgid "channels with" +msgstr "Kanalų kortelės" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:843 +#, fuzzy +msgid "users." +msgstr "Vartotojų sąrašas" + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:861 +#, fuzzy +msgid "Channel name" +msgstr "Kanalų kortelės" + +#: src/fe-gtk/chanlist.c:882 +#, fuzzy +msgid "Search type:" +msgstr "_Paieška buferyje..." + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +#, fuzzy +msgid "Find:" +msgstr "Šriftas:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "" + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "" + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Būsena" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Failas" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +#, fuzzy +msgid "Both" +msgstr "Apačioje" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Išsiuntimai" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "Parsiuntimai" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Detalės" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Failas:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "Adresas:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Nutraukti" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Priimti" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Pratęsti" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Atverti aplanką..." + +#: src/fe-gtk/dccgui.c:990 +#, fuzzy +msgid "XChat: DCC Chat List" +msgstr "Vartotojų sąrašo mygtukai..." + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Pavadinimas" + +#: src/fe-gtk/editlist.c:311 +#, fuzzy +msgid "Command" +msgstr "Grojimo komanda:" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Atšaukti" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Pagalba" + +#: src/fe-gtk/fe-gtk.c:124 +#, fuzzy +msgid "Don't auto connect to servers" +msgstr "Savaime vėl prisijungti prie serverio" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +#, fuzzy +msgid "Execute command:" +msgstr "Pranešimas:" + +#: src/fe-gtk/fe-gtk.c:132 +msgid "Open URL or execute command in an existing XChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Rodyti versijos informaciją" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:634 +#, fuzzy +msgid "Search buffer is empty.\n" +msgstr "_Paieška buferyje..." + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<joks>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Klavišas" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "" + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "" + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "" + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +#, fuzzy +msgid "Invite" +msgstr "Nematomas" + +#: src/fe-gtk/ignoregui.c:180 +#, fuzzy +msgid "Unignore" +msgstr "Nerikiuotas" + +#: src/fe-gtk/ignoregui.c:306 +#, fuzzy +msgid "Enter mask to ignore:" +msgstr "Kanalų sąrašo langas..." + +#: src/fe-gtk/ignoregui.c:353 +#, fuzzy +msgid "XChat: Ignore list" +msgstr "Serverių sąrašas..." + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:368 +#, fuzzy +msgid "Channel:" +msgstr "Atšaukti" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:371 +#, fuzzy +msgid "CTCP:" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:372 +#, fuzzy +msgid "Invite:" +msgstr "Nematomas" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +#, fuzzy +msgid "Add..." +msgstr "Adresas" + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "" + +#: src/fe-gtk/joind.c:125 +#, fuzzy +msgid "XChat: Connection Complete" +msgstr "Pranešimas:" + +#: src/fe-gtk/joind.c:150 +#, fuzzy, c-format +msgid "Connection to %s complete." +msgstr "Pranešimas:" + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "" + +#: src/fe-gtk/joind.c:179 +#, fuzzy +msgid "_Join this channel:" +msgstr "Nauja kanalo kortelė..." + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" + +#: src/fe-gtk/joind.c:198 +#, fuzzy +msgid "O_pen the Channel-List window." +msgstr "Kanalų kortelės" + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "" + +#: src/fe-gtk/maingui.c:504 +#, fuzzy +msgid "Dialog with" +msgstr "Dialogų langai" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "Užverti XChat?" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "Kitą kartą neklausti." + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Esate prisijungę prie %i IRC tinklų." + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "Ar tikrai norite išeiti?" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "Yra aktyvių failų siuntimų." + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "_Mažinti į dėklę" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "" + +#: src/fe-gtk/maingui.c:1557 +#, fuzzy +msgid "Normal" +msgstr "Nėra" + +#: src/fe-gtk/maingui.c:1559 +#, fuzzy +msgid "Colors 0-7" +msgstr "Uždaryti" + +#: src/fe-gtk/maingui.c:1569 +#, fuzzy +msgid "Colors 8-15" +msgstr "Uždaryti" + +#: src/fe-gtk/maingui.c:1612 +msgid "_Settings" +msgstr "_Nuostatos" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "Pyptelėti, gavus asmeninę žinutę" + +#: src/fe-gtk/maingui.c:1625 +msgid "_Extra Alerts" +msgstr "" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "Pyptelėti, gavus asmeninę žinutę" + +#: src/fe-gtk/maingui.c:1628 +#, fuzzy +msgid "Blink Tray _Icon" +msgstr "Pyptelėti, gavus asmeninę žinutę" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +msgid "_Detach" +msgstr "" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "_Užverti" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "" + +#: src/fe-gtk/maingui.c:2141 +#, fuzzy +msgid "Ban List" +msgstr "Kanalų sąrašo langas..." + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "" + +#: src/fe-gtk/maingui.c:2155 +#, fuzzy +msgid "User Limit" +msgstr "Vartotojų sąrašas" + +#: src/fe-gtk/maingui.c:2264 +#, fuzzy +msgid "Show/Hide userlist" +msgstr "Rodyti vartotojo hostą" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" + +#: src/fe-gtk/maingui.c:2660 +#, fuzzy +msgid "Enter new nickname:" +msgstr "Rodyti niką" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +#, fuzzy +msgid "Real Name:" +msgstr "Kanalų kortelės" + +#: src/fe-gtk/menu.c:632 +#, fuzzy +msgid "User:" +msgstr "Vartotojo meniu" + +#: src/fe-gtk/menu.c:639 +#, fuzzy +msgid "Country:" +msgstr "Šriftas:" + +#: src/fe-gtk/menu.c:646 +#, fuzzy +msgid "Server:" +msgstr "Proxy serveris" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "" + +#: src/fe-gtk/menu.c:672 +#, fuzzy +msgid "Away Msg:" +msgstr "Nebūties priežastis:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1013 +#, fuzzy +msgid "Cycle Channel" +msgstr "Nauja kanalo kortelė..." + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +#, fuzzy +msgid "XChat: User menu" +msgstr "X-Chat: Nuostatos" + +#: src/fe-gtk/menu.c:1079 +#, fuzzy +msgid "Edit This Menu..." +msgstr "Keisti vartotojo meniu..." + +#: src/fe-gtk/menu.c:1280 +#, fuzzy +msgid "Retrieve channel list..." +msgstr "Kanalų sąrašo langas..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" + +#: src/fe-gtk/menu.c:1404 +#, fuzzy +msgid "XChat: User Defined Commands" +msgstr "" +"Vartotojo aprašytos komandos:\n" +"\n" +" " + +#: src/fe-gtk/menu.c:1411 +#, fuzzy +msgid "XChat: Userlist Popup menu" +msgstr "X-Chat: Nuostatos" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "" + +#: src/fe-gtk/menu.c:1418 +#, fuzzy +msgid "XChat: Replace" +msgstr "X-Chat: Nuostatos" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1444 +#, fuzzy +msgid "XChat: Userlist buttons" +msgstr "Vartotojų sąrašo mygtukai..." + +#: src/fe-gtk/menu.c:1451 +#, fuzzy +msgid "XChat: Dialog buttons" +msgstr "Vartotojų sąrašo mygtukai..." + +#: src/fe-gtk/menu.c:1458 +#, fuzzy +msgid "XChat: CTCP Replies" +msgstr "CTCP atsakymai..." + +#: src/fe-gtk/menu.c:1564 +#, fuzzy +msgid "_XChat" +msgstr "_X-Chat" + +#: src/fe-gtk/menu.c:1565 +#, fuzzy +msgid "Network Li_st..." +msgstr "Notify sąrašo langas..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "" + +#: src/fe-gtk/menu.c:1569 +#, fuzzy +msgid "Server Tab..." +msgstr "Nauja serverio kortelė..." + +#: src/fe-gtk/menu.c:1570 +#, fuzzy +msgid "Channel Tab..." +msgstr "Nauja kanalo kortelė..." + +#: src/fe-gtk/menu.c:1571 +#, fuzzy +msgid "Server Window..." +msgstr "Naujas serverio langas..." + +#: src/fe-gtk/menu.c:1572 +#, fuzzy +msgid "Channel Window..." +msgstr "Naujas kanalo langas..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +#, fuzzy +msgid "_Load Plugin or Script..." +msgstr "Įkelti Perl skriptą..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +#, fuzzy +msgid "_Quit" +msgstr "Išeiti" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "_Rodyti" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1592 +#, fuzzy +msgid "_Topic Bar" +msgstr "Tema" + +#: src/fe-gtk/menu.c:1593 +#, fuzzy +msgid "_User List" +msgstr "Vartotojų sąrašas" + +#: src/fe-gtk/menu.c:1594 +#, fuzzy +msgid "U_serlist Buttons" +msgstr "Vartotojų sąrašo mygtukai..." + +#: src/fe-gtk/menu.c:1595 +#, fuzzy +msgid "M_ode Buttons" +msgstr "Kanalo būdo mygtukai" + +#: src/fe-gtk/menu.c:1597 +#, fuzzy +msgid "_Channel Switcher" +msgstr "Kanalų sąrašo langas..." + +#: src/fe-gtk/menu.c:1599 +#, fuzzy +msgid "_Tabs" +msgstr "Kortelės" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "" + +#: src/fe-gtk/menu.c:1610 +#, fuzzy +msgid "_Server" +msgstr "Proxy serveris" + +#: src/fe-gtk/menu.c:1611 +#, fuzzy +msgid "_Disconnect" +msgstr "Jungiuosi" + +#: src/fe-gtk/menu.c:1612 +#, fuzzy +msgid "_Reconnect" +msgstr "Jungiuosi" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "Nauja kanalo kortelė..." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "Nauja kanalo kortelė..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Manęs nėra" + +#: src/fe-gtk/menu.c:1619 +#, fuzzy +msgid "_Usermenu" +msgstr "Vartotojo meniu" + +#: src/fe-gtk/menu.c:1621 +#, fuzzy +msgid "S_ettings" +msgstr "Nuostatos" + +#: src/fe-gtk/menu.c:1622 +#, fuzzy +msgid "_Preferences" +msgstr "X-Chat: Nuostatos" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "" + +#: src/fe-gtk/menu.c:1625 +#, fuzzy +msgid "Auto Replace..." +msgstr "Pakeisti..." + +#: src/fe-gtk/menu.c:1626 +#, fuzzy +msgid "CTCP Replies..." +msgstr "CTCP atsakymai..." + +#: src/fe-gtk/menu.c:1627 +#, fuzzy +msgid "Dialog Buttons..." +msgstr "Vartotojų sąrašo mygtukai..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "" + +#: src/fe-gtk/menu.c:1629 +#, fuzzy +msgid "Text Events..." +msgstr "Keisti įvykių užrašus..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "" + +#: src/fe-gtk/menu.c:1631 +#, fuzzy +msgid "User Commands..." +msgstr "Vartotojo komandos..." + +#: src/fe-gtk/menu.c:1632 +#, fuzzy +msgid "Userlist Buttons..." +msgstr "Vartotojų sąrašo mygtukai..." + +#: src/fe-gtk/menu.c:1633 +#, fuzzy +msgid "Userlist Popup..." +msgstr "Vartotojų sąrašo mygtukai..." + +#: src/fe-gtk/menu.c:1636 +#, fuzzy +msgid "_Window" +msgstr "_Langai" + +#: src/fe-gtk/menu.c:1637 +#, fuzzy +msgid "Ban List..." +msgstr "Kanalų sąrašo langas..." + +#: src/fe-gtk/menu.c:1638 +#, fuzzy +msgid "Character Chart..." +msgstr "Simbolių aibė" + +#: src/fe-gtk/menu.c:1639 +#, fuzzy +msgid "Direct Chat..." +msgstr "DCC pokalbio langas..." + +#: src/fe-gtk/menu.c:1640 +#, fuzzy +msgid "File Transfers..." +msgstr "Bylų siuntimas" + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "Kanalų sąrašo langas..." + +#: src/fe-gtk/menu.c:1642 +#, fuzzy +msgid "Ignore List..." +msgstr "Ignoravimo langas..." + +#: src/fe-gtk/menu.c:1643 +#, fuzzy +msgid "Plugins and Scripts..." +msgstr "Priedų sąrašas" + +#: src/fe-gtk/menu.c:1644 +#, fuzzy +msgid "Raw Log..." +msgstr "Ryšio Log langas..." + +#: src/fe-gtk/menu.c:1645 +#, fuzzy +msgid "URL Grabber..." +msgstr "URL griebiklio langas..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1648 +#, fuzzy +msgid "C_lear Text" +msgstr "Uždaryti" + +#: src/fe-gtk/menu.c:1650 +#, fuzzy +msgid "Search Text..." +msgstr "_Paieška buferyje..." + +#: src/fe-gtk/menu.c:1651 +#, fuzzy +msgid "Save Text..." +msgstr "Keisti įvykių užrašus..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_Pagalba" + +#: src/fe-gtk/menu.c:1654 +#, fuzzy +msgid "_Contents" +msgstr "Jungiuosi" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +#, fuzzy +msgid "_About" +msgstr "Apie X-Chat..." + +#: src/fe-gtk/menu.c:2147 +#, fuzzy +msgid "_Attach" +msgstr "_Langai" + +#: src/fe-gtk/notifygui.c:138 +#, fuzzy +msgid "Last Seen" +msgstr "Greitas DCC siuntimas" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Niekada" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "prieš %d minučių" + +#: src/fe-gtk/notifygui.c:218 +#, fuzzy +msgid "Online" +msgstr "Dokumentacija..." + +#: src/fe-gtk/notifygui.c:347 +#, fuzzy +msgid "Enter nickname to add:" +msgstr "Rodyti niką" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "Paskutinis DCC siuntimo prievadas:" + +#: src/fe-gtk/notifygui.c:434 +#, fuzzy +msgid "Open Dialog" +msgstr "Savaime atidaryti dialogų langus" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:591 +#, fuzzy +msgid "_Hide" +msgstr "Paslėpta" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +#, fuzzy +msgid "Channel Message" +msgstr "Kanalų kortelės" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +#, fuzzy +msgid "Private Message" +msgstr "Asmeninių žinučių kortelės" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +#, fuzzy +msgid "Highlighted Message" +msgstr "Paryškinti Notify" + +#: src/fe-gtk/plugin-tray.c:600 +#, fuzzy +msgid "_Change status" +msgstr "Kanalų kortelės" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "Nėra" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Versija" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "" + +#: src/fe-gtk/plugingui.c:221 +#, fuzzy +msgid "XChat: Plugins and Scripts" +msgstr "Visus priedus" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "Į_kelti" + +#: src/fe-gtk/plugingui.c:230 +#, fuzzy +msgid "_UnLoad" +msgstr "Įkelti" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +#, fuzzy +msgid "Save As..." +msgstr "Keisti įvykių užrašus..." + +#: src/fe-gtk/rawlog.c:95 +#, fuzzy, c-format +msgid "XChat: Rawlog (%s)" +msgstr "Vartotojų sąrašo mygtukai..." + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "" + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "" + +#: src/fe-gtk/search.c:116 +#, fuzzy +msgid "XChat: Search" +msgstr "X-Chat: Nuostatos" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "" + +#: src/fe-gtk/search.c:153 +#, fuzzy +msgid "_Find" +msgstr "Šriftas:" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Naujas tinklas" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "Kanalas" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "Vartotojų sąrašo mygtukai..." + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "Proxy serverio prievadas:" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "_Keisti" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1397 +#, fuzzy, c-format +msgid "XChat: Edit %s" +msgstr "Vartotojų sąrašo mygtukai..." + +#: src/fe-gtk/servlistgui.c:1416 +#, fuzzy, c-format +msgid "Servers for %s" +msgstr "Serverių sąrašas..." + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1430 +#, fuzzy +msgid "Your Details" +msgstr "Tavo IRC nuostatos" + +#: src/fe-gtk/servlistgui.c:1436 +#, fuzzy +msgid "Use global user information" +msgstr "Vartotojo meniu" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +#, fuzzy +msgid "_Nick name:" +msgstr "Rodyti niką" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +#, fuzzy +msgid "Second choice:" +msgstr "Siųsti /whois" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +#, fuzzy +msgid "_User name:" +msgstr "Proxy serverio hosto vardas:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +#, fuzzy +msgid "Rea_l name:" +msgstr "Kanalų kortelės" + +#: src/fe-gtk/servlistgui.c:1454 +#, fuzzy +msgid "Connecting" +msgstr "Jungiuosi" + +#: src/fe-gtk/servlistgui.c:1460 +#, fuzzy +msgid "Auto connect to this network at startup" +msgstr "Savaime perskirti" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "Proxy serveris" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "Kanalas" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1480 +#, fuzzy +msgid "Connect command:" +msgstr "Pranešimas:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1485 +#, fuzzy +msgid "Nickserv password:" +msgstr "Proxy serverio prievadas:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1491 +#, fuzzy +msgid "Server password:" +msgstr "Proxy serverio prievadas:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1496 +#, fuzzy +msgid "Character set:" +msgstr "Simbolių aibė" + +#: src/fe-gtk/servlistgui.c:1649 +#, fuzzy +msgid "XChat: Network List" +msgstr "Serverių sąrašas..." + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Tinklai" + +#: src/fe-gtk/servlistgui.c:1786 +#, fuzzy +msgid "Skip network list on startup" +msgstr "Nerodyti serverių sąrašo pradžioje" + +#: src/fe-gtk/servlistgui.c:1818 +#, fuzzy +msgid "_Edit..." +msgstr "Įkelti" + +#: src/fe-gtk/servlistgui.c:1825 +#, fuzzy +msgid "_Sort" +msgstr "Šriftas:" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1851 +#, fuzzy +msgid "C_onnect" +msgstr "Pranešimas:" + +#: src/fe-gtk/setup.c:104 +#, fuzzy +msgid "Text Box Appearance" +msgstr "Išvaizda" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Šriftas:" + +#: src/fe-gtk/setup.c:106 +#, fuzzy +msgid "Background image:" +msgstr "Paveikslėlis fonui:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "" + +#: src/fe-gtk/setup.c:108 +#, fuzzy +msgid "Colored nick names" +msgstr "Spalvoti nikai" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "" + +#: src/fe-gtk/setup.c:110 +#, fuzzy +msgid "Indent nick names" +msgstr "Lygiuoti nikus" + +#: src/fe-gtk/setup.c:111 +#, fuzzy +msgid "Make nick names right-justified" +msgstr "Lygiuoti nikus prie dešinės." + +#: src/fe-gtk/setup.c:112 +#, fuzzy +msgid "Transparent background" +msgstr "Skaidrus fonas" + +#: src/fe-gtk/setup.c:113 +#, fuzzy +msgid "Show marker line" +msgstr "Rodyti „nėra“ vieną kartą" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "" + +#: src/fe-gtk/setup.c:115 +#, fuzzy +msgid "Transparency Settings" +msgstr "Bylų siuntimo nuostatos" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Raudona:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Žalia:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Mėlyna:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +#, fuzzy +msgid "Time Stamps" +msgstr "Visada įrašyti laiką į logus" + +#: src/fe-gtk/setup.c:121 +#, fuzzy +msgid "Enable time stamps" +msgstr "Visada įrašyti laiką į logus" + +#: src/fe-gtk/setup.c:122 +#, fuzzy +msgid "Time stamp format:" +msgstr "Visada įrašyti laiką į logus" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "" + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +#, fuzzy +msgid "Input box" +msgstr "Įvesties laukas" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Rašybos tikrinimas" + +#: src/fe-gtk/setup.c:143 +#, fuzzy +msgid "Nick Completion" +msgstr "Niko pabaigimas" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "" + +#: src/fe-gtk/setup.c:146 +#, fuzzy +msgid "Nick completion suffix:" +msgstr "Niko pabaigimas" + +#: src/fe-gtk/setup.c:147 +#, fuzzy +msgid "Nick completion sorted:" +msgstr "Niko pabaigimas" + +#: src/fe-gtk/setup.c:150 +#, fuzzy +msgid "Input Box Codes" +msgstr "Įvesties laukas" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, Op'ai pirmiau" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, Op'ai paskiau" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Nerikiuotas" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Aukščiausia" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Apačioje" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Paslėpta" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Vartotojų sąrašas" + +#: src/fe-gtk/setup.c:201 +#, fuzzy +msgid "Show hostnames in user list" +msgstr "Rodyti vartotojo hostą" + +#: src/fe-gtk/setup.c:204 +#, fuzzy +msgid "User list sorted by:" +msgstr "Vartotojai surikiuoti pagal:" + +#: src/fe-gtk/setup.c:205 +#, fuzzy +msgid "Show user list at:" +msgstr "Rodyti vartotojo hostą" + +#: src/fe-gtk/setup.c:207 +#, fuzzy +msgid "Away tracking" +msgstr "Nėra nuostatos" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:209 +#, fuzzy +msgid "On channels smaller than:" +msgstr "Kanalų kortelės" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Langai" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Kortelės" + +#: src/fe-gtk/setup.c:232 +#, fuzzy +msgid "Always" +msgstr "Nėra" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "" + +#: src/fe-gtk/setup.c:242 +#, fuzzy +msgid "Tree" +msgstr "Atšaukti" + +#: src/fe-gtk/setup.c:249 +#, fuzzy +msgid "Switcher type:" +msgstr "_Paieška buferyje..." + +#: src/fe-gtk/setup.c:250 +#, fuzzy +msgid "Open an extra tab for server messages" +msgstr "Naudoti atskirą kortelę/langą serverio žinutėms" + +#: src/fe-gtk/setup.c:251 +#, fuzzy +msgid "Open an extra tab for server notices" +msgstr "Naudoti atskirą kortelę/langą serverio žinutėms" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "Uždaryti" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "" + +#: src/fe-gtk/setup.c:258 +#, fuzzy +msgid "Show channel switcher at:" +msgstr "Rodyti niką" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "" + +#: src/fe-gtk/setup.c:259 +#, fuzzy +msgid "letters." +msgstr "Paletė..." + +#: src/fe-gtk/setup.c:261 +#, fuzzy +msgid "Tabs or Windows" +msgstr "Dialogų langai" + +#: src/fe-gtk/setup.c:262 +#, fuzzy +msgid "Open channels in:" +msgstr "Kanalų kortelės" + +#: src/fe-gtk/setup.c:263 +#, fuzzy +msgid "Open dialogs in:" +msgstr "Savaime atidaryti dialogų langus" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "" + +#: src/fe-gtk/setup.c:264 +#, fuzzy +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Naudoti korteles DCC, Ignoravimo, Notify langams." + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "" + +#: src/fe-gtk/setup.c:280 +#, fuzzy +msgid "Auto accept file offers:" +msgstr "Savaime priimti DCC siuntimus" + +#: src/fe-gtk/setup.c:281 +#, fuzzy +msgid "Download files to:" +msgstr "Garsų katalogas:" + +#: src/fe-gtk/setup.c:282 +#, fuzzy +msgid "Move completed files to:" +msgstr "Garsų katalogas:" + +#: src/fe-gtk/setup.c:283 +#, fuzzy +msgid "Save nick name in filenames" +msgstr "Įdėti siuntėjo niką į gauntų bylų vardus" + +#: src/fe-gtk/setup.c:285 +#, fuzzy +msgid "Network Settings" +msgstr "Buferio nuostatos" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" + +#: src/fe-gtk/setup.c:288 +#, fuzzy +msgid "DCC IP address:" +msgstr "IP adresas" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "" + +#: src/fe-gtk/setup.c:290 +#, fuzzy +msgid "First DCC send port:" +msgstr "Pirmas DCC siuntimo prievadas:" + +#: src/fe-gtk/setup.c:291 +#, fuzzy +msgid "Last DCC send port:" +msgstr "Paskutinis DCC siuntimo prievadas:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "" + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "" + +#: src/fe-gtk/setup.c:341 +#, fuzzy +msgid "Highlighted Messages" +msgstr "Paryškinimo nuostatos" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:344 +#, fuzzy +msgid "Extra words to highlight:" +msgstr "Paryškinami žodžiai:" + +#: src/fe-gtk/setup.c:345 +#, fuzzy +msgid "Nick names not to highlight:" +msgstr "Paryškinami žodžiai:" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "(atskirk kableliais)" + +#: src/fe-gtk/setup.c:353 +#, fuzzy +msgid "Default Messages" +msgstr "Pabaigos žinutė:" + +#: src/fe-gtk/setup.c:354 +#, fuzzy +msgid "Quit:" +msgstr "Išeiti" + +#: src/fe-gtk/setup.c:355 +#, fuzzy +msgid "Leave channel:" +msgstr "Kanalas" + +#: src/fe-gtk/setup.c:356 +#, fuzzy +msgid "Away:" +msgstr "Nėra" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Nėra" + +#: src/fe-gtk/setup.c:359 +#, fuzzy +msgid "Announce away messages" +msgstr "Skelbti nebūties žinutės" + +#: src/fe-gtk/setup.c:360 +#, fuzzy +msgid "Announce your away messages to all channels" +msgstr "Skelbti, kad tavęs nėra, visuose kanaluose, kuriuose esi." + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Rodyti „nėra“ vieną kartą" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "" + +#: src/fe-gtk/setup.c:362 +#, fuzzy +msgid "Automatically unmark away" +msgstr "Savaime atidaryti DCC gavimo langą" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "" + +#: src/fe-gtk/setup.c:369 +#, fuzzy +msgid "Advanced Settings" +msgstr "Nėra nuostatos" + +#: src/fe-gtk/setup.c:370 +#, fuzzy +msgid "Auto reconnect delay:" +msgstr "Savaiminio prisijungimo delsa:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" + +#: src/fe-gtk/setup.c:373 +#, fuzzy +msgid "Hide join and part messages" +msgstr "Pyptelėti, gavus asmeninę žinutę" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "" + +#: src/fe-gtk/setup.c:374 +#, fuzzy +msgid "Auto Open DCC Windows" +msgstr "Savaime atidaryti dialogų langus" + +#: src/fe-gtk/setup.c:375 +#, fuzzy +msgid "Send window" +msgstr "Pagrindinis langas" + +#: src/fe-gtk/setup.c:376 +#, fuzzy +msgid "Receive window" +msgstr "Gautos bylos" + +#: src/fe-gtk/setup.c:377 +#, fuzzy +msgid "Chat window" +msgstr "Kanalų langai" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Loginimas" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "Leisti surašyti visus pokalbius į bylas" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "" + +#: src/fe-gtk/setup.c:392 +#, fuzzy +msgid "Insert timestamps in logs" +msgstr "Visada įrašyti laiką į logus" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Uždraustas)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "" + +#: src/fe-gtk/setup.c:414 +#, fuzzy +msgid "All Connections" +msgstr "Jungiuosi" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "" + +#: src/fe-gtk/setup.c:422 +#, fuzzy +msgid "Your Address" +msgstr "Adresas" + +#: src/fe-gtk/setup.c:423 +#, fuzzy +msgid "Bind to:" +msgstr "Šriftas:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "" + +#: src/fe-gtk/setup.c:426 +#, fuzzy +msgid "Proxy Server" +msgstr "Proxy serveris" + +#: src/fe-gtk/setup.c:427 +#, fuzzy +msgid "Hostname:" +msgstr "Hosto vardas / IP numeris:" + +#: src/fe-gtk/setup.c:428 +#, fuzzy +msgid "Port:" +msgstr "Šriftas:" + +#: src/fe-gtk/setup.c:429 +#, fuzzy +msgid "Type:" +msgstr "Viršus:" + +#: src/fe-gtk/setup.c:430 +#, fuzzy +msgid "Use proxy for:" +msgstr "Vartotojo meniu" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:438 +#, fuzzy +msgid "Username:" +msgstr "Proxy serverio hosto vardas:" + +#: src/fe-gtk/setup.c:439 +#, fuzzy +msgid "Password:" +msgstr "Proxy serverio prievadas:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "" + +#: src/fe-gtk/setup.c:905 +#, fuzzy +msgid "Select Download Folder" +msgstr "Pasirink šriftą" + +#: src/fe-gtk/setup.c:914 +#, fuzzy +msgid "Select font" +msgstr "Pasirink šriftą" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Naršyti..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1215 +#, fuzzy +msgid "Select color" +msgstr "Pasirink šriftą" + +#: src/fe-gtk/setup.c:1295 +#, fuzzy +msgid "Text Colors" +msgstr "Uždaryti" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +#, fuzzy +msgid "Background:" +msgstr "XPM fonui:" + +#: src/fe-gtk/setup.c:1316 +#, fuzzy +msgid "Marking Text" +msgstr "Uždaryti" + +#: src/fe-gtk/setup.c:1321 +#, fuzzy +msgid "Interface Colors" +msgstr "Sąsaja" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "" + +#: src/fe-gtk/setup.c:1325 +#, fuzzy +msgid "New message:" +msgstr "Pabaigos žinutė:" + +#: src/fe-gtk/setup.c:1326 +#, fuzzy +msgid "Away user:" +msgstr "Nebūties priežastis:" + +#: src/fe-gtk/setup.c:1327 +#, fuzzy +msgid "Highlight:" +msgstr "Paryškinimas" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "" + +#: src/fe-gtk/setup.c:1429 +#, fuzzy +msgid "Sound file" +msgstr "Garsų katalogas:" + +#: src/fe-gtk/setup.c:1464 +#, fuzzy +msgid "Select a sound file" +msgstr "Garsų katalogas:" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "" + +#: src/fe-gtk/setup.c:1544 +#, fuzzy +msgid "External sound playing _program:" +msgstr "Išorinės programos" + +#: src/fe-gtk/setup.c:1562 +#, fuzzy +msgid "_External program" +msgstr "Išorinės programos" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "" + +#: src/fe-gtk/setup.c:1585 +#, fuzzy +msgid "Sound files _directory:" +msgstr "Garsų katalogas:" + +#: src/fe-gtk/setup.c:1624 +#, fuzzy +msgid "Sound file:" +msgstr "Garsų katalogas:" + +#: src/fe-gtk/setup.c:1639 +#, fuzzy +msgid "_Browse..." +msgstr "Naršyti..." + +#: src/fe-gtk/setup.c:1650 +#, fuzzy +msgid "_Play" +msgstr "Skydelis" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Sąsaja" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "" + +#: src/fe-gtk/setup.c:1702 +#, fuzzy +msgid "User list" +msgstr "Vartotojų sąrašas" + +#: src/fe-gtk/setup.c:1703 +#, fuzzy +msgid "Channel switcher" +msgstr "Kanalų sąrašo langas..." + +#: src/fe-gtk/setup.c:1704 +#, fuzzy +msgid "Colors" +msgstr "Uždaryti" + +#: src/fe-gtk/setup.c:1706 +#, fuzzy +msgid "Chatting" +msgstr "X-Chat" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Pagrindai" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Garsas" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "" + +#: src/fe-gtk/setup.c:1715 +#, fuzzy +msgid "File transfers" +msgstr "Bylų siuntimas" + +#: src/fe-gtk/setup.c:1823 +#, fuzzy +msgid "Categories" +msgstr "Kategorijos" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" + +#: src/fe-gtk/setup.c:2058 +#, fuzzy +msgid "XChat: Preferences" +msgstr "X-Chat: Nuostatos" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "" + +#: src/fe-gtk/textgui.c:372 +#, fuzzy +msgid "Edit Events" +msgstr "Keisti įvykių užrašus..." + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "" + +#: src/fe-gtk/textgui.c:440 +#, fuzzy +msgid "Load From..." +msgstr "Įkelti" + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +#, fuzzy +msgid "XChat: URL Grabber" +msgstr "URL griebiklio langas..." + +#: src/fe-gtk/urlgrab.c:199 +#, fuzzy +msgid "Clear list" +msgstr "Vartotojų sąrašas" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "" + +#~ msgid "Direct client-to-client" +#~ msgstr "Tiesioginis klientas-klientas ryšys" + +#, fuzzy +#~ msgid "Send File" +#~ msgstr "Garsų katalogas:" + +#~ msgid "Offer Chat" +#~ msgstr "Siūlyti pokalbį" + +#, fuzzy +#~ msgid "Abort Chat" +#~ msgstr "Apie X-Chat..." + +#, fuzzy +#~ msgid "Userinfo" +#~ msgstr "Vartotojo meniu" + +#, fuzzy +#~ msgid "Clientinfo" +#~ msgstr "Testuoti nuostatas" + +#, fuzzy +#~ msgid "Time" +#~ msgstr "Laiko ribos" + +#, fuzzy +#~ msgid "Finger" +#~ msgstr "Wingate" + +#~ msgid "Oper" +#~ msgstr "IRC opams" + +#~ msgid "Kill this user" +#~ msgstr "Atjungti šį naudotoją" + +#, fuzzy +#~ msgid "Mode" +#~ msgstr "Statuso simbolis" + +#~ msgid "Give Half-Ops" +#~ msgstr "Suteikti halfopo statusą" + +#~ msgid "Take Half-Ops" +#~ msgstr "Pašalinti halfopo statusą" + +#, fuzzy +#~ msgid "Ignore" +#~ msgstr "Nerikiuotas" + +#, fuzzy +#~ msgid "Ignore User" +#~ msgstr "Ignoravimo langas..." + +#, fuzzy +#~ msgid "UnIgnore User" +#~ msgstr "Nerikiuotas" + +#~ msgid "Info" +#~ msgstr "Info" + +#~ msgid "Who" +#~ msgstr "„Who“" + +#, fuzzy +#~ msgid "DNS Lookup" +#~ msgstr "DNS paieškos programa:" + +#, fuzzy +#~ msgid "UserHost" +#~ msgstr "Vartotojų sąrašas" + +#, fuzzy +#~ msgid "External" +#~ msgstr "Išorinės programos" + +#~ msgid "Traceroute" +#~ msgstr "„Traceroute“" + +#~ msgid "Telnet" +#~ msgstr "„Telnet“" + +#~ msgid "About XChat" +#~ msgstr "Apie XChat" + +#, fuzzy +#~ msgid "Show join/part messages" +#~ msgstr "Pyptelėti, gavus asmeninę žinutę" + +#, fuzzy +#~ msgid "Color paste" +#~ msgstr "Uždaryti" + +#, fuzzy +#~ msgid "_Close Tab" +#~ msgstr "Uždaryti" + +#, fuzzy +#~ msgid "Channel List..." +#~ msgstr "Kanalų sąrašo langas..." + +#, fuzzy +#~ msgid "Notify List..." +#~ msgstr "Notify sąrašo langas..." + +#, fuzzy +#~ msgid "_Close Window" +#~ msgstr "_Langai" + +#, fuzzy +#~ msgid "User" +#~ msgstr "Vartotojo meniu" + +#, fuzzy +#~ msgid "XChat: Notify List" +#~ msgstr "Notify sąrašo langas..." + +#, fuzzy +#~ msgid "C_hannels to join:" +#~ msgstr "Kanalų sąrašo langas..." + +#, fuzzy +#~ msgid "Channel Switcher" +#~ msgstr "Kanalų sąrašo langas..." + +#, fuzzy +#~ msgid "Servername" +#~ msgstr "Proxy serverio hosto vardas:" + +#~ msgid "Apply" +#~ msgstr "Pritaikyti" + +#, fuzzy +#~ msgid "Save the list" +#~ msgstr "Savaime išsaugoti URL sąrašą" + +#, fuzzy +#~ msgid "X-Chat: File Receive List" +#~ msgstr "Serverių sąrašas..." + +#, fuzzy +#~ msgid "To" +#~ msgstr "Aukščiausia" + +#, fuzzy +#~ msgid "X-Chat: Edit Key Bindings" +#~ msgstr "Keisti klavišų susiejimus..." + +#, fuzzy +#~ msgid "Chan" +#~ msgstr "X-Chat" + +#, fuzzy +#~ msgid "(%s) Channel settings" +#~ msgstr "Skydelio nuostatos" + +#, fuzzy +#~ msgid "Channel Options" +#~ msgstr "Kanalų langai" + +#, fuzzy +#~ msgid "User: %s" +#~ msgstr "Vartotojų sąrašas" + +#, fuzzy +#~ msgid "Settings saved." +#~ msgstr "Nuostatos" + +#, fuzzy +#~ msgid "New Shell Tab..." +#~ msgstr "Nauja shell'o kortelė" + +#, fuzzy +#~ msgid "_IRC" +#~ msgstr "IRC" + +#~ msgid "Invisible" +#~ msgstr "Nematomas" + +#~ msgid "Receive Wallops" +#~ msgstr "Gauti Wallops'us" + +#~ msgid "Receive Server Notices" +#~ msgstr "Gauti serverio pastabas" + +#, fuzzy +#~ msgid "Auto Rejoin when Kicked" +#~ msgstr "Savaime grįžti, kai išspirtas" + +#~ msgid "Never-give-up ReConnect" +#~ msgstr "Niekada nenutraukti bandymo prisijungti" + +#, fuzzy +#~ msgid "Auto Accept Direct Chat" +#~ msgstr "Savaime priimti DCC Chat" + +#, fuzzy +#~ msgid "Lists" +#~ msgstr "Kanalų sąrašo langas..." + +#, fuzzy +#~ msgid "Key Bindings..." +#~ msgstr "Keisti klavišų susiejimus..." + +#~ msgid "Reload Settings" +#~ msgstr "Vėl įkelti nuostatas" + +#~ msgid "Save Settings now" +#~ msgstr "Išsaugoti nuostatas dabar" + +#~ msgid "Save Settings on exit" +#~ msgstr "Išsaugoti nuostatas išeinant" + +#, fuzzy +#~ msgid "File Receive..." +#~ msgstr "DCC gavimo langas..." + +#, fuzzy +#~ msgid "File Send..." +#~ msgstr "DCC siuntimo langas..." + +#, fuzzy +#~ msgid "Server" +#~ msgstr "Proxy serveris" + +#, fuzzy +#~ msgid "Settings for %s" +#~ msgstr "Nuostatos" + +#, fuzzy +#~ msgid "_Remove \"%s\"" +#~ msgstr "Serverių sąrašas..." + +#, fuzzy +#~ msgid "_Add new server" +#~ msgstr "Nauja serverio kortelė..." + +#, fuzzy +#~ msgid "Move \"%s\" _up" +#~ msgstr "Serverių sąrašas..." + +#, fuzzy +#~ msgid "Global User Info" +#~ msgstr "Vartotojo meniu" + +#, fuzzy +#~ msgid "Nick Names:" +#~ msgstr "Rodyti niką" + +#, fuzzy +#~ msgid "Connect in a _new tab" +#~ msgstr "Pranešimas:" + +#, fuzzy +#~ msgid "Servers" +#~ msgstr "Proxy serveris" + +#, fuzzy +#~ msgid "Nick Name:" +#~ msgstr "Rodyti niką" + +#, fuzzy +#~ msgid "Use secure SSL" +#~ msgstr "Vartotojų sąrašas" + +#, fuzzy +#~ msgid "Tint transparency" +#~ msgstr "Skaidrumas" + +#, fuzzy +#~ msgid "Strip mIRC color" +#~ msgstr "Pašalinti MIRC spalvas" + +#, fuzzy +#~ msgid "Tint green:" +#~ msgstr "Testuoti nuostatas" + +#, fuzzy +#~ msgid "Double-click command:" +#~ msgstr "Dvigubo paspaudimo komanda:" + +#, fuzzy +#~ msgid "Userlist buttons enabled" +#~ msgstr "Vartotojų sąrašo mygtukai..." + +#, fuzzy +#~ msgid "Only highlight tabs on channel messages" +#~ msgstr "Paryškinti kanalų korteles tik žinučių ir veiksmų metu" + +#, fuzzy +#~ msgid "Pop new tabs to front" +#~ msgstr "Naujos kortelės į priekį" + +#, fuzzy +#~ msgid "Auto open DCC send list" +#~ msgstr "Savaime atidaryti DCC siuntimo langą" + +#, fuzzy +#~ msgid "Auto open DCC chat list" +#~ msgstr "Savaime atidaryti DCC Chat langą" + +#, fuzzy +#~ msgid "Auto open DCC receive list" +#~ msgstr "Savaime atidaryti DCC gavimo langą" + +#, fuzzy +#~ msgid "Default part message:" +#~ msgstr "Išėjimo žinutė:" + +#, fuzzy +#~ msgid "Default away message:" +#~ msgstr "Skelbti nebūties žinutės" + +#, fuzzy +#~ msgid "Beep on channel messages" +#~ msgstr "Pyptelėti, gavus asmeninę žinutę" + +#, fuzzy +#~ msgid "Proxy port:" +#~ msgstr "Proxy tipas:" + +#, fuzzy +#~ msgid "Proxy type:" +#~ msgstr "Proxy tipas:" + +#, fuzzy +#~ msgid "Mark back:" +#~ msgstr "Skaidrus fonas" + +#, fuzzy +#~ msgid "Select a file to save to" +#~ msgstr "Katalogas, į kurį saugoti:" + +#, fuzzy +#~ msgid "Load Plugin..." +#~ msgstr "Įkelti pluginą (*.so)..." + +#, fuzzy +#~ msgid "Load plugin..." +#~ msgstr "Įkelti pluginą (*.so)..." + +#~ msgid "Auto ReJoin on Kick" +#~ msgstr "Vėl ateiti, jei išspyrė" + +#, fuzzy +#~ msgid "X-Chat Homepage..." +#~ msgstr "X-Chat tinklapis..." + +#, fuzzy +#~ msgid "Online Docs..." +#~ msgstr "Dokumentacija..." + +#, fuzzy +#~ msgid "About X-Chat..." +#~ msgstr "Apie X-Chat..." + +#~ msgid "Choose File" +#~ msgstr "Pasirink bylą" + +#, fuzzy +#~ msgid "Server settings" +#~ msgstr "Nuostatos" + +#, fuzzy +#~ msgid "Ban List Window..." +#~ msgstr "Kanalų sąrašo langas..." + +#, fuzzy +#~ msgid "ASCII Window..." +#~ msgstr "Ignoravimo langas..." + +#, fuzzy +#~ msgid "F_lush Buffer" +#~ msgstr "Išvalyti buferį" + +#, fuzzy +#~ msgid "Save Buffer..." +#~ msgstr "Iš_saugoti buferį..." + +#~ msgid "User Modes" +#~ msgstr "Vartotojo būsenos" + +#, fuzzy +#~ msgid "Plugins" +#~ msgstr "Priedai..." + +#~ msgid "Edit User Menu" +#~ msgstr "Taisyti vartotojo meniu" + +#~ msgid "Left" +#~ msgstr "Kairėje" + +#~ msgid "Right" +#~ msgstr "Dešinėje" + +#, fuzzy +#~ msgid "NewServer" +#~ msgstr "Proxy serveris" + +#, fuzzy +#~ msgid "Open extra tab for each server" +#~ msgstr "Naudoti atskirą kortelę/langą serverio žinutėms" + +#, fuzzy +#~ msgid "Server List 2..." +#~ msgstr "Serverių sąrašas..." + +#, fuzzy +#~ msgid "UNLOADALL, Unloads all perl scripts" +#~ msgstr "Įkelti Python skriptą..." + +#~ msgid "Scripts & Plugins" +#~ msgstr "Skriptai ir pluginai" + +#, fuzzy +#~ msgid "PLOAD loads a python script" +#~ msgstr "Įkelti Python skriptą..." + +#~ msgid "Unload All Scripts" +#~ msgstr "Išmesti visus skriptus" + +#~ msgid "Perl List" +#~ msgstr "Perl sąrašas" + +#, fuzzy +#~ msgid "Load Python Script..." +#~ msgstr "Įkelti Python skriptą..." + +#~ msgid "Python List" +#~ msgstr "Python sąrašas" + +#, fuzzy +#~ msgid "gdk_font_load failed" +#~ msgstr "Naudoti gdk_fontset_load" + +#~ msgid "Setup.." +#~ msgstr "Nuostatos..." + +#, fuzzy +#~ msgid "X-Chat: Palette" +#~ msgstr "X-Chat: Nuostatos" + +#, fuzzy +#~ msgid "Background" +#~ msgstr "XPM fonui:" + +#, fuzzy +#~ msgid "Mark Background" +#~ msgstr "Skaidrus fonas" + +#, fuzzy +#~ msgid "No Server" +#~ msgstr "Proxy serveris" + +#, fuzzy +#~ msgid "Is Tab" +#~ msgstr "Kortelės" + +#, fuzzy +#~ msgid "X-Chat: Setup" +#~ msgstr "X-Chat: Nuostatos" + +#, fuzzy +#~ msgid "Failed to load translation table." +#~ msgstr "Naudoti ircII stiliaus vertimo bylą." + +#~ msgid "Auto Indent" +#~ msgstr "Savaime perskirti" + +#~ msgid "Auto adjust the separator bar position as needed." +#~ msgstr "Savaime pritaikyti skyriklio juostos vietą kai reikia." + +#~ msgid "Draw Separator Bar" +#~ msgstr "Piešti skyriklio juostą" + +#~ msgid "Make the separator an actual visible line." +#~ msgstr "Padaryti skyriklį tikrai matoma linija." + +#~ msgid "Word Wrap" +#~ msgstr "Žodžių laužymas" + +#~ msgid "Don't split words from one line to the next" +#~ msgstr "Nelaužyti žodžių iš vienos eilutės į kitą" + +#~ msgid "Make the text box seem see-through" +#~ msgstr "Padaryti, kad teksto laukas atrodytų permatomas" + +#, fuzzy +#~ msgid "Use a font set" +#~ msgstr "Naudoti gdk_fontset_load" + +#~ msgid "Change in realtime" +#~ msgstr "Keisti realiu laiku" + +#~ msgid "Startup and Shutdown" +#~ msgstr "Pradžia ir Išėjimas" + +#~ msgid "No Server List On Startup" +#~ msgstr "Nerodyti serverių sąrašo pradžioje" + +#~ msgid "Don't display the server list on X-Chat startup" +#~ msgstr "Nerodyti serverių sąrašo, tik paleidus X-Chat" + +#~ msgid "Auto Save URL list" +#~ msgstr "Savaime išsaugoti URL sąrašą" + +#~ msgid "Auto save your URL list when exiting from X-Chat" +#~ msgstr "Savaime išsaugoti URL sąrašą išeinant iš X-Chat" + +#~ msgid "Give the User List style" +#~ msgstr "Suteikti varotojų sarašui stilių" + +#~ msgid "Complete nicknames when a partial one is entered" +#~ msgstr "Pabaigti nikus, jei įvesta niko dalis" + +#~ msgid "Old-style Nickname Completion" +#~ msgstr "Seno stiliaus niko pabaigimas" + +#~ msgid "Nickname completion is old-style (instead of GNU-style)" +#~ msgstr "Seno stiliaus niko pabaigimas (vietoj GNU stiliaus)" + +#~ msgid "Give the Input Box style" +#~ msgstr "Suteikti stilių įvesties laukui" + +#~ msgid "Input box gets same style as main text area" +#~ msgstr "" +#~ "Įvesties laukas įgauna tokį pat stilių kaip pagrindinis testo laukas" + +#~ msgid "Nickname Completion Character:" +#~ msgstr "Niko užbaigimo simbolis:" + +#~ msgid "Character to append to completed nicknames" +#~ msgstr "Simbolis, priduriamas prie pabaigtų nikų" + +#~ msgid "Output Box" +#~ msgstr "Įšvesties laukas" + +#~ msgid "Strip MIRC color codes from text before displaying" +#~ msgstr "Pašalinti MIRC spalvų kodus iš teksto prieš parodant" + +#~ msgid "Output nicknames in different colors" +#~ msgstr "Išvesti nikus skirtingomis spalvomis" + +#~ msgid "Prefix all text with the current time stamp" +#~ msgstr "Prieš bet kokį tekstą įrašyti jo laiką" + +#~ msgid "Filter out BEEPs" +#~ msgstr "Išfiltruoti BEEP (skambučius)" + +#~ msgid "Remove ^G BEEP codes from text before displaying" +#~ msgstr "Pašalinti ^G BEEP kodus iš teksto prieš parodant" + +#~ msgid "Buffer Settings" +#~ msgstr "Buferio nuostatos" + +#~ msgid "Text Buffer Size:" +#~ msgstr "Teksto buferio dydis:" + +#~ msgid "lines (0=Unlimited)." +#~ msgstr "eilučių (0=neribotas)." + +#~ msgid "Buttons" +#~ msgstr "Mygtukai" + +#~ msgid "Show the TNSIPMLK buttons" +#~ msgstr "Rodyti TNSIPMLK mygtukus" + +#~ msgid "User List Buttons" +#~ msgstr "Vartotojų sąrašo mygtukai" + +#~ msgid "Show the buttons below the user list" +#~ msgstr "Rodyti mygtukus po vartotojų sąrašu" + +#~ msgid "Tabs Located at:" +#~ msgstr "Kortelės yra:" + +#~ msgid "Use tabs for channels instead of separate windows" +#~ msgstr "Kanalams naudoti korteles, o ne atskirus langus" + +#~ msgid "Limited Tab Highlighting" +#~ msgstr "Ribotas kortelių paryškinimas" + +#~ msgid "Bring new query/channel tabs to front" +#~ msgstr "Naujai atsiradusius kanalų/dialogų langus rodyti priekyje" + +#~ msgid "Use tabs for /query instead of separate windows" +#~ msgstr "Asmeniniams pokalbiams naudoti korteles, o ne atskirus langus" + +#~ msgid "Window Position" +#~ msgstr "Lango vieta" + +#~ msgid "" +#~ "If Left and Top are set to zero, X-Chat will use\n" +#~ "your window manager defaults." +#~ msgstr "" +#~ "Jei Viršus ir apačia yra nuliai, X-Chat naudos\n" +#~ "langų tvarkyklės nuostatas." + +#~ msgid "Left:" +#~ msgstr "Kairė:" + +#~ msgid "Window Size" +#~ msgstr "Lango dydis" + +#~ msgid "Width:" +#~ msgstr "Plotis:" + +#~ msgid "Height:" +#~ msgstr "Aukštis:" + +#~ msgid "Show Session Tree View" +#~ msgstr "Rodyti sesijos medžio vaizdą" + +#~ msgid "Panel Applet" +#~ msgstr "Skydelio įtaisas" + +#~ msgid "Layout For a Vertical Panel" +#~ msgstr "Išdėstyti stačiam skydeliui" + +#~ msgid "Layout the X-Chat panel applet for a vertical panel" +#~ msgstr "Išdėstyti X-Chat skydelio įtaisą stačiam skydeliui" + +#~ msgid "Raw Mode Display" +#~ msgstr "Grynas mode rodymas" + +#~ msgid "Display raw mode changes instead of interpretations" +#~ msgstr "Rodyti grynus mode pakeitimus vietoj interpretacijų" + +#~ msgid "Beep when a private message for you is received" +#~ msgstr "Pyptelėti, kai ateina tau skirta asmeninė žinutė" + +#, fuzzy +#~ msgid "Beep when a channel message is received" +#~ msgstr "Pyptelėti, kai ateina tau skirta asmeninė žinutė" + +#~ msgid "Send /who #chan on join." +#~ msgstr "Siųsti /who #kanalas ateinant" + +#~ msgid "Find user information when joining a channel." +#~ msgstr "Sužinoti vartotojų informaciją, atėjus į kanalą." + +#~ msgid "" +#~ "These can be a filename relative to ~/.xchat/ to be\n" +#~ "used as a list of random quit or part reasons." +#~ msgstr "" +#~ "Tai gali būti bylų vardai, nurodyti santykinai ~/.xchat/,\n" +#~ "naudojami parinkti atsitiktinėms pabaigos ar išėjimo priežastims." + +#~ msgid "seconds." +#~ msgstr "sekundžių." + +#~ msgid "" +#~ "Most people should leave this blank, it's only\n" +#~ "usefull for machines with multiple addresses." +#~ msgstr "" +#~ "Dauguma žmonių šitai turėtų palikti tuščią,\n" +#~ "tai naudinga tik mašinoms su keletu adresų." + +#, fuzzy +#~ msgid "Public IP Address" +#~ msgstr "IP adresas" + +#~ msgid "Get my IP from Server (for use in DCC Send only)" +#~ msgstr "Gauti mano IP iš serverio (naudojama tik DCC siuntimui)" + +#~ msgid "For people using a 10.* or 192.168.* IP number." +#~ msgstr "Žmonėms, naudojantiems 10.* ar 192.168.* IP numerius." + +#~ msgid "Proxy Server Hostname:" +#~ msgstr "Proxy serverio hosto vardas:" + +#~ msgid "Only show away messages the first time they're seen" +#~ msgstr "Rodyti „nėra“ žinutę tik pirmą kartą." + +#~ msgid "Your away settings" +#~ msgstr "Tavo nebūties nuostatos" + +#, fuzzy +#~ msgid "Apply a timestamp to disk logs" +#~ msgstr "Loguose visada rašyti, kada vyksta veiksmas" + +#~ msgid "Generic" +#~ msgstr "Bendra" + +#~ msgid "User List Notify Highlighting" +#~ msgstr "Vartotojų sąrašo notify paryškinimas" + +#, fuzzy +#~ msgid "Notified User Color:" +#~ msgstr "Naujesnių spalva:" + +#, fuzzy +#~ msgid "Notification Timeouts" +#~ msgstr "Pranešimas:" + +#~ msgid "seconds (0=Disable)." +#~ msgstr "sekundžių (0=uždrausti)." + +#~ msgid "Enable Character Translation" +#~ msgstr "Leisti simbolių vertimus" + +#~ msgid "Translation File:" +#~ msgstr "Vertimo byla:" + +#~ msgid "Use a ircII style translation file." +#~ msgstr "Naudoti ircII stiliaus vertimo bylą." + +#~ msgid "Automatically open DCC Send Window" +#~ msgstr "Savaime atidaryti DCC siuntimo langą" + +#~ msgid "Automatically open DCC Recv Window" +#~ msgstr "Savaime atidaryti DCC gavimo langą" + +#~ msgid "Resume on Auto Accept" +#~ msgstr "Pratęsti automatiškai priimant" + +#~ msgid "When Auto-Accepting DCC, try to resume." +#~ msgstr "Kai savaime priimami DCC gavimai, pratęsti esančias bylas." + +#~ msgid "DCC Offers Timeout:" +#~ msgstr "DCC pasiūlymų laiko riba:" + +#~ msgid "File Permissions:" +#~ msgstr "Bylų permisijos:" + +#~ msgid "(octal)" +#~ msgstr "(aštuonetainiais)" + +#~ msgid "Directory to save to:" +#~ msgstr "Katalogas, į kurį saugoti:" + +#~ msgid "Save file with Nickname" +#~ msgstr "Saugoti bylą su niku" + +#~ msgid "DCC Send Options" +#~ msgstr "DCC siuntimo parinktys" + +#~ msgid "Fast DCC Send" +#~ msgstr "Greitas DCC siuntimas" + +#~ msgid "Don't wait for ACKs to send more data" +#~ msgstr "Nelaukti ACK'ų, kad siųstume naujus duomenis" + +#~ msgid "(0=Disabled)" +#~ msgstr "(0=Uždraustas)" + +#~ msgid "Send Block Size:" +#~ msgstr "Siunčiamų blokų dydis:" + +#~ msgid "(1024=Normal)" +#~ msgstr "(1024=Normalus)" + +#~ msgid "Built-in Replies" +#~ msgstr "Įtaisyti atsakymai" + +#~ msgid "Do not reply to CTCP version" +#~ msgstr "Neatsakinėti į CTCP version" + +#~ msgid "Sound Dir:" +#~ msgstr "Garsų katalogas:" + +#~ msgid "Play Command:" +#~ msgstr "Grojimo komanda:" + +#~ msgid "Interface Settings" +#~ msgstr "Sąsajos nuostatos" + +#~ msgid "IRC Input/Output Settings" +#~ msgstr "IRC įvesties/išvesties nuostatos" + +#~ msgid "IRC Input/Output" +#~ msgstr "IRC įvestis/išvestis" + +#~ msgid "Window Layout Settings" +#~ msgstr "Langų išdėstymo nuostatos" + +#~ msgid "Window Layout" +#~ msgstr "Langų išdėstymas" + +#~ msgid "Main Window Settings" +#~ msgstr "Pagrindinio lango nuostatos" + +#~ msgid "Channel Window Settings" +#~ msgstr "Kanalų langų nuostatos" + +#~ msgid "Dialog Window Settings" +#~ msgstr "Dialogų langų nuostatos" + +#~ msgid "Panel" +#~ msgstr "Skydelis" + +#~ msgid "IRC Settings" +#~ msgstr "IRC nustatos" + +#~ msgid "IP Address Settings" +#~ msgstr "IP adreso parinktis" + +#~ msgid "IP Address" +#~ msgstr "IP adresas" + +#~ msgid "Logging Settings" +#~ msgstr "Loginimo nuostatos" + +#~ msgid "Character Set (Translation Tables)" +#~ msgstr "Simbolių aibė (vertimo lentelės)" + +#~ msgid "CTCP Settings" +#~ msgstr "CTCP nuostatos" + +#~ msgid "DCC Settings" +#~ msgstr "DCC Nuostatos" + +#~ msgid "Input Box always in focus" +#~ msgstr "Įvesties laukas visada fokusuotas" + +#, fuzzy +#~ msgid "Userlist icons" +#~ msgstr "Vartotojų sąrašo mygtukai..." + +#~ msgid "Show nickname" +#~ msgstr "Rodyti niką" + +#, fuzzy +#~ msgid " Apply " +#~ msgstr "Pritaikyti" + +#, fuzzy +#~ msgid "CP" +#~ msgstr "CTCP" + +#, fuzzy +#~ msgid "Hide/Show Userlist" +#~ msgstr "Rodyti vartotojo hostą" + +#~ msgid "Perl Script.." +#~ msgstr "Perl skriptas..." + +#~ msgid "Python Script.." +#~ msgstr "Python skriptas..." + +#~ msgid "All Perl Scripts" +#~ msgstr "Visus Perl skriptus" + +#~ msgid "All Python Scripts" +#~ msgstr "Visus Python skriptus" + +#~ msgid "All Plugins" +#~ msgstr "Visus priedus" + +#~ msgid "Kill" +#~ msgstr "Nužudyti" + +#~ msgid "User _Modes" +#~ msgstr "_Būsenos" + +#~ msgid "S_cripts & Plugins" +#~ msgstr "S_kriptai ir pluginai" + +#~ msgid "Use_r Menu" +#~ msgstr "Va_rtotojo meniu" + +#~ msgid "Show invites in active window" +#~ msgstr "Rodyti pakvietimus aktyviame lange" + +#~ msgid "Show notifies in active window" +#~ msgstr "Rodyti notify aktyviame lange" + +#~ msgid "Perform a periodic mail check." +#~ msgstr "Periodiškai aptikrinti paštą." + +#~ msgid "Unload All Plugins" +#~ msgstr "Įšmesti visus pluginus" + +#~ msgid "Ok" +#~ msgstr "Gerai" + +#~ msgid "Background XPM:" +#~ msgstr "XPM fonui:" + +#, fuzzy +#~ msgid "Dialog Buttons" +#~ msgstr "Mygtukai" + +#, fuzzy +#~ msgid "Show the buttons above the text area" +#~ msgstr "Rodyti mygtukus po vartotojų sąrašu" + +#, fuzzy +#~ msgid "Server Sock Name\n" +#~ msgstr "Proxy serverio hosto vardas:" + +#~ msgid "Help.." +#~ msgstr "Pagalba..." + +#, fuzzy +#~ msgid "Close Channel" +#~ msgstr "Nauja kanalo kortelė..." + +#, fuzzy +#~ msgid "Panelize" +#~ msgstr "Skydelis" + +#, fuzzy +#~ msgid "InterScan" +#~ msgstr "Sąsaja" + +#~ msgid "Enable double buffer" +#~ msgstr "Leisti dvigubą buferį" diff --git a/xchat-2.8.8/po/mk.gmo b/xchat-2.8.8/po/mk.gmo new file mode 100644 index 0000000000000000000000000000000000000000..82a6990c8c66a2cab7af08efa27dec954fc07337 GIT binary patch literal 116780 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 T0PL;DnD87hKOND~*!KShk2xNK literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/po/mk.po b/xchat-2.8.8/po/mk.po new file mode 100644 index 0000000..3d83443 --- /dev/null +++ b/xchat-2.8.8/po/mk.po @@ -0,0 +1,5658 @@ +# translation of xchat-2.8.4.mk.po to Macedonian +# Copyright (C) 2004, 2007 Free Software Foundation, Inc. +# This file is put in the public domain. +# +# Arangel Angov <ufo@linux.net.mk>, 2003, 2004. +# Jovan Naumovski <jovan@lugola.net>, 2007. +msgid "" +msgstr "" +"Project-Id-Version: xchat-2.8.4\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2007-06-29 16:40+0200\n" +"Last-Translator: Arangel Angov <ufo@linux.net.mk>\n" +"Language-Team: Macedonian <ufo@linux.net.mk>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Не можам да создадам ~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Зафатен сум" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Си одам" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* Користењето на IRC како root е глупаво! Подобро е\n" +" да си создадете корисничка сметка и да ја користите неа.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Чекам" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Активно" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Неуспешно" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Завршив" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Врзи се" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Откажано" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "Не можам да пристапам на %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Грешка" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s ви нуди „%s“. Дали сакате да прифатите?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Нема активни DCC\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "ДА " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "НЕ " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Вие сте CTCP поплавени од %s, игнорирам %s\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "Вие сте MSG поплавени од %s, го поставувам gui_auto_open_dialog OFF.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s присутни\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s офлајн\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Не сте присутни на некој канал. Пробајте со /join #<channel>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Не сте поврзани. Пробајте со /server <host> [<порта>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Веќе сте означени како отсутни: %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "Веќе сте означени како присутни.\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "Ми треба /bin/sh за да извршам!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Достапни команди:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Команди дефинирани од корисникот:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Команди дефинирани од приклучокот:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Напишете /HELP <команда> за повеќе информации, или /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Непознатиот аргумент „%s“ е игнориран." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "Не најдов таков додаток.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Тој додаток одбива да се исклучи. \n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <име> <акција>, додава копче под корисничката листа" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <командата>, испраќа команда до сите канали на кои што сте" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <командата>, испраќа команда до сите канали на кои што сте" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <командата>, испраќа команда на сите сервери на кои што сте" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<причина>], ве обележува како отсутен" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "BACK, ве обележува како присутен (не отсутен)" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <маска> [<тип>], ги банира сите кои што одговарат на маската на " +"сегашниот канал. Ако се веќе на каналот ова не ги исфрла (треба оператор)" + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <променлива> [<вредност>]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "" +"CLEAR [ALL|HISTORY], Го чисти прозорецот од текст или историја на команди" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, Го затвора прозорецот/јазичето" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" +"COUNTRY [-s] <code|wildcard>, ја наоѓа кратенката на земјата, пр: au = " +"австралија" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <прекар> <порака>, испрати ја CTCP пораката до прекарот, вообичаени " +"пораки се VERSION и USERINFO" + +#: src/common/outbound.c:3516 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "CYCLE [<channel>], го напушта тековниот канал и се приклучува повторно" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <прекар> - прифатете понудена датотека\n" +"DCC SEND [-maxcps=#] <прекар> [датотека] - испратете датотека некому\n" +"DCC PSEND [-maxcps=#] <прекар> [датотека] - испратете датотека во пасивен " +"режим\n" +"DCC LIST - покажи DCC листа\n" +"DCC CHAT <прекар> - понуди DCC CHAT некому\n" +"DCC PCHAT <nick> - понуди DCC CHAT со користење на " +"пасивен режим\n" +"DCC CLOSE <тип> <прекар> <датотека> пример:\n" +" /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <прекар>, отстранува операторски статус од прекарот на тековниот канал " +"(потребно е да имате операторски статус)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <име>, брише копче под корисничката листа" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <прекар>, отстранува операторски статус од прекарот на тековниот канал " +"(потребно е да имате операторски статус)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <прекар>, отстранува глас од прекарот на тековниот канал (потребно е " +"да имате операторски статус)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, Ја прекинува врската со серверот" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <прекар|host|ip>, Пронаоѓа IP број на корисникот" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <text>, Печати текст локално" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <command>, ја извршува командата. Ако користите -o тогаш испраќате " +"на тековниот канал" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, го испраќа процесот SIGCONT" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], убива извршена програма во тековната сесија. Ако -9 е даден " +"тогаш процесот е SIGKILL'ed" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, го испраќа процесот SIGSTOP" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, испраќа податоци до stdin процесите" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, го испушта тековното чекање на серверот" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <host> [<port>],proxy-јата преку host, стандардна порта 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <nick> <password>, Уништува зафатен неупотреблив прекар" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" +"HOP <прекар> дава chanhalf-op статус на прекарот (потребен е операторски " +"статус)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <password>, ве идентификува кај nickserv" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <mask> <types..> <options..>\n" +" маска - host маска за игнорирање, пр: *!*@*.mt.net.mk\n" +" типови - типови на податоци за игнорирање, еден или сите од:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" опции - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <прекар> [<канал>], кани некого на каналот, стандардно тоа е " +"тековниот канал (потребен е операторски статус)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <channel>, се приклучува на каналот" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <прекар>, го исфрла прекарот од тековниот канал (потребен е операторски " +"статус)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <прекар>, го банира па потоа го исфрла прекарот од тековниот канал " +"(потребен е операторски статус)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, форсира проверка за лаг" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <стринг>, бара стринг во баферот" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <датотека>, вчитува додаток или скрипта" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, одзема опер. статус на сите оператори во тековниот канал (потребен е " +"операторски статус)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, одзема опер. статус на сите оператори во тековниот канал (потребен е " +"операторски статус)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <акција>, ја испраќа акцијата на тековниот канал (акциите се испишани во " +"трето лице, на пр. /me скокна)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, ги исфрла сите од каналот (потребен е операторски статус)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, дава опер. статус на сите корисници во тековниот канал (потребен е " +"операторски статус)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <прекар> <порака>, испраќа приватна порака" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, ги листа прекарите од тековниот канал" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <прекар> <порака>, испраќа CTCP забелешка" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <hostname> [<port>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <прекар>, го поставува прекарот" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <прекар/канал> <порака>, испраќа забелешка. Забелешките се тип на " +"пораки на кои што треба да реагирате" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n network1[,network2,...]] [<nick>], ја покажува вашата листа за " +"известување или додава некој на неа" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" +"OP <прекар>, дава опер. статус на прекарот (потребен е операторски статус)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<канал>] [<причина>], го напушта тековниот канал" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <прекар | канал>, CTCP го пингува прекарот или каналот" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "" +"QUERY [-nofocus] <nick>, отвора нов прозорец за приватен разговор со некого" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<причина>], се одврзува од тековниот сервер" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <текст>, праќа текст до серверот во суров формат" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], може да се стартува само " +"со /RECONNECT за повторно врзување на истиот сервер или /RECONNECT ALL за " +"врзување на сите отворени сервери" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<host>] [<port>] [<password>], може да се стартува само со /" +"RECONNECT за повторно врзување на истиот сервер или /RECONNECT ALL за " +"врзување на сите отворени сервери" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <текст>, испраќа податоци до xchat, како да се испратени од irc сервер" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <текст>, го испраќа текстот до објектот во тековниот прозорец" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <прекар> [<датотека>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <host> <port> <channel>, се врзува и се приклучува на канал" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <host> <port> <channel>, се врзува и се приклучува на канал" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <host> [<port>] [<password>], се врзува на сервер, " +"стандардната порта за нормални врски е 6667, а 9999 е за ssl врски" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <host> [<port>] [<password>], се врзува на сервер, стандардната порта " +"е 6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <променлива> [<вредност>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<позиција>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "TOPIC [<наслов>], поставува наслов на каналот" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Во фиоката трепка помеѓу двете икони.\n" +"TRAY -f <filename> Постави ја иконата во фоката на некоја " +"фиксна икона.\n" +"TRAY -i <number> Иконата светка со внатрешна икона.\n" +"TRAY -t <text> Постави го балончето со совет на " +"фиоката.\n" +"TRAY -b <title> <text> Постави го балончето со совет на фиоката." + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <маска> [<маска>...], одбанира дадена маска." + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <маска> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <име> исклучува додаток или скрипта" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, отвора URL во вашиот прелистувач" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <nick1> <nick2> итн, означува прекар(и) во листата на " +"присутни на каналот" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <прекар>, дава глас некому (потребен е операторски статус)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <порака>, ја пишува пораката на сите канали" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <порака>, ја испраќа пораката на сите оператори на тековниот канал" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Користење: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"Не постои помош за таа команда.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Не постои таква команда.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Лош аргумент за корисничката команда.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Премногу рекурзивни кориснички команди, прекинувам." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Непозната команда. Пробај /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "Нема xchat_plugin_init symbol; сигурно ли е ова xchat додаток?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Дали сте сигурни дека ова е SSL способена порта и сервер?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Не можам да го резолвирам hostname %s\n" +"Проверете ги вашите IP подесувања!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Proxy traversal откажа.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Ќе пробам на следниот сервер за %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Предупредување: \"%s\" дадениот карактер е непознат. Нема да биде применет " +"разговор за мрежата %s." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 е додаден/а во вашата листа за известување." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Бан листа:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tНе можете да влезете на%C26 %B$1 %O(Банирани сте)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 е познат како $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 sets ban on $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tChannel $1 создаден на $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O одзема полу-операторски статус на%C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O одзема операторски статус на%C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O отстранува глас од%C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 поставува exempt на $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O дава полу-операторски статус на%C26 $2" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 поставува само со покани $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UКанал Корисници Наслов" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 поставува режим $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Канал $1 режими: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O дава операторски статус на%C26 $2" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 отстранува exempt од $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 отстранува само со покани $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 го отстранува клучниот збор за каналот" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 го отстранува ограничувањето за корисници" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 го поставува клучниот збор за каналот: $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 поставува ограничување на каналот на $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 го отстранува банот на $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O дава глас на%C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Се врзав. Сега се најавувам..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22Се врзувам на $1 ($2) порта $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21Врската е неуспешна. Грешка: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tДоби CTCP $1 од $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tДоби CTCP $1 од $2 (до $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tДоби CTCP звук $1 од1 $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tДоби CTCP $1 од $2 (до $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tDCC CHAT до %C26$1%O прекина." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "" +"%C22*%O$tвоспоставена е DCC CHAT DCC CHAT врска со %C26$1 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tDCC CHAT со %C26$1%O се загуби ($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tДоби DCC CHAT понуда од $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tНудам DCC CHAT на $1" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tВеќе нудам CHAT на $1" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$tDCC $1 обидот за врзување со%C26 $2%O е неуспешен (err=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tДоби '$1%O' од $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "" +"%C24,18 Тип До/Од Статус Големина Позиција Датотека " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O.%010%C22*%O" +"$tContents of packet: $2" +msgstr "" +"%C22*%O$tдоби погрешно барање за DCC од %C26$1%O.%010%C22*%O$tСодржина на " +"пакетот: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tНудам%C26 $1%O на%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tНе постои таква DCC понуда." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV%C26 $2%O до%C26 $1%O прекина" + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC RECV%C26 $1%O од%C26 $3%O заврши %C30[%C26$4%O cps%C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC RECV врската е воспоставена со%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV%C26 $1%O од%C26 $3%O не успеа ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV: Не можам да ја отворам $1 за запишување ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "" +"%C22*%O$tThe file%C26 $1%C веќе постои, пробај да ја зачуваш како%C26 $2%O." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Ohas побара продолжување%C26 $2 %Cод%C26 $3%C." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC SEND%C26 $2%O до%C26 $1%O прекина." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC SEND%C26 $1%O до%C26 $2%O заврши %C30[%C26$3%O cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tвоспоставена е DCC SEND врска до%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND%C26 $1%O до%C26 $2%O не успеа. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Oпонуди%C26 $2 %O(%C26$3 %Obytes)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oдо%C26 $3 %Cзапре - прекинувам." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oдо%C26 $3 %Oистече - прекинувам." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 е избришан од листата со известувања." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tИсклучен ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tЈа најдов вашата IP: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O е додаден на листата за игнорирање." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "Игнорирањето за %C26$1%O e променето." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "" +"%C24,18 Маска на host-от PRIV NOTI CHAN CTCP DCC INVI UNIG" + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%Oе отстранет од листата за игнорирање." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " Листата за игнорирање е празна." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "" +"%C22*%O$tНе можам да се приклучам на%C26 %B$1 %O(Каналот е само со покани)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tПоканет/а си на%C26 $1%O од%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) се приклучи на $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$tНе можам да се приклучам на%C26 %B$1 %O(бара клучен збор)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 го исфрли $2 од $3 ($4%O)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$tТебе те уби $1 ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD прескокнато." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 веќе е искористен. Пробувам пак со $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "%C22*%O$tПрекарот веќе се користи. Користи /NICK да пробаш друг." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tне постои такво DCC." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tМоментално нема процеси што работат" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$Листата за известување е празна." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Листа за известување " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 корисници во листата за известување." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tИзвестување: $1 е offline ($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$ttИзвестување: $1 е присутен ($3)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) го напушти $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) го напушти $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tПинг одговор од $1 : $2 секунди" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tНема пинг одговори веќе $1 секунди, ја прекинувам врската." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tПроцесот веќе работи" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 се исклучи (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 поставува режими%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tБарам IP број за%C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22Се поврзав." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22Барам $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tСтопиран е претходниот обид за поврзување (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29Насловот на $1%C %C29е: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 го промени насловот во: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29Насловот за $1%C %C29е поставен од $2%C %C29на $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tНепознат host. Можеби го згрешивте во пишувањето?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "" +"%C22*%O$tНе можам да се приклучам%C26 %B$1 %O(Ограничувањето за корисници е " +"достигнато)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Корисници на $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cе отсутен %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OКрај на WHOIS листата." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O не реагира%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O %C26 $2%O, најава:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" +"%C22*%O$t%C28[%O$1%C28] %Oвистински корисник@host%C27 $2%O, вистинска IP%C27 " +"$3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Сега зборувам на $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tТи си исфрлен од $2 од $3 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tГо напушти каналот $3" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tГо напушти каналот $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tГо поканивте%C26 $1%O to%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tСега си познат како $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "Вчитав лог од" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** ЗАВРШУВАМ СНИМАЊЕ НА %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** ЗАПОЧНУВАМ СНИМАЊЕ НА %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Не можам да ги отворам датотеките со записи за снимање. Провери\n" +" ги дозволите на %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Лева порака" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Десна порака" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "Прекарот на личноста што се приклучува" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "Каналот на кој што се приклучува" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "Host на личноста" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Прекар" + +#: src/common/text.c:973 +msgid "The action" +msgstr "Акцијата" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Режим за знак" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Идентификуван текст" + +#: src/common/text.c:980 +msgid "The text" +msgstr "Текстот" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Пораката" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Стар прекар" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Нов прекар" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Прекар на личноста која го променила насловот" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Наслов" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Канал" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "Прекарот на исфрлувачот" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "Личноста што е исфрлена" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "Каналот" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "Причината" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "Прекарот на личноста што си оди" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "Времето" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "Создавачот" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Прекар" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Причината" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Host" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "Од кого е" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "Времето во x.x формат (види подолу)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "Каналот до кој што оди" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "Звукот" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "Прекарот на личноста" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "CTCP настанот" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "Прекарот на личноста кој го поставила клучот" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "Клучот" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "Името на личноста која што го поставила ограничувањето" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "Ограничувањето" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "Името на личноста која дала op" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "Прекарот на личноста која што добила op" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "Прекарот на личноста која добила halfop" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "Прекарот на личноста која направила halfop" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "Прекарот на личноста која што дала глас" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "Прекарот на личноста која што добила глас" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "Прекарот на личноста која што банирала" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "Бан маската" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "Прекарот кој што го отстранил клучот" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "Прекарот кој што го отстранил ограничувањето" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "Прекарот на личноста што одземала op" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "Прекарот на личноста на која што и е земен op" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "Прекарот на личноста која одзела halfop" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Прекарот на личноста на која и е одземен halfop" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "Прекарот на личноста која направила одземање на глас" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "Прекарот на личноста на која и е одземен гласот" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "Прекарот на личноста која што одбанувала" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "Прекарот на личноста која направила exempt" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "Exempt маска" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "Прекарот на личноста која отстранила exempt" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "Прекарот на личноста која поканила" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "Маската за покана" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "Прекарот на личноста која ја отстранила поканата" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "Прекарот на личноста која што го поставува режимот" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "Знаците за режим (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "Буквата за режим" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "Каналот се подесува" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Корисничко име" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Целосно име" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Членство на каналот/\"е IRC оператор\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Информации за серверот" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Неактивност" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Време на вклучување" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Причина за отсуство" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Порака" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Сметка" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "Вистински корисник@host" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "Вистинска IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Име на каналот" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Текст" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Име на серверот" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Прекар на личноста која те поканила" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Корисници" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Прекарот е употребен" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Се обидувам со прекарот" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Порта" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Мрежа" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Стринг на режими" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "IP адреса" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "DCC тип" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Име на датотеката" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Дестинација на датотеката" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Име на патеката" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Позиција" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Големина" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "DCC стринг" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Број на предмети за известување" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Старо име на датотеката" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Ново име на датотеката" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Примач" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Маска на Host-от" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Име на host" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "Пакетот" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Секунди" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Прекарот на личноста што е поканета" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Бан маска" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Кој го ставил банот" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Време на банот" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Грешка при настанот %s.\n" +"Вчитувам стандардно." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"Неможам да ја прочитам звучната датотека:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "Затворен socket на мрежниот host" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Врската е одбиена" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Нема рута до host-от" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Конекцијата истече" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Не можам да ја назначам таа адреса" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Конекцијата е ресетирана од peer" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Островот Асенсион" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Андора" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Обединети Арапски Емирати" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Авганистан" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Антигvа и Барбуда" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Ангуила" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Албанија" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Ерменија" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Холандски Антили" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Ангола" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Антартик" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Аргентина" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "Обратен DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Американски Самоа" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Австрија" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Австралија" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Аруба" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Фолкландски Острови" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Азербејџан" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Босна и Херцеговина" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Барбадос" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Бангладеш" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Белгија" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Буркина Фасо" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Бугарија" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Бахреин" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Бурунди" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Бизниси" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Бенин" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Бермуда" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Брунеи Дарусалам" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Боливија" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Бразил" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Бахами" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Бутан" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Бувет Острови" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Боцвана" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Белорусија" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Белиз" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Канада" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Кокосови Острови" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "Демократска Репубика Конго" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "Централно Африканска Република" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Конго" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Швајцарија" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Брегот на Слоновата Коска" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Кук острови" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Чиле" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Камерун" + +#: src/common/util.c:898 +msgid "China" +msgstr "Кина" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Колумбија" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Internic Commercial" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Костарика" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Србија и Црна Гора" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Куба" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Кејп Верде" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Божиќни острови" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Кипар" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "Чешка" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Германија" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Џибути" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Данска" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Доминика" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "Доминиканска република" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Алжир" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Еквадор" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Образовна институција" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Естонија" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Египет" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Западна Сахара" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Еритреја" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Шпанија" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Етиопија" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Европска Унија" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Финска" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Фиџи" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Фолкландски острови" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Микронезија" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Фарски острови" + +#: src/common/util.c:928 +msgid "France" +msgstr "Франција" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Габон" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Велика Британија" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Гренада" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Грузија" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Француска Гвинеја" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Британски каналски острови" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Гана" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Гибралтар" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Гренланд" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Гамбија" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Гвинеја" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Влада" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Гвадалупе" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Екваторијална Гвинеја" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Грција" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "С. Џорџија и С. Сендвич Острови" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Гватемала" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Гвам" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Гвинеја-Бисао" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Гвајана" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Хонг Конг" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Хард и МекДоналд острови" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Хондурас" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Хрватска" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Хаити" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Унгарија" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Индонезија" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Ирска" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Израел" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Островот Ман" + +#: src/common/util.c:959 +msgid "India" +msgstr "Индија" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Информативен" + +#: src/common/util.c:961 +msgid "International" +msgstr "Интернационално" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Територија на Британскиот Индискиот океан" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Ирак" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Иран" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Исланд" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Италија" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Џерзи" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Јамајка" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Јордан" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Јапонија" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Кенија" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Киргистан" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Камбоџа" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Кирибати" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Коморос" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "Св. Кит и Невис" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Северна Кореја" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Јужна Кореја" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Кувајт" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Кајмански острови" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Казакстан" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Лаос" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Либан" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Света Луција" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Линхенштајн" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Шри Ланка" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Либерија" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Лесото" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Литванија" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Луксембург" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Латвија" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Либија" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Мароко" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Монако" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Молдавија" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "United States Medical" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Мадагаскар" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Маршалски острови" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Воена" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Македонија" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Мали" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Мјанмар" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Монголија" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Макао" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Острови Северна Маријана" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Мартиник" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Мавританија" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Монсерат" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Малта" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Маурициус" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Малдиви" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Малави" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Мексико" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Малезија" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Мозамбик" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Намибија" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Нова Каледонија" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Нигер" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Интерна мрежа" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Норфолски острови" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Нигерија" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Никарагва" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Холандија" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Норвешка" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Непал" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Науру" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Ниуе" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Нов Зеланд" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Оман" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "уИнтерна непрофитна организација" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Панама" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Перу" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Француска Полинезија" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Папуа Нова Гвинеја" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Филипини" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Пакистан" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Полска" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "Св. Пјер и Микелон" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Питкаим" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Порторико" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Палестинска територија" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Португалија" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Палау" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Парагвај" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Катар" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Reunion" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Романија" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "Old School ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Руска Федерација" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Руанда" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Саудиска Арабија" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Соломонски острови" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Сејшели" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Судан" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Шведска" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Сингапур" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "Св. Елена" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Словенија" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Свалбалд и Јан Маен острови" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Словачка" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Сиера Леоне" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "Сан Марино" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Сенегал" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Сомалија" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Суринам" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "Сао Томе и Принципе" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Бивш СССР" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "Салвадор" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Сирија" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Свазиленд" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Turks and Caicos Islands" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Чад" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Француски јужни територии" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Того" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Тајланд" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Таџикистан" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Источен Тимор" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Туркменистан" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Тунис" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Тонга" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Турција" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Тринидад и Тобаго" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Тувалу" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Тајван" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Танзанија" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Украина" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Уганда" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Обединето Кралство" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "Соединетите Американски Држави" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Уругвај" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Узбекистан" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Ватикан" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "Св. Винсент и Гренадин" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Венецуела" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Британски девствени острови" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "Американски девствени острови" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Виетнам" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Вануату" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Волис и Футуна острови" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Самоа" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Јемен" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Мајота" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Југославија" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Јужна Африка" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Замбија" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Зимбабве" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Непознато" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "Отвори нов дијалог прозорец" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "Испрати датотека" + +#: src/common/xchat.c:728 +#, fuzzy +msgid "_User Info (WhoIs)" +msgstr "Кориснички информации (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +#, fuzzy +msgid "O_perator Actions" +msgstr "Дејства за операторот" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Дај op" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Одземи op" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Дај глас" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Одземи глас" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Исфрли/Банирај" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Исфрли" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Банирај" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "Исфрли и банирај" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Напушти канал" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Приклучи се на канал..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Внеси канал за да се приклучиш:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Врски до серверот" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Пингувај го серверот" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Сокриј верзија" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Оp" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "Земи оp" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "чао" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Внеси причина за исфрлувањето %s:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Испрати датотека" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Дијалог" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "КојЕ" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Испрати" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Разговор" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Исчисти" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Пинг" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "Не можев да се порвзам со магистралата на сесијата" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "Не успеав да го довршам NameHasOwner" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "Не успеав да ја довршам командата" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "оддалечен пристап" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "приклучок за оддалечен пристап со користење на DBUS" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Не можев да се порвзам со магистралата на сесијата: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Не успеав да го добијам %s: %s\n" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "_За" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Мултиплатформски клиент за IRC" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Табела со карактери" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "Не сум поврзан." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Мораш да избереш неколку банови." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "Дали сте сигурни дека сакате да ги отстраните сите банирања од %s?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Маска" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "Од" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Дата" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" +"Можете да го отворите прозорецот на листата со банирани додека сте во " +"јазичето на каналот." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: Бан листа (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Отстрани" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Скрати" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Освежи" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Прикажувам %d/%d корисници на %d/%d канали." + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Избери излезно име на датотека" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "_Приклучи се на канал" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "_Копирај го името на каналот" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "Копирај го текстот од _насловот" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: Листа на канали (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "_Барај" + +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "_Симни листа" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "Зачувај ја _листата..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "Прикажи само:" + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "канали со" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "до" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "корисници" + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "Барај во:" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "Име на каналот" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "Барај тип:" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "Едноставно пребарување" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "Совпаѓање на шаблони (Wildcards)" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "Регуларни изрази" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Најди:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Испрати датотека на %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Дадотеката не може да доиспрати" + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"Не можам да пристапам до датотеката: %s\n" +"%s.\n" +"Доиспраќањето е невозможно." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"Датотеката во директориумот за преземање е поголема од понудената. " +"Доиспраќањето не е возможно." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "Не можам да ја примам истата датотека од двајца." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: Качувања и преземања" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Статус" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Датотека" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "ЕТА" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "И двете" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Качувања" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "Преземања" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Детали" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Датотека:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "Адреса:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Прекини" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Прифати" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Продолжи" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Отвори папка..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: Листа на DCC Chat" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Примени" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Испратени" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "Почетно време" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*НОВ*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "УРЕДИ МЕ" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Име" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Команда" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Помести горе" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Помести долу" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Откажи" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Сними" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Додај нов" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Избриши" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Подреди" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Помош" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "Не се поврзувај автоматски на серверот" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "Користи друг конфигурациски директориум" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "Не вчитувај додатоци автоматски" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "Прикажи директориум за автоматско вчитување на додатоците" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "Покажи го директориумот за конфигурациите на корисникот" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Отвори URL како irc://server:port/channel" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Изврши команда:" + +#: src/fe-gtk/fe-gtk.c:132 +#, fuzzy +msgid "Open URL or execute command in an existing XChat" +msgstr "Отвори URL во постоечки XChat" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" +"Започни минимизирано. Ниво 0=нормално 1=иконизирано 2=место за известување" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "ниво" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Покажи информации за верзијата" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"Не можам да го отворам фонтот:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "Баферот за пребарување е празен.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d бајти" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Редица за испраќање на мрежата: %d бајти" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"Командата Изврши ги извршува податоците во Податок1 како да се искуцаи во " +"полето. Може и да содржи текст (кој што ќе биде испратен на канал/личност), " +"команди или кориснички команди." + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"Командата за менување на страницата скока помеѓу страници во тетратката. " +"Поставете го податок 1 на страницата на која што сакате да се префрлите. Ако " +"податок 2 е поставен на што било, тогаш скокачот ќе се однесува релативно во " +"однос на тековната позиција." + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"Командата за внесување во бафер ќе ја внесе содржината на податок 1 во " +"записот каде што главната секвенца била притисната, односно на тековната " +"позиција на стрелката." + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"Командата за лизгање го лизга копчето за текстот нагоре и надоле по " +"страницата. Поставете на 1 за било горе или долу, + или -1." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"Командата за поставување на бафер го поставува записот каде што била внесена " +"содржината за главната секвенца на податокот 1." + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "Команда" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "Команда" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Оваа команда го менува текстот во полето со цел да доврши некомплетен прекар " +"или команда." + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "Оваа команда овозможува лизгање, горе и долу по листата со прекари." + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Командата ги проверува последните внесени зборови и ги заменува ако најде " +"совпаѓање" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Оваа команда го преместува предното јазиче лево за едно место" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Оваа команда го преместува предното јазиче десно за едно место" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Оваа команда ја преместува тековната фамилија на јазичиња налево" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Оваа команда ја преместува тековната фамилија на јазичиња надесно" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "" +"Ја става линијата за внесување во историја но не ја испраќа на серверот" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "Се појави грешка при вчитувањето на конфигурацијата за копчињата" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<none>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Режим" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Копче" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Дејствие" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: Кратенки за тастатура" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Податок 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Податок 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Грешка при отворање на датотеката со конфигурација на копчињата\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Непознато клучно име %s во датотеката за конфгируација на копчињата\n" +"Вчитувањето е прекинато. Поправи го %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Непозната акција %s во датотеката за конфигурација на копчињата\n" +"Вчитувањето е прекинато, Поправи го %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Вчитувањето е прекинато, Поправи го %s/копчињата\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"Датотеката за конфигурација на копчињата е расипана, вчитувањето е " +"прекинато\n" +"Поправи го %s/keybindings.conf\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "Не можам да запишам во таа датотека" + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Не можам да ја прочитам датотеката" + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Таа маска веќе постои" + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Приватно" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Забелешка" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Покана" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Не игнорирај" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Внеси маска за игнорирање:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: Листа на игнорирани" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Статистики за игнорирани:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Канал:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Приватно:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Забелешка:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Покани:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "Додај..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "Името на каналот е прекратно, обидете се повторно." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: Врската заврши" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "Врската со %s е целосна." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"Во прозорецот со листа на сервери не беше внесен канал на кој ќе се " +"приклучувам автоматски на оваа мрежа." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "Што сакате да правите следно?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "_Ништо, ќе се приклучам на некој канал подоцна." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "_Приклучи се на овој канал:" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" +"Ако го знаете името на каналот на кој што сакате да се приклучите, внесете " +"го тука." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "О_твори го прозорецот со листа на канали." + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "Земањето на листата со канали може да потрае една до две минути." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "_Секогаш прикажувај го овој дијалог прозорец после поврзување." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Дијалог со" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Насловот на %s е: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Нема поставено наслов" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"Овој сервер има %d канали и дијалози поврзани со него. Да ги затворам сите?" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "Да го исклучам XChat?" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "Не прашувај наредниот пат." + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Вие сте поврзани на %i IRC мрежи." + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "Дали сигурно сакате да напуштите?" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "Некои податоци сеуште се пренесуваат." + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "_Минимизирај се во местото за известување" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Внеси атрибут или код за боја" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Задебелено</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Потцртано</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Нормално" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Бои 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Бои 8-15" + +#: src/fe-gtk/maingui.c:1612 +#, fuzzy +msgid "_Settings" +msgstr "П_оставувања" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "Сокриј ги пораките за приклучување и напуштање" + +#: src/fe-gtk/maingui.c:1625 +#, fuzzy +msgid "_Extra Alerts" +msgstr "Известувања" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "Свирни на порака" + +#: src/fe-gtk/maingui.c:1628 +#, fuzzy +msgid "Blink Tray _Icon" +msgstr "Трепкај ја иконата при:" + +#: src/fe-gtk/maingui.c:1629 +#, fuzzy +msgid "Blink Task _Bar" +msgstr "Трепкај на лентата со задачи на:" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +#, fuzzy +msgid "_Detach" +msgstr "_Откачи јазиче" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "_Затвори" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "Корисничкото ограничување мора да биде број!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Заштита на наслов" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Без надворешни пораки" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Тајна" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Само со покани" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Модерирано" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Бан листа" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Збор" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Корисничко ограничување" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Покажи/скриј корисничка листа" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"Неможам да поставам транспарентна позадина!\n" +"\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Внеси нов прекар" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Непознат host" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Вистинско име:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Корисник:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "Земја:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Сервер:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "пред %u минути" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Последна порака:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Порака за отсуство:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"Мени лентата сега е скриена. Можете да ја прикажете повторно со притискање " +"на F9 во празен дел од површината на главниот текст." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Отвори ја врската во прелистувач" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Копирај ја избраната врска" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Приклучи се на канал" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Напушти канал" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Промени канал" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: Корисничко мени" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Уреди го ова мени..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Земи листа на канали..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Кориснички команди - Специјални кодови:\n" +"\n" +"%c = тековен канал\n" +"%e = име на тековната мрежа\n" +"%m = инфо за машината\n" +"%n = твојот прекар\n" +"%t = време/датум\n" +"%v = xchat верзија\n" +"%2 = збор 2\n" +"%3 = збор 3\n" +"&2 = збор 2 на крај на линијата\n" +"&3 = збор 3 на крај на линијата>\n" +"\n" +"eg:\n" +"/cmd перо здраво\n" +"\n" +"%2 треба да биде \"перо\"\n" +"&2 треба да биде \"перо здраво\"." + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Копчиња за корисничката листа - Специјални кодови:\n" +"\n" +"%a = сите избрани прекари\n" +"%c = тековен канал\n" +"%e = име на тековната мрежа\n" +"%h = Име на host-от на избраниот прекар\n" +"%m = инфо за машината\n" +"%n = твојот прекар\n" +"%s = избран прекар\n" +"%t = време/дата\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Копчиња за дијалог - Специјални кодови:\n" +"\n" +"%a = сите избрани прекари\n" +"%c = тековен канал\n" +"%e = име на тековната мрежа\n" +"%h = Име на host-от на избраниот прекар\n" +"%m = инфо за машината\n" +"%n = твојот прекар\n" +"%s = избран прекар\n" +"%t = време/дата\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"CTCP одговори - специјални кодови:\n" +"\n" +"%d = дата (целиот ctcp)\n" +"%e = име на тековната мрежа\n" +"%m = инфо за машината\n" +"%s = прекар кој испрати ctcp\n" +"%t = време/дата\n" +"%2 = збор 2\n" +"%3 = збор 3\n" +"&2 = збор 2 на крај на линијата\n" +"&3 = збор 3 на крај на линијата\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"URL Handlers - Специјални кодови:\n" +"\n" +"%s = URL стрингот\n" +"\n" +"Ставањето на ! пред командата\n" +"означува дека треба да се испрати во\n" +"школката наместо во XChat" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: Команди дефинирани од корисникот" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: Скокачко мени на корисничката листа" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Замени со" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: Замени" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: URL справувачи" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: Копчиња за корисничката листа" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: Копчиња за дијалог" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: CTCP реплики" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "Ли_ста на мрежата..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "_Нов" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Серверско јазиче..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Јазиче на канал..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Прозорец на серверот..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Прозорец на каналот..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "_Вчитај додаток или скрипта..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "_Излез" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "_Поглед" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "_Мени лента" + +#: src/fe-gtk/menu.c:1592 +msgid "_Topic Bar" +msgstr "_Насловна лента" + +#: src/fe-gtk/menu.c:1593 +msgid "_User List" +msgstr "_Корисничка листа" + +#: src/fe-gtk/menu.c:1594 +msgid "U_serlist Buttons" +msgstr "К_опчиња за корисничката листа" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "Копчиња за р_ежим" + +#: src/fe-gtk/menu.c:1597 +msgid "_Channel Switcher" +msgstr "Менувач на _канали" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "_Јазичиња" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "Д_рво" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "Мерења на _мрежата" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Исклучено" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Графа" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "_Сервер" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "_Исклучи се" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "_Поврзи се пак" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "Приклучи се на канал..." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "Приклучи се на канал..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Означи отсуство" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "_Корисничко мени" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "П_оставувања" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "_Преференции" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Напредно" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Автоматско заменување..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "CTCP реплики..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Копчиња за дијалог..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Кратенки за тастатра..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Текстуални настани..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "URL." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Кориснички команди..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Копчиња за корисничката листа..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Скокачка корисничка листа..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_Прозорец" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Бан листа..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Табела со карактери..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Директен разговор..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Пренос на датотеки..." + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "Бан листа..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Листа на игнорирани..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Додатоци и скрипти..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Лог..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "Фаќач на URL..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Ресетирај ја линијата за означување" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "И_счисти текст" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Барај во текстот..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Зачувај текст..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_Помош" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "_Содржина" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "_За" + +#: src/fe-gtk/menu.c:2147 +#, fuzzy +msgid "_Attach" +msgstr "_Прикачи прозорец" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Последен пат виден" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Offline" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Никогаш" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "пред %d минути" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Присутен" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Внеси прекар за додавање:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "Извести на овие мрежи:" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "Се прифаќа листа на мрежи разделена со запирки." + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "XChat: Листа на игнорирани" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "Отвори дијалог" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" +"Не можам да најдам „notify-send“ за да отворам известувања во балончиња.\n" +"Ве молам, инсталирајте linotify." + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "XChat: Поврзан сум со %u мрежи и %u канали" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "_Врати" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "_Скриј" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "_Трепни на" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "Порака на каналот" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "Приватна порака" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "Осветлена порака" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "Отсуство" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat: Осветлена порака од: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat: %u осветлени пораки, најновата од: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat: Нова јавна порака од: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat: %u нови јавни пораки." + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat: Приватни пораки од: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "XChat: %u приватни пораки, најновата од: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat: Понуда за датотека од: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "XChat: %u понуди за датотеки, најновата од: %s (%s)" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Верзија" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Опис" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Избери додаток или скрипта за вчитување" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: Додатоци и скрипти" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "_Вчитај..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "_Извади" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Сними како..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: Лог (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Исчисти лог" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "Прозорецот кој го отвори ова Барање не постои повеќе." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "Барањето го достигна крајот, не се пронајде ништо." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: Барај" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "_Разликувај мали-големи букви" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "Барај _наназад" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "_Најди" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Нова мрежа" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Сигурно сакаш да ја отстраниш мрежата \"%s\" и сите нејзини сервери?" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "Канал" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: Листа на канали (%s)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "Лозинка:" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "_Уреди" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "Корисничкото име и вистинското име не може да се празни." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: Уреди %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Сервери за %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Поврзи се само на избраниот сервер" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Не кружи низ сите сервери ако врската се прекине." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Вашите детали" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Корисни глобални кориснички информации" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "_Прекар:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Втор избор:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "_Корисничко име:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "Вистинск_о име:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Се поврзувам" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Автоматско врзување на оваа мрежа при подигнување на програмата" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "Користи прокси сервер" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "Користи SSL за сите сервери на оваа мрежа" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Прифати невалиден SSL сертификат" + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "Напушти канал:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "" +"Канали на кои што сакаш да се приклучиш, одвоени со запирки, но не и со " +"празни места!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Команда за поврзување:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Додатни команди за извршување по поврзување. Ако ви треба повеќе од една, " +"поставете го ова на LOAD -e <filename>, каде <filename> е текстуална " +"датотека полна со команди за извршување." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Лозинка за серверот:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Ако вашиот прекар бара лозинка, внесете ја овде. Не сите IRC мрежи го " +"поддржуваат ова." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Лозинка за серверот:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Лозинка за серверот. Ако се двоумите, оставете празно." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Множество на знаци:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: Листа на мрежи" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Информации за корисникот" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Трет избор:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Мрежи" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "Прескокни ја листата на мрежи при подигнување на програмот" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "_Уреди..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "_Подреди" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" +"Ја подредува по азбучен редослед листата со мрежи. Користете SHIFT-UP и " +"SHIFT-DOWN за да поместите ред." + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "В_рзи се" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Изглед на полето за текст" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Фонт:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Позадинска слика:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Лизгачки линии:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Обоени прекари" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Давај му на секоја личност на IRC различна боја" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Порамнети прекари" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Направи ги прекарите подредени кон десно" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Провидна позадина" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Покажи линија за означување" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Вметни црвена линија после последниот прочитан текст." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Поставување за провидноста" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Црвена:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Зелена:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Сина:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Ознаки за времето" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Овозможи ознаки за времето" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Временски формат:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Погледни ги strftime man страниците за повеќе детали." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Ш" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "Ред по последно зборување" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Поле за внесување" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Користи ги фонтовите и боите од кутијата за текст" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Проверка на правопис" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Довршување на прекарите" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "Автоматско довршување на прекарот (без копчето „TAB“)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Суфикс на комплетирање на прекарот:" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "Суфикс на комплетирање на прекарот:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Поле за внесување на кодови" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Интерпретирај %nnn како ASCII вредност" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Интерпретирај %C, %B како боја, задебелено итн" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "А-Ш, прво оператори" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Ш-А, Операторите последни" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Ш-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Неподредени" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "Лево (горе)" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "Лево (долу)" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "Десно (горе)" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "Десно (долу)" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Врв" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Дно" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Скриен" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Корисничка листа" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Покажи ги имињата на хостовите во корисничката листа" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Корисничката листа подредена по:" + +#: src/fe-gtk/setup.c:205 +msgid "Show user list at:" +msgstr "Покажи корисничка листа за:" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Следење на отсуство" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "" +"Следи го статусот за отсуство на сите корисници и означи ги нив со различна " +"боја" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "На канали помали од:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Дејство после двојното кликнување" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Прозорци" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Јазичиња" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Секогаш" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Само бараните јазичиња" + +#: src/fe-gtk/setup.c:242 +#, fuzzy +msgid "Tree" +msgstr "Д_рво" + +#: src/fe-gtk/setup.c:249 +#, fuzzy +msgid "Switcher type:" +msgstr "Барај тип:" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Отвори додатно јазиче за серверските пораки" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Отвори додатно јазиче за серверските забелешки" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "Отвори ново јазиче кога примам приватна порака" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Подреди ги јазичињата по азбучен редослед" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "Мали јазичиња" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Фокус на новите јазичиња:" + +#: src/fe-gtk/setup.c:258 +msgid "Show channel switcher at:" +msgstr "Покажи менувач на канали за:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Скрати ги ознаките на јазичето на:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "букви." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Јазичиња или прозорци" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Отворај ги канали во:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Отворај ги дијалозите во:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Отворај ги алатките во:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Да отворам DCC, игнорирани, известувања итн, во јазичиња или прозорци?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "Не" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Да" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "Прелистувај за папка за зачувување секој пат" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Датотеки и директориуми" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Автоматско прифаќање на датотеки:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Преземај датотеки во:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Поместувај ги завршените датотеки во:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Зачувај го прекарот во имиња на датотеки" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Поставувања за мрежата" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Земи ја мојата адреса од IRC серверот" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Го прашува IRC серверот за вашата вистинска адреса. Користете го ова ако " +"имате 192.168.*.* адреса!" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "DCC IP адреса:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Тврди дека си на оваа адреса кога нудиш датотеки." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Прва DCC порта за испраќање:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Последна DCC порта за испраќање:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!Оставете ги портите на нула за целосен опсег." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Максимални брзини на пренос на датотеки (битови во секунда)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Едно качување:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Макс. брзина за еден трансфер" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Едно преземање:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Сите качувања заедно:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Макс. брзина за целиот сообраќај" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Сите преземања заедно:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Известувања" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "Прикажи балончиња во местото за известување на:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "Трепкај ја иконата при:" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "Трепкај на лентата со задачи на:" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "Бипкај на:" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "Овозможи икона во местото за известување" + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "Осветлени пораки" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Осветлените пораки се оние каде вашето име е спомнато, но исто така:" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "Додатни зборови за осветлување:" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "Прекари кои нема да се осветлуваат:" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "Прекарите кои секогаш ќе се осветлуваат:" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Раздели повеќе зборови со запирки." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Стандардни пораки" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Излез:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Напушти канал:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Отсутен:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Отсуство" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Објавувај ги пораките за отсуство" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Објавувај ги пораките за отсуство на сите канали" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Покажи отсуство еднаш" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Покажувај идентични пораки за отсуство само по еднаш" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Автоматски одбележи отсуство" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Одбележи се себеси како отсутен пред да праќаш пораки" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Напредни поставувања" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Доцнење на автоматското поврзување:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Режим за прикажување во сурова форма" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Whois при известување" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "Испраќа /WHOIS кога доаѓа корисник што ти е во листата за известување" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Сокриј ги пораките за приклучување и напуштање" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Стандардно криј ги пораките за приклучување/напуштање на канал" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Автоматско отворање на DCC прозорците" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Прозорец за испраќање" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Прозорец за примање" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Прозорец на разговорот" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Снимање" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "Овозможи снимање на разговори" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Име на датотеката со лог:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Сервер %c=Канал %n=Мрежа." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Внесувај временски формат во записите" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Временски формат за запис:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Оневозможено)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Сите врски" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "Само IRC сервери" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "DCC Get Only" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Вашата адреса" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Поврзи се со:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "Корисно само за компјутери со повеќе адреси." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Прокси сервер" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Име на host:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Порта:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Тип:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Користи прокси за:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Автентикација на прокси" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Користи автентикација (MS Proxy, HTTP или само Socks5)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Користи автентикација (HTTP или само Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Корисничко име:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Лозинка:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Избери слика датотека" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "Одберете папка за преземања" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Избери фонт" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Прелистувај..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Означи ги идентифицираните корисници со:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Означи ги неидентифицираните корисници со:" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "Отвори папка со податоци" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Избери боја" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Бои на текст" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "mIRC боја:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Локални бои:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Напред:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Позадина:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Означување на текст" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Бои на интерфејсот" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Нови податоци:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Линија за означување:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Нова порака:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Отсутен корисник:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Подвлечени:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Настан" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Звучна датотека" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Одберете датотека со звук" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Метод на пуштање на звуци:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "Надворешна _програма за пуштање на звуци:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "_Надворешна програма" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_Автоматски" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "_Директориум со звучни датотеки:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Звучна датотека:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "_Прелистај..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "_Пушти" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Интерфејс" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Текст поле" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Корисничка листа" + +#: src/fe-gtk/setup.c:1703 +msgid "Channel switcher" +msgstr "Менувач на канали" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Бои" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Разговор" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Општо" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Звук" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Подесувања на мрежата" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Трансфер на датотеки" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Категории" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" +"Не можете да го поставите дрвото на дното или најгоре!\n" +"Ве молам, прво направете промена во распоредот на <b>Јазичињата</b> во " +"менито <b>Поглед</b>." + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Поради направените промени мораш да го рестартираш xchat." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*ПРЕДУПРЕДУВАЊЕ*\n" +"Автоматско прифаќање на DCC во твојот домашен директориум\n" +"може да биде опасно. Пр:\n" +"Некој може да ти испрати „.bash_profile“" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: Преференци" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Грешка" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Овој сигнал помина само %d аргументи, $%d е невалиден" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Печати текстуална датотека" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Уреди настани" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ Број" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Вчитај од..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Тестирај се" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: URL фаќач" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Исчисти листа" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Копирај го избраното URL" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Копирај" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Сними ја листата во датотека" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d оператори, %d вкупно" + +#~ msgid "" +#~ "Set per channel options\n" +#~ "CHANOPT CONFMODE ON|OFF - Toggle conf mode/showing of join and part " +#~ "messages\n" +#~ "CHANOPT COLORPASTE ON|OFF - Toggle color paste\n" +#~ "CHANOPT BEEP ON|OFF - Toggle beep on message\n" +#~ "CHANOPT TRAY ON|OFF - Toggle tray blink on message" +#~ msgstr "" +#~ "Постави опции за канал\n" +#~ "CHANOPT CONFMODE ON|OFF - Приклучи конфигурациски режим/прикажување на " +#~ "пораките за приклучување и напуштање\n" +#~ "CHANOPT COLORPASTE ON|OFF - Приклучи вметнување со боја\n" +#~ "CHANOPT BEEP ON|OFF - Приклучи бипкање за порака\n" +#~ "CHANOPT TRAY ON|OFF - Приклучи светкање на иконата во фиоката" + +#~ msgid "Direct client-to-client" +#~ msgstr "Директно,клиент до клиент" + +#~ msgid "Send File" +#~ msgstr "Испрати датотека" + +#~ msgid "Offer Chat" +#~ msgstr "Понуди разговор" + +#~ msgid "Abort Chat" +#~ msgstr "Прекини разговор" + +#~ msgid "Userinfo" +#~ msgstr "Инфо за корисник" + +#~ msgid "Clientinfo" +#~ msgstr "Инфо за клиент" + +#~ msgid "Time" +#~ msgstr "Време" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "Oper" + +#~ msgid "Kill this user" +#~ msgstr "Убиј го корисникот" + +#~ msgid "Mode" +#~ msgstr "Режим" + +#~ msgid "Give Half-Ops" +#~ msgstr "Дај полуоператорски статус" + +#~ msgid "Take Half-Ops" +#~ msgstr "Одземи полуоператорски статус" + +#~ msgid "Ignore" +#~ msgstr "Игнорирај" + +#~ msgid "Ignore User" +#~ msgstr "Игнорирај корисник" + +#~ msgid "UnIgnore User" +#~ msgstr "Не игнорирај корисник" + +#~ msgid "Info" +#~ msgstr "Инфо" + +#~ msgid "Who" +#~ msgstr "Кој" + +#~ msgid "DNS Lookup" +#~ msgstr "Побарај DNS" + +#~ msgid "Trace" +#~ msgstr "Следи" + +#~ msgid "UserHost" +#~ msgstr "Host на корисникот" + +#~ msgid "External" +#~ msgstr "Надворешно" + +#~ msgid "Traceroute" +#~ msgstr "Рута на следење" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "About XChat" +#~ msgstr "За XChat" + +#~ msgid "Unban" +#~ msgstr "Одбанирај" + +#~ msgid "Blink tray on message" +#~ msgstr "Трепни на порака" + +#~ msgid "Show join/part messages" +#~ msgstr "Покажувај ги пораките за приклучувањето и исклучување" + +#~ msgid "Color paste" +#~ msgstr "Вметни боја" + +#~ msgid "_Close Tab" +#~ msgstr "_Затвори јазиче" + +#~ msgid "Channel List..." +#~ msgstr "Листа на канали..." + +#~ msgid "Notify List..." +#~ msgstr "Листа за известувања" + +#~ msgid "_Close Window" +#~ msgstr "_Затвори го прозорецот" + +#~ msgid "User" +#~ msgstr "Корисник" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: Листа за известување" + +#~ msgid "C_hannels to join:" +#~ msgstr "К_анали за приклучување:" + +#~ msgid "Channel Switcher" +#~ msgstr "Менувач на канали" diff --git a/xchat-2.8.8/po/nl.gmo b/xchat-2.8.8/po/nl.gmo new file mode 100644 index 0000000000000000000000000000000000000000..42e22b22f089334d311368df7c954b2e3c566755 GIT binary patch literal 84818 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 a2@7Q(AiYXbbutMj)CZo~qxGHb=Dz^zbW}(H literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/po/nl.po b/xchat-2.8.8/po/nl.po new file mode 100644 index 0000000..6d0d210 --- /dev/null +++ b/xchat-2.8.8/po/nl.po @@ -0,0 +1,6057 @@ +# Dutch translation of xchat. +# Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. +# Arjan Scherpenise <acscherp@wins.uva.nl>, 2000. +# Bart Coppens <coppensbart@pi.be>, 2002. +# Taco Witte <T.C.Witte@phys.uu.nl>, 2003. +# Elros Cyriatan <cyriatan@fastmail.fm>, 2003, 2004. +# Luk Claes <luk.claes@ugent.be>, 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.6.3\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2006-06-02 08:26+0100\n" +"Last-Translator: Luk Claes <luk@debian.org>\n" +"Language-Team: Dutch <vertaling@vrijschrift.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Kan ~/.xchat2 niet aanmaken" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Ik ben bezig" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Ik ga weg" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* IRC uitvoeren als root is dom! U moet een\n" +" gebruikersaccount aanmaken en daarmee inloggen.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Bezig met wachten" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Actief" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Mislukt" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Klaar" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Verbinden" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Afgebroken" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "Kan %s niet benaderen\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Fout" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s bied je \"%s\" aan. Wil je dit aanvaarden?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Geen DCCs actief\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "JA " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "NEE " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "U wordt overspoeld met CTCP-verkeer van %s, nu wordt %s genegeerd\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "" +"U wordt overspoeld met MSG-verkeer van %s, gui_auto_open_dialog wordt UIT-" +"gezet.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s online\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s offline\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Niet in een kanaal. Probeer /join #<kanaal>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Niet verbonden. Probeer /server <host> [<poort>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "Ik heb /bin/sh nodig om te werken!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Beschikbare opdrachten: " + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Door de gebruiker gedefinieerde opdrachten: " + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Door de gebruiker gedefinieerde opdrachten: " + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Tik /HELP <opdracht> voor meer info, of /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Onbekend argument '%s' genegeerd." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "Plugin niet gevonden.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Die plugin weigert te ontladen.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <naam> <actie>, voegt een knop toe onder de gebruikerslijst" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <opdr>, stuurt een opdracht naar alle kanalen waar je in zit" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHANL <opdr>, stuurt een opdracht naar alle kanalen waar je in zit" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "" +"ALLSERV <opdr>, stuurt een opdracht naar alle servers waarop je bent ingelogd" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<reden>], zegt dat je weg bent" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <masker> [<verbansoort>], verbant iedereen die voldoet aan het masker " +"uit het huidige kanaal. Als ze al in het huidige kanaal zitten worden ze " +"niet weggeschopt (kanaal-operator vereist)" + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "SET [-quiet] <variabel> [<waarde>]" + +#: src/common/outbound.c:3508 +#, fuzzy +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "CLEAR, maakt het huidige tekstvenster schoon" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, sluit het huidige venster/tabblad" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" +"COUNTRY [-s] <code|wildcard>, zoek een landcode, bijvoorbeeld be = België en " +"nl = Nederland" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <persoon> <bericht>, een CTCP bericht naar de persoon sturen. Veel " +"voorkomende berichten zijn VERSION en USERINFO" + +#: src/common/outbound.c:3516 +#, fuzzy +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "CYCLE, het huidige kanaal verlaten en direct terugkeren" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <persoon> - een aangeboden bestand accepteren\n" +"DCC SEND [-maxcps=#] <persoon> [bestand] - een bestand naar iemand sturen\n" +"DCC PSEND [-maxcps=#] <persoon> [bestand] - een bestand sturen gebruik " +"makend van de passieve modus\n" +"DCC LIST - DCC lijst weergeven\n" +"DCC CHAT <persoon> - iemand DCC CHAT aanbieden\n" +"DCC PCHAT <persoon> - DCC CHAT aanbieden gebruikmakend van de passieve " +"modus\n" +"DCC CLOSE <soort> <persoon> <bestand> voorbeeld:\n" +" /dcc close send janjanssen bestand.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <persoon>, de kanaal-halfoperator status van de persoon in het huidige " +"kanaal verwijderen (kanaal-operator vereist)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <naam>, een knop van de gebruikerslijst wissen" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <persoon>, kanaal-operatorstatus van de persoon in het huidige kanaal " +"verwijderen (kanaal-operator vereist)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <persoon>, de stemstatus van de persoon in het huidige kanaal " +"verwijderen (kanaal-operator vereist)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, de verbinding met de server verbreken" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <persoon|host|ip>, het IP-adres van een gebruiker vinden" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <tekst>, lokaal een tekst afdrukken" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <opdracht>, een opdracht uitvoeren. Als de -o vlag meegegeven is, " +"wordt de uitvoer naar het huidige kanaal gestuurd, anders naar het huidige " +"tekstvenster" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, het proces SIGCONT sturen" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], een lopende exec in de huidige sessie stoppen. Als -9 is " +"meegegeven wordt het proces geSIGKILLd" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, het proces SIGSTOP sturen" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, gegevens naar stdin sturen van het proces" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, de verzendrij van de huidige server doerspoelen" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" +"GATE <host> [<poort>], verbinding maken door een proxy, de poort is " +"standaard 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <bijnaam> <wachtwoord>, doodt een spook-bijnaam" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" +"HOP <persoon>, geeft kanaal-halfoperator status aan de persoon (kanaal-" +"operator vereist)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <wachtwoord>, identificeert u bij nickserv" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <masker> <soorten..> <opties..>\n" +" masker - host masker om te negeren, bijv.: *!*@*.aol.com\n" +" soorten - soorten gegevens om te negeren, een of meer van:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" opties - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <persoon> [<kanaal>], iemand uitnodigen een kanaal te openen, " +"standaard het huidige kanaal (kanaal-operator vereist)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <kanaal>, het kanaal binnengaan" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <persoon>, de persoon uit het huidige kanaal schoppen (kanaal-operator " +"vereist)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAR <persoon>, een persoon eerst verbannen en dan uit het huidige kanaal " +"schoppen (kanaal operator vereist)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, een nieuwe controle op achterstand forceren" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <tekst>, een tekst zoeken in de buffer" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <bestand>, laadt een plugin of script" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, massaal van alle kanaal-halfops op-status verwijderen in huidige " +"kanaal (kanaal-operator vereist)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, massaal van alle kanaal-ops op-status verwijderen in huidige kanaal " +"(kanaal-operator vereist)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <actie>, stuurt de actie naar het huidige kanaal (acties worden " +"geschreven in de 3e persoon, bijv: /me springt)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, massaal iedereen behalve jezelf uit huidige kanaal schoppen (kanaal-" +"operator vereist)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, massaal alle gebruikers in huidige kanaal op-status geven (kanaal-" +"operator vereist)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <persoon> <bericht>, een privéberichtje sturen" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, geef de lijst met personen in het huidige kanaal" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <persoon> <bericht>, een CTCP-melding sturen" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <hostnaam> [<poort>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <bijnaam>, je bijnaam instellen" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <persoon/kanaal> <bericht>, een melding sturen. Meldingen zijn het " +"soort berichten waarop automatisch gereageerd zou moeten worden." + +#: src/common/outbound.c:3614 +#, fuzzy +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [<persoon>], een lijst geven van de waarschuwingslijst of iemand er " +"aan toevoegen" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" +"OP <persoon>, de kanaal-operator status aan de persoon geven (kanaal-" +"operator vereist)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" +"PART [<kanaal>] [<reden>], het kanaal verlaten, standaard het huidige kanaal." + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <persoon | kanaal>, een persoon of kanaal CTCP pingen" + +#: src/common/outbound.c:3622 +#, fuzzy +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "QUERY <persoon>, een nieuw privé berichtvenster naar iemand openen" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<reden>], verbinding met de huidige server verbreken" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <tekst>, tekst in ruw formaat naar de server sturen" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<host>] [<poort>] [<wachtwoord>], kan net als /RECONNECT " +"gebruikt worden om opnieuw te verbinden met de huidige server, of met /" +"RECONNECT ALL om met alle open servers een nieuwe verbinding te maken" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<host>] [<poort>] [<wachtwoord>], kan net als /RECONNECT gebruikt " +"worden om opnieuw te verbinden met de huidige server, of met /RECONNECT ALL " +"om met alle open servers een nieuwe verbinding te maken" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <tekst>, ruwe gegevens naar X-Chat sturen, alsof het verstuurd was door " +"de irc server" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <tekst>, de tekst naar het object in het huidige venster sturen" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <bijnaam> [<bestand>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <host> <poort> <kanaal>, verbinding maken en een kanaal " +"openen" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN <host> <poort> <kanaal>, verbinding maken en een kanaal openen" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <host> [<poort>] [<paswoord>], verbinding maken met een " +"server, de standaard poort is 6667 voor gewone verbindingen, 9999 voor ssl " +"verbindingen" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <host> [<poort>] [<paswoord>], verbinding maken met een server, de " +"standaard poort is 6667 voor gewone verbindingen" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-quiet] <variabel> [<waarde>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<positie>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<topic>], het onderwerp opeven als topic gespecifiëerd is, anders het " +"huidige onderwerp laten zien" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <masker> [<masker>...], de opgegeven maskers weer toelaten" + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <mask> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <naam>, een plugin of script laden" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url> opent een URL in uw browser" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <bijnaam1> <bijnaam2> enz, laat bijnamen oplichten in " +"gebruikerslijst van het kanaal" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "" +"VOICE <persoon>, geef de stemstatus aan iemand (kanaal operator vereist)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <bericht>, het bericht naar alle kanalen sturen" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <bericht>, een bericht naar alle kanaaloperatoren op het huidige " +"kanaal" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Gebruik: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"Geen help beschikbaar over die opdracht.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Nietbestaande opdracht.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Foute argumenten voor gebruikersgedefiniëerde opdracht.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Teveel recursieve gebruikersgedefiniëerde opdrachten, afbrekende." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Onbekende opdracht. Probeer /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "Geen xchat_plugin_init symbol gevonden; is dit een echte xchat plugin?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Weet u zeker dat deze server en poort SSL ondersteunen?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Kan hostnaam %s niet oplossen\n" +"Controleer uw IP instellingen!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Proxy doorkruising mislukt.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Overschakelen naar volgende server in %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Waarschuwing: tekenset \"%s\" is onbekend. Er zal geen conversie worden " +"toegepast voor netwerk %s." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 toegevoegd aan waarschuwingslijst." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Verbanlijst:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tKan niet binnengaan%C26 %B$1 %O(U bent verbannen)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 is nu bekend als $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 verbant $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tKanaal $1 gemaakt op $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O verwijdert kanaal-half-operator status van%C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O verwijdert kanaal-operator status van%C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O verwijdert stem van%C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 zet vrijstelling op $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O geeft kanaal-half-operator status aan%C26 $2" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 zet uitnodigen op $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UKanaal Gebruikers Onderwerp" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 zet modus op $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Kanaal $1 modi: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O geeft kanaal-operator status aan%C26 $2" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 verwijdert vrijstelling van $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 verwijdert uitnodigen van $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 verwijdert kanaalsleutelwoord" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 verwijdert gebruikersgrens" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 zet kanaalsleutelwoord op $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 zet kanaalgrens op $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 verwijdert verbanning van $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O geeft stem aan%C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Verbonden. Nu bezig met aanmelden..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22Bezig met verbinden met $1 ($2) poort $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21Verbinden mislukt. Fout: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tEr is een CTCP $1 ontvangen van $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tEr is een CTCP $1 ontvangen van $2 (aan $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tEr is een CTCP-geluid $1 ontvangen van $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tEr is een CTCP-geluid $1 ontvangen van $2 (aan $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tDCC CHAT met %C26$1%O afgebroken." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "" +"%C22*%O$tDCC CHAT-verbinding tot stand gebracht met %C26$1 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tDCC CHAT met %C26$1%O verloren ($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tEr is een DCC CHAT-aanbod ontvangen van $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tBezig met aanbieden DCC CHAT aan $1" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tEr wordt al een CHAT aangeboden aan $1" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$tDCC $1 verbindingspoging met%C26 $2%O mislukt (err=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tOntvangen '$1%O' van $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 Soort Naar/Van Status Grootte Pos Bestand " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O.%010%C22*%O" +"$tContents of packet: $2" +msgstr "" +"%C22*%O$tEr is een misvormd DCC-verzoek ontvangen van %C26$1%O.%010%C22*%O" +"$tInhoud van pakket: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tBezig met aanbieden%C26 $1%O aan%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tDCC-aanbod niet gevonden." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O afgebroken." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC RECV%C26 $1%O van%C26 $3%O voltooid %C30[%C26$4%O cps%C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "" +"%C22*%O$tDCC RECV-verbinding tot stand gebracht met%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV%C26 $1%O van%C26 $3%O mislukt ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV: Kan $1 niet openen om te schrijven ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "" +"%C22*%O$tHet bestand%C26 $1%C bestaat al; wordt opgeslagen als%C26 $2%O." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Oheeft verzocht om%C26 $2 %Cvan%C26 $3%C te pauzeren." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC SEND%C26 $2%O naar%C26 $1%O afgebroken." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC SEND%C26 $1%O naar%C26 $2%O voltooid %C30[%C26$3%O cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "" +"%C22*%O$tDCC SEND-verbinding tot stand gebracht met%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND%C26 $1%O naar%C26 $2%O mislukt. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Oheeft%C26 $2 %O aangeboden (%C26$3 %Obytes)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Omet%C26 $3 %Cis opgehouden - afbreken." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Omet%C26 $3 %Oheeft time-out - afbreken." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 verwijderd uit waarschuwingslijst." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tVerbinding verbroken ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tUw IP is gevonden: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O toegevoegd aan negeerlijst." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "Negeren van %C26$1%O gewijzigd." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 Hostmasker PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O verwijderd uit negeerlijst." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " Negeerlijst is leeg." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "%C22*%O$tKan niet binnengaan%C26 %B$1 %O(Kanaal is alleen-uitnodigen)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tU bent uitgenodigd bij%C26 $1%O door%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) is binnengekomen bij $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$tKan niet binnengaan bij%C26 %B$1 %O(Sleutelwoord vereist)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 heeft $2 uit $3 geschopt ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$tU bent gedood door $1 ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD Overgeslagen." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 al in gebruik. Opnieuw proberen met $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$tBijnaam al in gebruik. Gebruik /NICK om een andere te proberen." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tDCC niet gevonden." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tEr loopt op dit moment geen proces" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tWaarschuwingslijst is leeg." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Waarschuwingslijst " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 gebruikers in waarschuwingslijst." + +#: src/common/textevents.h:282 +#, fuzzy +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tWaarschuwing: $1 is off-line ($2)." + +#: src/common/textevents.h:285 +#, fuzzy +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tWaarschuwing: $1 is on-line ($2)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) heeft $3 verlaten" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) heeft $3 verlaten (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tPing-antwoord van $1: $2 second(en)" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "" +"%C22*%O$tGeen ping-antwoord gedurende $1 seconden, verbinding verbroken." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tEr loopt al een proces" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 heeft verlaten (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 zet modi%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tBezig met opzoeken IP-nummer voor%C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22Verbonden." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22Bezig met opzoeken $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tVorige verbindingspoging gestopt (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29Onderwerp voor $1%C %C29is: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 heeft het onderwerp gewijzigd naar: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29Onderwerp voor $1%C %C29is ingesteld door $2%C %C29op $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tOnbekende host. Heeft u het goed gespeld?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "%C22*%O$tKan%C26 niet binnengaan %B$1 %O(Gebruikersgrens bereikt)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Gebruikers op $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cis weg %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OEinde van WHOIS-lijst." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O inactief%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O inactief%C26 $2%O, aangemeld:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" +"%C22*%O$t%C28[%O$1%C28] %Oechte gebruiker@host%C27 $2%O, echte IP%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19U praat nu op $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tU bent door $3 van $2 geschopt ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tU heeft kanaal $3 verlaten" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tU heeft kanaal $3 verlaten (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tU heeft%C26 $1%O uitgenodigd bij%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tU bent nu bekend als $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** LOGGEN GESTOPT OM %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** LOGGEN GESTART OP %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Kan logbestand(en) niet openen om te schrijven. Controleer\n" +" de toegangsrechten van %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Linkerbericht" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Rechterbericht" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "De bijnaam van de persoon die binnenkomt" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "Het kanaal dat geopend wordt" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "De host van de persoon" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Bijnaam" + +#: src/common/text.c:973 +msgid "The action" +msgstr "De actie" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Moduskarakter" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Geïdentificeerde tekst" + +#: src/common/text.c:980 +msgid "The text" +msgstr "De tekst" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Het bericht" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Oude bijnaam" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Nieuwe bijnaam" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Bijnaam van de persoon die het onderwerp veranderde" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Onderwerp" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Kanaal" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "Bijnaam van de kicker" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "De persoon die gekickt wordt" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "Het kanaal" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "De reden" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "De bijnaam van de persoon die weggaat" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "De tijd" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "De maker" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Bijnaam" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Reden" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Host" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "Van wie het is" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "De tijd in x.x-formaat" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "Het kanaal waar het heen gaat" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "Het geluid" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "De bijnaam van de persoon" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "De CTCP-gebeurtenis" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "De bijnaam van de persoon die de sleutel instelde" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "De sleutel" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "De bijnaam van de persoon die de limiet instelde" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "De limiet" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "De bijnaam van de persoon die de op heeft uitgevoerd" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "De bijnaam van de persoon die is ge'opt" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "De bijnaam van de persoon die is ge'halfopt" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "De bijnaam van de persoon die de halfop heeft uitgevoerd" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "De bijnaam van de persoon die de voice heeft uitgevoerd" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "De bijnaam van de persoon die is ge'voicet" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "De bijnaam van de persoon die de ban heeft uitgevoerd" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "Het ban-masker" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "De bijnaam die de sleutel heeft verwijderd" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "De bijnaam die de limiet heeft verwijderd" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "De bijnaam van de persoon die de deop heeft uitgevoerd" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "De bijnaam van de persoon die is ge'deopt" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "De bijnaam van de persoon die de dehalfop heeft uitgevoerd" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "De bijnaam van de persoon die is ge'dehalfopt" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "De bijnaam van de persoon die de devoice heeft uitgevoerd" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "De bijnaam van de persoon die is ge'devoicet" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "De bijnaam van de persoon die de unban heeft uitgevoerd" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "De bijnaam van de persoon die de exempt heeft uitgevoerd" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "Het exempt-masker" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "De bijnaam van de persoon die de exempt heeft verwijderd" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "De bijnaam van de persoon die de uitnodiging heeft gedaan" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "Het uitnodigingsmasker" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "De bijnaam van de persoon die de uitnodiging heeft verwijderd" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "De bijnaam van de persoon die de modus heeft ingesteld" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "Het teken van de modus (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "De letter van de modus" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "Het kanaal waarop het wordt ingesteld" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Gebruikersnaam" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Volledige naam" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Kanaal deelnemerschap/\"is een IRC operator\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Serverinformatie" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Inactieve tijd" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Aanmeldtijd" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Reden van afwezigheid:" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Bericht" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Account" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "Echte gebruiker@host" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "Echte IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Kanaalsnaam" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Tekst" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Servernaam" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Bijnaam van de persoon die je uitnodigde" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Gebruikers" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Gebruikte bijnaam" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Bijnaam die geprobeerd wordt" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Poort" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Netwerk" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Modistring" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "IP-Adres" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "DCC-type" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Bestandsnaam" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Doelbestandsnaam" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Padnaam" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Positie" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Grootte" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "DCC Tekst" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Aantal meldingen" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Oude bestandsnaam" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Nieuwe bestandsnaam" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Ontvanger" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Hostmasker" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Hostnaam" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "Het pakket" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Seconden" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Bijnaam van de persoon die uitgenodigd is" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Banmasker" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Degene die de ban heeft ingesteld" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Bantijd" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Fout bij inlezen gebeurtenis %s.\n" +"Standaard wordt geladen." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"Kan geluidsbestand niet lezen:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "Host op afstand heeft socket gesloten" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Verbinding geweigerd" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Geen route naar host" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Verbinding kreeg een timeout" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Kan dat adres niet toewijzen" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Verbinding verbroken door peer" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Ascension" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Verenigde Arabische Emiraten" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Afganistan" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Antigua en Barbuda" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Albanië" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Armenië" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Nederlandse Antillen" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Antarctica" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Argentinië" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "Omgekeerde DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Amerikaans Samoa" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Oostenrijk" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Australië" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Alandseilanden" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Azerbeidjan" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Bosnië en Herzegovina" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Bangladesh" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "België" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Bulgarije" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Bahrein" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Bedrijven" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Brunei Darussalam" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Bolivië" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Brazilië" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Bahama's" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Bhutan" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Bouvet-eiland" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Wit-Rusland" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Canada" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Cocoseilanden" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "Democratische Republiek Congo" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "Centraal-Afrikaanse Republiek" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Congo" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Zwitserland" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Ivoorkust" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Cookeilanden" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Chili" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Kameroen" + +#: src/common/util.c:898 +msgid "China" +msgstr "China" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Colombia" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Internic Commercieel" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Servië en Montenegro" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Cuba" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Kaapverdische Eilanden" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Kerstmis-eiland" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Cyprus" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "Tsjechië" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Duitsland" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Djibouti" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Denemarken" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Dominica" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "Dominicaanse Republiek" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Algerije" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Ecuador" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Educatieve instelling" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Estland" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Egypte" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Westelijke Sahara" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Spanje" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Ethiopië" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Europese Unie" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Finland" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Fiji" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Falkland eilanden" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Micronesië" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Faroër Eilanden" + +#: src/common/util.c:928 +msgid "France" +msgstr "Frankrijk" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "England" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Georgië" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Frans Guyana" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Briste kanaaleilanden" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Ghana" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Groenland" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Overheid" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Guadeloupe" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Equatoriaal Guinee" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Griekenland" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Z.-Georgië en de Z. Sandwich-eilanden" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Guinee-Bissau" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Guyana" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Heard en McDonald eilanden" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Kroatië" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Haïti" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Hongarije" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Indonesië" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Ierland" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Israel" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Eiland Man" + +#: src/common/util.c:959 +msgid "India" +msgstr "India" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Informatie" + +#: src/common/util.c:961 +msgid "International" +msgstr "Internationaal" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Brits-Indische Oceaan Territorium" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Irak" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Iran" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "IJsland" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Italië" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Jamaica" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Jordanië" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Japan" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Kenia" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Kirgizië" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Cambodja" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Komoren" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "St.-Kitts en Nevis" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Noord-Korea" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Zuid-Korea" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Koeweit" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Kaaimaneilanden" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Kazachstan" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Libanon" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Santa Lucia" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Liberia" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Litouwen" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Luxemburg" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Letland" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Libië" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Marokko" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Monaco" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Moldavië" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "Verenigde Staten Medisch" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Madagascar" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Marshall-eilanden" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Militair" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Macedonië" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Mongolië" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Macaõ" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Noordelijke Mariana-eilanden" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Martinique" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Mauritanië" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Mauritius" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Malediven" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Mexico" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Maleisië" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Mozambique" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Namibië" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Nieuw Caledonië" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Internic Netwerk" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Norfolk-eiland" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Nigeria" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Nederland" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Noorwegen" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Nieuw-Zeeland" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Internic Non-profit organisatie" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Frans-Polinesië" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Papoea Nieuw-Guinee" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Filipijnen" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Polen" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "St.-Pierre en Miquelon" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Puerto Rico" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Bezette Palestijnse Gebieden" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Portugal" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Paraguay" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Qatar" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Reunion" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Roemenië" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "Oude school ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Rusland" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Rwanda" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Saoedi-Arabië" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Solomon-eilanden" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Seychellen" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Soedan" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Zweden" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Singapore" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "St.-Helena" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Slovenië" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard en Jan Mayen eilanden" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Slowakije" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Somalië" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Suriname" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "Sao Tome en Principe" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Vroegere USSR" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Syrië" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Swaziland" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Turkse en Caicos-eilanden" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Tsjaad" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Franse Zuidelijke Territoriën" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Thailand" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Tadjikistan" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Oost-Timor" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Tunesië" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Turkije" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Trinidad en Tobago" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Tanzanië" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Oekraïne" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Oeganda" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Verenigd Koninkrijk" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "Verenigde Staten van Amerika" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Uruguay" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Oezbekistan" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Vaticaanstad" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "Sint-Vincent en de Grenadines" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Britse Maagdeneilanden" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "VS Maagdeneilanden" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Wallis and Futuna-eilanden" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Jemen" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Joegoslavië" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Zuid-Afrika" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Zambia" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Onbekend" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "Dialoogvenster openen" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "Verzend een bestand" + +#: src/common/xchat.c:728 +#, fuzzy +msgid "_User Info (WhoIs)" +msgstr "Gebruikersinfo (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +#, fuzzy +msgid "O_perator Actions" +msgstr "Operatoracties" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Ops geven" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Ops nemen" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Stem geven" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Stem nemen" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Wegschoppen/Verbannen" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Wegschoppen" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Verbannen" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "Wegschoppen/Verbannen" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Kanaal verlaten" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Kanaal openen..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Geef het te openen kanaal:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Server koppelingen" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Server pingen" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Versie verbergen" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Op" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "doei" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Geef reden voor wegschoppen %s:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Bestand verzenden" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Dialoog" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "Whois" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Verzenden" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Chatten" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Wissen" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "Kon niet connecteren op sessie-bus" + +#: src/common/dbus/dbus-client.c:86 +#, fuzzy +msgid "Failed to complete NameHasOwner" +msgstr "Commando vervolledigen mislukt" + +#: src/common/dbus/dbus-client.c:112 +#, fuzzy +msgid "Failed to complete Command" +msgstr "Commando vervolledigen mislukt" + +#: src/common/dbus/dbus-plugin.c:30 +#, fuzzy +msgid "remote access" +msgstr "xchat toegang op afstand" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "plugin voor toegang op afstand gebruikmakend van DBUS" + +#: src/common/dbus/dbus-plugin.c:897 +#, fuzzy, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Kon niet connecteren op sessie-bus: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Faalde bij het ophalen van %s: %s\n" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "Info (_A)" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Een multiplatform IRC-client" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Overzicht tekens" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "Niet verbonden." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Het is nodig om enkele verbanningen selecteren." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Masker" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "Van" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Datum" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" +"U kunt het Ban List venster enkel openen wanneer u zich in een kanaaltab " +"bevindt." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: verbanlijst (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Verwijderen" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Knippen" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Verversen" + +#: src/fe-gtk/chanlist.c:111 +#, fuzzy, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Gebruikers- en kanaalstatistieken: %d/%d Gebruikers op %d/%d Kanalen" + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Kies een bestandsnaam" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +#, fuzzy +msgid "_Join Channel" +msgstr "Kanaal binnengaan" + +#: src/fe-gtk/chanlist.c:633 +#, fuzzy +msgid "_Copy Channel Name" +msgstr "Kanaalsnaam" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: Kanaallijst (%s)" + +#: src/fe-gtk/chanlist.c:781 +#, fuzzy +msgid "_Search" +msgstr "XChat: Zoeken" + +#: src/fe-gtk/chanlist.c:787 +#, fuzzy +msgid "_Download List" +msgstr "Downloads" + +#: src/fe-gtk/chanlist.c:793 +#, fuzzy +msgid "Save _List..." +msgstr "_Server lijst..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "" + +#: src/fe-gtk/chanlist.c:818 +#, fuzzy +msgid "channels with" +msgstr "kanaal" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:843 +#, fuzzy +msgid "users." +msgstr "Gebruikers" + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "Kanaalnaam" + +#: src/fe-gtk/chanlist.c:882 +#, fuzzy +msgid "Search type:" +msgstr "Tekst zoeken..." + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:890 +#, fuzzy +msgid "Pattern Match (Wildcards)" +msgstr "Pattroon overeenkomst:" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Zoeken:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Bestand versturen naar %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Dat bestand is niet pauzeerbaar." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"Kan geen toegang krijgen tot bestand: %s\n" +"%s.\n" +"Pauzeren is niet mogelijk." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"Bestand in downloadmap is groter dan aangeboden bestand. Pauzeren is niet " +"mogelijk." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "Kan hetzelfde bestand van twee personen niet pauzeren." + +#: src/fe-gtk/dccgui.c:745 +#, fuzzy +msgid "XChat: Uploads and Downloads" +msgstr "XChat: uploads en downloads" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Status" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Bestand" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Beide" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Uploads" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "Downloads" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Details" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Bestand:" + +#: src/fe-gtk/dccgui.c:821 +#, fuzzy +msgid "Address:" +msgstr "Adres" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Afbreken" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Accepteren" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Doorgaan" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Open Map..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: DCC Chat lijst" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Recv" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Verzonden" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "Starttijd" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*NIEUW*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "BEWERK ME" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Naam" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Opdracht" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Naar boven" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Omlaag" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Annuleren" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Bewaar" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Nieuw toevoegen" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Verwijder" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Sorteren" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Hulp" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "Niet automatisch herverbinden met servers" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "Gebruik een andere configmap" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "Geen plugins auto-laden" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "Toon map voor plugin auto-load" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "Toon gebruikersconfiguratiemap" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Open een irc://server:poort/kanaal URL" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Opdracht uitvoeren:" + +#: src/fe-gtk/fe-gtk.c:132 +msgid "Open URL or execute command in an existing XChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +#, fuzzy +msgid "level" +msgstr "Nooit" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Versie-informatie weergeven" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"Openen lettertype mislukt:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "De zoekbuffer is leeg.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d bytes" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Netwerk zendwachtrij: %d bytes" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"De Opdracht uitvoeren actie voert de gegevens in Data 1 uit alsof die is " +"ingevoerd in het invoervak waar u de toetsencombinatie indrukte. Het kan dus " +"tekst (die zal worden verzonden naar het kanaal/de persoon), opdrachten of " +"gebruikersopdrachten bevatten. Als dit wordt uitgevoerd, worden alle \\n " +"tekens in Data 1 gebruikt om verschillende opdrachten te onderscheiden zodat " +"het mogelijk is om meerdere opdrachten uit te voeren. Als u een \\ in de " +"tekst wilt, gebruikt dan \\\\" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"De Pagina schakelen opdracht schakelt tussen pagina's. Stel Data 1 in op de " +"pagina waarnaar u wilt overschakelen. Als Data 2 ergens op is ingesteld, zal " +"de overschakeling relatief zijn ten opzichte van de huidige positie" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"De Invoegen in buffer opdracht zal de inhoud van Data 1 invoegen in de " +"ingang waar de toetsencombinatie was ingedrukt op de huidige aanwijzerpositie" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"De Pagina schuiven opdracht schuift de tekst in het tekstvak een pagina of " +"regel omhoog of omlaag. Stel Data 1 op Omhoog, Omlaag, +1 of -1." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"De Buffer instellen opdracht stelt de ingang waar de toetsencombinatie is " +"ingedrukt in op de inhoud van Data 1" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"De Laatste opdracht opdracht stelt de ingang in op de laatst ingevoerde " +"opdracht - hetzelfde als pijltje omhoog in een shell" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"De Volgende opdracht opdracht stelt de ingang in op de volgend ingevoerde " +"opdracht - hetzelfde als pijltje omlaag in een shell" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Deze opdracht wijzigt de tekst in de ingang zodat een incomplete bijnaam of " +"opdracht wordt voltooid. Als Data 1 is ingesteld, dan selecteert tweemaal " +"tab indrukken de laatste bijnaam, niet de volgende" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Deze opdracht schuift omhoog en omlaag in de lijst met bijnamen. Als Data 1 " +"ergens op is ingesteld, wordt er omhoog geschoven, anders omlaag." + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Deze opdracht vergelijkt het laatst ingevoerde woord ingevoerd in de ingang, " +"met de vervangingslijst, en vervangt als er een overeenkomst is" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Deze opdracht verplaatst het voorste tabblad een stap naar links" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Deze opdracht verplaatst het voorste tabblad een stap naar rechts" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Deze opdracht verplaatst de huidige tabblad-familie naar links" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Deze opdracht verplaatst de huidige tabblad-familie naar rechts" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "Invoerregel naar geschiedenis duwen maar niet naar server verzenden" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "" +"Er is een fout opgetreden bij het laden van de configuratie van de " +"toetsenbordkoppelingen" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<geen>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Mod" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Toets" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Actie" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: Sneltoetsen" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Verschuiven" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Data 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Data 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Fout bij openen toetsen config bestand\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Onbekende toetsnaam %s in toetsenverbindingen config bestand\n" +"Laden afgebroken, repareer a.u.b. %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Onbekende actie %s in toetsenverbindingen config bestand\n" +"Laden afgebroken, repareer a.u.b. %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Verwacht Data-regel (beginnend met Dx{:|!}) maar gekregen:\n" +"%s\n" +"\n" +"Laden afgebroken, repareer a.u.b. %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"Toetsenverbindingen config bestand is kapot, laden afgebroken\n" +"Repareer a.u.b. %s/keybindings.conf\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "Kan niet schrijven naar dat bestand." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Kan dat bestand niet lezen." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Dat masker bestaat al." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Prive" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Melding" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Uitnodigen" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Niet langer negeren" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Geef het te negeren masker:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: Negeerlijst" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Negeer stats:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Kanaal:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privé:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Melding:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Uitnodigen:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "Voeg toe..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "Naam van kanaal is te kort, probeer opnieuw." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: verbinding vervolledigd" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "Verbinding naar %s vervolledigd." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"Er is voor dit netwerk geen kanaal (chat room) om automatisch te vervoegen, " +"opgegeven in het Server-List venster." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "Wat wilt u vervolgens doen?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "_Niets, ik zal later een kanaal vervoegen." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "Kanaal vervoegen (_J):" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" +"Als u de naam van het kanaal dat u wilt vervoegen kent, geef het dan hier op." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "O_pen het Channel-List venster." + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "De Channel-List opvragen, kan één of twee minuten duren." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "_Altijd deze dialoog tonen na het verbinden." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Dialoog met" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Onderwerp van %s is: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Er is geen onderwerp ingesteld" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"Er zijn nog steeds %d kanalen of dialogen met deze server geassocieerd. Wilt " +"u ze allemaal sluiten?" + +#: src/fe-gtk/maingui.c:1283 +#, fuzzy +msgid "Quit XChat?" +msgstr "Over XChat" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1310 +#, fuzzy, c-format +msgid "You are connected to %i IRC networks." +msgstr "Auto-verbinden met dit netwerk bij opstarten" + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "" + +#: src/fe-gtk/maingui.c:1314 +#, fuzzy +msgid "Some file transfers are still active." +msgstr "Sommige bestandoverdrachten zijn nog actief, toch programma afsluiten?" + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Attribuut- of kleurcode invoegen" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Vet</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Onderstreept</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Normaal" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Kleuren 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Kleuren 8-15" + +#: src/fe-gtk/maingui.c:1612 +#, fuzzy +msgid "_Settings" +msgstr "Inst_ellingen" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "Binnengaan/verlaten berichten verbergen" + +#: src/fe-gtk/maingui.c:1625 +#, fuzzy +msgid "_Extra Alerts" +msgstr "Extra functies" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "Pieptoon bij bericht" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +#, fuzzy +msgid "_Detach" +msgstr "Tabbla_d losmaken" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "Sluiten (_C)" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "Gebruikersgrens moet een getal zijn!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Onderwerp bescherming" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Geen berichten van buiten" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Geheim" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Alleen-uitnodigen" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Gemodereerd" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Banlijst" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Sleutelwoord" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Gebruikerslimiet" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Laat de gebruikerslijst wel/niet zien" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"Kan transparante achtergrond niet instellen!\n" +"\n" +"Mogelijk gebruikt u een niet-overeenstemmende\n" +"vensterbeheerder die nu niet wordt ondersteund.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Nieuwe bijnaam invullen" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Host onbekend" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Echte naam:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Gebruiker:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "Land:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Server:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "%u minuten geleden" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Laatste bericht:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Afwezigheidsboodschap:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"De Menubar is nu verborgen. U kunt die opnieuw laten zien door op F9 te " +"drukken of door rechts te klikken in een blanco deel van het tekstgebied." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Open Link in Browser" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Geselecteerde URL kopiëren" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Kanaal binnengaan" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Kanaal verlaten" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Kanaal ronddraaien" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: Gebruikersmenu" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Dit menu bewerken..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Haal kanaallijst af..." + +#: src/fe-gtk/menu.c:1348 +#, fuzzy +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Gebruikersopdrachten - Speciale codes:\n" +"\n" +"%c = huidige kanaal\n" +"%m = machine info\n" +"%n = uw bijnaam\n" +"%t = tijd/datum\n" +"%v = xchat versie\n" +"%2 = woord 2\n" +"%3 = woord 3\n" +"&2 = woord 2 tot einde regel\n" +"&3 = woord 3 tot einde regel\n" +"\n" +"bijv.:\n" +"/cmd jan hallo\n" +"\n" +"%2 zou zijn \"jan\"\n" +"&2 zou zijn \"jan hallo\"." + +#: src/fe-gtk/menu.c:1364 +#, fuzzy +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Gebruikerslijst knoppen - Speciale codes:\n" +"\n" +"%a = alle geselecteerde bijnamen\n" +"%c = huidige kanaal\n" +"%h = hostnaam geselecteerde bijnaam\n" +"%m = machine info\n" +"%n = uw bijnaam\n" +"%s = geselecteerde bijnaam\n" +"%t = tijd/datum\n" + +#: src/fe-gtk/menu.c:1374 +#, fuzzy +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Dialoogknoppen - Speciale codes:\n" +"\n" +"%a = alle geselecteerde bijnamen\n" +"%c = huidige kanaal\n" +"%h = hostnaam geselecteerde bijnaam\n" +"%m = machine info\n" +"%n = uw bijnaam\n" +"%s = geselecteerde bijnaam\n" +"%t = tijd/datum\n" + +#: src/fe-gtk/menu.c:1384 +#, fuzzy +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"CTCP antwoorden - Speciale codes:\n" +"\n" +"%d = gegevens (de gehele ctcp)\n" +"%m = machine info\n" +"%s = bijnaam die u de ctcp heeft gezonden\n" +"%t = tijd/datum\n" +"%2 = woord 2\n" +"%3 = woord 3\n" +"&2 = woord 2 tot einde regel\n" +"&3 = woord 3 tot einde regel\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"URL helpers - Speciale codes:\n" +"\n" +"%s = de URL-tekst\n" +"\n" +"Een ! zetten voor de opdracht\n" +"geeft aan dat deze naar een shell\n" +"i.p.v. naar XChat moet worden\n" +"gestuurd" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: Door gebruiker gedefinieerde opdrachten" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat Gebruikerslijst Popup menu" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Vervang met" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: Vervangen" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: URL Programma's" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: Gebruikerslijst Knoppen" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: Dialoogknoppen" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: CTCP Antwoorden" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "Netwerklij_st..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "_Nieuw" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Server tabblad..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Kanaal tabblad..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Server venster..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Kanaal venster..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "Plugin of script _laden..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "Afsluiten (_Q)" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "Beeld (_V)" + +#: src/fe-gtk/menu.c:1591 +#, fuzzy +msgid "_Menu Bar" +msgstr "_Menubalk" + +#: src/fe-gtk/menu.c:1592 +#, fuzzy +msgid "_Topic Bar" +msgstr "Onderwerpbalk (_T)" + +#: src/fe-gtk/menu.c:1593 +#, fuzzy +msgid "_User List" +msgstr "Gebruikers Lijst" + +#: src/fe-gtk/menu.c:1594 +#, fuzzy +msgid "U_serlist Buttons" +msgstr "Gebr_uikerslijst Knoppen..." + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "M_odus knoppen" + +#: src/fe-gtk/menu.c:1597 +#, fuzzy +msgid "_Channel Switcher" +msgstr "Kanaallijst..." + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "_Tabs" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "Boom (_r)" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "_Netwerkinstellingen" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Offline" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Grafiek" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "_Server" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "Verbin_ding verbreken" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "Opnieuw ve_rbinden" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "Kanaal openen..." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "Kanaal openen..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Als weg markeren" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "Gebr_uikersmenu" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "Inst_ellingen" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "Voorkeuren (_P)" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Uitgebreid" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Auto vervangen..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "CTCP Antwoorden..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Dialoogknoppen..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Sneltoetsen..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Tekst gebeurtenissen..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "URL Programma's..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Gebruikerscommando's..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Gebruikerslijst Knoppen..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Gebruikerslijst Popup menu..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "Venster (_W)" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Verbanlijst..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Speciale tekens..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Direct chat..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Bestandsoverdrachten..." + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "Verbanlijst..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Negeerlijst..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Plugins en scripts..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Ruw log..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "URL grijper..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Markeringslijn opnieuw instellen" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "Tekst wissen (_l)" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Tekst zoeken..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Tekst opslaan..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_Hulp" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "Inhoud (_C)" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "Info (_A)" + +#: src/fe-gtk/menu.c:2147 +#, fuzzy +msgid "_Attach" +msgstr "Tabblad vastmaken" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Laatst gezien" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Offline" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Nooit" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, fuzzy, c-format +msgid "%d minutes ago" +msgstr "%u minuten geleden" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Online" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Geef bijnaam om toe te voegen:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "XChat: Lijst uitgaande bestanden" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "Dialoogvenster openen" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:591 +#, fuzzy +msgid "_Hide" +msgstr "Verborgen" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +#, fuzzy +msgid "Channel Message" +msgstr "Kanaalsnaam" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +#, fuzzy +msgid "Private Message" +msgstr "Pieptoon bij Prive Berichten" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +#, fuzzy +msgid "Highlighted Message" +msgstr "Pieptoon bij opgelichte berichten" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "Weg" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Versie" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Omschrijving" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Kies een Plugin of Script om te laden" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: Plugins en scripts" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "_Laden..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "Ontladen (_U)" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Opslaan Als..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: Ruw log (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Ruw log wissen" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "Het venster waarvoor dit venster geopend was bestaat niet meer." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "Zoekopdracht heeft einde bereikt, niet gevonden." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: Zoeken" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "Hoofdlettergevoelig (_M)" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "Achterwaarts zoeken (_b)" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "Zoek (_F)" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Nieuw Netwerk" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Zeker het netwerk \"%s\" en al zijn servers verwijderen?" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "kanaal" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: Kanaallijst (%s)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "Wachtwoord:" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "B_ewerken" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "Gebruikersnaam en echte naam mogen niet blanco gelaten worden." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: %s bewerken" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Servers voor %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Verbind enkel met geselecteerde server" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Niet alle servers afgaan wanneer verbinden mislukt." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Uw details" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Algemene gebruikersinfo gebruiken" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "Bij_naam:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Tweede keuze:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "Gebr_uikersnaam:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "Echte naam (_l):" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Bezig met verbinden" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Auto-verbinden met dit netwerk bij opstarten" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "Een Proxy Server gebruiken" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "SSL gebruiken voor alle servers op dit netwerk" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Onjuist SSL certificaat accepteren" + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "Kanaal verlaten:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "Kanalen om binnen te gaan, gescheiden door komma's, maar geen spaties!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Verbindopdracht:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Extra uit te voeren opdracht na verbinden. Als u er meerdere nodig heeft, " +"kunt u dit instellen op LOAD -e <bestandsnaam>, waar <bestandsnaam> een " +"tekstbestand is met de uit te voeren opdrachten." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Bijnaamserver wachtwoord:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Als uw bijnaam een wachtwoord vereist, geef het dan hier in. Niet alle IRC-" +"netwerken ondersteuenen dit." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Serverwachtwoord:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Wachtwoord voor de server. Bij twijfel leeglaten." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Tekenset:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: Netwerklijst" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Gebruikersinformatie" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Derde keuze:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Netwerken" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "Netwerklijst overslaan bij opstarten" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "B_ewerken..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "_Sorteren" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "Verbinden (_o)" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Tekstvak uiterlijk" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Lettertype:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Achtergrond Afbeelding:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Terugschuif regels:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Gekleurde bijnamen" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Elke persoon op IRC een andere kleur geven" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Bijnamen inspringen" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Bijnamen rechts uitlijnen" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Achtergrond doozichtig" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Markeringslijn weergeven" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Rode lijn invoegen na laatste gelezen tekst." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Instellingen transparantheid" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Rood:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Groen:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Blauw:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Tijdsstempels" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Tijdsstempels aan zetten" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Tijdstampformaat:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Zie strftime handboekpagina voor details." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Invoervak" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Tekstvak lettertype en kleuren gebruiken" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "spelling checken" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Bijnaam-afmaken" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "Automatische Bijnaamaanvulling (zonder TAB-toets)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Nicknaam-aanvullen achtervoegsel:" + +#: src/fe-gtk/setup.c:147 +#, fuzzy +msgid "Nick completion sorted:" +msgstr "Nicknaam-aanvullen achtervoegsel:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Invoervak codes" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Interpreteer %nnn als een ASCII waarde" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "%C, %B als kleur, vet etc. interpreteren" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, Ops eerst" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, Ops als laatste" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Ongesorteerd" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Bovenkant" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Onderkant" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Verborgen" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Gebruikers Lijst" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Hostnamen in gebruikerslijst weergeven" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Gebruikerslijst gesorteerd op:" + +#: src/fe-gtk/setup.c:205 +#, fuzzy +msgid "Show user list at:" +msgstr "Laat de gebruikerslijst wel/niet zien" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Afwezigheidsbijhouding" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "" +"Houdt de Away-status van gebruikers bij en markeer ze in een andere kleur" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "Bij kanalen kleiner dan:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Activeren met dubbel-klikken" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Vensters" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Tabs" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Altijd" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Alleen gevraagde tabbladen" + +#: src/fe-gtk/setup.c:242 +#, fuzzy +msgid "Tree" +msgstr "Boom (_r)" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Extra tabblad openen voor serverberichten" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Extra tabblad openen voor servermeldingen" + +#: src/fe-gtk/setup.c:252 +#, fuzzy +msgid "Open a new tab when you receive a private message" +msgstr "Extra tabblad openen voor serverberichten" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Tabbladen alfabetisch ordenen" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "Kleine tabbladen" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Nieuwe tabbladen focusseren:" + +#: src/fe-gtk/setup.c:258 +#, fuzzy +msgid "Show channel switcher at:" +msgstr "Bij kanalen kleiner dan:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Tabbladlabels verkorten tot:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "letters." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Tabbladen of Vensters" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Open kanalen in:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Open dialoog vensters in:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Gereedschappen openen in:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "DCC, Negeren, berichten openen in tabbladen of vensters?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "Nee" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Ja" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "Blader elke keer voor bewaarmap" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Bestanden en mappen" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Auto accepteren bestandsaanbiedingen:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Gedownloade bestanden opslaan in:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Volledig gedownloade bestanden verplaatsen naar:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Bijnaam opslaan in bestandsnamen" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Netwerkinstellingen" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Mijn adres van de IRC server halen" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"De IRC-server om uw echte adres vragen. Gebruik dit als u een 192.168.*.* " +"adres heeft!" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "DCC IP Adres:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Doe alsof u op dit adres bent bij het aanbieden van bestanden." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Eerste DCC verstuurpoort:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Laatste DCC verstuurpoort:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!Poorten op nul laten voor volledig bereik." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Maximale bestandsoverdrachtssnelheid (bytes/s)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Eén upload:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Maximumsnelheid voor één overdracht" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Eén download:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Alle uploads samen:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Maximumsnelheid voor alle bestanden" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Alle downloads samen:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Waarschuwingen" + +#: src/fe-gtk/setup.c:333 +#, fuzzy +msgid "Show tray balloons on:" +msgstr "Tabs laten zien op:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:339 +#, fuzzy +msgid "Enable system tray icon" +msgstr "Weg-bijhouden aan zetten" + +#: src/fe-gtk/setup.c:341 +#, fuzzy +msgid "Highlighted Messages" +msgstr "Pieptoon bij opgelichte berichten" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:344 +#, fuzzy +msgid "Extra words to highlight:" +msgstr "Extra Woorden om op te lichten:" + +#: src/fe-gtk/setup.c:345 +#, fuzzy +msgid "Nick names not to highlight:" +msgstr "Niet op te lichten bijnamen:" + +#: src/fe-gtk/setup.c:346 +#, fuzzy +msgid "Nick names to always highlight:" +msgstr "Niet op te lichten bijnamen:" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Plaats komma's tussen de woorden." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Standaardberichten" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Afsluiten:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Kanaal verlaten:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Weg:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Weg" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Weg-berichten aankondigen" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Uw weg-berichten aankondigen bij alle kanalen" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Laat 'away' slechts een keer" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Identieke afwezigheidsberichten slechts eenmaal laten zien" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Automatisch afwezig de-markeren" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Uzelf niet meer als afwezig markeren alvorens berichten te verzenden" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Uitgebreide instellingen" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Vertraging bij auto-herverbinden:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "MODEs weergeven in ruwe vorm" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Whois bij waarschuwen" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "Een /WHOIS verzenden als een gebruiker uit uw lijst online komt" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Binnengaan/verlaten berichten verbergen" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Standaard kanaal binnengaan/verlaten berichten verbergen" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "DCC-vensters auto-openen" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Verzendvenster" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Ontvangstvenster" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Chatvenster" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Loggen" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "Loggen van gesprekken aanzetten" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Logbestandsnaam:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Server %c=Kanaal %n=Netwerk." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Tijdsstempels in logs invoegen" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Log tijdsstempel formaat:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Uitgezet)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Alle verbindingen" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "Enkel IRC Server" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "DCC Get Only" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Uw adres" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Verbinden met:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "Alleen bruikbaar voor computers met meerdere adressen." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Proxy-server" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Hostnaam:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Poort:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Soort" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Een Proxy Server gebruiken voor:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Proxy-authenticatie" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Gebruik authenticatie (enkel MS Proxy, HTTP of Socks5)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Gebruik authenticatie (enkel HTTP of Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Gebruikersnaam:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Wachtwoord:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Selecteer een afbeeldingsbestand" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "Kies downloadmap" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Kies een Lettertype" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Bladeren..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Geïdentificeerde gebruikers markeren met:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Niet-geïdentificeerde gebruikers markeren met:" + +#: src/fe-gtk/setup.c:1161 +#, fuzzy +msgid "Open Data Folder" +msgstr "Open Map..." + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Kies een kleur" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Tekstkleuren" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "mIRC kleuren:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Lokale kleuren:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Voorgrond:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Achtergrond:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Markeringstekst" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Interfacekleuren" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Nieuwe gegevens:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Markeringslijn:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Nieuw bericht:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Gebruiker weg:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Oplichting:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Gebeurtenis" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Geluidsbestand" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Kies een geluidsnaam" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Geluidsafspeelmethode:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "Extern geluidsafspeel_programma:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "_Extern programma" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_Automatisch" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "Geluidsbestan_den map:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Geluidsbestand:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "_Bladeren..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "Afs_pelen" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Uiterlijk" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Tekstvak" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Gebruikerslijst" + +#: src/fe-gtk/setup.c:1703 +#, fuzzy +msgid "Channel switcher" +msgstr "Kanaallijst..." + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Kleuren" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Chatten" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Algemeen" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Geluid" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Netwerkinstellingen" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Bestandsoverdrachten" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Categorieën" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" +"Sommige instellingen die zijn veranderd worden pas actief na het opnieuw " +"starten." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*WAARSCHUWING*\n" +"Auto accepteren van DCC naar uw persoonlijke\n" +"map is gevaarlijk en er kan misbruik van worden\n" +"gemaakt.\n" +"Iemand kan u bijvoorbeeld een .bash_profile\n" +"bestand opsturen." + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: Voorkeuren" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Er is een fout opgetreden bij het parsen van de string" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Dit signaal is slechts %d argumenten gegeven, $%d is onjuist" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Tekstbestand afdrukken" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Gebeurtenissen bewerken" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ Getal" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Laden vanaf..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Allemaal Testen" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: URL Grijper" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Lijst wissen" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Geselecteerde URL kopiëren" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Kopiëren" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Lijst opslaan naar een bestand" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d ops, %d totaal" + +#~ msgid "%C18*$t$1%O $2" +#~ msgstr "%C18*$t$1%O $2" + +#~ msgid "%C21*%O$t%C21%B$1%O%C21 $2" +#~ msgstr "%C21*%O$t%C21%B$1%O%C21 $2" + +#~ msgid "%C18%H<%H$4$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$4$1%H>%H%O$t$2" + +#~ msgid "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" +#~ msgstr "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" + +#~ msgid "%C28-%C29$1/$2%C28-%O$t$3" +#~ msgstr "%C28-%C29$1/$2%C28-%O$t$3" + +#~ msgid "$1$t$2" +#~ msgstr "$1$t$2" + +#~ msgid "%C19>%O$1%C19<%O$t$2" +#~ msgstr "%C19>%O$1%C19<%O$t$2" + +#~ msgid "%C16*%O$t$1%O" +#~ msgstr "%C16*%O$t$1%O" + +#~ msgid "%C28-%C29$1%C28-%O$t$2" +#~ msgstr "%C28-%C29$1%C28-%O$t$2" + +#~ msgid "%C28*%C29$3$1%C28*$t%O$2" +#~ msgstr "%C28*%C29$3$1%C28*$t%O$2" + +#~ msgid "%C18%H<%H$3$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$3$1%H>%H%O$t$2" + +#~ msgid "%C22*%O$t$1" +#~ msgstr "%C22*%O$t$1" + +#~ msgid "%C31%H<%H$4$1%H>%H%O%C30$t$2" +#~ msgstr "%C31%H<%H$4$1%H>%H%O%C30$t$2" + +#~ msgid "PID" +#~ msgstr "PID" + +#~ msgid "US Minor Outlying Islands" +#~ msgstr "VS kleine afgelegen eilanden" + +#~ msgid "Direct client-to-client" +#~ msgstr "Direct tussen personen" + +#~ msgid "Send File" +#~ msgstr "Bestand verzenden" + +#~ msgid "Offer Chat" +#~ msgstr "Chat aanbieden" + +#~ msgid "Abort Chat" +#~ msgstr "Chat afbreken" + +#~ msgid "Userinfo" +#~ msgstr "Gebruikersinfo" + +#~ msgid "Clientinfo" +#~ msgstr "Programma-info" + +#~ msgid "Time" +#~ msgstr "Tijd" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "Oper" + +#~ msgid "Kill this user" +#~ msgstr "Deze gebruiker doden" + +#~ msgid "Mode" +#~ msgstr "Modus" + +#~ msgid "Give Half-Ops" +#~ msgstr "Half-Ops geven" + +#~ msgid "Take Half-Ops" +#~ msgstr "Half-Ops nemen" + +#~ msgid "Ignore" +#~ msgstr "Negeren" + +#~ msgid "Ignore User" +#~ msgstr "Gebruiker negeren" + +#~ msgid "UnIgnore User" +#~ msgstr "Niet langer negeren" + +#~ msgid "Info" +#~ msgstr "Informatie" + +#~ msgid "Who" +#~ msgstr "Wie" + +#~ msgid "DNS Lookup" +#~ msgstr "DNS opzoeken" + +#~ msgid "Trace" +#~ msgstr "Traceren" + +#~ msgid "UserHost" +#~ msgstr "GebruikerHost" + +#~ msgid "External" +#~ msgstr "Extern" + +#~ msgid "Traceroute" +#~ msgstr "Traceroute" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "Unban" +#~ msgstr "Verbanning ongedaan maken" + +#~ msgid "I can't save an empty list!" +#~ msgstr "Kan geen lege lijst opslaan!" + +#~ msgid "List display options:" +#~ msgstr "Lijstweergave opties:" + +#~ msgid "Minimum Users:" +#~ msgstr "Minimaal aantal gebruikers: " + +#~ msgid "Maximum Users:" +#~ msgstr "Maximum aantal gebruikers: " + +#~ msgid "Regex Match:" +#~ msgstr "Regex overeenkomst:" + +#~ msgid "Apply Match to:" +#~ msgstr "Overeenkomst toepassen op:" + +#~ msgid "Apply" +#~ msgstr "Toepassen" + +#~ msgid "Refresh the list" +#~ msgstr "De lijst vernieuwen" + +#~ msgid "Save the list" +#~ msgstr "De lijst bewaren" + +#~ msgid "None" +#~ msgstr "Geen" + +#~ msgid "To" +#~ msgstr "Naar" + +#~ msgid "Started" +#~ msgstr "Gestart" + +#~ msgid "Speed limit" +#~ msgstr "Snelheidslimiet" + +#~ msgid "XChat: File Receive List" +#~ msgstr "XChat: Lijst binnenkomende bestanden" + +#~ msgid "Open" +#~ msgstr "Openen" + +#~ msgid "Ack" +#~ msgstr "Ack" + +#~ msgid "To/From" +#~ msgstr "Aan/Van" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "Geen andere tabbladen open, programma afsluiten?" + +#~ msgid "Show join/part messages" +#~ msgstr "Bericht binnengaan/verlaten weergeven" + +#~ msgid "Color paste" +#~ msgstr "Plakken met kleur" + +#~ msgid "Go to" +#~ msgstr "Ga naar" + +#~ msgid "_Close Tab" +#~ msgstr "Tabblad sluiten (_C)" + +#~ msgid "_Layout" +#~ msgstr "_Layout" + +#~ msgid "Notify List..." +#~ msgstr "Waarschuwingslijst..." + +#~ msgid "_Attach Window" +#~ msgstr "Venster _aanhechten" + +#~ msgid "_Close Window" +#~ msgstr "Venster sluiten (_C)" + +#~ msgid "User" +#~ msgstr "Gebruiker" + +#~ msgid "Server" +#~ msgstr "Server" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: Waarschuwingsvenster" + +#~ msgid "C_hannels to join:" +#~ msgstr "Kanalen om binnen te gaan (_h):" + +#~ msgid "Resizable user list" +#~ msgstr "Schaalbare gebruikerslijst" + +#~ msgid "Left" +#~ msgstr "Links" + +#~ msgid "Right" +#~ msgstr "Rechts" + +#~ msgid "Tabs Location" +#~ msgstr "Tabbladen positie" + +#~ msgid "(Can be a text file relative to ~/.xchat2/)." +#~ msgstr "(Kan een tekstbestand zijn relatief tot ~/.xchat2/)." + +#~ msgid "(Can be a text file relative to config dir)." +#~ msgstr "(Kan een tekstbestand zijn relatief tot config map)." + +#~ msgid "Flash taskbar on highlighted messages" +#~ msgstr "Taakbalk laten flitsen bij opgelichte berichten" + +#~ msgid "Beep on channel messages" +#~ msgstr "Pieptoon bij Kanaalberichten" + +#~ msgid "Open an irc:// url" +#~ msgstr "Open een irc:// url" + +#~ msgid "irc://server:port/channel" +#~ msgstr "irc://server:poort/kanaal" + +#~ msgid "Execute a xchat command" +#~ msgstr "Voer een xchat-opdracht uit" + +#~ msgid "\"Command to execute\"" +#~ msgstr "\"Uit te voeren commando\"" + +#~ msgid "Prints some text to the current tab/window" +#~ msgstr "Print tekst naar de huidige tab/venster" + +#~ msgid "\"Text to print\"" +#~ msgstr "\"Af te drukken tekst\"" + +#~ msgid "Change the context to the channel" +#~ msgstr "Wijzig de context naar het kanaal" + +#~ msgid "Change the context to the server" +#~ msgstr "Wijzig de context naar de server" + +#~ msgid "server" +#~ msgstr "server" + +#~ msgid "Get some informations from xchat" +#~ msgstr "Verkrijg informatie van xchat" + +#~ msgid "id" +#~ msgstr "id" + +#~ msgid "Get settings from xchat" +#~ msgstr "Verkrijg instellingen van xchat" + +#~ msgid "name" +#~ msgstr "naam" + +#~ msgid "" +#~ "xchat-remote: %s\n" +#~ "Try `xchat-remote --help' for more information\n" +#~ msgstr "" +#~ "xchat-remote: %s\n" +#~ "Probeer `xchat-remote --help' voor meer informatie\n" + +#~ msgid "Failed to complete SetContext" +#~ msgstr "SetContext vervolledigen mislukt" + +#~ msgid "Failed to complete print" +#~ msgstr "Vervolledigen afdruk mislukt" + +#~ msgid "Failed to complete GetInfo" +#~ msgstr "Vervolledigen GetInfo mislukt" + +#~ msgid "Failed to complete GetPrefs" +#~ msgstr "Vervolledigen GetPrefs mislukt" + +#~ msgid "%s doesn't exist\n" +#~ msgstr "%s bestaat niet\n" + +#~ msgid "%s loaded successfully!\n" +#~ msgstr "%s succesvol geladen!\n" + +#~ msgid "France, Metropolitan" +#~ msgstr "Frankrijk, metropool" + +#~ msgid "Neutral Zone" +#~ msgstr "Neutrale zone" + +#~ msgid "Settings saved." +#~ msgstr "Instellingen bewaard." + +#~ msgid "Save rawlog" +#~ msgstr "Het ruwe logbestand opslaan" + +#~ msgid "Save rawlog..." +#~ msgstr "Ruw log opslaan..." + +#~ msgid "XChat: Server List" +#~ msgstr "XChat: Server lijst" + +#~ msgid "Completes nick names without using the TAB key" +#~ msgstr "Bijnamen afmaken zonder TAB-toets te gebruiken" + +#~ msgid "Input Box Appearance" +#~ msgstr "Invoervak uiterlijk" + +#~ msgid "Convert spaces to underscore before sending" +#~ msgstr "Spaties omzetten naar onderstrepingen voor zenden" + +#~ msgid "(See strftime manpage for details)." +#~ msgstr "(Lees voor verdere informatie de strftime manpage)." + +#~ msgid "From:" +#~ msgstr "Van:" + +#~ msgid "To:" +#~ msgstr "Naar:" + +#~ msgid "Size:" +#~ msgstr "Grootte:" + +#~ msgid "MIME Type" +#~ msgstr "MIME type" + +#~ msgid "Close" +#~ msgstr "Sluiten" + +#~ msgid " : %s\n" +#~ msgstr " : %s\n" + +#~ msgid "DIRECTORY" +#~ msgstr "MAP" + +#~ msgid "Close this tab/window" +#~ msgstr "Dit tabblad/venster sluiten" + +#~ msgid "User List Buttons" +#~ msgstr "Gebruikerslijst knoppen" + +#~ msgid "New Shell Tab..." +#~ msgstr "Nieuw Shell Venster..." + +#~ msgid "_IRC" +#~ msgstr "_IRC" + +#~ msgid "Invisible" +#~ msgstr "Onzichtbaar" + +#~ msgid "Receive Wallops" +#~ msgstr "Wallops Ontvangen" + +#~ msgid "Receive Server Notices" +#~ msgstr "Ontvang server meldingen" + +#~ msgid "Auto Rejoin when Kicked" +#~ msgstr "Terug naar kanaal na wegtrappen" + +#~ msgid "Never-give-up ReConnect" +#~ msgstr "Stop nooit met reconnecten" + +#~ msgid "Auto Open Dialog Windows" +#~ msgstr "Open dialoog vensters automatisch" + +#~ msgid "Auto Accept Direct Chat" +#~ msgstr "Auto accepteren direct chat" + +#~ msgid "Reload Settings" +#~ msgstr "Opnieuw laden Instellingen" + +#~ msgid "Save Settings now" +#~ msgstr "Instellingen nu opslaan" + +#~ msgid "File Receive..." +#~ msgstr "Binnenkomende bestand..." + +#~ msgid "File Send..." +#~ msgstr "Uitgaande bestanden..." + +#~ msgid "Connect in new tab" +#~ msgstr "In nieuw tabblad verbinden" + +#~ msgid "Tint (shade) transparency" +#~ msgstr "Tint (nuance) transparantie" + +#~ msgid "Strip mIRC colors" +#~ msgstr "mIRC kleuren verwijderen" + +#~ msgid "Info text" +#~ msgstr "Informatietekst" + +#~ msgid "User list buttons enabled" +#~ msgstr "Gebruikerslijst knoppen aan" + +#~ msgid "Lag meter:" +#~ msgstr "Vertragingsmeter" + +#~ msgid "Throttle meter:" +#~ msgstr "Niveau meter:" + +#~ msgid "(disabled)" +#~ msgstr "(uitgezet)" + +#~ msgid "A star (*)" +#~ msgstr "Een ster (*)" + +#~ msgid "A red star (*)" +#~ msgstr "Een rode ster (*)" + +#~ msgid "%C19>%O$1%C19<%O$t$2%O" +#~ msgstr "%C19>%O$1%C19<%O$t$2%O" + +#~ msgid "Servername" +#~ msgstr "Servernaam:" + +#~ msgid "" +#~ " File: %s\n" +#~ " To/From: %s\n" +#~ " Size: %u\n" +#~ " Port: %d\n" +#~ " IP Number: %s\n" +#~ "Start Time: %s Max CPS: %d\n" +#~ msgstr "" +#~ " Bestand: %s\n" +#~ " Aan/Van: %s\n" +#~ " Grootte: %u\n" +#~ " Poort: %d\n" +#~ " IP adres: %s\n" +#~ "Starttijd: %s Max CPS: %d\n" + +#~ msgid "Add new" +#~ msgstr "Nieuw toevoegen" + +#~ msgid "User: %s" +#~ msgstr "Gebruiker: %s" + +#~ msgid "Realname: %s" +#~ msgstr "Echte naam: %s" + +#~ msgid "Server: %s" +#~ msgstr "Server= %s" + +#~ msgid "Real na_me:" +#~ msgstr "_Echte Naam:" + +#~ msgid "Select a file to save to" +#~ msgstr "Kies een bestand om in op te slaan" + +#~ msgid "%C22*%O$t%C28[%O$1%C28] %O$2" +#~ msgstr "%C22*%O$t%C28[%O$1%C28] %O$2" + +#~ msgid "Former Czechoslovakia" +#~ msgstr "Vroegere Tsjechoslowakije" + +#~ msgid "Zaire" +#~ msgstr "Zaïre" diff --git a/xchat-2.8.8/po/pa.gmo b/xchat-2.8.8/po/pa.gmo new file mode 100644 index 0000000000000000000000000000000000000000..90289a04f37745bb87e4f169932bf607f49cd235 GIT binary patch literal 99680 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 literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/po/pa.po b/xchat-2.8.8/po/pa.po new file mode 100644 index 0000000..6a22310 --- /dev/null +++ b/xchat-2.8.8/po/pa.po @@ -0,0 +1,5645 @@ +# translation of xchat-2.8.6.po to Punjabi +# translation of xchat-2.4.2.po to Punjabi +# This file is put in the public domain. +# +# Amanpreet Singh Alam <amanpreetalam@yahoo.com>, 2005. +# A S Alam <aalam@users.sf.net>, 2009. +msgid "" +msgstr "" +"Project-Id-Version: xchat-2.8.6\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2009-04-01 21:38+0000\n" +"Last-Translator: A S Alam <aalam@users.sf.net>\n" +"Language-Team: Punjabi <punjabi-l10n@lists.sourceforge.net>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.3\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "~/.xchat2 ਬਣਾ ਨਹੀਂ ਸਕਿਆ" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "ਮੈਂ ਰੁੱਝਿਆ ਹਾਂ" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "ਹਟ ਪਿੱਛੇ ਫੇਰ ਮਿਲਾਗੇਂ" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* IRC ਨੂੰ ਰੂਟ ਦੇ ਤੌਰ ਤੇ ਚਲਾਉਣਾ ਮੂਰਖਤਾ ਹੈ! ਤੁਹਾਨੂੰ ਇੱਕ\n" +" ਯੂਜ਼ਰ ਅਕਾਊਂਟ ਬਣਾਉਣਾ ਚਾਹੀਦਾ ਹੈ ਅਤੇ ਮੁੜ ਕੋਸ਼ਿਸ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ।\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "ਉਡੀਕ ਜਾਰੀ ਹੈ" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "ਐਕਟਿਵ" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "ਅਸਫਲ" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "ਸਮਾਪਤ" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "ਕੁਨੈਕਟ" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "ਛੱਡਿਆ" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "%s ਨੂੰ ਖੋਲ੍ਹਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ ਹੈ\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "ਗਲਤੀ" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s \"%s\" ਭੇਜ ਰਿਹਾ ਹੈ। ਕੀ ਤੁਸੀਂ ਮਨਜ਼ੂਰ ਕਰਦੇ ਹੋ?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "ਕੋਈ ਸਰਗਰਮ DCCs ਨਹੀਂ\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "ਹਾਂ " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "ਨਹੀਂ " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "ਤੁਹਾਨੂੰ %s ਤੋਂ CTCP ਹੜ੍ਹ ਨਾਲ ਭਰਨ ਦੀ ਕੋਸ਼ਿਸ, %s ਅਣਡਿੱਠਾ\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "ਤੁਹਾਨੂੰ %s ਤੋਂ MSG ਸੁਨੇਹੇ ਹਮਲੇ ਦਾ ਡਰ ਹੈ, gui_auto_open_dialog ਬੰਦ ਕੀਤਾ ਜਾਦਾ ਹੈ।\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s ਮੌਕੇ ਤੇ ਹੈ\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s ਮੌਕੇ ਤੇ ਨਹੀਂ ਹੈ\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "ਕੋਈ ਚੈਨਲ ਵਿੱਚ ਸ਼ਾਮਿਲ ਨਹੀਂ, ਕੋਸ਼ਿਸ ਕਰੋ /join #<channel>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "ਕੁਨੈਕਟ ਨਹੀਂ ਹੈ, ਕੋਸ਼ਿਸ ਕਰੋ /server <host> [<port>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "ਹਮੇਸ਼ਾ ਦੂਰ ਨਿਸ਼ਾਨਬੱਧ ਕਰੋ: %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "ਮੈਨੂੰ ਚੱਲਣ ਲਈ /bin/sh ਚਾਹੀਦੀ ਹੈ!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "ਉਪਲੱਬਧ ਕਮਾਂਡਾਂ:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "ਯੂਜ਼ਰ ਰਾਹੀਂ ਪ੍ਰਭਾਸ਼ਿਤ ਕਮਾਂਡਾਂ:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "" +"ਪਲੱਗਇਨ ਰਾਹੀਂ ਪ੍ਰਭਾਸ਼ਿਤ ਕਮਾਂਡਾਂ:\n" +"\n" +" " + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਲਈ ਲਿਖੋ /HELP <command> , ਜਾਂ /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "ਅਣਜਾਣ ਆਰਗੂਮੈਂਟ '%s' ਅਣਡਿੱਠਾ ਕੀਤਾ।" + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "ਇਸ ਤਰ੍ਹਾਂ ਦੀ ਕੋਈ ਪਲੱਗਇਨ ਨਹੀਂ ਹੈ।\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "ਇਹ ਪਲੱਗਇਨ ਅਨਲੋਡ ਨਹੀਂ ਹੋ ਸਕਦੀ।\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <name> <action>, ਯੂਜ਼ਰ ਲਿਸਟ ਹੇਠ ਬਟਨ ਸ਼ਾਮਿਲ ਕਰੋ" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <cmd>, ਉਹਨਾਂ ਸਭ ਚੈਨਲਾਂ ਨੂੰ ਕਮਾਂਡ ਭੇਜੋ, ਜਿੱਥੇ ਤੁਸੀਂ ਹੋ" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHANL <cmd>, ਉਹਨਾਂ ਸਭ ਚੈਨਲਾਂ ਨੂੰ ਕਮਾਂਡ ਭੇਜੋ, ਜਿੱਥੇ ਤੁਸੀਂ ਹੋ" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <cmd>, ਉਹਨਾਂ ਸਭ ਸਰਵਰਾਂ ਨੂੰ ਕਮਾਂਡ ਭੇਜੋ, ਜਿੱਥੇ ਤੁਸੀਂ ਹੋ" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<reason>], ਤੁਸੀਂ ਜਾ ਰਹੇ ਹੋ ਦਰਸਾਉਦਾ ਹੈ" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" + +#: src/common/outbound.c:3506 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <variable> [<value>]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "CLEAR [ALL|HISTORY], Clears the current text window or command history" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, ਮੌਜੂਦਾ ਵਿੰਡੋ/ਟੈਬ ਨੂੰ ਬੰਦ ਕਰੇਗਾ" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <code|wildcard>, ਦੇਸ਼ ਕੋਡ ਲੱਭੋ, ਜਿਵੇਂ ਕਿ au = australia" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" + +#: src/common/outbound.c:3516 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <name>, ਯੂਜ਼ਰ ਲਿਸਟ ਹੇਠ ਬਟਨ ਹਟਾਓ" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, ਸਰਵਰ ਨਾਲ ਸੰਬੰਧ ਖਤਮ" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS<nick।host।ip> ਯੂਜ਼ਰ IP ਨੰਬਰ ਲੱਭੋ" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <text>, ਲੋਕਲ ਟੈਕਸਟ ਛਾਪਿਆ ਜਾਵੇਗਾ" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" + +#: src/common/outbound.c:3560 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <password>, ਨੈਕਸਰਵਰ ਨਾਲ ਆਪਣੀ ਪਛਾਣ ਕਰਵਾਓ" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <nick> [<channel>], ਕਿਸੇ ਨੂੰ ਇੱਕ ਚੈਨਲ ਵਿੱਚ ਆਉਣ ਲਈ ਸੱਦਾ ਦਿਓ, ਮੂਲ ਰੂਪ ਵਿੱਚ ਮੌਜੂਦਾ " +"ਚੈਨਲ ਲਈ (ਮੁੱਖੀ ਹੋਣਾ ਲਾਜ਼ਮੀ)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <channel>, ਚੈਨਲ ਵਿੱਚ ਸ਼ਾਮਿਲ ਹੋਣ ਲਈ" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "KICK <nick>, ਮੌਜੂਦਾ ਚੈਨਲ ਵਿੱਚੋਂ ਨਾਂ ਨੂੰ ਬਾਹਰ ਸੁੱਟੋ (chanop ਹੋਣਾ ਲਾਜ਼ਮੀ)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <string>, ਬਫਰ ਵਿੱਚ ਸਤਰ ਖੋਜੋ" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <file>, ਪਲੱਗਇਨ ਜਾਂ ਸਕ੍ਰਿਪਟ ਲੋਡ ਕਰੋ" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <action>, ਚੈਨਲ ਵਿੱਚ ਕਾਰਵਾਈ ਕਰੋ (ਕਾਰਵਾਈ ਤੀਜੇ ਵਿਅਕਤੀ ਦੇ ਤੌਰ ਤੇ ਕੀਤੀ ਜਾਵੇਗੀ, ਜਿਵੇਂ /me " +"ਚੱਲਿਆ)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, ਮਾਸ ਕਿੱਕ, ਮੌਜੂਦਾ ਚੈਨਲ ਵਿੱਚ ਆਪਣੇ ਆਪ ਨੂੰ ਛੱਡ ਕੇ ਸਭ ਨੂੰ ਬਾਹਰ ਸੁੱਟੋ (ਮੁੱਖੀ ਹੋਣਾ ਲਾਜ਼ਮੀ ਹੈ)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <nick> <message>, ਨਿੱਜੀ ਸੁਨੇਹਾ ਭੇਜਣ ਲਈ" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, ਮੌਜੂਦਾ ਚੈਨਲ ਤੇ ਨਾਂ ਦੀ ਲਿਸਟ" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <nick> <message>, ਇੱਕ CTCP ਸੂਚਨਾ ਭੇਜੋ" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <hostname> [<port>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <nickname>, ਆਪਣਾ ਨਾਂ ਦਿਓ" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <nick>, ਚੈਨਲ ਮੁੱਖੀ ਸਥਿਤੀ ਨਾਂ ਨੂੰ ਦਿਓ (ਚੈਨਲ ਮੁੱਖੀ ਹੋਣਾ ਲਾਜ਼ਮੀ)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<channel>] [<reason>], ਚੈਨਲ ਛੱਡੋ, ਮੂਲ ਰੂਪ ਵਿੱਚ ਮੌਜੂਦਾ" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <nick | channel>, CTCP ਨਾਂ ਜਾਂ ਚੈਨਲ ਨੂੰ ਪਿੰਗ ਕਰੇਗਾ" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<reason>], ਮੌਜੂਦਾ ਸਰਵਰ ਨਾਲੋਂ ਵੱਖ" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <text>, ਮੌਜੂਦਾ ਝਰੋਖੇ ਵਿੱਚ ਇਕਾਈ ਨੂੰ ਲਿਖੋ" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <nick> [<file>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <host> <port> <channel>, ਕੁਨੈਕਟ ਅਤੇ ਚੈਨਲ ਵਿੱਚ ਸ਼ਾਮਲ" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <host> <port> <channel>, ਕੁਨੈਕਟ ਅਤੇ ਚੈਨਲ ਵਿੱਚ ਸ਼ਾਮਲ" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <host> [<port>] [<password>], ਸਰਵਰ ਨਾਲ ਜੋੜਦੀ ਹੈ, ਸਧਾਰਨ ਕੁਨੈਕਸ਼ਨਾਂ ਲਈ " +"ਮੂਲ ਪੋਰਟ 6667 ਹੈ, ਅਤੇ SSL ਕੁਨੈਕਸ਼ਨਾਂ ਲਈ 9999 ਹੈ।" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <host> [<port>] [<password>], ਸਰਵਰ ਨਾਲ ਜੁੜੋ, ਮੂਲ ਪੋਰਟ 6667 ਹੈ।" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <variable> [<value>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<position>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "TOPIC [<topic>], ਜੇਕਰ ਕੋਈ ਦਿੱਤਾ ਹੋਵੇ ਤਾਂ ਲਗਾਉ, ਨਹੀਂ ਤਾਂ ਮੌਜੂਦਾ ਵੇਖਾਇਆ ਜਾਵੇਗਾ" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <mask> [<mask>...], ਖਾਸ ਮਾਸਕ ਤੇ ਪਾਬੰਦੀ ਹਟਾਓ।" + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <mask> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <name>, ਪਲੱਗਇਨ ਜਾਂ ਸਕ੍ਰਿਪਟ ਹਟਾਓ" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, ਆਪਣੇ ਬਰਾਊਜ਼ਰ ਵਿੱਚ URL ਖੋਲ੍ਹੋ" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <nick>, ਕਿਸੇ ਨੂੰ ਆਵਾਜ਼ ਦਿਓ (chanop ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <message>, ਸਭ ਚੈਨਲ ਵਿੱਚ ਸੁਨੇਹਾ ਲਿਖੋ" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <message>, ਮੌਜੂਦਾ ਚੈਨਲ ਵਿੱਚ ਸਭ ਚੈਨਲ ਮੁੱਖੀਆਂ ਨੂੰ ਸੁਨੇਹਾ ਭੇਜੋ" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "ਵਰਤੋਂ: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"ਇਸ ਕਮਾਂਡ ਲਈ ਕੋਈ ਮੱਦਦ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ।\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "ਇਸਤਰਾਂ ਦੀ ਕੋਈ ਕਮਾਂਡ ਨਹੀਂ ਹੈ।\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "ਯੂਜ਼ਰ ਕਮਾਂਡ ਲਈ ਗਲਤ ਆਰਗੂਮੈਂਟ।\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "ਲਗਾਤਾਰ ਕਈ ਯੂਜ਼ਰ ਕਮਾਡਾਂ, ਅਧੂਰਾ ਛੱਡਿਆ।" + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "ਅਣਜਾਣੀ ਕਮਾਂਡ, ਕੋਸ਼ਿਸ ਕਰੋ /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "ਕੋਈ xchat_plugin_init ਨਹੀਂ, ਕੀ ਇਹ xchat ਪਲੱਗਇਨ ਹੈ?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "ਕੀ ਤੁਸੀਂ SSL ਅਨੁਕੂਲ ਸਰਵਰ ਤੇ ਪੋਰਟ ਹੋਣ ਦੀ ਪੁਸ਼ਟੀ ਕਰਦੇ ਹੋ?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"ਹੋਸਟ %s ਨਹੀਂ ਲੱਭਿਆ ਜਾ ਸਕਿਆ\n" +"ਆਪਣੀ IP ਸੈਟਿੰਗ ਵੇਖੋ!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "ਪਰਾਕਸੀ ਸੰਚਾਰ ਅਸਫਲ।\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "%s ਵਿੱਚ ਅਗਲੇ ਸਰਵਰ ਨਾਲ ਕੋਸ਼ਿਸ ਜਾਰੀ...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "ਚੇਤਾਵਨੀ: \"%s\" ਅੱਖਰ ਸਮੂਹ ਅਣਜਾਣ ਹੈ। ਨੈੱਟਵਰਕ %s ਲਈ ਅਨੁਵਾਦ ਲਾਗੂ ਨਹੀਂ ਹੈ।" + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 ਨੂੰ ਸੂਚਨਾ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕੀਤਾ।" + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 ਪਾਬੰਦੀ ਲਿਸਟ:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$t %C26 %B$1 %O ਵਿੱਚ ਦਾਖਲ ਨਹੀ ਹੋ ਸਕਦੇ (ਤੁਹਾਡੇ ਉੱਤੇ ਪਾਬੰਦੀ ਹੈ)।" + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 ਨੂੰ ਹੁਣ $2 ਦੇ ਤੌਰ ਉੱਤੇ ਜਾਣਿਆ ਜਾਵੇਗਾ" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 ਨੇ $2 ਉੱਤੇ ਪਾਬੰਦੀ ਲਗਾਈ" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tਚੈਨਲ $1 ਨੂੰ $2 ਤੇ ਬਣਾਇਆ ਗਿਆ ਹੈ" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O ਨੇ%C26 $2 ਤੋਂ ਚੈਨਲ ਅਰਧ-ਮੁੱਖੀ ਅਹੁਦਾ ਹਟਾਇਆ" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O ਨੇ%C26 $2 ਤੋਂ ਚੈਨਲ ਮੁੱਖੀ ਅਹੁਦਾ ਹਟਾਇਆ" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O ਨੇ %C26 $2 ਤੋਂ ਆਵਾਜ਼ ਹਟਾਈ" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O ਨੇ %C26 $2 ਨੂੰ ਅੱਧੇ-ਮੁੱਖੀ ਦਾ ਅਹੁਦਾ ਦਿੱਤਾ" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 ਨੇ $2 ਤੇ ਸੱਦਾ ਲਗਾਇਆ" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%Uਚੈਨਲ ਯੂਜ਼ਰ ਵਿਸ਼ਾ" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 ਢੰਗ $2$3 $4 ਦਿੱਤਾ" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "C22*%O$t%C22ਚੈਨਲ $1 ਮੋਡ: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O ਨੇ %C26 $2 ਨੂੰ ਚੈਨਲ ਮੁੱਖੀ ਦਾ ਦਰਜਾ ਦਿੱਤਾ" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 ਨੇ $2 ਤੋਂ ਸੱਦਾ ਹਟਾਇਆ" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 ਨੇ ਚੈਨਲ ਸ਼ਬਦ ਹਟਾਇਆ" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 ਨੇ ਯੂਜ਼ਰ ਸੀਮਾ ਹਟਾਈ" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 ਨੇ $2 ਲਈ ਚੈਨਲ ਸ਼ਬਦ ਲਗਾਇਆ" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 ਨੇ ਚੈਨਲ ਸੀਮਾ $2 ਕੀਤੀ" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 ਨੇ $2 ਤੋਂ ਪਾਬੰਦੀ ਹਟਾਈ" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O ਨੇ %C26 $2 ਲਈ ਆਵਾਜ਼ ਦਿੱਤੀ" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22ਕੁਨੈਕਟ ਹੈ। ਹੁਣ ਲਾਗਇਨ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22($2) ਨਾਲ ਪੋਰਟ $3%O ਉੱਤੇ ਕੁਨੈਕਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21ਕੁਨੈਕੁਸ਼ਨ ਅਸਫਲ ਹੈ। ਗਲਤੀ: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tਇੱਕ CTCP $1 $2 ਵੱਲੋਂ ਪ੍ਰਾਪਤ ਹੋਈ" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tਇੱਕ CTCP $1 $2 ਵੱਲੋਂ ਪ੍ਰਾਪਤ ਹੋਈ ($3 ਲਈ)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tCTCP ਆਵਾਜ਼ $1 $2 ਵੱਲੋਂ ਆਈ ਹੈ" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tਇੱਕ CTCP $1 ਧੁਨੀ $2 (to $3) ਵਲੋਂ ਮਿਲੀ" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$t%C26$1%O ਨਾਲ DCC ਗੱਲਬਾਤ ਅਧੂਰੀ ਰਹੀ।" + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$t%C26$1 %C30[%O$2%C30] ਨਾਲ DCC ਗੱਲਬਾਤ ਕੁਨੈਕਸ਼ਨ ਬਣਾਇਆ ਗਿਆ" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$t %C26$1%O ਨਾਲ DCC ਗੱਲਬਾਤ ਖਤਮ ($4)।" + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$t $1 ਵਲੋਂ DCC ਗੱਲਬਾਤ ਲਈ ਸੱਦਾ ਆਇਆ ਹੈ" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$t $1 ਨੂੰ DCC ਗੱਲਬਾਤ ਲਈ ਸੱਦਾ ਦੇ ਰਿਹਾ ਹੈ" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$t $1 ਨਾਲ ਪਹਿਲਾਂ ਹੀ ਗੱਲਬਾਤ ਲਈ ਸੱਦਾ ਦਿੱਤਾ ਗਿਆ ਹੈ" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$tDCC $1 %C26 $2%O ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਅਸਫਲ (ਗਲਤੀ=$3)" + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$t $2 ਵਲੋਂ '$1%O' ਪ੍ਰਾਪਤ" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 ਕਿਸਮ ਵੱਲ/ਵੱਲੋਂ ਸਥਿਤੀ ਅਕਾਰ Pos ਫਾਇਲ " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O.%010%C22*%O" +"$tContents of packet: $2" +msgstr "" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tਨੇ%C26 $1%O %C26 $2 ਨੂੰ ਪੇਸ਼ ਕੀਤੀ" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tਏਦਾਂ ਦਾ ਕੋਈ DCC ਸੱਦਾ ਨਹੀਂ ਹੈ।" + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O ਅਧੂਰਾ ਛੱਡਿਆ।" + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "%C22*%O$tDCC RECV%C26 $1%O, %C26 $3%O ਤੋਂ ਮੁਕੰਮਲ %C30[%C26$4%O cps%C30]%O" + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC RECV%C26 $1 %C30[%O$2%C30] ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਬਣਿਆ" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV%C26 $1%O ਤੋਂ%C26 $3%O ਤੋਂ ਪ੍ਰਾਪਤੀ ਅਸਫਲ($4)" + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV: $1ਨੂੰ ($2) ਲਿਖਣ ਲਈ ਖੋਲਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ।" + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "" +"%C22*%O$tਫਾਇਲ%C26 $1%C ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ, %C26 $2%O ਦੇ ਤੌਰ ਤੇ ਸੰਭਾਲੀ ਜਾ ਰਹੀ ਹੈ।" + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Oਨੇ%C26 $2 %Cਨੂੰ%C26 $3%C ਤੋਂ ਮੁੜ-ਪ੍ਰਾਪਤੀ ਦੀ ਮੰਗ ਰੱਖੀ।" + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O ਅਧੂਰਾ ਛੱਡਿਆ।" + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O ਮੁਕੰਮਲ %C30[%C26$3%O cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC SEND %C26 $1 %C30[%O$2%C30] ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਬਣਿਆ" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O ਅਸਫਲ $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Oਨੇ %C26 $2 %O(%C26$3 %Oਬਾਇਟ) ਫਾਇਲ ਭੇਜੀ" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cਸਥਿਰ - ਅਧੂਰਾ ਛੱਡਿਆ" + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Oਸਮਾਂ ਸਮਾਪਤ - ਅਧੂਰਾ ਛੱਡਿਆ।" + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 ਨੂੰ ਸੂਚਨਾ ਤੋਂ ਹਟਾਇਆ।" + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$t ($1) ਬੰਦ ਹੋਇਆ ਹੈ।" + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tਤੁਹਾਡਾ IP ਖੋਜਿਆ: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O ਨੂੰ ਅਣਡਿੱਠੀ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕੀਤਾ।" + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "%C26$1%O ਤਬਦੀਲੀ ਅਣਡਿੱਠਾ।" + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 ਹੋਸਟ ਮਾਸਕ PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O ਨੂੰ ਅਣਡਿੱਠਾ ਲਿਸਟ ਵਿੱਚੋਂ ਹਟਾਇਆ।" + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " ਅਣਡਿੱਠਾ ਲਿਸਟ ਖਾਲੀ ਹੈ।" + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "%C22*%O$t%C26 %B$1 %O ਵਿੱਚ ਦਾਖਲ ਨਹੀਂ ਹੋ ਸਕਦੇ (ਚੈਨਲ ਹੀ ਸੱਦ ਸਕਦਾ ਏ)।" + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tਤੁਹਾਨੂੰ%C26 $1%O by%C26 $2%C (%C26$3%C) ਲਈ ਸੱਦਾ ਹੈ" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) $2 ਵਿੱਚ ਦਾਖਲ" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$t%C26 %B$1 %O ਵਿੱਚ ਦਾਖਲ ਨਹੀਂ ਹੋ ਸਕਦੇ(ਸ਼ਬਦ ਲੋੜੀਦਾ ਹੈ)।" + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 ਨੇ $2 ਨੂੰ $3 ($4%O%C21) ਤੋਂ ਬਾਹਰ ਸੁੱਟ ਦਿੱਤਾ" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$tਤੁਹਾਨੂੰ $1 ($2%O%C22) ਨੇ ਚੈਨਲ ਵਿੱਚੋਂ ਬਾਹਰ ਸੁੱਟ ਦਿੱਤਾ" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD ਅਧੂਰਾ ਛੱਡਿਆ ਹੈ।" + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 ਪਹਿਲਾਂ ਹੀ ਵਰਤੋਂ ਅਧੀਨ ਹੈ। $2 ਨਾਲ ਮੁੜ ਕੋਸ਼ਿਸ ਜਾਰੀ..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "%C22*%O$tਨਾਂ ਪਹਿਲਾਂ ਹੀ ਵਰਤੋਂ ਅਧੀਨ ਹੈ। ਹੋਰ ਵਰਤਣ ਲਈ /NICK ਦੀ ਵਰਤੋਂ ਕਰੋ।" + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tਏਦਾਂ ਦਾ ਕੋਈ DCC ਨਹੀਂ ਹੈ।" + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tਇਸ ਸਮੇਂ ਕੋਈ ਕਾਰਜ ਨਹੀਂ ਚੱਲ ਨਹੀਂ ਰਿਹਾ ਹੈ।" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tਸੂਚਨਾ ਲਿਸਟ ਖਾਲੀ ਹੈ।" + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B ਸੂਚਨਾ ਲਿਸਟ " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 ਯੂਜ਼ਰ ਸੂਚਨਾ ਲਿਸਟ ਵਿੱਚ ਹੈ।" + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tਸੂਚਨਾ: $1 ਆਫਲਾਈਨ ਹੈ ($3)।" + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tਸੂਚਨਾ: $1 ਆਨਲਾਈਨ ਹੈ ($3)।" + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) ਛੱਡ ਗਿਆ ਹੈ $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) ਨੇ $3 (%O%C23%B%B$4%O%C23) ਛੱਡਿਆ" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$t$1ਤੋਂ ਪਿੰਗ ਜਵਾਬ: $2 ਸਕਿੰਟ" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$t$1 ਸਕਿੰਟਾਂ ਤੋਂ ਕੋਈ ਜਵਾਬ ਨਹੀ, ਕੁਨੈਕਸ਼ਨ ਨਹੀਂ ਹੈ।" + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tਇੱਕ ਕਾਰਜ ਪਹਿਲਾਂ ਹੀ ਚੱਲ ਰਿਹਾ ਹੈ" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 ਨੇ ਬੰਦ ਕੀਤਾ ਹੈ (%O%C23$2)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 ਨੇ ਢੰਗ%B %C30[%O$2%B%C30] ਦਿੱਤਾ" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$t%C26 $1%O ਲਈ IP ਨੰਬਰ ਦੀ ਖੋਜ ਜਾਰੀ ਹੈ..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22ਜੁੜਿਆ ਹੈ।" + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22 $1 ਦੀ ਖੋਜ ਜਾਰੀ ਹੈ" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tਪੁਰਾਣੀ ਕੁਨੈਕਸ਼ਨ ਕੋਸ਼ਿਸ ਰੋਕੀ (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29 $1%C %C29 ਲਈ ਵਿਸ਼ਾ ਹੈ: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 ਨੇ ਵਿਸ਼ਾ ਤਬਦੀਲ ਕੀਤਾ: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29$1%C %C29 ਲਈ ਵਿਸ਼ਾ $2%C %C29 ਨੇ $3 ਵਜੇ ਦਿੱਤਾ" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tਅਣਜਾਣ ਹੋਸਟ, ਸ਼ਾਇਦ ਤੁਸੀਂ ਨਾਂ ਗਲਤ ਲਿਖਿਆ ਹੈ?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "%C22*%O$t%C26 %B$1 %O ਵਿੱਚ ਦਾਖਲ ਨਹੀਂ ਹੋ ਸਕਦੇ (ਯੂਜ਼ਰ ਸੀਮਾ ਟੱਪੀ)।" + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26$1 ਉੱਤੇ ਯੂਜ਼ਰ:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cਦੂਰ %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OWHOIS ਲਿਸਟ ਖਤਮ।" + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O ਵਿਹਲਾ%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O ਵਿਹਲਾ%C26 $2%O, ਦਾਖਲ:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %Oਅਸਲੀ user@host%C27 $2%O, ਅਸਲੀ IP%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19ਹੁਣ $2 'ਤੇ ਗੱਲਬਾਤ ਕਰ ਰਹੇ ਹੋ" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tਤੁਹਾਨੂੰ $2 ਤੋਂ $3 ($4%O%C23) ਨੇ ਬਾਹਰ ਸੁੱਟ ਦਿੱਤਾ" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tਤੁਸੀਂ $3 ਚੈਨਲ ਛੱਡਿਆ" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tਤੁਸੀਂ $3 (%O%C23%B%B$4%O%C23) ਚੈਨਲ ਛੱਡਿਆ" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tਤੁਹਾਨੂੰ%C26 $1%O ਤੋਂ%C26 $2%O (%C26$3%O) ਤੇ ਸੱਦਿਆ ਗਿਆ" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tਹੁਣ ਤੁਸੀਂ ਜਾਣੇ ਜਾਓਗੇ $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** %s ਉੱਤੇ ਲਾਗ ਸਮਾਪਤ\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** %s ਉਤੇ ਲਾਗ ਸ਼ੁਰੂ \n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* ਲਿਖਣ ਲਈ ਲਾਗ ਫਾਇਲ ਨੂੰ ਖੋਲ੍ਹਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ ਹੈ।\n" +" %s/xchatlogs ਅਧਿਕਾਰਾਂ ਦੀ ਪੜਤਾਲ ਕਰੋ।" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "ਖੱਬਾ ਸੁਨੇਹਾ" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "ਸੱਜਾ ਸੁਨੇਹਾ" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "ਜੁਆਇੰਨ ਹੋਏ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "ਚੈਲਨ ਵਿੱਚ ਜੁਆਇੰਨ ਕੀਤਾ" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "ਵਿਅਕਤੀ ਦਾ ਹੋਸਟ" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "ਆਮ ਨਾਂ" + +#: src/common/text.c:973 +msgid "The action" +msgstr "ਕਾਰਵਾਈ" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "ਮੋਡ ਅੱਖਰ" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "ਪਛਾਣ ਟੈਕਸਟ" + +#: src/common/text.c:980 +msgid "The text" +msgstr "ਟੈਕਸਟ" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "ਸੁਨੇਹਾ" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "ਪੁਰਾਣਾ ਨਾਂ" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "ਨਵਾਂ ਨਾਂ" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "ਜਿਸ ਨੇ ਵਿਸ਼ਾ ਤਬਦੀਲ ਕੀਤਾ ਹੈ, ਉਸ ਦਾ ਨਾਂ" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "ਵਿਸ਼ਾ" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "ਚੈਨਲ" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "ਸੁੱਟਣ ਵਾਲੇ ਦਾ ਨਾਂ" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "ਸੁੱਟਿਆ ਗਿਆ ਵਿਅਕਤੀ" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "ਚੈਨਲ" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "ਕਾਰਨ" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "ਜਾ ਰਹੇ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "ਸਮਾਂ" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "ਨਿਰਮਾਤਾ" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "ਨਾਂ" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "ਕਾਰਨ" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "ਹੋਸਟ" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "ਕਿਸ ਵੱਲੋਂ ਹੈ" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "ਸਮਾਂ x.x ਫਾਰਮੈਟ ਵਿੱਚ (ਹੇਠਾਂ ਵੇਖੋ)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "ਚੈਨਲ ਇਹ ਜਾ ਰਿਹਾ ਹੈ" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "ਸਾਊਂਡ" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "CTCP ਘਟਨਾ" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "ਕੁੰਜੀ ਦੇਣ ਵਾਲੇ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "ਕੁੰਜੀ" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "ਲਿਮਟ ਲਗਾਉਣ ਵਾਲੇ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "ਲਿਮਟ" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "ਆਵਾਜ਼ ਦੇਣ ਵਾਲੇ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "ਆਵਾਜ਼ ਪ੍ਰਾਪਤ ਵਾਲੇ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "ਪਾਬੰਦੀ ਲਗਾਉਣ ਵਾਲੇ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "ਪਾਬੰਦੀ ਮਾਸਕ" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "ਕੁੰਜੀ ਹਟਾਉਣ ਵਾਲੇ ਦਾ ਨਾਂ" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "ਲਿਮਟ ਹਟਾਉਣ ਵਾਲੇ ਦਾ ਨਾਂ" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "ਨਾ-ਅਵਾਜ਼ ਕਰਨ ਵਾਲੇ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "ਨਾ-ਆਵਾਜ਼ ਕੀਤੇ ਜਾਣ ਵਾਲੇ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "ਨਾ-ਪਾਬੰਦੀ ਕਰਨ ਵਾਲੇ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "ਸੱਦਾ ਭੇਜਣ ਵਾਲੇ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "ਸੱਦਾ ਮਾਸਕ" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "ਸੱਦੇ ਨੂੰ ਹਟਾਉਣ ਵਾਲੇ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "ਢੰਗ ਦੇਣ ਵਾਲੇ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "ਢੰਗ ਨਿਸ਼ਾਨ (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "ਢੰਗ ਅੱਖਰ" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "ਚੈਨਲ ਦਿੱਤਾ ਜਾ ਰਿਹਾ ਹੈ" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "ਯੂਜ਼ਰ ਨਾਂ" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "ਪੂਰਾ ਨਾਂ" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "ਚੈਨਲ ਮੈਂਬਰੀ /\"ਇੱਕ IRC ਓਪਰੇਟਰ ਹੈ\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "ਸਰਵਰ ਜਾਣਕਾਰੀ" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "ਵਿਹਲਾ ਸਮਾਂ" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "ਦਾਖਲਾ ਸਮਾਂ" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "ਜਾਣ ਦਾ ਕਾਰਨ " + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "ਸੁਨੇਹਾ" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "ਅਕਾਊਂਟ" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "ਅਸਲੀ user@host" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "ਅਸਲੀ IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "ਚੈਨਲ ਨਾਂ" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "ਟੈਕਸਟ" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "ਸਰਵਰ ਨਾਂ" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "ਸੱਦਣ ਲਈ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "ਯੂਜ਼ਰ" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "ਵਰਤੋਂ ਵਿੱਚ ਆਮ ਨਾਂ" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "ਕੋਸ਼ਿਸ ਕੀਤਾ ਨਾਂ" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "ਪੋਰਟ" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "ਨੈੱਟਵਰਕ" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "ਢੰਗ ਸਤਰ" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "IP ਐਡਰੈੱਸ" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "DCC ਕਿਸਮ" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "ਫਾਇਲ ਨਾਂ" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "ਨਿਯਤ ਫਾਇਲ ਨਾਂ" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "ਰਸਤਾ ਨਾਂ" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "ਸਥਿਤੀ" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "ਸਾਈਜ਼" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "DCC ਸਤਰ" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "ਸੂਚਨਾ ਇਕਾਈਆਂ ਦੀ ਗਿਣਤੀ" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "ਪੁਰਾਣਾ ਫਾਇਲ ਨਾਂ" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "ਨਵਾਂ ਫਾਇਲ ਨਾਂ" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "ਪ੍ਰਾਪਤ ਕਰਤਾ" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "ਹੋਸਟ-ਮਾਸਕ" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "ਹੋਸਟ-ਨਾਂ" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "ਪੈਕਟ" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "ਸਕਿੰਟ" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "ਸੱਦਣ ਲਈ ਵਿਅਕਤੀ ਦਾ ਨਾਂ" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "ਪਾਬੰਦੀ-ਮਾਸਕ" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "ਕਿਸ ਨੇ ਪਾਬੰਦੀ ਲਗਾਈ" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "ਪਾਬੰਦੀ ਸਮਾਂ" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"%s ਘਟਨਾ ਪਾਰਸ ਕਰਨ ਦੌਰਾਨ ਗਲਤੀ।\n" +"ਮੂਲ ਹੀ ਲੋਡ ਕੀਤਾ ਗਿਆ ਹੈ।" + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"ਸਾਊਂਡ ਫਾਇਲ ਪੜ੍ਹੀ ਨਹੀਂ ਜਾ ਸਕੀ:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "ਰਿਮੋਟ ਹੋਸਟ ਬੰਦ ਸਾਕਟ" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "ਕੁਨੈਕਸ਼ਨ ਤੋਂ ਇਨਕਾਰ" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "ਹੋਸਟ ਲਈ ਮਾਰਗ ਨਹੀਂ" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "ਕੁਨੈਕਸ਼ਨ ਲਈ ਸਮਾਂ ਸਮਾਪਤ" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "ਇਹ ਸਿਰਨਾਵਾਂ ਦਿੱਤਾ ਨਹੀਂ ਜਾ ਸਕਦਾ" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "ਪੀਅਰ ਨੇ ਕੁਨੈਕਸ਼ਨ ਮੁੜ ਬਣਾਇਆ" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "ਅਡੂਰਾ" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "ਮਿਸਰ" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "ਅਫਗਾਨਿਸਤਾਨ" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "ਐਟੀਗੋਆ ਤੇ ਬਾਰਬੂਡਾ" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "ਐਗੂਲਾ" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "ਅਲਬਾਨੀਆ" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "ਅਰਮੀਨੀਆ" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "ਨੀਂਦਰਲੈਂਡ ਐਟੀਲਾਇਸ" + +#: src/common/util.c:857 +msgid "Angola" +msgstr " ਅੰਗੋਲਾ" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "ਐਟਾਰਟਿਕਾ" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "ਅਰਜਨਟੀਨਾ" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "ਉਲਟ DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "ਅਮਰੀਕਨ ਸਾਮੋਕਾ" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "ਆਸਟਾਰੀਆ" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "ਨੈਟੋ ਫਿਲ" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "ਅਸਟਰੇਲੀਆ" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "ਅਰੂਬਾ" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "ਅਲੈਂਡ ਟਾਪੂ" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "ਅਜਰਬਾਈਜਾਨ" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "ਬੋਸਨੀਆ ਤੇ ਹਰਜੀਗੋਵੀਨਾ" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "ਬਾਰਬਾਰਡੋਸ" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "ਬੰਗਲਾਦੇਸ਼" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "ਬੈਲਜੀਅਮ" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr " " + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "ਬੁਲਗਾਰੀਆ" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "ਬਹਰੀਨ" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "ਬੂਰੂਮਾਡੀ" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "ਵਪਾਰਿਕ" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "ਬੀਨਾਨ" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "ਬਾਰਮੂਡਾ" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "ਬਰੂਨਈ ਡਾਰੂਸ਼ਲਾਮ" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "ਬੋਲੋਵੀਆ" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "ਬਰਾਜ਼ੀਲ" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "ਬਾਹਾਮਾਸ" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "ਭੁਟਾਨ" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "ਬੂਟਵਟ ਟਾਪੂ" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "ਬੂਟਸਵਾਨਾ" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "ਬੇਲਾਰੂਸ" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "ਬੀਲੀਜ਼ੀ" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "ਕੈਨੇਡਾ" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "ਕੋਕਸ ਟਾਪੂ" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "ਕਾਗੋਂ ਗਣਰਾਜ" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "ਕੇਂਦਰੀ ਅਫਰੀਕੀ ਗਣਰਾਜ" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "ਕਾਂਗੋ" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "ਸਵਿਟਰਜ਼ਰਲੈਂਡ" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "ਕੋਟੀ ਡੀਵੋਰਆ" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "ਕੂਕ ਟਾਪੂ" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "ਚਿੱਲੀ" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "ਕੈਮਰੂਨ" + +#: src/common/util.c:898 +msgid "China" +msgstr "ਚੀਨ" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "ਕੋਲੰਬੀਆ" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "ਅੰਦਰੂਨੀ ਵਣਜ" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "ਕਾਸਟ ਰੀਕਾ" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "ਸਰਬੀਆ ਅਤੇ ਮੋਨਟੇਨੇਗਰੋ" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "ਕਿਊਬਾ" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "ਕੇਪ ਵਾਰਡੀ" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "ਕ੍ਰਿਸਮਸ ਟਾਪੂ" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "ਕਿਊਰੂਸ" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "ਚੈੱਕ ਗਣਰਾਜ" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "ਜਰਮਨੀ" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "ਡਜੀਬੂਟੀ" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "ਡੈਨਮਾਰਕ" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "ਡੋਮੀਨੀਆ" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "ਡੋਮੀਨੀਆਨ ਗਣਰਾਜ਼" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "ਅਲਜੀਰੀਆ" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "ਏਕਵੇਡਰ" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "ਵਿਦਿਅਕ ਸੰਗਠਨ" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "ਈਸਟੋਨੀਆ" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "ਮਿਸਰ" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "ਦੱਖਣੀ ਸਹਾਰਾ" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "ਈਰਟੀਰਆ" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "ਸਪੇਨ " + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "ਈਥੋਪਈਆ" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "ਯੂਰਪੀ ਯੂਨੀਅਨ" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "ਫਿਨਲੈਂਡ" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "ਫਿਜੀ" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "ਫਾਕਲੈਡ ਟਾਪੂ" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "ਮਾਕਰੋਨੀਸ਼ੀਆ" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "ਫਾਰੀਓ ਟਾਪੂ" + +#: src/common/util.c:928 +msgid "France" +msgstr "ਫਰਾਂਸ" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "ਗਾਬੋਨ" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "ਬਰਤਾਨੀਆ" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "ਗਰੀਨਾਡਾਆ" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "ਜਾਰਜੀਆ" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "ਫਰੈਂਚ ਗੁਆਨਾ" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "ਘਾਨਾ" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "ਗੀਬਰਾਲਟਰ" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "ਗਰੀਨਲੈਂਡ" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "ਗਾਬੀਆ" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "ਗੂਈਨੀਆ" + +#: src/common/util.c:940 +msgid "Government" +msgstr "ਸਰਕਾਰੀ" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "ਗੁਆਡੀਲੂਪੀ" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "ਭੂ-ਖੰਡੀ ਗੁਆਨਾ" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "ਗਰੀਸ" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "ਦੱਖਣ ਜਾਰਜੀਆ ਦੱਖਣ" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "ਗੂਆਟੇਮਾਲਾ" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "ਗੁਆਮ" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "ਗੁਨੇਆ-ਬਿਸਾਉ" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "ਗੁਆਨਾ" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "ਹਾਂਗਕਾਂਗ" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "ਹੀਅਰਡ ਅਤੇ ਮੈਕਡੋਨਾਲਡ ਆਈਸਲੈਂਡ" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "ਹਾਨਡੂਰਸ" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "ਕਰੋਟੀਆ" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "ਹਾਈਟੀ" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "ਹੰਗਰੀ" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "ਇੰਡੋਨੇਸ਼ੀਆ" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "ਆਇਰਲੈਂਡ" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "ਇਜ਼ਰਾਈਲ" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "" + +#: src/common/util.c:959 +msgid "India" +msgstr "ਭਾਰਤ" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "ਜਾਣਕਾਰੀ" + +#: src/common/util.c:961 +msgid "International" +msgstr "ਅੰਤਰਰਾਸ਼ਟਰੀ" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "ਬਰਤਾਨੀਆ ਭਾਰਤੀ ਸਮੁੰਦਰੀ ਖੇਤਰ" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "ਇਰਾਕ" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "ਈਰਾਨ" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "ਆਈਸਲੈਂਡ" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "ਇਟਲੀ" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "ਜਰਸੀ" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "ਜੈਮਾਈਕਾ" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "ਜਾਰਡਨ" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "ਜਾਪਾਨ" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "ਕੀਨੀਆ" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "ਕਿਰਗਸਤਾਨ" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "ਕੋਲੰਬੀਆ" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "ਕੀਰੀਬਾਟੀ" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "ਕੋਮੋਰਸ" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "ਸੇਂਟ ਕਿੱਟ ਅਤੇ ਨੀਵਿਸ" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "ਉੱਤਰੀ ਕੋਰੀਆ" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "ਦੱਖਣੀ ਕੋਰੀਆ" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "ਕੁਵੈਤ" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "ਕਾਯਮਨ ਟਾਪੂ" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "ਕਜ਼ਾਕਸਤਾਨ" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "ਲਿਉਸ" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "ਲੀਬਨਾਨ" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "ਸੇਂਟ ਲੂਸੀਆ" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "ਲੀਚਟੀਨੀਆ" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "ਸ੍ਰੀਲੰਕਾ" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "ਲੀਬੀਰੀਆ" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "ਲੀਸੋਥੋ" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "ਲੀਥੂਨੀਆ" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "ਲ਼ਕਸ਼ਮਬਰਗ" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "ਲਾਟੀਵਾਆ" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "ਲੀਬੀਆ" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "ਮੋਰੋਸ਼ਸ" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "ਮੋਨਸ਼ੀਆ" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "ਮੋਲਡੋਵਾ" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "ਅਮਰੀਕੀ ਮੈਂਡੀਕਲ" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "ਮੈਡਾਗਾਸਕਰ" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "ਮਾਰਸ਼ਲ ਟਾਪੂ" + +#: src/common/util.c:999 +msgid "Military" +msgstr "ਮਿਲਟਰੀ" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "ਮੈਕਡੋਨੀਆ" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "ਮਾਲੀ" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "ਮਿਆਂਮਾਰ" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "ਮੰਗੋਲੀਆ" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "ਮਕਾਉ" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "ਉੱਤਰੀ ਮਰੀਵੀਆਨਾ ਟਾਪੂ" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "ਮਾਰਟੀਨੀਕਿਊ" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "ਮਾਓਰੀਟਆਨਾ" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "ਮੋਨਟਸ਼ਟੀਟ" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "ਮਾਲਟਾ" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "ਮਾਓਟੀਸ" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "ਮਾਲਦੀਪ" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "ਮਾਲਾਵੀਆ" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "ਮੈਕਸੀਕੋ" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "ਮਲੇਸ਼ੀਆ" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "ਮੋਜ਼ਾਮਬੀਕਿਉ" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "ਨੀਮੀਬੀਆ" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "ਨੀਜ਼ਰ" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "ਨੈੱਟਵਰਕ" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "ਨੋਰਫੋਕ ਟਾਪੂ" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "ਨੀਜ਼ੀਰਆ" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "ਨਿਕਾਰਗੁਆ" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "ਨੀਂਦਰਲੈਂਡ" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "ਨਾਰਵੇ" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "ਨੇਪਾਲ" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "ਨੀਓਰੂ" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "ਨੀਊਈ" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "ਨਿਊਜ਼ੀਲੈਂਡ" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "ਓਮਾਨ" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "ਅੰਦਰੂਨੀ ਨਾ-ਲਾਭ ਸੰਗਠਨ" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "ਪੈਨਾਮਾ" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "ਪੇਰੂ" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "ਫਰੈਚ ਪੋਲੀਸੇਲੇਵੀਆ" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "ਪਾਪੂਆ ਨਵਾਂ ਗੂਈਨਿਆ" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "ਫਿਲਿਪੀਨੀਜ਼" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "ਪਾਕਿਸਤਾਨ" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "ਪੋਲੈਂਡ" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "ਸੇਂਟ ਪਰੇਰਾ ਅਤੇ ਮਿਕਿਊਲੋਨ" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "ਪਿਟਸਾਰਨ" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "ਪੁਈਰਟੋ ਰੀਸੋ" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "ਫਿਲੀਸਤੀਨ ਭਾਗ" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "ਪੁਰਤਗਾਲ" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "ਪਾਲਾਊ" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "ਪੇਰੂਗਵੇ" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "ਕਤਰ" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "ਰੀਯੁਨੀਅਨ" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "ਰੋਮਾਨੀਆ" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "ਪੁਰਾਣਾ ਸਕੂਲ ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "ਸੰਘੀ ਰੂਸ " + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "ਰਵਾਂਡਾਂ" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "ਸਾਊਦੀ ਅਰਬ" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "ਸੋਲੋਮੋਨ ਟਾਪੂ" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "ਸੀਆਚਿਲਸ" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "ਸੂਡਾਨ" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "ਸਵੀਡਨ" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "ਸਿੰਘਾਪੁਰ" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "ਸੇਂਟ ਹੀਲੀਨਆ" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "ਸਲੋਵੀਨੀਆ" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "ਸਵਾਲਬੋਰਡ ਅਤੇ ਜਾਨ ਮਾਈਨ ਆਈਸਲੈਂਡ" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "ਸਲੋਵਾਕ ਲੋਕਤੰਤਰ" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "ਸੀਈਰਆ ਲਿਏਨ" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "ਸਾਨ ਮਾਰੀਨੂ" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "ਸੈਨੇਗਾਲ" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "ਸੋਮਾਲੀਆ" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "ਸੂਰੀਨਾਂ" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "ਸਾਓ ਟੋਮ ਅਤੇ ਪ੍ਰਿਨਸਾਈਪ" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "ਪੁਰਾਣਾ ਸੋਵੀਅਤ ਯੂਨੀਅਨ" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "ਈਲ ਸਾਲੇਵਡੋਰ" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "ਸੀਰੀਆ" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "ਸਵਰਜ਼ਲੈਂਡ" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "ਤੁਰਕਸ ਅਤੇ ਕੇਈਕੋਸ ਟਾਪੂ" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "ਚੰਦ" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "ਫਰੈਂਚ ਦੱਖਣੀ ਖੇਤਰ" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "ਟੂਗੂ" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "ਥਾਈਲੈਂਡ" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "ਤਜ਼ਾਕਸਤਾਨ" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "ਟੂਕੀਲਾਊ" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "ਪੂਰਬੀ ਟੀਮੋਰ" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "ਤੁਰਕਸਤਾਨ" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "ਟੁਨੀਸ਼ੀਆ" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "ਟੂਨਗਾ" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "ਤੁਰਕੀ" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "ਟਰਿਨੀਦਾਦ ਅਤੇ ਟੋਬੇਗੋ" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "ਟੂਵਾਲੂ" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "ਤਾਈਵਾਨ" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "ਤਾਨਜ਼ੀਆ" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "ਯੂਕਰੇਨ" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "ਯੂਗਾਂਡਾ" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "ਬਰਤਾਨੀਆ" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "ਸੰਯੁਕਤ ਰਾਜ ਅਮਰੀਕਾ" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "ਉਰੂਗਵੇ" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "ਉਜ਼ੇਬਕਸਤਾਨ" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "ਵਾਟਕੈਨ ਸ਼ਹਿਰ ਪ੍ਰਾਂਤ" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "ਸੇਂਟ ਵੀਨਸੈਂਟ ਅਤੇ ਗਰੀਨਾਡੀਨਸ" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "ਵੈਨੂਜੇਏਲਾ" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "ਬ੍ਰਿਟਿਸ਼ ਵੀਰਗਿਨ ਟਾਪੂ" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "ਅਮਰੀਕੀ ਵਰਜਿਨ ਟਾਪੂ" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "ਵੀਅਤਨਾਮ" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "ਵਾਨੂਟੂ" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "ਵੈਲਿਸ ਅਤੇ ਫੂਟੂਨਾ ਆਈਸਲੈਂਡ" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "ਸਾਮੀਆ" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "ਯਮਨ" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "ਮਾਈਟੀ" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "ਯੂਗੋਸਲਾਵੀਆ" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "ਦੱਖਣੀ ਅਫਰੀਕਾ" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "ਜ਼ੈਬੀਆ" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "ਜਿੰਬਾਬਾਵੇੰ" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "ਅਣਜਾਣ" + +#: src/common/xchat.c:726 +msgid "_Open Dialog Window" +msgstr "ਡਾਈਲਾਗ ਵਿੰਡੋ ਖੋਲ੍ਹੋ(_O)" + +#: src/common/xchat.c:727 +msgid "_Send a File" +msgstr "ਫਾਇਲ ਭੇਜੋ(_S)" + +#: src/common/xchat.c:728 +msgid "_User Info (WhoIs)" +msgstr "ਯੂਜ਼ਰ ਜਾਣਕਾਰੀ(_U)(WhoIs)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "ਦੋਸਤ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ(_A)" + +#: src/common/xchat.c:730 +msgid "O_perator Actions" +msgstr "ਓਪਰੇਟਰ ਐਕਸ਼ਨ(_p)" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Ops ਦਿਓ" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Ops ਹਟਾਓ" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "ਆਵਾਜ਼ ਦਿਓ" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "ਆਵਾਜ਼ ਲਵੋ" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "ਕਿੱਕ/ਪਾਬੰਦੀ" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "ਕਿੱਕ" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "ਪਾਬੰਦੀ" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "ਕਿੱਕ-ਪਾਬੰਦੀ" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "ਚੈਨਲ ਛੱਡੋ" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "ਚੈਨਲ ਜੁਆਇੰਨ ਕਰੋ..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "ਜੁਆਇੰਨ ਕਰਨ ਲਈ ਚੈਨਲ ਦਿਓ:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "ਸਰਵਰ ਲਿੰਕ" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "ਸਰਵਰ ਪਿੰਗ" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "ਵਰਜਨ ਓਹਲੇ" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Op" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "ਅਲਵਿਦਾ" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "%s ਸੁੱਟਣ ਲਈ ਕਾਰਨ:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "ਫਾਇਲ਼-ਭੇਜੋ" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "ਡਾਈਲਾਗ" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "ਕੌਣ ਹੈ" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "ਭੇਜੋ" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "ਗੱਲਬਾਤ" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "ਸਾਫ਼" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "ਪਿੰਗ" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "ਸ਼ੈਸ਼ਨ ਬਸ ਨਾਲ ਜੁੜ ਨਹੀਂ ਸਕਿਆ" + +#: src/common/dbus/dbus-client.c:86 +#, fuzzy +msgid "Failed to complete NameHasOwner" +msgstr "ਕਮਾਂਡ ਪੂਰੀ ਕਰਨ ਲਈ ਅਸਫ਼ਲ ਹੈ" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "ਕਮਾਂਡ ਪੂਰੀ ਕਰਨ ਲਈ ਫੇਲ੍ਹ" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "ਰਿਮੋਟ ਅਸੈੱਸ" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "ਸ਼ੈਸ਼ਨ ਬਸ ਨਾਲ ਜੁੜਨ ਲਈ ਅਸਫ਼ਲ: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, fuzzy, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਅਸਫ਼ਲ " + +#: src/fe-gtk/about.c:100 +msgid "About " +msgstr "ਇਸ ਬਾਰੇ" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "ਇੱਕ ਅੰਤਰ ਪਲੇਟਫਾਰਮ IRC ਕਲਾਂਇਟ" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "ਅੱਖਰ ਚਾਰਟ" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "ਕੁਨੈਕਟ ਨਹੀਂ ਹੈ।" + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "ਤੁਹਾਨੂੰ ਕੁਝ ਪਾਬੰਦੀਆਂ ਦੀ ਚੋਣ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ।" + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "ਮਾਸਕ" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "ਵੱਲੋਂ" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "ਮਿਤੀ" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "ਤੁਸੀਂ ਇੱਕ ਪਾਬੰਦੀ ਮੇਨੂ ਵਿੰਡੋ ਤਾਂ ਹੀ ਖੋਲ੍ਹ ਸਕਦੇ ਹੋ, ਜੇਕਰ ਤੁਸੀਂ ਚੈਨਲ ਟੈਬ ਵਿੱਚ ਹੋ।" + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: ਪਾਬੰਦੀ ਲਿਸਟ (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "ਹਟਾਓ" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "ਉਭਾਰੋ" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "ਤਾਜ਼ਾ" + +#: src/fe-gtk/chanlist.c:111 +#, fuzzy, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "ਯੂਜ਼ਰ ਤੇ ਚੈਨਲ ਅੰਕੜੇ: %d/%d ਯੂਜ਼ਰ %d/%d ਚੈਨਲ ਤੇ" + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "ਆਉਟਪੁੱਟ ਫਾਇਲ ਨਾਂ ਚੁਣੋ" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "ਚੈਨਲ ਜੁਆਇੰਨ ਕਰੋ(_J)" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "ਚੈਨਲ ਨਾਂ ਕਾਪੀ ਕਰੋ(_C)" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "ਵਿਸ਼ਾ ਟੈਕਸਟ ਕਾਪੀ ਕਰੋ(_T)" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: ਚੈਨਲ ਲਿਸਟ (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "ਖੋਜ(_S)" + +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "ਡਾਊਨਲੋਡ ਲਿਸਟ(_D)" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "ਲਿਸਟ ਸੰਭਾਲੋ(_L)..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "ਕੇਵਲ ਵੇਖੋ:" + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "ਇਸ ਨਾਲ ਚੈਨਲ" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "ਤੋਂ" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "ਯੂਜ਼ਰ" + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "ਖੋਜ:" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "ਚੈਨਲ ਨਾਂ" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "ਖੋਜ ਟਾਈਪ:" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "ਸਧਾਰਨ ਖੋਜ" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "ਰੈਗੂਲਰ ਸਮੀਕਰਨ" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "ਖੋਜ:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "%s ਨੂੰ ਫਾਇਲ ਭੇਜੋ" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "ਇਹ ਫਾਇਲ ਮੁੜ-ਪ੍ਰਾਪਤੀ ਯੋਗ ਨਹੀਂ।" + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"ਫਾਇਲ ਲਈ ਅਧਿਕਾਰ ਨਹੀਂ: %s\n" +"%s.\n" +"ਮੁੜ-ਪ੍ਰਾਪਤੀ ਸੰਭਵ ਨਹੀਂ।" + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "ਡਾਊਨਲੋਡ ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਫਾਇਲ ਦਿੱਤੇ ਅਕਾਰ ਤੋਂ ਵੱਡੀ ਹੈ। ਮੁੜ-ਪ੍ਰਾਪਤੀ ਸੰਭਵ ਨਹੀਂ ਹੈ।" + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "ਦੋ ਲੋਕਾਂ ਤੋਂ ਇੱਕੋ ਫਾਇਲ ਮੁੜ ਪ੍ਰਾਪਤ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ।" + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: ਅੱਪਲੋਡ ਅਤੇ ਡਾਊਨਲੋਡ" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "ਹਾਲਤ" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "ਫਾਇਲ" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "ਦੋਵੇਂ" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "ਅੱਪਲੋਡ" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "ਡਾਊਨਲੋਡ" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "ਵੇਰਵਾ" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "ਫਾਇਲ:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "ਐਡਰੈੱਸ:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "ਅਧੂਰਾ ਛੱਡੋ" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "ਮਨਜ਼ੂਰ" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "ਮੁੜ-ਪ੍ਰਾਪਤ" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "...ਫੋਲਡਰ ਖੋਲ੍ਹੋ" + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: DCC ਗੱਲਬਾਤ ਲਿਸਟ" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "ਪ੍ਰਾਪਤ" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "ਭੇਜੀ" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "ਸ਼ੁਰੂ ਸਮਾਂ" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*ਨਵਾਂ*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "ਮੈਨੂੰ ਸੋਧੋ" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "ਨਾਂ" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "ਕਮਾਂਡ" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "ਉੱਤੇ ਭੇਜੋ" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "ਹੇਠਾਂ ਭੇਜੋ" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "ਰੱਦ ਕਰੋ" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "ਸੰਭਾਲੋ" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "ਨਵਾਂ ਸ਼ਾਮਿਲ" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "ਹਟਾਓ" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "ਲੜੀਬੱਧ" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "ਮੱਦਦ" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "ਸਰਵਰ ਨਾਲ ਆਟੋਮੈਟਿਕ ਕੁਨੈਕਟ ਨਾ ਕਰੋ" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "ਇੱਕ ਵੱਖਰੀ ਸੰਰਚਨਾ ਡਾਇਰੈਕਟਰੀ ਵਰਤੋਂ" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "ਕੋਈ ਪਲੱਗਇਨ ਆਟੋਮੈਟਿਕ ਲੋਡ ਨਾ ਕਰੋ" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "ਪਲੱਗਇਨ ਆਟੋ-ਲੋਡ ਡਾਇਰੈਕਟਰੀ ਵੇਖਾਓ" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "ਯੂਜ਼ਰ ਸੰਰਚਨਾ ਡਾਇਰੈਕਟਰੀ ਵੇਖਾਓ" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "ਇੱਕ irc://server:port/channel URL ਖੋਲ੍ਹੋ" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "ਕਮਾਂਡ ਚਲਾਓ:" + +#: src/fe-gtk/fe-gtk.c:132 +msgid "Open URL or execute command in an existing XChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "ਲੈਵਲ" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "ਵਰਜਨ ਜਾਣਕਾਰੀ ਵੇਖਾਓ" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"ਫੋਂਟ ਖੋਲ੍ਹਣ ਲਈ ਅਸਫ਼ਲ:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "ਖੋਜ ਬਫ਼ਰ ਖਾਲੀ ਹੈ।\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d ਬਾਇਟ" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "ਨੈੱਟਵਰਕ ਨੇ ਕਤਾਰ ਭੇਜੀ: %d ਬਾਈਟ" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "ਇਹ ਕਮਾਂਡ ਮੌਜੂਦਾ ਟੈਬ ਨੂੰ ਇੱਕ ਖੱਬੇ ਅੱਗੇ ਖਿਸਕਾਏਗੀ" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "ਇਹ ਕਮਾਂਡ ਮੌਜੂਦਾ ਟੈਬ ਨੂੰ ਇੱਕ ਸੱਜੇ ਅੱਗੇ ਖਿਸਕਾਏਗੀ" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "ਇਹ ਕਮਾਂਡ ਮੌਜੂਦਾ ਟੈਬ ਵਰਗ ਨੂੰ ਖੱਬੇ ਪਾਸੇ ਖਿਸਕਾਏਗੀ" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "ਇਹ ਕਮਾਂਡ ਮੌਜੂਦਾ ਟੈਬ ਵਰਗ ਨੂੰ ਸੱਜੇ ਪਾਸੇ ਖਿਸਕਾਏਗੀ" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "ਇੰਪੁੱਟ ਸਤਰ ਨੂੰ ਅਤੀਤ ਵਿੱਚ ਰੱਖੋ, ਪਰ ਸਰਵਰ `ਤੇ ਨਾ ਭੇਜੋ" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "ਸਵਿੱਚ ਬੰਧਨ ਸੰਰਚਨਾ ਲੋਡ ਕਰਨ ਦੌਰਾਨ ਗਲਤੀ ਹੈ" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<none>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "ਮੋਡ" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "ਸਵਿੱਚ" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "ਐਕਸ਼ਨ" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: ਕੀ-ਬੋਰਡ ਸ਼ਾਰਟਕੱਟ" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "ਡਾਟਾ ੧" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "ਡਾਟਾ ੨" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "ਸਵਿੱਚ ਸੰਰਚਨਾ ਫਾਇਲ ਖੋਲਣ ਦੌਰਾਨ ਗਲਤੀ\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"ਸਵਿੱਚ ਬੰਧਨ ਸੰਰਚਨਾ ਫਾਇਲ ਵਿੱਚ ਅਣਜਾਣ ਸਵਿੱਚ ਨਾਂ %s\n" +"ਲੋਡ ਕਰਨਾ ਅਸਫਲ, ਕਿਰਪਾ ਕਰਕੇ %s/keybindings ਠੀਕ ਕਰੋ\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"ਸਵਿੱਚ ਬੰਧਨ ਸੰਰਚਨਾ ਫਾਇਲ ਵਿੱਚ ਅਣਜਾਣੀ ਕਾਰਵਾਈ %s\n" +"ਲੋਡ ਕਰਨਾ ਅਸਫਲ, ਕਿਰਪਾ ਕਰਕੇ %s/keybindings ਠੀਕ ਕਰੋ\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"ਡਾਟਾ ਸਤਰ (Dx{:|!} ਨਾਲ ਸ਼ੁਰੂ ਹੁੰਦੀ) ਦੀ ਮੰਗ ਸੀ, ਪਰ ਮਿਲਿਆ:\n" +"%s\n" +"\n" +"ਲੋਡ ਕਰਨਾ ਅਸਫਲ, ਕਿਰਪਾ ਕਰਕੇ %s/keybindings ਠੀਕ ਕਰੋ\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"ਸਵਿੱਚ ਬੰਧਨ ਸੰਰਚਨਾ ਫਾਇਲ ਨਿਕਾਰਾ ਹੈ, ਲੋਡ ਕਰਨਾ ਛੱਡਿਆ\n" +"ਕਿਰਪਾ ਕਰਕੇ %s/keybindings.conf ਠੀਕ ਕਰੋ\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "ਉਹ ਫਾਇਲ ਲਿਖੀ ਨਹੀਂ ਜਾ ਸਕੀ ਹੈ" + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "ਉਹ ਫਾਇਲ ਪੜ੍ਹੀ ਨਹੀਂ ਜਾ ਸਕੀ ਹੈ" + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "ਇਹ ਮਾਸਕ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ।" + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "ਪ੍ਰਾਈਵੇਟ" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "ਨੋਟਿਸ" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "ਸੱਦਾ" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "ਨਾ-ਅਣਡਿੱਠਾ" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "ਅਣਡਿੱਠਾ ਕਰਨ ਲਈ ਮਾਸਕ ਦਿਓ:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: ਅਣਡਿੱਠੀ ਲਿਸਟ" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "ਅਣਡਿੱਠੀ ਸਥਿਤੀ:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "ਚੈਨਲ:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "ਪ੍ਰਾਈਵੇਟ:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "ਸੂਚਨਾ:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "ਸੱਦਾ:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "ਸ਼ਾਮਲ..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "ਚੈਨਲ ਨਾਂ ਬਹੁਤ ਛੋਟਾ ਹੈ, ਫੇਰ ਟਰਾਈ ਕਰੋ ਜੀ।" + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: ਕੁਨੈਕਸ਼ਨ ਪੂਰਾ" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "%s ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਪੂਰਾ ਹੋਇਆ।" + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "ਤੁਸੀਂ ਅੱਗੇ ਕੀ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "ਕੁਝ ਨਹੀਂ, ਮੈਂ ਚੈਨਲ ਬਾਅਦ 'ਚ ਜੁਆਇੰਨ ਕਰਾਂਗਾ(_N)" + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "ਇਹ ਚੈਨਲ ਜੁਆਇੰਨ ਕਰੋ(_J):" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "ਚੈਨਲ-ਲਿਸਟ ਵਿੰਡੋ ਖੋਲ੍ਹੋ(_p)" + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "ਕੁਨੈਕਟ ਕਰਨ ਸਮੇਂ ਇਹ ਡਾਈਲਾਗ ਹਮੇਸ਼ਾ ਵੇਖਾਓ(_A)" + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "ਡਾਈਲਾਗ" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "%s ਲਈ ਵਿਸ਼ਾ ਹੈ: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "ਕੋਈ ਵਿਸ਼ਾ ਦਿੱਤਾ ਨਹੀਂ ਗਿਆ" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "ਇਹ ਸਰਵਰ ਨਾਲ ਪਹਿਲਾਂ ਹੀ %d ਚੈਨਲ ਜਾਂ ਡਾਈਲਾਗ ਜੁੜੇ ਹੋਏ ਹਨ। ਕੀ ਸਭ ਨੂੰ ਬੰਦ ਕਰਨਾ ਹੈ?" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "XChat ਬੰਦ ਕਰਨਾ?" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "ਅਗਲੀ ਵਾਰ ਨਾ ਪੁੱਛੋ।" + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "ਤੁਸੀਂ %i IRC ਨੈੱਟਵਰਕਾਂ ਨਾਲ ਕੁਨੈਕਟ ਹੋ।" + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "ਕੀ ਤੁਸੀਂ ਬੰਦ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "ਕੁਝ ਫਾਇਲ ਟਰਾਂਸਫਰ ਹਾਲੇ ਚਾਲੂ ਹਨ।" + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "ਟਰੇ ਵਿੱਚ ਭੇਜੋ(_M)" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "ਗੁਣ ਜਾਂ ਰੰਗ ਕੋਡ ਸ਼ਾਮਿਲ" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>ਗੂੜਾ</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>ਹੇਠਾਂ ਰੇਖਾ</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "ਸਧਾਰਨ" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "ਰੰਗ ੦-੭" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "ਰੰਗ ੮-੧੫" + +#: src/fe-gtk/maingui.c:1612 +msgid "_Settings" +msgstr "ਸੈਟਿੰਗ(_S)" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "ਡਿਸਕ ਉੱਤੇ ਲਾਗ(_L)" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "ਸਕਰੋਲ ਰੀ-ਲੋਡ ਕਰੋ(_R)" + +#: src/fe-gtk/maingui.c:1617 +msgid "_Hide Join/Part Messages" +msgstr "ਜੁਆਇੰਨ/ਛੱਡਣ ਸੁਨੇਹੇ ਓਹਲੇ(_H)" + +#: src/fe-gtk/maingui.c:1625 +msgid "_Extra Alerts" +msgstr "ਹੋਰ ਚੇਤਾਵਨੀਆਂ(_E)" + +#: src/fe-gtk/maingui.c:1627 +msgid "Beep on _Message" +msgstr "ਸੁਨੇਹੇ ਉੱਤੇ ਆਵਾਜ਼(_M)" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "ਟਰੇ ਆਈਕਾਨ ਝਪਕਾਓ(_I)" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "ਟਾਸਕ ਬਾਰ ਝਪਕਾਓ(_B)" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +msgid "_Detach" +msgstr "ਵੱਖ ਕਰੋ(_D)" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "ਬੰਦ ਕਰੋ(_C)" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "ਯੂਜ਼ਰ ਲਿਮਟ ਅੰਕ ਹੀ ਹੋ ਸਕਦਾ ਹੈ!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "ਵਿਸ਼ਾ ਸੁਰੱਖਿਆ" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "ਕੋਈ ਬਾਹਰੀ ਸੁਨੇਹਾ ਨਹੀਂ" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "ਗੁਪਤ" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "ਸਿਰਫ਼ ਸੱਦਾ" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "ਵਿਚੋਲਾ" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "ਪਾਬੰਦੀ ਲਿਸਟ" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "ਕੀ-ਵਰਡ" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "ਯੂਜ਼ਰ ਲਿਮਟ" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "ਯੂਜ਼ਰ ਲਿਸਟ ਵੇਖਾਓ/ਓਹਲੇ" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"ਪਾਰਦਰਸ਼ੀ ਬੈਕਗਰਾਊਂਡ ਬਣਾਉਣ ਲਈ ਅਸਫਲ!\n" +"\n" +"ਤੁਸੀਂ ਉਸ ਵਿੰਡੋ ਮੈਨੇਜਰ ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੇ ਹੋ,\n" +"ਜਿਸ ਲਈ ਹਾਲੇ ਸਹਿਯੋਗ ਸ਼ਾਮਿਲ ਨਹੀਂ ਹੈ।\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "ਨਵਾਂ ਨਾਂ ਦਿਓ:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "ਅਣਜਾਣ ਹੋਸਟ" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "ਅਸਲੀ ਨਾਂ:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "ਯੂਜ਼ਰ:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "ਦੇਸ਼:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "ਸਰਵਰ:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "%u ਮਿੰਟ ਪਹਿਲਾਂ" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "ਆਖਰੀ ਸੁਨੇਹਾ:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "ਦੂਰ ਸੁਨੇਹਾ:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "ਲਿੰਕ ਬਰਾਊਜ਼ਰ ਵਿੱਚ ਖੋਲ੍ਹੋ" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "ਚੁਣਿਆ ਲਿੰਕ ਕਾਪੀ ਕਰੋ" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "ਚੈਨਲ ਜੁਆਇੰਨ ਕਰੋ" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "ਚੈਨਲ ਛੱਡੋ" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "ਚੱਕਰੀ ਚੈਨਲ" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "ਪਸੰਦੀਦਾ ਵਿੱਚੋਂ ਹਟਾਓ(_R)" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "ਪਸੰਦ ਵਿੱਚ ਸ਼ਾਮਲ(_A)" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: ਯੂਜ਼ਰ ਮੇਨੂ" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "ਇਹ ਮੇਨੂ ਸੋਧ..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "ਚੈਨਲ ਲਿਸਟ ਲਵੋ..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: ਯੂਜ਼ਰ ਪ੍ਰਭਾਸ਼ਿਤ ਕਮਾਂਡ" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: ਯੂਜ਼ਰ-ਲਿਸਟ ਪੋਪਅੱਪ ਮੇਨੂ" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "ਇਸ ਨਾਲ ਤਬਦੀਲ" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: ਤਬਦੀਲ" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: URL ਹੈਂਡਲਰ" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: ਯੂਜ਼ਰ-ਲਿਸਟ ਬਟਨ" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: ਗੱਲਬਾਤ ਬਟਨ" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat:CTCP ਜਵਾਬ" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_X-ਚੈੱਟ" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "ਨੈੱਟਵਰਕ ਲਿਸਟ(_s)..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "ਨਵਾਂ(_N)" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "ਸਰਵਰ ਟੈਬ..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "ਚੈਨਲ ਟੈਬ..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "ਸਰਵਰ ਵਿੰਡੋ..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "ਚੈਨਲ ਵਿੰਡੋ..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "ਪਲੱਗਇਨ ਜਾਂ ਸਕ੍ਰਿਪਟ ਲੋਡ(_L)..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "ਬਾਹਰ(_Q)" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "ਵੇਖੋ(_V)" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "ਮੇਨੂ ਬਾਰ(_M)" + +#: src/fe-gtk/menu.c:1592 +msgid "_Topic Bar" +msgstr "ਵਿਸ਼ਾ ਬਾਰ(_T)" + +#: src/fe-gtk/menu.c:1593 +msgid "_User List" +msgstr "ਯੂਜ਼ਰ ਬਾਰ(_U)" + +#: src/fe-gtk/menu.c:1594 +msgid "U_serlist Buttons" +msgstr "ਯੂਜ਼ਰ ਲਿਸਟ ਬਟਨ(_s)..." + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "ਮੋਡ ਬਟਨ(_O)" + +#: src/fe-gtk/menu.c:1597 +msgid "_Channel Switcher" +msgstr "ਚੈਨਲ ਸਵਿੱਚਰ(_C)" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "ਟੈਬਾਂ(_T)" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "ਲੜੀ(_r)" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "ਨੈੱਟਵਰਕ ਮੀਟਰ(_N)" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "ਬੰਦ" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "ਗਰਾਫ਼" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "ਸਰਵਰ(_S)" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "ਕੁਨੈਕਸ਼ਨ ਬੰਦ(_D)" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "ਫੇਰ ਕੁਨੈਕਟ ਕਰੋ(_R)" + +#: src/fe-gtk/menu.c:1613 +msgid "Join a Channel..." +msgstr "ਚੈਨਲ ਜੁਆਇੰਨ ਕਰੋ..." + +#: src/fe-gtk/menu.c:1614 +msgid "List of Channels..." +msgstr "ਚੈਨਲਾਂ ਦੀ ਲਿਸਟ..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "ਦੂਰ ਗਿਆ ਵੇਖਾਓ" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "ਯੂਜ਼ਰ ਮੇਨੂ(_U)" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "ਸੈਟਿੰਗ(_e)" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "ਮੇਰੀ ਪਸੰਦ(_P)" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "ਤਕਨੀਕੀ" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "ਖੁਦ ਹੀ ਤਬਦੀਲ..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "CTCP ਜਵਾਬ..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "ਗੱਲਬਾਤ ਬਟਨ..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "ਕੀ-ਬੋਰਡ ਸ਼ਾਰਟਕੱਟ..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "ਟੈਕਸਟ ਘਟਨਾ..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "URL ਹੈਂਡਲਰ..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "ਯੂਜ਼ਰ ਕਮਾਂਡਾਂ..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "ਯੂਜ਼ਰ-ਲਿਸਟ ਬਟਨ..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "ਯੂਜ਼ਰ-ਲਿਸਟ ਪੋਪਅੱਪ..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "ਵਿੰਡੋ(_W)" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "ਪਾਬੰਦੀ ਲਿਸਟ..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "ਅੱਖਰ ਚਾਰਟ..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "ਸਿੱਧੀ ਗੱਲ਼..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "ਫਾਇਲ ਟਰਾਂਸਫਰ..." + +#: src/fe-gtk/menu.c:1641 +msgid "Friends List..." +msgstr "ਦੋਸਤ ਲਿਸਟ..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "ਅਣਡਿੱਠਾ ਲਿਸਟ..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "ਪਲੱਗਇਨ ਤੇ ਸਕ੍ਰਿਪਟਾਂ..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "ਕੱਚਾ ਲਾਗ..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "URL ਖੋਜੀ..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "ਮਾਰਕਰ ਲਾਈਨ ਮੁੜ-ਸੈੱਟ" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "ਟੈਕਸਟ ਸਾਫ਼(_l)" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "ਟੈਕਸਟ ਖੋਜ..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "ਟੈਕਸਟ ਸੰਭਾਲੋ..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "ਮੱਦਦ(_H)" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "ਸਮੱਗਰੀ(_C)" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "ਅੱਪਡੇਟ ਲਈ ਚੈੱਕ ਕਰੋ" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "ਇਸ ਬਾਰੇ(_A)" + +#: src/fe-gtk/menu.c:2147 +msgid "_Attach" +msgstr "ਅਟੈਚ ਕਰੋ(_A)" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "ਆਖਰੀ ਵਾਰ ਵੇਖਿਆ" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "ਆਫਲਾਇਨ" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "ਕਦੇ ਨਹੀਂ" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "%d ਮਿੰਟ ਪਹਿਲਾਂ" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "ਆਨਲਾਇਨ" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਨਾਂ ਦਿਓ:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "ਇਹ ਨੈੱਟਵਰਕਾਂ ਉੱਤੇ ਸੂਚਨਾ ਦਿਓ:" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:413 +msgid "XChat: Friends List" +msgstr "XChat: ਦੋਸਤ ਲਿਸਟ" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "ਡਾਈਲਾਗ ਖੋਲ੍ਹੋ" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "ਰੀ-ਸਟੋਰ ਕਰੋ(_R)" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "ਓਹਲੇ(_H)" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "ਝਪਕੋ(_B)" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "ਚੈਨਲ ਸੁਨੇਹਾ" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "ਪ੍ਰਾਈਵੇਟ ਸੁਨੇਹਾ" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "ਹਾਈਲਾਈਟ ਕੀਤਾ ਸੁਨੇਹਾ" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "ਹਾਲਤ ਬਦਲੋ(_C)" + +#: src/fe-gtk/plugin-tray.c:602 +msgid "_Away" +msgstr "ਦੂਰ(_A)" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "ਵਾਪਸ(_B)" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat: %s (%s): ਵਲੋਂ ਹਾਈਲਾਈਟ ਕੀਤਾ ਸੁਨੇਹਾ" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat: %u ਹਾਈਲਾਈਟ ਕੀਤੇ ਸੁਨੇਹਾ, ਆਖਰੀ ਵਲੋਂ: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat: %s (%s): ਵਲੋਂ ਨਵਾਂ ਪਬਲਿਕ ਸੁਨੇਹਾ" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat: %u ਨਵੇਂ ਪਬਲਿਕ ਸੁਨੇਹੇ" + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat: %s (%s): ਵਲੋਂ ਪ੍ਰਾਈਵੇਟ ਸੁਨੇਹੇ" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "XChat: %u ਪ੍ਰਾਈਵੇਟ ਸੁਨੇਹੇ: %s (%s) ਵਲੋਂ ਆਖਰੀ" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat: %s (%s) ਵਲੋਂ ਫਾਈਲ ਭੇਜੀ" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "ਵਰਜਨ" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "ਵੇਰਵਾ" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "ਲੋਡ ਕਰਨ ਲਈ ਪਲੱਗਇਨ ਤੇ ਸਕ੍ਰਿਪਟ ਚੁਣੋ" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: ਪਲੱਗਇਨ ਅਤੇ ਸਕ੍ਰਿਪਟਾਂ" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "ਲੋਡ(_L)..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "ਅਣ-ਲੋਡ(_U)" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "ਇੰਞ ਸੰਭਾਲੋ..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: ਕੱਚਾ-ਲਾਗ (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "ਕੱਚਾ-ਲਾਗ ਸਾਫ਼" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "ਇਸ ਖੋਜ ਲਈ ਤੁਹਾਡੇ ਰਾਹੀਂ ਖੋਲਿਆ ਵਿੰਡੋ ਹੁਣ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।" + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "" + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: ਖੋਜ" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "ਅੱਖਰ ਕੇਸ ਮਿਲਾਓ(_M)" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "ਪਿੱਛੇ ਖੋਜ(_b)" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "ਖੋਜ(_F)" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "ਨਵਾਂ ਨੈੱਟਵਰਕ" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "ਕੀ ਅਸਲ ਵਿੱਚ \"%s\" ਨੈਟਵਰਕ ਅਤੇ ਇਸ ਦੇ ਸਰਵਰ ਹਟਾਉਣੇ ਹਨ?" + +#: src/fe-gtk/servlistgui.c:740 +msgid "#channel" +msgstr "#channel" + +#: src/fe-gtk/servlistgui.c:850 +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: ਪਸੰਦੀਦਾ ਚੈਨਲ (ਆਟੋ-ਜੁਆਇੰਨ ਲਿਸਟ)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "ਇਹ ਚੈਨਲ ਜੁਆਇੰਨ ਕੀਤੇ ਜਾਣਗੇ, ਜਦੋਂ ਵੀ ਤੁਸੀਂ %s ਨਾਲ ਕੁਨੈਕਟ ਕਰੋਗੇ।" + +#: src/fe-gtk/servlistgui.c:906 +msgid "Key (Password)" +msgstr "ਕੁੰਜੀ (ਪਾਸਵਰਡ)" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "ਸੋਧ(_E)" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "%s ਹਟਾਇਆ ਗਿਆ।" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "%s ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ।" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "ਯੂਜ਼ਰ ਨਾਂ ਅਤੇ ਅਸਲੀ ਨਾਂ ਖਾਲੀ ਨਹੀ ਛੱਡਿਆ ਨਹੀ ਜਾ ਸਕਦਾ ਹੈ।" + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: %s ਸੋਧ" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "%s ਲਈ ਸਰਵਰ" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "ਚੁਣੇ ਸਰਵਰਾਂ ਨਾਲ ਹੀ ਜੁੜੋ" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "ਕੁਨੈਕਸ਼ਨ ਅਸਫਲ ਹੋਣ ਤੇ ਸਰਵਰਾਂ ਵਿੱਚ ਚੱਕਰ ਨਾ ਲਗਾਉ।" + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "ਤੁਹਾਡਾ ਵੇਰਵਾ" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "ਗਲੋਬਲ ਯੂਜ਼ਰ ਜਾਣਕਾਰੀ ਵਰਤੋਂ" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "ਨਾਂ(_N):" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "ਦੂਜੀ ਚੋਣ:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "ਯੂਜ਼ਰ ਨਾਂ(_U):" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "ਅਸਲੀ ਨਾਂ(_l):" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "ਕੁਨੈਕਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "ਸ਼ੁਰੂ ਵੇਲੇ ਇਸ ਨੈਟਵਰਕ ਨਾਲ ਆਟੋਮੈਟਿਕ ਹੀ ਕੁਨੈਕਟ ਕਰੋ" + +#: src/fe-gtk/servlistgui.c:1462 +msgid "Bypass proxy server" +msgstr "ਪਰਾਕਸੀ ਸਰਵਰ ਬਾਏਪਾਸ ਕਰੋ" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "ਇਸ ਨੈਟਵਰਕ ਤੇ ਸਭ ਸਰਵਰਾਂ ਲਈ SSL ਵਰਤੋਂ" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "ਗਲਤ SSL ਸਰਟੀਫਿਕੇਟ ਮਨਜ਼ੂਰ" + +#: src/fe-gtk/servlistgui.c:1475 +msgid "_Favorite channels:" +msgstr "ਪਸੰਦੀਦਾ ਚੈਨਲ(_F):" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "ਜੁਆਇੰਨ ਕਰਨ ਲਈ ਚੈਨਲ, ਕਾਮਿਆਂ ਨਾਲ ਵੱਖ ਹੋ ਸਕਦੇ ਹਨ, ਪਰ ਖਾਲੀ ਥਾਂ ਨਹੀਂ!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "ਕੁਨੈਕਟ ਕਮਾਂਡ:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Nickserv ਪਾਸਵਰਡ:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "ਸਰਵਰ ਪਾਸਵਰਡ:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "ਸਰਵਰ ਲਈ ਪਾਸਵਰਡ, ਜੇਕਰ ਸ਼ੱਕ ਹੋਵੇ ਤਾਂ ਖਾਲੀ ਰਹਿਣ ਦਿਓ।" + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "ਕਰੈਕਟਰ ਸੈੱਟ:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: ਨੈੱਟਵਰਕ ਲਿਸਟ" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "ਯੂਜ਼ਰ ਜਾਣਕਾਰੀ" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "ਤੀਜੀ ਚੋਣ:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "ਨੈੱਟਵਰਕ" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "ਸ਼ੁਰੂ ਵੇਲੇ ਨੈੱਟਵਰਕ ਲਿਸਟ ਨਾ ਵੇਖਾਓ" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "ਸੋਧ(_E)..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "ਲੜੀਬੱਧ(_S)" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "ਕੁਨੈਕਟ ਕਰੋ(_C)" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "ਟੈਕਸਟ ਬਕਸਾ ਦਿੱਖ" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "ਫੋਂਟ:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "ਬੈਕਗਰਾਊਂਡ ਚਿੱਤਰ:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "ਸਕਰੋਲਬੈਕ ਲਾਈਨਾਂ:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "ਰੰਗਦਾਰ ਨਾਂ" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "IRC ਤੇ ਹਰ ਵਿਅਕਤੀ ਨੂੰ ਵੱਖਰਾ ਰੰਗ ਦਿਓ" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "ਨਾਂਵਾਂ ਨੂੰ ਸੱਜੇ ਪਾਸੇ ਰੱਖੋ" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "ਪਾਰਦਰਸ਼ੀ ਬੈਕਗਰਾਊਂਡ" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "ਮਾਰਕਰ ਲਾਈਨ ਵੇਖੋ" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "ਆਖਰੀ ਪੜ੍ਹੇ ਪਾਠ ਬਾਅਦ ਲਾਲ ਰੰਗ ਦੀ ਰੇਖਾ ਖਿੱਚੋ।" + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "ਪਾਰਦਰਸ਼ਤਾ ਸੈਟਿੰਗ" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "ਲਾਲ:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "ਹਰਾ:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "ਨੀਲਾ:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "ਸਮਾਂ ਮੋਹਰ" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "ਸਮਾਂ ਮੋਹਰ ਯੋਗ" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "ਸਮਾਂ ਮੋਹਰ ਫਾਰਮੈਟ:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "ਵੇਰਵੇ ਲਈ strftime manpage ਵੇਖੋ" + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "ਇੰਪੁੱਟ ਬਕਸਾ" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "ਟੈਕਸਟ ਬਕਸਾ ਫੋਂਟ ਤੇ ਰੰਗ ਵਰਤੋਂ" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "ਸਪੈਲ ਚੈਕਿੰਗ" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "ਨਾਂ ਪੂਰਤੀ" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "ਆਟੋਮੈਟਿਕ ਨਾਂ ਪੂਰਨ (ਬਿਨਾਂ ਟੈਬ ਸਵਿੱਚ)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "ਨਾਂ ਪੂਰਤੀ ਅਗੇਤਰ:" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "ਨਾਂ ਪੂਰਨ ਲੜੀਬੱਧ:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "ਇੰਪੁੱਟ ਬਕਸਾ ਕੋਡ" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, ਓਪਰੇਟਰ ਪਹਿਲਾਂ" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, ਓਪਰੇਟਰ ਅੰਤ ਵਿੱਚ" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "ਨਾ-ਕ੍ਰਮਬੱਧ" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "ਖੱਬਾ (ਉੱਤੇ)" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "ਖੱਬਾ (ਥੱਲੇ)" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "ਸੱਜਾ (ਉੱਤੇ)" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "ਸੱਜਾ (ਥੱਲੇ)" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "ਉੱਤੇ" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "ਹੇਠਾਂ" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "ਓਹਲੇ" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "ਯੂਜ਼ਰ ਲਿਸਟ" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "ਯੂਜ਼ਰ ਲਿਸਟ ਵਿੱਚ ਹੋਸਟ ਨਾਂ" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "ਯੂਜ਼ਰ ਲਿਸਟ ਕ੍ਰਮਬੱਧ:" + +#: src/fe-gtk/setup.c:205 +msgid "Show user list at:" +msgstr "ਯੂਜ਼ਰ ਲਿਸਟ ਵੇਖੋ:" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "ਹਮੇਸ਼ਾ ਪੜਤਾਲ" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "ਇਸ ਤੋਂ ਛੋਟੇ ਚੈਨਲ ਲਈ:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "ਦੋ ਵਾਰ ਦਬਾਉਣ ਤੇ ਕਾਰਵਾਈ" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "ਵਿੰਡੋ" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "ਟੈਬਾਂ" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "ਹਮੇਸ਼ਾ" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "ਸਿਰਫ਼ ਮੰਗੀਆਂ ਟੈਬਾਂ" + +#: src/fe-gtk/setup.c:242 +msgid "Tree" +msgstr "ਲੜੀ" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "ਸਵਿੱਚਰ ਟਾਈਪ:" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "ਸਰਵਰ ਸੁਨੇਹਿਆਂ ਲਈ ਵੱਖਰੀ ਟੈਬ ਖੋਲ੍ਹੋ" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "ਸਰਵਰ ਸੂਚਨਾ ਲਈ ਵੱਖਰੀ ਟੈਬ ਖੋਲ੍ਹੋ" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "ਜਦੋਂ ਪ੍ਰਾਈਵੇਟ ਸੁਨੇਹਾ ਆਵੇ ਤਾਂ ਨਵੀਂ ਟੈਬ ਵਿੱਚ ਖੋਲ੍ਹੋ" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "ਟੈਬਾਂ ਨੂੰ ਅੱਖਰ-ਕ੍ਰਮ ਅਨੁਸਾਰ ਰੱਖੋ " + +#: src/fe-gtk/setup.c:254 +msgid "Smaller text" +msgstr "ਛੋਟਾ ਟੈਕਸਟ" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "ਨਵੀਂ ਟੈਬਾਂ ਲਈ ਫੋਕਸ:" + +#: src/fe-gtk/setup.c:258 +msgid "Show channel switcher at:" +msgstr "ਚੈਨਲ ਸਵਿੱਚਰ ਵੇਖੋ:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "ਛੋਟਾ ਟੈਬ ਨਾਂ:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "ਅੱਖਰ" + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "ਟੈਬਾਂ ਜਾਂ ਵਿੰਡੋਜ਼" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "ਚੈਨਲ ਖੋਲ੍ਹੋ:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "ਡਾਈਲਾਗ ਵਿੱਚ ਖੋਲ੍ਹੋ:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "ਸਹੂਲਤਾਂ ਨੂੰ ਖੋਲ੍ਹੋ:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "ਨਹੀਂ" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "ਹਾਂ" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "ਫਾਇਲਾਂ ਅਤੇ ਡਾਇਰੈਕਟਰੀਆਂ" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "ਫਾਇਲਾਂ ਡਾਊਨਲੋਡ ਕਰੋ:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "ਮੁਕੰਮਲ ਫਾਇਲਾਂ ਨੂੰ ਭੇਜੋ:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "ਫਾਇਲ ਨਾਂ ਵਿੱਚ ਨਾਂ ਸੰਭਾਲੋ" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "ਨੈਟਵਰਕ ਸੈਟਿੰਗ" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "IRC ਸਰਵਰ ਤੋਂ ਮੇਰਾ ਐਡਰੈੱਸ ਪ੍ਰਾਪਤ ਕਰੋ" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "DCC IP ਐਡਰੈੱਸ:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "" + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "ਪਹਿਲੀਂ DCC ਭੇਜਣ ਪੋਰਟ:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "ਆਖਰੀ DCC ਭੇਜਣ ਪੋਰਟ:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "" + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "ਵੱਧ ਤੋਂ ਵੱਧ ਫਾਇਲ ਸੰਚਾਰ ਗਤੀ (ਬਾਈਟ ਪ੍ਰਤੀ ਸਕਿੰਟ)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "ਇੱਕ ਅੱਪਲੋਡ:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "ਇੱਕ ਸੰਚਾਰ ਲਈ ਵੱਧੋ-ਵੱਧ ਗਤੀ" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "ਇੱਕ ਡਾਊਨਲੋਡ:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "ਸਭ ਅੱਪਲੋਡ ਜੋੜ:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "ਸਭ ਫਾਇਲਾਂ ਲਈ ਵੱਧੋ-ਵੱਧ ਗਤੀ" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "ਸਭ ਡਾਊਨਲੋਡ ਜੋੜ:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "ਚੇਤਾਵਨੀ" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "ਟਰੇ ਬੁਲਬਲੇ ਵੇਖੋ:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "ਟਰੇ ਆਈਕਾਨ ਝਪਕਾਓ:" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "ਟਾਸਕ ਬਾਰ ਝਪਕਾਓ:" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "ਬੀਪ ਸਾਊਂਡ ਦਿਓ:" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "ਸਿਸਟਮ ਟਰੇ ਆਈਕਾਨ ਚਾਲੂ" + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "ਹਾਈਲਾਈਟ ਕੀਤੇ ਸੁਨੇਹੇ" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "ਹਾਈਲਾਈਟ ਕਰਨ ਲਈ ਹੋਰ ਸ਼ਬਦ:" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "ਨਾ ਹਾਈਲਾਈਟ ਕਰਨ ਵਾਲੇ ਨਾਂ:" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "ਹਮੇਸ਼ਾ ਹਾਈਲਾਈਟ ਕਰਨ ਵਾਲੇ ਨਾਂ:" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "(ਕਈ ਸ਼ਬਦ, ਜਿੰਨਾਂ ਨੂੰ ਕਾਮਿਆਂ ਨਾਲ ਵੱਖ ਕੀਤਾ ਗਿਆ ਹੋਵੇ)।" + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "ਡਿਫਾਲਟ ਸੁਨੇਹੇ" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "ਬਾਹਰ:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "ਚੈਨਲ ਛੱਡਣਾ:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "ਦੂਰ:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "ਦੂਰ" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "ਦੂਰ ਸੁਨੇਹਾ ਭੇਜੋ" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "ਆਪਣਾ ਦੂਰ ਸੁਨੇਹਾ ਸਭ ਚੈਨਲਾਂ ਤੇ ਭੇਜੋ" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "ਦੂਰ ਇੱਕ ਵਾਰ ਹੀ ਵੇਖਾਓ" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "ਇੱਕੋ ਜਿਹੇ ਦੂਰ ਸੁਨੇਹੇ ਨੂੰ ਇੱਕ ਵਾਰ ਹੀ ਵੇਖਾਓ" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "ਖੁਦ ਹੀ ਦੂਰ ਨੂੰ ਨਾ-ਮਾਸਕ ਕਰੋ" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "ਤਕਨੀਕੀ ਸੈਟਿੰਗ" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "ਅੰਤਰਾਲ ਬਾਅਦ ਮੁੜ-ਕੁਨੈਕਟ:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "MODE ਨੂੰ ਕੱਚੇ ਰੂਪ ਵਿੱਚ ਵੇਖਾਓ" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "ਦਾਖਲਾ ਤੇ ਛੱਡਣਾ ਸੁਨੇਹੇ ਓਹਲੇ" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "ਮੂਲ ਰੂਪ ਵਿੱਚ ਚੈਨਲ ਦਾਖਲਾ/ਛੱਡਣਾ ਸੁਨੇਹੇ ਓਹਲੇ" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "ਖੁਦ ਹੀ DCC ਵਿੰਡੋਜ਼ ਖੋਲ੍ਹੋ" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "ਭੇਜਣ ਵਿੰਡੋ" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "ਪ੍ਰਾਪਤੀ ਵਿੰਡੋ" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "ਗੱਲਬਾਤ ਵਿੰਡੋ" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "ਲਾਗ ਰੱਖਣਾ" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "ਪਿਛਲੇ ਸ਼ੈਸ਼ਨ ਤੋਂ ਸਕਰੋਲਬੈਕ ਵੇਖਾਓ" + +#: src/fe-gtk/setup.c:387 +msgid "Enable logging of conversations to disk" +msgstr "ਗੱਲਾਂਬਾਤਾਂ ਲਈ ਡਿਸਕ ਉੱਤੇ ਲਾਗ ਰੱਖਣਾ ਚਾਲੂ" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "ਲਾਗ ਫਾਇਲ ਨਾਂ:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Server %c=Channel %n=Network" + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "ਲਾਗ ਵਿੱਚ ਸਮਾਂ ਮੋਹਰ ਸ਼ਾਮਿਲ ਕਰੋ" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "ਲਾਗ ਸਮਾਂ ਮੋਹਰ ਫਾਰਮੈਟ:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(ਆਯੋਗ)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "ਸਭ ਕੁਨੈਕਸ਼ਨ" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "ਕੇਵਲ IRC ਸਰਵਰ" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "ਕੇਵਲ DCC ਲਵੋ" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "ਤੁਹਾਡਾ ਐਡਰੈਸ" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "ਸਬੰਧਿਤ:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "ਕਈ ਐਡਰੈਸਾਂ ਵਾਲਿਆਂ ਲਈ ਹੀ ਫਾਇਦੇਮੰਦ।" + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "ਸਰਵਰ ਸਰਵਰ" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "ਹੋਸਟ ਨਾਂ:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "ਪੋਰਟ:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "ਕਿਸਮ:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "" + +#: src/fe-gtk/setup.c:434 +#, fuzzy +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "ਪਰਾਕਸੀ ਸਰਵਰ ਨਾਲ ਪ੍ਰਮਾਣਿਤ (HTTP ਅਤੇ Socks5)" + +#: src/fe-gtk/setup.c:436 +#, fuzzy +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "ਪਰਾਕਸੀ ਸਰਵਰ ਨਾਲ ਪ੍ਰਮਾਣਿਤ (HTTP ਅਤੇ Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "ਯੂਜ਼ਰ ਨਾਂ:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "ਪਾਸਵਰਡ:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "ਇੱਕ ਤਸਵੀਰ ਫਾਇਲ ਚੁਣੋ" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "ਡਾਊਨਲੋਡ ਫੋਲਡਰ ਚੁਣੋ" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "ਫੋਂਟ ਚੁਣੋ" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "ਝਲਕ..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "ਡਾਟਾ ਫੋਲਡਰ ਖੋਲ੍ਹੋ" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "ਚੋਣ ਰੰਗ" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "ਪਾਠ ਰੰਗ" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "mIRC ਰੰਗ:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "ਲੋਕਲ ਰੰਗ:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "ਫਾਰਗਰਾਊਂਡ:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "ਬੈਕਗਰਾਊਂਡ:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "ਨਿਸ਼ਾਨ ਪਾਠ" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "ਇੰਟਰਫੇਸ ਰੰਗ" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "ਨਵਾਂ ਡਾਟਾ:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "ਮਾਰਕਰ ਲਾਈਨ:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "ਨਵਾਂ ਸੁਨੇਹਾ:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "ਦੂਰ ਯੂਜ਼ਰ:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "ਹਾਈਲਾਈਟ:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "ਈਵੈਂਟ" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "ਸਾਊਂਡ ਫਾਇਲ" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "ਸਾਊਂਡ ਫਾਇਲ ਚੁਣੋ" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "ਸਾਊਂਡ ਚਲਾਉਣ ਢੰਗ:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "ਬਾਹਰੀ ਸਾਊਂਡ ਵਾਲਾ ਪਰੋਗਰਾਮ(_p):" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "ਬਾਹਰੀ ਐਪਲੀਕੇਸ਼ਨ(_E)" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "ਆਟੋਮੈਟਿਕ(_A)" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "ਸਾਊਂਡ ਫਾਇਲ ਡਾਇਰੈਕਟਰੀ(_d):" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "ਸਾਊਂਡ ਫਾਇਲ:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "ਝਲਕ(_B)..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "ਚਲਾਓ(_P)" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "ਇੰਟਰਫੇਸ" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "ਟੈਕਸਟ ਬਾਕਸ" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "ਯੂਜ਼ਰ ਲਿਸਟ" + +#: src/fe-gtk/setup.c:1703 +msgid "Channel switcher" +msgstr "ਚੈਨਲ ਸਵਿੱਚਰ" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "ਰੰਗ" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "ਗੱਲਬਾਤ ਜਾਰੀ ਹੈ" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "ਸਧਾਰਨ" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "ਸਾਊਂਡ" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "ਨੈੱਟਵਰਕ ਸੈੱਟਅੱਪ" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "ਫਾਇਲ ਟਰਾਂਸਫਰ" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "ਕੈਟਾਗਰੀਆਂ" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "ਕੁਝ ਅਜਿਹੀਆਂ ਤਬਦੀਲੀਆਂ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ, ਜੋ ਕਿ ਮੁੜ ਚਾਲੂ ਕਰਨ ਉਪਰੰਤ ਹੀ ਲਾਗੂ ਹੋ ਸਕਣਗੀਆਂ।" + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: ਮੇਰੀ ਪਸੰਦ" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "ਸਤਰ ਪਾਰਸ ਕਰਨ ਦੌਰਾਨ ਗਲਤੀ" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "ਇਹ ਸੰਕੇਤ ਨੂੰ ਕੇਵਲ %d ਮੁੱਲ ਦਿੱਤੇ ਜਾ ਸਕਦੇ ਹਨ, $%d ਗਲਤ ਹੈ" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "ਟੈਕਸਟ ਫਾਇਲ ਛਾਪੋ" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "ਘਟਨਾ ਸੋਧ" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ ਅੰਕ" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "ਇਥੋਂ ਲੋਡ..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "ਸਭ ਦੀ ਜਾਂਚ" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: URL ਖੋਜੀ" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "ਲਿਸਟ ਸਾਫ਼" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "ਚੁਣੇ URL ਦੀ ਕਾਪੀ ਕਰੋ" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "ਕਾਪੀ ਕਰੋ" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "ਲਿਸਟ ਫਾਇਲ `ਚ ਸੰਭਾਲੋ" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d ops, %d ਕੁੱਲ" + +#~ msgid "%C18*$t$1%O $2" +#~ msgstr "%C18*$t$1%O $2" + +#~ msgid "%C21*%O$t%C21%B$1%O%C21 $2" +#~ msgstr "%C21*%O$t%C21%B$1%O%C21 $2" + +#~ msgid "%C18%B%B$4$1%O%C18%O$t$2" +#~ msgstr "%C18%B%B$4$1%O%C18%O$t$2" + +#~ msgid "$4%C21%B$1%O%C21$t$2" +#~ msgstr "$4%C21%B$1%O%C21$t$2" + +#~ msgid "%C28-%C29$1/$2%C28-%O$t$3" +#~ msgstr "%C28-%C29$1/$2%C28-%O$t$3" + +#~ msgid "$1$t$2" +#~ msgstr "$1$t$2" + +#~ msgid "%C19>%O$1%C19<%O$t$2" +#~ msgstr "%C19>%O$1%C19<%O$t$2" + +#~ msgid "%C16*%O$t$1%O" +#~ msgstr "%C16*%O$t$1%O" + +#~ msgid "%C28-%C29$1%C28-%O$t$2" +#~ msgstr "%C28-%C29$1%C28-%O$t$2" + +#~ msgid "%C28*%C29$3$1%C28*$t%O$2" +#~ msgstr "%C28*%C29$3$1%C28*$t%O$2" + +#~ msgid "%C18%B%B$3$1%O$t$2" +#~ msgstr "%C18%B%B$3$1%O$t$2" + +#~ msgid "%C22*%O$t$1" +#~ msgstr "%C22*%O$t$1" + +#~ msgid "%C31%B%B$4$1%O%C30$t$2" +#~ msgstr "%C31%B%B$4$1%O%C30$t$2" + +#~ msgid "PID" +#~ msgstr "PID" + +#~ msgid "France, Metropolitan" +#~ msgstr "ਫਰਾਂਸ" + +#~ msgid "Neutral Zone" +#~ msgstr "ਨਿਰਪੱਖ ਜ਼ੋਨ" + +#~ msgid "US Minor Outlying Islands" +#~ msgstr "ਅਮਰੀਕੀ ਛੋਟੇ ਬਾਹਰੀ ਟਾਪੂ" + +#~ msgid "Direct client-to-client" +#~ msgstr "ਸਿੱਧਾ ਕਲਾਂਇਟ ਤੋਂ ਕਲਾਂਇਟ" + +#~ msgid "Send File" +#~ msgstr "ਫਾਇਲ ਭੇਜੋ" + +#~ msgid "Offer Chat" +#~ msgstr "ਗੱਲਬਾਤ ਸੱਦਾ" + +#~ msgid "Abort Chat" +#~ msgstr "ਗੱਲਬਾਤ ਅਧੂਰੀ ਛੱਡੋ" + +#~ msgid "Userinfo" +#~ msgstr "ਉਪਭੋਗੀ ਜਾਣਕਾਰੀ" + +#~ msgid "Clientinfo" +#~ msgstr "ਕਲਾਂਇਟ ਜਾਣਕਾਰੀ" + +#~ msgid "Time" +#~ msgstr "ਸਮਾਂ" + +#~ msgid "Finger" +#~ msgstr "ਫਿੰਗਰ" + +#~ msgid "Oper" +#~ msgstr "ਮੁੱਖੀ" + +#~ msgid "Kill this user" +#~ msgstr "ਇਹ ਉਪਭੋਗੀ ਖਤਮ" + +#~ msgid "Mode" +#~ msgstr "ਮੋਡ" + +#~ msgid "Give Half-Ops" +#~ msgstr "ਅੱਧਾ-ਮੁੱਖੀ ਦਿਓ" + +#~ msgid "Take Half-Ops" +#~ msgstr "ਅੱਧਾ-ਮੁੱਖੀ ਖੋਹੋ" + +#~ msgid "Ignore" +#~ msgstr "ਅਣਡਿੱਠਾ" + +#~ msgid "Ignore User" +#~ msgstr "ਉਪਭੋਗੀ ਅਣਡਿੱਠਾ" + +#~ msgid "UnIgnore User" +#~ msgstr "ਨਾ-ਅਣਡਿੱਠਾ ਉਪਭੋਗੀ" + +#~ msgid "Info" +#~ msgstr "ਜਾਣਕਾਰੀ" + +#~ msgid "Who" +#~ msgstr "ਕੌਣ" + +#~ msgid "DNS Lookup" +#~ msgstr "DNS ਖੋਜ" + +#~ msgid "Trace" +#~ msgstr "ਜਾਂਚ" + +#~ msgid "UserHost" +#~ msgstr "ਉਪਭੋਗੀ ਮੇਜ਼ਬਾਨ" + +#~ msgid "External" +#~ msgstr "ਬਾਹਰੀ" + +#~ msgid "Traceroute" +#~ msgstr "ਮਾਰਗ ਜਾਂਚ" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "Unban" +#~ msgstr "ਪਾਬੰਦੀ ਹਟਾਓ" + +#~ msgid "I can't save an empty list!" +#~ msgstr "ਖਾਲੀ ਸੂਚੀ ਸੰਭਾਲੀ ਨਹੀਂ ਜਾ ਸਕਦੀ ਹੈ!" + +#~ msgid "List display options:" +#~ msgstr "ਸੂਚੀ ਦਿੱਖ ਚੋਣ:" + +#~ msgid "Minimum Users:" +#~ msgstr "ਘੱਟੋ-ਘੱਟ ਉਪਭੋਗੀ:" + +#~ msgid "Maximum Users:" +#~ msgstr "ਵੱਧੋ-ਵੱਧ ਉਪਭੋਗੀ:" + +#~ msgid "Regex Match:" +#~ msgstr "ਨਿਯਮਤ ਮੇਲ:" + +#~ msgid "Apply Match to:" +#~ msgstr "ਮੇਲ ਲਾਗੂ ਕਰੋ:" + +#~ msgid "Apply" +#~ msgstr "ਲਾਗੂ" + +#~ msgid "Refresh the list" +#~ msgstr "ਸੂਚੀ ਤਾਜ਼ਾ" + +#~ msgid "Save the list" +#~ msgstr "ਸੂਚੀ ਸੰਭਾਲੋ" + +#~ msgid "From:" +#~ msgstr "ਵੱਲੋਂ:" + +#~ msgid "To:" +#~ msgstr "ਵੱਲ:" + +#~ msgid "Size:" +#~ msgstr "ਅਕਾਰ:" + +#~ msgid "Started:" +#~ msgstr "ਸ਼ੁਰੂ:" + +#~ msgid "Speed limit:" +#~ msgstr "ਗਤੀ ਸੀਮਾ:" + +#~ msgid "MIME Type" +#~ msgstr "MIME ਕਿਸਮ" + +#~ msgid "XChat: File Receive List" +#~ msgstr "XChat: ਫਾਇਲ ਪ੍ਰਾਪਤੀ ਸੂਚੀ" + +#~ msgid "Open" +#~ msgstr "ਖੋਲੋ" + +#~ msgid "Ack" +#~ msgstr "Ack" + +#~ msgid "To" +#~ msgstr "ਵੱਲ" + +#~ msgid "To/From" +#~ msgstr "ਵੱਲ/ਵੱਲੋਂ" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "ਕੋਈ ਹੋਰ ਟੈਬ ਨਹੀਂ ਖੁੱਲੀ, xchat ਬੰਦ ਕਰਨਾ ਏਂ?" + +#~ msgid "Show join/part messages" +#~ msgstr "ਦਾਖਲ/ਬਾਹਰ ਸੁਨੇਹੇ ਵੇਖਾਓ" + +#~ msgid "Color paste" +#~ msgstr "ਰੰਗ ਚੇਪੋ" + +#~ msgid "Go to" +#~ msgstr "ਜਾਓ" + +#~ msgid "_Close Tab" +#~ msgstr "ਟੈਬ ਬੰਦ(_C)" + +#~ msgid "Settings saved." +#~ msgstr "ਵਿਵਸਥਾ ਸੰਭਾਲੀ ਗਈ" + +#~ msgid "_Layout" +#~ msgstr "ਖਾਕਾ(_L)" + +#~ msgid "Notify List..." +#~ msgstr "ਸੂਚਨਾ ਸੂਚੀ..." + +#~ msgid "_Close Window" +#~ msgstr "ਝਰੋਖਾ ਬੰਦ(_C)" + +#~ msgid "User" +#~ msgstr "ਉਪਭੋਗੀ" + +#~ msgid "Server" +#~ msgstr "ਸਰਵਰ" + +#~ msgid "Save rawlog" +#~ msgstr "ਕੱਚਾ-ਲਾਗ ਸੰਭਾਲੋ" + +#~ msgid "Save rawlog..." +#~ msgstr "ਕੱਚਾ-ਲਾਗ ਸੰਭਾਲੋ..." + +#~ msgid "Close" +#~ msgstr "ਬੰਦ ਕਰੋ" + +#~ msgid "C_hannels to join:" +#~ msgstr "ਜੁੜਨ ਲਈ ਚੈਨਲ(_h):" + +#~ msgid "XChat: Server List" +#~ msgstr "XChat: ਸਰਵਰ ਸੂਚੀ" + +#~ msgid "Completes nick names without using the TAB key" +#~ msgstr "ਟੈਬ ( TAB) ਸਵਿੱਚ ਦੀ ਵਰਤੋਂ ਕੀਤੇ ਬਿਨਾਂ ਨਾਂ ਮੁਕੰਮਲ ਕਰੋ" + +#~ msgid "Input Box Appearance" +#~ msgstr "ਇੰਪੁੱਟ ਬਕਸਾ ਦਿੱਖ" + +#~ msgid "Resizable user list" +#~ msgstr "ਮੁੜ ਅਕਾਰਯੋਗ ਉਪਭੋਗੀ ਸੂਚੀ" + +#~ msgid "Left" +#~ msgstr "ਖੱਬਾ" + +#~ msgid "Right" +#~ msgstr "ਸੱਜਾ" + +#~ msgid "Tabs Location" +#~ msgstr "ਟੈਬ ਸਥਿਤੀ" + +#~ msgid "Convert spaces to underscore before sending" +#~ msgstr "ਭੇਜਣ ਤੋਂ ਪਹਿਲਾਂ ਖਾਲੀ ਥਾਂ ਨੂੰ ਅੰਡਰਸਕੋਰ ਵਿੱਚ ਬਦਲੋ" + +#~ msgid "(Can be a text file relative to ~/.xchat2/)." +#~ msgstr "(~/.xchat2/ ਦੇ ਅਨੁਸਾਰ ਇੱਕ ਪਾਠ ਫਾਇਲ ਹੋ ਸਕਦੀ ਹੈ)।" + +#~ msgid "(Can be a text file relative to config dir)." +#~ msgstr "(ਇੱਕ ਸੰਰਚਿਤ ਡਾਇਰੈਕਟਰੀ ਦੇ ਅਨੁਸਾਰ ਇੱਕ ਪਾਠ ਫਾਇਲ ਹੋ ਸਕਦੀ ਹੈ)।" + +#~ msgid "Flash taskbar on highlighted messages" +#~ msgstr "ਉਘੜੇ ਸੁਨੇਹੇ ਤੇ ਕੰਮ-ਪੱਟੀ ਨੂੰ ਝਲਕਾਓ" + +#~ msgid "Beep on channel messages" +#~ msgstr "ਚੈਨਲ ਸੁਨੇਹੇ ਤੇ ਆਵਾਜ਼" + +#~ msgid "(See strftime manpage for details)." +#~ msgstr "(ਵੇਰਵੇ ਲਈ strftime ਲਈ ਸਫਾ ਵੇਖੋ)" + +#~ msgid "Open an irc:// url" +#~ msgstr "ਇੱਕ irc:// url ਖੋਲੋ" + +#~ msgid "irc://server:port/channel" +#~ msgstr "irc://server:port/channel" + +#~ msgid "Execute a xchat command" +#~ msgstr "ਇੱਕ xchat ਕਮਾਂਡ ਚਲਾਓ" + +#~ msgid "\"Command to execute\"" +#~ msgstr "\"ਚਲਾਉਣ ਲਈ ਕਮਾਂਡ\"" + +#~ msgid "Prints some text to the current tab/window" +#~ msgstr "ਮੌਜੂਦਾ ਟੈਬ/ਝਰੋਖੇ ਵਿੱਚ ਕੁਝ ਪਾਠ ਛਾਪੋ" + +#~ msgid "\"Text to print\"" +#~ msgstr "\"ਛਾਪਣ ਲਈ ਪਾਠ\"" + +#~ msgid "Change the context to the channel" +#~ msgstr "ਚੈਨਲ ਤੋਂ ਪਰਸੰਗ ਲਵੋ" + +#~ msgid "Change the context to the server" +#~ msgstr "ਸਰਵਰ ਤੋਂ ਪਰਸੰਗ ਤਬਦੀਲ" + +#~ msgid "server" +#~ msgstr "ਸਰਵਰ" + +#~ msgid "Get some informations from xchat" +#~ msgstr "xchat ਤੋਂ ਕੁਝ ਜਾਣਕਾਰੀ ਲਵੋ" + +#~ msgid "id" +#~ msgstr "id" + +#~ msgid "Get settings from xchat" +#~ msgstr "xchat ਤੋਂ ਸਥਾਪਨ ਲਵੋ" + +#~ msgid "name" +#~ msgstr "ਨਾਂ" + +#~ msgid "Failed to complete SetContext" +#~ msgstr "ਪਰਸੰਗ ਪੂਰਾ ਕਰਨ ਲਈ ਅਸਫ਼ਲ ਹੈ" + +#~ msgid "Failed to complete print" +#~ msgstr "ਛਾਪਣ ਲਈ ਅਸਫ਼ਲ ਹੈ" + +#~ msgid "Failed to complete GetInfo" +#~ msgstr "ਜਾਣਕਾਰੀ ਲੈਣ ਲਈ ਅਸਫ਼ਲ ਹੈ" + +#~ msgid "Failed to complete GetPrefs" +#~ msgstr "ਪਸੰਦ ਲੈਣ ਲਈ ਅਸਫ਼ਲ ਹੈ" + +#~ msgid "%s doesn't exist\n" +#~ msgstr "%s ਮੌਜੂਦ ਨਹੀਂ ਹੈ\n" + +#~ msgid " : %s\n" +#~ msgstr " : %s\n" + +#~ msgid " loaded successfully!\n" +#~ msgstr " ਸਫ਼ਲਤਾਪੂਰਕ ਲੋਡ ਕੀਤਾ ਗਿਆ!\n" diff --git a/xchat-2.8.8/po/pl.gmo b/xchat-2.8.8/po/pl.gmo new file mode 100644 index 0000000000000000000000000000000000000000..a8f4c92d02dc89696aec6ad3312fe4bcddccf17f GIT binary patch literal 100539 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 literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/po/pl.po b/xchat-2.8.8/po/pl.po new file mode 100644 index 0000000..504561f --- /dev/null +++ b/xchat-2.8.8/po/pl.po @@ -0,0 +1,5900 @@ +# SOME DESCRIPTIVE TITLE. +# This file is put in the public domain. +# Jakub Wasielewski <jakub@wasielewski.info>, 2005. +# Michał Trzebiatowski <hippie_1968@hotmail.com>, 2008, 2009, 2010 +# +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.8.6\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2010-03-10 18:15+0100\n" +"Last-Translator: Michał Trzebiatowski <hippie_1968@hotmail.com>\n" +"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Nie mogę utworzyć ~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Jestem zajęty" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Wychodzi" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* Czatowanie z konta root nie jest zalecane ze względów bezpieczeństwa.\n" +" Należy utworzyć osobne konto użytkownika i używać go do logowania.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Czekam" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Aktywne" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Porażka" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Ukończone" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Połączenie" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Anulowane" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "Nie jestem w stanie odczytać %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Błąd" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s oferuje \"%s\". Czy chcesz to zaakceptować?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Brak aktywnych Połączeń Bezpośrednich\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "TAK " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "NIE " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Zostałeś/aś zasypany/a pakietami CTCP przez %s, ignoruję %s\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "" +"Zostałeś/aś zasypany/a wiadomościami przez użytkownika %s, WYŁĄCZAM " +"automatyczne otwieranie okien/zakładek z nowymi rozmowami.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s obecny\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s nieobecny\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Nie jesteś w żadnym pokoju. Użyj polecenia /join #<nazwa_pokoju>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "" +"Nie jesteś połączony/a z serwerem. Użyj polecenia /server <nazwa_hosta> " +"[<port>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Już zaznaczony jako nieobecny: %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "Już zaznaczony jako obecny.\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "Do uruchomienia tego potrzebna jest powłoka /bin/sh!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Dostępne Polecenia:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Polecenia Użytkownika:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Polecenia zdefiniowane przez Wtyczki:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Wpisz /HELP <polecenia> aby uzyskać więcej informacji lub /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Nierozpoznany argument '%s' zignorowany." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "Taka wtyczka nie została znaleziona.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Ta wtyczka odmawia wyładowania.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <nazwa> <akcja>, dodaje przycisk pod listą użytkowników" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "" +"ALLCHAN <polecenie>, wysyła polecenie do wszystkich pokoi, w których się " +"znajdujesz" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "" +"ALLCHANL <polecenie>, wysyła polecenie do wszystkich pokoi, w których się " +"znajdujesz" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "" +"ALLSERV <polecenia>, wysyła polecenie do wszystkich serwerów, z którymi " +"jesteś połączony/a" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<powód>], ustawia status nieobecności" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "BACK, ustawia status obecności (nie nieobecności)" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <maska> [<rodzaj>], banuje wszystkich pasujących do maski w danym " +"pokoju. Jeśli są oni obecni w tym pokoju te polecenie nie spowoduje ich " +"wyproszenia (musisz być Operatorem Pokoju)" + +#: src/common/outbound.c:3506 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <zmienna> [<wartość>]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "" +"CLEAR [ALL|HISTORY], czyści aktualną zawartość okna lub historię poleceń" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, zamyka aktywne okno/zakładkę" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <kod|maska>, odszukuje kod kraju, np.: pl = Polska" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <pseudonim> <wiadomość>, wysyła wiadomość CTCP do użytkownika o podanym " +"pseudonimie. Typowe wiadomości to VERSION (wersja) oraz USERINFO (informacje " +"o użytkowniku)" + +#: src/common/outbound.c:3516 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "CYCLE [<pokuj>], wyjście i natychmiastowy powrót do pokoju" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <pseudonim> - przyjmuje zaoferowany plik\n" +"DCC SEND [-makszns=#] <pseudonim> [plik] - wysyła plik do kogoś o podanym " +"pseudonimie\n" +"DCC PSEND [-makszns=#] <pseudonim> [plik] - wysyła plik w trybie pasywnym\n" +"DCC LIST - wyświetla listę połączeń " +"bezpośrednich\n" +"DCC CHAT <pseudonim> - oferuje użytkownikowi o podanym " +"pseudonimie\n" +" czat bezpośredni\n" +"DCC PCHAT <pseudonim> - oferuje użytkownikowi o podanym " +"pseudonimie\n" +" czat bezpośredni w trybie " +"pasywnym\n" +"DCC CLOSE <rodzaj> <pseudonim> <plik> - zamyka określone połączenie " +"bezpośrednie\n" +" przykład:\n" +" /dcc close send jasio plik.zip" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <pseudonim>, zabiera uprawnienia półoperatora użytkownikowi o podanym " +"pseudonimie w aktualnym pokoju (musisz być Operatorem Pokoju)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <nazwa>, usuwa przycisk spod listy użytkowników" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <pseudonim>, zabiera uprawnienia operatora użytkownikowi o podanym " +"pseudonimie w aktualnym pokoju (musisz być Operatorem Pokoju)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <pseudonim>, zabiera prawo głosu użytkownikowi o podanym pseudonimie " +"w aktualnym pokoju (musisz być Operatorem Pokoju)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, zamknięcie połączenia z serwerem" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <pseudonim|host|ip>, odszukuje adres IP użytkownika" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <tekst>, wypisuje lokalnie zadany tekst" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <polecenie>, uruchamia polecenie. Jeśli podana jest opcja -o " +"wówczas wynik jest wysyłany do aktualnego pokoju, w innym wypadku jest " +"wyświetlany lokalnie" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, wysyła procesowi sygnał SIGCONT" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], zabija uruchomiony proces w aktualnej sesji. Jeśli podana " +"jest opcja -9, proces otrzymuje sygnał SIGKILL" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, wysyła procesowi sygnał SIGSTOP" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, wysyła dane na standardowe wejście procesu" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHHQ, opróżnia aktualną kolejkę wysyłkową serwera" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" +"GATE <host> [<port>], włączenie pośredniczenia przez host, z domyślnym 23 " +"portem" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <pseudonim> <hasło>, Rozłącza \"zjawy\" używające <nick>" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" +"HOP <pseudonim>, nadaje status Półoperatora Pokoju (musisz być Operatorem " +"Pokoju)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <hasło>, identyfikuje Cię wobec serwera" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <maska> <rodzaje..> <opcje..>\n" +" maska - maska ignorowanego hosta, przykład: *!*@*.tpnet.pl\n" +" rodzaje - zakres ignorowania, jeden rodzaj lub ALL:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" opcje - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <pseudonim> [<pokój>], wysyła zaproszenie do pokoju, domyślnie jest " +"to aktualny pokój (musisz być Operatorem Pokoju)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <pokój>, wejście do pokoju" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <pseudonim>, wyprasza użytkownika z aktualnego pokoju (musisz być " +"Operatorem Pokoju)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <pseudonim>, banuje a następnie wyprasza użytkownika z aktualnego " +"pokoju (musisz być Operatorem Pokoju)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, wymuszenie sprawdzenia opóźnienia w komunikacji z serwerem" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <fragment>, wyszukanie fragmentu w buforze" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <plik>, załadowanie wtyczki lub skryptu" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, masowe odebranie statusu półoperatora wszystim w aktualnym pokoju " +"(musisz być Operatorem Pokoju)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, masowe odebranie statusu operatora wszystim w aktualnym pokoju " +"(musisz być Operatorem Pokoju)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <akcja>, wysyła akcję do aktualnego pokoju (akcje pisane są 3. osobie, " +"tak jak /me skacze)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, wyrzuca wszystkich oprócz Ciebie w bieżącym pokoju (musisz być " +"Operatorem Pokoju)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, daje wszystkim użytkownikom status operatora w bieżącym pokoju (musisz " +"być Operatorem Pokoju)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "" +"MSG <pseudonim> <wiadomość>, wysyła prywatną wiadomość do użytkownika o " +"podanym pseudonimie" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, wykazuje wszystkie pseudonimy w bieżącym pokoju" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <pseudonim> <wiadomość>, wysyła ogłoszenie CTCP" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <nazwa hostu> [<port>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <pseudonim>, zmiana pseudonimu" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <pseudonim/pokoj> <wiadomość>, wysyła ogłoszenie. Ogłoszenia to " +"rodzaj wiadomości, które powinny być automatycznie odpowiedziane" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n network1[,network2,...]] [<pseudonim>], wyświetla listę " +"powiadomień lub dodaje kogoś do niej" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" +"OP <pseudonim>, daje pseudonimu status operatora pokoju (musisz być " +"Operatorem Pokoju)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<pokoj>] [<powód>], opuszcza pokoj, domyślnie obecny" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "" +"PING <pseudonim | pokoj>, wysyła ping do pseudonimu lub pokoju za pomocą CTCP" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "QUERY [-nofocus] <pseudonim>, otwiera nowe okno dialogowe do kogoś" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<powód>], odłącza się od obecnego serwera" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <tekst>, wysyła surowy tekst do serwera" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<host>] [<port>] [<hasło>], można użyć jako /RECONNECT aby " +"ponownie połączyć się do bieżącego serwera lub /RECONNECT ALL aby ponownie " +"połączyć się do wszystkich otwartych serwerów" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<host>] [<port>] [<hasło>], można użyć jako /RECONNECT aby " +"ponownie połączyć się do bieżącego serwera lub /RECONNECT ALL aby ponownie " +"połączyć się do wszystkich otwartych serwerów" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <tekst>, wysyła surowe dane do xchat, jakby były otrzymywane z serwera " +"IRC" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <tekst>, wysyła tekst do obiektu w bieżącym oknie" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <pseudonim> [<plik>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <host> <port> <pokój>, łączy i wchodzi do pokoju" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <host> <port> <pokój>, łączy i wchodzi do pokoju" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <host> [<port>] [<hasło>], łączy się z serwerem, domyślny port " +"to 6667 dla zwykłych połączeń, i 9999 dla połączeń SSL" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <host> [<port>] [<hasło>], łączy się z serwerem, domyślny port to 6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <zmienna> [<wartość>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<pozycja>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<temat>], określa temat jeśli jest podany, inaczej pokazuje bieżący " +"temat" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" +"\n" +"TRAY -f <limit czasu> <plik1> [<plik2>] Miga w zasobniku pomiędzy dwoma " +"ikonami.\n" +"TRAY -f <nazwa pliku> Ustawia zasobnik do ustalonej ikony.\n" +"TRAY -i <numer> Miga w zasobniku wewnętrzną ikoną.\n" +"TRAY -t <tekst> Ustawia tooltip zasobnika.\n" +"TRAY -b <tytuł> <tekst> Ustawia balon zasobnika." + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <maska> [<maska>...], odbanuje podane maski." + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <maska> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <nazwa>, usuwa wtyczkę lub skrypt" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, otwiera URL w twojej przeglądarce" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <pseudonim1> <pseudonim2> itp, podświetla pseudonim(y) w " +"liście użytkowników pokoju" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "" +"VOICE <pseudonim>, przyznaje komuś prawo głosu (musisz być Operatorem Pokoju)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <wiadomość>, pisze wiadomość do wszystkich pokoi" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <wiadomość>, wysyła wiadomość do wszystkich operatorów w bieżącym " +"pokoju" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Wykorzystanie: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"Nie ma pomocy do tego polecenia.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Polecenie nieznane.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Złe argumenty przekazane temu poleceniu.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Zbyt wiele rekursywnych poleceń użytkownika, przerywam." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Polecenie nieznane. Użyj /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "Żaden symbol xchat_plugin_init; czy to naprawdę wtyczka xchatu?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Czy jesteś pewien/pewna, że ten serwer i/lub port obsługuje SSL?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Nie można rozwiązać nazwy hosta %s\n" +"Sprawdź twoje ustawienia IP!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Nieudane połączenie z serwerem pośredniczącym.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Skocz do następnego serwera w %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Uwaga: nieznane kodowanie \"%s\". Nie będzie stosowanej konwersji dla sieci %" +"s." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 dodano do listy powiadomień." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Lista banów:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tNie możesz wejść do pokoju%C26 %B$1 %O(Jesteś zbanowany)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 zmienia pseudonim na $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 nakłada BAN na $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tPokój $1 został utworzony $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "" +"%C22*%O$t%C26$1%O odbiera status Półoperatora Pokoju użytkownikowi%C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O odbiera status Operatora Pokoju użytkownikowi%C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O odbiera prawo głosu użytkownikowi%C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 ustawia wyjątek na $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "" +"%C22*%O$t%C26$1%O nadaje status Półoperatora Pokoju użytkownikowi%C26 $2" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 ustawia zaproszenie dla $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UPokój Użyt. Temat" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 ustawia opcje $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Opcje Pokoju $1: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O nadaje status Operatora Pokoju użytkownikowi%C26 $2" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 usuwa wyjątek na $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 usuwa zaproszenie dla $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 usuwa hasło dostępu do pokoju" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 usuwa limit użytkowników" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 ustawia hasło dostępu do pokoju na $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 ustawia limit pokoju na $2 użytkowników" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 usuwa BANA z $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O daje głos użytkownikowi%C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Połączenie nawiązane. Teraz się loguję..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22Łączenie z $1 ($2) port $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21Połączenie nieudane. Błąd: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tNadeszło żądanie CTCP $1 od użytkownika $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tNadeszło żądanie CTCP $1 od użytkownika $2 (do $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tNadeszło żądanie CTCP Sound $1 od użytkownika $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tNadeszło żądanie CTCP Sound $1 od użytkownika $2 (do $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "" +"%C22*%O$tOdbieranie Czat Bezpośredni z użytkownikiem %C26$1%O zakończony." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "" +"%C22*%O$tCzat Bezpośredni rozpoczęty z użytkownikiem %C26$1 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tCzat Bezpośredni z użytkownikiem %C26$1%O przerwany ($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tNadeszło zaproszenie na Czat Bezpośredni od użytkownika $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tWysyłam zaproszenie na Czat Bezpośredni do użytkownika $1" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "" +"%C22*%O$tZaproszenie na Czat do użytkownika $1 już wcześniej zostało wysłane" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "" +"%C22*%O$tPróba nawiązania Połączenia Bezpośredniego $1 z użytkownikiem%C26 " +"$2%O nie powiodła się (błąd=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tOdebrałem '$1%O' od użytkownika $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 Typ do/z Stan Rozmiar Poz Plik " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O.%010%C22*%O" +"$tContents of packet: $2" +msgstr "" +"%C22*%O$tNadszedł nieprawidłowy wniosek Czatu Bezpośredniego od %C26$1%O.%" +"010%C22*%O$tZawartość pakietu: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tOferuję%C26 $1%O użytkownikowi%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tNie ma takiej oferty Czatu Bezpośredniego." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "" +"%C22*%O$tOdbieranie%C26 $2%O Czatu Bezpośredniego od użytkownika%C26 $1%O " +"zakończone." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tOdbieranie%C26 $1%O Czatu Bezpośredniego z%C26 $3%O gotowe %C30[%C26" +"$4%O cps%C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "" +"%C22*%O$tPołączenie odbierania Czatu Bezpośredniego zrealizowane do%C26 $1 %" +"C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "" +"%C22*%O$tOdbieranie Czatu Bezpośredniego%C26 $1%O z%C26 $3%O nie powiodło " +"się ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "" +"%C22*%O$tOdbieranie Czatu Bezpośredniego: Nie można otworzyć $1 do pisania " +"($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "" +"%C22*%O$tPlik%C26 $1%C już istnieje, zapisuje go w zamian jako%C26 $2%O." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "" +"%C22*%O$t%C26$1 %Owystąpił z wnioskiem o wznowienie%C26 $2 %Cz%C26 $3%C." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "" +"%C22*%O$tWysyłanie%C26 $2%O Czatu Bezpośredniego do użytkownika%C26 $1%O " +"zakończone." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tWysyłanie%C26 $1%O Czatu Bezpośredniego do%C26 $2%O gotowe %C30[%C26" +"$4%O cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "" +"%C22*%O$tPołączenie wysyłania Czatu Bezpośredniego zrealizowane z%C26 $1 %C30" +"[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "" +"%C22*%O$tWysyłanie Czatu Bezpośredniego%C26 $1%O do%C26 $2%O nie powiodło " +"się. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Ozaoferował%C26 $2 %O(%C26$3 %Obajtów)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oprzy%C26 $3 %Czawieszony - przerywam." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oprzy%C26 $3 %Oprzekroczył czas - przerywam." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 usunięty z listy powiadomień." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tRozłączony ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tTwój adres IP: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O dodano do listy ignorowanych." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "Sposób ignorowania użytkownika %C26$1%O został zmieniony." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "" +"%C24,18 Maska hosta PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O usunięty z listy ignorowanych." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr "Lista ignorowanych jest pusta." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "" +"%C22*%O$tNie możesz wejść do pokoju%C26 %B$1 %O(Wymagane jest zaproszenie)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "" +"%C22*%O$tOtrzymałeś/aś zaproszenie do pokoju%C26 $1%O od użytkownika%C26 $2%" +"C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) wchodzi do pokoju $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "" +"%C22*%O$tNie możesz wejść do pokoju%C26 %B$1 %O(Wymagane jest podanie hasła)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 wyprosił/a użytkownika $2 z pokoju $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "" +"%C22*%O$tZostałeś/aś rozłączona przez Operatora o pseudonimie $1 ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD Odpuszczony." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 jest obecnie używany. Próbuję ponownie z $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$tPseudonim jest obecnie używany przez kogoś innego. Użyj polecenia /" +"NICK aby wybrać inny." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tNie ma takiego Czatu Bezpośredniego." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tAktualnie nie ma uruchomionego procesu" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tLista powiadomień jest pusta." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Lista Powiadomień " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 użytkowników na liście powiadomień." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tPowiadomienie: $1 właśnie opuścił/a czat ($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tPowiadomienie: $1 właśnie się pojawił/a ($3)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) opuścił/a pokój $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) opuścił/a pokój $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tOdpowiedź na ping $1: $2 sekund(y)" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tBrak odpowiedzi na ping przez $1 sekund, rozłączanie." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tProces jest już uruchomiony" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 opuścił/a czat (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 ustawia opcje%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Operatorzy%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tSzukam numeru IP dla%C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22Połączony." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22Szukam $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tZatrzymano poprzednie próby połączenia (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29Temat rozmowy w pokoju $1%C %C29to: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 zmienia temat rozmowy na: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "" +"%C29*%O$t%C29Temat w pokoju $1%C %C29został ustawiony przez $2%C %C29, dnia: " +"$3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tNieznany host. Może jest błąd w pisowni?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "" +"%C22*%O$tNie możesz wejść do pokoju%C26 %B$1 %O(Limit użytkowników został " +"wyczerpany)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Użytkownicy w pokoju $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cjest nieobecny %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OKoniec listy WHOIS." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O nieaktywny%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O nieaktywny%C26 $2%O, zalogowany od:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" +"%C22*%O$t%C28[%O$1%C28] %Oprawdziwy user@host%C27 $2%O, prawdziwy adres IP%" +"C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Teraz rozmawiasz w pokoju $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tZostałeś/aś wyproszony/a z pokoju $2 przez $3 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tOpuszczasz pokój $3" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tOpuszczasz pokój $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tZaprosiłeś%C26 $1%O do%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tZmieniasz pseudonim na $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "Załadowany dziennik z" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** ZAKOŃCZ LOGOWANIE O %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** ZACZNIJ LOGOWANIE O %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Nie można otworzyć pliku(-ów) dziennika do pisania.\n" +" Sprawdź uprawnienia %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Wiadomość z lewej" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Wiadomość z prawej" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "Pseudonim wchodzącej osoby" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "Zostaje połączony pokój" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "Host" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Pseudonim" + +#: src/common/text.c:973 +msgid "The action" +msgstr "Akcja" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Znak trybu" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Rozpoznany tekst" + +#: src/common/text.c:980 +msgid "The text" +msgstr "Tekst" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Wiadomość" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Stary pseudonim" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Nowy pseudonim" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Pseudonim osoby, która zmieniła temat" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Temat rozmowy" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Pokój" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "Pseudonim wypraszającego" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "Wypraszana osoba" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "Pokój" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "Powód" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "Pseudonim osoby wychodzącej" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "Czas" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "Twórca" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Pseudonim" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Powód" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Host" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "Kto jest z" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "Czas w postaci x.x (zobacz poniżej)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "Pokój o który chodzi" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "Dzwięk" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "Pseudonim osoby" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "Żądanie CTCP" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "Pseudonim osoby, która ustawiła hasło dostępu" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "Hasło" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "Pseudonim osoby, która ustawiła limit" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "Limit" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "Pseudonim osoby, która dała prawa operatora" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "Pseudonim osoby, która otrzymała prawa operatora" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "Pseudonim osoby, która otrzymała prawa półoperatora" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "Pseudonim osoby, która dała prawa półoperatora" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "Pseudonim osoby, która miała prawo głosu" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "Pseudonim osoby, której dano prawo głosu" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "Pseudonim banującej osoby" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "Maska bana" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "Pseudonim, który ustawił hasło" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "Pseudonim, który ustawił limit" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "Pseudonim osoby, która użyła prawa operatora" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "Pseudonim osoby, której zabrano prawa operatora" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "Pseudonim osoby, która użyła prawa półoperatora" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Pseudonim osoby, której zabrano prawa półoperatora" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "Pseudonim osoby, która użyła prawo głosu" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "Pseudonim osoby, której zabrano prawo głosu" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "Pseudonim osoby, która usunęła ban" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "Pseudonim osoby, która ustawiła wyjątek" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "Maska wyjątku" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "Pseudonim osoby, która usunęła wyjątek" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "Pseudonim osoby, która wysłała zaproszenie" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "Maska zaproszenia" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "Pseudonim osoby, która usunęła zaproszenie" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "Pseudonim osoby, która ustawiła tryb" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "Znak trybu (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "Litera trybu" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "Pokój który będzie ustawiony" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Użytkownik" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Personalia" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Członkostwo pokoju/\"jest operatorem IRC\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Informacje o Serwerze" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Czas nieaktywności" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Data wejścia" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Powód nieobecności" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Wiadomość" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Konto" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "Prawdziwy user@host" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "Prawdziwy adres IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Nazwa Pokoju" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Tekst" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Nazwa Serwera" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Pseudonim osoby wysyłającej zaproszenie" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Użytkownicy" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Używany pseudonim" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Próbowany pseudonim" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Port" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Sieć" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Opcje" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "Adres IP" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "Rodzaj Połączenia Bezpośredniego" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Nazwa pliku" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Docelowa nazwa pliku" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "ZNS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Ścieżka" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Wysłane" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Rozmiar" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "String DCC" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Liczba pozycji powiadamiających" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Stara Nazwa pliku" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Nowa Nazwa pliku" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Odbiorca" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Maska hosta" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Nazwa hosta" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "Pakiet" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Sekundy" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Pseudonim zaproszonej osoby" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Maska bana" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Kto ustawił bana" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Czas bana" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Błąd analizy zdarzenia %s.\n" +"Ładuje domyślny." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"Nie można odczytać pliku dźwiękowego:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "Odległy host zamknął połączenie" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Odmowa połączenia" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Brak drogi do hosta" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Połączenie wygasło" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Nie można przypisać tego adresu" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Połączenie zerwane przez drugą stronę" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Wyspa Wniebowstąpienia" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Andora" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Zjednoczone Emiraty Arabskie" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Afganistan" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Antigua i Barbuda" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Albania" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Armenia" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Antyle Holenderskie" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Antarktyka" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Argentyna" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "Odwrotny DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Samoa Amerykańskie" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Austria" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Australia" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Wyspy Alandzkie" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Azerbejdżan" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Bośnia i Hercegowina" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Bangladesz" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Belgia" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Bułgaria" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Bahrajn" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Przedsiębiorstw" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Bermudy" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Brunei Darussalam" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Boliwia" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Brazylia" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Bahamy" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Bhutan" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Wyspa Bouveta" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Białoruś" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Kanada" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Wyspy Kokosowe" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "Demokratyczna Republika Kongo" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "Republika Środkowoafrykańska" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Kongo" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Szwajcaria" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Wybrzeże Kości Słoniowej" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Wyspy Kuka" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Czile" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Kamerun" + +#: src/common/util.c:898 +msgid "China" +msgstr "Chiny" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Kolumbia" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Domena komercyjna" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Kostaryka" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Serbia i Czarnogóra" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Kuba" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Republika Zielonego Przylądka" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Wyspa Wielkanocna" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Cypr" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "Czechy" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Niemcy" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Dżibuti" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Dania" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Dominika" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "Republika Dominikany" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Algieria" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Ekwador" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Instytucja Naukowa" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Estonia" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Egipt" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Zachodnia Sahara" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Erytrea" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Hiszpania" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Etiopia" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Unia Europejska" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Finlandia" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Fidżi" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Falklandy" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Mikronezja" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Wyspy Owcze" + +#: src/common/util.c:928 +msgid "France" +msgstr "Francja" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Wielka Brytania" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Gruzja" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Gujana Francuska" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Brytyjskie Wyspy Kanału" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Ghana" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Grenlandia" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Gwinea" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Domena Rządowa" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Gwadelupa" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Gwinea Równikowa" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Grecja" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Georgia Południowa i Sandwich Południowy" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Gwatemala" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Gwinea Bissau" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Gujana" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Wyspy Heard i McDonalda" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Chorwacja" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Węgry" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Indonezia" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Irlandia" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Izrael" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Wyspa Man" + +#: src/common/util.c:959 +msgid "India" +msgstr "Indie" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Informacyjne" + +#: src/common/util.c:961 +msgid "International" +msgstr "Międzynarodowe" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Brytyjskie Terytorium Oceanu Indyjskiego" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Irak" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Iran" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Islandia" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Włochy" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Jamajka" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Jordania" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Japonia" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Kenia" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Kirgistan" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Kambodża" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Komory" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "Saint Kitts i Nevis" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Korea Północna" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Korea Południowa" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Kuwejt" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Kajmany (wyspy)" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Kazachstan" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Liban" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Saint Lucia" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Liberia" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Litwa" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Luksemburg" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Łotwa" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Libia" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Maroko" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Monako" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Mołdawia" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "Medycyna Stanów Zjednoczonych" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Madagaskar" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Wyspy Marshalla" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Domena wojskowa" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Macedonia" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Myanmar" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Mongolia" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Makau" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Mariany Północne" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Martynika" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Mauretania" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Montserrat (wyspa)" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Mauritius" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Malediwy" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Meksyk" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Malezia" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Mozambik" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Namibia" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Nowa Kaledonia" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Sieć Internic" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Norfolk" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Nigeria" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Nikaragua" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Holandia" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Norwegia" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Nowa Zelandia" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Organizacja Internic non-profit" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Polinezja Francuska" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Papua-Nowa Gwinea" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Filipiny" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Polska" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "Saint-Pierre i Miquelon" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Portoryko" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Terytorium Palestyńskie" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Portugalia" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Paragwaj" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Katar" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Reunion" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Rumunia" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "ARPAnet starej szkoły" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Rosja" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Rwanda" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Arabia Saudyjska" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Wyspy Salomona" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Seszele" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Sudan" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Szwecja" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Singapur" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "Święta Helena" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Słowenia" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Wyspy Svalbard i Jana Mayena" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Słowacja" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Somalia" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Surinam" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "Wyspy Świętego Tomasza i Książęca" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Były ZSRR" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "Salwador" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Syria" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Suazi" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Wyspy Turks i Caicos" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Czad" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Francuskie Terytoria Południowe" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Tajlandia" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Tadżykistan" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Timor Wschodni" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Tunezia" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Turcja" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Trynidad i Tobago" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Tanzania" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Ukraina" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Wielka Brytania" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "Chameryka" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Urugwaj" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Uzbekistan" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Watykan" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "Saint Vincent i Grenadyny" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Wenezuela" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Brytyjskie Wyspy Dziewicze" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "Wyspy Dziewicze Stanów Zjednoczonych" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Wietnam" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Wyspy Wallis i Futuna" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Jemen" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Majotta" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Jugosławia" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Afryka Południowa" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Zambia" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Nieznany" + +#: src/common/xchat.c:726 +msgid "_Open Dialog Window" +msgstr "_Otwórz Okno Dialogu" + +#: src/common/xchat.c:727 +msgid "_Send a File" +msgstr "_Wyślij Plik" + +#: src/common/xchat.c:728 +msgid "_User Info (WhoIs)" +msgstr "Informacje o _użytkowniku (WhoIs)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "_Dodaj do listy przyjaciół" + +#: src/common/xchat.c:730 +msgid "O_perator Actions" +msgstr "Akcje o_peratora" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Nadaj status Operatora" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Zabierz status Operatora" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Pozwól mówić podczas moderacji" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Zabroń mówić podczas moderacji" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Wypraszanie/Banowanie" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Wyproś" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Banuj" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "Wyproś i Banuj" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Wyjdź z Pokoju" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Wejdź do Pokoju..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Podaj pokój do wejścia:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Połączenia Szkieletowe" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Serwer Pingu" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Ukryj Wersję" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Op" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "<papa>" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Podaj powód wyproszenia %s z pokoju:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Wyślij plik" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Dialog" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Wyślij" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Czat Bezpośredni" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Wyczyść" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "Nie można połączyć się z busem sesji" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "Nie można zakończyć NazwęMaWłaściciel" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "Nie można zakończyć polecenia" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "zdalny dostęp" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "wtyczka do zdalnego dostępu za pomocą DBUS" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Nie można połączyć się z busem sesji: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Nie można nabyć %s: %s\n" + +#: src/fe-gtk/about.c:100 +msgid "About " +msgstr "O programie" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Wieloplatformowy Program do Czatowania" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Wybór Pojedynczego Znaku" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "Połącz ponownie" + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Musisz zaznaczyć jakieś BANY." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "Czy na pewno chcesz usunąć wszystkie bany w %s?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Maska" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "Od" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Data" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" +"Możesz otworzyć okno listy banów tylko wtedy gdy znajdujesz się na karcie " +"pokoju." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "X-Chat: Lista BANÓW (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Usuń" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Skróć" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Odśwież" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Wyświetlanych %d/%d użytkowników w %d/%d pokojach." + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Wybierz nazwę pliku wyjściowego" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "_Wejdź do Pokoju" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "_Kopiuj nazwę pokoju" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "Kopiuj tekst _tematu" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "X-Chat: Lista Pokoi (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "_Szukaj" + +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "_Lista pobierania" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "Zapisz _Listę..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "Pokaż tylko:" + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "pokóje z" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "do" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "użytkownicy." + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "Zobacz w:" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "Nazwa pokoju" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "Typ wyszukiwania:" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "Proste wyszukiwanie" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "Dopasowanie do wzorca (maski)" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "Regularne wyrażenie" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Szukaj:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Wyślij plik do %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Ten plik nie może być wznawiany." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"Nie można uzyskać dostępu do pliku: %s\n" +"%s.\n" +"Wznawianie nie jest możliwe." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"Plik w katalogu pobierania jest większy niż zaoferowany. Wznawianie nie jest " +"możliwe." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "Nie można wznowić tego samego pliku od dwóch osób." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: Wysyłania i Pobierania" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Status" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Plik" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "SzCzZ" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Obydwa" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Wysyłania" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "Pobieraj pliki do:" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Informacje o Tobie" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Plik:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "Adres IP:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Przerwij" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Przyjmij" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Wznów" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Otwórz folder..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "X-Chat: Lista Czatów Bezpośrednich" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Odebrane" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Wysłane" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "Początek" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*NOWY*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "EDYTUJ MNIE" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Nazwa" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Polecenie" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "W Górę" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "W Dół" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Anuluj" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Zapisz" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Dodaj" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Usuń" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Sortuj" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Pomoc" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "Nie łącz automatycznie z serwerem" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "Użyj innego katalogu konfiguracyjnego" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "Nie ładuj automatycznie żadnych wtyczek" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "Pokaż katalog automatycznego ładowania wtyczek" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "Pokaż katalog ustawień użytkownika" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Otwórz adres URL irc://server:port/channel " + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Uruchom polecenie:" + +#: src/fe-gtk/fe-gtk.c:132 +msgid "Open URL or execute command in an existing XChat" +msgstr "Otwórz adres URL lub wykonaj polecenia w istniejącym XChat" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" +"Rozpocznij zminimalizowanie. Poziom 0=normalny 1=minimalizowany 2=w " +"zasobniku" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "poziom" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "pokaż informacje o wersji" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"Nie można otworzyć czcionki:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "Bufor szukania jest pusty.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d bajtów" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Kolejka sieci wysłania: %d bajtów" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"Polecenie Run Command uruchamia dane w \"Dane 1\" tak jakby były wpisane w " +"linii poleceń, w kolejności wciśniętych klawiszy. Tak więc mogą zawierać one " +"tekst (który zostanie wysłany do pokoju/osoby), polecenia lub polecenia " +"użytkownika\n" +" oddziela polecenia, tak że można uruchomić kilka poleceń. Jeśli " +"potrzebujesz \\ w tekście, wpisz \\\\" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"Polecenie Change Page przełącza pomiędzy stronami w notatniku. Ustaw w " +"\"Dane 1\" stronę do której chcesz przełączyć. Jeśli podane jest coś w " +"\"Dane 2\" przełącza to w stosunku do aktualnej pozycji" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"Polecenie Insert in Buffer wstawia zawartość \"Dane 1\" do miejsca wciśnięta " +"kolejności klawiszy przy pozycji kursora" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"Polecenie Scroll Page przewija tekst widżetu o jedną stronę w górę lub w " +"dół. Możliwe wartości dla \"Dane 1\": Up, Down, +1 lub -1." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"Polecenie Set Buffer ustawia wpis gdzie została podana kolejność klawiszy do " +"zawartości \"Dane 1\"" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"Polecenie Last Command ustawia wpis zawierający ostatnie polecenie - tak " +"samo jak naciśnięcie w górę w shellu" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"Polecenie Next Command ustawia wpis zawierający następne polecenie - tak " +"samo jak naciśnięcie w dół w shellu" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"To polecenie zmienia tekst w wpisie aby uzupełnić niekompletny pseudonim lub " +"polecenie. Jeśli podane są \"Dane 1\" dwukrotny tab wybiera ostatni " +"pseudonim, a nie następny" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"To polecenie przewija w górę i w dół, poprzez listę pseudonim. Jeśli podane " +"są \"Dane 1\" wszystko przewija w górę, inaczej w dół" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"To polecenie sprawdza ostatnie wpisane słowo w liście zastąpień a następnie " +"wymienia je, jeżeli znajdzie zgodę" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "To polecenie przenosi bieżącą kartę o jedną pozycję w lewo" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "To polecenie przenosi bieżącą kartę o jedną pozycję w prawo" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "To polecenie przenosi bieżącą grupę kart o jedną pozycję w lewo" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "To polecenie przenosi bieżącą grupę kart o jedną pozycję w prawo" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "Wstaw linię wejściową do historii, ale nie wysyłaj do serwera" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "Wystąpił błąd podczas ładowania konfiguracji klawiszy" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<brak>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Funkc." + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Klawisz" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Akcja" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "X-Chat: Skróty Klawiszowe" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Dane 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Dane 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Błąd podczas otwierania pliku konfiguracyjnego kluczy \n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Nieznana nazwa klawisza %s w pliku konfiguracyjnym klawiszy\n" +"Ładowanie przerwane, należy poprawić %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Nieznana akcja %s w pliku konfiguracyjnym klawiszy\n" +"Ładowanie przerwane, należy poprawić %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Oczekiwana linia danych (począwsza od Dx{:|!}) ale otrzymano:\n" +"%s\n" +"\n" +"Ładowanie przerwane, należy poprawić %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"Plik konfiguracyjny klawiszy jest uszkodzony, ładowanie przerwane\n" +"Należy poprawić %s/keybindings.conf\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "Nie można zapisać do tego pliku." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Nie może odczytać tego pliku." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Ta maska już istnieje." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Prywatne" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Ogłoszenia" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "Połączenia Bezpośrednie" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Zaproś" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Nie ignoruj" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Podaj maskę którą zignorować:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "X-Chat: Lista Ignorowanych" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Statystyki Ignorowania:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Pokój:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Prywatne:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Ogłoszenia:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Zaproszenia:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "Dodaj..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "Nazwa pokoju za krótka, spróbuj ponownie." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: Połączenie Zakończone" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "Połączenie z %s zakończone." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"W oknie listy serwerów, nie został wpisany żaden pokój do automatycznego " +"przystąpienia dla tej sieci." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "Co chcesz następnie zrobić?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "_Nic, chcę później dołączyć do pokoju." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "We_jdź do Pokoju:" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Jeśli znasz nazwę pokoju, do którego chcesz dołączyć, wpisz ją tutaj." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "Otwórz okno z _pokojami w:" + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "Pobieranie listy pokoi może zająć minutę lub dwie." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "_Zawsze pokazuj to okno dialogowe po podłączeniu." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Dialog z" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Temat rozmowy w pokoju %s to: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Brak tematu rozmowy" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"Ten serwer ma wciąż %d pokoji lub dialogów związanych z nim. Zamknąć je " +"wszystkie?" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "Wyjść z XChat?" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "Nie pytaj następnym razem." + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Jesteś połączony z %i sieciami IRC." + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "Czy na pewno chcesz wyjść?" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "Niektóre transfery plików są nadal aktywne." + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "_Minimalizuj do zasobnika" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Wstaw atrybut lub kod koloru" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Pogrubione</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Podkreślone</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Normalny" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Kolory 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Kolory 8-15" + +#: src/fe-gtk/maingui.c:1612 +msgid "_Settings" +msgstr "_Ustawienia" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "_Loguj na dysku" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "_Wczytaj ponowne przewijanie w tył" + +#: src/fe-gtk/maingui.c:1617 +msgid "_Hide Join/Part Messages" +msgstr "_Ukryj wiadomości dołączania/opuszczania" + +#: src/fe-gtk/maingui.c:1625 +msgid "_Extra Alerts" +msgstr "_Dodatkowe Powiadomienia" + +#: src/fe-gtk/maingui.c:1627 +msgid "Beep on _Message" +msgstr "Pojedynczy dzwonek gdy przyjdzie _wiadomość" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "Migaj _ikoną w zasobniku" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "Migaj _paskiem zadań" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +msgid "_Detach" +msgstr "O_dczep" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "_Zamknij" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "Limit użytkowników podaj w formie liczby!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Ochrona Tematu" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Blokada wiadomości z zewnątrz" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Ukryty" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Wymagane zaproszenie" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Moderowany" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Lista BANów" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Hasło" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Limit użytkowników" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Pokaż/Ukryj listę użytkowników" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"Nie można ustawić przezroczystego tła!\n" +"\n" +"Być może uzywasz niezgodnego Menedżera\n" +"okien, który nie jest aktualnie nieobsługiwany.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Podaj nowy pseudonim:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Nieznany host" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Personalia:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Użytkownik:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "Kraj:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Serwer:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "%u minut temu" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Ost. Wiad.:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Usprawiedliwienie:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "%d wybranych pseudonimów." + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"Pasek menu jest teraz ukryty. Możesz przywrócić go ponownie, naciskając " +"klawisz F9 lub klikając prawym przyciskiem myszy w pustej części obszaru " +"tekstu głównego." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Otwórz link w przeglądarce" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Kopiuj zaznaczony URL" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Wejdź do Pokoju" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Wyjdź z Pokoju" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Wyjdź i wejdź spowrotem do pokoju" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "_Usuń z ulubionych" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "_Dodaj do ulubionych" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: Menu Użytkownika" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Dostosuj to Menu..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Lista Pokoi..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Polecenia uzytkownika - Specjalne kody:\n" +"\n" +"%c = bieżący pokój\n" +"%e = bieżąca nazwa sieci\n" +"%m = informacje komputera\n" +"%n = twój pseudonim\n" +"%t = czas/data\n" +"%v = wersja xchat\n" +"%2 = słowo 2\n" +"%3 = słowo 3\n" +"&2 = słowo 2 do końca linii\n" +"&3 = słowo 3 do końca linii\n" +"\n" +"np:\n" +"/cmd john hello\n" +"\n" +"%2 byłoby \"john\"\n" +"&2 byłoby \"john hello\"." + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Przyciski użytkownika - Specjalne kody:\n" +"\n" +"%a = wszystkie wybrane pseudonimy\n" +"%c = bieżący pokój\n" +"%e = bieżąca nazwa sieci\n" +"%h = wybrana nazwa hosta pseudonimu\n" +"%m = informacje komputera\n" +"%n = twój pseudonim\n" +"%s = wybrany pseudonim\n" +"%t = czas/data\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Przyciski dialogu - Specjalne kody:\n" +"\n" +"%a = wszystkie wybrane pseudonimy\n" +"%c = bieżący pokój\n" +"%e = bieżąca nazwa sieci\n" +"%h = wybrana nazwa hosta pseudonimu\n" +"%m = informacje komputera\n" +"%n = twój pseudonim\n" +"%s = wybrany pseudonim\n" +"%t = czas/data\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"Odpowiedzi CTCP - Specjalne kody:\n" +"\n" +"%d = dane (w całym CTCP)\n" +"%e = bieżąca nazwa sieci\n" +"%m = informacje komputera\n" +"%s = pseudonim, który wysłał CTCP\n" +"%t = time/date\n" +"%2 = słowo 2\n" +"%3 = słowo 3\n" +"&2 = słowo 2 do końca linii\n" +"&3 = słowo 3 do końca linii\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"Obsługi URL - Specjalne kody:\n" +"\n" +"%s = string URL\n" +"\n" +"! na początku polecenia wskazuje,\n" +"że wysłana ono jest do\n" +"shella, zamiast do XChat" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: Własne Polecenia Użytkownika" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: Podręczne menu Listy Użytkowników" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Zamień z" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: Zamiana" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: Przechwycone Adresy URL" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: Przyciski pod Listą Użytkowników" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: Przyciski w Rozmowie Prywatnej" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: Odpowiedzi CTCP" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "Li_sta sieci..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "_Nowe" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Zakładka Serwera..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Zakładka Pokoju..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Okno Serwera..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Okno Pokoju..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "Załaduj Wtyczkę lub Skrypt..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "Wyjście" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "_Widok" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "Pasek _Menu" + +#: src/fe-gtk/menu.c:1592 +msgid "_Topic Bar" +msgstr "Pasek _Tematu" + +#: src/fe-gtk/menu.c:1593 +msgid "_User List" +msgstr "Lista _Użytkowników" + +#: src/fe-gtk/menu.c:1594 +msgid "U_serlist Buttons" +msgstr "Przyciski _użytkowników" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "Przyciski _Opcji Pokoju" + +#: src/fe-gtk/menu.c:1597 +msgid "_Channel Switcher" +msgstr "_Przełącznik Pokoi" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "_Zakładki" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "_Śledzenie" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "Mier_niki sieciowe" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Wyłączone" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Graficzny" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "_Serwer" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "_Rozłącz" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "Połącz _ponownie" + +#: src/fe-gtk/menu.c:1613 +msgid "Join a Channel..." +msgstr "Wejdź do Pokoju..." + +#: src/fe-gtk/menu.c:1614 +msgid "List of Channels..." +msgstr "Lista Pokoi..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Oznacz jako nieobecny" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "_Użytkownik" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "Ustawi_enia" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "_Preferencje" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Zaawansowane" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Automatyczna Zamiana..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "Odpowiedzi CTCP..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Przyciski w Rozmowie Prywatnej..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Skróty Klawiszowe..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Zdarzenia Tekstowe..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "Obsługi URL..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Własne Polecenia Użytkownika..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Przyciski pod Listą Użytkowników..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Podręczna Lista Użytkowników..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_Okno" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Lista BANów..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Tablica Znaków..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Czat Bezpośredni..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Transfery plików..." + +#: src/fe-gtk/menu.c:1641 +msgid "Friends List..." +msgstr "Lista przyjaciół..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Lista Ignorowanych..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Wtyczki i Skrypty..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Surowy Log..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "Przechwycone Adresy URL..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Resetuj oznakowanie linii" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "Wy_czyść Tekst" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Szukaj Tekstu..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Zapisz Tekst..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_Pomoc" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "_Zawartość pomocy" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "Sprawdź uaktualnienia" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "_O programie" + +#: src/fe-gtk/menu.c:2147 +msgid "_Attach" +msgstr "_Przyczep" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Ostatnio Widziany" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Rozłączony" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Nigdy" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "%d minut temu" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Dostępny" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Wpisz pseudonim do dodania:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "Zawiadamiaj na tych sieciach:" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "Akceptowana jest lista sieci, dzielonych przecinkami." + +#: src/fe-gtk/notifygui.c:413 +msgid "XChat: Friends List" +msgstr "X-Chat: Lista Przyjaciół" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "Otwórz Dialog" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" +"Nie można odnaleźć 'powiadomienie-wysłane' aby otworzyć balony powiadomień.\n" +"Proszę zainstaluj libnotify." + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "XChat: Podłączony do %u sieci i %u pokoi" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "_Odnów" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "_Ukryty" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "_Migaj przy" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "Wiadomość Pokoju" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "Prywatna wiadomość" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "Podświetlona wiadomość" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "_Zmień status" + +#: src/fe-gtk/plugin-tray.c:602 +msgid "_Away" +msgstr "_Nieobecność" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "_Wstecz" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat: Podświetl wiadomość od: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat: %u wiadomości podświetlonych, najnowsza z: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat: Nowa wiadomość publiczna od: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat: %u nowych wiadomości publicznych." + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat: Prywatna wiadomość od: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "XChat: %u wiadomości prywatnych, najnowsza z: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat: Oferta pliku od: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "XChat: %u ofert pliku, najnowsza z: %s (%s)" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Wersja" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Opis" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Wybierz Wtyczkę lub Skrypt do załadowania" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: Wtyczki i Skrypty" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "Za_ładuj..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "_Wyładuj" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Zapisz jako..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: Surowy Log (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Wyczyść surowy log" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "Okno dla którego otworzyłeś to szukanie już nie istnieje." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "Szukanie zakończone, niczego nie znaleziono." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: Szukanie" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "_Rozróżniaj wielkość liter" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "Szukaj w _tył" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "_Znajdź" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Nowa Sieć" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Czy naprawdę usunąć sieć \"%s\" i wszystkie jej serwery?" + +#: src/fe-gtk/servlistgui.c:740 +msgid "#channel" +msgstr "#pokój" + +#: src/fe-gtk/servlistgui.c:850 +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "X-Chat: Ulubione pokoje (lista auto-dołączania)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "Do tych pokoi zawsze przystąpisz gdy podłączysz się do %s." + +#: src/fe-gtk/servlistgui.c:906 +msgid "Key (Password)" +msgstr "Klucz (Hasło)" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "_Edycja" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "%s został usunięty." + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "%s został dodany." + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "Nazwa użytkownika oraz imię prawdziwe nie może być puste." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: Edycja %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Serwery %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Połącz się wyłącznie z zaznaczonym serwerem" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Nie skacz po wszystkich serwerach, gdy połączenie się nie uda." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Informacje o Tobie" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Użyj globalnych informacji o użytkowniku" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "Pseudo_nim:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Drugi wybór:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "_Użytkownik:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "Persona_lia:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Łączenie" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Połącz się automatycznie z tą siecią przy starcie" + +#: src/fe-gtk/servlistgui.c:1462 +msgid "Bypass proxy server" +msgstr "Omiń serwera pośredniczącego (proxy)" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "Używaj SSL dla wszystkich serwerów w tej sieci" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Akceptuj niepoprawne certyfikaty SSL" + +#: src/fe-gtk/servlistgui.c:1475 +msgid "_Favorite channels:" +msgstr "_Ulubione pokoje:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "Dołączone pokoje, oddzielone przecinkami, ale nie spacjami!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Polecenie po połączeniu:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Polecenie, które zostanie wykonane po nawiązaniu połączeniu z serwerem.Jeśli " +"chcesz wykonać więcej niż jedno, wpisz tutaj: LOAD -e <nazwa_pliku>, gdzie " +"<nazwa_pliku> to plik tekstowy zawierający polecenia do wykonania po " +"połączeniu." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Hasło do Nickserva:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Jeśli twój pseudonim wymaga hasła, wpisz je tutaj. Nie wszystkie sieci IRC " +"tego wspierają." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Hasło serwera:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Hasło dostępu do serwera, jeśli nie wiesz o co chodzi, zostaw puste." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Zestaw znaków:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: Lista Sieci" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Informacje o Użytkowniku" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Trzeci wybór:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Sieci" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "Pomiń listę sieci przy starcie" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "_Edycja..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "_Sortowanie" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" +"Sortuje listę sieci w porządku alfabetycznym. Użyj klawiszy SHIFT-GÓRA i " +"SHIFT-DÓŁ by przenieść rząd." + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "P_ołącz" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Wygląd Głównego Okna Czatowego" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Czcionka:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Obrazek w tle:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Przewijanie linii w tył:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Kolorowe pseudonimy" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Nadaje każdej osobie na czacie inny kolor" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Dodawaj wcięcia przez pseudonimami" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "" +"Dodawaj wcięcia przed pseudonimami aby wszystkie były wyrównane do prawej" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Przeźroczyste tło" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Pokazuj linię oddzielającą" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Dodaj czerwoną linię oddzielającą ostatnio przeczytany tekst." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Ustawienia Zabarwienia" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Czerwony:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Zielony:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Niebieski:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Znacznik Czasu" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Włącz pokazywanie znacznika czasu" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Format znacznika czasu:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Zobacz w pomocy stronę o strftime, aby dowiedzieć się więcej." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "Ostatni porządek wypowiedzi" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Pole wpisywania tekstu" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Użyj czcionki i koloru tekstu ramki" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Sprawdzanie pisowni" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Uzupełnianie Pseudonimów" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "Automatyczne uzupełnianie pseudonimów (bez klawisza TAB)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Sufiks uzupełnionego pseudonimu:" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "Sortowanie uzupełnionego pseudonimu:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Kody dla wiersza poleceń" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Pokaż %nnn jako wartość ASCII" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Pokaż %C, %B jako kolor, pogrubienie itp" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, Operatorzy na początku" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, Operatorzy na końcu" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Nieposortowane" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "Lewy (górny)" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "Lewy (niższy)" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "Prawy (Upper)" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "Prawy (Lower)" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Góra" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Dół" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Ukryty" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Lista Użytkowników" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Pokaż nazwy hostów na liście użytkowników" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Sposób sortowania listy użytkowników:" + +#: src/fe-gtk/setup.c:205 +msgid "Show user list at:" +msgstr "Pokaż listę użytkowników na:" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Śledzenie nieobecnych" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "Śledź statusu nieobecnego użytkowników i zaznacz go w innym kolorze" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "W pokojach mniejszych niż:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Akcja w przypadku podwójnego kliknięcia" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Okna" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Zakładki" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Zawsze" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Tylko żądane karty" + +#: src/fe-gtk/setup.c:242 +msgid "Tree" +msgstr "Drzewo" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "Typ przełącznika:" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Otwórz osobną zakładkę na wiadomości serwera" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Otwórz osobną zakładkę na ogłoszenia serwera" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "Otwórz nowy tab, po otrzymaniu prywatnej wiadomości" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Układaj zakładki alfabetycznie" + +#: src/fe-gtk/setup.c:254 +msgid "Smaller text" +msgstr "Mały tekst" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Nowe karty na wierzchu:" + +#: src/fe-gtk/setup.c:258 +msgid "Show channel switcher at:" +msgstr "Pokaż przełącznik pokoi na:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Skracaj etykiety zakładek do:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "liter." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Zakładki lub Okna" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Otwórz pokoje w:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Otwórz okna dialogowe w:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Otwórz narzędzia w:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Otwórz Czat Bezpośredni, Ignoruj, Powiadom itp, w kartch czy w oknach?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "Nie" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Tak" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "Szukaj za każdym razem folderu do zapisywania" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Pliki i Katalogi" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Automatycznie przyjmuj oferowane pliki:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Pobieraj pliki do:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Przenieś całkowicie pobrane pliki do:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Umieść pseudonim w nazwach plików" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Konfiguracja Sieci" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Pobierz mój adres IP z serwera czatu" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Prosi serwer czatu o Twój prawdziwy (publiczny/zewnętrzny) adres IP. Użyj " +"tej opcji jeśli Twoja sieć znajduje się za firewallem a Twój lokalny adres " +"to 192.168.*.* lub 10.*.*.*!" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "Adres IP dla Połączeń Bezpośrednich:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Zatwierdź że jesteś pod tym adresem, gdy oferujesz plików." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Pierwszy port wysyłania Czatu Bezpośredniego:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Ostatni port wysyłania Czatu Bezpośredniego:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!Pozostaw porty na zero dla pełnego zakresu." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Maksymalna prędkość przesyłania plików (bajty na sekundę)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Jedno wysyłanie pliku:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Maksymalna prędkość dla pojedynczego połączenia" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Jedno pobieranie pliku:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Wszystkie wysyłania plików jednocześnie:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Maksymalna prędkość dla wszystkich plików" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Wszystkie pobierania plików jednocześnie:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Powiadomienia" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "Pokaż balony w zasobniku przy:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "Migaj ikoną w zasobniku przy:" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "Migaj paskiem zadań przy:" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "Wykonaj sygnał dźwiękowy na:" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "Włącz ikonę w zasobniku systemowym" + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "Podświetlone wiadomości" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" +"Podświetlone wiadomości są te, gdzie mowa jest o twoim pseudonimie, ale " +"także:" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "Dodatkowe słowa które podświetlić:" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "Nie podświetlaj pseudonimów:" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "Zawsze podświetlaj pseudonimy:" + +#: src/fe-gtk/setup.c:347 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" +"Oddziel kilka słów przecinkami.\n" +"Akceptowane są maski dopasowania." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Domyślna Wiadomość" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Wyjście z czata:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Opuszczenie pokoju:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Nieobecność:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Nieobecność" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Ogłaszaj powód Twojej nieobecności" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Ogłaszaj powód Twojej nieobecności we wszystkich pokojach" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Pokaż nieobecności raz" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Pokaż identyczne powody nieobecności tylko za pierwszym razem" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Automatycznie wyłącz nieobecność" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Wyłączenie statusu nieobecności zanim wyślesz wiadomość" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Ustawienia Zaawansowane" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Opóźnienie ponowienia automatycznego połączenia:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Wyświetlaj opcje pokoju w surowej formie" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Polecenie /WHOIS w reakcji na ogłoszenie" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" +"Wysyła polecenie /WHOIS kiedy ktoś z Twojej listy powiadomień pojawia się na " +"czacie" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Nie informuj o wchodzących/wychodzących" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Domyślnie nie informuj o wchodzących/wychodzących" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Automatycznie otwieraj okna DCC" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Okno wysyłania" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Okno odbiorcze" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Okno Czatu" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Logowanie" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "Wyświetl przewijanie w tył poprzedniej sesji" + +#: src/fe-gtk/setup.c:387 +msgid "Enable logging of conversations to disk" +msgstr "Włącz zapisywanie rozmów na dysk" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Plik loga:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Serwer %c=Pokój %n=Sieć." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Dodawaj znacznik czasu w logach" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Format znacznika czasu w logu:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Wyłączone)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Wszystkie połączenia" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "Tylko Serwer IRC" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "Pobierz tylko Czat Bezpośredni" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Twój Adres" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Przypnij do:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "Tylko użyteczne komputerom z wieloma adresami IP." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Serwer Pośredniczący" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Host:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Port:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Rodzaj:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Używaj serwera pośredniczącego (proxy) dla:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Uwierzytelnianie Proxy" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Użyj uwierzytelniania (tylko MS Proxy, HTTP lub Socks5)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Użyj uwierzytelniania (tylko HTTP lub Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Użytkownik:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Hasło:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Wybierz Plik Obrazka" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "Wybierz folder pobierania" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Wybierz czcionkę" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Przeglądaj..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Zaznacz rozpoznanych użytkowników używając:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Zaznacz nieznanych użytkowników używając:" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "Otwórz folder danych" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Wybierz kolor" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Kolory tekstu" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "kolory mIRCa:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Kolory lokalne:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Pierwszy plan:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Tło:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Tekst Oznaczający" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Kolory interfejsu" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Nowe dane:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Linia znacznika:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Nowa wiadomość:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Nieobecny użytkownik:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Podświetl:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Zdarzenie" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Plik dźwiękowy" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Wybierz plik dźwiękowy" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Sposób odtwarzania dźwięku:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "Zewnętrzny odtwarzacz plików dźwiękowych:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "Z_ewnętrzyny program" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_Automatyczny" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "Katalog plików _dźwiękowych:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Plik dźwiękowy:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "_Przeglądaj..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "_Odtwórz" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Interfejs" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Okno główne" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Lista użytkowników" + +#: src/fe-gtk/setup.c:1703 +msgid "Channel switcher" +msgstr "Przełącznik Pokoi" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Kolory" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Pogawędki" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Podstawy" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Dzwięk" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Ustawienia sieci" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Transfery plików" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Kategorie" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" +"Nie można umieścić drzewa na górze lub na dole!\n" +"Proszę zmień najpierw styl <b>kart</b> w punkcie menu <b>widok</b>." + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Niektóre zmienione ustawienia wymagają ponownego uruchomienia XChata." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*OSTRZEŻENIE*\n" +"Automatyczne przyjmowanie Czatu Bezpośredniego do twojego\n" +"katalogu domowego może być niebezpieczne i jest wykorzystywane.\n" +"Np.: Ktoś mógłby ci wysłać profil .bash" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: Preferencje" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Wystąpił błąd podczas interpretacji ciągu znaków" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Sygnał otrzymuje tylko %d argumentów, $%d jest nieprawidłowa" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Drukuj plik z tekstami" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Edycja Zdarzeń" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ Liczba" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Załaduj z..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Testuj Waszystko" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "Adres URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: Przechwycone Adresy URL" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Wyczyść listę" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Kopiuj zaznaczony URL" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Kopiuj" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Zapisz adresy do pliku" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d op(ów), %d razem" + +#~ msgid "%C18*$t$1%O $2" +#~ msgstr "%C18*$t$1%O $2" + +#~ msgid "%C21*%O$t%C21%B$1%O%C21 $2" +#~ msgstr "%C21*%O$t%C21%B$1%O%C21 $2" + +#~ msgid "%C18%H<%H$4$1%H>%H%O$t$2" +#~ msgstr "%C18%B%B$4$1%O%C18%O$t$2" + +#~ msgid "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" +#~ msgstr "$4%C21%B$1%O%C21$t$2" + +#~ msgid "%C28-%C29$1/$2%C28-%O$t$3" +#~ msgstr "%C28-%C29$1/$2%C28-%O$t$3" + +#~ msgid "$1$t$2" +#~ msgstr "$1$t$2" + +#~ msgid "%C19>%O$1%C19<%O$t$2" +#~ msgstr "%C19>%O$1%C19<%O$t$2" + +#~ msgid "%C16*%O$t$1%O" +#~ msgstr "%C16*%O$t$1%O" + +#~ msgid "%C28-%C29$1%C28-%O$t$2" +#~ msgstr "%C28-%C29$1%C28-%O$t$2" + +#~ msgid "%C28*%C29$3$1%C28*$t%O$2" +#~ msgstr "%C28*%C29$3$1%C28*$t%O$2" + +#~ msgid "%C18%H<%H$3$1%H>%H%O$t$2" +#~ msgstr "%C18%B%B$3$1%O$t$2" + +#~ msgid "%C22*%O$t$1" +#~ msgstr "%C22*%O$t$1" + +#~ msgid "%C31%H<%H$4$1%H>%H%O%C30$t$2" +#~ msgstr "%C31%B%B$4$1%O%C30$t$2" + +#~ msgid "PID" +#~ msgstr "PID" + +#~ msgid "Direct client-to-client" +#~ msgstr "Połączenia Bezpośrednie" + +#~ msgid "Send File" +#~ msgstr "Wyślij Plik" + +#~ msgid "Offer Chat" +#~ msgstr "Zaproponuj Czat Bezpośredni" + +#~ msgid "Abort Chat" +#~ msgstr "Zakończ Czat Bezpośredni" + +#~ msgid "Userinfo" +#~ msgstr "Informacje o użytkowniku" + +#~ msgid "Clientinfo" +#~ msgstr "Informacje o programie" + +#~ msgid "Time" +#~ msgstr "Czas" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "Dla CzatOpera" + +#~ msgid "Kill this user" +#~ msgstr "Rozłącz tego użytkownika" + +#~ msgid "Mode" +#~ msgstr "Operator Pokoju" + +#~ msgid "Give Half-Ops" +#~ msgstr "Nadaj status Półoperatora" + +#~ msgid "Take Half-Ops" +#~ msgstr "Zabierz status Półoperatora" + +#~ msgid "Ignore" +#~ msgstr "Ignorowanie" + +#~ msgid "Ignore User" +#~ msgstr "Ignoruj użytkownika" + +#~ msgid "UnIgnore User" +#~ msgstr "Przestań ignorować użytkownika" + +#~ msgid "Info" +#~ msgstr "Informacje" + +#~ msgid "Who" +#~ msgstr "Podstawowe" + +#~ msgid "DNS Lookup" +#~ msgstr "Przeszukaj system DNS" + +#~ msgid "Trace" +#~ msgstr "Śledzenie" + +#~ msgid "External" +#~ msgstr "Zewnętrzne" + +#~ msgid "Unban" +#~ msgstr "Odbanuj" + +#~ msgid "Apply" +#~ msgstr "Zastosuj" + +#~ msgid "Refresh the list" +#~ msgstr "Odśwież listę" + +#~ msgid "Save the list" +#~ msgstr "Zapisz listę" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "Brak otwartych zakładek, zakończyć X-Chat?" + +#~ msgid "Show join/part messages" +#~ msgstr "Informuj o wchodzących/wychodzących" + +#~ msgid "Color paste" +#~ msgstr "Wklejanie kolorów" + +#~ msgid "Go to" +#~ msgstr "Idź do" + +#~ msgid "_Close Tab" +#~ msgstr "_Zamknij zakładkę" + +#~ msgid "Settings saved." +#~ msgstr "Ustawienia zapisane." + +#~ msgid "_Layout" +#~ msgstr "_Układ" + +#~ msgid "Notify List..." +#~ msgstr "Lista Powiadomień..." + +#~ msgid "_Attach Window" +#~ msgstr "_Przyczep Okno" + +#~ msgid "_Close Window" +#~ msgstr "_Zamknij Okno" + +#~ msgid "User" +#~ msgstr "Użytkownik" + +#~ msgid "Server" +#~ msgstr "Serwer" + +#~ msgid "Save rawlog" +#~ msgstr "Zapisz surowy log" + +#~ msgid "Save rawlog..." +#~ msgstr "Zapisz surowy log..." + +#~ msgid "C_hannels to join:" +#~ msgstr "Wejdź do:" + +#~ msgid "XChat: Server List" +#~ msgstr "XChat: Lista Serwerów" + +#~ msgid "Completes nick names without using the TAB key" +#~ msgstr "Uzupełnia pseudonimy bez użycia klawisza TAB" + +#~ msgid "Input Box Appearance" +#~ msgstr "Wygląd Pola do Wpisywania Tekstu" + +#~ msgid "Resizable user list" +#~ msgstr "Możliwa zmiana rozmiarów listy użytkowników" + +#~ msgid "Left" +#~ msgstr "Lewo" + +#~ msgid "Right" +#~ msgstr "Prawo" + +#~ msgid "Tabs Location" +#~ msgstr "Położenie Zakładek" + +#~ msgid "Convert spaces to underscore before sending" +#~ msgstr "Zamień spacje na podkreślenia przed wysłaniem" + +#~ msgid "(Can be a text file relative to ~/.xchat2/)." +#~ msgstr "" +#~ "(Może być plik tekstowy umieszczony relatywnie względem ~/.xchat2/)." + +#~ msgid "(Can be a text file relative to config dir)." +#~ msgstr "" +#~ "(Może być plik tekstowy umieszczony relatywnie względem katalogu " +#~ "konfiguracyjnego)." + +#~ msgid "Flash taskbar on highlighted messages" +#~ msgstr "Błyśnij na pasku zadań po nadejściu wyróżnionej wiadomości" + +#~ msgid "Beep on channel messages" +#~ msgstr "Pojedynczy dzwonek po nadejściu wiadomości w pokoju" + +#~ msgid "(See strftime manpage for details)." +#~ msgstr "(Zobacz w pomocy stronę o strftime, aby dowiedzieć się więcej)." + +#~ msgid "Execute a xchat command" +#~ msgstr "Uruchom polecenie:" + +#~ msgid "server" +#~ msgstr "serwer" + +#~ msgid "id" +#~ msgstr "id" + +#~ msgid "Get settings from xchat" +#~ msgstr "Pobierz ustawienia z XChata" + +#~ msgid "name" +#~ msgstr "nazwa" + +#~ msgid "From:" +#~ msgstr "Od:" + +#~ msgid "To:" +#~ msgstr "Do:" + +#~ msgid "Size:" +#~ msgstr "Rozmiar:" + +#~ msgid "Started:" +#~ msgstr "Początek:" + +#~ msgid "Speed limit:" +#~ msgstr "Limit prędkości:" + +#~ msgid "MIME Type" +#~ msgstr "Typ MIME" + +#~ msgid "X-Chat: File Receive List" +#~ msgstr "X-Chat: Lista Pobieranych Plików" + +#~ msgid "Open" +#~ msgstr "Otwórz" + +#~ msgid "Ack" +#~ msgstr "Odebrane" + +#~ msgid "To" +#~ msgstr "Do" + +#~ msgid "To/From" +#~ msgstr "Do/Od" + +#~ msgid "DIRECTORY" +#~ msgstr "KATALOG" + +#~ msgid "Close this tab/window" +#~ msgstr "Zamknij tą zakładkę/okno" + +#~ msgid "User List Buttons" +#~ msgstr "Przyciski pod Listą Użytkowników" + +#~ msgid "New Shell Tab..." +#~ msgstr "Nowa Zakładka z Powłoką" + +#~ msgid "_IRC" +#~ msgstr "_CHAT" + +#~ msgid "Invisible" +#~ msgstr "Niewidoczny z zewnątrz pokoju" + +#~ msgid "Receive Wallops" +#~ msgstr "Odbieraj informacje dla Operatorów" + +#~ msgid "Receive Server Notices" +#~ msgstr "Odbieraj informacje Serwera" + +#~ msgid "Auto Rejoin when Kicked" +#~ msgstr "Automatycznie wróć do pokoju po Wyproszeniu" + +#~ msgid "Never-give-up ReConnect" +#~ msgstr "Nigdy nie przestawaj wznawiać połączenia" + +#~ msgid "Auto Open Dialog Windows" +#~ msgstr "Automatycznie otwieraj okno rozmowy prywatnej" + +#~ msgid "Auto Accept Direct Chat" +#~ msgstr "Automatycznie akceptuj Czat Bezpośredni" + +#~ msgid "Reload Settings" +#~ msgstr "Przeładuj Ustawienia" + +#~ msgid "Save Settings now" +#~ msgstr "Zapisz Ustawienia teraz" + +#~ msgid "File Receive..." +#~ msgstr "Pobieranie Plików..." + +#~ msgid "File Send..." +#~ msgstr "Wysyłanie Plików..." + +#~ msgid "Close" +#~ msgstr "Zamknij" + +#~ msgid "Connect in new tab" +#~ msgstr "Połącz w nowej zakładce" + +#~ msgid "Tint (shade) transparency" +#~ msgstr "Zabarwiaj (cieniuj) przeźroczystość" + +#~ msgid "Strip mIRC colors" +#~ msgstr "Usuwaj kolory mIRCa" + +#~ msgid "Info text" +#~ msgstr "Szczegóły" + +#~ msgid "User list buttons enabled" +#~ msgstr "Włącz przyciski pod listą użytkowników" + +#~ msgid "Extra Gadgets" +#~ msgstr "Dodatkowe Gadżety" + +#~ msgid "(disabled)" +#~ msgstr "(wyłączone)" + +#~ msgid "A star (*)" +#~ msgstr "Gwiazda (*)" + +#~ msgid "A red star (*)" +#~ msgstr "Czerwona gwiazda (*)" diff --git a/xchat-2.8.8/po/pt.gmo b/xchat-2.8.8/po/pt.gmo new file mode 100644 index 0000000000000000000000000000000000000000..8e3f2b0eba1e78a65698400cd781ea41efff9865 GIT binary patch literal 80727 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�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 Hd^-7G=3)FA literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/po/pt.po b/xchat-2.8.8/po/pt.po new file mode 100644 index 0000000..83dc6e0 --- /dev/null +++ b/xchat-2.8.8/po/pt.po @@ -0,0 +1,5777 @@ +# Translation of XChat-2.6 IRC client. +# This file is put in the public domain. +# Vitor Antunes <vhda@mega.ist.utl.pt>, 2004. +# +msgid "" +msgstr "" +"Project-Id-Version: XChat 2.6.0\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2006-10-15 23:26+0100\n" +"Last-Translator: Vitor Antunes <vhda@mega.ist.utl.pt>\n" +"Language-Team: Portuguese <translation-team-pt@lists.sourceforge.net>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Portuguese\n" +"X-Poedit-Country: PORTUGAL\n" +"X-Poedit-SourceCharset: utf-8\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Não é possível criar ~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Estou ocupado" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Saindo" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* Correr o IRC como root é estúpido! Deve\n" +" criar outro utilizador e usá-lo.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "À espera" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Activo" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Falhou" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Terminado" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Ligar" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Cancelado" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "Não é possível aceder a %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Erro" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s está a oferecer \"\"%s\". Queres aceitar?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Não existem DCCs activos\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "SIM " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "NÃO " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Está a sofrer uma inundação de CTCP de %s, ignorando %s\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "" +"Está a sofrer uma inundação de MSG de %s, gui_auto_open_dialog foi " +"desligado.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s está ligado\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s não está online\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Não está em nenhum canal. Usar /join #<canal>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Não está ligado. Usar /server <endereço> [<porto>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "Preciso de /bin/sh para correr!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Comandos Disponíveis:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Comandos definidos pelo utilizador:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Comandos definidos por plugins:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Escrever /HELP <comando> para mais informações, ou /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Argumento desconhecido '%s' ignorado." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "O plugin não foi encontrado.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "O plugin recusa-se a desligar.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <nome> <acção>, adiciona um botão à lista de utilizadores" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <cmd>, envia um comando para todos os canais onde está" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHANL <cmd>, envia um comando para todos os canais onde está" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <cmd>, envia um comando para todos os servidores onde está" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<razão>], declara-o como ausente" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <máscara> [<tipo de interdição>], interdita do canal todos os " +"utilizadores correspondentes à máscara. Se o utilizador estiver no canal " +"este comando não o expulsa (necessita do estatuto operador)" + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-quiet] <variável> [<valor>]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "" +"CLEAR [ALL|HISTORY], Limpa a janela de texto actual ou histórico de comandos" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, Fecha a janela/separador actual" + +#: src/common/outbound.c:3512 +#, fuzzy +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" +"COUNTRY [-s] <código|wildcard>, procura o código de um país, ex: au = " +"australia" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <nick> <mensagem>, envia uma mensagem CTCP a nick. Mensagens comuns são " +"VERSION e USERINFO" + +#: src/common/outbound.c:3516 +#, fuzzy +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "CYCLE, sai do canal e regressa imediatamente" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <nick> - aceita um ficheiro oferecido\n" +"DCC SEND [-maxcps=#] <nick> [file] - envia um ficheiro a nick\n" +"DCC PSEND [-maxcps=#] <nick> [file] - envia um ficheiro usando o modo " +"passivo\n" +"DCC LIST - mostra a lista de DCCs\n" +"DCC CHAT <nick> - oferece uma conversa DCC a nick\n" +"DCC PCHAT <nick> - oferece uma conversa DCC usando o modo " +"passivo\n" +"DCC CLOSE <type> <nick> <file> exemplo:\n" +" /dcc close send johnsmith ficheiro.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <nick>, retira o modo semi-operador ao nick no canal actual (necessita " +"do estatuto operador)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <nome>, apaga um botão da lista de utilizador" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <nick>, retira o modo operador ao nick dado no canal actual (necessita " +"do estatuto operador)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <nick>, retira o modo voz do nick dado no canal actual (necessita do " +"estatuto operador)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, Desliga-se do servidor actual" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <nick|endereço|ip>, Descobre o número IP de um utilizador" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <texto>, Escreve na janela local o texto inserido" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <comando>, executa o comando de shell. Se a opção -o for usada o " +"resultado é enviado para o canal actual, caso contrário é escrito na janela " +"de texto actual" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, envia a um processo em execução o sinal CONT" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], pára a execução de um processo da sessão actual. Se a opção -" +"9 for usada é enviado o sinal KILL em vez do sinal TERM" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, envia a um processo em execução o sinal STOP" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, envia dados para o canal stdin do processo em execução" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, despeja a fila de dados a enviar do servidor actual" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" +"GATE <endereço> [<porto>], utiliza o proxy dado para a comunicação, o porto " +"é por defeito 23" + +#: src/common/outbound.c:3560 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" +"HOP <nick>, dá o modo semi-operador ao nick(necessita do estatuto operador)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <password>, identifica-te perante o nickserv" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <máscara> <tipos..> <opções..>\n" +" máscara - máscara a ser ignorada, ex: *!*@*.iol.pt\n" +" tipos - tipos de dados a ignorar, um ou todos de:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" opções - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <nick> [<canal>], convida alguém para o canal, por defeito o canal " +"actual (necessita do estatuto operador)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <canal>, entra no canal" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <nick>, expulsa o nick dado do canal actual (necessita do estatuto " +"operador)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <nick>, interdita e expulsa o nick dado do canal actual (necessita " +"do modo operador)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, força uma nova verificação de atraso" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <frase>, procura a frase na conversa actual" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <ficheiro>, carrega o plugin ou script" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, Retira o modo semi-operador a todos os utilizadores no canal actual " +"(necessita do modo operador)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, Retira o modo operador a todos os utilizadores no canal actual " +"(necessita do modo operador)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <acção>, envia a acção para o canal actual (as acções devem ser escritas " +"na 3a pessoa, como em '/me salta')" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, Expulsa todo os utilizadores, excepto tu, do canal actual (necessita " +"do modo operador)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, Coloca o modo operador a todos os utilizadores do canal (necessita do " +"modo operador)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <nick> <mensagem>, envia uma mensagem privada a nick" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, Lista todos os utilizadores do canal actual" + +#: src/common/outbound.c:3607 +#, fuzzy +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <nick> <message>, Envia uma nota CTCP" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <endereço> [<porto>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <nick>, muda o nick actual" + +#: src/common/outbound.c:3612 +#, fuzzy +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <nick/canal> <mensagem>, envia uma nota. Notas são um tipo de " +"mensagem que devem provocar uma reacção automática" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n network1[,network2,...]] [<nick>], mostra a lista de notificações " +"ou adiciona alguém." + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" +"OP <nick>, adiciona o modo operador a nick (necessita do modo operador)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<canal>] [<razão>], sai do canal, por defeito o canal actual" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <nick | canal>, envia um CTCP a nick ou canal" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "" +"QUERY [-nofocus] <nick>, abre uma nova janela de mensagens privadas com nick" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<razão>], desliga-se do servidor actual" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <texto>, envia o texto directamente ao servidor" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<endereço>] [<porto>] [<password>], Usado para reiniciar a " +"ligação ao dado servidor, servidor actual por defeito, ou na forma /" +"RECONNECT ALL para reiniciar a ligação de todos os servidores" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<endereço>] [<porto>] [<password>], Usado para reiniciar a " +"ligação ao dado servidor, servidor actual por defeito, ou na forma /" +"RECONNECT ALL para reiniciar a ligação de todos os servidores" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <texto>, envia o texto directamente para o xchat, como se este fosse " +"recebido pelo servidor" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <texto>, envia o texto para o objecto da janela actual" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <nick> [<ficheiro>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <endereço> <porto> <canal>, liga-se ao servidor entrando de " +"seguida no canal" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN <endereço> <porto> <canal>, liga-se ao servidor entrando de seguida " +"no canal" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <endereço> [<porto>] [<password>], liga-se ao servidor por " +"defeito no porto 6667 para ligações normais e 9999 para ligações ssl" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <endereço> [<porto>] [<password>], liga-se ao servidor por defeito ao " +"porto 6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-quiet] <variável> [<valor>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<posição>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<tópico>], muda o tópico do canal actual, ou mostra o tópico actual" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "" +"UNBAN <máscara> [<máscara>...]>, reautoriza o acesso ao canal aos " +"utilizadores que correspondem à/às máscara/s (necessita modo operador) " + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <máscara> [QUIET], deixa de ignorar a máscara dada" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <nome>, desliga o plugin ou script" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, abre o URL no teu browser" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <nick1> <nick2> etc, sublinha o(s) nick(s) na lista de " +"utilizadores do canal" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <nick>, coloca o modo voz a nick (necessita do modo operador)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "" +"WALLCHAN <mensagem>, escreve uma mensagem em todos os canais em que estás" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <mensagem>, envia uma mensagem a todos os utilizadores com modo " +"operador no canal actual" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Utilização: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"Não existe ajuda para esse comando.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Comando inexistente.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Opções incorrectas para comando de utilizador.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Excessiva recursividade de comandos de utilizador, cancelando." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Comando desconhecido. Tente /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "" +"Não existe o símbolo xchat_plugin_init; será mesmo um plugin para o xchat?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Tem a certeza que este servidor e/ou porto suportam SSL?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Não foi possível resolver o endereço %s\n" +"Verifique as configurações de IP!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Transferência pelo proxy falhou.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "A alternar para o servidor seguinte em %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Aviso: o carácter \"%s\" é desconhecido. Não vai ser aplicada conversão à " +"rede %s." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 adicionado à lista de notificações." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Lista de Interditos:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tNão pode entrar%C26 %B$1 %O(Está interdito)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 agora chama-se $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 interditou $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tCanal $1 criado em $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O retirou o estatuto semi-operador de%C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O retirou o estatuto de operador de%C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O retirou voz de%C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 torna isento $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O coloca o modo de semi-operador a%C26 $2" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 oferece convite a $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UCanal Utilizadores Topico" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 coloca o modo $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Channel $1 modos: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O coloca o modo de operador a%C26 $2" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 retira isenção a $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 retira convite a $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 retira a palavra-chave do canal" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 retira o limite de utilizadores" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 coloca a palavra-chave do canal para $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 limite o canal a $2 utilizadores" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 retira a interdição a $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O oferece voz a%C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Ligado. A iniciar sessão..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22A ligar a $1 ($2) porto $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21Ligação falhou. Erro: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tRecebeu um CTCP $1 de $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tRecebeu um CTCP $1 de $2 (to $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +#, fuzzy +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tRecebeu um CTCP Sound $1 de $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tRecebeu um Som CTCP $1 de $2 (para $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tConversa DCC com %C26$1%O cancelada." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$tConversa DCC estabelecida com %C26$1 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tConversa DCC com %C26$1%O perdida ($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tRecebeu uma conversa DCC de $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tOferecendo conversa DCC a $1" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tConversa DCC já oferecida a $1" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "" + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tRecebeu '$1%O' de $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 Tipo De/Para Estado Tamanho Pos Ficheiro " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O.%010%C22*%O" +"$tContents of packet: $2" +msgstr "" +"%C22*%O$tRecebeu um pedido DCC inválido de %C26$1%O.%010%C22*%O$tConteúdo do " +"pacote: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tA oferecer%C26 $1%O a%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tOferta DCC inexistente." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV%C26 $2%O a%C26 $1%O cancelado." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC RECV%C26 $1%O de%C26 $3%O completo %C30[%C26$4%O cps%C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC RECV ligação estabelecida com%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV%C26 $1%O de%C26 $3%O falhou ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV: Não foi possível abrir $1 para escrita ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "%C22*%O$tO ficheiro%C26 $1%C já existe, a gravar como%C26 $2%O" + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Opediu para continuar%C26 $2 %Cde%C26 $3%C." + +#: src/common/textevents.h:177 +#, fuzzy +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC SEND%C26 $2%O para%C26 $1%O cancelado." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC SEND%C26 $1%O para%C26 $2%O completo %C30[%C26$3%O cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC SEND ligação estabelecida com%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND%C26 $1%O para%C26 $2%O falhou. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Oofereceu%C26 $2 %O(%C26$3 %Obytes)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Opara%C26 $3 %Cparado - a cancelar." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Oesgotou o tempo - a cancelar" + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 removido da lista de notificações." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tDesligou ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tO seu IP foi encontrado: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O adicionado à lista de ignorados." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "Entrada %C26$1%O da lista de ignorados foi alterada." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "" + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O retirado da lista de ignorados." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " Lista de ignorados vazia." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "" +"%C22*%O$tNão pode entrar em %C26 %B$1 %O(Canal exclusivo a convidados)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tFoi convidado para%C26 $1%O por%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) entrou em $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$tNão pode entrar em%C26 %B$1 %O(Palavra-chave necessária)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 expulsou $2 de $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$tFoi morto por $1 ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD Ignorado." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 já está a ser usado. A tentar com $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "%C22*%O$tNick já em utlização. Use /NICK para tentar outro." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tDCC inexistente." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tNão está nenhum processo a correr" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tLista de notificações vazia." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Lista de Notificações " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 utilizadores na lista de notificações." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tNotificação: $1 está desligado ($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tNotificação: $1 está ligado ($3)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) saiu de $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) saiu de $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tResposta Ping de $1: $2 segundo(s)" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tSem resposta ping durante $1 segundos, a desligar." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tUm processo já está a correr" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 saiu (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 activa modos%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tÀ procura do IP de%C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22Ligado." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22A procurar $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tTentativa anterior de ligação terminada (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29Tópico para $1%C %C29é: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 mudou o tópico para: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29Tópico para $1%C %C29colocado por $2%C %C29a $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tEndereço desconhecido. Enganou-se no endereço?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "" +"%C22*%O$tNão pode entrar em%C26 %B$1 %O(Limite de utilizadores atingido)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Utilizadores em $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cestá ausente %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OFim da lista WHOIS." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O inactivo%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O inactivo%C26 $2%O, ligou-se:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19A conversar em $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tFoste expulso de $2 por $3 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tSaíste do canal $3" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tSaíste do canal $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tConvidaste%C26 $1%O para%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tAgora chama-se $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** REGISTO TERMINADO EM %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** REGISTO INICIADO EM %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Não posso abrir ficheiro(s) de registo para escrita. Verifique\n" +" as permissões de %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Mensagem da esquerda" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Mensagem da direita" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "O nick do utilizador que entra" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "O canal em que vai entrar" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "O endereço do utilizador" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Nick" + +#: src/common/text.c:973 +msgid "The action" +msgstr "A acção" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Modo carácter" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Texto identificado" + +#: src/common/text.c:980 +msgid "The text" +msgstr "O texto" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "A mensagem" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Nick antigo" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Novo nick" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Nick do utilizador que mudou o tópico" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Tópico" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Canal" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "O nick de quem expulsou" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "O utilizador a ser expulso" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "O canal" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "A razão" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "O nick do utilizador a sair" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "A hora" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "O criador" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Nick" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Razão" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Host" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "De quem é" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "A hora no formato x.x (ver em baixo)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "O canal para onde vai" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "O som" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "O nick do utilizador" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "O evento CTCP" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "O nick do utilizador que colocou a chave" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "A chave" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "O nick da pessoa que colocou o limite" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "O limite" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "O nick do utilizador que deu o modo operador" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "O nick do utilizador que recebeu o modo operador" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "O nick do utilizador que recebeu o modo semi-operador" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "O nick do utilizador que deu o modo semi-operador" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "O nick do utilizador que deu o modo voz" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "O nick do utilizador que recebeu o modo voz" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "O nick do utilizador que interditou" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "A máscara de interdição" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "O nick do utilizador que retirou a chave" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "O nick do utilizador que retirou o limite" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "O nick do utilizador que retirou o modo operador" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "O nick do utilizador a quem foi retirado o modo operador" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "O nick do utilizador que retirou o modo semi-operador" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "O nick do utilizador a quem foi retirado o modo semi-operador" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "O nick do utilizador que retirou o modo voz" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "O nick do utilizador a quem foi retirado o modo voz" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "O nick do utilizador que retirou a interdição" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "O nick do utilizador que criou a isenção" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "A máscara da isenção" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "O nick do utilizador que retirou a isenção" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "O nick do utilizador que efectuou o convite" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "A máscara do convite" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "O nick do utilizador que retirou o convite" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "O nick do utilizador que colocou o modo" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "O sinal do modo (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "A letra do modo" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "O canal em que está a ser colocado" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Nome de utilizador" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Nome completo" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Nível no Canal/\"é um operador de IRC\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Informação do servidor" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Tempo inactivo" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Hora de ligação" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Razão da ausência" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Mensagem" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Conta" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "utilizador@endereço real" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "IP real" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Nome do canal" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Texto" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Nome do servidor" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Nick do utilizador que o convidou" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Utilizadores" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Nick em uso" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Nick a ser tentado" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Porto" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Rede" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Frase de modos" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "Endereço IP" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "Tipo de DCC" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Nome do ficheiro" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Nome do ficheiro de destino" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Nome de directoria" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Posição" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Tamanho" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "Frase de DCC" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Número de notificações" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Nome antigo do ficheiro" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Novo nome do ficheiro" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Receptor" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Máscara de Endereço" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Endereço" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "O pacote" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Segundos" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Nick do utilizador que foi convidado" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Máscara de Interdição" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Quem interditou" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Hora da interdição" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Erro no processamento do evento %s.\n" +"A carregar predefinição" + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"Não foi possível ler ficheiro de som:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "Cliente remoto desligou" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Ligação recusada" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Não existe caminho para o endereço" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Ligação excedeu o tempo limite" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Não é possível atribuir o endereço" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Ligação terminada no destino" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Emirados Árabes Unidos" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Afeganistão" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Antígua e Barbuda" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Anguila" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Albânia" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Arménia" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Antilhas Neerlandesas" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:858 +#, fuzzy +msgid "Antarctica" +msgstr "Antárctica" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Argentina" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "DNS Inverso" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Samoa Americana" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Áustria" + +#: src/common/util.c:863 +#, fuzzy +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Austrália" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Azerbaijão" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Bósnia e Herzegovina" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Bangladeche" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Bélgica" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Burquina Faso" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Bulgária" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Barém" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Negócios" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Benim" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Bermudas" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Brunei" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Bolívia" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Brasil" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Baamas" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Butão" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Ilha Bouvet" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Botsuana" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Bielorrússia" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Canadá" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Ilhas Cocos" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "República Democrática do Congo" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "República Centro-Africana" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Congo" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Suiça" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Costa do Marfim" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Ilhas Cook" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Chile" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Camarões" + +#: src/common/util.c:898 +msgid "China" +msgstr "China" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Colômbia" + +#: src/common/util.c:900 +#, fuzzy +msgid "Internic Commercial" +msgstr "Comercial da InterNIC" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Sérvia e Montenegro" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Cuba" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Cabo Verde" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Ilha Christmas" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Chipre" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "República Checa" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Alemanha" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Jibuti" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Dinamarca" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Domínica" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "República Dominicana" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Algéria" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Equador" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Instituição Educacional" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Estónia" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Egipto" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Sahara Oeste" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Eritreia" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Espanha" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Etiópia" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "União Europeia" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Filândia" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Fiji" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Ilhas Falkland" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Micronésia" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Faroé" + +#: src/common/util.c:928 +msgid "France" +msgstr "França" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Gabão" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Grã Bretanha" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Granada" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Geórgia" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Guiana Francesa" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Ilhas do Canal Inglês" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Gana" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Gronelândia" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Gâmbia" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Guiné" + +#: src/common/util.c:940 +#, fuzzy +msgid "Government" +msgstr "Governo" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Guadalupe" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Guiné Equatorial" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Grécia" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Ilhas Geórgia do Sul e Sandwich do Sul" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Guiné-Bissau" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Guiana" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Ilhas Heard e McDonald" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Croácia" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Hungria" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Indonésia" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Irlanda" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Israel" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "" + +#: src/common/util.c:959 +msgid "India" +msgstr "Índia" + +#: src/common/util.c:960 +#, fuzzy +msgid "Informational" +msgstr "Informativo" + +#: src/common/util.c:961 +msgid "International" +msgstr "Internacional" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Território Britânico do Oceano Índico" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Iraque" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Irão" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Islândia" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Itália" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Jamaica" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Jordânia" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Japão" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Quénia" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Quirguizistão" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Camboja" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Quiribati" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Comores" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "São Cristóvão e Nevis" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Coreia do Norte" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Coreia do Sul" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Koweit" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Ilhas Caimão" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Cazaquistão" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Líbano" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Santa Lúcia" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Listenstaine" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Sri Lanca" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Libéria" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Lesoto" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Lituânia" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Luxemburgo" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Letónia" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Líbia" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Marrocos" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Mónaco" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Moldávia" + +#: src/common/util.c:996 +#, fuzzy +msgid "United States Medical" +msgstr "Organização Médica dos Estados Unidos" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Madagáscar" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Ilhas Marshall" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Militar" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Antiga República Jugoslava da Macedónia" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Mianmar" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Mongólia" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Macau" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Marianas do Norte" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Martinica" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Mauritânia" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Monserrate" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Maurícia" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Maldivas" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Malavi" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "México" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Malásia" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Moçambique" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Namíbia" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Nova Caledónia" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Níger" + +#: src/common/util.c:1019 +#, fuzzy +msgid "Internic Network" +msgstr "Rede da InterNIC" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Ilha Norfolk" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Nigéira" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Nicarágua" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Países Baixos" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Noruega" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Nova Zelândia" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Omã" + +#: src/common/util.c:1030 +#, fuzzy +msgid "Internic Non-Profit Organization" +msgstr "Organização Não-Lucrativa da InterNIC" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Panamá" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Perú" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Polinésia Francesa" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Papuásia-Nova Guiné" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Filipinas" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Paquistão" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Polónia" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "São Pedro e Miquelon" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Porto Rico" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Território Palestiano" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Portugal" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Paraguai" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Catar" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Reunião" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Roménia" + +#: src/common/util.c:1048 +#, fuzzy +msgid "Old School ARPAnet" +msgstr "Antiga ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Rússia" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Ruanda" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Arábia Saudita" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Ilhas Salomão" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Seicheles" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Sudão" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Suécia" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Singapura" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "Santa Helena" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Eslovénia" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard e Jan Mayen" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Eslováquia" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Serra Leoa" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "São Marino" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Sumália" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Suriname" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "São Tomé e Príncipe" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Antiga USSR" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "Salvador" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Síria" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Suazilândia" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Ilhas Turcas e Caicos" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Chade" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Territórios Austrais Franceses" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Tailândia" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Tajiquistão" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Timor Leste" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Turquemenistão" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Tunísia" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Turquia" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Trindade e Tobago" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Tanzânia" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Ucrânia" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Reino Unido" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "Estados Unidos da América" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Uruguai" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Usbequistão" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Santa Sé" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "São Vicente e Granadinas" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Ilhas Virgens Britânicas" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "Ilhas Virgens Americanas" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Vietname" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Wallis e Futuna" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Iémen" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Jugoslávia" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "África do Sul" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Zâmbia" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Zimbabué" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Desconhecida" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "Abrir Janela de Diálogo" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "Enviar um Ficheiro" + +#: src/common/xchat.c:728 +#, fuzzy +msgid "_User Info (WhoIs)" +msgstr "Informação do Utilizador (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +#, fuzzy +msgid "O_perator Actions" +msgstr "Acções de Operador" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Dar Ops" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Retirar Ops" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Dar Voz" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Retirar Voz" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Expulsar/Interditar" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Expulsar" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Interditar" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "ExpulsarInterditar" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Sair do canal" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Entrar num canal..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Introduzir canal onde entrar:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Endereços de Servidor" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Ping ao Servidor" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Esconder versão" + +#: src/common/xchat.c:772 +#, fuzzy +msgid "Op" +msgstr "Op" + +#: src/common/xchat.c:773 +#, fuzzy +msgid "DeOp" +msgstr "DeOp" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "adeus" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Introduzir razão da expulsão de %s:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Enviar Ficheiro" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Diálogo" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Enviar" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Conversa" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Limpar" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "_Sobre" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Cliente de IRC multiplataforma" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Tabela de Caracteres" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "Não está ligado" + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Tem de seleccionar algumas interdições." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "Tens a certeza que queres retirar todas as interdições de %s?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Máscara" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "De" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Data" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: Lista de Interditos (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Remover" + +#: src/fe-gtk/banlist.c:409 +#, fuzzy +msgid "Crop" +msgstr "Cortar" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Actualizar" + +#: src/fe-gtk/chanlist.c:111 +#, fuzzy, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Estatísticas do canal e utilizador: %d/%d utilizadores em %d/%d canais" + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Seleccionar o ficheiro de saída" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +#, fuzzy +msgid "_Join Channel" +msgstr "Entrar no Canal" + +#: src/fe-gtk/chanlist.c:633 +#, fuzzy +msgid "_Copy Channel Name" +msgstr "Nome do canal" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: Lista de Canais (%s)" + +#: src/fe-gtk/chanlist.c:781 +#, fuzzy +msgid "_Search" +msgstr "XChat: Procurar" + +#: src/fe-gtk/chanlist.c:787 +#, fuzzy +msgid "_Download List" +msgstr "Receber ficheiros para:" + +#: src/fe-gtk/chanlist.c:793 +#, fuzzy +msgid "Save _List..." +msgstr "Lista de Interditos..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "" + +#: src/fe-gtk/chanlist.c:818 +#, fuzzy +msgid "channels with" +msgstr "Abrir canais em:" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:843 +#, fuzzy +msgid "users." +msgstr "Utilizadores" + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:861 +#, fuzzy +msgid "Channel name" +msgstr "Nome do canal" + +#: src/fe-gtk/chanlist.c:882 +#, fuzzy +msgid "Search type:" +msgstr "_Procurar Texto..." + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Procurar:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Enviar ficheiro para %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Não é possível continuar este ficheiro." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"Impossível aceder ao ficheiro: %s\n" +"%s.\n" +"Não é possível continuar." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"Ficheiro da directoria de recepção é maior que o ficheiro oferecida. " +"Impossível continuar." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "Não pode continuar o mesmo ficheiro de duas pessoas." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Estado" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Ficheiro" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Ambos" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Detalhes" + +#: src/fe-gtk/dccgui.c:820 +#, fuzzy +msgid "File:" +msgstr "Ficheiro" + +#: src/fe-gtk/dccgui.c:821 +#, fuzzy +msgid "Address:" +msgstr "Endereço" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Cancelar" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Aceitar" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Continuar" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Abrir Pasta..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: Lista de Conversas DCC" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Recebido" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Enviado" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "Hora de Ínicio" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*NOVO*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "EDITAR-ME" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Nome" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Comando" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Para Cima" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Para Baixo" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Cancelar" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Gravar" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Adicionar" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Apagar" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Ordenar" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Ajuda" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "Não ligar automaticamente aos servidores" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "Usa outra directoria de configuração" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "Não carregar automaticamente nenhum plugin" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "Mostrar directoria de plugins carregados automaticamente" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "Mostrar directoria de configuração do utilizador" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Abrir um URL irc://servidor:porto/canal" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Executar comando:" + +#: src/fe-gtk/fe-gtk.c:132 +#, fuzzy +msgid "Open URL or execute command in an existing XChat" +msgstr "Abrir URL no XChat existente" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +#, fuzzy +msgid "level" +msgstr "Nunca" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Mostrar informação de versão" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"Não foi possível abrir a fonte:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +#, fuzzy +msgid "Search buffer is empty.\n" +msgstr "Memória de procura vazia.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d bytes" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Fila de envio da rede: %d bytes" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"A acção Executar Comando executa os dados em Dados 1 como se estes tivessem " +"sido escritos na janela de entrada onde você pressionou a sequência de " +"teclas. Assim, pode conter texto (que irá ser enviado para o canal/" +"utilizador), comandos ou comandos do utilizador. Quando executa todos os " +"caracteres \\n de Dados 1 são utilizados para separar comandos para que seja " +"possível executar mais que um comando. Se quiser um \\ no comando então " +"introduza \\\\" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"O comando Alterar Página alterna entre as páginas do bloco de notas. Defina " +"Dados 1 como a página para que quer trocar. Se Dados 2 estiver definido para " +"algo então a troca será relativa à posição actual" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"O comando Inserir no Buffer introduz o conteúdo de Dados 1 na posição actual " +"do cursor da entrada onde a sequência de teclas foi pressionada" + +#: src/fe-gtk/fkeys.c:165 +#, fuzzy +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"O comando Mover Página sobe e desce uma página ou linha de texto na janela. " +"Definir Dados 1 como Up (subir), Down (descer), +1 ou -1." + +#: src/fe-gtk/fkeys.c:167 +#, fuzzy +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"O comando Definir Entrada coloca o conteúdo de Dados 1 na entrada onde a " +"sequência de teclas foi pressionada" + +#: src/fe-gtk/fkeys.c:169 +#, fuzzy +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"O comando Último Comando coloca na entrada o último comando inserido - o " +"mesmo que acontece ao carregar na seta para cima na shell" + +#: src/fe-gtk/fkeys.c:171 +#, fuzzy +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"O comando Próximo Comando coloca na entrada o último comando inserido - o " +"mesmo que acontece ao carregar na seta para baixo na shell" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Este comando altera o texto na entrada para completar um nick ou comando " +"incompleto. Se Dados 1 está definido então ao carregar duas vezes na tecla " +"TAB numa palavra irá seleccionar o último nick e não o próximo" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Este comando percorre a lista de nicks. Se Dados 1 está definido então a " +"lista é percorrido para cima, caso contrário é percorrida para baixo" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Este comando verifica a última palavra introduzida na entrada contra a lista " +"de substituições e substitui-a se encontrar uma" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Este comando move o separador actual uma posição para a esquerda" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Este comando move o separador actual uma posição para a direita" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "" +"Este comando move a família de separadores actual uma posição para a esquerda" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "" +"Este comando move a família de separadores actual uma posição para a direita" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "" +"Coloca a linha de entrada para o historial mas não a envia para o servidor" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "Erro durante o carregamento da configuração de atalhos de teclas" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<nenhum>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Mod" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Chave" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Acção" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: Atalhos de Teclado" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Dado 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Dado 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Erro na abertura do ficheiro de configuração de associações\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Tecla %s desconhecida no ficheiro de configuração de atalhos\n" +"Abertura cancelada, corrigir %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Acção %s desconhecida no ficheiro de configuração de atalhos\n" +"Abertura cancelada, corrigir %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Esperava-se a linha (começando Dx{:|!}) mas recebeu-se:\n" +"%s\n" +"\n" +"Abertura cancelada, corrigir %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"Ficheiro de configuração de atalhos está corrompido,\n" +"abertura cancelada.\n" +"Por favor corrija %s/keybindings.conf\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "Não foi possível gravar ficheiro." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Não foi possível ler ficheiro." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "A máscara já existe." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Privado" + +#: src/fe-gtk/ignoregui.c:176 +#, fuzzy +msgid "Notice" +msgstr "Nota" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Convite" + +#: src/fe-gtk/ignoregui.c:180 +#, fuzzy +msgid "Unignore" +msgstr "Designorar" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Introduzir máscara a ignorar:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: Lista de Ignorados" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Estado:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Canal:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privado:" + +#: src/fe-gtk/ignoregui.c:370 +#, fuzzy +msgid "Notice:" +msgstr "Nota:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Convite:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "Adicionar..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "Nome do canal é demasiado pequeno, tenta outra vez." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: Ligação Completa" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "Ligação a %s concluída." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "Que queres fazer a seguir?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "_Nada, entro num canal mais tarde." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "_Entrar neste canal:" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Se sabes o nome do canal onde queres entrar, escreve-o aqui." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "_Abrir a Lista de Canais." + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "Obter a Lista de Canais" + +#: src/fe-gtk/joind.c:212 +#, fuzzy +msgid "_Always show this dialog after connecting." +msgstr "Mostrar _sempre este diálogo depois de ligar." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Diálogo com" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Tópico para %s é: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Nenhum tópico introduzido" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"Este servidor ainda tem %d canais ou diálogos associados. Fechá-los todos?" + +#: src/fe-gtk/maingui.c:1283 +#, fuzzy +msgid "Quit XChat?" +msgstr "Sobre XChat" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1310 +#, fuzzy, c-format +msgid "You are connected to %i IRC networks." +msgstr "Ligar automaticamente ao início" + +#: src/fe-gtk/maingui.c:1312 +#, fuzzy +msgid "Are you sure you want to quit?" +msgstr "Tens a certeza que queres retirar todas as interdições de %s?" + +#: src/fe-gtk/maingui.c:1314 +#, fuzzy +msgid "Some file transfers are still active." +msgstr "Transferências de ficheiros ainda activas, sair do xchat?" + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Inserir Código de Atributo ou Côr" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Negrito</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Sublinhado</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Normal" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Cores 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Cores 8-15" + +#: src/fe-gtk/maingui.c:1612 +#, fuzzy +msgid "_Settings" +msgstr "_Configurações" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "Esconder mensagens de entrada e saída de canal" + +#: src/fe-gtk/maingui.c:1625 +#, fuzzy +msgid "_Extra Alerts" +msgstr "Alertas" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "Apitar em mensagens" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +#, fuzzy +msgid "_Detach" +msgstr "_Separar Separador" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "_Fechar" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "Limite de utilizadores deve de ser um número!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Protecção do Tópico" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Não recebe mensagens exteriores" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Secreto" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Convite Apenas" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Moderado" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Lista de Interdições" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Palavra Chave" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Limite de Utilizadores" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Mostrar/Esconder lista de utilizadores" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"Não foi possível definir o fundo transparente!\n" +"\n" +"Você pode estar a utilizar um controlador de\n" +"janelas que actualmente não é suportado.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Introduzir novo nick:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Host desconhecido" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Nome Real:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Utilizador" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "País:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Servidor:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "%u minutos atrás" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Última Msg:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Msg Ausência:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"A barra de menu está escondida. Para a ligar novamente pressiona F9 ou " +"carrega no botão direito do rato numa área livre da janela principal." + +#: src/fe-gtk/menu.c:944 +#, fuzzy +msgid "Open Link in Browser" +msgstr "Abrir Link em Browser" + +#: src/fe-gtk/menu.c:945 +#, fuzzy +msgid "Copy Selected Link" +msgstr "Copiar Link Seleccionado" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Entrar no Canal" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Sair do Canal" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Alternar entre Canais" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: Menu de utilizador" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Editar este menu..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Pedir lista de canais..." + +#: src/fe-gtk/menu.c:1348 +#, fuzzy +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Comandos de Utilizador - Códigos especiais:\n" +"\n" +"%c = canal actual\n" +"%m = informação da máquina\n" +"%n = o teu nick\n" +"%t = hora/data\n" +"%v = versão do xchat\n" +"%2 = palavra 2\n" +"%3 = palavra 3\n" +"&2 = palavra 2 até ao fim da linha\n" +"&3 = palavra 3 até ao fim da linha\n" +"\n" +"ex:\n" +"/cmd john olá\n" +"\n" +"%2 seria \"john\"\n" +"&2 seria \"john olá\"." + +#: src/fe-gtk/menu.c:1364 +#, fuzzy +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Botões da Lista de Utilizadores - Códigos especiais:\n" +"\n" +"%a = todos os nicks seleccionados\n" +"%c = canal actual\n" +"%h = endereço do nick seleccionado\n" +"%m = informação da máquina\n" +"%n = o teu nick\n" +"%s = nick seleccionado\n" +"%t = hora/data\n" + +#: src/fe-gtk/menu.c:1374 +#, fuzzy +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Botões de Diálogo - Códigos especiais:\n" +"\n" +"%a = todos os nicks seleccionados\n" +"%c = canal actual\n" +"%h = endereço do nick seleccionado\n" +"%m = informação da máquina\n" +"%n = o teu nick\n" +"%s = nick seleccionado\n" +"%t = hora/data\n" + +#: src/fe-gtk/menu.c:1384 +#, fuzzy +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"Respostas CTCP - Códigos especiais:\n" +"\n" +"%d = dados (todo o ctcp)\n" +"%m = informação da máquina\n" +"%s = nick de quem mandou o ctcp\n" +"%t = hora/data\n" +"%2 = palavra 2\n" +"%3 = palavra 3\n" +"&2 = palavra 2 até ao fim da linha\n" +"&3 = palavra 3 até ao fim da linha\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"URL Handlers - Códigos especiais:\n" +"\n" +"%s = frase do URL\n" +"\n" +"Colocando um ! à frente do comando\n" +"indica que deverá ser enviado para uma\n" +"shell em vez do XChat" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: Comandos Definidos pelo Utilizador" + +#: src/fe-gtk/menu.c:1411 +#, fuzzy +msgid "XChat: Userlist Popup menu" +msgstr "XChat: Menu popup da lista de utilizadores" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Subsituir por" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: Substituir" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: Gestor de URL" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: Botões da Lista de Utilizadores" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: Botões de Diálogo" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: Respostas CTCP" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "Li_sta de Redes..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "_Novo" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Separador de Servidor..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Separador de Canal..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Janela de Servidor..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Janela de Canal..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "_Carregar Plugin ou Script..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "_Ver" + +#: src/fe-gtk/menu.c:1591 +#, fuzzy +msgid "_Menu Bar" +msgstr "Barra de _Menu" + +#: src/fe-gtk/menu.c:1592 +#, fuzzy +msgid "_Topic Bar" +msgstr "Barra de _Tópico" + +#: src/fe-gtk/menu.c:1593 +#, fuzzy +msgid "_User List" +msgstr "Lista de Utilizadores" + +#: src/fe-gtk/menu.c:1594 +#, fuzzy +msgid "U_serlist Buttons" +msgstr "Botões da Lista de _Utilizadores" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "Botões de M_odo" + +#: src/fe-gtk/menu.c:1597 +#, fuzzy +msgid "_Channel Switcher" +msgstr "Lista de Canais..." + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "_Separadores" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "Á_rvore" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "Medidores de _Rede" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Desligado" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Imagem" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "_Servidor" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "_Desligar" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "Entrar num canal..." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "Entrar num canal..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Marcado como Ausente" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "Menu de _Utilizador" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "_Configurações" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "_Preferências" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Avançadas" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Substituições Automaticas..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "Respostas CTCP..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Botões de Diálogo..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Atalhos do teclado..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Eventos de Texto..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "Gestores de URL..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Comandos de Utilizador..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Botões da Lista de Utilizadores..." + +#: src/fe-gtk/menu.c:1633 +#, fuzzy +msgid "Userlist Popup..." +msgstr "Popup da Lista de Utilizadores..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_Janela" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Lista de Interditos..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Tabela de Caracteres..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Conversas DCC..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Transferências de Ficheiros..." + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "Lista de Interditos..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Lista de Ignorados..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Plugins e Scripts..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Registo Não Processado..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "Obter URL..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Limpar Linha de Marcador" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "_Limpar Texto" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "_Procurar Texto..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Gravar Texto..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_Ajuda" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "_Conteúdos" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "_Sobre" + +#: src/fe-gtk/menu.c:2147 +msgid "_Attach" +msgstr "" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Quando foi visto" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Desligado" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Nunca" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, fuzzy, c-format +msgid "%d minutes ago" +msgstr "%u minutos atrás" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Ligado" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Introduzir nick a adicionar:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "XChat: Lista de Ficheiros Enviados" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "Abrir Diálogo" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:591 +#, fuzzy +msgid "_Hide" +msgstr "Escondido" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +#, fuzzy +msgid "Channel Message" +msgstr "Nome do canal" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +#, fuzzy +msgid "Private Message" +msgstr "Apitar em mensagens privadas" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +#, fuzzy +msgid "Highlighted Message" +msgstr "Apitar em mensagens sublinhadas" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "Ausente" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Versão" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Descrição" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Seleccionar um Plugin ou Script para carregar" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: Plugins e Scripts" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "_Carregar..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "_Terminar" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "" + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: Registo não processado (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Limpar registo não processado" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "A janela para a qual abriu esta Procura já não existe." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "" + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: Procurar" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "_Procurar" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Nova Rede" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Quer mesmo remover a rede \"%s\" e todos os seus servidores?" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "Canal" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: Lista de Canais (%s)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "Password:" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "_Editar" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "Nome de Utilizador e Real não podem ser deixados vazios." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: Editar %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Servidores para %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Ligar apenas ao servidor seleccionado" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Não testar todos os servidores quando a ligação falha." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Seus Detalhes" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Usar informação global do utilizador" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "_Nick:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Segunda escolha:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "Nome de _Utilizador" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "Nome _Verdadeiro:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Ligar" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Ligar automaticamente ao início" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "Utilizar um servidor proxy" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "Utilizar SSL para todos os servidores desta rede" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Aceitar certificados SSL inválidos" + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "Sair do canal:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "Canais onde entrar, separados por vírgulas e não espaços!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Comando de ligação:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Comandos extra a executar após a ligação. Se necessitar de mais de um " +"introduza LOAD -e <ficheiro>, onde <ficheiro> é um ficheiro texto com uma " +"lista de comandos a executar." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Password do nickserv:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Se o nick necessita de palavra chave, introduzi-la aqui. Não suportado por " +"todas as redes de IRC." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Password do servidor:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Palavra-chave para o servidor. Em caso de dúvida deixe em branco." + +#: src/fe-gtk/servlistgui.c:1496 +#, fuzzy +msgid "Character set:" +msgstr "Caracteres:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: Lista de Redes" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Informação do Utilizador" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Terceira escolha:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Redes" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "Não mostrar lista de redes no arranque" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "_Editar..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "_Ordenar" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "_Ligar" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Aparência da Caixa de Texto" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Fonte:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Imagem de fundo:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Nicks coloridos" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Dar a cada pessoa no IRC uma cor diferente" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Indentar nicks" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Justificar nicks à direita." + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Fundo transparente" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Mostrar linha de marcação" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Inserir linha vermelha após último texto lido." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Configurações de Transparência" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Vermelho:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Verde:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Azul:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Horas" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Introduzir horas nas conversas" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Formato de hora" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Ver a manpage de strftime para detalhes." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "Último utilizado" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Caixa de entrada" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Utilizar as fontes e cores da caixa de texto" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Completar Nick" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "Completar nick automaticamente (sem usar a tecla TAB)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Sufixo para completar nick:" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "Ordem com quem o nick é completo" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Códigos da Caixa de Escrita" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Interpretar %nnn como um código ASCII" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Interpretar %C, %B como Cor, Bold, etc" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, OPs primeiro" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, OPs no fim" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Desordenado" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Cima" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Baixo" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Escondido" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Lista de Utilizadores" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Mostrar endereço na lista de utilizadores" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Lista de utilizadores ordenada por:" + +#: src/fe-gtk/setup.c:205 +#, fuzzy +msgid "Show user list at:" +msgstr "Mostrar/Esconder lista de utilizadores" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Controlo da ausência" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "Observar o estado de ausente dos utilizadores e colori-los" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "Em canais menores que:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Acção de Clique Duplo" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Janelas" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Separadores" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Sempre" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Apenas separadores pedidos" + +#: src/fe-gtk/setup.c:242 +#, fuzzy +msgid "Tree" +msgstr "Á_rvore" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Abrir separador para mensagens do servidor" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Abrir separador para mensagens do servidor" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Ordenar separadores por ordem alfabética" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "Separadores pequenos" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Focar separadores novos:" + +#: src/fe-gtk/setup.c:258 +#, fuzzy +msgid "Show channel switcher at:" +msgstr "Em canais menores que:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Diminuir nome dos separadores para:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "letras." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Separadores ou Janelas" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Abrir canais em:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Abrir diálogos em:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Abrir utilitários em:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Abrir DCC, Ignorados, Notificações, etc, em separadores ou janelas?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "Não" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Sim" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "Escolher sempre pasta de gravação" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Ficheiros e Directorias" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Aceitar automaticamente ficheiros:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Receber ficheiros para:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Mover ficheiros completos para:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Gravar nick no nome do ficheiro" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Configurações de Rede" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Obter endereço através do servidor de IRC" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Pergunta ao servidor de IRC o teu endereço real. Utiliza se tiveres um " +"endereço 192.168.*.*!" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "Endereço IP de DCC" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Utilizar este endereço quando se oferecem ficheiros." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Primeiro porto DCC de envio:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Último porto DCC de envio:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!Deixar portos a zero para alcance máximo." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Velocidades Máximas de Transferência de Ficheiros (bytes por segundo)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Um envio:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Velocidade máx. numa transferência" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Uma recepção:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Todas os envios combinados:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Velocidade máx. para todo o tráfego" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Todas as recepções combinadas:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Alertas" + +#: src/fe-gtk/setup.c:333 +#, fuzzy +msgid "Show tray balloons on:" +msgstr "Onde mostrar separadores:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "" + +#: src/fe-gtk/setup.c:341 +#, fuzzy +msgid "Highlighted Messages" +msgstr "Apitar em mensagens sublinhadas" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:344 +#, fuzzy +msgid "Extra words to highlight:" +msgstr "Palavras extra para sublinhar:" + +#: src/fe-gtk/setup.c:345 +#, fuzzy +msgid "Nick names not to highlight:" +msgstr "Nicks a não sublinhar" + +#: src/fe-gtk/setup.c:346 +#, fuzzy +msgid "Nick names to always highlight:" +msgstr "Nicks a não sublinhar" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Separar palavras com vírgulas." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Mensagens por Defeito" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Desligar:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Sair do canal:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Ausente:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Ausente" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Anunciar mensagens de ausência" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Anunciar as mensagens de ausência para todos os canais" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Mostrar ausências uma única vez" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Mostrar mensagens de ausência uma única vez" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Retirar ausência automaticamente" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Retirar ausência antes de enviar mensagens" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Configurações Avançadas" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Período para re-ligar:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Mostrar os MODOs na forma natural" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Whois após notificação" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" +"Envia um /WHOIS quando um utilizador da sua lista de notificações se liga" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Esconder mensagens de entrada e saída de canal" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Esconder mensagens de entrada e saída de canal por defeito" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Abrir Automaticamente Janelas de DCC" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Janela de Envio" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Janela de Recepção" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Janela de conversa" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Registos" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "Ligar registos das conversas" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Nome do ficheiro de registos" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Servidor %c=Canal %n=rede." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Inserir hora das mensagens nos registos" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Formato hora das mensagens do registo:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Desligado)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Todas as Ligações" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "Servidor de IRC apenas" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "Ligações DCC apenas" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Seu Endereço IP" + +#: src/fe-gtk/setup.c:423 +#, fuzzy +msgid "Bind to:" +msgstr "Unir a:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "Útil apenas para computadores com vários endereços." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Servidor Proxy:" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Host:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Porta:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Tipo:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Utilizar proxy para:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Autenticação Proxy" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Utilizar Autenticação (apenas MS Proxy, HTTP or Socks5)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Utilizar Autenticação (apenas HTTP or Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Utilizador:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Password:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Seleccionar um Ficheiro de Imagem" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Seleccionar fonte" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Seleccionar..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Marcar utilizadores identificados com:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Marcar utilizadores não identificados com:" + +#: src/fe-gtk/setup.c:1161 +#, fuzzy +msgid "Open Data Folder" +msgstr "Abrir Pasta..." + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Seleccionar côr" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Cores de Texto" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "Cores do mIRC:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Cores locais:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Frente:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Fundo:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Texto de Marcação" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Cores da Interface" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Novos dados:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Linha de marcador:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Nova mensagem:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Utilizador ausente:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Sublinhar:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Evento" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Ficheiro de som:" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Seleccionar um ficheiro de som" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Método para tocar sons:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "_Programa externo:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "_Externo" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_Automático" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "_Directoria de ficheiros de som:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Ficheiro de som:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "_Percorrer..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "_Tocar" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Interface" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Caixa de texto" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Lista de utilizadores" + +#: src/fe-gtk/setup.c:1703 +#, fuzzy +msgid "Channel switcher" +msgstr "Lista de Canais..." + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Cores" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Conversar" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Geral" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Som" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Configuração de Rede" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Transferência de ficheiros" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Categorias" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Algumas alterações necessitam que reinicie o programa." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*AVISO*\n" +"Aceitar automaticamente DCC na directoria\n" +"de utilizador pode ser perigoso. Ex:\n" +"Alguém pode enviar um .bash_profile" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: Preferências" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Houve um erro ao processar a frase" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Este sinal apenas passa %d argumentos, $%d é inválido" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Escrever Ficheiro de Textos" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Editar Eventos" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ Número" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Carregar De..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Testar todos" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: Captura de URL" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Limpar lista" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Copiar URL seleccionado" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Copiar" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Gravar lista para ficheiro" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "" + +#~ msgid "US Minor Outlying Islands" +#~ msgstr "Ilhas Menores Distantes dos Estados Unidos" + +#~ msgid "Direct client-to-client" +#~ msgstr "Ligação directa" + +#~ msgid "Send File" +#~ msgstr "Enviar Ficheiro" + +#~ msgid "Offer Chat" +#~ msgstr "Oferecer Conversa" + +#~ msgid "Abort Chat" +#~ msgstr "Cancelar Conversa" + +#~ msgid "Userinfo" +#~ msgstr "Informação do Utilizador" + +#~ msgid "Clientinfo" +#~ msgstr "Informação do Cliente" + +#~ msgid "Time" +#~ msgstr "Hora" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "Operador" + +#, fuzzy +#~ msgid "Kill this user" +#~ msgstr "'Matar' Utilizador" + +#~ msgid "Mode" +#~ msgstr "Modo" + +#~ msgid "Give Half-Ops" +#~ msgstr "Dar Semi-OP" + +#~ msgid "Take Half-Ops" +#~ msgstr "Tirar Semi-OP" + +#~ msgid "Ignore" +#~ msgstr "Ignorar" + +#~ msgid "Ignore User" +#~ msgstr "Ignorar Utilizador" + +#~ msgid "UnIgnore User" +#~ msgstr "Retirar Ignorado" + +#~ msgid "Info" +#~ msgstr "Informação" + +#~ msgid "Who" +#~ msgstr "Who" + +#~ msgid "DNS Lookup" +#~ msgstr "Pesquisa DNS" + +#~ msgid "Trace" +#~ msgstr "Trace" + +#~ msgid "UserHost" +#~ msgstr "Host do utilizador" + +#~ msgid "External" +#~ msgstr "Externo" + +#~ msgid "Traceroute" +#~ msgstr "Traceroute" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#, fuzzy +#~ msgid "Unban" +#~ msgstr "Reautorizar" + +#~ msgid "I can't save an empty list!" +#~ msgstr "Impossível gravar uma lista vazia!" + +#~ msgid "List display options:" +#~ msgstr "Opções de Listagem:" + +#~ msgid "Minimum Users:" +#~ msgstr "Utilizadores Mínimos:" + +#~ msgid "Maximum Users:" +#~ msgstr "Utilizadores Máximos:" + +#, fuzzy +#~ msgid "Regex Match:" +#~ msgstr "Expressão regular:" + +#, fuzzy +#~ msgid "Apply Match to:" +#~ msgstr "Usar expressão regular em:" + +#~ msgid "Apply" +#~ msgstr "Aplicar" + +#~ msgid "Refresh the list" +#~ msgstr "Actualizar lista" + +#~ msgid "Save the list" +#~ msgstr "Gravar a lista" + +#~ msgid "None" +#~ msgstr "Nenhum" + +#~ msgid "To" +#~ msgstr "Para" + +#~ msgid "Started" +#~ msgstr "Iniciado" + +#~ msgid "Speed limit" +#~ msgstr "Limite de velocidade" + +#~ msgid "XChat: File Receive List" +#~ msgstr "XChat: Lista de Ficheiros Recebidos" + +#~ msgid "Open" +#~ msgstr "Abrir" + +#, fuzzy +#~ msgid "Ack" +#~ msgstr "Ack" + +#~ msgid "To/From" +#~ msgstr "De/Para" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "Mais nenhuma separador aberta, sair do xchat?" + +#~ msgid "Show join/part messages" +#~ msgstr "Mostrar mensagens de entrada/saída do canal" + +#~ msgid "Color paste" +#~ msgstr "Colar cores" + +#~ msgid "Go to" +#~ msgstr "Ir para" + +#~ msgid "_Close Tab" +#~ msgstr "_Fechar Separador" + +#~ msgid "Notify List..." +#~ msgstr "Lista de Notificações..." + +#~ msgid "_Close Window" +#~ msgstr "_Fechar Janela" + +#~ msgid "User" +#~ msgstr "Utilizador" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: Lista de Notificações" + +#~ msgid "C_hannels to join:" +#~ msgstr "_Canais a entrar:" + +#~ msgid "Resizable user list" +#~ msgstr "Lista de utilizadores redimensionavel" + +#~ msgid "Left" +#~ msgstr "Esquerda" + +#~ msgid "Right" +#~ msgstr "Direita" + +#~ msgid "(Can be a text file relative to ~/.xchat2/)." +#~ msgstr "(Pode ser um ficheiro de texto relativo a ~/.xchat2/)." + +#~ msgid "(Can be a text file relative to config dir)." +#~ msgstr "" +#~ "(Pode ser um ficheiro de texto relativo à directoria de configuração)." + +#~ msgid "Flash taskbar on highlighted messages" +#~ msgstr "Piscar barra de tarefas em mensagens sublinhadas" + +#~ msgid "Beep on channel messages" +#~ msgstr "Apitar em mensagens de canal" diff --git a/xchat-2.8.8/po/remove-potcdate.sin b/xchat-2.8.8/po/remove-potcdate.sin new file mode 100644 index 0000000..2436c49 --- /dev/null +++ b/xchat-2.8.8/po/remove-potcdate.sin @@ -0,0 +1,19 @@ +# Sed script that remove the POT-Creation-Date line in the header entry +# from a POT file. +# +# The distinction between the first and the following occurrences of the +# pattern is achieved by looking at the hold space. +/^"POT-Creation-Date: .*"$/{ +x +# Test if the hold space is empty. +s/P/P/ +ta +# Yes it was empty. First occurrence. Remove the line. +g +d +bb +:a +# The hold space was nonempty. Following occurrences. Do nothing. +x +:b +} diff --git a/xchat-2.8.8/po/ru.gmo b/xchat-2.8.8/po/ru.gmo new file mode 100644 index 0000000000000000000000000000000000000000..76225acbe0185ac46120bebad2516de4d37b77b9 GIT binary patch literal 118989 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 literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/po/ru.po b/xchat-2.8.8/po/ru.po new file mode 100644 index 0000000..1510a33 --- /dev/null +++ b/xchat-2.8.8/po/ru.po @@ -0,0 +1,5927 @@ +# This file is distributed under the same license as the xchat package. +# translation of xchat-2.8.6.po to Russian +# Copyright (C) 2000, 2004, 2005 Free Software Foundation, Inc. +# Volosenkov Dmitry <_bil_@mail.ru>, 1999. +# Valek Filippov <frob@df.ru>, 2001. +# Peter Astakhov <astakhovp@mail.ru>, 2004. +# Peter Astakhov <astakhovp@mail.ru>, 2005. +# Peter Astakhov <astakhovp@mail.ru>, 2008. +# Alex <davian818@gmail.com>, 2010 +msgid "" +msgstr "" +"Project-Id-Version: xchat-2.8.4\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2010-05-13 03:41+0700\n" +"Last-Translator: Алекс <davian818@gmail.com>\n" +"Language-Team: Russian <gnu@mx.ru>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" +"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Не удалось создать ~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Я занят" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Ухожу я от вас" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* Глупо запускать IRC под пользователем root! Вы должны\n" +" создать пользовательскую учетную запись и работать под ним.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Ожидание" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Активен" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Ошибка" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Готово" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Соединение" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Остановлено" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "Нет доступа к %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Ошибка" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s предлагает \"%s\". Будете принимать?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Нет активных DCC\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "ДА " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "НЕТ " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Вас забрасывают CTCP запросами от %s, %s игнорируется.\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "Вас забрасывают сообщениями от %s, выключаем автодиалог.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s на канале\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s отключен\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Вы не зашли на канал. Наберите /join #<канал>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Нет соединения. Наберите /server <адрес> [<порт>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Вы уже отсутствуете: %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "Вы уже вернулись.\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "Отсутствует /bin/sh для запуска!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Доступные команды:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Определенные пользователем команды:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Определенные расширениями команды:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Наберите /HELP <имя команды> для более полной информации, или /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Игнорируется неизвестный аргумент \"%s\"." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "Плагин не найден\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Плагин невозможно выгрузить.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "" +"ADDBUTTON <название> <действие> добавляет кнопку под списком пользователей" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <команда>, посылает команду во всех каналах где вы есть " + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHANL <команда>, посылает команду на все ваши каналы" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <cmd>, посылает команду на всех серверах где вы есть " + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<причина>], устанавливает флаг отсутствия" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "BACK, сбрасывает флаг остутствия" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <маска> [<тип>], блокирует доступ на текущий канал для каждого, " +"совпадающего с маской. Если они уже на канале, то они не будут скинуты (для " +"этого нужно быть оператором канала)" + +#: src/common/outbound.c:3506 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <переменная> [<значение>]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "CLEAR [ALL|HISTORY], очищает текущее окно или историю команд" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, закрывает текущее окно или вкладку" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <код|маска>, находит код страны, например: au = Австралия" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <ник> <сообщение>, посылает пользователю с указанным ником CCTP-" +"сообщение, обычные сообщения -- VERSION и USERINFO" + +#: src/common/outbound.c:3516 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "CYCLE [<channel>], выйти с текущего канала и немедленно зайти" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <имя> - принять отправляемый файл\n" +"DCC SEND [-maxcps=#] <имя> <файл> - отправить файл получателю\n" +"DCC PSEND [-maxcps=#] <имя> [файл] - отправить файл в пассивном режиме\n" +"DCC LIST - показать список DCC\n" +"DCC CHAT <имя> - запросить разговор через DCC\n" +"DCC PCHAT <nick> - запросить разговор в пассивном режиме\n" +"DCC CLOSE <тип> <имя> <файл> пример:\n" +" /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <имя>, удаляет chanhalf-op статус у имени на текущем канале\n" +"(нужны права администратора канала)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <имя>, удаляет кнопку из-под списка пользователей" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <nick>, убирает права администратора канала у пользователя на текущем " +"канале (требует права администратора)." + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <nick>, удаляет право голоса у пользователя с переданным именем на " +"текущем\n" +"канале. Для использования нужны права администратора канала" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, отсоединиться от сервера" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <имя,адрес,IP> - поиск IP адреса пользователя" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <текст>, вывести текст на локальной машине" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <Команда>, выполняет команду. При передаче опции -o вывод \n" +"команды перенаправляется в текущий канал. Иначе вывод печатается в текущем " +"окне" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, sends the process SIGCONT" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], уничтожает выполняющийся процесс в текущей сессии. Если -9 " +"процессу перадается сигнал SIGKILL" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, посылает процессу сигнал SIGSTOP" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, посылает процессу данные на stdin" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, сбрасывает текущую очередь отправки сервера" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <адрес> [<порт>], прокси через хост, порт по умолчанию - 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <имя> <пароль>, Убрать фантомное имя пользователя" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" +"HOP <Ник>, дает статус полуоператора канала пользователю (требуются права " +"оператора)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <пароль>, представиться nickserv-у" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <маска> <типы..> <параметры..>\n" +" маска - маска игнорируемого хоста, например: *!*@*.aol.com\n" +" типы - типы игнорируемых данных, один или несколько из следующих:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" параметры - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <Ник> [<канал>], приглашает кого-либо на канал, по умолчанию, на " +"текущий (требует права оператора)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <канал>, зайти на канал" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "KICK <Ник>, удаляет человека с текущего канала (нужны права оператора)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <Ник>, удаляет и ставит бан с данного канала (требуются права " +"оператора)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, инициирует новую проверку канала" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <Строка>, ищет строку в буфере" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <ИмяФайла>, загружает скрипт или плагин" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, убирает у всех на текущем канале права полуоператора (требуются " +"права оператора)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, убирает у всех права оператора на текущем канале (требуются права " +"оператора)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <action>, посылает действие на текущий канал (действие пишется от " +"третьего лица, например, /me прыгает)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, удаляет всех, кроме себя, с канала (требуются права оператора)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, Устанавливает всем пользователям текущего канала права оператора " +"(требуются права оператора канала)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <Ник> <сообщение>, отправляет приватное сообщение" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, показывает список посетителей текущего канала" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <Ник> <сообщение>, отправляет CTCP сообщение" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <ИмяСервера> [<порт>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "/NICK <Ник>, меняет ваш ник" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <Ник/канал> <сообщение>, посылает уведомление. Уведомление - тип " +"сообщений that should be auto reacted to" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n network1[,network2,...]] [<Ник>], показывает список ваших " +"уведомлений или добавляет что-либо к ним" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" +"OP <Ник>, дает пользователю статус оператора канала (требуются права " +"администратора)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<Канал>] [<Причина>], выйти с канала, по умолчанию - с текущего" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <Ник | канал>, CTCP-пинг пользователя или канала" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "QUERY [-nofocus] <Ник>, открыть новое окно приватных сообщений" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<причина>] - отсоединение от текущего сервера" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <Текст>, отсылает текст в чистом виде на сервер" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<Сервер>] [<Порт>] [<Пароль>]. Может использоваться только " +"как /RECONNECT для переподключения к текущему серверу или с /RECONNECT ALL " +"для переподключения ко всем серверам" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [-ssl] [<Сервер>] [<Порт>] [<Пароль>]. Может использоваться только " +"как /RECONNECT для переподключения к текущему серверу или с /RECONNECT ALL " +"для переподключения ко всем серверам" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <Текст>, посылает данные в xchat, как если бы они были получены от " +"сервера" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <Текст>, посылает текст объекту в текущем окне" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <псевдоним> [<файл>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <Сервер> <порт> <канал>, подключиться к серверу, а затем к " +"каналу" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <Сервер> <порт> <канал>, подключиться к серверу, а затем к " +"каналу" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <адрес> [<порт>] [<пароль>] соединяет с сервером. Порт по " +"умолчанию 6667 для нормальных соединений и 9999 для соединений через SSL" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <адрес> [<порт>] [<пароль>] соединяет с сервером. Порт по умолчанию " +"6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <переменная> [<значение>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<позиция>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<тема>], устанавливает тему, если она указана. Иначе отображает " +"текущую тему" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" +"\n" +"TRAY -f <интервал> <файл1> [<файл2>] Blink tray between two icons.\n" +"TRAY -f <имя_файла> Set tray to a fixed icon.\n" +"TRAY -i <число> Blink tray with an internal icon.\n" +"TRAY -t <текст> Set the tray tooltip.\n" +"TRAY -b <заголовок> <текст> Set the tray balloon." + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <маска> [<маска>...], снять запрет для специфической маски" + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <маска> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <имя>, выгрузить плагин или скрипт" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <адрес>, открыть ссылку в браузере" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <имя1> <имя2> и т.д., выделить имена в списке пользователей" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <Ник>, дает право голоса кому-либо (требуются права оператора)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <Сообщение>, посылает сообщение на все каналы" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <Сообщение>, посылает сообщение всемl операторам текущего канала" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Использование: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"По этой команде нет помощи.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Команда не существует\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Недопустимые аргументы команды пользователя.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Очень много рекурсивных команд пользователя, прерывание." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Неизвестная команда. Попробуйте /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "Нет символа xchat_plugin_init; вы уверены, что это плагин для xchat?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Вы уверены, что сервер и порт поддерживают SSL?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Не могу разрешить имя %s\n" +"Проверьте ваши сетевые настройки!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Ошибка прохождения через прокси.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Переключаемся к следующему серверу %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Предупреждение: кодировка \"%s\" неизвестна. Трансляции для %s сети не будет." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 добавлен в список извещений." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 список банов:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tНе получается войти на%C26 %B$1 %O(Вы забанены)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 теперь известен как $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 забанил некоего $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tКанал $1 создан в $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O убрал права полуоператора с%C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O убрал права оператора канала с%C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O забрал голос у%C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 установил исключение на $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O установил права полуоператора канала для%C26 $2" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 приглашает на $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UКанал Пользователи Тема" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 установил режим $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Канал $1 режимы: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O дал статус оператора канала %C26 $2" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 убрал освобождение с $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 снял приглашение для $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 убрал ключевые слова канала" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 убрал лимит пользователей" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 установил следующие ключевые слова канала $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 установил лимит канала в $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 убрал бан с $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O дал голос%C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Соединение установлено. Входим в сеть..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22Соединение с $1 ($2) порт $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21Соединение невозможно. Ошибка: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tПолучен CTCP $1 от $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tПолучен CTCP $1 от $2 (для $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2 " + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tПолучен CTCP звук $1 от $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tПолучен CTCP Звук $1 от $2 (для $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tDCC CHAT с %C26$1%O прерван." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC CHAT соединение установлено с %C26$1 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tDCC CHAT с %C26$1%O потеряно ($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tПринят запрос на DCC CHAT от $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tПредлагаем DCC CHAT для $1" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tУже предложен CHAT с $1" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$tDCC $1 попытка соединения с%C26 $2%O неудачна (err=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tПринято '$1%O' от $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 Type В/От Состояние Размер Позиция Файл " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O.%010%C22*%O" +"$tContents of packet: $2" +msgstr "" +"%C22*%O$tПринят неверный DCC-запрос от %C26$1%O.%010%C22*%O$tСодержимое " +"пакета: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tПредлагаем%C26 $1%O для%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tНет такого предложения DCC." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV%C26 $2%O с%C26 $1%O прервано." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC RECV%C26 $1%O от%C26 $3%O завершено %C30[%C26$4%O cps%C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC RECV соединение установлено с%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV%C26 $1%O от%C26 $3%O сбой ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV: Не могу открыть $1 для записи ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "" +"%C22*%O$tФайл%C26 $1%C уже существует, сохраняем его как%C26 $2%O вместо " +"этого." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Oзапрос на продолжение%C26 $2 %Cот%C26 $3%C." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC SEND%C26 $2%O к%C26 $1%O прервано." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC SEND%C26 $1%O к%C26 $2%O завершено %C30[%C26$3%O cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC SEND соединение установлено с%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND%C26 $1%O для%C26 $2%O провален. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Oпредложил(а)%C26 $2 %O(%C26$3 %Oбайт)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cнет данных - прервано." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oс%C26 $3 %Oпрерывание по таймауту." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 удалено из списка уведомлений." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tСоединение разорвано ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tНайти ваш IP: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O добавлен в список игнорирования." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "Игнорирование %C26$1%O изменено." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG" + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O удален из списка игнорирования." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " Список игнорирований пуст." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "" +"%C22*%O$tНевозможно подключиться%C26 %B$1 %O(Канал только по приглашениям)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tВы приглашены на %C26 $1%O by%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) зашел на канал $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "" +"%C22-*%O$tНевозможно подключится %C26 %B$1 %O(Требуется ключевое слово)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 выкинул $2 с $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$t$1 изгнал вас с канала ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD Пропущен." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 уже используется. Пытаемся как $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$tНик уже используется. Используйте /NICK, чтобы попробовать другой." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tНет такого DCC." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tНет запущенного процесса" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tСписок уведомлений пуст." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Список уведомлений " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 пользователей в списке уведомлений." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tУведомление: $1 отключен ($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tУведомление: $1 подключен ($3)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) покинул $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) покинул $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tPing ответ от $1 : $2 секунд(ы)" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tНе получено ответов в течении $1 секунд.Отсоединение." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tПроцесс уже запущен" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 ушел (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 установил режимы%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2 " + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tПоиск IP-адреса для%C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22Соединение установлено." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22Ищу $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tОстановлена предыдущая попытка соединения (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29Тема для $1%C %C29is: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 изменил тему на: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29Тема для $1%C %C29 установлена $2%C %C29в $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tНеизвестный хост. Возможно, вы ошиблись?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "%C22*%O$tНевозможно зайти%C26 %B$1 %O(Лимит пользователей исчерпан)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26пользователей на $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3 " + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cнедоступен %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2 " + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OКонец списка WHOIS." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O не работает %C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O не работает%C26 $2%O, подписан:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" +"%C22*%O$t%C28[%O$1%C28] %Oнастоящие пользователь@машина%C27 $2%O, настоящий " +"IP%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Сейчас общаетесь на $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$t$3 изгнал вас из канала $2 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tВы ушли с канала $3" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tВы ушли из канала $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tВы пришласили%C26 $1%O на канал%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tТеперь вы известны как $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "Загружен протокол от" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** ЗАКАНЧИВАЕТСЯ ВХОЖДЕНИЕ НА %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** НАЧАЛО ВХОЖДЕНИЯ НА %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Не могу открыть лог-файл(ы) для записи. Проверьте\n" +" Права доступа на %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Сообщение слева" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Сообщение справа" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "Имя зашедшей персоны" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "Вы уже на канале" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "Адрес компьютера персоны" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Ник" + +#: src/common/text.c:973 +msgid "The action" +msgstr "Действие" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Символ режима" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Выявленный текст" + +#: src/common/text.c:980 +msgid "The text" +msgstr "Текст" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Сообщение" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Старый ник" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Новый ник" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Ник человека, который поменял Топик" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Топик" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Канал" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "Ник выкинувшего" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "Персона выкинута" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "Канал" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "Причина" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "Ник вышедшего" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "Время" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "Создатель" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Ник" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Причина" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Адрес машины" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "Откуда этот" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "Время в формате x.x (см. ниже)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "Список каналов..." + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "Звук" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "Ник персоны" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "CTCP событие" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "Ник персоны, установившей ключ" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "Ключ" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "Ник персоны, установившей лимит" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "Ограничение" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "Ник человека, установившего оператора" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "Ник персоны, кому дали права оператора" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "Ник персоны, кому дали права полуоператора" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "Ник человека, который дал права полуоператора" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "Ник человека, который дал право голоса" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "Ник человека, которому дали право голоса" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "Ник забанившего" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "Маска бана" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "Ник удалившего ключ" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "Ник удалившего ограничение" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "Ник персоны, который де-опнул" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "Ник персоны, которого де-опили." + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "Ник персоны, который снял статус полуоператора" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Ник персоны, с которой сняли статус полуоператора" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "Ник персоны, который снял право голоса" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "Ник персоны, с которой сняли право голоса" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "Ник персоны, снявшей бан." + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "Ник персоны, вызвавшей исключение" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "Маска исключения" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "Ник персоны, убравшей исключение" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "Ник персоны, сделавшей приглашение" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "Маска приглашения" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "Ник персоны, удалившей приглашение" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "Ник персоны, установившего режим" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "Знаки режима (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "Буквы режима" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "Канал установлен" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Имя пользователя" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Полное имя" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Член канала/\"IRC - оператор\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Информация о сервере" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Время простоя" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Время ввода пароля" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Причина ухода:" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Сообщение" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Учетная запись" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "Фактический пользователь@компьютер" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "Фактический IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Имя канала" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Текст" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Имя сервера" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Ник персоны, пригласившей вас" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Пользователи" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Ник используется" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Пробуем ник" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Порт" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Сеть" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Строка режимов" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "IP Адрес" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "Тип DCC" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Имя файла" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Имя файла у получателя" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Путь" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Положение" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Размер" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "Строка DCC" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Количество уведомлений" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Старое имя файла" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Новое имя файла" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Получатель" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Маска компьютера" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Имя машины" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "Пакет" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Секунд." + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Ник приглашенного" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Маска бана" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Кто установил бан" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Продолжительность бана" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Ошибка разбора события %s.\n" +"Загружаем по умолчанию." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"Невозможно прочитать звуковой файл:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "Удаленная машина закрыла сокет" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Соединение отвергнуто" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Нет маршрута к хосту" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Истечение времени ожидания соединения" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Не могу назначить этот адрес" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Соединение оборвано" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Остров Вознесения" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Андорра" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Объединенные арабские эмираты" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Афганистан" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Антигуа и Барбуда" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Албания" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Армения" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Нидерланды " + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Ангола" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Антарктика" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Аргентина" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "Обратный DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Американское Самоа" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Австрия" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Австралия" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Аруба" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Аландские острова" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Азербайджан" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Босния и Герцеговина" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Барбадос" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Бангладеш" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Бельгия" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Буркина Фасо" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Болгария" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Бахрейн" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Бурунди" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Businesses" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Бенин" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Бермуды" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Бруней " + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Боливия" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Бразилия" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Багамы" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Бутан" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Острова Буве" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Ботсвана" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Беларусь" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Белиз" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Канада" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Кокосовые о-ва" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "Республика Конго" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "Центральная Африканская Республика" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Конго" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Швейцария" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Кот'Д'Ивуар" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Острова Кука" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Чили" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Камерун" + +#: src/common/util.c:898 +msgid "China" +msgstr "Китай" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Колумбия" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Коммерческие" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Коста Рика" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Сербия и Черногория" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Куба" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Капо-Верде" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Рождественские острова" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Кипр" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "Чешская республика" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Германия" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Джибути" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Дания" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Доминика" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "Доминиканская республика" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Алжир" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Эквадор" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Образовательные учреждения" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Эстония" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Египет" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Западная сахара" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Эритрея" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Испания" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Эфиопия" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Европейский Союз" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Финляндия" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Фиджи" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Фолклендские о-ва" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Микронезия" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Острова Фарое" + +#: src/common/util.c:928 +msgid "France" +msgstr "Франция" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Габон" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Великобритания" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Гренада" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Грузия" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Французская Гвиана" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Британские острова" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Гана" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Гибралтар" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Гренландия" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Гамбия" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Гвинея" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Правительственные" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Гваделупа" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Экваториальная Гвинея" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Греция" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Южная Георгия и Южные Сандвичевы острова" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Гватемала" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Гуам" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Гвинея-Биссау" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Гайаня" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Гонк Конг" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Heard and McDonald Islands" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Гондурас" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Хорватия" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Гаити" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Венгрия" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Индонезия" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Ирландия" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Израиль" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Остров Мэн" + +#: src/common/util.c:959 +msgid "India" +msgstr "Индия" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Информационные" + +#: src/common/util.c:961 +msgid "International" +msgstr "Интернациональные" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Британская индоокеанская территория" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Ирак" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Иран" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Исландия" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Италия" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Джерси (Нормандские острова)" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Ямайка" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Иордания" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Япония" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Кения" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Киргизстан" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Камбоджа" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Кирибати" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Коморос" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "St. Kitts and Nevis" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Северная Корея" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Южная Корея" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Кувейт" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Каймановы о-ва" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Казахстан" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Лаос" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Ливан" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Санта Лючия" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Лихтенштейн" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Шри Ланка" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Либерия" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Лесото" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Литва" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Люксембург" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Латвия" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Ливия" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Марокко" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Монако" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Молдова" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "Медучреждения США" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Мадагаскар" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Маршаловы о-ва" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Военные" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Македония" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Мали" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Мьянма" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Монголия" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Макао" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Северные Марианские острова" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Мартиника" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Мавритания" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Монтсерат" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Мальта" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Маврикий" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Мальдивы" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Малави" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Мексика" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Малайзия" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Мозамбик" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Намибия" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Новая Каледония" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Нигер" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Сети" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Норфолкские острова" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Нигерия" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Никарагуа" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Нидерланды" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Норвегия" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Непал" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Науру" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Ниуе" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Новая зеландия" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Оман" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Сетевые некоммерческие организации" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Панама" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Перу" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Французская Полинезия" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Новая Гвинея" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Филлипины" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Пакистан" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Польша" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "St. Pierre and Miquelon" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Пуэрто Рико" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Палестинские территории" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Португалия" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Палау" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Парагвай" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Катар" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Реунион" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Румыния" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "Старая сеть ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Россия" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Руанда" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Саудовская Аравия" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Соломоновы о-ва" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Сейшелы" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Судан" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Швеция" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Сингапур" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "Святая Елена" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Словения" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard and Jan Mayen Islands" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Словацкая Республика" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Сьера Леоне" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "Сан Марино" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Сенегал" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Сомали" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Суринам" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "Сен-Томе и Принсипи" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Бывш. СССР" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "Сальвадор" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Сирия" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Свазиленд" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "о-ва Тёркс и Кайкос" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Чад" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Франзузские Южные Территории" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Того" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Таиланд" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Таджикистан" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "о-ва Токелау" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Восточный Тимор" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Туркменистан" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Тунис" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Тонга" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Турция" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Тринидад и Тобаго" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Тувалу" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Тайвань" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Танзания" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Украина" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Уганда" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Объединенное королевство" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "США" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Уругвай" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Узбекистан" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Ватикан" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "Сент-Винсент и Гренадины" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Венесуэла" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Британские Виргинские о-ва" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "Американские Виргинские о-ва" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Вьетнам" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Вануату" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Wallis and Futuna Islands" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Самоа" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Йемен" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Югославия" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Южная Африка" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Замбия" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Зимбабве" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Неизвестно" + +#: src/common/xchat.c:726 +msgid "_Open Dialog Window" +msgstr "Начать ра_зговор" + +#: src/common/xchat.c:727 +msgid "_Send a File" +msgstr "Отправить _файл" + +#: src/common/xchat.c:728 +msgid "_User Info (WhoIs)" +msgstr "_Информация (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "Добавить в дру_зья" + +#: src/common/xchat.c:730 +msgid "O_perator Actions" +msgstr "Действия опе_ратора" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Дать оператора" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Снять оператора" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Дать голос" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Забрать голос" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Кик/Бан" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Кик" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Бан" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "Кик+Бан" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Уйти с канала" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Зайти на канал..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Введите канал для входа:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Ссылки сервера" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Ping Server" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Не показывать версию" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Оператор" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "Снять оператора" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "пока" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "введите причину выброса %s:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Послать файл" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Диалог" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "Кто " + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Послать" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Разговор" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Очистить" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "Не удалось подключиться к сеансовой шине" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "Не удалось завершить NameHasOwner" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "Не удалось выполнить команду" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "удаленный доступ" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "модуль для удаленного доступа через DBUS" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Не удалось подключиться к сеансовой шине: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Не удалось получить %s: %s\n" + +#: src/fe-gtk/about.c:100 +msgid "About " +msgstr "О программе" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Многоплатформенный IRC-клиент" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Кодировка" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "Нет соединения." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Вы должны выбрать баны." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "Вы действительно хотите снять все баны с %s?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Маска" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "От" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Дата" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Список банов можно отктыть только при открытой вкладке канала." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "X-Chat: Список банов (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Удалить" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Сжать" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Обновить" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Статистика: %d/%d пользователей на %d/%d каналах" + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Выберите файл для вывода" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "Зайти на канал" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "Копировать имя _канала" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "Скопировать _тему общения" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "X-Chat: Список каналов (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "Поиск" + +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "_Загрузить список" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "Со_хранить список..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "Показывать только:" + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "Открывать каналы как:" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "к" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "пользователи." + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "Поиск в:" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "Имя канала" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "Тип поиска:" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "Простой поиск" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "Использовать шаблоны" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "Регулярное выражение" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Поиск:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Отправить файл %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Файл нельзя продолжить." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"Нет доступа к файлу: %s\n" +"%s.\n" +"Продолжение не доступно." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "Файл во входном каталоге больше запрошенного. Продолжение невозможно." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "Не могу продолжить одинаковый файл от 2 пользователей." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: Прием и передача файлов" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Статус" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Файл" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "Осталось" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Оба" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Отгрузки" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "Загрузки" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Подробно" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Файл:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "Адрес:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Прервать" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Подтвердить" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Продолж." + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Открыть папку..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: Список разговоров по DCC" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Прин" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Отпр" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "Время Начала" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*НОВ*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "Исправь!!!" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Имя" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Команда" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Вверх" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Вниз" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Отмена" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Записать" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Добавить новый" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Удалить" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Сортировать" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Помощь" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "Не подключаться к серверам" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "используется другой конфигурационный каталог" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "Не загружать автоматически плагины" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "показать каталог автозагружаемых плагинов" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "показать каталог пользовательских настроек" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Открывает URL вида irc://сервер:порт/канал" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Выполнить команду:" + +#: src/fe-gtk/fe-gtk.c:132 +msgid "Open URL or execute command in an existing XChat" +msgstr "Открыть URL или выполнить команду в запущенном XChat" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Вид окна при запуске. Ур. 0=обычное 1=свернутое 2=значок" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "уровень" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Показать информацию о версии" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"Ошибка открытия шрифта:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "Буфер поиска пуст.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d байт" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Очередь отправки, байт: %d" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"Команда Run запускает данные в Data 1 как если бы они были впечатаны в поле " +"ввода Где нажата последовательность клавиш. Может содержать текст (который " +"можно послать на канал/персоне), команды или команды пользователя. Когда " +"запускает все символы в Data 1 использует для разделения команд, если " +"возможно запустить больше одной команды Если вы хотите использовать \\ iв " +"тексте, вводите\\\\" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"Команда Сменить страницу переключает страницы записной книжки. Установите " +"Data 1 на страницу, куда хотите переключиться. Если Data 2 установлена, то " +"считается относительно текущей позиции." + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"Команда  Вставить в буфер вставит содержимое Данные 1 в текущую позицию " +"курсора" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"Команда  Пролистать страницу пролистывает текст вверх или вниз. Возможные " +"значения Данные 1: Up (вверх), Down (вниз), +1 или -1." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"Команда  Установить буфер содержит последовательность, содержащуюся в Данные " +"1" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"Команда  Последняя команда одержит последнюю введеную команду - такую же, " +"как в оболочке." + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"Команда  Следующая команда содержит следующую введеную команду, - такую же, " +"как и в оболочке." + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Команда заменяет текст, дополняя ники и команды. Если Данные 1 установлены, " +"двойной Tab выбирает последний ник, не следующий." + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Команда прокручивает список ников. Если Данные 1 установлены - прокручивает " +"вверх, иначе - вниз." + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Команда проверяет последнее введенное слово в список замены и заменяет, если " +"находит соответствие." + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Эта команда перемещает текущую закладку влево." + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Эта команда перемещает текущую закладку вправо." + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Эта команда перемещает текущую группу закладок влево" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Эта команда перемещает текущую группу закладок вправо" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "Записать строку в журнал, но не посылать на сервер" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "Ошибка загрузки конфигурации клавиш" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<нет>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Mod" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Клавиша" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Действие" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "X-Chat: Клавиатурные сокращения" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Данные 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Данные 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Ошибка открытия файла настроек клавиш\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Неизвестное имя клавиши %s в конфигурационном файле.\n" +"Загрузка прекращена, поправьте файл %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Неизвестное действие %s в конфигурационном файле.\n" +"Загрузка прекращена, поправьте файл %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Требуется строка с данными (начинается на Dx{:|!}), но вместо нее:\n" +"%s\n" +"\n" +"Загрузка прервана, исправьте %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"Конфигурационный файл настроек клавиш поврежден, загрузка прекращена\n" +"Исправьте файл %s/keybindings.conf\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "Невозможно записать в этот файл." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Невозможно прочитать этот файл." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Такая маска уже существует." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Личный" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Сообщение" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Приглашен" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Не игнорировать" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Введите маску для игнорирования:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "X-Chat: Черный список" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Состояние игнорирования:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Канал:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Приватный:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Сообщение:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Пригласить:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "Добавить..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "Имя канала недостаточно длинное." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: Соединение завершено" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "Соединение с %s завершено." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"В списке серверов для данной сети не были указаны каналы, в которые следует " +"автоматически войти." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "Что вы хотите сделать теперь?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "_Ничего, я войду на канал позднее." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "Зайти на канал:" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Если вы знаете имя канала, на который хотите зайти, укажите его здесь." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "_Открыть список каналов" + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "Получение списка каналов займет минуту-две." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "Пока_зывать этот диалог при соединении." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Диалог с" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Тема для %s : %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Тема не установлена" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "Для этого сервера открыто %d каналов или разговоров. Закрыть их все?" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "Выйти из XChat?" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "Не спрашивать в следующий раз" + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Вы подключены к %i IRC-сетям." + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "Вы действительно хотите выйти?" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "Некоторые передачи файлов еще активны." + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "Свернуть в з_начок" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Вставить аттрибут или код цвета" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Жирный</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Подчеркнутый</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Обычный" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Цвета 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Цвета 8-15" + +#: src/fe-gtk/maingui.c:1612 +msgid "_Settings" +msgstr "_Настройки" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "Запись _журнала" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "За_гружать буфер" + +#: src/fe-gtk/maingui.c:1617 +msgid "_Hide Join/Part Messages" +msgstr "_Скрыть сообщения о приходе/уходе" + +#: src/fe-gtk/maingui.c:1625 +msgid "_Extra Alerts" +msgstr "Опове_щения" + +#: src/fe-gtk/maingui.c:1627 +msgid "Beep on _Message" +msgstr "_Звуковой сигнал при личном сообщении" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "_Мигание значка при личном сообщении" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "Мерцание _окна" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +msgid "_Detach" +msgstr "Отсо_единить" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "Закрыть" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "Лимит пользователей должен содержать номер!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Защитить тему" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Нет последних сообщений" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Секрет" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Только приглашенные" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Модерируемый" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Список банов" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Ключевое слово" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Ограничение пользователей" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Показать/Скрыть список пользователей" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"Невозможно установить прозрачный фон!\n" +"\n" +"Возможно, вы используете несовместимый оконный\n" +"менеджер, который не поддерживает такую возможность.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Введите новый ник:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Хост неизвестен" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Настоящее имя:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Пользователь:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "Страна:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Сервер:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "%u минут назад" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Последнее сообщение:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Сообщение об отсутствии:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "Выделено имен: %d." + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"Строка меню была скрыта. Чтобы увидеть ее снова, нажмите F9 или щелкните " +"правой кнопкой по свободному месту в окне." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Открыть ссылку в браузере" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Копировать выбранную ссылку" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Зайти на канал" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Покинуть канал" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Каналы по кругу" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "_Удалить из Избранного" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "_Добавить в избранное" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "X-Chat: Пользовательское меню" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Редактировать это меню.." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Получение списка каналов..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Команды пользователя - Специальные коды:\n" +"\n" +"%c = текущий канал\n" +"%e = имя текущей сети\n" +"%m = информация о компьютере\n" +"%n = ваш ник\n" +"%t = время и дата\n" +"%v = версия XChat\n" +"%2 = слово 2\n" +"%3 = слово 3\n" +"&2 = слово 2 до конца строки\n" +"&3 = слово 3 до конца строки\n" +"\n" +"например:\n" +"/cmd john hello\n" +"\n" +"%2 должно быть \"john\"\n" +"&2 должно быть \"john hello\"." + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Кнопки списка пользователей - Специальные коды:\n" +"\n" +"%a = все выбранные ники\n" +"%c = текущий канал\n" +"%e = имя текущей сети\n" +"%h = адреса выбранных ников\n" +"%m = информация о компьютере\n" +"%n = ваш ник\n" +"%s = выбранный ник\n" +"%t = время и дата\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Кнопки диалога - Специальные коды:\n" +"\n" +"%a = все выбранные ники\n" +"%c = текущий канал\n" +"%e = имя текущей сети\n" +"%h = имя машин выбранного ника\n" +"%m = информация о компьютере\n" +"%n = ваш ник\n" +"%s = выбранный ник\n" +"%t = время и дата\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"Ответы CTCP - Специальные коды:\n" +"\n" +"%d = данные (целый ctcp)\n" +"%e = имя текущей сети\n" +"%m = инфо о компьютере\n" +"%s = ник пославшего ctcp\n" +"%t = время/дата\n" +"%2 = слово 2\n" +"%3 = слово 3\n" +"&2 = слово 2 до конца строки\n" +"&3 = слово 3 до конца строки\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"Обработчики URL - Специальные коды:\n" +"\n" +"%s = строка URL\n" +"\n" +"Добавление ! перед командой\n" +"показывает, что будет отправлено \n" +"оболочке вместо X-Chat" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "X-Chat: Определенные пользователем команды" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "Всплывающее меню списка пользователей.." + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Заменить на" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "X-Chat: Замена" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: Обработчики URL" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: Кнопки списка пользователей" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: Кнопки диалога" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: Ответы CTCP" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "Список сетей" + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "Новая..." + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Вкладка сервера..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Вкладка канала..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Окно сервера..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Окно канала..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "_Загрузить модуль или сценарий..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "Выход" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "_Вид" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "Панел_ь меню" + +#: src/fe-gtk/menu.c:1592 +msgid "_Topic Bar" +msgstr "Т_ема" + +#: src/fe-gtk/menu.c:1593 +msgid "_User List" +msgstr "Список _пользователей" + +#: src/fe-gtk/menu.c:1594 +msgid "U_serlist Buttons" +msgstr "Кнопки _списка пользователей" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "Кнопки _режима канала" + +#: src/fe-gtk/menu.c:1597 +msgid "_Channel Switcher" +msgstr "Список _каналов" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "Закладки" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "Де_рево" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "_Монитор сети" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Выключено" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "График:" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "Сервер" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "Отключиться" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "Пересоединиться" + +#: src/fe-gtk/menu.c:1613 +msgid "Join a Channel..." +msgstr "Зайти на канал..." + +#: src/fe-gtk/menu.c:1614 +msgid "List of Channels..." +msgstr "Список каналов..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Пометить как \"Отошел\"" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "_Меню пользователя" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "Настройка" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "Установки" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Дополнительно" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Автозамена" + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "Ответы CTCP..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Кнопки диалога.." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Клавиатурные сокращения" + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Тексты событий..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "Обработчики URL..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Команды пользователя..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Кнопки списка пользователей..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Меню списка пользователей.." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "Окно" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Список банов..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Таблица символов..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Список разговоров DCC..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Передачи файлов..." + +#: src/fe-gtk/menu.c:1641 +msgid "Friends List..." +msgstr "Список друзей..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Список игнорирования..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Плагины и скрипты..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Монитор сети..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "Сборщик URL..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Сбросить маркерную линию" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "Очистить" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Найти..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Сохранить текст..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "Помощь" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "Содержание" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "Проверка обновлений" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "О программе" + +#: src/fe-gtk/menu.c:2147 +msgid "_Attach" +msgstr "Присо_единить" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Последний раз" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Отключен" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Никогда" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "%d минут назад" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Подключен" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Введите ник для добавления:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "Уведомлять на данных сетях:" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "Укажите разделенный запятыми список сетей." + +#: src/fe-gtk/notifygui.c:413 +msgid "XChat: Friends List" +msgstr "X-Chat: Список друзей" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "Начать разговор" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" +"Не удалось найти 'notify-send' для всплывающих оповещений.\n" +"Требуется установить libnotify." + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "XChat: Подключен; сети: %u, каналы: %u" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "_Восстановить" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "Скрыть" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "_Мигать при сообщениях" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "Сообщение канала" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "Личное сообщение" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "Выделенные сообщения" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "Состо_яние" + +#: src/fe-gtk/plugin-tray.c:602 +msgid "_Away" +msgstr "Ото_шел" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "_Вернулся" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat: Выделенное сообщение от %s (%s)" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat: %u выделенных сообщения, последнее от %s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat: Новое публичное сообщение от %s (%s)" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat: %u новых публичных сообщений." + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat: Личное сообщение от %s (%s)" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "XChat: %u личных сообщения, последнее от %s (%s)" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat: Предложен файл: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "XChat: %u предложения файлов, последнее от %s (%s)" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Версия" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Описание" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Выберите плагин или скрипт для загрузки" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "X-Chat: Скрипты и плагины" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "Загрузить..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "Вы_грузить" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Сохранить как..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "X-Chat: Журнал передачи (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Очистить окно" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "Открытое вами окно поиска больше не существует." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "Просмотр завершен, текст не найден." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "X-Chat: Поиск" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "С учетом _регистра" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "В о_братном порядке" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "Поиск" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Новая сеть" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Удалить сеть \"%s\" и все ее сервера?" + +#: src/fe-gtk/servlistgui.c:740 +msgid "#channel" +msgstr "#канал" + +#: src/fe-gtk/servlistgui.c:850 +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: Избранные каналы (автоматический вход)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "Вы автоматически зайдете на эти каналы при подключении к %s." + +#: src/fe-gtk/servlistgui.c:906 +msgid "Key (Password)" +msgstr "Ключ (пароль):" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "Редактировать" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "%s был удален." + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "Добавлен %s." + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "Имя пользователя и реальное имя нельзя оставлять пустым." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "X-Chat: Редактирование: %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Серверы для %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Соединиться только с выделенным сервером" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Не перебирать сервера при ошибке соединения." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Ваши детали" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Использовать глобальные установки пользователя:" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "Ник:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Второй выбор:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "Имя пользователя:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "Настоящее имя:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Соединение" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Автоматически соединяться сэтой сетью при запуске программы" + +#: src/fe-gtk/servlistgui.c:1462 +msgid "Bypass proxy server" +msgstr "Обходить прокси-сервер" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "Использовать SSL для всех серверов в этой сети" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Принимать недействительные SSL-сертификаты" + +#: src/fe-gtk/servlistgui.c:1475 +msgid "_Favorite channels:" +msgstr "_Избранные каналы:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "Каналы для подключения, разделенные запятыми, но не пробелами!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Команда для соединения:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Дополнительная команда, выполняемая после соединения. Если вам требуется " +"указать больше, чем одну - пропишите LOAD -e <ИмяФайла>, где <ИмяФайла> - " +"текстовый файл с командами." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Пароль для Nickserv:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Если у вас есть пароль, введите его тут. Не все IRC-сети поддерживают этот " +"метод." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Пароль сервера:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Пароль для сервера, если не требуется -оставьте пустым." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Кодировка:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "X-Chat: Список сетей" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Информация о пользователе" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Третий выбор:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Сети" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "Не показывать список сетей при запуске" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "Править..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "Сортировать" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" +"Сортировка списка сетей по алфавиту. Для перемещения строк используйте SHIFT-" +"стрелка вверх/вниз." + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "Подключить" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Оформление ввода текста" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Шрифт:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Фоновое изображение:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Строк в буфере:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Цветные ники" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Дать каждому участнику канала свой цвет" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Выравнивать ники" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Выравнивает ники по правому краю." + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Прозрачный фон" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Показывать разделительную черту" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Вставить красную линию после последней прочитанной строки." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Настройки прозрачности" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Красный:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Зеленый:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Голубой:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Метки времени" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Включить отметки времени" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Формат отметки времени:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Смотрите руководство по strftime для деталей" + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "По времени" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Поле ввода " + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Использовать цвета и шрифт текстовой надписи" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Проверка орфографии" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Автодополнение ников" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "Автоматическое завершение ников (без клавиши TAB)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Суффикс дополнения ников:" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "Сортировать варианты имен:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Укажите символы рамок" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Рассматривать %nnn как ASCII-код" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Рассматривать %C, %B как Цвет, Жирный и т.д." + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, Op`ы первыми" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, Op`ы последними" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Не сортировать" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "Слева вверху" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "Слева внизу" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "Справа вверху" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "Справа внизу" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Вверху" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Внизу" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Скрыто" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Список Пользователей" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Показывать хост пользователя в списке пользователей" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Сортировать спиоса пользователе пой " + +#: src/fe-gtk/setup.c:205 +msgid "Show user list at:" +msgstr "Список пользователей:" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Проверка присутствия" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "Следить за ушедшими пользователями и выделять их цветом" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "На каналах меньше, чем:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Действие по двойному щелчку" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Окна" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Закладки" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Всегда" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Только запрошенные закладки" + +#: src/fe-gtk/setup.c:242 +msgid "Tree" +msgstr "Дерево" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "Вид списка:" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Открыть вкладку для сообщений сервера" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Открыть дополнительную вкладку уведомлений сервера" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "Открыть новую вкладку при получении частных сообщений" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Сортировать вкладки в алфавитном порядке" + +#: src/fe-gtk/setup.c:254 +msgid "Smaller text" +msgstr "Мелкий шрифт" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Переходить на новые вкладки:" + +#: src/fe-gtk/setup.c:258 +msgid "Show channel switcher at:" +msgstr "Переключатель каналов:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Сократить метки вкладок до:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "букв." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Вкладки или окна" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Открывать каналы как:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Открывать разговоры как:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Открывать утилиты как:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "" +"Открыть как закладки DCC, Игнорирования, Уведомлений и т.д. или в окне?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "Нет" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Да" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "Запрашивать каталог сохранения" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Файлы и каталоги" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Автоматически принимать файлы:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Загрузить файлы в:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Переместить завершенные файлы в:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Записать ники в файл" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Установки сети" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Получить свой IP от IRC сервера" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Запросить у сервера свой реальный адрес. Используйте, если ваш адрес вида " +"192.168.*.*!" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "DCC IP адрес:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Заявить этот адрес для предложения файлов." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Первая DCC передача через порт:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Последня DCC передача через порт:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!Оставьте 0 для всего диапазона портов." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Максимальная скорость передачи файла (байт в секунду)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Одна заливка:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Макс. скорость для одной передачи" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Одна закачка:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Все передачи объединены:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Максимальная скорость для всех файлов" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Все закачки объединены:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Предупреждения" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "Показывать уведомления при:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "Мигание значка при:" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "Мигание окна при:" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "Звуковой сигнал при:" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "Значок в области уведомлений" + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "Выделенные сообщения" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Выделяются сообщения, в которых упомянуто ваше имя, кроме того:" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "Выделять следующие слова:" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "Не выделять имена:" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "Всегда выделять имена:" + +#: src/fe-gtk/setup.c:347 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" +"Разделяйте слова запятыми.\n" +"Можно использовать шаблоны." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Сообщения по умолчанию" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Выход:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Уйти с канала:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Отошел:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Отошел" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Анонсировать сообщение 'Ушёл'" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Объявляет вас как 'Ушёл' на все каналы к которым вы подключены" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Показывать сообщение 'Ушёл' 1 раз" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Показывать одинаковые сообщения об уходе только один раз" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Автоматически снимать статус \"Отошел\"" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Снять статус \"Отошел\" перед посылкой сообщений" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Дополнительные настройки" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Задержка авто восстановления соединения:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Отображать режимы в чистом виде" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Whois при извещении" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" +"Послать /WHOIS когда пользователь в вашем списке извещений приходит в online." + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Скрыть сообщения о приходе/уходе" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Скрывать сообщения о приходе/уходе по умолчанию" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Автоматически открывать окна DCC" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Окно отправления" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Окно приема" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Окно канала..." + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Протоколирование" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "Загрузить буфер прошлого разговора" + +#: src/fe-gtk/setup.c:387 +msgid "Enable logging of conversations to disk" +msgstr "Запись журнала разговора" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Имя файла журнала:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Сервер %c=Канал %n=Сеть." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Добавлять время в протокол" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Формат времени/даты для протокола:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Выключено)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Все соединения" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "Только IRC серверы" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "Только DCC Get" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Ваш адрес" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Назначить:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "Используется только на компьютерах с несколькими адресами." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Прокси сервер" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Имя машины:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Порт:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Тип:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Использовать прокси для:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Авторизация прокси" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Вход на сервер (только для MS Proxy, HTTP или Socks5)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Использовать авторизацию (только HTTP и Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Имя пользователя:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Пароль:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Выберите файл картинки" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "Загрузить файлы в" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Выберите шрифт" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Выбрать..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Пометить идентифицированных пользователей:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Отметить неидентифицированных пользователей:" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "Открыть каталог с данными" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Выбрать цвет" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Цвета текста" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "Цвета mIRC:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Локальные цвета:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Передний план:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Фон:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Отмеченный текст" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Интерфейс" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Новые данные:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Отмеченый передний план:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Новое Сообщение:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Отошедший пользователь:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Выделение:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Событие" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Звуковой файл" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Выберите звуковой файл" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Метод воспроизведения звука:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "Внешний звуковой проигрыватель:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "Внешняя программа" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "Автоматически" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "Каталог з_вуковых файлов:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Звуковой файл:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "Выбрать..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "Воспрои_звести" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Интерфейс" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Текст" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Список пользователей" + +#: src/fe-gtk/setup.c:1703 +msgid "Channel switcher" +msgstr "Список каналов" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Цвета" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Общение" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Главный" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Звук" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Настройки сети" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Передача файла" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Категории" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" +"Дерево нельзя поместить сверху или снизу!\n" +"Сначала замените его на <b>Вкладки</b> в меню <b>Вид</b>." + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" +"Изменение некоторых настроек требует перезапуска программы для их " +"использования." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*ПРЕДУПРЕЖДЕНИЕ*\n" +"Автоматический прием DCC в ваш домашний каталог\n" +"может быть опасным и создавать уязвимости. Например:\n" +"Кто-нибудь пришлет вам .bash_profile" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "X-Chat: Настройки" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Ошибка при разборе строки" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Этот сигнал передал только %d аргумента, $%d отсутствует." + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Печатать текстовый файл" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Редактировать события" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ номер" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Загрузить из..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Проверить все" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "X-Chat: Сборщик URL" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Очистить список" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Копировать выбранный URL" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Копировать" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Записать список в файл" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d оп-ов, %d всего" + +#~ msgid "Direct client-to-client" +#~ msgstr "Прямое соединение" + +#~ msgid "Send File" +#~ msgstr "Послать файл" + +#~ msgid "Offer Chat" +#~ msgstr "Предложить разговор" + +#~ msgid "Abort Chat" +#~ msgstr "Прервать Разговор" + +#~ msgid "Userinfo" +#~ msgstr "Информация о пользователе" + +#~ msgid "Clientinfo" +#~ msgstr "Информация о клиенте" + +#~ msgid "Time" +#~ msgstr "Время" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "Операция" + +#~ msgid "Kill this user" +#~ msgstr "Убить этого пользователя" + +#~ msgid "Mode" +#~ msgstr "Режим" + +#, fuzzy +#~ msgid "Give Half-Ops" +#~ msgstr "Дать оператора" + +#, fuzzy +#~ msgid "Take Half-Ops" +#~ msgstr "Снять оператора" + +#~ msgid "Ignore" +#~ msgstr "Игнорировать" + +#~ msgid "Ignore User" +#~ msgstr "Игнорировать пользователя" + +#~ msgid "UnIgnore User" +#~ msgstr "Снять игнорирование пользователя" + +#~ msgid "Info" +#~ msgstr "Информация" + +#~ msgid "Who" +#~ msgstr "Кто " + +#~ msgid "DNS Lookup" +#~ msgstr "Просмотр DNS:" + +#~ msgid "Trace" +#~ msgstr "Трассировка" + +#~ msgid "UserHost" +#~ msgstr "Компьютер пользователя" + +#~ msgid "External" +#~ msgstr "Внешние" + +#~ msgid "Traceroute" +#~ msgstr "Traceroute" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "About XChat" +#~ msgstr "Об X-Chat" + +#~ msgid "Unban" +#~ msgstr "Снять бан" + +#~ msgid "Show join/part messages" +#~ msgstr "Сообщать о входе/выходе" + +#~ msgid "Color paste" +#~ msgstr "Вставить цвет" + +#, fuzzy +#~ msgid "_Close Tab" +#~ msgstr "Закрыть вкладку" + +#~ msgid "Channel List..." +#~ msgstr "Список каналов..." + +#~ msgid "Notify List..." +#~ msgstr "Список уведомлений..." + +#, fuzzy +#~ msgid "_Attach Window" +#~ msgstr "Окно" + +#~ msgid "_Close Window" +#~ msgstr "Закрыть окно" + +#~ msgid "User" +#~ msgstr "Пользователь" + +#~ msgid "XChat: Notify List" +#~ msgstr "X-Chat: Список уведомлений" + +#~ msgid "C_hannels to join:" +#~ msgstr "Каналы для входа:" + +#, fuzzy +#~ msgid "Channel Switcher" +#~ msgstr "Список каналов..." + +#~ msgid "%C18*$t$1%O $2" +#~ msgstr "%C18*$t$1%O $2" + +#~ msgid "%C21*%O$t%C21%B$1%O%C21 $2" +#~ msgstr "%C21*%O$t%C21%B$1%O%C21 $2" + +#~ msgid "%C18%B%B$4$1%O%C18%O$t$2" +#~ msgstr "%C18%B%B$4$1%O%C18%O$t$2" + +#~ msgid "$4%C21%B$1%O%C21$t$2" +#~ msgstr "$4%C21%B$1%O%C21$t$2" + +#~ msgid "%C28-%C29$1/$2%C28-%O$t$3" +#~ msgstr "%C28-%C29$1/$2%C28-%O$t$3 " + +#~ msgid "$1$t$2" +#~ msgstr "$1$t$2" + +#~ msgid "%C19>%O$1%C19<%O$t$2" +#~ msgstr "%C19>%O$1%C19<%O$t$2 " + +#~ msgid "%C16*%O$t$1%O" +#~ msgstr "%C16*%O$t$1%O " + +#~ msgid "%C28-%C29$1%C28-%O$t$2" +#~ msgstr "%C28-%C29$1%C28-%O$t$2 " + +#~ msgid "%C28*%C29$3$1%C28*$t%O$2" +#~ msgstr "%C28*%C29$3$1%C28*$t%O$2 " + +#~ msgid "%C18%B%B$3$1%O$t$2" +#~ msgstr "%C18%B%B$3$1%O$t$2 " + +#~ msgid "%C22*%O$t$1" +#~ msgstr "%C22*%O$t$1 " + +#, fuzzy +#~ msgid "%C31%B%B$4$1%O%C30$t$2" +#~ msgstr "%C31%B%B$4$1%O$t%C30$2" + +#~ msgid "PID" +#~ msgstr "PID" + +#~ msgid "France, Metropolitan" +#~ msgstr "Франция, Метрополитен" + +#~ msgid "Neutral Zone" +#~ msgstr "Нейтральная зона" + +#~ msgid "US Minor Outlying Islands" +#~ msgstr "US Minor Outlying Islands" + +#~ msgid "I can't save an empty list!" +#~ msgstr "Невозможно сохранить пустой список" + +#~ msgid "List display options:" +#~ msgstr "Список настроек экрана:" + +#~ msgid "Minimum Users:" +#~ msgstr "Минимальное количество пользователей:" + +#~ msgid "Maximum Users:" +#~ msgstr "Максимальное количество пользователей:" + +#~ msgid "Regex Match:" +#~ msgstr "Поиск RegExp " + +#~ msgid "Apply Match to:" +#~ msgstr "Применить к:" + +#~ msgid "Apply" +#~ msgstr "Применить" + +#~ msgid "Refresh the list" +#~ msgstr "Обновить список" + +#~ msgid "Save the list" +#~ msgstr "Записать список" + +#, fuzzy +#~ msgid "From:" +#~ msgstr "От" + +#, fuzzy +#~ msgid "To:" +#~ msgstr "Кому" + +#, fuzzy +#~ msgid "Size:" +#~ msgstr "Размер" + +#, fuzzy +#~ msgid "Started:" +#~ msgstr "Время начала" + +#, fuzzy +#~ msgid "Speed limit:" +#~ msgstr "Ограничение" + +#~ msgid "MIME Type" +#~ msgstr "MIME Type" + +#~ msgid "X-Chat: File Receive List" +#~ msgstr "X-Chat: Список принимаемых файлов" + +#~ msgid "Open" +#~ msgstr "Откр" + +#~ msgid "Ack" +#~ msgstr "Ack" + +#~ msgid "To" +#~ msgstr "Кому" + +#~ msgid "To/From" +#~ msgstr "Кому/Откуда" + +#~ msgid "DIRECTORY" +#~ msgstr "Каталог" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "Нет открытых вкладок. Выйти из XChat?" + +#~ msgid "Go to" +#~ msgstr "Перейти" + +#~ msgid "Close this tab/window" +#~ msgstr "Закрыть вкладку/окно" + +#~ msgid "User List Buttons" +#~ msgstr "Кнопки Cписка Пользователей" + +#~ msgid "Settings saved." +#~ msgstr "Настройки записаны." + +#~ msgid "New Shell Tab..." +#~ msgstr "Новая вкладка оболочки..." + +#~ msgid "_IRC" +#~ msgstr "_IRC" + +#~ msgid "Invisible" +#~ msgstr "Невидимый" + +#~ msgid "Receive Wallops" +#~ msgstr "Принимать Wallops" + +#~ msgid "Receive Server Notices" +#~ msgstr "Принимать уведомления сервера" + +#~ msgid "Auto Rejoin when Kicked" +#~ msgstr "Автоматически подключаться после выброса" + +#~ msgid "Never-give-up ReConnect" +#~ msgstr "Никогда не прекращать попыток соединиться" + +#~ msgid "Auto Open Dialog Windows" +#~ msgstr "Автоматически открывать диалоговые окна" + +#~ msgid "Auto Accept Direct Chat" +#~ msgstr "Автоматически принимать Direct Chat" + +#~ msgid "Reload Settings" +#~ msgstr "Перечитать настройки" + +#~ msgid "Save Settings now" +#~ msgstr "Сохранить настройки сейчас" + +#~ msgid "Save Settings on exit" +#~ msgstr "Сохранить настройки при выходе" + +#~ msgid "File Receive..." +#~ msgstr "Окно приема файлов..." + +#~ msgid "File Send..." +#~ msgstr "Окно передачи файлов..." + +#~ msgid "Server" +#~ msgstr "Сервер" + +#~ msgid "Save rawlog" +#~ msgstr "Записать лог" + +#~ msgid "Save rawlog..." +#~ msgstr "Сохранить протокол сети..." + +#~ msgid "Close" +#~ msgstr "Закрыть" + +#~ msgid "Connect in new tab" +#~ msgstr "Подключиться в новой вкладке" + +#, fuzzy +#~ msgid "Tint (shade) transparency" +#~ msgstr "Светло прозрачный" + +#~ msgid "Strip mIRC colors" +#~ msgstr "Удалять цвета mIRC" + +#~ msgid "Completes nick names without using the TAB key" +#~ msgstr "Завершать ники без использования клавиши TAB" + +#~ msgid "Input Box Appearance" +#~ msgstr "Оформление окна ввода" + +#~ msgid "Info text" +#~ msgstr "Информация" + +#~ msgid "User list buttons enabled" +#~ msgstr "Включить кнопки списка пользователей" + +#, fuzzy +#~ msgid "Resizable user list" +#~ msgstr "Список пользователей изменяемой ширины" + +#~ msgid "Lag meter:" +#~ msgstr "Измеритель " + +#~ msgid "Throttle meter:" +#~ msgstr "Измеритель ширины канала:" + +#~ msgid "Left" +#~ msgstr "Слева" + +#~ msgid "Right" +#~ msgstr "Справа" + +#~ msgid "Tabs Location" +#~ msgstr "Расположение вкладок" + +#~ msgid "Convert spaces to underscore before sending" +#~ msgstr "Конвертировать пробелы в подчеркивание перед отправкой" + +#~ msgid "(Can be a text file relative to ~/.xchat2/)." +#~ msgstr "(Может быть текстовым файлом относительно каталога ~/.xchat2/)" + +#~ msgid "(Can be a text file relative to config dir)." +#~ msgstr "" +#~ "(Может быть текстовым файлом относительно конфигурационного каталога)" + +#~ msgid "Flash taskbar on highlighted messages" +#~ msgstr "Мерцать на панели задач при получении выделеных сообщений" + +#~ msgid "Beep on channel messages" +#~ msgstr "Звуковой сигнал при получении сообщений на канале" + +#~ msgid "(See strftime manpage for details)." +#~ msgstr "(Смотрите руководство по strftime manpage для деталей)." + +#~ msgid "(disabled)" +#~ msgstr "(Выключено)" + +#~ msgid "A star (*)" +#~ msgstr "Звездочка (*)" + +#~ msgid "A red star (*)" +#~ msgstr "Красная звездочка (*)" + +#~ msgid "%C19>%O$1%C19<%O$t$2%O" +#~ msgstr "%C19>%O$1%C19<%O$t$2%O" + +#~ msgid "Servername" +#~ msgstr "Имя сервера" + +#~ msgid "" +#~ " File: %s\n" +#~ " To/From: %s\n" +#~ " Size: %u\n" +#~ " Port: %d\n" +#~ " IP Number: %s\n" +#~ "Start Time: %s Max CPS: %d\n" +#~ msgstr "" +#~ " Файл: %s\n" +#~ " Кому/От: %s\n" +#~ " Размер: %u\n" +#~ " Порт: %d\n" +#~ " IP адрес: %s\n" +#~ "Время начала: %s Max CPS: %d\n" + +#~ msgid "Add new" +#~ msgstr "Добавить новый" + +#~ msgid "User: %s" +#~ msgstr "Пользователь: %s" + +#~ msgid "Realname: %s" +#~ msgstr "Реальное имя: %s" + +#~ msgid "Server: %s" +#~ msgstr "Сервер: %s" + +#, fuzzy +#~ msgid "Real na_me:" +#~ msgstr "Настоящее имя:" + +#~ msgid "Select a file to save to" +#~ msgstr "Выберите файл для сохранения" + +#, fuzzy +#~ msgid "%C22*%O$t%C28[%O$1%C28] %O$2" +#~ msgstr "-%C10-%C11-%O$t%C12[%O$1%C12] %O$2" + +#~ msgid "Former Czechoslovakia" +#~ msgstr "Чехословакия" + +#~ msgid "Zaire" +#~ msgstr "Заир" diff --git a/xchat-2.8.8/po/sq.gmo b/xchat-2.8.8/po/sq.gmo new file mode 100644 index 0000000000000000000000000000000000000000..f778189779d9aa91aa7fddbae5598dad61e00530 GIT binary patch literal 80217 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 literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/po/sq.po b/xchat-2.8.8/po/sq.po new file mode 100644 index 0000000..66c7706 --- /dev/null +++ b/xchat-2.8.8/po/sq.po @@ -0,0 +1,5923 @@ +# Translation of `xchat' messages to Albanian +# Përkthimi në Shqip i mesazheve të `xchat-it' +# Besnik Bleta <besnik@spymac.com>, 2004. +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.6.0\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2005-11-07 21:49+0200\n" +"Last-Translator: Besnik Bleta <besnik@spymac.com>\n" +"Language-Team: Albanian <translation-team-sq@lists.sourceforge.net>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "S'mund të krijoj ~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Jam i zënë" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Po iki" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* Xhirimi i IRC-së si rrënjë është budallallëk! Duhet\n" +" të krijoni një Llogari Përdoruesi dhe të përdorni atë për t'u futur.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Po pres" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Veprues" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Dështova" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Përmbushur" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Lidhu" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Ndërprerë" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "S'mund të futem në %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Gabim" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "S'ka DCC-ra vepruese\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "PO " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "JO " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Po CTCP përmbyteni prej %s, po shpërfill %s\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "Po MSG përmbyteni prej %s, po vendos gui_auto_open_dialog OFF.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s të lidhur\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s të palidhur\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Pa u bashkuar me ndonjë kanal. Provoni /join #<kanal>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "I palidhur. Provoni /server <strehë> [<portë>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "Më duhet /bin/sh për të xhiruar!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Urdhra të Mundshëm:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Urdhra të përkufizuar nga përdoruesi:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Urdhra të përkufizuar nga shtojca:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Shtypni /HELP <urdhër> për më tepër të dhëna, ose /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Është shpërfillur arg i panjohur '%s'." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "S'gjendet shtojcë e tillë.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Ajo shtojcë nuk pranon të çngarkohet.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTON <emër> <veprim>, shton një buton nën një listë përdoruesi" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <urd>, u dërgon një urdhër tërë kanaleve ku keni hyrë" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <urd>, u dërgon një urdhër tërë kanaleve ku keni hyrë" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <urd>, u dërgon një urdhër tërë shërbyesve ku keni hyrë" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<arsye>], ju tregon të larguar" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <maskë> [<tipndalimi>], i ndalon kanalin e çastit kujtdo që përputhet " +"me maskën. Nëse tashmë janë në kanal kjo nuk i përzë (lyp kanop)" + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "SET [-quiet] <ndryshore> [<vlerë>]" + +#: src/common/outbound.c:3508 +#, fuzzy +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "CLEAR, Pastron tekst në dritaren e çastit" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, Mbyll dritaren/skedën e çastit" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <code|wildcard>, gjen një kod vendi, p.sh.: sq = Shqipëri" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <nofkë> <mesazh>, i dërgon nofkës një mesazh CTCP, mesazhe të rëndomtë " +"janë VERSION dhe USERINFO" + +#: src/common/outbound.c:3516 +#, fuzzy +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "CYCLE, del dhe menjëherë ribashkohet me kanalin e çastit" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <nofkë> - prano një kartelë të ofruar\n" +"DCC SEND [-maxcps=#] <nofkë> [kartelë] - dërgo një kartelë te dikush\n" +"DCC PSEND [-maxcps=#] <nick> [file] - dërgo një kartelë duke përdorur " +"mënyrën pasive\n" +"DCC LIST - shfaq listë DCC\n" +"DCC CHAT <nofkë> - ofro FJALOSJE DCC për dikë\n" +"DCC PCHAT <nick> - ofro FJALOSJE DCC duke përdorur " +"mënyrën pasive\n" +"DCC CLOSE <tip> <nofkë> <kartelë> shembull:\n" +" /dcc close send hasanqerja kartelë.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEOP <nofkë>, i heq nofkës gjendjen gjysëm-kanop për kanalin e çastit (lyp " +"kanop)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTON <emër>, fshin një buton prej që poshtë liste përdoruesish" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <nofkë>, i heq nofkës gjendjen kanop në kanalin e çastit (lyp kanop)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <nofkë>, i heq nofkës gjendjen i zëshëm në kanalin e çasti (lyp " +"kanop)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, Shkëputet prej shërbyesit" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <nofkë|strehë|ip>, Gjen numër IP të një përdoruesi" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <text>, Shfaq tekst lokalisht" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <urdhër>, përmbush urdhrin. Nëse përdoret flamurka -o atëherë " +"përfundimi dërgohet në kanalin e çastit, në të kundërt jepet te kuti " +"tekstesh të çastit" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, dërgon procesin SIGCONT" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], asgjëson një përmbushje që po kryhet në kanalin e çastit. " +"Nëse jepet -9 procesi është \"SIGKILL'ed\"" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, i dërgon procesit SIGSTOP" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, i dërgon të dhënat te proceset \"stdin\"" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, asgjëson mesazhe të çastit që prisnin të dërgoheshin" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" +"GATE <strehë> [<portë>], ndërmjetëson te një strehë përmes një porte, me " +"portë parazgjedhje 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <nofkë> <fjalëkalim>, Asgjëson një emër nofke fantazmë" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <nofkë>, i jep nofkës gjendjen kangjys-op (lyp kanop)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <password>, ju identifikon karshi nickserv" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <maskë> <tipe..> <mundësi..>\n" +" maskë - maskë strehe për t'u shpërfillur, p.sh.: *!*@*.aol.com\n" +" tipe - tipe të dhënash për t'u shpërfillur, një ose tërë prej:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" mundësi - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <nofkë> [<kanal>], fton dikë në një kanal, si parazgjedhje tek kanali " +"i çastit (lyp chanop)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <kanal>, bashkohesh me kanalin" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "KICK <nofkë>, përzë nofkën prej kanalit të çastit (ly chanop)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <nofkë>, i ndalon hyrjen e mandej përzë nofkën prej kanalit të " +"çastit (lyp chanop)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, detyron një kontroll të ri vonese" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <varg>, kërkon në shtytëz për një varg " + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [e] <kartelë>, ngarkon një shtojcë ose një programth" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, Heq gjendje operatori për tërë gjysmëoperatorët e kanalit në kanalin " +"e çastit (lyp kanop)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, Heq gjendje operatori për tërë kanop-ët në kanalin e çastit (lyp " +"kanop)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <veprim>, dërgon veprimin te kanali i çastit (veprimet shprehen në vetën " +"e tretë, si /unë hidhet)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, Përzë në masë cilindon veç jush nga kanali i çastit (lyp chanop)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, Op-on në masë tërë përdoruesit në kanalin e çastit (lyp kanop)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <nofkë> <mesazh>, dërgon një mesazh vetiak" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, Liston nofkat në kanalin e çastit" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <nofkë> <mesazh>, Dërgon një njoftim CTCP" + +#: src/common/outbound.c:3608 +#, fuzzy +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER <strehëemër> [<portë>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <nofkë>, cakton nofkën tuaj" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <nofkë/kanal> <mesazh>, dërgon një njoftim. Njoftimet janë një tip " +"mesazhi ndaj të cilëve vetëreagohet" + +#: src/common/outbound.c:3614 +#, fuzzy +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [<nofkë>], shfaq listën tuaj njofto ose shton dikë në të" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <nofkë>, ijep nofkës gjendje kanop (lyp kanop)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<kanal>] [<arsye>], lë kanalin, si parazgjedhje atë të çastit" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <nofkë | kanal>, CTCP ping për nofkë ose kanal" + +#: src/common/outbound.c:3622 +#, fuzzy +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "QUERY <nofkë>, i hap dikujt një dritare të re mszvet" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<arsye>], shkëputet prej shërbyesit të çastit" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <tekst>, dërgon te shërbyesi tekstin e patrajtuar" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<strehë>] [<portë>] [<fjalëkalim>], Mund të jepet thjesht " +"si /RECONNECT për t'u rilidhur me shërbyesin e çastit ose si /RECONNECT ALL " +"për t'u rilidhur me tërë shërbyesat e hapur" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<strehë>] [<portë>] [<fjalëkalim>], Mund të jepet thjesht si /" +"RECONNECT për t'u rilidhur me shërbyesin e çastit ose si /RECONNECT ALL për " +"t'u rilidhur me tërë shërbyesat e hapur" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <tekst>, i dërgon xchat-it të dhëna bruto, si të merreshin prej " +"shërbyesit irc" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <tekst>, dërgon tekstin te objekti në dritaren e çastit" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <nofkë [<kartelë>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <strehë> <portë> <kanal>, lidhet te dhe bashkohet me një " +"kanal" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN <strehë> <portë> <kanal>, lidhet te dhe bashkohet me një kanal" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <strehë> [<portë>] [<fjalëkalim>], lidhet me një shërbyes, " +"porta parazgjedhje është 6667 për lidhje normale, dhe 9999 për lidhje ssl" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <strehë> [<portë>] [<fjalëkalim>], lidhet me një shërbyes, porta " +"parazgjedhje është 6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-quiet] <ndryshore> [<vlerë>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<pozicion>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<temë>], e cakton si temë nëse jepet një, përndryshe shfaq temën e " +"çastit" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <maskë> [<maskë>...], heq ndalimin për maskat e treguara." + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <maskë> [URTË]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <emër>, çngarkon një shtojcë ose një programth" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, hap një URL në shfletuesin tuaj" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <nofka1> <nofka2> etj, thekson nofkën(at) në listën e " +"përdoruesve të kanalit" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <nofkë>, jep gjendje i zëshëm për dikë (lyp kanop)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <mesazh>, shkruan mesazhin te tërë kanalet" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <mesazh>, dërgon mesazhin te tërë kanopët në kanalin e çastit" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Përdorim: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"S'ka ndihmë rreth këtij urdhri.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "S'ka të tillë urdhër.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Argumente të gabuar për urdhër përdoruesi.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Shumë urdhra përdoruesi ripërsëritës, po ndërpres." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Urdhër i Panjohur. Provoni /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "S'ka shenjë xchat_plugin_init; është kjo vërtet një shtojcë xchat-i?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Jeni të sigurtë se ky është një shërbyes dhe portë me mundësi SSL?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Nuk ftilloj dot emërstrehën %s\n" +"Kontrolloni Rregullimet tuaj IP!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "\"Proxy traversal\" dështoi.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Po cikloj te shërbyesi pasues në %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Kujdes: Gërmat \"%s\" janë të panjohura. Nuk do të zbatohet ndonjë shndërrim " +"për rrjetin %s." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 u shtua te lista njofto." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Listë ndalimesh:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tNuk bashkohet dot me%C26 %B$1 %O(Ju është ndaluar)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 njihet si $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 vendos ndalim mbi $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tKanal $1 krijuar në $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O i heq%C26 $2 gjendjen gjysmë-operator kanali" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O i heq%C26 $2 gjendjen operator kanali" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O i heq%C26 $2 zërin" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 vendos përjashtim ndaj $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O i jep%C26 $2 gjendjen gjysmë-operator kanali" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 cakton ftesë në $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UKanal Përdoruesa Temë" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 cakton mënyrë $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Kanal $1 mënyra: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O i jep%C26 $2 gjendjen operator kanali" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 heq përjashtim ndaj $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 heq ftesë nga $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 heq fjalëkyça kanali" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 heq kufi përdoruesi" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 cakton si fjalëkyç kanali $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 vendos kufi kanali në $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 heq ndalim për $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O i jep zë%C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22I lidhur. Tani po futem.." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22Po lidhem me $1 ($2) porta $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21Lidhja dështoi. Gabim: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tErdhi një CTCP $1 prej $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tErdhi një CTCP $1 prej $2 (te $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tErdhi një Tingull CTCP $1 prej $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tErdhi një Tingull CTCP $1 prej $2 (te $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tFJALOSJA DCC te %C26$1%O dështoi." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$tLidhje FJALOSJEJE DCC me %C26$1 %C30[%O$2%C30] e vendosur" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tFjalosje DCC me %C26$1%O e humbur ($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tErdhi një ofertë FJALOSJEJE DCC prej $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tPo ofroj FJALOSJE DCC për $1" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tKeni ofruar një herë FJALOSJE për $1" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$tDCC $1 dështoi përpjekja për lidhje me%C26 $2%O (err=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tMora '$1%O' prej $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 Tip Prej/Për Gjendje Madhësi Pos Kartelë " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O.%010%C22*%O" +"$tContents of packet: $2" +msgstr "" +"%C22*%O$tErdhi prej %C26$1%O një kërkesë DCC e keqformuar.%010%C22*%O" +"$tPërmbajtje pakete: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tPo ofroj%C26 $1%O te%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tNuk ka një ofertë DCC të tillë." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV%C26 $2%O për%C26 $1%O dështoi." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC RECV%C26 $1%O prej%C26 $3%O e plotësuar %C30[%C26$4%O cps%C30]%" +"O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tLidhje DCC RECV me%C26 $1 %C30[%O$2%C30] e vendosur" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV%C26 $1%O prej%C26 $3%O dështoi ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV: Nuk hap dot $1 për shkrim ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "" +"%C22*%O$tKa tashmë një kartelë%C26 $1%C, ndaj po e ruaj te%C26 $2%O ndryshe." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Oka kërkuar të rimarrë%C26 $2 %Cprej%C26 $3%C." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC SEND%C26 $2%O te%C26 $1%O u ndërpre." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC SEND%C26 $1%O te%C26 $2%O i plotësuar %C30[%C26$3%O cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tLidhje DCC SEND me%C26 $1 %C30[%O$2%C30]e vendosur" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND%C26 $1%O te%C26 $2%O dështoi. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Oka ofruar%C26 $2 %O(%C26$3 %Obytes)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Ote%C26 $3 %Cu bajatos - po e ndërpres." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC-s $1%C26 $2 %Ote%C26 $3 %Oi mbaroi koha - po e ndërpres." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 u hoq prej liste njoftimesh." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tI shkëputur ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tU gjet IP-ja juaj: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O ju shtua listës së shpërfilljeve." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "U ndryshua shpërfill mbi %C26$1%O." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "" +"%C24,18 Strehëmaskë PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O hequr prej liste shpërfill." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr "Lista shpërfill është e zbrazët." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "" +"%C22*%O$tnuk mund t'i bashkangjitet%C26 %B$1 %O(Kanali është vetëm me ftesa)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tJeni ftuar te%C26 $1%O prej%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) i është bashkuar $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$tNuk mund të bashkohet me%C26 %B$1 %O(Lipset fjalëkyç)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 ka përzënë $2 prej $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$tJeni asgjësuar prej $1 ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD Anashkaluar." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 tashmë i përdorur. Po provoj me $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$tNofkë tashmë në përdorim. Përdorni /NICK për të provuar një tjetër." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tNuk ka DCC të tillë." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tPër çastin nuk ka proces në xhirim" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tLista njofto është e zbrazët." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Listë Njoftimesh " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 përdoruesë në listë njoftimesh." + +#: src/common/textevents.h:282 +#, fuzzy +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tNjofto: $1 është i palidhur ($2)." + +#: src/common/textevents.h:285 +#, fuzzy +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tNjofto: $1 është i lidhur ($2)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) ka ikur $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) ka ikur $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tPërgjigje ping prej $1 : $2 sekonda" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tPa përgjigje ping për $1 sekonda, po shkëputem." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tKa një proces në xhirim e sipër" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 ka lënë (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 cakton mënyra%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tPo kërkoj numra IP për%C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22I lidhur." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22Po kërkoj $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tU ndalua përpjekja e mëparshme për lidhje (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29Temë për $1%C %C29is: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 ka ndryshuar temën në: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29Temë për $1%C %C29e caktuar prej $2%C %C29më $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tStrehë e panjohur. Mundet e shkruajtët keq?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "" +"%C22*%O$tNuk mund të bashkoheni me%C26 %B$1 %O(Është arritur kufi " +"përdoruesish)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Përdoruesa në $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cka dalë %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OFund i listës WHOIS." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O pa ngarkesë%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O p ngarkesë%C26 $2%O, signon:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" +"%C22*%O$t%C28[%O$1%C28] %Opërdorues real@host%C27 $2%O, IP reale%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Tani po flisni tek $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tJeni përzënë prej $2 nga $3 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tKeni lënë kanalin $3" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tKeni lënë kanalin $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tKeni ftuar%C26 $1%O te%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tTani njiheni si $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** PO PËRFUNDOJ REGJISTRIM NË %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** PO FILLOJ REGJISTRIM NË %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* S'hap dot kartelë(a) për të shkruajtur. Kontrolloni\n" +" lejet tek %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Mesazh majtas" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Mesazh djathtas" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "Nofka e personit që po hyn" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "Kanali ku po hyhet" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "Streha e personit" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Nofkë" + +#: src/common/text.c:973 +msgid "The action" +msgstr "Veprimi" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Gërma mënyre" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Tekst i identifikuar" + +#: src/common/text.c:980 +msgid "The text" +msgstr "Teksti" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Mesazhi" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Nofkë e vjetër" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Nofkë e re" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Nofkë e personit që ndryshoi temë" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Temë" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Kanal" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "Nofka e përzënësit" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "Personi që po përzihet" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "Kanali" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "Arsyeja" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "Nofka e personit që po ikën" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "Koha" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "Krijuesi" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Nofkë" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Arsye" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Strehë" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "Kush është prej" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "Koha në format x.x (shih më poshtë)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "Kanali ku po shkohet" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "Tingulli" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "Nofka e personit" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "Ngjarja CTCP" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "Nofka e personit që caktoi kyçin" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "Kyçi" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "Nofka e personit që caktoi kufirin" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "Kufiri" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "Nofka e personit që bëri op-im" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "Nofka e personit që u op-ua" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "Nofka e personit që është gjysmëop-uar" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "Nofka e personit që bëri gjysmëop-im" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "Nofka e personit që dha zë" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "Nofka e personit që u bë i zëshëm" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "Nofka e personit që bëri ndalimin" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "Maska e ndalimit" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "Nofka që hoqi kyçin" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "Nofka që hoqi kufirin" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "Nofka e personit që bëri deopimin" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "Nofka e personit që u deopua" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "Nofka e personit që bëri gjysmëdeopimin" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Nofka e personit që u gjysmëdeopua" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "Nofka e personit që bëri çzanimin" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "Nofka e personit që u çzanua" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "Nofka e personit që hoqi ndalimin" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "Nofka e personit që bëri përjashtimin" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "Maska e përjashtimit" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "Nofka e personit që hoqi përjashtimin" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "Nofka e personit që bëri ftesën" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "Maska e ftesës" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "Nofka e personit që hoqi ftesën" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "Nofka e personit që po cakton mënyrën" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "Shenja mënyre (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "Gërma e mënyrës" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "Kanali është duke u bërë gati" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Emër përdoruesi" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Emër i plotë" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Anëtarësi Kanali/\"është një operator IRC\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Të dhëna Shërbyesi" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Kohë bosh" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Kohë nënshkrimi" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Arsye largimi" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Mesazh" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Llogari" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "përdorues@strehë e vërtetë" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "IP reale" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Emër Kanali" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Tekst" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Emër Shërbyesi" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Nofkë e personit që ju ftoi" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Përdoruesa" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Nofkë në përdorim" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Nofkë që po provohet" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Portë" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Rrjet" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Varg mënyrash" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "Vendndodhje IP" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "Tip DCC-je" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Emër kartele" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Emër kartele vendmbrritjeje" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Emër shtegu" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Vendndodhje" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Madhësi" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "Varg DCC" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Numër objektesh njofto" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Emër i Vjetër kartele" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Emër i Ri kartele" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Marrës" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Strehëmaskë" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Emërstrehë" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "Paketa" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Sekonda" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Nofkë e personit që është ftuar" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Maskë ndalimesh" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Kush vendosi ndalimin" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Kohë ndalimi" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Gabim në trajtimin e ngjarjes %s.\n" +"Po ngarkoj parazgjedhje." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"S'lexoj dot kartelë tingulli:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "Streha e largët mbylli \"socket\"-in" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Ndërlidhje e papranuar" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "S'ka udhë për te strehë" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Mbaroi koha e ndërlidhjes" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Nuk mund të caktoj atë vendndodhje" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Lidhje e rivendosur nga tjetri" + +#: src/common/util.c:848 +#, fuzzy +msgid "Ascension Island" +msgstr "Ishujt Kokos" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Emiratet e Bashkuar Arabë" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Afganistan" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Antigua dhe Barbuda" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Anguila" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Shqipëri" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Armeni" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Antilet Holandeze" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Angolë" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Antarktidë" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Argjentinë" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "Përmbys DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Samoa Amerikane" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Austri" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "Nato Fiel" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Australi" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:866 +#, fuzzy +msgid "Aland Islands" +msgstr "Ishujt Falkland" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Azerbaixhan" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Bosnjë-Hercegovinë" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Bangladesh" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Belgjikë" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Bullgari" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Bahrain" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Biznese" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Brunei Darussalam" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Bolivi" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Brazil" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Bahamas" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Butan" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Ishulli Bouvet " + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Botsvana" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Bjelorusi" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Kanada" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Ishujt Kokos" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "Republika Demokratike e Kongos" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "Republika e Afrikës Qendrore" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Kongo" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Zvicër" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Bregu i Fildishtë" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Ishujt Kuk" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Kili" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Kamerun" + +#: src/common/util.c:898 +msgid "China" +msgstr "Kinë" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Kolumbi" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Tregtar Internic" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Kosta Rika" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Serbi dhe Mal i Zi" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Kubë" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Kepi i Gjelbër" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Ishulli i Krishtlindjeve" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Qipro" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "Republika Çeke" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Gjermani" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Xhibut" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Danimarkë" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Dominika" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "Republika Dominikane" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Algjeri" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Ekuador" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Institucione Edukimi" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Estoni" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Egjypt" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Sahara Perëndimore" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Eritre" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Spanjë" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Etiopi" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Finlandë" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Fixhi" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Ishujt Falkland" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Mikronezi" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Ishujt Faroe" + +#: src/common/util.c:928 +msgid "France" +msgstr "Francë" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Britani e Madhe" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Georgji" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Guajana Franceze" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Ishujt e Kanalit Britanik" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Gana" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Gjibraltar" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Groenlandë" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Qeveri" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Guadalup" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Guinea Ekuatoriale" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Greqi" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Georgji" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Guinea-Bissau" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Guajana" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Ishujt Heard dhe McDonald" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Kroaci" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Hungari" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Indonezi" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Irlandë" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Izrael" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "" + +#: src/common/util.c:959 +msgid "India" +msgstr "Indi" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Informativ" + +#: src/common/util.c:961 +msgid "International" +msgstr "Ndërkombëtar" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Territoret Britanike të Oqeanit Indian" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Irak" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Iran" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Islandë" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Itali" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Xhamaika" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Jordani" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Japoni" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Kenia" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Kirgizstan" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Kamboxhia" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Komore" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "Shën Kits dhe Nevis" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Kore e Veriut" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Kore e Jugut" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Kuvait" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Ishujt Kajman" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Kazakistan" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Liban" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Santa Luçia" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Lihtenshtein" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Liberi" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Lesoto" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Lituani" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Luksemburg" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Latvi" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Libi" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Marok" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Monako" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Moldavi" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "Mjeksor i Shteteve të Bashkuara" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Madagaskar" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Ishujt Marshall" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Ushtarake" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Maqedonia" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Mianmar" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Mongoli" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Makau" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Ishujt Veriorë Mariana" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Martinikë" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Mauritani" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Maltë" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Mauricius" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Maldive" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Malaui" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Meksikë" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Malajzi" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Mozambik" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Namibi" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Kaledonia e Re" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Niger" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Rrjet Internic" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Ishujt Norfolk" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Nigeri" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Nikaragua" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Holandë" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Norvegji" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Zelandë e Re" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Organizëm Jofitimprurës Internic" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Polinezia Franceze" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Papua Guinea e Re" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Filipine" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Poloni" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "Shën. Pier dhe Mikëlon" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Pitkern" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Porto Riko" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Territor Palestinez" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Portugali" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Paraguaj" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Katar" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Ribashkim" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Rumani" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "Old School ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Federata Ruse" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Ruandë" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Arabi Saudite" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Ishujt Solomon" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Sejshelle" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Sudan" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Suedi" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Singapor" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "Shën Helena" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Slloveni" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Ishujt Svalbard dhe Jan Mayen" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Republika Slovake" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Somali" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Surinam" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "Sao Tome dhe Principe" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Ish USSR" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Siri" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Svaziland" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Ishujt Turks dhe Caicos" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Çad" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Territoret Franceze Jugore" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Tailandë" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Taxhikistan" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Timori Lindor" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Tunizi" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Turqi" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Trinidad dhe Tobago" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Taivan" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Tanzani" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Ukrainë" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Mbretëri e Bashkuar" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "Shtetet e Bashkuar të Amerikës" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Uruguaj" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Uzbekistan" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Qytetshteti i Vatikanit" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "Shën. Vincent dhe Grenadinet" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Venezuelë" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Ishujt British Virgin" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "Ishujt US Virgin" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Ishujt Wallis dhe Futuna" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Jemen" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Majot" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Serbi dhe Mali i Zi" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Afrikë e Jugut" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Zambia" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Zimbabve" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "I panjohur" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "Hap Dritare Dialogu" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "Dërgo Kartelë" + +#: src/common/xchat.c:728 +#, fuzzy +msgid "_User Info (WhoIs)" +msgstr "Të dhëna Përdoruesi (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +#, fuzzy +msgid "O_perator Actions" +msgstr "Veprime Operatori" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Jepi Op" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Hiqi Op" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Jepi Zë" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Hiqi Zë" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Përzër/Ndalo" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Përzër" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Ndalo" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "Përzënie" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Lër Kanal" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Hyni në Kanal..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Jepni Kanal ku të Hyhet:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Lidhje Shërbyesish" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Ping Shërbyes" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Fshih Version" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Op" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "Çop" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "bye" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Jepni arsye për të përzënë %s:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Dërgokartelë" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Dialog" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "KushËshtë" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Dërgo" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Fjalosje" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Pastro" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "S'u lidha dot me busin e sesionit" + +#: src/common/dbus/dbus-client.c:86 +#, fuzzy +msgid "Failed to complete NameHasOwner" +msgstr "Dështova në përmbushjen e urdhrit" + +#: src/common/dbus/dbus-client.c:112 +#, fuzzy +msgid "Failed to complete Command" +msgstr "Dështova në përmbushjen e urdhrit" + +#: src/common/dbus/dbus-plugin.c:30 +#, fuzzy +msgid "remote access" +msgstr "S'mund të futem në %s\n" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:897 +#, fuzzy, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Nuk u lidha dot me busin e sesionit : %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, fuzzy, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Dështova në pasjen" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "_Rreth" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Një Klient IRC shumëplatformësh" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Tabelë Gërmash" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "I palidhur" + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Duhet të përzgjidhni disa ndalime." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Maskë" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "Prej" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Datë" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" +"Mundeni të hapni dritaren e Listës së Ndalimeve vetëm kur jeni në një skedë " +"kanali" + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: Listë Ndalimesh (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Hiq" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Rifresko" + +#: src/fe-gtk/chanlist.c:111 +#, fuzzy, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Statistika Përdoruesish dhe Kanali: %d/%d Përdorues në %d/%d Kanale" + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Zgjidhni një emër kartele përfundim" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +#, fuzzy +msgid "_Join Channel" +msgstr "Hyni në Kanal" + +#: src/fe-gtk/chanlist.c:633 +#, fuzzy +msgid "_Copy Channel Name" +msgstr "Emër Kanali" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: Listë Kanalesh (%s)" + +#: src/fe-gtk/chanlist.c:781 +#, fuzzy +msgid "_Search" +msgstr "XChat: Kërko" + +#: src/fe-gtk/chanlist.c:787 +#, fuzzy +msgid "_Download List" +msgstr "Shkarko kartela te:" + +#: src/fe-gtk/chanlist.c:793 +#, fuzzy +msgid "Save _List..." +msgstr "Listë _Shërbyesish..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "" + +#: src/fe-gtk/chanlist.c:818 +#, fuzzy +msgid "channels with" +msgstr "kanal" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:843 +#, fuzzy +msgid "users." +msgstr "Përdoruesa" + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:861 +#, fuzzy +msgid "Channel name" +msgstr "Emër Kanali" + +#: src/fe-gtk/chanlist.c:882 +#, fuzzy +msgid "Search type:" +msgstr "Kërko Tekst..." + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:890 +#, fuzzy +msgid "Pattern Match (Wildcards)" +msgstr "Përputhje \"Regex\":" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Gjej:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Dërgo kartelë te %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Kjo kartelë nuk është e përmbledhshme." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"S'hyj dot në kartelën: %s\n" +"%s.\n" +"Rimarrje jo e mundur." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"Kartela në drejtorinë e shkarkimit është më e madhe se kartela e ofruar. " +"Rimarrje jo e mundur." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "Nuk mund të rimarr të njëjtën kartelë prej dy personash" + +#: src/fe-gtk/dccgui.c:745 +#, fuzzy +msgid "XChat: Uploads and Downloads" +msgstr "XChat: Urdhra të Përcaktuar nga Përdoruesi" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Gjendje" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Kartelë" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Të dyja" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "" + +#: src/fe-gtk/dccgui.c:804 +#, fuzzy +msgid "Downloads" +msgstr "Shkarko kartela te:" + +#: src/fe-gtk/dccgui.c:809 +#, fuzzy +msgid "Details" +msgstr "Hollësi Tuajat" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Kartelë:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "Vendndodhje:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Ndërprit" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Prano" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Rimerr" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "" + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: Listë Fjalosjeje DCC" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Marr" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Dërguar" + +#: src/fe-gtk/dccgui.c:1004 +#, fuzzy +msgid "Start Time" +msgstr "KohëFillim" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*I RI*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "PËRPUNOMË" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Emër" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Urdhër" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Ngjitu" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Zbrit" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Anulo" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Ruaj" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Shto të Ri" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Fshij" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Rendit" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Ndihmë" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "Mos u vetërilidhu me shërbyesa" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "Përdor një tjetër drejtori config" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "Mos vetëngarko ndonjë shtojcë" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "Shfaq drejtori shtojcash vetëngarkuese" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "Përdor drejtori config të përdoruesit" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Hap një URL irc://shërbyes:portë/kanal" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Përmbush urdhër:" + +#: src/fe-gtk/fe-gtk.c:132 +msgid "Open URL or execute command in an existing XChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +#, fuzzy +msgid "level" +msgstr "Kurrë" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Shfaq të dhëna versioni" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"Dështova në hapje gërmash:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "Shtytëza e kërkimeve është e zbrazët.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d bytes" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Radhë dërgimi rrjeti: %d bajte" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"Veprimi Run Command lëshon të dhënat në Të Dhëna 1 si të ishin shkruajtur në " +"kuti dhënieje kur shtypët varg tastesh. Kështu që mund të përmbajë tekst (i " +"cili do t'i dërgohet kanalit/personit), urdhra ose urdhra përdoruesi. Kur " +"jepet tërë, shenjat \\ në Të Dhëna 1 përdoren për të ndarë urdhra të " +"veçantë që kështu të mundet të jepen më shumë se një urdhër. Nëse doni një " +"\\ në tekstin në fjalë jepni \\\\" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"Urdhri Change Page bën kalimin midis faqesh në bllok shënimesh. Cakton si " +"Data 1 faqen ku doni të kalohet. Nëse si Data 2 është caktuar dicka tjetër " +"atëherë kalimi do të bëhet duke ju referuar pozicionit të çastit" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"Urdhri Fut në Shtytëz do të fusë përmbajtjen e Data 1 te pjesa ku u shtyp " +"vargu i tasteve te vendndodhje çasti e kursorit" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"Urdhri Zhvendos Faqe rrëshqet pjesën e tekstit lart ose poshtë me një faqe " +"ose një rresht. Caktojeni Data 1 si Up, Down, +1 ose -1." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"Urdhri Vendos Shtytëz vendos futjen atje ku u shtyp varg tastesh te " +"përmbajtja e Data 1" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"Urdhri Urdhri i Fundit bën që si hyrje të jetë urdhri i fundit i dhënë - " +"njësoj si shtypja e shigjetës sipër brenda një shelli" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"Urdhri Next Command e bën zërin në fjalë të përmbajë urdhrin pasues që jepet " +"- njësoj si shtypja e shigjetës poshtë brenda një shelli" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Ky urdhër ndryshon tekstin që jepet për të përfunduar një urdhër apo një " +"nofkë ende jo të plotësuar. Nëse është rregulluar Të dhëna 1 atëherë shtypja " +"dyshe e tastit tab në një varg do të zgjedhë nofkën e fundit, jo pasuesen" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Ky urdhër kryen lëvizjen lart e poshtë nëpër listë nofkash. Nëse është dhënë " +"diçka si Data 1shkohet sipër, ndryshe zbritet poshtë" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Ky urdhër kontrollon fjalën e fundit të dhënë përkundër listës zëvendëso dhe " +"bën zëvendësim nëse gjendet përputhje" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Ky urdhër zhvendos skedën ballore majtas me një " + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Ky urdhër zhvendos skedën ballore djathtas me një" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Ky urdhër zhvendos grupin e skedave të çastit majtas" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Ky urdhër zhvendos grupin e skedave të çastit djathtas" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "I kalon historikut rresht dhënieje por nuk ja dërgon shërbyesit" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "Pati një gabimi gjatë ngarkimit të formësimit për funksione tastesh" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<asnjë>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Ndry" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Kyç" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Veprim" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: Shkurtprerje Tastiere" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Të dhëna 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Të dhëna 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Gabim në hapje kartele formësimi tastesh\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Emër i panjohur kyçi %s në kartelë formësimi funksionesh kyçash\n" +"Ngarkimi u ndërpre, ju lutem ndreqni %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Veprim i panjohur %s në kartelë formësimi funksionesh kyçash\n" +"Ngarkimi u ndërpre, ju lutem ndreqni %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Pritej rresht Të Dhënash (që fillon me Dx{:|!}) por u mor:\n" +"%s\n" +"\n" +"Ngarkimi u ndërpre, ju lutem ndreqni %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"Kartela e formësimit të funksioneve të kyçeve është e dëmtuar, ngarkim i " +"ndërprerë\n" +"Ju lutem ndreqni %s/keybindings.conf\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "S'mund të shkruaj tek kjo kartelë." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "S'mund të lexoj këtë kartelë." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Ka tashmë një maskë si kjo." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Vetiake" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Njofto" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Fto" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Çshpërfill" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Jepni maskë që do të shpërfillet:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: Listë shpërfilljesh" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Statistika Shpërfilljesh:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Kanal:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Vetiake:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Njofto:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Fto:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +#, fuzzy +msgid "Add..." +msgstr "Shto" + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "" + +#: src/fe-gtk/joind.c:125 +#, fuzzy +msgid "XChat: Connection Complete" +msgstr "Mbaroi koha e ndërlidhjes" + +#: src/fe-gtk/joind.c:150 +#, fuzzy, c-format +msgid "Connection to %s complete." +msgstr "Lidhje e rivendosur nga tjetri" + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "" + +#: src/fe-gtk/joind.c:179 +#, fuzzy +msgid "_Join this channel:" +msgstr "Hyni në Kanal" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" + +#: src/fe-gtk/joind.c:198 +#, fuzzy +msgid "O_pen the Channel-List window." +msgstr "Hap kanale në:" + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "" + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Dialog me" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Tema për %s është: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Nuk është caktuar temë" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"Ky shërbyes ka ende %d kanale apo dialogje të lidhur me të. Ti mbyll të tërë?" + +#: src/fe-gtk/maingui.c:1283 +#, fuzzy +msgid "Quit XChat?" +msgstr "Rreth X-Chat-it" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1310 +#, fuzzy, c-format +msgid "You are connected to %i IRC networks." +msgstr "Vetëlidhu me këtë rrjet gjatë nisjes" + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "" + +#: src/fe-gtk/maingui.c:1314 +#, fuzzy +msgid "Some file transfers are still active." +msgstr "Shpërngulje kartelash në përmbushje e sipër, ta lë xchat-in?" + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Fut Kod Ngjyre ose Atributi" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Të trasha</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Nënvizuar</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Normal" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Ngjyra 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Ngjyra 8-15" + +#: src/fe-gtk/maingui.c:1612 +#, fuzzy +msgid "_Settings" +msgstr "Rr_egullime" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "Fshih mesazhe ardhjesh dhe ikjesh" + +#: src/fe-gtk/maingui.c:1625 +#, fuzzy +msgid "_Extra Alerts" +msgstr "Ngjyra ekstra:" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "Bip në mesazhe" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +#, fuzzy +msgid "_Detach" +msgstr "_Shqit Skedë" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "-Mbyll" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "Kufi përdoruesish duhet të jetë një numër!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Mbrojtje Teme" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Jo mesazhe nga jashtë" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Sekret" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Vetëm me Ftesa" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Ndryshuar" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Listë Ndalimesh" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Fjalëkyç" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Kufi Përdoruesi" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Shfaq/Fshih listë përdoruesish" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"I pazoti të vendos ngjyrë të tejdukshme!\n" +"\n" +"Mund të jeni duke përdorur përgjegjës\n" +"dritaresh të papërputhshëm që nuk mbulohet ende.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Jepni nofkën e re:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Strehë e panjohur" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Emër i Vërtetë:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Përdorues:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "Vend:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Shërbyes:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "%u minuta më parë" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Msz i Fundit:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Mesazh Largimi:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"Paneli i menuve tashti është i fshehur. Mund ta shfaqni sërish duke shtypur " +"F9 ose duke djathtasklikuar në një pjesë bosh të zonës kryesore për tekste" + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Hap Lidhje në Shfletues" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Kopjo Lidhjen e Përzgjedhur" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Hyni në Kanal" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Dil prej Kanali" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Ciklo Kanal" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: Menu përdoruesi" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Përpuno Këtë Menu..." + +#: src/fe-gtk/menu.c:1280 +#, fuzzy +msgid "Retrieve channel list..." +msgstr "Listë Kanalesh..." + +#: src/fe-gtk/menu.c:1348 +#, fuzzy +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Urdhra Përdoruesi - Kode specialë:\n" +"\n" +"%c = kanal i çastit\n" +"%m = të dhëna makine\n" +"%n = nofka juaj\n" +"%t = kohë/datë\n" +"%v = version i xchat-it\n" +"%2 = fjala 2\n" +"%3 = fjala 3\n" +"&2 = fjala 2 në fundin e një rreshti\n" +"&3 = fjala 3 në fundin e një rreshti\n" +"\n" +"p.sh.:\n" +"/cmd gjon tungjatjeta\n" +"\n" +"%2 mund të ishte \"gjon\"\n" +"&2 mund të ishte \"gjon tungjatjeta\"." + +#: src/fe-gtk/menu.c:1364 +#, fuzzy +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Butona Liste Përdoruesish - Kode specialë:\n" +"\n" +"%a = tërë nofkat e përzgjedhura\n" +"%c = kanali i çastit\n" +"%h = strehëemri për nofkën e përzgjedhur\n" +"%m = të dhëna makine\n" +"%n = nofka juaj\n" +"%s = nofka e përzgjedhur\n" +"%t = kohë/datë\n" + +#: src/fe-gtk/menu.c:1374 +#, fuzzy +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Butona Dialogjesh - Kode specialë:\n" +"\n" +"%a = tërë nofkat e përzgjedhura\n" +"%c = kanali i çastit\n" +"%h = strehëemri për nofkën e përzgjedhur\n" +"%m = të dhëna makine\n" +"%n = nofka juaj\n" +"%s = nofka e përzgjedhur\n" +"%t = kohë/datë\n" + +#: src/fe-gtk/menu.c:1384 +#, fuzzy +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"Përgjigje CTCP - Kode specialë:\n" +"\n" +"%d = të dhëna (ctcp i plotë)\n" +"%m = të dhëna makine\n" +"%s = nofka që dërgoi ctcp\n" +"%t = kohë/datë\n" +"%2 = fjala 2\n" +"%3 = fjala 3\n" +"&2 = fjala 2 në fundin e një rrjeshti\n" +"&3 = fjala 3 në fundin e një rrjeshti\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"Trajtuesa URL - Kode specialë:\n" +"\n" +"%s = vargu URL\n" +"\n" +"Vendosja e një ! para një urdhri\n" +"tregon që ky do të duhej dërguar te një\n" +"shell dhe jo te X-Chat-i" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: Urdhra të Përcaktuar nga Përdoruesi" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: Menu flluckë Liste Përdoruesish" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Zëvendësoje me" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: Zëvendëso" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: Trajtuesa URL" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: Butona liste përdoruesish" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: Butona dialogu" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: Përgjigjje CTCP" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +#, fuzzy +msgid "Network Li_st..." +msgstr "Rregullim rrjeti" + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "_E re" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Skedë Shërbyesi..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Skedë Kanali..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Dritare Shërbyesi..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Dritare Kanali..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "_Ngarko Shtojcë ose Programth..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "_Lër" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "_Parje" + +#: src/fe-gtk/menu.c:1591 +#, fuzzy +msgid "_Menu Bar" +msgstr "_Shtyllë Menush" + +#: src/fe-gtk/menu.c:1592 +#, fuzzy +msgid "_Topic Bar" +msgstr "_Shtyllë Temash" + +#: src/fe-gtk/menu.c:1593 +#, fuzzy +msgid "_User List" +msgstr "Listë Përdoruesish" + +#: src/fe-gtk/menu.c:1594 +#, fuzzy +msgid "U_serlist Buttons" +msgstr "Butona _Liste përdoruesish" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "Butona Mën_yre" + +#: src/fe-gtk/menu.c:1597 +#, fuzzy +msgid "_Channel Switcher" +msgstr "Listë Kanalesh..." + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "_Skeda" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "_Pemë" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "Matësa _Rrjeti" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Asnjë" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Grafik" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "_Shërbyes" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "_Shkëputu" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "_Rilidhu" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "Hyni në Kanal..." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "Hyni në Kanal..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Shenjuar si i Larguar" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "_Menu përdoruesi" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "Rr_egullime" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "Parapëlqime" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Të mëtejshme" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Vetëzëvendëso..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "Përgjigje CTCP..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Butona Dialogu..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Shkurtprerje Tastiere..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Ngjarje Tekst..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "Trajtuesa URL..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Urdhra Përdoruesi..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Butona Liste përdoruesish..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Flluckë Liste përdoruesish..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_Dritare" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Listë Ndalimesh..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Tabelë Gërmash..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Fjalosje e Drejtpërdrejtë..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Shpërngulje Kartelash" + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "Listë Ndalimesh..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Listë Shpërfilljesh..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Shtojca dhe Programthe..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Regjistrim Bruto..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "Kopjues URL-sh..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Ricakto Vijë Shënimi" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "P_astro Tekst" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Kërko Tekst..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Ruaj Tekst..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_Ndihmë" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "_Përmbajtje" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "_Rreth" + +#: src/fe-gtk/menu.c:2147 +#, fuzzy +msgid "_Attach" +msgstr "_Dritare Bashkangjitjesh" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Parë së Fundmi" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Jo i lidhur" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Kurrë" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, fuzzy, c-format +msgid "%d minutes ago" +msgstr "%u minuta më parë" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "I lidhur" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Jepni nofkë për ta shtuar:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "XChat: Listë Dërgimesh Kartelash" + +#: src/fe-gtk/notifygui.c:434 +#, fuzzy +msgid "Open Dialog" +msgstr "Hap Dritare Dialogu" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:591 +#, fuzzy +msgid "_Hide" +msgstr "Fshehur" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +#, fuzzy +msgid "Channel Message" +msgstr "Emër Kanali" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +#, fuzzy +msgid "Private Message" +msgstr "Bip në mesazhe vetiakë" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +#, fuzzy +msgid "Highlighted Message" +msgstr "Bip në mesazhe të theksuar" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "Larguar" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Version" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Përshkrim" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Zgjidhni një Shtojcë ose një Programth për t'u ngarkuar" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: Shtojca dhe Programthe" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "_Ngarko..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "_Çngarko" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Ruaj Si..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: Regjistrim bruto (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Pastro regjistrim bruto" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "Dritarja prej ku hapët këtë Kërkim nuk ekziston më." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "" + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: Kërko" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "" + +#: src/fe-gtk/search.c:153 +#, fuzzy +msgid "_Find" +msgstr "Gjej" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Rrjet i Ri" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Të heq vërtet rrjetin \"%s\" dhe tërë shërbyesit e tij?" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "kanal" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: Listë Kanalesh (%s)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "Fjalëkalim:" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "_Përpuno" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "Emri i përdoruesit dhe emri i vërtetë nuk mund të lihen bosh." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: Përpuno %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Shërbyesa për %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Lidhu vetëm me shërbyesin e përzgjedhur" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Mos ciklo nëpër tërë shërbyesit kur dështon lidhja." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Hollësi Tuajat" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Përdor të dhëna të përgjithshme përdoruesi" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "Nofkë:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Zgjedhje e dytë:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "_Emër përdorues:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "Emër i _vërtetë:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Lidhje" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Vetëlidhu me këtë rrjet gjatë nisjes" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "Shërbyes \"Proxy\"" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "Përdor SSL për tërë shërbyesit në këtë rrjet" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Prano dëshmi SSL të mangëta" + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "Lër kanal:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "Kanale ku të hyhet, ndarë me presje, por pa hapësira!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Urdhër lidhjeje:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Urdhër ekstra për t'u përmbushur pas lidhjes. Nëse ju duhet më tepër se një, " +"vëreni këtë si LOAD -e <emër kartele>, ku <emër kartele> është një kartelë " +"tekst mbushur plot me urdhrapër t'u përmbushur." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Fjalëkalim nofke shërbyesi:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Nëse nofka juaj lyp fjalëkalim, jepeni atë këtu. Jo tërë rrjetet IRC e " +"mbulojnë këtë." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Fjalëkalim shërbyesi:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Fjalëkalim për shërbyesin, po qetë në mëdyshje, lëreni bosh." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Gërma:" + +#: src/fe-gtk/servlistgui.c:1649 +#, fuzzy +msgid "XChat: Network List" +msgstr "XChat: Listë Njoftimesh" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Të dhëna Shërbyesi" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Zgjedhje e tretë:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Rrjete" + +#: src/fe-gtk/servlistgui.c:1786 +#, fuzzy +msgid "Skip network list on startup" +msgstr "Anashkalo listë shërbyesish gjatë nisjes" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "_Përpuno..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "_Rendit" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "_Lidhu" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Dukje Kutie Tekstesh" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Gërma:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Pamje sfond:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Rreshta rrëshqitjeje:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Nofka të ngjyrosura" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Jepi çdo personi në IRC një ngjyrë të ndryshme" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Sposto nofka djathtas" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Përligj nofkat djathtas " + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Sfond i tejdukshëm" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Shfaq vijë shënimi" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Fut një vijë të kuqe pas tekstit të lexuar së fundmi." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Rregullime Tejdukshmërie" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "E kuqe:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "E gjelbër:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Blu:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Vula Kohore" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Aktivizo vula kohore" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Format vule kohore:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Për hollësira shihni faqe manuali (manpage) për strftime." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Kuti futjeje" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Përdor gërma dhe ngjyra të kutisë së Teksteve" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Plotësim Nofkash" + +#: src/fe-gtk/setup.c:144 +#, fuzzy +msgid "Automatic nick completion (without TAB key)" +msgstr "Plotësim nofkash vetvetiu" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Prapashtesë plotësimi nofkash:" + +#: src/fe-gtk/setup.c:147 +#, fuzzy +msgid "Nick completion sorted:" +msgstr "Prapashtesë plotësimi nofkash:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Kode Kutije Futjesh" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Interpreto %nnn si një vlerë ASCII" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Interpreto %C, %B si Ngjyrë, të Trasha etj" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, Op të parët" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, Op të fundit" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "E parenditur" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Sipër" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Poshtë" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Fshehur" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Listë Përdoruesish" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Shfaqi strehëemrat në listë përdoruesish " + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Listë përdoruesish renditur sipas:" + +#: src/fe-gtk/setup.c:205 +#, fuzzy +msgid "Show user list at:" +msgstr "Shfaq/Fshih listë përdoruesish" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Gjurmim të larguarish" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "" +"Ndjek gjendjen i Larguar të përdoruesve dhe i shenjon ata me një ngjyrë " +"tjetër" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "Në kanale më të vegjël se:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Veprim Kur Dyklikohet" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Dritare" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Skeda" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Përherë" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Vetëm skedat e nevojshme" + +#: src/fe-gtk/setup.c:242 +#, fuzzy +msgid "Tree" +msgstr "_Pemë" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Hap një skedë ekstra për mesazhe shërbyesi" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Hap një skedë ekstra për njoftime shërbyesi" + +#: src/fe-gtk/setup.c:252 +#, fuzzy +msgid "Open a new tab when you receive a private message" +msgstr "Hap një skedë ekstra për mesazhe shërbyesi" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Rendit skeda sipas abc-së" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "Skeda të vogla" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Fokuso skeda të reja:" + +#: src/fe-gtk/setup.c:258 +#, fuzzy +msgid "Show channel switcher at:" +msgstr "Në kanale më të vegjël se:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Shkurto etiketë skedash në:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "gërma." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Skeda ose Dritare" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Hap kanale në:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Hap dialogje në:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Hap \"utilities\" në:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "DCC, Shpërfill, Njofto etj, t'i hap si skeda apo si dritare?" + +#: src/fe-gtk/setup.c:271 +#, fuzzy +msgid "No" +msgstr "Asnjë" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Kartela dhe Drejtori" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Shkarko kartela te:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Zhvendos kartela të plotësuara te:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Ruaj nofka në emra kartelash" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Rregullime Rrjeti" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Kije vendndodhjen time prej serverit IRC" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Pyet shërbyesin IRC për vendndodhjen tuaj të vërtetë. Përdoreni nëse keni " +"një vendndodhje 192.168.*.* !" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "Vendndodhje DCC IP:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Pretendoni se jeni në këtë vendndodhje kur ofroni kartela." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Porta e parë DCC dërg:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Porta e fundit DCC dërg:" + +#: src/fe-gtk/setup.c:292 +#, fuzzy +msgid "!Leave ports at zero for full range." +msgstr "(Lini portat në zero për interval të plotë)." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Shpejtësi më e Madhe Shpërnguljesh Kartelash (bajt për sekondë)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Një ngarkim:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Shpejtësi më e madhe pë një shpërngulje" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Një shkarkim:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Tërë shkarkimet të ndërthurur:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Shpejtësi më e madhe për tërë kartelat" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Tërë shkarkimet të ndërthurur:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Sinjalizime" + +#: src/fe-gtk/setup.c:333 +#, fuzzy +msgid "Show tray balloons on:" +msgstr "Shfaq skeda:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "" + +#: src/fe-gtk/setup.c:341 +#, fuzzy +msgid "Highlighted Messages" +msgstr "Bip në mesazhe të theksuar" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:344 +#, fuzzy +msgid "Extra words to highlight:" +msgstr "Fjalë ekstra për t'u theksuar:" + +#: src/fe-gtk/setup.c:345 +#, fuzzy +msgid "Nick names not to highlight:" +msgstr "Nofka për t'u mos theksuar:" + +#: src/fe-gtk/setup.c:346 +#, fuzzy +msgid "Nick names to always highlight:" +msgstr "Nofka për t'u mos theksuar:" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "(Ndaj fjalë të shumëfishta me presje]." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Mesazhe Parazgjedhje" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Lër:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Lër kanal:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Largime:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Larguar" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Lajmëro mesazhe largimi" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Lajmëroni te tërë kanalet mesazhe largimi tuajt" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Shfaq i larguar vetëm një herë" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Shfaq mesazhe largimi identikë vetëm një herë" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Çshenjo automatikisht si të larguar" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Çshenjoni vetveten si të larguar para dërgimit të mesazheve" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Rregullime të Mëtejshëm" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Vonesë vetërilidhjeje:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Shfaq MËNYRA në formë bruto" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Whois në njoftime" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" +"Dërgon një /WHOIS kur një përdorues vjen \"online\" në listën tuaj të " +"njoftimeve" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Fshih mesazhe ardhjesh dhe ikjesh" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Fshih, si parazgjedhje, mesazhe ardhjeje/daljeje prej kanalit" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Vetëhap Dritare DCC" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Dritare dërgimesh" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Dritare marrjesh" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Dritare fjalosjeje" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Hyrje" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "Aktivizo regjistrim bashkëbisedimesh" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Emër kartele regjistrimesh" + +#: src/fe-gtk/setup.c:389 +#, fuzzy, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "(%s=Server %c=Kanal %n=Rrjet)." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Fut vulë kohore në regjistra" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Format vule kohore regjistri" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Çaktivizuar)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "" + +#: src/fe-gtk/setup.c:414 +#, fuzzy +msgid "All Connections" +msgstr "Lidhje" + +#: src/fe-gtk/setup.c:415 +#, fuzzy +msgid "IRC Server Only" +msgstr "Vetëm me Ftesa" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Vendndodhja Juaj" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Lidhe te" + +#: src/fe-gtk/setup.c:424 +#, fuzzy +msgid "Only useful for computers with multiple addresses." +msgstr "(I dobishëm vetëm për kompjutera me vendndodhje të shumëfishta)." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Shërbyes \"Proxy\"" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Emërstrehë:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Portë:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Tip:" + +#: src/fe-gtk/setup.c:430 +#, fuzzy +msgid "Use proxy for:" +msgstr "Shërbyes \"Proxy\"" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "" + +#: src/fe-gtk/setup.c:434 +#, fuzzy +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Mirëfilltëso te shërbyes \"proxy\" (HTTP dhe Socks5)" + +#: src/fe-gtk/setup.c:436 +#, fuzzy +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Mirëfilltëso te shërbyes \"proxy\" (HTTP dhe Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Em. përdoruesi:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Fjalëkalim:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Zgjidh një Kartelë Pamjeje" + +#: src/fe-gtk/setup.c:905 +#, fuzzy +msgid "Select Download Folder" +msgstr "Përzgjidhni ngjyrë" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Përzgjidhni gërma" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Shfleto..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Shenjo përdorues të identifikuar me:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Shenjo përdorues të paidentifikuar me:" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Përzgjidhni ngjyrë" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Ngjyra Teksti" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "Ngjyra mIRC:" + +#: src/fe-gtk/setup.c:1305 +#, fuzzy +msgid "Local colors:" +msgstr "Ngjyra ekstra:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Përpara:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Sfond:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Shenjim Tekstesh" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Ngjyra Ndërfaqeje" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Të dhëna të reja:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Vijë shënimi" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Mesazh i ri:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Përdorues i larguar:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Theksim:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Ngjarje" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Kartelë tingull" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Përzgjidhni një kartelë tingull" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Metodë luajtjeje tingulli:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "Program i jashtëm luajtjeje tingujsh:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "Program i _jashtëm" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_Automatike" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "_Drejtori kartelash tingulli:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Kartelë tingulli:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "_Shfleto..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "_Luaj" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Ndërfaqe" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Kuti tekstesh" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Listë përdoruesi" + +#: src/fe-gtk/setup.c:1703 +#, fuzzy +msgid "Channel switcher" +msgstr "Listë Kanalesh..." + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Ngjyra" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Fjalosje" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Të përgjithshme" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Tingull" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Rregullim rrjeti" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Shpërngulje kartelash" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Kategori" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" +"Për disa nga ndryshimet lipset të rinisni programin pa të jenë vepruese." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*KUJDES*\n" +"Vetëpranimi i DCC-së në drejtorinë tuaj shtëpi\n" +"mund të jetë i rrezikshëm dhe është i shfrytëzueshëm. P.sh:\n" +"Dikush mund t'ju dërgojë një .bash_profile" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: Parapëlqime" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Pati një gabim në përtypjen e vargut" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "This signal is only passed %d args, $%d is invalid" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Shtyp Kartelë Tekstesh" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Përpuno Ç'ndodh" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ Numër" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Ngarko Prej..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Testo Tërë" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: Kopjues URL-sh" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Fshij listë" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Kopjo URL-në e përzgjedhur" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Kopjo" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Ruaj listë si një kartelë" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d op, gjithsej %d" + +#~ msgid "%C18*$t$1%O $2" +#~ msgstr "%C18*$t$1%O $2" + +#~ msgid "%C21*%O$t%C21%B$1%O%C21 $2" +#~ msgstr "%C21*%O$t%C21%B$1%O%C21 $2" + +#, fuzzy +#~ msgid "%C18%H<%H$4$1%H>%H%O$t$2" +#~ msgstr "%C18%B%B$4$1%O%C18%O$t$2" + +#, fuzzy +#~ msgid "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" +#~ msgstr "$4%C21%B$1%O%C21$t$2" + +#~ msgid "%C28-%C29$1/$2%C28-%O$t$3" +#~ msgstr "%C28-%C29$1/$2%C28-%O$t$3" + +#~ msgid "$1$t$2" +#~ msgstr "$1$t$2" + +#~ msgid "%C19>%O$1%C19<%O$t$2" +#~ msgstr "%C19>%O$1%C19<%O$t$2" + +#~ msgid "%C16*%O$t$1%O" +#~ msgstr "%C16*%O$t$1%O" + +#~ msgid "%C28-%C29$1%C28-%O$t$2" +#~ msgstr "%C28-%C29$1%C28-%O$t$2" + +#~ msgid "%C28*%C29$3$1%C28*$t%O$2" +#~ msgstr "%C28*%C29$3$1%C28*$t%O$2" + +#, fuzzy +#~ msgid "%C18%H<%H$3$1%H>%H%O$t$2" +#~ msgstr "%C18%B%B$3$1%O$t$2" + +#~ msgid "%C22*%O$t$1" +#~ msgstr "%C22*%O$t$1" + +#, fuzzy +#~ msgid "%C31%H<%H$4$1%H>%H%O%C30$t$2" +#~ msgstr "%C31%B%B$4$1%O%C30$t$2" + +#~ msgid "PID" +#~ msgstr "PID" + +#~ msgid "France, Metropolitan" +#~ msgstr "Francë, Metropolitan" + +#~ msgid "Neutral Zone" +#~ msgstr "Zonë Neutrale" + +#~ msgid "US Minor Outlying Islands" +#~ msgstr "Ishujt e Vegjël të Përtejmë të US-it" + +#~ msgid "Direct client-to-client" +#~ msgstr "Drejtpërdrejt klient-me-klient" + +#~ msgid "Send File" +#~ msgstr "Dërgo Kartelë" + +#~ msgid "Offer Chat" +#~ msgstr "Ofro Fjalosje" + +#~ msgid "Abort Chat" +#~ msgstr "Ndërprit Fjalosje" + +#~ msgid "Userinfo" +#~ msgstr "Të dhëna përdoruesi" + +#~ msgid "Clientinfo" +#~ msgstr "Të dhëna klienti" + +#~ msgid "Time" +#~ msgstr "Kohë" + +#~ msgid "Finger" +#~ msgstr "Gisht" + +#~ msgid "Oper" +#~ msgstr "Oper" + +#~ msgid "Kill this user" +#~ msgstr "Asgjëso këtë përdorues" + +#~ msgid "Mode" +#~ msgstr "Mënyrë" + +#~ msgid "Give Half-Ops" +#~ msgstr "Jepi Gjysmë-Op" + +#~ msgid "Take Half-Ops" +#~ msgstr "Hiqi Gjysmë-Op" + +#~ msgid "Ignore" +#~ msgstr "Shpërfill" + +#~ msgid "Ignore User" +#~ msgstr "Shpërfill Përdorues" + +#~ msgid "UnIgnore User" +#~ msgstr "Çshpërfill Përdorues" + +#~ msgid "Info" +#~ msgstr "Të dhëna" + +#~ msgid "Who" +#~ msgstr "Kush" + +#~ msgid "DNS Lookup" +#~ msgstr "Kërkim DNS-je" + +#~ msgid "Trace" +#~ msgstr "Gjurmo" + +#~ msgid "UserHost" +#~ msgstr "StrehëPërdoruesi" + +#~ msgid "External" +#~ msgstr "I jashtëm" + +#~ msgid "Traceroute" +#~ msgstr "Traceroute" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "Unban" +#~ msgstr "Çndalo" + +#~ msgid "I can't save an empty list!" +#~ msgstr "S'ruaj dot një listë të zbrazët!" + +#~ msgid "List display options:" +#~ msgstr "Listo mundësi shfaqjeje:" + +#~ msgid "Minimum Users:" +#~ msgstr "Përdoruesa Minimum:" + +#~ msgid "Maximum Users:" +#~ msgstr "Përdoruesa Maksimum:" + +#~ msgid "Regex Match:" +#~ msgstr "Përputhje \"Regex\":" + +#~ msgid "Apply Match to:" +#~ msgstr "Zbato Përputh te:" + +#~ msgid "Apply" +#~ msgstr "Zbato" + +#~ msgid "Refresh the list" +#~ msgstr "Rifresko listën" + +#~ msgid "Save the list" +#~ msgstr "Ruaj listën" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "S'ka skedë tjetër të hapur, ta lë xchat-it?" + +#~ msgid "Show join/part messages" +#~ msgstr "Shfaq mesazhe hyr/dil " + +#~ msgid "Color paste" +#~ msgstr "Ngjit ngjyrë" + +#~ msgid "Go to" +#~ msgstr "Shko te" + +#~ msgid "_Close Tab" +#~ msgstr "_Mbyll Skedë" + +#~ msgid "Settings saved." +#~ msgstr "Rregullime të ruajtur." + +#~ msgid "_Layout" +#~ msgstr "_Skemë" + +#~ msgid "Notify List..." +#~ msgstr "Listë Njoftimesh..." + +#~ msgid "_Close Window" +#~ msgstr "_Mbyll Dritare" + +#~ msgid "User" +#~ msgstr "Përdorues" + +#~ msgid "Server" +#~ msgstr "Shërbyes" + +#~ msgid "Save rawlog" +#~ msgstr "Ruaj regjistrim bruto" + +#~ msgid "Save rawlog..." +#~ msgstr "Ruaj regjistrim bruto..." + +#~ msgid "C_hannels to join:" +#~ msgstr "_Kanale ku të hyhet:" + +#~ msgid "XChat: Server List" +#~ msgstr "XChat: Listë Shërbyesish" + +#~ msgid "Completes nick names without using the TAB key" +#~ msgstr "Plotëson nofka pa përdorur tastin TAB" + +#~ msgid "Input Box Appearance" +#~ msgstr "Dukje Kutije Futjesh" + +#~ msgid "Resizable user list" +#~ msgstr "Listë përdoruesish e ripërmasueshme" + +#~ msgid "Left" +#~ msgstr "Majtas" + +#~ msgid "Right" +#~ msgstr "Djathtas" + +#~ msgid "Tabs Location" +#~ msgstr "Vendndodhje Skedash" + +#~ msgid "Convert spaces to underscore before sending" +#~ msgstr "Shndërro hapësirat në nënvija para dërgimit" + +#~ msgid "(Can be a text file relative to ~/.xchat2/)." +#~ msgstr "(Mund të jetë një kartelë tekst e lidhur me ~/.xchat2/)." + +#~ msgid "(Can be a text file relative to config dir)." +#~ msgstr "(Mund të jetë një kartelë tekst e lidhur me config dir)." + +#~ msgid "Flash taskbar on highlighted messages" +#~ msgstr "Xixëllo shtyllë veprimesh në mesazhe të theksuar" + +#~ msgid "Beep on channel messages" +#~ msgstr "Bip në mesazhe kanali" + +#~ msgid "(See strftime manpage for details)." +#~ msgstr "(Shih \"strftime manpage\" për hollësi)." + +#~ msgid "Open an irc:// url" +#~ msgstr "Hap një url irc://" + +#~ msgid "irc://server:port/channel" +#~ msgstr "irc://shërbyes:port/kanal" + +#~ msgid "Execute a xchat command" +#~ msgstr "Përmbush një urdhër xchat" + +#~ msgid "\"Command to execute\"" +#~ msgstr "\"Urdhër për t'u përmbushur\"" + +#~ msgid "Prints some text to the current tab/window" +#~ msgstr "Shtyp ca tekst në skedën/dritaren e çastit" + +#~ msgid "\"Text to print\"" +#~ msgstr "\"Tekst për t'u shtypur" + +#~ msgid "Change the context to the channel" +#~ msgstr "Ja kalon kontekstin kanalit" + +#~ msgid "Change the context to the server" +#~ msgstr "Ja kalon kontekstin shërbyesit" + +#~ msgid "server" +#~ msgstr "shërbyes" + +#~ msgid "Get some informations from xchat" +#~ msgstr "Merr ca të dhëna prej xchat-it" + +#~ msgid "id" +#~ msgstr "id" + +#~ msgid "Get settings from xchat" +#~ msgstr "Ki rregullime prej xchat-it" + +#~ msgid "name" +#~ msgstr "emër" + +#~ msgid "" +#~ "xchat-remote: %s\n" +#~ "Try `xchat-remote --help' for more information\n" +#~ msgstr "" +#~ "xchat-remote: %s\n" +#~ "Për më tepër të dhëna provoni `xchat-remote --help'\n" + +#~ msgid "Failed to complete SetContext" +#~ msgstr "Dështova në përmbushjen e SetContext-it" + +#~ msgid "Failed to complete print" +#~ msgstr "Dështova në kryerjen e shtypjes" + +#~ msgid "Failed to complete GetInfo" +#~ msgstr "Dështova në përmbushjen e GetInfo-s" + +#~ msgid "Failed to complete GetPrefs" +#~ msgstr "Dështova në përmbushjen e GetPrefs" + +#~ msgid "%s doesn't exist\n" +#~ msgstr "%s nuk ekziston\n" + +#, fuzzy +#~ msgid "%s loaded successfully!\n" +#~ msgstr "ngarkuar me sukses!\n" + +#, fuzzy +#~ msgid "%s unloaded successfully!\n" +#~ msgstr "ngarkuar me sukses!\n" + +#~ msgid "To/From" +#~ msgstr "Te/Për" + +#~ msgid "From:" +#~ msgstr "Prej:" + +#~ msgid "To:" +#~ msgstr "Për:" + +#~ msgid "Size:" +#~ msgstr "Madhësi:" + +#~ msgid "Started:" +#~ msgstr "Filluar:" + +#~ msgid "Speed limit:" +#~ msgstr "Kufi shpejtësie:" + +#~ msgid "MIME Type" +#~ msgstr "Tip MIME" + +#~ msgid "XChat: File Receive List" +#~ msgstr "XChat: Listë Marrjesh Kartelash" + +#~ msgid "Open" +#~ msgstr "Hap" + +#~ msgid "Ack" +#~ msgstr "Pranuar" + +#~ msgid "To" +#~ msgstr "Për" + +#~ msgid "Close" +#~ msgstr "Mbyll" + +#~ msgid " : %s\n" +#~ msgstr " : %s\n" diff --git a/xchat-2.8.8/po/sr.gmo b/xchat-2.8.8/po/sr.gmo new file mode 100644 index 0000000000000000000000000000000000000000..d906cfc91a002ed4358acecf5b818fec807d596e GIT binary patch literal 101711 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 literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/po/sr.po b/xchat-2.8.8/po/sr.po new file mode 100644 index 0000000..b50e0ba --- /dev/null +++ b/xchat-2.8.8/po/sr.po @@ -0,0 +1,6023 @@ +# XChat translation file: Serbian language +# Copyright (C) 2004,2005,2006 Free Software Foundation, Inc. +# +# Translators: +# o Zoltan Čala <zolika@sezampro.yu>, 1999. +# o Filip Miletić <f.miletic@ewi.tudelft.nl>, 2004, 2005, 2006. +# o Aleksandar Jelenak <jelenak@netlinkplus.net>, 2004, 2005. +# +# Note: +# The file sr@Latn.po is automatically generated from sr.po +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.6.3\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2006-06-18 00:49+0200\n" +"Last-Translator: Aleksandar Jelenak <jelenak@verizon.net>\n" +"Language-Team: Serbian <gnu@prevod.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Није направљен ~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Заузет сам" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Одлазим" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* Није добра идеја да користите IRC као\n" +" администратор. Боље је направити налог.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Чекам" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Активан" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Неуспело" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Готово" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Повежи се" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Прекинуто" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "Нема приступа %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Грешка" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s нуди „%s‟. Да ли желите да прихватите?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Нема активних DCC-ова\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "ДА " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "НЕ " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Корисник %s вас засипа CTCP захтевима, игноришем %s\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "" +"Корисник %s вас засипа MSG захтевима, искључујем посебне прозоре за " +"разговор. \n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s на вези\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s није ту\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Нисте на каналу. Пробајте са /join #<канал>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Нисте на вези. Пробајте са /server <хост> [<порт>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "За покретање треба имати /bin/sh!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Доступне наредбе:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Корисникове наредбе:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Наредбе описане у додацима:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Куцајте /HELP <наредба> за помоћ, или /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Непознат аргумент '%s' је занемарен." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "Додатак није пронађен.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Овај додатак се није учитао.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <име> <наредба>, додаје дугме у корисничeв списак команди" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <наредба>, шаље команду на све канале где сте повезани" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <наредба>, шаље наредбу на све канале на које сте пријављени" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <команда>, шаље команду свим серверима где сте повезани" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<разлог>], пријављује одсуство" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <шаблон> [<врста>], забрана за све кориснике обухваћене шаблоном од " +"приступа каналу. Ако су већ на каналу, не избацује их (за то треба бити „оп‟)" + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "SET [-quiet] <променљива> [<вредност>]" + +#: src/common/outbound.c:3508 +#, fuzzy +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "CLEAR, брише тренутни прозор са текстом" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, затвара тренутни прозор/језичак" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <код|шаблон>, тражи код земље, нпр: au = аустралија" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <име> <порука>, шаље CTCP поруку на дато име, попут VERSION или USERINFO" + +#: src/common/outbound.c:3516 +#, fuzzy +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "CYCLE, напушта тренутни канал и одмах се враћа назад" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <име> - прихвати понуђену датотеку\n" +"DCC SEND [-maxcps=#] <име> <дат> - пошаљи некоме датотеку\n" +"DCC PSEND [-maxcps=#] <име> <дат> - пошаљи некоме датотеку, пасиван начин\n" +"DCC LIST - покажи списак за DCC\n" +"DCC CHAT <име> - понуди разговор преко DCC\n" +"DCC PCHAT <име> - понуди разговор преко DCC, пасиван " +"начин\n" +"DCC CLOSE <тип> <име> <дат> пример:\n" +" /dcc close send пераперић датотека.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <име>, склања полу-оп звање за име на тренутном каналу (потребан је" +"„оп)‟" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <име>, брише дугме са корисничног списка" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "DELBUTTON <име>, уклања звање оператора за име на овом каналу" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "DEVOICE <име>, одузима реч за име на овом каналу" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, искључује са сервера" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <име|рач|ip>, тражи корисников IP број" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <текст>, исписује текст" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <наредба>, изврши наредбу. Ако је дата ознака -o онда се исписшаље " +"на тренутни канал, иначе се исписује у оквиру за текст." + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, шаље процесу SIGCONT" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], зауставља позив exec у овој сесији. Ако је дато и -9 процесу " +"се шаље SIGKILL" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, шаље процесу SIGSTOP" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, шаље податке на стандардни улаз процеса" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, празни ред за слање на овом серверу" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "ГАТЕ <рач.> [<порт>], прослеђује преко рач(унара), за порт се узима 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <надимак> <лозинка>, Убија „дух“ надимак" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <име>, даје звање полу-оп овом имену (потребан је оп) " + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <лозинка>, пријављује Вас на nickserv" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <шаблон> <типови...> <избори...>\n" +" шаблон - шаблон за име рачунара, нпр. *!*@.aol.com\n" +" типови - шта занемарити, један или више из скупа:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" избори - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <име> [<канал>], позива име да се прикључи каналу, мисли се на " +"тренутни ако се не наведе (потребан је оп)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <канал>, прикључује се каналу" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "KICK <име>, избацује име са овог канала (потребан је оп)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <име>, забрањује а затим избацује име са овог канала (потребан је оп)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, тражи да се измери кашњење" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <текст>, тражи текст у записима" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <дат.>, учитава додатак или скрипту" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, одузима звање свим полу-операторима на овом каналу (потребан је оп)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, одузима звање свим операторима на овом каналу (потребан је оп)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <радња>, шаље опис радње на овај канал (радње се пишу у трећем лицу, " +"нпр. /me скаче" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, избацује све друге са канала (потребан је оп)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, свима на каналу додељује звање оператора (потребан је оп)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <име> <порука>, шаље приватну поруку" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, исписује имена на овом каналу" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <име> <порука>, шаље CTCP дојаву" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <рачунар> [<порт>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <име>, узимање новог имена" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <име/канал> <порука>, шаље дојаву. Дојава је врста поруке коју треба " +"аутоматски обрадити" + +#: src/common/outbound.c:3614 +#, fuzzy +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [<nick>], даје списак имена која ишчекујете или додаје на списак" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <име>, даје звање оператора овом имену (потребан је оп)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" +"PART [<канал>] [<разлог>], напушта канал, и то тренутни ако се не наведе" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <име | канал>, испитује име или канал CTCP поруком" + +#: src/common/outbound.c:3622 +#, fuzzy +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "QUERY <име>, отвара нови прозор за личне поруке" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<reason>], искључује са овог сервера" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <текст>, шаље сирови текст серверу" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<рач.>] [<порт>] [<лозинка>], може се користити и само /" +"RECONNECT за поновно спајање на сервер или као /RECONNECT ALL за поновно " +"спајање на све отворене сервере" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<рач.>] [<порт>] [<лозинка>], може се користити и само /RECONNECT " +"за поновно спајање на сервер или као /RECONNECT ALL за поновно спајање на " +"све отворене сервере" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <текст>, пошаљи сирове податке у иксчет, као да су стигли са IRC сервера" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <текст>, шаље текст као поруку објекту у овом прозору" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <nick> [<file>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <рач.> <порт> <канал>, повезује се и учлани на канал" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <рач.> <порт> <канал>, повезује се и учлани на канал" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <рач.> [<порт>] [<лозинка>], повезује се на сервер, узима да " +"је порт 6667 за нормалну везу, одн. на 9999 за сигурну везу преко SSL" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <рач.> [<порт>] [<лозинка>], повезује се на сервер, узима да је порт " +"6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-quiet] <променљива> [<вредност>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<место>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<тема>], поставља тему ако је наведена, иначе прикаже тренутну тему" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <шаблон> [<шаблон>...], скида забрану за ове шаблоне" + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <шаблон> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <име>, уклони додатак или скрипт" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, отвара URL у прегледнику мреже" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <име1> <име2> итд, наглашава имена у списку корисника " +"канала" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <име>, даје реч (потребан је оп)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <порука>, шаље поруку на све канале" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <порука>, шаље поруку свим операторима на овом каналу" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Употреба: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"За ову наредбу помоћ није доступна.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Не постоји наредба.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Погрешни аргументи за корисничку наредбу.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Сувише команди се унакрсно позива, обустављам." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Команда није препозната. Пробајте са /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "Име xchat_plugin_init не постоји; можда ово није додатак за иксчет?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Да ли сте сигурни да је ово SSL сервер и порт?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Рачунар %s наизглед не постоји\n" +"Проверите подешавања за IP!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Неуспео контакт са заступником.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Покушавам везу са следећим сервером у %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Упозорење: Скуп знакова „%s‟ није познат. За мрежу %s се зато неће користити " +"конверзија." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 додат на списак посматраних." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Забране:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tНе успева прикључење%C26 %B$1 %O(имате забрану)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "Име %C22*%O$t$1 је промењено у $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 поставља забрану на $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tНаправљен је нови канал $1 на $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O укида звање полу-оператора за %C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O укида звање оператора за %C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O одузима реч од %C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 поставља изузеће за $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O додељује звање полу оператора за %C26 $2" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 позива на прикључење на $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UКанал Бр.кор. Тема" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 поставља приступну ознаку на $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Канал $1 приступне ознаке: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O додељује звање оператора за%C26 $2" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 уклања изузеће за $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 уклања позив за прикључење на $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 уклања кључну реч за канал" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 укида највећи дозвољени број корисника на каналу" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 поставља кључну реч за канал на $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 поставља највећи дозвољени број корисника на $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 уклања забрану за $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O даје реч за %C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Повезивање је успело. Пријава у току..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22У току је повезивање на $1 ($2) порт $3%O.." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21Повезивање није успело. Јављена је грешка: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tПримљен је CTCP захтев $1 од $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tПримљен је CTCP захтев $1 од $2 (за $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tПримљен је CTCP звук $1 од $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tПримљен је CTCP звук $1 од $2 (за $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tПрекинут је DCC разговор са %C26$1%O." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$tУспостављен је разговор путем DCC са %C26$1 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tРазговор путем DCC са %C26$1%O је прекинут услед грешке. $4." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tПримљена је понуда за разговор путем DCC од $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tНудим разговор путем DCC за $1" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$t$1 већ има понуду за разговор одавде" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$tDCC $1 повезивање са%C26 $2%O неуспело (грешка=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tПреузета датотека '$1%O' од $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 Врста Од/за Стање Вел. Место Датотека " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O.%010%C22*%O" +"$tContents of packet: $2" +msgstr "" +"%C22*%O$tПримљен је неисправан DCC захтев од %C26$1%O.%010%C22*%O$tСадржај " +"пакета: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tНудимо %C26$1 %O за %C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tОва DCC понуда не постоји." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV %C126$2%O за%C26 $1%O прекинут." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC RECV%C26 $1%O од%C26 $3%O обављено %C30[%C26$4%O зн./сек.%C30]%" +"O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC RECV веза успостављена са%C26 $1 %C30[%O$2%C30]%O" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV%C26 $1%O од%C26 $3%O неуспела. $4." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV: Не може се писати у $1 ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "%C22*%O$tДатотека%C26 $1%C већ постоји, снимам под именом%C26 $2%O." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Cтражи да се настави%C26 $2 %Cод%C26 $3%C." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC SEND%C26 $2%O за%C26 $1%O је прекинут." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC SEND%C26 $1%O за%C26 $2%O обављен %C30[%C26$3%O зн./сек.%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC SEND веза успостављена са%C26 $1 %C30[%O$2%C30]%O" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND веза%C26 $1%O са%C26 $2%O није успела. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Cје понудио%C26 $2 %C(%C26$3 %Cбајт((ов)а))" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Cза%C26 $3 %Cзаостаје - прекидам." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Cка%C26 $3 %Cје истекао - прекидам." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 избрисан са списка посматраних." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tИскључен ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tВаш IP број је: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O додат у списак ућутканих." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "Занемари кад се промени%C26 $1%O." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 Образац за име хоста PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O избрисан са списка ућутканих." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " Списак ућутканих је празан." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "%C22*%O$tНије могуће прикључити се на%C26 %B$1 %O без позива." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tПозвани сте на канал%C26 $1%C, позвао је%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) дошао на $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "" +"%C22*%O$tНије могуће прокључити се на%C26 %B$1 %O без знања кључне речи." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 је избацио $2 са $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$tОдстранио вас је $1 ($2%O)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22Прескочили смо вести дана." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$tИме $1 неко већ користи. Пробам да користим $2.." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$tНеко већ користи ово име. Можете користити команду /NICK да пробате " +"неко друго име." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tDCC захтев не постоји." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tНиједан процес није покренут." + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tСписак посматраних је празан." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Списак посматраних " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 корисници на списку посматраних." + +#: src/common/textevents.h:282 +#, fuzzy +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tВест: $1 је на вези ($2)." + +#: src/common/textevents.h:285 +#, fuzzy +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tВест: $1 је на вези ($2)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) оде $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) оде са $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tВреме одзива за $1 у секундама: $2" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tОдзив је изостао за $1 сек., искључујем се." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tПроцес је већ покренут" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 оде (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 поставља приступ%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tТражим IP број за%C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22Повезан." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22Тражим%C26 $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tПретходно успостављање везе је прекинуто (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29Тема за%C29 $1%C %C29је: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 променио је тему у: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29Тему за $1%C %C29поставио је $2%C %C29у $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tНепознато име рачунара. Можда је погрешно откуцано?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "" +"%C22*%O$tНије могуће ући на%C26 %B$1 %O јер је достигнут највећи дозвољени " +"број корисника." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Корисници на $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cје одсутан %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OКрај списка за WHOIS." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O неактиван%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O неактиван%C26 $2%O, пријављен:%C26 $3%O" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30) %O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %Oправи user@host%C27 $2%O, прави IP%C27 $3%O" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Сада причате на $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$t вас је избацио са канала $2 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tНапустили сте канал $3" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tНапустили сте канал $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tЗовете%C26 $1%C на%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tПроменили сте име у $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** КРАЈ ЗАПИСА У ДНЕВНИКУ У %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** ПОЧЕТАК ЗАПИСА У ДНЕВНИКУ У %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Дневник се не може отворити за упис. Проверите\n" +" права приступа за %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Порука слева" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Порука здесна" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "Име особе која се прикључује" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "Канал на који се прикључује" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "Рачунар на коме ради" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Надимак" + +#: src/common/text.c:973 +msgid "The action" +msgstr "Наредба" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Ознака за приступ" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Препознат текст" + +#: src/common/text.c:980 +msgid "The text" +msgstr "Текст" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Порука" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Стари надимак" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Нови надимак" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Име особе која је променила тему" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Тема" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Канал" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "Име избацивача" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "Избачена особа" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "Канал" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "Разлог" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "Име особе која одлази" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "Време" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "Креатор" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Име" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Разлог" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Рачунар" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "Од кога долази" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "Време у формату x.x (видети испод)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "Канал на који иде" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "Звук" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "Име особе" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "CTCP догађај" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "Име особе која је поставила кључ" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "Кључ" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "Име особе која је поставила ограничење" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "Ограничење" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "Име особе која је доделила опа" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "Име особе која је добила опа" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "Име особе која је добила полу-опа" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "Име особе која је доделила полу-опа" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "Име особе која је дала реч" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "Име особе која је добила реч" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "Име особе која је забранила" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "Шаблон за забрану" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "Име особе која је склонила кључ" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "Име особе која је уклонила ограничење" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "Име особе која је одузела опа" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "Име особе којој је одузет оп" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "Име особе која је доделила полу-опа" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Име особе којој је одузет полу-оп" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "Име особе која је одузела реч" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "Име особе којој је одузета реч" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "Име особе која је укинула забрану" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "Име особе која је поставила искључење" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "Шаблон за искључење" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "Име особе која је уклонила искључење" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "Име особе која је позвала" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "Шаблон за позив" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "Име особе која је уклонила позив" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "Име особе која је поставила приступ" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "Знак приступа (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "Ознака приступа" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "Канал на ком стоји" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Кор. име" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Пуно име" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Припадност каналу/\"је IRC оператор\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Подаци о серверу" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Одсутан" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Време пријаве" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Разлог за одсуство" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Порука" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Налог" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "Прави user@host" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "Прави IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Име канала" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Текст" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Име сервера" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Име особе која је позвала" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Корисници" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Имена у употреби" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Испробана имена" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Порт" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Мрежа" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Права приступа" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "IP адреса" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "Врста DCC" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Датотека" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Циљна датотека" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "зн./сек." + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Путања" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Место" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Величина" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "DCC текст" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Број посматраних улаза" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Стара датотека" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Нова датотека" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Прималац" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Шаблон рач." + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Име рач." + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "Пакет" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Секунде" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Име позване особе" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Шаблон забране" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Ко је забранио" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Време забране" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Грешка у обради догађаја %s.\n" +"Мењам за подразумевани." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "Датотека са звучним записом „%s‟ се не може очитати." + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "Удаљени рачунар је прекинуо везу" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Веза одбијена" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Нема путање до рачунара" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Време за повезивање је истекло" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Не може се доделити та адреса" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Веза прекинута на другом крају" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Острво Успења" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Андора" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Уједињени арапски емирати" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Авганистан" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Антигва и Барбуда" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Ангуила" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Албанија" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Јерменија" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Холандски антили" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Ангола" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Антарктик" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Аргентина" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "Обратни DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Америчка Самоа" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Аустрија" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "Нато терен" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Аустралија" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Аруба" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Аландска острва" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Азербејџан" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Босна и Херцеговина" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Барбадос" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Бангладеш" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Белгија" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Буркина Фасо" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Бугарска" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Бахреин" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Бурунди" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Комерцијала" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Бенин" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Бермуда" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Брунеји Дар-Ес-Салам" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Боливија" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Бразил" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Бахами" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Бутан" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Острво Буве" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Боцвана" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Белорусија" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Белизе" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Канада" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Кокосова острва" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "Демократска република Конго" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "Централноафричка република" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Конго" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Швајцарска" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Обала слоноваче" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Кукова острва" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Чиле" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Камерун" + +#: src/common/util.c:898 +msgid "China" +msgstr "Кина" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Колумбија" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Комерцијални домени" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Костарика" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Србија и Црна Гора" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Куба" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Зеленортска острва" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Божићна острва" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Кипар" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "Република Чешка" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Немачка" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Џибути" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Данска" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Доминика" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "Доминиканска република" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Алжир" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Еквадор" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Образовне установе" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Естонија" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Египат" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Западна Сахара" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Еритреја" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Шпанија" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Етиопија" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Европска Унија" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Финска" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Фиџи" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Фоклендска острва" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Микронезија" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Фарска острва" + +#: src/common/util.c:928 +msgid "France" +msgstr "Француска" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Габон" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Велика Британија" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Гренада" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Грузија" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Француска Гвајана" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Британска Каналска острва" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Гана" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Гибралтар" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Гренланд" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Гамбија" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Гвинеја" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Владине установе" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Гвадалупе" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Екваторијална Гвинеја" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Грчка" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "С. Џорџија и С. Сендвичка острва" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Гватемала" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Гуам" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Гвинеја Бисао" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Гијана" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Хонг Конг" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Хердова и Макдоналдова острва" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Хондурас" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Хрватска" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Хаити" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Мађарска" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Индонезија" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Ирска" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Израел" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Острво Човека" + +#: src/common/util.c:959 +msgid "India" +msgstr "Индија" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Информациони домен" + +#: src/common/util.c:961 +msgid "International" +msgstr "Међународни домени" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Британска Индијска острва" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Ирак" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Иран" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Исланд" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Италија" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Џерси" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Јамајка" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Јордан" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Јапан" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Кенија" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Киргистан" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Камбоџа" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Кирибати" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Комори" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "Св. Китс и Невис" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Северна Кореја" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Јужна Кореја" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Кувајт" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Кајманска острва" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Казахстан" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Лаос" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Либан" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Света Луција" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Лихтенштајн" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Шри Ланка" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Либерија" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Лесото" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Литванија" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Луксембург" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Латвија" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Либија" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Мароко" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Монако" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Молдова" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "Америчке медицинске установе" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Мадагаскар" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Маршалска острва" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Војни домени" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Македонија" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Мали" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Мианмар" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Монголија" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Макао" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Северна Маријанска острва" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Мартиник" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Мауританија" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Монсерат" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Малта" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Маурицијус" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Малдиви" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Малави" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Мексико" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Малезија" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Мозамбик" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Намибија" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Нова Каледонија" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Нигер" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Интерник мрежа" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Норфолшка острва" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Нигерија" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Никарагва" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Холандија" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Норвешка" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Непал" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Науру" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Ниуе" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Нови Зеланд" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Оман" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Непрофитна организација интерник" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Панама" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Перу" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Француска Полинезија" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Папуа Нова Гвинеја" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Филипини" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Пакистан" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Пољска" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "Св. Пјер и Микелон" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Питкаирн" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Порторико" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Палестинска територија" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Португал" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Палау" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Парагвај" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Катар" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Реинион" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Румунија" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "Старовремски ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Руска федерација" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Руанда" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Саудијска Арабија" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Соломонова острва" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Сејшели" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Судан" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Шведска" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Сингапур" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "Св. Јелена" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Словенија" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Свалбард и Јан Мајен острва" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Словачка република" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Сијера Леоне" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "Сан Марино" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Сенегал" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Сомалија" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Суринам" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "Сао Томе и Принципе" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Бивши СССР" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "Ел Салвадор" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Сирија" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Свазиленд" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Туркс и Каикос острва" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Чад" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Француске јужне територије" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Того" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Тајланд" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Таџикистан" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Токелау" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Источни Тимор" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Туркменистан" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Тунис" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Тонга" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Турска" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Тринидад и Тобаго" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Тувалу" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Тајван" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Танзанија" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Украjина" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Уганда" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Велика Британија" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "Сједињене америчке државе" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Уругвај" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Узбекистан" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Град-држава Ватикан" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "Св. Винсент и Гренадини" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Венецуела" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Британска Девичанска острва" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "Америчка Девичанска острва" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Вијетнам" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Вануату" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Острвље Валис и Фортуна" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Самоа" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Јемен" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Мајот" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Југославија" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Јужна Африка" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Замбија" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Зимбабве" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Непознато" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "Започни разговор" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "Пошаљи датотеку" + +#: src/common/xchat.c:728 +#, fuzzy +msgid "_User Info (WhoIs)" +msgstr "Подаци о кориснику (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +#, fuzzy +msgid "O_perator Actions" +msgstr "Операторска дејства" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Дај опа" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Одузми опа" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Дај реч" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Одузми реч" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Шут/забр." + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Шут" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Забр." + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "Шут и забр." + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Напусти канал" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Прикључи се..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Унесите име канала:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Везе са серверима" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Одзив сервера" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Сакриј верзију" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Оп" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "Деоп" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "Ћао" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Разлог да се избаци %s:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Пошаљи фајл" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Разговор" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Слање" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Прича" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Обриши" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "Није могуће повезати се са магистралом сесије" + +#: src/common/dbus/dbus-client.c:86 +#, fuzzy +msgid "Failed to complete NameHasOwner" +msgstr "Није могуће довршити наредбу" + +#: src/common/dbus/dbus-client.c:112 +#, fuzzy +msgid "Failed to complete Command" +msgstr "Није могуће довршити наредбу" + +#: src/common/dbus/dbus-plugin.c:30 +#, fuzzy +msgid "remote access" +msgstr "удаљен приступ иксчету" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "додатак за удаљен приступ помоћу DBUSа" + +#: src/common/dbus/dbus-plugin.c:897 +#, fuzzy, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Није могуће повезати се са магистралом сесије : %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Не може се добавити %s: %s\n" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "_О програму" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Преносиви клијент за IRC" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Табела знакова" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "Није на вези." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Морате изабрати забране" + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Шаблон" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "Од" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Датум" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" +"Списак ућутканих се може отворити само ако је отворен језичак за приказ " +"канала" + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "Иксчет: Списак забрана (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Уклони" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Исеци" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Освежи" + +#: src/fe-gtk/chanlist.c:111 +#, fuzzy, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Статистике корисника и канала: корисника ‒ %d/%d, канала ‒%d/%d" + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Изаберите име датотеке за излаз" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +#, fuzzy +msgid "_Join Channel" +msgstr "Иди на канал" + +#: src/fe-gtk/chanlist.c:633 +#, fuzzy +msgid "_Copy Channel Name" +msgstr "Име канала" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "Иксчет: списак канала (%s)" + +#: src/fe-gtk/chanlist.c:781 +#, fuzzy +msgid "_Search" +msgstr "Иксчет: Претрага" + +#: src/fe-gtk/chanlist.c:787 +#, fuzzy +msgid "_Download List" +msgstr "Преузимања:" + +#: src/fe-gtk/chanlist.c:793 +#, fuzzy +msgid "Save _List..." +msgstr "Списак рачунара..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "" + +#: src/fe-gtk/chanlist.c:818 +#, fuzzy +msgid "channels with" +msgstr "канал" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:843 +#, fuzzy +msgid "users." +msgstr "Корисници" + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "Име канала" + +#: src/fe-gtk/chanlist.c:882 +#, fuzzy +msgid "Search type:" +msgstr "Тражи текст..." + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:890 +#, fuzzy +msgid "Pattern Match (Wildcards)" +msgstr "Образац:" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Нађи:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Шаљи датотеку за %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Датотека се мора преузети изједна." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"Не могу да приступим: %s\n" +"%s.\n" +"Настављање није могуће." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"Датотека која је претходно преузета је већа него понуђена. Зато није могуће " +"наставити пренос." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "Не може се наставити пренос исте датотеке од две различите особе." + +#: src/fe-gtk/dccgui.c:745 +#, fuzzy +msgid "XChat: Uploads and Downloads" +msgstr "Иксчет: слања и пријеми" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Стање" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Датотека" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Оба" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Слања" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "Преузимања:" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Детаљи" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Датотека:" + +#: src/fe-gtk/dccgui.c:821 +#, fuzzy +msgid "Address:" +msgstr "Адреса" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Обустави" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Прихвати" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Настави" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Отвори директоријум..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "Иксчет: DCC списак разговора" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Пријем" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Послато" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "Поч. време" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*НОВО*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "Унеси текст" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Име" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Наредба" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "На горе" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "На доле" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Откажи" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Сними" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Додај нов" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Обриши" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Уреди" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Помоћ" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "Не повезуј се аутоматски са серверима" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "Користи други директоријум са подешавањима" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "Не учитавај аутоматски додатке" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "Прикажи директоријум за аутоматско учитавање додатака" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "Прикажи директоријум са корисниковим подешавањима" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Отвори URL irc://сервер:порт/канал" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Пошаљи ову команду:" + +#: src/fe-gtk/fe-gtk.c:132 +msgid "Open URL or execute command in an existing XChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +#, fuzzy +msgid "level" +msgstr "Никада" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Прикажи податке о издању" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"Не може се отворити фонт:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "Запис за претрагу је празан.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d бајт(ов)(а)" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Мрежни ред слања: бајтова: %d" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"Покрени наредбу убацује податке из Data 1 као да су откуцани у кућицу за " +"унос где је притиснут низ тастера. Зато може садржати текст који ће бити " +"послат особи или на канал, обичне или корисникове наредбе. Када се покрене, " +"сви знакови \\n у Data 1 користе се да раздвоје наредбе тако да је могуће " +"покренути више од једне. Ако желите да имате \\ у тексту, онда треба унети \\" +"\\" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"Наредба ^BПромени страну^B листа странице у свесци. Поставите Data 1 на " +"страну на коју желите да одете. Ако је поље Data 2 испуњено, онда се броји у " +"односу на текући положај." + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"Наредба ^BУбаци у запис^B ће убацити садржај поља Data 1 на место на ком је " +"био фокус када је притиснута комбинација тастера" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"Команда ^BПомери страну^B помера текст у елементу нагоре или надоле за једну " +"страну. Ако је Data 1 садржи било шта, померање је на горе, иначе је на доле" + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"Команда ^BПостави запис^B пребацује садржај поља Data 1 на место које је " +"било у фокусу" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"Команда ^BПоследња команда^B уписује последњу унету команду, као када се у " +"шкољци притисне стрелица нагоре" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"Команда ^BНаредна команда^B уписује команду која је следећа на реду, слично " +"као притисак на стрелицу надоле у шкољци" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Ова команда мења текст у линији за унос тако што довршава непотпуно име или " +"команду. Ако је поље Data 1 попуњено, дупли притисак на табулатор бира " +"последње име, не следеће" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Овом командом се можете шетати горе-доле кроз листу имена. Ако је Data 1 " +"постављено на било шта, кретаћете се на горе, иначе на доле" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Ова команда проверава да ли се последња унета реч налази на списку за " +"замене, и замењује је ако је пронађе" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Ова команда помера тренутни језичак за једно место улево" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Ова команда помера тренутни језичак удесно" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Ова команда помера активну групу језичака улево" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Ова команда помера активну групу језичака удесно" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "Убацује улазну линију у претходне команде, али не шаље серверу" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "Грешка при учитавању распореда тастера" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<нема>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Мод" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Тастер" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Акција" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "Иксчет: Скраћенице с тастатуре" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Data 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Data 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Грешка при отварању датотеке са подешавањима\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Назив тастера %s у датотеци са распоредом није препознат\n" +"Учитавање је прекинуто, морате поправити %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Назив акције %s међу распоредом тастера није препознат\n" +"Учитавање је прекинуто, морате поправити %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"На овом месту требала је да стоји линија са подацима (почиње са Dx{:|!}) али " +"је стајало:\n" +"%s\n" +"\n" +"Учитавање прекинуто, морате поправити %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"Датотека са распоредом тастера је неисправна, учитавање је прекинуто\n" +"Морате поправити %s/keybindings.conf\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "Не може се писати у ту датотеку." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Ова се датотека не може читати." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Овај шаблон већ постоји." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Приватно" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Вест" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Позови" + +# Јесте, натегнуто је... +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Прихвати" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Унеси шаблон за ућуткивање" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "Иксчет: Списак ућутканих" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Статистика за ућуткане:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Канал:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Приватно:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Вести:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Позив:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "Додај..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "Име канала је прекратко, пробајте поново." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "Иксчет: Повезивање је успело" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "Повезивање са %s је успело." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"У прозору са списком сервера, ниједан канал (соба за разговор) није изабрана " +"за аутоматску пријаву за ову мрежу." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "Шта бисте желели следеће да урадите?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "_Ништа, прикључићу се каналу касније." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "_Прикључи се каналу:" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Ако знате име канала коме се желите прикључити, унесите га овде." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "О_твори прозор са списком канала." + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "Добављање списка канала може да потраје неколико минута." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "_Увек приказуј ово прозорче после повезивања." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Разговор са" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Тема за %s је: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Тема није постављена" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"Овај сервер има укупно оволико канала: %d или дијалога. Да ли желите да их " +"све затворите?" + +#: src/fe-gtk/maingui.c:1283 +#, fuzzy +msgid "Quit XChat?" +msgstr "О Иксчету" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1310 +#, fuzzy, c-format +msgid "You are connected to %i IRC networks." +msgstr "Повежи се аутоматски када се програм покрене" + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "" + +#: src/fe-gtk/maingui.c:1314 +#, fuzzy +msgid "Some file transfers are still active." +msgstr "Још увек ради пренос датотека, да ли ипак желите крај рада?" + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Убаци атрибут или кôд за боју" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Масно</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Подвучено</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Обично" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Боје 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Боје 8-15" + +#: src/fe-gtk/maingui.c:1612 +#, fuzzy +msgid "_Settings" +msgstr "П_одешавања" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "Сакриј поруке о доласку и одласку" + +#: src/fe-gtk/maingui.c:1625 +#, fuzzy +msgid "_Extra Alerts" +msgstr "Посебне справице" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "Звук уз поруку" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +#, fuzzy +msgid "_Detach" +msgstr "_Откачи језичак" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "_Затвори" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "Макс. број корисника мора бити унет као број!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Заштита теме" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Нема спољашњих порука" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Тајни" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "По позиву" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Надгледан" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Списак избачених" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Кључна реч" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Макс. људи" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Покажи/сакриј кориснике" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"Не могу да поставим провидну позадину!\n" +"\n" +"Можда користите управљач прозора који\n" +"тренутно није подржан.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Унесите ново име:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Непознат рачунар" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Право име:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Корисник:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "Држава:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Рачунар:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "пре оволико минута: %u" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Посл. порука:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Одсутан:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"Трака са менијем је сада сакривена. Можете је поново приказати притиском на " +"F9 или десним кликом на празни део главне текстуалне обласни." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Отвори везу у читачу" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Умножи изабрану везу" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Иди на канал" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Изађи са канала" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Понови приступ" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "Иксчет: Корисников мени" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Уреди овај мени..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Добавка списка канала..." + +#: src/fe-gtk/menu.c:1348 +#, fuzzy +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Корисникове команде - посебни кодови:\n" +"\n" +"%c = тренутни канал\n" +"%m = подаци о машини\n" +"%n = ваше име\n" +"%t = време/датум\n" +"%v = верзија програма\n" +"%2 = реч 2\n" +"%3 = реч 3\n" +"&2 = реч 2 и даље до краја линије\n" +"&3 = реч 3 и даље до краја линије\n" +"\n" +"нпр:\n" +"/cmd john hello\n" +"\n" +"%2 би било \"john\"\n" +"&2 би било \"john hello\"." + +#: src/fe-gtk/menu.c:1364 +#, fuzzy +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Корисничка дугмад - посебни кодови:\n" +"\n" +"%a = сва изабрана имена\n" +"%c = овај канал\n" +"%h = рачунар на коме је изабрано име\n" +"%m = подаци о рачунару\n" +"%n = ваше име\n" +"%s = одабрано име\n" +"%t = време/датум\n" + +#: src/fe-gtk/menu.c:1374 +#, fuzzy +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Дугмад прозорчета - посебни кодови:\n" +"\n" +"%a = сва изабрана имена\n" +"%c = овај канал\n" +"%h = рачунар на коме је изабрано име\n" +"%m = подаци о рачунару\n" +"%n = ваше име\n" +"%s = одабрано име\n" +"%t = време/датум\n" + +#: src/fe-gtk/menu.c:1384 +#, fuzzy +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"CTCP одговори - посебни кодови:\n" +"\n" +"%d = подаци (цео CTCP)\n" +"%m = подаци о рачунару\n" +"%s = име онога ко је послао упит\n" +"%t = време/датум\n" +"%2 = друга реч\n" +"%3 = трећа реч\n" +"&2 = све почев од друге речи до краја реда\n" +"&3 = све почев од треће речи до краја реда\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"Обрада URLова - посебни кôдови:\n" +"\n" +"%s = запис URL-а\n" +"\n" +"Стављање узвичника (!) испред команде\n" +"говори да је треба проследити шкољци\n" +"уместо Иксчету" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "Иксчет: Корисникове команде" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "Иксчет: Појавни мени из списка корисника" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Замени са" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "Иксчет: Замени" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "Иксчет: Обрада URLова" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "Иксчет: Корисничка дугмета" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "Иксчет: Дугмета у прозорчету" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "Иксчет: Одговори на CTCP упите" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_Иксчет" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "_Списак мрежа..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "_Нов" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Језичак за сервер..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Језичак за канал" + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Прозор за сервер..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Прозор за канал..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "_Учитај додатак или скрипт..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "_Крај" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "_Преглед" + +#: src/fe-gtk/menu.c:1591 +#, fuzzy +msgid "_Menu Bar" +msgstr "_Трака менија" + +#: src/fe-gtk/menu.c:1592 +#, fuzzy +msgid "_Topic Bar" +msgstr "_Трака за тему" + +#: src/fe-gtk/menu.c:1593 +#, fuzzy +msgid "_User List" +msgstr "Списак имена" + +#: src/fe-gtk/menu.c:1594 +#, fuzzy +msgid "U_serlist Buttons" +msgstr "_Корисничка дугмета" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "_Дугмета за начин приступа" + +#: src/fe-gtk/menu.c:1597 +#, fuzzy +msgid "_Channel Switcher" +msgstr "Списак канала..." + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "_Језичци" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "_Дрво" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "_Мерења мреже" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Искључено" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Графичко" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "_Сервер" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "_Искључи се" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "_Опет се повежи" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "Прикључи се..." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "Прикључи се..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Објави одсуство" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "_Корисников мени" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "П_одешавања" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "_Поставке..." + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Напредна" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Замени све..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "Одговори на CTCP..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Дугмета за прозорче..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Скраћенице с тастатуре..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Праћење текста..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "Обрада URL-ова..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Корисникове команде..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Корисничка дугмета..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Корисников избор..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_Прозор" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Списак забрана..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Знаковна табела..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Директан разговор..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Преноси датотека..." + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "Списак забрана..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Списак ућутканих..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Додаци и скриптови..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Сирови дневник..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "Памћење URL-ова..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Постави овде ознаку" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "О_чисти текст" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Тражи текст..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Сними текст..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_Помоћ" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "_Садржај" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "_О програму" + +#: src/fe-gtk/menu.c:2147 +#, fuzzy +msgid "_Attach" +msgstr "Закачи језичак" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Био је ту" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Није на вези" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Никада" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, fuzzy, c-format +msgid "%d minutes ago" +msgstr "пре оволико минута: %u" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "На вези" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Унесите име које треба додати:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "Иксчет: Списак за слање" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "Отвори разговор" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:591 +#, fuzzy +msgid "_Hide" +msgstr "Сакриј" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +#, fuzzy +msgid "Channel Message" +msgstr "Име канала" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +#, fuzzy +msgid "Private Message" +msgstr "Звук на приватну поруку" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +#, fuzzy +msgid "Highlighted Message" +msgstr "Звук при означеним порукама" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "Одсутан" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Верзија" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Опис" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Избор додатка или скрипта за учитавање" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "Иксчет: Додаци и скриптови" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "_Учитај..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "У_клони" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Сачувај као..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "Иксчет: Сирови дневник (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Обриши дневник" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "Прозор за ког сте покренули претрагу више не постоји." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "Претрага је дошла до краја, ништа више није нађено." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "Иксчет: Претрага" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "_Разликуј мала и велика слова" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "Тражи _уназад" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "_Нађи" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Нова мрежа" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Да ли заиста треба брисати мрежу \"%s\" и све сервере у њој?" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "канал" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "Иксчет: списак канала (%s)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "Лозинка:" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "_Уреди" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "Име и право име не могу да буду празни." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "Иксчет: Уреди %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Сервери за: %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Повежи се само са изабраним рачунарима" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Не испитуј све рачунаре у списку када повезивање не успе." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Ваши подаци" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Користи главне податке о кориснику" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "_Надимак:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Други избор:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "_Корисничко име:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "_Право име:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Повезивање у току" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Повежи се аутоматски када се програм покрене" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "Користи заступника (proxy)" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "Користи SSL за све рачунаре у овој мрежи" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Прихвати неважећи SSL сертификат." + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "Напусти канал:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "Канале треба раздвојити запетама, не размацима!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Пошаљи ову команду:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Додатна команда која се извршава по повезивању. Ако Вам треба више од једне, " +"овде унесите LOAD -e <ДАТОТЕКА>, где је <ДАТОТЕКА> име датотеке са командама " +"које треба извршити." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Лозинка за nickserv:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Ако Ваш надимак захтева лозинку, упишите је овде. Ову могућност не " +"подржавају све IRC мреже." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Лозинка за сервер:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "" +"Лозинка за приступ серверу. Ако нисте сигурни шта овде треба да стоји, " +"оставите празно." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Скуп знакова:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "Иксчет: списак мрежа" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Подаци о кориснику" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Трећи избор:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Мреже" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "Не приказуј списак мрежа при покретању програма" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "_Уреди..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "Поређај" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "_Повежи се" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Изглед линије са текстом" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Слова:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Позадина:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Памти оволико линија:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Обоји имена" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Додели свакој особи на ИРЦ-у различиту боју" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Уравнај надимке" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Уравнај надимке по десној страни" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Провидна позадина" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Прикажи линију за обележавање" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Убаци црвену линију после последње прочитане линије текста." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Подешавања провидности" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Црвенa:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Зеленa:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Плава:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Текст датума" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Убацуј време у дневнике" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Формат датума:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Погледајте упутство за strftime." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Улазни прозор" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Користи боје и писмо из кућице за текст" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Провера правописа" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Суфикс за допуну имена:" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "Аутоматска допуна имена" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Суфикс за допуну имена:" + +#: src/fe-gtk/setup.c:147 +#, fuzzy +msgid "Nick completion sorted:" +msgstr "Суфикс за допуну имена:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Кодови при уносу текста" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Тумачи %nnn као ASCII вредност" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Тумачи %C, %B као боју, подебљан испис итд." + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, опови први" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, опови последњи" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Неуређено" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Горе" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Доле" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Сакриј" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Списак имена" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Покажи имена рачунара" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Уреди списак корисника према:" + +#: src/fe-gtk/setup.c:205 +#, fuzzy +msgid "Show user list at:" +msgstr "Покажи/сакриј кориснике" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Праћење одсуства" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "Праћење одсутности корисника и њихово означавање другом бојом" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "Прати одсутне на каналима са мање од:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Шта извршити на двоструки клик" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Прозори" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Језичци" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Увек" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Само жељени језичци" + +#: src/fe-gtk/setup.c:242 +#, fuzzy +msgid "Tree" +msgstr "_Дрво" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Отвори посебан језичак за поруке са сервера" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Отвори посебан језичак за вести са сервера" + +#: src/fe-gtk/setup.c:252 +#, fuzzy +msgid "Open a new tab when you receive a private message" +msgstr "Отвори посебан језичак за поруке са сервера" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Уреди језичке лексикографски" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "Мали језичци" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Фокусирај нове језичке:" + +#: src/fe-gtk/setup.c:258 +#, fuzzy +msgid "Show channel switcher at:" +msgstr "Прати одсутне на каналима са мање од:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Скрати језичке на:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "слова" + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Језичци или прозори" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Место за приказ нових канала:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Место за прикаѕ нових разговора:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Место за приказ помоћних порука:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "DCC, Ignore и Notify се отварају у језичцима или прозорима?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "Не" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Да" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "Омогући избор директоријума сваки пут" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Датотеке и директоријуми" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Одмах прихвати понуђене датотеке:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Снимај датотеке у:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Помери пренесене датотеке у дир.:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Запамти надимке у именима датотекама" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Подешавања мреже" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Сазнај IP овог рачунара од сервера" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Упитајте ИРЦ сервер да сазнате вашу адресу. Корисни уколико је права адреса " +"из опсега 192.168.*.*!" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "DCC IP адреса:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Пријави ову адресу при нуђењу датотека." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Први порт за слање DCC:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Последњи порт за слање DCC" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!Вредност порта поставити на нулу за пуни опсег." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Највеће брзине преноса (бајт/секунда)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Једно слање:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Макс. брзина за један пренос" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Једно преузимање:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Сва слања:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Макс. брзина саобраћаја за све датотеке" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Сва преузимања:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Узбуне" + +#: src/fe-gtk/setup.c:333 +#, fuzzy +msgid "Show tray balloons on:" +msgstr "Прикажи језичке:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:339 +#, fuzzy +msgid "Enable system tray icon" +msgstr "Укључи праћење одсустава" + +#: src/fe-gtk/setup.c:341 +#, fuzzy +msgid "Highlighted Messages" +msgstr "Звук при означеним порукама" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:344 +#, fuzzy +msgid "Extra words to highlight:" +msgstr "Речи које треба нагласити:" + +#: src/fe-gtk/setup.c:345 +#, fuzzy +msgid "Nick names not to highlight:" +msgstr "Имена која не треба нагласити:" + +#: src/fe-gtk/setup.c:346 +#, fuzzy +msgid "Nick names to always highlight:" +msgstr "Имена која не треба нагласити:" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Речи раздвојте запетама." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Подразумеване поруке" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Крај:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Напусти канал:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Одсутан:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Одсутан" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Испиши поруке о одсуству" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Поруку о одсуству шаљи на све канале" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Само једном објави одсутност" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Исте поруке се не понављају" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Склони AWAY кад се вратим" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Објави повратак пре слања порука" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Напредна подешавања" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Пауза пре новог повезивања:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Приказуј приступе у сировом облику" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Изврши WHOIS кад се појави неко посматран" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "Шаље /WHOIS када се појави име са списка посматраних" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Сакриј поруке о доласку и одласку" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Увек сакривај поруке о доласку и одласку" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Непосредне акције (DCC) у посебан прозор" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Прозор за слање" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Прозор за пријем" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Прозор за разговор" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Записивање" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "Дозволи бележење разговора" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Име дневника:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=сервер %c=канал %n=мрежа." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Уписуј у дневнике време када су поруке стигле" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Формат за запис датума у дневник:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(искључено)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS заступник (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Све везе" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "Само ИРЦ сервер" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "DCC само пријем" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Ваша адреса" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Повежи се са:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "Корисно само за рачунаре са вишеструким адресама." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Заступник (proxy):" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Име рач.:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Порт:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Врста:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Користи заступника (proxy) за:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Аутентификација заступника" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Користи аутентификацију (само MS, HTTP или Socks5)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Користи аутентификацију (само HTTP или Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Корисничко име:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Лозинка:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Одабери слику" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "Избор директоријума за пријем" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Одабери писмо" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Прегледај..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Означи идентификоване кориснике са:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Означи неидентификоване кориснике са:" + +#: src/fe-gtk/setup.c:1161 +#, fuzzy +msgid "Open Data Folder" +msgstr "Отвори директоријум..." + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Одабери боју" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Боје текста" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "mIRC боје:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Локалне боје:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Први план:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Позадина:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Истицање текста" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Боје сучеља" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Нови подаци:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Линија ознаке:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Нова порука:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Одсутан корисник:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Истицање:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Догађај" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Звучни запис:" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Изаберите име звучног записа" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Начин пуштања звука:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "Вањски програм за пуштање звука:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "Спољњи програм" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "Аутоматски" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "Директоријум за звучне записе:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Звучни запис:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "Прегледај..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "Пусти" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Сучеље" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Унос текста" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Списак корисника" + +#: src/fe-gtk/setup.c:1703 +#, fuzzy +msgid "Channel switcher" +msgstr "Списак канала..." + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Боје" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Разговори" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Опште" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Звук" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Подешавање мреже" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Пренос датотека" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Врсте" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "Неке измене ће постати видљиве тек када следећи пут покренете програм." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*УПОЗОРЕЊЕ*\n" +"Аутоматско прихватање DCC захтева у кућном\n" +"директоријуму је опасно и може се искористити.\n" +"Нпр. неко може послати датотеку .bash_profile" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "Иксчет: Поставке" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Грешка при читању текста" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Овај сигнал је допремио %d аргумената, $%d није исправан" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Штампај датотеку текстова" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Уреди догађаје" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ број" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Учитај из..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Пробај све" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +# XXX FIXME Ово би могло лепше да се преведе +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "Иксчет: Преписивање URLова" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Обриши списак" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Пресликај овај URL" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Пресликај" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Сними списак у датотеку" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d оп., %d ук." + +#~ msgid "%C18*$t$1%O $2" +#~ msgstr "%C18*$t$1%O $2" + +#~ msgid "%C21*%O$t%C21%B$1%O%C21 $2" +#~ msgstr "%C21*%O$t%C21%B$1%O%C21 $2" + +#~ msgid "%C18%H<%H$4$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$4$1%H>%H%O$t$2" + +#~ msgid "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" +#~ msgstr "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" + +#~ msgid "%C28-%C29$1/$2%C28-%O$t$3" +#~ msgstr "%C28-%C29$1/$2%C28-%O$t$3" + +#~ msgid "$1$t$2" +#~ msgstr "$1$t$2" + +#~ msgid "%C19>%O$1%C19<%O$t$2" +#~ msgstr "%C19>%O$1%C19<%O$t$2" + +#~ msgid "%C16*%O$t$1%O" +#~ msgstr "%C16*%O$t$1%O" + +#~ msgid "%C28-%C29$1%C28-%O$t$2" +#~ msgstr "%C28-%C29$1%C28-%O$t$2" + +#~ msgid "%C28*%C29$3$1%C28*$t%O$2" +#~ msgstr "%C28*%C29$3$1%C28*$t%O$2" + +#~ msgid "%C18%H<%H$3$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$3$1%H>%H%O$t$2" + +#~ msgid "%C22*%O$t$1" +#~ msgstr "%C22*%O$t$1" + +#~ msgid "%C31%H<%H$4$1%H>%H%O%C30$t$2" +#~ msgstr "%C31%H<%H$4$1%H>%H%O%C30$t$2" + +#~ msgid "PID" +#~ msgstr "PID" + +#~ msgid "US Minor Outlying Islands" +#~ msgstr "Мања америчка истурена острва" + +#~ msgid "Direct client-to-client" +#~ msgstr "Директни приступ клијенту" + +#~ msgid "Send File" +#~ msgstr "Пошаљи датотеку" + +#~ msgid "Offer Chat" +#~ msgstr "Понуди разговор" + +#~ msgid "Abort Chat" +#~ msgstr "Прекини разговор" + +#~ msgid "Userinfo" +#~ msgstr "Информације" + +#~ msgid "Clientinfo" +#~ msgstr "Инф. о клијенту" + +#~ msgid "Time" +#~ msgstr "Време" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "Опер" + +#~ msgid "Kill this user" +#~ msgstr "Дај реч" + +#~ msgid "Mode" +#~ msgstr "Приступ" + +#~ msgid "Give Half-Ops" +#~ msgstr "Дај полу-опа" + +#~ msgid "Take Half-Ops" +#~ msgstr "Одузми полу-опа" + +#~ msgid "Ignore" +#~ msgstr "Ућуткај" + +#~ msgid "Ignore User" +#~ msgstr "Занемари корисника" + +#~ msgid "UnIgnore User" +#~ msgstr "Врати ућуткане" + +#~ msgid "Info" +#~ msgstr "Информ." + +#~ msgid "Who" +#~ msgstr "Ко је" + +#~ msgid "DNS Lookup" +#~ msgstr "DNS потрага" + +#~ msgid "Trace" +#~ msgstr "Следи" + +#~ msgid "UserHost" +#~ msgstr "Рачунар" + +#~ msgid "External" +#~ msgstr "Спољњи" + +#~ msgid "Traceroute" +#~ msgstr "Следи" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "Unban" +#~ msgstr "Скини забр." + +#~ msgid "I can't save an empty list!" +#~ msgstr "Списак се не снима када је празан!" + +#~ msgid "List display options:" +#~ msgstr "Списак опција за приказ" + +#~ msgid "Minimum Users:" +#~ msgstr "Мин. корисника" + +#~ msgid "Maximum Users:" +#~ msgstr "Макс. корисника" + +#~ msgid "Regex Match:" +#~ msgstr "Regex образац" + +#~ msgid "Apply Match to:" +#~ msgstr "Када се поклопи:" + +#~ msgid "Apply" +#~ msgstr "Примени" + +#~ msgid "Refresh the list" +#~ msgstr "Освежи списак" + +#~ msgid "Save the list" +#~ msgstr "Сними списак" + +#~ msgid "None" +#~ msgstr "Ниједна" + +#~ msgid "To" +#~ msgstr "За" + +#~ msgid "Started" +#~ msgstr "Започето" + +#~ msgid "Speed limit" +#~ msgstr "Гранична брзина" + +#~ msgid "XChat: File Receive List" +#~ msgstr "Иксчет: Списак датотека на пријему" + +#~ msgid "Open" +#~ msgstr "Отвори" + +#~ msgid "Ack" +#~ msgstr "Потврди" + +#~ msgid "To/From" +#~ msgstr "Од/за" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "Нема других прозора, желите ли да изађете из Xchat-а?" + +#~ msgid "Show join/part messages" +#~ msgstr "Обавести о улазу/излазу" + +#~ msgid "Color paste" +#~ msgstr "Залепи и боју" + +#~ msgid "Go to" +#~ msgstr "Иди на" + +#~ msgid "_Close Tab" +#~ msgstr "_Затвори језичак" + +#~ msgid "_Layout" +#~ msgstr "_Изглед" + +#~ msgid "Notify List..." +#~ msgstr "Списак посматраних..." + +#~ msgid "_Attach Window" +#~ msgstr "_Закачи прозор" + +#~ msgid "_Close Window" +#~ msgstr "За_твори прозор" + +#~ msgid "User" +#~ msgstr "Корисник" + +#~ msgid "Server" +#~ msgstr "Рачунар" + +#~ msgid "XChat: Notify List" +#~ msgstr "Иксчет: Списак посматраних" + +#~ msgid "C_hannels to join:" +#~ msgstr "Приступи _каналима:" + +#~ msgid "Resizable user list" +#~ msgstr "Променљива величина списка корисника" + +#~ msgid "Left" +#~ msgstr "Слева" + +#~ msgid "Right" +#~ msgstr "Здесна" + +#~ msgid "Tabs Location" +#~ msgstr "Смештање језичака" + +#~ msgid "(Can be a text file relative to ~/.xchat2/)." +#~ msgstr "(Можете користити име датотеке релативно у одн. на ~/.xchat2/)." + +#~ msgid "(Can be a text file relative to config dir)." +#~ msgstr "(Може бити релативно у односу на дир. са подешавањима)." + +#~ msgid "Flash taskbar on highlighted messages" +#~ msgstr "Бљесак оквира прозора при означеним порукама" + +#~ msgid "Beep on channel messages" +#~ msgstr "Звук при порукама на каналу" + +#~ msgid "Open an irc:// url" +#~ msgstr "Отвори URL irc://" + +#~ msgid "irc://server:port/channel" +#~ msgstr "irc://сервер:порт/канал" + +#~ msgid "Execute a xchat command" +#~ msgstr "Изврши иксчетову наредбу" + +#~ msgid "\"Command to execute\"" +#~ msgstr "\"Наредба за извршење\"" + +#~ msgid "Prints some text to the current tab/window" +#~ msgstr "Исписује неки текст у тренутни језичак одн. прозор" + +#~ msgid "\"Text to print\"" +#~ msgstr "\"Текст за испис\"" + +#~ msgid "Change the context to the channel" +#~ msgstr "Промена контекста у канал" + +#~ msgid "Change the context to the server" +#~ msgstr "Промена контекста у сервер" + +#~ msgid "server" +#~ msgstr "рачунар" + +#~ msgid "Get some informations from xchat" +#~ msgstr "Добави информације од иксчета" + +# XXX FIXME Шта је ово? +#~ msgid "id" +#~ msgstr "иб" + +#~ msgid "Get settings from xchat" +#~ msgstr "Добави подешавања од иксчета" + +#~ msgid "name" +#~ msgstr "име" + +#~ msgid "" +#~ "xchat-remote: %s\n" +#~ "Try `xchat-remote --help' for more information\n" +#~ msgstr "" +#~ "xchat-remote: %s\n" +#~ "Пробајте `xchat-remote --help' за више података\n" + +#~ msgid "Failed to complete SetContext" +#~ msgstr "Није могуће довршити поставку контекста" + +#~ msgid "Failed to complete print" +#~ msgstr "Није могуће довршити штампање" + +#~ msgid "Failed to complete GetInfo" +#~ msgstr "Није могуће довршити добавку података" + +#~ msgid "Failed to complete GetPrefs" +#~ msgstr "Није могуће довршити добавку поставки" + +#~ msgid "%s doesn't exist\n" +#~ msgstr "%s не постоји\n" + +#~ msgid "%s loaded successfully!\n" +#~ msgstr "%s је успешно учитан!\n" + +#~ msgid "France, Metropolitan" +#~ msgstr "Француска, Метрополитан" + +#~ msgid "Neutral Zone" +#~ msgstr "Неутрална зона" + +#~ msgid "Settings saved." +#~ msgstr "Подешавања су снимљена." + +#~ msgid "Save rawlog" +#~ msgstr "Сними дневник" + +#~ msgid "Save rawlog..." +#~ msgstr "Сними дневник..." + +#~ msgid "XChat: Server List" +#~ msgstr "Иксчет: Списак сервера" + +#~ msgid "Completes nick names without using the TAB key" +#~ msgstr "Допуњава надимке без притиска на тастер TAB" + +#~ msgid "Input Box Appearance" +#~ msgstr "Изглед поља за унос текста" + +#~ msgid "Convert spaces to underscore before sending" +#~ msgstr "Пребаци размаке у доње црте пре слања" + +#~ msgid "(See strftime manpage for details)." +#~ msgstr "(Детаљније у упутству за strftime)." + +#~ msgid "From:" +#~ msgstr "Од:" + +#~ msgid "To:" +#~ msgstr "За:" + +#~ msgid "Size:" +#~ msgstr "Величина:" + +#~ msgid "MIME Type" +#~ msgstr "MIME тип" + +#~ msgid "DIRECTORY" +#~ msgstr "КАТАЛОГ" + +#~ msgid "Close this tab/window" +#~ msgstr "Затвори прозор/језичак" + +#~ msgid "User List Buttons" +#~ msgstr "Корисничка дугмета" + +#~ msgid "New Shell Tab..." +#~ msgstr "Нови језичак са шкољком..." + +#~ msgid "_IRC" +#~ msgstr "_IRC" + +#~ msgid "Invisible" +#~ msgstr "Постави невидљивост" + +#~ msgid "Receive Wallops" +#~ msgstr "Прихвати Wallops" + +#~ msgid "Receive Server Notices" +#~ msgstr "Прихвати вести са сервера" + +#~ msgid "Auto Rejoin when Kicked" +#~ msgstr "Прикључи се поново после избацивања" + +#~ msgid "Never-give-up ReConnect" +#~ msgstr "Не одустај од повезивања" + +#~ msgid "Auto Open Dialog Windows" +#~ msgstr "Разговоре у посебан прозор" + +#~ msgid "Auto Accept Direct Chat" +#~ msgstr "Увек прихвати DCC" + +#~ msgid "Reload Settings" +#~ msgstr "Учитај подешавања" + +#~ msgid "Save Settings now" +#~ msgstr "Сними подешавања" + +#~ msgid "File Receive..." +#~ msgstr "Пријем датотеке..." + +#~ msgid "File Send..." +#~ msgstr "Слање датотеке..." + +#~ msgid "Close" +#~ msgstr "Затвори" + +#~ msgid "Connect in new tab" +#~ msgstr "Повежи се у _новом језичку" + +#~ msgid "Tint (shade) transparency" +#~ msgstr "Провидност уз претапање" + +#~ msgid "Strip mIRC colors" +#~ msgstr "Уклањај mIRC боје" + +#~ msgid "Info text" +#~ msgstr "Текстуални" + +#~ msgid "User list buttons enabled" +#~ msgstr "Прикажи корисничку дугмад" + +#~ msgid "Lag meter:" +#~ msgstr "Мерење одзива:" + +#~ msgid "Throttle meter:" +#~ msgstr "Мерење протока:" + +#~ msgid "(disabled)" +#~ msgstr "(искључено)" + +#~ msgid "A star (*)" +#~ msgstr "Звездица (*)" + +#~ msgid "A red star (*)" +#~ msgstr "Црвена звездица (*)" + +#~ msgid "%C19>%O$1%C19<%O$t$2%O" +#~ msgstr "%C19>%O$1%C19<%O$t$2%O" + +#~ msgid "Servername" +#~ msgstr "Име сервера" + +#~ msgid "" +#~ " File: %s\n" +#~ " To/From: %s\n" +#~ " Size: %u\n" +#~ " Port: %d\n" +#~ " IP Number: %s\n" +#~ "Start Time: %s Max CPS: %d\n" +#~ msgstr "" +#~ " Датотека: %s\n" +#~ " Од/За: %s\n" +#~ " Величина: %u\n" +#~ " Порт: %d\n" +#~ " IP број : %s\n" +#~ "Време поч.: %s Макс. зн/сек: %d\n" + +#~ msgid "Add new" +#~ msgstr "Додај нов" + +#~ msgid "User: %s" +#~ msgstr "Корисник: %s" + +#~ msgid "Realname: %s" +#~ msgstr "Право име: %s" + +#~ msgid "Server: %s" +#~ msgstr "Сервер: %s" + +#~ msgid "Real na_me:" +#~ msgstr "Право _име:" + +#~ msgid "Select a file to save to" +#~ msgstr "Избор датотеке за снимање" + +#~ msgid "%C22*%O$t%C28[%O$1%C28] %O$2" +#~ msgstr "%C22*%O$t%C28[%O$1%C28] %O$2" + +#~ msgid "Former Czechoslovakia" +#~ msgstr "Србија и Црна Гора (некад било: Чехословачка)" + +#~ msgid "Zaire" +#~ msgstr "Заир" + +#~ msgid "Delete All" +#~ msgstr "Бриши све" + +#~ msgid "X-Chat: Edit Key Bindings" +#~ msgstr "X-Chat: Уреди распоред тастера" + +#~ msgid "Key Bindings..." +#~ msgstr "Распоред тастера..." diff --git a/xchat-2.8.8/po/stamp-po b/xchat-2.8.8/po/stamp-po new file mode 100644 index 0000000..9788f70 --- /dev/null +++ b/xchat-2.8.8/po/stamp-po @@ -0,0 +1 @@ +timestamp diff --git a/xchat-2.8.8/po/sv.gmo b/xchat-2.8.8/po/sv.gmo new file mode 100644 index 0000000000000000000000000000000000000000..d98c7994833f52175e80d64071ab00d8d59ef94d GIT binary patch literal 97489 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 literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/po/sv.po b/xchat-2.8.8/po/sv.po new file mode 100644 index 0000000..aa79a3c --- /dev/null +++ b/xchat-2.8.8/po/sv.po @@ -0,0 +1,5599 @@ +# Swedish messages for XChat. +# This file is distributed under the same license as the xchat package. +# Christian Rose <menthos@menthos.com>, 2000, 2001, 2002, 2003, 2004. +# Daniel Nylander <po@danielnylander.se>, 2007, 2008, 2010. +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.8.6\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2010-04-24 23:27+0100\n" +"Last-Translator: Daniel Nylander <po@danielnylander.se>\n" +"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Kan inte skapa ~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Jag är upptagen" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Lämnar" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* Att köra IRC som root är dumt! Du bör skapa ett\n" +" användarkonto och använda det för att logga in.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Väntar" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Aktiv" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Misslyckades" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Klar" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Anslut" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Avbruten" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "Kan inte komma åt %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Fel" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s erbjuder \"%s\". Accepterar du?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Inga aktiva DCC:er\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "JA " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "NEJ " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Du CTCP-översvämmas från %s, ignorerar %s\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "Du MSG-översvämmas från %s, ställer in gui_auto_open_dialog till AV.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s ansluten\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s frånkopplad\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Gick inte in i någon kanal. Prova /join #<kanal>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Inte ansluten. Prova /server <värd> [<port>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Redan markerad som frånvarande: %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "Redan markerad som tillbaka.\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "Jag behöver /bin/sh för att kunna köra!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Tillgängliga kommandon:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Användardefinierade kommandon:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Användardefinierade insticksmoduler:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "Skriv /HELP <kommando> för ytterligare information, eller /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Ignorerade okända kommandot \"%s\"." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "Ingen sådan insticksmodul hittades.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Den insticksmodulen vägrar att glömmas.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <namn> <åtgärd>, lägger till en knapp under användarlistan" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <kmdo>, skickar ett kommando till alla kanaler du är inne i" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHANL <kmdo>, skickar ett kommando till alla kanaler du är inne i" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "" +"ALLSERV <kmdo>, skickar ett kommando till alla servrar du är ansluten till" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<orsak>], anger att du är frånvarande" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "BACK, ställer in dig som tillbaka (inte frånvarande)" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <mask> [<bannlysningstyp>], bannlyser alla som matchar masken från den " +"aktuella kanalen. Om de redan är på kanalen kommer detta inte att sparka ut " +"dem (kräver kanaloperatörsstatus)" + +#: src/common/outbound.c:3506 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <variabel> [<värde>]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "" +"CLEAR [ALL|HISTORY], tömmer aktuellt textfönster eller kommandohistorik" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, stänger det aktuella fönstret/fliken" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" +"COUNTRY [-s] <kod|jokertecken>, söker efter en landskod, exempelvis se = " +"Sverige" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <smeknamn> <meddelande>, skickar CTCP-meddelandet till smeknamn, " +"vanliga meddelanden är VERSION och USERINFO" + +#: src/common/outbound.c:3516 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "" +"CYCLE [<kanal>], lämnar aktuell eller angiven kanal och går omedelbart in i " +"den igen" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <smeknamn> - ta emot en erbjuden fil\n" +"DCC SEND [-maxcps=#] <smeknamn> [fil] - skicka en fil till någon\n" +"DCC PSEND [-maxcps=#] <smeknamn> [fil] - skicka en fil i passivt läge\n" +"DCC LIST - visa DCC-lista\n" +"DCC CHAT <smeknamn> - erbjud någon DCC-chatt\n" +"DCC PCHAT <smeknamn> - erbjud DCC-chatt i passivt läge\n" +"DCC CLOSE <typ> <smeknamn> <fil> exempel:\n" +" /dcc close send nisse fil.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <smeknamn>, tar bort halvkanaloperatörsstatus från smeknamnet på den " +"aktuella kanalen (kräver kanaloperatörsstatus)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <namn>, tar bort en knapp under användarlistan" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <smeknamn>, tar bort kanaloperatörsstatus från smeknamnet på den " +"aktuella kanalen (kräver kanaloperatörsstatus)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <smeknamn>, tar bort röststatus från smeknamnet på den aktuella " +"kanalen (kräver kanaloperatörsstatus)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, kopplar från servern" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <smeknamn|värd|ip>, söker en användares IP-nummer" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <text>, skriver ut text lokalt" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <kommando>, kör kommandot. Om flaggan -o används skickas utdata " +"till den aktuella kanalen, annars skrivs den ut i det aktuella textfältet" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, skickar SIGCONT til processen" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], dödar en körande exekvering i den aktuella sessionen. Om -9 " +"anges kommer processen att SIGKILL:as" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, skickar SIGSTOP till processen" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, skickar data till processens standard in" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, tömmer den aktuella serverns sändkö" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" +"GATE <värd> [<port>], tunnlar genom en värd, standardvärde på port är 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <smeknamn> <lösenord>, Dödar ett smeknamnsspöke" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" +"HOP <smeknamn>, ger halvkanaloperatörsstatus till smeknamn (kräver " +"kanaloperatörsstatus)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <lösenord>, identifiera dig själv mot nickserv" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <mask> <typer..> <alternativ..>\n" +" mask - värdmask att ignorera, exempelvis: *!*@*.aol.com\n" +" typer - datatyper att ignorera, en eller alla av:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" alternativ - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <smeknamn> [<kanal>], bjuder in någon till en kanal, " +"standardalternativet är den aktuella kanalen (kräver kanaloperatörsstatus)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <kanal>, går in i kanalen" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <smeknamn>, sparkar ut smeknamn från den aktuella kanalen (kräver " +"kanaloperatörsstatus)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <smeknamn>, bannlyser och sparkar sedan ut smeknamn från den " +"aktuella kanalen (kräver kanaloperatörsstatus)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, tvingar fram en ny eftersläpningskontroll" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <sträng>, söker efter en sträng i bufferten" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <fil>, läser in en insticksmodul eller ett skript" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, tar bort halvkanaloperatörsstatus från alla halvkanaloperatörer i " +"den aktuella kanalen (kräver kanaloperatörsstatus)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, tar bort kanaloperatörsstatus från alla kanaloperatörer i den " +"aktuella kanalen (kräver kanaloperatörsstatus)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <händelse>, skickar händelsen till den aktuella kanalen (händelserna " +"skrivs i tredje person, som exempelvis /me hoppar)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, sparkar ut alla utom dig själv från den aktuella kanalen (kräver " +"kanaloperatörsstatus)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, ger kanaloperatörsstatus till alla användare i den aktuella kanalen " +"(kräver kanaloperatörsstatus)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <smeknamn> <meddelande>, skickar ett privat meddelande" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, listar smeknamnen på den aktuella kanalen" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <smeknamn> <meddelande>, skickar en CTCP-notis" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <värdnamn> [<port>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <smeknamn>, ställer in ditt smeknamn" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <smeknamn/kanal> <meddelande>, skickar en notis. Notiser är en typ av " +"meddelanden som bör reageras på automatiskt" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n nätverk1[,nätverk2,...]] [<smeknamn>], visar din " +"notifieringslista eller lägger till någon till den" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" +"OP <smeknamn>, ger kanaloperatörsstatus till smeknamn (kräver " +"kanaloperatörsstatus)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" +"PART [<kanal>] [<orsak>], lämnar kanalen, standardalternativet är den " +"aktuella kanalen" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <smeknamn | kanal>, CTCP-pingar smeknamn eller kanal" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "" +"QUERY [-nofocus] <smeknamn>, öppnar ett nytt fönster för privata meddelanden " +"till någon" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<orsak>], kopplar från den aktuella servern" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <text>, skickar texten i rå form till servern" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<värd>] [<port>] [<lösenord>], kan anropas bara som /" +"RECONNECT för att återansluta till den aktuella servern eller med /RECONNECT " +"ALL för att återansluta till alla de öppna servrarna" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<värd>] [<port>] [<lösenord>] [<ssl>] " +"[<acceptera_ogiltigt_cert>], kan anropas bara som /RECONNECT för att " +"återansluta till den aktuella servern eller med /RECONNECT ALL för att " +"återansluta till alla de öppna servrarna" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <text>, skicka rå data till xchat på samma sätt som det tas emot från " +"irc-servern" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <text>, skickar texten till objektet i det aktuella fönstret" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <smeknamn> [<fil>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <värd> <port> <kanal>, ansluter och går in i en kanal" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <värd> <port> <kanal>, ansluter och går in i en kanal" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <värd> [<port>] [<lösenord>], ansluter till en server, " +"standardporten är 6667 för normala anslutningar, och 994 för ssl-anslutningar" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <värd> [<port>] [<lösenord>], ansluter till en server, standardporten " +"är 6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <variabel> [<värde>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<position>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<ämne>], ställer in ämnet om något anges, annars visar det aktuellt " +"ämne" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" +"\n" +"TRAY -f <tidsgräns> <fil1> [<fil2>] Blinka lådan mellan två ikoner.\n" +"TRAY -f <filnamn> Ställ in lådan till en fast ikon.\n" +"TRAY -i <nummer> Blinka lådan med en intern ikon.\n" +"TRAY -t <text> Ställ in verktygstips för lådan.\n" +"TRAY -b <titel> <text> Ställ in ballongtext för lådan." + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <mask> [<mask>...], tar bort bannlysning för angivna masker." + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <mask> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <namn>, glömmer en insticksmodul eller ett skript" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, öppnar en URL i din webbläsare" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <smeknamn1> <smeknamn2> etc, färgmärker smeknamn i " +"kanalens användarlista" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "" +"VOICE <smeknamn>, ger röststatus till någon (kräver kanaloperatörsstatus)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <meddelande>, skriver meddelandet i alla kanaler" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <meddelande>, skickar meddelandet till alla kanaloperatörer på den " +"aktuella kanalen" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Användning: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"Ingen hjälp tillgänglig för det kommandot.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Det finns inget sådant kommando.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Felaktiga argument i användarkommando.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "För många rekursiva användarkommandon, avbryter." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Okänt kommando. Prova /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "" +"Ingen \"xchat_plugin_init\"-symbol; är detta verkligen en xchat-" +"insticksmodul?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Är du säker på att detta är en SSL-kapabel server och port?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Kan inte slå upp värdnamnet %s\n" +"Kontrollera dina IP-inställningar!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Proxytraversering misslyckades.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Byter till nästa server i %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Varning: Teckentabellen \"%s\" är okänd. Ingen konvertering kommer att " +"tillämpas för nätverket %s." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 lades till i notifieringslistan." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Bannlysningslista:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tKan inte gå in i%C26 %B$1 %O(Du är bannlyst)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 är nu känd som $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 ställer in bannlysning på $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tKanalen $1 skapad på $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O tar bort halvkanaloperatörsstatusen från%C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O tar bort kanaloperatörsstatus från%C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O tar bort röststatus från%C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 ställer in undantag på $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O ger halvkanaloperatörsstatus till%C26 $2" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 ställer in inbjudan på $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UKanal Användare Ämne" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 ställer in läget $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Kanal $1 lägen: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O ger kanaloperatörsstatus till%C26 $2" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 tar bort undantag på $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 tar bort inbjudan på $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 tar bort kanallösenordet" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 tar bort användargräns" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 ställer in kanallösenordet till $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 ställer in kanalgränsen till $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 tar bort bannlysning av $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O ger röststatus till%C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Ansluten. Loggar in nu..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22Ansluter till $1 ($2) port $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21Anslutningen misslyckades. Fel: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tMottog ett CTCP $1 från $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tMottog ett CTCP $1 från $2 (till $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tMottog ett CTCP Sound $1 från $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tMottog ett CTCP Sound $1 från $2 (till $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tDCC CHAT till %C26$1%O avbruten." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC CHAT-anslutning etablerad till %C26$1 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tDCC CHAT till %C26$1%O avbruten ($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tMottog ett DCC CHAT-erbjudande från $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tErbjuder DCC CHAT till $1" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tErbjuder redan CHAT till $1" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$tDCC $1 anslutningsförsök till%C26 $2%O misslyckades (fel=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tMottog \"$1%O\" från $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 Typ Till/Från Status Storlek Pos Fil " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O.%010%C22*%O" +"$tContents of packet: $2" +msgstr "" +"%C22*%O$tMottog en felaktigt utformad DCC-begäran från %C26$1%O.%010%C22*%O" +"$tPaketets innehåll: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tErbjuder%C26 $1%O till%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tDet finns inget sådant DCC-erbjudande." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV%C26 $2%O till%C26 $1%O avbruten." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC RECV%C26 $1%O från%C26 $3%O klar %C30[%C26$4%O cps%C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC RECV-anslutning etablerad till%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV%C26 $1%O från%C26 $3%O misslyckades ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV: Kan inte öppna $1 för skrivning ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "%C22*%O$tFilen%C26 $1%C finns redan, sparar den som%C26 $2%O istället." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Ohar begärt att återuppta%C26 $2 %Cfrån%C26 $3%C." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC SEND%C26 $2%O till%C26 $1%O avbruten." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC SEND%C26 $1%O till%C26 $2%O klar %C30[%C26$3%O cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC SEND-anslutning etablerad till%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND%C26 $1%O till%C26 $2%O misslyckades. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Ohar erbjudit%C26 $2 %O(%C26$3 %Obytes)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Otill%C26 $3 %Cstannade - avbryter." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Otill%C26 $3 %Ogjorde timeout - avbryter." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 borttagen från notifieringslistan." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tKopplade från ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tHittade ditt IP: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O lades till i ignoreringslistan." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "Ignorering på %C26$1%O ändrades." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 Värdmask PRIV NOTI KANA CTCP DCC INBJ AVIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O togs bort från ignoreringslistan." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " Ignoreringslistan är tom." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "%C22*%O$tKan inte gå in i%C26 %B$1 %O(Kanalen kräver inbjudan)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tDu har bjudits in till%C26 $1%O by%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) gick in i $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$tKan inte gå in i%C26 %B$1 %O(Kräver lösenord)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 har sparkat ut $2 från $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$tDu har dödats av $1 ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD hoppades över." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 används redan. Försöker igen med $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$tSmeknamnet används redan. Använd /NICK för att försöka med ett " +"annat." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tDet finns ingen sådan DCC." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tIngen sådan process körs för tillfället" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tNotifieringslistan är tom." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Notifieringslista " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 användare på notifieringslistan." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tNotifiering: $1 är frånkopplad ($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tNotifiering: $1 är ansluten ($3)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) har lämnat $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) har lämnat $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tPingsvar från $1: $2 sekund(er)" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tInget pingsvar under $1 sekunder, kopplar från." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tEn process kör redan" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 har avslutat (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 ställer in lägena%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tSlår upp IP-numret för%C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22Ansluten." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22Slår upp $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tStoppade föregående anslutningsförsök (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29Ämnet för $1%C %C29is: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 har bytt ämne till: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29Ämnet för $1%C %C29satt av $2%C %C29den $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tOkänd värd. Du kanske har stavat den fel?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "%C22*%O$tKan inte gå in i%C26 %B$1 %O(Användargränsen nådd)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Användare på $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cär frånvarande %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OSlut på WHOIS-lista." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O inaktiv%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O inaktiv%C26 $2%O, påloggning:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" +"%C22*%O$t%C28[%O$1%C28] %Overklig användare@värd%C27 $2%O, riktig IP%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Pratar nu på $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tDu har sparkats ut från $2 av $3 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tDu har lämnat kanalen $3" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tDu har lämnat kanalen $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tDu bjuder in%C26 $1%O till%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tDu är nu känd som $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "Läste in logg från" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** AVSLUTADE LOGGANDE VID %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** PÅBÖRJADE LOGGANDE VID %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Kan inte öppna loggfiler för skrivande. Kontrollera\n" +" rättigheterna på %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Vänstermeddelande" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Högermeddelande" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "Smeknamnet på personen som går in" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "Kanalen som gås in i" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "Personens värddator" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Smeknamn" + +#: src/common/text.c:973 +msgid "The action" +msgstr "Åtgärden" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Lägestecken" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Identifierad text" + +#: src/common/text.c:980 +msgid "The text" +msgstr "Texten" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Meddelandet" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Gammalt smeknamn" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Nytt smeknamn" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Smeknamnet på personen som ändrade ämnet" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Ämne" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Kanal" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "Smeknamnet på den som sparkar ut" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "Personen som blir utsparkad" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "Kanalen" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "Orsaken" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "Smeknamnet på den person som lämnar" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "Tiden" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "Skaparen" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Smeknamn" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Orsak" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Värd" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "Vem det är från" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "Tiden i x.x-format (se nedan)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "Kanalen som det går till" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "Ljudet" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "Smeknamnet på personen" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "CTCP-händelsen" + +# I IRC-sammanhang är "keyword" ett lösenord för att komma in på en kanal. +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "Smeknamnet på personen som satte lösenordet" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "Lösenordet" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "Smeknamnet på personen som satte gränsen" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "Gränsen" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "Smeknamnet på personen som gav operatörsstatus" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "Smeknamnet på personen som har givits operatörsstatus" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "Smeknamnet på personen som har givits halvoperatörsstatus" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "Smeknamnet på personen som gav halvoperatörsstatus" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "Smeknamnet på personen som gav röststatus" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "Smeknamnet på personen som har givits röststatus" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "Smeknamnet på personen som gjorde bannlysningen" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "Bannlysningsmasken" + +# I IRC-sammanhang är "keyword" ett lösenord för att komma in på en kanal. +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "Smeknamnet som tog bort lösenordet" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "Smeknamnet som tog bort gränsen" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "Smeknamnet på personen som tog bort operatörsstatus" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "Smeknamnet på personen som har fråntagits operatörsstatus" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "Seknamnet på personen som fråntog halvoperatörsstatus" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Smeknamnet på personen som har fråntagits halvoperatörsstatus" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "Smeknamnet på personen som fråntog röststatus" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "Smeknamnet på personen som har fråntagits röststatus" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "Smeknamnet på personen som tog bort bannlysningen" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "Smeknamnet på personen som gjorde undantaget" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "Undantagsmasken" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "Smeknamnet på personen som tog bort undantaget" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "Smeknamnet på personen som gjorde inbjudan" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "Inbjudningsmasken" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "Smeknamnet på personen som tog bort inbjudan" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "Smeknamnet på personen som satte läget" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "Lägestecknet (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "Lägesbokstaven" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "Kanalen som det ställs in på" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Användarnamn" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Fullständigt namn" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Kanalmedlemskap/\"är en IRC-operatör\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Serverinformation" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Inaktivitetstid" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Påloggningstid" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Frånvaroskäl" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Meddelande" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Konto" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "Verklig användare@värd" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "Verklig IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Kanalnamn" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Text" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Servernamn" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Smeknamnet på personen som bjöd in dig" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Användare" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Smeknamnet används redan" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Smeknamnet provas" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Port" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Nätverk" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Lägessträng" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "IP-adress" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "DCC-typ" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Filnamn" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Målfilnamn" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Sökväg" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Position" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Storlek" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "DCC-sträng" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Antal notifieringsobjekt" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Gammalt filnamn" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Nytt filnamn" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Mottagare" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Värdmask" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Värdnamn" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "Paketet" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Sekunder" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Smeknamnet på personen som bjudits in" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Bannlysningsmask" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Vem som gjorde bannlysningen" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Bannlysningstid" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Fel vid tolkning av händelsen %s.\n" +"Läser in standardvärde." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"Kan inte läsa ljudfilen:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "Fjärrvärden stängde uttaget (socket)" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Uppkoppling nekas" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Ingen väg till värden" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Anslutningen gjorde time-out" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Kan inte tilldela den adressen" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Anslutningen nollställdes av motparten" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Ascension Island" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Andorra" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Förenade Arabemiraten" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Afghanistan" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Antigua och Barbuda" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Anguilla" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Albanien" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Armenien" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Nederländska Antillerna" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Angola" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Antarktis" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Argentina" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "Omvänd DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Samoa" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Österrike" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "Nato" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Australien" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Aruba" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Åland" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Azerbajdzjan" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Bosnien och Hercegovina" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Barbados" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Bangladesh" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Belgien" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Bulgarien" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Bahrain" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Burundi" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Företag" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Benin" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Bermuda" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Brunei" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Bolivia" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Brasilien" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Bahamas" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Bhutan" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Bouvetön" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Botswana" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Vitryssland" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Belize" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Kanada" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Kokosöarna" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "Demokratiska republiken Kongo" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "Centralafrikanska republiken" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Kongo" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Schweiz" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Elfenbenskusten" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Cooköarna" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Chile" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Kamerun" + +#: src/common/util.c:898 +msgid "China" +msgstr "Kina" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Colombia" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Internic, kommersiellt" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Serbien och Montenegro" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Kuba" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Kap Verde" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Julön" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Cypern" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "Tjeckien" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Tyskland" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Djibouti" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Danmark" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Dominica" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "Dominikanska republiken" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Algeriet" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Ecuador" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Utbildningsväsende" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Estland" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Egypten" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Västsahara" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Eritrea" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Spanien" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Etiopien" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Europeiska gemenskapen" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Finland" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Fiji" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Falklandsöarna" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Mikronesien" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Färöarna" + +#: src/common/util.c:928 +msgid "France" +msgstr "Frankrike" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Gabon" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Storbritannien" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Grenada" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Georgien" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Franska Guyana" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Brittiska kanalöarna" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Ghana" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Grönland" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Gambia" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Guinea" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Regering" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Guadeloupe" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Ekvatorialguinea" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Grekland" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Sydgeorgien och Södra Sandwichöarna" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Guatemala" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Guam" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Guinea-Bissau" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Guyana" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Heard- och McDonaldöarna" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Honduras" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Kroatien" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Haiti" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Ungern" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Indonesien" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Irland" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Israel" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Isle of Man" + +#: src/common/util.c:959 +msgid "India" +msgstr "Indien" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Informativ" + +#: src/common/util.c:961 +msgid "International" +msgstr "Internationellt" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Brittiskt territiorium i Indiska Oceanen" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Irak" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Iran" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Island" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Italien" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Jersey" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Jamaica" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Jordanien" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Japan" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Kenya" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Kirgizistan" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Kambodja" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Kiribati" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Komorerna" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "St. Kitts och Nevis" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Nordkorea" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Sydkorea" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Kuwait" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Caymanöarna" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Kazakstan" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Laos" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Libanon" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Sankt Lucia" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Liberia" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Lesotho" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Litauen" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Luxemburg" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Lettland" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Libyen" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Marocko" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Monaco" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Moldavien" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "Förenta Staterna, medicinskt" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Madagaskar" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Marshallöarna" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Militärt" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Makedonien" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Mali" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Myanmar (Burma)" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Mongoliet" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Macao" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Norra Marianeröarna" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Martinique" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Mauretanien" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Montserrat" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Malta" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Mauritius" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Maldiverna" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Malawi" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Mexiko" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Malaysia" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Moçambique" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Namibia" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Nya Kaledonien" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Nigeria" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Internic, nätverk" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Norfolköarna" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Nigeria" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Nicaragua" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Nederländerna" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Norge" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Nepal" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Nauru" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Niue" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Nya Zeeland" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Oman" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Internic, ideell organisation" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Panama" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Peru" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Polynesien" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Papua Nya Guinea" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Filippinerna" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Pakistan" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Polen" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "St. Pierre och Miquelon" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Pitcairn" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Puerto Rico" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Palestinska territoriet" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Portugal" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Palau" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Paraguay" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Qatar" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Réunion" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Rumänien" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "Gammaldags ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Ryska Federationen" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Rwanda" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Saudiarabien" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Solomonöarna" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Seychellerna" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Sudan" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Sverige" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Singapore" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "St. Helena" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Slovenien" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard och Jan Mayenöarna" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Slovakien" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Sierra Leone" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "San Marino" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Senegal" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Somalia" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Surinam" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "São Tomé och Principe" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Före detta USSR" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "El Salvador" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Syrien" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Swaziland" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Turks- och Caicosöarna" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Tchad" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Franska Sydterritorierna" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Togo" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Thailand" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Tadzjikistan" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "Tokelau" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Östtimor" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Turkmenistan" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Tunisien" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Tonga" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Turkiet" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Trinidad och Tobago" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Taiwan" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Tanzania" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Ukraina" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Uganda" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Storbritannien" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "Förenta Staterna" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Uruguay" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Uzbekistan" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Vatikanstaten" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "St. Vincent och Grenadinerna" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Venezuela" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Brittiska Jungfruöarna" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "Jungfruöarna (USA)" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Vietnam" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Wallis- och Futunaöarna" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Samoa" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Jemen" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Mayotte" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Jugoslavien" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Sydafrika" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Zambia" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Zimbabwe" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Okänd" + +#: src/common/xchat.c:726 +msgid "_Open Dialog Window" +msgstr "_Öppna dialogfönster" + +#: src/common/xchat.c:727 +msgid "_Send a File" +msgstr "_Skicka en fil" + +#: src/common/xchat.c:728 +msgid "_User Info (WhoIs)" +msgstr "An_vändarinfo (Whois)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "_Lägg till i vännerlista" + +#: src/common/xchat.c:730 +msgid "O_perator Actions" +msgstr "O_peratörsåtgärder" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Ge kanaloperatörsstatus" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Ta kanaloperatörsstatus" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Ge röststatus" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Ta röststatus" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Sparka ut/Bannlys" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Sparka ut" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Bannlys" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "Sparka ut och bannlys" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Lämna kanal" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Gå in i kanal..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Ange kanal att gå in i:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Serverlänkar" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Pinga server" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Dölj version" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Ge op" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "Ta bort op" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "hejdå" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Ange orsak för att sparka ut %s:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Skickafil" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Dialog" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "VemÄr" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Skicka" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Chatta" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Töm" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "Kunde inte ansluta till sessionsbuss" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "Misslyckades med att färdigställa NameHasOwner" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "Misslyckades med att färdigställa kommando" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "fjärråtkomst" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "insticksmodul för fjärråtkomst via DBUS" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Kunde inte ansluta till sessionsbuss: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Misslyckades med att ta över %s: %s\n" + +#: src/fe-gtk/about.c:100 +msgid "About " +msgstr "Om" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "En IRC-klient för flera plattformar" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Teckenkarta" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "Inte ansluten." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Du måste välja några bannlysningar." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "Är du säker på att du vill ta bort alla bannlysningar i %s?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Mask" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "Från" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Datum" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Du kan endast öppna bannlysningslistan inne i kanalfliken." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: Bannlysningslista (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Ta bort" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Kapa" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Uppdatera" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Visar %d/%d användare i %d/%d kanaler." + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Välj ett namn på utfilen" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "_Gå in i kanalen" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "_Kopiera kanalnamn" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "Kopiera _ämnestext" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: Kanallista (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "_Sök" + +# Denna bör kontrolleras +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "_Hämta lista" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "Spara _lista..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "Visa endast:" + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "kanaler med" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "till" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "användare." + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "Leta i:" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "Kanalnamn" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "Söktyp:" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "Enkel sökning" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "Mönstermatchning (jokertecken)" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "Reguljärt uttryck" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Sök:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Skicka filen till %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Den filen kan inte återupptas." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"Kan inte komma åt fil: %s\n" +"%s.\n" +"Återupptagning inte möjlig." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"Filen i hämtningskatalogen är större än den fil som erbjudits. " +"Återupptagning är inte möjlig." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "Kan inte återuppta samma fil från två personer." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: Sändningar och hämtningar" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Status" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Fil" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "Beräknad tid" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Både och" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Sändningar" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "Hämtningar" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Detaljer" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Fil:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "Adress:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Avbryt" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Acceptera" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Återuppta" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Öppna mapp..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: DCC Chat-lista" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Mottaget" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Skickat" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "Starttid" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*NY*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "REDIGERA MIG" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Namn" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Kommando" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Flytta upp" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Flytta ned" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Avbryt" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Spara" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Lägg till ny" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Ta bort" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Sortera" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Hjälp" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "Anslut inte automatiskt till servrar" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "Använd en annan konfigurationskatalog" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "Läs inte automatiskt in några insticksmoduler" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "Visa katalog för automatisk inläsning av insticksmoduler" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "Visa katalog för användarkonfiguration" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Öppna en irc://server:port/kanal URL" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Startkommando:" + +#: src/fe-gtk/fe-gtk.c:132 +msgid "Open URL or execute command in an existing XChat" +msgstr "Öppna url eller kör kommando i en befintlig XChat" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Starta minimerad. Nivå 0=Normal 1=Ikonifierad 2=Aktivitetsfält" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "nivå" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Visa versionsinformation" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"Misslyckades med att öppna typsnitt:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "Sökbufferten är tom.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d byte" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Sändkö för nätverket: %d byte" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"Åtgärden Kör kommando kör datat i Data 1 som om det hade skrivits i " +"textfältet där du tryckte tangentkombinationen. Därför kan det innehålla " +"text (som kommer att skickas till kanalen/personen), kommandon eller " +"användarkommandon. När det körs behandlas \\n-tecken i Data 1 som avgränsare " +"mellan kommandon så att det är möjligt att köra mer än ett kommando. Om du " +"vill ha ett \\ i den verkliga texten anger du \\\\" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"Kommandot Byt sida växlar mellan sidor i flikhäftet. Ställ in Data 1 till " +"den sida som du vill växla till. Om Data 2 är inställt till någonting kommer " +"växlingen att vara relativ till nuvarande position" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"Kommandot Infoga i buffert kommer att infoga innehållet i Data 1 i fältet " +"där tangentkombinationen trycktes vid nuvarande markörposition" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"Kommandot Rulla sida rullar textwidgeten upp eller ner en sida eller en rad. " +"Om Data 1 är satt till Up, Down, +1 eller -1." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"Kommandot Ställ in buffert ställer in fältet där tangentkombinationen " +"trycktes till innehållet i Data 1" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"Kommandot Senaste kommando gör att fältet innehåller det senast angivna " +"kommandot - samma som att trycka uppåtpil i skalet" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"Kommandot Nästa kommando gör att fältet innehåller nästa kommando som angavs " +"- samma som att trycka nedåtpil i skalet" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Detta kommando ändrar texten i fältet för att komplettera ett inkomplett " +"smeknamn eller kommando. Om Data 1 är satt kommer dubbla tabulatortryck i en " +"sträng att välja det senaste smeknamnet, inte nästa" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Detta kommando rullar upp och ner i listan med smeknamn. Om Data 1 är satt " +"till någonting rullar det upp, annars rullar det ner" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Detta kommando kontrollerar det senast angivna ordet i fältet mot " +"ersättningslistan och ersätter det om det hittar en träff" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Detta kommando flyttar den främsta fliken ett steg till vänster" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Detta kommando flyttar den främsta fliken ett steg till höger" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Detta kommando flyttar den aktuella fliken ett steg till vänster" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Detta kommando flyttar den aktuella fliken ett steg till höger" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "Spara indataraden i historiken men skicka inte den till servern" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "" +"Det inträffade ett fel vid inläsning av tangentbindningskonfigurationen" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<ingen>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Modifierare" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Tangent" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Åtgärd" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: Tangentbordsgenvägar" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Skift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Data 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Data 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Fel vid öppnande av tangentkonfigurationsfil\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Okänt tangentnamn %s i konfigurationsfilen för tangentbindningar\n" +"Inläsningen avbröts, fixa %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Okänd åtgärd %s i konfigurationsfilen för tangentbindningar\n" +"Inläsningen avbröts, fixa %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Förväntade datarad (början Dx{:|!}) men fick:\n" +"%s\n" +"\n" +"Inläsningen avbröts, fixa %s/keybindings\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"Konfigurationsfilen för tangentbindningar är trasig, inläsningen avbröts\n" +"Fixa %s/keybindings.conf\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "Kan inte skriva till den filen." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Kan inte läsa den filen." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Den masken finns redan." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Privat" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Notis" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Inbjudning" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Ta bort ignorering" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Ange mask att ignorera:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: Ignoreringslista" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Ignoreringsstatistik:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Kanal:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Privat:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Notis:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Inbjudan:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "Lägg till..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "Kanalnamn för kort, försök igen." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: Anslutningen klar" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "Anslutning till %s klar." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"I serverlistfönstret, ingen kanal (chattrum) har angetts för att gå in i " +"automatiskt för detta nätverk." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "Vad vill du göra härnäst?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "_Ingenting, jag går in i en kanal senare." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "_Gå in i denna kanal:" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Om du vet namnet på kanalen du vill gå in i, ange den här." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "Ö_ppna kanallistfönstret." + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "Hämta kanallistan kan ta en minut eller två." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "_Visa alltid denna dialog efter anslutning." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Dialog med" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Ämnet för %s är: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Inget ämne är satt" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"Denna server har fortfarande %d kanaler eller dialoger associerade med den. " +"Stänga dem alla?" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "Avsluta XChat?" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "Fråga inte nästa gång." + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Du är ansluten till %i IRC-nätverk." + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "Är du säker på att du vill avsluta?" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "En del filöverföringar är fortfarande aktiva." + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "_Minimera till aktivitetsfält" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Infoga attribut eller färgkod" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Fet</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Understruken</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Normal" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Färgerna 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Färgerna 8-15" + +#: src/fe-gtk/maingui.c:1612 +msgid "_Settings" +msgstr "_Inställningar" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "_Logga till disk" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "_Läs om historik" + +#: src/fe-gtk/maingui.c:1617 +msgid "_Hide Join/Part Messages" +msgstr "_Dölj meddelanden om ingång/utgång" + +#: src/fe-gtk/maingui.c:1625 +msgid "_Extra Alerts" +msgstr "Ytterligare _larm" + +#: src/fe-gtk/maingui.c:1627 +msgid "Beep on _Message" +msgstr "Pip vid _meddelande" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "Blinka låd_ikonen" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "Blinka _verktygsraden" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +msgid "_Detach" +msgstr "_Frigör" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "S_täng" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "Användargränsen måste vara en siffra!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Ämnesskydd" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Inga meddelanden från utomstående" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Hemlig" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Kräver inbjudan" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Modererad" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Bannlysningslista" + +# I IRC-sammanhang är "keyword" ett lösenord för att komma in på en kanal. +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Lösenord" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Användargräns" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Visa/Dölj användarlista" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"Kan inte ställa in genomskinlig bakgrund!\n" +"\n" +"Du kanske använder en ickekompatibel fönster-\n" +"hanterare som inte stöds för tillfället.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Ange nytt smeknamn:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Värden okänd" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Verkligt namn:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Användare:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "Land:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Server:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "%u minuter sedan" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Senaste medd:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Frånvaromedd:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "%d smeknamn markerade." + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"Menyraden är nu dold. Du kan visa den igen genom att trycka F9 eller " +"högerklicka på en tom del av huvudtextrutan." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Öppna länk i webbläsare" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Kopiera markerad länk" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Gå in i kanalen" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Lämna kanal" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Rotera kanal" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "_Ta bort från favoriter" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "_Lägg till i favoriter" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: Användarmeny" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Redigera denna meny..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Hämta kanallista..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Användarkommandon - specialkoder:\n" +"\n" +"%c = aktuell kanal\n" +"%e = aktuellt nätverksnamn\n" +"%m = maskininformation\n" +"%n = ditt smeknamn\n" +"%t = tid/datum\n" +"%v = xchat-version\n" +"%2 = ord 2\n" +"%3 = ord 3\n" +"&2 = ord 2 till slutet på raden\n" +"&3 = ord 3 till slutet på raden\n" +"\n" +"Exempel:\n" +"/cmd nisse hej\n" +"\n" +"%2 blir då \"nisse\"\n" +"&2 blir då \"nisse hej\"." + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Knappar i användarlistan - specialkoder:\n" +"\n" +"%a = alla markerade smeknamn\n" +"%c = aktuell kanal\n" +"%e = aktuellt nätverksnamn\n" +"%h = markerade smeknamnets värdnamn\n" +"%m = datorinformation\n" +"%n = ditt smeknamn\n" +"%s = markerade smeknamnet\n" +"%t = tid/datum\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Dialogknappar - specialkoder:\n" +"\n" +"%a = alla markerade smeknamn\n" +"%c = aktuell kanal\n" +"%e = aktuellt nätverksnamn\n" +"%h = markerade smeknamnets värdnamn\n" +"%m = datorinformation\n" +"%n = ditt smeknamn\n" +"%s = markerade smeknamnet\n" +"%t = tid/datum\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"CTCP-svar - specialkoder:\n" +"\n" +"%d = data (hela ctcp-kommandot)\n" +"%e = aktuellt nätverksnamn\n" +"%m = datorinformation\n" +"%s = smeknamnet som skickade ctcp-kommandot\n" +"%t = tid/datum\n" +"%2 = ord 2\n" +"%3 = ord 3\n" +"&2 = ord 2 till slutet på raden\n" +"&3 = ord 3 till slutet på raden\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"URL-hanterare - specialkoder:\n" +"\n" +"%s = URL-strängen\n" +"\n" +"Genom att ange ett ! framför kommandot\n" +"indikerar du att kommandot ska skickas\n" +"till ett skal istället för XChat" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: Användardefinierade kommandon" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: Popupmeny i användarlista" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Ersätt med" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: Ersätt" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: URL-hanterare" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: Knappar i användarlista" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: Dialogknappar" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: CTCP-svar" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "Nätverksli_sta..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "_Ny" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Serverflik..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Kanalflik..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Serverfönster..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Kanalfönster..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "_Läs in insticksmodul eller skript..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "_Avsluta" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "_Visa" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "_Menyrad" + +#: src/fe-gtk/menu.c:1592 +msgid "_Topic Bar" +msgstr "Ämn_esrad" + +#: src/fe-gtk/menu.c:1593 +msgid "_User List" +msgstr "An_vändarlista" + +#: src/fe-gtk/menu.c:1594 +msgid "U_serlist Buttons" +msgstr "_Knappar i användarlista" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "_Lägesknappar" + +#: src/fe-gtk/menu.c:1597 +msgid "_Channel Switcher" +msgstr "_Kanalväxlare" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "_Flikar" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "T_räd" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "_Nätverksmätare" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Av" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Diagram" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "_Server" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "Koppla _från" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "Återa_nslut" + +#: src/fe-gtk/menu.c:1613 +msgid "Join a Channel..." +msgstr "Gå in i en kanal..." + +#: src/fe-gtk/menu.c:1614 +msgid "List of Channels..." +msgstr "Kanallista..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Märk som frånvarande" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "A_nvändarmeny" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "_Inställningar" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "_Inställningar" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Avancerat" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Automatisk ersättning..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "CTCP-svar..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Dialogknappar..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Tangentbordsgenvägar..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Texthändelser..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "URL-hanterare..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Användarkommandon..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Knappar i användarlista..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Popupmeny i användarlista..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_Fönster" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Bannlysningslista..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Teckentabell..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Direktchatt..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Filöverföringar..." + +#: src/fe-gtk/menu.c:1641 +msgid "Friends List..." +msgstr "Vännerlista..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Ignoreringslista..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Insticksmoduler och skript..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Rålogg..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "URL-fångare..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Återställ markörsrad" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "T_öm text" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Sök text..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Spara text..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_Hjälp" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "_Innehåll" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "Leta efter uppdateringar" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "_Om" + +#: src/fe-gtk/menu.c:2147 +msgid "_Attach" +msgstr "Fä_st" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Sågs senast" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Frånkopplad" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Aldrig" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "%d minuter sedan" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Ansluten" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Ange smeknamn att lägga till:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "Notifiera på dessa nätverk:" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "Kommaseparerad lista över nätverken tillåts." + +#: src/fe-gtk/notifygui.c:413 +msgid "XChat: Friends List" +msgstr "XChat: Vännerlista" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "Öppna dialog" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" +"Kan inte hitta \"notify-send\" för att öppna ballongdialoger.\n" +"Installera libnotify." + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "XChat: Ansluten till %u nätverk och %u kanaler" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "_Återställ" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "_Dölj" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "_Blinka vid" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "Kanalmeddelande" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "Privat meddelande" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "Färgmarkerat meddelande" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "_Ändra status" + +#: src/fe-gtk/plugin-tray.c:602 +msgid "_Away" +msgstr "_Borta" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "_Bakåt" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat: Färgmarkerat meddelande från: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat: %u färgmarkerade meddelanden, senaste från: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat: Nytt publikt meddelande från: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat: %u nya publika meddelanden." + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat: Privat meddelande från: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "XChat: %u privata meddelanden, senaste från: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat: Filerbjudande från: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "XChat: %u filerbjudanden, senaste från: %s (%s)" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Version" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Beskrivning" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Välj en insticksmodul eller ett skript att läsa in" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: Insticksmoduler och skript" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "_Läs in..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "_Glöm" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Spara som..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: Rålogg (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Töm rålogg" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "Fönstret som du öppnade detta sökfönster för finns inte längre." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "Sökning nådde slutet, hittades inte." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: Sök" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "_Matcha skiftläge" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "Sök _bakåt" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "_Sök" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Nytt nätverk" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Vill du verkligen ta bort nätverket \"%s\" och alla dess servrar?" + +#: src/fe-gtk/servlistgui.c:740 +msgid "#channel" +msgstr "#kanal" + +#: src/fe-gtk/servlistgui.c:850 +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: Favoritkanaler (gå automatiskt in i)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "Dessa kanaler kommer att du gå in i när du ansluter till %s." + +#: src/fe-gtk/servlistgui.c:906 +msgid "Key (Password)" +msgstr "Nyckel (Lösenord)" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "_Redigera" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "%s har tagits bort." + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "%s har lagts till." + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "Användarnamn och verkligt namn kan inte lämnas blanka." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: Redigera %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Servrar för %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Anslut endast till markerad server" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Gå inte igenom alla servrar när anslutningen avbryts." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Dina detaljer" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Använd global användarinformation" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "_Smeknamn:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Andra valet:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "An_vändarnamn:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "Verkligt _namn:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Ansluter" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Anslut automatiskt till detta nätverk vid uppstart" + +#: src/fe-gtk/servlistgui.c:1462 +msgid "Bypass proxy server" +msgstr "Kringgå proxyserver" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "Använd SSL för alla servrar på detta nätverk" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Acceptera ogiltigt SSL-certifikat" + +#: src/fe-gtk/servlistgui.c:1475 +msgid "_Favorite channels:" +msgstr "_Favoritkanaler:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "Kanaler att gå in i, åtskilda med kommatecken men inte med blanksteg!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Anslutningskommando:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Extra kommandon att köra efter anslutning. Om du behöver fler än en, ställ " +"in denna till LOAD -e <filnamn>, där <filnamn> är en textfil som är full med " +"kommandon att köra." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Nickserv-lösenord:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Om ditt smeknamn kräver ett lösenord, ange det här. Inte alla IRC-nätverk " +"har stöd för detta." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Serverlösenord:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Lösenord för servern, lämna blank om du är osäker." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Teckentabell:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: Nätverkslista" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Användarinformation" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Tredje valet:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Nätverk" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "Hoppa över nätverkslista vid uppstart" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "_Redigera..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "_Sortera" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" +"Sorterar nätverkslistan i alfabetisk ordning. Använd tangenterna SKIFT-UP " +"och SKIFT-DOWN för att flytta en rad." + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "_Anslut" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Utseende för textruta" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Typsnitt:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Bakgrundsbild:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Rulla tillbaka rader:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Färgade smeknamn" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Ge varje person på IRC en olik färg" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Dra in smeknamn" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Högerjustera smeknamn" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Genomskinlig bakgrund" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Visa markörrad" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Infoga en röd rad efter den senaste lästa texten." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Inställningar för genomskinlighet" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Röd:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Grön:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Blå:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Tidsstämplar" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Aktivera tidsstämplar" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Tidsstämplingsformat:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Se manualsidan för strftime för detaljer." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Ö" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "Senast sagda order" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Inmatningsfält" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Använd typsnittet och färgerna för textrutor" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Stavningskontroll" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Smeknamnskomplettering" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "Automatisk smeknamnskomplettering (utan tabulatortangent)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Suffix för smeknamnskomplettering:" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "Sortering för smeknamnskomplettering:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Inmatningskoder" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Tolka %nnn som ett ASCII-värde" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Tolka %C, %B som färg, fet, osv" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Ö, operatörer först" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Ö-A, operatörer sist" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Ö-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Osorterad" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "Vänster (övre)" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "Vänster (nedre)" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "Höger (övre)" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "Höger (nedre)" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "överst" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "nederst" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Dold" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Användarlista" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Visa värdnamn i användarlista" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Användarlistan sorteras efter:" + +#: src/fe-gtk/setup.c:205 +msgid "Show user list at:" +msgstr "Visa användarlista:" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Frånvarospårning" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "Spårar frånvarostatus för användare och markerar dem i en annan färg" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "På kanaler mindre än:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Åtgärd vid dubbelklick" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Fönster" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Flikar" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Alltid" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Endast begärda flikar" + +#: src/fe-gtk/setup.c:242 +msgid "Tree" +msgstr "Träd" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "Växlartyp:" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Öppna en extra flik för servermeddelanden" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Öppna en extra flik för servernotiser" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "Öppna en ny flik när du tar emot ett privat meddelande" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Sortera flikar i alfabetisk ordning" + +#: src/fe-gtk/setup.c:254 +msgid "Smaller text" +msgstr "Mindre text" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Fokusera nya flikar:" + +#: src/fe-gtk/setup.c:258 +msgid "Show channel switcher at:" +msgstr "Visa kanalväxlare:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Korta ner fliketiketter till:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "bokstäver." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Flikar eller fönster" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Öppna kanaler i:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Öppna dialogfönster i:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Öppna verktyg i:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "" +"Öppna DCC-, ignorerings-, notifieringsfönster osv. i flikar eller fönster?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "Nej" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Ja" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "Bläddra varje gång efter mapp att spara i" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Filer och kataloger" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Acceptera filerbjudanden automatiskt:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Spara hämtade filer i:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Flytta färdighämtade filer till:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Spara smeknamn i filnamn" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Nätverksinställningar" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Hämta min adress från IRC-servern" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Fråga IRC-servern efter din verkliga adress. Använd detta om du har en " +"adress av typen 192.168.*.*!" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "DCC-IP-adress:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Utge dig för att vara på denna adress när du erbjuder filer." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Första DCC-sändningsport:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Sista DCC-sändningsport:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!Lämna värdet noll vid portar för fullständigt intervall." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Maximal hastighet för filöverföringar (byte per sekund)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "En sändning:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Max. hastighet för en överföring" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "En hämtning:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Alla sändningar kombinerade:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Max. hastighet för alla filer" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Alla hämtningar kombinerade:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Alarm" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "Visa lådballonger vid:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "Blinka lådikonen vid:" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "Blinka verktygsraden vid:" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "Spela upp en ljudsignal vid:" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "Aktivera ikon för systemlåda" + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "Färgmarkerade meddelanden" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" +"Färgmarkerade meddelanden är sådana där ditt smeknamn nämns i, men även:" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "Extra ord att färgmarkera:" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "Smeknamn att inte färgmarkera:" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "Smeknamn att alltid färgmarkera:" + +#: src/fe-gtk/setup.c:347 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" +"Separera flera ord med kommatecken.\n" +"Jokertecken accepteras." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Standardmeddelanden" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Avsluta:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Lämna kanal:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Borta:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Borta" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Meddela frånvaromeddelanden" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Meddela dina frånvaromeddelanden till alla kanaler" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Visa frånvaro endast en gång" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Visa identiska frånvaromeddelanden endast en gång" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Avmarkera frånvaro automatiskt" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Avmarkerering av din frånvaro innan skickande av meddelanden" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Avancerade inställningar" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Fördröjning för automatisk återanslutning:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Visa MODE-kommandon i rå form" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Vemär vid notifiering" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" +"Skickar en /WHOIS när en användare som är i din notifieringslista ansluter" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Dölj meddelanden om ingång/lämnande" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Dölj meddelanden om ingång/lämnande som standard" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Öppna DCC-fönster automatiskt" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Sändningsfönster" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Mottagningsfönster" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Chattfönster" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Loggning" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "Visa historik från tidigare session" + +#: src/fe-gtk/setup.c:387 +msgid "Enable logging of conversations to disk" +msgstr "Aktivera loggning av konversationer till disk" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Loggfilsnamn:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Server %c=Kanal %n=Nätverk." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Infoga tidsstämplar i loggar" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Format för tidsstämpling av loggar:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Inaktiverad)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Alla anslutningar" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "Endast IRC-server" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "Endast DCC Get" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Din adress" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Bind till:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "Endast användbart för datorer med flera adresser." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Proxyserver" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Värdnamn:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Port:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Typ:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Använd proxy för:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Proxyautentisering" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Använd autentisering (endast MS Proxy, HTTP eller SOCKS5)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Använd autentisering (endast HTTP eller SOCKS5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Användarnamn:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Lösenord:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Välj en bildfil" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "Välj mapp för hämtade filer" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Välj typsnitt" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Bläddra..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Markera identifierade användare med:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Markera ej identifierade användare med:" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "Öppna datamapp" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Välj färg" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Textfärger" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "mIRC-färger:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Lokala färger:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Förgrund:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Bakgrund:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Markeringstext" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Gränssnittsfärger" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Nya data:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Markeringsrad:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Nytt meddelande:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Frånvaroanvändare:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Färgmarkera:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Händelse" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Ljudfil" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Välj en ljudfil" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Metod för ljuduppspelning:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "Externt _program för ljuduppspelning:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "_Externt program" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_Automatisk" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "Katalog för _ljudfiler:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Ljudfil:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "_Bläddra..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "_Spela upp" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Gränssnitt" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Textfält" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Användarlista" + +#: src/fe-gtk/setup.c:1703 +msgid "Channel switcher" +msgstr "Kanalväxlare" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Färger" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Chattande" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Allmänt" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Ljud" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Nätverksinställningar" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Filöverföringar" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Kategorier" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" +"Du kan inte placera trädet på övre eller undre delen!\n" +"Ändra till <b>Flikar</b>-layouten i <b>Visa</b>-menyn först." + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" +"En del inställningar ändrades som kräver en omstart för att börja gälla." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*VARNING*\n" +"Att automatiskt acceptera DCC till din\n" +"hemkatalog kan vara farligt och utnyttjas\n" +"av andra. Någon kan till exempel skicka\n" +"dig en .bash_profile" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: Inställningar" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Det uppstod ett fel vid tolkning av strängen" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Denna signal skickas endast %d argument, $%d är ogiltigt" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Skriv ut textfil" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Redigera händelser" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$-nummer" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Läs in från..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Testa allt" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: URL-fångare" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Töm lista" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Kopiera markerad URL" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Kopiera" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Spara lista till en fil" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d oppar, %d totalt" + +#~ msgid "" +#~ "Set per channel options\n" +#~ "CHANOPT CONFMODE ON|OFF - Toggle conf mode/showing of join and part " +#~ "messages\n" +#~ "CHANOPT COLORPASTE ON|OFF - Toggle color paste\n" +#~ "CHANOPT BEEP ON|OFF - Toggle beep on message\n" +#~ "CHANOPT TRAY ON|OFF - Toggle tray blink on message" +#~ msgstr "" +#~ "Ställ in alternativ per kanal\n" +#~ "CHANOPT CONFMODE ON|OFF - Växla konfläge/visa meddelanden för ingång och " +#~ "lämnande\n" +#~ "CHANOPT COLORPASTE ON|OFF - Växla färginklistring\n" +#~ "CHANOPT BEEP ON|OFF - Växla ljudsignal vid meddelande\n" +#~ "CHANOPT TRAY ON|OFF - Växla lådblinkning vid meddelande" + +#~ msgid "Direct client-to-client" +#~ msgstr "Direkt klient-till-klient" + +#~ msgid "Send File" +#~ msgstr "Skicka fil" + +#~ msgid "Offer Chat" +#~ msgstr "Erbjud chatt" + +#~ msgid "Abort Chat" +#~ msgstr "Avbryt chatt" + +#~ msgid "Userinfo" +#~ msgstr "Användarinformation" + +#~ msgid "Clientinfo" +#~ msgstr "Klientinformation" + +#~ msgid "Time" +#~ msgstr "Tid" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "Serveroperatör" + +#~ msgid "Kill this user" +#~ msgstr "Döda denna användare" + +#~ msgid "Mode" +#~ msgstr "Läge" + +#~ msgid "Give Half-Ops" +#~ msgstr "Ge halv-operatörsstatus" + +#~ msgid "Take Half-Ops" +#~ msgstr "Ta halv-operatörsstatus" + +#~ msgid "Ignore" +#~ msgstr "Ignorera" + +#~ msgid "Ignore User" +#~ msgstr "Ignorera användare" + +#~ msgid "UnIgnore User" +#~ msgstr "Avignorera användare" + +#~ msgid "Info" +#~ msgstr "Info" + +#~ msgid "Who" +#~ msgstr "Vem" + +#~ msgid "DNS Lookup" +#~ msgstr "DNS-uppslagning" + +#~ msgid "Trace" +#~ msgstr "Spårning" + +#~ msgid "UserHost" +#~ msgstr "AnvändareVärd" + +#~ msgid "External" +#~ msgstr "Extern" diff --git a/xchat-2.8.8/po/th.gmo b/xchat-2.8.8/po/th.gmo new file mode 100644 index 0000000000000000000000000000000000000000..7fb6663c17613e3bd57495aa2305030f116dcdbf GIT binary patch literal 126806 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 XCyoiP9332-CxM}zgv8iB{G<O1bT5qa literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/po/th.po b/xchat-2.8.8/po/th.po new file mode 100644 index 0000000..bb213c3 --- /dev/null +++ b/xchat-2.8.8/po/th.po @@ -0,0 +1,5602 @@ +# Translation of xchat to Thai. +# Copyright (C) 2007 Free Software Foundation, Inc. +# This file is distributed under the same license as the xchat package. +# Seksan Poltree <seksan.poltree@gmail.com>, 2007. +# +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.8.4\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2007-12-13 00:21+0700\n" +"Last-Translator: Seksan Poltree <seksan.poltree@gmail.com>\n" +"Language-Team: Thai <translation-team-th@lists.sourceforge.net>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Thai\n" +"X-Poedit-Country: THAILAND\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "ไม่สามารถสร้าง ~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "ฉันไม่ว่าง" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "กำลังออก" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* เรียกใช้งาน IRC โดยเป็น root เป็นเรื่องไม่ฉลาด! คุณควร\n" +" สร้างบัญชีผู้ใช้อื่นสำหรับใช้ในเข้าสู่ระบบ.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "กำลังรอ" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "ทำงานอยู่" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "ล้มเหลว" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "เรียบร้อย" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "เชื่อมต่อ" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "ถูกยกเลิกกลางคัน" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "ไม่สามารถเข้าถึง %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "ข้อผิดพลาด" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s ได้เสนอ \"%s\". คุณต้องการยอมรับหรือไม่?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "ไม่มี DCCs ที่ทำงานอยู่\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "ใช่" + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "ไม่" + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "คุณกำลังถูก CTCP flooded จาก %s, ทำการเพิกเฉย %s\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "คุณกำลังถูก MSG flooded จาก %s, ทำการตั้งค่า gui_auto_open_dialog OFF.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s ออนไลน์\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s ออฟไลน์\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "ไม่มีแชนแนลที่ทำการเข้าร่วม. ลอง /join #<แชนแนล>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "ไม่ได้เชื่อมต่อ. ลอง /server <โฮสต์> [<พอร์ต>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "ทำเครื่องหมายว่าไม่อยู่แล้ว: %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "ทำเครื่องหมายว่ากลับมาแล้ว.\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "ฉันจำเป็นต้องมี /bin/sh เพื่อทำงาน!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "คำสั่งที่มี:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "คำสั่งที่ผู้ใช้นิยามขึ้น:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "คำสั่งที่ปลั๊กอินนิยามขึ้น:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "พิมพ์ /HELP <คำสั่ง> สำหรับรายละเอียดที่มากขึ้น, หรือ /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "อาร์กิวเมนต์ที่ไม่รู้จัก '%s' ถูกเพิกเฉย." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "ไม่พบปลั๊กอินใดๆ\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "ปลั๊กอินนั้นกำลังปฎิเสธการโหลดออก.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <ชื่อ> <ปฏิบัติการ>, เพิ่มปุ่มภายใต้รายชื่อผู้ใช้งาน" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <คำสั่ง>, ส่งคำสั่งไปยังทุกแชนแนลที่คุณเข้าอยู่" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHANL <คำสั่ง>, ส่งคำสั่งไปยังทุกแชนแนลที่คุณเข้าอยู่" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <คำสั่ง>, ส่งคำสั่งไปยังทุกเซิร์ฟเวอร์ที่คุณเข้าอยู่" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<เหตุผล>], ตั้งค่าให้คุณไม่อยู่" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "BACK, ตั้งค่าให้คุณกลับมา (ไม่ใช่ไม่อยู่)" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <มาสก์> [<รูปแบบการแบน>], ประกาศสั่งห้ามทุก ๆ คนที่ตรงกับมาสก์จากแชนแนลปัจจุบัน. " +"ถ้าพวกเขาอยู่ที่แชนแนลนี้แล้ว นี่จะไม่ได้เตะพวกเขาออกไป (จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <ตัวแปร> [<ค่า>]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "CLEAR [ALL|HISTORY], ล้างหน้าต่างข้อความ หรือประวัติคำสั่งปัจจุบัน " + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, ปิดหน้าต่าง/แท็บปัจจุบัน" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "COUNTRY [-s] <รหัส|ไวลด์การ์ด>, ค้นหารหัสประเทศ, เช่น: au = ออสเตรเลีย" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <ชื่อเล่น> <ข้อความ>, ส่งข้อความ CTCP ไปยัง 'ชื่อเล่น', ข้อความโดยปกติได้แก่ VERSION " +"และ USERINFO" + +#: src/common/outbound.c:3516 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "CYCLE [<channel>], แยกแชนแนลปัจจุบันหรือที่เสนอให้ และกลับเข้าร่วมในทันที" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <ชื่อเล่น> - ยอมรับไฟล์ที่ได้รับการเสนอให้\n" +"DCC SEND [-maxcps=#] <ชื่อเล่น> [ไฟล์] - ส่งไฟล์ไปหาใครซักคน\n" +"DCC PSEND [-maxcps=#] <ชื่อเล่น> [ไฟล์] - ส่งไฟล์ซักไฟล์โดยใช้โหมด passive\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <ชื่อเล่น> - เสนอ DCC CHAT ให้กับใครซักคน\n" +"DCC PCHAT <ชื่อเล่น> - เสนอ DCC CHAT โดยใช้โหมด passive\n" +"DCC CLOSE <รูปแบบ> <ชื่อเล่น> <ไฟล์> ตัวอย่าง:\n" +" /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <ชื่อเล่น>, ลบสถานะ chanhalf-op จาก 'ชื่อเล่น' ในแชนแนลปัจจุบัน (จำเป็นต้องมี " +"chanop)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <ชื่อ>, ลบปุ่มภายใต้รายชื่อผู้ใช้" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <ชื่อเล่น>, ลบสถานะ chanop จาก 'ชื่อเล่น' ในแชนแนลปัจจุบัน (จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <nick>, สบสถานะประกาศจาก 'ชื่อเล่น' ในแชนแนลปัจจุบัน (จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, ตัดการเชื่อมต่อจากเซิร์ฟเวอร์" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <ชื่อเล่น|โฮสต์|ไอพี>, ค้นหาหมายเลขไอพีของผู้ใช้งาน" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <ข้อความ>, พิมพ์ข้อความแบบโลคอล" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <คำสั่ง>, เรียกใช้คำสั่ง. ถ้าใช้เครื่องหมาย -o " +"แล้วผลที่ได้จะถูกส่งไปยังแชนแนลปัจจุบัน, ไม่ก็จะถูกพิมพ์ไปยังกล่องข้อความปัจจุบัน" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, ส่ง SIGCONT ไปยังโพรเซส" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], ฆ่า exec ที่กำลังทำงานในวาระปัจจุบัน. ถ้าใช้เครื่องหมาย -9 โพรเซสจะถูก " +"SIGKILL" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, ส่ง SIGSTOP ไปยังโพรเซส" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, ส่งข้อมูลไปยังทางป้อนข้อมูลมาตรฐานของโพรเซส" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, ล้างคิวการส่งปัจจุบันของเซิร์ฟเวอร์" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <โฮสต์> [<พอร์ต>], พร็อกซี่ไปยังโฮต์, ค่าพอร์ตมาตรฐานเป็น 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <ชื่อเล่น> <รหัสผ่าน>, kill 'ชื่อเล่น' ที่ถูกโกสต์" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <ชื่อเล่น>, ให้สถานะ chanhalf-op กับ 'ชื่อเล่น' (จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <รหัสผ่าน>, ระบุตัวตนของคุณเองไปยังเซิร์ฟเวอร์ชื่อเล่น" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <มาสก์> <รูปแบบ..> <ตัวเลือก..>\n" +" มาสก์ - มาสก์ของโฮสต์ที่จะเพิกเฉย, เช่น: *!*@*.aol.com\n" +" รูปแบบ - ชนิดรูปแบบของข้อมูลที่จะเพิกเฉย, อย่างหนึ่งหรือทั้งหมดของ:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <ชื่อเล่น> [<แชนแนล>], เชิญชวนใครซักคนเข้าสู่แชนแนลหนึ่ง ๆ, โดยปกติคือแชนแนลปัจจุบัน " +"(จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <แชนแนล>, เข้าร่วม 'แชนแนล'" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "KICK <ชื่อเล่น>, เตะ 'ชื่อเล่น' ออกจากแชนแนลปัจจุบัน (จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <ชื่อเล่น>, แบนและเตะ 'ชื่อเล่น' ออกจากแชนแนลปัจจุบัน (จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, บังคับการตรวจสอบอย่างช้าใหม่" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <สตริง>, ค้นหา 'สตริง' ที่อยู่ในบัฟเฟอร์" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <ไฟล์>, โหลดปลั๊กอินหรือสคริป" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, Mass deop ของ chanhalf-ops ทั้งหมดในแชนแนลปัจจุบัน (จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP, Mass deop ของ chanops ทั้งหมดในแชนแนลปัจจุบัน (จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <ปฏิบัติการ>, ส่งการปฏิบัติการไปยังแชนแนลปัจจุบัน (การปฏิบิการถูกเขียนขึ้นโดยบุคคลที่ 3, " +"อย่างเช่น /me jumps)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK, เตะทุกคนออกจากแชนแนลปัจจุบันยกเว้นคุณ (จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP, Mass op ของผู้ใช้ทั้งหมดในแชนแนลปัจจุบัน (จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <ชื่อเล่น> <ข้อความ>, ส่งข้อความส่วนตัว" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, แสดงรายชื่อชื่อเล่นบนแชนแนลปัจจุบัน" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <ชื่อเล่น> <ข้อความ>, ส่งประกาศ CTCP" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <ชื่อโฮต์> [<พอร์ต>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <ชื่อเล่น>, ตั้งชื่อเล่นของคุณ" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"OTICE <nick/channel> <message>, ส่งประกาศ. " +"ประกาศเป็นชนิดของข้อความที่ควรจะตอบสนองกลับอัตโนมัติ" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n เครือข่าย1[,เครือข่าย2,...]] [<ชื่อเล่น>], " +"แสดงรายการแจ้งเตือนของคุณหรือเพิ่มบางคนไปยังรายการ" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <ชื่อเล่น>, ให้สถานะ chanop กับ 'ชื่อเล่น' (จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<แชนแนล>] [<เหตุผล>], ออกจากแชนแนล, โดยปกติคือหนึ่งแชนแนลปัจจุบัน" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <nick | channel>, ส่ง CTCP เพื่อ ping ชื่อเล่นหรือแชนแนล" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "QUERY [-nofocus] <ชื่อเล่น>, เปิดหน้าต่างข้อความส่วนตัวกับใครบางคน" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<เหตุผล>], ตัดการเชื่อมต่อจากเซิร์ฟเวอร์ปัจจุบัน" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <ข้อความ>, ส่งข้อความในรูปแบบข้อมูลดิบไปยังเซิร์ฟเวอร์" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<โฮสต์>] [<พอร์ต>] [<รหัสผ่าน>], สามารถเรียกเพียง /RECONNECT " +"เพื่อที่จะทำการเชื่อมต่ออีกครั้งกับเซิร์ฟเวอร์ปัจจุบัน หรือด้วย /RECONNECT ALL " +"สำหรับทำการเชื่อมต่ออีกครั้งกับเซิร์ฟเวอร์ทั้งหมดที่เปิดอยู่" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<โฮสต์>] [<พอร์ต>] [<รหัสผ่าน>], สามารถถูกเรียกเพียง /RECONNECT " +"เพื่อที่จะทำการเชื่อมต่ออีกครั้งกับเซิร์ฟเวอร์ปัจจุบัน หรือด้วย /RECONNECT ALL " +"สำหรับทำการเชื่อมต่ออีกครั้งกับเซิร์ฟเวอร์ทั้งหมดที่เปิดอยู่" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "RECV <ข้อความ>, ส่งข้อมูลดิบไปยัง xchat, ตามที่ได้หากรับมาจากเซิร์ฟเวอร์ irc" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <ข้อความ>, ส่งข้อความไปยังวัตถุในหน้าต่างปัจจุบัน" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <ชื่อเล่น> [<ไฟล์>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <โฮสต์> <พอร์ต> <แชนแนล>, เชื่อมต่อและเข้าร่วมแชนแนล" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <โฮสต์> <พอร์ต> <แชนแนล>, เชื่อมต่อและเข้าร่วมแชนแนล" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <เครื่องแม่ข่าย> [<พอร์ต>] [<รหัสผ่าน>], เชื่อมต่อไปยังเซิร์ฟเวอร์. " +"โดยพอร์ตมาตรฐานสำหรับการเชื่อมต่อปกติคือ 6667, และ 9999 สำหรับการเชื่อมต่อโดยใช้ ssl" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <host> [พอร์ต>] [<รหัสผ่าน>], เชื่อมต่อไปยังเซิร์ฟเวอร์, พอร์ตมาตรฐานคือ 6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <ตัวแปร> [<ค่า>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<ตำแหน่ง>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "TOPIC [<หัวเรื่อง>], ตั้งหัวเรื่องถ้าบางคนได้รับมา, หรือแสดงหัวเรื่องปัจจุบัน" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" +"\n" +"TRAY -f <เวลาหมด> <ไฟล์1> [<ไฟล์2>] กระพริบถามระหว่างสองไอคอน.\n" +"TRAY -f <ชื่อไฟล์> ตั้งถามสำหรับไอคอนที่ถูกตรึง.\n" +"TRAY -i <ตัวเลข> กระพริบถาดด้วยไอคอนภายใน.\n" +"TRAY -t <ข้อความ> ตั้งค่าข้อความช่วยเหลือของถาด.\n" +"TRAY -b <ชื่อเรื่อง> <ข้อความ> ตั้งค่าบอลลูนของถาด." + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <mask> [<mask>...], ยกเลิกแบนสำหรับมาสก์ที่กำหนด." + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <มาสก์> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <ชื่อ>, โหลดปลั๊กอินหรือสคริปออกไป" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, เปิด URL ในบราวเซอร์ของคุณ" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <ชื่อเล่น1> <ชื่อเล่น2> etc, เน้นชื่อเล่น(s) ในรายชื่อผู้ใช้ของแชนแนล" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <ชื่อเล่น>, ให้สถานะประกาศกับใครบางคน (จำเป็นต้องมี chanop)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <ข้อความ>, เขียนข้อความไปยังแชนแนลทั้งหมด" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <ข้อความ>, ส่งข้อความไปยัง chanops ทั้งหมดในแชนแนลปัจจุบัน" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "วิธีใช้: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"ไม่มีข้อความช่วยเหลือสำหรับคำสั่งนั้น.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "ไม่ใช่คำสั่ง.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "อาร์กิวเมนต์ไม่ถูกต้องสำหรับคำสั่งผู้ใช้งาน.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "คำสั่งเรียกตัวเองซ้ำซ้อนมากเกินไป, ทำการยกเลิกกลางคัน." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "คำสั่งที่ไม่รู้จัก. ลอง /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "ไม่พบเครื่องหมาย xchat_plugin_init; นี่เป็นปลั๊กอินของ xchat จริง ๆ หรือไม่?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "คุณแน่ใจหรือว่านี่เป็นเซิร์ฟเวอร์และพอร์ต ที่สนับสนุนการทำงานของ SSL?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"ไม่สามารถวิเคราะชื่อของโฮสต์ %s\n" +"ตรวจสอบการตั้งค่าไอพีของคุณ!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Proxy traversal ล้มเหลว.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "วนไปยังเซิร์ฟเวอร์ถัดไปใน %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "คำเตือน: ไม่รู้จักชุดอักขระ \"%s\". ไม่มีการสนทนาที่จะถูกนำมาใช้กับเครือข่าย %s." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 ถูกเพิ่มไปยังรายการแจ้งเตือน." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 รายชื่อแบน:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tไม่สามารถเข้าร่วม%C26 %B$1 %O(คุณถูกแบนไว้)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 ขณะนี้ได้ถูกรู้จักเป็น $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 ตั้งค่าการแบนบน $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tแชนแนล $1 สร้างเมื่อ $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O ลบสถานะ half-operator ของแชนแนล จาก%C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O ลบสถานะผู้ควบคุมแชนแนลจาก%C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O ลบการประกาศจาก%C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 ตั้งค่า exempt บน $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O ให้สถานะ half-operator กับ%C26 $2" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 ตั้งค่าเชิญชวนบน $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%Uแชนแนล ผู้ใช้ หัวข้อ" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 ตั้งค่าโหมด $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22แชนแนล $1 โหมด: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O ให้สถานะผู้ควบคุมแชนแนลกับ%C26 $2" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 ลบ exempt บน $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 ลบการเชิญชวนบน $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 ลบคีย์เวิร์ดของแชนแนล" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 ลบขอบเขตของผู้ใช้" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 ตั้งค่าคีย์เวิร์ดไปเป็น $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 ตั้งค่าขีดจำกัดของแชนแนลเป็น $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 ลบการแบนบน $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O ให้การประกาศกับ%C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22เชื่อมด่อแล้ว. ขณะนี้กำลังเข้าสู่ระบบ..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22เชื่อมต่อไปยัง $1 ($2) port $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21การเชื่อมต่อล้มเหลว. ข้อผิดพลาด: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tได้รับ CTCP $1 จาก $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tได้รับ CTCP $1 จาก $2 (ไปยัง $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tได้รับเสียง CTCP $1 จาก $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tได้รับเสียง CTCP $1 จาก $2 (ไปยัง $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tDCC CHAT ไปยัง %C26$1%O ถูกยกเลิกกลางคัน." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC CHAT การเชื่อมต่อถูกสร้างไปยัง %C26$1 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tDCC CHAT ไปยัง %C26$1%O เสียหาย ($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tได้รับการเสนอ DCC CHAT จาก $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tทำการเสนอ DCC CHAT ไปยัง $1" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tได้ทำการเสนอ CHAT ไปยัง $1 แล้ว" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$tDCC $1 พยายามเชื่อมต่อไปยัง%C26 $2%O ล้มเหลว (err=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tได้รับ '$1%O' จาก $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 ชนิด ไปยัง/จาก สถานะ ขนาด ตำแหน่ง ไฟล์ " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O.%010%C22*%O" +"$tContents of packet: $2" +msgstr "" +"%C22*%O$tได้รับการร้องขอ DCC ที่ผิดรูปแบบจาก %C26$1%O.%010%C22*%O$tเนื้อหาของแพ็กเก็ต: " +"$2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tทำการเสนอ%C26 $1%O ไปยัง%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tไม่มีการเสนอ DCC." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV%C26 $2%O ไปยัง%C26 $1%O ถูกยกเลิกกลางคัน." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC RECV%C26 $1%O จาก%C26 $3%O เสร็จสิ้น %C30[%C26$4%O cps%C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC RECV การเชื่อมต่อถูกสร้างขึ้นไปยัง%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV%C26 $1%O จาก%C26 $3%O ล้มเหลว ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV: ไม่สามารถเปิด $1 เพื่อการเขียนได้ ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "%C22*%O$tไฟล์%C26 $1%C ได้มีอยู่ก่อนแล้ว, บันทีกเป็น%C26 $2%O แทน." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Oได้ร้องขอเพื่อที่จะเริ่มใหม่%C26 $2 %Cจาก%C26 $3%C." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC SEND%C26 $2%O ไปยัง%C26 $1%O ถูกยกเลิกก่อนสำเร็จ." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O เสร็จสิ้น %C30[%C26$3%O cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC SEND การเชื่อมต่อถูกสร้างขึ้นไปยัง%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND%C26 $1%O ไปยัง%C26 $2%O ล้มเหลว. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Oได้เสนอ%C26 $2 %O(%C26$3 %Obytes)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oไปยัง%C26 $3 %Cถูกหยุดกลางคัน - ทำการยกเลิกกลางคัน." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oไปยัง%C26 $3 %Oหมดเวลา - ทำการยกเลิกกลางคัน." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 ลบจากรายการแจ้งเตือนแล้ว" + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tตัดการเชื่อมต่อ ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tพบไอพีของคุณ: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O ถูกเพิ่มไปยังรายการเพิกเฉย." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "การเพิกเฉยบน %C26$1%O เปลี่ยนไป." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "" +"%C24,18 มาสก์ของโฮสต์ PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O ลบจากรายการเพิกเฉยแล้ว." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " รายการเพิกเฉยว่างเปล่า." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "%C22*%O$tไมาสามารถเข้าร่วม%C26 %B$1 %O(แชนแนลนี้ต้องได้รับเชิญเท่านั้น)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tคุณได้ได้รับเชิญไปยัง%C26 $1%O by%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) ได้เข้าร่วม $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$tไม่สามารถเข้าร่วม%C26 %B$1 %O(ต้องการคีย์เวิร์ด)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 ได้เตะ $2 จาก $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$tคุณได้ถูก kill โดย $1 ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD ถูกข้ามไป." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 ได้ถูกใช้งานอยู่แล้ว. กำลังลองใหม่ด้วย $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "%C22*%O$tชื่อเล่นได้ถูกใช้งานอยู่แล้ว. ใช้ /NICK เพื่อที่จะลองอย่างอื่น." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tไม่มี DCC." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tไม่มีโปรเซสที่กำลังทำงานอยู่" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tรายการแจ้งเตือนว่างเปล่า." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B รายการแจ้งเตือน " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 ผู้ใช้ในรายการแจ้งเตือน." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tแจ้งเตือน: $1 ออฟไลน์ ($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tแจ้งเตือน: $1 ออนไลน์ ($3)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) ได้ออกจาก $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) ได้ออกจาก $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tการตอบรับการ ping จาก $1: $2 วินาที(s)" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tไม่มีการตอบรับการ ping เป็นเวลา $1 วินาที, กำลังตัดการเชื่อมต่อ." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tโปรเซสหนึ่งได้ทำงานอยู่แล้ว" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 ได้ออกจาก (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 ตั้งค่าโหมด%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tค้นหาหมายเลขไอพีสำหรับ%C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22เชื่อมต่อแล้ว." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22ค้นหา $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tหยุดการพยายามเชื่อมต่อก่อนหน้า (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29หัวข้อสำหรับ $1%C %C29is: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 ได้เปลี่ยนหัวข้อไปเป็น: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29หัวข้อสำหรับ $1%C %C29ตั้งโดย $2%C %C29ที่ $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tไม่รู้จักโฮสต์. บางทีคุณอาจสะกดผิดหรือเปล่า?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "%C22*%O$tไม่สามาระเข้าร่วม%C26 %B$1 %O(ถึงขีดจำกัดจำนวนผู้ใช้)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26ผู้ใช้ บน $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cไม่อยู่ %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %Oสิ้นสุดของรายการ WHOIS." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O ว่างอยู่%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O ว่างอยู่%C26 $2%O, เข้าระบบ:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %Oผู้ใช้จริง@โฮสต์%C27 $2%O, ไอพีจริง%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19กำลังพูดคุยบน $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tคุณได้ถูกเตะออกจาก $2 โดย $3 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tคุณได้ออกจากแชนแนล $3" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tคุณได้ออกจากแชนแนล $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tคุณได้เชิญชวน%C26 $1%O ไปยัง%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tตอนนี้คุณได้รับการรู้จักเป็น $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "โหลดบันทึกการทำงานจาก" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** จบการบันทึกการทำงานที่ %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** เริ่มบันทึกการทำงานที่ %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* ไม่สามารถเปิดบันทึกการทำงาน(s) เพื่อการเขียน. ตรวจสอบ\n" +" ตรวจสอบสิทธิการเข้าถึงบน %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "ข้อความทางซ้าย" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "ข้อความทางขวา" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "ชื่อเล่นของคนที่เข้าร่วม" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "แชนแนลที่ถูกเข้าร่วม" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "โฮสต์ของบุคคล" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "ชื่อเล่น" + +#: src/common/text.c:973 +msgid "The action" +msgstr "การปฏิบัติการ" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "ตัวหนังสือโหมด" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "ข้อความแสดงตัว" + +#: src/common/text.c:980 +msgid "The text" +msgstr "ข้อความ" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "ข้อความ" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "ชื่อเล่นเดิม" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "ชื่อเล่นใหม่" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "ชื่อเล่นของคนที่เปลี่ยนหัวข้อ" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "หัวข้อ" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "แชนแนล" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "ชื่อของคนที่เตะ" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "คนที่กำลังถูกเตะ" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "แชนแนล" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "เหตุผล" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "ชื่อเล่นของคนที่กำลังจากไป" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "เวลา" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "ผู้สร้าง" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "ชื่อเล่น" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "เหตุผล" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "โฮสต์" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "ใครที่มันมาจาก" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "เวลาในรูปแบบ x.x (ดูด้านล่าง)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "แชนแนลที่มันกำลังไป" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "เสียง" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "ชื่อเล่นของบุคคล" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "เหตุการณ์ CTCP" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "ชื่อเล่นของคนที่ตั้งค่ากุญแจ" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "กุญแจ" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "ชื่อเล่นของคนที่ตั้งค่าขีดจำกัด" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "ขีดจำกัด" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "ชื่อเล่นของคนที่ทำการ op'ing" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "ชื่อเล่นของคนที่ได้ถูก op" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "ชื่อเล่นของคนที่ได้ถูก halfop" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "ชื่อเล่นของคนที่ทำการ halfop" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "ชื่อเล่นของคนที่ทำการประกาศ" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "ชื่อเล่นของคนที่ได้ถูกประกาศ" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "ชื่อเล่นของคนที่ทำการแบน" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "มาสก์การแบน" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "ชื่อเล่นของคนที่ลบกุญแจ" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "ชื่อเล่นของคนที่ลบขีดจำกัด" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "ชื่อเล่นของคนที่ทำการ deop" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "ชื่อเล่นของคนที่ได้ทำการ deop" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "ชื่อเล่นของคนที่ทำการ dehalfop" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "ชื่อเล่นของคนที่ได้ทำการ dehalfop" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "ชื่อเล่นของคนที่ทำการ devoice" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "ชื่อเล่นของคนที่ได้ทำการ devoice" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "ชื่อเล่นของคนที่ทำการ unban" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "ชื่อเล่นของคนที่ทำการยกเว้น" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "มาสก์ที่ยกเว้น" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "ชื่อเล่นของคนที่ลบการยกเว้น" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "ชื่อเล่นของคนที่ทำการเชิญชวน" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "มาสก์เชิญชวน" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "ชื่อเล่นของคนที่ลบการเชิญชวน" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "ชื่อเล่นของคนที่ตั้งค่าโหมด" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "สัญญาณของโหมด (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "ตัวอักษรของโหมด" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "แชนแนลที่มันกำลังตั้งค่า" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "ชื่อผู้ใช้" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "ชื่อเต็ม" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "ความเป็นสมาชิกของแชนแนล/\"เป็นผู้จัดการ IRC คนหนึ่ง\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "ข้อมูลของเซิร์ฟเวอร์" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "เวลาว่าง" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "เวลาเข้าสู่ระบบ" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "เหตุผลที่ไม่อยู่" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "ข้อความ" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "บัญชี" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "ชื่อผู้ใช้@โฮสต์ จริง" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "ไอพีจริง" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "ชื่อแชนแนล" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "ข้อความ" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "ชื่อเซิร์ฟเวอร์" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "ชื่อเล่นของคนที่เชิญชวนคุณ" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "ผู้ใช้" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "ชื่อเล่นถูกใช้อยู่" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "ชื่อเล่นกำลังถูกลองใช้" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "ไอพี" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "พอร์ต" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "เครือข่าย" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "สตริงแสดงโหมด" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "ที่อยู่ไอพี" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "ชนิด DCC" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "ชื่อไฟล์" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "ชื่อไฟล์ปลายทาง" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "ชื่อเส้นทาง" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "ตำแหน่ง" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "ขนาด" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "ข้อความ DCC" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "หมายเลขของการแจ้งเตือนรายการ" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "ชื่อไฟล์เดิม" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "ชื่อไฟล์ใหม่" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "ตัวรับ" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "มาสก์ของโฮสต์" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "ชื่อโฮสต์" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "แพ็กเก็ต" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "วินาที" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "ชื่อของคนที่ได้ถูกเชิญ" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "มาสก์การแบน" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "ใครคนที่ตั้งการแบน" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "เวลาแบน" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"เกิดเหตุการณ์ข้อผิดพลาดในวิเคราะห์ %s.\n" +"โหลดค่ามาตรฐาน." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"ไม่สามารถอ่านไฟล์เสียง:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "โฮสต์ปลายทางปิดแชนแนลเชื่อมต่อ" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "การเชื่อมต่อถูกปฏิเสธ" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "ไม่มีเส้นทางไปยังโฮต์" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "การเชื่อมต่อหมดเวลา" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "ไม่สามารถกำหนดค่าที่อยู่นั้น" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "การเชื่อมต่อถูกตั้งใหม่โดยผู้เชื่อมต่อ" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "เกาะ Ascension" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "สหรัฐอาหรับอิมิเรตส์" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "อัฟกานิสถาน" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Antigua และ Barbuda" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "อัลบาเนีย" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "อาร์เมเนีย" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "อาร์เจนติน่า" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "รีเวิร์ส DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "ออสเตรีย" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "ออสเตรเลีย" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "อาร์เซอร์ไบจัน" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "เบลเยี่ยม" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "บัลแกเรีย" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "ยุ่งอยู่" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "โบลิเวีย" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "บราซิล" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "ภูฏาน" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "แคนาดา" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "คองโก" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "สวิซเซอร์แลนด์" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "เกาะ Cook" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "ชิลี" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "แคมารูน" + +#: src/common/util.c:898 +msgid "China" +msgstr "จีน" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "โคลัมเบีย" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "คิวบา" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "ไซปรัส" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "เยอรมันนี" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "เดนมาร์ก" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "โดมินิกา" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "สถาบันการศึกษา" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "อียิปต์" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "สเปน" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "ฟินแลนด์" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "ฟิจิ" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "" + +#: src/common/util.c:928 +msgid "France" +msgstr "ฝรั่งเศส" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "จอร์เจีย" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "กานา" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "กรีนแลนด์" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "" + +#: src/common/util.c:940 +msgid "Government" +msgstr "ราชการ" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "กรีซ" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "ฮ่องกง" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "อินโดนีเซีย" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "ไอร์แลนด์" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "อิสราเอล" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "" + +#: src/common/util.c:959 +msgid "India" +msgstr "อินเดีย" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "ข้อมูล" + +#: src/common/util.c:961 +msgid "International" +msgstr "นานาชาติ" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "อิรัก" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "อิหร่าน" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "ไอซ์แลนด์" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "อิตาลี" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "จอร์แดน" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "ญี่ปุ่น" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "เคนย่า" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "กัมพูชา" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "เกาหลีเหนือ" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "เกาหลีใต้" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "คูเวต" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "ลาว" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "ศรีลังกา" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "โมนาโก" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "" + +#: src/common/util.c:999 +msgid "Military" +msgstr "" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "มาลี" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "เมียนมาร์" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "มองโกเลีย" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "เม็กซิโก" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "มาเลเซีย" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "เครือข่าย Internic" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "ไนจีเรีย" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "นอรเวย์" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "เนปาล" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "นิวซีแลนด์" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "โอมาน" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "เปรู" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "ฟิลิปปินส์" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "ปากีสถาน" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "โปแลนด์" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "กาตาร์" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "โรมาเนีย" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "โรงเรียน ARPAnet เดิม" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "ซูดาน" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "สวีเดน" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "สิงคโปร์" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "ไทย" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "ตุรกี" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "ไต้หวัน" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "ยูเครน" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "อูกานดา" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "สหราชอาณาจักร" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "สหรัฐอเมริกา" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "เวียดนาม" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "เยเมน" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "แอฟริกาใต้" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "ไม่รู้จัก" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "เปิดหน้าต่างสนทนา" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "ส่งไฟล์" + +#: src/common/xchat.c:728 +#, fuzzy +msgid "_User Info (WhoIs)" +msgstr "ข้อมูลผู้ใช้(WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +#, fuzzy +msgid "O_perator Actions" +msgstr "ผู้ควบคุมการปฏิบัติการ" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "ให้ Ops" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "รับ Ops" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "ให้การประกาศ" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "รับการประกาศ" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "เตะ/แบน" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "เตะ" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "แบน" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "เตะแบน" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "ออกจากแชนแนล" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "เข้าใช้แชนแนล..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "ป้อนแชนแนลที่จะเข้าร่วม" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "การเชื่อมต่อเซิร์ฟเวอร์" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Ping เซิร์ฟเวอร์" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "ซ่อนเวอร์ชั่น" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Op" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "DeOp" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "ลาก่อน" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "ป้อนเหตุผลที่จะเตะ %s:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "ส่งไฟล์" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "หน้าต่างสนทนา" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "ส่ง" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "คุยเล่น" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "ล้าง" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "ไม่สามารถเชื่อมต่อไปยัง session bus" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "ล้มเหลวในการจบ NameHasOwner" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "ล้มเหลวในการจบคำสั่ง" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "เข้าถึงระยะไกล" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "ปล๊กอินสำหรับการเข้าถึงระยะไกลโดยใช้ DBUS" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "ไม่สามารถเชื่อมต่อไปยัง session bus: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "ผิดพลาดในการร้องขอ %s: %s\n" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "เกี่ยว_กับ" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "โปรแกรมลูกข่าย IRC หลายแพลตฟอร์ม " + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "แผนผังตัวอักษร" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "ไม่ได้เชื่อมต่อ." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "คุณจะต้องเลือกคนที่ถูกแบน." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "แน่ใจหรือไม่ที่ต้องการจะลบทุกคนที่ถูกแบนไว้ใน %s?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "มาสก์" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "จาก" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "วันเวลา" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "คุณสามารถเปิดหน้าต่างรายการผู้ถูกแบนเมื่ออยู่ในแท็บแชนแนลเท่านั้น." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: รายการแบน (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "ลบ" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "ตัดให้สั้น" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "เรียกใหม่" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "กำลังแสดง %d/%d ผู้ใช้ บน %d/%d แชนแนล." + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "เลือกชื่อไฟล์เอาต์พุท" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "เข้าแชนแนล" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "คัดลอกชื่อแชนแนล" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "คัดลอกข้อความหัวข้อ" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: รายการแชนแนล (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "ค้น_หา" + +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "รายการ_ดาวน์โหลด" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "_บันทึกรายการ..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "แสดงเท่านั้น." + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "แชนแนลกับ" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "ไปยัง" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "ผู้ใช้" + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "ค้นหาใน:" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "ชื่อแชนแนล" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "ชนิดไฟล์:" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "ค้นหาอย่างง่าย" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "รูปแบบตรงกัน (ไวลด์การ์ด)" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "Regular Expression" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "ค้นหา:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "ส่งไฟล์ไปยัง %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "ไฟล์นั้นไม่สามารถเริ่มต่อได้" + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"ไม่สามารถเข้าถึงไฟล์: %s\n" +"%s.\n" +"การเชื่อมต่อไม่สามารถเป็นไปได้." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "ไฟล์ในไดเร็กทอรี่ดาวน์โหลดใหญ่กว่าไฟล์ที่ถูกเสนอ. การเริ่มต่อไม่สามารถเป็นไปได้." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "ไม่สามารถเริ่มต่อสำหรับไฟล์เดียวกันจากคนสองคน." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: อัพโหลดและดาวน์โหลด" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "สถานะ" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "ไฟล์" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "ทั้งคู่" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "อัพโหลด" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "ดาวน์โหลด" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "รายละเอียด" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "ไฟล์:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "ที่อยู่:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "ยกเลิกกลางคัน" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "ยอมรับ" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "เริ่มใหม่" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "เปิดโฟลเดอร์..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: รายการคุยเล่น DCC" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "รับ" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "ส่ง" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "เวลาเริ่ม" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*ใหม่*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "แก้ไขฉัน" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "ชื่อ" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "คำสั่ง" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "เลื่อนขึ้น" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "เลื่อนลง" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "ยกเลิก" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "บันทึก" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "เพิ่มใหม่" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "ลบ" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "เรียงลำดับ" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "ช่วยเหลือ" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "ไม่เชื่อมต่อไปยังเซิร์ฟเวอร์โดยอัตโนมัติ" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "ใช้ไดเร็กทอรี่การตั้งค่าต่างออกไป" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "ไม่โหลดปั๊กอินใด ๆ โดยอัตโนมัติ" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "แสดงไดเร็กทอรี่ปลั๊กอินที่โหลดอัตโนมัติ" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "แสดงไดเร็กทอรี่การตั้งค่าของผู้ใช้" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "เปิด URL irc://เซิร์ฟเวอร์:พอร์ต/แชนแนล" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "กระทำคำสั่ง:" + +#: src/fe-gtk/fe-gtk.c:132 +#, fuzzy +msgid "Open URL or execute command in an existing XChat" +msgstr "เปิด URL ใน XChat ที่มีอยู่" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "เริ่มต้นด้วยขนาดย่อ. ระดับ 0=ปกติ 1=เป็นไอคอน 2=ถาด" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "รดับ" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "แสดงข้อมูลเวอร์ชั่น" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"ล้มเหลวในการเปิดฟอนต์:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "การค้นหาบัฟเฟอร์ว่างเปล่า.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"ปฏิบัติการคำสั่ง Run Command จะดำเนินการตามข้อมูลในข้อมูล1 " +"ตามที่มันถูกพิมพ์ไปยังกล่องป้อนข้อมูลที่คุณกดคีย์เป็นอันดับคีย์. ดังนั้นมันสามารถบรรจุข้อความ " +"(ซึ่งจะถูกส่งไปยังแชนแนล/บุคคล), คำสั่ง หรือคำสั่งของผู้ใช้. เมื่อดำเนินการ \\n ตัวอักษรในข้อมูล1 " +"จะถูกใช้เพื่อแยกแยะคำสั่ง ดังนั้นมันเป็นไปได้ที่จะดำเนินการมากกว่าหนึ่งคำสั่ง. ถ้าคุณต้องการให้ \\ " +"ในข้อความจริง ๆ ถูกดำเนินการแล้วป้อน \\\\" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"คำสั่ง Change Page จะสลับระหว่างหน้าในสมุด. ตั้งค่าข้อมูล 1 ไปยังหน้าที่คุณต้องการสลับไป. " +"ถ้าข้อมูล 2 ถูกตั้งค่าเป็นค่าใด ๆ แล้วตัวสวิตช์จะสัมพันธ์กับตำแหน่งปัจจุบัน" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"คำสั่ง Insert in Buffer จะทำการเพิ่มเนื้อหาของข้อมูล 1 ไปยังตัวรับข้อมูลที่ที่ลำดับคีย์ได้ถูกกด " +"ที่ตำแหน่งปัจจุบันของเคอร์เซอร์" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"คำสั่ง Scroll Page เลื่อนส่วนประกอบที่เป็นข้อความขึ้นหรือลงหนึงหน้าหรือหนึ่งบรรทัด. ตั้งค่าข้อมูล 1 " +"ไปเป็นทั้ง ขึ้น, ลง, +1 หรือ -1." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"คำสั่ง Set Buffer ตั้งค่าตัวรับข้อมูลไปยังที่ ที่ลำดับของคีย์ที่ได้ถูกป้อนเข้ามาไปยังเนื้อหาของข้อมูล 1" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"คำสั่ง Last Command ตั้งค่าตัวรับข้อมูลไปยังคำสั่งล่าสุดที่ถูกป้อน - เช่นเดียวกับการกดลูกศรขึ้นในเชลล์" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"คำสั่ง Next Command ตั้งค่าตัวรับข้อมูลไปยังคำสั่งถัดไปที่ถูกป้อน - เช่นเดียวกับการกดลูกศรลงในเชลล์" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"คำสั่งนี้จะเปลี่ยนข้อความที่อยู่ในรายการป้อน เพื่อจะทำชื่อหรือคำสั่งที่ไม่เรียบร้อยให้สมบูรณ์. ถ้าข้อมูล 1 " +"ถูกตั้งค่า แล้วการแท็บคู่ในสตริงจะถูกเลือกในชื่อเล่นล่าสุด, ไม่ใช่ถัดไป." + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"คำสั่งนี้จะเลื่อนขึ้นหรือลงไปยังรายการชื่อเล่น. ถ้าข้อมูล1 ถูกตั้งไปเป็นอะไรก็ตามมันจะเลื่อนขึ้น, " +"ไม่อย่างนั้นจะเลื่อนลง" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"คำสั่งนี้ตรวจสอบคำล่าสุดที่ถูกป้อนไปยังตัวป้อน แทนที่จะเป็นรายการแทนที่ และแทนที่มันถ้าค้นพบสิ่งที่ตรงกัน" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "คำสั่งนี้ย้ายแท็บด้านหน้าไปทางซ้ายหนึ่งอันดับ" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "คำสั่งนี้ย้ายแท็บด้านหน้าไปทางขวาหนึ่งอันดับ" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "คำสั่งนี้ย้ายสมาชิกแท็บปัจจุบันไปทางซ้าย" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "คำสั่งนี้ย้ายสมาชิกแท็บปัจจุบันไปทางขวา" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "ใส่บรรทัดการป้อนเข้าไปยังประวัติแต่ไม่ต้องส่งไปยังเซิร์ฟเวอร์" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "มีปัญหาในการโหลดการตั้งค่าการผูกคีย์" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<none>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "ปรับ" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "คีย์" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "ปฏิบัติการ" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: แป้นพิมพ์ลัด" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "ข้อมูล 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "ข้อมูล 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "ไม่สามารถเปิดไฟล์ตั้งค่าคีย์\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"ไม่รู้จักชื่อคีย์ %s ในไฟล์ปรับแต่งการผูกคีย์\n" +"ยกเลิกการโหลดก่อนเสร็จสิ้น, กรุณาแก้ไข %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"ไม่รู้จักปฏิบัติการ %s ในไฟล์ปรับแต่งการผูกคีย์\n" +"ยกเลิกการโหลดก่อนเสร็จสิ้น, กรุณาแก้ไข %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"คาดหมายบรรทัดข้อมูล (เริ่มด้วย Dx{:|!}) แต่ได้:\n" +"%s\n" +"\n" +"ยกเลิกการโหลดก่อนเสร็จสิ้น, กรุณาแก้ไข %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"ไฟล์ปรับแต่งการผูกคีย์เสียหาย, ยกเลิกการโหลดก่อนเสร็จสิ้น\n" +"กรุณาแก้ไข %s/keybindings.conf\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "ไม่สามารถเขียนไฟล์นั้นได้" + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "ไม่สามารถอ่านไฟล์นั้นได้" + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "มาสก็นั้นมีอยู่แล้ว" + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "ส่วนตัว" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "ประกาศ" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "เชิญชวน" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "เลิกเพิกเฉย" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "ป้อนมาสก์เพื่อเพิกเฉย" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: รายการเพิกเฉย" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "สถิติการเพิกเฉย:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "แชนแนล:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "ส่วนตัว:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "ประกาศ:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "เชิญชวน:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "เพิ่ม..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "ชื่อแชนแนลสั้นเกินไป, ลองใหม่อีกครั้ง." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: การเชื่อมต่อเสร็จสมบูรณ์" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "การเชื่อมต่อไปยัง %s เสร็จสมบูรณ์." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"ในหน้าต่างรายชื่อเซิร์ฟเวอร์, ไม่มีแชนแนล(แชนแนลคุยเล่น)ที่ถูกป้อนเพื่อที่จะเข้าร่วมในเครือข่ายนี้." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "คุณอยากจะทำอะไรต่อไป?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "ไม่ทำอะไรเลย. ฉันจะเข้าแชนแนลทีหลัง" + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "เ_ข้าร่วมแชนแนลนี้" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "ถ้าคุณรู้ชื่อของแชนแนลที่คุณต้องการเข้าร่วม. ป้อนมันที่นี่." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "เปิ_ดหน้าต่างรายชื่อแชนแนล" + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "ร้องขอรายชื่อแชนแนลอาจใช้เวลาสองสามนาที." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "แสดงหน้าต่างสนทนานี้หลังจากการเชื่อมต่อ_ตลอด." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "การสนทนากับ" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "หัวข้อสำหรับ %s คือ: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "ไม่มีหัวข้อถูกตั้ง." + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "เซิร์ฟเวอร์นี้ยังคงมี %d แชนแนลหรือการสนทนาที่ถูกเชื่อมโยงด้วย. ต้องการปิดทั้งหมด?" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "ออกจาก XChat?" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "ไม่ต้องถามในครั้งหน้า." + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "คุณกำลังเชื่อมต่อไปยังเครือข่าย IRC %i ." + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "คุณแน่ใจแล้วหรือไม่ที่จะออก?" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "การโอนย้ายไฟล์บางไฟล์ยังคงทำงานอยู่." + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "_ย่อไปยังถาด" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "ใส่คุณลักษณะหรือรหัสสี" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>ตัวหนา</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>ขีดเส้นใต้</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "ปกติ" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "สี 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "สี 8-15" + +#: src/fe-gtk/maingui.c:1612 +#, fuzzy +msgid "_Settings" +msgstr "ตั้_งค่า" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "ซ่อนแชนแนลเข้าร่วม/ส่วนข้อความ" + +#: src/fe-gtk/maingui.c:1625 +#, fuzzy +msgid "_Extra Alerts" +msgstr "การแจ้งเตือน" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "บี๊บเมื่อมีข้อความ" + +#: src/fe-gtk/maingui.c:1628 +#, fuzzy +msgid "Blink Tray _Icon" +msgstr "เปิดการกระพริบถาดไอคอน:" + +#: src/fe-gtk/maingui.c:1629 +#, fuzzy +msgid "Blink Task _Bar" +msgstr "เปิดการกระพริบแถบงาน:" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +#, fuzzy +msgid "_Detach" +msgstr "_ถอดแท็บออก" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "_ปิด" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "ขีดจำกัดผู้ใช้ต้องเป็นตัวเลข!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "การป้องกันหัวข้อ" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "ไม่มีข้อความภายนอก" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "ลับเฉพาะ" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "รับเชิญเท่านั้น" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "ปรับปรุง" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "รายการแบน" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "คีย์เวิร์ด" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "ขีดจำกัดผู้ใช้" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "แสดง/ซ่อนรายการผู้ใช้" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"ไม่สามารถตั้งค่าความโปร่งใสของพื้นหลังได้!\n" +"\n" +"คุณอาจกำลังใช้ตัวจัดการหน้าต่าง\n" +"ปัจจุบันที่ไม่สนับสนุนการทำงาน\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "ป้อนชื่อเล่นใหม่:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "ไม่รู้จักโฮสต์" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "ชื่อจริง" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "ผู้ใช้:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "ประเทศ:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "เซิร์ฟเวอร์:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "ผ่านมาแล้ว %u นาที" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "ข้อความล่าสุด:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "ข้อความไม่อยู่:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"แถบเมนูตอนนี้ได้ซ่อนอยู่. คุณสามาระแสดงมันอีกครั้งโดนการกด F9 หรือ คลิกขวา " +"ในที่ว่างของพื้นที่ข้อความหลัก" + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "เปิดลิงค์ในบราวเซอร์" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "คัดลอกลิงค์ที่เลือก" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "เข้าร่วมแชนแนล" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "ออกจากแชนแนล" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "หมุนวนแชนแนล" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: เมนูผู้ใช้" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "แก้ไขเมนูนี้" + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "เรียกข้อมูลรายการแชนแนล..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"User Commands - รหัสพิเศษ:\n" +"\n" +"%d = ข้อมูล (ctcp ทั้งหมด)\n" +"%e = ชื่อเครือข่ายปัจจุบัน\n" +"%m = รายละเอียดเครื่อง\n" +"%s = ชื่อเล่นของคนที่ส่ง ctcp\n" +"%t = เวลา/วัน\n" +"%v = เวอร์ชั่นของ xchat%2 = คำที่ 2\n" +"%3 = คำที่ 3\n" +"&2 = คำที่ 2 ไปยังท้ายบรรทัด\n" +"&3 = คำที่ 3 ไปยังท้ายบรรทัด\n" +"\n" +"เช่น:\n" +"/cmd john hello\n" +"\n" +"%2 อาจจะเป็น \"john\"\n" +"&2 อาจจะเป็น \"john hello\"." + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"ปุ่มรายชื่อผู้ใช้ - รหัสพิเศษ:\n" +"\n" +"%a = ทุกชื่อเล่นที่เลือก\n" +"%c = แชนแนลปัจจุบัน\n" +"%e = ชื่อเครือข่ายปัจจุบัน\n" +"%h = ชื่อโฮสต์ของชื่อเล่นที่เลือก\n" +"%m = ข้อมูลเครื่อง\n" +"%n = ชื่อเล่นของคุณ\n" +"%s = ชื่อเล่นที่เลือก\n" +"%t = เวลา/วัน\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"ปุมสนทนา - รหัสพิเศษ:\n" +"\n" +"%a = ทุกชื่อเล่นที่เลือก\n" +"%c = แชนแนลปัจจุบัน\n" +"%e = ชื่อเครือข่ายปัจจุบัน\n" +"%h = ชื่อโฮสต์ของชื่อเล่นที่เลือก\n" +"%m = ข้อมูลเครื่อง\n" +"%n = ชื่อเล่นของคุณ\n" +"%s = ชื่อเล่นที่เลือก\n" +"%t = เวลา/วัน\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"การตอบรับ CTCP - รหัสพิเศษ:\n" +"\n" +"%d = ข้อมูล (ctcp ทั้งหมด)\n" +"%e = ชื่อเครือข่ายปัจจุบัน\n" +"%m = รายละเอียดเครื่อง\n" +"%s = ชื่อเล่นของคนที่ส่ง ctcp\n" +"%t = เวลา/วัน\n" +"%2 = คำที่ 2\n" +"%3 = คำที่ 3\n" +"&2 = คำที่ 2 ไปยังท้ายบรรทัด\n" +"&3 = คำที่ 3 ไปยังท้ายบรรทัด\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"ตัวจัดการ URL - รหัสพิเศษ:\n" +"\n" +"%s = สตริง URL \n" +"\n" +"เติม ! ด้านหน้าของคำสั่ง\n" +"เพื่อแสดงว่ามันจะถูกส่งไปยัง\n" +"เชลล์แทนที่จะเป็น XChat" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: คำสั่งที่ผู้ใช้นิยามขึ้น" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: เมนูป็อบอัพรายชื่อผู้ใช้" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "แทนที่ด้วย" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: แทนที่" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: ตัวจัดการ URL" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: ปุ่มรายการผู้ใช้" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: ปุ่มสนทนา" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: การตอบรับ CTCP" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "_รายการเครือข่าย" + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "สร้างให_ม่" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "แท็บเซิร์ฟเวอร์..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "แท็บแชนแนล..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "หน้าต่างเซิร์ฟเวอร์..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "หน้าต่างแชนแนล..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "โหล_ดปลั๊กอินหรือสคริป..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "_ออก" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "_มุมมอง" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "แถบเ_มนู" + +#: src/fe-gtk/menu.c:1592 +msgid "_Topic Bar" +msgstr "แถ_บหัวข้อ" + +#: src/fe-gtk/menu.c:1593 +msgid "_User List" +msgstr "รา_ยการผู้ใช้" + +#: src/fe-gtk/menu.c:1594 +msgid "U_serlist Buttons" +msgstr "ปุ่ม_รายการผู้ใช้" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "ปุ่มโหม_ด" + +#: src/fe-gtk/menu.c:1597 +msgid "_Channel Switcher" +msgstr "ตัว_สวิตช์แชนแนล" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "แท็_บ" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "ต้_นไม้" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "ตัว_วัดเครือข่าย" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "ปิด" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "กราฟ" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "เ_ซิร์ฟเวอร์" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "_ตัดการเชื่อมต่อ" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "เชื่อมต่อให_ม่" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "เข้าใช้แชนแนล..." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "เข้าใช้แชนแนล..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "ตั้งเครื่องหมายว่าไม่อยู่" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "เ_มนูผู้ใช้" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "ตั้_งค่า" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "ปรั_บแต่ง" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "ขั้นสูง" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "แทนที่อัตโนมัติ..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "การตอบรับCTCP..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "ปุ่มสนทนา" + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "แป้นพิมพ์ลัด..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "เหตุการณ์ข้อความ..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "ตัวจัดการURL..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "คำสั่งผู้ใช้..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "ปุ่มรายการผู้ใช้..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "ป๊อปอัพรายการผู้ใช้..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_หน้าต่าง" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "รายการแบน..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "แผนผังตัวอักษร..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "คุยเล่นโดยตรง..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "การโอนย้ายไฟล์..." + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "รายการแบน..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "รายการเพิกเฉย..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "ปลั๊กอินและสคริป..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "ข้อมูลดิบบันทึกระบบ..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "ตัวดักจับ URL..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "ตั้งค่าเส้นสัญลักษณ์ใหม่" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "_ล้างข้อความ" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "ค้นหาข้อความ..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "บันทึกข้อความ..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_ช่วยเหลือ" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "เ_นื้อหา" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "เกี่ยว_กับ" + +#: src/fe-gtk/menu.c:2147 +#, fuzzy +msgid "_Attach" +msgstr "_ผูกติดหน้าต่าง" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "เห็นล่าสุด" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "ออฟไลน์" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "ไม่เลย" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "ผ่านมา %d นาทีแล้ว" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "ออนไลน์" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "ป้อนชื่อเล่นที่จะเพิ่ม:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "แจ้งเตือนบนเครือข่ายนี้" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "ยอมรับรายการเครือข่ายที่แยกด้วยจุลภาค." + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "XChat: รายการเพิกเฉย" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "เปิดการสนทนา" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" +"ไม่พบ 'notify-send' เพื่อเปิดบอลลูนแจ้งเตือน.\n" +"กรุณาลง libnotify." + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "XChat: เชื่อมต่อไปยังเครือข่าย %u และแชนแนล %u " + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "_คืนค่า" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "_ซ่อน" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "เปิดการกระ_พริบ" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "ข้อความของแชนแนล" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "ข้อความส่วนตัว" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "ข้อความที่ถูกเน้น" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "ไม่อยู่" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat: ข้อความที่ถูกเน้นจาก: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat: %u ข้อความที่ถูกเน้น, ล่าสุดจาก: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat: ข้อความสาธารณะใหม่จาก: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat: %u ข้อความสาธารณะใหม่." + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat: ข้อความส่วนตัวจาก: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "XChat: %u ข้อความส่วนตัว, ล่าสุดจาก: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat: เสนอไฟล์จาก: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "XChat: %u เสนอไฟล์, ล่าสุดจาก: %s (%s)" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "เวอร์ชั่น" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "คำอธิบาย" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "เลือกปลั๊กอินหรือสคริปที่จะโหลด" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: ปลั๊กอินและสคริป" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "โห_ลด" + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "เ_ลิกโหลด" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "บันทึกเป็น..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: ข้อมูลดิบของบันทึกระบบ (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "ล้างข้อมูลดิบของบันทึกระบบ" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "หน้าต่างที่คุณเปิดการค้นหานี้ไม่ได้มีอะไรอยู่เลย." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "การค้นหาถึงส่วนท้าย, ไม่พบ." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: การค้นหา" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "ตัวเล็กใหญ่_ตรงกัน" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "ค้นหา_ย้อนกลับ" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "_ค้นหา" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "เครือข่ายใหม่" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "จะลบ \"%s\" และเซิร์ฟเวอร์ทั้งหมดจริง ๆ หรือ?" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "แชนแนล" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: รายการแชนแนล (%s)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "รหัสผ่าน:" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "แก้ไ_ข" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "ชื่อผู้ใช้และชื่อจริงไม่สามารที่จะปล่อยว่างได้" + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: แก้ไข %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "เซิร์ฟเวอร์สำหรับ %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "เชื่อมต่อไปยังเซิร์ฟเวอร์ที่เลือกเท่านั้น" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "ไม่ต้องวนไปยังทุกเซิร์ฟเวอร์เมื่อการเชื่อมต่อล้มเหลว." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "รายละเอียดของคุณ" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "ใช้ข้อมูลโดยรวมของผู้ใช้" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "_ชื่อเล่น:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "ตัวเลือกอันดับสอง:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "_ชื่อผู้ใช้:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "ชื่อ_จริง:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "การเชื่อมต่อ" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "เชื่อมต่อไปยังเครือข่ายนี้อัตโนมัติเมื่อเปิดโปรแกรม" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "ใช้เซิร์ฟเวอร์พร็อกซี่" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "ใช้ SSL สำหรับทุกเซิร์ฟเวอร์บนเครือข่ายนี้" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "ไดั้รับหนังสือรับรอง SSL ที่ไม่ถูกต้อง" + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "ออกจากแชนแนล:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "แชนแนลที่จะเข้าร่วม, แยกด้วยจุลภาค, แต่ไม่ใช่ด้วยการเว้นว่าง!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "คำสั่งเชื่อมต่อ:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"คำสั่งเพิ่มเติมที่จะเรียกให้ทำหลังจากทำการเชื่อมต่อ. ถ้าคุณต้องการมากกว่าหนึ่ง, ตั้งค่านี้ LOAD -e " +"<ชื่อไฟล์>, เมื่อ <ชื่อไฟล์> คือไฟล์ข้อความที่เก็บคำสั่งต่าง ๆ ที่จะเรียกให้ทำงานเอาไว้" + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "รหัสผ่านเซิร์ฟเวอร์ชื่อเล่น:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "ถ้าชื่อเล่นของคุณต้องการรัสผ่าน, ป้อนมันที่นี่. ไม่ใช่ทุกเครือข่าย IRC ที่สนับสนุน." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "รหัสผ่านเซิร์ฟเวอร์:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "รหัสผ่านสำหรับเซิร์ฟเวอร์, ถ้าไม่เน่ใจ, ปล่อยว่างไว้." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "ชุดอักขระ:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: รายการเครือข่าย" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "รายละเอียดผู้ใช้" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "ตัวเลือกอันดับสาม:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "เครือข่าย" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "ข้ามรายชื่อเครือข่ายตอนเปิดโปรแกรม" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "แก้ไ_ข..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "เ_รียงลำดับ" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" +"เรียงรายชื่อเครือข่ายตามตัวอักษร. ใช้ปุ่ม SHIFT-UP และ SHIFT-DOWN เพื่อที่จะเคลื่อนแถว." + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "เ_ชื่อมต่อ" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "การแสดงกล่องข้อความ" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "ฟอนต์:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "รูปพื้นหลัง:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "เส้นเลื่อนกลับ:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "ใช้ชื่อเล่นเป็นสี" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "ให้แต่ละคนบน IRC มีสีต่างกัน" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "ย่อหน้าชื่อเล่น" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "ตั้งชื่อเล่นให้ชิดขวา" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "ทำการโปร่งใสพื้นหลัง" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "แสดงเส้นลัญลักษณ์" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "ใส่เส้นสีแดงหลังจากข้อความล่าสุดที่อ่าน." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "ตั้งค่าความโปร่งใส" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "สีแดง:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "สีเขียว:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "สีน้ำเงิน:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "การประทับเวลา" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "เปิดการประทับเวลา" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "รูปแบบการประทับเวลา" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "ดู manpage ของ strftime สำหรับรายละเอียด." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "อันดับการพูดคุยล่าสุด" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "กล่องรับข้อมูล" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "ใช้กล่องแถบฟอนต์และสี" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "ตรวจสอบการสะกด" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "การเติมเต็มชื่อเล่น" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "เติมเต็มชื่อเล่นโดยอัตโนมัติ (โดยไม่มีคีย์ TAB)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "ส่วนต่อท้ายการเติมเต็มชื่อเล่น" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "การลำดับการเติมเต็มชื่อเล่น" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "รหัสกล่องรับข้อมูล" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "แปลง %nnn เป็นค่า ASCII" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "แปลง %C, %B เป็นสี, ตัวหนา และอื่น ๆ" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, Ops ก่อน" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, Ops ทีหลัง" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "ไม่เรียง" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "ซ้าย(ด้านบน)" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "ซ้าย(ด้านล่าง)" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "ขวา(ด้านบน)" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "ขวา(ด้านล่าง)" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "บน" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "ล่าง" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "ซ่อน" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "รายชื่อผู้ใช้" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "แสดงชื่อโฮสต์ในรายชื่อผู้ใช้" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "เรียงรายชื่อผู้ใช้ด้วย:" + +#: src/fe-gtk/setup.c:205 +msgid "Show user list at:" +msgstr "แสดงรายชื่อผู้ใช้ที่:" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "ติดตามการไม่อยู่" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "ติดตามสถานะไม่อยู่ของผู้ใช้และทำเครื่องหมายพวกเขาในสีที่แตกต่างกัน" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "ในแชนแนลที่เล็กกว่า:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "ปฏิบัติการเมื่อดับเบิ้ลคลิก" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "หน้าต่าง" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "แท็บ" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "ตลอดเวลา" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "แท็บที่ร้องขอเท่านั้น" + +#: src/fe-gtk/setup.c:242 +#, fuzzy +msgid "Tree" +msgstr "ต้_นไม้" + +#: src/fe-gtk/setup.c:249 +#, fuzzy +msgid "Switcher type:" +msgstr "ชนิดไฟล์:" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "เปิดแท็บพิเศษสำหรับข้อความจากเซิร์ฟเวอร์" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "เปิดแท็บพิเศษสำหรับการประกาศจากเซิร์ฟเวอร์" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "เปิดแท็บใหม่เมื่อคุณได้รับข้อความส่วนตัว" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "เรียงแท็บตามตัวอักษร" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "แท็บเล็ก" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "ให้ความสนใจแท็บใหม่:" + +#: src/fe-gtk/setup.c:258 +msgid "Show channel switcher at:" +msgstr "แสดงตัวสวิตช์แชนแนลที่:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "ย่อป้ายชื่อแท็บเป็น:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "ต้วหนังสือ." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "แท็บหรือหน้าต่าง" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "เปิดแชนแนลใน:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "เปิดหน้าต่างสนทนาใน:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "เปิดส่วนอรรถประโยชน์ใน:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "เปิด DDC, การเพิกเฉย, การแจ้งเตือน อื่น ๆ, ในแท็บหรือหน้าต่าง?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "ไม่" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "ใช่" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "มองหาโฟลเดอร์ที่บันทึกทุกครั้ง" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "ไฟล์และไดเร็กทอรี่" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "ยอมรับไฟล์ที่ได้รับการเสนอให้อัตโนมัติ:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "ดาวน์โหลดไฟล์ไปยัง:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "ย้ายไฟล์ที่เสร็จแล้วไปที่:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "บันทึกชื่อเล่นในชื่อไฟล์" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "ตั้งค่าเครือข่าย" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "รับที่อยู่ของฉันจากเซิร์ฟเวอร์ IRC" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "ร้องขอเซิร์ฟเวอร์ IRC ด้วยที่อยู่จริงของคุณ. ใช้นี่ถ้าคุณมีที่อยู่เป็น 192.168.*.* !" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "ที่อยู่ไปพีของ DDC:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "อ้างถึงคุณด้วยที่อยู่นี้เมื่อทำการเสนอไฟล์." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "พอร์ตสำหรับส่ง DCC แรก:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "พอร์ตสำหรับส่ง DCC สุดท้าย:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!ปล่อยพอร์ตไว้ที่ศูนย์สำหรับขอบเขตทั้งหมด." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "ความเร็วการขนส่งไฟล์สูงสุด (ไบต์ต่อวินาที)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "การอัพโหลดหนึ่งๆ:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "ใช้ความเร็วสูงสุดสำหรับการขนย้ายไฟล์หนึ่ง ๆ" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "การดาวน์โหลดหนึ่งๆ:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "รวมการอัพโหลดทั้งหมด:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "ใช้ความเร็วสูงสุดสำหรับทุกไฟล์" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "รวมการดาวน์โหลดทั้งหมด:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "การแจ้งเตือน" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "เปิดการแสดงถาดบอลลูน:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "เปิดการกระพริบถาดไอคอน:" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "เปิดการกระพริบแถบงาน:" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "เปิดเสียงบี๊บ:" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "เปิดใช้ถามไอคอนของระบบ" + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "ข้อความที่ถูกเน้น" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "ข้อความที่ถูกเน้นเป็นสิ่งที่ชื่อเล่นของคุณกล่าวถึง, ยิ่งกว่านั้น:" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "คำพิเศษสำหรับเน้น:" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "ไม่เน้นชื่อเล่น:" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "ชื่อเล่นสำหรับเน้นเสมอ:" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "แยกคำหลาย ๆ คำด้วยจุลภาค." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "ข้อความมาตรฐาน" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "ออก:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "ออกจากแชนแนล:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "ไม่อยู่:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "ไม่อยู่" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "แจ้งข้อความไม่อยู่" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "แจ้งข้อความไม่อยู่ของคุณไปยังทุกแชนแนล" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "แสดงสถานะไม่อยู่ครั้งเดียว" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "แสดงข้อความไม่อยู่อย่างเดียวกันเพียงครั้งเดียว" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "เลิกทำเครื่องหมายว่าไม่อยู่โดยอัตโนมัติ" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "เลิกทำเครื่องหมายคุณเองเป็นไม่อยู่ก่อนที่จะส่งข้อความ" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "ตั้งค่าขั้นสูง" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "เวลาหน่วงในการเชื่อมต่ออีกครั้งอัตโนมัติ:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "แสดงโหมดในรูปแบบข้อมูลดิบ" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Whois เมื่อมีการแจ้งเตือน" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "ส่ง /WHOIS เมื่อผู้ใช้ในรายชื่อแจ้งเตือนได้ออนไลน์" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "ซ่อนแชนแนลเข้าร่วม/ส่วนข้อความ" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "ซ่อนแชนแนลเข้าร่วม/ส่วนข้อความโดยอัตโนมัติ" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "เปิดหน้าต่าง DCC โดยอัตโนมัติ" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "หน้าต่างส่ง" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "หน้าต่างรับ" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "หน้าต่างคุยเล่น" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "การบันทึกของระบบ" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "เปิดการบันทึกของการพูดคุย" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "ชื่อไฟล์บันทึกระบบ:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=เซิร์ฟเวอร์ %c=แชนแนล %n=เครือข่าย." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "ใส่กี่ประทับเวลาในบันทึกระบบ" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "รูปแบบประทับเวลาของบันทึกระบบ:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(ปิดการทำงาน)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "ทุกการเชื่อมต่อ" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "เซิร์ฟเวอร์ IRC เท่านั้น" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "DCC Get เท่านั้น" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "ที่อยู่ของคุณ" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "ผูกติดไปเป็น:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "มีประโยชน์กับคอมพิวเตอร์ที่มีหลายที่อยู่เท่านั้น" + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "เซิร์ฟเวอร์พร็อกซี่" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "ชื่อโฮต์:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "พอร์ต:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "ชนิด:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "ใช้พร็อกซี่สำหรับ:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "การรับรองพร็อกซี่" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "ใช้การรับรอง (MS Proxy, HTTP หรือ Socks5 เท่านั้น)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "ใช้การรับรอง (HTTP หรือ Socks5 เท่านั้น)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "ชื่อผู้ใช้:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "รหัสผ่าน:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "เลือกไฟล์ภาพ" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "เลือกโฟลเดอร์ดาวน์โหลด" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "เลือกฟอนต์" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "มองหา..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "ทำเครื่องหมายผู้ใช้ที่สามารถระบุตัวบุคคลได้ด้วย:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "ทำเครื่องหมายผู้ใช้ที่ไม่สามารถระบุตัวบุคคลได้ด้วย:" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "เปิดโฟลเดอร์ข้อมูล" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "เลือกสี" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "สีข้อความ" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "สี mIRC:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "สีท้องถิ่น:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "พื้นหน้า:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "พื้นหลัง:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "ข้อความที่ทำเครื่องหมาย" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "ส่วนเชื่อมต่อผู้ใช้" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "ข้อมูลใหม่" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "เส้นสัญลักษณ์:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "ข้อความใหม่" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "ผู้ใช้ที่ไม่อยู่" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "การเน้น:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "เหตุการณ์" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "ไฟล์เสียง" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "เลือกไฟล์เสียง" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "วิธีการเล่นเสียง:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "โปรแกรมเล่นเสียงภาย_นอก" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "โ_ปรแกรมภายนอก" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_อัตโนมัติ" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "ไ_ดเร็กทอรี่ไฟล์เสียง" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "ไฟล์เสียง" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "มอ_งหา..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "เล่_น" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "ส่วนเชื่อมต่อผู้ใช้" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "กล่องข้อความ" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "รายการผู้ใช้" + +#: src/fe-gtk/setup.c:1703 +msgid "Channel switcher" +msgstr "สวิตช์เปลี่ยนแชนแนล" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "สี" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "การคุยเล่น" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "ทั่วไป" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "เสียง" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "ตั้งค่าเครือข่าย" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "การส่งไฟล์" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "หมวดหมู่" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" +"คุณไม่สามารถวางแผนภูมิต้นไม้บนส่วนบนหรือส่วนล่าง!\n" +"กรุณาเปลี่ยนเป็นแผนผังแบบ <b>แท็บ</b> ในเมนู <b>มุมมอง</b> เป็นอันดับแรก." + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "การตั้งค่าบางอย่างที่ถูกเปลี่ยน ต้องการที่จะเริ่มใหม่เพื่อให้เป็นผล." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*คำเตือน*\n" +"การรับ DCC อัตโนมัติไปยังไดเร็กทอรีบ้านของคุณ\n" +"อาจจะอันตรายและสร้างความเสียหายได้. เช่น:\n" +"บางคนอาจจะสามารถส่ง .bash_profile" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: ปรับแต่งค่า" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "มีข้อผิดพลากในการวิเคราะห์สตริง" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "สัญญาณนี้ต้องส่ง %d อาร์กิวเมนต์เท่านั้น, $%d ไม่ถูกต้อง" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "พิมพ์ไฟล์ข้อความ" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "แก้ไขเหตุการณ์" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ ตัวเลข" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "โหลดจาก..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "ทดสอบทั้งหมด" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: ตัวดักจับ URL" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "ล้างรายการ" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "คัดลอก URL ที่เลือก" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "คัดลอก" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "บันทึกรายการเป็นไฟล์" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d ops, %d ทั้งหมด" + +#~ msgid "" +#~ "Set per channel options\n" +#~ "CHANOPT CONFMODE ON|OFF - Toggle conf mode/showing of join and part " +#~ "messages\n" +#~ "CHANOPT COLORPASTE ON|OFF - Toggle color paste\n" +#~ "CHANOPT BEEP ON|OFF - Toggle beep on message\n" +#~ "CHANOPT TRAY ON|OFF - Toggle tray blink on message" +#~ msgstr "" +#~ "ตั้งค่าตัวเลือกในแต่ละแชนแนล\n" +#~ "CHANOPT CONFMODE ON|OFF - สวิตช์ตัวเลือกโหมดปรับแต่ง/" +#~ "แสดงการเข้าร่วมและส่วนของข้อความ\n" +#~ "CHANOPT COLORPASTE ON|OFF - สวิตช์ตัวเลือกเพลตสี\n" +#~ "CHANOPT BEEP ON|OFF - สวิตช์ตัวเลือกเสียงบี๊บเมื่อมีข้อความ\n" +#~ "CHANOPT TRAY ON|OFF - สวิตช์ตัวเลือกการกระพริบของถาดเมื่อมีข้อความ" + +#~ msgid "Direct client-to-client" +#~ msgstr "ลูกข่ายต่อลูกข่ายโดยตรง" + +#~ msgid "Send File" +#~ msgstr "ส่งไฟล์" + +#~ msgid "Offer Chat" +#~ msgstr "เสนอการคุยเล่น" + +#~ msgid "Abort Chat" +#~ msgstr "ยกเลิกการคุยเล่นก่อนเสร็จสิ้น" + +#~ msgid "Userinfo" +#~ msgstr "ข้อมูลผู้ใช้" + +#~ msgid "Clientinfo" +#~ msgstr "ข้อมูลลูกข่าย" + +#~ msgid "Time" +#~ msgstr "เวลา" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "Oper" + +#~ msgid "Kill this user" +#~ msgstr " Kill ผู้ใช้นี้" + +#~ msgid "Mode" +#~ msgstr "โหมด" + +#~ msgid "Give Half-Ops" +#~ msgstr "ให้ Half-Ops" + +#~ msgid "Take Half-Ops" +#~ msgstr "รับ Half-Ops" + +#~ msgid "Ignore" +#~ msgstr "เพิกเฉย" + +#~ msgid "Ignore User" +#~ msgstr "เพิกเฉยต่อผู้ใช้" + +#~ msgid "UnIgnore User" +#~ msgstr "เลิกเพิกเฉยต่อผู้ใช้" + +#~ msgid "Info" +#~ msgstr "ข้อมูล" + +#~ msgid "Who" +#~ msgstr "Who" + +#~ msgid "DNS Lookup" +#~ msgstr "ค้นหา DNS" + +#~ msgid "Trace" +#~ msgstr "Trace" + +#~ msgid "UserHost" +#~ msgstr "UserHost" + +#~ msgid "External" +#~ msgstr "External" + +#~ msgid "Traceroute" +#~ msgstr "Traceroute" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "About XChat" +#~ msgstr "เกี่ยวกับ XChat" + +#~ msgid "Unban" +#~ msgstr "เลิกแบน" + +#~ msgid "Blink tray on message" +#~ msgstr "กระพริบถาดเมื่อมีข้อความ" + +#~ msgid "Show join/part messages" +#~ msgstr "แสดงข้อความเข้าร่วม/ออกจากแชนแนล" + +#~ msgid "Color paste" +#~ msgstr "เพลตสี" + +#~ msgid "_Close Tab" +#~ msgstr "ปิ_ดแท็บ" + +#~ msgid "Channel List..." +#~ msgstr "รายการแชนแนล..." + +#~ msgid "Notify List..." +#~ msgstr "รายการแจ้งเตือน..." + +#~ msgid "_Close Window" +#~ msgstr "_ปิดหน้าต่าง" + +#~ msgid "User" +#~ msgstr "ผู้ใช้" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: รายการแจ้งเตือน" + +#~ msgid "C_hannels to join:" +#~ msgstr "_แชนแนลที่จะเข้าร่วม:" + +#~ msgid "Channel Switcher" +#~ msgstr "ตัวสวิตช์แชนแนล" diff --git a/xchat-2.8.8/po/uk.gmo b/xchat-2.8.8/po/uk.gmo new file mode 100644 index 0000000000000000000000000000000000000000..0fa5be26e693384a7748adac8268bcfdbcef0198 GIT binary patch literal 121923 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�dQyxw%W;c*gH73Y= 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 Ylcu5OO_S#wG@Q^4g=E_xYv<(u1%a#5^8f$< literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/po/uk.po b/xchat-2.8.8/po/uk.po new file mode 100644 index 0000000..40319f1 --- /dev/null +++ b/xchat-2.8.8/po/uk.po @@ -0,0 +1,5874 @@ +# Ukrainian translation to xchat +# Copyright (C) 2004 Free Software Foundation, Inc +# This file is distributed under the same license as the xchat package. +# Maxim Dubovoy <max@mylinux.com.ua>, 2003 +# Maxim V. Dziumanenko <dziumanenko@gmail.com>, 2004-2007 +# Oleksandr Kunytsia <xakep@snark.ukma.kiev.ua>, 2004 +# Sergey Tereschenko <serg.partizan@gmail.com>, 2009 +# +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.8.6\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2009-10-17 13:32+0300\n" +"Last-Translator: Sergey Tereschenko <serg.partizan@gmail.com>\n" +"Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" +"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Не вдалося створити ~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Я зайнятий" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Залишаю" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* Запускати IRC як root це тупо! Краще додати\n" +" звичайного користувача і входити ним в систему.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Очікування" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Активний" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Помилка" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Виконано" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "З'єднання" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Припинено" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "Немає доступу до %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Помилка" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s пропонує \"%s\". Прийняти?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Немає активних каналів даних (DCC)\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "ТАК " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "НІ " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "You are being CTCP flooded from %s, ignoring %s\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s онлайн\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s офлайн\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Не зайшли на канал. Спробуйте /join #<канал>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Не підключено. Спробуйте /server <вузол> [<порт>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Вже позначений як \"відсутній\": %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "Вже позначений як \"повернувся\": %s\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "Для запуску необхідна програма /bin/sh !\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Доступні команди:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Визначені користувачем команди:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Визначені у модулі команди:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "" +"Введіть /HELP <команда> щоб отримати докладнішу інформацію, або /HELP -l" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Невідомий аргумент '%s' проігноровано." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "Модуль не знайдено.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Не вдалося вивантажити модуль.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <ім'я> <дія>, додати кнопку над списком користувачів" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <команда>, надіслати команду до всіх каналів, на які ви зайшли" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <команда>, надіслати команду до всіх каналів, на які ви зайшли" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <cmd>, надіслати команду до всіх серверів, з якими ви з'єднані" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<підстава>], встановити статус \"відсутній\"" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "BACK, встановлює статус \"повернувся\" (не відсутній)" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <маска> [<тип>], заборонити доступ до каналу всім, хто відповідає " +"вказаній масці. Якщо користувачі вже з'єднані з каналом, вони не будуть " +"відключені (для цього потрібно бути оператором каналу)" + +#: src/common/outbound.c:3506 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <змінна> [<значення>]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "" +"CLEAR [ALL|HISTORY], очистити поточне текстове вікно або історію команд" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, закрити поточне вікно/вкладку" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" +"COUNTRY [-s] <код|метасимвол>, знайти код країни, наприклад: au = australia" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <нікнейм> <повідомлення>, надіслати повідомлення CTCP до користувача із " +"вказаним ім'ям, звичайними повідомленнями є VERSION та USERINFO" + +#: src/common/outbound.c:3516 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "CYCLE [<channel>], залишити поточний канал та відразу повернутися" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <нікнейм> - прийняти запропонований файл\n" +"DCC SEND [-maxcps=#] <нікнейм> [файл] - надіслати комусь файл\n" +"DCC PSEND [-maxcps=#] <нікнейм> [файл]- надіслати файл у пасивному режимі\n" +"DCC LIST - показати список DCC\n" +"DCC CHAT <нікнейм> - запропонувати розмову через DCC\n" +"DCC CLOSE <тип> <нікнейм> <файл> приклад:\n" +" /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <нікнейм>, зняти статус напівоператор каналу (chanhalf-op) у особи на " +"поточному каналі (потребує прав адміністратора каналу)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <ім'я>, видалити кнопку зі списку користувачів" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <нікнейм>, зняти права оператора (chanop) у вказаної особи на поточному " +"каналі (потребує прав адміністратора каналу)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <нікнейм>, зняти право голосу у вказаної особи на поточному каналі " +"(потребує прав адміністратора каналу)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON, від'єднатися від сервера" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <нік|вузол|ip>, знайти IP адресу користувача" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <текст>, вивести текст на локальній машині" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <команда>, виконати команду. Якщо використано параметр -o, вивід " +"буде надіслано до поточного каналу, інакше він буде виведений в поточному " +"вікні" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT, надіслати процесу сигнал SIGCONT" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], перервати виконання процесу у поточному сеансі. Якщо задано " +"параметр -9 процес буде припинено за допомогою SIGKILL" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP, надіслати процесу сигнал SIGSTOP" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE, надіслати дані в стандартний ввід процесу" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ, скинути поточну чергу відправлення на поточному сервері" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <вузол> [<порт>], під'єднуватися через проксі, типовий порт 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <нікнейм> <пароль>, знищити примарні превдоніми" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" +"HOP <нікнейм>, надати стан напівоператора (chanhalf-op) вказаній особі " +"(потребує прав оператора)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <пароль>, ідентифікація себе на nickserv" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <маска> <типи..> <параметри..>\n" +" маска - маска ігнорованого вузла, наприклад: *!*@*.aol.com\n" +" типи - типи ігнорованих даних, один або декілька з наступних:\n" +" PRIV, CHAN, NOTI, CTCP, INVI, ALL\n" +" параметри - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <нікнейм> [<канал>], запросити когось до каналу, за замовчанням до " +"поточного каналу (потребує прав оператора каналу)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <канал>, зайти до вказаного каналу" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <нікнейм>, викинути особу з поточного каналу (потребує прав оператора)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <нікнейм>, забанити й викинути особу з поточного каналу (потребує " +"прав оператора каналу)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, виконати перевірку сигналу" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <рядок>, шукати рядок у буфері" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <файл>, завантажити модуль або скрипт" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, видалити статус напівоператора з усіх користувачів в поточному " +"каналі (потребує прав оператора)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, видалити статус оператора з усіх користувачів каналу (потребує прав " +"оператора)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <дія>, надіслати подію до поточного каналу (події пишеться від третьої " +"особи,наприклад /me стрибає)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, викинути всіх окрім вас з поточного каналу (потребує прав оператора)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MDEOP, надати всім користувачам поточного каналу права оператора (потребує " +"прав оператора)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <нікнейм> <повідомлення>, надіслати особисте повідомлення" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, вивести список усіх користувачів поточного каналу" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <нікнейм> <повідомлення>, надіслати CTCP повідомлення" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <назва вузла> [<порт>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <нікнейм>, змінити нікнейм" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <нікнейм/канал> <повідомлення>, надіслати сповіщення. Сповіщення - це " +"тип повідомлень, на які слід автоматично реагувати" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n мережа1[,мережа2,...]] [<нікнейм>], вивести список сповіщень або " +"додати до нього когось" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" +"OP <нікнейм>, надати вказаній особі права оператора каналу (потребує прав " +"оператора)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<канал>] [<привід>], вийти з каналу, типово - з поточного каналу" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <нікнейм | канал>, CTCP-пінг особи або каналу" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "" +"QUERY [-nofocus] <нікнейм>, відкрити нове вікно приватних повідомлень до " +"вказаної особи" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<підстава>], від'єднатися від поточного сервера" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <текст>, надіслати текст у необробленій формі до сервера" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT·[-ssl] [<вузол>] [<порт>] [<пароль>], може бути викликано просто " +"як/RECONNECT, щоб переприєднатися до поточного сервера або /RECONNECT ALL, " +"щоб переприєднатися до усіх відкритих серверів" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<вузол>] [<порт>] [<пароль>], може бути викликано просто як/" +"RECONNECT, щоб переприєднатися до поточного сервера або /RECONNECT ALL, " +"переприєднатися до усіх відкритих серверів" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <текст>, надіслати дані в необробленому форматі до xchat, як " +"відправлені з irc сервера" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <текст>, надіслати текст до об'єкта в поточному вікні" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <нікнейм> [<файл>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <вузол> <порт> <канал>, встановити з'єднання з сервером та " +"зайти до каналу" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN <вузол> <порт> <канал>, встановити з'єднання з сервером та зайти до " +"каналу" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <вузол> [<порт>] [<пароль>], встановити з'єднання із сервером. " +"Типовий порт для звичайних з'єднань 6667, 9999 - для ssl з'єднань" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <вузол> [<порт>] [<пароль>], під'єднатися до сервера, типовий порт " +"6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <змінна> [<значення>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<позиція>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<тема>], встановити тему, якщо вона вказана. У іншому випадку " +"відображає поточну тему" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" +"\n" +"TRAY -f <таймаут> <файл1> [<файл2>] Почерговий показ двох значків у області " +"сповіщення.\n" +"TRAY -f <назвафайлу> Постійний значок у області сповіщення.\n" +"TRAY -i <число> Миготіння внутрішнього значка у області " +"сповіщення.\n" +"TRAY -t <текст> Встановити підказку у області " +"сповіщення.\n" +"TRAY -b <заголовок> <текст> Встановити спливаючу підказку у області " +"сповіщення." + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "" +"UNBAN <маска> [<маска>...], скасувати заборону доступу до каналу всім, хто " +"відповідає масці." + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "" +"UNIGNORE <маска> [QUIET] - скасувати ігнорування повідомлень з певною маскою" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <назва>, вивантажити модуль або скрипт" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, відкрити URL у веб-переглядачі" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <нікнейм1> <нікнейм2> тощо, підсвічує нікнейми у списку " +"користувачів каналу" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "" +"VOICE <нікнейм>, надати право голосу особі (потребує прав оператора каналу)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <повідомлення>, надіслати повідомлення до всіх каналів" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <повідомлення>, надіслати повідомлення до усіх операторів на " +"поточному каналі" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Використання: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"Немає довідки для цієї команди.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Такої команди не існує.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Неправильні аргументи команди користувача.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Надто багато рекурсивних команд користувача, зупиняємо." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Невідома команда. Спробуйте /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "На знайдено символ xchat_plugin_init; це дійсно модуль xchat?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Ви впевнені це що сумісний з SSL сервер?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Неможливо визначити назву вузла %s\n" +"Перевірте параметри мережі!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Не вдалося зв'язатися через проксі.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Перемикання на наступний сервер %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" +"Попередження: невідоме кодування \"%s\". Перекодування для мережі %s не " +"відбуватиметься." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 доданий у список сповіщень." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 список забанених:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tНе вдалося зайти%C26 %B$1 %O(Вас забанено)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 тепер називається $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 встановив бан на $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tКанал $1 створений у $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O видалив права напівоператора у %C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O видалив права оператора каналу у %C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O забрав голос у %C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 встановив звільнення на $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O надав права напівоператора %C26 $2" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 запрошує на $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UКанал Користувачі Тема" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 встановив режим $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Канал $1 режими: $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O надав права оператора каналу %C26 $2" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 забрав звільнення у $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 зняв запрошення до $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 прибрав ключові слова каналу" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 зняв обмеження користувачів" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 встановив ключові слова каналу: $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 встановив ліміт каналу у $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 зняв бан з $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O надав голос %C26 $2" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22З'єднання встановлено. Вхід у мережу.." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22З'єднання з $1 ($2) порт $3%O.." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%CЗ'єднання неможливе. Помилка: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tОтримано CTCP $1 від $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tОтримано CTCP $1 від $2 (для $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tОтримано CTCP звук $1 від $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tОтримано звук CTCP $1 від $2 (для $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tDCC CHAT з %C26$1%O перервано." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC CHAT з'єднання встановлено з %C26$1 %C30[%O$2%C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tDCC CHAT з %C26$1%O розірвано. ($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tОтримано запит на DCC CHAT від $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tПропонується DCC CHAT з $1" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tВже запропоновано CHAT з $1" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$tDCC $1 спроба з'єднання з %C26 $2%O невдала (помилка=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tОтримано '$1%O' від $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 Тип Кому/Від кого Статус Розмір Позиція Файл " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O.%010%C22*%O" +"$tContents of packet: $2" +msgstr "" +"%C22*%O$tОтримано неправильний DCC запит від %C26$1%O.%010%C22*%O$tВміст " +"пакета: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tПропонується%C26 $1 для%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tНемає такої DCC пропозиції." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC RECV %C26$2%O для %C26$1%O перервано." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC RECV%C26 $1%O від%C26 $3%O завершено %C30[%C26$4%O б/с%C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC RECV з'єднання встановлено з%C26 $1 %C30[%O$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tDCC RECV%C26 $1%O від%C26 $3%O - помилка. ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV: Не вдалося відкрити $1 для запису ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "%C22*%O$tФайл%C26 $1%C вже існує, натомість зберігається як%C26 $2%O." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Oзапит на продовження розмови%C26 $2%C від%C26 $3%C." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tDCC SEND %C26$2%O до %C26$1%O перервано." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tDCC SEND %C26$1%O до %C26$2%O завершено %C30[%C26$3%O б/с%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tDCC SEND з'єднання встановлено з %C26$1 %C30[%O$2%C30]" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tDCC SEND %C26$1%O до %C26$2%O - помилка. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Oзапропоновано%C26 $2 %O(%C26$3 %OCбайт)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cзупинилось - переривання." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Oдо %C26$3 %Oвийшов час - переривання." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 видалено зі списку сповіщення." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tЗ'єднання розірвано ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tЗнайдено ваш IP: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O додано до списку ігнорованих." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "Ігнорування %C26$1%O змінено." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 маска вузлів PRIV NOTI CHAN CTCP DCC INVI UNIG" + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O видалений зі списку ігнорування." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " Список ігнорованих порожній." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "%C22*%O$tНе вдалося зайти%C26 %B$1 %O(Канал лише для запрошених)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tОтримано запрошення на%C26 $1%O від%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) зайшов на канал $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$tНе вдалося зайти%C26 %B$1 %O(Потрібне ключове слово)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 викинув $2 з $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$tвикинув вас з каналу $1 ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD пропущено." + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 вже використовується. Повторна спроба з $2.." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$tНікнейм вже використовується. Скористайтеся /NICK щоб спробувати " +"інше." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tНемає такого DCC." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tНемає запущених процесів" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tСписок сповіщень порожній." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Список сповіщень " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 користувачів у списку сповіщень." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tСповіщення: $1 від'єднаний ($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tСповіщення: $1 під'єднаний ($3)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) залишив $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) залишив $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tPing відповідь від $1 : $2 сек." + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tНе отримано відповідей протягом $1 сек., від'єднання." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tПроцес вже запущений" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 вийшов (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 встановив режими%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tПошук IP-адреси для%C26 $1%O.." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22З'єднання встановлено." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22Триває пошук $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tЗупинена попередня спроба з'єднання (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29Тема для $1%C: %C26$2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 змінив тему на: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29Тема для $1%C %C29встановлена $2%C %C29у $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tНевідомий вузол. Можливо ви помилились?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "" +"%C22*%O$tНе вдалося зайти на%C26 %B$1 %O(Вичерпано ліміт користувачів)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Користувачі на $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cнедоступний %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OКінець списку WHOIS." + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O бездіяльний %C26$2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O бездіяльний %C26$2%O, зайшов: %C26$3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" +"%C22*%O$t%C28[%O$1%C28] %Oсправжній користувач@вузол %C27$2%O, справжній IP %" +"C27$3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Ви зараз спілкуєтесь на $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$t$3 викинув вас із каналу $2 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tВи залишили канал $3" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tВи залишили канал $3 $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tВи запрошуєте%C26 $1%O до%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tТепер ви відомі як $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "Завантажено журнал з" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** ЗАКІНЧУЄТЬСЯ ВХІД НА %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** ПОЧАТОК ВХОДУ НА %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Не вдалося відкрити файл(и) для запису. Перевірте\n" +" права на %s/xchatlogs" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Повідомлення зліва" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Повідомлення справа" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "Нікнейм особи, що підключається" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "Підключено до каналу" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "Хостнейм користувача" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Нікнейм" + +#: src/common/text.c:973 +msgid "The action" +msgstr "Дія" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Символ режиму" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Виділений текст" + +#: src/common/text.c:980 +msgid "The text" +msgstr "Текст" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Повідомлення" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Старий нікнейм" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Новий нікнейм" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Нікнейм персони, що змінила тему" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Тема" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Канал" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "Нікнейм особи, що викинула з каналу" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "Особа, яку було відключено" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "Канал" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "Підстава" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "Нікнейм особи, що залишає канал" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "Час" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "Засновник" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Нікнейм" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Підстава" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Комп'ютер" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "Звідки" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "Час у форматі x.x (дивіться нижче)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "Перелік каналів..." + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "Звук" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "Нікнейм особи" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "CTCP подія" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "Нікнейм особи, що встановила ключ" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "Ключ" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "Нікнейм особи, що встановила обмеження" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "Обмеження" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "Нікнейм особи, що встановила оператора" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "Нікнейм особи, що отримала оператора" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "Нікнейм особи, що отримала напівоператора" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "Нікнейм особи, що встановила напівоператора" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "Нікнейм особи, що встановила голосу" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "Нікнейм особи, якій було встановлено стан голосу" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "Нікнейм особи, що ввела бан" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "Маска бану" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "Нікнейм особи, що видалила ключ" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "Нікнейм особи, що видалила обмеження" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "Нікнейм особи, що зняла оператора" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "Нікнейм особи, з якої знято оператора" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "Нікнейм особи, що зняла напівоператора" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Нікнейм особи, з якої знято напівоператора" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "Нікнейм особи, яка забрала 'голос'" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "Нікнейм особи, з якої було знято 'голос'" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "Нікнейм особи, що зняла бан" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "Нікнейм особи, що додала виключення" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "Маска виключення" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "Нікнейм особи, що зняла виключення" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "Нікнейм особи, що зробила запрошення" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "Маска запрошення" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "Нікнейм особи, що скасувала запрошення" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "Нікнейм особи, що встановила режим" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "Знак режиму (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "Буква режиму" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "Канал встановлено" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Username" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Повне ім'я " + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Член каналу/\"є оператором IRC\"" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Інформація про сервер" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Час простою" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Час входу" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Причина відсутності" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Повідомлення" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Обліковий запис" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "Справжній_користувач@хост" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "Реальний IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Назва каналу" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Текст" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Назва серверу" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Нікнейм особи, що запрошує" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Користувачі" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Нікнейм використовується" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Пробуємо нікнейм" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Порт" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Мережа" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Рядок режимів" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "IP адреса" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "Тип DCC" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Назва файлу" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Назва файлу призначення" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Шлях" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Позиція" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Розмір" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "DCC Рядок" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Кількість сповіщень" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Стара назва файлу" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Нова назва файлу" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Отримувач" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Маска хосту" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Хостнейм" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "Пакет" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Секунди" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Нікнейм запрошеної особи" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Маска бану" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Особа, що встановила бан" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Час дії бану" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Помилка аналізу події %s.\n" +"Завантажується типова." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"Не вдалося прочитати звуковий файл:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "Віддалений вузол закрив сокет" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Відмовлено у з'єднанні" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Не знайдено шлях до вузла" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Таймаут з'єднання" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Не вдалося призначити цю адресу" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "З'єднання обірване" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Острів Сходження" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Андорра" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Об'єднані Арабські Емірати" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "Афганістан" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Антігуа та Барбуда" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Ангуілла" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "Албанія" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Вірменія" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "Нідерланди" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Ангола" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Антарктида" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Аргентина" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "Зворотній DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Американське Самоа" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Австрія" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "Нато Фейл" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Австралія" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "Аруба" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Аланд о-ви" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Азербайджан" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Боснія та Герцеговина" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Барбадос" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Бангладеш" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Бельгія" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Буркіна-Фасо" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Болгарія" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Бахрейн" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Бурунді" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Бізнесова адреса" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Бенін" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Бермуди" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Бруней" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Болівія" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Бразилія" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Багами" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Бутан" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Острови Буве" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Ботсвана" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Білорусія" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Беліз" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Канада" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Кокосові о-ви" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "Демократична Республіка Конго" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "Центрально-Африканська Республіка" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Конго" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Швейцарія" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Кот'Д'Івуар" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Острови Кука" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Чилі" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Камерун" + +#: src/common/util.c:898 +msgid "China" +msgstr "Китай" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Колумбія" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Комерційні адреси" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Коста-Ріка" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Сербія та Чорногорія" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Куба" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Капе Верде" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Різдвяні острови" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Кіпр" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "Чеська республіка" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Німеччина" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Джибуті" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Данія" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Домініка" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "Домініканська Республіка" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "Алжир" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Еквадор" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Освітні заклади" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "Естонія" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Єгипет" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Західна Сахара" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Еритрея" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Іспанія" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Ефіопія" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Європейський союз" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Фінляндія" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Фіджі" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Фолклендські о-ви" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Мікронезія" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "О-ви Фарое" + +#: src/common/util.c:928 +msgid "France" +msgstr "Франція" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Габон" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Велика Британія" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Гренада" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Грузія" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Французька Гвіана" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Британські о-ви" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Гана" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Ґібралтар" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Гренландія" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Гамбія" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Гвінея" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Уряд" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Гваделупа" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Екваторіальна Гвінея" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Греція" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "S. Georgia та S. Sandwich Isles." + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Гватемала" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Гуам" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Гвінея-Біссау" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Гаяна" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Гонг Конг" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Heard and McDonald Islands" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Гондурас" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Хорватія" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Гаїті" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Угорщина" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Індонезія" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Ірландія" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Ізраїль" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Острів Мен" + +#: src/common/util.c:959 +msgid "India" +msgstr "Індія" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Інформаційні" + +#: src/common/util.c:961 +msgid "International" +msgstr "Міжнародні" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Британська Тихоокеанська Територія" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "Ірак" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "Іран" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Ісландія" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Італія" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Джерсі" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Ямайка" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Йорданія" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Японія" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Кенія" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Киргизстан" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Камбоджі" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Кірібаті" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Коморос" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "St. Kitts and Nevis" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Північна Корея" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Південна Корея" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Кувейт" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Кайманові о-ви" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Казахстан" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Лаос" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Ліван" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Свята Лучія" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Ліхтенштейн" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Шрі Ланка" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Ліберія" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Лесото" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Литва" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Люксембург" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Латвія" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Лівія" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Марокко" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Монако" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Молдова" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "Мед.заклади США" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Мадагаскар" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Маршалові острови" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Військові" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Македонія" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Малі" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "М'янма" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Монголія" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Макао" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Північні Маріанські Острови" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Мартініка" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Мавританія" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Монсерат" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Мальта" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Маврикій" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Мальдіви" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Малаві" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Мексика" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Малайзія" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Мозамбік" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Намібія" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Нова Каледонія" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Нігер" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Мережі" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Норфолкські о-ви" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Нігерія" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Нікарагуа" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Нідерланди" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Норвегія" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Непал" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Науру" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Ніуе" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Нова Зеландія" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Оман" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Мережні некомерційні організації" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Панама" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Перу" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Французька Полінезія" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Папуа Нова Гвінея" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Філіппіни" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Пакистан" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Польща" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "St. Pierre and Miquelon" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Піткерн" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Пуерто Ріко" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Палестинська Територія" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Португалія" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Палау" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Парагвай" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Катар" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Реунйон" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Румунія" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "Стара мережа ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Росія" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Руанда" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "Саудівська Аравія" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Соломонові острови" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Сейшельські острови" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Судан" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Швеція" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Сінгапур" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "Св. Олена" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Словенія" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Svalbard and Jan Mayen Islands" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Словацька Республіка" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Сієра Леоне" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "Сан Маріно" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Сенегал" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Сомалі" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Суринам" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "Сен-Томе та Прінсіпі" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Колишній СРСР" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "Сальвадор" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Сирія" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Свазіленд" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "о-ви Тьорск та Кайкос" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Чад" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Французькі Південні Території" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Того" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Таїланд" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Таджикистан" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "о-ви Токелау" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Східний Тимор" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Туркменістан" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Туніс" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Тонга" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Туреччина" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Тринідад та Тобаго" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Тувалу" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Тайвань" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Танзанія" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "Україна" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "Уганда" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Сполучене королівство" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "США" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "Уругвай" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "Узбекистан" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Ватикан" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "Сент-Вінсент та Гренадини" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Венесуела" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Британські Віржинські острови" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "Американські Віржинські острови" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "В'єтнам" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Вануату" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "о-ви Валліс та Футуна" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Самоа" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Ємен" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "Майотт" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Югославія" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Південна Африка" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Замбія" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Зімбабве" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Невідомий" + +#: src/common/xchat.c:726 +msgid "_Open Dialog Window" +msgstr "_Відкрити діалогове вікно" + +#: src/common/xchat.c:727 +msgid "_Send a File" +msgstr "_Надіслати файл" + +#: src/common/xchat.c:728 +msgid "_User Info (WhoIs)" +msgstr "_Хто це (WhoIs)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "_Додати до Списку друзів" + +#: src/common/xchat.c:730 +msgid "O_perator Actions" +msgstr "Дії _оператора" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Надати оператора" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Відібрати оператора" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Надати голос" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Відібрати голос" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Викинути/Забанити" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Викинути" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Забанити" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "Викинути+Забанити" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Залишити канал" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Зайти на канал" + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Введіть канал для входу:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Посилання сервера" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Ping-увати сервер" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Приховувати версію" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "Оператор" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "Скасувати Опер." + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "бувайте" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Введіть підставу для викидання %s:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Надіслати файл" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Діалог" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Надіслати" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Розмова" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Очистити" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "Не вдалося з'єднатись з шиною сеансу" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "Не вдалося завершити команду NameHasOwner" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "Не вдалося завершити команду" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "віддалений доступ" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "модуль для віддаленого доступу DBUS" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Не вдалося зв'язатись з шиною сеансів: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Не вдалося здобути %s: %s\n" + +#: src/fe-gtk/about.c:100 +msgid "About " +msgstr "_Про програму" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Багатоплатформний IRC клієнт" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Палітра символів" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "Немає з'єднання." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Необхідно вибрати деякі бани." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "Ви дійсно бажаєте зняти всі бани в %s?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Маска" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "Від" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Дата" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Можете відкрити лише вікно Список банів у вкладці каналу." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "X-Chat: Список банів (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Видалити" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Стиснути" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Оновити" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Відображається %d/%d користувачів на %d/%d каналах" + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Виберіть назву файлу для запису" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "За_йти на канал" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "_Копіювати назву каналу" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "Копіювати _текст теми" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: Список каналів (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "З_найти" + +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "_Список завантажень" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "Зберегти _список..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "Відображати лише:" + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "канали з" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "до" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "користувачів." + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "Шукати у:" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "Назві каналу" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "Тип пошуку:" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "Простий пошук" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "Відповідність шаблону" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "Регулярний вираз" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Знайти:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Надіслати файл до %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Файл неможливо продовжити." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"Немає доступу до файлу: %s\n" +"%s.\n" +"Продовження неможливе." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"Файл у каталозі завантажень більше ніж запитаний. Продовження неможливе." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "Не можна продовжувати однаковий файл від 2-х користувачів." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: Завантаження та відвантаження" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Статус" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Файл" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "Залишилось" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "обидва" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Відвантаження" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "Завантаження" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Подробиці" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Файл:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "Адреса:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Перервати" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Прийняти" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Продовжити" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Відкрити теку..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: список розмов по DCC" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Прийн" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Відпр" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "Час початку" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*НОВИЙ*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "ВІДРЕДАГУЙ МЕНЕ" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Назва" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Команда" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Вгору" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Вниз" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Скасувати" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Зберегти" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Додати" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Видалити" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Сортувати" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Довідка" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "Не з'єднуватись з сервером автоматично" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "Використовується інший конфігураційний каталог" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "Не завантажувати автоматично модулі" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "Показувати каталог автозавантаження модулів" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "Показувати каталог конфігураційних файлів" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Відкрити irc://server:port/channel URL" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Виконати команду:" + +#: src/fe-gtk/fe-gtk.c:132 +msgid "Open URL or execute command in an existing XChat" +msgstr "Відкрити URL чи виконати команду в існуючому XChat" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Стартувати мінімізованим. Рівні 0-Нормальний 1=Іконка 2=Трей" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "рівень" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Вивести інформацію про версію" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"Не вдалося відкрити шрифт:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "Буфер пошуку порожній.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d байт" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Черга надсилання у мережу: %d байтів" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"Дія Виконати команду виконує Дані 1 як команду, ніби її було введено в полі " +"вводу, в якому було натиснуто послідовність клавіш. Може містити текст (який " +"буде надіслано до каналу/особи), команди або команди користувача. Символи " +"\\n в Дані 1 використовуються для відокремлення команд, таким чином можливо " +"надсилати більш ніж одну команду. Якщо бажаєте ввести \\ в тексті команди, " +"напишіть \\\\" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"Команда Змінити сторінку перемикає між сторінками в записнику. Встановіть " +"Дані 1 рівним номеру сторінки до якої бажаєте перемикнутися. Якщо Дані 2 має " +"якесь значення, перемикання буде здійснюватись відносно поточної позиції." + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"Команда Вставити в буфер вставить вміст Дані 1 в поле, в якому була " +"натиснута комбінація клавіш, в поточну позицію курсору" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"Команда Прокрутка сторінки прокручує текстовий віджет на одну сторінку вгору " +"або вниз. Задайте значення +1 або -1, щоб сторінку прокручувало вгору або " +"вниз." + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"Команда Встановити буфер Встановлює значення поля, в якому було натиснуто " +"комбінацію клавіш в значення Дані 1" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"Команда Остання команда встановлює значення в полі рівним останній введеній " +"команді - теж саме, що натискання клавіші стрілки вгору в командній оболонці" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"Команда Наступна команда встановлює значення в полі рівним наступній команді " +"- теж саме, що натискання клавіші стрілки вниз у командній оболонці" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Ця команда замінює текст в полі вводу для завершення незакінченого нікнейму " +"або команди. Якщо Data 1 встановлено, подвійне натискання клавіші табуляції " +"вибере не наступний, а останній нікнейм" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Команда прокручує список користувачів вгору або вниз. Якщо Data 1 " +"встановлено - буде прокручено вгору, інакше - вниз" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Команда перевіряє останнє введене слово в списку заміщень та замінює у разі " +"знаходження відповідності" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Команда переміщує передню вкладку на одну позицію ліворуч" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Команда переміщує передню вкладку на одну позицію праворуч" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Команда переміщує поточну вкладку на одну позицію ліворуч" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Команда переміщує поточну вкладку на одну позицію ліворуч" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "Помістити введений рядок в історію, але не надсилати до сервера" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "Помилка під час завантаження конфігурації комбінацій клавіш" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<немає>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Мод" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Клавіша" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Дія" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: Комбінації клавіш" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Дані 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Дані 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Помилка при відкриванні файлу конфігурації клавіш\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Невідома назва клавіші %s в конфігураційному файлі комбінацій клавіш\n" +"Завантаження перервано, виправте %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Невідома дія %s в конфігураційному файлі комбінацій клавіш\n" +"Завантаження перервано, виправте %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Очікувався рядок даних (початок Dx{:|!}) але отримано:\n" +"%s\n" +"\n" +"Завантаження перервано, виправте %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"Конфігураційний файл комбінацій клавіш пошкоджений, завантаження перервано\n" +"Спробуйте виправити %s/keybindings.conf\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "Не вдалося записати в цей файл." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Не вдалося прочитати цей файл." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Така маска вже існує." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Приватний" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Зауваження" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Запрошувати" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Не ігнорувати" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Введіть маску для ігнорування:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: список ігнорувань" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Стан ігнорування:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Канал:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Приватний:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Зауваження:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Запросити:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "Додати..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "Назва каналу надто коротка, спробуйте ще раз." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: з'єднання завершено" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "З'єднання з %s завершено." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"У вікні Список серверів, для цієї мережі не визначено канали (кімнати для " +"розмов) для автоматичного входу." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "Що бажаєте зробити далі?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "_Нічого, я сам зайду на канал." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "_Зайти на канал:" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Введіть назву каналу, на який треба зайти, якщо ви її знаєте." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "_Відкрити вікно Списоку каналів." + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "Отримання списку каналів може зайняти хвилину чи дві." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "_Завжди показувати це вікно після з'єднання." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Діалог" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Тема для %s: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Не встановлено тему" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "На цьому сервері досі відкриті %d каналів чи діалогів. Закрити їх?" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "Залишити XChat?" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "Не питати наступного разу." + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Ви підключені до %i IRC мереж." + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "Ви дійсно бажаєте вийти?" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "Деякі файли все ще завантажуються." + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "_Мінімізуватися в трей" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Вставити атрибут або код кольору" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Жирний</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Підкреслений</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Звичайний" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Кольори 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Кольори 8-15" + +#: src/fe-gtk/maingui.c:1612 +msgid "_Settings" +msgstr "П_араметри" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "Писати _журнал" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "_Перечитувати прокрутку" + +#: src/fe-gtk/maingui.c:1617 +msgid "_Hide Join/Part Messages" +msgstr "_Сховати повідомлення входу/виходу" + +#: src/fe-gtk/maingui.c:1625 +msgid "_Extra Alerts" +msgstr "_Додаткові сигнали" + +#: src/fe-gtk/maingui.c:1627 +msgid "Beep on _Message" +msgstr "Звукове сповіщення про повідомлення" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "Блимати у треї" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "Блимати на панелі" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +msgid "_Detach" +msgstr "_Відокремити" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "_Закрити" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "Обмеження користувачів має бути числом!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Захист теми" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Без зовнішніх повідомлень" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Таємний" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Лише запрошені" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Модерований" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Список банів" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Ключове слово" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Обмеження користувачів" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Показати/Сховати список користувачів" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"Не вдалося встановити прозоре тло!\n" +"\n" +"Можливо, ви використовуєте несумісний віконний\n" +"менеджер, який не підтримує таку можливість.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Введіть новий нікнейм:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Невідомий вузол" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Справжнє ім'я:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Користувач:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "Країна:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Сервер:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "%u хвилин тому" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Останнє повідомлення:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Повідомл.про відсутність:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "%d ніків вибрано." + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"Панель меню прихована. Ви можете знову вивести її натискаючи F9 або " +"клацнувши у правій нижній частині головної текстової області." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Відкрити посилання у веб-переглядачі" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Копіювати виділене посилання" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Зайти на канал" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Залишити канал" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Канали по колу" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "_Видалити з улюблених" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "_Додати до улюблених" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: Меню користувача" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Редагувати меню..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Отримання списку каналів..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Команди користувача - Спеціальні коди:\n" +"\n" +"%c = поточний канал\n" +"%e = назва поточної мережі\n" +"%m = інформація про машину\n" +"%n = ваш нікнейм\n" +"%t = час/дата\n" +"%v = версія xchat\n" +"%2 = слово 2\n" +"%3 = слово 3\n" +"&2 = від слова 2 до кінця рядку\n" +"&3 = від слова 3 до кінця рядку\n" +"\n" +"Наприклад:\n" +"/cmd john hello\n" +"\n" +"%2 буде \"john\"\n" +"&2 буде \"john hello\"." + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Кнопки списку користувачів - Спеціальні коди:\n" +"\n" +"%a = всі вибрані нікнейми\n" +"%c = поточний канал\n" +"%e = назва поточної мережі\n" +"%h = назва вузла вибраної особи\n" +"%m = інформація про машину\n" +"%n = ваш нікнейм\n" +"%s = вибраний нікнейм\n" +"%t = час/дата\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Кнопки діалогу - Спеціальні коди:\n" +"\n" +"%a = всі вибрані нікнейми\n" +"%c = поточний канал\n" +"%e = назва поточної мережі\n" +"%h = назва вузла вибраної особи\n" +"%m = інформація про машину\n" +"%n = ваш нікнейм\n" +"%s = вибраний нікнейм\n" +"%t = час/дата\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"Відповіді CTCP - Спеціальні коди:\n" +"\n" +"%d = дані (повний ctcp)\n" +"%m = інформація про машину\n" +"%e = назва поточної мережі\n" +"%s = нікнейм відправника ctcp\n" +"%t = час/дата\n" +"%2 = слово 2\n" +"%3 = слово 3\n" +"&2 = від слова 2 до кінця рядку\n" +"&3 = від слова 3 до кінця рядку\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"Обробка URL посилань - Спеціальні коди:\n" +"\n" +"%s = рядок URL\n" +"\n" +"Додавання ! перед командою\n" +"вказує, що команда надсилатиметься\n" +"до командної оболонки замість XChat" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: Визначені користувачем команди" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: Контекстне меню списку користувачів" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Замінити на" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "X-Chat: Заміни" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: Обробка URL посилань" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: Кнопки списку користувачів" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: Діалогові кнопки" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: Відповіді CTCP" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "С_писок мереж..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "_Створити" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Вкладку сервера.." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Вкладку каналу..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Вікно серверу..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Вікно каналу..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "_Завантажити модуль або скрипт..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "Ви_йти" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "_Вигляд" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "Панель _меню" + +#: src/fe-gtk/menu.c:1592 +msgid "_Topic Bar" +msgstr "Панель _теми" + +#: src/fe-gtk/menu.c:1593 +msgid "_User List" +msgstr "Список користувачів" + +#: src/fe-gtk/menu.c:1594 +msgid "U_serlist Buttons" +msgstr "Кнопки списку _користувачів" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "Кнопки _режиму" + +#: src/fe-gtk/menu.c:1597 +msgid "_Channel Switcher" +msgstr "Перемикач _каналів" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "_Вкладки" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "Д_ерево" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "Мережні _лічильники" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "вимкнено" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "графічний" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "_Сервер" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "_Роз'єднати" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "_Переприєднати" + +#: src/fe-gtk/menu.c:1613 +msgid "Join a Channel..." +msgstr "Зайти на канал..." + +#: src/fe-gtk/menu.c:1614 +msgid "List of Channels..." +msgstr "Список каналів..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Відмітити як \"Відсутній\"" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "_Меню користувача" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "П_араметри" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "_Параметри" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Додатково" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Автозаміна..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "CTCP Відповіді..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Кнопки діалогів..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Комбінації клавіш..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Тексти подій..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "Обробники URL..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Команди користувача..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Кнопки списку користувачів..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Меню списку користувачів..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_Вікно" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Список банів..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Палітра символів..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Прямі розмови(DCC).." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Передача файлів..." + +#: src/fe-gtk/menu.c:1641 +msgid "Friends List..." +msgstr "Список друзів..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Список ігнорувань..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Модулі та скрипти..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Журнал подій..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "Захоплювач URL..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Скинути маркер" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "О_чистити текст" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Знайти текст..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Зберегти текст..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "_Довідка" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "_Зміст" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "Перевірити оновлення" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "_Про програму" + +#: src/fe-gtk/menu.c:2147 +msgid "_Attach" +msgstr "_Приєднати" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Бачили востаннє" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Відключений" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Ніколи" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "%d хвилин тому" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Підключений" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Введіть нікнейм:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "Сповіщати в таких мережах:" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "Список допустимих мереж (елементи розділяються комами)." + +#: src/fe-gtk/notifygui.c:413 +msgid "XChat: Friends List" +msgstr "XChat: Список друзів" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "Відкрити діалогове вікно" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" +"Не вдалося знайти 'notify-send' щоб відправляти\n" +"плаваючі повідомлення. Перевірте, чи всі компоненти\n" +"libnotify на місці." + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "XChat: З'єднання з %u мережами та %u каналами" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "_Відновити" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "С_ховати" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "_Блимати на" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "Повідомлення каналу" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "Приватне повідомлення" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "Виділене повідомлення" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "_Змінити статус" + +#: src/fe-gtk/plugin-tray.c:602 +msgid "_Away" +msgstr "_Немає" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "_Назад" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat: Виділені повідомлення від: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat: %u виділених повідомлень, останнє від: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat: Нове публічне повідомлення від: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat: %u нових публічних повідомленнь." + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat: Приватне повідомлення від: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "XChat: %u приватних повідомленнь, останнє від: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat: Передача файлу від: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "XChat: %u передач файлів, остання від: %s (%s)" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Версія" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Опис" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Виберіть модуль або скрипт для завантаження" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: модулі та скрипти" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "З_авантажити" + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "_Вивантажити" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Зберегти як..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: Журнал подій (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Очистити журнал" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "Відкрите вам вікно пошуку вже не існує." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "Пошук досяг кінця, нічого не знайдено." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: Пошук" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "Враховувати _регістр" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "У _зворотньому напрямку" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "З_найти" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Нова мережа" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Дійсно видалити мережу \"%s\" та усі її сервери?" + +#: src/fe-gtk/servlistgui.c:740 +msgid "#channel" +msgstr "#канал" + +#: src/fe-gtk/servlistgui.c:850 +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: Улюблениі канали (список для автоматичного заходу)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "Заходити на ці канали, коли ви підключитесь до %s." + +#: src/fe-gtk/servlistgui.c:906 +msgid "Key (Password)" +msgstr "Ключ (пароль)" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "_Правка" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "%s видалено." + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "%s додано." + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "" +"Ім'я користувача та справжнє ім'я користувача не пожуть бути порожніми." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: Редагування %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Сервер: %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "З'єднатись лише з виділеним сервером" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Не змінювати циклічно сервер при помилках з'єднання." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Подробиці про вас" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Використовувати глобальну інформацію" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "П_різвисько:" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Другий вибір:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "_Ім'я користувача:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "_Справжнє ім'я:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "З'єднання" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Автоматично з'єднуватись при старті" + +#: src/fe-gtk/servlistgui.c:1462 +msgid "Bypass proxy server" +msgstr "В обхід проксі серверу" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "Використовувати SSL для всіх серверів у цій мережі" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Приймати неправильні сертифікати SSL" + +#: src/fe-gtk/servlistgui.c:1475 +msgid "_Favorite channels:" +msgstr "_Улюблені канали:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "Канали для з'єднання, відокремлені комами, але не пробілами!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Команда з'єднання:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Додаткова команда, яку слід виконати після під'ключення. Якщо потрібно " +"декілька команд, напишіть LOAD -e <назва файлу>, де <назва файлу> - це " +"текстовий файл з командами для виконання." + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Пароль для NickServ:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Якщо нікнейм вимагає пароль, введіть його тут. Це підтримують не усі мережі " +"IRC." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Пароль сервера:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Пароль сервера, залиште порожнім, якщо сумніваєтесь." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Набір символів:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: Список мереж" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Інформація про користувача" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Третій вибір:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Мережі" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "Не показувати список мереж при старті" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "_Правка..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "С_ортувати" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" +"Сотрувати список мереж у алфавітному порядку. Для переміщення рядка " +"користуйтесь клавішами SHIFT-UP та SHIFT-DOWN." + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "Під'_єднатися" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Зовнішній вигляд текстового поля" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Шрифт:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Зображення тла:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Кількість ліній прокрутки:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Виділяти нікнейми кольором" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Надати кожній особі в IRC інший колір" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Нікнейми з відступом" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Вирівнювання нікнеймів справа" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Прозоре тло" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Показувати маркер" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Вставляє червоний рядок після останнього прочитаного тексту." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Параметри прозорості" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Червоний" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Зелений:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Синій:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Відображати час" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Вносити час події в журнал" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Формат відображення часу:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Докладнішу інформацію дивіться у довідці з strftime." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "Порядок \"останній хто говорив\"" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Поле вводу" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Шрифт та кольори як в текстовому блоці" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Перевірка орфографії" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Доповнення ніків:" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "Автоматичне доповнення прізвиськ (без клавіші TAB)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Суфікс доповнення нікнейму:" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "Сортування доповнення нікнейму:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Коди у полі вводу" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Інтерпретувати %nnn як значення ASCII" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Інтерпретувати %C, %B як колір, жирний тощо" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, оператори спочатку" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, оператори наприкінці" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "без сортування" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "Зліва (вгорі)" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "Зліва (внизу)" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "Справа (вгорі)" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "Справа (внизу)" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "вгорі" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "внизу" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "приховані" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Список користувачів" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "Показувати назви вузлів у списку користувачів" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Сортування списку користувачів:" + +#: src/fe-gtk/setup.c:205 +msgid "Show user list at:" +msgstr "Показувати список користувачів:" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Відслідковування статусу 'відсутній'" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "" +"Слідкувати за статусом користувачів Відійшов та позначати їх іншим кольором" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "На каналах менших за:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Реакція на подвійне клацання" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Вікнах" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Вкладках" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Завжди" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Лише зазначені вкладки" + +#: src/fe-gtk/setup.c:242 +msgid "Tree" +msgstr "Д_ерево" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "Тип перемикача:" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Відкривати вкладку для повідомлень сервера" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Відкривати вкладку для зауважень сервера" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "Відкривати вкладку при отриманні приватних повідомлень" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Сортувати вкладки за алфавітом" + +#: src/fe-gtk/setup.c:254 +msgid "Smaller text" +msgstr "Маленький текст" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Фокус на нові вкладки:" + +#: src/fe-gtk/setup.c:258 +msgid "Show channel switcher at:" +msgstr "Показати перемикач каналів:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Скорочувати вкладки до:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "симв." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Вкладках або вікнах" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Відкривати канали у:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Відкривати діалоги у:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Відкривати утиліти у:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Відкривати DCC, Ігнорування, Сповіщення, тощо у вкладках або вікнах?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "Ні" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Так" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "Вибирати теку збереження щоразу" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Файли та каталоги" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Автоматично приймати файли:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Завантажувати файли в:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Переміщувати завершені файли в:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Зберігати нікнейм в назвах файлів" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Параметри мережі" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Отримувати власну IP адресу з IRC сервера" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Виконайте команду /WHOIS для свого нікнейму, щоб визначити сою реальну " +"адресу. Використовуйте це, якщо ваша адреса 192.168.*.* !" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "IP адреса DCC:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Заявляти цю адресу при пропонуванні файлів." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Початковий порт DCC:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Заключний порт DCC:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!Залиште порти нульовими для повного діапазону." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Максимальна швидкість передачі файлів (байт на секунду)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Одне завантаження:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Максимальна швидкість для однієї передачі" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Одне скачування:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Всі завантаження:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Максимальна швидкість для усього трафіка" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Всі скачування:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Увага!" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "Показувати плаваючі повідомлення, коли:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "Блимати у треї, коли:" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "Блимати на панелі задач, коли:" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "Видавати звук 'beep', коли" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "Увімкнути значок у області сповіщення" + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "Підсвічені повідомлення" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Підсвічені повідомлення, це ті, де згадали ваш нікнейм, а також:" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "Реагувати також на слова:" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "Не підсвічувати нікнейми:" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "Завжди підсвічувати нікнейми:" + +#: src/fe-gtk/setup.c:347 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" +"Відокремлюйте слова комами.\n" +"Шаблони також приймаються." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Типові повідомлення" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Вихід:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Залишення каналу:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Відсутній:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Відсутній" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Оголошувати перехід у \"Відсутній\"" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Оголошувати перехід у \"Відсутній\" в усіх каналах" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Показувати \"Відсутній\" лише один раз" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Показувати ідентичні повідомлення лише один раз" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Автоматично знімати \"Відсутній\"" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Знімати стан \"Відсутній\" перед надсиланням повідомлень" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Розширені параметри" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Затримка автоматичного відновлення з'єднання:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Відображати режими в чистому вигляді" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "Whois при сповіщенні" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" +"Надсилати /WHOIS коли користувач з вашого списку сповіщень підключається." + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Приховувати сповіщення про вхід/вихід" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Приховувати типово повідомлення про вхід/вихід" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Автоматично відкривати діалогові вікна" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Вікно відсилання" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Вікно отримання" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Вікно каналу" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Журнали" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "Показувати останні повідомлення з попередньої бесіди" + +#: src/fe-gtk/setup.c:387 +msgid "Enable logging of conversations to disk" +msgstr "Увімкнути запис журналу повідомлень" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Файл журналу:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Сервер %c=Канал %n=Мережа." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Вносити час події в журнал" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Формат запису часу в журнал:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(вимкнено)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Усі з'єднання" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "Лише сервер IRC" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "Лише DCC" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "IP адреса" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Зачепитися на:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "Корисне, лише коли комп'ютер має декілька адрес." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Проксі сервер" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Назва вузла:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Порт:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Тип:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Використовувати проксі для:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Автентифікація проксі" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Використовувати аутентифікацію (лише MS Proxy, HTTP та Socks5)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Використовувати аутентифікацію (лише HTTP та Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Ім'я користувача:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Пароль:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Виберіть файл зображення" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "Виберіть теку для завантажень" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Вибір шрифту" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Вибрати..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Позначати ідентифікованих користувачів:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Позначати·не ідентифікованих·користувачів:" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "Відкрити теку даних" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Вибір кольору" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Кольори" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "Кольори mIRC:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Локальні кольори:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Передній план:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Тло:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Виділення тексту" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Інтерфейс" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Нові дані:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Маркер:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Нове повідомлення:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Користувач, що відсутній:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Підсвічення:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Подія" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Звуковий файл" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Виберіть звуковий файл" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Метод відтворення:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "Зовнішня _програма для відтворення звуку:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "З_овнішня програми" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_Автоматично" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "_Каталог звукових файлів:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Звуковий файл:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "В_ибрати..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "_Відтворити" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Інтерфейс" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Текст" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Список користувачів" + +#: src/fe-gtk/setup.c:1703 +msgid "Channel switcher" +msgstr "Перемикач каналів" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Кольори" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Розмови" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Загальне" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Звук" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Параметри мережі" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Передача файлів" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Категорії" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" +"Не можна розміщувати дерево вгорі чи внизу!\n" +"Спочатку змініть розташування пункту <b>Вкладки</b> у меню <b>Вигляд</b>." + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" +"Для набуття сили змін у деяких параметрах потрібно перезапустити програму." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*ПОПЕРЕДЖЕННЯ*\n" +"Автоматичне приймання DCC до вашої домашньої теки\n" +"може бути небезпечним. Наприклад:\n" +"хтось може надіслати вам .bash_profile" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: Параметри" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Помилка при аналізу рядку" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Цей сигнал приймає лише аргументи %d, аргумент $%d не підходить" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "Друкувати текстовий файл" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Правка подій" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ Число" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Завантажити з..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Перевірити всі" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: Захоплювач URL" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Очистити список" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Копіювати виділений текст" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Копіювати" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Записати список у файл." + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d операторів, %d всього" + +#~ msgid "About XChat" +#~ msgstr "Про XChat" + +#, fuzzy +#~ msgid "Set _back" +#~ msgstr "_Шукати назад" + +#~ msgid "C_hannels to join:" +#~ msgstr "_Канал для входу:" + +#, fuzzy +#~ msgid "Execute command" +#~ msgstr "Виконати команду:" + +#~ msgid "" +#~ "Set per channel options\n" +#~ "CHANOPT CONFMODE ON|OFF - Toggle conf mode/showing of join and part " +#~ "messages\n" +#~ "CHANOPT COLORPASTE ON|OFF - Toggle color paste\n" +#~ "CHANOPT BEEP ON|OFF - Toggle beep on message\n" +#~ "CHANOPT TRAY ON|OFF - Toggle tray blink on message" +#~ msgstr "" +#~ "Встановити параметри каналу\n" +#~ "CHANOPT CONFMODE ON|OFF - вмикання режиму conf mode/відображення " +#~ "об'єднання частин повідомлень\n" +#~ "CHANOPT COLORPASTE ON|OFF - увімкнути/вимкнути вставку кольору\n" +#~ "CHANOPT BEEP ON|OFF - увімкнути/вимкнути звуковий сигнал при появі " +#~ "повідомлень\n" +#~ "CHANOPT TRAY ON|OFF - увімкнути/вимкнути миготіння повідомлення у області " +#~ "сповіщення" + +#~ msgid "Direct client-to-client" +#~ msgstr "Безпосереднє з'єднання" + +#~ msgid "Send File" +#~ msgstr "Надіслати файл" + +#~ msgid "Offer Chat" +#~ msgstr "Запропонувати бесіду" + +#~ msgid "Abort Chat" +#~ msgstr "Перервати бесіду" + +#~ msgid "Userinfo" +#~ msgstr "Інформація про користувача" + +#~ msgid "Clientinfo" +#~ msgstr "Інформація про клієнта" + +#~ msgid "Time" +#~ msgstr "Час" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "Операція" + +#~ msgid "Kill this user" +#~ msgstr "Знищити цього користувача" + +#~ msgid "Mode" +#~ msgstr "Режим" + +#~ msgid "Give Half-Ops" +#~ msgstr "Надати напівоператора" + +#~ msgid "Take Half-Ops" +#~ msgstr "Відібрати напівоператора" + +#~ msgid "Ignore" +#~ msgstr "Ігнорувати" + +#~ msgid "Ignore User" +#~ msgstr "Ігнорувати користувача" + +#~ msgid "UnIgnore User" +#~ msgstr "Зняти ігнорування користувача" + +#~ msgid "Info" +#~ msgstr "Інформація" + +#~ msgid "Who" +#~ msgstr "Хто " + +#~ msgid "DNS Lookup" +#~ msgstr "Перегляд DNS" + +#~ msgid "Trace" +#~ msgstr "Трасування" + +#~ msgid "UserHost" +#~ msgstr "Комп'ютер користувача" + +#~ msgid "External" +#~ msgstr "Зовнішні" + +#~ msgid "Traceroute" +#~ msgstr "Traceroute" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "Blink tray on message" +#~ msgstr "Миготіння у області сповіщення при отриманні повідомлення" + +#~ msgid "Show join/part messages" +#~ msgstr "Сповіщати про вхід/вихід" + +#~ msgid "Color paste" +#~ msgstr "Вставити колір" + +#~ msgid "_Close Tab" +#~ msgstr "_Закрити вкладку" + +#~ msgid "Channel List..." +#~ msgstr "Список каналів..." + +#~ msgid "Notify List..." +#~ msgstr "Список сповіщень..." + +#~ msgid "_Close Window" +#~ msgstr "_Закрити вікно" + +#~ msgid "User" +#~ msgstr "Користувач" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: Список сповіщень" + +#~ msgid "Unban" +#~ msgstr "Зняти заборону" + +#, fuzzy +#~ msgid "Channel Switcher" +#~ msgstr "канали з" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "Немає відкритих вкладок, вийти з xchat?" + +#~ msgid "_Layout" +#~ msgstr "_Розташування" + +#~ msgid "Quit..." +#~ msgstr "Вихід..." + +#~ msgid "Resizable user list" +#~ msgstr "Список користувачів змінної ширини" + +#~ msgid "Left" +#~ msgstr "ліворуч" + +#~ msgid "Right" +#~ msgstr "праворуч" + +#, fuzzy +#~ msgid "Above user list" +#~ msgstr "Список користувачів змінної ширини" + +#~ msgid "US Minor Outlying Islands" +#~ msgstr "US Minor Outlying Islands" + +#~ msgid "File Offer" +#~ msgstr "Передача файлу" + +#~ msgid "Flash taskbar on highlighted messages" +#~ msgstr "Миготіння панелі задач при отриманні виділених повідомлень" + +#~ msgid "Flash taskbar on private messages" +#~ msgstr "Миготіння панелі задач при отриманні приватних повідомлень" + +#~ msgid "Beep on highlighted messages" +#~ msgstr "Звуковий сигнал при отриманні виділених повідомлень" + +#~ msgid "Beep on private messages" +#~ msgstr "Звуковий сигнал при отриманні особистих повідомлень" + +#~ msgid "Beep on channel messages" +#~ msgstr "Звуковий сигнал при канальних повідомленнях" + +#~ msgid "%C18*$t$1%O $2" +#~ msgstr "%C18*$t$1%O $2" + +#~ msgid "%C21*%O$t%C21%B$1%O%C21 $2" +#~ msgstr "%C21*%O$t%C21%B$1%O%C21 $2" + +#~ msgid "%C18%H<%H$4$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$4$1%H>%H%O$t$2" + +#~ msgid "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" +#~ msgstr "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" + +#~ msgid "%C28-%C29$1/$2%C28-%O$t$3" +#~ msgstr "%C28-%C29$1/$2%C28-%O$t$3" + +#~ msgid "$1$t$2" +#~ msgstr "$1$t$2" + +#~ msgid "%C19>%O$1%C19<%O$t$2" +#~ msgstr "%C19>%O$1%C19<%O$t$2" + +#~ msgid "%C16*%O$t$1%O" +#~ msgstr "%C16*%O$t$1%O" + +#~ msgid "%C28-%C29$1%C28-%O$t$2" +#~ msgstr "%C28-%C29$1%C28-%O$t$2" + +#~ msgid "%C28*%C29$3$1%C28*$t%O$2" +#~ msgstr "%C28*%C29$3$1%C28*$t%O$2" + +#~ msgid "%C18%H<%H$3$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$3$1%H>%H%O$t$2" + +#~ msgid "%C22*%O$t$1" +#~ msgstr "%C22*%O$t$1" + +#~ msgid "%C31%H<%H$4$1%H>%H%O%C30$t$2" +#~ msgstr "%C31%H<%H$4$1%H>%H%O%C30$t$2" + +#~ msgid "PID" +#~ msgstr "PID" + +#~ msgid "France, Metropolitan" +#~ msgstr "Франція, Метрополітан" + +#~ msgid "Neutral Zone" +#~ msgstr "Нейтральна зона" + +#~ msgid "I can't save an empty list!" +#~ msgstr "Не можна зберігати порожній список!" + +#~ msgid "List display options:" +#~ msgstr "Параметри відображення списку:" + +#~ msgid "Minimum Users:" +#~ msgstr "Мін. користувачів:" + +#~ msgid "Maximum Users:" +#~ msgstr "Макс. користувачів:" + +#~ msgid "Regex Match:" +#~ msgstr "Шаблон рег.виразу:" + +#~ msgid "Apply Match to:" +#~ msgstr "Застосувати до:" + +#~ msgid "Apply" +#~ msgstr "Застосувати" + +#~ msgid "Refresh the list" +#~ msgstr "Оновити список" + +#~ msgid "Save the list" +#~ msgstr "Зберегти список" + +#~ msgid "Go to" +#~ msgstr "Перейти" + +#~ msgid "Settings saved." +#~ msgstr "Параметри збережено." + +#~ msgid "Server" +#~ msgstr "Сервер" + +#~ msgid "Save rawlog" +#~ msgstr "Збереження журналу" + +#~ msgid "Save rawlog..." +#~ msgstr "Зберегти журнал..." + +#~ msgid "Completes nick names without using the TAB key" +#~ msgstr "Доповнювати прізвиська без використання клавіші TAB" + +#~ msgid "Input Box Appearance" +#~ msgstr "Вигляд поля вводу" + +#~ msgid "Tabs Location" +#~ msgstr "Розміщення вкладок" + +#~ msgid "Convert spaces to underscore before sending" +#~ msgstr "Перетворювати пробіли в знак підкреслення" + +#~ msgid "(Can be a text file relative to ~/.xchat2/)." +#~ msgstr "(Може бути текстовий файл відносно ~/.xchat2/)." + +#~ msgid "(Can be a text file relative to config dir)." +#~ msgstr "(Може бути текстовий файл відносно каталогу конфігурації)." + +#~ msgid "(See strftime manpage for details)." +#~ msgstr "(Докладнішу інформацію дивіться у довідці з strftime)." + +#~ msgid "Open an irc:// url" +#~ msgstr "Відкрити irc:// url" + +#~ msgid "irc://server:port/channel" +#~ msgstr "irc://сервер:порт/канал" + +#~ msgid "Execute a xchat command" +#~ msgstr "Виконати команду xchat" + +#~ msgid "\"Command to execute\"" +#~ msgstr "\"Команда для виконання\"" + +#~ msgid "Prints some text to the current tab/window" +#~ msgstr "Виводить текст у поточну вкладку/вікно " + +#~ msgid "\"Text to print\"" +#~ msgstr "\"Тест\"" + +#~ msgid "Change the context to the channel" +#~ msgstr "Змінити контекст на канал" + +#~ msgid "Change the context to the server" +#~ msgstr "Змінити контекст на сервер" + +#~ msgid "server" +#~ msgstr "сервер" + +#~ msgid "Get some informations from xchat" +#~ msgstr "Отримати певну інформацію з xchat" + +#~ msgid "id" +#~ msgstr "ідентифікатор" + +#~ msgid "Get settings from xchat" +#~ msgstr "Отримати параметри xchat" + +#~ msgid "name" +#~ msgstr "назва" + +#~ msgid "" +#~ "xchat-remote: %s\n" +#~ "Try `xchat-remote --help' for more information\n" +#~ msgstr "" +#~ "xchat-remote: %s\n" +#~ "Для докладнішої інформації виконайте `xchat-remote --help'\n" + +#~ msgid "Failed to complete SetContext" +#~ msgstr "Не вдається завершити SetContext" + +#~ msgid "Failed to complete print" +#~ msgstr "Не вдається завершити вивід" + +#~ msgid "Failed to complete GetInfo" +#~ msgstr "Не вдається завершити GetInfo" + +#~ msgid "Failed to complete GetPrefs" +#~ msgstr "Не вдається завершити GetPrefs" + +#~ msgid "%s doesn't exist\n" +#~ msgstr "%s не існує\n" + +#~ msgid "%s loaded successfully!\n" +#~ msgstr "%s успішно завантажено!\n" diff --git a/xchat-2.8.8/po/vi.gmo b/xchat-2.8.8/po/vi.gmo new file mode 100644 index 0000000000000000000000000000000000000000..2a2a88ec1d51f4c2e71a2a69959d63961061d4a7 GIT binary patch literal 106192 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 QGm#$3%M}x{`HW@%2Y>u?9{>OV literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/po/vi.po b/xchat-2.8.8/po/vi.po new file mode 100644 index 0000000..f9eddc8 --- /dev/null +++ b/xchat-2.8.8/po/vi.po @@ -0,0 +1,5820 @@ +# Vietnamese translation for XChat. +# Copyright © 2007 Free Software Foundation, Inc. +# Clytie Siddall <clytie@riverland.net.au>, 2005-2007. +# +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.8.4\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2007-06-26 14:57+0930\n" +"Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n" +"Language-Team: Vietnamese <vi-VN@googlegroups.com>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: LocFactoryEditor 1.6.4a3\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "Không thể tạo thư mục « ~/.xchat2 »" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "Tôi đang bận" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "Tôi đi" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"• Chạy IRC với tư cách người chủ (root) là không an toàn. •\n" +"Bạn nên tạo một tài khoản người dùng và sử dụng nó để đăng nhập.\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "Đang đời" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "Hoặt động" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "Bị lỗi" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "Đã xong" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "Kết nối" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "Bị hủy bỏ" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "Không thể truy cập %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "Lỗi" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s đang cung cấp « %s ». Bạn có muốn chấp nhận không?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "Không có DCC (trò chuyện trực tiếp) hoặt động nào\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "CÓ " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "KHÔNG " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "Bạn đang bị tấn công bằng CTCP bởi %s nên bỏ qua %s.\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "" +"Bạn đang bị tấn công bằng MSG bởi %s nên đặt tùy chọn tự động mở đối thoại " +"giao diện (gui_auto_open_dialog) bị TẮT.\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s trực tuyến\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s ngoạị tuyến\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "Chưa vào kênh nào : hãy thử lệnh « /join #<kênh> »\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "Chưa kêt nối: hãy thử lệnh « /server <máy> [<cổng>] »\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "Đã nhãn « Vắng mặt »: %s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "Đã nhán « Trở về »:\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "Cần « /bin/sh » để chạy được.\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "Các lệnh sẵn sàng:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "Các lệnh xác định riêng:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "Các lệnh xác định bởi bổ sung:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "" +"Hãy gõ lệnh « /HELP <lệnh> » để xem thông tin thêm (help: trợ giúp), hay « /" +"HELP -l »." + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "Không biết đối số « %s » nên bỏ qua nó." + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "Không tìm thấy bổ sung như vậy.\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "Bổ sung đó từ chối bỏ nặp.\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "" +"ADDBUTTON <tên> <hành_động>, _thêm_ một _cái nút_ bên dưới danh sách người " +"dùng" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <lệnh>, gửi lệnh này tới _mọi kênh_ nơi bạn ở" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHANL <lệnh>, gửi lệnh này tới _mọi kênh_ nơi bạn ở" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <lệnh>, gửi lệnh này tới _mọi máy phục vụ_ nơi bạn ở" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<lý do>], đặt trang thái của bạn thành _vắng mặt_" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "BACK đặt bạn đã trở về (không phải vắng mặt)" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <bộ_lọc> [<kiểu_đuổi>], _đuổi_ mọi người khớp với bộ lọc này ra kênh " +"hiện tại. Cần quyền quan trị kệnh (chanop) để đuổi ra người nào đang trên " +"kênh" + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "" +"SET [-e] [-or] [-quiet] <biến> [<giá_trị>]\n" +"[SET (đặt); or (hoặx); quiet (không hiện chi tiết)]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "" +"CLEAR [ALL|HISTORY], _xoá trống_ cửa sổ văn bản (ALL: tất cả) hay _lịch sử_ " +"lệnh (HISTORY) hiện có" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE, _đóng_ cửa sổ/thẻ hiện có" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" +"COUNTRY [-s] <mã|ký_tự_đại_diện>, tìm thấy _quốc gia_, v.d. mã « au » = Úc" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <tên_hiệu> <tin_nhẳn>, gởi cho <tên_hiệu> <tin nhẳn> CTCP: hai tin nhẳn " +"thường là VERSION (phiên bản) và USERINFO (thông tin người dùng)" + +#: src/common/outbound.c:3516 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "" +"CYCLE [<kênh>], rời kênh này hay kênh hiện tại rồi vào lại ngay (_quay lại_)" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <tên_hiệu> \t\tchấp nhận tập tin đã đưa ra (_lấy_)\n" +"DCC SEND [-maxcps=#] <tên_hiệu> [tập_tin]\n" +"\t_gởi_ [tập tin] cho <tên hiệu> (max. : tối đa)\n" +"DCC PSEND [-maxcps=#] <tên_hiệu> [tập_tin]\n" +"\t_gởi_ [tập_tin] cho <tên_hiệu> bằng chế độ _bị động_\n" +"DCC LIST \t\t\t\thiển thị _danh sách_ DCC\n" +"DCC CHAT <tên_hiệu> \tđưa ra _trò chuyện_ DCC với <tên hiệu>\n" +"DCC PCHAT <tên_hiệu>\n" +"\tđưa ra _trờ chuyện_ DCC với <tên_hiệu> bằng chế độ _bị động_\n" +"DCC CLOSE <kiểu> <tên_hiệu> <tập_tin> (_đóng_) thí dụ:\n" +" </dcc close send nguyenvan tập_tin.tar.gz>\n" +"\tgởi cho người nguyenvan tập_tin.tar.gz rồi đóng kết nối DCC" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <tên_hiệu>, bỏ ra <tên hiệu> trạng thái quản trị kênh nửa (chanhalf-" +"op) trên kênh hiện tại (cần quyền quản trị kênh)\n" +"[DE (bỏ ra) Half (nửa) OPerator (quản trị viên)]" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "" +"DELBUTTON <tên>, xóa bỏ cái nút <tên> ra dưới danh sách người dùng\n" +"[DELete (xóa bỏ) BUTTON (nút)]" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <tên_hiệu>, bỏ ra <tên hiệu> trạng thái quản trị kênh (chanop) trên " +"kênh hiện tại (cần quyền quản trị kênh (chanop))\n" +"[DE (bỏ) OPerator (quản trị viên)]" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <tên_hiệu>, bỏ ra <tên hiệu> trạng thái tiếng nói trên kênh hiện tại " +"(cần quyền quản trị kênh [chanop])\n" +"[DE (bỏ) VOICE (tiếng nói)]" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "" +"DISCON, ngắt kết nối ra máy phục vụ\n" +"[DISCONnect (ngắt kết nối)]" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "" +"DNS <tên_hiệu|máy_phục_vụ|ip>, tìm thấy địa chỉ IP của <ten hiệu>\n" +"[Domain Name System (Hệ thống tên miền)]" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "" +"ECHO <đoạn>, in ra <đoạn> một cách địa phương\n" +"[ECHO (vọng, phản hồi)]" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <lệnh>, chạy <lệnh>. Nếu thêm cờ « -o », gởi dữ liệu xuất cho kênh " +"hiện tại, nếu không thì in ra nó vào hộp văn bản hiện tại\n" +"[EXECute (thực hiện)]" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "" +"EXECCONT, gởi tiến trình SIGCONT\n" +"[EXECute (thực hiện) CONTinue (tiếp tục)\n" +"SIGnal (tín hiệu) CONTinue (tiếp tục)]" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9], buộc kết thúc tiến trình đang chạy trong phiên làm việc hiện " +"tại. Nếu thêm cờ « -9 », SIGKILL tiến trình này\n" +"[EXECute (thực hiện) KILL (buộc kết thúc)\n" +"SIGnal (tín hiệu) KILL (buộc kết thúc)]" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "" +"EXECSTOP, gởi tiến trình SIGSTOP\n" +"[EXECute (thực hiện) STOP (dừng)\n" +"SIGnal (tín hiệu) STOP (dừng)]" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "" +"EXECWRITE, gởi dữ liệu cho thiết bị nhập chuẩn của tiến trình\n" +"[EXECute (thi hành) WRITE (ghi)]" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "" +"FLUSHQ, xóa sạch hàng đợi gởi của máy phục vụ hiện tại\n" +"[FLUSH (xoá sạch) Queue (hàng đời)]" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" +"GATE <máy_phục_vụ> [<cổng>], sử dụng máy ủy nhiệm; <cổng> mặc định là 23\n" +"[GATE (cổng)]" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" +"GHOST <tên_hiệu> <mật_khẩu>, buộc kết thúc tên hiệu ma (bị ngắt còn máy phục " +"vụ chưa thay đổi trạng thái)\n" +"[GHOST (ma)]" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" +"HOP <tên_hiệu>, đưa ra <tên hiệu> trạng thái quản trị kênh nửa (cần quyền " +"quản trị kênh [chanop])\n" +"[Half (nửa) OPerator (quản trị viên)]" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "" +"ID <mật_khẩu>, nhận diện bạn với máy phục vụ tên hiệu\n" +"[IDentify (nhận diện)]" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <bộ_lọc> <kiểu...> <tùy_chọn...> »\n" +"[IGNORE (bỏ qua)]\n" +" bộ lọc\t\tbộ lọc máy cần bỏ qua, v.d. « *!*@*.aol.com »\n" +" kiểu\t\tkiểu dữ liệu cần bỏ qua, giá trị là một hay tất cả của:\n" +" \tPRIV\t\tPRIVate (riêng)\n" +"\tCHAN\tCHANnel (kênh)\n" +"\tNOTI\tNOTIfy, NOTIce (thông báo)\n" +"\tCTCP\n" +"\tDCC \tDirect Chat Channel (kênh trò chuyện trực tiếp)\n" +"\tINVI\t\tINVIte (mời)\n" +"\tALL \t\t(tất cả)\n" +" tùy chọn\n" +"\tNOSAVE \t(không lưu)\n" +"\tQUIET \t(không hiện chi tiết)" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <tên_hiệu> [<kênh>], _mời_ <tên hiệu> vào <kênh>; mặc định là kênh " +"hiện tại (cần quyền quản trị kênh [chanop])" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <kênh>, _vào_ <kênh>" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" +"KICK <tên_hiệu>, _đá_ <tên hiệu> ra kênh hiện tại (cần quyền quản trị kênh " +"[chanop])" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <tên_hiệu>, _đuổi_ rồi _đá_ <tên hiệu> ra kênh hiện tại (cần quyền " +"quản trị kênh [chanop])" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK, buộc _kiểm tra sự trễ_ mới" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "" +"LASTLOG <chuỗi>, tìm kiếm <chuỗi> trong bộ đệm\n" +"[LOG (bản ghi) LAST (cuối cùng)" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <tập_tin>, _nạp_ một bổ sung hay tập lệnh" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" +"MDEHOP, bỏ trạng thái quản trị kênh nửa (chanhalf-op) ra mọi người trên kênh " +"hiện tại (cần quyền quản trị kênh [chanop])\n" +"[Mass (số nhiều) DE (bỏ) Half (nửa) OPerator (quản trị viên)]" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" +"MDEOP, bỏ trạng thái quản trị kênh (chanop) ra mọi người trên kênh hiện tại " +"(cần quyền quản trị kênh [chanop])\n" +"[Mass (số nhiều) DE (bỏ) OPerator (quản trị viên)]" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <hành_động>, gởi <hành động> cho kênh hiện tại (v.d. « /me jumps » gởi « " +"<tên hiệu> nhảy »\n" +"[ME (tôi, mình)]" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" +"MKICK, đá mọi người (trừ bạn) ra kênh hiện tại (cần quyền quản trị kênh " +"[chanop])\n" +"[Mass (số nhiều) KICK (đá)]" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" +"MOP, đưa ra mọi người dùng có trạng thái quản trị kênh (chanop) trên kênh " +"hiện tại (cần quyền quản trị kênh [chanop])\n" +"[Mass (số nhiều) OPerator (quản trị viên)]" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "" +"MSG <tên_hiệu> <tin_nhẳn>, gởi <tin nhẳn> riêng\n" +"[MeSsaGe (tin nhẳn [viết tắt])]" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES, liệt kê _các tên_ hiệu trên kênh hiện tại" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "" +"NCTCP <tên_hiệu> <tin_nhẳn>, gởi thông báo CTCP\n" +"[Notice (thông báo) CTCP]" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "" +"NEWSERVER [-noconnect] <tên_máy> [<cổng>]\n" +"[SERVER (máy phục vụ) NEW (mới); no connect (không kết nối)]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "" +"NICK <tên_hiệu>, đặt <tên hiệu> của bạn\n" +"[NICKname (tên hiệu [viết tắt])]" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <tên_hiệu/kênh> <thông_điệp>, gởi một _thông báo_: thông báo là kiểu " +"thông điệp nên nhận trả lời tự động" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n mạng1[,mạng2,...]] [<tên_hiệu>], hiển thị danh sách _thông báo_ " +"của bạn, hoặc thêm <tên_hiệu> vào nó" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" +"OP <tên_hiệu>, đưa ra <tên hiệu> có trạng thái quản trị kênh (chanop) (cần " +"quyền quản trị kênh [chanop])\n" +"[OPerator (quản trị viên)]" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" +"PART [<kênh>] [<lý_do>], rời <kênh> đi; mặc định là kênh hiện tại\n" +"[dePART (rời đi)]" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "" +"PING <tên_hiệu | kênh>, thực hiện tiến trình « ping » CTCP với <tên hiêu> hay " +"<kênh>\n" +"[Tiến trình ping gửi chỉ một gói tin để thử ra nếu kết nối hoạt động hay " +"không; nó gửi lại đến khi bạn ngắt nó.]" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "" +"QUERY [-nofocus] <tên_hiệu>, mở một cửa sổ tin nhẳn riêng mới với " +"<tên_hiệu>\n" +"[QUERY (truy vấn); no focus (không có tiêu điểm)]" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "" +"QUIT [<lý_do>], ngắt kết nối ra máy phục vụ hiện tại\n" +"[QUIT (_thoát_)]" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "" +"QUOTE <chuỗi>, gởi <chuỗi> dạng thô cho máy phục vụ\n" +"[QUOTE (trích dẫn)]" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<máy>] [<cổng>] [<mật_khẩu>], có thể tái kết nối đến mấy " +"phục vụ hiện tại khi chỉ đơn giản dùng « /RECONNECT », hoặc tái kết nối đến " +"mọi máy phục vụ đang mở dùng « /RECONNECT ALL »\n" +"[RECONNECT (tái kết nối); (phương pháp SSL bảo vệ dữ liệu cần truyền)]" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<máy>] [<cổng>] [<mật_khẩu>], có thể tái kết nối đến mấy phục vụ " +"hiện tại chỉ đơn giản dùng « /RECONNECT », hoặc tái kết nối đến mọi máy phục " +"vụ đang mở dùng « /RECONNECT ALL »\n" +"[RECONNECT (tái kết nối); không có SSL bảo vệ dữ liệu)]" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <chuỗi>, gởi dữ liệu thô vào trình xchat, dạng máy phục vụ IRC đã gởi\n" +"[RECeiVe (nhận)]" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "" +"SAY <chuỗi>, gởi <chuỗi> cho đối tượng trong cửa sổ hiện tại\n" +"[SAY (_nói_)]" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <tên_hiệu> [<tập_tin>], _gởi_ <tập tin> cho <tên hiệu>" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN [-ssl] <máy> <cổng> <kênh>, kết nối đến <kênh> rồi vào nó\n" +"[SERVer (máy phục vụ) CHANnel (kênh); phương pháp SSL bảo vệ dữ liệu cần " +"truyền)]" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "" +"SERVCHAN <máy> <cổng> <kênh>, kết nối đến <kênh> rồi vào nó\n" +"[SERVer (máy phục vụ) CHANnel (kênh); không có SSL bảo vệ dữ liệu)]" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <máy> [<cổng>] [<mật_khẩu>], kết nối đến <máy> phục vụ : " +"<cổng> mặc định là số 6667 cho kết nối chuẩn, và số 9999 cho kết nối kiểu " +"SSL\n" +"[SERVER (máy phục vụ); phương pháp SSL bảo vệ dữ liệu cần truyền)]" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" +"SERVER <máy> [<cổng>] [<mật_khẩu>], kết nối đến <mấy> phục vụ ; cổng mặc " +"định là số 6667\n" +"[SERVER (máy phục vụ); không có SSL bảo vệ dữ liệu)]" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "" +"SET [-e] [-or] [-quiet] <biến> [<giá_trị>]\n" +"[SET (đặt); or (hoặx); quiet (không hiện chi tiết)]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "" +"SETCURSOR [-|+]<vị_trí>\n" +"[SET (đăt) CURSOR (con chạy)]" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" +"TOPIC [<chủ_đè>], lập <chủ đề> nếu nó đã cho, nếu không thì hiển thị chủ đề " +"hiện tại." + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" +"\n" +"TRAY -f <thời hạn> <tập tin 1> [<tập tin 2>] Chớp khay giữa hai biểu tượng.\n" +"TRAY -f <tập tin> Đặt khay là biểu tượng riêng.\n" +"TRAY -i <số> Chớp khay với biểu tượng bên trong.\n" +"TRAY -t <chuỗi> Đặt mẹo công cụ của khay.\n" +"TRAY -b <tựa> <chuỗi> Đặt khung thoại của khay." + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "" +"UNBAN <bộ_lọc> [<bộ_lọc>...], bỏ trạng thái bị đuổi ra những bộ lọc đã ghi " +"rõ\n" +"[UN (hủy) BAN (đuổi)]" + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "" +"UNIGNORE <bộ_lọc> [QUIET]\n" +"[UN (hủy) IGNORE (bỏ qua); QUIET (không hiện chi tiết)]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "" +"UNLOAD <tên>, bỏ nạp một bổ sung hay văn lệnh\n" +"[UN (hủy) LOAD (nạp)]" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>, mở địa chỉ <url> trong trình duyệt Mạng của bạn." + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <tên_hiệu1> <tên_hiệu2> v.v., tô sáng những tên hiệu này " +"trong danh sách các người dùng trên kênh\n" +"[User (người dùng) SELECT (lựa chọn)]" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "" +"VOICE <tên_hiệu>, đưa ra <tên hiệu> trạng thái _tiếng nói_ (cần quyền quản " +"trị kênh [chanop])." + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "" +"WALLCHAN <thông_điệp>, ghi <thông_điệp> vào mọi kênh\n" +"[Write (ghi) ALL (mọị) CHANnel (kênh)]" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" +"WALLCHOP <thông_điệp>, gởi <thông_điệp> cho mọi quản trị kênh [chanop] trên " +"kênh hiện tại\n" +"[Write (ghi) ALL (mọi) CHannel (kênh) OPerator (quản trị viên)]" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "Cách sử dụng: %s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"Không có trợ giúp về lệnh đó.\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "Không có lệnh như vậy.\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "Lệnh người dùng có đối số sai.\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "Quá nhiều lệnh người dùng đệ qui nên hủy bỏ." + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "Không biết lệnh này: bạn hãy thử lệnh « /help » (trợ giúp).\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "" +"Không có ký hiệu « xchat_plugin_init » (khởi động bổ sung xchat): điều này " +"thật là bổ sung kiểu xchat không?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "Bạn có chắc điều này là máy phục vụ và cổng có khả năng SSL không?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"Không tìm thấy tên máy %s.\n" +"Hãy kiểm tra thiết lập IP của bạn.\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "Việc đi qua máy phục vụ ủy nhiệm bị lỗi.\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "Đang quay lại đến mấy phục vụ kế tiếp trong %s...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "Cảnh báo : không biết bộ ký tự « %s » nên không chuyển đổi cho mạng %s." + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 đã được thêm vào danh sách thông báo." + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 Danh sách đuổi ra:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$tKhông thể vào%C26 %B$1 %O(vì bạn bị đuổi ra)." + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 lúc bây giờ được biết như là $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 đuổi $2 ra" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$tKênh$1 được tạo vào $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O bỏ trạng thái quản trị kênh nửa ra%C26 $2" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O bỏ trạng thái quản trị kênh ra%C26 $2" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O bỏ trạng thái « Tiếng nói » ra%C26 $2" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 đặt trạng thái miễn cho $2" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O đưa ra%C26 $2 trạng thái quản trị kênh nửa" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 đặt trạng thái mời cho $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%UKênh \t Người Chủ đề" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 đặt chế độ $2$3 $4" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22Kênh $1 chế độ : $2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O đưa ra%C26 $2 trạng thái quản trị kênh" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 bỏ trạng thái miễn ra $2" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 bỏ trạng thái mời ra $2" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 bỏ từ khoá kênh" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 bỏ giới hạn người dùng" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 đặt từ khoá kênh thành $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 đặt giới hạn kênh thành $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 bỏ trạng thái bị đuổi ra $2" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O đưa ra %C26 $2 trạng thái « Tiếng nói »" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22Mới kết nối. Đang đăng nhập..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22Đang kết nối đến $1 ($2) trên cổng $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21Kết nối bị lỗi: $1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$tMới nhận CTCP $1 từ $2" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$tMới nhận CTCP $1 từ $2 (cho $3)" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$tMới nhận âm thanh CTCP $1 từ $2" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$tMới nhận âm thanh CTCP $1 từ $2 (cho $3)" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$tTrò chuyện trực tiếp (DCC) với %C26$1%O bị hủy bỏ." + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "" +"%C22*%O$tMới kết nối được để trò chuyện trực tiếp (DCC) với %C26$1 %C30[%O$2%" +"C30]" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$tTrò chuyện trực tiếp (DCC) cho %C26$1%O bị mất ($4)." + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$tMới nhận lời mời trò chuyện trực tiếp (DCC) từ $1" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$tĐang mời $1 tro chuyện trực tiếp (DCC)" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$tĐã mời $1 trò chuyện" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$tDCC $1 việc cố kết nối đến%C26 $2%O bị lỗi (lỗi=$3)." + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$tMới nhận « $1%O » từ $2" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 Kiểu Đến/Từ TrThái Cỡ Vị trí Tệp " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O.%010%C22*%O" +"$tContents of packet: $2" +msgstr "" +"%C22*%O$tMới nhận yêu cầu dạng sai trò chuyện trực tiếp (DCC) từ %C26$1%O.%" +"010%C22*%O$tNội dung gói tin: $2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$tĐang đưa ra%C26 $1%O cho%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$tKhông có lời mời trò chuyện trực tiếp (DCC) như vậy." + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tNHẬN DCC%C26 $2%O cho%C26 $1%O bị hủy bỏ." + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$tNHẬN DCC%C26 $1%O từ%C26 $3%O hoàn thành %C30[%C26$4%O cps%C30]%O." + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tMới kết nối kiểu NHẬN DCC đếnC26 $1 %C30[%O$2%C30]." + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$tNHẬN DCC%C26 $1%O từ%C26 $3%O bị lỗi ($4)." + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tNHẬN DCC: không thể mở $1 để ghi ($2)." + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "%C22*%O$tTập tin%C26 $1%C đã có : đang lưu nó dạng %C26 $2%O thay thế." + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %Ođã yêu cầu tiếp tục%C26 $2 %Ctừ%C26 $3%C." + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$tGỞI DCC%C26 $2%O cho%C26 $1%O bị hủy bỏ." + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$tGỞI DCC%C26 $1%O cho%C26 $2%O hoàn thành %C30[%C26$3%O cps%C30]%O." + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$tMới kết nối DCC GỞI đến%C26 $1 %C30[%O$2%C30]." + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$tViệc kết nối DCC GỞI%C26 $1%O đến%C26 $2%O bị lỗi. $3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %Ođã mời%C26 $2 %O(%C26$3 %Obyte)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Ođến%C26 $3 %Cbị ngừng nên hủy bỏ." + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %Ođến%C26 $3 %Oquá giờ nên hủy bỏ." + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1 đã được xoá bỏ ra danh sách thông báo." + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$tBị ngắt kết nối ($1)." + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$tTìm thấy địa chỉ IP của bạn: [$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O đã được thêm vào danh sách bỏ qua." + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "Trang thái bỏ qua về %C26$1%O bị thay đổi." + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "" +"%C24,18 Bộ lọc máy PRIV NOTI CHAN CTCP DCC INVI UNIG\n" +"\n" +"[PRIVate\t\triêng\n" +"NOTIfy\t\tthông báo\n" +"CHANnel\t\tkênh\n" +"Client To Client Protocol\tgiao thức ứng dụng khách đến ứng dụng khách\n" +"Direct Chat Channel\t\tkênh trò chuyện trực tiếp\n" +"INVIte\t\tmời\n" +"UNIGnore\t\thủy bỏ qua]" + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O được gỡ bỏ ra danh sách bỏ qua." + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " Danh sách bỏ qua la trống." + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "%C22*%O$tKhông thể vào%C26 %B$1 %O(Phải có lời mời)." + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$tBạn mới được mời vào%C26 $1%O bởi%C26 $2%C (%C26$3%C)" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) mới vao $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$tKhông thể vào%C26 %B$1 %O(Cần đến từ khoá)." + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 mới đá $2 ra $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$tBạn mới bị buộc kết thúc bởi $1 ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "" +"%C22*%O$t%C22MOTD bị nhảy qua.\n" +"[Message Of The Day (thông điệp của hôm nay)]" + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 đang dùng nên thử lái vơi $2..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" +"%C22*%O$tTên hiệu đang được dùng nên hay sử dụng lệnh « /NICK » để chọn tên " +"hiệu khác." + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$tKhông có DCC như vậy." + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$tKhông có tiến trình nào đang chạy" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$tDanh sách thông báo la trống." + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B Danh sách thông báo " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1 người dùng trong danh sách thông báo." + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$tThông báo : $1 ngoại tuyến ($3)." + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$tThông báo : $1 trực tuyến ($3)." + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) đã rời $3 đi" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) đa rời $3 đi (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tTrả lời ping từ $1: $2 giây" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$tChưa nhận trả lời ping sau $1 giây nên ngắt kết nối." + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$tCó một tiến trình đang chạy" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 đã thoát (%O%C23%B%B$2%O%C23)." + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 đặt chế độ%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Gởi tin nhẳn cho mọi quan trị%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$tĐang tra cứu số IP cho%C26 $1%O..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22Đã kết nối." + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22Đang tra cứu $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$tĐã thôi việc cố kết nối trước (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29Chủ đề cho $1%C %C29là: $2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 mới thay đổi chủ đề thành: $2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29Chủ đề cho $1%C %C29 được đặt bởi $2%C %C29vào $3" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$tKhông biết máy: chính tả sai không?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "%C22*%O$tKhông thể vào%C26 %B$1 %O(Đã tới giới hạn số người dùng)." + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26Người dùng trên $1:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %Cvắng mặt %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "" +"%C22*%O$t%C28[%O$1%C28] %OKết thúc danh sách WHOIS.\n" +"[WHO IS (là ai)]" + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O nhàn rỗi%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O nghỉ%C26 $2%O, đăng nhập:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" +"%C22*%O$t%C28[%O$1%C28] %Ongười dùng thật@máy%C27 $2%O, địa chỉ IP thật%C27 " +"$3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19Đang nói chuyện trên $2" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$tBạn đã bị đá ra $2 bởi $3 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$tBạn mới rời kênh $3 đi" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$tBạn mới rời kênh $3 đi (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$tBạn đã mời%C26 $1%O vào%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$tBạn lúc bây giờ được biết như là $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "Bản ghi đã được nạp từ" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** KẾT THÚC GHI LƯU VÀO %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** BẮT ĐẦU GHI LƯU VÀO %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"* Không thể mở tập tin bản ghi để ghi:\n" +" hãy kiểm tra quyền truy cập « %s/xchatlogs »" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "Tin nhẳn bên trái" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "Tin nhẳn bên phải" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "Tên hiệu của người đang vào" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "Kênh đang được vào" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "Máy của người ấy" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "Tên hiệu" + +#: src/common/text.c:973 +msgid "The action" +msgstr "Hành động" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "Ký tự chế độ" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "Chuỗi đã nhận biết" + +#: src/common/text.c:980 +msgid "The text" +msgstr "Chuỗi" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "Tin nhẳn" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "Tên hiệu cũ" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "Tên hiệu mới" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "Tên hiệu của người đã thay đổi chủ đề" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "Chủ đề" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "Kênh" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "Tên hiệu của người đá" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "Người đang bị đá" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "Kênh" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "Lý do" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "Tên hiệu của người đang rời đi" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "Giờ" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "Người tạo" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "Tên hiệu" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "Lý do" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "Máy" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "Người gởi" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "Giờ dạng x.x (xem dưới)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "Kênh đích" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "Âm thanh" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "Tên hiệu của người ấy" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "Sự kiện CTCP" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "Tên hiệu của người đã đặt khoá" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "Khoá" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "Tên hiệu của người đã đặt giới hạn" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "Giới hạn" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "Tên hiệu của người đã đặt trạng thái quản trị" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "Tên hiệu của người đã nhận trạng thái quản trị" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "Tên hiệu của người đã nhận trạng thái nửa quản trị" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "Tên hiệu của người đã đặt trạng thái nửa quản trị" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "Tên hiệu của người đã đặt trạng thái « Tiếng nói »" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "Tên hiệu của người đã nhận trạng thái « Tiếng nói »" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "Tên hiệu của người đã đuổi người khác" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "Bộ lọc đuổi ra" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "Tên hiệu đã gỡ bỏ khoá" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "Tên hiệu đã gỡ bỏ giới hạn" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "Tên hiệu của người đã bỏ trạng thái quản trị" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "Tên hiệu của người đã mất trạng thái quản trị" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "Tên hiệu của người đã bỏ trạng thái nửa quản trị" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "Tên hiệu của người đã mất trạng thái nửa quản trị" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "Tên hiệu của người đã bỏ trạng thái « Tiếng nói »" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "Tên hiệu của người đã mất trạng thái « Tiếng nói »" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "Tên hiệu của người đã bỏ trạng thái « Bị đuổi »" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "Tên hiệu của người đã đặt trạng thái miễn" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "Bộ lọc miễn" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "Tên hiệu của người đã bỏ trạng thái miễn" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "Tên hiệu của người đã mời người khác" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "Bộ lọc mờì" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "Tên hiệu của người đã gỡ bỏ lời mời" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "Tên hiệu của người đặt chế độ" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "Dấu chế độ (+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "Chữ chế độ" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "Kênh trên đó nó đang được đặt" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "Tên người dùng" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "Họ tên" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "Tư cách thành viên kênh/« là quản trị IRC »" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "Thông tin máy phục vụ" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "Thời gian nghỉ" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "Giờ đăng nhập" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "Lý do vắng mặt" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "Tin nhẳn" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "Tài khoản" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "Người dùng thât@máy" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "Địa chỉ IP thật" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "Tên kênh" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "Chuỗi" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "Tên máy phục vụ" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "Tên hiệu của người đã mời bạn" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "Người dùng" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "Tên hiệu đang được dùng" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "Tên hiệu đang được thử ra" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "Cổng" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "Mạng" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "Chuỗi chế độ" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "Địa chỉ IP" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "Kiểu DCC" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "Tên tập tin" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "Tên tập tin đích" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "Tên đường dẫn" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "Vị trí" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "Cỡ" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "Chuỗi DCC" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "Số mục thông báo" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "Tên tập tin cũ" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "Tên tập tin mới" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "Bộ nhận" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "Bộ lọc máy" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "Tên máy" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "Gói tin" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "Giây" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "Tên người đã được mời" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "Bộ lọc đuổi ra" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "Người đã đặt đuổi ra" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "Thời gian đuổi ra" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"Gặp lỗi khi phân tách sự kiện %s.\n" +"Đang nạp mặc định." + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"Không thể đọc tập tin âm thanh:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "Máy ở xa đã đóng ổ cắm" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "Kết nối bị từ chối" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "Không có đường dẫ đến máy" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "Kết nối đã quá giờ" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "Không thể gán địa chỉ đó" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "Kết nối bị đặt lại bởi ngang hàng" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "Đảo Ascension" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "Ăn-đoa-râ" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "Các Tiểu Vương Quốc A Rập Thống Nhất" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "A Phú Hãn" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "Ănh-thí-gụ-a và Ba-bu-đạ" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "Ănh-gouí-lạ" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "An-ba-ni" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "Ác-mê-ni" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "An-thi-li Hoà-lan" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "Ăng-gô-la" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "Nam cực" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "Ác-hen-ti-na" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "DNS ngược" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "Xa-mô-a Mỹ" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "Ao" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "Na-tô Phi-en" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "Úc" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "A-ru-ba" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "Quần Đảo A-lan" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "Ai-déc-bai-gian" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "Bô-x-ni-a và Héc-xê-gô-vi-na" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "Bác-ba-đốt" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "Băng-la-đe-xợ" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "Bỉ" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "Bổ-khi-na Pha-xô" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "Bun-ga-ri" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "Ba-ren" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "Bu-run-đi" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "Kinh doanh" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "Bê-nin" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "Be-mư-đa" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "Bợ-ru-này Đa-ru-xa-làm" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "Bô-li-vi-a" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "Bra-xin" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "Ba-ha-ma" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "Bu-thăn" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "Quần Đảo Bu-vê" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "Bốt-xoă-na" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "Be-la-ru-xợ" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "Bê-li-xê" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "Ca-na-đa" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "Quần Đảo Cô-cô-x" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "Cộng Hoà Dân Chủ Công-gô" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "Cộng Hoà Trung Châu Phi" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "Công-gô" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "Thụy Sĩ" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "Cộng Hoà Cốt Đi-vouă" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "Quần Đảo Khu-kh" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "Chi-lê" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "Ca-mơ-runh" + +#: src/common/util.c:898 +msgid "China" +msgstr "Trung Quốc" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "Cô-lôm-bi-a" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Thương nghiệp Internic" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "Cốt-x-tha Ri-ca" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "Xéc-bi và Mon-te-nê-gợ-rô" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "Cu-ba" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "Cáp-ve-đe" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "Đảo Cợ-ri-x-mạ-x" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "Síp" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "Cộng Hoà Séc" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "Đức" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "Gi-bu-ti" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "Đan Mạch" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "Đô-mi-ni-cạ" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "Cộng Hoà Đô-mi-ni-cạ" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "An-giê-ri" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "Ê-cu-a-đọa" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "Tổ chức giáo dục" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "E-x-tô-ni-a" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "Ai Cập" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "Tây Sa-ha-ra" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "Ê-ri-tơ-rê-a" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "Tây Ban Nha" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "Ê-ti-ô-pi" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "Liên Bang Âu" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "Phần Lan" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "Phi-gi" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "Quần Đảo Phoa-kh-lận-đ" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "Mi-cợ-rô-nê-xi-a" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "Quần Đảo Pha-rô" + +#: src/common/util.c:928 +msgid "France" +msgstr "Pháp" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "Ga-bon" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "Vương Quốc Thống Nhất Anh va Bắc Ai-len" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "Gợ-rê-na-đa" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "Gi-oa-gi-a" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "Ghi-a-na Pháp" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "Quần Đảo Kênh Anh" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "Gha-na" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "Gi-boa-thạ" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "Đảo Băng" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "Găm-bi-ạ" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "Ghi-nê" + +#: src/common/util.c:940 +msgid "Government" +msgstr "Chính phủ" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "Gu-a-đe-lu-pợ" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "Ghi-nê Xích-đạo" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "Hy Lạp" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "Quần Đảo xan Gi-oa-gi-a và xan Xan-oui-chợ" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "Gua-tê-ma-la" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "Gu-ăm" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "Ghi-nê Bít-xau" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "Guy-ă-na" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "Hông Kồng" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "Quần Đảo Hơ-đh và Mơ-kh-đo-nựn" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "Hôn-đu-ra-xợ" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "Cợ-rô-a-ti-a" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "Ha-i-ti" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "Hung-ga-ri" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "Nam Dương" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "Ai-len" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "Do Thái" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "Đảo Man" + +#: src/common/util.c:959 +msgid "India" +msgstr "Ấn Độ" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "Cung cấp thông tin" + +#: src/common/util.c:961 +msgid "International" +msgstr "Quốc tế" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "Miền Đại Dương Ấn Độ Anh" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "I-rắc" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "I-ran" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "Băng Đảo" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "Ý" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "Giơ-xi" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "Gia-mê-ca" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "Gi-oa-đạn" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "Nhật Bản" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "Khi-nia" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "Ky-rơ-gy-xtanh" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "Căm Bốt" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "Ki-ri-ba-ti" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "Cô-mô-rô-x" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "Xan Kith-x và Ne-vi-xợ" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "Bắc Hàn" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "Nam Hàn" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "Cu-ouai-th" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "Quần Đảo Cay-man" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "Ca-xa-kh-x-thanh" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "Lào" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "Le-ba-non" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "Xan Lu-xi-a" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "Lich-ten-xtênh" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "Xợ-ri-lan-ca" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "Li-bê-ri-a" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "Lê-xô-thô" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "Li-tu-a-ni" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "Lúc-xăm-buac" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "Lát-vi-a" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "Li-bi-a" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "Ma-rốc" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "Mô-na-cô" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "Moa-đô-vạ" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "Y Mỹ" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "Ma-đa-gá-x-cạ" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "Quần Đảo Mác-san" + +#: src/common/util.c:999 +msgid "Military" +msgstr "Quân đội" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "Ma-xê-đô-ni" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "Ma-li" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "Miến Điện" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "Mông Cổ" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "Ma-cau" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "Quần Đảo Bắc Ma-ri-a-na" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "Ma-thi-ní-kh" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "Mô-ri-ta-ni-a" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "Mon-xe-rạc" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "Man-tơ" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "Mô-ri-sơ" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "Man-đi-vợ-x" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "Ma-la-uy" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "Mê-hi-cô" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "Mã Lai" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "Mô-xam-bí-kh" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "Na-mi-bi-a" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "Niu Ca-lê-đô-ni-a" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "Ni-giê" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Mạng Internic" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "Đảo Noa-phực" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "Ni-giê-ri-a" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "Ni-ca-ra-gua" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "Hoà Lan" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "Na Uy" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "Nê-pan" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "Nau-ru" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "Ni-u-e" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "Niu Xi-lân" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "Ô-man" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Tổ chức Phi lợi nhuận Internic" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "Pa-na-ma" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "Pê-ru" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "Pô-li-nê-xi Pháp" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "Pa-pu-a Niu Ghi-nê" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "Phi-luật-tân" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "Pa-ki-x-thănh" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "Ba Lan" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "Xan Pi-e và Mi-kê-lon" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "Pi-th-khenh" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "Pu-e-tô Ri-cô" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "Hạt Pa-le-x-tin" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "Bồ Đào Nha" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "Pa-lau" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "Pa-ra-guay" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "Qua-tă" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "Rê-u-ni-ợnh" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "Rô-ma-ni" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "ARPAnet kiểu cũ" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "Liên Bang Nga" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "Ru-oanh-đạ" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "A Rập Xau-đi" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "Quần Đảo Xô-lô-mon" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "Xây-sen" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "Xu-đan" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "Thuỵ Điển" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "Xin-ga-po" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "Xan He-le-na" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "Xlô-ven" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "Quần Đảo X-van-băt và Dan May-en" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "Cộng Hoà Xlô-vác" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "Xi-ê-ra Lê-ôn" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "Xan Ma-ri-nô" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "Xê-nê-gan" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "Xô-ma-li" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "Xu-ri-nam" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "Xao Tô-mê và Pợ-rin-xi-pê" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "Liên xô trước" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "En-xan-va-đoa" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "Xi-ri" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "Xouă-xi-lan" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "Quần Đảo Tổc và Cai-co-x" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "Chê-đ" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "Miền Nam Pháp" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "Tô-gô" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "Thái Lan" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "Ta-gí-khi-x-thanh" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "To-ke-lau" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "Đông Ti-mọa" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "Tổc-mê-ni-x-tanh" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "Tu-ni-xi-a" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "Tông-ga" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "Thổ Nhĩ Kỳ" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "Trinh-i-đat và To-ba-gô" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "Tu-va-lu" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "Đài Loan" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "Tan-xa-ni-a" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "U-cợ-rainh" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "U-gan-đa" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "Vương Quốc Anh Thống Nhất" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "Mỹ" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "U-ru-guay" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "U-xơ-bê-ki-x-tanh" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "Bang Thành Phố Va-ti-can" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "Xan Vin-xen và Gợ-re-na-đinh" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "Vê-nê-xu-ê-la" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "Quần Đảo Vơ-ginh Anh" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "Quần Đảo Vơ-ginh Mỹ" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "Việt Nam" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "Va-nu-a-tu" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "Quần Đảo Oua-lit và Phu-tu-na" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "Xa-moa" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "Y-ê-men" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "May-oth" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "Nam Tư" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "Nam Phi" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "Xăm-bi-a" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "Xim-ba-buê" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "Chưa biết" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "Mở cửa sổ đối thoại" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "Gởi tập tin" + +#: src/common/xchat.c:728 +#, fuzzy +msgid "_User Info (WhoIs)" +msgstr "Thông tin người dùng (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +#, fuzzy +msgid "O_perator Actions" +msgstr "Hành động quản trị" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "Cho quyền Quản trị" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "Bỏ quyền Quản trị" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "Cho quyền Tiếng nói" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "Bỏ quyền Tiếng nói" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "Đá/Đuổi" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "Đá" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "Đuổi" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "Đá đuổi" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "Rời kênh đi" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "Vào kênh..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "Nhập kênh cần vào :" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "Liên kết máy phục vụ" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Máy phục vụ Ping" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "Ẩn phiên bản" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "QT" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "BỏQT" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "tạm biệt" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "Nhập lý do đá %s:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "Gởi_tệp" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "Đối thoại" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "Whois (là ai?)" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "Gởi" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "Trò chuyện" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "Xóa trống" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "Không thể kết nối đến bộ nối phiên chạy" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "Lỗi chạy xong NameHasOwner (tên có người sở hữu)" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "Lỗi chạy xong Command (lệnh)" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "truy cập từ xa" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "bổ sung cho truy cập từ xa bằng DBUS" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "Không thể kết nối đến bộ nối phiên chạy: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "Lỗi lấy %s: %s\n" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "_Giới thiệu" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "Ứng dụng khách IRC đa nền" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "Sơ đồ ký tự" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "Chưa kết nối." + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "Phải chọn một số việc đuổi ra." + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "Bạn có chắc muốn gỡ bỏ mọi việc đuổi ra trong %s không?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "Lọc" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "Từ" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "Ngày" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "Bạn có thể mở cửa sổ Danh Sách Đuổi Ra chỉ khi trong một thẻ kênh." + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "X-Chat: Danh Sách Đuổi Ra (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "Gỡ bỏ" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "Xén" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "Cập nhật" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "Đang hiển thị %d/%d người dùng trên %d/%d kênh." + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "Hãy chọn tên tập tin xuất" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "_Vào kênh" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "_Chép tên kênh" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "Chép c_hủ đề" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat: Danh Sách Kênh (%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "_Tìm" + +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "Tải về _danh sách" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "_Lưu danh sách..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "Hiển thị chỉ:" + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "kênh có" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "đến" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "người dùng." + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "Tìm trong:" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "Tên kênh" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "Cách tìm:" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "Tìm đơn giản" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "Khớp mẫu (ký tự đại diện)" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "Biểu thức chính quy" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "Tìm:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "Gởi tập tin cho %s" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "Tập tin đó không tiếp tục được." + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"Không thể truy cập tập tin: %s\n" +"%s.\n" +"Nên không thể tiếp tục lại." + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" +"Tập tin nằm trong thư mục tải về là lớn hơn điều đã đưa ra nên không thể " +"tiếp tục lại." + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "Không thể tiếp tục lại cùng một tập tin từ hai người khác." + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat: Tải lên/về" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "Trạng thái" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "Tập tin" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "Giờ tới xấp xỉ" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "Cả hai" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "Tải lên" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "Tải về" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "Chi tiết" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "Tập tin:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "Địa chỉ:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "Hủy bỏ" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "Chấp nhận" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "Tiếp tục" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "Mở thư mục..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: Danh Sách Trò Chuyện Trực Tiếp (DCC)" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "Nhận" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "Gởi" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "Giờ bắt đầu" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "• MỚI •" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "SỬA ĐI" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "Tên" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "Lệnh" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "Đem lên" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "Đem xng" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "Thôi" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "Lưu" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "Thêm mới" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "Xóa" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "Sắp xếp" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "Trợ giúp" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "Không tự động kết nối đến máy phục vụ" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "Dùng thư mục cấu hình khác" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "Không tự động nạp bổ sung nào" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "Hiển thị thư mục của các bổ sung cần tự động nạp" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "Hiển thị thư mục cấu hình của người dung" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "Mở địa chỉ URL dạng « irc://máy:cổng/kênh »" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "Thi hành lệnh:" + +#: src/fe-gtk/fe-gtk.c:132 +#, fuzzy +msgid "Open URL or execute command in an existing XChat" +msgstr "Mở địa chỉ URL trong tiến trình XChat đang chạy" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "Khởi chạy bị thu nhỏ. Cấp: 0=Chuẩn 1=Biểu tượng 2=Khay" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "cấp" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "Hiển thị thông tin phiên bản" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"Lỗi mở phông chữ :\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "Bộ đệm tìm kiếm là trống.\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d byte" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "Hàng đợi gởi mạng: %d byte" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"Hành động « Chạy lệnh » chạy dữ liệu trong « Dữ liệu 1 » như thế nó đã được gõ " +"vào hộp nhập nơi bạn đã bấm dãy phím đó. Vì vậy nó có thể bao gồm câu chữ " +"(mà sẽ được gởi cho kênh/người đó), lệnh hay lệnh của người dùng. Khi chạy, " +"mọi ký tự « \\n » trong « Dữ liệu 1 » được dùng để phân cách những lệnh riêng, " +"vì thế có thể chạy nhiều lệnh đồng thời. Nếu bạn muốn xem ký tự « \\ » trong " +"câu thật, hãy gõ « \\\\ » thay thế." + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"Lệnh « Đổi trang » chuyển đổi giữa các trang trong cuốn vở. Hãy đặt « Dữ liệụ " +"1 » thành trang tới đó bạn muốn chuyển đổi. Nếu « Dữ liêu 2 » được đặt thành " +"gì, việc chuyển đổi sẽ cân xứng với vị trí hiện có." + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"Lệnh « Chèn vào bộ đệm » chèn nội dung của « Dữ liệu 1 » vào trường nơi bạn đã " +"bấm dãy phím đó, tại vị tri con trỏ hiện có" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"Lệnh « Cuộn trang » cuộn ô điều khiển văn bản lên hay xuống theo một trang " +"hay một dòng. Hãy đặt « Dữ liệu 1 » thành một của:\n" +"Up\t\tlên\n" +"Down\txuống\n" +"+1\n" +"-1" + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" +"Lệnh « Đặt bộ đệm » đặt trường nơi dãy phím được nhập thành nội dung của « Dữ " +"liệu 1 »" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"Lệnh « Lệnh cuối » đặt trường để chứa lệnh mới nhập — giống như khi bấm phím " +"mũi tên lên trong trình bao" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"Lệnh « Lệnh kế » đặt trường chứa lệnh kế tiếp được nhập — giống như khi bấm " +"phím mũi tên xuống trong trình bao" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"Lệnh này thay đổi đoạn chữ trong trường nhập để nhập xong tên hiệu hay lệnh " +"chưa hoàn thành. Nếu « Dữ liệu 1 » đã được đặt, việc bám phím Tab hai lần " +"trong chuỗi sẽ chọn tên hiệu trước, không phải tên hiệu sau." + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"Lệnh này cuộn lên và xuống danh sách các tên hiệu. Nếu « Dữ liệu 1 » được đặt " +"thành gì, nó sẽ cuộn lên, nếu không thì nó sẽ cuộn xuống." + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" +"Lệnh này so sánh từ mới nhập vào trường với danh sách thay thế, và thay thế " +"nó nếu tìm thấy từ khớp" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "Lệnh này di chuyển thẻ trươc phía bên trái theo một điều" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "Lệnh này di chuyển thẻ trươc phía bên phải theo một điều" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "Lệnh này di chuyển nhóm thẻ hiện thời phía bên trái" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "Lệnh này di chuyển nhóm thể hiện thời phía bên phải" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "Đẩy dòng nhập vào lịch sử nhưng không gởi cho máy phục vụ" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "Gặp lỗi khi nạp cấu hình tổ hợp phím" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<không có>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "Đổi" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "Phím" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "Hành động" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: Phím tắt" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "Dữ liệu 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "Dữ liệu 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "Gặp lỗi khi mở tập tin cấu hình phím\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"Gặp tên phím lạ %s trong tập tin cấu hình tổ hợp phím\n" +"nên hủy bỏ việc nạp. Hãy sửa chữa tập tin « %s/keybindings.conf ».\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Gặp hành động lạ %s trong tập tin cấu hình tổ hợp phím.nnên hủy bỏ việc nạp. " +"Hãy sửa chữa tập tin « %s/keybindings ».\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"Ngờ dòng Dữ liêu (bắt đầu « Dx{:|!}) » nhưng nhận:\n" +"%s\n" +"\n" +"nên hủy bỏ việc nạp. Hãy sửa chữa tập tin « %s/keybindings ».\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"Tập tin cấu hình tổ hợp phím bị hỏng nên hủy bỏ việc nạp.\n" +"Hãy sửa chữa tập tin « %s/keybindings.conf ».\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "Không thể ghi vào tập tin đó." + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "Không thể đọc tập tin đó." + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "Bộ lọc đã có." + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "Riêng" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "Thông báo" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "Mời" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "Thôi bỏ qua" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "Hãy nhập bộ lọc cần bỏ qua:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: Danh Sách Bỏ Qua" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "Thống Kê Bỏ Qua:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "Kênh:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "Riêng:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "Thông báo :" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "Mời:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "Thêm..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "Tên kênh quá ngắn nên hãy thử lại." + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: Kết nối hoàn tất" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "Kết nối đến %s hoàn tất." + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" +"Trong cửa sổ Danh Sách Máy Phục Vụ, chưa nhập kênh (phòng trò chuyện) cần " +"tham gia tự động cho mạng này." + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "Tiếp sau đây bạn có muốn làm gì?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "Gì cả, tôi sẽ tham gia kê_nh sau này." + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "_Vào kênh này:" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "Nến bạn có biết tên kênh bạn muốn vào, hãy nhập nó vào đây." + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "_Mở cửa sổ Danh Sách Kênh." + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "Việc lấy Danh Sách Kênh có lẽ sẽ mất một hai phút." + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "_Luôn hiển thị hộp thoại này một khi kết nối." + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "Đối thoại với" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "Chủ đề cho %s là: %s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "Chưa đặt chủ đề" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" +"Máy phục vụ này vẫn còn có %d kênh hay đối thoại được liên quan đến nó. Đóng " +"hết không?" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "Thoát khỏi XChat không?" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "Đừng hỏi lần kế tiếp." + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "Bạn hiện thời có kết nối với %i mạng IRC." + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "Bạn có chắc muốn thoát không?" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "Có một số việc truyền tập tin còn hoặt động." + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "Thu nhỏ về _Khay" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "Chèn mã Thuộc Tính hay mã Màu" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>Đậm</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>Gạch dưới</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "Chuẩn" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "Màu sắc 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "Màu sắc 8-15" + +#: src/fe-gtk/maingui.c:1612 +#, fuzzy +msgid "_Settings" +msgstr "Thiết _lập" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "Ẩn các tin nhẳn vào/rời" + +#: src/fe-gtk/maingui.c:1625 +#, fuzzy +msgid "_Extra Alerts" +msgstr "Cảnh giác" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "Kêu bíp khi nhạn tin nhẳn" + +#: src/fe-gtk/maingui.c:1628 +#, fuzzy +msgid "Blink Tray _Icon" +msgstr "Chớp biểu tượng khay khi:" + +#: src/fe-gtk/maingui.c:1629 +#, fuzzy +msgid "Blink Task _Bar" +msgstr "Chớp thanh tác vụ khi:" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +#, fuzzy +msgid "_Detach" +msgstr "_Gỡ thẻ ra" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "Đón_g" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "Giới hạn người dùng phải là con số.\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "Bảo vệ chủ đề" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "Không có tin nhẳn bên ngoài" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "Bí mật" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "Chỉ mời" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "Đã điều tiết" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "Danh Sách Đuổi Ra" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "Từ khoá" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "Giới hạn người dùng" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "Hiện/Ẩn danh sách người dùng" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"Không thể đặt nền trong suốt.\n" +"\n" +"Có thể bạn sử dụng trình quản lý cửa sổ\n" +"không tuân theo mà chưa được hỗ trợ.\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "Hãy nhập tên hiệu mới:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "Không biết máy" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "Tên thật:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "Người dùng:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "Quốc gia:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "Máy phục vụ :" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "cách đây %u phút" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "Tin nhẳn cuối:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "Thông điệp Vắng mặt:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"Thanh trình đơn mới ẩn. Bạn có thể hiển thị nó lần nữa bằng cách bấm phím " +"chức năng F9 hoặc nhấn-phải vào phần rỗng nào trong vùng văn bản chính." + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "Mở liên kết trong trình duyệt" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "Chép liên kết đã chọn" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "Vào kênh" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "Rời kênh đi" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "Quay lại kênh" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat: Trình đơn người dùng" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "Sửa trình đơn này..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "Lấy danh sách kênh..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"Lệnh người dùng — mã đặc biệt:\n" +"\n" +"%c \t\tkênh hiện có\n" +"%e \t\ttên mạng hiện có\n" +"%m \t\tthông tin về máy\n" +"%n \t\ttên hiệu của bạn\n" +"%t \t\tgiờ/ngày\n" +"%v \t\tphiên bản xchat\n" +"%2 \t\ttừ 2\n" +"%3 \t\ttừ 3\n" +"&2 \t\ttừ 2 đến kết thúc dòng\n" +"&3 \t\ttừ 3 đến kết thúc dòng\n" +"\n" +"eg:\n" +"/cmd chào anh\n" +"\n" +"%2 sẽ là « chào »\n" +"&2 sẽ là « chào anh »." + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Nút trên danh sách người dùng — mã đặc biệt:\n" +"\n" +"%a \t\tmọi tên hiệu đã chọn\n" +"%c \t\tkênh hiện có\n" +"%e \t\ttên mạng hiện có\n" +"%h \t\ttên máy của tên hiệu đã chọn\n" +"%m \t\tthông tin về máy\n" +"%n \t\ttên hiệu của bạn\n" +"%s \t\ttên hiệu đã chọn\n" +"%t \t\tgiờ/ngày\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"Nút trên đối thoại — mã đặc biệt:\n" +"\n" +"%a \t\tmọi tên hiệu đã chọn\n" +"%c \t\tkênh hiện có\n" +"%e \t\ttên mạng hiện có\n" +"%h \t\ttên máy của tên hiệu đã chọn\n" +"%m \t\tthông tin về máy\n" +"%n \t\ttên hiệu cũa bạn\n" +"%s \t\ttên hiệu đã chọn\n" +"%t \t\tgiờ/ngày\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"Trả lời CTCP — mã đặc biệt:\n" +"\n" +"%d \t\tdữ liệu (toàn bộ CTCP)\n" +"%e \t\ttên mạng hiện có\n" +"%m \t\tthông tin về máy\n" +"%s \t\ttên hiệu đã gởi CTCP\n" +"%t \t\tgiờ/ngày\n" +"%2 \t\ttừ 2\n" +"%3 \t\ttừ 3\n" +"&2 \t\ttừ 2 đến kết thúc dòng\n" +"&3 \t\ttừ 3 đến kết thúc dòng\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"Quản lý địa chỉ Mạng — mã đặc biệt:\n" +"\n" +"%s = chuỗi của địa chỉ URL\n" +"\n" +"Việc đặt dấu ! trước lệnh ngụ ý\n" +"rằng nó nên được gởi cho\n" +"trình bao thay cho XChat" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: Lệnh định nghĩa riêng" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: Trình đơn bât lên danh sách người dùng" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "Thay thế bằng" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: Thay thế" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: Quản lý URL" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: Nút danh sách người dùng" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: Nút đối thoại" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: Trả lời CTCP" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "Danh _sách mạng..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "_Mới" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "Thẻ máy phục vụ..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "Thẻ kênh..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "Cửa sổ máy phục vụ..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "Cửa sổ kênh..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "Nạp bổ sung hay văn _lênh..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "T_hoát" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "_Xem" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "Thanh t_rình đơn" + +#: src/fe-gtk/menu.c:1592 +msgid "_Topic Bar" +msgstr "_Thanh chủ đề" + +#: src/fe-gtk/menu.c:1593 +msgid "_User List" +msgstr "Danh sách người _dùng" + +#: src/fe-gtk/menu.c:1594 +msgid "U_serlist Buttons" +msgstr "Nút danh _sách người dùng" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "Nút _chế độ" + +#: src/fe-gtk/menu.c:1597 +msgid "_Channel Switcher" +msgstr "Bộ _chuyển đổi kênh" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "_Thẻ" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "Câ_y" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "Bộ do mạ_ng" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "Tất" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "Đồ thị" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "Máy _phục vụ" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "_Ngắt kết nối" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "_Tái kết nối" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "Vào kênh..." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "Vào kênh..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "Có nhãn Vắng mặt" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "Trình đơn người _dùng" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "Thiết _lập" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "Tù_y thích" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "Cấp cao" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "Tự thay thế..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "Trả lơi CTCP..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "Nút đối thoại..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "Phím tắt..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "Sự kiện chữ..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "Quản lý địa chỉ URL..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "Lệnh người dùng..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "Nút danh sách người dùng" + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "Bật lên Danh sách Người dùng" + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "_Cửa sổ" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "Danh Sách Đuổi Ra..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "Sơ Đồ Ký Tự..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "Trò chuyện trực tiếp..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "Việc truyền tập tin..." + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "Danh Sách Đuổi Ra..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "Danh sách Bỏ qua..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "Bổ sung và Văn lệnh..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "Bản ghi thô..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "Bộ lấy địa chỉ URL..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "Đặt lại dòng đánh dấu" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "Xóa t_rắng văn bản" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "Tìm kiếm trong văn bản..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "Lưu văn bản..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "Trợ g_iúp" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "_Nội dung" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "_Giới thiệu" + +#: src/fe-gtk/menu.c:2147 +#, fuzzy +msgid "_Attach" +msgstr "Gắn cửa _sổ" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "Gặp cuối cùng" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "Ngoại tuyến" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "Chưa bao giờ" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "cách đây %d phút" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "Trực tuyến" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "Hãy nhập tên hiệu cần thêm:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "Thông báo trên các mạng này:" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "Cho phép tạo danh sách các mạng định giới bằng dấu phẩy." + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "XChat: Danh Sách Bỏ Qua" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "Mở đối thoại" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" +"Không thể tìm « notify-send » để mở các cảnh giác trong khung thoại.\n" +"Xin hãy cài đặt phần mềm « libnotify »." + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "XChat: đang kết nối với %u mạng và %u kênh" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "_Phục hồi" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "Ẩ_n" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "_Bật chớp" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "Thông điệp kênh" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "Tin nhẳn riêng" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "Tin nhẳn đã tô sáng" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "Vắng mặt" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat: nhận được tin nhẳn đã tô sáng từ : %s (%s)" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat: Nhận %u tin nhẳn đã tô sáng, mới nhất từ : %s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat: Nhận tin nhẳn chung mới từ : %s (%s)" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat: Nhận %u tin nhẳn chung mới." + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat: Nhận tin nhẳn riêng từ : %s (%s)" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "XChat: Nhận %u tin nhẳn riêng, mới nhất từ : %s (%s)" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat: Nhận lời mời gởi tập tin từ : %s (%s)" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "XChat: Nhận %u lời mời gởi tập tin, mới nhất từ : %s (%s)" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "Phiên bản" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "Mô tả" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "Chọn bổ sung hay văn lệnh cần nạp" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: Bổ sung và Văn lệnh" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "_Nạp..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "_Bỏ nạp" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "Lưu dạng..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: Bản ghi thô (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "Xóa trống bản ghi thô" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "Bạn đã mở việc tìm kiếm này cho một cửa sổ không còn tồn tại lại." + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "Tìm kiếm gặp kết thúc, không tìm thấy gì." + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: Tìm kiếm" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "_Khớp chữ hoa/thường" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "Tìm _ngược" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "_Tìm" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "Mạng mới" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "Thật gỡ bỏ mạng « %s » và tất cả máy phục vụ của nó không?" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "Kênh" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat: Danh Sách Kênh (%s)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "Mật khẩu :" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "_Sửa" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "Không cho phép trường « Tên người dùng » hay « Tên thật » bị bỏ trống." + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: Sửa %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "Máy phục vụ cho %s" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "Kết nối đến chỉ máy phục vụ đã chọn" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "Không quay lại qua tất cả các máy phục vụ khi kết nối bị ngắt." + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "Chi tiết cá nhân" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "Dùng thông tin người dùng toàn cục" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "Tê_n hiệu :" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "Chọn thứ hai:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "Tên người _dùng:" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "_Tên thật:" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "Đang kết nối" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "Tự động kết nối đến mạng này khi khởi chạy" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "Dùng máy phục vụ ủy nhiệm" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "Dùng SSL cho mọi máy phục vụ trên mạng này" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "Chấp nhận chứng nhận SSL không hợp lệ" + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "Rời kênh đi:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "Các kênh cần vào, định giới bằng dấu phẩy còn không có dấu cách." + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "Lệnh kết nối:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"Lệnh thêm cần thực hiện sau khi kết nối được. Nếu bạn muốn nhập nhiều lệnh, " +"hãy đặt lệnh này thành « LOAD -e <tên_tập_tin> », mà <tên_tập_tin> là tập tin " +"kiểu văn bản chứa danh sách các lệnh cần thực hiện. [load: nạp]" + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "Mật khẩu máy phục vụ tên hiệu :" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"Nếu tên hiệu bạn cần thiết mật khẩu, hãy nhập nó vào đây. Không phải tất cả " +"các mạng IRC hỗ trợ tính năng này." + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "Mật khẩu máy phục vụ :" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "Mật khẩu cho mấy phục vụ: nếu không chắc thì bỏ trống." + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "Bộ ký tự :" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: Danh sách mạng" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "Thông tin người dùng" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "Chọn thứ ba:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "Mạng" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "Bỏ qua danh sách mạng khi khởi chạy" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "_Sửa..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "Sắp _xếp" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" +"Sắp xếp danh sách các mạng theo thứ tự abc. Hãy dùng tổ hợp phím SHIFT+lên " +"và SHIFT+xuống để di chuyển mỗi hàng." + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "_Kết nối" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "Hình thức hộp văn bản" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "Phông:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "Ảnh nền:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "Dòng cuộn ngược:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "Tên hiệu có màu" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "Cho mỗi người trên IRC có một màu riêng" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "Thụt lệ tên hiệu" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "Canh lề bên phải các tên hiệu" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "Nền trong suốt" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "Hiện dòng đánh dấu" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "Chèn dòng màu đỏ sau đoạn chữ đã đọc cuối cùng." + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "Thiết lập trong suốt" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "Đỏ :" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "Xanh lá cây:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "Xanh dương:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "Ghi giờ" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "Bật ghi giờ" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "Định dạng ghi giờ :" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "Hãy sử dụng lệnh « man strftime » để tìm thấy chi tiết." + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "Thứ tự đã nói cuối cùng" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "Hộp nhập" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "Dùng phông chữ và màu của hộp văn bản" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "Bắt lỗi chính tả" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "Gõ xong tên hiệu" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "Tự động gõ xong tên hiệu (không có phím TAB)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "Hậu tố gõ xong tên hiệu :" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "Sắp xếp cách gõ xong tên hiệu :" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "Mã hộp nhập" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "Giải thích %nnn là một giá trị ASCII" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "Giải thích %C, %B là Màu, Đậm v.v." + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, Quản trị trước" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, Quản trị sau" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "Chưa sắp xếp" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "Trái (Trên)" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "Trái (Dưới)" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "Phải (Trên)" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "Phải (Dưới)" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "Trên" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "Dưới" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "Ẩn" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "Danh sách người dùng" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "HIện tên máy trong danh sách người dùng" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "Sắp xếp danh sách người dùng theo :" + +#: src/fe-gtk/setup.c:205 +msgid "Show user list at:" +msgstr "Hiện danh sách người dùng ở :" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "Theo dõi Vắng mặt" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "" +"Theo dõi trạng thái Vắng mặt của mọi người dùng, cũng nhãn bằng màu khác" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "Trên kênh nhỏ hơn:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "Hành động khi nhấn đôi" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "Cửa sổ" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "Thẻ" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "Luôn" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "Chỉ thẻ đã yêu cầu" + +#: src/fe-gtk/setup.c:242 +#, fuzzy +msgid "Tree" +msgstr "Câ_y" + +#: src/fe-gtk/setup.c:249 +#, fuzzy +msgid "Switcher type:" +msgstr "Cách tìm:" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "Mở thẻ thêm cho thông điệp máy phục vụ" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "Mở thẻ thêm cho thông báo máy phục vụ" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "Mở thẻ mới khi bạn nhận tin nhẳn riêng" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "Sắp xếp thẻ theo thứ tự abc" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "Thẻ nhỏ" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "Tới thẻ mới:" + +#: src/fe-gtk/setup.c:258 +msgid "Show channel switcher at:" +msgstr "Hiện bộ chuyển đổi kênh ở :" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "Giảm nhãn thẻ thành:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "chữ." + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "Thẻ hay Cửa sổ" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "Mở kênh trong:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "Mở đối thoại trong:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "Mở tiện ích trong:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "Mở DCC, Bỏ qua, Thông báo v.v. trong thẻ hay cửa sổ?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "Không" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "Có" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "Luôn luôn duyệt tìm thư mục lưu" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "Tập tin và Thư mục" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "Tự chấp nhận tập tin đã đưa ra:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "Tải tập tin về:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "Di chuyển tập tin hoàn tất sang:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "Lưu tên hiệu trong tên tập tin" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "Thiết lập mạng" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "Lấy địa chỉ của tôi từ máy phục vụ IRC" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"Gọi địa chỉ thật của bạn từ máy phục vụ IRC. Hãy bật tùy chon này nếu bạn có " +"địa chỉ số « 192.168.*.* »." + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "Địa chỉ IP DCC:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "Tuyên bố bạn ở địa chỉ này khi đưa ra tập tin." + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "Cổng gởi DCC đầu :" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "Cổng gởi DCC cuối:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!Để mọi cổng có giá trị số không cho toàn bộ phạm vị." + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "Tốc độ truyền tập tin tối đa (byte/giây)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "Một việc tải lên:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "Tốc độ tối đa cho môt việc truyền" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "Một việc tải về:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "Tổng số việc tải lên:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "Tốc độ tối đa cho mọi tập tin" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "Tổng số việc tải về:" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "Cảnh giác" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "Hiện thị khung thoại của khay khi:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "Chớp biểu tượng khay khi:" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "Chớp thanh tác vụ khi:" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "Kêu bíp khi:" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "Bật biểu tượng khay của hệ thống" + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "Tin nhẳn đã tô sáng" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "Tin nhẳn đã tô sáng là tin nhẳn chứa tên hiệu của bạn, cũng như :" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "Từ thêm cần tô sáng:" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "Tên hiệu cần không tô sáng:" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "Tên hiệu cần tô sáng luôn luôn:" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "Định,giới,nhiều,từ,bằng,dấu,phẩy." + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "Tin nhẳn mặc định" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "Thoát:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "Rời kênh đi:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "Vắng mặt:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "Vắng mặt" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "Thông báo tin nhẳn vắng mặt" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "Thông báo tin nhẳn vắng mặt của bạn trên mọi kênh" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "Hiện Vắng mặt một lần" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "Hiện tin nhẳn vắng mặt trùng chỉ một lần" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "Tự bỏ nhãn Vắng mặt" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "Bỏ nhãn bạn là Vắng mặt trước khi gởi tin nhẳn" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "Thiết lập cấp cao" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "Trễ tự tái kết nối:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "Trình bày CHẾ ĐỘ dạng thô" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "WHOIS khi thông báo" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" +"Gởi lệnh « /WHOIS » (là ai?) khi người dùng trong danh sách thông báo của bạn " +"mới trực tuyến" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "Ẩn các tin nhẳn vào/rời" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "Ẩn các tin nhẳn vào/rời kênh theo mặc định" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "Tự mở cửa sổ DCC" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "Cửa sô Gởi" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "Cửa sổ Nhận" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "Cửa sổ Trò chuyện" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "Ghi lưu" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "Bật ghi lưu các đối thoại" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "Ghi lưu tên tập tin:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=Máy %c=Kênh %n=Mạng." + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "Ghi giờ vào bản ghi" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "Dạng ghi giờ bản ghi:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(Tắt)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "Ủy nhiệm MS (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "Mọi kết nối" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "Chỉ máy phục vụ IRC" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "Chỉ DCC lấy" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "Địa chỉ của bạn" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "Đóng kết với:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "Chỉ có ích trên máy tính có nhiều địa chỉ." + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "Máy phục vụ ủy nhiệm" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "Tên máy:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "Cổng:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "Kiểu :" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "Dùng ủy nhiệm cho :" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "Xác thực ủy nhiệm" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "Xác thực (chỉ Ủy nhiệm MS, HTTP hay Socks5)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "Xác thực (chỉ HTTP hay Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "Tên người dùng:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "Mật khẩu :" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "Chọn tập tin ảnh" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "Chọn thư mục tải về" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "Chọn phông" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "Duyệt..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "Nhãn người dùng đã nhận biết bằng:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "Nhãn người dùng chưa nhận biết bằng:" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "Mở thư mục Dữ liệu" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "Chọn màu" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "Màu chữ" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "Màu mIRC:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "Màu cục bộ :" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "Tiền cảnh:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "Nền:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "Đánh dấu chữ" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "Màu giao diện" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "Dữ liệu mới:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "Dòng đánh dấu :" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "Tin nhẳn mới:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "Người dùng vắng mặt:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "Tô sáng:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "Sự kiện" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "Tập tin âm thanh" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "Chon tập tin âm thanh" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "Phương pháp phát âm thanh:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "Trình bên ngoài _phát âm thanh:" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "Trình _bên ngoài" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "_Tự động" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "Thư _mục tập tin âm thanh:" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "Tập tin âm thanh:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "_Duyệt..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "_Phát" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "Giao diện" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "Hộp văn bản" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "Danh sách Người dùng" + +#: src/fe-gtk/setup.c:1703 +msgid "Channel switcher" +msgstr "Bộ chuyển đổi kênh" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "Màu sắc" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "Đang trò chuyện" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "Chung" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "Âm thanh" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "Thiết lập mạng" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "Việc truyền tập tin" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "Loại" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" +"Không thể đặt cây bên trên hay bên dưới.\n" +"Trước hết hãy chuyển đổi sang bố trí <b>Thanh</b> trong trình đơn <b>Xem</b>." + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" +"Một sô thiết lập đã được thay đổi nên cần phải khởi chạy lại để hoạt động " +"đầy đủ." + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"•• CẢNH BÁO ••\n" +"Việc tự động chấp nhận DCC vào thư mục\n" +"chính của bạn có lẽ nguy hiểm và cho phép\n" +"người khác tấn công hệ thống của bạn.\n" +"V.d. người khác có thể gởi cho bạn\n" +"một « .bash_profile »." + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: Tùy thích" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "Gặp lỗi khi phân tách chuỗi đó" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "Tín hiệu này chỉ nhận %d đối sô, $%d không hợp lệ" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "In tập tin các văn bản" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "Sửa sự kiện" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ Số" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "Nạp từ..." + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "Kiểm tra hết" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: Lấy URL" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "Xóa trống danh sách" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "Chép URL đã chọn" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "Chép" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "Lưu danh sách vào tập tin" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d quản trị, %d tổng số" + +#~ msgid "" +#~ "Set per channel options\n" +#~ "CHANOPT CONFMODE ON|OFF - Toggle conf mode/showing of join and part " +#~ "messages\n" +#~ "CHANOPT COLORPASTE ON|OFF - Toggle color paste\n" +#~ "CHANOPT BEEP ON|OFF - Toggle beep on message\n" +#~ "CHANOPT TRAY ON|OFF - Toggle tray blink on message" +#~ msgstr "" +#~ "Tùy chọn từng kênh:\n" +#~ "CHANOPT CONFMODE ON|OFF — bật/tắt chế độ hội thảo, hiển thị các thông " +#~ "điệp\n" +#~ "\tkiểu vào và rời\n" +#~ "CHANOPT COLORPASTE ON|OFF — bật/tắt dán màu\n" +#~ "CHANOPT BEEP ON|OFF — bật/tắt kêu bíp khi nhận thông điệp\n" +#~ "CHANOPT TRAY ON|OFF - bật/tắt chớp khay khi nhận tin nhẳn\n" +#~ "\n" +#~ "[CHANOPT : viết tắt cho \"channel option\", tùy chọn kênh;\n" +#~ "CONFMODE : viết tắt cho \"conference mode\", chế độ hội thảo;\n" +#~ "ON|OFF : bật hay tắt;\n" +#~ "COLORPASTE : dán màu;\n" +#~ "BEEP : kêu bíp, tiếng bíp;\n" +#~ "TRAY : khay]" + +#~ msgid "Direct client-to-client" +#~ msgstr "Khách-đến-khách trực tiếp" + +#~ msgid "Send File" +#~ msgstr "Gởi tập tin" + +#~ msgid "Offer Chat" +#~ msgstr "Mời trò chuyện" + +#~ msgid "Abort Chat" +#~ msgstr "Hủy bỏ trò chuyện" + +#~ msgid "Userinfo" +#~ msgstr "Thông tin người dùng" + +#~ msgid "Clientinfo" +#~ msgstr "Thông tin khách" + +#~ msgid "Time" +#~ msgstr "Thòi gian" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "QTrị" + +#~ msgid "Kill this user" +#~ msgstr "Kết thúc người dùng này" + +#~ msgid "Mode" +#~ msgstr "Chế độ" + +#~ msgid "Give Half-Ops" +#~ msgstr "Cho quyền Nửa quản trị" + +#~ msgid "Take Half-Ops" +#~ msgstr "Bỏ quyền Nửa quản trị" + +#~ msgid "Ignore" +#~ msgstr "Bỏ qua" + +#~ msgid "Ignore User" +#~ msgstr "Bỏ qua người dùng" + +#~ msgid "UnIgnore User" +#~ msgstr "Thôi bỏ qua người dùng" + +#~ msgid "Info" +#~ msgstr "Thông tin" + +#~ msgid "Who" +#~ msgstr "Ai" + +#~ msgid "DNS Lookup" +#~ msgstr "Tra cứu DNS" + +#~ msgid "Trace" +#~ msgstr "Tìm đường" + +#~ msgid "UserHost" +#~ msgstr "NgườiMáy" + +#~ msgid "External" +#~ msgstr "Bên ngoài" + +#~ msgid "Traceroute" +#~ msgstr "Tìm dấu vết đường" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "About XChat" +#~ msgstr "Giới thiệu về X-Chat" + +#~ msgid "Unban" +#~ msgstr "Bỏ đuổi ra" + +#~ msgid "Blink tray on message" +#~ msgstr "Chớp khay khi nhạn tin nhẳn" + +#~ msgid "Show join/part messages" +#~ msgstr "Hiển thị tin nhẳn vào/rời" + +#~ msgid "Color paste" +#~ msgstr "Dán màu" + +#~ msgid "_Close Tab" +#~ msgstr "Đón_g thẻ" + +#~ msgid "Channel List..." +#~ msgstr "Danh Sách Kênh..." + +#~ msgid "Notify List..." +#~ msgstr "Danh sách Thông báo..." + +#~ msgid "_Close Window" +#~ msgstr "Đóng _cửa sổ" + +#~ msgid "User" +#~ msgstr "Người dùng" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: Danh sách Thông báo" + +#~ msgid "C_hannels to join:" +#~ msgstr "Các kên_h cần vào :" + +#~ msgid "Channel Switcher" +#~ msgstr "Bộ chuyển đổi kênh" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "Không có thẻ nữa còn mở, thoát khỏi xchat không?" + +#~ msgid "_Layout" +#~ msgstr "_Bố trị" + +#~ msgid "Quit..." +#~ msgstr "Thoát..." + +#~ msgid "Resizable user list" +#~ msgstr "Danh sách người dùng có thể thay đổi kích cỡ" + +#~ msgid "Left" +#~ msgstr "Trái" + +#~ msgid "Right" +#~ msgstr "Phải" + +#~ msgid "Show tabs at:" +#~ msgstr "Hiện thẻ ở :" diff --git a/xchat-2.8.8/po/xchat.pot b/xchat-2.8.8/po/xchat.pot new file mode 100644 index 0000000..f796c94 --- /dev/null +++ b/xchat-2.8.8/po/xchat.pot @@ -0,0 +1,5264 @@ +# SOME DESCRIPTIVE TITLE. +# This file is put in the public domain. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.8.8\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "" + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "" + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr "" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr "" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "" + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" + +#: src/common/outbound.c:3506 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" + +#: src/common/outbound.c:3516 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "" + +#: src/common/outbound.c:3560 +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "" + +#: src/common/outbound.c:3653 +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "" + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "" + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "" + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "" + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "" + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "" + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "" + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "" + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "" + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "" + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "" + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O.%010%C22*%O" +"$tContents of packet: $2" +msgstr "" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "" + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "" + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "" + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "" + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "" + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "" + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "" + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "" + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "" + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "" + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "" + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "" + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "" + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "" + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "" + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "" + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr "" + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "" + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "" + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "" + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "" + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "" + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "" + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "" + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "" + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "" + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "" + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "" + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "" + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "" + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "" + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "" + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "" + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "" + +#: src/common/text.c:973 +msgid "The action" +msgstr "" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "" + +#: src/common/text.c:980 +msgid "The text" +msgstr "" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "" + +#: src/common/util.c:898 +msgid "China" +msgstr "" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "" + +#: src/common/util.c:928 +msgid "France" +msgstr "" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "" + +#: src/common/util.c:940 +msgid "Government" +msgstr "" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "" + +#: src/common/util.c:959 +msgid "India" +msgstr "" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "" + +#: src/common/util.c:961 +msgid "International" +msgstr "" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "" + +#: src/common/util.c:999 +msgid "Military" +msgstr "" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "" + +#: src/common/xchat.c:726 +msgid "_Open Dialog Window" +msgstr "" + +#: src/common/xchat.c:727 +msgid "_Send a File" +msgstr "" + +#: src/common/xchat.c:728 +msgid "_User Info (WhoIs)" +msgstr "" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +msgid "O_perator Actions" +msgstr "" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "" + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "" + +#: src/fe-gtk/about.c:100 +msgid "About " +msgstr "" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "" + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "" + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "" + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "" + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "" + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "" + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "" + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "" + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "" + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "" + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "" + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:132 +msgid "Open URL or execute command in an existing XChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "" + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "" + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "" + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "" + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "" + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "" + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "" + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "" + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "" + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "" + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "" + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "" + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "" + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "" + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "" + +#: src/fe-gtk/maingui.c:1612 +msgid "_Settings" +msgstr "" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +msgid "_Hide Join/Part Messages" +msgstr "" + +#: src/fe-gtk/maingui.c:1625 +msgid "_Extra Alerts" +msgstr "" + +#: src/fe-gtk/maingui.c:1627 +msgid "Beep on _Message" +msgstr "" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +msgid "_Detach" +msgstr "" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "" + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "" + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "" + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "" + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "" + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "" + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "" + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "" + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1592 +msgid "_Topic Bar" +msgstr "" + +#: src/fe-gtk/menu.c:1593 +msgid "_User List" +msgstr "" + +#: src/fe-gtk/menu.c:1594 +msgid "U_serlist Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "" + +#: src/fe-gtk/menu.c:1597 +msgid "_Channel Switcher" +msgstr "" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "" + +#: src/fe-gtk/menu.c:1613 +msgid "Join a Channel..." +msgstr "" + +#: src/fe-gtk/menu.c:1614 +msgid "List of Channels..." +msgstr "" + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "" + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "" + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "" + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "" + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "" + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "" + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "" + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "" + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "" + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "" + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "" + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "" + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "" + +#: src/fe-gtk/menu.c:1641 +msgid "Friends List..." +msgstr "" + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "" + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "" + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "" + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "" + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "" + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "" + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "" + +#: src/fe-gtk/menu.c:2147 +msgid "_Attach" +msgstr "" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:413 +msgid "XChat: Friends List" +msgstr "" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:602 +msgid "_Away" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "" + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "" + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "" + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "" + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "" + +#: src/fe-gtk/servlistgui.c:740 +msgid "#channel" +msgstr "" + +#: src/fe-gtk/servlistgui.c:850 +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +msgid "Key (Password)" +msgstr "" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1462 +msgid "Bypass proxy server" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1475 +msgid "_Favorite channels:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "" + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "" + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "" + +#: src/fe-gtk/setup.c:205 +msgid "Show user list at:" +msgstr "" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "" + +#: src/fe-gtk/setup.c:242 +msgid "Tree" +msgstr "" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "" + +#: src/fe-gtk/setup.c:254 +msgid "Smaller text" +msgstr "" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "" + +#: src/fe-gtk/setup.c:258 +msgid "Show channel switcher at:" +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "" + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "" + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "" + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "" + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:347 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +msgid "Enable logging of conversations to disk" +msgstr "" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "" + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "" + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "" + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "" + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "" + +#: src/fe-gtk/setup.c:1703 +msgid "Channel switcher" +msgstr "" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "" + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "" + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "" diff --git a/xchat-2.8.8/po/zh_CN.gmo b/xchat-2.8.8/po/zh_CN.gmo new file mode 100644 index 0000000000000000000000000000000000000000..685e467da814fdb21d462d68bdbcfa0333bfb3ae GIT binary patch literal 94512 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 R^9d{jq2L;A98fj({{~uR12_Nx literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/po/zh_CN.po b/xchat-2.8.8/po/zh_CN.po new file mode 100644 index 0000000..795a236 --- /dev/null +++ b/xchat-2.8.8/po/zh_CN.po @@ -0,0 +1,5827 @@ +# X-Chat Simplified Chinese message translation file. +# Copyright (C) 2010 Free Software Foundation, Inc. +# This file is distributed under the same license as the xchat package. +# +# Zong Yaotang <zong@cosix.com.au>, 2002. +# Dalin <ayi880@hotmail.com>, 2003. +# Minor revision by Walte <webmaster@www.linuxfans.org>, 2003. +# Sarah Smith <sarahs@redhat.com>, 2003. +# Rongjun Mu <elanmu@sina.com>, 2003. +# Rongjun Mu <rongjunmu+i18n@gmail.com>, 2004. +# Zhuyuan Liu <gtkdict@yahoo.com.cn>, 2005. +# SEPTEM <septeman@gmail.com>, 2006. +# Aron Xu <happyaron.xu@gmail.com>, 2010. +# Eleanor Chen <chenyueg@gmail.com>, 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.8.6\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2010-02-14 23:17+0800\n" +"Last-Translator: Eleanor Chen <chenyueg@gmail.com>\n" +"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "无法创建 ~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "我很忙" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "离开" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* 不要以 root 身份执行 IRC!您应该\n" +" 使用普通用户帐号来登录。\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "等待" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "活跃" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "失败" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "完成" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "连接" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "中止" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "无法获取 %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "错误" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s 要给您发送“%s”,接受吗?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "没有活跃的 DCC\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "是 " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "否 " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "您正受到来自 %s 的 CTCP 洪水攻击,忽略 %s\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "您正受到来自 %s 的 MSG 洪水攻击,设置图形化自动对话框为关闭。\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s 在线\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s 离线\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "没有进入任何频道。请尝试 /join #<channel>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "未连接任何服务器。请尝试 /server <host> [<port>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "已标记为离开:%s\n" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "已取消离开标记。\n" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "使用 /bin/sh 才能执行本程序!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "可用命令:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "用户自定义命令:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "可用插件命令:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "请输入 /HELP <command> 或者 /HELP -l 以获取更多信息" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "忽略未知参数“%s”。" + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "找不到该插件。\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "无法卸载该插件。\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <name> <action>,在用户列表下添加一个按钮" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <cmd>,向您所在的所有频道发送命令" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHANL <cmd>,向您所在的所有频道发送命令" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <cmd>,向您所在的所有服务器发送命令" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<reason>],设置您为离开状态" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "BACK,取消离开状态" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <mask> [<bantype>],禁止所有符合掩码 <mask> 的用户进入当前的频道。如果他" +"们已在该频道,这个命令不会将其踢出(需要具有频道管理员身份)" + +#: src/common/outbound.c:3506 +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "CHANOPT [-quiet] <variable> [<value>]" + +#: src/common/outbound.c:3508 +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "CLEAR [ALL|HISTORY],清空当前的窗口文本或命令历史" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE,关闭当前窗口或标签页" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" +"COUNTRY [-s] <code|wildcard>,查看国家代码对应的国家名,比如 :cn = 中国" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <nick> <message>,给昵称为 <nick> 者发送 CTCP 信息,常用是 VERSION 和 " +"USERINFO" + +#: src/common/outbound.c:3516 +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "CYCLE [<channel>],离开当前频道并立即重新进入" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <nick> - 接收昵称为 <nick> 者使用 DCC 发送给\n" +" 您的文件\n" +"DCC SEND [-maxcps=#] <nick> [file] - 使用 DCC 发送文件给 <nick>\n" +"DCC PSEND [-maxcps=#] <nick> [file] - 使用被动模式 DCC 发送文件给某人\n" +"DCC LIST - 显示 DCC 列表\n" +"DCC CHAT <nick> - 与 <nick> 进行 DCC 直连聊天\n" +"DCC PCHAT <nick> - 使用 DCC 被动模式与 <nick> 聊天\n" +"DCC CLOSE <type> <nick> <file> 例如:\n" +" /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <nick>,取消当前频道内昵称为 <nick> 的副管理员身份(需要具有频道管理员身" +"份)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <name>,删除用户列表下的一个按钮" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <nick>,取消昵称为 <nick> 者在当前频道的管理员身份(需要具有频道管理员身" +"份)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <nick>,取消昵称为 <nick> 者在当前频道的发言权(需要具有频道管理员身" +"份)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON,从服务器断开连接" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <nick|host|ip>,查询某位用户的 IP 地址" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <text>,在本地显示文本" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <command>,执行命令。如果使用了 -o 选项则输出到当前频道,否则输出到" +"当前文本框" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT,向进程发送 SIGCONT 信号" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9],杀死当前会话中的某执行进程。如果使用 -9 选项,则用 SIGKILL 杀" +"死该进程" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP,向进程发送 SIGSTOP 信号" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE,把数据发送给进程的标准输入" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ,清空当前服务器的发送队列" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <host> [<port>],经由某主机来代理,默认端口为 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <nick> <password>,注销其他使用该昵称的登录" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <nick>,给昵称为 <nick> 者以副管理员的身份(需要具有频道管理员身份)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <password>,向昵称服务器进行身份验证" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <mask> <types..> <options..>\n" +" mask - 要忽略的主机掩码,比如 *!*@*.aol.com\n" +" types - 要忽略数据的类型,应以下选项之一或全部:\n" +" PRIV,CHAN,NOTI,CTCP,INVI,ALL\n" +" options - 忽略选项:NOSAVE,QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <nick> [<channel>],邀请昵称为 <nick> 者进入频道,默认为当前的频道(需" +"要具有频道管理员身份)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <channel>,进入频道" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "KICK <nick>,把昵称为 <nick> 者踢出当前频道(需要具有频道管理员身份)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <nick>,把昵称为 <nick> 者踢出当前频道,并禁止再次进入(需要具有频道管" +"理员身份)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK,强制进行延迟检查" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <string>,在缓冲区中搜索字符串" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <file>,载入插件或脚本" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP,撤销当前频道中所有副管理员(需要具有频道管理员身份)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP,撤销当前频道中所有管理员(需要具有频道管理员身份)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <action>,向当前频道中发送一个动作(动作使用第三人称陈述,例如 /me 跳一下)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK,踢出当前频道中除您自己以外的所有用户(需要具有频道管理员身份)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP,给当前频道中所有用户赋予管理员的身份(需要具有频道管理员身份)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <nick> <message>,给昵称为 <nick> 者发送一则私聊信息" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES,列出当前频道的所有用户" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <nick> <message>,给昵称为 <nick> 者发送一则 CTCP 通知" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <hostname> [<port>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <nickname>,设置您的昵称" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <nick/channel> <message>,发送一则通知。通知是一种能被自动回应的信息" + +#: src/common/outbound.c:3614 +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "" +"NOTIFY [-n network1[,network2,...]] [<nick>],列出您的通知列表,或在列表中添" +"加某人" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <nick>,委任 <nick> 为频道管理员(需要具有频道管理员身份)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<channel>] [<reason>],离开频道,默认为当前的频道" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <nick | channel>,向某位用户或频道发送 CTCP PING 消息" + +#: src/common/outbound.c:3622 +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "QUERY [-nofocus] <nick>,与某人私聊" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<reason>],从与当前服务器断开连接" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <text>,向服务器发送原始格式的文本" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>],可用 /RECONNECT 重新连接当前" +"的服务器或用 /RECONNECT ALL 重新连接所有服务器" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<host>] [<port>] [<password>],可用 /RECONNECT 重新连接当前服务器" +"或用 /RECONNECT ALL 重新连接所有服务器" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <text>,向 xchat 发送原始数据,就好像它是从 irc 服务器上接收到的一样" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <text>,向当前窗口中的对象发送文本" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <nick> [<file>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <host> <port> <channel>,连接服务器并进入某频道" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <host> <port> <channel>,连接服务器并进入某频道" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <host> [<port>] [<password>],连接服务器。普通连接默认端口为 " +"6667,SSL 加密连接默认端口为 9999" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <host> [<port>] [<password>],连接服务器。默认端口为 6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-e] [-or] [-quiet] <variable> [<value>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<position>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "TOPIC [<topic>],设置频道主题,如果未指定内容则显示当前主题" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" +"\n" +"TRAY -f <时间> <文件1> [<文件2>] 在托盘中使用两个图标进行闪烁。\n" +"TRAY -f <文件名> 设置托盘为固定图标。\n" +"TRAY -i <数字> 使用内部图标闪烁托盘。\n" +"TRAY -t <文本> 设置托盘工具提示。\n" +"TRAY -b <标题> <文本> 设置托盘气泡通知。" + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <mask> [<mask>...],解禁指定的掩码。" + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <mask> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <name>,卸载插件或脚本" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>,在浏览器中打开 URL" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "USELECT [-a] [-s] <nick1> <nick2>...,在频道用户列表中以高亮度标示昵称" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <nick>,给予昵称为 <nick> 者发言权(需要具有频道管理员身份)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <message>,发送信息到所有的频道" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <message>,给当前频道中所有管理员发送消息" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "用法:%s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"没有关于该命令的帮助信息。\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "无此命令。\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "用户命令的参数不对。\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "太多递归的用户命令,中止。" + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "未知命令。请尝试 /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "无 xchat_plugin_init 符号,您确实这是 xchat 的插件吗?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "您确信此服务器和端口支持 SSL?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"无法解析主机名 %s\n" +"请检查您的 IP 设置!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "代理传送失败。\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "跳转至 %s 的下一个服务器...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "警告:未知的字符设置“%s”。对网络 %s 将不应用字符转换。" + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 已增加到通知列表。" + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 屏蔽列表:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$t不能进入%C26 %B$1 %O(您被屏蔽了)。" + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 改名为 $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 屏蔽了 $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$t频道 $1 建立于 $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O 取消了%C26 $2 的频道副管理员权限" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O 取消了%C26 $2 的频道管理员权限" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O 取消了%C26 $2 的发言权" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 给 $2 设置了免封权" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O 委任%C26 $2 为频道副管理员" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 邀请了 $2" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%U频道 用户 主题" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 设置 $2$3 $4 模式" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22频道 $1 模式:$2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O 委任%C26$2 为频道管理员" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 取消了 $2 的免封权" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 取消了 $2 的邀请权" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 取消了频道密码" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 取消了用户限制" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 设置频道密码为 $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 设置频道限制为 $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 解除了对 $2 的屏蔽" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O 给了%C26$2 发言权" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "%C22*%O$t%C22已连接。正在登录..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22正在连接到 $1 ($2) 端口 $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21连接失败。错误:$1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$t收到来自 $2 的CTCP $1" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$t收到来自 $2 (到 $3)的 CTCP $1" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$t收到来自 $2 的 CTCP 声音 $1" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$t收到来自 $2 (到 $3)的 CTCP 声音 $1" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$t中止了与 %C26$1%O 的 DCC 直连聊天。" + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$t已与 %C26$1 %C30[%O$2%C30] 建立了 DCC 直连聊天连接" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$$t 与 %C26$1%O 的 DCC 直连聊天连接丢失($4)。" + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$t收到来自 $1 的 DCC 直连聊天请求" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$t向 $1 发送 DCC 直连聊天请求" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$t已发送 DCC 直连聊天请求给 $1" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$t尝试到 %C26$2%O 的 DCC $1 连接失败(err=$3)。" + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$t收到来自 $2 的“$1%O”" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 类型 到/来自 状态 大小 位置 文件 " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O.%010%C22*%O" +"$tContents of packet: $2" +msgstr "" +"%C22*%O$t收到来自 %C26$1%O 的有错的 DCC 请求。%010%C22*%O$t数据包内容:$2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$t 发送 %C26 $1%O 给%C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$t无此 DCC 请求。" + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$t到%C26 $1%O 的 DCC RECV%C26 $2%O 中止。" + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$t从%C26 $3%O DCC RECV%C26 $1%O 已完成 %C30[%C26$4%O cps%C30]%O。" + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$t建立与%C26$1 的 DCC RECV 连接 %C30[%0$2%C30]" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$t从%C26 $3%O DCC RECV%C26 $1%O 失败($4)。" + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV:无法打开 $1 进行写入($2)。 " + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "%C22*%O$t文件%C11 $1%C 已存在,请另存为%C26 $2%O。" + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %O请求续传来自%C26 $3%C的%C26 $2 %C 。" + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$t到%C26$1%O的 DCC SEND%C26$2%O 已中止。" + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$t到%C26$2%O 的 DCC SEND%C26$1%O 已完成 %C30[%C26$3%O cps%C30]%O。" + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$t已建立到%C26 $1%C30[%O$2%C30] 的 DCC SEND 连接" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$t到%C26$2%O 的 DCC SEND%C26$1%O 失败。$3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1%O已发送%C26 $2%O(%C26$3%O 字节)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2%O到 %C26$3%C 没有响应 - 中止。" + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2%O到%C26 $3%O超时 - 中止。" + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1已从通知列表中删除。" + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$t已断开连接($1)。" + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$t找到您的 IP:[$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O已添加到忽略列表。" + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "对 %C26$1%O 的忽略已变更。" + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 主机掩码 PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O 已从忽略列表中删除。" + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " 您的忽略列表是空的。" + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "%C22*%O$t无法进入%C26 %B$1 %O(该频道只能邀请进入)。" + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$t%C26 $2%C (%C26$3%C)邀请您进入%C26 $1%O" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) 进入了 $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$t无法进入%C26 %B$1 %O(需要密码)。" + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 把 $2 踢出了 $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$t您被 $1 从服务器上踢出($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD 被跳过。" + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 已被占用。正在使用 $2 重试..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "%C22*z%O$t该昵称已被占用。请用 /NICK 尝试使用另一个昵称。" + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$t没有此 DCC。" + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$t当前没有任何进程在执行" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$t 通知列表是空的。" + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B 通知列表 " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1通知列表中有 $1 位用户。" + +#: src/common/textevents.h:282 +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$t通知:$1 下线了($3)。" + +#: src/common/textevents.h:285 +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$t通知:$1 上线了($3)。" + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) 离开了 $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) 离开了 $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$t从 $1 处得到 Ping 回应时间:$2 秒" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$t在 %1 秒内没有收到 Ping 回应,正在断开连接。" + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$t已有一进程正在运行" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 已退出(%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 设置模式%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$t查寻 %C26 $1%O 的 IP 地址..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22已连接。" + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22正在查询 $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$t前次连接尝试停止(pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29 $1%C %C29的主题是:$2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 已将主题更改为:$2" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29$1%C %C29的主题由 $2%C %C29于 $3 设置" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$t未知主机。也许您把它拼写错了?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "%C22*%O$t无法进入%C26 %B$1 %O(达到了用户限制)。" + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26 $1 中的用户:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %C暂时离开了 %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %OWHOIS 列表结束。" + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O 发呆%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O 发呆%C26 $2%O,登录时间:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O:$4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O真实 user@host%C27 $2%O,真实 IP%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19您正在 $2 频道里聊天" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$t您被 $3 从 $2 中踢出($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$t您已离开频道 $3" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$t您已离开频道 $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$t您已邀请%C26 $1%O 进入%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$t您已改名为 $2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "从以下位置载入聊天记录:" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** 结束聊天记录于 %s\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** 开始聊天记录记录于 %s\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"不能打开聊天记录文件进行写入操作。请检查\n" +"%s/xchatlogs 的权限设置" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "左边的信息" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "右边的信息" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "进入的用户" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "进入的频道" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "此人的主机名" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "昵称" + +#: src/common/text.c:973 +msgid "The action" +msgstr "动作" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "模式" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "验证文本" + +#: src/common/text.c:980 +msgid "The text" +msgstr "文本" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "信息" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "原昵称" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "新昵称" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "更改主题的用户" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "主题" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "频道" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "能踢人的用户" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "被踢者" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "频道" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "原因" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "离开的用户" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "时间" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "建立者" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "昵称" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "原因" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "主机" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "来自者" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "时间格式为 x.x(见下)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "要进入的频道" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "声音" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "此人的昵称" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "CTCP 事件" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "设置密码的用户" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "密码" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "设置限制的用户" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "限制" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "使用了 op 命令的用户" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "被授予管理员身份的用户" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "被授予副管理员身份的用户" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "使用 halfop 命令的用户" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "使用 voice 命令的用户" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "被赋予发言权的用户" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "使用 ban 命令的用户" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "屏蔽掩码" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "取消密码的用户" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "取消用户限制的用户" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "使用 deop 命令的用户" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "被取消管理员身份的用户" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "使用 dehalfop 命令的用户" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "被取消副管理员身份的用户" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "使用 devoice 命令的用户" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "被取消发言权的用户" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "使用 unban 命令的用户" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "使用 exempt 命令的用户" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "exempt 掩码" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "取消 exempt 的用户" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "使用 invite 命令的用户" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "invite 掩码" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "取消 invite 的用户" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "设置模式的用户" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "模式符号(+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "模式字母" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "被设置的频道" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "用户名" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "全名" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "频道成员/“是 IRC 管理员”" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "服务器信息" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "发呆时间" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "登录时间" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "离开原因" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "信息" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "帐户" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "真实 user@host" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "真实 IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "频道名" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "文本" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "服务器名" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "邀请您的用户" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "用户" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "昵称已被使用" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "已试过的昵称" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "端口" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "网络" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "模式" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "IP 地址" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "DCC 类型" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "文件名" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "目标文件名" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "路径名" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "位置" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "大小" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "DCC 字符串" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "通知条目数" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "原文件名" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "新文件名" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "接收者" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "主机掩码" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "主机名" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "包" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "秒" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "被邀请的用户" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "屏蔽掩码" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "设置屏蔽的用户" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "屏蔽时间" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"解析事件 %s 出错。\n" +"载入默认值。" + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"无法读取声音文件:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "远端主机已关闭套接字" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "连接被拒绝" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "没有到主机的路由" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "连接超时" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "无法分配该地址" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "连接被重置" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "阿森松岛" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "安道尔" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "阿拉伯联合大公国" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "阿富汗" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "安地卡及巴布达" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "安圭拉岛" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "阿尔巴尼亚" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "亚美尼亚" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "荷属安地列斯" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "安哥拉" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "南极洲" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "阿根廷" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "反向 DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "美属萨摩亚" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "奥地利" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "北大西洋公约组织" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "澳大利亚" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "阿卢巴岛" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "奥兰群岛" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "亚塞拜然" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "波士尼亚及赫塞哥维那" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "巴贝多" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "孟加拉" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "比利时" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "布吉纳法索" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "保加利亚" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "巴林" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "浦隆地" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "商业" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "贝南" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "百慕达群岛" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "汶莱" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "玻利维亚" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "巴西" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "巴哈马群岛" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "不丹" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "波维特岛" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "波札那" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "白俄" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "贝里斯" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "加拿大" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "可可斯群岛" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "刚果民主共和国" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "中非共和国" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "刚果" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "瑞士" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "象牙海岸" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "科克群岛" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "智利" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "喀麦隆" + +#: src/common/util.c:898 +msgid "China" +msgstr "中国" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "哥伦比亚" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Internic 商业组织" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "哥斯大黎加" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "塞尔维亚及蒙特尼哥罗" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "古巴" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "维德角岛" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "圣诞岛" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "赛普勒斯" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "捷克共和国" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "德国" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "吉布地" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "丹麦" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "多明尼克" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "多明尼加共和国" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "阿尔及利亚" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "厄瓜多" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "教育机构" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "爱沙尼亚" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "埃及" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "西撒哈拉" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "埃立特里亚" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "西班牙" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "衣索比亚" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "欧盟" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "芬兰" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "斐济" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "福克兰群岛" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "密克罗尼西亚" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "法罗群岛" + +#: src/common/util.c:928 +msgid "France" +msgstr "法国" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "加彭" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "大不列颠" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "格瑞纳达" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "乔治亚" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "法属圭亚那" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "不列颠海峡群岛" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "迦纳" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "直布罗陀" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "格陵兰" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "甘比亚" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "几内亚" + +#: src/common/util.c:940 +msgid "Government" +msgstr "政府部门" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "瓜德鲁普岛" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "赤道几内亚" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "希腊" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "南乔治亚及南桑威奇群岛" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "瓜地马拉" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "关岛" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "几内亚比索" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "盖亚那" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "中国香港特别行政区" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "赫德及麦当劳群岛" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "宏都拉斯" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "克罗埃西亚" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "海地" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "匈牙利" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "印尼" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "爱尔兰" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "以色列" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "曼岛" + +#: src/common/util.c:959 +msgid "India" +msgstr "印度" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "信息机构" + +#: src/common/util.c:961 +msgid "International" +msgstr "国际组织" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "英属印度洋地区" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "伊拉克" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "伊朗" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "冰岛" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "意大利" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "泽西岛" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "牙买加" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "约旦" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "日本" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "肯亚" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "吉尔吉斯" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "柬埔寨" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "吉里巴斯" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "葛摩" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "圣克里斯多福" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "朝鲜" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "韩国" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "科威特" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "开曼群岛" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "哈萨克" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "老挝" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "黎巴嫩" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "圣露西亚" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "列支敦斯登" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "斯里兰卡" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "赖比瑞亚" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "赖索托" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "立陶宛" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "卢森堡" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "拉脱维亚" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "利比亚" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "摩洛哥" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "摩纳哥" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "摩尔多瓦" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "美国医疗组织" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "马达加斯加" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "马绍尔群岛" + +#: src/common/util.c:999 +msgid "Military" +msgstr "军事机构" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "马其顿" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "马利" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "缅甸" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "蒙古" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "中国澳门特别行政区" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "北马里亚纳群岛" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "法属马丁尼克" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "茅利塔尼亚" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "蒙瑟拉特岛" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "马尔他" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "模里西斯" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "马尔地夫" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "马拉威" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "墨西哥" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "马来西亚" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "莫三比克" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "纳米比亚" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "新喀里多尼亚岛" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "尼日" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Internic 网络" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "诺福克岛" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "奈及利亚" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "尼加拉瓜" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "荷兰" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "挪威" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "尼泊尔" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "诺鲁" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "纽威岛" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "纽西兰" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "阿曼" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Internic 非营利性组织" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "巴拿马" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "秘鲁" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "法属波里尼西亚" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "巴布亚纽几内亚" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "菲律宾" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "巴基斯坦" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "波兰" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "圣匹及密启伦群岛" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "皮特康岛" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "波多黎各" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "巴勒斯坦地区" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "葡萄牙" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "帛琉群岛" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "巴拉圭" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "卡达" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "留尼旺" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "罗马尼亚" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "教育 ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "俄罗斯联邦" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "卢安达" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "沙乌地阿拉伯" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "所罗门群岛" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "塞席尔群岛" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "苏丹" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "瑞典" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "新加坡" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "圣赫勒拿岛" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "斯洛凡尼亚" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "冷岸及央麦恩群岛" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "斯洛伐克共和国" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "狮子山" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "圣马利诺" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "塞内加尔" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "索马利亚" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "苏利南" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "圣多美和普林西比" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "前苏联" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "萨尔瓦多" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "叙利亚" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "史瓦济兰" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "土克斯及开科斯群岛" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "查德" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "法属南部地区" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "多哥" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "泰国" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "塔吉克" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "托克劳群岛" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "东帝汶" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "土库曼" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "突尼西亚" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "东加" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "土耳其" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "千里达托贝哥" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "吐瓦鲁" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "中国台北" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "坦尚尼亚" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "乌克兰" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "乌干达" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "英国" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "美国" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "乌拉圭" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "乌兹别克" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "梵蒂冈" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "圣文森及格瑞那丁" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "委内瑞拉" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "英属维京群岛" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "美属维京群岛" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "越南" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "万那杜" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "瓦里斯及富都拿群岛" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "萨摩亚" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "叶门" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "马尔他群岛" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "南斯拉夫" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "南非" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "尚比亚" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "辛巴威" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "未知" + +#: src/common/xchat.c:726 +msgid "_Open Dialog Window" +msgstr "打开对话窗口(_O)" + +#: src/common/xchat.c:727 +msgid "_Send a File" +msgstr "发送文件(_S)" + +#: src/common/xchat.c:728 +msgid "_User Info (WhoIs)" +msgstr "用户信息(_U)(WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "添加到好友列表(_A)" + +#: src/common/xchat.c:730 +msgid "O_perator Actions" +msgstr "管理员动作(_P)" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "赋予管理员权限" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "取消管理员权限" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "赋予发言权" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "取消发言权" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "踢出/屏蔽" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "踢出" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "屏蔽" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "踢出并屏蔽" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "离开频道" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "进入频道..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "输入要进入的频道:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "服务器列表" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "Ping 服务器" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "隐藏版本信息" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "赋予管理员权限" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "取消管理员权限" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "道别" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "输入踢出 %s 的原因:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "发送文件" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "对话" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "发送" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "聊天" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "清除" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "无法连接到会话总线" + +#: src/common/dbus/dbus-client.c:86 +msgid "Failed to complete NameHasOwner" +msgstr "完成 NameHasOwner 失败" + +#: src/common/dbus/dbus-client.c:112 +msgid "Failed to complete Command" +msgstr "完成命令失败" + +#: src/common/dbus/dbus-plugin.c:30 +msgid "remote access" +msgstr "远程访问" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "用 DBUS 远程访问的插件" + +#: src/common/dbus/dbus-plugin.c:897 +#, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "无法连接到会话总线:%s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "获取 %s 失败:%s\n" + +#: src/fe-gtk/about.c:100 +msgid "About " +msgstr "关于" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "跨平台的 IRC 客户端" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "特殊字符" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "未连接。" + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "您必须选择一些被屏蔽。" + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "您确定要删除 %s 中的全部屏蔽吗?" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "掩码" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "来自" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "日期" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "您只能在一个频道的标签页下打开屏蔽列表窗口。" + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat:屏蔽列表(%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "删除" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "剪切" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "刷新" + +#: src/fe-gtk/chanlist.c:111 +#, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "显示在 %3$d/%4$d 个频道中的 %1$d/%2$d 用户。" + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "选择输出文件名" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +msgid "_Join Channel" +msgstr "进入频道(_J)" + +#: src/fe-gtk/chanlist.c:633 +msgid "_Copy Channel Name" +msgstr "复制频道名称(_C)" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "复制频道主题(_T)" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat:频道列表(%s)" + +#: src/fe-gtk/chanlist.c:781 +msgid "_Search" +msgstr "搜索(_S)" + +#: src/fe-gtk/chanlist.c:787 +msgid "_Download List" +msgstr "下载列表(_D)" + +#: src/fe-gtk/chanlist.c:793 +msgid "Save _List..." +msgstr "保存列表(_L)..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "只显示:" + +#: src/fe-gtk/chanlist.c:818 +msgid "channels with" +msgstr "有" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "到" + +#: src/fe-gtk/chanlist.c:843 +msgid "users." +msgstr "位用户的频道。" + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "按照:" + +#: src/fe-gtk/chanlist.c:861 +msgid "Channel name" +msgstr "频道名称" + +#: src/fe-gtk/chanlist.c:882 +msgid "Search type:" +msgstr "搜索类型:" + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "简单搜索" + +#: src/fe-gtk/chanlist.c:890 +msgid "Pattern Match (Wildcards)" +msgstr "模式匹配(通配符)" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "正则表达式" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "查找:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "给 %s 发送文件" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "该文件不可续传。" + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"不能访问文件:%s\n" +"%s。\n" +"无法续传。" + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "下载目录中的文件比提供的文件大,无法续传。" + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "不能从两人处续传同一文件" + +#: src/fe-gtk/dccgui.c:745 +msgid "XChat: Uploads and Downloads" +msgstr "XChat:文件传输列表" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "状态" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "文件" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "剩余时间" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "两者" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "上传" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "下载" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "详细信息" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "文件:" + +#: src/fe-gtk/dccgui.c:821 +msgid "Address:" +msgstr "地址:" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "中止" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "接受" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "续传" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "打开目录..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat:DCC 直连聊天列表" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "已接收" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "已发送" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "开始时间" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*添加*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "编辑" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "名称" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "命令" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "上移" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "下移" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "取消" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "保存" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "添加" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "删除" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "排序" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "帮助" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "不要自动连接到服务器" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "使用不同的设置目录" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "不自动载入任何插件" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "显示插件自动载入的目录" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "显示用户设置目录" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "打开一个 irc://server:port/channel URL" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "执行命令:" + +#: src/fe-gtk/fe-gtk.c:132 +msgid "Open URL or execute command in an existing XChat" +msgstr "在 XChat 中打开 URL 或执行命令" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "启动后最小化。级别 0=正常 1=仅图标 2=托盘" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "level" +msgstr "级别" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "显示版本信息" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"打开字体失败:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "搜索缓冲区当前为空。\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d 字节" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "网络发送队列:%d 字节" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"“Run Command”会执行数据 1 中的数据,就如同您是在输入按键序列后出现的输入格中" +"键入这些数据一样。这样,它就会包含文本 (这些文本会被发送给频道或某人)、命令或" +"用户命令。执行时,数据 1 中所有“\\n”字符 被用来分隔命令,因此您可以执行不止一" +"个命令。如果您想在执行的文本中包含字符“\\”,您应该输入“\\\\”" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"“Change Page”命令在您的笔记本中的标签页间切换。将数据 1 设置成您要切换的标签" +"页。如果数据 2 被设置成任意值,切换标签页数将相对于当前位置而言" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"“Insert in Buffer”命令在当前游标处把数据 1 中的内容插入到接受按键序列的输入格" +"中" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"“Scroll Page”命令在文本窗口元件中上下滚动一页或一列。设置数据 1 为 Up、DOWN、" +"+1 或 -1。" + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "“Set Buffer”命令把接受按键序列后的输入格设置成数据 1 中的内容" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"“Last Command”命令把输入区域设为前一个命令 - 和在终端中按向上箭头效果相同" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"“Next Command”命令把输入区域设为下一个命令 - 和在终端中按向下箭头效果相同" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"该命令改变输入格中文本,来完成未输入完毕的用户昵称或命令。如果数据 1 被设置," +"那么,双击 tab 键会选择最后一个昵称,而非下一个" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"该命令在昵称列表中上下移动。如果数据 1 被设置成任意值,它会上移,否则下移" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "该命令对照替换列表来检查输入的最后一词,若找到符合者就代替它" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "该命令把最上面的标签页向左移一格" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "该命令把最上面的标签页向右移一格" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "该命令把当前标签页向左移一格" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "该命令把当前标签页向右移一格" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "把输入存入历史,但不发送到服务器" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "载入键盘映射配置时出错" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<无>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "修饰键" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "按键" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "动作" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat:键盘快捷键" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "数据 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "数据 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "打开按键配置文件时出错\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"键盘映射配置文件中没有键名 %s\n" +"中止载入,请修复 %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"键盘映射配置文件中没有动作 %s\n" +"中止载入,请修复 %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"期待数据列(以 Dx{:|!} 开始),却得到:\n" +"%s\n" +"\n" +"中止载入。请修复 %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"键盘映射配置文件损坏,中止载入\n" +"请修复 %s/keybindings.conf\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "无法写入该文件。" + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "无法读取该文件。" + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "该掩码已存在。" + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "私聊" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "通知" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "邀请" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "取消忽略" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "输入要忽略的掩码:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat:忽略列表" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "忽略统计:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "频道:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "私聊:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "通知:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "邀请:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "添加..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "频道名称过短,请重新尝试" + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat:连接完毕" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "成功建立到 %s 的连接" + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "在服务器列表窗口,没有添加自动进入的频道名称" + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "您接下来要进行怎样的操作?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "我稍后自行进入频道。(_N)" + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "进入以下频道(_J):" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "如果您知道想要进入的频道的名称,请在这里输入。" + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "打开频道列表窗口(_P):" + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "检索频道列表可能需要一两分钟。" + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "每次连接后都显示该对话框。(_A)" + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "与以下用户对话:" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "%s 的主题:%s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "没有设置主题" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "这台服务器仍然有 %d 个与它相关的频道或对话。要全部关闭吗?" + +#: src/fe-gtk/maingui.c:1283 +msgid "Quit XChat?" +msgstr "确实要退出 XChat?" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "下次不再询问。" + +#: src/fe-gtk/maingui.c:1310 +#, c-format +msgid "You are connected to %i IRC networks." +msgstr "您已连接到 %i 个 IRC 网络。" + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "您确定要退出吗?" + +#: src/fe-gtk/maingui.c:1314 +msgid "Some file transfers are still active." +msgstr "某些文件传输仍在进行." + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "最小化至系统托盘(_M)" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "插入属性或颜色代码" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>粗体</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>底线</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "正常" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "颜色 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "颜色 8-15" + +#: src/fe-gtk/maingui.c:1612 +msgid "_Settings" +msgstr "设置(_S)" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "记录聊天日志到磁盘(_L)" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "重新载入最近日志(_R)" + +#: src/fe-gtk/maingui.c:1617 +msgid "_Hide Join/Part Messages" +msgstr "隐藏进入/离开信息(_H)" + +#: src/fe-gtk/maingui.c:1625 +msgid "_Extra Alerts" +msgstr "额外警报(_E)" + +#: src/fe-gtk/maingui.c:1627 +msgid "Beep on _Message" +msgstr "有信息时响铃提示(_M)" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "闪烁托盘图标(_I)" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "闪烁任务栏图标(_B)" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +msgid "_Detach" +msgstr "分离(_D)" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "关闭(_C)" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "用户限制必须是数字!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "主题保护" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "无室外信息" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "秘密" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "仅邀请" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "监管状态" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "屏蔽列表" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "密码" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "用户限制" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "显示/隐藏用户列表" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"无法设置透明背景!\n" +"\n" +"或许您正使用当前尚不被支持的\n" +"窗口管理程序。\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "输入新昵称:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "未知主机" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "真实姓名:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "用户:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "国家:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "服务器:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "%u 分钟之前" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "最后发言:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "离开信息:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "已选择 %d 个昵称。" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"菜单栏当前已隐藏。您可以藉由按下 F9 或以鼠标右键点选主要文本区域的空白部份来" +"重新显示它。" + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "在浏览器中打开链接" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "复制选取的链接" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "进入频道" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "离开频道" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "离开频道,而后立即进入" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "从收藏中删除(_R)" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "添加到最爱(_A)" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat:用户菜单" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "编辑此菜单..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "获取频道列表..." + +#: src/fe-gtk/menu.c:1348 +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"用户命令 - 特殊编码:\n" +"\n" +"%c = 当前频道\n" +"%e = 当前网络名称\n" +"%m = 机器信息\n" +"%n = 昵称\n" +"%t = 时间/日期\n" +"%v = xchat 版本\n" +"%2 = 第 2 个词\n" +"%3 = 第 3 个词\n" +"&2 = 从第 2 个词到行末\n" +"&3 = 从第 3 个词到行末\n" +"\n" +"如:\n" +"/cmd john hello\n" +"\n" +"%2 是“john”\n" +"&2 是“john hello”。" + +#: src/fe-gtk/menu.c:1364 +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"用户列表按钮 - 特殊编码:\n" +"\n" +"%a = 所有选取的用户\n" +"%c = 当前频道\n" +"%e = 当前网络名称\n" +"%h = 选取的昵称的主机名\n" +"%m = 机器信息\n" +"%n = 您的昵称\n" +"%s = 选取的昵称\n" +"%t = 时间/日期\n" + +#: src/fe-gtk/menu.c:1374 +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"对话按钮 - 特殊编码:\n" +"\n" +"%a = 所有选取的用户\n" +"%c = 当前频道\n" +"%e = 当前网络名称\n" +"%h = 选取的昵称的主机名\n" +"%m = 机器信息\n" +"%n = 您的昵称\n" +"%s = 选取的昵称\n" +"%t = 时间/日期\n" + +#: src/fe-gtk/menu.c:1384 +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"CTCP 回应 - 特殊编码:\n" +"\n" +"%d = 数据 (全部 ctcp)\n" +"%e = 当前网络名称\n" +"%m = 机器信息\n" +"%s = 发送 ctcp 的用户\n" +"%t = 时间/日期\n" +"%2 = 第 2 个词\n" +"%3 = 第 3 个词\n" +"&2 = 从第 2 个词到行末\n" +"&3 = 从第 3 个词到行末\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"URL 处理程序 - 特殊编码:\n" +"\n" +"%s = URL 字符串\n" +"\n" +"在命令前加一个“!”表示\n" +"该命令应被发送到 shell 而\n" +"非 XChat" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat:用户自定义命令" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat:用户列表弹出菜单" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "使用以下替换" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat:替换" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat:URL 处理程序" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat:用户列表按钮" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat:对话按钮" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat:CTCP 回应" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "网络列表(_S)..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "添加(_N)" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "服务器标签页..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "频道标签页..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "服务器窗口..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "频道窗口..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "载入插件或脚本(_L)..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "离开(_Q)" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "查看(_V)" + +#: src/fe-gtk/menu.c:1591 +msgid "_Menu Bar" +msgstr "菜单栏(_M)" + +#: src/fe-gtk/menu.c:1592 +msgid "_Topic Bar" +msgstr "主题栏(_T)" + +#: src/fe-gtk/menu.c:1593 +msgid "_User List" +msgstr "用户菜单(_U)" + +#: src/fe-gtk/menu.c:1594 +msgid "U_serlist Buttons" +msgstr "用户列表按钮(_U)..." + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "模式按钮(_O)" + +#: src/fe-gtk/menu.c:1597 +msgid "_Channel Switcher" +msgstr "频道转换器(_C)" + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "标签页(_T)" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "树状图(_R)" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "网络流量(_N)" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "离线" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "图形" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "服务器(_S)" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "断开连接(_D)" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "重新连接(_R)" + +#: src/fe-gtk/menu.c:1613 +msgid "Join a Channel..." +msgstr "进入频道..." + +#: src/fe-gtk/menu.c:1614 +msgid "List of Channels..." +msgstr "频道列表..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "标记为离开" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "用户菜单(_U)" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "设置(_E)" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "首选项(_P)" + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "高级" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "自动替换..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "CTCP 回应..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "对话框按钮..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "键盘快捷键..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "文本事件..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "URL 处理程序..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "用户命令..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "用户列表按钮..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "用户列表弹出菜单..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "窗口(_W)" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "屏蔽列表..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "特殊字符..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "直连聊天..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "文件传输..." + +#: src/fe-gtk/menu.c:1641 +msgid "Friends List..." +msgstr "好友列表" + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "忽略列表..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "插件和脚本..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "原始记录..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "URL 抓取程序..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "重置标记线" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "清空文本(_L)" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "搜索文本..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "保存文本..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "帮助(_H)" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "内容(_C)" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "检查更新" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "关于(_A)" + +#: src/fe-gtk/menu.c:2147 +msgid "_Attach" +msgstr "整合(_A)" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "上次发现" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "离线" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "从不" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, c-format +msgid "%d minutes ago" +msgstr "%d 分钟之前" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "上线" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "输入要添加的昵称:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "在这些网络中进行通知:" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "此处允许使用逗号分隔多个网络。" + +#: src/fe-gtk/notifygui.c:413 +msgid "XChat: Friends List" +msgstr "XChat:好友列表" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "打开对话" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" +"不能找到 'notify-send' 以用于开启气泡提示。\n" +"请安装 libnotify 软件包。" + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "XChat:已连接到 %u 个网络和 %u 个频道" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "恢复(_R)" + +#: src/fe-gtk/plugin-tray.c:591 +msgid "_Hide" +msgstr "隐藏(_H)" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "闪烁于(_B)" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +msgid "Channel Message" +msgstr "频道消息" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +msgid "Private Message" +msgstr "私聊消息" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +msgid "Highlighted Message" +msgstr "高亮显示的消息" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "更改状态(_C)" + +#: src/fe-gtk/plugin-tray.c:602 +msgid "_Away" +msgstr "离开(_A)" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "返回(_B)" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "XChat:高亮消息来自于:%s (%s)" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "XChat:%u 条高亮消息,最近一条来自于:%s (%s)" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "XChat:新的公共消息来自于:%s (%s)" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "XChat:%u 条新的公共消息。" + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "XChat:私聊消息来自于:%s (%s)" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "Xchat:%u 条私聊消息,最近的一个来自于: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "XChat: 文件传输来自于: %s (%s)" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "Xchat: %u 个文件传输,最近的一个来自于:%s (%s)" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "版本" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "描述" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "选择要载入的插件或脚本" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat:插件和脚本" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "载入(_L)..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "卸载(_U)" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "另存为..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat:原始聊天记录(%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "清除原始聊天记录" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "您为该搜索打开的窗口已不存在。" + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "已搜索到尾部,未找到符合条件的结果。" + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat:搜索" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "区分大小写(_M)" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "反向搜索" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "查找(_F)" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "添加网络" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "确实要删除网络“%s”以及它的所有服务器吗?" + +#: src/fe-gtk/servlistgui.c:740 +msgid "#channel" +msgstr "#channel" + +#: src/fe-gtk/servlistgui.c:850 +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat:收藏的频道列表(自动进入列表)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "在您连接到 %s 时将自动进入这些频道。" + +#: src/fe-gtk/servlistgui.c:906 +msgid "Key (Password)" +msgstr "密码" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "编辑(_E)" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "已删除 %s。" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "已添加 %s。" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "用户名与真实姓名不可为空白。" + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat:编辑 %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "%s 的服务器" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "只连接到选取的服务器" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "当连接失败时不要循环跳至所有的服务器。" + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "您的详细信息" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "使用全局用户信息" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "昵称(_N):" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "第二选择:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "用户名(_U):" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "真实姓名(_L):" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "连接中" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "启动时自动连接到此网络" + +#: src/fe-gtk/servlistgui.c:1462 +msgid "Bypass proxy server" +msgstr "代理服务器" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "在本网络的所有服务器上使用 SSL" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "接受无效的 SSL 证书" + +#: src/fe-gtk/servlistgui.c:1475 +msgid "_Favorite channels:" +msgstr "收藏的频道:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "要进入的频道,请用逗号而不是空格分隔!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "连接命令:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"连接后执行的额外的命令。如果您使用多个命令,请设置为 LOAD -e <文件名>,其中 <" +"文件名> 是一个包含要执行的命令的文本文件。" + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "昵称密码:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"如果您的昵称需要密码,就在这里将它输入。并非所有的 IRC 网络都支持此一功能。" + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "服务器密码:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "服务器的密码。如果不确定请留空。" + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "字符集:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat:网络列表" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "用户信息" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "第三选择:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "网络" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "启动时不打开网络列表" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "编辑(_E)" + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "排序(_S)" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "按字母顺序排练网络列表。使用SHIFT+上下方向键来移动行。" + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "连接(_O)" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "文本框外观" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "字体:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "背景图像:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "回滚行数:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "彩色昵称" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "给 IRC 上的每名用户使用一种不同的颜色" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "缩进昵称" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "让昵称右侧对齐" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "透明背景" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "显示标记线" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "在最后读取的文本后添加一条红线。" + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "透明度设置" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "红:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "绿:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "蓝:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "时间戳" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "启用时间戳" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "时间戳格式:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "查看 strftime 的 man 手册页以获取详细信息。" + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "按最后发言时间" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "输入框" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "使用文本框字体及颜色" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "拼写检查" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "昵称自动补全" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "自动补全昵称(不使用 TAB 键)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "昵称自动补全后缀:" + +#: src/fe-gtk/setup.c:147 +msgid "Nick completion sorted:" +msgstr "昵称排序:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "输入框编码" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "把 %nnn 解释为 ASCII 值" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "转换 %C、%B 为颜色、粗体等" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z,管理员在最先" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A,管理员在最后" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "不排序" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "左上" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "左下" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "右上" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "右下" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "顶部" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "底部" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "隐藏" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "用户列表" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "在用户列表中显示主机名" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "用户列表排列方式:" + +#: src/fe-gtk/setup.c:205 +msgid "Show user list at:" +msgstr "显示用户列表于:" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "记录离开信息" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "追踪用户的离开状态并且以不同颜色标记" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "在小于此值的频道里:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "双击时的动作" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "窗口" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "标签页" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "总是" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "只有请求的标签页" + +#: src/fe-gtk/setup.c:242 +msgid "Tree" +msgstr "树状图" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "转换器类型:" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "打开额外的标签页存放服务器信息" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "打开额外的标签页显示服务器通知" + +#: src/fe-gtk/setup.c:252 +msgid "Open a new tab when you receive a private message" +msgstr "当您收到私聊消息时打开新的标签页" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "按字母表顺序排序标签页" + +#: src/fe-gtk/setup.c:254 +msgid "Smaller text" +msgstr "小字" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "聚焦到新标签页:" + +#: src/fe-gtk/setup.c:258 +msgid "Show channel switcher at:" +msgstr "显示频道转换器于:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "缩短标签页标签页至:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "个字母。" + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "标签页或窗口" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "打开频道于:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "打开对话框于:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "打开工具于:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "打开 DCC、忽略、通知等动作时使用标签页还是窗口?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "否" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "是" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "每次都浏览保存目录" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "文件和目录" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "自动接受文件传输:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "把文件下载到:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "移动完成下载的文件到:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "把昵称存入文件名" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "网络设置" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "从 IRC 服务器获取我的地址" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"向 IRC 服务器查询您的真实地址。如果您有 192.168.*.* 这样的地址时,请使用此命" +"令。" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "DCC IP 地址:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "发送文件时声称您是这个地址。" + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "第一个 DCC 文件发送端口:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "最后一个 DCC 文件传送端口:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "! 端口保留为 0 表示允许所有范围" + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "最大文件传输速度(字节每秒)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "每个上传任务:" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "一个传送进程的最大速度" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "每个下载任务:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "所有上传:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "所有文件的最大速度" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "所有下载" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "提示" + +#: src/fe-gtk/setup.c:333 +msgid "Show tray balloons on:" +msgstr "显示托盘气泡提示于:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "闪烁托盘图标于:" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "闪烁任务栏图标于:" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "响铃于:" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "激活系统托盘图标" + +#: src/fe-gtk/setup.c:341 +msgid "Highlighted Messages" +msgstr "高亮显示消息" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "高亮消息是当您的昵称被提到时所显示的消息,同时还包括:" + +#: src/fe-gtk/setup.c:344 +msgid "Extra words to highlight:" +msgstr "需要高亮显示的其他单词:" + +#: src/fe-gtk/setup.c:345 +msgid "Nick names not to highlight:" +msgstr "不高亮显示的昵称:" + +#: src/fe-gtk/setup.c:346 +msgid "Nick names to always highlight:" +msgstr "总是高亮显示的昵称:" + +#: src/fe-gtk/setup.c:347 +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "" +"请用逗号分隔多个词组。\n" +"可以使用通配符。" + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "默认信息" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "退出:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "离开频道:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "离开:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "离开" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "发布离开信息" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "发布离开信息到所有频道" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "只显示离开一次" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "同样的离开信息只显示一次" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "自动取消离开状态" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "发送信息前取消您的离开状态" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "高级设置" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "自动重连间隔:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "使用原始格式显示模式" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "通知列表 Whois" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "当您通知列表中的某位用户上线时发送 /WHOIS 命令" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "隐藏进入/离开信息" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "默认隐藏频道里的进入/离开信息" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "自动打开 DDC 窗口" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "发送窗口" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "接收窗口" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "聊天窗口" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "聊天记录" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "显示上一会话时的信息会滚" + +#: src/fe-gtk/setup.c:387 +msgid "Enable logging of conversations to disk" +msgstr "允许记录对话内容到磁盘" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "聊天记录文件名称:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=服务器 %c=频道 %n=网络。" + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "在聊天记录中进入时间戳" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "聊天记录时间戳格式:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(已禁用)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "所有连接" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "仅 IRC 服务器" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "仅 DCC Get" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "您的地址" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "绑定到:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "只对有多个地址的计算机有用。" + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "代理服务器" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "主机名:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "端口:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "类型:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "应用代理于:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "代理服务器验证" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "使用验证(仅支持 HTTP,Socks5 或 MS Proxy 代理服务器)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "使用验证(仅支持 HTTP 或 Socks5 代理服务器)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "用户名:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "密码:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "选择一个图像文件" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "选择下载目录" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "选择字体" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "浏览..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "标记验证过的用户为:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "标记未验证过的用户为:" + +#: src/fe-gtk/setup.c:1161 +msgid "Open Data Folder" +msgstr "打开数据目录" + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "选择颜色" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "文本颜色" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "mIRC 颜色:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "本地颜色:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "前景:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "背景:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "标记文本" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "界面颜色" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "新数据:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "标记线:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "新信息:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "离开的用户:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "高亮显示:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "事件" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "声音文件" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "选择声音文件" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "声音播放方式:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "外部声音播放程序(_P):" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "外部程序(_E)" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "自动(_A)" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "声音文件目录(_D):" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "声音文件:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "浏览(_B)..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "播放(_P)" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "界面" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "文本框" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "用户列表" + +#: src/fe-gtk/setup.c:1703 +msgid "Channel switcher" +msgstr "频道转换器" + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "颜色" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "聊天" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "一般" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "声音" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "网络设置" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "文件传输" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "类别" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" +"您不能把树状图放置于顶部或底部!\n" +"请在 <b>视图</b> 菜单中的 <b>标签页</b> 样式中进行调整。" + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "有些设置需要重新启动 xchat 才会生效。" + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*警告*\n" +"自动接收 DCC 到您的主目录中是危险之举,\n" +"且有被盗用的可能性。例如:\n" +"某人可能会给您发送一份 .bash_profile 文件" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat:首选项" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "解析字符串时出错" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "该信号只接受 %d 个参数,$%d 无效" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "打印文本文件" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "编辑事件" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ 数字" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "从...载入" + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "测试全部" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat:URL 抓取程序" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "清空列表" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "复制选取的 URL" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "复制" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "保存列表到文件" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d 位管理员,共 %d 人" + +#~ msgid "About XChat" +#~ msgstr "关于 XChat" + +#, fuzzy +#~ msgid "Set _back" +#~ msgstr "向后搜索" + +#~ msgid "C_hannels to join:" +#~ msgstr "输入要进入的频道(_H):" + +#, fuzzy +#~ msgid "Execute command" +#~ msgstr "执行命令:" + +#~ msgid "Direct client-to-client" +#~ msgstr "直接客户端到客户端" + +#~ msgid "Send File" +#~ msgstr "发送文件" + +#~ msgid "Offer Chat" +#~ msgstr "请求聊天" + +#~ msgid "Abort Chat" +#~ msgstr "中止聊天" + +#~ msgid "Userinfo" +#~ msgstr "个人信息" + +#~ msgid "Clientinfo" +#~ msgstr "客户端信息" + +#~ msgid "Time" +#~ msgstr "时间" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "操作" + +#~ msgid "Kill this user" +#~ msgstr "杀死此用户" + +#~ msgid "Mode" +#~ msgstr "模式" + +#~ msgid "Give Half-Ops" +#~ msgstr "赋予副管理员权限" + +#~ msgid "Take Half-Ops" +#~ msgstr "取消副管理员权限" + +#~ msgid "Ignore" +#~ msgstr "忽略" + +#~ msgid "Ignore User" +#~ msgstr "忽略用户" + +#~ msgid "UnIgnore User" +#~ msgstr "取消忽略用户" + +#~ msgid "Info" +#~ msgstr "信息" + +#~ msgid "Who" +#~ msgstr "Who" + +#~ msgid "DNS Lookup" +#~ msgstr "DNS 查询" + +#~ msgid "Trace" +#~ msgstr "Trace" + +#~ msgid "UserHost" +#~ msgstr "用户主机" + +#~ msgid "External" +#~ msgstr "外部程序" + +#~ msgid "Traceroute" +#~ msgstr "Traceroute" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "Blink tray on message" +#~ msgstr "有信息时闪动提示" + +#~ msgid "Show join/part messages" +#~ msgstr "显示进入/离开信息" + +#~ msgid "Color paste" +#~ msgstr "彩色粘贴" + +#~ msgid "_Close Tab" +#~ msgstr "关闭标签页(_C)" + +#~ msgid "Channel List..." +#~ msgstr "频道列表..." + +#~ msgid "Notify List..." +#~ msgstr "通知列表..." + +#~ msgid "_Close Window" +#~ msgstr "关闭窗口(_C)" + +#~ msgid "User" +#~ msgstr "用户" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: 通知列表" + +#~ msgid "\"Command to execute\"" +#~ msgstr "\"要执行的命令\"" + +#~ msgid "\"Text to print\"" +#~ msgstr "\"要印出的文本\"" + +#~ msgid "$1$t$2" +#~ msgstr "$1$t$2" + +#~ msgid "%C16*%O$t$1%O" +#~ msgstr "%C16*%O$t$1%O" + +#~ msgid "%C18*$t$1%O $2" +#~ msgstr "%C18*$t$1%O $2" + +#~ msgid "%C19>%O$1%C19<%O$t$2" +#~ msgstr "%C19>%O$1%C19<%O$t$2" + +#~ msgid "%C21*%O$t%C21%B$1%O%C21 $2" +#~ msgstr "%C21*%O$t%C21%B$1%O%C21 $2" + +#~ msgid "%C22*%O$t$1" +#~ msgstr "%C22*%O$t$1" + +#~ msgid "%C28*%C29$3$1%C28*$t%O$2" +#~ msgstr "%C28*%C29$3$1%C28*$t%O$2" + +#~ msgid "%C28-%C29$1%C28-%O$t$2" +#~ msgstr "%C28-%C29$1%C28-%O$t$2" + +#~ msgid "%C28-%C29$1/$2%C28-%O$t$3" +#~ msgstr "%C28-%C29$1/$2%C28-%O$t$3" + +#~ msgid "%s doesn't exist\n" +#~ msgstr "%s 不存在\n" + +#~ msgid "(Can be a text file relative to config dir)." +#~ msgstr "(可以是一个相对路径为配置目录的文本文件)。" + +#~ msgid "(Can be a text file relative to ~/.xchat2/)." +#~ msgstr "(可以是一个相对路径为 ~/.xchat2/ 的文本文件)。" + +#~ msgid "(See strftime manpage for details)." +#~ msgstr "(查看 strftime 手册以获取详细信息)。" + +#~ msgid "Ack" +#~ msgstr "确认" + +#~ msgid "Add" +#~ msgstr "添加" + +#~ msgid "Apply" +#~ msgstr "套用" + +#~ msgid "Apply Match to:" +#~ msgstr "套用符合到:" + +#~ msgid "Automatic nick completion" +#~ msgstr "自动补齐昵称" + +#~ msgid "Beep on channel messages" +#~ msgstr "频道中出现新信息时响铃" + +#~ msgid "Beep on highlighted messages" +#~ msgstr "高亮度显示信息时响铃提示" + +#~ msgid "Beep on private messages" +#~ msgstr "有悄悄话时响铃提示" + +#~ msgid "Change the context to the channel" +#~ msgstr "变更上下文至频道" + +#~ msgid "Change the context to the server" +#~ msgstr "变更上下文至服务器" + +#~ msgid "Completes nick names without using the TAB key" +#~ msgstr "不用 TAB 键而自动补齐昵称" + +#~ msgid "Convert spaces to underscore before sending" +#~ msgstr "发送前把空格转换成底线" + +#~ msgid "Execute a xchat command" +#~ msgstr "执行 xchat 命令:" + +#~ msgid "Extra colors:" +#~ msgstr "额外的颜色:" + +#~ msgid "Extra words to highlight on:" +#~ msgstr "需要高亮度显示的其它词组:" + +#~ msgid "Failed to complete GetInfo" +#~ msgstr "完成撷取信息失败" + +#~ msgid "Failed to complete GetPrefs" +#~ msgstr "完成撷取偏好失败" + +#~ msgid "Failed to complete SetContext" +#~ msgstr "完成设置上下文失败" + +#~ msgid "Failed to complete print" +#~ msgstr "完成打印失败" + +#~ msgid "Flash taskbar on highlighted messages" +#~ msgstr "高亮度显示信息时闪动工作列" + +#~ msgid "France, Metropolitan" +#~ msgstr "法属美特罗波利坦" + +#~ msgid "From:" +#~ msgstr "从:" + +#~ msgid "Get settings from xchat" +#~ msgstr "从 xchat 撷取设置" + +#~ msgid "Get some informations from xchat" +#~ msgstr "从 xchat 撷取一些信息" + +#~ msgid "Go to" +#~ msgstr "前往" + +#~ msgid "I can't save an empty list!" +#~ msgstr "无法保存空列表!" + +#~ msgid "Input Box Appearance" +#~ msgstr "输入框外观" + +#~ msgid "Left" +#~ msgstr "左侧" + +#~ msgid "List display options:" +#~ msgstr "列举显示选项:" + +#~ msgid "MIME Type" +#~ msgstr "MIME 类型" + +#~ msgid "Maximum Users:" +#~ msgstr "最多用户数:" + +#~ msgid "Minimum Users:" +#~ msgstr "最少用户数:" + +#~ msgid "Neutral Zone" +#~ msgstr "中立地区" + +#~ msgid "Nicks not to highlight on:" +#~ msgstr "不要高亮度显示的昵称:" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "没有其它打开的标签页,要离开 xchat 吗?" + +#~ msgid "None" +#~ msgstr "无" + +#~ msgid "Open" +#~ msgstr "打开" + +#~ msgid "Open an irc:// url" +#~ msgstr "打开一个 irc:// URL" + +#~ msgid "PID" +#~ msgstr "进程代号" + +#~ msgid "Preferences..." +#~ msgstr "首选项..." + +#~ msgid "Prints some text to the current tab/window" +#~ msgstr "印出一些文本到当前的标签页/窗口" + +#~ msgid "Refresh the list" +#~ msgstr "刷新列表" + +#~ msgid "Regex Match:" +#~ msgstr "Regex 符合:" + +#~ msgid "Resizable user list" +#~ msgstr "用户列表可调整大小" + +#~ msgid "Right" +#~ msgstr "右侧" + +#~ msgid "Save rawlog" +#~ msgstr "保存原始聊天记录" + +#~ msgid "Save rawlog..." +#~ msgstr "保存原始聊天记录..." + +#~ msgid "Save the list" +#~ msgstr "保存列表" + +#~ msgid "Server" +#~ msgstr "服务器" + +#~ msgid "Settings saved." +#~ msgstr "设置已保存。" + +#~ msgid "Show tabs at:" +#~ msgstr "显示标签页于:" + +#~ msgid "Size:" +#~ msgstr "大小:" + +#~ msgid "Speed limit:" +#~ msgstr "速度限制:" + +#~ msgid "StartTime" +#~ msgstr "开始时间" + +#~ msgid "Started:" +#~ msgstr "开始时间:" + +#~ msgid "Tabs Location" +#~ msgstr "标签页位置" + +#~ msgid "To" +#~ msgstr "到" + +#~ msgid "To/From" +#~ msgstr "到/从" + +#~ msgid "To:" +#~ msgstr "到:" + +#~ msgid "US Minor Outlying Islands" +#~ msgstr "美国周边岛屿" + +#~ msgid "Unban" +#~ msgstr "解禁" + +#~ msgid "User and Channel Statistics: %d/%d Users on %d/%d Channels" +#~ msgstr "用户及频道统计:%d/%d 名用户在 %d/%d 个频道中" + +#~ msgid "_Layout" +#~ msgstr "布局(_L)" + +#~ msgid "id" +#~ msgstr "id" + +#~ msgid "irc://server:port/channel" +#~ msgstr "irc://server:port/channel" + +#~ msgid "name" +#~ msgstr "名称" + +#~ msgid "server" +#~ msgstr "服务器" + +#~ msgid "" +#~ "xchat-remote: %s\n" +#~ "Try `xchat-remote --help' for more information\n" +#~ msgstr "" +#~ "xchat-remote: %s\n" +#~ "试试 `xchat-remote --help' 以获得更多信息\n" + +#~ msgid "Flash taskbar on private messages" +#~ msgstr "接收到私聊消息时闪动工作列" + +#~ msgid "File Offer" +#~ msgstr "文件传输" + +#~ msgid "Quit..." +#~ msgstr "退出..." diff --git a/xchat-2.8.8/po/zh_TW.gmo b/xchat-2.8.8/po/zh_TW.gmo new file mode 100644 index 0000000000000000000000000000000000000000..f536db697b7d66feda0245e571d9c90ea4e18781 GIT binary patch literal 81944 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 literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/po/zh_TW.po b/xchat-2.8.8/po/zh_TW.po new file mode 100644 index 0000000..c0fad6a --- /dev/null +++ b/xchat-2.8.8/po/zh_TW.po @@ -0,0 +1,5826 @@ +# Traditional Chinese Messages for the xchat +# Copyright (C) 2000, 01, 02, 03, 04, 05, 06 Free Software Foundation, Inc. +# Kevin Peng <kevpeng@ihug.co.nz>, 2000 +# Anthony Fok <foka@debian.org>, 2001 +# Zong Yaotang <zong@cosix.com.au>, 2002 +# Dalin <ayi880@hotmail.com>, 2003 +# Walte <webmaster@www.linuxfans.org>, 2003 +# Sarah Smith <sarahs@redhat.com>, 2003 +# Rongjun Mu <elanmu@sina.com>, 2003 +# Rongjun Mu <rongjunmu+i18n@gmail.com>, 2004 +# Wei-Lun Chao <chaoweilun@pcmail.com.tw>, 2005, 06 +# +msgid "" +msgstr "" +"Project-Id-Version: xchat 2.6.3\n" +"Report-Msgid-Bugs-To: www.xchat.org\n" +"POT-Creation-Date: 2010-05-30 13:56+1000\n" +"PO-Revision-Date: 2006-06-01 15:10+0800\n" +"Last-Translator: Wei-Lun Chao <chaoweilun@pcmail.com.tw>\n" +"Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: src/common/cfgfiles.c:354 +msgid "Cannot create ~/.xchat2" +msgstr "無法建立~/.xchat2" + +#: src/common/cfgfiles.c:713 +msgid "I'm busy" +msgstr "我很忙" + +#: src/common/cfgfiles.c:714 +msgid "Leaving" +msgstr "暫離" + +#: src/common/cfgfiles.c:761 +msgid "" +"* Running IRC as root is stupid! You should\n" +" create a User Account and use that to login.\n" +msgstr "" +"* 最好不要以 root 身分執行 IRC!您應該\n" +" 建立一般使用者帳號來登入。\n" + +#: src/common/dcc.c:67 +msgid "Waiting" +msgstr "等待" + +#: src/common/dcc.c:68 +msgid "Active" +msgstr "活躍" + +#: src/common/dcc.c:69 +msgid "Failed" +msgstr "失敗" + +#: src/common/dcc.c:70 +msgid "Done" +msgstr "完成" + +#: src/common/dcc.c:71 src/fe-gtk/menu.c:942 +msgid "Connect" +msgstr "連接" + +#: src/common/dcc.c:72 +msgid "Aborted" +msgstr "中止" + +#: src/common/dcc.c:1886 src/common/outbound.c:2449 +#, c-format +msgid "Cannot access %s\n" +msgstr "無法存取 %s\n" + +#: src/common/dcc.c:1887 src/common/text.c:1261 src/common/text.c:1299 +#: src/common/text.c:1310 src/common/text.c:1317 src/common/text.c:1330 +#: src/common/text.c:1347 src/common/text.c:1447 src/common/util.c:353 +msgid "Error" +msgstr "錯誤" + +#: src/common/dcc.c:2375 +#, c-format +msgid "%s is offering \"%s\". Do you want to accept?" +msgstr "%s 正在提供 \"%s\"。您要接收碼?" + +#: src/common/dcc.c:2586 +msgid "No active DCCs\n" +msgstr "沒有活躍的 DCC\n" + +#: src/common/ignore.c:120 src/common/ignore.c:124 src/common/ignore.c:128 +#: src/common/ignore.c:132 src/common/ignore.c:136 src/common/ignore.c:140 +#: src/common/ignore.c:144 +msgid "YES " +msgstr "是 " + +#: src/common/ignore.c:122 src/common/ignore.c:126 src/common/ignore.c:130 +#: src/common/ignore.c:134 src/common/ignore.c:138 src/common/ignore.c:142 +#: src/common/ignore.c:146 +msgid "NO " +msgstr "否 " + +#: src/common/ignore.c:377 +#, c-format +msgid "You are being CTCP flooded from %s, ignoring %s\n" +msgstr "您正受到來自 %s 的 CTCP flood 攻擊,忽略 %s\n" + +#: src/common/ignore.c:402 +#, c-format +msgid "You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n" +msgstr "您正受到來自 %s 的 MSG flood 攻擊,設定圖形化自動對話框為關閉。\n" + +#: src/common/notify.c:473 +#, c-format +msgid " %-20s online\n" +msgstr " %-20s 在線\n" + +#: src/common/notify.c:475 +#, c-format +msgid " %-20s offline\n" +msgstr " %-20s 離線\n" + +#: src/common/outbound.c:72 +msgid "No channel joined. Try /join #<channel>\n" +msgstr "沒有加入任何聊天室。請嘗試 /join #<channel>\n" + +#: src/common/outbound.c:78 +msgid "Not connected. Try /server <host> [<port>]\n" +msgstr "還未連接伺服器。請嘗試 /server <host> [<port>]\n" + +#: src/common/outbound.c:338 +#, c-format +msgid "Already marked away: %s\n" +msgstr "" + +#: src/common/outbound.c:411 +msgid "Already marked back.\n" +msgstr "" + +#: src/common/outbound.c:1777 +msgid "I need /bin/sh to run!\n" +msgstr "使用 /bin/sh 才能執行本程式!\n" + +#: src/common/outbound.c:2146 +msgid "Commands Available:" +msgstr "可用命令:" + +#: src/common/outbound.c:2160 +msgid "User defined commands:" +msgstr "使用者自訂命令:" + +#: src/common/outbound.c:2176 +msgid "Plugin defined commands:" +msgstr "使用者自訂命令:" + +#: src/common/outbound.c:2187 +msgid "Type /HELP <command> for more information, or /HELP -l" +msgstr "請鍵入 /HELP <command> 或者 /HELP -l 以獲取更多資訊" + +#: src/common/outbound.c:2272 +#, c-format +msgid "Unknown arg '%s' ignored." +msgstr "忽略未知引數「%s」。" + +#: src/common/outbound.c:3221 +msgid "No such plugin found.\n" +msgstr "找不到該外掛程式。\n" + +#: src/common/outbound.c:3226 src/fe-gtk/plugingui.c:184 +msgid "That plugin is refusing to unload.\n" +msgstr "無法卸載該外掛程式。\n" + +#: src/common/outbound.c:3495 +msgid "ADDBUTTON <name> <action>, adds a button under the user-list" +msgstr "ADDBUTTON <name> <action>,在使用者清單下添加一個按鈕" + +#: src/common/outbound.c:3497 +msgid "ALLCHAN <cmd>, sends a command to all channels you're in" +msgstr "ALLCHAN <cmd>,向您所在的所有聊天室發送命令" + +#: src/common/outbound.c:3499 +msgid "ALLCHANL <cmd>, sends a command to all channels you're in" +msgstr "ALLCHANL <cmd>,向您所在的所有聊天室發送命令" + +#: src/common/outbound.c:3501 +msgid "ALLSERV <cmd>, sends a command to all servers you're in" +msgstr "ALLSERV <cmd>,向您所在的所有伺服器發送命令" + +#: src/common/outbound.c:3502 +msgid "AWAY [<reason>], sets you away" +msgstr "AWAY [<reason>],設定您為暫離狀態" + +#: src/common/outbound.c:3503 +msgid "BACK, sets you back (not away)" +msgstr "" + +#: src/common/outbound.c:3505 +msgid "" +"BAN <mask> [<bantype>], bans everyone matching the mask from the current " +"channel. If they are already on the channel this doesn't kick them (needs " +"chanop)" +msgstr "" +"BAN <mask> [<bantype>],禁止所有符合 mask 的使用者進入目前的聊天室。如果他們" +"已在該聊天室,這個命令不會把他們踢出去(需要有 chanop 身分)" + +#: src/common/outbound.c:3506 +#, fuzzy +msgid "CHANOPT [-quiet] <variable> [<value>]" +msgstr "SET [-quiet] <variable> [<value>]" + +#: src/common/outbound.c:3508 +#, fuzzy +msgid "CLEAR [ALL|HISTORY], Clears the current text window or command history" +msgstr "CLEAR,清空目前文字視窗" + +#: src/common/outbound.c:3509 +msgid "CLOSE, Closes the current window/tab" +msgstr "CLOSE,關閉目前視窗/分頁" + +#: src/common/outbound.c:3512 +msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia" +msgstr "" +"COUNTRY [-s] <code|wildcard>,查看國家代碼對應的國家名,比如:tw = 臺灣" + +#: src/common/outbound.c:3514 +msgid "" +"CTCP <nick> <message>, send the CTCP message to nick, common messages are " +"VERSION and USERINFO" +msgstr "" +"CTCP <nick> <message>,給暱稱為 <nick> 者發送 CTCP 訊息,常用訊息是 VERSION " +"和 USERINFO" + +#: src/common/outbound.c:3516 +#, fuzzy +msgid "" +"CYCLE [<channel>], parts the current or given channel and immediately rejoins" +msgstr "CYCLE,離開目前聊天室並立即重新加入" + +#: src/common/outbound.c:3518 +msgid "" +"\n" +"DCC GET <nick> - accept an offered file\n" +"DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" +"DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" +"DCC LIST - show DCC list\n" +"DCC CHAT <nick> - offer DCC CHAT to someone\n" +"DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" +"DCC CLOSE <type> <nick> <file> example:\n" +" /dcc close send johnsmith file.tar.gz" +msgstr "" +"\n" +"DCC GET <nick> - 接收暱稱為 <nick> 者發送給您的檔案\n" +"DCC SEND [-maxcps=#] <nick> [file] - 發送檔案給某人\n" +"DCC PSEND [-maxcps=#] <nick> [file] - 使用被動模式發送檔案給某人\n" +"DCC LIST - 顯示 DCC 清單\n" +"DCC CHAT <nick> - 與某人密談\n" +"DCC PCHAT <nick> - 使用被動模式與某人密談\n" +"DCC CLOSE <type> <nick> <file> 例如:\n" +" /dcc close send johnsmith file.tar.gz" + +#: src/common/outbound.c:3530 +msgid "" +"DEHOP <nick>, removes chanhalf-op status from the nick on the current " +"channel (needs chanop)" +msgstr "" +"DEHOP <nick>,取消目前聊天室內暱稱為 <nick> 者的 chanhalf-op 身分(需要有 " +"chanop 身分)" + +#: src/common/outbound.c:3532 +msgid "DELBUTTON <name>, deletes a button from under the user-list" +msgstr "DELBUTTON <name>,刪除使用者清單下的一個按鈕" + +#: src/common/outbound.c:3534 +msgid "" +"DEOP <nick>, removes chanop status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEOP <nick>,取消暱稱為 <nick> 者在本聊天室的 chanop 身分(需要有 chanop 身分)" + +#: src/common/outbound.c:3536 +msgid "" +"DEVOICE <nick>, removes voice status from the nick on the current channel " +"(needs chanop)" +msgstr "" +"DEVOICE <nick>,取消暱稱為 <nick> 者在本聊天室的發言權(需要有 chanop 身分)" + +#: src/common/outbound.c:3537 +msgid "DISCON, Disconnects from server" +msgstr "DISCON,切斷和伺服器的連接" + +#: src/common/outbound.c:3538 +msgid "DNS <nick|host|ip>, Finds a users IP number" +msgstr "DNS <nick|host|ip>, 查詢某位使用者的 IP 位址" + +#: src/common/outbound.c:3539 +msgid "ECHO <text>, Prints text locally" +msgstr "ECHO <text>,只在本地顯示文字" + +#: src/common/outbound.c:3542 +msgid "" +"EXEC [-o] <command>, runs the command. If -o flag is used then output is " +"sent to current channel, else is printed to current text box" +msgstr "" +"EXEC [-o] <command>,執行命令。如果使用了 -o 選項則輸出到目前聊天室,否則輸出" +"到目前文字框" + +#: src/common/outbound.c:3544 +msgid "EXECCONT, sends the process SIGCONT" +msgstr "EXECCONT,向行程發送 SIGCONT 信號" + +#: src/common/outbound.c:3547 +msgid "" +"EXECKILL [-9], kills a running exec in the current session. If -9 is given " +"the process is SIGKILL'ed" +msgstr "" +"EXECKILL [-9],砍掉目前會話中的某執行行程。如果使用 -9 選項,則用 SIGKILL 砍" +"掉該行程" + +#: src/common/outbound.c:3549 +msgid "EXECSTOP, sends the process SIGSTOP" +msgstr "EXECSTOP,向行程發送 SIGSTOP 信號" + +#: src/common/outbound.c:3550 +msgid "EXECWRITE, sends data to the processes stdin" +msgstr "EXECWRITE,把資料發送給行程的標準輸入" + +#: src/common/outbound.c:3554 +msgid "FLUSHQ, flushes the current server's send queue" +msgstr "FLUSHQ,排空目前伺服器的發送佇列" + +#: src/common/outbound.c:3556 +msgid "GATE <host> [<port>], proxies through a host, port defaults to 23" +msgstr "GATE <host> [<port>],經由某主機來代理,預設輸出入埠為 23" + +#: src/common/outbound.c:3560 +#, fuzzy +msgid "GHOST <nick> [password], Kills a ghosted nickname" +msgstr "GHOST <nick> <password>,砍掉已無息消失的暱稱" + +#: src/common/outbound.c:3565 +msgid "HOP <nick>, gives chanhalf-op status to the nick (needs chanop)" +msgstr "HOP <nick>,給暱稱為 <nick> 者以 chanhalf-op 身分 (需要有 chanop 身分)" + +#: src/common/outbound.c:3566 +msgid "ID <password>, identifies yourself to nickserv" +msgstr "ID <password>,向暱稱伺服器表明您自己的身分" + +#: src/common/outbound.c:3568 +msgid "" +"IGNORE <mask> <types..> <options..>\n" +" mask - host mask to ignore, eg: *!*@*.aol.com\n" +" types - types of data to ignore, one or all of:\n" +" PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" +" options - NOSAVE, QUIET" +msgstr "" +"IGNORE <mask> <types..> <options..>\n" +" mask - 欲忽略的主機遮罩,比如 *!*@*.aol.com\n" +" types - 欲忽略資料的類型,以下選項之一或全部:\n" +" PRIV,CHAN,NOTI,CTCP,INVI,ALL\n" +" options - NOSAVE, QUIET" + +#: src/common/outbound.c:3575 +msgid "" +"INVITE <nick> [<channel>], invites someone to a channel, by default the " +"current channel (needs chanop)" +msgstr "" +"INVITE <nick> [<channel>],邀請暱稱為 <nick> 者加入聊天室,預設為目前聊天室" +"(需要有 chanop 身分)" + +#: src/common/outbound.c:3576 +msgid "JOIN <channel>, joins the channel" +msgstr "JOIN <channel>,加入聊天室" + +#: src/common/outbound.c:3578 +msgid "KICK <nick>, kicks the nick from the current channel (needs chanop)" +msgstr "KICK <nick>,把暱稱為 <nick> 者踢出目前聊天室(需要有 chanop 身分)" + +#: src/common/outbound.c:3580 +msgid "" +"KICKBAN <nick>, bans then kicks the nick from the current channel (needs " +"chanop)" +msgstr "" +"KICKBAN <nick>,把暱稱為 <nick> 者踢出目前聊天室,並禁止他再進入(需要有 " +"chanop 身分)" + +#: src/common/outbound.c:3583 +msgid "LAGCHECK, forces a new lag check" +msgstr "LAGCHECK,強制進行新的延遲檢查" + +#: src/common/outbound.c:3585 +msgid "LASTLOG <string>, searches for a string in the buffer" +msgstr "LASTLOG <string>,在緩衝區中搜索字串" + +#: src/common/outbound.c:3587 +msgid "LOAD [-e] <file>, loads a plugin or script" +msgstr "LOAD [-e] <file>,載入外掛程式或命令稿" + +#: src/common/outbound.c:3590 +msgid "" +"MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" +msgstr "MDEHOP,取消目前聊天室中所有 chanhalf-op 的權限 (需要有 chanop 身分)" + +#: src/common/outbound.c:3592 +msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" +msgstr "MDEOP,取消目前聊天室中所有 chanop 的權限 (需要有 chanop 身分)" + +#: src/common/outbound.c:3594 +msgid "" +"ME <action>, sends the action to the current channel (actions are written in " +"the 3rd person, like /me jumps)" +msgstr "" +"ME <action>,向目前聊天室中發送一個動作 (動作使用第三人稱陳述,例如 /me " +"jumps)" + +#: src/common/outbound.c:3598 +msgid "" +"MKICK, Mass kicks everyone except you in the current channel (needs chanop)" +msgstr "MKICK,踢出目前聊天室中除您自己之外的所有使用者 (需要有 chanop 身分)" + +#: src/common/outbound.c:3601 +msgid "MOP, Mass op's all users in the current channel (needs chanop)" +msgstr "MOP,給本聊天室中所有使用者 chanop 身分(需要有 chanop 身分)" + +#: src/common/outbound.c:3602 +msgid "MSG <nick> <message>, sends a private message" +msgstr "MSG <nick> <message>,給暱稱為 <nick> 者發送一則悄悄話" + +#: src/common/outbound.c:3605 +msgid "NAMES, Lists the nicks on the current channel" +msgstr "NAMES,列出目前聊天室的所有使用者暱稱" + +#: src/common/outbound.c:3607 +msgid "NCTCP <nick> <message>, Sends a CTCP notice" +msgstr "NCTCP <nick> <message>,給暱稱為 <nick> 者發送一則 CTCP 通知" + +#: src/common/outbound.c:3608 +msgid "NEWSERVER [-noconnect] <hostname> [<port>]" +msgstr "NEWSERVER [-noconnect] <hostname> [<port>]" + +#: src/common/outbound.c:3609 +msgid "NICK <nickname>, sets your nick" +msgstr "NICK <nickname>,設定您的暱稱" + +#: src/common/outbound.c:3612 +msgid "" +"NOTICE <nick/channel> <message>, sends a notice. Notices are a type of " +"message that should be auto reacted to" +msgstr "" +"NOTICE <nick/channel> <message>,發送一則通知。通知是一種能被自動回應的訊息" + +#: src/common/outbound.c:3614 +#, fuzzy +msgid "" +"NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or " +"adds someone to it" +msgstr "NOTIFY [<nick>],列出您的通知清單,或在清單中添加某人" + +#: src/common/outbound.c:3616 +msgid "OP <nick>, gives chanop status to the nick (needs chanop)" +msgstr "OP <nick>,給予暱稱為 <nick> 者 chanop 身分 (需要有 chanop 身分)" + +#: src/common/outbound.c:3618 +msgid "" +"PART [<channel>] [<reason>], leaves the channel, by default the current one" +msgstr "PART [<channel>] [<reason>],離開聊天室,預設為目前的聊天室" + +#: src/common/outbound.c:3620 +msgid "PING <nick | channel>, CTCP pings nick or channel" +msgstr "PING <nick | channel>,CTCP ping 某位使用者或聊天室" + +#: src/common/outbound.c:3622 +#, fuzzy +msgid "QUERY [-nofocus] <nick>, opens up a new privmsg window to someone" +msgstr "QUERY <nick>,跟某人打開一個悄悄話視窗" + +#: src/common/outbound.c:3624 +msgid "QUIT [<reason>], disconnects from the current server" +msgstr "QUIT [<reason>],切斷與目前伺服器的連接" + +#: src/common/outbound.c:3626 +msgid "QUOTE <text>, sends the text in raw form to the server" +msgstr "QUOTE <text>,向伺服器發送原始格式的文字" + +#: src/common/outbound.c:3629 +msgid "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /" +"RECONNECT to reconnect to the current server or with /RECONNECT ALL to " +"reconnect to all the open servers" +msgstr "" +"RECONNECT [-ssl] [<host>] [<port>] [<password>],可用 /RECONNECT 重新連接目前" +"伺服器或用 /RECONNECT ALL 重新連接所有伺服器" + +#: src/common/outbound.c:3632 +msgid "" +"RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT " +"to reconnect to the current server or with /RECONNECT ALL to reconnect to " +"all the open servers" +msgstr "" +"RECONNECT [<host>] [<port>] [<password>],可用 /RECONNECT 重新連接目前伺服器" +"或用 /RECONNECT ALL 重新連接所有伺服器" + +#: src/common/outbound.c:3634 +msgid "" +"RECV <text>, send raw data to xchat, as if it was received from the irc " +"server" +msgstr "" +"RECV <text>,向 xchat 發送原始資料,就好像它是從 irc 伺服器上接收到的一樣" + +#: src/common/outbound.c:3637 +msgid "SAY <text>, sends the text to the object in the current window" +msgstr "SAY <text>,向目前視窗中的對象發送文字" + +#: src/common/outbound.c:3638 +msgid "SEND <nick> [<file>]" +msgstr "SEND <nick> [<file>]" + +#: src/common/outbound.c:3641 +msgid "SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN [-ssl] <host> <port> <channel>,連接伺服器並加入某聊天室" + +#: src/common/outbound.c:3644 +msgid "SERVCHAN <host> <port> <channel>, connects and joins a channel" +msgstr "SERVCHAN <host> <port> <channel>,連接伺服器並加入某聊天室" + +#: src/common/outbound.c:3648 +msgid "" +"SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the " +"default port is 6667 for normal connections, and 9999 for ssl connections" +msgstr "" +"SERVER [-ssl] <host> [<port>] [<password>],連接伺服器。普通連線預設輸出入埠" +"為 6667,SSL 加密連線預設輸出入埠為 9999" + +#: src/common/outbound.c:3651 +msgid "" +"SERVER <host> [<port>] [<password>], connects to a server, the default port " +"is 6667" +msgstr "SERVER <host> [<port>] [<password>],連接伺服器。預設輸出入埠為 6667" + +#: src/common/outbound.c:3653 +#, fuzzy +msgid "SET [-e] [-off|-on] [-quiet] <variable> [<value>]" +msgstr "SET [-quiet] <variable> [<value>]" + +#: src/common/outbound.c:3654 +msgid "SETCURSOR [-|+]<position>" +msgstr "SETCURSOR [-|+]<position>" + +#: src/common/outbound.c:3659 +msgid "" +"TOPIC [<topic>], sets the topic if one is given, else shows the current topic" +msgstr "TOPIC [<topic>],設定話題為指定話題,如果未指定則顯示目前話題" + +#: src/common/outbound.c:3661 +msgid "" +"\n" +"TRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" +"TRAY -f <filename> Set tray to a fixed icon.\n" +"TRAY -i <number> Blink tray with an internal icon.\n" +"TRAY -t <text> Set the tray tooltip.\n" +"TRAY -b <title> <text> Set the tray balloon." +msgstr "" + +#: src/common/outbound.c:3668 +msgid "UNBAN <mask> [<mask>...], unbans the specified masks." +msgstr "UNBAN <mask> [<mask>...],解禁指定的遮罩。" + +#: src/common/outbound.c:3669 +msgid "UNIGNORE <mask> [QUIET]" +msgstr "UNIGNORE <mask> [QUIET]" + +#: src/common/outbound.c:3670 +msgid "UNLOAD <name>, unloads a plugin or script" +msgstr "UNLOAD <name>,卸載外掛程式或命令稿" + +#: src/common/outbound.c:3671 +msgid "URL <url>, opens a URL in your browser" +msgstr "URL <url>,在您的瀏覽器中開啟 <url>" + +#: src/common/outbound.c:3673 +msgid "" +"USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist" +msgstr "" +"USELECT [-a] [-s] <nick1> <nick2>...,在聊天室使用者清單中以高亮度標示暱稱" + +#: src/common/outbound.c:3676 +msgid "VOICE <nick>, gives voice status to someone (needs chanop)" +msgstr "VOICE <nick>,給予暱稱為 <nick> 者發言權(需要有 chanop 身分)" + +#: src/common/outbound.c:3678 +msgid "WALLCHAN <message>, writes the message to all channels" +msgstr "WALLCHAN <message>,發送訊息到所有的聊天室" + +#: src/common/outbound.c:3680 +msgid "" +"WALLCHOP <message>, sends the message to all chanops on the current channel" +msgstr "WALLCHOP <message>,給目前聊天室中所有 chanop 發送訊息" + +#: src/common/outbound.c:3713 +#, c-format +msgid "Usage: %s\n" +msgstr "用法:%s\n" + +#: src/common/outbound.c:3718 +msgid "" +"\n" +"No help available on that command.\n" +msgstr "" +"\n" +"沒有關於該命令的求助資訊。\n" + +#: src/common/outbound.c:3724 +msgid "No such command.\n" +msgstr "無此命令。\n" + +#: src/common/outbound.c:4055 +msgid "Bad arguments for user command.\n" +msgstr "使用者命令的引數不對。\n" + +#: src/common/outbound.c:4215 +msgid "Too many recursive usercommands, aborting." +msgstr "太多遞迴的使用者命令,中止。" + +#: src/common/outbound.c:4298 +msgid "Unknown Command. Try /help\n" +msgstr "未知命令。請嘗試 /help\n" + +#: src/common/plugin.c:356 src/common/plugin.c:397 +msgid "No xchat_plugin_init symbol; is this really an xchat plugin?" +msgstr "無 xchat_plugin_init 符號;這確實是 xchat 的外掛程式嗎?" + +#: src/common/server.c:634 +msgid "Are you sure this is a SSL capable server and port?\n" +msgstr "您確信此伺服器和輸出入埠支援‧SSL ?\n" + +#: src/common/server.c:1025 +#, c-format +msgid "" +"Cannot resolve hostname %s\n" +"Check your IP Settings!\n" +msgstr "" +"無法解析主機名 %s\n" +"請檢查您的 IP 設定!\n" + +#: src/common/server.c:1030 +msgid "Proxy traversal failed.\n" +msgstr "代理傳送失敗。\n" + +#: src/common/servlist.c:667 +#, c-format +msgid "Cycling to next server in %s...\n" +msgstr "輪跳至 %s 的下一個伺服器中...\n" + +#: src/common/servlist.c:1118 +#, c-format +msgid "" +"Warning: \"%s\" character set is unknown. No conversion will be applied for " +"network %s." +msgstr "警告:未知的字元設定「%s」。對網路 %s 將不應用字元轉換。" + +#: src/common/textevents.h:6 +msgid "%C22*%O$t$1 added to notify list." +msgstr "%C22*%O$t$1 已增加到通知清單。" + +#: src/common/textevents.h:9 +msgid "%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3" +msgstr "%C22*%O$t$1 封禁清單:%C19 $4%C20 $2%C21 $3" + +#: src/common/textevents.h:12 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(You are banned)." +msgstr "%C22*%O$t不能加入%C26 %B$1 %O(您被封禁了)。" + +#: src/common/textevents.h:18 +msgid "%C22*%O$t$1 is now known as $2" +msgstr "%C22*%O$t$1 改名為 $2" + +#: src/common/textevents.h:27 +msgid "%C22*%O$t$1 sets ban on $2" +msgstr "%C22*%O$t$1 封禁了 $2" + +#: src/common/textevents.h:30 +msgid "%C22*%O$tChannel $1 created on $2" +msgstr "%C22*%O$t 聊天室 $1 建立於 $2" + +#: src/common/textevents.h:33 +msgid "%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O 取消了 %C26 $2 的聊天室准管理員權限" + +#: src/common/textevents.h:36 +msgid "%C22*%O$t%C26$1%O removes channel operator status from%C26 $2" +msgstr "%C22*%O$t%C26$1%O 取消了 %C26 $2 的聊天室管理員權限" + +#: src/common/textevents.h:39 +msgid "%C22*%O$t%C26$1%O removes voice from%C26 $2" +msgstr "%C22*%O$t%C26$1%O 取消了 %C26 $2 的發言權" + +#: src/common/textevents.h:42 +msgid "%C22*%O$t$1 sets exempt on $2" +msgstr "%C22*%O$t$1 給 $2 設定了免封權" + +#: src/common/textevents.h:45 +msgid "%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O 委任 %C26 $2 為聊天室准管理員" + +#: src/common/textevents.h:48 +msgid "%C22*%O$t$1 sets invite on $2" +msgstr "%C22*%O$t$1 給 $2 設定了邀請權" + +#: src/common/textevents.h:51 +msgid "%UChannel Users Topic" +msgstr "%U 聊天室 使用者 話題" + +#: src/common/textevents.h:57 +msgid "%C22*%O$t$1 sets mode $2$3 $4" +msgstr "%C22*%O$t$1 設定 $2$3 $4 模式" + +#: src/common/textevents.h:60 +msgid "%C22*%O$t%C22Channel $1 modes: $2" +msgstr "%C22*%O$t%C22聊天室 $1 模式:$2" + +#: src/common/textevents.h:69 +msgid "%C22*%O$t%C26$1%O gives channel operator status to%C26 $2" +msgstr "%C22*%O$t%C26$1%O 委任 %C26$2 為聊天室管理員" + +#: src/common/textevents.h:72 +msgid "%C22*%O$t$1 removes exempt on $2" +msgstr "%C22*%O$t$1 取消了 $2 的免封權" + +#: src/common/textevents.h:75 +msgid "%C22*%O$t$1 removes invite on $2" +msgstr "%C22*%O$t$1 取消了 $2 的邀請權" + +#: src/common/textevents.h:78 +msgid "%C22*%O$t$1 removes channel keyword" +msgstr "%C22*%O$t$1 取消了聊天室密碼" + +#: src/common/textevents.h:81 +msgid "%C22*%O$t$1 removes user limit" +msgstr "%C22*%O$t$1 取消了使用者限額" + +#: src/common/textevents.h:84 +msgid "%C22*%O$t$1 sets channel keyword to $2" +msgstr "%C22*%O$t$1 設定聊天室密碼為 $2" + +#: src/common/textevents.h:87 +msgid "%C22*%O$t$1 sets channel limit to $2" +msgstr "%C22*%O$t$1 設定聊天室限額為 $2" + +#: src/common/textevents.h:90 +msgid "%C22*%O$t$1 removes ban on $2" +msgstr "%C22*%O$t$1 解除了對 $2 的封禁" + +#: src/common/textevents.h:93 +msgid "%C22*%O$t%C26$1%O gives voice to%C26 $2" +msgstr "%C22*%O$t%C26$1%O 給了 %C26$2 發言權" + +#: src/common/textevents.h:96 +msgid "%C22*%O$t%C22Connected. Now logging in..." +msgstr "已連接到 %C22*%O$t%C22。正在登入..." + +#: src/common/textevents.h:99 +msgid "%C22*%O$t%C22Connecting to $1 ($2) port $3%O..." +msgstr "%C22*%O$t%C22 正在連接到 $1 ($2) 輸出入埠 $3%O..." + +#: src/common/textevents.h:102 +msgid "%C21*%O$t%C21Connection failed. Error: $1" +msgstr "%C21*%O$t%C21連線失敗。錯誤:$1" + +#: src/common/textevents.h:105 +msgid "%C22*%O$tReceived a CTCP $1 from $2" +msgstr "%C22*%O$t收到來自 $2 的CTCP $1" + +#: src/common/textevents.h:108 +msgid "%C22*%O$tReceived a CTCP $1 from $2 (to $3)" +msgstr "%C22*%O$t從 $2 處接收到一個(到 $3 的)CTCP $1" + +#: src/common/textevents.h:111 +msgid "%C19>%O$1%C19<%O$tCTCP $2" +msgstr "%C19>%O$1%C19<%O$tCTCP $2" + +#: src/common/textevents.h:114 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2" +msgstr "%C22*%O$t收到來自 $2 的 CTCP 聲音 $1" + +#: src/common/textevents.h:117 +msgid "%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)" +msgstr "%C22*%O$t從 $2 處接收到一個(到 $3 的)CTCP 聲音 $1" + +#: src/common/textevents.h:120 +msgid "%C22*%O$tDCC CHAT to %C26$1%O aborted." +msgstr "%C22*%O$t和 %C26$1%O 的密談中止。" + +#: src/common/textevents.h:123 +msgid "%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]" +msgstr "%C22*%O$t和 %C26$1 %C30[%O$2%C30] 開始密談了" + +#: src/common/textevents.h:126 +msgid "%C22*%O$tDCC CHAT to %C26$1%O lost ($4)." +msgstr "%C22*%O$$t和 %C26$1%O 的密談丟失($4)。" + +#: src/common/textevents.h:129 +msgid "%C22*%O$tReceived a DCC CHAT offer from $1" +msgstr "%C22*%O$t收到來自 $1 的密談請求" + +#: src/common/textevents.h:132 +msgid "%C22*%O$tOffering DCC CHAT to $1" +msgstr "%C22*%O$t向 $1 發送密談請求" + +#: src/common/textevents.h:135 +msgid "%C22*%O$tAlready offering CHAT to $1" +msgstr "%C22*%O$t對 $1 已發送密談請求" + +#: src/common/textevents.h:138 +msgid "%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3)." +msgstr "%C22*%O$t到 %C26$2%O 的 DCC $1 連接失敗 (err=$3)。" + +#: src/common/textevents.h:141 +msgid "%C22*%O$tReceived '$1%O' from $2" +msgstr "%C22*%O$t收到來自 $2 的「$1%O」" + +#: src/common/textevents.h:144 +#, c-format +msgid "%C24,18 Type To/From Status Size Pos File " +msgstr "%C24,18 類型 到/來自 狀態 大小 位置 檔案 " + +#: src/common/textevents.h:147 +msgid "" +"%C22*%O$tReceived a malformed DCC request from %C26$1%O.%010%C22*%O" +"$tContents of packet: $2" +msgstr "" +"%C22*%O$t收到來自 %C26$1%O 的有錯的 DCC 請求。%010%C22*%O$t資料包內容:$2" + +#: src/common/textevents.h:150 +msgid "%C22*%O$tOffering%C26 $1%O to%C26 $2" +msgstr "%C22*%O$t提供 %C26$1%O給 %C26 $2" + +#: src/common/textevents.h:153 +msgid "%C22*%O$tNo such DCC offer." +msgstr "%C22*%O$t無此 DCC 請求。" + +#: src/common/textevents.h:156 +msgid "%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$t到 %C26$1%O 的 DCC RECV %C26 $2%O 中止。" + +#: src/common/textevents.h:159 +msgid "" +"%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O." +msgstr "" +"%C22*%O$t從 %C26$3%O DCC RECV %C26$1%O 已完成 %C30[%C26$4%O cps%C30]%O。" + +#: src/common/textevents.h:162 +msgid "%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$t建立和 %C26$1 %C30[%O$2%C30] 的 DCC RECV 連線" + +#: src/common/textevents.h:165 +msgid "%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4)." +msgstr "%C22*%O$t從 %C26$3%O DCC RECV %C26$1%O 失敗($4)。" + +#: src/common/textevents.h:168 +msgid "%C22*%O$tDCC RECV: Cannot open $1 for writing ($2)." +msgstr "%C22*%O$tDCC RECV:不能打開 $1 進行寫入操作($2)。 " + +#: src/common/textevents.h:171 +msgid "" +"%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead." +msgstr "%C22*%O$t檔案 %C11$1%C 已存在,請另存為 %C26$2%O。" + +#: src/common/textevents.h:174 +msgid "%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C." +msgstr "%C22*%O$t%C26$1 %O請求續傳來自 %C26$3%C 的 %C26$2 %C 。" + +#: src/common/textevents.h:177 +msgid "%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted." +msgstr "%C22*%O$t到 %C26$1%O 的 DCC SEND %C26$2%O 中止。" + +#: src/common/textevents.h:180 +msgid "" +"%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O." +msgstr "" +"%C22*%O$t到 %C26$2%O 的 DCC SEND %C26$1%O 已完成 %C30[%C26$3%O cps%C30]%O。" + +#: src/common/textevents.h:183 +msgid "%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]" +msgstr "%C22*%O$t建立和 %C26 $1 %C30[%O$2%C30] 的 DCC SEND 連線" + +#: src/common/textevents.h:186 +msgid "%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3" +msgstr "%C22*%O$t到 %C26$2%O 的 DCC SEND %C26$1%O 失敗。$3" + +#: src/common/textevents.h:189 +msgid "%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)" +msgstr "%C22*%O$t%C26$1 %O已發送%C26 $2 %O(%C26$3 %O位元組)" + +#: src/common/textevents.h:192 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %O到 %C26$3 %C 沒有響應 - 中止。" + +#: src/common/textevents.h:195 +msgid "%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting." +msgstr "%C22*%O$tDCC $1%C26 $2 %O到%C26 $3 %O已超時 - 中止。" + +#: src/common/textevents.h:198 +msgid "%C22*%O$t$1 deleted from notify list." +msgstr "%C22*%O$t$1已從通知清單中刪除。" + +#: src/common/textevents.h:201 +msgid "%C22*%O$tDisconnected ($1)." +msgstr "%C22*%O$t已切斷連接 ($1)。" + +#: src/common/textevents.h:204 +msgid "%C22*%O$tFound your IP: [$1]" +msgstr "%C22*%O$t找到您的 IP:[$1]" + +#: src/common/textevents.h:210 +msgid "%O%C26$1%O added to ignore list." +msgstr "%O%C26$1%O 添加到忽略清單。" + +#: src/common/textevents.h:213 +msgid "Ignore on %C26$1%O changed." +msgstr "對 %C26$1%O 的忽略已改變。" + +#: src/common/textevents.h:216 +#, c-format +msgid "%C24,18 " +msgstr "%C24,18 " + +#: src/common/textevents.h:219 +#, c-format +msgid "%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG " +msgstr "%C24,18 主機遮罩 PRIV NOTI CHAN CTCP DCC INVI UNIG " + +#: src/common/textevents.h:222 +msgid "%O%C26$1%O removed from ignore list." +msgstr "%O%C26$1%O 已從忽略清單中刪除。" + +#: src/common/textevents.h:225 +msgid " Ignore list is empty." +msgstr " 您的忽略清單還是空的。" + +#: src/common/textevents.h:228 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only)." +msgstr "%C22*%O$t無法加入%C26 %B$1 %O(該聊天室只有被邀請才能加入)。" + +#: src/common/textevents.h:231 +msgid "%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)" +msgstr "%C22*%O$t%C26 $2%C (%C26$3%C)邀請您加入%C26 $1%O" + +#: src/common/textevents.h:234 +msgid "%C19*%O$t%C19%B$1 %B($3) has joined $2" +msgstr "%C19*%O$t%C19%B$1 %B($3) 加入了 $2" + +#: src/common/textevents.h:237 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword)." +msgstr "%C22*%O$t無法加入%C26 %B$1 %O(需要密碼)。" + +#: src/common/textevents.h:240 +msgid "%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)" +msgstr "%C21*%O$t%C21$1 把 $2 踢出了 $3 ($4%O%C21)" + +#: src/common/textevents.h:243 +msgid "%C22*%O$tYou have been killed by $1 ($2%O%C22)" +msgstr "%C22*%O$t您被 $1 踢出了聊天室 ($2%O%C22)" + +#: src/common/textevents.h:252 +msgid "%C22*%O$t%C22MOTD Skipped." +msgstr "%C22*%O$t%C22MOTD 被跳過。" + +#: src/common/textevents.h:255 +msgid "%C22*%O$t$1 already in use. Retrying with $2..." +msgstr "%C22*%O$t$1 已被佔用。正在使用 $2 重試..." + +#: src/common/textevents.h:258 +msgid "%C22*%O$tNickname already in use. Use /NICK to try another." +msgstr "%C22*z%O$t該暱稱已被佔用。請用 /NICK 嘗試使用另一個暱稱。" + +#: src/common/textevents.h:261 +msgid "%C22*%O$tNo such DCC." +msgstr "%C22*%O$t沒有此 DCC。" + +#: src/common/textevents.h:264 +msgid "%C22*%O$tNo process is currently running" +msgstr "%C22*%O$t目前沒有任何行程在執行" + +#: src/common/textevents.h:273 +msgid "$tNotify list is empty." +msgstr "$t上線通知清單是空的。" + +#: src/common/textevents.h:276 +msgid "%C24,18 %B Notify List " +msgstr "%C24,18 %B 通知清單 " + +#: src/common/textevents.h:279 +msgid "%C22*%O$t$1 users in notify list." +msgstr "%C22*%O$t$1通知清單中有 $1 名使用者。" + +#: src/common/textevents.h:282 +#, fuzzy +msgid "%C22*%O$tNotify: $1 is offline ($3)." +msgstr "%C22*%O$t通知:$1 離線了 ($2)。" + +#: src/common/textevents.h:285 +#, fuzzy +msgid "%C22*%O$tNotify: $1 is online ($3)." +msgstr "%C22*%O$t通知:$1 上線了 ($2)。" + +#: src/common/textevents.h:291 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) 離開了 $3" + +#: src/common/textevents.h:294 +msgid "%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*%O$t%C23$1 (%O%C23$2) 離開了 $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:297 +msgid "%C22*%O$tPing reply from $1: $2 second(s)" +msgstr "%C22*%O$tPing 回應從 $1 處返回:$2 秒" + +#: src/common/textevents.h:300 +msgid "%C22*%O$tNo ping reply for $1 seconds, disconnecting." +msgstr "%C22*%O$t在 %1 秒內沒有收到 ping 回應,正在切斷連接。" + +#: src/common/textevents.h:315 +msgid "%C22*%O$tA process is already running" +msgstr "%C22*%O$t一個行程已在執行" + +#: src/common/textevents.h:318 +msgid "%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)" +msgstr "%C23*%O$t%C23$1 已結束 (%O%C23%B%B$2%O%C23)" + +#: src/common/textevents.h:321 +msgid "%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]" +msgstr "%C22*%O$t$1 設定模式%B %C30[%O$2%B%C30]" + +#: src/common/textevents.h:324 +msgid "%C28-%C29$1/Wallops%C28-%O$t$2" +msgstr "%C28-%C29$1/Wallops%C28-%O$t$2" + +#: src/common/textevents.h:327 +msgid "%C22*%O$tLooking up IP number for%C26 $1%O..." +msgstr "%C22*%O$t查尋 %C26 $1%O 的 IP 位址..." + +#: src/common/textevents.h:330 +msgid "%C22*%O$t%C22Connected." +msgstr "%C22*%O$t%C22已連接。" + +#: src/common/textevents.h:336 +msgid "%C22*%O$t%C22Looking up $1" +msgstr "%C22*%O$t%C22正在查詢 $1" + +#: src/common/textevents.h:348 +msgid "%C22*%O$tStopped previous connection attempt (pid=$1)" +msgstr "%C22*%O$t前次連線嘗試停止 (pid=$1)" + +#: src/common/textevents.h:351 +msgid "%C29*%O$t%C29Topic for $1%C %C29is: $2" +msgstr "%C29*%O$t%C29$1%C %C29的話題是:$2" + +#: src/common/textevents.h:354 +msgid "%C22*%O$t$1 has changed the topic to: $2" +msgstr "%C22*%O$t$1 已將話題改變為: $2%O" + +#: src/common/textevents.h:357 +msgid "%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3" +msgstr "%C29*%O$t%C29$1%C %C29的話題由 $2%C %C29於 $3 設定" + +#: src/common/textevents.h:360 +msgid "%C22*%O$tUnknown host. Maybe you misspelled it?" +msgstr "%C22*%O$t未知主機。也許您把它拼寫錯了?" + +#: src/common/textevents.h:363 +msgid "%C22*%O$tCannot join%C26 %B$1 %O(User limit reached)." +msgstr "%C22*%O$t無法加入%C26 %B$1 %O(達到了使用者限額)。" + +#: src/common/textevents.h:366 +msgid "%C22*%O$t%C26Users on $1:%C $2" +msgstr "%C22*%O$t%C26 $1 中的使用者:%C $2" + +#: src/common/textevents.h:369 +msgid "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3" + +#: src/common/textevents.h:372 +msgid "%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)" +msgstr "%C22*%O$t%C28[%O$1%C28] %C 暫時離開了 %C30(%O$2%O%C30)" + +#: src/common/textevents.h:375 src/common/textevents.h:381 +#: src/common/textevents.h:396 src/common/textevents.h:399 +msgid "%C22*%O$t%C28[%O$1%C28]%O $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O $2" + +#: src/common/textevents.h:378 +msgid "%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list." +msgstr "%C22*%O$t%C28[%O$1%C28] %O WHOIS 清單結束。" + +#: src/common/textevents.h:384 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2" +msgstr "%C22*%O$t%C28[%O$1%C28]%O 發呆%C26 $2" + +#: src/common/textevents.h:387 +msgid "%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3" +msgstr "%C22*%O$t%C28[%O$1%C28]%O 發呆%C26 $2%O, 登入時間:%C26 $3" + +#: src/common/textevents.h:390 +msgid "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" +msgstr "%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4" + +#: src/common/textevents.h:393 +msgid "%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3" +msgstr "%C22*%O$t%C28[%O$1%C28] %O 真實使用者@主機%C27 $2%O, 真實IP%C27 $3" + +#: src/common/textevents.h:402 +msgid "%C19*%O$t%C19Now talking on $2" +msgstr "%C19*%O$t%C19您現在在 $2 裡聊天" + +#: src/common/textevents.h:405 +msgid "%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)" +msgstr "%C23*$t您被 $3 從 $2 中踢出 ($4%O%C23)" + +#: src/common/textevents.h:408 +#, c-format +msgid "%C23*$tYou have left channel $3" +msgstr "%C23*$t您已離開聊天室 $3" + +#: src/common/textevents.h:411 +msgid "%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)" +msgstr "%C23*$t您已離開聊天室 $3 (%O%C23%B%B$4%O%C23)" + +#: src/common/textevents.h:417 +msgid "%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)" +msgstr "%C22*%O$t您已邀請%C26 $1%O 加入%C26 $2%O (%C26$3%O)" + +#: src/common/textevents.h:423 +msgid "%C22*%O$tYou are now known as $2" +msgstr "%C22*%O$t您已改名為$2" + +#: src/common/text.c:347 +msgid "Loaded log from" +msgstr "" + +#: src/common/text.c:366 +#, c-format +msgid "**** ENDING LOGGING AT %s\n" +msgstr "**** %s 結束日誌紀錄\n" + +#: src/common/text.c:575 +#, c-format +msgid "**** BEGIN LOGGING AT %s\n" +msgstr "**** %s 開始日誌記錄\n" + +#: src/common/text.c:594 +#, c-format +msgid "" +"* Can't open log file(s) for writing. Check the\n" +" permissions on %s/xchatlogs" +msgstr "" +"不能打開日誌檔案進行寫入操作。請檢查\n" +"%s/xchatlogs 的權限設定" + +#: src/common/text.c:961 +msgid "Left message" +msgstr "左邊的訊息" + +#: src/common/text.c:962 +msgid "Right message" +msgstr "右邊的訊息" + +#: src/common/text.c:966 +msgid "The nick of the joining person" +msgstr "加入的使用者" + +#: src/common/text.c:967 +msgid "The channel being joined" +msgstr "加入的聊天室" + +#: src/common/text.c:968 src/common/text.c:1016 src/common/text.c:1067 +msgid "The host of the person" +msgstr "此人的主機" + +#: src/common/text.c:972 src/common/text.c:979 src/common/text.c:986 +#: src/common/text.c:1174 src/common/text.c:1181 src/common/text.c:1186 +#: src/common/text.c:1191 src/common/text.c:1196 src/common/text.c:1202 +#: src/common/text.c:1207 src/common/text.c:1211 src/common/text.c:1217 +#: src/common/text.c:1223 src/common/text.c:1275 src/common/text.c:1286 +#: src/common/text.c:1291 src/common/text.c:1296 src/common/text.c:1305 +#: src/common/text.c:1316 src/common/text.c:1323 src/common/text.c:1329 +#: src/common/text.c:1334 src/common/text.c:1339 src/common/text.c:1346 +#: src/common/text.c:1352 src/common/text.c:1358 src/common/text.c:1363 +#: src/common/text.c:1368 src/common/text.c:1372 src/common/text.c:1378 +#: src/common/text.c:1386 src/common/text.c:1420 src/common/text.c:1425 +msgid "Nickname" +msgstr "暱稱" + +#: src/common/text.c:973 +msgid "The action" +msgstr "動作" + +#: src/common/text.c:974 src/common/text.c:981 +msgid "Mode char" +msgstr "聊天模式" + +#: src/common/text.c:975 src/common/text.c:982 src/common/text.c:988 +msgid "Identified text" +msgstr "驗證文字" + +#: src/common/text.c:980 +msgid "The text" +msgstr "文字" + +#: src/common/text.c:987 src/common/text.c:1044 src/common/text.c:1050 +msgid "The message" +msgstr "訊息" + +#: src/common/text.c:992 src/common/text.c:1054 +msgid "Old nickname" +msgstr "原暱稱" + +#: src/common/text.c:993 src/common/text.c:1055 +msgid "New nickname" +msgstr "新暱稱" + +#: src/common/text.c:997 +msgid "Nick of person who changed the topic" +msgstr "更改話題的使用者" + +#: src/common/text.c:998 src/common/text.c:1004 src/fe-gtk/chanlist.c:766 +#: src/fe-gtk/chanlist.c:869 +msgid "Topic" +msgstr "話題" + +#: src/common/text.c:999 src/common/text.c:1003 src/common/text.c:1440 +#: src/fe-gtk/chanlist.c:764 src/fe-gtk/ignoregui.c:174 +#: src/fe-gtk/servlistgui.c:896 +msgid "Channel" +msgstr "聊天室" + +#: src/common/text.c:1008 src/common/text.c:1061 +msgid "The nickname of the kicker" +msgstr "能踢人的使用者" + +#: src/common/text.c:1009 src/common/text.c:1059 +msgid "The person being kicked" +msgstr "被踢者" + +#: src/common/text.c:1010 src/common/text.c:1017 src/common/text.c:1021 +#: src/common/text.c:1026 src/common/text.c:1060 src/common/text.c:1068 +#: src/common/text.c:1075 +msgid "The channel" +msgstr "聊天室" + +#: src/common/text.c:1011 src/common/text.c:1062 src/common/text.c:1069 +msgid "The reason" +msgstr "原因" + +#: src/common/text.c:1015 src/common/text.c:1066 +msgid "The nick of the person leaving" +msgstr "離開的使用者" + +#: src/common/text.c:1022 src/common/text.c:1028 +msgid "The time" +msgstr "時間" + +#: src/common/text.c:1027 +msgid "The creator" +msgstr "建立者" + +#: src/common/text.c:1032 src/fe-gtk/dccgui.c:768 src/fe-gtk/dccgui.c:1001 +msgid "Nick" +msgstr "暱稱" + +#: src/common/text.c:1033 src/common/text.c:1292 +msgid "Reason" +msgstr "原因" + +#: src/common/text.c:1034 src/common/text.c:1176 src/common/text.c:1265 +msgid "Host" +msgstr "主機" + +#: src/common/text.c:1038 src/common/text.c:1043 src/common/text.c:1048 +msgid "Who it's from" +msgstr "來自者" + +#: src/common/text.c:1039 +msgid "The time in x.x format (see below)" +msgstr "時間格式為 x.x (見下)" + +#: src/common/text.c:1049 src/common/text.c:1086 +msgid "The Channel it's going to" +msgstr "要加入的聊天室" + +#: src/common/text.c:1073 +msgid "The sound" +msgstr "音效" + +#: src/common/text.c:1074 src/common/text.c:1080 src/common/text.c:1085 +msgid "The nick of the person" +msgstr "此人的暱稱" + +#: src/common/text.c:1079 src/common/text.c:1084 +msgid "The CTCP event" +msgstr "CTCP 事件" + +#: src/common/text.c:1090 +msgid "The nick of the person who set the key" +msgstr "設定密鑰的使用者" + +#: src/common/text.c:1091 +msgid "The key" +msgstr "密鑰" + +#: src/common/text.c:1095 +msgid "The nick of the person who set the limit" +msgstr "設定限額的使用者" + +#: src/common/text.c:1096 +msgid "The limit" +msgstr "限額" + +#: src/common/text.c:1100 +msgid "The nick of the person who did the op'ing" +msgstr "使用了 op 命令的使用者" + +#: src/common/text.c:1101 +msgid "The nick of the person who has been op'ed" +msgstr "被授予 op 身分的使用者" + +#: src/common/text.c:1105 +msgid "The nick of the person who has been halfop'ed" +msgstr "被授予 halfop 身分的使用者" + +#: src/common/text.c:1106 +msgid "The nick of the person who did the halfop'ing" +msgstr "使用 halfop 命令的使用者" + +#: src/common/text.c:1110 +msgid "The nick of the person who did the voice'ing" +msgstr "使用 voice 命令的使用者" + +#: src/common/text.c:1111 +msgid "The nick of the person who has been voice'ed" +msgstr "被賦予發言權的使用者" + +#: src/common/text.c:1115 +msgid "The nick of the person who did the banning" +msgstr "使用 ban 命令的使用者" + +#: src/common/text.c:1116 src/common/text.c:1143 +msgid "The ban mask" +msgstr "ban 命令的遮罩" + +#: src/common/text.c:1120 +msgid "The nick who removed the key" +msgstr "取消密鑰的使用者" + +#: src/common/text.c:1124 +msgid "The nick who removed the limit" +msgstr "取消使用者限額的使用者" + +#: src/common/text.c:1128 +msgid "The nick of the person of did the deop'ing" +msgstr "使用 deop 命令的使用者" + +#: src/common/text.c:1129 +msgid "The nick of the person who has been deop'ed" +msgstr "被取消 op 身分的使用者" + +#: src/common/text.c:1132 +msgid "The nick of the person of did the dehalfop'ing" +msgstr "使用 dehalfop 命令的使用者" + +#: src/common/text.c:1133 +msgid "The nick of the person who has been dehalfop'ed" +msgstr "被取消 halfop 身分的使用者" + +#: src/common/text.c:1137 +msgid "The nick of the person of did the devoice'ing" +msgstr "使用 devoice 命令的使用者" + +#: src/common/text.c:1138 +msgid "The nick of the person who has been devoice'ed" +msgstr "被取消發言權的使用者" + +#: src/common/text.c:1142 +msgid "The nick of the person of did the unban'ing" +msgstr "使用 unban 命令的使用者" + +#: src/common/text.c:1147 +msgid "The nick of the person who did the exempt" +msgstr "使用 exempt 命令的使用者" + +#: src/common/text.c:1148 src/common/text.c:1153 +msgid "The exempt mask" +msgstr "exempt 遮罩" + +#: src/common/text.c:1152 +msgid "The nick of the person removed the exempt" +msgstr "取消 exempt 的使用者" + +#: src/common/text.c:1157 +msgid "The nick of the person who did the invite" +msgstr "使用 invite 命令的使用者" + +#: src/common/text.c:1158 src/common/text.c:1163 +msgid "The invite mask" +msgstr "invite 遮罩" + +#: src/common/text.c:1162 +msgid "The nick of the person removed the invite" +msgstr "取消 invite 的使用者" + +#: src/common/text.c:1167 +msgid "The nick of the person setting the mode" +msgstr "設定模式的使用者" + +#: src/common/text.c:1168 +msgid "The mode's sign (+/-)" +msgstr "模式的符號(+/-)" + +#: src/common/text.c:1169 +msgid "The mode letter" +msgstr "模式字母" + +#: src/common/text.c:1170 +msgid "The channel it's being set on" +msgstr "被設定的聊天室" + +#: src/common/text.c:1175 +msgid "Username" +msgstr "使用者名" + +#: src/common/text.c:1177 +msgid "Full name" +msgstr "全名" + +#: src/common/text.c:1182 +msgid "Channel Membership/\"is an IRC operator\"" +msgstr "聊天室成員/「是 IRC 管理員」" + +#: src/common/text.c:1187 +msgid "Server Information" +msgstr "伺服器資訊" + +#: src/common/text.c:1192 src/common/text.c:1197 +msgid "Idle time" +msgstr "發呆時間" + +#: src/common/text.c:1198 +msgid "Signon time" +msgstr "登入時間" + +#: src/common/text.c:1203 +msgid "Away reason" +msgstr "離開原因" + +#: src/common/text.c:1212 src/common/text.c:1218 src/common/text.c:1226 +#: src/common/text.c:1412 +msgid "Message" +msgstr "訊息" + +#: src/common/text.c:1219 +msgid "Account" +msgstr "帳戶" + +#: src/common/text.c:1224 +msgid "Real user@host" +msgstr "真實使用者@主機" + +#: src/common/text.c:1225 +msgid "Real IP" +msgstr "真實 IP" + +#: src/common/text.c:1230 src/common/text.c:1245 src/common/text.c:1251 +#: src/common/text.c:1281 src/common/text.c:1435 +msgid "Channel Name" +msgstr "聊天室名" + +#: src/common/text.c:1234 src/common/text.c:1240 src/common/text.c:1398 +#: src/fe-gtk/menu.c:1418 src/fe-gtk/menu.c:1606 src/fe-gtk/textgui.c:390 +msgid "Text" +msgstr "文字" + +#: src/common/text.c:1235 src/common/text.c:1241 src/common/text.c:1247 +#: src/common/text.c:1276 src/common/text.c:1394 src/common/text.c:1436 +msgid "Server Name" +msgstr "伺服器名" + +#: src/common/text.c:1236 +msgid "Raw Numeric or Identifier" +msgstr "" + +#: src/common/text.c:1246 +msgid "Nick of person who invited you" +msgstr "邀請您的使用者" + +#: src/common/text.c:1252 src/fe-gtk/chanlist.c:765 +msgid "Users" +msgstr "使用者" + +#: src/common/text.c:1256 +msgid "Nickname in use" +msgstr "暱稱已被使用" + +#: src/common/text.c:1257 +msgid "Nick being tried" +msgstr "已試用過的暱稱" + +#: src/common/text.c:1266 src/common/text.c:1402 +msgid "IP" +msgstr "IP 位址" + +#: src/common/text.c:1267 src/common/text.c:1298 +msgid "Port" +msgstr "輸出入埠" + +#: src/common/text.c:1277 src/fe-gtk/notifygui.c:137 src/fe-gtk/setup.c:1713 +msgid "Network" +msgstr "網路" + +#: src/common/text.c:1282 src/common/text.c:1287 +msgid "Modes string" +msgstr "模式字串" + +#: src/common/text.c:1297 src/common/text.c:1335 src/common/text.c:1340 +#: src/common/text.c:1381 +msgid "IP address" +msgstr "IP 位址" + +#: src/common/text.c:1303 src/common/text.c:1328 +msgid "DCC Type" +msgstr "DCC 類型" + +#: src/common/text.c:1304 src/common/text.c:1309 src/common/text.c:1314 +#: src/common/text.c:1321 src/common/text.c:1341 src/common/text.c:1345 +#: src/common/text.c:1351 src/common/text.c:1357 src/common/text.c:1364 +#: src/common/text.c:1373 src/common/text.c:1379 +msgid "Filename" +msgstr "檔案名" + +#: src/common/text.c:1315 src/common/text.c:1322 +msgid "Destination filename" +msgstr "目標檔案名" + +#: src/common/text.c:1324 src/common/text.c:1353 +msgid "CPS" +msgstr "CPS" + +#: src/common/text.c:1359 +msgid "Pathname" +msgstr "路徑名" + +#: src/common/text.c:1374 src/fe-gtk/dccgui.c:764 +msgid "Position" +msgstr "位置" + +#: src/common/text.c:1380 src/fe-gtk/dccgui.c:763 +msgid "Size" +msgstr "大小" + +#: src/common/text.c:1385 +msgid "DCC String" +msgstr "DCC 字串" + +#: src/common/text.c:1390 +msgid "Number of notify items" +msgstr "通知條目數" + +#: src/common/text.c:1406 +msgid "Old Filename" +msgstr "舊檔案名" + +#: src/common/text.c:1407 +msgid "New Filename" +msgstr "新檔案名" + +#: src/common/text.c:1411 +msgid "Receiver" +msgstr "接收者" + +#: src/common/text.c:1416 +msgid "Hostmask" +msgstr "主機遮罩" + +#: src/common/text.c:1421 +msgid "Hostname" +msgstr "主機名" + +#: src/common/text.c:1426 +msgid "The Packet" +msgstr "包" + +#: src/common/text.c:1430 +msgid "Seconds" +msgstr "秒" + +#: src/common/text.c:1434 +msgid "Nick of person who have been invited" +msgstr "被邀請的使用者" + +#: src/common/text.c:1441 +msgid "Banmask" +msgstr "ban 的遮罩" + +#: src/common/text.c:1442 +msgid "Who set the ban" +msgstr "設定禁令的使用者" + +#: src/common/text.c:1443 +msgid "Ban time" +msgstr "封禁時間" + +#: src/common/text.c:1483 +#, c-format +msgid "" +"Error parsing event %s.\n" +"Loading default." +msgstr "" +"解析事件 %s 時出錯。\n" +"載入預設值。" + +#: src/common/text.c:2225 +#, c-format +msgid "" +"Cannot read sound file:\n" +"%s" +msgstr "" +"無法讀取聲音檔案:\n" +"%s" + +#: src/common/util.c:297 +msgid "Remote host closed socket" +msgstr "遠端主機已關閉 socket" + +#: src/common/util.c:302 +msgid "Connection refused" +msgstr "連線被拒絕" + +#: src/common/util.c:305 +msgid "No route to host" +msgstr "沒有到主機的路由" + +#: src/common/util.c:307 +msgid "Connection timed out" +msgstr "連線超時" + +#: src/common/util.c:309 +msgid "Cannot assign that address" +msgstr "無法分配該位址" + +#: src/common/util.c:311 +msgid "Connection reset by peer" +msgstr "連線被對方重設" + +#: src/common/util.c:848 +msgid "Ascension Island" +msgstr "亞森松島" + +#: src/common/util.c:849 +msgid "Andorra" +msgstr "安道爾" + +#: src/common/util.c:850 +msgid "United Arab Emirates" +msgstr "阿拉伯聯合大公國" + +#: src/common/util.c:851 +msgid "Afghanistan" +msgstr "阿富汗" + +#: src/common/util.c:852 +msgid "Antigua and Barbuda" +msgstr "安地卡及巴布達" + +#: src/common/util.c:853 +msgid "Anguilla" +msgstr "安圭拉島" + +#: src/common/util.c:854 +msgid "Albania" +msgstr "阿爾巴尼亞" + +#: src/common/util.c:855 +msgid "Armenia" +msgstr "亞美尼亞" + +#: src/common/util.c:856 +msgid "Netherlands Antilles" +msgstr "荷屬安地列斯" + +#: src/common/util.c:857 +msgid "Angola" +msgstr "安哥拉" + +#: src/common/util.c:858 +msgid "Antarctica" +msgstr "南極洲" + +#: src/common/util.c:859 +msgid "Argentina" +msgstr "阿根廷" + +#: src/common/util.c:860 +msgid "Reverse DNS" +msgstr "反向 DNS" + +#: src/common/util.c:861 +msgid "American Samoa" +msgstr "美屬薩摩亞" + +#: src/common/util.c:862 +msgid "Austria" +msgstr "奧地利" + +#: src/common/util.c:863 +msgid "Nato Fiel" +msgstr "北大西洋公約組織" + +#: src/common/util.c:864 +msgid "Australia" +msgstr "澳大利亞" + +#: src/common/util.c:865 +msgid "Aruba" +msgstr "阿盧巴島" + +#: src/common/util.c:866 +msgid "Aland Islands" +msgstr "奧蘭群島" + +#: src/common/util.c:867 +msgid "Azerbaijan" +msgstr "亞塞拜然" + +#: src/common/util.c:868 +msgid "Bosnia and Herzegovina" +msgstr "波士尼亞及赫塞哥維那" + +#: src/common/util.c:869 +msgid "Barbados" +msgstr "巴貝多" + +#: src/common/util.c:870 +msgid "Bangladesh" +msgstr "孟加拉" + +#: src/common/util.c:871 +msgid "Belgium" +msgstr "比利時" + +#: src/common/util.c:872 +msgid "Burkina Faso" +msgstr "布吉納法索" + +#: src/common/util.c:873 +msgid "Bulgaria" +msgstr "保加利亞" + +#: src/common/util.c:874 +msgid "Bahrain" +msgstr "巴林" + +#: src/common/util.c:875 +msgid "Burundi" +msgstr "浦隆地" + +#: src/common/util.c:876 +msgid "Businesses" +msgstr "商業" + +#: src/common/util.c:877 +msgid "Benin" +msgstr "貝南" + +#: src/common/util.c:878 +msgid "Bermuda" +msgstr "百慕達群島" + +#: src/common/util.c:879 +msgid "Brunei Darussalam" +msgstr "汶萊" + +#: src/common/util.c:880 +msgid "Bolivia" +msgstr "玻利維亞" + +#: src/common/util.c:881 +msgid "Brazil" +msgstr "巴西" + +#: src/common/util.c:882 +msgid "Bahamas" +msgstr "巴哈馬群島" + +#: src/common/util.c:883 +msgid "Bhutan" +msgstr "不丹" + +#: src/common/util.c:884 +msgid "Bouvet Island" +msgstr "波維特島" + +#: src/common/util.c:885 +msgid "Botswana" +msgstr "波札那" + +#: src/common/util.c:886 +msgid "Belarus" +msgstr "白俄" + +#: src/common/util.c:887 +msgid "Belize" +msgstr "貝里斯" + +#: src/common/util.c:888 +msgid "Canada" +msgstr "加拿大" + +#: src/common/util.c:889 +msgid "Cocos Islands" +msgstr "可可斯群島" + +#: src/common/util.c:890 +msgid "Democratic Republic of Congo" +msgstr "剛果民主共和國" + +#: src/common/util.c:891 +msgid "Central African Republic" +msgstr "中非共和國" + +#: src/common/util.c:892 +msgid "Congo" +msgstr "剛果" + +#: src/common/util.c:893 +msgid "Switzerland" +msgstr "瑞士" + +#: src/common/util.c:894 +msgid "Cote d'Ivoire" +msgstr "象牙海岸" + +#: src/common/util.c:895 +msgid "Cook Islands" +msgstr "科克群島" + +#: src/common/util.c:896 +msgid "Chile" +msgstr "智利" + +#: src/common/util.c:897 +msgid "Cameroon" +msgstr "喀麥隆" + +#: src/common/util.c:898 +msgid "China" +msgstr "中國" + +#: src/common/util.c:899 +msgid "Colombia" +msgstr "哥倫比亞" + +#: src/common/util.c:900 +msgid "Internic Commercial" +msgstr "Internic 商業組織" + +#: src/common/util.c:901 +msgid "Costa Rica" +msgstr "哥斯大黎加" + +#: src/common/util.c:902 +msgid "Serbia and Montenegro" +msgstr "塞爾維亞及蒙特尼哥羅" + +#: src/common/util.c:903 +msgid "Cuba" +msgstr "古巴" + +#: src/common/util.c:904 +msgid "Cape Verde" +msgstr "維德角島" + +#: src/common/util.c:905 +msgid "Christmas Island" +msgstr "聖誕島" + +#: src/common/util.c:906 +msgid "Cyprus" +msgstr "賽普勒斯" + +#: src/common/util.c:907 +msgid "Czech Republic" +msgstr "捷克共和國" + +#: src/common/util.c:908 +msgid "Germany" +msgstr "德國" + +#: src/common/util.c:909 +msgid "Djibouti" +msgstr "吉布地" + +#: src/common/util.c:910 +msgid "Denmark" +msgstr "丹麥" + +#: src/common/util.c:911 +msgid "Dominica" +msgstr "多明尼克" + +#: src/common/util.c:912 +msgid "Dominican Republic" +msgstr "多明尼加共和國" + +#: src/common/util.c:913 +msgid "Algeria" +msgstr "阿爾及利亞" + +#: src/common/util.c:914 +msgid "Ecuador" +msgstr "厄瓜多" + +#: src/common/util.c:915 +msgid "Educational Institution" +msgstr "教育機構" + +#: src/common/util.c:916 +msgid "Estonia" +msgstr "愛沙尼亞" + +#: src/common/util.c:917 +msgid "Egypt" +msgstr "埃及" + +#: src/common/util.c:918 +msgid "Western Sahara" +msgstr "西撒哈拉" + +#: src/common/util.c:919 +msgid "Eritrea" +msgstr "埃立特里亞" + +#: src/common/util.c:920 +msgid "Spain" +msgstr "西班牙" + +#: src/common/util.c:921 +msgid "Ethiopia" +msgstr "衣索比亞" + +#: src/common/util.c:922 +msgid "European Union" +msgstr "歐盟" + +#: src/common/util.c:923 +msgid "Finland" +msgstr "芬蘭" + +#: src/common/util.c:924 +msgid "Fiji" +msgstr "斐濟" + +#: src/common/util.c:925 +msgid "Falkland Islands" +msgstr "福克蘭群島" + +#: src/common/util.c:926 +msgid "Micronesia" +msgstr "密克羅尼西亞" + +#: src/common/util.c:927 +msgid "Faroe Islands" +msgstr "法羅群島" + +#: src/common/util.c:928 +msgid "France" +msgstr "法國" + +#: src/common/util.c:929 +msgid "Gabon" +msgstr "加彭" + +#: src/common/util.c:930 +msgid "Great Britain" +msgstr "大不列顛" + +#: src/common/util.c:931 +msgid "Grenada" +msgstr "格瑞納達" + +#: src/common/util.c:932 +msgid "Georgia" +msgstr "喬治亞" + +#: src/common/util.c:933 +msgid "French Guiana" +msgstr "法屬圭亞那" + +#: src/common/util.c:934 +msgid "British Channel Isles" +msgstr "不列顛海峽群島" + +#: src/common/util.c:935 +msgid "Ghana" +msgstr "迦納" + +#: src/common/util.c:936 +msgid "Gibraltar" +msgstr "直布羅陀" + +#: src/common/util.c:937 +msgid "Greenland" +msgstr "格陵蘭" + +#: src/common/util.c:938 +msgid "Gambia" +msgstr "甘比亞" + +#: src/common/util.c:939 +msgid "Guinea" +msgstr "幾內亞" + +#: src/common/util.c:940 +msgid "Government" +msgstr "政府部門" + +#: src/common/util.c:941 +msgid "Guadeloupe" +msgstr "瓜德魯普島" + +#: src/common/util.c:942 +msgid "Equatorial Guinea" +msgstr "赤道幾內亞" + +#: src/common/util.c:943 +msgid "Greece" +msgstr "希臘" + +#: src/common/util.c:944 +msgid "S. Georgia and S. Sandwich Isles" +msgstr "南喬治亞及南桑威奇群島" + +#: src/common/util.c:945 +msgid "Guatemala" +msgstr "瓜地馬拉" + +#: src/common/util.c:946 +msgid "Guam" +msgstr "關島" + +#: src/common/util.c:947 +msgid "Guinea-Bissau" +msgstr "幾內亞比索" + +#: src/common/util.c:948 +msgid "Guyana" +msgstr "蓋亞那" + +#: src/common/util.c:949 +msgid "Hong Kong" +msgstr "香港" + +#: src/common/util.c:950 +msgid "Heard and McDonald Islands" +msgstr "赫德及麥當勞群島" + +#: src/common/util.c:951 +msgid "Honduras" +msgstr "宏都拉斯" + +#: src/common/util.c:952 +msgid "Croatia" +msgstr "克羅埃西亞" + +#: src/common/util.c:953 +msgid "Haiti" +msgstr "海地" + +#: src/common/util.c:954 +msgid "Hungary" +msgstr "匈牙利" + +#: src/common/util.c:955 +msgid "Indonesia" +msgstr "印尼" + +#: src/common/util.c:956 +msgid "Ireland" +msgstr "愛爾蘭" + +#: src/common/util.c:957 +msgid "Israel" +msgstr "以色列" + +#: src/common/util.c:958 +msgid "Isle of Man" +msgstr "曼島" + +#: src/common/util.c:959 +msgid "India" +msgstr "印度" + +#: src/common/util.c:960 +msgid "Informational" +msgstr "資訊的" + +#: src/common/util.c:961 +msgid "International" +msgstr "國際的" + +#: src/common/util.c:962 +msgid "British Indian Ocean Territory" +msgstr "英屬印度洋地區" + +#: src/common/util.c:963 +msgid "Iraq" +msgstr "伊拉克" + +#: src/common/util.c:964 +msgid "Iran" +msgstr "伊朗" + +#: src/common/util.c:965 +msgid "Iceland" +msgstr "冰島" + +#: src/common/util.c:966 +msgid "Italy" +msgstr "意大利" + +#: src/common/util.c:967 +msgid "Jersey" +msgstr "澤西" + +#: src/common/util.c:968 +msgid "Jamaica" +msgstr "牙買加" + +#: src/common/util.c:969 +msgid "Jordan" +msgstr "約旦" + +#: src/common/util.c:970 +msgid "Japan" +msgstr "日本" + +#: src/common/util.c:971 +msgid "Kenya" +msgstr "肯亞" + +#: src/common/util.c:972 +msgid "Kyrgyzstan" +msgstr "吉爾吉斯" + +#: src/common/util.c:973 +msgid "Cambodia" +msgstr "柬埔寨" + +#: src/common/util.c:974 +msgid "Kiribati" +msgstr "吉里巴斯" + +#: src/common/util.c:975 +msgid "Comoros" +msgstr "葛摩" + +#: src/common/util.c:976 +msgid "St. Kitts and Nevis" +msgstr "聖克里斯多福" + +#: src/common/util.c:977 +msgid "North Korea" +msgstr "北韓" + +#: src/common/util.c:978 +msgid "South Korea" +msgstr "南韓" + +#: src/common/util.c:979 +msgid "Kuwait" +msgstr "科威特" + +#: src/common/util.c:980 +msgid "Cayman Islands" +msgstr "開曼群島" + +#: src/common/util.c:981 +msgid "Kazakhstan" +msgstr "哈薩克" + +#: src/common/util.c:982 +msgid "Laos" +msgstr "寮國" + +#: src/common/util.c:983 +msgid "Lebanon" +msgstr "黎巴嫩" + +#: src/common/util.c:984 +msgid "Saint Lucia" +msgstr "聖露西亞" + +#: src/common/util.c:985 +msgid "Liechtenstein" +msgstr "列支敦斯登" + +#: src/common/util.c:986 +msgid "Sri Lanka" +msgstr "斯里蘭卡" + +#: src/common/util.c:987 +msgid "Liberia" +msgstr "賴比瑞亞" + +#: src/common/util.c:988 +msgid "Lesotho" +msgstr "賴索托" + +#: src/common/util.c:989 +msgid "Lithuania" +msgstr "立陶宛" + +#: src/common/util.c:990 +msgid "Luxembourg" +msgstr "盧森堡" + +#: src/common/util.c:991 +msgid "Latvia" +msgstr "拉脫維亞" + +#: src/common/util.c:992 +msgid "Libya" +msgstr "利比亞" + +#: src/common/util.c:993 +msgid "Morocco" +msgstr "摩洛哥" + +#: src/common/util.c:994 +msgid "Monaco" +msgstr "摩納哥" + +#: src/common/util.c:995 +msgid "Moldova" +msgstr "摩爾多瓦" + +#: src/common/util.c:996 +msgid "United States Medical" +msgstr "美國醫療組織" + +#: src/common/util.c:997 +msgid "Madagascar" +msgstr "馬達加斯加" + +#: src/common/util.c:998 +msgid "Marshall Islands" +msgstr "馬紹爾群島" + +#: src/common/util.c:999 +msgid "Military" +msgstr "軍事" + +#: src/common/util.c:1000 +msgid "Macedonia" +msgstr "馬其頓" + +#: src/common/util.c:1001 +msgid "Mali" +msgstr "馬利" + +#: src/common/util.c:1002 +msgid "Myanmar" +msgstr "緬甸" + +#: src/common/util.c:1003 +msgid "Mongolia" +msgstr "蒙古" + +#: src/common/util.c:1004 +msgid "Macau" +msgstr "澳門" + +#: src/common/util.c:1005 +msgid "Northern Mariana Islands" +msgstr "北馬里亞納群島" + +#: src/common/util.c:1006 +msgid "Martinique" +msgstr "法屬馬丁尼克" + +#: src/common/util.c:1007 +msgid "Mauritania" +msgstr "茅利塔尼亞" + +#: src/common/util.c:1008 +msgid "Montserrat" +msgstr "蒙瑟拉特島" + +#: src/common/util.c:1009 +msgid "Malta" +msgstr "馬爾他" + +#: src/common/util.c:1010 +msgid "Mauritius" +msgstr "模里西斯" + +#: src/common/util.c:1011 +msgid "Maldives" +msgstr "馬爾地夫" + +#: src/common/util.c:1012 +msgid "Malawi" +msgstr "馬拉威" + +#: src/common/util.c:1013 +msgid "Mexico" +msgstr "墨西哥" + +#: src/common/util.c:1014 +msgid "Malaysia" +msgstr "馬來西亞" + +#: src/common/util.c:1015 +msgid "Mozambique" +msgstr "莫三比克" + +#: src/common/util.c:1016 +msgid "Namibia" +msgstr "納米比亞" + +#: src/common/util.c:1017 +msgid "New Caledonia" +msgstr "新喀里多尼亞島" + +#: src/common/util.c:1018 +msgid "Niger" +msgstr "尼日" + +#: src/common/util.c:1019 +msgid "Internic Network" +msgstr "Internic 網路" + +#: src/common/util.c:1020 +msgid "Norfolk Island" +msgstr "諾福克島" + +#: src/common/util.c:1021 +msgid "Nigeria" +msgstr "奈及利亞" + +#: src/common/util.c:1022 +msgid "Nicaragua" +msgstr "尼加拉瓜" + +#: src/common/util.c:1023 +msgid "Netherlands" +msgstr "荷蘭" + +#: src/common/util.c:1024 +msgid "Norway" +msgstr "挪威" + +#: src/common/util.c:1025 +msgid "Nepal" +msgstr "尼泊爾" + +#: src/common/util.c:1026 +msgid "Nauru" +msgstr "諾魯" + +#: src/common/util.c:1027 +msgid "Niue" +msgstr "紐威島" + +#: src/common/util.c:1028 +msgid "New Zealand" +msgstr "紐西蘭" + +#: src/common/util.c:1029 +msgid "Oman" +msgstr "阿曼" + +#: src/common/util.c:1030 +msgid "Internic Non-Profit Organization" +msgstr "Internic 非營利性組織" + +#: src/common/util.c:1031 +msgid "Panama" +msgstr "巴拿馬" + +#: src/common/util.c:1032 +msgid "Peru" +msgstr "秘魯" + +#: src/common/util.c:1033 +msgid "French Polynesia" +msgstr "法屬波里尼西亞" + +#: src/common/util.c:1034 +msgid "Papua New Guinea" +msgstr "巴布亞紐幾內亞" + +#: src/common/util.c:1035 +msgid "Philippines" +msgstr "菲律賓" + +#: src/common/util.c:1036 +msgid "Pakistan" +msgstr "巴基斯坦" + +#: src/common/util.c:1037 +msgid "Poland" +msgstr "波蘭" + +#: src/common/util.c:1038 +msgid "St. Pierre and Miquelon" +msgstr "聖匹及密啟倫群島" + +#: src/common/util.c:1039 +msgid "Pitcairn" +msgstr "皮特康島" + +#: src/common/util.c:1040 +msgid "Puerto Rico" +msgstr "波多黎各" + +#: src/common/util.c:1041 +msgid "Palestinian Territory" +msgstr "巴勒斯坦地區" + +#: src/common/util.c:1042 +msgid "Portugal" +msgstr "葡萄牙" + +#: src/common/util.c:1043 +msgid "Palau" +msgstr "帛琉群島" + +#: src/common/util.c:1044 +msgid "Paraguay" +msgstr "巴拉圭" + +#: src/common/util.c:1045 +msgid "Qatar" +msgstr "卡達" + +#: src/common/util.c:1046 +msgid "Reunion" +msgstr "留尼旺" + +#: src/common/util.c:1047 +msgid "Romania" +msgstr "羅馬尼亞" + +#: src/common/util.c:1048 +msgid "Old School ARPAnet" +msgstr "教育 ARPAnet" + +#: src/common/util.c:1049 +msgid "Russian Federation" +msgstr "俄羅斯聯邦" + +#: src/common/util.c:1050 +msgid "Rwanda" +msgstr "盧安達" + +#: src/common/util.c:1051 +msgid "Saudi Arabia" +msgstr "沙烏地阿拉伯" + +#: src/common/util.c:1052 +msgid "Solomon Islands" +msgstr "所羅門群島" + +#: src/common/util.c:1053 +msgid "Seychelles" +msgstr "塞席爾群島" + +#: src/common/util.c:1054 +msgid "Sudan" +msgstr "蘇丹" + +#: src/common/util.c:1055 +msgid "Sweden" +msgstr "瑞典" + +#: src/common/util.c:1056 +msgid "Singapore" +msgstr "新加坡" + +#: src/common/util.c:1057 +msgid "St. Helena" +msgstr "聖赫勒拿島" + +#: src/common/util.c:1058 +msgid "Slovenia" +msgstr "斯洛凡尼亞" + +#: src/common/util.c:1059 +msgid "Svalbard and Jan Mayen Islands" +msgstr "冷岸及央麥恩群島" + +#: src/common/util.c:1060 +msgid "Slovak Republic" +msgstr "斯洛伐克共和國" + +#: src/common/util.c:1061 +msgid "Sierra Leone" +msgstr "獅子山" + +#: src/common/util.c:1062 +msgid "San Marino" +msgstr "聖馬利諾" + +#: src/common/util.c:1063 +msgid "Senegal" +msgstr "塞內加爾" + +#: src/common/util.c:1064 +msgid "Somalia" +msgstr "索馬利亞" + +#: src/common/util.c:1065 +msgid "Suriname" +msgstr "蘇利南" + +#: src/common/util.c:1066 +msgid "Sao Tome and Principe" +msgstr "聖多美和普林西比" + +#: src/common/util.c:1067 +msgid "Former USSR" +msgstr "前蘇聯" + +#: src/common/util.c:1068 +msgid "El Salvador" +msgstr "薩爾瓦多" + +#: src/common/util.c:1069 +msgid "Syria" +msgstr "敘利亞" + +#: src/common/util.c:1070 +msgid "Swaziland" +msgstr "史瓦濟蘭" + +#: src/common/util.c:1071 +msgid "Turks and Caicos Islands" +msgstr "土克斯及開科斯群島" + +#: src/common/util.c:1072 +msgid "Chad" +msgstr "查德" + +#: src/common/util.c:1073 +msgid "French Southern Territories" +msgstr "法屬南部地區" + +#: src/common/util.c:1074 +msgid "Togo" +msgstr "多哥" + +#: src/common/util.c:1075 +msgid "Thailand" +msgstr "泰國" + +#: src/common/util.c:1076 +msgid "Tajikistan" +msgstr "塔吉克" + +#: src/common/util.c:1077 +msgid "Tokelau" +msgstr "托克勞群島" + +#: src/common/util.c:1078 src/common/util.c:1082 +msgid "East Timor" +msgstr "東帝汶" + +#: src/common/util.c:1079 +msgid "Turkmenistan" +msgstr "土庫曼" + +#: src/common/util.c:1080 +msgid "Tunisia" +msgstr "突尼西亞" + +#: src/common/util.c:1081 +msgid "Tonga" +msgstr "東加" + +#: src/common/util.c:1083 +msgid "Turkey" +msgstr "土耳其" + +#: src/common/util.c:1084 +msgid "Trinidad and Tobago" +msgstr "千里達托貝哥" + +#: src/common/util.c:1085 +msgid "Tuvalu" +msgstr "吐瓦魯" + +#: src/common/util.c:1086 +msgid "Taiwan" +msgstr "臺灣" + +#: src/common/util.c:1087 +msgid "Tanzania" +msgstr "坦尚尼亞" + +#: src/common/util.c:1088 +msgid "Ukraine" +msgstr "烏克蘭" + +#: src/common/util.c:1089 +msgid "Uganda" +msgstr "烏干達" + +#: src/common/util.c:1090 +msgid "United Kingdom" +msgstr "英國" + +#: src/common/util.c:1091 +msgid "United States of America" +msgstr "美國" + +#: src/common/util.c:1092 +msgid "Uruguay" +msgstr "烏拉圭" + +#: src/common/util.c:1093 +msgid "Uzbekistan" +msgstr "烏茲別克" + +#: src/common/util.c:1094 +msgid "Vatican City State" +msgstr "梵蒂岡" + +#: src/common/util.c:1095 +msgid "St. Vincent and the Grenadines" +msgstr "聖文森及格瑞那丁" + +#: src/common/util.c:1096 +msgid "Venezuela" +msgstr "委內瑞拉" + +#: src/common/util.c:1097 +msgid "British Virgin Islands" +msgstr "英屬維京群島" + +#: src/common/util.c:1098 +msgid "US Virgin Islands" +msgstr "美屬維京群島" + +#: src/common/util.c:1099 +msgid "Vietnam" +msgstr "越南" + +#: src/common/util.c:1100 +msgid "Vanuatu" +msgstr "萬那杜" + +#: src/common/util.c:1101 +msgid "Wallis and Futuna Islands" +msgstr "瓦里斯及富都拿群島" + +#: src/common/util.c:1102 +msgid "Samoa" +msgstr "薩摩亞" + +#: src/common/util.c:1103 +msgid "Yemen" +msgstr "葉門" + +#: src/common/util.c:1104 +msgid "Mayotte" +msgstr "馬爾他群島" + +#: src/common/util.c:1105 +msgid "Yugoslavia" +msgstr "南斯拉夫" + +#: src/common/util.c:1106 +msgid "South Africa" +msgstr "南非" + +#: src/common/util.c:1107 +msgid "Zambia" +msgstr "尚比亞" + +#: src/common/util.c:1108 +msgid "Zimbabwe" +msgstr "辛巴威" + +#: src/common/util.c:1118 src/common/util.c:1128 src/fe-gtk/menu.c:616 +msgid "Unknown" +msgstr "未知" + +#: src/common/xchat.c:726 +#, fuzzy +msgid "_Open Dialog Window" +msgstr "打開對話視窗" + +#: src/common/xchat.c:727 +#, fuzzy +msgid "_Send a File" +msgstr "發送檔案" + +#: src/common/xchat.c:728 +#, fuzzy +msgid "_User Info (WhoIs)" +msgstr "使用者資訊 (WHOIS)" + +#: src/common/xchat.c:729 +msgid "_Add to Friends List" +msgstr "" + +#: src/common/xchat.c:730 +#, fuzzy +msgid "O_perator Actions" +msgstr "管理員動作" + +#: src/common/xchat.c:732 +msgid "Give Ops" +msgstr "給 Op 權限" + +#: src/common/xchat.c:733 +msgid "Take Ops" +msgstr "取消 Op 權限" + +#: src/common/xchat.c:734 +msgid "Give Voice" +msgstr "給發言權" + +#: src/common/xchat.c:735 +msgid "Take Voice" +msgstr "取消發言權" + +#: src/common/xchat.c:737 +msgid "Kick/Ban" +msgstr "踢出/封禁" + +#: src/common/xchat.c:738 src/common/xchat.c:775 +msgid "Kick" +msgstr "踢出" + +#: src/common/xchat.c:739 src/common/xchat.c:740 src/common/xchat.c:741 +#: src/common/xchat.c:742 src/common/xchat.c:743 src/common/xchat.c:774 +msgid "Ban" +msgstr "封禁" + +#: src/common/xchat.c:744 src/common/xchat.c:745 src/common/xchat.c:746 +#: src/common/xchat.c:747 +msgid "KickBan" +msgstr "踢出並封禁" + +#: src/common/xchat.c:757 +msgid "Leave Channel" +msgstr "離開聊天室" + +#: src/common/xchat.c:758 +msgid "Join Channel..." +msgstr "加入聊天室..." + +#: src/common/xchat.c:759 src/fe-gtk/menu.c:1295 +msgid "Enter Channel to Join:" +msgstr "輸入要加入的聊天室:" + +#: src/common/xchat.c:760 +msgid "Server Links" +msgstr "伺服器清單" + +#: src/common/xchat.c:761 +msgid "Ping Server" +msgstr "ping 伺服器" + +#: src/common/xchat.c:762 +msgid "Hide Version" +msgstr "隱藏版本資訊" + +#: src/common/xchat.c:772 +msgid "Op" +msgstr "給管理員權限" + +#: src/common/xchat.c:773 +msgid "DeOp" +msgstr "取消管理員權限" + +#: src/common/xchat.c:776 +msgid "bye" +msgstr "道別" + +#: src/common/xchat.c:777 +#, c-format +msgid "Enter reason to kick %s:" +msgstr "輸入踢出 %s 的原因:" + +#: src/common/xchat.c:778 +msgid "Sendfile" +msgstr "發送檔案" + +#: src/common/xchat.c:779 +msgid "Dialog" +msgstr "對話" + +#: src/common/xchat.c:788 +msgid "WhoIs" +msgstr "WhoIs" + +#: src/common/xchat.c:789 +msgid "Send" +msgstr "發送" + +#: src/common/xchat.c:790 +msgid "Chat" +msgstr "聊天" + +#: src/common/xchat.c:791 src/fe-gtk/banlist.c:411 src/fe-gtk/ignoregui.c:387 +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear" +msgstr "清除" + +#: src/common/xchat.c:792 +msgid "Ping" +msgstr "Ping" + +#: src/common/dbus/dbus-client.c:72 +msgid "Couldn't connect to session bus" +msgstr "無法連接到執行階段匯流排" + +#: src/common/dbus/dbus-client.c:86 +#, fuzzy +msgid "Failed to complete NameHasOwner" +msgstr "完成命令失敗" + +#: src/common/dbus/dbus-client.c:112 +#, fuzzy +msgid "Failed to complete Command" +msgstr "完成命令失敗" + +#: src/common/dbus/dbus-plugin.c:30 +#, fuzzy +msgid "remote access" +msgstr "xchat 遠端存取" + +#: src/common/dbus/dbus-plugin.c:31 +msgid "plugin for remote access using DBUS" +msgstr "使用 DBUS 做為遠端存取外掛程式" + +#: src/common/dbus/dbus-plugin.c:897 +#, fuzzy, c-format +msgid "Couldn't connect to session bus: %s\n" +msgstr "無法連接到執行階段匯流排: %s\n" + +#: src/common/dbus/dbus-plugin.c:914 +#, c-format +msgid "Failed to acquire %s: %s\n" +msgstr "取得 %s 失敗: %s\n" + +#: src/fe-gtk/about.c:100 +#, fuzzy +msgid "About " +msgstr "關於(_A)" + +#: src/fe-gtk/about.c:131 +msgid "A multiplatform IRC Client" +msgstr "跨平台的 IRC 客戶端軟體" + +#: src/fe-gtk/ascii.c:133 +msgid "Character Chart" +msgstr "字元集" + +#: src/fe-gtk/banlist.c:149 src/fe-gtk/chanlist.c:305 +#: src/fe-gtk/plugin-tray.c:304 +msgid "Not connected." +msgstr "並未連線。" + +#: src/fe-gtk/banlist.c:247 src/fe-gtk/banlist.c:327 +msgid "You must select some bans." +msgstr "您必須選擇一些被封禁者。" + +#: src/fe-gtk/banlist.c:276 +#, c-format +msgid "Are you sure you want to remove all bans in %s?" +msgstr "" + +#: src/fe-gtk/banlist.c:342 src/fe-gtk/ignoregui.c:173 +msgid "Mask" +msgstr "遮罩" + +#: src/fe-gtk/banlist.c:343 +msgid "From" +msgstr "從" + +#: src/fe-gtk/banlist.c:344 +msgid "Date" +msgstr "日期" + +#: src/fe-gtk/banlist.c:387 +msgid "You can only open the Ban List window while in a channel tab." +msgstr "在聊天室分頁中您只能開啟封禁清單視窗。" + +#: src/fe-gtk/banlist.c:391 +#, c-format +msgid "XChat: Ban List (%s)" +msgstr "XChat: 封禁清單 (%s)" + +#: src/fe-gtk/banlist.c:407 src/fe-gtk/notifygui.c:430 +msgid "Remove" +msgstr "刪除" + +#: src/fe-gtk/banlist.c:409 +msgid "Crop" +msgstr "剪切" + +#: src/fe-gtk/banlist.c:413 +msgid "Refresh" +msgstr "刷新" + +#: src/fe-gtk/chanlist.c:111 +#, fuzzy, c-format +msgid "Displaying %d/%d users on %d/%d channels." +msgstr "使用者及聊天室統計:%d/%d 名使用者在 %d/%d 個聊天室中" + +#: src/fe-gtk/chanlist.c:526 src/fe-gtk/menu.c:1231 src/fe-gtk/urlgrab.c:146 +msgid "Select an output filename" +msgstr "選擇輸出檔名" + +#: src/fe-gtk/chanlist.c:631 src/fe-gtk/chanlist.c:799 +#, fuzzy +msgid "_Join Channel" +msgstr "加入聊天室" + +#: src/fe-gtk/chanlist.c:633 +#, fuzzy +msgid "_Copy Channel Name" +msgstr "聊天室名" + +#: src/fe-gtk/chanlist.c:635 +msgid "Copy _Topic Text" +msgstr "" + +#: src/fe-gtk/chanlist.c:724 +#, c-format +msgid "XChat: Channel List (%s)" +msgstr "XChat:聊天室清單 (%s)" + +#: src/fe-gtk/chanlist.c:781 +#, fuzzy +msgid "_Search" +msgstr "XChat: 搜索" + +#: src/fe-gtk/chanlist.c:787 +#, fuzzy +msgid "_Download List" +msgstr "下載" + +#: src/fe-gtk/chanlist.c:793 +#, fuzzy +msgid "Save _List..." +msgstr "伺服器清單(_S)..." + +#: src/fe-gtk/chanlist.c:806 +msgid "Show only:" +msgstr "" + +#: src/fe-gtk/chanlist.c:818 +#, fuzzy +msgid "channels with" +msgstr "聊天室" + +#: src/fe-gtk/chanlist.c:831 +msgid "to" +msgstr "" + +#: src/fe-gtk/chanlist.c:843 +#, fuzzy +msgid "users." +msgstr "使用者" + +#: src/fe-gtk/chanlist.c:849 +msgid "Look in:" +msgstr "" + +#: src/fe-gtk/chanlist.c:861 +#, fuzzy +msgid "Channel name" +msgstr "聊天室名" + +#: src/fe-gtk/chanlist.c:882 +#, fuzzy +msgid "Search type:" +msgstr "搜索文字..." + +#: src/fe-gtk/chanlist.c:889 +msgid "Simple Search" +msgstr "" + +#: src/fe-gtk/chanlist.c:890 +#, fuzzy +msgid "Pattern Match (Wildcards)" +msgstr "模樣符合:" + +#: src/fe-gtk/chanlist.c:892 +msgid "Regular Expression" +msgstr "" + +#: src/fe-gtk/chanlist.c:903 src/fe-gtk/search.c:125 +msgid "Find:" +msgstr "尋找:" + +#: src/fe-gtk/dccgui.c:167 +#, c-format +msgid "Send file to %s" +msgstr "給 %s 發送檔案" + +#: src/fe-gtk/dccgui.c:497 +msgid "That file is not resumable." +msgstr "該檔案不可續傳。" + +#: src/fe-gtk/dccgui.c:501 +#, c-format +msgid "" +"Cannot access file: %s\n" +"%s.\n" +"Resuming not possible." +msgstr "" +"不能存取檔案:%s\n" +"%s。\n" +"無法續傳。" + +#: src/fe-gtk/dccgui.c:508 +msgid "" +"File in download directory is larger than file offered. Resuming not " +"possible." +msgstr "下載目錄中的檔案比提供的檔案大,無法續傳。" + +#: src/fe-gtk/dccgui.c:512 +msgid "Cannot resume the same file from two people." +msgstr "不能從兩人那裡續傳同一檔案" + +#: src/fe-gtk/dccgui.c:745 +#, fuzzy +msgid "XChat: Uploads and Downloads" +msgstr "XChat:上傳與下載" + +#: src/fe-gtk/dccgui.c:761 src/fe-gtk/dccgui.c:1000 src/fe-gtk/notifygui.c:136 +msgid "Status" +msgstr "狀態" + +#: src/fe-gtk/dccgui.c:762 src/fe-gtk/plugingui.c:73 +msgid "File" +msgstr "檔案" + +#: src/fe-gtk/dccgui.c:767 +msgid "ETA" +msgstr "ETA" + +#: src/fe-gtk/dccgui.c:792 src/fe-gtk/menu.c:1607 +msgid "Both" +msgstr "兩者" + +#: src/fe-gtk/dccgui.c:798 +msgid "Uploads" +msgstr "上傳" + +#: src/fe-gtk/dccgui.c:804 +msgid "Downloads" +msgstr "下載" + +#: src/fe-gtk/dccgui.c:809 +msgid "Details" +msgstr "詳細資訊" + +#: src/fe-gtk/dccgui.c:820 +msgid "File:" +msgstr "檔案:" + +#: src/fe-gtk/dccgui.c:821 +#, fuzzy +msgid "Address:" +msgstr "位址" + +#: src/fe-gtk/dccgui.c:827 src/fe-gtk/dccgui.c:1024 +msgid "Abort" +msgstr "中止" + +#: src/fe-gtk/dccgui.c:828 src/fe-gtk/dccgui.c:1025 +msgid "Accept" +msgstr "接受" + +#: src/fe-gtk/dccgui.c:829 +msgid "Resume" +msgstr "續傳" + +#: src/fe-gtk/dccgui.c:830 +msgid "Open Folder..." +msgstr "開啟文件夾..." + +#: src/fe-gtk/dccgui.c:990 +msgid "XChat: DCC Chat List" +msgstr "XChat: DCC 交談清單" + +#: src/fe-gtk/dccgui.c:1002 +msgid "Recv" +msgstr "接收" + +#: src/fe-gtk/dccgui.c:1003 +msgid "Sent" +msgstr "已發送" + +#: src/fe-gtk/dccgui.c:1004 +msgid "Start Time" +msgstr "開始時間" + +#: src/fe-gtk/editlist.c:139 +msgid "*NEW*" +msgstr "*新增*" + +#: src/fe-gtk/editlist.c:140 +msgid "EDIT ME" +msgstr "編輯我" + +#: src/fe-gtk/editlist.c:310 src/fe-gtk/notifygui.c:135 +#: src/fe-gtk/plugingui.c:71 +msgid "Name" +msgstr "名稱" + +#: src/fe-gtk/editlist.c:311 +msgid "Command" +msgstr "命令" + +#: src/fe-gtk/editlist.c:339 +msgid "Move Up" +msgstr "上移" + +#: src/fe-gtk/editlist.c:343 +msgid "Move Dn" +msgstr "下移" + +#: src/fe-gtk/editlist.c:351 +msgid "Cancel" +msgstr "取消" + +#: src/fe-gtk/editlist.c:355 +msgid "Save" +msgstr "儲存" + +#: src/fe-gtk/editlist.c:363 src/fe-gtk/fkeys.c:765 +msgid "Add New" +msgstr "新添" + +#: src/fe-gtk/editlist.c:367 src/fe-gtk/fkeys.c:770 src/fe-gtk/ignoregui.c:385 +msgid "Delete" +msgstr "刪除" + +#: src/fe-gtk/editlist.c:375 +msgid "Sort" +msgstr "排序" + +#: src/fe-gtk/editlist.c:379 +msgid "Help" +msgstr "求助" + +#: src/fe-gtk/fe-gtk.c:124 +msgid "Don't auto connect to servers" +msgstr "不要自動與伺服器連線" + +#: src/fe-gtk/fe-gtk.c:125 +msgid "Use a different config directory" +msgstr "使用不同的設定目錄" + +#: src/fe-gtk/fe-gtk.c:126 +msgid "Don't auto load any plugins" +msgstr "不自動載入任何外掛程式" + +#: src/fe-gtk/fe-gtk.c:127 +msgid "Show plugin auto-load directory" +msgstr "顯示外掛程式自動載入的目錄" + +#: src/fe-gtk/fe-gtk.c:128 +msgid "Show user config directory" +msgstr "顯示使用者設定目錄" + +#: src/fe-gtk/fe-gtk.c:129 +msgid "Open an irc://server:port/channel URL" +msgstr "開啟一個 irc://server:port/channel URL" + +#: src/fe-gtk/fe-gtk.c:131 src/fe-gtk/setup.c:212 +msgid "Execute command:" +msgstr "執行命令:" + +#: src/fe-gtk/fe-gtk.c:132 +msgid "Open URL or execute command in an existing XChat" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray" +msgstr "" + +#: src/fe-gtk/fe-gtk.c:134 +#, fuzzy +msgid "level" +msgstr "從不" + +#: src/fe-gtk/fe-gtk.c:135 +msgid "Show version information" +msgstr "顯示版本資訊" + +#: src/fe-gtk/fe-gtk.c:255 +#, c-format +msgid "" +"Failed to open font:\n" +"\n" +"%s" +msgstr "" +"開啟字型失敗:\n" +"\n" +"%s" + +#: src/fe-gtk/fe-gtk.c:634 +msgid "Search buffer is empty.\n" +msgstr "搜索緩衝區目前無內容。\n" + +#: src/fe-gtk/fe-gtk.c:730 +#, c-format +msgid "%d bytes" +msgstr "%d 位元組" + +#: src/fe-gtk/fe-gtk.c:731 +#, c-format +msgid "Network send queue: %d bytes" +msgstr "網路傳送佇列: %d 位元組" + +#: src/fe-gtk/fkeys.c:159 +msgid "" +"The Run Command action runs the data in Data 1 as if it has been typed into " +"the entry box where you pressed the key sequence. Thus it can contain text " +"(which will be sent to the channel/person), commands or user commands. When " +"run all \\n characters in Data 1 are used to deliminate seperate commands so " +"it is possible to run more than one command. If you want a \\ in the actual " +"text run then enter \\\\" +msgstr "" +"「Run Command」會執行資料 1 中的資料,就如同您是在輸入按鍵序列後出現的輸入格" +"中鍵入這些資料一樣。這樣,它就會包含文字 (這些文字會被發送給聊天室或某人)、命" +"令或使用者命令。執行時,資料 1 中所有「\\n」字元 被用來分隔命令,因此您可以執" +"行不止一個命令。如果您想在執行的文字中包含字元「\\」,您應該輸入「\\\\」" + +#: src/fe-gtk/fkeys.c:161 +msgid "" +"The Change Page command switches between pages in the notebook. Set Data 1 " +"to the page you want to switch to. If Data 2 is set to anything then the " +"switch will be relative to the current position" +msgstr "" +"「Change Page」命令在您的筆記本中的分頁間切換。將資料 1 設定成您要切換的分" +"頁。如果資料 2 被設定成任意值,切換分頁數將相對於目前位置而言" + +#: src/fe-gtk/fkeys.c:163 +msgid "" +"The Insert in Buffer command will insert the contents of Data 1 into the " +"entry where the key sequence was pressed at the current cursor position" +msgstr "" +"「Insert in Buffer」命令在目前游標處把資料 1 中的內容插入到接受按鍵序列的輸入" +"格中" + +#: src/fe-gtk/fkeys.c:165 +msgid "" +"The Scroll Page command scrolls the text widget up or down one page or one " +"line. Set Data 1 to either Up, Down, +1 or -1." +msgstr "" +"「Scroll Page」命令在文字視窗元件中上下滾動一頁或一列。設定資料 1 為 Up、" +"DOWN、+1或-1。" + +#: src/fe-gtk/fkeys.c:167 +msgid "" +"The Set Buffer command sets the entry where the key sequence was entered to " +"the contents of Data 1" +msgstr "「Set Buffer」命令把接受按鍵序列後的輸入格設定成資料 1 中的內容" + +#: src/fe-gtk/fkeys.c:169 +msgid "" +"The Last Command command sets the entry to contain the last command entered " +"- the same as pressing up in a shell" +msgstr "" +"「Last Command」命令把輸入格設為前一個命令 - 和在終端中按向上箭頭效果相同" + +#: src/fe-gtk/fkeys.c:171 +msgid "" +"The Next Command command sets the entry to contain the next command entered " +"- the same as pressing down in a shell" +msgstr "" +"「Next Command」命令把輸入格設為下一個命令 - 和在終端中按向下箭頭效果相同" + +#: src/fe-gtk/fkeys.c:173 +msgid "" +"This command changes the text in the entry to finish an incomplete nickname " +"or command. If Data 1 is set then double-tabbing in a string will select the " +"last nick, not the next" +msgstr "" +"該命令改變輸入格中文字,來完成未輸入完畢的使用者暱稱或命令。如果資料 1 被設" +"定,那麼,雙擊 tab 鍵會選擇最後一個暱稱,而非下一個" + +#: src/fe-gtk/fkeys.c:175 +msgid "" +"This command scrolls up and down through the list of nicks. If Data 1 is set " +"to anything it will scroll up, else it scrolls down" +msgstr "" +"該命令在暱稱清單中上下移動。如果資料 1 被設定成任意值,它會上移,否則下移" + +#: src/fe-gtk/fkeys.c:177 +msgid "" +"This command checks the last word entered in the entry against the replace " +"list and replaces it if it finds a match" +msgstr "該命令對照替換清單來檢查輸入的最後一詞,若找到符合者就代替它" + +#: src/fe-gtk/fkeys.c:179 +msgid "This command moves the front tab left by one" +msgstr "該命令把最上面的分頁向左移一格" + +#: src/fe-gtk/fkeys.c:181 +msgid "This command moves the front tab right by one" +msgstr "該命令把最上面的分頁向右移一格" + +#: src/fe-gtk/fkeys.c:183 +msgid "This command moves the current tab family to the left" +msgstr "該命令把目前分頁向左移一格" + +#: src/fe-gtk/fkeys.c:185 +msgid "This command moves the current tab family to the right" +msgstr "該命令把目前分頁向右移一格" + +#: src/fe-gtk/fkeys.c:187 +msgid "Push input line into history but doesn't send to server" +msgstr "把輸入列存到歷史中,但不發送給伺服器" + +#: src/fe-gtk/fkeys.c:198 +msgid "There was an error loading key bindings configuration" +msgstr "載入鍵盤映射配置時出錯" + +#: src/fe-gtk/fkeys.c:450 src/fe-gtk/fkeys.c:451 src/fe-gtk/fkeys.c:452 +#: src/fe-gtk/fkeys.c:453 src/fe-gtk/fkeys.c:743 src/fe-gtk/fkeys.c:749 +#: src/fe-gtk/fkeys.c:754 src/fe-gtk/maingui.c:1642 src/fe-gtk/maingui.c:1758 +#: src/fe-gtk/maingui.c:3259 +msgid "<none>" +msgstr "<無>" + +#: src/fe-gtk/fkeys.c:707 +msgid "Mod" +msgstr "修飾鍵" + +#: src/fe-gtk/fkeys.c:708 src/fe-gtk/fkeys.c:803 +msgid "Key" +msgstr "按鍵" + +#: src/fe-gtk/fkeys.c:709 +msgid "Action" +msgstr "動作" + +#: src/fe-gtk/fkeys.c:718 +msgid "XChat: Keyboard Shortcuts" +msgstr "XChat: 鍵盤快捷鍵" + +#: src/fe-gtk/fkeys.c:796 +msgid "Shift" +msgstr "Shift" + +#: src/fe-gtk/fkeys.c:798 +msgid "Alt" +msgstr "Alt" + +#: src/fe-gtk/fkeys.c:800 +msgid "Ctrl" +msgstr "Ctrl" + +#: src/fe-gtk/fkeys.c:807 +msgid "Data 1" +msgstr "資料 1" + +#: src/fe-gtk/fkeys.c:810 +msgid "Data 2" +msgstr "資料 2" + +#: src/fe-gtk/fkeys.c:852 +msgid "Error opening keys config file\n" +msgstr "打開按鍵配置檔案時出錯\n" + +#: src/fe-gtk/fkeys.c:1019 +#, c-format +msgid "" +"Unknown keyname %s in key bindings config file\n" +"Load aborted, please fix %s/keybindings.conf\n" +msgstr "" +"鍵盤映射配置檔案中沒有鍵名 %s\n" +"中止載入,請修復 %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1057 +#, c-format +msgid "" +"Unknown action %s in key bindings config file\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"鍵盤映射配置檔案中沒有動作 %s\n" +"中止載入,請修復 %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1078 +#, c-format +msgid "" +"Expecting Data line (beginning Dx{:|!}) but got:\n" +"%s\n" +"\n" +"Load aborted, Please fix %s/keybindings\n" +msgstr "" +"期待資料列(以 Dx{:|!} 開始),卻得到:\n" +"%s\n" +"\n" +"中止載入。請修復 %s/keybindings.conf\n" + +#: src/fe-gtk/fkeys.c:1147 +#, c-format +msgid "" +"Key bindings config file is corrupt, load aborted\n" +"Please fix %s/keybindings.conf\n" +msgstr "" +"鍵盤映射配置檔案損壞,中止載入\n" +"請修復 %s/keybindings.conf\n" + +#: src/fe-gtk/gtkutil.c:117 +msgid "Cannot write to that file." +msgstr "無法寫入該檔案。" + +#: src/fe-gtk/gtkutil.c:119 +msgid "Cannot read that file." +msgstr "無法讀取該檔案。" + +#: src/fe-gtk/ignoregui.c:115 src/fe-gtk/ignoregui.c:262 +msgid "That mask already exists." +msgstr "該遮罩已存在。" + +#: src/fe-gtk/ignoregui.c:175 src/fe-gtk/maingui.c:2139 +msgid "Private" +msgstr "私人" + +#: src/fe-gtk/ignoregui.c:176 +msgid "Notice" +msgstr "通知" + +#: src/fe-gtk/ignoregui.c:177 +msgid "CTCP" +msgstr "CTCP" + +#: src/fe-gtk/ignoregui.c:178 +msgid "DCC" +msgstr "DCC" + +#: src/fe-gtk/ignoregui.c:179 +msgid "Invite" +msgstr "邀請" + +#: src/fe-gtk/ignoregui.c:180 +msgid "Unignore" +msgstr "取消忽略" + +#: src/fe-gtk/ignoregui.c:306 +msgid "Enter mask to ignore:" +msgstr "輸入要忽略的遮罩:" + +#: src/fe-gtk/ignoregui.c:353 +msgid "XChat: Ignore list" +msgstr "XChat: 忽略清單" + +#: src/fe-gtk/ignoregui.c:360 +msgid "Ignore Stats:" +msgstr "忽略統計:" + +#: src/fe-gtk/ignoregui.c:368 +msgid "Channel:" +msgstr "聊天室:" + +#: src/fe-gtk/ignoregui.c:369 +msgid "Private:" +msgstr "私人:" + +#: src/fe-gtk/ignoregui.c:370 +msgid "Notice:" +msgstr "通知:" + +#: src/fe-gtk/ignoregui.c:371 +msgid "CTCP:" +msgstr "CTCP:" + +#: src/fe-gtk/ignoregui.c:372 +msgid "Invite:" +msgstr "邀請:" + +#: src/fe-gtk/ignoregui.c:383 src/fe-gtk/notifygui.c:426 +msgid "Add..." +msgstr "加入..." + +#: src/fe-gtk/joind.c:83 +msgid "Channel name too short, try again." +msgstr "聊天室名稱太短,再試一次。" + +#: src/fe-gtk/joind.c:125 +msgid "XChat: Connection Complete" +msgstr "XChat: 連線完成" + +#: src/fe-gtk/joind.c:150 +#, c-format +msgid "Connection to %s complete." +msgstr "完成到 %s 的連線。" + +#: src/fe-gtk/joind.c:159 +msgid "" +"In the Server-List window, no channel (chat room) has been entered to be " +"automatically joined for this network." +msgstr "在伺服器清單視窗之中,並沒有輸入會自動加入此網路的聊天室。" + +#: src/fe-gtk/joind.c:165 +msgid "What would you like to do next?" +msgstr "您接下來想要做什麼?" + +#: src/fe-gtk/joind.c:170 +msgid "_Nothing, I'll join a channel later." +msgstr "沒事,我稍後再加入聊天室。(_N)" + +#: src/fe-gtk/joind.c:179 +msgid "_Join this channel:" +msgstr "加入此聊天室(_J):" + +#: src/fe-gtk/joind.c:191 +msgid "If you know the name of the channel you want to join, enter it here." +msgstr "如果您知道想要加入的聊天室名稱,在這裡輸入它。" + +#: src/fe-gtk/joind.c:198 +msgid "O_pen the Channel-List window." +msgstr "開啟聊天室清單視窗。(_P)" + +#: src/fe-gtk/joind.c:205 +msgid "Retrieving the Channel-List may take a minute or two." +msgstr "取回聊天室清單也許會花費一到二分鐘。" + +#: src/fe-gtk/joind.c:212 +msgid "_Always show this dialog after connecting." +msgstr "總是在連線之後顯示此對話框。(_A)" + +#: src/fe-gtk/maingui.c:504 +msgid "Dialog with" +msgstr "交談與" + +#: src/fe-gtk/maingui.c:795 +#, c-format +msgid "Topic for %s is: %s" +msgstr "%s 的話題是:%s" + +#: src/fe-gtk/maingui.c:800 +msgid "No topic is set" +msgstr "沒有設定話題" + +#: src/fe-gtk/maingui.c:1189 +#, c-format +msgid "" +"This server still has %d channels or dialogs associated with it. Close them " +"all?" +msgstr "這台伺服器仍然有 %d 個與它相關的聊天室或對話。要全部關閉它們嗎?" + +#: src/fe-gtk/maingui.c:1283 +#, fuzzy +msgid "Quit XChat?" +msgstr "關於 XChat" + +#: src/fe-gtk/maingui.c:1304 +msgid "Don't ask next time." +msgstr "" + +#: src/fe-gtk/maingui.c:1310 +#, fuzzy, c-format +msgid "You are connected to %i IRC networks." +msgstr "啟動時自動連接到此網路" + +#: src/fe-gtk/maingui.c:1312 +msgid "Are you sure you want to quit?" +msgstr "" + +#: src/fe-gtk/maingui.c:1314 +#, fuzzy +msgid "Some file transfers are still active." +msgstr "某些檔案傳輸仍在進行,要離開 xchat 嗎?" + +#: src/fe-gtk/maingui.c:1332 +msgid "_Minimize to Tray" +msgstr "" + +#: src/fe-gtk/maingui.c:1552 +msgid "Insert Attribute or Color Code" +msgstr "插入屬性或顏色代碼" + +#: src/fe-gtk/maingui.c:1554 +msgid "<b>Bold</b>" +msgstr "<b>粗體</b>" + +#: src/fe-gtk/maingui.c:1555 +msgid "<u>Underline</u>" +msgstr "<u>底線</u>" + +#: src/fe-gtk/maingui.c:1557 +msgid "Normal" +msgstr "正常" + +#: src/fe-gtk/maingui.c:1559 +msgid "Colors 0-7" +msgstr "顏色 0-7" + +#: src/fe-gtk/maingui.c:1569 +msgid "Colors 8-15" +msgstr "顏色 8-15" + +#: src/fe-gtk/maingui.c:1612 +#, fuzzy +msgid "_Settings" +msgstr "設定(_E)" + +#: src/fe-gtk/maingui.c:1614 +msgid "_Log to Disk" +msgstr "" + +#: src/fe-gtk/maingui.c:1615 +msgid "_Reload Scrollback" +msgstr "" + +#: src/fe-gtk/maingui.c:1617 +#, fuzzy +msgid "_Hide Join/Part Messages" +msgstr "隱藏加入/離開訊息" + +#: src/fe-gtk/maingui.c:1625 +#, fuzzy +msgid "_Extra Alerts" +msgstr "警報" + +#: src/fe-gtk/maingui.c:1627 +#, fuzzy +msgid "Beep on _Message" +msgstr "有訊息時響鈴提示" + +#: src/fe-gtk/maingui.c:1628 +msgid "Blink Tray _Icon" +msgstr "" + +#: src/fe-gtk/maingui.c:1629 +msgid "Blink Task _Bar" +msgstr "" + +#: src/fe-gtk/maingui.c:1667 src/fe-gtk/menu.c:2142 +#, fuzzy +msgid "_Detach" +msgstr "分離分頁(_D)" + +#: src/fe-gtk/maingui.c:1669 src/fe-gtk/menu.c:2143 src/fe-gtk/menu.c:2148 +#: src/fe-gtk/plugingui.c:234 src/fe-gtk/search.c:151 +msgid "_Close" +msgstr "關閉(_C)" + +#: src/fe-gtk/maingui.c:2007 src/fe-gtk/maingui.c:2113 +msgid "User limit must be a number!\n" +msgstr "使用者限額必須是數字!\n" + +#: src/fe-gtk/maingui.c:2135 +msgid "Topic Protection" +msgstr "話題保護" + +#: src/fe-gtk/maingui.c:2136 +msgid "No outside messages" +msgstr "無室外訊息" + +#: src/fe-gtk/maingui.c:2137 +msgid "Secret" +msgstr "秘密" + +#: src/fe-gtk/maingui.c:2138 +msgid "Invite Only" +msgstr "僅邀請" + +#: src/fe-gtk/maingui.c:2140 +msgid "Moderated" +msgstr "監管的" + +#: src/fe-gtk/maingui.c:2141 +msgid "Ban List" +msgstr "封禁清單" + +#: src/fe-gtk/maingui.c:2143 +msgid "Keyword" +msgstr "密碼" + +#: src/fe-gtk/maingui.c:2155 +msgid "User Limit" +msgstr "使用者限額" + +#: src/fe-gtk/maingui.c:2264 +msgid "Show/Hide userlist" +msgstr "顯示/隱藏使用者清單" + +#: src/fe-gtk/maingui.c:2389 +msgid "" +"Unable to set transparent background!\n" +"\n" +"You may be using a non-compliant window\n" +"manager that is not currently supported.\n" +msgstr "" +"無法設定透明背景!\n" +"\n" +"或許您正使用目前尚不被支援的\n" +"不相容視窗管理程式。\n" + +#: src/fe-gtk/maingui.c:2660 +msgid "Enter new nickname:" +msgstr "輸入新暱稱:" + +#: src/fe-gtk/menu.c:124 +msgid "Host unknown" +msgstr "未知主機" + +#: src/fe-gtk/menu.c:615 +#, c-format +msgid "<tt><b>%-11s</b></tt> %s" +msgstr "<tt><b>%-11s</b></tt> %s" + +#: src/fe-gtk/menu.c:621 src/fe-gtk/menu.c:625 +msgid "Real Name:" +msgstr "真實名稱:" + +#: src/fe-gtk/menu.c:632 +msgid "User:" +msgstr "使用者:" + +#: src/fe-gtk/menu.c:639 +msgid "Country:" +msgstr "國家:" + +#: src/fe-gtk/menu.c:646 +msgid "Server:" +msgstr "伺服器:" + +#: src/fe-gtk/menu.c:657 +#, c-format +msgid "%u minutes ago" +msgstr "%u 分鐘之前" + +#: src/fe-gtk/menu.c:659 src/fe-gtk/menu.c:662 +msgid "Last Msg:" +msgstr "最後訊息:" + +#: src/fe-gtk/menu.c:672 +msgid "Away Msg:" +msgstr "離開訊息:" + +#: src/fe-gtk/menu.c:730 +#, c-format +msgid "%d nicks selected." +msgstr "" + +#: src/fe-gtk/menu.c:855 +msgid "" +"The Menubar is now hidden. You can show it again by pressing F9 or right-" +"clicking in a blank part of the main text area." +msgstr "" +"選單列目前已隱藏。您可以藉由按下 F9 或以滑鼠右鍵點選主要文字區域的空白部份來" +"重新顯示它。" + +#: src/fe-gtk/menu.c:944 +msgid "Open Link in Browser" +msgstr "在瀏覽器中開啟連結" + +#: src/fe-gtk/menu.c:945 +msgid "Copy Selected Link" +msgstr "複製選取的連結" + +#: src/fe-gtk/menu.c:1007 src/fe-gtk/menu.c:1278 +msgid "Join Channel" +msgstr "加入聊天室" + +#: src/fe-gtk/menu.c:1011 +msgid "Part Channel" +msgstr "離開聊天室" + +#: src/fe-gtk/menu.c:1013 +msgid "Cycle Channel" +msgstr "離開聊天室,而後立即加入" + +#: src/fe-gtk/menu.c:1049 +msgid "_Remove from Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1051 +msgid "_Add to Favorites" +msgstr "" + +#: src/fe-gtk/menu.c:1070 +msgid "XChat: User menu" +msgstr "XChat:使用者選單" + +#: src/fe-gtk/menu.c:1079 +msgid "Edit This Menu..." +msgstr "編輯此選單..." + +#: src/fe-gtk/menu.c:1280 +msgid "Retrieve channel list..." +msgstr "取回聊天室清單..." + +#: src/fe-gtk/menu.c:1348 +#, fuzzy +msgid "" +"User Commands - Special codes:\n" +"\n" +"%c = current channel\n" +"%e = current network name\n" +"%m = machine info\n" +"%n = your nick\n" +"%t = time/date\n" +"%v = xchat version\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +"eg:\n" +"/cmd john hello\n" +"\n" +"%2 would be \"john\"\n" +"&2 would be \"john hello\"." +msgstr "" +"使用者命令 - 特殊編碼:\n" +"\n" +"%c = 目前聊天室\n" +"%m = 機器資訊\n" +"%n = 您的暱稱\n" +"%t = 時間/日期\n" +"%v = xchat 版本\n" +"%2 = 第 2 個詞\n" +"%3 = 第 3 個詞\n" +"&2 = 從第 2 個詞到列尾\n" +"&3 = 從第 3 個詞到列尾\n" +"\n" +"如:\n" +"/cmd john hello\n" +"\n" +"%2 會是「john」\n" +"&2 會是「john hello」。" + +#: src/fe-gtk/menu.c:1364 +#, fuzzy +msgid "" +"Userlist Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"使用者清單按鈕 - 特殊編碼:\n" +"\n" +"%a = 所有選取的使用者\n" +"%c = 目前聊天室\n" +"%h = 選取使用者的主機名\n" +"%m = 機器資訊\n" +"%n = 您的暱稱\n" +"%s = 選取的使用者\n" +"%t = 時間/日期\n" + +#: src/fe-gtk/menu.c:1374 +#, fuzzy +msgid "" +"Dialog Buttons - Special codes:\n" +"\n" +"%a = all selected nicks\n" +"%c = current channel\n" +"%e = current network name\n" +"%h = selected nick's hostname\n" +"%m = machine info\n" +"%n = your nick\n" +"%s = selected nick\n" +"%t = time/date\n" +msgstr "" +"對話按鈕 - 特殊編碼:\n" +"\n" +"%a = 所有選取的使用者\n" +"%c = 目前聊天室\n" +"%h = 選取使用者的主機名\n" +"%m = 機器資訊\n" +"%n = 您的暱稱\n" +"%s = 選取的使用者\n" +"%t = 時間/日期\n" + +#: src/fe-gtk/menu.c:1384 +#, fuzzy +msgid "" +"CTCP Replies - Special codes:\n" +"\n" +"%d = data (the whole ctcp)\n" +"%e = current network name\n" +"%m = machine info\n" +"%s = nick who sent the ctcp\n" +"%t = time/date\n" +"%2 = word 2\n" +"%3 = word 3\n" +"&2 = word 2 to the end of line\n" +"&3 = word 3 to the end of line\n" +"\n" +msgstr "" +"CTCP 回應 - 特殊編碼:\n" +"\n" +"%d = 資料 (全部 ctcp)\n" +"%m = 機器資訊\n" +"%s = 發送 ctcp 的使用者\n" +"%t = 時間/日期\n" +"%2 = 第 2 個詞\n" +"%3 = 第 3 個詞\n" +"&2 = 從第 2 個詞到列尾\n" +"&3 = 從第 3 個詞到列尾\n" +"\n" + +#: src/fe-gtk/menu.c:1395 +#, c-format +msgid "" +"URL Handlers - Special codes:\n" +"\n" +"%s = the URL string\n" +"\n" +"Putting a ! infront of the command\n" +"indicates it should be sent to a\n" +"shell instead of XChat" +msgstr "" +"URL 處理程式 - 特殊編碼:\n" +"\n" +"%s = URL 字串\n" +"\n" +"在命令前加一個「!」表示\n" +"該命令應被發送到 shell 而\n" +"非 XChat" + +#: src/fe-gtk/menu.c:1404 +msgid "XChat: User Defined Commands" +msgstr "XChat: 使用者自訂命令" + +#: src/fe-gtk/menu.c:1411 +msgid "XChat: Userlist Popup menu" +msgstr "XChat: 使用者清單彈出選單" + +#: src/fe-gtk/menu.c:1418 +msgid "Replace with" +msgstr "以...替換" + +#: src/fe-gtk/menu.c:1418 +msgid "XChat: Replace" +msgstr "XChat: 替換" + +#: src/fe-gtk/menu.c:1425 +msgid "XChat: URL Handlers" +msgstr "XChat: URL 處理程式" + +#: src/fe-gtk/menu.c:1444 +msgid "XChat: Userlist buttons" +msgstr "XChat: 使用者清單按鈕" + +#: src/fe-gtk/menu.c:1451 +msgid "XChat: Dialog buttons" +msgstr "XChat: 對話框按鈕" + +#: src/fe-gtk/menu.c:1458 +msgid "XChat: CTCP Replies" +msgstr "XChat: CTCP 回應" + +#: src/fe-gtk/menu.c:1564 +msgid "_XChat" +msgstr "_XChat" + +#: src/fe-gtk/menu.c:1565 +msgid "Network Li_st..." +msgstr "網路列表(_S)..." + +#: src/fe-gtk/menu.c:1568 +msgid "_New" +msgstr "新增(_N)" + +#: src/fe-gtk/menu.c:1569 +msgid "Server Tab..." +msgstr "伺服器分頁..." + +#: src/fe-gtk/menu.c:1570 +msgid "Channel Tab..." +msgstr "聊天室分頁..." + +#: src/fe-gtk/menu.c:1571 +msgid "Server Window..." +msgstr "伺服器視窗..." + +#: src/fe-gtk/menu.c:1572 +msgid "Channel Window..." +msgstr "聊天室視窗..." + +#: src/fe-gtk/menu.c:1577 src/fe-gtk/menu.c:1579 +msgid "_Load Plugin or Script..." +msgstr "載入外掛程式或命令稿(_L)..." + +#: src/fe-gtk/menu.c:1587 src/fe-gtk/plugin-tray.c:610 +msgid "_Quit" +msgstr "離開(_Q)" + +#: src/fe-gtk/menu.c:1589 +msgid "_View" +msgstr "檢視(_V)" + +#: src/fe-gtk/menu.c:1591 +#, fuzzy +msgid "_Menu Bar" +msgstr "選單欄(_M)" + +#: src/fe-gtk/menu.c:1592 +#, fuzzy +msgid "_Topic Bar" +msgstr "話題欄(_T)" + +#: src/fe-gtk/menu.c:1593 +#, fuzzy +msgid "_User List" +msgstr "使用者清單" + +#: src/fe-gtk/menu.c:1594 +#, fuzzy +msgid "U_serlist Buttons" +msgstr "使用者清單按鈕(_U)..." + +#: src/fe-gtk/menu.c:1595 +msgid "M_ode Buttons" +msgstr "模式按鈕(_O)" + +#: src/fe-gtk/menu.c:1597 +#, fuzzy +msgid "_Channel Switcher" +msgstr "聊天室清單..." + +#: src/fe-gtk/menu.c:1599 +msgid "_Tabs" +msgstr "分頁(_T)" + +#: src/fe-gtk/menu.c:1600 +msgid "T_ree" +msgstr "樹狀圖(_R)" + +#: src/fe-gtk/menu.c:1602 +msgid "_Network Meters" +msgstr "網路流量(_N)" + +#: src/fe-gtk/menu.c:1604 +msgid "Off" +msgstr "離線" + +#: src/fe-gtk/menu.c:1605 +msgid "Graph" +msgstr "圖形" + +#: src/fe-gtk/menu.c:1610 +msgid "_Server" +msgstr "伺服器(_S)" + +#: src/fe-gtk/menu.c:1611 +msgid "_Disconnect" +msgstr "切斷連接(_D)" + +#: src/fe-gtk/menu.c:1612 +msgid "_Reconnect" +msgstr "重新連接(_R)" + +#: src/fe-gtk/menu.c:1613 +#, fuzzy +msgid "Join a Channel..." +msgstr "加入聊天室..." + +#: src/fe-gtk/menu.c:1614 +#, fuzzy +msgid "List of Channels..." +msgstr "加入聊天室..." + +#: src/fe-gtk/menu.c:1617 +msgid "Marked Away" +msgstr "標記為暫離" + +#: src/fe-gtk/menu.c:1619 +msgid "_Usermenu" +msgstr "使用者選單(_U)" + +#: src/fe-gtk/menu.c:1621 +msgid "S_ettings" +msgstr "設定(_E)" + +#: src/fe-gtk/menu.c:1622 +msgid "_Preferences" +msgstr "偏好設定(_P)..." + +#: src/fe-gtk/menu.c:1624 +msgid "Advanced" +msgstr "進階" + +#: src/fe-gtk/menu.c:1625 +msgid "Auto Replace..." +msgstr "自動替換..." + +#: src/fe-gtk/menu.c:1626 +msgid "CTCP Replies..." +msgstr "CTCP 回應..." + +#: src/fe-gtk/menu.c:1627 +msgid "Dialog Buttons..." +msgstr "對話框按鈕..." + +#: src/fe-gtk/menu.c:1628 +msgid "Keyboard Shortcuts..." +msgstr "鍵盤快捷鍵..." + +#: src/fe-gtk/menu.c:1629 +msgid "Text Events..." +msgstr "文字事件..." + +#: src/fe-gtk/menu.c:1630 +msgid "URL Handlers..." +msgstr "URL 處理程式..." + +#: src/fe-gtk/menu.c:1631 +msgid "User Commands..." +msgstr "使用者命令..." + +#: src/fe-gtk/menu.c:1632 +msgid "Userlist Buttons..." +msgstr "使用者清單按鈕..." + +#: src/fe-gtk/menu.c:1633 +msgid "Userlist Popup..." +msgstr "使用者清單彈出選單..." + +#: src/fe-gtk/menu.c:1636 +msgid "_Window" +msgstr "視窗(_W)" + +#: src/fe-gtk/menu.c:1637 +msgid "Ban List..." +msgstr "封禁清單..." + +#: src/fe-gtk/menu.c:1638 +msgid "Character Chart..." +msgstr "字元集..." + +#: src/fe-gtk/menu.c:1639 +msgid "Direct Chat..." +msgstr "直接聊天..." + +#: src/fe-gtk/menu.c:1640 +msgid "File Transfers..." +msgstr "檔案傳輸..." + +#: src/fe-gtk/menu.c:1641 +#, fuzzy +msgid "Friends List..." +msgstr "封禁清單..." + +#: src/fe-gtk/menu.c:1642 +msgid "Ignore List..." +msgstr "忽略清單..." + +#: src/fe-gtk/menu.c:1643 +msgid "Plugins and Scripts..." +msgstr "外掛程式和命令稿..." + +#: src/fe-gtk/menu.c:1644 +msgid "Raw Log..." +msgstr "原始記錄..." + +#: src/fe-gtk/menu.c:1645 +msgid "URL Grabber..." +msgstr "URL 抓取程式..." + +#: src/fe-gtk/menu.c:1647 +msgid "Reset Marker Line" +msgstr "重置標記線" + +#: src/fe-gtk/menu.c:1648 +msgid "C_lear Text" +msgstr "清空文字(_L)" + +#: src/fe-gtk/menu.c:1650 +msgid "Search Text..." +msgstr "搜索文字..." + +#: src/fe-gtk/menu.c:1651 +msgid "Save Text..." +msgstr "儲存文字..." + +#: src/fe-gtk/menu.c:1653 src/fe-gtk/menu.c:2134 +msgid "_Help" +msgstr "求助(_H)" + +#: src/fe-gtk/menu.c:1654 +msgid "_Contents" +msgstr "內容(_C)" + +#: src/fe-gtk/menu.c:1656 +msgid "Check for updates" +msgstr "" + +#: src/fe-gtk/menu.c:1658 +msgid "_About" +msgstr "關於(_A)" + +#: src/fe-gtk/menu.c:2147 +#, fuzzy +msgid "_Attach" +msgstr "附加視窗(_A)" + +#: src/fe-gtk/notifygui.c:138 +msgid "Last Seen" +msgstr "最後一次看到" + +#: src/fe-gtk/notifygui.c:180 +msgid "Offline" +msgstr "離線" + +#: src/fe-gtk/notifygui.c:200 src/fe-gtk/setup.c:231 +msgid "Never" +msgstr "從不" + +#: src/fe-gtk/notifygui.c:203 src/fe-gtk/notifygui.c:228 +#, fuzzy, c-format +msgid "%d minutes ago" +msgstr "%u 分鐘之前" + +#: src/fe-gtk/notifygui.c:218 +msgid "Online" +msgstr "上線" + +#: src/fe-gtk/notifygui.c:347 +msgid "Enter nickname to add:" +msgstr "輸入要新增的暱稱:" + +#: src/fe-gtk/notifygui.c:376 +msgid "Notify on these networks:" +msgstr "" + +#: src/fe-gtk/notifygui.c:387 +msgid "Comma separated list of networks is accepted." +msgstr "" + +#: src/fe-gtk/notifygui.c:413 +#, fuzzy +msgid "XChat: Friends List" +msgstr "XChat: 檔案發送清單" + +#: src/fe-gtk/notifygui.c:434 +msgid "Open Dialog" +msgstr "打開對話視窗" + +#: src/fe-gtk/plugin-tray.c:250 +msgid "" +"Cannot find 'notify-send' to open balloon alerts.\n" +"Please install libnotify." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:301 +#, c-format +msgid "XChat: Connected to %u networks and %u channels" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:589 +msgid "_Restore" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:591 +#, fuzzy +msgid "_Hide" +msgstr "隱藏" + +#: src/fe-gtk/plugin-tray.c:594 +msgid "_Blink on" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:595 src/fe-gtk/setup.c:479 +#, fuzzy +msgid "Channel Message" +msgstr "聊天室名" + +#: src/fe-gtk/plugin-tray.c:596 src/fe-gtk/setup.c:480 +#, fuzzy +msgid "Private Message" +msgstr "有悄悄話時響鈴提示" + +#: src/fe-gtk/plugin-tray.c:597 src/fe-gtk/setup.c:481 +#, fuzzy +msgid "Highlighted Message" +msgstr "高亮度顯示訊息時響鈴提示" + +#: src/fe-gtk/plugin-tray.c:600 +msgid "_Change status" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:602 +#, fuzzy +msgid "_Away" +msgstr "離開" + +#: src/fe-gtk/plugin-tray.c:605 +msgid "_Back" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:654 src/fe-gtk/plugin-tray.c:662 +#, c-format +msgid "XChat: Highlighted message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:657 +#, c-format +msgid "XChat: %u highlighted messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:680 src/fe-gtk/plugin-tray.c:687 +#, c-format +msgid "XChat: New public message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:683 +#, c-format +msgid "XChat: %u new public messages." +msgstr "" + +#: src/fe-gtk/plugin-tray.c:709 src/fe-gtk/plugin-tray.c:716 +#, c-format +msgid "XChat: Private message from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:712 +#, c-format +msgid "XChat: %u private messages, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:762 src/fe-gtk/plugin-tray.c:770 +#, c-format +msgid "XChat: File offer from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugin-tray.c:765 +#, c-format +msgid "XChat: %u file offers, latest from: %s (%s)" +msgstr "" + +#: src/fe-gtk/plugingui.c:72 +msgid "Version" +msgstr "版本" + +#: src/fe-gtk/plugingui.c:74 src/fe-gtk/textgui.c:424 +msgid "Description" +msgstr "描述" + +#: src/fe-gtk/plugingui.c:149 +msgid "Select a Plugin or Script to load" +msgstr "選擇要載入的外掛程式或命令稿" + +#: src/fe-gtk/plugingui.c:221 +msgid "XChat: Plugins and Scripts" +msgstr "XChat: 外掛程式和命令稿" + +#: src/fe-gtk/plugingui.c:227 +msgid "_Load..." +msgstr "載入(_L)..." + +#: src/fe-gtk/plugingui.c:230 +msgid "_UnLoad" +msgstr "卸載(_U)" + +#: src/fe-gtk/rawlog.c:79 src/fe-gtk/rawlog.c:128 src/fe-gtk/textgui.c:438 +#: src/fe-gtk/urlgrab.c:203 +msgid "Save As..." +msgstr "另存為..." + +#: src/fe-gtk/rawlog.c:95 +#, c-format +msgid "XChat: Rawlog (%s)" +msgstr "XChat: 原始日誌 (%s)" + +#: src/fe-gtk/rawlog.c:125 +msgid "Clear rawlog" +msgstr "清除原始日誌" + +#: src/fe-gtk/search.c:56 +msgid "The window you opened this Search for doesn't exist anymore." +msgstr "您為該搜索打開的視窗已不再存在。" + +#: src/fe-gtk/search.c:64 +msgid "Search hit end, not found." +msgstr "搜尋到末端,沒找到。" + +#: src/fe-gtk/search.c:116 +msgid "XChat: Search" +msgstr "XChat: 搜索" + +#: src/fe-gtk/search.c:134 +msgid "_Match case" +msgstr "符合大小寫(_M)" + +#: src/fe-gtk/search.c:140 +msgid "Search _backwards" +msgstr "向後搜尋(_B)" + +#: src/fe-gtk/search.c:153 +msgid "_Find" +msgstr "尋找(_F)" + +#: src/fe-gtk/servlistgui.c:171 src/fe-gtk/servlistgui.c:269 +msgid "New Network" +msgstr "新網路" + +#: src/fe-gtk/servlistgui.c:558 +#, c-format +msgid "Really remove network \"%s\" and all its servers?" +msgstr "一定要刪除網路「%s」以及它所有的伺服器嗎?" + +#: src/fe-gtk/servlistgui.c:740 +#, fuzzy +msgid "#channel" +msgstr "聊天室" + +#: src/fe-gtk/servlistgui.c:850 +#, fuzzy +msgid "XChat: Favorite Channels (Auto-Join List)" +msgstr "XChat:聊天室清單 (%s)" + +#: src/fe-gtk/servlistgui.c:863 +#, c-format +msgid "These channels will be joined whenever you connect to %s." +msgstr "" + +#: src/fe-gtk/servlistgui.c:906 +#, fuzzy +msgid "Key (Password)" +msgstr "密碼:" + +#: src/fe-gtk/servlistgui.c:937 src/fe-gtk/servlistgui.c:1566 +msgid "_Edit" +msgstr "編輯(_E)" + +#: src/fe-gtk/servlistgui.c:973 +#, c-format +msgid "%s has been removed." +msgstr "" + +#: src/fe-gtk/servlistgui.c:993 +#, c-format +msgid "%s has been added." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1017 +msgid "User name and Real name cannot be left blank." +msgstr "使用者名稱與真實名稱不可為空白" + +#: src/fe-gtk/servlistgui.c:1397 +#, c-format +msgid "XChat: Edit %s" +msgstr "XChat: 編輯 %s" + +#: src/fe-gtk/servlistgui.c:1416 +#, c-format +msgid "Servers for %s" +msgstr "%s 的伺服器" + +#: src/fe-gtk/servlistgui.c:1427 +msgid "Connect to selected server only" +msgstr "只連接到選取的伺服器" + +#: src/fe-gtk/servlistgui.c:1428 +msgid "Don't cycle through all the servers when the connection fails." +msgstr "當連線失敗時不要輪詢所有的伺服器" + +#: src/fe-gtk/servlistgui.c:1430 +msgid "Your Details" +msgstr "您的詳細資訊" + +#: src/fe-gtk/servlistgui.c:1436 +msgid "Use global user information" +msgstr "使用廣域使用者資訊" + +#: src/fe-gtk/servlistgui.c:1439 src/fe-gtk/servlistgui.c:1671 +msgid "_Nick name:" +msgstr "暱稱(_N):" + +#: src/fe-gtk/servlistgui.c:1443 src/fe-gtk/servlistgui.c:1678 +msgid "Second choice:" +msgstr "第二選擇:" + +#: src/fe-gtk/servlistgui.c:1447 src/fe-gtk/servlistgui.c:1692 +msgid "_User name:" +msgstr "使用者名(_U):" + +#: src/fe-gtk/servlistgui.c:1451 src/fe-gtk/servlistgui.c:1699 +msgid "Rea_l name:" +msgstr "真實名稱(_L):" + +#: src/fe-gtk/servlistgui.c:1454 +msgid "Connecting" +msgstr "連接" + +#: src/fe-gtk/servlistgui.c:1460 +msgid "Auto connect to this network at startup" +msgstr "啟動時自動連接到此網路" + +#: src/fe-gtk/servlistgui.c:1462 +#, fuzzy +msgid "Bypass proxy server" +msgstr "使用代理伺服器" + +#: src/fe-gtk/servlistgui.c:1464 +msgid "Use SSL for all the servers on this network" +msgstr "在本網路的所有伺服器使用 SSL" + +#: src/fe-gtk/servlistgui.c:1469 +msgid "Accept invalid SSL certificate" +msgstr "接受無效的 SSL 證書" + +#: src/fe-gtk/servlistgui.c:1475 +#, fuzzy +msgid "_Favorite channels:" +msgstr "離開聊天室:" + +#: src/fe-gtk/servlistgui.c:1477 +msgid "Channels to join, separated by commas, but not spaces!" +msgstr "要加入的聊天室,用逗號而不是空格分隔!" + +#: src/fe-gtk/servlistgui.c:1480 +msgid "Connect command:" +msgstr "連接命令:" + +#: src/fe-gtk/servlistgui.c:1482 +msgid "" +"Extra command to execute after connecting. If you need more than one, set " +"this to LOAD -e <filename>, where <filename> is a text-file full of commands " +"to execute." +msgstr "" +"連接後執行的額外的命令。如果您使用多個命令,請設定為 LOAD -e <檔案名>,其中 <" +"檔案名> 是一個包含要執行的命令的文字檔案。" + +#: src/fe-gtk/servlistgui.c:1485 +msgid "Nickserv password:" +msgstr "暱稱伺服器密碼:" + +#: src/fe-gtk/servlistgui.c:1487 +msgid "" +"If your nickname requires a password, enter it here. Not all IRC networks " +"support this." +msgstr "" +"如果您的暱稱需要密碼,就在這裡將它輸入。並非所有的 IRC 網路都支援此一功能。" + +#: src/fe-gtk/servlistgui.c:1491 +msgid "Server password:" +msgstr "伺服器密碼:" + +#: src/fe-gtk/servlistgui.c:1493 +msgid "Password for the server, if in doubt, leave blank." +msgstr "伺服器的密碼。如果不確定,保留為空。" + +#: src/fe-gtk/servlistgui.c:1496 +msgid "Character set:" +msgstr "字元設定:" + +#: src/fe-gtk/servlistgui.c:1649 +msgid "XChat: Network List" +msgstr "XChat: 網路清單" + +#: src/fe-gtk/servlistgui.c:1661 +msgid "User Information" +msgstr "使用者資訊" + +#: src/fe-gtk/servlistgui.c:1685 +msgid "Third choice:" +msgstr "第三選擇:" + +#: src/fe-gtk/servlistgui.c:1745 +msgid "Networks" +msgstr "網路" + +#: src/fe-gtk/servlistgui.c:1786 +msgid "Skip network list on startup" +msgstr "啟動時跳過網路清單" + +#: src/fe-gtk/servlistgui.c:1818 +msgid "_Edit..." +msgstr "編輯(_E)..." + +#: src/fe-gtk/servlistgui.c:1825 +msgid "_Sort" +msgstr "排序(_S)" + +#: src/fe-gtk/servlistgui.c:1826 +msgid "" +"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN " +"keys to move a row." +msgstr "" + +#: src/fe-gtk/servlistgui.c:1851 +msgid "C_onnect" +msgstr "連接(_O)" + +#: src/fe-gtk/setup.c:104 +msgid "Text Box Appearance" +msgstr "文字框外觀" + +#: src/fe-gtk/setup.c:105 +msgid "Font:" +msgstr "字型:" + +#: src/fe-gtk/setup.c:106 +msgid "Background image:" +msgstr "背景圖像:" + +#: src/fe-gtk/setup.c:107 +msgid "Scrollback lines:" +msgstr "回滾列數:" + +#: src/fe-gtk/setup.c:108 +msgid "Colored nick names" +msgstr "彩色暱稱" + +#: src/fe-gtk/setup.c:109 +msgid "Give each person on IRC a different color" +msgstr "給 IRC 上的每名使用者一種不同的顏色" + +#: src/fe-gtk/setup.c:110 +msgid "Indent nick names" +msgstr "縮格暱稱" + +#: src/fe-gtk/setup.c:111 +msgid "Make nick names right-justified" +msgstr "讓暱稱右側對齊" + +#: src/fe-gtk/setup.c:112 +msgid "Transparent background" +msgstr "透明背景" + +#: src/fe-gtk/setup.c:113 +msgid "Show marker line" +msgstr "顯示標記線" + +#: src/fe-gtk/setup.c:114 +msgid "Insert a red line after the last read text." +msgstr "在最後讀取的文字後添加一條紅線。" + +#: src/fe-gtk/setup.c:115 +msgid "Transparency Settings" +msgstr "透明度設定" + +#: src/fe-gtk/setup.c:116 +msgid "Red:" +msgstr "紅色:" + +#: src/fe-gtk/setup.c:117 +msgid "Green:" +msgstr "綠色:" + +#: src/fe-gtk/setup.c:118 +msgid "Blue:" +msgstr "藍色:" + +#: src/fe-gtk/setup.c:120 src/fe-gtk/setup.c:391 +msgid "Time Stamps" +msgstr "時間戳記" + +#: src/fe-gtk/setup.c:121 +msgid "Enable time stamps" +msgstr "打開時間戳記" + +#: src/fe-gtk/setup.c:122 +msgid "Time stamp format:" +msgstr "時間戳記格式:" + +#: src/fe-gtk/setup.c:123 src/fe-gtk/setup.c:394 +msgid "See strftime manpage for details." +msgstr "查看 strftime 手冊頁以獲取詳細資訊。" + +#: src/fe-gtk/setup.c:130 src/fe-gtk/setup.c:170 +msgid "A-Z" +msgstr "A-Z" + +#: src/fe-gtk/setup.c:131 +msgid "Last-spoke order" +msgstr "" + +#: src/fe-gtk/setup.c:137 src/fe-gtk/setup.c:1701 +msgid "Input box" +msgstr "輸入框" + +#: src/fe-gtk/setup.c:138 src/fe-gtk/setup.c:202 +msgid "Use the Text box font and colors" +msgstr "使用文字框字型及顏色" + +#: src/fe-gtk/setup.c:140 +msgid "Spell checking" +msgstr "拼寫檢查" + +#: src/fe-gtk/setup.c:143 +msgid "Nick Completion" +msgstr "暱稱自動補齊" + +#: src/fe-gtk/setup.c:144 +msgid "Automatic nick completion (without TAB key)" +msgstr "自動補齊暱稱(無需 TAB 鍵)" + +#: src/fe-gtk/setup.c:146 +msgid "Nick completion suffix:" +msgstr "暱稱自動補齊後綴:" + +#: src/fe-gtk/setup.c:147 +#, fuzzy +msgid "Nick completion sorted:" +msgstr "暱稱自動補齊後綴:" + +#: src/fe-gtk/setup.c:150 +msgid "Input Box Codes" +msgstr "輸入框編碼" + +#: src/fe-gtk/setup.c:151 +#, c-format +msgid "Interpret %nnn as an ASCII value" +msgstr "把 %nnn 解釋為 ASCII 值" + +#: src/fe-gtk/setup.c:152 +msgid "Interpret %C, %B as Color, Bold etc" +msgstr "轉換%C、%B為顏色、粗體等" + +#: src/fe-gtk/setup.c:169 +msgid "A-Z, Ops first" +msgstr "A-Z, Op 最先" + +#: src/fe-gtk/setup.c:171 +msgid "Z-A, Ops last" +msgstr "Z-A, Op 最後" + +#: src/fe-gtk/setup.c:172 +msgid "Z-A" +msgstr "Z-A" + +#: src/fe-gtk/setup.c:173 +msgid "Unsorted" +msgstr "未排序" + +#: src/fe-gtk/setup.c:179 src/fe-gtk/setup.c:191 +msgid "Left (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:180 src/fe-gtk/setup.c:192 +msgid "Left (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:181 src/fe-gtk/setup.c:193 +msgid "Right (Upper)" +msgstr "" + +#: src/fe-gtk/setup.c:182 src/fe-gtk/setup.c:194 +msgid "Right (Lower)" +msgstr "" + +#: src/fe-gtk/setup.c:183 +msgid "Top" +msgstr "頂部" + +#: src/fe-gtk/setup.c:184 +msgid "Bottom" +msgstr "底部" + +#: src/fe-gtk/setup.c:185 +msgid "Hidden" +msgstr "隱藏" + +#: src/fe-gtk/setup.c:200 +msgid "User List" +msgstr "使用者清單" + +#: src/fe-gtk/setup.c:201 +msgid "Show hostnames in user list" +msgstr "在使用者清單中顯示主機名" + +#: src/fe-gtk/setup.c:204 +msgid "User list sorted by:" +msgstr "使用者清單排列方式:" + +#: src/fe-gtk/setup.c:205 +#, fuzzy +msgid "Show user list at:" +msgstr "顯示/隱藏使用者清單" + +#: src/fe-gtk/setup.c:207 +msgid "Away tracking" +msgstr "記錄離開資訊" + +#: src/fe-gtk/setup.c:208 +msgid "Track the Away status of users and mark them in a different color" +msgstr "追蹤使用者的離開狀態並且以不同顏色標記它們" + +#: src/fe-gtk/setup.c:209 +msgid "On channels smaller than:" +msgstr "在小於此值的聊天室裡:" + +#: src/fe-gtk/setup.c:211 +msgid "Action Upon Double Click" +msgstr "雙擊時的動作" + +#: src/fe-gtk/setup.c:223 +msgid "Windows" +msgstr "視窗" + +#: src/fe-gtk/setup.c:224 src/fe-gtk/setup.c:240 +msgid "Tabs" +msgstr "分頁" + +#: src/fe-gtk/setup.c:232 +msgid "Always" +msgstr "總是" + +#: src/fe-gtk/setup.c:233 +msgid "Only requested tabs" +msgstr "只有請求的分頁" + +#: src/fe-gtk/setup.c:242 +#, fuzzy +msgid "Tree" +msgstr "樹狀圖(_R)" + +#: src/fe-gtk/setup.c:249 +msgid "Switcher type:" +msgstr "" + +#: src/fe-gtk/setup.c:250 +msgid "Open an extra tab for server messages" +msgstr "打開額外的分頁存放伺服器訊息" + +#: src/fe-gtk/setup.c:251 +msgid "Open an extra tab for server notices" +msgstr "打開額外的分頁存放伺服器通知" + +#: src/fe-gtk/setup.c:252 +#, fuzzy +msgid "Open a new tab when you receive a private message" +msgstr "打開額外的分頁存放伺服器訊息" + +#: src/fe-gtk/setup.c:253 +msgid "Sort tabs in alphabetical order" +msgstr "按字母表順序排序分頁" + +#: src/fe-gtk/setup.c:254 +#, fuzzy +msgid "Smaller text" +msgstr "小分頁" + +#: src/fe-gtk/setup.c:256 +msgid "Focus new tabs:" +msgstr "聚焦到新分頁:" + +#: src/fe-gtk/setup.c:258 +#, fuzzy +msgid "Show channel switcher at:" +msgstr "在小於此值的聊天室裡:" + +#: src/fe-gtk/setup.c:259 +msgid "Shorten tab labels to:" +msgstr "縮短分頁標籤至:" + +#: src/fe-gtk/setup.c:259 +msgid "letters." +msgstr "字母。" + +#: src/fe-gtk/setup.c:261 +msgid "Tabs or Windows" +msgstr "分頁或視窗" + +#: src/fe-gtk/setup.c:262 +msgid "Open channels in:" +msgstr "打開聊天室於:" + +#: src/fe-gtk/setup.c:263 +msgid "Open dialogs in:" +msgstr "打開對話框於:" + +#: src/fe-gtk/setup.c:264 +msgid "Open utilities in:" +msgstr "打開工具於:" + +#: src/fe-gtk/setup.c:264 +msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" +msgstr "打開 DCC、忽略、通知等動作,使用分頁還是視窗?" + +#: src/fe-gtk/setup.c:271 +msgid "No" +msgstr "否" + +#: src/fe-gtk/setup.c:272 +msgid "Yes" +msgstr "是" + +#: src/fe-gtk/setup.c:273 +msgid "Browse for save folder every time" +msgstr "每次瀏覽儲存文件夾" + +#: src/fe-gtk/setup.c:279 +msgid "Files and Directories" +msgstr "檔案和目錄" + +#: src/fe-gtk/setup.c:280 +msgid "Auto accept file offers:" +msgstr "自動接受所提供的檔案:" + +#: src/fe-gtk/setup.c:281 +msgid "Download files to:" +msgstr "把檔案下載到:" + +#: src/fe-gtk/setup.c:282 +msgid "Move completed files to:" +msgstr "移動完成下載的檔案到:" + +#: src/fe-gtk/setup.c:283 +msgid "Save nick name in filenames" +msgstr "把暱稱存入檔名" + +#: src/fe-gtk/setup.c:285 +msgid "Network Settings" +msgstr "網路設定" + +#: src/fe-gtk/setup.c:286 +msgid "Get my address from the IRC server" +msgstr "從 IRC 伺服器獲取我的位址" + +#: src/fe-gtk/setup.c:287 +msgid "" +"Asks the IRC server for your real address. Use this if you have a 192.168.*." +"* address!" +msgstr "" +"向 IRC 伺服器查詢您的真實位址。如果您具有 192.168.*.* 這樣的位址時,請使用此" +"命令。" + +#: src/fe-gtk/setup.c:288 +msgid "DCC IP address:" +msgstr "DCC IP 位址:" + +#: src/fe-gtk/setup.c:289 +msgid "Claim you are at this address when offering files." +msgstr "發送檔案時聲稱您是這個位址。" + +#: src/fe-gtk/setup.c:290 +msgid "First DCC send port:" +msgstr "第一個 DCC 檔案發送輸出入埠:" + +#: src/fe-gtk/setup.c:291 +msgid "Last DCC send port:" +msgstr "最後一個 DCC 檔案傳送輸出入埠:" + +#: src/fe-gtk/setup.c:292 +msgid "!Leave ports at zero for full range." +msgstr "!輸出入埠保留為 0 表示允許所有範圍。" + +#: src/fe-gtk/setup.c:294 +msgid "Maximum File Transfer Speeds (bytes per second)" +msgstr "最大檔案傳輸速度(位元組每秒)" + +#: src/fe-gtk/setup.c:295 +msgid "One upload:" +msgstr "一次上傳" + +#: src/fe-gtk/setup.c:296 src/fe-gtk/setup.c:298 +msgid "Maximum speed for one transfer" +msgstr "一個傳送行程的最大速度" + +#: src/fe-gtk/setup.c:297 +msgid "One download:" +msgstr "一次下載:" + +#: src/fe-gtk/setup.c:299 +msgid "All uploads combined:" +msgstr "所有上傳:" + +#: src/fe-gtk/setup.c:300 src/fe-gtk/setup.c:302 +msgid "Maximum speed for all files" +msgstr "所有檔案的最大速度" + +#: src/fe-gtk/setup.c:301 +msgid "All downloads combined:" +msgstr "所有下載" + +#: src/fe-gtk/setup.c:329 src/fe-gtk/setup.c:1707 +msgid "Alerts" +msgstr "警報" + +#: src/fe-gtk/setup.c:333 +#, fuzzy +msgid "Show tray balloons on:" +msgstr "顯示分頁於:" + +#: src/fe-gtk/setup.c:335 +msgid "Blink tray icon on:" +msgstr "" + +#: src/fe-gtk/setup.c:336 +msgid "Blink task bar on:" +msgstr "" + +#: src/fe-gtk/setup.c:337 +msgid "Make a beep sound on:" +msgstr "" + +#: src/fe-gtk/setup.c:339 +msgid "Enable system tray icon" +msgstr "" + +#: src/fe-gtk/setup.c:341 +#, fuzzy +msgid "Highlighted Messages" +msgstr "高亮度顯示訊息時響鈴提示" + +#: src/fe-gtk/setup.c:342 +msgid "" +"Highlighted messages are ones where your nickname is mentioned, but also:" +msgstr "" + +#: src/fe-gtk/setup.c:344 +#, fuzzy +msgid "Extra words to highlight:" +msgstr "需要高亮度顯示的其它詞組:" + +#: src/fe-gtk/setup.c:345 +#, fuzzy +msgid "Nick names not to highlight:" +msgstr "不要高亮度顯示的暱稱:" + +#: src/fe-gtk/setup.c:346 +#, fuzzy +msgid "Nick names to always highlight:" +msgstr "不要高亮度顯示的暱稱:" + +#: src/fe-gtk/setup.c:347 +#, fuzzy +msgid "" +"Separate multiple words with commas.\n" +"Wildcards are accepted." +msgstr "請用逗號分隔多個詞組。" + +#: src/fe-gtk/setup.c:353 +msgid "Default Messages" +msgstr "預設訊息" + +#: src/fe-gtk/setup.c:354 +msgid "Quit:" +msgstr "離開:" + +#: src/fe-gtk/setup.c:355 +msgid "Leave channel:" +msgstr "離開聊天室:" + +#: src/fe-gtk/setup.c:356 +msgid "Away:" +msgstr "離開:" + +#: src/fe-gtk/setup.c:358 +msgid "Away" +msgstr "離開" + +#: src/fe-gtk/setup.c:359 +msgid "Announce away messages" +msgstr "發佈暫離訊息" + +#: src/fe-gtk/setup.c:360 +msgid "Announce your away messages to all channels" +msgstr "發佈暫離訊息到所有聊天室" + +#: src/fe-gtk/setup.c:361 +msgid "Show away once" +msgstr "只顯示暫離一次" + +#: src/fe-gtk/setup.c:361 +msgid "Show identical away messages only once" +msgstr "同樣的暫離訊息只顯示一次" + +#: src/fe-gtk/setup.c:362 +msgid "Automatically unmark away" +msgstr "自動取消暫離狀態" + +#: src/fe-gtk/setup.c:362 +msgid "Unmark yourself as away before sending messages" +msgstr "發送訊息前取消您的暫離狀態" + +#: src/fe-gtk/setup.c:369 +msgid "Advanced Settings" +msgstr "進階設定" + +#: src/fe-gtk/setup.c:370 +msgid "Auto reconnect delay:" +msgstr "自動重連間隔:" + +#: src/fe-gtk/setup.c:371 +msgid "Display MODEs in raw form" +msgstr "使用原始格式顯示模式" + +#: src/fe-gtk/setup.c:372 +msgid "Whois on notify" +msgstr "誰在上線通知清單上" + +#: src/fe-gtk/setup.c:372 +msgid "Sends a /WHOIS when a user comes online in your notify list" +msgstr "當您通知清單中的某位使用者上線時發送 /WHOIS 命令" + +#: src/fe-gtk/setup.c:373 +msgid "Hide join and part messages" +msgstr "隱藏加入/離開訊息" + +#: src/fe-gtk/setup.c:373 +msgid "Hide channel join/part messages by default" +msgstr "預設隱藏聊天室裡的加入/離開訊息" + +#: src/fe-gtk/setup.c:374 +msgid "Auto Open DCC Windows" +msgstr "自動打開 DDC 視窗" + +#: src/fe-gtk/setup.c:375 +msgid "Send window" +msgstr "發送視窗" + +#: src/fe-gtk/setup.c:376 +msgid "Receive window" +msgstr "接收視窗" + +#: src/fe-gtk/setup.c:377 +msgid "Chat window" +msgstr "聊天視窗" + +#: src/fe-gtk/setup.c:385 src/fe-gtk/setup.c:1709 +msgid "Logging" +msgstr "日誌" + +#: src/fe-gtk/setup.c:386 +msgid "Display scrollback from previous session" +msgstr "" + +#: src/fe-gtk/setup.c:387 +#, fuzzy +msgid "Enable logging of conversations to disk" +msgstr "允許記錄對話內容" + +#: src/fe-gtk/setup.c:388 +msgid "Log filename:" +msgstr "記錄檔案名稱:" + +#: src/fe-gtk/setup.c:389 +#, c-format +msgid "%s=Server %c=Channel %n=Network." +msgstr "%s=伺服器 %c=聊天室 %n=網路。" + +#: src/fe-gtk/setup.c:392 +msgid "Insert timestamps in logs" +msgstr "在日誌中加入時間戳記" + +#: src/fe-gtk/setup.c:393 +msgid "Log timestamp format:" +msgstr "日誌時間戳記格式:" + +#: src/fe-gtk/setup.c:401 +msgid "(Disabled)" +msgstr "(停用)" + +#: src/fe-gtk/setup.c:402 +msgid "Wingate" +msgstr "Wingate" + +#: src/fe-gtk/setup.c:403 +msgid "Socks4" +msgstr "Socks4" + +#: src/fe-gtk/setup.c:404 +msgid "Socks5" +msgstr "Socks5" + +#: src/fe-gtk/setup.c:405 +msgid "HTTP" +msgstr "HTTP" + +#: src/fe-gtk/setup.c:407 +msgid "MS Proxy (ISA)" +msgstr "MS Proxy (ISA)" + +#: src/fe-gtk/setup.c:414 +msgid "All Connections" +msgstr "所有的連接" + +#: src/fe-gtk/setup.c:415 +msgid "IRC Server Only" +msgstr "僅列出 IRC 伺服器" + +#: src/fe-gtk/setup.c:416 +msgid "DCC Get Only" +msgstr "僅使用 DCC Get" + +#: src/fe-gtk/setup.c:422 +msgid "Your Address" +msgstr "您的位址" + +#: src/fe-gtk/setup.c:423 +msgid "Bind to:" +msgstr "綁定於:" + +#: src/fe-gtk/setup.c:424 +msgid "Only useful for computers with multiple addresses." +msgstr "只對有多個位址的電腦有用。" + +#: src/fe-gtk/setup.c:426 +msgid "Proxy Server" +msgstr "代理伺服器" + +#: src/fe-gtk/setup.c:427 +msgid "Hostname:" +msgstr "主機名:" + +#: src/fe-gtk/setup.c:428 +msgid "Port:" +msgstr "輸出入埠:" + +#: src/fe-gtk/setup.c:429 +msgid "Type:" +msgstr "類型:" + +#: src/fe-gtk/setup.c:430 +msgid "Use proxy for:" +msgstr "使用代理伺服器於:" + +#: src/fe-gtk/setup.c:432 +msgid "Proxy Authentication" +msgstr "代理伺服器驗證" + +#: src/fe-gtk/setup.c:434 +msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" +msgstr "使用驗證(MS Proxy、HTTP 或僅有 Socks5)" + +#: src/fe-gtk/setup.c:436 +msgid "Use Authentication (HTTP or Socks5 only)" +msgstr "使用驗證(HTTP 或僅有 Socks5)" + +#: src/fe-gtk/setup.c:438 +msgid "Username:" +msgstr "使用者名:" + +#: src/fe-gtk/setup.c:439 +msgid "Password:" +msgstr "密碼:" + +#: src/fe-gtk/setup.c:870 +msgid "Select an Image File" +msgstr "選擇一個圖像檔案" + +#: src/fe-gtk/setup.c:905 +msgid "Select Download Folder" +msgstr "選擇下載文件夾" + +#: src/fe-gtk/setup.c:914 +msgid "Select font" +msgstr "選擇字型" + +#: src/fe-gtk/setup.c:1014 +msgid "Browse..." +msgstr "瀏覽..." + +#: src/fe-gtk/setup.c:1152 +msgid "Mark identified users with:" +msgstr "標記驗證過的使用者為:" + +#: src/fe-gtk/setup.c:1154 +msgid "Mark not-identified users with:" +msgstr "標記未驗證過的使用者為:" + +#: src/fe-gtk/setup.c:1161 +#, fuzzy +msgid "Open Data Folder" +msgstr "開啟文件夾..." + +#: src/fe-gtk/setup.c:1215 +msgid "Select color" +msgstr "選擇顏色" + +#: src/fe-gtk/setup.c:1295 +msgid "Text Colors" +msgstr "文字顏色" + +#: src/fe-gtk/setup.c:1297 +msgid "mIRC colors:" +msgstr "mIRC 顏色:" + +#: src/fe-gtk/setup.c:1305 +msgid "Local colors:" +msgstr "本地的顏色:" + +#: src/fe-gtk/setup.c:1313 src/fe-gtk/setup.c:1318 +msgid "Foreground:" +msgstr "前景:" + +#: src/fe-gtk/setup.c:1314 src/fe-gtk/setup.c:1319 +msgid "Background:" +msgstr "背景:" + +#: src/fe-gtk/setup.c:1316 +msgid "Marking Text" +msgstr "標記文字" + +#: src/fe-gtk/setup.c:1321 +msgid "Interface Colors" +msgstr "介面顏色" + +#: src/fe-gtk/setup.c:1323 +msgid "New data:" +msgstr "新資料:" + +#: src/fe-gtk/setup.c:1324 +msgid "Marker line:" +msgstr "標記線:" + +#: src/fe-gtk/setup.c:1325 +msgid "New message:" +msgstr "新訊息:" + +#: src/fe-gtk/setup.c:1326 +msgid "Away user:" +msgstr "離開的使用者:" + +#: src/fe-gtk/setup.c:1327 +msgid "Highlight:" +msgstr "高亮度顯示:" + +#: src/fe-gtk/setup.c:1423 src/fe-gtk/textgui.c:389 +msgid "Event" +msgstr "事件" + +#: src/fe-gtk/setup.c:1429 +msgid "Sound file" +msgstr "音效檔案" + +#: src/fe-gtk/setup.c:1464 +msgid "Select a sound file" +msgstr "選擇聲音檔案" + +#: src/fe-gtk/setup.c:1536 +msgid "Sound playing method:" +msgstr "播放聲音方法:" + +#: src/fe-gtk/setup.c:1544 +msgid "External sound playing _program:" +msgstr "外部聲音播放程式(_P):" + +#: src/fe-gtk/setup.c:1562 +msgid "_External program" +msgstr "外部程式(_E)" + +#: src/fe-gtk/setup.c:1572 +msgid "_Automatic" +msgstr "自動(_A)" + +#: src/fe-gtk/setup.c:1585 +msgid "Sound files _directory:" +msgstr "音效檔案目錄(_D):" + +#: src/fe-gtk/setup.c:1624 +msgid "Sound file:" +msgstr "音效檔案:" + +#: src/fe-gtk/setup.c:1639 +msgid "_Browse..." +msgstr "瀏覽(_B)..." + +#: src/fe-gtk/setup.c:1650 +msgid "_Play" +msgstr "播放(_P)" + +#: src/fe-gtk/setup.c:1699 +msgid "Interface" +msgstr "介面" + +#: src/fe-gtk/setup.c:1700 +msgid "Text box" +msgstr "文字框" + +#: src/fe-gtk/setup.c:1702 +msgid "User list" +msgstr "使用者清單" + +#: src/fe-gtk/setup.c:1703 +#, fuzzy +msgid "Channel switcher" +msgstr "聊天室清單..." + +#: src/fe-gtk/setup.c:1704 +msgid "Colors" +msgstr "顏色" + +#: src/fe-gtk/setup.c:1706 +msgid "Chatting" +msgstr "聊天" + +#: src/fe-gtk/setup.c:1708 +msgid "General" +msgstr "一般" + +#: src/fe-gtk/setup.c:1710 +msgid "Sound" +msgstr "音效" + +#: src/fe-gtk/setup.c:1714 +msgid "Network setup" +msgstr "網路設定" + +#: src/fe-gtk/setup.c:1715 +msgid "File transfers" +msgstr "檔案傳輸" + +#: src/fe-gtk/setup.c:1823 +msgid "Categories" +msgstr "類別" + +#: src/fe-gtk/setup.c:2007 +msgid "" +"You cannot place the tree on the top or bottom!\n" +"Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." +msgstr "" + +#: src/fe-gtk/setup.c:2017 +msgid "Some settings were changed that require a restart to take full effect." +msgstr "有些設定需要重新啟動 xchat 才會生效。" + +#: src/fe-gtk/setup.c:2025 +msgid "" +"*WARNING*\n" +"Auto accepting DCC to your home directory\n" +"can be dangerous and is exploitable. Eg:\n" +"Someone could send you a .bash_profile" +msgstr "" +"*警告*\n" +"自動接收 DCC 到您的主目錄中是危險之舉,\n" +"且有被盜用的可能性。例如:\n" +"某人可能會給您發送一份 .bash_profile 檔案" + +#: src/fe-gtk/setup.c:2058 +msgid "XChat: Preferences" +msgstr "XChat: 偏好設定" + +#: src/fe-gtk/textgui.c:180 +msgid "There was an error parsing the string" +msgstr "解析字串時出錯" + +#: src/fe-gtk/textgui.c:188 +#, c-format +msgid "This signal is only passed %d args, $%d is invalid" +msgstr "該信號只接受 %d 個引數,$%d 無效" + +#: src/fe-gtk/textgui.c:304 src/fe-gtk/textgui.c:327 +msgid "Print Texts File" +msgstr "列印文字檔案" + +#: src/fe-gtk/textgui.c:372 +msgid "Edit Events" +msgstr "編輯事件" + +#: src/fe-gtk/textgui.c:423 +msgid "$ Number" +msgstr "$ 數字" + +#: src/fe-gtk/textgui.c:440 +msgid "Load From..." +msgstr "從...載入" + +#: src/fe-gtk/textgui.c:441 +msgid "Test All" +msgstr "測試全部" + +#: src/fe-gtk/urlgrab.c:96 +msgid "URL" +msgstr "URL" + +#: src/fe-gtk/urlgrab.c:186 +msgid "XChat: URL Grabber" +msgstr "XChat: URL 擷取程式" + +#: src/fe-gtk/urlgrab.c:199 +msgid "Clear list" +msgstr "清空清單" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy selected URL" +msgstr "複製選取的 URL" + +#: src/fe-gtk/urlgrab.c:201 +msgid "Copy" +msgstr "複製" + +#: src/fe-gtk/urlgrab.c:203 +msgid "Save list to a file" +msgstr "儲存清單到檔案" + +#: src/fe-gtk/userlistgui.c:119 +#, c-format +msgid "%d ops, %d total" +msgstr "%d 個管理員,共 %d 人" + +#~ msgid "%C18*$t$1%O $2" +#~ msgstr "%C18*$t$1%O $2" + +#~ msgid "%C21*%O$t%C21%B$1%O%C21 $2" +#~ msgstr "%C21*%O$t%C21%B$1%O%C21 $2" + +#~ msgid "%C18%H<%H$4$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$4$1%H>%H%O$t$2" + +#~ msgid "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" +#~ msgstr "$4%C21%B%H<%H$1%H>%H%O%C21$t$2" + +#~ msgid "%C28-%C29$1/$2%C28-%O$t$3" +#~ msgstr "%C28-%C29$1/$2%C28-%O$t$3" + +#~ msgid "$1$t$2" +#~ msgstr "$1$t$2" + +#~ msgid "%C19>%O$1%C19<%O$t$2" +#~ msgstr "%C19>%O$1%C19<%O$t$2" + +#~ msgid "%C16*%O$t$1%O" +#~ msgstr "%C16*%O$t$1%O" + +#~ msgid "%C28-%C29$1%C28-%O$t$2" +#~ msgstr "%C28-%C29$1%C28-%O$t$2" + +#~ msgid "%C28*%C29$3$1%C28*$t%O$2" +#~ msgstr "%C28*%C29$3$1%C28*$t%O$2" + +#~ msgid "%C18%H<%H$3$1%H>%H%O$t$2" +#~ msgstr "%C18%H<%H$3$1%H>%H%O$t$2" + +#~ msgid "%C22*%O$t$1" +#~ msgstr "%C22*%O$t$1" + +#~ msgid "%C31%H<%H$4$1%H>%H%O%C30$t$2" +#~ msgstr "%C31%H<%H$4$1%H>%H%O%C30$t$2" + +#~ msgid "PID" +#~ msgstr "行程代號" + +#~ msgid "US Minor Outlying Islands" +#~ msgstr "美國周邊島嶼" + +#~ msgid "Direct client-to-client" +#~ msgstr "直接客戶端到客戶端" + +#~ msgid "Send File" +#~ msgstr "發送檔案" + +#~ msgid "Offer Chat" +#~ msgstr "請求聊天" + +#~ msgid "Abort Chat" +#~ msgstr "中止聊天" + +#~ msgid "Userinfo" +#~ msgstr "個人資訊" + +#~ msgid "Clientinfo" +#~ msgstr "客戶端資訊" + +#~ msgid "Time" +#~ msgstr "時間" + +#~ msgid "Finger" +#~ msgstr "Finger" + +#~ msgid "Oper" +#~ msgstr "操作" + +#~ msgid "Kill this user" +#~ msgstr "砍掉此使用者" + +#~ msgid "Mode" +#~ msgstr "模式" + +#~ msgid "Give Half-Ops" +#~ msgstr "給准管理員權限" + +#~ msgid "Take Half-Ops" +#~ msgstr "取消准管理員權限" + +#~ msgid "Ignore" +#~ msgstr "忽略" + +#~ msgid "Ignore User" +#~ msgstr "忽略使用者" + +#~ msgid "UnIgnore User" +#~ msgstr "取消忽略使用者" + +#~ msgid "Info" +#~ msgstr "資訊" + +#~ msgid "Who" +#~ msgstr "Who" + +#~ msgid "DNS Lookup" +#~ msgstr "DNS 查詢" + +#~ msgid "Trace" +#~ msgstr "Trace" + +#~ msgid "UserHost" +#~ msgstr "使用者主機" + +#~ msgid "External" +#~ msgstr "外部程式" + +#~ msgid "Traceroute" +#~ msgstr "Traceroute" + +#~ msgid "Telnet" +#~ msgstr "Telnet" + +#~ msgid "Unban" +#~ msgstr "解禁" + +#~ msgid "I can't save an empty list!" +#~ msgstr "無法儲存空清單!" + +#~ msgid "List display options:" +#~ msgstr "列舉顯示選項:" + +#~ msgid "Minimum Users:" +#~ msgstr "最少使用者數:" + +#~ msgid "Maximum Users:" +#~ msgstr "最多使用者數:" + +#~ msgid "Regex Match:" +#~ msgstr "正規表示式符合:" + +#~ msgid "Apply Match to:" +#~ msgstr "套用符合到:" + +#~ msgid "Apply" +#~ msgstr "套用" + +#~ msgid "Refresh the list" +#~ msgstr "刷新清單" + +#~ msgid "Save the list" +#~ msgstr "儲存清單" + +#~ msgid "None" +#~ msgstr "無" + +#~ msgid "To" +#~ msgstr "發到" + +#~ msgid "Started" +#~ msgstr "已開始" + +#~ msgid "Speed limit" +#~ msgstr "速度限制" + +#~ msgid "XChat: File Receive List" +#~ msgstr "XChat: 檔案接收清單" + +#~ msgid "Open" +#~ msgstr "開啟" + +#~ msgid "Ack" +#~ msgstr "Ack" + +#~ msgid "To/From" +#~ msgstr "到/從" + +#~ msgid "No other tabs open, quit xchat?" +#~ msgstr "沒有其它打開的分頁,要離開 xchat 嗎?" + +#~ msgid "Show join/part messages" +#~ msgstr "顯示加入/離開訊息" + +#~ msgid "Color paste" +#~ msgstr "彩色貼上" + +#~ msgid "Go to" +#~ msgstr "前往" + +#~ msgid "_Close Tab" +#~ msgstr "關閉分頁(_C)" + +#~ msgid "_Layout" +#~ msgstr "佈局(_L)" + +#~ msgid "Notify List..." +#~ msgstr "通知清單..." + +#~ msgid "_Close Window" +#~ msgstr "關閉視窗(_C)" + +#~ msgid "User" +#~ msgstr "使用者" + +#~ msgid "Server" +#~ msgstr "伺服器" + +#~ msgid "XChat: Notify List" +#~ msgstr "XChat: 通知清單" + +#~ msgid "C_hannels to join:" +#~ msgstr "輸入要加入的聊天室(_H):" + +#~ msgid "Resizable user list" +#~ msgstr "使用者清單可調整大小" + +#~ msgid "Left" +#~ msgstr "左側" + +#~ msgid "Right" +#~ msgstr "右側" + +#~ msgid "Tabs Location" +#~ msgstr "分頁位置" + +#~ msgid "(Can be a text file relative to ~/.xchat2/)." +#~ msgstr "(可以是一個相對路徑為 ~/.xchat2/ 的文字檔案)。" + +#~ msgid "(Can be a text file relative to config dir)." +#~ msgstr "(可以是一個相對路徑為配置目錄的文字檔案)。" + +#~ msgid "Flash taskbar on highlighted messages" +#~ msgstr "高亮度顯示訊息時閃動工作列" + +#~ msgid "Beep on channel messages" +#~ msgstr "聊天室中出現新訊息時響鈴" + +#~ msgid "Open an irc:// url" +#~ msgstr "開啟一個 irc:// URL" + +#~ msgid "irc://server:port/channel" +#~ msgstr "irc://server:port/channel" + +#~ msgid "Execute a xchat command" +#~ msgstr "執行 xchat 命令:" + +#~ msgid "\"Command to execute\"" +#~ msgstr "\"要執行的命令\"" + +#~ msgid "Prints some text to the current tab/window" +#~ msgstr "印出一些文字到目前的分頁/視窗" + +#~ msgid "\"Text to print\"" +#~ msgstr "\"要印出的文字\"" + +#~ msgid "Change the context to the channel" +#~ msgstr "變更上下文至聊天室" + +#~ msgid "Change the context to the server" +#~ msgstr "變更上下文至伺服器" + +#~ msgid "server" +#~ msgstr "伺服器" + +#~ msgid "Get some informations from xchat" +#~ msgstr "從 xchat 擷取一些資訊" + +#~ msgid "id" +#~ msgstr "id" + +#~ msgid "Get settings from xchat" +#~ msgstr "從 xchat 擷取設定" + +#~ msgid "name" +#~ msgstr "名稱" + +#~ msgid "" +#~ "xchat-remote: %s\n" +#~ "Try `xchat-remote --help' for more information\n" +#~ msgstr "" +#~ "xchat-remote: %s\n" +#~ "試試 `xchat-remote --help' 以獲得更多資訊\n" + +#~ msgid "Failed to complete SetContext" +#~ msgstr "完成設定上下文失敗" + +#~ msgid "Failed to complete print" +#~ msgstr "完成列印失敗" + +#~ msgid "Failed to complete GetInfo" +#~ msgstr "完成擷取資訊失敗" + +#~ msgid "Failed to complete GetPrefs" +#~ msgstr "完成擷取偏好失敗" + +#~ msgid "%s doesn't exist\n" +#~ msgstr "%s 不存在\n" + +#~ msgid "%s loaded successfully!\n" +#~ msgstr "已成功載入 %s!\n" + +#~ msgid "France, Metropolitan" +#~ msgstr "法屬美特羅波利坦" + +#~ msgid "Neutral Zone" +#~ msgstr "中立地區" + +#~ msgid "Settings saved." +#~ msgstr "設定已儲存。" + +#~ msgid "Save rawlog" +#~ msgstr "儲存原始日誌" + +#~ msgid "Save rawlog..." +#~ msgstr "儲存原始日誌..." + +#~ msgid "Completes nick names without using the TAB key" +#~ msgstr "不用 TAB 鍵而自動補齊暱稱" + +#~ msgid "Input Box Appearance" +#~ msgstr "輸入框外觀" + +#~ msgid "Convert spaces to underscore before sending" +#~ msgstr "發送前把空格轉換成底線" + +#~ msgid "(See strftime manpage for details)." +#~ msgstr "(查看 strftime 手冊以獲取詳細資訊)。" diff --git a/xchat-2.8.8/src/Makefile b/xchat-2.8.8/src/Makefile new file mode 100644 index 0000000..5b3efc7 --- /dev/null +++ b/xchat-2.8.8/src/Makefile @@ -0,0 +1,644 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# src/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +pkgdatadir = $(datadir)/xchat +pkgincludedir = $(includedir)/xchat +pkglibdir = $(libdir)/xchat +pkglibexecdir = $(libexecdir)/xchat +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +subdir = src +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = pixmaps common fe-gtk fe-text +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run aclocal-1.11 +ALLOCA = +AMTAR = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run tar +AR = ar +AUTOCONF = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run autoconf +AUTOHEADER = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run autoheader +AUTOMAKE = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run automake-1.11 +AWK = gawk +BUILD_INCLUDED_LIBINTL = no +CATOBJEXT = .gmo +CC = gcc +CCAS = gcc +CCASDEPMODE = depmode=gcc3 +CCASFLAGS = -g -O2 +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 -Wall -pipe -Wno-pointer-sign -funsigned-char +CFLAG_VISIBILITY = -fvisibility=hidden +COMMON_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -pthread -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include +COMMON_LIBS = -lglib-2.0 -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DATADIR = ${prefix}/share +DATADIRNAME = share +DBUS_BINDING_TOOL = /usr/bin/dbus-binding-tool +DBUS_CFLAGS = -pthread -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include +DBUS_LIBS = -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0 +DBUS_SERVICES_DIR = ${prefix}/share/dbus-1/services +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/local/bin/grep -E +EXEEXT = +FGREP = /usr/local/bin/grep -F +GCONFTOOL = /usr/bin/gconftool-2 +GENCAT = gencat +GETTEXT_MACRO_VERSION = 0.17 +GETTEXT_PACKAGE = xchat +GLIBC2 = yes +GLIBC21 = yes +GLIB_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include +GLIB_GENMARSHAL = /usr/bin/glib-genmarshal +GLIB_LIBS = -lglib-2.0 +GLIB_MKENUMS = glib-mkenums +GMSGFMT = /usr/bin/msgfmt +GMSGFMT_015 = /usr/bin/msgfmt +GOBJECT_QUERY = gobject-query +GREP = /usr/local/bin/grep +GTKSPELL_CFLAGS = +GTKSPELL_LIBS = +GTK_CFLAGS = -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 +GTK_LIBS = -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype +GUI_CFLAGS = -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 +GUI_LIBS = -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype -Wl,--version-script,$(srcdir)/../version-script -lglib-2.0 -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0 +HAVE_ASPRINTF = 1 +HAVE_POSIX_PRINTF = 1 +HAVE_SNPRINTF = 1 +HAVE_VISIBILITY = 1 +HAVE_WPRINTF = 0 +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +INSTOBJEXT = .mo +INTLBISON = bison +INTLLIBS = +INTLOBJS = +INTL_LIBTOOL_SUFFIX_PREFIX = +INTL_MACOSX_LIBS = +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = -lgmodule-2.0 +LIBICONV = -liconv +LIBINTL = +LIBMULTITHREAD = -lpthread +LIBOBJS = +LIBPTH = +LIBPTH_PREFIX = +LIBS = -lX11 -lssl -lcrypto -ldl -Wl,--export-dynamic -pthread -lglib-2.0 +LIBSEXY_CFLAGS = +LIBSEXY_LIBS = +LIBTHREAD = +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBC = -lc +LTLIBICONV = -liconv +LTLIBINTL = +LTLIBMULTITHREAD = -lpthread +LTLIBOBJS = +LTLIBPTH = +LTLIBTHREAD = +MAINT = # +MAKEINFO = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run makeinfo +MKDIR_P = /bin/mkdir -p +MSGFMT = /usr/bin/msgfmt +MSGFMT_015 = /usr/bin/msgfmt +MSGMERGE = /usr/bin/msgmerge +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = xchat +PACKAGE_BUGREPORT = http://www.xchat.org/ +PACKAGE_NAME = XChat +PACKAGE_STRING = XChat 2.8.8 +PACKAGE_TARNAME = xchat +PACKAGE_URL = +PACKAGE_VERSION = 2.8.8 +PATH_SEPARATOR = : +PERL_CFLAGS = -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/lib/x86_64-linux-gnu/perl/5.26/CORE +PERL_LDFLAGS = -Wl,-E -fstack-protector-strong -L/usr/local/lib -L/usr/lib/x86_64-linux-gnu/perl/5.26/CORE -lperl -ldl -lm -lpthread -lcrypt +PKG_CONFIG = /usr/bin/pkg-config +PLUGIN_INCLUDES = -I$(top_srcdir)/plugins +POSUB = po +PRI_MACROS_BROKEN = 0 +PY_CFLAGS = -I/usr/include/python2.7 +PY_LIBS = -L/usr/lib/python2.7/config -lpython2.7 -lpthread -lutil +RANLIB = ranlib +SED = /bin/sed +SET_MAKE = +SHELL = /bin/bash +STRIP = strip +TCL_CFLAGS = -I/usr/include -I/usr/include/tcl8.6 +TCL_LIBS = -L/usr/lib/x86_64-linux-gnu -ltcl8.6 -ldl -lz -lpthread -lm +USE_INCLUDED_LIBINTL = no +USE_NLS = yes +VERSION = 2.8.8 +WINDRES = +WOE32 = no +WOE32DLL = no +XGETTEXT = /usr/bin/xgettext +XGETTEXT_015 = /usr/bin/xgettext +XGETTEXT_EXTRA_OPTIONS = +abs_builddir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/src +abs_srcdir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/src +abs_top_builddir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8 +abs_top_srcdir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8 +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = /usr/local +gdkpixbufcsourcepath = /usr/bin/gdk-pixbuf-csource +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +lt_ECHO = echo +mandir = ${datarootdir}/man +mkdir_p = /bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +perlpath = /usr/bin/perl +pkgconfigpath = /usr/bin/pkg-config +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +pythonpath = /usr/bin/python2 +sbindir = ${exec_prefix}/sbin +sedpath = /bin/sed +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +unamepath = /bin/uname +xchatlibdir = ${exec_prefix}/lib/xchat +EXTRA_DIST = fe-text/fe-text.c \ + fe-text/README fe-text/fe-text.h version-script + +#text_fe = fe-text +gtk_fe = fe-gtk +SUBDIRS = pixmaps common $(gtk_fe) $(text_fe) +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/xchat-2.8.8/src/Makefile.am b/xchat-2.8.8/src/Makefile.am new file mode 100644 index 0000000..7885669 --- /dev/null +++ b/xchat-2.8.8/src/Makefile.am @@ -0,0 +1,14 @@ +## Process this file with automake to produce Makefile.in + +EXTRA_DIST = fe-text/fe-text.c \ + fe-text/README fe-text/fe-text.h version-script + +if DO_TEXT +text_fe = fe-text +endif + +if DO_GTK +gtk_fe = fe-gtk +endif + +SUBDIRS = pixmaps common $(gtk_fe) $(text_fe) diff --git a/xchat-2.8.8/src/Makefile.in b/xchat-2.8.8/src/Makefile.in new file mode 100644 index 0000000..30875f7 --- /dev/null +++ b/xchat-2.8.8/src/Makefile.in @@ -0,0 +1,644 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = src +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = pixmaps common fe-gtk fe-text +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +COMMON_CFLAGS = @COMMON_CFLAGS@ +COMMON_LIBS = @COMMON_LIBS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DATADIRNAME = @DATADIRNAME@ +DBUS_BINDING_TOOL = @DBUS_BINDING_TOOL@ +DBUS_CFLAGS = @DBUS_CFLAGS@ +DBUS_LIBS = @DBUS_LIBS@ +DBUS_SERVICES_DIR = @DBUS_SERVICES_DIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GCONFTOOL = @GCONFTOOL@ +GENCAT = @GENCAT@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GLIB_CFLAGS = @GLIB_CFLAGS@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GLIB_LIBS = @GLIB_LIBS@ +GLIB_MKENUMS = @GLIB_MKENUMS@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GOBJECT_QUERY = @GOBJECT_QUERY@ +GREP = @GREP@ +GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ +GTKSPELL_LIBS = @GTKSPELL_LIBS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_LIBS = @GTK_LIBS@ +GUI_CFLAGS = @GUI_CFLAGS@ +GUI_LIBS = @GUI_LIBS@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBSEXY_CFLAGS = @LIBSEXY_CFLAGS@ +LIBSEXY_LIBS = @LIBSEXY_LIBS@ +LIBTHREAD = @LIBTHREAD@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBC = @LTLIBC@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTHREAD = @LTLIBTHREAD@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL_CFLAGS = @PERL_CFLAGS@ +PERL_LDFLAGS = @PERL_LDFLAGS@ +PKG_CONFIG = @PKG_CONFIG@ +PLUGIN_INCLUDES = @PLUGIN_INCLUDES@ +POSUB = @POSUB@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +PY_CFLAGS = @PY_CFLAGS@ +PY_LIBS = @PY_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TCL_CFLAGS = @TCL_CFLAGS@ +TCL_LIBS = @TCL_LIBS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WOE32 = @WOE32@ +WOE32DLL = @WOE32DLL@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gdkpixbufcsourcepath = @gdkpixbufcsourcepath@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +perlpath = @perlpath@ +pkgconfigpath = @pkgconfigpath@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pythonpath = @pythonpath@ +sbindir = @sbindir@ +sedpath = @sedpath@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +unamepath = @unamepath@ +xchatlibdir = @xchatlibdir@ +EXTRA_DIST = fe-text/fe-text.c \ + fe-text/README fe-text/fe-text.h version-script + +@DO_TEXT_TRUE@text_fe = fe-text +@DO_GTK_TRUE@gtk_fe = fe-gtk +SUBDIRS = pixmaps common $(gtk_fe) $(text_fe) +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/xchat-2.8.8/src/common/.deps/cfgfiles.Po b/xchat-2.8.8/src/common/.deps/cfgfiles.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/common/.deps/cfgfiles.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/common/.deps/cfgfiles.Tpo b/xchat-2.8.8/src/common/.deps/cfgfiles.Tpo new file mode 100644 index 0000000..d6d3808 --- /dev/null +++ b/xchat-2.8.8/src/common/.deps/cfgfiles.Tpo @@ -0,0 +1,497 @@ +cfgfiles.o: cfgfiles.c /usr/include/stdc-predef.h /usr/include/fcntl.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/lib/gcc/x86_64-linux-gnu/8/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdio.h /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/libio.h \ + /usr/include/x86_64-linux-gnu/bits/_G_config.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/lib/gcc/x86_64-linux-gnu/8/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h xchat.h ../../config.h \ + /usr/include/glib-2.0/glib/gslist.h /usr/include/glib-2.0/glib/gmem.h \ + /usr/include/glib-2.0/glib/gutils.h /usr/include/glib-2.0/glib/gtypes.h \ + /usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h \ + /usr/include/glib-2.0/glib/gmacros.h \ + /usr/lib/gcc/x86_64-linux-gnu/8/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/8/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-linux-gnu/8/include/float.h \ + /usr/include/glib-2.0/glib/gversionmacros.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + /usr/include/glib-2.0/glib/gnode.h /usr/include/glib-2.0/glib/glist.h \ + /usr/include/glib-2.0/glib/giochannel.h \ + /usr/include/glib-2.0/glib/gconvert.h \ + /usr/include/glib-2.0/glib/gerror.h /usr/include/glib-2.0/glib/gquark.h \ + /usr/include/glib-2.0/glib/gmain.h /usr/include/glib-2.0/glib/gpoll.h \ + /usr/include/glib-2.0/glib/gthread.h \ + /usr/include/glib-2.0/glib/gatomic.h \ + /usr/include/glib-2.0/glib/gstring.h \ + /usr/include/glib-2.0/glib/gunicode.h \ + /usr/include/glib-2.0/glib/gbytes.h /usr/include/glib-2.0/glib/garray.h \ + /usr/include/glib-2.0/glib/gstrfuncs.h history.h \ + /usr/include/openssl/ssl.h /usr/include/openssl/e_os2.h \ + /usr/include/x86_64-linux-gnu/openssl/opensslconf.h \ + /usr/include/openssl/opensslv.h /usr/include/inttypes.h \ + /usr/lib/gcc/x86_64-linux-gnu/8/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \ + /usr/include/openssl/comp.h /usr/include/openssl/crypto.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/stack.h \ + /usr/include/openssl/ossl_typ.h /usr/include/openssl/cryptoerr.h \ + /usr/include/openssl/symhacks.h /usr/include/pthread.h \ + /usr/include/sched.h /usr/include/x86_64-linux-gnu/bits/sched.h \ + /usr/include/x86_64-linux-gnu/bits/cpu-set.h \ + /usr/include/x86_64-linux-gnu/bits/setjmp.h \ + /usr/include/openssl/comperr.h /usr/include/openssl/bio.h \ + /usr/include/openssl/bioerr.h /usr/include/openssl/x509.h \ + /usr/include/openssl/buffer.h /usr/include/openssl/buffererr.h \ + /usr/include/openssl/evp.h /usr/include/openssl/evperr.h \ + /usr/include/openssl/objects.h /usr/include/openssl/obj_mac.h \ + /usr/include/openssl/asn1.h /usr/include/openssl/asn1err.h \ + /usr/include/openssl/bn.h /usr/include/openssl/bnerr.h \ + /usr/include/openssl/objectserr.h /usr/include/openssl/ec.h \ + /usr/include/openssl/ecerr.h /usr/include/openssl/rsa.h \ + /usr/include/openssl/rsaerr.h /usr/include/openssl/dsa.h \ + /usr/include/openssl/dh.h /usr/include/openssl/dherr.h \ + /usr/include/openssl/dsaerr.h /usr/include/openssl/sha.h \ + /usr/include/openssl/x509err.h /usr/include/openssl/x509_vfy.h \ + /usr/include/openssl/lhash.h /usr/include/openssl/pkcs7.h \ + /usr/include/openssl/pkcs7err.h /usr/include/openssl/pem.h \ + /usr/include/openssl/pemerr.h /usr/include/openssl/hmac.h \ + /usr/include/openssl/async.h /usr/include/openssl/asyncerr.h \ + /usr/include/openssl/ct.h /usr/include/openssl/cterr.h \ + /usr/include/openssl/sslerr.h /usr/include/openssl/ssl2.h \ + /usr/include/openssl/ssl3.h /usr/include/openssl/tls1.h \ + /usr/include/openssl/dtls1.h /usr/include/openssl/srtp.h \ + /usr/include/libintl.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h cfgfiles.h util.h fe.h \ + userlist.h dcc.h text.h textenums.h xchatc.h + +/usr/include/stdc-predef.h: + +/usr/include/fcntl.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/lib/gcc/x86_64-linux-gnu/8/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/libio.h: + +/usr/include/x86_64-linux-gnu/bits/_G_config.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/lib/gcc/x86_64-linux-gnu/8/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +xchat.h: + +../../config.h: + +/usr/include/glib-2.0/glib/gslist.h: + +/usr/include/glib-2.0/glib/gmem.h: + +/usr/include/glib-2.0/glib/gutils.h: + +/usr/include/glib-2.0/glib/gtypes.h: + +/usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h: + +/usr/include/glib-2.0/glib/gmacros.h: + +/usr/lib/gcc/x86_64-linux-gnu/8/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/8/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-linux-gnu/8/include/float.h: + +/usr/include/glib-2.0/glib/gversionmacros.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +/usr/include/glib-2.0/glib/gnode.h: + +/usr/include/glib-2.0/glib/glist.h: + +/usr/include/glib-2.0/glib/giochannel.h: + +/usr/include/glib-2.0/glib/gconvert.h: + +/usr/include/glib-2.0/glib/gerror.h: + +/usr/include/glib-2.0/glib/gquark.h: + +/usr/include/glib-2.0/glib/gmain.h: + +/usr/include/glib-2.0/glib/gpoll.h: + +/usr/include/glib-2.0/glib/gthread.h: + +/usr/include/glib-2.0/glib/gatomic.h: + +/usr/include/glib-2.0/glib/gstring.h: + +/usr/include/glib-2.0/glib/gunicode.h: + +/usr/include/glib-2.0/glib/gbytes.h: + +/usr/include/glib-2.0/glib/garray.h: + +/usr/include/glib-2.0/glib/gstrfuncs.h: + +history.h: + +/usr/include/openssl/ssl.h: + +/usr/include/openssl/e_os2.h: + +/usr/include/x86_64-linux-gnu/openssl/opensslconf.h: + +/usr/include/openssl/opensslv.h: + +/usr/include/inttypes.h: + +/usr/lib/gcc/x86_64-linux-gnu/8/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h: + +/usr/include/openssl/comp.h: + +/usr/include/openssl/crypto.h: + +/usr/include/openssl/safestack.h: + +/usr/include/openssl/stack.h: + +/usr/include/openssl/ossl_typ.h: + +/usr/include/openssl/cryptoerr.h: + +/usr/include/openssl/symhacks.h: + +/usr/include/pthread.h: + +/usr/include/sched.h: + +/usr/include/x86_64-linux-gnu/bits/sched.h: + +/usr/include/x86_64-linux-gnu/bits/cpu-set.h: + +/usr/include/x86_64-linux-gnu/bits/setjmp.h: + +/usr/include/openssl/comperr.h: + +/usr/include/openssl/bio.h: + +/usr/include/openssl/bioerr.h: + +/usr/include/openssl/x509.h: + +/usr/include/openssl/buffer.h: + +/usr/include/openssl/buffererr.h: + +/usr/include/openssl/evp.h: + +/usr/include/openssl/evperr.h: + +/usr/include/openssl/objects.h: + +/usr/include/openssl/obj_mac.h: + +/usr/include/openssl/asn1.h: + +/usr/include/openssl/asn1err.h: + +/usr/include/openssl/bn.h: + +/usr/include/openssl/bnerr.h: + +/usr/include/openssl/objectserr.h: + +/usr/include/openssl/ec.h: + +/usr/include/openssl/ecerr.h: + +/usr/include/openssl/rsa.h: + +/usr/include/openssl/rsaerr.h: + +/usr/include/openssl/dsa.h: + +/usr/include/openssl/dh.h: + +/usr/include/openssl/dherr.h: + +/usr/include/openssl/dsaerr.h: + +/usr/include/openssl/sha.h: + +/usr/include/openssl/x509err.h: + +/usr/include/openssl/x509_vfy.h: + +/usr/include/openssl/lhash.h: + +/usr/include/openssl/pkcs7.h: + +/usr/include/openssl/pkcs7err.h: + +/usr/include/openssl/pem.h: + +/usr/include/openssl/pemerr.h: + +/usr/include/openssl/hmac.h: + +/usr/include/openssl/async.h: + +/usr/include/openssl/asyncerr.h: + +/usr/include/openssl/ct.h: + +/usr/include/openssl/cterr.h: + +/usr/include/openssl/sslerr.h: + +/usr/include/openssl/ssl2.h: + +/usr/include/openssl/ssl3.h: + +/usr/include/openssl/tls1.h: + +/usr/include/openssl/dtls1.h: + +/usr/include/openssl/srtp.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +cfgfiles.h: + +util.h: + +fe.h: + +userlist.h: + +dcc.h: + +text.h: + +textenums.h: + +xchatc.h: diff --git a/xchat-2.8.8/src/common/.deps/chanopt.Po b/xchat-2.8.8/src/common/.deps/chanopt.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/common/.deps/chanopt.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/common/.deps/ctcp.Po b/xchat-2.8.8/src/common/.deps/ctcp.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/common/.deps/ctcp.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/common/.deps/dcc.Po b/xchat-2.8.8/src/common/.deps/dcc.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/common/.deps/dcc.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/common/.deps/history.Po b/xchat-2.8.8/src/common/.deps/history.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/common/.deps/history.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/common/.deps/ignore.Po b/xchat-2.8.8/src/common/.deps/ignore.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/common/.deps/ignore.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/common/.deps/inbound.Po b/xchat-2.8.8/src/common/.deps/inbound.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/common/.deps/inbound.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/common/.deps/modes.Po b/xchat-2.8.8/src/common/.deps/modes.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/common/.deps/modes.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/common/.deps/msproxy.Po b/xchat-2.8.8/src/common/.deps/msproxy.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/common/.deps/msproxy.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/common/.deps/network.Po b/xchat-2.8.8/src/common/.deps/network.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/common/.deps/network.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/common/.deps/notify.Po b/xchat-2.8.8/src/common/.deps/notify.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/common/.deps/notify.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/common/.deps/outbound.Po b/xchat-2.8.8/src/common/.deps/outbound.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/common/.deps/outbound.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/common/.deps/plugin-timer.Po b/xchat-2.8.8/src/common/.deps/plugin-timer.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/common/.deps/plugin-timer.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/common/.deps/plugin.Po b/xchat-2.8.8/src/common/.deps/plugin.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/common/.deps/plugin.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/common/.deps/proto-irc.Po b/xchat-2.8.8/src/common/.deps/proto-irc.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/common/.deps/proto-irc.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/common/.deps/server.Po b/xchat-2.8.8/src/common/.deps/server.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/common/.deps/server.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/common/.deps/servlist.Po b/xchat-2.8.8/src/common/.deps/servlist.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/common/.deps/servlist.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/common/.deps/ssl.Po b/xchat-2.8.8/src/common/.deps/ssl.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/common/.deps/ssl.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/common/.deps/text.Po b/xchat-2.8.8/src/common/.deps/text.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/common/.deps/text.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/common/.deps/tree.Po b/xchat-2.8.8/src/common/.deps/tree.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/common/.deps/tree.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/common/.deps/url.Po b/xchat-2.8.8/src/common/.deps/url.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/common/.deps/url.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/common/.deps/userlist.Po b/xchat-2.8.8/src/common/.deps/userlist.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/common/.deps/userlist.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/common/.deps/util.Po b/xchat-2.8.8/src/common/.deps/util.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/common/.deps/util.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/common/.deps/xchat.Po b/xchat-2.8.8/src/common/.deps/xchat.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/common/.deps/xchat.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/common/Makefile b/xchat-2.8.8/src/common/Makefile new file mode 100644 index 0000000..bb7f4e8 --- /dev/null +++ b/xchat-2.8.8/src/common/Makefile @@ -0,0 +1,792 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# src/common/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + +pkgdatadir = $(datadir)/xchat +pkgincludedir = $(includedir)/xchat +pkglibdir = $(libdir)/xchat +pkglibexecdir = $(libexecdir)/xchat +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +subdir = src/common +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +libxchatcommon_a_AR = $(AR) $(ARFLAGS) +libxchatcommon_a_DEPENDENCIES = $(top_builddir)/src/common/dbus/dbus-*.$(OBJEXT) +am__libxchatcommon_a_SOURCES_DIST = cfgfiles.c chanopt.c ctcp.c dcc.c \ + history.c ignore.c inbound.c modes.c msproxy.c network.c \ + notify.c outbound.c plugin.c plugin-timer.c proto-irc.c \ + server.c servlist.c ssl.c text.c tree.c url.c userlist.c \ + util.c xchat.c +am__objects_1 = ssl.$(OBJEXT) +am_libxchatcommon_a_OBJECTS = cfgfiles.$(OBJEXT) chanopt.$(OBJEXT) \ + ctcp.$(OBJEXT) dcc.$(OBJEXT) history.$(OBJEXT) \ + ignore.$(OBJEXT) inbound.$(OBJEXT) modes.$(OBJEXT) \ + msproxy.$(OBJEXT) network.$(OBJEXT) notify.$(OBJEXT) \ + outbound.$(OBJEXT) plugin.$(OBJEXT) plugin-timer.$(OBJEXT) \ + proto-irc.$(OBJEXT) server.$(OBJEXT) servlist.$(OBJEXT) \ + $(am__objects_1) text.$(OBJEXT) tree.$(OBJEXT) url.$(OBJEXT) \ + userlist.$(OBJEXT) util.$(OBJEXT) xchat.$(OBJEXT) +libxchatcommon_a_OBJECTS = $(am_libxchatcommon_a_OBJECTS) +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libxchatcommon_a_SOURCES) +DIST_SOURCES = $(am__libxchatcommon_a_SOURCES_DIST) +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = dbus . +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run aclocal-1.11 +ALLOCA = +AMTAR = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run tar +AR = ar +AUTOCONF = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run autoconf +AUTOHEADER = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run autoheader +AUTOMAKE = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run automake-1.11 +AWK = gawk +BUILD_INCLUDED_LIBINTL = no +CATOBJEXT = .gmo +CC = gcc +CCAS = gcc +CCASDEPMODE = depmode=gcc3 +CCASFLAGS = -g -O2 +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 -Wall -pipe -Wno-pointer-sign -funsigned-char +CFLAG_VISIBILITY = -fvisibility=hidden +COMMON_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -pthread -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include +COMMON_LIBS = -lglib-2.0 -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DATADIR = ${prefix}/share +DATADIRNAME = share +DBUS_BINDING_TOOL = /usr/bin/dbus-binding-tool +DBUS_CFLAGS = -pthread -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include +DBUS_LIBS = -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0 +DBUS_SERVICES_DIR = ${prefix}/share/dbus-1/services +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/local/bin/grep -E +EXEEXT = +FGREP = /usr/local/bin/grep -F +GCONFTOOL = /usr/bin/gconftool-2 +GENCAT = gencat +GETTEXT_MACRO_VERSION = 0.17 +GETTEXT_PACKAGE = xchat +GLIBC2 = yes +GLIBC21 = yes +GLIB_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include +GLIB_GENMARSHAL = /usr/bin/glib-genmarshal +GLIB_LIBS = -lglib-2.0 +GLIB_MKENUMS = glib-mkenums +GMSGFMT = /usr/bin/msgfmt +GMSGFMT_015 = /usr/bin/msgfmt +GOBJECT_QUERY = gobject-query +GREP = /usr/local/bin/grep +GTKSPELL_CFLAGS = +GTKSPELL_LIBS = +GTK_CFLAGS = -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 +GTK_LIBS = -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype +GUI_CFLAGS = -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 +GUI_LIBS = -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype -Wl,--version-script,$(srcdir)/../version-script -lglib-2.0 -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0 +HAVE_ASPRINTF = 1 +HAVE_POSIX_PRINTF = 1 +HAVE_SNPRINTF = 1 +HAVE_VISIBILITY = 1 +HAVE_WPRINTF = 0 +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +INSTOBJEXT = .mo +INTLBISON = bison +INTLLIBS = +INTLOBJS = +INTL_LIBTOOL_SUFFIX_PREFIX = +INTL_MACOSX_LIBS = +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = -lgmodule-2.0 +LIBICONV = -liconv +LIBINTL = +LIBMULTITHREAD = -lpthread +LIBOBJS = +LIBPTH = +LIBPTH_PREFIX = +LIBS = -lX11 -lssl -lcrypto -ldl -Wl,--export-dynamic -pthread -lglib-2.0 +LIBSEXY_CFLAGS = +LIBSEXY_LIBS = +LIBTHREAD = +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBC = -lc +LTLIBICONV = -liconv +LTLIBINTL = +LTLIBMULTITHREAD = -lpthread +LTLIBOBJS = +LTLIBPTH = +LTLIBTHREAD = +MAINT = # +MAKEINFO = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run makeinfo +MKDIR_P = /bin/mkdir -p +MSGFMT = /usr/bin/msgfmt +MSGFMT_015 = /usr/bin/msgfmt +MSGMERGE = /usr/bin/msgmerge +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = xchat +PACKAGE_BUGREPORT = http://www.xchat.org/ +PACKAGE_NAME = XChat +PACKAGE_STRING = XChat 2.8.8 +PACKAGE_TARNAME = xchat +PACKAGE_URL = +PACKAGE_VERSION = 2.8.8 +PATH_SEPARATOR = : +PERL_CFLAGS = -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/lib/x86_64-linux-gnu/perl/5.26/CORE +PERL_LDFLAGS = -Wl,-E -fstack-protector-strong -L/usr/local/lib -L/usr/lib/x86_64-linux-gnu/perl/5.26/CORE -lperl -ldl -lm -lpthread -lcrypt +PKG_CONFIG = /usr/bin/pkg-config +PLUGIN_INCLUDES = -I$(top_srcdir)/plugins +POSUB = po +PRI_MACROS_BROKEN = 0 +PY_CFLAGS = -I/usr/include/python2.7 +PY_LIBS = -L/usr/lib/python2.7/config -lpython2.7 -lpthread -lutil +RANLIB = ranlib +SED = /bin/sed +SET_MAKE = +SHELL = /bin/bash +STRIP = strip +TCL_CFLAGS = -I/usr/include -I/usr/include/tcl8.6 +TCL_LIBS = -L/usr/lib/x86_64-linux-gnu -ltcl8.6 -ldl -lz -lpthread -lm +USE_INCLUDED_LIBINTL = no +USE_NLS = yes +VERSION = 2.8.8 +WINDRES = +WOE32 = no +WOE32DLL = no +XGETTEXT = /usr/bin/xgettext +XGETTEXT_015 = /usr/bin/xgettext +XGETTEXT_EXTRA_OPTIONS = +abs_builddir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/src/common +abs_srcdir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/src/common +abs_top_builddir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8 +abs_top_srcdir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8 +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = /usr/local +gdkpixbufcsourcepath = /usr/bin/gdk-pixbuf-csource +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +lt_ECHO = echo +mandir = ${datarootdir}/man +mkdir_p = /bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +perlpath = /usr/bin/perl +pkgconfigpath = /usr/bin/pkg-config +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +pythonpath = /usr/bin/python2 +sbindir = ${exec_prefix}/sbin +sedpath = /bin/sed +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../../ +top_builddir = ../.. +top_srcdir = ../.. +unamepath = /bin/uname +xchatlibdir = ${exec_prefix}/lib/xchat +noinst_LIBRARIES = libxchatcommon.a +INCLUDES = $(COMMON_CFLAGS) +EXTRA_DIST = \ + cfgfiles.h \ + chanopt.h \ + ctcp.h \ + dcc.h \ + fe.h \ + history.h \ + identd.c \ + ignore.h \ + inbound.h \ + inet.h \ + make-te.c \ + modes.h \ + msproxy.h \ + network.h \ + notify.h \ + outbound.h \ + plugin.h \ + plugin-timer.h \ + proto-irc.h \ + server.h \ + servlist.h \ + ssl.h \ + ssl.c \ + text.h \ + textenums.h \ + textevents.h \ + textevents.in \ + tree.h \ + url.h \ + userlist.h \ + util.h \ + xchat.h \ + xchatc.h \ + xchat-plugin.h + +ssl_c = ssl.c +dbusdir = dbus +libxchatcommon_a_LIBADD = \ + $(top_builddir)/src/common/dbus/dbus-*.$(OBJEXT) + +SUBDIRS = $(dbusdir) . +libxchatcommon_a_SOURCES = cfgfiles.c chanopt.c ctcp.c dcc.c history.c ignore.c \ + inbound.c modes.c msproxy.c network.c notify.c outbound.c \ + plugin.c plugin-timer.c proto-irc.c server.c servlist.c $(ssl_c) \ + text.c tree.c url.c userlist.c util.c xchat.c + +all: all-recursive + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/common/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/common/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +libxchatcommon.a: $(libxchatcommon_a_OBJECTS) $(libxchatcommon_a_DEPENDENCIES) + -rm -f libxchatcommon.a + $(libxchatcommon_a_AR) libxchatcommon.a $(libxchatcommon_a_OBJECTS) $(libxchatcommon_a_LIBADD) + $(RANLIB) libxchatcommon.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/cfgfiles.Po +include ./$(DEPDIR)/chanopt.Po +include ./$(DEPDIR)/ctcp.Po +include ./$(DEPDIR)/dcc.Po +include ./$(DEPDIR)/history.Po +include ./$(DEPDIR)/ignore.Po +include ./$(DEPDIR)/inbound.Po +include ./$(DEPDIR)/modes.Po +include ./$(DEPDIR)/msproxy.Po +include ./$(DEPDIR)/network.Po +include ./$(DEPDIR)/notify.Po +include ./$(DEPDIR)/outbound.Po +include ./$(DEPDIR)/plugin-timer.Po +include ./$(DEPDIR)/plugin.Po +include ./$(DEPDIR)/proto-irc.Po +include ./$(DEPDIR)/server.Po +include ./$(DEPDIR)/servlist.Po +include ./$(DEPDIR)/ssl.Po +include ./$(DEPDIR)/text.Po +include ./$(DEPDIR)/tree.Po +include ./$(DEPDIR)/url.Po +include ./$(DEPDIR)/userlist.Po +include ./$(DEPDIR)/util.Po +include ./$(DEPDIR)/xchat.Po + +.c.o: + depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ + $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ + $(am__mv) $$depbase.Tpo $$depbase.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(COMPILE) -c -o $@ $< + +.c.obj: + depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ + $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ + $(am__mv) $$depbase.Tpo $$depbase.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: + depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ + $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ + $(am__mv) $$depbase.Tpo $$depbase.Plo +# source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(LIBRARIES) +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ + mostlyclean-am + +distclean: distclean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + clean-noinstLIBRARIES ctags ctags-recursive distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am + + +textevents: make-te + ./make-te < textevents.in > textevents.h 2> textenums.h + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/xchat-2.8.8/src/common/Makefile.am b/xchat-2.8.8/src/common/Makefile.am new file mode 100644 index 0000000..8f0299d --- /dev/null +++ b/xchat-2.8.8/src/common/Makefile.am @@ -0,0 +1,60 @@ +## Process this file with automake to produce Makefile.in + +noinst_LIBRARIES = libxchatcommon.a + +INCLUDES = $(COMMON_CFLAGS) + +EXTRA_DIST = \ + cfgfiles.h \ + chanopt.h \ + ctcp.h \ + dcc.h \ + fe.h \ + history.h \ + identd.c \ + ignore.h \ + inbound.h \ + inet.h \ + make-te.c \ + modes.h \ + msproxy.h \ + network.h \ + notify.h \ + outbound.h \ + plugin.h \ + plugin-timer.h \ + proto-irc.h \ + server.h \ + servlist.h \ + ssl.h \ + ssl.c \ + text.h \ + textenums.h \ + textevents.h \ + textevents.in \ + tree.h \ + url.h \ + userlist.h \ + util.h \ + xchat.h \ + xchatc.h \ + xchat-plugin.h + +if USE_OPENSSL +ssl_c = ssl.c +endif + +if USE_DBUS +dbusdir = dbus +libxchatcommon_a_LIBADD = \ + $(top_builddir)/src/common/dbus/dbus-*.$(OBJEXT) +endif +SUBDIRS = $(dbusdir) . + +libxchatcommon_a_SOURCES = cfgfiles.c chanopt.c ctcp.c dcc.c history.c ignore.c \ + inbound.c modes.c msproxy.c network.c notify.c outbound.c \ + plugin.c plugin-timer.c proto-irc.c server.c servlist.c $(ssl_c) \ + text.c tree.c url.c userlist.c util.c xchat.c + +textevents: make-te + ./make-te < textevents.in > textevents.h 2> textenums.h diff --git a/xchat-2.8.8/src/common/Makefile.in b/xchat-2.8.8/src/common/Makefile.in new file mode 100644 index 0000000..ac5f706 --- /dev/null +++ b/xchat-2.8.8/src/common/Makefile.in @@ -0,0 +1,792 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = src/common +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +libxchatcommon_a_AR = $(AR) $(ARFLAGS) +@USE_DBUS_TRUE@libxchatcommon_a_DEPENDENCIES = $(top_builddir)/src/common/dbus/dbus-*.$(OBJEXT) +am__libxchatcommon_a_SOURCES_DIST = cfgfiles.c chanopt.c ctcp.c dcc.c \ + history.c ignore.c inbound.c modes.c msproxy.c network.c \ + notify.c outbound.c plugin.c plugin-timer.c proto-irc.c \ + server.c servlist.c ssl.c text.c tree.c url.c userlist.c \ + util.c xchat.c +@USE_OPENSSL_TRUE@am__objects_1 = ssl.$(OBJEXT) +am_libxchatcommon_a_OBJECTS = cfgfiles.$(OBJEXT) chanopt.$(OBJEXT) \ + ctcp.$(OBJEXT) dcc.$(OBJEXT) history.$(OBJEXT) \ + ignore.$(OBJEXT) inbound.$(OBJEXT) modes.$(OBJEXT) \ + msproxy.$(OBJEXT) network.$(OBJEXT) notify.$(OBJEXT) \ + outbound.$(OBJEXT) plugin.$(OBJEXT) plugin-timer.$(OBJEXT) \ + proto-irc.$(OBJEXT) server.$(OBJEXT) servlist.$(OBJEXT) \ + $(am__objects_1) text.$(OBJEXT) tree.$(OBJEXT) url.$(OBJEXT) \ + userlist.$(OBJEXT) util.$(OBJEXT) xchat.$(OBJEXT) +libxchatcommon_a_OBJECTS = $(am_libxchatcommon_a_OBJECTS) +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libxchatcommon_a_SOURCES) +DIST_SOURCES = $(am__libxchatcommon_a_SOURCES_DIST) +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = dbus . +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +COMMON_CFLAGS = @COMMON_CFLAGS@ +COMMON_LIBS = @COMMON_LIBS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DATADIRNAME = @DATADIRNAME@ +DBUS_BINDING_TOOL = @DBUS_BINDING_TOOL@ +DBUS_CFLAGS = @DBUS_CFLAGS@ +DBUS_LIBS = @DBUS_LIBS@ +DBUS_SERVICES_DIR = @DBUS_SERVICES_DIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GCONFTOOL = @GCONFTOOL@ +GENCAT = @GENCAT@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GLIB_CFLAGS = @GLIB_CFLAGS@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GLIB_LIBS = @GLIB_LIBS@ +GLIB_MKENUMS = @GLIB_MKENUMS@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GOBJECT_QUERY = @GOBJECT_QUERY@ +GREP = @GREP@ +GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ +GTKSPELL_LIBS = @GTKSPELL_LIBS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_LIBS = @GTK_LIBS@ +GUI_CFLAGS = @GUI_CFLAGS@ +GUI_LIBS = @GUI_LIBS@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBSEXY_CFLAGS = @LIBSEXY_CFLAGS@ +LIBSEXY_LIBS = @LIBSEXY_LIBS@ +LIBTHREAD = @LIBTHREAD@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBC = @LTLIBC@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTHREAD = @LTLIBTHREAD@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL_CFLAGS = @PERL_CFLAGS@ +PERL_LDFLAGS = @PERL_LDFLAGS@ +PKG_CONFIG = @PKG_CONFIG@ +PLUGIN_INCLUDES = @PLUGIN_INCLUDES@ +POSUB = @POSUB@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +PY_CFLAGS = @PY_CFLAGS@ +PY_LIBS = @PY_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TCL_CFLAGS = @TCL_CFLAGS@ +TCL_LIBS = @TCL_LIBS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WOE32 = @WOE32@ +WOE32DLL = @WOE32DLL@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gdkpixbufcsourcepath = @gdkpixbufcsourcepath@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +perlpath = @perlpath@ +pkgconfigpath = @pkgconfigpath@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pythonpath = @pythonpath@ +sbindir = @sbindir@ +sedpath = @sedpath@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +unamepath = @unamepath@ +xchatlibdir = @xchatlibdir@ +noinst_LIBRARIES = libxchatcommon.a +INCLUDES = $(COMMON_CFLAGS) +EXTRA_DIST = \ + cfgfiles.h \ + chanopt.h \ + ctcp.h \ + dcc.h \ + fe.h \ + history.h \ + identd.c \ + ignore.h \ + inbound.h \ + inet.h \ + make-te.c \ + modes.h \ + msproxy.h \ + network.h \ + notify.h \ + outbound.h \ + plugin.h \ + plugin-timer.h \ + proto-irc.h \ + server.h \ + servlist.h \ + ssl.h \ + ssl.c \ + text.h \ + textenums.h \ + textevents.h \ + textevents.in \ + tree.h \ + url.h \ + userlist.h \ + util.h \ + xchat.h \ + xchatc.h \ + xchat-plugin.h + +@USE_OPENSSL_TRUE@ssl_c = ssl.c +@USE_DBUS_TRUE@dbusdir = dbus +@USE_DBUS_TRUE@libxchatcommon_a_LIBADD = \ +@USE_DBUS_TRUE@ $(top_builddir)/src/common/dbus/dbus-*.$(OBJEXT) + +SUBDIRS = $(dbusdir) . +libxchatcommon_a_SOURCES = cfgfiles.c chanopt.c ctcp.c dcc.c history.c ignore.c \ + inbound.c modes.c msproxy.c network.c notify.c outbound.c \ + plugin.c plugin-timer.c proto-irc.c server.c servlist.c $(ssl_c) \ + text.c tree.c url.c userlist.c util.c xchat.c + +all: all-recursive + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/common/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/common/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +libxchatcommon.a: $(libxchatcommon_a_OBJECTS) $(libxchatcommon_a_DEPENDENCIES) + -rm -f libxchatcommon.a + $(libxchatcommon_a_AR) libxchatcommon.a $(libxchatcommon_a_OBJECTS) $(libxchatcommon_a_LIBADD) + $(RANLIB) libxchatcommon.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cfgfiles.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chanopt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctcp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/history.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ignore.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inbound.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/modes.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msproxy.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/network.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/notify.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/outbound.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin-timer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/proto-irc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/server.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/servlist.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ssl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/text.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tree.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/url.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/userlist.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xchat.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(LIBRARIES) +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ + mostlyclean-am + +distclean: distclean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + clean-noinstLIBRARIES ctags ctags-recursive distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am + + +textevents: make-te + ./make-te < textevents.in > textevents.h 2> textenums.h + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/xchat-2.8.8/src/common/cfgfiles.c b/xchat-2.8.8/src/common/cfgfiles.c new file mode 100644 index 0000000..ce0ef6f --- /dev/null +++ b/xchat-2.8.8/src/common/cfgfiles.c @@ -0,0 +1,1104 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <fcntl.h> +#include <unistd.h> +#include <stdlib.h> +#include <string.h> +#include <stdio.h> +#include <sys/types.h> +#include <sys/stat.h> + +#include "xchat.h" +#include "cfgfiles.h" +#include "util.h" +#include "fe.h" +#include "text.h" +#include "xchatc.h" + +#ifdef WIN32 +#define XCHAT_DIR "X-Chat 2" +#else +#define XCHAT_DIR ".xchat2" +#endif +#define DEF_FONT "Monospace 9" + +void +list_addentry (GSList ** list, char *cmd, char *name) +{ + struct popup *pop; + int cmd_len = 1, name_len; + + /* remove <2.8.0 stuff */ + if (!strcmp (cmd, "away") && !strcmp (name, "BACK")) + return; + + if (cmd) + cmd_len = strlen (cmd) + 1; + name_len = strlen (name) + 1; + + pop = malloc (sizeof (struct popup) + cmd_len + name_len); + pop->name = (char *) pop + sizeof (struct popup); + pop->cmd = pop->name + name_len; + + memcpy (pop->name, name, name_len); + if (cmd) + memcpy (pop->cmd, cmd, cmd_len); + else + pop->cmd[0] = 0; + + *list = g_slist_append (*list, pop); +} + +/* read it in from a buffer to our linked list */ + +static void +list_load_from_data (GSList ** list, char *ibuf, int size) +{ + char cmd[384]; + char name[128]; + char *buf; + int pnt = 0; + + cmd[0] = 0; + name[0] = 0; + + while (buf_get_line (ibuf, &buf, &pnt, size)) + { + if (*buf != '#') + { + if (!strncasecmp (buf, "NAME ", 5)) + { + safe_strcpy (name, buf + 5, sizeof (name)); + } + else if (!strncasecmp (buf, "CMD ", 4)) + { + safe_strcpy (cmd, buf + 4, sizeof (cmd)); + if (*name) + { + list_addentry (list, cmd, name); + cmd[0] = 0; + name[0] = 0; + } + } + } + } +} + +void +list_loadconf (char *file, GSList ** list, char *defaultconf) +{ + char filebuf[256]; + char *ibuf; + int fh; + struct stat st; + + snprintf (filebuf, sizeof (filebuf), "%s/%s", get_xdir_fs (), file); + fh = open (filebuf, O_RDONLY | OFLAGS); + if (fh == -1) + { + if (defaultconf) + list_load_from_data (list, defaultconf, strlen (defaultconf)); + return; + } + if (fstat (fh, &st) != 0) + { + perror ("fstat"); + abort (); + } + + ibuf = malloc (st.st_size); + read (fh, ibuf, st.st_size); + close (fh); + + list_load_from_data (list, ibuf, st.st_size); + + free (ibuf); +} + +void +list_free (GSList ** list) +{ + void *data; + while (*list) + { + data = (void *) (*list)->data; + free (data); + *list = g_slist_remove (*list, data); + } +} + +int +list_delentry (GSList ** list, char *name) +{ + struct popup *pop; + GSList *alist = *list; + + while (alist) + { + pop = (struct popup *) alist->data; + if (!strcasecmp (name, pop->name)) + { + *list = g_slist_remove (*list, pop); + free (pop); + return 1; + } + alist = alist->next; + } + return 0; +} + +char * +cfg_get_str (char *cfg, char *var, char *dest, int dest_len) +{ + while (1) + { + if (!strncasecmp (var, cfg, strlen (var))) + { + char *value, t; + cfg += strlen (var); + while (*cfg == ' ') + cfg++; + if (*cfg == '=') + cfg++; + while (*cfg == ' ') + cfg++; + /*while (*cfg == ' ' || *cfg == '=') + cfg++; */ + value = cfg; + while (*cfg != 0 && *cfg != '\n') + cfg++; + t = *cfg; + *cfg = 0; + safe_strcpy (dest, value, dest_len); + *cfg = t; + return cfg; + } + while (*cfg != 0 && *cfg != '\n') + cfg++; + if (*cfg == 0) + return 0; + cfg++; + if (*cfg == 0) + return 0; + } +} + +static int +cfg_put_str (int fh, char *var, char *value) +{ + char buf[512]; + int len; + + snprintf (buf, sizeof buf, "%s = %s\n", var, value); + len = strlen (buf); + return (write (fh, buf, len) == len); +} + +int +cfg_put_color (int fh, int r, int g, int b, char *var) +{ + char buf[400]; + int len; + + snprintf (buf, sizeof buf, "%s = %04x %04x %04x\n", var, r, g, b); + len = strlen (buf); + return (write (fh, buf, len) == len); +} + +int +cfg_put_int (int fh, int value, char *var) +{ + char buf[400]; + int len; + + if (value == -1) + value = 1; + + snprintf (buf, sizeof buf, "%s = %d\n", var, value); + len = strlen (buf); + return (write (fh, buf, len) == len); +} + +int +cfg_get_color (char *cfg, char *var, int *r, int *g, int *b) +{ + char str[128]; + + if (!cfg_get_str (cfg, var, str, sizeof (str))) + return 0; + + sscanf (str, "%04x %04x %04x", r, g, b); + return 1; +} + +int +cfg_get_int_with_result (char *cfg, char *var, int *result) +{ + char str[128]; + + if (!cfg_get_str (cfg, var, str, sizeof (str))) + { + *result = 0; + return 0; + } + + *result = 1; + return atoi (str); +} + +int +cfg_get_int (char *cfg, char *var) +{ + char str[128]; + + if (!cfg_get_str (cfg, var, str, sizeof (str))) + return 0; + + return atoi (str); +} + +char *xdir_fs = NULL; /* file system encoding */ +char *xdir_utf = NULL; /* utf-8 encoding */ + +#ifdef WIN32 + +#include <windows.h> + +static gboolean +get_reg_str (const char *sub, const char *name, char *out, DWORD len) +{ + HKEY hKey; + DWORD t; + + if (RegOpenKeyEx (HKEY_CURRENT_USER, sub, 0, KEY_READ, &hKey) == + ERROR_SUCCESS) + { + if (RegQueryValueEx (hKey, name, NULL, &t, out, &len) != ERROR_SUCCESS || + t != REG_SZ) + { + RegCloseKey (hKey); + return FALSE; + } + out[len-1] = 0; + RegCloseKey (hKey); + return TRUE; + } + + return FALSE; +} + +char * +get_xdir_fs (void) +{ + if (!xdir_fs) + { + char out[256]; + + if (!get_reg_str ("Software\\Microsoft\\Windows\\CurrentVersion\\" + "Explorer\\Shell Folders", "AppData", out, sizeof (out))) + return "./config"; + xdir_fs = g_strdup_printf ("%s\\" XCHAT_DIR, out); + } + return xdir_fs; +} + +#else + +char * +get_xdir_fs (void) +{ + if (!xdir_fs) + xdir_fs = g_strdup_printf ("%s/" XCHAT_DIR, g_get_home_dir ()); + + return xdir_fs; +} + +#endif /* !WIN32 */ + +char * +get_xdir_utf8 (void) +{ + if (!xdir_utf) /* never free this, keep it for program life time */ + xdir_utf = xchat_filename_to_utf8 (get_xdir_fs (), -1, 0, 0, 0); + + return xdir_utf; +} + +static void +check_prefs_dir (void) +{ + char *dir = get_xdir_fs (); + if (access (dir, F_OK) != 0) + { +#ifdef WIN32 + if (mkdir (dir) != 0) +#else + if (mkdir (dir, S_IRUSR | S_IWUSR | S_IXUSR) != 0) +#endif + fe_message (_("Cannot create ~/.xchat2"), FE_MSG_ERROR); + } +} + +static char * +default_file (void) +{ + static char *dfile = 0; + + if (!dfile) + { + dfile = malloc (strlen (get_xdir_fs ()) + 12); + sprintf (dfile, "%s/xchat.conf", get_xdir_fs ()); + } + return dfile; +} + +/* Keep these sorted!! */ + +const struct prefs vars[] = { + {"auto_save", P_OFFINT (autosave), TYPE_BOOL}, + {"auto_save_url", P_OFFINT (autosave_url), TYPE_BOOL}, + + {"away_auto_unmark", P_OFFINT (auto_unmark_away), TYPE_BOOL}, + {"away_reason", P_OFFSET (awayreason), TYPE_STR}, + {"away_show_message", P_OFFINT (show_away_message), TYPE_BOOL}, + {"away_show_once", P_OFFINT (show_away_once), TYPE_BOOL}, + {"away_size_max", P_OFFINT (away_size_max), TYPE_INT}, + {"away_timeout", P_OFFINT (away_timeout), TYPE_INT}, + {"away_track", P_OFFINT (away_track), TYPE_BOOL}, + + {"completion_amount", P_OFFINT (completion_amount), TYPE_INT}, + {"completion_auto", P_OFFINT (nickcompletion), TYPE_BOOL}, + {"completion_sort", P_OFFINT (completion_sort), TYPE_INT}, + {"completion_suffix", P_OFFSET (nick_suffix), TYPE_STR}, + + {"dcc_auto_chat", P_OFFINT (autodccchat), TYPE_INT}, + {"dcc_auto_resume", P_OFFINT (autoresume), TYPE_BOOL}, + {"dcc_auto_send", P_OFFINT (autodccsend), TYPE_INT}, + {"dcc_blocksize", P_OFFINT (dcc_blocksize), TYPE_INT}, + {"dcc_completed_dir", P_OFFSET (dcc_completed_dir), TYPE_STR}, + {"dcc_dir", P_OFFSET (dccdir), TYPE_STR}, + {"dcc_fast_send", P_OFFINT (fastdccsend), TYPE_BOOL}, + {"dcc_global_max_get_cps", P_OFFINT (dcc_global_max_get_cps), TYPE_INT}, + {"dcc_global_max_send_cps", P_OFFINT (dcc_global_max_send_cps), TYPE_INT}, + {"dcc_ip", P_OFFSET (dcc_ip_str), TYPE_STR}, + {"dcc_ip_from_server", P_OFFINT (ip_from_server), TYPE_BOOL}, + {"dcc_max_get_cps", P_OFFINT (dcc_max_get_cps), TYPE_INT}, + {"dcc_max_send_cps", P_OFFINT (dcc_max_send_cps), TYPE_INT}, + {"dcc_permissions", P_OFFINT (dccpermissions), TYPE_INT}, + {"dcc_port_first", P_OFFINT (first_dcc_send_port), TYPE_INT}, + {"dcc_port_last", P_OFFINT (last_dcc_send_port), TYPE_INT}, + {"dcc_remove", P_OFFINT (dcc_remove), TYPE_BOOL}, + {"dcc_save_nick", P_OFFINT (dccwithnick), TYPE_BOOL}, + {"dcc_send_fillspaces", P_OFFINT (dcc_send_fillspaces), TYPE_BOOL}, + {"dcc_stall_timeout", P_OFFINT (dccstalltimeout), TYPE_INT}, + {"dcc_timeout", P_OFFINT (dcctimeout), TYPE_INT}, + + {"dnsprogram", P_OFFSET (dnsprogram), TYPE_STR}, + + {"flood_ctcp_num", P_OFFINT (ctcp_number_limit), TYPE_INT}, + {"flood_ctcp_time", P_OFFINT (ctcp_time_limit), TYPE_INT}, + {"flood_msg_num", P_OFFINT (msg_number_limit), TYPE_INT}, + {"flood_msg_time", P_OFFINT (msg_time_limit), TYPE_INT}, + + {"gui_auto_open_chat", P_OFFINT (autoopendccchatwindow), TYPE_BOOL}, + {"gui_auto_open_dialog", P_OFFINT (autodialog), TYPE_BOOL}, + {"gui_auto_open_recv", P_OFFINT (autoopendccrecvwindow), TYPE_BOOL}, + {"gui_auto_open_send", P_OFFINT (autoopendccsendwindow), TYPE_BOOL}, + {"gui_dialog_height", P_OFFINT (dialog_height), TYPE_INT}, + {"gui_dialog_left", P_OFFINT (dialog_left), TYPE_INT}, + {"gui_dialog_top", P_OFFINT (dialog_top), TYPE_INT}, + {"gui_dialog_width", P_OFFINT (dialog_width), TYPE_INT}, + {"gui_hide_menu", P_OFFINT (hidemenu), TYPE_BOOL}, + {"gui_input_spell", P_OFFINT (gui_input_spell), TYPE_BOOL}, + {"gui_input_style", P_OFFINT (style_inputbox), TYPE_BOOL}, + {"gui_join_dialog", P_OFFINT (gui_join_dialog), TYPE_BOOL}, + {"gui_lagometer", P_OFFINT (lagometer), TYPE_INT}, + {"gui_mode_buttons", P_OFFINT (chanmodebuttons), TYPE_BOOL}, + {"gui_pane_left_size", P_OFFINT (gui_pane_left_size), TYPE_INT}, + {"gui_pane_right_size", P_OFFINT (gui_pane_right_size), TYPE_INT}, + {"gui_quit_dialog", P_OFFINT (gui_quit_dialog), TYPE_BOOL}, + {"gui_slist_select", P_OFFINT (slist_select), TYPE_INT}, + {"gui_slist_skip", P_OFFINT (slist_skip), TYPE_BOOL}, + {"gui_throttlemeter", P_OFFINT (throttlemeter), TYPE_INT}, + {"gui_topicbar", P_OFFINT (topicbar), TYPE_BOOL}, + {"gui_tray", P_OFFINT (gui_tray), TYPE_BOOL}, + {"gui_tray_flags", P_OFFINT (gui_tray_flags), TYPE_INT}, + {"gui_tweaks", P_OFFINT (gui_tweaks), TYPE_INT}, + {"gui_ulist_buttons", P_OFFINT (userlistbuttons), TYPE_BOOL}, + {"gui_ulist_doubleclick", P_OFFSET (doubleclickuser), TYPE_STR}, + {"gui_ulist_hide", P_OFFINT (hideuserlist), TYPE_BOOL}, + {"gui_ulist_left", P_OFFINT (_gui_ulist_left), TYPE_BOOL}, /* obsolete */ + {"gui_ulist_pos", P_OFFINT (gui_ulist_pos), TYPE_INT}, + {"gui_ulist_resizable", P_OFFINT (paned_userlist), TYPE_BOOL}, + {"gui_ulist_show_hosts", P_OFFINT(showhostname_in_userlist), TYPE_BOOL}, + {"gui_ulist_sort", P_OFFINT (userlist_sort), TYPE_INT}, + {"gui_ulist_style", P_OFFINT (style_namelistgad), TYPE_BOOL}, + {"gui_url_mod", P_OFFINT (gui_url_mod), TYPE_INT}, + {"gui_usermenu", P_OFFINT (gui_usermenu), TYPE_BOOL}, + {"gui_win_height", P_OFFINT (mainwindow_height), TYPE_INT}, + {"gui_win_left", P_OFFINT (mainwindow_left), TYPE_INT}, + {"gui_win_save", P_OFFINT (mainwindow_save), TYPE_BOOL}, + {"gui_win_state", P_OFFINT (gui_win_state), TYPE_INT}, + {"gui_win_top", P_OFFINT (mainwindow_top), TYPE_INT}, + {"gui_win_width", P_OFFINT (mainwindow_width), TYPE_INT}, + +#ifdef WIN32 + {"identd", P_OFFINT (identd), TYPE_BOOL}, +#endif + {"input_balloon_chans", P_OFFINT (input_balloon_chans), TYPE_BOOL}, + {"input_balloon_hilight", P_OFFINT (input_balloon_hilight), TYPE_BOOL}, + {"input_balloon_priv", P_OFFINT (input_balloon_priv), TYPE_BOOL}, + {"input_balloon_time", P_OFFINT (input_balloon_time), TYPE_INT}, + {"input_beep_chans", P_OFFINT (input_beep_chans), TYPE_BOOL}, + {"input_beep_hilight", P_OFFINT (input_beep_hilight), TYPE_BOOL}, + {"input_beep_msg", P_OFFINT (input_beep_priv), TYPE_BOOL}, + {"input_command_char", P_OFFSET (cmdchar), TYPE_STR}, + {"input_filter_beep", P_OFFINT (filterbeep), TYPE_BOOL}, + {"input_flash_chans", P_OFFINT (input_flash_chans), TYPE_BOOL}, + {"input_flash_hilight", P_OFFINT (input_flash_hilight), TYPE_BOOL}, + {"input_flash_priv", P_OFFINT (input_flash_priv), TYPE_BOOL}, + {"input_perc_ascii", P_OFFINT (perc_ascii), TYPE_BOOL}, + {"input_perc_color", P_OFFINT (perc_color), TYPE_BOOL}, + {"input_tray_chans", P_OFFINT (input_tray_chans), TYPE_BOOL}, + {"input_tray_hilight", P_OFFINT (input_tray_hilight), TYPE_BOOL}, + {"input_tray_priv", P_OFFINT (input_tray_priv), TYPE_BOOL}, + + {"irc_auto_rejoin", P_OFFINT (autorejoin), TYPE_BOOL}, + {"irc_ban_type", P_OFFINT (bantype), TYPE_INT}, + {"irc_conf_mode", P_OFFINT (confmode), TYPE_BOOL}, + {"irc_extra_hilight", P_OFFSET (irc_extra_hilight), TYPE_STR}, + {"irc_hide_version", P_OFFINT (hidever), TYPE_BOOL}, + {"irc_id_ntext", P_OFFSET (irc_id_ntext), TYPE_STR}, + {"irc_id_ytext", P_OFFSET (irc_id_ytext), TYPE_STR}, + {"irc_invisible", P_OFFINT (invisible), TYPE_BOOL}, + {"irc_join_delay", P_OFFINT (irc_join_delay), TYPE_INT}, + {"irc_logging", P_OFFINT (logging), TYPE_BOOL}, + {"irc_logmask", P_OFFSET (logmask), TYPE_STR}, + {"irc_nick1", P_OFFSET (nick1), TYPE_STR}, + {"irc_nick2", P_OFFSET (nick2), TYPE_STR}, + {"irc_nick3", P_OFFSET (nick3), TYPE_STR}, + {"irc_nick_hilight", P_OFFSET (irc_nick_hilight), TYPE_STR}, + {"irc_no_hilight", P_OFFSET (irc_no_hilight), TYPE_STR}, + {"irc_part_reason", P_OFFSET (partreason), TYPE_STR}, + {"irc_quit_reason", P_OFFSET (quitreason), TYPE_STR}, + {"irc_raw_modes", P_OFFINT (raw_modes), TYPE_BOOL}, + {"irc_real_name", P_OFFSET (realname), TYPE_STR}, + {"irc_servernotice", P_OFFINT (servernotice), TYPE_BOOL}, + {"irc_skip_motd", P_OFFINT (skipmotd), TYPE_BOOL}, + {"irc_user_name", P_OFFSET (username), TYPE_STR}, + {"irc_wallops", P_OFFINT (wallops), TYPE_BOOL}, + {"irc_who_join", P_OFFINT (userhost), TYPE_BOOL}, + {"irc_whois_front", P_OFFINT (irc_whois_front), TYPE_BOOL}, + + {"net_auto_reconnect", P_OFFINT (autoreconnect), TYPE_BOOL}, + {"net_auto_reconnectonfail", P_OFFINT (autoreconnectonfail), TYPE_BOOL}, + {"net_bind_host", P_OFFSET (hostname), TYPE_STR}, + {"net_ping_timeout", P_OFFINT (pingtimeout), TYPE_INT}, + {"net_proxy_auth", P_OFFINT (proxy_auth), TYPE_BOOL}, + {"net_proxy_host", P_OFFSET (proxy_host), TYPE_STR}, + {"net_proxy_pass", P_OFFSET (proxy_pass), TYPE_STR}, + {"net_proxy_port", P_OFFINT (proxy_port), TYPE_INT}, + {"net_proxy_type", P_OFFINT (proxy_type), TYPE_INT}, + {"net_proxy_use", P_OFFINT (proxy_use), TYPE_INT}, + {"net_proxy_user", P_OFFSET (proxy_user), TYPE_STR}, + + {"net_reconnect_delay", P_OFFINT (recon_delay), TYPE_INT}, + {"net_throttle", P_OFFINT (throttle), TYPE_BOOL}, + + {"notify_timeout", P_OFFINT (notify_timeout), TYPE_INT}, + {"notify_whois_online", P_OFFINT (whois_on_notifyonline), TYPE_BOOL}, + + {"perl_warnings", P_OFFINT (perlwarnings), TYPE_BOOL}, + + {"sound_command", P_OFFSET (soundcmd), TYPE_STR}, + {"sound_dir", P_OFFSET (sounddir), TYPE_STR}, + {"stamp_log", P_OFFINT (timestamp_logs), TYPE_BOOL}, + {"stamp_log_format", P_OFFSET (timestamp_log_format), TYPE_STR}, + {"stamp_text", P_OFFINT (timestamp), TYPE_BOOL}, + {"stamp_text_format", P_OFFSET (stamp_format), TYPE_STR}, + + {"tab_chans", P_OFFINT (tabchannels), TYPE_BOOL}, + {"tab_dialogs", P_OFFINT (privmsgtab), TYPE_BOOL}, + {"tab_layout", P_OFFINT (tab_layout), TYPE_INT}, + {"tab_new_to_front", P_OFFINT (newtabstofront), TYPE_INT}, + {"tab_notices", P_OFFINT (notices_tabs), TYPE_BOOL}, + {"tab_pos", P_OFFINT (tab_pos), TYPE_INT}, + {"tab_position", P_OFFINT (_tabs_position), TYPE_INT}, /* obsolete */ + {"tab_server", P_OFFINT (use_server_tab), TYPE_BOOL}, + {"tab_small", P_OFFINT (tab_small), TYPE_INT}, + {"tab_sort", P_OFFINT (tab_sort), TYPE_BOOL}, + {"tab_trunc", P_OFFINT (truncchans), TYPE_INT}, + {"tab_utils", P_OFFINT (windows_as_tabs), TYPE_BOOL}, + + {"text_background", P_OFFSET (background), TYPE_STR}, + {"text_color_nicks", P_OFFINT (colorednicks), TYPE_BOOL}, + {"text_font", P_OFFSET (font_normal), TYPE_STR}, + {"text_indent", P_OFFINT (indent_nicks), TYPE_BOOL}, + {"text_max_indent", P_OFFINT (max_auto_indent), TYPE_INT}, + {"text_max_lines", P_OFFINT (max_lines), TYPE_INT}, + {"text_replay", P_OFFINT (text_replay), TYPE_BOOL}, + {"text_show_marker", P_OFFINT (show_marker), TYPE_BOOL}, + {"text_show_sep", P_OFFINT (show_separator), TYPE_BOOL}, + {"text_stripcolor", P_OFFINT (stripcolor), TYPE_BOOL}, + {"text_thin_sep", P_OFFINT (thin_separator), TYPE_BOOL}, + {"text_tint_blue", P_OFFINT (tint_blue), TYPE_INT}, + {"text_tint_green", P_OFFINT (tint_green), TYPE_INT}, + {"text_tint_red", P_OFFINT (tint_red), TYPE_INT}, + {"text_transparent", P_OFFINT (transparent), TYPE_BOOL}, + {"text_wordwrap", P_OFFINT (wordwrap), TYPE_BOOL}, + + {0, 0, 0}, +}; + +static char * +convert_with_fallback (const char *str, const char *fallback) +{ + char *utf; + + utf = g_locale_to_utf8 (str, -1, 0, 0, 0); + if (!utf) + { + /* this can happen if CHARSET envvar is set wrong */ + /* maybe it's already utf8 (breakage!) */ + if (!g_utf8_validate (str, -1, NULL)) + utf = g_strdup (fallback); + else + utf = g_strdup (str); + } + + return utf; +} + +void +load_config (void) +{ + struct stat st; + char *cfg, *sp; + const char *username, *realname; + int res, val, i, fh; + + check_prefs_dir (); + username = g_get_user_name (); + if (!username) + username = "root"; + + realname = g_get_real_name (); + if ((realname && realname[0] == 0) || !realname) + realname = username; + + username = convert_with_fallback (username, "username"); + realname = convert_with_fallback (realname, "realname"); + + memset (&prefs, 0, sizeof (struct xchatprefs)); + + /* put in default values, anything left out is automatically zero */ + prefs.local_ip = 0xffffffff; + prefs.irc_join_delay = 3; + prefs.show_marker = 1; + prefs.newtabstofront = 2; + prefs.completion_amount = 5; + prefs.away_timeout = 60; + prefs.away_size_max = 300; + prefs.away_track = 1; + prefs.timestamp_logs = 1; + prefs.truncchans = 20; + prefs.autoresume = 1; + prefs.show_away_once = 1; + prefs.indent_nicks = 1; + prefs.thin_separator = 1; + prefs._tabs_position = 2; /* 2 = left */ + prefs.fastdccsend = 1; + prefs.wordwrap = 1; + prefs.autosave = 1; + prefs.autodialog = 1; + prefs.gui_input_spell = 1; + prefs.autoreconnect = 1; + prefs.recon_delay = 10; + prefs.text_replay = 1; + prefs.tabchannels = 1; + prefs.tab_layout = 2; /* 0=Tabs 1=Reserved 2=Tree */ + prefs.tab_sort = 1; + prefs.paned_userlist = 1; + prefs.newtabstofront = 2; + prefs.use_server_tab = 1; + prefs.privmsgtab = 1; + /*prefs.style_inputbox = 1;*/ + prefs.dccpermissions = 0600; + prefs.max_lines = 500; + prefs.mainwindow_width = 640; + prefs.mainwindow_height = 400; + prefs.dialog_width = 500; + prefs.dialog_height = 256; + prefs.gui_join_dialog = 1; + prefs.gui_quit_dialog = 1; + prefs.dcctimeout = 180; + prefs.dccstalltimeout = 60; + prefs.notify_timeout = 15; + prefs.tint_red = + prefs.tint_green = + prefs.tint_blue = 195; + prefs.auto_indent = 1; + prefs.max_auto_indent = 256; + prefs.show_separator = 1; + prefs.dcc_blocksize = 1024; + prefs.throttle = 1; + /*FIXME*/ prefs.msg_time_limit = 30; + prefs.msg_number_limit = 5; + prefs.ctcp_time_limit = 30; + prefs.ctcp_number_limit = 5; + prefs.topicbar = 1; + prefs.lagometer = 1; + prefs.throttlemeter = 1; + prefs.autoopendccrecvwindow = 1; + prefs.autoopendccsendwindow = 1; + prefs.autoopendccchatwindow = 1; + prefs.userhost = 1; + prefs.gui_url_mod = 4; /* ctrl */ + prefs.gui_tray = 1; + prefs.gui_pane_left_size = 100; + prefs.gui_pane_right_size = 100; + prefs.mainwindow_save = 1; + prefs.bantype = 2; + prefs.input_balloon_time = 20; + prefs.input_flash_priv = prefs.input_flash_hilight = 1; + prefs.input_tray_priv = prefs.input_tray_hilight = 1; + prefs.autodccsend = 2; /* browse mode */ +#ifdef WIN32 + prefs.identd = 1; +#endif + strcpy (prefs.stamp_format, "[%H:%M] "); + strcpy (prefs.timestamp_log_format, "%b %d %H:%M:%S "); + strcpy (prefs.logmask, "%n-%c.log"); + strcpy (prefs.nick_suffix, ","); + strcpy (prefs.cmdchar, "/"); + strcpy (prefs.nick1, username); + strcpy (prefs.nick2, username); + strcat (prefs.nick2, "_"); + strcpy (prefs.nick3, username); + strcat (prefs.nick3, "__"); + strcpy (prefs.realname, realname); + strcpy (prefs.username, username); +#ifdef WIN32 + strcpy (prefs.sounddir, "./sounds"); + { + char out[256]; + + if (get_reg_str ("Software\\Microsoft\\Windows\\CurrentVersion\\" + "Explorer\\Shell Folders", "Personal", out, sizeof (out))) + snprintf (prefs.dccdir, sizeof (prefs.dccdir), "%s\\Downloads", out); + else + snprintf (prefs.dccdir, sizeof (prefs.dccdir), "%s\\Downloads", get_xdir_utf8 ()); + } +#else + snprintf (prefs.sounddir, sizeof (prefs.sounddir), "%s/sounds", get_xdir_utf8 ()); + snprintf (prefs.dccdir, sizeof (prefs.dccdir), "%s/downloads", get_xdir_utf8 ()); +#endif + strcpy (prefs.doubleclickuser, "QUOTE WHOIS %s %s"); + strcpy (prefs.awayreason, _("I'm busy")); + strcpy (prefs.quitreason, _("Leaving")); + strcpy (prefs.partreason, prefs.quitreason); + strcpy (prefs.font_normal, DEF_FONT); + strcpy (prefs.dnsprogram, "host"); + strcpy (prefs.irc_no_hilight, "NickServ,ChanServ"); + + g_free ((char *)username); + g_free ((char *)realname); + + fh = open (default_file (), OFLAGS | O_RDONLY); + if (fh != -1) + { + fstat (fh, &st); + cfg = malloc (st.st_size + 1); + cfg[0] = '\0'; + i = read (fh, cfg, st.st_size); + if (i >= 0) + cfg[i] = '\0'; /* make sure cfg is NULL terminated */ + close (fh); + i = 0; + do + { + switch (vars[i].type) + { + case TYPE_STR: + cfg_get_str (cfg, vars[i].name, (char *) &prefs + vars[i].offset, + vars[i].len); + break; + case TYPE_BOOL: + case TYPE_INT: + val = cfg_get_int_with_result (cfg, vars[i].name, &res); + if (res) + *((int *) &prefs + vars[i].offset) = val; + break; + } + i++; + } + while (vars[i].name); + + free (cfg); + + } else + { +#ifndef WIN32 +#ifndef __EMX__ + /* OS/2 uses UID 0 all the time */ + if (getuid () == 0) + fe_message (_("* Running IRC as root is stupid! You should\n" + " create a User Account and use that to login.\n"), FE_MSG_WARN|FE_MSG_WAIT); +#endif +#endif /* !WIN32 */ + + mkdir_utf8 (prefs.dccdir); + mkdir_utf8 (prefs.dcc_completed_dir); + } + if (prefs.mainwindow_height < 138) + prefs.mainwindow_height = 138; + if (prefs.mainwindow_width < 106) + prefs.mainwindow_width = 106; + + sp = strchr (prefs.username, ' '); + if (sp) + sp[0] = 0; /* spaces in username would break the login */ + + /* try to make sense of old ulist/tree position settings */ + if (prefs.gui_ulist_pos == 0) + { + prefs.gui_ulist_pos = 3; /* top right */ + if (prefs._gui_ulist_left) + prefs.gui_ulist_pos = 2; /* bottom left */ + + switch (prefs._tabs_position) + { + case 0: + prefs.tab_pos = 6; /* bottom */ + break; + case 1: + prefs.tab_pos = 5; /* top */ + break; + case 2: + prefs.tab_pos = 1; /* left */ + break; + case 3: + prefs.tab_pos = 4; /* right */ + break; + case 4: + prefs.tab_pos = 1; /* (hidden)left */ + break; + case 5: + if (prefs._gui_ulist_left) + { + prefs.tab_pos = 1; /* above ulist left */ + prefs.gui_ulist_pos = 2; + } + else + { + prefs.tab_pos = 3; /* above ulist right */ + prefs.gui_ulist_pos = 4; + } + break; + } + } +} + +int +save_config (void) +{ + int fh, i; + char *new_config, *config; + + check_prefs_dir (); + + config = default_file (); + new_config = malloc (strlen (config) + 5); + strcpy (new_config, config); + strcat (new_config, ".new"); + + fh = open (new_config, OFLAGS | O_TRUNC | O_WRONLY | O_CREAT, 0600); + if (fh == -1) + { + free (new_config); + return 0; + } + + if (!cfg_put_str (fh, "version", PACKAGE_VERSION)) + { + free (new_config); + return 0; + } + + i = 0; + do + { + switch (vars[i].type) + { + case TYPE_STR: + if (!cfg_put_str (fh, vars[i].name, (char *) &prefs + vars[i].offset)) + { + free (new_config); + return 0; + } + break; + case TYPE_INT: + case TYPE_BOOL: + if (!cfg_put_int (fh, *((int *) &prefs + vars[i].offset), vars[i].name)) + { + free (new_config); + return 0; + } + } + i++; + } + while (vars[i].name); + + if (close (fh) == -1) + { + free (new_config); + return 0; + } + +#ifdef WIN32 + unlink (config); /* win32 can't rename to an existing file */ +#endif + if (rename (new_config, config) == -1) + { + free (new_config); + return 0; + } + free (new_config); + + return 1; +} + +static void +set_showval (session *sess, const struct prefs *var, char *tbuf) +{ + int len, dots, j; + + len = strlen (var->name); + memcpy (tbuf, var->name, len); + dots = 29 - len; + if (dots < 0) + dots = 0; + tbuf[len++] = '\003'; + tbuf[len++] = '2'; + for (j=0;j<dots;j++) + tbuf[j + len] = '.'; + len += j; + switch (var->type) + { + case TYPE_STR: + sprintf (tbuf + len, "\0033:\017 %s\n", + (char *) &prefs + var->offset); + break; + case TYPE_INT: + sprintf (tbuf + len, "\0033:\017 %d\n", + *((int *) &prefs + var->offset)); + break; + case TYPE_BOOL: + if (*((int *) &prefs + var->offset)) + sprintf (tbuf + len, "\0033:\017 %s\n", "ON"); + else + sprintf (tbuf + len, "\0033:\017 %s\n", "OFF"); + break; + } + PrintText (sess, tbuf); +} + +static void +set_list (session * sess, char *tbuf) +{ + int i; + + i = 0; + do + { + set_showval (sess, &vars[i], tbuf); + i++; + } + while (vars[i].name); +} + +int +cfg_get_bool (char *var) +{ + int i = 0; + + do + { + if (!strcasecmp (var, vars[i].name)) + { + return *((int *) &prefs + vars[i].offset); + } + i++; + } + while (vars[i].name); + + return -1; +} + +int +cmd_set (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int wild = FALSE; + int or = FALSE; + int off = FALSE; + int quiet = FALSE; + int erase = FALSE; + int i = 0, finds = 0, found; + int idx = 2; + char *var, *val; + + if (strcasecmp (word[2], "-e") == 0) + { + idx++; + erase = TRUE; + } + + /* turn a bit OFF */ + if (strcasecmp (word[idx], "-off") == 0) + { + idx++; + off = TRUE; + } + + /* turn a bit ON */ + if (strcasecmp (word[idx], "-or") == 0 || strcasecmp (word[idx], "-on") == 0) + { + idx++; + or = TRUE; + } + + if (strcasecmp (word[idx], "-quiet") == 0) + { + idx++; + quiet = TRUE; + } + + var = word[idx]; + val = word_eol[idx+1]; + + if (!*var) + { + set_list (sess, tbuf); + return TRUE; + } + + if ((strchr (var, '*') || strchr (var, '?')) && !*val) + wild = TRUE; + + if (*val == '=') + val++; + + do + { + if (wild) + found = !match (var, vars[i].name); + else + found = strcasecmp (var, vars[i].name); + + if (found == 0) + { + finds++; + switch (vars[i].type) + { + case TYPE_STR: + if (erase || *val) + { + strncpy ((char *) &prefs + vars[i].offset, val, vars[i].len); + ((char *) &prefs)[vars[i].offset + vars[i].len - 1] = 0; + if (!quiet) + PrintTextf (sess, "%s set to: %s\n", var, (char *) &prefs + vars[i].offset); + } else + { + set_showval (sess, &vars[i], tbuf); + } + break; + case TYPE_INT: + case TYPE_BOOL: + if (*val) + { + if (vars[i].type == TYPE_BOOL) + { + if (atoi (val)) + *((int *) &prefs + vars[i].offset) = 1; + else + *((int *) &prefs + vars[i].offset) = 0; + if (!strcasecmp (val, "YES") || !strcasecmp (val, "ON")) + *((int *) &prefs + vars[i].offset) = 1; + if (!strcasecmp (val, "NO") || !strcasecmp (val, "OFF")) + *((int *) &prefs + vars[i].offset) = 0; + } else + { + if (or) + *((int *) &prefs + vars[i].offset) |= atoi (val); + else if (off) + *((int *) &prefs + vars[i].offset) &= ~(atoi (val)); + else + *((int *) &prefs + vars[i].offset) = atoi (val); + } + if (!quiet) + PrintTextf (sess, "%s set to: %d\n", var, + *((int *) &prefs + vars[i].offset)); + } else + { + set_showval (sess, &vars[i], tbuf); + } + break; + } + } + i++; + } + while (vars[i].name); + + if (!finds && !quiet) + PrintText (sess, "No such variable.\n"); + + return TRUE; +} + +int +xchat_open_file (char *file, int flags, int mode, int xof_flags) +{ + char buf[1024]; + + if (xof_flags & XOF_FULLPATH) + { + if (xof_flags & XOF_DOMODE) + return open (file, flags | OFLAGS, mode); + else + return open (file, flags | OFLAGS); + } + + snprintf (buf, sizeof (buf), "%s/%s", get_xdir_fs (), file); + if (xof_flags & XOF_DOMODE) + return open (buf, flags | OFLAGS, mode); + else + return open (buf, flags | OFLAGS); +} + +FILE * +xchat_fopen_file (const char *file, const char *mode, int xof_flags) +{ + char buf[1024]; + + if (xof_flags & XOF_FULLPATH) + return fopen (file, mode); + + snprintf (buf, sizeof (buf), "%s/%s", get_xdir_fs (), file); + return fopen (buf, mode); +} diff --git a/xchat-2.8.8/src/common/cfgfiles.h b/xchat-2.8.8/src/common/cfgfiles.h new file mode 100644 index 0000000..984b947 --- /dev/null +++ b/xchat-2.8.8/src/common/cfgfiles.h @@ -0,0 +1,55 @@ +/* cfgfiles.h */ + +#ifndef XCHAT_CFGFILES_H +#define XCHAT_CFGFILES_H + +#include "xchat.h" + +extern char *xdir_fs; +extern char *xdir_utf; + +char *cfg_get_str (char *cfg, char *var, char *dest, int dest_len); +int cfg_get_bool (char *var); +int cfg_get_int_with_result (char *cfg, char *var, int *result); +int cfg_get_int (char *cfg, char *var); +int cfg_put_int (int fh, int value, char *var); +int cfg_get_color (char *cfg, char *var, int *r, int *g, int *b); +int cfg_put_color (int fh, int r, int g, int b, char *var); +char *get_xdir_fs (void); +char *get_xdir_utf8 (void); +void load_config (void); +int save_config (void); +void list_free (GSList ** list); +void list_loadconf (char *file, GSList ** list, char *defaultconf); +int list_delentry (GSList ** list, char *name); +void list_addentry (GSList ** list, char *cmd, char *name); +int cmd_set (session *sess, char *tbuf, char *word[], char *word_eol[]); +int xchat_open_file (char *file, int flags, int mode, int xof_flags); +FILE *xchat_fopen_file (const char *file, const char *mode, int xof_flags); +#define XOF_DOMODE 1 +#define XOF_FULLPATH 2 + +#define STRUCT_OFFSET_STR(type,field) \ +( (unsigned int) (((char *) (&(((type *) NULL)->field)))- ((char *) NULL)) ) + +#define STRUCT_OFFSET_INT(type,field) \ +( (unsigned int) (((int *) (&(((type *) NULL)->field)))- ((int *) NULL)) ) + +#define P_OFFSET(field) STRUCT_OFFSET_STR(struct xchatprefs, field),sizeof(prefs.field) +#define P_OFFSETNL(field) STRUCT_OFFSET_STR(struct xchatprefs, field) +#define P_OFFINT(field) STRUCT_OFFSET_INT(struct xchatprefs, field),0 +#define P_OFFINTNL(field) STRUCT_OFFSET_INT(struct xchatprefs, field) + +struct prefs +{ + char *name; + unsigned short offset; + unsigned short len; + unsigned short type; +}; + +#define TYPE_STR 0 +#define TYPE_INT 1 +#define TYPE_BOOL 2 + +#endif diff --git a/xchat-2.8.8/src/common/chanopt.c b/xchat-2.8.8/src/common/chanopt.c new file mode 100644 index 0000000..a4fd8fa --- /dev/null +++ b/xchat-2.8.8/src/common/chanopt.c @@ -0,0 +1,431 @@ +/* per-channel/dialog settings :: /CHANOPT */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <unistd.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <errno.h> + +#include "xchat.h" + +#include "cfgfiles.h" +#include "server.h" +#include "text.h" +#include "util.h" +#include "xchatc.h" + + +static GSList *chanopt_list = NULL; +static gboolean chanopt_open = FALSE; +static gboolean chanopt_changed = FALSE; + + +typedef struct +{ + char *name; + char *alias; /* old names from 2.8.4 */ + int offset; +} channel_options; + +#define S_F(xx) STRUCT_OFFSET_STR(struct session,xx) + +static const channel_options chanopt[] = +{ + {"alert_beep", "BEEP", S_F(alert_beep)}, + {"alert_taskbar", NULL, S_F(alert_taskbar)}, + {"alert_tray", "TRAY", S_F(alert_tray)}, + + {"text_hidejoinpart", "CONFMODE", S_F(text_hidejoinpart)}, + {"text_logging", NULL, S_F(text_logging)}, + {"text_scrollback", NULL, S_F(text_scrollback)}, +}; + +#undef S_F + +static char * +chanopt_value (guint8 val) +{ + switch (val) + { + case SET_OFF: + return "OFF"; + case SET_ON: + return "ON"; + default: + return "{unset}"; + } +} + +/* handle the /CHANOPT command */ + +int +chanopt_command (session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int dots, i = 0, j, p = 0; + guint8 val; + int offset = 2; + char *find; + gboolean quiet = FALSE; + int newval = -1; + + if (!strcmp (word[2], "-quiet")) + { + quiet = TRUE; + offset++; + } + + find = word[offset++]; + + if (word[offset][0]) + { + if (!strcasecmp (word[offset], "ON")) + newval = 1; + else if (!strcasecmp (word[offset], "OFF")) + newval = 0; + else if (word[offset][0] == 'u') + newval = SET_DEFAULT; + else + newval = atoi (word[offset]); + } + + if (!quiet) + PrintTextf (sess, "\002Network\002: %s \002Channel\002: %s\n", + sess->server->network ? server_get_network (sess->server, TRUE) : _("<none>"), + sess->channel[0] ? sess->channel : _("<none>")); + + while (i < sizeof (chanopt) / sizeof (channel_options)) + { + if (find[0] == 0 || match (find, chanopt[i].name) || (chanopt[i].alias && match (find, chanopt[i].alias))) + { + if (newval != -1) /* set new value */ + { + *(guint8 *)G_STRUCT_MEMBER_P(sess, chanopt[i].offset) = newval; + } + + if (!quiet) /* print value */ + { + strcpy (tbuf, chanopt[i].name); + p = strlen (tbuf); + + tbuf[p++] = 3; + tbuf[p++] = '2'; + + dots = 20 - strlen (chanopt[i].name); + + for (j = 0; j < dots; j++) + tbuf[p++] = '.'; + tbuf[p++] = 0; + + val = G_STRUCT_MEMBER (guint8, sess, chanopt[i].offset); + PrintTextf (sess, "%s\0033:\017 %s", tbuf, chanopt_value (val)); + } + } + i++; + } + + return TRUE; +} + +/* is a per-channel setting set? Or is it UNSET and + * the global version is set? */ + +gboolean +chanopt_is_set (unsigned int global, guint8 per_chan_setting) +{ + if (per_chan_setting == SET_DEFAULT) + return global; + + return per_chan_setting; +} + +/* additive version */ + +gboolean +chanopt_is_set_a (unsigned int global, guint8 per_chan_setting) +{ + if (per_chan_setting == SET_DEFAULT) + return global; + + return per_chan_setting || global; +} + +/* === below is LOADING/SAVING stuff only === */ + +typedef struct +{ + /* Per-Channel Alerts */ + /* use a byte, because we need a pointer to each element */ + guint8 alert_beep; + guint8 alert_taskbar; + guint8 alert_tray; + + /* Per-Channel Settings */ + guint8 text_hidejoinpart; + guint8 text_logging; + guint8 text_scrollback; + + char *network; + char *channel; + +} chanopt_in_memory; + + +static chanopt_in_memory * +chanopt_find (char *network, char *channel, gboolean add_new) +{ + GSList *list; + chanopt_in_memory *co; + int i; + + for (list = chanopt_list; list; list = list->next) + { + co = list->data; + if (!strcasecmp (co->channel, channel) && + !strcasecmp (co->network, network)) + return co; + } + + if (!add_new) + return NULL; + + /* allocate a new one */ + co = g_malloc0 (sizeof (chanopt_in_memory)); + co->channel = g_strdup (channel); + co->network = g_strdup (network); + + /* set all values to SET_DEFAULT */ + i = 0; + while (i < sizeof (chanopt) / sizeof (channel_options)) + { + *(guint8 *)G_STRUCT_MEMBER_P(co, chanopt[i].offset) = SET_DEFAULT; + i++; + } + + chanopt_list = g_slist_prepend (chanopt_list, co); + chanopt_changed = TRUE; + + return co; +} + +static void +chanopt_add_opt (chanopt_in_memory *co, char *var, int new_value) +{ + int i; + + i = 0; + while (i < sizeof (chanopt) / sizeof (channel_options)) + { + if (!strcmp (var, chanopt[i].name)) + { + *(guint8 *)G_STRUCT_MEMBER_P(co, chanopt[i].offset) = new_value; + + } + i++; + } +} + +/* load chanopt.conf from disk into our chanopt_list GSList */ + +static void +chanopt_load_all (void) +{ + int fh; + char buf[256]; + char *eq; + char *network = NULL; + chanopt_in_memory *current = NULL; + + /* 1. load the old file into our GSList */ + fh = xchat_open_file ("chanopt.conf", O_RDONLY, 0, 0); + if (fh != -1) + { + while (waitline (fh, buf, sizeof buf, FALSE) != -1) + { + eq = strchr (buf, '='); + if (!eq) + continue; + eq[0] = 0; + + if (eq != buf && eq[-1] == ' ') + eq[-1] = 0; + + if (!strcmp (buf, "network")) + { + g_free (network); + network = g_strdup (eq + 2); + } + else if (!strcmp (buf, "channel")) + { + current = chanopt_find (network, eq + 2, TRUE); + chanopt_changed = FALSE; + } + else + { + if (current) + chanopt_add_opt (current, buf, atoi (eq + 2)); + } + + } + close (fh); + g_free (network); + } +} + +void +chanopt_load (session *sess) +{ + int i; + guint8 val; + chanopt_in_memory *co; + char *network; + + if (sess->channel[0] == 0) + return; + + network = server_get_network (sess->server, FALSE); + if (!network) + return; + + if (!chanopt_open) + { + chanopt_open = TRUE; + chanopt_load_all (); + } + + co = chanopt_find (network, sess->channel, FALSE); + if (!co) + return; + + /* fill in all the sess->xxxxx fields */ + i = 0; + while (i < sizeof (chanopt) / sizeof (channel_options)) + { + val = G_STRUCT_MEMBER(guint8, co, chanopt[i].offset); + *(guint8 *)G_STRUCT_MEMBER_P(sess, chanopt[i].offset) = val; + i++; + } +} + +void +chanopt_save (session *sess) +{ + int i; + guint8 vals; + guint8 valm; + chanopt_in_memory *co; + char *network; + + if (sess->channel[0] == 0) + return; + + network = server_get_network (sess->server, FALSE); + if (!network) + return; + + /* 2. reconcile sess with what we loaded from disk */ + + co = chanopt_find (network, sess->channel, TRUE); + + i = 0; + while (i < sizeof (chanopt) / sizeof (channel_options)) + { + vals = G_STRUCT_MEMBER(guint8, sess, chanopt[i].offset); + valm = G_STRUCT_MEMBER(guint8, co, chanopt[i].offset); + + if (vals != valm) + { + *(guint8 *)G_STRUCT_MEMBER_P(co, chanopt[i].offset) = vals; + chanopt_changed = TRUE; + } + + i++; + } +} + +static void +chanopt_save_one_channel (chanopt_in_memory *co, int fh) +{ + int i; + char buf[256]; + guint8 val; + + snprintf (buf, sizeof (buf), "%s = %s\n", "network", co->network); + write (fh, buf, strlen (buf)); + + snprintf (buf, sizeof (buf), "%s = %s\n", "channel", co->channel); + write (fh, buf, strlen (buf)); + + i = 0; + while (i < sizeof (chanopt) / sizeof (channel_options)) + { + val = G_STRUCT_MEMBER (guint8, co, chanopt[i].offset); + if (val != SET_DEFAULT) + { + snprintf (buf, sizeof (buf), "%s = %d\n", chanopt[i].name, val); + write (fh, buf, strlen (buf)); + } + i++; + } +} + +void +chanopt_save_all (void) +{ + int i; + int num_saved; + int fh; + GSList *list; + chanopt_in_memory *co; + guint8 val; + + if (!chanopt_list || !chanopt_changed) + { + return; + } + + fh = xchat_open_file ("chanopt.conf", O_TRUNC | O_WRONLY | O_CREAT, 0600, XOF_DOMODE); + if (fh == -1) + { + return; + } + + for (num_saved = 0, list = chanopt_list; list; list = list->next) + { + co = list->data; + + i = 0; + while (i < sizeof (chanopt) / sizeof (channel_options)) + { + val = G_STRUCT_MEMBER (guint8, co, chanopt[i].offset); + /* not using global/default setting, must save */ + if (val != SET_DEFAULT) + { + if (num_saved != 0) + write (fh, "\n", 1); + + chanopt_save_one_channel (co, fh); + num_saved++; + goto cont; + } + i++; + } + +cont: + g_free (co->network); + g_free (co->channel); + g_free (co); + } + + close (fh); + + /* we're quiting, no need to free */ + + /*g_slist_free (chanopt_list); + chanopt_list = NULL; + + chanopt_open = FALSE; + chanopt_changed = FALSE;*/ +} diff --git a/xchat-2.8.8/src/common/chanopt.h b/xchat-2.8.8/src/common/chanopt.h new file mode 100644 index 0000000..90ca86c --- /dev/null +++ b/xchat-2.8.8/src/common/chanopt.h @@ -0,0 +1,6 @@ +int chanopt_command (session *sess, char *tbuf, char *word[], char *word_eol[]); +gboolean chanopt_is_set (unsigned int global, guint8 per_chan_setting); +gboolean chanopt_is_set_a (unsigned int global, guint8 per_chan_setting); +void chanopt_save_all (void); +void chanopt_save (session *sess); +void chanopt_load (session *sess); diff --git a/xchat-2.8.8/src/common/ctcp.c b/xchat-2.8.8/src/common/ctcp.c new file mode 100644 index 0000000..574cda7 --- /dev/null +++ b/xchat-2.8.8/src/common/ctcp.c @@ -0,0 +1,191 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <string.h> +#include <unistd.h> +#include <stdlib.h> + +#include "xchat.h" +#include "cfgfiles.h" +#include "util.h" +#include "modes.h" +#include "outbound.h" +#include "ignore.h" +#include "inbound.h" +#include "dcc.h" +#include "text.h" +#include "ctcp.h" +#include "server.h" +#include "xchatc.h" + + +static void +ctcp_reply (session *sess, char *nick, char *word[], char *word_eol[], + char *conf) +{ + char tbuf[4096]; /* can receive 2048 from IRC, so this is enough */ + + conf = strdup (conf); + /* process %C %B etc */ + check_special_chars (conf, TRUE); + auto_insert (tbuf, sizeof (tbuf), conf, word, word_eol, "", "", word_eol[5], + server_get_network (sess->server, TRUE), "", "", nick); + free (conf); + handle_command (sess, tbuf, FALSE); +} + +static int +ctcp_check (session *sess, char *nick, char *word[], char *word_eol[], + char *ctcp) +{ + int ret = 0; + char *po; + struct popup *pop; + GSList *list = ctcp_list; + + po = strchr (ctcp, '\001'); + if (po) + *po = 0; + + po = strchr (word_eol[5], '\001'); + if (po) + *po = 0; + + while (list) + { + pop = (struct popup *) list->data; + if (!strcasecmp (ctcp, pop->name)) + { + ctcp_reply (sess, nick, word, word_eol, pop->cmd); + ret = 1; + } + list = list->next; + } + return ret; +} + +void +ctcp_handle (session *sess, char *to, char *nick, char *ip, + char *msg, char *word[], char *word_eol[], int id) +{ + char *po; + session *chansess; + server *serv = sess->server; + char outbuf[1024]; + int ctcp_offset = 2; + + if (serv->have_idmsg && (word[4][1] == '+' || word[4][1] == '-') ) + ctcp_offset = 3; + + /* consider DCC to be different from other CTCPs */ + if (!strncasecmp (msg, "DCC", 3)) + { + /* but still let CTCP replies override it */ + if (!ctcp_check (sess, nick, word, word_eol, word[4] + ctcp_offset)) + { + if (!ignore_check (word[1], IG_DCC)) + handle_dcc (sess, nick, word, word_eol); + } + return; + } + + /* consider ACTION to be different from other CTCPs. Check + ignore as if it was a PRIV/CHAN. */ + if (!strncasecmp (msg, "ACTION ", 7)) + { + if (is_channel (serv, to)) + { + /* treat a channel action as a CHAN */ + if (ignore_check (word[1], IG_CHAN)) + return; + } else + { + /* treat a private action as a PRIV */ + if (ignore_check (word[1], IG_PRIV)) + return; + } + + /* but still let CTCP replies override it */ + if (ctcp_check (sess, nick, word, word_eol, word[4] + ctcp_offset)) + goto generic; + + inbound_action (sess, to, nick, ip, msg + 7, FALSE, id); + return; + } + + if (ignore_check (word[1], IG_CTCP)) + return; + + if (!strcasecmp (msg, "VERSION") && !prefs.hidever) + { + snprintf (outbuf, sizeof (outbuf), "VERSION xchat "PACKAGE_VERSION" %s", + get_cpu_str ()); + serv->p_nctcp (serv, nick, outbuf); + } + + if (!ctcp_check (sess, nick, word, word_eol, word[4] + ctcp_offset)) + { + if (!strncasecmp (msg, "SOUND", 5)) + { + po = strchr (word[5], '\001'); + if (po) + po[0] = 0; + + if (is_channel (sess->server, to)) + { + chansess = find_channel (sess->server, to); + if (!chansess) + chansess = sess; + + EMIT_SIGNAL (XP_TE_CTCPSNDC, chansess, word[5], + nick, to, NULL, 0); + } else + { + EMIT_SIGNAL (XP_TE_CTCPSND, sess->server->front_session, word[5], + nick, NULL, NULL, 0); + } + + /* don't let IRCers specify path */ +#ifdef WIN32 + if (strchr (word[5], '/') == NULL && strchr (word[5], '\\') == NULL) +#else + if (strchr (word[5], '/') == NULL) +#endif + sound_play (word[5], TRUE); + return; + } + } + +generic: + po = strchr (msg, '\001'); + if (po) + po[0] = 0; + + if (!is_channel (sess->server, to)) + { + EMIT_SIGNAL (XP_TE_CTCPGEN, sess->server->front_session, msg, nick, + NULL, NULL, 0); + } else + { + chansess = find_channel (sess->server, to); + if (!chansess) + chansess = sess; + EMIT_SIGNAL (XP_TE_CTCPGENC, chansess, msg, nick, to, NULL, 0); + } +} diff --git a/xchat-2.8.8/src/common/ctcp.h b/xchat-2.8.8/src/common/ctcp.h new file mode 100644 index 0000000..9acd80e --- /dev/null +++ b/xchat-2.8.8/src/common/ctcp.h @@ -0,0 +1,6 @@ +#ifndef XCHAT_CTCP_H +#define XCHAT_CTCP_H + +void ctcp_handle (session *sess, char *to, char *nick, char *ip, char *msg, char *word[], char *word_eol[], int id); + +#endif diff --git a/xchat-2.8.8/src/common/dbus/.deps/dbus-client.Po b/xchat-2.8.8/src/common/dbus/.deps/dbus-client.Po new file mode 100644 index 0000000..30ffe1f --- /dev/null +++ b/xchat-2.8.8/src/common/dbus/.deps/dbus-client.Po @@ -0,0 +1,737 @@ +dbus-client.o: dbus-client.c /usr/include/stdc-predef.h \ + /usr/include/dbus-1.0/dbus/dbus-glib.h \ + /usr/include/glib-2.0/glib-object.h \ + /usr/include/glib-2.0/gobject/gbinding.h /usr/include/glib-2.0/glib.h \ + /usr/include/glib-2.0/glib/galloca.h /usr/include/glib-2.0/glib/gtypes.h \ + /usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h \ + /usr/include/glib-2.0/glib/gmacros.h \ + /usr/lib/gcc/x86_64-linux-gnu/8/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/8/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/8/include-fixed/syslimits.h \ + /usr/include/limits.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-linux-gnu/8/include/float.h \ + /usr/include/glib-2.0/glib/gversionmacros.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/glib-2.0/glib/garray.h \ + /usr/include/glib-2.0/glib/gasyncqueue.h \ + /usr/include/glib-2.0/glib/gthread.h \ + /usr/include/glib-2.0/glib/gatomic.h /usr/include/glib-2.0/glib/gerror.h \ + /usr/lib/gcc/x86_64-linux-gnu/8/include/stdarg.h \ + /usr/include/glib-2.0/glib/gquark.h /usr/include/glib-2.0/glib/gutils.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/include/glib-2.0/glib/gbacktrace.h /usr/include/signal.h \ + /usr/include/x86_64-linux-gnu/bits/signum.h \ + /usr/include/x86_64-linux-gnu/bits/signum-generic.h \ + /usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-arch.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-consts.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h \ + /usr/include/x86_64-linux-gnu/bits/sigevent-consts.h \ + /usr/include/x86_64-linux-gnu/bits/sigaction.h \ + /usr/include/x86_64-linux-gnu/bits/sigcontext.h \ + /usr/include/x86_64-linux-gnu/bits/types/stack_t.h \ + /usr/include/x86_64-linux-gnu/sys/ucontext.h \ + /usr/include/x86_64-linux-gnu/bits/sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/ss_flags.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/sigthread.h \ + /usr/include/glib-2.0/glib/gbase64.h \ + /usr/include/glib-2.0/glib/gbitlock.h \ + /usr/include/glib-2.0/glib/gbookmarkfile.h \ + /usr/include/glib-2.0/glib/gbytes.h \ + /usr/include/glib-2.0/glib/gcharset.h \ + /usr/include/glib-2.0/glib/gchecksum.h \ + /usr/include/glib-2.0/glib/gconvert.h \ + /usr/include/glib-2.0/glib/gdataset.h /usr/include/glib-2.0/glib/gdate.h \ + /usr/include/glib-2.0/glib/gdatetime.h \ + /usr/include/glib-2.0/glib/gtimezone.h /usr/include/glib-2.0/glib/gdir.h \ + /usr/include/dirent.h /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/glib-2.0/glib/genviron.h \ + /usr/include/glib-2.0/glib/gfileutils.h \ + /usr/include/glib-2.0/glib/ggettext.h /usr/include/glib-2.0/glib/ghash.h \ + /usr/include/glib-2.0/glib/glist.h /usr/include/glib-2.0/glib/gmem.h \ + /usr/include/glib-2.0/glib/gnode.h /usr/include/glib-2.0/glib/ghmac.h \ + /usr/include/glib-2.0/glib/gchecksum.h \ + /usr/include/glib-2.0/glib/ghook.h \ + /usr/include/glib-2.0/glib/ghostutils.h \ + /usr/include/glib-2.0/glib/giochannel.h \ + /usr/include/glib-2.0/glib/gmain.h /usr/include/glib-2.0/glib/gpoll.h \ + /usr/include/glib-2.0/glib/gslist.h /usr/include/glib-2.0/glib/gstring.h \ + /usr/include/glib-2.0/glib/gunicode.h \ + /usr/include/glib-2.0/glib/gkeyfile.h \ + /usr/include/glib-2.0/glib/gmappedfile.h \ + /usr/include/glib-2.0/glib/gmarkup.h \ + /usr/include/glib-2.0/glib/gmessages.h \ + /usr/include/glib-2.0/glib/gvariant.h \ + /usr/include/glib-2.0/glib/gvarianttype.h \ + /usr/include/glib-2.0/glib/goption.h \ + /usr/include/glib-2.0/glib/gpattern.h \ + /usr/include/glib-2.0/glib/gprimes.h /usr/include/glib-2.0/glib/gqsort.h \ + /usr/include/glib-2.0/glib/gqueue.h /usr/include/glib-2.0/glib/grand.h \ + /usr/include/glib-2.0/glib/gregex.h \ + /usr/include/glib-2.0/glib/gscanner.h \ + /usr/include/glib-2.0/glib/gsequence.h \ + /usr/include/glib-2.0/glib/gshell.h /usr/include/glib-2.0/glib/gslice.h \ + /usr/include/glib-2.0/glib/gspawn.h \ + /usr/include/glib-2.0/glib/gstrfuncs.h \ + /usr/include/glib-2.0/glib/gstringchunk.h \ + /usr/include/glib-2.0/glib/gtestutils.h /usr/include/string.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/glib-2.0/glib/gthreadpool.h \ + /usr/include/glib-2.0/glib/gtimer.h \ + /usr/include/glib-2.0/glib/gtrashstack.h \ + /usr/include/glib-2.0/glib/gtree.h \ + /usr/include/glib-2.0/glib/gurifuncs.h \ + /usr/include/glib-2.0/glib/guuid.h /usr/include/glib-2.0/glib/gversion.h \ + /usr/include/glib-2.0/glib/deprecated/gallocator.h \ + /usr/include/glib-2.0/glib/deprecated/gcache.h \ + /usr/include/glib-2.0/glib/deprecated/gcompletion.h \ + /usr/include/glib-2.0/glib/deprecated/gmain.h \ + /usr/include/glib-2.0/glib/deprecated/grel.h \ + /usr/include/glib-2.0/glib/deprecated/gthread.h /usr/include/pthread.h \ + /usr/include/sched.h /usr/include/x86_64-linux-gnu/bits/sched.h \ + /usr/include/x86_64-linux-gnu/bits/cpu-set.h \ + /usr/include/x86_64-linux-gnu/bits/setjmp.h \ + /usr/include/glib-2.0/glib/glib-autocleanups.h \ + /usr/include/glib-2.0/gobject/gobject.h \ + /usr/include/glib-2.0/gobject/gtype.h \ + /usr/include/glib-2.0/gobject/gvalue.h \ + /usr/include/glib-2.0/gobject/gparam.h \ + /usr/include/glib-2.0/gobject/gclosure.h \ + /usr/include/glib-2.0/gobject/gsignal.h \ + /usr/include/glib-2.0/gobject/gmarshal.h \ + /usr/include/glib-2.0/gobject/gboxed.h \ + /usr/include/glib-2.0/gobject/glib-types.h \ + /usr/include/glib-2.0/gobject/genums.h \ + /usr/include/glib-2.0/gobject/gparamspecs.h \ + /usr/include/glib-2.0/gobject/gsourceclosure.h \ + /usr/include/glib-2.0/gobject/gtypemodule.h \ + /usr/include/glib-2.0/gobject/gtypeplugin.h \ + /usr/include/glib-2.0/gobject/gvaluearray.h \ + /usr/include/glib-2.0/gobject/gvaluetypes.h \ + /usr/include/glib-2.0/gobject/gobject-autocleanups.h \ + /usr/include/dbus-1.0/dbus/dbus-shared.h \ + /usr/include/dbus-1.0/dbus/dbus-gtype-specialized.h \ + /usr/include/dbus-1.0/dbus/dbus-gvalue-parse-variant.h dbus-client.h \ + ../xchat.h ../../../config.h ../history.h /usr/include/openssl/ssl.h \ + /usr/include/openssl/e_os2.h \ + /usr/include/x86_64-linux-gnu/openssl/opensslconf.h \ + /usr/include/openssl/opensslv.h /usr/include/inttypes.h \ + /usr/lib/gcc/x86_64-linux-gnu/8/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \ + /usr/include/openssl/comp.h /usr/include/openssl/crypto.h \ + /usr/include/stdio.h /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/libio.h \ + /usr/include/x86_64-linux-gnu/bits/_G_config.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h \ + /usr/include/openssl/safestack.h /usr/include/openssl/stack.h \ + /usr/include/openssl/ossl_typ.h /usr/include/openssl/cryptoerr.h \ + /usr/include/openssl/symhacks.h /usr/include/openssl/comperr.h \ + /usr/include/openssl/bio.h /usr/include/openssl/bioerr.h \ + /usr/include/openssl/x509.h /usr/include/openssl/buffer.h \ + /usr/include/openssl/buffererr.h /usr/include/openssl/evp.h \ + /usr/include/openssl/evperr.h /usr/include/openssl/objects.h \ + /usr/include/openssl/obj_mac.h /usr/include/openssl/asn1.h \ + /usr/include/openssl/asn1err.h /usr/include/openssl/bn.h \ + /usr/include/openssl/bnerr.h /usr/include/openssl/objectserr.h \ + /usr/include/openssl/ec.h /usr/include/openssl/ecerr.h \ + /usr/include/openssl/rsa.h /usr/include/openssl/rsaerr.h \ + /usr/include/openssl/dsa.h /usr/include/openssl/dh.h \ + /usr/include/openssl/dherr.h /usr/include/openssl/dsaerr.h \ + /usr/include/openssl/sha.h /usr/include/openssl/x509err.h \ + /usr/include/openssl/x509_vfy.h /usr/include/openssl/lhash.h \ + /usr/include/openssl/pkcs7.h /usr/include/openssl/pkcs7err.h \ + /usr/include/openssl/pem.h /usr/include/openssl/pemerr.h \ + /usr/include/openssl/hmac.h /usr/include/openssl/async.h \ + /usr/include/openssl/asyncerr.h /usr/include/openssl/ct.h \ + /usr/include/openssl/cterr.h /usr/include/openssl/sslerr.h \ + /usr/include/openssl/ssl2.h /usr/include/openssl/ssl3.h \ + /usr/include/openssl/tls1.h /usr/include/openssl/dtls1.h \ + /usr/include/openssl/srtp.h /usr/include/libintl.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h ../xchatc.h + +/usr/include/stdc-predef.h: + +/usr/include/dbus-1.0/dbus/dbus-glib.h: + +/usr/include/glib-2.0/glib-object.h: + +/usr/include/glib-2.0/gobject/gbinding.h: + +/usr/include/glib-2.0/glib.h: + +/usr/include/glib-2.0/glib/galloca.h: + +/usr/include/glib-2.0/glib/gtypes.h: + +/usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h: + +/usr/include/glib-2.0/glib/gmacros.h: + +/usr/lib/gcc/x86_64-linux-gnu/8/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/8/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/8/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-linux-gnu/8/include/float.h: + +/usr/include/glib-2.0/glib/gversionmacros.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/glib-2.0/glib/garray.h: + +/usr/include/glib-2.0/glib/gasyncqueue.h: + +/usr/include/glib-2.0/glib/gthread.h: + +/usr/include/glib-2.0/glib/gatomic.h: + +/usr/include/glib-2.0/glib/gerror.h: + +/usr/lib/gcc/x86_64-linux-gnu/8/include/stdarg.h: + +/usr/include/glib-2.0/glib/gquark.h: + +/usr/include/glib-2.0/glib/gutils.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/glib-2.0/glib/gbacktrace.h: + +/usr/include/signal.h: + +/usr/include/x86_64-linux-gnu/bits/signum.h: + +/usr/include/x86_64-linux-gnu/bits/signum-generic.h: + +/usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-arch.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-consts.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigval_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h: + +/usr/include/x86_64-linux-gnu/bits/sigevent-consts.h: + +/usr/include/x86_64-linux-gnu/bits/sigaction.h: + +/usr/include/x86_64-linux-gnu/bits/sigcontext.h: + +/usr/include/x86_64-linux-gnu/bits/types/stack_t.h: + +/usr/include/x86_64-linux-gnu/sys/ucontext.h: + +/usr/include/x86_64-linux-gnu/bits/sigstack.h: + +/usr/include/x86_64-linux-gnu/bits/ss_flags.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h: + +/usr/include/x86_64-linux-gnu/bits/sigthread.h: + +/usr/include/glib-2.0/glib/gbase64.h: + +/usr/include/glib-2.0/glib/gbitlock.h: + +/usr/include/glib-2.0/glib/gbookmarkfile.h: + +/usr/include/glib-2.0/glib/gbytes.h: + +/usr/include/glib-2.0/glib/gcharset.h: + +/usr/include/glib-2.0/glib/gchecksum.h: + +/usr/include/glib-2.0/glib/gconvert.h: + +/usr/include/glib-2.0/glib/gdataset.h: + +/usr/include/glib-2.0/glib/gdate.h: + +/usr/include/glib-2.0/glib/gdatetime.h: + +/usr/include/glib-2.0/glib/gtimezone.h: + +/usr/include/glib-2.0/glib/gdir.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/glib-2.0/glib/genviron.h: + +/usr/include/glib-2.0/glib/gfileutils.h: + +/usr/include/glib-2.0/glib/ggettext.h: + +/usr/include/glib-2.0/glib/ghash.h: + +/usr/include/glib-2.0/glib/glist.h: + +/usr/include/glib-2.0/glib/gmem.h: + +/usr/include/glib-2.0/glib/gnode.h: + +/usr/include/glib-2.0/glib/ghmac.h: + +/usr/include/glib-2.0/glib/gchecksum.h: + +/usr/include/glib-2.0/glib/ghook.h: + +/usr/include/glib-2.0/glib/ghostutils.h: + +/usr/include/glib-2.0/glib/giochannel.h: + +/usr/include/glib-2.0/glib/gmain.h: + +/usr/include/glib-2.0/glib/gpoll.h: + +/usr/include/glib-2.0/glib/gslist.h: + +/usr/include/glib-2.0/glib/gstring.h: + +/usr/include/glib-2.0/glib/gunicode.h: + +/usr/include/glib-2.0/glib/gkeyfile.h: + +/usr/include/glib-2.0/glib/gmappedfile.h: + +/usr/include/glib-2.0/glib/gmarkup.h: + +/usr/include/glib-2.0/glib/gmessages.h: + +/usr/include/glib-2.0/glib/gvariant.h: + +/usr/include/glib-2.0/glib/gvarianttype.h: + +/usr/include/glib-2.0/glib/goption.h: + +/usr/include/glib-2.0/glib/gpattern.h: + +/usr/include/glib-2.0/glib/gprimes.h: + +/usr/include/glib-2.0/glib/gqsort.h: + +/usr/include/glib-2.0/glib/gqueue.h: + +/usr/include/glib-2.0/glib/grand.h: + +/usr/include/glib-2.0/glib/gregex.h: + +/usr/include/glib-2.0/glib/gscanner.h: + +/usr/include/glib-2.0/glib/gsequence.h: + +/usr/include/glib-2.0/glib/gshell.h: + +/usr/include/glib-2.0/glib/gslice.h: + +/usr/include/glib-2.0/glib/gspawn.h: + +/usr/include/glib-2.0/glib/gstrfuncs.h: + +/usr/include/glib-2.0/glib/gstringchunk.h: + +/usr/include/glib-2.0/glib/gtestutils.h: + +/usr/include/string.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/glib-2.0/glib/gthreadpool.h: + +/usr/include/glib-2.0/glib/gtimer.h: + +/usr/include/glib-2.0/glib/gtrashstack.h: + +/usr/include/glib-2.0/glib/gtree.h: + +/usr/include/glib-2.0/glib/gurifuncs.h: + +/usr/include/glib-2.0/glib/guuid.h: + +/usr/include/glib-2.0/glib/gversion.h: + +/usr/include/glib-2.0/glib/deprecated/gallocator.h: + +/usr/include/glib-2.0/glib/deprecated/gcache.h: + +/usr/include/glib-2.0/glib/deprecated/gcompletion.h: + +/usr/include/glib-2.0/glib/deprecated/gmain.h: + +/usr/include/glib-2.0/glib/deprecated/grel.h: + +/usr/include/glib-2.0/glib/deprecated/gthread.h: + +/usr/include/pthread.h: + +/usr/include/sched.h: + +/usr/include/x86_64-linux-gnu/bits/sched.h: + +/usr/include/x86_64-linux-gnu/bits/cpu-set.h: + +/usr/include/x86_64-linux-gnu/bits/setjmp.h: + +/usr/include/glib-2.0/glib/glib-autocleanups.h: + +/usr/include/glib-2.0/gobject/gobject.h: + +/usr/include/glib-2.0/gobject/gtype.h: + +/usr/include/glib-2.0/gobject/gvalue.h: + +/usr/include/glib-2.0/gobject/gparam.h: + +/usr/include/glib-2.0/gobject/gclosure.h: + +/usr/include/glib-2.0/gobject/gsignal.h: + +/usr/include/glib-2.0/gobject/gmarshal.h: + +/usr/include/glib-2.0/gobject/gboxed.h: + +/usr/include/glib-2.0/gobject/glib-types.h: + +/usr/include/glib-2.0/gobject/genums.h: + +/usr/include/glib-2.0/gobject/gparamspecs.h: + +/usr/include/glib-2.0/gobject/gsourceclosure.h: + +/usr/include/glib-2.0/gobject/gtypemodule.h: + +/usr/include/glib-2.0/gobject/gtypeplugin.h: + +/usr/include/glib-2.0/gobject/gvaluearray.h: + +/usr/include/glib-2.0/gobject/gvaluetypes.h: + +/usr/include/glib-2.0/gobject/gobject-autocleanups.h: + +/usr/include/dbus-1.0/dbus/dbus-shared.h: + +/usr/include/dbus-1.0/dbus/dbus-gtype-specialized.h: + +/usr/include/dbus-1.0/dbus/dbus-gvalue-parse-variant.h: + +dbus-client.h: + +../xchat.h: + +../../../config.h: + +../history.h: + +/usr/include/openssl/ssl.h: + +/usr/include/openssl/e_os2.h: + +/usr/include/x86_64-linux-gnu/openssl/opensslconf.h: + +/usr/include/openssl/opensslv.h: + +/usr/include/inttypes.h: + +/usr/lib/gcc/x86_64-linux-gnu/8/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h: + +/usr/include/openssl/comp.h: + +/usr/include/openssl/crypto.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/libio.h: + +/usr/include/x86_64-linux-gnu/bits/_G_config.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/openssl/safestack.h: + +/usr/include/openssl/stack.h: + +/usr/include/openssl/ossl_typ.h: + +/usr/include/openssl/cryptoerr.h: + +/usr/include/openssl/symhacks.h: + +/usr/include/openssl/comperr.h: + +/usr/include/openssl/bio.h: + +/usr/include/openssl/bioerr.h: + +/usr/include/openssl/x509.h: + +/usr/include/openssl/buffer.h: + +/usr/include/openssl/buffererr.h: + +/usr/include/openssl/evp.h: + +/usr/include/openssl/evperr.h: + +/usr/include/openssl/objects.h: + +/usr/include/openssl/obj_mac.h: + +/usr/include/openssl/asn1.h: + +/usr/include/openssl/asn1err.h: + +/usr/include/openssl/bn.h: + +/usr/include/openssl/bnerr.h: + +/usr/include/openssl/objectserr.h: + +/usr/include/openssl/ec.h: + +/usr/include/openssl/ecerr.h: + +/usr/include/openssl/rsa.h: + +/usr/include/openssl/rsaerr.h: + +/usr/include/openssl/dsa.h: + +/usr/include/openssl/dh.h: + +/usr/include/openssl/dherr.h: + +/usr/include/openssl/dsaerr.h: + +/usr/include/openssl/sha.h: + +/usr/include/openssl/x509err.h: + +/usr/include/openssl/x509_vfy.h: + +/usr/include/openssl/lhash.h: + +/usr/include/openssl/pkcs7.h: + +/usr/include/openssl/pkcs7err.h: + +/usr/include/openssl/pem.h: + +/usr/include/openssl/pemerr.h: + +/usr/include/openssl/hmac.h: + +/usr/include/openssl/async.h: + +/usr/include/openssl/asyncerr.h: + +/usr/include/openssl/ct.h: + +/usr/include/openssl/cterr.h: + +/usr/include/openssl/sslerr.h: + +/usr/include/openssl/ssl2.h: + +/usr/include/openssl/ssl3.h: + +/usr/include/openssl/tls1.h: + +/usr/include/openssl/dtls1.h: + +/usr/include/openssl/srtp.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +../xchatc.h: diff --git a/xchat-2.8.8/src/common/dbus/.deps/dbus-plugin.Po b/xchat-2.8.8/src/common/dbus/.deps/dbus-plugin.Po new file mode 100644 index 0000000..f20f056 --- /dev/null +++ b/xchat-2.8.8/src/common/dbus/.deps/dbus-plugin.Po @@ -0,0 +1,628 @@ +dbus-plugin.o: dbus-plugin.c /usr/include/stdc-predef.h ../../../config.h \ + /usr/include/dbus-1.0/dbus/dbus-glib.h \ + /usr/include/glib-2.0/glib-object.h \ + /usr/include/glib-2.0/gobject/gbinding.h /usr/include/glib-2.0/glib.h \ + /usr/include/glib-2.0/glib/galloca.h /usr/include/glib-2.0/glib/gtypes.h \ + /usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h \ + /usr/include/glib-2.0/glib/gmacros.h \ + /usr/lib/gcc/x86_64-linux-gnu/8/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/8/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/8/include-fixed/syslimits.h \ + /usr/include/limits.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h \ + /usr/include/x86_64-linux-gnu/bits/xopen_lim.h \ + /usr/include/x86_64-linux-gnu/bits/uio_lim.h \ + /usr/lib/gcc/x86_64-linux-gnu/8/include/float.h \ + /usr/include/glib-2.0/glib/gversionmacros.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/timex.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/glib-2.0/glib/garray.h \ + /usr/include/glib-2.0/glib/gasyncqueue.h \ + /usr/include/glib-2.0/glib/gthread.h \ + /usr/include/glib-2.0/glib/gatomic.h /usr/include/glib-2.0/glib/gerror.h \ + /usr/lib/gcc/x86_64-linux-gnu/8/include/stdarg.h \ + /usr/include/glib-2.0/glib/gquark.h /usr/include/glib-2.0/glib/gutils.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/include/glib-2.0/glib/gbacktrace.h /usr/include/signal.h \ + /usr/include/x86_64-linux-gnu/bits/signum.h \ + /usr/include/x86_64-linux-gnu/bits/signum-generic.h \ + /usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-arch.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-consts.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-consts-arch.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h \ + /usr/include/x86_64-linux-gnu/bits/sigevent-consts.h \ + /usr/include/x86_64-linux-gnu/bits/sigaction.h \ + /usr/include/x86_64-linux-gnu/bits/sigcontext.h \ + /usr/include/x86_64-linux-gnu/bits/types/stack_t.h \ + /usr/include/x86_64-linux-gnu/sys/ucontext.h \ + /usr/include/x86_64-linux-gnu/bits/sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/ss_flags.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/sigthread.h \ + /usr/include/glib-2.0/glib/gbase64.h \ + /usr/include/glib-2.0/glib/gbitlock.h \ + /usr/include/glib-2.0/glib/gbookmarkfile.h \ + /usr/include/glib-2.0/glib/gbytes.h \ + /usr/include/glib-2.0/glib/gcharset.h \ + /usr/include/glib-2.0/glib/gchecksum.h \ + /usr/include/glib-2.0/glib/gconvert.h \ + /usr/include/glib-2.0/glib/gdataset.h /usr/include/glib-2.0/glib/gdate.h \ + /usr/include/glib-2.0/glib/gdatetime.h \ + /usr/include/glib-2.0/glib/gtimezone.h /usr/include/glib-2.0/glib/gdir.h \ + /usr/include/dirent.h /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/glib-2.0/glib/genviron.h \ + /usr/include/glib-2.0/glib/gfileutils.h \ + /usr/include/glib-2.0/glib/ggettext.h /usr/include/glib-2.0/glib/ghash.h \ + /usr/include/glib-2.0/glib/glist.h /usr/include/glib-2.0/glib/gmem.h \ + /usr/include/glib-2.0/glib/gnode.h /usr/include/glib-2.0/glib/ghmac.h \ + /usr/include/glib-2.0/glib/gchecksum.h \ + /usr/include/glib-2.0/glib/ghook.h \ + /usr/include/glib-2.0/glib/ghostutils.h \ + /usr/include/glib-2.0/glib/giochannel.h \ + /usr/include/glib-2.0/glib/gmain.h /usr/include/glib-2.0/glib/gpoll.h \ + /usr/include/glib-2.0/glib/gslist.h /usr/include/glib-2.0/glib/gstring.h \ + /usr/include/glib-2.0/glib/gunicode.h \ + /usr/include/glib-2.0/glib/gkeyfile.h \ + /usr/include/glib-2.0/glib/gmappedfile.h \ + /usr/include/glib-2.0/glib/gmarkup.h \ + /usr/include/glib-2.0/glib/gmessages.h \ + /usr/include/glib-2.0/glib/gvariant.h \ + /usr/include/glib-2.0/glib/gvarianttype.h \ + /usr/include/glib-2.0/glib/goption.h \ + /usr/include/glib-2.0/glib/gpattern.h \ + /usr/include/glib-2.0/glib/gprimes.h /usr/include/glib-2.0/glib/gqsort.h \ + /usr/include/glib-2.0/glib/gqueue.h /usr/include/glib-2.0/glib/grand.h \ + /usr/include/glib-2.0/glib/gregex.h \ + /usr/include/glib-2.0/glib/gscanner.h \ + /usr/include/glib-2.0/glib/gsequence.h \ + /usr/include/glib-2.0/glib/gshell.h /usr/include/glib-2.0/glib/gslice.h \ + /usr/include/glib-2.0/glib/gspawn.h \ + /usr/include/glib-2.0/glib/gstrfuncs.h \ + /usr/include/glib-2.0/glib/gstringchunk.h \ + /usr/include/glib-2.0/glib/gtestutils.h /usr/include/string.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/glib-2.0/glib/gthreadpool.h \ + /usr/include/glib-2.0/glib/gtimer.h \ + /usr/include/glib-2.0/glib/gtrashstack.h \ + /usr/include/glib-2.0/glib/gtree.h \ + /usr/include/glib-2.0/glib/gurifuncs.h \ + /usr/include/glib-2.0/glib/guuid.h /usr/include/glib-2.0/glib/gversion.h \ + /usr/include/glib-2.0/glib/deprecated/gallocator.h \ + /usr/include/glib-2.0/glib/deprecated/gcache.h \ + /usr/include/glib-2.0/glib/deprecated/gcompletion.h \ + /usr/include/glib-2.0/glib/deprecated/gmain.h \ + /usr/include/glib-2.0/glib/deprecated/grel.h \ + /usr/include/glib-2.0/glib/deprecated/gthread.h /usr/include/pthread.h \ + /usr/include/sched.h /usr/include/x86_64-linux-gnu/bits/sched.h \ + /usr/include/x86_64-linux-gnu/bits/cpu-set.h \ + /usr/include/x86_64-linux-gnu/bits/setjmp.h \ + /usr/include/glib-2.0/glib/glib-autocleanups.h \ + /usr/include/glib-2.0/gobject/gobject.h \ + /usr/include/glib-2.0/gobject/gtype.h \ + /usr/include/glib-2.0/gobject/gvalue.h \ + /usr/include/glib-2.0/gobject/gparam.h \ + /usr/include/glib-2.0/gobject/gclosure.h \ + /usr/include/glib-2.0/gobject/gsignal.h \ + /usr/include/glib-2.0/gobject/gmarshal.h \ + /usr/include/glib-2.0/gobject/gboxed.h \ + /usr/include/glib-2.0/gobject/glib-types.h \ + /usr/include/glib-2.0/gobject/genums.h \ + /usr/include/glib-2.0/gobject/gparamspecs.h \ + /usr/include/glib-2.0/gobject/gsourceclosure.h \ + /usr/include/glib-2.0/gobject/gtypemodule.h \ + /usr/include/glib-2.0/gobject/gtypeplugin.h \ + /usr/include/glib-2.0/gobject/gvaluearray.h \ + /usr/include/glib-2.0/gobject/gvaluetypes.h \ + /usr/include/glib-2.0/gobject/gobject-autocleanups.h \ + /usr/include/dbus-1.0/dbus/dbus-shared.h \ + /usr/include/dbus-1.0/dbus/dbus-gtype-specialized.h \ + /usr/include/dbus-1.0/dbus/dbus-gvalue-parse-variant.h \ + /usr/include/dbus-1.0/dbus/dbus-glib-lowlevel.h \ + /usr/include/dbus-1.0/dbus/dbus.h \ + /usr/lib/x86_64-linux-gnu/dbus-1.0/include/dbus/dbus-arch-deps.h \ + /usr/include/dbus-1.0/dbus/dbus-macros.h \ + /usr/include/dbus-1.0/dbus/dbus-address.h \ + /usr/include/dbus-1.0/dbus/dbus-types.h \ + /usr/include/dbus-1.0/dbus/dbus-errors.h \ + /usr/include/dbus-1.0/dbus/dbus-protocol.h \ + /usr/include/dbus-1.0/dbus/dbus-bus.h \ + /usr/include/dbus-1.0/dbus/dbus-connection.h \ + /usr/include/dbus-1.0/dbus/dbus-memory.h \ + /usr/include/dbus-1.0/dbus/dbus-message.h \ + /usr/include/dbus-1.0/dbus/dbus-misc.h \ + /usr/include/dbus-1.0/dbus/dbus-pending-call.h \ + /usr/include/dbus-1.0/dbus/dbus-server.h \ + /usr/include/dbus-1.0/dbus/dbus-signature.h \ + /usr/include/dbus-1.0/dbus/dbus-syntax.h \ + /usr/include/dbus-1.0/dbus/dbus-threads.h \ + /usr/include/glib-2.0/glib/gi18n.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h \ + ../xchat-plugin.h remote-object-glue.h marshallers.h + +/usr/include/stdc-predef.h: + +../../../config.h: + +/usr/include/dbus-1.0/dbus/dbus-glib.h: + +/usr/include/glib-2.0/glib-object.h: + +/usr/include/glib-2.0/gobject/gbinding.h: + +/usr/include/glib-2.0/glib.h: + +/usr/include/glib-2.0/glib/galloca.h: + +/usr/include/glib-2.0/glib/gtypes.h: + +/usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h: + +/usr/include/glib-2.0/glib/gmacros.h: + +/usr/lib/gcc/x86_64-linux-gnu/8/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/8/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/8/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/x86_64-linux-gnu/bits/xopen_lim.h: + +/usr/include/x86_64-linux-gnu/bits/uio_lim.h: + +/usr/lib/gcc/x86_64-linux-gnu/8/include/float.h: + +/usr/include/glib-2.0/glib/gversionmacros.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/timex.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/glib-2.0/glib/garray.h: + +/usr/include/glib-2.0/glib/gasyncqueue.h: + +/usr/include/glib-2.0/glib/gthread.h: + +/usr/include/glib-2.0/glib/gatomic.h: + +/usr/include/glib-2.0/glib/gerror.h: + +/usr/lib/gcc/x86_64-linux-gnu/8/include/stdarg.h: + +/usr/include/glib-2.0/glib/gquark.h: + +/usr/include/glib-2.0/glib/gutils.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/glib-2.0/glib/gbacktrace.h: + +/usr/include/signal.h: + +/usr/include/x86_64-linux-gnu/bits/signum.h: + +/usr/include/x86_64-linux-gnu/bits/signum-generic.h: + +/usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-arch.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-consts.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-consts-arch.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigval_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h: + +/usr/include/x86_64-linux-gnu/bits/sigevent-consts.h: + +/usr/include/x86_64-linux-gnu/bits/sigaction.h: + +/usr/include/x86_64-linux-gnu/bits/sigcontext.h: + +/usr/include/x86_64-linux-gnu/bits/types/stack_t.h: + +/usr/include/x86_64-linux-gnu/sys/ucontext.h: + +/usr/include/x86_64-linux-gnu/bits/sigstack.h: + +/usr/include/x86_64-linux-gnu/bits/ss_flags.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h: + +/usr/include/x86_64-linux-gnu/bits/sigthread.h: + +/usr/include/glib-2.0/glib/gbase64.h: + +/usr/include/glib-2.0/glib/gbitlock.h: + +/usr/include/glib-2.0/glib/gbookmarkfile.h: + +/usr/include/glib-2.0/glib/gbytes.h: + +/usr/include/glib-2.0/glib/gcharset.h: + +/usr/include/glib-2.0/glib/gchecksum.h: + +/usr/include/glib-2.0/glib/gconvert.h: + +/usr/include/glib-2.0/glib/gdataset.h: + +/usr/include/glib-2.0/glib/gdate.h: + +/usr/include/glib-2.0/glib/gdatetime.h: + +/usr/include/glib-2.0/glib/gtimezone.h: + +/usr/include/glib-2.0/glib/gdir.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/glib-2.0/glib/genviron.h: + +/usr/include/glib-2.0/glib/gfileutils.h: + +/usr/include/glib-2.0/glib/ggettext.h: + +/usr/include/glib-2.0/glib/ghash.h: + +/usr/include/glib-2.0/glib/glist.h: + +/usr/include/glib-2.0/glib/gmem.h: + +/usr/include/glib-2.0/glib/gnode.h: + +/usr/include/glib-2.0/glib/ghmac.h: + +/usr/include/glib-2.0/glib/gchecksum.h: + +/usr/include/glib-2.0/glib/ghook.h: + +/usr/include/glib-2.0/glib/ghostutils.h: + +/usr/include/glib-2.0/glib/giochannel.h: + +/usr/include/glib-2.0/glib/gmain.h: + +/usr/include/glib-2.0/glib/gpoll.h: + +/usr/include/glib-2.0/glib/gslist.h: + +/usr/include/glib-2.0/glib/gstring.h: + +/usr/include/glib-2.0/glib/gunicode.h: + +/usr/include/glib-2.0/glib/gkeyfile.h: + +/usr/include/glib-2.0/glib/gmappedfile.h: + +/usr/include/glib-2.0/glib/gmarkup.h: + +/usr/include/glib-2.0/glib/gmessages.h: + +/usr/include/glib-2.0/glib/gvariant.h: + +/usr/include/glib-2.0/glib/gvarianttype.h: + +/usr/include/glib-2.0/glib/goption.h: + +/usr/include/glib-2.0/glib/gpattern.h: + +/usr/include/glib-2.0/glib/gprimes.h: + +/usr/include/glib-2.0/glib/gqsort.h: + +/usr/include/glib-2.0/glib/gqueue.h: + +/usr/include/glib-2.0/glib/grand.h: + +/usr/include/glib-2.0/glib/gregex.h: + +/usr/include/glib-2.0/glib/gscanner.h: + +/usr/include/glib-2.0/glib/gsequence.h: + +/usr/include/glib-2.0/glib/gshell.h: + +/usr/include/glib-2.0/glib/gslice.h: + +/usr/include/glib-2.0/glib/gspawn.h: + +/usr/include/glib-2.0/glib/gstrfuncs.h: + +/usr/include/glib-2.0/glib/gstringchunk.h: + +/usr/include/glib-2.0/glib/gtestutils.h: + +/usr/include/string.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/glib-2.0/glib/gthreadpool.h: + +/usr/include/glib-2.0/glib/gtimer.h: + +/usr/include/glib-2.0/glib/gtrashstack.h: + +/usr/include/glib-2.0/glib/gtree.h: + +/usr/include/glib-2.0/glib/gurifuncs.h: + +/usr/include/glib-2.0/glib/guuid.h: + +/usr/include/glib-2.0/glib/gversion.h: + +/usr/include/glib-2.0/glib/deprecated/gallocator.h: + +/usr/include/glib-2.0/glib/deprecated/gcache.h: + +/usr/include/glib-2.0/glib/deprecated/gcompletion.h: + +/usr/include/glib-2.0/glib/deprecated/gmain.h: + +/usr/include/glib-2.0/glib/deprecated/grel.h: + +/usr/include/glib-2.0/glib/deprecated/gthread.h: + +/usr/include/pthread.h: + +/usr/include/sched.h: + +/usr/include/x86_64-linux-gnu/bits/sched.h: + +/usr/include/x86_64-linux-gnu/bits/cpu-set.h: + +/usr/include/x86_64-linux-gnu/bits/setjmp.h: + +/usr/include/glib-2.0/glib/glib-autocleanups.h: + +/usr/include/glib-2.0/gobject/gobject.h: + +/usr/include/glib-2.0/gobject/gtype.h: + +/usr/include/glib-2.0/gobject/gvalue.h: + +/usr/include/glib-2.0/gobject/gparam.h: + +/usr/include/glib-2.0/gobject/gclosure.h: + +/usr/include/glib-2.0/gobject/gsignal.h: + +/usr/include/glib-2.0/gobject/gmarshal.h: + +/usr/include/glib-2.0/gobject/gboxed.h: + +/usr/include/glib-2.0/gobject/glib-types.h: + +/usr/include/glib-2.0/gobject/genums.h: + +/usr/include/glib-2.0/gobject/gparamspecs.h: + +/usr/include/glib-2.0/gobject/gsourceclosure.h: + +/usr/include/glib-2.0/gobject/gtypemodule.h: + +/usr/include/glib-2.0/gobject/gtypeplugin.h: + +/usr/include/glib-2.0/gobject/gvaluearray.h: + +/usr/include/glib-2.0/gobject/gvaluetypes.h: + +/usr/include/glib-2.0/gobject/gobject-autocleanups.h: + +/usr/include/dbus-1.0/dbus/dbus-shared.h: + +/usr/include/dbus-1.0/dbus/dbus-gtype-specialized.h: + +/usr/include/dbus-1.0/dbus/dbus-gvalue-parse-variant.h: + +/usr/include/dbus-1.0/dbus/dbus-glib-lowlevel.h: + +/usr/include/dbus-1.0/dbus/dbus.h: + +/usr/lib/x86_64-linux-gnu/dbus-1.0/include/dbus/dbus-arch-deps.h: + +/usr/include/dbus-1.0/dbus/dbus-macros.h: + +/usr/include/dbus-1.0/dbus/dbus-address.h: + +/usr/include/dbus-1.0/dbus/dbus-types.h: + +/usr/include/dbus-1.0/dbus/dbus-errors.h: + +/usr/include/dbus-1.0/dbus/dbus-protocol.h: + +/usr/include/dbus-1.0/dbus/dbus-bus.h: + +/usr/include/dbus-1.0/dbus/dbus-connection.h: + +/usr/include/dbus-1.0/dbus/dbus-memory.h: + +/usr/include/dbus-1.0/dbus/dbus-message.h: + +/usr/include/dbus-1.0/dbus/dbus-misc.h: + +/usr/include/dbus-1.0/dbus/dbus-pending-call.h: + +/usr/include/dbus-1.0/dbus/dbus-server.h: + +/usr/include/dbus-1.0/dbus/dbus-signature.h: + +/usr/include/dbus-1.0/dbus/dbus-syntax.h: + +/usr/include/dbus-1.0/dbus/dbus-threads.h: + +/usr/include/glib-2.0/glib/gi18n.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +../xchat-plugin.h: + +remote-object-glue.h: + +marshallers.h: diff --git a/xchat-2.8.8/src/common/dbus/.deps/example.Po b/xchat-2.8.8/src/common/dbus/.deps/example.Po new file mode 100644 index 0000000..06cd4ee --- /dev/null +++ b/xchat-2.8.8/src/common/dbus/.deps/example.Po @@ -0,0 +1,559 @@ +example.o: example.c /usr/include/stdc-predef.h ../../../config.h \ + /usr/include/dbus-1.0/dbus/dbus-glib.h \ + /usr/include/glib-2.0/glib-object.h \ + /usr/include/glib-2.0/gobject/gbinding.h /usr/include/glib-2.0/glib.h \ + /usr/include/glib-2.0/glib/galloca.h /usr/include/glib-2.0/glib/gtypes.h \ + /usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h \ + /usr/include/glib-2.0/glib/gmacros.h \ + /usr/lib/gcc/x86_64-linux-gnu/8/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/8/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/8/include-fixed/syslimits.h \ + /usr/include/limits.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h \ + /usr/include/x86_64-linux-gnu/bits/xopen_lim.h \ + /usr/include/x86_64-linux-gnu/bits/uio_lim.h \ + /usr/lib/gcc/x86_64-linux-gnu/8/include/float.h \ + /usr/include/glib-2.0/glib/gversionmacros.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/timex.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/glib-2.0/glib/garray.h \ + /usr/include/glib-2.0/glib/gasyncqueue.h \ + /usr/include/glib-2.0/glib/gthread.h \ + /usr/include/glib-2.0/glib/gatomic.h /usr/include/glib-2.0/glib/gerror.h \ + /usr/lib/gcc/x86_64-linux-gnu/8/include/stdarg.h \ + /usr/include/glib-2.0/glib/gquark.h /usr/include/glib-2.0/glib/gutils.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/include/glib-2.0/glib/gbacktrace.h /usr/include/signal.h \ + /usr/include/x86_64-linux-gnu/bits/signum.h \ + /usr/include/x86_64-linux-gnu/bits/signum-generic.h \ + /usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-arch.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-consts.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-consts-arch.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h \ + /usr/include/x86_64-linux-gnu/bits/sigevent-consts.h \ + /usr/include/x86_64-linux-gnu/bits/sigaction.h \ + /usr/include/x86_64-linux-gnu/bits/sigcontext.h \ + /usr/include/x86_64-linux-gnu/bits/types/stack_t.h \ + /usr/include/x86_64-linux-gnu/sys/ucontext.h \ + /usr/include/x86_64-linux-gnu/bits/sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/ss_flags.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/sigthread.h \ + /usr/include/glib-2.0/glib/gbase64.h \ + /usr/include/glib-2.0/glib/gbitlock.h \ + /usr/include/glib-2.0/glib/gbookmarkfile.h \ + /usr/include/glib-2.0/glib/gbytes.h \ + /usr/include/glib-2.0/glib/gcharset.h \ + /usr/include/glib-2.0/glib/gchecksum.h \ + /usr/include/glib-2.0/glib/gconvert.h \ + /usr/include/glib-2.0/glib/gdataset.h /usr/include/glib-2.0/glib/gdate.h \ + /usr/include/glib-2.0/glib/gdatetime.h \ + /usr/include/glib-2.0/glib/gtimezone.h /usr/include/glib-2.0/glib/gdir.h \ + /usr/include/dirent.h /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/glib-2.0/glib/genviron.h \ + /usr/include/glib-2.0/glib/gfileutils.h \ + /usr/include/glib-2.0/glib/ggettext.h /usr/include/glib-2.0/glib/ghash.h \ + /usr/include/glib-2.0/glib/glist.h /usr/include/glib-2.0/glib/gmem.h \ + /usr/include/glib-2.0/glib/gnode.h /usr/include/glib-2.0/glib/ghmac.h \ + /usr/include/glib-2.0/glib/gchecksum.h \ + /usr/include/glib-2.0/glib/ghook.h \ + /usr/include/glib-2.0/glib/ghostutils.h \ + /usr/include/glib-2.0/glib/giochannel.h \ + /usr/include/glib-2.0/glib/gmain.h /usr/include/glib-2.0/glib/gpoll.h \ + /usr/include/glib-2.0/glib/gslist.h /usr/include/glib-2.0/glib/gstring.h \ + /usr/include/glib-2.0/glib/gunicode.h \ + /usr/include/glib-2.0/glib/gkeyfile.h \ + /usr/include/glib-2.0/glib/gmappedfile.h \ + /usr/include/glib-2.0/glib/gmarkup.h \ + /usr/include/glib-2.0/glib/gmessages.h \ + /usr/include/glib-2.0/glib/gvariant.h \ + /usr/include/glib-2.0/glib/gvarianttype.h \ + /usr/include/glib-2.0/glib/goption.h \ + /usr/include/glib-2.0/glib/gpattern.h \ + /usr/include/glib-2.0/glib/gprimes.h /usr/include/glib-2.0/glib/gqsort.h \ + /usr/include/glib-2.0/glib/gqueue.h /usr/include/glib-2.0/glib/grand.h \ + /usr/include/glib-2.0/glib/gregex.h \ + /usr/include/glib-2.0/glib/gscanner.h \ + /usr/include/glib-2.0/glib/gsequence.h \ + /usr/include/glib-2.0/glib/gshell.h /usr/include/glib-2.0/glib/gslice.h \ + /usr/include/glib-2.0/glib/gspawn.h \ + /usr/include/glib-2.0/glib/gstrfuncs.h \ + /usr/include/glib-2.0/glib/gstringchunk.h \ + /usr/include/glib-2.0/glib/gtestutils.h /usr/include/string.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/glib-2.0/glib/gthreadpool.h \ + /usr/include/glib-2.0/glib/gtimer.h \ + /usr/include/glib-2.0/glib/gtrashstack.h \ + /usr/include/glib-2.0/glib/gtree.h \ + /usr/include/glib-2.0/glib/gurifuncs.h \ + /usr/include/glib-2.0/glib/guuid.h /usr/include/glib-2.0/glib/gversion.h \ + /usr/include/glib-2.0/glib/deprecated/gallocator.h \ + /usr/include/glib-2.0/glib/deprecated/gcache.h \ + /usr/include/glib-2.0/glib/deprecated/gcompletion.h \ + /usr/include/glib-2.0/glib/deprecated/gmain.h \ + /usr/include/glib-2.0/glib/deprecated/grel.h \ + /usr/include/glib-2.0/glib/deprecated/gthread.h /usr/include/pthread.h \ + /usr/include/sched.h /usr/include/x86_64-linux-gnu/bits/sched.h \ + /usr/include/x86_64-linux-gnu/bits/cpu-set.h \ + /usr/include/x86_64-linux-gnu/bits/setjmp.h \ + /usr/include/glib-2.0/glib/glib-autocleanups.h \ + /usr/include/glib-2.0/gobject/gobject.h \ + /usr/include/glib-2.0/gobject/gtype.h \ + /usr/include/glib-2.0/gobject/gvalue.h \ + /usr/include/glib-2.0/gobject/gparam.h \ + /usr/include/glib-2.0/gobject/gclosure.h \ + /usr/include/glib-2.0/gobject/gsignal.h \ + /usr/include/glib-2.0/gobject/gmarshal.h \ + /usr/include/glib-2.0/gobject/gboxed.h \ + /usr/include/glib-2.0/gobject/glib-types.h \ + /usr/include/glib-2.0/gobject/genums.h \ + /usr/include/glib-2.0/gobject/gparamspecs.h \ + /usr/include/glib-2.0/gobject/gsourceclosure.h \ + /usr/include/glib-2.0/gobject/gtypemodule.h \ + /usr/include/glib-2.0/gobject/gtypeplugin.h \ + /usr/include/glib-2.0/gobject/gvaluearray.h \ + /usr/include/glib-2.0/gobject/gvaluetypes.h \ + /usr/include/glib-2.0/gobject/gobject-autocleanups.h \ + /usr/include/dbus-1.0/dbus/dbus-shared.h \ + /usr/include/dbus-1.0/dbus/dbus-gtype-specialized.h \ + /usr/include/dbus-1.0/dbus/dbus-gvalue-parse-variant.h marshallers.h + +/usr/include/stdc-predef.h: + +../../../config.h: + +/usr/include/dbus-1.0/dbus/dbus-glib.h: + +/usr/include/glib-2.0/glib-object.h: + +/usr/include/glib-2.0/gobject/gbinding.h: + +/usr/include/glib-2.0/glib.h: + +/usr/include/glib-2.0/glib/galloca.h: + +/usr/include/glib-2.0/glib/gtypes.h: + +/usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h: + +/usr/include/glib-2.0/glib/gmacros.h: + +/usr/lib/gcc/x86_64-linux-gnu/8/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/8/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/8/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/x86_64-linux-gnu/bits/xopen_lim.h: + +/usr/include/x86_64-linux-gnu/bits/uio_lim.h: + +/usr/lib/gcc/x86_64-linux-gnu/8/include/float.h: + +/usr/include/glib-2.0/glib/gversionmacros.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/timex.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/glib-2.0/glib/garray.h: + +/usr/include/glib-2.0/glib/gasyncqueue.h: + +/usr/include/glib-2.0/glib/gthread.h: + +/usr/include/glib-2.0/glib/gatomic.h: + +/usr/include/glib-2.0/glib/gerror.h: + +/usr/lib/gcc/x86_64-linux-gnu/8/include/stdarg.h: + +/usr/include/glib-2.0/glib/gquark.h: + +/usr/include/glib-2.0/glib/gutils.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/glib-2.0/glib/gbacktrace.h: + +/usr/include/signal.h: + +/usr/include/x86_64-linux-gnu/bits/signum.h: + +/usr/include/x86_64-linux-gnu/bits/signum-generic.h: + +/usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-arch.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-consts.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-consts-arch.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigval_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h: + +/usr/include/x86_64-linux-gnu/bits/sigevent-consts.h: + +/usr/include/x86_64-linux-gnu/bits/sigaction.h: + +/usr/include/x86_64-linux-gnu/bits/sigcontext.h: + +/usr/include/x86_64-linux-gnu/bits/types/stack_t.h: + +/usr/include/x86_64-linux-gnu/sys/ucontext.h: + +/usr/include/x86_64-linux-gnu/bits/sigstack.h: + +/usr/include/x86_64-linux-gnu/bits/ss_flags.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h: + +/usr/include/x86_64-linux-gnu/bits/sigthread.h: + +/usr/include/glib-2.0/glib/gbase64.h: + +/usr/include/glib-2.0/glib/gbitlock.h: + +/usr/include/glib-2.0/glib/gbookmarkfile.h: + +/usr/include/glib-2.0/glib/gbytes.h: + +/usr/include/glib-2.0/glib/gcharset.h: + +/usr/include/glib-2.0/glib/gchecksum.h: + +/usr/include/glib-2.0/glib/gconvert.h: + +/usr/include/glib-2.0/glib/gdataset.h: + +/usr/include/glib-2.0/glib/gdate.h: + +/usr/include/glib-2.0/glib/gdatetime.h: + +/usr/include/glib-2.0/glib/gtimezone.h: + +/usr/include/glib-2.0/glib/gdir.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/glib-2.0/glib/genviron.h: + +/usr/include/glib-2.0/glib/gfileutils.h: + +/usr/include/glib-2.0/glib/ggettext.h: + +/usr/include/glib-2.0/glib/ghash.h: + +/usr/include/glib-2.0/glib/glist.h: + +/usr/include/glib-2.0/glib/gmem.h: + +/usr/include/glib-2.0/glib/gnode.h: + +/usr/include/glib-2.0/glib/ghmac.h: + +/usr/include/glib-2.0/glib/gchecksum.h: + +/usr/include/glib-2.0/glib/ghook.h: + +/usr/include/glib-2.0/glib/ghostutils.h: + +/usr/include/glib-2.0/glib/giochannel.h: + +/usr/include/glib-2.0/glib/gmain.h: + +/usr/include/glib-2.0/glib/gpoll.h: + +/usr/include/glib-2.0/glib/gslist.h: + +/usr/include/glib-2.0/glib/gstring.h: + +/usr/include/glib-2.0/glib/gunicode.h: + +/usr/include/glib-2.0/glib/gkeyfile.h: + +/usr/include/glib-2.0/glib/gmappedfile.h: + +/usr/include/glib-2.0/glib/gmarkup.h: + +/usr/include/glib-2.0/glib/gmessages.h: + +/usr/include/glib-2.0/glib/gvariant.h: + +/usr/include/glib-2.0/glib/gvarianttype.h: + +/usr/include/glib-2.0/glib/goption.h: + +/usr/include/glib-2.0/glib/gpattern.h: + +/usr/include/glib-2.0/glib/gprimes.h: + +/usr/include/glib-2.0/glib/gqsort.h: + +/usr/include/glib-2.0/glib/gqueue.h: + +/usr/include/glib-2.0/glib/grand.h: + +/usr/include/glib-2.0/glib/gregex.h: + +/usr/include/glib-2.0/glib/gscanner.h: + +/usr/include/glib-2.0/glib/gsequence.h: + +/usr/include/glib-2.0/glib/gshell.h: + +/usr/include/glib-2.0/glib/gslice.h: + +/usr/include/glib-2.0/glib/gspawn.h: + +/usr/include/glib-2.0/glib/gstrfuncs.h: + +/usr/include/glib-2.0/glib/gstringchunk.h: + +/usr/include/glib-2.0/glib/gtestutils.h: + +/usr/include/string.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/glib-2.0/glib/gthreadpool.h: + +/usr/include/glib-2.0/glib/gtimer.h: + +/usr/include/glib-2.0/glib/gtrashstack.h: + +/usr/include/glib-2.0/glib/gtree.h: + +/usr/include/glib-2.0/glib/gurifuncs.h: + +/usr/include/glib-2.0/glib/guuid.h: + +/usr/include/glib-2.0/glib/gversion.h: + +/usr/include/glib-2.0/glib/deprecated/gallocator.h: + +/usr/include/glib-2.0/glib/deprecated/gcache.h: + +/usr/include/glib-2.0/glib/deprecated/gcompletion.h: + +/usr/include/glib-2.0/glib/deprecated/gmain.h: + +/usr/include/glib-2.0/glib/deprecated/grel.h: + +/usr/include/glib-2.0/glib/deprecated/gthread.h: + +/usr/include/pthread.h: + +/usr/include/sched.h: + +/usr/include/x86_64-linux-gnu/bits/sched.h: + +/usr/include/x86_64-linux-gnu/bits/cpu-set.h: + +/usr/include/x86_64-linux-gnu/bits/setjmp.h: + +/usr/include/glib-2.0/glib/glib-autocleanups.h: + +/usr/include/glib-2.0/gobject/gobject.h: + +/usr/include/glib-2.0/gobject/gtype.h: + +/usr/include/glib-2.0/gobject/gvalue.h: + +/usr/include/glib-2.0/gobject/gparam.h: + +/usr/include/glib-2.0/gobject/gclosure.h: + +/usr/include/glib-2.0/gobject/gsignal.h: + +/usr/include/glib-2.0/gobject/gmarshal.h: + +/usr/include/glib-2.0/gobject/gboxed.h: + +/usr/include/glib-2.0/gobject/glib-types.h: + +/usr/include/glib-2.0/gobject/genums.h: + +/usr/include/glib-2.0/gobject/gparamspecs.h: + +/usr/include/glib-2.0/gobject/gsourceclosure.h: + +/usr/include/glib-2.0/gobject/gtypemodule.h: + +/usr/include/glib-2.0/gobject/gtypeplugin.h: + +/usr/include/glib-2.0/gobject/gvaluearray.h: + +/usr/include/glib-2.0/gobject/gvaluetypes.h: + +/usr/include/glib-2.0/gobject/gobject-autocleanups.h: + +/usr/include/dbus-1.0/dbus/dbus-shared.h: + +/usr/include/dbus-1.0/dbus/dbus-gtype-specialized.h: + +/usr/include/dbus-1.0/dbus/dbus-gvalue-parse-variant.h: + +marshallers.h: diff --git a/xchat-2.8.8/src/common/dbus/Makefile b/xchat-2.8.8/src/common/dbus/Makefile new file mode 100644 index 0000000..7620bdc --- /dev/null +++ b/xchat-2.8.8/src/common/dbus/Makefile @@ -0,0 +1,697 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# src/common/dbus/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + + +pkgdatadir = $(datadir)/xchat +pkgincludedir = $(includedir)/xchat +pkglibdir = $(libdir)/xchat +pkglibexecdir = $(libexecdir)/xchat +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +noinst_PROGRAMS = example$(EXEEXT) +subdir = src/common/dbus +DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +libxchatdbus_a_AR = $(AR) $(ARFLAGS) +libxchatdbus_a_LIBADD = +am_libxchatdbus_a_OBJECTS = dbus-plugin.$(OBJEXT) \ + dbus-client.$(OBJEXT) +libxchatdbus_a_OBJECTS = $(am_libxchatdbus_a_OBJECTS) +PROGRAMS = $(noinst_PROGRAMS) +am_example_OBJECTS = example.$(OBJEXT) +example_OBJECTS = $(am_example_OBJECTS) +am__DEPENDENCIES_1 = +example_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libxchatdbus_a_SOURCES) $(example_SOURCES) +DIST_SOURCES = $(libxchatdbus_a_SOURCES) $(example_SOURCES) +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(schemadir)" "$(DESTDIR)$(servicedir)" +DATA = $(schema_DATA) $(service_DATA) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run aclocal-1.11 +ALLOCA = +AMTAR = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run tar +AR = ar +AUTOCONF = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run autoconf +AUTOHEADER = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run autoheader +AUTOMAKE = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run automake-1.11 +AWK = gawk +BUILD_INCLUDED_LIBINTL = no +CATOBJEXT = .gmo +CC = gcc +CCAS = gcc +CCASDEPMODE = depmode=gcc3 +CCASFLAGS = -g -O2 +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 -Wall -pipe -Wno-pointer-sign -funsigned-char +CFLAG_VISIBILITY = -fvisibility=hidden +COMMON_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -pthread -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include +COMMON_LIBS = -lglib-2.0 -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DATADIR = ${prefix}/share +DATADIRNAME = share +DBUS_BINDING_TOOL = /usr/bin/dbus-binding-tool +DBUS_CFLAGS = -pthread -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include +DBUS_LIBS = -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0 +DBUS_SERVICES_DIR = ${prefix}/share/dbus-1/services +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/local/bin/grep -E +EXEEXT = +FGREP = /usr/local/bin/grep -F +GCONFTOOL = /usr/bin/gconftool-2 +GENCAT = gencat +GETTEXT_MACRO_VERSION = 0.17 +GETTEXT_PACKAGE = xchat +GLIBC2 = yes +GLIBC21 = yes +GLIB_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include +GLIB_GENMARSHAL = /usr/bin/glib-genmarshal +GLIB_LIBS = -lglib-2.0 +GLIB_MKENUMS = glib-mkenums +GMSGFMT = /usr/bin/msgfmt +GMSGFMT_015 = /usr/bin/msgfmt +GOBJECT_QUERY = gobject-query +GREP = /usr/local/bin/grep +GTKSPELL_CFLAGS = +GTKSPELL_LIBS = +GTK_CFLAGS = -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 +GTK_LIBS = -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype +GUI_CFLAGS = -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 +GUI_LIBS = -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype -Wl,--version-script,$(srcdir)/../version-script -lglib-2.0 -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0 +HAVE_ASPRINTF = 1 +HAVE_POSIX_PRINTF = 1 +HAVE_SNPRINTF = 1 +HAVE_VISIBILITY = 1 +HAVE_WPRINTF = 0 +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +INSTOBJEXT = .mo +INTLBISON = bison +INTLLIBS = +INTLOBJS = +INTL_LIBTOOL_SUFFIX_PREFIX = +INTL_MACOSX_LIBS = +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = -lgmodule-2.0 +LIBICONV = -liconv +LIBINTL = +LIBMULTITHREAD = -lpthread +LIBOBJS = +LIBPTH = +LIBPTH_PREFIX = +LIBS = -lX11 -lssl -lcrypto -ldl -Wl,--export-dynamic -pthread -lglib-2.0 +LIBSEXY_CFLAGS = +LIBSEXY_LIBS = +LIBTHREAD = +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBC = -lc +LTLIBICONV = -liconv +LTLIBINTL = +LTLIBMULTITHREAD = -lpthread +LTLIBOBJS = +LTLIBPTH = +LTLIBTHREAD = +MAINT = # +MAKEINFO = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run makeinfo +MKDIR_P = /bin/mkdir -p +MSGFMT = /usr/bin/msgfmt +MSGFMT_015 = /usr/bin/msgfmt +MSGMERGE = /usr/bin/msgmerge +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = xchat +PACKAGE_BUGREPORT = http://www.xchat.org/ +PACKAGE_NAME = XChat +PACKAGE_STRING = XChat 2.8.8 +PACKAGE_TARNAME = xchat +PACKAGE_URL = +PACKAGE_VERSION = 2.8.8 +PATH_SEPARATOR = : +PERL_CFLAGS = -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/lib/x86_64-linux-gnu/perl/5.26/CORE +PERL_LDFLAGS = -Wl,-E -fstack-protector-strong -L/usr/local/lib -L/usr/lib/x86_64-linux-gnu/perl/5.26/CORE -lperl -ldl -lm -lpthread -lcrypt +PKG_CONFIG = /usr/bin/pkg-config +PLUGIN_INCLUDES = -I$(top_srcdir)/plugins +POSUB = po +PRI_MACROS_BROKEN = 0 +PY_CFLAGS = -I/usr/include/python2.7 +PY_LIBS = -L/usr/lib/python2.7/config -lpython2.7 -lpthread -lutil +RANLIB = ranlib +SED = /bin/sed +SET_MAKE = +SHELL = /bin/bash +STRIP = strip +TCL_CFLAGS = -I/usr/include -I/usr/include/tcl8.6 +TCL_LIBS = -L/usr/lib/x86_64-linux-gnu -ltcl8.6 -ldl -lz -lpthread -lm +USE_INCLUDED_LIBINTL = no +USE_NLS = yes +VERSION = 2.8.8 +WINDRES = +WOE32 = no +WOE32DLL = no +XGETTEXT = /usr/bin/xgettext +XGETTEXT_015 = /usr/bin/xgettext +XGETTEXT_EXTRA_OPTIONS = +abs_builddir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/src/common/dbus +abs_srcdir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/src/common/dbus +abs_top_builddir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8 +abs_top_srcdir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8 +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = /usr/local +gdkpixbufcsourcepath = /usr/bin/gdk-pixbuf-csource +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +lt_ECHO = echo +mandir = ${datarootdir}/man +mkdir_p = /bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +perlpath = /usr/bin/perl +pkgconfigpath = /usr/bin/pkg-config +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +pythonpath = /usr/bin/python2 +sbindir = ${exec_prefix}/sbin +sedpath = /bin/sed +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../../../ +top_builddir = ../../.. +top_srcdir = ../../.. +unamepath = /bin/uname +xchatlibdir = ${exec_prefix}/lib/xchat +noinst_LIBRARIES = libxchatdbus.a +libxchatdbus_a_SOURCES = \ + dbus-plugin.c \ + dbus-plugin.h \ + dbus-client.c \ + dbus-client.h + +EXTRA_DIST = \ + remote-object.xml \ + apps_xchat_url_handler.schemas \ + marshallers.list \ + example.py \ + org.xchat.service.service.in \ + README + +BUILT_SOURCES = \ + marshallers.h \ + remote-object-glue.h + +CLEANFILES = $(BUILT_SOURCES) +INCLUDES = $(COMMON_CFLAGS) $(DBUS_CFLAGS) +example_SOURCES = example.c +example_LDADD = $(DBUS_LIBS) $(GLIB_LIBS) + +# Dbus service file +servicedir = $(DBUS_SERVICES_DIR) +service_in_files = org.xchat.service.service.in +service_DATA = $(service_in_files:.service.in=.service) +GCONF_SCHEMA_CONFIG_SOURCE = `$(GCONFTOOL) --get-default-source` +GCONF_SCHEMA_FILE_DIR = $(sysconfdir)/gconf/schemas +schemadir = $(GCONF_SCHEMA_FILE_DIR) +schema_DATA = apps_xchat_url_handler.schemas +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/common/dbus/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/common/dbus/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +libxchatdbus.a: $(libxchatdbus_a_OBJECTS) $(libxchatdbus_a_DEPENDENCIES) + -rm -f libxchatdbus.a + $(libxchatdbus_a_AR) libxchatdbus.a $(libxchatdbus_a_OBJECTS) $(libxchatdbus_a_LIBADD) + $(RANLIB) libxchatdbus.a + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +example$(EXEEXT): $(example_OBJECTS) $(example_DEPENDENCIES) + @rm -f example$(EXEEXT) + $(LINK) $(example_OBJECTS) $(example_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/dbus-client.Po +include ./$(DEPDIR)/dbus-plugin.Po +include ./$(DEPDIR)/example.Po + +.c.o: + depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ + $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ + $(am__mv) $$depbase.Tpo $$depbase.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(COMPILE) -c -o $@ $< + +.c.obj: + depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ + $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ + $(am__mv) $$depbase.Tpo $$depbase.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: + depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ + $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ + $(am__mv) $$depbase.Tpo $$depbase.Plo +# source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-schemaDATA: $(schema_DATA) + @$(NORMAL_INSTALL) + test -z "$(schemadir)" || $(MKDIR_P) "$(DESTDIR)$(schemadir)" + @list='$(schema_DATA)'; test -n "$(schemadir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(schemadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(schemadir)" || exit $$?; \ + done + +uninstall-schemaDATA: + @$(NORMAL_UNINSTALL) + @list='$(schema_DATA)'; test -n "$(schemadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(schemadir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(schemadir)" && rm -f $$files +install-serviceDATA: $(service_DATA) + @$(NORMAL_INSTALL) + test -z "$(servicedir)" || $(MKDIR_P) "$(DESTDIR)$(servicedir)" + @list='$(service_DATA)'; test -n "$(servicedir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(servicedir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(servicedir)" || exit $$?; \ + done + +uninstall-serviceDATA: + @$(NORMAL_UNINSTALL) + @list='$(service_DATA)'; test -n "$(servicedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(servicedir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(servicedir)" && rm -f $$files + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(schemadir)" "$(DESTDIR)$(servicedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ + clean-noinstPROGRAMS mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-data-local install-schemaDATA \ + install-serviceDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-schemaDATA uninstall-serviceDATA + +.MAKE: all check install install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLIBRARIES clean-noinstPROGRAMS ctags \ + distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-data-local install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-schemaDATA \ + install-serviceDATA install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ + uninstall-am uninstall-schemaDATA uninstall-serviceDATA + + +remote-object-glue.h: remote-object.xml + $(LIBTOOL) --mode=execute $(DBUS_BINDING_TOOL) --prefix=remote_object --mode=glib-server --output=$@ $< + +marshallers.h: marshallers.list + $(LIBTOOL) --mode=execute $(GLIB_GENMARSHAL) --header --body $< > $@ + +# Rule to make the service file with bindir expanded +$(service_DATA): $(service_in_files) Makefile + @sed -e "s|\@bindir\@|$(bindir)|" $< > $@ +install-data-local: + if test -z "$(DESTDIR)" ; then \ + for p in $(schema_DATA) ; do \ + GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $(srcdir)/$$p; \ + done \ + fi +#install-data-local: + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/xchat-2.8.8/src/common/dbus/Makefile.am b/xchat-2.8.8/src/common/dbus/Makefile.am new file mode 100644 index 0000000..05ee9de --- /dev/null +++ b/xchat-2.8.8/src/common/dbus/Makefile.am @@ -0,0 +1,56 @@ +noinst_LIBRARIES = libxchatdbus.a +libxchatdbus_a_SOURCES = \ + dbus-plugin.c \ + dbus-plugin.h \ + dbus-client.c \ + dbus-client.h + +EXTRA_DIST = \ + remote-object.xml \ + apps_xchat_url_handler.schemas \ + marshallers.list \ + example.py \ + org.xchat.service.service.in \ + README + +BUILT_SOURCES = \ + marshallers.h \ + remote-object-glue.h + +CLEANFILES = $(BUILT_SOURCES) + +INCLUDES = $(COMMON_CFLAGS) $(DBUS_CFLAGS) + +noinst_PROGRAMS = example +example_SOURCES = example.c +example_LDADD = $(DBUS_LIBS) $(GLIB_LIBS) + +remote-object-glue.h: remote-object.xml + $(LIBTOOL) --mode=execute $(DBUS_BINDING_TOOL) --prefix=remote_object --mode=glib-server --output=$@ $< + +marshallers.h: marshallers.list + $(LIBTOOL) --mode=execute $(GLIB_GENMARSHAL) --header --body $< > $@ + +# Dbus service file +servicedir = $(DBUS_SERVICES_DIR) +service_in_files = org.xchat.service.service.in +service_DATA = $(service_in_files:.service.in=.service) + +# Rule to make the service file with bindir expanded +$(service_DATA): $(service_in_files) Makefile + @sed -e "s|\@bindir\@|$(bindir)|" $< > $@ + +if DO_GCONF +GCONF_SCHEMA_CONFIG_SOURCE = `$(GCONFTOOL) --get-default-source` +GCONF_SCHEMA_FILE_DIR = $(sysconfdir)/gconf/schemas +schemadir = $(GCONF_SCHEMA_FILE_DIR) +schema_DATA = apps_xchat_url_handler.schemas +install-data-local: + if test -z "$(DESTDIR)" ; then \ + for p in $(schema_DATA) ; do \ + GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $(srcdir)/$$p; \ + done \ + fi +else +install-data-local: +endif diff --git a/xchat-2.8.8/src/common/dbus/Makefile.in b/xchat-2.8.8/src/common/dbus/Makefile.in new file mode 100644 index 0000000..a9e68e9 --- /dev/null +++ b/xchat-2.8.8/src/common/dbus/Makefile.in @@ -0,0 +1,697 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +noinst_PROGRAMS = example$(EXEEXT) +subdir = src/common/dbus +DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +libxchatdbus_a_AR = $(AR) $(ARFLAGS) +libxchatdbus_a_LIBADD = +am_libxchatdbus_a_OBJECTS = dbus-plugin.$(OBJEXT) \ + dbus-client.$(OBJEXT) +libxchatdbus_a_OBJECTS = $(am_libxchatdbus_a_OBJECTS) +PROGRAMS = $(noinst_PROGRAMS) +am_example_OBJECTS = example.$(OBJEXT) +example_OBJECTS = $(am_example_OBJECTS) +am__DEPENDENCIES_1 = +example_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libxchatdbus_a_SOURCES) $(example_SOURCES) +DIST_SOURCES = $(libxchatdbus_a_SOURCES) $(example_SOURCES) +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(schemadir)" "$(DESTDIR)$(servicedir)" +DATA = $(schema_DATA) $(service_DATA) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +COMMON_CFLAGS = @COMMON_CFLAGS@ +COMMON_LIBS = @COMMON_LIBS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DATADIRNAME = @DATADIRNAME@ +DBUS_BINDING_TOOL = @DBUS_BINDING_TOOL@ +DBUS_CFLAGS = @DBUS_CFLAGS@ +DBUS_LIBS = @DBUS_LIBS@ +DBUS_SERVICES_DIR = @DBUS_SERVICES_DIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GCONFTOOL = @GCONFTOOL@ +GENCAT = @GENCAT@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GLIB_CFLAGS = @GLIB_CFLAGS@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GLIB_LIBS = @GLIB_LIBS@ +GLIB_MKENUMS = @GLIB_MKENUMS@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GOBJECT_QUERY = @GOBJECT_QUERY@ +GREP = @GREP@ +GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ +GTKSPELL_LIBS = @GTKSPELL_LIBS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_LIBS = @GTK_LIBS@ +GUI_CFLAGS = @GUI_CFLAGS@ +GUI_LIBS = @GUI_LIBS@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBSEXY_CFLAGS = @LIBSEXY_CFLAGS@ +LIBSEXY_LIBS = @LIBSEXY_LIBS@ +LIBTHREAD = @LIBTHREAD@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBC = @LTLIBC@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTHREAD = @LTLIBTHREAD@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL_CFLAGS = @PERL_CFLAGS@ +PERL_LDFLAGS = @PERL_LDFLAGS@ +PKG_CONFIG = @PKG_CONFIG@ +PLUGIN_INCLUDES = @PLUGIN_INCLUDES@ +POSUB = @POSUB@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +PY_CFLAGS = @PY_CFLAGS@ +PY_LIBS = @PY_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TCL_CFLAGS = @TCL_CFLAGS@ +TCL_LIBS = @TCL_LIBS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WOE32 = @WOE32@ +WOE32DLL = @WOE32DLL@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gdkpixbufcsourcepath = @gdkpixbufcsourcepath@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +perlpath = @perlpath@ +pkgconfigpath = @pkgconfigpath@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pythonpath = @pythonpath@ +sbindir = @sbindir@ +sedpath = @sedpath@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +unamepath = @unamepath@ +xchatlibdir = @xchatlibdir@ +noinst_LIBRARIES = libxchatdbus.a +libxchatdbus_a_SOURCES = \ + dbus-plugin.c \ + dbus-plugin.h \ + dbus-client.c \ + dbus-client.h + +EXTRA_DIST = \ + remote-object.xml \ + apps_xchat_url_handler.schemas \ + marshallers.list \ + example.py \ + org.xchat.service.service.in \ + README + +BUILT_SOURCES = \ + marshallers.h \ + remote-object-glue.h + +CLEANFILES = $(BUILT_SOURCES) +INCLUDES = $(COMMON_CFLAGS) $(DBUS_CFLAGS) +example_SOURCES = example.c +example_LDADD = $(DBUS_LIBS) $(GLIB_LIBS) + +# Dbus service file +servicedir = $(DBUS_SERVICES_DIR) +service_in_files = org.xchat.service.service.in +service_DATA = $(service_in_files:.service.in=.service) +@DO_GCONF_TRUE@GCONF_SCHEMA_CONFIG_SOURCE = `$(GCONFTOOL) --get-default-source` +@DO_GCONF_TRUE@GCONF_SCHEMA_FILE_DIR = $(sysconfdir)/gconf/schemas +@DO_GCONF_TRUE@schemadir = $(GCONF_SCHEMA_FILE_DIR) +@DO_GCONF_TRUE@schema_DATA = apps_xchat_url_handler.schemas +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/common/dbus/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/common/dbus/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +libxchatdbus.a: $(libxchatdbus_a_OBJECTS) $(libxchatdbus_a_DEPENDENCIES) + -rm -f libxchatdbus.a + $(libxchatdbus_a_AR) libxchatdbus.a $(libxchatdbus_a_OBJECTS) $(libxchatdbus_a_LIBADD) + $(RANLIB) libxchatdbus.a + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +example$(EXEEXT): $(example_OBJECTS) $(example_DEPENDENCIES) + @rm -f example$(EXEEXT) + $(LINK) $(example_OBJECTS) $(example_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus-client.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus-plugin.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/example.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-schemaDATA: $(schema_DATA) + @$(NORMAL_INSTALL) + test -z "$(schemadir)" || $(MKDIR_P) "$(DESTDIR)$(schemadir)" + @list='$(schema_DATA)'; test -n "$(schemadir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(schemadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(schemadir)" || exit $$?; \ + done + +uninstall-schemaDATA: + @$(NORMAL_UNINSTALL) + @list='$(schema_DATA)'; test -n "$(schemadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(schemadir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(schemadir)" && rm -f $$files +install-serviceDATA: $(service_DATA) + @$(NORMAL_INSTALL) + test -z "$(servicedir)" || $(MKDIR_P) "$(DESTDIR)$(servicedir)" + @list='$(service_DATA)'; test -n "$(servicedir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(servicedir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(servicedir)" || exit $$?; \ + done + +uninstall-serviceDATA: + @$(NORMAL_UNINSTALL) + @list='$(service_DATA)'; test -n "$(servicedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(servicedir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(servicedir)" && rm -f $$files + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(schemadir)" "$(DESTDIR)$(servicedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ + clean-noinstPROGRAMS mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-data-local install-schemaDATA \ + install-serviceDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-schemaDATA uninstall-serviceDATA + +.MAKE: all check install install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLIBRARIES clean-noinstPROGRAMS ctags \ + distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-data-local install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-schemaDATA \ + install-serviceDATA install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ + uninstall-am uninstall-schemaDATA uninstall-serviceDATA + + +remote-object-glue.h: remote-object.xml + $(LIBTOOL) --mode=execute $(DBUS_BINDING_TOOL) --prefix=remote_object --mode=glib-server --output=$@ $< + +marshallers.h: marshallers.list + $(LIBTOOL) --mode=execute $(GLIB_GENMARSHAL) --header --body $< > $@ + +# Rule to make the service file with bindir expanded +$(service_DATA): $(service_in_files) Makefile + @sed -e "s|\@bindir\@|$(bindir)|" $< > $@ +@DO_GCONF_TRUE@install-data-local: +@DO_GCONF_TRUE@ if test -z "$(DESTDIR)" ; then \ +@DO_GCONF_TRUE@ for p in $(schema_DATA) ; do \ +@DO_GCONF_TRUE@ GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $(srcdir)/$$p; \ +@DO_GCONF_TRUE@ done \ +@DO_GCONF_TRUE@ fi +@DO_GCONF_FALSE@install-data-local: + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/xchat-2.8.8/src/common/dbus/README b/xchat-2.8.8/src/common/dbus/README new file mode 100644 index 0000000..d61cf4e --- /dev/null +++ b/xchat-2.8.8/src/common/dbus/README @@ -0,0 +1,198 @@ +For more help you can see the xchat plugin interface documentation. +http://www.xchat.org/docs/plugin20.html +WARNING: The dbus interface may change in the future. + +You can use the "/org/xchat/Remote" object with interface "org.xchat.plugin", +but his context can be changed by other clients at any moment and +you may receive signal asked by other clients. So for more complex usage it's +better to get your own remote object. Using "Connect" method on interface +"org.xchat.connection" + +Available methods on org.xchat.connection interface: + +"Connect" + - Parameters: + - gchar*: filename + - gchar*: name + - gchar*: description + - gchar*: version + - Returns: + - gchar*: Your own object's path. + +"Disconnect" + No parameter, no return value. It frees your remote object. + +Available methods on org.xchat.plugin interface: + +"Command" + - Parameters: + - gchar*: the command name without the "/". (e.g. "nick pseudo") + +"Print" + - Parameters: + - gchar*: text to print on the xchat window. + +"FindContext" + - Parameters: + - gchar*: the server name. Can be NULL. + - gchar*: the channel name. Can be NULL. + - Returns: + - guint: context ID + +"GetContext" + - Returns: + - guint: current context's ID + +"SetContext" + - Parameters: + - guint: context ID to switch, returned by "FindContext" or "GetContext" + - Returns: + - gboolean: 1 for success, 0 for failure. + +"GetInfo" + - Parameters: + - gchar*: ID of the information you want. + - Returns: + - gchar*: information you requested. + +"GetPrefs" + - Parameters: + - gchar*: Setting name required. + - Returns: + - int: 0-Failed 1-Returned a string 2-Returned an Integer + 3-Returned a Boolean. + - gchar*: the information requested if it's a string. + - int: the information requested if it's a integer or boolean. + +"HookCommand" + - Parameters: + - gchar*: Name of the command (without the forward slash). + - int: Priority of this command. + - gchar*: String of text to display when the user executes /help + for this command. May be NULL if you're lazy. + - int: Value to returns when the command is catched. See XCHAT_EAT_*. + - Returns: + - guint: The ID of the hook. + +"HookServer" + - Parameters: + - gchar*: Name of the server event. + - int: Priority of this command. + - int: Value to returns when the command is catched. See XCHAT_EAT_*. + - Returns: + - guint: The ID of the hook. + +"HookPrint" + - Parameters: + - gchar*: Name of the print event. + - int: Priority of this command. + - int: Value to returns when the command is catched. See XCHAT_EAT_*. + - Returns: + - guint: The ID of the hook. + +"Unhook" + - Parameters: + - guint: ID of the hook to unhook. + (the return value of "HookCommand", "HookServer" or "HookPrint") + +"ListGet" + - Parameters: + - gchar*: The list name. + - Returns: + - guint: List ID. + +"ListNext" + - Parameters: + - guint: List ID returned by "ListGet". + - Returns: + - gboolean: says if there is no more item in the list. + +"ListStr" + - Parameters: + - guint: List ID returned by "ListGet". + - gchar*: Name of the information needed. + - Returns: + - gchar*: The information requested. +Warning: "context" attribut of "channels" list should be get with "ListInt" + +"ListInt" + - Parameters: + - guint: List ID returned by "ListGet". + - gchar*: Name of the information needed. + - Returns: + - guint: The information requested. + +"ListTime" + - Parameters: + - guint: List ID returned by "ListGet". + - gchar*: Name of the information needed. + - Returns: + - guint64: The information requested. + +"ListFields" + - Parameters: + - gchar*: The list name. + - Returns: + - gchar**: information names in this list. + +"ListFree" + - Parameters: + - guint: List ID returned by "ListGet". + +"EmitPrint" + - Parameters: + - gchar*: Text event to print. + - gchar**: NULL terminated array of string. + - Returns: + - gboolean: 1-Success 0-Failure. + +"Nickcmp" + - Parameters: + - gchar*: String to compare. + - gchar*: String to compare. + - Returns: + - int: An integer less than, equal to, or greater than zero if s1 is found, + respectively, to be less than, to match, or be greater than s2. + +"Strip" + - Parameters: + - gchar*: String to strip. + - int: Length of the string (or -1 for NULL terminated). + - int: Bit-field of flags: 0-Strip mIRC colors, 1-Strip text attributes. + - Returns: + - gchar*: striped string. + +"SendModes" + - Parameters: + - gchar**: NULL terminated array of targets (strings). The names of people + whom the action will be performed on. + - int: Maximum modes to send per line. + - gchar: Mode sign, '-' or '+'. + - gchar: Mode char, e.g. 'o' for Ops. + + +Available signals: + +"ServerSignal" + - Parameters: + - gchar**: word returned by xchat. + - gchar**: word_eol returned bu xchat. + - guint: the ID of the hook. (the return value of "HookServer"). + - guint: the ID of the context where the event come from. + +"CommandSignal" + - Parameters: + - gchar**: word returned by xchat. + - gchar**: word_eol returned bu xchat. + - guint: the ID of the hook. (the return value of "HookCommand"). + - guint: the ID of the context where the event come from. + +"PrintSignal" + - Parameters: + - gchar**: word returned by xchat. + - guint: the ID of the hook. (the return value of "HookPrint"). + - guint: the ID of the context where the event come from. + +"UnloadSignal" + emited when the user asks to unload your program. + Please exit(0); when received ! diff --git a/xchat-2.8.8/src/common/dbus/apps_xchat_url_handler.schemas b/xchat-2.8.8/src/common/dbus/apps_xchat_url_handler.schemas new file mode 100644 index 0000000..10ac948 --- /dev/null +++ b/xchat-2.8.8/src/common/dbus/apps_xchat_url_handler.schemas @@ -0,0 +1,37 @@ +<gconfschemafile> + <schemalist> + <schema> + <key>/schemas/desktop/gnome/url-handlers/irc/command</key> + <applyto>/desktop/gnome/url-handlers/irc/command</applyto> + <owner>xchat</owner> + <type>string</type> + <default>xchat --existing --url=%u</default> + <locale name="C"> + <short>The handler for "irc://" URLs</short> + </locale> + </schema> + + <schema> + <key>/schemas/desktop/gnome/url-handlers/irc/enabled</key> + <applyto>/desktop/gnome/url-handlers/irc/enabled</applyto> + <owner>xchat</owner> + <type>bool</type> + <default>true</default> + <locale name="C"> + <short>Set it at TRUE if you want it activated</short> + </locale> + </schema> + + <schema> + <key>/schemas/desktop/gnome/url-handlers/irc/needs_terminal</key> + <applyto>/desktop/gnome/url-handlers/irc/needs_terminal</applyto> + <owner>xchat</owner> + <type>bool</type> + <default>false</default> + <locale name="C"> + <short>Run xchat in a terminal?</short> + </locale> + </schema> + + </schemalist> +</gconfschemafile> diff --git a/xchat-2.8.8/src/common/dbus/dbus-client.c b/xchat-2.8.8/src/common/dbus/dbus-client.c new file mode 100644 index 0000000..ac6bf6d --- /dev/null +++ b/xchat-2.8.8/src/common/dbus/dbus-client.c @@ -0,0 +1,118 @@ +/* dbus-client.c - XChat command-line options for D-Bus + * Copyright (C) 2006 Claessens Xavier + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * + * Claessens Xavier + * xclaesse@gmail.com + */ + +#include <dbus/dbus-glib.h> +#include "dbus-client.h" +#include "../xchat.h" +#include "../xchatc.h" + +#define DBUS_SERVICE "org.xchat.service" +#define DBUS_REMOTE "/org/xchat/Remote" +#define DBUS_REMOTE_INTERFACE "org.xchat.plugin" + +static void +write_error (char *message, + GError **error) +{ + if (error == NULL || *error == NULL) { + return; + } + g_printerr ("%s: %s\n", message, (*error)->message); + g_clear_error (error); +} + +void +xchat_remote (void) +/* TODO: dbus_g_connection_unref (connection) are commented because it makes + * dbus to crash. Fixed in dbus >=0.70 ?!? + * https://launchpad.net/distros/ubuntu/+source/dbus/+bug/54375 + */ +{ + DBusGConnection *connection; + DBusGProxy *dbus = NULL; + DBusGProxy *remote_object = NULL; + gboolean xchat_running; + GError *error = NULL; + char *command = NULL; + + /* GnomeVFS >=2.15 uses D-Bus and threads, so threads should be + * initialised before opening for the first time a D-Bus connection */ + if (!g_thread_supported ()) { + g_thread_init (NULL); + } + dbus_g_thread_init (); + + /* if there is nothing to do, return now. */ + if (!arg_existing || !(arg_url || arg_command)) { + return; + } + + arg_dont_autoconnect = TRUE; + + connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error); + if (!connection) { + write_error (_("Couldn't connect to session bus"), &error); + return; + } + + /* Checks if xchat is already running */ + dbus = dbus_g_proxy_new_for_name (connection, + DBUS_SERVICE_DBUS, + DBUS_PATH_DBUS, + DBUS_INTERFACE_DBUS); + if (!dbus_g_proxy_call (dbus, "NameHasOwner", &error, + G_TYPE_STRING, DBUS_SERVICE, + G_TYPE_INVALID, + G_TYPE_BOOLEAN, &xchat_running, + G_TYPE_INVALID)) { + write_error (_("Failed to complete NameHasOwner"), &error); + xchat_running = FALSE; + } + g_object_unref (dbus); + + if (!xchat_running) { + //dbus_g_connection_unref (connection); + return; + } + + remote_object = dbus_g_proxy_new_for_name (connection, + DBUS_SERVICE, + DBUS_REMOTE, + DBUS_REMOTE_INTERFACE); + + if (arg_url) { + command = g_strdup_printf ("url %s", arg_url); + } else if (arg_command) { + command = g_strdup (arg_command); + } + + if (command) { + if (!dbus_g_proxy_call (remote_object, "Command", + &error, + G_TYPE_STRING, command, + G_TYPE_INVALID,G_TYPE_INVALID)) { + write_error (_("Failed to complete Command"), &error); + } + g_free (command); + } + + exit (0); +} diff --git a/xchat-2.8.8/src/common/dbus/dbus-client.h b/xchat-2.8.8/src/common/dbus/dbus-client.h new file mode 100644 index 0000000..cafc2b7 --- /dev/null +++ b/xchat-2.8.8/src/common/dbus/dbus-client.h @@ -0,0 +1,27 @@ +/* dbus-client.h - XChat command-line options for D-Bus + * Copyright (C) 2006 Claessens Xavier + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * + * Claessens Xavier + * xclaesse@gmail.com + */ + +#ifndef __DBUS_PLUGIN_H__ +#define __DBUS_PLUGIN_H__ + +void xchat_remote (void); + +#endif /* __DBUS_PLUGIN_H__ */ diff --git a/xchat-2.8.8/src/common/dbus/dbus-client.o b/xchat-2.8.8/src/common/dbus/dbus-client.o new file mode 100644 index 0000000000000000000000000000000000000000..435e3aa942eee198519a59a0c236111baf46b420 GIT binary patch literal 47096 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 W_T$gT5<9wo1=|0tyAkhJfBy$)Q)iC= literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/src/common/dbus/dbus-plugin.c b/xchat-2.8.8/src/common/dbus/dbus-plugin.c new file mode 100644 index 0000000..012812c --- /dev/null +++ b/xchat-2.8.8/src/common/dbus/dbus-plugin.c @@ -0,0 +1,1087 @@ +/* dbus-plugin.c - xchat plugin for remote access using D-Bus + * Copyright (C) 2006 Claessens Xavier + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * + * Claessens Xavier + * xclaesse@gmail.com + */ + +#define DBUS_API_SUBJECT_TO_CHANGE + +#include <config.h> +#include <dbus/dbus-glib.h> +#include <dbus/dbus-glib-lowlevel.h> +#include <glib/gi18n.h> +#include "../xchat-plugin.h" + +#define PNAME _("remote access") +#define PDESC _("plugin for remote access using DBUS") +#define PVERSION "" + +#define DBUS_SERVICE "org.xchat.service" +#define DBUS_OBJECT_PATH "/org/xchat" + +static xchat_plugin *ph; +static guint last_context_id = 0; +static GList *contexts = NULL; +static GHashTable *clients = NULL; +static DBusGConnection *connection; + +typedef struct RemoteObject RemoteObject; +typedef struct RemoteObjectClass RemoteObjectClass; + +GType Remote_object_get_type (void); + +struct RemoteObject +{ + GObject parent; + + guint last_hook_id; + guint last_list_id; + xchat_context *context; + char *dbus_path; + char *filename; + GHashTable *hooks; + GHashTable *lists; + void *handle; +}; + +struct RemoteObjectClass +{ + GObjectClass parent; +}; + +typedef struct +{ + guint id; + int return_value; + xchat_hook *hook; + RemoteObject *obj; +} HookInfo; + +typedef struct +{ + guint id; + xchat_context *context; +} ContextInfo; + +enum +{ + SERVER_SIGNAL, + COMMAND_SIGNAL, + PRINT_SIGNAL, + UNLOAD_SIGNAL, + LAST_SIGNAL +}; + +static guint signals[LAST_SIGNAL] = { 0 }; + +#define REMOTE_TYPE_OBJECT (remote_object_get_type ()) +#define REMOTE_OBJECT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), REMOTE_TYPE_OBJECT, RemoteObject)) +#define REMOTE_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), REMOTE_TYPE_OBJECT, RemoteObjectClass)) +#define REMOTE_IS_OBJECT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), REMOTE_TYPE_OBJECT)) +#define REMOTE_IS_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), REMOTE_TYPE_OBJECT)) +#define REMOTE_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), REMOTE_TYPE_OBJECT, RemoteObjectClass)) +#define REMOTE_OBJECT_ERROR (remote_object_error_quark ()) +#define REMOTE_TYPE_ERROR (remote_object_error_get_type ()) + +G_DEFINE_TYPE (RemoteObject, remote_object, G_TYPE_OBJECT) + +/* Available services */ + +static gboolean remote_object_connect (RemoteObject *obj, + const char *filename, + const char *name, + const char *desc, + const char *version, + DBusGMethodInvocation *context); + +static gboolean remote_object_disconnect (RemoteObject *obj, + DBusGMethodInvocation *context); + +static gboolean remote_object_command (RemoteObject *obj, + const char *command, + GError **error); + +static gboolean remote_object_print (RemoteObject *obj, + const char *text, + GError **error); + +static gboolean remote_object_find_context (RemoteObject *obj, + const char *server, + const char *channel, + guint *ret_id, + GError **error); + +static gboolean remote_object_get_context (RemoteObject *obj, + guint *ret_id, + GError **error); + +static gboolean remote_object_set_context (RemoteObject *obj, + guint id, + gboolean *ret, + GError **error); + +static gboolean remote_object_print (RemoteObject *obj, + const char *text, + GError **error); + +static gboolean remote_object_get_info (RemoteObject *obj, + const char *id, + char **ret_info, + GError **error); + +static gboolean remote_object_get_prefs (RemoteObject *obj, + const char *name, + int *ret_type, + char **ret_str, + int *ret_int, + GError **error); + +static gboolean remote_object_hook_command (RemoteObject *obj, + const char *name, + int pri, + const char *help_text, + int return_value, + guint *ret_id, + GError **error); + +static gboolean remote_object_hook_server (RemoteObject *obj, + const char *name, + int pri, + int return_value, + guint *ret_id, + GError **error); + +static gboolean remote_object_hook_print (RemoteObject *obj, + const char *name, + int pri, + int return_value, + guint *ret_id, + GError **error); + +static gboolean remote_object_unhook (RemoteObject *obj, + guint id, + GError **error); + +static gboolean remote_object_list_get (RemoteObject *obj, + const char *name, + guint *ret_id, + GError **error); + +static gboolean remote_object_list_next (RemoteObject *obj, + guint id, + gboolean *ret, + GError **error); + +static gboolean remote_object_list_str (RemoteObject *obj, + guint id, + const char *name, + char **ret_str, + GError **error); + +static gboolean remote_object_list_int (RemoteObject *obj, + guint id, + const char *name, + int *ret_int, + GError **error); + +static gboolean remote_object_list_time (RemoteObject *obj, + guint id, + const char *name, + guint64 *ret_time, + GError **error); + +static gboolean remote_object_list_fields (RemoteObject *obj, + const char *name, + char ***ret, + GError **error); + +static gboolean remote_object_list_free (RemoteObject *obj, + guint id, + GError **error); + +static gboolean remote_object_emit_print (RemoteObject *obj, + const char *event_name, + const char *args[], + gboolean *ret, + GError **error); + +static gboolean remote_object_nickcmp (RemoteObject *obj, + const char *nick1, + const char *nick2, + int *ret, + GError **error); + +static gboolean remote_object_strip (RemoteObject *obj, + const char *str, + int len, + int flag, + char **ret_str, + GError **error); + +static gboolean remote_object_send_modes (RemoteObject *obj, + const char *targets[], + int modes_per_line, + char sign, + char mode, + GError **error); + +#include "remote-object-glue.h" +#include "marshallers.h" + +/* Useful functions */ + +static char** build_list (char *word[]); +static guint context_list_find_id (xchat_context *context); +static xchat_context* context_list_find_context (guint id); + +/* Remote Object */ + +static void +hook_info_destroy (gpointer data) +{ + HookInfo *info = (HookInfo*)data; + + if (info == NULL) { + return; + } + xchat_unhook (ph, info->hook); + g_free (info); +} + +static void +list_info_destroy (gpointer data) +{ + xchat_list_free (ph, (xchat_list*)data); +} + +static void +remote_object_finalize (GObject *obj) +{ + RemoteObject *self = (RemoteObject*)obj; + + g_hash_table_destroy (self->lists); + g_hash_table_destroy (self->hooks); + g_free (self->dbus_path); + g_free (self->filename); + xchat_plugingui_remove (ph, self->handle); + + G_OBJECT_CLASS (remote_object_parent_class)->finalize (obj); +} + +static void +remote_object_init (RemoteObject *obj) +{ + obj->hooks = + g_hash_table_new_full (g_int_hash, + g_int_equal, + NULL, + hook_info_destroy); + + obj->lists = + g_hash_table_new_full (g_int_hash, + g_int_equal, + g_free, + list_info_destroy); + obj->dbus_path = NULL; + obj->filename = NULL; + obj->last_hook_id = 0; + obj->last_list_id = 0; + obj->context = xchat_get_context (ph); +} + +static void +remote_object_class_init (RemoteObjectClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + gobject_class->finalize = remote_object_finalize; + + signals[SERVER_SIGNAL] = + g_signal_new ("server_signal", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + g_cclosure_user_marshal_VOID__POINTER_POINTER_UINT_UINT, + G_TYPE_NONE, + 4, G_TYPE_STRV, G_TYPE_STRV, G_TYPE_UINT, G_TYPE_UINT); + + signals[COMMAND_SIGNAL] = + g_signal_new ("command_signal", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + g_cclosure_user_marshal_VOID__POINTER_POINTER_UINT_UINT, + G_TYPE_NONE, + 4, G_TYPE_STRV, G_TYPE_STRV, G_TYPE_UINT, G_TYPE_UINT); + + signals[PRINT_SIGNAL] = + g_signal_new ("print_signal", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + g_cclosure_user_marshal_VOID__POINTER_POINTER_UINT_UINT, + G_TYPE_NONE, + 3, G_TYPE_STRV, G_TYPE_UINT, G_TYPE_UINT); + + signals[UNLOAD_SIGNAL] = + g_signal_new ("unload_signal", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + 0); +} + +/* Implementation of services */ + +static gboolean +remote_object_connect (RemoteObject *obj, + const char *filename, + const char *name, + const char *desc, + const char *version, + DBusGMethodInvocation *context) +{ + static guint count = 0; + char *sender, *path; + RemoteObject *remote_object; + + sender = dbus_g_method_get_sender (context); + remote_object = g_hash_table_lookup (clients, sender); + if (remote_object != NULL) { + dbus_g_method_return (context, remote_object->dbus_path); + g_free (sender); + return TRUE; + } + path = g_strdup_printf (DBUS_OBJECT_PATH"/%d", count++); + remote_object = g_object_new (REMOTE_TYPE_OBJECT, NULL); + remote_object->dbus_path = path; + remote_object->filename = g_path_get_basename (filename); + remote_object->handle = xchat_plugingui_add (ph, + remote_object->filename, + name, + desc, + version, NULL); + dbus_g_connection_register_g_object (connection, + path, + G_OBJECT (remote_object)); + + g_hash_table_insert (clients, + sender, + remote_object); + + dbus_g_method_return (context, path); + return TRUE; +} + +static gboolean +remote_object_disconnect (RemoteObject *obj, + DBusGMethodInvocation *context) +{ + char *sender; + + sender = dbus_g_method_get_sender (context); + g_hash_table_remove (clients, sender); + g_free (sender); + + dbus_g_method_return (context); + return TRUE; +} + +static gboolean +remote_object_command (RemoteObject *obj, + const char *command, + GError **error) +{ + if (xchat_set_context (ph, obj->context)) { + xchat_command (ph, command); + } + return TRUE; +} + +static gboolean +remote_object_print (RemoteObject *obj, + const char *text, + GError **error) +{ + if (xchat_set_context (ph, obj->context)) { + xchat_print (ph, text); + } + return TRUE; +} + +static gboolean +remote_object_find_context (RemoteObject *obj, + const char *server, + const char *channel, + guint *ret_id, + GError **error) +{ + xchat_context *context; + + if (*server == '\0') { + server = NULL; + } + if (*channel == '\0') { + channel = NULL; + } + context = xchat_find_context (ph, server, channel); + *ret_id = context_list_find_id (context); + + return TRUE; +} + +static gboolean +remote_object_get_context (RemoteObject *obj, + guint *ret_id, + GError **error) +{ + *ret_id = context_list_find_id (obj->context); + return TRUE; +} + +static gboolean +remote_object_set_context (RemoteObject *obj, + guint id, + gboolean *ret, + GError **error) +{ + xchat_context *context; + + context = context_list_find_context (id); + if (context == NULL) { + *ret = FALSE; + return TRUE; + } + obj->context = context; + *ret = TRUE; + + return TRUE; +} + +static gboolean +remote_object_get_info (RemoteObject *obj, + const char *id, + char **ret_info, + GError **error) +{ + /* win_ptr is a GtkWindow* casted to char* and will crash + * D-Bus if we send it as a string */ + if (!xchat_set_context (ph, obj->context) || + g_str_equal (id, "win_ptr")) { + *ret_info = NULL; + return TRUE; + } + *ret_info = g_strdup (xchat_get_info (ph, id)); + return TRUE; +} + +static gboolean +remote_object_get_prefs (RemoteObject *obj, + const char *name, + int *ret_type, + char **ret_str, + int *ret_int, + GError **error) +{ + const char *str; + + if (!xchat_set_context (ph, obj->context)) { + *ret_type = 0; + return TRUE; + } + *ret_type = xchat_get_prefs (ph, name, &str, ret_int); + *ret_str = g_strdup (str); + + return TRUE; +} + +static int +server_hook_cb (char *word[], + char *word_eol[], + void *userdata) +{ + HookInfo *info = (HookInfo*)userdata; + char **arg1; + char **arg2; + + arg1 = build_list (word + 1); + arg2 = build_list (word_eol + 1); + info->obj->context = xchat_get_context (ph); + g_signal_emit (info->obj, + signals[SERVER_SIGNAL], + 0, + arg1, arg2, info->id, + context_list_find_id (info->obj->context)); + g_strfreev (arg1); + g_strfreev (arg2); + + return info->return_value; +} + +static int +command_hook_cb (char *word[], + char *word_eol[], + void *userdata) +{ + HookInfo *info = (HookInfo*)userdata; + char **arg1; + char **arg2; + + arg1 = build_list (word + 1); + arg2 = build_list (word_eol + 1); + info->obj->context = xchat_get_context (ph); + g_signal_emit (info->obj, + signals[COMMAND_SIGNAL], + 0, + arg1, arg2, info->id, + context_list_find_id (info->obj->context)); + g_strfreev (arg1); + g_strfreev (arg2); + + return info->return_value; +} + +static int +print_hook_cb (char *word[], + void *userdata) +{ + HookInfo *info = (HookInfo*)userdata; + char **arg1; + + arg1 = build_list (word + 1); + info->obj->context = xchat_get_context (ph); + g_signal_emit (info->obj, + signals[PRINT_SIGNAL], + 0, + arg1, info->id, + context_list_find_id (info->obj->context)); + g_strfreev (arg1); + + return info->return_value; +} + +static gboolean +remote_object_hook_command (RemoteObject *obj, + const char *name, + int priority, + const char *help_text, + int return_value, + guint *ret_id, + GError **error) +{ + HookInfo *info; + + info = g_new0 (HookInfo, 1); + info->obj = obj; + info->return_value = return_value; + info->id = ++obj->last_hook_id; + info->hook = xchat_hook_command (ph, + name, + priority, + command_hook_cb, + help_text, + info); + g_hash_table_insert (obj->hooks, &info->id, info); + *ret_id = info->id; + + return TRUE; +} + +static gboolean +remote_object_hook_server (RemoteObject *obj, + const char *name, + int priority, + int return_value, + guint *ret_id, + GError **error) +{ + HookInfo *info; + + info = g_new0 (HookInfo, 1); + info->obj = obj; + info->return_value = return_value; + info->id = ++obj->last_hook_id; + info->hook = xchat_hook_server (ph, + name, + priority, + server_hook_cb, + info); + g_hash_table_insert (obj->hooks, &info->id, info); + *ret_id = info->id; + + return TRUE; +} + +static gboolean +remote_object_hook_print (RemoteObject *obj, + const char *name, + int priority, + int return_value, + guint *ret_id, + GError **error) +{ + HookInfo *info; + + info = g_new0 (HookInfo, 1); + info->obj = obj; + info->return_value = return_value; + info->id = ++obj->last_hook_id; + info->hook = xchat_hook_print (ph, + name, + priority, + print_hook_cb, + info); + g_hash_table_insert (obj->hooks, &info->id, info); + *ret_id = info->id; + + return TRUE; +} + +static gboolean +remote_object_unhook (RemoteObject *obj, + guint id, + GError **error) +{ + g_hash_table_remove (obj->hooks, &id); + return TRUE; +} + +static gboolean +remote_object_list_get (RemoteObject *obj, + const char *name, + guint *ret_id, + GError **error) +{ + xchat_list *xlist; + guint *id; + + if (!xchat_set_context (ph, obj->context)) { + *ret_id = 0; + return TRUE; + } + xlist = xchat_list_get (ph, name); + if (xlist == NULL) { + *ret_id = 0; + return TRUE; + } + id = g_new (guint, 1); + *id = ++obj->last_list_id; + *ret_id = *id; + g_hash_table_insert (obj->lists, + id, + xlist); + + return TRUE; +} + +static gboolean +remote_object_list_next (RemoteObject *obj, + guint id, + gboolean *ret, + GError **error) +{ + xchat_list *xlist; + + xlist = g_hash_table_lookup (obj->lists, &id); + if (xlist == NULL) { + *ret = FALSE; + return TRUE; + } + *ret = xchat_list_next (ph, xlist); + + return TRUE; +} + +static gboolean +remote_object_list_str (RemoteObject *obj, + guint id, + const char *name, + char **ret_str, + GError **error) +{ + xchat_list *xlist; + + xlist = g_hash_table_lookup (obj->lists, &id); + if (xlist == NULL && !xchat_set_context (ph, obj->context)) { + *ret_str = NULL; + return TRUE; + } + if (g_str_equal (name, "context")) { + *ret_str = NULL; + return TRUE; + } + *ret_str = g_strdup (xchat_list_str (ph, xlist, name)); + + return TRUE; +} + +static gboolean +remote_object_list_int (RemoteObject *obj, + guint id, + const char *name, + int *ret_int, + GError **error) +{ + xchat_list *xlist; + + xlist = g_hash_table_lookup (obj->lists, &id); + if (xlist == NULL && !xchat_set_context (ph, obj->context)) { + *ret_int = -1; + return TRUE; + } + if (g_str_equal (name, "context")) { + xchat_context *context; + context = (xchat_context*)xchat_list_str (ph, xlist, name); + *ret_int = context_list_find_id (context); + } else { + *ret_int = xchat_list_int (ph, xlist, name); + } + + return TRUE; +} + +static gboolean +remote_object_list_time (RemoteObject *obj, + guint id, + const char *name, + guint64 *ret_time, + GError **error) +{ + xchat_list *xlist; + + xlist = g_hash_table_lookup (obj->lists, &id); + if (xlist == NULL) { + *ret_time = (guint64) -1; + return TRUE; + } + *ret_time = xchat_list_time (ph, xlist, name); + + return TRUE; +} + +static gboolean +remote_object_list_fields (RemoteObject *obj, + const char *name, + char ***ret, + GError **error) +{ + *ret = g_strdupv ((char**)xchat_list_fields (ph, name)); + if (*ret == NULL) { + *ret = g_new0 (char*, 1); + } + return TRUE; +} + +static gboolean +remote_object_list_free (RemoteObject *obj, + guint id, + GError **error) +{ + g_hash_table_remove (obj->lists, &id); + return TRUE; +} + +static gboolean +remote_object_emit_print (RemoteObject *obj, + const char *event_name, + const char *args[], + gboolean *ret, + GError **error) +{ + const char *argv[4] = {NULL, NULL, NULL, NULL}; + int i; + + for (i = 0; i < 4 && args[i] != NULL; i++) { + argv[i] = args[i]; + } + + *ret = xchat_set_context (ph, obj->context); + if (*ret) { + *ret = xchat_emit_print (ph, event_name, argv[0], argv[1], + argv[2], argv[3]); + } + + return TRUE; +} + +static gboolean +remote_object_nickcmp (RemoteObject *obj, + const char *nick1, + const char *nick2, + int *ret, + GError **error) +{ + xchat_set_context (ph, obj->context); + *ret = xchat_nickcmp (ph, nick1, nick2); + return TRUE; +} + +static gboolean +remote_object_strip (RemoteObject *obj, + const char *str, + int len, + int flag, + char **ret_str, + GError **error) +{ + *ret_str = xchat_strip (ph, str, len, flag); + return TRUE; +} + +static gboolean +remote_object_send_modes (RemoteObject *obj, + const char *targets[], + int modes_per_line, + char sign, + char mode, + GError **error) +{ + if (xchat_set_context (ph, obj->context)) { + xchat_send_modes (ph, targets, + g_strv_length ((char**)targets), + modes_per_line, + sign, mode); + } + return TRUE; +} + +/* DBUS stuffs */ + +static void +name_owner_changed (DBusGProxy *driver_proxy, + const char *name, + const char *old_owner, + const char *new_owner, + void *user_data) +{ + if (*new_owner == '\0') { + /* this name has vanished */ + g_hash_table_remove (clients, name); + } +} + +static gboolean +init_dbus (void) +{ + DBusGProxy *proxy; + RemoteObject *remote; + guint request_name_result; + GError *error = NULL; + + dbus_g_object_type_install_info (REMOTE_TYPE_OBJECT, + &dbus_glib_remote_object_object_info); + + connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error); + if (connection == NULL) { + xchat_printf (ph, _("Couldn't connect to session bus: %s\n"), + error->message); + g_error_free (error); + return FALSE; + } + + proxy = dbus_g_proxy_new_for_name (connection, + DBUS_SERVICE_DBUS, + DBUS_PATH_DBUS, + DBUS_INTERFACE_DBUS); + + if (!dbus_g_proxy_call (proxy, "RequestName", &error, + G_TYPE_STRING, DBUS_SERVICE, + G_TYPE_UINT, DBUS_NAME_FLAG_ALLOW_REPLACEMENT, + G_TYPE_INVALID, + G_TYPE_UINT, &request_name_result, + G_TYPE_INVALID)) { + xchat_printf (ph, _("Failed to acquire %s: %s\n"), + DBUS_SERVICE, + error->message); + g_error_free (error); + + return FALSE; + } + + dbus_g_proxy_add_signal (proxy, "NameOwnerChanged", + G_TYPE_STRING, + G_TYPE_STRING, + G_TYPE_STRING, + G_TYPE_INVALID); + dbus_g_proxy_connect_signal (proxy, "NameOwnerChanged", + G_CALLBACK (name_owner_changed), + NULL, NULL); + + remote = g_object_new (REMOTE_TYPE_OBJECT, NULL); + dbus_g_connection_register_g_object (connection, + DBUS_OBJECT_PATH"/Remote", + G_OBJECT (remote)); + + return TRUE; +} + +/* xchat_plugin stuffs */ + +static char** +build_list (char *word[]) +{ + guint i; + guint num = 0; + char **result; + + if (word == NULL) { + return NULL; + } + + while (word[num] && word[num][0]) { + num++; + } + + result = g_new0 (char*, num + 1); + for (i = 0; i < num; i++) { + result[i] = g_strdup (word[i]); + } + + return result; +} + +static guint +context_list_find_id (xchat_context *context) +{ + GList *l = NULL; + + for (l = contexts; l != NULL; l = l->next) { + if (((ContextInfo*)l->data)->context == context) { + return ((ContextInfo*)l->data)->id; + } + } + + return 0; +} + +static xchat_context* +context_list_find_context (guint id) +{ + GList *l = NULL; + + for (l = contexts; l != NULL; l = l->next) { + if (((ContextInfo*)l->data)->id == id) { + return ((ContextInfo*)l->data)->context; + } + } + + return NULL; +} + +static int +open_context_cb (char *word[], + void *userdata) +{ + ContextInfo *info; + + info = g_new0 (ContextInfo, 1); + info->id = ++last_context_id; + info->context = xchat_get_context (ph); + contexts = g_list_prepend (contexts, info); + + return XCHAT_EAT_NONE; +} + +static int +close_context_cb (char *word[], + void *userdata) +{ + GList *l; + xchat_context *context = xchat_get_context (ph); + + for (l = contexts; l != NULL; l = l->next) { + if (((ContextInfo*)l->data)->context == context) { + g_free (l->data); + contexts = g_list_delete_link (contexts, l); + break; + } + } + + return XCHAT_EAT_NONE; +} + +static gboolean +clients_find_filename_foreach (gpointer key, + gpointer value, + gpointer user_data) +{ + RemoteObject *obj = REMOTE_OBJECT (value); + return g_str_equal (obj->filename, (char*)user_data); +} + +static int +unload_plugin_cb (char *word[], char *word_eol[], void *userdata) +{ + RemoteObject *obj; + + obj = g_hash_table_find (clients, + clients_find_filename_foreach, + word[2]); + if (obj != NULL) { + g_signal_emit (obj, + signals[UNLOAD_SIGNAL], + 0); + return XCHAT_EAT_ALL; + } + + return XCHAT_EAT_NONE; +} + +int +dbus_plugin_init (xchat_plugin *plugin_handle, + char **plugin_name, + char **plugin_desc, + char **plugin_version, + char *arg) +{ + ph = plugin_handle; + *plugin_name = PNAME; + *plugin_desc = PDESC; + *plugin_version = PVERSION; + + if (init_dbus()) { + /*xchat_printf (ph, _("%s loaded successfully!\n"), PNAME);*/ + + clients = g_hash_table_new_full (g_str_hash, + g_str_equal, + g_free, + g_object_unref); + + xchat_hook_print (ph, "Open Context", + XCHAT_PRI_NORM, + open_context_cb, + NULL); + + xchat_hook_print (ph, "Close Context", + XCHAT_PRI_NORM, + close_context_cb, + NULL); + + xchat_hook_command (ph, "unload", + XCHAT_PRI_HIGHEST, + unload_plugin_cb, NULL, NULL); + } + + return TRUE; +} diff --git a/xchat-2.8.8/src/common/dbus/dbus-plugin.h b/xchat-2.8.8/src/common/dbus/dbus-plugin.h new file mode 100644 index 0000000..bda8f61 --- /dev/null +++ b/xchat-2.8.8/src/common/dbus/dbus-plugin.h @@ -0,0 +1,31 @@ +/* dbus-plugin.c - xchat plugin for remote access using DBUS + * Copyright (C) 2006 Claessens Xavier + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * + * Claessens Xavier + * xclaesse@gmail.com + */ + +#ifndef XCHAT_DBUS_PLUGIN_H +#define XCHAT_DBUS_PLUGIN_H + +int dbus_plugin_init (xchat_plugin *plugin_handle, + char **plugin_name, + char **plugin_desc, + char **plugin_version, + char *arg); + +#endif diff --git a/xchat-2.8.8/src/common/dbus/dbus-plugin.o b/xchat-2.8.8/src/common/dbus/dbus-plugin.o new file mode 100644 index 0000000000000000000000000000000000000000..7e7127475a7b96a5c182fe105c4e54fe00f034f7 GIT binary patch literal 186712 zcmdRX34B!5_5XV_iA)Gt0D+(^0a;ZbC?YOkB8!t6F*BKoGZF|0VJq7Yf=k_K)wa_} zf7ng?D>d4^zizg*ZnYKbg4Vh(UF>45RxP#KR;z8T{Li`Pe($?)-W?Kb`~Up<J}~cl z&OPVcbIv{Y-uK=txpZO6qL}Y{IDBuO7f|4O-cKHl8KP04MsJKa+DrD7GnMQ)vp#vn zp6!G8jbB|eb^$XQ6U6AQO!m|!PkL8k`yYB@g+p#((|66>v+uQ<v6m|=&?nuheaEcc z1-;41p2SHrx4)X~X;OAZBnzk2EA_oGWu#{84mPk?xg~aM#x{CQnU<c3+>qQ^wPT3q z&3r7I?3u=lwwA(glZC%03$MJW+IxoaNiknZ7Us_(g;R(jjeF-$5uv&2RG8nG+&jNP z;l1<g_$+dT`SnYdHg()ZLF;%5Zzp?{(n~D0t0|Lhqh7VN%9Uj7iaj+~>?et2;aA^p zrE|+p<+cd!99Bj_CJU_%LSOd#M6&1Dg){G8KPp+cXW`5}jBex5lRH&st*tZntS?(% z)|Al-ch7->l2)>$EYjJm$QG18GxtEJ@jyE3<7~cIWr|kutZvG5H~Wtx2fbnqN|>-X zZM%{?l@Mh?Iq}lVZ|~o~de`dd$R{T+*>h>5xY%>y9DpeRIz>I(k~;CaLFGlIRv3j} zEurFS*#At;STC@jyy7o4mw%DmyzFm>bRU-7sft27HFLijLsidB?M>O{!s|_$=E7Uq zmcoN=$({kp!UJC>&HC-{N){egoirEjZSGkxp*DHN%iW8TG-@?Bo!;8hHm9ZVMzUvH zeQQfk&koX9P;=A#wfmnuyQT0-zHl!WP}9<;Wva85p7Uy9jjU|Ht+{8zg!+BoMn0S# zTKTf#8SswdNy7s>p2f+YP%QhueGP?zh<Zu|q~~dIT;GzozH$)p{5!^nV@gH`sHJ2$ z#c{l&@wu83ciG>{-tqXHi19gti;V_}>+J-tFjZ(0(*7rxP<<^e+-p_W>Rq<~&4oQ& zVtZvM_Q<;JngPZ2CH}|%dH<VxS{(kj&2jp!{ImT}7Vdm!{`ac<m%n5GPYv=P_}^5N zf2kqI7)0V|mN@Q^ak!=QIMB+a=J$WP|Nox)LHWDO$F&Z<)B5@M?HA!CRxhrlSEKNJ ze#iU8zh^wmd~gqlTqph?p3kT!y+f!iAv&EMb#>75`QNi2g#C9dskENh`F|(-0bK{F z3$2#IUHURBt}e!x@Fg+b2k-^c6WL_pbrL+Up01c27ilepXOo3LDD^^oiBjilYNao# zq;}cw=d4QhluevMYj?7+V8WD{dy;$0CJ^N%_b!-_0H_5}SLw-~L9yf&_jgw(3xmp% zm+eU;FMG3o`%B6faa?yx_a76IJslIKtV$j`N_C?A*nWKSvb*OjSxU~x^?eKNSamJx z8n5sNa)C&?G(VJdRT{LleK#t=>-A;7ujA|2LidD0$({6~8kB9aTz8jlpHr%x;(wB^ zfjNGM9lpbwsJl)UewQrVtIQ`0aW*ak!M-<Aj^g|22(x*7=&JS~JV-y1p4{CO?&6-d znTvIO3&lPDQg=`7$4cjNW0kz(vF(-nwj_JfbpQ5P_nKtSz~o6yd>`oVs|l{Zl}b~g zY=Y$(U$BtVJ9s3Ud$!lxx#ioY?G#88jeSu-N{#L<ziHn;aC{HSRlCaMf#O?P6d#3D z-@JDryFue<@~PdEda#rKOP&0^>fBsd7|~k2tGTCpLQz25Ke+Fc=Khh!`f(cT+Gx%2 z2#hn`$v~@du9b0?`LZ{zy$x}Ld^erdRCt(fW(rT~`<XKechkuK;|`uKZPar@527mP z1%*Gg6#kH;;V-PMr5ohwhtSPS;rz0mg>}t^pIo-bFD$Gp#I?r7bCQLhaX}R3i;<qV z9@vDgM7a`e>b&b;<<Go-gFns1`Qe!n<fm={Ej}`f7tk^=D4Zf$1t?RilxK~Ssh^%v zc(dQh!n8HX3f-@^&D^tN9xZ?mBx@GDy5mF-1yQr$5j_lY2TQZBik`*n!u%VN>^UZR z(juOJhZL|xljWIvEQ;0xiuDbu!9N#Q0zGyJRu@eFUj>g2FvL=Y!T7SBWY1Yt&#Itk zhW)HUKRlWF7?t$)>cS&5w-T7|J^FFLUTyj|u4fh~JVGLkRHD{Go9r2_s{M+md1joH zJn6K=_L_a8)Ottc38y8xYmz-nXaRb9J1y3<C+)JUn`%{&OOkj-ao4W4J9q;LOWh?; zY<L9YA{lNED&DfB*RSLi`@4^jhZyHkB2*GYo1RCgJAT<G5kEhMINW(ttoPHb^$0?3 z3uJYGJcgK$+mhzOJ?1gQDKY}M&3(mw4j~toytK(P2+B`O&*sqchdbq_<TmVom;J5$ z9s73@{5wN#`|jb}))UPgI6Z}Xk-b|$S6V#c;uAlwp}MsF($`n?sD&Sm+!2}|P1%Ko zdzvy$w4bSsQx$UYc28wDf_t!*CFCCuq88TN^dSAeyFk|pYS0QlK)FOUt>;NQPVl-b zt@TZ7tC6<rmzH^52C`f5mQ4#hR&BE%+>tQlXeO$?zwu)z(%aIc>!NMu(>&li=6JOG zu3No}K=+}AeLLs-J1>mUByR30yPK!o3*R?}saj|p>I=V^`SiXxt@X`4C;wde)?8Td z3wppf-%p<Ki|xPVuv-c*>Pk`Sckq)~6&g1NERj(S^!!s@{Lxdq%kE0h<6wHwm*fi( z+EXO4Ej?Yel8T;-=~>1C-X7I+Njy^?w(m%5J?W9>%Cw&8=gJFu2JRbV@<q=`7xXOj zu#Eha9+f^O*7Xy{o`q%X9>!bp_5?qql~TEEZ=&XMezNuA_4Fu`mp$Y6F2#V~XHfNt z<IO!6@l%Y2#f}f!w}jT;=yPx$poKkyCWw<WA8Vz(G+B5FizyyZYloX?m!V5nGe>DN zdTA|XkgjxYTD|K4{{Q+PMgBjc82`uor%TV*s6_Z8mmc)eErPX1@;qIlFTm7X)sNa~ zJwWjkeydBBtGfHKJIXL!dfG-MdoFCGO>5`7e7eIZoIa|MD4ZcndvKG{ls$vj3vq&; z>Z+?Ry3#g|gl;+#dW^`iN%~5QZvg0?VUTstFw-6_2`5>2wx#eAz1g5E{p1O_Y@(~g zeYYvDeZTX#tlGv4B|yE_(RDmUsCGoXdQl~FKJXk}_GS`&Ql|*FR>?xJ(gbUtXb1C4 z&4VC%^sAT3yQrSkYKXN^e6ZHLe^wuJp9XV~#^hon1x(iw^6mwEIux=L4ar>2dBOW3 zN``fA`yeq}c2+(2{Qmvxy{23Etrn_@JJfk+)zaVY-!HOa8`n6wvu)$n^UtQUS_%(0 z7v5-UKZBmE(xRKC_m$-CtUz~x1*!(IhdkX&ONekNq?yT{EmLR-ES~D&n~SDpbcw95 zAM`>d-tAoE<4Q%Dq?KEpXa0o-SKDkU>~AToozh&mTl+yC(V}=p;Z<H+8`QljJutRr zSxeys^)?B&C$*9qWOeEP1Div&L{mv|R3id;=|ozPBK0ep1=`nfTS_;J=Qr?Pv1F;* z9ccaHsi%vVmx0@O>8B#%l-7slULD<S7nEN!WyqAMR-L)OneHK_LwXt@4*~cFY^Q7` zw7c%?(95-%Dwq$y)CTosAT1;{m;Z?0f7@9_&d^CNsSA6Pg@>dIDy*hkN2yZ!*?Ov{ zds?KQTN{<UzJ`4zxpTpUQT)!_sP*1@U#s5T!1gDQeHxaTdzx-x9i@0%SX;@fx7Fx9 zOLF4+H)uVVX|9^oi#_ye6wNf(1&DP4<0v8Ndvsl0Rx#+p;BFtI_+Ng_^r^EWQHTbl z)&x@8>HDeawo5q~aHHx^e>SGHjgAR*;ioM%SA2|BF1uUaRF&&^8qJye?Xgbw<ic|d z<3m%8_Iqudwq%9&T`lV)?V^3zp=nY0S;W9gZB*OJ6#3?D>)Lv5*VfK$>(*>qvB6up zdE>?vn^u9`vUT02ZV=lyZP>iRG;Qtb-oABH=ea93Z11WcH@ALqwxz|})VXEF))gCt zyRCli-1^xL-ti9JEC=sc2k$s?aZ`8K`Q6@m>!`QxtzNoo<L2(JGtXJywX)lrv3cv7 z8RxHDyP|u>#8uu_)l|P?<;t#Y+dPljrmx=G)wQZ?+q=6rZ<)T})a~0u!{W|RTozSk zrgMJQt?Z(1{%d>Jw(i9%Hg<W7R;=65wW_{*GnxLc?d!I7)lb}ZBK;rear2qyZR*-O zf9;A*Yr0n14vC}QnOnLx)z8;K%-^tiTbH3E!#paUw`IfjHS0Fjuim`1J`_g%_HFAn zt*KvdYPL<u&ELFz!>Ub_yXz@0n<xeB)iw%u-R4d8=WN$*DM@)*)46gbb-I0PSLb$$ zt#jjwt=rbF*wER2X7hs1&ek)V7iSix%{fbCC%+gAtH@~QnhopDF`D9D=Vmnmou{68 zX3N5+#hpsa*wJ>$%E9TkWzx-yPji?t{uG0L+Yg&IW)4=L6U6_EGH2`+gMQmrsSol7 zJN?$z@rA>Lo3Iu=AFTaT&&(}c0JAtp%^FU>?UzVszx7K5-j}}2gK+Y~RCG*Ca0L3Y zZ{~;FKV%SR+qA+5YoBXVch#>l?YDgyc($3HpKMC&SCgDz1=R}^El3_Md%Q+@P2Or+ zK{xSQ+U#xf44{>HrQ*<*#4DJ>TUK<h_0IGbd5cL@E#k5=TXq+$+omZpZHdStO5Lhm z&1=K{rtC)LT6w!8DYd__V^NVs>o%>TD3nB--aM5x+H)wj4GPoV*tu?%_IbO*%4uEQ zfssC?+iYpF+w5(pt*u+zKgVsqdDH666p9kx#^RmpnB&N!P7?Xly0vTdHc~R<!D`(X zZ0XW!>y({swCTc(*o7<W9IhlcZ+>@>e`A@hEH-al*L?v6v(8)FwP8!ANjljyR~D*S zb#kC|avyE#I>vTB)Wth9ih^*veegE3o7R%67#3G$w5;3KO(S8)(P#LqvzRZ5^l<l8 z9W38QgJ{G}c-)meywUn+-DWjObRmXxdHP6cxJrR_GwW#1yF2dYCeiM86cTGMTGzE< zRdI!CofWR>s+8!GFX%EF(!!1FsPbjzcb(fs7rZ8>6<gPAqY@<3lo{QRYrZXBxANU9 zH*TR`HW8XhDzvB(I!2*D*Oe6-iFK^Wd1pOZ7wNptTfJe$8U^|ul(w!-tIpU=izk`s zCZD^ywbvV&*|~)-^ERy8#B1$3k1zBIT;Oq=0<y&f>vee1Y?B*<NVCkhQmrbVr5dy9 zMnbn1Z*cqs);`p`-ZtZ3gmWeATv&qt*%JJFOYjF32cqRpEWzJUf`45J{u?FuOVsCw zqfXsWf?uW{zeVLImEfOUg8!is{Ci9AWBg##aWt0TZ!f|BWC{MyOYrN|^OI=DOEmwD z&7LQ!36<eN#iG9-6L4Y)r4>sIU|zheoL3PrYn7RpPj8%hUd&IZQ%otSma-{z=Mt~H zi<@K0g7BveFEFdjVjVk-Kk_ZjvqsD^_*8`t`4SlAA3KZ%2P6`S2kESPEoZEh4;e7z zR>FzI6ZBgCJiS!xr5FB${6MzqdzDNM=&gR0PJ*u+bdtf>4`%bi|AHm+bxY<ON=D^v zK%K7|RNsl|wd_ZEmO2wgLoHhqJhPU25qwPTRwFZO<XMJ4d!&gxar{V5Qu${{@DP3x z%@YRSO*mGjC}EvA_{YpjSgbQ@?lCscI{YuxoJhPyuT=wRl2rea5HYF<SB(Y(+!fSV z&fFRj@)CdbryfUydOTN~_`9E2PSjx4^bfycHCqzuZJ`omnBz|*xEJM8#e~5ZlbFH- zr`BCg2Iyn{WOLwAiCc*n%EZ8FwHpX)V!Gr<T4vO8pKSOJIv=WQQJJfpap>dRmiQ^X z4&xqQBp{)Pz_H_ABhGN{B2jtbfZ;S*M{Myb=MG}w5$n9lc@<ai1QzMp<Hi#q-c=?O zi-@Qr>C=_8S4ZM4N<5+Ej~|zYe0}9v3AV)YXAe;+R_<3W8S*>MhY%fuK29>VUImXR zLtT^=tnhh@-bX%t2Xv!X&TXpV295C#;|3wd3ZcBOnlSDeY8c6}Dn|9Oqy9(?HFgcv zc|VaMwi>PKv;FFoEF;tszxraL5<)HYtGQxoh3fRHuco#-p;m}qy-??f-V{ka8?5Gu zO5?#jsqtXDYCO=g4lQg|G0}1vF;rC5>;0jZkOx9+@`v9{Es4bQ6bk{W%!woJC!mI@ zu4Z!LZ6Z{9Yo^LT3322=Zji*+9Hod_GV?uR(mx7t;^<mhtW>@diNgsF<6e&>U{%oI ziFLDyBQ-I2a$*?~%Kl)xv%yDJaswAB>nr<18m4X`9E``1#;NZmhBCE$$gPPvv~Vg@ zLvFYH9`e1BaatI~?;&@Ls34+N#P+DNsT1M{gKMazUWmIByr4`G;vOY-v=H|yqCtrJ zl$Uda_~D>oWS~)q2NaPM;=w_CDL<`3JUsMp63gkBnx-xwudSHQn3^SqjKz@05+5R> zj_$I&Ax{kCD$)Tysfa`!UAcKfo*LLh7HhS|E2e&mbjn##S!o#ZT;dHPr1#%eZzNew zyjcA{B6Mb6s=l7Bh}iF|zeR-3%&S9Lzg}AYIN~&FnW8)U@}a|cm=et-kVt$&y{=N6 z?dp|>r0OJ6kecNLRV#8ets<nsh7*Z##Fim`ww6~gRX1x`Rw*zdDISqTqKydE&aSI= zVr~PILl7mlEM=ESe2}<R91!HcNLbB=Aw97XoGBr$w27TI@!vMF%OZw88XI#2xtvH0 zqWwCNIG?aGcIauovP?TC&9g+JjPjwj!C|xO=PJ?vqNvJ`CwN%h@Fjl5^@P+iFucPb z%o9gbONA<vwq-)e(lWeLs6o=UTqs#+hOZFnP}z8fpX0|*r5?(;8|C2emHvc#iAW^A z&ip;}qWl{%Vffdncfk`aJjue7Ej&fx!v~b{{#rNLpI+g4{LYYm^%ah(*SHLG-O=#@ zB&3GC?xgXH2&+>4Qr*dku7SEb>*iH&AuOd@cS`kpiI7sQYpnhR5mKskO{zsoweD0! zNU7G%ul^#5$t12@P<;y#GH>e^DnjOM-J<G;sHIVrcU`jj&qT<)tvkJjb!6VwwbWEo zPI4l4M$HjKEEi&N%?U)T6{59fBN1DK$klK;pD#qdh9~e2A<kAU9~5Fq&1IysONgaP z>>44K)qI*-uJcB(Cr1(q-i;F~MOB=RYUUE-Tso;a!D#{W1B6FkPcMlC@6w6HZo*X@ zP&IRj@ik^}?1}-s?-N5AdpXon%_J#JQ7$~eLJ4w>|5x*dOijGKClY_<Cf<HIL)F|) z%tPr^#aU7e%*(0F<#bi^ml$P<_ylQIbNR~)7n3v`LIp~ePGKERmvFhAxZ8-KoaS^% z3%fuq1!B-Ys?2l7ok+rhSB~Q@M(-xRFuI2Sh(IFoU3yj1qpnsqO?BBe@)CdQmq=EK z_xV%bCb9D0(~B(BhiynqA}uv$hixACD{9chMdd51$gbAB!k>C9$*C)d#K=$hiB_W2 z<Q@4*ze1^L$q)Ebmj;s8`HA-!$<O*VOt81ysra-hK7_ADg}5p{<bS9ok+_att8So| zYW1R1!kvzh={oXvasM$Q)$FWQul3r<%klV4)RIVWm^7^PIyQ0G);Pyg&)pxkZ6Ghn zg1amE3QX|!O1_R2eC{9~P{HR7-sJ(GKbUhb{0j#0hbRQUr|JQNFH{5RRqP`-{)>9m z*LH`Om+_VV;aB?)6I1ydT4NNaOuZ)5tBy<IdiC0<UU!TmGki3T=hq!{oG**g;a`e# zhiZX3{0HM+Agl&DdHAD=^Q!gO9{%_c&ZG?V;ZF|Xi~NKtfy18~!miZ{@#9J!*g7G8 zqKJASo*u$i;!}k9xgr{b_(kPdD)%`;{Bj8Awo!;*sYEZJ5qTOOj(XRq0y(8TtRMA_ z#4@UaBRHZ_-x~RC(k!bPtm*F@rf9!b(>H0lM$<P79jnsxEke^xtJu3$%a>{THciJh zefub}AJg>rb-S<WJ2b76HtNn%kCCsEv{8G<aD7VBM%_PoHqDYc8G=!#Ph3xOD!|%N z*C#$ggv!RK&sui|qdqs}TDGQj+6VL6tA=n?=ivY4mc$M8TD6B>WQkxz+>0rBBDZa@ z@+a{VmV1lkl<==;n5%gVs-I`XZc1q;5<Ik``{~iu<gxN`%BY_t*nRQwXM?x{O+2lx zOzWvv9wohLj^5$FkHl3`+NE5oh;{i+;4$`m>3__3kNhzDuN(7v#a-xs%o|pjj``aV z9wEv2n7<F<D$^H^V{Sk4VbY<0p7+5qC;1icr-ezaO=ITzwY<`3s?o1i*XGi;z^^@) zf|iSpF-gDnH^i5_n=vhZ?e~bP7s*z?HcpaLgh~n3AXJ-Qo1wNjLY?K;tS72bs3m?4 z>m`L+<`3kRxK*eX{-7<?rmv>Q+;QYbh_6DZ9kantaPK0x$*<vwtEtU?4UZ|`Uff0P zRllH@YW1Q<S&g?6Pb7F?5{Z{sioLL;R4r(!3Tmo46z$$Hwl$4Ot`8|4Cdm?KmG(oH zUkrH>V3L~HVj^(@3vd#oL*32U#89`kI|!)duv~Vlu^%owl<QR&RQ(D5*GWPZRH&?^ zR>n;lcN;YacOB!p$2~%f@;m5-{?T>PxQ{3JhDTNKxT`C8!PUek58Fyysi1NHqgrIn zj{8*2^CTq;-MHO~s22mDR)oH37`J`gTw<5Aebrgrxc4U5rpR74ny0rWE+2g_5xTQ0 zMzb4y&&dm8BEe&&=H9rc#(yX<_DtgQ#@KHvdHh)T65_F4Z`>k(@-0LJ(T^WL=6<NZ zIsVARdit~z(VjPcTJ2v5YvS12vGm+Sd>KEd_8cN4@bPnNKShKDKEA2;H$>EnfkgxV zLBtdxk`+To;1YEFyDE+(f&-y`T2xD;5Q|kyQi#?>Gl{hd(Uw?8L{5n8&<_%^T!`Gz zPZP0Lh<xqML~IdaN#X?}&KII{@Bn%|zC(x=6{Csxpb#rZ&Lv`(5M7D0h`2_GHG|J3 z;yNMLCq7QZmxS0@c^45k2(hi=r$pQ$#P-B%MC=jbyhI)4`aU5ptUR8GM})X!V2X&J z2(hE$LL#0K;{5}AiFi?n4=K~H%2<y-V$``bCe*42fBb||9|$uhjlBkpVfPT?|J4uh z3)g2g7g6=2hP;O@B@!1BgC1s3kBP*O2@hkjS6M1}(V}~m!lzk?O><Q^&1><uAeeLr zDxMZxOzo;$E-mR+w@l;~?(6-=go;9uTINb<b1hbD=2|G;9adD@il+sC2yHH2Ns*G# z&DSeC6gQW%1k3JFu3jQW71wo;0^-JrQN;xwa3>ObBym)PT+~668W(DAK=Vq|%!pd9 zq|OqFGr65PT=`M;&1mMipqfeN!_0i1jPRTYbg1RC+`>UV9crmo<gbZGGOU<Lun^S- z%llN<{6A!g7mP&WWoobDDJ5+zMcgVn4LhD*_<u-ipK3pX+qnatav@Frl@;YV&%dAr z$yy3Uo{`b!i@2FbkLPI6uS@|BOAyyGdHE?4s^SSOlB`GE``HHj#<MxF!6W%AH1XUH zl&aZYwNBpOSmvk1;3+RMDs|jDnHWRdVJy#!KwzC(<`ScdR|Day0bw_!E+1sXFC=*u zZ18ds*a!-kWZp|nleVn&{E5SP5vZWMR5>Q|$)BWl-(v3M8h+SW%$;)RM7m%q=1v_s z<S?5{PgH1MQ#+G?)aVJ+rnb3OzajBOBGjVhA2U$xOhU|3ds&?j$0=fz5VHq!z1ItI ze1g+8MTj|yXb|FrYIban5GN|4QHYZgJeW!C&e7w)4R=21&r3XH+-a=g3q~?t=g+UG zJe+njdb{3Vs9ez=FFJ(BpiIo3R?YK2QAZ!*^ZaBjYw*TgM+PPE<~SRlQtO{y(Fk*A z*ya|i$n@2^e`b6%N$JZMKkZ*YRP^#iapLN=OrH4{NKRb{#XT9$v#VLPc!;`uzG#nf z`35%NR&WBJhQ$$H`2&Qfa#~`4jE&)jK=w$*9uyz(01a-yK8o4?s51W~2Kx9a-H7nv z?>?#C^Nv<<RM|MLMjXN%T{eh!8yvzM<6@2tGpEs;_?};1R>=i|WBMcNu1!b^lpL5` zcF3f$o;QPuhG(tjhF2_N=37L>u4<WCF@evm$FMjbuXcFeu>w8sqZ{aoYP9Fg@-spF zL31xPAFZ0RegnzGwpqGgp~kLa-C2GrFf_|g2Si}?W>Wl;SdE<<?wZu857LVz8fW>r zKzo*-_gexJcaw?dN}FJ1Z9*B!`wfBaqoi9;@8{0)vySfVF4G)zj&$A0`z0A#pbTYf z`}>I9A?#S9HR$(E;$JBIpp&4vY@_FWPTW$t4rC}P{&9g|EeYPQ1jDJ0(cl<IN0E>j zWj4LPzoth}ZOJf%trgijQ;A7glysFlKK}rM#@#8lyR(S+uF|rKl9NEAVHK1NjR}&q z{&>(@jifcLzGwn)_=!uSopBLb#n3{!-f=vY{DI-cqJ^1s_`82qkHunO*~sX+FtBX0 zi+O_Dyp;*ho2}O8L1k)z*1TYBv*g61)Jb>-o5ZdNeDurwOVkP?Hl}M+{_d;BQ4ZeS zb%E#mWm9>L#c?zPKUQ{Vlo<~*#mDlnkH(46lEc&ELh4bbpLaYu+eDsH5b;0zDP;AP zcxVak)S~|G<HjSauf!c$eKlSgO5g_1|5LnzF9vYTVc`EcuJ$i5jlb_9R}ArfB2IwF zN5n~<YI@{<9rm$VOZvM9(E2M0{B^u8I>^t)2iiW0L(j!)SPjRC44$W0PwMR4<oUmi zSMXyKpQvqys-4~0xkXX-AQ^|RRSswUMk^u?&j|dl6;UF=+x*GgtN(c1=c^X~c=Bg1 zUq?J1AI~@I^C+25>ST)KJ#n8K{Bub16s3Dld=l%j=-!a%*W*5C!sks*M86&%%A9%Y zJpYEcy0n<LY5PXc|E3V+Hi>^LUco|5^Hdsck5_UUh@dP41SNq8NrE`GJ+2DgA3-~y z7&<Rr&CeBtI6tmtln@u#{k<nXklzXPPNn~zzc%jsYsiE+yf!|LO$f0rKJ<AK5n{bf zyxS%=#D}V}7Pqq6t^3I4Ts60|@u__AC1%>=L-=A@h_m7Y`65J!T)gr@L*#AZ?0AiO zYeg2LX6b-L)j^kV>hO2-k26kFJvPTDaE~~q@#hfzcf}9oXmCv94<-7i$JK{<z?6z^ zaWT(`*F?*FaeT1yOzWGnyGhE9W_yNKTb}f^+|ntHc{Mj21ZRN{e|OU)1Ti;0$qqtX zn-?E$2O-Q;!pv#>;Y`0VUZZYu#IT;LP4S_&zh)J<%bqh2>p8<0FR9o?WIz%>DeUw2 zv}J$y1iG%3#7~l;)-Afz$?+jkpQlJ2KvI038n0zrI3&6w_2_G^y4dxPj#nQ^lJTo< zxO6s6u4!>~<qySBTxJV>n&KKxN_?evuC-vOjgB6_(JZfEM^7XfeZek)j}8Z3ue<Sg z-$0TQ_~`f)d$6YQk}@W)-UxwH63y6nwLJo+VqVlqziI=Ps9NdOub+a6R2x5%JCW%! zSf=1yHP}PqH7q7AL*upFg<ela#MRSiSx*9j))OLRJxL_EvL)7k#6sKX5)<p6$-cz; zk61L;w_}c2_s0fD2i}WUvnd>s6+fI6*)HPoYW0Ldi<)tKjZ*bXGQs0`RY$Padz+Y- z;<2UsyxsIFAw3rki9aUDhrhdv?vNy;=VFs1!}ok_ATRtl#L?fzYNH{&5UYqzwHISm z_CQNWzl()JQafN3c_FQTiVfk71;=#WoNy>l{MTaDf1(L6zu9V$JEeAuW9@%~R8IKL z2AK(^aU%7t(rDd$@RiED6hCqU5nMLZk=@WN)46^yoa--Y_x;@$(ru^Y`awsoA9CgT zVOOpniB(3I;YVG$emtD(P~4-*8&}+?Dt<I>qs;kSu9ZzrO(G_g$jW!aS)nUHb@;oF zrmB*xeAh9lZVyi?StGv}tBJ0W-;ae>6)C4Z2S~se>R2UULokdD<h{N;>J^9m?~s^m z;=M9zvcg;^BO}E1vC8v@V(s~ij6@^H=YLKdn8%CZ=VKKtr5B|eVgtTJ60#@-1T9KL z$f6{3_Y>jF)w5kX{M|=QL*_man;4n9SI26ibN8Cq5PL>CmtN`h;&89;mrkkI3#X&k zi(~4dMz`pl?vj{er@J&Z5ZgOT%Q~{d#e8q9igScRB;Oa4iyzIEp}jmdh+V;<){z;+ zkSpo;$LuR<P1VVjG*OaY(KSiHm2}d&5$1c&<z$r$<zjkG#V(=O@I5NuD;OguZxUgd z8Pr1S@L<}pB&(}RW%W^7!ekb#im4qAaY+WcV(Kz9%v>F-jAnI>i@7#d9nI>xnA#&@ zQ?mMQM^>*O-z2LWLs`|7&MHy;&T5j9bQ4+qC$cK}Y!2u1qdFLW_wh54&*s=s_S}$s zzAF~G5Eka?G1rB#OY#ht<l<P3o#X}Vi+^TJT^+}+()(M=k>BSVkl(gYel?}@OH{w} z%g;PUQ3ei}-%F`E-$(6AmS@L8cj=!rS$;1q`;xoavEk7@>G)X9JzADeQeh{AGa$?p zW9t47!qfRq6Gx1Je{!s10QEM%+iFqU{=)YXr{PMAz3`Jnm<jon)trZ{x}o<%*AuD( ze_kwhDjV+Wdcy2*d~<y)oa3i28>op^2KDeNl+TP>3#4nw<k)Z~zpu^syFWl*fsjm& zjX9nr)W-%!(>pHac))OkE4>rK>6M&M3^PMHkF#U`<XFWe6zMz8dHJ9H>=6mFv?wy3 zY=1Dn(BV&sRlHK%&uP*YNd2?pd}J(kBqjNu80WJ|-HbEe8RmGjO)2nbZ&f0E@e~wb zv<ecXs$l1AR6!y(B0As|;SrO185paGPO?F+DyRypOBGaynT{%`ja6Ju)%$O+g2Azh z*Ngl4msi2iSge7P{7+QDa#HW33eHy|rK>=m620cj!>hlOv|M1m=Bv9(xu$&GS9gv= z{KX&0w^u^E;j8zbgm}|#`Kzz4f#<1*J%9J*O=#)uH@df`<I&r1e09U89{oM%t9v>z z`Mj_0FNFB5FZXb=emx>qFgIH?@OKZSYD%gHPmlQO`o+&C`I`4pze+ti%p}!K`eXiJ zzH;|dQoE1)j!Tdy{m?Vp<|=DxSL+gYN>A3*;s4klG=HomVJZd^4M$n6q$7ds4F{s; z0yX-(uQ7q_MIf@1-{-4qC_f{v-ye4UUG|Ntc=iB!*4L(@z4=zyo8XDV`)C`J%ffH@ zj?0*D`;N<)8(qxr_@RpviQy(c^yp3&gj>St5AB$82Y#nNsGI!iGdQzjuAr4s-&K84 zm*MSXK#Km0zIsq8)%GRvU5GDh_oRS#Yt6qH&E39wIw-=Q_SI8CA+Gi18J~>xhr`)z zQp3Yz{T;e#knDcgcihVSw?CRCa7cQt^3^-~V4Br`BgMFdr1hnS;qybS4=TQT;%4~# zro(kw{#<LfxWKw*NF=^86a~9F9K_-Jv5dbvF&9CsmVCf98RIpQmoRg!i@DClT<>DO z+aG5qMjl6Q^ws@l@J^xRYg0I1U=H33kLWDS&A$8nFV5@_=|-nGv-}L~S;Y@$mNWP_ zhdgI|2-T8)TPhd{lAkI3!1>^jK<KS4enU8`WJ7NVe}qhI)TS@BE(xwB{wEbb6+h2A zgl-(muDaz?I_K1FWav$6e%I_~ZQ~+xG81`g`C;jp?n8r%4!+%dS@X@qYMLQ(1jQtG z0(iq?mhbyBscvMp%<`u*(a1XfY`^w+BIvG_KLtadyrmDEoUU5N27i9*JZ8}0@BSId z$`l&wA7S5Tne_4-zt@wLq@DfX=!)O!4I*OsA4TM?JMLg;_)1(mH#l&vO}WO-eRv+6 z8|;tg5BuVff*TqxII~=Rg>vd9xP(kgh`5<_OvrZ=aS`>c2eAd+QVQq|kSu(z41BK9 zBL425ke<xkN`JI{!$<qJ9FLN9vMiR)V4lC<_xF?DVj+}Tqr$!~4@u5sDn8Hmzez)` z#NzXk{Hb}trzH8q)Pft6ykQG&O7h321)rK^Zv@X*xJ(&cID~Dsu3YKGPp^KOU`nxD z)JNzw9?GhM&uGYyOqyl>NFbPTP11g5oTe@viNwv+T*U^1kMav*|K!8iDnE%tjB2#v z32jlmZE?I;{%g`yr4W<9#HOr%N4;`w)X`giD$mrsSbfDnHwp8;*kVoz4q@IOTO4_$ z7W-jrF((O!NIno-Y>%BVe-vh_F^@eI8_urGru@a|aV^J-Lse<)iI{v%R&&8rDGf_L z8JqsmMzHj%8ha`>=n~2o4wd*6br>X`HX(Y$rwIx_iRls0Dylhentxi<oPp(EZ1TJh zkr)+u^wTXtZ^1129VvW96k^+GS%o3GdAe1zFY!EM|1Tu|nDD9eGhsWw3+$MA!VdN2 z43*g!N{0GUS`z`Qz<B(E%9Hxy#Hsq4>y@*()Ynxp5|!h7`t0vMpRO8Z*sqFZqxJQX zST<T;AB|<B_4Tn>Hd<dFk7c9v^@%W3>g$@=aCSx2*R`(t>UGsuZ_H6&*Ts(eGX;%9 zD)D+pecePI1|zNt=zr#;zCK%2K&tsx)BL%jW;6agoWCQnzJ}DS!dzc5@`MzM>uaQD z7uVM@!jIP1y8=50TVI!us;aLq5GYw+szHj3v!{w|fmhBtQe>S$kp+v`FBYN5I%8@% z$Jj{aEsv>nJ<MDYQww~Uc}`5N^kL@8m|Et;%vE8g6xr(7aCSu%*?L!z(PL%1UZr&2 z?JBYju_?KQ=n^%v(NSdK-9uH;eo_?En~SPQHIE?|rFlzHbEwG9B(Z}kvNfVmTx6GM zc5#tiE&OPaeIu}QutoM8QdLFf)BSI-Y6VDF(d3|t@X*NLeFS}^NeX6iEEip>ro?j5 zrD|#{7hS53jOC(B)lspWJ@nGi(P5@k(e&7Gc12auajq(w?W&^Lt|~e{Hs@ONBmkp6 z$5BPAsl%eBY9YP<BV}@8QJJVJT4kC~Dryc@(Z@;bpsMI=qEK8#cWZWW75zf^(JFd9 zuye3gG?kK}s;HenP&?K9`D=M`ZHk;iwO*a(m9wI(SFZ;bx50X~lkOy>0ABYOMJw$u z{-S85z2Ps4R@$5XqG+Z4)n62?w7-R!QfY7b!`T&8X`ZXnd{?FUu1br=CMDigyk5l} zm3Aj}SX61>AVsOP@}g2wmG+QnKBTBQRB8K3?4T-b1bO1v6sK!;aiyIm{Ai_h26hg% z(mqP6s?xqmKq`#~IjA|=3OQ%0w2t%2SyD>tj-a%H>#Y~*PDo1Y4*#rZY3=dPik8-$ z{#nt|`hkB|w6yN>&x)4T-C?Gb*1i64c14xek9^1V{DZz@D}2y*TyH((AHTAtxU?Sj zqu2A37Dq~JAo(Dr^{DT-o}X%(A1i7OmDbrLc2K3YRTPRBv4Un7m)2*5A1$rh0y_s= zT7Mu_Ra(O-D?vfIkQ5nbPZilBubg$H$O^6^JEIjvR`A=SMfM@TJz8WvetWdYuJqfZ zMYhv#j~3a7!%Qi%T~?8O!c}BfyNc{;SCL)g&%Td>#vwKHNk@?_rPzzsugzzo$Uaq6 zMQZ)}uxZ|1)Ep|ZJ4o!HitNXtP+Vkx(Cp$O8$gbe{b-Sml?JwRa7Ct`HE=#u*(~(R zxh|w^&I-yV*!C``yKY&V&hne1Ws~!pqh*u#o1<lOw%;5rn<aj8v}`)U%o-lw*fKx3 zOs8Kli#}^u=_;F*uCiI>Pu)*J<B+oHa+J--DE6YV`2s!Z5rs8Hb)m}U9@D(Gs5w+N ze<87hDw}HZgcOR)W};>nm(4ukN6V%?u=5VehV!AyW{y|Rbs=SQgsW`6OYutC9O1V{ z%VvV#8ZDcNervRBCi$(=vYG6+M$2YOm?>p*q(7WpQCr#!SJ^bU%BI0pHZ%Q(*(zcw z9I1k19A)zwby!q3zaT|Xm{n94s%+je&BqlrhstIeQ3q8v3q_&0Y&tZ%xNNoyKUy|B z13L#-Hi^WYq^h>G=LonqGR2eKj1#Bo>lCk?#c5Hbng6oye}x{fsf9lF^4VNWg8y(f z*O1^>&gRk){OZ|UF@pbiHW!NEKPg<MjJ`I6ZSs@f*x!REzp=N1C%>_`f+xSRf1J3O z#Hr-zISzqfbmhr!Y`=N(`%P-D`Wd~Hj5TPGsM(;3y4fpd#dhW3H_2@|f}7n~j=sb# zt;_8>CA@Dfx2KfwzP;R@QNp`%xjmtT_nqbTd=lPGA)ch|mf`F}j?;EWXbsLQxAufC z4>d1zbtt?$8?R7NN`S)qLG;>iA@vocTFsP+<eSLf?YK0YZ(8pOw^A|5!B674N$Q}c z(Uqc5JdHl9*~Qc7cHu{-(G!84<86ofa)zGtCMXqZ8XZR<sGyQaN{bVyO6yFooE4?C z&U2L3(z8)o=XFL)>-^4WX<g76Ev@%-Moa6$&S+^}6yix~T{4_~P^I;LM`?Y)QCc5x zl-37Nd4>YTA*E7?me%K~ucFf0LBb;66D}TAc-NZNE5og!(t4Pr`Wnq+;T%8YeL)n8 zOY3dTE-tMR<TlxlmeveuU^@p}S}RFamDa}zSOuk?obcF{etg1NRQ0vkD`#z~uTvcL z^}P<%*D0YpT$&NI#5aa+aD~?ty1y0PsiE6j;mr@--3o6(h$r>6XgK?z>gx<geJys> z*J4L~oq2rY5)2^fr8Qb#j@#O2NRNh<!cB)O=tO3|ZCcyHt)cpwK_MJeeVrx>#r3sJ zvy1ENJmE*{>%Rj#$FsY9^z%)syGT{l7k?U|xV}Eb^`%}^rKzQY3W?t3?DFN;3Ynl^ zUX~NR`B}5f(?7(}<=;r$qFKCbsppvi8lbgK&}T2US>-R#@jUaWl^*}8Lyb{U_vE=8 zgZ24F>c&{Dj#@R7{4i>JoP=rAtX_@kBvGZ$OVH;EVu=q%KA+DGc}vst$e2ox_Jk}8 z@^^o!Q%^GT-d=Q<@#k!C#2ApkCK8@M+-jJ?4Gl+F91{e8DBx<!I|V_Nq(2&P49oLz zEX80%8;SU_hz4HsXC{uJ(D=<&`o#kIrg}(aAbAr?QQs<a`=w$s&5rfmgB8gcr0{;} zgQt%%bha3hL<BK<UMGM40moDg{N2-+Q=*@@ni~FS5zB2Qr9+>H2#L>N?n2fv8DB## zm}$tL<)FZ5&eFvrdGS}XV$d&aF^3L+_wQDa7l$YbVa*?66Ju=RNSl~#6Q^24!`U{` zWfT8p6Bk>ATI!x%PIdNai|ehheXbP$=(k!lpgVvs|I58M(;mGn<Zu>p7z^3`h3vM; zale+jU=r}oekZvs^Tj&{5k0AS7hC1TvRckt$)AM5@lg%@-5*&=V>jp&G!Ri|6BBHr z!6r_&iKIm|EVqew+r)V`ahXM^vAdRHY51(g^;XzEN5+mmx6}16_dYsy9L_=xV<Ef0 zklp@g#_nQrS&xaC_Vze+@;B~r(AuC5fA<eo(a>CAHO+s&O?=cQuCs}+*~D!YvB>Vo zM~_FKNBXk<jjM|LwDsqQEQk6Gd1L!&*5z%q%6x##7iVIJS^(usscHJe3$5wp7kP>O zhtaxTelY`Usp7Aud!76v2RKG)K%ZCcBHt%kP4kbjiBoK%#U}C=(QMl;LnrhAKpp)1 z2;naJXEo%BDWw<HQp+D-<2AOEzdw#+fd>9={?g9;A6QNEAGV2~+rvB)-O#<~i2 z>HFlDAK0>OY`)#is=rv>4Acg@-XNymRW^k_uhuY_UU8U;$9D?nP>U&woizBLCO_m; ze3@WR`Xn`Yo%WYyuG1F%-5*>-DY3u()bL)^Fv*0z0M)=>fWoo*3z~Qj8EE*T)zWaI zP26b_#?vp5LkmfdJoV=UpT%PK3dPR)Go{UpFSk*(gC7LP-wgIT`Rl$oc4*-5esL`Y zH_vLCf4WWNY@*8|7H%bC;idGl$Tn<79$SG=-{$=p_hBo~519>hXuEP6+=a0Q?i5D@ zcaCFCk42zJzDoUeT}cgo*C*+<tl<lmkSUaJ>9ozV>g4;xyPLH6V(}ttyOZyj%I{JH z`IS|Ize0qgM+1NN%=Hv|uhlgFt2S|~P26h}kK4pE7P0VUA{N=bnWRrbxAYB{;gODQ zBlAP%Lmh`)vYj=<fo^89C$Xy<P0{|4(l&tlm9+6a!Fhz!{JCj!^{0w4AUSuYP5l@~ zCx0ym$A2NB-80@ziL5fkPQ+n0G07&5wTMNwIg=?`<kjKRw{yIRWm|uK$g<t13HvDu z`%gOTbFFYxs3tg$)D)fkB2)Cc{$3}4@dO7F;qU%6`}i@dY5w&#@pX$>WLq!+*JztQ zeGlaEh%s9~WZBq#mSW^#-9~moA$gtrjS?Jz$Nckm^B=OB=09x{FIvPR+d|Z1`u@ok z5o5M~$g;8fhms!C#Fk^+X9fj$<B$OVY3Mp5Gt{?;GMlKdh%uk_tBlUbD-)KnuLYeP zacs5eWc=;E!2{<HG`RNUDuc&g7s!mi%BLEW!wA%_33?rUsy`xV_@BVy_@@FZ)u#<G zGBwKrnd;U6*UTGeLK#2C50uA0XyN<(K&aXhs$CrTUz-c?_<vZ+f41<O0Uq|#;l{i1 zuLS(s`Iene1|1JO%nEt@qk+PN<E%kT`a_M?VNVA=O#DhB2q9*N&=h2K{6IhGZ{)|V zfgS%s&@idWKg9HL*wsNUC;uSuyz<4tMyB$20j_AIzYM02k$)~5V2CL*{0c*i9_?FV zKa5$#nDU^*@izuu4I5*rj2~`AIDVfcHOfk2_42?}_2K}J|4oqG@xQR}Pc3|lh4=WL zKiHpGJ+v}jeR%a?f5?E^5wu%O@G2|k5sSVQp<#k{=Hc|iJSSG3RCz*W^HBQf^GP0` z4mnPp2Go!WUFPwL*%iLuOmmW+-HxO78Prrc%ThmO<jEuHZ<J_OIa?G~)i8hZNY<+^ zS9WW3r%Hr>tDJrZsIrp0AO?#Kt`e)NeGYXq#7K~zEHP9|D7RVS&|%(W>U<dYBt8xw z0jpYP1nDG#Q0r`xO^h5$y>bMH4fSnr4lncPRdNDEm%AS|g+xb@&S>tIQ!~aA(ou{Z zA!c;<^|s6OWADnuA@mdL3ee^H5w<{OWmV;%N_K04YA^S^iFH({lPJ3;h!}Au+ath? zDcXD8?Noa>xcx|*amq+$9W~uQWuz(ta-HMhnrW=N`cyS&N0(cp5gT#ysZ>nUh{tZI z5z@Trqy3pf)BY`|R%S=!D)Z%Msgasd>1RoyVU{;@s1}^5F!g&(;eEb0n6&8nk02H8 zOjTa9K1BRj-BqWO%yH9c7^SC(XR~!OY%h)%LmxkNB%7UM2dle30bS8IK-f7R(35OS zJg_H+yRBET%(bJYpRuu(=!<1`p6IJ(cGvU^IF+=$o@!eaoAb+q#4NBa@W3qOOwlE$ z$t({{klWKLDP=<j(6^9n$5^r1p+P_IWVje1`dXIlQfS;;OeQ_=3@t@PHF=~szF0d; zES>;oni{fXT6KoBOiHIjlW8WKht5(p*k<%q4Te0)7*C`=vO<6K)H)u!cB83!4r!ic zJE_M%XFH{NdD}D1J3DN*XjUw#q{`*ocgP^HCrj-th5T3+&U~fJjn3&*@FBV75jnc) zG&~li(bwANNEW!`m4P89S5<1ebQ8uE#09;Yc~b0a(9E)Hr+d6eZ>q*N;CbspEE*2a zTOY8nU3&7jUOewy{b0uTvViZ=tO_p<aj@_=XUjZ#?%a#k;xlZw7~2`ZC1XU`_c{Ri zcZvC6o0(ov=!pcS+4YK!vZkXH;DFJh;Ct<WpS3zl^@4iAc+?JvzS*Nxi73%EGUIz` zz^@x`+5l~fX{W`gy&UY>$~mX9N7oF9a=Zz=6>x@OWdXloSnbI8^+6({xxP}%Ut{#F z&(a0r^+N>D&}XVDzzv#Jx^$pC+bCxMZRLzJ1yG)1lv9AVa;f1wNvka|>aEQhE(utG zorXnk7eo*F!(jA_-lh<;fb%q~bQb7}O3OgU_cDMd7>n(IwncYp*ukjH6l~5hHroK_ z8de6-?#7kGqqPd;ea~4S{8yFuI6ufB;KQ0#IyF$f$S7w3ZDn^BF4sz5Gs<oJ=M?z3 zCtwL9{Ccr&{;Cmch31U`E36|F|M4R}o-$%tK)PO4N9kyx{4=AR0koB)(ejgk=e5#4 zqudHuqkHz{lbqs4@cPa*<xfV@9mgQCMw1`#FwH6*EtG4Fat6>=jz+8c(n`?qy%eCW z?5bN*k0_^I%I;;`rJjTONE1sNpzThHwLIcZ9`<bIyn7YY%5zN5S->Tlb$}u8>b1;t zqn-iG8CE->ZL!3-7>g$x^%UUQhSdRRTP!hH4vT46OdE@BfVM^V2qI<}@x2_Nt?VAG z<+{f^P0v}t(fU1{1LfQEVBj`mAOrY<VYLIks99_?(+dhc(WQ<|yznc!xX0K_0Ya1Q zIr1IH^&d?18WU;2pBYvgApByhY2zi`v8#iY9YDK#_u!yoI81{BXe&ntCl-f;ILEvO z_mt6oO)>su0UP@qLV7Hqj+sU|19+Tf#k_8jDSCw}<Y>(TwEJ}o3mICjjc+miW&yve zS*7a^$`=^r4B*9@Rmy3J0R|vVt^<D7*lY*<oaIoe7u0QmAfWBJJM2>3r_udqjMX+k zbSTvb>efII(C)rOHEJdFM%4&tD@Uu5{k}vif6VmU3TJK!SQ4T8b&nSNu@TP#=IFT~ zAHKH~Ft1rs2cZ5t5Cq&65(M?JKu}DFU*XF$#+MA>bDDMF8Vbz86!fT?0IQ4>?SO*~ zD+M^)u-X9^7*+}}V_5BgND8MY)eEX85ClY0L=aSvBImk`2&3_(5nsFMssj*SNV$UA z83+Qx3lRhr_|$>^?Q_(Z9DIQ$+jCd27<y3;@5^T7TLIgQmu+x-vthLYe#o%eqF%Sz z-U1KN8ncXMD>Oe6upo^yUk1N3P1*LKJ5qPS8wfD!jA}LN34P70^l_cGcC&Fj3;4QW zbpXDpSv)A&UQkErHzn!W2;g+h5<yU>1%fV*;L9G<aR%^i&FX6s!vy3hA%K52R@(s) z0DGA-;Y>ANwgVyn5d;;4bHE7~^(hUX-Y`Bb1+;xi8=s~bpOyl`3-&493o7tw>48!V z2WZOxgeKcN(1g2B`~0Bsy%q3JhSi2JrWnWD;9{d;wF08=68C_uTBE~gW&y9)EcV*{ z1Q5zyMmYnxPO}bNRWJZ)swuz^8Jlf@J(feMUQpKsf`GQ??#qj4$7ytIE4wca_%Dg` zak1&S70&bqERhMnHtLl$X;#!M;Bw6>ooy(mjB*Art68P84OPfdo&oKC-MOMa(5s_* z&_tI7oK`Cl(j5sP|J`yvN=Fh{e9BnN0M0ZPmjc=rOWl6LN0^}y0gp8nmjT)q`-&Q7 z=(#W8amHdNpl#7zHm<01usFk5>;SYax>t>8%z4<em7@<3c*A@_r~a>I2wDM;HqJOV z>36P4@3v{vOHCJ9!0#DWJK(*Vb)Zs$#nnbV19+!lEd{hKmMW#F#S|>cpE%{K?`43t z#ZsjdwU~y*dyJ2rfVRa_r4+T8gT*_H#STE*qPvu$_VTc2E4xeSJl$i#^xO(~yJ0y? z>78rRp8(gUUp8H20ngT7<DpdvaHVD)sFYyw@5W*VaG9~V6wtO<s+6J@Q?R()SX>5Z zTP#&dQHyC<JjYn<1hg%>ODSqE2YXPCdsp3lsanz_FH!A0v^$J99e^;%W8ki&fm-PZ zqudIZH!No*y>m@^_hz^RcC0?r<7~i_G%N0HJHHpit(tkDT7u2vjm-?;O@`GDXj?2* zOOv!3%+Q-ffG|V#4%nAP#PS{EOeC%RO)_*kU5mxN?TKCxu;IA2EH|1EazB;p)OJ5= z+(;J}S&SY|LJVg%1{|oi7OM)qgFe^7$H(-Uh8OT!&7!c*?*%cBKA6GBfreKkU>TY; zB!FKqowWge+jK^?1mYO0vrI3j6E&AI3ut>)szlhUs81>QG{ac!07QozYs%4ms<`_D zzDxfB9U(fTi!eZRNcw>Ps=hy?d!1&&Yma)}E+ZCx#ULDQG$ZMD)Ha@#BU%)bnj0Vx zHx(No{5*tjsE$ZDvK@JknLc;sp&O`k?IU%F(>1wx`a%aKNXuBF7X+ergjjAgA>`_T zllc>!{MYoEu9D#tDwbF*X&*eN`G7Xg+zW7Eu@x3iHsjO^h)%4Ju-F|1c#mFTo-iv- z7VwvvrB(qDm*{}{UIkzonzRZ4{?>HX2KZ;w8La{!wpyKKdO^L%<g^XY_Ub^ZK-8xc zeA;ZRb^xM7Sp`6$PnyMm=>CAKz+N38IwXBSbV&Mu=<T2F`&r%VMiX9p)a&-39s-0x z*kCjx>2^#JtOAG@#iUjN5Qv*r0YLbPRRHnBSrQFg6U3_kx`8^+lwwua9OYF2Iw(Q4 z3V=ZLju6X@CWKr)u#a^*b+b$g(}*W1nUbpjv~lKMfCG!Iuy~Q_q!kdI^sx#wvafV3 zmJ{8^r2((hEG|R$mGUYrvDGNI0$!k5F>fn<Ry%yey++M|0a_ozBJ_D~Vn7UEBH}Cn z2dX8mabR$W1~lgY>04XskO>BAP9UgJ=tQ3-RL9Z!Oqq&mrgft^VOfVZ&KwGGV39s` zD#vVnrcV+9!o5BQbc?<z_<*@N$O1l~Ssb?e@g<ZmHp&^m{|;CtI150t$B3l>1I?7B zPz0eL2&VyWHzwNvzo%JJnxK9d2m;z6yK6YwaSk2Z%I;?byL68?nx0$X%nt%qQK&S> zJnx-p$_fkJt92J#OTd9Asi-HZVo#WUL|b{nIGhC>tS3zAf(g{0G3pt>8m&(2D4=c8 zy;<+mcK&4SwF1@}d(KVkRsH?E*Y%mU4ZuqM0lfnS;(0JILjOPltxAA7!|DXgYZlwg z^nyZ9zSrqWHuIw0q|i;Xwi)xz^MGNQo;lobDF}4Kg03UlM;d)VmF(S8;u(g^#~k$A zO)8cF!YfWi&XI~`E*F^>bu*7{&NSV$0ovW<9o<B3*QMKu+R{{Gu@$h@u-ai9=_&Dn zq8(b}a--P_7-%}*4P$4H)LL@_ZS=b(V0}u%-hc%d^x=Gqo7NSH*}GAnX%Ya&dEKFd zrX%10%{uVBSk6~Wbgb29vI+P#!)gQkmSJT9zpYvBZgivfZ|+87sMQf4W|ENw9Aj7+ zz_I<xk67l{M!lsk(`U*Q;7ZMs9DphWf`B&~RtMnsLb{;#8o?~!(}vXn_^M%L0bdW9 z3%oCl5LbsWmH|X099O0n)XqQ<@Fv4r3V6F=WdRYKm;?2I5zGK0KKj%T;2#1hKs!|T zeq#rXFtf%`3J`&@UnxhJDTE1^MGzFcri)NOcrAjUUI@Adv|}js4BQpPImT2P(2gSQ zh$4+BzG`&a01*oNo9+dLXy|Gf5TVdI1NfRTmj<+>a$lJpIHsH{rko?D9AbjY96-(y zK(06d5sb!=bH(7kK(u2BmIt`*dwD>6Wb!78_nW-s0Y7C}?SOV*c@x-A13^H9!hz*` zK_MFQ2GAay=-U#w&kusb#KB_spS$jTLT3%Rr5iB7TTDWi-K`-~NN;`y$q*zv2h9Di z(ak-q;S+|{3K*En6`S)sxN(Egb6f>~MK@wOb$%1Y_nNgBI*fTUO*vrf`L3ea3l3_r z)<wm#-1!cB#kx^?$3Wp-tIt$5fS=VYuGDNVsQUv!z&8!6!$9qf==z$f(P!!e@Cd`| z0OYSN^FdO8b2UrMN%MhU5!Y_xTLuu3u(6DZ>%l+}@Nb5-6wnKNGtlxa(~D4t8o>-8 z;-lRXaCRUCXouSOZiz5IZd^?P+F{bS4YdGbqfO92D}a<EfK+h+oVZjkV&E_G^FbB? z?HKyATOx|jm?+YK@SFQgJEBM<idT(pn}JqfX-8n`;=pLPL{ul6sM3ITRDJK3(U@|s zm~xJoa)=4V#KGqr0pyAU5W#2+Iadt**)5|{<XutZO%(T<VaNkMZCLFFS|gJ;fsHdc zZwEvu99Z6z9HOD!63`x;{_K_r42#`=?z;DsPOr(W*9!QS$^5cGI=4t@$=wp>{$O<T zBed=)Gd`_=fw{b_0`@E1c+Hq{?3S<SMzfr{zPIUn1ucdSdA9_{*q7QZKdg1JmayC{ z4tuumZoH>L_`lR=sv5xGXckv$wii@|?uG;bXBt)q;E9?gx}Z)of?2>NhSdSM#jvt~ z+e7Buk%YO3>*pq}3?L$5-!dkyD${EQ@L0oI3V4EHWdRYKm;-gX5zGK0KH4n-Hw99F zcBp;tmI(7n6J`p~4m0HlGlekWG6#_A1qH8Z69k0UA_!`Yi6I4O$IzeM5>Y&BqDTYU zQKTJFq!Gnb<3<}GLScW?j=<8zfzfV>sJe~0G@u<--@9crrkpFLoFk?jVzL9sIReNP z2f&f$dZRJqTru=#w~R)ScSVsmQ5<6OmIplCu-XCb!15-rd>{yjP&lx>Be1+Hu>S0p z2n>tef9|?BTxSirrJFOr<4i)AEzl4NExB95++?GhK2yVtVYLDV<|6M=((g`d`DsSa zv0F~jjaW`g+*{tSmj-mmyCpCtW~trsA+3wGgyr6J*bDC<F6veNu5-0nsIq`VHH#}X z+Y9Q1KoD@dVRZmr64C|r0V9|NyvDFP0B<m?EZ}!S=3H?U^AOh{V=M!RNI0&HiEC~k z2zZ`hEd{*Tu(E&%PRxPoF@hOD#7Da&;MW5wKs(gFcT0p>ZVaUW?J!f0FjEK<E^`2> zUQqCwc1u8bErOuF7<3J2$IzeM5>X5>rqY0R6lq5kX+*Kr=(YhO6!tgm2rOM3810sb z>PBNO4QNNz_ih=DDd&nQ=ZGnXnCt*@jsSAS0dS<b-e?RtR}B5xEu&H7T~Xvs6thj< z@_?rsRy&{_Sl$Hoi9iq#p>SY%M__qZVEx%G5f~Ob+ARU?lKT%>_nLIp7Mbj|0$yNP z%P!Xt33cq2yo5q?ozZN)GNS4DAQ1+3o6&P@jO%qHR?ZR|<6rfb1Xp=u1jZaJwK2Y} zbuor4H>D^5wpYAeMCk@?X|X<2fdIB?78hl<7t{rTAmDX|)dBeBkS?g3jbIk=0mJG5 ze8#Y{fX|1_MWcvv5Lb&amH|X099PD~b#WjF_!+}m3iu_%$^s%dF$e0qMlb`2_-JDU z{AC~oXouSO#)vQ%8bc{SJIs_L%oM_e%N#(e7ZkjvjS&!Diy){U2VDc&G4y9+L=<Ub zDh+5yk#<CpMikc=-8Mjk!v3Zmfu)NBqm2<!J!j0N0qv;z-Wa1X<y<l495Lk(lN~_L z5kRgu0FE@*8;v37ilILnV>F7qD~h~{;#`xrJYbJuwFBCL<xODs2ZDeIg#*hw0?WGs z>(9oBz_8f;=dOG2*I7euX}baZoJr`i8#P2i9UG&(MG14CFuLhGG`!oeS^)!dj@wAM zvD@f5cFU`EBbL(=yX6U53?1_B28@YWYPX!Hb+MMP+**gd=q^&s*+M^)%EyQGnW_fx zqngE)n(YO3Yaj^tl3{fK{wbsjYQGW80uI$))3*Zvrx;ciaGGX`E8_8iUlG@prppW< zB4J}06W8|wLBM^6wG{A=hLr_GaAFQr+ys#UM0~Vc0!|8~0PRrw-YpU46~?a=pdDt) z5oQWu!etI1)e8z<({2d}uSF2lSQA4E(2k)$yCtIdh>0Q%Xh)HDM3F`mzc#vUfCz>C zO*;Zh7Y9bWC89doM3n}#qw0INjK-96#guczltWB*069khx#9pgQo1qKzQb|)SrR}y zhW_l9(J1n+DDozXo6Ioe0Ut1|c0fC@ya{Zu$$2{<LgB#ZUNsU}-W6DXc1r|?#qK|M z-Md$(7rCYF2JmH*`DJfuh!mFGEn)6gMmIk|r+ttapH{%YoZ~G@xbeI(<=8Es(T!M6 zOYD{x6#37)B|1k@m)b2a(YjbmSnf*>dk5Z8xb+79S{5A-=`&Rg;NzObm747Z_18cU zaH{T^c09miG)r_roni#DfNh4=0l3z%vVa>y=EUOzzap+58Fw>)h=hI1n7IBC2m&5u z99arD)3CCD2u{p_nr{R%fQXNFOTg8E6rdey-@7HkyvKN-0<^<SIl@dKOt{Pe(6^_x zOYoX@OF(!nf}lE03@Jc6hW_l9h~hC5MH<kKBJGGGjVQ($H`)LZ3j3RO1ePuijCM;z zwZWK61KLsby<0|O%DH07IbzBoCOd$fBY<3S030dZt!m%lIPI2zb`1U5Eu&H7T~Xvs z6n`;8m<OyhscZ+d1IwGhQh^{KLgB#Z1~w8{-W6DXc1r|?#qK|M-8)1l1-Yf|25_25 z=(3YFL<&ppmM}Ng=;lw;u*I-i0RwZ6-4bq0G<uHRvR*f0IW4hU-m2>g9rA7ojG`{J zTYg{bVl8307ajHvyrXdItNayLI;u^TX90(57FQ}gs@K#Bfgs=t!|DKBAJPSNo)OFf z_83+N;B|(T1^j%-oOpcTSHv~Q7|Q@65{`@BqSOL&13|!*hP4!Mond7G5uBI<b)gZ= z03trxEdj3$qyX(u``#@PX1Otx0z_c!7rjNP1rQr;f`D*Y1VO=T5(I?TA_(g0pld)o zhW_l9h+>E_l?H_0+$X(78Hpl|DDp<P4G^J-E+|ApUlsvGD70Gwe$JRn1KLsby<0|O z%DG~qJHbdyIm85)Ie=U*D0oeqARxRJK~Qj<1Oe?B`m<X`qsY6WpxZtj#cY$eJmBeu z)eeYI*x$SftPltSA`}q>g=pyGuYh)7{n;%M7#2I)Eddb<_xT^N?k&<;LvCri0qimf zUDmB3Qdn}ggt@bfZu(LUFE^}Kz`&g2Ni5u0YV;htWllF@IW4hU{#EZ&=#Y0yV2pjK z-STa%i-BdiDY{$OV0#DNQMk21TcSVSr4FhZz&6d2ssVLDAPD$*!|DM1dPo=4%|<W_ z_<&(`06t?_S-|H*=ETzjzap*{V=M!RNH{Kf-%<-)90&q_(Xf^Re$BA5fCx^^f%>iy z%m5-je&15J{xXmPv_tKCw?vo=jiD4E0%O1EeM>EX*k}_3gv%lb3SN^SAiNeqP(Kd3 z2DD@7&u)n*(#BL85Pox?^uA>ziZr75w9#z?L@1&Q3enJR35ZbmeM@cTIb$vjXh+re zZW)a!=ZcB$1S2u!5EESH0CK&c;5BW6fbd!bLBVkn1hix5&u$rwBJYZVZu@i;=bF6b z0ecLq9T1_gzj+hb{ed7LLJ>hwh=z7cKs&Jh?3M^@vFY<ab=`ZvjsUr(?FR76Cb(rc zYKRn;+$~}5Q${y;hlY0>Rx4m&&hgbsxN*JFbL^J8bt9J361(LIS_~cX?gospFST3F z)4HfpmRswvci<g`TbGxK%q99vyCvXdn#Glx?FIGaKoIZ+!|DKhHKYsb4I`KZOlYs^ zDK22WVPyd)YL>XtcT_=K7nv?IfQW>RWlUUO3j_gQGOVS5uNYPq5W$H#P=7aq89>BG zyCvWl6KV#~4z=&y62rIMbe96O!%R8COd(9T%mJi&LBVU<Edk-R2!a}6Vn_knG4yA* zL=^8cQKSLwDAJB7(um?YquU0EP}twJBd~OFV6<BzstG2lG@u<--@9crrkpFLoFk?j zVzL9sIReNP2f&f$dZRJqTru=#w~R)ScSVsmQGCG+Lmu$EhSd&e2bMR19b$6c4v0`V zu)HI%yeqK&?3M@&i`{?jy7x_;-kVICTLJeO*0R?$L_!_AB`>SceA;NXz7^4QeEbyy z`@GR}Y>YqGjaWHLY>exQI^>NJZetFX+88%!T`U_cca6hd-&@Eo{o@s1*Jmmaz;A07 z7iG2=)K3FJz&hPCZEk?$G)r_r%`k#lz(&LB0Bkj^EMPWduJ5Smcb~MIUp4M#01*lM zmN9YtA`k>T%s8?Xu->q;fCx^^fjZU*W&jZ%ZH$1611Uf|)V?=Hg!y^neG1SHGvx>~ zg)reV2axIo1+Qsi1ccWj2<kKwLkiH2p+6fVqWG4HA`NIqk#<CpMij%08*P9Hh5b!C z0!tSMMjIod${2HLKs&0wH^yj8Iaf?MM@%`yWCxIQ1duBZfFsTIMq|jiV(8Dt7>y$D ziXv~Kc*+c69&n#wwFBCL<xODoOwQW@5ef&EcLbJq1=gR95rJW``_EnXey!8{Ta)Hi zz)>cl%Z}C%2`#ZPLUWMOY@HR+bZm?m*x^Rcu`yQZ#(E><u;hE6)PcZN-WY)~2TN^? z*J@oX8!UI9!(QK8$R7POe7_8Sz7Oy>p`Y&qRbld<1w75LIsjWWiwip23+gN*m<3#G zSRH^n3@ZzGMaW#=QF$KX`nicK1Bgi2H~M)2El_28%>XtV)>6PT4J!+X;KUrLB}Om< zi1=t@1iU1W0<=Tzdt*eHPns}OfC!BJqMsLtgqcE^a9IRF!E4$W0pYa>f;!K{kOH)0 z=+DN8D4sP@qygbK_eno55Q!p<C>9tu+5i!X=z>Bt^n4W%q0q(%c)2l`2DGE<dt;2o zlyk*IKQ9o8DTkQgG6#?|vj|?(V^ctQErOunI0*vUG4y9+j7E`nML|C=prbg%<Sh?) zxM8&e+JWUwV5<W`K!n19<$FOP8hXA8Xb0AxjS+!iv7?O<5TS6N^s_2DFf4W?2#Cdw zZU_MF!2Un2dxLe>hMVlQ0-kPI%Q6}wg(WsdXr5#=TRS3}j_nKsyU^%4HpY{6BUa85 zcZ~PzjKfvl7=ba&r8dTgv@S-C<=%AIi*6zJ>7S2&%KVJ9BTP}N*FO(?ls;2Q0M62V z(Mke1PqU<)KxG2KVqe&5lQs<_mc5fg_KKA~FRN8o8ShF4;(7H$#lS3mrceOq8de)% zlVN26Pt`1m4peg>SnQzop4k8Y`-U%5wR;HlpNtx2-RD-_Syzw~!1bCX$pf`35CnX{ zusQ%A3h9FSu@TGyzGzq_emh#+hMOymcm@!Tv74D*P#+5f0pW!Rf_gd-1cXl_=+0Z% ztqx-(1qesjNXp?>%H>w7H|kc(<yK$UEy&k8<5(Kdb}a31EDgu*GrDbn@Q#B@JA6$S z`${WAfAR<4=vn~Kc9TBqq<w*JBnW8xlymr$EB1+<@9XL!n!miuG5V~Mc5J6fRvz#( zhSd&e`<get{x%Q<v`etB3kLX#c}wdBAiU#{v&Pq5roSv8<}F<;0NTE0jjx!u)CnMb zC0+MeU!(i`wCT4M@Ik{``h<poIp;6dL-Pklv-Rf@O~;;sA-Lb@MXmvOOUmkIWRAD! z3ybXYmR}qxUpzn;*)KT|2U5neMt|o45WeszMsK?8p0W7QZ4scY99=bRWfVBwdH~wW z(VGgla)}vypqSAeT`>dNJx3=%*x0Lje98|MKII*7pk~Pg0M!r(0(Kf!2jI$(E~w2$ zFbjB@VU?Hw;uhSD8}SSv9Fq|SH7gJVgcl+RYFi)(c$sFoYsStW+<MDQj1(XoVI!$t zQ1FF{3=ocpASn1kf`GPL(Q35aqK~3$hbl~TX+XHb{iPj_rQukI(QN~SccKdl4pQ+0 z!q-0bu&A3kmzz0<n>n}%FW4vgxp?g~9HGq)5I%`uIA6t7)UmwFvAl6?nn_k3@KnQU z2ZVR*0{tkw7I<$U2x$8nox;3$1P6S@y!}5oh3D!Bkq5dz1YBW)UkZ4RVP!XHh<wl! zwjgjpax;V;0^R(1TK6Jjt`#sa=lEiZ=fSt7Mzb9-upikc*^$@vyu&2pE%5N77)ot{ z(Cu>^i!;FG0Oh!Gxx@l_AZ4swwCDgL5U$whqGR`r`9Z4ypsnoQ0^v3^Xu1O0%F#<s zch4mzX>rU<@6w67!6YmT7#}7I9JBk+s!2OceA$@D0N!O-ZGiV{7F*5qg8D}w2xxa7 zy=0ND`4!#YXiTI4?>4M<Ky)Yr3F_@Y5YX;EI^yn*)9Bb%j*hrnIp<Q2j<{Pn?^2Gg zn7)UIZ4aY^>z0e!^NhWiE*8hi6bN}n$a$3m-!KI9r>X#Lcip1_Wt0zXxq!B^yOL_P zW0Q@8S-_(;tMn{@@=-=P186HBxMyh4ngeJnyJL>_oOUU@D=?~@b16qFkQey+cbYI; z8Qt|eX18)bV|FX|GiIK3h&gckAjY{tCv1)>k}P1iW|gimD4$}KGk~_TyTaIY`kIMW zg&yS`u-#Z~13b%eDb)*VTObH%ckiyzXvb-EY%51=)c4S@E$3RRTyoJ|xa~#z<!r$s z!lcCn(00ZhvFEMViP~xs)(QwSF>jj(43lxbxZv&&bnMVJuQj%_fUg@?2jH8UCA9@A zHe7n3OJu+Snk9muh6RFvBMqwqus)<)?7X^4_kHhP?aCwi%-4j#k82+NxnjQ;#IH4z zk`MShTduexp5XRToGI=QsrsU^-41wzVYLC?XjrX)KQgR#z=t$TIS(T6^jyCec}Jqy z6Wde9;(c+F=nerndc*X*6cBbD?=!``m>2hM)jDvs!aLU=w4aW{j87P9z8nV*{G1u_ zGfrm9jA3{X^X51#&T&|r6R{|n_?JZ<B(||ma8948+yT!qtTw={nk6#;)Xjk);GU3R z&|NV?_bFo{1GvJlIsnljcTay8UJHCE5CpWlkFIio6X?Ffm`DL`Hmr6)bjaPOO!wal z1Oe^t-Robp<1{+9m7^=K@4<@$%W;g5gj;m22xu$2J%ln+N{^iZZDn_Mp^S2%<q6PM zj&4-!HoCdSB(@ds4#SFE9Mfm1bmMo7P~^Vb>z@#Pa!A|wwXu~2JbffP>Cpr~&@CSf z{LC200FKrMD5HS&md#8rDD+hFiGSed>!zC&;9;hlHb5Ab0tOXy(<YHcUl9##(~Ude z;ij8*Kp5t3(vE1_qa6q*+D#7Kj5XaX1+=@#Il75F{^3rdUF6XP^1yCKZ{vIq{VlQv zD_X&Bxu`w5R@Qc4&v{!I6>?-RD&!c+s8D1Mae`X4S8Ghdvw(LVFmP6u116Rm6B)qw z8CE;sWtLU??v|$Z1cHEe_wHpU-2J<ai4@>_4XX_h9m<>lbw?lwXm{^kG7&d=qgeuI zE4vo;PwD<_Iah7D<f8UC50HfWv;+g%owy@`GEz@F2cWI&9)(AAEWa{2%mN;wKUc%a zj)o`0$FDH)6JsI+_y@yk1AIlZ*lMO1RJr*KPaB}!{egY|jp-!?Xe&pv=6mSZmW#&d zmW$fsEWje%ry&HiJ8?%+tHU2_(vSsQ)X!0Xi8^B<132BV+5l%*Rx`bz76yWVcJ~MN z{RpF+0<@K*S@S*gYs<Mt!6g^9$D;sAxKE=1Xm=8g<Y-cs4?5`|hh%GX{C<p_OTFsf zvBDpw^Vkj_v*hH>(dXh5J}x#xf4b^8ea2_SiskX?M|{+7i@FQ-Je-T=A%~CG;Ujf8 z7t8O`_KH8_j?cFj%R>&IYrjwH<6JDiTz|A4UoNZF-!;U!SRQitLK(h9hI6qzzI~5x zbw8r*<6JBcIee3Qt(M2RSpHSr{#Sk8rGFa*=VE!ty{+Z(TPipg%j1{nZq;^ky0CCA zmWLdE<qW@UhI6qzekT^cKU$~D9Oq(r$l*6f@jIh97t7;U+wp7Qk7)Zi7t2EqzW|P3 z{l>Xi{#9-7uljtQ{+k*&7t2HLZ7q+#!GUwJJpOnY{wUUR{Wr95E|!PfL)wowi_XRJ z_*0?<ZFh?PGnqIS%R>%-mJ)x866a$1Mr{v&F!~uy<6JBcIsB1m{9$OEi{;;{5>7?6 zoU8P?QJ;6|^T+hLSbxYt%HL2U7I3~#(+}$NWBUAKeSS`#U(n~`{u^tBgL6*POZE92 zeO{x_-THi<J{Q}2MDuZeQPVH$^Bem7mOc*{EEWdpbFsZ$nt!7{@6qQUl#qX9h*-e+ zQB6Os&(G@f^ZH!e-&FmE_R0E;4-7YJx>&wd^RxPl&wt@uERPQ_;EiCsS&nnDJRa=f zsTrQb;R#;xxl%u(#Z%nFHH{~I#r7xZcAO_``XqfWmd|MZ5`FH}=Z}_<->dmJKceYp zOUPG^kRA`!=Q@3!rO)rt=S%dt*uM{GKF+%|{h1Q-4{H7s`ur1peodcG)Xya5>2q;^ zt@`S&L!US3^F{hxEdP;F!ugawe_5ZuF<SV`^>x(?C9bdDP5hYGLRS^O|M%)DdZj1s z>Y=hfWBazPGd8R{XU6$+W_Qk>HEqMXP210(wr11z8Ec3;?U?BeGuCZdxncXNE>DSS zA}W5)y6$cL5Sh_^!IrMDU|7p^%isV_GgftN+1j;oMR(V#Qc|1GS>Ls?JKVbJobB7D z&7`Opc+;nQp5koTuzk(CP19F$KDTyl+}zzYO|+-2*|5E9`da31T(NcA+7%l%bp1c_ z-a9_ZGVA}JWSAik2weeNR8%Zfm7<^o2sIF-NDy@hAqjzygcJlsL{RLCy{uyI4eKg4 zTpPOT>RQ*euD$Hq%euP$&gZ&6C!9Gl%I@>Lo<Dxy>-Eaa-0wN_xzE+kbzOH$eM1D` zVOecWMOCG2OM!;0$w!%eHdZYtPc_PCDRX?5Pcmn#R12BMR4!~Pt)DL(pUdm(YwP*B zac+Hi>6~bzp{lZ`w3<JjQ`%VCP!3W2WI_1?eyXl&P&l`=VJ>Nd!3#<yZ_&@1YO2a= z=fEF`RMnQvEv>03$1bql&{$v5R8xlhVY9Kkp|Pp4s#>=fN!F`sRjS!hnPr8X$**Lh zRk^4%Dl&YoE3GeupZHu>UE9!9k6mM{IcwO6%9`JV-!#;f2RG!~P(f1i_2noPnSum> z!jCo=OCB0~u?FYHWbPneRn;`I+?uU>Ro5O-UA`z}R#Yl0s;bLv?iQ3cG?Z4BH)j^v z&<cZ-qT0)B#}ZkwR$OSrV(};9S&8gUiB`$@zvWY#_{wFCiL7M&hxoWecIVECF7j<M zE0LevnAl0)yCen6dptQKv9-J>ha_4gEAdtDMC<s9Ww7oezZb#y$`%#9A$8ocwX%oK ziLCgK*q4a53QCPsUXxjQJifvn<3Asnl}O0XvXh4<+J*P=qTMCYa+;vIVUO`-e96j0 zj(iyxm$H&wlkpA9v1|F<ArbGJ$of1H-zkw*A71xM#19y9c%p55$wpC_B){pD=<vX5 z0Y|{G;!cV7VK=KfB|6K`vy;arItXZ2lE@mLpN!9xUq!;%LmP!9ZJEBZJS!_XZe_AD zmfa%$5?<ne$`ar4sdFM9Z}1ZD$48sB(U-|X65aW2FizeaStUDxmf$7cI=f$1qFeab zl)W2OlkwIS)->L_F;a>*W$*ecHeIQ+%Vun(onU{bEDzZz;Xc303jSB{+f$drDl1tM zzbPx{-Kd_E?eY`Z2aZe5IOB{nzLuiN8Jfu6p`t~$E2Zm~OBr<P)~Qpc&Jx$x$X_S< zE0LmWY?Ou*uU{*b63_cmpfsLjye=!zGTuHvk*r9xOdg3=Fr-924NbH~VM@{Eu~1v! zvv}2_c{}Ha;BJd#6EHFmz4XSX-l5=H^b)OjO-WE|nH(SVMK%RlG0Q^fXO+OEhP9E8 zzS{Rhe!6GO&%%(OcFp;zMSeQ`SNVyz%HAn!3$wIf{gz~@_vW*-*Z<F|=)D*+v~|Wh zY7BMMrn!#lQAc@cb(Cm3BhhYpXn4|@f2GZJWd(JL+Sd-z=FqgQKA{2nR#?}VR%K{( zBR10v8#iBPyCaKRWz1qz$YO4D78{Vow*OTYpZ>3NxbVjRNe+7=hg~z~up#8IZF3G6 zB8L)_OyJn!N<8Sl&SLHVD2sdiKa$1&lXm*xe_e?S(}U-K*b_rL{l6LD-e4AgbAU?^ zE&s&;_kU7j{|`i#5&w0gto<J~$`D!pPe#D+|LYvqt^ALMhZZsyN}GUxC&N6a=WTaP zWHlt(4o&2i$RvKK7<Q_VxuneTIeot*ku^3UlXzLtU|rHOM<%b)8YaJ@cQRgHk<3~z z<f|~$XD73FmZeNyR$?0&v@whCjQ4TTpe_=*7|R9s4DVy3d1y4bZjl_9oQHjkYfQ9+ zGkv(CDTY%oZIr%va-y~THYdAB$3#|fGG4K=*-KgNh?nC_WEWzbjDNdnWs~i{dq2hn zSF&BA_5F#g(TUa*u)i72D=5rb+JuZA0J*jKnAR?h=DzV{ld!GV<jX4O&<b$?lW!5q z=|`og9Cb046shgrPb3}_iSeBh+sP&thgtFGu;Tf}Vy`jtVy`mUdp-QPLDmJqL787q zT$|s!cLJ-Fta!u9P}o^tiqWb>o3Nu*;#)j7D_CXAA}c?vI8R*u(iZuhcvqxGTd7u* zN}d{)w{4}2a-|ZIMNu&|`_eQd@+C(qDjBb8Uic(hAGf*k4h>6;lClVu;zll)R+y!# zly)+H&(U87uUpB2N0L~!OSH;4LP|m2XO<+|ZIx*CNOFkeJ6qPO$bWWNrpO|_K77PF zsGTf__D|#v5g^l4*c_H<dx2~f&j@Xci)9p8Z)x4rZ~Q;s<-r+uSrW3@rE{X)A&FMA zH=olN(sEj!mQ$?emrB!5PTFi<U$U*DM<Q!#qV+H_E=uI0I1fnVq7;i*uxP=@N?iG6 z3;vbE70m}izLldDtn3Oo5^{2jaX38krJ>1q(WbtYyK^FIa3c4(M79Kw2KnXCRmVzL zLdQ(TzibgT3p9tE3F8`ZbYiB2k#31Ze2FyoS+ahWBOmLNHws4h$T~C`FF_$Az_m|o zvlD(HB`RNaN#b+VLwWcno?Nd-a<DGWPL?Nj3h!ba-sSL1w4Iy<mwM;R5uf;yAyMnf z`WR&n)Rf5H3g1h_lwU~DNNdJBmy{$r3af9fRcWjhQSJ4S3h0pNScy4#`-{cD@gewU z%}nHOCtHgm)w5BvB8#|_H7zN@u$$x<(GW)$ZVX2k;?*l<VIUJO98f3`yLgS{HQq5C zQMgey8<F*Rn;Yfpa7ZCq-mS!8tlvJQfTI8{k~#mx8x97f9YT;}2em`e1})i>J9f|_ zF5brPk;olZFU?NMfq;0tL$i}j!O7faC!+;gnv<EAFLZK}b21vA;!AtuAjhKgIpAg{ zwP8SwuSg=UiO(Gp$(->rY9$c*C!s#jFzY2+cNaZb-yS18=ZfeHgq7Bazfo05V_bBj z7$$#ll<dl*rISSR+wPdiYDjE5G|@_q=pfz><xn*fnlfH5k}~U-XpOj-m9;iR&g^6u zyGq29v$HlPa^kJCLiy(mk&0ealE^tLk+o-{Q@r)KH3?}a@nr7=#;Tm;>5&-@D;}E2 zjU+e9H;Ae-uuK1_kT@R~9}qv=u95CBJ^Er?BI~dldy55{Jb#&7i$clLP4TyDA~(Kt z+}cD|*Kzn1Mx-B?iB*(WiNMnK;$LRVt~yIom0!e<JxY#l#(&JtZ!9T6=#HN#Aau~i z#Ma{yJq}BBDHMzuO8jITM2&wF9i~0rAEuQ7Ne-F*%5mC6t5;<Y@z0jYak;~eje6Qp zjP-@hhf1Z-!L9h(aJZH(zAVRf6Y=ZfYsTFeJbYcYv*H&wn@GPLha;)+H{=U-y(G9k zMeumIephh)$;kEFyz47}!*eP4_(r(>^eXy2qa?rg5Q(q1$5)0@etsE3j}$15*G73b zzS%)3=6{4doY|a*uR|VIH=8u);hW5PxFqD^?I;hw`)~5_=4SJ75%ciEQOHAR7I|wE zEr&(jPUco<C+(%3#p^Iz!yGN%E=#&b<r*oMHd!3qb9QW=<h6{N_F8EUXxcb1o_#<f zM@G2=63P99=_on$P!a1CX1jk_o-bxCb7o3YUnnMDb(Rh;6^|GZg=HRF&sifg2#I+z zS&p}j=4)+p#wXfHT$Xt)W+Gv}T_n9OOU8uR(zv?FUfLyE-mf_-3T9DOwvs7mQesvX z=0$tq!#l{}5-AJht*hwey_;wgg$Bl-Xuc$7IEFe@!_x%hMT%vybm6TN+3$0+4g=yA z+CFp?VlUEqc#;gS<K$zj<d-=^vIlhx-zDEo_KqK)or7UKs;{<*+`SW719PO?pOfe) zLpcVsp^1*-yiUGlYMfk?oUuwgiFe5wS0RNi-^CZK#PBTRyeu=syd<&heTi-MPjp0S z4(*iKRusC=xFM)?N73f&o9K#@9ofmlWbo{q$UZok(<7(H6Jd}S=^t7&cjm3`MSQv` z`ld;ySUbpsGHtQ6O_oS@I0Pp~I><ctV90*OR@8)(9=&C(e^KE0a0aAx{H5hG8I50` zB@Itll)XzO7(62rcZ4))yzS)FO!l;7&Vf-36>p@)MoWhCLQ8F#b9|!pn}Q3_z;f0m z5;A1S(f;+>J+{udTr!0+%jp#5?y+Rfp#o&+UMch9aJWC`J1K>e1uZ!&=dX$E>|M4- zMdx5`5Px3$>ynfv`%<EdtjtQ1IhS3Ulv0`3=<orTh*ehn-mI+bgq&O+Jwncs&MqyR z9}B1EQgdr-=cnrG<&<2kGF3IFx;zz5GRnrB@`|b&IZ-O-gyoA=YEf-<shn>tkMUew zEEP;ssaQpIt$b5c$+NSm=!{_sCplA<<&7~pjVZ#h)aWU-P4#8vlj^G$$*JL3be2(W zrjrw?^d>q{D3()YuVZT(8cS=+%3~vkH#Ll&RA0MzNo@3p>e7aWu{BkVqvTwuc)38b zQ(M;8?OOJls;a4|m5U-LA6z&&HD&DRi3LS5IUy`(QJcydCC9aO<@JqKa=N>!MoeoP zt16Z_k%sb`IjIG5LbkzuQ6;;NElSO)ZJI6Fs!Wyf>}jg0p}bx^3a6q|2N#bWnMzG6 z9y@WWc%bjoWHW`Am=yY=aN;txK=xms;t5>I{D|6`IkC|bA|2#2HN3dEsIXvSDm7*5 z<gpV+H>**VrPox0+H}sE3SJ}`Z5*&qI7gepDbrMRI$bM_^%e?l^u%fTBl-=@AJluF z-hK0XEof}2DIZ!{UQ=FQRVJII^<{I1%4G??2JDmHt1`b=asT{Y(r{3f<#T$;N#A<e zmg*~;-%E<RQBL*O*7uUKua#Dk8eJSt{!2Ea+L(kB(Nd1lNozD2oR*goMyqTrtryTh zr&9~c8|T)}5yu;w>T6=D&@?6lHWu|=nZjxIRAZ^sjQm{cLlnaKepf7LA!ypMn)1b{ z%xZWR`a#qs%4WyPLerApp)EDW(%a-{wyD&FX;Y@AMidtn6^@uH=dIBdSgWP;Os!T% z-9avksFP+Dt85a<egmSWZTv^0kiL<UYYCjg!ME6grpEHc;;i)F%2YU+57X4_+S=;! z(wdAl8<ko^Y$2{wh|Mjpu1krI6iv9EK_sdxe!an=)w1p3qqb&ke^EU|)f(#IH>y}V z3gSy?Q?-=sg1YLcJofG{nW~i@FXdg;m@2PnEU%B@I)_wKO%#phpo(his~VTY8ta#^ z^T*~?HPn?hmd$k~hANiwu8=EQ=GHDK?=x>sX;bA~X%S2M98p_8zfax#%7#863P!JT zLCv7vgZebom-Q*DU9h0GCb|wqJ2#p`2%Moup_51!(4?2J`$@Q*lade<N_OP%X;V`8 zn=)g{)WQj|rW$D(b5c=&OG)dB!tW*@(ac0GszREDKqEO2)h20y>IoxEOyWSn<bnyQ z!jefvV@HggnwnTVb?m4avDzb~n?|iWYA;e&p~*xICN%q~=f}7sMrbyN^2HM0D(cJ2 zW95tMYU|}Ho|MLF3Ap78Qk7+?iux*P$JI+>QU+x*6f`caDV09EDcglpri?9~81<SE zw4*wf@Duq|Q+|Z}EQE+u+1&Z5iqfj;$XWu#80o}Q(T8I-sc^|j)Ycm$%Ts4eDol+k zDj1zQxS(iSVX9!bw95kNd-khlhzm?o(x^hf;aG-YrMg<$n8b_ddxSy_+vy?E2j1W4 z2U;T|iYJO!(?(296;CXh5gR=+YA6$<VWtulohp}$jH=~w7-`;VjY+P8scB4w(v+cP zZdLW1)DdXi9GFLsL>Hb@x}>_Qa;~%q87oq=>!od#l{QF_noz#r;HczMQ48acD!~@* zGIUOiX|cLmDT9hR4btVrn>kH&(JY`sN`Fd`I3?qvluwWkO=0u|gq|%gurSd1IFVks zWf;p5Tg&S)21}!hM)R2P#wZL|&5@oHjVk#VRbuFT4eUJS3nWTJaj~pgnxl*oVN{a~ zj7lXs$n`=rjBG|1;!3V)w!(a19<X>x3SC>qfV$e?%Wp@*&4oY>52+AhwNN96f^0>p z1UC4jjijic1Z{Zi$bzZpDXFMtXE&k7(JV6f5eoKK=K*X}(uZa4&?py$p&C*9(HIos zloV{#K5#*sw1e1);t3N9CXUppQsW}bW@LsH`iAs*DJfi(C2=M6%k-KwHBnR`<00o; zay{GpelffvvPaRUuDo0(oGfYCNi^_c1|YM{=CYYSdF<4J;YEe9NiyGQ)=SAOkaI@~ zJ~B9%Kq0f&s3A%3ZmcRpqsEjp$|PJUTTqu?qQ5mkV+RUV5k?`Iq0O#sz>F_Uip%Df zm(7>G$__DRh5i=>>d{lBze|sks}Fy(!$e-NJ~#WOgKTJ1i!eQkVtbUeP}vwbLRXFA zbSzx6*z9NMW~FoHHA%0Mt`H^|wG|bZV{lqBr@XpcW*u^Ysmv?N8>I=Cr$i&xT;9<D zFIlRQsT^8Vdi^)IxOAL0BJx7QROt1x<H*$%nvQG*k7ZPmK_{(vqZkp&Hp*`peK9`E zq9WE178Hz(jP+5ME}f%;R&$%0Tv#v??W$1r5QQ|I!%dzxF*R!J<SA1(m#vDb@@ff_ z$fB%O!ki+k9hS&KsIjzp+^DIQ{vyAZ%E9C{OiWFAsmF^_(G-zuA<XVMx0NZ(Tn$TM z)cVB~5IdJz4)cp>;y_0#YU>x2Ha4#yf&s21m8?fSF@+qCz!GBGBpExzZPtHiG;kP$ zOsI%W^DmiEE()~~O%gSjG^AvA(eeQ~4n0HGQWdc=5}L#K!f8aAgce!mRUyPn-<RH< zHd|j*D;Ef7Xi8|$8YV{;PMTaeqF`#_$mW)T2CW<Q<&{!15|^~!V?HU12V5b_-XEHb zgt)ZDfy_Uo-ALR|qiC@@DGD>28eMT<IK=!TnsQB<DnWZhYIxDK$-{rMi*IfcvDqO6 z0R{b7JK5xLwKG>sA=BD@F?-_W!CVAQ3hU!&u@V+S>|fD53st<dwg%N{7D&}nV@-9j z6vAVAZ1gT?7;m_4u1QtO1=G?=bSYgW7bEM~8?N4#^-fr9N`sO{Qy<32|8(w^!G}#@ zAvQ;Xo3w-w0l0hVC!srVqN|H+9iJD;5rq-awa*y}z|Lc$i3z(PhO7GW23f+y!emYQ zVvTlBOz@lg-o)b6nBwB`Q(|?va9TnL7F*FA3qMRn({<ElrCcw+#if$wSVeVdr40A7 zC`J{hAG*QpJX!*C0g)c%WYQfvI6@KnV*@AXAw<fEi=lZ69M`rlL-N7W9W#{I@Zyrf zktsCqX(PrIOy+Cz7>0FktYNOKD)O5rb^(PW2hkiaS|DJ>B+YV*%Okycu=>Nm#0dUh zD*45(Zg06~zfmM%Uh9sHVX75c6`a=V=gVZV6^3tV<uZ&&jZ0TTgOA3<*)bb0(tA3_ zW$Albg$!R4$Bq~;tI9BSPKCi*_lp=`UMfp!T^5BNE7LWpD;z<R6*p!=Va(FwdeK;> z^WZ4hn?nN9Z6vJA!8e(MM+f-0ER;hLGBJ^_Wx6DjM2Q^DT}Re+m>N%;SX5llJT;XA zcDe#ipKj=SLdLQGVO_^CE6qo{Oy2{KuyKZ>Q@>6Anz1T1`rt4GY3YpM;e)7@WVTwH zwya}N3DJ>D2p(TdnKfN=!Hg`NS}?XqhD149$nX`#!O&}i_x!om2Pa8UY^;?fMhH9T z#8ovTIH}kaN<+kuF?hn}4nq1>oz$kp7s;+GEm^r^DH~1rf=_8(KH3{6MiLS?MVd-k z^f%58Gu_#8TTSQ)p_k~PL-uZ+ROtaAM1CIDm6dZ8Pvx+{7|i@q61IwE_BSInX6)!O zC^s!Qtsy-cHcu8OY(P5rW449E!LsC#Zh<4tI1(LhnUQ|RRclj?9IBCM%Cg`Q5joU^ znMX7yl4B9ISngLfR>_2Dsf7Dqx>r;@UF_vvpvAH*OQp?lb!HqU^wB~p6tOsk!=cd% zYcrD5CXX(ZBhK=3@vXM0k!?YGeDLBIBehJPwd2c*Z&MqKj$e$#0f@zjtTALRRbE@I zMHd~@pwBWs%6(f17t*-rq%aW)J$+#lrW<q0bZDN>>0H!K<Zy4ln7qh}u_=m-n{9(G z+RH6VOUq+(YH>G}yoCevI#-hY=#(zBBq`j+ib1J{`BimtkVB`Tsk!Lxm0>xmVG`{o ztU|?~1~?_t1v?wteD_FqO@|Bru0^&4%Zs$g?bm3WPDe`*9{sH35%5%1ML2RMv82A{ zm#1LRZZ)zXg7*uP|NhPOASDw5d-D-8R8o4#!#Y}~h!T_Zh?BH?S?%(O0wy}YRzcC& z=Oad#regYpyZQ9!To}co5iOQ#SkizMVrXUQNBOnFq&b&1lvP#nfP~gr^PxBG!Xe_p zU(Bkx>U4V!vxIOWV02M9@DiP<La4U$h+q*;2&E*-V6}{s6k$dqhfBiI5<L)~Rwi4% z#1BF8myt3Gq%k>=Nqr2HDe0FscyIBL_iG1`LQjoWf_jW*^g*~8lHqxj%sQIS#Y815 zO(v`eqbMCU3!GJxV{>pR#=|Ju41XE$CKgYgASdV2imZA4VQ0D8g;*!HaZ3rw0i>|# zYX~QN!eU1oX{g_{gArz=V~gW(JzCE?j+G3A29RQ#uuEwi<cbypL0Tf6&PbX^XqolP zvUS?zDTT(}a7=YmB_rZQo<L@EjWRk;fwQ4e$?K@YE@yrn9nwheQ93^Iy?LG}1Gby; zZ*k*caNB&hW>upjn==7Z3nt4MQ0XbrC=~_;msj>qSr&x@IwPAFELf7BMRPKigCp0s z72ycVrc#U!zv$c|I#`mLUENf#r(En&6fI6Ou%(w^^AH(EE<147q$<MdH!O9-auRj5 zh&2*L&2+8MR4@X^HvKRvca2W6`jSH8@eGa0;Y^p#I!rz>tfl)e5s|0EQ#JBge30{+ z<u#RZTuGy&PW%fd6uK&i)(||d7M(AYiAp%;5e<2mKH!9@E}^B)qWS!PvS{@KfrPMd zS|M#>n0Aap&#|#-NYJw*a8w>L($_Rr@K|+KS$%Eup|JECka=QrOB;cc?9oCL-7v+o z1BhnP%veqxF5&`9m&lX!<YV0&v`}rX=~H`*ZRQl4j&6Dgy7`parn#z=Y!tt6d?5T* zmOz_&s7!>ytR!?REc<Xh!onsjnh<lP#e{<pcErSKW|<kraCBq8{GQWh%jv_W=v;oU zeobMk-|~KgdiULD_lU;$82wn*(#f%`#qG1UY11-ijodenr+V;-2F;In0_!V(NJY_G ztf#z><mV&sK0L4eDcJ|*bzL1Flb64$MRrME*MhwE!}H|sZv4KEw)zy46|#LS**<sx zLil|FeqRuNUzpc(OkUq{d4ne84J*hSGcs?|@Vt`Yd9%g_UX(XzOyI+nAC#9rCa-5v zUf(f!gNEk~8=f~tzB)*aMMMk=S_h}b<mHUOQ)KW&h#c%&(iFUi!>h8hi{SHA+3dmZ z9>sU_^4g!4Jv^`Lsqw<R{8L(t%<H*2F*2|3s$@mppyIq?#d(8dYeegZ^LiFMmX|;L zsl2YkpO*YTlb2JNJ1Z~e;m4kO`Wcad?y@b?U6?m$RNk<OnRSbDOVV{;*dkr=chaxw zrujQY{N0Op*54_gGnYdn@;*}XKGNiUw9PxT7H^SO-R88$d#y*Pb^ovWwRnrP+Ve4A z{~KERZ%Ti?ylOY+SCP#l+RC-`>o?or#9yt`U(^F0fr0evK5kh(6jAHf%kGHZ%rDx9 zJ_haA{c6~p))-rM=-cnouka+7(6^<-2=6I>c%}x@{&)$oXCz|JNW`AGd0j^_bOqbJ zXdCh;I;*qAc2#_I-lXg$QA8=o%aP|!A*PnlHXpj8HdFQpUbh*Jn0f;FOxRoPzI7rk zZisYY?s)we;_rR@%?tRA_<m}3VP4l$;QMOCrBxD_hGj2po!4`eggl8uAunTc=QvV; z7>F`&!$-4S^DBCi(KNZSxw9P^k=sLlUqY>epcTq|bY6aS>%8`(@^VJyjtlQ2<*OC6 zTMaw$@O0$iG{n|ZTS(|X1+jH?a%|q9RV|U5sR)LB3-Wpnm)NRVg3iYOC7t&2R1u`J z@bX*!Ov*0ZoIe;h^|5wZpE90|Z=IJjQnH?d@>$IN6ktELzVjC}*D-W1rCk_rN9MJc z%F7v(J0rATe7}L;r>L_kdzn~_$ekt@X!~#R`?1a6FAu-PcR%vG-SM3?u~pgAAI6tM zWK$oTcRs$GjkYDlZQIu9yuM{&1d*{-M(XDFH6pJseqVwPCMlF-hTkuimQ(Ps{Pr=a z$)}`sKAo2{S{ftT;`#i214N`AY}+1zwk`WFaV>95Ze@Dol%HbG@h-JcUPyTVo(yd# zYM<p&ZsT&NNCA`x>dMF6U5f9ex!U|o^IMgWW|%!)20D}V0u1iOG8ag!ZgEQdREZ8f z$Ghx>IMPV%3!p7|J0&~JcS6j`K5f%{X_$PikN<msw!iR0${~Ahm>pH5S42S`;tDk0 z<^KL#jeSI;Cm-v#LOw@6Z;F#r4_zmO;4(V*XcIFBiK#wb@MQkZ)?<iKqor4mKtr$v znH%Pr7jd5p@!PaMl4_2LqjDFf^_OS)n*sdIs_et0UWbSNfO`M@SHABl-?v9FlynYW z4$W&nQ+_=*cT!&0iFx_+Le-29{b!7PJ%qN~V7?{wczX7j=GZkHu}i98b+Q1lOU8(! zTW>B_j1djQgA=GF55IDGof-Bj;Xm|?b+o$?bDq$4WK38cAB*t{MR`%)nDKd&Qh6mK z^JWdtn>#$OZfxGL_|93aL-9%>%1peF8rYRj$V!XY7e9NB?KuDCh5ru!U}AF#|8~MB z%=@#A4%!G3Vo;XY55tBecF$OU`3(DEfRc3Gfp_pVfyQEC?IE8L2f_6}c|#WoZ3w(Q z=f=AJSS1|$odhFEx?g;b>*N3%Oc<wvK6S#HMcCEy2c538Q=Ny%5r>epL|&KA(3ypL zloZw-^8U5_K__3{k@R;z%IB<D%UC`IMu%@>v0U*3d;_bXn7ljrEOO1??rP8d4x{}b z@)hKR$w!mtlaC@lSaswbN&P8T9rDl*<@-kRd~)<3q*df^g{@fgTJucu7376{zl?ks zw-4a^I^ihKSeppwQ~Mqv&nFM_JTZBdd=`0_(+U4d?fE#+{75dAEBS~1Fvn3Yp&rS@ zcrU*hM81JM%+Z7wlV8fmg<eDb3i3&8m|@-|-z_KC$AqH&A)QCAkAn<jiSVn)hq2+P z{e$Ei__)R}7Kl9_pA7%?F`r?)7XA_W3O+tj?f*$$*FlUVX?{CPI}1AG1<}{BUc%9y zwV!Lh*q8SCe0(SRGtwyX_8hE3JQO~MypHx^z9YPeTptrU79x_46OR3AJJWu5PT(@} zk$0qV(Oc|F<=j?(Zx@byt?3+n5#}TE@hS55T_R3*V{el8B_Bz>f0FCJIJ%TPR~&=> zFb0kl<U5gXAU~OWKXQG#KjIqFLFD?ZdhK`R<ofh<<wpuf`DlIU`$e?>oE<2PZK8i0 z?ZeLGMK(ivfV?laRR^2#SdujTEiUnDb1B~J&8Bak2>Kkf1rL+<rzsxW#FgPau0g=U zz}e}3!F4o9{~{h^V@}7S-^r0^Gv0hOE&c0wjGZnWiw-OI7o5-gH~gbe;9T$-{tt4W zv#-dvGq(8nJ^3Dv|3p5)ak+U+Qlh#4>ensFOBL|F4SAE}9mr2~d@J&c9p8rhR>yZF zzsK?2$RBdN7x^=e?@j)i<I!W&f7xyir2WUvzL5MA$H$XPCre8Qk#FVrbn>2#A4WdW z@iOw1<5lDf9j_&qM;fN3Ch}7pKayPMH~OPv0#8QAP89Mz9^+tP`0-+|a~OkT7iZwt zW#D&Y;7?}Y&t>56WZ++A;5a7IQ7Ta%_pIaNNa35y*P$7Bbq2m913xbVU!Q^hDFc6B zIQ-whxcMk6p_hc<&G|nn1D~0J*9wQe{(A-0e}H^eh%2#}ax9);-&e{T>CWgaHj(^u z$B!r1e;=Upw5Q4SvH!|Dx1zp$kEHtJ$n`P%>d%?v`gnY`f0A4uYp?q4WXOU4!?=c0 z`w7A~SDrI6@c9||k_`N$4E%Q)_$?Xu!x{MV8TgwS_&+l6pEB^Il-K6UXR8c6KLhWV zfn!a(IsNGw_`D4Ks0{qv4E%-+{QeC5j~VzI8Tj8b@E?Su9qME2&ySjWY^1DbHdhXl zGw`wuyeR`eIs-pB13xzdzbXU2IRk$n1AjUL|4Rn`f$&gnoZp_qa{G4%`}VSa+gy3> zmVp;$;L|hk$_%_Q13w`HzbFI$eFpwl;USK3;S!D~Nm+cF!Twv}9nAc^FUzgFOguMN zKKo_hV>9rw47@1=KQ#ltE(5<i1AjOJe>MYuJp&I{oo%{cJN^0td&QDmh=3at{Idn@ z)hX#e#>FS$_Q!BpM)SSL(FI6yp++;Q^EX24b<vydvrJcxE-&MCx|7X4C;m#r^q)0f z8xviLBUgHb>q=9p-u?F7cb`FNn}hn>%>n)PP1_tez-|ugo4&bsn$*C7eXa4JzUiBL z@16GTfb`A5Y5N`Ae}KCPW^<SA=!F~UnKySlrhgIYBV4wX&NusThE10Qr5m$SH+xB# z_~^V2*5TsBbd_*PPq;S5J=tJ0X1of{-B7R@!%WwdrJG9I*mN&^`d8*69KCDz7dOZM z`aKD_jV0|0RDbJ@Tu|J6-79X>F%5ITJ_GIM;C%<X!Za6}g{y1Q@6JijN>ta;{eheA z+wCp=sj;_jTEQ0AY^6&eBt#D>_$3cl3#Q|!Hq)8bh`;Y=(<57?L+(9bklV9f2^DTx z6^p@x``dfZHeC^zzBhf8MDL;zePi;{4=?@kvNvA##mhc;8Gx68co~G3!FcHx{UrRR zU-(hK@T-2|7ZMd<6Mon){HR~}RsZm-{?VR-eg9zJKiEqrmS6P`d+Hx)N)?YTDjr@? zlqw!IYD(eMRJfNoCD&QWrCz-8KKhKC;RKs|;=<*u(S3oT7e`l^*~o3K!3!1{ugd># zpA4gd;r`+%c!wKcc}X992^W~jw%j#US{*K}H#=L9_5>PSeavh3q7a|TbStna1-<Hy z*Vp-b_%<~T-B)@eX})~-H*S5(bQSw%Zx&aGAyTii-eO01-D<d*JbH%C=I+4!PvzX@ zjCz5xzW<MJL)v10oFo77jyHcj?-uW#rMvk%AGX{Xd$ISH|H@SD|6-kP`Tl?HdipIc zL7VmF<`eb4Xi~z@()KxX<dw!cJ&C?I(~@62TqP~cp}&T^yG^I(?ZA;z7_Y+B$|3A9 zYMSpb4>6m#h&EWtqeLtZ^OEKZllhIAnWTBeCpJa0!HDw`Lv*-{P})QzD(%hOw3Ysa zUWabOK6K!J6j1q4f=~u&&qj!zpn=P4@f4@X1<ve#tE#vBE|5@+&6jRRJ2BIe2-vxY zmb*Mp%wGX+FG_Eof~XZUuxSnwNn<<AJ)+HM&Jlgq!cPzPW<=Wb_<-o~O&K1`!6B~s zV)yi$_w7@l^eF_=+{{C2^x}99eZRb2kghimT)3qzZCurxH>2lvuz_$+wE64sgN=PM z)23V4Hr0K4!PG|29SViXT@YaamqM0&r$34)rH_7~`DX61N&5!3cQRDr?nil;jd}7# zx@GzuP|YP6-L@E-Q0NeB6rtATn)>u7b2LBdPRISIRde`}V*zq{Gb9{l#v$J!(PnG} z-#ypkE_=xLb@KP)&r!OX_TV_Tsa%h<Lc8AZ`{Xkc>~U^Z?f(oY$=kmjVL9g-eOJWo zANUUYM)^}6Jx}B9^*jyi7a99LJddLGJZ&7?*Ks-A6jG7lxQ0dddk{JF7aLw`_!7f$ z9R(8hJ6Zlz2iH*`L1(G_DZka&Pci&K!|@v)9*RAdLFYYVKh@}bX*hK9<qzqf8FaeB zaY=ZaCV%SZ_T+LnK6a$xJ&Zl{d&nQsp5$OQzXP3p&tM&kjc{D+WxUZ@CbsHNmElJj zUY~&<X}E2l$7bNClj99}(Dr$@v0rZX`#Wc^?G4v~AVI^npXZGI!SbEv>lMQbg>Q== zN@~rHjm=}^Pwh)G@CI_oO*i&S4Y&H28D3)S^?G;c!2Ukky~=m*Pha}$`3Q3F&p5-a z{zAiT`7AaZ_Ihpq_2hW7<rAG}kILWjP6;uT<o)SxxYaK(e1`l^%YTgFu)hz2l9rNt zf9}q}pEo+TzFsxFP;^ya9<Lh`c6W&UsXsY}!+sh4*^k`&vp54k%jj5tE;QWgKV&$r zMN)tCdT_V_`)%pZ4;l75OwLy#c|UR96A3@J{>(Pq>K|jc_2&e`VSgXv;CgbuUp>_B z`8GVS>HXQsaI0TnxUH`-hQnU(MOsSk_j`8+{=Ct#<@2iHRzC}YToU}Z{VT_C*l)}7 z*^k`&b3z7wh0(G8TyMD5f6j1QKCc)K``6?TskNNnMDqTO$-v9VeSOU{-0GiUxNSe@ z8xDJnNk~tUdw=vgX3zJO^M**?pZ<nh{euj*@u$Ra*bfP+vDiuEe!m+t@OO-kt*?&_ zxB4wOK*N9RL&wK9<Y1@CpT>cGGT09`_NN>BVHxbl8~ZiJ{{9U1e=zn|KUdD9A$k9C zo)HQDpCNzhe>cO=G`zpzxF$vICuiVG4L{r1uO|2YoMG%SS6BVF4YxX<8=XUq{rATH zT*Kv`M}_3~n@5gvIM3L3arWBY3XDC@fvcaD&b}z@P5uqBvA6Z|kl{98I1h*fKW)BV zG4?iJab8OJi+qv$d~Id;1+owIe^3UUp~n7nV_#vo^}jxY&QfE4q0xEX@ZTB!Y6hJI zPyQlb7a9AmhF@%Wnc-G{9=R{KbBz63qjRm{R{wj$t$qhy%IWp{lf(Z@jDDfvR)19n zol}hcrAFs0XRqz{bz^^-v47Xu?<3zKeP--!fB(*KyS~Wk82t|Ux?KLWUF}J(<)Hcl zjr|qIezLRg8Og>DHTG8;`$lK4{cee|Z#4ERoV}LMt;XKw>+THp8;t!`Mt@@l`<IQq zZ6|Lyd-eYV$49apzRbYCGx|2a|91A8-`1TXLDbjP#{Z7wT3>44*Kzf8U!!x4(J3+Z zcHWgT9OLYd*pZ|&jE-Huypn-`Z**qL@3p=CY<SS;ah`si!)|^tkE+YSZzR`p(EQ$N z>`yoQeZlbS41X_!&S%E{dSkzHm&i}u?>^CHY#+zfpCRO^#~X~!NW*V5yuxtX4j(l9 zCS(7K;dZ<@U@I|_q<*SDqsie<qx@;TOn3I$t}bxA2Sg=ZWpu8TZPmHS@S6?)*6FA} zdWo?2r~TI0%O?NTp937<HZqG%B!`am=U~IFKZj@FcR79abAz$B<@T(zS3m#lcs~8i z>l%IVer{#B^>h0Sd@8xG-x<c<w*MnD*sn77w}@+6kLMV^&hXm|x8vaJ8T7w2_ST=B zyG7;T{qIMP^10RQcZlJ(osTyBOk-b0?)B#yd+X21#{Mv)bC$6`*YLH*9=>Wjx!Ty@ zX6$b^`~t)OnnC9+V{iTZDueyMjQ#CKf1B>IA<36RJ~@21`g>=v-{08ZA-~afGR4_L z4=I&_*Jj|2M*lAPz3LyG!Tv164>$Jb8=c=9{)pjs8~#V51K-vE=Z*b6#{RVo_MNv8 zBT4wZoxg2EuH~=e#jeKwZ267mcd+4?8(v^|gW<ECzUovNj(g*j*BcIBl`k>+>kU7~ z*xzaRsmA_Z!!I)YKEu}=9qd>8%Y(-Leq;Zf;kegO{d~pg>?PkJy<_Yjlx?;D*x76O ze`D-z9Lwf_0v~PpZ%2-LwB^v#*jqox82eeqpE|>BIUHeh9y0c;jD4x$r)99e+}O`H z_O}>r{lClbKN$N5jQ+!hZ#4W7!~bM-kT0#5Hw`Z{_U{`$$M7$V{-cJs-cB|oq5R9` zPwRIp!z&EmiyXc@X82TNUupQE#{O}`>oeFNVeB^=`(?)7mh%b5{$68$j^VcbTx4`? zd0t`oT%&V?(Xs9SHu62h_6cKukKs0+Y%tu8caIzXq|teb96r_?{yaJA3*Tvff8X#b zWB+%<VXyu4OQV00vHz#DSN%5Ii;*Pkcb@!dJLy0UZL71hvA2HqGkm_$8DMnm@qt=n zUv2Cc8++TYk2dypzpD+m?ffjG^GBn9vEfe{{(Gad!0-*m-um;nvA6!bVC?OF-!R<n z_d~<&d`#~fhIW(j=S@_UB=8mTr}b52&g-o-{20Tn{Vf^zb`X|?H>-pDqml5oLjH8W zM`z%l8g6x>`%izVQ=AY{NnZbY!>!KShOdy{sXy(^`6<gQ47WO$8E)-yKOmC#r?)xZ zWOb?xUm?F!e@@T9|6#b**`4Qo{C<lw@T&~BI&T|p{b|SZGG2eF;a2BX!>!Jn8Tf$K zl6gtcw>k?AUm@RV`CO8L<32bfuQNDz6JH@8RVS5!-($G-=L^HF&H+5$g8kY!Utzel zPj(hVNxnRLcG<+wl8@?Voa=hn+v5`3X5jmo@!gIutX{c;EqdNlw72M4jQ9**D1URY zBT4z;brbK(^6lyPndHPlCtEi3c?NdB*Q$}cbJ^N#|16KI=F<lLJk8H|>&wsJ(AVcH z3^M#=e#YAv!(p$_X_#cVwV!1;?DcsYa}7U%pYgWXaM){F!4L3rwL*DcV>s-Gar=D3 zPvvL4X<2E0_4yMxR)7S4T=*2dY~W|L*XLMlH2he8#@j1~!ykPf$y<i6;%B^lZg}v& zeFVNY{3L$Hn?B!D{n6*C=<|TUt$jX#B(>M)zUXyd;3o!)=mpQuL29<|8f_0V+?LNI z!{NU^_oc*eTmEwmhrK>Orq1wFqFsj96^6rJpF?wk;nx0q!(l(GZ6tQ7;np6{+d;w` z?DcskcN=c=yU}pi=TrY#!)<xKWq9zXjr>T`hlU>?q44^>;X$AF!8x(O*S5d3hmj=k z@R9a<9U8c84?Uf|J`bj^;YUM|iNkMrLdiIV@~&>Rme0lVr@9O`!5(}a<2A!@GyjJ1 zkcWRZ`7ggg+C6#;_7nLTZ+#7i{%#Z===c)Gal~FE^>Y>H-$fB_=I>EwisR>ZjKCp| z-<A`BQpfXlj6j9s$8(;y#PQ>(zufWjSU#tCo*#iT9Is(Nz1Z<1S%KF%{xa=x%mhix z=WABrvk`9Q_pm%)b^I%BH)v>*ROevsx2@v?yGM529RH?W#CLIg9*;-&bNq46+lD&+ zF30Jyj_<?<i|2hIsh?-EeO5ZY0~=<8<Eyw%INI^Ud0ggX$8TUcpXc};J4Sw7;rP*P z5BE5JINQ(Tj%T-ube?kjdbVdg9}G$J`!4-?)A8L|Zl5^b#B$!9^{hIjtd{|fPh~q9 z>G*V(&t%8-d5jAj?@xc0IQ}p8yW<@1x?_~jGac9C`<FQW5#zSrFRu9-5y`|JcJ^!O z|3=5J<$m#;F(lO)Oh3PI{Pg@_7TcQjsrEV4+1c^SSs$Yv@6Gl+#qs+gC~3aq6FIL~ z?D%W!@Ao=>4g2Xv$6uwNFFO7Z+sWIGU&!|PzT<Dw{!7Pi(}9BVPs?X5%QMgM0=C2E z>wG2e7#DVD{Mp0V@5%iQavaa+LK@}x?K?z#t>Xt${|3kVvi$KpF(mbW2ezLl9q-Ta z=w-({u>AFz&#Kdb{(s@@_h7vw66yPWhW<p)t=i<zmGpm4XMa4~!$8ONy3CP|tDn*H zpf>5NpXJWJJ>$bd$Dd;PEOPvw{3t&w9q+_?Ki%;eY;PAi{sr3=p38)!<@pTz(Or(; z#_fk4Kc70!I=+GR@w(@%myaEv!#Mn%<E_}vTd;oAPp#h$j%zt@@Ax#<<DQP6#CS5; z@$)$j7CL@pR9vxfj!$5|bevZ|7qWcnoc&DJ*U66KIUq<EIX;E!`Rg2ipZmSb@ryWr zc-Zk5STD~y-iGD>y5s#>A0Ioe&nW-i@m<(%$1t90IjrS8;U33-WH~(M_)Xk?-f_w| zKmS_wAEy4_o&D9+|H1J%=QEwyzEtOU*4JK+>-ohAjt^oyoay*-mS>gY2jxZedxYZy zdEDnX$CHeEXE}Z=>+y2O%c*mR<7cw{Jmq*f<L4`mpU!@v&)C-Tc`ZNkU!S+7ypD0^ zN2l{9x3}W=YQKi{vaRFCaGtZ1<6kgN_H_Im>hy7Z0Q<%Mj(6gGa<t<Kwx6kvuVVWy zb^Jk=TaDwNvA-PY_?6tRUf-_e(1ZLOXWzv3bGhTMvVL!I{8_f|`yAha<@to;?br@q za=Z`g>mA1*WIXxY@lWXIPmW*0^3m(+HNSJX->m^8DL;w*v4`W^vVQwHz8&l30LO2q z&UnXlo>b!abozfK%N1W^zSNI?>T|i3AH{z6kh8y#^V;VfUqt`ka(pfQ$8*4tRKFYN zKR-KO#ki!`!>j%N`QhiWZXCCj>pWyP$8{Xi>*v*eHRHo@XRrDPIldq3_i)Frirk4+ zJAMJn`54C^r2T1*=d&ChbNp47+f$A|NdCOzcTndW$8TVLWpTXKa+t&crmf>!F~54< zzS^IL50Z9q_CGRy_H%qF%Xz5dE4V$@ab34hbG$qIoBmGy*@f+2um4xB=QB=mI$yC| z&UE}Q9Cyxl{BXvZwT`c%KUX^b9mmJ(9p9gEZ=K`+=Dh1J#}8!uxzF*Z7;hhS{Cf7^ zXB{8Rc=(#*7jk_0(D6R>^Bczt*&nmHA1!B{XKH*^zJcS>w$A=1`oFv5?~)I2yffFW zBOL#R<JTm||IK!LnBzL1pXd0wa9GlE$Hy{`o#gnlEQj+PSN&@oFJd|V-tlS7*W-?l zW&3&A@xy8Vf#V(7@4j<<YLu;5OSU7emj~G1ws!ns_S4-Qucz)n$4eMzMmnx>_#nrR zW4=<3=aJ8Md>_Wo#g41~agOWpjk6qQF~lx${2A`|amOEIzTzxzEjPXIqMhS8Y$w|~ z{u9?<yE|UWavtw^8@7{!93M=7raS%*+8^flEZXb+DeC_NY`0a;{wn%Y>-aqS-{klh z_OBxypGN&vj_;ix)xhbFKfw5Nk>eU?u5(=b*IkZle}BaBVH_9q{F|1;L-gkjXMaE2 z`KONm6uBS!!SSUmw;Yy}>L18@*~;;a<UJf8MIF6=M|E_4I?UO>$a0(LxVHa89UsU1 zYJIA{#^=S(eiY-j9tTqUO3nlIJ|N|*IIp<O=`7>+EslT4az2LRjOv`j{a)mFiu0Vy z9iPkb;#$Y6I4<1c_*|C%y^as$d_eEJQGe#KUY>LI2eTaX{u;G^k@}xF`(0W7-#gxy zaVNoetU4Os^nMxTy;%-BIQwH*ZoM2oo&8j=qfj0EpA4k&&i?P5&*=R%YQH<<aJjRO zvmTFj{EkRIcCzDoKb{_EQvEwQ|Gd%JA4UCp9KVC}G#$rO=X~z>NoW5t=Wj1NelP3& zUB_E8etzLN_JgGJHQn!a?2ox@FUtQx|GPT=636RZ9RG~#(Eg79DL?EscA(>rbH7E7 zpG-c(as7W$6^{SN{?g$1H1@9*jz7xz<f)D~vfM6o{6y+p<M@LdfA4VoPt<wH@sHSl zo^iY%+s|Je$MdO?K6LyIw)1Zs@4|MT&2dcYaX#aIJI5bmeQoP_E*r}3j=#)u9^m-L z)F0vaZ92boyp-j3nB%W<d%ojmusn}&T<@P>=J=oK&k2qnMt@Fq`~&g}9It0PxsBs6 znmt12Bvgu|d&#w&58ybl(b<oQ%wx|v`xN!xaQ4G!|ADiAnf3LxvmZqJpPc>WIxl3r zQUCkWz8ksv|2pHvE*W@#$2IO9=(t`-SmgM4*5eGv^?XEy<L7WZYH<7-`nkgK4J@Bi z9Un}c3mtD{Ib7@bO)NK!(^@{tA9D6u4(~et66e)lIDRk3yN>Mlsy~zQc5lbEeDppP zwf~;u!c1rX8S_=@csKk|Ql;bT$QL+%C*w<l<E6Ae$?=mT`Pg~n+TQZXFLm~ZGtS@S z>>0*lcRBm>*uEcj_U!Jlx1IePoIiYK?6oh#rSF}63(hN&?3eKW5A+>x?Z~zKFXOnd zjj@NsFmCJlf3?@^i4QP3<HerSqS$c9u}`GYh8N5BcPyYOhC^pIj3rHX{E!I84mBJ) zJ=o6Y8V;R5(!Sd9hsYNi4jsME|0u(uGYSPLNzV_U9KeT>pXuz+B|q13eQw$%<S;`y zU&rlhjr|1S`5Yhb%)s^j8ujO8?)MMI9)A9b{Ev?Bi=E?p$M+`J>vz=8+i9ow*C^Nh zB^ejN{}7a;m-dE3`YG!4a{L?e;f7;s_zAU&9S;|($#;6+4fbp8D~vt%+n3wN7!LcM z_@Sf=9oOgdU1vCSbY1_5;n30lr}UoTus@R9F^<pbr`oqQ9QN%we(&h`3hMNB{1oy+ z$1fn)`2zL}{aeWEjXnI=|NFGeaM<hixrW1D|BusEhQt0mZm%~S_FA4#8V>u*xUKUt z_45((FO2<2vF|B=A#wht_OH;ctK)wo-_7wO+1?5aho7%eev;wvQ~UWm!{LvnC5FTP zS(fu^$G;{2o#EK8{(r5T3=cY-Z{O#57v}3Z!=a=9kLw-7p`-uj@Jq+{qfX0wF_NV1 zQ~!Tg_xykZhfY5I>FxNZ)EPpq<Hcf*FJqj&>ZF|gLe4kl8;&@3D0VKXHb1<D^H$&` z<c)?So=@cXvchoKUqJg~9Y2TsM8l!8k^}QOhC}Bi+F#)KpUJOxybH(in;maQeml9g zXFX4`(Q*AhmVb797VG6LqYwW(a{lwFvsayVJBpDc9Y<!<pH7bJb&q;|pVqG)N9y71 z^*M|^9seEmdl?QtFJ;^tY&gpK8`=+b{O{xw9oOSRlO3PR<3-cSvqT$JwIk!e9LM(} zU*@>Zd(I@+av09}@mgoE{q9a@ukHLH!;xP-&-<w3OX&ZThTHb}lHt%<PkX&iQ0w<D z@{gSTcjSL}Jo>+nvDlY}W4}6||F_}TZ$I|;?44volI}P9zlpI}OY$uF4&{Fo+ihpZ z?<C*R@khu9kZbuL!gcF#XRrUqb%wLo@-H_W{?DiXRgPDZ*BEZgf2rZnxt8|J9lw%% zmEq9YgX_N24TsKqv_H#nz2EPA!!d7M!HM`2hC^ou@~0i&hWyXuS}%WPIlu4tzsSFG zJdf+yyq#rdlC)m_&VDq=@ozc59p|{Vt1`zgqkWU(T8|exuE*t{b6nR6?>MgiQuTAk z^*N+JIsTZo`yT1}eLpwa?&|nyY@fS2{yN8(y&c!{xx*Y!a=kgh@qGGoh~pYp=Q_R} zDq7O<j^COc@v|M*b^B$GpB0(MZg#u{+w;ASYxz9k_|A-<FOq9J)EivBH}+`HGuUo_ zbbK0l+g&2ZH2$1R-of!R$#-)6dGcKy*ZW}iG#vf+W!CRN!{KLp9^csC@iyec42RAI ziOBCF!=Y15`$>+EC7)(EbhMmH4TsJpv@du3cjWWPwfx&-QYq;)V-NlLY;PAj`+VBp zZ|t$(*Qo!H<FAlEW;pa0pyDL`*>LFS^J-smybIggUk!&&19d(y96AeV|B2(3<Ucz8 zAbD(8`LQHzSND)747cUq!Eo$X?>Fw^crN2xcXBQNp)Akc94{sxZgj9;eQxYTXFrSf z3ynSeDbl#=_!#n~hC}~y*4Jvop>rzjPjdV?^3x56&Hx?<`<>y?(d+y!ar{&2taE&C z*6$sT?@oS?;kI5LH5~iBk@inGel7VkhC^q6`u~yP(D{J&e|P*n@-NA?e)T%DpB?Ya z<Gow&CZdwmemnC0$sr4W^m!knoxR={InUU`&vv=;BB{plT=M0P7m=@Yd<^;VhTC#J z%kc5CzvF3tp5v>?FCy3c4q$$7HTKZof&5v=b=>^eagB$&^+c{W%}*9^J-j!$?spdT z4>tDj{}K9mh~pc`=Q*Cmeplo8Pqc3^9QjiJk2W0p)$1cyIX;N`Cm0T$6#YNjaOgZl z`|}<DJ^96k+j_jtaOmtu{hJ)u`nt_<=#1fd`~kzEa|Ct%;CKW1<K$W|%gNt#T+g%o zV06NMnXlyTvNK7lvw=FhlcOKOpL@uAIeruQP{#{-zN5f#eU9)b!{LwC?_|TV-!;@Z z*zslLGYyAM|G2zJsx%xrb?pL<&3Akbd7a_V(SEVaaOnI<`xTCVPkx-?(9!xm!*J*v zsK-wn-<SMC!zYOS=Pl$#(iMh7U)Ke<7!Lj0sB^pHH<RB-uJzuL<@u<w$A0zyhreVv z^z}NVR~`S5`fnO;bv`s4Iz2f*{M7NC$iE`@e&+2VKbEBYJ+{ML9siNMz;HDETf?uV zZ5xg$zP8&E$Lm-=738hO7Uh2ydA+mO=LVc(?2+H)%-02u*OOo8cx$dJZ*n|Iew*R& zNBhwOhGV}IX#WSt3&<Zg96CDRe%^5CyiNO;9e<JhHN&B!{pdr(p|gPN;!ho~BLBj0 z=x9Is$#CfC{rg#a%7&!Y@&|r3b&}-TP99}_ZSVMN<bw^j?PP@EXeS-p$%~{?$Gel) zI9@=$j2wO<UoCl_@&sqE&#Ab<*pC<coq62y7RPrWf6(z+<PST3DESMHUq=3l<L8mT zZaDnc`u)i8@xr_FxaHp+--`T8!=a<~`)|XcGoAL?d&!0*t=}o+Ey=Zh=dql3aC|v= zFQbF~9u`z(zVEp9qZy8`=6bxsaV>`i$2DJfIj+y~_yf86KaBC}J!6k@ID`59$Z@^i z<)4l}L;If`e^Se{SCnyWhw6Wx;n;609#`q;c!GRua`pe<wvp~$#vbMT4h$p>a`x+3 zFEfoj_B)39DaVJC&oLbOT3>aBLr3o;XmtE+>MSuFI(nb%afU<ZQ`(>C`1|Ci84ex2 zKIB5fp`*`PUhDWEp5M8`aOh}zyTx$m=>2-PJAM*%?lv4cTECAN4xP7XztQp6$e%VG zI(j_zFNQ;BJI-TYcf1?<-wdB1_OlZ5BB@jF=w17@-v70=<5Q@!ExES0m)k|Z@9TIg z&O;7zJfHPd>bPDXzmi=0g<fxTnzJ89{acMa%Hb^fd8gy2lCL)$<*DuVF~gzr9_^oW z{7v#d84ew7w|_MpIs>^Lf75Y&9`w70Lr2@~=Y~V)MCyF)_$u;$8V((8w~0QoAxZ03 zpUd3J@fWF+XE=1U-F7z|{_M#(yuIVQk?(9cbhO>}F&sK`X}`DQbI1o7j&{3_?Y7Er z=v+?w1&*&JuP4`bTgmpb+VKm>uW@_>+wJcizmfKTCf9bGn=ejDdc)c4{RUZmqwlp| z-k_fe$6q0DZFsT#RNL)VhNB$%az4}D@jb|QFdRDCZuc}CIxA`4$MI$4`xp+L7F-_< zGaNcE(0-)j&ybHb96H+mrx^~N9z0(&!|{Cb!wrXyw*PsCLuWSaYaG|>w;BwGj<)|* zj%#~9-EipNM*XuKznT1e!_l5&NxaB2Yz>Fbr?h|C@ej%WOs?(u$M!)c_P*l-xUOm0 zFZy2XS8#mU&hfFdA4IP0c{{G_M>>0r=QEwXp8u*e9Qo?W>rCc5z7u(!;V6H-&S9D1 z(9!1+uW)=3b&fL}I$B?67!I9hXn&658_6#;96FaV{$Fi4bhhPnCf7UOo&0ukE&p8^ zPwq4JA-=T~F-cDw4*e0-dCu_z$zL+u>bz?>bdI9^hmIdf{w2BkIf#C?=?||qt@l&p zUC7Z+u-~`n|E`8(zgJLy56AU7t3HNXok4~}N3YWw;`n3KA3?7EkEfrL9KViyf#bK5 zuQd9o_ixx9PILC!kFIj|+Wv1f9R9cDaosx|&mv!MIQFa83q58ybo4s^Cmo+goj(~4 z9qmVdH5@wM(Ed%wKOukDaOh}1`rL5nEX<b|Nnbl&nICZMpN2z6`%z-==zARpKcIap z$KN5(GaNcsvp;q>9RBRMqr6Dk-tq0ocO%z!ay;W<Ut^DUxFRRW#0m_Deu_GUj_Y+i z;|#YtC5A&s&(|O7_#dcWL9TvYLO)kIemVIm8TfThU$29?$#K1I=C%wvPdWP`J4NO5 ztmFHUzv^_>(a*0Pe}()fql0o=$MVnHC)$s;lR4Dy==d!1tqr$2`G%wXFQ<JE$1fz` zlU&RH5&AjE@s4bVGac_v-r)F7<R_5pIQvYeD4%CLd!2vY;OsTd{N8Znt1Yh!x!3WQ z<Qoh}Khik!l;O~+r2Vsw&m@1*aOh~9dE0R4{EPPQIsOIt$A&{k<IJ~)L+1!ySMh`6 z3&?*q96B0ja`%-DN!ot?PWyI_e?;EdaOh~9$u}JS?8fu)JsjVeycfB)AH6ScfU!sW zY|nN++HmOW^$_D7KaBd547WOm8xEbPXg}NWjpWtj>gSsr2TyeTZ{%lY;I}ya9G*YE z-SHOWcW2P~v$NOh30`u17<JxqI-k?e9~|$>{u>`4g(3;<0p&J~<=@$Gl-oS&cXhmi zd^^Lf&aQ?-=UUqD;rONG{m8ZaThPw~9G^^H>i8k#OB|m~ej2&Pnb%v0Q<83ST-TNB z9iP2pWdFG1dY<A1$Mrnm+m7pc>PN?4iR5Fu4U9ghpKrE{w)b&db%r~BbKA&%BDt35 zun5P_aQ3QmvEit%4m?kPnd5EAuQnX<LC*u;W;k>v(*7>T$B{os?)}`Dfxqo^^!kSP z96yfwA7{|{+1cMr`}m-!pfpZiPo8Ty@~i*HYin}#Kl*hnHq_bcdc4SSE&me3QEs1b zzlS>h9(g&r?l+e^t}*uLkD87&9QynBjJ`SA@qy&W8g6w?H5@uiXn%&|3&}4q9Oag3 z6YcjZa`j)Id%w}xL;r8odCKuO$e%MD`h9kc^j|j|Iy>+@?%R%UL;k+u(D`G#Nast# zp)-T_-#R{x{9lGcN9(=i;7Cu~)djTAb^LVl_J%`8+sU?u!=H|OM7sHo>-p(j42O>P z(|(3Sr<gkXI<DuZ4<Oh2TGJug?`UI>b}}g$@e;$Ke<Jk{b^JK;Qp2szJj0>$DD7(; ze~`S1-21u8*rOb7h(~^2?)bZHBYunHTK@Mt{wCMOuQ|S$Iv+W%I^Q||S$?$N_<qs5 z`u{A;c~|n*@-@n#)1Hyt9*(yo?_;>F_x%lr&Scsj=y(zNNW-D?I2@2P$#CdgPW!2j zuO**BuK9YK`C91sSL7!;{x9;&98Yu%?!@jRhkNkz1Rf9B=<N0XgM4D_;s0y&^E1cw zJoMLwLtpO`kL@oTlC)m7<N3}Oj&~t%WjJ(nzR|^S_;W1nyE(p$e0#&8a}fL89)?5b zL)!Ot{9W?B4TsL~e0h;{pyANz*(>1K2*>lu#~2PBjWbgXhtBD=FLC^M^1}>=PAWIr z?|gE!A5PuE7mdzd+vf_yvEQ$$f2`yGAV1M?>~~`4ARjx&aOf29Jkte^4<%n~ICQjq zUT-*bj;8(1jvqmOJGu6kuG>WZ{LyheuknuKLuvmn#|z0j4T<zr|0wdFhPM%uXCkv$ zf5Wqd9Y^~E9Y2HoV8`|T{2Isge)|g@e~~(OJN^OrvyT6h{2z|%{r0VfMj6rgpwCI! z+HpO9+QadsC=5vlI6eRcC}|YAmgkxX$Eu7y>iuoj?*hm5ylK7DxraLEJD$(uB$qq> z673&$ygmJV+VOwW{;%X(K0EUG=R3}R7Ajv-@_^`F<KDh~xb1i^@^*%!U#w(2-^Os1 z&qcJ~!SS=ndys26>;FaQ=lCM}d4S_blaF`&1o9Hc&nGW;{5tZZ9KW6XbaE}vH7%p^ zInUW^z1-~V^*LAT4M+LtdD90R{};>WVW+<X>-{gr9_2qG5&84J<GSB39oOSgu>+&u zX}%^?zpdl?e7|mv>-o)H9AC%rtDoa9ZyW7zsN?OrMSQH|eHpi>IsR`rEUDV@AE>j~ z@mTlB{#eILslUc?)D6;w<S3THK%$o`o&9}`SKm3V$6<apI%rbEawDCshDGmM{#wpE z84h1kJP*37;}gjDG#u?g>t&$f&>7fIUL@^5EW9<(b9N>lW;k@T9*Ycz&h|Y2G0E{f z@@a-cN9(=RaOmjym~zMeOr3d#Lr2@mBEz9`H;=O~b^KcLqYa0SwyTp3htBeS<VDiy z!@^s0`BamiZ8&r;WP85RaOh0uak_Pm7n0v;ICQk#K4ds_cI0uTM;+gW{7J*1qwV}9 z!=Y10`&S*GNB*Ya(9wSJiQ&+>m-e4Ieh>NAhC^rR_VR*M5WS(DL+35pw{ZLo@>YgJ z2fsn;M4ly|(I1D&AJVqQeu8YT;iPgG!=a=7w4dS7Zpq_E`#K&c-`{ZP>vbk04Y&G} z42S**>P&U~K=MP#v&0thp)6NkBsCgt^Lvcpn94K->sah$!=ZB;b*^yy2J-ce-%tL$ z<4=));`le@S;Hd-vgFPBnP)is<l&UqbaIV*uQGn7jD5D)uV9>C<m@$0t~7kS*q_Ss zT<!Rg<R=@B`qDUgp5f5Z<8i-p{2*rFQp2I6aq>pPp;I(iUL>t^d<glShC@f=<U@u- zrz6*^k2)SBf6{R1Xq<e>aOk{G`&S)*iTq8&p`&r~6T_i%<Nop@=`+VKB>&oQ=-k*U zn8(_Th~7009LM>6d&e8dyBH1~jgvbX4u6U{uieG*vE+Lg4jqk?0}O}GTH5dDxX#xP zG#ok_C&wEOosXzf?Dz-dQw@iX#>rWRLnn{(wmFWsA+ItVI`|Dz1G)Cc6@kiiM#dg- ztS{r_afU-j<K!8JLwjHD_Z-J{zWzJIp+AfIR~l~h*BK7|h19>p@df1T$&s&Y`MZMg z;RVAHe^$sJ(%Xh3{#+cW9FI2~I{JU3;v*vi)&Gq8-5t-$jqLVzyfgWD$A^-a8gBip zG2F(<`^e!2%I(&U(S9E>_V9lL``2Hcy~fE83`aTN%kuoh@$1MxHyr!bIQgUD&^e3q zTAdtgzdo8gflNwL|20l_FdRBMZ|mZ?&i}d_4u3RG?rJ!6h84(*q&*z(P2R_F=xChW z-*D)3X8bzP@fPGG4Tp}#$w`JoN8{{N$2U@EhT+h;t*g99T4*?QZfARKa{My#rG`UC z<K$|?p>q`L?<B{MAV1x3=xCh$o#D`ViuRW{{uud{hC@f=<T}Hlvo*Kxa9rELJ%&R^ z<K&};LuUxLpKyFXZa-r<bnqLbSIE)d@$oJBLweiTBaS^A4><O*;n2}I`K{s5F5~tO zj;FXC8x`rHUqC<BBHC_cxYh4sIP|sLyE(4)v;(=uG5vo(gAIo(Z$-O}jWQhZ=S1>J zh9l18!C^^r9q&ngwB!4cpYM1P`8vm&$R9J@`uV)!Hcn=bj{L&UQEpS)ahqJrLI1DS zj?P}=WG}-}&L6S9`Z@kG`2fSQUyYN)4TsJ{^m~-!H<6Dw96A~&ryCBPYq>qs@$<Po z%W&vuoUAq+IyGbDMN*yPhmtoL4jqk?#~2Qs;bWm9$B!NFPkxf&(9t+~uHn$h83z?v zPdolCbuKX+Iz3ti^VshVhtAv7x!3VOk#8^@IvOXRG8{TL;6>82j$cLoqT$fdIQh2W zF#VqP?>YW8`NxJsN8{wThQqXPk-SLy!SUYYKN}7mjgz^oPxK4uOrw1}$ET2YHXJ&1 zGqyds#>sqqkhGhzM;xnToa}2jbTm#5F&x^<xZh!pFD4&lIP@>2ezD<Jf2QHkzneNK z$L}C7C)fDUiS6oW!_n0>zo!`9MtF$b@_w%2h?56U=Vr&}kw5DAa`HDEKZX2T$L}O> zGgfvc$=6Fa!{Mi{yQ|639#C%je=Hh}J^b&RBQKIpcJ>-4&odn5oXvvxo#UUgoG&#T z`_(vkqv6nbl{)Jje~kQ2!=a;b@*%^a^Uy?jk@TqJw~{|;ICL~lzGOIbj>nghUUj^Q z{7u7wG){hEICN%Cf{Lt{9Uo8rwc*gwI2mKy(*C>SK|v<g!tr+Gtqh0GHXS1S9Sw&+ zKhS;`$3G<B!*J+moE%^{bRL-;>F?+G1LOx94jqk?;|+&Srzw$6vEyyYry33&jgzws zhtA=&pX2zU<W+`4N8@CZ;m}z{`z4MaL%!T_=-@X<Cy;A@T){YbhOtLeZqGP&q2bWc zIC-_<(7vAgz25Pw$=4YU{bAI<$8f9vsNv9mpE^%C{x@<RKQ&HHVSM<A_CCMg8jkpL zqWp!#f>NF3)amN@dE|W@zm9y2<M)xza{N8=MTR4uYrU*8+{Ver$y<vp%I)O#!TZ>s zj6LFHUCW5S@9Z^BerY&9_MIBpf9v@6<o_}p`_(wvl5rINz$9l{q?7CT*VJimICL~l zZfiJnKBG>)<8PAhVmNd(PWCe#I(Hr{FOv3k{0j2@42O=!$x((w=fvqyiN(e_zJ$Ek zaOh~9oM||8ic6p(=gk}+N<PPM=yYfO>U>1Yx#x@^6I)^Ip}!URafU-j<K!8J!~RR! zpX2za<QEza9gUM$8xEa<L-3`<1IPC#zr}FqXq>#)aOj*u`v)CAiTn}6p`&r~S;L`o zEA3x!{1)=R7!Do$2I(DgjT;;ALDHwj9&v0PI+>(z42O=!$t=zbw7y>9eiM$rK%Q$j zKE6f$&W2n4e8b^;=b7>%sfXk3$@d`F_;wcK!$`vse>A@b8Qw;?9-o|PI9z;yIt`A$ zMShawUy@(pc=Pi@9q+|B`JCa_&o>N*pE{r1i}NXslUr{uUrO4CT+2b@&v<9AadNuh zDCfgjo--XUBA;bA>PzEfwc*eiaHzaUs&jlN@+QNfqkbM^ICQo<3@WnDb-XS4Nrpp5 z<K(%9L+2gZU+DOA<d+x@9gUMW7!IA^A1*JFZgKn?@;eNNj>gFihC}D56jWp$=lFc` zCk%(ql<vVi_O{{BIe1pY-*bE<`NxJsN8{wThC?U6G}8IO@$Te58x9?fleuAI({-D* zv~TBl6?tdF@loSszTxm^J?(oqemD8<hU25g$$brn&YQF!?D*^C2N;fz_zlt+@+|or z)}f472N`>G%}L~k7><t`Co2qxc5=47NSfz(HhG=l&|g9QC5Gdp>K|t~^oLXDM8^*x zKb;);g0wyd_&URFe(y5e#>owaL+9T~d6D#r<N1t-pE=&2JcsKr^=Bk`zT*qX2N-Vs z9AUVPlV#)@ClAgKZpP*td-(r(BH}BZy~fGY3`aSi!ty-R@ulSF8IG)LoV>zt=*%gL z_Ir)vlgMv096A~&?=~Dd<L5*=_c^{l`9p?7N8{wvhC`=Ad8G54<3Cg9CBvbkaq@45 zL+3r}yzlsn<ewN09gUOU84jHrD&$4dzZ}1SJjQji)^G2vBKxj}L+9Aah;Qq7J-M#$ zRY&7wFK0h-Zlu%C@iF8B3`f2+P7XI5{#;D^QI4NSKHhNXXq=pGICMUw{Y=N-C!b|F zbTm#@8xEbeRq`UK&hcFGCc~kF-yj`Lu5nW1)d|KPaqM##NIJuC=x7|f*l=j?!~I_7 zcwh2s42OO`I<cg6hFksn42OOlbv8I&P5v0U#-&b-Z*Li1C_0+ozZ;JDbE5nqeP=ja zJb*gwc$`M{OUQS1d>;9MjxQsh?)X*Y3k<h@E;Zc7$qUJ~{eRFoxF5UR*u#H)j_5tk zUgPAWhNGO<vpk=0{95v73`c!woP5=A=$tuEUL?KY_;T`h42O=!$<GXj&XW01iN(Hh zyo&sL!=a;bvIURFpnRZnV70tR%5l6GxgI~$^3*ul&DnQa5b12^c$|DE!{Lv{$=-&; zpTE$)zvGXS4>TM)*Rekq8xEb@YUD-I6vr<mFEJcC8Ykx%4xMGSP?7VMjxQo#U^sL% zPA)MVI)9}7QI0=KzS3~$Xq-IFaOiARCohuDbi6b9d4@wr<Kz{FLuY^5U*q^-@*53@ z4t|4l7deU@{c!{1)q}=<g77u0myL!)N8{uRhC_Qc_xp<Dhm*fyIP`V>`+?zB|0~0x zzm_`RIesDePvjcMrX=J?lD6jYFrVKZh9mwo1?yO>x8W$7<<uGF_(kN0Ies(wBFFC| zKh1IdzcW`FUMTz3db!nb8z+At*M7Y)H_AXu9=B7j@vxKQ8sBzsT;tWAj%)lG=(xs{ z5sqtoD0W=`pJ;{S+JEaE*Z#QNaqV9xIj-&eY;vvl7>|dqb@tkxKX+XJ|IT+t2kl`N zuhYomaZO*&-3*5>AF_RJ=lDzHI~k7lul3T)aOiAUC@+%wIesJg0K=i9^;lpybgrp~ ziu8TQ&m$jaICQk$rx^~N1r1P<`==eBNq)HD(9w2MWjJ&S8lfV3j`t(4Hyk?Ju8uMs zIxU-^BL6?s@o%WJ+HmMh=oZXl7a0znx2SWe<Ij*^WjJ)S-L5knI@d3X^zU%|O7eRQ zhmN-MM+}F~ceLN=_*djl8x9@q7q1u&ojym%i=@{a??wK$;n2}>=TpO>GnMwAJ3g8G z8^fW4-yr==uKjTq`(w`Z=zH`dj0=5XAgP1l(9wRnt>Mr<lKahf{0Q=04Tt_L>i03+ z>hEVb^nXvC1027dd?Yz!5g%4DJ{)d1;<@H`zTt@H@Cm8OaOm7jol_lujr>Z-^?CmH zJN_f>UvzvIjz^yuZvFh;a69gd=lK(jd+m5UWHPyy!y49am9y9JsL^ngbJk*%LM*n} z@z0Kk_)&(VzBEprU^sOCLY-3_f0X<T!=a;b@*=~bvtfz6NV?SVb>vqW4jqk?>kNm^ z>ZMSL#qMytk^CORp`&r~5yPQ#$dOQq#Wp%Vj{IrEp`&r~6~m#EzYHo82OQ5Mf7@{A zbZ7hd&T#1bllK2|`~&hB&ueKr(KwlFICLI9N?s(jbNqht&W6JujgvbV4xRSP@ufV^ z-tji%dLB>x(KxxcvmZnIfsT(NA7VKC(KtEUaQL%;_TwF&Pd>?T=-@X<hmfNmg?S+R zQJJwv%y<^YlBx}dj>gF&42SmF-0zW&uOUCi@DP(2Cr>im>Yrmc^q-~91&%*OehIn8 zhufL2dknYveavvgpHlflde(5nN&Ua=A3ENa?e=HKcO>u1^MUHmKIDBJpGH2)aO>w3 z!)=_rfn3|$_)fw7*lorh{_8yd31_cyQqNmL2j$%T=txJ;b1Kgvf8FV5ocz#m=zK~0 zPaS`Q{0qZT?;0n6G#omASs^b-JTIsIJh39sSi*4VXq?pZrD}i4F_FEVUsZl8c{it{ zak7Wu@TXyAq|?*!GV)%A!yk>4gA9kx;8l^%5XW~TFEAWB<2y$7(+!7C$73Tt)A1Pj zEW@FradN)l(0PsawT{0;-e@><G)^9EICOSD4qwVV#qnLpPcR%h8Yj;(96F`6KhN<L z`9+39N8{u*hC^pH?Qd}WSn_p-LkGV>T2GGtTPT0|EkI>FG4_aKTxP|dG8{S@Cto%k z+Bb2(e|7vi^0y6#{-yGV^s(Vq{~N=h{}FZm>G*r(Ka*=*dIv#5Qny2+cc0%~4Y%{j zzJ^00kMVYl<3q?(j!z<A?D(PNYaBn0{A$AsWxrZ4w;OKb<QL@V?<lt)nBO0bJ<z1? z@*=4d&y%Zt&j`oz$x%LN3OVGv8++83UjN_U*jxP(jxXkZry6ecQ-(ul4ejg5)z5c2 zL=GKkINHO`t0R82<2#Zc>-0BL{{qKfCcoZr>*t+@!_SLo|D@rlmxm&EVlNmDd)@CB zj_0GmCABy_ddFrchiEg_o?Od8ulL*9*{e=(XRpt18EiPpZ6eEOsN<u^M>+ih`dMu3 z(H@4;&y?ZNzm+;=j^9K+*Kn(|&~WH{O8X|qKPF#FuH`n3exC1mIr&wNpG&^paMYuw zR}4qJJW2b%8xH$C{vbCMeSjJ4f1-W9;jrH>GK(ExIPCl2MN+Zhu-_xlSgh7?nC?aW z;~g)i&RWCKp4(IBCc|N>&(GONj`oJ~?{<9jgQpyCNB*MY=aB!!@sr8_My}<vJLh$u z7<;sb4asP~-x&^n+MN*be>vWgJT@!(9{yXM*5tb1!QAiGjt?i_+wn={6UnuFmT|w6 z9j_su>G;k(p_p=fYx22{uP3i|{AThd$ETbW3u%eth2$$8|ABn9<NqK(-SM+dj)ioV z<HwO-<oJQ7MD~|D-jDn`$KN8q$?;do?{d7?sj-mOJH9*l!;Y7eKkj%L`BR2Zh{<@z zcK8>=(GE|c{p*gOK>h)_wzp|)Kc8pdZAwK{Qfv8x{zmGwcl;6ZZjL8T`~OP2_u#0i zI}YF*AWeb^1mqziWf2UBF(w9zjIX5wR)z+M9neBB57;D-XT#QpLIJHvEC|T^8BiiB zgb}e(5L!|oJcKD31Vlh|L=hqogn~Mt_MH5_zqt8!&tJVW$-Vcpzw<kfd+*ts&2C~# zn|Xyi3?4`RYj|(+N8rii)8PHcC&PW@+u;Mrx4=`#zlW!iUxSZ?hnYUw`AWxgGWi6I z^UFbQ@1s1pzbX&%Xu~P?F|(`>a+`k<^6Vtv1wTf93SLis8QwChp_<0y>zgb4t;p|( zcO?G`-kJO)ya)Nzd6K^uc?mp;yyMFf-<LcJuJ1e3^Yfo@eV>~8X7~`w^W=QVKa6}Z z{3-J03nV^`{2Jo@<m(VWp1d4hLLRwL@;^h~3_gu~1pKe$sqnHOx960;Uv5#5+v|ER z;+K)ng0F>#nb>CL>l)6VN{8>GJO_~HAo*VSQS!(|rV_J!Ox^<iIr$*?S@Hq!dh+Ms zSIMWsZ<6nTd&Ww;^t{>zk0QSbk0JjK-WJZ|*^j(sJE<=v$Q$MjVb7=_xAVp-cy^FC zGu9V*rjiHXOUUQJH^a5R{TE9G?~?b0?;xK7-$h;mKS+K9UQ7NB{A2RK5^2vT<i+r_ z<Zr|4$Tz~Tl3#*<OI`=}jFbBHIM!m^q8uIv*YUi2sg&<c-V>foo(k_rJ`C<7p9CLB z{wH_}c{x0ld?kDoc@6w&@_)f|$eS&b{^pVYi1=c-j^}ZVXBqibcolgSd@p%yd#U$x zxQ_p$XwO;l2jTVPQ{Y$0OW`-kx57PssbA}@f=7{GhsTg#fp;KJUM_iWC%+Hg9j@c) z#W=(}d=TX+MxMds`S2&mH^N7fzX?w#uY->zKMT(%@3}(yTTI>^K8buB{4eAg@aNz< zKJgfzRpk1Ac(+iVSCD5r`6_q~`Dyrm@)PjG<lR<Ee~*!OgnvrD9Das;G5i8t`<sFO zUUPWc?55}KQRL}B{vo_8`48~!<Tv2)<agl-ERnoByg&Ic_`~Ew;E%z%zc~~?2l092 zW$<FkGXdi^gWLx%Cx0BiiF`Wz09@yXI@EiJ`~>_s`Py<hPN&FMz`rDKw_4)Qled6h zA>RkTPQDZVQ;^&H%;6D|KRQR&+OLjlWIvX?4ZIV1F}w@;1b7_zPIzzf?eP2HdOqyJ z_&-J-(ZSQOWRZK}lgUpZ&r9UK+a%8$a2<#CuZUNY-vX~9UkKky{x|qe@>^e({Cmiw z;D^X(!#^Z1gP(<mnY7K!S1I~c@9^kcsbBlM7kOgIYv7&8zkzolzX*>bPgpDU^(OBP zPbSZU_ao1NKLqFgrc(SHh#x^-0e_nOGk6yHX?Px7>z#{no=5TF71G~@<jvvBD9<wF z*+@PUUPJya{3Q7p_(k$+c;xt|$2}hHi6-v_Z%<wT??mp0-${N19!Gu<ejoXRuSxro z$&=v^k-rM}kuQf2CJ$dH`BTWl;G^Mse7&6{ew@Rfr93|5nL+*td=7aod_H+Ld<FSD z_-gVwaQ$3`Ue{IdN{W96UPXQazLoqqd?)!&@IB-|zz@KAJij3Ci*b&eAmgp^K6pp+ z>o}i#kPkupugHhPQ{gR5HTHFtxYwn=5#)EmpC%s<&mvEU=aHX-7m=Tamy&0`A?=w$ zJ_bGmuH&-;{hH(O4U}gk^1Ma99KMBoH+(z!PIwLZCHQ{wI{0Dod)}1(9wYAwKMB|V zu19~bl5d8G<w-t`&xf}nUjn}?$nEPhTcx<CPmnh=R*U#y@Rr7gn6F&4^LOOq;A!L= z;2Gqv!1Z%Tn!m?-X;1;hd*RQ(wZE6q&S?%`NqN$dXASun_?zT2;Ty?kz~3c*8~#4| zM)(f6w*M!z{|NaP@U!Hxx6Am1<;%LISq(8?mykc4ybj)qJZXcJZ%f`2-kE$oyes)S zcrUp2D-rEXa`;fn^Cj{;L4F24nmndb+MiB-3p|&+A3UEt8U6>jw*OJI{{`|M@P$En zhMA_+|3ccc)ZuH$SI0<vg~Kb!2i+m@n;gD{JTgk+w>!Ls{A9Gm?|1lN@~<%t#~l7C zc?ZOwarg!DfwxF|E<5~t^0{3l{s)JL7s%uGda=jrMLeHIIlK+|A+MBg@9-|<i=!pJ zo5SxWzu8LS?{#=za@!BP^mq6G@@;6(Acv=rzl8HS)!`$_+qRbWjB<Duc^TT1?eHS< z=OZNlM2Al%ufg>)&EYf2!($}>EQc>3Z;kdZarkQTe@lALT8D2SFKsRb-g5YR<obW@ zw>f+_`ORNS{(TOwCBKXl?uf%rk?)C={GU1eJb4{{e|OR0*U0q^I^R1ytWfIL>-{72 zH{9Vd<OeYSv~hSR^3#}ayEyzV@*Kq9?eHY>q|VZxz7Btw{8M`qXO;mDA50$6MdDK& zK7xEC=G)&pJd1opxa7}vcp-VOjuKzu@IRApMSrI{d?tBYoS(BCzJUBSyw0}7;j78p z<N0N+!z;-vywcxI4&Oqa7c24G9bQAe7W379haV<Cg!AE;!%vg%#r^8%4*!~b66TY7 zhkr}{0p`OS4sTv0<Du94>K3ve;qcbvU0X@~tq$)@{xRC$)!{wKKS2I_9Nvd~8|I$} z96o^jTx)6nAcqen{|BzGCmcSS`~upO?(kglWA;YcEcp%(ke|nVQtI$$$v0y@pW*O1 z<mcN;d*(ZQIeA1Ii7$8f>*SxH{Tm$q4!Qn6`u7~ZgM0__?{c{Q-3UGZU&MTSh~m{h zA`jqtKk4u@<n@?8zjAmz`CiPQR~;TN!|k!BjlFb-W551R*--bvuf>J-J-tFZZf6_b zS2h?q><ZIpL%nzkX?S!r<{SNaP>Z~Uc}3l8H_UPr<E>teWb06|x_(}D67FZ!Gmv*M z##LSa{>;6&Ur^V--_;uPkh*?;>I%93{n(?pjx}EY{`Px#eo)uXFU*XQ{;BK#e;JSY zOno})`)%u{@%sM<6EV;l??HV>F%PNh@3qI^d{p=0e%>qT8-C{#e7yRQ`>_8w`8@0g z$YX6qW+{_ZV}3op(Rkd}X}>a1c`x#6_;hkT?#IdXxF@2VUD+=^?o-J1xbGv^<K7PE zt>)3=uAd86*W+GE@p{}_;C$40J?_KF^|-Gj*W-SUT#tJTTrZm6i}OMIt)2l-<9M8x z0dgOFHhBiTn!Fkwi|bVDU4!#GjeI!H@8`)k!4H!AaNf7W^{)AA;c4W>c;1;puK&-y zg4~PewcX^!@Gr<~;rhWPZI6Dg;SS6{>iT~EG;)2v?n-ifpWZogeZSL9a=qT~!2G85 z>iZB%$@TZ$739@;emO@z9rH^(<|oaszXu;juD>^2L$1G1IYO?llmCZYU#Hdo)1~ze z$LnBveW+iC&&K?$9*cSJ@8mikdJ-m1DhOm|nRTE<*15V>;?K`a2>43_o`i9kflN<A z*2IaPgpwk=W5bgYlA7*5pu1*m%Qgg>EmI~Tzi4b`{{Om)KkJV<>EjEti%eY&+nHHe zCH`lcJZw@l+0QJ=EX?tnCP@k1ld2n%<c}}(>%*qOo`kVQ1qJ>>)1ktmfIs0kLr2^@ zF_1Yn4{80m>DeWj1%5Ms{=bXYB(PI8F6YK{K5SjU{ii;F%UO3l_Q!QQ_4yh_HgfmN z6F_1Q*|%|4a9McpW1}Yyj_Fx~&G&fR2Q~sW@U+s%@n*~B<noCq|5Rh7Y;gON4BMRd zQ=FDxKo#n)u6>U3`@E7cMOKa9wf|avn0dr*+v^~B@phBFg}C1IF|Tf5oo3dyJomr) z9tlW9oUXjOf%TJS9qRZky(lfrK%6~(w(Z(}J%0B7B2@hzdtl7sqmFqS^yhCyW;0a% z-=Y5L_Cd4Q`t49~{Vy1kmYR*A#g`yEH*5t#3&%cd9t%}}=@p5L{YVPi`t4IR*FWDF z=d>jrEVtjy-`%DQi(_9iF>JQnvI_g%eBQcJ*7}`e*O&)FwZCk?415L(+V<P0Zf<{- zG0tg=M5T)I`NOfBOl+w7&!K)TZ|k>D`CR{QW1Q2Fr$6e?!1J6nyKt;MJZv^@*(lK> zn!h;qu!#-T{@Xr~@mq=lw*BqQ7q|b6F&m=&G@A`e<RmG0shf(dk*=}Lmkft0e|@<` z_HJ6dv7F}l7Ue0-<6WT<O&?*k_xsl9GHopX9iERhi}qjlBTV5?<G1O6WQ@gqs2xB1 z(wUam`6E=_Hur6>+eggL$9TQm-X7RXnakVLgXca&p4|7P{ExW5wPqJl*|y*9IT@;a Ob*;3&0~MfM&wl|99KQkp literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/src/common/dbus/example b/xchat-2.8.8/src/common/dbus/example new file mode 100755 index 0000000000000000000000000000000000000000..c26d62ba32026f65523e4172ff583e71636cc47f GIT binary patch literal 30296 zcmeHwd2}4rmG`S&)FrjL)vea%4V70(U~BPiBN<7SP%D<PEK682n08CulG;dW(TlMO z10D=a6ywB%2@pbnge;KB1j3mlEJ-jiJ4t}#3lJxhIBX*k7@V*}z~Aq_dat_F>UJ{o zo%!QCXG*8)-Fx5N-hE5G>Uytqd27en7DZw5u(Az|uyL<WX%rc~qXIzE$kwu4To<v0 zEC;xa)AamCJwdL1yf0MCR26h9Qj%M1(Fy74T)`((=^>?dk(Vi{ovl-4%9zFpBuBoU z5DHJs)#)<T$RQlHB9(IF9?7wJbipxC<B3c);lE5}`KWAkc8mP<v_;p#WJ<hrbiR@Z z5!_qK(HUt-Co`E!xvh}nev16Rm3Rb0m#~*DE*=pNnaX;o8Hx0-URg5|S~e0HOYU8^ zckSwBt5;UXqt(lKxk*3qww=?%Es+`#3Z7pCoM@DP%@=<0;A;halmD7rv7u=DvVVN{ z%gGNYkE)Vn95|ox>{r?RqFgn{zWFmY)<SvZI4dac<<B49oxAb5`(OIPrIjxg{C;EW zuV2q!e}nUaf4F$*^8Vkx@tsXC9Xa;%mu`9CqTac?FTd&1`wsotonQ3gEr0sen{J3_ zJc>ar%#bscg?=*%n~9&Ao0dV(8CmrFCX1f+S@{1g3;!os=v%YUKgy#2SQffJ3;n?? z`gej~!<l}p%EG@7j9NM~@HfG~AOn3~7Co0|p<f3bnd<91S?IsdqUT3h_`jZoe;f_k z%gR`hra@94BPjhW=pKenFX%+0V<D%Pfvj;{UcM#tl%?tM2tA%O{%b(jGU%@ay^y)t z-9BA2#f6T;f-dg^)L!ZMH0WM<%BX|jkmJt{f`31CY#d=dVWpsZP~LQZoPxhr^uPu& z&RnICKTh^|zEB{NU4s9F&<~U!yE(mpy)Ed1%oxU}P=7MMYzV-zI(=Xo3Jk`=VHOAs zjYh`;@kB6|2n5(rAlkn>Jdg+^$710@paUb}U@Q=h#iB7_dx9g$a9}(fzA!Kzjf^G2 zF&1d=-W&*pW8tAl9C-KUjU&;qaCfkO1j;EdW6luBiDYan5E%>%1|uVZi-WPT$k-5U z#1pYSfuV3Bkk~gKCJzQiqVZ%b92gD8;={p_z`0x6TLS#bs8oTW0KbM45*?34_wEY} z1V=_BMHEW9B2|sRf1yH`35G&}cw}fSXh;fO(Xla#N~XNA@Wp|_Xe=-m91T;Xhje4h zmRHwOq-#+GDoG$R7D@1YssvN!cnpCA(`Ya<78r>}#{;qC7;sKU;HPE580i=w&8t~> zFH{Do@&+yp3=Ch$LkYsb-e6!bf>J~-p&BLuQNv_}1;U|VB8ZIscwDE0G!}v(Bi6}y zI3}Yc0^Yf${haRBu7FH?fClIyEeynyWHrJDqNAh1u}~lqLJQae3n7#Y8i5ALvb3o? zMq)fRFu4a-A=TE=-n=oeyn3YpEw5f>v}O+IZC<wgR9=drcOr$I>Q9$baA$oQeND~- ziXssg-I2csWkgHPj^xta_W_|?&XeT)rc(@_?~8eqq<aKi72}VjOZ=H~jXNOcjk-6C zy<noluyGtW(F+VJW0NMjn5y#J6DGQOe1G3WFEi;`E9f-GKsbz}(L_(hmodMIE`}^F z(`llc=cm0Ux_N%K%S0#J@)$PJW$Y+#+(gfl%t-f|=uQ)Tzlm-hN<U+wqr#2ju!(M- z6y0c|%eF#7x0&eT*1>h%VWOLd<hxCDaqHmx_nPP>oT6WjnCN0E%rhQ0(Px?X{RduG z{RizI7i!FZ)sckd<TL&Q535Jn$yLoDom||4Ye9J<Ai{@9a_aa=9E;ZzPE|kk49Axf zPE|g2gyW|ZPE|d1H^&zcPPe_O+c-X(aH{gD!yGRpoT_?iKgaV3rz)Nr=eUJ%s@kbt z9RJV@oSOVpC&&LnI92gfBgbDOoT_%Jmg6rHPE|Ukar_wJRFzX6j{lNys=_J8@h1tV zt}}Jw6A%{vlyDE>$2opK;nanup5gdCgj3g<I>K?1A3O}4A5A^&6Yn&2_iRJJD?|Q+ zw#Aj8`zKl!mDL^bA3A@L$NyN%A`kISQhDo6`X_!rSpo>vQgG!H2(15*s|xY(A1Yo$ z$;4y+iAVg0R@DQU{5ecgRc=1mikxG+S^LDpP4_iI8^3_97i=99|KUFbi=F;M_EO-x z8+S8;3ph+rM2G5*OwQpNAMPaU<**Lf$qJ$!>|Uh86%RQ56K_KE1E{pg4xV)>vL+sx zeEMVX9kRdf(OA=cG-|-5?YbiqZ+0BAzXFNfD9EZm0wA-TFn2fGt?VxAtUE$}P2NOG z4(JZhZ2jP>o1xEtsNv@jf`gw$zR-D$J7V9D{Bw1KFmk^%Lj0tZ^t0V%P<@uJx{=C8 z6Q_f#T6NX`s;jO+{$w6X)N~&`hcw+w*Pl?^^-mmyzYX6-yM{)fzd_L^1ElX@!|?)* z)%~*W2<M#q6o|S!DtO{Ix)N}s*nKcVE<a{l1f6U$3f9)TBXv*kaum~?4O}b0HQAC~ z%ltGgRnxV68$LqIN9bacpZpaq>PX!$fxizNW+p!((i5<%+q?#0K<+W(eulE%tvfmS zLjY)JljYF7qwYwb|6s?WvXFm8K5x9q0aQ=rc{`iVZ`yejtrc-Oju=e_q3T|o>`zbY z)O$(kCWCsPPQ8Mt^cbV_-mX(!L@hU{hbFIs4+Z6{?v3_|XD{$iyy!ph@`=uF)bDOy zKG$13SPeIW?PT!=x5nNsC~u*%G(>=)ZS_;K?)^kDhPfpKW0=c5dAy)}KgIs2NWs63 z^RHS?N!2I*hd#0TCr<bunmo&|JnDb;lSB~|yy4Ons3(sPaywFff5QjJV#%5w|AB^I z5a^$HC6SL-aSX`h8y}%X4a3Dp?au;Nc1k&!PJJ4ggVhD)SCUukF#P!nl?;6vZT*%H zX+)U(Ark5D!5k_`<u?DpPV~9As2)FoPy#}ecY)78@rU!Kt_NWFiKwIuh@r?cZ771N zb*|O$Pqxg2=0Di7NJW+F<5j^`-+*(db`MoMe8)KRGWpmv@wk8D*St@Eh{|iNd!l3F zMc#S*6CX`J{lUqT7X;ugT2K;$N5gyIL9reKouqj;rv3yW5<O)9GZ@eu3n>H>f0+Cn z7<crcyIwVdFm+743LP(jW%3<#(y3m9MxA-`kD&eO`pF$sb|at%KC~z1VCZ~QSG<!t z@X4tXBR)+%P2KGif9>g*`1v;f#8c#z|DfYelvYcg>7RId^2=~xGupqW9i#45ZzR?q z+|=nmxNU6*`tii1|6p8eIk<6{Zk~FNpcaORcN~m*Nc?<=w@*9-$>gK$2S*lZe|iwn zOZm6X^;4(D5~^$u{)5X=#-;GK?#R@w@0*Ll^)_v9I=6k|d2+ks(BcbJjrI5sEu(Z> z)5OQ^6Yq9Zy}}Fe(8t!vQpl6fTHSAD1M8Uhuw&xgmWel;P8R*nf8eO%U-$3H*HZ2` zUC<ObdN}3ZTSuwh5fl^<Am)4)))tM1wElfzZGIkG9AB?3j_0wSvEgX+LUuNu)50Mw z5!EokA0G)P!dg<#NrdAGBGRm1i-iZmkv-v%E;}tNo*Wnm<1rwErcVA8G!_^S#)6~z zb7ov?XwX)%(QrH-9182|qOqasy#vF+MD>9FNEV5Xu^LcoIJKrLJQ_`eS&EGwDk1}6 zR)+_%*1bXUTZ;~AL9Jz3b26?Cj6}kC`pV$YMqR&2)%Zwq2v1K`BIZXxHtGdt+ag>m z6!vV>!nzG6GBt{v76~;h4&||~rtMls`#G(d%#p%v`~isR$uvo!ZJYjRsxt_rXKW-I z3<(64h+|_kIT9MHpeo^ytyE=kL=myl@Ti>4yeyBdB*XQ;`+TU(v7Q-%KAO0F=ADx# z??(FgyC+Y+fb<2VN6;h6&};VtS23ubKw62^2Kq2k4QVg#1tUn`NBSM4mAHNF#Yl1^ z(j!RekaKM1k}js~^(b@l9qM7l;UPNR?GK~B%HM9X^E3RGuk%0i_Q{itu*KY-v)yH% zDsWz`?q_GsKJ)Yyixx<E3<nsoPM$PBpU{l&e4HMXiO<V7xji&v8pk;ov^u1$-R(JG zIsd2|f_|Xa;A}+RtCZL5_FQ9Wa+h6gZE|Y|Y%T8Ey?Jg8geJGA*{!xX+uUpY?#A=n zYn$A)JKSsA-Hkgr%ve3dDXuR=*L9?;-|abMX?B-gV{LJ3S3_6j0ec%)SlM(GN*{HX zHUA81f9_V>P(kE-8Oq#(xX&kf9RG%sMlBD@$$y)Ie}^osq!a#KZEGT(E$&Xs4tH<6 zd)Ec-;db|UvwLrod%x1|{*2P(K8*B6q_-)Xz}D{W-Rj=umu$^oYZh!RU~2|jySp>$ z?%l$<TDUUF)y$Q3?s4~Sa__Rd?(W^_?(EKUSHcqn2%aH8P1Mp*2AnU$?>i8SFcFaZ zd5Xp7tgUYCkgeHWd5zuguDv?P?_PVrvDw`i<55I;n%x@sbZtB)OVP%jfgaJ+NZbD& z{~Lk-uOlFTx01h8p{wvCJ-tv6B>i9-PQRVek*_Dl@73}*75RI#{Eb5Xel|z&%dwN* zW6>dhN24*D4w;XMVU+M2MJL2#1wUTELlYe$(O;$km%j}?CiwMH0plCzHh#7jm?6eA z@w<xb>yL}_$@>eQlKEl$79$i(dZjQd{igAl4*Fq(4r%{19W}~_A(xjA=C~;4yc~aD z2x3Ys^SR^+f!`+baeL$Wm<RvQ9P_k{dfyclpCc-~M5IeZx>}@Xi}YNP4vKV-NUs*@ z^&<VINPi&GM@9OaNM9A{yCTgIKh~9)f3(Z!@u`XO_u00M8`o=<J^jhCL{eK@y|TJ? zSzVH2b(htxt*%{JrBnG$S8ptOmG2V2wt7ViN`JAFZoUOQ!N!TIvJthHPd#oYglp3{ zEvo$}TDe7aoDMdt%}%clK>P_2J+=|FK#P*|WwZy2qJD`Ii+vw_vR#NKX{{`aL7zQ{ zi^byj2as&kUaZSXt|F4nQ3Iv61>m=?D6Rs@mP1xnmXaH`*Wi=2nZr4%L%o+o6!mK` zVkg+4K8UORVO-REaQOqyToP1R-V<Q5-RgcCSl)NhYi+mXuOYY#MYMg@OQ!OkBA##R zJa-e%cXb|GEMU8f^EfNuf~`#98MYnp-(Kw@+xC@|@ohM6ul0~N+Z1KidB}?GFf`kj zd+2SitrdZ?ub#yVG#k;fubD+<w<nRAPZ!%!T<q(-Hz2XtY`-A|+fg_6_1<q2Nwr-B zG205_+FWoqW#eS_?Q@<0$)VC%=sJdr`+K;6Kodwi5ehbtA0H@He*xlY0OGNKq^R>y zKJRME`dG<rB^mE&D8Bs@9aEu#O6O2XpY4}m%vt2!2R2&>u%oK12?`1aNS)&hbq^5V zdkBPMnWqXc^R0(6N3~vh-yP&qjfZTK;!BYhp)oC{dcOjBYE2Qn>~yHt<62A>zX3om ziftics;-z%Z$(NL5Uj3u{0d0vI8z()iMcew)D5}K(8g>uQB+sY{{t8b>j8UIziLHV z2JTIqo0WmRgR`s5Rt!JYHS-I=Qdk67Q@5+6iTHOE@?iSTz(A{>SNLO?QhjHU!1?)I zq?@T!cLa(i$D`G6!k>gsF^M-aJLNh55kk4ADYGfVc?BWmI$~Rc5aunK{}p7+S`FCt z4r<-GVlMqi=y@A(t+P*2y{LQdr=i)oLvd@=5WFrlFz0!Sdp$7KyBJsJPQ^`a!{a@H zt23auyFo4UUQBX9T~71nl3c$oSE+}d6uQ3-F4PBE;`Kp#d40&7B{GM!a-z&>1i^VF zU3M$Jon*TJt;9K|lq5iOs9!@_9O{0+#gzMb0HUU^L5cGhmwg$O!h?W4`4#F>AigLr z`Bi%D`EntYf4Y-0s4<be?aQFKYO8(?c-BpTZErx_wYKV2BD_w4EI~nCjaBb~P*@Cj zm+L;2#suFWD6Ss~-H)Txt{>0Z2L{#Gh{oo6u=H{u9v^i%*O6SR?=qhQHR1ZH_bTLQ zKAJwb9#*#^r_y&nA&+pjrM}nD2wjhIq}JC!9zD+8UhBJ${CzV2AQUw60=b^zh~M`+ zlKFW)4P~9aufjps)4prL){8<?R#VmeAkMl8ux&rNvAOCg5DG5`T;}?vO0$tNdWY`% zKY3LB%vVE7e$5fJ3@^Bu>$$uig3H5f$51h@tE#-f>?BzD8xU$;FRP<Ke3y~ntL~Qo zGanV)HR*mIi0Zo-SJ#xAe)sqIW>J`4cUO`FzHQ)jo$!&o=6jFW{#^QFB$doY%Qswi z7F~jPW6*|fhnkNZhx!Dk{E1(wN?hLqS#N9<AU8*85e9fku|vH9S6c@zt`|Kt^zerC z@5IXm2m%+?2($y?`Q$p!2XRUgsR+6dY1Z4JL;VD>iwY$9=K*#$Q~VEFN-0v#cgWFe z1X4wHdq^NpQaL{_kku5N!vdKkjn7(6JI)=u0+>Tx1*OjK0xW1#xMqiXEjmcvUDV@O zYyZlbMo}L7w*byA^PZ>VdST9cA*#xIzT%}m#JnN8?9?%vmu9Bk3v^8NZiWxufR5#R zPlDgOOUFFk3epnPu_9J5N}Br>>pie#Co|4}Ayos)A{vbx>S?&zYjMfD3rY(YmC#U@ zSA_AgaIp?|LSf+&9d@Bg3oCS(?#qRh9G>H_T?Ncnq1*yZbH4#DHurZZuQK-$TrG3| z13IkCMxEEU)Os<PY}Dv|XD;{w;KKU=-{GrQe+@R@LejLseH<|J(aR^_S?)grQGKVu zb6=x72abAt&r(hk&nferN6MNxqWS)a3h-@omx8U*M_tK>-ztFA`i{VuuazTfeKa-p zo$cO$oJQZbNyhIU0OI%2c<I|zKr)@aEyUJQa2b$Z-|4veHWyrnWS6gma?UBZ6UeY{ z7Q*K1EckaI<G%kSw%!72$a{S+kq3PR)OGj!K1Xajc+O{h1ysWG3f=<uVIMtY_;zx( z8-4eaI~NqVPz|@SdDN*LD&0UGJVY)EhnuJ%yo!YP1`3NLz6atwF9;5mZmj5+fL&A| zH&H>DM+7Q6CrG(!5V*3P({kK|Lg*EE?@(KaX)i8xy6GMYBHfW4YJ{@r7E2LwQ$C1S zB5_faI6?NvFA<f(<-QUg>VrcBl5T4L`h^;ko^dHE8=9zzx+q*amGVJ-2?Xvmg-g%j zcX@~U0dn%_-IA|=K27TKG-@;h^U1`#8zG!`3pjk?l6puwRGJky-vrs`(eHB(^%$B$ z!KcAqbeU51bz~JhgiFyCN>u{P_I_LnkAPBEJfhwV#CHdHi=%lxfc3jv@ul{?c&t%b zffF7SU8Pjri9Amp5Vh!fMST>Qm!yimq~vljR?tA`KPgqeBF=gsYSC?qdV)CjpfwfU zt`rbLK9f<0N`5%hD6Xfe#W5=xEPoNbr8u5PV`g~(#VAfVX~-`hCwkIJGsN-(@S=E6 zKE=KK$Ed;Li@n!CZTUA4r{cX{3Q_s<xD@Zpr)Tx@vx)x_*DVD9o_IdZ<IPkHEPe*3 zm^ImG)Gqnd+<ykC@UwumlDkw|3!~9px8$B#S3`rXz{|AfPyr?1pUrW_!?ZTE+>##% zynt!ca7%uu;}#dwJ|g^H9ars4t3a7c?i2hrrZtiN`vq=g+SQ0x$&cph`YlXbP5D0& z`3lpnr~C&6jw(Azjz2W_S@^2*SxU)cr%`M2_zKAK6BVoQOjyQj|3H3jTAT!5;iZ5* zC0|v)0z{X&-89cE`Fi1<q>b6;Ai^c*dTCg&J%Ac133$Jc9EbV<uCAwW(OWM;pi(>? z>hqNM5#@1)cTrw9)ua2b1d(fc6*yFCJhmWt`IUJtcv-j$aAnC0D!J@?8dX<vET5EO z(4i>&mQRs1*r1xR-3D6e1E;r<<gI|qO5e%7lqAnbMVG!;NDY<oSySnUg%nTK_a=f@ z`cdH*!Qf%eb|ht=vlWrE;*KzDo$_s{n0pIK&gK%IGWT-;EzCwgbkANg{|CsP^$B2G zF7(fSZoy+96smyBW*=8y1mYVc&X=5L0_MR&I{!S-6wN__$h8(}8fCHhaTHjYFQ{@6 z=YkK2H>l7fT>A5~a`U@BEC+p%91A-6Lmt-z+E1Wb36@cQD`*Wk7u|-&p$z!`3fgyo z(|EAxT~wqJa+9a@bGM3f(Wj81gk4)uik|{Mf^+dI#7Y^=r6(rqwfA1W_?M(>D39h0 zmTMcA?Bb<kYzHQv6}ts81mq>$B`TF3rM6P(w#1Qnoyd$MbAg9vTK0gYJJ<T8SOiq5 zY|XXaYam^@*4yRspo&+7_~j7q6XKWZ;x4gP2;#6*sdQP?#!96RS61<X5W5Cq7a3x# zqKIx{ILMpZvv~stisd?_CG&;EmmpCwC=l}It?A-tWb~#t*Sf^W=u`Zx;%cGd8&FZ` z<?+b1c1Uv-51B0V=-Dz{ml}%9<%NY^Mh3U=N0WtwwD3>T!je}-_B~V}FA71&gFqgT zymB2dDoI(HiY~>tSLr~Al@3<1#3cDVm(-b+T2`@D<UK`Y#BV}q5V8<A8NSLwOjkQ1 zL|=gDIax(>tw)eY2dbUgS}&Qs!DMz~y6hc)!|XjKvyWsI&9!!l-$Ko1A2FGIbGq#J zQ)bD*<0dO-pjVpWV&X)FW+>d0kbMP#Y13tSCxhN4e-?RvL0&~UDua#|*xsiz=2|~A zdY9fSSDBb@kxY|@w>r}%6Vp-2^mrOm(8M$;nIhAfmW&FflW-6N_&xkeLv7Vv7;Kas ziY&4Gsa&~v8zNm16M>-4aux^(SgzG32Zz)5iEI_WBl1B93U|>!Rj<hQ@hXJ^hjR0O zLTusJX>hGSjfTHBVVP!#3!f)iLmmyCBN*;NI2SG>kqw;o0`OlD?VB_to|Q*~_;%bN zHsf6ACifdT?f(G(8PWEW2Td-z*KNRPyBeoHd~OuOXJ<tnY|%mE$V&J{4T1Ur2E{U? zrnXvWpzER@*K2)C>7tH@M$|53DJI)=*<9;7A%&2cR9`<`^`+^m`GAQ5q}#~g77hv( z)Pf$+RpeSD22VHqVimWVn2t-PauXAN=UMVi!NlwRj7bVijiQj=rMxC;=21;7<uy>7 zOEs{RN4`#ndBm6NKW6Yquh3y0;g$MNCRINpt&5cXqAk?vkwt|+3Ns7u0IDo1q84`t zD&jVr3;Dflv4>{qUeu`rXT?{AcrlvN-4Nt0&66q)Dxilg`?la(pf@-WyBVv_L+h|? zP?Wu;@Si3wmJNQI{Va8(Iato}(<Er=^{{Md^i%6udLzM2ewq?3y_@)({nT2PK1_Gl zjU2X}PCTuJq_bvVfLS)VzXq`OpHW&%2QPZ<O&s=-Xe~{VESqcRfT!-Km{;5jAlItl zO2_hA`svHE#kz*04)ro*xJY4YN~S~PpFUwDwdkt~Dv1BY%{A77wuag7faD5_ue?=U z$MquAH;2)MSN;lF*CMP3aIX9VkhO4iDbAID0`fEf`Z<5)dq8Me><*kOt<YJ3U|4ak zEC6x`fSYixssPfBN$c4-S1kuZ&x>yovH?gRO1ll`s!sv=CV;QuTuuI5R0is9P>+N1 zJDh9{`TTv+D4h~OW%2`cxK?^Um!@<$x%YhlXu8V1zaGFB2qEw3k>_bb$a@batNA#& z_nQH<<6N6=WgQh~9Tj68xxbFwUiPH$sakJXd}L2mAD<vyAsQoGt$0VUp9%I(xU7#K z?DUo5_C$0+W9w<)llQIpqNvKvG;>?|5wboDC$A>29VpLZ0FDyk17brPW;j=t18D-# zKnP8AE(350A!~rp<G>Gbo=Jvw2@h-%5F<Zzd~WW2aK25VWR9l#bvU_&7=STC$iiI! z{)G^-@H&7=LddHs%wHDcTy~K#MFS!4t~A_<qyBlcJUWZMYbkA5kM>39?9svodMQfh z?7#Tx-$qL3Y@gz*UjlAAOaD`GHS7g9oz6B#JuUE~bI!Ahw|)>Dbk40&avQ#dHc02} zU%2bvL0_kHwhg+TL~o;Wb}o?Lp$*fC=g|Cm8)WHpeO1Zda2=?0)_)P|>6|xcan(PC zmP+TG=M-<lVE}YGLV5Mnf#{s$QgRy3h7vl9Z^&bcS6S@#Ij!zF?w(Sw;z5hDEMiXQ z29VI91PDX65@vO;cb@57=cL<+eF>u^rvSV#K?&iiqO>C-7(nJDzXn-(D@}4|&8kO} za|)83ROzJrRa~8`SgDvr;%+;~3xrY5iC*GUtZt_hUVuPsUYD+%=dXpeLW2W-5{FN4 zaJPx0sF+p2hhnm%yIN8zwF;S1$f&8JmYGpfG0O+5R1j3Y*_$~wWrLIApv#i^xs_n0 z0bw4Qr3jr?s>=vl<!1lztAQDHI$h3uCs~|7J%|>JP7A7)vu4Q}A=O@`(9u|SLo<)x zLc1yImeL<Kqh1%8l?dA6X*8%^GJ%&mUWH~E6#&sZ>Ue!tein2~*|p8!sj5c6^fFe= znr8NNDZ<zpW+si-#Zt3V=!H7-7n^61wd(2R(Isl&o~b5k&EBH>6WZ=uIg8@4+=))G zq8je%9#QmH+F6}Xlyud~6ujE0^pq0Ant9;wQtoYbl2EU+&$*p@y4Hz;7orodBPomk zDZL`VXJ(K@Z>(n2p2yrgK4_H~_@<Fi>zLZ5NEmZ&r`s#rg0VzVK61NoRZtR!Q>jVD zW3*Gc2HT?pt5=G>(nDj(8on(NJK}00V*?|}P?&MnOh}5AWTx>=&#DQ9$FUGKm<Wfm zap~Lirswiql2|HQLjX2z>Wew62WT`E+Yhm4FkU@O1abi@EC(Y)z)`|PWHby2Wgnsq zf5e4xaOk3BFm|DU`94YkCx&C;U`R*weT9HYn6}8p!wJDQ8Xgr;d;~izB^CSl1ehF) z3`9d@nXE;kSRIR1pCeKz5gSa74M=Bb@oF*=8Id?P+|ja7!ECsMTI6K_9YgC7-}WhB zu^UrhdJqM|*Y3v0!`vF=cr>wPGZv;|V!-AE3Y(4&iKV^L8DuPzk%Kt)4eG223bQLL z*CL;etjCyQxA^QzPTX$Ul#{e8*7oO!P@1FIi|XylcDrR!&iy%woIdb0*e&JXL251i zOOA4d-IDW`-JVlq&kF&(5}*R{!fLx}jjAu-Vz=hh+tnQ9aD9ERJ?9FbW9ob&*mEpZ zg?3xc?a=feNUiZ+(&<tQZI&GC=*xDiugvEwLVNEeg;B+BwR)ADM4}qDtx2FcR_Aw+ zT|{DW#qO}WuCT+HBj?lhf*hsZ?&`A_YzNw4w-(vmuxO<f2st}YbV}7uN_y#{(WP3? zw_Z{W8S9>e-31Xx&L*y`7v?sS5^yRcqx9O~R*rSY%M>SG=&K-w0?y8<PtXnn1^I}v z{H@LUN2cT`k5jmOIH0w}p4ScZ3p>aHfLpnm!Y=|;>+OYP{U`Rqhk-W24@Es}w_7R; zfm)sSU&-?=>euXrq@!^MaUj2y=jYw8ZV-esIUyGWOKq9D#d1cO`Za!0Yt`F%5iL2_ zUTM#Tw6X~%5Y>OXTzkcy2LfPk!T@)sz@-9ItknsN9VKmRK|hE^_ni|>L<aXUz1;`U z>1fw&G!{whW24DLcyECA+g==vg#zK|2*WN`F$l0hEV@q6er4KFOPh9?+@(z0j{C76 zm#-5KT$GFe97<xH&WhzM5!(k1BO}oP*4E9t|Jmr9tOX0l19WcdZtB7oTNY^B!gpcI zweJk?kplx!tV4p~;7}Y4=h9AWCXEGnA7^_4+%G;d1^Tf881}Gq9vgf05@N4(G{HC9 zM)=;~5E~2cO)v~%C@V5TG7<wAny`!>FR3vYg=zaY8!|S0w{>H5Yahd|<FSF1Ztg+? zV@aIvhNfOldwxx0=)iCovEb4y5Z{Nb#}RPF6Vj-@o4IW>B8tWL<PkYeo4}KNjeB6A zpJ7nn!-BD)J#0u66+6`<d&S0V5r(#H(PV5O%wszgr#;XVCj?z=sy3<y@8JKtYue!% zhWltTA#4UXeo1r;cdy~-Xt-u~D3}}?4#yJvYS4f#tQo&>C@wZB@U05i0=~9-ZB0Bj zP&0sy1ko}5o)ZwxV?V?msshwah^r1^i#&FFi>4aJT_tUg`m}xMT#OoToQHy{mIhz! zl{amU=go5UO0+J%6`zmttZk!gz}Uw>r148~jBZfjkVebR0&S=r?9o1_N84DpMqdG^ zEgMZF$HEOm;jwTmG5|Cf8yIfTKZK$!8`73-S*|TZBh~dR!#yenoNruT29FZhTpx`s zqdti~mFf?z+qSiDIR}*#j1NR2fdv1mz#g>V1l(>5bo;wnn_2>$UF}=C+PnJ#{`NM1 z2J$&ux;8g;Ob>u*r$2A1P#KO51_#2t!|?F&?<1f&@~;k1WBQvL;fF%eBz^Z_Pk=gn zs(0$!?eU$0XcV7Q7{m6K7=3C1xAwr$0KUV3Jt(1(eQf&fmkb5z*s>k<qkj%T3|-S} zb^2!t#2AC7qz`E^zBxvG;eqU<r=`9)5NMNaE&>1JVd^gW?Ol8fVmz1_Mtj8kY%qxi zLtQ_^_aO9flgBQ@w;V=-@i=v2OclZmUyYzfj?F?Cw}L|~5=YHKB^oP+;XRD@&hU>2 z;Hv@qMj}JQ)c8{4CLe6{4x-PW;1CTL`qu<RN7;?fRIrP91)!@BM@Fb0B?g8?x1|vo zV;vtIWY-fzKe8}pVDQfRsfr|Z4kkKmOLBB{pJ*)l07KoHK7)W^YY)N<)=(slAPx*O z{&@wxRml2egx2xvaw-&kZvvw!l?nGMjQ%vyq?QwBsg6ml>|)%m_z;aRba2*jG-Oz$ zJdV>AD127|ZpeF-yo*68A7=GB(@V=+E{yWq6SV_;++#499Kr1Y+ni)4;$sOPKJ^V- zH0$HRkEbd@+#tBOqGQO9j)<7ap@uqF+|=#+wsp5|7QF}^eJBu#POCNC00!iIoPSY5 zR2khTP-A<HkCO}ql8M2!f%t`yaWtLH;n8#T50miz&Bs$TC^VUkqFwSam*xSONb@lU zrb8oWp4`DeTMK<RV>~)C5*Q4{VMi2;S}WZrX~31WPK_9i9F@@4jSAez>yO2Uqp<`Z zM$yN3n?S4Upqt=~&v@{G8n<$4IOrBpJj|dy1cv#@LU)D!7&d+l1R*QxmCsZVtyI4z zhfr?x^A4J$grbzi0xiwSIE~^)8>5>wjYhCJh)sSmG1BtplN>_>h+y<*7#C<*K*(_G z!vq8a)({?U5D7knjz$Jz(SUfO09PyjXbjgu-}jJH4%|P?BNz|qkQf<prx$k`x<kmu zCPtx5UvI%}_Y(f$mA0+)m<6k;dw)E`2-?%t)`~Bdh}Insj|`#^gJU!ejNnm-rM{Zd zwwWe?d?2E#rS*DfO*GdS#5ZE}yQ<zScnMML{wSt9L)>wcQ4~_2`_-*xq8FlB=xx9# zDb**2CfpcO-`NrV!6?l#M0kU{@s$}Pyu3~FFZQ7I(akG{*&@EJBKme<EK0L4YR0m( z`y$~H%=j=c7{%3FLMMGMN7mt($p~%_I`cky-Zfss2k>JW9SZA_pnS1qV|YJ6%Mdai z^4UU4DXd$9SX9Cfh3%A}N03No_pK6>mcW?N28i-K{1*&AJ0&<*y!2Jrxl-X0!}7WH z0{oOg>da<C(r*_wew?x;!IuqEj|5ZZ&zGQPc+@Gucf@PVj82{}{guvwt4sLHKV1RO zK$8BYQu*TagrWTug_ExhC&h~%RJ8={_z8&)y{aWvE2v<U;8zXOHVMl2V5e>-GmUp= zGTwcwG=7?4sat|(OWj!;Bx5seZOvqBt6^)AVQZ@dW$6%h37XAs{V$pC%4ELFFkfYu z?~<U5x59cQXg1%K)%?t|_hvHQYZxyyjQ2{=Y^nFZV5u*Yr9Q*be8W<o1kINEvRc|N z8tl!fhAY9_3{tlQ<$FxMJxc6*24j!j)H7YBp)VTD-4gtULE0w4I}K8g1f?~7c#~Ml zHr}Y7>bP4(=n*4QJra~J(ezSD>_m!Dg5~1Pk;2ZG;6nM{iVx%xt1%dRB)HKao&Wc^ zN$V!)z>qIN>6jh>iM^d-l%VuNXO!3q!+~xIN}qH_-C*XcjNXq7Yg;8K9U&!KZ<Uzz zMPXYdC>_xmB_@3VqXf-vooX;3SEXZ57>;#GP`X0)x-vM{B^{e<L}r@=rFXil#H51? z>yn`KRbksQM^2~Cbh9^;o4py_?3HdxFUY6fTO}qP!DuEy>66ZQDz`GluP>8heTHLi z7=iASpv8#axe}D#kqdo>uT3dN37UPKIZELddeb3;DElq$of0(Hb&uie3B%VO3Ce!^ zKh%Xk78Ye36xJ!h`9|S)N^pTe>RBp48IKIpHF`0`n6!|R?OP*c>kW0C5=^P<GX>HB zrEl{L$#W%`(m!L`LypMR2{P~&R(tDjMd77U3#*%P-=P|nva<5B)}!I40L;R2RLnX+ zo=RAbT^MvEC<{U@cIKdCwk-PxMga+$g=fwmG7D!J08Zt$G^emEoitsT@J>;;yNx>T zk)T`&L1oVT6e5KO4B>7GnuRmZ7^U#IA-q+BX5pF9HoGk)5N!#Xg=a=Pvv6-F;mi}T zPT{VUK(r-jwmfsRqJANlugDOiZA;KBJTuy6VHskyZ3&u%XGYsBEPegE1D09%?+jRG z;lDFrR8=xyDYyU5Mk4P9ax{^nk4#Cq`Pe0<lroa?;aWZ*n|c2>Y{kq>es|u?jdzg7 zciX4at&H9prXScYW_+K)oM)vM$uw}J9ag*-rd@LBhZSEsm)|uo=UK5MLw*loIz5-k z?=DQIW6=<nDWo4(5Ff_^uk^!;uUH(<NXIS~@j!2uvEqBtGV;^u8NR~|1}nqkcWQl> zA!21-<NNjok@FX_BUtZ}eps0g-|yGb$<SY9d_TjSX(gi>zTaSFCC2wIrt`z7mP!B2 z?^lzYm0<}{hQrFgTt73z%H(Rp>3LTErKagL!mP$W9hjbHW%4T;>GbmH1c701(F{8E zc^mul$@C0rHWt*c>}j%uRDDF3kAQVTaK4})5k2!&L8p8L^)6STt`+n~q@<@)4A3M` z#}=HK{Mi9I@!uwX?jc?}=mCuA&!o|#f-b-BLcDZbg;T+9D37KQ3Rpk>nZq;N&jX-y zKSj9&J9~`t&uoX;{HJ&*tdK3mLdEnWQ+eO!Of&n10}d-0+U-0}FEz>~ZBz-ms%etM z)77A3QQeIG(kAHX{c8u;GqWERVqDYM%>FU}{<M&BySuZ{FXi-^-=Ek2uYsGL5bZ<` zyCtwo->V-N^?nA|&e+3Q^#2U>OyApo9&}B}nv++v=y@j#-2ulkm6!Hp6|$M*VR06I zEerjuEcCuCboxGjCVxJgg??)m`dy%BiqBJ^XZrsCu`GJt&7z0?pGc<vcQ6n11?CD7 z@H$@aGc&ekq3_H>-^1w`$3(jd3zb)cp6UM-d?AY-`jAAXIR7LIy&3I+^lO?ntq`>J zoZ6?{0*F;;{CE{~ijN$xq|h5#^nc9hsrzyRa5`wWN~Zs(U|OS+T4^%lwW@rvH_(rF zb@b*Z5U8$Ov2NX(8E;u*2`sW39K^E0)c-{YBu4R$2g^gScn7Zy19-33kN;&5!m@{W zAeh`s?+y7kHAB^FNM}YS{(1dCFcu5$!w38Ef|?EDYngaMOYfe^s}#mxf=^=&1kUbi z+T0pwJqQ0i0nAvy5oq-bqQ8Y!9d&GJZt4hZIs5Ewt=)m{rsj@TV#L36FoZ(!XaMUA z@lF&O^j6O>K_B-w5%BUihL@Txedjc7Zr_L(Tzo~q^wkP@?M`pL#M?`H*ZklAp96Af zkE|uUXFK)3wxHEUjg9g@4bcA=NPh`uyjPp?9~7p`O)J#2RX8H&6z?wuN9uKYh7}bv zUg)0kKW<F>e+$!G!%J`TKe5RE&pFcmON05pNt~kO<`p%jbr@NfPl%`*|Ng=J?<mq& zj-<aFPq{&>1B@0V-+h|?LrChitN5=M=4jGC+Td@*S#^BhC{`CCO~mwcSVH{e>Nu;$ zThnlLQ*-;W1eU7k7#1&A_b0KYWEq-UHDSZS_%N#u?HhwWJx#>)9Qopwvk4@CyjXZ7 zNCE;HA4#xk{_ilV0ajzZ9;@bSG^+W()~Jp}`LdDfFjlbe-aZ_H5{c=edY@!mLc*{R z#0z@(L`xW|@t;2!KA}50N(&UKL*f1;)>y@YV?!991R5C|j7m7z-%ktgL=OJTRanA^ zk_2gmo!}6f^kMh^`ASa;xMg4tsvq(>Ri<+VT_(h9J{AJO@^?eNTPTvLW@ZK~?>mxA z^LMkneD0O$BFQMybomz0@tNDG^#4Wy$ds=p2M?Z*`GE~8(~fh1>CYm9EbeD`DB{Np zBBjS@D!Y`&Mgo4&%V1)W_T}@oOy&0xb#7gUgekoMCw+TR%FE|+nRW?g>A&QY>4nIr zZy8ElKEKPfR>-IOFUaf?02EUxFQ4;e`hsAT_S4IMrI2qHe8%qq6jU6Kiv~mT*jP0q zexC!4Sjay*<nIPDO@BO3um1_inC0c~3o>mK_PKIg@CyMyWU4=xrR;0scL<rv@(MA- ze@XueGR*en?-errsVtaKAni(hx2MU=?|I4;JHMtK>E*vu$jkaOe*X}^gY+61x*Bbo zHpae}Cf_RpF4IsNf4cn#)8ysvDKe%1LuNi?+$8M@02Ff3&5Yk&<o^jw=a;xle+^k$ z<ss$e_f6jy1DE6j3qK?-(?5brRV3w&-*M*Y{F?AzR-=@Y^>`!LsQ#tA{JyCsej+)p zt1+%pUZ$@h$1HFBE~M!q(vDOh<s^Or0MVp<Igj^fI!C&Edi}ivHnLx<vl~|_Uu95q zfOzSU=_e+bXNb!>O$QnUE)yvyaTf^bG|Jnj=^XyFpR&?<=_6C=G?IMiOkMs885kX% z!AqaL%p||@EM4GRX#q>;rH@q-Ej@m(ZPewLi*ZnxH*85g8-%>fm+4&kp$A7lHEz=( z<s_*+i~MDDW5KbDUsIQKdBW4WC}%z{<jceWv;fp~IA!}Q<6PLji8L+5Jm>u(ox$=q U;^)mG{~_JjaBNR=I1Oe07ib&e{r~^~ literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/src/common/dbus/example.c b/xchat-2.8.8/src/common/dbus/example.c new file mode 100644 index 0000000..1d07278 --- /dev/null +++ b/xchat-2.8.8/src/common/dbus/example.c @@ -0,0 +1,201 @@ +/* example.c - program to demonstrate some D-BUS stuffs. + * Copyright (C) 2006 Claessens Xavier + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Claessens Xavier + * xclaesse@gmail.com + */ + +#include <config.h> +#include <dbus/dbus-glib.h> +#include <stdlib.h> +#include "marshallers.h" + +#define DBUS_SERVICE "org.xchat.service" +#define DBUS_REMOTE "/org/xchat/Remote" +#define DBUS_REMOTE_CONNECTION_INTERFACE "org.xchat.connection" +#define DBUS_REMOTE_PLUGIN_INTERFACE "org.xchat.plugin" + +guint command_id; +guint server_id; + +static void +write_error (char *message, + GError **error) +{ + if (error == NULL || *error == NULL) { + return; + } + g_printerr ("%s: %s\n", message, (*error)->message); + g_clear_error (error); +} + +static void +test_server_cb (DBusGProxy *proxy, + char *word[], + char *word_eol[], + guint hook_id, + guint context_id, + gpointer user_data) +{ + if (hook_id == server_id) { + g_print ("message: %s\n", word_eol[0]); + } +} + +static void +test_command_cb (DBusGProxy *proxy, + char *word[], + char *word_eol[], + guint hook_id, + guint context_id, + gpointer user_data) +{ + GError *error = NULL; + + if (hook_id == command_id) { + if (!dbus_g_proxy_call (proxy, "Unhook", + &error, + G_TYPE_UINT, hook_id, + G_TYPE_INVALID, G_TYPE_INVALID)) { + write_error ("Failed to complete unhook", &error); + } + /* Now if you write "/test blah" again in the xchat window + * you'll get a "Unknown command" error message */ + g_print ("test command received: %s\n", word_eol[1]); + if (!dbus_g_proxy_call (proxy, "Print", + &error, + G_TYPE_STRING, "test command succeed", + G_TYPE_INVALID, + G_TYPE_INVALID)) { + write_error ("Failed to complete Print", &error); + } + } +} + +static void +unload_cb (void) +{ + g_print ("Good bye !\n"); + exit (EXIT_SUCCESS); +} + +int +main (int argc, char **argv) +{ + DBusGConnection *connection; + DBusGProxy *remote_object; + GMainLoop *mainloop; + gchar *path; + GError *error = NULL; + + g_type_init (); + + connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error); + if (connection == NULL) { + write_error ("Couldn't connect to session bus", &error); + return EXIT_FAILURE; + } + + remote_object = dbus_g_proxy_new_for_name (connection, + DBUS_SERVICE, + DBUS_REMOTE, + DBUS_REMOTE_CONNECTION_INTERFACE); + if (!dbus_g_proxy_call (remote_object, "Connect", + &error, + G_TYPE_STRING, argv[0], + G_TYPE_STRING, "example", + G_TYPE_STRING, "Example of a D-Bus client", + G_TYPE_STRING, "1.0", + G_TYPE_INVALID, + G_TYPE_STRING, &path, G_TYPE_INVALID)) { + write_error ("Failed to complete Connect", &error); + return EXIT_FAILURE; + } + g_object_unref (remote_object); + + remote_object = dbus_g_proxy_new_for_name (connection, + DBUS_SERVICE, + path, + DBUS_REMOTE_PLUGIN_INTERFACE); + g_free (path); + + if (!dbus_g_proxy_call (remote_object, "HookCommand", + &error, + G_TYPE_STRING, "test", + G_TYPE_INT, 0, + G_TYPE_STRING, "Simple D-BUS example", + G_TYPE_INT, 1, G_TYPE_INVALID, + G_TYPE_UINT, &command_id, G_TYPE_INVALID)) { + write_error ("Failed to complete HookCommand", &error); + return EXIT_FAILURE; + } + g_print ("Command hook id=%d\n", command_id); + + if (!dbus_g_proxy_call (remote_object, "HookServer", + &error, + G_TYPE_STRING, "RAW LINE", + G_TYPE_INT, 0, + G_TYPE_INT, 0, G_TYPE_INVALID, + G_TYPE_UINT, &server_id, G_TYPE_INVALID)) { + write_error ("Failed to complete HookServer", &error); + return EXIT_FAILURE; + } + g_print ("Server hook id=%d\n", server_id); + + dbus_g_object_register_marshaller ( + g_cclosure_user_marshal_VOID__POINTER_POINTER_UINT_UINT, + G_TYPE_NONE, + G_TYPE_STRV, G_TYPE_STRV, G_TYPE_UINT, G_TYPE_UINT, + G_TYPE_INVALID); + + dbus_g_object_register_marshaller ( + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + G_TYPE_INVALID); + + dbus_g_proxy_add_signal (remote_object, "CommandSignal", + G_TYPE_STRV, + G_TYPE_STRV, + G_TYPE_UINT, + G_TYPE_UINT, + G_TYPE_INVALID); + dbus_g_proxy_connect_signal (remote_object, "CommandSignal", + G_CALLBACK (test_command_cb), + NULL, NULL); + + dbus_g_proxy_add_signal (remote_object, "ServerSignal", + G_TYPE_STRV, + G_TYPE_STRV, + G_TYPE_UINT, + G_TYPE_UINT, + G_TYPE_INVALID); + dbus_g_proxy_connect_signal (remote_object, "ServerSignal", + G_CALLBACK (test_server_cb), + NULL, NULL); + + dbus_g_proxy_add_signal (remote_object, "UnloadSignal", + G_TYPE_INVALID); + dbus_g_proxy_connect_signal (remote_object, "UnloadSignal", + G_CALLBACK (unload_cb), + NULL, NULL); + + /* Now you can write on the xchat windows: "/test arg1 arg2 ..." */ + mainloop = g_main_loop_new (NULL, FALSE); + g_main_loop_run (mainloop); + + return EXIT_SUCCESS; +} diff --git a/xchat-2.8.8/src/common/dbus/example.o b/xchat-2.8.8/src/common/dbus/example.o new file mode 100644 index 0000000000000000000000000000000000000000..2033184e8d04fa972fde3e79f82294eff1079ff9 GIT binary patch literal 45016 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 literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/src/common/dbus/example.py b/xchat-2.8.8/src/common/dbus/example.py new file mode 100755 index 0000000..08bfdac --- /dev/null +++ b/xchat-2.8.8/src/common/dbus/example.py @@ -0,0 +1,28 @@ +#! /usr/bin/python + +import dbus + +bus = dbus.SessionBus() +proxy = bus.get_object('org.xchat.service', '/org/xchat/Remote') +remote = dbus.Interface(proxy, 'org.xchat.connection') +path = remote.Connect ("example.py", + "Python example", + "Example of a D-Bus client written in python", + "1.0") +proxy = bus.get_object('org.xchat.service', path) +xchat = dbus.Interface(proxy, 'org.xchat.plugin') + +channels = xchat.ListGet ("channels") +while xchat.ListNext (channels): + name = xchat.ListStr (channels, "channel") + print "------- " + name + " -------" + xchat.SetContext (xchat.ListInt (channels, "context")) + xchat.EmitPrint ("Channel Message", ["John", "Hi there", "@"]) + users = xchat.ListGet ("users") + while xchat.ListNext (users): + print "Nick: " + xchat.ListStr (users, "nick") + xchat.ListFree (users) +xchat.ListFree (channels) + +print xchat.Strip ("\00312Blue\003 \002Bold!\002", -1, 1|2) + diff --git a/xchat-2.8.8/src/common/dbus/libxchatdbus.a b/xchat-2.8.8/src/common/dbus/libxchatdbus.a new file mode 100644 index 0000000000000000000000000000000000000000..285cc71f70cd448caaa2f285b956aa4f683a6bb2 GIT binary patch literal 235096 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 H4Vf2v70I6K;K%i{E(i|F{CdKg{GL4% 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 qp%E8xHNmx!-)p4<p~%aOlsZelNqV{yv67 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 bx%XYE`hETLw#449UxxHQ?=Hl*Ex-Q*&uYL| literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/src/common/dbus/marshallers.h b/xchat-2.8.8/src/common/dbus/marshallers.h new file mode 100644 index 0000000..20885f8 --- /dev/null +++ b/xchat-2.8.8/src/common/dbus/marshallers.h @@ -0,0 +1,100 @@ +/* This file is generated by glib-genmarshal, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */ +#include <glib-object.h> + +#ifdef G_ENABLE_DEBUG +#define g_marshal_value_peek_boolean(v) g_value_get_boolean (v) +#define g_marshal_value_peek_char(v) g_value_get_schar (v) +#define g_marshal_value_peek_uchar(v) g_value_get_uchar (v) +#define g_marshal_value_peek_int(v) g_value_get_int (v) +#define g_marshal_value_peek_uint(v) g_value_get_uint (v) +#define g_marshal_value_peek_long(v) g_value_get_long (v) +#define g_marshal_value_peek_ulong(v) g_value_get_ulong (v) +#define g_marshal_value_peek_int64(v) g_value_get_int64 (v) +#define g_marshal_value_peek_uint64(v) g_value_get_uint64 (v) +#define g_marshal_value_peek_enum(v) g_value_get_enum (v) +#define g_marshal_value_peek_flags(v) g_value_get_flags (v) +#define g_marshal_value_peek_float(v) g_value_get_float (v) +#define g_marshal_value_peek_double(v) g_value_get_double (v) +#define g_marshal_value_peek_string(v) (char*) g_value_get_string (v) +#define g_marshal_value_peek_param(v) g_value_get_param (v) +#define g_marshal_value_peek_boxed(v) g_value_get_boxed (v) +#define g_marshal_value_peek_pointer(v) g_value_get_pointer (v) +#define g_marshal_value_peek_object(v) g_value_get_object (v) +#define g_marshal_value_peek_variant(v) g_value_get_variant (v) +#else /* !G_ENABLE_DEBUG */ +/* WARNING: This code accesses GValues directly, which is UNSUPPORTED API. + * Do not access GValues directly in your code. Instead, use the + * g_value_get_*() functions + */ +#define g_marshal_value_peek_boolean(v) (v)->data[0].v_int +#define g_marshal_value_peek_char(v) (v)->data[0].v_int +#define g_marshal_value_peek_uchar(v) (v)->data[0].v_uint +#define g_marshal_value_peek_int(v) (v)->data[0].v_int +#define g_marshal_value_peek_uint(v) (v)->data[0].v_uint +#define g_marshal_value_peek_long(v) (v)->data[0].v_long +#define g_marshal_value_peek_ulong(v) (v)->data[0].v_ulong +#define g_marshal_value_peek_int64(v) (v)->data[0].v_int64 +#define g_marshal_value_peek_uint64(v) (v)->data[0].v_uint64 +#define g_marshal_value_peek_enum(v) (v)->data[0].v_long +#define g_marshal_value_peek_flags(v) (v)->data[0].v_ulong +#define g_marshal_value_peek_float(v) (v)->data[0].v_float +#define g_marshal_value_peek_double(v) (v)->data[0].v_double +#define g_marshal_value_peek_string(v) (v)->data[0].v_pointer +#define g_marshal_value_peek_param(v) (v)->data[0].v_pointer +#define g_marshal_value_peek_boxed(v) (v)->data[0].v_pointer +#define g_marshal_value_peek_pointer(v) (v)->data[0].v_pointer +#define g_marshal_value_peek_object(v) (v)->data[0].v_pointer +#define g_marshal_value_peek_variant(v) (v)->data[0].v_pointer +#endif /* !G_ENABLE_DEBUG */ + +/* VOID:POINTER,POINTER,UINT,UINT (marshallers.list:1) */ +/* Prototype for -Wmissing-prototypes */ +G_BEGIN_DECLS +extern +void g_cclosure_user_marshal_VOID__POINTER_POINTER_UINT_UINT (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +G_END_DECLS +void +g_cclosure_user_marshal_VOID__POINTER_POINTER_UINT_UINT (GClosure *closure, + GValue *return_value G_GNUC_UNUSED, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint G_GNUC_UNUSED, + gpointer marshal_data) +{ + typedef void (*GMarshalFunc_VOID__POINTER_POINTER_UINT_UINT) (gpointer data1, + gpointer arg1, + gpointer arg2, + guint arg3, + guint arg4, + gpointer data2); + GCClosure *cc = (GCClosure *) closure; + gpointer data1, data2; + GMarshalFunc_VOID__POINTER_POINTER_UINT_UINT callback; + + g_return_if_fail (n_param_values == 5); + + if (G_CCLOSURE_SWAP_DATA (closure)) + { + data1 = closure->data; + data2 = g_value_peek_pointer (param_values + 0); + } + else + { + data1 = g_value_peek_pointer (param_values + 0); + data2 = closure->data; + } + callback = (GMarshalFunc_VOID__POINTER_POINTER_UINT_UINT) (marshal_data ? marshal_data : cc->callback); + + callback (data1, + g_marshal_value_peek_pointer (param_values + 1), + g_marshal_value_peek_pointer (param_values + 2), + g_marshal_value_peek_uint (param_values + 3), + g_marshal_value_peek_uint (param_values + 4), + data2); +} + diff --git a/xchat-2.8.8/src/common/dbus/marshallers.list b/xchat-2.8.8/src/common/dbus/marshallers.list new file mode 100644 index 0000000..bc3c4ad --- /dev/null +++ b/xchat-2.8.8/src/common/dbus/marshallers.list @@ -0,0 +1 @@ +VOID:POINTER,POINTER,UINT,UINT diff --git a/xchat-2.8.8/src/common/dbus/org.xchat.service.service b/xchat-2.8.8/src/common/dbus/org.xchat.service.service new file mode 100644 index 0000000..2194562 --- /dev/null +++ b/xchat-2.8.8/src/common/dbus/org.xchat.service.service @@ -0,0 +1,3 @@ +[D-BUS Service] +Name=org.xchat.service +Exec=/usr/local/bin/xchat diff --git a/xchat-2.8.8/src/common/dbus/org.xchat.service.service.in b/xchat-2.8.8/src/common/dbus/org.xchat.service.service.in new file mode 100644 index 0000000..1949012 --- /dev/null +++ b/xchat-2.8.8/src/common/dbus/org.xchat.service.service.in @@ -0,0 +1,3 @@ +[D-BUS Service] +Name=org.xchat.service +Exec=@bindir@/xchat diff --git a/xchat-2.8.8/src/common/dbus/remote-object-glue.h b/xchat-2.8.8/src/common/dbus/remote-object-glue.h new file mode 100644 index 0000000..8b43519 --- /dev/null +++ b/xchat-2.8.8/src/common/dbus/remote-object-glue.h @@ -0,0 +1,787 @@ +/* Generated by dbus-binding-tool; do not edit! */ + +/* This file is generated by glib-genmarshal, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */ +#include <glib-object.h> + +#ifdef G_ENABLE_DEBUG +#define g_marshal_value_peek_boolean(v) g_value_get_boolean (v) +#define g_marshal_value_peek_char(v) g_value_get_schar (v) +#define g_marshal_value_peek_uchar(v) g_value_get_uchar (v) +#define g_marshal_value_peek_int(v) g_value_get_int (v) +#define g_marshal_value_peek_uint(v) g_value_get_uint (v) +#define g_marshal_value_peek_long(v) g_value_get_long (v) +#define g_marshal_value_peek_ulong(v) g_value_get_ulong (v) +#define g_marshal_value_peek_int64(v) g_value_get_int64 (v) +#define g_marshal_value_peek_uint64(v) g_value_get_uint64 (v) +#define g_marshal_value_peek_enum(v) g_value_get_enum (v) +#define g_marshal_value_peek_flags(v) g_value_get_flags (v) +#define g_marshal_value_peek_float(v) g_value_get_float (v) +#define g_marshal_value_peek_double(v) g_value_get_double (v) +#define g_marshal_value_peek_string(v) (char*) g_value_get_string (v) +#define g_marshal_value_peek_param(v) g_value_get_param (v) +#define g_marshal_value_peek_boxed(v) g_value_get_boxed (v) +#define g_marshal_value_peek_pointer(v) g_value_get_pointer (v) +#define g_marshal_value_peek_object(v) g_value_get_object (v) +#define g_marshal_value_peek_variant(v) g_value_get_variant (v) +#else /* !G_ENABLE_DEBUG */ +/* WARNING: This code accesses GValues directly, which is UNSUPPORTED API. + * Do not access GValues directly in your code. Instead, use the + * g_value_get_*() functions + */ +#define g_marshal_value_peek_boolean(v) (v)->data[0].v_int +#define g_marshal_value_peek_char(v) (v)->data[0].v_int +#define g_marshal_value_peek_uchar(v) (v)->data[0].v_uint +#define g_marshal_value_peek_int(v) (v)->data[0].v_int +#define g_marshal_value_peek_uint(v) (v)->data[0].v_uint +#define g_marshal_value_peek_long(v) (v)->data[0].v_long +#define g_marshal_value_peek_ulong(v) (v)->data[0].v_ulong +#define g_marshal_value_peek_int64(v) (v)->data[0].v_int64 +#define g_marshal_value_peek_uint64(v) (v)->data[0].v_uint64 +#define g_marshal_value_peek_enum(v) (v)->data[0].v_long +#define g_marshal_value_peek_flags(v) (v)->data[0].v_ulong +#define g_marshal_value_peek_float(v) (v)->data[0].v_float +#define g_marshal_value_peek_double(v) (v)->data[0].v_double +#define g_marshal_value_peek_string(v) (v)->data[0].v_pointer +#define g_marshal_value_peek_param(v) (v)->data[0].v_pointer +#define g_marshal_value_peek_boxed(v) (v)->data[0].v_pointer +#define g_marshal_value_peek_pointer(v) (v)->data[0].v_pointer +#define g_marshal_value_peek_object(v) (v)->data[0].v_pointer +#define g_marshal_value_peek_variant(v) (v)->data[0].v_pointer +#endif /* !G_ENABLE_DEBUG */ + +/* Prototype for -Wmissing-prototypes */ +G_BEGIN_DECLS +extern +void dbus_glib_marshal_remote_object_BOOLEAN__BOXED_INT_UCHAR_UCHAR_POINTER (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +G_END_DECLS +void +dbus_glib_marshal_remote_object_BOOLEAN__BOXED_INT_UCHAR_UCHAR_POINTER (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint G_GNUC_UNUSED, + gpointer marshal_data) +{ + typedef gboolean (*GMarshalFunc_BOOLEAN__BOXED_INT_UCHAR_UCHAR_POINTER) (gpointer data1, + gpointer arg1, + gint arg2, + guchar arg3, + guchar arg4, + gpointer arg5, + gpointer data2); + GCClosure *cc = (GCClosure *) closure; + gpointer data1, data2; + GMarshalFunc_BOOLEAN__BOXED_INT_UCHAR_UCHAR_POINTER callback; + gboolean v_return; + + g_return_if_fail (return_value != NULL); + g_return_if_fail (n_param_values == 6); + + if (G_CCLOSURE_SWAP_DATA (closure)) + { + data1 = closure->data; + data2 = g_value_peek_pointer (param_values + 0); + } + else + { + data1 = g_value_peek_pointer (param_values + 0); + data2 = closure->data; + } + callback = (GMarshalFunc_BOOLEAN__BOXED_INT_UCHAR_UCHAR_POINTER) (marshal_data ? marshal_data : cc->callback); + + v_return = callback (data1, + g_marshal_value_peek_boxed (param_values + 1), + g_marshal_value_peek_int (param_values + 2), + g_marshal_value_peek_uchar (param_values + 3), + g_marshal_value_peek_uchar (param_values + 4), + g_marshal_value_peek_pointer (param_values + 5), + data2); + + g_value_set_boolean (return_value, v_return); +} + +/* Prototype for -Wmissing-prototypes */ +G_BEGIN_DECLS +extern +void dbus_glib_marshal_remote_object_BOOLEAN__STRING_INT_STRING_INT_POINTER_POINTER (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +G_END_DECLS +void +dbus_glib_marshal_remote_object_BOOLEAN__STRING_INT_STRING_INT_POINTER_POINTER (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint G_GNUC_UNUSED, + gpointer marshal_data) +{ + typedef gboolean (*GMarshalFunc_BOOLEAN__STRING_INT_STRING_INT_POINTER_POINTER) (gpointer data1, + gpointer arg1, + gint arg2, + gpointer arg3, + gint arg4, + gpointer arg5, + gpointer arg6, + gpointer data2); + GCClosure *cc = (GCClosure *) closure; + gpointer data1, data2; + GMarshalFunc_BOOLEAN__STRING_INT_STRING_INT_POINTER_POINTER callback; + gboolean v_return; + + g_return_if_fail (return_value != NULL); + g_return_if_fail (n_param_values == 7); + + if (G_CCLOSURE_SWAP_DATA (closure)) + { + data1 = closure->data; + data2 = g_value_peek_pointer (param_values + 0); + } + else + { + data1 = g_value_peek_pointer (param_values + 0); + data2 = closure->data; + } + callback = (GMarshalFunc_BOOLEAN__STRING_INT_STRING_INT_POINTER_POINTER) (marshal_data ? marshal_data : cc->callback); + + v_return = callback (data1, + g_marshal_value_peek_string (param_values + 1), + g_marshal_value_peek_int (param_values + 2), + g_marshal_value_peek_string (param_values + 3), + g_marshal_value_peek_int (param_values + 4), + g_marshal_value_peek_pointer (param_values + 5), + g_marshal_value_peek_pointer (param_values + 6), + data2); + + g_value_set_boolean (return_value, v_return); +} + +/* Prototype for -Wmissing-prototypes */ +G_BEGIN_DECLS +extern +void dbus_glib_marshal_remote_object_BOOLEAN__STRING_POINTER_POINTER_POINTER_POINTER (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +G_END_DECLS +void +dbus_glib_marshal_remote_object_BOOLEAN__STRING_POINTER_POINTER_POINTER_POINTER (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint G_GNUC_UNUSED, + gpointer marshal_data) +{ + typedef gboolean (*GMarshalFunc_BOOLEAN__STRING_POINTER_POINTER_POINTER_POINTER) (gpointer data1, + gpointer arg1, + gpointer arg2, + gpointer arg3, + gpointer arg4, + gpointer arg5, + gpointer data2); + GCClosure *cc = (GCClosure *) closure; + gpointer data1, data2; + GMarshalFunc_BOOLEAN__STRING_POINTER_POINTER_POINTER_POINTER callback; + gboolean v_return; + + g_return_if_fail (return_value != NULL); + g_return_if_fail (n_param_values == 6); + + if (G_CCLOSURE_SWAP_DATA (closure)) + { + data1 = closure->data; + data2 = g_value_peek_pointer (param_values + 0); + } + else + { + data1 = g_value_peek_pointer (param_values + 0); + data2 = closure->data; + } + callback = (GMarshalFunc_BOOLEAN__STRING_POINTER_POINTER_POINTER_POINTER) (marshal_data ? marshal_data : cc->callback); + + v_return = callback (data1, + g_marshal_value_peek_string (param_values + 1), + g_marshal_value_peek_pointer (param_values + 2), + g_marshal_value_peek_pointer (param_values + 3), + g_marshal_value_peek_pointer (param_values + 4), + g_marshal_value_peek_pointer (param_values + 5), + data2); + + g_value_set_boolean (return_value, v_return); +} + +#define dbus_glib_marshal_remote_object_VOID__POINTER g_cclosure_marshal_VOID__POINTER + +#define dbus_glib_marshal_remote_object_NONE__POINTER dbus_glib_marshal_remote_object_VOID__POINTER + +/* Prototype for -Wmissing-prototypes */ +G_BEGIN_DECLS +extern +void dbus_glib_marshal_remote_object_VOID__STRING_STRING_STRING_STRING_POINTER (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +G_END_DECLS +void +dbus_glib_marshal_remote_object_VOID__STRING_STRING_STRING_STRING_POINTER (GClosure *closure, + GValue *return_value G_GNUC_UNUSED, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint G_GNUC_UNUSED, + gpointer marshal_data) +{ + typedef void (*GMarshalFunc_VOID__STRING_STRING_STRING_STRING_POINTER) (gpointer data1, + gpointer arg1, + gpointer arg2, + gpointer arg3, + gpointer arg4, + gpointer arg5, + gpointer data2); + GCClosure *cc = (GCClosure *) closure; + gpointer data1, data2; + GMarshalFunc_VOID__STRING_STRING_STRING_STRING_POINTER callback; + + g_return_if_fail (n_param_values == 6); + + if (G_CCLOSURE_SWAP_DATA (closure)) + { + data1 = closure->data; + data2 = g_value_peek_pointer (param_values + 0); + } + else + { + data1 = g_value_peek_pointer (param_values + 0); + data2 = closure->data; + } + callback = (GMarshalFunc_VOID__STRING_STRING_STRING_STRING_POINTER) (marshal_data ? marshal_data : cc->callback); + + callback (data1, + g_marshal_value_peek_string (param_values + 1), + g_marshal_value_peek_string (param_values + 2), + g_marshal_value_peek_string (param_values + 3), + g_marshal_value_peek_string (param_values + 4), + g_marshal_value_peek_pointer (param_values + 5), + data2); +} + +#define dbus_glib_marshal_remote_object_NONE__STRING_STRING_STRING_STRING_POINTER dbus_glib_marshal_remote_object_VOID__STRING_STRING_STRING_STRING_POINTER + +/* Prototype for -Wmissing-prototypes */ +G_BEGIN_DECLS +extern +void dbus_glib_marshal_remote_object_BOOLEAN__STRING_POINTER_POINTER (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +G_END_DECLS +void +dbus_glib_marshal_remote_object_BOOLEAN__STRING_POINTER_POINTER (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint G_GNUC_UNUSED, + gpointer marshal_data) +{ + typedef gboolean (*GMarshalFunc_BOOLEAN__STRING_POINTER_POINTER) (gpointer data1, + gpointer arg1, + gpointer arg2, + gpointer arg3, + gpointer data2); + GCClosure *cc = (GCClosure *) closure; + gpointer data1, data2; + GMarshalFunc_BOOLEAN__STRING_POINTER_POINTER callback; + gboolean v_return; + + g_return_if_fail (return_value != NULL); + g_return_if_fail (n_param_values == 4); + + if (G_CCLOSURE_SWAP_DATA (closure)) + { + data1 = closure->data; + data2 = g_value_peek_pointer (param_values + 0); + } + else + { + data1 = g_value_peek_pointer (param_values + 0); + data2 = closure->data; + } + callback = (GMarshalFunc_BOOLEAN__STRING_POINTER_POINTER) (marshal_data ? marshal_data : cc->callback); + + v_return = callback (data1, + g_marshal_value_peek_string (param_values + 1), + g_marshal_value_peek_pointer (param_values + 2), + g_marshal_value_peek_pointer (param_values + 3), + data2); + + g_value_set_boolean (return_value, v_return); +} + +/* Prototype for -Wmissing-prototypes */ +G_BEGIN_DECLS +extern +void dbus_glib_marshal_remote_object_BOOLEAN__POINTER_POINTER (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +G_END_DECLS +void +dbus_glib_marshal_remote_object_BOOLEAN__POINTER_POINTER (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint G_GNUC_UNUSED, + gpointer marshal_data) +{ + typedef gboolean (*GMarshalFunc_BOOLEAN__POINTER_POINTER) (gpointer data1, + gpointer arg1, + gpointer arg2, + gpointer data2); + GCClosure *cc = (GCClosure *) closure; + gpointer data1, data2; + GMarshalFunc_BOOLEAN__POINTER_POINTER callback; + gboolean v_return; + + g_return_if_fail (return_value != NULL); + g_return_if_fail (n_param_values == 3); + + if (G_CCLOSURE_SWAP_DATA (closure)) + { + data1 = closure->data; + data2 = g_value_peek_pointer (param_values + 0); + } + else + { + data1 = g_value_peek_pointer (param_values + 0); + data2 = closure->data; + } + callback = (GMarshalFunc_BOOLEAN__POINTER_POINTER) (marshal_data ? marshal_data : cc->callback); + + v_return = callback (data1, + g_marshal_value_peek_pointer (param_values + 1), + g_marshal_value_peek_pointer (param_values + 2), + data2); + + g_value_set_boolean (return_value, v_return); +} + +/* Prototype for -Wmissing-prototypes */ +G_BEGIN_DECLS +extern +void dbus_glib_marshal_remote_object_BOOLEAN__STRING_BOXED_POINTER_POINTER (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +G_END_DECLS +void +dbus_glib_marshal_remote_object_BOOLEAN__STRING_BOXED_POINTER_POINTER (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint G_GNUC_UNUSED, + gpointer marshal_data) +{ + typedef gboolean (*GMarshalFunc_BOOLEAN__STRING_BOXED_POINTER_POINTER) (gpointer data1, + gpointer arg1, + gpointer arg2, + gpointer arg3, + gpointer arg4, + gpointer data2); + GCClosure *cc = (GCClosure *) closure; + gpointer data1, data2; + GMarshalFunc_BOOLEAN__STRING_BOXED_POINTER_POINTER callback; + gboolean v_return; + + g_return_if_fail (return_value != NULL); + g_return_if_fail (n_param_values == 5); + + if (G_CCLOSURE_SWAP_DATA (closure)) + { + data1 = closure->data; + data2 = g_value_peek_pointer (param_values + 0); + } + else + { + data1 = g_value_peek_pointer (param_values + 0); + data2 = closure->data; + } + callback = (GMarshalFunc_BOOLEAN__STRING_BOXED_POINTER_POINTER) (marshal_data ? marshal_data : cc->callback); + + v_return = callback (data1, + g_marshal_value_peek_string (param_values + 1), + g_marshal_value_peek_boxed (param_values + 2), + g_marshal_value_peek_pointer (param_values + 3), + g_marshal_value_peek_pointer (param_values + 4), + data2); + + g_value_set_boolean (return_value, v_return); +} + +/* Prototype for -Wmissing-prototypes */ +G_BEGIN_DECLS +extern +void dbus_glib_marshal_remote_object_BOOLEAN__STRING_STRING_POINTER_POINTER (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +G_END_DECLS +void +dbus_glib_marshal_remote_object_BOOLEAN__STRING_STRING_POINTER_POINTER (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint G_GNUC_UNUSED, + gpointer marshal_data) +{ + typedef gboolean (*GMarshalFunc_BOOLEAN__STRING_STRING_POINTER_POINTER) (gpointer data1, + gpointer arg1, + gpointer arg2, + gpointer arg3, + gpointer arg4, + gpointer data2); + GCClosure *cc = (GCClosure *) closure; + gpointer data1, data2; + GMarshalFunc_BOOLEAN__STRING_STRING_POINTER_POINTER callback; + gboolean v_return; + + g_return_if_fail (return_value != NULL); + g_return_if_fail (n_param_values == 5); + + if (G_CCLOSURE_SWAP_DATA (closure)) + { + data1 = closure->data; + data2 = g_value_peek_pointer (param_values + 0); + } + else + { + data1 = g_value_peek_pointer (param_values + 0); + data2 = closure->data; + } + callback = (GMarshalFunc_BOOLEAN__STRING_STRING_POINTER_POINTER) (marshal_data ? marshal_data : cc->callback); + + v_return = callback (data1, + g_marshal_value_peek_string (param_values + 1), + g_marshal_value_peek_string (param_values + 2), + g_marshal_value_peek_pointer (param_values + 3), + g_marshal_value_peek_pointer (param_values + 4), + data2); + + g_value_set_boolean (return_value, v_return); +} + +/* Prototype for -Wmissing-prototypes */ +G_BEGIN_DECLS +extern +void dbus_glib_marshal_remote_object_BOOLEAN__UINT_POINTER (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +G_END_DECLS +void +dbus_glib_marshal_remote_object_BOOLEAN__UINT_POINTER (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint G_GNUC_UNUSED, + gpointer marshal_data) +{ + typedef gboolean (*GMarshalFunc_BOOLEAN__UINT_POINTER) (gpointer data1, + guint arg1, + gpointer arg2, + gpointer data2); + GCClosure *cc = (GCClosure *) closure; + gpointer data1, data2; + GMarshalFunc_BOOLEAN__UINT_POINTER callback; + gboolean v_return; + + g_return_if_fail (return_value != NULL); + g_return_if_fail (n_param_values == 3); + + if (G_CCLOSURE_SWAP_DATA (closure)) + { + data1 = closure->data; + data2 = g_value_peek_pointer (param_values + 0); + } + else + { + data1 = g_value_peek_pointer (param_values + 0); + data2 = closure->data; + } + callback = (GMarshalFunc_BOOLEAN__UINT_POINTER) (marshal_data ? marshal_data : cc->callback); + + v_return = callback (data1, + g_marshal_value_peek_uint (param_values + 1), + g_marshal_value_peek_pointer (param_values + 2), + data2); + + g_value_set_boolean (return_value, v_return); +} + +/* Prototype for -Wmissing-prototypes */ +G_BEGIN_DECLS +extern +void dbus_glib_marshal_remote_object_BOOLEAN__STRING_INT_INT_POINTER_POINTER (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +G_END_DECLS +void +dbus_glib_marshal_remote_object_BOOLEAN__STRING_INT_INT_POINTER_POINTER (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint G_GNUC_UNUSED, + gpointer marshal_data) +{ + typedef gboolean (*GMarshalFunc_BOOLEAN__STRING_INT_INT_POINTER_POINTER) (gpointer data1, + gpointer arg1, + gint arg2, + gint arg3, + gpointer arg4, + gpointer arg5, + gpointer data2); + GCClosure *cc = (GCClosure *) closure; + gpointer data1, data2; + GMarshalFunc_BOOLEAN__STRING_INT_INT_POINTER_POINTER callback; + gboolean v_return; + + g_return_if_fail (return_value != NULL); + g_return_if_fail (n_param_values == 6); + + if (G_CCLOSURE_SWAP_DATA (closure)) + { + data1 = closure->data; + data2 = g_value_peek_pointer (param_values + 0); + } + else + { + data1 = g_value_peek_pointer (param_values + 0); + data2 = closure->data; + } + callback = (GMarshalFunc_BOOLEAN__STRING_INT_INT_POINTER_POINTER) (marshal_data ? marshal_data : cc->callback); + + v_return = callback (data1, + g_marshal_value_peek_string (param_values + 1), + g_marshal_value_peek_int (param_values + 2), + g_marshal_value_peek_int (param_values + 3), + g_marshal_value_peek_pointer (param_values + 4), + g_marshal_value_peek_pointer (param_values + 5), + data2); + + g_value_set_boolean (return_value, v_return); +} + +/* Prototype for -Wmissing-prototypes */ +G_BEGIN_DECLS +extern +void dbus_glib_marshal_remote_object_BOOLEAN__STRING_POINTER (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +G_END_DECLS +void +dbus_glib_marshal_remote_object_BOOLEAN__STRING_POINTER (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint G_GNUC_UNUSED, + gpointer marshal_data) +{ + typedef gboolean (*GMarshalFunc_BOOLEAN__STRING_POINTER) (gpointer data1, + gpointer arg1, + gpointer arg2, + gpointer data2); + GCClosure *cc = (GCClosure *) closure; + gpointer data1, data2; + GMarshalFunc_BOOLEAN__STRING_POINTER callback; + gboolean v_return; + + g_return_if_fail (return_value != NULL); + g_return_if_fail (n_param_values == 3); + + if (G_CCLOSURE_SWAP_DATA (closure)) + { + data1 = closure->data; + data2 = g_value_peek_pointer (param_values + 0); + } + else + { + data1 = g_value_peek_pointer (param_values + 0); + data2 = closure->data; + } + callback = (GMarshalFunc_BOOLEAN__STRING_POINTER) (marshal_data ? marshal_data : cc->callback); + + v_return = callback (data1, + g_marshal_value_peek_string (param_values + 1), + g_marshal_value_peek_pointer (param_values + 2), + data2); + + g_value_set_boolean (return_value, v_return); +} + +/* Prototype for -Wmissing-prototypes */ +G_BEGIN_DECLS +extern +void dbus_glib_marshal_remote_object_BOOLEAN__UINT_STRING_POINTER_POINTER (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +G_END_DECLS +void +dbus_glib_marshal_remote_object_BOOLEAN__UINT_STRING_POINTER_POINTER (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint G_GNUC_UNUSED, + gpointer marshal_data) +{ + typedef gboolean (*GMarshalFunc_BOOLEAN__UINT_STRING_POINTER_POINTER) (gpointer data1, + guint arg1, + gpointer arg2, + gpointer arg3, + gpointer arg4, + gpointer data2); + GCClosure *cc = (GCClosure *) closure; + gpointer data1, data2; + GMarshalFunc_BOOLEAN__UINT_STRING_POINTER_POINTER callback; + gboolean v_return; + + g_return_if_fail (return_value != NULL); + g_return_if_fail (n_param_values == 5); + + if (G_CCLOSURE_SWAP_DATA (closure)) + { + data1 = closure->data; + data2 = g_value_peek_pointer (param_values + 0); + } + else + { + data1 = g_value_peek_pointer (param_values + 0); + data2 = closure->data; + } + callback = (GMarshalFunc_BOOLEAN__UINT_STRING_POINTER_POINTER) (marshal_data ? marshal_data : cc->callback); + + v_return = callback (data1, + g_marshal_value_peek_uint (param_values + 1), + g_marshal_value_peek_string (param_values + 2), + g_marshal_value_peek_pointer (param_values + 3), + g_marshal_value_peek_pointer (param_values + 4), + data2); + + g_value_set_boolean (return_value, v_return); +} + +/* Prototype for -Wmissing-prototypes */ +G_BEGIN_DECLS +extern +void dbus_glib_marshal_remote_object_BOOLEAN__UINT_POINTER_POINTER (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +G_END_DECLS +void +dbus_glib_marshal_remote_object_BOOLEAN__UINT_POINTER_POINTER (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint G_GNUC_UNUSED, + gpointer marshal_data) +{ + typedef gboolean (*GMarshalFunc_BOOLEAN__UINT_POINTER_POINTER) (gpointer data1, + guint arg1, + gpointer arg2, + gpointer arg3, + gpointer data2); + GCClosure *cc = (GCClosure *) closure; + gpointer data1, data2; + GMarshalFunc_BOOLEAN__UINT_POINTER_POINTER callback; + gboolean v_return; + + g_return_if_fail (return_value != NULL); + g_return_if_fail (n_param_values == 4); + + if (G_CCLOSURE_SWAP_DATA (closure)) + { + data1 = closure->data; + data2 = g_value_peek_pointer (param_values + 0); + } + else + { + data1 = g_value_peek_pointer (param_values + 0); + data2 = closure->data; + } + callback = (GMarshalFunc_BOOLEAN__UINT_POINTER_POINTER) (marshal_data ? marshal_data : cc->callback); + + v_return = callback (data1, + g_marshal_value_peek_uint (param_values + 1), + g_marshal_value_peek_pointer (param_values + 2), + g_marshal_value_peek_pointer (param_values + 3), + data2); + + g_value_set_boolean (return_value, v_return); +} + +#include <dbus/dbus-glib.h> +static const DBusGMethodInfo dbus_glib_remote_object_methods[] = { + { (GCallback) remote_object_connect, dbus_glib_marshal_remote_object_NONE__STRING_STRING_STRING_STRING_POINTER, 0 }, + { (GCallback) remote_object_disconnect, dbus_glib_marshal_remote_object_NONE__POINTER, 88 }, + { (GCallback) remote_object_command, dbus_glib_marshal_remote_object_BOOLEAN__STRING_POINTER, 123 }, + { (GCallback) remote_object_print, dbus_glib_marshal_remote_object_BOOLEAN__STRING_POINTER, 163 }, + { (GCallback) remote_object_find_context, dbus_glib_marshal_remote_object_BOOLEAN__STRING_STRING_POINTER_POINTER, 198 }, + { (GCallback) remote_object_get_context, dbus_glib_marshal_remote_object_BOOLEAN__POINTER_POINTER, 268 }, + { (GCallback) remote_object_set_context, dbus_glib_marshal_remote_object_BOOLEAN__UINT_POINTER_POINTER, 314 }, + { (GCallback) remote_object_get_info, dbus_glib_marshal_remote_object_BOOLEAN__STRING_POINTER_POINTER, 364 }, + { (GCallback) remote_object_get_prefs, dbus_glib_marshal_remote_object_BOOLEAN__STRING_POINTER_POINTER_POINTER_POINTER, 416 }, + { (GCallback) remote_object_hook_command, dbus_glib_marshal_remote_object_BOOLEAN__STRING_INT_STRING_INT_POINTER_POINTER, 503 }, + { (GCallback) remote_object_hook_server, dbus_glib_marshal_remote_object_BOOLEAN__STRING_INT_INT_POINTER_POINTER, 603 }, + { (GCallback) remote_object_hook_print, dbus_glib_marshal_remote_object_BOOLEAN__STRING_INT_INT_POINTER_POINTER, 688 }, + { (GCallback) remote_object_unhook, dbus_glib_marshal_remote_object_BOOLEAN__UINT_POINTER, 772 }, + { (GCallback) remote_object_list_get, dbus_glib_marshal_remote_object_BOOLEAN__STRING_POINTER_POINTER, 806 }, + { (GCallback) remote_object_list_next, dbus_glib_marshal_remote_object_BOOLEAN__UINT_POINTER_POINTER, 858 }, + { (GCallback) remote_object_list_str, dbus_glib_marshal_remote_object_BOOLEAN__UINT_STRING_POINTER_POINTER, 906 }, + { (GCallback) remote_object_list_int, dbus_glib_marshal_remote_object_BOOLEAN__UINT_STRING_POINTER_POINTER, 966 }, + { (GCallback) remote_object_list_time, dbus_glib_marshal_remote_object_BOOLEAN__UINT_STRING_POINTER_POINTER, 1026 }, + { (GCallback) remote_object_list_fields, dbus_glib_marshal_remote_object_BOOLEAN__STRING_POINTER_POINTER, 1088 }, + { (GCallback) remote_object_list_free, dbus_glib_marshal_remote_object_BOOLEAN__UINT_POINTER, 1141 }, + { (GCallback) remote_object_emit_print, dbus_glib_marshal_remote_object_BOOLEAN__STRING_BOXED_POINTER_POINTER, 1177 }, + { (GCallback) remote_object_nickcmp, dbus_glib_marshal_remote_object_BOOLEAN__STRING_STRING_POINTER_POINTER, 1244 }, + { (GCallback) remote_object_strip, dbus_glib_marshal_remote_object_BOOLEAN__STRING_INT_INT_POINTER_POINTER, 1304 }, + { (GCallback) remote_object_send_modes, dbus_glib_marshal_remote_object_BOOLEAN__BOXED_INT_UCHAR_UCHAR_POINTER, 1371 }, +}; + +const DBusGObjectInfo dbus_glib_remote_object_object_info = { 1, + dbus_glib_remote_object_methods, + 24, +"org.xchat.connection\0Connect\0A\0filename\0I\0s\0name\0I\0s\0desc\0I\0s\0version\0I\0s\0path\0O\0F\0N\0s\0\0org.xchat.connection\0Disconnect\0A\0\0org.xchat.plugin\0Command\0S\0command\0I\0s\0\0org.xchat.plugin\0Print\0S\0text\0I\0s\0\0org.xchat.plugin\0FindContext\0S\0server\0I\0s\0channel\0I\0s\0ret_id\0O\0F\0N\0u\0\0org.xchat.plugin\0GetContext\0S\0ret_id\0O\0F\0N\0u\0\0org.xchat.plugin\0SetContext\0S\0id\0I\0u\0ret\0O\0F\0N\0b\0\0org.xchat.plugin\0GetInfo\0S\0id\0I\0s\0ret_info\0O\0F\0N\0s\0\0org.xchat.plugin\0GetPrefs\0S\0name\0I\0s\0ret_type\0O\0F\0N\0i\0ret_str\0O\0F\0N\0s\0ret_int\0O\0F\0N\0i\0\0org.xchat.plugin\0HookCommand\0S\0name\0I\0s\0priority\0I\0i\0help_text\0I\0s\0return_value\0I\0i\0ret_id\0O\0F\0N\0u\0\0org.xchat.plugin\0HookServer\0S\0name\0I\0s\0priority\0I\0i\0return_value\0I\0i\0ret_id\0O\0F\0N\0u\0\0org.xchat.plugin\0HookPrint\0S\0name\0I\0s\0priority\0I\0i\0return_value\0I\0i\0ret_id\0O\0F\0N\0u\0\0org.xchat.plugin\0Unhook\0S\0id\0I\0u\0\0org.xchat.plugin\0ListGet\0S\0name\0I\0s\0ret_id\0O\0F\0N\0u\0\0org.xchat.plugin\0ListNext\0S\0id\0I\0u\0ret\0O\0F\0N\0b\0\0org.xchat.plugin\0ListStr\0S\0id\0I\0u\0name\0I\0s\0ret_str\0O\0F\0N\0s\0\0org.xchat.plugin\0ListInt\0S\0id\0I\0u\0name\0I\0s\0ret_int\0O\0F\0N\0i\0\0org.xchat.plugin\0ListTime\0S\0id\0I\0u\0name\0I\0s\0ret_time\0O\0F\0N\0t\0\0org.xchat.plugin\0ListFields\0S\0name\0I\0s\0ret\0O\0F\0N\0as\0\0org.xchat.plugin\0ListFree\0S\0id\0I\0u\0\0org.xchat.plugin\0EmitPrint\0S\0event_name\0I\0s\0args\0I\0as\0ret\0O\0F\0N\0b\0\0org.xchat.plugin\0Nickcmp\0S\0nick1\0I\0s\0nick2\0I\0s\0ret\0O\0F\0N\0i\0\0org.xchat.plugin\0Strip\0S\0str\0I\0s\0len\0I\0i\0flag\0I\0i\0ret_str\0O\0F\0N\0s\0\0org.xchat.plugin\0SendModes\0S\0targets\0I\0as\0modes_per_line\0I\0i\0sign\0I\0y\0mode\0I\0y\0\0\0", +"org.xchat.plugin\0CommandSignal\0org.xchat.plugin\0ServerSignal\0org.xchat.plugin\0PrintSignal\0org.xchat.plugin\0UnloadSignal\0\0", +"\0" +}; + diff --git a/xchat-2.8.8/src/common/dbus/remote-object.xml b/xchat-2.8.8/src/common/dbus/remote-object.xml new file mode 100644 index 0000000..88a8ae7 --- /dev/null +++ b/xchat-2.8.8/src/common/dbus/remote-object.xml @@ -0,0 +1,142 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<node name="/"> + + <interface name="org.xchat.connection"> + <method name="Connect"> + <annotation name="org.freedesktop.DBus.GLib.Async" value=""/> + <arg type="s" name="filename" direction="in"/> + <arg type="s" name="name" direction="in"/> + <arg type="s" name="desc" direction="in"/> + <arg type="s" name="version" direction="in"/> + <arg type="s" name="path" direction="out"/> + </method> + <method name="Disconnect"> + <annotation name="org.freedesktop.DBus.GLib.Async" value=""/> + </method> + </interface> + + <interface name="org.xchat.plugin"> + <method name="Command"> + <arg type="s" name="command" direction="in"/> + </method> + <method name="Print"> + <arg type="s" name="text" direction="in"/> + </method> + <method name="FindContext"> + <arg type="s" name="server" direction="in"/> + <arg type="s" name="channel" direction="in"/> + <arg type="u" name="ret_id" direction="out"/> + </method> + <method name="GetContext"> + <arg type="u" name="ret_id" direction="out"/> + </method> + <method name="SetContext"> + <arg type="u" name="id" direction="in"/> + <arg type="b" name="ret" direction="out"/> + </method> + <method name="GetInfo"> + <arg type="s" name="id" direction="in"/> + <arg type="s" name="ret_info" direction="out"/> + </method> + <method name="GetPrefs"> + <arg type="s" name="name" direction="in"/> + <arg type="i" name="ret_type" direction="out"/> + <arg type="s" name="ret_str" direction="out"/> + <arg type="i" name="ret_int" direction="out"/> + </method> + <method name="HookCommand"> + <arg type="s" name="name" direction="in"/> + <arg type="i" name="priority" direction="in"/> + <arg type="s" name="help_text" direction="in"/> + <arg type="i" name="return_value" direction="in"/> + <arg type="u" name="ret_id" direction="out"/> + </method> + <method name="HookServer"> + <arg type="s" name="name" direction="in"/> + <arg type="i" name="priority" direction="in"/> + <arg type="i" name="return_value" direction="in"/> + <arg type="u" name="ret_id" direction="out"/> + </method> + <method name="HookPrint"> + <arg type="s" name="name" direction="in"/> + <arg type="i" name="priority" direction="in"/> + <arg type="i" name="return_value" direction="in"/> + <arg type="u" name="ret_id" direction="out"/> + </method> + <method name="Unhook"> + <arg type="u" name="id" direction="in"/> + </method> + <method name="ListGet"> + <arg type="s" name="name" direction="in"/> + <arg type="u" name="ret_id" direction="out"/> + </method> + <method name="ListNext"> + <arg type="u" name="id" direction="in"/> + <arg type="b" name="ret" direction="out"/> + </method> + <method name="ListStr"> + <arg type="u" name="id" direction="in"/> + <arg type="s" name="name" direction="in"/> + <arg type="s" name="ret_str" direction="out"/> + </method> + <method name="ListInt"> + <arg type="u" name="id" direction="in"/> + <arg type="s" name="name" direction="in"/> + <arg type="i" name="ret_int" direction="out"/> + </method> + <method name="ListTime"> + <arg type="u" name="id" direction="in"/> + <arg type="s" name="name" direction="in"/> + <arg type="t" name="ret_time" direction="out"/> + </method> + <method name="ListFields"> + <arg type="s" name="name" direction="in"/> + <arg type="as" name="ret" direction="out"/> + </method> + <method name="ListFree"> + <arg type="u" name="id" direction="in"/> + </method> + <method name="EmitPrint"> + <arg type="s" name="event_name" direction="in"/> + <arg type="as" name="args" direction="in"/> + <arg type="b" name="ret" direction="out"/> + </method> + <method name="Nickcmp"> + <arg type="s" name="nick1" direction="in"/> + <arg type="s" name="nick2" direction="in"/> + <arg type="i" name="ret" direction="out"/> + </method> + <method name="Strip"> + <arg type="s" name="str" direction="in"/> + <arg type="i" name="len" direction="in"/> + <arg type="i" name="flag" direction="in"/> + <arg type="s" name="ret_str" direction="out"/> + </method> + <method name="SendModes"> + <arg type="as" name="targets" direction="in"/> + <arg type="i" name="modes_per_line" direction="in"/> + <arg type="y" name="sign" direction="in"/> + <arg type="y" name="mode" direction="in"/> + </method> + + <signal name="CommandSignal"> + <arg type="as" name="word"/> + <arg type="as" name="word_eol"/> + <arg type="u" name="hook_id"/> + <arg type="u" name="context_id"/> + </signal> + <signal name="ServerSignal"> + <arg type="as" name="word"/> + <arg type="as" name="word_eol"/> + <arg type="u" name="hook_id"/> + <arg type="u" name="context_id"/> + </signal> + <signal name="PrintSignal"> + <arg type="as" name="word"/> + <arg type="u" name="hook_id"/> + <arg type="u" name="context_id"/> + </signal> + <signal name="UnloadSignal"/> + </interface> +</node> diff --git a/xchat-2.8.8/src/common/dcc.c b/xchat-2.8.8/src/common/dcc.c new file mode 100644 index 0000000..8f28934 --- /dev/null +++ b/xchat-2.8.8/src/common/dcc.c @@ -0,0 +1,2587 @@ +/* X-Chat + * Copyright (C) 1998-2006 Peter Zelezny. + * Copyright (C) 2006 Damjan Jovanovic + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * + * Wayne Conrad, 3 Apr 1999: Color-coded DCC file transfer status windows + * Bernhard Valenti <bernhard.valenti@gmx.net> 2000-11-21: Fixed DCC send behind nat + * + * 2001-03-08 Added support for getting "dcc_ip" config parameter. + * Jim Seymour (jseymour@LinxNet.com) + */ + +/* we only use 32 bits, but without this define, you get only 31! */ +#define _FILE_OFFSET_BITS 64 +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <time.h> +#include <errno.h> +#include <sys/stat.h> +#include <unistd.h> +#include <fcntl.h> + +#define WANTSOCKET +#define WANTARPA +#define WANTDNS +#include "inet.h" + +#ifdef WIN32 +#include <windows.h> +#endif + +#include "xchat.h" +#include "util.h" +#include "fe.h" +#include "outbound.h" +#include "inbound.h" +#include "network.h" +#include "plugin.h" +#include "server.h" +#include "text.h" +#include "url.h" +#include "xchatc.h" + +#ifdef USE_DCC64 +#define BIG_STR_TO_INT(x) strtoull(x,NULL,10) +#else +#define BIG_STR_TO_INT(x) strtoul(x,NULL,10) +#endif + +static char *dcctypes[] = { "SEND", "RECV", "CHAT", "CHAT" }; + +struct dccstat_info dccstat[] = { + {N_("Waiting"), 1 /*black */ }, + {N_("Active"), 12 /*cyan */ }, + {N_("Failed"), 4 /*red */ }, + {N_("Done"), 3 /*green */ }, + {N_("Connect"), 1 /*black */ }, + {N_("Aborted"), 4 /*red */ }, +}; + +static int dcc_global_throttle; /* 0x1 = sends, 0x2 = gets */ +/*static*/ int dcc_sendcpssum, dcc_getcpssum; + +static struct DCC *new_dcc (void); +static void dcc_close (struct DCC *dcc, int dccstat, int destroy); +static gboolean dcc_send_data (GIOChannel *, GIOCondition, struct DCC *); +static gboolean dcc_read (GIOChannel *, GIOCondition, struct DCC *); +static gboolean dcc_read_ack (GIOChannel *source, GIOCondition condition, struct DCC *dcc); + +static int new_id() +{ + static int id = 0; + if (id == 0) + { + /* start the first ID at a random number for pseudo security */ + /* 1 - 255 */ + id = RAND_INT(255) + 1; + /* ignore overflows, since it can go to 2 billion */ + } + return id++; +} + +static double +timeval_diff (GTimeVal *greater, + GTimeVal *less) +{ + long usecdiff; + double result; + + result = greater->tv_sec - less->tv_sec; + usecdiff = (long) greater->tv_usec - less->tv_usec; + result += (double) usecdiff / 1000000; + + return result; +} + +static void +dcc_unthrottle (struct DCC *dcc) +{ + /* don't unthrottle here, but delegate to funcs */ + if (dcc->type == TYPE_RECV) + dcc_read (NULL, 0, dcc); + else + dcc_send_data (NULL, 0, dcc); +} + +static void +dcc_calc_cps (struct DCC *dcc) +{ + GTimeVal now; + int oldcps; + double timediff, startdiff; + int glob_throttle_bit, wasthrottled; + int *cpssum, glob_limit; + DCC_SIZE pos, posdiff; + + g_get_current_time (&now); + + /* the pos we use for sends is an average + between pos and ack */ + if (dcc->type == TYPE_SEND) + { + /* carefull to avoid 32bit overflow */ + pos = dcc->pos - ((dcc->pos - dcc->ack) / 2); + glob_throttle_bit = 0x1; + cpssum = &dcc_sendcpssum; + glob_limit = prefs.dcc_global_max_send_cps; + } + else + { + pos = dcc->pos; + glob_throttle_bit = 0x2; + cpssum = &dcc_getcpssum; + glob_limit = prefs.dcc_global_max_get_cps; + } + + if (!dcc->firstcpstv.tv_sec && !dcc->firstcpstv.tv_usec) + dcc->firstcpstv = now; + else + { + startdiff = timeval_diff (&now, &dcc->firstcpstv); + if (startdiff < 1) + startdiff = 1; + else if (startdiff > CPS_AVG_WINDOW) + startdiff = CPS_AVG_WINDOW; + + timediff = timeval_diff (&now, &dcc->lastcpstv); + if (timediff > startdiff) + timediff = startdiff = 1; + + posdiff = pos - dcc->lastcpspos; + oldcps = dcc->cps; + dcc->cps = ((double) posdiff / timediff) * (timediff / startdiff) + + (double) dcc->cps * (1.0 - (timediff / startdiff)); + + *cpssum += dcc->cps - oldcps; + } + + dcc->lastcpspos = pos; + dcc->lastcpstv = now; + + /* now check cps against set limits... */ + wasthrottled = dcc->throttled; + + /* check global limits first */ + dcc->throttled &= ~0x2; + if (glob_limit > 0 && *cpssum >= glob_limit) + { + dcc_global_throttle |= glob_throttle_bit; + if (dcc->maxcps >= 0) + dcc->throttled |= 0x2; + } + else + dcc_global_throttle &= ~glob_throttle_bit; + + /* now check per-connection limit */ + if (dcc->maxcps > 0 && dcc->cps > dcc->maxcps) + dcc->throttled |= 0x1; + else + dcc->throttled &= ~0x1; + + /* take action */ + if (wasthrottled && !dcc->throttled) + dcc_unthrottle (dcc); +} + +static void +dcc_remove_from_sum (struct DCC *dcc) +{ + if (dcc->dccstat != STAT_ACTIVE) + return; + if (dcc->type == TYPE_SEND) + dcc_sendcpssum -= dcc->cps; + else if (dcc->type == TYPE_RECV) + dcc_getcpssum -= dcc->cps; +} + +gboolean +is_dcc (struct DCC *dcc) +{ + GSList *list = dcc_list; + while (list) + { + if (list->data == dcc) + return TRUE; + list = list->next; + } + return FALSE; +} + +/* this is called from xchat.c:xchat_misc_checks() every 1 second. */ + +void +dcc_check_timeouts (void) +{ + struct DCC *dcc; + time_t tim = time (0); + GSList *next, *list = dcc_list; + + while (list) + { + dcc = (struct DCC *) list->data; + next = list->next; + + switch (dcc->dccstat) + { + case STAT_ACTIVE: + dcc_calc_cps (dcc); + fe_dcc_update (dcc); + + if (dcc->type == TYPE_SEND || dcc->type == TYPE_RECV) + { + if (prefs.dccstalltimeout > 0) + { + if (!dcc->throttled + && tim - dcc->lasttime > prefs.dccstalltimeout) + { + EMIT_SIGNAL (XP_TE_DCCSTALL, dcc->serv->front_session, + dcctypes[dcc->type], + file_part (dcc->file), dcc->nick, NULL, 0); + dcc_close (dcc, STAT_ABORTED, FALSE); + } + } + } + break; + case STAT_QUEUED: + if (dcc->type == TYPE_SEND || dcc->type == TYPE_CHATSEND) + { + if (tim - dcc->offertime > prefs.dcctimeout) + { + if (prefs.dcctimeout > 0) + { + EMIT_SIGNAL (XP_TE_DCCTOUT, dcc->serv->front_session, + dcctypes[dcc->type], + file_part (dcc->file), dcc->nick, NULL, 0); + dcc_close (dcc, STAT_ABORTED, FALSE); + } + } + } + break; + case STAT_DONE: + case STAT_FAILED: + case STAT_ABORTED: + if (prefs.dcc_remove) + dcc_close (dcc, 0, TRUE); + break; + } + list = next; + } +} + +static int +dcc_lookup_proxy (char *host, struct sockaddr_in *addr) +{ + struct hostent *h; + static char *cache_host = NULL; + static guint32 cache_addr; + + /* too lazy to thread this, so we cache results */ + if (cache_host) + { + if (strcmp (host, cache_host) == 0) + { + memcpy (&addr->sin_addr, &cache_addr, 4); + return TRUE; + } + free (cache_host); + cache_host = NULL; + } + + h = gethostbyname (host); + if (h != NULL && h->h_length == 4 && h->h_addr_list[0] != NULL) + { + memcpy (&addr->sin_addr, h->h_addr, 4); + memcpy (&cache_addr, h->h_addr, 4); + cache_host = strdup (host); + return TRUE; + } + + return FALSE; +} + +#define DCC_USE_PROXY() (prefs.proxy_host[0] && prefs.proxy_type>0 && prefs.proxy_type<5 && prefs.proxy_use!=1) + +static int +dcc_connect_sok (struct DCC *dcc) +{ + int sok; + struct sockaddr_in addr; + + sok = socket (AF_INET, SOCK_STREAM, 0); + if (sok == -1) + return -1; + + memset (&addr, 0, sizeof (addr)); + addr.sin_family = AF_INET; + if (DCC_USE_PROXY ()) + { + if (!dcc_lookup_proxy (prefs.proxy_host, &addr)) + { + closesocket (sok); + return -1; + } + addr.sin_port = htons (prefs.proxy_port); + } + else + { + addr.sin_port = htons (dcc->port); + addr.sin_addr.s_addr = htonl (dcc->addr); + } + + set_nonblocking (sok); + connect (sok, (struct sockaddr *) &addr, sizeof (addr)); + + return sok; +} + +static void +dcc_close (struct DCC *dcc, int dccstat, int destroy) +{ + if (dcc->wiotag) + { + fe_input_remove (dcc->wiotag); + dcc->wiotag = 0; + } + + if (dcc->iotag) + { + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + } + + if (dcc->sok != -1) + { + closesocket (dcc->sok); + dcc->sok = -1; + } + + dcc_remove_from_sum (dcc); + + if (dcc->fp != -1) + { + close (dcc->fp); + dcc->fp = -1; + + if(dccstat == STAT_DONE) + { + /* if we just completed a dcc recieve, move the */ + /* completed file to the completed directory */ + if(dcc->type == TYPE_RECV) + { + /* mgl: change this to use destfile_fs for correctness and to */ + /* handle the case where dccwithnick is set */ + move_file_utf8 (prefs.dccdir, prefs.dcc_completed_dir, + file_part (dcc->destfile), prefs.dccpermissions); + } + + } + } + + dcc->dccstat = dccstat; + if (dcc->dccchat) + { + free (dcc->dccchat); + dcc->dccchat = NULL; + } + + if (destroy) + { + dcc_list = g_slist_remove (dcc_list, dcc); + fe_dcc_remove (dcc); + if (dcc->proxy) + free (dcc->proxy); + if (dcc->file) + free (dcc->file); + if (dcc->destfile) + g_free (dcc->destfile); + if (dcc->destfile_fs) + g_free (dcc->destfile_fs); + free (dcc->nick); + free (dcc); + return; + } + + fe_dcc_update (dcc); +} + +void +dcc_abort (session *sess, struct DCC *dcc) +{ + if (dcc) + { + switch (dcc->dccstat) + { + case STAT_QUEUED: + case STAT_CONNECTING: + case STAT_ACTIVE: + dcc_close (dcc, STAT_ABORTED, FALSE); + switch (dcc->type) + { + case TYPE_CHATSEND: + case TYPE_CHATRECV: + EMIT_SIGNAL (XP_TE_DCCCHATABORT, sess, dcc->nick, NULL, NULL, + NULL, 0); + break; + case TYPE_SEND: + EMIT_SIGNAL (XP_TE_DCCSENDABORT, sess, dcc->nick, + file_part (dcc->file), NULL, NULL, 0); + break; + case TYPE_RECV: + EMIT_SIGNAL (XP_TE_DCCRECVABORT, sess, dcc->nick, + dcc->file, NULL, NULL, 0); + } + break; + default: + dcc_close (dcc, 0, TRUE); + } + } +} + +void +dcc_notify_kill (struct server *serv) +{ + struct server *replaceserv = 0; + struct DCC *dcc; + GSList *list = dcc_list; + if (serv_list) + replaceserv = (struct server *) serv_list->data; + while (list) + { + dcc = (struct DCC *) list->data; + if (dcc->serv == serv) + dcc->serv = replaceserv; + list = list->next; + } +} + +struct DCC * +dcc_write_chat (char *nick, char *text) +{ + struct DCC *dcc; + int len; + + dcc = find_dcc (nick, "", TYPE_CHATRECV); + if (!dcc) + dcc = find_dcc (nick, "", TYPE_CHATSEND); + if (dcc && dcc->dccstat == STAT_ACTIVE) + { + len = strlen (text); + tcp_send_real (NULL, dcc->sok, dcc->serv->encoding, dcc->serv->using_irc, + text, len); + send (dcc->sok, "\n", 1, 0); + dcc->size += len; + fe_dcc_update (dcc); + return dcc; + } + return 0; +} + +/* returns: 0 - ok + 1 - the dcc is closed! */ + +static int +dcc_chat_line (struct DCC *dcc, char *line) +{ + session *sess; + char *word[PDIWORDS]; + char *po; + char *utf; + char *conv; + int ret, i; + int len; + gsize utf_len; + char portbuf[32]; + + len = strlen (line); + if (dcc->serv->using_cp1255) + len++; /* include the NUL terminator */ + + if (dcc->serv->using_irc) /* using "IRC" encoding (CP1252/UTF-8 hybrid) */ + utf = NULL; + else if (dcc->serv->encoding == NULL) /* system */ + utf = g_locale_to_utf8 (line, len, NULL, &utf_len, NULL); + else + utf = g_convert (line, len, "UTF-8", dcc->serv->encoding, 0, &utf_len, 0); + + if (utf) + { + line = utf; + len = utf_len; + } + + if (dcc->serv->using_cp1255 && len > 0) + len--; + + /* we really need valid UTF-8 now */ + conv = text_validate (&line, &len); + + sess = find_dialog (dcc->serv, dcc->nick); + if (!sess) + sess = dcc->serv->front_session; + + sprintf (portbuf, "%d", dcc->port); + + word[0] = "DCC Chat Text"; + word[1] = net_ip (dcc->addr); + word[2] = portbuf; + word[3] = dcc->nick; + word[4] = line; + for (i = 5; i < PDIWORDS; i++) + word[i] = "\000"; + + ret = plugin_emit_print (sess, word); + + /* did the plugin close it? */ + if (!g_slist_find (dcc_list, dcc)) + { + if (utf) + g_free (utf); + if (conv) + g_free (conv); + return 1; + } + + /* did the plugin eat the event? */ + if (ret) + { + if (utf) + g_free (utf); + if (conv) + g_free (conv); + return 0; + } + + url_check_line (line, len); + + if (line[0] == 1 && !strncasecmp (line + 1, "ACTION", 6)) + { + po = strchr (line + 8, '\001'); + if (po) + po[0] = 0; + inbound_action (sess, dcc->serv->nick, dcc->nick, "", line + 8, FALSE, FALSE); + } else + { + inbound_privmsg (dcc->serv, dcc->nick, "", line, FALSE); + } + if (utf) + g_free (utf); + if (conv) + g_free (conv); + return 0; +} + +static gboolean +dcc_read_chat (GIOChannel *source, GIOCondition condition, struct DCC *dcc) +{ + int i, len, dead; + char portbuf[32]; + char lbuf[2050]; + + while (1) + { + if (dcc->throttled) + { + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + return FALSE; + } + + if (!dcc->iotag) + dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, dcc_read_chat, dcc); + + len = recv (dcc->sok, lbuf, sizeof (lbuf) - 2, 0); + if (len < 1) + { + if (len < 0) + { + if (would_block ()) + return TRUE; + } + sprintf (portbuf, "%d", dcc->port); + EMIT_SIGNAL (XP_TE_DCCCHATF, dcc->serv->front_session, dcc->nick, + net_ip (dcc->addr), portbuf, + errorstring ((len < 0) ? sock_error () : 0), 0); + dcc_close (dcc, STAT_FAILED, FALSE); + return TRUE; + } + i = 0; + lbuf[len] = 0; + while (i < len) + { + switch (lbuf[i]) + { + case '\r': + break; + case '\n': + dcc->dccchat->linebuf[dcc->dccchat->pos] = 0; + dead = dcc_chat_line (dcc, dcc->dccchat->linebuf); + + if (dead || !dcc->dccchat) /* the dcc has been closed, don't use (DCC *)! */ + return TRUE; + + dcc->pos += dcc->dccchat->pos; + dcc->dccchat->pos = 0; + fe_dcc_update (dcc); + break; + default: + dcc->dccchat->linebuf[dcc->dccchat->pos] = lbuf[i]; + if (dcc->dccchat->pos < (sizeof (dcc->dccchat->linebuf) - 1)) + dcc->dccchat->pos++; + } + i++; + } + } +} + +static void +dcc_calc_average_cps (struct DCC *dcc) +{ + time_t sec; + + sec = time (0) - dcc->starttime; + if (sec < 1) + sec = 1; + if (dcc->type == TYPE_SEND) + dcc->cps = (dcc->ack - dcc->resumable) / sec; + else + dcc->cps = (dcc->pos - dcc->resumable) / sec; +} + +static void +dcc_send_ack (struct DCC *dcc) +{ + /* send in 32-bit big endian */ + guint32 pos = htonl (dcc->pos & 0xffffffff); + send (dcc->sok, (char *) &pos, 4, 0); +} + +static gboolean +dcc_read (GIOChannel *source, GIOCondition condition, struct DCC *dcc) +{ + char *old; + char buf[4096]; + int n; + gboolean need_ack = FALSE; + + if (dcc->fp == -1) + { + + /* try to create the download dir (even if it exists, no harm) */ + mkdir_utf8 (prefs.dccdir); + + if (dcc->resumable) + { + dcc->fp = open (dcc->destfile_fs, O_WRONLY | O_APPEND | OFLAGS); + dcc->pos = dcc->resumable; + dcc->ack = dcc->resumable; + } else + { + if (access (dcc->destfile_fs, F_OK) == 0) + { + n = 0; + do + { + n++; + snprintf (buf, sizeof (buf), "%s.%d", dcc->destfile_fs, n); + } + while (access (buf, F_OK) == 0); + + g_free (dcc->destfile_fs); + dcc->destfile_fs = g_strdup (buf); + + old = dcc->destfile; + dcc->destfile = xchat_filename_to_utf8 (buf, -1, 0, 0, 0); + + EMIT_SIGNAL (XP_TE_DCCRENAME, dcc->serv->front_session, + old, dcc->destfile, NULL, NULL, 0); + g_free (old); + } + dcc->fp = + open (dcc->destfile_fs, OFLAGS | O_TRUNC | O_WRONLY | O_CREAT, + prefs.dccpermissions); + } + } + if (dcc->fp == -1) + { + /* the last executed function is open(), errno should be valid */ + EMIT_SIGNAL (XP_TE_DCCFILEERR, dcc->serv->front_session, dcc->destfile, + errorstring (errno), NULL, NULL, 0); + dcc_close (dcc, STAT_FAILED, FALSE); + return TRUE; + } + while (1) + { + if (dcc->throttled) + { + if (need_ack) + dcc_send_ack (dcc); + + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + return FALSE; + } + + if (!dcc->iotag) + dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, dcc_read, dcc); + + n = recv (dcc->sok, buf, sizeof (buf), 0); + if (n < 1) + { + if (n < 0) + { + if (would_block ()) + { + if (need_ack) + dcc_send_ack (dcc); + return TRUE; + } + } + EMIT_SIGNAL (XP_TE_DCCRECVERR, dcc->serv->front_session, dcc->file, + dcc->destfile, dcc->nick, + errorstring ((n < 0) ? sock_error () : 0), 0); + /* send ack here? but the socket is dead */ + /*if (need_ack) + dcc_send_ack (dcc);*/ + dcc_close (dcc, STAT_FAILED, FALSE); + return TRUE; + } + + if (write (dcc->fp, buf, n) == -1) /* could be out of hdd space */ + { + EMIT_SIGNAL (XP_TE_DCCRECVERR, dcc->serv->front_session, dcc->file, + dcc->destfile, dcc->nick, errorstring (errno), 0); + if (need_ack) + dcc_send_ack (dcc); + dcc_close (dcc, STAT_FAILED, FALSE); + return TRUE; + } + + dcc->lasttime = time (0); + dcc->pos += n; + need_ack = TRUE; /* send ack when we're done recv()ing */ + + if (dcc->pos >= dcc->size) + { + dcc_send_ack (dcc); + dcc_close (dcc, STAT_DONE, FALSE); + dcc_calc_average_cps (dcc); /* this must be done _after_ dcc_close, or dcc_remove_from_sum will see the wrong value in dcc->cps */ + sprintf (buf, "%d", dcc->cps); + EMIT_SIGNAL (XP_TE_DCCRECVCOMP, dcc->serv->front_session, + dcc->file, dcc->destfile, dcc->nick, buf, 0); + return TRUE; + } + } +} + +static void +dcc_open_query (server *serv, char *nick) +{ + if (prefs.autodialog) + open_query (serv, nick, FALSE); +} + +static gboolean +dcc_did_connect (GIOChannel *source, GIOCondition condition, struct DCC *dcc) +{ + int er; + struct sockaddr_in addr; + +#ifdef WIN32 + if (condition & G_IO_ERR) + { + int len; + + /* find the last errno for this socket */ + len = sizeof (er); + getsockopt (dcc->sok, SOL_SOCKET, SO_ERROR, (char *)&er, &len); + EMIT_SIGNAL (XP_TE_DCCCONFAIL, dcc->serv->front_session, + dcctypes[dcc->type], dcc->nick, errorstring (er), + NULL, 0); + dcc->dccstat = STAT_FAILED; + fe_dcc_update (dcc); + return FALSE; + } + +#else + memset (&addr, 0, sizeof (addr)); + addr.sin_port = htons (dcc->port); + addr.sin_family = AF_INET; + addr.sin_addr.s_addr = htonl (dcc->addr); + + /* check if it's already connected; This always fails on winXP */ + if (connect (dcc->sok, (struct sockaddr *) &addr, sizeof (addr)) != 0) + { + er = sock_error (); + if (er != EISCONN) + { + EMIT_SIGNAL (XP_TE_DCCCONFAIL, dcc->serv->front_session, + dcctypes[dcc->type], dcc->nick, errorstring (er), + NULL, 0); + dcc->dccstat = STAT_FAILED; + fe_dcc_update (dcc); + return FALSE; + } + } +#endif + + return TRUE; +} + +static gboolean +dcc_connect_finished (GIOChannel *source, GIOCondition condition, struct DCC *dcc) +{ + char host[128]; + + if (dcc->iotag) + { + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + } + + if (!dcc_did_connect (source, condition, dcc)) + return TRUE; + + dcc->dccstat = STAT_ACTIVE; + snprintf (host, sizeof host, "%s:%d", net_ip (dcc->addr), dcc->port); + + switch (dcc->type) + { + case TYPE_RECV: + dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, dcc_read, dcc); + EMIT_SIGNAL (XP_TE_DCCCONRECV, dcc->serv->front_session, + dcc->nick, host, dcc->file, NULL, 0); + break; + case TYPE_SEND: + /* passive send */ + dcc->fastsend = prefs.fastdccsend; + if (dcc->fastsend) + dcc->wiotag = fe_input_add (dcc->sok, FIA_WRITE, dcc_send_data, dcc); + dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, dcc_read_ack, dcc); + dcc_send_data (NULL, 0, (gpointer)dcc); + EMIT_SIGNAL (XP_TE_DCCCONSEND, dcc->serv->front_session, + dcc->nick, host, dcc->file, NULL, 0); + break; + case TYPE_CHATSEND: /* pchat */ + dcc_open_query (dcc->serv, dcc->nick); + case TYPE_CHATRECV: /* normal chat */ + dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, dcc_read_chat, dcc); + dcc->dccchat = malloc (sizeof (struct dcc_chat)); + dcc->dccchat->pos = 0; + EMIT_SIGNAL (XP_TE_DCCCONCHAT, dcc->serv->front_session, + dcc->nick, host, NULL, NULL, 0); + break; + } + dcc->starttime = time (0); + dcc->lasttime = dcc->starttime; + fe_dcc_update (dcc); + + return TRUE; +} + +static gboolean +read_proxy (struct DCC *dcc) +{ + struct proxy_state *proxy = dcc->proxy; + while (proxy->bufferused < proxy->buffersize) + { + int ret = recv (dcc->sok, &proxy->buffer[proxy->bufferused], + proxy->buffersize - proxy->bufferused, 0); + if (ret > 0) + proxy->bufferused += ret; + else + { + if (would_block ()) + return FALSE; + else + { + dcc->dccstat = STAT_FAILED; + fe_dcc_update (dcc); + if (dcc->iotag) + { + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + } + return FALSE; + } + } + } + return TRUE; +} + +static gboolean +write_proxy (struct DCC *dcc) +{ + struct proxy_state *proxy = dcc->proxy; + while (proxy->bufferused < proxy->buffersize) + { + int ret = send (dcc->sok, &proxy->buffer[proxy->bufferused], + proxy->buffersize - proxy->bufferused, 0); + if (ret >= 0) + proxy->bufferused += ret; + else + { + if (would_block ()) + return FALSE; + else + { + dcc->dccstat = STAT_FAILED; + fe_dcc_update (dcc); + if (dcc->wiotag) + { + fe_input_remove (dcc->wiotag); + dcc->wiotag = 0; + } + return FALSE; + } + } + } + return TRUE; +} + +static gboolean +proxy_read_line (struct DCC *dcc) +{ + struct proxy_state *proxy = dcc->proxy; + while (1) + { + proxy->buffersize = proxy->bufferused + 1; + if (!read_proxy (dcc)) + return FALSE; + if (proxy->buffer[proxy->bufferused - 1] == '\n' + || proxy->bufferused == MAX_PROXY_BUFFER) + { + proxy->buffer[proxy->bufferused - 1] = 0; + return TRUE; + } + } +} + +static gboolean +dcc_wingate_proxy_traverse (GIOChannel *source, GIOCondition condition, struct DCC *dcc) +{ + struct proxy_state *proxy = dcc->proxy; + if (proxy->phase == 0) + { + proxy->buffersize = snprintf ((char*) proxy->buffer, MAX_PROXY_BUFFER, + "%s %d\r\n", net_ip(dcc->addr), + dcc->port); + proxy->bufferused = 0; + dcc->wiotag = fe_input_add (dcc->sok, FIA_WRITE|FIA_EX, + dcc_wingate_proxy_traverse, dcc); + ++proxy->phase; + } + if (proxy->phase == 1) + { + if (!read_proxy (dcc)) + return TRUE; + fe_input_remove (dcc->wiotag); + dcc->wiotag = 0; + dcc_connect_finished (source, 0, dcc); + } + return TRUE; +} + +struct sock_connect +{ + char version; + char type; + guint16 port; + guint32 address; + char username[10]; +}; +static gboolean +dcc_socks_proxy_traverse (GIOChannel *source, GIOCondition condition, struct DCC *dcc) +{ + struct proxy_state *proxy = dcc->proxy; + + if (proxy->phase == 0) + { + struct sock_connect sc; + sc.version = 4; + sc.type = 1; + sc.port = htons (dcc->port); + sc.address = htonl (dcc->addr); + strncpy (sc.username, prefs.username, 9); + memcpy (proxy->buffer, &sc, sizeof (sc)); + proxy->buffersize = 8 + strlen (sc.username) + 1; + proxy->bufferused = 0; + dcc->wiotag = fe_input_add (dcc->sok, FIA_WRITE|FIA_EX, + dcc_socks_proxy_traverse, dcc); + ++proxy->phase; + } + + if (proxy->phase == 1) + { + if (!write_proxy (dcc)) + return TRUE; + fe_input_remove (dcc->wiotag); + dcc->wiotag = 0; + proxy->bufferused = 0; + proxy->buffersize = 8; + dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, + dcc_socks_proxy_traverse, dcc); + ++proxy->phase; + } + + if (proxy->phase == 2) + { + if (!read_proxy (dcc)) + return TRUE; + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + if (proxy->buffer[1] == 90) + dcc_connect_finished (source, 0, dcc); + else + { + dcc->dccstat = STAT_FAILED; + fe_dcc_update (dcc); + } + } + + return TRUE; +} + +struct sock5_connect1 +{ + char version; + char nmethods; + char method; +}; +static gboolean +dcc_socks5_proxy_traverse (GIOChannel *source, GIOCondition condition, struct DCC *dcc) +{ + struct proxy_state *proxy = dcc->proxy; + int auth = prefs.proxy_auth && prefs.proxy_user[0] && prefs.proxy_pass[0]; + + if (proxy->phase == 0) + { + struct sock5_connect1 sc1; + + sc1.version = 5; + sc1.nmethods = 1; + sc1.method = 0; + if (auth) + sc1.method = 2; + memcpy (proxy->buffer, &sc1, 3); + proxy->buffersize = 3; + proxy->bufferused = 0; + dcc->wiotag = fe_input_add (dcc->sok, FIA_WRITE|FIA_EX, + dcc_socks5_proxy_traverse, dcc); + ++proxy->phase; + } + + if (proxy->phase == 1) + { + if (!write_proxy (dcc)) + return TRUE; + fe_input_remove (dcc->wiotag); + dcc->wiotag = 0; + proxy->bufferused = 0; + proxy->buffersize = 2; + dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, + dcc_socks5_proxy_traverse, dcc); + ++proxy->phase; + } + + if (proxy->phase == 2) + { + if (!read_proxy (dcc)) + return TRUE; + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + + /* did the server say no auth required? */ + if (proxy->buffer[0] == 5 && proxy->buffer[1] == 0) + auth = 0; + + /* Set up authentication I/O */ + if (auth) + { + int len_u=0, len_p=0; + + /* authentication sub-negotiation (RFC1929) */ + if ( proxy->buffer[0] != 5 || proxy->buffer[1] != 2 ) /* UPA not supported by server */ + { + PrintText (dcc->serv->front_session, "SOCKS\tServer doesn't support UPA authentication.\n"); + dcc->dccstat = STAT_FAILED; + fe_dcc_update (dcc); + return TRUE; + } + + memset (proxy->buffer, 0, MAX_PROXY_BUFFER); + + /* form the UPA request */ + len_u = strlen (prefs.proxy_user); + len_p = strlen (prefs.proxy_pass); + proxy->buffer[0] = 1; + proxy->buffer[1] = len_u; + memcpy (proxy->buffer + 2, prefs.proxy_user, len_u); + proxy->buffer[2 + len_u] = len_p; + memcpy (proxy->buffer + 3 + len_u, prefs.proxy_pass, len_p); + + proxy->buffersize = 3 + len_u + len_p; + proxy->bufferused = 0; + dcc->wiotag = fe_input_add (dcc->sok, FIA_WRITE|FIA_EX, + dcc_socks5_proxy_traverse, dcc); + ++proxy->phase; + } + else + { + if (proxy->buffer[0] != 5 || proxy->buffer[1] != 0) + { + PrintText (dcc->serv->front_session, "SOCKS\tAuthentication required but disabled in settings.\n"); + dcc->dccstat = STAT_FAILED; + fe_dcc_update (dcc); + return TRUE; + } + proxy->phase += 2; + } + } + + if (proxy->phase == 3) + { + if (!write_proxy (dcc)) + return TRUE; + fe_input_remove (dcc->wiotag); + dcc->wiotag = 0; + proxy->buffersize = 2; + proxy->bufferused = 0; + dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, + dcc_socks5_proxy_traverse, dcc); + ++proxy->phase; + } + + if (proxy->phase == 4) + { + if (!read_proxy (dcc)) + return TRUE; + if (dcc->iotag) + { + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + } + if (proxy->buffer[1] != 0) + { + PrintText (dcc->serv->front_session, "SOCKS\tAuthentication failed. " + "Is username and password correct?\n"); + dcc->dccstat = STAT_FAILED; + fe_dcc_update (dcc); + return TRUE; + } + ++proxy->phase; + } + + if (proxy->phase == 5) + { + proxy->buffer[0] = 5; /* version (socks 5) */ + proxy->buffer[1] = 1; /* command (connect) */ + proxy->buffer[2] = 0; /* reserved */ + proxy->buffer[3] = 1; /* address type (IPv4) */ + proxy->buffer[4] = (dcc->addr >> 24) & 0xFF; /* IP address */ + proxy->buffer[5] = (dcc->addr >> 16) & 0xFF; + proxy->buffer[6] = (dcc->addr >> 8) & 0xFF; + proxy->buffer[7] = (dcc->addr & 0xFF); + proxy->buffer[8] = (dcc->port >> 8) & 0xFF; /* port */ + proxy->buffer[9] = (dcc->port & 0xFF); + proxy->buffersize = 10; + proxy->bufferused = 0; + dcc->wiotag = fe_input_add (dcc->sok, FIA_WRITE|FIA_EX, + dcc_socks5_proxy_traverse, dcc); + ++proxy->phase; + } + + if (proxy->phase == 6) + { + if (!write_proxy (dcc)) + return TRUE; + fe_input_remove (dcc->wiotag); + dcc->wiotag = 0; + proxy->buffersize = 4; + proxy->bufferused = 0; + dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, + dcc_socks5_proxy_traverse, dcc); + ++proxy->phase; + } + + if (proxy->phase == 7) + { + if (!read_proxy (dcc)) + return TRUE; + if (proxy->buffer[0] != 5 || proxy->buffer[1] != 0) + { + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + if (proxy->buffer[1] == 2) + PrintText (dcc->serv->front_session, "SOCKS\tProxy refused to connect to host (not allowed).\n"); + else + PrintTextf (dcc->serv->front_session, "SOCKS\tProxy failed to connect to host (error %d).\n", proxy->buffer[1]); + dcc->dccstat = STAT_FAILED; + fe_dcc_update (dcc); + return TRUE; + } + switch (proxy->buffer[3]) + { + case 1: proxy->buffersize += 6; break; + case 3: proxy->buffersize += 1; break; + case 4: proxy->buffersize += 18; break; + }; + ++proxy->phase; + } + + if (proxy->phase == 8) + { + if (!read_proxy (dcc)) + return TRUE; + /* handle domain name case */ + if (proxy->buffer[3] == 3) + { + proxy->buffersize = 5 + proxy->buffer[4] + 2; + } + /* everything done? */ + if (proxy->bufferused == proxy->buffersize) + { + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + dcc_connect_finished (source, 0, dcc); + } + } + return TRUE; +} + +static gboolean +dcc_http_proxy_traverse (GIOChannel *source, GIOCondition condition, struct DCC *dcc) +{ + struct proxy_state *proxy = dcc->proxy; + + if (proxy->phase == 0) + { + char buf[256]; + char auth_data[128]; + char auth_data2[68]; + int n, n2; + + n = snprintf (buf, sizeof (buf), "CONNECT %s:%d HTTP/1.0\r\n", + net_ip(dcc->addr), dcc->port); + if (prefs.proxy_auth) + { + n2 = snprintf (auth_data2, sizeof (auth_data2), "%s:%s", + prefs.proxy_user, prefs.proxy_pass); + base64_encode (auth_data, auth_data2, n2); + n += snprintf (buf+n, sizeof (buf)-n, "Proxy-Authorization: Basic %s\r\n", auth_data); + } + n += snprintf (buf+n, sizeof (buf)-n, "\r\n"); + proxy->buffersize = n; + proxy->bufferused = 0; + memcpy (proxy->buffer, buf, proxy->buffersize); + dcc->wiotag = fe_input_add (dcc->sok, FIA_WRITE|FIA_EX, + dcc_http_proxy_traverse, dcc); + ++proxy->phase; + } + + if (proxy->phase == 1) + { + if (!write_proxy (dcc)) + return TRUE; + fe_input_remove (dcc->wiotag); + dcc->wiotag = 0; + proxy->bufferused = 0; + dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, + dcc_http_proxy_traverse, dcc); + ++proxy->phase; + } + + if (proxy->phase == 2) + { + if (!proxy_read_line (dcc)) + return TRUE; + /* "HTTP/1.0 200 OK" */ + if (proxy->bufferused < 12 || + memcmp (proxy->buffer, "HTTP/", 5) || memcmp (proxy->buffer + 9, "200", 3)) + { + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + PrintText (dcc->serv->front_session, proxy->buffer); + dcc->dccstat = STAT_FAILED; + fe_dcc_update (dcc); + return TRUE; + } + proxy->bufferused = 0; + ++proxy->phase; + } + + if (proxy->phase == 3) + { + while (1) + { + /* read until blank line */ + if (proxy_read_line (dcc)) + { + if (proxy->bufferused < 1 || + (proxy->bufferused == 2 && proxy->buffer[0] == '\r')) + { + break; + } + if (proxy->bufferused > 1) + PrintText (dcc->serv->front_session, proxy->buffer); + proxy->bufferused = 0; + } + else + return TRUE; + } + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + dcc_connect_finished (source, 0, dcc); + } + + return TRUE; +} + +static gboolean +dcc_proxy_connect (GIOChannel *source, GIOCondition condition, struct DCC *dcc) +{ + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + + if (!dcc_did_connect (source, condition, dcc)) + return TRUE; + + dcc->proxy = malloc (sizeof (struct proxy_state)); + if (!dcc->proxy) + { + dcc->dccstat = STAT_FAILED; + fe_dcc_update (dcc); + return TRUE; + } + memset (dcc->proxy, 0, sizeof (struct proxy_state)); + + switch (prefs.proxy_type) + { + case 1: return dcc_wingate_proxy_traverse (source, condition, dcc); + case 2: return dcc_socks_proxy_traverse (source, condition, dcc); + case 3: return dcc_socks5_proxy_traverse (source, condition, dcc); + case 4: return dcc_http_proxy_traverse (source, condition, dcc); + } + return TRUE; +} + +static int dcc_listen_init (struct DCC *, struct session *); + +static void +dcc_connect (struct DCC *dcc) +{ + int ret; + char tbuf[400]; + + if (dcc->dccstat == STAT_CONNECTING) + return; + dcc->dccstat = STAT_CONNECTING; + + if (dcc->pasvid && dcc->port == 0) + { + /* accepted a passive dcc send */ + ret = dcc_listen_init (dcc, dcc->serv->front_session); + if (!ret) + { + dcc_close (dcc, STAT_FAILED, FALSE); + return; + } + /* possible problems with filenames containing spaces? */ + if (dcc->type == TYPE_RECV) + snprintf (tbuf, sizeof (tbuf), strchr (dcc->file, ' ') ? + "DCC SEND \"%s\" %u %d %"DCC_SFMT" %d" : + "DCC SEND %s %u %d %"DCC_SFMT" %d", dcc->file, + dcc->addr, dcc->port, dcc->size, dcc->pasvid); + else + snprintf (tbuf, sizeof (tbuf), "DCC CHAT chat %u %d %d", + dcc->addr, dcc->port, dcc->pasvid); + dcc->serv->p_ctcp (dcc->serv, dcc->nick, tbuf); + } + else + { + dcc->sok = dcc_connect_sok (dcc); + if (dcc->sok == -1) + { + dcc->dccstat = STAT_FAILED; + fe_dcc_update (dcc); + return; + } + if (DCC_USE_PROXY ()) + dcc->iotag = fe_input_add (dcc->sok, FIA_WRITE|FIA_EX, dcc_proxy_connect, dcc); + else + dcc->iotag = fe_input_add (dcc->sok, FIA_WRITE|FIA_EX, dcc_connect_finished, dcc); + } + + fe_dcc_update (dcc); +} + +static gboolean +dcc_send_data (GIOChannel *source, GIOCondition condition, struct DCC *dcc) +{ + char *buf; + int len, sent, sok = dcc->sok; + + if (prefs.dcc_blocksize < 1) /* this is too little! */ + prefs.dcc_blocksize = 1024; + + if (prefs.dcc_blocksize > 102400) /* this is too much! */ + prefs.dcc_blocksize = 102400; + + if (dcc->throttled) + { + fe_input_remove (dcc->wiotag); + dcc->wiotag = 0; + return FALSE; + } + + if (!dcc->fastsend) + { + if (dcc->ack < dcc->pos) + return TRUE; + } + else if (!dcc->wiotag) + dcc->wiotag = fe_input_add (sok, FIA_WRITE, dcc_send_data, dcc); + + buf = malloc (prefs.dcc_blocksize); + if (!buf) + return TRUE; + + lseek (dcc->fp, dcc->pos, SEEK_SET); + len = read (dcc->fp, buf, prefs.dcc_blocksize); + if (len < 1) + goto abortit; + sent = send (sok, buf, len, 0); + + if (sent < 0 && !(would_block ())) + { +abortit: + free (buf); + EMIT_SIGNAL (XP_TE_DCCSENDFAIL, dcc->serv->front_session, + file_part (dcc->file), dcc->nick, + errorstring (sock_error ()), NULL, 0); + dcc_close (dcc, STAT_FAILED, FALSE); + return TRUE; + } + if (sent > 0) + { + dcc->pos += sent; + dcc->lasttime = time (0); + } + + /* have we sent it all yet? */ + if (dcc->pos >= dcc->size) + { + /* it's all sent now, so remove the WRITE/SEND handler */ + if (dcc->wiotag) + { + fe_input_remove (dcc->wiotag); + dcc->wiotag = 0; + } + } + + free (buf); + + return TRUE; +} + +static gboolean +dcc_handle_new_ack (struct DCC *dcc) +{ + guint32 ack; + char buf[16]; + gboolean done = FALSE; + + memcpy (&ack, dcc->ack_buf, 4); + dcc->ack = ntohl (ack); + + /* this could mess up when xfering >32bit files */ + if (dcc->size <= 0xffffffff) + { + /* fix for BitchX */ + if (dcc->ack < dcc->resumable) + dcc->ackoffset = TRUE; + if (dcc->ackoffset) + dcc->ack += dcc->resumable; + } + + /* DCC complete check */ + if (dcc->pos >= dcc->size && dcc->ack >= (dcc->size & 0xffffffff)) + { + dcc->ack = dcc->size; /* force 100% ack for >4 GB */ + dcc_close (dcc, STAT_DONE, FALSE); + dcc_calc_average_cps (dcc); /* this must be done _after_ dcc_close, or dcc_remove_from_sum will see the wrong value in dcc->cps */ + sprintf (buf, "%d", dcc->cps); + EMIT_SIGNAL (XP_TE_DCCSENDCOMP, dcc->serv->front_session, + file_part (dcc->file), dcc->nick, buf, NULL, 0); + done = TRUE; + } + else if ((!dcc->fastsend) && (dcc->ack >= (dcc->pos & 0xffffffff))) + { + dcc_send_data (NULL, 0, (gpointer)dcc); + } + +#ifdef USE_DCC64 + /* take the top 32 of "bytes send" and bottom 32 of "ack" */ + dcc->ack = (dcc->pos & G_GINT64_CONSTANT (0xffffffff00000000)) | + (dcc->ack & 0xffffffff); + /* dcc->ack is only used for CPS and PERCENTAGE calcs from now on... */ +#endif + + return done; +} + +static gboolean +dcc_read_ack (GIOChannel *source, GIOCondition condition, struct DCC *dcc) +{ + int len; + + while (1) + { + /* try to fill up 4 bytes */ + len = recv (dcc->sok, dcc->ack_buf, 4 - dcc->ack_pos, 0); + if (len < 1) + { + if (len < 0) + { + if (would_block ()) /* ok - keep waiting */ + return TRUE; + } + EMIT_SIGNAL (XP_TE_DCCSENDFAIL, dcc->serv->front_session, + file_part (dcc->file), dcc->nick, + errorstring ((len < 0) ? sock_error () : 0), NULL, 0); + dcc_close (dcc, STAT_FAILED, FALSE); + return TRUE; + } + + dcc->ack_pos += len; + if (dcc->ack_pos >= 4) + { + dcc->ack_pos = 0; + if (dcc_handle_new_ack (dcc)) + return TRUE; + } + /* loop again until would_block() returns true */ + } +} + +static gboolean +dcc_accept (GIOChannel *source, GIOCondition condition, struct DCC *dcc) +{ + char host[128]; + struct sockaddr_in CAddr; + int sok; + socklen_t len; + + len = sizeof (CAddr); + sok = accept (dcc->sok, (struct sockaddr *) &CAddr, &len); + fe_input_remove (dcc->iotag); + dcc->iotag = 0; + closesocket (dcc->sok); + if (sok < 0) + { + dcc->sok = -1; + dcc_close (dcc, STAT_FAILED, FALSE); + return TRUE; + } + set_nonblocking (sok); + dcc->sok = sok; + dcc->addr = ntohl (CAddr.sin_addr.s_addr); + + if (dcc->pasvid) + return dcc_connect_finished (NULL, 0, dcc); + + dcc->dccstat = STAT_ACTIVE; + dcc->lasttime = dcc->starttime = time (0); + dcc->fastsend = prefs.fastdccsend; + + snprintf (host, sizeof (host), "%s:%d", net_ip (dcc->addr), dcc->port); + + switch (dcc->type) + { + case TYPE_SEND: + if (dcc->fastsend) + dcc->wiotag = fe_input_add (sok, FIA_WRITE, dcc_send_data, dcc); + dcc->iotag = fe_input_add (sok, FIA_READ|FIA_EX, dcc_read_ack, dcc); + dcc_send_data (NULL, 0, (gpointer)dcc); + EMIT_SIGNAL (XP_TE_DCCCONSEND, dcc->serv->front_session, + dcc->nick, host, dcc->file, NULL, 0); + break; + + case TYPE_CHATSEND: + dcc_open_query (dcc->serv, dcc->nick); + dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, dcc_read_chat, dcc); + dcc->dccchat = malloc (sizeof (struct dcc_chat)); + dcc->dccchat->pos = 0; + EMIT_SIGNAL (XP_TE_DCCCONCHAT, dcc->serv->front_session, + dcc->nick, host, NULL, NULL, 0); + break; + } + + fe_dcc_update (dcc); + + return TRUE; +} + +guint32 +dcc_get_my_address (void) /* the address we'll tell the other person */ +{ + struct hostent *dns_query; + guint32 addr = 0; + + if (prefs.ip_from_server && prefs.dcc_ip) + addr = prefs.dcc_ip; + else if (prefs.dcc_ip_str[0]) + { + dns_query = gethostbyname ((const char *) prefs.dcc_ip_str); + + if (dns_query != NULL && + dns_query->h_length == 4 && + dns_query->h_addr_list[0] != NULL) + { + /*we're offered at least one IPv4 address: we take the first*/ + addr = *((guint32*) dns_query->h_addr_list[0]); + } + } + + return addr; +} + +static int +dcc_listen_init (struct DCC *dcc, session *sess) +{ + guint32 my_addr; + struct sockaddr_in SAddr; + int i, bindretval = -1; + socklen_t len; + + dcc->sok = socket (AF_INET, SOCK_STREAM, 0); + if (dcc->sok == -1) + return FALSE; + + memset (&SAddr, 0, sizeof (struct sockaddr_in)); + + len = sizeof (SAddr); + getsockname (dcc->serv->sok, (struct sockaddr *) &SAddr, &len); + + SAddr.sin_family = AF_INET; + + /*if local_ip is specified use that*/ + if (prefs.local_ip != 0xffffffff) + { + my_addr = prefs.local_ip; + SAddr.sin_addr.s_addr = prefs.local_ip; + } + /*otherwise use the default*/ + else + my_addr = SAddr.sin_addr.s_addr; + + /*if we have a valid portrange try to use that*/ + if (prefs.first_dcc_send_port > 0) + { + SAddr.sin_port = 0; + i = 0; + while ((prefs.last_dcc_send_port > ntohs(SAddr.sin_port)) && + (bindretval == -1)) + { + SAddr.sin_port = htons (prefs.first_dcc_send_port + i); + i++; + /*printf("Trying to bind against port: %d\n",ntohs(SAddr.sin_port));*/ + bindretval = bind (dcc->sok, (struct sockaddr *) &SAddr, sizeof (SAddr)); + } + + /* with a small port range, reUseAddr is needed */ + len = 1; + setsockopt (dcc->sok, SOL_SOCKET, SO_REUSEADDR, (char *) &len, sizeof (len)); + + } else + { + /* try random port */ + SAddr.sin_port = 0; + bindretval = bind (dcc->sok, (struct sockaddr *) &SAddr, sizeof (SAddr)); + } + + if (bindretval == -1) + { + /* failed to bind */ + PrintText (sess, "Failed to bind to any address or port.\n"); + return FALSE; + } + + len = sizeof (SAddr); + getsockname (dcc->sok, (struct sockaddr *) &SAddr, &len); + + dcc->port = ntohs (SAddr.sin_port); + + /*if we have a dcc_ip, we use that, so the remote client can connect*/ + /*else we try to take an address from dcc_ip_str*/ + /*if something goes wrong we tell the client to connect to our LAN ip*/ + dcc->addr = dcc_get_my_address (); + + /*if nothing else worked we use the address we bound to*/ + if (dcc->addr == 0) + dcc->addr = my_addr; + + dcc->addr = ntohl (dcc->addr); + + set_nonblocking (dcc->sok); + listen (dcc->sok, 1); + set_blocking (dcc->sok); + + dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, dcc_accept, dcc); + + return TRUE; +} + +static struct session *dccsess; +static char *dccto; /* lame!! */ +static int dccmaxcps; +static int recursive = FALSE; + +static void +dcc_send_wild (char *file) +{ + dcc_send (dccsess, dccto, file, dccmaxcps, 0); +} + +void +dcc_send (struct session *sess, char *to, char *file, int maxcps, int passive) +{ + char outbuf[512]; + struct stat st; + struct DCC *dcc; + char *file_fs; + + /* this is utf8 */ + file = expand_homedir (file); + + if (!recursive && (strchr (file, '*') || strchr (file, '?'))) + { + char path[256]; + char wild[256]; + char *path_fs; /* local filesystem encoding */ + + safe_strcpy (wild, file_part (file), sizeof (wild)); + path_part (file, path, sizeof (path)); + if (path[0] != '/' || path[1] != '\0') + path[strlen (path) - 1] = 0; /* remove trailing slash */ + + dccsess = sess; + dccto = to; + dccmaxcps = maxcps; + + free (file); + + /* for_files() will use opendir, so we need local FS encoding */ + path_fs = xchat_filename_from_utf8 (path, -1, 0, 0, 0); + if (path_fs) + { + recursive = TRUE; + for_files (path_fs, wild, dcc_send_wild); + recursive = FALSE; + g_free (path_fs); + } + + return; + } + + dcc = new_dcc (); + if (!dcc) + return; + dcc->file = file; + dcc->maxcps = maxcps; + + /* get the local filesystem encoding */ + file_fs = xchat_filename_from_utf8 (file, -1, 0, 0, 0); + + if (stat (file_fs, &st) != -1) + { + +#ifndef USE_DCC64 + if (sizeof (st.st_size) > 4 && st.st_size > 4294967295U) + { + PrintText (sess, "Cannot send files larger than 4 GB.\n"); + goto xit; + } +#endif + + if (!(*file_part (file_fs)) || S_ISDIR (st.st_mode) || st.st_size < 1) + { + PrintText (sess, "Cannot send directories or empty files.\n"); + goto xit; + } + + dcc->starttime = dcc->offertime = time (0); + dcc->serv = sess->server; + dcc->dccstat = STAT_QUEUED; + dcc->size = st.st_size; + dcc->type = TYPE_SEND; + dcc->fp = open (file_fs, OFLAGS | O_RDONLY); + if (dcc->fp != -1) + { + g_free (file_fs); + if (passive || dcc_listen_init (dcc, sess)) + { + char havespaces = 0; + file = dcc->file; + while (*file) + { + if (*file == ' ') + { + if (prefs.dcc_send_fillspaces) + *file = '_'; + else + havespaces = 1; + } + file++; + } + dcc->nick = strdup (to); + if (prefs.autoopendccsendwindow) + { + if (fe_dcc_open_send_win (TRUE)) /* already open? add */ + fe_dcc_add (dcc); + } else + fe_dcc_add (dcc); + + if (passive) + { + dcc->pasvid = new_id(); + snprintf (outbuf, sizeof (outbuf), (havespaces) ? + "DCC SEND \"%s\" 199 0 %"DCC_SFMT" %d" : + "DCC SEND %s 199 0 %"DCC_SFMT" %d", + file_part (dcc->file), + dcc->size, dcc->pasvid); + } else + { + snprintf (outbuf, sizeof (outbuf), (havespaces) ? + "DCC SEND \"%s\" %u %d %"DCC_SFMT : + "DCC SEND %s %u %d %"DCC_SFMT, + file_part (dcc->file), dcc->addr, + dcc->port, dcc->size); + } + sess->server->p_ctcp (sess->server, to, outbuf); + + EMIT_SIGNAL (XP_TE_DCCOFFER, sess, file_part (dcc->file), + to, dcc->file, NULL, 0); + } else + { + dcc_close (dcc, 0, TRUE); + } + return; + } + } + PrintTextf (sess, _("Cannot access %s\n"), dcc->file); + PrintTextf (sess, "%s %d: %s\n", _("Error"), errno, errorstring (errno)); +xit: + g_free (file_fs); + dcc_close (dcc, 0, TRUE); +} + +static struct DCC * +find_dcc_from_id (int id, int type) +{ + struct DCC *dcc; + GSList *list = dcc_list; + while (list) + { + dcc = (struct DCC *) list->data; + if (dcc->pasvid == id && + dcc->dccstat == STAT_QUEUED && dcc->type == type) + return dcc; + list = list->next; + } + return 0; +} + +static struct DCC * +find_dcc_from_port (int port, int type) +{ + struct DCC *dcc; + GSList *list = dcc_list; + while (list) + { + dcc = (struct DCC *) list->data; + if (dcc->port == port && + dcc->dccstat == STAT_QUEUED && dcc->type == type) + return dcc; + list = list->next; + } + return 0; +} + +struct DCC * +find_dcc (char *nick, char *file, int type) +{ + GSList *list = dcc_list; + struct DCC *dcc; + while (list) + { + dcc = (struct DCC *) list->data; + if (nick == NULL || !rfc_casecmp (nick, dcc->nick)) + { + if (type == -1 || dcc->type == type) + { + if (!file[0]) + return dcc; + if (!strcasecmp (file, file_part (dcc->file))) + return dcc; + if (!strcasecmp (file, dcc->file)) + return dcc; + } + } + list = list->next; + } + return 0; +} + +/* called when we receive a NICK change from server */ + +void +dcc_change_nick (struct server *serv, char *oldnick, char *newnick) +{ + struct DCC *dcc; + GSList *list = dcc_list; + + while (list) + { + dcc = (struct DCC *) list->data; + if (dcc->serv == serv) + { + if (!serv->p_cmp (dcc->nick, oldnick)) + { + if (dcc->nick) + free (dcc->nick); + dcc->nick = strdup (newnick); + } + } + list = list->next; + } +} + +/* is the destination file the same? new_dcc is not opened yet */ + +static int +is_same_file (struct DCC *dcc, struct DCC *new_dcc) +{ + struct stat st_a, st_b; + + /* if it's the same filename, must be same */ + if (strcmp (dcc->destfile, new_dcc->destfile) == 0) + return TRUE; + + /* now handle case-insensitive Filesystems: HFS+, FAT */ +#ifdef WIN32 +#warning no win32 implementation - behaviour may be unreliable +#else + /* this fstat() shouldn't really fail */ + if ((dcc->fp == -1 ? stat (dcc->destfile_fs, &st_a) : fstat (dcc->fp, &st_a)) == -1) + return FALSE; + if (stat (new_dcc->destfile_fs, &st_b) == -1) + return FALSE; + + /* same inode, same device, same file! */ + if (st_a.st_ino == st_b.st_ino && + st_a.st_dev == st_b.st_dev) + return TRUE; +#endif + + return FALSE; +} + +static int +is_resumable (struct DCC *dcc) +{ + dcc->resumable = 0; + + /* Check the file size */ + if (access (dcc->destfile_fs, W_OK) == 0) + { + struct stat st; + + if (stat (dcc->destfile_fs, &st) != -1) + { + if (st.st_size < dcc->size) + { + dcc->resumable = st.st_size; + dcc->pos = st.st_size; + } + else + dcc->resume_error = 2; + } else + { + dcc->resume_errno = errno; + dcc->resume_error = 1; + } + } else + { + dcc->resume_errno = errno; + dcc->resume_error = 1; + } + + /* Now verify that this DCC is not already in progress from someone else */ + + if (dcc->resumable) + { + GSList *list = dcc_list; + struct DCC *d; + while (list) + { + d = list->data; + if (d->type == TYPE_RECV && d->dccstat != STAT_ABORTED && + d->dccstat != STAT_DONE && d->dccstat != STAT_FAILED) + { + if (d != dcc && is_same_file (d, dcc)) + { + dcc->resume_error = 3; /* dccgui.c uses it */ + dcc->resumable = 0; + dcc->pos = 0; + break; + } + } + list = list->next; + } + } + + return dcc->resumable; +} + +void +dcc_get (struct DCC *dcc) +{ + switch (dcc->dccstat) + { + case STAT_QUEUED: + if (dcc->type != TYPE_CHATSEND) + { + if (dcc->type == TYPE_RECV && prefs.autoresume && dcc->resumable) + { + dcc_resume (dcc); + } + else + { + dcc->resumable = 0; + dcc->pos = 0; + dcc_connect (dcc); + } + } + break; + case STAT_DONE: + case STAT_FAILED: + case STAT_ABORTED: + dcc_close (dcc, 0, TRUE); + break; + } +} + +/* for "Save As..." dialog */ + +void +dcc_get_with_destfile (struct DCC *dcc, char *file) +{ + g_free (dcc->destfile); + dcc->destfile = g_strdup (file); /* utf-8 */ + + /* get the local filesystem encoding */ + g_free (dcc->destfile_fs); + dcc->destfile_fs = xchat_filename_from_utf8 (dcc->destfile, -1, 0, 0, 0); + + /* since destfile changed, must check resumability again */ + is_resumable (dcc); + + dcc_get (dcc); +} + +void +dcc_get_nick (struct session *sess, char *nick) +{ + struct DCC *dcc; + GSList *list = dcc_list; + while (list) + { + dcc = (struct DCC *) list->data; + if (!sess->server->p_cmp (nick, dcc->nick)) + { + if (dcc->dccstat == STAT_QUEUED && dcc->type == TYPE_RECV) + { + dcc->resumable = 0; + dcc->pos = 0; + dcc->ack = 0; + dcc_connect (dcc); + return; + } + } + list = list->next; + } + if (sess) + EMIT_SIGNAL (XP_TE_DCCIVAL, sess, NULL, NULL, NULL, NULL, 0); +} + +static struct DCC * +new_dcc (void) +{ + struct DCC *dcc = malloc (sizeof (struct DCC)); + if (!dcc) + return 0; + memset (dcc, 0, sizeof (struct DCC)); + dcc->sok = -1; + dcc->fp = -1; + dcc_list = g_slist_prepend (dcc_list, dcc); + return (dcc); +} + +void +dcc_chat (struct session *sess, char *nick, int passive) +{ + char outbuf[512]; + struct DCC *dcc; + + dcc = find_dcc (nick, "", TYPE_CHATSEND); + if (dcc) + { + switch (dcc->dccstat) + { + case STAT_ACTIVE: + case STAT_QUEUED: + case STAT_CONNECTING: + EMIT_SIGNAL (XP_TE_DCCCHATREOFFER, sess, nick, NULL, NULL, NULL, 0); + return; + case STAT_ABORTED: + case STAT_FAILED: + dcc_close (dcc, 0, TRUE); + } + } + dcc = find_dcc (nick, "", TYPE_CHATRECV); + if (dcc) + { + switch (dcc->dccstat) + { + case STAT_QUEUED: + dcc_connect (dcc); + break; + case STAT_FAILED: + case STAT_ABORTED: + dcc_close (dcc, 0, TRUE); + } + return; + } + /* offer DCC CHAT */ + + dcc = new_dcc (); + if (!dcc) + return; + dcc->starttime = dcc->offertime = time (0); + dcc->serv = sess->server; + dcc->dccstat = STAT_QUEUED; + dcc->type = TYPE_CHATSEND; + dcc->nick = strdup (nick); + if (passive || dcc_listen_init (dcc, sess)) + { + if (prefs.autoopendccchatwindow) + { + if (fe_dcc_open_chat_win (TRUE)) /* already open? add only */ + fe_dcc_add (dcc); + } else + fe_dcc_add (dcc); + + if (passive) + { + dcc->pasvid = new_id (); + snprintf (outbuf, sizeof (outbuf), "DCC CHAT chat 199 %d %d", + dcc->port, dcc->pasvid); + } else + { + snprintf (outbuf, sizeof (outbuf), "DCC CHAT chat %u %d", + dcc->addr, dcc->port); + } + dcc->serv->p_ctcp (dcc->serv, nick, outbuf); + EMIT_SIGNAL (XP_TE_DCCCHATOFFERING, sess, nick, NULL, NULL, NULL, 0); + } else + { + dcc_close (dcc, 0, TRUE); + } +} + +static void +dcc_malformed (struct session *sess, char *nick, char *data) +{ + EMIT_SIGNAL (XP_TE_MALFORMED, sess, nick, data, NULL, NULL, 0); +} + +int +dcc_resume (struct DCC *dcc) +{ + char tbuf[500]; + + if (dcc->dccstat == STAT_QUEUED && dcc->resumable) + { + dcc->resume_sent = 1; + /* filename contains spaces? Quote them! */ + snprintf (tbuf, sizeof (tbuf) - 10, strchr (dcc->file, ' ') ? + "DCC RESUME \"%s\" %d %"DCC_SFMT : + "DCC RESUME %s %d %"DCC_SFMT, + dcc->file, dcc->port, dcc->resumable); + + if (dcc->pasvid) + sprintf (tbuf + strlen (tbuf), " %d", dcc->pasvid); + + dcc->serv->p_ctcp (dcc->serv, dcc->nick, tbuf); + return 1; + } + + return 0; +} + +static void +dcc_confirm_send (void *ud) +{ + struct DCC *dcc = (struct DCC *) ud; + dcc_get (dcc); +} + +static void +dcc_deny_send (void *ud) +{ + struct DCC *dcc = (struct DCC *) ud; + dcc_abort (dcc->serv->front_session, dcc); +} + +static void +dcc_confirm_chat (void *ud) +{ + struct DCC *dcc = (struct DCC *) ud; + dcc_connect (dcc); +} + +static void +dcc_deny_chat (void *ud) +{ + struct DCC *dcc = (struct DCC *) ud; + dcc_abort (dcc->serv->front_session, dcc); +} + +static struct DCC * +dcc_add_chat (session *sess, char *nick, int port, guint32 addr, int pasvid) +{ + struct DCC *dcc; + + dcc = new_dcc (); + if (dcc) + { + dcc->serv = sess->server; + dcc->type = TYPE_CHATRECV; + dcc->dccstat = STAT_QUEUED; + dcc->addr = addr; + dcc->port = port; + dcc->pasvid = pasvid; + dcc->nick = strdup (nick); + dcc->starttime = time (0); + + EMIT_SIGNAL (XP_TE_DCCCHATOFFER, sess->server->front_session, nick, + NULL, NULL, NULL, 0); + + if (prefs.autoopendccchatwindow) + { + if (fe_dcc_open_chat_win (TRUE)) /* already open? add only */ + fe_dcc_add (dcc); + } else + fe_dcc_add (dcc); + + if (prefs.autodccchat == 1) + dcc_connect (dcc); + else if (prefs.autodccchat == 2) + { + char buff[128]; + snprintf (buff, sizeof (buff), "%s is offering DCC Chat. Do you want to accept?", nick); + fe_confirm (buff, dcc_confirm_chat, dcc_deny_chat, dcc); + } + } + + return dcc; +} + +static struct DCC * +dcc_add_file (session *sess, char *file, DCC_SIZE size, int port, char *nick, guint32 addr, int pasvid) +{ + struct DCC *dcc; + char tbuf[512]; + + dcc = new_dcc (); + if (dcc) + { + dcc->file = strdup (file); + + dcc->destfile = g_malloc (strlen (prefs.dccdir) + strlen (nick) + + strlen (file) + 4); + + strcpy (dcc->destfile, prefs.dccdir); + if (prefs.dccdir[strlen (prefs.dccdir) - 1] != '/') + strcat (dcc->destfile, "/"); + if (prefs.dccwithnick) + { +#ifdef WIN32 + char *t = strlen (dcc->destfile) + dcc->destfile; + strcpy (t, nick); + while (*t) + { + if (*t == '\\' || *t == '|') + *t = '_'; + t++; + } +#else + strcat (dcc->destfile, nick); +#endif + strcat (dcc->destfile, "."); + } + strcat (dcc->destfile, file); + + /* get the local filesystem encoding */ + dcc->destfile_fs = xchat_filename_from_utf8 (dcc->destfile, -1, 0, 0, 0); + + dcc->resumable = 0; + dcc->pos = 0; + dcc->serv = sess->server; + dcc->type = TYPE_RECV; + dcc->dccstat = STAT_QUEUED; + dcc->addr = addr; + dcc->port = port; + dcc->pasvid = pasvid; + dcc->size = size; + dcc->nick = strdup (nick); + dcc->maxcps = prefs.dcc_max_get_cps; + + is_resumable (dcc); + + /* autodccsend is really autodccrecv.. right? */ + + if (prefs.autodccsend == 1) + { + dcc_get (dcc); + } + else if (prefs.autodccsend == 2) + { + snprintf (tbuf, sizeof (tbuf), _("%s is offering \"%s\". Do you want to accept?"), nick, file); + fe_confirm (tbuf, dcc_confirm_send, dcc_deny_send, dcc); + } + if (prefs.autoopendccrecvwindow) + { + if (fe_dcc_open_recv_win (TRUE)) /* was already open? just add*/ + fe_dcc_add (dcc); + } else + fe_dcc_add (dcc); + } + sprintf (tbuf, "%"DCC_SFMT, size); + snprintf (tbuf + 24, 300, "%s:%d", net_ip (addr), port); + EMIT_SIGNAL (XP_TE_DCCSENDOFFER, sess->server->front_session, nick, + file, tbuf, tbuf + 24, 0); + + return dcc; +} + +void +handle_dcc (struct session *sess, char *nick, char *word[], + char *word_eol[]) +{ + char tbuf[512]; + struct DCC *dcc; + char *type = word[5]; + int port, pasvid = 0; + guint32 addr; + DCC_SIZE size; + int psend = 0; + + if (!strcasecmp (type, "CHAT")) + { + port = atoi (word[8]); + addr = strtoul (word[7], NULL, 10); + + if (port == 0) + pasvid = atoi (word[9]); + else if (word[9][0] != 0) + { + pasvid = atoi (word[9]); + psend = 1; + } + + if (!addr /*|| (port < 1024 && port != 0)*/ + || port > 0xffff || (port == 0 && pasvid == 0)) + { + dcc_malformed (sess, nick, word_eol[4] + 2); + return; + } + + if (psend) + { + dcc = find_dcc_from_id (pasvid, TYPE_CHATSEND); + if (dcc) + { + dcc->addr = addr; + dcc->port = port; + dcc_connect (dcc); + } else + { + dcc_malformed (sess, nick, word_eol[4] + 2); + } + return; + } + + dcc = find_dcc (nick, "", TYPE_CHATSEND); + if (dcc) + dcc_close (dcc, 0, TRUE); + + dcc = find_dcc (nick, "", TYPE_CHATRECV); + if (dcc) + dcc_close (dcc, 0, TRUE); + + dcc_add_chat (sess, nick, port, addr, pasvid); + return; + } + + if (!strcasecmp (type, "Resume")) + { + port = atoi (word[7]); + + if (port == 0) + { /* PASSIVE */ + pasvid = atoi(word[9]); + dcc = find_dcc_from_id(pasvid, TYPE_SEND); + } else + { + dcc = find_dcc_from_port (port, TYPE_SEND); + } + if (!dcc) + dcc = find_dcc (nick, word[6], TYPE_SEND); + if (dcc) + { + size = BIG_STR_TO_INT (word[8]); + dcc->resumable = size; + if (dcc->resumable < dcc->size) + { + dcc->pos = dcc->resumable; + dcc->ack = dcc->resumable; + lseek (dcc->fp, dcc->pos, SEEK_SET); + + /* Checking if dcc is passive and if filename contains spaces */ + if (dcc->pasvid) + snprintf (tbuf, sizeof (tbuf), strchr (file_part (dcc->file), ' ') ? + "DCC ACCEPT \"%s\" %d %"DCC_SFMT" %d" : + "DCC ACCEPT %s %d %"DCC_SFMT" %d", + file_part (dcc->file), port, dcc->resumable, dcc->pasvid); + else + snprintf (tbuf, sizeof (tbuf), strchr (file_part (dcc->file), ' ') ? + "DCC ACCEPT \"%s\" %d %"DCC_SFMT : + "DCC ACCEPT %s %d %"DCC_SFMT, + file_part (dcc->file), port, dcc->resumable); + + dcc->serv->p_ctcp (dcc->serv, dcc->nick, tbuf); + } + sprintf (tbuf, "%"DCC_SFMT, dcc->pos); + EMIT_SIGNAL (XP_TE_DCCRESUMEREQUEST, sess, nick, + file_part (dcc->file), tbuf, NULL, 0); + } + return; + } + if (!strcasecmp (type, "Accept")) + { + port = atoi (word[7]); + dcc = find_dcc_from_port (port, TYPE_RECV); + if (dcc && dcc->dccstat == STAT_QUEUED) + { + dcc_connect (dcc); + } + return; + } + if (!strcasecmp (type, "SEND")) + { + char *file = file_part (word[6]); + + port = atoi (word[8]); + addr = strtoul (word[7], NULL, 10); + size = BIG_STR_TO_INT (word[9]); + + if (port == 0) /* Passive dcc requested */ + pasvid = atoi (word[10]); + else if (word[10][0] != 0) + { + /* Requesting passive dcc. + * Destination user of an active dcc is giving his + * TRUE address/port/pasvid data. + * This information will be used later to + * establish the connection to the user. + * We can recognize this type of dcc using word[10] + * because this field is always null (no pasvid) + * in normal dcc sends. + */ + pasvid = atoi (word[10]); + psend = 1; + } + + + if (!addr || !size /*|| (port < 1024 && port != 0)*/ + || port > 0xffff || (port == 0 && pasvid == 0)) + { + dcc_malformed (sess, nick, word_eol[4] + 2); + return; + } + + if (psend) + { + /* Third Step of Passive send. + * Connecting to the destination and finally + * sending file. + */ + dcc = find_dcc_from_id (pasvid, TYPE_SEND); + if (dcc) + { + dcc->addr = addr; + dcc->port = port; + dcc_connect (dcc); + } else + { + dcc_malformed (sess, nick, word_eol[4] + 2); + } + return; + } + + dcc_add_file (sess, file, size, port, nick, addr, pasvid); + + } else + { + EMIT_SIGNAL (XP_TE_DCCGENERICOFFER, sess->server->front_session, + word_eol[4] + 2, nick, NULL, NULL, 0); + } +} + +void +dcc_show_list (struct session *sess) +{ + int i = 0; + struct DCC *dcc; + GSList *list = dcc_list; + + EMIT_SIGNAL (XP_TE_DCCHEAD, sess, NULL, NULL, NULL, NULL, 0); + while (list) + { + dcc = (struct DCC *) list->data; + i++; + PrintTextf (sess, " %s %-10.10s %-7.7s %-7"DCC_SFMT" %-7"DCC_SFMT" %s\n", + dcctypes[dcc->type], dcc->nick, + _(dccstat[dcc->dccstat].name), dcc->size, dcc->pos, + file_part (dcc->file)); + list = list->next; + } + if (!i) + PrintText (sess, _("No active DCCs\n")); +} diff --git a/xchat-2.8.8/src/common/dcc.h b/xchat-2.8.8/src/common/dcc.h new file mode 100644 index 0000000..da4ce97 --- /dev/null +++ b/xchat-2.8.8/src/common/dcc.h @@ -0,0 +1,117 @@ +/* dcc.h */ + +#include <time.h> /* for time_t */ + +#ifndef XCHAT_DCC_H +#define XCHAT_DCC_H + +#define STAT_QUEUED 0 +#define STAT_ACTIVE 1 +#define STAT_FAILED 2 +#define STAT_DONE 3 +#define STAT_CONNECTING 4 +#define STAT_ABORTED 5 + +#define TYPE_SEND 0 +#define TYPE_RECV 1 +#define TYPE_CHATRECV 2 +#define TYPE_CHATSEND 3 + +#define CPS_AVG_WINDOW 10 + +/* can we do 64-bit dcc? */ +#if defined(G_GINT64_FORMAT) && defined(HAVE_STRTOULL) +#define USE_DCC64 +/* we really get only 63 bits, since st_size is signed */ +#define DCC_SIZE gint64 +#define DCC_SFMT G_GINT64_FORMAT +#else +#define DCC_SIZE unsigned int +#define DCC_SFMT "u" +#endif + +struct DCC +{ + struct server *serv; + struct dcc_chat *dccchat; + struct proxy_state *proxy; + guint32 addr; /* the 32bit IP number, host byte order */ + int fp; /* file pointer */ + int sok; + int iotag; /* reading io tag */ + int wiotag; /* writing/sending io tag */ + int port; + int pasvid; /* mIRC's passive DCC id */ + int cps; + int resume_error; + int resume_errno; + + GTimeVal lastcpstv, firstcpstv; + DCC_SIZE lastcpspos; + int maxcps; + + unsigned char ack_buf[4]; /* buffer for reading 4-byte ack */ + int ack_pos; + + DCC_SIZE size; + DCC_SIZE resumable; + DCC_SIZE ack; + DCC_SIZE pos; + time_t starttime; + time_t offertime; + time_t lasttime; + char *file; /* utf8 */ + char *destfile; /* utf8 */ + char *destfile_fs; /* local filesystem encoding */ + char *nick; + unsigned char type; /* 0 = SEND 1 = RECV 2 = CHAT */ + unsigned char dccstat; /* 0 = QUEUED 1 = ACTIVE 2 = FAILED 3 = DONE */ + unsigned int resume_sent:1; /* resume request sent */ + unsigned int fastsend:1; + unsigned int ackoffset:1; /* is reciever sending acks as an offset from */ + /* the resume point? */ + unsigned int throttled:2; /* 0x1 = per send/get throttle + 0x2 = global throttle */ +}; + +#define MAX_PROXY_BUFFER 1024 +struct proxy_state +{ + int phase; + unsigned char buffer[MAX_PROXY_BUFFER]; + int buffersize; + int bufferused; +}; + +struct dcc_chat +{ + char linebuf[2048]; + int pos; +}; + +struct dccstat_info +{ + char *name; /* Display name */ + int color; /* Display color (index into colors[] ) */ +}; + +extern struct dccstat_info dccstat[]; + +gboolean is_dcc (struct DCC *dcc); +void dcc_abort (session *sess, struct DCC *dcc); +void dcc_get (struct DCC *dcc); +int dcc_resume (struct DCC *dcc); +void dcc_check_timeouts (void); +void dcc_change_nick (server *serv, char *oldnick, char *newnick); +void dcc_notify_kill (struct server *serv); +struct DCC *dcc_write_chat (char *nick, char *text); +void dcc_send (struct session *sess, char *to, char *file, int maxcps, int passive); +struct DCC *find_dcc (char *nick, char *file, int type); +void dcc_get_nick (struct session *sess, char *nick); +void dcc_chat (session *sess, char *nick, int passive); +void handle_dcc (session *sess, char *nick, char *word[], char *word_eol[]); +void dcc_show_list (session *sess); +guint32 dcc_get_my_address (void); +void dcc_get_with_destfile (struct DCC *dcc, char *utf8file); + +#endif diff --git a/xchat-2.8.8/src/common/fe.h b/xchat-2.8.8/src/common/fe.h new file mode 100644 index 0000000..1652658 --- /dev/null +++ b/xchat-2.8.8/src/common/fe.h @@ -0,0 +1,162 @@ +#include "userlist.h" +#include "dcc.h" + +#ifndef XCHAT_FE_H +#define XCHAT_FE_H + +/* for storage of /menu entries */ +typedef struct +{ + gint32 pos; /* position */ + gint16 modifier; /* keybinding */ + gint16 root_offset; /* bytes to offset ->path */ + + char is_main; /* is part of the Main menu? (not a popup) */ + char state; /* state of toggle items */ + char markup; /* use pango markup? */ + char enable; /* enabled? sensitivity */ + + int key; + char *path; + char *label; + char *cmd; + char *ucmd; /* unselect command (toggles) */ + char *group; /* for radio items or NULL */ + char *icon; /* filename */ +} menu_entry; + +int fe_args (int argc, char *argv[]); +void fe_init (void); +void fe_main (void); +void fe_cleanup (void); +void fe_exit (void); +int fe_timeout_add (int interval, void *callback, void *userdata); +void fe_timeout_remove (int tag); +void fe_new_window (struct session *sess, int focus); +void fe_new_server (struct server *serv); +void fe_add_rawlog (struct server *serv, char *text, int len, int outbound); +#define FE_MSG_WAIT 1 +#define FE_MSG_INFO 2 +#define FE_MSG_WARN 4 +#define FE_MSG_ERROR 8 +#define FE_MSG_MARKUP 16 +void fe_message (char *msg, int flags); +#define FIA_READ 1 +#define FIA_WRITE 2 +#define FIA_EX 4 +#define FIA_FD 8 +int fe_input_add (int sok, int flags, void *func, void *data); +void fe_input_remove (int tag); +void fe_idle_add (void *func, void *data); +void fe_set_topic (struct session *sess, char *topic, char *stripped_topic); +void fe_set_hilight (struct session *sess); +void fe_set_tab_color (struct session *sess, int col); +void fe_flash_window (struct session *sess); +void fe_update_mode_buttons (struct session *sess, char mode, char sign); +void fe_update_channel_key (struct session *sess); +void fe_update_channel_limit (struct session *sess); +int fe_is_chanwindow (struct server *serv); +void fe_add_chan_list (struct server *serv, char *chan, char *users, + char *topic); +void fe_chan_list_end (struct server *serv); +int fe_is_banwindow (struct session *sess); +void fe_add_ban_list (struct session *sess, char *mask, char *who, char *when, int is_exemption); +void fe_ban_list_end (struct session *sess, int is_exemption); +void fe_notify_update (char *name); +void fe_notify_ask (char *name, char *networks); +void fe_text_clear (struct session *sess, int lines); +void fe_close_window (struct session *sess); +void fe_progressbar_start (struct session *sess); +void fe_progressbar_end (struct server *serv); +void fe_print_text (struct session *sess, char *text, time_t stamp); +void fe_userlist_insert (struct session *sess, struct User *newuser, int row, int sel); +int fe_userlist_remove (struct session *sess, struct User *user); +void fe_userlist_rehash (struct session *sess, struct User *user); +void fe_userlist_update (struct session *sess, struct User *user); +void fe_userlist_move (struct session *sess, struct User *user, int new_row); +void fe_userlist_numbers (struct session *sess); +void fe_userlist_clear (struct session *sess); +void fe_userlist_set_selected (struct session *sess); +void fe_uselect (session *sess, char *word[], int do_clear, int scroll_to); +void fe_dcc_add (struct DCC *dcc); +void fe_dcc_update (struct DCC *dcc); +void fe_dcc_remove (struct DCC *dcc); +int fe_dcc_open_recv_win (int passive); +int fe_dcc_open_send_win (int passive); +int fe_dcc_open_chat_win (int passive); +void fe_clear_channel (struct session *sess); +void fe_session_callback (struct session *sess); +void fe_server_callback (struct server *serv); +void fe_url_add (const char *text); +void fe_pluginlist_update (void); +void fe_buttons_update (struct session *sess); +void fe_dlgbuttons_update (struct session *sess); +void fe_dcc_send_filereq (struct session *sess, char *nick, int maxcps, int passive); +void fe_set_channel (struct session *sess); +void fe_set_title (struct session *sess); +void fe_set_nonchannel (struct session *sess, int state); +void fe_set_nick (struct server *serv, char *newnick); +void fe_ignore_update (int level); +void fe_beep (void); +void fe_lastlog (session *sess, session *lastlog_sess, char *sstr, gboolean regexp); +void fe_set_lag (server *serv, int lag); +void fe_set_throttle (server *serv); +void fe_set_away (server *serv); +void fe_serverlist_open (session *sess); +void fe_get_str (char *prompt, char *def, void *callback, void *ud); +void fe_get_int (char *prompt, int def, void *callback, void *ud); +#define FRF_WRITE 1 /* save file */ +#define FRF_MULTIPLE 2 /* multi-select */ +#define FRF_ADDFOLDER 4 /* add ~/.xchat2 to favourites */ +#define FRF_CHOOSEFOLDER 8 /* choosing a folder only */ +#define FRF_FILTERISINITIAL 16 /* unused */ +#define FRF_NOASKOVERWRITE 32 /* don't ask to overwrite existing files */ +void fe_get_file (const char *title, char *initial, + void (*callback) (void *userdata, char *file), void *userdata, + int flags); +typedef enum { + FE_GUI_HIDE, + FE_GUI_SHOW, + FE_GUI_FOCUS, + FE_GUI_FLASH, + FE_GUI_COLOR, + FE_GUI_ICONIFY, + FE_GUI_MENU, + FE_GUI_ATTACH, + FE_GUI_APPLY, +} fe_gui_action; +void fe_ctrl_gui (session *sess, fe_gui_action action, int arg); +int fe_gui_info (session *sess, int info_type); +void *fe_gui_info_ptr (session *sess, int info_type); +void fe_confirm (const char *message, void (*yesproc)(void *), void (*noproc)(void *), void *ud); +char *fe_get_inputbox_contents (struct session *sess); +int fe_get_inputbox_cursor (struct session *sess); +void fe_set_inputbox_contents (struct session *sess, char *text); +void fe_set_inputbox_cursor (struct session *sess, int delta, int pos); +void fe_open_url (const char *url); +void fe_menu_del (menu_entry *); +char *fe_menu_add (menu_entry *); +void fe_menu_update (menu_entry *); +#define FE_SE_CONNECT 0 +#define FE_SE_LOGGEDIN 1 +#define FE_SE_DISCONNECT 2 +#define FE_SE_RECONDELAY 3 +#define FE_SE_CONNECTING 4 +void fe_server_event (server *serv, int type, int arg); +/* pass NULL filename2 for default xchat icon */ +void fe_tray_set_flash (const char *filename1, const char *filename2, int timeout); +/* pass NULL filename for default xchat icon */ +void fe_tray_set_file (const char *filename); +typedef enum +{ + FE_ICON_NORMAL = 0, + FE_ICON_MESSAGE = 2, + FE_ICON_HIGHLIGHT = 5, + FE_ICON_PRIVMSG = 8, + FE_ICON_FILEOFFER = 11 +} feicon; +void fe_tray_set_icon (feicon icon); +void fe_tray_set_tooltip (const char *text); +void fe_tray_set_balloon (const char *title, const char *text); + +#endif diff --git a/xchat-2.8.8/src/common/history.c b/xchat-2.8.8/src/common/history.c new file mode 100644 index 0000000..1cd6b50 --- /dev/null +++ b/xchat-2.8.8/src/common/history.c @@ -0,0 +1,121 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <string.h> +#include <stdlib.h> +#include "history.h" + +void +history_add (struct history *his, char *text) +{ + if (his->lines[his->realpos]) + free (his->lines[his->realpos]); + his->lines[his->realpos] = strdup (text); + his->realpos++; + if (his->realpos == HISTORY_SIZE) + his->realpos = 0; + his->pos = his->realpos; +} + +void +history_free (struct history *his) +{ + int i; + for (i = 0; i < HISTORY_SIZE; i++) + { + if (his->lines[i]) + { + free (his->lines[i]); + his->lines[i] = 0; + } + } +} + +char * +history_down (struct history *his) +{ + int next; + + if (his->pos == his->realpos) /* allow down only after up */ + return 0; + if (his->realpos == 0) + { + if (his->pos == HISTORY_SIZE - 1) + { + his->pos = 0; + return ""; + } + } else + { + if (his->pos == his->realpos - 1) + { + his->pos++; + return ""; + } + } + + next = 0; + if (his->pos < HISTORY_SIZE - 1) + next = his->pos + 1; + + if (his->lines[next]) + { + his->pos = next; + return his->lines[his->pos]; + } + + return 0; +} + +char * +history_up (struct history *his, char *current_text) +{ + int next; + + if (his->realpos == HISTORY_SIZE - 1) + { + if (his->pos == 0) + return 0; + } else + { + if (his->pos == his->realpos + 1) + return 0; + } + + next = HISTORY_SIZE - 1; + if (his->pos != 0) + next = his->pos - 1; + + if (his->lines[next]) + { + if + ( + current_text[0] && strcmp(current_text, his->lines[next]) && + (!his->lines[his->pos] || strcmp(current_text, his->lines[his->pos])) && + (!his->lines[his->realpos] || strcmp(current_text, his->lines[his->pos])) + ) + { + history_add (his, current_text); + } + + his->pos = next; + return his->lines[his->pos]; + } + + return 0; +} diff --git a/xchat-2.8.8/src/common/history.h b/xchat-2.8.8/src/common/history.h new file mode 100644 index 0000000..5267f1f --- /dev/null +++ b/xchat-2.8.8/src/common/history.h @@ -0,0 +1,18 @@ +#ifndef XCHAT_HISTORY_H +#define XCHAT_HISTORY_H + +#define HISTORY_SIZE 100 + +struct history +{ + char *lines[HISTORY_SIZE]; + int pos; + int realpos; +}; + +void history_add (struct history *his, char *text); +void history_free (struct history *his); +char *history_up (struct history *his, char *current_text); +char *history_down (struct history *his); + +#endif diff --git a/xchat-2.8.8/src/common/identd.c b/xchat-2.8.8/src/common/identd.c new file mode 100644 index 0000000..919282e --- /dev/null +++ b/xchat-2.8.8/src/common/identd.c @@ -0,0 +1,89 @@ +/* simple identd server for xchat under win32 */ + + +static int identd_is_running = FALSE; + + +static int +identd (char *username) +{ + int sok, read_sok, len; + char *p; + char buf[256]; + char outbuf[256]; + struct sockaddr_in addr; + + sok = socket (AF_INET, SOCK_STREAM, 0); + if (sok == INVALID_SOCKET) + { + free (username); + return 0; + } + + len = 1; + setsockopt (sok, SOL_SOCKET, SO_REUSEADDR, (char *) &len, sizeof (len)); + + memset (&addr, 0, sizeof (addr)); + addr.sin_family = AF_INET; + addr.sin_port = htons (113); + + if (bind (sok, (struct sockaddr *) &addr, sizeof (addr)) == SOCKET_ERROR) + { + closesocket (sok); + free (username); + return 0; + } + + if (listen (sok, 1) == SOCKET_ERROR) + { + closesocket (sok); + free (username); + return 0; + } + + len = sizeof (addr); + read_sok = accept (sok, (struct sockaddr *) &addr, &len); + closesocket (sok); + if (read_sok == INVALID_SOCKET) + { + free (username); + return 0; + } + + identd_is_running = FALSE; + + snprintf (outbuf, sizeof (outbuf), "%%\tServicing ident request from %s\n", + inet_ntoa (addr.sin_addr)); + PrintText (current_sess, outbuf); + + recv (read_sok, buf, sizeof (buf) - 1, 0); + buf[sizeof (buf) - 1] = 0; /* ensure null termination */ + + p = strchr (buf, ','); + if (p) + { + snprintf (outbuf, sizeof (outbuf) - 1, "%d, %d : USERID : UNIX : %s\r\n", + atoi (buf), atoi (p + 1), username); + outbuf[sizeof (outbuf) - 1] = 0; /* ensure null termination */ + send (read_sok, outbuf, strlen (outbuf), 0); + } + + sleep (1); + closesocket (read_sok); + free (username); + + return 0; +} + +static void +identd_start (char *username) +{ + DWORD tid; + + if (identd_is_running == FALSE) + { + identd_is_running = TRUE; + CloseHandle (CreateThread (NULL, 0, (LPTHREAD_START_ROUTINE) identd, + strdup (username), 0, &tid)); + } +} diff --git a/xchat-2.8.8/src/common/ignore.c b/xchat-2.8.8/src/common/ignore.c new file mode 100644 index 0000000..c3544f3 --- /dev/null +++ b/xchat-2.8.8/src/common/ignore.c @@ -0,0 +1,424 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <unistd.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> + +#include "xchat.h" +#include "ignore.h" +#include "cfgfiles.h" +#include "fe.h" +#include "text.h" +#include "util.h" +#include "xchatc.h" + + +int ignored_ctcp = 0; /* keep a count of all we ignore */ +int ignored_priv = 0; +int ignored_chan = 0; +int ignored_noti = 0; +int ignored_invi = 0; +static int ignored_total = 0; + +/* ignore_exists (): + * returns: struct ig, if this mask is in the ignore list already + * NULL, otherwise + */ +struct ignore * +ignore_exists (char *mask) +{ + struct ignore *ig = 0; + GSList *list; + + list = ignore_list; + while (list) + { + ig = (struct ignore *) list->data; + if (!rfc_casecmp (ig->mask, mask)) + return ig; + list = list->next; + } + return NULL; + +} + +/* ignore_add(...) + + * returns: + * 0 fail + * 1 success + * 2 success (old ignore has been changed) + */ + +int +ignore_add (char *mask, int type) +{ + struct ignore *ig = 0; + int change_only = FALSE; + + /* first check if it's already ignored */ + ig = ignore_exists (mask); + if (ig) + change_only = TRUE; + + if (!change_only) + ig = malloc (sizeof (struct ignore)); + + if (!ig) + return 0; + + ig->mask = strdup (mask); + ig->type = type; + + if (!change_only) + ignore_list = g_slist_prepend (ignore_list, ig); + fe_ignore_update (1); + + if (change_only) + return 2; + + return 1; +} + +void +ignore_showlist (session *sess) +{ + struct ignore *ig; + GSList *list = ignore_list; + char tbuf[256]; + int i = 0; + + EMIT_SIGNAL (XP_TE_IGNOREHEADER, sess, 0, 0, 0, 0, 0); + + while (list) + { + ig = list->data; + i++; + + snprintf (tbuf, sizeof (tbuf), " %-25s ", ig->mask); + if (ig->type & IG_PRIV) + strcat (tbuf, _("YES ")); + else + strcat (tbuf, _("NO ")); + if (ig->type & IG_NOTI) + strcat (tbuf, _("YES ")); + else + strcat (tbuf, _("NO ")); + if (ig->type & IG_CHAN) + strcat (tbuf, _("YES ")); + else + strcat (tbuf, _("NO ")); + if (ig->type & IG_CTCP) + strcat (tbuf, _("YES ")); + else + strcat (tbuf, _("NO ")); + if (ig->type & IG_DCC) + strcat (tbuf, _("YES ")); + else + strcat (tbuf, _("NO ")); + if (ig->type & IG_INVI) + strcat (tbuf, _("YES ")); + else + strcat (tbuf, _("NO ")); + if (ig->type & IG_UNIG) + strcat (tbuf, _("YES ")); + else + strcat (tbuf, _("NO ")); + strcat (tbuf, "\n"); + PrintText (sess, tbuf); + /*EMIT_SIGNAL (XP_TE_IGNORELIST, sess, ig->mask, 0, 0, 0, 0); */ + /* use this later, when TE's support 7 args */ + list = list->next; + } + + if (!i) + EMIT_SIGNAL (XP_TE_IGNOREEMPTY, sess, 0, 0, 0, 0, 0); + + EMIT_SIGNAL (XP_TE_IGNOREFOOTER, sess, 0, 0, 0, 0, 0); +} + +/* ignore_del() + + * one of the args must be NULL, use mask OR *ig, not both + * + */ + +int +ignore_del (char *mask, struct ignore *ig) +{ + if (!ig) + { + GSList *list = ignore_list; + + while (list) + { + ig = (struct ignore *) list->data; + if (!rfc_casecmp (ig->mask, mask)) + break; + list = list->next; + ig = 0; + } + } + if (ig) + { + ignore_list = g_slist_remove (ignore_list, ig); + free (ig->mask); + free (ig); + fe_ignore_update (1); + return TRUE; + } + return FALSE; +} + +/* check if a msg should be ignored by browsing our ignore list */ + +int +ignore_check (char *host, int type) +{ + struct ignore *ig; + GSList *list = ignore_list; + + /* check if there's an UNIGNORE first, they take precendance. */ + while (list) + { + ig = (struct ignore *) list->data; + if (ig->type & IG_UNIG) + { + if (ig->type & type) + { + if (match (ig->mask, host)) + return FALSE; + } + } + list = list->next; + } + + list = ignore_list; + while (list) + { + ig = (struct ignore *) list->data; + + if (ig->type & type) + { + if (match (ig->mask, host)) + { + ignored_total++; + if (type & IG_PRIV) + ignored_priv++; + if (type & IG_NOTI) + ignored_noti++; + if (type & IG_CHAN) + ignored_chan++; + if (type & IG_CTCP) + ignored_ctcp++; + if (type & IG_INVI) + ignored_invi++; + fe_ignore_update (2); + return TRUE; + } + } + list = list->next; + } + + return FALSE; +} + +static char * +ignore_read_next_entry (char *my_cfg, struct ignore *ignore) +{ + char tbuf[1024]; + + /* Casting to char * done below just to satisfy compiler */ + + if (my_cfg) + { + my_cfg = cfg_get_str (my_cfg, "mask", tbuf, sizeof (tbuf)); + if (!my_cfg) + return NULL; + ignore->mask = strdup (tbuf); + } + if (my_cfg) + { + my_cfg = cfg_get_str (my_cfg, "type", tbuf, sizeof (tbuf)); + ignore->type = atoi (tbuf); + } + return my_cfg; +} + +void +ignore_load () +{ + struct ignore *ignore; + struct stat st; + char *cfg, *my_cfg; + int fh, i; + + fh = xchat_open_file ("ignore.conf", O_RDONLY, 0, 0); + if (fh != -1) + { + fstat (fh, &st); + if (st.st_size) + { + cfg = malloc (st.st_size + 1); + cfg[0] = '\0'; + i = read (fh, cfg, st.st_size); + if (i >= 0) + cfg[i] = '\0'; + my_cfg = cfg; + while (my_cfg) + { + ignore = malloc (sizeof (struct ignore)); + memset (ignore, 0, sizeof (struct ignore)); + if ((my_cfg = ignore_read_next_entry (my_cfg, ignore))) + ignore_list = g_slist_prepend (ignore_list, ignore); + else + free (ignore); + } + free (cfg); + } + close (fh); + } +} + +void +ignore_save () +{ + char buf[1024]; + int fh; + GSList *temp = ignore_list; + struct ignore *ig; + + fh = xchat_open_file ("ignore.conf", O_TRUNC | O_WRONLY | O_CREAT, 0600, XOF_DOMODE); + if (fh != -1) + { + while (temp) + { + ig = (struct ignore *) temp->data; + if (!(ig->type & IG_NOSAVE)) + { + snprintf (buf, sizeof (buf), "mask = %s\ntype = %d\n\n", + ig->mask, ig->type); + write (fh, buf, strlen (buf)); + } + temp = temp->next; + } + close (fh); + } + +} + +static gboolean +flood_autodialog_timeout (gpointer data) +{ + prefs.autodialog = 1; + return FALSE; +} + +int +flood_check (char *nick, char *ip, server *serv, session *sess, int what) /*0=ctcp 1=priv */ +{ + /* + serv + int ctcp_counter; + time_t ctcp_last_time; + prefs + unsigned int ctcp_number_limit; + unsigned int ctcp_time_limit; + */ + char buf[512]; + char real_ip[132]; + int i; + time_t current_time; + current_time = time (NULL); + + if (what == 0) + { + if (serv->ctcp_last_time == 0) /*first ctcp in this server */ + { + serv->ctcp_last_time = time (NULL); + serv->ctcp_counter++; + } else + { + if (difftime (current_time, serv->ctcp_last_time) < prefs.ctcp_time_limit) /*if we got the ctcp in the seconds limit */ + { + serv->ctcp_counter++; + if (serv->ctcp_counter == prefs.ctcp_number_limit) /*if we reached the maximun numbers of ctcp in the seconds limits */ + { + serv->ctcp_last_time = current_time; /*we got the flood, restore all the vars for next one */ + serv->ctcp_counter = 0; + for (i = 0; i < 128; i++) + if (ip[i] == '@') + break; + snprintf (real_ip, sizeof (real_ip), "*!*%s", &ip[i]); + /*ignore_add (char *mask, int priv, int noti, int chan, + int ctcp, int invi, int unignore, int no_save) */ + + snprintf (buf, sizeof (buf), + _("You are being CTCP flooded from %s, ignoring %s\n"), + nick, real_ip); + PrintText (sess, buf); + + /*FIXME: only ignore ctcp or all?, its ignoring ctcps for now */ + ignore_add (real_ip, IG_CTCP); + return 0; + } + } + } + } else + { + if (serv->msg_last_time == 0) + { + serv->msg_last_time = time (NULL); + serv->ctcp_counter++; + } else + { + if (difftime (current_time, serv->msg_last_time) < + prefs.msg_time_limit) + { + serv->msg_counter++; + if (serv->msg_counter == prefs.msg_number_limit) /*if we reached the maximun numbers of ctcp in the seconds limits */ + { + snprintf (buf, sizeof (buf), + _("You are being MSG flooded from %s, setting gui_auto_open_dialog OFF.\n"), + ip); + PrintText (sess, buf); + serv->msg_last_time = current_time; /*we got the flood, restore all the vars for next one */ + serv->msg_counter = 0; + /*ignore_add (char *mask, int priv, int noti, int chan, + int ctcp, int invi, int unignore, int no_save) */ + + if (prefs.autodialog) + { + /*FIXME: only ignore ctcp or all?, its ignoring ctcps for now */ + prefs.autodialog = 0; + /* turn it back on in 30 secs */ + fe_timeout_add (30000, flood_autodialog_timeout, NULL); + } + return 0; + } + } + } + } + return 1; +} + diff --git a/xchat-2.8.8/src/common/ignore.h b/xchat-2.8.8/src/common/ignore.h new file mode 100644 index 0000000..3a971a8 --- /dev/null +++ b/xchat-2.8.8/src/common/ignore.h @@ -0,0 +1,38 @@ +#ifndef XCHAT_IGNORE_H +#define XCHAT_IGNORE_H + +extern GSList *ignore_list; + +extern int ignored_ctcp; +extern int ignored_priv; +extern int ignored_chan; +extern int ignored_noti; +extern int ignored_invi; + +#define IG_PRIV 1 +#define IG_NOTI 2 +#define IG_CHAN 4 +#define IG_CTCP 8 +#define IG_INVI 16 +#define IG_UNIG 32 +#define IG_NOSAVE 64 +#define IG_DCC 128 + +struct ignore +{ + char *mask; + unsigned int type; /* one of more of IG_* ORed together */ +}; + +struct ignore *ignore_exists (char *mask); +int ignore_add (char *mask, int type); +void ignore_showlist (session *sess); +int ignore_del (char *mask, struct ignore *ig); +int ignore_check (char *mask, int type); +void ignore_load (void); +void ignore_save (void); +void ignore_gui_open (void); +void ignore_gui_update (int level); +int flood_check (char *nick, char *ip, server *serv, session *sess, int what); + +#endif diff --git a/xchat-2.8.8/src/common/inbound.c b/xchat-2.8.8/src/common/inbound.c new file mode 100644 index 0000000..ec7dd9d --- /dev/null +++ b/xchat-2.8.8/src/common/inbound.c @@ -0,0 +1,1336 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <string.h> +#include <ctype.h> +#include <stdlib.h> +#include <stdio.h> +#include <sys/types.h> +#include <unistd.h> +#include <time.h> + +#define WANTARPA +#define WANTDNS +#include "inet.h" + +#include "xchat.h" +#include "util.h" +#include "ignore.h" +#include "fe.h" +#include "modes.h" +#include "notify.h" +#include "outbound.h" +#include "inbound.h" +#include "server.h" +#include "servlist.h" +#include "text.h" +#include "ctcp.h" +#include "plugin.h" +#include "xchatc.h" + + +void +clear_channel (session *sess) +{ + if (sess->channel[0]) + strcpy (sess->waitchannel, sess->channel); + sess->channel[0] = 0; + sess->doing_who = FALSE; + sess->done_away_check = FALSE; + + log_close (sess); + + if (sess->current_modes) + { + free (sess->current_modes); + sess->current_modes = NULL; + } + + if (sess->mode_timeout_tag) + { + fe_timeout_remove (sess->mode_timeout_tag); + sess->mode_timeout_tag = 0; + } + + fe_clear_channel (sess); + userlist_clear (sess); + fe_set_nonchannel (sess, FALSE); + fe_set_title (sess); +} + +void +set_topic (session *sess, char *topic, char *stripped_topic) +{ + if (sess->topic) + free (sess->topic); + sess->topic = strdup (stripped_topic); + fe_set_topic (sess, topic, stripped_topic); +} + +static session * +find_session_from_nick (char *nick, server *serv) +{ + session *sess; + GSList *list = sess_list; + + sess = find_dialog (serv, nick); + if (sess) + return sess; + + if (serv->front_session) + { + if (userlist_find (serv->front_session, nick)) + return serv->front_session; + } + + if (current_sess && current_sess->server == serv) + { + if (userlist_find (current_sess, nick)) + return current_sess; + } + + while (list) + { + sess = list->data; + if (sess->server == serv) + { + if (userlist_find (sess, nick)) + return sess; + } + list = list->next; + } + return 0; +} + +static session * +inbound_open_dialog (server *serv, char *from) +{ + session *sess; + + sess = new_ircwindow (serv, from, SESS_DIALOG, 0); + /* for playing sounds */ + EMIT_SIGNAL (XP_TE_OPENDIALOG, sess, NULL, NULL, NULL, NULL, 0); + + return sess; +} + +static void +inbound_make_idtext (server *serv, char *idtext, int max, int id) +{ + idtext[0] = 0; + if (serv->have_idmsg) + { + if (id) + { + safe_strcpy (idtext, prefs.irc_id_ytext, max); + } else + { + safe_strcpy (idtext, prefs.irc_id_ntext, max); + } + /* convert codes like %C,%U to the proper ones */ + check_special_chars (idtext, TRUE); + } +} + +void +inbound_privmsg (server *serv, char *from, char *ip, char *text, int id) +{ + session *sess; + char idtext[64]; + + sess = find_dialog (serv, from); + + if (sess || prefs.autodialog) + { + /*0=ctcp 1=priv will set autodialog=0 here is flud detected */ + if (!sess) + { + if (flood_check (from, ip, serv, current_sess, 1)) + /* Create a dialog session */ + sess = inbound_open_dialog (serv, from); + else + sess = serv->server_session; + if (!sess) + return; /* ?? */ + } + + if (ip && ip[0]) + { + if (prefs.logging && sess->logfd != -1 && + (!sess->topic || strcmp(sess->topic, ip))) + { + char tbuf[1024]; + snprintf (tbuf, sizeof (tbuf), "[%s has address %s]\n", from, ip); + write (sess->logfd, tbuf, strlen (tbuf)); + } + set_topic (sess, ip, ip); + } + inbound_chanmsg (serv, NULL, NULL, from, text, FALSE, id); + return; + } + + inbound_make_idtext (serv, idtext, sizeof (idtext), id); + + sess = find_session_from_nick (from, serv); + if (!sess) + { + sess = serv->front_session; + EMIT_SIGNAL (XP_TE_PRIVMSG, sess, from, text, idtext, NULL, 0); + return; + } + + if (sess->type == SESS_DIALOG) + EMIT_SIGNAL (XP_TE_DPRIVMSG, sess, from, text, idtext, NULL, 0); + else + EMIT_SIGNAL (XP_TE_PRIVMSG, sess, from, text, idtext, NULL, 0); +} + +/* used for Alerts section. Masks can be separated by commas and spaces. */ + +gboolean +alert_match_word (char *word, char *masks) +{ + char *p = masks; + char endchar; + int res; + + if (masks[0] == 0) + return FALSE; + + while (1) + { + /* if it's a 0, space or comma, the word has ended. */ + if (*p == 0 || *p == ' ' || *p == ',') + { + endchar = *p; + *p = 0; + res = match (masks, word); + *p = endchar; + + if (res) + return TRUE; /* yes, matched! */ + + masks = p + 1; + if (*p == 0) + return FALSE; + } + p++; + } +} + +gboolean +alert_match_text (char *text, char *masks) +{ + unsigned char *p = text; + unsigned char endchar; + int res; + + if (masks[0] == 0) + return FALSE; + + while (1) + { + if (*p >= '0' && *p <= '9') + { + p++; + continue; + } + + /* if it's RFC1459 <special>, it can be inside a word */ + switch (*p) + { + case '-': case '[': case ']': case '\\': + case '`': case '^': case '{': case '}': + case '_': case '|': + p++; + continue; + } + + /* if it's a 0, space or comma, the word has ended. */ + if (*p == 0 || *p == ' ' || *p == ',' || + /* if it's anything BUT a letter, the word has ended. */ + (!g_unichar_isalpha (g_utf8_get_char (p)))) + { + endchar = *p; + *p = 0; + res = alert_match_word (text, masks); + *p = endchar; + + if (res) + return TRUE; /* yes, matched! */ + + text = p + g_utf8_skip [p[0]]; + if (*p == 0) + return FALSE; + } + + p += g_utf8_skip [p[0]]; + } +} + +static int +is_hilight (char *from, char *text, session *sess, server *serv) +{ + if (alert_match_word (from, prefs.irc_no_hilight)) + return 0; + + text = strip_color (text, -1, STRIP_ALL); + + if (alert_match_text (text, serv->nick) || + alert_match_text (text, prefs.irc_extra_hilight) || + alert_match_word (from, prefs.irc_nick_hilight)) + { + g_free (text); + if (sess != current_tab) + sess->nick_said = TRUE; + fe_set_hilight (sess); + return 1; + } + + g_free (text); + return 0; +} + +void +inbound_action (session *sess, char *chan, char *from, char *ip, char *text, int fromme, int id) +{ + session *def = sess; + server *serv = sess->server; + struct User *user; + char nickchar[2] = "\000"; + char idtext[64]; + int privaction = FALSE; + + if (!fromme) + { + if (is_channel (serv, chan)) + { + sess = find_channel (serv, chan); + } else + { + /* it's a private action! */ + privaction = TRUE; + /* find a dialog tab for it */ + sess = find_dialog (serv, from); + /* if non found, open a new one */ + if (!sess && prefs.autodialog) + { + /* but only if it wouldn't flood */ + if (flood_check (from, ip, serv, current_sess, 1)) + sess = inbound_open_dialog (serv, from); + else + sess = serv->server_session; + } + if (!sess) + { + sess = find_session_from_nick (from, serv); + /* still not good? */ + if (!sess) + sess = serv->front_session; + } + } + } + + if (!sess) + sess = def; + + if (sess != current_tab) + { + if (fromme) + { + sess->msg_said = FALSE; + sess->new_data = TRUE; + } else + { + sess->msg_said = TRUE; + sess->new_data = FALSE; + } + } + + user = userlist_find (sess, from); + if (user) + { + nickchar[0] = user->prefix[0]; + user->lasttalk = time (0); + } + + inbound_make_idtext (serv, idtext, sizeof (idtext), id); + + if (!fromme && !privaction) + { + if (is_hilight (from, text, sess, serv)) + { + EMIT_SIGNAL (XP_TE_HCHANACTION, sess, from, text, nickchar, idtext, 0); + return; + } + } + + if (fromme) + EMIT_SIGNAL (XP_TE_UACTION, sess, from, text, nickchar, idtext, 0); + else if (!privaction) + EMIT_SIGNAL (XP_TE_CHANACTION, sess, from, text, nickchar, idtext, 0); + else if (sess->type == SESS_DIALOG) + EMIT_SIGNAL (XP_TE_DPRIVACTION, sess, from, text, idtext, NULL, 0); + else + EMIT_SIGNAL (XP_TE_PRIVACTION, sess, from, text, idtext, NULL, 0); +} + +void +inbound_chanmsg (server *serv, session *sess, char *chan, char *from, char *text, char fromme, int id) +{ + struct User *user; + int hilight = FALSE; + char nickchar[2] = "\000"; + char idtext[64]; + + if (!sess) + { + if (chan) + { + sess = find_channel (serv, chan); + if (!sess && !is_channel (serv, chan)) + sess = find_dialog (serv, chan); + } else + { + sess = find_dialog (serv, from); + } + if (!sess) + return; + } + + if (sess != current_tab) + { + sess->msg_said = TRUE; + sess->new_data = FALSE; + } + + user = userlist_find (sess, from); + if (user) + { + nickchar[0] = user->prefix[0]; + user->lasttalk = time (0); + } + + if (fromme) + { + if (prefs.auto_unmark_away && serv->is_away) + sess->server->p_set_back (sess->server); + EMIT_SIGNAL (XP_TE_UCHANMSG, sess, from, text, nickchar, NULL, 0); + return; + } + + inbound_make_idtext (serv, idtext, sizeof (idtext), id); + + if (is_hilight (from, text, sess, serv)) + hilight = TRUE; + + if (sess->type == SESS_DIALOG) + EMIT_SIGNAL (XP_TE_DPRIVMSG, sess, from, text, idtext, NULL, 0); + else if (hilight) + EMIT_SIGNAL (XP_TE_HCHANMSG, sess, from, text, nickchar, idtext, 0); + else + EMIT_SIGNAL (XP_TE_CHANMSG, sess, from, text, nickchar, idtext, 0); +} + +void +inbound_newnick (server *serv, char *nick, char *newnick, int quiet) +{ + int me = FALSE; + session *sess; + GSList *list = sess_list; + + if (!serv->p_cmp (nick, serv->nick)) + { + me = TRUE; + safe_strcpy (serv->nick, newnick, NICKLEN); + } + + while (list) + { + sess = list->data; + if (sess->server == serv) + { + if (userlist_change (sess, nick, newnick) || (me && sess->type == SESS_SERVER)) + { + if (!quiet) + { + if (me) + EMIT_SIGNAL (XP_TE_UCHANGENICK, sess, nick, newnick, NULL, + NULL, 0); + else + EMIT_SIGNAL (XP_TE_CHANGENICK, sess, nick, newnick, NULL, + NULL, 0); + } + } + if (sess->type == SESS_DIALOG && !serv->p_cmp (sess->channel, nick)) + { + safe_strcpy (sess->channel, newnick, CHANLEN); + fe_set_channel (sess); + } + fe_set_title (sess); + } + list = list->next; + } + + dcc_change_nick (serv, nick, newnick); + + if (me) + fe_set_nick (serv, newnick); +} + +/* find a "<none>" tab */ +static session * +find_unused_session (server *serv) +{ + session *sess; + GSList *list = sess_list; + while (list) + { + sess = (session *) list->data; + if (sess->type == SESS_CHANNEL && sess->channel[0] == 0 && + sess->server == serv) + { + if (sess->waitchannel[0] == 0) + return sess; + } + list = list->next; + } + return 0; +} + +static session * +find_session_from_waitchannel (char *chan, struct server *serv) +{ + session *sess; + GSList *list = sess_list; + while (list) + { + sess = (session *) list->data; + if (sess->server == serv && sess->channel[0] == 0 && sess->type == SESS_CHANNEL) + { + if (!serv->p_cmp (chan, sess->waitchannel)) + return sess; + } + list = list->next; + } + return 0; +} + +void +inbound_ujoin (server *serv, char *chan, char *nick, char *ip) +{ + session *sess; + + /* already joined? probably a bnc */ + sess = find_channel (serv, chan); + if (!sess) + { + /* see if a window is waiting to join this channel */ + sess = find_session_from_waitchannel (chan, serv); + if (!sess) + { + /* find a "<none>" tab and use that */ + sess = find_unused_session (serv); + if (!sess) + /* last resort, open a new tab/window */ + sess = new_ircwindow (serv, chan, SESS_CHANNEL, 1); + } + } + + safe_strcpy (sess->channel, chan, CHANLEN); + + fe_set_channel (sess); + fe_set_title (sess); + fe_set_nonchannel (sess, TRUE); + userlist_clear (sess); + + log_open_or_close (sess); + + sess->waitchannel[0] = 0; + sess->ignore_date = TRUE; + sess->ignore_mode = TRUE; + sess->ignore_names = TRUE; + sess->end_of_names = FALSE; + + /* sends a MODE */ + serv->p_join_info (sess->server, chan); + + EMIT_SIGNAL (XP_TE_UJOIN, sess, nick, chan, ip, NULL, 0); + + if (prefs.userhost) + { + /* sends WHO #channel */ + serv->p_user_list (sess->server, chan); + sess->doing_who = TRUE; + } +} + +void +inbound_ukick (server *serv, char *chan, char *kicker, char *reason) +{ + session *sess = find_channel (serv, chan); + if (sess) + { + EMIT_SIGNAL (XP_TE_UKICK, sess, serv->nick, chan, kicker, reason, 0); + clear_channel (sess); + if (prefs.autorejoin) + { + serv->p_join (serv, chan, sess->channelkey); + safe_strcpy (sess->waitchannel, chan, CHANLEN); + } + } +} + +void +inbound_upart (server *serv, char *chan, char *ip, char *reason) +{ + session *sess = find_channel (serv, chan); + if (sess) + { + if (*reason) + EMIT_SIGNAL (XP_TE_UPARTREASON, sess, serv->nick, ip, chan, reason, + 0); + else + EMIT_SIGNAL (XP_TE_UPART, sess, serv->nick, ip, chan, NULL, 0); + clear_channel (sess); + } +} + +void +inbound_nameslist (server *serv, char *chan, char *names) +{ + session *sess; + char name[NICKLEN]; + int pos = 0; + + sess = find_channel (serv, chan); + if (!sess) + { + EMIT_SIGNAL (XP_TE_USERSONCHAN, serv->server_session, chan, names, NULL, + NULL, 0); + return; + } + if (!sess->ignore_names) + EMIT_SIGNAL (XP_TE_USERSONCHAN, sess, chan, names, NULL, NULL, 0); + + if (sess->end_of_names) + { + sess->end_of_names = FALSE; + userlist_clear (sess); + } + + while (1) + { + switch (*names) + { + case 0: + name[pos] = 0; + if (pos != 0) + userlist_add (sess, name, 0); + return; + case ' ': + name[pos] = 0; + pos = 0; + userlist_add (sess, name, 0); + break; + default: + name[pos] = *names; + if (pos < (NICKLEN-1)) + pos++; + } + names++; + } +} + +void +inbound_topic (server *serv, char *chan, char *topic_text) +{ + session *sess = find_channel (serv, chan); + char *stripped_topic; + + if (sess) + { + stripped_topic = strip_color (topic_text, -1, STRIP_ALL); + set_topic (sess, topic_text, stripped_topic); + g_free (stripped_topic); + } else + sess = serv->server_session; + + EMIT_SIGNAL (XP_TE_TOPIC, sess, chan, topic_text, NULL, NULL, 0); +} + +void +inbound_topicnew (server *serv, char *nick, char *chan, char *topic) +{ + session *sess; + char *stripped_topic; + + sess = find_channel (serv, chan); + if (sess) + { + stripped_topic = strip_color (topic, -1, STRIP_ALL); + set_topic (sess, topic, stripped_topic); + g_free (stripped_topic); + EMIT_SIGNAL (XP_TE_NEWTOPIC, sess, nick, topic, chan, NULL, 0); + } +} + +void +inbound_join (server *serv, char *chan, char *user, char *ip) +{ + session *sess = find_channel (serv, chan); + if (sess) + { + EMIT_SIGNAL (XP_TE_JOIN, sess, user, chan, ip, NULL, 0); + userlist_add (sess, user, ip); + } +} + +void +inbound_kick (server *serv, char *chan, char *user, char *kicker, char *reason) +{ + session *sess = find_channel (serv, chan); + if (sess) + { + EMIT_SIGNAL (XP_TE_KICK, sess, kicker, user, chan, reason, 0); + userlist_remove (sess, user); + } +} + +void +inbound_part (server *serv, char *chan, char *user, char *ip, char *reason) +{ + session *sess = find_channel (serv, chan); + if (sess) + { + if (*reason) + EMIT_SIGNAL (XP_TE_PARTREASON, sess, user, ip, chan, reason, 0); + else + EMIT_SIGNAL (XP_TE_PART, sess, user, ip, chan, NULL, 0); + userlist_remove (sess, user); + } +} + +void +inbound_topictime (server *serv, char *chan, char *nick, time_t stamp) +{ + char *tim = ctime (&stamp); + session *sess = find_channel (serv, chan); + + if (!sess) + sess = serv->server_session; + + tim[24] = 0; /* get rid of the \n */ + EMIT_SIGNAL (XP_TE_TOPICDATE, sess, chan, nick, tim, NULL, 0); +} + +void +inbound_quit (server *serv, char *nick, char *ip, char *reason) +{ + GSList *list = sess_list; + session *sess; + int was_on_front_session = FALSE; + + while (list) + { + sess = (session *) list->data; + if (sess->server == serv) + { + if (sess == current_sess) + was_on_front_session = TRUE; + if (userlist_remove (sess, nick)) + { + EMIT_SIGNAL (XP_TE_QUIT, sess, nick, reason, ip, NULL, 0); + } else if (sess->type == SESS_DIALOG && !serv->p_cmp (sess->channel, nick)) + { + EMIT_SIGNAL (XP_TE_QUIT, sess, nick, reason, ip, NULL, 0); + } + } + list = list->next; + } + + notify_set_offline (serv, nick, was_on_front_session); +} + +void +inbound_ping_reply (session *sess, char *timestring, char *from) +{ + unsigned long tim, nowtim, dif; + int lag = 0; + char outbuf[64]; + + if (strncmp (timestring, "LAG", 3) == 0) + { + timestring += 3; + lag = 1; + } + + tim = strtoul (timestring, NULL, 10); + nowtim = make_ping_time (); + dif = nowtim - tim; + + sess->server->ping_recv = time (0); + + if (lag) + { + sess->server->lag_sent = 0; + sess->server->lag = dif / 1000; + fe_set_lag (sess->server, dif / 100000); + return; + } + + if (atol (timestring) == 0) + { + if (sess->server->lag_sent) + sess->server->lag_sent = 0; + else + EMIT_SIGNAL (XP_TE_PINGREP, sess, from, "?", NULL, NULL, 0); + } else + { + snprintf (outbuf, sizeof (outbuf), "%ld.%ld%ld", dif / 1000000, (dif / 100000) % 10, dif % 10); + EMIT_SIGNAL (XP_TE_PINGREP, sess, from, outbuf, NULL, NULL, 0); + } +} + +static session * +find_session_from_type (int type, server *serv) +{ + session *sess; + GSList *list = sess_list; + while (list) + { + sess = list->data; + if (sess->type == type && serv == sess->server) + return sess; + list = list->next; + } + return 0; +} + +void +inbound_notice (server *serv, char *to, char *nick, char *msg, char *ip, int id) +{ + char *po,*ptr=to; + session *sess = 0; + int server_notice = FALSE; + + if (is_channel (serv, ptr)) + sess = find_channel (serv, ptr); + + if (!sess && ptr[0] == '@') + { + ptr++; + sess = find_channel (serv, ptr); + } + + if (!sess && ptr[0] == '%') + { + ptr++; + sess = find_channel (serv, ptr); + } + + if (!sess && ptr[0] == '+') + { + ptr++; + sess = find_channel (serv, ptr); + } + + if (strcmp (nick, ip) == 0) + server_notice = TRUE; + + if (!sess) + { + ptr = 0; + if (prefs.notices_tabs) + { + int stype = server_notice ? SESS_SNOTICES : SESS_NOTICES; + sess = find_session_from_type (stype, serv); + if (!sess) + { + if (stype == SESS_NOTICES) + sess = new_ircwindow (serv, "(notices)", SESS_NOTICES, 0); + else + sess = new_ircwindow (serv, "(snotices)", SESS_SNOTICES, 0); + fe_set_channel (sess); + fe_set_title (sess); + fe_set_nonchannel (sess, FALSE); + userlist_clear (sess); + log_open_or_close (sess); + } + /* Avoid redundancy with some Undernet notices */ + if (!strncmp (msg, "*** Notice -- ", 14)) + msg += 14; + } else + { + /* paranoia check */ + if (msg[0] == '[' && (!serv->have_idmsg || id)) + { + /* guess where chanserv meant to post this -sigh- */ + if (!strcasecmp (nick, "ChanServ") && !find_dialog (serv, nick)) + { + char *dest = strdup (msg + 1); + char *end = strchr (dest, ']'); + if (end) + { + *end = 0; + sess = find_channel (serv, dest); + } + free (dest); + } + } + if (!sess) + sess = find_session_from_nick (nick, serv); + } + if (!sess) + { + if (server_notice) + sess = serv->server_session; + else + sess = serv->front_session; + } + } + + if (msg[0] == 1) + { + msg++; + if (!strncmp (msg, "PING", 4)) + { + inbound_ping_reply (sess, msg + 5, nick); + return; + } + } + po = strchr (msg, '\001'); + if (po) + po[0] = 0; + + if (server_notice) + EMIT_SIGNAL (XP_TE_SERVNOTICE, sess, msg, nick, NULL, NULL, 0); + else if (ptr) + EMIT_SIGNAL (XP_TE_CHANNOTICE, sess, nick, to, msg, NULL, 0); + else + EMIT_SIGNAL (XP_TE_NOTICE, sess, nick, msg, NULL, NULL, 0); +} + +void +inbound_away (server *serv, char *nick, char *msg) +{ + struct away_msg *away = server_away_find_message (serv, nick); + session *sess = NULL; + GSList *list; + + if (away && !strcmp (msg, away->message)) /* Seen the msg before? */ + { + if (prefs.show_away_once && !serv->inside_whois) + return; + } else + { + server_away_save_message (serv, nick, msg); + } + + if (prefs.irc_whois_front) + sess = serv->front_session; + else + { + if (!serv->inside_whois) + sess = find_session_from_nick (nick, serv); + if (!sess) + sess = serv->server_session; + } + + /* possibly hide the output */ + if (!serv->inside_whois || !serv->skip_next_whois) + EMIT_SIGNAL (XP_TE_WHOIS5, sess, nick, msg, NULL, NULL, 0); + + list = sess_list; + while (list) + { + sess = list->data; + if (sess->server == serv) + userlist_set_away (sess, nick, TRUE); + list = list->next; + } +} + +int +inbound_nameslist_end (server *serv, char *chan) +{ + session *sess; + GSList *list; + + if (!strcmp (chan, "*")) + { + list = sess_list; + while (list) + { + sess = list->data; + if (sess->server == serv) + { + sess->end_of_names = TRUE; + sess->ignore_names = FALSE; + } + list = list->next; + } + return TRUE; + } + sess = find_channel (serv, chan); + if (sess) + { + sess->end_of_names = TRUE; + sess->ignore_names = FALSE; + return TRUE; + } + return FALSE; +} + +static gboolean +check_autojoin_channels (server *serv) +{ + char *po; + session *sess; + GSList *list = sess_list; + int i = 0; + GSList *channels, *keys; + + /* shouldnt really happen, the io tag is destroyed in server.c */ + if (!is_server (serv)) + return FALSE; + + /* send auto join list */ + if (serv->autojoin) + { + joinlist_split (serv->autojoin, &channels, &keys); + serv->p_join_list (serv, channels, keys); + joinlist_free (channels, keys); + + free (serv->autojoin); + serv->autojoin = NULL; + } + + /* this is really only for re-connects when you + * join channels not in the auto-join list. */ + while (list) + { + sess = list->data; + if (sess->server == serv) + { + if (sess->willjoinchannel[0] != 0) + { + strcpy (sess->waitchannel, sess->willjoinchannel); + sess->willjoinchannel[0] = 0; + serv->p_join (serv, sess->waitchannel, sess->channelkey); + po = strchr (sess->waitchannel, ','); + if (po) + *po = 0; + po = strchr (sess->waitchannel, ' '); + if (po) + *po = 0; + i++; + } + } + list = list->next; + } + serv->joindelay_tag = 0; + fe_server_event (serv, FE_SE_LOGGEDIN, i); + return FALSE; +} + +void +inbound_next_nick (session *sess, char *nick) +{ + char *newnick; + server *serv = sess->server; + ircnet *net; + + serv->nickcount++; + + switch (serv->nickcount) + { + case 2: + newnick = prefs.nick2; + net = serv->network; + /* use network specific "Second choice"? */ + if (net && !(net->flags & FLAG_USE_GLOBAL) && net->nick2) + newnick = net->nick2; + serv->p_change_nick (serv, newnick); + EMIT_SIGNAL (XP_TE_NICKCLASH, sess, nick, newnick, NULL, NULL, 0); + break; + + case 3: + serv->p_change_nick (serv, prefs.nick3); + EMIT_SIGNAL (XP_TE_NICKCLASH, sess, nick, prefs.nick3, NULL, NULL, 0); + break; + + default: + EMIT_SIGNAL (XP_TE_NICKFAIL, sess, NULL, NULL, NULL, NULL, 0); + } +} + +void +do_dns (session *sess, char *nick, char *host) +{ + char *po; + char tbuf[1024]; + + po = strrchr (host, '@'); + if (po) + host = po + 1; + EMIT_SIGNAL (XP_TE_RESOLVINGUSER, sess, nick, host, NULL, NULL, 0); + snprintf (tbuf, sizeof (tbuf), "exec -d %s %s", prefs.dnsprogram, host); + handle_command (sess, tbuf, FALSE); +} + +static void +set_default_modes (server *serv) +{ + char modes[8]; + + modes[0] = '+'; + modes[1] = '\0'; + + if (prefs.wallops) + strcat (modes, "w"); + if (prefs.servernotice) + strcat (modes, "s"); + if (prefs.invisible) + strcat (modes, "i"); + + if (modes[1] != '\0') + { + serv->p_mode (serv, serv->nick, modes); + } +} + +void +inbound_login_start (session *sess, char *nick, char *servname) +{ + inbound_newnick (sess->server, sess->server->nick, nick, TRUE); + server_set_name (sess->server, servname); + if (sess->type == SESS_SERVER) + log_open_or_close (sess); + /* reset our away status */ + if (sess->server->reconnect_away) + { + handle_command (sess->server->server_session, "away", FALSE); + sess->server->reconnect_away = FALSE; + } +} + +static void +inbound_set_all_away_status (server *serv, char *nick, unsigned int status) +{ + GSList *list; + session *sess; + + list = sess_list; + while (list) + { + sess = list->data; + if (sess->server == serv) + userlist_set_away (sess, nick, status); + list = list->next; + } +} + +void +inbound_uaway (server *serv) +{ + serv->is_away = TRUE; + serv->away_time = time (NULL); + fe_set_away (serv); + + inbound_set_all_away_status (serv, serv->nick, 1); +} + +void +inbound_uback (server *serv) +{ + serv->is_away = FALSE; + serv->reconnect_away = FALSE; + fe_set_away (serv); + + inbound_set_all_away_status (serv, serv->nick, 0); +} + +void +inbound_foundip (session *sess, char *ip) +{ + struct hostent *HostAddr; + + HostAddr = gethostbyname (ip); + if (HostAddr) + { + prefs.dcc_ip = ((struct in_addr *) HostAddr->h_addr)->s_addr; + EMIT_SIGNAL (XP_TE_FOUNDIP, sess, + inet_ntoa (*((struct in_addr *) HostAddr->h_addr)), + NULL, NULL, NULL, 0); + } +} + +void +inbound_user_info_start (session *sess, char *nick) +{ + /* set away to FALSE now, 301 may turn it back on */ + inbound_set_all_away_status (sess->server, nick, 0); +} + +/* reporting new information found about this user. chan may be NULL. + * away may be 0xff to indicate UNKNOWN. */ + +void +inbound_user_info (session *sess, char *chan, char *user, char *host, + char *servname, char *nick, char *realname, + unsigned int away) +{ + server *serv = sess->server; + session *who_sess; + GSList *list; + char *uhost = NULL; + + if (user && host) + { + uhost = g_malloc (strlen (user) + strlen (host) + 2); + sprintf (uhost, "%s@%s", user, host); + } + + if (chan) + { + who_sess = find_channel (serv, chan); + if (who_sess) + userlist_add_hostname (who_sess, nick, uhost, realname, servname, away); + else + { + if (serv->doing_dns && nick && host) + do_dns (sess, nick, host); + } + } + else + { + /* came from WHOIS, not channel specific */ + for (list = sess_list; list; list = list->next) + { + sess = list->data; + if (sess->type == SESS_CHANNEL && sess->server == serv) + { + userlist_add_hostname (sess, nick, uhost, realname, servname, away); + } + } + } + + g_free (uhost); +} + +int +inbound_banlist (session *sess, time_t stamp, char *chan, char *mask, char *banner, int is_exemption) +{ + char *time_str = ctime (&stamp); + server *serv = sess->server; + + time_str[19] = 0; /* get rid of the \n */ + if (stamp == 0) + time_str = ""; + + sess = find_channel (serv, chan); + if (!sess) + { + sess = serv->front_session; + goto nowindow; + } + + if (!fe_is_banwindow (sess)) + { +nowindow: + /* let proto-irc.c do the 'goto def' for exemptions */ + if (is_exemption) + return FALSE; + + EMIT_SIGNAL (XP_TE_BANLIST, sess, chan, mask, banner, time_str, 0); + return TRUE; + } + + fe_add_ban_list (sess, mask, banner, time_str, is_exemption); + return TRUE; +} + +/* execute 1 end-of-motd command */ + +static int +inbound_exec_eom_cmd (char *str, void *sess) +{ + handle_command (sess, (str[0] == '/') ? str + 1 : str, TRUE); + return 1; +} + +void +inbound_login_end (session *sess, char *text) +{ + server *serv = sess->server; + + if (!serv->end_of_motd) + { + if (prefs.ip_from_server && serv->use_who) + { + serv->skip_next_userhost = TRUE; + serv->p_get_ip_uh (serv, serv->nick); /* sends USERHOST mynick */ + } + set_default_modes (serv); + + if (serv->network) + { + /* there may be more than 1, separated by \n */ + if (((ircnet *)serv->network)->command) + token_foreach (((ircnet *)serv->network)->command, '\n', + inbound_exec_eom_cmd, sess); + + /* send nickserv password */ + if (((ircnet *)serv->network)->nickserv) + serv->p_ns_identify (serv, ((ircnet *)serv->network)->nickserv); + } + + /* send JOIN now or wait? */ + if (serv->network && ((ircnet *)serv->network)->nickserv && + prefs.irc_join_delay) + serv->joindelay_tag = fe_timeout_add (prefs.irc_join_delay * 1000, + check_autojoin_channels, serv); + else + check_autojoin_channels (serv); + if (serv->supports_watch) + notify_send_watches (serv); + serv->end_of_motd = TRUE; + } + if (prefs.skipmotd && !serv->motd_skipped) + { + serv->motd_skipped = TRUE; + EMIT_SIGNAL (XP_TE_MOTDSKIP, serv->server_session, NULL, NULL, + NULL, NULL, 0); + return; + } + EMIT_SIGNAL (XP_TE_MOTD, serv->server_session, text, NULL, + NULL, NULL, 0); +} + +void +inbound_identified (server *serv) /* 'MODE +e MYSELF' on freenode */ +{ + if (serv->joindelay_tag) + { + /* stop waiting, just auto JOIN now */ + fe_timeout_remove (serv->joindelay_tag); + serv->joindelay_tag = 0; + check_autojoin_channels (serv); + } +} diff --git a/xchat-2.8.8/src/common/inbound.h b/xchat-2.8.8/src/common/inbound.h new file mode 100644 index 0000000..b972981 --- /dev/null +++ b/xchat-2.8.8/src/common/inbound.h @@ -0,0 +1,39 @@ +#ifndef XCHAT_INBOUND_H +#define XCHAT_INBOUND_H + +void inbound_next_nick (session *sess, char *nick); +void inbound_uback (server *serv); +void inbound_uaway (server *serv); +void inbound_part (server *serv, char *chan, char *user, char *ip, char *reason); +void inbound_upart (server *serv, char *chan, char *ip, char *reason); +void inbound_ukick (server *serv, char *chan, char *kicker, char *reason); +void inbound_kick (server *serv, char *chan, char *user, char *kicker, char *reason); +void inbound_notice (server *serv, char *to, char *nick, char *msg, char *ip, int id); +void inbound_quit (server *serv, char *nick, char *ip, char *reason); +void inbound_topicnew (server *serv, char *nick, char *chan, char *topic); +void inbound_join (server *serv, char *chan, char *user, char *ip); +void inbound_ujoin (server *serv, char *chan, char *nick, char *ip); +void inbound_topictime (server *serv, char *chan, char *nick, time_t stamp); +void inbound_topic (server *serv, char *chan, char *topic_text); +void inbound_user_info_start (session *sess, char *nick); +void inbound_user_info (session *sess, char *chan, char *user, char *host, char *servname, char *nick, char *realname, unsigned int away); +void inbound_foundip (session *sess, char *ip); +int inbound_banlist (session *sess, time_t stamp, char *chan, char *mask, char *banner, int is_exemption); +void inbound_ping_reply (session *sess, char *timestring, char *from); +void inbound_nameslist (server *serv, char *chan, char *names); +int inbound_nameslist_end (server *serv, char *chan); +void inbound_away (server *serv, char *nick, char *msg); +void inbound_login_start (session *sess, char *nick, char *servname); +void inbound_login_end (session *sess, char *text); +void inbound_chanmsg (server *serv, session *sess, char *chan, char *from, char *text, char fromme, int id); +void clear_channel (session *sess); +void set_topic (session *sess, char *topic, char *stripped_topic); +void inbound_privmsg (server *serv, char *from, char *ip, char *text, int id); +void inbound_action (session *sess, char *chan, char *from, char *ip, char *text, int fromme, int id); +void inbound_newnick (server *serv, char *nick, char *newnick, int quiet); +void do_dns (session *sess, char *nick, char *host); +void inbound_identified (server *serv); +gboolean alert_match_word (char *word, char *masks); +gboolean alert_match_text (char *text, char *masks); + +#endif diff --git a/xchat-2.8.8/src/common/inet.h b/xchat-2.8.8/src/common/inet.h new file mode 100644 index 0000000..b420c9c --- /dev/null +++ b/xchat-2.8.8/src/common/inet.h @@ -0,0 +1,43 @@ +/* include stuff for internet */ + +#ifndef WIN32 + +#ifdef WANTSOCKET +#include <sys/types.h> +#include <sys/socket.h> +#endif +#ifdef WANTARPA +#include <netinet/in.h> +#include <arpa/inet.h> +#endif +#ifdef WANTDNS +#include <netdb.h> +#endif +#define closesocket close +#define set_blocking(sok) fcntl(sok, F_SETFL, 0) +#define set_nonblocking(sok) fcntl(sok, F_SETFL, O_NONBLOCK) +#define would_block() (errno == EAGAIN || errno == EWOULDBLOCK) +#define sock_error() (errno) + +#else + +#ifdef USE_IPV6 +#include <winsock2.h> +#include <ws2tcpip.h> +#include <tpipv6.h> +#else +#include <winsock.h> +#endif + +#define set_blocking(sok) { \ + unsigned long zero = 0; \ + ioctlsocket (sok, FIONBIO, &zero); \ + } +#define set_nonblocking(sok) { \ + unsigned long one = 1; \ + ioctlsocket (sok, FIONBIO, &one); \ + } +#define would_block() (WSAGetLastError() == WSAEWOULDBLOCK) +#define sock_error WSAGetLastError + +#endif diff --git a/xchat-2.8.8/src/common/make-te.c b/xchat-2.8.8/src/common/make-te.c new file mode 100644 index 0000000..ed87df3 --- /dev/null +++ b/xchat-2.8.8/src/common/make-te.c @@ -0,0 +1,58 @@ +#include <stdio.h> +#include <string.h> +#include <stdlib.h> + +int main() +{ + char name[512]; + char num[512]; + char help[512]; + char def[512]; + char args[512]; + char buf[512]; + char *defines[512]; + int i = 0, max; + + printf("/* this file is auto generated, edit textevents.in instead! */\n\nconst struct text_event te[] = {\n"); + while(fgets(name, sizeof(name), stdin)) + { + name[strlen(name)-1] = 0; + fgets(num, sizeof(num), stdin); + num[strlen(num)-1] = 0; + fgets(help, sizeof(help), stdin); + help[strlen(help)-1] = 0; + fgets(def, sizeof(def), stdin); + def[strlen(def)-1] = 0; + fgets(args, sizeof(args), stdin); + args[strlen(args)-1] = 0; + fgets(buf, sizeof(buf), stdin); + + if (args[0] == 'n') + printf("\n{\"%s\", %s, %d, \n\"%s\"},\n", + name, help, atoi(args+1) | 128, def); + else + printf("\n{\"%s\", %s, %d, \nN_(\"%s\")},\n", + name, help, atoi(args), def); + defines[i] = strdup (num); + i++; + } + + printf("};\n"); + + fprintf(stderr, "/* this file is auto generated, edit textevents.in instead! */\n\nenum\n{\n"); + max = i; + i = 0; + while (i < max) + { + if (i + 1 < max) + { + fprintf(stderr, "\t%s,\t\t%s,\n", defines[i], defines[i+1]); + i++; + } else + fprintf(stderr, "\t%s,\n", defines[i]); + i++; + } + fprintf(stderr, "\tNUM_XP\n};\n"); + + return 0; +} diff --git a/xchat-2.8.8/src/common/modes.c b/xchat-2.8.8/src/common/modes.c new file mode 100644 index 0000000..1acf7f5 --- /dev/null +++ b/xchat-2.8.8/src/common/modes.c @@ -0,0 +1,836 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <string.h> +#include <stdlib.h> +#include <stdio.h> +#include <glib.h> +#include <glib/gprintf.h> + +#include "xchat.h" +#include "xchatc.h" +#include "modes.h" +#include "server.h" +#include "text.h" +#include "fe.h" +#include "util.h" +#include "inbound.h" +#ifdef HAVE_STRINGS_H +#include <strings.h> +#endif + +typedef struct +{ + server *serv; + char *op; + char *deop; + char *voice; + char *devoice; +} mode_run; + +static int is_prefix_char (server * serv, char c); +static void record_chan_mode (session *sess, char sign, char mode, char *arg); +static char *mode_cat (char *str, char *addition); +static void handle_single_mode (mode_run *mr, char sign, char mode, char *nick, char *chan, char *arg, int quiet, int is_324); +static int mode_has_arg (server *serv, char sign, char mode); +static void mode_print_grouped (session *sess, char *nick, mode_run *mr); +static int mode_chanmode_type (server * serv, char mode); + + +/* word[] - list of nicks. + wpos - index into word[]. Where nicks really start. + end - index into word[]. Last entry plus one. + sign - a char, e.g. '+' or '-' + mode - a mode, e.g. 'o' or 'v' */ +void +send_channel_modes (session *sess, char *tbuf, char *word[], int wpos, + int end, char sign, char mode, int modes_per_line) +{ + int usable_modes, orig_len, len, wlen, i, max; + server *serv = sess->server; + + /* sanity check. IRC RFC says three per line. */ + if (serv->modes_per_line < 3) + serv->modes_per_line = 3; + if (modes_per_line < 1) + modes_per_line = serv->modes_per_line; + + /* RFC max, minus length of "MODE %s " and "\r\n" and 1 +/- sign */ + /* 512 - 6 - 2 - 1 - strlen(chan) */ + max = 503 - strlen (sess->channel); + + while (wpos < end) + { + tbuf[0] = '\0'; + orig_len = len = 0; + + /* we'll need this many modechars too */ + len += modes_per_line; + + /* how many can we fit? */ + for (i = 0; i < modes_per_line; i++) + { + /* no more nicks left? */ + if (wpos + i >= end) + break; + wlen = strlen (word[wpos + i]) + 1; + if (wlen + len > max) + break; + len += wlen; /* length of our whole string so far */ + } + if (i < 1) + return; + usable_modes = i; /* this is how many we'll send on this line */ + + /* add the +/-modemodemodemode */ + len = orig_len; + tbuf[len] = sign; + len++; + for (i = 0; i < usable_modes; i++) + { + tbuf[len] = mode; + len++; + } + tbuf[len] = 0; /* null terminate for the strcat() to work */ + + /* add all the nicknames */ + for (i = 0; i < usable_modes; i++) + { + strcat (tbuf, " "); + strcat (tbuf, word[wpos + i]); + } + serv->p_mode (serv, sess->channel, tbuf); + + wpos += usable_modes; + } +} + +/* does 'chan' have a valid prefix? e.g. # or & */ + +int +is_channel (server * serv, char *chan) +{ + if (strchr (serv->chantypes, chan[0])) + return 1; + return 0; +} + +/* is the given char a valid nick mode char? e.g. @ or + */ + +static int +is_prefix_char (server * serv, char c) +{ + int pos = 0; + char *np = serv->nick_prefixes; + + while (np[0]) + { + if (np[0] == c) + return pos; + pos++; + np++; + } + + if (serv->bad_prefix) + { + if (strchr (serv->bad_nick_prefixes, c)) + /* valid prefix char, but mode unknown */ + return -2; + } + + return -1; +} + +/* returns '@' for ops etc... */ + +char +get_nick_prefix (server * serv, unsigned int access) +{ + int pos; + char c; + + for (pos = 0; pos < USERACCESS_SIZE; pos++) + { + c = serv->nick_prefixes[pos]; + if (c == 0) + break; + if (access & (1 << pos)) + return c; + } + + return 0; +} + +/* returns the access bitfield for a nickname. E.g. + @nick would return 000010 in binary + %nick would return 000100 in binary + +nick would return 001000 in binary */ + +unsigned int +nick_access (server * serv, char *nick, int *modechars) +{ + int i; + unsigned int access = 0; + char *orig = nick; + + while (*nick) + { + i = is_prefix_char (serv, *nick); + if (i == -1) + break; + + /* -2 == valid prefix char, but mode unknown */ + if (i != -2) + access |= (1 << i); + + nick++; + } + + *modechars = nick - orig; + + return access; +} + +/* returns the access number for a particular mode. e.g. + mode 'a' returns 0 + mode 'o' returns 1 + mode 'h' returns 2 + mode 'v' returns 3 + Also puts the nick-prefix-char in 'prefix' */ + +int +mode_access (server * serv, char mode, char *prefix) +{ + int pos = 0; + + while (serv->nick_modes[pos]) + { + if (serv->nick_modes[pos] == mode) + { + *prefix = serv->nick_prefixes[pos]; + return pos; + } + pos++; + } + + *prefix = 0; + + return -1; +} + +static void +record_chan_mode (session *sess, char sign, char mode, char *arg) +{ + /* Somebody needed to acutally update sess->current_modes, needed to + play nice with bouncers, and less mode calls. Also keeps modes up + to date for scripts */ + server *serv = sess->server; + GString *current = g_string_new(sess->current_modes); + gint mode_pos = -1; + gchar *current_char = current->str; + gint modes_length; + gint argument_num = 0; + gint argument_offset = 0; + gint argument_length = 0; + int i = 0; + gchar *arguments_start; + + /* find out if the mode currently exists */ + arguments_start = g_strstr_len(current->str , -1, " "); + if (arguments_start) { + modes_length = arguments_start - current->str; + } + else { + modes_length = current->len; + /* set this to the end of the modes */ + arguments_start = current->str + current->len; + } + + while (mode_pos == -1 && i < modes_length) + { + if (*current_char == mode) + { + mode_pos = i; + } + else + { + i++; + current_char++; + } + } + + /* if the mode currently exists and has an arg, need to know where + * (including leading space) */ + if (mode_pos != -1 && mode_has_arg(serv, '+', mode)) + { + current_char = current->str; + + i = 0; + while (i <= mode_pos) + { + if (mode_has_arg(serv, '+', *current_char)) + argument_num++; + current_char++; + i++; + } + + /* check through arguments for where to start */ + current_char = arguments_start; + i = 0; + while (i < argument_num && *current_char != '\0') + { + if (*current_char == ' ') + i++; + if (i != argument_num) + current_char++; + } + argument_offset = current_char - current->str; + + /* how long the existing argument is for this key + * important for malloc and strncpy */ + if (i == argument_num) + { + argument_length++; + current_char++; + while (*current_char != '\0' && *current_char != ' ') + { + argument_length++; + current_char++; + } + } + } + + /* two cases, adding and removing a mode, handled differently */ + if (sign == '+') + { + if (mode_pos != -1) + { + /* if it already exists, only need to do something (change) + * if there should be a param */ + if (mode_has_arg(serv, sign, mode)) + { + /* leave the old space there */ + current = g_string_erase(current, argument_offset+1, argument_length-1); + current = g_string_insert(current, argument_offset+1, arg); + + free(sess->current_modes); + sess->current_modes = g_string_free(current, FALSE); + } + } + /* mode wasn't there before */ + else + { + /* insert the new mode character */ + current = g_string_insert_c(current, modes_length, mode); + + /* add the argument, with space if there is one */ + if (mode_has_arg(serv, sign, mode)) + { + current = g_string_append_c(current, ' '); + current = g_string_append(current, arg); + } + + free(sess->current_modes); + sess->current_modes = g_string_free(current, FALSE); + } + } + else if (sign == '-' && mode_pos != -1) + { + /* remove the argument first if it has one*/ + if (mode_has_arg(serv, '+', mode)) + current = g_string_erase(current, argument_offset, argument_length); + + /* remove the mode character */ + current = g_string_erase(current, mode_pos, 1); + + free(sess->current_modes); + sess->current_modes = g_string_free(current, FALSE); + } +} + +static char * +mode_cat (char *str, char *addition) +{ + int len; + + if (str) + { + len = strlen (str) + strlen (addition) + 2; + str = realloc (str, len); + strcat (str, " "); + strcat (str, addition); + } else + { + str = strdup (addition); + } + + return str; +} + +/* handle one mode, e.g. + handle_single_mode (mr,'+','b',"elite","#warez","banneduser",) */ + +static void +handle_single_mode (mode_run *mr, char sign, char mode, char *nick, + char *chan, char *arg, int quiet, int is_324) +{ + session *sess; + server *serv = mr->serv; + char outbuf[4]; + + outbuf[0] = sign; + outbuf[1] = 0; + outbuf[2] = mode; + outbuf[3] = 0; + + sess = find_channel (serv, chan); + if (!sess || !is_channel (serv, chan)) + { + /* got modes for a chan we're not in! probably nickmode +isw etc */ + sess = serv->front_session; + goto genmode; + } + + /* is this a nick mode? */ + if (strchr (serv->nick_modes, mode)) + { + /* update the user in the userlist */ + userlist_update_mode (sess, /*nickname */ arg, mode, sign); + } else + { + if (!is_324 && !sess->ignore_mode && mode_chanmode_type(serv, mode) >= 1) + record_chan_mode (sess, sign, mode, arg); + } + + switch (sign) + { + case '+': + switch (mode) + { + case 'k': + safe_strcpy (sess->channelkey, arg, sizeof (sess->channelkey)); + fe_update_channel_key (sess); + fe_update_mode_buttons (sess, mode, sign); + if (!quiet) + EMIT_SIGNAL (XP_TE_CHANSETKEY, sess, nick, arg, NULL, NULL, 0); + return; + case 'l': + sess->limit = atoi (arg); + fe_update_channel_limit (sess); + fe_update_mode_buttons (sess, mode, sign); + if (!quiet) + EMIT_SIGNAL (XP_TE_CHANSETLIMIT, sess, nick, arg, NULL, NULL, 0); + return; + case 'o': + if (!quiet) + mr->op = mode_cat (mr->op, arg); + return; + case 'h': + if (!quiet) + EMIT_SIGNAL (XP_TE_CHANHOP, sess, nick, arg, NULL, NULL, 0); + return; + case 'v': + if (!quiet) + mr->voice = mode_cat (mr->voice, arg); + return; + case 'b': + if (!quiet) + EMIT_SIGNAL (XP_TE_CHANBAN, sess, nick, arg, NULL, NULL, 0); + return; + case 'e': + if (!quiet) + EMIT_SIGNAL (XP_TE_CHANEXEMPT, sess, nick, arg, NULL, NULL, 0); + return; + case 'I': + if (!quiet) + EMIT_SIGNAL (XP_TE_CHANINVITE, sess, nick, arg, NULL, NULL, 0); + return; + } + break; + case '-': + switch (mode) + { + case 'k': + sess->channelkey[0] = 0; + fe_update_channel_key (sess); + fe_update_mode_buttons (sess, mode, sign); + if (!quiet) + EMIT_SIGNAL (XP_TE_CHANRMKEY, sess, nick, NULL, NULL, NULL, 0); + return; + case 'l': + sess->limit = 0; + fe_update_channel_limit (sess); + fe_update_mode_buttons (sess, mode, sign); + if (!quiet) + EMIT_SIGNAL (XP_TE_CHANRMLIMIT, sess, nick, NULL, NULL, NULL, 0); + return; + case 'o': + if (!quiet) + mr->deop = mode_cat (mr->deop, arg); + return; + case 'h': + if (!quiet) + EMIT_SIGNAL (XP_TE_CHANDEHOP, sess, nick, arg, NULL, NULL, 0); + return; + case 'v': + if (!quiet) + mr->devoice = mode_cat (mr->devoice, arg); + return; + case 'b': + if (!quiet) + EMIT_SIGNAL (XP_TE_CHANUNBAN, sess, nick, arg, NULL, NULL, 0); + return; + case 'e': + if (!quiet) + EMIT_SIGNAL (XP_TE_CHANRMEXEMPT, sess, nick, arg, NULL, NULL, 0); + return; + case 'I': + if (!quiet) + EMIT_SIGNAL (XP_TE_CHANRMINVITE, sess, nick, arg, NULL, NULL, 0); + return; + } + } + + fe_update_mode_buttons (sess, mode, sign); + + genmode: + /* Received umode +e. If we're waiting to send JOIN then send now! */ + if (mode == 'e' && sign == '+' && !serv->p_cmp (chan, serv->nick)) + inbound_identified (serv); + + if (!quiet) + { + if (*arg) + { + char *buf = malloc (strlen (chan) + strlen (arg) + 2); + sprintf (buf, "%s %s", chan, arg); + EMIT_SIGNAL (XP_TE_CHANMODEGEN, sess, nick, outbuf, outbuf + 2, buf, 0); + free (buf); + } else + EMIT_SIGNAL (XP_TE_CHANMODEGEN, sess, nick, outbuf, outbuf + 2, chan, 0); + } +} + +/* does this mode have an arg? like +b +l +o */ + +static int +mode_has_arg (server * serv, char sign, char mode) +{ + int type; + + /* if it's a nickmode, it must have an arg */ + if (strchr (serv->nick_modes, mode)) + return 1; + + type = mode_chanmode_type (serv, mode); + switch (type) + { + case 0: /* type A */ + case 1: /* type B */ + return 1; + case 2: /* type C */ + if (sign == '+') + return 1; + case 3: /* type D */ + return 0; + default: + return 0; + } + +} + +/* what type of chanmode is it? -1 for not in chanmode */ +static int +mode_chanmode_type (server * serv, char mode) +{ + /* see what numeric 005 CHANMODES=xxx said */ + char *cm = serv->chanmodes; + int type = 0; + int found = 0; + + while (*cm && !found) + { + if (*cm == ',') + { + type++; + } else if (*cm == mode) + { + found = 1; + } + cm++; + } + if (found) + return type; + /* not found? -1 */ + else + return -1; +} + +static void +mode_print_grouped (session *sess, char *nick, mode_run *mr) +{ + /* print all the grouped Op/Deops */ + if (mr->op) + { + EMIT_SIGNAL (XP_TE_CHANOP, sess, nick, mr->op, NULL, NULL, 0); + free (mr->op); + mr->op = NULL; + } + + if (mr->deop) + { + EMIT_SIGNAL (XP_TE_CHANDEOP, sess, nick, mr->deop, NULL, NULL, 0); + free (mr->deop); + mr->deop = NULL; + } + + if (mr->voice) + { + EMIT_SIGNAL (XP_TE_CHANVOICE, sess, nick, mr->voice, NULL, NULL, 0); + free (mr->voice); + mr->voice = NULL; + } + + if (mr->devoice) + { + EMIT_SIGNAL (XP_TE_CHANDEVOICE, sess, nick, mr->devoice, NULL, NULL, 0); + free (mr->devoice); + mr->devoice = NULL; + } +} + + +/* handle a MODE or numeric 324 from server */ + +void +handle_mode (server * serv, char *word[], char *word_eol[], + char *nick, int numeric_324) +{ + session *sess; + char *chan; + char *modes; + char *argstr; + char sign; + int len; + int arg; + int i, num_args; + int num_modes; + int offset = 3; + int all_modes_have_args = FALSE; + int using_front_tab = FALSE; + mode_run mr; + + mr.serv = serv; + mr.op = mr.deop = mr.voice = mr.devoice = NULL; + + /* numeric 324 has everything 1 word later (as opposed to MODE) */ + if (numeric_324) + offset++; + + chan = word[offset]; + modes = word[offset + 1]; + if (*modes == ':') + modes++; + + if (*modes == 0) + return; /* beyondirc's blank modes */ + + sess = find_channel (serv, chan); + if (!sess) + { + sess = serv->front_session; + using_front_tab = TRUE; + } + /* remove trailing space */ + len = strlen (word_eol[offset]) - 1; + if (word_eol[offset][len] == ' ') + word_eol[offset][len] = 0; + + if (prefs.raw_modes && !numeric_324) + EMIT_SIGNAL (XP_TE_RAWMODES, sess, nick, word_eol[offset], 0, 0, 0); + + if (numeric_324 && !using_front_tab) + { + if (sess->current_modes) + free (sess->current_modes); + sess->current_modes = strdup (word_eol[offset+1]); + } + + sign = *modes; + modes++; + arg = 1; + + /* count the number of arguments (e.g. after the -o+v) */ + num_args = 0; + i = 1; + while ((i + offset + 1) < PDIWORDS) + { + i++; + if (!(*word[i + offset])) + break; + num_args++; + } + + /* count the number of modes (without the -/+ chars */ + num_modes = 0; + i = 0; + while (i < strlen (modes)) + { + if (modes[i] != '+' && modes[i] != '-') + num_modes++; + i++; + } + + if (num_args == num_modes) + all_modes_have_args = TRUE; + + while (*modes) + { + switch (*modes) + { + case '-': + case '+': + /* print all the grouped Op/Deops */ + mode_print_grouped (sess, nick, &mr); + sign = *modes; + break; + default: + argstr = ""; + if ((all_modes_have_args || mode_has_arg (serv, sign, *modes)) && arg < (num_args+1)) + { + arg++; + argstr = word[arg + offset]; + } + handle_single_mode (&mr, sign, *modes, nick, chan, + argstr, numeric_324 || prefs.raw_modes, + numeric_324); + } + + modes++; + } + + /* update the title at the end, now that the mode update is internal now */ + if (!using_front_tab) + fe_set_title (sess); + + /* print all the grouped Op/Deops */ + mode_print_grouped (sess, nick, &mr); +} + +/* handle the 005 numeric */ + +void +inbound_005 (server * serv, char *word[]) +{ + int w; + char *pre; + + w = 4; /* start at the 4th word */ + while (w < PDIWORDS && *word[w]) + { + if (strncmp (word[w], "MODES=", 6) == 0) + { + serv->modes_per_line = atoi (word[w] + 6); + } else if (strncmp (word[w], "CHANTYPES=", 10) == 0) + { + free (serv->chantypes); + serv->chantypes = strdup (word[w] + 10); + } else if (strncmp (word[w], "CHANMODES=", 10) == 0) + { + free (serv->chanmodes); + serv->chanmodes = strdup (word[w] + 10); + } else if (strncmp (word[w], "PREFIX=", 7) == 0) + { + pre = strchr (word[w] + 7, ')'); + if (pre) + { + pre[0] = 0; /* NULL out the ')' */ + free (serv->nick_prefixes); + free (serv->nick_modes); + serv->nick_prefixes = strdup (pre + 1); + serv->nick_modes = strdup (word[w] + 8); + } else + { + /* bad! some ircds don't give us the modes. */ + /* in this case, we use it only to strip /NAMES */ + serv->bad_prefix = TRUE; + if (serv->bad_nick_prefixes) + free (serv->bad_nick_prefixes); + serv->bad_nick_prefixes = strdup (word[w] + 7); + } + } else if (strncmp (word[w], "WATCH=", 6) == 0) + { + serv->supports_watch = TRUE; + } else if (strncmp (word[w], "NETWORK=", 8) == 0) + { +/* if (serv->networkname) + free (serv->networkname); + serv->networkname = strdup (word[w] + 8);*/ + + if (serv->server_session->type == SESS_SERVER) + { + safe_strcpy (serv->server_session->channel, word[w] + 8, CHANLEN); + fe_set_channel (serv->server_session); + } + + /* use /NICKSERV */ + if (strcasecmp (word[w] + 8, "RusNet") == 0) + serv->nickservtype = 1; + else if (strcasecmp (word[w] + 8, "UniBG") == 0) + serv->nickservtype = 3; + else if (strcasecmp (word[w] + 8, "QuakeNet") == 0) + serv->nickservtype = 4; + + } else if (strncmp (word[w], "CASEMAPPING=", 12) == 0) + { + if (strcmp (word[w] + 12, "ascii") == 0) /* bahamut */ + serv->p_cmp = (void *)strcasecmp; + } else if (strncmp (word[w], "CHARSET=", 8) == 0) + { + if (strcasecmp (word[w] + 8, "UTF-8") == 0) + { + server_set_encoding (serv, "UTF-8"); + } + } else if (strcmp (word[w], "NAMESX") == 0) + { + /* 12345678901234567 */ + tcp_send_len (serv, "PROTOCTL NAMESX\r\n", 17); + } else if (strcmp (word[w], "WHOX") == 0) + { + serv->have_whox = TRUE; + } else if (strcmp (word[w], "CAPAB") == 0) + { + serv->have_capab = TRUE; + /* 12345678901234567890 */ + tcp_send_len (serv, "CAPAB IDENTIFY-MSG\r\n", 20); + /* now wait for numeric 290 */ + } else if (strcmp (word[w], "EXCEPTS") == 0) + { +#ifndef WIN32 + serv->have_except = TRUE; +#endif + } else if (strncmp (word[w], "ELIST=", 6) == 0) + { + /* supports LIST >< min/max user counts? */ + if (strchr (word[w] + 6, 'U') || strchr (word[w] + 6, 'u')) + serv->use_listargs = TRUE; + } + + w++; + } +} diff --git a/xchat-2.8.8/src/common/modes.h b/xchat-2.8.8/src/common/modes.h new file mode 100644 index 0000000..3f9c4a7 --- /dev/null +++ b/xchat-2.8.8/src/common/modes.h @@ -0,0 +1,12 @@ +#ifndef XCHAT_MODES_H +#define XCHAT_MODES_H + +int is_channel (server *serv, char *chan); +char get_nick_prefix (server *serv, unsigned int access); +unsigned int nick_access (server *serv, char *nick, int *modechars); +int mode_access (server *serv, char mode, char *prefix); +void inbound_005 (server *serv, char *word[]); +void handle_mode (server *serv, char *word[], char *word_eol[], char *nick, int numeric_324); +void send_channel_modes (session *sess, char *tbuf, char *word[], int start, int end, char sign, char mode, int modes_per_line); + +#endif diff --git a/xchat-2.8.8/src/common/msproxy.c b/xchat-2.8.8/src/common/msproxy.c new file mode 100644 index 0000000..9c85394 --- /dev/null +++ b/xchat-2.8.8/src/common/msproxy.c @@ -0,0 +1,467 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * + * MS Proxy (ISA server) support is (c) 2006 Pavel Fedin <sonic_amiga@rambler.ru> + * based on Dante source code + * Copyright (c) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + * Inferno Nettverk A/S, Norway. All rights reserved. + */ + +/*#define DEBUG_MSPROXY*/ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <unistd.h> +#include <fcntl.h> + +#define WANTSOCKET +#define WANTARPA +#include "inet.h" + +#include "xchat.h" +#include "network.h" +#include "xchatc.h" +#include "server.h" +#include "msproxy.h" + + +#ifdef USE_MSPROXY +#include <ntlm.h> + +static int +send_msprequest(s, state, request, end) + int s; + struct msproxy_state_t *state; + struct msproxy_request_t *request; + char *end; +{ + ssize_t w; + size_t l; + + request->magic25 = htonl(MSPROXY_VERSION); + request->serverack = state->seq_recv; + /* don't start incrementing sequence until we are acking packet #2. */ + request->sequence = (unsigned char)(request->serverack >= 2 ? state->seq_sent + 1 : 0); + + memcpy(request->RWSP, "RWSP", sizeof(request->RWSP)); + + l = end - (char *)request; + /* all requests must be atleast MSPROXY_MINLENGTH it seems. */ + if (l < MSPROXY_MINLENGTH) { + bzero(end, (size_t)(MSPROXY_MINLENGTH - l)); + l = MSPROXY_MINLENGTH; + } + + if ((w = send(s, request, l, 0)) != l) { +#ifdef DEBUG_MSPROXY + printf ("send_msprequest(): send() failed (%d bytes sent instead of %d\n", w, l); + perror ("Error is"); +#endif + return -1; + } + state->seq_sent = request->sequence; + + return w; +} + +static int +recv_mspresponse(s, state, response) + int s; + struct msproxy_state_t *state; + struct msproxy_response_t *response; +{ + ssize_t r; + + do { + if ((r = recv (s, response, sizeof (*response), 0)) < MSPROXY_MINLENGTH) { +#ifdef DEBUG_MSPROXY + printf ("recv_mspresponse(): expected to read atleast %d, read %d\n", MSPROXY_MINLENGTH, r); +#endif + return -1; + } + if (state->seq_recv == 0) + break; /* not started incrementing yet. */ +#ifdef DEBUG_MSPROXY + if (response->sequence == state->seq_recv) + printf ("seq_recv: %d, dup response, seqnumber: 0x%x\n", state->seq_recv, response->sequence); +#endif + } while (response->sequence == state->seq_recv); + + state->seq_recv = response->sequence; + + return r; +} + +int +traverse_msproxy (int sok, char *serverAddr, int port, struct msproxy_state_t *state, netstore *ns_proxy, int csok4, int csok6, int *csok, char bound) +{ + struct msproxy_request_t req; + struct msproxy_response_t res; + char *data, *p; + char hostname[NT_MAXNAMELEN]; + char ntdomain[NT_MAXNAMELEN]; + char challenge[8]; + netstore *ns_client; + int clientport; + guint32 destaddr; + guint32 flags; + + if (!prefs.proxy_auth || !prefs.proxy_user[0] || !prefs.proxy_pass[0] ) + return 1; + + /* MS proxy protocol implementation currently doesn't support IPv6 */ + destaddr = net_getsockaddr_v4 (ns_proxy); + if (!destaddr) + return 1; + + state->seq_recv = 0; + state->seq_sent = 0; + +#ifdef DEBUG_MSPROXY + printf ("Connecting to %s:%d via MS proxy\n", serverAddr, port); +#endif + + gethostname (hostname, NT_MAXNAMELEN); + p = strchr (hostname, '.'); + if (p) + *p = '\0'; + + bzero (&req, sizeof(req)); + req.clientid = htonl(0x0a000000); /* Initial client ID is always 0x0a */ + req.command = htons(MSPROXY_HELLO); /* HELLO command */ + req.packet.hello.magic5 = htons(0x4b00); /* Fill in magic values */ + req.packet.hello.magic10 = htons(0x1400); + req.packet.hello.magic15 = htons(0x0400); + req.packet.hello.magic20 = htons(0x5704); + req.packet.hello.magic25 = htons(0x0004); + req.packet.hello.magic30 = htons(0x0100); + req.packet.hello.magic35 = htons(0x4a02); + req.packet.hello.magic40 = htons(0x3000); + req.packet.hello.magic45 = htons(0x4400); + req.packet.hello.magic50 = htons(0x3900); + data = req.packet.hello.data; + strcpy (data, prefs.proxy_user); /* Append a username */ + data += strlen (prefs.proxy_user)+2; /* +2 automatically creates second empty string */ + strcpy (data, MSPROXY_EXECUTABLE); /* Append an application name */ + data += strlen (MSPROXY_EXECUTABLE)+1; + strcpy (data, hostname); /* Append a hostname */ + data += strlen (hostname)+1; + + if (send_msprequest(sok, state, &req, data) == -1) + return 1; + + if (recv_mspresponse(sok, state, &res) == -1) + return 1; + + if (strcmp(res.RWSP, "RWSP") != 0) { +#ifdef DEBUG_MSPROXY + printf ("Received mailformed packet (no RWSP signature)\n"); +#endif + return 1; + } + + if (ntohs(res.command) >> 8 != 0x10) { +#ifdef DEBUG_MSPROXY + printf ("expected res.command = 10??, is %x", ntohs(res.command)); +#endif + return 1; + } + + state->clientid = htonl(rand()); + state->serverid = res.serverid; + +#ifdef DEBUG_MSPROXY + printf ("clientid: 0x%x, serverid: 0x%0x\n", state->clientid, state->serverid); + printf ("packet #2\n"); +#endif + + /* almost identical. */ + req.clientid = state->clientid; + req.serverid = state->serverid; + + if (send_msprequest(sok, state, &req, data) == -1) + return 1; + + if (recv_mspresponse(sok, state, &res) == -1) + return 1; + + if (res.serverid != state->serverid) { +#ifdef DEBUG_MSPROXY + printf ("expected serverid = 0x%x, is 0x%x\n",state->serverid, res.serverid); +#endif + return 1; + } + + if (res.sequence != 0x01) { +#ifdef DEBUG_MSPROXY + printf ("expected res.sequence = 0x01, is 0x%x\n", res.sequence); +#endif + return 1; + } + + if (ntohs(res.command) != MSPROXY_USERINFO_ACK) { +#ifdef DEBUG_MSPROXY + printf ("expected res.command = 0x%x, is 0x%x\n", MSPROXY_USERINFO_ACK, ntohs(res.command)); +#endif + return 1; + } + +#ifdef DEBUG_MSPROXY + printf ("packet #3\n"); +#endif + + bzero(&req, sizeof(req)); + req.clientid = state->clientid; + req.serverid = state->serverid; + req.command = htons(MSPROXY_AUTHENTICATE); + memcpy(req.packet.auth.NTLMSSP, "NTLMSSP", sizeof("NTLMSSP")); + req.packet.auth.bindaddr = htonl(0x02000000); + req.packet.auth.msgtype = htonl(0x01000000); + /* NTLM flags: 0x80000000 Negotiate LAN Manager key + 0x10000000 Negotiate sign + 0x04000000 Request target + 0x02000000 Negotiate OEM + 0x00800000 Always sign + 0x00020000 Negotiate NTLM + */ + req.packet.auth.flags = htonl(0x06020000); + + if (send_msprequest(sok, state, &req, &req.packet.auth.data) == -1) + return 1; + + if (recv_mspresponse(sok, state, &res) == -1) + return 1; + + if (res.serverid != state->serverid) { +#ifdef DEBUG_MSPROXY + printf ("expected serverid = 0x%x, is 0x%x\n", state->serverid, res.serverid); +#endif + return 1; + } + + if (ntohs(res.command) != MSPROXY_AUTHENTICATE_ACK) { +#ifdef DEBUG_MSPROXY + printf ("expected res.command = 0x%x, is 0x%x\n", MSPROXY_AUTHENTICATE_ACK, ntohs(res.command)); +#endif + return 1; + } + + flags = res.packet.auth.flags & htonl(0x00020000); /* Remember if the server supports NTLM */ + memcpy(challenge, &res.packet.auth.challenge, sizeof(challenge)); + memcpy(ntdomain, &res.packet.auth.NTLMSSP[res.packet.auth.target.offset], res.packet.auth.target.len); + ntdomain[res.packet.auth.target.len] = 0; + +#ifdef DEBUG_MSPROXY + printf ("ntdomain: \"%s\"\n", ntdomain); + printf ("packet #4\n"); +#endif + + bzero(&req, sizeof(req)); + req.clientid = state->clientid; + req.serverid = state->serverid; + req.command = htons(MSPROXY_AUTHENTICATE_2); /* Authentication response */ + req.packet.auth2.magic3 = htons(0x0200); /* Something */ + memcpy(req.packet.auth2.NTLMSSP, "NTLMSSP", sizeof("NTLMSSP")); /* Start of NTLM message */ + req.packet.auth2.msgtype = htonl(0x03000000); /* Message type 2 */ + req.packet.auth2.flags = flags | htonl(0x02000000); /* Choose authentication method */ + data = req.packet.auth2.data; + if (flags) { + req.packet.auth2.lm_resp.len = 0; /* We are here if NTLM is supported, */ + req.packet.auth2.lm_resp.alloc = 0; /* Do not fill in insecure LM response */ + req.packet.auth2.lm_resp.offset = data - req.packet.auth2.NTLMSSP; + req.packet.auth2.ntlm_resp.len = 24; /* Fill in NTLM response security buffer */ + req.packet.auth2.ntlm_resp.alloc = 24; + req.packet.auth2.ntlm_resp.offset = data - req.packet.auth2.NTLMSSP; + ntlm_smb_nt_encrypt(prefs.proxy_pass, challenge, data); /* Append an NTLM response */ + data += 24; + } else { + req.packet.auth2.lm_resp.len = 24; /* Fill in LM response security buffer */ + req.packet.auth2.lm_resp.alloc = 24; + req.packet.auth2.lm_resp.offset = data - req.packet.auth2.NTLMSSP; + ntlm_smb_encrypt(prefs.proxy_pass, challenge, data); /* Append an LM response */ + data += 24; + req.packet.auth2.ntlm_resp.len = 0; /* NTLM response is empty */ + req.packet.auth2.ntlm_resp.alloc = 0; + req.packet.auth2.ntlm_resp.offset = data - req.packet.auth2.NTLMSSP; + } + req.packet.auth2.ntdomain_buf.len = strlen(ntdomain); /* Domain name */ + req.packet.auth2.ntdomain_buf.alloc = req.packet.auth2.ntdomain_buf.len; + req.packet.auth2.ntdomain_buf.offset = data - req.packet.auth2.NTLMSSP; + strcpy(data, ntdomain); + data += req.packet.auth2.ntdomain_buf.len; + req.packet.auth2.username_buf.len = strlen(prefs.proxy_user); /* Username */ + req.packet.auth2.username_buf.alloc = req.packet.auth2.username_buf.len; + req.packet.auth2.username_buf.offset = data - req.packet.auth2.NTLMSSP; + strcpy(data, prefs.proxy_user); + data += req.packet.auth2.username_buf.len; + req.packet.auth2.clienthost_buf.len = strlen(hostname); /* Hostname */ + req.packet.auth2.clienthost_buf.alloc = req.packet.auth2.clienthost_buf.len; + req.packet.auth2.clienthost_buf.offset = data - req.packet.auth2.NTLMSSP; + strcpy(data, hostname); + data += req.packet.auth2.clienthost_buf.len; + req.packet.auth2.sessionkey_buf.len = 0; /* Session key (we don't use it) */ + req.packet.auth2.sessionkey_buf.alloc = 0; + req.packet.auth2.sessionkey_buf.offset = data - req.packet.auth2.NTLMSSP; + + if (send_msprequest(sok, state, &req, data) == -1) + return 1; + + if (recv_mspresponse(sok, state, &res) == -1) + return 1; + + if (res.serverid != state->serverid) { +#ifdef DEBUG_MSPROXY + printf ("expected res.serverid = 0x%x, is 0x%x\n", state->serverid, res.serverid); +#endif + return 1; + } + + if (res.clientack != 0x01) { +#ifdef DEBUG_MSPROXY + printf ("expected res.clientack = 0x01, is 0x%x\n", res.clientack); +#endif + return 1; + } + + if (ntohs(res.command) >> 8 != 0x47) { +#ifdef DEBUG_MSPROXY + printf ("expected res.command = 47??, is 0x%x\n", ntohs(res.command)); +#endif + return 1; + } + + if (ntohs(res.command) == MSPROXY_AUTHENTICATE_2_NAK) { +#ifdef DEBUG_MSPROXY + printf ("Authentication failed\n"); +#endif + return -1; + } + +#ifdef DEBUG_MSPROXY + printf ("packet #5\n"); +#endif + + bzero(&req, sizeof(req)); + req.clientid = state->clientid; + req.serverid = state->serverid; + req.command = htons(MSPROXY_CONNECT); + req.packet.connect.magic2 = htons(0x0200); + req.packet.connect.magic6 = htons(0x0200); + req.packet.connect.destport = htons(port); + req.packet.connect.destaddr = destaddr; + data = req.packet.connect.executable; + strcpy(data, MSPROXY_EXECUTABLE); + data += strlen(MSPROXY_EXECUTABLE) + 1; + + /* + * need to tell server what port we will connect from, so we bind our sockets. + */ + ns_client = net_store_new (); + if (!bound) { + net_store_fill_any (ns_client); + net_bind(ns_client, csok4, csok6); +#ifdef DEBUG_MSPROXY + perror ("bind() result"); +#endif + } + clientport = net_getsockport(csok4, csok6); + if (clientport == -1) { +#ifdef DEBUG_MSPROXY + printf ("Unable to obtain source port\n"); +#endif + return 1; + } + req.packet.connect.srcport = clientport; + + if (send_msprequest(sok, state, &req, data) == -1) + return 1; + + if (recv_mspresponse(sok, state, &res) == -1) + return 1; + + if (ntohs(res.command) != MSPROXY_CONNECT_ACK) { +#ifdef DEBUG_MSPROXY + printf ("expected res.command = 0x%x, is 0x%x\n",MSPROXY_CONNECT_ACK, ntohs(res.command)); +#endif + return 1; + } + + net_store_fill_v4 (ns_client, res.packet.connect.clientaddr, res.packet.connect.clientport); + +#ifdef DEBUG_MSPROXY + printf ("Connecting...\n"); +#endif + if (net_connect (ns_client, csok4, csok6, csok) != 0) { +#ifdef DEBUG_MSPROXY + printf ("Failed to connect to port %d\n", htons(res.packet.connect.clientport)); +#endif + net_store_destroy (ns_client); + return 1; + } + net_store_destroy (ns_client); +#ifdef DEBUG_MSPROXY + printf ("packet #6\n"); +#endif + + req.clientid = state->clientid; + req.serverid = state->serverid; + req.command = htons(MSPROXY_USERINFO_ACK); + + if (send_msprequest(sok, state, &req, req.packet.connack.data) == -1) + return 1; + + return 0; +} + +void +msproxy_keepalive (void) +{ + server *serv; + GSList *list = serv_list; + struct msproxy_request_t req; + struct msproxy_response_t res; + + while (list) + { + serv = list->data; + if (serv->connected && (serv->proxy_sok != -1)) + { +#ifdef DEBUG_MSPROXY + printf ("sending MS proxy keepalive packet\n"); +#endif + + bzero(&req, sizeof(req)); + req.clientid = serv->msp_state.clientid; + req.serverid = serv->msp_state.serverid; + req.command = htons(MSPROXY_HELLO); + + if (send_msprequest(serv->proxy_sok, &serv->msp_state, &req, req.packet.hello.data) == -1) + continue; + + recv_mspresponse(serv->proxy_sok, &serv->msp_state, &res); + +#ifdef DEBUG_MSPROXY + if (ntohs(res.command) != MSPROXY_USERINFO_ACK) + printf ("expected res.command = 0x%x, is 0x%x\n", MSPROXY_USERINFO_ACK, ntohs(res.command)); +#endif + } + list = list->next; + } +} + +#endif diff --git a/xchat-2.8.8/src/common/msproxy.h b/xchat-2.8.8/src/common/msproxy.h new file mode 100644 index 0000000..d37c81c --- /dev/null +++ b/xchat-2.8.8/src/common/msproxy.h @@ -0,0 +1,257 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * + * MS Proxy (ISA server) support is (c) 2006 Pavel Fedin <sonic_amiga@rambler.ru> + * based on Dante source code + * Copyright (c) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + * Inferno Nettverk A/S, Norway. All rights reserved. + */ + +#include "network.h" + +#define MSPROXY_EXECUTABLE "xchat.exe" /* This probably can be used for access control on the server side */ + +#define MSPROXY_MINLENGTH 172 /* minimum length of packet. */ +#define NT_MAXNAMELEN 17 /* maximum name length (domain etc), comes from NetBIOS */ +#define MSPROXY_VERSION 0x00010200 /* MS Proxy v2 ? */ + +/* Commands / responses */ +#define MSPROXY_HELLO 0x0500 /* packet 1 from client. */ +#define MSPROXY_HELLO_ACK 0x1000 /* packet 1 from server. */ + +#define MSPROXY_USERINFO_ACK 0x0400 /* packet 2 from server. */ + +#define MSPROXY_AUTHENTICATE 0x4700 /* authentication request */ +#define MSPROXY_AUTHENTICATE_ACK 0x4714 /* authentication challenge */ + +#define MSPROXY_AUTHENTICATE_2 0x4701 /* authentication response */ +#define MSPROXY_AUTHENTICATE_2_ACK 0x4715 /* authentication passed */ +#define MSPROXY_AUTHENTICATE_2_NAK 0x4716 /* authentication failure */ + +#define MSPROXY_CONNECT 0x071e /* connect request. */ +#define MSPROXY_CONNECT_ACK 0x0703 /* connect request accepted. */ + +#pragma pack(1) + +struct ntlm_buffer { + guint16 len; + guint16 alloc; + guint32 offset; +}; + +struct msproxy_request_t { + guint32 clientid; /* 1-4 */ + guint32 magic25; /* 5-8 */ + guint32 serverid; /* 9-12 */ + unsigned char serverack; /* 13: ack of last server packet */ + char pad10[3]; /* 14-16 */ + unsigned char sequence; /* 17: sequence # of this packet. */ + char pad11[7]; /* 18-24 */ + char RWSP[4]; /* 25-28: 0x52,0x57,0x53,0x50 */ + char pad15[8]; /* 29-36 */ + guint16 command; /* 37-38 */ + + /* packet specifics start at 39. */ + union { + struct { + char pad1[18]; /* 39-56 */ + guint16 magic3; /* 57-58 */ + char pad3[114]; /* 59-172 */ + guint16 magic5; /* 173-174: 0x4b, 0x00 */ + char pad5[2]; /* 175-176 */ + guint16 magic10; /* 177-178: 0x14, 0x00 */ + char pad6[2]; /* 179-180 */ + guint16 magic15; /* 181-182: 0x04, 0x00 */ + char pad10[2]; /* 183-184 */ + guint16 magic16; /* 185-186 */ + char pad11[2]; /* 187-188 */ + guint16 magic20; /* 189-190: 0x57, 0x04 */ + guint16 magic25; /* 191-192: 0x00, 0x04 */ + guint16 magic30; /* 193-194: 0x01, 0x00 */ + char pad20[2]; /* 195-196: 0x4a, 0x02 */ + guint16 magic35; /* 197-198: 0x4a, 0x02 */ + char pad30[10]; /* 199-208 */ + guint16 magic40; /* 209-210: 0x30, 0x00 */ + char pad40[2]; /* 211-212 */ + guint16 magic45; /* 213-214: 0x44, 0x00 */ + char pad45[2]; /* 215-216 */ + guint16 magic50; /* 217-218: 0x39, 0x00 */ + char pad50[2]; /* 219-220 */ + char data[256]; /* 221-EOP: a sequence of NULL-terminated strings: + - username; + - empty string (just a NULL); + - application name; + - hostname */ + } hello; + + struct { + char pad1[4]; /* 39-42 */ + guint16 magic2; /* 43-44 */ + char pad10[12]; /* 45-56 */ + guint32 bindaddr; /* 57-60: address to bind. */ + guint16 bindport; /* 61-62: port to bind. */ + char pad15[2]; /* 63-64 */ + guint16 magic3; /* 65-66 */ + guint16 boundport; /* 67-68 */ + char pad20[104]; /* 69-172 */ + char NTLMSSP[sizeof("NTLMSSP")]; /* 173-180: "NTLMSSP" */ + guint32 msgtype; /* 181-184: NTLM message type = 1 */ + guint32 flags; /* 185-188: NTLM message flags */ + guint16 magic20; /* 189-190: 0x28, 0x00 */ + char pad30[2]; /* 191-192 */ + guint16 magic25; /* 193-194: 0x96, 0x82 */ + guint16 magic30; /* 195-196: 0x01, 0x00 */ + char pad40[12]; /* 197-208 */ + guint16 magic50; /* 209-210: 0x30, 0x00 */ + char pad50[6]; /* 211-216 */ + guint16 magic55; /* 217-218: 0x30, 0x00 */ + char pad55[2]; /* 219-220 */ + char data[0]; /* Dummy end marker, no real data required */ + } auth; + + struct { + char pad1[4]; /* 39-42 */ + guint16 magic1; /* 43-44 */ + guint32 magic2; /* 45-48 */ + char pad2[8]; /* 49-56 */ + guint16 magic3; /* 57-58 */ + char pad3[6]; /* 59-64 */ + guint16 magic4; /* 65-66 */ + guint16 boundport; /* 67-68 */ + char pad4[104]; /* 69-172 */ + char NTLMSSP[sizeof("NTLMSSP")]; /* 173-180: "NTLMSSP" */ + guint32 msgtype; /* 181-184: NTLM message type = 3 */ + struct ntlm_buffer lm_resp; /* 185-192: LM response security buffer */ + struct ntlm_buffer ntlm_resp; /* 193-200: NTLM response security buffer */ + struct ntlm_buffer ntdomain_buf; /* 201-208: domain name security buffer */ + struct ntlm_buffer username_buf; /* 209-216: username security buffer */ + struct ntlm_buffer clienthost_buf; /* 217-224: hostname security buffer */ + struct ntlm_buffer sessionkey_buf; /* 225-232: session key security buffer */ + guint32 flags; /* 233-236: message flags */ + char data[1024]; /* 237-EOP: data area */ + } auth2; + + struct { + guint16 magic1; /* 39-40 */ + char pad1[2]; /* 41-42 */ + guint16 magic2; /* 43-44 */ + guint32 magic3; /* 45-48 */ + char pad5[8]; /* 48-56 */ + guint16 magic6; /* 57-58: 0x0200 */ + guint16 destport; /* 59-60 */ + guint32 destaddr; /* 61-64 */ + char pad10[4]; /* 65-68 */ + guint16 magic10; /* 69-70 */ + char pad15[2]; /* 71-72 */ + guint16 srcport; /* 73-74: port client connects from */ + char pad20[82]; /* 75-156 */ + char executable[256]; /* 76-EOP: application name */ + } connect; + + struct { + guint16 magic1; /* 39-40 */ + char pad5[2]; /* 41-42 */ + guint16 magic5; /* 43-44 */ + guint32 magic10; /* 45-48 */ + char pad10[2]; /* 49-50 */ + guint16 magic15; /* 51-52 */ + guint32 magic16; /* 53-56 */ + guint16 magic20; /* 57-58 */ + guint16 clientport; /* 59-60: forwarded port. */ + guint32 clientaddr; /* 61-64: forwarded address. */ + guint32 magic30; /* 65-68 */ + guint32 magic35; /* 69-72 */ + guint16 serverport; /* 73-74: port server will connect to us from. */ + guint16 srcport; /* 75-76: connect request; port used on client behalf. */ + guint16 boundport; /* 77-78: bind request; port used on client behalf. */ + guint32 boundaddr; /* 79-82: addr used on client behalf */ + char pad30[90]; /* 83-172 */ + char data[0]; /* End marker */ + } connack; + + } packet; +}; + +struct msproxy_response_t { + guint32 packetid; /* 1-4 */ + guint32 magic5; /* 5-8 */ + guint32 serverid; /* 9-12 */ + char clientack; /* 13: ack of last client packet. */ + char pad5[3]; /* 14-16 */ + unsigned char sequence; /* 17: sequence # of this packet. */ + char pad10[7]; /* 18-24 */ + char RWSP[4]; /* 25-28: 0x52,0x57,0x53,0x50 */ + char pad15[8]; /* 29-36 */ + guint16 command; /* 37-38 */ + + union { + struct { + char pad5[18]; /* 39-56 */ + guint16 magic20; /* 57-58: 0x02, 0x00 */ + char pad10[6]; /* 59-64 */ + guint16 magic30; /* 65-66: 0x74, 0x01 */ + char pad15[2]; /* 67-68 */ + guint16 magic35; /* 69-70: 0x0c, 0x00 */ + char pad20[6]; /* 71-76 */ + guint16 magic50; /* 77-78: 0x04, 0x00 */ + char pad30[6]; /* 79-84 */ + guint16 magic60; /* 85-86: 0x65, 0x05 */ + char pad35[2]; /* 87-88 */ + guint16 magic65; /* 89-90: 0x02, 0x00 */ + char pad40[8]; /* 91-98 */ + guint16 udpport; /* 99-100 */ + guint32 udpaddr; /* 101-104 */ + } hello; + + struct { + char pad1[6]; /* 39-44 */ + guint32 magic10; /* 45-48 */ + char pad3[10]; /* 49-58 */ + guint16 boundport; /* 59-60: port server bound for us. */ + guint32 boundaddr; /* 61-64: addr server bound for us. */ + char pad10[4]; /* 65-68 */ + guint16 magic15; /* 69-70 */ + char pad15[102]; /* 70-172 */ + char NTLMSSP[sizeof("NTLMSSP")]; /* 173-180: "NTLMSSP" */ + guint32 msgtype; /* 181-184: NTLM message type = 2 */ + struct ntlm_buffer target; /* 185-192: target security buffer */ + guint32 flags; /* 193-196: NTLM message flags */ + char challenge[8]; /* 197-204: NTLM challenge request */ + char context[8]; /* 205-212: NTLM context */ + char data[1024]; /* 213-EOP: target information data */ + } auth; + + struct { + guint16 magic1; /* 39-40 */ + char pad5[18]; /* 41-58 */ + guint16 clientport; /* 59-60: forwarded port. */ + guint32 clientaddr; /* 61-64: forwarded address. */ + guint32 magic10; /* 65-68 */ + guint32 magic15; /* 69-72 */ + guint16 serverport; /* 73-74: port server will connect to us from. */ + guint16 srcport; /* 75-76: connect request; port used on client behalf. */ + guint16 boundport; /* 77-78: bind request; port used on client behalf. */ + guint32 boundaddr; /* 79-82: addr used on client behalf */ + char pad10[90]; /* 83-172 */ + } connect; + } packet; +}; + +#pragma pack() + +int traverse_msproxy (int sok, char *serverAddr, int port, struct msproxy_state_t *state, netstore *ns_proxy, int csok4, int csok6, int *csok, char bound); +void msproxy_keepalive (void); diff --git a/xchat-2.8.8/src/common/network.c b/xchat-2.8.8/src/common/network.c new file mode 100644 index 0000000..0c40950 --- /dev/null +++ b/xchat-2.8.8/src/common/network.c @@ -0,0 +1,383 @@ +/* X-Chat + * Copyright (C) 2001 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +/* ipv4 and ipv6 networking functions with a common interface */ + +#include <stdlib.h> +#include <string.h> +#include <stdio.h> +#include <unistd.h> +#include <glib.h> + +#include "../../config.h" /* grab USE_IPV6 and LOOKUPD defines */ + +#define WANTSOCKET +#define WANTARPA +#define WANTDNS +#include "inet.h" + +#define NETWORK_PRIVATE +#include "network.h" + +#define RAND_INT(n) ((int)(rand() / (RAND_MAX + 1.0) * (n))) + + +/* ================== COMMON ================= */ + +static void +net_set_socket_options (int sok) +{ + socklen_t sw; + + sw = 1; + setsockopt (sok, SOL_SOCKET, SO_REUSEADDR, (char *) &sw, sizeof (sw)); + sw = 1; + setsockopt (sok, SOL_SOCKET, SO_KEEPALIVE, (char *) &sw, sizeof (sw)); +} + +char * +net_ip (guint32 addr) +{ + struct in_addr ia; + + ia.s_addr = htonl (addr); + return inet_ntoa (ia); +} + +void +net_store_destroy (netstore * ns) +{ +#ifdef USE_IPV6 + if (ns->ip6_hostent) + freeaddrinfo (ns->ip6_hostent); +#endif + free (ns); +} + +netstore * +net_store_new (void) +{ + netstore *ns; + + ns = malloc (sizeof (netstore)); + memset (ns, 0, sizeof (netstore)); + + return ns; +} + +#ifndef USE_IPV6 + +/* =================== IPV4 ================== */ + +/* + A note about net_resolve and lookupd: + + Many IRC networks rely on round-robin DNS for load balancing, rotating the list + of IP address on each query. However, this method breaks when DNS queries are + cached. Mac OS X and Darwin handle DNS lookups through the lookupd daemon, which + caches queries in its default configuration: thus, if we always pick the first + address, we will be stuck with the same host (which might be down!) until the + TTL reaches 0 or lookupd is reset (typically, at reboot). Therefore, we need to + pick a random address from the result list, instead of always using the first. +*/ + +char * +net_resolve (netstore * ns, char *hostname, int port, char **real_host) +{ + ns->ip4_hostent = gethostbyname (hostname); + if (!ns->ip4_hostent) + return NULL; + + memset (&ns->addr, 0, sizeof (ns->addr)); +#ifdef LOOKUPD + int count = 0; + while (ns->ip4_hostent->h_addr_list[count]) count++; + memcpy (&ns->addr.sin_addr, + ns->ip4_hostent->h_addr_list[RAND_INT(count)], + ns->ip4_hostent->h_length); +#else + memcpy (&ns->addr.sin_addr, ns->ip4_hostent->h_addr, + ns->ip4_hostent->h_length); +#endif + ns->addr.sin_port = htons (port); + ns->addr.sin_family = AF_INET; + + *real_host = strdup (ns->ip4_hostent->h_name); + return strdup (inet_ntoa (ns->addr.sin_addr)); +} + +int +net_connect (netstore * ns, int sok4, int sok6, int *sok_return) +{ + *sok_return = sok4; + return connect (sok4, (struct sockaddr *) &ns->addr, sizeof (ns->addr)); +} + +void +net_bind (netstore * tobindto, int sok4, int sok6) +{ + bind (sok4, (struct sockaddr *) &tobindto->addr, sizeof (tobindto->addr)); +} + +void +net_sockets (int *sok4, int *sok6) +{ + *sok4 = socket (AF_INET, SOCK_STREAM, 0); + *sok6 = -1; + net_set_socket_options (*sok4); +} + +void +udp_sockets (int *sok4, int *sok6) +{ + *sok4 = socket (AF_INET, SOCK_DGRAM, 0); + *sok6 = -1; +} + +void +net_store_fill_any (netstore *ns) +{ + ns->addr.sin_family = AF_INET; + ns->addr.sin_addr.s_addr = INADDR_ANY; + ns->addr.sin_port = 0; +} + +void +net_store_fill_v4 (netstore *ns, guint32 addr, int port) +{ + ns->addr.sin_family = AF_INET; + ns->addr.sin_addr.s_addr = addr; + ns->addr.sin_port = port; +} + +guint32 +net_getsockaddr_v4 (netstore *ns) +{ + return ns->addr.sin_addr.s_addr; +} + +int +net_getsockport (int sok4, int sok6) +{ + struct sockaddr_in addr; + int len = sizeof (addr); + + if (getsockname (sok4, (struct sockaddr *)&addr, &len) == -1) + return -1; + return addr.sin_port; +} + +#else + +/* =================== IPV6 ================== */ + +char * +net_resolve (netstore * ns, char *hostname, int port, char **real_host) +{ + struct addrinfo hints; + char ipstring[MAX_HOSTNAME]; + char portstring[MAX_HOSTNAME]; + int ret; + +/* if (ns->ip6_hostent) + freeaddrinfo (ns->ip6_hostent);*/ + + sprintf (portstring, "%d", port); + + memset (&hints, 0, sizeof (struct addrinfo)); + hints.ai_family = PF_UNSPEC; /* support ipv6 and ipv4 */ + hints.ai_flags = AI_CANONNAME; + hints.ai_socktype = SOCK_STREAM; + + if (port == 0) + ret = getaddrinfo (hostname, NULL, &hints, &ns->ip6_hostent); + else + ret = getaddrinfo (hostname, portstring, &hints, &ns->ip6_hostent); + if (ret != 0) + return NULL; + +#ifdef LOOKUPD /* See note about lookupd above the IPv4 version of net_resolve. */ + struct addrinfo *tmp; + int count = 0; + + for (tmp = ns->ip6_hostent; tmp; tmp = tmp->ai_next) + count ++; + + count = RAND_INT(count); + + while (count--) ns->ip6_hostent = ns->ip6_hostent->ai_next; +#endif + + /* find the numeric IP number */ + ipstring[0] = 0; + getnameinfo (ns->ip6_hostent->ai_addr, ns->ip6_hostent->ai_addrlen, + ipstring, sizeof (ipstring), NULL, 0, NI_NUMERICHOST); + + if (ns->ip6_hostent->ai_canonname) + *real_host = strdup (ns->ip6_hostent->ai_canonname); + else + *real_host = strdup (hostname); + + return strdup (ipstring); +} + +/* the only thing making this interface unclean, this shitty sok4, sok6 business */ + +int +net_connect (netstore * ns, int sok4, int sok6, int *sok_return) +{ + struct addrinfo *res, *res0; + int error = -1; + + res0 = ns->ip6_hostent; + + for (res = res0; res; res = res->ai_next) + { +/* sok = socket (res->ai_family, res->ai_socktype, res->ai_protocol); + if (sok < 0) + continue;*/ + switch (res->ai_family) + { + case AF_INET: + error = connect (sok4, res->ai_addr, res->ai_addrlen); + *sok_return = sok4; + break; + case AF_INET6: + error = connect (sok6, res->ai_addr, res->ai_addrlen); + *sok_return = sok6; + break; + default: + error = 1; + } + + if (error == 0) + break; + } + + return error; +} + +void +net_bind (netstore * tobindto, int sok4, int sok6) +{ + bind (sok4, tobindto->ip6_hostent->ai_addr, + tobindto->ip6_hostent->ai_addrlen); + bind (sok6, tobindto->ip6_hostent->ai_addr, + tobindto->ip6_hostent->ai_addrlen); +} + +void +net_sockets (int *sok4, int *sok6) +{ + *sok4 = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP); + *sok6 = socket (AF_INET6, SOCK_STREAM, IPPROTO_TCP); + net_set_socket_options (*sok4); + net_set_socket_options (*sok6); +} + +void +udp_sockets (int *sok4, int *sok6) +{ + *sok4 = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP); + *sok6 = socket (AF_INET6, SOCK_DGRAM, IPPROTO_UDP); +} + +/* the following functions are used only by MSPROXY and are not + proper ipv6 implementations - do not use in new code! */ + +void +net_store_fill_any (netstore *ns) +{ + struct addrinfo *ai; + struct sockaddr_in *sin; + + ai = ns->ip6_hostent; + if (!ai) { + ai = malloc (sizeof (struct addrinfo)); + memset (ai, 0, sizeof (struct addrinfo)); + ns->ip6_hostent = ai; + } + sin = (struct sockaddr_in *)ai->ai_addr; + if (!sin) { + sin = malloc (sizeof (struct sockaddr_in)); + memset (sin, 0, sizeof (struct sockaddr_in)); + ai->ai_addr = (struct sockaddr *)sin; + } + ai->ai_family = AF_INET; + ai->ai_addrlen = sizeof(struct sockaddr_in); + sin->sin_family = AF_INET; + sin->sin_addr.s_addr = INADDR_ANY; + sin->sin_port = 0; + ai->ai_next = NULL; +} + +void +net_store_fill_v4 (netstore *ns, guint32 addr, int port) +{ + struct addrinfo *ai; + struct sockaddr_in *sin; + + ai = ns->ip6_hostent; + if (!ai) { + ai = malloc (sizeof (struct addrinfo)); + memset (ai, 0, sizeof (struct addrinfo)); + ns->ip6_hostent = ai; + } + sin = (struct sockaddr_in *)ai->ai_addr; + if (!sin) { + sin = malloc (sizeof (struct sockaddr_in)); + memset (sin, 0, sizeof (struct sockaddr_in)); + ai->ai_addr = (struct sockaddr *)sin; + } + ai->ai_family = AF_INET; + ai->ai_addrlen = sizeof(struct sockaddr_in); + sin->sin_family = AF_INET; + sin->sin_addr.s_addr = addr; + sin->sin_port = port; + ai->ai_next = NULL; +} + +guint32 +net_getsockaddr_v4 (netstore *ns) +{ + struct addrinfo *ai; + struct sockaddr_in *sin; + + ai = ns->ip6_hostent; + + while (ai->ai_family != AF_INET) { + ai = ai->ai_next; + if (!ai) + return 0; + } + sin = (struct sockaddr_in *)ai->ai_addr; + return sin->sin_addr.s_addr; +} + +int +net_getsockport (int sok4, int sok6) +{ + struct sockaddr_in addr; + int len = sizeof (addr); + + if (getsockname (sok4, (struct sockaddr *)&addr, &len) == -1) + return -1; + return addr.sin_port; +} + +#endif diff --git a/xchat-2.8.8/src/common/network.h b/xchat-2.8.8/src/common/network.h new file mode 100644 index 0000000..f45f210 --- /dev/null +++ b/xchat-2.8.8/src/common/network.h @@ -0,0 +1,34 @@ +#ifndef XCHAT_NETWORK_H +#define XCHAT_NETWORK_H + +typedef struct netstore_ +{ +#ifdef NETWORK_PRIVATE +#ifdef USE_IPV6 + struct addrinfo *ip6_hostent; +#else + struct hostent *ip4_hostent; + struct sockaddr_in addr; +#endif +#else + int _dummy; /* some compilers don't like empty structs */ +#endif +} netstore; + +#define MAX_HOSTNAME 128 + +netstore *net_store_new (void); +void net_store_destroy (netstore *ns); +int net_connect (netstore *ns, int sok4, int sok6, int *sok_return); +char *net_resolve (netstore *ns, char *hostname, int port, char **real_host); +void net_bind (netstore *tobindto, int sok4, int sok6); +char *net_ip (guint32 addr); +void net_sockets (int *sok4, int *sok6); +/* functions for MSPROXY only! */ +void udp_sockets (int *sok4, int *sok6); +void net_store_fill_any (netstore *ns); +void net_store_fill_v4 (netstore *ns, guint32 addr, int port); +guint32 net_getsockaddr_v4 (netstore *ns); +int net_getsockport(int sok4, int sok6); + +#endif diff --git a/xchat-2.8.8/src/common/notify.c b/xchat-2.8.8/src/common/notify.c new file mode 100644 index 0000000..0479584 --- /dev/null +++ b/xchat-2.8.8/src/common/notify.c @@ -0,0 +1,634 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <unistd.h> +#include <time.h> + +#include "xchat.h" +#include "notify.h" +#include "cfgfiles.h" +#include "fe.h" +#include "server.h" +#include "text.h" +#include "util.h" +#include "xchatc.h" + + +GSList *notify_list = 0; +int notify_tag = 0; + + +static char * +despacify_dup (char *str) +{ + char *p, *res = malloc (strlen (str) + 1); + + p = res; + while (1) + { + if (*str != ' ') + { + *p = *str; + if (*p == 0) + return res; + p++; + } + str++; + } +} + +static int +notify_netcmp (char *str, void *serv) +{ + char *net = despacify_dup (server_get_network (serv, TRUE)); + + if (rfc_casecmp (str, net) == 0) + { + free (net); + return 0; /* finish & return FALSE from token_foreach() */ + } + + free (net); + return 1; /* keep going... */ +} + +/* monitor this nick on this particular network? */ + +static gboolean +notify_do_network (struct notify *notify, server *serv) +{ + if (!notify->networks) /* ALL networks for this nick */ + return TRUE; + + if (token_foreach (notify->networks, ',', notify_netcmp, serv)) + return FALSE; /* network list doesn't contain this one */ + + return TRUE; +} + +struct notify_per_server * +notify_find_server_entry (struct notify *notify, struct server *serv) +{ + GSList *list = notify->server_list; + struct notify_per_server *servnot; + + while (list) + { + servnot = (struct notify_per_server *) list->data; + if (servnot->server == serv) + return servnot; + list = list->next; + } + + /* not found, should we add it, or is this not a network where + we're monitoring this nick? */ + if (!notify_do_network (notify, serv)) + return NULL; + + servnot = malloc (sizeof (struct notify_per_server)); + if (servnot) + { + memset (servnot, 0, sizeof (struct notify_per_server)); + servnot->server = serv; + servnot->notify = notify; + notify->server_list = g_slist_prepend (notify->server_list, servnot); + } + return servnot; +} + +void +notify_save (void) +{ + int fh; + struct notify *notify; + GSList *list = notify_list; + + fh = xchat_open_file ("notify.conf", O_TRUNC | O_WRONLY | O_CREAT, 0600, XOF_DOMODE); + if (fh != -1) + { + while (list) + { + notify = (struct notify *) list->data; + write (fh, notify->name, strlen (notify->name)); + if (notify->networks) + { + write (fh, " ", 1); + write (fh, notify->networks, strlen (notify->networks)); + } + write (fh, "\n", 1); + list = list->next; + } + close (fh); + } +} + +void +notify_load (void) +{ + int fh; + char buf[256]; + char *sep; + + fh = xchat_open_file ("notify.conf", O_RDONLY, 0, 0); + if (fh != -1) + { + while (waitline (fh, buf, sizeof buf, FALSE) != -1) + { + if (buf[0] != '#' && buf[0] != 0) + { + sep = strchr (buf, ' '); + if (sep) + { + sep[0] = 0; + notify_adduser (buf, sep + 1); + } + else + notify_adduser (buf, NULL); + } + } + close (fh); + } +} + +static struct notify_per_server * +notify_find (server *serv, char *nick) +{ + GSList *list = notify_list; + struct notify_per_server *servnot; + struct notify *notify; + + while (list) + { + notify = (struct notify *) list->data; + + servnot = notify_find_server_entry (notify, serv); + if (!servnot) + { + list = list->next; + continue; + } + + if (!serv->p_cmp (notify->name, nick)) + return servnot; + + list = list->next; + } + + return 0; +} + +static void +notify_announce_offline (server * serv, struct notify_per_server *servnot, + char *nick, int quiet) +{ + session *sess; + + sess = serv->front_session; + + servnot->ison = FALSE; + servnot->lastoff = time (0); + if (!quiet) + EMIT_SIGNAL (XP_TE_NOTIFYOFFLINE, sess, nick, serv->servername, + server_get_network (serv, TRUE), NULL, 0); + fe_notify_update (nick); + fe_notify_update (0); +} + +static void +notify_announce_online (server * serv, struct notify_per_server *servnot, + char *nick) +{ + session *sess; + + sess = serv->front_session; + + servnot->lastseen = time (0); + if (servnot->ison) + return; + + servnot->ison = TRUE; + servnot->laston = time (0); + EMIT_SIGNAL (XP_TE_NOTIFYONLINE, sess, nick, serv->servername, + server_get_network (serv, TRUE), NULL, 0); + fe_notify_update (nick); + fe_notify_update (0); + + if (prefs.whois_on_notifyonline) + { + + /* Let's do whois with idle time (like in /quote WHOIS %s %s) */ + + char *wii_str = malloc (strlen (nick) * 2 + 2); + sprintf (wii_str, "%s %s", nick, nick); + serv->p_whois (serv, wii_str); + free (wii_str); + } +} + +/* handles numeric 601 */ + +void +notify_set_offline (server * serv, char *nick, int quiet) +{ + struct notify_per_server *servnot; + + servnot = notify_find (serv, nick); + if (!servnot) + return; + + notify_announce_offline (serv, servnot, nick, quiet); +} + +/* handles numeric 604 and 600 */ + +void +notify_set_online (server * serv, char *nick) +{ + struct notify_per_server *servnot; + + servnot = notify_find (serv, nick); + if (!servnot) + return; + + notify_announce_online (serv, servnot, nick); +} + +static void +notify_watch (server * serv, char *nick, int add) +{ + char tbuf[256]; + + snprintf (tbuf, sizeof (tbuf), "WATCH +%s", nick); + if (!add) + tbuf[6] = '-'; + serv->p_raw (serv, tbuf); +} + +static void +notify_watch_all (struct notify *notify, int add) +{ + server *serv; + GSList *list = serv_list; + while (list) + { + serv = list->data; + if (serv->connected && serv->end_of_motd && serv->supports_watch && + notify_do_network (notify, serv)) + notify_watch (serv, notify->name, add); + list = list->next; + } +} + +static void +notify_flush_watches (server * serv, GSList *from, GSList *end) +{ + char tbuf[512]; + GSList *list; + struct notify *notify; + + strcpy (tbuf, "WATCH"); + + list = from; + while (list != end) + { + notify = list->data; + strcat (tbuf, " +"); + strcat (tbuf, notify->name); + list = list->next; + } + serv->p_raw (serv, tbuf); +} + +/* called when logging in. e.g. when End of motd. */ + +void +notify_send_watches (server * serv) +{ + struct notify *notify; + GSList *list; + GSList *point; + int len; + + len = 0; + point = list = notify_list; + while (list) + { + notify = list->data; + + if (notify_do_network (notify, serv)) + { + len += strlen (notify->name) + 2 /* + and space */; + if (len > 500) + { + notify_flush_watches (serv, point, list); + len = strlen (notify->name) + 2; + point = list; + } + } + + list = list->next; + } + + if (point) + notify_flush_watches (serv, point, NULL); +} + +/* called when receiving a ISON 303 - should this func go? */ + +void +notify_markonline (server *serv, char *word[]) +{ + struct notify *notify; + struct notify_per_server *servnot; + GSList *list = notify_list; + int i, seen; + + while (list) + { + notify = (struct notify *) list->data; + servnot = notify_find_server_entry (notify, serv); + if (!servnot) + { + list = list->next; + continue; + } + i = 4; + seen = FALSE; + while (*word[i]) + { + if (!serv->p_cmp (notify->name, word[i])) + { + seen = TRUE; + notify_announce_online (serv, servnot, notify->name); + break; + } + i++; + /* FIXME: word[] is only a 32 element array, limits notify list to + about 27 people */ + if (i > PDIWORDS - 5) + { + /*fprintf (stderr, _("*** XCHAT WARNING: notify list too large.\n"));*/ + break; + } + } + if (!seen && servnot->ison) + { + notify_announce_offline (serv, servnot, notify->name, FALSE); + } + list = list->next; + } + fe_notify_update (0); +} + +/* yuck! Old routine for ISON notify */ + +static void +notify_checklist_for_server (server *serv) +{ + char outbuf[512]; + struct notify *notify; + GSList *list = notify_list; + int i = 0; + + strcpy (outbuf, "ISON "); + while (list) + { + notify = list->data; + if (notify_do_network (notify, serv)) + { + i++; + strcat (outbuf, notify->name); + strcat (outbuf, " "); + if (strlen (outbuf) > 460) + { + /* LAME: we can't send more than 512 bytes to the server, but * + * if we split it in two packets, our offline detection wouldn't * + work */ + /*fprintf (stderr, _("*** XCHAT WARNING: notify list too large.\n"));*/ + break; + } + } + list = list->next; + } + + if (i) + serv->p_raw (serv, outbuf); +} + +int +notify_checklist (void) /* check ISON list */ +{ + struct server *serv; + GSList *list = serv_list; + + while (list) + { + serv = list->data; + if (serv->connected && serv->end_of_motd && !serv->supports_watch) + { + notify_checklist_for_server (serv); + } + list = list->next; + } + return 1; +} + +void +notify_showlist (struct session *sess) +{ + char outbuf[256]; + struct notify *notify; + GSList *list = notify_list; + struct notify_per_server *servnot; + int i = 0; + + EMIT_SIGNAL (XP_TE_NOTIFYHEAD, sess, NULL, NULL, NULL, NULL, 0); + while (list) + { + i++; + notify = (struct notify *) list->data; + servnot = notify_find_server_entry (notify, sess->server); + if (servnot && servnot->ison) + snprintf (outbuf, sizeof (outbuf), _(" %-20s online\n"), notify->name); + else + snprintf (outbuf, sizeof (outbuf), _(" %-20s offline\n"), notify->name); + PrintText (sess, outbuf); + list = list->next; + } + if (i) + { + sprintf (outbuf, "%d", i); + EMIT_SIGNAL (XP_TE_NOTIFYNUMBER, sess, outbuf, NULL, NULL, NULL, 0); + } else + EMIT_SIGNAL (XP_TE_NOTIFYEMPTY, sess, NULL, NULL, NULL, NULL, 0); +} + +int +notify_deluser (char *name) +{ + struct notify *notify; + struct notify_per_server *servnot; + GSList *list = notify_list; + + while (list) + { + notify = (struct notify *) list->data; + if (!rfc_casecmp (notify->name, name)) + { + fe_notify_update (notify->name); + /* Remove the records for each server */ + while (notify->server_list) + { + servnot = (struct notify_per_server *) notify->server_list->data; + notify->server_list = + g_slist_remove (notify->server_list, servnot); + free (servnot); + } + notify_list = g_slist_remove (notify_list, notify); + notify_watch_all (notify, FALSE); + if (notify->networks) + free (notify->networks); + free (notify->name); + free (notify); + fe_notify_update (0); + return 1; + } + list = list->next; + } + return 0; +} + +void +notify_adduser (char *name, char *networks) +{ + struct notify *notify = malloc (sizeof (struct notify)); + if (notify) + { + memset (notify, 0, sizeof (struct notify)); + if (strlen (name) >= NICKLEN) + { + notify->name = malloc (NICKLEN); + safe_strcpy (notify->name, name, NICKLEN); + } else + { + notify->name = strdup (name); + } + if (networks) + notify->networks = despacify_dup (networks); + notify->server_list = 0; + notify_list = g_slist_prepend (notify_list, notify); + notify_checklist (); + fe_notify_update (notify->name); + fe_notify_update (0); + notify_watch_all (notify, TRUE); + } +} + +gboolean +notify_is_in_list (server *serv, char *name) +{ + struct notify *notify; + GSList *list = notify_list; + + while (list) + { + notify = (struct notify *) list->data; + if (!serv->p_cmp (notify->name, name)) + return TRUE; + list = list->next; + } + + return FALSE; +} + +int +notify_isnotify (struct session *sess, char *name) +{ + struct notify *notify; + struct notify_per_server *servnot; + GSList *list = notify_list; + + while (list) + { + notify = (struct notify *) list->data; + if (!sess->server->p_cmp (notify->name, name)) + { + servnot = notify_find_server_entry (notify, sess->server); + if (servnot && servnot->ison) + return TRUE; + } + list = list->next; + } + + return FALSE; +} + +void +notify_cleanup () +{ + GSList *list = notify_list; + GSList *nslist, *srvlist; + struct notify *notify; + struct notify_per_server *servnot; + struct server *serv; + int valid; + + while (list) + { + /* Traverse the list of notify structures */ + notify = (struct notify *) list->data; + nslist = notify->server_list; + while (nslist) + { + /* Look at each per-server structure */ + servnot = (struct notify_per_server *) nslist->data; + + /* Check the server is valid */ + valid = FALSE; + srvlist = serv_list; + while (srvlist) + { + serv = (struct server *) srvlist->data; + if (servnot->server == serv) + { + valid = serv->connected; /* Only valid if server is too */ + break; + } + srvlist = srvlist->next; + } + if (!valid) + { + notify->server_list = + g_slist_remove (notify->server_list, servnot); + free (servnot); + nslist = notify->server_list; + } else + { + nslist = nslist->next; + } + } + list = list->next; + } + fe_notify_update (0); +} diff --git a/xchat-2.8.8/src/common/notify.h b/xchat-2.8.8/src/common/notify.h new file mode 100644 index 0000000..37674fe --- /dev/null +++ b/xchat-2.8.8/src/common/notify.h @@ -0,0 +1,44 @@ +#ifndef XCHAT_NOTIFY_H +#define XCHAT_NOTIFY_H + +struct notify +{ + char *name; + char *networks; /* network names, comma sep */ + GSList *server_list; +}; + +struct notify_per_server +{ + struct server *server; + struct notify *notify; + time_t laston; + time_t lastseen; + time_t lastoff; + unsigned int ison:1; +}; + +extern GSList *notify_list; +extern int notify_tag; + +/* the WATCH stuff */ +void notify_set_online (server * serv, char *nick); +void notify_set_offline (server * serv, char *nick, int quiet); +void notify_send_watches (server * serv); + +/* the general stuff */ +void notify_adduser (char *name, char *networks); +int notify_deluser (char *name); +void notify_cleanup (void); +void notify_load (void); +void notify_save (void); +void notify_showlist (session *sess); +gboolean notify_is_in_list (server *serv, char *name); +int notify_isnotify (session *sess, char *name); +struct notify_per_server *notify_find_server_entry (struct notify *notify, struct server *serv); + +/* the old ISON stuff - remove me? */ +void notify_markonline (server *serv, char *word[]); +int notify_checklist (void); + +#endif diff --git a/xchat-2.8.8/src/common/outbound.c b/xchat-2.8.8/src/common/outbound.c new file mode 100644 index 0000000..7c6e5e6 --- /dev/null +++ b/xchat-2.8.8/src/common/outbound.c @@ -0,0 +1,4403 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#define _GNU_SOURCE /* for memrchr */ +#include <string.h> +#include <stdlib.h> +#include <stdio.h> +#include <ctype.h> +#include <limits.h> +#include <errno.h> + +#define WANTSOCKET +#define WANTARPA +#include "inet.h" + +#ifndef WIN32 +#include <sys/wait.h> +#endif + +#include <unistd.h> +#include <time.h> +#include <signal.h> +#include <sys/stat.h> +#include <fcntl.h> + +#include "xchat.h" +#include "plugin.h" +#include "ignore.h" +#include "util.h" +#include "fe.h" +#include "cfgfiles.h" /* xchat_fopen_file() */ +#include "network.h" /* net_ip() */ +#include "modes.h" +#include "notify.h" +#include "inbound.h" +#include "text.h" +#include "xchatc.h" +#include "servlist.h" +#include "server.h" +#include "tree.h" +#include "outbound.h" + + +#ifdef USE_DEBUG +extern int current_mem_usage; +#endif +#define TBUFSIZE 4096 + +static void help (session *sess, char *tbuf, char *helpcmd, int quiet); +static int cmd_server (session *sess, char *tbuf, char *word[], char *word_eol[]); +static void handle_say (session *sess, char *text, int check_spch); + + +static void +notj_msg (struct session *sess) +{ + PrintText (sess, _("No channel joined. Try /join #<channel>\n")); +} + +void +notc_msg (struct session *sess) +{ + PrintText (sess, _("Not connected. Try /server <host> [<port>]\n")); +} + +static char * +random_line (char *file_name) +{ + FILE *fh; + char buf[512]; + int lines, ran; + + if (!file_name[0]) + goto nofile; + + fh = xchat_fopen_file (file_name, "r", 0); + if (!fh) + { + nofile: + /* reason is not a file, an actual reason! */ + return strdup (file_name); + } + + /* count number of lines in file */ + lines = 0; + while (fgets (buf, sizeof (buf), fh)) + lines++; + + if (lines < 1) + goto nofile; + + /* go down a random number */ + rewind (fh); + ran = RAND_INT (lines); + do + { + fgets (buf, sizeof (buf), fh); + lines--; + } + while (lines > ran); + fclose (fh); + buf[strlen (buf) - 1] = 0; /* remove the trailing '\n' */ + return strdup (buf); +} + +void +server_sendpart (server * serv, char *channel, char *reason) +{ + if (!reason) + { + reason = random_line (prefs.partreason); + serv->p_part (serv, channel, reason); + free (reason); + } else + { + /* reason set by /quit, /close argument */ + serv->p_part (serv, channel, reason); + } +} + +void +server_sendquit (session * sess) +{ + char *rea, *colrea; + + if (!sess->quitreason) + { + colrea = strdup (prefs.quitreason); + check_special_chars (colrea, FALSE); + rea = random_line (colrea); + free (colrea); + sess->server->p_quit (sess->server, rea); + free (rea); + } else + { + /* reason set by /quit, /close argument */ + sess->server->p_quit (sess->server, sess->quitreason); + } +} + +void +process_data_init (char *buf, char *cmd, char *word[], + char *word_eol[], gboolean handle_quotes, + gboolean allow_escape_quotes) +{ + int wordcount = 2; + int space = FALSE; + int quote = FALSE; + int j = 0; + int len; + + word[0] = "\000\000"; + word_eol[0] = "\000\000"; + word[1] = (char *)buf; + word_eol[1] = (char *)cmd; + + while (1) + { + switch (*cmd) + { + case 0: + buf[j] = 0; + for (j = wordcount; j < PDIWORDS; j++) + { + word[j] = "\000\000"; + word_eol[j] = "\000\000"; + } + return; + case '\042': + if (!handle_quotes) + goto def; + /* two quotes turn into 1 */ + if (allow_escape_quotes && cmd[1] == '\042') + { + cmd++; + goto def; + } + if (quote) + { + quote = FALSE; + space = FALSE; + } else + quote = TRUE; + cmd++; + break; + case ' ': + if (!quote) + { + if (!space) + { + buf[j] = 0; + j++; + + if (wordcount < PDIWORDS) + { + word[wordcount] = &buf[j]; + word_eol[wordcount] = cmd + 1; + wordcount++; + } + + space = TRUE; + } + cmd++; + break; + } + default: +def: + space = FALSE; + len = g_utf8_skip[((unsigned char *)cmd)[0]]; + if (len == 1) + { + buf[j] = *cmd; + j++; + cmd++; + } else + { + /* skip past a multi-byte utf8 char */ + memcpy (buf + j, cmd, len); + j += len; + cmd += len; + } + } + } +} + +static int +cmd_addbutton (struct session *sess, char *tbuf, char *word[], + char *word_eol[]) +{ + if (*word[2] && *word_eol[3]) + { + if (sess->type == SESS_DIALOG) + { + list_addentry (&dlgbutton_list, word_eol[3], word[2]); + fe_dlgbuttons_update (sess); + } else + { + list_addentry (&button_list, word_eol[3], word[2]); + fe_buttons_update (sess); + } + return TRUE; + } + return FALSE; +} + +static int +cmd_allchannels (session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + GSList *list = sess_list; + + if (!*word_eol[2]) + return FALSE; + + while (list) + { + sess = list->data; + if (sess->type == SESS_CHANNEL && sess->channel[0] && sess->server->connected) + { + handle_command (sess, word_eol[2], FALSE); + } + list = list->next; + } + + return TRUE; +} + +static int +cmd_allchannelslocal (session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + GSList *list = sess_list; + server *serv = sess->server; + + if (!*word_eol[2]) + return FALSE; + + while (list) + { + sess = list->data; + if (sess->type == SESS_CHANNEL && sess->channel[0] && + sess->server->connected && sess->server == serv) + { + handle_command (sess, word_eol[2], FALSE); + } + list = list->next; + } + + return TRUE; +} + +static int +cmd_allservers (struct session *sess, char *tbuf, char *word[], + char *word_eol[]) +{ + GSList *list; + server *serv; + + if (!*word_eol[2]) + return FALSE; + + list = serv_list; + while (list) + { + serv = list->data; + if (serv->connected) + handle_command (serv->front_session, word_eol[2], FALSE); + list = list->next; + } + + return TRUE; +} + +static int +cmd_away (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + GSList *list; + char *reason = word_eol[2]; + + if (!(*reason)) + { + if (sess->server->is_away) + { + if (sess->server->last_away_reason) + PrintTextf (sess, _("Already marked away: %s\n"), sess->server->last_away_reason); + return FALSE; + } + + if (sess->server->reconnect_away) + reason = sess->server->last_away_reason; + else + /* must manage memory pointed to by random_line() */ + reason = random_line (prefs.awayreason); + } + sess->server->p_set_away (sess->server, reason); + + if (prefs.show_away_message) + { + snprintf (tbuf, TBUFSIZE, "me is away: %s", reason); + for (list = sess_list; list; list = list->next) + { + /* am I the right server and not a dialog box */ + if (((struct session *) list->data)->server == sess->server + && ((struct session *) list->data)->type == SESS_CHANNEL + && ((struct session *) list->data)->channel[0]) + { + handle_command ((session *) list->data, tbuf, TRUE); + } + } + } + + if (sess->server->last_away_reason != reason) + { + if (sess->server->last_away_reason) + free (sess->server->last_away_reason); + + if (reason == word_eol[2]) + sess->server->last_away_reason = strdup (reason); + else + sess->server->last_away_reason = reason; + } + + if (!sess->server->connected) + sess->server->reconnect_away = 1; + + return TRUE; +} + +static int +cmd_back (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + GSList *list; + unsigned int gone; + + if (sess->server->is_away) + { + sess->server->p_set_back (sess->server); + + if (prefs.show_away_message) + { + gone = time (NULL) - sess->server->away_time; + sprintf (tbuf, "me is back (gone %.2d:%.2d:%.2d)", gone / 3600, + (gone / 60) % 60, gone % 60); + for (list = sess_list; list; list = list->next) + { + /* am I the right server and not a dialog box */ + if (((struct session *) list->data)->server == sess->server + && ((struct session *) list->data)->type == SESS_CHANNEL + && ((struct session *) list->data)->channel[0]) + { + handle_command ((session *) list->data, tbuf, TRUE); + } + } + } + } + else + { + PrintText (sess, _("Already marked back.\n")); + } + + if (sess->server->last_away_reason) + free (sess->server->last_away_reason); + sess->server->last_away_reason = NULL; + + return TRUE; +} + +static void +ban (session * sess, char *tbuf, char *mask, char *bantypestr, int deop) +{ + int bantype; + struct User *user; + char *at, *dot, *lastdot; + char username[64], fullhost[128], domain[128], *mode, *p2; + server *serv = sess->server; + + user = userlist_find (sess, mask); + if (user && user->hostname) /* it's a nickname, let's find a proper ban mask */ + { + if (deop) + { + mode = "-o+b "; + p2 = user->nick; + } else + { + mode = "+b"; + p2 = ""; + } + + mask = user->hostname; + + at = strchr (mask, '@'); /* FIXME: utf8 */ + if (!at) + return; /* can't happen? */ + *at = 0; + + if (mask[0] == '~' || mask[0] == '+' || + mask[0] == '=' || mask[0] == '^' || mask[0] == '-') + { + /* the ident is prefixed with something, we replace that sign with an * */ + safe_strcpy (username+1, mask+1, sizeof (username)-1); + username[0] = '*'; + } else if (at - mask < USERNAMELEN) + { + /* we just add an * in the begining of the ident */ + safe_strcpy (username+1, mask, sizeof (username)-1); + username[0] = '*'; + } else + { + /* ident might be too long, we just ban what it gives and add an * in the end */ + safe_strcpy (username, mask, sizeof (username)); + } + *at = '@'; + safe_strcpy (fullhost, at + 1, sizeof (fullhost)); + + dot = strchr (fullhost, '.'); + if (dot) + { + safe_strcpy (domain, dot, sizeof (domain)); + } else + { + safe_strcpy (domain, fullhost, sizeof (domain)); + } + + if (*bantypestr) + bantype = atoi (bantypestr); + else + bantype = prefs.bantype; + + tbuf[0] = 0; + if (inet_addr (fullhost) != -1) /* "fullhost" is really a IP number */ + { + lastdot = strrchr (fullhost, '.'); + if (!lastdot) + return; /* can't happen? */ + + *lastdot = 0; + strcpy (domain, fullhost); + *lastdot = '.'; + + switch (bantype) + { + case 0: + snprintf (tbuf, TBUFSIZE, "%s%s *!*@%s.*", mode, p2, domain); + break; + + case 1: + snprintf (tbuf, TBUFSIZE, "%s%s *!*@%s", mode, p2, fullhost); + break; + + case 2: + snprintf (tbuf, TBUFSIZE, "%s%s *!%s@%s.*", mode, p2, username, domain); + break; + + case 3: + snprintf (tbuf, TBUFSIZE, "%s%s *!%s@%s", mode, p2, username, fullhost); + break; + } + } else + { + switch (bantype) + { + case 0: + snprintf (tbuf, TBUFSIZE, "%s%s *!*@*%s", mode, p2, domain); + break; + + case 1: + snprintf (tbuf, TBUFSIZE, "%s%s *!*@%s", mode, p2, fullhost); + break; + + case 2: + snprintf (tbuf, TBUFSIZE, "%s%s *!%s@*%s", mode, p2, username, domain); + break; + + case 3: + snprintf (tbuf, TBUFSIZE, "%s%s *!%s@%s", mode, p2, username, fullhost); + break; + } + } + + } else + { + snprintf (tbuf, TBUFSIZE, "+b %s", mask); + } + serv->p_mode (serv, sess->channel, tbuf); +} + +static int +cmd_ban (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *mask = word[2]; + + if (*mask) + { + ban (sess, tbuf, mask, word[3], 0); + } else + { + sess->server->p_mode (sess->server, sess->channel, "+b"); /* banlist */ + } + + return TRUE; +} + +static int +cmd_unban (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + /* Allow more than one mask in /unban -- tvk */ + int i = 2; + + while (1) + { + if (!*word[i]) + { + if (i == 2) + return FALSE; + send_channel_modes (sess, tbuf, word, 2, i, '-', 'b', 0); + return TRUE; + } + i++; + } +} + +static int +cmd_chanopt (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + /* chanopt.c */ + return chanopt_command (sess, tbuf, word, word_eol); +} + +static int +cmd_charset (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + server *serv = sess->server; + const char *locale = NULL; + int offset = 0; + + if (strcmp (word[2], "-quiet") == 0) + offset++; + + if (!word[2 + offset][0]) + { + g_get_charset (&locale); + PrintTextf (sess, "Current charset: %s\n", + serv->encoding ? serv->encoding : locale); + return TRUE; + } + + if (servlist_check_encoding (word[2 + offset])) + { + server_set_encoding (serv, word[2 + offset]); + if (offset < 1) + PrintTextf (sess, "Charset changed to: %s\n", word[2 + offset]); + } else + { + PrintTextf (sess, "\0034Unknown charset:\017 %s\n", word[2 + offset]); + } + + return TRUE; +} + +static int +cmd_clear (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + GSList *list = sess_list; + char *reason = word_eol[2]; + + if (strcasecmp (reason, "HISTORY") == 0) + { + history_free (&sess->history); + return TRUE; + } + + if (strncasecmp (reason, "all", 3) == 0) + { + while (list) + { + sess = list->data; + if (!sess->nick_said) + fe_text_clear (list->data, 0); + list = list->next; + } + return TRUE; + } + + if (reason[0] != '-' && !isdigit (reason[0]) && reason[0] != 0) + return FALSE; + + fe_text_clear (sess, atoi (reason)); + return TRUE; +} + +static int +cmd_close (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + GSList *list; + + if (strcmp (word[2], "-m") == 0) + { + list = sess_list; + while (list) + { + sess = list->data; + list = list->next; + if (sess->type == SESS_DIALOG) + fe_close_window (sess); + } + } else + { + if (*word_eol[2]) + sess->quitreason = word_eol[2]; + fe_close_window (sess); + } + + return TRUE; +} + +static int +cmd_ctcp (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int mbl; + char *to = word[2]; + if (*to) + { + char *msg = word_eol[3]; + if (*msg) + { + unsigned char *cmd = (unsigned char *)msg; + + /* make the first word upper case (as per RFC) */ + while (1) + { + if (*cmd == ' ' || *cmd == 0) + break; + mbl = g_utf8_skip[*cmd]; + if (mbl == 1) + *cmd = toupper (*cmd); + cmd += mbl; + } + + sess->server->p_ctcp (sess->server, to, msg); + + EMIT_SIGNAL (XP_TE_CTCPSEND, sess, to, msg, NULL, NULL, 0); + + return TRUE; + } + } + return FALSE; +} + +static int +cmd_country (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *code = word[2]; + if (*code) + { + /* search? */ + if (strcmp (code, "-s") == 0) + { + country_search (word[3], sess, (void *)PrintTextf); + return TRUE; + } + + /* search, but forgot the -s */ + if (strchr (code, '*')) + { + country_search (code, sess, (void *)PrintTextf); + return TRUE; + } + + sprintf (tbuf, "%s = %s\n", code, country (code)); + PrintText (sess, tbuf); + return TRUE; + } + return FALSE; +} + +static int +cmd_cycle (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *key = sess->channelkey; + char *chan = word[2]; + if (!*chan) + chan = sess->channel; + if (*chan && sess->type == SESS_CHANNEL) + { + sess->server->p_cycle (sess->server, chan, key); + return TRUE; + } + return FALSE; +} + +static int +cmd_dcc (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int goodtype; + struct DCC *dcc = 0; + char *type = word[2]; + if (*type) + { + if (!strcasecmp (type, "HELP")) + return FALSE; + if (!strcasecmp (type, "CLOSE")) + { + if (*word[3] && *word[4]) + { + goodtype = 0; + if (!strcasecmp (word[3], "SEND")) + { + dcc = find_dcc (word[4], word[5], TYPE_SEND); + dcc_abort (sess, dcc); + goodtype = TRUE; + } + if (!strcasecmp (word[3], "GET")) + { + dcc = find_dcc (word[4], word[5], TYPE_RECV); + dcc_abort (sess, dcc); + goodtype = TRUE; + } + if (!strcasecmp (word[3], "CHAT")) + { + dcc = find_dcc (word[4], "", TYPE_CHATRECV); + if (!dcc) + dcc = find_dcc (word[4], "", TYPE_CHATSEND); + dcc_abort (sess, dcc); + goodtype = TRUE; + } + + if (!goodtype) + return FALSE; + + if (!dcc) + EMIT_SIGNAL (XP_TE_NODCC, sess, NULL, NULL, NULL, NULL, 0); + + return TRUE; + + } + return FALSE; + } + if ((!strcasecmp (type, "CHAT")) || (!strcasecmp (type, "PCHAT"))) + { + char *nick = word[3]; + int passive = (!strcasecmp(type, "PCHAT")) ? 1 : 0; + if (*nick) + dcc_chat (sess, nick, passive); + return TRUE; + } + if (!strcasecmp (type, "LIST")) + { + dcc_show_list (sess); + return TRUE; + } + if (!strcasecmp (type, "GET")) + { + char *nick = word[3]; + char *file = word[4]; + if (!*file) + { + if (*nick) + dcc_get_nick (sess, nick); + } else + { + dcc = find_dcc (nick, file, TYPE_RECV); + if (dcc) + dcc_get (dcc); + else + EMIT_SIGNAL (XP_TE_NODCC, sess, NULL, NULL, NULL, NULL, 0); + } + return TRUE; + } + if ((!strcasecmp (type, "SEND")) || (!strcasecmp (type, "PSEND"))) + { + int i = 3, maxcps; + char *nick, *file; + int passive = (!strcasecmp(type, "PSEND")) ? 1 : 0; + + nick = word[i]; + if (!*nick) + return FALSE; + + maxcps = prefs.dcc_max_send_cps; + if (!strncasecmp(nick, "-maxcps=", 8)) + { + maxcps = atoi(nick + 8); + i++; + nick = word[i]; + if (!*nick) + return FALSE; + } + + i++; + + file = word[i]; + if (!*file) + { + fe_dcc_send_filereq (sess, nick, maxcps, passive); + return TRUE; + } + + do + { + dcc_send (sess, nick, file, maxcps, passive); + i++; + file = word[i]; + } + while (*file); + + return TRUE; + } + + return FALSE; + } + + dcc_show_list (sess); + return TRUE; +} + +static int +cmd_debug (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + struct session *s; + struct server *v; + GSList *list = sess_list; + + PrintText (sess, "Session T Channel WaitChan WillChan Server\n"); + while (list) + { + s = (struct session *) list->data; + sprintf (tbuf, "%p %1x %-10.10s %-10.10s %-10.10s %p\n", + s, s->type, s->channel, s->waitchannel, + s->willjoinchannel, s->server); + PrintText (sess, tbuf); + list = list->next; + } + + list = serv_list; + PrintText (sess, "Server Sock Name\n"); + while (list) + { + v = (struct server *) list->data; + sprintf (tbuf, "%p %-5d %s\n", + v, v->sok, v->servername); + PrintText (sess, tbuf); + list = list->next; + } + + sprintf (tbuf, + "\nfront_session: %p\n" + "current_tab: %p\n\n", + sess->server->front_session, current_tab); + PrintText (sess, tbuf); +#ifdef USE_DEBUG + sprintf (tbuf, "current mem: %d\n\n", current_mem_usage); + PrintText (sess, tbuf); +#endif /* !MEMORY_DEBUG */ + + return TRUE; +} + +static int +cmd_delbutton (struct session *sess, char *tbuf, char *word[], + char *word_eol[]) +{ + if (*word[2]) + { + if (sess->type == SESS_DIALOG) + { + if (list_delentry (&dlgbutton_list, word[2])) + fe_dlgbuttons_update (sess); + } else + { + if (list_delentry (&button_list, word[2])) + fe_buttons_update (sess); + } + return TRUE; + } + return FALSE; +} + +static int +cmd_dehop (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int i = 2; + + while (1) + { + if (!*word[i]) + { + if (i == 2) + return FALSE; + send_channel_modes (sess, tbuf, word, 2, i, '-', 'h', 0); + return TRUE; + } + i++; + } +} + +static int +cmd_deop (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int i = 2; + + while (1) + { + if (!*word[i]) + { + if (i == 2) + return FALSE; + send_channel_modes (sess, tbuf, word, 2, i, '-', 'o', 0); + return TRUE; + } + i++; + } +} + +typedef struct +{ + char **nicks; + int i; + session *sess; + char *reason; + char *tbuf; +} multidata; + +static int +mdehop_cb (struct User *user, multidata *data) +{ + if (user->hop && !user->me) + { + data->nicks[data->i] = user->nick; + data->i++; + } + return TRUE; +} + +static int +cmd_mdehop (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char **nicks = malloc (sizeof (char *) * sess->hops); + multidata data; + + data.nicks = nicks; + data.i = 0; + tree_foreach (sess->usertree, (tree_traverse_func *)mdehop_cb, &data); + send_channel_modes (sess, tbuf, nicks, 0, data.i, '-', 'h', 0); + free (nicks); + + return TRUE; +} + +static int +mdeop_cb (struct User *user, multidata *data) +{ + if (user->op && !user->me) + { + data->nicks[data->i] = user->nick; + data->i++; + } + return TRUE; +} + +static int +cmd_mdeop (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char **nicks = malloc (sizeof (char *) * sess->ops); + multidata data; + + data.nicks = nicks; + data.i = 0; + tree_foreach (sess->usertree, (tree_traverse_func *)mdeop_cb, &data); + send_channel_modes (sess, tbuf, nicks, 0, data.i, '-', 'o', 0); + free (nicks); + + return TRUE; +} + +GSList *menu_list = NULL; + +static void +menu_free (menu_entry *me) +{ + free (me->path); + if (me->label) + free (me->label); + if (me->cmd) + free (me->cmd); + if (me->ucmd) + free (me->ucmd); + if (me->group) + free (me->group); + if (me->icon) + free (me->icon); + free (me); +} + +/* strings equal? but ignore underscores */ + +int +menu_streq (const char *s1, const char *s2, int def) +{ + /* for separators */ + if (s1 == NULL && s2 == NULL) + return 0; + if (s1 == NULL || s2 == NULL) + return 1; + while (*s1) + { + if (*s1 == '_') + s1++; + if (*s2 == '_') + s2++; + if (*s1 != *s2) + return 1; + s1++; + s2++; + } + if (!*s2) + return 0; + return def; +} + +static menu_entry * +menu_entry_find (char *path, char *label) +{ + GSList *list; + menu_entry *me; + + list = menu_list; + while (list) + { + me = list->data; + if (!strcmp (path, me->path)) + { + if (me->label && label && !strcmp (label, me->label)) + return me; + } + list = list->next; + } + return NULL; +} + +static void +menu_del_children (char *path, char *label) +{ + GSList *list, *next; + menu_entry *me; + char buf[512]; + + if (!label) + label = ""; + if (path[0]) + snprintf (buf, sizeof (buf), "%s/%s", path, label); + else + snprintf (buf, sizeof (buf), "%s", label); + + list = menu_list; + while (list) + { + me = list->data; + next = list->next; + if (!menu_streq (buf, me->path, 0)) + { + menu_list = g_slist_remove (menu_list, me); + menu_free (me); + } + list = next; + } +} + +static int +menu_del (char *path, char *label) +{ + GSList *list; + menu_entry *me; + + list = menu_list; + while (list) + { + me = list->data; + if (!menu_streq (me->label, label, 1) && !menu_streq (me->path, path, 1)) + { + menu_list = g_slist_remove (menu_list, me); + fe_menu_del (me); + menu_free (me); + /* delete this item's children, if any */ + menu_del_children (path, label); + return 1; + } + list = list->next; + } + + return 0; +} + +static char +menu_is_mainmenu_root (char *path, gint16 *offset) +{ + static const char *menus[] = {"\x4$TAB","\x5$TRAY","\x4$URL","\x5$NICK","\x5$CHAN"}; + int i; + + for (i = 0; i < 5; i++) + { + if (!strncmp (path, menus[i] + 1, menus[i][0])) + { + *offset = menus[i][0] + 1; /* number of bytes to offset the root */ + return 0; /* is not main menu */ + } + } + + *offset = 0; + return 1; /* is main menu */ +} + +static void +menu_add (char *path, char *label, char *cmd, char *ucmd, int pos, int state, int markup, int enable, int mod, int key, char *group, char *icon) +{ + menu_entry *me; + + /* already exists? */ + me = menu_entry_find (path, label); + if (me) + { + /* update only */ + me->state = state; + me->enable = enable; + fe_menu_update (me); + return; + } + + me = malloc (sizeof (menu_entry)); + me->pos = pos; + me->modifier = mod; + me->is_main = menu_is_mainmenu_root (path, &me->root_offset); + me->state = state; + me->markup = markup; + me->enable = enable; + me->key = key; + me->path = strdup (path); + me->label = NULL; + me->cmd = NULL; + me->ucmd = NULL; + me->group = NULL; + me->icon = NULL; + + if (label) + me->label = strdup (label); + if (cmd) + me->cmd = strdup (cmd); + if (ucmd) + me->ucmd = strdup (ucmd); + if (group) + me->group = strdup (group); + if (icon) + me->icon = strdup (icon); + + menu_list = g_slist_append (menu_list, me); + label = fe_menu_add (me); + if (label) + { + /* FE has given us a stripped label */ + free (me->label); + me->label = strdup (label); + g_free (label); /* this is from pango */ + } +} + +static int +cmd_menu (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int idx = 2; + int len; + int pos = 0xffff; + int state; + int toggle = FALSE; + int enable = TRUE; + int markup = FALSE; + int key = 0; + int mod = 0; + char *label; + char *group = NULL; + char *icon = NULL; + + if (!word[2][0] || !word[3][0]) + return FALSE; + + /* -eX enabled or not? */ + if (word[idx][0] == '-' && word[idx][1] == 'e') + { + enable = atoi (word[idx] + 2); + idx++; + } + + /* -i<ICONFILE> */ + if (word[idx][0] == '-' && word[idx][1] == 'i') + { + icon = word[idx] + 2; + idx++; + } + + /* -k<mod>,<key> key binding */ + if (word[idx][0] == '-' && word[idx][1] == 'k') + { + char *comma = strchr (word[idx], ','); + if (!comma) + return FALSE; + mod = atoi (word[idx] + 2); + key = atoi (comma + 1); + idx++; + } + + /* -m to specify PangoMarkup language */ + if (word[idx][0] == '-' && word[idx][1] == 'm') + { + markup = TRUE; + idx++; + } + + /* -pX to specify menu position */ + if (word[idx][0] == '-' && word[idx][1] == 'p') + { + pos = atoi (word[idx] + 2); + idx++; + } + + /* -rSTATE,GROUP to specify a radio item */ + if (word[idx][0] == '-' && word[idx][1] == 'r') + { + state = atoi (word[idx] + 2); + group = word[idx] + 4; + idx++; + } + + /* -tX to specify toggle item with default state */ + if (word[idx][0] == '-' && word[idx][1] == 't') + { + state = atoi (word[idx] + 2); + idx++; + toggle = TRUE; + } + + if (word[idx+1][0] == 0) + return FALSE; + + /* the path */ + path_part (word[idx+1], tbuf, 512); + len = strlen (tbuf); + if (len) + tbuf[len - 1] = 0; + + /* the name of the item */ + label = file_part (word[idx + 1]); + if (label[0] == '-' && label[1] == 0) + label = NULL; /* separator */ + + if (markup) + { + char *p; /* to force pango closing tags through */ + for (p = label; *p; p++) + if (*p == 3) + *p = '/'; + } + + if (!strcasecmp (word[idx], "ADD")) + { + if (toggle) + { + menu_add (tbuf, label, word[idx + 2], word[idx + 3], pos, state, markup, enable, mod, key, NULL, NULL); + } else + { + if (word[idx + 2][0]) + menu_add (tbuf, label, word[idx + 2], NULL, pos, state, markup, enable, mod, key, group, icon); + else + menu_add (tbuf, label, NULL, NULL, pos, state, markup, enable, mod, key, group, icon); + } + return TRUE; + } + + if (!strcasecmp (word[idx], "DEL")) + { + menu_del (tbuf, label); + return TRUE; + } + + return FALSE; +} + +static int +mkick_cb (struct User *user, multidata *data) +{ + if (!user->op && !user->me) + data->sess->server->p_kick (data->sess->server, data->sess->channel, user->nick, data->reason); + return TRUE; +} + +static int +mkickops_cb (struct User *user, multidata *data) +{ + if (user->op && !user->me) + data->sess->server->p_kick (data->sess->server, data->sess->channel, user->nick, data->reason); + return TRUE; +} + +static int +cmd_mkick (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + multidata data; + + data.sess = sess; + data.reason = word_eol[2]; + tree_foreach (sess->usertree, (tree_traverse_func *)mkickops_cb, &data); + tree_foreach (sess->usertree, (tree_traverse_func *)mkick_cb, &data); + + return TRUE; +} + +static int +cmd_devoice (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int i = 2; + + while (1) + { + if (!*word[i]) + { + if (i == 2) + return FALSE; + send_channel_modes (sess, tbuf, word, 2, i, '-', 'v', 0); + return TRUE; + } + i++; + } +} + +static int +cmd_discon (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + sess->server->disconnect (sess, TRUE, -1); + return TRUE; +} + +static int +cmd_dns (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ +#ifdef WIN32 + PrintText (sess, "DNS is not implemented in Windows.\n"); + return TRUE; +#else + char *nick = word[2]; + struct User *user; + + if (*nick) + { + if (strchr (nick, '.') == NULL) + { + user = userlist_find (sess, nick); + if (user && user->hostname) + { + do_dns (sess, user->nick, user->hostname); + } else + { + sess->server->p_get_ip (sess->server, nick); + sess->server->doing_dns = TRUE; + } + } else + { + snprintf (tbuf, TBUFSIZE, "exec -d %s %s", prefs.dnsprogram, nick); + handle_command (sess, tbuf, FALSE); + } + return TRUE; + } + return FALSE; +#endif +} + +static int +cmd_echo (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + PrintText (sess, word_eol[2]); + return TRUE; +} + +#ifndef WIN32 + +static void +exec_check_process (struct session *sess) +{ + int val; + + if (sess->running_exec == NULL) + return; + val = waitpid (sess->running_exec->childpid, NULL, WNOHANG); + if (val == -1 || val > 0) + { + close (sess->running_exec->myfd); + fe_input_remove (sess->running_exec->iotag); + free (sess->running_exec); + sess->running_exec = NULL; + } +} + +#ifndef __EMX__ +static int +cmd_execs (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int r; + + exec_check_process (sess); + if (sess->running_exec == NULL) + { + EMIT_SIGNAL (XP_TE_NOCHILD, sess, NULL, NULL, NULL, NULL, 0); + return FALSE; + } + r = kill (sess->running_exec->childpid, SIGSTOP); + if (r == -1) + PrintText (sess, "Error in kill(2)\n"); + + return TRUE; +} + +static int +cmd_execc (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int r; + + exec_check_process (sess); + if (sess->running_exec == NULL) + { + EMIT_SIGNAL (XP_TE_NOCHILD, sess, NULL, NULL, NULL, NULL, 0); + return FALSE; + } + r = kill (sess->running_exec->childpid, SIGCONT); + if (r == -1) + PrintText (sess, "Error in kill(2)\n"); + + return TRUE; +} + +static int +cmd_execk (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int r; + + exec_check_process (sess); + if (sess->running_exec == NULL) + { + EMIT_SIGNAL (XP_TE_NOCHILD, sess, NULL, NULL, NULL, NULL, 0); + return FALSE; + } + if (strcmp (word[2], "-9") == 0) + r = kill (sess->running_exec->childpid, SIGKILL); + else + r = kill (sess->running_exec->childpid, SIGTERM); + if (r == -1) + PrintText (sess, "Error in kill(2)\n"); + + return TRUE; +} + +/* OS/2 Can't have the /EXECW command because it uses pipe(2) not socketpair + and thus it is simplex --AGL */ +static int +cmd_execw (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int len; + char *temp; + exec_check_process (sess); + if (sess->running_exec == NULL) + { + EMIT_SIGNAL (XP_TE_NOCHILD, sess, NULL, NULL, NULL, NULL, 0); + return FALSE; + } + len = strlen(word_eol[2]); + temp = malloc(len + 2); + sprintf(temp, "%s\n", word_eol[2]); + PrintText(sess, temp); + write(sess->running_exec->myfd, temp, len + 1); + free(temp); + + return TRUE; +} +#endif /* !__EMX__ */ + +/* convert ANSI escape color codes to mIRC codes */ + +static short escconv[] = +/* 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 */ +{ 1,4,3,5,2,10,6,1, 1,7,9,8,12,11,13,1 }; + +static void +exec_handle_colors (char *buf, int len) +{ + char numb[16]; + char *nbuf; + int i = 0, j = 0, k = 0, firstn = 0, col, colf = 0, colb = 0; + int esc = FALSE, backc = FALSE, bold = FALSE; + + /* any escape codes in this text? */ + if (strchr (buf, 27) == 0) + return; + + nbuf = malloc (len + 1); + + while (i < len) + { + switch (buf[i]) + { + case '\r': + break; + case 27: + esc = TRUE; + break; + case ';': + if (!esc) + goto norm; + backc = TRUE; + numb[k] = 0; + firstn = atoi (numb); + k = 0; + break; + case '[': + if (!esc) + goto norm; + break; + default: + if (esc) + { + if (buf[i] >= 'A' && buf[i] <= 'z') + { + if (buf[i] == 'm') + { + /* ^[[0m */ + if (k == 0 || (numb[0] == '0' && k == 1)) + { + nbuf[j] = '\017'; + j++; + bold = FALSE; + goto cont; + } + + numb[k] = 0; + col = atoi (numb); + backc = FALSE; + + if (firstn == 1) + bold = TRUE; + + if (firstn >= 30 && firstn <= 37) + colf = firstn - 30; + + if (col >= 40) + { + colb = col - 40; + backc = TRUE; + } + + if (col >= 30 && col <= 37) + colf = col - 30; + + if (bold) + colf += 8; + + if (backc) + { + colb = escconv[colb % 14]; + colf = escconv[colf % 14]; + j += sprintf (&nbuf[j], "\003%d,%02d", colf, colb); + } else + { + colf = escconv[colf % 14]; + j += sprintf (&nbuf[j], "\003%02d", colf); + } + } +cont: esc = FALSE; + backc = FALSE; + k = 0; + } else + { + if (isdigit ((unsigned char) buf[i]) && k < (sizeof (numb) - 1)) + { + numb[k] = buf[i]; + k++; + } + } + } else + { +norm: nbuf[j] = buf[i]; + j++; + } + } + i++; + } + + nbuf[j] = 0; + memcpy (buf, nbuf, j + 1); + free (nbuf); +} + +#ifndef HAVE_MEMRCHR +static void * +memrchr (const void *block, int c, size_t size) +{ + unsigned char *p; + + for (p = (unsigned char *)block + size; p != block; p--) + if (*p == c) + return p; + return 0; +} +#endif + +static gboolean +exec_data (GIOChannel *source, GIOCondition condition, struct nbexec *s) +{ + char *buf, *readpos, *rest; + int rd, len; + int sok = s->myfd; + + len = s->buffill; + if (len) { + /* append new data to buffered incomplete line */ + buf = malloc(len + 2050); + memcpy(buf, s->linebuf, len); + readpos = buf + len; + free(s->linebuf); + s->linebuf = NULL; + } + else + readpos = buf = malloc(2050); + + rd = read (sok, readpos, 2048); + if (rd < 1) + { + /* The process has died */ + kill(s->childpid, SIGKILL); + if (len) { + buf[len] = '\0'; + exec_handle_colors(buf, len); + if (s->tochannel) + { + /* must turn off auto-completion temporarily */ + unsigned int old = prefs.nickcompletion; + prefs.nickcompletion = 0; + handle_multiline (s->sess, buf, FALSE, TRUE); + prefs.nickcompletion = old; + } + else + PrintText (s->sess, buf); + } + free(buf); + waitpid (s->childpid, NULL, 0); + s->sess->running_exec = NULL; + fe_input_remove (s->iotag); + close (sok); + free (s); + return TRUE; + } + len += rd; + buf[len] = '\0'; + + rest = memrchr(buf, '\n', len); + if (rest) + rest++; + else + rest = buf; + if (*rest) { + s->buffill = len - (rest - buf); /* = strlen(rest) */ + s->linebuf = malloc(s->buffill); + memcpy(s->linebuf, rest, s->buffill); + *rest = '\0'; + len -= s->buffill; /* possibly 0 */ + } + else + s->buffill = 0; + + if (len) { + exec_handle_colors (buf, len); + if (s->tochannel) + handle_multiline (s->sess, buf, FALSE, TRUE); + else + PrintText (s->sess, buf); + } + + free(buf); + return TRUE; +} + +static int +cmd_exec (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int tochannel = FALSE; + char *cmd = word_eol[2]; + int fds[2], pid = 0; + struct nbexec *s; + int shell = TRUE; + int fd; + + if (*cmd) + { + exec_check_process (sess); + if (sess->running_exec != NULL) + { + EMIT_SIGNAL (XP_TE_ALREADYPROCESS, sess, NULL, NULL, NULL, NULL, 0); + return TRUE; + } + + if (!strcmp (word[2], "-d")) + { + if (!*word[3]) + return FALSE; + cmd = word_eol[3]; + shell = FALSE; + } + else if (!strcmp (word[2], "-o")) + { + if (!*word[3]) + return FALSE; + cmd = word_eol[3]; + tochannel = TRUE; + } + + if (shell) + { + if (access ("/bin/sh", X_OK) != 0) + { + fe_message (_("I need /bin/sh to run!\n"), FE_MSG_ERROR); + return TRUE; + } + } + +#ifdef __EMX__ /* if os/2 */ + if (pipe (fds) < 0) + { + PrintText (sess, "Pipe create error\n"); + return FALSE; + } + setmode (fds[0], O_BINARY); + setmode (fds[1], O_BINARY); +#else + if (socketpair (PF_UNIX, SOCK_STREAM, 0, fds) == -1) + { + PrintText (sess, "socketpair(2) failed\n"); + return FALSE; + } +#endif + s = (struct nbexec *) malloc (sizeof (struct nbexec)); + memset(s, 0, sizeof(*s)); + s->myfd = fds[0]; + s->tochannel = tochannel; + s->sess = sess; + + pid = fork (); + if (pid == 0) + { + /* This is the child's context */ + close (0); + close (1); + close (2); + /* Close parent's end of pipe */ + close(s->myfd); + /* Copy the child end of the pipe to stdout and stderr */ + dup2 (fds[1], 1); + dup2 (fds[1], 2); + /* Also copy it to stdin so we can write to it */ + dup2 (fds[1], 0); + /* Now close all open file descriptors except stdin, stdout and stderr */ + for (fd = 3; fd < 1024; fd++) close(fd); + /* Now we call /bin/sh to run our cmd ; made it more friendly -DC1 */ + if (shell) + { + execl ("/bin/sh", "sh", "-c", cmd, NULL); + } else + { + char **argv; + int argc; + + my_poptParseArgvString (cmd, &argc, &argv); + execvp (argv[0], argv); + } + /* not reached unless error */ + /*printf("exec error\n");*/ + fflush (stdout); + fflush (stdin); + _exit (0); + } + if (pid == -1) + { + /* Parent context, fork() failed */ + + PrintText (sess, "Error in fork(2)\n"); + close(fds[0]); + close(fds[1]); + } else + { + /* Parent path */ + close(fds[1]); + s->childpid = pid; + s->iotag = fe_input_add (s->myfd, FIA_READ|FIA_EX, exec_data, s); + sess->running_exec = s; + return TRUE; + } + } + return FALSE; +} + +#endif + +static int +cmd_flushq (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + sprintf (tbuf, "Flushing server send queue, %d bytes.\n", sess->server->sendq_len); + PrintText (sess, tbuf); + sess->server->flush_queue (sess->server); + return TRUE; +} + +static int +cmd_quit (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (*word_eol[2]) + sess->quitreason = word_eol[2]; + sess->server->disconnect (sess, TRUE, -1); + sess->quitreason = NULL; + return 2; +} + +static int +cmd_gate (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *server_name = word[2]; + server *serv = sess->server; + if (*server_name) + { + char *port = word[3]; +#ifdef USE_OPENSSL + serv->use_ssl = FALSE; +#endif + server_fill_her_up (serv); + if (*port) + serv->connect (serv, server_name, atoi (port), TRUE); + else + serv->connect (serv, server_name, 23, TRUE); + return TRUE; + } + return FALSE; +} + +typedef struct +{ + char *cmd; + session *sess; +} getvalinfo; + +static void +get_int_cb (int cancel, int val, getvalinfo *info) +{ + char buf[512]; + + if (!cancel) + { + snprintf (buf, sizeof (buf), "%s %d", info->cmd, val); + if (is_session (info->sess)) + handle_command (info->sess, buf, FALSE); + } + + free (info->cmd); + free (info); +} + +static int +cmd_getint (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + getvalinfo *info; + + if (!word[4][0]) + return FALSE; + + info = malloc (sizeof (*info)); + info->cmd = strdup (word[3]); + info->sess = sess; + + fe_get_int (word[4], atoi (word[2]), get_int_cb, info); + + return TRUE; +} + +static void +get_file_cb (char *cmd, char *file) +{ + char buf[1024 + 128]; + + /* execute the command once per file, then once more with + no args */ + if (file) + { + snprintf (buf, sizeof (buf), "%s %s", cmd, file); + handle_command (current_sess, buf, FALSE); + } + else + { + handle_command (current_sess, cmd, FALSE); + free (cmd); + } +} + +static int +cmd_getfile (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int idx = 2; + int flags = 0; + + if (!word[3][0]) + return FALSE; + + if (!strcmp (word[2], "-folder")) + { + flags |= FRF_CHOOSEFOLDER; + idx++; + } + + if (!strcmp (word[idx], "-multi")) + { + flags |= FRF_MULTIPLE; + idx++; + } + + if (!strcmp (word[idx], "-save")) + { + flags |= FRF_WRITE; + idx++; + } + + fe_get_file (word[idx+1], word[idx+2], (void *)get_file_cb, strdup (word[idx]), flags); + + return TRUE; +} + +static void +get_str_cb (int cancel, char *val, getvalinfo *info) +{ + char buf[512]; + + if (!cancel) + { + snprintf (buf, sizeof (buf), "%s %s", info->cmd, val); + if (is_session (info->sess)) + handle_command (info->sess, buf, FALSE); + } + + free (info->cmd); + free (info); +} + +static int +cmd_getstr (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + getvalinfo *info; + + if (!word[4][0]) + return FALSE; + + info = malloc (sizeof (*info)); + info->cmd = strdup (word[3]); + info->sess = sess; + + fe_get_str (word[4], word[2], get_str_cb, info); + + return TRUE; +} + +static int +cmd_ghost (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (!word[2][0]) + return FALSE; + + sess->server->p_ns_ghost (sess->server, word[2], word[3]); + return TRUE; +} + +static int +cmd_gui (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + switch (str_ihash (word[2])) + { + case 0x058b836e: fe_ctrl_gui (sess, 8, 0); break; /* APPLY */ + case 0xac1eee45: fe_ctrl_gui (sess, 7, 2); break; /* ATTACH */ + case 0x05a72f63: fe_ctrl_gui (sess, 4, atoi (word[3])); break; /* COLOR */ + case 0xb06a1793: fe_ctrl_gui (sess, 7, 1); break; /* DETACH */ + case 0x05cfeff0: fe_ctrl_gui (sess, 3, 0); break; /* FLASH */ + case 0x05d154d8: fe_ctrl_gui (sess, 2, 0); break; /* FOCUS */ + case 0x0030dd42: fe_ctrl_gui (sess, 0, 0); break; /* HIDE */ + case 0x61addbe3: fe_ctrl_gui (sess, 5, 0); break; /* ICONIFY */ + case 0xc0851aaa: fe_message (word[3], FE_MSG_INFO|FE_MSG_MARKUP); break; /* MSGBOX */ + case 0x0035dafd: fe_ctrl_gui (sess, 1, 0); break; /* SHOW */ + case 0x0033155f: /* MENU */ + if (!strcasecmp (word[3], "TOGGLE")) + fe_ctrl_gui (sess, 6, 0); + else + return FALSE; + break; + default: + return FALSE; + } + + return TRUE; +} + +typedef struct +{ + int longfmt; + int i, t; + char *buf; +} help_list; + +static void +show_help_line (session *sess, help_list *hl, char *name, char *usage) +{ + int j, len, max; + char *p; + + if (name[0] == '.') /* hidden command? */ + return; + + if (hl->longfmt) /* long format for /HELP -l */ + { + if (!usage || usage[0] == 0) + PrintTextf (sess, " \0034%s\003 :\n", name); + else + PrintTextf (sess, " \0034%s\003 : %s\n", name, _(usage)); + return; + } + + /* append the name into buffer, but convert to uppercase */ + len = strlen (hl->buf); + p = name; + while (*p) + { + hl->buf[len] = toupper ((unsigned char) *p); + len++; + p++; + } + hl->buf[len] = 0; + + hl->t++; + if (hl->t == 5) + { + hl->t = 0; + strcat (hl->buf, "\n"); + PrintText (sess, hl->buf); + hl->buf[0] = ' '; + hl->buf[1] = ' '; + hl->buf[2] = 0; + } else + { + /* append some spaces after the command name */ + max = strlen (name); + if (max < 10) + { + max = 10 - max; + for (j = 0; j < max; j++) + { + hl->buf[len] = ' '; + len++; + hl->buf[len] = 0; + } + } + } +} + +static int +cmd_help (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int i = 0, longfmt = 0; + char *helpcmd = ""; + GSList *list; + + if (tbuf) + helpcmd = word[2]; + if (*helpcmd && strcmp (helpcmd, "-l") == 0) + longfmt = 1; + + if (*helpcmd && !longfmt) + { + help (sess, tbuf, helpcmd, FALSE); + } else + { + struct popup *pop; + char *buf = malloc (4096); + help_list hl; + + hl.longfmt = longfmt; + hl.buf = buf; + + PrintTextf (sess, "\n%s\n\n", _("Commands Available:")); + buf[0] = ' '; + buf[1] = ' '; + buf[2] = 0; + hl.t = 0; + hl.i = 0; + while (xc_cmds[i].name) + { + show_help_line (sess, &hl, xc_cmds[i].name, xc_cmds[i].help); + i++; + } + strcat (buf, "\n"); + PrintText (sess, buf); + + PrintTextf (sess, "\n%s\n\n", _("User defined commands:")); + buf[0] = ' '; + buf[1] = ' '; + buf[2] = 0; + hl.t = 0; + hl.i = 0; + list = command_list; + while (list) + { + pop = list->data; + show_help_line (sess, &hl, pop->name, pop->cmd); + list = list->next; + } + strcat (buf, "\n"); + PrintText (sess, buf); + + PrintTextf (sess, "\n%s\n\n", _("Plugin defined commands:")); + buf[0] = ' '; + buf[1] = ' '; + buf[2] = 0; + hl.t = 0; + hl.i = 0; + plugin_command_foreach (sess, &hl, (void *)show_help_line); + strcat (buf, "\n"); + PrintText (sess, buf); + free (buf); + + PrintTextf (sess, "\n%s\n\n", _("Type /HELP <command> for more information, or /HELP -l")); + } + return TRUE; +} + +static int +cmd_id (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (word[2][0]) + { + sess->server->p_ns_identify (sess->server, word[2]); + return TRUE; + } + + return FALSE; +} + +static int +cmd_ignore (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int i; + int type = 0; + int quiet = 0; + char *mask; + + if (!*word[2]) + { + ignore_showlist (sess); + return TRUE; + } + if (!*word[3]) + return FALSE; + + i = 3; + while (1) + { + if (!*word[i]) + { + if (type == 0) + return FALSE; + + mask = word[2]; + if (strchr (mask, '?') == NULL && + strchr (mask, '*') == NULL && + userlist_find (sess, mask)) + { + mask = tbuf; + snprintf (tbuf, TBUFSIZE, "%s!*@*", word[2]); + } + + i = ignore_add (mask, type); + if (quiet) + return TRUE; + switch (i) + { + case 1: + EMIT_SIGNAL (XP_TE_IGNOREADD, sess, mask, NULL, NULL, NULL, 0); + break; + case 2: /* old ignore changed */ + EMIT_SIGNAL (XP_TE_IGNORECHANGE, sess, mask, NULL, NULL, NULL, 0); + } + return TRUE; + } + if (!strcasecmp (word[i], "UNIGNORE")) + type |= IG_UNIG; + else if (!strcasecmp (word[i], "ALL")) + type |= IG_PRIV | IG_NOTI | IG_CHAN | IG_CTCP | IG_INVI | IG_DCC; + else if (!strcasecmp (word[i], "PRIV")) + type |= IG_PRIV; + else if (!strcasecmp (word[i], "NOTI")) + type |= IG_NOTI; + else if (!strcasecmp (word[i], "CHAN")) + type |= IG_CHAN; + else if (!strcasecmp (word[i], "CTCP")) + type |= IG_CTCP; + else if (!strcasecmp (word[i], "INVI")) + type |= IG_INVI; + else if (!strcasecmp (word[i], "QUIET")) + quiet = 1; + else if (!strcasecmp (word[i], "NOSAVE")) + type |= IG_NOSAVE; + else if (!strcasecmp (word[i], "DCC")) + type |= IG_DCC; + else + { + sprintf (tbuf, _("Unknown arg '%s' ignored."), word[i]); + PrintText (sess, tbuf); + } + i++; + } +} + +static int +cmd_invite (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (!*word[2]) + return FALSE; + if (*word[3]) + sess->server->p_invite (sess->server, word[3], word[2]); + else + sess->server->p_invite (sess->server, sess->channel, word[2]); + return TRUE; +} + +static int +cmd_join (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *chan = word[2]; + if (*chan) + { + char *po, *pass = word[3]; + sess->server->p_join (sess->server, chan, pass); + if (sess->channel[0] == 0 && sess->waitchannel[0]) + { + po = strchr (chan, ','); + if (po) + *po = 0; + safe_strcpy (sess->waitchannel, chan, CHANLEN); + } + return TRUE; + } + return FALSE; +} + +static int +cmd_kick (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *nick = word[2]; + char *reason = word_eol[3]; + if (*nick) + { + sess->server->p_kick (sess->server, sess->channel, nick, reason); + return TRUE; + } + return FALSE; +} + +static int +cmd_kickban (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *nick = word[2]; + char *reason = word_eol[3]; + struct User *user; + + if (*nick) + { + /* if the reason is a 1 digit number, treat it as a bantype */ + + user = userlist_find (sess, nick); + + if (isdigit ((unsigned char) reason[0]) && reason[1] == 0) + { + ban (sess, tbuf, nick, reason, (user && user->op)); + reason[0] = 0; + } else + ban (sess, tbuf, nick, "", (user && user->op)); + + sess->server->p_kick (sess->server, sess->channel, nick, reason); + + return TRUE; + } + return FALSE; +} + +static int +cmd_killall (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + xchat_exit(); + return 2; +} + +static int +cmd_lagcheck (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + lag_check (); + return TRUE; +} + +static void +lastlog (session *sess, char *search, gboolean regexp) +{ + session *lastlog_sess; + + if (!is_session (sess)) + return; + + lastlog_sess = find_dialog (sess->server, "(lastlog)"); + if (!lastlog_sess) + lastlog_sess = new_ircwindow (sess->server, "(lastlog)", SESS_DIALOG, 0); + + lastlog_sess->lastlog_sess = sess; + lastlog_sess->lastlog_regexp = regexp; /* remember the search type */ + + fe_text_clear (lastlog_sess, 0); + fe_lastlog (sess, lastlog_sess, search, regexp); +} + +static int +cmd_lastlog (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (*word_eol[2]) + { + if (!strcmp (word[2], "-r")) + lastlog (sess, word_eol[3], TRUE); + else + lastlog (sess, word_eol[2], FALSE); + return TRUE; + } + + return FALSE; +} + +static int +cmd_list (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + sess->server->p_list_channels (sess->server, word_eol[2], 1); + + return TRUE; +} + +gboolean +load_perform_file (session *sess, char *file) +{ + char tbuf[1024 + 4]; + char *nl; + FILE *fp; + + fp = xchat_fopen_file (file, "r", XOF_FULLPATH); + if (!fp) + return FALSE; + + tbuf[1024] = 0; + while (fgets (tbuf, 1024, fp)) + { + nl = strchr (tbuf, '\n'); + if (nl == tbuf) /* skip empty commands */ + continue; + if (nl) + *nl = 0; + if (tbuf[0] == prefs.cmdchar[0]) + handle_command (sess, tbuf + 1, TRUE); + else + handle_command (sess, tbuf, TRUE); + } + fclose (fp); + return TRUE; +} + +static int +cmd_load (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *error, *arg, *file; + int len; + + if (!word[2][0]) + return FALSE; + + if (strcmp (word[2], "-e") == 0) + { + file = expand_homedir (word[3]); + if (!load_perform_file (sess, file)) + { + PrintTextf (sess, _("Cannot access %s\n"), file); + PrintText (sess, errorstring (errno)); + } + free (file); + return TRUE; + } + +#ifdef USE_PLUGIN + len = strlen (word[2]); +#ifdef WIN32 + if (len > 4 && strcasecmp (".dll", word[2] + len - 4) == 0) +#else +#if defined(__hpux) + if (len > 3 && strcasecmp (".sl", word[2] + len - 3) == 0) +#else + if (len > 3 && strcasecmp (".so", word[2] + len - 3) == 0) +#endif +#endif + { + arg = NULL; + if (word_eol[3][0]) + arg = word_eol[3]; + + file = expand_homedir (word[2]); + error = plugin_load (sess, file, arg); + free (file); + + if (error) + PrintText (sess, error); + + return TRUE; + } +#endif + + sprintf (tbuf, "Unknown file type %s. Maybe you need to install the Perl or Python plugin?\n", word[2]); + PrintText (sess, tbuf); + + return FALSE; +} + +static int +cmd_me (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *act = word_eol[2]; + + if (!(*act)) + return FALSE; + + if (sess->type == SESS_SERVER) + { + notj_msg (sess); + return TRUE; + } + + snprintf (tbuf, TBUFSIZE, "\001ACTION %s\001\r", act); + /* first try through DCC CHAT */ + if (dcc_write_chat (sess->channel, tbuf)) + { + /* print it to screen */ + inbound_action (sess, sess->channel, sess->server->nick, "", act, TRUE, FALSE); + } else + { + /* DCC CHAT failed, try through server */ + if (sess->server->connected) + { + sess->server->p_action (sess->server, sess->channel, act); + /* print it to screen */ + inbound_action (sess, sess->channel, sess->server->nick, "", act, TRUE, FALSE); + } else + { + notc_msg (sess); + } + } + + return TRUE; +} + +static int +cmd_mode (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + /* +channel channels are dying, let those servers whine about modes. + * return info about current channel if available and no info is given */ + if ((*word[2] == '+') || (*word[2] == 0) || (!is_channel(sess->server, word[2]) && + !(rfc_casecmp(sess->server->nick, word[2]) == 0))) + { + if(sess->channel[0] == 0) + return FALSE; + sess->server->p_mode (sess->server, sess->channel, word_eol[2]); + } + else + sess->server->p_mode (sess->server, word[2], word_eol[3]); + return TRUE; +} + +static int +mop_cb (struct User *user, multidata *data) +{ + if (!user->op) + { + data->nicks[data->i] = user->nick; + data->i++; + } + return TRUE; +} + +static int +cmd_mop (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char **nicks = malloc (sizeof (char *) * (sess->total - sess->ops)); + multidata data; + + data.nicks = nicks; + data.i = 0; + tree_foreach (sess->usertree, (tree_traverse_func *)mop_cb, &data); + send_channel_modes (sess, tbuf, nicks, 0, data.i, '+', 'o', 0); + + free (nicks); + + return TRUE; +} + +static int +cmd_msg (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *nick = word[2]; + char *msg = word_eol[3]; + struct session *newsess; + + if (*nick) + { + if (*msg) + { + if (strcmp (nick, ".") == 0) + { /* /msg the last nick /msg'ed */ + if (sess->lastnick[0]) + nick = sess->lastnick; + } else + { + safe_strcpy (sess->lastnick, nick, NICKLEN); /* prime the last nick memory */ + } + + if (*nick == '=') + { + nick++; + if (!dcc_write_chat (nick, msg)) + { + EMIT_SIGNAL (XP_TE_NODCC, sess, NULL, NULL, NULL, NULL, 0); + return TRUE; + } + } else + { + if (!sess->server->connected) + { + notc_msg (sess); + return TRUE; + } + sess->server->p_message (sess->server, nick, msg); + } + newsess = find_dialog (sess->server, nick); + if (!newsess) + newsess = find_channel (sess->server, nick); + if (newsess) + inbound_chanmsg (newsess->server, NULL, newsess->channel, + newsess->server->nick, msg, TRUE, FALSE); + else + { + /* mask out passwords */ + if (strcasecmp (nick, "nickserv") == 0 && + strncasecmp (msg, "identify ", 9) == 0) + msg = "identify ****"; + EMIT_SIGNAL (XP_TE_MSGSEND, sess, nick, msg, NULL, NULL, 0); + } + + return TRUE; + } + } + return FALSE; +} + +static int +cmd_names (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (*word[2]) + sess->server->p_names (sess->server, word[2]); + else + sess->server->p_names (sess->server, sess->channel); + return TRUE; +} + +static int +cmd_nctcp (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (*word_eol[3]) + { + sess->server->p_nctcp (sess->server, word[2], word_eol[3]); + return TRUE; + } + return FALSE; +} + +static int +cmd_newserver (struct session *sess, char *tbuf, char *word[], + char *word_eol[]) +{ + if (strcmp (word[2], "-noconnect") == 0) + { + new_ircwindow (NULL, word[3], SESS_SERVER, 0); + return TRUE; + } + + sess = new_ircwindow (NULL, NULL, SESS_SERVER, 0); + cmd_server (sess, tbuf, word, word_eol); + return TRUE; +} + +static int +cmd_nick (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *nick = word[2]; + if (*nick) + { + if (sess->server->connected) + sess->server->p_change_nick (sess->server, nick); + else + inbound_newnick (sess->server, sess->server->nick, nick, TRUE); + return TRUE; + } + return FALSE; +} + +static int +cmd_notice (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (*word[2] && *word_eol[3]) + { + sess->server->p_notice (sess->server, word[2], word_eol[3]); + EMIT_SIGNAL (XP_TE_NOTICESEND, sess, word[2], word_eol[3], NULL, NULL, 0); + return TRUE; + } + return FALSE; +} + +static int +cmd_notify (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int i = 1; + char *net = NULL; + + if (*word[2]) + { + if (strcmp (word[2], "-n") == 0) /* comma sep network list */ + { + net = word[3]; + i += 2; + } + + while (1) + { + i++; + if (!*word[i]) + break; + if (notify_deluser (word[i])) + { + EMIT_SIGNAL (XP_TE_DELNOTIFY, sess, word[i], NULL, NULL, NULL, 0); + return TRUE; + } + + if (net && strcmp (net, "ASK") == 0) + fe_notify_ask (word[i], NULL); + else + { + notify_adduser (word[i], net); + EMIT_SIGNAL (XP_TE_ADDNOTIFY, sess, word[i], NULL, NULL, NULL, 0); + } + } + } else + notify_showlist (sess); + return TRUE; +} + +static int +cmd_op (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int i = 2; + + while (1) + { + if (!*word[i]) + { + if (i == 2) + return FALSE; + send_channel_modes (sess, tbuf, word, 2, i, '+', 'o', 0); + return TRUE; + } + i++; + } +} + +static int +cmd_part (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *chan = word[2]; + char *reason = word_eol[3]; + if (!*chan) + chan = sess->channel; + if ((*chan) && is_channel (sess->server, chan)) + { + if (reason[0] == 0) + reason = NULL; + server_sendpart (sess->server, chan, reason); + return TRUE; + } + return FALSE; +} + +static int +cmd_ping (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char timestring[64]; + unsigned long tim; + char *to = word[2]; + + tim = make_ping_time (); + + snprintf (timestring, sizeof (timestring), "%lu", tim); + sess->server->p_ping (sess->server, to, timestring); + + return TRUE; +} + +void +open_query (server *serv, char *nick, gboolean focus_existing) +{ + session *sess; + + sess = find_dialog (serv, nick); + if (!sess) + new_ircwindow (serv, nick, SESS_DIALOG, 1); + else if (focus_existing) + fe_ctrl_gui (sess, 2, 0); /* bring-to-front */ +} + +static int +cmd_query (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *nick = word[2]; + gboolean focus = TRUE; + + if (strcmp (word[2], "-nofocus") == 0) + { + nick = word[3]; + focus = FALSE; + } + + if (*nick && !is_channel (sess->server, nick)) + { + open_query (sess->server, nick, focus); + return TRUE; + } + return FALSE; +} + +static int +cmd_quote (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *raw = word_eol[2]; + + return sess->server->p_raw (sess->server, raw); +} + +static int +cmd_reconnect (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int tmp = prefs.recon_delay; + GSList *list; + server *serv = sess->server; + + prefs.recon_delay = 0; + + if (!strcasecmp (word[2], "ALL")) + { + list = serv_list; + while (list) + { + serv = list->data; + if (serv->connected) + serv->auto_reconnect (serv, TRUE, -1); + list = list->next; + } + } + /* If it isn't "ALL" and there is something + there it *should* be a server they are trying to connect to*/ + else if (*word[2]) + { + int offset = 0; +#ifdef USE_OPENSSL + int use_ssl = FALSE; + + if (strcmp (word[2], "-ssl") == 0) + { + use_ssl = TRUE; + offset++; /* args move up by 1 word */ + } + serv->use_ssl = use_ssl; + serv->accept_invalid_cert = TRUE; +#endif + + if (*word[4+offset]) + safe_strcpy (serv->password, word[4+offset], sizeof (serv->password)); + if (*word[3+offset]) + serv->port = atoi (word[3+offset]); + safe_strcpy (serv->hostname, word[2+offset], sizeof (serv->hostname)); + serv->auto_reconnect (serv, TRUE, -1); + } + else + { + serv->auto_reconnect (serv, TRUE, -1); + } + prefs.recon_delay = tmp; + + return TRUE; +} + +static int +cmd_recv (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (*word_eol[2]) + { + sess->server->p_inline (sess->server, word_eol[2], strlen (word_eol[2])); + return TRUE; + } + + return FALSE; +} + +static int +cmd_say (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + char *speech = word_eol[2]; + if (*speech) + { + handle_say (sess, speech, FALSE); + return TRUE; + } + return FALSE; +} + +static int +cmd_send (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + guint32 addr; + socklen_t len; + struct sockaddr_in SAddr; + + if (!word[2][0]) + return FALSE; + + addr = dcc_get_my_address (); + if (addr == 0) + { + /* use the one from our connected server socket */ + memset (&SAddr, 0, sizeof (struct sockaddr_in)); + len = sizeof (SAddr); + getsockname (sess->server->sok, (struct sockaddr *) &SAddr, &len); + addr = SAddr.sin_addr.s_addr; + } + addr = ntohl (addr); + + if ((addr & 0xffff0000) == 0xc0a80000 || /* 192.168.x.x */ + (addr & 0xff000000) == 0x0a000000) /* 10.x.x.x */ + /* we got a private net address, let's PSEND or it'll fail */ + snprintf (tbuf, 512, "DCC PSEND %s", word_eol[2]); + else + snprintf (tbuf, 512, "DCC SEND %s", word_eol[2]); + + handle_command (sess, tbuf, FALSE); + + return TRUE; +} + +static int +cmd_setcursor (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int delta = FALSE; + + if (*word[2]) + { + if (word[2][0] == '-' || word[2][0] == '+') + delta = TRUE; + fe_set_inputbox_cursor (sess, delta, atoi (word[2])); + return TRUE; + } + + return FALSE; +} + +static int +cmd_settab (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (*word_eol[2]) + { + strcpy (tbuf, sess->channel); + safe_strcpy (sess->channel, word_eol[2], CHANLEN); + fe_set_channel (sess); + strcpy (sess->channel, tbuf); + } + + return TRUE; +} + +static int +cmd_settext (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + fe_set_inputbox_contents (sess, word_eol[2]); + return TRUE; +} + +static int +cmd_splay (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (*word[2]) + { + sound_play (word[2], FALSE); + return TRUE; + } + + return FALSE; +} + +static int +parse_irc_url (char *url, char *server_name[], char *port[], char *channel[], int *use_ssl) +{ + char *co; +#ifdef USE_OPENSSL + if (strncasecmp ("ircs://", url, 7) == 0) + { + *use_ssl = TRUE; + *server_name = url + 7; + goto urlserv; + } +#endif + + if (strncasecmp ("irc://", url, 6) == 0) + { + *server_name = url + 6; +#ifdef USE_OPENSSL +urlserv: +#endif + /* check for port */ + co = strchr (*server_name, ':'); + if (co) + { + *port = co + 1; + *co = 0; + } else + co = *server_name; + /* check for channel - mirc style */ + co = strchr (co + 1, '/'); + if (co) + { + *co = 0; + co++; + if (*co == '#') + *channel = co+1; + else + *channel = co; + + } + return TRUE; + } + return FALSE; +} + +static int +cmd_server (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int offset = 0; + char *server_name = NULL; + char *port = NULL; + char *pass = NULL; + char *channel = NULL; + int use_ssl = FALSE; + int is_url = TRUE; + server *serv = sess->server; + +#ifdef USE_OPENSSL + /* BitchX uses -ssl, mIRC uses -e, let's support both */ + if (strcmp (word[2], "-ssl") == 0 || strcmp (word[2], "-e") == 0) + { + use_ssl = TRUE; + offset++; /* args move up by 1 word */ + } +#endif + + if (!parse_irc_url (word[2 + offset], &server_name, &port, &channel, &use_ssl)) + { + is_url = FALSE; + server_name = word[2 + offset]; + } + if (port) + pass = word[3 + offset]; + else + { + port = word[3 + offset]; + pass = word[4 + offset]; + } + + if (!(*server_name)) + return FALSE; + + sess->server->network = NULL; + + /* dont clear it for /servchan */ + if (strncasecmp (word_eol[1], "SERVCHAN ", 9)) + sess->willjoinchannel[0] = 0; + + if (channel) + { + sess->willjoinchannel[0] = '#'; + safe_strcpy ((sess->willjoinchannel + 1), channel, (CHANLEN - 1)); + } + + /* support +7000 style ports like mIRC */ + if (port[0] == '+') + { + port++; +#ifdef USE_OPENSSL + use_ssl = TRUE; +#endif + } + + if (*pass) + { + safe_strcpy (serv->password, pass, sizeof (serv->password)); + } +#ifdef USE_OPENSSL + serv->use_ssl = use_ssl; + serv->accept_invalid_cert = TRUE; +#endif + + /* try to connect by Network name */ + if (servlist_connect_by_netname (sess, server_name, !is_url)) + return TRUE; + + if (*port) + { + serv->connect (serv, server_name, atoi (port), FALSE); + } else + { + /* -1 for default port */ + serv->connect (serv, server_name, -1, FALSE); + } + + /* try to associate this connection with a listed network */ + if (!serv->network) + /* search for this hostname in the entire server list */ + serv->network = servlist_net_find_from_server (server_name); + /* may return NULL, but that's OK */ + + return TRUE; +} + +static int +cmd_servchan (struct session *sess, char *tbuf, char *word[], + char *word_eol[]) +{ + int offset = 0; + +#ifdef USE_OPENSSL + if (strcmp (word[2], "-ssl") == 0) + offset++; +#endif + + if (*word[4 + offset]) + { + safe_strcpy (sess->willjoinchannel, word[4 + offset], CHANLEN); + return cmd_server (sess, tbuf, word, word_eol); + } + + return FALSE; +} + +static int +cmd_topic (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (word[2][0] && is_channel (sess->server, word[2])) + sess->server->p_topic (sess->server, word[2], word_eol[3]); + else + sess->server->p_topic (sess->server, sess->channel, word_eol[2]); + return TRUE; +} + +static int +cmd_tray (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (strcmp (word[2], "-b") == 0) + { + fe_tray_set_balloon (word[3], word[4][0] ? word[4] : NULL); + return TRUE; + } + + if (strcmp (word[2], "-t") == 0) + { + fe_tray_set_tooltip (word[3][0] ? word[3] : NULL); + return TRUE; + } + + if (strcmp (word[2], "-i") == 0) + { + fe_tray_set_icon (atoi (word[3])); + return TRUE; + } + + if (strcmp (word[2], "-f") != 0) + return FALSE; + + if (!word[3][0]) + { + fe_tray_set_file (NULL); /* default xchat icon */ + return TRUE; + } + + if (!word[4][0]) + { + fe_tray_set_file (word[3]); /* fixed custom icon */ + return TRUE; + } + + /* flash between 2 icons */ + fe_tray_set_flash (word[4], word[5][0] ? word[5] : NULL, atoi (word[3])); + return TRUE; +} + +static int +cmd_unignore (struct session *sess, char *tbuf, char *word[], + char *word_eol[]) +{ + char *mask = word[2]; + char *arg = word[3]; + if (*mask) + { + if (ignore_del (mask, NULL)) + { + if (strcasecmp (arg, "QUIET")) + EMIT_SIGNAL (XP_TE_IGNOREREMOVE, sess, mask, NULL, NULL, NULL, 0); + } + return TRUE; + } + return FALSE; +} + +static int +cmd_unload (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ +#ifdef USE_PLUGIN + int len, by_file = FALSE; + + len = strlen (word[2]); +#ifdef WIN32 + if (len > 4 && strcasecmp (word[2] + len - 4, ".dll") == 0) +#else +#if defined(__hpux) + if (len > 3 && strcasecmp (word[2] + len - 3, ".sl") == 0) +#else + if (len > 3 && strcasecmp (word[2] + len - 3, ".so") == 0) +#endif +#endif + by_file = TRUE; + + switch (plugin_kill (word[2], by_file)) + { + case 0: + PrintText (sess, _("No such plugin found.\n")); + break; + case 1: + return TRUE; + case 2: + PrintText (sess, _("That plugin is refusing to unload.\n")); + break; + } +#endif + + return FALSE; +} + +static server * +find_server_from_hostname (char *hostname) +{ + GSList *list = serv_list; + server *serv; + + while (list) + { + serv = list->data; + if (!strcasecmp (hostname, serv->hostname) && serv->connected) + return serv; + list = list->next; + } + + return NULL; +} + +static server * +find_server_from_net (void *net) +{ + GSList *list = serv_list; + server *serv; + + while (list) + { + serv = list->data; + if (serv->network == net && serv->connected) + return serv; + list = list->next; + } + + return NULL; +} + +static void +url_join_only (server *serv, char *tbuf, char *channel) +{ + /* already connected, JOIN only. FIXME: support keys? */ + tbuf[0] = '#'; + /* tbuf is 4kb */ + safe_strcpy ((tbuf + 1), channel, 256); + serv->p_join (serv, tbuf, ""); +} + +static int +cmd_url (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + if (word[2][0]) + { + char *server_name = NULL; + char *port = NULL; + char *channel = NULL; + char *url = g_strdup (word[2]); + int use_ssl = FALSE; + void *net; + server *serv; + + if (parse_irc_url (url, &server_name, &port, &channel, &use_ssl)) + { + /* maybe we're already connected to this net */ + + /* check for "FreeNode" */ + net = servlist_net_find (server_name, NULL, strcasecmp); + /* check for "irc.eu.freenode.net" */ + if (!net) + net = servlist_net_find_from_server (server_name); + + if (net) + { + /* found the network, but are we connected? */ + serv = find_server_from_net (net); + if (serv) + { + url_join_only (serv, tbuf, channel); + g_free (url); + return TRUE; + } + } + else + { + /* an un-listed connection */ + serv = find_server_from_hostname (server_name); + if (serv) + { + url_join_only (serv, tbuf, channel); + g_free (url); + return TRUE; + } + } + + /* not connected to this net, open new window */ + cmd_newserver (sess, tbuf, word, word_eol); + + } else + fe_open_url (word[2]); + g_free (url); + return TRUE; + } + + return FALSE; +} + +static int +userlist_cb (struct User *user, session *sess) +{ + time_t lt; + + if (!user->lasttalk) + lt = 0; + else + lt = time (0) - user->lasttalk; + PrintTextf (sess, + "\00306%s\t\00314[\00310%-38s\00314] \017ov\0033=\017%d%d away=%u lt\0033=\017%d\n", + user->nick, user->hostname, user->op, user->voice, user->away, lt); + + return TRUE; +} + +static int +cmd_uselect (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int idx = 2; + int clear = TRUE; + int scroll = FALSE; + + if (strcmp (word[2], "-a") == 0) /* ADD (don't clear selections) */ + { + clear = FALSE; + idx++; + } + if (strcmp (word[idx], "-s") == 0) /* SCROLL TO */ + { + scroll = TRUE; + idx++; + } + /* always valid, no args means clear the selection list */ + fe_uselect (sess, word + idx, clear, scroll); + return TRUE; +} + +static int +cmd_userlist (struct session *sess, char *tbuf, char *word[], + char *word_eol[]) +{ + tree_foreach (sess->usertree, (tree_traverse_func *)userlist_cb, sess); + return TRUE; +} + +static int +wallchop_cb (struct User *user, multidata *data) +{ + if (user->op) + { + if (data->i) + strcat (data->tbuf, ","); + strcat (data->tbuf, user->nick); + data->i++; + } + if (data->i == 5) + { + data->i = 0; + sprintf (data->tbuf + strlen (data->tbuf), + " :[@%s] %s", data->sess->channel, data->reason); + data->sess->server->p_raw (data->sess->server, data->tbuf); + strcpy (data->tbuf, "NOTICE "); + } + + return TRUE; +} + +static int +cmd_wallchop (struct session *sess, char *tbuf, char *word[], + char *word_eol[]) +{ + multidata data; + + if (!(*word_eol[2])) + return FALSE; + + strcpy (tbuf, "NOTICE "); + + data.reason = word_eol[2]; + data.tbuf = tbuf; + data.i = 0; + data.sess = sess; + tree_foreach (sess->usertree, (tree_traverse_func*)wallchop_cb, &data); + + if (data.i) + { + sprintf (tbuf + strlen (tbuf), + " :[@%s] %s", sess->channel, word_eol[2]); + sess->server->p_raw (sess->server, tbuf); + } + + return TRUE; +} + +static int +cmd_wallchan (struct session *sess, char *tbuf, char *word[], + char *word_eol[]) +{ + GSList *list; + + if (*word_eol[2]) + { + list = sess_list; + while (list) + { + sess = list->data; + if (sess->type == SESS_CHANNEL) + { + inbound_chanmsg (sess->server, NULL, sess->channel, + sess->server->nick, word_eol[2], TRUE, FALSE); + sess->server->p_message (sess->server, sess->channel, word_eol[2]); + } + list = list->next; + } + return TRUE; + } + return FALSE; +} + +static int +cmd_hop (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int i = 2; + + while (1) + { + if (!*word[i]) + { + if (i == 2) + return FALSE; + send_channel_modes (sess, tbuf, word, 2, i, '+', 'h', 0); + return TRUE; + } + i++; + } +} + +static int +cmd_voice (struct session *sess, char *tbuf, char *word[], char *word_eol[]) +{ + int i = 2; + + while (1) + { + if (!*word[i]) + { + if (i == 2) + return FALSE; + send_channel_modes (sess, tbuf, word, 2, i, '+', 'v', 0); + return TRUE; + } + i++; + } +} + +/* *MUST* be kept perfectly sorted for the bsearch to work */ +const struct commands xc_cmds[] = { + {"ADDBUTTON", cmd_addbutton, 0, 0, 1, + N_("ADDBUTTON <name> <action>, adds a button under the user-list")}, + {"ALLCHAN", cmd_allchannels, 0, 0, 1, + N_("ALLCHAN <cmd>, sends a command to all channels you're in")}, + {"ALLCHANL", cmd_allchannelslocal, 0, 0, 1, + N_("ALLCHANL <cmd>, sends a command to all channels you're in")}, + {"ALLSERV", cmd_allservers, 0, 0, 1, + N_("ALLSERV <cmd>, sends a command to all servers you're in")}, + {"AWAY", cmd_away, 1, 0, 1, N_("AWAY [<reason>], sets you away")}, + {"BACK", cmd_back, 1, 0, 1, N_("BACK, sets you back (not away)")}, + {"BAN", cmd_ban, 1, 1, 1, + N_("BAN <mask> [<bantype>], bans everyone matching the mask from the current channel. If they are already on the channel this doesn't kick them (needs chanop)")}, + {"CHANOPT", cmd_chanopt, 0, 0, 1, N_("CHANOPT [-quiet] <variable> [<value>]")}, + {"CHARSET", cmd_charset, 0, 0, 1, 0}, + {"CLEAR", cmd_clear, 0, 0, 1, N_("CLEAR [ALL|HISTORY], Clears the current text window or command history")}, + {"CLOSE", cmd_close, 0, 0, 1, N_("CLOSE, Closes the current window/tab")}, + + {"COUNTRY", cmd_country, 0, 0, 1, + N_("COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia")}, + {"CTCP", cmd_ctcp, 1, 0, 1, + N_("CTCP <nick> <message>, send the CTCP message to nick, common messages are VERSION and USERINFO")}, + {"CYCLE", cmd_cycle, 1, 1, 1, + N_("CYCLE [<channel>], parts the current or given channel and immediately rejoins")}, + {"DCC", cmd_dcc, 0, 0, 1, + N_("\n" + "DCC GET <nick> - accept an offered file\n" + "DCC SEND [-maxcps=#] <nick> [file] - send a file to someone\n" + "DCC PSEND [-maxcps=#] <nick> [file] - send a file using passive mode\n" + "DCC LIST - show DCC list\n" + "DCC CHAT <nick> - offer DCC CHAT to someone\n" + "DCC PCHAT <nick> - offer DCC CHAT using passive mode\n" + "DCC CLOSE <type> <nick> <file> example:\n" + " /dcc close send johnsmith file.tar.gz")}, + {"DEBUG", cmd_debug, 0, 0, 1, 0}, + + {"DEHOP", cmd_dehop, 1, 1, 1, + N_("DEHOP <nick>, removes chanhalf-op status from the nick on the current channel (needs chanop)")}, + {"DELBUTTON", cmd_delbutton, 0, 0, 1, + N_("DELBUTTON <name>, deletes a button from under the user-list")}, + {"DEOP", cmd_deop, 1, 1, 1, + N_("DEOP <nick>, removes chanop status from the nick on the current channel (needs chanop)")}, + {"DEVOICE", cmd_devoice, 1, 1, 1, + N_("DEVOICE <nick>, removes voice status from the nick on the current channel (needs chanop)")}, + {"DISCON", cmd_discon, 0, 0, 1, N_("DISCON, Disconnects from server")}, + {"DNS", cmd_dns, 0, 0, 1, N_("DNS <nick|host|ip>, Finds a users IP number")}, + {"ECHO", cmd_echo, 0, 0, 1, N_("ECHO <text>, Prints text locally")}, +#ifndef WIN32 + {"EXEC", cmd_exec, 0, 0, 1, + N_("EXEC [-o] <command>, runs the command. If -o flag is used then output is sent to current channel, else is printed to current text box")}, +#ifndef __EMX__ + {"EXECCONT", cmd_execc, 0, 0, 1, N_("EXECCONT, sends the process SIGCONT")}, +#endif + {"EXECKILL", cmd_execk, 0, 0, 1, + N_("EXECKILL [-9], kills a running exec in the current session. If -9 is given the process is SIGKILL'ed")}, +#ifndef __EMX__ + {"EXECSTOP", cmd_execs, 0, 0, 1, N_("EXECSTOP, sends the process SIGSTOP")}, + {"EXECWRITE", cmd_execw, 0, 0, 1, N_("EXECWRITE, sends data to the processes stdin")}, +#endif +#endif + {"FLUSHQ", cmd_flushq, 0, 0, 1, + N_("FLUSHQ, flushes the current server's send queue")}, + {"GATE", cmd_gate, 0, 0, 1, + N_("GATE <host> [<port>], proxies through a host, port defaults to 23")}, + {"GETFILE", cmd_getfile, 0, 0, 1, "GETFILE [-folder] [-multi] [-save] <command> <title> [<initial>]"}, + {"GETINT", cmd_getint, 0, 0, 1, "GETINT <default> <command> <prompt>"}, + {"GETSTR", cmd_getstr, 0, 0, 1, "GETSTR <default> <command> <prompt>"}, + {"GHOST", cmd_ghost, 1, 0, 1, N_("GHOST <nick> [password], Kills a ghosted nickname")}, + {"GUI", cmd_gui, 0, 0, 1, "GUI [APPLY|ATTACH|DETACH|SHOW|HIDE|FOCUS|FLASH|ICONIFY|COLOR <n>]\n" + " GUI [MSGBOX <text>|MENU TOGGLE]"}, + {"HELP", cmd_help, 0, 0, 1, 0}, + {"HOP", cmd_hop, 1, 1, 1, + N_("HOP <nick>, gives chanhalf-op status to the nick (needs chanop)")}, + {"ID", cmd_id, 1, 0, 1, N_("ID <password>, identifies yourself to nickserv")}, + {"IGNORE", cmd_ignore, 0, 0, 1, + N_("IGNORE <mask> <types..> <options..>\n" + " mask - host mask to ignore, eg: *!*@*.aol.com\n" + " types - types of data to ignore, one or all of:\n" + " PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" + " options - NOSAVE, QUIET")}, + + {"INVITE", cmd_invite, 1, 0, 1, + N_("INVITE <nick> [<channel>], invites someone to a channel, by default the current channel (needs chanop)")}, + {"JOIN", cmd_join, 1, 0, 0, N_("JOIN <channel>, joins the channel")}, + {"KICK", cmd_kick, 1, 1, 1, + N_("KICK <nick>, kicks the nick from the current channel (needs chanop)")}, + {"KICKBAN", cmd_kickban, 1, 1, 1, + N_("KICKBAN <nick>, bans then kicks the nick from the current channel (needs chanop)")}, + {"KILLALL", cmd_killall, 0, 0, 1, "KILLALL, immediately exit"}, + {"LAGCHECK", cmd_lagcheck, 0, 0, 1, + N_("LAGCHECK, forces a new lag check")}, + {"LASTLOG", cmd_lastlog, 0, 0, 1, + N_("LASTLOG <string>, searches for a string in the buffer")}, + {"LIST", cmd_list, 1, 0, 1, 0}, + {"LOAD", cmd_load, 0, 0, 1, N_("LOAD [-e] <file>, loads a plugin or script")}, + + {"MDEHOP", cmd_mdehop, 1, 1, 1, + N_("MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)")}, + {"MDEOP", cmd_mdeop, 1, 1, 1, + N_("MDEOP, Mass deop's all chanops in the current channel (needs chanop)")}, + {"ME", cmd_me, 0, 0, 1, + N_("ME <action>, sends the action to the current channel (actions are written in the 3rd person, like /me jumps)")}, + {"MENU", cmd_menu, 0, 0, 1, "MENU [-eX] [-i<ICONFILE>] [-k<mod>,<key>] [-m] [-pX] [-r<X,group>] [-tX] {ADD|DEL} <path> [command] [unselect command]\n" + " See http://xchat.org/docs/menu/ for more details."}, + {"MKICK", cmd_mkick, 1, 1, 1, + N_("MKICK, Mass kicks everyone except you in the current channel (needs chanop)")}, + {"MODE", cmd_mode, 1, 0, 1, 0}, + {"MOP", cmd_mop, 1, 1, 1, + N_("MOP, Mass op's all users in the current channel (needs chanop)")}, + {"MSG", cmd_msg, 0, 0, 1, N_("MSG <nick> <message>, sends a private message")}, + + {"NAMES", cmd_names, 1, 0, 1, + N_("NAMES, Lists the nicks on the current channel")}, + {"NCTCP", cmd_nctcp, 1, 0, 1, + N_("NCTCP <nick> <message>, Sends a CTCP notice")}, + {"NEWSERVER", cmd_newserver, 0, 0, 1, N_("NEWSERVER [-noconnect] <hostname> [<port>]")}, + {"NICK", cmd_nick, 0, 0, 1, N_("NICK <nickname>, sets your nick")}, + + {"NOTICE", cmd_notice, 1, 0, 1, + N_("NOTICE <nick/channel> <message>, sends a notice. Notices are a type of message that should be auto reacted to")}, + {"NOTIFY", cmd_notify, 0, 0, 1, + N_("NOTIFY [-n network1[,network2,...]] [<nick>], displays your notify list or adds someone to it")}, + {"OP", cmd_op, 1, 1, 1, + N_("OP <nick>, gives chanop status to the nick (needs chanop)")}, + {"PART", cmd_part, 1, 1, 0, + N_("PART [<channel>] [<reason>], leaves the channel, by default the current one")}, + {"PING", cmd_ping, 1, 0, 1, + N_("PING <nick | channel>, CTCP pings nick or channel")}, + {"QUERY", cmd_query, 0, 0, 1, + N_("QUERY [-nofocus] <nick>, opens up a new privmsg window to someone")}, + {"QUIT", cmd_quit, 0, 0, 1, + N_("QUIT [<reason>], disconnects from the current server")}, + {"QUOTE", cmd_quote, 1, 0, 1, + N_("QUOTE <text>, sends the text in raw form to the server")}, +#ifdef USE_OPENSSL + {"RECONNECT", cmd_reconnect, 0, 0, 1, + N_("RECONNECT [-ssl] [<host>] [<port>] [<password>], Can be called just as /RECONNECT to reconnect to the current server or with /RECONNECT ALL to reconnect to all the open servers")}, +#else + {"RECONNECT", cmd_reconnect, 0, 0, 1, + N_("RECONNECT [<host>] [<port>] [<password>], Can be called just as /RECONNECT to reconnect to the current server or with /RECONNECT ALL to reconnect to all the open servers")}, +#endif + {"RECV", cmd_recv, 1, 0, 1, N_("RECV <text>, send raw data to xchat, as if it was received from the irc server")}, + + {"SAY", cmd_say, 0, 0, 1, + N_("SAY <text>, sends the text to the object in the current window")}, + {"SEND", cmd_send, 0, 0, 1, N_("SEND <nick> [<file>]")}, +#ifdef USE_OPENSSL + {"SERVCHAN", cmd_servchan, 0, 0, 1, + N_("SERVCHAN [-ssl] <host> <port> <channel>, connects and joins a channel")}, +#else + {"SERVCHAN", cmd_servchan, 0, 0, 1, + N_("SERVCHAN <host> <port> <channel>, connects and joins a channel")}, +#endif +#ifdef USE_OPENSSL + {"SERVER", cmd_server, 0, 0, 1, + N_("SERVER [-ssl] <host> [<port>] [<password>], connects to a server, the default port is 6667 for normal connections, and 9999 for ssl connections")}, +#else + {"SERVER", cmd_server, 0, 0, 1, + N_("SERVER <host> [<port>] [<password>], connects to a server, the default port is 6667")}, +#endif + {"SET", cmd_set, 0, 0, 1, N_("SET [-e] [-off|-on] [-quiet] <variable> [<value>]")}, + {"SETCURSOR", cmd_setcursor, 0, 0, 1, N_("SETCURSOR [-|+]<position>")}, + {"SETTAB", cmd_settab, 0, 0, 1, 0}, + {"SETTEXT", cmd_settext, 0, 0, 1, 0}, + {"SPLAY", cmd_splay, 0, 0, 1, "SPLAY <soundfile>"}, + {"TOPIC", cmd_topic, 1, 1, 1, + N_("TOPIC [<topic>], sets the topic if one is given, else shows the current topic")}, + {"TRAY", cmd_tray, 0, 0, 1, + N_("\nTRAY -f <timeout> <file1> [<file2>] Blink tray between two icons.\n" + "TRAY -f <filename> Set tray to a fixed icon.\n" + "TRAY -i <number> Blink tray with an internal icon.\n" + "TRAY -t <text> Set the tray tooltip.\n" + "TRAY -b <title> <text> Set the tray balloon." + )}, + {"UNBAN", cmd_unban, 1, 1, 1, + N_("UNBAN <mask> [<mask>...], unbans the specified masks.")}, + {"UNIGNORE", cmd_unignore, 0, 0, 1, N_("UNIGNORE <mask> [QUIET]")}, + {"UNLOAD", cmd_unload, 0, 0, 1, N_("UNLOAD <name>, unloads a plugin or script")}, + {"URL", cmd_url, 0, 0, 1, N_("URL <url>, opens a URL in your browser")}, + {"USELECT", cmd_uselect, 0, 1, 0, + N_("USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel userlist")}, + {"USERLIST", cmd_userlist, 1, 1, 1, 0}, + {"VOICE", cmd_voice, 1, 1, 1, + N_("VOICE <nick>, gives voice status to someone (needs chanop)")}, + {"WALLCHAN", cmd_wallchan, 1, 1, 1, + N_("WALLCHAN <message>, writes the message to all channels")}, + {"WALLCHOP", cmd_wallchop, 1, 1, 1, + N_("WALLCHOP <message>, sends the message to all chanops on the current channel")}, + {0, 0, 0, 0, 0, 0} +}; + + +static int +command_compare (const void *a, const void *b) +{ + return strcasecmp (a, ((struct commands *)b)->name); +} + +static struct commands * +find_internal_command (char *name) +{ + /* the "-1" is to skip the NULL terminator */ + return bsearch (name, xc_cmds, (sizeof (xc_cmds) / + sizeof (xc_cmds[0])) - 1, sizeof (xc_cmds[0]), command_compare); +} + +static void +help (session *sess, char *tbuf, char *helpcmd, int quiet) +{ + struct commands *cmd; + + if (plugin_show_help (sess, helpcmd)) + return; + + cmd = find_internal_command (helpcmd); + + if (cmd) + { + if (cmd->help) + { + snprintf (tbuf, TBUFSIZE, _("Usage: %s\n"), _(cmd->help)); + PrintText (sess, tbuf); + } else + { + if (!quiet) + PrintText (sess, _("\nNo help available on that command.\n")); + } + return; + } + + if (!quiet) + PrintText (sess, _("No such command.\n")); +} + +/* inserts %a, %c, %d etc into buffer. Also handles &x %x for word/word_eol. * + * returns 2 on buffer overflow + * returns 1 on success * + * returns 0 on bad-args-for-user-command * + * - word/word_eol args might be NULL * + * - this beast is used for UserCommands, UserlistButtons and CTCP replies */ + +int +auto_insert (char *dest, int destlen, unsigned char *src, char *word[], + char *word_eol[], char *a, char *c, char *d, char *e, char *h, + char *n, char *s) +{ + int num; + char buf[32]; + time_t now; + struct tm *tm_ptr; + char *utf; + gsize utf_len; + char *orig = dest; + + destlen--; + + while (src[0]) + { + if (src[0] == '%' || src[0] == '&') + { + if (isdigit ((unsigned char) src[1])) + { + if (isdigit ((unsigned char) src[2]) && isdigit ((unsigned char) src[3])) + { + buf[0] = src[1]; + buf[1] = src[2]; + buf[2] = src[3]; + buf[3] = 0; + dest[0] = atoi (buf); + utf = g_locale_to_utf8 (dest, 1, 0, &utf_len, 0); + if (utf) + { + if ((dest - orig) + utf_len >= destlen) + { + g_free (utf); + return 2; + } + + memcpy (dest, utf, utf_len); + g_free (utf); + dest += utf_len; + } + src += 3; + } else + { + if (word) + { + src++; + num = src[0] - '0'; /* ascii to decimal */ + if (*word[num] == 0) + return 0; + + if (src[-1] == '%') + utf = word[num]; + else + utf = word_eol[num]; + + /* avoid recusive usercommand overflow */ + if ((dest - orig) + strlen (utf) >= destlen) + return 2; + + strcpy (dest, utf); + dest += strlen (dest); + } + } + } else + { + if (src[0] == '&') + goto lamecode; + src++; + utf = NULL; + switch (src[0]) + { + case '%': + if ((dest - orig) + 2 >= destlen) + return 2; + dest[0] = '%'; + dest[1] = 0; + dest++; + break; + case 'a': + utf = a; break; + case 'c': + utf = c; break; + case 'd': + utf = d; break; + case 'e': + utf = e; break; + case 'h': + utf = h; break; + case 'm': + utf = get_cpu_str (); break; + case 'n': + utf = n; break; + case 's': + utf = s; break; + case 't': + now = time (0); + utf = ctime (&now); + utf[19] = 0; + break; + case 'v': + utf = PACKAGE_VERSION; break; + break; + case 'y': + now = time (0); + tm_ptr = localtime (&now); + snprintf (buf, sizeof (buf), "%4d%02d%02d", 1900 + + tm_ptr->tm_year, 1 + tm_ptr->tm_mon, tm_ptr->tm_mday); + utf = buf; + break; + default: + src--; + goto lamecode; + } + + if (utf) + { + if ((dest - orig) + strlen (utf) >= destlen) + return 2; + strcpy (dest, utf); + dest += strlen (dest); + } + + } + src++; + } else + { + utf_len = g_utf8_skip[src[0]]; + + if ((dest - orig) + utf_len >= destlen) + return 2; + + if (utf_len == 1) + { + lamecode: + dest[0] = src[0]; + dest++; + src++; + } else + { + memcpy (dest, src, utf_len); + dest += utf_len; + src += utf_len; + } + } + } + + dest[0] = 0; + + return 1; +} + +void +check_special_chars (char *cmd, int do_ascii) /* check for %X */ +{ + int occur = 0; + int len = strlen (cmd); + char *buf, *utf; + char tbuf[4]; + int i = 0, j = 0; + gsize utf_len; + + if (!len) + return; + + buf = malloc (len + 1); + + if (buf) + { + while (cmd[j]) + { + switch (cmd[j]) + { + case '%': + occur++; + if ( do_ascii && + j + 3 < len && + (isdigit ((unsigned char) cmd[j + 1]) && isdigit ((unsigned char) cmd[j + 2]) && + isdigit ((unsigned char) cmd[j + 3]))) + { + tbuf[0] = cmd[j + 1]; + tbuf[1] = cmd[j + 2]; + tbuf[2] = cmd[j + 3]; + tbuf[3] = 0; + buf[i] = atoi (tbuf); + utf = g_locale_to_utf8 (buf + i, 1, 0, &utf_len, 0); + if (utf) + { + memcpy (buf + i, utf, utf_len); + g_free (utf); + i += (utf_len - 1); + } + j += 3; + } else + { + switch (cmd[j + 1]) + { + case 'R': + buf[i] = '\026'; + break; + case 'U': + buf[i] = '\037'; + break; + case 'B': + buf[i] = '\002'; + break; + case 'C': + buf[i] = '\003'; + break; + case 'O': + buf[i] = '\017'; + break; + case 'H': /* CL: invisible text code */ + buf[i] = HIDDEN_CHAR; + break; + case '%': + buf[i] = '%'; + break; + default: + buf[i] = '%'; + j--; + break; + } + j++; + break; + default: + buf[i] = cmd[j]; + } + } + j++; + i++; + } + buf[i] = 0; + if (occur) + strcpy (cmd, buf); + free (buf); + } +} + +typedef struct +{ + char *nick; + int len; + struct User *best; + int bestlen; + char *space; + char *tbuf; +} nickdata; + +static int +nick_comp_cb (struct User *user, nickdata *data) +{ + int lenu; + + if (!rfc_ncasecmp (user->nick, data->nick, data->len)) + { + lenu = strlen (user->nick); + if (lenu == data->len) + { + snprintf (data->tbuf, TBUFSIZE, "%s%s", user->nick, data->space); + data->len = -1; + return FALSE; + } else if (lenu < data->bestlen) + { + data->bestlen = lenu; + data->best = user; + } + } + + return TRUE; +} + +static void +perform_nick_completion (struct session *sess, char *cmd, char *tbuf) +{ + int len; + char *space = strchr (cmd, ' '); + if (space && space != cmd) + { + if (space[-1] == prefs.nick_suffix[0] && space - 1 != cmd) + { + len = space - cmd - 1; + if (len < NICKLEN) + { + char nick[NICKLEN]; + nickdata data; + + memcpy (nick, cmd, len); + nick[len] = 0; + + data.nick = nick; + data.len = len; + data.bestlen = INT_MAX; + data.best = NULL; + data.tbuf = tbuf; + data.space = space - 1; + tree_foreach (sess->usertree, (tree_traverse_func *)nick_comp_cb, &data); + + if (data.len == -1) + return; + + if (data.best) + { + snprintf (tbuf, TBUFSIZE, "%s%s", data.best->nick, space - 1); + return; + } + } + } + } + + strcpy (tbuf, cmd); +} + +static void +user_command (session * sess, char *tbuf, char *cmd, char *word[], + char *word_eol[]) +{ + if (!auto_insert (tbuf, 2048, cmd, word, word_eol, "", sess->channel, "", + server_get_network (sess->server, TRUE), "", + sess->server->nick, "")) + { + PrintText (sess, _("Bad arguments for user command.\n")); + return; + } + + handle_command (sess, tbuf, TRUE); +} + +/* handle text entered without a CMDchar prefix */ + +static void +handle_say (session *sess, char *text, int check_spch) +{ + struct DCC *dcc; + char *word[PDIWORDS+1]; + char *word_eol[PDIWORDS+1]; + char pdibuf_static[1024]; + char newcmd_static[1024]; + char *pdibuf = pdibuf_static; + char *newcmd = newcmd_static; + int len; + int newcmdlen = sizeof newcmd_static; + + if (strcmp (sess->channel, "(lastlog)") == 0) + { + lastlog (sess->lastlog_sess, text, sess->lastlog_regexp); + return; + } + + len = strlen (text); + if (len >= sizeof pdibuf_static) + pdibuf = malloc (len + 1); + + if (len + NICKLEN >= newcmdlen) + newcmd = malloc (newcmdlen = len + NICKLEN + 1); + + if (check_spch && prefs.perc_color) + check_special_chars (text, prefs.perc_ascii); + + /* Python relies on this */ + word[PDIWORDS] = NULL; + word_eol[PDIWORDS] = NULL; + + /* split the text into words and word_eol */ + process_data_init (pdibuf, text, word, word_eol, TRUE, FALSE); + + /* a command of "" can be hooked for non-commands */ + if (plugin_emit_command (sess, "", word, word_eol)) + goto xit; + + /* incase a plugin did /close */ + if (!is_session (sess)) + goto xit; + + if (!sess->channel[0] || sess->type == SESS_SERVER || sess->type == SESS_NOTICES || sess->type == SESS_SNOTICES) + { + notj_msg (sess); + goto xit; + } + + if (prefs.nickcompletion) + perform_nick_completion (sess, text, newcmd); + else + safe_strcpy (newcmd, text, newcmdlen); + + text = newcmd; + + if (sess->type == SESS_DIALOG) + { + /* try it via dcc, if possible */ + dcc = dcc_write_chat (sess->channel, text); + if (dcc) + { + inbound_chanmsg (sess->server, NULL, sess->channel, + sess->server->nick, text, TRUE, FALSE); + set_topic (sess, net_ip (dcc->addr), net_ip (dcc->addr)); + goto xit; + } + } + + if (sess->server->connected) + { + unsigned int max; + unsigned char t = 0; + + /* maximum allowed message text */ + /* :nickname!username@host.com PRIVMSG #channel :text\r\n */ + max = 512; + max -= 16; /* :, !, @, " PRIVMSG ", " ", :, \r, \n */ + max -= strlen (sess->server->nick); + max -= strlen (sess->channel); + if (sess->me && sess->me->hostname) + max -= strlen (sess->me->hostname); + else + { + max -= 9; /* username */ + max -= 65; /* max possible hostname and '@' */ + } + + if (strlen (text) > max) + { + int i = 0, size; + + /* traverse the utf8 string and find the nearest cut point that + doesn't split 1 char in half */ + while (1) + { + size = g_utf8_skip[((unsigned char *)text)[i]]; + if ((i + size) >= max) + break; + i += size; + } + max = i; + t = text[max]; + text[max] = 0; /* insert a NULL terminator to shorten it */ + } + + inbound_chanmsg (sess->server, sess, sess->channel, sess->server->nick, + text, TRUE, FALSE); + sess->server->p_message (sess->server, sess->channel, text); + + if (t) + { + text[max] = t; + handle_say (sess, text + max, FALSE); + } + + } else + { + notc_msg (sess); + } + +xit: + if (pdibuf != pdibuf_static) + free (pdibuf); + + if (newcmd != newcmd_static) + free (newcmd); +} + +/* handle a command, without the '/' prefix */ + +int +handle_command (session *sess, char *cmd, int check_spch) +{ + struct popup *pop; + int user_cmd = FALSE; + GSList *list; + char *word[PDIWORDS+1]; + char *word_eol[PDIWORDS+1]; + static int command_level = 0; + struct commands *int_cmd; + char pdibuf_static[1024]; + char tbuf_static[TBUFSIZE]; + char *pdibuf; + char *tbuf; + int len; + int ret = TRUE; + + if (command_level > 99) + { + fe_message (_("Too many recursive usercommands, aborting."), FE_MSG_ERROR); + return TRUE; + } + command_level++; + /* anything below MUST DEC command_level before returning */ + + len = strlen (cmd); + if (len >= sizeof (pdibuf_static)) + pdibuf = malloc (len + 1); + else + pdibuf = pdibuf_static; + + if ((len * 2) >= sizeof (tbuf_static)) + tbuf = malloc ((len * 2) + 1); + else + tbuf = tbuf_static; + + /* split the text into words and word_eol */ + process_data_init (pdibuf, cmd, word, word_eol, TRUE, TRUE); + + /* ensure an empty string at index 32 for cmd_deop etc */ + /* (internal use only, plugins can still only read 1-31). */ + word[PDIWORDS] = "\000\000"; + word_eol[PDIWORDS] = "\000\000"; + + int_cmd = find_internal_command (word[1]); + /* redo it without quotes processing, for some commands like /JOIN */ + if (int_cmd && !int_cmd->handle_quotes) + process_data_init (pdibuf, cmd, word, word_eol, FALSE, FALSE); + + if (check_spch && prefs.perc_color) + check_special_chars (cmd, prefs.perc_ascii); + + if (plugin_emit_command (sess, word[1], word, word_eol)) + goto xit; + + /* incase a plugin did /close */ + if (!is_session (sess)) + goto xit; + + /* first see if it's a userCommand */ + list = command_list; + while (list) + { + pop = (struct popup *) list->data; + if (!strcasecmp (pop->name, word[1])) + { + user_command (sess, tbuf, pop->cmd, word, word_eol); + user_cmd = TRUE; + } + list = list->next; + } + + if (user_cmd) + goto xit; + + /* now check internal commands */ + int_cmd = find_internal_command (word[1]); + + if (int_cmd) + { + if (int_cmd->needserver && !sess->server->connected) + { + notc_msg (sess); + } else if (int_cmd->needchannel && !sess->channel[0]) + { + notj_msg (sess); + } else + { + switch (int_cmd->callback (sess, tbuf, word, word_eol)) + { + case FALSE: + help (sess, tbuf, int_cmd->name, TRUE); + break; + case 2: + ret = FALSE; + goto xit; + } + } + } else + { + /* unknown command, just send it to the server and hope */ + if (!sess->server->connected) + PrintText (sess, _("Unknown Command. Try /help\n")); + else + sess->server->p_raw (sess->server, cmd); + } + +xit: + command_level--; + + if (pdibuf != pdibuf_static) + free (pdibuf); + + if (tbuf != tbuf_static) + free (tbuf); + + return ret; +} + +/* handle one line entered into the input box */ + +static int +handle_user_input (session *sess, char *text, int history, int nocommand) +{ + if (*text == '\0') + return 1; + + if (history) + history_add (&sess->history, text); + + /* is it NOT a command, just text? */ + if (nocommand || text[0] != prefs.cmdchar[0]) + { + handle_say (sess, text, TRUE); + return 1; + } + + /* check for // */ + if (text[0] == prefs.cmdchar[0] && text[1] == prefs.cmdchar[0]) + { + handle_say (sess, text + 1, TRUE); + return 1; + } + + if (prefs.cmdchar[0] == '/') + { + int i; + const char *unix_dirs [] = { + "/bin/", "/boot/", "/dev/", + "/etc/", "/home/", "/lib/", + "/lost+found/", "/mnt/", "/opt/", + "/proc/", "/root/", "/sbin/", + "/tmp/", "/usr/", "/var/", + "/gnome/", NULL}; + for (i = 0; unix_dirs[i] != NULL; i++) + if (strncmp (text, unix_dirs[i], strlen (unix_dirs[i]))==0) + { + handle_say (sess, text, TRUE); + return 1; + } + } + + return handle_command (sess, text + 1, TRUE); +} + +/* changed by Steve Green. Macs sometimes paste with imbedded \r */ +void +handle_multiline (session *sess, char *cmd, int history, int nocommand) +{ + while (*cmd) + { + char *cr = cmd + strcspn (cmd, "\n\r"); + int end_of_string = *cr == 0; + *cr = 0; + if (!handle_user_input (sess, cmd, history, nocommand)) + return; + if (end_of_string) + break; + cmd = cr + 1; + } +} + +/*void +handle_multiline (session *sess, char *cmd, int history, int nocommand) +{ + char *cr; + + cr = strchr (cmd, '\n'); + if (cr) + { + while (1) + { + if (cr) + *cr = 0; + if (!handle_user_input (sess, cmd, history, nocommand)) + return; + if (!cr) + break; + cmd = cr + 1; + if (*cmd == 0) + break; + cr = strchr (cmd, '\n'); + } + } else + { + handle_user_input (sess, cmd, history, nocommand); + } +}*/ diff --git a/xchat-2.8.8/src/common/outbound.h b/xchat-2.8.8/src/common/outbound.h new file mode 100644 index 0000000..a204784 --- /dev/null +++ b/xchat-2.8.8/src/common/outbound.h @@ -0,0 +1,20 @@ +#ifndef XCHAT_OUTBOUND_H +#define XCHAT_OUTBOUND_H + +extern const struct commands xc_cmds[]; +extern GSList *menu_list; + +int auto_insert (char *dest, int destlen, unsigned char *src, char *word[], char *word_eol[], + char *a, char *c, char *d, char *e, char *h, char *n, char *s); +int handle_command (session *sess, char *cmd, int check_spch); +void process_data_init (char *buf, char *cmd, char *word[], char *word_eol[], gboolean handle_quotes, gboolean allow_escape_quotes); +void handle_multiline (session *sess, char *cmd, int history, int nocommand); +void check_special_chars (char *cmd, int do_ascii); +void notc_msg (session *sess); +void server_sendpart (server * serv, char *channel, char *reason); +void server_sendquit (session * sess); +int menu_streq (const char *s1, const char *s2, int def); +void open_query (server *serv, char *nick, gboolean focus_existing); +gboolean load_perform_file (session *sess, char *file); + +#endif diff --git a/xchat-2.8.8/src/common/plugin-timer.c b/xchat-2.8.8/src/common/plugin-timer.c new file mode 100644 index 0000000..f09074a --- /dev/null +++ b/xchat-2.8.8/src/common/plugin-timer.c @@ -0,0 +1,208 @@ +#include <stdlib.h> +#include <string.h> +#include <glib.h> +#include "xchat-plugin.h" + +#ifdef WIN32 +#define strcasecmp stricmp +#endif + +static xchat_plugin *ph; /* plugin handle */ +static GSList *timer_list = NULL; + +#define STATIC +#define HELP \ +"Usage: TIMER [-refnum <num>] [-repeat <num>] <seconds> <command>\n" \ +" TIMER [-quiet] -delete <num>" + +typedef struct +{ + xchat_hook *hook; + xchat_context *context; + char *command; + int ref; + int repeat; + float timeout; + unsigned int forever:1; +} timer; + +static void +timer_del (timer *tim) +{ + timer_list = g_slist_remove (timer_list, tim); + free (tim->command); + xchat_unhook (ph, tim->hook); + free (tim); +} + +static void +timer_del_ref (int ref, int quiet) +{ + GSList *list; + timer *tim; + + list = timer_list; + while (list) + { + tim = list->data; + if (tim->ref == ref) + { + timer_del (tim); + if (!quiet) + xchat_printf (ph, "Timer %d deleted.\n", ref); + return; + } + list = list->next; + } + if (!quiet) + xchat_print (ph, "No such ref number found.\n"); +} + +static int +timeout_cb (timer *tim) +{ + if (xchat_set_context (ph, tim->context)) + { + xchat_command (ph, tim->command); + + if (tim->forever) + return 1; + + tim->repeat--; + if (tim->repeat > 0) + return 1; + } + + timer_del (tim); + return 0; +} + +static void +timer_add (int ref, float timeout, int repeat, char *command) +{ + timer *tim; + GSList *list; + + if (ref == 0) + { + ref = 1; + list = timer_list; + while (list) + { + tim = list->data; + if (tim->ref >= ref) + ref = tim->ref + 1; + list = list->next; + } + } + + tim = malloc (sizeof (timer)); + tim->ref = ref; + tim->repeat = repeat; + tim->timeout = timeout; + tim->command = strdup (command); + tim->context = xchat_get_context (ph); + tim->forever = FALSE; + + if (repeat == 0) + tim->forever = TRUE; + + tim->hook = xchat_hook_timer (ph, timeout * 1000.0, (void *)timeout_cb, tim); + timer_list = g_slist_append (timer_list, tim); +} + +static void +timer_showlist (void) +{ + GSList *list; + timer *tim; + + if (timer_list == NULL) + { + xchat_print (ph, "No timers installed.\n"); + xchat_print (ph, HELP); + return; + } + /* 00000 00000000 0000000 abc */ + xchat_print (ph, "\026 Ref# Seconds Repeat Command \026\n"); + list = timer_list; + while (list) + { + tim = list->data; + xchat_printf (ph, "%5d %8.1f %7d %s\n", tim->ref, tim->timeout, + tim->repeat, tim->command); + list = list->next; + } +} + +static int +timer_cb (char *word[], char *word_eol[], void *userdata) +{ + int repeat = 1; + float timeout; + int offset = 0; + int ref = 0; + int quiet = FALSE; + char *command; + + if (!word[2][0]) + { + timer_showlist (); + return XCHAT_EAT_XCHAT; + } + + if (strcasecmp (word[2], "-quiet") == 0) + { + quiet = TRUE; + offset++; + } + + if (strcasecmp (word[2 + offset], "-delete") == 0) + { + timer_del_ref (atoi (word[3 + offset]), quiet); + return XCHAT_EAT_XCHAT; + } + + if (strcasecmp (word[2 + offset], "-refnum") == 0) + { + ref = atoi (word[3 + offset]); + offset += 2; + } + + if (strcasecmp (word[2 + offset], "-repeat") == 0) + { + repeat = atoi (word[3 + offset]); + offset += 2; + } + + timeout = atof (word[2 + offset]); + command = word_eol[3 + offset]; + + if (timeout < 0.1 || !command[0]) + xchat_print (ph, HELP); + else + timer_add (ref, timeout, repeat, command); + + return XCHAT_EAT_XCHAT; +} + +int +#ifdef STATIC +timer_plugin_init +#else +xchat_plugin_init +#endif + (xchat_plugin *plugin_handle, char **plugin_name, + char **plugin_desc, char **plugin_version, char *arg) +{ + /* we need to save this for use with any xchat_* functions */ + ph = plugin_handle; + + *plugin_name = "Timer"; + *plugin_desc = "IrcII style /TIMER command"; + *plugin_version = ""; + + xchat_hook_command (ph, "TIMER", XCHAT_PRI_NORM, timer_cb, HELP, 0); + + return 1; /* return 1 for success */ +} diff --git a/xchat-2.8.8/src/common/plugin-timer.h b/xchat-2.8.8/src/common/plugin-timer.h new file mode 100644 index 0000000..e3530c8 --- /dev/null +++ b/xchat-2.8.8/src/common/plugin-timer.h @@ -0,0 +1,7 @@ +#ifndef XCHAT_PLUGIN_TIMER_H +#define XCHAT_PLUGIN_TIMER_H + +int timer_plugin_init (xchat_plugin *plugin_handle, char **plugin_name, + char **plugin_desc, char **plugin_version, char *arg); + +#endif diff --git a/xchat-2.8.8/src/common/plugin.c b/xchat-2.8.8/src/common/plugin.c new file mode 100644 index 0000000..a8d3804 --- /dev/null +++ b/xchat-2.8.8/src/common/plugin.c @@ -0,0 +1,1562 @@ +/* X-Chat + * Copyright (C) 2002 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdlib.h> +#include <string.h> +#include <stdarg.h> +#include <stdio.h> + +#include "xchat.h" +#include "fe.h" +#include "util.h" +#include "outbound.h" +#include "cfgfiles.h" +#include "ignore.h" +#include "server.h" +#include "servlist.h" +#include "modes.h" +#include "notify.h" +#include "text.h" +#define PLUGIN_C +typedef struct session xchat_context; +#include "xchat-plugin.h" +#include "plugin.h" + + +#include "xchatc.h" + +/* the USE_PLUGIN define only removes libdl stuff */ + +#ifdef USE_PLUGIN +#ifdef USE_GMODULE +#include <gmodule.h> +#else +#include <dlfcn.h> +#endif +#endif + +#define DEBUG(x) {x;} + +/* crafted to be an even 32 bytes */ +struct _xchat_hook +{ + xchat_plugin *pl; /* the plugin to which it belongs */ + char *name; /* "xdcc" */ + void *callback; /* pointer to xdcc_callback */ + char *help_text; /* help_text for commands only */ + void *userdata; /* passed to the callback */ + int tag; /* for timers & FDs only */ + int type; /* HOOK_* */ + int pri; /* fd */ /* priority / fd for HOOK_FD only */ +}; + +struct _xchat_list +{ + int type; /* LIST_* */ + GSList *pos; /* current pos */ + GSList *next; /* next pos */ + GSList *head; /* for LIST_USERS only */ + struct notify_per_server *notifyps; /* notify_per_server * */ +}; + +typedef int (xchat_cmd_cb) (char *word[], char *word_eol[], void *user_data); +typedef int (xchat_serv_cb) (char *word[], char *word_eol[], void *user_data); +typedef int (xchat_print_cb) (char *word[], void *user_data); +typedef int (xchat_fd_cb) (int fd, int flags, void *user_data); +typedef int (xchat_timer_cb) (void *user_data); +typedef int (xchat_init_func) (xchat_plugin *, char **, char **, char **, char *); +typedef int (xchat_deinit_func) (xchat_plugin *); + +enum +{ + LIST_CHANNELS, + LIST_DCC, + LIST_IGNORE, + LIST_NOTIFY, + LIST_USERS +}; + +enum +{ + HOOK_COMMAND, /* /command */ + HOOK_SERVER, /* PRIVMSG, NOTICE, numerics */ + HOOK_PRINT, /* All print events */ + HOOK_TIMER, /* timeouts */ + HOOK_FD, /* sockets & fds */ + HOOK_DELETED /* marked for deletion */ +}; + +GSList *plugin_list = NULL; /* export for plugingui.c */ +static GSList *hook_list = NULL; + +extern const struct prefs vars[]; /* cfgfiles.c */ + + +/* unload a plugin and remove it from our linked list */ + +static int +plugin_free (xchat_plugin *pl, int do_deinit, int allow_refuse) +{ + GSList *list, *next; + xchat_hook *hook; + xchat_deinit_func *deinit_func; + + /* fake plugin added by xchat_plugingui_add() */ + if (pl->fake) + goto xit; + + /* run the plugin's deinit routine, if any */ + if (do_deinit && pl->deinit_callback != NULL) + { + deinit_func = pl->deinit_callback; + if (!deinit_func (pl) && allow_refuse) + return FALSE; + } + + /* remove all of this plugin's hooks */ + list = hook_list; + while (list) + { + hook = list->data; + next = list->next; + if (hook->pl == pl) + xchat_unhook (NULL, hook); + list = next; + } + +#ifdef USE_PLUGIN + if (pl->handle) +#ifdef USE_GMODULE + g_module_close (pl->handle); +#else + dlclose (pl->handle); +#endif +#endif + +xit: + if (pl->free_strings) + { + if (pl->name) + free (pl->name); + if (pl->desc) + free (pl->desc); + if (pl->version) + free (pl->version); + } + if (pl->filename) + free ((char *)pl->filename); + free (pl); + + plugin_list = g_slist_remove (plugin_list, pl); + +#ifdef USE_PLUGIN + fe_pluginlist_update (); +#endif + + return TRUE; +} + +static xchat_plugin * +plugin_list_add (xchat_context *ctx, char *filename, const char *name, + const char *desc, const char *version, void *handle, + void *deinit_func, int fake, int free_strings) +{ + xchat_plugin *pl; + + pl = malloc (sizeof (xchat_plugin)); + pl->handle = handle; + pl->filename = filename; + pl->context = ctx; + pl->name = (char *)name; + pl->desc = (char *)desc; + pl->version = (char *)version; + pl->deinit_callback = deinit_func; + pl->fake = fake; + pl->free_strings = free_strings; /* free() name,desc,version? */ + + plugin_list = g_slist_prepend (plugin_list, pl); + + return pl; +} + +static void * +xchat_dummy (xchat_plugin *ph) +{ + return NULL; +} + +#ifdef WIN32 +static int +xchat_read_fd (xchat_plugin *ph, GIOChannel *source, char *buf, int *len) +{ + return g_io_channel_read (source, buf, *len, len); +} +#endif + +/* Load a static plugin */ + +void +plugin_add (session *sess, char *filename, void *handle, void *init_func, + void *deinit_func, char *arg, int fake) +{ + xchat_plugin *pl; + char *file; + + file = NULL; + if (filename) + file = strdup (filename); + + pl = plugin_list_add (sess, file, file, NULL, NULL, handle, deinit_func, + fake, FALSE); + + if (!fake) + { + /* win32 uses these because it doesn't have --export-dynamic! */ + pl->xchat_hook_command = xchat_hook_command; + pl->xchat_hook_server = xchat_hook_server; + pl->xchat_hook_print = xchat_hook_print; + pl->xchat_hook_timer = xchat_hook_timer; + pl->xchat_hook_fd = xchat_hook_fd; + pl->xchat_unhook = xchat_unhook; + pl->xchat_print = xchat_print; + pl->xchat_printf = xchat_printf; + pl->xchat_command = xchat_command; + pl->xchat_commandf = xchat_commandf; + pl->xchat_nickcmp = xchat_nickcmp; + pl->xchat_set_context = xchat_set_context; + pl->xchat_find_context = xchat_find_context; + pl->xchat_get_context = xchat_get_context; + pl->xchat_get_info = xchat_get_info; + pl->xchat_get_prefs = xchat_get_prefs; + pl->xchat_list_get = xchat_list_get; + pl->xchat_list_free = xchat_list_free; + pl->xchat_list_fields = xchat_list_fields; + pl->xchat_list_str = xchat_list_str; + pl->xchat_list_next = xchat_list_next; + pl->xchat_list_int = xchat_list_int; + pl->xchat_plugingui_add = xchat_plugingui_add; + pl->xchat_plugingui_remove = xchat_plugingui_remove; + pl->xchat_emit_print = xchat_emit_print; +#ifdef WIN32 + pl->xchat_read_fd = (void *) xchat_read_fd; +#else + pl->xchat_read_fd = xchat_dummy; +#endif + pl->xchat_list_time = xchat_list_time; + pl->xchat_gettext = xchat_gettext; + pl->xchat_send_modes = xchat_send_modes; + pl->xchat_strip = xchat_strip; + pl->xchat_free = xchat_free; + + /* incase new plugins are loaded on older xchat */ + pl->xchat_dummy4 = xchat_dummy; + pl->xchat_dummy3 = xchat_dummy; + pl->xchat_dummy2 = xchat_dummy; + pl->xchat_dummy1 = xchat_dummy; + + /* run xchat_plugin_init, if it returns 0, close the plugin */ + if (((xchat_init_func *)init_func) (pl, &pl->name, &pl->desc, &pl->version, arg) == 0) + { + plugin_free (pl, FALSE, FALSE); + return; + } + } + +#ifdef USE_PLUGIN + fe_pluginlist_update (); +#endif +} + +/* kill any plugin by the given (file) name (used by /unload) */ + +int +plugin_kill (char *name, int by_filename) +{ + GSList *list; + xchat_plugin *pl; + + list = plugin_list; + while (list) + { + pl = list->data; + /* static-plugins (plugin-timer.c) have a NULL filename */ + if ((by_filename && pl->filename && strcasecmp (name, pl->filename) == 0) || + (by_filename && pl->filename && strcasecmp (name, file_part (pl->filename)) == 0) || + (!by_filename && strcasecmp (name, pl->name) == 0)) + { + /* statically linked plugins have a NULL filename */ + if (pl->filename != NULL && !pl->fake) + { + if (plugin_free (pl, TRUE, TRUE)) + return 1; + return 2; + } + } + list = list->next; + } + + return 0; +} + +/* kill all running plugins (at shutdown) */ + +void +plugin_kill_all (void) +{ + GSList *list, *next; + xchat_plugin *pl; + + list = plugin_list; + while (list) + { + pl = list->data; + next = list->next; + if (!pl->fake) + plugin_free (list->data, TRUE, FALSE); + list = next; + } +} + +#ifdef USE_PLUGIN + +/* load a plugin from a filename. Returns: NULL-success or an error string */ + +char * +plugin_load (session *sess, char *filename, char *arg) +{ + void *handle; + xchat_init_func *init_func; + xchat_deinit_func *deinit_func; + +#ifdef USE_GMODULE + /* load the plugin */ + handle = g_module_open (filename, 0); + if (handle == NULL) + return (char *)g_module_error (); + + /* find the init routine xchat_plugin_init */ + if (!g_module_symbol (handle, "xchat_plugin_init", (gpointer *)&init_func)) + { + g_module_close (handle); + return _("No xchat_plugin_init symbol; is this really an xchat plugin?"); + } + + /* find the plugin's deinit routine, if any */ + if (!g_module_symbol (handle, "xchat_plugin_deinit", (gpointer *)&deinit_func)) + deinit_func = NULL; + +#else + char *error; + char *filepart; + +/* OpenBSD lacks this! */ +#ifndef RTLD_GLOBAL +#define RTLD_GLOBAL 0 +#endif + +#ifndef RTLD_NOW +#define RTLD_NOW 0 +#endif + + /* get the filename without path */ + filepart = file_part (filename); + + /* load the plugin */ + if (filepart && + /* xsys draws in libgtk-1.2, causing crashes, so force RTLD_LOCAL */ + (strstr (filepart, "local") || strncmp (filepart, "libxsys-1", 9) == 0) + ) + handle = dlopen (filename, RTLD_NOW); + else + handle = dlopen (filename, RTLD_GLOBAL | RTLD_NOW); + if (handle == NULL) + return (char *)dlerror (); + dlerror (); /* Clear any existing error */ + + /* find the init routine xchat_plugin_init */ + init_func = dlsym (handle, "xchat_plugin_init"); + error = (char *)dlerror (); + if (error != NULL) + { + dlclose (handle); + return _("No xchat_plugin_init symbol; is this really an xchat plugin?"); + } + + /* find the plugin's deinit routine, if any */ + deinit_func = dlsym (handle, "xchat_plugin_deinit"); + error = (char *)dlerror (); +#endif + + /* add it to our linked list */ + plugin_add (sess, filename, handle, init_func, deinit_func, arg, FALSE); + + return NULL; +} + +static session *ps; + +static void +plugin_auto_load_cb (char *filename) +{ + char *pMsg; + +#ifndef WIN32 /* black listed */ + if (!strcmp (file_part (filename), "dbus.so")) + return; +#endif + + pMsg = plugin_load (ps, filename, NULL); + if (pMsg) + { + PrintTextf (ps, "AutoLoad failed for: %s\n", filename); + PrintText (ps, pMsg); + } +} + +void +plugin_auto_load (session *sess) +{ + ps = sess; +#ifdef WIN32 + for_files ("./plugins", "*.dll", plugin_auto_load_cb); + for_files (get_xdir_fs (), "*.dll", plugin_auto_load_cb); +#else +#if defined(__hpux) + for_files (XCHATLIBDIR"/plugins", "*.sl", plugin_auto_load_cb); + for_files (get_xdir_fs (), "*.sl", plugin_auto_load_cb); +#else + for_files (XCHATLIBDIR"/plugins", "*.so", plugin_auto_load_cb); + for_files (get_xdir_fs (), "*.so", plugin_auto_load_cb); +#endif +#endif +} + +#endif + +static GSList * +plugin_hook_find (GSList *list, int type, char *name) +{ + xchat_hook *hook; + + while (list) + { + hook = list->data; + if (hook->type == type) + { + if (strcasecmp (hook->name, name) == 0) + return list; + + if (type == HOOK_SERVER) + { + if (strcasecmp (hook->name, "RAW LINE") == 0) + return list; + } + } + list = list->next; + } + + return NULL; +} + +/* check for plugin hooks and run them */ + +static int +plugin_hook_run (session *sess, char *name, char *word[], char *word_eol[], int type) +{ + GSList *list, *next; + xchat_hook *hook; + int ret, eat = 0; + + list = hook_list; + while (1) + { + list = plugin_hook_find (list, type, name); + if (!list) + goto xit; + + hook = list->data; + next = list->next; + hook->pl->context = sess; + + /* run the plugin's callback function */ + switch (type) + { + case HOOK_COMMAND: + ret = ((xchat_cmd_cb *)hook->callback) (word, word_eol, hook->userdata); + break; + case HOOK_SERVER: + ret = ((xchat_serv_cb *)hook->callback) (word, word_eol, hook->userdata); + break; + default: /*case HOOK_PRINT:*/ + ret = ((xchat_print_cb *)hook->callback) (word, hook->userdata); + break; + } + + if ((ret & XCHAT_EAT_XCHAT) && (ret & XCHAT_EAT_PLUGIN)) + { + eat = 1; + goto xit; + } + if (ret & XCHAT_EAT_PLUGIN) + goto xit; /* stop running plugins */ + if (ret & XCHAT_EAT_XCHAT) + eat = 1; /* eventually we'll return 1, but continue running plugins */ + + list = next; + } + +xit: + /* really remove deleted hooks now */ + list = hook_list; + while (list) + { + hook = list->data; + next = list->next; + if (hook->type == HOOK_DELETED) + { + hook_list = g_slist_remove (hook_list, hook); + free (hook); + } + list = next; + } + + return eat; +} + +/* execute a plugged in command. Called from outbound.c */ + +int +plugin_emit_command (session *sess, char *name, char *word[], char *word_eol[]) +{ + return plugin_hook_run (sess, name, word, word_eol, HOOK_COMMAND); +} + +/* got a server PRIVMSG, NOTICE, numeric etc... */ + +int +plugin_emit_server (session *sess, char *name, char *word[], char *word_eol[]) +{ + return plugin_hook_run (sess, name, word, word_eol, HOOK_SERVER); +} + +/* see if any plugins are interested in this print event */ + +int +plugin_emit_print (session *sess, char *word[]) +{ + return plugin_hook_run (sess, word[0], word, NULL, HOOK_PRINT); +} + +int +plugin_emit_dummy_print (session *sess, char *name) +{ + char *word[32]; + int i; + + word[0] = name; + for (i = 1; i < 32; i++) + word[i] = "\000"; + + return plugin_hook_run (sess, name, word, NULL, HOOK_PRINT); +} + +int +plugin_emit_keypress (session *sess, unsigned int state, unsigned int keyval, + int len, char *string) +{ + char *word[PDIWORDS]; + char keyval_str[16]; + char state_str[16]; + char len_str[16]; + int i; + + if (!hook_list) + return 0; + + sprintf (keyval_str, "%u", keyval); + sprintf (state_str, "%u", state); + sprintf (len_str, "%d", len); + + word[0] = "Key Press"; + word[1] = keyval_str; + word[2] = state_str; + word[3] = string; + word[4] = len_str; + for (i = 5; i < PDIWORDS; i++) + word[i] = "\000"; + + return plugin_hook_run (sess, word[0], word, NULL, HOOK_PRINT); +} + +static int +plugin_timeout_cb (xchat_hook *hook) +{ + int ret; + + /* timer_cb's context starts as front-most-tab */ + hook->pl->context = current_sess; + + /* call the plugin's timeout function */ + ret = ((xchat_timer_cb *)hook->callback) (hook->userdata); + + /* the callback might have already unhooked it! */ + if (!g_slist_find (hook_list, hook) || hook->type == HOOK_DELETED) + return 0; + + if (ret == 0) + { + hook->tag = 0; /* avoid fe_timeout_remove, returning 0 is enough! */ + xchat_unhook (hook->pl, hook); + } + + return ret; +} + +/* insert a hook into hook_list according to its priority */ + +static void +plugin_insert_hook (xchat_hook *new_hook) +{ + GSList *list; + xchat_hook *hook; + + list = hook_list; + while (list) + { + hook = list->data; + if (hook->type == new_hook->type && hook->pri <= new_hook->pri) + { + hook_list = g_slist_insert_before (hook_list, list, new_hook); + return; + } + list = list->next; + } + + hook_list = g_slist_append (hook_list, new_hook); +} + +static gboolean +plugin_fd_cb (GIOChannel *source, GIOCondition condition, xchat_hook *hook) +{ + int flags = 0, ret; + typedef int (xchat_fd_cb2) (int fd, int flags, void *user_data, GIOChannel *); + + if (condition & G_IO_IN) + flags |= XCHAT_FD_READ; + if (condition & G_IO_OUT) + flags |= XCHAT_FD_WRITE; + if (condition & G_IO_PRI) + flags |= XCHAT_FD_EXCEPTION; + + ret = ((xchat_fd_cb2 *)hook->callback) (hook->pri, flags, hook->userdata, source); + + /* the callback might have already unhooked it! */ + if (!g_slist_find (hook_list, hook) || hook->type == HOOK_DELETED) + return 0; + + if (ret == 0) + { + hook->tag = 0; /* avoid fe_input_remove, returning 0 is enough! */ + xchat_unhook (hook->pl, hook); + } + + return ret; +} + +/* allocate and add a hook to our list. Used for all 4 types */ + +static xchat_hook * +plugin_add_hook (xchat_plugin *pl, int type, int pri, const char *name, + const char *help_text, void *callb, int timeout, void *userdata) +{ + xchat_hook *hook; + + hook = malloc (sizeof (xchat_hook)); + memset (hook, 0, sizeof (xchat_hook)); + + hook->type = type; + hook->pri = pri; + if (name) + hook->name = strdup (name); + if (help_text) + hook->help_text = strdup (help_text); + hook->callback = callb; + hook->pl = pl; + hook->userdata = userdata; + + /* insert it into the linked list */ + plugin_insert_hook (hook); + + if (type == HOOK_TIMER) + hook->tag = fe_timeout_add (timeout, plugin_timeout_cb, hook); + + return hook; +} + +GList * +plugin_command_list(GList *tmp_list) +{ + xchat_hook *hook; + GSList *list = hook_list; + + while (list) + { + hook = list->data; + if (hook->type == HOOK_COMMAND) + tmp_list = g_list_prepend(tmp_list, hook->name); + list = list->next; + } + return tmp_list; +} + +void +plugin_command_foreach (session *sess, void *userdata, + void (*cb) (session *sess, void *userdata, char *name, char *help)) +{ + GSList *list; + xchat_hook *hook; + + list = hook_list; + while (list) + { + hook = list->data; + if (hook->type == HOOK_COMMAND && hook->name[0]) + { + cb (sess, userdata, hook->name, hook->help_text); + } + list = list->next; + } +} + +int +plugin_show_help (session *sess, char *cmd) +{ + GSList *list; + xchat_hook *hook; + + list = plugin_hook_find (hook_list, HOOK_COMMAND, cmd); + if (list) + { + hook = list->data; + if (hook->help_text) + { + PrintText (sess, hook->help_text); + return 1; + } + } + + return 0; +} + +/* ========================================================= */ +/* ===== these are the functions plugins actually call ===== */ +/* ========================================================= */ + +void * +xchat_unhook (xchat_plugin *ph, xchat_hook *hook) +{ + /* perl.c trips this */ + if (!g_slist_find (hook_list, hook) || hook->type == HOOK_DELETED) + return NULL; + + if (hook->type == HOOK_TIMER && hook->tag != 0) + fe_timeout_remove (hook->tag); + + if (hook->type == HOOK_FD && hook->tag != 0) + fe_input_remove (hook->tag); + + hook->type = HOOK_DELETED; /* expunge later */ + + if (hook->name) + free (hook->name); /* NULL for timers & fds */ + if (hook->help_text) + free (hook->help_text); /* NULL for non-commands */ + + return hook->userdata; +} + +xchat_hook * +xchat_hook_command (xchat_plugin *ph, const char *name, int pri, + xchat_cmd_cb *callb, const char *help_text, void *userdata) +{ + return plugin_add_hook (ph, HOOK_COMMAND, pri, name, help_text, callb, 0, + userdata); +} + +xchat_hook * +xchat_hook_server (xchat_plugin *ph, const char *name, int pri, + xchat_serv_cb *callb, void *userdata) +{ + return plugin_add_hook (ph, HOOK_SERVER, pri, name, 0, callb, 0, userdata); +} + +xchat_hook * +xchat_hook_print (xchat_plugin *ph, const char *name, int pri, + xchat_print_cb *callb, void *userdata) +{ + return plugin_add_hook (ph, HOOK_PRINT, pri, name, 0, callb, 0, userdata); +} + +xchat_hook * +xchat_hook_timer (xchat_plugin *ph, int timeout, xchat_timer_cb *callb, + void *userdata) +{ + return plugin_add_hook (ph, HOOK_TIMER, 0, 0, 0, callb, timeout, userdata); +} + +xchat_hook * +xchat_hook_fd (xchat_plugin *ph, int fd, int flags, + xchat_fd_cb *callb, void *userdata) +{ + xchat_hook *hook; + + hook = plugin_add_hook (ph, HOOK_FD, 0, 0, 0, callb, 0, userdata); + hook->pri = fd; + /* plugin hook_fd flags correspond exactly to FIA_* flags (fe.h) */ + hook->tag = fe_input_add (fd, flags, plugin_fd_cb, hook); + + return hook; +} + +void +xchat_print (xchat_plugin *ph, const char *text) +{ + if (!is_session (ph->context)) + { + DEBUG(PrintTextf(0, "%s\txchat_print called without a valid context.\n", ph->name)); + return; + } + + PrintText (ph->context, (char *)text); +} + +void +xchat_printf (xchat_plugin *ph, const char *format, ...) +{ + va_list args; + char *buf; + + va_start (args, format); + buf = g_strdup_vprintf (format, args); + va_end (args); + + xchat_print (ph, buf); + g_free (buf); +} + +void +xchat_command (xchat_plugin *ph, const char *command) +{ + char *conv; + int len = -1; + + if (!is_session (ph->context)) + { + DEBUG(PrintTextf(0, "%s\txchat_command called without a valid context.\n", ph->name)); + return; + } + + /* scripts/plugins continue to send non-UTF8... *sigh* */ + conv = text_validate ((char **)&command, &len); + handle_command (ph->context, (char *)command, FALSE); + g_free (conv); +} + +void +xchat_commandf (xchat_plugin *ph, const char *format, ...) +{ + va_list args; + char *buf; + + va_start (args, format); + buf = g_strdup_vprintf (format, args); + va_end (args); + + xchat_command (ph, buf); + g_free (buf); +} + +int +xchat_nickcmp (xchat_plugin *ph, const char *s1, const char *s2) +{ + return ((session *)ph->context)->server->p_cmp (s1, s2); +} + +xchat_context * +xchat_get_context (xchat_plugin *ph) +{ + return ph->context; +} + +int +xchat_set_context (xchat_plugin *ph, xchat_context *context) +{ + if (is_session (context)) + { + ph->context = context; + return 1; + } + return 0; +} + +xchat_context * +xchat_find_context (xchat_plugin *ph, const char *servname, const char *channel) +{ + GSList *slist, *clist, *sessions = NULL; + server *serv; + session *sess; + char *netname; + + if (servname == NULL && channel == NULL) + return current_sess; + + slist = serv_list; + while (slist) + { + serv = slist->data; + netname = server_get_network (serv, TRUE); + + if (servname == NULL || + rfc_casecmp (servname, serv->servername) == 0 || + strcasecmp (servname, serv->hostname) == 0 || + strcasecmp (servname, netname) == 0) + { + if (channel == NULL) + return serv->front_session; + + clist = sess_list; + while (clist) + { + sess = clist->data; + if (sess->server == serv) + { + if (rfc_casecmp (channel, sess->channel) == 0) + { + if (sess->server == ph->context->server) + { + g_slist_free (sessions); + return sess; + } else + { + sessions = g_slist_prepend (sessions, sess); + } + } + } + clist = clist->next; + } + } + slist = slist->next; + } + + if (sessions) + { + sessions = g_slist_reverse (sessions); + sess = sessions->data; + g_slist_free (sessions); + return sess; + } + + return NULL; +} + +const char * +xchat_get_info (xchat_plugin *ph, const char *id) +{ + session *sess; + guint32 hash; + + /* 1234567890 */ + if (!strncmp (id, "event_text", 10)) + { + char *e = (char *)id + 10; + if (*e == ' ') e++; /* 2.8.0 only worked without a space */ + return text_find_format_string (e); + } + + hash = str_hash (id); + /* do the session independant ones first */ + switch (hash) + { + case 0x325acab5: /* libdirfs */ + return XCHATLIBDIR; + + case 0x14f51cd8: /* version */ + return PACKAGE_VERSION; + + case 0xdd9b1abd: /* xchatdir */ + return get_xdir_utf8 (); + + case 0xe33f6c4a: /* xchatdirfs */ + return get_xdir_fs (); + } + + sess = ph->context; + if (!is_session (sess)) + { + DEBUG(PrintTextf(0, "%s\txchat_get_info called without a valid context.\n", ph->name)); + return NULL; + } + + switch (hash) + { + case 0x2de2ee: /* away */ + if (sess->server->is_away) + return sess->server->last_away_reason; + return NULL; + + case 0x2c0b7d03: /* channel */ + return sess->channel; + + case 0x2c0d614c: /* charset */ + { + const char *locale; + + if (sess->server->encoding) + return sess->server->encoding; + + locale = NULL; + g_get_charset (&locale); + return locale; + } + + case 0x30f5a8: /* host */ + return sess->server->hostname; + + case 0x1c0e99c1: /* inputbox */ + return fe_get_inputbox_contents (sess); + + case 0x633fb30: /* modes */ + return sess->current_modes; + + case 0x6de15a2e: /* network */ + return server_get_network (sess->server, FALSE); + + case 0x339763: /* nick */ + return sess->server->nick; + + case 0x438fdf9: /* nickserv */ + if (sess->server->network) + return ((ircnet *)sess->server->network)->nickserv; + return NULL; + + case 0xca022f43: /* server */ + if (!sess->server->connected) + return NULL; + return sess->server->servername; + + case 0x696cd2f: /* topic */ + return sess->topic; + + case 0x506d600b: /* native win_ptr */ + return fe_gui_info_ptr (sess, 0); + + case 0x6d3431b5: /* win_status */ + switch (fe_gui_info (sess, 0)) /* check window status */ + { + case 0: return "normal"; + case 1: return "active"; + case 2: return "hidden"; + } + return NULL; + } + + return NULL; +} + +int +xchat_get_prefs (xchat_plugin *ph, const char *name, const char **string, int *integer) +{ + int i = 0; + + /* some special run-time info (not really prefs, but may aswell throw it in here) */ + switch (str_hash (name)) + { + case 0xf82136c4: /* state_cursor */ + *integer = fe_get_inputbox_cursor (ph->context); + return 2; + + case 0xd1b: /* id */ + *integer = ph->context->server->id; + return 2; + } + + do + { + if (!strcasecmp (name, vars[i].name)) + { + switch (vars[i].type) + { + case TYPE_STR: + *string = ((char *) &prefs + vars[i].offset); + return 1; + + case TYPE_INT: + *integer = *((int *) &prefs + vars[i].offset); + return 2; + + default: + /*case TYPE_BOOL:*/ + if (*((int *) &prefs + vars[i].offset)) + *integer = 1; + else + *integer = 0; + return 3; + } + } + i++; + } + while (vars[i].name); + + return 0; +} + +xchat_list * +xchat_list_get (xchat_plugin *ph, const char *name) +{ + xchat_list *list; + + list = malloc (sizeof (xchat_list)); + list->pos = NULL; + + switch (str_hash (name)) + { + case 0x556423d0: /* channels */ + list->type = LIST_CHANNELS; + list->next = sess_list; + break; + + case 0x183c4: /* dcc */ + list->type = LIST_DCC; + list->next = dcc_list; + break; + + case 0xb90bfdd2: /* ignore */ + list->type = LIST_IGNORE; + list->next = ignore_list; + break; + + case 0xc2079749: /* notify */ + list->type = LIST_NOTIFY; + list->next = notify_list; + list->head = (void *)ph->context; /* reuse this pointer */ + break; + + case 0x6a68e08: /* users */ + if (is_session (ph->context)) + { + list->type = LIST_USERS; + list->head = list->next = userlist_flat_list (ph->context); + fe_userlist_set_selected (ph->context); + break; + } /* fall through */ + + default: + free (list); + return NULL; + } + + return list; +} + +void +xchat_list_free (xchat_plugin *ph, xchat_list *xlist) +{ + if (xlist->type == LIST_USERS) + g_slist_free (xlist->head); + free (xlist); +} + +int +xchat_list_next (xchat_plugin *ph, xchat_list *xlist) +{ + if (xlist->next == NULL) + return 0; + + xlist->pos = xlist->next; + xlist->next = xlist->pos->next; + + /* NOTIFY LIST: Find the entry which matches the context + of the plugin when list_get was originally called. */ + if (xlist->type == LIST_NOTIFY) + { + xlist->notifyps = notify_find_server_entry (xlist->pos->data, + ((session *)xlist->head)->server); + if (!xlist->notifyps) + return 0; + } + + return 1; +} + +const char * const * +xchat_list_fields (xchat_plugin *ph, const char *name) +{ + static const char * const dcc_fields[] = + { + "iaddress32","icps", "sdestfile","sfile", "snick", "iport", + "ipos", "iresume", "isize", "isizehigh", "istatus", "itype", NULL + }; + static const char * const channels_fields[] = + { + "schannel", "schantypes", "pcontext", "iflags", "iid", "ilag", "imaxmodes", + "snetwork", "snickmodes", "snickprefixes", "iqueue", "sserver", "itype", "iusers", + NULL + }; + static const char * const ignore_fields[] = + { + "iflags", "smask", NULL + }; + static const char * const notify_fields[] = + { + "iflags", "snetworks", "snick", "toff", "ton", "tseen", NULL + }; + static const char * const users_fields[] = + { + "iaway", "shost", "tlasttalk", "snick", "sprefix", "srealname", "iselected", NULL + }; + static const char * const list_of_lists[] = + { + "channels", "dcc", "ignore", "notify", "users", NULL + }; + + switch (str_hash (name)) + { + case 0x556423d0: /* channels */ + return channels_fields; + case 0x183c4: /* dcc */ + return dcc_fields; + case 0xb90bfdd2: /* ignore */ + return ignore_fields; + case 0xc2079749: /* notify */ + return notify_fields; + case 0x6a68e08: /* users */ + return users_fields; + case 0x6236395: /* lists */ + return list_of_lists; + } + + return NULL; +} + +time_t +xchat_list_time (xchat_plugin *ph, xchat_list *xlist, const char *name) +{ + guint32 hash = str_hash (name); + gpointer data; + + switch (xlist->type) + { + case LIST_NOTIFY: + if (!xlist->notifyps) + return (time_t) -1; + switch (hash) + { + case 0x1ad6f: /* off */ + return xlist->notifyps->lastoff; + case 0xddf: /* on */ + return xlist->notifyps->laston; + case 0x35ce7b: /* seen */ + return xlist->notifyps->lastseen; + } + break; + + case LIST_USERS: + data = xlist->pos->data; + switch (hash) + { + case 0xa9118c42: /* lasttalk */ + return ((struct User *)data)->lasttalk; + } + } + + return (time_t) -1; +} + +const char * +xchat_list_str (xchat_plugin *ph, xchat_list *xlist, const char *name) +{ + guint32 hash = str_hash (name); + gpointer data = ph->context; + int type = LIST_CHANNELS; + + /* a NULL xlist is a shortcut to current "channels" context */ + if (xlist) + { + data = xlist->pos->data; + type = xlist->type; + } + + switch (type) + { + case LIST_CHANNELS: + switch (hash) + { + case 0x2c0b7d03: /* channel */ + return ((session *)data)->channel; + case 0x577e0867: /* chantypes */ + return ((session *)data)->server->chantypes; + case 0x38b735af: /* context */ + return data; /* this is a session * */ + case 0x6de15a2e: /* network */ + return server_get_network (((session *)data)->server, FALSE); + case 0x8455e723: /* nickprefixes */ + return ((session *)data)->server->nick_prefixes; + case 0x829689ad: /* nickmodes */ + return ((session *)data)->server->nick_modes; + case 0xca022f43: /* server */ + return ((session *)data)->server->servername; + } + break; + + case LIST_DCC: + switch (hash) + { + case 0x3d9ad31e: /* destfile */ + return ((struct DCC *)data)->destfile; + case 0x2ff57c: /* file */ + return ((struct DCC *)data)->file; + case 0x339763: /* nick */ + return ((struct DCC *)data)->nick; + } + break; + + case LIST_IGNORE: + switch (hash) + { + case 0x3306ec: /* mask */ + return ((struct ignore *)data)->mask; + } + break; + + case LIST_NOTIFY: + switch (hash) + { + case 0x4e49ec05: /* networks */ + return ((struct notify *)data)->networks; + case 0x339763: /* nick */ + return ((struct notify *)data)->name; + } + break; + + case LIST_USERS: + switch (hash) + { + case 0x339763: /* nick */ + return ((struct User *)data)->nick; + case 0x30f5a8: /* host */ + return ((struct User *)data)->hostname; + case 0xc594b292: /* prefix */ + return ((struct User *)data)->prefix; + case 0xccc6d529: /* realname */ + return ((struct User *)data)->realname; + } + break; + } + + return NULL; +} + +int +xchat_list_int (xchat_plugin *ph, xchat_list *xlist, const char *name) +{ + guint32 hash = str_hash (name); + gpointer data = ph->context; + int tmp, type = LIST_CHANNELS; + + /* a NULL xlist is a shortcut to current "channels" context */ + if (xlist) + { + data = xlist->pos->data; + type = xlist->type; + } + + switch (type) + { + case LIST_DCC: + switch (hash) + { + case 0x34207553: /* address32 */ + return ((struct DCC *)data)->addr; + case 0x181a6: /* cps */ + return ((struct DCC *)data)->cps; + case 0x349881: /* port */ + return ((struct DCC *)data)->port; + case 0x1b254: /* pos */ + return ((struct DCC *)data)->pos; + case 0xc84dc82d: /* resume */ + return ((struct DCC *)data)->resumable; + case 0x35e001: /* size */ + return ((struct DCC *)data)->size & 0xffffffff; + case 0x3284d523: /* sizehigh */ + return (((struct DCC *)data)->size >> 32) & 0xffffffff; + case 0xcacdcff2: /* status */ + return ((struct DCC *)data)->dccstat; + case 0x368f3a: /* type */ + return ((struct DCC *)data)->type; + } + break; + + case LIST_IGNORE: + switch (hash) + { + case 0x5cfee87: /* flags */ + return ((struct ignore *)data)->type; + } + break; + + case LIST_CHANNELS: + switch (hash) + { + case 0xd1b: /* id */ + return ((struct session *)data)->server->id; + case 0x5cfee87: /* flags */ + tmp = ((struct session *)data)->alert_taskbar; /* bit 10 */ + tmp <<= 1; + tmp |= ((struct session *)data)->alert_tray; /* 9 */ + tmp <<= 1; + tmp |= ((struct session *)data)->alert_beep; /* 8 */ + tmp <<= 1; + /*tmp |= ((struct session *)data)->color_paste;*/ /* 7 */ + tmp <<= 1; + tmp |= ((struct session *)data)->text_hidejoinpart; /* 6 */ + tmp <<= 1; + tmp |= ((struct session *)data)->server->have_idmsg; /* 5 */ + tmp <<= 1; + tmp |= ((struct session *)data)->server->have_whox; /* 4 */ + tmp <<= 1; + tmp |= ((struct session *)data)->server->end_of_motd;/* 3 */ + tmp <<= 1; + tmp |= ((struct session *)data)->server->is_away; /* 2 */ + tmp <<= 1; + tmp |= ((struct session *)data)->server->connecting; /* 1 */ + tmp <<= 1; + tmp |= ((struct session *)data)->server->connected; /* 0 */ + return tmp; + case 0x1a192: /* lag */ + return ((struct session *)data)->server->lag; + case 0x1916144c: /* maxmodes */ + return ((struct session *)data)->server->modes_per_line; + case 0x66f1911: /* queue */ + return ((struct session *)data)->server->sendq_len; + case 0x368f3a: /* type */ + return ((struct session *)data)->type; + case 0x6a68e08: /* users */ + return ((struct session *)data)->total; + } + break; + + case LIST_NOTIFY: + if (!xlist->notifyps) + return -1; + switch (hash) + { + case 0x5cfee87: /* flags */ + return xlist->notifyps->ison; + } + + case LIST_USERS: + switch (hash) + { + case 0x2de2ee: /* away */ + return ((struct User *)data)->away; + case 0x4705f29b: /* selected */ + return ((struct User *)data)->selected; + } + break; + + } + + return -1; +} + +void * +xchat_plugingui_add (xchat_plugin *ph, const char *filename, + const char *name, const char *desc, + const char *version, char *reserved) +{ +#ifdef USE_PLUGIN + ph = plugin_list_add (NULL, strdup (filename), strdup (name), strdup (desc), + strdup (version), NULL, NULL, TRUE, TRUE); + fe_pluginlist_update (); +#endif + + return ph; +} + +void +xchat_plugingui_remove (xchat_plugin *ph, void *handle) +{ +#ifdef USE_PLUGIN + plugin_free (handle, FALSE, FALSE); +#endif +} + +int +xchat_emit_print (xchat_plugin *ph, const char *event_name, ...) +{ + va_list args; + /* currently only 4 because no events use more than 4. + This can be easily expanded without breaking the API. */ + char *argv[4] = {NULL, NULL, NULL, NULL}; + int i = 0; + + va_start (args, event_name); + while (1) + { + argv[i] = va_arg (args, char *); + if (!argv[i]) + break; + i++; + if (i >= 4) + break; + } + + i = text_emit_by_name ((char *)event_name, ph->context, argv[0], argv[1], + argv[2], argv[3]); + va_end (args); + + return i; +} + +char * +xchat_gettext (xchat_plugin *ph, const char *msgid) +{ + /* so that plugins can use xchat's internal gettext strings. */ + /* e.g. The EXEC plugin uses this on Windows. */ + return _(msgid); +} + +void +xchat_send_modes (xchat_plugin *ph, const char **targets, int ntargets, int modes_per_line, char sign, char mode) +{ + char tbuf[514]; /* modes.c needs 512 + null */ + + send_channel_modes (ph->context, tbuf, (char **)targets, 0, ntargets, sign, mode, modes_per_line); +} + +char * +xchat_strip (xchat_plugin *ph, const char *str, int len, int flags) +{ + return strip_color ((char *)str, len, flags); +} + +void +xchat_free (xchat_plugin *ph, void *ptr) +{ + g_free (ptr); +} diff --git a/xchat-2.8.8/src/common/plugin.h b/xchat-2.8.8/src/common/plugin.h new file mode 100644 index 0000000..b0c89d1 --- /dev/null +++ b/xchat-2.8.8/src/common/plugin.h @@ -0,0 +1,132 @@ +#ifndef XCHAT_COMMONPLUGIN_H +#define XCHAT_COMMONPLUGIN_H + +#ifdef PLUGIN_C +struct _xchat_plugin +{ + /* Keep these insync with xchat-plugin.h */ + /* !!don't change the order, to keep binary compat!! */ + xchat_hook *(*xchat_hook_command) (xchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], char *word_eol[], void *user_data), + const char *help_text, + void *userdata); + xchat_hook *(*xchat_hook_server) (xchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], char *word_eol[], void *user_data), + void *userdata); + xchat_hook *(*xchat_hook_print) (xchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], void *user_data), + void *userdata); + xchat_hook *(*xchat_hook_timer) (xchat_plugin *ph, + int timeout, + int (*callback) (void *user_data), + void *userdata); + xchat_hook *(*xchat_hook_fd) (xchat_plugin *ph, + int fd, + int flags, + int (*callback) (int fd, int flags, void *user_data), + void *userdata); + void *(*xchat_unhook) (xchat_plugin *ph, + xchat_hook *hook); + void (*xchat_print) (xchat_plugin *ph, + const char *text); + void (*xchat_printf) (xchat_plugin *ph, + const char *format, ...); + void (*xchat_command) (xchat_plugin *ph, + const char *command); + void (*xchat_commandf) (xchat_plugin *ph, + const char *format, ...); + int (*xchat_nickcmp) (xchat_plugin *ph, + const char *s1, + const char *s2); + int (*xchat_set_context) (xchat_plugin *ph, + xchat_context *ctx); + xchat_context *(*xchat_find_context) (xchat_plugin *ph, + const char *servname, + const char *channel); + xchat_context *(*xchat_get_context) (xchat_plugin *ph); + const char *(*xchat_get_info) (xchat_plugin *ph, + const char *id); + int (*xchat_get_prefs) (xchat_plugin *ph, + const char *name, + const char **string, + int *integer); + xchat_list * (*xchat_list_get) (xchat_plugin *ph, + const char *name); + void (*xchat_list_free) (xchat_plugin *ph, + xchat_list *xlist); + const char * const * (*xchat_list_fields) (xchat_plugin *ph, + const char *name); + int (*xchat_list_next) (xchat_plugin *ph, + xchat_list *xlist); + const char * (*xchat_list_str) (xchat_plugin *ph, + xchat_list *xlist, + const char *name); + int (*xchat_list_int) (xchat_plugin *ph, + xchat_list *xlist, + const char *name); + void * (*xchat_plugingui_add) (xchat_plugin *ph, + const char *filename, + const char *name, + const char *desc, + const char *version, + char *reserved); + void (*xchat_plugingui_remove) (xchat_plugin *ph, + void *handle); + int (*xchat_emit_print) (xchat_plugin *ph, + const char *event_name, ...); + void *(*xchat_read_fd) (xchat_plugin *ph); + time_t (*xchat_list_time) (xchat_plugin *ph, + xchat_list *xlist, + const char *name); + char *(*xchat_gettext) (xchat_plugin *ph, + const char *msgid); + void (*xchat_send_modes) (xchat_plugin *ph, + const char **targets, + int ntargets, + int modes_per_line, + char sign, + char mode); + char *(*xchat_strip) (xchat_plugin *ph, + const char *str, + int len, + int flags); + void (*xchat_free) (xchat_plugin *ph, + void *ptr); + void *(*xchat_dummy4) (xchat_plugin *ph); + void *(*xchat_dummy3) (xchat_plugin *ph); + void *(*xchat_dummy2) (xchat_plugin *ph); + void *(*xchat_dummy1) (xchat_plugin *ph); + /* PRIVATE FIELDS! */ + void *handle; /* from dlopen */ + char *filename; /* loaded from */ + char *name; + char *desc; + char *version; + session *context; + void *deinit_callback; /* pointer to xchat_plugin_deinit */ + unsigned int fake:1; /* fake plugin. Added by xchat_plugingui_add() */ + unsigned int free_strings:1; /* free name,desc,version? */ +}; +#endif + +char *plugin_load (session *sess, char *filename, char *arg); +void plugin_add (session *sess, char *filename, void *handle, void *init_func, void *deinit_func, char *arg, int fake); +int plugin_kill (char *name, int by_filename); +void plugin_kill_all (void); +void plugin_auto_load (session *sess); +int plugin_emit_command (session *sess, char *name, char *word[], char *word_eol[]); +int plugin_emit_server (session *sess, char *name, char *word[], char *word_eol[]); +int plugin_emit_print (session *sess, char *word[]); +int plugin_emit_dummy_print (session *sess, char *name); +int plugin_emit_keypress (session *sess, unsigned int state, unsigned int keyval, int len, char *string); +GList* plugin_command_list(GList *tmp_list); +int plugin_show_help (session *sess, char *cmd); +void plugin_command_foreach (session *sess, void *userdata, void (*cb) (session *sess, void *userdata, char *name, char *usage)); + +#endif diff --git a/xchat-2.8.8/src/common/proto-irc.c b/xchat-2.8.8/src/common/proto-irc.c new file mode 100644 index 0000000..f1df6cc --- /dev/null +++ b/xchat-2.8.8/src/common/proto-irc.c @@ -0,0 +1,1260 @@ +/* X-Chat + * Copyright (C) 2002 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +/* IRC RFC1459(+commonly used extensions) protocol implementation */ + +#include <unistd.h> +#include <string.h> +#include <stdio.h> +#include <stdlib.h> +#include <ctype.h> +#include <stdarg.h> + +#include "xchat.h" +#include "ctcp.h" +#include "fe.h" +#include "ignore.h" +#include "inbound.h" +#include "modes.h" +#include "notify.h" +#include "plugin.h" +#include "server.h" +#include "text.h" +#include "outbound.h" +#include "util.h" +#include "xchatc.h" + + +static void +irc_login (server *serv, char *user, char *realname) +{ + if (serv->password[0]) + tcp_sendf (serv, "PASS %s\r\n", serv->password); + + tcp_sendf (serv, + "NICK %s\r\n" + "USER %s %s %s :%s\r\n", + serv->nick, user, user, serv->servername, realname); +} + +static void +irc_nickserv (server *serv, char *cmd, char *arg1, char *arg2, char *arg3) +{ + /* are all ircd authors idiots? */ + switch (serv->nickservtype) + { + case 0: + tcp_sendf (serv, "PRIVMSG NICKSERV :%s %s%s%s\r\n", cmd, arg1, arg2, arg3); + break; + case 1: + tcp_sendf (serv, "NICKSERV %s %s%s%s\r\n", cmd, arg1, arg2, arg3); + break; + case 2: + tcp_sendf (serv, "NS %s %s%s%s\r\n", cmd, arg1, arg2, arg3); + break; + case 3: + tcp_sendf (serv, "PRIVMSG NS :%s %s%s%s\r\n", cmd, arg1, arg2, arg3); + break; + case 4: + /* why couldn't QuakeNet implement one of the existing ones? */ + tcp_sendf (serv, "AUTH %s%s%s\r\n", cmd, arg1, arg2, arg3); + } +} + +static void +irc_ns_identify (server *serv, char *pass) +{ + irc_nickserv (serv, "IDENTIFY", pass, "", ""); +} + +static void +irc_ns_ghost (server *serv, char *usname, char *pass) +{ + if (serv->nickservtype != 4) + irc_nickserv (serv, "GHOST", usname, " ", pass); +} + +static void +irc_join (server *serv, char *channel, char *key) +{ + if (key[0]) + tcp_sendf (serv, "JOIN %s %s\r\n", channel, key); + else + tcp_sendf (serv, "JOIN %s\r\n", channel); +} + +static void +irc_join_list_flush (server *serv, GString *c, GString *k) +{ + char *chanstr, *keystr; + + chanstr = g_string_free (c, FALSE); + keystr = g_string_free (k, FALSE); + if (chanstr[0]) + { + if (keystr[0]) + tcp_sendf (serv, "JOIN %s %s\r\n", chanstr, keystr); + else + tcp_sendf (serv, "JOIN %s\r\n", chanstr); + } + g_free (chanstr); + g_free (keystr); +} + +/* join a whole list of channels & keys, split to multiple lines + * to get around 512 limit */ + +static void +irc_join_list (server *serv, GSList *channels, GSList *keys) +{ + GSList *clist; + GSList *klist; + GString *c = g_string_new (NULL); + GString *k = g_string_new (NULL); + int len; + int add; + int i, j; + + i = j = 0; + len = 9; /* "JOIN<space><space>\r\n" */ + clist = channels; + klist = keys; + + while (clist) + { + /* measure how many bytes this channel would add... */ + if (1) + { + add = strlen (clist->data); + if (i != 0) + add++; /* comma */ + } + + if (klist->data) + { + add += strlen (klist->data); + } + else + { + add++; /* 'x' filler */ + } + + if (j != 0) + add++; /* comma */ + + /* too big? dump buffer and start a fresh one */ + if (len + add > 512) + { + irc_join_list_flush (serv, c, k); + + c = g_string_new (NULL); + k = g_string_new (NULL); + i = j = 0; + len = 9; + } + + /* now actually add it to our GStrings */ + if (1) + { + add = strlen (clist->data); + if (i != 0) + { + add++; + g_string_append_c (c, ','); + } + g_string_append (c, clist->data); + i++; + } + + if (klist->data) + { + add += strlen (klist->data); + if (j != 0) + { + add++; + g_string_append_c (k, ','); + } + g_string_append (k, klist->data); + j++; + } + else + { + add++; + if (j != 0) + { + add++; + g_string_append_c (k, ','); + } + g_string_append_c (k, 'x'); + j++; + } + + len += add; + + klist = klist->next; + clist = clist->next; + } + + irc_join_list_flush (serv, c, k); +} + +static void +irc_part (server *serv, char *channel, char *reason) +{ + if (reason[0]) + tcp_sendf (serv, "PART %s :%s\r\n", channel, reason); + else + tcp_sendf (serv, "PART %s\r\n", channel); +} + +static void +irc_quit (server *serv, char *reason) +{ + if (reason[0]) + tcp_sendf (serv, "QUIT :%s\r\n", reason); + else + tcp_send_len (serv, "QUIT\r\n", 6); +} + +static void +irc_set_back (server *serv) +{ + tcp_send_len (serv, "AWAY\r\n", 6); +} + +static void +irc_set_away (server *serv, char *reason) +{ + if (reason) + { + if (!reason[0]) + reason = " "; + } + else + { + reason = " "; + } + + tcp_sendf (serv, "AWAY :%s\r\n", reason); +} + +static void +irc_ctcp (server *serv, char *to, char *msg) +{ + tcp_sendf (serv, "PRIVMSG %s :\001%s\001\r\n", to, msg); +} + +static void +irc_nctcp (server *serv, char *to, char *msg) +{ + tcp_sendf (serv, "NOTICE %s :\001%s\001\r\n", to, msg); +} + +static void +irc_cycle (server *serv, char *channel, char *key) +{ + tcp_sendf (serv, "PART %s\r\nJOIN %s %s\r\n", channel, channel, key); +} + +static void +irc_kick (server *serv, char *channel, char *nick, char *reason) +{ + if (reason[0]) + tcp_sendf (serv, "KICK %s %s :%s\r\n", channel, nick, reason); + else + tcp_sendf (serv, "KICK %s %s\r\n", channel, nick); +} + +static void +irc_invite (server *serv, char *channel, char *nick) +{ + tcp_sendf (serv, "INVITE %s %s\r\n", nick, channel); +} + +static void +irc_mode (server *serv, char *target, char *mode) +{ + tcp_sendf (serv, "MODE %s %s\r\n", target, mode); +} + +/* find channel info when joined */ + +static void +irc_join_info (server *serv, char *channel) +{ + tcp_sendf (serv, "MODE %s\r\n", channel); +} + +/* initiate userlist retreival */ + +static void +irc_user_list (server *serv, char *channel) +{ + tcp_sendf (serv, "WHO %s\r\n", channel); +} + +/* userhost */ + +static void +irc_userhost (server *serv, char *nick) +{ + tcp_sendf (serv, "USERHOST %s\r\n", nick); +} + +static void +irc_away_status (server *serv, char *channel) +{ + if (serv->have_whox) + tcp_sendf (serv, "WHO %s %%ctnf,152\r\n", channel); + else + tcp_sendf (serv, "WHO %s\r\n", channel); +} + +/*static void +irc_get_ip (server *serv, char *nick) +{ + tcp_sendf (serv, "WHO %s\r\n", nick); +}*/ + + +/* + * Command: WHOIS + * Parameters: [<server>] <nickmask>[,<nickmask>[,...]] + */ +static void +irc_user_whois (server *serv, char *nicks) +{ + tcp_sendf (serv, "WHOIS %s\r\n", nicks); +} + +static void +irc_message (server *serv, char *channel, char *text) +{ + tcp_sendf (serv, "PRIVMSG %s :%s\r\n", channel, text); +} + +static void +irc_action (server *serv, char *channel, char *act) +{ + tcp_sendf (serv, "PRIVMSG %s :\001ACTION %s\001\r\n", channel, act); +} + +static void +irc_notice (server *serv, char *channel, char *text) +{ + tcp_sendf (serv, "NOTICE %s :%s\r\n", channel, text); +} + +static void +irc_topic (server *serv, char *channel, char *topic) +{ + if (!topic) + tcp_sendf (serv, "TOPIC %s :\r\n", channel); + else if (topic[0]) + tcp_sendf (serv, "TOPIC %s :%s\r\n", channel, topic); + else + tcp_sendf (serv, "TOPIC %s\r\n", channel); +} + +static void +irc_list_channels (server *serv, char *arg, int min_users) +{ + if (arg[0]) + { + tcp_sendf (serv, "LIST %s\r\n", arg); + return; + } + + if (serv->use_listargs) + tcp_sendf (serv, "LIST >%d,<10000\r\n", min_users - 1); + else + tcp_send_len (serv, "LIST\r\n", 6); +} + +static void +irc_names (server *serv, char *channel) +{ + tcp_sendf (serv, "NAMES %s\r\n", channel); +} + +static void +irc_change_nick (server *serv, char *new_nick) +{ + tcp_sendf (serv, "NICK %s\r\n", new_nick); +} + +static void +irc_ping (server *serv, char *to, char *timestring) +{ + if (*to) + tcp_sendf (serv, "PRIVMSG %s :\001PING %s\001\r\n", to, timestring); + else + tcp_sendf (serv, "PING %s\r\n", timestring); +} + +static int +irc_raw (server *serv, char *raw) +{ + int len; + char tbuf[4096]; + if (*raw) + { + len = strlen (raw); + if (len < sizeof (tbuf) - 3) + { + len = snprintf (tbuf, sizeof (tbuf), "%s\r\n", raw); + tcp_send_len (serv, tbuf, len); + } else + { + tcp_send_len (serv, raw, len); + tcp_send_len (serv, "\r\n", 2); + } + return TRUE; + } + return FALSE; +} + +/* ============================================================== */ +/* ======================= IRC INPUT ============================ */ +/* ============================================================== */ + + +static void +channel_date (session *sess, char *chan, char *timestr) +{ + time_t timestamp = (time_t) atol (timestr); + char *tim = ctime (×tamp); + tim[24] = 0; /* get rid of the \n */ + EMIT_SIGNAL (XP_TE_CHANDATE, sess, chan, tim, NULL, NULL, 0); +} + +static void +process_numeric (session * sess, int n, + char *word[], char *word_eol[], char *text) +{ + server *serv = sess->server; + /* show whois is the server tab */ + session *whois_sess = serv->server_session; + + /* unless this setting is on */ + if (prefs.irc_whois_front) + whois_sess = serv->front_session; + + switch (n) + { + case 1: + inbound_login_start (sess, word[3], word[1]); + /* if network is PTnet then you must get your IP address + from "001" server message */ + if ((strncmp(word[7], "PTnet", 5) == 0) && + (strncmp(word[8], "IRC", 3) == 0) && + (strncmp(word[9], "Network", 7) == 0) && + (strrchr(word[10], '@') != NULL)) + { + serv->use_who = FALSE; + if (prefs.ip_from_server) + inbound_foundip (sess, strrchr(word[10], '@')+1); + } + + /* use /NICKSERV */ + if (strcasecmp (word[7], "DALnet") == 0 || + strcasecmp (word[7], "BRASnet") == 0) + serv->nickservtype = 1; + + /* use /NS */ + else if (strcasecmp (word[7], "FreeNode") == 0) + serv->nickservtype = 2; + + goto def; + + case 4: /* check the ircd type */ + serv->use_listargs = FALSE; + serv->modes_per_line = 3; /* default to IRC RFC */ + if (strncmp (word[5], "bahamut", 7) == 0) /* DALNet */ + { + serv->use_listargs = TRUE; /* use the /list args */ + } else if (strncmp (word[5], "u2.10.", 6) == 0) /* Undernet */ + { + serv->use_listargs = TRUE; /* use the /list args */ + serv->modes_per_line = 6; /* allow 6 modes per line */ + } else if (strncmp (word[5], "glx2", 4) == 0) + { + serv->use_listargs = TRUE; /* use the /list args */ + } + goto def; + + case 5: + inbound_005 (serv, word); + goto def; + + case 263: /*Server load is temporarily too heavy */ + if (fe_is_chanwindow (sess->server)) + { + fe_chan_list_end (sess->server); + fe_message (word_eol[5] + 1, FE_MSG_ERROR); + } + goto def; + + case 290: /* CAPAB reply */ + if (strstr (word_eol[1], "IDENTIFY-MSG")) + { + serv->have_idmsg = TRUE; + break; + } + goto def; + + case 301: + inbound_away (serv, word[4], + (word_eol[5][0] == ':') ? word_eol[5] + 1 : word_eol[5]); + break; + + case 302: + if (serv->skip_next_userhost) + { + char *eq = strchr (word[4], '='); + if (eq) + { + *eq = 0; + if (!serv->p_cmp (word[4] + 1, serv->nick)) + { + char *at = strrchr (eq + 1, '@'); + if (at) + inbound_foundip (sess, at + 1); + } + } + + serv->skip_next_userhost = FALSE; + break; + } + else goto def; + + case 303: + word[4]++; + notify_markonline (serv, word); + break; + + case 305: + inbound_uback (serv); + goto def; + + case 306: + inbound_uaway (serv); + goto def; + + case 312: + if (!serv->skip_next_whois) + EMIT_SIGNAL (XP_TE_WHOIS3, whois_sess, word[4], word_eol[5], NULL, NULL, 0); + else + inbound_user_info (sess, NULL, NULL, NULL, word[5], word[4], NULL, 0xff); + break; + + case 311: /* WHOIS 1st line */ + serv->inside_whois = 1; + inbound_user_info_start (sess, word[4]); + if (!serv->skip_next_whois) + EMIT_SIGNAL (XP_TE_WHOIS1, whois_sess, word[4], word[5], + word[6], word_eol[8] + 1, 0); + else + inbound_user_info (sess, NULL, word[5], word[6], NULL, word[4], + word_eol[8][0] == ':' ? word_eol[8] + 1 : word_eol[8], 0xff); + break; + + case 314: /* WHOWAS */ + inbound_user_info_start (sess, word[4]); + EMIT_SIGNAL (XP_TE_WHOIS1, whois_sess, word[4], word[5], + word[6], word_eol[8] + 1, 0); + break; + + case 317: + if (!serv->skip_next_whois) + { + time_t timestamp = (time_t) atol (word[6]); + long idle = atol (word[5]); + char *tim; + char outbuf[64]; + + snprintf (outbuf, sizeof (outbuf), + "%02ld:%02ld:%02ld", idle / 3600, (idle / 60) % 60, + idle % 60); + if (timestamp == 0) + EMIT_SIGNAL (XP_TE_WHOIS4, whois_sess, word[4], + outbuf, NULL, NULL, 0); + else + { + tim = ctime (×tamp); + tim[19] = 0; /* get rid of the \n */ + EMIT_SIGNAL (XP_TE_WHOIS4T, whois_sess, word[4], + outbuf, tim, NULL, 0); + } + } + break; + + case 318: /* END OF WHOIS */ + if (!serv->skip_next_whois) + EMIT_SIGNAL (XP_TE_WHOIS6, whois_sess, word[4], NULL, + NULL, NULL, 0); + serv->skip_next_whois = 0; + serv->inside_whois = 0; + break; + + case 313: + case 319: + if (!serv->skip_next_whois) + EMIT_SIGNAL (XP_TE_WHOIS2, whois_sess, word[4], + word_eol[5] + 1, NULL, NULL, 0); + break; + + case 307: /* dalnet version */ + case 320: /* :is an identified user */ + if (!serv->skip_next_whois) + EMIT_SIGNAL (XP_TE_WHOIS_ID, whois_sess, word[4], + word_eol[5] + 1, NULL, NULL, 0); + break; + + case 321: + if (!fe_is_chanwindow (sess->server)) + EMIT_SIGNAL (XP_TE_CHANLISTHEAD, serv->server_session, NULL, NULL, NULL, NULL, 0); + break; + + case 322: + if (fe_is_chanwindow (sess->server)) + { + fe_add_chan_list (sess->server, word[4], word[5], word_eol[6] + 1); + } else + { + PrintTextf (serv->server_session, "%-16s %-7d %s\017\n", + word[4], atoi (word[5]), word_eol[6] + 1); + } + break; + + case 323: + if (!fe_is_chanwindow (sess->server)) + EMIT_SIGNAL (XP_TE_SERVTEXT, serv->server_session, text, word[1], word[2], NULL, 0); + else + fe_chan_list_end (sess->server); + break; + + case 324: + sess = find_channel (serv, word[4]); + if (!sess) + sess = serv->server_session; + if (sess->ignore_mode) + sess->ignore_mode = FALSE; + else + EMIT_SIGNAL (XP_TE_CHANMODES, sess, word[4], word_eol[5], + NULL, NULL, 0); + fe_update_mode_buttons (sess, 't', '-'); + fe_update_mode_buttons (sess, 'n', '-'); + fe_update_mode_buttons (sess, 's', '-'); + fe_update_mode_buttons (sess, 'i', '-'); + fe_update_mode_buttons (sess, 'p', '-'); + fe_update_mode_buttons (sess, 'm', '-'); + fe_update_mode_buttons (sess, 'l', '-'); + fe_update_mode_buttons (sess, 'k', '-'); + handle_mode (serv, word, word_eol, "", TRUE); + break; + + case 329: + sess = find_channel (serv, word[4]); + if (sess) + { + if (sess->ignore_date) + sess->ignore_date = FALSE; + else + channel_date (sess, word[4], word[5]); + } + break; + + case 330: + if (!serv->skip_next_whois) + EMIT_SIGNAL (XP_TE_WHOIS_AUTH, whois_sess, word[4], + word_eol[6] + 1, word[5], NULL, 0); + break; + + case 332: + inbound_topic (serv, word[4], + (word_eol[5][0] == ':') ? word_eol[5] + 1 : word_eol[5]); + break; + + case 333: + inbound_topictime (serv, word[4], word[5], atol (word[6])); + break; + +#if 0 + case 338: /* Undernet Real user@host, Real IP */ + EMIT_SIGNAL (XP_TE_WHOIS_REALHOST, sess, word[4], word[5], word[6], + (word_eol[7][0]==':') ? word_eol[7]+1 : word_eol[7], 0); + break; +#endif + + case 341: /* INVITE ACK */ + EMIT_SIGNAL (XP_TE_UINVITE, sess, word[4], word[5], serv->servername, + NULL, 0); + break; + + case 352: /* WHO */ + { + unsigned int away = 0; + session *who_sess = find_channel (serv, word[4]); + + if (*word[9] == 'G') + away = 1; + + inbound_user_info (sess, word[4], word[5], word[6], word[7], + word[8], word_eol[11], away); + + /* try to show only user initiated whos */ + if (!who_sess || !who_sess->doing_who) + EMIT_SIGNAL (XP_TE_SERVTEXT, serv->server_session, text, word[1], + word[2], NULL, 0); + } + break; + + case 354: /* undernet WHOX: used as a reply for irc_away_status */ + { + unsigned int away = 0; + session *who_sess; + + /* irc_away_status sends out a "152" */ + if (!strcmp (word[4], "152")) + { + who_sess = find_channel (serv, word[5]); + + if (*word[7] == 'G') + away = 1; + + /* :SanJose.CA.us.undernet.org 354 z1 152 #zed1 z1 H@ */ + inbound_user_info (sess, word[5], 0, 0, 0, word[6], 0, away); + + /* try to show only user initiated whos */ + if (!who_sess || !who_sess->doing_who) + EMIT_SIGNAL (XP_TE_SERVTEXT, serv->server_session, text, + word[1], word[2], NULL, 0); + } else + goto def; + } + break; + + case 315: /* END OF WHO */ + { + session *who_sess; + who_sess = find_channel (serv, word[4]); + if (who_sess) + { + if (!who_sess->doing_who) + EMIT_SIGNAL (XP_TE_SERVTEXT, serv->server_session, text, + word[1], word[2], NULL, 0); + who_sess->doing_who = FALSE; + } else + { + if (!serv->doing_dns) + EMIT_SIGNAL (XP_TE_SERVTEXT, serv->server_session, text, + word[1], word[2], NULL, 0); + serv->doing_dns = FALSE; + } + } + break; + + case 348: /* +e-list entry */ + if (!inbound_banlist (sess, atol (word[7]), word[4], word[5], word[6], TRUE)) + goto def; + break; + + case 349: /* end of exemption list */ + sess = find_channel (serv, word[4]); + if (!sess) + { + sess = serv->front_session; + goto def; + } + if (!fe_is_banwindow (sess)) + goto def; + fe_ban_list_end (sess, TRUE); + break; + + case 353: /* NAMES */ + inbound_nameslist (serv, word[5], + (word_eol[6][0] == ':') ? word_eol[6] + 1 : word_eol[6]); + break; + + case 366: + if (!inbound_nameslist_end (serv, word[4])) + goto def; + break; + + case 367: /* banlist entry */ + inbound_banlist (sess, atol (word[7]), word[4], word[5], word[6], FALSE); + break; + + case 368: + sess = find_channel (serv, word[4]); + if (!sess) + { + sess = serv->front_session; + goto def; + } + if (!fe_is_banwindow (sess)) + goto def; + fe_ban_list_end (sess, FALSE); + break; + + case 369: /* WHOWAS end */ + case 406: /* WHOWAS error */ + EMIT_SIGNAL (XP_TE_SERVTEXT, whois_sess, text, word[1], word[2], NULL, 0); + serv->inside_whois = 0; + break; + + case 372: /* motd text */ + case 375: /* motd start */ + if (!prefs.skipmotd || serv->motd_skipped) + EMIT_SIGNAL (XP_TE_MOTD, serv->server_session, text, NULL, NULL, + NULL, 0); + break; + + case 376: /* end of motd */ + case 422: /* motd file is missing */ + inbound_login_end (sess, text); + break; + + case 433: /* nickname in use */ + case 432: /* erroneous nickname */ + if (serv->end_of_motd) + goto def; + inbound_next_nick (sess, word[4]); + break; + + case 437: + if (serv->end_of_motd || is_channel (serv, word[4])) + goto def; + inbound_next_nick (sess, word[4]); + break; + + case 471: + EMIT_SIGNAL (XP_TE_USERLIMIT, sess, word[4], NULL, NULL, NULL, 0); + break; + + case 473: + EMIT_SIGNAL (XP_TE_INVITE, sess, word[4], NULL, NULL, NULL, 0); + break; + + case 474: + EMIT_SIGNAL (XP_TE_BANNED, sess, word[4], NULL, NULL, NULL, 0); + break; + + case 475: + EMIT_SIGNAL (XP_TE_KEYWORD, sess, word[4], NULL, NULL, NULL, 0); + break; + + case 601: + notify_set_offline (serv, word[4], FALSE); + break; + + case 605: + notify_set_offline (serv, word[4], TRUE); + break; + + case 600: + case 604: + notify_set_online (serv, word[4]); + break; + + default: + + if (serv->inside_whois && word[4][0]) + { + /* some unknown WHOIS reply, ircd coders make them up weekly */ + if (!serv->skip_next_whois) + EMIT_SIGNAL (XP_TE_WHOIS_SPECIAL, whois_sess, word[4], + (word_eol[5][0] == ':') ? word_eol[5] + 1 : word_eol[5], + word[2], NULL, 0); + return; + } + + def: + if (is_channel (serv, word[4])) + { + session *realsess = find_channel (serv, word[4]); + if (!realsess) + realsess = serv->server_session; + EMIT_SIGNAL (XP_TE_SERVTEXT, realsess, text, word[1], word[2], NULL, 0); + } else + { + EMIT_SIGNAL (XP_TE_SERVTEXT, serv->server_session, text, word[1], + word[2], NULL, 0); + } + } +} + +/* handle named messages that starts with a ':' */ + +static void +process_named_msg (session *sess, char *type, char *word[], char *word_eol[]) +{ + server *serv = sess->server; + char ip[128], nick[NICKLEN]; + char *text, *ex; + int len = strlen (type); + + /* fill in the "ip" and "nick" buffers */ + ex = strchr (word[1], '!'); + if (!ex) /* no '!', must be a server message */ + { + safe_strcpy (ip, word[1], sizeof (ip)); + safe_strcpy (nick, word[1], sizeof (nick)); + } else + { + safe_strcpy (ip, ex + 1, sizeof (ip)); + ex[0] = 0; + safe_strcpy (nick, word[1], sizeof (nick)); + ex[0] = '!'; + } + + if (len == 4) + { + guint32 t; + + t = WORDL((guint8)type[0], (guint8)type[1], (guint8)type[2], (guint8)type[3]); + /* this should compile to a bunch of: CMP.L, JE ... nice & fast */ + switch (t) + { + case WORDL('J','O','I','N'): + { + char *chan = word[3]; + + if (*chan == ':') + chan++; + if (!serv->p_cmp (nick, serv->nick)) + inbound_ujoin (serv, chan, nick, ip); + else + inbound_join (serv, chan, nick, ip); + } + return; + + case WORDL('K','I','C','K'): + { + char *kicked = word[4]; + char *reason = word_eol[5]; + if (*kicked) + { + if (*reason == ':') + reason++; + if (!strcmp (kicked, serv->nick)) + inbound_ukick (serv, word[3], nick, reason); + else + inbound_kick (serv, word[3], kicked, nick, reason); + } + } + return; + + case WORDL('K','I','L','L'): + EMIT_SIGNAL (XP_TE_KILL, sess, nick, word_eol[5], NULL, NULL, 0); + return; + + case WORDL('M','O','D','E'): + handle_mode (serv, word, word_eol, nick, FALSE); /* modes.c */ + return; + + case WORDL('N','I','C','K'): + inbound_newnick (serv, nick, (word_eol[3][0] == ':') + ? word_eol[3] + 1 : word_eol[3], FALSE); + return; + + case WORDL('P','A','R','T'): + { + char *chan = word[3]; + char *reason = word_eol[4]; + + if (*chan == ':') + chan++; + if (*reason == ':') + reason++; + if (!strcmp (nick, serv->nick)) + inbound_upart (serv, chan, ip, reason); + else + inbound_part (serv, chan, nick, ip, reason); + } + return; + + case WORDL('P','O','N','G'): + inbound_ping_reply (serv->server_session, + (word[4][0] == ':') ? word[4] + 1 : word[4], word[3]); + return; + + case WORDL('Q','U','I','T'): + inbound_quit (serv, nick, ip, + (word_eol[3][0] == ':') ? word_eol[3] + 1 : word_eol[3]); + return; + } + + goto garbage; + } + + else if (len >= 5) + { + guint32 t; + + t = WORDL((guint8)type[0], (guint8)type[1], (guint8)type[2], (guint8)type[3]); + /* this should compile to a bunch of: CMP.L, JE ... nice & fast */ + switch (t) + { + case WORDL('I','N','V','I'): + if (ignore_check (word[1], IG_INVI)) + return; + + if (word[4][0] == ':') + EMIT_SIGNAL (XP_TE_INVITED, sess, word[4] + 1, nick, + serv->servername, NULL, 0); + else + EMIT_SIGNAL (XP_TE_INVITED, sess, word[4], nick, + serv->servername, NULL, 0); + + return; + + case WORDL('N','O','T','I'): + { + int id = FALSE; /* identified */ + + text = word_eol[4]; + if (*text == ':') + text++; + + if (serv->have_idmsg) + { + if (*text == '+') + { + id = TRUE; + text++; + } else if (*text == '-') + text++; + } + + if (!ignore_check (word[1], IG_NOTI)) + inbound_notice (serv, word[3], nick, text, ip, id); + } + return; + + case WORDL('P','R','I','V'): + { + char *to = word[3]; + int len; + int id = FALSE; /* identified */ + if (*to) + { + text = word_eol[4]; + if (*text == ':') + text++; + if (serv->have_idmsg) + { + if (*text == '+') + { + id = TRUE; + text++; + } else if (*text == '-') + text++; + } + len = strlen (text); + if (text[0] == 1 && text[len - 1] == 1) /* ctcp */ + { + text[len - 1] = 0; + text++; + if (strncasecmp (text, "ACTION", 6) != 0) + flood_check (nick, ip, serv, sess, 0); + if (strncasecmp (text, "DCC ", 4) == 0) + /* redo this with handle_quotes TRUE */ + process_data_init (word[1], word_eol[1], word, word_eol, TRUE, FALSE); + ctcp_handle (sess, to, nick, ip, text, word, word_eol, id); + } else + { + if (is_channel (serv, to)) + { + if (ignore_check (word[1], IG_CHAN)) + return; + inbound_chanmsg (serv, NULL, to, nick, text, FALSE, id); + } else + { + if (ignore_check (word[1], IG_PRIV)) + return; + inbound_privmsg (serv, nick, ip, text, id); + } + } + } + } + return; + + case WORDL('T','O','P','I'): + inbound_topicnew (serv, nick, word[3], + (word_eol[4][0] == ':') ? word_eol[4] + 1 : word_eol[4]); + return; + + case WORDL('W','A','L','L'): + text = word_eol[3]; + if (*text == ':') + text++; + EMIT_SIGNAL (XP_TE_WALLOPS, sess, nick, text, NULL, NULL, 0); + return; + } + } + +garbage: + /* unknown message */ + PrintTextf (sess, "GARBAGE: %s\n", word_eol[1]); +} + +/* handle named messages that DON'T start with a ':' */ + +static void +process_named_servermsg (session *sess, char *buf, char *rawname, char *word_eol[]) +{ + sess = sess->server->server_session; + + if (!strncmp (buf, "PING ", 5)) + { + tcp_sendf (sess->server, "PONG %s\r\n", buf + 5); + return; + } + if (!strncmp (buf, "ERROR", 5)) + { + EMIT_SIGNAL (XP_TE_SERVERERROR, sess, buf + 7, NULL, NULL, NULL, 0); + return; + } + if (!strncmp (buf, "NOTICE ", 7)) + { + buf = word_eol[3]; + if (*buf == ':') + buf++; + EMIT_SIGNAL (XP_TE_SERVNOTICE, sess, buf, sess->server->servername, NULL, NULL, 0); + return; + } + + EMIT_SIGNAL (XP_TE_SERVTEXT, sess, buf, sess->server->servername, rawname, NULL, 0); +} + +/* irc_inline() - 1 single line received from serv */ + +static void +irc_inline (server *serv, char *buf, int len) +{ + session *sess, *tmp; + char *type, *text; + char *word[PDIWORDS+1]; + char *word_eol[PDIWORDS+1]; + char pdibuf_static[522]; /* 1 line can potentially be 512*6 in utf8 */ + char *pdibuf = pdibuf_static; + + /* need more than 522? fall back to malloc */ + if (len >= sizeof (pdibuf_static)) + pdibuf = malloc (len + 1); + + sess = serv->front_session; + + /* Python relies on this */ + word[PDIWORDS] = NULL; + word_eol[PDIWORDS] = NULL; + + if (buf[0] == ':') + { + /* split line into words and words_to_end_of_line */ + process_data_init (pdibuf, buf, word, word_eol, FALSE, FALSE); + + /* find a context for this message */ + if (is_channel (serv, word[3])) + { + tmp = find_channel (serv, word[3]); + if (tmp) + sess = tmp; + } + + /* for server messages, the 2nd word is the "message type" */ + type = word[2]; + + word[0] = type; + word_eol[1] = buf; /* keep the ":" for plugins */ + if (plugin_emit_server (sess, type, word, word_eol)) + goto xit; + word[1]++; + word_eol[1] = buf + 1; /* but not for xchat internally */ + + } else + { + process_data_init (pdibuf, buf, word, word_eol, FALSE, FALSE); + word[0] = type = word[1]; + if (plugin_emit_server (sess, type, word, word_eol)) + goto xit; + } + + if (buf[0] != ':') + { + process_named_servermsg (sess, buf, word[0], word_eol); + goto xit; + } + + /* see if the second word is a numeric */ + if (isdigit ((unsigned char) word[2][0])) + { + text = word_eol[4]; + if (*text == ':') + text++; + + process_numeric (sess, atoi (word[2]), word, word_eol, text); + } else + { + process_named_msg (sess, type, word, word_eol); + } + +xit: + if (pdibuf != pdibuf_static) + free (pdibuf); +} + +void +proto_fill_her_up (server *serv) +{ + serv->p_inline = irc_inline; + serv->p_invite = irc_invite; + serv->p_cycle = irc_cycle; + serv->p_ctcp = irc_ctcp; + serv->p_nctcp = irc_nctcp; + serv->p_quit = irc_quit; + serv->p_kick = irc_kick; + serv->p_part = irc_part; + serv->p_ns_identify = irc_ns_identify; + serv->p_ns_ghost = irc_ns_ghost; + serv->p_join = irc_join; + serv->p_join_list = irc_join_list; + serv->p_login = irc_login; + serv->p_join_info = irc_join_info; + serv->p_mode = irc_mode; + serv->p_user_list = irc_user_list; + serv->p_away_status = irc_away_status; + /*serv->p_get_ip = irc_get_ip;*/ + serv->p_whois = irc_user_whois; + serv->p_get_ip = irc_user_list; + serv->p_get_ip_uh = irc_userhost; + serv->p_set_back = irc_set_back; + serv->p_set_away = irc_set_away; + serv->p_message = irc_message; + serv->p_action = irc_action; + serv->p_notice = irc_notice; + serv->p_topic = irc_topic; + serv->p_list_channels = irc_list_channels; + serv->p_change_nick = irc_change_nick; + serv->p_names = irc_names; + serv->p_ping = irc_ping; + serv->p_raw = irc_raw; + serv->p_cmp = rfc_casecmp; /* can be changed by 005 in modes.c */ +} diff --git a/xchat-2.8.8/src/common/proto-irc.h b/xchat-2.8.8/src/common/proto-irc.h new file mode 100644 index 0000000..9080359 --- /dev/null +++ b/xchat-2.8.8/src/common/proto-irc.h @@ -0,0 +1,6 @@ +#ifndef XCHAT_PROTO_H +#define XCHAT_PROTO_H + +void proto_fill_her_up (server *serv); + +#endif diff --git a/xchat-2.8.8/src/common/server.c b/xchat-2.8.8/src/common/server.c new file mode 100644 index 0000000..87f9f02 --- /dev/null +++ b/xchat-2.8.8/src/common/server.c @@ -0,0 +1,1990 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * + * MS Proxy (ISA server) support is (c) 2006 Pavel Fedin <sonic_amiga@rambler.ru> + * based on Dante source code + * Copyright (c) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + * Inferno Nettverk A/S, Norway. All rights reserved. + */ + +/*#define DEBUG_MSPROXY*/ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <unistd.h> +#include <errno.h> +#include <fcntl.h> + +#define WANTSOCKET +#define WANTARPA +#include "inet.h" + +#ifndef WIN32 +#include <signal.h> +#include <sys/wait.h> +#else +#include <winbase.h> +#endif + +#include "xchat.h" +#include "fe.h" +#include "cfgfiles.h" +#include "network.h" +#include "notify.h" +#include "xchatc.h" +#include "inbound.h" +#include "outbound.h" +#include "text.h" +#include "util.h" +#include "url.h" +#include "proto-irc.h" +#include "servlist.h" +#include "server.h" + +#ifdef USE_OPENSSL +#include <openssl/ssl.h> /* SSL_() */ +#include <openssl/err.h> /* ERR_() */ +#include "ssl.h" +#endif + +#ifdef USE_MSPROXY +#include "msproxy.h" +#endif + +#ifdef WIN32 +#include "identd.c" +#endif + +#ifdef USE_OPENSSL +extern SSL_CTX *ctx; /* xchat.c */ +/* local variables */ +static struct session *g_sess = NULL; +#endif + +static GSList *away_list = NULL; +GSList *serv_list = NULL; + +static void auto_reconnect (server *serv, int send_quit, int err); +static void server_disconnect (session * sess, int sendquit, int err); +static int server_cleanup (server * serv); +static void server_connect (server *serv, char *hostname, int port, int no_login); + + +/* actually send to the socket. This might do a character translation or + send via SSL. server/dcc both use this function. */ + +int +tcp_send_real (void *ssl, int sok, char *encoding, int using_irc, char *buf, int len) +{ + int ret; + char *locale; + gsize loc_len; + + if (encoding == NULL) /* system */ + { + locale = NULL; + if (!prefs.utf8_locale) + { + const gchar *charset; + + g_get_charset (&charset); + locale = g_convert_with_fallback (buf, len, charset, "UTF-8", + "?", 0, &loc_len, 0); + } + } else + { + if (using_irc) /* using "IRC" encoding (CP1252/UTF-8 hybrid) */ + /* if all chars fit inside CP1252, use that. Otherwise this + returns NULL and we send UTF-8. */ + locale = g_convert (buf, len, "CP1252", "UTF-8", 0, &loc_len, 0); + else + locale = g_convert_with_fallback (buf, len, encoding, "UTF-8", + "?", 0, &loc_len, 0); + } + + if (locale) + { + len = loc_len; +#ifdef USE_OPENSSL + if (!ssl) + ret = send (sok, locale, len, 0); + else + ret = _SSL_send (ssl, locale, len); +#else + ret = send (sok, locale, len, 0); +#endif + g_free (locale); + } else + { +#ifdef USE_OPENSSL + if (!ssl) + ret = send (sok, buf, len, 0); + else + ret = _SSL_send (ssl, buf, len); +#else + ret = send (sok, buf, len, 0); +#endif + } + + return ret; +} + +static int +server_send_real (server *serv, char *buf, int len) +{ + fe_add_rawlog (serv, buf, len, TRUE); + + return tcp_send_real (serv->ssl, serv->sok, serv->encoding, serv->using_irc, + buf, len); +} + +/* new throttling system, uses the same method as the Undernet + ircu2.10 server; under test, a 200-line paste didn't flood + off the client */ + +static int +tcp_send_queue (server *serv) +{ + char *buf, *p; + int len, i, pri; + GSList *list; + time_t now = time (0); + + /* did the server close since the timeout was added? */ + if (!is_server (serv)) + return 0; + + /* try priority 2,1,0 */ + pri = 2; + while (pri >= 0) + { + list = serv->outbound_queue; + while (list) + { + buf = (char *) list->data; + if (buf[0] == pri) + { + buf++; /* skip the priority byte */ + len = strlen (buf); + + if (serv->next_send < now) + serv->next_send = now; + if (serv->next_send - now >= 10) + { + /* check for clock skew */ + if (now >= serv->prev_now) + return 1; /* don't remove the timeout handler */ + /* it is skewed, reset to something sane */ + serv->next_send = now; + } + + for (p = buf, i = len; i && *p != ' '; p++, i--); + serv->next_send += (2 + i / 120); + serv->sendq_len -= len; + serv->prev_now = now; + fe_set_throttle (serv); + + server_send_real (serv, buf, len); + + buf--; + serv->outbound_queue = g_slist_remove (serv->outbound_queue, buf); + free (buf); + list = serv->outbound_queue; + } else + { + list = list->next; + } + } + /* now try pri 0 */ + pri--; + } + return 0; /* remove the timeout handler */ +} + +int +tcp_send_len (server *serv, char *buf, int len) +{ + char *dbuf; + int noqueue = !serv->outbound_queue; + + if (!prefs.throttle) + return server_send_real (serv, buf, len); + + dbuf = malloc (len + 2); /* first byte is the priority */ + dbuf[0] = 2; /* pri 2 for most things */ + memcpy (dbuf + 1, buf, len); + dbuf[len + 1] = 0; + + /* privmsg and notice get a lower priority */ + if (strncasecmp (dbuf + 1, "PRIVMSG", 7) == 0 || + strncasecmp (dbuf + 1, "NOTICE", 6) == 0) + { + dbuf[0] = 1; + } + else + { + /* WHO/MODE get the lowest priority */ + if (strncasecmp (dbuf + 1, "WHO ", 4) == 0 || + /* but only MODE queries, not changes */ + (strncasecmp (dbuf + 1, "MODE", 4) == 0 && + strchr (dbuf, '-') == NULL && + strchr (dbuf, '+') == NULL)) + dbuf[0] = 0; + } + + serv->outbound_queue = g_slist_append (serv->outbound_queue, dbuf); + serv->sendq_len += len; /* tcp_send_queue uses strlen */ + + if (tcp_send_queue (serv) && noqueue) + fe_timeout_add (500, tcp_send_queue, serv); + + return 1; +} + +/*int +tcp_send (server *serv, char *buf) +{ + return tcp_send_len (serv, buf, strlen (buf)); +}*/ + +void +tcp_sendf (server *serv, char *fmt, ...) +{ + va_list args; + /* keep this buffer in BSS. Converting UTF-8 to ISO-8859-x might make the + string shorter, so allow alot more than 512 for now. */ + static char send_buf[1540]; /* good code hey (no it's not overflowable) */ + int len; + + va_start (args, fmt); + len = vsnprintf (send_buf, sizeof (send_buf) - 1, fmt, args); + va_end (args); + + send_buf[sizeof (send_buf) - 1] = '\0'; + if (len < 0 || len > (sizeof (send_buf) - 1)) + len = strlen (send_buf); + + tcp_send_len (serv, send_buf, len); +} + +static int +close_socket_cb (gpointer sok) +{ + closesocket (GPOINTER_TO_INT (sok)); + return 0; +} + +static void +close_socket (int sok) +{ + /* close the socket in 5 seconds so the QUIT message is not lost */ + fe_timeout_add (5000, close_socket_cb, GINT_TO_POINTER (sok)); +} + +/* handle 1 line of text received from the server */ + +static void +server_inline (server *serv, char *line, int len) +{ + char *utf_line_allocated = NULL; + + /* Checks whether we're set to use UTF-8 charset */ + if (serv->using_irc || /* 1. using CP1252/UTF-8 Hybrid */ + (serv->encoding == NULL && prefs.utf8_locale) || /* OR 2. using system default->UTF-8 */ + (serv->encoding != NULL && /* OR 3. explicitly set to UTF-8 */ + (strcasecmp (serv->encoding, "UTF8") == 0 || + strcasecmp (serv->encoding, "UTF-8") == 0))) + { + /* The user has the UTF-8 charset set, either via /charset + command or from his UTF-8 locale. Thus, we first try the + UTF-8 charset, and if we fail to convert, we assume + it to be ISO-8859-1 (see text_validate). */ + + utf_line_allocated = text_validate (&line, &len); + + } else + { + /* Since the user has an explicit charset set, either + via /charset command or from his non-UTF8 locale, + we don't fallback to ISO-8859-1 and instead try to remove + errnoeous octets till the string is convertable in the + said charset. */ + + const char *encoding = NULL; + + if (serv->encoding != NULL) + encoding = serv->encoding; + else + g_get_charset (&encoding); + + if (encoding != NULL) + { + char *conv_line; /* holds a copy of the original string */ + int conv_len; /* tells g_convert how much of line to convert */ + gsize utf_len; + gsize read_len; + GError *err; + gboolean retry; + + conv_line = g_malloc (len + 1); + memcpy (conv_line, line, len); + conv_line[len] = 0; + conv_len = len; + + /* if CP1255, convert it with the NUL terminator. + Works around SF bug #1122089 */ + if (serv->using_cp1255) + conv_len++; + + do + { + err = NULL; + retry = FALSE; + utf_line_allocated = g_convert_with_fallback (conv_line, conv_len, "UTF-8", encoding, "?", &read_len, &utf_len, &err); + if (err != NULL) + { + if (err->code == G_CONVERT_ERROR_ILLEGAL_SEQUENCE && conv_len > (read_len + 1)) + { + /* Make our best bet by removing the erroneous char. + This will work for casual 8-bit strings with non-standard chars. */ + memmove (conv_line + read_len, conv_line + read_len + 1, conv_len - read_len -1); + conv_len--; + retry = TRUE; + } + g_error_free (err); + } + } while (retry); + + g_free (conv_line); + + /* If any conversion has occured at all. Conversion might fail + due to errors other than invalid sequences, e.g. unknown charset. */ + if (utf_line_allocated != NULL) + { + line = utf_line_allocated; + len = utf_len; + if (serv->using_cp1255 && len > 0) + len--; + } + else + { + /* If all fails, treat as UTF-8 with fallback to ISO-8859-1. */ + utf_line_allocated = text_validate (&line, &len); + } + } + } + + fe_add_rawlog (serv, line, len, FALSE); + url_check_line (line, len); + + /* let proto-irc.c handle it */ + serv->p_inline (serv, line, len); + + if (utf_line_allocated != NULL) /* only if a special copy was allocated */ + g_free (utf_line_allocated); +} + +/* read data from socket */ + +static gboolean +server_read (GIOChannel *source, GIOCondition condition, server *serv) +{ + int sok = serv->sok; + int error, i, len; + char lbuf[2050]; + + while (1) + { +#ifdef USE_OPENSSL + if (!serv->ssl) +#endif + len = recv (sok, lbuf, sizeof (lbuf) - 2, 0); +#ifdef USE_OPENSSL + else + len = _SSL_recv (serv->ssl, lbuf, sizeof (lbuf) - 2); +#endif + if (len < 1) + { + error = 0; + if (len < 0) + { + if (would_block ()) + return TRUE; + error = sock_error (); + } + if (!serv->end_of_motd) + { + server_disconnect (serv->server_session, FALSE, error); + if (!servlist_cycle (serv)) + { + if (prefs.autoreconnect) + auto_reconnect (serv, FALSE, error); + } + } else + { + if (prefs.autoreconnect) + auto_reconnect (serv, FALSE, error); + else + server_disconnect (serv->server_session, FALSE, error); + } + return TRUE; + } + + i = 0; + + lbuf[len] = 0; + + while (i < len) + { + switch (lbuf[i]) + { + case '\r': + break; + + case '\n': + serv->linebuf[serv->pos] = 0; + server_inline (serv, serv->linebuf, serv->pos); + serv->pos = 0; + break; + + default: + serv->linebuf[serv->pos] = lbuf[i]; + if (serv->pos >= (sizeof (serv->linebuf) - 1)) + fprintf (stderr, + "*** XCHAT WARNING: Buffer overflow - shit server!\n"); + else + serv->pos++; + } + i++; + } + } +} + +static void +server_connected (server * serv) +{ + prefs.wait_on_exit = TRUE; + serv->ping_recv = time (0); + serv->connected = TRUE; + set_nonblocking (serv->sok); + serv->iotag = fe_input_add (serv->sok, FIA_READ|FIA_EX, server_read, serv); + if (!serv->no_login) + { + EMIT_SIGNAL (XP_TE_CONNECTED, serv->server_session, NULL, NULL, NULL, + NULL, 0); + if (serv->network) + { + serv->p_login (serv, + (!(((ircnet *)serv->network)->flags & FLAG_USE_GLOBAL) && + (((ircnet *)serv->network)->user)) ? + (((ircnet *)serv->network)->user) : + prefs.username, + (!(((ircnet *)serv->network)->flags & FLAG_USE_GLOBAL) && + (((ircnet *)serv->network)->real)) ? + (((ircnet *)serv->network)->real) : + prefs.realname); + } else + { + serv->p_login (serv, prefs.username, prefs.realname); + } + } else + { + EMIT_SIGNAL (XP_TE_SERVERCONNECTED, serv->server_session, NULL, NULL, + NULL, NULL, 0); + } + + server_set_name (serv, serv->servername); + fe_server_event (serv, FE_SE_CONNECT, 0); +} + +#ifdef WIN32 + +static gboolean +server_close_pipe (int *pipefd) /* see comments below */ +{ + close (pipefd[0]); /* close WRITE end first to cause an EOF on READ */ + close (pipefd[1]); /* in giowin32, and end that thread. */ + free (pipefd); + return FALSE; +} + +#endif + +static void +server_stopconnecting (server * serv) +{ + if (serv->iotag) + { + fe_input_remove (serv->iotag); + serv->iotag = 0; + } + + if (serv->joindelay_tag) + { + fe_timeout_remove (serv->joindelay_tag); + serv->joindelay_tag = 0; + } + +#ifndef WIN32 + /* kill the child process trying to connect */ + kill (serv->childpid, SIGKILL); + waitpid (serv->childpid, NULL, 0); + + close (serv->childwrite); + close (serv->childread); +#else + PostThreadMessage (serv->childpid, WM_QUIT, 0, 0); + + { + /* if we close the pipe now, giowin32 will crash. */ + int *pipefd = malloc (sizeof (int) * 2); + pipefd[0] = serv->childwrite; + pipefd[1] = serv->childread; + g_idle_add ((GSourceFunc)server_close_pipe, pipefd); + } +#endif + +#ifdef USE_OPENSSL + if (serv->ssl_do_connect_tag) + { + fe_timeout_remove (serv->ssl_do_connect_tag); + serv->ssl_do_connect_tag = 0; + } +#endif + + fe_progressbar_end (serv); + + serv->connecting = FALSE; + fe_server_event (serv, FE_SE_DISCONNECT, 0); +} + +#ifdef USE_OPENSSL +#define SSLTMOUT 90 /* seconds */ +static void +ssl_cb_info (SSL * s, int where, int ret) +{ +/* char buf[128];*/ + + + return; /* FIXME: make debug level adjustable in serverlist or settings */ + +/* snprintf (buf, sizeof (buf), "%s (%d)", SSL_state_string_long (s), where); + if (g_sess) + EMIT_SIGNAL (XP_TE_SSLMESSAGE, g_sess, buf, NULL, NULL, NULL, 0); + else + fprintf (stderr, "%s\n", buf);*/ +} + +static int +ssl_cb_verify (int ok, X509_STORE_CTX * ctx) +{ + char subject[256]; + char issuer[256]; + char buf[512]; + + + X509_NAME_oneline (X509_get_subject_name (ctx->current_cert), subject, + sizeof (subject)); + X509_NAME_oneline (X509_get_issuer_name (ctx->current_cert), issuer, + sizeof (issuer)); + + snprintf (buf, sizeof (buf), "* Subject: %s", subject); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, g_sess, buf, NULL, NULL, NULL, 0); + snprintf (buf, sizeof (buf), "* Issuer: %s", issuer); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, g_sess, buf, NULL, NULL, NULL, 0); + + return (TRUE); /* always ok */ +} + +static int +ssl_do_connect (server * serv) +{ + char buf[128]; + + g_sess = serv->server_session; + if (SSL_connect (serv->ssl) <= 0) + { + char err_buf[128]; + int err; + + g_sess = NULL; + if ((err = ERR_get_error ()) > 0) + { + ERR_error_string (err, err_buf); + snprintf (buf, sizeof (buf), "(%d) %s", err, err_buf); + EMIT_SIGNAL (XP_TE_CONNFAIL, serv->server_session, buf, NULL, + NULL, NULL, 0); + + if (ERR_GET_REASON (err) == SSL_R_WRONG_VERSION_NUMBER) + PrintText (serv->server_session, _("Are you sure this is a SSL capable server and port?\n")); + + server_cleanup (serv); + + if (prefs.autoreconnectonfail) + auto_reconnect (serv, FALSE, -1); + + return (0); /* remove it (0) */ + } + } + g_sess = NULL; + + if (SSL_is_init_finished (serv->ssl)) + { + struct cert_info cert_info; + struct chiper_info *chiper_info; + int verify_error; + int i; + + if (!_SSL_get_cert_info (&cert_info, serv->ssl)) + { + snprintf (buf, sizeof (buf), "* Certification info:"); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, + NULL, 0); + snprintf (buf, sizeof (buf), " Subject:"); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, + NULL, 0); + for (i = 0; cert_info.subject_word[i]; i++) + { + snprintf (buf, sizeof (buf), " %s", cert_info.subject_word[i]); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, + NULL, 0); + } + snprintf (buf, sizeof (buf), " Issuer:"); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, + NULL, 0); + for (i = 0; cert_info.issuer_word[i]; i++) + { + snprintf (buf, sizeof (buf), " %s", cert_info.issuer_word[i]); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, + NULL, 0); + } + snprintf (buf, sizeof (buf), " Public key algorithm: %s (%d bits)", + cert_info.algorithm, cert_info.algorithm_bits); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, + NULL, 0); + /*if (cert_info.rsa_tmp_bits) + { + snprintf (buf, sizeof (buf), + " Public key algorithm uses ephemeral key with %d bits", + cert_info.rsa_tmp_bits); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, + NULL, 0); + }*/ + snprintf (buf, sizeof (buf), " Sign algorithm %s", + cert_info.sign_algorithm/*, cert_info.sign_algorithm_bits*/); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, + NULL, 0); + snprintf (buf, sizeof (buf), " Valid since %s to %s", + cert_info.notbefore, cert_info.notafter); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, + NULL, 0); + } else + { + snprintf (buf, sizeof (buf), " * No Certificate"); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, + NULL, 0); + } + + chiper_info = _SSL_get_cipher_info (serv->ssl); /* static buffer */ + snprintf (buf, sizeof (buf), "* Cipher info:"); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, NULL, + 0); + snprintf (buf, sizeof (buf), " Version: %s, cipher %s (%u bits)", + chiper_info->version, chiper_info->chiper, + chiper_info->chiper_bits); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, NULL, + 0); + + verify_error = SSL_get_verify_result (serv->ssl); + switch (verify_error) + { + case X509_V_OK: + /* snprintf (buf, sizeof (buf), "* Verify OK (?)"); */ + /* EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, NULL, 0); */ + break; + case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY: + case X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE: + case X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT: + case X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN: + case X509_V_ERR_CERT_HAS_EXPIRED: + if (serv->accept_invalid_cert) + { + snprintf (buf, sizeof (buf), "* Verify E: %s.? (%d) -- Ignored", + X509_verify_cert_error_string (verify_error), + verify_error); + EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, + NULL, 0); + break; + } + default: + snprintf (buf, sizeof (buf), "%s.? (%d)", + X509_verify_cert_error_string (verify_error), + verify_error); + EMIT_SIGNAL (XP_TE_CONNFAIL, serv->server_session, buf, NULL, NULL, + NULL, 0); + + server_cleanup (serv); + + return (0); + } + + server_stopconnecting (serv); + + /* activate gtk poll */ + server_connected (serv); + + return (0); /* remove it (0) */ + } else + { + if (serv->ssl->session && serv->ssl->session->time + SSLTMOUT < time (NULL)) + { + snprintf (buf, sizeof (buf), "SSL handshake timed out"); + EMIT_SIGNAL (XP_TE_CONNFAIL, serv->server_session, buf, NULL, + NULL, NULL, 0); + server_cleanup (serv); /* ->connecting = FALSE */ + + if (prefs.autoreconnectonfail) + auto_reconnect (serv, FALSE, -1); + + return (0); /* remove it (0) */ + } + + return (1); /* call it more (1) */ + } +} +#endif + +static int +timeout_auto_reconnect (server *serv) +{ + if (is_server (serv)) /* make sure it hasnt been closed during the delay */ + { + serv->recondelay_tag = 0; + if (!serv->connected && !serv->connecting && serv->server_session) + { + server_connect (serv, serv->hostname, serv->port, FALSE); + } + } + return 0; /* returning 0 should remove the timeout handler */ +} + +static void +auto_reconnect (server *serv, int send_quit, int err) +{ + session *s; + GSList *list; + int del; + + if (serv->server_session == NULL) + return; + + list = sess_list; + while (list) /* make sure auto rejoin can work */ + { + s = list->data; + if (s->type == SESS_CHANNEL && s->channel[0]) + { + strcpy (s->waitchannel, s->channel); + strcpy (s->willjoinchannel, s->channel); + } + list = list->next; + } + + if (serv->connected) + server_disconnect (serv->server_session, send_quit, err); + + del = prefs.recon_delay * 1000; + if (del < 1000) + del = 500; /* so it doesn't block the gui */ + +#ifndef WIN32 + if (err == -1 || err == 0 || err == ECONNRESET || err == ETIMEDOUT) +#else + if (err == -1 || err == 0 || err == WSAECONNRESET || err == WSAETIMEDOUT) +#endif + serv->reconnect_away = serv->is_away; + + /* is this server in a reconnect delay? remove it! */ + if (serv->recondelay_tag) + { + fe_timeout_remove (serv->recondelay_tag); + serv->recondelay_tag = 0; + } + + serv->recondelay_tag = fe_timeout_add (del, timeout_auto_reconnect, serv); + fe_server_event (serv, FE_SE_RECONDELAY, del); +} + +static void +server_flush_queue (server *serv) +{ + list_free (&serv->outbound_queue); + serv->sendq_len = 0; + fe_set_throttle (serv); +} + +#ifdef WIN32 + +static int +waitline2 (GIOChannel *source, char *buf, int bufsize) +{ + int i = 0; + int len; + + while (1) + { + if (g_io_channel_read (source, &buf[i], 1, &len) != G_IO_ERROR_NONE) + return -1; + if (buf[i] == '\n' || bufsize == i + 1) + { + buf[i] = 0; + return i; + } + i++; + } +} + +#else + +#define waitline2(source,buf,size) waitline(serv->childread,buf,size,0) + +#endif + +/* connect() successed */ + +static void +server_connect_success (server *serv) +{ +#ifdef USE_OPENSSL +#define SSLDOCONNTMOUT 300 + if (serv->use_ssl) + { + char *err; + + /* it'll be a memory leak, if connection isn't terminated by + server_cleanup() */ + serv->ssl = _SSL_socket (ctx, serv->sok); + if ((err = _SSL_set_verify (ctx, ssl_cb_verify, NULL))) + { + EMIT_SIGNAL (XP_TE_CONNFAIL, serv->server_session, err, NULL, + NULL, NULL, 0); + server_cleanup (serv); /* ->connecting = FALSE */ + return; + } + /* FIXME: it'll be needed by new servers */ + /* send(serv->sok, "STLS\r\n", 6, 0); sleep(1); */ + set_nonblocking (serv->sok); + serv->ssl_do_connect_tag = fe_timeout_add (SSLDOCONNTMOUT, + ssl_do_connect, serv); + return; + } + + serv->ssl = NULL; +#endif + server_stopconnecting (serv); /* ->connecting = FALSE */ + /* activate glib poll */ + server_connected (serv); +} + +/* receive info from the child-process about connection progress */ + +static gboolean +server_read_child (GIOChannel *source, GIOCondition condition, server *serv) +{ + session *sess = serv->server_session; + char tbuf[128]; + char outbuf[512]; + char host[100]; + char ip[100]; + char *p; + + waitline2 (source, tbuf, sizeof tbuf); + + switch (tbuf[0]) + { + case '0': /* print some text */ + waitline2 (source, tbuf, sizeof tbuf); + PrintText (serv->server_session, tbuf); + break; + case '1': /* unknown host */ + server_stopconnecting (serv); + closesocket (serv->sok4); + if (serv->proxy_sok4 != -1) + closesocket (serv->proxy_sok4); +#ifdef USE_IPV6 + if (serv->sok6 != -1) + closesocket (serv->sok6); + if (serv->proxy_sok6 != -1) + closesocket (serv->proxy_sok6); +#endif + EMIT_SIGNAL (XP_TE_UKNHOST, sess, NULL, NULL, NULL, NULL, 0); + if (!servlist_cycle (serv)) + if (prefs.autoreconnectonfail) + auto_reconnect (serv, FALSE, -1); + break; + case '2': /* connection failed */ + waitline2 (source, tbuf, sizeof tbuf); + server_stopconnecting (serv); + closesocket (serv->sok4); + if (serv->proxy_sok4 != -1) + closesocket (serv->proxy_sok4); +#ifdef USE_IPV6 + if (serv->sok6 != -1) + closesocket (serv->sok6); + if (serv->proxy_sok6 != -1) + closesocket (serv->proxy_sok6); +#endif + EMIT_SIGNAL (XP_TE_CONNFAIL, sess, errorstring (atoi (tbuf)), NULL, + NULL, NULL, 0); + if (!servlist_cycle (serv)) + if (prefs.autoreconnectonfail) + auto_reconnect (serv, FALSE, -1); + break; + case '3': /* gethostbyname finished */ + waitline2 (source, host, sizeof host); + waitline2 (source, ip, sizeof ip); + waitline2 (source, outbuf, sizeof outbuf); + EMIT_SIGNAL (XP_TE_CONNECT, sess, host, ip, outbuf, NULL, 0); +#ifdef WIN32 + if (prefs.identd) + { + if (serv->network) + identd_start ((((ircnet *)serv->network)->user) ? + (((ircnet *)serv->network)->user) : + prefs.username); + else + identd_start (prefs.username); + } +#else + snprintf (outbuf, sizeof (outbuf), "%s/auth/xchat_auth", + g_get_home_dir ()); + if (access (outbuf, X_OK) == 0) + { + snprintf (outbuf, sizeof (outbuf), "exec -d %s/auth/xchat_auth %s", + g_get_home_dir (), prefs.username); + handle_command (serv->server_session, outbuf, FALSE); + } +#endif + break; + case '4': /* success */ + waitline2 (source, tbuf, sizeof (tbuf)); +#ifdef USE_MSPROXY + serv->sok = strtol (tbuf, &p, 10); + if (*p++ == ' ') + { + serv->proxy_sok = strtol (p, &p, 10); + serv->msp_state.clientid = strtol (++p, &p, 10); + serv->msp_state.serverid = strtol (++p, &p, 10); + serv->msp_state.seq_sent = atoi (++p); + } else + serv->proxy_sok = -1; +#ifdef DEBUG_MSPROXY + printf ("Parent got main socket: %d, proxy socket: %d\n", serv->sok, serv->proxy_sok); + printf ("Client ID 0x%08x server ID 0x%08x seq_sent %d\n", serv->msp_state.clientid, serv->msp_state.serverid, serv->msp_state.seq_sent); +#endif +#else + serv->sok = atoi (tbuf); +#endif +#ifdef USE_IPV6 + /* close the one we didn't end up using */ + if (serv->sok == serv->sok4) + closesocket (serv->sok6); + else + closesocket (serv->sok4); + if (serv->proxy_sok != -1) + { + if (serv->proxy_sok == serv->proxy_sok4) + closesocket (serv->proxy_sok6); + else + closesocket (serv->proxy_sok4); + } +#endif + server_connect_success (serv); + break; + case '5': /* prefs ip discovered */ + waitline2 (source, tbuf, sizeof tbuf); + prefs.local_ip = inet_addr (tbuf); + break; + case '7': /* gethostbyname (prefs.hostname) failed */ + sprintf (outbuf, + _("Cannot resolve hostname %s\nCheck your IP Settings!\n"), + prefs.hostname); + PrintText (sess, outbuf); + break; + case '8': + PrintText (sess, _("Proxy traversal failed.\n")); + server_disconnect (sess, FALSE, -1); + break; + case '9': + waitline2 (source, tbuf, sizeof tbuf); + EMIT_SIGNAL (XP_TE_SERVERLOOKUP, sess, tbuf, NULL, NULL, NULL, 0); + break; + } + + return TRUE; +} + +/* kill all sockets & iotags of a server. Stop a connection attempt, or + disconnect if already connected. */ + +static int +server_cleanup (server * serv) +{ + fe_set_lag (serv, 0.0); + + if (serv->iotag) + { + fe_input_remove (serv->iotag); + serv->iotag = 0; + } + + if (serv->joindelay_tag) + { + fe_timeout_remove (serv->joindelay_tag); + serv->joindelay_tag = 0; + } + +#ifdef USE_OPENSSL + if (serv->ssl) + { + _SSL_close (serv->ssl); + serv->ssl = NULL; + } +#endif + + if (serv->connecting) + { + server_stopconnecting (serv); + closesocket (serv->sok4); + if (serv->proxy_sok4 != -1) + closesocket (serv->proxy_sok4); + if (serv->sok6 != -1) + closesocket (serv->sok6); + if (serv->proxy_sok6 != -1) + closesocket (serv->proxy_sok6); + return 1; + } + + if (serv->connected) + { + close_socket (serv->sok); + if (serv->proxy_sok) + close_socket (serv->proxy_sok); + serv->connected = FALSE; + serv->end_of_motd = FALSE; + return 2; + } + + /* is this server in a reconnect delay? remove it! */ + if (serv->recondelay_tag) + { + fe_timeout_remove (serv->recondelay_tag); + serv->recondelay_tag = 0; + return 3; + } + + return 0; +} + +static void +server_disconnect (session * sess, int sendquit, int err) +{ + server *serv = sess->server; + GSList *list; + char tbuf[64]; + gboolean shutup = FALSE; + + /* send our QUIT reason */ + if (sendquit && serv->connected) + { + server_sendquit (sess); + } + + fe_server_event (serv, FE_SE_DISCONNECT, 0); + + /* close all sockets & io tags */ + switch (server_cleanup (serv)) + { + case 0: /* it wasn't even connected! */ + notc_msg (sess); + return; + case 1: /* it was in the process of connecting */ + sprintf (tbuf, "%d", sess->server->childpid); + EMIT_SIGNAL (XP_TE_STOPCONNECT, sess, tbuf, NULL, NULL, NULL, 0); + return; + case 3: + shutup = TRUE; /* won't print "disconnected" in channels */ + } + + server_flush_queue (serv); + + list = sess_list; + while (list) + { + sess = (struct session *) list->data; + if (sess->server == serv) + { + if (!shutup || sess->type == SESS_SERVER) + /* print "Disconnected" to each window using this server */ + EMIT_SIGNAL (XP_TE_DISCON, sess, errorstring (err), NULL, NULL, NULL, 0); + + if (!sess->channel[0] || sess->type == SESS_CHANNEL) + clear_channel (sess); + } + list = list->next; + } + + serv->pos = 0; + serv->motd_skipped = FALSE; + serv->no_login = FALSE; + serv->servername[0] = 0; + serv->lag_sent = 0; + + notify_cleanup (); +} + +/* send a "print text" command to the parent process - MUST END IN \n! */ + +static void +proxy_error (int fd, char *msg) +{ + write (fd, "0\n", 2); + write (fd, msg, strlen (msg)); +} + +struct sock_connect +{ + char version; + char type; + guint16 port; + guint32 address; + char username[10]; +}; + +/* traverse_socks() returns: + * 0 success * + * 1 socks traversal failed */ + +static int +traverse_socks (int print_fd, int sok, char *serverAddr, int port) +{ + struct sock_connect sc; + unsigned char buf[256]; + + sc.version = 4; + sc.type = 1; + sc.port = htons (port); + sc.address = inet_addr (serverAddr); + strncpy (sc.username, prefs.username, 9); + + send (sok, (char *) &sc, 8 + strlen (sc.username) + 1, 0); + buf[1] = 0; + recv (sok, buf, 10, 0); + if (buf[1] == 90) + return 0; + + snprintf (buf, sizeof (buf), "SOCKS\tServer reported error %d,%d.\n", buf[0], buf[1]); + proxy_error (print_fd, buf); + return 1; +} + +struct sock5_connect1 +{ + char version; + char nmethods; + char method; +}; + +static int +traverse_socks5 (int print_fd, int sok, char *serverAddr, int port) +{ + struct sock5_connect1 sc1; + unsigned char *sc2; + unsigned int packetlen, addrlen; + unsigned char buf[260]; + int auth = prefs.proxy_auth && prefs.proxy_user[0] && prefs.proxy_pass[0]; + + sc1.version = 5; + sc1.nmethods = 1; + if (auth) + sc1.method = 2; /* Username/Password Authentication (UPA) */ + else + sc1.method = 0; /* NO Authentication */ + send (sok, (char *) &sc1, 3, 0); + if (recv (sok, buf, 2, 0) != 2) + goto read_error; + + if (buf[0] != 5) + { + proxy_error (print_fd, "SOCKS\tServer is not socks version 5.\n"); + return 1; + } + + /* did the server say no auth required? */ + if (buf[1] == 0) + auth = 0; + + if (auth) + { + int len_u=0, len_p=0; + + /* authentication sub-negotiation (RFC1929) */ + if (buf[1] != 2) /* UPA not supported by server */ + { + proxy_error (print_fd, "SOCKS\tServer doesn't support UPA authentication.\n"); + return 1; + } + + memset (buf, 0, sizeof(buf)); + + /* form the UPA request */ + len_u = strlen (prefs.proxy_user); + len_p = strlen (prefs.proxy_pass); + buf[0] = 1; + buf[1] = len_u; + memcpy (buf + 2, prefs.proxy_user, len_u); + buf[2 + len_u] = len_p; + memcpy (buf + 3 + len_u, prefs.proxy_pass, len_p); + + send (sok, buf, 3 + len_u + len_p, 0); + if ( recv (sok, buf, 2, 0) != 2 ) + goto read_error; + if ( buf[1] != 0 ) + { + proxy_error (print_fd, "SOCKS\tAuthentication failed. " + "Is username and password correct?\n"); + return 1; /* UPA failed! */ + } + } + else + { + if (buf[1] != 0) + { + proxy_error (print_fd, "SOCKS\tAuthentication required but disabled in settings.\n"); + return 1; + } + } + + addrlen = strlen (serverAddr); + packetlen = 4 + 1 + addrlen + 2; + sc2 = malloc (packetlen); + sc2[0] = 5; /* version */ + sc2[1] = 1; /* command */ + sc2[2] = 0; /* reserved */ + sc2[3] = 3; /* address type */ + sc2[4] = (unsigned char) addrlen; /* hostname length */ + memcpy (sc2 + 5, serverAddr, addrlen); + *((unsigned short *) (sc2 + 5 + addrlen)) = htons (port); + send (sok, sc2, packetlen, 0); + free (sc2); + + /* consume all of the reply */ + if (recv (sok, buf, 4, 0) != 4) + goto read_error; + if (buf[0] != 5 || buf[1] != 0) + { + if (buf[1] == 2) + snprintf (buf, sizeof (buf), "SOCKS\tProxy refused to connect to host (not allowed).\n"); + else + snprintf (buf, sizeof (buf), "SOCKS\tProxy failed to connect to host (error %d).\n", buf[1]); + proxy_error (print_fd, buf); + return 1; + } + if (buf[3] == 1) /* IPV4 32bit address */ + { + if (recv (sok, buf, 6, 0) != 6) + goto read_error; + } else if (buf[3] == 4) /* IPV6 128bit address */ + { + if (recv (sok, buf, 18, 0) != 18) + goto read_error; + } else if (buf[3] == 3) /* string, 1st byte is size */ + { + if (recv (sok, buf, 1, 0) != 1) /* read the string size */ + goto read_error; + packetlen = buf[0] + 2; /* can't exceed 260 */ + if (recv (sok, buf, packetlen, 0) != packetlen) + goto read_error; + } + + return 0; /* success */ + +read_error: + proxy_error (print_fd, "SOCKS\tRead error from server.\n"); + return 1; +} + +static int +traverse_wingate (int print_fd, int sok, char *serverAddr, int port) +{ + char buf[128]; + + snprintf (buf, sizeof (buf), "%s %d\r\n", serverAddr, port); + send (sok, buf, strlen (buf), 0); + + return 0; +} + +/* stuff for HTTP auth is here */ + +static void +three_to_four (char *from, char *to) +{ + static const char tab64[64]= + { + 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P', + 'Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f', + 'g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v', + 'w','x','y','z','0','1','2','3','4','5','6','7','8','9','+','/' + }; + + to[0] = tab64 [ (from[0] >> 2) & 63 ]; + to[1] = tab64 [ ((from[0] << 4) | (from[1] >> 4)) & 63 ]; + to[2] = tab64 [ ((from[1] << 2) | (from[2] >> 6)) & 63 ]; + to[3] = tab64 [ from[2] & 63 ]; +}; + +void +base64_encode (char *to, char *from, unsigned int len) +{ + while (len >= 3) + { + three_to_four (from, to); + len -= 3; + from += 3; + to += 4; + } + if (len) + { + char three[3]={0,0,0}; + int i=0; + for (i=0;i<len;i++) + three[i] = *from++; + three_to_four (three, to); + if (len == 1) + to[2] = to[3] = '='; + else if (len == 2) + to[3] = '='; + to += 4; + }; + to[0] = 0; +} + +static int +http_read_line (int print_fd, int sok, char *buf, int len) +{ +#ifdef WIN32 + /* make sure waitline() uses recv() or it'll fail on win32 */ + len = waitline (sok, buf, len, FALSE); +#else + len = waitline (sok, buf, len, TRUE); +#endif + if (len >= 1) + { + /* print the message out (send it to the parent process) */ + write (print_fd, "0\n", 2); + + if (buf[len-1] == '\r') + { + buf[len-1] = '\n'; + write (print_fd, buf, len); + } else + { + write (print_fd, buf, len); + write (print_fd, "\n", 1); + } + } + + return len; +} + +static int +traverse_http (int print_fd, int sok, char *serverAddr, int port) +{ + char buf[512]; + char auth_data[256]; + char auth_data2[252]; + int n, n2; + + n = snprintf (buf, sizeof (buf), "CONNECT %s:%d HTTP/1.0\r\n", + serverAddr, port); + if (prefs.proxy_auth) + { + n2 = snprintf (auth_data2, sizeof (auth_data2), "%s:%s", + prefs.proxy_user, prefs.proxy_pass); + base64_encode (auth_data, auth_data2, n2); + n += snprintf (buf+n, sizeof (buf)-n, "Proxy-Authorization: Basic %s\r\n", auth_data); + } + n += snprintf (buf+n, sizeof (buf)-n, "\r\n"); + send (sok, buf, n, 0); + + n = http_read_line (print_fd, sok, buf, sizeof (buf)); + /* "HTTP/1.0 200 OK" */ + if (n < 12) + return 1; + if (memcmp (buf, "HTTP/", 5) || memcmp (buf + 9, "200", 3)) + return 1; + while (1) + { + /* read until blank line */ + n = http_read_line (print_fd, sok, buf, sizeof (buf)); + if (n < 1 || (n == 1 && buf[0] == '\n')) + break; + } + return 0; +} + +static int +traverse_proxy (int print_fd, int sok, char *ip, int port, struct msproxy_state_t *state, netstore *ns_proxy, int csok4, int csok6, int *csok, char bound) +{ + switch (prefs.proxy_type) + { + case 1: + return traverse_wingate (print_fd, sok, ip, port); + case 2: + return traverse_socks (print_fd, sok, ip, port); + case 3: + return traverse_socks5 (print_fd, sok, ip, port); + case 4: + return traverse_http (print_fd, sok, ip, port); +#ifdef USE_MSPROXY + case 5: + return traverse_msproxy (sok, ip, port, state, ns_proxy, csok4, csok6, csok, bound); +#endif + } + + return 1; +} + +/* this is the child process making the connection attempt */ + +static int +server_child (server * serv) +{ + netstore *ns_server; + netstore *ns_proxy = NULL; + netstore *ns_local; + int port = serv->port; + int error; + int sok, psok; + char *hostname = serv->hostname; + char *real_hostname = NULL; + char *ip; + char *proxy_ip = NULL; + char *local_ip; + int connect_port; + char buf[512]; + char bound = 0; + + ns_server = net_store_new (); + + /* is a hostname set? - bind to it */ + if (prefs.hostname[0]) + { + ns_local = net_store_new (); + local_ip = net_resolve (ns_local, prefs.hostname, 0, &real_hostname); + if (local_ip != NULL) + { + snprintf (buf, sizeof (buf), "5\n%s\n", local_ip); + write (serv->childwrite, buf, strlen (buf)); + net_bind (ns_local, serv->sok4, serv->sok6); + bound = 1; + } else + { + write (serv->childwrite, "7\n", 2); + } + net_store_destroy (ns_local); + } + + /* first resolve where we want to connect to */ + if (!serv->dont_use_proxy && /* blocked in serverlist? */ + prefs.proxy_host[0] && + prefs.proxy_type > 0 && + prefs.proxy_use != 2) /* proxy is NOT dcc-only */ + { + snprintf (buf, sizeof (buf), "9\n%s\n", prefs.proxy_host); + write (serv->childwrite, buf, strlen (buf)); + ip = net_resolve (ns_server, prefs.proxy_host, prefs.proxy_port, + &real_hostname); + if (!ip) + { + write (serv->childwrite, "1\n", 2); + goto xit; + } + connect_port = prefs.proxy_port; + + /* if using socks4 or MS Proxy, attempt to resolve ip for irc server */ + if ((prefs.proxy_type == 2) || (prefs.proxy_type == 5)) + { + ns_proxy = net_store_new (); + proxy_ip = net_resolve (ns_proxy, hostname, port, &real_hostname); + if (!proxy_ip) + { + write (serv->childwrite, "1\n", 2); + goto xit; + } + } else /* otherwise we can just use the hostname */ + proxy_ip = strdup (hostname); + } else + { + ip = net_resolve (ns_server, hostname, port, &real_hostname); + if (!ip) + { + write (serv->childwrite, "1\n", 2); + goto xit; + } + connect_port = port; + } + + snprintf (buf, sizeof (buf), "3\n%s\n%s\n%d\n", + real_hostname, ip, connect_port); + write (serv->childwrite, buf, strlen (buf)); + + if (!serv->dont_use_proxy && (prefs.proxy_type == 5)) + error = net_connect (ns_server, serv->proxy_sok4, serv->proxy_sok6, &psok); + else + { + error = net_connect (ns_server, serv->sok4, serv->sok6, &sok); + psok = sok; + } + + if (error != 0) + { + snprintf (buf, sizeof (buf), "2\n%d\n", sock_error ()); + write (serv->childwrite, buf, strlen (buf)); + } else + { + /* connect succeeded */ + if (proxy_ip) + { + switch (traverse_proxy (serv->childwrite, psok, proxy_ip, port, &serv->msp_state, ns_proxy, serv->sok4, serv->sok6, &sok, bound)) + { + case 0: /* success */ +#ifdef USE_MSPROXY + if (!serv->dont_use_proxy && (prefs.proxy_type == 5)) + snprintf (buf, sizeof (buf), "4\n%d %d %d %d %d\n", sok, psok, serv->msp_state.clientid, serv->msp_state.serverid, + serv->msp_state.seq_sent); + else +#endif + snprintf (buf, sizeof (buf), "4\n%d\n", sok); /* success */ + write (serv->childwrite, buf, strlen (buf)); + break; + case 1: /* socks traversal failed */ + write (serv->childwrite, "8\n", 2); + break; + } + } else + { + snprintf (buf, sizeof (buf), "4\n%d\n", sok); /* success */ + write (serv->childwrite, buf, strlen (buf)); + } + } + +xit: + +#if defined (USE_IPV6) || defined (WIN32) + /* this is probably not needed */ + net_store_destroy (ns_server); + if (ns_proxy) + net_store_destroy (ns_proxy); +#endif + + /* no need to free ip/real_hostname, this process is exiting */ +#ifdef WIN32 + /* under win32 we use a thread -> shared memory, must free! */ + if (proxy_ip) + free (proxy_ip); + if (ip) + free (ip); + if (real_hostname) + free (real_hostname); +#endif + + return 0; +} + +static void +server_connect (server *serv, char *hostname, int port, int no_login) +{ + int pid, read_des[2]; + session *sess = serv->server_session; + +#ifdef USE_OPENSSL + if (!ctx && serv->use_ssl) + { + if (!(ctx = _SSL_context_init (ssl_cb_info, FALSE))) + { + fprintf (stderr, "_SSL_context_init failed\n"); + exit (1); + } + } +#endif + + if (!hostname[0]) + return; + + if (port < 0) + { + /* use default port for this server type */ + port = 6667; +#ifdef USE_OPENSSL + if (serv->use_ssl) + port = 9999; +#endif + } + port &= 0xffff; /* wrap around */ + + if (serv->connected || serv->connecting || serv->recondelay_tag) + server_disconnect (sess, TRUE, -1); + + fe_progressbar_start (sess); + + EMIT_SIGNAL (XP_TE_SERVERLOOKUP, sess, hostname, NULL, NULL, NULL, 0); + + safe_strcpy (serv->servername, hostname, sizeof (serv->servername)); + /* overlap illegal in strncpy */ + if (hostname != serv->hostname) + safe_strcpy (serv->hostname, hostname, sizeof (serv->hostname)); + +#ifdef USE_OPENSSL + if (serv->use_ssl) + { + char cert_file[256]; + + /* first try network specific cert/key */ + snprintf (cert_file, sizeof (cert_file), "%s/%s.pem", + get_xdir_fs (), server_get_network (serv, TRUE)); + if (SSL_CTX_use_certificate_file (ctx, cert_file, SSL_FILETYPE_PEM) == 1) + SSL_CTX_use_PrivateKey_file (ctx, cert_file, SSL_FILETYPE_PEM); + else + { + /* if that doesn't exist, try ~/.xchat2/client.pem */ + snprintf (cert_file, sizeof (cert_file), "%s/%s.pem", + get_xdir_fs (), "client"); + if (SSL_CTX_use_certificate_file (ctx, cert_file, SSL_FILETYPE_PEM) == 1) + SSL_CTX_use_PrivateKey_file (ctx, cert_file, SSL_FILETYPE_PEM); + } + } +#endif + + server_set_defaults (serv); + serv->connecting = TRUE; + serv->port = port; + serv->no_login = no_login; + + fe_server_event (serv, FE_SE_CONNECTING, 0); + fe_set_away (serv); + server_flush_queue (serv); + +#ifdef WIN32 + if (_pipe (read_des, 4096, _O_BINARY) < 0) +#else + if (pipe (read_des) < 0) +#endif + return; +#ifdef __EMX__ /* os/2 */ + setmode (read_des[0], O_BINARY); + setmode (read_des[1], O_BINARY); +#endif + serv->childread = read_des[0]; + serv->childwrite = read_des[1]; + + /* create both sockets now, drop one later */ + net_sockets (&serv->sok4, &serv->sok6); +#ifdef USE_MSPROXY + /* In case of MS Proxy we have a separate UDP control connection */ + if (!serv->dont_use_proxy && (prefs.proxy_type == 5)) + udp_sockets (&serv->proxy_sok4, &serv->proxy_sok6); + else +#endif + { + serv->proxy_sok4 = -1; + serv->proxy_sok6 = -1; + } + +#ifdef WIN32 + CloseHandle (CreateThread (NULL, 0, + (LPTHREAD_START_ROUTINE)server_child, + serv, 0, (DWORD *)&pid)); +#else +#ifdef LOOKUPD + rand(); /* CL: net_resolve calls rand() when LOOKUPD is set, so prepare a different seed for each child. This method giver a bigger variation in seed values than calling srand(time(0)) in the child itself. */ +#endif + switch (pid = fork ()) + { + case -1: + return; + + case 0: + /* this is the child */ + setuid (getuid ()); + server_child (serv); + _exit (0); + } +#endif + serv->childpid = pid; + serv->iotag = fe_input_add (serv->childread, FIA_READ, server_read_child, + serv); +} + +void +server_fill_her_up (server *serv) +{ + serv->connect = server_connect; + serv->disconnect = server_disconnect; + serv->cleanup = server_cleanup; + serv->flush_queue = server_flush_queue; + serv->auto_reconnect = auto_reconnect; + + proto_fill_her_up (serv); +} + +void +server_set_encoding (server *serv, char *new_encoding) +{ + char *space; + + if (serv->encoding) + { + free (serv->encoding); + /* can be left as NULL to indicate system encoding */ + serv->encoding = NULL; + serv->using_cp1255 = FALSE; + serv->using_irc = FALSE; + } + + if (new_encoding) + { + serv->encoding = strdup (new_encoding); + /* the serverlist GUI might have added a space + and short description - remove it. */ + space = strchr (serv->encoding, ' '); + if (space) + space[0] = 0; + + /* server_inline() uses these flags */ + if (!strcasecmp (serv->encoding, "CP1255") || + !strcasecmp (serv->encoding, "WINDOWS-1255")) + serv->using_cp1255 = TRUE; + else if (!strcasecmp (serv->encoding, "IRC")) + serv->using_irc = TRUE; + } +} + +server * +server_new (void) +{ + static int id = 0; + server *serv; + + serv = malloc (sizeof (struct server)); + memset (serv, 0, sizeof (struct server)); + + /* use server.c and proto-irc.c functions */ + server_fill_her_up (serv); + + serv->id = id++; + serv->sok = -1; + strcpy (serv->nick, prefs.nick1); + server_set_defaults (serv); + + serv_list = g_slist_prepend (serv_list, serv); + + fe_new_server (serv); + + return serv; +} + +int +is_server (server *serv) +{ + return g_slist_find (serv_list, serv) ? 1 : 0; +} + +void +server_set_defaults (server *serv) +{ + if (serv->chantypes) + free (serv->chantypes); + if (serv->chanmodes) + free (serv->chanmodes); + if (serv->nick_prefixes) + free (serv->nick_prefixes); + if (serv->nick_modes) + free (serv->nick_modes); + + serv->chantypes = strdup ("#&!+"); + serv->chanmodes = strdup ("beI,k,l"); + serv->nick_prefixes = strdup ("@%+"); + serv->nick_modes = strdup ("ohv"); + + serv->nickcount = 1; + serv->nickservtype = 1; + serv->end_of_motd = FALSE; + serv->is_away = FALSE; + serv->supports_watch = FALSE; + serv->bad_prefix = FALSE; + serv->use_who = TRUE; + serv->have_namesx = FALSE; + serv->have_uhnames = FALSE; + serv->have_whox = FALSE; + serv->have_capab = FALSE; + serv->have_idmsg = FALSE; + serv->have_except = FALSE; +} + +char * +server_get_network (server *serv, gboolean fallback) +{ + if (serv->network) + return ((ircnet *)serv->network)->name; + + if (fallback) + return serv->servername; + + return NULL; +} + +void +server_set_name (server *serv, char *name) +{ + GSList *list = sess_list; + session *sess; + + if (name[0] == 0) + name = serv->hostname; + + /* strncpy parameters must NOT overlap */ + if (name != serv->servername) + { + safe_strcpy (serv->servername, name, sizeof (serv->servername)); + } + + while (list) + { + sess = (session *) list->data; + if (sess->server == serv) + fe_set_title (sess); + list = list->next; + } + + if (serv->server_session->type == SESS_SERVER) + { + if (serv->network) + { + safe_strcpy (serv->server_session->channel, ((ircnet *)serv->network)->name, CHANLEN); + } else + { + safe_strcpy (serv->server_session->channel, name, CHANLEN); + } + fe_set_channel (serv->server_session); + } +} + +struct away_msg * +server_away_find_message (server *serv, char *nick) +{ + struct away_msg *away; + GSList *list = away_list; + while (list) + { + away = (struct away_msg *) list->data; + if (away->server == serv && !serv->p_cmp (nick, away->nick)) + return away; + list = list->next; + } + return NULL; +} + +static void +server_away_free_messages (server *serv) +{ + GSList *list, *next; + struct away_msg *away; + + list = away_list; + while (list) + { + away = list->data; + next = list->next; + if (away->server == serv) + { + away_list = g_slist_remove (away_list, away); + if (away->message) + free (away->message); + free (away); + next = away_list; + } + list = next; + } +} + +void +server_away_save_message (server *serv, char *nick, char *msg) +{ + struct away_msg *away = server_away_find_message (serv, nick); + + if (away) /* Change message for known user */ + { + if (away->message) + free (away->message); + away->message = strdup (msg); + } else + /* Create brand new entry */ + { + away = malloc (sizeof (struct away_msg)); + if (away) + { + away->server = serv; + safe_strcpy (away->nick, nick, sizeof (away->nick)); + away->message = strdup (msg); + away_list = g_slist_prepend (away_list, away); + } + } +} + +void +server_free (server *serv) +{ + serv->cleanup (serv); + + serv_list = g_slist_remove (serv_list, serv); + + dcc_notify_kill (serv); + serv->flush_queue (serv); + server_away_free_messages (serv); + + free (serv->nick_modes); + free (serv->nick_prefixes); + free (serv->chanmodes); + free (serv->chantypes); + if (serv->bad_nick_prefixes) + free (serv->bad_nick_prefixes); + if (serv->last_away_reason) + free (serv->last_away_reason); + if (serv->encoding) + free (serv->encoding); + if (serv->autojoin) + free (serv->autojoin); + + fe_server_callback (serv); + + free (serv); + + notify_cleanup (); +} diff --git a/xchat-2.8.8/src/common/server.h b/xchat-2.8.8/src/common/server.h new file mode 100644 index 0000000..874d27b --- /dev/null +++ b/xchat-2.8.8/src/common/server.h @@ -0,0 +1,26 @@ +#ifndef XCHAT_SERVER_H +#define XCHAT_SERVER_H + +extern GSList *serv_list; + +/* eventually need to keep the tcp_* functions isolated to server.c */ +int tcp_send_len (server *serv, char *buf, int len); +int tcp_send (server *serv, char *buf); +void tcp_sendf (server *serv, char *fmt, ...); +int tcp_send_real (void *ssl, int sok, char *encoding, int using_irc, char *buf, int len); + +server *server_new (void); +int is_server (server *serv); +void server_fill_her_up (server *serv); +void server_set_encoding (server *serv, char *new_encoding); +void server_set_defaults (server *serv); +char *server_get_network (server *serv, gboolean fallback); +void server_set_name (server *serv, char *name); +void server_free (server *serv); + +void server_away_save_message (server *serv, char *nick, char *msg); +struct away_msg *server_away_find_message (server *serv, char *nick); + +void base64_encode (char *to, char *from, unsigned int len); + +#endif diff --git a/xchat-2.8.8/src/common/servlist.c b/xchat-2.8.8/src/common/servlist.c new file mode 100644 index 0000000..1728928 --- /dev/null +++ b/xchat-2.8.8/src/common/servlist.c @@ -0,0 +1,1308 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <unistd.h> + +#include "xchat.h" +#include <glib/ghash.h> + +#include "cfgfiles.h" +#include "fe.h" +#include "server.h" +#include "text.h" +#include "util.h" /* token_foreach */ +#include "xchatc.h" + +#include "servlist.h" + + +struct defaultserver +{ + char *network; + char *host; + char *channel; + char *charset; +}; + +static const struct defaultserver def[] = +{ + {"2600net", 0}, + {0, "irc.2600.net"}, + + {"7-indonesia", 0}, + {0, "irc.7-indonesia.org"}, + + {"AccessIRC", 0}, + {0, "irc.accessirc.net"}, + {0, "eu.accessirc.net"}, + + {"AfterNET", 0}, + {0, "irc.afternet.org"}, + {0, "us.afternet.org"}, + {0, "eu.afternet.org"}, + + {"Aitvaras", 0}, +#ifdef USE_IPV6 +#ifdef USE_OPENSSL + {0, "irc6.ktu.lt/+7668"}, +#endif + {0, "irc6.ktu.lt/7666"}, +#endif +#ifdef USE_OPENSSL + {0, "irc.data.lt/+6668"}, + {0, "irc-ssl.omnitel.net/+6668"}, + {0, "irc-ssl.le.lt/+9999"}, +#endif + {0, "irc.data.lt"}, + {0, "irc.omnitel.net"}, + {0, "irc.ktu.lt"}, + {0, "irc.le.lt"}, + {0, "irc.takas.lt"}, + {0, "irc.5ci.net"}, + {0, "irc.kis.lt"}, + + {"AmigaNet", 0}, + {0, "irc.amiganet.org"}, + {0, "us.amiganet.org"}, + {0, "uk.amiganet.org"}, +/* {0, "no.amiganet.org"}, + {0, "au.amiganet.org"},*/ + + {"ARCNet", 0}, + {0, "se1.arcnet.vapor.com"}, + {0, "us1.arcnet.vapor.com"}, + {0, "us2.arcnet.vapor.com"}, + {0, "us3.arcnet.vapor.com"}, + {0, "ca1.arcnet.vapor.com"}, + {0, "de1.arcnet.vapor.com"}, + {0, "de3.arcnet.vapor.com"}, + {0, "ch1.arcnet.vapor.com"}, + {0, "be1.arcnet.vapor.com"}, + {0, "nl3.arcnet.vapor.com"}, + {0, "uk1.arcnet.vapor.com"}, + {0, "uk2.arcnet.vapor.com"}, +/* {0, "uk3.arcnet.vapor.com"},*/ + {0, "fr1.arcnet.vapor.com"}, + + {"AstroLink", 0}, + {0, "irc.astrolink.org"}, + + {"AustNet", 0}, + {0, "au.austnet.org"}, + {0, "us.austnet.org"}, + {0, "ca.austnet.org"}, + +/* {"AxeNet", 0}, + {0, "irc.axenet.org"}, + {0, "angel.axenet.org"}, + {0, "energy.axenet.org"}, + {0, "python.axenet.org"},*/ + + {"AzzurraNet", 0}, + {0, "irc.azzurra.org"}, + {0, "crypto.azzurra.org"}, + + {"Beirut", 0}, + {0, "irc.beirut.com"}, + + {"ChattingAway", 0}, + {0, "irc.chattingaway.com"}, + + {"ChatJunkies", 0, "#xchat"}, + {0, "irc.chatjunkies.org"}, + {0, "nl.chatjunkies.org"}, + + {"ChatNet", 0}, + {0, "US.ChatNet.Org"}, + {0, "EU.ChatNet.Org"}, + + {"ChatSociety", 0}, + {0, "us.chatsociety.net"}, + {0, "eu.chatsociety.net"}, + + {"ChatSpike", 0}, + {0, "irc.chatspike.net"}, + + {"CoolChat", 0}, + {0, "irc.coolchat.net"}, +/* {0, "unix.coolchat.net"}, + {0, "toronto.coolchat.net"},*/ + + {"Criten", 0}, + {0, "irc.criten.net"}, + {0, "irc.eu.criten.net"}, + + {"DALnet", 0}, + {0, "irc.dal.net"}, + {0, "irc.eu.dal.net"}, + + {"Dark-Tou-Net", 0}, + {0, "irc.d-t-net.de"}, + {0, "bw.d-t-net.de"}, + {0, "nc.d-t-net.de"}, + {0, "wakka.d-t-net.de"}, + + {"DarkMyst", 0}, + {0, "irc.darkmyst.org"}, + + {"DeepIRC", 0}, + {0, "irc.deepirc.net"}, + + {"DeltaAnime", 0}, + {0, "irc.deltaanime.net"}, + + {"EFnet", 0}, + {0, "irc.blackened.com"}, + {0, "irc.Prison.NET"}, + {0, "irc.Qeast.net"}, + {0, "irc.efnet.pl"}, + {0, "efnet.demon.co.uk"}, +/* {0, "irc.lagged.org"},*/ + {0, "irc.lightning.net"}, + {0, "irc.mindspring.com"}, + {0, "irc.easynews.com"}, + {0, "irc.servercentral.net"}, + + {"EnterTheGame", 0}, + {0, "IRC.EnterTheGame.Com"}, + + {"EUIrc", 0}, + {0, "irc.euirc.net"}, + {0, "irc.ham.de.euirc.net"}, + {0, "irc.ber.de.euirc.net"}, + {0, "irc.ffm.de.euirc.net"}, + {0, "irc.bre.de.euirc.net"}, + {0, "irc.hes.de.euirc.net"}, + {0, "irc.vie.at.euirc.net"}, + {0, "irc.inn.at.euirc.net"}, + {0, "irc.bas.ch.euirc.net"}, + + {"EuropNet", 0}, + {0, "irc.europnet.org"}, + + {"EU-IRC", 0}, + {0, "irc.eu-irc.net"}, + + {"FDFNet", 0}, + {0, "irc.fdfnet.net"}, + {0, "irc.eu.fdfnet.net"}, + + {"FEFNet", 0}, + {0, "irc.fef.net"}, + {0, "irc.ggn.net"}, + {0, "irc.vendetta.com"}, + + {"FreeNode", 0}, + {0, "irc.freenode.net"}, + +/* {"Freeworld", 0}, + {0, "kabel.freeworld.nu"}, + {0, "irc.freeworld.nu"},*/ + + {"GalaxyNet", 0}, + {0, "irc.galaxynet.org"}, +/* {0, "sprynet.us.galaxynet.org"}, + {0, "atlanta.ga.us.galaxynet.org"},*/ + + {"GamesNET", 0}, + {0, "irc.gamesnet.net"}, +/* {0, "irc.us.gamesnet.net"}, + {0, "east.us.gamesnet.net"}, + {0, "west.us.gamesnet.net"},*/ + {0, "irc.ca.gamesnet.net"}, + {0, "irc.eu.gamesnet.net"}, + + {"GeekShed", 0}, + {0, "irc.geekshed.net"}, + + {"German-Elite", 0}, + {0, "dominion.german-elite.net"}, + {0, "komatu.german-elite.net"}, +/* {0, "liberty.german-elite.net"},*/ + + {"GimpNet", 0}, + {0, "irc.gimp.org"}, +/* {0, "irc.au.gimp.org"},*/ + {0, "irc.us.gimp.org"}, + + {"HabberNet", 0}, + {0, "irc.habber.net"}, + + {"Hashmark", 0}, + {0, "irc.hashmark.net"}, + + {"IdleMonkeys", 0}, + {0, "irc.idlemonkeys.net"}, + +/* {"Infinity-IRC", 0}, + {0, "Atlanta.GA.US.Infinity-IRC.Org"}, + {0, "Babylon.NY.US.Infinity-IRC.Org"}, + {0, "Sunshine.Ca.US.Infinity-IRC.Org"}, + {0, "IRC.Infinity-IRC.Org"},*/ + + {"iZ-smart.net", 0}, + {0, "irc.iZ-smart.net/6666"}, + {0, "irc.iZ-smart.net/6667"}, + {0, "irc.iZ-smart.net/6668"}, + + {"IrcLink", 0}, + {0, "irc.irclink.net"}, + {0, "Alesund.no.eu.irclink.net"}, + {0, "Oslo.no.eu.irclink.net"}, + {0, "frogn.no.eu.irclink.net"}, + {0, "tonsberg.no.eu.irclink.net"}, + + {"IRCNet", 0}, + {0, "irc.ircnet.com"}, + {0, "irc.stealth.net/6668"}, + {0, "ircnet.demon.co.uk"}, +/* {0, "ircnet.hinet.hr"},*/ + {0, "irc.datacomm.ch"}, +/* {0, "ircnet.kaptech.fr"}, + {0, "ircnet.easynet.co.uk"},*/ + {0, "random.ircd.de"}, + {0, "ircnet.netvision.net.il"}, +/* {0, "irc.seed.net.tw"},*/ + {0, "irc.cs.hut.fi"}, + + {"Irctoo.net", 0}, + {0, "irc.irctoo.net"}, + + {"Krstarica", 0}, + {0, "irc.krstarica.com"}, + + {"Librenet", 0}, + {0, "irc.librenet.net"}, + {0, "ielf.fr.librenet.net"}, + + {"LinkNet", 0}, + {0, "irc.link-net.org"}, + {0, "irc.no.link-net.org"}, +/* {0, "irc.gamesden.net.au"},*/ + {0, "irc.bahnhof.se"}, +/* {0, "irc.kinexuseurope.co.uk"}, + {0, "irc.gamiix.com"},*/ + + {"MagicStar", 0}, + {0, "irc.magicstar.net"}, + + {"Majistic", 0}, + {0, "irc.majistic.net"}, + + {"MindForge", 0}, + {0, "irc.mindforge.org"}, + + {"MintIRC", 0}, + {0, "irc.mintirc.net"}, + + {"MIXXnet", 0}, + {0, "irc.mixxnet.net"}, + + {"NeverNET", 0}, + {0, "irc.nevernet.net"}, + {0, "imagine.nevernet.net"}, + {0, "dimension.nevernet.net"}, + {0, "universe.nevernet.net"}, + {0, "wayland.nevernet.net"}, + {0, "forte.nevernet.net"}, + + {"NixHelpNet", 0}, + {0, "irc.nixhelp.org"}, + {0, "us.nixhelp.org"}, + {0, "uk.nixhelp.org"}, + {0, "uk2.nixhelp.org"}, + {0, "uk3.nixhelp.org"}, + {0, "nl.nixhelp.org"}, + {0, "ca.ld.nixhelp.org"}, + {0, "us.co.nixhelp.org"}, + {0, "us.ca.nixhelp.org"}, + {0, "us.pa.nixhelp.org"}, + + {"NullusNet", 0}, + {0, "irc.nullus.net"}, + + {"Oceanius", 0}, + {0, "irc.oceanius.com"}, + + {"OFTC", 0}, + {0, "irc.oftc.net"}, + + {"OtherNet", 0}, + {0, "irc.othernet.org"}, + + {"OzNet", 0}, + {0, "irc.oz.org"}, + + {"PTlink", 0}, + {0, "irc.PTlink.net"}, + {0, "aaia.PTlink.net"}, + + {"PTNet, ISP's", 0}, + {0, "irc.PTNet.org"}, + {0, "rccn.PTnet.org"}, + {0, "EUnet.PTnet.org"}, + {0, "madinfo.PTnet.org"}, + {0, "netc2.PTnet.org"}, + {0, "netc1.PTnet.org"}, + {0, "telepac1.ptnet.org"}, + {0, "esoterica.PTnet.org"}, + {0, "ip-hub.ptnet.org"}, + {0, "telepac1.ptnet.org"}, + {0, "nortenet.PTnet.org"}, + + {"PTNet, UNI", 0}, + {0, "irc.PTNet.org"}, + {0, "rccn.PTnet.org"}, + {0, "uevora.PTnet.org"}, + {0, "umoderna.PTnet.org"}, + {0, "ist.PTnet.org"}, + {0, "aaum.PTnet.org"}, + {0, "uc.PTnet.org"}, + {0, "ualg.ptnet.org"}, + {0, "madinfo.PTnet.org"}, +/* {0, "isep.PTnet.org"},*/ + {0, "ua.PTnet.org"}, + {0, "ipg.PTnet.org"}, + {0, "isec.PTnet.org"}, + {0, "utad.PTnet.org"}, + {0, "iscte.PTnet.org"}, + {0, "ubi.PTnet.org"}, + + {"QuakeNet", 0}, + {0, "irc.quakenet.org"}, + {0, "irc.se.quakenet.org"}, + {0, "irc.dk.quakenet.org"}, + {0, "irc.no.quakenet.org"}, + {0, "irc.fi.quakenet.org"}, + {0, "irc.be.quakenet.org"}, + {0, "irc.uk.quakenet.org"}, + {0, "irc.de.quakenet.org"}, + {0, "irc.it.quakenet.org"}, + + {"RebelChat", 0}, + {0, "irc.rebelchat.org"}, + +/* {"Recycled-IRC", 0}, + {0, "irc.recycled-irc.org"}, + {0, "vermin.recycled-irc.org"}, + {0, "waste.recycled-irc.org"}, + {0, "lumber.recycled-irc.org"}, + {0, "trash.recycled-irc.org"}, + {0, "unwashed.recycled-irc.org"}, + {0, "garbage.recycled-irc.org"}, + {0, "dustbin.recycled-irc.org"},*/ + + {"RizeNET", 0}, + {0, "irc.rizenet.org"}, + {0, "omega.rizenet.org"}, + {0, "evelance.rizenet.org"}, + {0, "lisa.rizenet.org"}, + {0, "scott.rizenet.org"}, + + {"Rizon", 0}, + {0, "irc.rizon.net"}, + + {"RusNet", 0, 0, "KOI8-R (Cyrillic)"}, + {0, "irc.tomsk.net"}, + {0, "irc.rinet.ru"}, + {0, "irc.run.net"}, + {0, "irc.ru"}, + {0, "irc.lucky.net"}, + + {"SceneNet", 0}, + {0, "irc.scene.org"}, + {0, "irc.eu.scene.org"}, + {0, "irc.us.scene.org"}, + + {"SeilEn.de", 0}, + {0, "irc.seilen.de"}, + + {"SlashNET", 0}, + {0, "irc.slashnet.org"}, + {0, "area51.slashnet.org"}, + {0, "moo.slashnet.org"}, + {0, "radon.slashnet.org"}, + + {"Sohbet.Net", 0}, + {0, "irc.sohbet.net"}, + + {"SolidIRC", 0}, + {0, "irc.solidirc.com"}, + + {"SorceryNet", 0}, + {0, "irc.sorcery.net/9000"}, + {0, "irc.us.sorcery.net/9000"}, + {0, "irc.eu.sorcery.net/9000"}, + + {"Spidernet", 0}, + {0, "us.spidernet.org"}, + {0, "eu.spidernet.org"}, + {0, "irc.spidernet.org"}, + + {"StarChat", 0}, + {0, "irc.starchat.net"}, + {0, "gainesville.starchat.net"}, + {0, "freebsd.starchat.net"}, + {0, "sunset.starchat.net"}, + {0, "revenge.starchat.net"}, + {0, "tahoma.starchat.net"}, + {0, "neo.starchat.net"}, + + {"TNI3", 0}, + {0, "irc.tni3.com"}, + + {"TURLINet", 0}, + {0, "irc.turli.net"}, + {0, "irc.servx.ru"}, + {0, "irc.gavnos.ru"}, + + {"UnderNet", 0}, + {0, "us.undernet.org"}, + {0, "eu.undernet.org"}, + + {"UniBG", 0}, + {0, "irc.lirex.com"}, + {0, "irc.naturella.com"}, + {0, "irc.spnet.net"}, + {0, "irc.techno-link.com"}, + {0, "irc.telecoms.bg"}, + {0, "irc.tu-varna.edu"}, + + {"Whiffle", 0}, + {0, "irc.whiffle.org"}, + + {"Worldnet", 0}, + {0, "irc.worldnet.net"}, + {0, "irc.fr.worldnet.net"}, + + {"Xentonix.net", 0}, + {0, "irc.xentonix.net"}, + + {"XWorld", 0}, + {0, "Buffalo.NY.US.XWorld.org"}, + {0, "Minneapolis.MN.US.Xworld.Org"}, + {0, "Rochester.NY.US.XWorld.org"}, + {0, "Bayern.DE.EU.XWorld.Org"}, + {0, "Chicago.IL.US.XWorld.Org"}, + + {0,0} +}; + +GSList *network_list = 0; + + +void +servlist_connect (session *sess, ircnet *net, gboolean join) +{ + ircserver *ircserv; + GSList *list; + char *port; + server *serv; + + if (!sess) + sess = new_ircwindow (NULL, NULL, SESS_SERVER, TRUE); + + serv = sess->server; + + /* connect to the currently selected Server-row */ + list = g_slist_nth (net->servlist, net->selected); + if (!list) + list = net->servlist; + if (!list) + return; + ircserv = list->data; + + /* incase a protocol switch is added to the servlist gui */ + server_fill_her_up (sess->server); + + if (join) + { + sess->willjoinchannel[0] = 0; + + if (net->autojoin) + { + if (serv->autojoin) + free (serv->autojoin); + serv->autojoin = strdup (net->autojoin); + } + } + + serv->password[0] = 0; + if (net->pass) + safe_strcpy (serv->password, net->pass, sizeof (serv->password)); + + if (net->flags & FLAG_USE_GLOBAL) + { + strcpy (serv->nick, prefs.nick1); + } else + { + if (net->nick) + strcpy (serv->nick, net->nick); + } + + serv->dont_use_proxy = (net->flags & FLAG_USE_PROXY) ? FALSE : TRUE; + +#ifdef USE_OPENSSL + serv->use_ssl = (net->flags & FLAG_USE_SSL) ? TRUE : FALSE; + serv->accept_invalid_cert = + (net->flags & FLAG_ALLOW_INVALID) ? TRUE : FALSE; +#endif + + serv->network = net; + + port = strrchr (ircserv->hostname, '/'); + if (port) + { + *port = 0; + + /* support "+port" to indicate SSL (like mIRC does) */ + if (port[1] == '+') + { +#ifdef USE_OPENSSL + serv->use_ssl = TRUE; +#endif + serv->connect (serv, ircserv->hostname, atoi (port + 2), FALSE); + } else + { + serv->connect (serv, ircserv->hostname, atoi (port + 1), FALSE); + } + + *port = '/'; + } else + serv->connect (serv, ircserv->hostname, -1, FALSE); + + server_set_encoding (serv, net->encoding); +} + +int +servlist_connect_by_netname (session *sess, char *network, gboolean join) +{ + ircnet *net; + GSList *list = network_list; + + while (list) + { + net = list->data; + + if (strcasecmp (net->name, network) == 0) + { + servlist_connect (sess, net, join); + return 1; + } + + list = list->next; + } + + return 0; +} + +int +servlist_have_auto (void) +{ + GSList *list = network_list; + ircnet *net; + + while (list) + { + net = list->data; + + if (net->flags & FLAG_AUTO_CONNECT) + return 1; + + list = list->next; + } + + return 0; +} + +int +servlist_auto_connect (session *sess) +{ + GSList *list = network_list; + ircnet *net; + int ret = 0; + + while (list) + { + net = list->data; + + if (net->flags & FLAG_AUTO_CONNECT) + { + servlist_connect (sess, net, TRUE); + ret = 1; + } + + list = list->next; + } + + return ret; +} + +static gint +servlist_cycle_cb (server *serv) +{ + if (serv->network) + { + PrintTextf (serv->server_session, + _("Cycling to next server in %s...\n"), ((ircnet *)serv->network)->name); + servlist_connect (serv->server_session, serv->network, TRUE); + } + + return 0; +} + +int +servlist_cycle (server *serv) +{ + ircnet *net; + int max, del; + + net = serv->network; + if (net) + { + max = g_slist_length (net->servlist); + if (max > 0) + { + /* try the next server, if that option is on */ + if (net->flags & FLAG_CYCLE) + { + net->selected++; + if (net->selected >= max) + net->selected = 0; + } + + del = prefs.recon_delay * 1000; + if (del < 1000) + del = 500; /* so it doesn't block the gui */ + + if (del) + serv->recondelay_tag = fe_timeout_add (del, servlist_cycle_cb, serv); + else + servlist_connect (serv->server_session, net, TRUE); + + return TRUE; + } + } + + return FALSE; +} + +ircserver * +servlist_server_find (ircnet *net, char *name, int *pos) +{ + GSList *list = net->servlist; + ircserver *serv; + int i = 0; + + while (list) + { + serv = list->data; + if (strcmp (serv->hostname, name) == 0) + { + if (pos) + *pos = i; + return serv; + } + i++; + list = list->next; + } + + return NULL; +} + +/* find a network (e.g. (ircnet *) to "FreeNode") from a hostname + (e.g. "irc.eu.freenode.net") */ + +ircnet * +servlist_net_find_from_server (char *server_name) +{ + GSList *list = network_list; + GSList *slist; + ircnet *net; + ircserver *serv; + + while (list) + { + net = list->data; + + slist = net->servlist; + while (slist) + { + serv = slist->data; + if (strcasecmp (serv->hostname, server_name) == 0) + return net; + slist = slist->next; + } + + list = list->next; + } + + return NULL; +} + +ircnet * +servlist_net_find (char *name, int *pos, int (*cmpfunc) (const char *, const char *)) +{ + GSList *list = network_list; + ircnet *net; + int i = 0; + + while (list) + { + net = list->data; + if (cmpfunc (net->name, name) == 0) + { + if (pos) + *pos = i; + return net; + } + i++; + list = list->next; + } + + return NULL; +} + +ircserver * +servlist_server_add (ircnet *net, char *name) +{ + ircserver *serv; + + serv = malloc (sizeof (ircserver)); + memset (serv, 0, sizeof (ircserver)); + serv->hostname = strdup (name); + + net->servlist = g_slist_append (net->servlist, serv); + + return serv; +} + +void +servlist_server_remove (ircnet *net, ircserver *serv) +{ + free (serv->hostname); + free (serv); + net->servlist = g_slist_remove (net->servlist, serv); +} + +static void +servlist_server_remove_all (ircnet *net) +{ + ircserver *serv; + + while (net->servlist) + { + serv = net->servlist->data; + servlist_server_remove (net, serv); + } +} + +static void +free_and_clear (char *str) +{ + if (str) + { + char *orig = str; + while (*str) + *str++ = 0; + free (orig); + } +} + +/* executed on exit: Clear any password strings */ + +void +servlist_cleanup (void) +{ + GSList *list; + ircnet *net; + + for (list = network_list; list; list = list->next) + { + net = list->data; + free_and_clear (net->pass); + free_and_clear (net->nickserv); + } +} + +void +servlist_net_remove (ircnet *net) +{ + GSList *list; + server *serv; + + servlist_server_remove_all (net); + network_list = g_slist_remove (network_list, net); + + if (net->nick) + free (net->nick); + if (net->nick2) + free (net->nick2); + if (net->user) + free (net->user); + if (net->real) + free (net->real); + free_and_clear (net->pass); + if (net->autojoin) + free (net->autojoin); + if (net->command) + free (net->command); + free_and_clear (net->nickserv); + if (net->comment) + free (net->comment); + if (net->encoding) + free (net->encoding); + free (net->name); + free (net); + + /* for safety */ + list = serv_list; + while (list) + { + serv = list->data; + if (serv->network == net) + serv->network = NULL; + list = list->next; + } +} + +ircnet * +servlist_net_add (char *name, char *comment, int prepend) +{ + ircnet *net; + + net = malloc (sizeof (ircnet)); + memset (net, 0, sizeof (ircnet)); + net->name = strdup (name); +/* net->comment = strdup (comment);*/ + net->flags = FLAG_CYCLE | FLAG_USE_GLOBAL | FLAG_USE_PROXY; + + if (prepend) + network_list = g_slist_prepend (network_list, net); + else + network_list = g_slist_append (network_list, net); + + return net; +} + +static void +servlist_load_defaults (void) +{ + int i = 0, j = 0; + ircnet *net = NULL; + + while (1) + { + if (def[i].network) + { + net = servlist_net_add (def[i].network, def[i].host, FALSE); + net->encoding = strdup ("IRC (Latin/Unicode Hybrid)"); + if (def[i].channel) + net->autojoin = strdup (def[i].channel); + if (def[i].charset) + { + free (net->encoding); + net->encoding = strdup (def[i].charset); + } + if (g_str_hash (def[i].network) == 0x8e1b96f7) + prefs.slist_select = j; + j++; + } else + { + servlist_server_add (net, def[i].host); + if (!def[i+1].host && !def[i+1].network) + break; + } + i++; + } +} + +static int +servlist_load (void) +{ + FILE *fp; + char buf[2048]; + int len; + char *tmp; + ircnet *net = NULL; + + fp = xchat_fopen_file ("servlist_.conf", "r", 0); + if (!fp) + return FALSE; + + while (fgets (buf, sizeof (buf) - 2, fp)) + { + len = strlen (buf); + buf[len] = 0; + buf[len-1] = 0; /* remove the trailing \n */ + if (net) + { + switch (buf[0]) + { + case 'I': + net->nick = strdup (buf + 2); + break; + case 'i': + net->nick2 = strdup (buf + 2); + break; + case 'U': + net->user = strdup (buf + 2); + break; + case 'R': + net->real = strdup (buf + 2); + break; + case 'P': + net->pass = strdup (buf + 2); + break; + case 'J': + net->autojoin = strdup (buf + 2); + break; + case 'C': + if (net->command) + { + /* concat extra commands with a \n separator */ + tmp = net->command; + net->command = malloc (strlen (tmp) + strlen (buf + 2) + 2); + strcpy (net->command, tmp); + strcat (net->command, "\n"); + strcat (net->command, buf + 2); + free (tmp); + } else + net->command = strdup (buf + 2); + break; + case 'F': + net->flags = atoi (buf + 2); + break; + case 'D': + net->selected = atoi (buf + 2); + break; + case 'E': + net->encoding = strdup (buf + 2); + break; + case 'S': /* new server/hostname for this network */ + servlist_server_add (net, buf + 2); + break; + case 'B': + net->nickserv = strdup (buf + 2); + break; + } + } + if (buf[0] == 'N') + net = servlist_net_add (buf + 2, /* comment */ NULL, FALSE); + } + fclose (fp); + + return TRUE; +} + +void +servlist_init (void) +{ + if (!network_list) + if (!servlist_load ()) + servlist_load_defaults (); +} + +/* check if a charset is known by Iconv */ +int +servlist_check_encoding (char *charset) +{ + GIConv gic; + char *c; + + c = strchr (charset, ' '); + if (c) + c[0] = 0; + + if (!strcasecmp (charset, "IRC")) /* special case */ + { + if (c) + c[0] = ' '; + return TRUE; + } + + gic = g_iconv_open (charset, "UTF-8"); + + if (c) + c[0] = ' '; + + if (gic != (GIConv)-1) + { + g_iconv_close (gic); + return TRUE; + } + + return FALSE; +} + +static int +servlist_write_ccmd (char *str, void *fp) +{ + return fprintf (fp, "C=%s\n", (str[0] == '/') ? str + 1 : str); +} + + +int +servlist_save (void) +{ + FILE *fp; + char buf[256]; + ircnet *net; + ircserver *serv; + GSList *list; + GSList *hlist; +#ifndef WIN32 + int first = FALSE; + + snprintf (buf, sizeof (buf), "%s/servlist_.conf", get_xdir_fs ()); + if (access (buf, F_OK) != 0) + first = TRUE; +#endif + + fp = xchat_fopen_file ("servlist_.conf", "w", 0); + if (!fp) + return FALSE; + +#ifndef WIN32 + if (first) + chmod (buf, 0600); +#endif + fprintf (fp, "v="PACKAGE_VERSION"\n\n"); + + list = network_list; + while (list) + { + net = list->data; + + fprintf (fp, "N=%s\n", net->name); + if (net->nick) + fprintf (fp, "I=%s\n", net->nick); + if (net->nick2) + fprintf (fp, "i=%s\n", net->nick2); + if (net->user) + fprintf (fp, "U=%s\n", net->user); + if (net->real) + fprintf (fp, "R=%s\n", net->real); + if (net->pass) + fprintf (fp, "P=%s\n", net->pass); + if (net->autojoin) + fprintf (fp, "J=%s\n", net->autojoin); + if (net->nickserv) + fprintf (fp, "B=%s\n", net->nickserv); + if (net->encoding && strcasecmp (net->encoding, "System") && + strcasecmp (net->encoding, "System default")) + { + fprintf (fp, "E=%s\n", net->encoding); + if (!servlist_check_encoding (net->encoding)) + { + snprintf (buf, sizeof (buf), _("Warning: \"%s\" character set is unknown. No conversion will be applied for network %s."), + net->encoding, net->name); + fe_message (buf, FE_MSG_WARN); + } + } + + if (net->command) + token_foreach (net->command, '\n', servlist_write_ccmd, fp); + + fprintf (fp, "F=%d\nD=%d\n", net->flags, net->selected); + + hlist = net->servlist; + while (hlist) + { + serv = hlist->data; + fprintf (fp, "S=%s\n", serv->hostname); + hlist = hlist->next; + } + + if (fprintf (fp, "\n") < 1) + { + fclose (fp); + return FALSE; + } + + list = list->next; + } + + fclose (fp); + return TRUE; +} + +static void +joinlist_free1 (GSList *list) +{ + GSList *head = list; + + for (; list; list = list->next) + g_free (list->data); + g_slist_free (head); +} + +void +joinlist_free (GSList *channels, GSList *keys) +{ + joinlist_free1 (channels); + joinlist_free1 (keys); +} + +gboolean +joinlist_is_in_list (server *serv, char *channel) +{ + GSList *channels, *keys; + GSList *list; + + if (!serv->network || !((ircnet *)serv->network)->autojoin) + return FALSE; + + joinlist_split (((ircnet *)serv->network)->autojoin, &channels, &keys); + + for (list = channels; list; list = list->next) + { + if (serv->p_cmp (list->data, channel) == 0) + return TRUE; + } + + joinlist_free (channels, keys); + + return FALSE; +} + +gchar * +joinlist_merge (GSList *channels, GSList *keys) +{ + GString *out = g_string_new (NULL); + GSList *list; + int i, j; + + for (; channels; channels = channels->next) + { + g_string_append (out, channels->data); + + if (channels->next) + g_string_append_c (out, ','); + } + + /* count number of REAL keys */ + for (i = 0, list = keys; list; list = list->next) + if (list->data) + i++; + + if (i > 0) + { + g_string_append_c (out, ' '); + + for (j = 0; keys; keys = keys->next) + { + if (keys->data) + { + g_string_append (out, keys->data); + j++; + if (j == i) + break; + } + + if (keys->next) + g_string_append_c (out, ','); + } + } + + return g_string_free (out, FALSE); +} + +void +joinlist_split (char *autojoin, GSList **channels, GSList **keys) +{ + char *parta, *partb; + char *chan, *key; + int len; + + *channels = NULL; + *keys = NULL; + + /* after the first space, the keys begin */ + parta = autojoin; + partb = strchr (autojoin, ' '); + if (partb) + partb++; + + while (1) + { + chan = parta; + key = partb; + + if (1) + { + while (parta[0] != 0 && parta[0] != ',' && parta[0] != ' ') + { + parta++; + } + } + + if (partb) + { + while (partb[0] != 0 && partb[0] != ',' && partb[0] != ' ') + { + partb++; + } + } + + len = parta - chan; + if (len < 1) + break; + *channels = g_slist_append (*channels, g_strndup (chan, len)); + + len = partb - key; + *keys = g_slist_append (*keys, len ? g_strndup (key, len) : NULL); + + if (parta[0] == ' ' || parta[0] == 0) + break; + parta++; + + if (partb) + { + if (partb[0] == 0 || partb[0] == ' ') + partb = NULL; /* no more keys, but maybe more channels? */ + else + partb++; + } + } + +#if 0 + GSList *lista, *listb; + int i; + + printf("-----\n"); + i = 0; + lista = *channels; + listb = *keys; + while (lista) + { + printf("%d. |%s| |%s|\n", i, lista->data, listb->data); + i++; + lista = lista->next; + listb = listb->next; + } + printf("-----\n\n"); +#endif +} + + diff --git a/xchat-2.8.8/src/common/servlist.h b/xchat-2.8.8/src/common/servlist.h new file mode 100644 index 0000000..cc4e6c4 --- /dev/null +++ b/xchat-2.8.8/src/common/servlist.h @@ -0,0 +1,62 @@ +#ifndef XCHAT_SERVLIST_H +#define XCHAT_SERVLIST_H + +typedef struct ircserver +{ + char *hostname; +} ircserver; + +typedef struct ircnet +{ + char *name; + char *nick; + char *nick2; + char *user; + char *real; + char *pass; + char *autojoin; + char *command; + char *nickserv; + char *comment; + char *encoding; + GSList *servlist; + int selected; + guint32 flags; +} ircnet; + +extern GSList *network_list; + +#define FLAG_CYCLE 1 +#define FLAG_USE_GLOBAL 2 +#define FLAG_USE_SSL 4 +#define FLAG_AUTO_CONNECT 8 +#define FLAG_USE_PROXY 16 +#define FLAG_ALLOW_INVALID 32 +#define FLAG_FAVORITE 64 /* only used by XChat-Aqua for now */ +#define FLAG_COUNT 7 + +void servlist_init (void); +int servlist_save (void); +int servlist_cycle (server *serv); +void servlist_connect (session *sess, ircnet *net, gboolean join); +int servlist_connect_by_netname (session *sess, char *network, gboolean join); +int servlist_auto_connect (session *sess); +int servlist_have_auto (void); +int servlist_check_encoding (char *charset); +void servlist_cleanup (void); + +ircnet *servlist_net_add (char *name, char *comment, int prepend); +void servlist_net_remove (ircnet *net); +ircnet *servlist_net_find (char *name, int *pos, int (*cmpfunc) (const char *, const char *)); +ircnet *servlist_net_find_from_server (char *server_name); + +void servlist_server_remove (ircnet *net, ircserver *serv); +ircserver *servlist_server_add (ircnet *net, char *name); +ircserver *servlist_server_find (ircnet *net, char *name, int *pos); + +void joinlist_split (char *autojoin, GSList **channels, GSList **keys); +gboolean joinlist_is_in_list (server *serv, char *channel); +void joinlist_free (GSList *channels, GSList *keys); +gchar *joinlist_merge (GSList *channels, GSList *keys); + +#endif diff --git a/xchat-2.8.8/src/common/ssl.c b/xchat-2.8.8/src/common/ssl.c new file mode 100644 index 0000000..a18ad47 --- /dev/null +++ b/xchat-2.8.8/src/common/ssl.c @@ -0,0 +1,323 @@ +/* + * ssl.c v0.0.3 + * Copyright (C) 2000 -- DaP <profeta@freemail.c3.hu> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <openssl/ssl.h> /* SSL_() */ +#include <openssl/err.h> /* ERR_() */ +#include <time.h> /* asctime() */ +#include <string.h> /* strncpy() */ +#include "ssl.h" /* struct cert_info */ +#include "inet.h" +#include "../../config.h" /* HAVE_SNPRINTF */ + +#ifndef HAVE_SNPRINTF +#define snprintf g_snprintf +#endif + +/* globals */ +static struct chiper_info chiper_info; /* static buffer for _SSL_get_cipher_info() */ +static char err_buf[256]; /* generic error buffer */ + + +/* +++++ Internal functions +++++ */ + +static void +__SSL_fill_err_buf (char *funcname) +{ + int err; + char buf[256]; + + + err = ERR_get_error (); + ERR_error_string (err, buf); + snprintf (err_buf, sizeof (err_buf), "%s: %s (%d)\n", funcname, buf, err); +} + + +static void +__SSL_critical_error (char *funcname) +{ + __SSL_fill_err_buf (funcname); + fprintf (stderr, "%s\n", err_buf); + + exit (1); +} + +/* +++++ SSL functions +++++ */ + +SSL_CTX * +_SSL_context_init (void (*info_cb_func), int server) +{ + SSL_CTX *ctx; +#ifdef WIN32 + int i, r; +#endif + + SSLeay_add_ssl_algorithms (); + SSL_load_error_strings (); + ctx = SSL_CTX_new (server ? SSLv3_server_method() : SSLv3_client_method ()); + + SSL_CTX_set_session_cache_mode (ctx, SSL_SESS_CACHE_BOTH); + SSL_CTX_set_timeout (ctx, 300); + + /* used in SSL_connect(), SSL_accept() */ + SSL_CTX_set_info_callback (ctx, info_cb_func); + +#ifdef WIN32 + /* under win32, OpenSSL needs to be seeded with some randomness */ + for (i = 0; i < 128; i++) + { + r = rand (); + RAND_seed ((unsigned char *)&r, sizeof (r)); + } +#endif + + return(ctx); +} + +static void +ASN1_TIME_snprintf (char *buf, int buf_len, ASN1_TIME * tm) +{ + char *expires = NULL; + BIO *inMem = BIO_new (BIO_s_mem ()); + + ASN1_TIME_print (inMem, tm); + BIO_get_mem_data (inMem, &expires); + buf[0] = 0; + if (expires != NULL) + { + memset (buf, 0, buf_len); + strncpy (buf, expires, 24); + } + BIO_free (inMem); +} + + +static void +broke_oneline (char *oneline, char *parray[]) +{ + char *pt, *ppt; + int i; + + + i = 0; + ppt = pt = oneline + 1; + while ((pt = strchr (pt, '/'))) + { + *pt = 0; + parray[i++] = ppt; + ppt = ++pt; + } + parray[i++] = ppt; + parray[i] = NULL; +} + + +/* + FIXME: Master-Key, Extensions, CA bits + (openssl x509 -text -in servcert.pem) +*/ +int +_SSL_get_cert_info (struct cert_info *cert_info, SSL * ssl) +{ + X509 *peer_cert; + EVP_PKEY *peer_pkey; + /* EVP_PKEY *ca_pkey; */ + /* EVP_PKEY *tmp_pkey; */ + char notBefore[64]; + char notAfter[64]; + int alg; + int sign_alg; + + + if (!(peer_cert = SSL_get_peer_certificate (ssl))) + return (1); /* FATAL? */ + + X509_NAME_oneline (X509_get_subject_name (peer_cert), cert_info->subject, + sizeof (cert_info->subject)); + X509_NAME_oneline (X509_get_issuer_name (peer_cert), cert_info->issuer, + sizeof (cert_info->issuer)); + broke_oneline (cert_info->subject, cert_info->subject_word); + broke_oneline (cert_info->issuer, cert_info->issuer_word); + + alg = OBJ_obj2nid (peer_cert->cert_info->key->algor->algorithm); + sign_alg = OBJ_obj2nid (peer_cert->sig_alg->algorithm); + ASN1_TIME_snprintf (notBefore, sizeof (notBefore), + X509_get_notBefore (peer_cert)); + ASN1_TIME_snprintf (notAfter, sizeof (notAfter), + X509_get_notAfter (peer_cert)); + + peer_pkey = X509_get_pubkey (peer_cert); + + strncpy (cert_info->algorithm, + (alg == NID_undef) ? "Unknown" : OBJ_nid2ln (alg), + sizeof (cert_info->algorithm)); + cert_info->algorithm_bits = EVP_PKEY_bits (peer_pkey); + strncpy (cert_info->sign_algorithm, + (sign_alg == NID_undef) ? "Unknown" : OBJ_nid2ln (sign_alg), + sizeof (cert_info->sign_algorithm)); + /* EVP_PKEY_bits(ca_pkey)); */ + cert_info->sign_algorithm_bits = 0; + strncpy (cert_info->notbefore, notBefore, sizeof (cert_info->notbefore)); + strncpy (cert_info->notafter, notAfter, sizeof (cert_info->notafter)); + + EVP_PKEY_free (peer_pkey); + + /* SSL_SESSION_print_fp(stdout, SSL_get_session(ssl)); */ +/* + if (ssl->session->sess_cert->peer_rsa_tmp) { + tmp_pkey = EVP_PKEY_new(); + EVP_PKEY_assign_RSA(tmp_pkey, ssl->session->sess_cert->peer_rsa_tmp); + cert_info->rsa_tmp_bits = EVP_PKEY_bits (tmp_pkey); + EVP_PKEY_free(tmp_pkey); + } else + fprintf(stderr, "REMOTE SIDE DOESN'T PROVIDES ->peer_rsa_tmp\n"); +*/ + cert_info->rsa_tmp_bits = 0; + + X509_free (peer_cert); + + return (0); +} + + +struct chiper_info * +_SSL_get_cipher_info (SSL * ssl) +{ + SSL_CIPHER *c; + + + c = SSL_get_current_cipher (ssl); + strncpy (chiper_info.version, SSL_CIPHER_get_version (c), + sizeof (chiper_info.version)); + strncpy (chiper_info.chiper, SSL_CIPHER_get_name (c), + sizeof (chiper_info.chiper)); + SSL_CIPHER_get_bits (c, &chiper_info.chiper_bits); + + return (&chiper_info); +} + + +int +_SSL_send (SSL * ssl, char *buf, int len) +{ + int num; + + + num = SSL_write (ssl, buf, len); + + switch (SSL_get_error (ssl, num)) + { + case SSL_ERROR_SSL: /* setup errno! */ + /* ??? */ + __SSL_fill_err_buf ("SSL_write"); + fprintf (stderr, "%s\n", err_buf); + break; + case SSL_ERROR_SYSCALL: + /* ??? */ + perror ("SSL_write/write"); + break; + case SSL_ERROR_ZERO_RETURN: + /* fprintf(stderr, "SSL closed on write\n"); */ + break; + } + + return (num); +} + + +int +_SSL_recv (SSL * ssl, char *buf, int len) +{ + int num; + + + num = SSL_read (ssl, buf, len); + + switch (SSL_get_error (ssl, num)) + { + case SSL_ERROR_SSL: + /* ??? */ + __SSL_fill_err_buf ("SSL_read"); + fprintf (stderr, "%s\n", err_buf); + break; + case SSL_ERROR_SYSCALL: + /* ??? */ + if (!would_block ()) + perror ("SSL_read/read"); + break; + case SSL_ERROR_ZERO_RETURN: + /* fprintf(stdeerr, "SSL closed on read\n"); */ + break; + } + + return (num); +} + + +SSL * +_SSL_socket (SSL_CTX *ctx, int sd) +{ + SSL *ssl; + + + if (!(ssl = SSL_new (ctx))) + /* FATAL */ + __SSL_critical_error ("SSL_new"); + + SSL_set_fd (ssl, sd); + if (ctx->method == SSLv3_client_method()) + SSL_set_connect_state (ssl); + else + SSL_set_accept_state(ssl); + + return (ssl); +} + + +char * +_SSL_set_verify (SSL_CTX *ctx, void *verify_callback, char *cacert) +{ + if (!SSL_CTX_set_default_verify_paths (ctx)) + { + __SSL_fill_err_buf ("SSL_CTX_set_default_verify_paths"); + return (err_buf); + } +/* + if (cacert) + { + if (!SSL_CTX_load_verify_locations (ctx, cacert, NULL)) + { + __SSL_fill_err_buf ("SSL_CTX_load_verify_locations"); + return (err_buf); + } + } +*/ + SSL_CTX_set_verify (ctx, SSL_VERIFY_PEER, verify_callback); + + return (NULL); +} + + +void +_SSL_close (SSL * ssl) +{ + SSL_set_shutdown (ssl, SSL_SENT_SHUTDOWN | SSL_RECEIVED_SHUTDOWN); + SSL_free (ssl); + ERR_remove_state (0); /* free state buffer */ +} diff --git a/xchat-2.8.8/src/common/ssl.h b/xchat-2.8.8/src/common/ssl.h new file mode 100644 index 0000000..26eb0f8 --- /dev/null +++ b/xchat-2.8.8/src/common/ssl.h @@ -0,0 +1,65 @@ +/* + ... +*/ + +struct cert_info { + char subject[256]; + char *subject_word[12]; + char issuer[256]; + char *issuer_word[12]; + char algorithm[32]; + int algorithm_bits; + char sign_algorithm[32]; + int sign_algorithm_bits; + char notbefore[32]; + char notafter[32]; + + int rsa_tmp_bits; +}; + +struct chiper_info { + char version[16]; + char chiper[24]; + int chiper_bits; +}; + +SSL_CTX *_SSL_context_init (void (*info_cb_func), int server); +#define _SSL_context_free(a) SSL_CTX_free(a); + +SSL *_SSL_socket (SSL_CTX *ctx, int sd); +char *_SSL_set_verify (SSL_CTX *ctx, void *(verify_callback), char *cacert); +/* + int SSL_connect(SSL *); + int SSL_accept(SSL *); + int SSL_get_fd(SSL *); +*/ +void _SSL_close (SSL * ssl); + +int _SSL_get_cert_info (struct cert_info *cert_info, SSL * ssl); +struct chiper_info *_SSL_get_cipher_info (SSL * ssl); + +/*char *_SSL_add_keypair (SSL_CTX *ctx, char *privkey, char *cert);*/ +/*void _SSL_add_random_keypair(SSL_CTX *ctx, int bits);*/ + +int _SSL_send (SSL * ssl, char *buf, int len); +int _SSL_recv (SSL * ssl, char *buf, int len); + +/* misc */ +/*void broke_oneline (char *oneline, char *parray[]);*/ + +/*char *_SSL_do_cipher_base64(char *buf, int buf_len, char *key, int operation);*/ /* must be freed */ + +/*void *_SSL_get_sess_obj(SSL *ssl, int type);*/ /* NOT must be freed */ +#define _SSL_get_sess_pkey(a) _SSL_get_sess_obj(a, 0) +#define _SSL_get_sess_prkey(a) _SSL_get_sess_obj(a, 1) +#define _SSL_get_sess_x509(a) _SSL_get_sess_obj(a, 2) +/*char *_SSL_get_obj_base64(void *s, int type);*/ /* must be freed */ +#define _SSL_get_pkey_base64(a) _SSL_get_obj_base64(a, 0) +#define _SSL_get_prkey_base64(a) _SSL_get_obj_base64(a, 1) +#define _SSL_get_x509_base64(a) _SSL_get_obj_base64(a, 2) +/*char *_SSL_get_ctx_obj_base64(SSL_CTX *ctx, int type);*/ /* must be freed */ +#define _SSL_get_ctx_pkey_base64(a) _SSL_get_ctx_obj_base64(a, 0) +#define _SSL_get_ctx_prkey_base64(a) _SSL_get_ctx_obj_base64(a, 1) +#define _SSL_get_ctx_x509_base64(a) _SSL_get_ctx_obj_base64(a, 2) + +/*int _SSL_verify_x509(X509 *x509);*/ diff --git a/xchat-2.8.8/src/common/text.c b/xchat-2.8.8/src/common/text.c new file mode 100644 index 0000000..a219851 --- /dev/null +++ b/xchat-2.8.8/src/common/text.c @@ -0,0 +1,2309 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <unistd.h> +#include <ctype.h> +#include <time.h> +#include <sys/types.h> +#include <fcntl.h> +#include <sys/stat.h> +#include <sys/mman.h> + +#include "xchat.h" +#include <glib/ghash.h> +#include "cfgfiles.h" +#include "chanopt.h" +#include "plugin.h" +#include "fe.h" +#include "server.h" +#include "util.h" +#include "outbound.h" +#include "xchatc.h" +#include "text.h" +#ifdef WIN32 +#include <windows.h> +#endif + +struct pevt_stage1 +{ + int len; + char *data; + struct pevt_stage1 *next; +}; + + +static void mkdir_p (char *dir); +static char *log_create_filename (char *channame); + + +static char * +scrollback_get_filename (session *sess, char *buf, int max) +{ + char *net, *chan; + + net = server_get_network (sess->server, FALSE); + if (!net) + return NULL; + + snprintf (buf, max, "%s/scrollback/%s/%s.txt", get_xdir_fs (), net, ""); + mkdir_p (buf); + + chan = log_create_filename (sess->channel); + snprintf (buf, max, "%s/scrollback/%s/%s.txt", get_xdir_fs (), net, chan); + free (chan); + + return buf; +} + +#if 0 + +static void +scrollback_unlock (session *sess) +{ + char buf[1024]; + + if (scrollback_get_filename (sess, buf, sizeof (buf) - 6) == NULL) + return; + + strcat (buf, ".lock"); + unlink (buf); +} + +static gboolean +scrollback_lock (session *sess) +{ + char buf[1024]; + int fh; + + if (scrollback_get_filename (sess, buf, sizeof (buf) - 6) == NULL) + return FALSE; + + strcat (buf, ".lock"); + + if (access (buf, F_OK) == 0) + return FALSE; /* can't get lock */ + + fh = open (buf, O_CREAT | O_TRUNC | O_APPEND | O_WRONLY, 0644); + if (fh == -1) + return FALSE; + + return TRUE; +} + +#endif + +void +scrollback_close (session *sess) +{ + if (sess->scrollfd != -1) + { + close (sess->scrollfd); + sess->scrollfd = -1; + } +} + +static char * +file_to_buffer (char *file, int *len) +{ + int fh; + char *buf; + struct stat st; + + fh = open (file, O_RDONLY | OFLAGS); + if (fh == -1) + return NULL; + + fstat (fh, &st); + + buf = malloc (st.st_size); + if (!buf) + { + close (fh); + return NULL; + } + + if (read (fh, buf, st.st_size) != st.st_size) + { + free (buf); + close (fh); + return NULL; + } + + *len = st.st_size; + close (fh); + return buf; +} + +/* shrink the file to roughly prefs.max_lines */ + +static void +scrollback_shrink (session *sess) +{ + char file[1024]; + char *buf; + int fh; + int lines; + int line; + int len; + char *p; + + scrollback_close (sess); + sess->scrollwritten = 0; + lines = 0; + + if (scrollback_get_filename (sess, file, sizeof (file)) == NULL) + return; + + buf = file_to_buffer (file, &len); + if (!buf) + return; + + /* count all lines */ + p = buf; + while (p != buf + len) + { + if (*p == '\n') + lines++; + p++; + } + + fh = open (file, O_CREAT | O_TRUNC | O_APPEND | O_WRONLY, 0644); + if (fh == -1) + { + free (buf); + return; + } + + line = 0; + p = buf; + while (p != buf + len) + { + if (*p == '\n') + { + line++; + if (line >= lines - prefs.max_lines && + p + 1 != buf + len) + { + p++; + write (fh, p, len - (p - buf)); + break; + } + } + p++; + } + + close (fh); + free (buf); +} + +static void +scrollback_save (session *sess, char *text) +{ + char buf[512 * 4]; + time_t stamp; + int len; + + if (sess->type == SESS_SERVER) + return; + + if (sess->text_scrollback == SET_DEFAULT) + { + if (!prefs.text_replay) + return; + } + else + { + if (sess->text_scrollback != SET_ON) + return; + } + + if (sess->scrollfd == -1) + { + if (scrollback_get_filename (sess, buf, sizeof (buf)) == NULL) + return; + + sess->scrollfd = open (buf, O_CREAT | O_APPEND | O_WRONLY, 0644); + if (sess->scrollfd == -1) + return; + } + + stamp = time (0); + if (sizeof (stamp) == 4) /* gcc will optimize one of these out */ + write (sess->scrollfd, buf, snprintf (buf, sizeof (buf), "T %d ", (int)stamp)); + else + write (sess->scrollfd, buf, snprintf (buf, sizeof (buf), "T %"G_GINT64_FORMAT" ", (gint64)stamp)); + + len = strlen (text); + write (sess->scrollfd, text, len); + if (len && text[len - 1] != '\n') + write (sess->scrollfd, "\n", 1); + + sess->scrollwritten++; + + if ((sess->scrollwritten * 2 > prefs.max_lines && prefs.max_lines > 0) || + sess->scrollwritten > 32000) + scrollback_shrink (sess); +} + +void +scrollback_load (session *sess) +{ + int fh; + char buf[512 * 4]; + char *text; + time_t stamp; + int lines; + char *map, *end_map; + struct stat statbuf; + const char *begin, *eol; + + if (sess->text_scrollback == SET_DEFAULT) + { + if (!prefs.text_replay) + return; + } + else + { + if (sess->text_scrollback != SET_ON) + return; + } + + if (scrollback_get_filename (sess, buf, sizeof (buf)) == NULL) + return; + + fh = open (buf, O_RDONLY | OFLAGS); + if (fh == -1) + return; + + if (fstat (fh, &statbuf) < 0) + return; + + map = mmap (NULL, statbuf.st_size, PROT_READ, MAP_PRIVATE, fh, 0); + if (map == MAP_FAILED) + return; + + end_map = map + statbuf.st_size; + + lines = 0; + begin = map; + while (begin < end_map) + { + int n_bytes; + + eol = memchr (begin, '\n', end_map - begin); + + if (!eol) + eol = end_map; + + n_bytes = MIN (eol - begin, sizeof (buf) - 1); + + strncpy (buf, begin, n_bytes); + + buf[n_bytes] = 0; + + if (buf[0] == 'T') + { + if (sizeof (time_t) == 4) + stamp = strtoul (buf + 2, NULL, 10); + else + stamp = strtoull (buf + 2, NULL, 10); /* just incase time_t is 64 bits */ + text = strchr (buf + 3, ' '); + if (text) + { + text = strip_color (text + 1, -1, STRIP_COLOR); + fe_print_text (sess, text, stamp); + g_free (text); + } + lines++; + } + + begin = eol + 1; + } + + sess->scrollwritten = lines; + + if (lines) + { + text = ctime (&stamp); + text[24] = 0; /* get rid of the \n */ + snprintf (buf, sizeof (buf), "\n*\t%s %s\n\n", _("Loaded log from"), text); + fe_print_text (sess, buf, 0); + /*EMIT_SIGNAL (XP_TE_GENMSG, sess, "*", buf, NULL, NULL, NULL, 0);*/ + } + + munmap (map, statbuf.st_size); + close (fh); +} + +void +log_close (session *sess) +{ + char obuf[512]; + time_t currenttime; + + if (sess->logfd != -1) + { + currenttime = time (NULL); + write (sess->logfd, obuf, + snprintf (obuf, sizeof (obuf) - 1, _("**** ENDING LOGGING AT %s\n"), + ctime (¤ttime))); + close (sess->logfd); + sess->logfd = -1; + } +} + +static void +mkdir_p (char *dir) /* like "mkdir -p" from a shell, FS encoding */ +{ + char *start = dir; + + /* the whole thing already exists? */ + if (access (dir, F_OK) == 0) + return; + + while (*dir) + { +#ifdef WIN32 + if (dir != start && (*dir == '/' || *dir == '\\')) +#else + if (dir != start && *dir == '/') +#endif + { + *dir = 0; +#ifdef WIN32 + mkdir (start); +#else + mkdir (start, S_IRUSR | S_IWUSR | S_IXUSR); +#endif + *dir = '/'; + } + dir++; + } +} + +static char * +log_create_filename (char *channame) +{ + char *tmp, *ret; + int mbl; + + ret = tmp = strdup (channame); + while (*tmp) + { + mbl = g_utf8_skip[((unsigned char *)tmp)[0]]; + if (mbl == 1) + { +#ifndef WIN32 + *tmp = rfc_tolower (*tmp); + if (*tmp == '/') +#else + /* win32 can't handle filenames with \|/><:"*? characters */ + if (*tmp == '\\' || *tmp == '|' || *tmp == '/' || + *tmp == '>' || *tmp == '<' || *tmp == ':' || + *tmp == '\"' || *tmp == '*' || *tmp == '?') +#endif + *tmp = '_'; + } + tmp += mbl; + } + + return ret; +} + +/* like strcpy, but % turns into %% */ + +static char * +log_escape_strcpy (char *dest, char *src, char *end) +{ + while (*src) + { + *dest = *src; + if (dest + 1 == end) + break; + dest++; + src++; + + if (*src == '%') + { + if (dest + 1 == end) + break; + dest[0] = '%'; + dest++; + } + } + + dest[0] = 0; + return dest - 1; +} + +/* substitutes %c %n %s into buffer */ + +static void +log_insert_vars (char *buf, int bufsize, char *fmt, char *c, char *n, char *s) +{ + char *end = buf + bufsize; + + while (1) + { + switch (fmt[0]) + { + case 0: + buf[0] = 0; + return; + + case '%': + fmt++; + switch (fmt[0]) + { + case 'c': + buf = log_escape_strcpy (buf, c, end); + break; + case 'n': + buf = log_escape_strcpy (buf, n, end); + break; + case 's': + buf = log_escape_strcpy (buf, s, end); + break; + default: + buf[0] = '%'; + buf++; + buf[0] = fmt[0]; + break; + } + break; + + default: + buf[0] = fmt[0]; + } + fmt++; + buf++; + /* doesn't fit? */ + if (buf == end) + { + buf[-1] = 0; + return; + } + } +} + +static char * +log_create_pathname (char *servname, char *channame, char *netname) +{ + char fname[384]; + char fnametime[384]; + char *fs; + struct tm *tm; + time_t now; + + if (!netname) + netname = "NETWORK"; + + /* first, everything is in UTF-8 */ + if (!rfc_casecmp (channame, servname)) + channame = strdup ("server"); + else + channame = log_create_filename (channame); + log_insert_vars (fname, sizeof (fname), prefs.logmask, channame, netname, servname); + free (channame); + + /* insert time/date */ + now = time (NULL); + tm = localtime (&now); + strftime (fnametime, sizeof (fnametime), fname, tm); + + /* create final path/filename */ +#ifdef WIN32 + if (fnametime[0] == '/' || (fnametime[0] >= 'A' && fnametime[1] == ':')) +#else + if (fnametime[0] == '/') /* is it fullpath already? */ +#endif + snprintf (fname, sizeof (fname), "%s", fnametime); + else + snprintf (fname, sizeof (fname), "%s/xchatlogs/%s", get_xdir_utf8 (), fnametime); + + /* now we need it in FileSystem encoding */ + fs = xchat_filename_from_utf8 (fname, -1, 0, 0, 0); + + /* create all the subdirectories */ + if (fs) + mkdir_p (fs); + + return fs; +} + +static int +log_open_file (char *servname, char *channame, char *netname) +{ + char buf[512]; + int fd; + char *file; + time_t currenttime; + + file = log_create_pathname (servname, channame, netname); + if (!file) + return -1; + +#ifdef WIN32 + fd = open (file, O_CREAT | O_APPEND | O_WRONLY, S_IREAD|S_IWRITE); +#else + fd = open (file, O_CREAT | O_APPEND | O_WRONLY, 0644); +#endif + g_free (file); + + if (fd == -1) + return -1; + currenttime = time (NULL); + write (fd, buf, + snprintf (buf, sizeof (buf), _("**** BEGIN LOGGING AT %s\n"), + ctime (¤ttime))); + + return fd; +} + +static void +log_open (session *sess) +{ + static gboolean log_error = FALSE; + + log_close (sess); + sess->logfd = log_open_file (sess->server->servername, sess->channel, + server_get_network (sess->server, FALSE)); + + if (!log_error && sess->logfd == -1) + { + char message[512]; + snprintf (message, sizeof (message), + _("* Can't open log file(s) for writing. Check the\n" \ + " permissions on %s/xchatlogs"), get_xdir_utf8 ()); + fe_message (message, FE_MSG_WAIT | FE_MSG_ERROR); + + log_error = TRUE; + } +} + +void +log_open_or_close (session *sess) +{ + if (sess->text_logging == SET_DEFAULT) + { + if (prefs.logging) + log_open (sess); + else + log_close (sess); + } + else + { + if (sess->text_logging) + log_open (sess); + else + log_close (sess); + } +} + +int +get_stamp_str (char *fmt, time_t tim, char **ret) +{ + char *loc = NULL; + char dest[128]; + gsize len; + + /* strftime wants the format string in LOCALE! */ + if (!prefs.utf8_locale) + { + const gchar *charset; + + g_get_charset (&charset); + loc = g_convert_with_fallback (fmt, -1, charset, "UTF-8", "?", 0, 0, 0); + if (loc) + fmt = loc; + } + + len = strftime (dest, sizeof (dest), fmt, localtime (&tim)); + if (len) + { + if (prefs.utf8_locale) + *ret = g_strdup (dest); + else + *ret = g_locale_to_utf8 (dest, len, 0, &len, 0); + } + + if (loc) + g_free (loc); + + return len; +} + +static void +log_write (session *sess, char *text) +{ + char *temp; + char *stamp; + char *file; + int len; + + if (sess->text_logging == SET_DEFAULT) + { + if (!prefs.logging) + return; + } + else + { + if (sess->text_logging != SET_ON) + return; + } + + if (sess->logfd == -1) + log_open (sess); + + /* change to a different log file? */ + file = log_create_pathname (sess->server->servername, sess->channel, + server_get_network (sess->server, FALSE)); + if (file) + { + if (access (file, F_OK) != 0) + { + close (sess->logfd); + sess->logfd = log_open_file (sess->server->servername, sess->channel, + server_get_network (sess->server, FALSE)); + } + g_free (file); + } + + if (prefs.timestamp_logs) + { + len = get_stamp_str (prefs.timestamp_log_format, time (0), &stamp); + if (len) + { + write (sess->logfd, stamp, len); + g_free (stamp); + } + } + temp = strip_color (text, -1, STRIP_ALL); + len = strlen (temp); + write (sess->logfd, temp, len); + /* lots of scripts/plugins print without a \n at the end */ + if (temp[len - 1] != '\n') + write (sess->logfd, "\n", 1); /* emulate what xtext would display */ + g_free (temp); +} + +/* converts a CP1252/ISO-8859-1(5) hybrid to UTF-8 */ +/* Features: 1. It never fails, all 00-FF chars are converted to valid UTF-8 */ +/* 2. Uses CP1252 in the range 80-9f because ISO doesn't have any- */ +/* thing useful in this range and it helps us receive from mIRC */ +/* 3. The five undefined chars in CP1252 80-9f are replaced with */ +/* ISO-8859-15 control codes. */ +/* 4. Handles 0xa4 as a Euro symbol ala ISO-8859-15. */ +/* 5. Uses ISO-8859-1 (which matches CP1252) for everything else. */ +/* 6. This routine measured 3x faster than g_convert :) */ + +static unsigned char * +iso_8859_1_to_utf8 (unsigned char *text, int len, gsize *bytes_written) +{ + unsigned int idx; + unsigned char *res, *output; + static const unsigned short lowtable[] = /* 74 byte table for 80-a4 */ + { + /* compressed utf-8 table: if the first byte's 0x20 bit is set, it + indicates a 2-byte utf-8 sequence, otherwise prepend a 0xe2. */ + 0x82ac, /* 80 Euro. CP1252 from here on... */ + 0xe281, /* 81 NA */ + 0x809a, /* 82 */ + 0xe692, /* 83 */ + 0x809e, /* 84 */ + 0x80a6, /* 85 */ + 0x80a0, /* 86 */ + 0x80a1, /* 87 */ + 0xeb86, /* 88 */ + 0x80b0, /* 89 */ + 0xe5a0, /* 8a */ + 0x80b9, /* 8b */ + 0xe592, /* 8c */ + 0xe28d, /* 8d NA */ + 0xe5bd, /* 8e */ + 0xe28f, /* 8f NA */ + 0xe290, /* 90 NA */ + 0x8098, /* 91 */ + 0x8099, /* 92 */ + 0x809c, /* 93 */ + 0x809d, /* 94 */ + 0x80a2, /* 95 */ + 0x8093, /* 96 */ + 0x8094, /* 97 */ + 0xeb9c, /* 98 */ + 0x84a2, /* 99 */ + 0xe5a1, /* 9a */ + 0x80ba, /* 9b */ + 0xe593, /* 9c */ + 0xe29d, /* 9d NA */ + 0xe5be, /* 9e */ + 0xe5b8, /* 9f */ + 0xe2a0, /* a0 */ + 0xe2a1, /* a1 */ + 0xe2a2, /* a2 */ + 0xe2a3, /* a3 */ + 0x82ac /* a4 ISO-8859-15 Euro. */ + }; + + if (len == -1) + len = strlen (text); + + /* worst case scenario: every byte turns into 3 bytes */ + res = output = g_malloc ((len * 3) + 1); + if (!output) + return NULL; + + while (len) + { + if (G_LIKELY (*text < 0x80)) + { + *output = *text; /* ascii maps directly */ + } + else if (*text <= 0xa4) /* 80-a4 use a lookup table */ + { + idx = *text - 0x80; + if (lowtable[idx] & 0x2000) + { + *output++ = (lowtable[idx] >> 8) & 0xdf; /* 2 byte utf-8 */ + *output = lowtable[idx] & 0xff; + } + else + { + *output++ = 0xe2; /* 3 byte utf-8 */ + *output++ = (lowtable[idx] >> 8) & 0xff; + *output = lowtable[idx] & 0xff; + } + } + else if (*text < 0xc0) + { + *output++ = 0xc2; + *output = *text; + } + else + { + *output++ = 0xc3; + *output = *text - 0x40; + } + output++; + text++; + len--; + } + *output = 0; /* terminate */ + *bytes_written = output - res; + + return res; +} + +char * +text_validate (char **text, int *len) +{ + char *utf; + gsize utf_len; + + /* valid utf8? */ + if (g_utf8_validate (*text, *len, 0)) + return NULL; + +#ifdef WIN32 + if (GetACP () == 1252) /* our routine is better than iconv's 1252 */ +#else + if (prefs.utf8_locale) +#endif + /* fallback to iso-8859-1 */ + utf = iso_8859_1_to_utf8 (*text, *len, &utf_len); + else + { + /* fallback to locale */ + utf = g_locale_to_utf8 (*text, *len, 0, &utf_len, NULL); + if (!utf) + utf = iso_8859_1_to_utf8 (*text, *len, &utf_len); + } + + if (!utf) + { + *text = g_strdup ("%INVALID%"); + *len = 9; + } else + { + *text = utf; + *len = utf_len; + } + + return utf; +} + +void +PrintText (session *sess, char *text) +{ + char *conv; + + if (!sess) + { + if (!sess_list) + return; + sess = (session *) sess_list->data; + } + + /* make sure it's valid utf8 */ + if (text[0] == 0) + { + text = "\n"; + conv = NULL; + } else + { + int len = -1; + conv = text_validate ((char **)&text, &len); + } + + log_write (sess, text); + scrollback_save (sess, text); + fe_print_text (sess, text, 0); + + if (conv) + g_free (conv); +} + +void +PrintTextf (session *sess, char *format, ...) +{ + va_list args; + char *buf; + + va_start (args, format); + buf = g_strdup_vprintf (format, args); + va_end (args); + + PrintText (sess, buf); + g_free (buf); +} + +/* Print Events stuff here --AGL */ + +/* Consider the following a NOTES file: + + The main upshot of this is: + * Plugins and Perl scripts (when I get round to signaling perl.c) can intercept text events and do what they like + * The default text engine can be config'ed + + By default it should appear *exactly* the same (I'm working hard not to change the default style) but if you go into Settings->Edit Event Texts you can change the text's. The format is thus: + + The normal %Cx (color) and %B (bold) etc work + + $x is replaced with the data in var x (e.g. $1 is often the nick) + + $axxx is replace with a single byte of value xxx (in base 10) + + AGL (990507) + */ + +/* These lists are thus: + pntevts_text[] are the strings the user sees (WITH %x etc) + pntevts[] are the data strings with \000 etc + */ + +/* To add a new event: + + Think up a name (like "Join") + Make up a pevt_name_help struct + Add an entry to textevents.in + Type: make textevents + */ + +/* Internals: + + On startup ~/.xchat/printevents.conf is loaded if it doesn't exist the + defaults are loaded. Any missing events are filled from defaults. + Each event is parsed by pevt_build_string and a binary output is produced + which looks like: + + (byte) value: 0 = { + (int) numbers of bytes + (char []) that number of byte to be memcpy'ed into the buffer + } + 1 = + (byte) number of varable to insert + 2 = end of buffer + + Each XP_TE_* signal is hard coded to call text_emit which calls + display_event which decodes the data + + This means that this system *should be faster* than snprintf because + it always 'knows' that format of the string (basically is preparses much + of the work) + + --AGL + */ + +char *pntevts_text[NUM_XP]; +char *pntevts[NUM_XP]; + +#define pevt_generic_none_help NULL + +static char * const pevt_genmsg_help[] = { + N_("Left message"), + N_("Right message"), +}; + +static char * const pevt_join_help[] = { + N_("The nick of the joining person"), + N_("The channel being joined"), + N_("The host of the person"), +}; + +static char * const pevt_chanaction_help[] = { + N_("Nickname"), + N_("The action"), + N_("Mode char"), + N_("Identified text"), +}; + +static char * const pevt_chanmsg_help[] = { + N_("Nickname"), + N_("The text"), + N_("Mode char"), + N_("Identified text"), +}; + +static char * const pevt_privmsg_help[] = { + N_("Nickname"), + N_("The message"), + N_("Identified text") +}; + +static char * const pevt_changenick_help[] = { + N_("Old nickname"), + N_("New nickname"), +}; + +static char * const pevt_newtopic_help[] = { + N_("Nick of person who changed the topic"), + N_("Topic"), + N_("Channel"), +}; + +static char * const pevt_topic_help[] = { + N_("Channel"), + N_("Topic"), +}; + +static char * const pevt_kick_help[] = { + N_("The nickname of the kicker"), + N_("The person being kicked"), + N_("The channel"), + N_("The reason"), +}; + +static char * const pevt_part_help[] = { + N_("The nick of the person leaving"), + N_("The host of the person"), + N_("The channel"), +}; + +static char * const pevt_chandate_help[] = { + N_("The channel"), + N_("The time"), +}; + +static char * const pevt_topicdate_help[] = { + N_("The channel"), + N_("The creator"), + N_("The time"), +}; + +static char * const pevt_quit_help[] = { + N_("Nick"), + N_("Reason"), + N_("Host"), +}; + +static char * const pevt_pingrep_help[] = { + N_("Who it's from"), + N_("The time in x.x format (see below)"), +}; + +static char * const pevt_notice_help[] = { + N_("Who it's from"), + N_("The message"), +}; + +static char * const pevt_channotice_help[] = { + N_("Who it's from"), + N_("The Channel it's going to"), + N_("The message"), +}; + +static char * const pevt_uchangenick_help[] = { + N_("Old nickname"), + N_("New nickname"), +}; + +static char * const pevt_ukick_help[] = { + N_("The person being kicked"), + N_("The channel"), + N_("The nickname of the kicker"), + N_("The reason"), +}; + +static char * const pevt_partreason_help[] = { + N_("The nick of the person leaving"), + N_("The host of the person"), + N_("The channel"), + N_("The reason"), +}; + +static char * const pevt_ctcpsnd_help[] = { + N_("The sound"), + N_("The nick of the person"), + N_("The channel"), +}; + +static char * const pevt_ctcpgen_help[] = { + N_("The CTCP event"), + N_("The nick of the person"), +}; + +static char * const pevt_ctcpgenc_help[] = { + N_("The CTCP event"), + N_("The nick of the person"), + N_("The Channel it's going to"), +}; + +static char * const pevt_chansetkey_help[] = { + N_("The nick of the person who set the key"), + N_("The key"), +}; + +static char * const pevt_chansetlimit_help[] = { + N_("The nick of the person who set the limit"), + N_("The limit"), +}; + +static char * const pevt_chanop_help[] = { + N_("The nick of the person who did the op'ing"), + N_("The nick of the person who has been op'ed"), +}; + +static char * const pevt_chanhop_help[] = { + N_("The nick of the person who has been halfop'ed"), + N_("The nick of the person who did the halfop'ing"), +}; + +static char * const pevt_chanvoice_help[] = { + N_("The nick of the person who did the voice'ing"), + N_("The nick of the person who has been voice'ed"), +}; + +static char * const pevt_chanban_help[] = { + N_("The nick of the person who did the banning"), + N_("The ban mask"), +}; + +static char * const pevt_chanrmkey_help[] = { + N_("The nick who removed the key"), +}; + +static char * const pevt_chanrmlimit_help[] = { + N_("The nick who removed the limit"), +}; + +static char * const pevt_chandeop_help[] = { + N_("The nick of the person of did the deop'ing"), + N_("The nick of the person who has been deop'ed"), +}; +static char * const pevt_chandehop_help[] = { + N_("The nick of the person of did the dehalfop'ing"), + N_("The nick of the person who has been dehalfop'ed"), +}; + +static char * const pevt_chandevoice_help[] = { + N_("The nick of the person of did the devoice'ing"), + N_("The nick of the person who has been devoice'ed"), +}; + +static char * const pevt_chanunban_help[] = { + N_("The nick of the person of did the unban'ing"), + N_("The ban mask"), +}; + +static char * const pevt_chanexempt_help[] = { + N_("The nick of the person who did the exempt"), + N_("The exempt mask"), +}; + +static char * const pevt_chanrmexempt_help[] = { + N_("The nick of the person removed the exempt"), + N_("The exempt mask"), +}; + +static char * const pevt_chaninvite_help[] = { + N_("The nick of the person who did the invite"), + N_("The invite mask"), +}; + +static char * const pevt_chanrminvite_help[] = { + N_("The nick of the person removed the invite"), + N_("The invite mask"), +}; + +static char * const pevt_chanmodegen_help[] = { + N_("The nick of the person setting the mode"), + N_("The mode's sign (+/-)"), + N_("The mode letter"), + N_("The channel it's being set on"), +}; + +static char * const pevt_whois1_help[] = { + N_("Nickname"), + N_("Username"), + N_("Host"), + N_("Full name"), +}; + +static char * const pevt_whois2_help[] = { + N_("Nickname"), + N_("Channel Membership/\"is an IRC operator\""), +}; + +static char * const pevt_whois3_help[] = { + N_("Nickname"), + N_("Server Information"), +}; + +static char * const pevt_whois4_help[] = { + N_("Nickname"), + N_("Idle time"), +}; + +static char * const pevt_whois4t_help[] = { + N_("Nickname"), + N_("Idle time"), + N_("Signon time"), +}; + +static char * const pevt_whois5_help[] = { + N_("Nickname"), + N_("Away reason"), +}; + +static char * const pevt_whois6_help[] = { + N_("Nickname"), +}; + +static char * const pevt_whoisid_help[] = { + N_("Nickname"), + N_("Message"), + "Numeric" +}; + +static char * const pevt_whoisauth_help[] = { + N_("Nickname"), + N_("Message"), + N_("Account"), +}; + +static char * const pevt_whoisrealhost_help[] = { + N_("Nickname"), + N_("Real user@host"), + N_("Real IP"), + N_("Message"), +}; + +static char * const pevt_generic_channel_help[] = { + N_("Channel Name"), +}; + +static char * const pevt_servertext_help[] = { + N_("Text"), + N_("Server Name"), + N_("Raw Numeric or Identifier") +}; + +static char * const pevt_sslmessage_help[] = { + N_("Text"), + N_("Server Name") +}; + +static char * const pevt_invited_help[] = { + N_("Channel Name"), + N_("Nick of person who invited you"), + N_("Server Name"), +}; + +static char * const pevt_usersonchan_help[] = { + N_("Channel Name"), + N_("Users"), +}; + +static char * const pevt_nickclash_help[] = { + N_("Nickname in use"), + N_("Nick being tried"), +}; + +static char * const pevt_connfail_help[] = { + N_("Error"), +}; + +static char * const pevt_connect_help[] = { + N_("Host"), + N_("IP"), + N_("Port"), +}; + +static char * const pevt_sconnect_help[] = { + "PID" +}; + +static char * const pevt_generic_nick_help[] = { + N_("Nickname"), + N_("Server Name"), + N_("Network") +}; + +static char * const pevt_chanmodes_help[] = { + N_("Channel Name"), + N_("Modes string"), +}; + +static char * const pevt_rawmodes_help[] = { + N_("Nickname"), + N_("Modes string"), +}; + +static char * const pevt_kill_help[] = { + N_("Nickname"), + N_("Reason"), +}; + +static char * const pevt_dccchaterr_help[] = { + N_("Nickname"), + N_("IP address"), + N_("Port"), + N_("Error"), +}; + +static char * const pevt_dccstall_help[] = { + N_("DCC Type"), + N_("Filename"), + N_("Nickname"), +}; + +static char * const pevt_generic_file_help[] = { + N_("Filename"), + N_("Error"), +}; + +static char * const pevt_dccrecverr_help[] = { + N_("Filename"), + N_("Destination filename"), + N_("Nickname"), + N_("Error"), +}; + +static char * const pevt_dccrecvcomp_help[] = { + N_("Filename"), + N_("Destination filename"), + N_("Nickname"), + N_("CPS"), +}; + +static char * const pevt_dccconfail_help[] = { + N_("DCC Type"), + N_("Nickname"), + N_("Error"), +}; + +static char * const pevt_dccchatcon_help[] = { + N_("Nickname"), + N_("IP address"), +}; + +static char * const pevt_dcccon_help[] = { + N_("Nickname"), + N_("IP address"), + N_("Filename"), +}; + +static char * const pevt_dccsendfail_help[] = { + N_("Filename"), + N_("Nickname"), + N_("Error"), +}; + +static char * const pevt_dccsendcomp_help[] = { + N_("Filename"), + N_("Nickname"), + N_("CPS"), +}; + +static char * const pevt_dccoffer_help[] = { + N_("Filename"), + N_("Nickname"), + N_("Pathname"), +}; + +static char * const pevt_dccfileabort_help[] = { + N_("Nickname"), + N_("Filename") +}; + +static char * const pevt_dccchatabort_help[] = { + N_("Nickname"), +}; + +static char * const pevt_dccresumeoffer_help[] = { + N_("Nickname"), + N_("Filename"), + N_("Position"), +}; + +static char * const pevt_dccsendoffer_help[] = { + N_("Nickname"), + N_("Filename"), + N_("Size"), + N_("IP address"), +}; + +static char * const pevt_dccgenericoffer_help[] = { + N_("DCC String"), + N_("Nickname"), +}; + +static char * const pevt_notifynumber_help[] = { + N_("Number of notify items"), +}; + +static char * const pevt_serverlookup_help[] = { + N_("Server Name"), +}; + +static char * const pevt_servererror_help[] = { + N_("Text"), +}; + +static char * const pevt_foundip_help[] = { + N_("IP"), +}; + +static char * const pevt_dccrename_help[] = { + N_("Old Filename"), + N_("New Filename"), +}; + +static char * const pevt_ctcpsend_help[] = { + N_("Receiver"), + N_("Message"), +}; + +static char * const pevt_ignoreaddremove_help[] = { + N_("Hostmask"), +}; + +static char * const pevt_resolvinguser_help[] = { + N_("Nickname"), + N_("Hostname"), +}; + +static char * const pevt_malformed_help[] = { + N_("Nickname"), + N_("The Packet"), +}; + +static char * const pevt_pingtimeout_help[] = { + N_("Seconds"), +}; + +static char * const pevt_uinvite_help[] = { + N_("Nick of person who have been invited"), + N_("Channel Name"), + N_("Server Name"), +}; + +static char * const pevt_banlist_help[] = { + N_("Channel"), + N_("Banmask"), + N_("Who set the ban"), + N_("Ban time"), +}; + +static char * const pevt_discon_help[] = { + N_("Error"), +}; + +#include "textevents.h" + +static void +pevent_load_defaults () +{ + int i; + + for (i = 0; i < NUM_XP; i++) + { + if (pntevts_text[i]) + free (pntevts_text[i]); + + /* make-te.c sets this 128 flag (DON'T call gettext() flag) */ + if (te[i].num_args & 128) + pntevts_text[i] = strdup (te[i].def); + else + pntevts_text[i] = strdup (_(te[i].def)); + } +} + +void +pevent_make_pntevts () +{ + int i, m; + char out[1024]; + + for (i = 0; i < NUM_XP; i++) + { + if (pntevts[i] != NULL) + free (pntevts[i]); + if (pevt_build_string (pntevts_text[i], &(pntevts[i]), &m) != 0) + { + snprintf (out, sizeof (out), + _("Error parsing event %s.\nLoading default."), te[i].name); + fe_message (out, FE_MSG_WARN); + free (pntevts_text[i]); + /* make-te.c sets this 128 flag (DON'T call gettext() flag) */ + if (te[i].num_args & 128) + pntevts_text[i] = strdup (te[i].def); + else + pntevts_text[i] = strdup (_(te[i].def)); + if (pevt_build_string (pntevts_text[i], &(pntevts[i]), &m) != 0) + { + fprintf (stderr, + "XChat CRITICAL *** default event text failed to build!\n"); + abort (); + } + } + } +} + +/* Loading happens at 2 levels: + 1) File is read into blocks + 2) Pe block is parsed and loaded + + --AGL */ + +/* Better hope you pass good args.. --AGL */ + +static void +pevent_trigger_load (int *i_penum, char **i_text, char **i_snd) +{ + int penum = *i_penum, len; + char *text = *i_text, *snd = *i_snd; + + if (penum != -1 && text != NULL) + { + len = strlen (text) + 1; + if (pntevts_text[penum]) + free (pntevts_text[penum]); + pntevts_text[penum] = malloc (len); + memcpy (pntevts_text[penum], text, len); + } + + if (text) + free (text); + if (snd) + free (snd); + *i_text = NULL; + *i_snd = NULL; + *i_penum = 0; +} + +static int +pevent_find (char *name, int *i_i) +{ + int i = *i_i, j; + + j = i + 1; + while (1) + { + if (j == NUM_XP) + j = 0; + if (strcmp (te[j].name, name) == 0) + { + *i_i = j; + return j; + } + if (j == i) + return -1; + j++; + } +} + +int +pevent_load (char *filename) +{ + /* AGL, I've changed this file and pevent_save, could you please take a look at + * the changes and possibly modify them to suit you + * //David H + */ + char *buf, *ibuf; + int fd, i = 0, pnt = 0; + struct stat st; + char *text = NULL, *snd = NULL; + int penum = 0; + char *ofs; + + if (filename == NULL) + fd = xchat_open_file ("pevents.conf", O_RDONLY, 0, 0); + else + fd = xchat_open_file (filename, O_RDONLY, 0, XOF_FULLPATH); + + if (fd == -1) + return 1; + if (fstat (fd, &st) != 0) + return 1; + ibuf = malloc (st.st_size); + read (fd, ibuf, st.st_size); + close (fd); + + while (buf_get_line (ibuf, &buf, &pnt, st.st_size)) + { + if (buf[0] == '#') + continue; + if (strlen (buf) == 0) + continue; + + ofs = strchr (buf, '='); + if (!ofs) + continue; + *ofs = 0; + ofs++; + /*if (*ofs == 0) + continue;*/ + + if (strcmp (buf, "event_name") == 0) + { + if (penum >= 0) + pevent_trigger_load (&penum, &text, &snd); + penum = pevent_find (ofs, &i); + continue; + } else if (strcmp (buf, "event_text") == 0) + { + if (text) + free (text); + +#if 0 + /* This allows updating of old strings. We don't use new defaults + if the user has customized the strings (.e.g a text theme). + Hash of the old default is enough to identify and replace it. + This only works in English. */ + + switch (g_str_hash (ofs)) + { + case 0x526743a4: + /* %C08,02 Hostmask PRIV NOTI CHAN CTCP INVI UNIG %O */ + text = strdup (te[XP_TE_IGNOREHEADER].def); + break; + + case 0xe91bc9c2: + /* %C08,02 %O */ + text = strdup (te[XP_TE_IGNOREFOOTER].def); + break; + + case 0x1fbfdf22: + /* -%C10-%C11-%O$tDCC RECV: Cannot open $1 for writing - aborting. */ + text = strdup (te[XP_TE_DCCFILEERR].def); + break; + + default: + text = strdup (ofs); + } +#else + text = strdup (ofs); +#endif + + continue; + }/* else if (strcmp (buf, "event_sound") == 0) + { + if (snd) + free (snd); + snd = strdup (ofs); + continue; + }*/ + + continue; + } + + pevent_trigger_load (&penum, &text, &snd); + free (ibuf); + return 0; +} + +static void +pevent_check_all_loaded () +{ + int i; + + for (i = 0; i < NUM_XP; i++) + { + if (pntevts_text[i] == NULL) + { + /*printf ("%s\n", te[i].name); + snprintf(out, sizeof(out), "The data for event %s failed to load. Reverting to defaults.\nThis may be because a new version of XChat is loading an old config file.\n\nCheck all print event texts are correct", evtnames[i]); + gtkutil_simpledialog(out); */ + /* make-te.c sets this 128 flag (DON'T call gettext() flag) */ + if (te[i].num_args & 128) + pntevts_text[i] = strdup (te[i].def); + else + pntevts_text[i] = strdup (_(te[i].def)); + } + } +} + +void +load_text_events () +{ + memset (&pntevts_text, 0, sizeof (char *) * (NUM_XP)); + memset (&pntevts, 0, sizeof (char *) * (NUM_XP)); + + if (pevent_load (NULL)) + pevent_load_defaults (); + pevent_check_all_loaded (); + pevent_make_pntevts (); +} + +/* + CL: format_event now handles filtering of arguments: + 1) if prefs.stripcolor is set, filter all style control codes from arguments + 2) always strip \010 (ATTR_HIDDEN) from arguments: it is only for use in the format string itself +*/ +#define ARG_FLAG(argn) (1 << (argn)) + +void +format_event (session *sess, int index, char **args, char *o, int sizeofo, unsigned int stripcolor_args) +{ + int len, oi, ii, numargs; + char *i, *ar, d, a, done_all = FALSE; + + i = pntevts[index]; + numargs = te[index].num_args & 0x7f; + + oi = ii = len = d = a = 0; + o[0] = 0; + + if (i == NULL) + return; + + while (done_all == FALSE) + { + d = i[ii++]; + switch (d) + { + case 0: + memcpy (&len, &(i[ii]), sizeof (int)); + ii += sizeof (int); + if (oi + len > sizeofo) + { + printf ("Overflow in display_event (%s)\n", i); + o[0] = 0; + return; + } + memcpy (&(o[oi]), &(i[ii]), len); + oi += len; + ii += len; + break; + case 1: + a = i[ii++]; + if (a > numargs) + { + fprintf (stderr, + "XChat DEBUG: display_event: arg > numargs (%d %d %s)\n", + a, numargs, i); + break; + } + ar = args[(int) a + 1]; + if (ar == NULL) + { + printf ("arg[%d] is NULL in print event\n", a + 1); + } else + { + if (stripcolor_args & ARG_FLAG(a + 1)) len = strip_color2 (ar, -1, &o[oi], STRIP_ALL); + else len = strip_hidden_attribute (ar, &o[oi]); + oi += len; + } + break; + case 2: + o[oi++] = '\n'; + o[oi++] = 0; + done_all = TRUE; + continue; + case 3: +/* if (sess->type == SESS_DIALOG) + { + if (prefs.dialog_indent_nicks) + o[oi++] = '\t'; + else + o[oi++] = ' '; + } else + {*/ + if (prefs.indent_nicks) + o[oi++] = '\t'; + else + o[oi++] = ' '; + /*}*/ + break; + } + } + o[oi] = 0; + if (*o == '\n') + o[0] = 0; +} + +static void +display_event (session *sess, int event, char **args, unsigned int stripcolor_args) +{ + char o[4096]; + format_event (sess, event, args, o, sizeof (o), stripcolor_args); + if (o[0]) + PrintText (sess, o); +} + +int +pevt_build_string (const char *input, char **output, int *max_arg) +{ + struct pevt_stage1 *s = NULL, *base = NULL, *last = NULL, *next; + int clen; + char o[4096], d, *obuf, *i; + int oi, ii, max = -1, len, x; + + len = strlen (input); + i = malloc (len + 1); + memcpy (i, input, len + 1); + check_special_chars (i, TRUE); + + len = strlen (i); + + clen = oi = ii = 0; + + for (;;) + { + if (ii == len) + break; + d = i[ii++]; + if (d != '$') + { + o[oi++] = d; + continue; + } + if (i[ii] == '$') + { + o[oi++] = '$'; + continue; + } + if (oi > 0) + { + s = (struct pevt_stage1 *) malloc (sizeof (struct pevt_stage1)); + if (base == NULL) + base = s; + if (last != NULL) + last->next = s; + last = s; + s->next = NULL; + s->data = malloc (oi + sizeof (int) + 1); + s->len = oi + sizeof (int) + 1; + clen += oi + sizeof (int) + 1; + s->data[0] = 0; + memcpy (&(s->data[1]), &oi, sizeof (int)); + memcpy (&(s->data[1 + sizeof (int)]), o, oi); + oi = 0; + } + if (ii == len) + { + fe_message ("String ends with a $", FE_MSG_WARN); + return 1; + } + d = i[ii++]; + if (d == 'a') + { /* Hex value */ + x = 0; + if (ii == len) + goto a_len_error; + d = i[ii++]; + d -= '0'; + x = d * 100; + if (ii == len) + goto a_len_error; + d = i[ii++]; + d -= '0'; + x += d * 10; + if (ii == len) + goto a_len_error; + d = i[ii++]; + d -= '0'; + x += d; + if (x > 255) + goto a_range_error; + o[oi++] = x; + continue; + + a_len_error: + fe_message ("String ends in $a", FE_MSG_WARN); + return 1; + a_range_error: + fe_message ("$a value is greater than 255", FE_MSG_WARN); + return 1; + } + if (d == 't') + { + /* Tab - if tabnicks is set then write '\t' else ' ' */ + s = (struct pevt_stage1 *) malloc (sizeof (struct pevt_stage1)); + if (base == NULL) + base = s; + if (last != NULL) + last->next = s; + last = s; + s->next = NULL; + s->data = malloc (1); + s->len = 1; + clen += 1; + s->data[0] = 3; + + continue; + } + if (d < '1' || d > '9') + { + snprintf (o, sizeof (o), "Error, invalid argument $%c\n", d); + fe_message (o, FE_MSG_WARN); + return 1; + } + d -= '0'; + if (max < d) + max = d; + s = (struct pevt_stage1 *) malloc (sizeof (struct pevt_stage1)); + if (base == NULL) + base = s; + if (last != NULL) + last->next = s; + last = s; + s->next = NULL; + s->data = malloc (2); + s->len = 2; + clen += 2; + s->data[0] = 1; + s->data[1] = d - 1; + } + if (oi > 0) + { + s = (struct pevt_stage1 *) malloc (sizeof (struct pevt_stage1)); + if (base == NULL) + base = s; + if (last != NULL) + last->next = s; + last = s; + s->next = NULL; + s->data = malloc (oi + sizeof (int) + 1); + s->len = oi + sizeof (int) + 1; + clen += oi + sizeof (int) + 1; + s->data[0] = 0; + memcpy (&(s->data[1]), &oi, sizeof (int)); + memcpy (&(s->data[1 + sizeof (int)]), o, oi); + oi = 0; + } + s = (struct pevt_stage1 *) malloc (sizeof (struct pevt_stage1)); + if (base == NULL) + base = s; + if (last != NULL) + last->next = s; + last = s; + s->next = NULL; + s->data = malloc (1); + s->len = 1; + clen += 1; + s->data[0] = 2; + + oi = 0; + s = base; + obuf = malloc (clen); + while (s) + { + next = s->next; + memcpy (&obuf[oi], s->data, s->len); + oi += s->len; + free (s->data); + free (s); + s = next; + } + + free (i); + + if (max_arg) + *max_arg = max; + if (output) + *output = obuf; + + return 0; +} + + +/* black n white(0/1) are bad colors for nicks, and we'll use color 2 for us */ +/* also light/dark gray (14/15) */ +/* 5,7,8 are all shades of yellow which happen to look dman near the same */ + +static char rcolors[] = { 19, 20, 22, 24, 25, 26, 27, 28, 29 }; + +static int +color_of (char *name) +{ + int i = 0, sum = 0; + + while (name[i]) + sum += name[i++]; + sum %= sizeof (rcolors) / sizeof (char); + return rcolors[sum]; +} + + +/* called by EMIT_SIGNAL macro */ + +void +text_emit (int index, session *sess, char *a, char *b, char *c, char *d) +{ + char *word[PDIWORDS]; + int i; + unsigned int stripcolor_args = (prefs.stripcolor ? 0xFFFFFFFF : 0); + char tbuf[NICKLEN + 4]; + + if (prefs.colorednicks && (index == XP_TE_CHANACTION || index == XP_TE_CHANMSG)) + { + snprintf (tbuf, sizeof (tbuf), "\003%d%s", color_of (a), a); + a = tbuf; + stripcolor_args &= ~ARG_FLAG(1); /* don't strip color from this argument */ + } + + word[0] = te[index].name; + word[1] = (a ? a : "\000"); + word[2] = (b ? b : "\000"); + word[3] = (c ? c : "\000"); + word[4] = (d ? d : "\000"); + for (i = 5; i < PDIWORDS; i++) + word[i] = "\000"; + + if (plugin_emit_print (sess, word)) + return; + + /* If a plugin's callback executes "/close", 'sess' may be invalid */ + if (!is_session (sess)) + return; + + switch (index) + { + case XP_TE_JOIN: + case XP_TE_PART: + case XP_TE_PARTREASON: + case XP_TE_QUIT: + /* implement ConfMode / Hide Join and Part Messages */ + if (chanopt_is_set (prefs.confmode, sess->text_hidejoinpart)) + return; + break; + + /* ===Private message=== */ + case XP_TE_PRIVMSG: + case XP_TE_DPRIVMSG: + case XP_TE_PRIVACTION: + case XP_TE_DPRIVACTION: + if (chanopt_is_set_a (prefs.input_beep_priv, sess->alert_beep)) + sound_beep (sess); + if (chanopt_is_set_a (prefs.input_flash_priv, sess->alert_taskbar)) + fe_flash_window (sess); + /* why is this one different? because of plugin-tray.c's hooks! ugly */ + if (sess->alert_tray == SET_ON) + fe_tray_set_icon (FE_ICON_MESSAGE); + break; + + /* ===Highlighted message=== */ + case XP_TE_HCHANACTION: + case XP_TE_HCHANMSG: + if (chanopt_is_set_a (prefs.input_beep_hilight, sess->alert_beep)) + sound_beep (sess); + if (chanopt_is_set_a (prefs.input_flash_hilight, sess->alert_taskbar)) + fe_flash_window (sess); + if (sess->alert_tray == SET_ON) + fe_tray_set_icon (FE_ICON_MESSAGE); + break; + + /* ===Channel message=== */ + case XP_TE_CHANACTION: + case XP_TE_CHANMSG: + if (chanopt_is_set_a (prefs.input_beep_chans, sess->alert_beep)) + sound_beep (sess); + if (chanopt_is_set_a (prefs.input_flash_chans, sess->alert_taskbar)) + fe_flash_window (sess); + if (sess->alert_tray == SET_ON) + fe_tray_set_icon (FE_ICON_MESSAGE); + break; + } + + sound_play_event (index); + display_event (sess, index, word, stripcolor_args); +} + +char * +text_find_format_string (char *name) +{ + int i = 0; + + i = pevent_find (name, &i); + if (i >= 0) + return pntevts_text[i]; + + return NULL; +} + +int +text_emit_by_name (char *name, session *sess, char *a, char *b, char *c, char *d) +{ + int i = 0; + + i = pevent_find (name, &i); + if (i >= 0) + { + text_emit (i, sess, a, b, c, d); + return 1; + } + + return 0; +} + +void +pevent_save (char *fn) +{ + int fd, i; + char buf[1024]; + + if (!fn) + fd = xchat_open_file ("pevents.conf", O_CREAT | O_TRUNC | O_WRONLY, + 0x180, XOF_DOMODE); + else + fd = xchat_open_file (fn, O_CREAT | O_TRUNC | O_WRONLY, 0x180, + XOF_FULLPATH | XOF_DOMODE); + if (fd == -1) + { + /* + fe_message ("Error opening config file\n", FALSE); + If we get here when X-Chat is closing the fe-message causes a nice & hard crash + so we have to use perror which doesn't rely on GTK + */ + + perror ("Error opening config file\n"); + return; + } + + for (i = 0; i < NUM_XP; i++) + { + write (fd, buf, snprintf (buf, sizeof (buf), + "event_name=%s\n", te[i].name)); + write (fd, buf, snprintf (buf, sizeof (buf), + "event_text=%s\n\n", pntevts_text[i])); + } + + close (fd); +} + +/* =========================== */ +/* ========== SOUND ========== */ +/* =========================== */ + +char *sound_files[NUM_XP]; + +void +sound_beep (session *sess) +{ + if (sound_files[XP_TE_BEEP] && sound_files[XP_TE_BEEP][0]) + /* user defined beep _file_ */ + sound_play_event (XP_TE_BEEP); + else + /* system beep */ + fe_beep (); +} + +static char * +sound_find_command (void) +{ + /* some sensible unix players. You're bound to have one of them */ + static const char * const progs[] = {"aplay", "esdplay", "soxplay", "artsplay", NULL}; + char *cmd; + int i = 0; + + if (prefs.soundcmd[0]) + return g_strdup (prefs.soundcmd); + + while (progs[i]) + { + cmd = g_find_program_in_path (progs[i]); + if (cmd) + return cmd; + i++; + } + + return NULL; +} + +void +sound_play (const char *file, gboolean quiet) +{ + char buf[512]; + char wavfile[512]; + char *file_fs; + char *cmd; + + /* the pevents GUI editor triggers this after removing a soundfile */ + if (!file[0]) + return; + +#ifdef WIN32 + /* check for fullpath, windows style */ + if (strlen (file) > 3 && + file[1] == ':' && (file[2] == '\\' || file[2] == '/') ) + { + strncpy (wavfile, file, sizeof (wavfile)); + } else +#endif + if (file[0] != '/') + { + snprintf (wavfile, sizeof (wavfile), "%s/%s", prefs.sounddir, file); + } else + { + strncpy (wavfile, file, sizeof (wavfile)); + } + wavfile[sizeof (wavfile) - 1] = 0; /* ensure termination */ + + file_fs = xchat_filename_from_utf8 (wavfile, -1, 0, 0, 0); + if (!file_fs) + return; + + if (access (file_fs, R_OK) == 0) + { + cmd = sound_find_command (); + +#ifdef WIN32 + if (cmd == NULL || strcmp (cmd, "esdplay") == 0) + { + PlaySound (file_fs, NULL, SND_NODEFAULT|SND_FILENAME|SND_ASYNC); + } else +#endif + { + if (cmd) + { + if (strchr (file_fs, ' ')) + snprintf (buf, sizeof (buf), "%s \"%s\"", cmd, file_fs); + else + snprintf (buf, sizeof (buf), "%s %s", cmd, file_fs); + buf[sizeof (buf) - 1] = '\0'; + xchat_exec (buf); + } + } + + if (cmd) + g_free (cmd); + + } else + { + if (!quiet) + { + snprintf (buf, sizeof (buf), _("Cannot read sound file:\n%s"), wavfile); + fe_message (buf, FE_MSG_ERROR); + } + } + + g_free (file_fs); +} + +void +sound_play_event (int i) +{ + if (sound_files[i]) + sound_play (sound_files[i], FALSE); +} + +static void +sound_load_event (char *evt, char *file) +{ + int i = 0; + + if (file[0] && pevent_find (evt, &i) != -1) + { + if (sound_files[i]) + free (sound_files[i]); + sound_files[i] = strdup (file); + } +} + +void +sound_load () +{ + int fd; + char buf[512]; + char evt[128]; + + memset (&sound_files, 0, sizeof (char *) * (NUM_XP)); + + fd = xchat_open_file ("sound.conf", O_RDONLY, 0, 0); + if (fd == -1) + return; + + evt[0] = 0; + while (waitline (fd, buf, sizeof buf, FALSE) != -1) + { + if (strncmp (buf, "event=", 6) == 0) + { + safe_strcpy (evt, buf + 6, sizeof (evt)); + } + else if (strncmp (buf, "sound=", 6) == 0) + { + if (evt[0] != 0) + { + sound_load_event (evt, buf + 6); + evt[0] = 0; + } + } + } + + close (fd); +} + +void +sound_save () +{ + int fd, i; + char buf[512]; + + fd = xchat_open_file ("sound.conf", O_CREAT | O_TRUNC | O_WRONLY, 0x180, + XOF_DOMODE); + if (fd == -1) + return; + + for (i = 0; i < NUM_XP; i++) + { + if (sound_files[i] && sound_files[i][0]) + { + write (fd, buf, snprintf (buf, sizeof (buf), + "event=%s\n", te[i].name)); + write (fd, buf, snprintf (buf, sizeof (buf), + "sound=%s\n\n", sound_files[i])); + } + } + + close (fd); +} diff --git a/xchat-2.8.8/src/common/text.h b/xchat-2.8.8/src/common/text.h new file mode 100644 index 0000000..150821a --- /dev/null +++ b/xchat-2.8.8/src/common/text.h @@ -0,0 +1,42 @@ +#include "textenums.h" + +#ifndef XCHAT_TEXT_H +#define XCHAT_TEXT_H + +#define EMIT_SIGNAL(i, sess, a, b, c, d, e) text_emit(i, sess, a, b, c, d) + +struct text_event +{ + char *name; + char * const *help; + int num_args; + char *def; +}; + +void scrollback_close (session *sess); +void scrollback_load (session *sess); + +int text_word_check (char *word, int len); +void PrintText (session *sess, char *text); +void PrintTextf (session *sess, char *format, ...); +void log_close (session *sess); +void log_open_or_close (session *sess); +void load_text_events (void); +void pevent_save (char *fn); +int pevt_build_string (const char *input, char **output, int *max_arg); +int pevent_load (char *filename); +void pevent_make_pntevts (void); +void text_emit (int index, session *sess, char *a, char *b, char *c, char *d); +int text_emit_by_name (char *name, session *sess, char *a, char *b, char *c, char *d); +char *text_validate (char **text, int *len); +int get_stamp_str (char *fmt, time_t tim, char **ret); +void format_event (session *sess, int index, char **args, char *o, int sizeofo, unsigned int stripcolor_args); +char *text_find_format_string (char *name); + +void sound_play (const char *file, gboolean quiet); +void sound_play_event (int i); +void sound_beep (session *); +void sound_load (); +void sound_save (); + +#endif diff --git a/xchat-2.8.8/src/common/textenums.h b/xchat-2.8.8/src/common/textenums.h new file mode 100644 index 0000000..682a35e --- /dev/null +++ b/xchat-2.8.8/src/common/textenums.h @@ -0,0 +1,76 @@ +/* this file is auto generated, edit textevents.in instead! */ + +enum +{ + XP_TE_ADDNOTIFY, XP_TE_BANLIST, + XP_TE_BANNED, XP_TE_BEEP, + XP_TE_CHANGENICK, XP_TE_CHANACTION, + XP_TE_HCHANACTION, XP_TE_CHANBAN, + XP_TE_CHANDATE, XP_TE_CHANDEHOP, + XP_TE_CHANDEOP, XP_TE_CHANDEVOICE, + XP_TE_CHANEXEMPT, XP_TE_CHANHOP, + XP_TE_CHANINVITE, XP_TE_CHANLISTHEAD, + XP_TE_CHANMSG, XP_TE_CHANMODEGEN, + XP_TE_CHANMODES, XP_TE_HCHANMSG, + XP_TE_CHANNOTICE, XP_TE_CHANOP, + XP_TE_CHANRMEXEMPT, XP_TE_CHANRMINVITE, + XP_TE_CHANRMKEY, XP_TE_CHANRMLIMIT, + XP_TE_CHANSETKEY, XP_TE_CHANSETLIMIT, + XP_TE_CHANUNBAN, XP_TE_CHANVOICE, + XP_TE_CONNECTED, XP_TE_CONNECT, + XP_TE_CONNFAIL, XP_TE_CTCPGEN, + XP_TE_CTCPGENC, XP_TE_CTCPSEND, + XP_TE_CTCPSND, XP_TE_CTCPSNDC, + XP_TE_DCCCHATABORT, XP_TE_DCCCONCHAT, + XP_TE_DCCCHATF, XP_TE_DCCCHATOFFER, + XP_TE_DCCCHATOFFERING, XP_TE_DCCCHATREOFFER, + XP_TE_DCCCONFAIL, XP_TE_DCCGENERICOFFER, + XP_TE_DCCHEAD, XP_TE_MALFORMED, + XP_TE_DCCOFFER, XP_TE_DCCIVAL, + XP_TE_DCCRECVABORT, XP_TE_DCCRECVCOMP, + XP_TE_DCCCONRECV, XP_TE_DCCRECVERR, + XP_TE_DCCFILEERR, XP_TE_DCCRENAME, + XP_TE_DCCRESUMEREQUEST, XP_TE_DCCSENDABORT, + XP_TE_DCCSENDCOMP, XP_TE_DCCCONSEND, + XP_TE_DCCSENDFAIL, XP_TE_DCCSENDOFFER, + XP_TE_DCCSTALL, XP_TE_DCCTOUT, + XP_TE_DELNOTIFY, XP_TE_DISCON, + XP_TE_FOUNDIP, XP_TE_GENMSG, + XP_TE_IGNOREADD, XP_TE_IGNORECHANGE, + XP_TE_IGNOREFOOTER, XP_TE_IGNOREHEADER, + XP_TE_IGNOREREMOVE, XP_TE_IGNOREEMPTY, + XP_TE_INVITE, XP_TE_INVITED, + XP_TE_JOIN, XP_TE_KEYWORD, + XP_TE_KICK, XP_TE_KILL, + XP_TE_MSGSEND, XP_TE_MOTD, + XP_TE_MOTDSKIP, XP_TE_NICKCLASH, + XP_TE_NICKFAIL, XP_TE_NODCC, + XP_TE_NOCHILD, XP_TE_NOTICE, + XP_TE_NOTICESEND, XP_TE_NOTIFYEMPTY, + XP_TE_NOTIFYHEAD, XP_TE_NOTIFYNUMBER, + XP_TE_NOTIFYOFFLINE, XP_TE_NOTIFYONLINE, + XP_TE_OPENDIALOG, XP_TE_PART, + XP_TE_PARTREASON, XP_TE_PINGREP, + XP_TE_PINGTIMEOUT, XP_TE_PRIVACTION, + XP_TE_DPRIVACTION, XP_TE_PRIVMSG, + XP_TE_DPRIVMSG, XP_TE_ALREADYPROCESS, + XP_TE_QUIT, XP_TE_RAWMODES, + XP_TE_WALLOPS, XP_TE_RESOLVINGUSER, + XP_TE_SERVERCONNECTED, XP_TE_SERVERERROR, + XP_TE_SERVERLOOKUP, XP_TE_SERVNOTICE, + XP_TE_SERVTEXT, XP_TE_SSLMESSAGE, + XP_TE_STOPCONNECT, XP_TE_TOPIC, + XP_TE_NEWTOPIC, XP_TE_TOPICDATE, + XP_TE_UKNHOST, XP_TE_USERLIMIT, + XP_TE_USERSONCHAN, XP_TE_WHOIS_AUTH, + XP_TE_WHOIS5, XP_TE_WHOIS2, + XP_TE_WHOIS6, XP_TE_WHOIS_ID, + XP_TE_WHOIS4, XP_TE_WHOIS4T, + XP_TE_WHOIS1, XP_TE_WHOIS_REALHOST, + XP_TE_WHOIS3, XP_TE_WHOIS_SPECIAL, + XP_TE_UJOIN, XP_TE_UKICK, + XP_TE_UPART, XP_TE_UPARTREASON, + XP_TE_UACTION, XP_TE_UINVITE, + XP_TE_UCHANMSG, XP_TE_UCHANGENICK, + NUM_XP +}; diff --git a/xchat-2.8.8/src/common/textevents.h b/xchat-2.8.8/src/common/textevents.h new file mode 100644 index 0000000..08a54da --- /dev/null +++ b/xchat-2.8.8/src/common/textevents.h @@ -0,0 +1,424 @@ +/* this file is auto generated, edit textevents.in instead! */ + +const struct text_event te[] = { + +{"Add Notify", pevt_generic_nick_help, 1, +N_("%C22*%O$t$1 added to notify list.")}, + +{"Ban List", pevt_banlist_help, 4, +N_("%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3")}, + +{"Banned", pevt_generic_channel_help, 1, +N_("%C22*%O$tCannot join%C26 %B$1 %O(You are banned).")}, + +{"Beep", pevt_generic_none_help, 128, +""}, + +{"Change Nick", pevt_changenick_help, 2, +N_("%C22*%O$t$1 is now known as $2")}, + +{"Channel Action", pevt_chanaction_help, 132, +"%C18*$t$1%O $2"}, + +{"Channel Action Hilight", pevt_chanaction_help, 132, +"%C21*%O$t%C21%B$1%O%C21 $2"}, + +{"Channel Ban", pevt_chanban_help, 2, +N_("%C22*%O$t$1 sets ban on $2")}, + +{"Channel Creation", pevt_chandate_help, 2, +N_("%C22*%O$tChannel $1 created on $2")}, + +{"Channel DeHalfOp", pevt_chandehop_help, 2, +N_("%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2")}, + +{"Channel DeOp", pevt_chandeop_help, 2, +N_("%C22*%O$t%C26$1%O removes channel operator status from%C26 $2")}, + +{"Channel DeVoice", pevt_chandevoice_help, 2, +N_("%C22*%O$t%C26$1%O removes voice from%C26 $2")}, + +{"Channel Exempt", pevt_chanexempt_help, 2, +N_("%C22*%O$t$1 sets exempt on $2")}, + +{"Channel Half-Operator", pevt_chanhop_help, 2, +N_("%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2")}, + +{"Channel INVITE", pevt_chaninvite_help, 2, +N_("%C22*%O$t$1 sets invite on $2")}, + +{"Channel List", pevt_generic_none_help, 0, +N_("%UChannel Users Topic")}, + +{"Channel Message", pevt_chanmsg_help, 132, +"%C18%H<%H$4$1%H>%H%O$t$2"}, + +{"Channel Mode Generic", pevt_chanmodegen_help, 4, +N_("%C22*%O$t$1 sets mode $2$3 $4")}, + +{"Channel Modes", pevt_chanmodes_help, 2, +N_("%C22*%O$t%C22Channel $1 modes: $2")}, + +{"Channel Msg Hilight", pevt_chanmsg_help, 132, +"$4%C21%B%H<%H$1%H>%H%O%C21$t$2"}, + +{"Channel Notice", pevt_channotice_help, 131, +"%C28-%C29$1/$2%C28-%O$t$3"}, + +{"Channel Operator", pevt_chanop_help, 2, +N_("%C22*%O$t%C26$1%O gives channel operator status to%C26 $2")}, + +{"Channel Remove Exempt", pevt_chanrmexempt_help, 2, +N_("%C22*%O$t$1 removes exempt on $2")}, + +{"Channel Remove Invite", pevt_chanrminvite_help, 2, +N_("%C22*%O$t$1 removes invite on $2")}, + +{"Channel Remove Keyword", pevt_chanrmkey_help, 1, +N_("%C22*%O$t$1 removes channel keyword")}, + +{"Channel Remove Limit", pevt_chanrmlimit_help, 1, +N_("%C22*%O$t$1 removes user limit")}, + +{"Channel Set Key", pevt_chansetkey_help, 2, +N_("%C22*%O$t$1 sets channel keyword to $2")}, + +{"Channel Set Limit", pevt_chansetlimit_help, 2, +N_("%C22*%O$t$1 sets channel limit to $2")}, + +{"Channel UnBan", pevt_chanunban_help, 2, +N_("%C22*%O$t$1 removes ban on $2")}, + +{"Channel Voice", pevt_chanvoice_help, 2, +N_("%C22*%O$t%C26$1%O gives voice to%C26 $2")}, + +{"Connected", pevt_generic_none_help, 0, +N_("%C22*%O$t%C22Connected. Now logging in...")}, + +{"Connecting", pevt_connect_help, 3, +N_("%C22*%O$t%C22Connecting to $1 ($2) port $3%O...")}, + +{"Connection Failed", pevt_connfail_help, 1, +N_("%C21*%O$t%C21Connection failed. Error: $1")}, + +{"CTCP Generic", pevt_ctcpgen_help, 2, +N_("%C22*%O$tReceived a CTCP $1 from $2")}, + +{"CTCP Generic to Channel", pevt_ctcpgenc_help, 3, +N_("%C22*%O$tReceived a CTCP $1 from $2 (to $3)")}, + +{"CTCP Send", pevt_ctcpsend_help, 2, +N_("%C19>%O$1%C19<%O$tCTCP $2")}, + +{"CTCP Sound", pevt_ctcpsnd_help, 2, +N_("%C22*%O$tReceived a CTCP Sound $1 from $2")}, + +{"CTCP Sound to Channel", pevt_ctcpsnd_help, 3, +N_("%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3)")}, + +{"DCC CHAT Abort", pevt_dccchatabort_help, 1, +N_("%C22*%O$tDCC CHAT to %C26$1%O aborted.")}, + +{"DCC CHAT Connect", pevt_dccchatcon_help, 2, +N_("%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30]")}, + +{"DCC CHAT Failed", pevt_dccchaterr_help, 4, +N_("%C22*%O$tDCC CHAT to %C26$1%O lost ($4).")}, + +{"DCC CHAT Offer", pevt_generic_nick_help, 1, +N_("%C22*%O$tReceived a DCC CHAT offer from $1")}, + +{"DCC CHAT Offering", pevt_generic_nick_help, 1, +N_("%C22*%O$tOffering DCC CHAT to $1")}, + +{"DCC CHAT Reoffer", pevt_generic_nick_help, 1, +N_("%C22*%O$tAlready offering CHAT to $1")}, + +{"DCC Conection Failed", pevt_dccconfail_help, 3, +N_("%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3).")}, + +{"DCC Generic Offer", pevt_dccgenericoffer_help, 2, +N_("%C22*%O$tReceived '$1%O' from $2")}, + +{"DCC Header", pevt_generic_none_help, 0, +N_("%C24,18 Type To/From Status Size Pos File ")}, + +{"DCC Malformed", pevt_malformed_help, 2, +N_("%C22*%O$tReceived a malformed DCC request from %C26$1%O.%010%C22*%O$tContents of packet: $2")}, + +{"DCC Offer", pevt_dccoffer_help, 3, +N_("%C22*%O$tOffering%C26 $1%O to%C26 $2")}, + +{"DCC Offer Not Valid", pevt_generic_none_help, 0, +N_("%C22*%O$tNo such DCC offer.")}, + +{"DCC RECV Abort", pevt_dccfileabort_help, 2, +N_("%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted.")}, + +{"DCC RECV Complete", pevt_dccrecvcomp_help, 4, +N_("%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O.")}, + +{"DCC RECV Connect", pevt_dcccon_help, 3, +N_("%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30]")}, + +{"DCC RECV Failed", pevt_dccrecverr_help, 4, +N_("%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4).")}, + +{"DCC RECV File Open Error", pevt_generic_file_help, 2, +N_("%C22*%O$tDCC RECV: Cannot open $1 for writing ($2).")}, + +{"DCC Rename", pevt_dccrename_help, 2, +N_("%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead.")}, + +{"DCC RESUME Request", pevt_dccresumeoffer_help, 3, +N_("%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C.")}, + +{"DCC SEND Abort", pevt_dccfileabort_help, 2, +N_("%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted.")}, + +{"DCC SEND Complete", pevt_dccsendcomp_help, 3, +N_("%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O.")}, + +{"DCC SEND Connect", pevt_dcccon_help, 3, +N_("%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30]")}, + +{"DCC SEND Failed", pevt_dccsendfail_help, 3, +N_("%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3")}, + +{"DCC SEND Offer", pevt_dccsendoffer_help, 4, +N_("%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes)")}, + +{"DCC Stall", pevt_dccstall_help, 3, +N_("%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting.")}, + +{"DCC Timeout", pevt_dccstall_help, 3, +N_("%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting.")}, + +{"Delete Notify", pevt_generic_nick_help, 1, +N_("%C22*%O$t$1 deleted from notify list.")}, + +{"Disconnected", pevt_discon_help, 1, +N_("%C22*%O$tDisconnected ($1).")}, + +{"Found IP", pevt_foundip_help, 1, +N_("%C22*%O$tFound your IP: [$1]")}, + +{"Generic Message", pevt_genmsg_help, 130, +"$1$t$2"}, + +{"Ignore Add", pevt_ignoreaddremove_help, 1, +N_("%O%C26$1%O added to ignore list.")}, + +{"Ignore Changed", pevt_ignoreaddremove_help, 1, +N_("Ignore on %C26$1%O changed.")}, + +{"Ignore Footer", pevt_generic_none_help, 0, +N_("%C24,18 ")}, + +{"Ignore Header", pevt_generic_none_help, 0, +N_("%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG ")}, + +{"Ignore Remove", pevt_ignoreaddremove_help, 1, +N_("%O%C26$1%O removed from ignore list.")}, + +{"Ignorelist Empty", pevt_generic_none_help, 0, +N_(" Ignore list is empty.")}, + +{"Invite", pevt_generic_channel_help, 1, +N_("%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only).")}, + +{"Invited", pevt_invited_help, 3, +N_("%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C)")}, + +{"Join", pevt_join_help, 3, +N_("%C19*%O$t%C19%B$1 %B($3) has joined $2")}, + +{"Keyword", pevt_generic_channel_help, 1, +N_("%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword).")}, + +{"Kick", pevt_kick_help, 4, +N_("%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21)")}, + +{"Killed", pevt_kill_help, 2, +N_("%C22*%O$tYou have been killed by $1 ($2%O%C22)")}, + +{"Message Send", pevt_ctcpsend_help, 130, +"%C19>%O$1%C19<%O$t$2"}, + +{"Motd", pevt_servertext_help, 129, +"%C16*%O$t$1%O"}, + +{"MOTD Skipped", pevt_generic_none_help, 0, +N_("%C22*%O$t%C22MOTD Skipped.")}, + +{"Nick Clash", pevt_nickclash_help, 2, +N_("%C22*%O$t$1 already in use. Retrying with $2...")}, + +{"Nick Failed", pevt_generic_none_help, 0, +N_("%C22*%O$tNickname already in use. Use /NICK to try another.")}, + +{"No DCC", pevt_generic_none_help, 0, +N_("%C22*%O$tNo such DCC.")}, + +{"No Running Process", pevt_generic_none_help, 0, +N_("%C22*%O$tNo process is currently running")}, + +{"Notice", pevt_notice_help, 130, +"%C28-%C29$1%C28-%O$t$2"}, + +{"Notice Send", pevt_ctcpsend_help, 130, +"%C19>%O$1%C19<%O$t$2"}, + +{"Notify Empty", pevt_generic_none_help, 0, +N_("$tNotify list is empty.")}, + +{"Notify Header", pevt_generic_none_help, 0, +N_("%C24,18 %B Notify List ")}, + +{"Notify Number", pevt_notifynumber_help, 1, +N_("%C22*%O$t$1 users in notify list.")}, + +{"Notify Offline", pevt_generic_nick_help, 3, +N_("%C22*%O$tNotify: $1 is offline ($3).")}, + +{"Notify Online", pevt_generic_nick_help, 3, +N_("%C22*%O$tNotify: $1 is online ($3).")}, + +{"Open Dialog", pevt_generic_none_help, 128, +""}, + +{"Part", pevt_part_help, 3, +N_("%C23*%O$t%C23$1 (%O%C23$2) has left $3")}, + +{"Part with Reason", pevt_partreason_help, 4, +N_("%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23)")}, + +{"Ping Reply", pevt_pingrep_help, 2, +N_("%C22*%O$tPing reply from $1: $2 second(s)")}, + +{"Ping Timeout", pevt_pingtimeout_help, 1, +N_("%C22*%O$tNo ping reply for $1 seconds, disconnecting.")}, + +{"Private Action", pevt_privmsg_help, 131, +"%C18**$t$3$1%O $2 %C18**"}, + +{"Private Action to Dialog", pevt_privmsg_help, 131, +"%C18*$t$3$1%O $2"}, + +{"Private Message", pevt_privmsg_help, 131, +"%C28*%C29$3$1%C28*$t%O$2"}, + +{"Private Message to Dialog", pevt_privmsg_help, 131, +"%C18%H<%H$3$1%H>%H%O$t$2"}, + +{"Process Already Running", pevt_generic_none_help, 0, +N_("%C22*%O$tA process is already running")}, + +{"Quit", pevt_quit_help, 3, +N_("%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23)")}, + +{"Raw Modes", pevt_rawmodes_help, 2, +N_("%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30]")}, + +{"Receive Wallops", pevt_privmsg_help, 2, +N_("%C28-%C29$1/Wallops%C28-%O$t$2")}, + +{"Resolving User", pevt_resolvinguser_help, 2, +N_("%C22*%O$tLooking up IP number for%C26 $1%O...")}, + +{"Server Connected", pevt_generic_none_help, 0, +N_("%C22*%O$t%C22Connected.")}, + +{"Server Error", pevt_servererror_help, 129, +"%C22*%O$t$1"}, + +{"Server Lookup", pevt_serverlookup_help, 1, +N_("%C22*%O$t%C22Looking up $1")}, + +{"Server Notice", pevt_servertext_help, 130, +"%C22*%O$t$1"}, + +{"Server Text", pevt_servertext_help, 131, +"%C22*%O$t$1"}, + +{"SSL Message", pevt_sslmessage_help, 130, +"%C22*%O$t$1"}, + +{"Stop Connection", pevt_sconnect_help, 1, +N_("%C22*%O$tStopped previous connection attempt (pid=$1)")}, + +{"Topic", pevt_topic_help, 2, +N_("%C29*%O$t%C29Topic for $1%C %C29is: $2")}, + +{"Topic Change", pevt_newtopic_help, 3, +N_("%C22*%O$t$1 has changed the topic to: $2")}, + +{"Topic Creation", pevt_topicdate_help, 3, +N_("%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3")}, + +{"Unknown Host", pevt_generic_none_help, 0, +N_("%C22*%O$tUnknown host. Maybe you misspelled it?")}, + +{"User Limit", pevt_generic_channel_help, 1, +N_("%C22*%O$tCannot join%C26 %B$1 %O(User limit reached).")}, + +{"Users On Channel", pevt_usersonchan_help, 2, +N_("%C22*%O$t%C26Users on $1:%C $2")}, + +{"WhoIs Authenticated", pevt_whoisauth_help, 3, +N_("%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3")}, + +{"WhoIs Away Line", pevt_whois5_help, 2, +N_("%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30)")}, + +{"WhoIs Channel/Oper Line", pevt_whois2_help, 2, +N_("%C22*%O$t%C28[%O$1%C28]%O $2")}, + +{"WhoIs End", pevt_whois6_help, 1, +N_("%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list.")}, + +{"WhoIs Identified", pevt_whoisid_help, 2, +N_("%C22*%O$t%C28[%O$1%C28]%O $2")}, + +{"WhoIs Idle Line", pevt_whois4_help, 2, +N_("%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2")}, + +{"WhoIs Idle Line with Signon", pevt_whois4t_help, 3, +N_("%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3")}, + +{"WhoIs Name Line", pevt_whois1_help, 4, +N_("%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4")}, + +{"WhoIs Real Host", pevt_whoisrealhost_help, 4, +N_("%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3")}, + +{"WhoIs Server Line", pevt_whois3_help, 2, +N_("%C22*%O$t%C28[%O$1%C28]%O $2")}, + +{"WhoIs Special", pevt_whoisid_help, 3, +N_("%C22*%O$t%C28[%O$1%C28]%O $2")}, + +{"You Join", pevt_join_help, 3, +N_("%C19*%O$t%C19Now talking on $2")}, + +{"You Kicked", pevt_ukick_help, 4, +N_("%C23*$tYou have been kicked from $2 by $3 ($4%O%C23)")}, + +{"You Part", pevt_part_help, 3, +N_("%C23*$tYou have left channel $3")}, + +{"You Part with Reason", pevt_partreason_help, 4, +N_("%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23)")}, + +{"Your Action", pevt_chanaction_help, 131, +"%C18*$t$1%O $2"}, + +{"Your Invitation", pevt_uinvite_help, 3, +N_("%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O)")}, + +{"Your Message", pevt_chanmsg_help, 132, +"%C31%H<%H$4$1%H>%H%O%C30$t$2"}, + +{"Your Nick Changing", pevt_uchangenick_help, 2, +N_("%C22*%O$tYou are now known as $2")}, +}; diff --git a/xchat-2.8.8/src/common/textevents.in b/xchat-2.8.8/src/common/textevents.in new file mode 100644 index 0000000..5b4ce18 --- /dev/null +++ b/xchat-2.8.8/src/common/textevents.in @@ -0,0 +1,840 @@ +Add Notify +XP_TE_ADDNOTIFY +pevt_generic_nick_help +%C22*%O$t$1 added to notify list. +1 + +Ban List +XP_TE_BANLIST +pevt_banlist_help +%C22*%O$t$1 Banlist:%C19 $4%C20 $2%C21 $3 +4 + +Banned +XP_TE_BANNED +pevt_generic_channel_help +%C22*%O$tCannot join%C26 %B$1 %O(You are banned). +1 + +Beep +XP_TE_BEEP +pevt_generic_none_help + +n0 + +Change Nick +XP_TE_CHANGENICK +pevt_changenick_help +%C22*%O$t$1 is now known as $2 +2 + +Channel Action +XP_TE_CHANACTION +pevt_chanaction_help +%C18*$t$1%O $2 +n4 + +Channel Action Hilight +XP_TE_HCHANACTION +pevt_chanaction_help +%C21*%O$t%C21%B$1%O%C21 $2 +n4 + +Channel Ban +XP_TE_CHANBAN +pevt_chanban_help +%C22*%O$t$1 sets ban on $2 +2 + +Channel Creation +XP_TE_CHANDATE +pevt_chandate_help +%C22*%O$tChannel $1 created on $2 +2 + +Channel DeHalfOp +XP_TE_CHANDEHOP +pevt_chandehop_help +%C22*%O$t%C26$1%O removes channel half-operator status from%C26 $2 +2 + +Channel DeOp +XP_TE_CHANDEOP +pevt_chandeop_help +%C22*%O$t%C26$1%O removes channel operator status from%C26 $2 +2 + +Channel DeVoice +XP_TE_CHANDEVOICE +pevt_chandevoice_help +%C22*%O$t%C26$1%O removes voice from%C26 $2 +2 + +Channel Exempt +XP_TE_CHANEXEMPT +pevt_chanexempt_help +%C22*%O$t$1 sets exempt on $2 +2 + +Channel Half-Operator +XP_TE_CHANHOP +pevt_chanhop_help +%C22*%O$t%C26$1%O gives channel half-operator status to%C26 $2 +2 + +Channel INVITE +XP_TE_CHANINVITE +pevt_chaninvite_help +%C22*%O$t$1 sets invite on $2 +2 + +Channel List +XP_TE_CHANLISTHEAD +pevt_generic_none_help +%UChannel Users Topic +0 + +Channel Message +XP_TE_CHANMSG +pevt_chanmsg_help +%C18%H<%H$4$1%H>%H%O$t$2 +n4 + +Channel Mode Generic +XP_TE_CHANMODEGEN +pevt_chanmodegen_help +%C22*%O$t$1 sets mode $2$3 $4 +4 + +Channel Modes +XP_TE_CHANMODES +pevt_chanmodes_help +%C22*%O$t%C22Channel $1 modes: $2 +2 + +Channel Msg Hilight +XP_TE_HCHANMSG +pevt_chanmsg_help +$4%C21%B%H<%H$1%H>%H%O%C21$t$2 +n4 + +Channel Notice +XP_TE_CHANNOTICE +pevt_channotice_help +%C28-%C29$1/$2%C28-%O$t$3 +n3 + +Channel Operator +XP_TE_CHANOP +pevt_chanop_help +%C22*%O$t%C26$1%O gives channel operator status to%C26 $2 +2 + +Channel Remove Exempt +XP_TE_CHANRMEXEMPT +pevt_chanrmexempt_help +%C22*%O$t$1 removes exempt on $2 +2 + +Channel Remove Invite +XP_TE_CHANRMINVITE +pevt_chanrminvite_help +%C22*%O$t$1 removes invite on $2 +2 + +Channel Remove Keyword +XP_TE_CHANRMKEY +pevt_chanrmkey_help +%C22*%O$t$1 removes channel keyword +1 + +Channel Remove Limit +XP_TE_CHANRMLIMIT +pevt_chanrmlimit_help +%C22*%O$t$1 removes user limit +1 + +Channel Set Key +XP_TE_CHANSETKEY +pevt_chansetkey_help +%C22*%O$t$1 sets channel keyword to $2 +2 + +Channel Set Limit +XP_TE_CHANSETLIMIT +pevt_chansetlimit_help +%C22*%O$t$1 sets channel limit to $2 +2 + +Channel UnBan +XP_TE_CHANUNBAN +pevt_chanunban_help +%C22*%O$t$1 removes ban on $2 +2 + +Channel Voice +XP_TE_CHANVOICE +pevt_chanvoice_help +%C22*%O$t%C26$1%O gives voice to%C26 $2 +2 + +Connected +XP_TE_CONNECTED +pevt_generic_none_help +%C22*%O$t%C22Connected. Now logging in... +0 + +Connecting +XP_TE_CONNECT +pevt_connect_help +%C22*%O$t%C22Connecting to $1 ($2) port $3%O... +3 + +Connection Failed +XP_TE_CONNFAIL +pevt_connfail_help +%C21*%O$t%C21Connection failed. Error: $1 +1 + +CTCP Generic +XP_TE_CTCPGEN +pevt_ctcpgen_help +%C22*%O$tReceived a CTCP $1 from $2 +2 + +CTCP Generic to Channel +XP_TE_CTCPGENC +pevt_ctcpgenc_help +%C22*%O$tReceived a CTCP $1 from $2 (to $3) +3 + +CTCP Send +XP_TE_CTCPSEND +pevt_ctcpsend_help +%C19>%O$1%C19<%O$tCTCP $2 +2 + +CTCP Sound +XP_TE_CTCPSND +pevt_ctcpsnd_help +%C22*%O$tReceived a CTCP Sound $1 from $2 +2 + +CTCP Sound to Channel +XP_TE_CTCPSNDC +pevt_ctcpsnd_help +%C22*%O$tReceived a CTCP Sound $1 from $2 (to $3) +3 + +DCC CHAT Abort +XP_TE_DCCCHATABORT +pevt_dccchatabort_help +%C22*%O$tDCC CHAT to %C26$1%O aborted. +1 + +DCC CHAT Connect +XP_TE_DCCCONCHAT +pevt_dccchatcon_help +%C22*%O$tDCC CHAT connection established to %C26$1 %C30[%O$2%C30] +2 + +DCC CHAT Failed +XP_TE_DCCCHATF +pevt_dccchaterr_help +%C22*%O$tDCC CHAT to %C26$1%O lost ($4). +4 + +DCC CHAT Offer +XP_TE_DCCCHATOFFER +pevt_generic_nick_help +%C22*%O$tReceived a DCC CHAT offer from $1 +1 + +DCC CHAT Offering +XP_TE_DCCCHATOFFERING +pevt_generic_nick_help +%C22*%O$tOffering DCC CHAT to $1 +1 + +DCC CHAT Reoffer +XP_TE_DCCCHATREOFFER +pevt_generic_nick_help +%C22*%O$tAlready offering CHAT to $1 +1 + +DCC Conection Failed +XP_TE_DCCCONFAIL +pevt_dccconfail_help +%C22*%O$tDCC $1 connect attempt to%C26 $2%O failed (err=$3). +3 + +DCC Generic Offer +XP_TE_DCCGENERICOFFER +pevt_dccgenericoffer_help +%C22*%O$tReceived '$1%O' from $2 +2 + +DCC Header +XP_TE_DCCHEAD +pevt_generic_none_help +%C24,18 Type To/From Status Size Pos File +0 + +DCC Malformed +XP_TE_MALFORMED +pevt_malformed_help +%C22*%O$tReceived a malformed DCC request from %C26$1%O.%010%C22*%O$tContents of packet: $2 +2 + +DCC Offer +XP_TE_DCCOFFER +pevt_dccoffer_help +%C22*%O$tOffering%C26 $1%O to%C26 $2 +3 + +DCC Offer Not Valid +XP_TE_DCCIVAL +pevt_generic_none_help +%C22*%O$tNo such DCC offer. +0 + +DCC RECV Abort +XP_TE_DCCRECVABORT +pevt_dccfileabort_help +%C22*%O$tDCC RECV%C26 $2%O to%C26 $1%O aborted. +2 + +DCC RECV Complete +XP_TE_DCCRECVCOMP +pevt_dccrecvcomp_help +%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O complete %C30[%C26$4%O cps%C30]%O. +4 + +DCC RECV Connect +XP_TE_DCCCONRECV +pevt_dcccon_help +%C22*%O$tDCC RECV connection established to%C26 $1 %C30[%O$2%C30] +3 + +DCC RECV Failed +XP_TE_DCCRECVERR +pevt_dccrecverr_help +%C22*%O$tDCC RECV%C26 $1%O from%C26 $3%O failed ($4). +4 + +DCC RECV File Open Error +XP_TE_DCCFILEERR +pevt_generic_file_help +%C22*%O$tDCC RECV: Cannot open $1 for writing ($2). +2 + +DCC Rename +XP_TE_DCCRENAME +pevt_dccrename_help +%C22*%O$tThe file%C26 $1%C already exists, saving it as%C26 $2%O instead. +2 + +DCC RESUME Request +XP_TE_DCCRESUMEREQUEST +pevt_dccresumeoffer_help +%C22*%O$t%C26$1 %Ohas requested to resume%C26 $2 %Cfrom%C26 $3%C. +3 + +DCC SEND Abort +XP_TE_DCCSENDABORT +pevt_dccfileabort_help +%C22*%O$tDCC SEND%C26 $2%O to%C26 $1%O aborted. +2 + +DCC SEND Complete +XP_TE_DCCSENDCOMP +pevt_dccsendcomp_help +%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O complete %C30[%C26$3%O cps%C30]%O. +3 + +DCC SEND Connect +XP_TE_DCCCONSEND +pevt_dcccon_help +%C22*%O$tDCC SEND connection established to%C26 $1 %C30[%O$2%C30] +3 + +DCC SEND Failed +XP_TE_DCCSENDFAIL +pevt_dccsendfail_help +%C22*%O$tDCC SEND%C26 $1%O to%C26 $2%O failed. $3 +3 + +DCC SEND Offer +XP_TE_DCCSENDOFFER +pevt_dccsendoffer_help +%C22*%O$t%C26$1 %Ohas offered%C26 $2 %O(%C26$3 %Obytes) +4 + +DCC Stall +XP_TE_DCCSTALL +pevt_dccstall_help +%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Cstalled - aborting. +3 + +DCC Timeout +XP_TE_DCCTOUT +pevt_dccstall_help +%C22*%O$tDCC $1%C26 $2 %Oto%C26 $3 %Otimed out - aborting. +3 + +Delete Notify +XP_TE_DELNOTIFY +pevt_generic_nick_help +%C22*%O$t$1 deleted from notify list. +1 + +Disconnected +XP_TE_DISCON +pevt_discon_help +%C22*%O$tDisconnected ($1). +1 + +Found IP +XP_TE_FOUNDIP +pevt_foundip_help +%C22*%O$tFound your IP: [$1] +1 + +Generic Message +XP_TE_GENMSG +pevt_genmsg_help +$1$t$2 +n2 + +Ignore Add +XP_TE_IGNOREADD +pevt_ignoreaddremove_help +%O%C26$1%O added to ignore list. +1 + +Ignore Changed +XP_TE_IGNORECHANGE +pevt_ignoreaddremove_help +Ignore on %C26$1%O changed. +1 + +Ignore Footer +XP_TE_IGNOREFOOTER +pevt_generic_none_help +%C24,18 +0 + +Ignore Header +XP_TE_IGNOREHEADER +pevt_generic_none_help +%C24,18 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG +0 + +Ignore Remove +XP_TE_IGNOREREMOVE +pevt_ignoreaddremove_help +%O%C26$1%O removed from ignore list. +1 + +Ignorelist Empty +XP_TE_IGNOREEMPTY +pevt_generic_none_help + Ignore list is empty. +0 + +Invite +XP_TE_INVITE +pevt_generic_channel_help +%C22*%O$tCannot join%C26 %B$1 %O(Channel is invite only). +1 + +Invited +XP_TE_INVITED +pevt_invited_help +%C22*%O$tYou have been invited to%C26 $1%O by%C26 $2%C (%C26$3%C) +3 + +Join +XP_TE_JOIN +pevt_join_help +%C19*%O$t%C19%B$1 %B($3) has joined $2 +3 + +Keyword +XP_TE_KEYWORD +pevt_generic_channel_help +%C22*%O$tCannot join%C26 %B$1 %O(Requires keyword). +1 + +Kick +XP_TE_KICK +pevt_kick_help +%C21*%O$t%C21$1 has kicked $2 from $3 ($4%O%C21) +4 + +Killed +XP_TE_KILL +pevt_kill_help +%C22*%O$tYou have been killed by $1 ($2%O%C22) +2 + +Message Send +XP_TE_MSGSEND +pevt_ctcpsend_help +%C19>%O$1%C19<%O$t$2 +n2 + +Motd +XP_TE_MOTD +pevt_servertext_help +%C16*%O$t$1%O +n1 + +MOTD Skipped +XP_TE_MOTDSKIP +pevt_generic_none_help +%C22*%O$t%C22MOTD Skipped. +0 + +Nick Clash +XP_TE_NICKCLASH +pevt_nickclash_help +%C22*%O$t$1 already in use. Retrying with $2... +2 + +Nick Failed +XP_TE_NICKFAIL +pevt_generic_none_help +%C22*%O$tNickname already in use. Use /NICK to try another. +0 + +No DCC +XP_TE_NODCC +pevt_generic_none_help +%C22*%O$tNo such DCC. +0 + +No Running Process +XP_TE_NOCHILD +pevt_generic_none_help +%C22*%O$tNo process is currently running +0 + +Notice +XP_TE_NOTICE +pevt_notice_help +%C28-%C29$1%C28-%O$t$2 +n2 + +Notice Send +XP_TE_NOTICESEND +pevt_ctcpsend_help +%C19>%O$1%C19<%O$t$2 +n2 + +Notify Empty +XP_TE_NOTIFYEMPTY +pevt_generic_none_help +$tNotify list is empty. +0 + +Notify Header +XP_TE_NOTIFYHEAD +pevt_generic_none_help +%C24,18 %B Notify List +0 + +Notify Number +XP_TE_NOTIFYNUMBER +pevt_notifynumber_help +%C22*%O$t$1 users in notify list. +1 + +Notify Offline +XP_TE_NOTIFYOFFLINE +pevt_generic_nick_help +%C22*%O$tNotify: $1 is offline ($3). +3 + +Notify Online +XP_TE_NOTIFYONLINE +pevt_generic_nick_help +%C22*%O$tNotify: $1 is online ($3). +3 + +Open Dialog +XP_TE_OPENDIALOG +pevt_generic_none_help + +n0 + +Part +XP_TE_PART +pevt_part_help +%C23*%O$t%C23$1 (%O%C23$2) has left $3 +3 + +Part with Reason +XP_TE_PARTREASON +pevt_partreason_help +%C23*%O$t%C23$1 (%O%C23$2) has left $3 (%O%C23%B%B$4%O%C23) +4 + +Ping Reply +XP_TE_PINGREP +pevt_pingrep_help +%C22*%O$tPing reply from $1: $2 second(s) +2 + +Ping Timeout +XP_TE_PINGTIMEOUT +pevt_pingtimeout_help +%C22*%O$tNo ping reply for $1 seconds, disconnecting. +1 + +Private Action +XP_TE_PRIVACTION +pevt_privmsg_help +%C18**$t$3$1%O $2 %C18** +n3 + +Private Action to Dialog +XP_TE_DPRIVACTION +pevt_privmsg_help +%C18*$t$3$1%O $2 +n3 + +Private Message +XP_TE_PRIVMSG +pevt_privmsg_help +%C28*%C29$3$1%C28*$t%O$2 +n3 + +Private Message to Dialog +XP_TE_DPRIVMSG +pevt_privmsg_help +%C18%H<%H$3$1%H>%H%O$t$2 +n3 + +Process Already Running +XP_TE_ALREADYPROCESS +pevt_generic_none_help +%C22*%O$tA process is already running +0 + +Quit +XP_TE_QUIT +pevt_quit_help +%C23*%O$t%C23$1 has quit (%O%C23%B%B$2%O%C23) +3 + +Raw Modes +XP_TE_RAWMODES +pevt_rawmodes_help +%C22*%O$t$1 sets modes%B %C30[%O$2%B%C30] +2 + +Receive Wallops +XP_TE_WALLOPS +pevt_privmsg_help +%C28-%C29$1/Wallops%C28-%O$t$2 +2 + +Resolving User +XP_TE_RESOLVINGUSER +pevt_resolvinguser_help +%C22*%O$tLooking up IP number for%C26 $1%O... +2 + +Server Connected +XP_TE_SERVERCONNECTED +pevt_generic_none_help +%C22*%O$t%C22Connected. +0 + +Server Error +XP_TE_SERVERERROR +pevt_servererror_help +%C22*%O$t$1 +n1 + +Server Lookup +XP_TE_SERVERLOOKUP +pevt_serverlookup_help +%C22*%O$t%C22Looking up $1 +1 + +Server Notice +XP_TE_SERVNOTICE +pevt_servertext_help +%C22*%O$t$1 +n2 + +Server Text +XP_TE_SERVTEXT +pevt_servertext_help +%C22*%O$t$1 +n3 + +SSL Message +XP_TE_SSLMESSAGE +pevt_sslmessage_help +%C22*%O$t$1 +n2 + +Stop Connection +XP_TE_STOPCONNECT +pevt_sconnect_help +%C22*%O$tStopped previous connection attempt (pid=$1) +1 + +Topic +XP_TE_TOPIC +pevt_topic_help +%C29*%O$t%C29Topic for $1%C %C29is: $2 +2 + +Topic Change +XP_TE_NEWTOPIC +pevt_newtopic_help +%C22*%O$t$1 has changed the topic to: $2 +3 + +Topic Creation +XP_TE_TOPICDATE +pevt_topicdate_help +%C29*%O$t%C29Topic for $1%C %C29set by $2%C %C29at $3 +3 + +Unknown Host +XP_TE_UKNHOST +pevt_generic_none_help +%C22*%O$tUnknown host. Maybe you misspelled it? +0 + +User Limit +XP_TE_USERLIMIT +pevt_generic_channel_help +%C22*%O$tCannot join%C26 %B$1 %O(User limit reached). +1 + +Users On Channel +XP_TE_USERSONCHAN +pevt_usersonchan_help +%C22*%O$t%C26Users on $1:%C $2 +2 + +WhoIs Authenticated +XP_TE_WHOIS_AUTH +pevt_whoisauth_help +%C22*%O$t%C28[%O$1%C28] %O$2%C27 $3 +3 + +WhoIs Away Line +XP_TE_WHOIS5 +pevt_whois5_help +%C22*%O$t%C28[%O$1%C28] %Cis away %C30(%O$2%O%C30) +2 + +WhoIs Channel/Oper Line +XP_TE_WHOIS2 +pevt_whois2_help +%C22*%O$t%C28[%O$1%C28]%O $2 +2 + +WhoIs End +XP_TE_WHOIS6 +pevt_whois6_help +%C22*%O$t%C28[%O$1%C28] %OEnd of WHOIS list. +1 + +WhoIs Identified +XP_TE_WHOIS_ID +pevt_whoisid_help +%C22*%O$t%C28[%O$1%C28]%O $2 +2 + +WhoIs Idle Line +XP_TE_WHOIS4 +pevt_whois4_help +%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2 +2 + +WhoIs Idle Line with Signon +XP_TE_WHOIS4T +pevt_whois4t_help +%C22*%O$t%C28[%O$1%C28]%O idle%C26 $2%O, signon:%C26 $3 +3 + +WhoIs Name Line +XP_TE_WHOIS1 +pevt_whois1_help +%C22*%O$t%C28[%O$1%C28] %C30(%O$2@$3%C30)%O: $4 +4 + +WhoIs Real Host +XP_TE_WHOIS_REALHOST +pevt_whoisrealhost_help +%C22*%O$t%C28[%O$1%C28] %Oreal user@host%C27 $2%O, real IP%C27 $3 +4 + +WhoIs Server Line +XP_TE_WHOIS3 +pevt_whois3_help +%C22*%O$t%C28[%O$1%C28]%O $2 +2 + +WhoIs Special +XP_TE_WHOIS_SPECIAL +pevt_whoisid_help +%C22*%O$t%C28[%O$1%C28]%O $2 +3 + +You Join +XP_TE_UJOIN +pevt_join_help +%C19*%O$t%C19Now talking on $2 +3 + +You Kicked +XP_TE_UKICK +pevt_ukick_help +%C23*$tYou have been kicked from $2 by $3 ($4%O%C23) +4 + +You Part +XP_TE_UPART +pevt_part_help +%C23*$tYou have left channel $3 +3 + +You Part with Reason +XP_TE_UPARTREASON +pevt_partreason_help +%C23*$tYou have left channel $3 (%O%C23%B%B$4%O%C23) +4 + +Your Action +XP_TE_UACTION +pevt_chanaction_help +%C18*$t$1%O $2 +n3 + +Your Invitation +XP_TE_UINVITE +pevt_uinvite_help +%C22*%O$tYou've invited%C26 $1%O to%C26 $2%O (%C26$3%O) +3 + +Your Message +XP_TE_UCHANMSG +pevt_chanmsg_help +%C31%H<%H$4$1%H>%H%O%C30$t$2 +n4 + +Your Nick Changing +XP_TE_UCHANGENICK +pevt_uchangenick_help +%C22*%O$tYou are now known as $2 +2 + diff --git a/xchat-2.8.8/src/common/tree.c b/xchat-2.8.8/src/common/tree.c new file mode 100644 index 0000000..1627bd9 --- /dev/null +++ b/xchat-2.8.8/src/common/tree.c @@ -0,0 +1,215 @@ +/* +This is used for quick userlist insertion and lookup. It's not really +a tree, but it could be :) +*/ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> + +#include "tree.h" + +#define ARRAY_GROW 32 + +struct _tree +{ + int elements; + int array_size; + void **array; + tree_cmp_func *cmp; + void *data; +}; + +tree * +tree_new (tree_cmp_func *cmp, void *data) +{ + tree *t = calloc (1, sizeof (tree)); + t->cmp = cmp; + t->data = data; + return t; +} + +void +tree_destroy (tree *t) +{ + if (t) + { + if (t->array) + free (t->array); + free (t); + } +} + +static int +tree_find_insertion_pos (tree *t, void *key, int *done) +{ + int c, u, l, idx; + + if (t->elements < 1) + { + *done = 1; + t->array[0] = key; + t->elements++; + return 0; + } + + if (t->elements < 2) + { + *done = 1; + c = t->cmp (key, t->array[0], t->data); + if (c == 0) + return -1; + t->elements++; + if (c > 0) + { + t->array[1] = key; + return 1; + } + t->array[1] = t->array[0]; + t->array[0] = key; + return 0; + } + + *done = 0; + + c = t->cmp (key, t->array[0], t->data); + if (c < 0) + return 0; /* prepend */ + + c = t->cmp (key, t->array[t->elements - 1], t->data); + if (c > 0) + return t->elements; /* append */ + + l = 0; + u = t->elements - 1; + while (1) + { + idx = (l + u) / 2; + c = t->cmp (key, t->array[idx], t->data); + + if (0 > c) + u = idx; + else if (0 < c && 0 > t->cmp (key, t->array[idx+1], t->data)) + return idx + 1; + else if (c == 0) + return -1; + else + l = idx + 1; + } +} + +static void +tree_insert_at_pos (tree *t, void *key, int pos) +{ + int post_bytes; + + /* append is easy */ + if (pos != t->elements) + { + post_bytes = (t->elements - pos) * sizeof (void *); + memmove (&t->array[pos + 1], &t->array[pos], post_bytes); + } + + t->array[pos] = key; + t->elements++; +} + +static void * +mybsearch (const void *key, void **array, size_t nmemb, + int (*compar) (const void *, const void *, void *data), void *data, int *pos) +{ + int l, u, idx; + int comparison; + + l = 0; + u = nmemb; + while (l < u) + { + idx = (l + u) / 2; + comparison = (*compar) (key, array[idx], data); + if (comparison < 0) + u = idx; + else if (comparison > 0) + l = idx + 1; + else + { + *pos = idx; + return array[idx]; + } + } + + return NULL; +} + +void * +tree_find (tree *t, void *key, tree_cmp_func *cmp, void *data, int *pos) +{ + if (!t || !t->array) + return NULL; + + return mybsearch (key, &t->array[0], t->elements, cmp, data, pos); +} + +static void +tree_remove_at_pos (tree *t, int pos) +{ + int post_bytes; + + t->elements--; + if (pos != t->elements) + { + post_bytes = (t->elements - pos) * sizeof (void *); + memmove (&t->array[pos], &t->array[pos + 1], post_bytes); + } +} + +int +tree_remove (tree *t, void *key, int *pos) +{ + void *data; + + data = tree_find (t, key, t->cmp, t->data, pos); + if (!data) + return 0; + + tree_remove_at_pos (t, *pos); + return 1; +} + +void +tree_foreach (tree *t, tree_traverse_func *func, void *data) +{ + int j; + + if (!t || !t->array) + return; + + for (j = 0; j < t->elements; j++) + { + if (!func (t->array[j], data)) + break; + } +} + +int +tree_insert (tree *t, void *key) +{ + int pos, done; + + if (!t) + return -1; + + if (t->array_size < t->elements + 1) + { + int new_size = t->array_size + ARRAY_GROW; + + t->array = realloc (t->array, sizeof (void *) * new_size); + t->array_size = new_size; + } + + pos = tree_find_insertion_pos (t, key, &done); + if (!done && pos != -1) + tree_insert_at_pos (t, key, pos); + + return pos; +} diff --git a/xchat-2.8.8/src/common/tree.h b/xchat-2.8.8/src/common/tree.h new file mode 100644 index 0000000..b1b66aa --- /dev/null +++ b/xchat-2.8.8/src/common/tree.h @@ -0,0 +1,16 @@ +#ifndef XCHAT_TREE_H +#define XCHAT_TREE_H + +typedef struct _tree tree; + +typedef int (tree_cmp_func) (const void *keya, const void *keyb, void *data); +typedef int (tree_traverse_func) (const void *key, void *data); + +tree *tree_new (tree_cmp_func *cmp, void *data); +void tree_destroy (tree *t); +void *tree_find (tree *t, void *key, tree_cmp_func *cmp, void *data, int *pos); +int tree_remove (tree *t, void *key, int *pos); +void tree_foreach (tree *t, tree_traverse_func *func, void *data); +int tree_insert (tree *t, void *key); + +#endif diff --git a/xchat-2.8.8/src/common/url.c b/xchat-2.8.8/src/common/url.c new file mode 100644 index 0000000..92aeab0 --- /dev/null +++ b/xchat-2.8.8/src/common/url.c @@ -0,0 +1,280 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <ctype.h> +#include "xchat.h" +#include "cfgfiles.h" +#include "fe.h" +#include "tree.h" +#include "url.h" +#ifdef HAVE_STRINGS_H +#include <strings.h> +#endif + +void *url_tree = NULL; + + +static int +url_free (char *url, void *data) +{ + free (url); + return TRUE; +} + +void +url_clear (void) +{ + tree_foreach (url_tree, (tree_traverse_func *)url_free, NULL); + tree_destroy (url_tree); + url_tree = NULL; +} + +static int +url_save_cb (char *url, FILE *fd) +{ + fprintf (fd, "%s\n", url); + return TRUE; +} + +void +url_save (const char *fname, const char *mode, gboolean fullpath) +{ + FILE *fd; + + if (fullpath) + fd = xchat_fopen_file (fname, mode, XOF_FULLPATH); + else + fd = xchat_fopen_file (fname, mode, 0); + if (fd == NULL) + return; + + tree_foreach (url_tree, (tree_traverse_func *)url_save_cb, fd); + fclose (fd); +} + +void +url_autosave (void) +{ + url_save ("url.save", "a", FALSE); +} + +static int +url_find (char *urltext) +{ + int pos; + + if (tree_find (url_tree, urltext, (tree_cmp_func *)strcasecmp, NULL, &pos)) + return 1; + return 0; +} + +static void +url_add (char *urltext, int len) +{ + char *data = malloc (len + 1); + if (!data) + return; + memcpy (data, urltext, len); + data[len] = 0; + + if (data[len - 1] == '.') /* chop trailing dot */ + { + len--; + data[len] = 0; + } + if (data[len - 1] == ')') /* chop trailing ) */ + data[len - 1] = 0; + + if (url_find (data)) + { + free (data); + return; + } + + if (!url_tree) + url_tree = tree_new ((tree_cmp_func *)strcasecmp, NULL); + + tree_insert (url_tree, data); + fe_url_add (data); +} + +/* check if a word is clickable. This is called on mouse motion events, so + keep it FAST! This new version was found to be almost 3x faster than + 2.4.4 release. */ + +int +url_check_word (char *word, int len) +{ +#define D(x) (x), ((sizeof (x)) - 1) + static const struct { + const char *s; + int len; + } + prefix[] = { + { D("irc.") }, + { D("ftp.") }, + { D("www.") }, + { D("irc://") }, + { D("ftp://") }, + { D("http://") }, + { D("https://") }, + { D("file://") }, + { D("rtsp://") }, + { D("ut2004://") }, + }, + suffix[] = { + { D(".org") }, + { D(".net") }, + { D(".com") }, + { D(".edu") }, + { D(".html") }, + { D(".info") }, + { D(".name") }, + }; +#undef D + const char *at, *dot; + int i, dots; + + if (len > 1 && word[1] == '#' && strchr("@+^%*#", word[0])) + return WORD_CHANNEL; + + if ((word[0] == '#' || word[0] == '&') && word[1] != '#' && word[1] != 0) + return WORD_CHANNEL; + + for (i = 0; i < G_N_ELEMENTS(prefix); i++) + { + int l; + + l = prefix[i].len; + if (len > l) + { + int j; + + /* This is pretty much strncasecmp(). */ + for (j = 0; j < l; j++) + { + unsigned char c = word[j]; + if (tolower(c) != prefix[i].s[j]) + break; + } + if (j == l) + return WORD_URL; + } + } + + at = strchr (word, '@'); /* check for email addy */ + dot = strrchr (word, '.'); + if (at && dot) + { + if (at < dot) + { + if (strchr (word, '*')) + return WORD_HOST; + else + return WORD_EMAIL; + } + } + + /* check if it's an IP number */ + dots = 0; + for (i = 0; i < len; i++) + { + if (word[i] == '.' && i > 0) + dots++; /* allow 127.0.0.1:80 */ + else if (!isdigit ((unsigned char) word[i]) && word[i] != ':') + { + dots = 0; + break; + } + } + if (dots == 3) + return WORD_HOST; + + if (len > 5) + { + for (i = 0; i < G_N_ELEMENTS(suffix); i++) + { + int l; + + l = suffix[i].len; + if (len > l) + { + const unsigned char *p = &word[len - l]; + int j; + + /* This is pretty much strncasecmp(). */ + for (j = 0; j < l; j++) + { + if (tolower(p[j]) != suffix[i].s[j]) + break; + } + if (j == l) + return WORD_HOST; + } + } + + if (word[len - 3] == '.' && + isalpha ((unsigned char) word[len - 2]) && + isalpha ((unsigned char) word[len - 1])) + return WORD_HOST; + } + + return 0; +} + +void +url_check_line (char *buf, int len) +{ + char *po = buf; + char *start; + int wlen; + + if (buf[0] == ':' && buf[1] != 0) + po++; + + start = po; + + /* check each "word" (space separated) */ + while (1) + { + switch (po[0]) + { + case 0: + case ' ': + wlen = po - start; + if (wlen > 2) + { + if (url_check_word (start, wlen) == WORD_URL) + { + url_add (start, wlen); + } + } + if (po[0] == 0) + return; + po++; + start = po; + break; + + default: + po++; + } + } +} diff --git a/xchat-2.8.8/src/common/url.h b/xchat-2.8.8/src/common/url.h new file mode 100644 index 0000000..487a200 --- /dev/null +++ b/xchat-2.8.8/src/common/url.h @@ -0,0 +1,19 @@ +#ifndef XCHAT_URL_H +#define XCHAT_URL_H + +extern void *url_tree; + +#define WORD_URL 1 +#define WORD_NICK 2 +#define WORD_CHANNEL 3 +#define WORD_HOST 4 +#define WORD_EMAIL 5 +#define WORD_DIALOG -1 + +void url_clear (void); +void url_save (const char *fname, const char *mode, gboolean fullpath); +void url_autosave (void); +int url_check_word (char *word, int len); +void url_check_line (char *buf, int len); + +#endif diff --git a/xchat-2.8.8/src/common/userlist.c b/xchat-2.8.8/src/common/userlist.c new file mode 100644 index 0000000..18ac4be --- /dev/null +++ b/xchat-2.8.8/src/common/userlist.c @@ -0,0 +1,454 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "xchat.h" +#include "modes.h" +#include "fe.h" +#include "notify.h" +#include "tree.h" +#include "xchatc.h" +#include "util.h" + + +static int +nick_cmp_az_ops (server *serv, struct User *user1, struct User *user2) +{ + unsigned int access1 = user1->access; + unsigned int access2 = user2->access; + int pos; + + if (access1 != access2) + { + for (pos = 0; pos < USERACCESS_SIZE; pos++) + { + if ((access1&(1<<pos)) && (access2&(1<<pos))) + break; + if ((access1&(1<<pos)) && !(access2&(1<<pos))) + return -1; + if (!(access1&(1<<pos)) && (access2&(1<<pos))) + return 1; + } + } + + return serv->p_cmp (user1->nick, user2->nick); +} + +static int +nick_cmp_alpha (struct User *user1, struct User *user2, server *serv) +{ + return serv->p_cmp (user1->nick, user2->nick); +} + +static int +nick_cmp (struct User *user1, struct User *user2, server *serv) +{ + switch (prefs.userlist_sort) + { + case 0: + return nick_cmp_az_ops (serv, user1, user2); + case 1: + return serv->p_cmp (user1->nick, user2->nick); + case 2: + return -1 * nick_cmp_az_ops (serv, user1, user2); + case 3: + return -1 * serv->p_cmp (user1->nick, user2->nick); + default: + return -1; + } +} + +/* + insert name in appropriate place in linked list. Returns row number or: + -1: duplicate +*/ + +static int +userlist_insertname (session *sess, struct User *newuser) +{ + if (!sess->usertree) + { + sess->usertree = tree_new ((tree_cmp_func *)nick_cmp, sess->server); + sess->usertree_alpha = tree_new ((tree_cmp_func *)nick_cmp_alpha, sess->server); + } + + tree_insert (sess->usertree_alpha, newuser); + return tree_insert (sess->usertree, newuser); +} + +void +userlist_set_away (struct session *sess, char *nick, unsigned int away) +{ + struct User *user; + + user = userlist_find (sess, nick); + if (user) + { + if (user->away != away) + { + user->away = away; + /* rehash GUI */ + fe_userlist_rehash (sess, user); + if (away) + fe_userlist_update (sess, user); + } + } +} + +int +userlist_add_hostname (struct session *sess, char *nick, char *hostname, + char *realname, char *servername, unsigned int away) +{ + struct User *user; + + user = userlist_find (sess, nick); + if (user) + { + if (!user->hostname && hostname) + user->hostname = strdup (hostname); + if (!user->realname && realname) + user->realname = strdup (realname); + if (!user->servername && servername) + user->servername = strdup (servername); + + if (away != 0xff) + { + if (prefs.showhostname_in_userlist || user->away != away) + { + user->away = away; + fe_userlist_rehash (sess, user); + } + user->away = away; + } + + fe_userlist_update (sess, user); + + return 1; + } + return 0; +} + +static int +free_user (struct User *user, gpointer data) +{ + if (user->realname) + free (user->realname); + if (user->hostname) + free (user->hostname); + if (user->servername) + free (user->servername); + free (user); + + return TRUE; +} + +void +userlist_free (session *sess) +{ + tree_foreach (sess->usertree, (tree_traverse_func *)free_user, NULL); + tree_destroy (sess->usertree); + tree_destroy (sess->usertree_alpha); + + sess->usertree = NULL; + sess->usertree_alpha = NULL; + sess->me = NULL; + + sess->ops = 0; + sess->hops = 0; + sess->voices = 0; + sess->total = 0; +} + +void +userlist_clear (session *sess) +{ + fe_userlist_clear (sess); + userlist_free (sess); + fe_userlist_numbers (sess); +} + +static int +find_cmp (const char *name, struct User *user, server *serv) +{ + return serv->p_cmp ((char *)name, user->nick); +} + +struct User * +userlist_find (struct session *sess, char *name) +{ + int pos; + + if (sess->usertree_alpha) + return tree_find (sess->usertree_alpha, name, + (tree_cmp_func *)find_cmp, sess->server, &pos); + + return NULL; +} + +struct User * +userlist_find_global (struct server *serv, char *name) +{ + struct User *user; + session *sess; + GSList *list = sess_list; + while (list) + { + sess = (session *) list->data; + if (sess->server == serv) + { + user = userlist_find (sess, name); + if (user) + return user; + } + list = list->next; + } + return 0; +} + +static void +update_counts (session *sess, struct User *user, char prefix, + int level, int offset) +{ + switch (prefix) + { + case '@': + user->op = level; + sess->ops += offset; + break; + case '%': + user->hop = level; + sess->hops += offset; + break; + case '+': + user->voice = level; + sess->voices += offset; + break; + } +} + +void +userlist_update_mode (session *sess, char *name, char mode, char sign) +{ + int access; + int offset = 0; + int level; + int pos; + char prefix; + struct User *user; + + user = userlist_find (sess, name); + if (!user) + return; + + /* remove from binary trees, before we loose track of it */ + tree_remove (sess->usertree, user, &pos); + tree_remove (sess->usertree_alpha, user, &pos); + + /* which bit number is affected? */ + access = mode_access (sess->server, mode, &prefix); + + if (sign == '+') + { + level = TRUE; + if (!(user->access & (1 << access))) + { + offset = 1; + user->access |= (1 << access); + } + } else + { + level = FALSE; + if (user->access & (1 << access)) + { + offset = -1; + user->access &= ~(1 << access); + } + } + + /* now what is this users highest prefix? e.g. @ for ops */ + user->prefix[0] = get_nick_prefix (sess->server, user->access); + + /* update the various counts using the CHANGED prefix only */ + update_counts (sess, user, prefix, level, offset); + + /* insert it back into its new place */ + tree_insert (sess->usertree_alpha, user); + pos = tree_insert (sess->usertree, user); + + /* let GTK move it too */ + fe_userlist_move (sess, user, pos); + fe_userlist_numbers (sess); +} + +int +userlist_change (struct session *sess, char *oldname, char *newname) +{ + struct User *user = userlist_find (sess, oldname); + int pos; + + if (user) + { + tree_remove (sess->usertree, user, &pos); + tree_remove (sess->usertree_alpha, user, &pos); + + safe_strcpy (user->nick, newname, NICKLEN); + + tree_insert (sess->usertree_alpha, user); + + fe_userlist_move (sess, user, tree_insert (sess->usertree, user)); + fe_userlist_numbers (sess); + + return 1; + } + + return 0; +} + +int +userlist_remove (struct session *sess, char *name) +{ + struct User *user; + int pos; + + user = userlist_find (sess, name); + if (!user) + return FALSE; + + if (user->voice) + sess->voices--; + if (user->op) + sess->ops--; + if (user->hop) + sess->hops--; + sess->total--; + fe_userlist_numbers (sess); + fe_userlist_remove (sess, user); + + if (user == sess->me) + sess->me = NULL; + + tree_remove (sess->usertree, user, &pos); + tree_remove (sess->usertree_alpha, user, &pos); + free_user (user, NULL); + + return TRUE; +} + +void +userlist_add (struct session *sess, char *name, char *hostname) +{ + struct User *user; + int row, prefix_chars; + unsigned int acc; + + acc = nick_access (sess->server, name, &prefix_chars); + + notify_set_online (sess->server, name + prefix_chars); + + user = malloc (sizeof (struct User)); + memset (user, 0, sizeof (struct User)); + + user->access = acc; + + /* assume first char is the highest level nick prefix */ + if (prefix_chars) + user->prefix[0] = name[0]; + + /* add it to our linked list */ + if (hostname) + user->hostname = strdup (hostname); + safe_strcpy (user->nick, name + prefix_chars, NICKLEN); + /* is it me? */ + if (!sess->server->p_cmp (user->nick, sess->server->nick)) + user->me = TRUE; + row = userlist_insertname (sess, user); + + /* duplicate? some broken servers trigger this */ + if (row == -1) + { + if (user->hostname) + free (user->hostname); + free (user); + return; + } + + sess->total++; + + /* most ircds don't support multiple modechars infront of the nickname + for /NAMES - though they should. */ + while (prefix_chars) + { + update_counts (sess, user, name[0], TRUE, 1); + name++; + prefix_chars--; + } + + if (user->me) + sess->me = user; + + fe_userlist_insert (sess, user, row, FALSE); + fe_userlist_numbers (sess); +} + +static int +rehash_cb (struct User *user, session *sess) +{ + fe_userlist_rehash (sess, user); + return TRUE; +} + +void +userlist_rehash (session *sess) +{ + tree_foreach (sess->usertree_alpha, (tree_traverse_func *)rehash_cb, sess); +} + +static int +flat_cb (struct User *user, GSList **list) +{ + *list = g_slist_prepend (*list, user); + return TRUE; +} + +GSList * +userlist_flat_list (session *sess) +{ + GSList *list = NULL; + + tree_foreach (sess->usertree_alpha, (tree_traverse_func *)flat_cb, &list); + return g_slist_reverse (list); +} + +static int +double_cb (struct User *user, GList **list) +{ + *list = g_list_prepend(*list, user); + return TRUE; +} + +GList * +userlist_double_list(session *sess) +{ + GList *list = NULL; + + tree_foreach (sess->usertree_alpha, (tree_traverse_func *)double_cb, &list); + return list; +} diff --git a/xchat-2.8.8/src/common/userlist.h b/xchat-2.8.8/src/common/userlist.h new file mode 100644 index 0000000..28831ac --- /dev/null +++ b/xchat-2.8.8/src/common/userlist.h @@ -0,0 +1,41 @@ +#include <time.h> + +#ifndef XCHAT_USERLIST_H +#define XCHAT_USERLIST_H + +struct User +{ + char nick[NICKLEN]; + char *hostname; + char *realname; + char *servername; + time_t lasttalk; + unsigned int access; /* axs bit field */ + char prefix[2]; /* @ + % */ + unsigned int op:1; + unsigned int hop:1; + unsigned int voice:1; + unsigned int me:1; + unsigned int away:1; + unsigned int selected:1; +}; + +#define USERACCESS_SIZE 12 + +int userlist_add_hostname (session *sess, char *nick, + char *hostname, char *realname, + char *servername, unsigned int away); +void userlist_set_away (session *sess, char *nick, unsigned int away); +struct User *userlist_find (session *sess, char *name); +struct User *userlist_find_global (server *serv, char *name); +void userlist_clear (session *sess); +void userlist_free (session *sess); +void userlist_add (session *sess, char *name, char *hostname); +int userlist_remove (session *sess, char *name); +int userlist_change (session *sess, char *oldname, char *newname); +void userlist_update_mode (session *sess, char *name, char mode, char sign); +GSList *userlist_flat_list (session *sess); +GList *userlist_double_list (session *sess); +void userlist_rehash (session *sess); + +#endif diff --git a/xchat-2.8.8/src/common/util.c b/xchat-2.8.8/src/common/util.c new file mode 100644 index 0000000..49517ec --- /dev/null +++ b/xchat-2.8.8/src/common/util.c @@ -0,0 +1,1729 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#define __APPLE_API_STRICT_CONFORMANCE + +#define _FILE_OFFSET_BITS 64 +#include <stdio.h> +#include <unistd.h> +#include <string.h> +#include <stdlib.h> +#include <sys/types.h> +#include <sys/stat.h> +#ifdef WIN32 +#include <sys/timeb.h> +#include <process.h> +#else +#include <sys/types.h> +#include <pwd.h> +#include <sys/time.h> +#include <sys/utsname.h> +#endif +#include <fcntl.h> +#include <dirent.h> +#include <errno.h> +#include "xchat.h" +#include "xchatc.h" +#include <glib/gmarkup.h> +#include <ctype.h> +#include "util.h" +#include "../../config.h" + +#define WANTSOCKET +#include "inet.h" + +#if defined (USING_FREEBSD) || defined (__APPLE__) +#include <sys/sysctl.h> +#endif +#ifdef SOCKS +#include <socks.h> +#endif + +#ifndef HAVE_SNPRINTF +#define snprintf g_snprintf +#endif + +#ifdef USE_DEBUG + +#undef free +#undef malloc +#undef realloc +#undef strdup + +int current_mem_usage; + +struct mem_block +{ + char *file; + void *buf; + int size; + int line; + int total; + struct mem_block *next; +}; + +struct mem_block *mroot = NULL; + +void * +xchat_malloc (int size, char *file, int line) +{ + void *ret; + struct mem_block *new; + + current_mem_usage += size; + ret = malloc (size); + if (!ret) + { + printf ("Out of memory! (%d)\n", current_mem_usage); + exit (255); + } + + new = malloc (sizeof (struct mem_block)); + new->buf = ret; + new->size = size; + new->next = mroot; + new->line = line; + new->file = strdup (file); + mroot = new; + + printf ("%s:%d Malloc'ed %d bytes, now \033[35m%d\033[m\n", file, line, + size, current_mem_usage); + + return ret; +} + +void * +xchat_realloc (char *old, int len, char *file, int line) +{ + char *ret; + + ret = xchat_malloc (len, file, line); + if (ret) + { + strcpy (ret, old); + xchat_dfree (old, file, line); + } + return ret; +} + +void * +xchat_strdup (char *str, char *file, int line) +{ + void *ret; + struct mem_block *new; + int size; + + size = strlen (str) + 1; + current_mem_usage += size; + ret = malloc (size); + if (!ret) + { + printf ("Out of memory! (%d)\n", current_mem_usage); + exit (255); + } + strcpy (ret, str); + + new = malloc (sizeof (struct mem_block)); + new->buf = ret; + new->size = size; + new->next = mroot; + new->line = line; + new->file = strdup (file); + mroot = new; + + printf ("%s:%d strdup (\"%-.40s\") size: %d, total: \033[35m%d\033[m\n", + file, line, str, size, current_mem_usage); + + return ret; +} + +void +xchat_mem_list (void) +{ + struct mem_block *cur, *p; + GSList *totals = 0; + GSList *list; + + cur = mroot; + while (cur) + { + list = totals; + while (list) + { + p = list->data; + if (p->line == cur->line && + strcmp (p->file, cur->file) == 0) + { + p->total += p->size; + break; + } + list = list->next; + } + if (!list) + { + cur->total = cur->size; + totals = g_slist_prepend (totals, cur); + } + cur = cur->next; + } + + fprintf (stderr, "file line size num total\n"); + list = totals; + while (list) + { + cur = list->data; + fprintf (stderr, "%-15.15s %6d %6d %6d %6d\n", cur->file, cur->line, + cur->size, cur->total/cur->size, cur->total); + list = list->next; + } +} + +void +xchat_dfree (void *buf, char *file, int line) +{ + struct mem_block *cur, *last; + + if (buf == NULL) + { + printf ("%s:%d \033[33mTried to free NULL\033[m\n", file, line); + return; + } + + last = NULL; + cur = mroot; + while (cur) + { + if (buf == cur->buf) + break; + last = cur; + cur = cur->next; + } + if (cur == NULL) + { + printf ("%s:%d \033[31mTried to free unknown block %lx!\033[m\n", + file, line, (unsigned long) buf); + /* abort(); */ + free (buf); + return; + } + current_mem_usage -= cur->size; + printf ("%s:%d Free'ed %d bytes, usage now \033[35m%d\033[m\n", + file, line, cur->size, current_mem_usage); + if (last) + last->next = cur->next; + else + mroot = cur->next; + free (cur->file); + free (cur); +} + +#define malloc(n) xchat_malloc(n, __FILE__, __LINE__) +#define realloc(n, m) xchat_realloc(n, m, __FILE__, __LINE__) +#define free(n) xchat_dfree(n, __FILE__, __LINE__) +#define strdup(n) xchat_strdup(n, __FILE__, __LINE__) + +#endif /* MEMORY_DEBUG */ + +char * +file_part (char *file) +{ + char *filepart = file; + if (!file) + return ""; + while (1) + { + switch (*file) + { + case 0: + return (filepart); + case '/': +#ifdef WIN32 + case '\\': +#endif + filepart = file + 1; + break; + } + file++; + } +} + +void +path_part (char *file, char *path, int pathlen) +{ + unsigned char t; + char *filepart = file_part (file); + t = *filepart; + *filepart = 0; + safe_strcpy (path, file, pathlen); + *filepart = t; +} + +char * /* like strstr(), but nocase */ +nocasestrstr (const char *s, const char *wanted) +{ + register const int len = strlen (wanted); + + if (len == 0) + return (char *)s; + while (rfc_tolower(*s) != rfc_tolower(*wanted) || strncasecmp (s, wanted, len)) + if (*s++ == '\0') + return (char *)NULL; + return (char *)s; +} + +char * +errorstring (int err) +{ + switch (err) + { + case -1: + return ""; + case 0: + return _("Remote host closed socket"); +#ifndef WIN32 + } +#else + case WSAECONNREFUSED: + return _("Connection refused"); + case WSAENETUNREACH: + case WSAEHOSTUNREACH: + return _("No route to host"); + case WSAETIMEDOUT: + return _("Connection timed out"); + case WSAEADDRNOTAVAIL: + return _("Cannot assign that address"); + case WSAECONNRESET: + return _("Connection reset by peer"); + } + + /* can't use strerror() on Winsock errors! */ + if (err >= WSABASEERR) + { + static char tbuf[384]; + OSVERSIONINFO osvi; + + osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFO); + GetVersionEx (&osvi); + + /* FormatMessage works on WSA*** errors starting from Win2000 */ + if (osvi.dwMajorVersion >= 5) + { + if (FormatMessageA (FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS | + FORMAT_MESSAGE_MAX_WIDTH_MASK, + NULL, err, + MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT), + tbuf, sizeof (tbuf), NULL)) + { + int len; + char *utf; + + tbuf[sizeof (tbuf) - 1] = 0; + len = strlen (tbuf); + if (len >= 2) + tbuf[len - 2] = 0; /* remove the cr-lf */ + + /* now convert to utf8 */ + utf = g_locale_to_utf8 (tbuf, -1, 0, 0, 0); + if (utf) + { + safe_strcpy (tbuf, utf, sizeof (tbuf)); + g_free (utf); + return tbuf; + } + } + } /* ! if (osvi.dwMajorVersion >= 5) */ + + /* fallback to error number */ + sprintf (tbuf, "%s %d", _("Error"), err); + return tbuf; + } /* ! if (err >= WSABASEERR) */ +#endif /* ! WIN32 */ + + return strerror (err); +} + +int +waitline (int sok, char *buf, int bufsize, int use_recv) +{ + int i = 0; + + while (1) + { + if (use_recv) + { + if (recv (sok, &buf[i], 1, 0) < 1) + return -1; + } else + { + if (read (sok, &buf[i], 1) < 1) + return -1; + } + if (buf[i] == '\n' || bufsize == i + 1) + { + buf[i] = 0; + return i; + } + i++; + } +} + +/* checks for "~" in a file and expands */ + +char * +expand_homedir (char *file) +{ +#ifndef WIN32 + char *ret, *user; + struct passwd *pw; + + if (*file == '~') + { + if (file[1] != '\0' && file[1] != '/') + { + user = strdup(file); + if (strchr(user,'/') != NULL) + *(strchr(user,'/')) = '\0'; + if ((pw = getpwnam(user + 1)) == NULL) + { + free(user); + return strdup(file); + } + free(user); + user = strchr(file, '/') != NULL ? strchr(file,'/') : file; + ret = malloc(strlen(user) + strlen(pw->pw_dir) + 1); + strcpy(ret, pw->pw_dir); + strcat(ret, user); + } + else + { + ret = malloc (strlen (file) + strlen (g_get_home_dir ()) + 1); + sprintf (ret, "%s%s", g_get_home_dir (), file + 1); + } + return ret; + } +#endif + return strdup (file); +} + +gchar * +strip_color (const char *text, int len, int flags) +{ + char *new_str; + + if (len == -1) + len = strlen (text); + + new_str = g_malloc (len + 2); + strip_color2 (text, len, new_str, flags); + + if (flags & STRIP_ESCMARKUP) + { + char *esc = g_markup_escape_text (new_str, -1); + g_free (new_str); + return esc; + } + + return new_str; +} + +/* CL: strip_color2 strips src and writes the output at dst; pass the same pointer + in both arguments to strip in place. */ +int +strip_color2 (const char *src, int len, char *dst, int flags) +{ + int rcol = 0, bgcol = 0; + char *start = dst; + + if (len == -1) len = strlen (src); + while (len-- > 0) + { + if (rcol > 0 && (isdigit ((unsigned char)*src) || + (*src == ',' && isdigit ((unsigned char)src[1]) && !bgcol))) + { + if (src[1] != ',') rcol--; + if (*src == ',') + { + rcol = 2; + bgcol = 1; + } + } else + { + rcol = bgcol = 0; + switch (*src) + { + case '\003': /*ATTR_COLOR: */ + if (!(flags & STRIP_COLOR)) goto pass_char; + rcol = 2; + break; + case HIDDEN_CHAR: /* CL: invisible text (for event formats only) */ /* this takes care of the topic */ + if (!(flags & STRIP_HIDDEN)) goto pass_char; + break; + case '\007': /*ATTR_BEEP: */ + case '\017': /*ATTR_RESET: */ + case '\026': /*ATTR_REVERSE: */ + case '\002': /*ATTR_BOLD: */ + case '\037': /*ATTR_UNDERLINE: */ + case '\035': /*ATTR_ITALICS: */ + if (!(flags & STRIP_ATTRIB)) goto pass_char; + break; + default: + pass_char: + *dst++ = *src; + } + } + src++; + } + *dst = 0; + + return (int) (dst - start); +} + +int +strip_hidden_attribute (char *src, char *dst) +{ + int len = 0; + while (*src != '\000') + { + if (*src != HIDDEN_CHAR) + { + *dst++ = *src; + len++; + } + src++; + } + return len; +} + +#if defined (USING_LINUX) || defined (USING_FREEBSD) || defined (__APPLE__) + +static void +get_cpu_info (double *mhz, int *cpus) +{ + +#ifdef USING_LINUX + + char buf[256]; + int fh; + + *mhz = 0; + *cpus = 0; + + fh = open ("/proc/cpuinfo", O_RDONLY); /* linux 2.2+ only */ + if (fh == -1) + { + *cpus = 1; + return; + } + + while (1) + { + if (waitline (fh, buf, sizeof buf, FALSE) < 0) + break; + if (!strncmp (buf, "cycle frequency [Hz]\t:", 22)) /* alpha */ + { + *mhz = atoi (buf + 23) / 1000000; + } else if (!strncmp (buf, "cpu MHz\t\t:", 10)) /* i386 */ + { + *mhz = atof (buf + 11) + 0.5; + } else if (!strncmp (buf, "clock\t\t:", 8)) /* PPC */ + { + *mhz = atoi (buf + 9); + } else if (!strncmp (buf, "processor\t", 10)) + { + (*cpus)++; + } + } + close (fh); + if (!*cpus) + *cpus = 1; + +#endif +#ifdef USING_FREEBSD + + int mib[2], ncpu; + u_long freq; + size_t len; + + freq = 0; + *mhz = 0; + *cpus = 0; + + mib[0] = CTL_HW; + mib[1] = HW_NCPU; + + len = sizeof(ncpu); + sysctl(mib, 2, &ncpu, &len, NULL, 0); + + len = sizeof(freq); + sysctlbyname("machdep.tsc_freq", &freq, &len, NULL, 0); + + *cpus = ncpu; + *mhz = (freq / 1000000); + +#endif +#ifdef __APPLE__ + + int mib[2], ncpu; + unsigned long long freq; + size_t len; + + freq = 0; + *mhz = 0; + *cpus = 0; + + mib[0] = CTL_HW; + mib[1] = HW_NCPU; + + len = sizeof(ncpu); + sysctl(mib, 2, &ncpu, &len, NULL, 0); + + len = sizeof(freq); + sysctlbyname("hw.cpufrequency", &freq, &len, NULL, 0); + + *cpus = ncpu; + *mhz = (freq / 1000000); + +#endif + +} +#endif + +#ifdef WIN32 + +static int +get_mhz (void) +{ + HKEY hKey; + int result, data, dataSize; + + if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, "Hardware\\Description\\System\\" + "CentralProcessor\\0", 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS) + { + dataSize = sizeof (data); + result = RegQueryValueEx (hKey, "~MHz", 0, 0, (LPBYTE)&data, &dataSize); + RegCloseKey (hKey); + if (result == ERROR_SUCCESS) + return data; + } + return 0; /* fails on Win9x */ +} + +char * +get_cpu_str (void) +{ + static char verbuf[64]; + OSVERSIONINFO osvi; + SYSTEM_INFO si; + double mhz; + + osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFO); + GetVersionEx (&osvi); + GetSystemInfo (&si); + + mhz = get_mhz (); + if (mhz) + { + double cpuspeed = ( mhz > 1000 ) ? mhz / 1000 : mhz; + const char *cpuspeedstr = ( mhz > 1000 ) ? "GHz" : "MHz"; + sprintf (verbuf, "Windows %ld.%ld [i%d86/%.2f%s]", + osvi.dwMajorVersion, osvi.dwMinorVersion, si.wProcessorLevel, + cpuspeed, cpuspeedstr); + } else + sprintf (verbuf, "Windows %ld.%ld [i%d86]", + osvi.dwMajorVersion, osvi.dwMinorVersion, si.wProcessorLevel); + + return verbuf; +} + +#else + +char * +get_cpu_str (void) +{ +#if defined (USING_LINUX) || defined (USING_FREEBSD) || defined (__APPLE__) + double mhz; +#endif + int cpus = 1; + struct utsname un; + static char *buf = NULL; + + if (buf) + return buf; + + buf = malloc (128); + + uname (&un); + +#if defined (USING_LINUX) || defined (USING_FREEBSD) || defined (__APPLE__) + get_cpu_info (&mhz, &cpus); + if (mhz) + { + double cpuspeed = ( mhz > 1000 ) ? mhz / 1000 : mhz; + const char *cpuspeedstr = ( mhz > 1000 ) ? "GHz" : "MHz"; + snprintf (buf, 128, + (cpus == 1) ? "%s %s [%s/%.2f%s]" : "%s %s [%s/%.2f%s/SMP]", + un.sysname, un.release, un.machine, + cpuspeed, cpuspeedstr); + } else +#endif + snprintf (buf, 128, + (cpus == 1) ? "%s %s [%s]" : "%s %s [%s/SMP]", + un.sysname, un.release, un.machine); + + return buf; +} + +#endif + +int +buf_get_line (char *ibuf, char **buf, int *position, int len) +{ + int pos = *position, spos = pos; + + if (pos == len) + return 0; + + while (ibuf[pos++] != '\n') + { + if (pos == len) + return 0; + } + pos--; + ibuf[pos] = 0; + *buf = &ibuf[spos]; + pos++; + *position = pos; + return 1; +} + +int match(const char *mask, const char *string) +{ + register const char *m = mask, *s = string; + register char ch; + const char *bm, *bs; /* Will be reg anyway on a decent CPU/compiler */ + + /* Process the "head" of the mask, if any */ + while ((ch = *m++) && (ch != '*')) + switch (ch) + { + case '\\': + if (*m == '?' || *m == '*') + ch = *m++; + default: + if (rfc_tolower(*s) != rfc_tolower(ch)) + return 0; + case '?': + if (!*s++) + return 0; + }; + if (!ch) + return !(*s); + + /* We got a star: quickly find if/where we match the next char */ +got_star: + bm = m; /* Next try rollback here */ + while ((ch = *m++)) + switch (ch) + { + case '?': + if (!*s++) + return 0; + case '*': + bm = m; + continue; /* while */ + case '\\': + if (*m == '?' || *m == '*') + ch = *m++; + default: + goto break_while; /* C is structured ? */ + }; +break_while: + if (!ch) + return 1; /* mask ends with '*', we got it */ + ch = rfc_tolower(ch); + while (rfc_tolower(*s++) != ch) + if (!*s) + return 0; + bs = s; /* Next try start from here */ + + /* Check the rest of the "chunk" */ + while ((ch = *m++)) + { + switch (ch) + { + case '*': + goto got_star; + case '\\': + if (*m == '?' || *m == '*') + ch = *m++; + default: + if (rfc_tolower(*s) != rfc_tolower(ch)) + { + if (!*s) + return 0; + m = bm; + s = bs; + goto got_star; + }; + case '?': + if (!*s++) + return 0; + }; + }; + if (*s) + { + m = bm; + s = bs; + goto got_star; + }; + return 1; +} + +void +for_files (char *dirname, char *mask, void callback (char *file)) +{ + DIR *dir; + struct dirent *ent; + char *buf; + + dir = opendir (dirname); + if (dir) + { + while ((ent = readdir (dir))) + { + if (strcmp (ent->d_name, ".") && strcmp (ent->d_name, "..")) + { + if (match (mask, ent->d_name)) + { + buf = malloc (strlen (dirname) + strlen (ent->d_name) + 2); + sprintf (buf, "%s/%s", dirname, ent->d_name); + callback (buf); + free (buf); + } + } + } + closedir (dir); + } +} + +/*void +tolowerStr (char *str) +{ + while (*str) + { + *str = rfc_tolower (*str); + str++; + } +}*/ + +typedef struct +{ + char *code, *country; +} domain_t; + +static int +country_compare (const void *a, const void *b) +{ + return strcasecmp (a, ((domain_t *)b)->code); +} + +static const domain_t domain[] = +{ + {"AC", N_("Ascension Island") }, + {"AD", N_("Andorra") }, + {"AE", N_("United Arab Emirates") }, + {"AF", N_("Afghanistan") }, + {"AG", N_("Antigua and Barbuda") }, + {"AI", N_("Anguilla") }, + {"AL", N_("Albania") }, + {"AM", N_("Armenia") }, + {"AN", N_("Netherlands Antilles") }, + {"AO", N_("Angola") }, + {"AQ", N_("Antarctica") }, + {"AR", N_("Argentina") }, + {"ARPA", N_("Reverse DNS") }, + {"AS", N_("American Samoa") }, + {"AT", N_("Austria") }, + {"ATO", N_("Nato Fiel") }, + {"AU", N_("Australia") }, + {"AW", N_("Aruba") }, + {"AX", N_("Aland Islands") }, + {"AZ", N_("Azerbaijan") }, + {"BA", N_("Bosnia and Herzegovina") }, + {"BB", N_("Barbados") }, + {"BD", N_("Bangladesh") }, + {"BE", N_("Belgium") }, + {"BF", N_("Burkina Faso") }, + {"BG", N_("Bulgaria") }, + {"BH", N_("Bahrain") }, + {"BI", N_("Burundi") }, + {"BIZ", N_("Businesses"), }, + {"BJ", N_("Benin") }, + {"BM", N_("Bermuda") }, + {"BN", N_("Brunei Darussalam") }, + {"BO", N_("Bolivia") }, + {"BR", N_("Brazil") }, + {"BS", N_("Bahamas") }, + {"BT", N_("Bhutan") }, + {"BV", N_("Bouvet Island") }, + {"BW", N_("Botswana") }, + {"BY", N_("Belarus") }, + {"BZ", N_("Belize") }, + {"CA", N_("Canada") }, + {"CC", N_("Cocos Islands") }, + {"CD", N_("Democratic Republic of Congo") }, + {"CF", N_("Central African Republic") }, + {"CG", N_("Congo") }, + {"CH", N_("Switzerland") }, + {"CI", N_("Cote d'Ivoire") }, + {"CK", N_("Cook Islands") }, + {"CL", N_("Chile") }, + {"CM", N_("Cameroon") }, + {"CN", N_("China") }, + {"CO", N_("Colombia") }, + {"COM", N_("Internic Commercial") }, + {"CR", N_("Costa Rica") }, + {"CS", N_("Serbia and Montenegro") }, + {"CU", N_("Cuba") }, + {"CV", N_("Cape Verde") }, + {"CX", N_("Christmas Island") }, + {"CY", N_("Cyprus") }, + {"CZ", N_("Czech Republic") }, + {"DE", N_("Germany") }, + {"DJ", N_("Djibouti") }, + {"DK", N_("Denmark") }, + {"DM", N_("Dominica") }, + {"DO", N_("Dominican Republic") }, + {"DZ", N_("Algeria") }, + {"EC", N_("Ecuador") }, + {"EDU", N_("Educational Institution") }, + {"EE", N_("Estonia") }, + {"EG", N_("Egypt") }, + {"EH", N_("Western Sahara") }, + {"ER", N_("Eritrea") }, + {"ES", N_("Spain") }, + {"ET", N_("Ethiopia") }, + {"EU", N_("European Union") }, + {"FI", N_("Finland") }, + {"FJ", N_("Fiji") }, + {"FK", N_("Falkland Islands") }, + {"FM", N_("Micronesia") }, + {"FO", N_("Faroe Islands") }, + {"FR", N_("France") }, + {"GA", N_("Gabon") }, + {"GB", N_("Great Britain") }, + {"GD", N_("Grenada") }, + {"GE", N_("Georgia") }, + {"GF", N_("French Guiana") }, + {"GG", N_("British Channel Isles") }, + {"GH", N_("Ghana") }, + {"GI", N_("Gibraltar") }, + {"GL", N_("Greenland") }, + {"GM", N_("Gambia") }, + {"GN", N_("Guinea") }, + {"GOV", N_("Government") }, + {"GP", N_("Guadeloupe") }, + {"GQ", N_("Equatorial Guinea") }, + {"GR", N_("Greece") }, + {"GS", N_("S. Georgia and S. Sandwich Isles") }, + {"GT", N_("Guatemala") }, + {"GU", N_("Guam") }, + {"GW", N_("Guinea-Bissau") }, + {"GY", N_("Guyana") }, + {"HK", N_("Hong Kong") }, + {"HM", N_("Heard and McDonald Islands") }, + {"HN", N_("Honduras") }, + {"HR", N_("Croatia") }, + {"HT", N_("Haiti") }, + {"HU", N_("Hungary") }, + {"ID", N_("Indonesia") }, + {"IE", N_("Ireland") }, + {"IL", N_("Israel") }, + {"IM", N_("Isle of Man") }, + {"IN", N_("India") }, + {"INFO", N_("Informational") }, + {"INT", N_("International") }, + {"IO", N_("British Indian Ocean Territory") }, + {"IQ", N_("Iraq") }, + {"IR", N_("Iran") }, + {"IS", N_("Iceland") }, + {"IT", N_("Italy") }, + {"JE", N_("Jersey") }, + {"JM", N_("Jamaica") }, + {"JO", N_("Jordan") }, + {"JP", N_("Japan") }, + {"KE", N_("Kenya") }, + {"KG", N_("Kyrgyzstan") }, + {"KH", N_("Cambodia") }, + {"KI", N_("Kiribati") }, + {"KM", N_("Comoros") }, + {"KN", N_("St. Kitts and Nevis") }, + {"KP", N_("North Korea") }, + {"KR", N_("South Korea") }, + {"KW", N_("Kuwait") }, + {"KY", N_("Cayman Islands") }, + {"KZ", N_("Kazakhstan") }, + {"LA", N_("Laos") }, + {"LB", N_("Lebanon") }, + {"LC", N_("Saint Lucia") }, + {"LI", N_("Liechtenstein") }, + {"LK", N_("Sri Lanka") }, + {"LR", N_("Liberia") }, + {"LS", N_("Lesotho") }, + {"LT", N_("Lithuania") }, + {"LU", N_("Luxembourg") }, + {"LV", N_("Latvia") }, + {"LY", N_("Libya") }, + {"MA", N_("Morocco") }, + {"MC", N_("Monaco") }, + {"MD", N_("Moldova") }, + {"MED", N_("United States Medical") }, + {"MG", N_("Madagascar") }, + {"MH", N_("Marshall Islands") }, + {"MIL", N_("Military") }, + {"MK", N_("Macedonia") }, + {"ML", N_("Mali") }, + {"MM", N_("Myanmar") }, + {"MN", N_("Mongolia") }, + {"MO", N_("Macau") }, + {"MP", N_("Northern Mariana Islands") }, + {"MQ", N_("Martinique") }, + {"MR", N_("Mauritania") }, + {"MS", N_("Montserrat") }, + {"MT", N_("Malta") }, + {"MU", N_("Mauritius") }, + {"MV", N_("Maldives") }, + {"MW", N_("Malawi") }, + {"MX", N_("Mexico") }, + {"MY", N_("Malaysia") }, + {"MZ", N_("Mozambique") }, + {"NA", N_("Namibia") }, + {"NC", N_("New Caledonia") }, + {"NE", N_("Niger") }, + {"NET", N_("Internic Network") }, + {"NF", N_("Norfolk Island") }, + {"NG", N_("Nigeria") }, + {"NI", N_("Nicaragua") }, + {"NL", N_("Netherlands") }, + {"NO", N_("Norway") }, + {"NP", N_("Nepal") }, + {"NR", N_("Nauru") }, + {"NU", N_("Niue") }, + {"NZ", N_("New Zealand") }, + {"OM", N_("Oman") }, + {"ORG", N_("Internic Non-Profit Organization") }, + {"PA", N_("Panama") }, + {"PE", N_("Peru") }, + {"PF", N_("French Polynesia") }, + {"PG", N_("Papua New Guinea") }, + {"PH", N_("Philippines") }, + {"PK", N_("Pakistan") }, + {"PL", N_("Poland") }, + {"PM", N_("St. Pierre and Miquelon") }, + {"PN", N_("Pitcairn") }, + {"PR", N_("Puerto Rico") }, + {"PS", N_("Palestinian Territory") }, + {"PT", N_("Portugal") }, + {"PW", N_("Palau") }, + {"PY", N_("Paraguay") }, + {"QA", N_("Qatar") }, + {"RE", N_("Reunion") }, + {"RO", N_("Romania") }, + {"RPA", N_("Old School ARPAnet") }, + {"RU", N_("Russian Federation") }, + {"RW", N_("Rwanda") }, + {"SA", N_("Saudi Arabia") }, + {"SB", N_("Solomon Islands") }, + {"SC", N_("Seychelles") }, + {"SD", N_("Sudan") }, + {"SE", N_("Sweden") }, + {"SG", N_("Singapore") }, + {"SH", N_("St. Helena") }, + {"SI", N_("Slovenia") }, + {"SJ", N_("Svalbard and Jan Mayen Islands") }, + {"SK", N_("Slovak Republic") }, + {"SL", N_("Sierra Leone") }, + {"SM", N_("San Marino") }, + {"SN", N_("Senegal") }, + {"SO", N_("Somalia") }, + {"SR", N_("Suriname") }, + {"ST", N_("Sao Tome and Principe") }, + {"SU", N_("Former USSR") }, + {"SV", N_("El Salvador") }, + {"SY", N_("Syria") }, + {"SZ", N_("Swaziland") }, + {"TC", N_("Turks and Caicos Islands") }, + {"TD", N_("Chad") }, + {"TF", N_("French Southern Territories") }, + {"TG", N_("Togo") }, + {"TH", N_("Thailand") }, + {"TJ", N_("Tajikistan") }, + {"TK", N_("Tokelau") }, + {"TL", N_("East Timor") }, + {"TM", N_("Turkmenistan") }, + {"TN", N_("Tunisia") }, + {"TO", N_("Tonga") }, + {"TP", N_("East Timor") }, + {"TR", N_("Turkey") }, + {"TT", N_("Trinidad and Tobago") }, + {"TV", N_("Tuvalu") }, + {"TW", N_("Taiwan") }, + {"TZ", N_("Tanzania") }, + {"UA", N_("Ukraine") }, + {"UG", N_("Uganda") }, + {"UK", N_("United Kingdom") }, + {"US", N_("United States of America") }, + {"UY", N_("Uruguay") }, + {"UZ", N_("Uzbekistan") }, + {"VA", N_("Vatican City State") }, + {"VC", N_("St. Vincent and the Grenadines") }, + {"VE", N_("Venezuela") }, + {"VG", N_("British Virgin Islands") }, + {"VI", N_("US Virgin Islands") }, + {"VN", N_("Vietnam") }, + {"VU", N_("Vanuatu") }, + {"WF", N_("Wallis and Futuna Islands") }, + {"WS", N_("Samoa") }, + {"YE", N_("Yemen") }, + {"YT", N_("Mayotte") }, + {"YU", N_("Yugoslavia") }, + {"ZA", N_("South Africa") }, + {"ZM", N_("Zambia") }, + {"ZW", N_("Zimbabwe") }, +}; + +char * +country (char *hostname) +{ + char *p; + domain_t *dom; + + if (!hostname || !*hostname || isdigit ((unsigned char) hostname[strlen (hostname) - 1])) + return _("Unknown"); + if ((p = strrchr (hostname, '.'))) + p++; + else + p = hostname; + + dom = bsearch (p, domain, sizeof (domain) / sizeof (domain_t), + sizeof (domain_t), country_compare); + + if (!dom) + return _("Unknown"); + + return _(dom->country); +} + +void +country_search (char *pattern, void *ud, void (*print)(void *, char *, ...)) +{ + const domain_t *dom; + int i; + + for (i = 0; i < sizeof (domain) / sizeof (domain_t); i++) + { + dom = &domain[i]; + if (match (pattern, dom->country) || match (pattern, _(dom->country))) + { + print (ud, "%s = %s\n", dom->code, _(dom->country)); + } + } +} + +/* I think gnome1.0.x isn't necessarily linked against popt, ah well! */ +/* !!! For now use this inlined function, or it would break fe-text building */ +/* .... will find a better solution later. */ +/*#ifndef USE_GNOME*/ + +/* this is taken from gnome-libs 1.2.4 */ +#define POPT_ARGV_ARRAY_GROW_DELTA 5 + +int my_poptParseArgvString(const char * s, int * argcPtr, char *** argvPtr) { + char * buf, * bufStart, * dst; + const char * src; + char quote = '\0'; + int argvAlloced = POPT_ARGV_ARRAY_GROW_DELTA; + char ** argv = malloc(sizeof(*argv) * argvAlloced); + const char ** argv2; + int argc = 0; + int i, buflen; + + buflen = strlen(s) + 1; +/* bufStart = buf = alloca(buflen);*/ + bufStart = buf = malloc (buflen); + memset(buf, '\0', buflen); + + src = s; + argv[argc] = buf; + + while (*src) { + if (quote == *src) { + quote = '\0'; + } else if (quote) { + if (*src == '\\') { + src++; + if (!*src) { + free(argv); + free(bufStart); + return 1; + } + if (*src != quote) *buf++ = '\\'; + } + *buf++ = *src; + /*} else if (isspace((unsigned char) *src)) {*/ + } else if (*src == ' ') { + if (*argv[argc]) { + buf++, argc++; + if (argc == argvAlloced) { + argvAlloced += POPT_ARGV_ARRAY_GROW_DELTA; + argv = realloc(argv, sizeof(*argv) * argvAlloced); + } + argv[argc] = buf; + } + } else switch (*src) { + case '"': + case '\'': + quote = *src; + break; + case '\\': + src++; + if (!*src) { + free(argv); + free(bufStart); + return 1; + } + /* fallthrough */ + default: + *buf++ = *src; + } + + src++; + } + + if (strlen(argv[argc])) { + argc++, buf++; + } + + dst = malloc((argc + 1) * sizeof(*argv) + (buf - bufStart)); + argv2 = (void *) dst; + dst += (argc + 1) * sizeof(*argv); + memcpy((void *)argv2, argv, argc * sizeof(*argv)); + argv2[argc] = NULL; + memcpy(dst, bufStart, buf - bufStart); + + for (i = 0; i < argc; i++) { + argv2[i] = dst + (argv[i] - bufStart); + } + + free(argv); + + *argvPtr = (char **)argv2; /* XXX don't change the API */ + *argcPtr = argc; + + free (bufStart); + + return 0; +} + +int +util_exec (const char *cmd) +{ + int pid; + char **argv; + int argc; + int fd; + + if (my_poptParseArgvString (cmd, &argc, &argv) != 0) + return -1; + +#ifndef WIN32 + pid = fork (); + if (pid == -1) + return -1; + if (pid == 0) + { + /* Now close all open file descriptors except stdin, stdout and stderr */ + for (fd = 3; fd < 1024; fd++) close(fd); + execvp (argv[0], argv); + _exit (0); + } else + { + free (argv); + return pid; + } +#else + spawnvp (_P_DETACH, argv[0], argv); + free (argv); + return 0; +#endif +} + +int +util_execv (char * const argv[]) +{ + int pid, fd; + +#ifndef WIN32 + pid = fork (); + if (pid == -1) + return -1; + if (pid == 0) + { + /* Now close all open file descriptors except stdin, stdout and stderr */ + for (fd = 3; fd < 1024; fd++) close(fd); + execv (argv[0], argv); + _exit (0); + } else + { + return pid; + } +#else + spawnv (_P_DETACH, argv[0], argv); + return 0; +#endif +} + +unsigned long +make_ping_time (void) +{ +#ifndef WIN32 + struct timeval timev; + gettimeofday (&timev, 0); +#else + GTimeVal timev; + g_get_current_time (&timev); +#endif + return (timev.tv_sec - 50000) * 1000000 + timev.tv_usec; +} + + +/************************************************************************ + * This technique was borrowed in part from the source code to + * ircd-hybrid-5.3 to implement case-insensitive string matches which + * are fully compliant with Section 2.2 of RFC 1459, the copyright + * of that code being (C) 1990 Jarkko Oikarinen and under the GPL. + * + * A special thanks goes to Mr. Okarinen for being the one person who + * seems to have ever noticed this section in the original RFC and + * written code for it. Shame on all the rest of you (myself included). + * + * --+ Dagmar d'Surreal + */ + +int +rfc_casecmp (const char *s1, const char *s2) +{ + register unsigned char *str1 = (unsigned char *) s1; + register unsigned char *str2 = (unsigned char *) s2; + register int res; + + while ((res = rfc_tolower (*str1) - rfc_tolower (*str2)) == 0) + { + if (*str1 == '\0') + return 0; + str1++; + str2++; + } + return (res); +} + +int +rfc_ncasecmp (char *str1, char *str2, int n) +{ + register unsigned char *s1 = (unsigned char *) str1; + register unsigned char *s2 = (unsigned char *) str2; + register int res; + + while ((res = rfc_tolower (*s1) - rfc_tolower (*s2)) == 0) + { + s1++; + s2++; + n--; + if (n == 0 || (*s1 == '\0' && *s2 == '\0')) + return 0; + } + return (res); +} + +const unsigned char rfc_tolowertab[] = + { 0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, + 0xb, 0xc, 0xd, 0xe, 0xf, 0x10, 0x11, 0x12, 0x13, 0x14, + 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, + ' ', '!', '"', '#', '$', '%', '&', 0x27, '(', ')', + '*', '+', ',', '-', '.', '/', + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + ':', ';', '<', '=', '>', '?', + '@', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', + 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', + 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~', + '_', + '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', + 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', + 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~', + 0x7f, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, + 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, + 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, + 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, + 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, + 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, + 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, + 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, + 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, + 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, + 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, + 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, + 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, + 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff +}; + +/*static unsigned char touppertab[] = + { 0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, + 0xb, 0xc, 0xd, 0xe, 0xf, 0x10, 0x11, 0x12, 0x13, 0x14, + 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f, + ' ', '!', '"', '#', '$', '%', '&', 0x27, '(', ')', + '*', '+', ',', '-', '.', '/', + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + ':', ';', '<', '=', '>', '?', + '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', + 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', + 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', '\\', ']', '^', + 0x5f, + '`', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', + 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', + 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', '\\', ']', '^', + 0x7f, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, + 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, + 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, + 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, + 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, + 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, + 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, + 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, + 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, + 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, + 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, + 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, + 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, + 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff +};*/ + +/*static int +rename_utf8 (char *oldname, char *newname) +{ + int sav, res; + char *fso, *fsn; + + fso = xchat_filename_from_utf8 (oldname, -1, 0, 0, 0); + if (!fso) + return FALSE; + fsn = xchat_filename_from_utf8 (newname, -1, 0, 0, 0); + if (!fsn) + { + g_free (fso); + return FALSE; + } + + res = rename (fso, fsn); + sav = errno; + g_free (fso); + g_free (fsn); + errno = sav; + return res; +} + +static int +unlink_utf8 (char *fname) +{ + int res; + char *fs; + + fs = xchat_filename_from_utf8 (fname, -1, 0, 0, 0); + if (!fs) + return FALSE; + + res = unlink (fs); + g_free (fs); + return res; +}*/ + +static gboolean +file_exists_utf8 (char *fname) +{ + int res; + char *fs; + + fs = xchat_filename_from_utf8 (fname, -1, 0, 0, 0); + if (!fs) + return FALSE; + + res = access (fs, F_OK); + g_free (fs); + if (res == 0) + return TRUE; + return FALSE; +} + +static gboolean +copy_file (char *dl_src, char *dl_dest, int permissions) /* FS encoding */ +{ + int tmp_src, tmp_dest; + gboolean ok = FALSE; + char dl_tmp[4096]; + int return_tmp, return_tmp2; + + if ((tmp_src = open (dl_src, O_RDONLY | OFLAGS)) == -1) + { + fprintf (stderr, "Unable to open() file '%s' (%s) !", dl_src, + strerror (errno)); + return FALSE; + } + + if ((tmp_dest = + open (dl_dest, O_WRONLY | O_CREAT | O_TRUNC | OFLAGS, permissions)) < 0) + { + close (tmp_src); + fprintf (stderr, "Unable to create file '%s' (%s) !", dl_src, + strerror (errno)); + return FALSE; + } + + for (;;) + { + return_tmp = read (tmp_src, dl_tmp, sizeof (dl_tmp)); + + if (!return_tmp) + { + ok = TRUE; + break; + } + + if (return_tmp < 0) + { + fprintf (stderr, "download_move_to_completed_dir(): " + "error reading while moving file to save directory (%s)", + strerror (errno)); + break; + } + + return_tmp2 = write (tmp_dest, dl_tmp, return_tmp); + + if (return_tmp2 < 0) + { + fprintf (stderr, "download_move_to_completed_dir(): " + "error writing while moving file to save directory (%s)", + strerror (errno)); + break; + } + + if (return_tmp < sizeof (dl_tmp)) + { + ok = TRUE; + break; + } + } + + close (tmp_dest); + close (tmp_src); + return ok; +} + +/* Takes care of moving a file from a temporary download location to a completed location. Now in UTF-8. */ +void +move_file_utf8 (char *src_dir, char *dst_dir, char *fname, int dccpermissions) +{ + char src[4096]; + char dst[4096]; + int res, i; + char *src_fs; /* FileSystem encoding */ + char *dst_fs; + + /* if dcc_dir and dcc_completed_dir are the same then we are done */ + if (0 == strcmp (src_dir, dst_dir) || + 0 == dst_dir[0]) + return; /* Already in "completed dir" */ + + snprintf (src, sizeof (src), "%s/%s", src_dir, fname); + snprintf (dst, sizeof (dst), "%s/%s", dst_dir, fname); + + /* already exists in completed dir? Append a number */ + if (file_exists_utf8 (dst)) + { + for (i = 0; ; i++) + { + snprintf (dst, sizeof (dst), "%s/%s.%d", dst_dir, fname, i); + if (!file_exists_utf8 (dst)) + break; + } + } + + /* convert UTF-8 to filesystem encoding */ + src_fs = xchat_filename_from_utf8 (src, -1, 0, 0, 0); + if (!src_fs) + return; + dst_fs = xchat_filename_from_utf8 (dst, -1, 0, 0, 0); + if (!dst_fs) + { + g_free (src_fs); + return; + } + + /* first try a simple rename move */ + res = rename (src_fs, dst_fs); + + if (res == -1 && (errno == EXDEV || errno == EPERM)) + { + /* link failed because either the two paths aren't on the */ + /* same filesystem or the filesystem doesn't support hard */ + /* links, so we have to do a copy. */ + if (copy_file (src_fs, dst_fs, dccpermissions)) + unlink (src_fs); + } + + g_free (dst_fs); + g_free (src_fs); +} + +int +mkdir_utf8 (char *dir) +{ + int ret; + + dir = xchat_filename_from_utf8 (dir, -1, 0, 0, 0); + if (!dir) + return -1; + +#ifdef WIN32 + ret = mkdir (dir); +#else + ret = mkdir (dir, S_IRUSR | S_IWUSR | S_IXUSR); +#endif + g_free (dir); + + return ret; +} + +/* separates a string according to a 'sep' char, then calls the callback + function for each token found */ + +int +token_foreach (char *str, char sep, + int (*callback) (char *str, void *ud), void *ud) +{ + char t, *start = str; + + while (1) + { + if (*str == sep || *str == 0) + { + t = *str; + *str = 0; + if (callback (start, ud) < 1) + { + *str = t; + return FALSE; + } + *str = t; + + if (*str == 0) + break; + str++; + start = str; + + } else + { + /* chars $00-$7f can never be embedded in utf-8 */ + str++; + } + } + + return TRUE; +} + +/* 31 bit string hash functions */ + +guint32 +str_hash (const char *key) +{ + const char *p = key; + guint32 h = *p; + + if (h) + for (p += 1; *p != '\0'; p++) + h = (h << 5) - h + *p; + + return h; +} + +guint32 +str_ihash (const unsigned char *key) +{ + const char *p = key; + guint32 h = rfc_tolowertab [(guint)*p]; + + if (h) + for (p += 1; *p != '\0'; p++) + h = (h << 5) - h + rfc_tolowertab [(guint)*p]; + + return h; +} + +/* features: 1. "src" must be valid, NULL terminated UTF-8 */ +/* 2. "dest" will be left with valid UTF-8 - no partial chars! */ + +void +safe_strcpy (char *dest, const char *src, int bytes_left) +{ + int mbl; + + while (1) + { + mbl = g_utf8_skip[*((unsigned char *)src)]; + + if (bytes_left < (mbl + 1)) /* can't fit with NULL? */ + { + *dest = 0; + break; + } + + if (mbl == 1) /* one byte char */ + { + *dest = *src; + if (*src == 0) + break; /* it all fit */ + dest++; + src++; + bytes_left--; + } + else /* multibyte char */ + { + memcpy (dest, src, mbl); + dest += mbl; + src += mbl; + bytes_left -= mbl; + } + } +} diff --git a/xchat-2.8.8/src/common/util.h b/xchat-2.8.8/src/common/util.h new file mode 100644 index 0000000..fce45de --- /dev/null +++ b/xchat-2.8.8/src/common/util.h @@ -0,0 +1,54 @@ +/************************************************************************ + * This technique was borrowed in part from the source code to + * ircd-hybrid-5.3 to implement case-insensitive string matches which + * are fully compliant with Section 2.2 of RFC 1459, the copyright + * of that code being (C) 1990 Jarkko Oikarinen and under the GPL. + * + * A special thanks goes to Mr. Okarinen for being the one person who + * seems to have ever noticed this section in the original RFC and + * written code for it. Shame on all the rest of you (myself included). + * + * --+ Dagmar d'Surreal + */ + +#ifndef XCHAT_UTIL_H +#define XCHAT_UTIL_H + +#define rfc_tolower(c) (rfc_tolowertab[(unsigned char)(c)]) + +extern const unsigned char rfc_tolowertab[]; + +int my_poptParseArgvString(const char * s, int * argcPtr, char *** argvPtr); +char *expand_homedir (char *file); +void path_part (char *file, char *path, int pathlen); +int match (const char *mask, const char *string); +char *file_part (char *file); +void for_files (char *dirname, char *mask, void callback (char *file)); +int rfc_casecmp (const char *, const char *); +int rfc_ncasecmp (char *, char *, int); +int buf_get_line (char *, char **, int *, int len); +char *nocasestrstr (const char *text, const char *tofind); +char *country (char *); +void country_search (char *pattern, void *ud, void (*print)(void *, char *, ...)); +char *get_cpu_str (void); +int util_exec (const char *cmd); +int util_execv (char * const argv[]); +#define STRIP_COLOR 1 +#define STRIP_ATTRIB 2 +#define STRIP_HIDDEN 4 +#define STRIP_ESCMARKUP 8 +#define STRIP_ALL 7 +gchar *strip_color (const char *text, int len, int flags); +int strip_color2 (const char *src, int len, char *dst, int flags); +int strip_hidden_attribute (char *src, char *dst); +char *errorstring (int err); +int waitline (int sok, char *buf, int bufsize, int); +unsigned long make_ping_time (void); +void move_file_utf8 (char *src_dir, char *dst_dir, char *fname, int dccpermissions); +int mkdir_utf8 (char *dir); +int token_foreach (char *str, char sep, int (*callback) (char *str, void *ud), void *ud); +guint32 str_hash (const char *key); +guint32 str_ihash (const unsigned char *key); +void safe_strcpy (char *dest, const char *src, int bytes_left); + +#endif diff --git a/xchat-2.8.8/src/common/xchat-plugin.h b/xchat-2.8.8/src/common/xchat-plugin.h new file mode 100644 index 0000000..30b1929 --- /dev/null +++ b/xchat-2.8.8/src/common/xchat-plugin.h @@ -0,0 +1,334 @@ +/* You can distribute this header with your plugins for easy compilation */ +#ifndef XCHAT_PLUGIN_H +#define XCHAT_PLUGIN_H + +#include <time.h> + +#define XCHAT_IFACE_MAJOR 1 +#define XCHAT_IFACE_MINOR 9 +#define XCHAT_IFACE_MICRO 11 +#define XCHAT_IFACE_VERSION ((XCHAT_IFACE_MAJOR * 10000) + \ + (XCHAT_IFACE_MINOR * 100) + \ + (XCHAT_IFACE_MICRO)) + +#define XCHAT_PRI_HIGHEST 127 +#define XCHAT_PRI_HIGH 64 +#define XCHAT_PRI_NORM 0 +#define XCHAT_PRI_LOW (-64) +#define XCHAT_PRI_LOWEST (-128) + +#define XCHAT_FD_READ 1 +#define XCHAT_FD_WRITE 2 +#define XCHAT_FD_EXCEPTION 4 +#define XCHAT_FD_NOTSOCKET 8 + +#define XCHAT_EAT_NONE 0 /* pass it on through! */ +#define XCHAT_EAT_XCHAT 1 /* don't let xchat see this event */ +#define XCHAT_EAT_PLUGIN 2 /* don't let other plugins see this event */ +#define XCHAT_EAT_ALL (XCHAT_EAT_XCHAT|XCHAT_EAT_PLUGIN) /* don't let anything see this event */ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct _xchat_plugin xchat_plugin; +typedef struct _xchat_list xchat_list; +typedef struct _xchat_hook xchat_hook; +#ifndef PLUGIN_C +typedef struct _xchat_context xchat_context; +#endif + +#ifndef PLUGIN_C +struct _xchat_plugin +{ + /* these are only used on win32 */ + xchat_hook *(*xchat_hook_command) (xchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], char *word_eol[], void *user_data), + const char *help_text, + void *userdata); + xchat_hook *(*xchat_hook_server) (xchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], char *word_eol[], void *user_data), + void *userdata); + xchat_hook *(*xchat_hook_print) (xchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], void *user_data), + void *userdata); + xchat_hook *(*xchat_hook_timer) (xchat_plugin *ph, + int timeout, + int (*callback) (void *user_data), + void *userdata); + xchat_hook *(*xchat_hook_fd) (xchat_plugin *ph, + int fd, + int flags, + int (*callback) (int fd, int flags, void *user_data), + void *userdata); + void *(*xchat_unhook) (xchat_plugin *ph, + xchat_hook *hook); + void (*xchat_print) (xchat_plugin *ph, + const char *text); + void (*xchat_printf) (xchat_plugin *ph, + const char *format, ...); + void (*xchat_command) (xchat_plugin *ph, + const char *command); + void (*xchat_commandf) (xchat_plugin *ph, + const char *format, ...); + int (*xchat_nickcmp) (xchat_plugin *ph, + const char *s1, + const char *s2); + int (*xchat_set_context) (xchat_plugin *ph, + xchat_context *ctx); + xchat_context *(*xchat_find_context) (xchat_plugin *ph, + const char *servname, + const char *channel); + xchat_context *(*xchat_get_context) (xchat_plugin *ph); + const char *(*xchat_get_info) (xchat_plugin *ph, + const char *id); + int (*xchat_get_prefs) (xchat_plugin *ph, + const char *name, + const char **string, + int *integer); + xchat_list * (*xchat_list_get) (xchat_plugin *ph, + const char *name); + void (*xchat_list_free) (xchat_plugin *ph, + xchat_list *xlist); + const char * const * (*xchat_list_fields) (xchat_plugin *ph, + const char *name); + int (*xchat_list_next) (xchat_plugin *ph, + xchat_list *xlist); + const char * (*xchat_list_str) (xchat_plugin *ph, + xchat_list *xlist, + const char *name); + int (*xchat_list_int) (xchat_plugin *ph, + xchat_list *xlist, + const char *name); + void * (*xchat_plugingui_add) (xchat_plugin *ph, + const char *filename, + const char *name, + const char *desc, + const char *version, + char *reserved); + void (*xchat_plugingui_remove) (xchat_plugin *ph, + void *handle); + int (*xchat_emit_print) (xchat_plugin *ph, + const char *event_name, ...); + int (*xchat_read_fd) (xchat_plugin *ph, + void *src, + char *buf, + int *len); + time_t (*xchat_list_time) (xchat_plugin *ph, + xchat_list *xlist, + const char *name); + char *(*xchat_gettext) (xchat_plugin *ph, + const char *msgid); + void (*xchat_send_modes) (xchat_plugin *ph, + const char **targets, + int ntargets, + int modes_per_line, + char sign, + char mode); + char *(*xchat_strip) (xchat_plugin *ph, + const char *str, + int len, + int flags); + void (*xchat_free) (xchat_plugin *ph, + void *ptr); +}; +#endif + + +xchat_hook * +xchat_hook_command (xchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], char *word_eol[], void *user_data), + const char *help_text, + void *userdata); + +xchat_hook * +xchat_hook_server (xchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], char *word_eol[], void *user_data), + void *userdata); + +xchat_hook * +xchat_hook_print (xchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], void *user_data), + void *userdata); + +xchat_hook * +xchat_hook_timer (xchat_plugin *ph, + int timeout, + int (*callback) (void *user_data), + void *userdata); + +xchat_hook * +xchat_hook_fd (xchat_plugin *ph, + int fd, + int flags, + int (*callback) (int fd, int flags, void *user_data), + void *userdata); + +void * +xchat_unhook (xchat_plugin *ph, + xchat_hook *hook); + +void +xchat_print (xchat_plugin *ph, + const char *text); + +void +xchat_printf (xchat_plugin *ph, + const char *format, ...); + +void +xchat_command (xchat_plugin *ph, + const char *command); + +void +xchat_commandf (xchat_plugin *ph, + const char *format, ...); + +int +xchat_nickcmp (xchat_plugin *ph, + const char *s1, + const char *s2); + +int +xchat_set_context (xchat_plugin *ph, + xchat_context *ctx); + +xchat_context * +xchat_find_context (xchat_plugin *ph, + const char *servname, + const char *channel); + +xchat_context * +xchat_get_context (xchat_plugin *ph); + +const char * +xchat_get_info (xchat_plugin *ph, + const char *id); + +int +xchat_get_prefs (xchat_plugin *ph, + const char *name, + const char **string, + int *integer); + +xchat_list * +xchat_list_get (xchat_plugin *ph, + const char *name); + +void +xchat_list_free (xchat_plugin *ph, + xchat_list *xlist); + +const char * const * +xchat_list_fields (xchat_plugin *ph, + const char *name); + +int +xchat_list_next (xchat_plugin *ph, + xchat_list *xlist); + +const char * +xchat_list_str (xchat_plugin *ph, + xchat_list *xlist, + const char *name); + +int +xchat_list_int (xchat_plugin *ph, + xchat_list *xlist, + const char *name); + +time_t +xchat_list_time (xchat_plugin *ph, + xchat_list *xlist, + const char *name); + +void * +xchat_plugingui_add (xchat_plugin *ph, + const char *filename, + const char *name, + const char *desc, + const char *version, + char *reserved); + +void +xchat_plugingui_remove (xchat_plugin *ph, + void *handle); + +int +xchat_emit_print (xchat_plugin *ph, + const char *event_name, ...); + +char * +xchat_gettext (xchat_plugin *ph, + const char *msgid); + +void +xchat_send_modes (xchat_plugin *ph, + const char **targets, + int ntargets, + int modes_per_line, + char sign, + char mode); + +char * +xchat_strip (xchat_plugin *ph, + const char *str, + int len, + int flags); + +void +xchat_free (xchat_plugin *ph, + void *ptr); + +#if !defined(PLUGIN_C) && defined(WIN32) +#ifndef XCHAT_PLUGIN_HANDLE +#define XCHAT_PLUGIN_HANDLE (ph) +#endif +#define xchat_hook_command ((XCHAT_PLUGIN_HANDLE)->xchat_hook_command) +#define xchat_hook_server ((XCHAT_PLUGIN_HANDLE)->xchat_hook_server) +#define xchat_hook_print ((XCHAT_PLUGIN_HANDLE)->xchat_hook_print) +#define xchat_hook_timer ((XCHAT_PLUGIN_HANDLE)->xchat_hook_timer) +#define xchat_hook_fd ((XCHAT_PLUGIN_HANDLE)->xchat_hook_fd) +#define xchat_unhook ((XCHAT_PLUGIN_HANDLE)->xchat_unhook) +#define xchat_print ((XCHAT_PLUGIN_HANDLE)->xchat_print) +#define xchat_printf ((XCHAT_PLUGIN_HANDLE)->xchat_printf) +#define xchat_command ((XCHAT_PLUGIN_HANDLE)->xchat_command) +#define xchat_commandf ((XCHAT_PLUGIN_HANDLE)->xchat_commandf) +#define xchat_nickcmp ((XCHAT_PLUGIN_HANDLE)->xchat_nickcmp) +#define xchat_set_context ((XCHAT_PLUGIN_HANDLE)->xchat_set_context) +#define xchat_find_context ((XCHAT_PLUGIN_HANDLE)->xchat_find_context) +#define xchat_get_context ((XCHAT_PLUGIN_HANDLE)->xchat_get_context) +#define xchat_get_info ((XCHAT_PLUGIN_HANDLE)->xchat_get_info) +#define xchat_get_prefs ((XCHAT_PLUGIN_HANDLE)->xchat_get_prefs) +#define xchat_list_get ((XCHAT_PLUGIN_HANDLE)->xchat_list_get) +#define xchat_list_free ((XCHAT_PLUGIN_HANDLE)->xchat_list_free) +#define xchat_list_fields ((XCHAT_PLUGIN_HANDLE)->xchat_list_fields) +#define xchat_list_str ((XCHAT_PLUGIN_HANDLE)->xchat_list_str) +#define xchat_list_int ((XCHAT_PLUGIN_HANDLE)->xchat_list_int) +#define xchat_list_time ((XCHAT_PLUGIN_HANDLE)->xchat_list_time) +#define xchat_list_next ((XCHAT_PLUGIN_HANDLE)->xchat_list_next) +#define xchat_plugingui_add ((XCHAT_PLUGIN_HANDLE)->xchat_plugingui_add) +#define xchat_plugingui_remove ((XCHAT_PLUGIN_HANDLE)->xchat_plugingui_remove) +#define xchat_emit_print ((XCHAT_PLUGIN_HANDLE)->xchat_emit_print) +#define xchat_gettext ((XCHAT_PLUGIN_HANDLE)->xchat_gettext) +#define xchat_send_modes ((XCHAT_PLUGIN_HANDLE)->xchat_send_modes) +#define xchat_strip ((XCHAT_PLUGIN_HANDLE)->xchat_strip) +#define xchat_free ((XCHAT_PLUGIN_HANDLE)->xchat_free) +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/xchat-2.8.8/src/common/xchat.c b/xchat-2.8.8/src/common/xchat.c new file mode 100644 index 0000000..eddc802 --- /dev/null +++ b/xchat-2.8.8/src/common/xchat.c @@ -0,0 +1,936 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <time.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <unistd.h> + +#define WANTSOCKET +#include "inet.h" + +#ifndef WIN32 +#include <sys/wait.h> +#include <signal.h> +#endif + +#include "xchat.h" +#include "fe.h" +#include "util.h" +#include "cfgfiles.h" +#include "chanopt.h" +#include "ignore.h" +#include "xchat-plugin.h" +#include "plugin.h" +#include "plugin-timer.h" +#include "notify.h" +#include "server.h" +#include "servlist.h" +#include "outbound.h" +#include "text.h" +#include "url.h" +#include "xchatc.h" + +#ifdef USE_OPENSSL +#include <openssl/ssl.h> /* SSL_() */ +#include "ssl.h" +#endif + +#ifdef USE_MSPROXY +#include "msproxy.h" +#endif + +GSList *popup_list = 0; +GSList *button_list = 0; +GSList *dlgbutton_list = 0; +GSList *command_list = 0; +GSList *ctcp_list = 0; +GSList *replace_list = 0; +GSList *sess_list = 0; +GSList *dcc_list = 0; +GSList *ignore_list = 0; +GSList *usermenu_list = 0; +GSList *urlhandler_list = 0; +GSList *tabmenu_list = 0; + +static int in_xchat_exit = FALSE; +int xchat_is_quitting = FALSE; +/* command-line args */ +int arg_dont_autoconnect = FALSE; +int arg_skip_plugins = FALSE; +char *arg_url = NULL; +char *arg_command = NULL; +gint arg_existing = FALSE; + +#ifdef USE_DBUS +#include "dbus/dbus-client.h" +#include "dbus/dbus-plugin.h" +#endif /* USE_DBUS */ + +struct session *current_tab; +struct session *current_sess = 0; +struct xchatprefs prefs; + +#ifdef USE_OPENSSL +SSL_CTX *ctx = NULL; +#endif + + +int +is_session (session * sess) +{ + return g_slist_find (sess_list, sess) ? 1 : 0; +} + +session * +find_dialog (server *serv, char *nick) +{ + GSList *list = sess_list; + session *sess; + + while (list) + { + sess = list->data; + if (sess->server == serv && sess->type == SESS_DIALOG) + { + if (!serv->p_cmp (nick, sess->channel)) + return (sess); + } + list = list->next; + } + return 0; +} + +session * +find_channel (server *serv, char *chan) +{ + session *sess; + GSList *list = sess_list; + while (list) + { + sess = list->data; + if ((!serv || serv == sess->server) && sess->type != SESS_DIALOG) + { + if (!serv->p_cmp (chan, sess->channel)) + return sess; + } + list = list->next; + } + return 0; +} + +static void +lagcheck_update (void) +{ + server *serv; + GSList *list = serv_list; + + if (!prefs.lagometer) + return; + + while (list) + { + serv = list->data; + if (serv->lag_sent) + fe_set_lag (serv, -1); + + list = list->next; + } +} + +void +lag_check (void) +{ + server *serv; + GSList *list = serv_list; + unsigned long tim; + char tbuf[128]; + time_t now = time (0); + int lag; + + tim = make_ping_time (); + + while (list) + { + serv = list->data; + if (serv->connected && serv->end_of_motd) + { + lag = now - serv->ping_recv; + if (prefs.pingtimeout && lag > prefs.pingtimeout && lag > 0) + { + sprintf (tbuf, "%d", lag); + EMIT_SIGNAL (XP_TE_PINGTIMEOUT, serv->server_session, tbuf, NULL, + NULL, NULL, 0); + if (prefs.autoreconnect) + serv->auto_reconnect (serv, FALSE, -1); + } else + { + snprintf (tbuf, sizeof (tbuf), "LAG%lu", tim); + serv->p_ping (serv, "", tbuf); + serv->lag_sent = tim; + fe_set_lag (serv, -1); + } + } + list = list->next; + } +} + +static int +away_check (void) +{ + session *sess; + GSList *list; + int full, sent, loop = 0; + + if (!prefs.away_track || prefs.away_size_max < 1) + return 1; + +doover: + /* request an update of AWAY status of 1 channel every 30 seconds */ + full = TRUE; + sent = 0; /* number of WHOs (users) requested */ + list = sess_list; + while (list) + { + sess = list->data; + + if (sess->server->connected && + sess->type == SESS_CHANNEL && + sess->channel[0] && + sess->total <= prefs.away_size_max) + { + if (!sess->done_away_check) + { + full = FALSE; + + /* if we're under 31 WHOs, send another channels worth */ + if (sent < 31 && !sess->doing_who) + { + sess->done_away_check = TRUE; + sess->doing_who = TRUE; + /* this'll send a WHO #channel */ + sess->server->p_away_status (sess->server, sess->channel); + sent += sess->total; + } + } + } + + list = list->next; + } + + /* done them all, reset done_away_check to FALSE and start over */ + if (full) + { + list = sess_list; + while (list) + { + sess = list->data; + sess->done_away_check = FALSE; + list = list->next; + } + loop++; + if (loop < 2) + goto doover; + } + + return 1; +} + +static int +xchat_misc_checks (void) /* this gets called every 1/2 second */ +{ + static int count = 0; +#ifdef USE_MSPROXY + static int count2 = 0; +#endif + + count++; + + lagcheck_update (); /* every 500ms */ + + if (count % 2) + dcc_check_timeouts (); /* every 1 second */ + + if (count >= 60) /* every 30 seconds */ + { + if (prefs.lagometer) + lag_check (); + count = 0; + } + +#ifdef USE_MSPROXY + count2++; + if (count2 >= 720) /* 720 every 6 minutes */ + { + msproxy_keepalive (); + count2 = 0; + } +#endif + + return 1; +} + +/* executed when the first irc window opens */ + +static void +irc_init (session *sess) +{ + static int done_init = FALSE; + char buf[512]; + + if (done_init) + return; + + done_init = TRUE; + + plugin_add (sess, NULL, NULL, timer_plugin_init, NULL, NULL, FALSE); + +#ifdef USE_PLUGIN + if (!arg_skip_plugins) + plugin_auto_load (sess); /* autoload ~/.xchat *.so */ +#endif + +#ifdef USE_DBUS + plugin_add (sess, NULL, NULL, dbus_plugin_init, NULL, NULL, FALSE); +#endif + + if (prefs.notify_timeout) + notify_tag = fe_timeout_add (prefs.notify_timeout * 1000, + notify_checklist, 0); + + fe_timeout_add (prefs.away_timeout * 1000, away_check, 0); + fe_timeout_add (500, xchat_misc_checks, 0); + + if (arg_url != NULL) + { + snprintf (buf, sizeof (buf), "server %s", arg_url); + handle_command (sess, buf, FALSE); + g_free (arg_url); /* from GOption */ + } + + if (arg_command != NULL) + { + g_free (arg_command); + } + + /* load -e ~/.xchat2/startup.txt */ + snprintf (buf, sizeof (buf), "%s/%s", get_xdir_fs (), "startup.txt"); + load_perform_file (sess, buf); +} + +static session * +session_new (server *serv, char *from, int type, int focus) +{ + session *sess; + + sess = malloc (sizeof (struct session)); + memset (sess, 0, sizeof (struct session)); + + sess->server = serv; + sess->logfd = -1; + sess->scrollfd = -1; + sess->type = type; + + sess->alert_beep = SET_DEFAULT; + sess->alert_taskbar = SET_DEFAULT; + sess->alert_tray = SET_DEFAULT; + + sess->text_hidejoinpart = SET_DEFAULT; + sess->text_logging = SET_DEFAULT; + sess->text_scrollback = SET_DEFAULT; + + if (from != NULL) + safe_strcpy (sess->channel, from, CHANLEN); + + sess_list = g_slist_prepend (sess_list, sess); + + fe_new_window (sess, focus); + + return sess; +} + +session * +new_ircwindow (server *serv, char *name, int type, int focus) +{ + session *sess; + + switch (type) + { + case SESS_SERVER: + serv = server_new (); + if (prefs.use_server_tab) + sess = session_new (serv, name, SESS_SERVER, focus); + else + sess = session_new (serv, name, SESS_CHANNEL, focus); + serv->server_session = sess; + serv->front_session = sess; + break; + case SESS_DIALOG: + sess = session_new (serv, name, type, focus); + log_open_or_close (sess); + break; + default: +/* case SESS_CHANNEL: + case SESS_NOTICES: + case SESS_SNOTICES:*/ + sess = session_new (serv, name, type, focus); + break; + } + + irc_init (sess); + scrollback_load (sess); + chanopt_load (sess); + plugin_emit_dummy_print (sess, "Open Context"); + + return sess; +} + +static void +exec_notify_kill (session * sess) +{ +#ifndef WIN32 + struct nbexec *re; + if (sess->running_exec != NULL) + { + re = sess->running_exec; + sess->running_exec = NULL; + kill (re->childpid, SIGKILL); + waitpid (re->childpid, NULL, WNOHANG); + fe_input_remove (re->iotag); + close (re->myfd); + if (re->linebuf) + free(re->linebuf); + free (re); + } +#endif +} + +static void +send_quit_or_part (session * killsess) +{ + int willquit = TRUE; + GSList *list; + session *sess; + server *killserv = killsess->server; + + /* check if this is the last session using this server */ + list = sess_list; + while (list) + { + sess = (session *) list->data; + if (sess->server == killserv && sess != killsess) + { + willquit = FALSE; + list = 0; + } else + list = list->next; + } + + if (xchat_is_quitting) + willquit = TRUE; + + if (killserv->connected) + { + if (willquit) + { + if (!killserv->sent_quit) + { + killserv->flush_queue (killserv); + server_sendquit (killsess); + killserv->sent_quit = TRUE; + } + } else + { + if (killsess->type == SESS_CHANNEL && killsess->channel[0] && + !killserv->sent_quit) + { + server_sendpart (killserv, killsess->channel, 0); + } + } + } +} + +void +session_free (session *killsess) +{ + server *killserv = killsess->server; + session *sess; + GSList *list; + + plugin_emit_dummy_print (killsess, "Close Context"); + + if (current_tab == killsess) + current_tab = NULL; + + if (killserv->server_session == killsess) + killserv->server_session = NULL; + + if (killserv->front_session == killsess) + { + /* front_session is closed, find a valid replacement */ + killserv->front_session = NULL; + list = sess_list; + while (list) + { + sess = (session *) list->data; + if (sess != killsess && sess->server == killserv) + { + killserv->front_session = sess; + if (!killserv->server_session) + killserv->server_session = sess; + break; + } + list = list->next; + } + } + + if (!killserv->server_session) + killserv->server_session = killserv->front_session; + + sess_list = g_slist_remove (sess_list, killsess); + + if (killsess->type == SESS_CHANNEL) + userlist_free (killsess); + + exec_notify_kill (killsess); + + log_close (killsess); + scrollback_close (killsess); + chanopt_save (killsess); + + send_quit_or_part (killsess); + + history_free (&killsess->history); + if (killsess->topic) + free (killsess->topic); + if (killsess->current_modes) + free (killsess->current_modes); + + fe_session_callback (killsess); + + if (current_sess == killsess) + { + current_sess = NULL; + if (sess_list) + current_sess = sess_list->data; + } + + free (killsess); + + if (!sess_list && !in_xchat_exit) + xchat_exit (); /* sess_list is empty, quit! */ + + list = sess_list; + while (list) + { + sess = (session *) list->data; + if (sess->server == killserv) + return; /* this server is still being used! */ + list = list->next; + } + + server_free (killserv); +} + +static void +free_sessions (void) +{ + GSList *list = sess_list; + + while (list) + { + fe_close_window (list->data); + list = sess_list; + } +} + + +static char defaultconf_ctcp[] = + "NAME TIME\n" "CMD nctcp %s TIME %t\n\n"\ + "NAME PING\n" "CMD nctcp %s PING %d\n\n"; + +static char defaultconf_replace[] = + "NAME teh\n" "CMD the\n\n"; +/* "NAME r\n" "CMD are\n\n"\ + "NAME u\n" "CMD you\n\n"*/ + +static char defaultconf_commands[] = + "NAME ACTION\n" "CMD me &2\n\n"\ + "NAME AME\n" "CMD allchan me &2\n\n"\ + "NAME ANICK\n" "CMD allserv nick &2\n\n"\ + "NAME AMSG\n" "CMD allchan say &2\n\n"\ + "NAME BANLIST\n" "CMD quote MODE %c +b\n\n"\ + "NAME CHAT\n" "CMD dcc chat %2\n\n"\ + "NAME DIALOG\n" "CMD query %2\n\n"\ + "NAME DMSG\n" "CMD msg =%2 &3\n\n"\ + "NAME EXIT\n" "CMD quit\n\n"\ + "NAME GREP\n" "CMD lastlog -r &2\n\n"\ + "NAME J\n" "CMD join &2\n\n"\ + "NAME KILL\n" "CMD quote KILL %2 :&3\n\n"\ + "NAME LEAVE\n" "CMD part &2\n\n"\ + "NAME M\n" "CMD msg &2\n\n"\ + "NAME ONOTICE\n" "CMD notice @%c &2\n\n"\ + "NAME RAW\n" "CMD quote &2\n\n"\ + "NAME SERVHELP\n" "CMD quote HELP\n\n"\ + "NAME SPING\n" "CMD ping\n\n"\ + "NAME SQUERY\n" "CMD quote SQUERY %2 :&3\n\n"\ + "NAME SSLSERVER\n" "CMD server -ssl &2\n\n"\ + "NAME SV\n" "CMD echo xchat %v %m\n\n"\ + "NAME UMODE\n" "CMD mode %n &2\n\n"\ + "NAME UPTIME\n" "CMD quote STATS u\n\n"\ + "NAME VER\n" "CMD ctcp %2 VERSION\n\n"\ + "NAME VERSION\n" "CMD ctcp %2 VERSION\n\n"\ + "NAME WALLOPS\n" "CMD quote WALLOPS :&2\n\n"\ + "NAME WII\n" "CMD quote WHOIS %2 %2\n\n"; + +static char defaultconf_urlhandlers[] = + "NAME Open Link in Opera\n" "CMD !opera -remote 'openURL(%s)'\n\n"; + +#ifdef USE_SIGACTION +/* Close and open log files on SIGUSR1. Usefull for log rotating */ + +static void +sigusr1_handler (int signal, siginfo_t *si, void *un) +{ + GSList *list = sess_list; + session *sess; + + while (list) + { + sess = list->data; + log_open_or_close (sess); + list = list->next; + } +} + +/* Execute /SIGUSR2 when SIGUSR2 received */ + +static void +sigusr2_handler (int signal, siginfo_t *si, void *un) +{ + session *sess = current_sess; + + if (sess) + handle_command (sess, "SIGUSR2", FALSE); +} +#endif + +static gint +xchat_auto_connect (gpointer userdata) +{ + servlist_auto_connect (NULL); + return 0; +} + +static void +xchat_init (void) +{ + char buf[3068]; + const char *cs = NULL; + +#ifdef WIN32 + WSADATA wsadata; + +#ifdef USE_IPV6 + if (WSAStartup(0x0202, &wsadata) != 0) + { + MessageBox (NULL, "Cannot find winsock 2.2+", "Error", MB_OK); + exit (0); + } +#else + WSAStartup(0x0101, &wsadata); +#endif /* !USE_IPV6 */ +#endif /* !WIN32 */ + +#ifdef USE_SIGACTION + struct sigaction act; + + /* ignore SIGPIPE's */ + act.sa_handler = SIG_IGN; + act.sa_flags = 0; + sigemptyset (&act.sa_mask); + sigaction (SIGPIPE, &act, NULL); + + /* Deal with SIGUSR1's & SIGUSR2's */ + act.sa_sigaction = sigusr1_handler; + act.sa_flags = 0; + sigemptyset (&act.sa_mask); + sigaction (SIGUSR1, &act, NULL); + + act.sa_sigaction = sigusr2_handler; + act.sa_flags = 0; + sigemptyset (&act.sa_mask); + sigaction (SIGUSR2, &act, NULL); +#else +#ifndef WIN32 + /* good enough for these old systems */ + signal (SIGPIPE, SIG_IGN); +#endif +#endif + + if (g_get_charset (&cs)) + prefs.utf8_locale = TRUE; + + load_text_events (); + sound_load (); + notify_load (); + ignore_load (); + + snprintf (buf, sizeof (buf), + "NAME %s~%s~\n" "CMD query %%s\n\n"\ + "NAME %s~%s~\n" "CMD send %%s\n\n"\ + "NAME %s~%s~\n" "CMD whois %%s %%s\n\n"\ + "NAME %s~%s~\n" "CMD notify -n ASK %%s\n\n"\ + + "NAME SUB\n" "CMD %s\n\n"\ + "NAME %s\n" "CMD op %%a\n\n"\ + "NAME %s\n" "CMD deop %%a\n\n"\ + "NAME SEP\n" "CMD \n\n"\ + "NAME %s\n" "CMD voice %%a\n\n"\ + "NAME %s\n" "CMD devoice %%a\n"\ + "NAME SEP\n" "CMD \n\n"\ + "NAME SUB\n" "CMD %s\n\n"\ + "NAME %s\n" "CMD kick %%s\n\n"\ + "NAME %s\n" "CMD ban %%s\n\n"\ + "NAME SEP\n" "CMD \n\n"\ + "NAME %s *!*@*.host\n""CMD ban %%s 0\n\n"\ + "NAME %s *!*@domain\n""CMD ban %%s 1\n\n"\ + "NAME %s *!*user@*.host\n""CMD ban %%s 2\n\n"\ + "NAME %s *!*user@domain\n""CMD ban %%s 3\n\n"\ + "NAME SEP\n" "CMD \n\n"\ + "NAME %s *!*@*.host\n""CMD kickban %%s 0\n\n"\ + "NAME %s *!*@domain\n""CMD kickban %%s 1\n\n"\ + "NAME %s *!*user@*.host\n""CMD kickban %%s 2\n\n"\ + "NAME %s *!*user@domain\n""CMD kickban %%s 3\n\n"\ + "NAME ENDSUB\n" "CMD \n\n"\ + "NAME ENDSUB\n" "CMD \n\n", + + _("_Open Dialog Window"), "xchat-dialog", + _("_Send a File"), "gtk-floppy", + _("_User Info (WhoIs)"), "gtk-info", + _("_Add to Friends List"), "gtk-add", + _("O_perator Actions"), + + _("Give Ops"), + _("Take Ops"), + _("Give Voice"), + _("Take Voice"), + + _("Kick/Ban"), + _("Kick"), + _("Ban"), + _("Ban"), + _("Ban"), + _("Ban"), + _("Ban"), + _("KickBan"), + _("KickBan"), + _("KickBan"), + _("KickBan")); + + list_loadconf ("popup.conf", &popup_list, buf); + + snprintf (buf, sizeof (buf), + "NAME %s\n" "CMD part\n\n" + "NAME %s\n" "CMD getstr # join \"%s\"\n\n" + "NAME %s\n" "CMD quote LINKS\n\n" + "NAME %s\n" "CMD ping\n\n" + "NAME TOGGLE %s\n" "CMD irc_hide_version\n\n", + _("Leave Channel"), + _("Join Channel..."), + _("Enter Channel to Join:"), + _("Server Links"), + _("Ping Server"), + _("Hide Version")); + list_loadconf ("usermenu.conf", &usermenu_list, buf); + + snprintf (buf, sizeof (buf), + "NAME %s\n" "CMD op %%a\n\n" + "NAME %s\n" "CMD deop %%a\n\n" + "NAME %s\n" "CMD ban %%s\n\n" + "NAME %s\n" "CMD getstr \"%s\" \"kick %%s\" \"%s\"\n\n" + "NAME %s\n" "CMD send %%s\n\n" + "NAME %s\n" "CMD query %%s\n\n", + _("Op"), + _("DeOp"), + _("Ban"), + _("Kick"), + _("bye"), + _("Enter reason to kick %s:"), + _("Sendfile"), + _("Dialog")); + list_loadconf ("buttons.conf", &button_list, buf); + + snprintf (buf, sizeof (buf), + "NAME %s\n" "CMD whois %%s %%s\n\n" + "NAME %s\n" "CMD send %%s\n\n" + "NAME %s\n" "CMD dcc chat %%s\n\n" + "NAME %s\n" "CMD clear\n\n" + "NAME %s\n" "CMD ping %%s\n\n", + _("WhoIs"), + _("Send"), + _("Chat"), + _("Clear"), + _("Ping")); + list_loadconf ("dlgbuttons.conf", &dlgbutton_list, buf); + + list_loadconf ("tabmenu.conf", &tabmenu_list, NULL); + list_loadconf ("ctcpreply.conf", &ctcp_list, defaultconf_ctcp); + list_loadconf ("commands.conf", &command_list, defaultconf_commands); + list_loadconf ("replace.conf", &replace_list, defaultconf_replace); + list_loadconf ("urlhandlers.conf", &urlhandler_list, + defaultconf_urlhandlers); + + servlist_init (); /* load server list */ + + /* if we got a URL, don't open the server list GUI */ + if (!prefs.slist_skip && !arg_url) + fe_serverlist_open (NULL); + + /* turned OFF via -a arg */ + if (!arg_dont_autoconnect) + { + /* do any auto connects */ + if (!servlist_have_auto ()) /* if no new windows open .. */ + { + /* and no serverlist gui ... */ + if (prefs.slist_skip || arg_url) + /* we'll have to open one. */ + new_ircwindow (NULL, NULL, SESS_SERVER, 0); + } else + { + fe_idle_add (xchat_auto_connect, NULL); + } + } else + { + if (prefs.slist_skip || arg_url) + new_ircwindow (NULL, NULL, SESS_SERVER, 0); + } +} + +void +xchat_exit (void) +{ + xchat_is_quitting = TRUE; + in_xchat_exit = TRUE; + plugin_kill_all (); + fe_cleanup (); + if (prefs.autosave) + { + save_config (); + if (prefs.save_pevents) + pevent_save (NULL); + } + if (prefs.autosave_url) + url_autosave (); + sound_save (); + notify_save (); + ignore_save (); + free_sessions (); + chanopt_save_all (); + servlist_cleanup (); + fe_exit (); +} + +#ifndef WIN32 + +static int +child_handler (gpointer userdata) +{ + int pid = GPOINTER_TO_INT (userdata); + + if (waitpid (pid, 0, WNOHANG) == pid) + return 0; /* remove timeout handler */ + return 1; /* keep the timeout handler */ +} + +#endif + +void +xchat_exec (const char *cmd) +{ +#ifdef WIN32 + util_exec (cmd); +#else + int pid = util_exec (cmd); + if (pid != -1) + /* zombie avoiding system. Don't ask! it has to be like this to work + with zvt (which overrides the default handler) */ + fe_timeout_add (1000, child_handler, GINT_TO_POINTER (pid)); +#endif +} + +void +xchat_execv (char * const argv[]) +{ +#ifdef WIN32 + util_execv (argv); +#else + int pid = util_execv (argv); + if (pid != -1) + /* zombie avoiding system. Don't ask! it has to be like this to work + with zvt (which overrides the default handler) */ + fe_timeout_add (1000, child_handler, GINT_TO_POINTER (pid)); +#endif +} + +int +main (int argc, char *argv[]) +{ + int ret; + + srand (time (0)); /* CL: do this only once! */ + +#ifdef SOCKS + SOCKSinit (argv[0]); +#endif + + ret = fe_args (argc, argv); + if (ret != -1) + return ret; + +#ifdef USE_DBUS + xchat_remote (); +#endif + + load_config (); + + fe_init (); + + xchat_init (); + + fe_main (); + +#ifdef USE_OPENSSL + if (ctx) + _SSL_context_free (ctx); +#endif + +#ifdef USE_DEBUG + xchat_mem_list (); +#endif + +#ifdef WIN32 + WSACleanup (); +#endif + + return 0; +} diff --git a/xchat-2.8.8/src/common/xchat.h b/xchat-2.8.8/src/common/xchat.h new file mode 100644 index 0000000..013d6a1 --- /dev/null +++ b/xchat-2.8.8/src/common/xchat.h @@ -0,0 +1,573 @@ +#include "../../config.h" + +#include <glib/gslist.h> +#include <glib/glist.h> +#include <glib/gutils.h> +#include <glib/giochannel.h> +#include <glib/gstrfuncs.h> +#include <time.h> /* need time_t */ + +#ifndef XCHAT_H +#define XCHAT_H + +#include "history.h" + +#ifndef HAVE_SNPRINTF +#define snprintf g_snprintf +#endif + +#ifndef HAVE_VSNPRINTF +#define vsnprintf g_vsnprintf +#endif + +#ifdef USE_DEBUG +#define malloc(n) xchat_malloc(n, __FILE__, __LINE__) +#define realloc(n, m) xchat_realloc(n, m, __FILE__, __LINE__) +#define free(n) xchat_dfree(n, __FILE__, __LINE__) +#define strdup(n) xchat_strdup(n, __FILE__, __LINE__) +void *xchat_malloc (int size, char *file, int line); +void *xchat_strdup (char *str, char *file, int line); +void xchat_dfree (void *buf, char *file, int line); +void *xchat_realloc (char *old, int len, char *file, int line); +#endif + +#ifdef SOCKS +#ifdef __sgi +#include <sys/time.h> +#define INCLUDE_PROTOTYPES 1 +#endif +#include <socks.h> +#endif + +#ifdef USE_OPENSSL +#include <openssl/ssl.h> /* SSL_() */ +#endif + +#ifdef __EMX__ /* for o/s 2 */ +#define OFLAGS O_BINARY +#define strcasecmp stricmp +#define strncasecmp strnicmp +#define PATH_MAX MAXPATHLEN +#define FILEPATH_LEN_MAX MAXPATHLEN +#endif + +/* force a 32bit CMP.L */ +#define CMPL(a, c0, c1, c2, c3) (a == (guint32)(c0 | (c1 << 8) | (c2 << 16) | (c3 << 24))) +#define WORDL(c0, c1, c2, c3) (guint32)(c0 | (c1 << 8) | (c2 << 16) | (c3 << 24)) +#define WORDW(c0, c1) (guint16)(c0 | (c1 << 8)) + +#ifdef WIN32 /* for win32 */ +#define OFLAGS O_BINARY +#define sleep(t) _sleep(t*1000) +#include <direct.h> +#define F_OK 0 +#define X_OK 1 +#define W_OK 2 +#define R_OK 4 +#ifndef S_ISDIR +#define S_ISDIR(m) ((m) & _S_IFDIR) +#endif +#define NETWORK_PRIVATE +#else /* for unix */ +#define OFLAGS 0 +#endif + +#define FONTNAMELEN 127 +#define PATHLEN 255 +#define DOMAINLEN 100 +#define NICKLEN 64 /* including the NULL, so 63 really */ +#define CHANLEN 300 +#define PDIWORDS 32 +#define USERNAMELEN 10 +#define HIDDEN_CHAR 8 /* invisible character for xtext */ + +#if defined(ENABLE_NLS) && !defined(_) +# include <libintl.h> +# define _(x) gettext(x) +# ifdef gettext_noop +# define N_(String) gettext_noop (String) +# else +# define N_(String) (String) +# endif +#endif +#if !defined(_) +# define N_(String) (String) +# define _(x) (x) +#endif + +struct nbexec +{ + int myfd; + int childpid; + int tochannel; /* making this int keeps the struct 4-byte aligned */ + int iotag; + char *linebuf; + int buffill; + struct session *sess; +}; + +struct xchatprefs +{ + char nick1[NICKLEN]; + char nick2[NICKLEN]; + char nick3[NICKLEN]; + char realname[127]; + char username[127]; + char nick_suffix[4]; /* Only ever holds a one-character string. */ + char awayreason[256]; + char quitreason[256]; + char partreason[256]; + char font_normal[FONTNAMELEN + 1]; + char doubleclickuser[256]; + char sounddir[PATHLEN + 1]; + char soundcmd[PATHLEN + 1]; + char background[PATHLEN + 1]; + char dccdir[PATHLEN + 1]; + char dcc_completed_dir[PATHLEN + 1]; + char irc_extra_hilight[300]; + char irc_no_hilight[300]; + char irc_nick_hilight[300]; + char dnsprogram[72]; + char hostname[127]; + char cmdchar[4]; + char logmask[256]; + char stamp_format[64]; + char timestamp_log_format[64]; + char irc_id_ytext[64]; + char irc_id_ntext[64]; + + char proxy_host[64]; + int proxy_port; + int proxy_type; /* 0=disabled, 1=wingate 2=socks4, 3=socks5, 4=http */ + int proxy_use; /* 0=all 1=IRC_ONLY 2=DCC_ONLY */ + unsigned int proxy_auth; + char proxy_user[32]; + char proxy_pass[32]; + + int first_dcc_send_port; + int last_dcc_send_port; + + int tint_red; + int tint_green; + int tint_blue; + + int away_timeout; + int away_size_max; + + int gui_pane_left_size; + int gui_pane_right_size; + + int gui_ulist_pos; + int tab_pos; + + int _tabs_position; + int tab_layout; + int max_auto_indent; + int dcc_blocksize; + int max_lines; + int notify_timeout; + int dcctimeout; + int dccstalltimeout; + int dcc_global_max_get_cps; + int dcc_global_max_send_cps; + int dcc_max_get_cps; + int dcc_max_send_cps; + int mainwindow_left; + int mainwindow_top; + int mainwindow_width; + int mainwindow_height; + int completion_sort; + int gui_win_state; + int gui_url_mod; + int gui_usermenu; + int gui_join_dialog; + int gui_quit_dialog; + int dialog_left; + int dialog_top; + int dialog_width; + int dialog_height; + int dccpermissions; + int recon_delay; + int bantype; + int userlist_sort; + guint32 local_ip; + guint32 dcc_ip; + char dcc_ip_str[DOMAINLEN + 1]; + + unsigned int tab_small; + unsigned int tab_sort; + unsigned int mainwindow_save; + unsigned int perc_color; + unsigned int perc_ascii; + unsigned int autosave; + unsigned int autodialog; + unsigned int autosave_url; + unsigned int autoreconnect; + unsigned int autoreconnectonfail; + unsigned int invisible; + unsigned int servernotice; + unsigned int wallops; + unsigned int skipmotd; + unsigned int autorejoin; + unsigned int colorednicks; + unsigned int chanmodebuttons; + unsigned int userlistbuttons; + unsigned int showhostname_in_userlist; + unsigned int nickcompletion; + unsigned int completion_amount; + unsigned int tabchannels; + unsigned int paned_userlist; + unsigned int autodccchat; + unsigned int autodccsend; + unsigned int autoresume; + unsigned int autoopendccsendwindow; + unsigned int autoopendccrecvwindow; + unsigned int autoopendccchatwindow; + unsigned int transparent; + unsigned int stripcolor; + unsigned int timestamp; + unsigned int fastdccsend; + unsigned int dcc_send_fillspaces; + unsigned int dcc_remove; + unsigned int slist_skip; + unsigned int slist_select; + unsigned int filterbeep; + + unsigned int input_balloon_chans; + unsigned int input_balloon_hilight; + unsigned int input_balloon_priv; + unsigned int input_balloon_time; + + unsigned int input_beep_chans; + unsigned int input_beep_hilight; + unsigned int input_beep_priv; + + unsigned int input_flash_chans; + unsigned int input_flash_hilight; + unsigned int input_flash_priv; + + unsigned int input_tray_chans; + unsigned int input_tray_hilight; + unsigned int input_tray_priv; + + unsigned int truncchans; + unsigned int privmsgtab; + unsigned int irc_join_delay; + unsigned int logging; + unsigned int timestamp_logs; + unsigned int newtabstofront; + unsigned int dccwithnick; + unsigned int hidever; + unsigned int ip_from_server; + unsigned int raw_modes; + unsigned int show_away_once; + unsigned int show_away_message; + unsigned int auto_unmark_away; + unsigned int away_track; + unsigned int userhost; + unsigned int irc_whois_front; + unsigned int use_server_tab; + unsigned int notices_tabs; + unsigned int style_namelistgad; + unsigned int style_inputbox; + unsigned int windows_as_tabs; + unsigned int indent_nicks; + unsigned int text_replay; + unsigned int show_marker; + unsigned int show_separator; + unsigned int thin_separator; + unsigned int auto_indent; + unsigned int wordwrap; + unsigned int gui_input_spell; + unsigned int gui_tray; + unsigned int gui_tray_flags; + unsigned int gui_tweaks; + unsigned int _gui_ulist_left; + unsigned int throttle; + unsigned int topicbar; + unsigned int hideuserlist; + unsigned int hidemenu; + unsigned int perlwarnings; + unsigned int lagometer; + unsigned int throttlemeter; + unsigned int pingtimeout; + unsigned int whois_on_notifyonline; + unsigned int wait_on_exit; + unsigned int confmode; + unsigned int utf8_locale; + unsigned int identd; + + unsigned int ctcp_number_limit; /*flood */ + unsigned int ctcp_time_limit; /*seconds of floods */ + + unsigned int msg_number_limit; /*same deal */ + unsigned int msg_time_limit; + + /* Tells us if we need to save, only when they've been edited. + This is so that we continue using internal defaults (which can + change in the next release) until the user edits them. */ + unsigned int save_pevents:1; +}; + +/* Session types */ +#define SESS_SERVER 1 +#define SESS_CHANNEL 2 +#define SESS_DIALOG 3 +#define SESS_NOTICES 4 +#define SESS_SNOTICES 5 + +/* Per-Channel Settings */ +#define SET_OFF 0 +#define SET_ON 1 +#define SET_DEFAULT 2 /* use global setting */ + +typedef struct session +{ + /* Per-Channel Alerts */ + /* use a byte, because we need a pointer to each element */ + guint8 alert_beep; + guint8 alert_taskbar; + guint8 alert_tray; + + /* Per-Channel Settings */ + guint8 text_hidejoinpart; + guint8 text_logging; + guint8 text_scrollback; + + struct server *server; + void *usertree_alpha; /* pure alphabetical tree */ + void *usertree; /* ordered with Ops first */ + struct User *me; /* points to myself in the usertree */ + char channel[CHANLEN]; + char waitchannel[CHANLEN]; /* waiting to join channel (/join sent) */ + char willjoinchannel[CHANLEN]; /* will issue /join for this channel */ + char channelkey[64]; /* XXX correct max length? */ + int limit; /* channel user limit */ + int logfd; + int scrollfd; /* scrollback filedes */ + int scrollwritten; /* number of lines written */ + + char lastnick[NICKLEN]; /* last nick you /msg'ed */ + + struct history history; + + int ops; /* num. of ops in channel */ + int hops; /* num. of half-oped users */ + int voices; /* num. of voiced people */ + int total; /* num. of users in channel */ + + char *quitreason; + char *topic; + char *current_modes; /* free() me */ + + int mode_timeout_tag; + + struct session *lastlog_sess; + struct nbexec *running_exec; + + struct session_gui *gui; /* initialized by fe_new_window */ + struct restore_gui *res; + + int type; /* SESS_* */ + + int new_data:1; /* new data avail? (purple tab) */ + int nick_said:1; /* your nick mentioned? (blue tab) */ + int msg_said:1; /* new msg available? (red tab) */ + + int ignore_date:1; + int ignore_mode:1; + int ignore_names:1; + int end_of_names:1; + int doing_who:1; /* /who sent on this channel */ + int done_away_check:1; /* done checking for away status changes */ + unsigned int lastlog_regexp:1; /* this is a lastlog and using regexp */ +} session; + +struct msproxy_state_t +{ + gint32 clientid; + gint32 serverid; + unsigned char seq_recv; /* seq number of last packet recv. */ + unsigned char seq_sent; /* seq number of last packet sent. */ +}; + +typedef struct server +{ + /* server control operations (in server*.c) */ + void (*connect)(struct server *, char *hostname, int port, int no_login); + void (*disconnect)(struct session *, int sendquit, int err); + int (*cleanup)(struct server *); + void (*flush_queue)(struct server *); + void (*auto_reconnect)(struct server *, int send_quit, int err); + /* irc protocol functions (in proto*.c) */ + void (*p_inline)(struct server *, char *buf, int len); + void (*p_invite)(struct server *, char *channel, char *nick); + void (*p_cycle)(struct server *, char *channel, char *key); + void (*p_ctcp)(struct server *, char *to, char *msg); + void (*p_nctcp)(struct server *, char *to, char *msg); + void (*p_quit)(struct server *, char *reason); + void (*p_kick)(struct server *, char *channel, char *nick, char *reason); + void (*p_part)(struct server *, char *channel, char *reason); + void (*p_ns_identify)(struct server *, char *pass); + void (*p_ns_ghost)(struct server *, char *usname, char *pass); + void (*p_join)(struct server *, char *channel, char *key); + void (*p_join_list)(struct server *, GSList *channels, GSList *keys); + void (*p_login)(struct server *, char *user, char *realname); + void (*p_join_info)(struct server *, char *channel); + void (*p_mode)(struct server *, char *target, char *mode); + void (*p_user_list)(struct server *, char *channel); + void (*p_away_status)(struct server *, char *channel); + void (*p_whois)(struct server *, char *nicks); + void (*p_get_ip)(struct server *, char *nick); + void (*p_get_ip_uh)(struct server *, char *nick); + void (*p_set_back)(struct server *); + void (*p_set_away)(struct server *, char *reason); + void (*p_message)(struct server *, char *channel, char *text); + void (*p_action)(struct server *, char *channel, char *act); + void (*p_notice)(struct server *, char *channel, char *text); + void (*p_topic)(struct server *, char *channel, char *topic); + void (*p_list_channels)(struct server *, char *arg, int min_users); + void (*p_change_nick)(struct server *, char *new_nick); + void (*p_names)(struct server *, char *channel); + void (*p_ping)(struct server *, char *to, char *timestring); +/* void (*p_set_away)(struct server *);*/ + int (*p_raw)(struct server *, char *raw); + int (*p_cmp)(const char *s1, const char *s2); + + int port; + int sok; /* is equal to sok4 or sok6 (the one we are using) */ + int sok4; /* tcp4 socket */ + int sok6; /* tcp6 socket */ + int proxy_sok; /* Additional information for MS Proxy beast */ + int proxy_sok4; + int proxy_sok6; + struct msproxy_state_t msp_state; + int id; /* unique ID number (for plugin API) */ +#ifdef USE_OPENSSL + SSL *ssl; + int ssl_do_connect_tag; +#else + void *ssl; +#endif + int childread; + int childwrite; + int childpid; + int iotag; + int recondelay_tag; /* reconnect delay timeout */ + int joindelay_tag; /* waiting before we send JOIN */ + char hostname[128]; /* real ip number */ + char servername[128]; /* what the server says is its name */ + char password[86]; + char nick[NICKLEN]; + char linebuf[2048]; /* RFC says 512 chars including \r\n */ + char *last_away_reason; + int pos; /* current position in linebuf */ + int nickcount; + int nickservtype; /* 0=/MSG nickserv 1=/NICKSERV 2=/NS */ + + char *chantypes; /* for 005 numeric - free me */ + char *chanmodes; /* for 005 numeric - free me */ + char *nick_prefixes; /* e.g. "*@%+" */ + char *nick_modes; /* e.g. "aohv" */ + char *bad_nick_prefixes; /* for ircd that doesn't give the modes */ + int modes_per_line; /* 6 on undernet, 4 on efnet etc... */ + + void *network; /* points to entry in servlist.c or NULL! */ + + GSList *outbound_queue; + time_t next_send; /* cptr->since in ircu */ + time_t prev_now; /* previous now-time */ + int sendq_len; /* queue size */ + int lag; /* milliseconds */ + + struct session *front_session; /* front-most window/tab */ + struct session *server_session; /* server window/tab */ + + struct server_gui *gui; /* initialized by fe_new_server */ + + unsigned int ctcp_counter; /*flood */ + time_t ctcp_last_time; + + unsigned int msg_counter; /*counts the msg tab opened in a certain time */ + time_t msg_last_time; + + /*time_t connect_time;*/ /* when did it connect? */ + time_t lag_sent; + time_t ping_recv; /* when we last got a ping reply */ + time_t away_time; /* when we were marked away */ + + char *encoding; /* NULL for system */ + char *autojoin; /* list of channels & keys to join */ + + unsigned int motd_skipped:1; + unsigned int connected:1; + unsigned int connecting:1; + unsigned int no_login:1; + unsigned int skip_next_userhost:1;/* used for "get my ip from server" */ + unsigned int skip_next_whois:1; /* hide whois output */ + unsigned int inside_whois:1; + unsigned int doing_dns:1; /* /dns has been done */ + unsigned int end_of_motd:1; /* end of motd reached (logged in) */ + unsigned int sent_quit:1; /* sent a QUIT already? */ + unsigned int use_listargs:1; /* undernet and dalnet need /list >0,<10000 */ + unsigned int is_away:1; + unsigned int reconnect_away:1; /* whether to reconnect in is_away state */ + unsigned int dont_use_proxy:1; /* to proxy or not to proxy */ + unsigned int supports_watch:1; /* supports the WATCH command */ + unsigned int bad_prefix:1; /* gave us a bad PREFIX= 005 number */ + unsigned int have_namesx:1; /* 005 tokens NAMESX and UHNAMES */ + unsigned int have_uhnames:1; + unsigned int have_whox:1; /* have undernet's WHOX features */ + unsigned int have_capab:1; /* supports CAPAB (005 tells us) */ + unsigned int have_idmsg:1; /* freenode's IDENTIFY-MSG */ + unsigned int have_except:1; /* ban exemptions +e */ + unsigned int using_cp1255:1; /* encoding is CP1255/WINDOWS-1255? */ + unsigned int using_irc:1; /* encoding is "IRC" (CP1252/UTF-8 hybrid)? */ + unsigned int use_who:1; /* whether to use WHO command to get dcc_ip */ +#ifdef USE_OPENSSL + unsigned int use_ssl:1; /* is server SSL capable? */ + unsigned int accept_invalid_cert:1;/* ignore result of server's cert. verify */ +#endif +} server; + +typedef int (*cmd_callback) (struct session * sess, char *tbuf, char *word[], + char *word_eol[]); + +struct commands +{ + char *name; + cmd_callback callback; + char needserver; + char needchannel; + gint16 handle_quotes; + char *help; +}; + +struct away_msg +{ + struct server *server; + char nick[NICKLEN]; + char *message; +}; + +/* not just for popups, but used for usercommands, ctcp replies, + userlist buttons etc */ + +struct popup +{ + char *cmd; + char *name; +}; + +/* CL: get a random int in the range [0..n-1]. DON'T use rand() % n, it gives terrible results. */ +#define RAND_INT(n) ((int)(rand() / (RAND_MAX + 1.0) * (n))) + +#if defined(WIN32) && GLIB_CHECK_VERSION(2,4,0) +#define xchat_filename_from_utf8 g_locale_from_utf8 +#define xchat_filename_to_utf8 g_locale_to_utf8 +#else +#define xchat_filename_from_utf8 g_filename_from_utf8 +#define xchat_filename_to_utf8 g_filename_to_utf8 +#endif + +#endif diff --git a/xchat-2.8.8/src/common/xchatc.h b/xchat-2.8.8/src/common/xchatc.h new file mode 100644 index 0000000..c22e17d --- /dev/null +++ b/xchat-2.8.8/src/common/xchatc.h @@ -0,0 +1,39 @@ +#ifndef XCHAT_C_H +#define XCHAT_C_H + +extern struct xchatprefs prefs; + +extern int xchat_is_quitting; +extern gint arg_skip_plugins; /* command-line args */ +extern gint arg_dont_autoconnect; +extern char *arg_url; +extern char *arg_command; +extern gint arg_existing; + +extern session *current_sess; +extern session *current_tab; + +extern GSList *popup_list; +extern GSList *button_list; +extern GSList *dlgbutton_list; +extern GSList *command_list; +extern GSList *ctcp_list; +extern GSList *replace_list; +extern GSList *sess_list; +extern GSList *dcc_list; +extern GSList *ignore_list; +extern GSList *usermenu_list; +extern GSList *urlhandler_list; +extern GSList *tabmenu_list; + +session * find_channel (server *serv, char *chan); +session * find_dialog (server *serv, char *nick); +session * new_ircwindow (server *serv, char *name, int type, int focus); +int is_session (session * sess); +void session_free (session *killsess); +void lag_check (void); +void xchat_exit (void); +void xchat_exec (const char *cmd); +void xchat_execv (char * const argv[]); + +#endif diff --git a/xchat-2.8.8/src/fe-gtk/.deps/about.Po b/xchat-2.8.8/src/fe-gtk/.deps/about.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/.deps/about.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/fe-gtk/.deps/ascii.Po b/xchat-2.8.8/src/fe-gtk/.deps/ascii.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/.deps/ascii.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/fe-gtk/.deps/banlist.Po b/xchat-2.8.8/src/fe-gtk/.deps/banlist.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/.deps/banlist.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/fe-gtk/.deps/chanlist.Po b/xchat-2.8.8/src/fe-gtk/.deps/chanlist.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/.deps/chanlist.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/fe-gtk/.deps/chanview.Po b/xchat-2.8.8/src/fe-gtk/.deps/chanview.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/.deps/chanview.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/fe-gtk/.deps/custom-list.Po b/xchat-2.8.8/src/fe-gtk/.deps/custom-list.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/.deps/custom-list.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/fe-gtk/.deps/dccgui.Po b/xchat-2.8.8/src/fe-gtk/.deps/dccgui.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/.deps/dccgui.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/fe-gtk/.deps/editlist.Po b/xchat-2.8.8/src/fe-gtk/.deps/editlist.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/.deps/editlist.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/fe-gtk/.deps/fe-gtk.Po b/xchat-2.8.8/src/fe-gtk/.deps/fe-gtk.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/.deps/fe-gtk.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/fe-gtk/.deps/fkeys.Po b/xchat-2.8.8/src/fe-gtk/.deps/fkeys.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/.deps/fkeys.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/fe-gtk/.deps/gtkutil.Po b/xchat-2.8.8/src/fe-gtk/.deps/gtkutil.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/.deps/gtkutil.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/fe-gtk/.deps/ignoregui.Po b/xchat-2.8.8/src/fe-gtk/.deps/ignoregui.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/.deps/ignoregui.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/fe-gtk/.deps/joind.Po b/xchat-2.8.8/src/fe-gtk/.deps/joind.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/.deps/joind.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/fe-gtk/.deps/maingui.Po b/xchat-2.8.8/src/fe-gtk/.deps/maingui.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/.deps/maingui.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/fe-gtk/.deps/menu.Po b/xchat-2.8.8/src/fe-gtk/.deps/menu.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/.deps/menu.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/fe-gtk/.deps/mmx_cmod.Po b/xchat-2.8.8/src/fe-gtk/.deps/mmx_cmod.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/.deps/mmx_cmod.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/fe-gtk/.deps/notifygui.Po b/xchat-2.8.8/src/fe-gtk/.deps/notifygui.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/.deps/notifygui.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/fe-gtk/.deps/palette.Po b/xchat-2.8.8/src/fe-gtk/.deps/palette.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/.deps/palette.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/fe-gtk/.deps/pixmaps.Po b/xchat-2.8.8/src/fe-gtk/.deps/pixmaps.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/.deps/pixmaps.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/fe-gtk/.deps/plugin-tray.Po b/xchat-2.8.8/src/fe-gtk/.deps/plugin-tray.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/.deps/plugin-tray.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/fe-gtk/.deps/plugingui.Po b/xchat-2.8.8/src/fe-gtk/.deps/plugingui.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/.deps/plugingui.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/fe-gtk/.deps/rawlog.Po b/xchat-2.8.8/src/fe-gtk/.deps/rawlog.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/.deps/rawlog.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/fe-gtk/.deps/search.Po b/xchat-2.8.8/src/fe-gtk/.deps/search.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/.deps/search.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/fe-gtk/.deps/servlistgui.Po b/xchat-2.8.8/src/fe-gtk/.deps/servlistgui.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/.deps/servlistgui.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/fe-gtk/.deps/setup.Po b/xchat-2.8.8/src/fe-gtk/.deps/setup.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/.deps/setup.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/fe-gtk/.deps/sexy-spell-entry.Po b/xchat-2.8.8/src/fe-gtk/.deps/sexy-spell-entry.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/.deps/sexy-spell-entry.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/fe-gtk/.deps/textgui.Po b/xchat-2.8.8/src/fe-gtk/.deps/textgui.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/.deps/textgui.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/fe-gtk/.deps/urlgrab.Po b/xchat-2.8.8/src/fe-gtk/.deps/urlgrab.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/.deps/urlgrab.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/fe-gtk/.deps/userlistgui.Po b/xchat-2.8.8/src/fe-gtk/.deps/userlistgui.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/.deps/userlistgui.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/fe-gtk/.deps/xtext.Po b/xchat-2.8.8/src/fe-gtk/.deps/xtext.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/.deps/xtext.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/fe-gtk/Makefile b/xchat-2.8.8/src/fe-gtk/Makefile new file mode 100644 index 0000000..ecce702 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/Makefile @@ -0,0 +1,688 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# src/fe-gtk/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + +pkgdatadir = $(datadir)/xchat +pkgincludedir = $(includedir)/xchat +pkglibdir = $(libdir)/xchat +pkglibexecdir = $(libexecdir)/xchat +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +bin_PROGRAMS = xchat$(EXEEXT) +subdir = src/fe-gtk +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +PROGRAMS = $(bin_PROGRAMS) +am__xchat_SOURCES_DIST = about.c ascii.c banlist.c chanlist.c \ + chanview.c custom-list.c dccgui.c editlist.c fe-gtk.c fkeys.c \ + gtkutil.c ignoregui.c joind.c menu.c maingui.c mmx_cmod.S \ + notifygui.c palette.c pixmaps.c plugin-tray.c plugingui.c \ + rawlog.c search.c servlistgui.c setup.c sexy-spell-entry.c \ + textgui.c urlgrab.c userlistgui.c xtext.c +#am__objects_1 = mmx_cmod.$(OBJEXT) +am__objects_2 = plugingui.$(OBJEXT) +am__objects_3 = sexy-spell-entry.$(OBJEXT) +am_xchat_OBJECTS = about.$(OBJEXT) ascii.$(OBJEXT) banlist.$(OBJEXT) \ + chanlist.$(OBJEXT) chanview.$(OBJEXT) custom-list.$(OBJEXT) \ + dccgui.$(OBJEXT) editlist.$(OBJEXT) fe-gtk.$(OBJEXT) \ + fkeys.$(OBJEXT) gtkutil.$(OBJEXT) ignoregui.$(OBJEXT) \ + joind.$(OBJEXT) menu.$(OBJEXT) maingui.$(OBJEXT) \ + $(am__objects_1) notifygui.$(OBJEXT) palette.$(OBJEXT) \ + pixmaps.$(OBJEXT) plugin-tray.$(OBJEXT) $(am__objects_2) \ + rawlog.$(OBJEXT) search.$(OBJEXT) servlistgui.$(OBJEXT) \ + setup.$(OBJEXT) $(am__objects_3) textgui.$(OBJEXT) \ + urlgrab.$(OBJEXT) userlistgui.$(OBJEXT) xtext.$(OBJEXT) +xchat_OBJECTS = $(am_xchat_OBJECTS) +am__DEPENDENCIES_1 = +xchat_DEPENDENCIES = ../common/libxchatcommon.a $(am__DEPENDENCIES_1) +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) +LTCPPASCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(xchat_SOURCES) +DIST_SOURCES = $(am__xchat_SOURCES_DIST) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run aclocal-1.11 +ALLOCA = +AMTAR = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run tar +AR = ar +AUTOCONF = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run autoconf +AUTOHEADER = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run autoheader +AUTOMAKE = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run automake-1.11 +AWK = gawk +BUILD_INCLUDED_LIBINTL = no +CATOBJEXT = .gmo +CC = gcc +CCAS = gcc +CCASDEPMODE = depmode=gcc3 +CCASFLAGS = -g -O2 +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 -Wall -pipe -Wno-pointer-sign -funsigned-char +CFLAG_VISIBILITY = -fvisibility=hidden +COMMON_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -pthread -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include +COMMON_LIBS = -lglib-2.0 -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DATADIR = ${prefix}/share +DATADIRNAME = share +DBUS_BINDING_TOOL = /usr/bin/dbus-binding-tool +DBUS_CFLAGS = -pthread -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include +DBUS_LIBS = -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0 +DBUS_SERVICES_DIR = ${prefix}/share/dbus-1/services +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/local/bin/grep -E +EXEEXT = +FGREP = /usr/local/bin/grep -F +GCONFTOOL = /usr/bin/gconftool-2 +GENCAT = gencat +GETTEXT_MACRO_VERSION = 0.17 +GETTEXT_PACKAGE = xchat +GLIBC2 = yes +GLIBC21 = yes +GLIB_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include +GLIB_GENMARSHAL = /usr/bin/glib-genmarshal +GLIB_LIBS = -lglib-2.0 +GLIB_MKENUMS = glib-mkenums +GMSGFMT = /usr/bin/msgfmt +GMSGFMT_015 = /usr/bin/msgfmt +GOBJECT_QUERY = gobject-query +GREP = /usr/local/bin/grep +GTKSPELL_CFLAGS = +GTKSPELL_LIBS = +GTK_CFLAGS = -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 +GTK_LIBS = -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype +GUI_CFLAGS = -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 +GUI_LIBS = -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype -Wl,--version-script,$(srcdir)/../version-script -lglib-2.0 -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0 +HAVE_ASPRINTF = 1 +HAVE_POSIX_PRINTF = 1 +HAVE_SNPRINTF = 1 +HAVE_VISIBILITY = 1 +HAVE_WPRINTF = 0 +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +INSTOBJEXT = .mo +INTLBISON = bison +INTLLIBS = +INTLOBJS = +INTL_LIBTOOL_SUFFIX_PREFIX = +INTL_MACOSX_LIBS = +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = -lgmodule-2.0 +LIBICONV = -liconv +LIBINTL = +LIBMULTITHREAD = -lpthread +LIBOBJS = +LIBPTH = +LIBPTH_PREFIX = +LIBS = -lX11 -lssl -lcrypto -ldl -Wl,--export-dynamic -pthread -lglib-2.0 +LIBSEXY_CFLAGS = +LIBSEXY_LIBS = +LIBTHREAD = +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBC = -lc +LTLIBICONV = -liconv +LTLIBINTL = +LTLIBMULTITHREAD = -lpthread +LTLIBOBJS = +LTLIBPTH = +LTLIBTHREAD = +MAINT = # +MAKEINFO = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run makeinfo +MKDIR_P = /bin/mkdir -p +MSGFMT = /usr/bin/msgfmt +MSGFMT_015 = /usr/bin/msgfmt +MSGMERGE = /usr/bin/msgmerge +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = xchat +PACKAGE_BUGREPORT = http://www.xchat.org/ +PACKAGE_NAME = XChat +PACKAGE_STRING = XChat 2.8.8 +PACKAGE_TARNAME = xchat +PACKAGE_URL = +PACKAGE_VERSION = 2.8.8 +PATH_SEPARATOR = : +PERL_CFLAGS = -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/lib/x86_64-linux-gnu/perl/5.26/CORE +PERL_LDFLAGS = -Wl,-E -fstack-protector-strong -L/usr/local/lib -L/usr/lib/x86_64-linux-gnu/perl/5.26/CORE -lperl -ldl -lm -lpthread -lcrypt +PKG_CONFIG = /usr/bin/pkg-config +PLUGIN_INCLUDES = -I$(top_srcdir)/plugins +POSUB = po +PRI_MACROS_BROKEN = 0 +PY_CFLAGS = -I/usr/include/python2.7 +PY_LIBS = -L/usr/lib/python2.7/config -lpython2.7 -lpthread -lutil +RANLIB = ranlib +SED = /bin/sed +SET_MAKE = +SHELL = /bin/bash +STRIP = strip +TCL_CFLAGS = -I/usr/include -I/usr/include/tcl8.6 +TCL_LIBS = -L/usr/lib/x86_64-linux-gnu -ltcl8.6 -ldl -lz -lpthread -lm +USE_INCLUDED_LIBINTL = no +USE_NLS = yes +VERSION = 2.8.8 +WINDRES = +WOE32 = no +WOE32DLL = no +XGETTEXT = /usr/bin/xgettext +XGETTEXT_015 = /usr/bin/xgettext +XGETTEXT_EXTRA_OPTIONS = +abs_builddir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/src/fe-gtk +abs_srcdir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/src/fe-gtk +abs_top_builddir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8 +abs_top_srcdir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8 +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = /usr/local +gdkpixbufcsourcepath = /usr/bin/gdk-pixbuf-csource +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = $(datadir)/locale +localstatedir = ${prefix}/var +lt_ECHO = echo +mandir = ${datarootdir}/man +mkdir_p = /bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +perlpath = /usr/bin/perl +pkgconfigpath = /usr/bin/pkg-config +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +pythonpath = /usr/bin/python2 +sbindir = ${exec_prefix}/sbin +sedpath = /bin/sed +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../../ +top_builddir = ../.. +top_srcdir = ../.. +unamepath = /bin/uname +xchatlibdir = ${exec_prefix}/lib/xchat +INCLUDES = $(GUI_CFLAGS) -DG_DISABLE_CAST_CHECKS -DLOCALEDIR=\"$(localedir)\" +xchat_LDADD = ../common/libxchatcommon.a $(GUI_LIBS) +EXTRA_DIST = \ + about.h ascii.h banlist.h chanlist.h chanview.h chanview-tabs.c \ + chanview-tree.c custom-list.h editlist.h fe-gtk.h fkeys.h gtkutil.h joind.h \ + maingui.h menu.h mmx_cmod.S mmx_cmod.h notifygui.h palette.h pixmaps.h \ + plugin-tray.h plugingui.c plugingui.h rawlog.h search.h sexy-spell-entry.h \ + textgui.h urlgrab.h userlistgui.h xtext.h + +#mmx_cmod_S = mmx_cmod.S +plugingui_c = plugingui.c +sexy_spell_entry_c = sexy-spell-entry.c +xchat_SOURCES = about.c ascii.c banlist.c chanlist.c chanview.c custom-list.c \ + dccgui.c editlist.c fe-gtk.c fkeys.c gtkutil.c ignoregui.c joind.c menu.c \ + maingui.c $(mmx_cmod_S) notifygui.c palette.c pixmaps.c plugin-tray.c $(plugingui_c) \ + rawlog.c search.c servlistgui.c setup.c $(sexy_spell_entry_c) textgui.c \ + urlgrab.c userlistgui.c xtext.c + +all: all-am + +.SUFFIXES: +.SUFFIXES: .S .c .lo .o .obj +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/fe-gtk/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/fe-gtk/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p || test -f $$p1; \ + then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +xchat$(EXEEXT): $(xchat_OBJECTS) $(xchat_DEPENDENCIES) + @rm -f xchat$(EXEEXT) + $(LINK) $(xchat_OBJECTS) $(xchat_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/about.Po +include ./$(DEPDIR)/ascii.Po +include ./$(DEPDIR)/banlist.Po +include ./$(DEPDIR)/chanlist.Po +include ./$(DEPDIR)/chanview.Po +include ./$(DEPDIR)/custom-list.Po +include ./$(DEPDIR)/dccgui.Po +include ./$(DEPDIR)/editlist.Po +include ./$(DEPDIR)/fe-gtk.Po +include ./$(DEPDIR)/fkeys.Po +include ./$(DEPDIR)/gtkutil.Po +include ./$(DEPDIR)/ignoregui.Po +include ./$(DEPDIR)/joind.Po +include ./$(DEPDIR)/maingui.Po +include ./$(DEPDIR)/menu.Po +include ./$(DEPDIR)/mmx_cmod.Po +include ./$(DEPDIR)/notifygui.Po +include ./$(DEPDIR)/palette.Po +include ./$(DEPDIR)/pixmaps.Po +include ./$(DEPDIR)/plugin-tray.Po +include ./$(DEPDIR)/plugingui.Po +include ./$(DEPDIR)/rawlog.Po +include ./$(DEPDIR)/search.Po +include ./$(DEPDIR)/servlistgui.Po +include ./$(DEPDIR)/setup.Po +include ./$(DEPDIR)/sexy-spell-entry.Po +include ./$(DEPDIR)/textgui.Po +include ./$(DEPDIR)/urlgrab.Po +include ./$(DEPDIR)/userlistgui.Po +include ./$(DEPDIR)/xtext.Po + +.S.o: + depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ + $(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ + $(am__mv) $$depbase.Tpo $$depbase.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) \ +# $(CPPASCOMPILE) -c -o $@ $< + +.S.obj: + depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ + $(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ + $(am__mv) $$depbase.Tpo $$depbase.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) \ +# $(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.S.lo: + depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ + $(LTCPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ + $(am__mv) $$depbase.Tpo $$depbase.Plo +# source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) \ +# $(LTCPPASCOMPILE) -c -o $@ $< + +.c.o: + depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ + $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ + $(am__mv) $$depbase.Tpo $$depbase.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(COMPILE) -c -o $@ $< + +.c.obj: + depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ + $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ + $(am__mv) $$depbase.Tpo $$depbase.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: + depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ + $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ + $(am__mv) $$depbase.Tpo $$depbase.Plo +# source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic clean-libtool ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-binPROGRAMS install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am \ + uninstall-binPROGRAMS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/xchat-2.8.8/src/fe-gtk/Makefile.am b/xchat-2.8.8/src/fe-gtk/Makefile.am new file mode 100644 index 0000000..7db3809 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/Makefile.am @@ -0,0 +1,32 @@ +localedir = $(datadir)/locale + +bin_PROGRAMS = xchat + +INCLUDES = $(GUI_CFLAGS) -DG_DISABLE_CAST_CHECKS -DLOCALEDIR=\"$(localedir)\" + +xchat_LDADD = ../common/libxchatcommon.a $(GUI_LIBS) + +EXTRA_DIST = \ + about.h ascii.h banlist.h chanlist.h chanview.h chanview-tabs.c \ + chanview-tree.c custom-list.h editlist.h fe-gtk.h fkeys.h gtkutil.h joind.h \ + maingui.h menu.h mmx_cmod.S mmx_cmod.h notifygui.h palette.h pixmaps.h \ + plugin-tray.h plugingui.c plugingui.h rawlog.h search.h sexy-spell-entry.h \ + textgui.h urlgrab.h userlistgui.h xtext.h + +if USE_MMX +mmx_cmod_S = mmx_cmod.S +endif + +if DO_PLUGIN +plugingui_c = plugingui.c +endif + +if USE_LIBSEXY +sexy_spell_entry_c = sexy-spell-entry.c +endif + +xchat_SOURCES = about.c ascii.c banlist.c chanlist.c chanview.c custom-list.c \ + dccgui.c editlist.c fe-gtk.c fkeys.c gtkutil.c ignoregui.c joind.c menu.c \ + maingui.c $(mmx_cmod_S) notifygui.c palette.c pixmaps.c plugin-tray.c $(plugingui_c) \ + rawlog.c search.c servlistgui.c setup.c $(sexy_spell_entry_c) textgui.c \ + urlgrab.c userlistgui.c xtext.c diff --git a/xchat-2.8.8/src/fe-gtk/Makefile.in b/xchat-2.8.8/src/fe-gtk/Makefile.in new file mode 100644 index 0000000..999a982 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/Makefile.in @@ -0,0 +1,688 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +bin_PROGRAMS = xchat$(EXEEXT) +subdir = src/fe-gtk +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +PROGRAMS = $(bin_PROGRAMS) +am__xchat_SOURCES_DIST = about.c ascii.c banlist.c chanlist.c \ + chanview.c custom-list.c dccgui.c editlist.c fe-gtk.c fkeys.c \ + gtkutil.c ignoregui.c joind.c menu.c maingui.c mmx_cmod.S \ + notifygui.c palette.c pixmaps.c plugin-tray.c plugingui.c \ + rawlog.c search.c servlistgui.c setup.c sexy-spell-entry.c \ + textgui.c urlgrab.c userlistgui.c xtext.c +@USE_MMX_TRUE@am__objects_1 = mmx_cmod.$(OBJEXT) +@DO_PLUGIN_TRUE@am__objects_2 = plugingui.$(OBJEXT) +@USE_LIBSEXY_TRUE@am__objects_3 = sexy-spell-entry.$(OBJEXT) +am_xchat_OBJECTS = about.$(OBJEXT) ascii.$(OBJEXT) banlist.$(OBJEXT) \ + chanlist.$(OBJEXT) chanview.$(OBJEXT) custom-list.$(OBJEXT) \ + dccgui.$(OBJEXT) editlist.$(OBJEXT) fe-gtk.$(OBJEXT) \ + fkeys.$(OBJEXT) gtkutil.$(OBJEXT) ignoregui.$(OBJEXT) \ + joind.$(OBJEXT) menu.$(OBJEXT) maingui.$(OBJEXT) \ + $(am__objects_1) notifygui.$(OBJEXT) palette.$(OBJEXT) \ + pixmaps.$(OBJEXT) plugin-tray.$(OBJEXT) $(am__objects_2) \ + rawlog.$(OBJEXT) search.$(OBJEXT) servlistgui.$(OBJEXT) \ + setup.$(OBJEXT) $(am__objects_3) textgui.$(OBJEXT) \ + urlgrab.$(OBJEXT) userlistgui.$(OBJEXT) xtext.$(OBJEXT) +xchat_OBJECTS = $(am_xchat_OBJECTS) +am__DEPENDENCIES_1 = +xchat_DEPENDENCIES = ../common/libxchatcommon.a $(am__DEPENDENCIES_1) +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) +LTCPPASCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(xchat_SOURCES) +DIST_SOURCES = $(am__xchat_SOURCES_DIST) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +COMMON_CFLAGS = @COMMON_CFLAGS@ +COMMON_LIBS = @COMMON_LIBS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DATADIRNAME = @DATADIRNAME@ +DBUS_BINDING_TOOL = @DBUS_BINDING_TOOL@ +DBUS_CFLAGS = @DBUS_CFLAGS@ +DBUS_LIBS = @DBUS_LIBS@ +DBUS_SERVICES_DIR = @DBUS_SERVICES_DIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GCONFTOOL = @GCONFTOOL@ +GENCAT = @GENCAT@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GLIB_CFLAGS = @GLIB_CFLAGS@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GLIB_LIBS = @GLIB_LIBS@ +GLIB_MKENUMS = @GLIB_MKENUMS@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GOBJECT_QUERY = @GOBJECT_QUERY@ +GREP = @GREP@ +GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ +GTKSPELL_LIBS = @GTKSPELL_LIBS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_LIBS = @GTK_LIBS@ +GUI_CFLAGS = @GUI_CFLAGS@ +GUI_LIBS = @GUI_LIBS@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBSEXY_CFLAGS = @LIBSEXY_CFLAGS@ +LIBSEXY_LIBS = @LIBSEXY_LIBS@ +LIBTHREAD = @LIBTHREAD@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBC = @LTLIBC@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTHREAD = @LTLIBTHREAD@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL_CFLAGS = @PERL_CFLAGS@ +PERL_LDFLAGS = @PERL_LDFLAGS@ +PKG_CONFIG = @PKG_CONFIG@ +PLUGIN_INCLUDES = @PLUGIN_INCLUDES@ +POSUB = @POSUB@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +PY_CFLAGS = @PY_CFLAGS@ +PY_LIBS = @PY_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TCL_CFLAGS = @TCL_CFLAGS@ +TCL_LIBS = @TCL_LIBS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WOE32 = @WOE32@ +WOE32DLL = @WOE32DLL@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gdkpixbufcsourcepath = @gdkpixbufcsourcepath@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = $(datadir)/locale +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +perlpath = @perlpath@ +pkgconfigpath = @pkgconfigpath@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pythonpath = @pythonpath@ +sbindir = @sbindir@ +sedpath = @sedpath@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +unamepath = @unamepath@ +xchatlibdir = @xchatlibdir@ +INCLUDES = $(GUI_CFLAGS) -DG_DISABLE_CAST_CHECKS -DLOCALEDIR=\"$(localedir)\" +xchat_LDADD = ../common/libxchatcommon.a $(GUI_LIBS) +EXTRA_DIST = \ + about.h ascii.h banlist.h chanlist.h chanview.h chanview-tabs.c \ + chanview-tree.c custom-list.h editlist.h fe-gtk.h fkeys.h gtkutil.h joind.h \ + maingui.h menu.h mmx_cmod.S mmx_cmod.h notifygui.h palette.h pixmaps.h \ + plugin-tray.h plugingui.c plugingui.h rawlog.h search.h sexy-spell-entry.h \ + textgui.h urlgrab.h userlistgui.h xtext.h + +@USE_MMX_TRUE@mmx_cmod_S = mmx_cmod.S +@DO_PLUGIN_TRUE@plugingui_c = plugingui.c +@USE_LIBSEXY_TRUE@sexy_spell_entry_c = sexy-spell-entry.c +xchat_SOURCES = about.c ascii.c banlist.c chanlist.c chanview.c custom-list.c \ + dccgui.c editlist.c fe-gtk.c fkeys.c gtkutil.c ignoregui.c joind.c menu.c \ + maingui.c $(mmx_cmod_S) notifygui.c palette.c pixmaps.c plugin-tray.c $(plugingui_c) \ + rawlog.c search.c servlistgui.c setup.c $(sexy_spell_entry_c) textgui.c \ + urlgrab.c userlistgui.c xtext.c + +all: all-am + +.SUFFIXES: +.SUFFIXES: .S .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/fe-gtk/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/fe-gtk/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p || test -f $$p1; \ + then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +xchat$(EXEEXT): $(xchat_OBJECTS) $(xchat_DEPENDENCIES) + @rm -f xchat$(EXEEXT) + $(LINK) $(xchat_OBJECTS) $(xchat_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/about.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ascii.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/banlist.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chanlist.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chanview.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/custom-list.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dccgui.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/editlist.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fe-gtk.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fkeys.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtkutil.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ignoregui.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/joind.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/maingui.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/menu.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mmx_cmod.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/notifygui.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/palette.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pixmaps.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin-tray.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugingui.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rawlog.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/search.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/servlistgui.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setup.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sexy-spell-entry.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/textgui.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/urlgrab.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/userlistgui.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xtext.Po@am__quote@ + +.S.o: +@am__fastdepCCAS_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCCAS_TRUE@ $(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCCAS_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(CPPASCOMPILE) -c -o $@ $< + +.S.obj: +@am__fastdepCCAS_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCCAS_TRUE@ $(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCCAS_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.S.lo: +@am__fastdepCCAS_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCCAS_TRUE@ $(LTCPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCCAS_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(LTCPPASCOMPILE) -c -o $@ $< + +.c.o: +@am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic clean-libtool ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-binPROGRAMS install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am \ + uninstall-binPROGRAMS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/xchat-2.8.8/src/fe-gtk/about.c b/xchat-2.8.8/src/fe-gtk/about.c new file mode 100644 index 0000000..60700ae --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/about.c @@ -0,0 +1,161 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "fe-gtk.h" + +#include <gtk/gtkmain.h> +#include <gtk/gtkcontainer.h> +#include <gtk/gtkdialog.h> +#include <gtk/gtkvbox.h> +#include <gtk/gtkhbox.h> +#include <gtk/gtkimage.h> +#include <gtk/gtklabel.h> +#include <gtk/gtkbutton.h> +#include <gtk/gtkstock.h> +#include <gtk/gtkwindow.h> + +#ifdef USE_XLIB +#include <gdk/gdkx.h> +#endif + +#include "../common/xchat.h" +#include "../common/util.h" +#include "palette.h" +#include "pixmaps.h" +#include "gtkutil.h" +#include "about.h" + + +#if 0 /*def USE_GNOME*/ + +void +menu_about (GtkWidget * wid, gpointer sess) +{ + char buf[512]; + const gchar *author[] = { "Peter Zelezny <zed@xchat.org>", 0 }; + + (snprintf) (buf, sizeof (buf), + "An IRC Client for UNIX.\n\n" + "This binary was compiled on "__DATE__"\n" + "Using GTK %d.%d.%d X %d\n" + "Running on %s", + gtk_major_version, gtk_minor_version, gtk_micro_version, +#ifdef USE_XLIB + VendorRelease (GDK_DISPLAY ()), get_cpu_str()); +#else + 666, get_cpu_str()); +#endif + + gtk_widget_show (gnome_about_new ("X-Chat", PACKAGE_VERSION, + "(C) 1998-2005 Peter Zelezny", author, buf, 0)); +} + +#else + +static GtkWidget *about = 0; + +static int +about_close (void) +{ + about = 0; + return 0; +} + +void +menu_about (GtkWidget * wid, gpointer sess) +{ + GtkWidget *vbox, *label, *hbox; + char buf[512]; + const char *locale = NULL; + extern GtkWindow *parent_window; /* maingui.c */ + + if (about) + { + gtk_window_present (GTK_WINDOW (about)); + return; + } + + about = gtk_dialog_new (); + gtk_window_set_position (GTK_WINDOW (about), GTK_WIN_POS_CENTER); + gtk_window_set_resizable (GTK_WINDOW (about), FALSE); + gtk_window_set_title (GTK_WINDOW (about), _("About "DISPLAY_NAME)); + if (parent_window) + gtk_window_set_transient_for (GTK_WINDOW (about), parent_window); + g_signal_connect (G_OBJECT (about), "destroy", + G_CALLBACK (about_close), 0); + + vbox = GTK_DIALOG (about)->vbox; + + wid = gtk_image_new_from_pixbuf (pix_xchat); + gtk_container_add (GTK_CONTAINER (vbox), wid); + + label = gtk_label_new (NULL); + gtk_label_set_selectable (GTK_LABEL (label), TRUE); + gtk_container_add (GTK_CONTAINER (vbox), label); + g_get_charset (&locale); + (snprintf) (buf, sizeof (buf), + "<span size=\"x-large\"><b>"DISPLAY_NAME" "PACKAGE_VERSION"</b></span>\n\n" + "%s\n\n" +#ifdef WIN32 + /* leave this message to avoid time wasting bug reports! */ + "This version is unofficial and comes with no support.\n\n" +#endif + "%s\n" + "<b>Charset</b>: %s " +#ifdef WIN32 + "<b>GTK+</b>: %i.%i.%i\n" +#else + "<b>Renderer</b>: %s\n" +#endif + "<b>Compiled</b>: "__DATE__"\n\n" + "<small>\302\251 1998-2010 Peter \305\275elezn\303\275 <zed@xchat.org></small>", + _("A multiplatform IRC Client"), + get_cpu_str(), + locale, +#ifdef WIN32 + gtk_major_version, + gtk_minor_version, + gtk_micro_version +#else +#ifdef USE_XFT + "Xft" +#else + "Pango" +#endif +#endif + ); + gtk_label_set_markup (GTK_LABEL (label), buf); + gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_CENTER); + + hbox = gtk_hbox_new (0, 2); + gtk_container_add (GTK_CONTAINER (vbox), hbox); + + wid = gtk_button_new_from_stock (GTK_STOCK_CLOSE); + GTK_WIDGET_SET_FLAGS (GTK_WIDGET (wid), GTK_CAN_DEFAULT); + gtk_box_pack_end (GTK_BOX (GTK_DIALOG (about)->action_area), wid, 0, 0, 0); + gtk_widget_grab_default (wid); + g_signal_connect (G_OBJECT (wid), "clicked", + G_CALLBACK (gtkutil_destroy), about); + + gtk_widget_show_all (about); +} +#endif diff --git a/xchat-2.8.8/src/fe-gtk/about.h b/xchat-2.8.8/src/fe-gtk/about.h new file mode 100644 index 0000000..2bad159 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/about.h @@ -0,0 +1 @@ +void menu_about (GtkWidget * wid, gpointer sess); diff --git a/xchat-2.8.8/src/fe-gtk/ascii.c b/xchat-2.8.8/src/fe-gtk/ascii.c new file mode 100644 index 0000000..f1adbdf --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/ascii.c @@ -0,0 +1,177 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "fe-gtk.h" + +#include <gtk/gtkeditable.h> +#include <gtk/gtkframe.h> +#include <gtk/gtkhbox.h> +#include <gtk/gtklabel.h> +#include <gtk/gtkbutton.h> + +#include "../common/xchat.h" +#include "../common/xchatc.h" +#include "gtkutil.h" +#include "ascii.h" +#include "maingui.h" + +static const unsigned char table[]= +{ +/* Line 1 */ '\n', +0xc2,0xa1,0xc2,0xbf,0xc2,0xa2,0xc2,0xa3,0xe2,0x82,0xac,0xc2,0xa5,0xc2,0xa6,0xc2, +0xa7,0xc2,0xa8,0xc2,0xa9,0xc2,0xae,0xc2,0xaa,0xc2,0xab,0xc2,0xbb,0xc2,0xac,0xc2, +0xad,0xc2,0xaf,0xe2,0x99,0xaa, +/* Line 2 */ '\n', +0xc2,0xba,0xc2,0xb9,0xc2,0xb2,0xc2,0xb3,0xc2,0xb4,0xc2,0xb5,0xc3,0x9e,0xc3,0xbe, +0xc2,0xb6,0xc2,0xb7,0xc2,0xb8,0xc2,0xb0,0xc2,0xbc,0xc2,0xbd,0xc2,0xbe,0xc3,0x97, +0xc2,0xb1,0xc3,0xb7, +/* Line 3 */ '\n', +0xc3,0x80,0xc3,0x81,0xc3,0x82,0xc3,0x83,0xc3,0x84,0xc3,0x85,0xc3,0x86,0xc4,0x82, +0xc4,0x84,0x20,0xc3,0x87,0xc4,0x86,0xc4,0x8c,0xc5,0x92,0x20,0xc4,0x8e,0xc4,0x90, +0x20, +/* Line 4 */ '\n', +0xc3,0xa0,0xc3,0xa1,0xc3,0xa2,0xc3,0xa3,0xc3,0xa4,0xc3,0xa5,0xc3,0xa6,0xc4,0x83, +0xc4,0x85,0x20,0xc3,0xa7,0xc4,0x87,0xc4,0x8d,0xc5,0x93,0x20,0xc4,0x8f,0xc4,0x91, +0x20, +/* Line 5 */ '\n', +0xc3,0x88,0xc3,0x89,0xc3,0x8a,0xc3,0x8b,0xc4,0x98,0xc4,0x9a,0x20,0xc4,0x9e,0x20, +0xc3,0x8c,0xc3,0x8d,0xc3,0x8e,0xc3,0x8f,0xc4,0xb0,0x20,0xc4,0xb9,0xc4,0xbd,0xc5, +0x81, +/* Line 6 */ '\n', +0xc3,0xa8,0xc3,0xa9,0xc3,0xaa,0xc3,0xab,0xc4,0x99,0xc4,0x9b,0x20,0xc4,0x9f,0x20, +0xc3,0xac,0xc3,0xad,0xc3,0xae,0xc3,0xaf,0xc4,0xb1,0x20,0xc4,0xba,0xc4,0xbe,0xc5, +0x82, +/* Line 7 */ '\n', +0xc3,0x91,0xc5,0x83,0xc5,0x87,0x20,0xc3,0x92,0xc3,0x93,0xc3,0x94,0xc3,0x95,0xc3, +0x96,0xc3,0x98,0xc5,0x90,0x20,0xc5,0x94,0xc5,0x98,0x20,0xc5,0x9a,0xc5,0x9e,0xc5, +0xa0, +/* Line 8 */ '\n', +0xc3,0xb1,0xc5,0x84,0xc5,0x88,0x20,0xc3,0xb2,0xc3,0xb3,0xc3,0xb4,0xc3,0xb5,0xc3, +0xb6,0xc3,0xb8,0xc5,0x91,0x20,0xc5,0x95,0xc5,0x99,0x20,0xc5,0x9b,0xc5,0x9f,0xc5, +0xa1, +/* Line 9 */ '\n', +0x20,0xc5,0xa2,0xc5,0xa4,0x20,0xc3,0x99,0xc3,0x9a,0xc3,0x9b,0xc5,0xb2,0xc3,0x9c, +0xc5,0xae,0xc5,0xb0,0x20,0xc3,0x9d,0xc3,0x9f,0x20,0xc5,0xb9,0xc5,0xbb,0xc5,0xbd, +/* Line 10 */ '\n', +0x20,0xc5,0xa3,0xc5,0xa5,0x20,0xc3,0xb9,0xc3,0xba,0xc3,0xbb,0xc5,0xb3,0xc3,0xbc, +0xc5,0xaf,0xc5,0xb1,0x20,0xc3,0xbd,0xc3,0xbf,0x20,0xc5,0xba,0xc5,0xbc,0xc5,0xbe, +/* Line 11 */ '\n', +0xd0,0x90,0xd0,0x91,0xd0,0x92,0xd0,0x93,0xd0,0x94,0xd0,0x95,0xd0,0x81,0xd0,0x96, +0xd0,0x97,0xd0,0x98,0xd0,0x99,0xd0,0x9a,0xd0,0x9b,0xd0,0x9c,0xd0,0x9d,0xd0,0x9e, +0xd0,0x9f,0xd0,0xa0, +/* Line 12 */ '\n', +0xd0,0xb0,0xd0,0xb1,0xd0,0xb2,0xd0,0xb3,0xd0,0xb4,0xd0,0xb5,0xd1,0x91,0xd0,0xb6, +0xd0,0xb7,0xd0,0xb8,0xd0,0xb9,0xd0,0xba,0xd0,0xbb,0xd0,0xbc,0xd0,0xbd,0xd0,0xbe, +0xd0,0xbf,0xd1,0x80, +/* Line 13 */ '\n', +0xd0,0xa1,0xd0,0xa2,0xd0,0xa3,0xd0,0xa4,0xd0,0xa5,0xd0,0xa6,0xd0,0xa7,0xd0,0xa8, +0xd0,0xa9,0xd0,0xaa,0xd0,0xab,0xd0,0xac,0xd0,0xad,0xd0,0xae,0xd0,0xaf, +/* Line 14 */ '\n', +0xd1,0x81,0xd1,0x82,0xd1,0x83,0xd1,0x84,0xd1,0x85,0xd1,0x86,0xd1,0x87,0xd1,0x88, +0xd1,0x89,0xd1,0x8a,0xd1,0x8b,0xd1,0x8c,0xd1,0x8d,0xd1,0x8e,0xd1,0x8f,0 +}; + + +static gboolean +ascii_enter (GtkWidget * wid, GdkEventCrossing *event, GtkWidget *label) +{ + char buf[64]; + const char *text; + gunichar u; + + text = gtk_button_get_label (GTK_BUTTON (wid)); + u = g_utf8_get_char (text); + sprintf (buf, "%s U+%04X", text, u); + gtk_label_set_text (GTK_LABEL (label), buf); + + return FALSE; +} + +static void +ascii_click (GtkWidget * wid, gpointer userdata) +{ + int tmp_pos; + const char *text; + + if (current_sess) + { + text = gtk_button_get_label (GTK_BUTTON (wid)); + wid = current_sess->gui->input_box; + tmp_pos = SPELL_ENTRY_GET_POS (wid); + SPELL_ENTRY_INSERT (wid, text, -1, &tmp_pos); + SPELL_ENTRY_SET_POS (wid, tmp_pos); + } +} + +void +ascii_open (void) +{ + int i, len; + const unsigned char *table_pos; + char name[8]; + GtkWidget *frame, *label, *but, *hbox = NULL, *vbox, *win; + + win = mg_create_generic_tab ("charmap", _("Character Chart"), TRUE, TRUE, + NULL, NULL, 0, 0, &vbox, NULL); + gtk_container_set_border_width (GTK_CONTAINER (win), 5); + + label = gtk_label_new (NULL); + + table_pos = table; + i = 0; + while (table_pos[0] != 0) + { + if (table_pos[0] == '\n' || i == 0) + { + table_pos++; + hbox = gtk_hbox_new (0, 0); + gtk_container_add (GTK_CONTAINER (vbox), hbox); + gtk_widget_show (hbox); + i++; + continue; + } + + i++; + len = g_utf8_skip[table_pos[0]]; + memcpy (name, table_pos, len); + name[len] = 0; + + but = gtk_button_new_with_label (name); + gtk_widget_set_size_request (but, 28, -1); + g_signal_connect (G_OBJECT (but), "clicked", + G_CALLBACK (ascii_click), NULL); + g_signal_connect (G_OBJECT (but), "enter_notify_event", + G_CALLBACK (ascii_enter), label); + gtk_box_pack_start (GTK_BOX (hbox), but, 0, 0, 0); + gtk_widget_show (but); + + table_pos += len; + } + + frame = gtk_frame_new (""); + gtk_container_add (GTK_CONTAINER (hbox), frame); + gtk_container_add (GTK_CONTAINER (frame), label); + gtk_widget_show (label); + gtk_widget_show (frame); + + gtk_widget_show (win); +} diff --git a/xchat-2.8.8/src/fe-gtk/ascii.h b/xchat-2.8.8/src/fe-gtk/ascii.h new file mode 100644 index 0000000..afd3bd4 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/ascii.h @@ -0,0 +1 @@ +void ascii_open (void); diff --git a/xchat-2.8.8/src/fe-gtk/banlist.c b/xchat-2.8.8/src/fe-gtk/banlist.c new file mode 100644 index 0000000..afaa7eb --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/banlist.c @@ -0,0 +1,418 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <fcntl.h> +#include <time.h> + +#include "fe-gtk.h" + +#include <gtk/gtkhbox.h> +#include <gtk/gtkvbox.h> +#include <gtk/gtkhbbox.h> +#include <gtk/gtkstock.h> +#include <gtk/gtkliststore.h> +#include <gtk/gtkmessagedialog.h> +#include <gtk/gtktreeview.h> +#include <gtk/gtktreeselection.h> + +#include "../common/xchat.h" +#include "../common/fe.h" +#include "../common/modes.h" +#include "../common/outbound.h" +#include "../common/xchatc.h" +#include "gtkutil.h" +#include "maingui.h" +#include "banlist.h" + +/* model for the banlist tree */ +enum +{ + MASK_COLUMN, + FROM_COLUMN, + DATE_COLUMN, + N_COLUMNS +}; + +static GtkTreeView * +get_view (struct session *sess) +{ + return GTK_TREE_VIEW (sess->res->banlist_treeview); +} + +static GtkListStore * +get_store (struct session *sess) +{ + return GTK_LIST_STORE (gtk_tree_view_get_model (get_view (sess))); +} + +static gboolean +supports_exempt (server *serv) +{ + char *cm = serv->chanmodes; + + if (serv->have_except) + return TRUE; + + if (!cm) + return FALSE; + + while (*cm) + { + if (*cm == ',') + break; + if (*cm == 'e') + return TRUE; + cm++; + } + + return FALSE; +} + +void +fe_add_ban_list (struct session *sess, char *mask, char *who, char *when, int is_exempt) +{ + GtkListStore *store; + GtkTreeIter iter; + char buf[512]; + + store = get_store (sess); + gtk_list_store_append (store, &iter); + + if (is_exempt) + { + snprintf (buf, sizeof (buf), "(EX) %s", mask); + gtk_list_store_set (store, &iter, 0, buf, 1, who, 2, when, -1); + } else + { + gtk_list_store_set (store, &iter, 0, mask, 1, who, 2, when, -1); + } +} + +void +fe_ban_list_end (struct session *sess, int is_exemption) +{ + gtk_widget_set_sensitive (sess->res->banlist_butRefresh, TRUE); +} + +/** + * * Performs the actual refresh operations. + * */ +static void +banlist_do_refresh (struct session *sess) +{ + char tbuf[256]; + if (sess->server->connected) + { + GtkListStore *store; + + gtk_widget_set_sensitive (sess->res->banlist_butRefresh, FALSE); + + snprintf (tbuf, sizeof tbuf, "XChat: Ban List (%s, %s)", + sess->channel, sess->server->servername); + mg_set_title (sess->res->banlist_window, tbuf); + + store = get_store (sess); + gtk_list_store_clear (store); + + handle_command (sess, "ban", FALSE); +#ifdef WIN32 + if (0) +#else + if (supports_exempt (sess->server)) +#endif + { + snprintf (tbuf, sizeof (tbuf), "quote mode %s +e", sess->channel); + handle_command (sess, tbuf, FALSE); + } + + } else + { + fe_message (_("Not connected."), FE_MSG_ERROR); + } +} + +static void +banlist_refresh (GtkWidget * wid, struct session *sess) +{ + /* JG NOTE: Didn't see actual use of wid here, so just forwarding + * * this to chanlist_do_refresh because I use it without any widget + * * param in chanlist_build_gui_list when the user presses enter + * * or apply for the first time if the list has not yet been + * * received. + * */ + banlist_do_refresh (sess); +} + +static int +banlist_unban_inner (gpointer none, struct session *sess, int do_exempts) +{ + GtkTreeModel *model; + GtkTreeSelection *sel; + GtkTreeIter iter; + char tbuf[2048]; + char **masks, *tmp, *space; + int num_sel, i; + + /* grab the list of selected items */ + model = GTK_TREE_MODEL (get_store (sess)); + sel = gtk_tree_view_get_selection (get_view (sess)); + num_sel = 0; + if (gtk_tree_model_get_iter_first (model, &iter)) + { + do + { + if (gtk_tree_selection_iter_is_selected (sel, &iter)) + num_sel++; + } + while (gtk_tree_model_iter_next (model, &iter)); + } + + if (num_sel < 1) + return 0; + + /* create an array of all the masks */ + masks = calloc (1, num_sel * sizeof (char *)); + + i = 0; + gtk_tree_model_get_iter_first (model, &iter); + do + { + if (gtk_tree_selection_iter_is_selected (sel, &iter)) + { + gtk_tree_model_get (model, &iter, MASK_COLUMN, &masks[i], -1); + space = strchr (masks[i], ' '); + + if (do_exempts) + { + if (space) + { + /* remove the "(EX) " */ + tmp = masks[i]; + masks[i] = g_strdup (space + 1); + g_free (tmp); + i++; + } + } else + { + if (!space) + i++; + } + } + } + while (gtk_tree_model_iter_next (model, &iter)); + + /* and send to server */ + if (do_exempts) + send_channel_modes (sess, tbuf, masks, 0, i, '-', 'e', 0); + else + send_channel_modes (sess, tbuf, masks, 0, i, '-', 'b', 0); + + /* now free everything, and refresh banlist */ + for (i=0; i < num_sel; i++) + g_free (masks[i]); + free (masks); + + return num_sel; +} + +static void +banlist_unban (GtkWidget * wid, struct session *sess) +{ + int num = 0; + + num += banlist_unban_inner (wid, sess, FALSE); + num += banlist_unban_inner (wid, sess, TRUE); + + if (num < 1) + { + fe_message (_("You must select some bans."), FE_MSG_ERROR); + return; + } + + banlist_do_refresh (sess); +} + +static void +banlist_clear_cb (GtkDialog *dialog, gint response, gpointer sess) +{ + GtkTreeSelection *sel; + + gtk_widget_destroy (GTK_WIDGET (dialog)); + + if (response == GTK_RESPONSE_OK) + { + sel = gtk_tree_view_get_selection (get_view (sess)); + gtk_tree_selection_select_all (sel); + banlist_unban (NULL, sess); + } +} + +static void +banlist_clear (GtkWidget * wid, struct session *sess) +{ + GtkWidget *dialog; + + dialog = gtk_message_dialog_new (NULL, 0, + GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, + _("Are you sure you want to remove all bans in %s?"), sess->channel); + g_signal_connect (G_OBJECT (dialog), "response", + G_CALLBACK (banlist_clear_cb), sess); + gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); + gtk_widget_show (dialog); +} + +static void +banlist_add_selected_cb (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data) +{ + GSList **lp = data; + GSList *list = NULL; + GtkTreeIter *copy; + + if (!lp) return; + list = *lp; + copy = g_malloc (sizeof (GtkTreeIter)); + g_return_if_fail (copy != NULL); + *copy = *iter; + + list = g_slist_append (list, copy); + *(GSList **)data = list; +} + +static void +banlist_crop (GtkWidget * wid, struct session *sess) +{ + GtkTreeSelection *select; + GSList *list = NULL, *node; + int num_sel; + + /* remember which bans are selected */ + select = gtk_tree_view_get_selection (get_view (sess)); + /* gtk_tree_selected_get_selected_rows() isn't present in gtk 2.0.x */ + gtk_tree_selection_selected_foreach (select, banlist_add_selected_cb, + &list); + + num_sel = g_slist_length (list); + /* select all, then unselect those that we remembered */ + if (num_sel) + { + gtk_tree_selection_select_all (select); + + for (node = list; node; node = node->next) + gtk_tree_selection_unselect_iter (select, node->data); + + g_slist_foreach (list, (GFunc)g_free, NULL); + g_slist_free (list); + + banlist_unban (NULL, sess); + } else + fe_message (_("You must select some bans."), FE_MSG_ERROR); +} + +static GtkWidget * +banlist_treeview_new (GtkWidget *box) +{ + GtkListStore *store; + GtkWidget *view; + GtkTreeSelection *select; + GtkTreeViewColumn *col; + + store = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING); + g_return_val_if_fail (store != NULL, NULL); + view = gtkutil_treeview_new (box, GTK_TREE_MODEL (store), NULL, + MASK_COLUMN, _("Mask"), + FROM_COLUMN, _("From"), + DATE_COLUMN, _("Date"), -1); + + col = gtk_tree_view_get_column (GTK_TREE_VIEW (view), MASK_COLUMN); + gtk_tree_view_column_set_alignment (col, 0.5); + gtk_tree_view_column_set_min_width (col, 300); + gtk_tree_view_column_set_sort_column_id (col, MASK_COLUMN); + + col = gtk_tree_view_get_column (GTK_TREE_VIEW (view), FROM_COLUMN); + gtk_tree_view_column_set_alignment (col, 0.5); + gtk_tree_view_column_set_sort_column_id (col, FROM_COLUMN); + + col = gtk_tree_view_get_column (GTK_TREE_VIEW (view), DATE_COLUMN); + gtk_tree_view_column_set_alignment (col, 0.5); + + select = gtk_tree_view_get_selection (GTK_TREE_VIEW (view)); + gtk_tree_selection_set_mode (select, GTK_SELECTION_MULTIPLE); + + gtk_widget_show (view); + return view; +} + +static void +banlist_closegui (GtkWidget *wid, session *sess) +{ + if (is_session (sess)) + sess->res->banlist_window = 0; +} + +void +banlist_opengui (struct session *sess) +{ + GtkWidget *vbox1; + GtkWidget *bbox; + char tbuf[256]; + + if (sess->res->banlist_window) + { + mg_bring_tofront (sess->res->banlist_window); + return; + } + + if (sess->type != SESS_CHANNEL) + { + fe_message (_("You can only open the Ban List window while in a channel tab."), FE_MSG_ERROR); + return; + } + + snprintf (tbuf, sizeof tbuf, _("XChat: Ban List (%s)"), + sess->server->servername); + + sess->res->banlist_window = mg_create_generic_tab ("BanList", tbuf, FALSE, + TRUE, banlist_closegui, sess, 550, 200, &vbox1, sess->server); + + /* create banlist view */ + sess->res->banlist_treeview = banlist_treeview_new (vbox1); + + bbox = gtk_hbutton_box_new (); + gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_SPREAD); + gtk_container_set_border_width (GTK_CONTAINER (bbox), 5); + gtk_box_pack_end (GTK_BOX (vbox1), bbox, 0, 0, 0); + gtk_widget_show (bbox); + + gtkutil_button (bbox, GTK_STOCK_REMOVE, 0, banlist_unban, sess, + _("Remove")); + gtkutil_button (bbox, GTK_STOCK_REMOVE, 0, banlist_crop, sess, + _("Crop")); + gtkutil_button (bbox, GTK_STOCK_CLEAR, 0, banlist_clear, sess, + _("Clear")); + + sess->res->banlist_butRefresh = gtkutil_button (bbox, GTK_STOCK_REFRESH, 0, banlist_refresh, sess, _("Refresh")); + + banlist_do_refresh (sess); + + gtk_widget_show (sess->res->banlist_window); +} diff --git a/xchat-2.8.8/src/fe-gtk/banlist.h b/xchat-2.8.8/src/fe-gtk/banlist.h new file mode 100644 index 0000000..7ceccd0 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/banlist.h @@ -0,0 +1 @@ +void banlist_opengui (session *sess); diff --git a/xchat-2.8.8/src/fe-gtk/chanlist.c b/xchat-2.8.8/src/fe-gtk/chanlist.c new file mode 100644 index 0000000..2f65b51 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/chanlist.c @@ -0,0 +1,943 @@ +/* X-Chat + * Copyright (C) 1998-2006 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <fcntl.h> +#include <time.h> + +#include "fe-gtk.h" + +#include <gtk/gtkalignment.h> +#include <gtk/gtkcellrenderertext.h> +#include <gtk/gtkcheckbutton.h> +#include <gtk/gtkcombobox.h> +#include <gtk/gtkentry.h> +#include <gtk/gtkhbox.h> +#include <gtk/gtklabel.h> +#include <gtk/gtkliststore.h> +#include <gtk/gtkscrolledwindow.h> +#include <gtk/gtkspinbutton.h> +#include <gtk/gtkstock.h> +#include <gtk/gtktable.h> +#include <gtk/gtktreeselection.h> +#include <gtk/gtkvbox.h> +#include <gtk/gtkvseparator.h> +#include <gdk/gdkkeysyms.h> + +#include "../common/xchat.h" +#include "../common/xchatc.h" +#include "../common/cfgfiles.h" +#include "../common/outbound.h" +#include "../common/util.h" +#include "../common/fe.h" +#include "../common/server.h" +#include "gtkutil.h" +#include "maingui.h" + + +#include "custom-list.h" + + +enum +{ + COL_CHANNEL, + COL_USERS, + COL_TOPIC, + N_COLUMNS +}; + +#ifndef CUSTOM_LIST +typedef struct /* this is now in custom-list.h */ +{ + char *topic; + char *collation_key; + guint32 pos; + guint32 users; + /* channel string lives beyond "users" */ +#define GET_CHAN(row) (((char *)row)+sizeof(chanlistrow)) +} +chanlistrow; +#endif + +#define GET_MODEL(xserv) (gtk_tree_view_get_model(GTK_TREE_VIEW(xserv->gui->chanlist_list))) + + +static gboolean +chanlist_match (server *serv, const char *str) +{ + switch (serv->gui->chanlist_search_type) + { + case 1: + return match (GTK_ENTRY (serv->gui->chanlist_wild)->text, str); +#ifndef WIN32 + case 2: + if (!serv->gui->have_regex) + return 0; + /* regex returns 0 if it's a match: */ + return !regexec (&serv->gui->chanlist_match_regex, str, 1, NULL, REG_NOTBOL); +#endif + default: /* case 0: */ + return nocasestrstr (str, GTK_ENTRY (serv->gui->chanlist_wild)->text) ? 1 : 0; + } +} + +/** + * Updates the caption to reflect the number of users and channels + */ +static void +chanlist_update_caption (server *serv) +{ + gchar tbuf[256]; + + snprintf (tbuf, sizeof tbuf, + _("Displaying %d/%d users on %d/%d channels."), + serv->gui->chanlist_users_shown_count, + serv->gui->chanlist_users_found_count, + serv->gui->chanlist_channels_shown_count, + serv->gui->chanlist_channels_found_count); + + gtk_label_set_text (GTK_LABEL (serv->gui->chanlist_label), tbuf); + serv->gui->chanlist_caption_is_stale = FALSE; +} + +static void +chanlist_update_buttons (server *serv) +{ + if (serv->gui->chanlist_channels_shown_count) + { + gtk_widget_set_sensitive (serv->gui->chanlist_join, TRUE); + gtk_widget_set_sensitive (serv->gui->chanlist_savelist, TRUE); + } + else + { + gtk_widget_set_sensitive (serv->gui->chanlist_join, FALSE); + gtk_widget_set_sensitive (serv->gui->chanlist_savelist, FALSE); + } +} + +static void +chanlist_reset_counters (server *serv) +{ + serv->gui->chanlist_users_found_count = 0; + serv->gui->chanlist_users_shown_count = 0; + serv->gui->chanlist_channels_found_count = 0; + serv->gui->chanlist_channels_shown_count = 0; + + chanlist_update_caption (serv); + chanlist_update_buttons (serv); +} + +/* free up our entire linked list and all the nodes */ + +static void +chanlist_data_free (server *serv) +{ + GSList *rows; + chanlistrow *data; + + if (serv->gui->chanlist_data_stored_rows) + { + for (rows = serv->gui->chanlist_data_stored_rows; rows != NULL; + rows = rows->next) + { + data = rows->data; + g_free (data->topic); + g_free (data->collation_key); + free (data); + } + + g_slist_free (serv->gui->chanlist_data_stored_rows); + serv->gui->chanlist_data_stored_rows = NULL; + } + + g_slist_free (serv->gui->chanlist_pending_rows); + serv->gui->chanlist_pending_rows = NULL; +} + +/* add any rows we received from the server in the last 0.25s to the GUI */ + +static void +chanlist_flush_pending (server *serv) +{ + GSList *list = serv->gui->chanlist_pending_rows; + GtkTreeModel *model; + chanlistrow *row; + + if (!list) + { + if (serv->gui->chanlist_caption_is_stale) + chanlist_update_caption (serv); + return; + } + model = GET_MODEL (serv); + + while (list) + { + row = list->data; + custom_list_append (CUSTOM_LIST (model), row); + list = list->next; + } + + g_slist_free (serv->gui->chanlist_pending_rows); + serv->gui->chanlist_pending_rows = NULL; + chanlist_update_caption (serv); +} + +static gboolean +chanlist_timeout (server *serv) +{ + chanlist_flush_pending (serv); + return TRUE; +} + +/** + * Places a data row into the gui GtkTreeView, if and only if the row matches + * the user and regex/search requirements. + */ +static void +chanlist_place_row_in_gui (server *serv, chanlistrow *next_row, gboolean force) +{ + GtkTreeModel *model; + + /* First, update the 'found' counter values */ + serv->gui->chanlist_users_found_count += next_row->users; + serv->gui->chanlist_channels_found_count++; + + if (serv->gui->chanlist_channels_shown_count == 1) + /* join & save buttons become live */ + chanlist_update_buttons (serv); + + if (next_row->users < serv->gui->chanlist_minusers) + { + serv->gui->chanlist_caption_is_stale = TRUE; + return; + } + + if (next_row->users > serv->gui->chanlist_maxusers + && serv->gui->chanlist_maxusers > 0) + { + serv->gui->chanlist_caption_is_stale = TRUE; + return; + } + + if (GTK_ENTRY (serv->gui->chanlist_wild)->text[0]) + { + /* Check what the user wants to match. If both buttons or _neither_ + * button is checked, look for match in both by default. + */ + if (serv->gui->chanlist_match_wants_channel == + serv->gui->chanlist_match_wants_topic) + { + if (!chanlist_match (serv, GET_CHAN (next_row)) + && !chanlist_match (serv, next_row->topic)) + { + serv->gui->chanlist_caption_is_stale = TRUE; + return; + } + } + + else if (serv->gui->chanlist_match_wants_channel) + { + if (!chanlist_match (serv, GET_CHAN (next_row))) + { + serv->gui->chanlist_caption_is_stale = TRUE; + return; + } + } + + else if (serv->gui->chanlist_match_wants_topic) + { + if (!chanlist_match (serv, next_row->topic)) + { + serv->gui->chanlist_caption_is_stale = TRUE; + return; + } + } + } + + if (force || serv->gui->chanlist_channels_shown_count < 20) + { + model = GET_MODEL (serv); + /* makes it appear fast :) */ + custom_list_append (CUSTOM_LIST (model), next_row); + chanlist_update_caption (serv); + } + else + /* add it to GUI at the next update interval */ + serv->gui->chanlist_pending_rows = g_slist_prepend (serv->gui->chanlist_pending_rows, next_row); + + /* Update the 'shown' counter values */ + serv->gui->chanlist_users_shown_count += next_row->users; + serv->gui->chanlist_channels_shown_count++; +} + +/* Performs the LIST download from the IRC server. */ + +static void +chanlist_do_refresh (server *serv) +{ + if (serv->gui->chanlist_flash_tag) + { + g_source_remove (serv->gui->chanlist_flash_tag); + serv->gui->chanlist_flash_tag = 0; + } + + if (!serv->connected) + { + fe_message (_("Not connected."), FE_MSG_ERROR); + return; + } + + custom_list_clear ((CustomList *)GET_MODEL (serv)); + gtk_widget_set_sensitive (serv->gui->chanlist_refresh, FALSE); + + chanlist_data_free (serv); + chanlist_reset_counters (serv); + + /* can we request a list with minusers arg? */ + if (serv->use_listargs) + { + /* yes - it will download faster */ + serv->p_list_channels (serv, "", serv->gui->chanlist_minusers); + /* don't allow the spin button below this value from now on */ + serv->gui->chanlist_minusers_downloaded = serv->gui->chanlist_minusers; + } + else + { + /* download all, filter minusers locally only */ + serv->p_list_channels (serv, "", 1); + serv->gui->chanlist_minusers_downloaded = 1; + } + +/* gtk_spin_button_set_range ((GtkSpinButton *)serv->gui->chanlist_min_spin, + serv->gui->chanlist_minusers_downloaded, 999999);*/ +} + +static void +chanlist_refresh (GtkWidget * wid, server *serv) +{ + chanlist_do_refresh (serv); +} + +/** + * Fills the gui GtkTreeView with stored items from the GSList. + */ +static void +chanlist_build_gui_list (server *serv) +{ + GSList *rows; + + /* first check if the list is present */ + if (serv->gui->chanlist_data_stored_rows == NULL) + { + /* start a download */ + chanlist_do_refresh (serv); + return; + } + + custom_list_clear ((CustomList *)GET_MODEL (serv)); + + /* discard pending rows FIXME: free the structs? */ + g_slist_free (serv->gui->chanlist_pending_rows); + serv->gui->chanlist_pending_rows = NULL; + + /* Reset the counters */ + chanlist_reset_counters (serv); + + /* Refill the list */ + for (rows = serv->gui->chanlist_data_stored_rows; rows != NULL; + rows = rows->next) + { + chanlist_place_row_in_gui (serv, rows->data, TRUE); + } + + custom_list_resort ((CustomList *)GET_MODEL (serv)); +} + +/** + * Accepts incoming channel data from inbound.c, allocates new space for a + * chanlistrow, adds it to our linked list and calls chanlist_place_row_in_gui. + */ +void +fe_add_chan_list (server *serv, char *chan, char *users, char *topic) +{ + chanlistrow *next_row; + int len = strlen (chan) + 1; + + /* we allocate the struct and channel string in one go */ + next_row = malloc (sizeof (chanlistrow) + len); + memcpy (((char *)next_row) + sizeof (chanlistrow), chan, len); + next_row->topic = strip_color (topic, -1, STRIP_ALL); + next_row->collation_key = g_utf8_collate_key (chan, len-1); + if (!(next_row->collation_key)) + next_row->collation_key = g_strdup (chan); + next_row->users = atoi (users); + + /* add this row to the data */ + serv->gui->chanlist_data_stored_rows = + g_slist_prepend (serv->gui->chanlist_data_stored_rows, next_row); + + /* _possibly_ add the row to the gui */ + chanlist_place_row_in_gui (serv, next_row, FALSE); +} + +void +fe_chan_list_end (server *serv) +{ + /* download complete */ + chanlist_flush_pending (serv); + gtk_widget_set_sensitive (serv->gui->chanlist_refresh, TRUE); + custom_list_resort ((CustomList *)GET_MODEL (serv)); +} + +static void +chanlist_search_pressed (GtkButton * button, server *serv) +{ + chanlist_build_gui_list (serv); +} + +static void +chanlist_find_cb (GtkWidget * wid, server *serv) +{ +#ifndef WIN32 + /* recompile the regular expression. */ + if (serv->gui->have_regex) + { + serv->gui->have_regex = 0; + regfree (&serv->gui->chanlist_match_regex); + } + + if (regcomp (&serv->gui->chanlist_match_regex, GTK_ENTRY (wid)->text, + REG_ICASE | REG_EXTENDED | REG_NOSUB) == 0) + serv->gui->have_regex = 1; +#endif +} + +static void +chanlist_match_channel_button_toggled (GtkWidget * wid, server *serv) +{ + serv->gui->chanlist_match_wants_channel = GTK_TOGGLE_BUTTON (wid)->active; +} + +static void +chanlist_match_topic_button_toggled (GtkWidget * wid, server *serv) +{ + serv->gui->chanlist_match_wants_topic = GTK_TOGGLE_BUTTON (wid)->active; +} + +static char * +chanlist_get_selected (server *serv, gboolean get_topic) +{ + char *chan; + GtkTreeSelection *sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (serv->gui->chanlist_list)); + GtkTreeModel *model; + GtkTreeIter iter; + + if (!gtk_tree_selection_get_selected (sel, &model, &iter)) + return NULL; + + gtk_tree_model_get (model, &iter, get_topic ? COL_TOPIC : COL_CHANNEL, &chan, -1); + return chan; +} + +static void +chanlist_join (GtkWidget * wid, server *serv) +{ + char tbuf[CHANLEN + 6]; + char *chan = chanlist_get_selected (serv, FALSE); + if (chan) + { + if (serv->connected && (strcmp (chan, "*") != 0)) + { + snprintf (tbuf, sizeof (tbuf), "join %s", chan); + handle_command (serv->server_session, tbuf, FALSE); + } else + gdk_beep (); + g_free (chan); + } +} + +static void +chanlist_filereq_done (server *serv, char *file) +{ + time_t t = time (0); + int fh, users; + char *chan, *topic; + char buf[1024]; + GtkTreeModel *model = GET_MODEL (serv); + GtkTreeIter iter; + + if (!file) + return; + + fh = xchat_open_file (file, O_TRUNC | O_WRONLY | O_CREAT, 0600, + XOF_DOMODE | XOF_FULLPATH); + if (fh == -1) + return; + + snprintf (buf, sizeof buf, "XChat Channel List: %s - %s\n", + serv->servername, ctime (&t)); + write (fh, buf, strlen (buf)); + + if (gtk_tree_model_get_iter_first (model, &iter)) + { + do + { + gtk_tree_model_get (model, &iter, + COL_CHANNEL, &chan, + COL_USERS, &users, + COL_TOPIC, &topic, -1); + snprintf (buf, sizeof buf, "%-16s %-5d%s\n", chan, users, topic); + g_free (chan); + g_free (topic); + write (fh, buf, strlen (buf)); + } + while (gtk_tree_model_iter_next (model, &iter)); + } + + close (fh); +} + +static void +chanlist_save (GtkWidget * wid, server *serv) +{ + GtkTreeIter iter; + GtkTreeModel *model = GET_MODEL (serv); + + if (gtk_tree_model_get_iter_first (model, &iter)) + gtkutil_file_req (_("Select an output filename"), chanlist_filereq_done, + serv, NULL, FRF_WRITE); +} + +static gboolean +chanlist_flash (server *serv) +{ + if (serv->gui->chanlist_refresh->state != GTK_STATE_ACTIVE) + gtk_widget_set_state (serv->gui->chanlist_refresh, GTK_STATE_ACTIVE); + else + gtk_widget_set_state (serv->gui->chanlist_refresh, GTK_STATE_PRELIGHT); + + return TRUE; +} + +static void +chanlist_minusers (GtkSpinButton *wid, server *serv) +{ + serv->gui->chanlist_minusers = gtk_spin_button_get_value_as_int (wid); + + if (serv->gui->chanlist_minusers < serv->gui->chanlist_minusers_downloaded) + { + if (serv->gui->chanlist_flash_tag == 0) + serv->gui->chanlist_flash_tag = g_timeout_add (500, (GSourceFunc)chanlist_flash, serv); + } + else + { + if (serv->gui->chanlist_flash_tag) + { + g_source_remove (serv->gui->chanlist_flash_tag); + serv->gui->chanlist_flash_tag = 0; + } + } +} + +static void +chanlist_maxusers (GtkSpinButton *wid, server *serv) +{ + serv->gui->chanlist_maxusers = gtk_spin_button_get_value_as_int (wid); +} + +static void +chanlist_dclick_cb (GtkTreeView *view, GtkTreePath *path, + GtkTreeViewColumn *column, gpointer data) +{ + chanlist_join (0, (server *) data); /* double clicked a row */ +} + +static void +chanlist_menu_destroy (GtkWidget *menu, gpointer userdata) +{ + gtk_widget_destroy (menu); + g_object_unref (menu); +} + +static void +chanlist_copychannel (GtkWidget *item, server *serv) +{ + char *chan = chanlist_get_selected (serv, FALSE); + if (chan) + { + gtkutil_copy_to_clipboard (item, NULL, chan); + g_free (chan); + } +} + +static void +chanlist_copytopic (GtkWidget *item, server *serv) +{ + char *topic = chanlist_get_selected (serv, TRUE); + if (topic) + { + gtkutil_copy_to_clipboard (item, NULL, topic); + g_free (topic); + } +} + +static gboolean +chanlist_button_cb (GtkTreeView *tree, GdkEventButton *event, server *serv) +{ + GtkWidget *menu; + GtkTreeSelection *sel; + GtkTreePath *path; + char *chan; + + if (event->button != 3) + return FALSE; + + if (!gtk_tree_view_get_path_at_pos (tree, event->x, event->y, &path, 0, 0, 0)) + return FALSE; + + /* select what they right-clicked on */ + sel = gtk_tree_view_get_selection (tree); + gtk_tree_selection_unselect_all (sel); + gtk_tree_selection_select_path (sel, path); + gtk_tree_path_free (path); + + menu = gtk_menu_new (); + if (event->window) + gtk_menu_set_screen (GTK_MENU (menu), gdk_drawable_get_screen (event->window)); + g_object_ref (menu); + g_object_ref_sink (menu); + g_object_unref (menu); + g_signal_connect (G_OBJECT (menu), "selection-done", + G_CALLBACK (chanlist_menu_destroy), NULL); + mg_create_icon_item (_("_Join Channel"), GTK_STOCK_JUMP_TO, menu, + chanlist_join, serv); + mg_create_icon_item (_("_Copy Channel Name"), GTK_STOCK_COPY, menu, + chanlist_copychannel, serv); + mg_create_icon_item (_("Copy _Topic Text"), GTK_STOCK_COPY, menu, + chanlist_copytopic, serv); + + chan = chanlist_get_selected (serv, FALSE); + menu_addfavoritemenu (serv, menu, chan); + g_free (chan); + + gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 0, event->time); + + return TRUE; +} + +static void +chanlist_destroy_widget (GtkWidget *wid, server *serv) +{ + custom_list_clear ((CustomList *)GET_MODEL (serv)); + chanlist_data_free (serv); + + if (serv->gui->chanlist_flash_tag) + { + g_source_remove (serv->gui->chanlist_flash_tag); + serv->gui->chanlist_flash_tag = 0; + } + + if (serv->gui->chanlist_tag) + { + g_source_remove (serv->gui->chanlist_tag); + serv->gui->chanlist_tag = 0; + } + +#ifndef WIN32 + if (serv->gui->have_regex) + { + regfree (&serv->gui->chanlist_match_regex); + serv->gui->have_regex = 0; + } +#endif +} + +static void +chanlist_closegui (GtkWidget *wid, server *serv) +{ + if (is_server (serv)) + serv->gui->chanlist_window = NULL; +} + +static void +chanlist_add_column (GtkWidget *tree, int textcol, int size, char *title, gboolean right_justified) +{ + GtkCellRenderer *renderer; + GtkTreeViewColumn *col; + + renderer = gtk_cell_renderer_text_new (); + if (right_justified) + g_object_set (G_OBJECT (renderer), "xalign", (gfloat) 1.0, NULL); + g_object_set (G_OBJECT (renderer), "ypad", (gint) 0, NULL); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree), -1, title, + renderer, "text", textcol, NULL); + gtk_cell_renderer_text_set_fixed_height_from_font (GTK_CELL_RENDERER_TEXT (renderer), 1); + + col = gtk_tree_view_get_column (GTK_TREE_VIEW (tree), textcol); + gtk_tree_view_column_set_sort_column_id (col, textcol); + gtk_tree_view_column_set_resizable (col, TRUE); + if (textcol != COL_TOPIC) + { + gtk_tree_view_column_set_sizing (col, GTK_TREE_VIEW_COLUMN_FIXED); + gtk_tree_view_column_set_fixed_width (col, size); + } +} + +static void +chanlist_combo_cb (GtkWidget *combo, server *serv) +{ + serv->gui->chanlist_search_type = gtk_combo_box_get_active (GTK_COMBO_BOX (combo)); +} + +void +chanlist_opengui (server *serv, int do_refresh) +{ + GtkWidget *vbox, *hbox, *table, *wid, *view; + char tbuf[256]; + GtkListStore *store; + + if (serv->gui->chanlist_window) + { + mg_bring_tofront (serv->gui->chanlist_window); + return; + } + + snprintf (tbuf, sizeof tbuf, _("XChat: Channel List (%s)"), + server_get_network (serv, TRUE)); + + serv->gui->chanlist_pending_rows = NULL; + serv->gui->chanlist_tag = 0; + serv->gui->chanlist_flash_tag = 0; + serv->gui->chanlist_data_stored_rows = NULL; + + if (!serv->gui->chanlist_minusers) + serv->gui->chanlist_minusers = 5; + + if (!serv->gui->chanlist_maxusers) + serv->gui->chanlist_maxusers = 9999; + + serv->gui->chanlist_window = + mg_create_generic_tab ("ChanList", tbuf, FALSE, TRUE, chanlist_closegui, + serv, 640, 480, &vbox, serv); + + gtk_container_set_border_width (GTK_CONTAINER (vbox), 6); + gtk_box_set_spacing (GTK_BOX (vbox), 12); + + /* make a label to store the user/channel info */ + wid = gtk_label_new (NULL); + gtk_box_pack_start (GTK_BOX (vbox), wid, 0, 0, 0); + gtk_widget_show (wid); + serv->gui->chanlist_label = wid; + + /* ============================================================= */ + + store = (GtkListStore *) custom_list_new(); + view = gtkutil_treeview_new (vbox, GTK_TREE_MODEL (store), NULL, -1); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (view->parent), + GTK_SHADOW_IN); + serv->gui->chanlist_list = view; + + g_signal_connect (G_OBJECT (view), "row_activated", + G_CALLBACK (chanlist_dclick_cb), serv); + g_signal_connect (G_OBJECT (view), "button-press-event", + G_CALLBACK (chanlist_button_cb), serv); + + chanlist_add_column (view, COL_CHANNEL, 96, _("Channel"), FALSE); + chanlist_add_column (view, COL_USERS, 50, _("Users"), TRUE); + chanlist_add_column (view, COL_TOPIC, 50, _("Topic"), FALSE); + gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (view), TRUE); + /* this is a speed up, but no horizontal scrollbar :( */ + /*gtk_tree_view_set_fixed_height_mode (GTK_TREE_VIEW (view), TRUE);*/ + gtk_widget_show (view); + + /* ============================================================= */ + + table = gtk_table_new (4, 4, FALSE); + gtk_table_set_col_spacings (GTK_TABLE (table), 12); + gtk_table_set_row_spacings (GTK_TABLE (table), 3); + gtk_box_pack_start (GTK_BOX (vbox), table, 0, 1, 0); + gtk_widget_show (table); + + wid = gtkutil_button (NULL, GTK_STOCK_FIND, 0, chanlist_search_pressed, serv, + _("_Search")); + serv->gui->chanlist_search = wid; + gtk_table_attach (GTK_TABLE (table), wid, 3, 4, 3, 4, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + + wid = gtkutil_button (NULL, GTK_STOCK_REFRESH, 0, chanlist_refresh, serv, + _("_Download List")); + serv->gui->chanlist_refresh = wid; + gtk_table_attach (GTK_TABLE (table), wid, 3, 4, 2, 3, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + + wid = gtkutil_button (NULL, GTK_STOCK_SAVE_AS, 0, chanlist_save, serv, + _("Save _List...")); + serv->gui->chanlist_savelist = wid; + gtk_table_attach (GTK_TABLE (table), wid, 3, 4, 1, 2, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + + wid = gtkutil_button (NULL, GTK_STOCK_JUMP_TO, 0, chanlist_join, serv, + _("_Join Channel")); + serv->gui->chanlist_join = wid; + gtk_table_attach (GTK_TABLE (table), wid, 3, 4, 0, 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + + /* ============================================================= */ + + wid = gtk_label_new (_("Show only:")); + gtk_misc_set_alignment (GTK_MISC (wid), 0, 0.5); + gtk_table_attach (GTK_TABLE (table), wid, 0, 1, 3, 4, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + gtk_widget_show (wid); + + hbox = gtk_hbox_new (0, 0); + gtk_box_set_spacing (GTK_BOX (hbox), 9); + gtk_table_attach (GTK_TABLE (table), hbox, 1, 2, 3, 4, + GTK_FILL, GTK_FILL, 0, 0); + gtk_widget_show (hbox); + + wid = gtk_label_new (_("channels with")); + gtk_box_pack_start (GTK_BOX (hbox), wid, 0, 0, 0); + gtk_widget_show (wid); + + wid = gtk_spin_button_new_with_range (1, 999999, 1); + gtk_spin_button_set_value (GTK_SPIN_BUTTON (wid), + serv->gui->chanlist_minusers); + g_signal_connect (G_OBJECT (wid), "value_changed", + G_CALLBACK (chanlist_minusers), serv); + gtk_box_pack_start (GTK_BOX (hbox), wid, 0, 0, 0); + gtk_widget_show (wid); + serv->gui->chanlist_min_spin = wid; + + wid = gtk_label_new (_("to")); + gtk_box_pack_start (GTK_BOX (hbox), wid, 0, 0, 0); + gtk_widget_show (wid); + + wid = gtk_spin_button_new_with_range (1, 999999, 1); + gtk_spin_button_set_value (GTK_SPIN_BUTTON (wid), + serv->gui->chanlist_maxusers); + g_signal_connect (G_OBJECT (wid), "value_changed", + G_CALLBACK (chanlist_maxusers), serv); + gtk_box_pack_start (GTK_BOX (hbox), wid, 0, 0, 0); + gtk_widget_show (wid); + + wid = gtk_label_new (_("users.")); + gtk_box_pack_start (GTK_BOX (hbox), wid, 0, 0, 0); + gtk_widget_show (wid); + + /* ============================================================= */ + + wid = gtk_label_new (_("Look in:")); + gtk_misc_set_alignment (GTK_MISC (wid), 0, 0.5); + gtk_table_attach (GTK_TABLE (table), wid, 0, 1, 2, 3, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + gtk_widget_show (wid); + + hbox = gtk_hbox_new (0, 0); + gtk_box_set_spacing (GTK_BOX (hbox), 12); + gtk_table_attach (GTK_TABLE (table), hbox, 1, 2, 2, 3, + GTK_FILL, GTK_FILL, 0, 0); + gtk_widget_show (hbox); + + wid = gtk_check_button_new_with_label (_("Channel name")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wid), TRUE); + gtk_signal_connect (GTK_OBJECT (wid), "toggled", + GTK_SIGNAL_FUNC + (chanlist_match_channel_button_toggled), serv); + gtk_box_pack_start (GTK_BOX (hbox), wid, 0, 0, 0); + gtk_widget_show (wid); + + wid = gtk_check_button_new_with_label (_("Topic")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wid), TRUE); + gtk_signal_connect (GTK_OBJECT (wid), "toggled", + GTK_SIGNAL_FUNC (chanlist_match_topic_button_toggled), + serv); + gtk_box_pack_start (GTK_BOX (hbox), wid, 0, 0, 0); + gtk_widget_show (wid); + + serv->gui->chanlist_match_wants_channel = 1; + serv->gui->chanlist_match_wants_topic = 1; + + /* ============================================================= */ + + wid = gtk_label_new (_("Search type:")); + gtk_misc_set_alignment (GTK_MISC (wid), 0, 0.5); + gtk_table_attach (GTK_TABLE (table), wid, 0, 1, 1, 2, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + gtk_widget_show (wid); + + wid = gtk_combo_box_new_text (); + gtk_combo_box_append_text (GTK_COMBO_BOX (wid), _("Simple Search")); + gtk_combo_box_append_text (GTK_COMBO_BOX (wid), _("Pattern Match (Wildcards)")); +#ifndef WIN32 + gtk_combo_box_append_text (GTK_COMBO_BOX (wid), _("Regular Expression")); +#endif + gtk_combo_box_set_active (GTK_COMBO_BOX (wid), serv->gui->chanlist_search_type); + gtk_table_attach (GTK_TABLE (table), wid, 1, 2, 1, 2, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + g_signal_connect (G_OBJECT (wid), "changed", + G_CALLBACK (chanlist_combo_cb), serv); + gtk_widget_show (wid); + + /* ============================================================= */ + + wid = gtk_label_new (_("Find:")); + gtk_misc_set_alignment (GTK_MISC (wid), 0, 0.5); + gtk_table_attach (GTK_TABLE (table), wid, 0, 1, 0, 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + gtk_widget_show (wid); + + wid = gtk_entry_new_with_max_length (255); + gtk_signal_connect (GTK_OBJECT (wid), "changed", + GTK_SIGNAL_FUNC (chanlist_find_cb), serv); + gtk_signal_connect (GTK_OBJECT (wid), "activate", + GTK_SIGNAL_FUNC (chanlist_search_pressed), + (gpointer) serv); + gtk_table_attach (GTK_TABLE (table), wid, 1, 2, 0, 1, + GTK_EXPAND | GTK_FILL, 0, 0, 0); + gtk_widget_show (wid); + serv->gui->chanlist_wild = wid; + + chanlist_find_cb (wid, serv); + + /* ============================================================= */ + + wid = gtk_vseparator_new (); + gtk_table_attach (GTK_TABLE (table), wid, 2, 3, 0, 5, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + gtk_widget_show (wid); + + g_signal_connect (G_OBJECT (serv->gui->chanlist_window), "destroy", + G_CALLBACK (chanlist_destroy_widget), serv); + + /* reset the counters. */ + chanlist_reset_counters (serv); + + serv->gui->chanlist_tag = g_timeout_add (250, (GSourceFunc)chanlist_timeout, serv); + + if (do_refresh) + chanlist_do_refresh (serv); + + chanlist_update_buttons (serv); + gtk_widget_show (serv->gui->chanlist_window); + gtk_widget_grab_focus (serv->gui->chanlist_refresh); +} diff --git a/xchat-2.8.8/src/fe-gtk/chanlist.h b/xchat-2.8.8/src/fe-gtk/chanlist.h new file mode 100644 index 0000000..19a8b25 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/chanlist.h @@ -0,0 +1 @@ +void chanlist_opengui (server *serv, int do_refresh); diff --git a/xchat-2.8.8/src/fe-gtk/chanview-tabs.c b/xchat-2.8.8/src/fe-gtk/chanview-tabs.c new file mode 100644 index 0000000..8e3da8e --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/chanview-tabs.c @@ -0,0 +1,779 @@ +/* file included in chanview.c */ + +typedef struct +{ + GtkWidget *outer; /* outer box */ + GtkWidget *inner; /* inner box */ + GtkWidget *b1; /* button1 */ + GtkWidget *b2; /* button2 */ +} tabview; + +static void chanview_populate (chanview *cv); + +/* ignore "toggled" signal? */ +static int ignore_toggle = FALSE; +static int tab_left_is_moving = 0; +static int tab_right_is_moving = 0; + +/* userdata for gobjects used here: + * + * tab (togglebuttons inside boxes): + * "u" userdata passed to tab-focus callback function (sess) + * "c" the tab's (chan *) + * + * box (family box) + * "f" family + * + */ + +/* + * GtkViewports request at least as much space as their children do. + * If we don't intervene here, the GtkViewport will be granted its + * request, even at the expense of resizing the top-level window. + */ +static void +cv_tabs_sizerequest (GtkWidget *viewport, GtkRequisition *requisition, chanview *cv) +{ + if (!cv->vertical) + requisition->width = 1; + else + requisition->height = 1; +} + +static void +cv_tabs_sizealloc (GtkWidget *widget, GtkAllocation *allocation, chanview *cv) +{ + GtkAdjustment *adj; + GtkWidget *inner; + gint viewport_size; + + inner = ((tabview *)cv)->inner; + + if (cv->vertical) + { + adj = gtk_viewport_get_vadjustment (GTK_VIEWPORT (inner->parent)); + gdk_window_get_geometry (inner->parent->window, 0, 0, 0, &viewport_size, 0); + } else + { + adj = gtk_viewport_get_hadjustment (GTK_VIEWPORT (inner->parent)); + gdk_window_get_geometry (inner->parent->window, 0, 0, &viewport_size, 0, 0); + } + + if (adj->upper <= viewport_size) + { + gtk_widget_hide (((tabview *)cv)->b1); + gtk_widget_hide (((tabview *)cv)->b2); + } else + { + gtk_widget_show (((tabview *)cv)->b1); + gtk_widget_show (((tabview *)cv)->b2); + } +} + +static gint +tab_search_offset (GtkWidget *inner, gint start_offset, + gboolean forward, gboolean vertical) +{ + GList *boxes; + GList *tabs; + GtkWidget *box; + GtkWidget *button; + gint found; + + boxes = GTK_BOX (inner)->children; + if (!forward && boxes) + boxes = g_list_last (boxes); + + while (boxes) + { + box = ((GtkBoxChild *)boxes->data)->widget; + boxes = (forward ? boxes->next : boxes->prev); + + tabs = GTK_BOX (box)->children; + if (!forward && tabs) + tabs = g_list_last (tabs); + + while (tabs) + { + button = ((GtkBoxChild *)tabs->data)->widget; + tabs = (forward ? tabs->next : tabs->prev); + + if (!GTK_IS_TOGGLE_BUTTON (button)) + continue; + + found = (vertical ? button->allocation.y : button->allocation.x); + if ((forward && found > start_offset) || + (!forward && found < start_offset)) + return found; + } + } + + return 0; +} + +static void +tab_scroll_left_up_clicked (GtkWidget *widget, chanview *cv) +{ + GtkAdjustment *adj; + gint viewport_size; + gfloat new_value; + GtkWidget *inner; + gfloat i; + + inner = ((tabview *)cv)->inner; + + if (cv->vertical) + { + adj = gtk_viewport_get_vadjustment (GTK_VIEWPORT (inner->parent)); + gdk_window_get_geometry (inner->parent->window, 0, 0, 0, &viewport_size, 0); + } else + { + adj = gtk_viewport_get_hadjustment (GTK_VIEWPORT (inner->parent)); + gdk_window_get_geometry (inner->parent->window, 0, 0, &viewport_size, 0, 0); + } + + new_value = tab_search_offset (inner, adj->value, 0, cv->vertical); + + if (new_value + viewport_size > adj->upper) + new_value = adj->upper - viewport_size; + + if (!tab_left_is_moving) + { + tab_left_is_moving = 1; + + for (i = adj->value; ((i > new_value) && (tab_left_is_moving)); i -= 0.1) + { + gtk_adjustment_set_value (adj, i); + while (g_main_pending ()) + g_main_iteration (TRUE); + } + + gtk_adjustment_set_value (adj, new_value); + + tab_left_is_moving = 0; /* hSP: set to false in case we didnt get stopped (the normal case) */ + } + else + { + tab_left_is_moving = 0; /* hSP: jump directly to next element if user is clicking faster than we can scroll.. */ + } +} + +static void +tab_scroll_right_down_clicked (GtkWidget *widget, chanview *cv) +{ + GtkAdjustment *adj; + gint viewport_size; + gfloat new_value; + GtkWidget *inner; + gfloat i; + + inner = ((tabview *)cv)->inner; + + if (cv->vertical) + { + adj = gtk_viewport_get_vadjustment (GTK_VIEWPORT (inner->parent)); + gdk_window_get_geometry (inner->parent->window, 0, 0, 0, &viewport_size, 0); + } else + { + adj = gtk_viewport_get_hadjustment (GTK_VIEWPORT (inner->parent)); + gdk_window_get_geometry (inner->parent->window, 0, 0, &viewport_size, 0, 0); + } + + new_value = tab_search_offset (inner, adj->value, 1, cv->vertical); + + if (new_value == 0 || new_value + viewport_size > adj->upper) + new_value = adj->upper - viewport_size; + + if (!tab_right_is_moving) + { + tab_right_is_moving = 1; + + for (i = adj->value; ((i < new_value) && (tab_right_is_moving)); i += 0.1) + { + gtk_adjustment_set_value (adj, i); + while (g_main_pending ()) + g_main_iteration (TRUE); + } + + gtk_adjustment_set_value (adj, new_value); + + tab_right_is_moving = 0; /* hSP: set to false in case we didnt get stopped (the normal case) */ + } + else + { + tab_right_is_moving = 0; /* hSP: jump directly to next element if user is clicking faster than we can scroll.. */ + } +} + +static gboolean +tab_scroll_cb (GtkWidget *widget, GdkEventScroll *event, gpointer cv) +{ + /* mouse wheel scrolling */ + if (event->direction == GDK_SCROLL_UP) + tab_scroll_left_up_clicked (widget, cv); + else if (event->direction == GDK_SCROLL_DOWN) + tab_scroll_right_down_clicked (widget, cv); + + return FALSE; +} + +static void +cv_tabs_xclick_cb (GtkWidget *button, chanview *cv) +{ + cv->cb_xbutton (cv, cv->focused, cv->focused->tag, cv->focused->userdata); +} + +/* make a Scroll (arrow) button */ + +static GtkWidget * +make_sbutton (GtkArrowType type, void *click_cb, void *userdata) +{ + GtkWidget *button, *arrow; + + button = gtk_button_new (); + arrow = gtk_arrow_new (type, GTK_SHADOW_NONE); + gtk_container_add (GTK_CONTAINER (button), arrow); + gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE); + g_signal_connect (G_OBJECT (button), "clicked", + G_CALLBACK (click_cb), userdata); + g_signal_connect (G_OBJECT (button), "scroll_event", + G_CALLBACK (tab_scroll_cb), userdata); + gtk_widget_show (arrow); + + return button; +} + +static void +cv_tabs_init (chanview *cv) +{ + GtkWidget *box, *hbox = NULL; + GtkWidget *viewport; + GtkWidget *outer; + GtkWidget *button; + + if (cv->vertical) + outer = gtk_vbox_new (0, 0); + else + outer = gtk_hbox_new (0, 0); + ((tabview *)cv)->outer = outer; + g_signal_connect (G_OBJECT (outer), "size_allocate", + G_CALLBACK (cv_tabs_sizealloc), cv); +/* gtk_container_set_border_width (GTK_CONTAINER (outer), 2);*/ + gtk_widget_show (outer); + + viewport = gtk_viewport_new (0, 0); + gtk_viewport_set_shadow_type (GTK_VIEWPORT (viewport), GTK_SHADOW_NONE); + g_signal_connect (G_OBJECT (viewport), "size_request", + G_CALLBACK (cv_tabs_sizerequest), cv); + g_signal_connect (G_OBJECT (viewport), "scroll_event", + G_CALLBACK (tab_scroll_cb), cv); + gtk_box_pack_start (GTK_BOX (outer), viewport, 1, 1, 0); + gtk_widget_show (viewport); + + if (cv->vertical) + box = gtk_vbox_new (FALSE, 0); + else + box = gtk_hbox_new (FALSE, 0); + ((tabview *)cv)->inner = box; + gtk_container_add (GTK_CONTAINER (viewport), box); + gtk_widget_show (box); + + /* if vertical, the buttons can be side by side */ + if (cv->vertical) + { + hbox = gtk_hbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (outer), hbox, 0, 0, 0); + gtk_widget_show (hbox); + } + + /* make the Scroll buttons */ + ((tabview *)cv)->b2 = make_sbutton (cv->vertical ? + GTK_ARROW_UP : GTK_ARROW_LEFT, + tab_scroll_left_up_clicked, + cv); + + ((tabview *)cv)->b1 = make_sbutton (cv->vertical ? + GTK_ARROW_DOWN : GTK_ARROW_RIGHT, + tab_scroll_right_down_clicked, + cv); + + if (hbox) + { + gtk_container_add (GTK_CONTAINER (hbox), ((tabview *)cv)->b2); + gtk_container_add (GTK_CONTAINER (hbox), ((tabview *)cv)->b1); + } else + { + gtk_box_pack_start (GTK_BOX (outer), ((tabview *)cv)->b2, 0, 0, 0); + gtk_box_pack_start (GTK_BOX (outer), ((tabview *)cv)->b1, 0, 0, 0); + } + + button = gtkutil_button (outer, GTK_STOCK_CLOSE, NULL, cv_tabs_xclick_cb, + cv, 0); + gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE); + GTK_WIDGET_UNSET_FLAGS (button, GTK_CAN_FOCUS); + + gtk_container_add (GTK_CONTAINER (cv->box), outer); +} + +static void +cv_tabs_postinit (chanview *cv) +{ +} + +static void +tab_add_sorted (chanview *cv, GtkWidget *box, GtkWidget *tab, chan *ch) +{ + GList *list; + GtkBoxChild *child; + int i = 0; + void *b; + + if (!cv->sorted) + { + gtk_box_pack_start (GTK_BOX (box), tab, 0, 0, 0); + gtk_widget_show (tab); + return; + } + + /* sorting TODO: + * - move tab if renamed (dialogs) */ + + /* userdata, passed to mg_tabs_compare() */ + b = ch->userdata; + + list = GTK_BOX (box)->children; + while (list) + { + child = list->data; + if (!GTK_IS_SEPARATOR (child->widget)) + { + void *a = g_object_get_data (G_OBJECT (child->widget), "u"); + + if (ch->tag == 0 && cv->cb_compare (a, b) > 0) + { + gtk_box_pack_start (GTK_BOX (box), tab, 0, 0, 0); + gtk_box_reorder_child (GTK_BOX (box), tab, i); + gtk_widget_show (tab); + return; + } + } + i++; + list = list->next; + } + + /* append */ + gtk_box_pack_start (GTK_BOX (box), tab, 0, 0, 0); + gtk_box_reorder_child (GTK_BOX (box), tab, i); + gtk_widget_show (tab); +} + +/* remove empty boxes and separators */ + +static void +cv_tabs_prune (chanview *cv) +{ + GList *boxes, *children; + GtkWidget *box, *inner; + GtkBoxChild *child; + int empty; + + inner = ((tabview *)cv)->inner; + boxes = GTK_BOX (inner)->children; + while (boxes) + { + child = boxes->data; + box = child->widget; + boxes = boxes->next; + + /* check if the box is empty (except a vseperator) */ + empty = TRUE; + children = GTK_BOX (box)->children; + while (children) + { + if (!GTK_IS_SEPARATOR (((GtkBoxChild *)children->data)->widget)) + { + empty = FALSE; + break; + } + children = children->next; + } + + if (empty) + gtk_widget_destroy (box); + } +} + +static void +tab_add_real (chanview *cv, GtkWidget *tab, chan *ch) +{ + GList *boxes, *children; + GtkWidget *sep, *box, *inner; + GtkBoxChild *child; + int empty; + + inner = ((tabview *)cv)->inner; + /* see if a family for this tab already exists */ + boxes = GTK_BOX (inner)->children; + while (boxes) + { + child = boxes->data; + box = child->widget; + + if (g_object_get_data (G_OBJECT (box), "f") == ch->family) + { + tab_add_sorted (cv, box, tab, ch); + gtk_widget_queue_resize (inner->parent); + return; + } + + boxes = boxes->next; + + /* check if the box is empty (except a vseperator) */ + empty = TRUE; + children = GTK_BOX (box)->children; + while (children) + { + if (!GTK_IS_SEPARATOR (((GtkBoxChild *)children->data)->widget)) + { + empty = FALSE; + break; + } + children = children->next; + } + + if (empty) + gtk_widget_destroy (box); + } + + /* create a new family box */ + if (cv->vertical) + { + /* vertical */ + box = gtk_vbox_new (FALSE, 0); + sep = gtk_hseparator_new (); + } else + { + /* horiz */ + box = gtk_hbox_new (FALSE, 0); + sep = gtk_vseparator_new (); + } + + gtk_box_pack_end (GTK_BOX (box), sep, 0, 0, 4); + gtk_widget_show (sep); + gtk_box_pack_start (GTK_BOX (inner), box, 0, 0, 0); + g_object_set_data (G_OBJECT (box), "f", ch->family); + gtk_box_pack_start (GTK_BOX (box), tab, 0, 0, 0); + gtk_widget_show (tab); + gtk_widget_show (box); + gtk_widget_queue_resize (inner->parent); +} + +static gboolean +tab_ignore_cb (GtkWidget *widget, GdkEventCrossing *event, gpointer user_data) +{ + return TRUE; +} + +/* called when a tab is clicked (button down) */ + +static void +tab_pressed_cb (GtkToggleButton *tab, chan *ch) +{ + chan *old_tab; + int is_switching = TRUE; + chanview *cv = ch->cv; + + ignore_toggle = TRUE; + /* de-activate the old tab */ + old_tab = cv->focused; + if (old_tab && old_tab->impl) + { + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (old_tab->impl), FALSE); + if (old_tab == ch) + is_switching = FALSE; + } + gtk_toggle_button_set_active (tab, TRUE); + ignore_toggle = FALSE; + cv->focused = ch; + + if (/*tab->active*/is_switching) + /* call the focus callback */ + cv->cb_focus (cv, ch, ch->tag, ch->userdata); +} + +/* called for keyboard tab toggles only */ +static void +tab_toggled_cb (GtkToggleButton *tab, chan *ch) +{ + if (ignore_toggle) + return; + + /* activated a tab via keyboard */ + tab_pressed_cb (tab, ch); +} + +static gboolean +tab_click_cb (GtkWidget *wid, GdkEventButton *event, chan *ch) +{ + return ch->cv->cb_contextmenu (ch->cv, ch, ch->tag, ch->userdata, event); +} + +static void * +cv_tabs_add (chanview *cv, chan *ch, char *name, GtkTreeIter *parent) +{ + GtkWidget *but; + + but = gtk_toggle_button_new_with_label (name); + gtk_widget_set_name (but, "xchat-tab"); + g_object_set_data (G_OBJECT (but), "c", ch); + /* used to trap right-clicks */ + g_signal_connect (G_OBJECT (but), "button_press_event", + G_CALLBACK (tab_click_cb), ch); + /* avoid prelights */ + g_signal_connect (G_OBJECT (but), "enter_notify_event", + G_CALLBACK (tab_ignore_cb), NULL); + g_signal_connect (G_OBJECT (but), "leave_notify_event", + G_CALLBACK (tab_ignore_cb), NULL); + g_signal_connect (G_OBJECT (but), "pressed", + G_CALLBACK (tab_pressed_cb), ch); + /* for keyboard */ + g_signal_connect (G_OBJECT (but), "toggled", + G_CALLBACK (tab_toggled_cb), ch); + g_object_set_data (G_OBJECT (but), "u", ch->userdata); + + tab_add_real (cv, but, ch); + + return but; +} + +/* traverse all the family boxes of tabs + * + * A "group" is basically: + * GtkV/HBox + * `-GtkViewPort + * `-GtkV/HBox (inner box) + * `- GtkBox (family box) + * `- GtkToggleButton + * `- GtkToggleButton + * `- ... + * `- GtkBox + * `- GtkToggleButton + * `- GtkToggleButton + * `- ... + * `- ... + * + * */ + +static int +tab_group_for_each_tab (chanview *cv, + int (*callback) (GtkWidget *tab, int num, int usernum), + int usernum) +{ + GList *tabs; + GList *boxes; + GtkBoxChild *child; + GtkBox *innerbox; + int i; + + innerbox = (GtkBox *) ((tabview *)cv)->inner; + boxes = innerbox->children; + i = 0; + while (boxes) + { + child = boxes->data; + tabs = GTK_BOX (child->widget)->children; + + while (tabs) + { + child = tabs->data; + + if (!GTK_IS_SEPARATOR (child->widget)) + { + if (callback (child->widget, i, usernum) != -1) + return i; + i++; + } + tabs = tabs->next; + } + + boxes = boxes->next; + } + + return i; +} + +static int +tab_check_focus_cb (GtkWidget *tab, int num, int unused) +{ + if (GTK_TOGGLE_BUTTON (tab)->active) + return num; + + return -1; +} + +/* returns the currently focused tab number */ + +static int +tab_group_get_cur_page (chanview *cv) +{ + return tab_group_for_each_tab (cv, tab_check_focus_cb, 0); +} + +static void +cv_tabs_focus (chan *ch) +{ + if (ch->impl) + /* focus the new one (tab_pressed_cb defocuses the old one) */ + tab_pressed_cb (GTK_TOGGLE_BUTTON (ch->impl), ch); +} + +static int +tab_focus_num_cb (GtkWidget *tab, int num, int want) +{ + if (num == want) + { + cv_tabs_focus (g_object_get_data (G_OBJECT (tab), "c")); + return 1; + } + + return -1; +} + +static void +cv_tabs_change_orientation (chanview *cv) +{ + /* cleanup the old one */ + if (cv->func_cleanup) + cv->func_cleanup (cv); + + /* now rebuild a new tabbar or tree */ + cv->func_init (cv); + chanview_populate (cv); +} + +/* switch to the tab number specified */ + +static void +cv_tabs_move_focus (chanview *cv, gboolean relative, int num) +{ + int i, max; + + if (relative) + { + max = cv->size; + i = tab_group_get_cur_page (cv) + num; + /* make it wrap around at both ends */ + if (i < 0) + i = max - 1; + if (i >= max) + i = 0; + tab_group_for_each_tab (cv, tab_focus_num_cb, i); + return; + } + + tab_group_for_each_tab (cv, tab_focus_num_cb, num); +} + +static void +cv_tabs_remove (chan *ch) +{ + gtk_widget_destroy (ch->impl); + ch->impl = NULL; + + cv_tabs_prune (ch->cv); +} + +static void +cv_tabs_move (chan *ch, int delta) +{ + int i, pos = 0; + GList *list; + GtkWidget *parent = ((GtkWidget *)ch->impl)->parent; + + i = 0; + for (list = GTK_BOX (parent)->children; list; list = list->next) + { + GtkBoxChild *child_entry; + + child_entry = list->data; + if (child_entry->widget == ch->impl) + pos = i; + i++; + } + + pos = (pos - delta) % i; + gtk_box_reorder_child (GTK_BOX (parent), ch->impl, pos); +} + +static void +cv_tabs_move_family (chan *ch, int delta) +{ + int i, pos = 0; + GList *list; + GtkWidget *box = NULL; + + /* find position of tab's family */ + i = 0; + for (list = GTK_BOX (((tabview *)ch->cv)->inner)->children; list; list = list->next) + { + GtkBoxChild *child_entry; + void *fam; + + child_entry = list->data; + fam = g_object_get_data (G_OBJECT (child_entry->widget), "f"); + if (fam == ch->family) + { + box = child_entry->widget; + pos = i; + } + i++; + } + + pos = (pos - delta) % i; + gtk_box_reorder_child (GTK_BOX (box->parent), box, pos); +} + +static void +cv_tabs_cleanup (chanview *cv) +{ + if (cv->box) + gtk_widget_destroy (((tabview *)cv)->outer); +} + +static void +cv_tabs_set_color (chan *ch, PangoAttrList *list) +{ + gtk_label_set_attributes (GTK_LABEL (GTK_BIN (ch->impl)->child), list); +} + +static void +cv_tabs_rename (chan *ch, char *name) +{ + PangoAttrList *attr; + GtkWidget *tab = ch->impl; + + attr = gtk_label_get_attributes (GTK_LABEL (GTK_BIN (tab)->child)); + if (attr) + pango_attr_list_ref (attr); + + gtk_button_set_label (GTK_BUTTON (tab), name); + gtk_widget_queue_resize (tab->parent->parent->parent); + + if (attr) + { + gtk_label_set_attributes (GTK_LABEL (GTK_BIN (tab)->child), attr); + pango_attr_list_unref (attr); + } +} + +static gboolean +cv_tabs_is_collapsed (chan *ch) +{ + return FALSE; +} + +static chan * +cv_tabs_get_parent (chan *ch) +{ + return NULL; +} diff --git a/xchat-2.8.8/src/fe-gtk/chanview-tree.c b/xchat-2.8.8/src/fe-gtk/chanview-tree.c new file mode 100644 index 0000000..5373f21 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/chanview-tree.c @@ -0,0 +1,364 @@ +/* file included in chanview.c */ + +typedef struct +{ + GtkTreeView *tree; + GtkWidget *scrollw; /* scrolledWindow */ +} treeview; + +#include "../common/xchat.h" +#include "../common/xchatc.h" +#include "fe-gtk.h" +#include "maingui.h" + +#include <gdk/gdk.h> +#include <gtk/gtktreeview.h> + +static void /* row-activated, when a row is double clicked */ +cv_tree_activated_cb (GtkTreeView *view, GtkTreePath *path, + GtkTreeViewColumn *column, gpointer data) +{ + if (gtk_tree_view_row_expanded (view, path)) + gtk_tree_view_collapse_row (view, path); + else + gtk_tree_view_expand_row (view, path, FALSE); +} + +static void /* row selected callback */ +cv_tree_sel_cb (GtkTreeSelection *sel, chanview *cv) +{ + GtkTreeModel *model; + GtkTreeIter iter; + chan *ch; + + if (gtk_tree_selection_get_selected (sel, &model, &iter)) + { + gtk_tree_model_get (model, &iter, COL_CHAN, &ch, -1); + + cv->focused = ch; + cv->cb_focus (cv, ch, ch->tag, ch->userdata); + } +} + +static gboolean +cv_tree_click_cb (GtkTreeView *tree, GdkEventButton *event, chanview *cv) +{ + chan *ch; + GtkTreeSelection *sel; + GtkTreePath *path; + GtkTreeIter iter; + int ret = FALSE; + + if (event->button != 3 && event->state == 0) + return FALSE; + + sel = gtk_tree_view_get_selection (tree); + if (gtk_tree_view_get_path_at_pos (tree, event->x, event->y, &path, 0, 0, 0)) + { + if (event->button == 2) + { + gtk_tree_selection_unselect_all (sel); + gtk_tree_selection_select_path (sel, path); + } + if (gtk_tree_model_get_iter (GTK_TREE_MODEL (cv->store), &iter, path)) + { + gtk_tree_model_get (GTK_TREE_MODEL (cv->store), &iter, COL_CHAN, &ch, -1); + ret = cv->cb_contextmenu (cv, ch, ch->tag, ch->userdata, event); + } + gtk_tree_path_free (path); + } + return ret; +} + +static void +cv_tree_init (chanview *cv) +{ + GtkWidget *view, *win; + GtkCellRenderer *renderer; + static const GtkTargetEntry dnd_src_target[] = + { + {"XCHAT_CHANVIEW", GTK_TARGET_SAME_APP, 75 } + }; + static const GtkTargetEntry dnd_dest_target[] = + { + {"XCHAT_USERLIST", GTK_TARGET_SAME_APP, 75 } + }; + + win = gtk_scrolled_window_new (0, 0); + /*gtk_container_set_border_width (GTK_CONTAINER (win), 1);*/ + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (win), + GTK_SHADOW_IN); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (win), + GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); + gtk_container_add (GTK_CONTAINER (cv->box), win); + gtk_widget_show (win); + + view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (cv->store)); + gtk_widget_set_name (view, "xchat-tree"); + if (cv->style) + gtk_widget_set_style (view, cv->style); + /*gtk_widget_modify_base (view, GTK_STATE_NORMAL, &colors[COL_BG]);*/ + GTK_WIDGET_UNSET_FLAGS (view, GTK_CAN_FOCUS); + gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (view), FALSE); +#if GTK_CHECK_VERSION(2,10,0) + if (!(prefs.gui_tweaks & 8)) + gtk_tree_view_set_enable_tree_lines (GTK_TREE_VIEW (view), TRUE); +#endif + gtk_container_add (GTK_CONTAINER (win), view); + + /* icon column */ + if (cv->use_icons) + { + renderer = gtk_cell_renderer_pixbuf_new (); + if (prefs.gui_tweaks & 32) + g_object_set (G_OBJECT (renderer), "ypad", 0, NULL); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), + -1, NULL, renderer, + "pixbuf", COL_PIXBUF, NULL); + } + + /* main column */ + renderer = gtk_cell_renderer_text_new (); + if (prefs.gui_tweaks & 32) + g_object_set (G_OBJECT (renderer), "ypad", 0, NULL); + gtk_cell_renderer_text_set_fixed_height_from_font (GTK_CELL_RENDERER_TEXT (renderer), 1); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), + -1, NULL, renderer, + "text", COL_NAME, "attributes", COL_ATTR, NULL); + + g_signal_connect (G_OBJECT (gtk_tree_view_get_selection (GTK_TREE_VIEW (view))), + "changed", G_CALLBACK (cv_tree_sel_cb), cv); + g_signal_connect (G_OBJECT (view), "button-press-event", + G_CALLBACK (cv_tree_click_cb), cv); + g_signal_connect (G_OBJECT (view), "row-activated", + G_CALLBACK (cv_tree_activated_cb), NULL); + + gtk_drag_dest_set (view, GTK_DEST_DEFAULT_ALL, dnd_dest_target, 1, + GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_LINK); + gtk_drag_source_set (view, GDK_BUTTON1_MASK, dnd_src_target, 1, GDK_ACTION_COPY); + +#ifndef WIN32 + g_signal_connect (G_OBJECT (view), "drag_begin", + G_CALLBACK (mg_drag_begin_cb), NULL); + g_signal_connect (G_OBJECT (view), "drag_drop", + G_CALLBACK (mg_drag_drop_cb), NULL); + g_signal_connect (G_OBJECT (view), "drag_motion", + G_CALLBACK (mg_drag_motion_cb), NULL); + g_signal_connect (G_OBJECT (view), "drag_end", + G_CALLBACK (mg_drag_end_cb), NULL); +#endif + + ((treeview *)cv)->tree = GTK_TREE_VIEW (view); + ((treeview *)cv)->scrollw = win; + gtk_widget_show (view); +} + +static void +cv_tree_postinit (chanview *cv) +{ + gtk_tree_view_expand_all (((treeview *)cv)->tree); +} + +static void * +cv_tree_add (chanview *cv, chan *ch, char *name, GtkTreeIter *parent) +{ + GtkTreePath *path; + + if (parent) + { + /* expand the parent node */ + path = gtk_tree_model_get_path (GTK_TREE_MODEL (cv->store), parent); + if (path) + { + gtk_tree_view_expand_row (((treeview *)cv)->tree, path, FALSE); + gtk_tree_path_free (path); + } + } + + return NULL; +} + +static void +cv_tree_change_orientation (chanview *cv) +{ +} + +static void +cv_tree_focus (chan *ch) +{ + GtkTreeView *tree = ((treeview *)ch->cv)->tree; + GtkTreeModel *model = gtk_tree_view_get_model (tree); + GtkTreePath *path; + GtkTreeIter parent; + GdkRectangle cell_rect; + GdkRectangle vis_rect; + gint dest_y; + + /* expand the parent node */ + if (gtk_tree_model_iter_parent (model, &parent, &ch->iter)) + { + path = gtk_tree_model_get_path (model, &parent); + if (path) + { + /*if (!gtk_tree_view_row_expanded (tree, path)) + { + gtk_tree_path_free (path); + return; + }*/ + gtk_tree_view_expand_row (tree, path, FALSE); + gtk_tree_path_free (path); + } + } + + path = gtk_tree_model_get_path (model, &ch->iter); + if (path) + { + /* This full section does what + * gtk_tree_view_scroll_to_cell (tree, path, NULL, TRUE, 0.5, 0.5); + * does, except it only scrolls the window if the provided cell is + * not visible. Basic algorithm taken from gtktreeview.c */ + + /* obtain information to see if the cell is visible */ + gtk_tree_view_get_background_area (tree, path, NULL, &cell_rect); + gtk_tree_view_get_visible_rect (tree, &vis_rect); + + /* The cordinates aren't offset correctly */ + gtk_tree_view_widget_to_tree_coords( tree, cell_rect.x, cell_rect.y, NULL, &cell_rect.y ); + + /* only need to scroll if out of bounds */ + if (cell_rect.y < vis_rect.y || + cell_rect.y + cell_rect.height > vis_rect.y + vis_rect.height) + { + dest_y = cell_rect.y - ((vis_rect.height - cell_rect.height) * 0.5); + if (dest_y < 0) + dest_y = 0; + gtk_tree_view_scroll_to_point (tree, -1, dest_y); + } + /* theft done, now make it focused like */ + gtk_tree_view_set_cursor (tree, path, NULL, FALSE); + gtk_tree_path_free (path); + } +} + +static void +cv_tree_move_focus (chanview *cv, gboolean relative, int num) +{ + chan *ch; + + if (relative) + { + num += cv_find_number_of_chan (cv, cv->focused); + num %= cv->size; + /* make it wrap around at both ends */ + if (num < 0) + num = cv->size - 1; + } + + ch = cv_find_chan_by_number (cv, num); + if (ch) + cv_tree_focus (ch); +} + +static void +cv_tree_remove (chan *ch) +{ +} + +static void +move_row (chan *ch, int delta, GtkTreeIter *parent) +{ + GtkTreeStore *store = ch->cv->store; + GtkTreeIter *src = &ch->iter; + GtkTreeIter dest = ch->iter; + GtkTreePath *dest_path; + + if (delta < 0) /* down */ + { + if (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &dest)) + gtk_tree_store_swap (store, src, &dest); + else /* move to top */ + gtk_tree_store_move_after (store, src, NULL); + + } else + { + dest_path = gtk_tree_model_get_path (GTK_TREE_MODEL (store), &dest); + if (gtk_tree_path_prev (dest_path)) + { + gtk_tree_model_get_iter (GTK_TREE_MODEL (store), &dest, dest_path); + gtk_tree_store_swap (store, src, &dest); + } else + { /* move to bottom */ + gtk_tree_store_move_before (store, src, NULL); + } + + gtk_tree_path_free (dest_path); + } +} + +static void +cv_tree_move (chan *ch, int delta) +{ + GtkTreeIter parent; + + /* do nothing if this is a server row */ + if (gtk_tree_model_iter_parent (GTK_TREE_MODEL (ch->cv->store), &parent, &ch->iter)) + move_row (ch, delta, &parent); +} + +static void +cv_tree_move_family (chan *ch, int delta) +{ + move_row (ch, delta, NULL); +} + +static void +cv_tree_cleanup (chanview *cv) +{ + if (cv->box) + /* kill the scrolled window */ + gtk_widget_destroy (((treeview *)cv)->scrollw); +} + +static void +cv_tree_set_color (chan *ch, PangoAttrList *list) +{ + /* nothing to do, it's already set in the store */ +} + +static void +cv_tree_rename (chan *ch, char *name) +{ + /* nothing to do, it's already renamed in the store */ +} + +static chan * +cv_tree_get_parent (chan *ch) +{ + chan *parent_ch = NULL; + GtkTreeIter parent; + + if (gtk_tree_model_iter_parent (GTK_TREE_MODEL (ch->cv->store), &parent, &ch->iter)) + { + gtk_tree_model_get (GTK_TREE_MODEL (ch->cv->store), &parent, COL_CHAN, &parent_ch, -1); + } + + return parent_ch; +} + +static gboolean +cv_tree_is_collapsed (chan *ch) +{ + chan *parent = cv_tree_get_parent (ch); + GtkTreePath *path = NULL; + gboolean ret; + + if (parent == NULL) + return FALSE; + + path = gtk_tree_model_get_path (GTK_TREE_MODEL (parent->cv->store), + &parent->iter); + ret = !gtk_tree_view_row_expanded (((treeview *)parent->cv)->tree, path); + gtk_tree_path_free (path); + + return ret; +} diff --git a/xchat-2.8.8/src/fe-gtk/chanview.c b/xchat-2.8.8/src/fe-gtk/chanview.c new file mode 100644 index 0000000..e90c4df --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/chanview.c @@ -0,0 +1,643 @@ +/* abstract channel view: tabs or tree or anything you like */ + +#include <stdlib.h> +#include <string.h> + +#include <gtk/gtk.h> + +#include "chanview.h" +#include "gtkutil.h" + + +/* treeStore columns */ + +#define COL_NAME 0 /* (char *) */ +#define COL_CHAN 1 /* (chan *) */ +#define COL_ATTR 2 /* (PangoAttrList *) */ +#define COL_PIXBUF 3 /* (GdkPixbuf *) */ + +struct _chanview +{ + /* impl scratch area */ + char implscratch[sizeof (void *) * 8]; + + GtkTreeStore *store; + int size; /* number of channels in view */ + + GtkWidget *box; /* the box we destroy when changing implementations */ + GtkStyle *style; /* style used for tree */ + chan *focused; /* currently focused channel */ + int trunc_len; + + /* callbacks */ + void (*cb_focus) (chanview *, chan *, int tag, void *userdata); + void (*cb_xbutton) (chanview *, chan *, int tag, void *userdata); + gboolean (*cb_contextmenu) (chanview *, chan *, int tag, void *userdata, GdkEventButton *); + int (*cb_compare) (void *a, void *b); + + /* impl */ + void (*func_init) (chanview *); + void (*func_postinit) (chanview *); + void *(*func_add) (chanview *, chan *, char *, GtkTreeIter *); + void (*func_move_focus) (chanview *, gboolean, int); + void (*func_change_orientation) (chanview *); + void (*func_remove) (chan *); + void (*func_move) (chan *, int delta); + void (*func_move_family) (chan *, int delta); + void (*func_focus) (chan *); + void (*func_set_color) (chan *, PangoAttrList *); + void (*func_rename) (chan *, char *); + gboolean (*func_is_collapsed) (chan *); + chan *(*func_get_parent) (chan *); + void (*func_cleanup) (chanview *); + + unsigned int sorted:1; + unsigned int vertical:1; + unsigned int use_icons:1; +}; + +struct _chan +{ + chanview *cv; /* our owner */ + GtkTreeIter iter; + void *userdata; /* session * */ + void *family; /* server * or null */ + void *impl; /* togglebutton or null */ + GdkPixbuf *icon; + short allow_closure; /* allow it to be closed when it still has children? */ + short tag; +}; + +static chan *cv_find_chan_by_number (chanview *cv, int num); +static int cv_find_number_of_chan (chanview *cv, chan *find_ch); + + +/* ======= TABS ======= */ + +#include "chanview-tabs.c" + + +/* ======= TREE ======= */ + +#include "chanview-tree.c" + + +/* ==== ABSTRACT CHANVIEW ==== */ + +static char * +truncate_tab_name (char *name, int max) +{ + char *buf; + + if (max > 2 && g_utf8_strlen (name, -1) > max) + { + /* truncate long channel names */ + buf = malloc (strlen (name) + 4); + strcpy (buf, name); + g_utf8_offset_to_pointer (buf, max)[0] = 0; + strcat (buf, ".."); + return buf; + } + + return name; +} + +/* iterate through a model, into 1 depth of children */ + +static void +model_foreach_1 (GtkTreeModel *model, void (*func)(void *, GtkTreeIter *), + void *userdata) +{ + GtkTreeIter iter, inner; + + if (gtk_tree_model_get_iter_first (model, &iter)) + { + do + { + func (userdata, &iter); + if (gtk_tree_model_iter_children (model, &inner, &iter)) + { + do + func (userdata, &inner); + while (gtk_tree_model_iter_next (model, &inner)); + } + } + while (gtk_tree_model_iter_next (model, &iter)); + } +} + +static void +chanview_pop_cb (chanview *cv, GtkTreeIter *iter) +{ + chan *ch; + char *name; + PangoAttrList *attr; + + gtk_tree_model_get (GTK_TREE_MODEL (cv->store), iter, + COL_NAME, &name, COL_CHAN, &ch, COL_ATTR, &attr, -1); + ch->impl = cv->func_add (cv, ch, name, NULL); + if (attr) + { + cv->func_set_color (ch, attr); + pango_attr_list_unref (attr); + } + g_free (name); +} + +static void +chanview_populate (chanview *cv) +{ + model_foreach_1 (GTK_TREE_MODEL (cv->store), (void *)chanview_pop_cb, cv); +} + +void +chanview_set_impl (chanview *cv, int type) +{ + /* cleanup the old one */ + if (cv->func_cleanup) + cv->func_cleanup (cv); + + switch (type) + { + case 0: + cv->func_init = cv_tabs_init; + cv->func_postinit = cv_tabs_postinit; + cv->func_add = cv_tabs_add; + cv->func_move_focus = cv_tabs_move_focus; + cv->func_change_orientation = cv_tabs_change_orientation; + cv->func_remove = cv_tabs_remove; + cv->func_move = cv_tabs_move; + cv->func_move_family = cv_tabs_move_family; + cv->func_focus = cv_tabs_focus; + cv->func_set_color = cv_tabs_set_color; + cv->func_rename = cv_tabs_rename; + cv->func_is_collapsed = cv_tabs_is_collapsed; + cv->func_get_parent = cv_tabs_get_parent; + cv->func_cleanup = cv_tabs_cleanup; + break; + + default: + cv->func_init = cv_tree_init; + cv->func_postinit = cv_tree_postinit; + cv->func_add = cv_tree_add; + cv->func_move_focus = cv_tree_move_focus; + cv->func_change_orientation = cv_tree_change_orientation; + cv->func_remove = cv_tree_remove; + cv->func_move = cv_tree_move; + cv->func_move_family = cv_tree_move_family; + cv->func_focus = cv_tree_focus; + cv->func_set_color = cv_tree_set_color; + cv->func_rename = cv_tree_rename; + cv->func_is_collapsed = cv_tree_is_collapsed; + cv->func_get_parent = cv_tree_get_parent; + cv->func_cleanup = cv_tree_cleanup; + break; + } + + /* now rebuild a new tabbar or tree */ + cv->func_init (cv); + + chanview_populate (cv); + + cv->func_postinit (cv); + + /* force re-focus */ + if (cv->focused) + cv->func_focus (cv->focused); +} + +static void +chanview_free_ch (chanview *cv, GtkTreeIter *iter) +{ + chan *ch; + + gtk_tree_model_get (GTK_TREE_MODEL (cv->store), iter, COL_CHAN, &ch, -1); + free (ch); +} + +static void +chanview_destroy_store (chanview *cv) /* free every (chan *) in the store */ +{ + model_foreach_1 (GTK_TREE_MODEL (cv->store), (void *)chanview_free_ch, cv); + g_object_unref (cv->store); +} + +static void +chanview_destroy (chanview *cv) +{ + if (cv->func_cleanup) + cv->func_cleanup (cv); + + if (cv->box) + gtk_widget_destroy (cv->box); + + chanview_destroy_store (cv); + free (cv); +} + +static void +chanview_box_destroy_cb (GtkWidget *box, chanview *cv) +{ + cv->box = NULL; + chanview_destroy (cv); +} + +chanview * +chanview_new (int type, int trunc_len, gboolean sort, gboolean use_icons, + GtkStyle *style) +{ + chanview *cv; + + cv = calloc (1, sizeof (chanview)); + cv->store = gtk_tree_store_new (4, G_TYPE_STRING, G_TYPE_POINTER, + PANGO_TYPE_ATTR_LIST, GDK_TYPE_PIXBUF); + cv->style = style; + cv->box = gtk_hbox_new (0, 0); + cv->trunc_len = trunc_len; + cv->sorted = sort; + cv->use_icons = use_icons; + gtk_widget_show (cv->box); + chanview_set_impl (cv, type); + + g_signal_connect (G_OBJECT (cv->box), "destroy", + G_CALLBACK (chanview_box_destroy_cb), cv); + + return cv; +} + +/* too lazy for signals */ + +void +chanview_set_callbacks (chanview *cv, + void (*cb_focus) (chanview *, chan *, int tag, void *userdata), + void (*cb_xbutton) (chanview *, chan *, int tag, void *userdata), + gboolean (*cb_contextmenu) (chanview *, chan *, int tag, void *userdata, GdkEventButton *), + int (*cb_compare) (void *a, void *b)) +{ + cv->cb_focus = cb_focus; + cv->cb_xbutton = cb_xbutton; + cv->cb_contextmenu = cb_contextmenu; + cv->cb_compare = cb_compare; +} + +/* find a place to insert this new entry, based on the compare function */ + +static void +chanview_insert_sorted (chanview *cv, GtkTreeIter *add_iter, GtkTreeIter *parent, void *ud) +{ + GtkTreeIter iter; + chan *ch; + + if (cv->sorted && gtk_tree_model_iter_children (GTK_TREE_MODEL (cv->store), &iter, parent)) + { + do + { + gtk_tree_model_get (GTK_TREE_MODEL (cv->store), &iter, COL_CHAN, &ch, -1); + if (ch->tag == 0 && cv->cb_compare (ch->userdata, ud) > 0) + { + gtk_tree_store_insert_before (cv->store, add_iter, parent, &iter); + return; + } + } + while (gtk_tree_model_iter_next (GTK_TREE_MODEL (cv->store), &iter)); + } + + gtk_tree_store_append (cv->store, add_iter, parent); +} + +/* find a parent node with the same "family" pointer (i.e. the Server tab) */ + +static int +chanview_find_parent (chanview *cv, void *family, GtkTreeIter *search_iter, chan *avoid) +{ + chan *search_ch; + + /* find this new row's parent, if any */ + if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (cv->store), search_iter)) + { + do + { + gtk_tree_model_get (GTK_TREE_MODEL (cv->store), search_iter, + COL_CHAN, &search_ch, -1); + if (family == search_ch->family && search_ch != avoid /*&& + gtk_tree_store_iter_depth (cv->store, search_iter) == 0*/) + return TRUE; + } + while (gtk_tree_model_iter_next (GTK_TREE_MODEL (cv->store), search_iter)); + } + + return FALSE; +} + +static chan * +chanview_add_real (chanview *cv, char *name, void *family, void *userdata, + gboolean allow_closure, int tag, GdkPixbuf *icon, + chan *ch, chan *avoid) +{ + GtkTreeIter parent_iter; + GtkTreeIter iter; + gboolean has_parent = FALSE; + + if (chanview_find_parent (cv, family, &parent_iter, avoid)) + { + chanview_insert_sorted (cv, &iter, &parent_iter, userdata); + has_parent = TRUE; + } else + { + gtk_tree_store_append (cv->store, &iter, NULL); + } + + if (!ch) + { + ch = calloc (1, sizeof (chan)); + ch->userdata = userdata; + ch->family = family; + ch->cv = cv; + ch->allow_closure = allow_closure; + ch->tag = tag; + ch->icon = icon; + } + memcpy (&(ch->iter), &iter, sizeof (iter)); + + gtk_tree_store_set (cv->store, &iter, COL_NAME, name, COL_CHAN, ch, + COL_PIXBUF, icon, -1); + + cv->size++; + if (!has_parent) + ch->impl = cv->func_add (cv, ch, name, NULL); + else + ch->impl = cv->func_add (cv, ch, name, &parent_iter); + + return ch; +} + +chan * +chanview_add (chanview *cv, char *name, void *family, void *userdata, gboolean allow_closure, int tag, GdkPixbuf *icon) +{ + char *new_name; + chan *ret; + + new_name = truncate_tab_name (name, cv->trunc_len); + + ret = chanview_add_real (cv, new_name, family, userdata, allow_closure, tag, icon, NULL, NULL); + + if (new_name != name) + free (new_name); + + return ret; +} + +int +chanview_get_size (chanview *cv) +{ + return cv->size; +} + +GtkWidget * +chanview_get_box (chanview *cv) +{ + return cv->box; +} + +void +chanview_move_focus (chanview *cv, gboolean relative, int num) +{ + cv->func_move_focus (cv, relative, num); +} + +GtkOrientation +chanview_get_orientation (chanview *cv) +{ + return (cv->vertical ? GTK_ORIENTATION_VERTICAL : GTK_ORIENTATION_HORIZONTAL); +} + +void +chanview_set_orientation (chanview *cv, gboolean vertical) +{ + if (vertical != cv->vertical) + { + cv->vertical = vertical; + cv->func_change_orientation (cv); + } +} + +int +chan_get_tag (chan *ch) +{ + return ch->tag; +} + +void * +chan_get_userdata (chan *ch) +{ + return ch->userdata; +} + +void +chan_focus (chan *ch) +{ + if (ch->cv->focused == ch) + return; + + ch->cv->func_focus (ch); +} + +void +chan_move (chan *ch, int delta) +{ + ch->cv->func_move (ch, delta); +} + +void +chan_move_family (chan *ch, int delta) +{ + ch->cv->func_move_family (ch, delta); +} + +void +chan_set_color (chan *ch, PangoAttrList *list) +{ + gtk_tree_store_set (ch->cv->store, &ch->iter, COL_ATTR, list, -1); + ch->cv->func_set_color (ch, list); +} + +void +chan_rename (chan *ch, char *name, int trunc_len) +{ + char *new_name; + + new_name = truncate_tab_name (name, trunc_len); + + gtk_tree_store_set (ch->cv->store, &ch->iter, COL_NAME, new_name, -1); + ch->cv->func_rename (ch, new_name); + ch->cv->trunc_len = trunc_len; + + if (new_name != name) + free (new_name); +} + +/* this thing is overly complicated */ + +static int +cv_find_number_of_chan (chanview *cv, chan *find_ch) +{ + GtkTreeIter iter, inner; + chan *ch; + int i = 0; + + if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (cv->store), &iter)) + { + do + { + gtk_tree_model_get (GTK_TREE_MODEL (cv->store), &iter, COL_CHAN, &ch, -1); + if (ch == find_ch) + return i; + i++; + + if (gtk_tree_model_iter_children (GTK_TREE_MODEL (cv->store), &inner, &iter)) + { + do + { + gtk_tree_model_get (GTK_TREE_MODEL (cv->store), &inner, COL_CHAN, &ch, -1); + if (ch == find_ch) + return i; + i++; + } + while (gtk_tree_model_iter_next (GTK_TREE_MODEL (cv->store), &inner)); + } + } + while (gtk_tree_model_iter_next (GTK_TREE_MODEL (cv->store), &iter)); + } + + return 0; /* WARNING */ +} + +/* this thing is overly complicated too */ + +static chan * +cv_find_chan_by_number (chanview *cv, int num) +{ + GtkTreeIter iter, inner; + chan *ch; + int i = 0; + + if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (cv->store), &iter)) + { + do + { + if (i == num) + { + gtk_tree_model_get (GTK_TREE_MODEL (cv->store), &iter, COL_CHAN, &ch, -1); + return ch; + } + i++; + + if (gtk_tree_model_iter_children (GTK_TREE_MODEL (cv->store), &inner, &iter)) + { + do + { + if (i == num) + { + gtk_tree_model_get (GTK_TREE_MODEL (cv->store), &inner, COL_CHAN, &ch, -1); + return ch; + } + i++; + } + while (gtk_tree_model_iter_next (GTK_TREE_MODEL (cv->store), &inner)); + } + } + while (gtk_tree_model_iter_next (GTK_TREE_MODEL (cv->store), &iter)); + } + + return NULL; +} + +static void +chan_emancipate_children (chan *ch) +{ + char *name; + chan *childch; + GtkTreeIter childiter; + PangoAttrList *attr; + + while (gtk_tree_model_iter_children (GTK_TREE_MODEL (ch->cv->store), &childiter, &ch->iter)) + { + /* remove and re-add all the children, but avoid using "ch" as parent */ + gtk_tree_model_get (GTK_TREE_MODEL (ch->cv->store), &childiter, + COL_NAME, &name, COL_CHAN, &childch, COL_ATTR, &attr, -1); + ch->cv->func_remove (childch); + gtk_tree_store_remove (ch->cv->store, &childiter); + ch->cv->size--; + chanview_add_real (childch->cv, name, childch->family, childch->userdata, childch->allow_closure, childch->tag, childch->icon, childch, ch); + if (attr) + { + childch->cv->func_set_color (childch, attr); + pango_attr_list_unref (attr); + } + g_free (name); + } +} + +gboolean +chan_remove (chan *ch, gboolean force) +{ + chan *new_ch; + int i, num; + extern int xchat_is_quitting; + + if (xchat_is_quitting) /* avoid lots of looping on exit */ + return TRUE; + + /* is this ch allowed to be closed while still having children? */ + if (!force && + gtk_tree_model_iter_has_child (GTK_TREE_MODEL (ch->cv->store), &ch->iter) && + !ch->allow_closure) + return FALSE; + + chan_emancipate_children (ch); + ch->cv->func_remove (ch); + + /* is it the focused one? */ + if (ch->cv->focused == ch) + { + ch->cv->focused = NULL; + + /* try to move the focus to some other valid channel */ + num = cv_find_number_of_chan (ch->cv, ch); + /* move to the one left of the closing tab */ + new_ch = cv_find_chan_by_number (ch->cv, num - 1); + if (new_ch && new_ch != ch) + { + chan_focus (new_ch); /* this'll will set ch->cv->focused for us too */ + } else + { + /* if it fails, try focus from tab 0 and up */ + for (i = 0; i < ch->cv->size; i++) + { + new_ch = cv_find_chan_by_number (ch->cv, i); + if (new_ch && new_ch != ch) + { + chan_focus (new_ch); /* this'll will set ch->cv->focused for us too */ + break; + } + } + } + } + + ch->cv->size--; + gtk_tree_store_remove (ch->cv->store, &ch->iter); + free (ch); + return TRUE; +} + +gboolean +chan_is_collapsed (chan *ch) +{ + return ch->cv->func_is_collapsed (ch); +} + +chan * +chan_get_parent (chan *ch) +{ + return ch->cv->func_get_parent (ch); +} diff --git a/xchat-2.8.8/src/fe-gtk/chanview.h b/xchat-2.8.8/src/fe-gtk/chanview.h new file mode 100644 index 0000000..75b5ef1 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/chanview.h @@ -0,0 +1,31 @@ +typedef struct _chanview chanview; +typedef struct _chan chan; + +chanview *chanview_new (int type, int trunc_len, gboolean sort, gboolean use_icons, GtkStyle *style); +void chanview_set_callbacks (chanview *cv, + void (*cb_focus) (chanview *, chan *, int tag, void *userdata), + void (*cb_xbutton) (chanview *, chan *, int tag, void *userdata), + gboolean (*cb_contextmenu) (chanview *, chan *, int tag, void *userdata, GdkEventButton *), + int (*cb_compare) (void *a, void *b)); +void chanview_set_impl (chanview *cv, int type); +chan *chanview_add (chanview *cv, char *name, void *family, void *userdata, gboolean allow_closure, int tag, GdkPixbuf *icon); +int chanview_get_size (chanview *cv); +GtkWidget *chanview_get_box (chanview *cv); +void chanview_move_focus (chanview *cv, gboolean relative, int num); +GtkOrientation chanview_get_orientation (chanview *cv); +void chanview_set_orientation (chanview *cv, gboolean vertical); + +int chan_get_tag (chan *ch); +void *chan_get_userdata (chan *ch); +void chan_focus (chan *ch); +void chan_move (chan *ch, int delta); +void chan_move_family (chan *ch, int delta); +void chan_set_color (chan *ch, PangoAttrList *list); +void chan_rename (chan *ch, char *new_name, int trunc_len); +gboolean chan_remove (chan *ch, gboolean force); +gboolean chan_is_collapsed (chan *ch); +chan * chan_get_parent (chan *ch); + +#define FOCUS_NEW_ALL 1 +#define FOCUS_NEW_ONLY_ASKED 2 +#define FOCUS_NEW_NONE 0 diff --git a/xchat-2.8.8/src/fe-gtk/custom-list.c b/xchat-2.8.8/src/fe-gtk/custom-list.c new file mode 100644 index 0000000..ac20e0f --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/custom-list.c @@ -0,0 +1,753 @@ +#include <string.h> +#include <stdlib.h> +#include "custom-list.h" + +/* indent -i3 -ci3 -ut -ts3 -bli0 -c0 custom-list.c */ + +/* boring declarations of local functions */ + +static void custom_list_init (CustomList * pkg_tree); + +static void custom_list_class_init (CustomListClass * klass); + +static void custom_list_tree_model_init (GtkTreeModelIface * iface); + +static void custom_list_finalize (GObject * object); + +static GtkTreeModelFlags custom_list_get_flags (GtkTreeModel * tree_model); + +static gint custom_list_get_n_columns (GtkTreeModel * tree_model); + +static GType custom_list_get_column_type (GtkTreeModel * tree_model, + gint index); + +static gboolean custom_list_get_iter (GtkTreeModel * tree_model, + GtkTreeIter * iter, GtkTreePath * path); + +static GtkTreePath *custom_list_get_path (GtkTreeModel * tree_model, + GtkTreeIter * iter); + +static void custom_list_get_value (GtkTreeModel * tree_model, + GtkTreeIter * iter, + gint column, GValue * value); + +static gboolean custom_list_iter_next (GtkTreeModel * tree_model, + GtkTreeIter * iter); + +static gboolean custom_list_iter_children (GtkTreeModel * tree_model, + GtkTreeIter * iter, + GtkTreeIter * parent); + +static gboolean custom_list_iter_has_child (GtkTreeModel * tree_model, + GtkTreeIter * iter); + +static gint custom_list_iter_n_children (GtkTreeModel * tree_model, + GtkTreeIter * iter); + +static gboolean custom_list_iter_nth_child (GtkTreeModel * tree_model, + GtkTreeIter * iter, + GtkTreeIter * parent, gint n); + +static gboolean custom_list_iter_parent (GtkTreeModel * tree_model, + GtkTreeIter * iter, + GtkTreeIter * child); + + /* -- GtkTreeSortable interface functions -- */ + +static gboolean custom_list_sortable_get_sort_column_id (GtkTreeSortable * + sortable, + gint * sort_col_id, + GtkSortType * order); + +static void custom_list_sortable_set_sort_column_id (GtkTreeSortable * + sortable, + gint sort_col_id, + GtkSortType order); + +static void custom_list_sortable_set_sort_func (GtkTreeSortable * sortable, + gint sort_col_id, + GtkTreeIterCompareFunc + sort_func, gpointer user_data, + GtkDestroyNotify + destroy_func); + +static void custom_list_sortable_set_default_sort_func (GtkTreeSortable * + sortable, + GtkTreeIterCompareFunc + sort_func, + gpointer user_data, + GtkDestroyNotify + destroy_func); + +static gboolean custom_list_sortable_has_default_sort_func (GtkTreeSortable * + sortable); + + + +static GObjectClass *parent_class = NULL; /* GObject stuff - nothing to worry about */ + + +static void +custom_list_sortable_init (GtkTreeSortableIface * iface) +{ + iface->get_sort_column_id = custom_list_sortable_get_sort_column_id; + iface->set_sort_column_id = custom_list_sortable_set_sort_column_id; + iface->set_sort_func = custom_list_sortable_set_sort_func; /* NOT SUPPORTED */ + iface->set_default_sort_func = custom_list_sortable_set_default_sort_func; /* NOT SUPPORTED */ + iface->has_default_sort_func = custom_list_sortable_has_default_sort_func; /* NOT SUPPORTED */ +} + +/***************************************************************************** + * + * custom_list_get_type: here we register our new type and its interfaces + * with the type system. If you want to implement + * additional interfaces like GtkTreeSortable, you + * will need to do it here. + * + *****************************************************************************/ + +static GType +custom_list_get_type (void) +{ + static GType custom_list_type = 0; + + if (custom_list_type) + return custom_list_type; + + /* Some boilerplate type registration stuff */ + if (1) + { + static const GTypeInfo custom_list_info = { + sizeof (CustomListClass), + NULL, /* base_init */ + NULL, /* base_finalize */ + (GClassInitFunc) custom_list_class_init, + NULL, /* class finalize */ + NULL, /* class_data */ + sizeof (CustomList), + 0, /* n_preallocs */ + (GInstanceInitFunc) custom_list_init + }; + + custom_list_type = + g_type_register_static (G_TYPE_OBJECT, "CustomList", + &custom_list_info, (GTypeFlags) 0); + } + + /* Here we register our GtkTreeModel interface with the type system */ + if (1) + { + static const GInterfaceInfo tree_model_info = { + (GInterfaceInitFunc) custom_list_tree_model_init, + NULL, + NULL + }; + + g_type_add_interface_static (custom_list_type, GTK_TYPE_TREE_MODEL, + &tree_model_info); + } + + /* Add GtkTreeSortable interface */ + if (1) + { + static const GInterfaceInfo tree_sortable_info = { + (GInterfaceInitFunc) custom_list_sortable_init, + NULL, + NULL + }; + + g_type_add_interface_static (custom_list_type, + GTK_TYPE_TREE_SORTABLE, + &tree_sortable_info); + } + + return custom_list_type; +} + +/***************************************************************************** + * + * custom_list_class_init: more boilerplate GObject/GType stuff. + * Init callback for the type system, + * called once when our new class is created. + * + *****************************************************************************/ + +static void +custom_list_class_init (CustomListClass * klass) +{ + GObjectClass *object_class; + + parent_class = (GObjectClass *) g_type_class_peek_parent (klass); + object_class = (GObjectClass *) klass; + + object_class->finalize = custom_list_finalize; +} + +/***************************************************************************** + * + * custom_list_tree_model_init: init callback for the interface registration + * in custom_list_get_type. Here we override + * the GtkTreeModel interface functions that + * we implement. + * + *****************************************************************************/ + +static void +custom_list_tree_model_init (GtkTreeModelIface * iface) +{ + iface->get_flags = custom_list_get_flags; + iface->get_n_columns = custom_list_get_n_columns; + iface->get_column_type = custom_list_get_column_type; + iface->get_iter = custom_list_get_iter; + iface->get_path = custom_list_get_path; + iface->get_value = custom_list_get_value; + iface->iter_next = custom_list_iter_next; + iface->iter_children = custom_list_iter_children; + iface->iter_has_child = custom_list_iter_has_child; + iface->iter_n_children = custom_list_iter_n_children; + iface->iter_nth_child = custom_list_iter_nth_child; + iface->iter_parent = custom_list_iter_parent; +} + + +/***************************************************************************** + * + * custom_list_init: this is called everytime a new custom list object + * instance is created (we do that in custom_list_new). + * Initialise the list structure's fields here. + * + *****************************************************************************/ + +static void +custom_list_init (CustomList * custom_list) +{ + custom_list->n_columns = CUSTOM_LIST_N_COLUMNS; + + custom_list->column_types[0] = G_TYPE_STRING; /* CUSTOM_LIST_COL_NAME */ + custom_list->column_types[1] = G_TYPE_UINT; /* CUSTOM_LIST_COL_USERS */ + custom_list->column_types[2] = G_TYPE_STRING; /* CUSTOM_LIST_COL_TOPIC */ + + custom_list->num_rows = 0; + custom_list->num_alloc = 0; + custom_list->rows = NULL; + + custom_list->sort_id = SORT_ID_CHANNEL; + custom_list->sort_order = GTK_SORT_ASCENDING; +} + + +/***************************************************************************** + * + * custom_list_finalize: this is called just before a custom list is + * destroyed. Free dynamically allocated memory here. + * + *****************************************************************************/ + +static void +custom_list_finalize (GObject * object) +{ + custom_list_clear (CUSTOM_LIST (object)); + + /* must chain up - finalize parent */ + (*parent_class->finalize) (object); +} + + +/***************************************************************************** + * + * custom_list_get_flags: tells the rest of the world whether our tree model + * has any special characteristics. In our case, + * we have a list model (instead of a tree), and each + * tree iter is valid as long as the row in question + * exists, as it only contains a pointer to our struct. + * + *****************************************************************************/ + +static GtkTreeModelFlags +custom_list_get_flags (GtkTreeModel * tree_model) +{ + return (GTK_TREE_MODEL_LIST_ONLY /*| GTK_TREE_MODEL_ITERS_PERSIST */ ); +} + + +/***************************************************************************** + * + * custom_list_get_n_columns: tells the rest of the world how many data + * columns we export via the tree model interface + * + *****************************************************************************/ + +static gint +custom_list_get_n_columns (GtkTreeModel * tree_model) +{ + return 3;/*CUSTOM_LIST (tree_model)->n_columns;*/ +} + + +/***************************************************************************** + * + * custom_list_get_column_type: tells the rest of the world which type of + * data an exported model column contains + * + *****************************************************************************/ + +static GType +custom_list_get_column_type (GtkTreeModel * tree_model, gint index) +{ + return CUSTOM_LIST (tree_model)->column_types[index]; +} + + +/***************************************************************************** + * + * custom_list_get_iter: converts a tree path (physical position) into a + * tree iter structure (the content of the iter + * fields will only be used internally by our model). + * We simply store a pointer to our chanlistrow + * structure that represents that row in the tree iter. + * + *****************************************************************************/ + +static gboolean +custom_list_get_iter (GtkTreeModel * tree_model, + GtkTreeIter * iter, GtkTreePath * path) +{ + CustomList *custom_list = CUSTOM_LIST (tree_model); + chanlistrow *record; + gint n; + + n = gtk_tree_path_get_indices (path)[0]; + if (n >= custom_list->num_rows || n < 0) + return FALSE; + + record = custom_list->rows[n]; + + /* We simply store a pointer to our custom record in the iter */ + iter->user_data = record; + + return TRUE; +} + + +/***************************************************************************** + * + * custom_list_get_path: converts a tree iter into a tree path (ie. the + * physical position of that row in the list). + * + *****************************************************************************/ + +static GtkTreePath * +custom_list_get_path (GtkTreeModel * tree_model, GtkTreeIter * iter) +{ + GtkTreePath *path; + chanlistrow *record; + + record = (chanlistrow *) iter->user_data; + + path = gtk_tree_path_new (); + gtk_tree_path_append_index (path, record->pos); + + return path; +} + + +/***************************************************************************** + * + * custom_list_get_value: Returns a row's exported data columns + * (_get_value is what gtk_tree_model_get uses) + * + *****************************************************************************/ + +static void +custom_list_get_value (GtkTreeModel * tree_model, + GtkTreeIter * iter, gint column, GValue * value) +{ + chanlistrow *record; + CustomList *custom_list = CUSTOM_LIST (tree_model); + + if (custom_list->num_rows == 0) + return; + + g_value_init (value, custom_list->column_types[column]); + + record = (chanlistrow *) iter->user_data; + + switch (column) + { + case CUSTOM_LIST_COL_NAME: + g_value_set_static_string (value, GET_CHAN (record)); + break; + + case CUSTOM_LIST_COL_USERS: + g_value_set_uint (value, record->users); + break; + + case CUSTOM_LIST_COL_TOPIC: + g_value_set_static_string (value, record->topic); + break; + } +} + + +/***************************************************************************** + * + * custom_list_iter_next: Takes an iter structure and sets it to point + * to the next row. + * + *****************************************************************************/ + +static gboolean +custom_list_iter_next (GtkTreeModel * tree_model, GtkTreeIter * iter) +{ + chanlistrow *record, *nextrecord; + CustomList *custom_list = CUSTOM_LIST (tree_model); + + record = (chanlistrow *) iter->user_data; + + /* Is this the last record in the list? */ + if ((record->pos + 1) >= custom_list->num_rows) + return FALSE; + + nextrecord = custom_list->rows[(record->pos + 1)]; + + g_assert (nextrecord != NULL); + g_assert (nextrecord->pos == (record->pos + 1)); + + iter->user_data = nextrecord; + + return TRUE; +} + + +/***************************************************************************** + * + * custom_list_iter_children: Returns TRUE or FALSE depending on whether + * the row specified by 'parent' has any children. + * If it has children, then 'iter' is set to + * point to the first child. Special case: if + * 'parent' is NULL, then the first top-level + * row should be returned if it exists. + * + *****************************************************************************/ + +static gboolean +custom_list_iter_children (GtkTreeModel * tree_model, + GtkTreeIter * iter, GtkTreeIter * parent) +{ + CustomList *custom_list = CUSTOM_LIST (tree_model); + + /* this is a list, nodes have no children */ + if (parent) + return FALSE; + + /* parent == NULL is a special case; we need to return the first top-level row */ + /* No rows => no first row */ + if (custom_list->num_rows == 0) + return FALSE; + + /* Set iter to first item in list */ + iter->user_data = custom_list->rows[0]; + + return TRUE; +} + + +/***************************************************************************** + * + * custom_list_iter_has_child: Returns TRUE or FALSE depending on whether + * the row specified by 'iter' has any children. + * We only have a list and thus no children. + * + *****************************************************************************/ + +static gboolean +custom_list_iter_has_child (GtkTreeModel * tree_model, GtkTreeIter * iter) +{ + return FALSE; +} + + +/***************************************************************************** + * + * custom_list_iter_n_children: Returns the number of children the row + * specified by 'iter' has. This is usually 0, + * as we only have a list and thus do not have + * any children to any rows. A special case is + * when 'iter' is NULL, in which case we need + * to return the number of top-level nodes, + * ie. the number of rows in our list. + * + *****************************************************************************/ + +static gint +custom_list_iter_n_children (GtkTreeModel * tree_model, GtkTreeIter * iter) +{ + CustomList *custom_list = CUSTOM_LIST (tree_model); + + /* special case: if iter == NULL, return number of top-level rows */ + if (!iter) + return custom_list->num_rows; + + return 0; /* otherwise, this is easy again for a list */ +} + + +/***************************************************************************** + * + * custom_list_iter_nth_child: If the row specified by 'parent' has any + * children, set 'iter' to the n-th child and + * return TRUE if it exists, otherwise FALSE. + * A special case is when 'parent' is NULL, in + * which case we need to set 'iter' to the n-th + * row if it exists. + * + *****************************************************************************/ + +static gboolean +custom_list_iter_nth_child (GtkTreeModel * tree_model, + GtkTreeIter * iter, GtkTreeIter * parent, gint n) +{ + CustomList *custom_list = CUSTOM_LIST (tree_model); + + /* a list has only top-level rows */ + if (parent) + return FALSE; + + /* special case: if parent == NULL, set iter to n-th top-level row */ + if (n >= custom_list->num_rows) + return FALSE; + + iter->user_data = custom_list->rows[n]; + return TRUE; +} + + +/***************************************************************************** + * + * custom_list_iter_parent: Point 'iter' to the parent node of 'child'. As + * we have a list and thus no children and no + * parents of children, we can just return FALSE. + * + *****************************************************************************/ + +static gboolean +custom_list_iter_parent (GtkTreeModel * tree_model, + GtkTreeIter * iter, GtkTreeIter * child) +{ + return FALSE; +} + +static gboolean +custom_list_sortable_get_sort_column_id (GtkTreeSortable * sortable, + gint * sort_col_id, + GtkSortType * order) +{ + CustomList *custom_list = CUSTOM_LIST (sortable); + + if (sort_col_id) + *sort_col_id = custom_list->sort_id; + + if (order) + *order = custom_list->sort_order; + + return TRUE; +} + + +static void +custom_list_sortable_set_sort_column_id (GtkTreeSortable * sortable, + gint sort_col_id, GtkSortType order) +{ + CustomList *custom_list = CUSTOM_LIST (sortable); + + if (custom_list->sort_id == sort_col_id + && custom_list->sort_order == order) + return; + + custom_list->sort_id = sort_col_id; + custom_list->sort_order = order; + + custom_list_resort (custom_list); + + /* emit "sort-column-changed" signal to tell any tree views + * that the sort column has changed (so the little arrow + * in the column header of the sort column is drawn + * in the right column) */ + + gtk_tree_sortable_sort_column_changed (sortable); +} + +static void +custom_list_sortable_set_sort_func (GtkTreeSortable * sortable, + gint sort_col_id, + GtkTreeIterCompareFunc sort_func, + gpointer user_data, + GtkDestroyNotify destroy_func) +{ +} + +static void +custom_list_sortable_set_default_sort_func (GtkTreeSortable * sortable, + GtkTreeIterCompareFunc sort_func, + gpointer user_data, + GtkDestroyNotify destroy_func) +{ +} + +static gboolean +custom_list_sortable_has_default_sort_func (GtkTreeSortable * sortable) +{ + return FALSE; +} + +/* fast as possible compare func for sorting. + TODO: If fast enough, use a unicode collation key and strcmp. */ + +#define TOSML(c) (((c) >= 'A' && (c) <= 'Z') ? (c) - 'A' + 'a' : (c)) + +static inline int +fast_ascii_stricmp (const char *s1, const char *s2) +{ + int c1, c2; + + while (*s1 && *s2) + { + c1 = (int) (unsigned char) TOSML (*s1); + c2 = (int) (unsigned char) TOSML (*s2); + if (c1 != c2) + return (c1 - c2); + s1++; + s2++; + } + + return (((int) (unsigned char) *s1) - ((int) (unsigned char) *s2)); +} + +static gint +custom_list_qsort_compare_func (chanlistrow ** a, chanlistrow ** b, + CustomList * custom_list) +{ + if (custom_list->sort_order == GTK_SORT_DESCENDING) + { + chanlistrow **tmp = a; + a = b; + b = tmp; + } + + if (custom_list->sort_id == SORT_ID_USERS) + { + return (*a)->users - (*b)->users; + } + + if (custom_list->sort_id == SORT_ID_TOPIC) + { + return fast_ascii_stricmp ((*a)->topic, (*b)->topic); + } + + return strcmp ((*a)->collation_key, (*b)->collation_key); +} + +/***************************************************************************** + * + * custom_list_new: This is what you use in your own code to create a + * new custom list tree model for you to use. + * + *****************************************************************************/ + +CustomList * +custom_list_new (void) +{ + return (CustomList *) g_object_new (CUSTOM_TYPE_LIST, NULL); +} + +void +custom_list_append (CustomList * custom_list, chanlistrow * newrecord) +{ + GtkTreeIter iter; + GtkTreePath *path; + gulong newsize; + guint pos; + + if (custom_list->num_rows >= custom_list->num_alloc) + { + custom_list->num_alloc += 64; + newsize = custom_list->num_alloc * sizeof (chanlistrow *); + custom_list->rows = g_realloc (custom_list->rows, newsize); + } + + /* TODO: Binary search insert? */ + + pos = custom_list->num_rows; + custom_list->rows[pos] = newrecord; + custom_list->num_rows++; + newrecord->pos = pos; + + /* inform the tree view and other interested objects + * (e.g. tree row references) that we have inserted + * a new row, and where it was inserted */ + + path = gtk_tree_path_new (); + gtk_tree_path_append_index (path, newrecord->pos); +/* custom_list_get_iter(GTK_TREE_MODEL(custom_list), &iter, path);*/ + iter.user_data = newrecord; + gtk_tree_model_row_inserted (GTK_TREE_MODEL (custom_list), path, &iter); + gtk_tree_path_free (path); +} + +void +custom_list_resort (CustomList * custom_list) +{ + GtkTreePath *path; + gint *neworder, i; + + if (custom_list->num_rows < 2) + return; + + /* resort */ + g_qsort_with_data (custom_list->rows, + custom_list->num_rows, + sizeof (chanlistrow *), + (GCompareDataFunc) custom_list_qsort_compare_func, + custom_list); + + /* let other objects know about the new order */ + neworder = malloc (sizeof (gint) * custom_list->num_rows); + + for (i = custom_list->num_rows - 1; i >= 0; i--) + { + /* Note that the API reference might be wrong about + * this, see bug number 124790 on bugs.gnome.org. + * Both will work, but one will give you 'jumpy' + * selections after row reordering. */ + /* neworder[(custom_list->rows[i])->pos] = i; */ + neworder[i] = (custom_list->rows[i])->pos; + (custom_list->rows[i])->pos = i; + } + + path = gtk_tree_path_new (); + gtk_tree_model_rows_reordered (GTK_TREE_MODEL (custom_list), path, NULL, + neworder); + gtk_tree_path_free (path); + free (neworder); +} + +void +custom_list_clear (CustomList * custom_list) +{ + int i, max = custom_list->num_rows - 1; + GtkTreePath *path; + + for (i = max; i >= 0; i--) + { + path = gtk_tree_path_new (); + gtk_tree_path_append_index (path, custom_list->rows[i]->pos); + gtk_tree_model_row_deleted (GTK_TREE_MODEL (custom_list), path); + gtk_tree_path_free (path); + } + + custom_list->num_rows = 0; + custom_list->num_alloc = 0; + + g_free (custom_list->rows); + custom_list->rows = NULL; +} diff --git a/xchat-2.8.8/src/fe-gtk/custom-list.h b/xchat-2.8.8/src/fe-gtk/custom-list.h new file mode 100644 index 0000000..d9e4f09 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/custom-list.h @@ -0,0 +1,85 @@ +#ifndef _custom_list_h_included_ +#define _custom_list_h_included_ + +#include <gtk/gtk.h> + +/* Some boilerplate GObject defines. 'klass' is used + * instead of 'class', because 'class' is a C++ keyword */ + +#define CUSTOM_TYPE_LIST (custom_list_get_type ()) +#define CUSTOM_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CUSTOM_TYPE_LIST, CustomList)) +#define CUSTOM_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CUSTOM_TYPE_LIST, CustomListClass)) +#define CUSTOM_IS_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CUSTOM_TYPE_LIST)) +#define CUSTOM_IS_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CUSTOM_TYPE_LIST)) +#define CUSTOM_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CUSTOM_TYPE_LIST, CustomListClass)) + +/* The data columns that we export via the tree model interface */ + +enum +{ + CUSTOM_LIST_COL_NAME, + CUSTOM_LIST_COL_USERS, + CUSTOM_LIST_COL_TOPIC, + CUSTOM_LIST_N_COLUMNS +}; + +enum +{ + SORT_ID_CHANNEL, + SORT_ID_USERS, + SORT_ID_TOPIC +}; + +typedef struct +{ + char *topic; + char *collation_key; + guint32 pos; /* pos within the array */ + guint32 users; + /* channel string lives beyond "users" */ +#define GET_CHAN(row) (((char *)row)+sizeof(chanlistrow)) +} +chanlistrow; + +typedef struct _CustomList CustomList; +typedef struct _CustomListClass CustomListClass; + + + +/* CustomList: this structure contains everything we need for our + * model implementation. You can add extra fields to + * this structure, e.g. hashtables to quickly lookup + * rows or whatever else you might need, but it is + * crucial that 'parent' is the first member of the + * structure. */ +struct _CustomList +{ + GObject parent; + + guint num_rows; /* number of rows that we have used */ + guint num_alloc; /* number of rows allocated */ + chanlistrow **rows; /* a dynamically allocated array of pointers to the + * CustomRecord structure for each row */ + + gint n_columns; + GType column_types[CUSTOM_LIST_N_COLUMNS]; + + gint sort_id; + GtkSortType sort_order; +}; + + +/* CustomListClass: more boilerplate GObject stuff */ + +struct _CustomListClass +{ + GObjectClass parent_class; +}; + + +CustomList *custom_list_new (void); +void custom_list_append (CustomList *, chanlistrow *); +void custom_list_resort (CustomList *); +void custom_list_clear (CustomList *); + +#endif /* _custom_list_h_included_ */ diff --git a/xchat-2.8.8/src/fe-gtk/dccgui.c b/xchat-2.8.8/src/fe-gtk/dccgui.c new file mode 100644 index 0000000..61f6d50 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/dccgui.c @@ -0,0 +1,1098 @@ +/* X-Chat + * Copyright (C) 1998-2006 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <time.h> + +#define WANTSOCKET +#define WANTARPA +#include "../common/inet.h" +#include "fe-gtk.h" + +#include <gtk/gtkhbbox.h> +#include <gtk/gtkhbox.h> +#include <gtk/gtklabel.h> +#include <gtk/gtkstock.h> +#include <gtk/gtkmessagedialog.h> +#include <gtk/gtktable.h> +#include <gtk/gtktreeview.h> +#include <gtk/gtkexpander.h> +#include <gtk/gtkliststore.h> +#include <gtk/gtktreeselection.h> +#include <gtk/gtkcellrendererpixbuf.h> +#include <gtk/gtkcellrenderertext.h> +#include <gtk/gtkcheckmenuitem.h> +#include <gtk/gtkradiobutton.h> +#include <gtk/gtkversion.h> + +#include "../common/xchat.h" +#include "../common/xchatc.h" +#include "../common/fe.h" +#include "../common/util.h" +#include "../common/network.h" +#include "gtkutil.h" +#include "palette.h" +#include "maingui.h" + + +enum /* DCC SEND/RECV */ +{ + COL_TYPE, + COL_STATUS, + COL_FILE, + COL_SIZE, + COL_POS, + COL_PERC, + COL_SPEED, + COL_ETA, + COL_NICK, + COL_DCC, /* struct DCC * */ + COL_COLOR, /* GdkColor */ + N_COLUMNS +}; + +enum /* DCC CHAT */ +{ + CCOL_STATUS, + CCOL_NICK, + CCOL_RECV, + CCOL_SENT, + CCOL_START, + CCOL_DCC, /* struct DCC * */ + CCOL_COLOR, /* GdkColor * */ + CN_COLUMNS +}; + +struct dccwindow +{ + GtkWidget *window; + + GtkWidget *list; + GtkListStore *store; + GtkTreeSelection *sel; + + GtkWidget *abort_button; + GtkWidget *accept_button; + GtkWidget *resume_button; + GtkWidget *open_button; + + GtkWidget *file_label; + GtkWidget *address_label; +}; + +struct my_dcc_send +{ + struct session *sess; + char *nick; + int maxcps; + int passive; +}; + +static struct dccwindow dccfwin = {NULL, }; /* file */ +static struct dccwindow dcccwin = {NULL, }; /* chat */ +static GdkPixbuf *pix_up = NULL; /* down arrow */ +static GdkPixbuf *pix_dn = NULL; /* up arrow */ +static int win_width = 600; +static int win_height = 256; +static short view_mode; /* 1=download 2=upload 3=both */ +#define VIEW_DOWNLOAD 1 +#define VIEW_UPLOAD 2 +#define VIEW_BOTH 3 + +#define KILOBYTE 1024 +#define MEGABYTE (KILOBYTE * 1024) +#define GIGABYTE (MEGABYTE * 1024) + + +static void +proper_unit (DCC_SIZE size, char *buf, int buf_len) +{ + if (size <= KILOBYTE) + { + snprintf (buf, buf_len, "%"DCC_SFMT"B", size); + } + else if (size > KILOBYTE && size <= MEGABYTE) + { + snprintf (buf, buf_len, "%"DCC_SFMT"kB", size / KILOBYTE); + } + else + { + snprintf (buf, buf_len, "%.2fMB", (float)size / MEGABYTE); + } +} + +static void +dcc_send_filereq_file (struct my_dcc_send *mdc, char *file) +{ + if (file) + dcc_send (mdc->sess, mdc->nick, file, mdc->maxcps, mdc->passive); + else + { + free (mdc->nick); + free (mdc); + } +} + +void +fe_dcc_send_filereq (struct session *sess, char *nick, int maxcps, int passive) +{ + char tbuf[128]; + struct my_dcc_send *mdc; + + mdc = malloc (sizeof (*mdc)); + mdc->sess = sess; + mdc->nick = strdup (nick); + mdc->maxcps = maxcps; + mdc->passive = passive; + + snprintf (tbuf, sizeof tbuf, _("Send file to %s"), nick); + gtkutil_file_req (tbuf, dcc_send_filereq_file, mdc, NULL, FRF_MULTIPLE); +} + +static void +dcc_prepare_row_chat (struct DCC *dcc, GtkListStore *store, GtkTreeIter *iter, + gboolean update_only) +{ + static char pos[16], siz[16]; + char *date; + + date = ctime (&dcc->starttime); + date[strlen (date) - 1] = 0; /* remove the \n */ + + proper_unit (dcc->pos, pos, sizeof (pos)); + proper_unit (dcc->size, siz, sizeof (siz)); + + gtk_list_store_set (store, iter, + CCOL_STATUS, _(dccstat[dcc->dccstat].name), + CCOL_NICK, dcc->nick, + CCOL_RECV, pos, + CCOL_SENT, siz, + CCOL_START, date, + CCOL_DCC, dcc, + CCOL_COLOR, + dccstat[dcc->dccstat].color == 1 ? + NULL : + colors + dccstat[dcc->dccstat].color, + -1); +} + +static void +dcc_prepare_row_send (struct DCC *dcc, GtkListStore *store, GtkTreeIter *iter, + gboolean update_only) +{ + static char pos[16], size[16], kbs[14], perc[14], eta[14]; + int to_go; + float per; + + if (!pix_up) + pix_up = gtk_widget_render_icon (dccfwin.window, "gtk-go-up", + GTK_ICON_SIZE_MENU, NULL); + + /* percentage ack'ed */ + per = (float) ((dcc->ack * 100.00) / dcc->size); + proper_unit (dcc->size, size, sizeof (size)); + proper_unit (dcc->pos, pos, sizeof (pos)); + snprintf (kbs, sizeof (kbs), "%.1f", ((float)dcc->cps) / 1024); +/* proper_unit (dcc->ack, ack, sizeof (ack));*/ + snprintf (perc, sizeof (perc), "%.0f%%", per); + if (dcc->cps != 0) + { + to_go = (dcc->size - dcc->ack) / dcc->cps; + snprintf (eta, sizeof (eta), "%.2d:%.2d:%.2d", + to_go / 3600, (to_go / 60) % 60, to_go % 60); + } else + strcpy (eta, "--:--:--"); + + if (update_only) + gtk_list_store_set (store, iter, + COL_STATUS, _(dccstat[dcc->dccstat].name), + COL_POS, pos, + COL_PERC, perc, + COL_SPEED, kbs, + COL_ETA, eta, + COL_COLOR, + dccstat[dcc->dccstat].color == 1 ? + NULL : + colors + dccstat[dcc->dccstat].color, + -1); + else + gtk_list_store_set (store, iter, + COL_TYPE, pix_up, + COL_STATUS, _(dccstat[dcc->dccstat].name), + COL_FILE, file_part (dcc->file), + COL_SIZE, size, + COL_POS, pos, + COL_PERC, perc, + COL_SPEED, kbs, + COL_ETA, eta, + COL_NICK, dcc->nick, + COL_DCC, dcc, + COL_COLOR, + dccstat[dcc->dccstat].color == 1 ? + NULL : + colors + dccstat[dcc->dccstat].color, + -1); +} + +static void +dcc_prepare_row_recv (struct DCC *dcc, GtkListStore *store, GtkTreeIter *iter, + gboolean update_only) +{ + static char size[16], pos[16], kbs[16], perc[14], eta[16]; + float per; + int to_go; + + if (!pix_dn) + pix_dn = gtk_widget_render_icon (dccfwin.window, "gtk-go-down", + GTK_ICON_SIZE_MENU, NULL); + + proper_unit (dcc->size, size, sizeof (size)); + if (dcc->dccstat == STAT_QUEUED) + proper_unit (dcc->resumable, pos, sizeof (pos)); + else + proper_unit (dcc->pos, pos, sizeof (pos)); + snprintf (kbs, sizeof (kbs), "%.1f", ((float)dcc->cps) / 1024); + /* percentage recv'ed */ + per = (float) ((dcc->pos * 100.00) / dcc->size); + snprintf (perc, sizeof (perc), "%.0f%%", per); + if (dcc->cps != 0) + { + to_go = (dcc->size - dcc->pos) / dcc->cps; + snprintf (eta, sizeof (eta), "%.2d:%.2d:%.2d", + to_go / 3600, (to_go / 60) % 60, to_go % 60); + } else + strcpy (eta, "--:--:--"); + + if (update_only) + gtk_list_store_set (store, iter, + COL_STATUS, _(dccstat[dcc->dccstat].name), + COL_POS, pos, + COL_PERC, perc, + COL_SPEED, kbs, + COL_ETA, eta, + COL_COLOR, + dccstat[dcc->dccstat].color == 1 ? + NULL : + colors + dccstat[dcc->dccstat].color, + -1); + else + gtk_list_store_set (store, iter, + COL_TYPE, pix_dn, + COL_STATUS, _(dccstat[dcc->dccstat].name), + COL_FILE, file_part (dcc->file), + COL_SIZE, size, + COL_POS, pos, + COL_PERC, perc, + COL_SPEED, kbs, + COL_ETA, eta, + COL_NICK, dcc->nick, + COL_DCC, dcc, + COL_COLOR, + dccstat[dcc->dccstat].color == 1 ? + NULL : + colors + dccstat[dcc->dccstat].color, + -1); +} + +static gboolean +dcc_find_row (struct DCC *find_dcc, GtkTreeModel *model, GtkTreeIter *iter, int col) +{ + struct DCC *dcc; + + if (gtk_tree_model_get_iter_first (model, iter)) + { + do + { + gtk_tree_model_get (model, iter, col, &dcc, -1); + if (dcc == find_dcc) + return TRUE; + } + while (gtk_tree_model_iter_next (model, iter)); + } + + return FALSE; +} + +static void +dcc_update_recv (struct DCC *dcc) +{ + GtkTreeIter iter; + + if (!dccfwin.window) + return; + + if (!dcc_find_row (dcc, GTK_TREE_MODEL (dccfwin.store), &iter, COL_DCC)) + return; + + dcc_prepare_row_recv (dcc, dccfwin.store, &iter, TRUE); +} + +static void +dcc_update_chat (struct DCC *dcc) +{ + GtkTreeIter iter; + + if (!dcccwin.window) + return; + + if (!dcc_find_row (dcc, GTK_TREE_MODEL (dcccwin.store), &iter, CCOL_DCC)) + return; + + dcc_prepare_row_chat (dcc, dcccwin.store, &iter, TRUE); +} + +static void +dcc_update_send (struct DCC *dcc) +{ + GtkTreeIter iter; + + if (!dccfwin.window) + return; + + if (!dcc_find_row (dcc, GTK_TREE_MODEL (dccfwin.store), &iter, COL_DCC)) + return; + + dcc_prepare_row_send (dcc, dccfwin.store, &iter, TRUE); +} + +static void +close_dcc_file_window (GtkWindow *win, gpointer data) +{ + dccfwin.window = NULL; +} + +static void +dcc_append (struct DCC *dcc, GtkListStore *store, gboolean prepend) +{ + GtkTreeIter iter; + + if (prepend) + gtk_list_store_prepend (store, &iter); + else + gtk_list_store_append (store, &iter); + + if (dcc->type == TYPE_RECV) + dcc_prepare_row_recv (dcc, store, &iter, FALSE); + else + dcc_prepare_row_send (dcc, store, &iter, FALSE); +} + +static void +dcc_fill_window (int flags) +{ + struct DCC *dcc; + GSList *list; + GtkTreeIter iter; + int i = 0; + + gtk_list_store_clear (GTK_LIST_STORE (dccfwin.store)); + + if (flags & VIEW_UPLOAD) + { + list = dcc_list; + while (list) + { + dcc = list->data; + if (dcc->type == TYPE_SEND) + { + dcc_append (dcc, dccfwin.store, FALSE); + i++; + } + list = list->next; + } + } + + if (flags & VIEW_DOWNLOAD) + { + list = dcc_list; + while (list) + { + dcc = list->data; + if (dcc->type == TYPE_RECV) + { + dcc_append (dcc, dccfwin.store, FALSE); + i++; + } + list = list->next; + } + } + + /* if only one entry, select it (so Accept button can work) */ + if (i == 1) + { + gtk_tree_model_get_iter_first (GTK_TREE_MODEL (dccfwin.store), &iter); + gtk_tree_selection_select_iter (dccfwin.sel, &iter); + } +} + +/* return list of selected DCCs */ + +static GSList * +treeview_get_selected (GtkTreeModel *model, GtkTreeSelection *sel, int column) +{ + GtkTreeIter iter; + GSList *list = NULL; + void *ptr; + + if (gtk_tree_model_get_iter_first (model, &iter)) + { + do + { + if (gtk_tree_selection_iter_is_selected (sel, &iter)) + { + gtk_tree_model_get (model, &iter, column, &ptr, -1); + list = g_slist_prepend (list, ptr); + } + } + while (gtk_tree_model_iter_next (model, &iter)); + } + + return g_slist_reverse (list); +} + +static GSList * +dcc_get_selected (void) +{ + return treeview_get_selected (GTK_TREE_MODEL (dccfwin.store), + dccfwin.sel, COL_DCC); +} + +static void +resume_clicked (GtkWidget * wid, gpointer none) +{ + struct DCC *dcc; + char buf[512]; + GSList *list; + + list = dcc_get_selected (); + if (!list) + return; + dcc = list->data; + g_slist_free (list); + + if (dcc->type == TYPE_RECV && !dcc_resume (dcc)) + { + switch (dcc->resume_error) + { + case 0: /* unknown error */ + fe_message (_("That file is not resumable."), FE_MSG_ERROR); + break; + case 1: + snprintf (buf, sizeof (buf), + _( "Cannot access file: %s\n" + "%s.\n" + "Resuming not possible."), dcc->destfile, + errorstring (dcc->resume_errno)); + fe_message (buf, FE_MSG_ERROR); + break; + case 2: + fe_message (_("File in download directory is larger " + "than file offered. Resuming not possible."), FE_MSG_ERROR); + break; + case 3: + fe_message (_("Cannot resume the same file from two people."), FE_MSG_ERROR); + } + } +} + +static void +abort_clicked (GtkWidget * wid, gpointer none) +{ + struct DCC *dcc; + GSList *start, *list; + + start = list = dcc_get_selected (); + for (; list; list = list->next) + { + dcc = list->data; + dcc_abort (dcc->serv->front_session, dcc); + } + g_slist_free (start); +} + +static void +accept_clicked (GtkWidget * wid, gpointer none) +{ + struct DCC *dcc; + GSList *start, *list; + + start = list = dcc_get_selected (); + for (; list; list = list->next) + { + dcc = list->data; + if (dcc->type != TYPE_SEND) + dcc_get (dcc); + } + g_slist_free (start); +} + +static void +browse_folder (char *dir) +{ +#ifdef WIN32 + /* no need for file:// in ShellExecute() */ + fe_open_url (dir); +#else + char buf[512]; + + snprintf (buf, sizeof (buf), "file://%s", dir); + fe_open_url (buf); +#endif +} + +static void +browse_dcc_folder (void) +{ + if (prefs.dcc_completed_dir[0]) + browse_folder (prefs.dcc_completed_dir); + else + browse_folder (prefs.dccdir); +} + +static void +dcc_details_populate (struct DCC *dcc) +{ + char buf[128]; + + if (!dcc) + { + gtk_label_set_text (GTK_LABEL (dccfwin.file_label), NULL); + gtk_label_set_text (GTK_LABEL (dccfwin.address_label), NULL); + return; + } + + /* full path */ + if (dcc->type == TYPE_RECV) + gtk_label_set_text (GTK_LABEL (dccfwin.file_label), dcc->destfile); + else + gtk_label_set_text (GTK_LABEL (dccfwin.file_label), dcc->file); + + /* address and port */ + snprintf (buf, sizeof (buf), "%s : %d", net_ip (dcc->addr), dcc->port); + gtk_label_set_text (GTK_LABEL (dccfwin.address_label), buf); +} + +static void +dcc_row_cb (GtkTreeSelection *sel, gpointer user_data) +{ + struct DCC *dcc; + GSList *list; + + list = dcc_get_selected (); + if (!list) + { + gtk_widget_set_sensitive (dccfwin.accept_button, FALSE); + gtk_widget_set_sensitive (dccfwin.resume_button, FALSE); + gtk_widget_set_sensitive (dccfwin.abort_button, FALSE); + dcc_details_populate (NULL); + return; + } + + gtk_widget_set_sensitive (dccfwin.abort_button, TRUE); + + if (list->next) /* multi selection */ + { + gtk_widget_set_sensitive (dccfwin.accept_button, TRUE); + gtk_widget_set_sensitive (dccfwin.resume_button, TRUE); + dcc_details_populate (list->data); + } + else + { + /* turn OFF/ON appropriate buttons */ + dcc = list->data; + if (dcc->dccstat == STAT_QUEUED && dcc->type == TYPE_RECV) + { + gtk_widget_set_sensitive (dccfwin.accept_button, TRUE); + gtk_widget_set_sensitive (dccfwin.resume_button, TRUE); + } + else + { + gtk_widget_set_sensitive (dccfwin.accept_button, FALSE); + gtk_widget_set_sensitive (dccfwin.resume_button, FALSE); + } + + dcc_details_populate (dcc); + } + + g_slist_free (list); +} + +static void +dcc_dclick_cb (GtkTreeView *view, GtkTreePath *path, + GtkTreeViewColumn *column, gpointer data) +{ + struct DCC *dcc; + GSList *list; + + list = dcc_get_selected (); + if (!list) + return; + dcc = list->data; + g_slist_free (list); + + if (dcc->type == TYPE_RECV) + { + accept_clicked (0, 0); + return; + } + + switch (dcc->dccstat) + { + case STAT_FAILED: + case STAT_ABORTED: + case STAT_DONE: + dcc_abort (dcc->serv->front_session, dcc); + } +} + +static void +dcc_add_column (GtkWidget *tree, int textcol, int colorcol, char *title, gboolean right_justified) +{ + GtkCellRenderer *renderer; + + renderer = gtk_cell_renderer_text_new (); + if (right_justified) + g_object_set (G_OBJECT (renderer), "xalign", (float) 1.0, NULL); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree), -1, title, renderer, + "text", textcol, "foreground-gdk", colorcol, + NULL); + gtk_cell_renderer_text_set_fixed_height_from_font (GTK_CELL_RENDERER_TEXT (renderer), 1); +} + +static GtkWidget * +dcc_detail_label (char *text, GtkWidget *box, int num) +{ + GtkWidget *label; + char buf[64]; + + label = gtk_label_new (NULL); + snprintf (buf, sizeof (buf), "<b>%s</b>", text); + gtk_label_set_markup (GTK_LABEL (label), buf); + gtk_misc_set_alignment (GTK_MISC (label), 0, 0); + gtk_table_attach (GTK_TABLE (box), label, 0, 1, 0 + num, 1 + num, GTK_FILL, GTK_FILL, 0, 0); + + label = gtk_label_new (NULL); + gtk_label_set_selectable (GTK_LABEL (label), TRUE); + gtk_misc_set_alignment (GTK_MISC (label), 0, 0); + gtk_table_attach (GTK_TABLE (box), label, 1, 2, 0 + num, 1 + num, GTK_FILL, GTK_FILL, 0, 0); + + return label; +} + +static void +dcc_exp_cb (GtkWidget *exp, GtkWidget *box) +{ +#if GTK_CHECK_VERSION(2,20,0) + if (gtk_widget_get_visible (box)) +#else + if (GTK_WIDGET_VISIBLE (box)) +#endif + gtk_widget_hide (box); + else + gtk_widget_show (box); +} + +static void +dcc_toggle (GtkWidget *item, gpointer data) +{ + if (GTK_TOGGLE_BUTTON (item)->active) + { + view_mode = GPOINTER_TO_INT (data); + dcc_fill_window (GPOINTER_TO_INT (data)); + } +} + +static gboolean +dcc_configure_cb (GtkWindow *win, GdkEventConfigure *event, gpointer data) +{ + /* remember the window size */ + gtk_window_get_size (win, &win_width, &win_height); + return FALSE; +} + +int +fe_dcc_open_recv_win (int passive) +{ + GtkWidget *radio, *table, *vbox, *bbox, *view, *exp, *detailbox; + GtkListStore *store; + GSList *group; + + if (dccfwin.window) + { + if (!passive) + mg_bring_tofront (dccfwin.window); + return TRUE; + } + dccfwin.window = mg_create_generic_tab ("Transfers", _("XChat: Uploads and Downloads"), + FALSE, TRUE, close_dcc_file_window, NULL, + win_width, win_height, &vbox, 0); + gtk_container_set_border_width (GTK_CONTAINER (dccfwin.window), 3); + gtk_box_set_spacing (GTK_BOX (vbox), 3); + + store = gtk_list_store_new (N_COLUMNS, GDK_TYPE_PIXBUF, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_POINTER, GDK_TYPE_COLOR); + view = gtkutil_treeview_new (vbox, GTK_TREE_MODEL (store), NULL, -1); + gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (view), TRUE); + /* Up/Down Icon column */ + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), -1, NULL, + gtk_cell_renderer_pixbuf_new (), + "pixbuf", COL_TYPE, NULL); + dcc_add_column (view, COL_STATUS, COL_COLOR, _("Status"), FALSE); + dcc_add_column (view, COL_FILE, COL_COLOR, _("File"), FALSE); + dcc_add_column (view, COL_SIZE, COL_COLOR, _("Size"), TRUE); + dcc_add_column (view, COL_POS, COL_COLOR, _("Position"), TRUE); + dcc_add_column (view, COL_PERC, COL_COLOR, "%", TRUE); + dcc_add_column (view, COL_SPEED, COL_COLOR, "KB/s", TRUE); + dcc_add_column (view, COL_ETA, COL_COLOR, _("ETA"), FALSE); + dcc_add_column (view, COL_NICK, COL_COLOR, _("Nick"), FALSE); + + gtk_tree_view_column_set_expand (gtk_tree_view_get_column (GTK_TREE_VIEW (view), COL_FILE), TRUE); + gtk_tree_view_column_set_expand (gtk_tree_view_get_column (GTK_TREE_VIEW (view), COL_NICK), TRUE); + + dccfwin.list = view; + dccfwin.store = store; + dccfwin.sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (view)); + view_mode = VIEW_BOTH; + gtk_tree_selection_set_mode (dccfwin.sel, GTK_SELECTION_MULTIPLE); + + if (!prefs.windows_as_tabs) + g_signal_connect (G_OBJECT (dccfwin.window), "configure_event", + G_CALLBACK (dcc_configure_cb), 0); + g_signal_connect (G_OBJECT (dccfwin.sel), "changed", + G_CALLBACK (dcc_row_cb), NULL); + /* double click */ + g_signal_connect (G_OBJECT (view), "row-activated", + G_CALLBACK (dcc_dclick_cb), NULL); + + table = gtk_table_new (1, 3, FALSE); + gtk_table_set_col_spacings (GTK_TABLE (table), 16); + gtk_box_pack_start (GTK_BOX (vbox), table, 0, 0, 0); + + radio = gtk_radio_button_new_with_mnemonic (NULL, _("Both")); + g_signal_connect (G_OBJECT (radio), "toggled", + G_CALLBACK (dcc_toggle), GINT_TO_POINTER (VIEW_BOTH)); + gtk_table_attach (GTK_TABLE (table), radio, 3, 4, 0, 1, GTK_FILL, GTK_FILL, 0, 0); + group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio)); + + radio = gtk_radio_button_new_with_mnemonic (group, _("Uploads")); + g_signal_connect (G_OBJECT (radio), "toggled", + G_CALLBACK (dcc_toggle), GINT_TO_POINTER (VIEW_UPLOAD)); + gtk_table_attach (GTK_TABLE (table), radio, 1, 2, 0, 1, GTK_FILL, GTK_FILL, 0, 0); + group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio)); + + radio = gtk_radio_button_new_with_mnemonic (group, _("Downloads")); + g_signal_connect (G_OBJECT (radio), "toggled", + G_CALLBACK (dcc_toggle), GINT_TO_POINTER (VIEW_DOWNLOAD)); + gtk_table_attach (GTK_TABLE (table), radio, 2, 3, 0, 1, GTK_FILL, GTK_FILL, 0, 0); + + exp = gtk_expander_new (_("Details")); + gtk_table_attach (GTK_TABLE (table), exp, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0); + + detailbox = gtk_table_new (3, 3, FALSE); + gtk_table_set_col_spacings (GTK_TABLE (detailbox), 6); + gtk_table_set_row_spacings (GTK_TABLE (detailbox), 2); + gtk_container_set_border_width (GTK_CONTAINER (detailbox), 6); + g_signal_connect (G_OBJECT (exp), "activate", + G_CALLBACK (dcc_exp_cb), detailbox); + gtk_table_attach (GTK_TABLE (table), detailbox, 0, 4, 1, 2, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0); + + dccfwin.file_label = dcc_detail_label (_("File:"), detailbox, 0); + dccfwin.address_label = dcc_detail_label (_("Address:"), detailbox, 1); + + bbox = gtk_hbutton_box_new (); + gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_SPREAD); + gtk_box_pack_end (GTK_BOX (vbox), bbox, FALSE, FALSE, 2); + + dccfwin.abort_button = gtkutil_button (bbox, GTK_STOCK_CANCEL, 0, abort_clicked, 0, _("Abort")); + dccfwin.accept_button = gtkutil_button (bbox, GTK_STOCK_APPLY, 0, accept_clicked, 0, _("Accept")); + dccfwin.resume_button = gtkutil_button (bbox, GTK_STOCK_REFRESH, 0, resume_clicked, 0, _("Resume")); + dccfwin.open_button = gtkutil_button (bbox, 0, 0, browse_dcc_folder, 0, _("Open Folder...")); + gtk_widget_set_sensitive (dccfwin.accept_button, FALSE); + gtk_widget_set_sensitive (dccfwin.resume_button, FALSE); + gtk_widget_set_sensitive (dccfwin.abort_button, FALSE); + + dcc_fill_window (3); + gtk_widget_show_all (dccfwin.window); + gtk_widget_hide (detailbox); + + return FALSE; +} + +int +fe_dcc_open_send_win (int passive) +{ + /* combined send/recv GUI */ + return fe_dcc_open_recv_win (passive); +} + + +/* DCC CHAT GUIs BELOW */ + +static GSList * +dcc_chat_get_selected (void) +{ + return treeview_get_selected (GTK_TREE_MODEL (dcccwin.store), + dcccwin.sel, CCOL_DCC); +} + +static void +accept_chat_clicked (GtkWidget * wid, gpointer none) +{ + struct DCC *dcc; + GSList *start, *list; + + start = list = dcc_chat_get_selected (); + for (; list; list = list->next) + { + dcc = list->data; + dcc_get (dcc); + } + g_slist_free (start); +} + +static void +abort_chat_clicked (GtkWidget * wid, gpointer none) +{ + struct DCC *dcc; + GSList *start, *list; + + start = list = dcc_chat_get_selected (); + for (; list; list = list->next) + { + dcc = list->data; + dcc_abort (dcc->serv->front_session, dcc); + } + g_slist_free (start); +} + +static void +dcc_chat_close_cb (void) +{ + dcccwin.window = NULL; +} + +static void +dcc_chat_append (struct DCC *dcc, GtkListStore *store, gboolean prepend) +{ + GtkTreeIter iter; + + if (prepend) + gtk_list_store_prepend (store, &iter); + else + gtk_list_store_append (store, &iter); + + dcc_prepare_row_chat (dcc, store, &iter, FALSE); +} + +static void +dcc_chat_fill_win (void) +{ + struct DCC *dcc; + GSList *list; + GtkTreeIter iter; + int i = 0; + + gtk_list_store_clear (GTK_LIST_STORE (dcccwin.store)); + + list = dcc_list; + while (list) + { + dcc = list->data; + if (dcc->type == TYPE_CHATSEND || dcc->type == TYPE_CHATRECV) + { + dcc_chat_append (dcc, dcccwin.store, FALSE); + i++; + } + list = list->next; + } + + /* if only one entry, select it (so Accept button can work) */ + if (i == 1) + { + gtk_tree_model_get_iter_first (GTK_TREE_MODEL (dcccwin.store), &iter); + gtk_tree_selection_select_iter (dcccwin.sel, &iter); + } +} + +static void +dcc_chat_row_cb (GtkTreeSelection *sel, gpointer user_data) +{ + struct DCC *dcc; + GSList *list; + + list = dcc_chat_get_selected (); + if (!list) + { + gtk_widget_set_sensitive (dcccwin.accept_button, FALSE); + gtk_widget_set_sensitive (dcccwin.abort_button, FALSE); + return; + } + + gtk_widget_set_sensitive (dcccwin.abort_button, TRUE); + + if (list->next) /* multi selection */ + gtk_widget_set_sensitive (dcccwin.accept_button, TRUE); + else + { + /* turn OFF/ON appropriate buttons */ + dcc = list->data; + if (dcc->dccstat == STAT_QUEUED && dcc->type == TYPE_CHATRECV) + gtk_widget_set_sensitive (dcccwin.accept_button, TRUE); + else + gtk_widget_set_sensitive (dcccwin.accept_button, FALSE); + } + + g_slist_free (list); +} + +static void +dcc_chat_dclick_cb (GtkTreeView *view, GtkTreePath *path, + GtkTreeViewColumn *column, gpointer data) +{ + accept_chat_clicked (0, 0); +} + +int +fe_dcc_open_chat_win (int passive) +{ + GtkWidget *view, *vbox, *bbox; + GtkListStore *store; + + if (dcccwin.window) + { + if (!passive) + mg_bring_tofront (dcccwin.window); + return TRUE; + } + + dcccwin.window = + mg_create_generic_tab ("DCCChat", _("XChat: DCC Chat List"), + FALSE, TRUE, dcc_chat_close_cb, NULL, 550, 180, &vbox, 0); + gtk_container_set_border_width (GTK_CONTAINER (dcccwin.window), 3); + gtk_box_set_spacing (GTK_BOX (vbox), 3); + + store = gtk_list_store_new (CN_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_POINTER, GDK_TYPE_COLOR); + view = gtkutil_treeview_new (vbox, GTK_TREE_MODEL (store), NULL, -1); + + dcc_add_column (view, CCOL_STATUS, CCOL_COLOR, _("Status"), FALSE); + dcc_add_column (view, CCOL_NICK, CCOL_COLOR, _("Nick"), FALSE); + dcc_add_column (view, CCOL_RECV, CCOL_COLOR, _("Recv"), TRUE); + dcc_add_column (view, CCOL_SENT, CCOL_COLOR, _("Sent"), TRUE); + dcc_add_column (view, CCOL_START, CCOL_COLOR, _("Start Time"), FALSE); + + gtk_tree_view_column_set_expand (gtk_tree_view_get_column (GTK_TREE_VIEW (view), 1), TRUE); + gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (view), TRUE); + + dcccwin.list = view; + dcccwin.store = store; + dcccwin.sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (view)); + gtk_tree_selection_set_mode (dcccwin.sel, GTK_SELECTION_MULTIPLE); + + g_signal_connect (G_OBJECT (dcccwin.sel), "changed", + G_CALLBACK (dcc_chat_row_cb), NULL); + /* double click */ + g_signal_connect (G_OBJECT (view), "row-activated", + G_CALLBACK (dcc_chat_dclick_cb), NULL); + + bbox = gtk_hbutton_box_new (); + gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_SPREAD); + gtk_box_pack_end (GTK_BOX (vbox), bbox, FALSE, FALSE, 2); + + dcccwin.abort_button = gtkutil_button (bbox, GTK_STOCK_CANCEL, 0, abort_chat_clicked, 0, _("Abort")); + dcccwin.accept_button = gtkutil_button (bbox, GTK_STOCK_APPLY, 0, accept_chat_clicked, 0, _("Accept")); + gtk_widget_set_sensitive (dcccwin.accept_button, FALSE); + gtk_widget_set_sensitive (dcccwin.abort_button, FALSE); + + dcc_chat_fill_win (); + gtk_widget_show_all (dcccwin.window); + + return FALSE; +} + +void +fe_dcc_add (struct DCC *dcc) +{ + switch (dcc->type) + { + case TYPE_RECV: + if (dccfwin.window && (view_mode & VIEW_DOWNLOAD)) + dcc_append (dcc, dccfwin.store, TRUE); + break; + + case TYPE_SEND: + if (dccfwin.window && (view_mode & VIEW_UPLOAD)) + dcc_append (dcc, dccfwin.store, TRUE); + break; + + default: /* chat */ + if (dcccwin.window) + dcc_chat_append (dcc, dcccwin.store, TRUE); + } +} + +void +fe_dcc_update (struct DCC *dcc) +{ + switch (dcc->type) + { + case TYPE_SEND: + dcc_update_send (dcc); + break; + + case TYPE_RECV: + dcc_update_recv (dcc); + break; + + default: + dcc_update_chat (dcc); + } +} + +void +fe_dcc_remove (struct DCC *dcc) +{ + GtkTreeIter iter; + + switch (dcc->type) + { + case TYPE_SEND: + case TYPE_RECV: + if (dccfwin.window) + { + if (dcc_find_row (dcc, GTK_TREE_MODEL (dccfwin.store), &iter, COL_DCC)) + gtk_list_store_remove (dccfwin.store, &iter); + } + break; + + default: /* chat */ + if (dcccwin.window) + { + if (dcc_find_row (dcc, GTK_TREE_MODEL (dcccwin.store), &iter, CCOL_DCC)) + gtk_list_store_remove (dcccwin.store, &iter); + } + break; + } +} diff --git a/xchat-2.8.8/src/fe-gtk/editlist.c b/xchat-2.8.8/src/fe-gtk/editlist.c new file mode 100644 index 0000000..5af67e3 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/editlist.c @@ -0,0 +1,409 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <fcntl.h> +#include <sys/types.h> +#include <sys/stat.h> +#include "fe-gtk.h" + +#include <gtk/gtkstock.h> +#include <gtk/gtkentry.h> +#include <gtk/gtkclist.h> +#include <gtk/gtkhbox.h> +#include <gtk/gtkvseparator.h> + +#include "../common/xchat.h" +#include "../common/cfgfiles.h" +#include "../common/xchatc.h" +#include "../common/fe.h" +#include "menu.h" +#include "gtkutil.h" +#include "maingui.h" +#include "editlist.h" + + +static GtkWidget *editlist_gui_entry_name; +static GtkWidget *editlist_gui_entry_cmd; +static GtkWidget *editlist_gui_window; +static GtkWidget *editlist_gui_list; +static GSList *editlist_list; +static char *editlist_file; +static char *editlist_help; + + + +static void +editlist_gui_load (GtkWidget * listgad) +{ + gchar *nnew[2]; + GSList *list = editlist_list; + struct popup *pop; + + while (list) + { + pop = (struct popup *) list->data; + nnew[0] = pop->name; + nnew[1] = pop->cmd; + gtk_clist_append (GTK_CLIST (listgad), nnew); + list = list->next; + } +} + +static void +editlist_gui_row_unselected (GtkWidget * clist, gint row, gint column, + GdkEventButton * even, gpointer none) +{ + gtk_entry_set_text (GTK_ENTRY (editlist_gui_entry_name), ""); + gtk_entry_set_text (GTK_ENTRY (editlist_gui_entry_cmd), ""); +} + +static void +editlist_gui_row_selected (GtkWidget * clist, gint row, gint column, + GdkEventButton * even, gpointer none) +{ + char *name, *cmd; + + row = gtkutil_clist_selection (editlist_gui_list); + if (row != -1) + { + gtk_clist_get_text (GTK_CLIST (clist), row, 0, &name); + gtk_clist_get_text (GTK_CLIST (clist), row, 1, &cmd); + + name = strdup (name); + cmd = strdup (cmd); + + gtk_entry_set_text (GTK_ENTRY (editlist_gui_entry_name), name); + gtk_entry_set_text (GTK_ENTRY (editlist_gui_entry_cmd), cmd); + + free (name); + free (cmd); + } else + { + editlist_gui_row_unselected (0, 0, 0, 0, 0); + } +} + +static void +editlist_gui_handle_cmd (GtkWidget * igad) +{ + int row; + const char *reply; + + row = gtkutil_clist_selection (editlist_gui_list); + if (row != -1) + { + reply = gtk_entry_get_text (GTK_ENTRY (igad)); + gtk_clist_set_text (GTK_CLIST (editlist_gui_list), row, 1, reply); + } +} + +static void +editlist_gui_handle_name (GtkWidget * igad) +{ + int row; + const char *ctcp; + + row = gtkutil_clist_selection (editlist_gui_list); + if (row != -1) + { + ctcp = gtk_entry_get_text (GTK_ENTRY (igad)); + gtk_clist_set_text (GTK_CLIST (editlist_gui_list), row, 0, ctcp); + } +} + +static void +editlist_gui_addnew (GtkWidget * igad) +{ + int i; + gchar *nnew[2]; + + nnew[0] = _("*NEW*"); + nnew[1] = _("EDIT ME"); + + i = gtk_clist_append (GTK_CLIST (editlist_gui_list), nnew); + gtk_clist_select_row (GTK_CLIST (editlist_gui_list), i, 0); + gtk_clist_moveto (GTK_CLIST (editlist_gui_list), i, 0, 0.5, 0); +} + +static void +editlist_gui_delete (GtkWidget * igad) +{ + int row; + + row = gtkutil_clist_selection (editlist_gui_list); + if (row != -1) + { + gtk_clist_unselect_all (GTK_CLIST (editlist_gui_list)); + gtk_clist_remove (GTK_CLIST (editlist_gui_list), row); + } +} + +static void +editlist_gui_save (GtkWidget * igad) +{ + int fh, i = 0; + char buf[512]; + char *a, *b; + + fh = xchat_open_file (editlist_file, O_TRUNC | O_WRONLY | O_CREAT, 0600, XOF_DOMODE); + if (fh != -1) + { + while (1) + { + if (!gtk_clist_get_text (GTK_CLIST (editlist_gui_list), i, 0, &a)) + break; + gtk_clist_get_text (GTK_CLIST (editlist_gui_list), i, 1, &b); + snprintf (buf, sizeof (buf), "NAME %s\nCMD %s\n\n", a, b); + write (fh, buf, strlen (buf)); + i++; + } + close (fh); + gtk_widget_destroy (editlist_gui_window); + if (editlist_list == replace_list) + { + list_free (&replace_list); + list_loadconf (editlist_file, &replace_list, 0); + } else if (editlist_list == popup_list) + { + list_free (&popup_list); + list_loadconf (editlist_file, &popup_list, 0); + } else if (editlist_list == button_list) + { + GSList *list = sess_list; + struct session *sess; + list_free (&button_list); + list_loadconf (editlist_file, &button_list, 0); + while (list) + { + sess = (struct session *) list->data; + fe_buttons_update (sess); + list = list->next; + } + } else if (editlist_list == dlgbutton_list) + { + GSList *list = sess_list; + struct session *sess; + list_free (&dlgbutton_list); + list_loadconf (editlist_file, &dlgbutton_list, 0); + while (list) + { + sess = (struct session *) list->data; + fe_dlgbuttons_update (sess); + list = list->next; + } + } else if (editlist_list == ctcp_list) + { + list_free (&ctcp_list); + list_loadconf (editlist_file, &ctcp_list, 0); + } else if (editlist_list == command_list) + { + list_free (&command_list); + list_loadconf (editlist_file, &command_list, 0); + } else if (editlist_list == usermenu_list) + { + list_free (&usermenu_list); + list_loadconf (editlist_file, &usermenu_list, 0); + usermenu_update (); + } else + { + list_free (&urlhandler_list); + list_loadconf (editlist_file, &urlhandler_list, 0); + } + } +} + +static void +editlist_gui_help (GtkWidget * igad) +{ +/* if (editlist_help)*/ + fe_message (editlist_help, FE_MSG_INFO); +} + +static void +editlist_gui_sort (GtkWidget * igad) +{ + int row; + + row = gtkutil_clist_selection (editlist_gui_list); + if (row != -1) + gtk_clist_unselect_row (GTK_CLIST (editlist_gui_list), row, 0); + gtk_clist_sort (GTK_CLIST (editlist_gui_list)); +} + +static void +editlist_gui_movedown (GtkWidget * igad) +{ + int row; + char *temp; + + row = gtkutil_clist_selection (editlist_gui_list); + if (row != -1) + { + if (!gtk_clist_get_text (GTK_CLIST (editlist_gui_list), row + 1, 0, &temp)) + return; + gtk_clist_freeze (GTK_CLIST (editlist_gui_list)); + gtk_clist_swap_rows (GTK_CLIST (editlist_gui_list), row, row + 1); + gtk_clist_thaw (GTK_CLIST (editlist_gui_list)); + row++; + if (!gtk_clist_row_is_visible (GTK_CLIST (editlist_gui_list), row) != + GTK_VISIBILITY_FULL) + gtk_clist_moveto (GTK_CLIST (editlist_gui_list), row, 0, 0.9, 0); + } +} + +static void +editlist_gui_moveup (GtkWidget * igad) +{ + int row; + + row = gtkutil_clist_selection (editlist_gui_list); + if (row != -1 && row > 0) + { + gtk_clist_freeze (GTK_CLIST (editlist_gui_list)); + gtk_clist_swap_rows (GTK_CLIST (editlist_gui_list), row - 1, row); + gtk_clist_thaw (GTK_CLIST (editlist_gui_list)); + row--; + if (gtk_clist_row_is_visible (GTK_CLIST (editlist_gui_list), row) != + GTK_VISIBILITY_FULL) + gtk_clist_moveto (GTK_CLIST (editlist_gui_list), row, 0, 0.1, 0); + } +} + +static void +editlist_gui_close (void) +{ + editlist_gui_window = 0; +} + +void +editlist_gui_open (char *title1, char *title2, GSList * list, char *title, char *wmclass, + char *file, char *help) +{ + gchar *titles[2]; + GtkWidget *vbox, *hbox, *button; + + if (title1) + { + titles[0] = title1; + titles[1] = title2; + } else + { + titles[0] = _("Name"); + titles[1] = _("Command"); + } + + if (editlist_gui_window) + { + mg_bring_tofront (editlist_gui_window); + return; + } + + editlist_list = list; + editlist_file = file; + editlist_help = help; + + editlist_gui_window = + mg_create_generic_tab (wmclass, title, TRUE, FALSE, + editlist_gui_close, NULL, 450, 250, &vbox, 0); + + editlist_gui_list = gtkutil_clist_new (2, titles, vbox, GTK_POLICY_ALWAYS, + editlist_gui_row_selected, 0, + editlist_gui_row_unselected, 0, + GTK_SELECTION_BROWSE); + gtk_clist_set_column_width (GTK_CLIST (editlist_gui_list), 0, 90); + + hbox = gtk_hbox_new (0, 2); + gtk_box_pack_end (GTK_BOX (vbox), hbox, 0, 0, 0); + gtk_widget_show (hbox); + + button = gtkutil_button (hbox, GTK_STOCK_GO_UP, 0, editlist_gui_moveup, + 0, _("Move Up")); + gtk_widget_set_usize (button, 100, 0); + + button = gtkutil_button (hbox, GTK_STOCK_GO_DOWN, 0, editlist_gui_movedown, + 0, _("Move Dn")); + gtk_widget_set_usize (button, 100, 0); + + button = gtk_vseparator_new (); + gtk_container_add (GTK_CONTAINER (hbox), button); + gtk_widget_show (button); + + button = gtkutil_button (hbox, GTK_STOCK_CANCEL, 0, gtkutil_destroy, + editlist_gui_window, _("Cancel")); + gtk_widget_set_usize (button, 100, 0); + + button = gtkutil_button (hbox, GTK_STOCK_SAVE, 0, editlist_gui_save, + 0, _("Save")); + gtk_widget_set_usize (button, 100, 0); + + hbox = gtk_hbox_new (0, 2); + gtk_box_pack_end (GTK_BOX (vbox), hbox, 0, 0, 0); + gtk_widget_show (hbox); + + button = gtkutil_button (hbox, GTK_STOCK_ADD, 0, editlist_gui_addnew, + 0, _("Add New")); + gtk_widget_set_usize (button, 100, 0); + + button = gtkutil_button (hbox, GTK_STOCK_REMOVE, 0, editlist_gui_delete, + 0, _("Delete")); + gtk_widget_set_usize (button, 100, 0); + + button = gtk_vseparator_new (); + gtk_container_add (GTK_CONTAINER (hbox), button); + gtk_widget_show (button); + + button = gtkutil_button (hbox, GTK_STOCK_SORT_ASCENDING, 0, editlist_gui_sort, + 0, _("Sort")); + gtk_widget_set_usize (button, 100, 0); + + button = gtkutil_button (hbox, GTK_STOCK_HELP, 0, editlist_gui_help, + 0, _("Help")); + gtk_widget_set_usize (button, 100, 0); + + if (!help) + gtk_widget_set_sensitive (GTK_WIDGET (button), FALSE); + + hbox = gtk_hbox_new (0, 2); + gtk_box_pack_end (GTK_BOX (vbox), hbox, 0, 0, 0); + gtk_widget_show (hbox); + + editlist_gui_entry_name = gtk_entry_new_with_max_length (82); + gtk_widget_set_usize (editlist_gui_entry_name, 96, 0); + gtk_signal_connect (GTK_OBJECT (editlist_gui_entry_name), "changed", + GTK_SIGNAL_FUNC (editlist_gui_handle_name), 0); + gtk_box_pack_start (GTK_BOX (hbox), editlist_gui_entry_name, 0, 0, 0); + gtk_widget_show (editlist_gui_entry_name); + + editlist_gui_entry_cmd = gtk_entry_new_with_max_length (255); + gtk_signal_connect (GTK_OBJECT (editlist_gui_entry_cmd), "changed", + GTK_SIGNAL_FUNC (editlist_gui_handle_cmd), 0); + gtk_container_add (GTK_CONTAINER (hbox), editlist_gui_entry_cmd); + gtk_widget_show (editlist_gui_entry_cmd); + + hbox = gtk_hbox_new (0, 2); + gtk_box_pack_end (GTK_BOX (vbox), hbox, 0, 0, 0); + gtk_widget_show (hbox); + + editlist_gui_load (editlist_gui_list); + + gtk_widget_show (editlist_gui_window); +} diff --git a/xchat-2.8.8/src/fe-gtk/editlist.h b/xchat-2.8.8/src/fe-gtk/editlist.h new file mode 100644 index 0000000..f17cc2e --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/editlist.h @@ -0,0 +1 @@ +void editlist_gui_open (char *title1, char *title2, GSList * list, char *title, char *wmclass, char *file, char *help); diff --git a/xchat-2.8.8/src/fe-gtk/fe-gtk.c b/xchat-2.8.8/src/fe-gtk/fe-gtk.c new file mode 100644 index 0000000..251a7d7 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/fe-gtk.c @@ -0,0 +1,1059 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <unistd.h> + +#include "fe-gtk.h" + +#include <gtk/gtkmain.h> +#include <gtk/gtkentry.h> +#include <gtk/gtkprogressbar.h> +#include <gtk/gtkbox.h> +#include <gtk/gtklabel.h> +#include <gtk/gtktogglebutton.h> +#include <gtk/gtkmessagedialog.h> +#include <gtk/gtkversion.h> + +#include "../common/xchat.h" +#include "../common/fe.h" +#include "../common/util.h" +#include "../common/text.h" +#include "../common/cfgfiles.h" +#include "../common/xchatc.h" +#include "../common/plugin.h" +#include "gtkutil.h" +#include "maingui.h" +#include "pixmaps.h" +#include "joind.h" +#include "xtext.h" +#include "palette.h" +#include "menu.h" +#include "notifygui.h" +#include "textgui.h" +#include "fkeys.h" +#include "plugin-tray.h" +#include "urlgrab.h" + +#ifdef USE_XLIB +#include <gdk/gdkx.h> +#include <gtk/gtkinvisible.h> +#endif + +#ifdef USE_GTKSPELL +#include <gtk/gtktextview.h> +#endif + +#ifdef WIN32 +#include <windows.h> +#endif + +GdkPixmap *channelwin_pix; + + +#ifdef USE_XLIB + +static void +redraw_trans_xtexts (void) +{ + GSList *list = sess_list; + session *sess; + int done_main = FALSE; + + while (list) + { + sess = list->data; + if (GTK_XTEXT (sess->gui->xtext)->transparent) + { + if (!sess->gui->is_tab || !done_main) + gtk_xtext_refresh (GTK_XTEXT (sess->gui->xtext), 1); + if (sess->gui->is_tab) + done_main = TRUE; + } + list = list->next; + } +} + +static GdkFilterReturn +root_event_cb (GdkXEvent *xev, GdkEventProperty *event, gpointer data) +{ + static Atom at = None; + XEvent *xevent = (XEvent *)xev; + + if (xevent->type == PropertyNotify) + { + if (at == None) + at = XInternAtom (xevent->xproperty.display, "_XROOTPMAP_ID", True); + + if (at == xevent->xproperty.atom) + redraw_trans_xtexts (); + } + + return GDK_FILTER_CONTINUE; +} + +#endif + +/* === command-line parameter parsing : requires glib 2.6 === */ + +static char *arg_cfgdir = NULL; +static gint arg_show_autoload = 0; +static gint arg_show_config = 0; +static gint arg_show_version = 0; +static gint arg_minimize = 0; + +static const GOptionEntry gopt_entries[] = +{ + {"no-auto", 'a', 0, G_OPTION_ARG_NONE, &arg_dont_autoconnect, N_("Don't auto connect to servers"), NULL}, + {"cfgdir", 'd', 0, G_OPTION_ARG_STRING, &arg_cfgdir, N_("Use a different config directory"), "PATH"}, + {"no-plugins", 'n', 0, G_OPTION_ARG_NONE, &arg_skip_plugins, N_("Don't auto load any plugins"), NULL}, + {"plugindir", 'p', 0, G_OPTION_ARG_NONE, &arg_show_autoload, N_("Show plugin auto-load directory"), NULL}, + {"configdir", 'u', 0, G_OPTION_ARG_NONE, &arg_show_config, N_("Show user config directory"), NULL}, + {"url", 0, 0, G_OPTION_ARG_STRING, &arg_url, N_("Open an irc://server:port/channel URL"), "URL"}, +#ifndef WIN32 /* uses DBUS */ + {"command", 'c', 0, G_OPTION_ARG_STRING, &arg_command, N_("Execute command:"), "COMMAND"}, + {"existing", 'e', 0, G_OPTION_ARG_NONE, &arg_existing, N_("Open URL or execute command in an existing XChat"), NULL}, +#endif + {"minimize", 0, 0, G_OPTION_ARG_INT, &arg_minimize, N_("Begin minimized. Level 0=Normal 1=Iconified 2=Tray"), N_("level")}, + {"version", 'v', 0, G_OPTION_ARG_NONE, &arg_show_version, N_("Show version information"), NULL}, + {NULL} +}; + +int +fe_args (int argc, char *argv[]) +{ + GError *error = NULL; + GOptionContext *context; + +#ifdef ENABLE_NLS + bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); + bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); + textdomain (GETTEXT_PACKAGE); +#endif + + context = g_option_context_new (NULL); + g_option_context_add_main_entries (context, gopt_entries, GETTEXT_PACKAGE); + g_option_context_add_group (context, gtk_get_option_group (FALSE)); + g_option_context_parse (context, &argc, &argv, &error); + + if (error) + { + if (error->message) + printf ("%s\n", error->message); + return 1; + } + + g_option_context_free (context); + + if (arg_show_version) + { + printf (PACKAGE_TARNAME" "PACKAGE_VERSION"\n"); + return 0; + } + + if (arg_show_autoload) + { +#ifdef WIN32 + /* see the chdir() below */ + char *sl, *exe = strdup (argv[0]); + sl = strrchr (exe, '\\'); + if (sl) + { + *sl = 0; + printf ("%s\\plugins\n", exe); + } +#else + printf ("%s\n", XCHATLIBDIR"/plugins"); +#endif + return 0; + } + + if (arg_show_config) + { + printf ("%s\n", get_xdir_fs ()); + return 0; + } + +#ifdef WIN32 + /* this is mainly for irc:// URL handling. When windows calls us from */ + /* I.E, it doesn't give an option of "Start in" directory, like short */ + /* cuts can. So we have to set the current dir manually, to the path */ + /* of the exe. */ + { + char *tmp = strdup (argv[0]); + char *sl; + + sl = strrchr (tmp, '\\'); + if (sl) + { + *sl = 0; + chdir (tmp); + } + free (tmp); + } +#endif + + if (arg_cfgdir) /* we want filesystem encoding */ + { + xdir_fs = strdup (arg_cfgdir); + if (xdir_fs[strlen (xdir_fs) - 1] == '/') + xdir_fs[strlen (xdir_fs) - 1] = 0; + g_free (arg_cfgdir); + } + + gtk_init (&argc, &argv); + +#ifdef USE_XLIB + gdk_window_set_events (gdk_get_default_root_window (), GDK_PROPERTY_CHANGE_MASK); + gdk_window_add_filter (gdk_get_default_root_window (), + (GdkFilterFunc)root_event_cb, NULL); +#endif + + return -1; +} + +const char cursor_color_rc[] = + "style \"xc-ib-st\"" + "{" +#ifdef USE_GTKSPELL + "GtkTextView::cursor-color=\"#%02x%02x%02x\"" +#else + "GtkEntry::cursor-color=\"#%02x%02x%02x\"" +#endif + "}" + "widget \"*.xchat-inputbox\" style : application \"xc-ib-st\""; + +GtkStyle * +create_input_style (GtkStyle *style) +{ + char buf[256]; + static int done_rc = FALSE; + + pango_font_description_free (style->font_desc); + style->font_desc = pango_font_description_from_string (prefs.font_normal); + + /* fall back */ + if (pango_font_description_get_size (style->font_desc) == 0) + { + snprintf (buf, sizeof (buf), _("Failed to open font:\n\n%s"), prefs.font_normal); + fe_message (buf, FE_MSG_ERROR); + pango_font_description_free (style->font_desc); + style->font_desc = pango_font_description_from_string ("sans 11"); + } + + if (prefs.style_inputbox && !done_rc) + { + done_rc = TRUE; + sprintf (buf, cursor_color_rc, (colors[COL_FG].red >> 8), + (colors[COL_FG].green >> 8), (colors[COL_FG].blue >> 8)); + gtk_rc_parse_string (buf); + } + + style->bg[GTK_STATE_NORMAL] = colors[COL_FG]; + style->base[GTK_STATE_NORMAL] = colors[COL_BG]; + style->text[GTK_STATE_NORMAL] = colors[COL_FG]; + + return style; +} + +void +fe_init (void) +{ + palette_load (); + key_init (); + pixmaps_init (); + + channelwin_pix = pixmap_load_from_file (prefs.background); + input_style = create_input_style (gtk_style_new ()); +} + +void +fe_main (void) +{ + gtk_main (); + + /* sleep for 3 seconds so any QUIT messages are not lost. The */ + /* GUI is closed at this point, so the user doesn't even know! */ + if (prefs.wait_on_exit) + sleep (3); +} + +void +fe_cleanup (void) +{ + /* it's saved when pressing OK in setup.c */ + /*palette_save ();*/ +} + +void +fe_exit (void) +{ + gtk_main_quit (); +} + +int +fe_timeout_add (int interval, void *callback, void *userdata) +{ + return g_timeout_add (interval, (GSourceFunc) callback, userdata); +} + +void +fe_timeout_remove (int tag) +{ + g_source_remove (tag); +} + +#ifdef WIN32 + +static void +log_handler (const gchar *log_domain, + GLogLevelFlags log_level, + const gchar *message, + gpointer unused_data) +{ + session *sess; + + if (getenv ("XCHAT_WARNING_IGNORE")) + return; + + sess = find_dialog (serv_list->data, "(warnings)"); + if (!sess) + sess = new_ircwindow (serv_list->data, "(warnings)", SESS_DIALOG, 0); + + PrintTextf (sess, "%s\t%s\n", log_domain, message); + if (getenv ("XCHAT_WARNING_ABORT")) + abort (); +} + +#endif + +/* install tray stuff */ + +static int +fe_idle (gpointer data) +{ + session *sess = sess_list->data; + + plugin_add (sess, NULL, NULL, tray_plugin_init, tray_plugin_deinit, NULL, FALSE); + + if (arg_minimize == 1) + gtk_window_iconify (GTK_WINDOW (sess->gui->window)); + else if (arg_minimize == 2) + tray_toggle_visibility (FALSE); + + return 0; +} + +void +fe_new_window (session *sess, int focus) +{ + int tab = FALSE; + + if (sess->type == SESS_DIALOG) + { + if (prefs.privmsgtab) + tab = TRUE; + } else + { + if (prefs.tabchannels) + tab = TRUE; + } + + mg_changui_new (sess, NULL, tab, focus); + +#ifdef WIN32 + g_log_set_handler ("GLib", G_LOG_LEVEL_CRITICAL|G_LOG_LEVEL_WARNING, (GLogFunc)log_handler, 0); + g_log_set_handler ("GLib-GObject", G_LOG_LEVEL_CRITICAL|G_LOG_LEVEL_WARNING, (GLogFunc)log_handler, 0); + g_log_set_handler ("Gdk", G_LOG_LEVEL_CRITICAL|G_LOG_LEVEL_WARNING, (GLogFunc)log_handler, 0); + g_log_set_handler ("Gtk", G_LOG_LEVEL_CRITICAL|G_LOG_LEVEL_WARNING, (GLogFunc)log_handler, 0); +#endif + + if (!sess_list->next) + g_idle_add (fe_idle, NULL); +} + +void +fe_new_server (struct server *serv) +{ + serv->gui = malloc (sizeof (struct server_gui)); + memset (serv->gui, 0, sizeof (struct server_gui)); +} + +void +fe_message (char *msg, int flags) +{ + GtkWidget *dialog; + int type = GTK_MESSAGE_WARNING; + + if (flags & FE_MSG_ERROR) + type = GTK_MESSAGE_ERROR; + if (flags & FE_MSG_INFO) + type = GTK_MESSAGE_INFO; + + dialog = gtk_message_dialog_new (GTK_WINDOW (parent_window), 0, type, + GTK_BUTTONS_OK, "%s", msg); + if (flags & FE_MSG_MARKUP) + gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (dialog), msg); + g_signal_connect (G_OBJECT (dialog), "response", + G_CALLBACK (gtk_widget_destroy), 0); + gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); + gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); + gtk_widget_show (dialog); + + if (flags & FE_MSG_WAIT) + gtk_dialog_run (GTK_DIALOG (dialog)); +} + +void +fe_idle_add (void *func, void *data) +{ + g_idle_add (func, data); +} + +void +fe_input_remove (int tag) +{ + g_source_remove (tag); +} + +int +fe_input_add (int sok, int flags, void *func, void *data) +{ + int tag, type = 0; + GIOChannel *channel; + +#ifdef WIN32 + if (flags & FIA_FD) + channel = g_io_channel_win32_new_fd (sok); + else + channel = g_io_channel_win32_new_socket (sok); +#else + channel = g_io_channel_unix_new (sok); +#endif + + if (flags & FIA_READ) + type |= G_IO_IN | G_IO_HUP | G_IO_ERR; + if (flags & FIA_WRITE) + type |= G_IO_OUT | G_IO_ERR; + if (flags & FIA_EX) + type |= G_IO_PRI; + + tag = g_io_add_watch (channel, type, (GIOFunc) func, data); + g_io_channel_unref (channel); + + return tag; +} + +void +fe_set_topic (session *sess, char *topic, char *stripped_topic) +{ + if (!sess->gui->is_tab || sess == current_tab) + { + gtk_entry_set_text (GTK_ENTRY (sess->gui->topic_entry), stripped_topic); + mg_set_topic_tip (sess); + } else + { + if (sess->res->topic_text) + free (sess->res->topic_text); + sess->res->topic_text = strdup (stripped_topic); + } +} + +void +fe_set_hilight (struct session *sess) +{ + if (sess->gui->is_tab) + fe_set_tab_color (sess, 3); /* set tab to blue */ + + if (prefs.input_flash_hilight) + fe_flash_window (sess); /* taskbar flash */ +} + +static void +fe_update_mode_entry (session *sess, GtkWidget *entry, char **text, char *new_text) +{ + if (!sess->gui->is_tab || sess == current_tab) + { + if (sess->gui->flag_wid[0]) /* channel mode buttons enabled? */ + gtk_entry_set_text (GTK_ENTRY (entry), new_text); + } else + { + if (sess->gui->is_tab) + { + if (*text) + free (*text); + *text = strdup (new_text); + } + } +} + +void +fe_update_channel_key (struct session *sess) +{ + fe_update_mode_entry (sess, sess->gui->key_entry, + &sess->res->key_text, sess->channelkey); + fe_set_title (sess); +} + +void +fe_update_channel_limit (struct session *sess) +{ + char tmp[16]; + + sprintf (tmp, "%d", sess->limit); + fe_update_mode_entry (sess, sess->gui->limit_entry, + &sess->res->limit_text, tmp); + fe_set_title (sess); +} + +int +fe_is_chanwindow (struct server *serv) +{ + if (!serv->gui->chanlist_window) + return 0; + return 1; +} + +int +fe_is_banwindow (struct session *sess) +{ + if (!sess->res->banlist_window) + return 0; + return 1; +} + +void +fe_notify_update (char *name) +{ + if (!name) + notify_gui_update (); +} + +void +fe_text_clear (struct session *sess, int lines) +{ + gtk_xtext_clear (sess->res->buffer, lines); +} + +void +fe_close_window (struct session *sess) +{ + if (sess->gui->is_tab) + mg_tab_close (sess); + else + gtk_widget_destroy (sess->gui->window); +} + +void +fe_progressbar_start (session *sess) +{ + if (!sess->gui->is_tab || current_tab == sess) + /* if it's the focused tab, create it for real! */ + mg_progressbar_create (sess->gui); + else + /* otherwise just remember to create on when it gets focused */ + sess->res->c_graph = TRUE; +} + +void +fe_progressbar_end (server *serv) +{ + GSList *list = sess_list; + session *sess; + + while (list) /* check all windows that use this server and * + * remove the connecting graph, if it has one. */ + { + sess = list->data; + if (sess->server == serv) + { + if (sess->gui->bar) + mg_progressbar_destroy (sess->gui); + sess->res->c_graph = FALSE; + } + list = list->next; + } +} + +void +fe_print_text (struct session *sess, char *text, time_t stamp) +{ + PrintTextRaw (sess->res->buffer, (unsigned char *)text, prefs.indent_nicks, stamp); + + if (!sess->new_data && sess != current_tab && + sess->gui->is_tab && !sess->nick_said && stamp == 0) + { + sess->new_data = TRUE; + if (sess->msg_said) + fe_set_tab_color (sess, 2); + else + fe_set_tab_color (sess, 1); + } +} + +void +fe_beep (void) +{ + gdk_beep (); +} + +#ifndef WIN32 +static int +lastlog_regex_cmp (char *a, regex_t *reg) +{ + return !regexec (reg, a, 1, NULL, REG_NOTBOL); +} +#endif + +void +fe_lastlog (session *sess, session *lastlog_sess, char *sstr, gboolean regexp) +{ +#ifndef WIN32 + regex_t reg; +#endif + + if (gtk_xtext_is_empty (sess->res->buffer)) + { + PrintText (lastlog_sess, _("Search buffer is empty.\n")); + return; + } + + if (!regexp) + { + gtk_xtext_lastlog (lastlog_sess->res->buffer, sess->res->buffer, + (void *) nocasestrstr, sstr); + return; + } + +#ifndef WIN32 + if (regcomp (®, sstr, REG_ICASE | REG_EXTENDED | REG_NOSUB) == 0) + { + gtk_xtext_lastlog (lastlog_sess->res->buffer, sess->res->buffer, + (void *) lastlog_regex_cmp, ®); + regfree (®); + } +#endif +} + +void +fe_set_lag (server *serv, int lag) +{ + GSList *list = sess_list; + session *sess; + gdouble per; + char lagtext[64]; + char lagtip[128]; + unsigned long nowtim; + + if (lag == -1) + { + if (!serv->lag_sent) + return; + nowtim = make_ping_time (); + lag = (nowtim - serv->lag_sent) / 100000; + } + + per = (double)((double)lag / (double)10); + if (per > 1.0) + per = 1.0; + + snprintf (lagtext, sizeof (lagtext) - 1, "%s%d.%ds", + serv->lag_sent ? "+" : "", lag / 10, lag % 10); + snprintf (lagtip, sizeof (lagtip) - 1, "Lag: %s%d.%d seconds", + serv->lag_sent ? "+" : "", lag / 10, lag % 10); + + while (list) + { + sess = list->data; + if (sess->server == serv) + { + if (sess->res->lag_tip) + free (sess->res->lag_tip); + sess->res->lag_tip = strdup (lagtip); + + if (!sess->gui->is_tab || current_tab == sess) + { + if (sess->gui->lagometer) + { + gtk_progress_bar_set_fraction ((GtkProgressBar *) sess->gui->lagometer, per); + add_tip (sess->gui->lagometer->parent, lagtip); + } + if (sess->gui->laginfo) + gtk_label_set_text ((GtkLabel *) sess->gui->laginfo, lagtext); + } else + { + sess->res->lag_value = per; + if (sess->res->lag_text) + free (sess->res->lag_text); + sess->res->lag_text = strdup (lagtext); + } + } + list = list->next; + } +} + +void +fe_set_throttle (server *serv) +{ + GSList *list = sess_list; + struct session *sess; + float per; + char tbuf[96]; + char tip[160]; + + per = (float) serv->sendq_len / 1024.0; + if (per > 1.0) + per = 1.0; + + while (list) + { + sess = list->data; + if (sess->server == serv) + { + snprintf (tbuf, sizeof (tbuf) - 1, _("%d bytes"), serv->sendq_len); + snprintf (tip, sizeof (tip) - 1, _("Network send queue: %d bytes"), serv->sendq_len); + + if (sess->res->queue_tip) + free (sess->res->queue_tip); + sess->res->queue_tip = strdup (tip); + + if (!sess->gui->is_tab || current_tab == sess) + { + if (sess->gui->throttlemeter) + { + gtk_progress_bar_set_fraction ((GtkProgressBar *) sess->gui->throttlemeter, per); + add_tip (sess->gui->throttlemeter->parent, tip); + } + if (sess->gui->throttleinfo) + gtk_label_set_text ((GtkLabel *) sess->gui->throttleinfo, tbuf); + } else + { + sess->res->queue_value = per; + if (sess->res->queue_text) + free (sess->res->queue_text); + sess->res->queue_text = strdup (tbuf); + } + } + list = list->next; + } +} + +void +fe_ctrl_gui (session *sess, fe_gui_action action, int arg) +{ + switch (action) + { + case FE_GUI_HIDE: + gtk_widget_hide (sess->gui->window); break; + case FE_GUI_SHOW: + gtk_widget_show (sess->gui->window); + gtk_window_present (GTK_WINDOW (sess->gui->window)); + break; + case FE_GUI_FOCUS: + mg_bring_tofront_sess (sess); break; + case FE_GUI_FLASH: + fe_flash_window (sess); break; + case FE_GUI_COLOR: + fe_set_tab_color (sess, arg); break; + case FE_GUI_ICONIFY: + gtk_window_iconify (GTK_WINDOW (sess->gui->window)); break; + case FE_GUI_MENU: + menu_bar_toggle (); /* toggle menubar on/off */ + break; + case FE_GUI_ATTACH: + mg_detach (sess, arg); /* arg: 0=toggle 1=detach 2=attach */ + break; + case FE_GUI_APPLY: + setup_apply_real (TRUE, TRUE); + } +} + +static void +dcc_saveas_cb (struct DCC *dcc, char *file) +{ + if (is_dcc (dcc)) + { + if (dcc->dccstat == STAT_QUEUED) + { + if (file) + dcc_get_with_destfile (dcc, file); + else if (dcc->resume_sent == 0) + dcc_abort (dcc->serv->front_session, dcc); + } + } +} + +void +fe_confirm (const char *message, void (*yesproc)(void *), void (*noproc)(void *), void *ud) +{ + /* warning, assuming fe_confirm is used by DCC only! */ + struct DCC *dcc = ud; + + if (dcc->file) + gtkutil_file_req (message, dcc_saveas_cb, ud, dcc->file, + FRF_WRITE|FRF_FILTERISINITIAL|FRF_NOASKOVERWRITE); +} + +int +fe_gui_info (session *sess, int info_type) +{ + switch (info_type) + { + case 0: /* window status */ +#if GTK_CHECK_VERSION(2,20,0) + if (!gtk_widget_get_visible (GTK_WINDOW (sess->gui->window))) +#else + if (!GTK_WIDGET_VISIBLE (GTK_WINDOW (sess->gui->window))) +#endif + return 2; /* hidden (iconified or systray) */ +#if GTK_CHECK_VERSION(2,4,0) + if (gtk_window_is_active (GTK_WINDOW (sess->gui->window))) +#else +#if GTK_CHECK_VERSION(2,2,0) + if (GTK_WINDOW (sess->gui->window)->is_active) +#endif +#endif + return 1; /* active/focused */ + + return 0; /* normal (no keyboard focus or behind a window) */ + } + + return -1; +} + +void * +fe_gui_info_ptr (session *sess, int info_type) +{ + switch (info_type) + { + case 0: /* native window pointer (for plugins) */ +#ifdef WIN32 + return GDK_WINDOW_HWND (sess->gui->window->window); +#else + return sess->gui->window; +#endif + } + return NULL; +} + +char * +fe_get_inputbox_contents (session *sess) +{ + /* not the current tab */ + if (sess->res->input_text) + return sess->res->input_text; + + /* current focused tab */ + return SPELL_ENTRY_GET_TEXT (sess->gui->input_box); +} + +int +fe_get_inputbox_cursor (session *sess) +{ + /* not the current tab (we don't remember the cursor pos) */ + if (sess->res->input_text) + return 0; + + /* current focused tab */ + return SPELL_ENTRY_GET_POS (sess->gui->input_box); +} + +void +fe_set_inputbox_cursor (session *sess, int delta, int pos) +{ + if (!sess->gui->is_tab || sess == current_tab) + { + if (delta) + pos += SPELL_ENTRY_GET_POS (sess->gui->input_box); + SPELL_ENTRY_SET_POS (sess->gui->input_box, pos); + } else + { + /* we don't support changing non-front tabs yet */ + } +} + +void +fe_set_inputbox_contents (session *sess, char *text) +{ + if (!sess->gui->is_tab || sess == current_tab) + { + SPELL_ENTRY_SET_TEXT (sess->gui->input_box, text); + } else + { + if (sess->res->input_text) + free (sess->res->input_text); + sess->res->input_text = strdup (text); + } +} + +#ifndef WIN32 + +static gboolean +try_browser (const char *browser, const char *arg, const char *url) +{ + const char *argv[4]; + char *path; + + path = g_find_program_in_path (browser); + if (!path) + return 0; + + argv[0] = path; + argv[1] = url; + argv[2] = NULL; + if (arg) + { + argv[1] = arg; + argv[2] = url; + argv[3] = NULL; + } + xchat_execv (argv); + g_free (path); + return 1; +} + +#endif + +static void +fe_open_url_inner (const char *url) +{ +#ifdef WIN32 + ShellExecute (0, "open", url, NULL, NULL, SW_SHOWNORMAL); +#else + /* universal desktop URL opener (from xdg-utils). Supports gnome,kde,xfce4. */ + if (try_browser ("xdg-open", NULL, url)) + return; + + /* try to detect GNOME */ + if (g_getenv ("GNOME_DESKTOP_SESSION_ID")) + { + if (try_browser ("gnome-open", NULL, url)) /* Gnome 2.4+ has this */ + return; + } + + /* try to detect KDE */ + if (g_getenv ("KDE_FULL_SESSION")) + { + if (try_browser ("kfmclient", "exec", url)) + return; + } + + /* everything failed, what now? just try firefox */ + if (try_browser ("firefox", NULL, url)) + return; + + /* fresh out of ideas... */ + try_browser ("mozilla", NULL, url); +#endif +} + +static void +fe_open_url_locale (const char *url) +{ +#ifndef WIN32 + if (url[0] != '/' && strchr (url, ':') == NULL) + { + url = g_strdup_printf ("http://%s", url); + fe_open_url_inner (url); + g_free ((char *)url); + return; + } +#endif + fe_open_url_inner (url); +} + +void +fe_open_url (const char *url) +{ + char *loc; + + if (prefs.utf8_locale) + { + fe_open_url_locale (url); + return; + } + + /* the OS expects it in "locale" encoding. This makes it work on + unix systems that use ISO-8859-x and Win32. */ + loc = g_locale_from_utf8 (url, -1, 0, 0, 0); + if (loc) + { + fe_open_url_locale (loc); + g_free (loc); + } +} + +void +fe_server_event (server *serv, int type, int arg) +{ + GSList *list = sess_list; + session *sess; + + while (list) + { + sess = list->data; + if (sess->server == serv && (current_tab == sess || !sess->gui->is_tab)) + { + session_gui *gui = sess->gui; + + switch (type) + { + case FE_SE_CONNECTING: /* connecting in progress */ + case FE_SE_RECONDELAY: /* reconnect delay begun */ + /* enable Disconnect item */ + gtk_widget_set_sensitive (gui->menu_item[MENU_ID_DISCONNECT], 1); + break; + + case FE_SE_CONNECT: + /* enable Disconnect and Away menu items */ + gtk_widget_set_sensitive (gui->menu_item[MENU_ID_AWAY], 1); + gtk_widget_set_sensitive (gui->menu_item[MENU_ID_DISCONNECT], 1); + break; + + case FE_SE_LOGGEDIN: /* end of MOTD */ + gtk_widget_set_sensitive (gui->menu_item[MENU_ID_JOIN], 1); + /* if number of auto-join channels is zero, open joind */ + if (arg == 0) + joind_open (serv); + break; + + case FE_SE_DISCONNECT: + /* disable Disconnect and Away menu items */ + gtk_widget_set_sensitive (gui->menu_item[MENU_ID_AWAY], 0); + gtk_widget_set_sensitive (gui->menu_item[MENU_ID_DISCONNECT], 0); + gtk_widget_set_sensitive (gui->menu_item[MENU_ID_JOIN], 0); + /* close the join-dialog, if one exists */ + joind_close (serv); + } + } + list = list->next; + } +} + +void +fe_get_file (const char *title, char *initial, + void (*callback) (void *userdata, char *file), void *userdata, + int flags) + +{ + /* OK: Call callback once per file, then once more with file=NULL. */ + /* CANCEL: Call callback once with file=NULL. */ + gtkutil_file_req (title, callback, userdata, initial, flags | FRF_FILTERISINITIAL); +} diff --git a/xchat-2.8.8/src/fe-gtk/fe-gtk.h b/xchat-2.8.8/src/fe-gtk/fe-gtk.h new file mode 100644 index 0000000..1251625 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/fe-gtk.h @@ -0,0 +1,197 @@ +#include "../../config.h" + +#ifdef WIN32 +/* If you're compiling this for Windows, your release is un-official + * and not condoned. Please don't use the XChat name. Make up your + * own name! */ +#define DISPLAY_NAME "XChat-Unofficial" +#else +#define DISPLAY_NAME "XChat" +#endif + +#ifndef WIN32 +#include <sys/types.h> +#include <regex.h> +#endif + +#if defined(ENABLE_NLS) && !defined(_) +# include <libintl.h> +# define _(x) gettext(x) +# ifdef gettext_noop +# define N_(String) gettext_noop (String) +# else +# define N_(String) (String) +# endif +#endif +#if !defined(ENABLE_NLS) && defined(_) +# undef _ +# define N_(String) (String) +# define _(x) (x) +#endif + +#include <gtk/gtkwidget.h> +#include <gtk/gtkcontainer.h> +#include <gtk/gtksignal.h> + +#undef gtk_signal_connect +#define gtk_signal_connect g_signal_connect + +#define flag_t flag_wid[0] +#define flag_n flag_wid[1] +#define flag_s flag_wid[2] +#define flag_i flag_wid[3] +#define flag_p flag_wid[4] +#define flag_m flag_wid[5] +#define flag_l flag_wid[6] +#define flag_k flag_wid[7] +#define flag_b flag_wid[8] +#define NUM_FLAG_WIDS 9 + +struct server_gui +{ + GtkWidget *rawlog_window; + GtkWidget *rawlog_textlist; + + /* join dialog */ + GtkWidget *joind_win; + GtkWidget *joind_entry; + GtkWidget *joind_radio1; + GtkWidget *joind_radio2; + GtkWidget *joind_check; + + /* chanlist variables */ + GtkWidget *chanlist_wild; /* GtkEntry */ + GtkWidget *chanlist_window; + GtkWidget *chanlist_list; + GtkWidget *chanlist_label; + GtkWidget *chanlist_min_spin; /* minusers GtkSpinButton */ + GtkWidget *chanlist_refresh; /* buttons */ + GtkWidget *chanlist_join; + GtkWidget *chanlist_savelist; + GtkWidget *chanlist_search; + + GSList *chanlist_data_stored_rows; /* stored list so it can be resorted */ + GSList *chanlist_pending_rows; + gint chanlist_tag; + gint chanlist_flash_tag; + + gboolean chanlist_match_wants_channel; /* match in channel name */ + gboolean chanlist_match_wants_topic; /* match in topic */ + +#ifndef WIN32 + regex_t chanlist_match_regex; /* compiled regular expression here */ + unsigned int have_regex; +#endif + + guint chanlist_users_found_count; /* users total for all channels */ + guint chanlist_users_shown_count; /* users total for displayed channels */ + guint chanlist_channels_found_count; /* channel total for /LIST operation */ + guint chanlist_channels_shown_count; /* total number of displayed + channels */ + + int chanlist_maxusers; + int chanlist_minusers; + int chanlist_minusers_downloaded; /* used by LIST IRC command */ + int chanlist_search_type; /* 0=simple 1=pattern/wildcard 2=regexp */ + gboolean chanlist_caption_is_stale; +}; + +/* this struct is persistant even when delinking/relinking */ + +typedef struct restore_gui +{ + /* banlist stuff */ + GtkWidget *banlist_window; + GtkWidget *banlist_treeview; + GtkWidget *banlist_butRefresh; + + void *tab; /* (chan *) */ + + /* information stored when this tab isn't front-most */ + void *user_model; /* for filling the GtkTreeView */ + void *buffer; /* xtext_Buffer */ + char *input_text; /* input text buffer (while not-front tab) */ + char *topic_text; /* topic GtkEntry buffer */ + char *key_text; + char *limit_text; + gfloat old_ul_value; /* old userlist value (for adj) */ + gfloat lag_value; /* lag-o-meter */ + char *lag_text; /* lag-o-meter text */ + char *lag_tip; /* lag-o-meter tooltip */ + gfloat queue_value; /* outbound queue meter */ + char *queue_text; /* outbound queue text */ + char *queue_tip; /* outbound queue tooltip */ + short flag_wid_state[NUM_FLAG_WIDS]; + unsigned int c_graph:1; /* connecting graph, is there one? */ +} restore_gui; + +typedef struct session_gui +{ + GtkWidget + *xtext, + *vscrollbar, + *window, /* toplevel */ + *topic_entry, + *note_book, + *main_table, + *user_tree, /* GtkTreeView */ + *user_box, /* userlist box */ + *button_box_parent, + *button_box, /* userlist buttons' box */ + *dialogbutton_box, + *topicbutton_box, + *meter_box, /* all the meters inside this */ + *lagometer, + *laginfo, + *throttlemeter, + *throttleinfo, + *topic_bar, + *hpane_left, + *hpane_right, + *vpane_left, + *vpane_right, + *menu, + *bar, /* connecting progress bar */ + *nick_box, /* contains label to the left of input_box */ + *nick_label, + *op_xpm, /* icon to the left of nickname */ + *namelistinfo, /* label above userlist */ + *input_box, + *flag_wid[NUM_FLAG_WIDS], /* channelmode buttons */ + *limit_entry, /* +l */ + *key_entry; /* +k */ + +#define MENU_ID_NUM 12 + GtkWidget *menu_item[MENU_ID_NUM+1]; /* some items we may change state of */ + + void *chanview; /* chanview.h */ + + int bartag; /*connecting progressbar timeout */ + + int pane_left_size; /*last position of the pane*/ + int pane_right_size; + + guint16 is_tab; /* is tab or toplevel? */ + guint16 ul_hidden; /* userlist hidden? */ + +} session_gui; + +extern GdkPixmap *channelwin_pix; +extern GdkPixmap *dialogwin_pix; + + +#ifdef USE_GTKSPELL +char *SPELL_ENTRY_GET_TEXT (GtkWidget *entry); +#define SPELL_ENTRY_SET_TEXT(e,txt) gtk_text_buffer_set_text (gtk_text_view_get_buffer(GTK_TEXT_VIEW(e)),txt,-1); +#define SPELL_ENTRY_SET_EDITABLE(e,v) gtk_text_view_set_editable(GTK_TEXT_VIEW(e), v) +int SPELL_ENTRY_GET_POS (GtkWidget *entry); +void SPELL_ENTRY_SET_POS (GtkWidget *entry, int pos); +void SPELL_ENTRY_INSERT (GtkWidget *entry, const char *text, int len, int *pos); +#else +#define SPELL_ENTRY_GET_TEXT(e) (GTK_ENTRY(e)->text) +#define SPELL_ENTRY_SET_TEXT(e,txt) gtk_entry_set_text(GTK_ENTRY(e),txt) +#define SPELL_ENTRY_SET_EDITABLE(e,v) gtk_editable_set_editable(GTK_EDITABLE(e),v) +#define SPELL_ENTRY_GET_POS(e) gtk_editable_get_position(GTK_EDITABLE(e)) +#define SPELL_ENTRY_SET_POS(e,p) gtk_editable_set_position(GTK_EDITABLE(e),p); +#define SPELL_ENTRY_INSERT(e,t,l,p) gtk_editable_insert_text(GTK_EDITABLE(e),t,l,p) +#endif diff --git a/xchat-2.8.8/src/fe-gtk/fkeys.c b/xchat-2.8.8/src/fe-gtk/fkeys.c new file mode 100644 index 0000000..014b5cc --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/fkeys.c @@ -0,0 +1,1814 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <unistd.h> +#include <string.h> +#include <fcntl.h> +#include <ctype.h> + +#include "fe-gtk.h" + +#include <gtk/gtklabel.h> +#include <gtk/gtkeditable.h> +#include <gtk/gtkmenu.h> +#include <gtk/gtkmenuitem.h> +#include <gtk/gtkoptionmenu.h> +#include <gtk/gtkvbox.h> +#include <gtk/gtkhbox.h> +#include <gtk/gtkclist.h> +#include <gtk/gtknotebook.h> +#include <gtk/gtkcheckbutton.h> +#include <gtk/gtkentry.h> +#include <gtk/gtkvscrollbar.h> + +#include "../common/xchat.h" +#include "../common/xchatc.h" +#include "../common/cfgfiles.h" +#include "../common/fe.h" +#include "../common/userlist.h" +#include "../common/outbound.h" +#include "../common/util.h" +#include "../common/text.h" +#include "../common/plugin.h" +#include <gdk/gdkkeysyms.h> +#include "gtkutil.h" +#include "menu.h" +#include "xtext.h" +#include "palette.h" +#include "maingui.h" +#include "textgui.h" +#include "fkeys.h" + +#ifdef USE_GTKSPELL +#include <gtk/gtktextview.h> +#endif + +static void replace_handle (GtkWidget * wid); +void key_action_tab_clean (void); + +/***************** Key Binding Code ******************/ + +/* NOTES: + + To add a new action: + 1) inc KEY_MAX_ACTIONS + 2) write the function at the bottom of this file (with all the others) + FIXME: Write about calling and returning + 3) Add it to key_actions + + --AGL + + */ + +/* Remember that the *number* of actions is this *plus* 1 --AGL */ +#define KEY_MAX_ACTIONS 14 +/* These are cp'ed from history.c --AGL */ +#define STATE_SHIFT GDK_SHIFT_MASK +#define STATE_ALT GDK_MOD1_MASK +#define STATE_CTRL GDK_CONTROL_MASK + +struct key_binding +{ + int keyval; /* GDK keynumber */ + char *keyname; /* String with the name of the function */ + int action; /* Index into key_actions */ + int mod; /* Flags of STATE_* above */ + char *data1, *data2; /* Pointers to strings, these must be freed */ + struct key_binding *next; +}; + +struct key_action +{ + int (*handler) (GtkWidget * wid, GdkEventKey * evt, char *d1, char *d2, + struct session * sess); + char *name; + char *help; +}; + +struct gcomp_data +{ + char data[CHANLEN]; + int elen; +}; + +static int key_load_kbs (char *); +static void key_load_defaults (); +static void key_save_kbs (char *); +static int key_action_handle_command (GtkWidget * wid, GdkEventKey * evt, + char *d1, char *d2, + struct session *sess); +static int key_action_page_switch (GtkWidget * wid, GdkEventKey * evt, + char *d1, char *d2, struct session *sess); +int key_action_insert (GtkWidget * wid, GdkEventKey * evt, char *d1, char *d2, + struct session *sess); +static int key_action_scroll_page (GtkWidget * wid, GdkEventKey * evt, + char *d1, char *d2, struct session *sess); +static int key_action_set_buffer (GtkWidget * wid, GdkEventKey * evt, + char *d1, char *d2, struct session *sess); +static int key_action_history_up (GtkWidget * wid, GdkEventKey * evt, + char *d1, char *d2, struct session *sess); +static int key_action_history_down (GtkWidget * wid, GdkEventKey * evt, + char *d1, char *d2, struct session *sess); +static int key_action_tab_comp (GtkWidget * wid, GdkEventKey * evt, char *d1, + char *d2, struct session *sess); +static int key_action_comp_chng (GtkWidget * wid, GdkEventKey * evt, char *d1, + char *d2, struct session *sess); +static int key_action_replace (GtkWidget * wid, GdkEventKey * evt, char *d1, + char *d2, struct session *sess); +static int key_action_move_tab_left (GtkWidget * wid, GdkEventKey * evt, + char *d1, char *d2, + struct session *sess); +static int key_action_move_tab_right (GtkWidget * wid, GdkEventKey * evt, + char *d1, char *d2, + struct session *sess); +static int key_action_move_tab_family_left (GtkWidget * wid, GdkEventKey * evt, + char *d1, char *d2, + struct session *sess); +static int key_action_move_tab_family_right (GtkWidget * wid, GdkEventKey * evt, + char *d1, char *d2, + struct session *sess); +static int key_action_put_history (GtkWidget * wid, GdkEventKey * evt, + char *d1, char *d2, + struct session *sess); + +static GtkWidget *key_dialog; +static struct key_binding *keys_root = NULL; + +static const struct key_action key_actions[KEY_MAX_ACTIONS + 1] = { + + {key_action_handle_command, "Run Command", + N_("The \002Run Command\002 action runs the data in Data 1 as if it has been typed into the entry box where you pressed the key sequence. Thus it can contain text (which will be sent to the channel/person), commands or user commands. When run all \002\\n\002 characters in Data 1 are used to deliminate seperate commands so it is possible to run more than one command. If you want a \002\\\002 in the actual text run then enter \002\\\\\002")}, + {key_action_page_switch, "Change Page", + N_("The \002Change Page\002 command switches between pages in the notebook. Set Data 1 to the page you want to switch to. If Data 2 is set to anything then the switch will be relative to the current position")}, + {key_action_insert, "Insert in Buffer", + N_("The \002Insert in Buffer\002 command will insert the contents of Data 1 into the entry where the key sequence was pressed at the current cursor position")}, + {key_action_scroll_page, "Scroll Page", + N_("The \002Scroll Page\002 command scrolls the text widget up or down one page or one line. Set Data 1 to either Up, Down, +1 or -1.")}, + {key_action_set_buffer, "Set Buffer", + N_("The \002Set Buffer\002 command sets the entry where the key sequence was entered to the contents of Data 1")}, + {key_action_history_up, "Last Command", + N_("The \002Last Command\002 command sets the entry to contain the last command entered - the same as pressing up in a shell")}, + {key_action_history_down, "Next Command", + N_("The \002Next Command\002 command sets the entry to contain the next command entered - the same as pressing down in a shell")}, + {key_action_tab_comp, "Complete nick/command", + N_("This command changes the text in the entry to finish an incomplete nickname or command. If Data 1 is set then double-tabbing in a string will select the last nick, not the next")}, + {key_action_comp_chng, "Change Selected Nick", + N_("This command scrolls up and down through the list of nicks. If Data 1 is set to anything it will scroll up, else it scrolls down")}, + {key_action_replace, "Check For Replace", + N_("This command checks the last word entered in the entry against the replace list and replaces it if it finds a match")}, + {key_action_move_tab_left, "Move front tab left", + N_("This command moves the front tab left by one")}, + {key_action_move_tab_right, "Move front tab right", + N_("This command moves the front tab right by one")}, + {key_action_move_tab_family_left, "Move tab family left", + N_("This command moves the current tab family to the left")}, + {key_action_move_tab_family_right, "Move tab family right", + N_("This command moves the current tab family to the right")}, + {key_action_put_history, "Push input line into history", + N_("Push input line into history but doesn't send to server")}, +}; + +void +key_init () +{ + keys_root = NULL; + if (key_load_kbs (NULL) == 1) + { + key_load_defaults (); + if (key_load_kbs (NULL) == 1) + fe_message (_("There was an error loading key" + " bindings configuration"), FE_MSG_ERROR); + } +} + +static char * +key_get_key_name (int keyval) +{ + return gdk_keyval_name (gdk_keyval_to_lower (keyval)); +} + +/* Ok, here are the NOTES + + key_handle_key_press now handles all the key presses and history_keypress is + now defunct. It goes thru the linked list keys_root and finds a matching + key. It runs the action func and switches on these values: + 0) Return + 1) Find next + 2) stop signal and return + + * history_keypress is now dead (and gone) + * key_handle_key_press now takes its role + * All the possible actions are in a struct called key_actions (in fkeys.c) + * it is made of {function, name, desc} + * key bindings can pass 2 *text* strings to the handler. If more options are nee + ded a format can be put on one of these options + * key actions are passed { + the entry widget + the Gdk event + data 1 + data 2 + session struct + } + * key bindings are stored in a linked list of key_binding structs + * which looks like { + int keyval; GDK keynumber + char *keyname; String with the name of the function + int action; Index into key_actions + int mod; Flags of STATE_* above + char *data1, *data2; Pointers to strings, these must be freed + struct key_binding *next; + } + * remember that is (data1 || data2) != NULL then they need to be free()'ed + + --AGL + + */ + +gboolean +key_handle_key_press (GtkWidget *wid, GdkEventKey *evt, session *sess) +{ + struct key_binding *kb, *last = NULL; + int keyval = evt->keyval; + int mod, n; + GSList *list; + + /* where did this event come from? */ + list = sess_list; + while (list) + { + sess = list->data; + if (sess->gui->input_box == wid) + { + if (sess->gui->is_tab) + sess = current_tab; + break; + } + list = list->next; + } + if (!list) + return FALSE; + current_sess = sess; + + if (plugin_emit_keypress (sess, evt->state, evt->keyval, evt->length, evt->string)) + return 1; + + /* maybe the plugin closed this tab? */ + if (!is_session (sess)) + return 1; + + mod = evt->state & (STATE_CTRL | STATE_ALT | STATE_SHIFT); + + kb = keys_root; + while (kb) + { + if (kb->keyval == keyval && kb->mod == mod) + { + if (kb->action < 0 || kb->action > KEY_MAX_ACTIONS) + return 0; + + /* Bump this binding to the top of the list */ + if (last != NULL) + { + last->next = kb->next; + kb->next = keys_root; + keys_root = kb; + } + /* Run the function */ + n = key_actions[kb->action].handler (wid, evt, kb->data1, + kb->data2, sess); + switch (n) + { + case 0: + return 1; + case 2: + g_signal_stop_emission_by_name (G_OBJECT (wid), + "key_press_event"); + return 1; + } + } + last = kb; + kb = kb->next; + } + + switch (keyval) + { + case GDK_space: + key_action_tab_clean (); + break; + +#if defined(USE_GTKSPELL) && !defined(WIN32) + /* gtktextview has no 'activate' event, so we trap ENTER here */ + case GDK_Return: + case GDK_KP_Enter: + if (!(evt->state & GDK_CONTROL_MASK)) + { + g_signal_stop_emission_by_name (G_OBJECT (wid), "key_press_event"); + mg_inputbox_cb (wid, sess->gui); + } +#endif + } + + return 0; +} + +/* Walks keys_root and free()'s everything */ +/*static void +key_free_all () +{ + struct key_binding *cur, *next; + + cur = keys_root; + while (cur) + { + next = cur->next; + if (cur->data1) + free (cur->data1); + if (cur->data2) + free (cur->data2); + free (cur); + cur = next; + } + keys_root = NULL; +}*/ + +/* Turns mod flags into a C-A-S string */ +static char * +key_make_mod_str (int mod, char *buf) +{ + int i = 0; + + if (mod & STATE_CTRL) + { + if (i) + buf[i++] = '-'; + buf[i++] = 'C'; + } + if (mod & STATE_ALT) + { + if (i) + buf[i++] = '-'; + buf[i++] = 'A'; + } + if (mod & STATE_SHIFT) + { + if (i) + buf[i++] = '-'; + buf[i++] = 'S'; + } + buf[i] = 0; + return buf; +} + +/* ***** GUI code here ******************* */ + +/* NOTE: The key_dialog defin is above --AGL */ +static GtkWidget *key_dialog_act_menu, *key_dialog_kb_clist; +static GtkWidget *key_dialog_tog_c, *key_dialog_tog_s, *key_dialog_tog_a; +static GtkWidget *key_dialog_ent_key, *key_dialog_ent_d1, *key_dialog_ent_d2; +static GtkWidget *key_dialog_text; + +static void +key_load_defaults () +{ + /* This is the default config */ +#define defcfg \ + "C\nPrior\nChange Page\nD1:-1\nD2:Relative\n\n"\ + "C\nNext\nChange Page\nD1:1\nD2:Relative\n\n"\ + "A\n9\nChange Page\nD1:9\nD2!\n\n"\ + "A\n8\nChange Page\nD1:8\nD2!\n\n"\ + "A\n7\nChange Page\nD1:7\nD2!\n\n"\ + "A\n6\nChange Page\nD1:6\nD2!\n\n"\ + "A\n5\nChange Page\nD1:5\nD2!\n\n"\ + "A\n4\nChange Page\nD1:4\nD2!\n\n"\ + "A\n3\nChange Page\nD1:3\nD2!\n\n"\ + "A\n2\nChange Page\nD1:2\nD2!\n\n"\ + "A\n1\nChange Page\nD1:1\nD2!\n\n"\ + "C\no\nInsert in Buffer\nD1:\nD2!\n\n"\ + "C\nb\nInsert in Buffer\nD1:\nD2!\n\n"\ + "C\nk\nInsert in Buffer\nD1:\nD2!\n\n"\ + "S\nNext\nChange Selected Nick\nD1!\nD2!\n\n"\ + "S\nPrior\nChange Selected Nick\nD1:Up\nD2!\n\n"\ + "None\nNext\nScroll Page\nD1:Down\nD2!\n\n"\ + "None\nPrior\nScroll Page\nD1:Up\nD2!\n\n"\ + "S\nDown\nScroll Page\nD1:+1\nD2!\n\n"\ + "S\nUp\nScroll Page\nD1:-1\nD2!\n\n"\ + "None\nDown\nNext Command\nD1!\nD2!\n\n"\ + "None\nUp\nLast Command\nD1!\nD2!\n\n"\ + "None\nTab\nComplete nick/command\nD1!\nD2!\n\n"\ + "None\nspace\nCheck For Replace\nD1!\nD2!\n\n"\ + "None\nReturn\nCheck For Replace\nD1!\nD2!\n\n"\ + "None\nKP_Enter\nCheck For Replace\nD1!\nD2!\n\n"\ + "C\nTab\nComplete nick/command\nD1:Up\nD2!\n\n"\ + "A\nLeft\nMove front tab left\nD1!\nD2!\n\n"\ + "A\nRight\nMove front tab right\nD1!\nD2!\n\n"\ + "CS\nPrior\nMove tab family left\nD1!\nD2!\n\n"\ + "CS\nNext\nMove tab family right\nD1!\nD2!\n\n"\ + "None\nF9\nRun Command\nD1:/GUI MENU TOGGLE\nD2!\n\n" + int fd; + + fd = xchat_open_file ("keybindings.conf", O_CREAT | O_TRUNC | O_WRONLY, 0x180, XOF_DOMODE); + if (fd < 0) + /* ???!!! */ + return; + + write (fd, defcfg, strlen (defcfg)); + close (fd); +} + +static void +key_dialog_close () +{ + key_dialog = NULL; + key_save_kbs (NULL); +} + +static void +key_dialog_add_new (GtkWidget * button, GtkCList * list) +{ + gchar *strs[] = { "", NULL, NULL, NULL, NULL }; + struct key_binding *kb; + + strs[1] = _("<none>"); + strs[2] = _("<none>"); + strs[3] = _("<none>"); + strs[4] = _("<none>"); + + kb = malloc (sizeof (struct key_binding)); + + kb->keyval = 0; + kb->keyname = NULL; + kb->action = -1; + kb->mod = 0; + kb->data1 = kb->data2 = NULL; + kb->next = keys_root; + + keys_root = kb; + + gtk_clist_set_row_data (GTK_CLIST (list), + gtk_clist_append (GTK_CLIST (list), strs), kb); + +} + +static void +key_dialog_delete (GtkWidget * button, GtkCList * list) +{ + struct key_binding *kb, *cur, *last; + int row = gtkutil_clist_selection ((GtkWidget *) list); + + if (row != -1) + { + kb = gtk_clist_get_row_data (list, row); + cur = keys_root; + last = NULL; + while (cur) + { + if (cur == kb) + { + if (last) + last->next = kb->next; + else + keys_root = kb->next; + + if (kb->data1) + free (kb->data1); + if (kb->data2) + free (kb->data2); + free (kb); + gtk_clist_remove (list, row); + return; + } + last = cur; + cur = cur->next; + } + printf ("*** key_dialog_delete: couldn't find kb in list!\n"); + /*if (getenv ("XCHAT_DEBUG")) + abort ();*/ + } +} + +static void +key_print_text (GtkXText *xtext, char *text) +{ + unsigned int old = prefs.timestamp; + prefs.timestamp = 0; /* temporarily disable stamps */ + gtk_xtext_clear (GTK_XTEXT (xtext)->buffer, 0); + PrintTextRaw (GTK_XTEXT (xtext)->buffer, text, 0, 0); + prefs.timestamp = old; +} + +static void +key_dialog_sel_act (GtkWidget * un, int num) +{ + int row = gtkutil_clist_selection (key_dialog_kb_clist); + struct key_binding *kb; + + if (row != -1) + { + kb = gtk_clist_get_row_data (GTK_CLIST (key_dialog_kb_clist), row); + kb->action = num; + gtk_clist_set_text (GTK_CLIST (key_dialog_kb_clist), row, 2, + _(key_actions[num].name)); + if (key_actions[num].help) + { + key_print_text (GTK_XTEXT (key_dialog_text), _(key_actions[num].help)); + } + } +} + +static void +key_dialog_sel_row (GtkWidget * clist, gint row, gint column, + GdkEventButton * evt, gpointer data) +{ + struct key_binding *kb = gtk_clist_get_row_data (GTK_CLIST (clist), row); + + if (kb == NULL) + { + printf ("*** key_dialog_sel_row: kb == NULL\n"); + abort (); + } + if (kb->action > -1 && kb->action <= KEY_MAX_ACTIONS) + { + gtk_option_menu_set_history (GTK_OPTION_MENU (key_dialog_act_menu), + kb->action); + if (key_actions[kb->action].help) + { + key_print_text (GTK_XTEXT (key_dialog_text), _(key_actions[kb->action].help)); + } + } + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (key_dialog_tog_c), + (kb->mod & STATE_CTRL) == STATE_CTRL); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (key_dialog_tog_s), + (kb->mod & STATE_SHIFT) == STATE_SHIFT); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (key_dialog_tog_a), + (kb->mod & STATE_ALT) == STATE_ALT); + + if (kb->data1) + gtk_entry_set_text (GTK_ENTRY (key_dialog_ent_d1), kb->data1); + else + gtk_entry_set_text (GTK_ENTRY (key_dialog_ent_d1), ""); + + if (kb->data2) + gtk_entry_set_text (GTK_ENTRY (key_dialog_ent_d2), kb->data2); + else + gtk_entry_set_text (GTK_ENTRY (key_dialog_ent_d2), ""); + + if (kb->keyname) + gtk_entry_set_text (GTK_ENTRY (key_dialog_ent_key), kb->keyname); + else + gtk_entry_set_text (GTK_ENTRY (key_dialog_ent_key), ""); +} + +static void +key_dialog_tog_key (GtkWidget * tog, int kstate) +{ + int state = GTK_TOGGLE_BUTTON (tog)->active; + int row = gtkutil_clist_selection (key_dialog_kb_clist); + struct key_binding *kb; + char buf[32]; + + if (row == -1) + return; + + kb = gtk_clist_get_row_data (GTK_CLIST (key_dialog_kb_clist), row); + if (state) + kb->mod |= kstate; + else + kb->mod &= ~kstate; + + gtk_clist_set_text (GTK_CLIST (key_dialog_kb_clist), row, 0, + key_make_mod_str (kb->mod, buf)); +} + +static GtkWidget * +key_dialog_make_toggle (char *label, void *callback, void *option, + GtkWidget * box) +{ + GtkWidget *wid; + + wid = gtk_check_button_new_with_label (label); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wid), 0); + gtk_signal_connect (GTK_OBJECT (wid), "toggled", + GTK_SIGNAL_FUNC (callback), option); + gtk_box_pack_end (GTK_BOX (box), wid, 0, 0, 0); + gtk_widget_show (wid); + + return wid; +} + +static GtkWidget * +key_dialog_make_entry (char *label, char *act, void *callback, void *option, + GtkWidget * box) +{ + GtkWidget *wid, *hbox;; + + hbox = gtk_hbox_new (0, 2); + if (label) + { + wid = gtk_label_new (label); + gtk_widget_show (wid); + gtk_box_pack_start (GTK_BOX (hbox), wid, 0, 0, 0); + } + wid = gtk_entry_new (); + if (act) + { + gtk_signal_connect (GTK_OBJECT (wid), act, GTK_SIGNAL_FUNC (callback), + option); + } + gtk_box_pack_start (GTK_BOX (hbox), wid, 0, 0, 0); + gtk_widget_show (wid); + gtk_widget_show (hbox); + + gtk_box_pack_start (GTK_BOX (box), hbox, 0, 0, 0); + + return wid; +} + +static void +key_dialog_set_key (GtkWidget * entry, GdkEventKey * evt, void *none) +{ + int row = gtkutil_clist_selection (key_dialog_kb_clist); + struct key_binding *kb; + + gtk_entry_set_text (GTK_ENTRY (entry), ""); + + if (row == -1) + return; + + kb = gtk_clist_get_row_data (GTK_CLIST (key_dialog_kb_clist), row); + kb->keyval = evt->keyval; + kb->keyname = key_get_key_name (kb->keyval); + gtk_clist_set_text (GTK_CLIST (key_dialog_kb_clist), row, 1, kb->keyname); + gtk_entry_set_text (GTK_ENTRY (entry), kb->keyname); + g_signal_stop_emission_by_name (G_OBJECT (entry), "key_press_event"); +} + +static void +key_dialog_set_data (GtkWidget * entry, int d) +{ + const char *text = gtk_entry_get_text (GTK_ENTRY (entry)); + int row = gtkutil_clist_selection (key_dialog_kb_clist); + struct key_binding *kb; + char *buf; + int len = strlen (text); + + len++; + + if (row == -1) + return; + + kb = gtk_clist_get_row_data (GTK_CLIST (key_dialog_kb_clist), row); + if (d == 0) + { /* using data1 */ + if (kb->data1) + free (kb->data1); + buf = (char *) malloc (len); + memcpy (buf, text, len); + kb->data1 = buf; + gtk_clist_set_text (GTK_CLIST (key_dialog_kb_clist), row, 3, text); + } else + { + if (kb->data2) + free (kb->data2); + buf = (char *) malloc (len); + memcpy (buf, text, len); + kb->data2 = buf; + gtk_clist_set_text (GTK_CLIST (key_dialog_kb_clist), row, 4, text); + } +} + +void +key_dialog_show () +{ + GtkWidget *vbox, *hbox, *list, *vbox2, *wid, *wid2, *wid3, *hbox2; + struct key_binding *kb; + gchar *titles[] = { NULL, NULL, NULL, "1", "2" }; + char temp[32]; + int i; + + titles[0] = _("Mod"); + titles[1] = _("Key"); + titles[2] = _("Action"); + + if (key_dialog) + { + mg_bring_tofront (key_dialog); + return; + } + + key_dialog = + mg_create_generic_tab ("editkeys", _("XChat: Keyboard Shortcuts"), + TRUE, FALSE, key_dialog_close, NULL, 560, 330, &vbox, 0); + + hbox = gtk_hbox_new (0, 2); + gtk_box_pack_start (GTK_BOX (vbox), hbox, 1, 1, 0); + + list = gtkutil_clist_new (5, titles, hbox, 0, key_dialog_sel_row, 0, NULL, + 0, GTK_SELECTION_SINGLE); + gtk_widget_set_usize (list, 400, 0); + key_dialog_kb_clist = list; + + gtk_widget_show (hbox); + + kb = keys_root; + + gtk_clist_set_column_width (GTK_CLIST (list), 1, 50); + gtk_clist_set_column_width (GTK_CLIST (list), 2, 120); + gtk_clist_set_column_width (GTK_CLIST (list), 3, 50); + gtk_clist_set_column_width (GTK_CLIST (list), 4, 50); + + while (kb) + { + titles[0] = key_make_mod_str (kb->mod, temp); + titles[1] = kb->keyname; + if (kb->action < 0 || kb->action > KEY_MAX_ACTIONS) + titles[2] = _("<none>"); + else + titles[2] = key_actions[kb->action].name; + if (kb->data1) + titles[3] = kb->data1; + else + titles[3] = _("<none>"); + + if (kb->data2) + titles[4] = kb->data2; + else + titles[4] = _("<none>"); + + gtk_clist_set_row_data (GTK_CLIST (list), + gtk_clist_append (GTK_CLIST (list), titles), + kb); + + kb = kb->next; + } + + vbox2 = gtk_vbox_new (0, 2); + gtk_box_pack_end (GTK_BOX (hbox), vbox2, 1, 1, 0); + wid = gtk_button_new_with_label (_("Add New")); + gtk_box_pack_start (GTK_BOX (vbox2), wid, 0, 0, 0); + gtk_signal_connect (GTK_OBJECT (wid), "clicked", + GTK_SIGNAL_FUNC (key_dialog_add_new), list); + gtk_widget_show (wid); + wid = gtk_button_new_with_label (_("Delete")); + gtk_box_pack_start (GTK_BOX (vbox2), wid, 0, 0, 0); + gtk_signal_connect (GTK_OBJECT (wid), "clicked", + GTK_SIGNAL_FUNC (key_dialog_delete), list); + gtk_widget_show (wid); + gtk_widget_show (vbox2); + + wid = gtk_option_menu_new (); + wid2 = gtk_menu_new (); + + for (i = 0; i <= KEY_MAX_ACTIONS; i++) + { + wid3 = gtk_menu_item_new_with_label (_(key_actions[i].name)); + gtk_widget_show (wid3); + gtk_menu_shell_append (GTK_MENU_SHELL (wid2), wid3); + gtk_signal_connect (GTK_OBJECT (wid3), "activate", + GTK_SIGNAL_FUNC (key_dialog_sel_act), + GINT_TO_POINTER (i)); + } + + gtk_option_menu_set_menu (GTK_OPTION_MENU (wid), wid2); + gtk_option_menu_set_history (GTK_OPTION_MENU (wid), 0); + gtk_box_pack_end (GTK_BOX (vbox2), wid, 0, 0, 0); + gtk_widget_show (wid); + key_dialog_act_menu = wid; + + key_dialog_tog_s = key_dialog_make_toggle (_("Shift"), key_dialog_tog_key, + (void *) STATE_SHIFT, vbox2); + key_dialog_tog_a = key_dialog_make_toggle (_("Alt"), key_dialog_tog_key, + (void *) STATE_ALT, vbox2); + key_dialog_tog_c = key_dialog_make_toggle (_("Ctrl"), key_dialog_tog_key, + (void *) STATE_CTRL, vbox2); + + key_dialog_ent_key = key_dialog_make_entry (_("Key"), "key_press_event", + key_dialog_set_key, NULL, + vbox2); + + key_dialog_ent_d1 = key_dialog_make_entry (_("Data 1"), "activate", + key_dialog_set_data, NULL, + vbox2); + key_dialog_ent_d2 = key_dialog_make_entry (_("Data 2"), "activate", + key_dialog_set_data, + (void *) 1, vbox2); + + hbox2 = gtk_hbox_new (0, 2); + gtk_box_pack_end (GTK_BOX (vbox), hbox2, 0, 0, 1); + + wid = gtk_xtext_new (colors, 0); + gtk_xtext_set_tint (GTK_XTEXT (wid), prefs.tint_red, prefs.tint_green, prefs.tint_blue); + gtk_xtext_set_background (GTK_XTEXT (wid), + channelwin_pix, + prefs.transparent); + gtk_widget_set_usize (wid, 0, 75); + gtk_box_pack_start (GTK_BOX (hbox2), wid, 1, 1, 1); + gtk_xtext_set_font (GTK_XTEXT (wid), prefs.font_normal); + gtk_widget_show (wid); + + wid2 = gtk_vscrollbar_new (GTK_XTEXT (wid)->adj); + gtk_box_pack_start (GTK_BOX (hbox2), wid2, 0, 0, 0); + gtk_widget_show (wid2); + + gtk_widget_show (hbox2); + key_dialog_text = wid; + + gtk_widget_show_all (key_dialog); +} + +static void +key_save_kbs (char *fn) +{ + int fd, i; + char buf[512]; + struct key_binding *kb; + + if (!fn) + fd = xchat_open_file ("keybindings.conf", O_CREAT | O_TRUNC | O_WRONLY, + 0x180, XOF_DOMODE); + else + fd = xchat_open_file (fn, O_CREAT | O_TRUNC | O_WRONLY, + 0x180, XOF_DOMODE | XOF_FULLPATH); + if (fd < 0) + { + fe_message (_("Error opening keys config file\n"), FE_MSG_ERROR); + return; + } + write (fd, buf, + snprintf (buf, 510, "# XChat key bindings config file\n\n")); + + kb = keys_root; + i = 0; + + while (kb) + { + if (kb->keyval == -1 || kb->keyname == NULL || kb->action < 0) + { + kb = kb->next; + continue; + } + i = 0; + if (kb->mod & STATE_CTRL) + { + i++; + write (fd, "C", 1); + } + if (kb->mod & STATE_ALT) + { + i++; + write (fd, "A", 1); + } + if (kb->mod & STATE_SHIFT) + { + i++; + write (fd, "S", 1); + } + if (i == 0) + write (fd, "None\n", 5); + else + write (fd, "\n", 1); + + write (fd, buf, snprintf (buf, 510, "%s\n%s\n", kb->keyname, + key_actions[kb->action].name)); + if (kb->data1 && kb->data1[0]) + write (fd, buf, snprintf (buf, 510, "D1:%s\n", kb->data1)); + else + write (fd, "D1!\n", 4); + + if (kb->data2 && kb->data2[0]) + write (fd, buf, snprintf (buf, 510, "D2:%s\n", kb->data2)); + else + write (fd, "D2!\n", 4); + + write (fd, "\n", 1); + + kb = kb->next; + } + + close (fd); +} + +/* I just know this is going to be a nasty parse, if you think it's bugged + it almost certainly is so contact the XChat dev team --AGL */ + +static inline int +key_load_kbs_helper_mod (char *in, int *out) +{ + int n, len, mod = 0; + + /* First strip off the fluff */ + while (in[0] == ' ' || in[0] == '\t') + in++; + len = strlen (in); + while (in[len] == ' ' || in[len] == '\t') + { + in[len] = 0; + len--; + } + + if (strcmp (in, "None") == 0) + { + *out = 0; + return 0; + } + for (n = 0; n < len; n++) + { + switch (in[n]) + { + case 'C': + mod |= STATE_CTRL; + break; + case 'A': + mod |= STATE_ALT; + break; + case 'S': + mod |= STATE_SHIFT; + break; + default: + return 1; + } + } + + *out = mod; + return 0; +} + +/* These are just local defines to keep me sane --AGL */ + +#define KBSTATE_MOD 0 +#define KBSTATE_KEY 1 +#define KBSTATE_ACT 2 +#define KBSTATE_DT1 3 +#define KBSTATE_DT2 4 + +/* *** Warning, Warning! - massive function ahead! --AGL */ + +static int +key_load_kbs (char *filename) +{ + char *buf, *ibuf; + struct stat st; + struct key_binding *kb = NULL, *last = NULL; + int fd, len, pnt = 0, state = 0, n; + + if (filename == NULL) + fd = xchat_open_file ("keybindings.conf", O_RDONLY, 0, 0); + else + fd = xchat_open_file (filename, O_RDONLY, 0, XOF_FULLPATH); + if (fd < 0) + return 1; + if (fstat (fd, &st) != 0) + return 1; + ibuf = malloc (st.st_size); + read (fd, ibuf, st.st_size); + close (fd); + + while (buf_get_line (ibuf, &buf, &pnt, st.st_size)) + { + if (buf[0] == '#') + continue; + if (strlen (buf) == 0) + continue; + + switch (state) + { + case KBSTATE_MOD: + kb = (struct key_binding *) malloc (sizeof (struct key_binding)); + if (key_load_kbs_helper_mod (buf, &kb->mod)) + goto corrupt_file; + state = KBSTATE_KEY; + continue; + case KBSTATE_KEY: + /* First strip off the fluff */ + while (buf[0] == ' ' || buf[0] == '\t') + buf++; + len = strlen (buf); + while (buf[len] == ' ' || buf[len] == '\t') + { + buf[len] = 0; + len--; + } + + n = gdk_keyval_from_name (buf); + if (n == 0) + { + /* Unknown keyname, abort */ + if (last) + last->next = NULL; + free (ibuf); + ibuf = malloc (1024); + snprintf (ibuf, 1024, + _("Unknown keyname %s in key bindings config file\nLoad aborted, please fix %s/keybindings.conf\n"), + buf, get_xdir_utf8 ()); + fe_message (ibuf, FE_MSG_ERROR); + free (ibuf); + return 2; + } + kb->keyname = gdk_keyval_name (n); + kb->keyval = n; + + state = KBSTATE_ACT; + continue; + case KBSTATE_ACT: + /* First strip off the fluff */ + while (buf[0] == ' ' || buf[0] == '\t') + buf++; + len = strlen (buf); + while (buf[len] == ' ' || buf[len] == '\t') + { + buf[len] = 0; + len--; + } + + for (n = 0; n < KEY_MAX_ACTIONS + 1; n++) + { + if (strcmp (key_actions[n].name, buf) == 0) + { + kb->action = n; + break; + } + } + + if (n == KEY_MAX_ACTIONS + 1) + { + if (last) + last->next = NULL; + free (ibuf); + ibuf = malloc (1024); + snprintf (ibuf, 1024, + _("Unknown action %s in key bindings config file\nLoad aborted, Please fix %s/keybindings\n"), + buf, get_xdir_utf8 ()); + fe_message (ibuf, FE_MSG_ERROR); + free (ibuf); + return 3; + } + state = KBSTATE_DT1; + continue; + case KBSTATE_DT1: + case KBSTATE_DT2: + if (state == KBSTATE_DT1) + kb->data1 = kb->data2 = NULL; + + while (buf[0] == ' ' || buf[0] == '\t') + buf++; + + if (buf[0] != 'D') + { + free (ibuf); + ibuf = malloc (1024); + snprintf (ibuf, 1024, + _("Expecting Data line (beginning Dx{:|!}) but got:\n%s\n\nLoad aborted, Please fix %s/keybindings\n"), + buf, get_xdir_utf8 ()); + fe_message (ibuf, FE_MSG_ERROR); + free (ibuf); + return 4; + } + switch (buf[1]) + { + case '1': + if (state != KBSTATE_DT1) + goto corrupt_file; + break; + case '2': + if (state != KBSTATE_DT2) + goto corrupt_file; + break; + default: + goto corrupt_file; + } + + if (buf[2] == ':') + { + len = strlen (buf); + /* Add one for the NULL, subtract 3 for the "Dx:" */ + len++; + len -= 3; + if (state == KBSTATE_DT1) + { + kb->data1 = malloc (len); + memcpy (kb->data1, &buf[3], len); + } else + { + kb->data2 = malloc (len); + memcpy (kb->data2, &buf[3], len); + } + } else if (buf[2] == '!') + { + if (state == KBSTATE_DT1) + kb->data1 = NULL; + else + kb->data2 = NULL; + } + if (state == KBSTATE_DT1) + { + state = KBSTATE_DT2; + continue; + } else + { + if (last) + last->next = kb; + else + keys_root = kb; + last = kb; + + state = KBSTATE_MOD; + } + + continue; + } + } + if (last) + last->next = NULL; + free (ibuf); + return 0; + + corrupt_file: + /*if (getenv ("XCHAT_DEBUG")) + abort ();*/ + snprintf (ibuf, 1024, + _("Key bindings config file is corrupt, load aborted\n" + "Please fix %s/keybindings.conf\n"), + get_xdir_utf8 ()); + fe_message (ibuf, FE_MSG_ERROR); + free (ibuf); + return 5; +} + +/* ***** Key actions start here *********** */ + +/* See the NOTES above --AGL */ + +/* "Run command" */ +static int +key_action_handle_command (GtkWidget * wid, GdkEventKey * evt, char *d1, + char *d2, struct session *sess) +{ + int ii, oi, len; + char out[2048], d = 0; + + if (!d1) + return 0; + + len = strlen (d1); + + /* Replace each "\n" substring with '\n' */ + for (ii = oi = 0; ii < len; ii++) + { + d = d1[ii]; + if (d == '\\') + { + ii++; + d = d1[ii]; + if (d == 'n') + out[oi++] = '\n'; + else if (d == '\\') + out[oi++] = '\\'; + else + { + out[oi++] = '\\'; + out[oi++] = d; + } + continue; + } + out[oi++] = d; + } + out[oi] = 0; + + handle_multiline (sess, out, 0, 0); + return 0; +} + +static int +key_action_page_switch (GtkWidget * wid, GdkEventKey * evt, char *d1, + char *d2, struct session *sess) +{ + int len, i, num; + + if (!d1) + return 1; + + len = strlen (d1); + if (!len) + return 1; + + for (i = 0; i < len; i++) + { + if (d1[i] < '0' || d1[i] > '9') + { + if (i == 0 && (d1[i] == '+' || d1[i] == '-')) + continue; + else + return 1; + } + } + + num = atoi (d1); + if (!d2) + num--; + if (!d2 || d2[0] == 0) + mg_switch_page (FALSE, num); + else + mg_switch_page (TRUE, num); + return 0; +} + +int +key_action_insert (GtkWidget * wid, GdkEventKey * evt, char *d1, char *d2, + struct session *sess) +{ + int tmp_pos; + + if (!d1) + return 1; + + tmp_pos = SPELL_ENTRY_GET_POS (wid); + SPELL_ENTRY_INSERT (wid, d1, strlen (d1), &tmp_pos); + SPELL_ENTRY_SET_POS (wid, tmp_pos); + return 2; +} + +/* handles PageUp/Down keys */ +static int +key_action_scroll_page (GtkWidget * wid, GdkEventKey * evt, char *d1, + char *d2, struct session *sess) +{ + int value, end; + GtkAdjustment *adj; + enum scroll_type { PAGE_UP, PAGE_DOWN, LINE_UP, LINE_DOWN }; + int type = PAGE_DOWN; + + if (d1) + { + if (!strcasecmp (d1, "up")) + type = PAGE_UP; + else if (!strcasecmp (d1, "+1")) + type = LINE_DOWN; + else if (!strcasecmp (d1, "-1")) + type = LINE_UP; + } + + if (!sess) + return 0; + + adj = GTK_RANGE (sess->gui->vscrollbar)->adjustment; + end = adj->upper - adj->lower - adj->page_size; + + switch (type) + { + case LINE_UP: + value = adj->value - 1.0; + break; + + case LINE_DOWN: + value = adj->value + 1.0; + break; + + case PAGE_UP: + value = adj->value - (adj->page_size - 1); + break; + + default: /* PAGE_DOWN */ + value = adj->value + (adj->page_size - 1); + break; + } + + if (value < 0) + value = 0; + if (value > end) + value = end; + + gtk_adjustment_set_value (adj, value); + + return 0; +} + +static int +key_action_set_buffer (GtkWidget * wid, GdkEventKey * evt, char *d1, char *d2, + struct session *sess) +{ + if (!d1) + return 1; + if (d1[0] == 0) + return 1; + + SPELL_ENTRY_SET_TEXT (wid, d1); + SPELL_ENTRY_SET_POS (wid, -1); + + return 2; +} + +static int +key_action_history_up (GtkWidget * wid, GdkEventKey * ent, char *d1, char *d2, + struct session *sess) +{ + char *new_line; + + new_line = history_up (&sess->history, SPELL_ENTRY_GET_TEXT (wid)); + if (new_line) + { + SPELL_ENTRY_SET_TEXT (wid, new_line); + SPELL_ENTRY_SET_POS (wid, -1); + } + + return 2; +} + +static int +key_action_history_down (GtkWidget * wid, GdkEventKey * ent, char *d1, + char *d2, struct session *sess) +{ + char *new_line; + + new_line = history_down (&sess->history); + if (new_line) + { + SPELL_ENTRY_SET_TEXT (wid, new_line); + SPELL_ENTRY_SET_POS (wid, -1); + } + + return 2; +} + +/* old data that we reuse */ +static struct gcomp_data old_gcomp; + +/* work on the data, ie return only channels */ +static int +double_chan_cb (session *lsess, GList **list) +{ + if (lsess->type == SESS_CHANNEL) + *list = g_list_prepend(*list, lsess->channel); + return TRUE; +} + +/* convert a slist -> list. */ +static GList * +chanlist_double_list (GSList *inlist) +{ + GList *list = NULL; + g_slist_foreach(inlist, (GFunc)double_chan_cb, &list); + return list; +} + +/* handle commands */ +static int +double_cmd_cb (struct popup *pop, GList **list) +{ + *list = g_list_prepend(*list, pop->name); + return TRUE; +} + +/* convert a slist -> list. */ +static GList * +cmdlist_double_list (GSList *inlist) +{ + GList *list = NULL; + g_slist_foreach (inlist, (GFunc)double_cmd_cb, &list); + return list; +} + +static char * +gcomp_nick_func (char *data) +{ + if (data) + return ((struct User *)data)->nick; + return ""; +} + +void +key_action_tab_clean(void) +{ + if (old_gcomp.elen) + { + old_gcomp.data[0] = 0; + old_gcomp.elen = 0; + } +} + +/* Used in the followig completers */ +#define COMP_BUF 2048 + +/* For use in sorting the user list for completion */ +static int +talked_recent_cmp (struct User *a, struct User *b) +{ + if (a->lasttalk < b->lasttalk) + return -1; + + if (a->lasttalk > b->lasttalk) + return 1; + + return 0; +} + +static int +key_action_tab_comp (GtkWidget *t, GdkEventKey *entry, char *d1, char *d2, + struct session *sess) +{ + int len = 0, elen = 0, i = 0, cursor_pos, ent_start = 0, comp = 0, found = 0, + prefix_len, skip_len = 0, is_nick, is_cmd = 0; + char buf[COMP_BUF], ent[CHANLEN], *postfix = NULL, *result, *ch; + GList *list = NULL, *tmp_list = NULL; + const char *text; + GCompletion *gcomp = NULL; + + /* force the IM Context to reset */ + SPELL_ENTRY_SET_EDITABLE (t, FALSE); + SPELL_ENTRY_SET_EDITABLE (t, TRUE); + + text = SPELL_ENTRY_GET_TEXT (t); + if (text[0] == 0) + return 1; + + len = g_utf8_strlen (text, -1); /* must be null terminated */ + + cursor_pos = SPELL_ENTRY_GET_POS (t); + + buf[0] = 0; /* make sure we don't get garbage in the buffer */ + + /* handle "nick: " or "nick " or "#channel "*/ + ch = g_utf8_find_prev_char(text, g_utf8_offset_to_pointer(text,cursor_pos)); + if (ch && ch[0] == ' ') + { + skip_len++; + ch = g_utf8_find_prev_char(text, ch); + if (!ch) + return 2; + + cursor_pos = g_utf8_pointer_to_offset(text, ch); + if (cursor_pos && (g_utf8_get_char_validated(ch, -1) == ':' || + g_utf8_get_char_validated(ch, -1) == ',' || + g_utf8_get_char_validated(ch, -1) == prefs.nick_suffix[0])) + { + skip_len++; + } + else + cursor_pos = g_utf8_pointer_to_offset(text, g_utf8_offset_to_pointer(ch, 1)); + } + + comp = skip_len; + + /* store the text following the cursor for reinsertion later */ + if ((cursor_pos + skip_len) < len) + postfix = g_utf8_offset_to_pointer(text, cursor_pos + skip_len); + + for (ent_start = cursor_pos; ; --ent_start) + { + if (ent_start == 0) + break; + ch = g_utf8_offset_to_pointer(text, ent_start - 1); + if (ch && ch[0] == ' ') + break; + } + + if (ent_start == 0 && text[0] == prefs.cmdchar[0]) + { + ent_start++; + is_cmd = 1; + } + + prefix_len = ent_start; + elen = cursor_pos - ent_start; + + g_utf8_strncpy (ent, g_utf8_offset_to_pointer (text, prefix_len), elen); + + is_nick = (ent[0] == '#' || ent[0] == '&' || is_cmd) ? 0 : 1; + + if (sess->type == SESS_DIALOG && is_nick) + { + /* tab in a dialog completes the other person's name */ + if (rfc_ncasecmp (sess->channel, ent, elen) == 0) + { + result = sess->channel; + is_nick = 0; + } + else + return 2; + } + else + { + if (is_nick) + { + gcomp = g_completion_new((GCompletionFunc)gcomp_nick_func); + tmp_list = userlist_double_list(sess); /* create a temp list so we can free the memory */ + if (prefs.completion_sort == 1) /* sort in last-talk order? */ + tmp_list = g_list_sort (tmp_list, (void *)talked_recent_cmp); + } + else + { + gcomp = g_completion_new (NULL); + if (is_cmd) + { + tmp_list = cmdlist_double_list (command_list); + for(i = 0; xc_cmds[i].name != NULL ; i++) + { + tmp_list = g_list_prepend (tmp_list, xc_cmds[i].name); + } + tmp_list = plugin_command_list(tmp_list); + } + else + tmp_list = chanlist_double_list (sess_list); + } + tmp_list = g_list_reverse(tmp_list); /* make the comp entries turn up in the right order */ + g_completion_set_compare (gcomp, (GCompletionStrncmpFunc)rfc_ncasecmp); + if (tmp_list) + { + g_completion_add_items (gcomp, tmp_list); + g_list_free (tmp_list); + } + + if (comp && !(rfc_ncasecmp(old_gcomp.data, ent, old_gcomp.elen) == 0)) + { + key_action_tab_clean (); + comp = 0; + } + +#if GLIB_CHECK_VERSION(2,4,0) + list = g_completion_complete_utf8 (gcomp, comp ? old_gcomp.data : ent, &result); +#else + list = g_completion_complete (gcomp, comp ? old_gcomp.data : ent, &result); +#endif + + if (result == NULL) /* No matches found */ + { + g_completion_free(gcomp); + return 2; + } + + if (comp) /* existing completion */ + { + while(list) /* find the current entry */ + { + if(rfc_ncasecmp(list->data, ent, elen) == 0) + { + found = 1; + break; + } + list = list->next; + } + + if (found) + { + if (!(d1 && d1[0])) /* not holding down shift */ + { + if (g_list_next(list) == NULL) + list = g_list_first(list); + else + list = g_list_next(list); + } + else + { + if (g_list_previous(list) == NULL) + list = g_list_last(list); + else + list = g_list_previous(list); + } + g_free(result); + result = (char*)list->data; + } + else + { + g_free(result); + g_completion_free(gcomp); + return 2; + } + } + else + { + strcpy(old_gcomp.data, ent); + old_gcomp.elen = elen; + + /* Get the first nick and put out the data for future nickcompletes */ + if (prefs.completion_amount && g_list_length (list) <= prefs.completion_amount) + { + g_free(result); + result = (char*)list->data; + } + else + { + /* bash style completion */ + if (g_list_next(list) != NULL) + { + if (strlen (result) > elen) /* the largest common prefix is larger than nick, change the data */ + { + if (prefix_len) + g_utf8_strncpy (buf, text, prefix_len); + strncat (buf, result, COMP_BUF - prefix_len); + cursor_pos = strlen (buf); + g_free(result); +#if !GLIB_CHECK_VERSION(2,4,0) + g_utf8_validate (buf, -1, (const gchar **)&result); + (*result) = 0; +#endif + if (postfix) + { + strcat (buf, " "); + strncat (buf, postfix, COMP_BUF - cursor_pos -1); + } + SPELL_ENTRY_SET_TEXT (t, buf); + SPELL_ENTRY_SET_POS (t, g_utf8_pointer_to_offset(buf, buf + cursor_pos)); + buf[0] = 0; + } + else + g_free(result); + while (list) + { + len = strlen (buf); /* current buffer */ + elen = strlen (list->data); /* next item to add */ + if (len + elen + 2 >= COMP_BUF) /* +2 is space + null */ + { + PrintText (sess, buf); + buf[0] = 0; + len = 0; + } + strcpy (buf + len, (char *) list->data); + strcpy (buf + len + elen, " "); + list = list->next; + } + PrintText (sess, buf); + g_completion_free(gcomp); + return 2; + } + /* Only one matching entry */ + g_free(result); + result = list->data; + } + } + } + + if(result) + { + if (prefix_len) + g_utf8_strncpy(buf, text, prefix_len); + strncat (buf, result, COMP_BUF - (prefix_len + 3)); /* make sure nicksuffix and space fits */ + if(!prefix_len && is_nick) + strcat (buf, &prefs.nick_suffix[0]); + strcat (buf, " "); + cursor_pos = strlen (buf); + if (postfix) + strncat (buf, postfix, COMP_BUF - cursor_pos - 2); + SPELL_ENTRY_SET_TEXT (t, buf); + SPELL_ENTRY_SET_POS (t, g_utf8_pointer_to_offset(buf, buf + cursor_pos)); + } + if (gcomp) + g_completion_free(gcomp); + return 2; +} +#undef COMP_BUF + +static int +key_action_comp_chng (GtkWidget * wid, GdkEventKey * ent, char *d1, char *d2, + struct session *sess) +{ + key_action_tab_comp(wid, ent, d1, d2, sess); + return 2; +} + + +static int +key_action_replace (GtkWidget * wid, GdkEventKey * ent, char *d1, char *d2, + struct session *sess) +{ + replace_handle (wid); + return 1; +} + + +static int +key_action_move_tab_left (GtkWidget * wid, GdkEventKey * ent, char *d1, + char *d2, struct session *sess) +{ + mg_move_tab (sess, +1); + return 2; /* don't allow default action */ +} + +static int +key_action_move_tab_right (GtkWidget * wid, GdkEventKey * ent, char *d1, + char *d2, struct session *sess) +{ + mg_move_tab (sess, -1); + return 2; /* -''- */ +} + +static int +key_action_move_tab_family_left (GtkWidget * wid, GdkEventKey * ent, char *d1, + char *d2, struct session *sess) +{ + mg_move_tab_family (sess, +1); + return 2; /* don't allow default action */ +} + +static int +key_action_move_tab_family_right (GtkWidget * wid, GdkEventKey * ent, char *d1, + char *d2, struct session *sess) +{ + mg_move_tab_family (sess, -1); + return 2; /* -''- */ +} + +static int +key_action_put_history (GtkWidget * wid, GdkEventKey * ent, char *d1, + char *d2, struct session *sess) +{ + history_add (&sess->history, SPELL_ENTRY_GET_TEXT (wid)); + SPELL_ENTRY_SET_TEXT (wid, ""); + return 2; /* -''- */ +} + + +/* -------- */ + + +#define STATE_SHIFT GDK_SHIFT_MASK +#define STATE_ALT GDK_MOD1_MASK +#define STATE_CTRL GDK_CONTROL_MASK + +static void +replace_handle (GtkWidget *t) +{ + const char *text, *postfix_pnt; + struct popup *pop; + GSList *list = replace_list; + char word[256]; + char postfix[256]; + char outbuf[4096]; + int c, len, xlen; + + text = SPELL_ENTRY_GET_TEXT (t); + + len = strlen (text); + if (len < 1) + return; + + for (c = len - 1; c > 0; c--) + { + if (text[c] == ' ') + break; + } + if (text[c] == ' ') + c++; + xlen = c; + if (len - c >= (sizeof (word) - 12)) + return; + if (len - c < 1) + return; + memcpy (word, &text[c], len - c); + word[len - c] = 0; + len = strlen (word); + if (word[0] == '\'' && word[len] == '\'') + return; + postfix_pnt = NULL; + for (c = 0; c < len; c++) + { + if (word[c] == '\'') + { + postfix_pnt = &word[c + 1]; + word[c] = 0; + break; + } + } + + if (postfix_pnt != NULL) + { + if (strlen (postfix_pnt) > sizeof (postfix) - 12) + return; + strcpy (postfix, postfix_pnt); + } + while (list) + { + pop = (struct popup *) list->data; + if (strcmp (pop->name, word) == 0) + { + memcpy (outbuf, text, xlen); + outbuf[xlen] = 0; + if (postfix_pnt == NULL) + snprintf (word, sizeof (word), "%s", pop->cmd); + else + snprintf (word, sizeof (word), "%s%s", pop->cmd, postfix); + strcat (outbuf, word); + SPELL_ENTRY_SET_TEXT (t, outbuf); + SPELL_ENTRY_SET_POS (t, -1); + return; + } + list = list->next; + } +} + diff --git a/xchat-2.8.8/src/fe-gtk/fkeys.h b/xchat-2.8.8/src/fe-gtk/fkeys.h new file mode 100644 index 0000000..20cd4c7 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/fkeys.h @@ -0,0 +1,5 @@ +void key_init (void); +void key_dialog_show (void); +int key_handle_key_press (GtkWidget * wid, GdkEventKey * evt, session *sess); +int key_action_insert (GtkWidget * wid, GdkEventKey * evt, char *d1, char *d2, + session *sess); diff --git a/xchat-2.8.8/src/fe-gtk/gtkutil.c b/xchat-2.8.8/src/fe-gtk/gtkutil.c new file mode 100644 index 0000000..63ab491 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/gtkutil.c @@ -0,0 +1,675 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ +#define _FILE_OFFSET_BITS 64 /* allow selection of large files */ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <stdarg.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <unistd.h> +#include <fcntl.h> +#include "fe-gtk.h" + +#include <gtk/gtkbutton.h> +#include <gtk/gtkclist.h> +#include <gtk/gtkscrolledwindow.h> +#include <gtk/gtkmessagedialog.h> +#include <gtk/gtkwindow.h> +#include <gtk/gtkhbox.h> +#include <gtk/gtkimage.h> +#include <gtk/gtktooltips.h> +#include <gtk/gtklabel.h> +#include <gtk/gtkentry.h> +#include <gtk/gtkstock.h> +#include <gtk/gtkspinbutton.h> +#include <gtk/gtkclipboard.h> +#include <gtk/gtktreeview.h> +#include <gtk/gtktreeselection.h> +#include <gtk/gtkcellrenderertext.h> +#include <gtk/gtkcellrenderertoggle.h> +#include <gtk/gtkversion.h> +#include <gtk/gtkfilechooserdialog.h> + +#include "../common/xchat.h" +#include "../common/fe.h" +#include "../common/util.h" +#include "gtkutil.h" +#include "pixmaps.h" + +/* gtkutil.c, just some gtk wrappers */ + +extern void path_part (char *file, char *path, int pathlen); + + +struct file_req +{ + GtkWidget *dialog; + void *userdata; + filereqcallback callback; + int flags; /* FRF_* flags */ +}; + +static char last_dir[256] = ""; + + +static void +gtkutil_file_req_destroy (GtkWidget * wid, struct file_req *freq) +{ + freq->callback (freq->userdata, NULL); + free (freq); +} + +static void +gtkutil_check_file (char *file, struct file_req *freq) +{ + struct stat st; + int axs = FALSE; + + path_part (file, last_dir, sizeof (last_dir)); + + /* check if the file is readable or writable */ + if (freq->flags & FRF_WRITE) + { + if (access (last_dir, W_OK) == 0) + axs = TRUE; + } else + { + if (stat (file, &st) != -1) + { + if (!S_ISDIR (st.st_mode) || (freq->flags & FRF_CHOOSEFOLDER)) + axs = TRUE; + } + } + + if (axs) + { + char *utf8_file; + /* convert to UTF8. It might be converted back to locale by + server.c's g_convert */ + utf8_file = xchat_filename_to_utf8 (file, -1, NULL, NULL, NULL); + if (utf8_file) + { + freq->callback (freq->userdata, utf8_file); + g_free (utf8_file); + } else + { + fe_message ("Filename encoding is corrupt.", FE_MSG_ERROR); + } + } else + { + if (freq->flags & FRF_WRITE) + fe_message (_("Cannot write to that file."), FE_MSG_ERROR); + else + fe_message (_("Cannot read that file."), FE_MSG_ERROR); + } +} + +static void +gtkutil_file_req_done (GtkWidget * wid, struct file_req *freq) +{ + GSList *files, *cur; + GtkFileChooser *fs = GTK_FILE_CHOOSER (freq->dialog); + + if (freq->flags & FRF_MULTIPLE) + { + files = cur = gtk_file_chooser_get_filenames (fs); + while (cur) + { + gtkutil_check_file (cur->data, freq); + g_free (cur->data); + cur = cur->next; + } + if (files) + g_slist_free (files); + } else + { + if (freq->flags & FRF_CHOOSEFOLDER) + gtkutil_check_file (gtk_file_chooser_get_current_folder (fs), freq); + else + gtkutil_check_file (gtk_file_chooser_get_filename (fs), freq); + } + + /* this should call the "destroy" cb, where we free(freq) */ + gtk_widget_destroy (freq->dialog); +} + +static void +gtkutil_file_req_response (GtkWidget *dialog, gint res, struct file_req *freq) +{ + switch (res) + { + case GTK_RESPONSE_ACCEPT: + gtkutil_file_req_done (dialog, freq); + break; + + case GTK_RESPONSE_CANCEL: + /* this should call the "destroy" cb, where we free(freq) */ + gtk_widget_destroy (freq->dialog); + } +} + +void +gtkutil_file_req (const char *title, void *callback, void *userdata, char *filter, + int flags) +{ + struct file_req *freq; + GtkWidget *dialog; + extern char *get_xdir_fs (void); + + if (flags & FRF_WRITE) + { + dialog = gtk_file_chooser_dialog_new (title, NULL, + GTK_FILE_CHOOSER_ACTION_SAVE, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, + NULL); + if (filter && filter[0]) /* filter becomes initial name when saving */ + { + char temp[1024]; + path_part (filter, temp, sizeof (temp)); + gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), temp); + gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), file_part (filter)); + } +#if GTK_CHECK_VERSION(2,8,0) + if (!(flags & FRF_NOASKOVERWRITE)) + gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog), TRUE); +#endif + } + else + dialog = gtk_file_chooser_dialog_new (title, NULL, + GTK_FILE_CHOOSER_ACTION_OPEN, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, + NULL); + if (flags & FRF_MULTIPLE) + gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (dialog), TRUE); + if (last_dir[0]) + gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), last_dir); + if (flags & FRF_ADDFOLDER) + gtk_file_chooser_add_shortcut_folder (GTK_FILE_CHOOSER (dialog), + get_xdir_fs (), NULL); + if (flags & FRF_CHOOSEFOLDER) + { + gtk_file_chooser_set_action (GTK_FILE_CHOOSER (dialog), GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER); + gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), filter); + } + else + { + if (filter && (flags & FRF_FILTERISINITIAL)) + gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), filter); + } + + freq = malloc (sizeof (struct file_req)); + freq->dialog = dialog; + freq->flags = flags; + freq->callback = callback; + freq->userdata = userdata; + + g_signal_connect (G_OBJECT (dialog), "response", + G_CALLBACK (gtkutil_file_req_response), freq); + g_signal_connect (G_OBJECT (dialog), "destroy", + G_CALLBACK (gtkutil_file_req_destroy), (gpointer) freq); + gtk_widget_show (dialog); +} + +void +gtkutil_destroy (GtkWidget * igad, GtkWidget * dgad) +{ + gtk_widget_destroy (dgad); +} + +static void +gtkutil_get_str_response (GtkDialog *dialog, gint arg1, gpointer entry) +{ + void (*callback) (int cancel, char *text, void *user_data); + char *text; + void *user_data; + + text = (char *) gtk_entry_get_text (GTK_ENTRY (entry)); + callback = g_object_get_data (G_OBJECT (dialog), "cb"); + user_data = g_object_get_data (G_OBJECT (dialog), "ud"); + + switch (arg1) + { + case GTK_RESPONSE_REJECT: + callback (TRUE, text, user_data); + gtk_widget_destroy (GTK_WIDGET (dialog)); + break; + case GTK_RESPONSE_ACCEPT: + callback (FALSE, text, user_data); + gtk_widget_destroy (GTK_WIDGET (dialog)); + break; + } +} + +static void +gtkutil_str_enter (GtkWidget *entry, GtkWidget *dialog) +{ + gtk_dialog_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT); +} + +void +fe_get_str (char *msg, char *def, void *callback, void *userdata) +{ + GtkWidget *dialog; + GtkWidget *entry; + GtkWidget *hbox; + GtkWidget *label; + + dialog = gtk_dialog_new_with_buttons (msg, NULL, 0, + GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, + GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, + NULL); + gtk_box_set_homogeneous (GTK_BOX (GTK_DIALOG (dialog)->vbox), TRUE); + gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); + hbox = gtk_hbox_new (TRUE, 0); + + g_object_set_data (G_OBJECT (dialog), "cb", callback); + g_object_set_data (G_OBJECT (dialog), "ud", userdata); + + entry = gtk_entry_new (); + g_signal_connect (G_OBJECT (entry), "activate", + G_CALLBACK (gtkutil_str_enter), dialog); + gtk_entry_set_text (GTK_ENTRY (entry), def); + gtk_box_pack_end (GTK_BOX (hbox), entry, 0, 0, 0); + + label = gtk_label_new (msg); + gtk_box_pack_end (GTK_BOX (hbox), label, 0, 0, 0); + + g_signal_connect (G_OBJECT (dialog), "response", + G_CALLBACK (gtkutil_get_str_response), entry); + + gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), hbox); + + gtk_widget_show_all (dialog); +} + +static void +gtkutil_get_number_response (GtkDialog *dialog, gint arg1, gpointer spin) +{ + void (*callback) (int cancel, int value, void *user_data); + int num; + void *user_data; + + num = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (spin)); + callback = g_object_get_data (G_OBJECT (dialog), "cb"); + user_data = g_object_get_data (G_OBJECT (dialog), "ud"); + + switch (arg1) + { + case GTK_RESPONSE_REJECT: + callback (TRUE, num, user_data); + gtk_widget_destroy (GTK_WIDGET (dialog)); + break; + case GTK_RESPONSE_ACCEPT: + callback (FALSE, num, user_data); + gtk_widget_destroy (GTK_WIDGET (dialog)); + break; + } +} + +void +fe_get_int (char *msg, int def, void *callback, void *userdata) +{ + GtkWidget *dialog; + GtkWidget *spin; + GtkWidget *hbox; + GtkWidget *label; + GtkAdjustment *adj; + + dialog = gtk_dialog_new_with_buttons (msg, NULL, 0, + GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, + GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, + NULL); + gtk_box_set_homogeneous (GTK_BOX (GTK_DIALOG (dialog)->vbox), TRUE); + gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); + hbox = gtk_hbox_new (TRUE, 0); + + g_object_set_data (G_OBJECT (dialog), "cb", callback); + g_object_set_data (G_OBJECT (dialog), "ud", userdata); + + spin = gtk_spin_button_new (NULL, 1, 0); + adj = gtk_spin_button_get_adjustment ((GtkSpinButton*)spin); + adj->lower = 0; + adj->upper = 1024; + adj->step_increment = 1; + gtk_adjustment_changed (adj); + gtk_spin_button_set_value ((GtkSpinButton*)spin, def); + gtk_box_pack_end (GTK_BOX (hbox), spin, 0, 0, 0); + + label = gtk_label_new (msg); + gtk_box_pack_end (GTK_BOX (hbox), label, 0, 0, 0); + + g_signal_connect (G_OBJECT (dialog), "response", + G_CALLBACK (gtkutil_get_number_response), spin); + + gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), hbox); + + gtk_widget_show_all (dialog); +} + +GtkWidget * +gtkutil_button (GtkWidget *box, char *stock, char *tip, void *callback, + void *userdata, char *labeltext) +{ + GtkWidget *wid, *img, *bbox; + + wid = gtk_button_new (); + + if (labeltext) + { + gtk_button_set_label (GTK_BUTTON (wid), labeltext); + gtk_button_set_image (GTK_BUTTON (wid), gtk_image_new_from_stock (stock, GTK_ICON_SIZE_MENU)); + gtk_button_set_use_underline (GTK_BUTTON (wid), TRUE); + if (box) + gtk_container_add (GTK_CONTAINER (box), wid); + } + else + { + bbox = gtk_hbox_new (0, 0); + gtk_container_add (GTK_CONTAINER (wid), bbox); + gtk_widget_show (bbox); + + img = gtk_image_new_from_stock (stock, GTK_ICON_SIZE_MENU); + if (stock == GTK_STOCK_GOTO_LAST) + gtk_widget_set_usize (img, 10, 6); + gtk_container_add (GTK_CONTAINER (bbox), img); + gtk_widget_show (img); + gtk_box_pack_start (GTK_BOX (box), wid, 0, 0, 0); + } + + g_signal_connect (G_OBJECT (wid), "clicked", + G_CALLBACK (callback), userdata); + gtk_widget_show (wid); + if (tip) + add_tip (wid, tip); + + return wid; +} + +void +gtkutil_label_new (char *text, GtkWidget * box) +{ + GtkWidget *label = gtk_label_new (text); + gtk_container_add (GTK_CONTAINER (box), label); + gtk_widget_show (label); +} + +GtkWidget * +gtkutil_entry_new (int max, GtkWidget * box, void *callback, + gpointer userdata) +{ + GtkWidget *entry = gtk_entry_new_with_max_length (max); + gtk_container_add (GTK_CONTAINER (box), entry); + if (callback) + g_signal_connect (G_OBJECT (entry), "changed", + G_CALLBACK (callback), userdata); + gtk_widget_show (entry); + return entry; +} + +GtkWidget * +gtkutil_clist_new (int columns, char *titles[], + GtkWidget * box, int policy, + void *select_callback, gpointer select_userdata, + void *unselect_callback, + gpointer unselect_userdata, int selection_mode) +{ + GtkWidget *clist, *win; + + win = gtk_scrolled_window_new (0, 0); + gtk_container_add (GTK_CONTAINER (box), win); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (win), + GTK_POLICY_AUTOMATIC, policy); + gtk_widget_show (win); + + if (titles) + clist = gtk_clist_new_with_titles (columns, titles); + else + clist = gtk_clist_new (columns); + + gtk_clist_set_selection_mode (GTK_CLIST (clist), selection_mode); + gtk_clist_column_titles_passive (GTK_CLIST (clist)); + gtk_container_add (GTK_CONTAINER (win), clist); + if (select_callback) + { + g_signal_connect (G_OBJECT (clist), "select_row", + G_CALLBACK (select_callback), select_userdata); + } + if (unselect_callback) + { + g_signal_connect (G_OBJECT (clist), "unselect_row", + G_CALLBACK (unselect_callback), unselect_userdata); + } + gtk_widget_show (clist); + + return clist; +} + +int +gtkutil_clist_selection (GtkWidget * clist) +{ + if (GTK_CLIST (clist)->selection) + return GPOINTER_TO_INT(GTK_CLIST (clist)->selection->data); + return -1; +} + +static int +int_compare (const int * elem1, const int * elem2) +{ + return (*elem1) - (*elem2); +} + +int +gtkutil_clist_multiple_selection (GtkWidget * clist, int ** rows, const int max_rows) +{ + int i = 0; + GList *tmp_clist; + *rows = malloc (sizeof (int) * max_rows ); + memset( *rows, -1, max_rows * sizeof(int) ); + + for( tmp_clist = GTK_CLIST(clist)->selection; + tmp_clist && i < max_rows; tmp_clist = tmp_clist->next, i++) + { + (*rows)[i] = GPOINTER_TO_INT( tmp_clist->data ); + } + qsort(*rows, i, sizeof(int), (void *)int_compare); + return i; + +} + +void +add_tip (GtkWidget * wid, char *text) +{ + static GtkTooltips *tip = NULL; + if (!tip) + tip = gtk_tooltips_new (); + gtk_tooltips_set_tip (tip, wid, text, 0); +} + +void +show_and_unfocus (GtkWidget * wid) +{ + GTK_WIDGET_UNSET_FLAGS (wid, GTK_CAN_FOCUS); + gtk_widget_show (wid); +} + +void +gtkutil_set_icon (GtkWidget *win) +{ + gtk_window_set_icon (GTK_WINDOW (win), pix_xchat); +} + +extern GtkWidget *parent_window; /* maingui.c */ + +GtkWidget * +gtkutil_window_new (char *title, char *role, int width, int height, int flags) +{ + GtkWidget *win; + + win = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtkutil_set_icon (win); +#ifdef WIN32 + gtk_window_set_wmclass (GTK_WINDOW (win), "XChat", "xchat"); +#endif + gtk_window_set_title (GTK_WINDOW (win), title); + gtk_window_set_default_size (GTK_WINDOW (win), width, height); + gtk_window_set_role (GTK_WINDOW (win), role); + if (flags & 1) + gtk_window_set_position (GTK_WINDOW (win), GTK_WIN_POS_MOUSE); + if ((flags & 2) && parent_window) + { + gtk_window_set_type_hint (GTK_WINDOW (win), GDK_WINDOW_TYPE_HINT_DIALOG); + gtk_window_set_transient_for (GTK_WINDOW (win), GTK_WINDOW (parent_window)); + } + + return win; +} + +/* pass NULL as selection to paste to both clipboard & X11 text */ +void +gtkutil_copy_to_clipboard (GtkWidget *widget, GdkAtom selection, + const gchar *str) +{ + GtkWidget *win; + GtkClipboard *clip, *clip2; + + win = gtk_widget_get_toplevel (GTK_WIDGET (widget)); + if (GTK_WIDGET_TOPLEVEL (win)) + { + int len = strlen (str); + + if (selection) + { + clip = gtk_widget_get_clipboard (win, selection); + gtk_clipboard_set_text (clip, str, len); + } else + { + /* copy to both primary X selection and clipboard */ + clip = gtk_widget_get_clipboard (win, GDK_SELECTION_PRIMARY); + clip2 = gtk_widget_get_clipboard (win, GDK_SELECTION_CLIPBOARD); + gtk_clipboard_set_text (clip, str, len); + gtk_clipboard_set_text (clip2, str, len); + } + } +} + +/* Treeview util functions */ + +GtkWidget * +gtkutil_treeview_new (GtkWidget *box, GtkTreeModel *model, + GtkTreeCellDataFunc mapper, ...) +{ + GtkWidget *win, *view; + GtkCellRenderer *renderer = NULL; + GtkTreeViewColumn *col; + va_list args; + int col_id = 0; + GType type; + char *title, *attr; + + win = gtk_scrolled_window_new (0, 0); + gtk_container_add (GTK_CONTAINER (box), win); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (win), + GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + gtk_widget_show (win); + + view = gtk_tree_view_new_with_model (model); + /* the view now has a ref on the model, we can unref it */ + g_object_unref (G_OBJECT (model)); + gtk_container_add (GTK_CONTAINER (win), view); + + va_start (args, mapper); + for (col_id = va_arg (args, int); col_id != -1; col_id = va_arg (args, int)) + { + type = gtk_tree_model_get_column_type (model, col_id); + switch (type) + { + case G_TYPE_BOOLEAN: + renderer = gtk_cell_renderer_toggle_new (); + attr = "active"; + break; + case G_TYPE_STRING: /* fall through */ + default: + renderer = gtk_cell_renderer_text_new (); + attr = "text"; + break; + } + + title = va_arg (args, char *); + if (mapper) /* user-specified function to set renderer attributes */ + { + col = gtk_tree_view_column_new_with_attributes (title, renderer, NULL); + gtk_tree_view_column_set_cell_data_func (col, renderer, mapper, + GINT_TO_POINTER (col_id), NULL); + } else + { + /* just set the typical attribute for this type of renderer */ + col = gtk_tree_view_column_new_with_attributes (title, renderer, + attr, col_id, NULL); + } + gtk_tree_view_append_column (GTK_TREE_VIEW (view), col); + } + + va_end (args); + + return view; +} + +gboolean +gtkutil_treemodel_string_to_iter (GtkTreeModel *model, gchar *pathstr, GtkTreeIter *iter_ret) +{ + GtkTreePath *path = gtk_tree_path_new_from_string (pathstr); + gboolean success; + + success = gtk_tree_model_get_iter (model, iter_ret, path); + gtk_tree_path_free (path); + return success; +} + +/*gboolean +gtkutil_treeview_get_selected_iter (GtkTreeView *view, GtkTreeIter *iter_ret) +{ + GtkTreeModel *store; + GtkTreeSelection *select; + + select = gtk_tree_view_get_selection (view); + return gtk_tree_selection_get_selected (select, &store, iter_ret); +}*/ + +gboolean +gtkutil_treeview_get_selected (GtkTreeView *view, GtkTreeIter *iter_ret, ...) +{ + GtkTreeModel *store; + GtkTreeSelection *select; + gboolean has_selected; + va_list args; + + select = gtk_tree_view_get_selection (view); + has_selected = gtk_tree_selection_get_selected (select, &store, iter_ret); + + if (has_selected) { + va_start (args, iter_ret); + gtk_tree_model_get_valist (store, iter_ret, args); + va_end (args); + } + + return has_selected; +} + diff --git a/xchat-2.8.8/src/fe-gtk/gtkutil.h b/xchat-2.8.8/src/fe-gtk/gtkutil.h new file mode 100644 index 0000000..9bf9e05 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/gtkutil.h @@ -0,0 +1,39 @@ +#include <gtk/gtktreeview.h> +#include <gtk/gtktreemodel.h> + +typedef void (*filereqcallback) (void *, char *file); + +#define FRF_WRITE 1 +#define FRF_MULTIPLE 2 +#define FRF_ADDFOLDER 4 +#define FRF_CHOOSEFOLDER 8 +#define FRF_FILTERISINITIAL 16 +#define FRF_NOASKOVERWRITE 32 + +void gtkutil_file_req (const char *title, void *callback, void *userdata, char *filter, int flags); +void gtkutil_destroy (GtkWidget * igad, GtkWidget * dgad); +GtkWidget *gtkutil_button (GtkWidget *box, char *stock, char *tip, void *callback, + void *userdata, char *labeltext); +void gtkutil_label_new (char *text, GtkWidget * box); +GtkWidget *gtkutil_entry_new (int max, GtkWidget * box, void *callback, + gpointer userdata); +GtkWidget *gtkutil_clist_new (int columns, char *titles[], GtkWidget * box, + int policy, void *select_callback, + gpointer select_userdata, + void *unselect_callback, + gpointer unselect_userdata, int selection_mode); +int gtkutil_clist_selection (GtkWidget * clist); +int gtkutil_clist_multiple_selection (GtkWidget * clist, + int ** rows, const int max_rows); +void add_tip (GtkWidget * wid, char *text); +void show_and_unfocus (GtkWidget * wid); +void gtkutil_set_icon (GtkWidget *win); +GtkWidget *gtkutil_window_new (char *title, char *role, int width, int height, int flags); +void gtkutil_copy_to_clipboard (GtkWidget *widget, GdkAtom selection, + const gchar *str); +GtkWidget *gtkutil_treeview_new (GtkWidget *box, GtkTreeModel *model, + GtkTreeCellDataFunc mapper, ...); +gboolean gtkutil_treemodel_string_to_iter (GtkTreeModel *model, gchar *pathstr, GtkTreeIter *iter_ret); +gboolean gtkutil_treeview_get_selected_iter (GtkTreeView *view, GtkTreeIter *iter_ret); +gboolean gtkutil_treeview_get_selected (GtkTreeView *view, GtkTreeIter *iter_ret, ...); + diff --git a/xchat-2.8.8/src/fe-gtk/ignoregui.c b/xchat-2.8.8/src/fe-gtk/ignoregui.c new file mode 100644 index 0000000..dc5fce9 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/ignoregui.c @@ -0,0 +1,449 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include "fe-gtk.h" + +#include <gtk/gtkcheckbutton.h> +#include <gtk/gtkentry.h> +#include <gtk/gtkstock.h> +#include <gtk/gtkhbox.h> +#include <gtk/gtkhbbox.h> +#include <gtk/gtkframe.h> +#include <gtk/gtkhseparator.h> +#include <gtk/gtkversion.h> + +#include <gtk/gtkliststore.h> +#include <gtk/gtktreeview.h> +#include <gtk/gtktreeselection.h> +#include <gtk/gtkcellrenderertext.h> +#include <gtk/gtkcellrenderertoggle.h> + +#include "../common/xchat.h" +#include "../common/ignore.h" +#include "../common/cfgfiles.h" +#include "../common/fe.h" +#include "gtkutil.h" +#include "maingui.h" + +enum +{ + MASK_COLUMN, + CHAN_COLUMN, + PRIV_COLUMN, + NOTICE_COLUMN, + CTCP_COLUMN, + DCC_COLUMN, + INVITE_COLUMN, + UNIGNORE_COLUMN, + N_COLUMNS +}; + +static GtkWidget *ignorewin = 0; + +static GtkWidget *num_ctcp; +static GtkWidget *num_priv; +static GtkWidget *num_chan; +static GtkWidget *num_noti; +static GtkWidget *num_invi; + +static GtkTreeModel * +get_store (void) +{ + return gtk_tree_view_get_model (g_object_get_data (G_OBJECT (ignorewin), "view")); +} + +static int +ignore_get_flags (GtkTreeModel *model, GtkTreeIter *iter) +{ + gboolean chan, priv, noti, ctcp, dcc, invi, unig; + int flags = 0; + + gtk_tree_model_get (model, iter, 1, &chan, 2, &priv, 3, ¬i, + 4, &ctcp, 5, &dcc, 6, &invi, 7, &unig, -1); + if (chan) + flags |= IG_CHAN; + if (priv) + flags |= IG_PRIV; + if (noti) + flags |= IG_NOTI; + if (ctcp) + flags |= IG_CTCP; + if (dcc) + flags |= IG_DCC; + if (invi) + flags |= IG_INVI; + if (unig) + flags |= IG_UNIG; + return flags; +} + +static void +mask_edited (GtkCellRendererText *render, gchar *path, gchar *new, gpointer dat) +{ + GtkListStore *store = GTK_LIST_STORE (get_store ()); + GtkTreeIter iter; + char *old; + int flags; + + gtkutil_treemodel_string_to_iter (GTK_TREE_MODEL (store), path, &iter); + gtk_tree_model_get (GTK_TREE_MODEL (store), &iter, 0, &old, -1); + + if (!strcmp (old, new)) /* no change */ + ; + else if (ignore_exists (new)) /* duplicate, ignore */ + fe_message (_("That mask already exists."), FE_MSG_ERROR); + else + { + /* delete old mask, and add new one with original flags */ + ignore_del (old, NULL); + flags = ignore_get_flags (GTK_TREE_MODEL (store), &iter); + ignore_add (new, flags); + + /* update tree */ + gtk_list_store_set (store, &iter, MASK_COLUMN, new, -1); + } + g_free (old); + +} + +static void +option_toggled (GtkCellRendererToggle *render, gchar *path, gpointer data) +{ + GtkListStore *store = GTK_LIST_STORE (get_store ()); + GtkTreeIter iter; + int col_id = GPOINTER_TO_INT (data); + gboolean active; + char *mask; + int flags; + + gtkutil_treemodel_string_to_iter (GTK_TREE_MODEL (store), path, &iter); + + /* update model */ + gtk_tree_model_get (GTK_TREE_MODEL (store), &iter, col_id, &active, -1); + gtk_list_store_set (store, &iter, col_id, !active, -1); + + /* update ignore list */ + gtk_tree_model_get (GTK_TREE_MODEL (store), &iter, 0, &mask, -1); + flags = ignore_get_flags (GTK_TREE_MODEL (store), &iter); + if (ignore_add (mask, flags) != 2) + g_warning ("ignore treeview is out of sync!\n"); + + g_free (mask); +} + +static GtkWidget * +ignore_treeview_new (GtkWidget *box) +{ + GtkListStore *store; + GtkWidget *view; + GtkTreeViewColumn *col; + GtkCellRenderer *render; + int col_id; + + store = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, + G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, + G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, + G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, + G_TYPE_BOOLEAN, G_TYPE_BOOLEAN); + g_return_val_if_fail (store != NULL, NULL); + + view = gtkutil_treeview_new (box, GTK_TREE_MODEL (store), + NULL, + MASK_COLUMN, _("Mask"), + CHAN_COLUMN, _("Channel"), + PRIV_COLUMN, _("Private"), + NOTICE_COLUMN, _("Notice"), + CTCP_COLUMN, _("CTCP"), + DCC_COLUMN, _("DCC"), + INVITE_COLUMN, _("Invite"), + UNIGNORE_COLUMN, _("Unignore"), + -1); + + gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (view), TRUE); + gtk_tree_view_column_set_expand (gtk_tree_view_get_column (GTK_TREE_VIEW (view), 0), TRUE); + + /* attach to signals and customise columns */ + for (col_id=0; (col = gtk_tree_view_get_column (GTK_TREE_VIEW (view), col_id)); + col_id++) + { + GList *list = gtk_tree_view_column_get_cell_renderers (col); + GList *tmp; + + for (tmp = list; tmp; tmp = tmp->next) + { + render = tmp->data; + if (col_id > 0) /* it's a toggle button column */ + { + g_signal_connect (render, "toggled", G_CALLBACK (option_toggled), + GINT_TO_POINTER (col_id)); + } else /* mask column */ + { + g_object_set (G_OBJECT (render), "editable", TRUE, NULL); + g_signal_connect (render, "edited", G_CALLBACK (mask_edited), NULL); + /* make this column sortable */ + gtk_tree_view_column_set_sort_column_id (col, col_id); + gtk_tree_view_column_set_min_width (col, 272); + } + /* centre titles */ + gtk_tree_view_column_set_alignment (col, 0.5); + } + + g_list_free (list); + } + + gtk_widget_show (view); + return view; +} + +static void +ignore_delete_entry_clicked (GtkWidget * wid, struct session *sess) +{ + GtkTreeView *view = g_object_get_data (G_OBJECT (ignorewin), "view"); + GtkListStore *store = GTK_LIST_STORE (gtk_tree_view_get_model (view)); + GtkTreeIter iter; + GtkTreePath *path; + char *mask = NULL; + + if (gtkutil_treeview_get_selected (view, &iter, 0, &mask, -1)) + { + /* delete this row, select next one */ +#if (GTK_MAJOR_VERSION == 2) && (GTK_MINOR_VERSION == 0) + gtk_list_store_remove (store, &iter); +#else + if (gtk_list_store_remove (store, &iter)) + { + path = gtk_tree_model_get_path (GTK_TREE_MODEL (store), &iter); + gtk_tree_view_scroll_to_cell (view, path, NULL, TRUE, 1.0, 0.0); + gtk_tree_view_set_cursor (view, path, NULL, FALSE); + gtk_tree_path_free (path); + } +#endif + + ignore_del (mask, NULL); + g_free (mask); + } +} + +static void +ignore_store_new (int cancel, char *mask, gpointer data) +{ + GtkTreeView *view = g_object_get_data (G_OBJECT (ignorewin), "view"); + GtkListStore *store = GTK_LIST_STORE (get_store ()); + GtkTreeIter iter; + GtkTreePath *path; + int flags = IG_CHAN | IG_PRIV | IG_NOTI | IG_CTCP | IG_DCC | IG_INVI; + + if (cancel) + return; + /* check if it already exists */ + if (ignore_exists (mask)) + { + fe_message (_("That mask already exists."), FE_MSG_ERROR); + return; + } + + ignore_add (mask, flags); + + gtk_list_store_append (store, &iter); + /* ignore everything by default */ + gtk_list_store_set (store, &iter, 0, mask, 1, TRUE, 2, TRUE, 3, TRUE, + 4, TRUE, 5, TRUE, 6, TRUE, 7, FALSE, -1); + /* make sure the new row is visible and selected */ + path = gtk_tree_model_get_path (GTK_TREE_MODEL (store), &iter); + gtk_tree_view_scroll_to_cell (view, path, NULL, TRUE, 1.0, 0.0); + gtk_tree_view_set_cursor (view, path, NULL, FALSE); + gtk_tree_path_free (path); +} + +static void +ignore_clear_entry_clicked (GtkWidget * wid, gpointer unused) +{ + GtkListStore *store = GTK_LIST_STORE (get_store ()); + GtkTreeIter iter; + char *mask; + + if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter)) + { + /* remove from ignore_list */ + do + { + mask = NULL; + gtk_tree_model_get (GTK_TREE_MODEL (store), &iter, MASK_COLUMN, &mask, -1); + ignore_del (mask, NULL); + g_free (mask); + } + while (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter)); + + /* remove from GUI */ + gtk_list_store_clear (store); + } +} + +static void +ignore_new_entry_clicked (GtkWidget * wid, struct session *sess) +{ + fe_get_str (_("Enter mask to ignore:"), "nick!userid@host.com", + ignore_store_new, NULL); + +} + +static void +close_ignore_gui_callback () +{ + ignore_save (); + ignorewin = 0; +} + +static GtkWidget * +ignore_stats_entry (GtkWidget * box, char *label, int value) +{ + GtkWidget *wid; + char buf[16]; + + sprintf (buf, "%d", value); + gtkutil_label_new (label, box); + wid = gtkutil_entry_new (16, box, 0, 0); + gtk_widget_set_size_request (wid, 30, -1); + gtk_editable_set_editable (GTK_EDITABLE (wid), FALSE); + gtk_widget_set_sensitive (GTK_WIDGET (wid), FALSE); + gtk_entry_set_text (GTK_ENTRY (wid), buf); + + return wid; +} + +void +ignore_gui_open () +{ + GtkWidget *vbox, *box, *stat_box, *frame; + GtkWidget *view; + GtkListStore *store; + GtkTreeIter iter; + GSList *temp = ignore_list; + char *mask; + gboolean private, chan, notice, ctcp, dcc, invite, unignore; + + if (ignorewin) + { + mg_bring_tofront (ignorewin); + return; + } + + ignorewin = + mg_create_generic_tab ("IgnoreList", _("XChat: Ignore list"), + FALSE, TRUE, close_ignore_gui_callback, + NULL, 600, 256, &vbox, 0); + + view = ignore_treeview_new (vbox); + g_object_set_data (G_OBJECT (ignorewin), "view", view); + + frame = gtk_frame_new (_("Ignore Stats:")); + gtk_widget_show (frame); + + stat_box = gtk_hbox_new (0, 2); + gtk_container_set_border_width (GTK_CONTAINER (stat_box), 6); + gtk_container_add (GTK_CONTAINER (frame), stat_box); + gtk_widget_show (stat_box); + + num_chan = ignore_stats_entry (stat_box, _("Channel:"), ignored_chan); + num_priv = ignore_stats_entry (stat_box, _("Private:"), ignored_priv); + num_noti = ignore_stats_entry (stat_box, _("Notice:"), ignored_noti); + num_ctcp = ignore_stats_entry (stat_box, _("CTCP:"), ignored_ctcp); + num_invi = ignore_stats_entry (stat_box, _("Invite:"), ignored_invi); + + gtk_box_pack_start (GTK_BOX (vbox), frame, 0, 0, 5); + + box = gtk_hbutton_box_new (); + gtk_button_box_set_layout (GTK_BUTTON_BOX (box), GTK_BUTTONBOX_SPREAD); + gtk_box_pack_start (GTK_BOX (vbox), box, FALSE, FALSE, 2); + gtk_container_set_border_width (GTK_CONTAINER (box), 5); + gtk_widget_show (box); + + gtkutil_button (box, GTK_STOCK_NEW, 0, ignore_new_entry_clicked, 0, + _("Add...")); + gtkutil_button (box, GTK_STOCK_DELETE, 0, ignore_delete_entry_clicked, + 0, _("Delete")); + gtkutil_button (box, GTK_STOCK_CLEAR, 0, ignore_clear_entry_clicked, + 0, _("Clear")); + + store = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (view))); + + while (temp) + { + struct ignore *ignore = temp->data; + + mask = ignore->mask; + chan = (ignore->type & IG_CHAN); + private = (ignore->type & IG_PRIV); + notice = (ignore->type & IG_NOTI); + ctcp = (ignore->type & IG_CTCP); + dcc = (ignore->type & IG_DCC); + invite = (ignore->type & IG_INVI); + unignore = (ignore->type & IG_UNIG); + + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, + MASK_COLUMN, mask, + CHAN_COLUMN, chan, + PRIV_COLUMN, private, + NOTICE_COLUMN, notice, + CTCP_COLUMN, ctcp, + DCC_COLUMN, dcc, + INVITE_COLUMN, invite, + UNIGNORE_COLUMN, unignore, + -1); + + temp = temp->next; + } + gtk_widget_show (ignorewin); +} + +void +fe_ignore_update (int level) +{ + /* some ignores have changed via /ignore, we should update + the gui now */ + /* level 1 = the list only. */ + /* level 2 = the numbers only. */ + /* for now, ignore level 1, since the ignore GUI isn't realtime, + only saved when you click OK */ + char buf[16]; + + if (level == 2 && ignorewin) + { + sprintf (buf, "%d", ignored_ctcp); + gtk_entry_set_text (GTK_ENTRY (num_ctcp), buf); + + sprintf (buf, "%d", ignored_noti); + gtk_entry_set_text (GTK_ENTRY (num_noti), buf); + + sprintf (buf, "%d", ignored_chan); + gtk_entry_set_text (GTK_ENTRY (num_chan), buf); + + sprintf (buf, "%d", ignored_invi); + gtk_entry_set_text (GTK_ENTRY (num_invi), buf); + + sprintf (buf, "%d", ignored_priv); + gtk_entry_set_text (GTK_ENTRY (num_priv), buf); + } +} diff --git a/xchat-2.8.8/src/fe-gtk/joind.c b/xchat-2.8.8/src/fe-gtk/joind.c new file mode 100644 index 0000000..ee5c56d --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/joind.c @@ -0,0 +1,257 @@ +/* Copyright (c) 2005 Peter Zelezny + All Rights Reserved. + + joind.c - The Join Dialog. + + Popups up when you connect without any autojoin channels and helps you + to find or join a channel. +*/ + +#include <sys/types.h> +#include <sys/stat.h> +#include <unistd.h> +#include <string.h> +#include <stdio.h> + +#include <gtk/gtkbbox.h> +#include <gtk/gtkbutton.h> +#include <gtk/gtkdialog.h> +#include <gtk/gtkentry.h> +#include <gtk/gtkhbox.h> +#include <gtk/gtkimage.h> +#include <gtk/gtklabel.h> +#include <gtk/gtkradiobutton.h> +#include <gtk/gtkvbox.h> +#include <gtk/gtkwindow.h> + +#include "../common/xchat.h" +#include "../common/xchatc.h" +#include "../common/server.h" +#include "../common/fe.h" +#include "fe-gtk.h" +#include "chanlist.h" + + +static void +joind_radio2_cb (GtkWidget *radio, server *serv) +{ + if (GTK_TOGGLE_BUTTON (radio)->active) + { + gtk_widget_grab_focus (serv->gui->joind_entry); + gtk_editable_set_position (GTK_EDITABLE (serv->gui->joind_entry), 999); + } +} + +static void +joind_entryenter_cb (GtkWidget *entry, GtkWidget *ok) +{ + gtk_widget_grab_focus (ok); +} + +static void +joind_entryfocus_cb (GtkWidget *entry, GdkEventFocus *event, server *serv) +{ + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (serv->gui->joind_radio2), TRUE); +} + +static void +joind_destroy_cb (GtkWidget *win, server *serv) +{ + if (is_server (serv)) + serv->gui->joind_win = NULL; +} + +static void +joind_ok_cb (GtkWidget *ok, server *serv) +{ + if (!is_server (serv)) + { + gtk_widget_destroy (gtk_widget_get_toplevel (ok)); + return; + } + + /* do nothing */ + if (GTK_TOGGLE_BUTTON (serv->gui->joind_radio1)->active) + goto xit; + + /* join specific channel */ + if (GTK_TOGGLE_BUTTON (serv->gui->joind_radio2)->active) + { + char *text = GTK_ENTRY (serv->gui->joind_entry)->text; + if (strlen (text) < 2) + { + fe_message (_("Channel name too short, try again."), FE_MSG_ERROR); + return; + } + serv->p_join (serv, text, ""); + goto xit; + } + + /* channel list */ + chanlist_opengui (serv, TRUE); + +xit: + prefs.gui_join_dialog = 0; + if (GTK_TOGGLE_BUTTON (serv->gui->joind_check)->active) + prefs.gui_join_dialog = 1; + + gtk_widget_destroy (serv->gui->joind_win); + serv->gui->joind_win = NULL; +} + +static void +joind_show_dialog (server *serv) +{ + GtkWidget *dialog1; + GtkWidget *dialog_vbox1; + GtkWidget *vbox1; + GtkWidget *hbox1; + GtkWidget *image1; + GtkWidget *vbox2; + GtkWidget *label; + GtkWidget *radiobutton1; + GtkWidget *radiobutton2; + GtkWidget *radiobutton3; + GSList *radiobutton1_group; + GtkWidget *hbox2; + GtkWidget *entry1; + GtkWidget *checkbutton1; + GtkWidget *dialog_action_area1; + GtkWidget *okbutton1; + char buf[256]; + char buf2[256]; + + serv->gui->joind_win = dialog1 = gtk_dialog_new (); + gtk_window_set_title (GTK_WINDOW (dialog1), _("XChat: Connection Complete")); + gtk_window_set_type_hint (GTK_WINDOW (dialog1), GDK_WINDOW_TYPE_HINT_DIALOG); + gtk_window_set_position (GTK_WINDOW (dialog1), GTK_WIN_POS_MOUSE); + + dialog_vbox1 = GTK_DIALOG (dialog1)->vbox; + gtk_widget_show (dialog_vbox1); + + vbox1 = gtk_vbox_new (FALSE, 0); + gtk_widget_show (vbox1); + gtk_box_pack_start (GTK_BOX (dialog_vbox1), vbox1, TRUE, TRUE, 0); + + hbox1 = gtk_hbox_new (FALSE, 0); + gtk_widget_show (hbox1); + gtk_box_pack_start (GTK_BOX (vbox1), hbox1, TRUE, TRUE, 0); + + image1 = gtk_image_new_from_stock ("gtk-yes", GTK_ICON_SIZE_DIALOG); + gtk_widget_show (image1); + gtk_box_pack_start (GTK_BOX (hbox1), image1, FALSE, TRUE, 24); + gtk_misc_set_alignment (GTK_MISC (image1), 0.5, 0.06); + + vbox2 = gtk_vbox_new (FALSE, 10); + gtk_container_set_border_width (GTK_CONTAINER (vbox2), 6); + gtk_widget_show (vbox2); + gtk_box_pack_start (GTK_BOX (hbox1), vbox2, TRUE, TRUE, 0); + + snprintf (buf2, sizeof (buf2), _("Connection to %s complete."), + server_get_network (serv, TRUE)); + snprintf (buf, sizeof (buf), "\n<b>%s</b>", buf2); + label = gtk_label_new (buf); + gtk_widget_show (label); + gtk_box_pack_start (GTK_BOX (vbox2), label, FALSE, FALSE, 0); + gtk_label_set_use_markup (GTK_LABEL (label), TRUE); + gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); + + label = gtk_label_new (_("In the Server-List window, no channel (chat room) has been entered to be automatically joined for this network.")); + gtk_widget_show (label); + gtk_box_pack_start (GTK_BOX (vbox2), label, FALSE, FALSE, 0); + GTK_LABEL (label)->wrap = TRUE; + gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); + + label = gtk_label_new (_("What would you like to do next?")); + gtk_widget_show (label); + gtk_box_pack_start (GTK_BOX (vbox2), label, FALSE, FALSE, 0); + gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); + + serv->gui->joind_radio1 = radiobutton1 = gtk_radio_button_new_with_mnemonic (NULL, _("_Nothing, I'll join a channel later.")); + gtk_widget_show (radiobutton1); + gtk_box_pack_start (GTK_BOX (vbox2), radiobutton1, FALSE, FALSE, 0); + radiobutton1_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (radiobutton1)); + + hbox2 = gtk_hbox_new (FALSE, 0); + gtk_widget_show (hbox2); + gtk_box_pack_start (GTK_BOX (vbox2), hbox2, FALSE, FALSE, 0); + + serv->gui->joind_radio2 = radiobutton2 = gtk_radio_button_new_with_mnemonic (NULL, _("_Join this channel:")); + gtk_widget_show (radiobutton2); + gtk_box_pack_start (GTK_BOX (hbox2), radiobutton2, FALSE, FALSE, 0); + gtk_radio_button_set_group (GTK_RADIO_BUTTON (radiobutton2), radiobutton1_group); + radiobutton1_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (radiobutton2)); + + serv->gui->joind_entry = entry1 = gtk_entry_new (); + gtk_entry_set_text (GTK_ENTRY (entry1), "#"); + gtk_widget_show (entry1); + gtk_box_pack_start (GTK_BOX (hbox2), entry1, TRUE, TRUE, 8); + + snprintf (buf, sizeof (buf), "<small> %s</small>", + _("If you know the name of the channel you want to join, enter it here.")); + label = gtk_label_new (buf); + gtk_widget_show (label); + gtk_box_pack_start (GTK_BOX (vbox2), label, FALSE, FALSE, 0); + gtk_label_set_use_markup (GTK_LABEL (label), TRUE); + gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); + + radiobutton3 = gtk_radio_button_new_with_mnemonic (NULL, _("O_pen the Channel-List window.")); + gtk_widget_show (radiobutton3); + gtk_box_pack_start (GTK_BOX (vbox2), radiobutton3, FALSE, FALSE, 0); + gtk_radio_button_set_group (GTK_RADIO_BUTTON (radiobutton3), radiobutton1_group); + radiobutton1_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (radiobutton3)); + + snprintf (buf, sizeof (buf), "<small> %s</small>", + _("Retrieving the Channel-List may take a minute or two.")); + label = gtk_label_new (buf); + gtk_widget_show (label); + gtk_box_pack_start (GTK_BOX (vbox2), label, FALSE, FALSE, 0); + gtk_label_set_use_markup (GTK_LABEL (label), TRUE); + gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); + + serv->gui->joind_check = checkbutton1 = gtk_check_button_new_with_mnemonic (_("_Always show this dialog after connecting.")); + if (prefs.gui_join_dialog) + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton1), TRUE); + gtk_widget_show (checkbutton1); + gtk_box_pack_start (GTK_BOX (vbox1), checkbutton1, FALSE, FALSE, 0); + + dialog_action_area1 = GTK_DIALOG (dialog1)->action_area; + gtk_widget_show (dialog_action_area1); + gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area1), GTK_BUTTONBOX_END); + + okbutton1 = gtk_button_new_from_stock ("gtk-ok"); + gtk_widget_show (okbutton1); + gtk_box_pack_end (GTK_BOX (GTK_DIALOG (dialog1)->action_area), okbutton1, FALSE, TRUE, 0); + GTK_WIDGET_SET_FLAGS (okbutton1, GTK_CAN_DEFAULT); + + g_signal_connect (G_OBJECT (dialog1), "destroy", + G_CALLBACK (joind_destroy_cb), serv); + g_signal_connect (G_OBJECT (entry1), "focus_in_event", + G_CALLBACK (joind_entryfocus_cb), serv); + g_signal_connect (G_OBJECT (entry1), "activate", + G_CALLBACK (joind_entryenter_cb), okbutton1); + g_signal_connect (G_OBJECT (radiobutton2), "toggled", + G_CALLBACK (joind_radio2_cb), serv); + g_signal_connect (G_OBJECT (okbutton1), "clicked", + G_CALLBACK (joind_ok_cb), serv); + + gtk_widget_grab_focus (okbutton1); + gtk_widget_show_all (dialog1); +} + +void +joind_open (server *serv) +{ + if (prefs.gui_join_dialog) + joind_show_dialog (serv); +} + +void +joind_close (server *serv) +{ + if (serv->gui->joind_win) + { + gtk_widget_destroy (serv->gui->joind_win); + serv->gui->joind_win = NULL; + } +} diff --git a/xchat-2.8.8/src/fe-gtk/joind.h b/xchat-2.8.8/src/fe-gtk/joind.h new file mode 100644 index 0000000..aa0fd0a --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/joind.h @@ -0,0 +1,2 @@ +void joind_open (server *serv); +void joind_close (server *serv); diff --git a/xchat-2.8.8/src/fe-gtk/maingui.c b/xchat-2.8.8/src/fe-gtk/maingui.c new file mode 100644 index 0000000..994e8cd --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/maingui.c @@ -0,0 +1,3796 @@ +/* X-Chat + * Copyright (C) 1998-2005 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdlib.h> +#include <string.h> +#include <stdio.h> +#include <ctype.h> + +#include <gtk/gtkarrow.h> +#include <gtk/gtktogglebutton.h> +#include <gtk/gtkhbox.h> +#include <gtk/gtkvbox.h> +#include <gtk/gtkeventbox.h> +#include <gtk/gtkentry.h> +#include <gtk/gtkhpaned.h> +#include <gtk/gtkvpaned.h> +#include <gtk/gtkframe.h> +#include <gtk/gtklabel.h> +#include <gtk/gtkmenuitem.h> +#include <gtk/gtkprogressbar.h> +#include <gtk/gtkscrolledwindow.h> +#include <gtk/gtkstock.h> +#include <gtk/gtktable.h> +#include <gtk/gtknotebook.h> +#include <gtk/gtkimage.h> +#include <gtk/gtkmessagedialog.h> +#include <gtk/gtkcheckmenuitem.h> +#include <gtk/gtkcheckbutton.h> +#include <gtk/gtkbbox.h> +#include <gtk/gtkvscrollbar.h> + +#include "../common/xchat.h" +#include "../common/fe.h" +#include "../common/server.h" +#include "../common/xchatc.h" +#include "../common/outbound.h" +#include "../common/inbound.h" +#include "../common/plugin.h" +#include "../common/modes.h" +#include "../common/url.h" +#include "fe-gtk.h" +#include "banlist.h" +#include "gtkutil.h" +#include "joind.h" +#include "palette.h" +#include "maingui.h" +#include "menu.h" +#include "fkeys.h" +#include "userlistgui.h" +#include "chanview.h" +#include "pixmaps.h" +#include "plugin-tray.h" +#include "xtext.h" + +#ifdef USE_GTKSPELL +#include <gtk/gtktextview.h> +#include <gtkspell/gtkspell.h> +#endif + +#ifdef USE_LIBSEXY +#include "sexy-spell-entry.h" +#endif + +#define GUI_SPACING (3) +#define GUI_BORDER (0) +#define SCROLLBAR_SPACING (2) + +enum +{ + POS_INVALID = 0, + POS_TOPLEFT = 1, + POS_BOTTOMLEFT = 2, + POS_TOPRIGHT = 3, + POS_BOTTOMRIGHT = 4, + POS_TOP = 5, /* for tabs only */ + POS_BOTTOM = 6, + POS_HIDDEN = 7 +}; + +/* two different types of tabs */ +#define TAG_IRC 0 /* server, channel, dialog */ +#define TAG_UTIL 1 /* dcc, notify, chanlist */ + +static void mg_create_entry (session *sess, GtkWidget *box); +static void mg_link_irctab (session *sess, int focus); + +static session_gui static_mg_gui; +static session_gui *mg_gui = NULL; /* the shared irc tab */ +static int ignore_chanmode = FALSE; +static const char chan_flags[] = { 't', 'n', 's', 'i', 'p', 'm', 'l', 'k' }; + +static chan *active_tab = NULL; /* active tab */ +GtkWidget *parent_window = NULL; /* the master window */ + +GtkStyle *input_style; + +static PangoAttrList *away_list; +static PangoAttrList *newdata_list; +static PangoAttrList *nickseen_list; +static PangoAttrList *newmsg_list; +static PangoAttrList *plain_list = NULL; + + +#ifdef USE_GTKSPELL + +/* use these when it's a GtkTextView instead of GtkEntry */ + +char * +SPELL_ENTRY_GET_TEXT (GtkWidget *entry) +{ + static char *last = NULL; /* warning: don't overlap 2 GET_TEXT calls! */ + GtkTextBuffer *buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (entry)); + GtkTextIter start_iter, end_iter; + + gtk_text_buffer_get_iter_at_offset (buf, &start_iter, 0); + gtk_text_buffer_get_end_iter (buf, &end_iter); + g_free (last); + last = gtk_text_buffer_get_text (buf, &start_iter, &end_iter, FALSE); + return last; +} + +void +SPELL_ENTRY_SET_POS (GtkWidget *entry, int pos) +{ + GtkTextIter iter; + GtkTextBuffer *buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (entry)); + + gtk_text_buffer_get_iter_at_offset (buf, &iter, pos); + gtk_text_buffer_place_cursor (buf, &iter); +} + +int +SPELL_ENTRY_GET_POS (GtkWidget *entry) +{ + GtkTextIter cursor; + GtkTextBuffer *buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (entry)); + + gtk_text_buffer_get_iter_at_mark (buf, &cursor, gtk_text_buffer_get_insert (buf)); + return gtk_text_iter_get_offset (&cursor); +} + +void +SPELL_ENTRY_INSERT (GtkWidget *entry, const char *text, int len, int *pos) +{ + GtkTextIter iter; + GtkTextBuffer *buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (entry)); + + /* len is bytes. pos is chars. */ + gtk_text_buffer_get_iter_at_offset (buf, &iter, *pos); + gtk_text_buffer_insert (buf, &iter, text, len); + *pos += g_utf8_strlen (text, len); +} + +#endif + +static PangoAttrList * +mg_attr_list_create (GdkColor *col, int size) +{ + PangoAttribute *attr; + PangoAttrList *list; + + list = pango_attr_list_new (); + + if (col) + { + attr = pango_attr_foreground_new (col->red, col->green, col->blue); + attr->start_index = 0; + attr->end_index = 0xffff; + pango_attr_list_insert (list, attr); + } + + if (size > 0) + { + attr = pango_attr_scale_new (size == 1 ? PANGO_SCALE_SMALL : PANGO_SCALE_X_SMALL); + attr->start_index = 0; + attr->end_index = 0xffff; + pango_attr_list_insert (list, attr); + } + + return list; +} + +static void +mg_create_tab_colors (void) +{ + if (plain_list) + { + pango_attr_list_unref (plain_list); + pango_attr_list_unref (newmsg_list); + pango_attr_list_unref (newdata_list); + pango_attr_list_unref (nickseen_list); + pango_attr_list_unref (away_list); + } + + plain_list = mg_attr_list_create (NULL, prefs.tab_small); + newdata_list = mg_attr_list_create (&colors[COL_NEW_DATA], prefs.tab_small); + nickseen_list = mg_attr_list_create (&colors[COL_HILIGHT], prefs.tab_small); + newmsg_list = mg_attr_list_create (&colors[COL_NEW_MSG], prefs.tab_small); + away_list = mg_attr_list_create (&colors[COL_AWAY], FALSE); +} + +#ifdef WIN32 +#define WINVER 0x0501 /* needed for vc6? */ +#include <windows.h> +#include <gdk/gdkwin32.h> + +/* Flash the taskbar button on Windows when there's a highlight event. */ + +static void +flash_window (GtkWidget *win) +{ + FLASHWINFO fi; + static HMODULE user = NULL; + static BOOL (*flash) (PFLASHWINFO) = NULL; + + if (!user) + { + user = GetModuleHandleA ("USER32"); + if (!user) + return; /* this should never fail */ + } + + if (!flash) + { + flash = (void *)GetProcAddress (user, "FlashWindowEx"); + if (!flash) + return; /* this fails on NT4.0 and Win95 */ + } + + fi.cbSize = sizeof (fi); + fi.hwnd = GDK_WINDOW_HWND (win->window); + fi.dwFlags = FLASHW_ALL | FLASHW_TIMERNOFG; + fi.uCount = 0; + fi.dwTimeout = 500; + flash (&fi); + /*FlashWindowEx (&fi);*/ +} +#else + +#ifdef USE_XLIB +#include <gdk/gdkx.h> + +static void +set_window_urgency (GtkWidget *win, gboolean set) +{ + XWMHints *hints; + + hints = XGetWMHints(GDK_WINDOW_XDISPLAY(win->window), GDK_WINDOW_XWINDOW(win->window)); + if (set) + hints->flags |= XUrgencyHint; + else + hints->flags &= ~XUrgencyHint; + XSetWMHints(GDK_WINDOW_XDISPLAY(win->window), + GDK_WINDOW_XWINDOW(win->window), hints); + XFree(hints); +} + +static void +flash_window (GtkWidget *win) +{ + set_window_urgency (win, TRUE); +} + +static void +unflash_window (GtkWidget *win) +{ + set_window_urgency (win, FALSE); +} +#endif +#endif + +/* flash the taskbar button */ + +void +fe_flash_window (session *sess) +{ +#if defined(WIN32) || defined(USE_XLIB) + if (fe_gui_info (sess, 0) != 1) /* only do it if not focused */ + flash_window (sess->gui->window); +#endif +} + +/* set a tab plain, red, light-red, or blue */ + +void +fe_set_tab_color (struct session *sess, int col) +{ + struct session *server_sess = sess->server->server_session; + if (sess->gui->is_tab && (col == 0 || sess != current_tab)) + { + switch (col) + { + case 0: /* no particular color (theme default) */ + sess->new_data = FALSE; + sess->msg_said = FALSE; + sess->nick_said = FALSE; + chan_set_color (sess->res->tab, plain_list); + break; + case 1: /* new data has been displayed (dark red) */ + sess->new_data = TRUE; + sess->msg_said = FALSE; + sess->nick_said = FALSE; + chan_set_color (sess->res->tab, newdata_list); + + if (chan_is_collapsed (sess->res->tab)) + { + server_sess->new_data = TRUE; + server_sess->msg_said = FALSE; + server_sess->nick_said = FALSE; + chan_set_color (chan_get_parent (sess->res->tab), newdata_list); + } + + break; + case 2: /* new message arrived in channel (light red) */ + sess->new_data = FALSE; + sess->msg_said = TRUE; + sess->nick_said = FALSE; + chan_set_color (sess->res->tab, newmsg_list); + + if (chan_is_collapsed (sess->res->tab)) + { + server_sess->new_data = FALSE; + server_sess->msg_said = TRUE; + server_sess->nick_said = FALSE; + chan_set_color (chan_get_parent (sess->res->tab), newmsg_list); + } + + break; + case 3: /* your nick has been seen (blue) */ + sess->new_data = FALSE; + sess->msg_said = FALSE; + sess->nick_said = TRUE; + chan_set_color (sess->res->tab, nickseen_list); + + if (chan_is_collapsed (sess->res->tab)) + { + server_sess->new_data = FALSE; + server_sess->msg_said = FALSE; + server_sess->nick_said = TRUE; + chan_set_color (chan_get_parent (sess->res->tab), nickseen_list); + } + + break; + } + } +} + +static void +mg_set_myself_away (session_gui *gui, gboolean away) +{ + gtk_label_set_attributes (GTK_LABEL (GTK_BIN (gui->nick_label)->child), + away ? away_list : NULL); +} + +/* change the little icon to the left of your nickname */ + +void +mg_set_access_icon (session_gui *gui, GdkPixbuf *pix, gboolean away) +{ + if (gui->op_xpm) + { + if (pix == gtk_image_get_pixbuf (GTK_IMAGE (gui->op_xpm))) /* no change? */ + { + mg_set_myself_away (gui, away); + return; + } + + gtk_widget_destroy (gui->op_xpm); + gui->op_xpm = NULL; + } + + if (pix) + { + gui->op_xpm = gtk_image_new_from_pixbuf (pix); + gtk_box_pack_start (GTK_BOX (gui->nick_box), gui->op_xpm, 0, 0, 0); + gtk_widget_show (gui->op_xpm); + } + + mg_set_myself_away (gui, away); +} + +static gboolean +mg_inputbox_focus (GtkWidget *widget, GdkEventFocus *event, session_gui *gui) +{ + GSList *list; + session *sess; + + if (gui->is_tab) + return FALSE; + + list = sess_list; + while (list) + { + sess = list->data; + if (sess->gui == gui) + { + current_sess = sess; + if (!sess->server->server_session) + sess->server->server_session = sess; + break; + } + list = list->next; + } + + return FALSE; +} + +void +mg_inputbox_cb (GtkWidget *igad, session_gui *gui) +{ + char *cmd; + static int ignore = FALSE; + GSList *list; + session *sess = NULL; + + if (ignore) + return; + + cmd = SPELL_ENTRY_GET_TEXT (igad); + if (cmd[0] == 0) + return; + + cmd = strdup (cmd); + + /* avoid recursive loop */ + ignore = TRUE; + SPELL_ENTRY_SET_TEXT (igad, ""); + ignore = FALSE; + + /* where did this event come from? */ + if (gui->is_tab) + { + sess = current_tab; + } else + { + list = sess_list; + while (list) + { + sess = list->data; + if (sess->gui == gui) + break; + list = list->next; + } + if (!list) + sess = NULL; + } + + if (sess) + handle_multiline (sess, cmd, TRUE, FALSE); + + free (cmd); +} + +static gboolean +has_key (char *modes) +{ + if (!modes) + return FALSE; + /* this is a crude check, but "-k" can't exist, so it works. */ + while (*modes) + { + if (*modes == 'k') + return TRUE; + if (*modes == ' ') + return FALSE; + modes++; + } + return FALSE; +} + +void +fe_set_title (session *sess) +{ + char tbuf[512]; + int type; + + if (sess->gui->is_tab && sess != current_tab) + return; + + type = sess->type; + + if (sess->server->connected == FALSE && sess->type != SESS_DIALOG) + goto def; + + switch (type) + { + case SESS_DIALOG: + snprintf (tbuf, sizeof (tbuf), DISPLAY_NAME": %s %s @ %s", + _("Dialog with"), sess->channel, server_get_network (sess->server, TRUE)); + break; + case SESS_SERVER: + snprintf (tbuf, sizeof (tbuf), DISPLAY_NAME": %s @ %s", + sess->server->nick, server_get_network (sess->server, TRUE)); + break; + case SESS_CHANNEL: + /* don't display keys in the titlebar */ + if ((!(prefs.gui_tweaks & 16)) && has_key (sess->current_modes)) + snprintf (tbuf, sizeof (tbuf), + DISPLAY_NAME": %s @ %s / %s", + sess->server->nick, server_get_network (sess->server, TRUE), + sess->channel); + else + snprintf (tbuf, sizeof (tbuf), + DISPLAY_NAME": %s @ %s / %s (%s)", + sess->server->nick, server_get_network (sess->server, TRUE), + sess->channel, sess->current_modes ? sess->current_modes : ""); + if (prefs.gui_tweaks & 1) + snprintf (tbuf + strlen (tbuf), 9, " (%d)", sess->total); + break; + case SESS_NOTICES: + case SESS_SNOTICES: + snprintf (tbuf, sizeof (tbuf), DISPLAY_NAME": %s @ %s (notices)", + sess->server->nick, server_get_network (sess->server, TRUE)); + break; + default: + def: + gtk_window_set_title (GTK_WINDOW (sess->gui->window), DISPLAY_NAME); + return; + } + + gtk_window_set_title (GTK_WINDOW (sess->gui->window), tbuf); +} + +static gboolean +mg_windowstate_cb (GtkWindow *wid, GdkEventWindowState *event, gpointer userdata) +{ + prefs.gui_win_state = 0; + if (event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED) + prefs.gui_win_state = 1; + + if ((event->changed_mask & GDK_WINDOW_STATE_ICONIFIED) && + (event->new_window_state & GDK_WINDOW_STATE_ICONIFIED) && + (prefs.gui_tray_flags & 4)) + { + tray_toggle_visibility (TRUE); + gtk_window_deiconify (wid); + } + + return FALSE; +} + +static gboolean +mg_configure_cb (GtkWidget *wid, GdkEventConfigure *event, session *sess) +{ + if (sess == NULL) /* for the main_window */ + { + if (mg_gui) + { + if (prefs.mainwindow_save) + { + sess = current_sess; + gtk_window_get_position (GTK_WINDOW (wid), &prefs.mainwindow_left, + &prefs.mainwindow_top); + gtk_window_get_size (GTK_WINDOW (wid), &prefs.mainwindow_width, + &prefs.mainwindow_height); + } + } + } + + if (sess) + { + if (sess->type == SESS_DIALOG && prefs.mainwindow_save) + { + gtk_window_get_position (GTK_WINDOW (wid), &prefs.dialog_left, + &prefs.dialog_top); + gtk_window_get_size (GTK_WINDOW (wid), &prefs.dialog_width, + &prefs.dialog_height); + } + + if (((GtkXText *) sess->gui->xtext)->transparent) + gtk_widget_queue_draw (sess->gui->xtext); + } + + return FALSE; +} + +/* move to a non-irc tab */ + +static void +mg_show_generic_tab (GtkWidget *box) +{ + int num; + GtkWidget *f = NULL; + +#if defined(GTK_WIDGET_HAS_FOCUS) + if (current_sess && GTK_WIDGET_HAS_FOCUS (current_sess->gui->input_box)) +#else + if (current_sess && gtk_widget_has_focus (current_sess->gui->input_box)) +#endif + f = current_sess->gui->input_box; + + num = gtk_notebook_page_num (GTK_NOTEBOOK (mg_gui->note_book), box); + gtk_notebook_set_current_page (GTK_NOTEBOOK (mg_gui->note_book), num); + gtk_tree_view_set_model (GTK_TREE_VIEW (mg_gui->user_tree), NULL); + gtk_window_set_title (GTK_WINDOW (mg_gui->window), + g_object_get_data (G_OBJECT (box), "title")); + gtk_widget_set_sensitive (mg_gui->menu, FALSE); + + if (f) + gtk_widget_grab_focus (f); +} + +/* a channel has been focused */ + +static void +mg_focus (session *sess) +{ + if (sess->gui->is_tab) + current_tab = sess; + current_sess = sess; + + /* dirty trick to avoid auto-selection */ + SPELL_ENTRY_SET_EDITABLE (sess->gui->input_box, FALSE); + gtk_widget_grab_focus (sess->gui->input_box); + SPELL_ENTRY_SET_EDITABLE (sess->gui->input_box, TRUE); + + sess->server->front_session = sess; + + if (sess->server->server_session != NULL) + { + if (sess->server->server_session->type != SESS_SERVER) + sess->server->server_session = sess; + } else + { + sess->server->server_session = sess; + } + + if (sess->new_data || sess->nick_said || sess->msg_said) + { + sess->nick_said = FALSE; + sess->msg_said = FALSE; + sess->new_data = FALSE; + /* when called via mg_changui_new, is_tab might be true, but + sess->res->tab is still NULL. */ + if (sess->res->tab) + fe_set_tab_color (sess, 0); + } +} + +static int +mg_progressbar_update (GtkWidget *bar) +{ + static int type = 0; + static float pos = 0; + + pos += 0.05; + if (pos >= 0.99) + { + if (type == 0) + { + type = 1; + gtk_progress_bar_set_orientation ((GtkProgressBar *) bar, + GTK_PROGRESS_RIGHT_TO_LEFT); + } else + { + type = 0; + gtk_progress_bar_set_orientation ((GtkProgressBar *) bar, + GTK_PROGRESS_LEFT_TO_RIGHT); + } + pos = 0.05; + } + gtk_progress_bar_set_fraction ((GtkProgressBar *) bar, pos); + return 1; +} + +void +mg_progressbar_create (session_gui *gui) +{ + gui->bar = gtk_progress_bar_new (); + gtk_box_pack_start (GTK_BOX (gui->nick_box), gui->bar, 0, 0, 0); + gtk_widget_show (gui->bar); + gui->bartag = fe_timeout_add (50, mg_progressbar_update, gui->bar); +} + +void +mg_progressbar_destroy (session_gui *gui) +{ + fe_timeout_remove (gui->bartag); + gtk_widget_destroy (gui->bar); + gui->bar = 0; + gui->bartag = 0; +} + +/* switching tabs away from this one, so remember some info about it! */ + +static void +mg_unpopulate (session *sess) +{ + restore_gui *res; + session_gui *gui; + int i; + + gui = sess->gui; + res = sess->res; + + res->input_text = strdup (SPELL_ENTRY_GET_TEXT (gui->input_box)); + res->topic_text = strdup (GTK_ENTRY (gui->topic_entry)->text); + res->limit_text = strdup (GTK_ENTRY (gui->limit_entry)->text); + res->key_text = strdup (GTK_ENTRY (gui->key_entry)->text); + if (gui->laginfo) + res->lag_text = strdup (gtk_label_get_text (GTK_LABEL (gui->laginfo))); + if (gui->throttleinfo) + res->queue_text = strdup (gtk_label_get_text (GTK_LABEL (gui->throttleinfo))); + + for (i = 0; i < NUM_FLAG_WIDS - 1; i++) + res->flag_wid_state[i] = GTK_TOGGLE_BUTTON (gui->flag_wid[i])->active; + + res->old_ul_value = userlist_get_value (gui->user_tree); + if (gui->lagometer) + res->lag_value = gtk_progress_bar_get_fraction ( + GTK_PROGRESS_BAR (gui->lagometer)); + if (gui->throttlemeter) + res->queue_value = gtk_progress_bar_get_fraction ( + GTK_PROGRESS_BAR (gui->throttlemeter)); + + if (gui->bar) + { + res->c_graph = TRUE; /* still have a graph, just not visible now */ + mg_progressbar_destroy (gui); + } +} + +static void +mg_restore_label (GtkWidget *label, char **text) +{ + if (!label) + return; + + if (*text) + { + gtk_label_set_text (GTK_LABEL (label), *text); + free (*text); + *text = NULL; + } else + { + gtk_label_set_text (GTK_LABEL (label), ""); + } +} + +static void +mg_restore_entry (GtkWidget *entry, char **text) +{ + if (*text) + { + gtk_entry_set_text (GTK_ENTRY (entry), *text); + free (*text); + *text = NULL; + } else + { + gtk_entry_set_text (GTK_ENTRY (entry), ""); + } + gtk_editable_set_position (GTK_EDITABLE (entry), -1); +} + +static void +mg_restore_speller (GtkWidget *entry, char **text) +{ + if (*text) + { + SPELL_ENTRY_SET_TEXT (entry, *text); + free (*text); + *text = NULL; + } else + { + SPELL_ENTRY_SET_TEXT (entry, ""); + } + SPELL_ENTRY_SET_POS (entry, -1); +} + +void +mg_set_topic_tip (session *sess) +{ + char *text; + + switch (sess->type) + { + case SESS_CHANNEL: + if (sess->topic) + { + text = g_strdup_printf (_("Topic for %s is: %s"), sess->channel, + sess->topic); + add_tip (sess->gui->topic_entry, text); + g_free (text); + } else + add_tip (sess->gui->topic_entry, _("No topic is set")); + break; + default: + if (GTK_ENTRY (sess->gui->topic_entry)->text && + GTK_ENTRY (sess->gui->topic_entry)->text[0]) + add_tip (sess->gui->topic_entry, GTK_ENTRY (sess->gui->topic_entry)->text); + else + add_tip (sess->gui->topic_entry, NULL); + } +} + +static void +mg_hide_empty_pane (GtkPaned *pane) +{ +#if defined(GTK_WIDGET_VISIBLE) + if ((pane->child1 == NULL || !GTK_WIDGET_VISIBLE (pane->child1)) && + (pane->child2 == NULL || !GTK_WIDGET_VISIBLE (pane->child2))) +#else + if ((pane->child1 == NULL || !gtk_widget_get_visible (pane->child1)) && + (pane->child2 == NULL || !gtk_widget_get_visible (pane->child2))) +#endif + { + gtk_widget_hide (GTK_WIDGET (pane)); + return; + } + + gtk_widget_show (GTK_WIDGET (pane)); +} + +static void +mg_hide_empty_boxes (session_gui *gui) +{ + /* hide empty vpanes - so the handle is not shown */ + mg_hide_empty_pane ((GtkPaned*)gui->vpane_right); + mg_hide_empty_pane ((GtkPaned*)gui->vpane_left); +} + +static void +mg_userlist_showhide (session *sess, int show) +{ + session_gui *gui = sess->gui; + int handle_size; + + if (show) + { + gtk_widget_show (gui->user_box); + gui->ul_hidden = 0; + + gtk_widget_style_get (GTK_WIDGET (gui->hpane_right), "handle-size", &handle_size, NULL); + gtk_paned_set_position (GTK_PANED (gui->hpane_right), GTK_WIDGET (gui->hpane_right)->allocation.width - (prefs.gui_pane_right_size + handle_size)); + } + else + { + gtk_widget_hide (gui->user_box); + gui->ul_hidden = 1; + } + + mg_hide_empty_boxes (gui); +} + +static gboolean +mg_is_userlist_and_tree_combined (void) +{ + if (prefs.tab_pos == POS_TOPLEFT && prefs.gui_ulist_pos == POS_BOTTOMLEFT) + return TRUE; + if (prefs.tab_pos == POS_BOTTOMLEFT && prefs.gui_ulist_pos == POS_TOPLEFT) + return TRUE; + + if (prefs.tab_pos == POS_TOPRIGHT && prefs.gui_ulist_pos == POS_BOTTOMRIGHT) + return TRUE; + if (prefs.tab_pos == POS_BOTTOMRIGHT && prefs.gui_ulist_pos == POS_TOPRIGHT) + return TRUE; + + return FALSE; +} + +/* decide if the userlist should be shown or hidden for this tab */ + +void +mg_decide_userlist (session *sess, gboolean switch_to_current) +{ + /* when called from menu.c we need this */ + if (sess->gui == mg_gui && switch_to_current) + sess = current_tab; + + if (prefs.hideuserlist) + { + mg_userlist_showhide (sess, FALSE); + return; + } + + switch (sess->type) + { + case SESS_SERVER: + case SESS_DIALOG: + case SESS_NOTICES: + case SESS_SNOTICES: + if (mg_is_userlist_and_tree_combined ()) + mg_userlist_showhide (sess, TRUE); /* show */ + else + mg_userlist_showhide (sess, FALSE); /* hide */ + break; + default: + mg_userlist_showhide (sess, TRUE); /* show */ + } +} + +static void +mg_userlist_toggle_cb (GtkWidget *button, gpointer userdata) +{ + prefs.hideuserlist = !prefs.hideuserlist; + mg_decide_userlist (current_sess, FALSE); + gtk_widget_grab_focus (current_sess->gui->input_box); +} + +static int ul_tag = 0; + +static gboolean +mg_populate_userlist (session *sess) +{ + session_gui *gui; + + if (!sess) + sess = current_tab; + + if (is_session (sess)) + { + gui = sess->gui; + if (sess->type == SESS_DIALOG) + mg_set_access_icon (sess->gui, NULL, sess->server->is_away); + else + mg_set_access_icon (sess->gui, get_user_icon (sess->server, sess->me), sess->server->is_away); + userlist_show (sess); + userlist_set_value (sess->gui->user_tree, sess->res->old_ul_value); + } + + ul_tag = 0; + return 0; +} + +/* fill the irc tab with a new channel */ + +static void +mg_populate (session *sess) +{ + session_gui *gui = sess->gui; + restore_gui *res = sess->res; + int i, render = TRUE; + guint16 vis = gui->ul_hidden; + + switch (sess->type) + { + case SESS_DIALOG: + /* show the dialog buttons */ + gtk_widget_show (gui->dialogbutton_box); + /* hide the chan-mode buttons */ + gtk_widget_hide (gui->topicbutton_box); + /* hide the userlist */ + mg_decide_userlist (sess, FALSE); + /* shouldn't edit the topic */ + gtk_editable_set_editable (GTK_EDITABLE (gui->topic_entry), FALSE); + break; + case SESS_SERVER: + if (prefs.chanmodebuttons) + gtk_widget_show (gui->topicbutton_box); + /* hide the dialog buttons */ + gtk_widget_hide (gui->dialogbutton_box); + /* hide the userlist */ + mg_decide_userlist (sess, FALSE); + /* shouldn't edit the topic */ + gtk_editable_set_editable (GTK_EDITABLE (gui->topic_entry), FALSE); + break; + default: + /* hide the dialog buttons */ + gtk_widget_hide (gui->dialogbutton_box); + if (prefs.chanmodebuttons) + gtk_widget_show (gui->topicbutton_box); + /* show the userlist */ + mg_decide_userlist (sess, FALSE); + /* let the topic be editted */ + gtk_editable_set_editable (GTK_EDITABLE (gui->topic_entry), TRUE); + } + + /* move to THE irc tab */ + if (gui->is_tab) + gtk_notebook_set_current_page (GTK_NOTEBOOK (gui->note_book), 0); + + /* xtext size change? Then don't render, wait for the expose caused + by showing/hidding the userlist */ + if (vis != gui->ul_hidden && gui->user_box->allocation.width > 1) + render = FALSE; + + gtk_xtext_buffer_show (GTK_XTEXT (gui->xtext), res->buffer, render); + + if (gui->is_tab) + gtk_widget_set_sensitive (gui->menu, TRUE); + + /* restore all the GtkEntry's */ + mg_restore_entry (gui->topic_entry, &res->topic_text); + mg_restore_speller (gui->input_box, &res->input_text); + mg_restore_entry (gui->key_entry, &res->key_text); + mg_restore_entry (gui->limit_entry, &res->limit_text); + mg_restore_label (gui->laginfo, &res->lag_text); + mg_restore_label (gui->throttleinfo, &res->queue_text); + + mg_focus (sess); + fe_set_title (sess); + + /* this one flickers, so only change if necessary */ + if (strcmp (sess->server->nick, gtk_button_get_label (GTK_BUTTON (gui->nick_label))) != 0) + gtk_button_set_label (GTK_BUTTON (gui->nick_label), sess->server->nick); + + /* this is slow, so make it a timeout event */ + if (!gui->is_tab) + { + mg_populate_userlist (sess); + } else + { + if (ul_tag == 0) + ul_tag = g_idle_add ((GSourceFunc)mg_populate_userlist, NULL); + } + + fe_userlist_numbers (sess); + + /* restore all the channel mode buttons */ + ignore_chanmode = TRUE; + for (i = 0; i < NUM_FLAG_WIDS - 1; i++) + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gui->flag_wid[i]), + res->flag_wid_state[i]); + ignore_chanmode = FALSE; + + if (gui->lagometer) + { + gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (gui->lagometer), + res->lag_value); + if (res->lag_tip) + add_tip (sess->gui->lagometer->parent, res->lag_tip); + } + if (gui->throttlemeter) + { + gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (gui->throttlemeter), + res->queue_value); + if (res->queue_tip) + add_tip (sess->gui->throttlemeter->parent, res->queue_tip); + } + + /* did this tab have a connecting graph? restore it.. */ + if (res->c_graph) + { + res->c_graph = FALSE; + mg_progressbar_create (gui); + } + + /* menu items */ + GTK_CHECK_MENU_ITEM (gui->menu_item[MENU_ID_AWAY])->active = sess->server->is_away; + gtk_widget_set_sensitive (gui->menu_item[MENU_ID_AWAY], sess->server->connected); + gtk_widget_set_sensitive (gui->menu_item[MENU_ID_JOIN], sess->server->end_of_motd); + gtk_widget_set_sensitive (gui->menu_item[MENU_ID_DISCONNECT], + sess->server->connected || sess->server->recondelay_tag); + + mg_set_topic_tip (sess); + + plugin_emit_dummy_print (sess, "Focus Tab"); +} + +void +mg_bring_tofront_sess (session *sess) /* IRC tab or window */ +{ + if (sess->gui->is_tab) + chan_focus (sess->res->tab); + else + gtk_window_present (GTK_WINDOW (sess->gui->window)); +} + +void +mg_bring_tofront (GtkWidget *vbox) /* non-IRC tab or window */ +{ + chan *ch; + + ch = g_object_get_data (G_OBJECT (vbox), "ch"); + if (ch) + chan_focus (ch); + else + gtk_window_present (GTK_WINDOW (gtk_widget_get_toplevel (vbox))); +} + +void +mg_switch_page (int relative, int num) +{ + if (mg_gui) + chanview_move_focus (mg_gui->chanview, relative, num); +} + +/* a toplevel IRC window was destroyed */ + +static void +mg_topdestroy_cb (GtkWidget *win, session *sess) +{ +/* printf("enter mg_topdestroy. sess %p was destroyed\n", sess);*/ + + /* kill the text buffer */ + gtk_xtext_buffer_free (sess->res->buffer); + /* kill the user list */ + g_object_unref (G_OBJECT (sess->res->user_model)); + + session_free (sess); /* tell xchat.c about it */ +} + +/* cleanup an IRC tab */ + +static void +mg_ircdestroy (session *sess) +{ + GSList *list; + + /* kill the text buffer */ + gtk_xtext_buffer_free (sess->res->buffer); + /* kill the user list */ + g_object_unref (G_OBJECT (sess->res->user_model)); + + session_free (sess); /* tell xchat.c about it */ + + if (mg_gui == NULL) + { +/* puts("-> mg_gui is already NULL");*/ + return; + } + + list = sess_list; + while (list) + { + sess = list->data; + if (sess->gui->is_tab) + { +/* puts("-> some tabs still remain");*/ + return; + } + list = list->next; + } + +/* puts("-> no tabs left, killing main tabwindow");*/ + gtk_widget_destroy (mg_gui->window); + active_tab = NULL; + mg_gui = NULL; + parent_window = NULL; +} + +static void +mg_tab_close_cb (GtkWidget *dialog, gint arg1, session *sess) +{ + GSList *list, *next; + + gtk_widget_destroy (dialog); + if (arg1 == GTK_RESPONSE_OK && is_session (sess)) + { + /* force it NOT to send individual PARTs */ + sess->server->sent_quit = TRUE; + + for (list = sess_list; list;) + { + next = list->next; + if (((session *)list->data)->server == sess->server && + ((session *)list->data) != sess) + fe_close_window ((session *)list->data); + list = next; + } + + /* just send one QUIT - better for BNCs */ + sess->server->sent_quit = FALSE; + fe_close_window (sess); + } +} + +void +mg_tab_close (session *sess) +{ + GtkWidget *dialog; + GSList *list; + int i; + + if (chan_remove (sess->res->tab, FALSE)) + mg_ircdestroy (sess); + else + { + for (i = 0, list = sess_list; list; list = list->next) + if (((session *)list->data)->server == sess->server) + i++; + dialog = gtk_message_dialog_new (GTK_WINDOW (parent_window), 0, + GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, + _("This server still has %d channels or dialogs associated with it. " + "Close them all?"), i); + g_signal_connect (G_OBJECT (dialog), "response", + G_CALLBACK (mg_tab_close_cb), sess); + gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); + gtk_widget_show (dialog); + } +} + +static void +mg_menu_destroy (GtkWidget *menu, gpointer userdata) +{ + gtk_widget_destroy (menu); + g_object_unref (menu); +} + +void +mg_create_icon_item (char *label, char *stock, GtkWidget *menu, + void *callback, void *userdata) +{ + GtkWidget *item; + + item = create_icon_menu (label, stock, TRUE); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (callback), + userdata); + gtk_widget_show (item); +} + +static int +mg_count_networks (void) +{ + int cons = 0; + GSList *list; + + for (list = serv_list; list; list = list->next) + { + if (((server *)list->data)->connected) + cons++; + } + return cons; +} + +static int +mg_count_dccs (void) +{ + GSList *list; + struct DCC *dcc; + int dccs = 0; + + list = dcc_list; + while (list) + { + dcc = list->data; + if ((dcc->type == TYPE_SEND || dcc->type == TYPE_RECV) && + dcc->dccstat == STAT_ACTIVE) + dccs++; + list = list->next; + } + + return dccs; +} + +void +mg_open_quit_dialog (gboolean minimize_button) +{ + static GtkWidget *dialog = NULL; + GtkWidget *dialog_vbox1; + GtkWidget *table1; + GtkWidget *image; + GtkWidget *checkbutton1; + GtkWidget *label; + GtkWidget *dialog_action_area1; + GtkWidget *button; + char *text, *connecttext; + int cons; + int dccs; + + if (dialog) + { + gtk_window_present (GTK_WINDOW (dialog)); + return; + } + + dccs = mg_count_dccs (); + cons = mg_count_networks (); + if (dccs + cons == 0 || !prefs.gui_quit_dialog) + { + xchat_exit (); + return; + } + + dialog = gtk_dialog_new (); + gtk_container_set_border_width (GTK_CONTAINER (dialog), 6); + gtk_window_set_title (GTK_WINDOW (dialog), _("Quit XChat?")); + gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (parent_window)); + gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); + gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE); + + dialog_vbox1 = GTK_DIALOG (dialog)->vbox; + gtk_widget_show (dialog_vbox1); + + table1 = gtk_table_new (2, 2, FALSE); + gtk_widget_show (table1); + gtk_box_pack_start (GTK_BOX (dialog_vbox1), table1, TRUE, TRUE, 0); + gtk_container_set_border_width (GTK_CONTAINER (table1), 6); + gtk_table_set_row_spacings (GTK_TABLE (table1), 12); + gtk_table_set_col_spacings (GTK_TABLE (table1), 12); + + image = gtk_image_new_from_stock ("gtk-dialog-warning", GTK_ICON_SIZE_DIALOG); + gtk_widget_show (image); + gtk_table_attach (GTK_TABLE (table1), image, 0, 1, 0, 1, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (GTK_FILL), 0, 0); + + checkbutton1 = gtk_check_button_new_with_mnemonic (_("Don't ask next time.")); + gtk_widget_show (checkbutton1); + gtk_table_attach (GTK_TABLE (table1), checkbutton1, 0, 2, 1, 2, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 4); + + connecttext = g_strdup_printf (_("You are connected to %i IRC networks."), cons); + text = g_strdup_printf ("<span weight=\"bold\" size=\"larger\">%s</span>\n\n%s\n%s", + _("Are you sure you want to quit?"), + cons ? connecttext : "", + dccs ? _("Some file transfers are still active.") : ""); + g_free (connecttext); + label = gtk_label_new (text); + g_free (text); + gtk_widget_show (label); + gtk_table_attach (GTK_TABLE (table1), label, 1, 2, 0, 1, + (GtkAttachOptions) (GTK_EXPAND | GTK_SHRINK | GTK_FILL), + (GtkAttachOptions) (GTK_EXPAND | GTK_SHRINK), 0, 0); + gtk_label_set_use_markup (GTK_LABEL (label), TRUE); + gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); + + dialog_action_area1 = GTK_DIALOG (dialog)->action_area; + gtk_widget_show (dialog_action_area1); + gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area1), + GTK_BUTTONBOX_END); + + if (minimize_button) + { + button = gtk_button_new_with_mnemonic (_("_Minimize to Tray")); + gtk_widget_show (button); + gtk_dialog_add_action_widget (GTK_DIALOG (dialog), button, 1); + } + + button = gtk_button_new_from_stock ("gtk-cancel"); + gtk_widget_show (button); + gtk_dialog_add_action_widget (GTK_DIALOG (dialog), button, + GTK_RESPONSE_CANCEL); + gtk_widget_grab_focus (button); + + button = gtk_button_new_from_stock ("gtk-quit"); + gtk_widget_show (button); + gtk_dialog_add_action_widget (GTK_DIALOG (dialog), button, 0); + + gtk_widget_show (dialog); + + switch (gtk_dialog_run (GTK_DIALOG (dialog))) + { + case 0: + if (GTK_TOGGLE_BUTTON (checkbutton1)->active) + prefs.gui_quit_dialog = 0; + xchat_exit (); + break; + case 1: /* minimize to tray */ + if (GTK_TOGGLE_BUTTON (checkbutton1)->active) + { + prefs.gui_tray_flags |= 1; + /*prefs.gui_quit_dialog = 0;*/ + } + /* force tray icon ON, if not already */ + if (!prefs.gui_tray) + { + prefs.gui_tray = 1; + tray_apply_setup (); + } + tray_toggle_visibility (TRUE); + break; + } + + gtk_widget_destroy (dialog); + dialog = NULL; +} + +void +mg_close_sess (session *sess) +{ + if (sess_list->next == NULL) + { + mg_open_quit_dialog (FALSE); + return; + } + + fe_close_window (sess); +} + +static int +mg_chan_remove (chan *ch) +{ + /* remove the tab from chanview */ + chan_remove (ch, TRUE); + /* any tabs left? */ + if (chanview_get_size (mg_gui->chanview) < 1) + { + /* if not, destroy the main tab window */ + gtk_widget_destroy (mg_gui->window); + current_tab = NULL; + active_tab = NULL; + mg_gui = NULL; + parent_window = NULL; + return TRUE; + } + return FALSE; +} + +/* destroy non-irc tab/window */ + +static void +mg_close_gen (chan *ch, GtkWidget *box) +{ + char *title = g_object_get_data (G_OBJECT (box), "title"); + + if (title) + free (title); + if (!ch) + ch = g_object_get_data (G_OBJECT (box), "ch"); + if (ch) + { + /* remove from notebook */ + gtk_widget_destroy (box); + /* remove the tab from chanview */ + mg_chan_remove (ch); + } else + { + gtk_widget_destroy (gtk_widget_get_toplevel (box)); + } +} + +/* the "X" close button has been pressed (tab-view) */ + +static void +mg_xbutton_cb (chanview *cv, chan *ch, int tag, gpointer userdata) +{ + if (tag == TAG_IRC) /* irc tab */ + mg_close_sess (userdata); + else /* non-irc utility tab */ + mg_close_gen (ch, userdata); +} + +static void +mg_link_gentab (chan *ch, GtkWidget *box) +{ + int num; + GtkWidget *win; + + g_object_ref (box); + + num = gtk_notebook_page_num (GTK_NOTEBOOK (mg_gui->note_book), box); + gtk_notebook_remove_page (GTK_NOTEBOOK (mg_gui->note_book), num); + mg_chan_remove (ch); + + win = gtkutil_window_new (g_object_get_data (G_OBJECT (box), "title"), "", + GPOINTER_TO_INT (g_object_get_data (G_OBJECT (box), "w")), + GPOINTER_TO_INT (g_object_get_data (G_OBJECT (box), "h")), + 3); + /* so it doesn't try to chan_remove (there's no tab anymore) */ + g_object_steal_data (G_OBJECT (box), "ch"); + gtk_container_set_border_width (GTK_CONTAINER (box), 0); + gtk_container_add (GTK_CONTAINER (win), box); + gtk_widget_show (win); + + g_object_unref (box); +} + +static void +mg_detach_tab_cb (GtkWidget *item, chan *ch) +{ + if (chan_get_tag (ch) == TAG_IRC) /* IRC tab */ + { + /* userdata is session * */ + mg_link_irctab (chan_get_userdata (ch), 1); + return; + } + + /* userdata is GtkWidget * */ + mg_link_gentab (ch, chan_get_userdata (ch)); /* non-IRC tab */ +} + +static void +mg_destroy_tab_cb (GtkWidget *item, chan *ch) +{ + /* treat it just like the X button press */ + mg_xbutton_cb (mg_gui->chanview, ch, chan_get_tag (ch), chan_get_userdata (ch)); +} + +static void +mg_color_insert (GtkWidget *item, gpointer userdata) +{ + char buf[32]; + char *text; + int num = GPOINTER_TO_INT (userdata); + + if (num > 99) + { + switch (num) + { + case 100: + text = "\002"; break; + case 101: + text = "\037"; break; + case 102: + text = "\035"; break; + default: + text = "\017"; break; + } + key_action_insert (current_sess->gui->input_box, 0, text, 0, 0); + } else + { + sprintf (buf, "\003%02d", num); + key_action_insert (current_sess->gui->input_box, 0, buf, 0, 0); + } +} + +static void +mg_markup_item (GtkWidget *menu, char *text, int arg) +{ + GtkWidget *item; + + item = gtk_menu_item_new_with_label (""); + gtk_label_set_markup (GTK_LABEL (GTK_BIN (item)->child), text); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (mg_color_insert), GINT_TO_POINTER (arg)); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + gtk_widget_show (item); +} + +GtkWidget * +mg_submenu (GtkWidget *menu, char *text) +{ + GtkWidget *submenu, *item; + + item = gtk_menu_item_new_with_mnemonic (text); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + gtk_widget_show (item); + + submenu = gtk_menu_new (); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), submenu); + gtk_widget_show (submenu); + + return submenu; +} + +static void +mg_create_color_menu (GtkWidget *menu, session *sess) +{ + GtkWidget *submenu; + GtkWidget *subsubmenu; + char buf[256]; + int i; + + submenu = mg_submenu (menu, _("Insert Attribute or Color Code")); + + mg_markup_item (submenu, _("<b>Bold</b>"), 100); + mg_markup_item (submenu, _("<u>Underline</u>"), 101); + /*mg_markup_item (submenu, _("<i>Italic</i>"), 102);*/ + mg_markup_item (submenu, _("Normal"), 103); + + subsubmenu = mg_submenu (submenu, _("Colors 0-7")); + + for (i = 0; i < 8; i++) + { + sprintf (buf, "<tt><sup>%02d</sup> <span background=\"#%02x%02x%02x\">" + " </span></tt>", + i, colors[i].red >> 8, colors[i].green >> 8, colors[i].blue >> 8); + mg_markup_item (subsubmenu, buf, i); + } + + subsubmenu = mg_submenu (submenu, _("Colors 8-15")); + + for (i = 8; i < 16; i++) + { + sprintf (buf, "<tt><sup>%02d</sup> <span background=\"#%02x%02x%02x\">" + " </span></tt>", + i, colors[i].red >> 8, colors[i].green >> 8, colors[i].blue >> 8); + mg_markup_item (subsubmenu, buf, i); + } +} + +static void +mg_set_guint8 (GtkCheckMenuItem *item, guint8 *setting) +{ + session *sess = current_sess; + guint8 logging = sess->text_logging; + + *setting = SET_OFF; + if (item->active) + *setting = SET_ON; + + /* has the logging setting changed? */ + if (logging != sess->text_logging) + log_open_or_close (sess); +} + +static void +mg_perchan_menu_item (char *label, GtkWidget *menu, guint8 *setting, guint global) +{ + guint8 initial_value = *setting; + + /* if it's using global value, use that as initial state */ + if (initial_value == SET_DEFAULT) + initial_value = global; + + menu_toggle_item (label, menu, mg_set_guint8, setting, initial_value); +} + +static void +mg_create_perchannelmenu (session *sess, GtkWidget *menu) +{ + GtkWidget *submenu; + + submenu = menu_quick_sub (_("_Settings"), menu, NULL, XCMENU_MNEMONIC, -1); + + mg_perchan_menu_item (_("_Log to Disk"), submenu, &sess->text_logging, prefs.logging); + mg_perchan_menu_item (_("_Reload Scrollback"), submenu, &sess->text_scrollback, prefs.text_replay); + if (sess->type == SESS_CHANNEL) + mg_perchan_menu_item (_("_Hide Join/Part Messages"), submenu, &sess->text_hidejoinpart, prefs.confmode); +} + +static void +mg_create_alertmenu (session *sess, GtkWidget *menu) +{ + GtkWidget *submenu; + + submenu = menu_quick_sub (_("_Extra Alerts"), menu, NULL, XCMENU_MNEMONIC, -1); + + mg_perchan_menu_item (_("Beep on _Message"), submenu, &sess->alert_beep, prefs.input_beep_chans); + mg_perchan_menu_item (_("Blink Tray _Icon"), submenu, &sess->alert_tray, prefs.input_tray_chans); + mg_perchan_menu_item (_("Blink Task _Bar"), submenu, &sess->alert_taskbar, prefs.input_flash_chans); +} + +static void +mg_create_tabmenu (session *sess, GdkEventButton *event, chan *ch) +{ + GtkWidget *menu, *item; + char buf[256]; + + menu = gtk_menu_new (); + + if (sess) + { + char *name = g_markup_escape_text (sess->channel[0] ? sess->channel : _("<none>"), -1); + snprintf (buf, sizeof (buf), "<span foreground=\"#3344cc\"><b>%s</b></span>", name); + g_free (name); + + item = gtk_menu_item_new_with_label (""); + gtk_label_set_markup (GTK_LABEL (GTK_BIN (item)->child), buf); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + gtk_widget_show (item); + + /* separator */ + menu_quick_item (0, 0, menu, XCMENU_SHADED, 0, 0); + + /* per-channel alerts */ + mg_create_alertmenu (sess, menu); + + /* per-channel settings */ + mg_create_perchannelmenu (sess, menu); + + /* separator */ + menu_quick_item (0, 0, menu, XCMENU_SHADED, 0, 0); + + if (sess->type == SESS_CHANNEL) + menu_addfavoritemenu (sess->server, menu, sess->channel); + } + + mg_create_icon_item (_("_Detach"), GTK_STOCK_REDO, menu, + mg_detach_tab_cb, ch); + mg_create_icon_item (_("_Close"), GTK_STOCK_CLOSE, menu, + mg_destroy_tab_cb, ch); + if (sess && tabmenu_list) + menu_create (menu, tabmenu_list, sess->channel, FALSE); + menu_add_plugin_items (menu, "\x4$TAB", sess->channel); + + if (event->window) + gtk_menu_set_screen (GTK_MENU (menu), gdk_drawable_get_screen (event->window)); + g_object_ref (menu); + g_object_ref_sink (menu); + g_object_unref (menu); + g_signal_connect (G_OBJECT (menu), "selection-done", + G_CALLBACK (mg_menu_destroy), NULL); + gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 0, event->time); +} + +static gboolean +mg_tab_contextmenu_cb (chanview *cv, chan *ch, int tag, gpointer ud, GdkEventButton *event) +{ + /* shift-click to close a tab */ + if ((event->state & GDK_SHIFT_MASK) && event->type == GDK_BUTTON_PRESS) + { + mg_xbutton_cb (cv, ch, tag, ud); + return FALSE; + } + + if (event->button != 3) + return FALSE; + + if (tag == TAG_IRC) + mg_create_tabmenu (ud, event, ch); + else + mg_create_tabmenu (NULL, event, ch); + + return TRUE; +} + +void +mg_dnd_drop_file (session *sess, char *target, char *uri) +{ + char *p, *data, *next, *fname; + + p = data = strdup (uri); + while (*p) + { + next = strchr (p, '\r'); + if (strncasecmp ("file:", p, 5) == 0) + { + if (next) + *next = 0; + fname = g_filename_from_uri (p, NULL, NULL); + if (fname) + { + /* dcc_send() expects utf-8 */ + p = xchat_filename_to_utf8 (fname, -1, 0, 0, 0); + if (p) + { + dcc_send (sess, target, p, prefs.dcc_max_send_cps, 0); + g_free (p); + } + g_free (fname); + } + } + if (!next) + break; + p = next + 1; + if (*p == '\n') + p++; + } + free (data); + +} + +static void +mg_dialog_dnd_drop (GtkWidget * widget, GdkDragContext * context, gint x, + gint y, GtkSelectionData * selection_data, guint info, + guint32 time, gpointer ud) +{ + if (current_sess->type == SESS_DIALOG) + /* sess->channel is really the nickname of dialogs */ + mg_dnd_drop_file (current_sess, current_sess->channel, selection_data->data); +} + +/* add a tabbed channel */ + +static void +mg_add_chan (session *sess) +{ + GdkPixbuf *icon; + char *name = _("<none>"); + + if (sess->channel[0]) + name = sess->channel; + + switch (sess->type) + { + case SESS_CHANNEL: + icon = pix_channel; + break; + case SESS_SERVER: + icon = pix_server; + break; + default: + icon = pix_dialog; + } + + sess->res->tab = chanview_add (sess->gui->chanview, name, sess->server, sess, + sess->type == SESS_SERVER ? FALSE : TRUE, + TAG_IRC, icon); + if (plain_list == NULL) + mg_create_tab_colors (); + + chan_set_color (sess->res->tab, plain_list); + + if (sess->res->buffer == NULL) + { + sess->res->buffer = gtk_xtext_buffer_new (GTK_XTEXT (sess->gui->xtext)); + gtk_xtext_set_time_stamp (sess->res->buffer, prefs.timestamp); + sess->res->user_model = userlist_create_model (); + } +} + +static void +mg_userlist_button (GtkWidget * box, char *label, char *cmd, + int a, int b, int c, int d) +{ + GtkWidget *wid = gtk_button_new_with_label (label); + g_signal_connect (G_OBJECT (wid), "clicked", + G_CALLBACK (userlist_button_cb), cmd); + gtk_table_attach_defaults (GTK_TABLE (box), wid, a, b, c, d); + show_and_unfocus (wid); +} + +static GtkWidget * +mg_create_userlistbuttons (GtkWidget *box) +{ + struct popup *pop; + GSList *list = button_list; + int a = 0, b = 0; + GtkWidget *tab; + + tab = gtk_table_new (5, 2, FALSE); + gtk_box_pack_end (GTK_BOX (box), tab, FALSE, FALSE, 0); + + while (list) + { + pop = list->data; + if (pop->cmd[0]) + { + mg_userlist_button (tab, pop->name, pop->cmd, a, a + 1, b, b + 1); + a++; + if (a == 2) + { + a = 0; + b++; + } + } + list = list->next; + } + + return tab; +} + +static void +mg_topic_cb (GtkWidget *entry, gpointer userdata) +{ + session *sess = current_sess; + char *text; + + if (sess->channel[0] && sess->server->connected && sess->type == SESS_CHANNEL) + { + text = GTK_ENTRY (entry)->text; + if (text[0] == 0) + text = NULL; + sess->server->p_topic (sess->server, sess->channel, text); + } else + gtk_entry_set_text (GTK_ENTRY (entry), ""); + /* restore focus to the input widget, where the next input will most +likely be */ + gtk_widget_grab_focus (sess->gui->input_box); +} + +static void +mg_tabwindow_kill_cb (GtkWidget *win, gpointer userdata) +{ + GSList *list, *next; + session *sess; + +/* puts("enter mg_tabwindow_kill_cb");*/ + xchat_is_quitting = TRUE; + + /* see if there's any non-tab windows left */ + list = sess_list; + while (list) + { + sess = list->data; + next = list->next; + if (!sess->gui->is_tab) + { + xchat_is_quitting = FALSE; +/* puts("-> will not exit, some toplevel windows left");*/ + } else + { + mg_ircdestroy (sess); + } + list = next; + } + + current_tab = NULL; + active_tab = NULL; + mg_gui = NULL; + parent_window = NULL; +} + +static GtkWidget * +mg_changui_destroy (session *sess) +{ + GtkWidget *ret = NULL; + + if (sess->gui->is_tab) + { + /* avoid calling the "destroy" callback */ + g_signal_handlers_disconnect_by_func (G_OBJECT (sess->gui->window), + mg_tabwindow_kill_cb, 0); + /* remove the tab from the chanview */ + if (!mg_chan_remove (sess->res->tab)) + /* if the window still exists, restore the signal handler */ + g_signal_connect (G_OBJECT (sess->gui->window), "destroy", + G_CALLBACK (mg_tabwindow_kill_cb), 0); + } else + { + /* avoid calling the "destroy" callback */ + g_signal_handlers_disconnect_by_func (G_OBJECT (sess->gui->window), + mg_topdestroy_cb, sess); + /*gtk_widget_destroy (sess->gui->window);*/ + /* don't destroy until the new one is created. Not sure why, but */ + /* it fixes: Gdk-CRITICAL **: gdk_colormap_get_screen: */ + /* assertion `GDK_IS_COLORMAP (cmap)' failed */ + ret = sess->gui->window; + free (sess->gui); + sess->gui = NULL; + } + return ret; +} + +static void +mg_link_irctab (session *sess, int focus) +{ + GtkWidget *win; + + if (sess->gui->is_tab) + { + win = mg_changui_destroy (sess); + mg_changui_new (sess, sess->res, 0, focus); + mg_populate (sess); + xchat_is_quitting = FALSE; + if (win) + gtk_widget_destroy (win); + return; + } + + mg_unpopulate (sess); + win = mg_changui_destroy (sess); + mg_changui_new (sess, sess->res, 1, focus); + /* the buffer is now attached to a different widget */ + ((xtext_buffer *)sess->res->buffer)->xtext = (GtkXText *)sess->gui->xtext; + if (win) + gtk_widget_destroy (win); +} + +void +mg_detach (session *sess, int mode) +{ + switch (mode) + { + /* detach only */ + case 1: + if (sess->gui->is_tab) + mg_link_irctab (sess, 1); + break; + /* attach only */ + case 2: + if (!sess->gui->is_tab) + mg_link_irctab (sess, 1); + break; + /* toggle */ + default: + mg_link_irctab (sess, 1); + } +} + +static int +check_is_number (char *t) +{ + while (*t) + { + if (*t < '0' || *t > '9') + return FALSE; + t++; + } + return TRUE; +} + +static void +mg_change_flag (GtkWidget * wid, session *sess, char flag) +{ + server *serv = sess->server; + char mode[3]; + + mode[1] = flag; + mode[2] = '\0'; + if (serv->connected && sess->channel[0]) + { + if (GTK_TOGGLE_BUTTON (wid)->active) + mode[0] = '+'; + else + mode[0] = '-'; + serv->p_mode (serv, sess->channel, mode); + serv->p_join_info (serv, sess->channel); + sess->ignore_mode = TRUE; + sess->ignore_date = TRUE; + } +} + +static void +flagl_hit (GtkWidget * wid, struct session *sess) +{ + char modes[512]; + const char *limit_str; + server *serv = sess->server; + + if (GTK_TOGGLE_BUTTON (wid)->active) + { + if (serv->connected && sess->channel[0]) + { + limit_str = gtk_entry_get_text (GTK_ENTRY (sess->gui->limit_entry)); + if (check_is_number ((char *)limit_str) == FALSE) + { + fe_message (_("User limit must be a number!\n"), FE_MSG_ERROR); + gtk_entry_set_text (GTK_ENTRY (sess->gui->limit_entry), ""); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wid), FALSE); + return; + } + snprintf (modes, sizeof (modes), "+l %d", atoi (limit_str)); + serv->p_mode (serv, sess->channel, modes); + serv->p_join_info (serv, sess->channel); + } + } else + mg_change_flag (wid, sess, 'l'); +} + +static void +flagk_hit (GtkWidget * wid, struct session *sess) +{ + char modes[512]; + server *serv = sess->server; + + if (serv->connected && sess->channel[0]) + { + snprintf (modes, sizeof (modes), "-k %s", + gtk_entry_get_text (GTK_ENTRY (sess->gui->key_entry))); + + if (GTK_TOGGLE_BUTTON (wid)->active) + modes[0] = '+'; + + serv->p_mode (serv, sess->channel, modes); + } +} + +static void +mg_flagbutton_cb (GtkWidget *but, char *flag) +{ + session *sess; + char mode; + + if (ignore_chanmode) + return; + + sess = current_sess; + mode = tolower ((unsigned char) flag[0]); + + switch (mode) + { + case 'l': + flagl_hit (but, sess); + break; + case 'k': + flagk_hit (but, sess); + break; + case 'b': + ignore_chanmode = TRUE; + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sess->gui->flag_b), FALSE); + ignore_chanmode = FALSE; + banlist_opengui (sess); + break; + default: + mg_change_flag (but, sess, mode); + } +} + +static GtkWidget * +mg_create_flagbutton (char *tip, GtkWidget *box, char *face) +{ + GtkWidget *wid; + + wid = gtk_toggle_button_new_with_label (face); + gtk_widget_set_size_request (wid, 18, 0); + add_tip (wid, tip); + gtk_box_pack_start (GTK_BOX (box), wid, 0, 0, 0); + g_signal_connect (G_OBJECT (wid), "toggled", + G_CALLBACK (mg_flagbutton_cb), face); + show_and_unfocus (wid); + + return wid; +} + +static void +mg_key_entry_cb (GtkWidget * igad, gpointer userdata) +{ + char modes[512]; + session *sess = current_sess; + server *serv = sess->server; + + if (serv->connected && sess->channel[0]) + { + snprintf (modes, sizeof (modes), "+k %s", + gtk_entry_get_text (GTK_ENTRY (igad))); + serv->p_mode (serv, sess->channel, modes); + serv->p_join_info (serv, sess->channel); + } +} + +static void +mg_limit_entry_cb (GtkWidget * igad, gpointer userdata) +{ + char modes[512]; + session *sess = current_sess; + server *serv = sess->server; + + if (serv->connected && sess->channel[0]) + { + if (check_is_number ((char *)gtk_entry_get_text (GTK_ENTRY (igad))) == FALSE) + { + gtk_entry_set_text (GTK_ENTRY (igad), ""); + fe_message (_("User limit must be a number!\n"), FE_MSG_ERROR); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sess->gui->flag_l), FALSE); + return; + } + snprintf (modes, sizeof(modes), "+l %d", + atoi (gtk_entry_get_text (GTK_ENTRY (igad)))); + serv->p_mode (serv, sess->channel, modes); + serv->p_join_info (serv, sess->channel); + } +} + +static void +mg_apply_entry_style (GtkWidget *entry) +{ + gtk_widget_modify_base (entry, GTK_STATE_NORMAL, &colors[COL_BG]); + gtk_widget_modify_text (entry, GTK_STATE_NORMAL, &colors[COL_FG]); + gtk_widget_modify_font (entry, input_style->font_desc); +} + +static void +mg_create_chanmodebuttons (session_gui *gui, GtkWidget *box) +{ + gui->flag_t = mg_create_flagbutton (_("Topic Protection"), box, "T"); + gui->flag_n = mg_create_flagbutton (_("No outside messages"), box, "N"); + gui->flag_s = mg_create_flagbutton (_("Secret"), box, "S"); + gui->flag_i = mg_create_flagbutton (_("Invite Only"), box, "I"); + gui->flag_p = mg_create_flagbutton (_("Private"), box, "P"); + gui->flag_m = mg_create_flagbutton (_("Moderated"), box, "M"); + gui->flag_b = mg_create_flagbutton (_("Ban List"), box, "B"); + + gui->flag_k = mg_create_flagbutton (_("Keyword"), box, "K"); + gui->key_entry = gtk_entry_new (); + gtk_widget_set_name (gui->key_entry, "xchat-inputbox"); + gtk_entry_set_max_length (GTK_ENTRY (gui->key_entry), 16); + gtk_widget_set_size_request (gui->key_entry, 30, -1); + gtk_box_pack_start (GTK_BOX (box), gui->key_entry, 0, 0, 0); + g_signal_connect (G_OBJECT (gui->key_entry), "activate", + G_CALLBACK (mg_key_entry_cb), NULL); + + if (prefs.style_inputbox) + mg_apply_entry_style (gui->key_entry); + + gui->flag_l = mg_create_flagbutton (_("User Limit"), box, "L"); + gui->limit_entry = gtk_entry_new (); + gtk_widget_set_name (gui->limit_entry, "xchat-inputbox"); + gtk_entry_set_max_length (GTK_ENTRY (gui->limit_entry), 10); + gtk_widget_set_size_request (gui->limit_entry, 30, -1); + gtk_box_pack_start (GTK_BOX (box), gui->limit_entry, 0, 0, 0); + g_signal_connect (G_OBJECT (gui->limit_entry), "activate", + G_CALLBACK (mg_limit_entry_cb), NULL); + + if (prefs.style_inputbox) + mg_apply_entry_style (gui->limit_entry); +} + +/*static void +mg_create_link_buttons (GtkWidget *box, gpointer userdata) +{ + gtkutil_button (box, GTK_STOCK_CLOSE, _("Close this tab/window"), + mg_x_click_cb, userdata, 0); + + if (!userdata) + gtkutil_button (box, GTK_STOCK_REDO, _("Attach/Detach this tab"), + mg_link_cb, userdata, 0); +}*/ + +static void +mg_dialog_button_cb (GtkWidget *wid, char *cmd) +{ + /* the longest cmd is 12, and the longest nickname is 64 */ + char buf[128]; + char *host = ""; + char *topic; + + if (!current_sess) + return; + + topic = (char *)(GTK_ENTRY (current_sess->gui->topic_entry)->text); + topic = strrchr (topic, '@'); + if (topic) + host = topic + 1; + + auto_insert (buf, sizeof (buf), cmd, 0, 0, "", "", "", + server_get_network (current_sess->server, TRUE), host, "", + current_sess->channel); + + handle_command (current_sess, buf, TRUE); + + /* dirty trick to avoid auto-selection */ + SPELL_ENTRY_SET_EDITABLE (current_sess->gui->input_box, FALSE); + gtk_widget_grab_focus (current_sess->gui->input_box); + SPELL_ENTRY_SET_EDITABLE (current_sess->gui->input_box, TRUE); +} + +static void +mg_dialog_button (GtkWidget *box, char *name, char *cmd) +{ + GtkWidget *wid; + + wid = gtk_button_new_with_label (name); + gtk_box_pack_start (GTK_BOX (box), wid, FALSE, FALSE, 0); + g_signal_connect (G_OBJECT (wid), "clicked", + G_CALLBACK (mg_dialog_button_cb), cmd); + gtk_widget_set_size_request (wid, -1, 0); +} + +static void +mg_create_dialogbuttons (GtkWidget *box) +{ + struct popup *pop; + GSList *list = dlgbutton_list; + + while (list) + { + pop = list->data; + if (pop->cmd[0]) + mg_dialog_button (box, pop->name, pop->cmd); + list = list->next; + } +} + +static void +mg_create_topicbar (session *sess, GtkWidget *box) +{ + GtkWidget *hbox, *topic, *bbox; + session_gui *gui = sess->gui; + + gui->topic_bar = hbox = gtk_hbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (box), hbox, 0, 0, 0); + + if (!gui->is_tab) + sess->res->tab = NULL; + + gui->topic_entry = topic = gtk_entry_new (); + gtk_widget_set_name (topic, "xchat-inputbox"); + gtk_container_add (GTK_CONTAINER (hbox), topic); + g_signal_connect (G_OBJECT (topic), "activate", + G_CALLBACK (mg_topic_cb), 0); + + if (prefs.style_inputbox) + mg_apply_entry_style (topic); + + gui->topicbutton_box = bbox = gtk_hbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (hbox), bbox, 0, 0, 0); + mg_create_chanmodebuttons (gui, bbox); + + gui->dialogbutton_box = bbox = gtk_hbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (hbox), bbox, 0, 0, 0); + mg_create_dialogbuttons (bbox); + + if (!prefs.paned_userlist) + gtkutil_button (hbox, GTK_STOCK_GOTO_LAST, _("Show/Hide userlist"), + mg_userlist_toggle_cb, 0, 0); +} + +/* check if a word is clickable */ + +static int +mg_word_check (GtkWidget * xtext, char *word, int len) +{ + session *sess = current_sess; + int ret; + + ret = url_check_word (word, len); /* common/url.c */ + if (ret == 0) + { + if (( (word[0]=='@' || word[0]=='+' || word[0]=='%') && userlist_find (sess, word+1)) || userlist_find (sess, word)) + return WORD_NICK; + + if (sess->type == SESS_DIALOG) + return WORD_DIALOG; + } + + return ret; +} + +/* mouse click inside text area */ + +static void +mg_word_clicked (GtkWidget *xtext, char *word, GdkEventButton *even) +{ + session *sess = current_sess; + + if (even->button == 1) /* left button */ + { + if (word == NULL) + { + mg_focus (sess); + return; + } + + if ((even->state & 13) == prefs.gui_url_mod) + { + switch (mg_word_check (xtext, word, strlen (word))) + { + case WORD_URL: + case WORD_HOST: + fe_open_url (word); + } + } + return; + } + + if (even->button == 2) + { + if (sess->type == SESS_DIALOG) + menu_middlemenu (sess, even); + else if (even->type == GDK_2BUTTON_PRESS) + userlist_select (sess, word); + return; + } + + switch (mg_word_check (xtext, word, strlen (word))) + { + case 0: + menu_middlemenu (sess, even); + break; + case WORD_URL: + case WORD_HOST: + menu_urlmenu (even, word); + break; + case WORD_NICK: + menu_nickmenu (sess, even, (word[0]=='@' || word[0]=='+' || word[0]=='%') ? + word+1 : word, FALSE); + break; + case WORD_CHANNEL: + if (*word == '@' || *word == '+' || *word=='^' || *word=='%' || *word=='*') + word++; + menu_chanmenu (sess, even, word); + break; + case WORD_EMAIL: + { + char *newword = malloc (strlen (word) + 10); + if (*word == '~') + word++; + sprintf (newword, "mailto:%s", word); + menu_urlmenu (even, newword); + free (newword); + } + break; + case WORD_DIALOG: + menu_nickmenu (sess, even, sess->channel, FALSE); + break; + } +} + +void +mg_update_xtext (GtkWidget *wid) +{ + GtkXText *xtext = GTK_XTEXT (wid); + + gtk_xtext_set_palette (xtext, colors); + gtk_xtext_set_max_lines (xtext, prefs.max_lines); + gtk_xtext_set_tint (xtext, prefs.tint_red, prefs.tint_green, prefs.tint_blue); + gtk_xtext_set_background (xtext, channelwin_pix, prefs.transparent); + gtk_xtext_set_wordwrap (xtext, prefs.wordwrap); + gtk_xtext_set_show_marker (xtext, prefs.show_marker); + gtk_xtext_set_show_separator (xtext, prefs.indent_nicks ? prefs.show_separator : 0); + gtk_xtext_set_indent (xtext, prefs.indent_nicks); + if (!gtk_xtext_set_font (xtext, prefs.font_normal)) + { + fe_message ("Failed to open any font. I'm out of here!", FE_MSG_WAIT | FE_MSG_ERROR); + exit (1); + } + + gtk_xtext_refresh (xtext, FALSE); +} + +/* handle errors reported by xtext */ + +static void +mg_xtext_error (int type) +{ + switch (type) + { + case 0: + fe_message (_("Unable to set transparent background!\n\n" + "You may be using a non-compliant window\n" + "manager that is not currently supported.\n"), FE_MSG_WARN); + prefs.transparent = 0; + /* no others exist yet */ + } +} + +static void +mg_create_textarea (session *sess, GtkWidget *box) +{ + GtkWidget *inbox, *vbox, *frame; + GtkXText *xtext; + session_gui *gui = sess->gui; + static const GtkTargetEntry dnd_targets[] = + { + {"text/uri-list", 0, 1} + }; + static const GtkTargetEntry dnd_dest_targets[] = + { + {"XCHAT_CHANVIEW", GTK_TARGET_SAME_APP, 75 }, + {"XCHAT_USERLIST", GTK_TARGET_SAME_APP, 75 } + }; + + vbox = gtk_vbox_new (FALSE, 0); + gtk_container_add (GTK_CONTAINER (box), vbox); + + inbox = gtk_hbox_new (FALSE, SCROLLBAR_SPACING); + gtk_container_add (GTK_CONTAINER (vbox), inbox); + + frame = gtk_frame_new (NULL); + gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN); + gtk_container_add (GTK_CONTAINER (inbox), frame); + + gui->xtext = gtk_xtext_new (colors, TRUE); + xtext = GTK_XTEXT (gui->xtext); + gtk_xtext_set_max_indent (xtext, prefs.max_auto_indent); + gtk_xtext_set_thin_separator (xtext, prefs.thin_separator); + gtk_xtext_set_error_function (xtext, mg_xtext_error); + gtk_xtext_set_urlcheck_function (xtext, mg_word_check); + gtk_xtext_set_max_lines (xtext, prefs.max_lines); + gtk_container_add (GTK_CONTAINER (frame), GTK_WIDGET (xtext)); + mg_update_xtext (GTK_WIDGET (xtext)); + + g_signal_connect (G_OBJECT (xtext), "word_click", + G_CALLBACK (mg_word_clicked), NULL); + + gui->vscrollbar = gtk_vscrollbar_new (GTK_XTEXT (xtext)->adj); + gtk_box_pack_start (GTK_BOX (inbox), gui->vscrollbar, FALSE, TRUE, 0); +#ifndef WIN32 /* needs more work */ + gtk_drag_dest_set (gui->vscrollbar, 5, dnd_dest_targets, 2, + GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_LINK); + g_signal_connect (G_OBJECT (gui->vscrollbar), "drag_begin", + G_CALLBACK (mg_drag_begin_cb), NULL); + g_signal_connect (G_OBJECT (gui->vscrollbar), "drag_drop", + G_CALLBACK (mg_drag_drop_cb), NULL); + g_signal_connect (G_OBJECT (gui->vscrollbar), "drag_motion", + G_CALLBACK (mg_drag_motion_cb), gui->vscrollbar); + g_signal_connect (G_OBJECT (gui->vscrollbar), "drag_end", + G_CALLBACK (mg_drag_end_cb), NULL); + + gtk_drag_dest_set (gui->xtext, GTK_DEST_DEFAULT_ALL, dnd_targets, 1, + GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_LINK); + g_signal_connect (G_OBJECT (gui->xtext), "drag_data_received", + G_CALLBACK (mg_dialog_dnd_drop), NULL); +#endif +} + +static GtkWidget * +mg_create_infoframe (GtkWidget *box) +{ + GtkWidget *frame, *label, *hbox; + + frame = gtk_frame_new (0); + gtk_frame_set_shadow_type ((GtkFrame*)frame, GTK_SHADOW_OUT); + gtk_container_add (GTK_CONTAINER (box), frame); + + hbox = gtk_hbox_new (0, 0); + gtk_container_add (GTK_CONTAINER (frame), hbox); + + label = gtk_label_new (NULL); + gtk_container_add (GTK_CONTAINER (hbox), label); + + return label; +} + +static void +mg_create_meters (session_gui *gui, GtkWidget *parent_box) +{ + GtkWidget *infbox, *wid, *box; + + gui->meter_box = infbox = box = gtk_vbox_new (0, 1); + gtk_box_pack_start (GTK_BOX (parent_box), box, 0, 0, 0); + + if ((prefs.lagometer & 2) || (prefs.throttlemeter & 2)) + { + infbox = gtk_hbox_new (0, 0); + gtk_box_pack_start (GTK_BOX (box), infbox, 0, 0, 0); + } + + if (prefs.lagometer & 1) + { + gui->lagometer = wid = gtk_progress_bar_new (); + gtk_widget_set_size_request (wid, 1, 8); + + wid = gtk_event_box_new (); + gtk_container_add (GTK_CONTAINER (wid), gui->lagometer); + gtk_box_pack_start (GTK_BOX (box), wid, 0, 0, 0); + } + if (prefs.lagometer & 2) + { + gui->laginfo = wid = mg_create_infoframe (infbox); + gtk_label_set_text ((GtkLabel *) wid, "Lag"); + } + + if (prefs.throttlemeter & 1) + { + gui->throttlemeter = wid = gtk_progress_bar_new (); + gtk_widget_set_size_request (wid, 1, 8); + + wid = gtk_event_box_new (); + gtk_container_add (GTK_CONTAINER (wid), gui->throttlemeter); + gtk_box_pack_start (GTK_BOX (box), wid, 0, 0, 0); + } + if (prefs.throttlemeter & 2) + { + gui->throttleinfo = wid = mg_create_infoframe (infbox); + gtk_label_set_text ((GtkLabel *) wid, "Throttle"); + } +} + +void +mg_update_meters (session_gui *gui) +{ + gtk_widget_destroy (gui->meter_box); + gui->lagometer = NULL; + gui->laginfo = NULL; + gui->throttlemeter = NULL; + gui->throttleinfo = NULL; + + mg_create_meters (gui, gui->button_box_parent); + gtk_widget_show_all (gui->meter_box); +} + +static void +mg_create_userlist (session_gui *gui, GtkWidget *box) +{ + GtkWidget *frame, *ulist, *vbox; + + vbox = gtk_vbox_new (0, 1); + gtk_container_add (GTK_CONTAINER (box), vbox); + + frame = gtk_frame_new (NULL); + if (!(prefs.gui_tweaks & 1)) + gtk_box_pack_start (GTK_BOX (vbox), frame, 0, 0, GUI_SPACING); + + gui->namelistinfo = gtk_label_new (NULL); + gtk_container_add (GTK_CONTAINER (frame), gui->namelistinfo); + + gui->user_tree = ulist = userlist_create (vbox); + + if (prefs.style_namelistgad) + { + gtk_widget_set_style (ulist, input_style); + gtk_widget_modify_base (ulist, GTK_STATE_NORMAL, &colors[COL_BG]); + } + + mg_create_meters (gui, vbox); + + gui->button_box_parent = vbox; + gui->button_box = mg_create_userlistbuttons (vbox); +} + +static void +mg_leftpane_cb (GtkPaned *pane, GParamSpec *param, session_gui *gui) +{ + prefs.gui_pane_left_size = gtk_paned_get_position (pane); +} + +static void +mg_rightpane_cb (GtkPaned *pane, GParamSpec *param, session_gui *gui) +{ + int handle_size; + +/* if (pane->child1 == NULL || (!GTK_WIDGET_VISIBLE (pane->child1))) + return; + if (pane->child2 == NULL || (!GTK_WIDGET_VISIBLE (pane->child2))) + return;*/ + + gtk_widget_style_get (GTK_WIDGET (pane), "handle-size", &handle_size, NULL); + /* record the position from the RIGHT side */ + prefs.gui_pane_right_size = GTK_WIDGET (pane)->allocation.width - gtk_paned_get_position (pane) - handle_size; +} + +static gboolean +mg_add_pane_signals (session_gui *gui) +{ + g_signal_connect (G_OBJECT (gui->hpane_right), "notify::position", + G_CALLBACK (mg_rightpane_cb), gui); + g_signal_connect (G_OBJECT (gui->hpane_left), "notify::position", + G_CALLBACK (mg_leftpane_cb), gui); + return FALSE; +} + +static void +mg_create_center (session *sess, session_gui *gui, GtkWidget *box) +{ + GtkWidget *vbox, *hbox, *book; + + /* sep between top and bottom of left side */ + gui->vpane_left = gtk_vpaned_new (); + + /* sep between top and bottom of right side */ + gui->vpane_right = gtk_vpaned_new (); + + /* sep between left and xtext */ + gui->hpane_left = gtk_hpaned_new (); + gtk_paned_set_position (GTK_PANED (gui->hpane_left), prefs.gui_pane_left_size); + + /* sep between xtext and right side */ + gui->hpane_right = gtk_hpaned_new (); + + if (prefs.gui_tweaks & 4) + { + gtk_paned_pack2 (GTK_PANED (gui->hpane_left), gui->vpane_left, FALSE, TRUE); + gtk_paned_pack1 (GTK_PANED (gui->hpane_left), gui->hpane_right, TRUE, TRUE); + } + else + { + gtk_paned_pack1 (GTK_PANED (gui->hpane_left), gui->vpane_left, FALSE, TRUE); + gtk_paned_pack2 (GTK_PANED (gui->hpane_left), gui->hpane_right, TRUE, TRUE); + } + gtk_paned_pack2 (GTK_PANED (gui->hpane_right), gui->vpane_right, FALSE, TRUE); + + gtk_container_add (GTK_CONTAINER (box), gui->hpane_left); + + gui->note_book = book = gtk_notebook_new (); + gtk_notebook_set_show_tabs (GTK_NOTEBOOK (book), FALSE); + gtk_notebook_set_show_border (GTK_NOTEBOOK (book), FALSE); + gtk_paned_pack1 (GTK_PANED (gui->hpane_right), book, TRUE, TRUE); + + hbox = gtk_hbox_new (FALSE, 0); + gtk_paned_pack1 (GTK_PANED (gui->vpane_right), hbox, FALSE, TRUE); + mg_create_userlist (gui, hbox); + + gui->user_box = hbox; + + vbox = gtk_vbox_new (FALSE, 3); + gtk_notebook_append_page (GTK_NOTEBOOK (book), vbox, NULL); + mg_create_topicbar (sess, vbox); + mg_create_textarea (sess, vbox); + mg_create_entry (sess, vbox); + + g_idle_add ((GSourceFunc)mg_add_pane_signals, gui); +} + +static void +mg_change_nick (int cancel, char *text, gpointer userdata) +{ + char buf[256]; + + if (!cancel) + { + snprintf (buf, sizeof (buf), "nick %s", text); + handle_command (current_sess, buf, FALSE); + } +} + +static void +mg_nickclick_cb (GtkWidget *button, gpointer userdata) +{ + fe_get_str (_("Enter new nickname:"), current_sess->server->nick, + mg_change_nick, NULL); +} + +/* make sure chanview and userlist positions are sane */ + +static void +mg_sanitize_positions (int *cv, int *ul) +{ + if (prefs.tab_layout == 2) + { + /* treeview can't be on TOP or BOTTOM */ + if (*cv == POS_TOP || *cv == POS_BOTTOM) + *cv = POS_TOPLEFT; + } + + /* userlist can't be on TOP or BOTTOM */ + if (*ul == POS_TOP || *ul == POS_BOTTOM) + *ul = POS_TOPRIGHT; + + /* can't have both in the same place */ + if (*cv == *ul) + { + *cv = POS_TOPRIGHT; + if (*ul == POS_TOPRIGHT) + *cv = POS_BOTTOMRIGHT; + } +} + +static void +mg_place_userlist_and_chanview_real (session_gui *gui, GtkWidget *userlist, GtkWidget *chanview) +{ + int unref_userlist = FALSE; + int unref_chanview = FALSE; + + /* first, remove userlist/treeview from their containers */ + if (userlist && userlist->parent) + { + g_object_ref (userlist); + gtk_container_remove (GTK_CONTAINER (userlist->parent), userlist); + unref_userlist = TRUE; + } + + if (chanview && chanview->parent) + { + g_object_ref (chanview); + gtk_container_remove (GTK_CONTAINER (chanview->parent), chanview); + unref_chanview = TRUE; + } + + if (chanview) + { + /* incase the previous pos was POS_HIDDEN */ + gtk_widget_show (chanview); + + gtk_table_set_row_spacing (GTK_TABLE (gui->main_table), 1, 0); + gtk_table_set_row_spacing (GTK_TABLE (gui->main_table), 2, 2); + + /* then place them back in their new positions */ + switch (prefs.tab_pos) + { + case POS_TOPLEFT: + gtk_paned_pack1 (GTK_PANED (gui->vpane_left), chanview, FALSE, TRUE); + break; + case POS_BOTTOMLEFT: + gtk_paned_pack2 (GTK_PANED (gui->vpane_left), chanview, FALSE, TRUE); + break; + case POS_TOPRIGHT: + gtk_paned_pack1 (GTK_PANED (gui->vpane_right), chanview, FALSE, TRUE); + break; + case POS_BOTTOMRIGHT: + gtk_paned_pack2 (GTK_PANED (gui->vpane_right), chanview, FALSE, TRUE); + break; + case POS_TOP: + gtk_table_set_row_spacing (GTK_TABLE (gui->main_table), 1, GUI_SPACING-1); + gtk_table_attach (GTK_TABLE (gui->main_table), chanview, + 1, 2, 1, 2, GTK_FILL, GTK_FILL, 0, 0); + break; + case POS_HIDDEN: + gtk_widget_hide (chanview); + /* always attach it to something to avoid ref_count=0 */ + if (prefs.gui_ulist_pos == POS_TOP) + gtk_table_attach (GTK_TABLE (gui->main_table), chanview, + 1, 2, 3, 4, GTK_FILL, GTK_FILL, 0, 0); + + else + gtk_table_attach (GTK_TABLE (gui->main_table), chanview, + 1, 2, 1, 2, GTK_FILL, GTK_FILL, 0, 0); + break; + default:/* POS_BOTTOM */ + gtk_table_set_row_spacing (GTK_TABLE (gui->main_table), 2, 3); + gtk_table_attach (GTK_TABLE (gui->main_table), chanview, + 1, 2, 3, 4, GTK_FILL, GTK_FILL, 0, 0); + } + } + + if (userlist) + { + switch (prefs.gui_ulist_pos) + { + case POS_TOPLEFT: + gtk_paned_pack1 (GTK_PANED (gui->vpane_left), userlist, FALSE, TRUE); + break; + case POS_BOTTOMLEFT: + gtk_paned_pack2 (GTK_PANED (gui->vpane_left), userlist, FALSE, TRUE); + break; + case POS_BOTTOMRIGHT: + gtk_paned_pack2 (GTK_PANED (gui->vpane_right), userlist, FALSE, TRUE); + break; + /*case POS_HIDDEN: + break;*/ /* Hide using the VIEW menu instead */ + default:/* POS_TOPRIGHT */ + gtk_paned_pack1 (GTK_PANED (gui->vpane_right), userlist, FALSE, TRUE); + } + } + + if (unref_chanview) + g_object_unref (chanview); + if (unref_userlist) + g_object_unref (userlist); + + mg_hide_empty_boxes (gui); +} + +static void +mg_place_userlist_and_chanview (session_gui *gui) +{ + GtkOrientation orientation; + GtkWidget *chanviewbox = NULL; + int pos; + + mg_sanitize_positions (&prefs.tab_pos, &prefs.gui_ulist_pos); + + if (gui->chanview) + { + pos = prefs.tab_pos; + + orientation = chanview_get_orientation (gui->chanview); + if ((pos == POS_BOTTOM || pos == POS_TOP) && orientation == GTK_ORIENTATION_VERTICAL) + chanview_set_orientation (gui->chanview, FALSE); + else if ((pos == POS_TOPLEFT || pos == POS_BOTTOMLEFT || pos == POS_TOPRIGHT || pos == POS_BOTTOMRIGHT) && orientation == GTK_ORIENTATION_HORIZONTAL) + chanview_set_orientation (gui->chanview, TRUE); + chanviewbox = chanview_get_box (gui->chanview); + } + + mg_place_userlist_and_chanview_real (gui, gui->user_box, chanviewbox); +} + +void +mg_change_layout (int type) +{ + if (mg_gui) + { + /* put tabs at the bottom */ + if (type == 0 && prefs.tab_pos != POS_BOTTOM && prefs.tab_pos != POS_TOP) + prefs.tab_pos = POS_BOTTOM; + + mg_place_userlist_and_chanview (mg_gui); + chanview_set_impl (mg_gui->chanview, type); + } +} + +static void +mg_inputbox_rightclick (GtkEntry *entry, GtkWidget *menu) +{ + mg_create_color_menu (menu, NULL); +} + +static void +mg_create_entry (session *sess, GtkWidget *box) +{ + GtkWidget *sw, *hbox, *but, *entry; + session_gui *gui = sess->gui; + + hbox = gtk_hbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (box), hbox, 0, 0, 0); + + gui->nick_box = gtk_hbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (hbox), gui->nick_box, 0, 0, 0); + + gui->nick_label = but = gtk_button_new_with_label (sess->server->nick); + gtk_button_set_relief (GTK_BUTTON (but), GTK_RELIEF_NONE); + GTK_WIDGET_UNSET_FLAGS (but, GTK_CAN_FOCUS); + gtk_box_pack_end (GTK_BOX (gui->nick_box), but, 0, 0, 0); + g_signal_connect (G_OBJECT (but), "clicked", + G_CALLBACK (mg_nickclick_cb), NULL); + +#ifdef USE_GTKSPELL + gui->input_box = entry = gtk_text_view_new (); + gtk_widget_set_size_request (entry, 0, 1); + gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (entry), GTK_WRAP_NONE); + gtk_text_view_set_accepts_tab (GTK_TEXT_VIEW (entry), FALSE); + if (prefs.gui_input_spell) + gtkspell_new_attach (GTK_TEXT_VIEW (entry), NULL, NULL); + + sw = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw), + GTK_SHADOW_IN); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), + GTK_POLICY_NEVER, + GTK_POLICY_NEVER); + gtk_container_add (GTK_CONTAINER (sw), entry); + gtk_container_add (GTK_CONTAINER (hbox), sw); +#else +#ifdef USE_LIBSEXY + gui->input_box = entry = sexy_spell_entry_new (); + sexy_spell_entry_set_checked ((SexySpellEntry *)entry, prefs.gui_input_spell); +#else + gui->input_box = entry = gtk_entry_new (); +#endif + gtk_entry_set_max_length (GTK_ENTRY (gui->input_box), 2048); + g_signal_connect (G_OBJECT (entry), "activate", + G_CALLBACK (mg_inputbox_cb), gui); + gtk_container_add (GTK_CONTAINER (hbox), entry); +#endif + + gtk_widget_set_name (entry, "xchat-inputbox"); + g_signal_connect (G_OBJECT (entry), "key_press_event", + G_CALLBACK (key_handle_key_press), NULL); + g_signal_connect (G_OBJECT (entry), "focus_in_event", + G_CALLBACK (mg_inputbox_focus), gui); + g_signal_connect (G_OBJECT (entry), "populate_popup", + G_CALLBACK (mg_inputbox_rightclick), NULL); + gtk_widget_grab_focus (entry); + + if (prefs.style_inputbox) + mg_apply_entry_style (entry); +} + +static void +mg_switch_tab_cb (chanview *cv, chan *ch, int tag, gpointer ud) +{ + chan *old; + session *sess = ud; + + old = active_tab; + active_tab = ch; + + if (tag == TAG_IRC) + { + if (active_tab != old) + { + if (old && current_tab) + mg_unpopulate (current_tab); + mg_populate (sess); + } + } else if (old != active_tab) + { + /* userdata for non-irc tabs is actually the GtkBox */ + mg_show_generic_tab (ud); + if (!mg_is_userlist_and_tree_combined ()) + mg_userlist_showhide (current_sess, FALSE); /* hide */ + } +} + +/* compare two tabs (for tab sorting function) */ + +static int +mg_tabs_compare (session *a, session *b) +{ + /* server tabs always go first */ + if (a->type == SESS_SERVER) + return -1; + + /* then channels */ + if (a->type == SESS_CHANNEL && b->type != SESS_CHANNEL) + return -1; + if (a->type != SESS_CHANNEL && b->type == SESS_CHANNEL) + return 1; + + return strcasecmp (a->channel, b->channel); +} + +static void +mg_create_tabs (session_gui *gui) +{ + gboolean use_icons = FALSE; + + /* if any one of these PNGs exist, the chanview will create + * the extra column for icons. */ + if (pix_channel || pix_dialog || pix_server || pix_util) + use_icons = TRUE; + + gui->chanview = chanview_new (prefs.tab_layout, prefs.truncchans, + prefs.tab_sort, use_icons, + prefs.style_namelistgad ? input_style : NULL); + chanview_set_callbacks (gui->chanview, mg_switch_tab_cb, mg_xbutton_cb, + mg_tab_contextmenu_cb, (void *)mg_tabs_compare); + mg_place_userlist_and_chanview (gui); +} + +static gboolean +mg_tabwin_focus_cb (GtkWindow * win, GdkEventFocus *event, gpointer userdata) +{ + current_sess = current_tab; + if (current_sess) + { + gtk_xtext_check_marker_visibility (GTK_XTEXT (current_sess->gui->xtext)); + plugin_emit_dummy_print (current_sess, "Focus Window"); + } +#ifndef WIN32 +#ifdef USE_XLIB + unflash_window (GTK_WIDGET (win)); +#endif +#endif + return FALSE; +} + +static gboolean +mg_topwin_focus_cb (GtkWindow * win, GdkEventFocus *event, session *sess) +{ + current_sess = sess; + if (!sess->server->server_session) + sess->server->server_session = sess; + gtk_xtext_check_marker_visibility(GTK_XTEXT (current_sess->gui->xtext)); +#ifndef WIN32 +#ifdef USE_XLIB + unflash_window (GTK_WIDGET (win)); +#endif +#endif + plugin_emit_dummy_print (sess, "Focus Window"); + return FALSE; +} + +static void +mg_create_menu (session_gui *gui, GtkWidget *table, int away_state) +{ + GtkAccelGroup *accel_group; + + accel_group = gtk_accel_group_new (); + gtk_window_add_accel_group (GTK_WINDOW (gtk_widget_get_toplevel (table)), + accel_group); + g_object_unref (accel_group); + + gui->menu = menu_create_main (accel_group, TRUE, away_state, !gui->is_tab, + gui->menu_item); + gtk_table_attach (GTK_TABLE (table), gui->menu, 0, 3, 0, 1, + GTK_EXPAND | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); +} + +static void +mg_create_irctab (session *sess, GtkWidget *table) +{ + GtkWidget *vbox; + session_gui *gui = sess->gui; + + vbox = gtk_vbox_new (FALSE, 0); + gtk_table_attach (GTK_TABLE (table), vbox, 1, 2, 2, 3, + GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + mg_create_center (sess, gui, vbox); +} + +static void +mg_create_topwindow (session *sess) +{ + GtkWidget *win; + GtkWidget *table; + + if (sess->type == SESS_DIALOG) + win = gtkutil_window_new ("XChat", NULL, + prefs.dialog_width, prefs.dialog_height, 0); + else + win = gtkutil_window_new ("XChat", NULL, + prefs.mainwindow_width, + prefs.mainwindow_height, 0); + sess->gui->window = win; + gtk_container_set_border_width (GTK_CONTAINER (win), GUI_BORDER); + + g_signal_connect (G_OBJECT (win), "focus_in_event", + G_CALLBACK (mg_topwin_focus_cb), sess); + g_signal_connect (G_OBJECT (win), "destroy", + G_CALLBACK (mg_topdestroy_cb), sess); + g_signal_connect (G_OBJECT (win), "configure_event", + G_CALLBACK (mg_configure_cb), sess); + + palette_alloc (win); + + table = gtk_table_new (4, 3, FALSE); + /* spacing under the menubar */ + gtk_table_set_row_spacing (GTK_TABLE (table), 0, GUI_SPACING); + /* left and right borders */ + gtk_table_set_col_spacing (GTK_TABLE (table), 0, 1); + gtk_table_set_col_spacing (GTK_TABLE (table), 1, 1); + gtk_container_add (GTK_CONTAINER (win), table); + + mg_create_irctab (sess, table); + mg_create_menu (sess->gui, table, sess->server->is_away); + + if (sess->res->buffer == NULL) + { + sess->res->buffer = gtk_xtext_buffer_new (GTK_XTEXT (sess->gui->xtext)); + gtk_xtext_buffer_show (GTK_XTEXT (sess->gui->xtext), sess->res->buffer, TRUE); + gtk_xtext_set_time_stamp (sess->res->buffer, prefs.timestamp); + sess->res->user_model = userlist_create_model (); + } + + userlist_show (sess); + + gtk_widget_show_all (table); + + if (prefs.hidemenu) + gtk_widget_hide (sess->gui->menu); + + if (!prefs.topicbar) + gtk_widget_hide (sess->gui->topic_bar); + + if (!prefs.userlistbuttons) + gtk_widget_hide (sess->gui->button_box); + + if (prefs.gui_tweaks & 2) + gtk_widget_hide (sess->gui->nick_box); + + mg_decide_userlist (sess, FALSE); + + if (sess->type == SESS_DIALOG) + { + /* hide the chan-mode buttons */ + gtk_widget_hide (sess->gui->topicbutton_box); + } else + { + gtk_widget_hide (sess->gui->dialogbutton_box); + + if (!prefs.chanmodebuttons) + gtk_widget_hide (sess->gui->topicbutton_box); + } + + mg_place_userlist_and_chanview (sess->gui); + + gtk_widget_show (win); +} + +static gboolean +mg_tabwindow_de_cb (GtkWidget *widget, GdkEvent *event, gpointer user_data) +{ + GSList *list; + session *sess; + + if ((prefs.gui_tray_flags & 1) && tray_toggle_visibility (FALSE)) + return TRUE; + + /* check for remaining toplevel windows */ + list = sess_list; + while (list) + { + sess = list->data; + if (!sess->gui->is_tab) + return FALSE; + list = list->next; + } + + mg_open_quit_dialog (TRUE); + return TRUE; +} + +static void +mg_create_tabwindow (session *sess) +{ + GtkWidget *win; + GtkWidget *table; + + win = gtkutil_window_new ("XChat", NULL, prefs.mainwindow_width, + prefs.mainwindow_height, 0); + sess->gui->window = win; + gtk_window_move (GTK_WINDOW (win), prefs.mainwindow_left, + prefs.mainwindow_top); + if (prefs.gui_win_state) + gtk_window_maximize (GTK_WINDOW (win)); + gtk_container_set_border_width (GTK_CONTAINER (win), GUI_BORDER); + + g_signal_connect (G_OBJECT (win), "delete_event", + G_CALLBACK (mg_tabwindow_de_cb), 0); + g_signal_connect (G_OBJECT (win), "destroy", + G_CALLBACK (mg_tabwindow_kill_cb), 0); + g_signal_connect (G_OBJECT (win), "focus_in_event", + G_CALLBACK (mg_tabwin_focus_cb), NULL); + g_signal_connect (G_OBJECT (win), "configure_event", + G_CALLBACK (mg_configure_cb), NULL); + g_signal_connect (G_OBJECT (win), "window_state_event", + G_CALLBACK (mg_windowstate_cb), NULL); + + palette_alloc (win); + + sess->gui->main_table = table = gtk_table_new (4, 3, FALSE); + /* spacing under the menubar */ + gtk_table_set_row_spacing (GTK_TABLE (table), 0, GUI_SPACING); + /* left and right borders */ + gtk_table_set_col_spacing (GTK_TABLE (table), 0, 1); + gtk_table_set_col_spacing (GTK_TABLE (table), 1, 1); + gtk_container_add (GTK_CONTAINER (win), table); + + mg_create_irctab (sess, table); + mg_create_tabs (sess->gui); + mg_create_menu (sess->gui, table, sess->server->is_away); + + mg_focus (sess); + + gtk_widget_show_all (table); + + if (prefs.hidemenu) + gtk_widget_hide (sess->gui->menu); + + mg_decide_userlist (sess, FALSE); + + if (!prefs.topicbar) + gtk_widget_hide (sess->gui->topic_bar); + + if (!prefs.chanmodebuttons) + gtk_widget_hide (sess->gui->topicbutton_box); + + if (!prefs.userlistbuttons) + gtk_widget_hide (sess->gui->button_box); + + if (prefs.gui_tweaks & 2) + gtk_widget_hide (sess->gui->nick_box); + + mg_place_userlist_and_chanview (sess->gui); + + gtk_widget_show (win); +} + +void +mg_apply_setup (void) +{ + GSList *list = sess_list; + session *sess; + int done_main = FALSE; + + mg_create_tab_colors (); + + while (list) + { + sess = list->data; + gtk_xtext_set_time_stamp (sess->res->buffer, prefs.timestamp); + ((xtext_buffer *)sess->res->buffer)->needs_recalc = TRUE; + if (!sess->gui->is_tab || !done_main) + mg_place_userlist_and_chanview (sess->gui); + if (sess->gui->is_tab) + done_main = TRUE; + list = list->next; + } +} + +static chan * +mg_add_generic_tab (char *name, char *title, void *family, GtkWidget *box) +{ + chan *ch; + + gtk_notebook_append_page (GTK_NOTEBOOK (mg_gui->note_book), box, NULL); + gtk_widget_show (box); + + ch = chanview_add (mg_gui->chanview, name, NULL, box, TRUE, TAG_UTIL, pix_util); + chan_set_color (ch, plain_list); + /* FIXME: memory leak */ + g_object_set_data (G_OBJECT (box), "title", strdup (title)); + g_object_set_data (G_OBJECT (box), "ch", ch); + + if (prefs.newtabstofront) + chan_focus (ch); + + return ch; +} + +void +fe_buttons_update (session *sess) +{ + session_gui *gui = sess->gui; + + gtk_widget_destroy (gui->button_box); + gui->button_box = mg_create_userlistbuttons (gui->button_box_parent); + + if (prefs.userlistbuttons) + gtk_widget_show (sess->gui->button_box); + else + gtk_widget_hide (sess->gui->button_box); +} + +void +fe_clear_channel (session *sess) +{ + char tbuf[CHANLEN+6]; + session_gui *gui = sess->gui; + + if (sess->gui->is_tab) + { + if (sess->waitchannel[0]) + { + if (prefs.truncchans > 2 && g_utf8_strlen (sess->waitchannel, -1) > prefs.truncchans) + { + /* truncate long channel names */ + tbuf[0] = '('; + strcpy (tbuf + 1, sess->waitchannel); + g_utf8_offset_to_pointer(tbuf, prefs.truncchans)[0] = 0; + strcat (tbuf, "..)"); + } else + { + sprintf (tbuf, "(%s)", sess->waitchannel); + } + } + else + strcpy (tbuf, _("<none>")); + chan_rename (sess->res->tab, tbuf, prefs.truncchans); + } + + if (!sess->gui->is_tab || sess == current_tab) + { + gtk_entry_set_text (GTK_ENTRY (gui->topic_entry), ""); + + if (gui->op_xpm) + { + gtk_widget_destroy (gui->op_xpm); + gui->op_xpm = 0; + } + } else + { + if (sess->res->topic_text) + { + free (sess->res->topic_text); + sess->res->topic_text = NULL; + } + } +} + +void +fe_set_nonchannel (session *sess, int state) +{ +} + +void +fe_dlgbuttons_update (session *sess) +{ + GtkWidget *box; + session_gui *gui = sess->gui; + + gtk_widget_destroy (gui->dialogbutton_box); + + gui->dialogbutton_box = box = gtk_hbox_new (0, 0); + gtk_box_pack_start (GTK_BOX (gui->topic_bar), box, 0, 0, 0); + gtk_box_reorder_child (GTK_BOX (gui->topic_bar), box, 3); + mg_create_dialogbuttons (box); + + gtk_widget_show_all (box); + + if (current_tab && current_tab->type != SESS_DIALOG) + gtk_widget_hide (current_tab->gui->dialogbutton_box); +} + +void +fe_update_mode_buttons (session *sess, char mode, char sign) +{ + int state, i; + + if (sign == '+') + state = TRUE; + else + state = FALSE; + + for (i = 0; i < NUM_FLAG_WIDS - 1; i++) + { + if (chan_flags[i] == mode) + { + if (!sess->gui->is_tab || sess == current_tab) + { + ignore_chanmode = TRUE; + if (GTK_TOGGLE_BUTTON (sess->gui->flag_wid[i])->active != state) + gtk_toggle_button_set_active ( + GTK_TOGGLE_BUTTON (sess->gui->flag_wid[i]), state); + ignore_chanmode = FALSE; + } else + { + sess->res->flag_wid_state[i] = state; + } + return; + } + } +} + +void +fe_set_nick (server *serv, char *newnick) +{ + GSList *list = sess_list; + session *sess; + + while (list) + { + sess = list->data; + if (sess->server == serv) + { + if (current_tab == sess || !sess->gui->is_tab) + gtk_button_set_label (GTK_BUTTON (sess->gui->nick_label), newnick); + } + list = list->next; + } +} + +void +fe_set_away (server *serv) +{ + GSList *list = sess_list; + session *sess; + + while (list) + { + sess = list->data; + if (sess->server == serv) + { + if (!sess->gui->is_tab || sess == current_tab) + { + GTK_CHECK_MENU_ITEM (sess->gui->menu_item[MENU_ID_AWAY])->active = serv->is_away; + /* gray out my nickname */ + mg_set_myself_away (sess->gui, serv->is_away); + } + } + list = list->next; + } +} + +void +fe_set_channel (session *sess) +{ + if (sess->res->tab != NULL) + chan_rename (sess->res->tab, sess->channel, prefs.truncchans); +} + +void +mg_changui_new (session *sess, restore_gui *res, int tab, int focus) +{ + int first_run = FALSE; + session_gui *gui; + struct User *user = NULL; + + if (!res) + { + res = malloc (sizeof (restore_gui)); + memset (res, 0, sizeof (restore_gui)); + } + + sess->res = res; + + if (!sess->server->front_session) + sess->server->front_session = sess; + + if (!is_channel (sess->server, sess->channel)) + user = userlist_find_global (sess->server, sess->channel); + + if (!tab) + { + gui = malloc (sizeof (session_gui)); + memset (gui, 0, sizeof (session_gui)); + gui->is_tab = FALSE; + sess->gui = gui; + mg_create_topwindow (sess); + fe_set_title (sess); + if (user && user->hostname) + set_topic (sess, user->hostname, user->hostname); + return; + } + + if (mg_gui == NULL) + { + first_run = TRUE; + gui = &static_mg_gui; + memset (gui, 0, sizeof (session_gui)); + gui->is_tab = TRUE; + sess->gui = gui; + mg_create_tabwindow (sess); + mg_gui = gui; + parent_window = gui->window; + } else + { + sess->gui = gui = mg_gui; + gui->is_tab = TRUE; + } + + if (user && user->hostname) + set_topic (sess, user->hostname, user->hostname); + + mg_add_chan (sess); + + if (first_run || (prefs.newtabstofront == FOCUS_NEW_ONLY_ASKED && focus) + || prefs.newtabstofront == FOCUS_NEW_ALL ) + chan_focus (res->tab); +} + +GtkWidget * +mg_create_generic_tab (char *name, char *title, int force_toplevel, + int link_buttons, + void *close_callback, void *userdata, + int width, int height, GtkWidget **vbox_ret, + void *family) +{ + GtkWidget *vbox, *win; + + if (prefs.tab_pos == POS_HIDDEN && prefs.windows_as_tabs) + prefs.windows_as_tabs = 0; + + if (force_toplevel || !prefs.windows_as_tabs) + { + win = gtkutil_window_new (title, name, width, height, 3); + vbox = gtk_vbox_new (0, 0); + *vbox_ret = vbox; + gtk_container_add (GTK_CONTAINER (win), vbox); + gtk_widget_show (vbox); + if (close_callback) + g_signal_connect (G_OBJECT (win), "destroy", + G_CALLBACK (close_callback), userdata); + return win; + } + + vbox = gtk_vbox_new (0, 2); + g_object_set_data (G_OBJECT (vbox), "w", GINT_TO_POINTER (width)); + g_object_set_data (G_OBJECT (vbox), "h", GINT_TO_POINTER (height)); + gtk_container_set_border_width (GTK_CONTAINER (vbox), 3); + *vbox_ret = vbox; + + if (close_callback) + g_signal_connect (G_OBJECT (vbox), "destroy", + G_CALLBACK (close_callback), userdata); + + mg_add_generic_tab (name, title, family, vbox); + +/* if (link_buttons) + { + hbox = gtk_hbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (vbox), hbox, 0, 0, 0); + mg_create_link_buttons (hbox, ch); + gtk_widget_show (hbox); + }*/ + + return vbox; +} + +void +mg_move_tab (session *sess, int delta) +{ + if (sess->gui->is_tab) + chan_move (sess->res->tab, delta); +} + +void +mg_move_tab_family (session *sess, int delta) +{ + if (sess->gui->is_tab) + chan_move_family (sess->res->tab, delta); +} + +void +mg_set_title (GtkWidget *vbox, char *title) /* for non-irc tab/window only */ +{ + char *old; + + old = g_object_get_data (G_OBJECT (vbox), "title"); + if (old) + { + g_object_set_data (G_OBJECT (vbox), "title", strdup (title)); + free (old); + } else + { + gtk_window_set_title (GTK_WINDOW (vbox), title); + } +} + +void +fe_server_callback (server *serv) +{ + joind_close (serv); + + if (serv->gui->chanlist_window) + mg_close_gen (NULL, serv->gui->chanlist_window); + + if (serv->gui->rawlog_window) + mg_close_gen (NULL, serv->gui->rawlog_window); + + free (serv->gui); +} + +/* called when a session is being killed */ + +void +fe_session_callback (session *sess) +{ + if (sess->res->banlist_window) + mg_close_gen (NULL, sess->res->banlist_window); + + if (sess->res->input_text) + free (sess->res->input_text); + + if (sess->res->topic_text) + free (sess->res->topic_text); + + if (sess->res->limit_text) + free (sess->res->limit_text); + + if (sess->res->key_text) + free (sess->res->key_text); + + if (sess->res->queue_text) + free (sess->res->queue_text); + if (sess->res->queue_tip) + free (sess->res->queue_tip); + + if (sess->res->lag_text) + free (sess->res->lag_text); + if (sess->res->lag_tip) + free (sess->res->lag_tip); + + if (sess->gui->bartag) + fe_timeout_remove (sess->gui->bartag); + + if (sess->gui != &static_mg_gui) + free (sess->gui); + free (sess->res); +} + +/* ===== DRAG AND DROP STUFF ===== */ + +static gboolean +is_child_of (GtkWidget *widget, GtkWidget *parent) +{ + while (widget) + { + if (widget->parent == parent) + return TRUE; + widget = widget->parent; + } + return FALSE; +} + +static void +mg_handle_drop (GtkWidget *widget, int y, int *pos, int *other_pos) +{ + int height; + session_gui *gui = current_sess->gui; + + gdk_drawable_get_size (widget->window, NULL, &height); + + if (y < height / 2) + { + if (is_child_of (widget, gui->vpane_left)) + *pos = 1; /* top left */ + else + *pos = 3; /* top right */ + } + else + { + if (is_child_of (widget, gui->vpane_left)) + *pos = 2; /* bottom left */ + else + *pos = 4; /* bottom right */ + } + + /* both in the same pos? must move one */ + if (*pos == *other_pos) + { + switch (*other_pos) + { + case 1: + *other_pos = 2; + break; + case 2: + *other_pos = 1; + break; + case 3: + *other_pos = 4; + break; + case 4: + *other_pos = 3; + break; + } + } + + mg_place_userlist_and_chanview (gui); +} + +static gboolean +mg_is_gui_target (GdkDragContext *context) +{ + char *target_name; + + if (!context || !context->targets || !context->targets->data) + return FALSE; + + target_name = gdk_atom_name (context->targets->data); + if (target_name) + { + /* if it's not XCHAT_CHANVIEW or XCHAT_USERLIST */ + /* we should ignore it. */ + if (target_name[0] != 'X') + { + g_free (target_name); + return FALSE; + } + g_free (target_name); + } + + return TRUE; +} + +/* this begin callback just creates an nice of the source */ + +gboolean +mg_drag_begin_cb (GtkWidget *widget, GdkDragContext *context, gpointer userdata) +{ +#ifndef WIN32 /* leaks GDI pool memory - don't use on win32 */ + int width, height; + GdkColormap *cmap; + GdkPixbuf *pix, *pix2; + + /* ignore file drops */ + if (!mg_is_gui_target (context)) + return FALSE; + + cmap = gtk_widget_get_colormap (widget); + gdk_drawable_get_size (widget->window, &width, &height); + + pix = gdk_pixbuf_get_from_drawable (NULL, widget->window, cmap, 0, 0, 0, 0, width, height); + pix2 = gdk_pixbuf_scale_simple (pix, width * 4 / 5, height / 2, GDK_INTERP_HYPER); + g_object_unref (pix); + + gtk_drag_set_icon_pixbuf (context, pix2, 0, 0); + g_object_set_data (G_OBJECT (widget), "ico", pix2); +#endif + + return TRUE; +} + +void +mg_drag_end_cb (GtkWidget *widget, GdkDragContext *context, gpointer userdata) +{ + /* ignore file drops */ + if (!mg_is_gui_target (context)) + return; + +#ifndef WIN32 + g_object_unref (g_object_get_data (G_OBJECT (widget), "ico")); +#endif +} + +/* drop complete */ + +gboolean +mg_drag_drop_cb (GtkWidget *widget, GdkDragContext *context, int x, int y, guint time, gpointer user_data) +{ + /* ignore file drops */ + if (!mg_is_gui_target (context)) + return FALSE; + + switch (context->action) + { + case GDK_ACTION_MOVE: + /* from userlist */ + mg_handle_drop (widget, y, &prefs.gui_ulist_pos, &prefs.tab_pos); + break; + case GDK_ACTION_COPY: + /* from tree - we use GDK_ACTION_COPY for the tree */ + mg_handle_drop (widget, y, &prefs.tab_pos, &prefs.gui_ulist_pos); + break; + default: + return FALSE; + } + + return TRUE; +} + +/* draw highlight rectangle in the destination */ + +gboolean +mg_drag_motion_cb (GtkWidget *widget, GdkDragContext *context, int x, int y, guint time, gpointer scbar) +{ + GdkGC *gc; + GdkColor col; + GdkGCValues val; + int half, width, height; + int ox, oy; + GtkPaned *paned; + GdkDrawable *draw; + + /* ignore file drops */ + if (!mg_is_gui_target (context)) + return FALSE; + + if (scbar) /* scrollbar */ + { + ox = widget->allocation.x; + oy = widget->allocation.y; + width = widget->allocation.width; + height = widget->allocation.height; + draw = widget->window; + } + else + { + ox = oy = 0; + gdk_drawable_get_size (widget->window, &width, &height); + draw = widget->window; + } + + val.subwindow_mode = GDK_INCLUDE_INFERIORS; + val.graphics_exposures = 0; + val.function = GDK_XOR; + + gc = gdk_gc_new_with_values (widget->window, &val, GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW | GDK_GC_FUNCTION); + col.red = rand() % 0xffff; + col.green = rand() % 0xffff; + col.blue = rand() % 0xffff; + gdk_colormap_alloc_color (gtk_widget_get_colormap (widget), &col, FALSE, TRUE); + gdk_gc_set_foreground (gc, &col); + + half = height / 2; + +#if 0 + /* are both tree/userlist on the same side? */ + paned = (GtkPaned *)widget->parent->parent; + if (paned->child1 != NULL && paned->child2 != NULL) + { + gdk_draw_rectangle (draw, gc, 0, 1, 2, width - 3, height - 4); + gdk_draw_rectangle (draw, gc, 0, 0, 1, width - 1, height - 2); + g_object_unref (gc); + return TRUE; + } +#endif + + if (y < half) + { + gdk_draw_rectangle (draw, gc, FALSE, 1 + ox, 2 + oy, width - 3, half - 4); + gdk_draw_rectangle (draw, gc, FALSE, 0 + ox, 1 + oy, width - 1, half - 2); + gtk_widget_queue_draw_area (widget, ox, half + oy, width, height - half); + } + else + { + gdk_draw_rectangle (draw, gc, FALSE, 0 + ox, half + 1 + oy, width - 1, half - 2); + gdk_draw_rectangle (draw, gc, FALSE, 1 + ox, half + 2 + oy, width - 3, half - 4); + gtk_widget_queue_draw_area (widget, ox, oy, width, half); + } + + g_object_unref (gc); + + return TRUE; +} diff --git a/xchat-2.8.8/src/fe-gtk/maingui.h b/xchat-2.8.8/src/fe-gtk/maingui.h new file mode 100644 index 0000000..bc9aaef --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/maingui.h @@ -0,0 +1,33 @@ +extern GtkStyle *input_style; +extern GtkWidget *parent_window; + +void mg_changui_new (session *sess, restore_gui *res, int tab, int focus); +void mg_update_xtext (GtkWidget *wid); +void mg_open_quit_dialog (gboolean minimize_button); +void mg_switch_page (int relative, int num); +void mg_move_tab (session *, int delta); +void mg_move_tab_family (session *, int delta); +void mg_bring_tofront (GtkWidget *vbox); +void mg_bring_tofront_sess (session *sess); +void mg_decide_userlist (session *sess, gboolean switch_to_current); +void mg_set_topic_tip (session *sess); +GtkWidget *mg_create_generic_tab (char *name, char *title, int force_toplevel, int link_buttons, void *close_callback, void *userdata, int width, int height, GtkWidget **vbox_ret, void *family); +void mg_set_title (GtkWidget *button, char *title); +void mg_set_access_icon (session_gui *gui, GdkPixbuf *pix, gboolean away); +void mg_apply_setup (void); +void mg_close_sess (session *); +void mg_tab_close (session *sess); +void mg_detach (session *sess, int mode); +void mg_progressbar_create (session_gui *gui); +void mg_progressbar_destroy (session_gui *gui); +void mg_dnd_drop_file (session *sess, char *target, char *uri); +void mg_change_layout (int type); +void mg_update_meters (session_gui *); +void mg_inputbox_cb (GtkWidget *igad, session_gui *gui); +void mg_create_icon_item (char *label, char *stock, GtkWidget *menu, void *callback, void *userdata); +GtkWidget *mg_submenu (GtkWidget *menu, char *text); +/* DND */ +gboolean mg_drag_begin_cb (GtkWidget *widget, GdkDragContext *context, gpointer userdata); +void mg_drag_end_cb (GtkWidget *widget, GdkDragContext *context, gpointer userdata); +gboolean mg_drag_drop_cb (GtkWidget *widget, GdkDragContext *context, int x, int y, guint time, gpointer user_data); +gboolean mg_drag_motion_cb (GtkWidget *widget, GdkDragContext *context, int x, int y, guint time, gpointer user_data); diff --git a/xchat-2.8.8/src/fe-gtk/menu.c b/xchat-2.8.8/src/fe-gtk/menu.c new file mode 100644 index 0000000..d04be22 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/menu.c @@ -0,0 +1,2270 @@ +/* X-Chat + * Copyright (C) 1998-2007 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <fcntl.h> +#include <string.h> +#include <unistd.h> + +#ifdef WIN32 +#include <windows.h> +#endif + +#include "fe-gtk.h" + +#include <gtk/gtkhbox.h> +#include <gtk/gtkcheckmenuitem.h> +#include <gtk/gtkentry.h> +#include <gtk/gtkimage.h> +#include <gtk/gtkimagemenuitem.h> +#include <gtk/gtkradiomenuitem.h> +#include <gtk/gtklabel.h> +#include <gtk/gtkmessagedialog.h> +#include <gtk/gtkmenu.h> +#include <gtk/gtkmenubar.h> +#include <gtk/gtkstock.h> +#include <gtk/gtkversion.h> +#include <gdk/gdkkeysyms.h> + +#include "../common/xchat.h" +#include "../common/xchatc.h" +#include "../common/cfgfiles.h" +#include "../common/outbound.h" +#include "../common/ignore.h" +#include "../common/fe.h" +#include "../common/server.h" +#include "../common/servlist.h" +#include "../common/notify.h" +#include "../common/util.h" +#include "xtext.h" +#include "about.h" +#include "ascii.h" +#include "banlist.h" +#include "chanlist.h" +#include "editlist.h" +#include "fkeys.h" +#include "gtkutil.h" +#include "maingui.h" +#include "notifygui.h" +#include "pixmaps.h" +#include "rawlog.h" +#include "palette.h" +#include "plugingui.h" +#include "search.h" +#include "textgui.h" +#include "urlgrab.h" +#include "userlistgui.h" +#include "menu.h" + +static GSList *submenu_list; + +enum +{ + M_MENUITEM, + M_NEWMENU, + M_END, + M_SEP, + M_MENUTOG, + M_MENURADIO, + M_MENUSTOCK, + M_MENUPIX, + M_MENUSUB +}; + +struct mymenu +{ + char *text; + void *callback; + char *image; + unsigned char type; /* M_XXX */ + unsigned char id; /* MENU_ID_XXX (menu.h) */ + unsigned char state; /* ticked or not? */ + unsigned char sensitive; /* shaded out? */ + guint key; /* GDK_x */ +}; + +#define XCMENU_DOLIST 1 +#define XCMENU_SHADED 1 +#define XCMENU_MARKUP 2 +#define XCMENU_MNEMONIC 4 + +/* execute a userlistbutton/popupmenu command */ + +static void +nick_command (session * sess, char *cmd) +{ + if (*cmd == '!') + xchat_exec (cmd + 1); + else + handle_command (sess, cmd, TRUE); +} + +/* fill in the %a %s %n etc and execute the command */ + +void +nick_command_parse (session *sess, char *cmd, char *nick, char *allnick) +{ + char *buf; + char *host = _("Host unknown"); + struct User *user; + int len; + +/* if (sess->type == SESS_DIALOG) + { + buf = (char *)(GTK_ENTRY (sess->gui->topic_entry)->text); + buf = strrchr (buf, '@'); + if (buf) + host = buf + 1; + } else*/ + { + user = userlist_find (sess, nick); + if (user && user->hostname) + host = strchr (user->hostname, '@') + 1; + } + + /* this can't overflow, since popup->cmd is only 256 */ + len = strlen (cmd) + strlen (nick) + strlen (allnick) + 512; + buf = malloc (len); + + auto_insert (buf, len, cmd, 0, 0, allnick, sess->channel, "", + server_get_network (sess->server, TRUE), host, + sess->server->nick, nick); + + nick_command (sess, buf); + + free (buf); +} + +/* userlist button has been clicked */ + +void +userlist_button_cb (GtkWidget * button, char *cmd) +{ + int i, num_sel, using_allnicks = FALSE; + char **nicks, *allnicks; + char *nick = NULL; + session *sess; + + sess = current_sess; + + if (strstr (cmd, "%a")) + using_allnicks = TRUE; + + if (sess->type == SESS_DIALOG) + { + /* fake a selection */ + nicks = malloc (sizeof (char *) * 2); + nicks[0] = g_strdup (sess->channel); + nicks[1] = NULL; + num_sel = 1; + } else + { + /* find number of selected rows */ + nicks = userlist_selection_list (sess->gui->user_tree, &num_sel); + if (num_sel < 1) + { + nick_command_parse (sess, cmd, "", ""); + return; + } + } + + /* create "allnicks" string */ + allnicks = malloc (((NICKLEN + 1) * num_sel) + 1); + *allnicks = 0; + + i = 0; + while (nicks[i]) + { + if (i > 0) + strcat (allnicks, " "); + strcat (allnicks, nicks[i]); + + if (!nick) + nick = nicks[0]; + + /* if not using "%a", execute the command once for each nickname */ + if (!using_allnicks) + nick_command_parse (sess, cmd, nicks[i], ""); + + i++; + } + + if (using_allnicks) + { + if (!nick) + nick = ""; + nick_command_parse (sess, cmd, nick, allnicks); + } + + while (num_sel) + { + num_sel--; + g_free (nicks[num_sel]); + } + + free (nicks); + free (allnicks); +} + +/* a popup-menu-item has been selected */ + +static void +popup_menu_cb (GtkWidget * item, char *cmd) +{ + char *nick; + + /* the userdata is set in menu_quick_item() */ + nick = g_object_get_data (G_OBJECT (item), "u"); + + if (!nick) /* userlist popup menu */ + { + /* treat it just like a userlist button */ + userlist_button_cb (NULL, cmd); + return; + } + + if (!current_sess) /* for url grabber window */ + nick_command_parse (sess_list->data, cmd, nick, nick); + else + nick_command_parse (current_sess, cmd, nick, nick); +} + +GtkWidget * +menu_toggle_item (char *label, GtkWidget *menu, void *callback, void *userdata, + int state) +{ + GtkWidget *item; + + item = gtk_check_menu_item_new_with_mnemonic (label); + gtk_check_menu_item_set_active ((GtkCheckMenuItem*)item, state); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (callback), userdata); + gtk_widget_show (item); + + return item; +} + +GtkWidget * +menu_quick_item (char *cmd, char *label, GtkWidget * menu, int flags, + gpointer userdata, char *icon) +{ + GtkWidget *img, *item; + char *path; + + if (!label) + item = gtk_menu_item_new (); + else + { + if (icon) + { + /*if (flags & XCMENU_MARKUP) + item = gtk_image_menu_item_new_with_markup (label); + else*/ + item = gtk_image_menu_item_new_with_mnemonic (label); + img = NULL; + if (access (icon, R_OK) == 0) /* try fullpath */ + img = gtk_image_new_from_file (icon); + else + { + /* try relative to ~/.xchat2 */ + path = g_strdup_printf ("%s/%s", get_xdir_fs (), icon); + if (access (path, R_OK) == 0) + img = gtk_image_new_from_file (path); + else + img = gtk_image_new_from_stock (icon, GTK_ICON_SIZE_MENU); + g_free (path); + } + + if (img) + gtk_image_menu_item_set_image ((GtkImageMenuItem *)item, img); + } + else + { + if (flags & XCMENU_MARKUP) + { + item = gtk_menu_item_new_with_label (""); + if (flags & XCMENU_MNEMONIC) + gtk_label_set_markup_with_mnemonic (GTK_LABEL (GTK_BIN (item)->child), label); + else + gtk_label_set_markup (GTK_LABEL (GTK_BIN (item)->child), label); + } else + { + if (flags & XCMENU_MNEMONIC) + item = gtk_menu_item_new_with_mnemonic (label); + else + item = gtk_menu_item_new_with_label (label); + } + } + } + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + g_object_set_data (G_OBJECT (item), "u", userdata); + if (cmd) + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (popup_menu_cb), cmd); + if (flags & XCMENU_SHADED) + gtk_widget_set_sensitive (GTK_WIDGET (item), FALSE); + gtk_widget_show_all (item); + + return item; +} + +static void +menu_quick_item_with_callback (void *callback, char *label, GtkWidget * menu, + void *arg) +{ + GtkWidget *item; + + item = gtk_menu_item_new_with_label (label); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (callback), arg); + gtk_widget_show (item); +} + +GtkWidget * +menu_quick_sub (char *name, GtkWidget *menu, GtkWidget **sub_item_ret, int flags, int pos) +{ + GtkWidget *sub_menu; + GtkWidget *sub_item; + + if (!name) + return menu; + + /* Code to add a submenu */ + sub_menu = gtk_menu_new (); + if (flags & XCMENU_MARKUP) + { + sub_item = gtk_menu_item_new_with_label (""); + gtk_label_set_markup (GTK_LABEL (GTK_BIN (sub_item)->child), name); + } + else + { + if (flags & XCMENU_MNEMONIC) + sub_item = gtk_menu_item_new_with_mnemonic (name); + else + sub_item = gtk_menu_item_new_with_label (name); + } + gtk_menu_shell_insert (GTK_MENU_SHELL (menu), sub_item, pos); + gtk_widget_show (sub_item); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (sub_item), sub_menu); + + if (sub_item_ret) + *sub_item_ret = sub_item; + + if (flags & XCMENU_DOLIST) + /* We create a new element in the list */ + submenu_list = g_slist_prepend (submenu_list, sub_menu); + return sub_menu; +} + +static GtkWidget * +menu_quick_endsub () +{ + /* Just delete the first element in the linked list pointed to by first */ + if (submenu_list) + submenu_list = g_slist_remove (submenu_list, submenu_list->data); + + if (submenu_list) + return (submenu_list->data); + else + return NULL; +} + +static void +toggle_cb (GtkWidget *item, char *pref_name) +{ + char buf[256]; + + if (GTK_CHECK_MENU_ITEM (item)->active) + snprintf (buf, sizeof (buf), "set %s 1", pref_name); + else + snprintf (buf, sizeof (buf), "set %s 0", pref_name); + + handle_command (current_sess, buf, FALSE); +} + +static int +is_in_path (char *cmd) +{ + char *prog = strdup (cmd + 1); /* 1st char is "!" */ + char *space, *path, *orig; + + orig = prog; /* save for free()ing */ + /* special-case these default entries. */ + /* 123456789012345678 */ + if (strncmp (prog, "gnome-terminal -x ", 18) == 0) + /* don't check for gnome-terminal, but the thing it's executing! */ + prog += 18; + + space = strchr (prog, ' '); /* this isn't 100% but good enuf */ + if (space) + *space = 0; + + path = g_find_program_in_path (prog); + if (path) + { + g_free (path); + g_free (orig); + return 1; + } + + g_free (orig); + return 0; +} + +/* syntax: "LABEL~ICON~STUFF~ADDED~LATER~" */ + +static void +menu_extract_icon (char *name, char **label, char **icon) +{ + char *p = name; + char *start = NULL; + char *end = NULL; + + while (*p) + { + if (*p == '~') + { + /* escape \~ */ + if (p == name || p[-1] != '\\') + { + if (!start) + start = p + 1; + else if (!end) + end = p + 1; + } + } + p++; + } + + if (!end) + end = p; + + if (start && start != end) + { + *label = g_strndup (name, (start - name) - 1); + *icon = g_strndup (start, (end - start) - 1); + } + else + { + *label = g_strdup (name); + *icon = NULL; + } +} + +/* append items to "menu" using the (struct popup*) list provided */ + +void +menu_create (GtkWidget *menu, GSList *list, char *target, int check_path) +{ + struct popup *pop; + GtkWidget *tempmenu = menu, *subitem = NULL; + int childcount = 0; + + submenu_list = g_slist_prepend (0, menu); + while (list) + { + pop = (struct popup *) list->data; + + if (!strncasecmp (pop->name, "SUB", 3)) + { + childcount = 0; + tempmenu = menu_quick_sub (pop->cmd, tempmenu, &subitem, XCMENU_DOLIST|XCMENU_MNEMONIC, -1); + + } else if (!strncasecmp (pop->name, "TOGGLE", 6)) + { + childcount++; + menu_toggle_item (pop->name + 7, tempmenu, toggle_cb, pop->cmd, + cfg_get_bool (pop->cmd)); + + } else if (!strncasecmp (pop->name, "ENDSUB", 6)) + { + /* empty sub menu due to no programs in PATH? */ + if (check_path && childcount < 1) + gtk_widget_destroy (subitem); + subitem = NULL; + + if (tempmenu != menu) + tempmenu = menu_quick_endsub (); + /* If we get here and tempmenu equals menu that means we havent got any submenus to exit from */ + + } else if (!strncasecmp (pop->name, "SEP", 3)) + { + menu_quick_item (0, 0, tempmenu, XCMENU_SHADED, 0, 0); + + } else + { + char *icon, *label; + + /* default command in xchat.c */ + if (pop->cmd[0] == 'n' && !strcmp (pop->cmd, "notify -n ASK %s")) + { + /* don't create this item if already in notify list */ + if (!target || notify_is_in_list (current_sess->server, target)) + { + list = list->next; + continue; + } + } + + menu_extract_icon (pop->name, &label, &icon); + + if (!check_path || pop->cmd[0] != '!') + { + menu_quick_item (pop->cmd, label, tempmenu, 0, target, icon); + /* check if the program is in path, if not, leave it out! */ + } else if (is_in_path (pop->cmd)) + { + childcount++; + menu_quick_item (pop->cmd, label, tempmenu, 0, target, icon); + } + + g_free (label); + g_free (icon); + } + + list = list->next; + } + + /* Let's clean up the linked list from mem */ + while (submenu_list) + submenu_list = g_slist_remove (submenu_list, submenu_list->data); +} + +static char *str_copy = NULL; /* for all pop-up menus */ +static GtkWidget *nick_submenu = NULL; /* user info submenu */ + +static void +menu_destroy (GtkWidget *menu, gpointer objtounref) +{ + gtk_widget_destroy (menu); + g_object_unref (menu); + if (objtounref) + g_object_unref (G_OBJECT (objtounref)); + nick_submenu = NULL; +} + +static void +menu_popup (GtkWidget *menu, GdkEventButton *event, gpointer objtounref) +{ +#if (GTK_MAJOR_VERSION != 2) || (GTK_MINOR_VERSION != 0) + if (event && event->window) + gtk_menu_set_screen (GTK_MENU (menu), gdk_drawable_get_screen (event->window)); +#endif + + g_object_ref (menu); + g_object_ref_sink (menu); + g_object_unref (menu); + g_signal_connect (G_OBJECT (menu), "selection-done", + G_CALLBACK (menu_destroy), objtounref); + gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, + 0, event ? event->time : 0); +} + +static void +menu_nickinfo_cb (GtkWidget *menu, session *sess) +{ + char buf[512]; + + if (!is_session (sess)) + return; + + /* issue a /WHOIS */ + snprintf (buf, sizeof (buf), "WHOIS %s %s", str_copy, str_copy); + handle_command (sess, buf, FALSE); + /* and hide the output */ + sess->server->skip_next_whois = 1; +} + +static void +copy_to_clipboard_cb (GtkWidget *item, char *url) +{ + gtkutil_copy_to_clipboard (item, NULL, url); +} + +/* returns boolean: Some data is missing */ + +static gboolean +menu_create_nickinfo_menu (struct User *user, GtkWidget *submenu) +{ + char buf[512]; + char unknown[96]; + char *real, *fmt; + struct away_msg *away; + gboolean missing = FALSE; + GtkWidget *item; + + /* let the translators tweak this if need be */ + fmt = _("<tt><b>%-11s</b></tt> %s"); + snprintf (unknown, sizeof (unknown), "<i>%s</i>", _("Unknown")); + + if (user->realname) + { + real = strip_color (user->realname, -1, STRIP_ALL|STRIP_ESCMARKUP); + snprintf (buf, sizeof (buf), fmt, _("Real Name:"), real); + g_free (real); + } else + { + snprintf (buf, sizeof (buf), fmt, _("Real Name:"), unknown); + } + item = menu_quick_item (0, buf, submenu, XCMENU_MARKUP, 0, 0); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (copy_to_clipboard_cb), + user->realname ? user->realname : unknown); + + snprintf (buf, sizeof (buf), fmt, _("User:"), + user->hostname ? user->hostname : unknown); + item = menu_quick_item (0, buf, submenu, XCMENU_MARKUP, 0, 0); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (copy_to_clipboard_cb), + user->hostname ? user->hostname : unknown); + + snprintf (buf, sizeof (buf), fmt, _("Country:"), + user->hostname ? country(user->hostname) : unknown); + item = menu_quick_item (0, buf, submenu, XCMENU_MARKUP, 0, 0); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (copy_to_clipboard_cb), + user->hostname ? country(user->hostname) : unknown); + + snprintf (buf, sizeof (buf), fmt, _("Server:"), + user->servername ? user->servername : unknown); + item = menu_quick_item (0, buf, submenu, XCMENU_MARKUP, 0, 0); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (copy_to_clipboard_cb), + user->servername ? user->servername : unknown); + + if (user->lasttalk) + { + char min[96]; + + snprintf (min, sizeof (min), _("%u minutes ago"), + (unsigned int) ((time (0) - user->lasttalk) / 60)); + snprintf (buf, sizeof (buf), fmt, _("Last Msg:"), min); + } else + { + snprintf (buf, sizeof (buf), fmt, _("Last Msg:"), unknown); + } + menu_quick_item (0, buf, submenu, XCMENU_MARKUP, 0, 0); + + if (user->away) + { + away = server_away_find_message (current_sess->server, user->nick); + if (away) + { + char *msg = strip_color (away->message ? away->message : unknown, -1, STRIP_ALL|STRIP_ESCMARKUP); + snprintf (buf, sizeof (buf), fmt, _("Away Msg:"), msg); + g_free (msg); + item = menu_quick_item (0, buf, submenu, XCMENU_MARKUP, 0, 0); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (copy_to_clipboard_cb), + away->message ? away->message : unknown); + } + else + missing = TRUE; + } + + return missing; +} + +void +fe_userlist_update (session *sess, struct User *user) +{ + GList *items, *next; + + if (!nick_submenu || !str_copy) + return; + + /* not the same nick as the menu? */ + if (sess->server->p_cmp (user->nick, str_copy)) + return; + + /* get rid of the "show" signal */ + g_signal_handlers_disconnect_by_func (nick_submenu, menu_nickinfo_cb, sess); + + /* destroy all the old items */ + items = ((GtkMenuShell *) nick_submenu)->children; + while (items) + { + next = items->next; + gtk_widget_destroy (items->data); + items = next; + } + + /* and re-create them with new info */ + menu_create_nickinfo_menu (user, nick_submenu); +} + +void +menu_nickmenu (session *sess, GdkEventButton *event, char *nick, int num_sel) +{ + char buf[512]; + struct User *user; + GtkWidget *submenu, *menu = gtk_menu_new (); + + if (str_copy) + free (str_copy); + str_copy = strdup (nick); + + submenu_list = 0; /* first time through, might not be 0 */ + + /* more than 1 nick selected? */ + if (num_sel > 1) + { + snprintf (buf, sizeof (buf), _("%d nicks selected."), num_sel); + menu_quick_item (0, buf, menu, 0, 0, 0); + menu_quick_item (0, 0, menu, XCMENU_SHADED, 0, 0); + } else + { + user = userlist_find (sess, nick); /* lasttalk is channel specific */ + if (!user) + user = userlist_find_global (current_sess->server, nick); + if (user) + { + nick_submenu = submenu = menu_quick_sub (nick, menu, NULL, XCMENU_DOLIST, -1); + + if (menu_create_nickinfo_menu (user, submenu) || + !user->hostname || !user->realname || !user->servername) + { + g_signal_connect (G_OBJECT (submenu), "show", G_CALLBACK (menu_nickinfo_cb), sess); + } + + menu_quick_endsub (); + menu_quick_item (0, 0, menu, XCMENU_SHADED, 0, 0); + } + } + + if (num_sel > 1) + menu_create (menu, popup_list, NULL, FALSE); + else + menu_create (menu, popup_list, str_copy, FALSE); + + if (num_sel == 0) /* xtext click */ + menu_add_plugin_items (menu, "\x5$NICK", str_copy); + else /* userlist treeview click */ + menu_add_plugin_items (menu, "\x5$NICK", NULL); + + menu_popup (menu, event, NULL); +} + +/* stuff for the View menu */ + +static void +menu_showhide_cb (session *sess) +{ + if (prefs.hidemenu) + gtk_widget_hide (sess->gui->menu); + else + gtk_widget_show (sess->gui->menu); +} + +static void +menu_topic_showhide_cb (session *sess) +{ + if (prefs.topicbar) + gtk_widget_show (sess->gui->topic_bar); + else + gtk_widget_hide (sess->gui->topic_bar); +} + +static void +menu_userlist_showhide_cb (session *sess) +{ + mg_decide_userlist (sess, TRUE); +} + +static void +menu_ulbuttons_showhide_cb (session *sess) +{ + if (prefs.userlistbuttons) + gtk_widget_show (sess->gui->button_box); + else + gtk_widget_hide (sess->gui->button_box); +} + +static void +menu_cmbuttons_showhide_cb (session *sess) +{ + switch (sess->type) + { + case SESS_CHANNEL: + if (prefs.chanmodebuttons) + gtk_widget_show (sess->gui->topicbutton_box); + else + gtk_widget_hide (sess->gui->topicbutton_box); + break; + default: + gtk_widget_hide (sess->gui->topicbutton_box); + } +} + +static void +menu_setting_foreach (void (*callback) (session *), int id, guint state) +{ + session *sess; + GSList *list; + int maindone = FALSE; /* do it only once for EVERY tab */ + + list = sess_list; + while (list) + { + sess = list->data; + + if (!sess->gui->is_tab || !maindone) + { + if (sess->gui->is_tab) + maindone = TRUE; + if (id != -1) + GTK_CHECK_MENU_ITEM (sess->gui->menu_item[id])->active = state; + if (callback) + callback (sess); + } + + list = list->next; + } +} + +void +menu_bar_toggle (void) +{ + prefs.hidemenu = !prefs.hidemenu; + menu_setting_foreach (menu_showhide_cb, MENU_ID_MENUBAR, !prefs.hidemenu); +} + +static void +menu_bar_toggle_cb (void) +{ + menu_bar_toggle (); + if (prefs.hidemenu) + fe_message (_("The Menubar is now hidden. You can show it again" + " by pressing F9 or right-clicking in a blank part of" + " the main text area."), FE_MSG_INFO); +} + +static void +menu_topicbar_toggle (GtkWidget *wid, gpointer ud) +{ + prefs.topicbar = !prefs.topicbar; + menu_setting_foreach (menu_topic_showhide_cb, MENU_ID_TOPICBAR, + prefs.topicbar); +} + +static void +menu_userlist_toggle (GtkWidget *wid, gpointer ud) +{ + prefs.hideuserlist = !prefs.hideuserlist; + menu_setting_foreach (menu_userlist_showhide_cb, MENU_ID_USERLIST, + !prefs.hideuserlist); +} + +static void +menu_ulbuttons_toggle (GtkWidget *wid, gpointer ud) +{ + prefs.userlistbuttons = !prefs.userlistbuttons; + menu_setting_foreach (menu_ulbuttons_showhide_cb, MENU_ID_ULBUTTONS, + prefs.userlistbuttons); +} + +static void +menu_cmbuttons_toggle (GtkWidget *wid, gpointer ud) +{ + prefs.chanmodebuttons = !prefs.chanmodebuttons; + menu_setting_foreach (menu_cmbuttons_showhide_cb, MENU_ID_MODEBUTTONS, + prefs.chanmodebuttons); +} + +void +menu_middlemenu (session *sess, GdkEventButton *event) +{ + GtkWidget *menu; + GtkAccelGroup *accel_group; + + accel_group = gtk_accel_group_new (); + menu = menu_create_main (accel_group, FALSE, sess->server->is_away, !sess->gui->is_tab, NULL); + menu_popup (menu, event, accel_group); +} + +static void +open_url_cb (GtkWidget *item, char *url) +{ + char buf[512]; + + /* pass this to /URL so it can handle irc:// */ + snprintf (buf, sizeof (buf), "URL %s", url); + handle_command (current_sess, buf, FALSE); +} + +void +menu_urlmenu (GdkEventButton *event, char *url) +{ + GtkWidget *menu; + char *tmp, *chop; + + if (str_copy) + free (str_copy); + str_copy = strdup (url); + + menu = gtk_menu_new (); + /* more than 51 chars? Chop it */ + if (g_utf8_strlen (str_copy, -1) >= 52) + { + tmp = strdup (str_copy); + chop = g_utf8_offset_to_pointer (tmp, 48); + chop[0] = chop[1] = chop[2] = '.'; + chop[3] = 0; + menu_quick_item (0, tmp, menu, XCMENU_SHADED, 0, 0); + free (tmp); + } else + { + menu_quick_item (0, str_copy, menu, XCMENU_SHADED, 0, 0); + } + menu_quick_item (0, 0, menu, XCMENU_SHADED, 0, 0); + + /* Two hardcoded entries */ + if (strncmp (str_copy, "irc://", 6) == 0 || + strncmp (str_copy, "ircs://",7) == 0) + menu_quick_item_with_callback (open_url_cb, _("Connect"), menu, str_copy); + else + menu_quick_item_with_callback (open_url_cb, _("Open Link in Browser"), menu, str_copy); + menu_quick_item_with_callback (copy_to_clipboard_cb, _("Copy Selected Link"), menu, str_copy); + /* custom ones from urlhandlers.conf */ + menu_create (menu, urlhandler_list, str_copy, TRUE); + menu_add_plugin_items (menu, "\x4$URL", str_copy); + menu_popup (menu, event, NULL); +} + +static void +menu_chan_cycle (GtkWidget * menu, char *chan) +{ + char tbuf[256]; + + if (current_sess) + { + snprintf (tbuf, sizeof tbuf, "CYCLE %s", chan); + handle_command (current_sess, tbuf, FALSE); + } +} + +static void +menu_chan_part (GtkWidget * menu, char *chan) +{ + char tbuf[256]; + + if (current_sess) + { + snprintf (tbuf, sizeof tbuf, "part %s", chan); + handle_command (current_sess, tbuf, FALSE); + } +} + +static void +menu_chan_join (GtkWidget * menu, char *chan) +{ + char tbuf[256]; + + if (current_sess) + { + snprintf (tbuf, sizeof tbuf, "join %s", chan); + handle_command (current_sess, tbuf, FALSE); + } +} + +void +menu_chanmenu (struct session *sess, GdkEventButton * event, char *chan) +{ + GtkWidget *menu; + int is_joined = FALSE; + + if (find_channel (sess->server, chan)) + is_joined = TRUE; + + if (str_copy) + free (str_copy); + str_copy = strdup (chan); + + menu = gtk_menu_new (); + + menu_quick_item (0, chan, menu, XCMENU_SHADED, str_copy, 0); + menu_quick_item (0, 0, menu, XCMENU_SHADED, str_copy, 0); + + if (!is_joined) + menu_quick_item_with_callback (menu_chan_join, _("Join Channel"), menu, + str_copy); + else + { + menu_quick_item_with_callback (menu_chan_part, _("Part Channel"), menu, + str_copy); + menu_quick_item_with_callback (menu_chan_cycle, _("Cycle Channel"), menu, + str_copy); + } + + menu_addfavoritemenu (sess->server, menu, str_copy); + + menu_add_plugin_items (menu, "\x5$CHAN", str_copy); + menu_popup (menu, event, NULL); +} + +static void +menu_delfav_cb (GtkWidget *item, server *serv) +{ + servlist_autojoinedit (serv->network, str_copy, FALSE); +} + +static void +menu_addfav_cb (GtkWidget *item, server *serv) +{ + servlist_autojoinedit (serv->network, str_copy, TRUE); +} + +void +menu_addfavoritemenu (server *serv, GtkWidget *menu, char *channel) +{ + if (!serv->network) + return; + + if (channel != str_copy) + { + if (str_copy) + free (str_copy); + str_copy = strdup (channel); + } + + if (joinlist_is_in_list (serv, channel)) + mg_create_icon_item (_("_Remove from Favorites"), GTK_STOCK_REMOVE, menu, menu_delfav_cb, serv); + else + mg_create_icon_item (_("_Add to Favorites"), GTK_STOCK_ADD, menu, menu_addfav_cb, serv); +} + +static void +menu_open_server_list (GtkWidget *wid, gpointer none) +{ + fe_serverlist_open (current_sess); +} + +static void +menu_settings (GtkWidget * wid, gpointer none) +{ + extern void setup_open (void); + setup_open (); +} + +static void +menu_usermenu (void) +{ + editlist_gui_open (NULL, NULL, usermenu_list, _("XChat: User menu"), + "usermenu", "usermenu.conf", 0); +} + +static void +usermenu_create (GtkWidget *menu) +{ + menu_create (menu, usermenu_list, "", FALSE); + menu_quick_item (0, 0, menu, XCMENU_SHADED, 0, 0); /* sep */ + menu_quick_item_with_callback (menu_usermenu, _("Edit This Menu..."), menu, 0); +} + +static void +usermenu_destroy (GtkWidget * menu) +{ + GList *items = ((GtkMenuShell *) menu)->children; + GList *next; + + while (items) + { + next = items->next; + gtk_widget_destroy (items->data); + items = next; + } +} + +void +usermenu_update (void) +{ + int done_main = FALSE; + GSList *list = sess_list; + session *sess; + GtkWidget *menu; + + while (list) + { + sess = list->data; + menu = sess->gui->menu_item[MENU_ID_USERMENU]; + if (sess->gui->is_tab) + { + if (!done_main && menu) + { + usermenu_destroy (menu); + usermenu_create (menu); + done_main = TRUE; + } + } else if (menu) + { + usermenu_destroy (menu); + usermenu_create (menu); + } + list = list->next; + } +} + +static void +menu_newserver_window (GtkWidget * wid, gpointer none) +{ + int old = prefs.tabchannels; + + prefs.tabchannels = 0; + new_ircwindow (NULL, NULL, SESS_SERVER, 0); + prefs.tabchannels = old; +} + +static void +menu_newchannel_window (GtkWidget * wid, gpointer none) +{ + int old = prefs.tabchannels; + + prefs.tabchannels = 0; + new_ircwindow (current_sess->server, NULL, SESS_CHANNEL, 0); + prefs.tabchannels = old; +} + +static void +menu_newserver_tab (GtkWidget * wid, gpointer none) +{ + int old = prefs.tabchannels; + int oldf = prefs.newtabstofront; + + prefs.tabchannels = 1; + /* force focus if setting is "only requested tabs" */ + if (prefs.newtabstofront == 2) + prefs.newtabstofront = 1; + new_ircwindow (NULL, NULL, SESS_SERVER, 0); + prefs.tabchannels = old; + prefs.newtabstofront = oldf; +} + +static void +menu_newchannel_tab (GtkWidget * wid, gpointer none) +{ + int old = prefs.tabchannels; + + prefs.tabchannels = 1; + new_ircwindow (current_sess->server, NULL, SESS_CHANNEL, 0); + prefs.tabchannels = old; +} + +static void +menu_rawlog (GtkWidget * wid, gpointer none) +{ + open_rawlog (current_sess->server); +} + +static void +menu_detach (GtkWidget * wid, gpointer none) +{ + mg_detach (current_sess, 0); +} + +static void +menu_close (GtkWidget * wid, gpointer none) +{ + mg_close_sess (current_sess); +} + +static void +menu_quit (GtkWidget * wid, gpointer none) +{ + mg_open_quit_dialog (FALSE); +} + +static void +menu_search () +{ + search_open (current_sess); +} + +static void +menu_resetmarker (GtkWidget * wid, gpointer none) +{ + gtk_xtext_reset_marker_pos (GTK_XTEXT (current_sess->gui->xtext)); +} + +static void +menu_flushbuffer (GtkWidget * wid, gpointer none) +{ + fe_text_clear (current_sess, 0); +} + +static void +savebuffer_req_done (session *sess, char *file) +{ + int fh; + + if (!file) + return; + + fh = open (file, O_TRUNC | O_WRONLY | O_CREAT, 0600); + if (fh != -1) + { + gtk_xtext_save (GTK_XTEXT (sess->gui->xtext), fh); + close (fh); + } +} + +static void +menu_savebuffer (GtkWidget * wid, gpointer none) +{ + gtkutil_file_req (_("Select an output filename"), savebuffer_req_done, + current_sess, NULL, FRF_WRITE); +} + +static void +menu_disconnect (GtkWidget * wid, gpointer none) +{ + handle_command (current_sess, "DISCON", FALSE); +} + +static void +menu_reconnect (GtkWidget * wid, gpointer none) +{ + if (current_sess->server->hostname[0]) + handle_command (current_sess, "RECONNECT", FALSE); + else + fe_serverlist_open (current_sess); +} + +static void +menu_join_cb (GtkWidget *dialog, gint response, GtkEntry *entry) +{ + switch (response) + { + case GTK_RESPONSE_ACCEPT: + menu_chan_join (NULL, entry->text); + break; + + case GTK_RESPONSE_HELP: + chanlist_opengui (current_sess->server, TRUE); + break; + } + + gtk_widget_destroy (dialog); +} + +static void +menu_join_entry_cb (GtkWidget *entry, GtkDialog *dialog) +{ + gtk_dialog_response (dialog, GTK_RESPONSE_ACCEPT); +} + +static void +menu_join (GtkWidget * wid, gpointer none) +{ + GtkWidget *hbox, *dialog, *entry, *label; + + dialog = gtk_dialog_new_with_buttons (_("Join Channel"), + GTK_WINDOW (parent_window), 0, + _("Retrieve channel list..."), GTK_RESPONSE_HELP, + GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, + GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, + NULL); + gtk_box_set_homogeneous (GTK_BOX (GTK_DIALOG (dialog)->vbox), TRUE); + gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); + hbox = gtk_hbox_new (TRUE, 0); + + entry = gtk_entry_new (); + GTK_ENTRY (entry)->editable = 0; /* avoid auto-selection */ + gtk_entry_set_text (GTK_ENTRY (entry), "#"); + g_signal_connect (G_OBJECT (entry), "activate", + G_CALLBACK (menu_join_entry_cb), dialog); + gtk_box_pack_end (GTK_BOX (hbox), entry, 0, 0, 0); + + label = gtk_label_new (_("Enter Channel to Join:")); + gtk_box_pack_end (GTK_BOX (hbox), label, 0, 0, 0); + + g_signal_connect (G_OBJECT (dialog), "response", + G_CALLBACK (menu_join_cb), entry); + + gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), hbox); + + gtk_widget_show_all (dialog); + + gtk_editable_set_editable (GTK_EDITABLE (entry), TRUE); + gtk_editable_set_position (GTK_EDITABLE (entry), 1); +} + +static void +menu_away (GtkCheckMenuItem *item, gpointer none) +{ + handle_command (current_sess, item->active ? "away" : "back", FALSE); +} + +static void +menu_chanlist (GtkWidget * wid, gpointer none) +{ + chanlist_opengui (current_sess->server, FALSE); +} + +static void +menu_banlist (GtkWidget * wid, gpointer none) +{ + banlist_opengui (current_sess); +} + +#ifdef USE_PLUGIN + +static void +menu_loadplugin (void) +{ + plugingui_load (); +} + +static void +menu_pluginlist (void) +{ + plugingui_open (); +} + +#else + +#define menu_pluginlist 0 +#define menu_loadplugin 0 + +#endif + +#define usercommands_help _("User Commands - Special codes:\n\n"\ + "%c = current channel\n"\ + "%e = current network name\n"\ + "%m = machine info\n"\ + "%n = your nick\n"\ + "%t = time/date\n"\ + "%v = xchat version\n"\ + "%2 = word 2\n"\ + "%3 = word 3\n"\ + "&2 = word 2 to the end of line\n"\ + "&3 = word 3 to the end of line\n\n"\ + "eg:\n"\ + "/cmd john hello\n\n"\ + "%2 would be \042john\042\n"\ + "&2 would be \042john hello\042.") + +#define ulbutton_help _("Userlist Buttons - Special codes:\n\n"\ + "%a = all selected nicks\n"\ + "%c = current channel\n"\ + "%e = current network name\n"\ + "%h = selected nick's hostname\n"\ + "%m = machine info\n"\ + "%n = your nick\n"\ + "%s = selected nick\n"\ + "%t = time/date\n") + +#define dlgbutton_help _("Dialog Buttons - Special codes:\n\n"\ + "%a = all selected nicks\n"\ + "%c = current channel\n"\ + "%e = current network name\n"\ + "%h = selected nick's hostname\n"\ + "%m = machine info\n"\ + "%n = your nick\n"\ + "%s = selected nick\n"\ + "%t = time/date\n") + +#define ctcp_help _("CTCP Replies - Special codes:\n\n"\ + "%d = data (the whole ctcp)\n"\ + "%e = current network name\n"\ + "%m = machine info\n"\ + "%s = nick who sent the ctcp\n"\ + "%t = time/date\n"\ + "%2 = word 2\n"\ + "%3 = word 3\n"\ + "&2 = word 2 to the end of line\n"\ + "&3 = word 3 to the end of line\n\n") + +#define url_help _("URL Handlers - Special codes:\n\n"\ + "%s = the URL string\n\n"\ + "Putting a ! infront of the command\n"\ + "indicates it should be sent to a\n"\ + "shell instead of XChat") + +static void +menu_usercommands (void) +{ + editlist_gui_open (NULL, NULL, command_list, _("XChat: User Defined Commands"), + "commands", "commands.conf", usercommands_help); +} + +static void +menu_ulpopup (void) +{ + editlist_gui_open (NULL, NULL, popup_list, _("XChat: Userlist Popup menu"), "popup", + "popup.conf", ulbutton_help); +} + +static void +menu_rpopup (void) +{ + editlist_gui_open (_("Text"), _("Replace with"), replace_list, _("XChat: Replace"), "replace", + "replace.conf", 0); +} + +static void +menu_urlhandlers (void) +{ + editlist_gui_open (NULL, NULL, urlhandler_list, _("XChat: URL Handlers"), "urlhandlers", + "urlhandlers.conf", url_help); +} + +static void +menu_evtpopup (void) +{ + pevent_dialog_show (); +} + +static void +menu_keypopup (void) +{ + key_dialog_show (); +} + +static void +menu_ulbuttons (void) +{ + editlist_gui_open (NULL, NULL, button_list, _("XChat: Userlist buttons"), "buttons", + "buttons.conf", ulbutton_help); +} + +static void +menu_dlgbuttons (void) +{ + editlist_gui_open (NULL, NULL, dlgbutton_list, _("XChat: Dialog buttons"), "dlgbuttons", + "dlgbuttons.conf", dlgbutton_help); +} + +static void +menu_ctcpguiopen (void) +{ + editlist_gui_open (NULL, NULL, ctcp_list, _("XChat: CTCP Replies"), "ctcpreply", + "ctcpreply.conf", ctcp_help); +} + +static void +menu_docs (GtkWidget *wid, gpointer none) +{ + fe_open_url ("http://xchat.org/docs/"); +} + +/*static void +menu_webpage (GtkWidget *wid, gpointer none) +{ + fe_open_url ("http://xchat.org"); +}*/ + +static void +menu_dcc_win (GtkWidget *wid, gpointer none) +{ + fe_dcc_open_recv_win (FALSE); + fe_dcc_open_send_win (FALSE); +} + +static void +menu_dcc_chat_win (GtkWidget *wid, gpointer none) +{ + fe_dcc_open_chat_win (FALSE); +} + +void +menu_change_layout (void) +{ + if (prefs.tab_layout == 0) + { + menu_setting_foreach (NULL, MENU_ID_LAYOUT_TABS, 1); + menu_setting_foreach (NULL, MENU_ID_LAYOUT_TREE, 0); + mg_change_layout (0); + } else + { + menu_setting_foreach (NULL, MENU_ID_LAYOUT_TABS, 0); + menu_setting_foreach (NULL, MENU_ID_LAYOUT_TREE, 1); + mg_change_layout (2); + } +} + +static void +menu_layout_cb (GtkWidget *item, gpointer none) +{ + prefs.tab_layout = 2; + if (GTK_CHECK_MENU_ITEM (item)->active) + prefs.tab_layout = 0; + + menu_change_layout (); +} + +static void +menu_apply_metres_cb (session *sess) +{ + mg_update_meters (sess->gui); +} + +static void +menu_metres_off (GtkWidget *item, gpointer none) +{ + if (GTK_CHECK_MENU_ITEM (item)->active) + { + prefs.lagometer = 0; + prefs.throttlemeter = 0; + menu_setting_foreach (menu_apply_metres_cb, -1, 0); + } +} + +static void +menu_metres_text (GtkWidget *item, gpointer none) +{ + if (GTK_CHECK_MENU_ITEM (item)->active) + { + prefs.lagometer = 2; + prefs.throttlemeter = 2; + menu_setting_foreach (menu_apply_metres_cb, -1, 0); + } +} + +static void +menu_metres_graph (GtkWidget *item, gpointer none) +{ + if (GTK_CHECK_MENU_ITEM (item)->active) + { + prefs.lagometer = 1; + prefs.throttlemeter = 1; + menu_setting_foreach (menu_apply_metres_cb, -1, 0); + } +} + +static void +menu_metres_both (GtkWidget *item, gpointer none) +{ + if (GTK_CHECK_MENU_ITEM (item)->active) + { + prefs.lagometer = 3; + prefs.throttlemeter = 3; + menu_setting_foreach (menu_apply_metres_cb, -1, 0); + } +} + +static struct mymenu mymenu[] = { + {N_("_XChat"), 0, 0, M_NEWMENU, 0, 0, 1}, + {N_("Network Li_st..."), menu_open_server_list, (char *)&pix_book, M_MENUPIX, 0, 0, 1, GDK_s}, + {0, 0, 0, M_SEP, 0, 0, 0}, + + {N_("_New"), 0, GTK_STOCK_NEW, M_MENUSUB, 0, 0, 1}, + {N_("Server Tab..."), menu_newserver_tab, 0, M_MENUITEM, 0, 0, 1, GDK_t}, + {N_("Channel Tab..."), menu_newchannel_tab, 0, M_MENUITEM, 0, 0, 1}, + {N_("Server Window..."), menu_newserver_window, 0, M_MENUITEM, 0, 0, 1}, + {N_("Channel Window..."), menu_newchannel_window, 0, M_MENUITEM, 0, 0, 1}, + {0, 0, 0, M_END, 0, 0, 0}, + {0, 0, 0, M_SEP, 0, 0, 0}, + +#ifdef USE_PLUGIN + {N_("_Load Plugin or Script..."), menu_loadplugin, GTK_STOCK_REVERT_TO_SAVED, M_MENUSTOCK, 0, 0, 1}, +#else + {N_("_Load Plugin or Script..."), 0, GTK_STOCK_REVERT_TO_SAVED, M_MENUSTOCK, 0, 0, 0}, +#endif + {0, 0, 0, M_SEP, 0, 0, 0}, /* 11 */ +#define DETACH_OFFSET (12) + {0, menu_detach, GTK_STOCK_REDO, M_MENUSTOCK, 0, 0, 1, GDK_I}, /* 12 */ +#define CLOSE_OFFSET (13) + {0, menu_close, GTK_STOCK_CLOSE, M_MENUSTOCK, 0, 0, 1, GDK_w}, + {0, 0, 0, M_SEP, 0, 0, 0}, + {N_("_Quit"), menu_quit, GTK_STOCK_QUIT, M_MENUSTOCK, 0, 0, 1, GDK_q}, /* 15 */ + + {N_("_View"), 0, 0, M_NEWMENU, 0, 0, 1}, +#define MENUBAR_OFFSET (17) + {N_("_Menu Bar"), menu_bar_toggle_cb, 0, M_MENUTOG, MENU_ID_MENUBAR, 0, 1, GDK_F9}, + {N_("_Topic Bar"), menu_topicbar_toggle, 0, M_MENUTOG, MENU_ID_TOPICBAR, 0, 1}, + {N_("_User List"), menu_userlist_toggle, 0, M_MENUTOG, MENU_ID_USERLIST, 0, 1, GDK_F7}, + {N_("U_serlist Buttons"), menu_ulbuttons_toggle, 0, M_MENUTOG, MENU_ID_ULBUTTONS, 0, 1}, + {N_("M_ode Buttons"), menu_cmbuttons_toggle, 0, M_MENUTOG, MENU_ID_MODEBUTTONS, 0, 1}, + {0, 0, 0, M_SEP, 0, 0, 0}, + {N_("_Channel Switcher"), 0, 0, M_MENUSUB, 0, 0, 1}, /* 23 */ +#define TABS_OFFSET (24) + {N_("_Tabs"), menu_layout_cb, 0, M_MENURADIO, MENU_ID_LAYOUT_TABS, 0, 1}, + {N_("T_ree"), 0, 0, M_MENURADIO, MENU_ID_LAYOUT_TREE, 0, 1}, + {0, 0, 0, M_END, 0, 0, 0}, + {N_("_Network Meters"), 0, 0, M_MENUSUB, 0, 0, 1}, /* 27 */ +#define METRE_OFFSET (28) + {N_("Off"), menu_metres_off, 0, M_MENURADIO, 0, 0, 1}, + {N_("Graph"), menu_metres_graph, 0, M_MENURADIO, 0, 0, 1}, + {N_("Text"), menu_metres_text, 0, M_MENURADIO, 0, 0, 1}, + {N_("Both"), menu_metres_both, 0, M_MENURADIO, 0, 0, 1}, + {0, 0, 0, M_END, 0, 0, 0}, /* 32 */ + + {N_("_Server"), 0, 0, M_NEWMENU, 0, 0, 1}, + {N_("_Disconnect"), menu_disconnect, GTK_STOCK_DISCONNECT, M_MENUSTOCK, MENU_ID_DISCONNECT, 0, 1}, + {N_("_Reconnect"), menu_reconnect, GTK_STOCK_CONNECT, M_MENUSTOCK, MENU_ID_RECONNECT, 0, 1}, + {N_("Join a Channel..."), menu_join, GTK_STOCK_JUMP_TO, M_MENUSTOCK, MENU_ID_JOIN, 0, 1}, + {N_("List of Channels..."), menu_chanlist, GTK_STOCK_INDEX, M_MENUITEM, 0, 0, 1}, + {0, 0, 0, M_SEP, 0, 0, 0}, +#define AWAY_OFFSET (39) + {N_("Marked Away"), menu_away, 0, M_MENUTOG, MENU_ID_AWAY, 0, 1, GDK_a}, + + {N_("_Usermenu"), 0, 0, M_NEWMENU, MENU_ID_USERMENU, 0, 1}, /* 40 */ + + {N_("S_ettings"), 0, 0, M_NEWMENU, 0, 0, 1}, + {N_("_Preferences"), menu_settings, GTK_STOCK_PREFERENCES, M_MENUSTOCK, 0, 0, 1}, + + {N_("Advanced"), 0, GTK_STOCK_JUSTIFY_LEFT, M_MENUSUB, 0, 0, 1}, + {N_("Auto Replace..."), menu_rpopup, 0, M_MENUITEM, 0, 0, 1}, + {N_("CTCP Replies..."), menu_ctcpguiopen, 0, M_MENUITEM, 0, 0, 1}, + {N_("Dialog Buttons..."), menu_dlgbuttons, 0, M_MENUITEM, 0, 0, 1}, + {N_("Keyboard Shortcuts..."), menu_keypopup, 0, M_MENUITEM, 0, 0, 1}, + {N_("Text Events..."), menu_evtpopup, 0, M_MENUITEM, 0, 0, 1}, + {N_("URL Handlers..."), menu_urlhandlers, 0, M_MENUITEM, 0, 0, 1}, + {N_("User Commands..."), menu_usercommands, 0, M_MENUITEM, 0, 0, 1}, + {N_("Userlist Buttons..."), menu_ulbuttons, 0, M_MENUITEM, 0, 0, 1}, + {N_("Userlist Popup..."), menu_ulpopup, 0, M_MENUITEM, 0, 0, 1}, + {0, 0, 0, M_END, 0, 0, 0}, /* 53 */ + + {N_("_Window"), 0, 0, M_NEWMENU, 0, 0, 1}, + {N_("Ban List..."), menu_banlist, 0, M_MENUITEM, 0, 0, 1}, + {N_("Character Chart..."), ascii_open, 0, M_MENUITEM, 0, 0, 1}, + {N_("Direct Chat..."), menu_dcc_chat_win, 0, M_MENUITEM, 0, 0, 1}, + {N_("File Transfers..."), menu_dcc_win, 0, M_MENUITEM, 0, 0, 1}, + {N_("Friends List..."), notify_opengui, 0, M_MENUITEM, 0, 0, 1}, + {N_("Ignore List..."), ignore_gui_open, 0, M_MENUITEM, 0, 0, 1}, + {N_("Plugins and Scripts..."), menu_pluginlist, 0, M_MENUITEM, 0, 0, 1}, + {N_("Raw Log..."), menu_rawlog, 0, M_MENUITEM, 0, 0, 1}, /* 62 */ + {N_("URL Grabber..."), url_opengui, 0, M_MENUITEM, 0, 0, 1}, + {0, 0, 0, M_SEP, 0, 0, 0}, + {N_("Reset Marker Line"), menu_resetmarker, 0, M_MENUITEM, 0, 0, 1, GDK_m}, + {N_("C_lear Text"), menu_flushbuffer, GTK_STOCK_CLEAR, M_MENUSTOCK, 0, 0, 1, GDK_l}, +#define SEARCH_OFFSET 67 + {N_("Search Text..."), menu_search, GTK_STOCK_FIND, M_MENUSTOCK, 0, 0, 1, GDK_f}, + {N_("Save Text..."), menu_savebuffer, GTK_STOCK_SAVE, M_MENUSTOCK, 0, 0, 1}, + + {N_("_Help"), 0, 0, M_NEWMENU, 0, 0, 1}, /* 69 */ + {N_("_Contents"), menu_docs, GTK_STOCK_HELP, M_MENUSTOCK, 0, 0, 1, GDK_F1}, +#if 0 + {N_("Check for updates"), menu_update, 0, M_MENUITEM, 0, 1}, +#endif + {N_("_About"), menu_about, GTK_STOCK_ABOUT, M_MENUSTOCK, 0, 0, 1}, + + {0, 0, 0, M_END, 0, 0, 0}, +}; + +GtkWidget * +create_icon_menu (char *labeltext, void *stock_name, int is_stock) +{ + GtkWidget *item, *img; + + if (is_stock) + img = gtk_image_new_from_stock (stock_name, GTK_ICON_SIZE_MENU); + else + img = gtk_image_new_from_pixbuf (*((GdkPixbuf **)stock_name)); + item = gtk_image_menu_item_new_with_mnemonic (labeltext); + gtk_image_menu_item_set_image ((GtkImageMenuItem *)item, img); + gtk_widget_show (img); + + return item; +} + +#if GTK_CHECK_VERSION(2,4,0) + +/* Override the default GTK2.4 handler, which would make menu + bindings not work when the menu-bar is hidden. */ +static gboolean +menu_canacaccel (GtkWidget *widget, guint signal_id, gpointer user_data) +{ + /* GTK2.2 behaviour */ +#if GTK_CHECK_VERSION(2,20,0) + return gtk_widget_is_sensitive (widget); +#else + return GTK_WIDGET_IS_SENSITIVE (widget); +#endif +} + +#endif + + +/* === STUFF FOR /MENU === */ + +static GtkMenuItem * +menu_find_item (GtkWidget *menu, char *name) +{ + GList *items = ((GtkMenuShell *) menu)->children; + GtkMenuItem *item; + GtkWidget *child; + const char *labeltext; + + while (items) + { + item = items->data; + child = GTK_BIN (item)->child; + if (child) /* separators arn't labels, skip them */ + { + labeltext = g_object_get_data (G_OBJECT (item), "name"); + if (!labeltext) + labeltext = gtk_label_get_text (GTK_LABEL (child)); + if (!menu_streq (labeltext, name, 1)) + return item; + } else if (name == NULL) + { + return item; + } + items = items->next; + } + + return NULL; +} + +static GtkWidget * +menu_find_path (GtkWidget *menu, char *path) +{ + GtkMenuItem *item; + char *s; + char name[128]; + int len; + + /* grab the next part of the path */ + s = strchr (path, '/'); + len = s - path; + if (!s) + len = strlen (path); + len = MIN (len, sizeof (name) - 1); + memcpy (name, path, len); + name[len] = 0; + + item = menu_find_item (menu, name); + if (!item) + return NULL; + + menu = gtk_menu_item_get_submenu (item); + if (!menu) + return NULL; + + path += len; + if (*path == 0) + return menu; + + return menu_find_path (menu, path + 1); +} + +static GtkWidget * +menu_find (GtkWidget *menu, char *path, char *label) +{ + GtkWidget *item = NULL; + + if (path[0] != 0) + menu = menu_find_path (menu, path); + if (menu) + item = (GtkWidget *)menu_find_item (menu, label); + return item; +} + +static void +menu_foreach_gui (menu_entry *me, void (*callback) (GtkWidget *, menu_entry *, char *)) +{ + GSList *list = sess_list; + int tabdone = FALSE; + session *sess; + + if (!me->is_main) + return; /* not main menu */ + + while (list) + { + sess = list->data; + /* do it only once for tab sessions, since they share a GUI */ + if (!sess->gui->is_tab || !tabdone) + { + callback (sess->gui->menu, me, NULL); + if (sess->gui->is_tab) + tabdone = TRUE; + } + list = list->next; + } +} + +static void +menu_update_cb (GtkWidget *menu, menu_entry *me, char *target) +{ + GtkWidget *item; + + item = menu_find (menu, me->path, me->label); + if (item) + { + gtk_widget_set_sensitive (item, me->enable); + /* must do it without triggering the callback */ + if (GTK_IS_CHECK_MENU_ITEM (item)) + GTK_CHECK_MENU_ITEM (item)->active = me->state; + } +} + +/* radio state changed via mouse click */ +static void +menu_radio_cb (GtkCheckMenuItem *item, menu_entry *me) +{ + me->state = 0; + if (item->active) + me->state = 1; + + /* update the state, incase this was changed via right-click. */ + /* This will update all other windows and menu bars */ + menu_foreach_gui (me, menu_update_cb); + + if (me->state && me->cmd) + handle_command (current_sess, me->cmd, FALSE); +} + +/* toggle state changed via mouse click */ +static void +menu_toggle_cb (GtkCheckMenuItem *item, menu_entry *me) +{ + me->state = 0; + if (item->active) + me->state = 1; + + /* update the state, incase this was changed via right-click. */ + /* This will update all other windows and menu bars */ + menu_foreach_gui (me, menu_update_cb); + + if (me->state) + handle_command (current_sess, me->cmd, FALSE); + else + handle_command (current_sess, me->ucmd, FALSE); +} + +static GtkWidget * +menu_radio_item (char *label, GtkWidget *menu, void *callback, void *userdata, + int state, char *groupname) +{ + GtkWidget *item; + GtkMenuItem *parent; + GSList *grouplist = NULL; + + parent = menu_find_item (menu, groupname); + if (parent) + grouplist = gtk_radio_menu_item_get_group ((GtkRadioMenuItem *)parent); + + item = gtk_radio_menu_item_new_with_label (grouplist, label); + gtk_check_menu_item_set_active ((GtkCheckMenuItem*)item, state); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (callback), userdata); + gtk_widget_show (item); + + return item; +} + +static void +menu_reorder (GtkMenu *menu, GtkWidget *item, int pos) +{ + if (pos == 0xffff) /* outbound.c uses this default */ + return; + + if (pos < 0) /* position offset from end/bottom */ + gtk_menu_reorder_child (menu, item, (g_list_length (GTK_MENU_SHELL (menu)->children) + pos) - 1); + else + gtk_menu_reorder_child (menu, item, pos); +} + +static GtkWidget * +menu_add_radio (GtkWidget *menu, menu_entry *me) +{ + GtkWidget *item = NULL; + char *path = me->path + me->root_offset; + + if (path[0] != 0) + menu = menu_find_path (menu, path); + if (menu) + { + item = menu_radio_item (me->label, menu, menu_radio_cb, me, me->state, me->group); + menu_reorder (GTK_MENU (menu), item, me->pos); + } + return item; +} + +static GtkWidget * +menu_add_toggle (GtkWidget *menu, menu_entry *me) +{ + GtkWidget *item = NULL; + char *path = me->path + me->root_offset; + + if (path[0] != 0) + menu = menu_find_path (menu, path); + if (menu) + { + item = menu_toggle_item (me->label, menu, menu_toggle_cb, me, me->state); + menu_reorder (GTK_MENU (menu), item, me->pos); + } + return item; +} + +static GtkWidget * +menu_add_item (GtkWidget *menu, menu_entry *me, char *target) +{ + GtkWidget *item = NULL; + char *path = me->path + me->root_offset; + + if (path[0] != 0) + menu = menu_find_path (menu, path); + if (menu) + { + item = menu_quick_item (me->cmd, me->label, menu, me->markup ? XCMENU_MARKUP|XCMENU_MNEMONIC : XCMENU_MNEMONIC, target, me->icon); + menu_reorder (GTK_MENU (menu), item, me->pos); + } + return item; +} + +static GtkWidget * +menu_add_sub (GtkWidget *menu, menu_entry *me) +{ + GtkWidget *item = NULL; + char *path = me->path + me->root_offset; + int pos; + + if (path[0] != 0) + menu = menu_find_path (menu, path); + if (menu) + { + pos = me->pos; + if (pos < 0) /* position offset from end/bottom */ + pos = g_list_length (GTK_MENU_SHELL (menu)->children) + pos; + menu_quick_sub (me->label, menu, &item, me->markup ? XCMENU_MARKUP|XCMENU_MNEMONIC : XCMENU_MNEMONIC, pos); + } + return item; +} + +static void +menu_del_cb (GtkWidget *menu, menu_entry *me, char *target) +{ + GtkWidget *item = menu_find (menu, me->path + me->root_offset, me->label); + if (item) + gtk_widget_destroy (item); +} + +static void +menu_add_cb (GtkWidget *menu, menu_entry *me, char *target) +{ + GtkWidget *item; + GtkAccelGroup *accel_group; + + if (me->group) /* have a group name? Must be a radio item */ + item = menu_add_radio (menu, me); + else if (me->ucmd) /* have unselect-cmd? Must be a toggle item */ + item = menu_add_toggle (menu, me); + else if (me->cmd || !me->label) /* label=NULL for separators */ + item = menu_add_item (menu, me, target); + else + item = menu_add_sub (menu, me); + + if (item) + { + gtk_widget_set_sensitive (item, me->enable); + if (me->key) + { + accel_group = g_object_get_data (G_OBJECT (menu), "accel"); + if (accel_group) /* popup menus don't have them */ + gtk_widget_add_accelerator (item, "activate", accel_group, me->key, + me->modifier, GTK_ACCEL_VISIBLE); + } + } +} + +char * +fe_menu_add (menu_entry *me) +{ + char *text; + + menu_foreach_gui (me, menu_add_cb); + + if (!me->markup) + return NULL; + + if (!pango_parse_markup (me->label, -1, 0, NULL, &text, NULL, NULL)) + return NULL; + + /* return the label with markup stripped */ + return text; +} + +void +fe_menu_del (menu_entry *me) +{ + menu_foreach_gui (me, menu_del_cb); +} + +void +fe_menu_update (menu_entry *me) +{ + menu_foreach_gui (me, menu_update_cb); +} + +/* used to add custom menus to the right-click menu */ + +static void +menu_add_plugin_mainmenu_items (GtkWidget *menu) +{ + GSList *list; + menu_entry *me; + + list = menu_list; /* outbound.c */ + while (list) + { + me = list->data; + if (me->is_main) + menu_add_cb (menu, me, NULL); + list = list->next; + } +} + +void +menu_add_plugin_items (GtkWidget *menu, char *root, char *target) +{ + GSList *list; + menu_entry *me; + + list = menu_list; /* outbound.c */ + while (list) + { + me = list->data; + if (!me->is_main && !strncmp (me->path, root + 1, root[0])) + menu_add_cb (menu, me, target); + list = list->next; + } +} + +/* === END STUFF FOR /MENU === */ + +GtkWidget * +menu_create_main (void *accel_group, int bar, int away, int toplevel, + GtkWidget **menu_widgets) +{ + int i = 0; + GtkWidget *item; + GtkWidget *menu = 0; + GtkWidget *menu_item = 0; + GtkWidget *menu_bar; + GtkWidget *usermenu = 0; + GtkWidget *submenu = 0; + int close_mask = GDK_CONTROL_MASK; + int away_mask = GDK_MOD1_MASK; + char *key_theme = NULL; + GtkSettings *settings; + GSList *group = NULL; + + if (bar) + menu_bar = gtk_menu_bar_new (); + else + menu_bar = gtk_menu_new (); + + /* /MENU needs to know this later */ + g_object_set_data (G_OBJECT (menu_bar), "accel", accel_group); + +#if GTK_CHECK_VERSION(2,4,0) + g_signal_connect (G_OBJECT (menu_bar), "can-activate-accel", + G_CALLBACK (menu_canacaccel), 0); +#endif + + /* set the initial state of toggles */ + mymenu[MENUBAR_OFFSET].state = !prefs.hidemenu; + mymenu[MENUBAR_OFFSET+1].state = prefs.topicbar; + mymenu[MENUBAR_OFFSET+2].state = !prefs.hideuserlist; + mymenu[MENUBAR_OFFSET+3].state = prefs.userlistbuttons; + mymenu[MENUBAR_OFFSET+4].state = prefs.chanmodebuttons; + + mymenu[AWAY_OFFSET].state = away; + + switch (prefs.tab_layout) + { + case 0: + mymenu[TABS_OFFSET].state = 1; + mymenu[TABS_OFFSET+1].state = 0; + break; + default: + mymenu[TABS_OFFSET].state = 0; + mymenu[TABS_OFFSET+1].state = 1; + } + + mymenu[METRE_OFFSET].state = 0; + mymenu[METRE_OFFSET+1].state = 0; + mymenu[METRE_OFFSET+2].state = 0; + mymenu[METRE_OFFSET+3].state = 0; + switch (prefs.lagometer) + { + case 0: + mymenu[METRE_OFFSET].state = 1; + break; + case 1: + mymenu[METRE_OFFSET+1].state = 1; + break; + case 2: + mymenu[METRE_OFFSET+2].state = 1; + break; + default: + mymenu[METRE_OFFSET+3].state = 1; + } + + /* change Close binding to ctrl-shift-w when using emacs keys */ + settings = gtk_widget_get_settings (menu_bar); + if (settings) + { + g_object_get (settings, "gtk-key-theme-name", &key_theme, NULL); + if (key_theme) + { + if (!strcasecmp (key_theme, "Emacs")) + { + close_mask = GDK_SHIFT_MASK | GDK_CONTROL_MASK; + mymenu[SEARCH_OFFSET].key = 0; + } + g_free (key_theme); + } + } + + /* Away binding to ctrl-alt-a if the _Help menu conflicts (FR/PT/IT) */ + { + char *help = _("_Help"); + char *under = strchr (help, '_'); + if (under && (under[1] == 'a' || under[1] == 'A')) + away_mask = GDK_MOD1_MASK | GDK_CONTROL_MASK; + } + + if (!toplevel) + { + mymenu[DETACH_OFFSET].text = N_("_Detach"); + mymenu[CLOSE_OFFSET].text = N_("_Close"); + } + else + { + mymenu[DETACH_OFFSET].text = N_("_Attach"); + mymenu[CLOSE_OFFSET].text = N_("_Close"); + } + + while (1) + { + item = NULL; + if (mymenu[i].id == MENU_ID_USERMENU && !prefs.gui_usermenu) + { + i++; + continue; + } + + switch (mymenu[i].type) + { + case M_NEWMENU: + if (menu) + gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_item), menu); + item = menu = gtk_menu_new (); + if (mymenu[i].id == MENU_ID_USERMENU) + usermenu = menu; + menu_item = gtk_menu_item_new_with_mnemonic (_(mymenu[i].text)); + /* record the English name for /menu */ + g_object_set_data (G_OBJECT (menu_item), "name", mymenu[i].text); + gtk_menu_shell_append (GTK_MENU_SHELL (menu_bar), menu_item); + gtk_widget_show (menu_item); + break; + + case M_MENUPIX: + item = create_icon_menu (_(mymenu[i].text), mymenu[i].image, FALSE); + goto normalitem; + + case M_MENUSTOCK: + item = create_icon_menu (_(mymenu[i].text), mymenu[i].image, TRUE); + goto normalitem; + + case M_MENUITEM: + item = gtk_menu_item_new_with_mnemonic (_(mymenu[i].text)); +normalitem: + if (mymenu[i].key != 0) + gtk_widget_add_accelerator (item, "activate", accel_group, + mymenu[i].key, + mymenu[i].key == GDK_F1 ? 0 : + mymenu[i].key == GDK_w ? close_mask : + GDK_CONTROL_MASK, + GTK_ACCEL_VISIBLE); + if (mymenu[i].callback) + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (mymenu[i].callback), 0); + if (submenu) + gtk_menu_shell_append (GTK_MENU_SHELL (submenu), item); + else + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + gtk_widget_show (item); + break; + + case M_MENUTOG: + item = gtk_check_menu_item_new_with_mnemonic (_(mymenu[i].text)); +togitem: + /* must avoid callback for Radio buttons */ + GTK_CHECK_MENU_ITEM (item)->active = mymenu[i].state; + /*gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), + mymenu[i].state);*/ + if (mymenu[i].key != 0) + gtk_widget_add_accelerator (item, "activate", accel_group, + mymenu[i].key, mymenu[i].id == MENU_ID_AWAY ? + away_mask : GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); + if (mymenu[i].callback) + g_signal_connect (G_OBJECT (item), "toggled", + G_CALLBACK (mymenu[i].callback), 0); + if (submenu) + gtk_menu_shell_append (GTK_MENU_SHELL (submenu), item); + else + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + gtk_widget_show (item); + gtk_widget_set_sensitive (item, mymenu[i].sensitive); + break; + + case M_MENURADIO: + item = gtk_radio_menu_item_new_with_mnemonic (group, _(mymenu[i].text)); + group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (item)); + goto togitem; + + case M_SEP: + item = gtk_menu_item_new (); + gtk_widget_set_sensitive (item, FALSE); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + gtk_widget_show (item); + break; + + case M_MENUSUB: + group = NULL; + submenu = gtk_menu_new (); + item = create_icon_menu (_(mymenu[i].text), mymenu[i].image, TRUE); + /* record the English name for /menu */ + g_object_set_data (G_OBJECT (item), "name", mymenu[i].text); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), submenu); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + gtk_widget_show (item); + break; + + /*case M_END:*/ default: + if (!submenu) + { + if (menu) + { + gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_item), menu); + menu_add_plugin_mainmenu_items (menu_bar); + } + if (usermenu) + usermenu_create (usermenu); + return (menu_bar); + } + submenu = NULL; + } + + /* record this GtkWidget * so it's state might be changed later */ + if (mymenu[i].id != 0 && menu_widgets) + /* this ends up in sess->gui->menu_item[MENU_ID_XXX] */ + menu_widgets[mymenu[i].id] = item; + + i++; + } +} diff --git a/xchat-2.8.8/src/fe-gtk/menu.h b/xchat-2.8.8/src/fe-gtk/menu.h new file mode 100644 index 0000000..7fef79c --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/menu.h @@ -0,0 +1,41 @@ +GtkWidget *menu_create_main (void *accel_group, int bar, int away, int toplevel, GtkWidget **menu_widgets); +void menu_urlmenu (GdkEventButton * event, char *url); +void menu_chanmenu (session *sess, GdkEventButton * event, char *chan); +void menu_addfavoritemenu (server *serv, GtkWidget *menu, char *channel); +void menu_nickmenu (session *sess, GdkEventButton * event, char *nick, int num_sel); +void menu_middlemenu (session *sess, GdkEventButton *event); +void userlist_button_cb (GtkWidget * button, char *cmd); +void nick_command_parse (session *sess, char *cmd, char *nick, char *allnick); +void usermenu_update (void); +GtkWidget *menu_toggle_item (char *label, GtkWidget *menu, void *callback, void *userdata, int state); +GtkWidget *menu_quick_item (char *cmd, char *label, GtkWidget * menu, int flags, gpointer userdata, char *icon); +GtkWidget *menu_quick_sub (char *name, GtkWidget *menu, GtkWidget **sub_item_ret, int flags, int pos); +GtkWidget *create_icon_menu (char *labeltext, void *stock_name, int is_stock); +void menu_create (GtkWidget *menu, GSList *list, char *target, int check_path); +void menu_bar_toggle (void); +void menu_add_plugin_items (GtkWidget *menu, char *root, char *target); +void menu_change_layout (void); + +/* for menu_quick functions */ +#define XCMENU_DOLIST 1 +#define XCMENU_SHADED 1 +#define XCMENU_MARKUP 2 +#define XCMENU_MNEMONIC 4 + +/* menu items we keep a GtkWidget* for (to change their state) */ +#define MENU_ID_AWAY 1 +#define MENU_ID_MENUBAR 2 +#define MENU_ID_TOPICBAR 3 +#define MENU_ID_USERLIST 4 +#define MENU_ID_ULBUTTONS 5 +#define MENU_ID_MODEBUTTONS 6 +#define MENU_ID_LAYOUT_TABS 7 +#define MENU_ID_LAYOUT_TREE 8 +#define MENU_ID_DISCONNECT 9 +#define MENU_ID_RECONNECT 10 +#define MENU_ID_JOIN 11 +#define MENU_ID_USERMENU 12 + +#if (MENU_ID_NUM < MENU_ID_USERMENU) +#error MENU_ID_NUM is set wrong +#endif diff --git a/xchat-2.8.8/src/fe-gtk/mmx_cmod.S b/xchat-2.8.8/src/fe-gtk/mmx_cmod.S new file mode 100644 index 0000000..12e866d --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/mmx_cmod.S @@ -0,0 +1,530 @@ +/* + * Copyright (C) 1997-2001, Michael Jennings + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies of the Software, its documentation and marketing & publicity + * materials, and acknowledgment shall be given in the documentation, materials + * and software packages that this Software was used. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* MMX routines for tinting XImages written by Willem Monsuwe <willem@stack.nl> */ + +/* Function calling conventions: + * shade_ximage_xx(void *data, int bpl, int w, int h, int rm, int gm, int bm); + */ + +#define data 8(%ebp) +#define bpl 12(%ebp) +#define w 16(%ebp) +#define h 20(%ebp) +#define rm 24(%ebp) +#define gm 28(%ebp) +#define bm 32(%ebp) + +#ifdef UNDERSCORE_SYMBOLS /* need this to link with msvc */ +#define SHADE_XIMAGE_15 _shade_ximage_15_mmx +#define SHADE_XIMAGE_16 _shade_ximage_16_mmx +#define SHADE_XIMAGE_32 _shade_ximage_32_mmx +#define HAVE_MMX _have_mmx +#else +#define SHADE_XIMAGE_15 shade_ximage_15_mmx +#define SHADE_XIMAGE_16 shade_ximage_16_mmx +#define SHADE_XIMAGE_32 shade_ximage_32_mmx +#define HAVE_MMX have_mmx +#endif + +.globl SHADE_XIMAGE_15 +.globl SHADE_XIMAGE_16 +.globl SHADE_XIMAGE_32 +.globl HAVE_MMX + +.bss +.text +.align 8 + +#define ENTER \ + pushl %ebp ;\ + movl %esp, %ebp ;\ + pushl %ebx ;\ + pushl %ecx ;\ + pushl %edx ;\ + pushl %edi ;\ + pushl %esi ;\ + movl data, %esi ;\ + movl w, %ebx ;\ + movl h, %edx + +#define LEAVE \ +4: ;\ + emms ;\ + popl %esi ;\ + popl %edi ;\ + popl %edx ;\ + popl %ecx ;\ + popl %ebx ;\ + movl %ebp, %esp ;\ + popl %ebp ;\ + ret + + +SHADE_XIMAGE_15: + ENTER + + leal -6(%esi, %ebx, 2), %esi + negl %ebx + jz 5f + + /* Setup multipliers */ + movd rm, %mm5 + movd gm, %mm6 + movd bm, %mm7 + punpcklwd %mm5, %mm5 /* 00 00 00 00 rm rm rm rm */ + punpcklwd %mm6, %mm6 /* 00 00 00 00 gm gm gm gm */ + punpcklwd %mm7, %mm7 /* 00 00 00 00 bm bm bm bm */ + punpckldq %mm5, %mm5 /* rm rm rm rm rm rm rm rm */ + punpckldq %mm6, %mm6 /* gm gm gm gm gm gm gm gm */ + punpckldq %mm7, %mm7 /* bm bm bm bm bm bm bm bm */ + + cmpl $256, rm + jg shade_ximage_15_mmx_saturate + cmpl $256, gm + jg shade_ximage_15_mmx_saturate + cmpl $256, bm + jg shade_ximage_15_mmx_saturate + +1: movl %ebx, %ecx + addl $3, %ecx + jns 3f +2: + movq (%esi, %ecx, 2), %mm0 + + movq %mm0, %mm1 /* rg gb */ + movq %mm0, %mm2 /* rg gb */ + psrlw $5, %mm1 /* 0r rg */ + psrlw $10, %mm0 /* 00 0r */ + psllw $11, %mm2 /* b0 00 */ + psllw $11, %mm1 /* g0 00 */ + psllw $8, %mm0 /* 0r 00 */ + psrlw $3, %mm1 /* 0g 00 */ + psrlw $3, %mm2 /* 0b 00 */ + + pmulhw %mm5, %mm0 /* 00 0r */ + pmulhw %mm6, %mm1 /* 00 0g */ + pmulhw %mm7, %mm2 /* 00 0b */ + + psllw $10, %mm0 /* r0 00 */ + psllw $5, %mm1 /* 0g g0 */ + por %mm2, %mm0 /* r0 0b */ + por %mm1, %mm0 /* rg gb */ + + movq %mm0, (%esi, %ecx, 2) + + addl $4, %ecx + js 2b + jmp 4f +3: + movw (%esi, %ecx, 2), %ax + movd %eax, %mm0 + + movq %mm0, %mm1 /* rg gb */ + movq %mm0, %mm2 /* rg gb */ + psrlw $5, %mm1 /* 0r rg */ + psrlw $10, %mm0 /* 00 0r */ + psllw $11, %mm2 /* b0 00 */ + psllw $11, %mm1 /* g0 00 */ + psllw $8, %mm0 /* 0r 00 */ + psrlw $3, %mm1 /* 0g 00 */ + psrlw $3, %mm2 /* 0b 00 */ + + pmulhw %mm5, %mm0 /* 00 0r */ + pmulhw %mm6, %mm1 /* 00 0g */ + pmulhw %mm7, %mm2 /* 00 0b */ + + psllw $10, %mm0 /* r0 00 */ + psllw $5, %mm1 /* 0g g0 */ + por %mm2, %mm0 /* r0 0b */ + por %mm1, %mm0 /* rg gb */ + + movd %mm0, %eax + movw %ax, (%esi, %ecx, 2) + + incl %ecx +4: + cmpl $2, %ecx + jng 3b + + addl bpl, %esi + decl %edx + jnz 1b +5: + LEAVE + + +shade_ximage_15_mmx_saturate: + + pcmpeqw %mm3, %mm3 + psllw $5, %mm3 /* ff e0 ff e0 ff e0 ff e0 */ + +1: movl %ebx, %ecx + addl $3, %ecx + jns 3f +2: + movq (%esi, %ecx, 2), %mm0 + + movq %mm0, %mm1 /* rg gb */ + movq %mm0, %mm2 /* rg gb */ + psrlw $5, %mm1 /* 0r rg */ + psrlw $10, %mm0 /* 00 0r */ + psllw $11, %mm2 /* b0 00 */ + psllw $11, %mm1 /* g0 00 */ + psllw $8, %mm0 /* 0r 00 */ + psrlw $3, %mm1 /* 0g 00 */ + psrlw $3, %mm2 /* 0b 00 */ + + pmulhw %mm5, %mm0 /* xx xr */ + pmulhw %mm6, %mm1 /* xx xg */ + pmulhw %mm7, %mm2 /* xx xb */ + + /* Saturate upper */ + paddusw %mm3, %mm0 /* ff er */ + paddusw %mm3, %mm1 /* ff eg */ + paddusw %mm3, %mm2 /* ff eb */ + + psubw %mm3, %mm0 /* 00 0r */ + psubw %mm3, %mm1 /* 00 0g */ + psubw %mm3, %mm2 /* 00 0b */ + + psllw $10, %mm0 /* r0 00 */ + psllw $5, %mm1 /* 0g g0 */ + por %mm2, %mm0 /* r0 0b */ + por %mm1, %mm0 /* rg gb */ + + movq %mm0, (%esi, %ecx, 2) + + addl $4, %ecx + js 2b + jmp 4f +3: + movw (%esi, %ecx, 2), %ax + movd %eax, %mm0 + + movq %mm0, %mm1 /* rg gb */ + movq %mm0, %mm2 /* rg gb */ + psrlw $5, %mm1 /* 0r rg */ + psrlw $10, %mm0 /* 00 0r */ + psllw $11, %mm2 /* b0 00 */ + psllw $11, %mm1 /* g0 00 */ + psllw $8, %mm0 /* 0r 00 */ + psrlw $3, %mm1 /* 0g 00 */ + psrlw $3, %mm2 /* 0b 00 */ + + pmulhw %mm5, %mm0 /* xx xr */ + pmulhw %mm6, %mm1 /* xx xg */ + pmulhw %mm7, %mm2 /* xx xb */ + + /* Saturate upper */ + paddusw %mm3, %mm0 /* ff er */ + paddusw %mm3, %mm1 /* ff eg */ + paddusw %mm3, %mm2 /* ff eb */ + + psubw %mm3, %mm0 /* 00 0r */ + psubw %mm3, %mm1 /* 00 0g */ + psubw %mm3, %mm2 /* 00 0b */ + + psllw $10, %mm0 /* r0 00 */ + psllw $5, %mm1 /* 0g g0 */ + por %mm2, %mm0 /* r0 0b */ + por %mm1, %mm0 /* rg gb */ + + movd %mm0, %eax + movw %ax, (%esi, %ecx, 2) + + incl %ecx +4: + cmpl $2, %ecx + jng 3b + + addl bpl, %esi + decl %edx + jnz 1b +5: + LEAVE + + +SHADE_XIMAGE_16: + ENTER + + leal -6(%esi, %ebx, 2), %esi + negl %ebx + jz 5f + + /* Setup multipliers */ + movd rm, %mm5 + movd gm, %mm6 + movd bm, %mm7 + punpcklwd %mm5, %mm5 /* 00 00 00 00 rm rm rm rm */ + punpcklwd %mm6, %mm6 /* 00 00 00 00 gm gm gm gm */ + punpcklwd %mm7, %mm7 /* 00 00 00 00 bm bm bm bm */ + punpckldq %mm5, %mm5 /* rm rm rm rm rm rm rm rm */ + punpckldq %mm6, %mm6 /* gm gm gm gm gm gm gm gm */ + punpckldq %mm7, %mm7 /* bm bm bm bm bm bm bm bm */ + + cmpl $256, rm + jg shade_ximage_16_mmx_saturate + cmpl $256, gm + jg shade_ximage_16_mmx_saturate + cmpl $256, bm + jg shade_ximage_16_mmx_saturate + +1: movl %ebx, %ecx + addl $3, %ecx + jns 3f +2: + movq (%esi, %ecx, 2), %mm0 + + movq %mm0, %mm1 /* rg gb */ + movq %mm0, %mm2 /* rg gb */ + psrlw $5, %mm1 /* 0r rg */ + psrlw $11, %mm0 /* 00 0r */ + psllw $11, %mm2 /* b0 00 */ + psllw $10, %mm1 /* g0 00 */ + psllw $8, %mm0 /* 0r 00 */ + psrlw $2, %mm1 /* 0g 00 */ + psrlw $3, %mm2 /* 0b 00 */ + + pmulhw %mm5, %mm0 /* 00 0r */ + pmulhw %mm6, %mm1 /* 00 0g */ + pmulhw %mm7, %mm2 /* 00 0b */ + + psllw $11, %mm0 /* r0 00 */ + psllw $5, %mm1 /* 0g g0 */ + por %mm2, %mm0 /* r0 0b */ + por %mm1, %mm0 /* rg gb */ + + movq %mm0, (%esi, %ecx, 2) + + addl $4, %ecx + js 2b + jmp 4f +3: + movw (%esi, %ecx, 2), %ax + movd %eax, %mm0 + + movq %mm0, %mm1 /* rg gb */ + movq %mm0, %mm2 /* rg gb */ + psrlw $5, %mm1 /* 0r rg */ + psrlw $11, %mm0 /* 00 0r */ + psllw $11, %mm2 /* b0 00 */ + psllw $10, %mm1 /* g0 00 */ + psllw $8, %mm0 /* 0r 00 */ + psrlw $2, %mm1 /* 0g 00 */ + psrlw $3, %mm2 /* 0b 00 */ + + pmulhw %mm5, %mm0 /* 00 0r */ + pmulhw %mm6, %mm1 /* 00 0g */ + pmulhw %mm7, %mm2 /* 00 0b */ + + psllw $11, %mm0 /* r0 00 */ + psllw $5, %mm1 /* 0g g0 */ + por %mm2, %mm0 /* r0 0b */ + por %mm1, %mm0 /* rg gb */ + + movd %mm0, %eax + movw %ax, (%esi, %ecx, 2) + + incl %ecx +4: + cmpl $2, %ecx + jng 3b + + addl bpl, %esi + decl %edx + jnz 1b +5: + LEAVE + + +shade_ximage_16_mmx_saturate: + + pcmpeqw %mm3, %mm3 + movq %mm3, %mm4 + psllw $5, %mm3 /* ff e0 ff e0 ff e0 ff e0 */ + psllw $6, %mm4 /* ff c0 ff c0 ff c0 ff c0 */ + +1: movl %ebx, %ecx + addl $3, %ecx + jns 3f +2: + movq (%esi, %ecx, 2), %mm0 + + movq %mm0, %mm1 /* rg gb */ + movq %mm0, %mm2 /* rg gb */ + psrlw $5, %mm1 /* 0r rg */ + psrlw $11, %mm0 /* 00 0r */ + psllw $11, %mm2 /* b0 00 */ + psllw $10, %mm1 /* g0 00 */ + psllw $8, %mm0 /* 0r 00 */ + psrlw $2, %mm1 /* 0g 00 */ + psrlw $3, %mm2 /* 0b 00 */ + + pmulhw %mm5, %mm0 /* xx xr */ + pmulhw %mm6, %mm1 /* xx xg */ + pmulhw %mm7, %mm2 /* xx xb */ + + /* Saturate upper */ + paddusw %mm3, %mm0 /* ff er */ + paddusw %mm4, %mm1 /* ff cg */ + paddusw %mm3, %mm2 /* ff eb */ + + psubw %mm4, %mm1 /* 00 0g */ + psubw %mm3, %mm2 /* 00 0b */ + + psllw $11, %mm0 /* r0 00 */ + psllw $5, %mm1 /* 0g g0 */ + por %mm2, %mm0 /* r0 0b */ + por %mm1, %mm0 /* rg gb */ + + movq %mm0, (%esi, %ecx, 2) + + addl $4, %ecx + js 2b + jmp 4f +3: + movw (%esi, %ecx, 2), %ax + movd %eax, %mm0 + + movq %mm0, %mm1 /* rg gb */ + movq %mm0, %mm2 /* rg gb */ + psrlw $5, %mm1 /* 0r rg */ + psrlw $11, %mm0 /* 00 0r */ + psllw $11, %mm2 /* b0 00 */ + psllw $10, %mm1 /* g0 00 */ + psllw $8, %mm0 /* 0r 00 */ + psrlw $2, %mm1 /* 0g 00 */ + psrlw $3, %mm2 /* 0b 00 */ + + pmulhw %mm5, %mm0 /* xx xr */ + pmulhw %mm6, %mm1 /* xx xg */ + pmulhw %mm7, %mm2 /* xx xb */ + + /* Saturate upper */ + paddusw %mm3, %mm0 /* ff er */ + paddusw %mm4, %mm1 /* ff cg */ + paddusw %mm3, %mm2 /* ff eb */ + + psubw %mm4, %mm1 /* 00 0g */ + psubw %mm3, %mm2 /* 00 0b */ + + psllw $11, %mm0 /* r0 00 */ + psllw $5, %mm1 /* 0g g0 */ + por %mm2, %mm0 /* r0 0b */ + por %mm1, %mm0 /* rg gb */ + + movd %mm0, %eax + movw %ax, (%esi, %ecx, 2) + + incl %ecx +4: + cmpl $2, %ecx + jng 3b + + addl bpl, %esi + decl %edx + jnz 1b +5: + LEAVE + + +SHADE_XIMAGE_32: + ENTER + + leal (%esi, %ebx, 4), %esi + negl %ebx + jz 3f + + movd rm, %mm4 + movd gm, %mm5 + movd bm, %mm6 + psllq $32, %mm4 + psllq $16, %mm5 + por %mm6, %mm4 + por %mm5, %mm4 + + pcmpeqw %mm6, %mm6 + psllw $15, %mm6 /* 80 00 80 00 80 00 80 00 */ + movq %mm6, %mm5 + pmulhw %mm4, %mm5 /* Get correction factor */ +1: + movl %ebx, %ecx +2: + movd (%esi, %ecx, 4), %mm1 /* 00 rr gg bb */ + pxor %mm0, %mm0 + punpcklbw %mm1, %mm0 /* 00 00 rr 00 gg 00 bb 00 */ + pxor %mm6, %mm0 /* Flip sign */ + + pmulhw %mm4, %mm0 /* 00 00 xx rr xx gg xx bb */ + psubw %mm5, %mm0 /* Correct range */ + packuswb %mm0, %mm0 /* 00 rr gg bb 00 rr gg bb */ + + movd %mm0, (%esi, %ecx, 4) + + incl %ecx + jnz 2b + + addl bpl, %esi + decl %edx + jnz 1b +3: + LEAVE + + +HAVE_MMX: + push %ebx +/* Check if bit 21 in flags word is writeable */ + pushfl + popl %eax + movl %eax,%ebx + xorl $0x00200000, %eax + pushl %eax + popfl + pushfl + popl %eax + + cmpl %eax, %ebx + je 8f + +/* OK, we have CPUID */ + + movl $1, %eax + cpuid + + test $0x00800000, %edx + jz 8f + + movl $1, %eax /* success, have mmx */ + popl %ebx + ret + +8: + xorl %eax,%eax /* failed, no mmx */ + popl %ebx + ret + +#if defined(__GNUC__) && !defined(_WIN32) +.section .note.GNU-stack, "", @progbits +.previous +#endif diff --git a/xchat-2.8.8/src/fe-gtk/mmx_cmod.h b/xchat-2.8.8/src/fe-gtk/mmx_cmod.h new file mode 100644 index 0000000..52d0710 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/mmx_cmod.h @@ -0,0 +1,4 @@ +void shade_ximage_15_mmx(void *data, int bpl, int w, int h, int rm, int gm, int bm); +void shade_ximage_16_mmx(void *data, int bpl, int w, int h, int rm, int gm, int bm); +void shade_ximage_32_mmx(void *data, int bpl, int w, int h, int rm, int gm, int bm); +int have_mmx (void); diff --git a/xchat-2.8.8/src/fe-gtk/notifygui.c b/xchat-2.8.8/src/fe-gtk/notifygui.c new file mode 100644 index 0000000..5acb683 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/notifygui.c @@ -0,0 +1,442 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <fcntl.h> +#include <time.h> + +#include "fe-gtk.h" + +#include <gtk/gtkhbox.h> +#include <gtk/gtkstock.h> +#include <gtk/gtkhbbox.h> +#include <gtk/gtkscrolledwindow.h> + +#include <gtk/gtklabel.h> +#include <gtk/gtkliststore.h> +#include <gtk/gtkentry.h> +#include <gtk/gtkmessagedialog.h> +#include <gtk/gtktable.h> +#include <gtk/gtktreeview.h> +#include <gtk/gtktreeselection.h> +#include <gtk/gtkcellrenderertext.h> + +#include "../common/xchat.h" +#include "../common/notify.h" +#include "../common/cfgfiles.h" +#include "../common/fe.h" +#include "../common/server.h" +#include "../common/util.h" +#include "../common/userlist.h" +#include "gtkutil.h" +#include "maingui.h" +#include "palette.h" +#include "notifygui.h" + + +/* model for the notify treeview */ +enum +{ + USER_COLUMN, + STATUS_COLUMN, + SERVER_COLUMN, + SEEN_COLUMN, + COLOUR_COLUMN, + NPS_COLUMN, /* struct notify_per_server * */ + N_COLUMNS +}; + + +static GtkWidget *notify_window = 0; +static GtkWidget *notify_button_opendialog; +static GtkWidget *notify_button_remove; + + +static void +notify_closegui (void) +{ + notify_window = 0; +} + +/* Need this to be able to set the foreground colour property of a row + * from a GdkColor * in the model -Vince + */ +static void +notify_treecell_property_mapper (GtkTreeViewColumn *col, GtkCellRenderer *cell, + GtkTreeModel *model, GtkTreeIter *iter, + gpointer data) +{ + gchar *text; + GdkColor *colour; + int model_column = GPOINTER_TO_INT (data); + + gtk_tree_model_get (GTK_TREE_MODEL (model), iter, + COLOUR_COLUMN, &colour, + model_column, &text, -1); + g_object_set (G_OBJECT (cell), "text", text, NULL); + g_object_set (G_OBJECT (cell), "foreground-gdk", colour, NULL); + g_free (text); +} + +static void +notify_row_cb (GtkTreeSelection *sel, GtkTreeView *view) +{ + GtkTreeIter iter; + struct notify_per_server *servnot; + + if (gtkutil_treeview_get_selected (view, &iter, NPS_COLUMN, &servnot, -1)) + { + gtk_widget_set_sensitive (notify_button_opendialog, servnot ? servnot->ison : 0); + gtk_widget_set_sensitive (notify_button_remove, TRUE); + return; + } + + gtk_widget_set_sensitive (notify_button_opendialog, FALSE); + gtk_widget_set_sensitive (notify_button_remove, FALSE); +} + +static GtkWidget * +notify_treeview_new (GtkWidget *box) +{ + GtkListStore *store; + GtkWidget *view; + GtkTreeViewColumn *col; + int col_id; + + store = gtk_list_store_new (N_COLUMNS, + G_TYPE_STRING, + G_TYPE_STRING, + G_TYPE_STRING, + G_TYPE_STRING, + G_TYPE_POINTER, /* can't specify colour! */ + G_TYPE_POINTER + ); + g_return_val_if_fail (store != NULL, NULL); + + view = gtkutil_treeview_new (box, GTK_TREE_MODEL (store), + notify_treecell_property_mapper, + USER_COLUMN, _("Name"), + STATUS_COLUMN, _("Status"), + SERVER_COLUMN, _("Network"), + SEEN_COLUMN, _("Last Seen"), -1); + gtk_tree_view_column_set_expand (gtk_tree_view_get_column (GTK_TREE_VIEW (view), 0), TRUE); + + for (col_id=0; (col = gtk_tree_view_get_column (GTK_TREE_VIEW (view), col_id)); + col_id++) + gtk_tree_view_column_set_alignment (col, 0.5); + + g_signal_connect (G_OBJECT (gtk_tree_view_get_selection (GTK_TREE_VIEW (view))), + "changed", G_CALLBACK (notify_row_cb), view); + + gtk_widget_show (view); + return view; +} + +void +notify_gui_update (void) +{ + struct notify *notify; + struct notify_per_server *servnot; + GSList *list = notify_list; + GSList *slist; + gchar *name, *status, *server, *seen; + int online, servcount; + time_t lastseen; + char agobuf[128]; + + GtkListStore *store; + GtkTreeView *view; + GtkTreeIter iter; + gboolean valid; /* true if we don't need to append a new tree row */ + + if (!notify_window) + return; + + view = g_object_get_data (G_OBJECT (notify_window), "view"); + store = GTK_LIST_STORE (gtk_tree_view_get_model (view)); + valid = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter); + + while (list) + { + notify = (struct notify *) list->data; + name = notify->name; + status = _("Offline"); + server = ""; + + online = FALSE; + lastseen = 0; + /* First see if they're online on any servers */ + slist = notify->server_list; + while (slist) + { + servnot = (struct notify_per_server *) slist->data; + if (servnot->ison) + online = TRUE; + if (servnot->lastseen > lastseen) + lastseen = servnot->lastseen; + slist = slist->next; + } + + if (!online) /* Offline on all servers */ + { + if (!lastseen) + seen = _("Never"); + else + { + snprintf (agobuf, sizeof (agobuf), _("%d minutes ago"), (int)(time (0) - lastseen) / 60); + seen = agobuf; + } + if (!valid) /* create new tree row if required */ + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, 0, name, 1, status, + 2, server, 3, seen, 4, &colors[4], 5, NULL, -1); + if (valid) + valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter); + + } else + { + /* Online - add one line per server */ + servcount = 0; + slist = notify->server_list; + status = _("Online"); + while (slist) + { + servnot = (struct notify_per_server *) slist->data; + if (servnot->ison) + { + if (servcount > 0) + name = ""; + server = server_get_network (servnot->server, TRUE); + + snprintf (agobuf, sizeof (agobuf), _("%d minutes ago"), (int)(time (0) - lastseen) / 60); + seen = agobuf; + + if (!valid) /* create new tree row if required */ + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, 0, name, 1, status, + 2, server, 3, seen, 4, &colors[3], 5, servnot, -1); + if (valid) + valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter); + + servcount++; + } + slist = slist->next; + } + } + + list = list->next; + } + + while (valid) + { + GtkTreeIter old = iter; + /* get next iter now because removing invalidates old one */ + valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (store), + &iter); + gtk_list_store_remove (store, &old); + } +} + +static void +notify_opendialog_clicked (GtkWidget * igad) +{ + GtkTreeView *view; + GtkTreeIter iter; + struct notify_per_server *servnot; + + view = g_object_get_data (G_OBJECT (notify_window), "view"); + if (gtkutil_treeview_get_selected (view, &iter, NPS_COLUMN, &servnot, -1)) + { + if (servnot) + open_query (servnot->server, servnot->notify->name, TRUE); + } +} + +static void +notify_remove_clicked (GtkWidget * igad) +{ + GtkTreeView *view; + GtkTreeModel *model; + GtkTreeIter iter; + GtkTreePath *path = NULL; + gboolean found = FALSE; + char *name; + + view = g_object_get_data (G_OBJECT (notify_window), "view"); + if (gtkutil_treeview_get_selected (view, &iter, USER_COLUMN, &name, -1)) + { + model = gtk_tree_view_get_model (view); + found = (*name != 0); + while (!found) /* the real nick is some previous node */ + { + g_free (name); /* it's useless to us */ + if (!path) + path = gtk_tree_model_get_path (model, &iter); + if (!gtk_tree_path_prev (path)) /* arrgh! no previous node! */ + { + g_warning ("notify list state is invalid\n"); + break; + } + if (!gtk_tree_model_get_iter (model, &iter, path)) + break; + gtk_tree_model_get (model, &iter, USER_COLUMN, &name, -1); + found = (*name != 0); + } + if (path) + gtk_tree_path_free (path); + if (!found) + return; + + /* ok, now we can remove it */ + gtk_list_store_remove (GTK_LIST_STORE (model), &iter); + notify_deluser (name); + g_free (name); + } +} + +static void +notifygui_add_cb (GtkDialog *dialog, gint response, gpointer entry) +{ + char *networks; + char *text; + + text = GTK_ENTRY (entry)->text; + if (text[0] && response == GTK_RESPONSE_ACCEPT) + { + networks = GTK_ENTRY (g_object_get_data (G_OBJECT (entry), "net"))->text; + if (strcasecmp (networks, "ALL") == 0 || networks[0] == 0) + notify_adduser (text, NULL); + else + notify_adduser (text, networks); + } + + gtk_widget_destroy (GTK_WIDGET (dialog)); +} + +static void +notifygui_add_enter (GtkWidget *entry, GtkWidget *dialog) +{ + gtk_dialog_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT); +} + +void +fe_notify_ask (char *nick, char *networks) +{ + GtkWidget *dialog; + GtkWidget *entry; + GtkWidget *label; + GtkWidget *wid; + GtkWidget *table; + char *msg = _("Enter nickname to add:"); + char buf[256]; + + dialog = gtk_dialog_new_with_buttons (msg, NULL, 0, + GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, + GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, + NULL); + if (parent_window) + gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (parent_window)); + gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); + + table = gtk_table_new (2, 3, FALSE); + gtk_container_set_border_width (GTK_CONTAINER (table), 12); + gtk_table_set_row_spacings (GTK_TABLE (table), 3); + gtk_table_set_col_spacings (GTK_TABLE (table), 8); + gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), table); + + label = gtk_label_new (msg); + gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 0, 1); + + entry = gtk_entry_new (); + gtk_entry_set_text (GTK_ENTRY (entry), nick); + g_signal_connect (G_OBJECT (entry), "activate", + G_CALLBACK (notifygui_add_enter), dialog); + gtk_table_attach_defaults (GTK_TABLE (table), entry, 1, 2, 0, 1); + + g_signal_connect (G_OBJECT (dialog), "response", + G_CALLBACK (notifygui_add_cb), entry); + + label = gtk_label_new (_("Notify on these networks:")); + gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 2, 3); + + wid = gtk_entry_new (); + g_object_set_data (G_OBJECT (entry), "net", wid); + g_signal_connect (G_OBJECT (wid), "activate", + G_CALLBACK (notifygui_add_enter), dialog); + gtk_entry_set_text (GTK_ENTRY (wid), networks ? networks : "ALL"); + gtk_table_attach_defaults (GTK_TABLE (table), wid, 1, 2, 2, 3); + + label = gtk_label_new (NULL); + snprintf (buf, sizeof (buf), "<i><span size=\"smaller\">%s</span></i>", _("Comma separated list of networks is accepted.")); + gtk_label_set_markup (GTK_LABEL (label), buf); + gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 3, 4); + + gtk_widget_show_all (dialog); +} + +static void +notify_add_clicked (GtkWidget * igad) +{ + fe_notify_ask ("", NULL); +} + +void +notify_opengui (void) +{ + GtkWidget *vbox, *bbox; + GtkWidget *view; + + if (notify_window) + { + mg_bring_tofront (notify_window); + return; + } + + notify_window = + mg_create_generic_tab ("Notify", _("XChat: Friends List"), FALSE, TRUE, + notify_closegui, NULL, 400, 250, &vbox, 0); + + view = notify_treeview_new (vbox); + g_object_set_data (G_OBJECT (notify_window), "view", view); + + bbox = gtk_hbutton_box_new (); + gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_SPREAD); + gtk_container_set_border_width (GTK_CONTAINER (bbox), 5); + gtk_box_pack_end (GTK_BOX (vbox), bbox, 0, 0, 0); + gtk_widget_show (bbox); + + gtkutil_button (bbox, GTK_STOCK_NEW, 0, notify_add_clicked, 0, + _("Add...")); + + notify_button_remove = + gtkutil_button (bbox, GTK_STOCK_DELETE, 0, notify_remove_clicked, 0, + _("Remove")); + + notify_button_opendialog = + gtkutil_button (bbox, NULL, 0, notify_opendialog_clicked, 0, + _("Open Dialog")); + + gtk_widget_set_sensitive (notify_button_opendialog, FALSE); + gtk_widget_set_sensitive (notify_button_remove, FALSE); + + notify_gui_update (); + + gtk_widget_show (notify_window); +} diff --git a/xchat-2.8.8/src/fe-gtk/notifygui.h b/xchat-2.8.8/src/fe-gtk/notifygui.h new file mode 100644 index 0000000..360834d --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/notifygui.h @@ -0,0 +1,2 @@ +void notify_gui_update (void); +void notify_opengui (void); diff --git a/xchat-2.8.8/src/fe-gtk/palette.c b/xchat-2.8.8/src/fe-gtk/palette.c new file mode 100644 index 0000000..ebae92f --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/palette.c @@ -0,0 +1,226 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> + +#include "fe-gtk.h" +#include "palette.h" + +#include "../common/xchat.h" +#include "../common/util.h" +#include "../common/cfgfiles.h" + + +GdkColor colors[] = { + /* colors for xtext */ + {0, 0xcccc, 0xcccc, 0xcccc}, /* 16 white */ + {0, 0x0000, 0x0000, 0x0000}, /* 17 black */ + {0, 0x35c2, 0x35c2, 0xb332}, /* 18 blue */ + {0, 0x2a3d, 0x8ccc, 0x2a3d}, /* 19 green */ + {0, 0xc3c3, 0x3b3b, 0x3b3b}, /* 20 red */ + {0, 0xc7c7, 0x3232, 0x3232}, /* 21 light red */ + {0, 0x8000, 0x2666, 0x7fff}, /* 22 purple */ + {0, 0x6666, 0x3636, 0x1f1f}, /* 23 orange */ + {0, 0xd999, 0xa6d3, 0x4147}, /* 24 yellow */ + {0, 0x3d70, 0xcccc, 0x3d70}, /* 25 green */ + {0, 0x199a, 0x5555, 0x5555}, /* 26 aqua */ + {0, 0x2eef, 0x8ccc, 0x74df}, /* 27 light aqua */ + {0, 0x451e, 0x451e, 0xe666}, /* 28 blue */ + {0, 0xb0b0, 0x3737, 0xb0b0}, /* 29 light purple */ + {0, 0x4c4c, 0x4c4c, 0x4c4c}, /* 30 grey */ + {0, 0x9595, 0x9595, 0x9595}, /* 31 light grey */ + + {0, 0xcccc, 0xcccc, 0xcccc}, /* 16 white */ + {0, 0x0000, 0x0000, 0x0000}, /* 17 black */ + {0, 0x35c2, 0x35c2, 0xb332}, /* 18 blue */ + {0, 0x2a3d, 0x8ccc, 0x2a3d}, /* 19 green */ + {0, 0xc3c3, 0x3b3b, 0x3b3b}, /* 20 red */ + {0, 0xc7c7, 0x3232, 0x3232}, /* 21 light red */ + {0, 0x8000, 0x2666, 0x7fff}, /* 22 purple */ + {0, 0x6666, 0x3636, 0x1f1f}, /* 23 orange */ + {0, 0xd999, 0xa6d3, 0x4147}, /* 24 yellow */ + {0, 0x3d70, 0xcccc, 0x3d70}, /* 25 green */ + {0, 0x199a, 0x5555, 0x5555}, /* 26 aqua */ + {0, 0x2eef, 0x8ccc, 0x74df}, /* 27 light aqua */ + {0, 0x451e, 0x451e, 0xe666}, /* 28 blue */ + {0, 0xb0b0, 0x3737, 0xb0b0}, /* 29 light purple */ + {0, 0x4c4c, 0x4c4c, 0x4c4c}, /* 30 grey */ + {0, 0x9595, 0x9595, 0x9595}, /* 31 light grey */ + + {0, 0xffff, 0xffff, 0xffff}, /* 32 marktext Fore (white) */ + {0, 0x3535, 0x6e6e, 0xc1c1}, /* 33 marktext Back (blue) */ + {0, 0x0000, 0x0000, 0x0000}, /* 34 foreground (black) */ + {0, 0xf0f0, 0xf0f0, 0xf0f0}, /* 35 background (white) */ + {0, 0xcccc, 0x1010, 0x1010}, /* 36 marker line (red) */ + + /* colors for GUI */ + {0, 0x9999, 0x0000, 0x0000}, /* 37 tab New Data (dark red) */ + {0, 0x0000, 0x0000, 0xffff}, /* 38 tab Nick Mentioned (blue) */ + {0, 0xffff, 0x0000, 0x0000}, /* 39 tab New Message (red) */ + {0, 0x9595, 0x9595, 0x9595}, /* 40 away user (grey) */ +}; +#define MAX_COL 40 + + +void +palette_alloc (GtkWidget * widget) +{ + int i; + static int done_alloc = FALSE; + GdkColormap *cmap; + + if (!done_alloc) /* don't do it again */ + { + done_alloc = TRUE; + cmap = gtk_widget_get_colormap (widget); + for (i = MAX_COL; i >= 0; i--) + gdk_colormap_alloc_color (cmap, &colors[i], FALSE, TRUE); + } +} + +/* maps XChat 2.0.x colors to current */ +static const int remap[] = +{ + 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, + 33, /* 16:marktextback */ + 32, /* 17:marktextfore */ + 34, /* 18: fg */ + 35, /* 19: bg */ + 37, /* 20: newdata */ + 38, /* 21: blue */ + 39, /* 22: newmsg */ + 40 /* 23: away */ +}; + +void +palette_load (void) +{ + int i, j, l, fh, res; + char prefname[256]; + struct stat st; + char *cfg; + int red, green, blue; + int upgrade = FALSE; + + fh = xchat_open_file ("colors.conf", O_RDONLY, 0, 0); + if (fh == -1) + { + fh = xchat_open_file ("palette.conf", O_RDONLY, 0, 0); + upgrade = TRUE; + } + + if (fh != -1) + { + fstat (fh, &st); + cfg = malloc (st.st_size + 1); + if (cfg) + { + cfg[0] = '\0'; + l = read (fh, cfg, st.st_size); + if (l >= 0) + cfg[l] = '\0'; + + if (!upgrade) + { + /* mIRC colors 0-31 are here */ + for (i = 0; i < 32; i++) + { + snprintf (prefname, sizeof prefname, "color_%d", i); + cfg_get_color (cfg, prefname, &red, &green, &blue); + colors[i].red = red; + colors[i].green = green; + colors[i].blue = blue; + } + + /* our special colors are mapped at 256+ */ + for (i = 256, j = 32; j < MAX_COL+1; i++, j++) + { + snprintf (prefname, sizeof prefname, "color_%d", i); + cfg_get_color (cfg, prefname, &red, &green, &blue); + colors[j].red = red; + colors[j].green = green; + colors[j].blue = blue; + } + + } else + { + /* loading 2.0.x palette.conf */ + for (i = 0; i < MAX_COL+1; i++) + { + snprintf (prefname, sizeof prefname, "color_%d_red", i); + red = cfg_get_int (cfg, prefname); + + snprintf (prefname, sizeof prefname, "color_%d_grn", i); + green = cfg_get_int (cfg, prefname); + + snprintf (prefname, sizeof prefname, "color_%d_blu", i); + blue = cfg_get_int_with_result (cfg, prefname, &res); + + if (res) + { + colors[remap[i]].red = red; + colors[remap[i]].green = green; + colors[remap[i]].blue = blue; + } + } + + /* copy 0-15 to 16-31 */ + for (i = 0; i < 16; i++) + { + colors[i+16].red = colors[i].red; + colors[i+16].green = colors[i].green; + colors[i+16].blue = colors[i].blue; + } + } + free (cfg); + } + close (fh); + } +} + +void +palette_save (void) +{ + int i, j, fh; + char prefname[256]; + + fh = xchat_open_file ("colors.conf", O_TRUNC | O_WRONLY | O_CREAT, 0600, XOF_DOMODE); + if (fh != -1) + { + /* mIRC colors 0-31 are here */ + for (i = 0; i < 32; i++) + { + snprintf (prefname, sizeof prefname, "color_%d", i); + cfg_put_color (fh, colors[i].red, colors[i].green, colors[i].blue, prefname); + } + + /* our special colors are mapped at 256+ */ + for (i = 256, j = 32; j < MAX_COL+1; i++, j++) + { + snprintf (prefname, sizeof prefname, "color_%d", i); + cfg_put_color (fh, colors[j].red, colors[j].green, colors[j].blue, prefname); + } + + close (fh); + } +} diff --git a/xchat-2.8.8/src/fe-gtk/palette.h b/xchat-2.8.8/src/fe-gtk/palette.h new file mode 100644 index 0000000..c97693b --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/palette.h @@ -0,0 +1,15 @@ +extern GdkColor colors[]; + +#define COL_MARK_FG 32 +#define COL_MARK_BG 33 +#define COL_FG 34 +#define COL_BG 35 +#define COL_MARKER 36 +#define COL_NEW_DATA 37 +#define COL_HILIGHT 38 +#define COL_NEW_MSG 39 +#define COL_AWAY 40 + +void palette_alloc (GtkWidget * widget); +void palette_load (void); +void palette_save (void); diff --git a/xchat-2.8.8/src/fe-gtk/pixmaps.c b/xchat-2.8.8/src/fe-gtk/pixmaps.c new file mode 100644 index 0000000..3d85c3b --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/pixmaps.c @@ -0,0 +1,123 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> + +#include "fe-gtk.h" +#include "../common/xchat.h" +#include "../common/fe.h" + +#include <gdk-pixbuf/gdk-pixbuf.h> +#include <gdk-pixbuf/gdk-pixdata.h> +#include <gtk/gtkstock.h> + +#include "../pixmaps/inline_pngs.h" + +GdkPixbuf *pix_xchat; +GdkPixbuf *pix_book; + +GdkPixbuf *pix_purple; +GdkPixbuf *pix_red; +GdkPixbuf *pix_op; +GdkPixbuf *pix_hop; +GdkPixbuf *pix_voice; + +GdkPixbuf *pix_tray_msg; +GdkPixbuf *pix_tray_hilight; +GdkPixbuf *pix_tray_file; + +GdkPixbuf *pix_channel; +GdkPixbuf *pix_dialog; +GdkPixbuf *pix_server; +GdkPixbuf *pix_util; + + +static GdkPixmap * +pixmap_load_from_file_real (char *file) +{ + GdkPixbuf *img; + GdkPixmap *pixmap; + + img = gdk_pixbuf_new_from_file (file, 0); + if (!img) + return NULL; + gdk_pixbuf_render_pixmap_and_mask (img, &pixmap, NULL, 128); + gdk_pixbuf_unref (img); + + return pixmap; +} + +GdkPixmap * +pixmap_load_from_file (char *filename) +{ + char buf[256]; + GdkPixmap *pix; + + if (filename[0] == '\0') + return NULL; + + pix = pixmap_load_from_file_real (filename); + if (pix == NULL) + { + strcpy (buf, "Cannot open:\n\n"); + strncpy (buf + 14, filename, sizeof (buf) - 14); + buf[sizeof (buf) - 1] = 0; + fe_message (buf, FE_MSG_ERROR); + } + + return pix; +} + +#define LOADPIX(vv,pp,ff) \ + vv = gdk_pixbuf_new_from_file (XCHATSHAREDIR"/xchat/"ff, 0); \ + if (!vv) \ + vv = gdk_pixbuf_new_from_inline (-1, pp, FALSE, 0); + +#define LOADPIX_DISKONLY(vv,ff) \ + vv = gdk_pixbuf_new_from_file (XCHATSHAREDIR"/xchat/"ff, 0); + +#define EXT ".png" + +void +pixmaps_init (void) +{ + pix_book = gdk_pixbuf_new_from_inline (-1, bookpng, FALSE, 0); + + /* used in About window, tray icon and WindowManager icon. */ + LOADPIX (pix_xchat, xchatpng, "xchat"EXT); + + /* userlist icons, with inlined defaults */ + LOADPIX (pix_hop, hoppng, "hop"EXT); + LOADPIX (pix_purple, purplepng, "purple"EXT); + LOADPIX (pix_red, redpng, "red"EXT); + LOADPIX (pix_op, oppng, "op"EXT); + LOADPIX (pix_voice, voicepng, "voice"EXT); + + /* tray icons, with inlined defaults */ + LOADPIX (pix_tray_msg, traymsgpng, "message"EXT); + LOADPIX (pix_tray_hilight, trayhilightpng, "highlight"EXT); + LOADPIX (pix_tray_file, trayfilepng, "fileoffer"EXT); + + /* treeview icons, no defaults, load from disk only */ + LOADPIX_DISKONLY (pix_channel, "channel"EXT); + LOADPIX_DISKONLY (pix_dialog, "dialog"EXT); + LOADPIX_DISKONLY (pix_server, "server"EXT); + LOADPIX_DISKONLY (pix_util, "util"EXT); +} diff --git a/xchat-2.8.8/src/fe-gtk/pixmaps.h b/xchat-2.8.8/src/fe-gtk/pixmaps.h new file mode 100644 index 0000000..91b9696 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/pixmaps.h @@ -0,0 +1,19 @@ +extern GdkPixbuf *pix_book; +extern GdkPixbuf *pix_hop; +extern GdkPixbuf *pix_purple; +extern GdkPixbuf *pix_red; +extern GdkPixbuf *pix_op; +extern GdkPixbuf *pix_voice; +extern GdkPixbuf *pix_xchat; + +extern GdkPixbuf *pix_tray_msg; +extern GdkPixbuf *pix_tray_hilight; +extern GdkPixbuf *pix_tray_file; + +extern GdkPixbuf *pix_channel; +extern GdkPixbuf *pix_dialog; +extern GdkPixbuf *pix_server; +extern GdkPixbuf *pix_util; + +extern GdkPixmap *pixmap_load_from_file (char *file); +extern void pixmaps_init (void); diff --git a/xchat-2.8.8/src/fe-gtk/plugin-tray.c b/xchat-2.8.8/src/fe-gtk/plugin-tray.c new file mode 100644 index 0000000..923a2dd --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/plugin-tray.c @@ -0,0 +1,853 @@ +/* Copyright (C) 2006-2007 Peter Zelezny. */ + +#include <string.h> +#include <unistd.h> +#include "../common/xchat-plugin.h" +#include "../common/xchat.h" +#include "../common/xchatc.h" +#include "../common/inbound.h" +#include "../common/server.h" +#include "../common/fe.h" +#include "../common/util.h" +#include "fe-gtk.h" +#include "pixmaps.h" +#include "maingui.h" +#include "menu.h" +#include <gtk/gtk.h> + +#define LIBNOTIFY + +typedef enum /* current icon status */ +{ + TS_NONE, + TS_MESSAGE, + TS_HIGHLIGHT, + TS_FILEOFFER, + TS_CUSTOM /* plugin */ +} TrayStatus; + +typedef enum +{ + WS_FOCUSED, + WS_NORMAL, + WS_HIDDEN +} WinStatus; + +typedef GdkPixbuf* TrayIcon; +#define tray_icon_from_file(f) gdk_pixbuf_new_from_file(f,NULL) +#define tray_icon_free(i) g_object_unref(i) + +#define ICON_NORMAL pix_xchat +#define ICON_MSG pix_tray_msg +#define ICON_HILIGHT pix_tray_hilight +#define ICON_FILE pix_tray_file +#define TIMEOUT 500 + +static GtkStatusIcon *sticon; +static gint flash_tag; +static TrayStatus tray_status; +static xchat_plugin *ph; + +static TrayIcon custom_icon1; +static TrayIcon custom_icon2; + +static int tray_priv_count = 0; +static int tray_pub_count = 0; +static int tray_hilight_count = 0; +static int tray_file_count = 0; + + +void tray_apply_setup (void); + + +static WinStatus +tray_get_window_status (void) +{ + const char *st; + + st = xchat_get_info (ph, "win_status"); + + if (!st) + return WS_HIDDEN; + + if (!strcmp (st, "active")) + return WS_FOCUSED; + + if (!strcmp (st, "hidden")) + return WS_HIDDEN; + + return WS_NORMAL; +} + +static int +tray_count_channels (void) +{ + int cons = 0; + GSList *list; + session *sess; + + for (list = sess_list; list; list = list->next) + { + sess = list->data; + if (sess->server->connected && sess->channel[0] && + sess->type == SESS_CHANNEL) + cons++; + } + return cons; +} + +static int +tray_count_networks (void) +{ + int cons = 0; + GSList *list; + + for (list = serv_list; list; list = list->next) + { + if (((server *)list->data)->connected) + cons++; + } + return cons; +} + +void +fe_tray_set_tooltip (const char *text) +{ + if (sticon) + gtk_status_icon_set_tooltip (sticon, text); +} + +#ifdef LIBNOTIFY + +/* dynamic access to libnotify.so */ + +static void *nn_mod = NULL; +/* prototypes */ +static gboolean (*nn_init) (char *); +static void (*nn_uninit) (void); +static void *(*nn_new_with_status_icon) (const gchar *summary, const gchar *message, const gchar *icon, GtkStatusIcon *status_icon); +static void *(*nn_new) (const gchar *summary, const gchar *message, const gchar *icon, GtkWidget *attach); +static gboolean (*nn_show) (void *noti, GError **error); +static void (*nn_set_timeout) (void *noti, gint timeout); + +static void +libnotify_cleanup (void) +{ + if (nn_mod) + { + nn_uninit (); + g_module_close (nn_mod); + nn_mod = NULL; + } +} + +static gboolean +libnotify_notify_new (const char *title, const char *text, GtkStatusIcon *icon) +{ + void *noti; + + if (!nn_mod) + { + nn_mod = g_module_open ("libnotify", G_MODULE_BIND_LAZY); + if (!nn_mod) + { + nn_mod = g_module_open ("libnotify.so.1", G_MODULE_BIND_LAZY); + if (!nn_mod) + return FALSE; + } + + if (!g_module_symbol (nn_mod, "notify_init", (gpointer)&nn_init)) + goto bad; + if (!g_module_symbol (nn_mod, "notify_uninit", (gpointer)&nn_uninit)) + goto bad; + if (!g_module_symbol (nn_mod, "notify_notification_new_with_status_icon", (gpointer)&nn_new_with_status_icon)) + goto bad; + if (!g_module_symbol (nn_mod, "notify_notification_new", (gpointer)&nn_new)) + goto bad; + if (!g_module_symbol (nn_mod, "notify_notification_show", (gpointer)&nn_show)) + goto bad; + if (!g_module_symbol (nn_mod, "notify_notification_set_timeout", (gpointer)&nn_set_timeout)) + goto bad; + if (!nn_init (PACKAGE_NAME)) + goto bad; + } + + text = strip_color (text, -1, STRIP_ALL|STRIP_ESCMARKUP); + title = strip_color (title, -1, STRIP_ALL); + noti = nn_new (title, text, XCHATSHAREDIR"/pixmaps/xchat.png", NULL); + g_free ((char *)title); + g_free ((char *)text); + + nn_set_timeout (noti, prefs.input_balloon_time*1000); + nn_show (noti, NULL); + g_object_unref (G_OBJECT (noti)); + + return TRUE; + +bad: + g_module_close (nn_mod); + nn_mod = NULL; + return FALSE; +} + +#endif + +void +fe_tray_set_balloon (const char *title, const char *text) +{ +#ifndef WIN32 + const char *argv[8]; + const char *path; + char time[16]; + WinStatus ws; + + /* no balloons if the window is focused */ + ws = tray_get_window_status (); + if (ws == WS_FOCUSED) + return; + + /* bit 1 of flags means "no balloons unless hidden/iconified" */ + if (ws != WS_HIDDEN && (prefs.gui_tray_flags & 2)) + return; + + /* FIXME: this should close the current balloon */ + if (!text) + return; + +#ifdef LIBNOTIFY + /* try it via libnotify.so */ + if (libnotify_notify_new (title, text, sticon)) + return; /* success */ +#endif + + /* try it the crude way */ + path = g_find_program_in_path ("notify-send"); + if (path) + { + sprintf(time, "%d000",prefs.input_balloon_time); + argv[0] = path; + argv[1] = "-i"; + argv[2] = "gtk-dialog-info"; + if (access (XCHATSHAREDIR"/pixmaps/xchat.png", R_OK) == 0) + argv[2] = XCHATSHAREDIR"/pixmaps/xchat.png"; + argv[3] = "-t"; + argv[4] = time; + argv[5] = title; + text = strip_color (text, -1, STRIP_ALL|STRIP_ESCMARKUP); + argv[6] = text; + argv[7] = NULL; + xchat_execv (argv); + g_free ((char *)path); + g_free ((char *)text); + } + else + { + /* show this error only once */ + static unsigned char said_it = FALSE; + if (!said_it) + { + said_it = TRUE; + fe_message (_("Cannot find 'notify-send' to open balloon alerts.\nPlease install libnotify."), FE_MSG_ERROR); + } + } +#endif +} + +static void +tray_set_balloonf (const char *text, const char *format, ...) +{ + va_list args; + char *buf; + + va_start (args, format); + buf = g_strdup_vprintf (format, args); + va_end (args); + + fe_tray_set_balloon (buf, text); + g_free (buf); +} + +static void +tray_set_tipf (const char *format, ...) +{ + va_list args; + char *buf; + + va_start (args, format); + buf = g_strdup_vprintf (format, args); + va_end (args); + + fe_tray_set_tooltip (buf); + g_free (buf); +} + +static void +tray_stop_flash (void) +{ + int nets, chans; + + if (flash_tag) + { + g_source_remove (flash_tag); + flash_tag = 0; + } + + if (sticon) + { + gtk_status_icon_set_from_pixbuf (sticon, ICON_NORMAL); + nets = tray_count_networks (); + chans = tray_count_channels (); + if (nets) + tray_set_tipf (_("XChat: Connected to %u networks and %u channels"), + nets, chans); + else + tray_set_tipf ("XChat: %s", _("Not connected.")); + } + + if (custom_icon1) + { + tray_icon_free (custom_icon1); + custom_icon1 = NULL; + } + + if (custom_icon2) + { + tray_icon_free (custom_icon2); + custom_icon2 = NULL; + } + + tray_status = TS_NONE; +} + +static void +tray_reset_counts (void) +{ + tray_priv_count = 0; + tray_pub_count = 0; + tray_hilight_count = 0; + tray_file_count = 0; +} + +static int +tray_timeout_cb (TrayIcon icon) +{ + if (custom_icon1) + { + if (gtk_status_icon_get_pixbuf (sticon) == custom_icon1) + { + if (custom_icon2) + gtk_status_icon_set_from_pixbuf (sticon, custom_icon2); + else + gtk_status_icon_set_from_pixbuf (sticon, ICON_NORMAL); + } + else + { + gtk_status_icon_set_from_pixbuf (sticon, custom_icon1); + } + } + else + { + if (gtk_status_icon_get_pixbuf (sticon) == ICON_NORMAL) + gtk_status_icon_set_from_pixbuf (sticon, icon); + else + gtk_status_icon_set_from_pixbuf (sticon, ICON_NORMAL); + } + return 1; +} + +static void +tray_set_flash (TrayIcon icon) +{ + if (!sticon) + return; + + /* already flashing the same icon */ + if (flash_tag && gtk_status_icon_get_pixbuf (sticon) == icon) + return; + + /* no flashing if window is focused */ + if (tray_get_window_status () == WS_FOCUSED) + return; + + tray_stop_flash (); + + gtk_status_icon_set_from_pixbuf (sticon, icon); + flash_tag = g_timeout_add (TIMEOUT, (GSourceFunc) tray_timeout_cb, icon); +} + +void +fe_tray_set_flash (const char *filename1, const char *filename2, int tout) +{ + tray_apply_setup (); + if (!sticon) + return; + + tray_stop_flash (); + + if (tout == -1) + tout = TIMEOUT; + + custom_icon1 = tray_icon_from_file (filename1); + if (filename2) + custom_icon2 = tray_icon_from_file (filename2); + + gtk_status_icon_set_from_pixbuf (sticon, custom_icon1); + flash_tag = g_timeout_add (tout, (GSourceFunc) tray_timeout_cb, NULL); + tray_status = TS_CUSTOM; +} + +void +fe_tray_set_icon (feicon icon) +{ + tray_apply_setup (); + if (!sticon) + return; + + tray_stop_flash (); + + switch (icon) + { + case FE_ICON_NORMAL: + break; + case FE_ICON_MESSAGE: + tray_set_flash (ICON_MSG); + break; + case FE_ICON_HIGHLIGHT: + case FE_ICON_PRIVMSG: + tray_set_flash (ICON_HILIGHT); + break; + case FE_ICON_FILEOFFER: + tray_set_flash (ICON_FILE); + } +} + +void +fe_tray_set_file (const char *filename) +{ + tray_apply_setup (); + if (!sticon) + return; + + tray_stop_flash (); + + if (filename) + { + custom_icon1 = tray_icon_from_file (filename); + gtk_status_icon_set_from_pixbuf (sticon, custom_icon1); + tray_status = TS_CUSTOM; + } +} + +gboolean +tray_toggle_visibility (gboolean force_hide) +{ + static int x, y; + static GdkScreen *screen; + GtkWindow *win; + + if (!sticon) + return FALSE; + + /* ph may have an invalid context now */ + xchat_set_context (ph, xchat_find_context (ph, NULL, NULL)); + + win = (GtkWindow *)xchat_get_info (ph, "win_ptr"); + + tray_stop_flash (); + tray_reset_counts (); + + if (!win) + return FALSE; + +#if GTK_CHECK_VERSION(2,20,0) + if (force_hide || gtk_widget_get_visible (win)) +#else + if (force_hide || GTK_WIDGET_VISIBLE (win)) +#endif + { + gtk_window_get_position (win, &x, &y); + screen = gtk_window_get_screen (win); + gtk_widget_hide (GTK_WIDGET (win)); + } + else + { + gtk_window_set_screen (win, screen); + gtk_window_move (win, x, y); + gtk_widget_show (GTK_WIDGET (win)); + gtk_window_present (win); + } + + return TRUE; +} + +static void +tray_menu_restore_cb (GtkWidget *item, gpointer userdata) +{ + tray_toggle_visibility (FALSE); +} + +static void +tray_menu_quit_cb (GtkWidget *item, gpointer userdata) +{ + mg_open_quit_dialog (FALSE); +} + +/* returns 0-mixed 1-away 2-back */ + +static int +tray_find_away_status (void) +{ + GSList *list; + server *serv; + int away = 0; + int back = 0; + + for (list = serv_list; list; list = list->next) + { + serv = list->data; + + if (serv->is_away || serv->reconnect_away) + away++; + else + back++; + } + + if (away && back) + return 0; + + if (away) + return 1; + + return 2; +} + +static void +tray_foreach_server (GtkWidget *item, char *cmd) +{ + GSList *list; + server *serv; + + for (list = serv_list; list; list = list->next) + { + serv = list->data; + if (serv->connected) + handle_command (serv->server_session, cmd, FALSE); + } +} + +static GtkWidget * +tray_make_item (GtkWidget *menu, char *label, void *callback, void *userdata) +{ + GtkWidget *item; + + if (label) + item = gtk_menu_item_new_with_mnemonic (label); + else + item = gtk_menu_item_new (); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (callback), userdata); + gtk_widget_show (item); + + return item; +} + +static void +tray_toggle_cb (GtkCheckMenuItem *item, unsigned int *setting) +{ + *setting = item->active; +} + +static void +blink_item (unsigned int *setting, GtkWidget *menu, char *label) +{ + menu_toggle_item (label, menu, tray_toggle_cb, setting, *setting); +} + +static void +tray_menu_destroy (GtkWidget *menu, gpointer userdata) +{ + gtk_widget_destroy (menu); + g_object_unref (menu); +} + +static void +tray_menu_cb (GtkWidget *widget, guint button, guint time, gpointer userdata) +{ + GtkWidget *menu; + GtkWidget *submenu; + GtkWidget *item; + int away_status; + + /* ph may have an invalid context now */ + xchat_set_context (ph, xchat_find_context (ph, NULL, NULL)); + + menu = gtk_menu_new (); + /*gtk_menu_set_screen (GTK_MENU (menu), gtk_widget_get_screen (widget));*/ + + if (tray_get_window_status () == WS_HIDDEN) + tray_make_item (menu, _("_Restore"), tray_menu_restore_cb, NULL); + else + tray_make_item (menu, _("_Hide"), tray_menu_restore_cb, NULL); + tray_make_item (menu, NULL, tray_menu_quit_cb, NULL); + + submenu = mg_submenu (menu, _("_Blink on")); + blink_item (&prefs.input_tray_chans, submenu, _("Channel Message")); + blink_item (&prefs.input_tray_priv, submenu, _("Private Message")); + blink_item (&prefs.input_tray_hilight, submenu, _("Highlighted Message")); + /*blink_item (BIT_FILEOFFER, submenu, _("File Offer"));*/ + + submenu = mg_submenu (menu, _("_Change status")); + away_status = tray_find_away_status (); + item = tray_make_item (submenu, _("_Away"), tray_foreach_server, "away"); + if (away_status == 1) + gtk_widget_set_sensitive (item, FALSE); + item = tray_make_item (submenu, _("_Back"), tray_foreach_server, "back"); + if (away_status == 2) + gtk_widget_set_sensitive (item, FALSE); + + tray_make_item (menu, NULL, tray_menu_quit_cb, NULL); + mg_create_icon_item (_("_Quit"), GTK_STOCK_QUIT, menu, tray_menu_quit_cb, NULL); + + menu_add_plugin_items (menu, "\x5$TRAY", NULL); + + g_object_ref (menu); + g_object_ref_sink (menu); + g_object_unref (menu); + g_signal_connect (G_OBJECT (menu), "selection-done", + G_CALLBACK (tray_menu_destroy), NULL); + + gtk_menu_popup (GTK_MENU (menu), NULL, NULL, gtk_status_icon_position_menu, + userdata, button, time); +} + +static void +tray_init (void) +{ + flash_tag = 0; + tray_status = TS_NONE; + custom_icon1 = NULL; + custom_icon2 = NULL; + + sticon = gtk_status_icon_new_from_pixbuf (ICON_NORMAL); + if (!sticon) + return; + g_signal_connect (G_OBJECT (sticon), "popup-menu", + G_CALLBACK (tray_menu_cb), sticon); + g_signal_connect (G_OBJECT (sticon), "activate", + G_CALLBACK (tray_menu_restore_cb), NULL); +} + +static int +tray_hilight_cb (char *word[], void *userdata) +{ + /*if (tray_status == TS_HIGHLIGHT) + return XCHAT_EAT_NONE;*/ + + if (prefs.input_tray_hilight) + { + tray_set_flash (ICON_HILIGHT); + + /* FIXME: hides any previous private messages */ + tray_hilight_count++; + if (tray_hilight_count == 1) + tray_set_tipf (_("XChat: Highlighted message from: %s (%s)"), + word[1], xchat_get_info (ph, "channel")); + else + tray_set_tipf (_("XChat: %u highlighted messages, latest from: %s (%s)"), + tray_hilight_count, word[1], xchat_get_info (ph, "channel")); + } + + if (prefs.input_balloon_hilight) + tray_set_balloonf (word[2], _("XChat: Highlighted message from: %s (%s)"), + word[1], xchat_get_info (ph, "channel")); + + return XCHAT_EAT_NONE; +} + +static int +tray_message_cb (char *word[], void *userdata) +{ + if (/*tray_status == TS_MESSAGE ||*/ tray_status == TS_HIGHLIGHT) + return XCHAT_EAT_NONE; + + if (prefs.input_tray_chans) + { + tray_set_flash (ICON_MSG); + + tray_pub_count++; + if (tray_pub_count == 1) + tray_set_tipf (_("XChat: New public message from: %s (%s)"), + word[1], xchat_get_info (ph, "channel")); + else + tray_set_tipf (_("XChat: %u new public messages."), tray_pub_count); + } + + if (prefs.input_balloon_chans) + tray_set_balloonf (word[2], _("XChat: New public message from: %s (%s)"), + word[1], xchat_get_info (ph, "channel")); + + return XCHAT_EAT_NONE; +} + +static void +tray_priv (char *from, char *text) +{ + const char *network; + + if (alert_match_word (from, prefs.irc_no_hilight)) + return; + + tray_set_flash (ICON_HILIGHT); + + network = xchat_get_info (ph, "network"); + if (!network) + network = xchat_get_info (ph, "server"); + + tray_priv_count++; + if (tray_priv_count == 1) + tray_set_tipf (_("XChat: Private message from: %s (%s)"), + from, network); + else + tray_set_tipf (_("XChat: %u private messages, latest from: %s (%s)"), + tray_priv_count, from, network); + + if (prefs.input_balloon_priv) + tray_set_balloonf (text, _("XChat: Private message from: %s (%s)"), + from, network); +} + +static int +tray_priv_cb (char *word[], void *userdata) +{ + /*if (tray_status == TS_HIGHLIGHT) + return XCHAT_EAT_NONE;*/ + + if (prefs.input_tray_priv) + tray_priv (word[1], word[2]); + + return XCHAT_EAT_NONE; +} + +static int +tray_invited_cb (char *word[], void *userdata) +{ + /*if (tray_status == TS_HIGHLIGHT) + return XCHAT_EAT_NONE;*/ + + if (prefs.input_tray_priv) + tray_priv (word[2], "Invited"); + + return XCHAT_EAT_NONE; +} + +static int +tray_dcc_cb (char *word[], void *userdata) +{ + const char *network; + +/* if (tray_status == TS_FILEOFFER) + return XCHAT_EAT_NONE;*/ + + network = xchat_get_info (ph, "network"); + if (!network) + network = xchat_get_info (ph, "server"); + + if (prefs.input_tray_priv) + { + tray_set_flash (ICON_FILE); + + tray_file_count++; + if (tray_file_count == 1) + tray_set_tipf (_("XChat: File offer from: %s (%s)"), + word[1], network); + else + tray_set_tipf (_("XChat: %u file offers, latest from: %s (%s)"), + tray_file_count, word[1], network); + } + + if (prefs.input_balloon_priv) + tray_set_balloonf ("", _("XChat: File offer from: %s (%s)"), + word[1], network); + + return XCHAT_EAT_NONE; +} + +static int +tray_focus_cb (char *word[], void *userdata) +{ + tray_stop_flash (); + tray_reset_counts (); + return XCHAT_EAT_NONE; +} + +static void +tray_cleanup (void) +{ + tray_stop_flash (); + + if (sticon) + { + g_object_unref ((GObject *)sticon); + sticon = NULL; + } +} + +void +tray_apply_setup (void) +{ + if (sticon) + { + if (!prefs.gui_tray) + tray_cleanup (); + } + else + { + if (prefs.gui_tray) + tray_init (); + } +} + +int +tray_plugin_init (xchat_plugin *plugin_handle, char **plugin_name, + char **plugin_desc, char **plugin_version, char *arg) +{ + /* we need to save this for use with any xchat_* functions */ + ph = plugin_handle; + + *plugin_name = ""; + *plugin_desc = ""; + *plugin_version = ""; + + xchat_hook_print (ph, "Channel Msg Hilight", -1, tray_hilight_cb, NULL); + xchat_hook_print (ph, "Channel Action Hilight", -1, tray_hilight_cb, NULL); + + xchat_hook_print (ph, "Channel Message", -1, tray_message_cb, NULL); + xchat_hook_print (ph, "Channel Action", -1, tray_message_cb, NULL); + xchat_hook_print (ph, "Channel Notice", -1, tray_message_cb, NULL); + + xchat_hook_print (ph, "Private Message", -1, tray_priv_cb, NULL); + xchat_hook_print (ph, "Private Message to Dialog", -1, tray_priv_cb, NULL); + xchat_hook_print (ph, "Notice", -1, tray_priv_cb, NULL); + xchat_hook_print (ph, "Invited", -1, tray_invited_cb, NULL); + + xchat_hook_print (ph, "DCC Offer", -1, tray_dcc_cb, NULL); + + xchat_hook_print (ph, "Focus Window", -1, tray_focus_cb, NULL); + + if (prefs.gui_tray) + tray_init (); + + return 1; /* return 1 for success */ +} + +int +tray_plugin_deinit (xchat_plugin *plugin_handle) +{ +#ifdef WIN32 + tray_cleanup (); +#elif defined(LIBNOTIFY) + libnotify_cleanup (); +#endif + return 1; +} diff --git a/xchat-2.8.8/src/fe-gtk/plugin-tray.h b/xchat-2.8.8/src/fe-gtk/plugin-tray.h new file mode 100644 index 0000000..d54be5a --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/plugin-tray.h @@ -0,0 +1,4 @@ +int tray_plugin_init (void *, char **, char **, char **, char *); +int tray_plugin_deinit (void *); +gboolean tray_toggle_visibility (gboolean force_hide); +void tray_apply_setup (void); diff --git a/xchat-2.8.8/src/fe-gtk/plugingui.c b/xchat-2.8.8/src/fe-gtk/plugingui.c new file mode 100644 index 0000000..de59e64 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/plugingui.c @@ -0,0 +1,239 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <string.h> +#include <stdio.h> +#include <stdlib.h> + +#include "fe-gtk.h" + +#include <gtk/gtkdialog.h> +#include <gtk/gtkstock.h> +#include <gtk/gtkbox.h> +#include <gtk/gtkscrolledwindow.h> + +#include <gtk/gtkliststore.h> +#include <gtk/gtktreeview.h> +#include <gtk/gtktreeselection.h> +#include <gtk/gtkcellrenderertext.h> + +#include "../common/xchat.h" +#define PLUGIN_C +typedef struct session xchat_context; +#include "../common/xchat-plugin.h" +#include "../common/plugin.h" +#include "../common/util.h" +#include "../common/outbound.h" +#include "../common/fe.h" +#include "../common/xchatc.h" +#include "gtkutil.h" + +/* model for the plugin treeview */ +enum +{ + NAME_COLUMN, + VERSION_COLUMN, + FILE_COLUMN, + DESC_COLUMN, + N_COLUMNS +}; + +static GtkWidget *plugin_window = NULL; + + +static GtkWidget * +plugingui_treeview_new (GtkWidget *box) +{ + GtkListStore *store; + GtkWidget *view; + GtkTreeViewColumn *col; + int col_id; + + store = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING); + g_return_val_if_fail (store != NULL, NULL); + view = gtkutil_treeview_new (box, GTK_TREE_MODEL (store), NULL, + NAME_COLUMN, _("Name"), + VERSION_COLUMN, _("Version"), + FILE_COLUMN, _("File"), + DESC_COLUMN, _("Description"), -1); + gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (view), TRUE); + for (col_id=0; (col = gtk_tree_view_get_column (GTK_TREE_VIEW (view), col_id)); + col_id++) + gtk_tree_view_column_set_alignment (col, 0.5); + + gtk_widget_show (view); + return view; +} + +static void +plugingui_close_button (GtkWidget * wid, gpointer a) +{ + gtk_widget_destroy (plugin_window); +} + +static void +plugingui_close (GtkWidget * wid, gpointer a) +{ + plugin_window = NULL; +} + +extern GSList *plugin_list; + +void +fe_pluginlist_update (void) +{ + xchat_plugin *pl; + GSList *list; + GtkTreeView *view; + GtkListStore *store; + GtkTreeIter iter; + + if (!plugin_window) + return; + + view = g_object_get_data (G_OBJECT (plugin_window), "view"); + store = GTK_LIST_STORE (gtk_tree_view_get_model (view)); + gtk_list_store_clear (store); + + list = plugin_list; + while (list) + { + pl = list->data; + if (pl->version[0] != 0) + { + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, NAME_COLUMN, pl->name, + VERSION_COLUMN, pl->version, + FILE_COLUMN, file_part (pl->filename), + DESC_COLUMN, pl->desc, -1); + } + list = list->next; + } +} + +static void +plugingui_load_cb (session *sess, char *file) +{ + if (file) + { + char *buf = malloc (strlen (file) + 9); + + if (strchr (file, ' ')) + sprintf (buf, "LOAD \"%s\"", file); + else + sprintf (buf, "LOAD %s", file); + handle_command (sess, buf, FALSE); + free (buf); + } +} + +void +plugingui_load (void) +{ + gtkutil_file_req (_("Select a Plugin or Script to load"), plugingui_load_cb, + current_sess, NULL, FRF_ADDFOLDER); +} + +static void +plugingui_loadbutton_cb (GtkWidget * wid, gpointer unused) +{ + plugingui_load (); +} + +static void +plugingui_unload (GtkWidget * wid, gpointer unused) +{ + int len; + char *modname, *file, *buf; + GtkTreeView *view; + GtkTreeIter iter; + + view = g_object_get_data (G_OBJECT (plugin_window), "view"); + if (!gtkutil_treeview_get_selected (view, &iter, NAME_COLUMN, &modname, + FILE_COLUMN, &file, -1)) + return; + + len = strlen (file); +#ifdef WIN32 + if (len > 4 && strcasecmp (file + len - 4, ".dll") == 0) +#else +#if defined(__hpux) + if (len > 3 && strcasecmp (file + len - 3, ".sl") == 0) +#else + if (len > 3 && strcasecmp (file + len - 3, ".so") == 0) +#endif +#endif + { + if (plugin_kill (modname, FALSE) == 2) + fe_message (_("That plugin is refusing to unload.\n"), FE_MSG_ERROR); + } else + { + /* let python.so or perl.so handle it */ + buf = malloc (strlen (file) + 10); + if (strchr (file, ' ')) + sprintf (buf, "UNLOAD \"%s\"", file); + else + sprintf (buf, "UNLOAD %s", file); + handle_command (current_sess, buf, FALSE); + free (buf); + } + + g_free (modname); + g_free (file); +} + +void +plugingui_open (void) +{ + GtkWidget *view; + GtkWidget *vbox, *action_area; + + if (plugin_window) + { + gtk_window_present (GTK_WINDOW (plugin_window)); + return; + } + + plugin_window = gtk_dialog_new (); + g_signal_connect (G_OBJECT (plugin_window), "destroy", + G_CALLBACK (plugingui_close), 0); + gtk_window_set_default_size (GTK_WINDOW (plugin_window), 500, 250); + vbox = GTK_DIALOG (plugin_window)->vbox; + action_area = GTK_DIALOG (plugin_window)->action_area; + gtk_container_set_border_width (GTK_CONTAINER (vbox), 4); + gtk_window_set_position (GTK_WINDOW (plugin_window), GTK_WIN_POS_CENTER); + gtk_window_set_title (GTK_WINDOW (plugin_window), _("XChat: Plugins and Scripts")); + + view = plugingui_treeview_new (vbox); + g_object_set_data (G_OBJECT (plugin_window), "view", view); + + gtkutil_button (action_area, GTK_STOCK_REVERT_TO_SAVED, NULL, + plugingui_loadbutton_cb, NULL, _("_Load...")); + + gtkutil_button (action_area, GTK_STOCK_DELETE, NULL, + plugingui_unload, NULL, _("_UnLoad")); + + gtkutil_button (action_area, + GTK_STOCK_CLOSE, NULL, plugingui_close_button, + NULL, _("_Close")); + + fe_pluginlist_update (); + + gtk_widget_show (plugin_window); +} diff --git a/xchat-2.8.8/src/fe-gtk/plugingui.h b/xchat-2.8.8/src/fe-gtk/plugingui.h new file mode 100644 index 0000000..945d9a0 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/plugingui.h @@ -0,0 +1,2 @@ +void plugingui_open (void); +void plugingui_load (void); diff --git a/xchat-2.8.8/src/fe-gtk/rawlog.c b/xchat-2.8.8/src/fe-gtk/rawlog.c new file mode 100644 index 0000000..56ca051 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/rawlog.c @@ -0,0 +1,152 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <string.h> +#include <fcntl.h> +#include <unistd.h> +#include <stdlib.h> + +#include "fe-gtk.h" + +#include <gtk/gtkbutton.h> +#include <gtk/gtkhbbox.h> +#include <gtk/gtkhbox.h> +#include <gtk/gtkvscrollbar.h> +#include <gtk/gtkstock.h> + +#include "../common/xchat.h" +#include "../common/xchatc.h" +#include "../common/cfgfiles.h" +#include "../common/server.h" +#include "gtkutil.h" +#include "palette.h" +#include "maingui.h" +#include "rawlog.h" +#include "xtext.h" + + +static void +close_rawlog (GtkWidget *wid, server *serv) +{ + if (is_server (serv)) + serv->gui->rawlog_window = 0; +} + +static void +rawlog_save (server *serv, char *file) +{ + int fh = -1; + + if (file) + { + if (serv->gui->rawlog_window) + fh = xchat_open_file (file, O_TRUNC | O_WRONLY | O_CREAT, + 0600, XOF_DOMODE | XOF_FULLPATH); + if (fh != -1) + { + gtk_xtext_save (GTK_XTEXT (serv->gui->rawlog_textlist), fh); + close (fh); + } + } +} + +static int +rawlog_clearbutton (GtkWidget * wid, server *serv) +{ + gtk_xtext_clear (GTK_XTEXT (serv->gui->rawlog_textlist)->buffer, 0); + return FALSE; +} + +static int +rawlog_savebutton (GtkWidget * wid, server *serv) +{ + gtkutil_file_req (_("Save As..."), rawlog_save, serv, NULL, FRF_WRITE); + return FALSE; +} + +void +open_rawlog (struct server *serv) +{ + GtkWidget *hbox, *vscrollbar, *vbox; + char tbuf[256]; + + if (serv->gui->rawlog_window) + { + mg_bring_tofront (serv->gui->rawlog_window); + return; + } + + snprintf (tbuf, sizeof tbuf, _("XChat: Rawlog (%s)"), serv->servername); + serv->gui->rawlog_window = + mg_create_generic_tab ("RawLog", tbuf, FALSE, TRUE, close_rawlog, serv, + 640, 320, &vbox, serv); + + hbox = gtk_hbox_new (FALSE, 2); + gtk_container_add (GTK_CONTAINER (vbox), hbox); + gtk_container_set_border_width (GTK_CONTAINER (hbox), 4); + gtk_widget_show (hbox); + + serv->gui->rawlog_textlist = gtk_xtext_new (colors, 0); + gtk_xtext_set_tint (GTK_XTEXT (serv->gui->rawlog_textlist), prefs.tint_red, prefs.tint_green, prefs.tint_blue); + gtk_xtext_set_background (GTK_XTEXT (serv->gui->rawlog_textlist), + channelwin_pix, prefs.transparent); + + gtk_container_add (GTK_CONTAINER (hbox), serv->gui->rawlog_textlist); + gtk_xtext_set_font (GTK_XTEXT (serv->gui->rawlog_textlist), prefs.font_normal); + GTK_XTEXT (serv->gui->rawlog_textlist)->ignore_hidden = 1; + gtk_widget_show (serv->gui->rawlog_textlist); + + vscrollbar = gtk_vscrollbar_new (GTK_XTEXT (serv->gui->rawlog_textlist)->adj); + gtk_box_pack_start (GTK_BOX (hbox), vscrollbar, FALSE, FALSE, 0); + show_and_unfocus (vscrollbar); + + hbox = gtk_hbutton_box_new (); + gtk_button_box_set_layout (GTK_BUTTON_BOX (hbox), GTK_BUTTONBOX_SPREAD); + gtk_box_pack_end (GTK_BOX (vbox), hbox, 0, 0, 0); + gtk_widget_show (hbox); + + gtkutil_button (hbox, GTK_STOCK_CLEAR, NULL, rawlog_clearbutton, + serv, _("Clear rawlog")); + + gtkutil_button (hbox, GTK_STOCK_SAVE_AS, NULL, rawlog_savebutton, + serv, _("Save As...")); + + gtk_widget_show (serv->gui->rawlog_window); +} + +void +fe_add_rawlog (server *serv, char *text, int len, int outbound) +{ + char *new_text; + + if (!serv->gui->rawlog_window) + return; + + new_text = malloc (len + 7); + + len = sprintf (new_text, "\0033>>\017 %s", text); + if (outbound) + { + new_text[1] = '4'; + new_text[2] = '<'; + new_text[3] = '<'; + } + gtk_xtext_append (GTK_XTEXT (serv->gui->rawlog_textlist)->buffer, new_text, len); + free (new_text); +} diff --git a/xchat-2.8.8/src/fe-gtk/rawlog.h b/xchat-2.8.8/src/fe-gtk/rawlog.h new file mode 100644 index 0000000..db41e2a --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/rawlog.h @@ -0,0 +1 @@ +void open_rawlog (server *serv); diff --git a/xchat-2.8.8/src/fe-gtk/search.c b/xchat-2.8.8/src/fe-gtk/search.c new file mode 100644 index 0000000..d62e79c --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/search.c @@ -0,0 +1,159 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> + +#include "fe-gtk.h" + +#include <gtk/gtkentry.h> +#include <gtk/gtkhbox.h> +#include <gtk/gtkvbox.h> +#include <gtk/gtklabel.h> +#include <gtk/gtkstock.h> +#include <gtk/gtkhbbox.h> +#include <gtk/gtkhseparator.h> +#include <gtk/gtkvseparator.h> +#include <gtk/gtkradiobutton.h> +#include <gtk/gtktogglebutton.h> +#include <gdk/gdkkeysyms.h> + +#include "../common/xchat.h" +#include "../common/fe.h" +#include "../common/util.h" +#include "../common/xchatc.h" +#include "gtkutil.h" +#include "xtext.h" +#include "maingui.h" + + +static textentry *last; /* our last search pos */ +static int case_match = 0; +static int search_backward = 0; + + +static void +search_search (session * sess, const gchar *text) +{ + if (!is_session (sess)) + { + fe_message (_("The window you opened this Search " + "for doesn't exist anymore."), FE_MSG_ERROR); + return; + } + + last = gtk_xtext_search (GTK_XTEXT (sess->gui->xtext), text, + last, case_match, search_backward); + if (!last) + fe_message (_("Search hit end, not found."), FE_MSG_ERROR); +} + +static void +search_find_cb (GtkWidget * button, session * sess) +{ + GtkEntry *entry; + const gchar *text; + + entry = g_object_get_data (G_OBJECT (button), "e"); + text = gtk_entry_get_text (entry); + search_search (sess, text); +} + +static void +search_close_cb (GtkWidget * button, GtkWidget * win) +{ + gtk_widget_destroy (win); +} + +static void +search_entry_cb (GtkWidget * entry, session * sess) +{ + search_search (sess, gtk_entry_get_text (GTK_ENTRY (entry))); +} + +static gboolean +search_key_cb (GtkWidget * window, GdkEventKey * key, gpointer userdata) +{ + if (key->keyval == GDK_Escape) + gtk_widget_destroy (window); + return FALSE; +} + +static void +search_caseign_cb (GtkToggleButton * but, session * sess) +{ + case_match = (but->active)? 1: 0; +} + +static void +search_dirbwd_cb (GtkToggleButton * but, session * sess) +{ + search_backward = (but->active)? 1: 0; +} + +void +search_open (session * sess) +{ + GtkWidget *win, *hbox, *vbox, *entry, *wid; + + last = NULL; + win = mg_create_generic_tab ("search", _("XChat: Search"), TRUE, FALSE, + NULL, NULL, 0, 0, &vbox, 0); + gtk_container_set_border_width (GTK_CONTAINER (win), 12); + gtk_box_set_spacing (GTK_BOX (vbox), 4); + + hbox = gtk_hbox_new (0, 10); + gtk_container_add (GTK_CONTAINER (vbox), hbox); + gtk_widget_show (hbox); + + gtkutil_label_new (_("Find:"), hbox); + + entry = gtk_entry_new (); + g_signal_connect (G_OBJECT (entry), "activate", + G_CALLBACK (search_entry_cb), sess); + gtk_container_add (GTK_CONTAINER (hbox), entry); + gtk_widget_show (entry); + gtk_widget_grab_focus (entry); + + wid = gtk_check_button_new_with_mnemonic (_("_Match case")); + GTK_TOGGLE_BUTTON (wid)->active = case_match; + g_signal_connect (G_OBJECT (wid), "toggled", G_CALLBACK (search_caseign_cb), sess); + gtk_container_add (GTK_CONTAINER (vbox), wid); + gtk_widget_show (wid); + + wid = gtk_check_button_new_with_mnemonic (_("Search _backwards")); + GTK_TOGGLE_BUTTON (wid)->active = search_backward; + g_signal_connect (G_OBJECT (wid), "toggled", G_CALLBACK (search_dirbwd_cb), sess); + gtk_container_add (GTK_CONTAINER (vbox), wid); + gtk_widget_show (wid); + + hbox = gtk_hbutton_box_new (); + gtk_box_pack_start (GTK_BOX (vbox), hbox, 0, 0, 4); + gtk_widget_show (hbox); + + gtkutil_button (hbox, GTK_STOCK_CLOSE, 0, search_close_cb, win, + _("_Close")); + wid = gtkutil_button (hbox, GTK_STOCK_FIND, 0, search_find_cb, sess, + _("_Find")); + g_object_set_data (G_OBJECT (wid), "e", entry); + + g_signal_connect (G_OBJECT (win), "key-press-event", G_CALLBACK (search_key_cb), win); + + gtk_widget_show (win); +} diff --git a/xchat-2.8.8/src/fe-gtk/search.h b/xchat-2.8.8/src/fe-gtk/search.h new file mode 100644 index 0000000..8fa1b62 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/search.h @@ -0,0 +1 @@ +void search_open (session * sess); diff --git a/xchat-2.8.8/src/fe-gtk/servlistgui.c b/xchat-2.8.8/src/fe-gtk/servlistgui.c new file mode 100644 index 0000000..b30d737 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/servlistgui.c @@ -0,0 +1,1889 @@ +/* X-Chat + * Copyright (C) 2004-2008 Peter Zelezny. + */ + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <ctype.h> + +#include <gtk/gtkversion.h> +#include <gtk/gtkcheckbutton.h> +#include <gtk/gtkcellrenderertext.h> +#include <gtk/gtkcomboboxentry.h> +#include <gtk/gtkentry.h> +#include <gtk/gtkhbox.h> +#include <gtk/gtkhbbox.h> +#include <gtk/gtkhseparator.h> +#include <gtk/gtkimage.h> +#include <gtk/gtklabel.h> +#include <gtk/gtkliststore.h> +#include <gtk/gtkmenuitem.h> +#include <gtk/gtkmessagedialog.h> +#include <gtk/gtkscrolledwindow.h> +#include <gtk/gtkstock.h> +#include <gtk/gtktable.h> +#include <gtk/gtktogglebutton.h> +#include <gtk/gtktree.h> +#include <gtk/gtktreeselection.h> +#include <gtk/gtktreeview.h> +#include <gtk/gtkvbbox.h> +#include <gtk/gtkvbox.h> +#include <gtk/gtkwindow.h> +#include <gdk/gdkkeysyms.h> + +#include "../common/xchat.h" +#include "../common/xchatc.h" +#include "../common/servlist.h" +#include "../common/cfgfiles.h" +#include "../common/fe.h" + +#include "fe-gtk.h" +#include "gtkutil.h" +#include "menu.h" +#include "pixmaps.h" + + +/* servlistgui.c globals */ +static GtkWidget *serverlist_win = NULL; +static GtkWidget *networks_tree; /* network TreeView */ +static int ignore_changed = FALSE; +#ifdef WIN32 +static int win_width = 324; +static int win_height = 426; +#else +static int win_width = 364; +static int win_height = 478; +#endif + +/* global user info */ +static GtkWidget *entry_nick1; +static GtkWidget *entry_nick2; +static GtkWidget *entry_nick3; +static GtkWidget *entry_guser; +static GtkWidget *entry_greal; + +/* edit area */ +static GtkWidget *edit_win; +static GtkWidget *edit_entry_nick; +static GtkWidget *edit_entry_nick2; +static GtkWidget *edit_entry_user; +static GtkWidget *edit_entry_real; +static GtkWidget *edit_entry_join; +static GtkWidget *edit_entry_pass; +static GtkWidget *edit_entry_cmd; +static GtkWidget *edit_entry_nickserv; +static GtkWidget *edit_label_nick; +static GtkWidget *edit_label_nick2; +static GtkWidget *edit_label_real; +static GtkWidget *edit_label_user; +static GtkWidget *edit_tree; + +static ircnet *selected_net = NULL; +static ircserver *selected_serv = NULL; +static ircnet *fav_add_net = NULL; /* used in Add/Remove fav context menus */ +static session *servlist_sess; + +static void servlist_network_row_cb (GtkTreeSelection *sel, gpointer user_data); +static GtkWidget *servlist_open_edit (GtkWidget *parent, ircnet *net); + + +static const char *pages[]= +{ + "UTF-8 (Unicode)", + "IRC (Latin/Unicode Hybrid)", + "ISO-8859-15 (Western Europe)", + "ISO-8859-2 (Central Europe)", + "ISO-8859-7 (Greek)", + "ISO-8859-8 (Hebrew)", + "ISO-8859-9 (Turkish)", + "ISO-2022-JP (Japanese)", + "SJIS (Japanese)", + "CP949 (Korean)", + "KOI8-R (Cyrillic)", + "CP1251 (Cyrillic)", + "CP1256 (Arabic)", + "CP1257 (Baltic)", + "GB18030 (Chinese)", + "TIS-620 (Thai)", + NULL +}; + +static void +servlist_select_and_show (GtkTreeView *treeview, GtkTreeIter *iter, + GtkListStore *store) +{ + GtkTreePath *path; + GtkTreeSelection *sel; + + sel = gtk_tree_view_get_selection (treeview); + + /* select this network */ + gtk_tree_selection_select_iter (sel, iter); + /* and make sure it's visible */ + path = gtk_tree_model_get_path (GTK_TREE_MODEL (store), iter); + if (path) + { + gtk_tree_view_scroll_to_cell (treeview, path, NULL, TRUE, 0.5, 0.5); + gtk_tree_view_set_cursor (treeview, path, NULL, FALSE); + gtk_tree_path_free (path); + } +} + +static void +servlist_servers_populate (ircnet *net, GtkWidget *treeview) +{ + GtkListStore *store; + GtkTreeIter iter; + int i; + ircserver *serv; + GSList *list = net->servlist; + + store = (GtkListStore *)gtk_tree_view_get_model (GTK_TREE_VIEW (treeview)); + gtk_list_store_clear (store); + + i = 0; + while (list) + { + serv = list->data; + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, 0, serv->hostname, 1, 1, -1); + + if (net->selected == i) + /* select this server */ + servlist_select_and_show (GTK_TREE_VIEW (treeview), &iter, store); + + i++; + list = list->next; + } +} + +static void +servlist_networks_populate (GtkWidget *treeview, GSList *netlist) +{ + GtkListStore *store; + GtkTreeIter iter; + int i; + ircnet *net; + + if (!netlist) + { + net = servlist_net_add (_("New Network"), "", FALSE); + servlist_server_add (net, "newserver/6667"); + netlist = network_list; + } + store = (GtkListStore *)gtk_tree_view_get_model (GTK_TREE_VIEW (treeview)); + gtk_list_store_clear (store); + + i = 0; + while (netlist) + { + net = netlist->data; + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, 0, net->name, 1, 1, -1); + if (i == prefs.slist_select) + { + /* select this network */ + servlist_select_and_show (GTK_TREE_VIEW (treeview), &iter, store); + selected_net = net; + } + i++; + netlist = netlist->next; + } +} + +static void +servlist_server_row_cb (GtkTreeSelection *sel, gpointer user_data) +{ + GtkTreeModel *model; + GtkTreeIter iter; + ircserver *serv; + char *servname; + int pos; + + if (!selected_net) + return; + + if (gtk_tree_selection_get_selected (sel, &model, &iter)) + { + gtk_tree_model_get (model, &iter, 0, &servname, -1); + serv = servlist_server_find (selected_net, servname, &pos); + g_free (servname); + if (serv) + selected_net->selected = pos; + selected_serv = serv; + } +} + +static void +servlist_start_editing (GtkTreeView *tree) +{ + GtkTreeSelection *sel; + GtkTreeModel *model; + GtkTreeIter iter; + GtkTreePath *path; + + sel = gtk_tree_view_get_selection (tree); + + if (gtk_tree_selection_get_selected (sel, &model, &iter)) + { + path = gtk_tree_model_get_path (GTK_TREE_MODEL (model), &iter); + if (path) + { + gtk_tree_view_set_cursor (tree, path, + gtk_tree_view_get_column (tree, 0), TRUE); + gtk_tree_path_free (path); + } + } +} + +static void +servlist_addserver_cb (GtkWidget *item, GtkWidget *treeview) +{ + GtkTreeIter iter; + GtkListStore *store; + + if (!selected_net) + return; + + store = (GtkListStore *)gtk_tree_view_get_model (GTK_TREE_VIEW (treeview)); + servlist_server_add (selected_net, "newserver/6667"); + + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, 0, "newserver/6667", 1, 1, -1); + + /* select this server */ + servlist_select_and_show (GTK_TREE_VIEW (treeview), &iter, store); + /*servlist_start_editing (GTK_TREE_VIEW (treeview));*/ + + servlist_server_row_cb (gtk_tree_view_get_selection (GTK_TREE_VIEW (networks_tree)), NULL); +} + +static void +servlist_addnet_cb (GtkWidget *item, GtkTreeView *treeview) +{ + GtkTreeIter iter; + GtkListStore *store; + ircnet *net; + + net = servlist_net_add (_("New Network"), "", TRUE); + net->encoding = strdup ("IRC (Latin/Unicode Hybrid)"); + servlist_server_add (net, "newserver/6667"); + + store = (GtkListStore *)gtk_tree_view_get_model (treeview); + gtk_list_store_prepend (store, &iter); + gtk_list_store_set (store, &iter, 0, net->name, 1, 1, -1); + + /* select this network */ + servlist_select_and_show (GTK_TREE_VIEW (networks_tree), &iter, store); + servlist_start_editing (GTK_TREE_VIEW (networks_tree)); + + servlist_network_row_cb (gtk_tree_view_get_selection (GTK_TREE_VIEW (networks_tree)), NULL); +} + +static void +servlist_deletenetwork (ircnet *net) +{ + GtkTreeSelection *sel; + GtkTreeModel *model; + GtkTreeIter iter; + + /* remove from GUI */ + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (networks_tree)); + if (gtk_tree_selection_get_selected (sel, &model, &iter)) + gtk_list_store_remove (GTK_LIST_STORE (model), &iter); + + /* remove from list */ + servlist_net_remove (net); + + /* force something to be selected */ + gtk_tree_model_get_iter_first (model, &iter); + servlist_select_and_show (GTK_TREE_VIEW (networks_tree), &iter, + GTK_LIST_STORE (model)); + servlist_network_row_cb (sel, NULL); +} + +static void +servlist_deletenetdialog_cb (GtkDialog *dialog, gint arg1, ircnet *net) +{ + gtk_widget_destroy (GTK_WIDGET (dialog)); + if (arg1 == GTK_RESPONSE_OK) + servlist_deletenetwork (net); +} + +static void +servlist_move_server (ircserver *serv, int delta) +{ + int pos; + + pos = g_slist_index (selected_net->servlist, serv); + if (pos >= 0) + { + pos += delta; + if (pos >= 0) + { + selected_net->servlist = g_slist_remove (selected_net->servlist, serv); + selected_net->servlist = g_slist_insert (selected_net->servlist, serv, pos); + servlist_servers_populate (selected_net, edit_tree); + } + } +} + +static void +servlist_move_network (ircnet *net, int delta) +{ + int pos; + + pos = g_slist_index (network_list, net); + if (pos >= 0) + { + pos += delta; + if (pos >= 0) + { + /*prefs.slist_select += delta;*/ + network_list = g_slist_remove (network_list, net); + network_list = g_slist_insert (network_list, net, pos); + servlist_networks_populate (networks_tree, network_list); + } + } +} + +#if 0 +static gboolean +servlist_auto_find (GtkWidget *wid, GdkEventKey *evt, gpointer tree) +{ + GtkTreeModel *model = gtk_tree_view_get_model (tree); + GtkTreeIter iter; + unsigned char c; + unsigned char *net_name; + + if (evt->keyval > 0x7a || evt->keyval < 0x41) + return FALSE; + + c = toupper (evt->keyval); + + /* scroll to a network that starts with the letter pressed */ + if (gtk_tree_model_get_iter_first (model, &iter)) + { + do + { + gtk_tree_model_get (model, &iter, 0, &net_name, -1); + if (net_name) + { + if (toupper (net_name[0]) == c) + { + servlist_select_and_show (tree, &iter, GTK_LIST_STORE (model)); + g_free (net_name); + return TRUE; + } + g_free (net_name); + } + } + while (gtk_tree_model_iter_next (model, &iter)); + } + + return FALSE; +} +#endif + +static gboolean +servlist_net_keypress_cb (GtkWidget *wid, GdkEventKey *evt, gpointer tree) +{ +#if 0 /* GTK's auto-find does this better */ + if (servlist_auto_find (wid, evt, tree)) + return TRUE; +#endif + + if (!selected_net) + return FALSE; + + if (evt->state & GDK_SHIFT_MASK) + { + if (evt->keyval == GDK_Up) + { + servlist_move_network (selected_net, -1); + } + else if (evt->keyval == GDK_Down) + { + servlist_move_network (selected_net, +1); + } + } + + return FALSE; +} + +static gboolean +servlist_serv_keypress_cb (GtkWidget *wid, GdkEventKey *evt, gpointer userdata) +{ + if (!selected_net || !selected_serv) + return FALSE; + + if (evt->state & GDK_SHIFT_MASK) + { + if (evt->keyval == GDK_Up) + { + servlist_move_server (selected_serv, -1); + } + else if (evt->keyval == GDK_Down) + { + servlist_move_server (selected_serv, +1); + } + } + + return FALSE; +} + +static gint +servlist_compare (ircnet *net1, ircnet *net2) +{ + gchar *net1_casefolded, *net2_casefolded; + int result=0; + + net1_casefolded=g_utf8_casefold(net1->name,-1), + net2_casefolded=g_utf8_casefold(net2->name,-1), + + result=g_utf8_collate(net1_casefolded,net2_casefolded); + + g_free(net1_casefolded); + g_free(net2_casefolded); + + return result; + +} + +static void +servlist_sort (GtkWidget *button, gpointer none) +{ + network_list=g_slist_sort(network_list,(GCompareFunc)servlist_compare); + servlist_networks_populate (networks_tree, network_list); +} + +static gboolean +servlist_has_selection (GtkTreeView *tree) +{ + GtkTreeSelection *sel; + GtkTreeModel *model; + GtkTreeIter iter; + + /* make sure something is selected */ + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree)); + return gtk_tree_selection_get_selected (sel, &model, &iter); +} + +static void +servlist_update_from_entry (char **str, GtkWidget *entry) +{ + if (*str) + free (*str); + + if (GTK_ENTRY (entry)->text[0] == 0) + *str = NULL; + else + *str = strdup (GTK_ENTRY (entry)->text); +} + +static void +servlist_edit_update (ircnet *net) +{ + servlist_update_from_entry (&net->nick, edit_entry_nick); + servlist_update_from_entry (&net->nick2, edit_entry_nick2); + servlist_update_from_entry (&net->user, edit_entry_user); + servlist_update_from_entry (&net->real, edit_entry_real); + + servlist_update_from_entry (&net->autojoin, edit_entry_join); + servlist_update_from_entry (&net->command, edit_entry_cmd); + servlist_update_from_entry (&net->nickserv, edit_entry_nickserv); + servlist_update_from_entry (&net->pass, edit_entry_pass); +} + +static void +servlist_edit_close_cb (GtkWidget *button, gpointer userdata) +{ + if (selected_net) + servlist_edit_update (selected_net); + + gtk_widget_destroy (edit_win); + edit_win = NULL; +} + +static gint +servlist_editwin_delete_cb (GtkWidget *win, GdkEventAny *event, gpointer none) +{ + servlist_edit_close_cb (NULL, NULL); + return FALSE; +} + +static gboolean +servlist_configure_cb (GtkWindow *win, GdkEventConfigure *event, gpointer none) +{ + /* remember the window size */ + gtk_window_get_size (win, &win_width, &win_height); + return FALSE; +} + +static void +servlist_edit_cb (GtkWidget *but, gpointer none) +{ + if (!servlist_has_selection (GTK_TREE_VIEW (networks_tree))) + return; + + edit_win = servlist_open_edit (serverlist_win, selected_net); + gtkutil_set_icon (edit_win); + servlist_servers_populate (selected_net, edit_tree); + g_signal_connect (G_OBJECT (gtk_tree_view_get_selection (GTK_TREE_VIEW (edit_tree))), + "changed", G_CALLBACK (servlist_server_row_cb), NULL); + g_signal_connect (G_OBJECT (edit_win), "delete_event", + G_CALLBACK (servlist_editwin_delete_cb), 0); + g_signal_connect (G_OBJECT (edit_tree), "key_press_event", + G_CALLBACK (servlist_serv_keypress_cb), 0); + gtk_widget_show (edit_win); +} + +static void +servlist_deletenet_cb (GtkWidget *item, ircnet *net) +{ + GtkWidget *dialog; + + if (!servlist_has_selection (GTK_TREE_VIEW (networks_tree))) + return; + + net = selected_net; + if (!net) + return; + dialog = gtk_message_dialog_new (GTK_WINDOW (serverlist_win), + GTK_DIALOG_DESTROY_WITH_PARENT | + GTK_DIALOG_MODAL, + GTK_MESSAGE_QUESTION, + GTK_BUTTONS_OK_CANCEL, + _("Really remove network \"%s\" and all its servers?"), + net->name); + g_signal_connect (dialog, "response", + G_CALLBACK (servlist_deletenetdialog_cb), net); + gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); + gtk_widget_show (dialog); +} + +static void +servlist_deleteserver (ircserver *serv, GtkTreeModel *model) +{ + GtkTreeSelection *sel; + GtkTreeIter iter; + + /* don't remove the last server */ + if (selected_net && g_slist_length (selected_net->servlist) < 2) + return; + + /* remove from GUI */ + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (edit_tree)); + if (gtk_tree_selection_get_selected (sel, &model, &iter)) + gtk_list_store_remove (GTK_LIST_STORE (model), &iter); + + /* remove from list */ + if (selected_net) + servlist_server_remove (selected_net, serv); +} + +static void +servlist_editserverbutton_cb (GtkWidget *item, gpointer none) +{ + servlist_start_editing (GTK_TREE_VIEW (edit_tree)); +} + +static void +servlist_deleteserver_cb (GtkWidget *item, gpointer none) +{ + GtkTreeSelection *sel; + GtkTreeModel *model; + GtkTreeIter iter; + char *servname; + ircserver *serv; + int pos; + + /* find the selected item in the GUI */ + model = gtk_tree_view_get_model (GTK_TREE_VIEW (edit_tree)); + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (edit_tree)); + + if (gtk_tree_selection_get_selected (sel, &model, &iter)) + { + gtk_tree_model_get (model, &iter, 0, &servname, -1); + serv = servlist_server_find (selected_net, servname, &pos); + g_free (servname); + if (serv) + servlist_deleteserver (serv, model); + } +} + +static ircnet * +servlist_find_selected_net (GtkTreeSelection *sel) +{ + GtkTreeModel *model; + GtkTreeIter iter; + char *netname; + int pos; + ircnet *net = NULL; + + if (gtk_tree_selection_get_selected (sel, &model, &iter)) + { + gtk_tree_model_get (model, &iter, 0, &netname, -1); + net = servlist_net_find (netname, &pos, strcmp); + g_free (netname); + if (net) + prefs.slist_select = pos; + } + + return net; +} + +static void +servlist_network_row_cb (GtkTreeSelection *sel, gpointer user_data) +{ + ircnet *net; + + selected_net = NULL; + + net = servlist_find_selected_net (sel); + if (net) + selected_net = net; +} + +static int +servlist_savegui (void) +{ + char *sp; + + /* check for blank username, ircd will not allow this */ + if (GTK_ENTRY (entry_guser)->text[0] == 0) + return 1; + + if (GTK_ENTRY (entry_greal)->text[0] == 0) + return 1; + + strcpy (prefs.nick1, GTK_ENTRY (entry_nick1)->text); + strcpy (prefs.nick2, GTK_ENTRY (entry_nick2)->text); + strcpy (prefs.nick3, GTK_ENTRY (entry_nick3)->text); + strcpy (prefs.username, GTK_ENTRY (entry_guser)->text); + sp = strchr (prefs.username, ' '); + if (sp) + sp[0] = 0; /* spaces will break the login */ + strcpy (prefs.realname, GTK_ENTRY (entry_greal)->text); + servlist_save (); + + return 0; +} + +static gboolean +servlist_get_iter_from_name (GtkTreeModel *model, gchar *name, GtkTreeIter *iter) +{ + GtkTreePath *path = gtk_tree_path_new_from_string (name); + + if (!gtk_tree_model_get_iter (model, iter, path)) + { + gtk_tree_path_free (path); + return FALSE; + } + + gtk_tree_path_free (path); + return TRUE; +} + +static void +servlist_editchannel_cb (GtkCellRendererText *cell, gchar *name, gchar *newval, GtkTreeModel *model) +{ + GtkTreeIter iter; + static int loop_guard = FALSE; + + if (loop_guard) + return; + + if (!servlist_get_iter_from_name (model, name, &iter)) + return; + + loop_guard = TRUE; + /* delete empty item */ + if (newval[0] == 0) + gtk_list_store_remove (GTK_LIST_STORE (model), &iter); + else + gtk_list_store_set (GTK_LIST_STORE (model), &iter, 0, newval, -1); + loop_guard = FALSE; +} + +static void +servlist_editkey_cb (GtkCellRendererText *cell, gchar *name, gchar *newval, GtkTreeModel *model) +{ + GtkTreeIter iter; + + if (!servlist_get_iter_from_name (model, name, &iter)) + return; + + gtk_list_store_set (GTK_LIST_STORE (model), &iter, 1, newval, -1); +} + +static void +servlist_addchannel (GtkWidget *tree, char *channel) +{ + GtkTreeIter iter; + GtkListStore *store; + + store = (GtkListStore *)gtk_tree_view_get_model (GTK_TREE_VIEW (tree)); + + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, 0, channel, 1, "", 2, TRUE, -1); + + /* select this server */ + servlist_select_and_show (GTK_TREE_VIEW (tree), &iter, store); + servlist_start_editing (GTK_TREE_VIEW (tree)); +} + +static void +servlist_addchannel_cb (GtkWidget *item, GtkWidget *tree) +{ + servlist_addchannel (tree, _("#channel")); +} + +static void +servlist_deletechannel_cb (GtkWidget *item, GtkWidget *tree) +{ + GtkTreeSelection *sel; + GtkTreeModel *model; + GtkTreeIter iter; + + /* find the selected item in the GUI */ + model = gtk_tree_view_get_model (GTK_TREE_VIEW (tree)); + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree)); + + if (gtk_tree_selection_get_selected (sel, &model, &iter)) + gtk_list_store_remove (GTK_LIST_STORE (model), &iter); +} + +static void +servlist_editchannelbutton_cb (GtkWidget *item, GtkWidget *tree) +{ + servlist_start_editing (GTK_TREE_VIEW (tree)); +} + +/* save everything from the GUI to the GtkEntry */ + +static void +servlist_autojoineditok_cb (GtkWidget *button, GtkWidget *tree) +{ + GtkTreeModel *model; + GtkTreeIter iter; + char *channel, *key; + char *autojoin; + GSList *channels = NULL, *keys = NULL; + + model = gtk_tree_view_get_model (GTK_TREE_VIEW (tree)); + + if (gtk_tree_model_get_iter_first (model, &iter)) + { + do + { + gtk_tree_model_get (model, &iter, 0, &channel, 1, &key, -1); + channels = g_slist_append (channels, channel); + if (key && key[0] == 0) + { + /* NULL out empty keys */ + g_free (key); + keys = g_slist_append (keys, NULL); + } + else + keys = g_slist_append (keys, key); + } + while (gtk_tree_model_iter_next (model, &iter)); + } + + gtk_widget_destroy (gtk_widget_get_toplevel (button)); + + autojoin = joinlist_merge (channels, keys); + if (autojoin) + { + if (edit_win && selected_net) + gtk_entry_set_text (GTK_ENTRY (edit_entry_join), autojoin); + else + { + if (fav_add_net->autojoin) + free (fav_add_net->autojoin); + fav_add_net->autojoin = strdup (autojoin); + } + g_free (autojoin); + } + + /* this does g_free too */ + joinlist_free (channels, keys); + + if (fav_add_net) + servlist_save (); +} + +void +servlist_autojoinedit (ircnet *net, char *channel, gboolean add) +{ + GtkWidget *win; + GtkWidget *scrolledwindow; + GtkTreeModel *model; + GtkListStore *store; + GtkCellRenderer *renderer; + GtkWidget *tree; + GtkWidget *table; + GtkWidget *label; + GtkWidget *label2; + GtkWidget *bbox; + GtkWidget *wid; + + GtkWidget *vbuttonbox1; + GtkWidget *buttonadd; + GtkWidget *buttonremove; + GtkWidget *buttonedit; + + char buf[128]; + char lab[128]; + GSList *channels, *keys; + GSList *clist, *klist; + GtkTreeIter iter; + + if (edit_win && selected_net) + /* update net->autojoin */ + servlist_edit_update (selected_net); + + win = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_container_set_border_width (GTK_CONTAINER (win), 4); + gtk_window_set_title (GTK_WINDOW (win), _("XChat: Favorite Channels (Auto-Join List)")); + gtk_window_set_default_size (GTK_WINDOW (win), 354, 256); + gtk_window_set_position (GTK_WINDOW (win), GTK_WIN_POS_MOUSE); + if (edit_win) + gtk_window_set_transient_for (GTK_WINDOW (win), GTK_WINDOW (edit_win)); + gtk_window_set_modal (GTK_WINDOW (win), TRUE); + gtk_window_set_type_hint (GTK_WINDOW (win), GDK_WINDOW_TYPE_HINT_DIALOG); + gtk_window_set_role (GTK_WINDOW (win), "editserv"); + + table = gtk_table_new (1, 1, FALSE); + gtk_container_add (GTK_CONTAINER (win), table); + gtk_widget_show (table); + + snprintf (buf, sizeof (buf), _("These channels will be joined whenever you connect to %s."), net->name); + label = gtk_label_new (buf); + gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_CENTER); + gtk_table_attach (GTK_TABLE (table), label, 0, 2, 0, 1, GTK_FILL|GTK_EXPAND, GTK_FILL, 3, 3); + gtk_widget_show (label); + + label2 = gtk_label_new (""); + gtk_label_set_justify (GTK_LABEL (label2), GTK_JUSTIFY_CENTER); + gtk_table_attach (GTK_TABLE (table), label2, 0, 2, 1, 2, GTK_FILL, 0, 3, 3); + gtk_widget_show (label2); + + scrolledwindow = gtk_scrolled_window_new (NULL, NULL); + gtk_table_attach (GTK_TABLE (table), scrolledwindow, 0, 1, 2, 3, GTK_FILL|GTK_EXPAND, GTK_FILL|GTK_EXPAND, 0, 0); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow), + GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow), + GTK_SHADOW_IN); + gtk_widget_show (scrolledwindow); + + store = gtk_list_store_new (3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN); + model = GTK_TREE_MODEL (store); + + tree = gtk_tree_view_new_with_model (model); + g_object_unref (model); + gtk_container_add (GTK_CONTAINER (scrolledwindow), tree); + gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (tree), TRUE); + gtk_widget_show (tree); + + renderer = gtk_cell_renderer_text_new (); + g_signal_connect (G_OBJECT (renderer), "edited", + G_CALLBACK (servlist_editchannel_cb), model); + gtk_tree_view_insert_column_with_attributes ( + GTK_TREE_VIEW (tree), -1, + _("Channel"), renderer, + "text", 0, + "editable", 2, + NULL); + + renderer = gtk_cell_renderer_text_new (); + g_signal_connect (G_OBJECT (renderer), "edited", + G_CALLBACK (servlist_editkey_cb), model); + gtk_tree_view_insert_column_with_attributes ( + GTK_TREE_VIEW (tree), -1, + _("Key (Password)"), renderer, + "text", 1, + "editable", 2, + NULL); + + gtk_tree_view_column_set_expand (gtk_tree_view_get_column (GTK_TREE_VIEW (tree), 0), TRUE); + gtk_tree_view_column_set_expand (gtk_tree_view_get_column (GTK_TREE_VIEW (tree), 1), TRUE); + + gtk_tree_sortable_set_sort_column_id ((GtkTreeSortable *)model, 0, GTK_SORT_ASCENDING); + + /* ===BUTTONS=== */ + vbuttonbox1 = gtk_vbutton_box_new (); + gtk_box_set_spacing (GTK_BOX (vbuttonbox1), 3); + gtk_button_box_set_layout (GTK_BUTTON_BOX (vbuttonbox1), GTK_BUTTONBOX_START); + gtk_widget_show (vbuttonbox1); + gtk_table_attach (GTK_TABLE (table), vbuttonbox1, 1, 2, 2, 3, GTK_FILL, GTK_FILL, 3, 0); + + buttonadd = gtk_button_new_from_stock ("gtk-add"); + g_signal_connect (G_OBJECT (buttonadd), "clicked", + G_CALLBACK (servlist_addchannel_cb), tree); + gtk_widget_show (buttonadd); + gtk_container_add (GTK_CONTAINER (vbuttonbox1), buttonadd); + GTK_WIDGET_SET_FLAGS (buttonadd, GTK_CAN_DEFAULT); + + buttonremove = gtk_button_new_from_stock ("gtk-remove"); + g_signal_connect (G_OBJECT (buttonremove), "clicked", + G_CALLBACK (servlist_deletechannel_cb), tree); + gtk_widget_show (buttonremove); + gtk_container_add (GTK_CONTAINER (vbuttonbox1), buttonremove); + GTK_WIDGET_SET_FLAGS (buttonremove, GTK_CAN_DEFAULT); + + buttonedit = gtk_button_new_with_mnemonic (_("_Edit")); + g_signal_connect (G_OBJECT (buttonedit), "clicked", + G_CALLBACK (servlist_editchannelbutton_cb), tree); + gtk_widget_show (buttonedit); + gtk_container_add (GTK_CONTAINER (vbuttonbox1), buttonedit); + GTK_WIDGET_SET_FLAGS (buttonedit, GTK_CAN_DEFAULT); + + bbox = gtk_hbutton_box_new (); + gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_END); + gtk_box_set_spacing (GTK_BOX (bbox), 4); + gtk_table_attach (GTK_TABLE (table), bbox, 0, 1, 3, 4, GTK_FILL|GTK_EXPAND, GTK_FILL, 0, 4); + gtk_widget_show (bbox); + + wid = gtk_button_new_from_stock (GTK_STOCK_CANCEL); + g_signal_connect (G_OBJECT (wid), "clicked", G_CALLBACK (gtkutil_destroy), win); + gtk_container_add (GTK_CONTAINER (bbox), wid); + gtk_widget_show (wid); + + wid = gtk_button_new_from_stock (GTK_STOCK_OK); + g_signal_connect (G_OBJECT (wid), "clicked", G_CALLBACK (servlist_autojoineditok_cb), tree); + gtk_container_add (GTK_CONTAINER (bbox), wid); + gtk_widget_show (wid); + gtk_widget_grab_focus (wid); + /* =========== */ + + if (net->autojoin) + { + joinlist_split (net->autojoin, &channels, &keys); + + clist = channels; + klist = keys; + + while (clist) + { + if (channel && !add && !rfc_casecmp (channel, clist->data)) + { + snprintf (buf, sizeof (buf), _("%s has been removed."), channel); + snprintf (lab, sizeof (lab), "<span foreground=\"#2222DD\">%s</span>", buf); + gtk_label_set_markup (GTK_LABEL (label2), lab); + } + else + { + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, 0, clist->data, 1, klist->data, 2, TRUE, -1); + } + + klist = klist->next; + clist = clist->next; + } + + joinlist_free (channels, keys); + } + + if (channel && add) + { + servlist_addchannel (tree, channel); + snprintf (buf, sizeof (buf), _("%s has been added."), channel); + snprintf (lab, sizeof (lab), "<span foreground=\"#2222DD\">%s</span>", buf); + gtk_label_set_markup (GTK_LABEL (label2), lab); + } + + fav_add_net = net; + + gtk_widget_show (win); +} + +static void +servlist_autojoinedit_cb (GtkWidget *button, ircnet *net) +{ + servlist_autojoinedit (net, NULL, FALSE); +} + +static void +servlist_connect_cb (GtkWidget *button, gpointer userdata) +{ + if (!selected_net) + return; + + if (servlist_savegui () != 0) + { + fe_message (_("User name and Real name cannot be left blank."), FE_MSG_ERROR); + return; + } + + if (!is_session (servlist_sess)) + servlist_sess = NULL; /* open a new one */ + + { + GSList *list; + session *sess; + session *chosen = servlist_sess; + + servlist_sess = NULL; /* open a new one */ + + for (list = sess_list; list; list = list->next) + { + sess = list->data; + if (sess->server->network == selected_net) + { + servlist_sess = sess; + if (sess->server->connected) + servlist_sess = NULL; /* open a new one */ + break; + } + } + + /* use the chosen one, if it's empty */ + if (!servlist_sess && + chosen && + !chosen->server->connected && + chosen->server->server_session->channel[0] == 0) + { + servlist_sess = chosen; + } + } + + servlist_connect (servlist_sess, selected_net, TRUE); + + gtk_widget_destroy (serverlist_win); + serverlist_win = NULL; + selected_net = NULL; +} + +static void +servlist_celledit_cb (GtkCellRendererText *cell, gchar *arg1, gchar *arg2, + gpointer user_data) +{ + GtkTreeModel *model = (GtkTreeModel *)user_data; + GtkTreeIter iter; + GtkTreePath *path; + char *netname; + ircnet *net; + + if (!arg1 || !arg2) + return; + + path = gtk_tree_path_new_from_string (arg1); + if (!path) + return; + + if (!gtk_tree_model_get_iter (model, &iter, path)) + { + gtk_tree_path_free (path); + return; + } + gtk_tree_model_get (model, &iter, 0, &netname, -1); + + net = servlist_net_find (netname, NULL, strcmp); + g_free (netname); + if (net) + { + /* delete empty item */ + if (arg2[0] == 0) + { + servlist_deletenetwork (net); + gtk_tree_path_free (path); + return; + } + + netname = net->name; + net->name = strdup (arg2); + gtk_list_store_set (GTK_LIST_STORE (model), &iter, 0, net->name, -1); + free (netname); + } + + gtk_tree_path_free (path); +} + +static void +servlist_check_cb (GtkWidget *but, gpointer num_p) +{ + int num = GPOINTER_TO_INT (num_p); + + if (!selected_net) + return; + + if ((1 << num) == FLAG_CYCLE || (1 << num) == FLAG_USE_PROXY) + { + /* these ones are reversed, so it's compat with 2.0.x */ + if (GTK_TOGGLE_BUTTON (but)->active) + selected_net->flags &= ~(1 << num); + else + selected_net->flags |= (1 << num); + } else + { + if (GTK_TOGGLE_BUTTON (but)->active) + selected_net->flags |= (1 << num); + else + selected_net->flags &= ~(1 << num); + } + + if ((1 << num) == FLAG_USE_GLOBAL) + { + if (GTK_TOGGLE_BUTTON (but)->active) + { + gtk_widget_hide (edit_label_nick); + gtk_widget_hide (edit_entry_nick); + + gtk_widget_hide (edit_label_nick2); + gtk_widget_hide (edit_entry_nick2); + + gtk_widget_hide (edit_label_user); + gtk_widget_hide (edit_entry_user); + + gtk_widget_hide (edit_label_real); + gtk_widget_hide (edit_entry_real); + } else + { + gtk_widget_show (edit_label_nick); + gtk_widget_show (edit_entry_nick); + + gtk_widget_show (edit_label_nick2); + gtk_widget_show (edit_entry_nick2); + + gtk_widget_show (edit_label_user); + gtk_widget_show (edit_entry_user); + + gtk_widget_show (edit_label_real); + gtk_widget_show (edit_entry_real); + } + } +} + +static GtkWidget * +servlist_create_check (int num, int state, GtkWidget *table, int row, int col, char *labeltext) +{ + GtkWidget *but; + + but = gtk_check_button_new_with_label (labeltext); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (but), state); + g_signal_connect (G_OBJECT (but), "toggled", + G_CALLBACK (servlist_check_cb), GINT_TO_POINTER (num)); + gtk_table_attach (GTK_TABLE (table), but, col, col+2, row, row+1, + GTK_FILL|GTK_EXPAND, 0, 0, 0); + gtk_widget_show (but); + + return but; +} + +static GtkWidget * +servlist_create_entry (GtkWidget *table, char *labeltext, int row, + char *def, GtkWidget **label_ret, char *tip) +{ + GtkWidget *label, *entry; + + label = gtk_label_new_with_mnemonic (labeltext); + if (label_ret) + *label_ret = label; + gtk_widget_show (label); + gtk_table_attach (GTK_TABLE (table), label, 1, 2, row, row+1, + GTK_FILL, 0, 0, 0); + gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); + + entry = gtk_entry_new (); + add_tip (entry, tip); + gtk_widget_show (entry); + gtk_entry_set_text (GTK_ENTRY (entry), def ? def : ""); + gtk_label_set_mnemonic_widget (GTK_LABEL (label), entry); + + if (row == 15) /* for "Channels to Join:" */ + { + GtkWidget *button, *box; + + box = gtk_hbox_new (0, 0); + button = gtk_button_new_with_label ("..."); + g_signal_connect (G_OBJECT (button), "clicked", + G_CALLBACK (servlist_autojoinedit_cb), selected_net); + + gtk_box_pack_start (GTK_BOX (box), entry, TRUE, TRUE, 0); + gtk_box_pack_end (GTK_BOX (box), button, 0, 0, 0); + gtk_widget_show_all (box); + + gtk_table_attach (GTK_TABLE (table), box, 2, 3, row, row+1, + GTK_FILL|GTK_EXPAND, 0, 0, 0); + } + else + { + gtk_table_attach (GTK_TABLE (table), entry, 2, 3, row, row+1, + GTK_FILL|GTK_EXPAND, 0, 0, 0); + } + + return entry; +} + +static gint +servlist_delete_cb (GtkWidget *win, GdkEventAny *event, gpointer userdata) +{ + servlist_savegui (); + serverlist_win = NULL; + selected_net = NULL; + + if (sess_list == NULL) + xchat_exit (); + + return FALSE; +} + +static void +servlist_close_cb (GtkWidget *button, gpointer userdata) +{ + servlist_savegui (); + gtk_widget_destroy (serverlist_win); + serverlist_win = NULL; + selected_net = NULL; + + if (sess_list == NULL) + xchat_exit (); +} + +/* convert "host:port" format to "host/port" */ + +static char * +servlist_sanitize_hostname (char *host) +{ + char *ret, *c, *e; + + ret = strdup (host); + + c = strchr (ret, ':'); + e = strrchr (ret, ':'); + + /* if only one colon exists it's probably not IPv6 */ + if (c && c == e) + *c = '/'; + + return ret; +} + +static void +servlist_editserver_cb (GtkCellRendererText *cell, gchar *arg1, gchar *arg2, + gpointer user_data) +{ + GtkTreeModel *model = (GtkTreeModel *)user_data; + GtkTreeIter iter; + GtkTreePath *path; + char *servname; + ircserver *serv; + + if (!selected_net) + return; + + path = gtk_tree_path_new_from_string (arg1); + + if (!gtk_tree_model_get_iter (model, &iter, path)) + { + gtk_tree_path_free (path); + return; + } + + gtk_tree_model_get (model, &iter, 0, &servname, -1); + serv = servlist_server_find (selected_net, servname, NULL); + g_free (servname); + + if (serv) + { + /* delete empty item */ + if (arg2[0] == 0) + { + servlist_deleteserver (serv, model); + gtk_tree_path_free (path); + return; + } + + servname = serv->hostname; + serv->hostname = servlist_sanitize_hostname (arg2); + gtk_list_store_set (GTK_LIST_STORE (model), &iter, 0, serv->hostname, -1); + free (servname); + } + + gtk_tree_path_free (path); +} + +static void +servlist_combo_cb (GtkEntry *entry, gpointer userdata) +{ + if (!selected_net) + return; + + if (!ignore_changed) + { + if (selected_net->encoding) + free (selected_net->encoding); + selected_net->encoding = strdup (entry->text); + } +} + +static GtkWidget * +servlist_create_charsetcombo (void) +{ + GtkWidget *cb; + int i; + + cb = gtk_combo_box_entry_new_text (); + gtk_combo_box_append_text (GTK_COMBO_BOX (cb), "System default"); + i = 0; + while (pages[i]) + { + gtk_combo_box_append_text (GTK_COMBO_BOX (cb), (char *)pages[i]); + i++; + } + g_signal_connect (G_OBJECT (GTK_BIN (cb)->child), "changed", + G_CALLBACK (servlist_combo_cb), NULL); + + return cb; +} + +static void +no_servlist (GtkWidget * igad, gpointer serv) +{ + if (GTK_TOGGLE_BUTTON (igad)->active) + prefs.slist_skip = TRUE; + else + prefs.slist_skip = FALSE; +} + +static GtkWidget * +bold_label (char *text) +{ + char buf[128]; + GtkWidget *label; + + snprintf (buf, sizeof (buf), "<b>%s</b>", text); + label = gtk_label_new (buf); + gtk_label_set_use_markup (GTK_LABEL (label), TRUE); + gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); + gtk_widget_show (label); + + return label; +} + +static GtkWidget * +servlist_open_edit (GtkWidget *parent, ircnet *net) +{ + GtkWidget *editwindow; + GtkWidget *vbox5; + GtkWidget *table3; + GtkWidget *label17; + GtkWidget *label16; + GtkWidget *label21; + GtkWidget *label34; + GtkWidget *comboboxentry_charset; + GtkWidget *hbox1; + GtkWidget *scrolledwindow2; + GtkWidget *treeview_servers; + GtkWidget *vbuttonbox1; + GtkWidget *buttonadd; + GtkWidget *buttonremove; + GtkWidget *buttonedit; + GtkWidget *hseparator2; + GtkWidget *hbuttonbox4; + GtkWidget *button10; + GtkWidget *check; + GtkTreeModel *model; + GtkListStore *store; + GtkCellRenderer *renderer; + char buf[128]; + char buf2[128 + 8]; + + editwindow = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_container_set_border_width (GTK_CONTAINER (editwindow), 4); + snprintf (buf, sizeof (buf), _("XChat: Edit %s"), net->name); + gtk_window_set_title (GTK_WINDOW (editwindow), buf); + gtk_window_set_default_size (GTK_WINDOW (editwindow), 354, 0); + gtk_window_set_position (GTK_WINDOW (editwindow), GTK_WIN_POS_MOUSE); + gtk_window_set_transient_for (GTK_WINDOW (editwindow), GTK_WINDOW (parent)); + gtk_window_set_modal (GTK_WINDOW (editwindow), TRUE); + gtk_window_set_type_hint (GTK_WINDOW (editwindow), GDK_WINDOW_TYPE_HINT_DIALOG); + gtk_window_set_role (GTK_WINDOW (editwindow), "editserv"); + + vbox5 = gtk_vbox_new (FALSE, 0); + gtk_widget_show (vbox5); + gtk_container_add (GTK_CONTAINER (editwindow), vbox5); + + table3 = gtk_table_new (17, 3, FALSE); + gtk_widget_show (table3); + gtk_box_pack_start (GTK_BOX (vbox5), table3, TRUE, TRUE, 0); + gtk_table_set_row_spacings (GTK_TABLE (table3), 2); + gtk_table_set_col_spacings (GTK_TABLE (table3), 8); + + snprintf (buf, sizeof (buf), _("Servers for %s"), net->name); + snprintf (buf2, sizeof (buf2), "<b>%s</b>", buf); + label16 = gtk_label_new (buf2); + gtk_widget_show (label16); + gtk_table_attach (GTK_TABLE (table3), label16, 0, 3, 0, 1, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 3); + gtk_label_set_use_markup (GTK_LABEL (label16), TRUE); + gtk_misc_set_alignment (GTK_MISC (label16), 0, 0.5); + + check = servlist_create_check (0, !(net->flags & FLAG_CYCLE), table3, + 2, 1, _("Connect to selected server only")); + add_tip (check, _("Don't cycle through all the servers when the connection fails.")); + + label17 = bold_label (_("Your Details")); + gtk_table_attach (GTK_TABLE (table3), label17, 0, 3, 3, 4, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 3); + + servlist_create_check (1, net->flags & FLAG_USE_GLOBAL, table3, + 4, 1, _("Use global user information")); + + edit_entry_nick = + servlist_create_entry (table3, _("_Nick name:"), 5, net->nick, + &edit_label_nick, 0); + + edit_entry_nick2 = + servlist_create_entry (table3, _("Second choice:"), 6, net->nick2, + &edit_label_nick2, 0); + + edit_entry_user = + servlist_create_entry (table3, _("_User name:"), 7, net->user, + &edit_label_user, 0); + + edit_entry_real = + servlist_create_entry (table3, _("Rea_l name:"), 8, net->real, + &edit_label_real, 0); + + label21 = bold_label (_("Connecting")); + gtk_table_attach (GTK_TABLE (table3), label21, 0, 3, 9, 10, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 3); + + servlist_create_check (3, net->flags & FLAG_AUTO_CONNECT, table3, + 11, 1, _("Auto connect to this network at startup")); + servlist_create_check (4, !(net->flags & FLAG_USE_PROXY), table3, + 12, 1, _("Bypass proxy server")); + check = servlist_create_check (2, net->flags & FLAG_USE_SSL, table3, + 13, 1, _("Use SSL for all the servers on this network")); +#ifndef USE_OPENSSL + gtk_widget_set_sensitive (check, FALSE); +#endif + check = servlist_create_check (5, net->flags & FLAG_ALLOW_INVALID, table3, + 14, 1, _("Accept invalid SSL certificate")); +#ifndef USE_OPENSSL + gtk_widget_set_sensitive (check, FALSE); +#endif + + edit_entry_join = + servlist_create_entry (table3, _("_Favorite channels:"), 15, + net->autojoin, 0, + _("Channels to join, separated by commas, but not spaces!")); + + edit_entry_cmd = + servlist_create_entry (table3, _("Connect command:"), 16, + net->command, 0, + _("Extra command to execute after connecting. If you need more than one, set this to LOAD -e <filename>, where <filename> is a text-file full of commands to execute.")); + + edit_entry_nickserv = + servlist_create_entry (table3, _("Nickserv password:"), 17, + net->nickserv, 0, + _("If your nickname requires a password, enter it here. Not all IRC networks support this.")); + gtk_entry_set_visibility (GTK_ENTRY (edit_entry_nickserv), FALSE); + + edit_entry_pass = + servlist_create_entry (table3, _("Server password:"), 18, + net->pass, 0, + _("Password for the server, if in doubt, leave blank.")); + gtk_entry_set_visibility (GTK_ENTRY (edit_entry_pass), FALSE); + + label34 = gtk_label_new (_("Character set:")); + gtk_widget_show (label34); + gtk_table_attach (GTK_TABLE (table3), label34, 1, 2, 19, 20, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment (GTK_MISC (label34), 0, 0.5); + + comboboxentry_charset = servlist_create_charsetcombo (); + ignore_changed = TRUE; + gtk_entry_set_text (GTK_ENTRY (GTK_BIN (comboboxentry_charset)->child), net->encoding ? net->encoding : "System default"); + ignore_changed = FALSE; + gtk_widget_show (comboboxentry_charset); + gtk_table_attach (GTK_TABLE (table3), comboboxentry_charset, 2, 3, 19, 20, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (GTK_FILL), 0, 0); + + hbox1 = gtk_hbox_new (FALSE, 0); + gtk_widget_show (hbox1); + gtk_table_attach (GTK_TABLE (table3), hbox1, 1, 3, 1, 2, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); + + scrolledwindow2 = gtk_scrolled_window_new (NULL, NULL); + gtk_widget_show (scrolledwindow2); + gtk_box_pack_start (GTK_BOX (hbox1), scrolledwindow2, TRUE, TRUE, 0); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow2), + GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow2), + GTK_SHADOW_IN); + + store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_BOOLEAN); + model = GTK_TREE_MODEL (store); + + edit_tree = treeview_servers = gtk_tree_view_new_with_model (model); + g_object_unref (model); + gtk_widget_show (treeview_servers); + gtk_container_add (GTK_CONTAINER (scrolledwindow2), treeview_servers); + gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeview_servers), + FALSE); + + renderer = gtk_cell_renderer_text_new (); + g_signal_connect (G_OBJECT (renderer), "edited", + G_CALLBACK (servlist_editserver_cb), model); + gtk_tree_view_insert_column_with_attributes ( + GTK_TREE_VIEW (treeview_servers), -1, + 0, renderer, + "text", 0, + "editable", 1, + NULL); + + vbuttonbox1 = gtk_vbutton_box_new (); + gtk_box_set_spacing (GTK_BOX (vbuttonbox1), 3); + gtk_button_box_set_layout (GTK_BUTTON_BOX (vbuttonbox1), GTK_BUTTONBOX_START); + gtk_widget_show (vbuttonbox1); + gtk_box_pack_start (GTK_BOX (hbox1), vbuttonbox1, FALSE, FALSE, 3); + + buttonadd = gtk_button_new_from_stock ("gtk-add"); + g_signal_connect (G_OBJECT (buttonadd), "clicked", + G_CALLBACK (servlist_addserver_cb), edit_tree); + gtk_widget_show (buttonadd); + gtk_container_add (GTK_CONTAINER (vbuttonbox1), buttonadd); + GTK_WIDGET_SET_FLAGS (buttonadd, GTK_CAN_DEFAULT); + + buttonremove = gtk_button_new_from_stock ("gtk-remove"); + g_signal_connect (G_OBJECT (buttonremove), "clicked", + G_CALLBACK (servlist_deleteserver_cb), NULL); + gtk_widget_show (buttonremove); + gtk_container_add (GTK_CONTAINER (vbuttonbox1), buttonremove); + GTK_WIDGET_SET_FLAGS (buttonremove, GTK_CAN_DEFAULT); + + buttonedit = gtk_button_new_with_mnemonic (_("_Edit")); + g_signal_connect (G_OBJECT (buttonedit), "clicked", + G_CALLBACK (servlist_editserverbutton_cb), NULL); + gtk_widget_show (buttonedit); + gtk_container_add (GTK_CONTAINER (vbuttonbox1), buttonedit); + GTK_WIDGET_SET_FLAGS (buttonedit, GTK_CAN_DEFAULT); + + hseparator2 = gtk_hseparator_new (); + gtk_widget_show (hseparator2); + gtk_box_pack_start (GTK_BOX (vbox5), hseparator2, FALSE, FALSE, 8); + + hbuttonbox4 = gtk_hbutton_box_new (); + gtk_widget_show (hbuttonbox4); + gtk_box_pack_start (GTK_BOX (vbox5), hbuttonbox4, FALSE, FALSE, 0); + gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox4), + GTK_BUTTONBOX_END); + + button10 = gtk_button_new_from_stock ("gtk-close"); + g_signal_connect (G_OBJECT (button10), "clicked", + G_CALLBACK (servlist_edit_close_cb), 0); + gtk_widget_show (button10); + gtk_container_add (GTK_CONTAINER (hbuttonbox4), button10); + GTK_WIDGET_SET_FLAGS (button10, GTK_CAN_DEFAULT); + + if (net->flags & FLAG_USE_GLOBAL) + { + gtk_widget_hide (edit_label_nick); + gtk_widget_hide (edit_entry_nick); + + gtk_widget_hide (edit_label_nick2); + gtk_widget_hide (edit_entry_nick2); + + gtk_widget_hide (edit_label_user); + gtk_widget_hide (edit_entry_user); + + gtk_widget_hide (edit_label_real); + gtk_widget_hide (edit_entry_real); + } + + gtk_widget_grab_focus (button10); + gtk_widget_grab_default (button10); + + return editwindow; +} + +static GtkWidget * +servlist_open_networks (void) +{ + GtkWidget *servlist; + GtkWidget *vbox1; + GtkWidget *label2; + GtkWidget *table1; + GtkWidget *label3; + GtkWidget *label4; + GtkWidget *label5; + GtkWidget *label6; + GtkWidget *label7; + GtkWidget *entry1; + GtkWidget *entry2; + GtkWidget *entry3; + GtkWidget *entry4; + GtkWidget *entry5; + GtkWidget *vbox2; + GtkWidget *label1; + GtkWidget *table4; + GtkWidget *scrolledwindow3; + GtkWidget *treeview_networks; + GtkWidget *checkbutton_skip; + GtkWidget *vbuttonbox2; + GtkWidget *button_add; + GtkWidget *button_remove; + GtkWidget *button_edit; + GtkWidget *button_sort; + GtkWidget *hseparator1; + GtkWidget *hbuttonbox1; + GtkWidget *button_connect; + GtkWidget *button_close; + GtkTreeModel *model; + GtkListStore *store; + GtkCellRenderer *renderer; + + servlist = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_container_set_border_width (GTK_CONTAINER (servlist), 4); + gtk_window_set_title (GTK_WINDOW (servlist), _("XChat: Network List")); + gtk_window_set_default_size (GTK_WINDOW (servlist), win_width, win_height); + gtk_window_set_position (GTK_WINDOW (servlist), GTK_WIN_POS_MOUSE); + gtk_window_set_role (GTK_WINDOW (servlist), "servlist"); + gtk_window_set_type_hint (GTK_WINDOW (servlist), GDK_WINDOW_TYPE_HINT_DIALOG); + if (current_sess) + gtk_window_set_transient_for (GTK_WINDOW (servlist), GTK_WINDOW (current_sess->gui->window)); + + vbox1 = gtk_vbox_new (FALSE, 0); + gtk_widget_show (vbox1); + gtk_container_add (GTK_CONTAINER (servlist), vbox1); + + label2 = bold_label (_("User Information")); + gtk_box_pack_start (GTK_BOX (vbox1), label2, FALSE, FALSE, 0); + + table1 = gtk_table_new (5, 2, FALSE); + gtk_widget_show (table1); + gtk_box_pack_start (GTK_BOX (vbox1), table1, FALSE, FALSE, 0); + gtk_container_set_border_width (GTK_CONTAINER (table1), 8); + gtk_table_set_row_spacings (GTK_TABLE (table1), 2); + gtk_table_set_col_spacings (GTK_TABLE (table1), 4); + + label3 = gtk_label_new_with_mnemonic (_("_Nick name:")); + gtk_widget_show (label3); + gtk_table_attach (GTK_TABLE (table1), label3, 0, 1, 0, 1, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment (GTK_MISC (label3), 0, 0.5); + + label4 = gtk_label_new (_("Second choice:")); + gtk_widget_show (label4); + gtk_table_attach (GTK_TABLE (table1), label4, 0, 1, 1, 2, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment (GTK_MISC (label4), 0, 0.5); + + label5 = gtk_label_new (_("Third choice:")); + gtk_widget_show (label5); + gtk_table_attach (GTK_TABLE (table1), label5, 0, 1, 2, 3, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment (GTK_MISC (label5), 0, 0.5); + + label6 = gtk_label_new_with_mnemonic (_("_User name:")); + gtk_widget_show (label6); + gtk_table_attach (GTK_TABLE (table1), label6, 0, 1, 3, 4, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment (GTK_MISC (label6), 0, 0.5); + + label7 = gtk_label_new_with_mnemonic (_("Rea_l name:")); + gtk_widget_show (label7); + gtk_table_attach (GTK_TABLE (table1), label7, 0, 1, 4, 5, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment (GTK_MISC (label7), 0, 0.5); + + entry_nick1 = entry1 = gtk_entry_new (); + gtk_entry_set_text (GTK_ENTRY (entry1), prefs.nick1); + gtk_widget_show (entry1); + gtk_table_attach (GTK_TABLE (table1), entry1, 1, 2, 0, 1, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + entry_nick2 = entry2 = gtk_entry_new (); + gtk_entry_set_text (GTK_ENTRY (entry2), prefs.nick2); + gtk_widget_show (entry2); + gtk_table_attach (GTK_TABLE (table1), entry2, 1, 2, 1, 2, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + entry_nick3 = entry3 = gtk_entry_new (); + gtk_entry_set_text (GTK_ENTRY (entry3), prefs.nick3); + gtk_widget_show (entry3); + gtk_table_attach (GTK_TABLE (table1), entry3, 1, 2, 2, 3, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + entry_guser = entry4 = gtk_entry_new (); + gtk_entry_set_text (GTK_ENTRY (entry4), prefs.username); + gtk_widget_show (entry4); + gtk_table_attach (GTK_TABLE (table1), entry4, 1, 2, 3, 4, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + entry_greal = entry5 = gtk_entry_new (); + gtk_entry_set_text (GTK_ENTRY (entry5), prefs.realname); + gtk_widget_show (entry5); + gtk_table_attach (GTK_TABLE (table1), entry5, 1, 2, 4, 5, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + vbox2 = gtk_vbox_new (FALSE, 0); + gtk_widget_show (vbox2); + gtk_box_pack_start (GTK_BOX (vbox1), vbox2, TRUE, TRUE, 0); + + label1 = bold_label (_("Networks")); + gtk_box_pack_start (GTK_BOX (vbox2), label1, FALSE, FALSE, 0); + + table4 = gtk_table_new (2, 2, FALSE); + gtk_widget_show (table4); + gtk_box_pack_start (GTK_BOX (vbox2), table4, TRUE, TRUE, 0); + gtk_container_set_border_width (GTK_CONTAINER (table4), 8); + gtk_table_set_row_spacings (GTK_TABLE (table4), 2); + gtk_table_set_col_spacings (GTK_TABLE (table4), 3); + + scrolledwindow3 = gtk_scrolled_window_new (NULL, NULL); + gtk_widget_show (scrolledwindow3); + gtk_table_attach (GTK_TABLE (table4), scrolledwindow3, 0, 1, 0, 1, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow3), + GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow3), + GTK_SHADOW_IN); + + store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_BOOLEAN); + model = GTK_TREE_MODEL (store); + + networks_tree = treeview_networks = gtk_tree_view_new_with_model (model); + g_object_unref (model); + gtk_widget_show (treeview_networks); + gtk_container_add (GTK_CONTAINER (scrolledwindow3), treeview_networks); + gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeview_networks), + FALSE); + + renderer = gtk_cell_renderer_text_new (); + g_signal_connect (G_OBJECT (renderer), "edited", + G_CALLBACK (servlist_celledit_cb), model); + gtk_tree_view_insert_column_with_attributes ( + GTK_TREE_VIEW (treeview_networks), -1, + 0, renderer, + "text", 0, + "editable", 1, + NULL); + + checkbutton_skip = + gtk_check_button_new_with_mnemonic (_("Skip network list on startup")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton_skip), + prefs.slist_skip); + g_signal_connect (G_OBJECT (checkbutton_skip), "toggled", + G_CALLBACK (no_servlist), 0); + gtk_widget_show (checkbutton_skip); + gtk_table_attach (GTK_TABLE (table4), checkbutton_skip, 0, 2, 1, 2, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + vbuttonbox2 = gtk_vbutton_box_new (); + gtk_box_set_spacing (GTK_BOX (vbuttonbox2), 3); + gtk_button_box_set_layout (GTK_BUTTON_BOX (vbuttonbox2), GTK_BUTTONBOX_START); + gtk_widget_show (vbuttonbox2); + gtk_table_attach (GTK_TABLE (table4), vbuttonbox2, 1, 2, 0, 1, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (GTK_FILL), 0, 0); + + button_add = gtk_button_new_from_stock ("gtk-add"); + g_signal_connect (G_OBJECT (button_add), "clicked", + G_CALLBACK (servlist_addnet_cb), networks_tree); + gtk_widget_show (button_add); + gtk_container_add (GTK_CONTAINER (vbuttonbox2), button_add); + GTK_WIDGET_SET_FLAGS (button_add, GTK_CAN_DEFAULT); + + button_remove = gtk_button_new_from_stock ("gtk-remove"); + g_signal_connect (G_OBJECT (button_remove), "clicked", + G_CALLBACK (servlist_deletenet_cb), 0); + gtk_widget_show (button_remove); + gtk_container_add (GTK_CONTAINER (vbuttonbox2), button_remove); + GTK_WIDGET_SET_FLAGS (button_remove, GTK_CAN_DEFAULT); + + button_edit = gtk_button_new_with_mnemonic (_("_Edit...")); + g_signal_connect (G_OBJECT (button_edit), "clicked", + G_CALLBACK (servlist_edit_cb), 0); + gtk_widget_show (button_edit); + gtk_container_add (GTK_CONTAINER (vbuttonbox2), button_edit); + GTK_WIDGET_SET_FLAGS (button_edit, GTK_CAN_DEFAULT); + + button_sort = gtk_button_new_with_mnemonic (_("_Sort")); + add_tip (button_sort, _("Sorts the network list in alphabetical order. " + "Use SHIFT-UP and SHIFT-DOWN keys to move a row.")); + g_signal_connect (G_OBJECT (button_sort), "clicked", + G_CALLBACK (servlist_sort), 0); + gtk_widget_show (button_sort); + gtk_container_add (GTK_CONTAINER (vbuttonbox2), button_sort); + GTK_WIDGET_SET_FLAGS (button_sort, GTK_CAN_DEFAULT); + + hseparator1 = gtk_hseparator_new (); + gtk_widget_show (hseparator1); + gtk_box_pack_start (GTK_BOX (vbox1), hseparator1, FALSE, TRUE, 4); + + hbuttonbox1 = gtk_hbutton_box_new (); + gtk_widget_show (hbuttonbox1); + gtk_box_pack_start (GTK_BOX (vbox1), hbuttonbox1, FALSE, TRUE, 0); + gtk_container_set_border_width (GTK_CONTAINER (hbuttonbox1), 8); + + button_close = gtk_button_new_from_stock ("gtk-close"); + gtk_widget_show (button_close); + g_signal_connect (G_OBJECT (button_close), "clicked", + G_CALLBACK (servlist_close_cb), 0); + gtk_container_add (GTK_CONTAINER (hbuttonbox1), button_close); + GTK_WIDGET_SET_FLAGS (button_close, GTK_CAN_DEFAULT); + + button_connect = gtkutil_button (hbuttonbox1, GTK_STOCK_CONNECT, NULL, + servlist_connect_cb, NULL, _("C_onnect")); + GTK_WIDGET_SET_FLAGS (button_connect, GTK_CAN_DEFAULT); + + gtk_label_set_mnemonic_widget (GTK_LABEL (label3), entry1); + gtk_label_set_mnemonic_widget (GTK_LABEL (label6), entry4); + gtk_label_set_mnemonic_widget (GTK_LABEL (label7), entry5); + + gtk_widget_grab_focus (networks_tree); + gtk_widget_grab_default (button_close); + return servlist; +} + +void +fe_serverlist_open (session *sess) +{ + if (serverlist_win) + { + gtk_window_present (GTK_WINDOW (serverlist_win)); + return; + } + + servlist_sess = sess; + + serverlist_win = servlist_open_networks (); + gtkutil_set_icon (serverlist_win); + + servlist_networks_populate (networks_tree, network_list); + + g_signal_connect (G_OBJECT (serverlist_win), "delete_event", + G_CALLBACK (servlist_delete_cb), 0); + g_signal_connect (G_OBJECT (serverlist_win), "configure_event", + G_CALLBACK (servlist_configure_cb), 0); + g_signal_connect (G_OBJECT (gtk_tree_view_get_selection (GTK_TREE_VIEW (networks_tree))), + "changed", G_CALLBACK (servlist_network_row_cb), NULL); + g_signal_connect (G_OBJECT (networks_tree), "key_press_event", + G_CALLBACK (servlist_net_keypress_cb), networks_tree); + + gtk_widget_show (serverlist_win); +} diff --git a/xchat-2.8.8/src/fe-gtk/setup.c b/xchat-2.8.8/src/fe-gtk/setup.c new file mode 100644 index 0000000..f271d6e --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/setup.c @@ -0,0 +1,2134 @@ +/* X-Chat + * Copyright (C) 2004-2007 Peter Zelezny. + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/stat.h> +#include <sys/types.h> + +#include "../common/xchat.h" +#include "../common/cfgfiles.h" +#include "../common/fe.h" +#include "../common/text.h" +#include "../common/userlist.h" +#include "../common/util.h" +#include "../common/xchatc.h" +#include "fe-gtk.h" +#include "gtkutil.h" +#include "maingui.h" +#include "palette.h" +#include "pixmaps.h" +#include "menu.h" + +#include <gtk/gtkcolorseldialog.h> +#include <gtk/gtktable.h> +#include <gtk/gtkentry.h> +#include <gtk/gtklabel.h> +#include <gtk/gtkmisc.h> +#include <gtk/gtkhbox.h> +#include <gtk/gtkvbox.h> +#include <gtk/gtkalignment.h> +#include <gtk/gtknotebook.h> +#include <gtk/gtkframe.h> +#include <gtk/gtkfontsel.h> +#include <gtk/gtkcheckbutton.h> +#include <gtk/gtkscrolledwindow.h> +#include <gtk/gtkspinbutton.h> +#include <gtk/gtkstock.h> +#include <gtk/gtktreeview.h> +#include <gtk/gtkhbbox.h> +#include <gtk/gtkhseparator.h> +#include <gtk/gtkradiobutton.h> +#include <gtk/gtkcombobox.h> +#include <gtk/gtkliststore.h> +#include <gtk/gtktreestore.h> +#include <gtk/gtktreeselection.h> +#include <gtk/gtkcellrenderertext.h> +#include <gtk/gtkhscale.h> +#ifdef WIN32 +#include "../common/fe.h" +#endif +#ifdef USE_GTKSPELL +#include <gtk/gtktextview.h> +#include <gtkspell/gtkspell.h> +#endif +#ifdef USE_LIBSEXY +#include "sexy-spell-entry.h" +#endif + +GtkStyle *create_input_style (GtkStyle *); + +#define LABEL_INDENT 12 + +static int last_selected_page = 0; +static int last_selected_row = 0; /* sound row */ +static gboolean color_change; +static struct xchatprefs setup_prefs; +static GtkWidget *cancel_button; +static GtkWidget *font_dialog = NULL; + +enum +{ + ST_END, + ST_TOGGLE, + ST_TOGGLR, + ST_3OGGLE, + ST_ENTRY, + ST_EFONT, + ST_EFILE, + ST_EFOLDER, + ST_MENU, + ST_RADIO, + ST_NUMBER, + ST_HSCALE, + ST_HEADER, + ST_LABEL, + ST_ALERTHEAD +}; + +typedef struct +{ + int type; + char *label; + int offset; + char *tooltip; + char const *const *list; + int extra; +} setting; + + +static const setting textbox_settings[] = +{ + {ST_HEADER, N_("Text Box Appearance"),0,0,0}, + {ST_EFONT, N_("Font:"), P_OFFSETNL(font_normal), 0, 0, sizeof prefs.font_normal}, + {ST_EFILE, N_("Background image:"), P_OFFSETNL(background), 0, 0, sizeof prefs.background}, + {ST_NUMBER, N_("Scrollback lines:"), P_OFFINTNL(max_lines),0,0,100000}, + {ST_TOGGLE, N_("Colored nick names"), P_OFFINTNL(colorednicks), + N_("Give each person on IRC a different color"),0,0}, + {ST_TOGGLR, N_("Indent nick names"), P_OFFINTNL(indent_nicks), + N_("Make nick names right-justified"),0,0}, + {ST_TOGGLE, N_("Transparent background"), P_OFFINTNL(transparent),0,0,0}, + {ST_TOGGLR, N_("Show marker line"), P_OFFINTNL(show_marker), + N_("Insert a red line after the last read text."),0,0}, + {ST_HEADER, N_("Transparency Settings"), 0,0,0}, + {ST_HSCALE, N_("Red:"), P_OFFINTNL(tint_red),0,0,0}, + {ST_HSCALE, N_("Green:"), P_OFFINTNL(tint_green),0,0,0}, + {ST_HSCALE, N_("Blue:"), P_OFFINTNL(tint_blue),0,0,0}, + + {ST_HEADER, N_("Time Stamps"),0,0,0}, + {ST_TOGGLE, N_("Enable time stamps"), P_OFFINTNL(timestamp),0,0,2}, + {ST_ENTRY, N_("Time stamp format:"), P_OFFSETNL(stamp_format), + N_("See strftime manpage for details."),0,sizeof prefs.stamp_format}, + + {ST_END, 0, 0, 0, 0, 0} +}; + +static const char *const tabcompmenu[] = +{ + N_("A-Z"), + N_("Last-spoke order"), + NULL +}; + +static const setting inputbox_settings[] = +{ + {ST_HEADER, N_("Input box"),0,0,0}, + {ST_TOGGLE, N_("Use the Text box font and colors"), P_OFFINTNL(style_inputbox),0,0,0}, +#if defined(USE_GTKSPELL) || defined(USE_LIBSEXY) + {ST_TOGGLE, N_("Spell checking"), P_OFFINTNL(gui_input_spell),0,0,0}, +#endif + + {ST_HEADER, N_("Nick Completion"),0,0,0}, + {ST_TOGGLE, N_("Automatic nick completion (without TAB key)"), P_OFFINTNL(nickcompletion), + 0,0,0}, + {ST_ENTRY, N_("Nick completion suffix:"), P_OFFSETNL(nick_suffix),0,0,sizeof prefs.nick_suffix}, + {ST_MENU, N_("Nick completion sorted:"), P_OFFINTNL(completion_sort), 0, tabcompmenu, 0}, + +#if 0 /* obsolete */ + {ST_HEADER, N_("Input Box Codes"),0,0,0}, + {ST_TOGGLE, N_("Interpret %nnn as an ASCII value"), P_OFFINTNL(perc_ascii),0,0,0}, + {ST_TOGGLE, N_("Interpret %C, %B as Color, Bold etc"), P_OFFINTNL(perc_color),0,0,0}, +#endif + + {ST_END, 0, 0, 0, 0, 0} +}; + +/*static const char *const lagmenutext[] = +{ + N_("Off"), + N_("Graph"), + N_("Info text"), + N_("Both"), + NULL +};*/ + +static const char *const ulmenutext[] = +{ + N_("A-Z, Ops first"), + N_("A-Z"), + N_("Z-A, Ops last"), + N_("Z-A"), + N_("Unsorted"), + NULL +}; + +static const char *const cspos[] = +{ + N_("Left (Upper)"), + N_("Left (Lower)"), + N_("Right (Upper)"), + N_("Right (Lower)"), + N_("Top"), + N_("Bottom"), + N_("Hidden"), + NULL +}; + +static const char *const ulpos[] = +{ + N_("Left (Upper)"), + N_("Left (Lower)"), + N_("Right (Upper)"), + N_("Right (Lower)"), + NULL +}; + +static const setting userlist_settings[] = +{ + {ST_HEADER, N_("User List"),0,0,0}, + {ST_TOGGLE, N_("Show hostnames in user list"), P_OFFINTNL(showhostname_in_userlist), 0, 0, 0}, + {ST_TOGGLE, N_("Use the Text box font and colors"), P_OFFINTNL(style_namelistgad),0,0,0}, +/* {ST_TOGGLE, N_("Resizable user list"), P_OFFINTNL(paned_userlist),0,0,0},*/ + {ST_MENU, N_("User list sorted by:"), P_OFFINTNL(userlist_sort), 0, ulmenutext, 0}, + {ST_MENU, N_("Show user list at:"), P_OFFINTNL(gui_ulist_pos), 0, ulpos, 1}, + + {ST_HEADER, N_("Away tracking"),0,0,0}, + {ST_TOGGLE, N_("Track the Away status of users and mark them in a different color"), P_OFFINTNL(away_track),0,0,2}, + {ST_NUMBER, N_("On channels smaller than:"), P_OFFINTNL(away_size_max),0,0,10000}, + + {ST_HEADER, N_("Action Upon Double Click"),0,0,0}, + {ST_ENTRY, N_("Execute command:"), P_OFFSETNL(doubleclickuser), 0, 0, sizeof prefs.doubleclickuser}, + +/* {ST_HEADER, N_("Extra Gadgets"),0,0,0}, + {ST_MENU, N_("Lag meter:"), P_OFFINTNL(lagometer), 0, lagmenutext, 0}, + {ST_MENU, N_("Throttle meter:"), P_OFFINTNL(throttlemeter), 0, lagmenutext, 0},*/ + + {ST_END, 0, 0, 0, 0, 0} +}; + +static const char *const tabwin[] = +{ + N_("Windows"), + N_("Tabs"), + NULL +}; + +#if 0 +static const char *const focusnewtabsmenu[] = +{ + N_("Never"), + N_("Always"), + N_("Only requested tabs"), + NULL +}; +#endif + +static const char *const swtype[] = +{ + N_("Tabs"), /* 0 tabs */ + "", /* 1 reserved */ + N_("Tree"), /* 2 tree */ + NULL +}; + +static const setting tabs_settings[] = +{ + /*{ST_HEADER, N_("Channel Switcher"),0,0,0},*/ + {ST_RADIO, N_("Switcher type:"),P_OFFINTNL(tab_layout), 0, swtype, 0}, + {ST_TOGGLE, N_("Open an extra tab for server messages"), P_OFFINTNL(use_server_tab), 0, 0, 0}, + {ST_TOGGLE, N_("Open an extra tab for server notices"), P_OFFINTNL(notices_tabs), 0, 0, 0}, + {ST_TOGGLE, N_("Open a new tab when you receive a private message"), P_OFFINTNL(autodialog), 0, 0, 0}, + {ST_TOGGLE, N_("Sort tabs in alphabetical order"), P_OFFINTNL(tab_sort), 0, 0, 0}, + {ST_TOGGLE, N_("Smaller text"), P_OFFINTNL(tab_small), 0, 0, 0}, +#if 0 + {ST_MENU, N_("Focus new tabs:"), P_OFFINTNL(newtabstofront), 0, focusnewtabsmenu, 0}, +#endif + {ST_MENU, N_("Show channel switcher at:"), P_OFFINTNL(tab_pos), 0, cspos, 1}, + {ST_NUMBER, N_("Shorten tab labels to:"), P_OFFINTNL(truncchans), 0, (const char **)N_("letters."), 99}, + + {ST_HEADER, N_("Tabs or Windows"),0,0,0}, + {ST_MENU, N_("Open channels in:"), P_OFFINTNL(tabchannels), 0, tabwin, 0}, + {ST_MENU, N_("Open dialogs in:"), P_OFFINTNL(privmsgtab), 0, tabwin, 0}, + {ST_MENU, N_("Open utilities in:"), P_OFFINTNL(windows_as_tabs), N_("Open DCC, Ignore, Notify etc, in tabs or windows?"), tabwin, 0}, + + {ST_END, 0, 0, 0, 0, 0} +}; + +static const char *const dccaccept[] = +{ + N_("No"), + N_("Yes"), + N_("Browse for save folder every time"), + NULL +}; + +static const setting filexfer_settings[] = +{ + {ST_HEADER, N_("Files and Directories"), 0, 0, 0}, + {ST_MENU, N_("Auto accept file offers:"), P_OFFINTNL(autodccsend), 0, dccaccept, 0}, + {ST_EFOLDER,N_("Download files to:"), P_OFFSETNL(dccdir), 0, 0, sizeof prefs.dccdir}, + {ST_EFOLDER,N_("Move completed files to:"), P_OFFSETNL(dcc_completed_dir), 0, 0, sizeof prefs.dcc_completed_dir}, + {ST_TOGGLE, N_("Save nick name in filenames"), P_OFFINTNL(dccwithnick), 0, 0, 0}, + + {ST_HEADER, N_("Network Settings"), 0, 0, 0}, + {ST_TOGGLE, N_("Get my address from the IRC server"), P_OFFINTNL(ip_from_server), + N_("Asks the IRC server for your real address. Use this if you have a 192.168.*.* address!"), 0, 0}, + {ST_ENTRY, N_("DCC IP address:"), P_OFFSETNL(dcc_ip_str), + N_("Claim you are at this address when offering files."), 0, sizeof prefs.dcc_ip_str}, + {ST_NUMBER, N_("First DCC send port:"), P_OFFINTNL(first_dcc_send_port), 0, 0, 65535}, + {ST_NUMBER, N_("Last DCC send port:"), P_OFFINTNL(last_dcc_send_port), 0, + (const char **)N_("!Leave ports at zero for full range."), 65535}, + + {ST_HEADER, N_("Maximum File Transfer Speeds (bytes per second)"), 0, 0, 0}, + {ST_NUMBER, N_("One upload:"), P_OFFINTNL(dcc_max_send_cps), + N_("Maximum speed for one transfer"), 0, 1000000}, + {ST_NUMBER, N_("One download:"), P_OFFINTNL(dcc_max_get_cps), + N_("Maximum speed for one transfer"), 0, 1000000}, + {ST_NUMBER, N_("All uploads combined:"), P_OFFINTNL(dcc_global_max_send_cps), + N_("Maximum speed for all files"), 0, 1000000}, + {ST_NUMBER, N_("All downloads combined:"), P_OFFINTNL(dcc_global_max_get_cps), + N_("Maximum speed for all files"), 0, 1000000}, + + {ST_END, 0, 0, 0, 0, 0} +}; + +static const int balloonlist[3] = +{ + P_OFFINTNL(input_balloon_chans), P_OFFINTNL(input_balloon_priv), P_OFFINTNL(input_balloon_hilight) +}; + +static const int trayblinklist[3] = +{ + P_OFFINTNL(input_tray_chans), P_OFFINTNL(input_tray_priv), P_OFFINTNL(input_tray_hilight) +}; + +static const int taskbarlist[3] = +{ + P_OFFINTNL(input_flash_chans), P_OFFINTNL(input_flash_priv), P_OFFINTNL(input_flash_hilight) +}; + +static const int beeplist[3] = +{ + P_OFFINTNL(input_beep_chans), P_OFFINTNL(input_beep_priv), P_OFFINTNL(input_beep_hilight) +}; + +static const setting alert_settings[] = +{ + {ST_HEADER, N_("Alerts"),0,0,0}, + + {ST_ALERTHEAD}, +#ifndef WIN32 + {ST_3OGGLE, N_("Show tray balloons on:"), 0, 0, (void *)balloonlist, 0}, +#endif + {ST_3OGGLE, N_("Blink tray icon on:"), 0, 0, (void *)trayblinklist, 0}, + {ST_3OGGLE, N_("Blink task bar on:"), 0, 0, (void *)taskbarlist, 0}, + {ST_3OGGLE, N_("Make a beep sound on:"), 0, 0, (void *)beeplist, 0}, + + {ST_TOGGLE, N_("Enable system tray icon"), P_OFFINTNL(gui_tray), 0, 0, 0}, + + {ST_HEADER, N_("Highlighted Messages"),0,0,0}, + {ST_LABEL, N_("Highlighted messages are ones where your nickname is mentioned, but also:"), 0, 0, 0, 1}, + + {ST_ENTRY, N_("Extra words to highlight:"), P_OFFSETNL(irc_extra_hilight), 0, 0, sizeof prefs.irc_extra_hilight}, + {ST_ENTRY, N_("Nick names not to highlight:"), P_OFFSETNL(irc_no_hilight), 0, 0, sizeof prefs.irc_no_hilight}, + {ST_ENTRY, N_("Nick names to always highlight:"), P_OFFSETNL(irc_nick_hilight), 0, 0, sizeof prefs.irc_nick_hilight}, + {ST_LABEL, N_("Separate multiple words with commas.\nWildcards are accepted.")}, + {ST_END, 0, 0, 0, 0, 0} +}; + +static const setting general_settings[] = +{ + {ST_HEADER, N_("Default Messages"),0,0,0}, + {ST_ENTRY, N_("Quit:"), P_OFFSETNL(quitreason), 0, 0, sizeof prefs.quitreason}, + {ST_ENTRY, N_("Leave channel:"), P_OFFSETNL(partreason), 0, 0, sizeof prefs.partreason}, + {ST_ENTRY, N_("Away:"), P_OFFSETNL(awayreason), 0, 0, sizeof prefs.awayreason}, + + {ST_HEADER, N_("Away"),0,0,0}, + {ST_TOGGLE, N_("Announce away messages"), P_OFFINTNL(show_away_message), + N_("Announce your away messages to all channels"), 0, 0}, + {ST_TOGGLE, N_("Show away once"), P_OFFINTNL(show_away_once), N_("Show identical away messages only once"), 0, 0}, + {ST_TOGGLE, N_("Automatically unmark away"), P_OFFINTNL(auto_unmark_away), N_("Unmark yourself as away before sending messages"), 0, 0}, + {ST_END, 0, 0, 0, 0, 0} +}; + +#if 0 +static const setting advanced_settings[] = +{ + {ST_HEADER, N_("Advanced Settings"),0,0,0}, + {ST_NUMBER, N_("Auto reconnect delay:"), P_OFFINTNL(recon_delay), 0, 0, 9999}, + {ST_TOGGLE, N_("Display MODEs in raw form"), P_OFFINTNL(raw_modes), 0, 0, 0}, + {ST_TOGGLE, N_("Whois on notify"), P_OFFINTNL(whois_on_notifyonline), N_("Sends a /WHOIS when a user comes online in your notify list"), 0, 0}, + {ST_TOGGLE, N_("Hide join and part messages"), P_OFFINTNL(confmode), N_("Hide channel join/part messages by default"), 0, 0}, + {ST_HEADER, N_("Auto Open DCC Windows"),0,0,0}, + {ST_TOGGLE, N_("Send window"), P_OFFINTNL(autoopendccsendwindow), 0, 0, 0}, + {ST_TOGGLE, N_("Receive window"), P_OFFINTNL(autoopendccrecvwindow), 0, 0, 0}, + {ST_TOGGLE, N_("Chat window"), P_OFFINTNL(autoopendccchatwindow), 0, 0, 0}, + + {ST_END, 0, 0, 0, 0, 0} +}; +#endif + +static const setting logging_settings[] = +{ + {ST_HEADER, N_("Logging"),0,0,0}, + {ST_TOGGLE, N_("Display scrollback from previous session"), P_OFFINTNL(text_replay), 0, 0, 0}, + {ST_TOGGLE, N_("Enable logging of conversations to disk"), P_OFFINTNL(logging), 0, 0, 2}, + {ST_ENTRY, N_("Log filename:"), P_OFFSETNL(logmask), 0, 0, sizeof prefs.logmask}, + {ST_LABEL, N_("%s=Server %c=Channel %n=Network.")}, + + {ST_HEADER, N_("Time Stamps"),0,0,0}, + {ST_TOGGLE, N_("Insert timestamps in logs"), P_OFFINTNL(timestamp_logs), 0, 0, 2}, + {ST_ENTRY, N_("Log timestamp format:"), P_OFFSETNL(timestamp_log_format), 0, 0, sizeof prefs.timestamp_log_format}, + {ST_LABEL, N_("See strftime manpage for details.")}, + + {ST_END, 0, 0, 0, 0, 0} +}; + +static const char *const proxytypes[] = +{ + N_("(Disabled)"), + N_("Wingate"), + N_("Socks4"), + N_("Socks5"), + N_("HTTP"), +#ifdef USE_MSPROXY + N_("MS Proxy (ISA)"), +#endif + NULL +}; + +static const char *const proxyuse[] = +{ + N_("All Connections"), + N_("IRC Server Only"), + N_("DCC Get Only"), + NULL +}; + +static const setting network_settings[] = +{ + {ST_HEADER, N_("Your Address"), 0, 0, 0, 0}, + {ST_ENTRY, N_("Bind to:"), P_OFFSETNL(hostname), 0, 0, sizeof prefs.hostname}, + {ST_LABEL, N_("Only useful for computers with multiple addresses.")}, + + {ST_HEADER, N_("Proxy Server"), 0, 0, 0, 0}, + {ST_ENTRY, N_("Hostname:"), P_OFFSETNL(proxy_host), 0, 0, sizeof prefs.proxy_host}, + {ST_NUMBER, N_("Port:"), P_OFFINTNL(proxy_port), 0, 0, 65535}, + {ST_MENU, N_("Type:"), P_OFFINTNL(proxy_type), 0, proxytypes, 0}, + {ST_MENU, N_("Use proxy for:"), P_OFFINTNL(proxy_use), 0, proxyuse, 0}, + + {ST_HEADER, N_("Proxy Authentication"), 0, 0, 0, 0}, +#ifdef USE_MSPROXY + {ST_TOGGLE, N_("Use Authentication (MS Proxy, HTTP or Socks5 only)"), P_OFFINTNL(proxy_auth), 0, 0, 0}, +#else + {ST_TOGGLE, N_("Use Authentication (HTTP or Socks5 only)"), P_OFFINTNL(proxy_auth), 0, 0, 0}, +#endif + {ST_ENTRY, N_("Username:"), P_OFFSETNL(proxy_user), 0, 0, sizeof prefs.proxy_user}, + {ST_ENTRY, N_("Password:"), P_OFFSETNL(proxy_pass), 0, GINT_TO_POINTER(1), sizeof prefs.proxy_pass}, + + {ST_END, 0, 0, 0, 0, 0} +}; + +#define setup_get_str(pr,set) (((char *)pr)+set->offset) +#define setup_get_int(pr,set) *(((int *)pr)+set->offset) +#define setup_get_int3(pr,off) *(((int *)pr)+off) + +#define setup_set_int(pr,set,num) *((int *)pr+set->offset)=num +#define setup_set_str(pr,set,str) strcpy(((char *)pr)+set->offset,str) + + +static void +setup_3oggle_cb (GtkToggleButton *but, unsigned int *setting) +{ + *setting = but->active; +} + +static void +setup_headlabel (GtkWidget *tab, int row, int col, char *text) +{ + GtkWidget *label; + char buf[128]; + char *sp; + + snprintf (buf, sizeof (buf), "<b><span size=\"smaller\">%s</span></b>", text); + sp = strchr (buf + 17, ' '); + if (sp) + *sp = '\n'; + + label = gtk_label_new (NULL); + gtk_label_set_markup (GTK_LABEL (label), buf); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (tab), label, col, col + 1, row, row + 1, 0, 0, 4, 0); +} + +static void +setup_create_alert_header (GtkWidget *tab, int row, const setting *set) +{ + setup_headlabel (tab, row, 3, _("Channel Message")); + setup_headlabel (tab, row, 4, _("Private Message")); + setup_headlabel (tab, row, 5, _("Highlighted Message")); +} + +/* makes 3 toggles side-by-side */ + +static void +setup_create_3oggle (GtkWidget *tab, int row, const setting *set) +{ + GtkWidget *label, *wid; + int *offsets = (int *)set->list; + + label = gtk_label_new (_(set->label)); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (tab), label, 2, 3, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); + + wid = gtk_check_button_new (); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wid), + setup_get_int3 (&setup_prefs, offsets[0])); + g_signal_connect (G_OBJECT (wid), "toggled", + G_CALLBACK (setup_3oggle_cb), ((int *)&setup_prefs) + offsets[0]); + gtk_table_attach (GTK_TABLE (tab), wid, 3, 4, row, row + 1, 0, 0, 0, 0); + + wid = gtk_check_button_new (); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wid), + setup_get_int3 (&setup_prefs, offsets[1])); + g_signal_connect (G_OBJECT (wid), "toggled", + G_CALLBACK (setup_3oggle_cb), ((int *)&setup_prefs) + offsets[1]); + gtk_table_attach (GTK_TABLE (tab), wid, 4, 5, row, row + 1, 0, 0, 0, 0); + + wid = gtk_check_button_new (); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wid), + setup_get_int3 (&setup_prefs, offsets[2])); + g_signal_connect (G_OBJECT (wid), "toggled", + G_CALLBACK (setup_3oggle_cb), ((int *)&setup_prefs) + offsets[2]); + gtk_table_attach (GTK_TABLE (tab), wid, 5, 6, row, row + 1, 0, 0, 0, 0); +} + +static void +setup_toggle_cb (GtkToggleButton *but, const setting *set) +{ + GtkWidget *label, *disable_wid; + + setup_set_int (&setup_prefs, set, but->active ? 1 : 0); + + /* does this toggle also enable/disable another widget? */ + disable_wid = g_object_get_data (G_OBJECT (but), "nxt"); + if (disable_wid) + { + gtk_widget_set_sensitive (disable_wid, but->active); + label = g_object_get_data (G_OBJECT (disable_wid), "lbl"); + gtk_widget_set_sensitive (label, but->active); + } +} + +static void +setup_create_toggleR (GtkWidget *tab, int row, const setting *set) +{ + GtkWidget *wid; + + wid = gtk_check_button_new_with_label (_(set->label)); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wid), + setup_get_int (&setup_prefs, set)); + g_signal_connect (G_OBJECT (wid), "toggled", + G_CALLBACK (setup_toggle_cb), (gpointer)set); + if (set->tooltip) + add_tip (wid, _(set->tooltip)); + gtk_table_attach (GTK_TABLE (tab), wid, 4, 5, row, row + 1, + GTK_EXPAND | GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); +} + +static GtkWidget * +setup_create_toggleL (GtkWidget *tab, int row, const setting *set) +{ + GtkWidget *wid; + + wid = gtk_check_button_new_with_label (_(set->label)); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wid), + setup_get_int (&setup_prefs, set)); + g_signal_connect (G_OBJECT (wid), "toggled", + G_CALLBACK (setup_toggle_cb), (gpointer)set); + if (set->tooltip) + add_tip (wid, _(set->tooltip)); + gtk_table_attach (GTK_TABLE (tab), wid, 2, row==6 ? 6 : 4, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); + + return wid; +} + +#if 0 +static void +setup_create_toggle (GtkWidget *box, int row, const setting *set) +{ + GtkWidget *wid; + + wid = gtk_check_button_new_with_label (_(set->label)); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wid), + setup_get_int (&setup_prefs, set)); + g_signal_connect (G_OBJECT (wid), "toggled", + G_CALLBACK (setup_toggle_cb), (gpointer)set); + if (set->tooltip) + add_tip (wid, _(set->tooltip)); + gtk_box_pack_start (GTK_BOX (box), wid, 0, 0, 0); +} +#endif + +static GtkWidget * +setup_create_italic_label (char *text) +{ + GtkWidget *label; + char buf[256]; + + label = gtk_label_new (NULL); + snprintf (buf, sizeof (buf), "<i><span size=\"smaller\">%s</span></i>", text); + gtk_label_set_markup (GTK_LABEL (label), buf); + gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_CENTER); + + return label; +} + +static void +setup_spin_cb (GtkSpinButton *spin, const setting *set) +{ + setup_set_int (&setup_prefs, set, gtk_spin_button_get_value_as_int (spin)); +} + +static GtkWidget * +setup_create_spin (GtkWidget *table, int row, const setting *set) +{ + GtkWidget *label, *wid, *rbox, *align; + char *text; + + label = gtk_label_new (_(set->label)); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), label, 2, 3, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); + + align = gtk_alignment_new (0.0, 0.5, 0.0, 0.0); + gtk_table_attach (GTK_TABLE (table), align, 3, 4, row, row + 1, + GTK_EXPAND | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + + rbox = gtk_hbox_new (0, 0); + gtk_container_add (GTK_CONTAINER (align), rbox); + + wid = gtk_spin_button_new_with_range (0, set->extra, 1); + g_object_set_data (G_OBJECT (wid), "lbl", label); + if (set->tooltip) + add_tip (wid, _(set->tooltip)); + gtk_spin_button_set_value (GTK_SPIN_BUTTON (wid), + setup_get_int (&setup_prefs, set)); + g_signal_connect (G_OBJECT (wid), "value_changed", + G_CALLBACK (setup_spin_cb), (gpointer)set); + gtk_box_pack_start (GTK_BOX (rbox), wid, 0, 0, 0); + + if (set->list) + { + text = _((char *)set->list); + if (text[0] == '!') + label = setup_create_italic_label (text + 1); + else + label = gtk_label_new (text); + gtk_box_pack_start (GTK_BOX (rbox), label, 0, 0, 6); + } + + return wid; +} + +static gint +setup_apply_tint (int *tag) +{ + prefs.tint_red = setup_prefs.tint_red; + prefs.tint_green = setup_prefs.tint_green; + prefs.tint_blue = setup_prefs.tint_blue; + mg_update_xtext (current_sess->gui->xtext); + *tag = 0; + return 0; +} + +static void +setup_hscale_cb (GtkHScale *wid, const setting *set) +{ + static int tag = 0; + + setup_set_int (&setup_prefs, set, gtk_range_get_value(GTK_RANGE(wid))); + if(tag == 0) + tag = g_idle_add ((GSourceFunc)setup_apply_tint, &tag); +} + +static void +setup_create_hscale (GtkWidget *table, int row, const setting *set) +{ + GtkWidget *wid; + + wid = gtk_label_new (_(set->label)); + gtk_misc_set_alignment (GTK_MISC (wid), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), wid, 2, 3, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); + + wid = gtk_hscale_new_with_range (0., 255., 1.); + gtk_scale_set_value_pos (GTK_SCALE (wid), GTK_POS_RIGHT); + gtk_range_set_value (GTK_RANGE (wid), setup_get_int (&setup_prefs, set)); + g_signal_connect (G_OBJECT(wid), "value_changed", + G_CALLBACK (setup_hscale_cb), (gpointer)set); + gtk_table_attach (GTK_TABLE (table), wid, 3, 6, row, row + 1, + GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0); +} + + +static GtkWidget *proxy_user; /* username GtkEntry */ +static GtkWidget *proxy_pass; /* password GtkEntry */ + +static void +setup_menu_cb (GtkWidget *cbox, const setting *set) +{ + int n = gtk_combo_box_get_active (GTK_COMBO_BOX (cbox)); + + /* set the prefs.<field> */ + setup_set_int (&setup_prefs, set, n + set->extra); + + if (set->list == proxytypes) + { + /* only HTTP and Socks5 can use a username/pass */ + gtk_widget_set_sensitive (proxy_user, (n == 3 || n == 4 || n == 5)); + gtk_widget_set_sensitive (proxy_pass, (n == 3 || n == 4 || n == 5)); + } +} + +static void +setup_radio_cb (GtkWidget *item, const setting *set) +{ + if (GTK_TOGGLE_BUTTON (item)->active) + { + int n = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (item), "n")); + /* set the prefs.<field> */ + setup_set_int (&setup_prefs, set, n); + } +} + +static int +setup_create_radio (GtkWidget *table, int row, const setting *set) +{ + GtkWidget *wid, *hbox; + int i; + const char **text = (const char **)set->list; + GSList *group; + + wid = gtk_label_new (_(set->label)); + gtk_misc_set_alignment (GTK_MISC (wid), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), wid, 2, 3, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); + + hbox = gtk_hbox_new (0, 0); + gtk_table_attach (GTK_TABLE (table), hbox, 3, 4, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + + i = 0; + group = NULL; + while (text[i]) + { + if (text[i][0] != 0) + { + wid = gtk_radio_button_new_with_mnemonic (group, _(text[i])); + /*if (set->tooltip) + add_tip (wid, _(set->tooltip));*/ + group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (wid)); + gtk_container_add (GTK_CONTAINER (hbox), wid); + if (i == setup_get_int (&setup_prefs, set)) + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wid), TRUE); + g_object_set_data (G_OBJECT (wid), "n", GINT_TO_POINTER (i)); + g_signal_connect (G_OBJECT (wid), "toggled", + G_CALLBACK (setup_radio_cb), (gpointer)set); + } + i++; + row++; + } + + return i; +} + +/* +static const char *id_strings[] = +{ + "", + "*", + "%C4*%C18%B%B", + "%U" +}; + +static void +setup_id_menu_cb (GtkWidget *item, char *dest) +{ + int n = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (item), "n")); + + strcpy (dest, id_strings[n]); +} + +static void +setup_create_id_menu (GtkWidget *table, char *label, int row, char *dest) +{ + GtkWidget *wid, *menu, *item; + int i, def = 0; + static const char *text[] = + { + ("(disabled)"), + ("A star (*)"), + ("A red star (*)"), + ("Underlined") + }; + + wid = gtk_label_new (label); + gtk_misc_set_alignment (GTK_MISC (wid), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), wid, 2, 3, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); + + wid = gtk_option_menu_new (); + menu = gtk_menu_new (); + + for (i = 0; i < 4; i++) + { + if (strcmp (id_strings[i], dest) == 0) + { + def = i; + break; + } + } + + i = 0; + while (text[i]) + { + item = gtk_menu_item_new_with_label (_(text[i])); + g_object_set_data (G_OBJECT (item), "n", GINT_TO_POINTER (i)); + + gtk_widget_show (item); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (setup_id_menu_cb), dest); + i++; + } + + gtk_option_menu_set_menu (GTK_OPTION_MENU (wid), menu); + gtk_option_menu_set_history (GTK_OPTION_MENU (wid), def); + + gtk_table_attach (GTK_TABLE (table), wid, 3, 4, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); +} + +*/ + +static void +setup_create_menu (GtkWidget *table, int row, const setting *set) +{ + GtkWidget *wid, *cbox, *box; + const char **text = (const char **)set->list; + int i; + + wid = gtk_label_new (_(set->label)); + gtk_misc_set_alignment (GTK_MISC (wid), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), wid, 2, 3, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); + + cbox = gtk_combo_box_new_text (); + + for (i = 0; text[i]; i++) + gtk_combo_box_append_text (GTK_COMBO_BOX (cbox), _(text[i])); + + gtk_combo_box_set_active (GTK_COMBO_BOX (cbox), + setup_get_int (&setup_prefs, set) - set->extra); + g_signal_connect (G_OBJECT (cbox), "changed", + G_CALLBACK (setup_menu_cb), (gpointer)set); + + box = gtk_hbox_new (0, 0); + gtk_box_pack_start (GTK_BOX (box), cbox, 0, 0, 0); + gtk_table_attach (GTK_TABLE (table), box, 3, 4, row, row + 1, + GTK_EXPAND | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); +} + +static void +setup_filereq_cb (GtkWidget *entry, char *file) +{ + if (file) + { + if (file[0]) + gtk_entry_set_text (GTK_ENTRY (entry), file); + } +} + +static void +setup_browsefile_cb (GtkWidget *button, GtkWidget *entry) +{ + gtkutil_file_req (_("Select an Image File"), setup_filereq_cb, entry, NULL, 0); +} + +static void +setup_fontsel_destroy (GtkWidget *button, GtkFontSelectionDialog *dialog) +{ + font_dialog = NULL; +} + +static void +setup_fontsel_cb (GtkWidget *button, GtkFontSelectionDialog *dialog) +{ + GtkWidget *entry; + char *font_name; + + entry = g_object_get_data (G_OBJECT (button), "e"); + font_name = gtk_font_selection_dialog_get_font_name (dialog); + + gtk_entry_set_text (GTK_ENTRY (entry), font_name); + + g_free (font_name); + gtk_widget_destroy (GTK_WIDGET (dialog)); + font_dialog = NULL; +} + +static void +setup_fontsel_cancel (GtkWidget *button, GtkFontSelectionDialog *dialog) +{ + gtk_widget_destroy (GTK_WIDGET (dialog)); + font_dialog = NULL; +} + +static void +setup_browsefolder_cb (GtkWidget *button, GtkEntry *entry) +{ + gtkutil_file_req (_("Select Download Folder"), setup_filereq_cb, entry, entry->text, FRF_CHOOSEFOLDER); +} + +static void +setup_browsefont_cb (GtkWidget *button, GtkWidget *entry) +{ + GtkFontSelection *sel; + GtkFontSelectionDialog *dialog; + + dialog = (GtkFontSelectionDialog *) gtk_font_selection_dialog_new (_("Select font")); + font_dialog = (GtkWidget *)dialog; /* global var */ + + sel = (GtkFontSelection *) dialog->fontsel; + + if (GTK_ENTRY (entry)->text[0]) + gtk_font_selection_set_font_name (sel, GTK_ENTRY (entry)->text); + + g_object_set_data (G_OBJECT (dialog->ok_button), "e", entry); + + g_signal_connect (G_OBJECT (dialog), "destroy", + G_CALLBACK (setup_fontsel_destroy), dialog); + g_signal_connect (G_OBJECT (dialog->ok_button), "clicked", + G_CALLBACK (setup_fontsel_cb), dialog); + g_signal_connect (G_OBJECT (dialog->cancel_button), "clicked", + G_CALLBACK (setup_fontsel_cancel), dialog); + + gtk_widget_show (GTK_WIDGET (dialog)); +} + +static void +setup_entry_cb (GtkEntry *entry, setting *set) +{ + int size; + int pos; + int len = strlen (entry->text); + unsigned char *p = entry->text; + + /* need to truncate? */ + if (len >= set->extra) + { + len = pos = 0; + while (1) + { + size = g_utf8_skip [*p]; + len += size; + p += size; + /* truncate to "set->extra" BYTES */ + if (len >= set->extra) + { + gtk_editable_delete_text (GTK_EDITABLE (entry), pos, -1); + break; + } + pos++; + } + } + else + { + setup_set_str (&setup_prefs, set, entry->text); + } +} + +static void +setup_create_label (GtkWidget *table, int row, const setting *set) +{ + gtk_table_attach (GTK_TABLE (table), setup_create_italic_label (_(set->label)), + set->extra ? 1 : 3, 5, row, row + 1, GTK_FILL, + GTK_SHRINK | GTK_FILL, 0, 0); +} + +static GtkWidget * +setup_create_entry (GtkWidget *table, int row, const setting *set) +{ + GtkWidget *label; + GtkWidget *wid, *bwid; + + label = gtk_label_new (_(set->label)); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), label, 2, 3, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); + + wid = gtk_entry_new (); + g_object_set_data (G_OBJECT (wid), "lbl", label); + if (set->list) + gtk_entry_set_visibility (GTK_ENTRY (wid), FALSE); + if (set->tooltip) + add_tip (wid, _(set->tooltip)); + gtk_entry_set_max_length (GTK_ENTRY (wid), set->extra - 1); + gtk_entry_set_text (GTK_ENTRY (wid), setup_get_str (&setup_prefs, set)); + g_signal_connect (G_OBJECT (wid), "changed", + G_CALLBACK (setup_entry_cb), (gpointer)set); + + if (set->offset == P_OFFSETNL(proxy_user)) + proxy_user = wid; + if (set->offset == P_OFFSETNL(proxy_pass)) + proxy_pass = wid; + + /* only http and Socks5 can auth */ + if ( (set->offset == P_OFFSETNL(proxy_pass) || + set->offset == P_OFFSETNL(proxy_user)) && + (setup_prefs.proxy_type != 4 && setup_prefs.proxy_type != 3 && setup_prefs.proxy_type != 5) ) + gtk_widget_set_sensitive (wid, FALSE); + + if (set->type == ST_ENTRY) + gtk_table_attach (GTK_TABLE (table), wid, 3, 6, row, row + 1, + GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0); + else + { + gtk_table_attach (GTK_TABLE (table), wid, 3, 5, row, row + 1, + GTK_EXPAND | GTK_FILL, GTK_SHRINK, 0, 0); + bwid = gtk_button_new_with_label (_("Browse...")); + gtk_table_attach (GTK_TABLE (table), bwid, 5, 6, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_FILL, 0, 0); + if (set->type == ST_EFILE) + g_signal_connect (G_OBJECT (bwid), "clicked", + G_CALLBACK (setup_browsefile_cb), wid); + if (set->type == ST_EFONT) + g_signal_connect (G_OBJECT (bwid), "clicked", + G_CALLBACK (setup_browsefont_cb), wid); + if (set->type == ST_EFOLDER) + g_signal_connect (G_OBJECT (bwid), "clicked", + G_CALLBACK (setup_browsefolder_cb), wid); + } + + return wid; +} + +static void +setup_create_header (GtkWidget *table, int row, char *labeltext) +{ + GtkWidget *label; + char buf[128]; + + if (row == 0) + snprintf (buf, sizeof (buf), "<b>%s</b>", _(labeltext)); + else + snprintf (buf, sizeof (buf), "\n<b>%s</b>", _(labeltext)); + + label = gtk_label_new (NULL); + gtk_label_set_markup (GTK_LABEL (label), buf); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), label, 0, 4, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 5); +} + +static GtkWidget * +setup_create_frame (GtkWidget **left, GtkWidget *box) +{ + GtkWidget *tab, *hbox, *inbox = box; + + tab = gtk_table_new (3, 2, FALSE); + gtk_container_set_border_width (GTK_CONTAINER (tab), 6); + gtk_table_set_row_spacings (GTK_TABLE (tab), 2); + gtk_table_set_col_spacings (GTK_TABLE (tab), 3); + gtk_container_add (GTK_CONTAINER (inbox), tab); + + hbox = gtk_hbox_new (FALSE, 0); + gtk_container_add (GTK_CONTAINER (inbox), hbox); + + *left = gtk_vbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (hbox), *left, 0, 0, 0); + + return tab; +} + +static void +open_data_cb (GtkWidget *button, gpointer data) +{ + fe_open_url (get_xdir_utf8 ()); +} + +static GtkWidget * +setup_create_page (const setting *set) +{ + int i, row, do_disable; + GtkWidget *tab, *box, *left; + GtkWidget *wid = NULL, *prev; + + box = gtk_vbox_new (FALSE, 1); + gtk_container_set_border_width (GTK_CONTAINER (box), 6); + + tab = setup_create_frame (&left, box); + + i = row = do_disable = 0; + while (set[i].type != ST_END) + { + prev = wid; + + switch (set[i].type) + { + case ST_HEADER: + setup_create_header (tab, row, set[i].label); + break; + case ST_EFONT: + case ST_ENTRY: + case ST_EFILE: + case ST_EFOLDER: + wid = setup_create_entry (tab, row, &set[i]); + break; + case ST_TOGGLR: + row--; + setup_create_toggleR (tab, row, &set[i]); + break; + case ST_TOGGLE: + wid = setup_create_toggleL (tab, row, &set[i]); + do_disable = set[i].extra; + break; + case ST_3OGGLE: + setup_create_3oggle (tab, row, &set[i]); + break; + case ST_MENU: + setup_create_menu (tab, row, &set[i]); + break; + case ST_RADIO: + row += setup_create_radio (tab, row, &set[i]); + break; + case ST_NUMBER: + wid = setup_create_spin (tab, row, &set[i]); + break; + case ST_HSCALE: + setup_create_hscale (tab, row, &set[i]); + break; + case ST_LABEL: + setup_create_label (tab, row, &set[i]); + break; + case ST_ALERTHEAD: + setup_create_alert_header (tab, row, &set[i]); + } + + /* will this toggle disable the "next" widget? */ + do_disable--; + if (do_disable == 0) + { + /* setup_toggle_cb uses this data */ + g_object_set_data (G_OBJECT (prev), "nxt", wid); + /* force initial sensitive state */ + gtk_widget_set_sensitive (wid, GTK_TOGGLE_BUTTON (prev)->active); + gtk_widget_set_sensitive (g_object_get_data (G_OBJECT (wid), "lbl"), + GTK_TOGGLE_BUTTON (prev)->active); + } + + i++; + row++; + } + +#if 0 + if (set == general_settings) + { + setup_create_id_menu (tab, _("Mark identified users with:"), + row, setup_prefs.irc_id_ytext); + setup_create_id_menu (tab, _("Mark not-identified users with:"), + row + 1, setup_prefs.irc_id_ntext); + } +#endif + + if (set == logging_settings) + { + GtkWidget *but = gtk_button_new_with_label (_("Open Data Folder")); + gtk_box_pack_start (GTK_BOX (left), but, 0, 0, 0); + g_signal_connect (G_OBJECT (but), "clicked", + G_CALLBACK (open_data_cb), 0); + } + + return box; +} + +static void +setup_color_ok_cb (GtkWidget *button, GtkWidget *dialog) +{ + GtkColorSelectionDialog *cdialog = GTK_COLOR_SELECTION_DIALOG (dialog); + GdkColor *col; + GdkColor old_color; + GtkStyle *style; + + col = g_object_get_data (G_OBJECT (button), "c"); + old_color = *col; + + button = g_object_get_data (G_OBJECT (button), "b"); + + if (!GTK_IS_WIDGET (button)) + { + gtk_widget_destroy (dialog); + return; + } + + color_change = TRUE; + + gtk_color_selection_get_current_color (GTK_COLOR_SELECTION (cdialog->colorsel), col); + + gdk_colormap_alloc_color (gtk_widget_get_colormap (button), col, TRUE, TRUE); + + style = gtk_style_new (); + style->bg[0] = *col; + gtk_widget_set_style (button, style); + g_object_unref (style); + + /* is this line correct?? */ + gdk_colormap_free_colors (gtk_widget_get_colormap (button), &old_color, 1); + + gtk_widget_destroy (dialog); +} + +static void +setup_color_cb (GtkWidget *button, gpointer userdata) +{ + GtkWidget *dialog; + GtkColorSelectionDialog *cdialog; + GdkColor *color; + + color = &colors[GPOINTER_TO_INT (userdata)]; + + dialog = gtk_color_selection_dialog_new (_("Select color")); + cdialog = GTK_COLOR_SELECTION_DIALOG (dialog); + + gtk_widget_hide (cdialog->help_button); + g_signal_connect (G_OBJECT (cdialog->ok_button), "clicked", + G_CALLBACK (setup_color_ok_cb), dialog); + g_signal_connect (G_OBJECT (cdialog->cancel_button), "clicked", + G_CALLBACK (gtkutil_destroy), dialog); + g_object_set_data (G_OBJECT (cdialog->ok_button), "c", color); + g_object_set_data (G_OBJECT (cdialog->ok_button), "b", button); + gtk_widget_set_sensitive (cdialog->help_button, FALSE); + gtk_color_selection_set_current_color (GTK_COLOR_SELECTION (cdialog->colorsel), color); + gtk_widget_show (dialog); +} + +static void +setup_create_color_button (GtkWidget *table, int num, int row, int col) +{ + GtkWidget *but; + GtkStyle *style; + char buf[64]; + + if (num > 31) + strcpy (buf, "<span size=\"x-small\"> </span>"); + else + /* 12345678901 23456789 01 23456789 */ + sprintf (buf, "<span size=\"x-small\">%d</span>", num); + but = gtk_button_new_with_label (" "); + gtk_label_set_markup (GTK_LABEL (GTK_BIN (but)->child), buf); + /* win32 build uses this to turn off themeing */ + g_object_set_data (G_OBJECT (but), "xchat-color", (gpointer)1); + gtk_table_attach (GTK_TABLE (table), but, col, col+1, row, row+1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + g_signal_connect (G_OBJECT (but), "clicked", + G_CALLBACK (setup_color_cb), GINT_TO_POINTER (num)); + style = gtk_style_new (); + style->bg[GTK_STATE_NORMAL] = colors[num]; + gtk_widget_set_style (but, style); + g_object_unref (style); +} + +static void +setup_create_other_colorR (char *text, int num, int row, GtkWidget *tab) +{ + GtkWidget *label; + + label = gtk_label_new (text); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (tab), label, 5, 9, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); + setup_create_color_button (tab, num, row, 9); +} + +static void +setup_create_other_color (char *text, int num, int row, GtkWidget *tab) +{ + GtkWidget *label; + + label = gtk_label_new (text); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (tab), label, 2, 3, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); + setup_create_color_button (tab, num, row, 3); +} + +static GtkWidget * +setup_create_color_page (void) +{ + GtkWidget *tab, *box, *label; + int i; + + box = gtk_vbox_new (FALSE, 0); + gtk_container_set_border_width (GTK_CONTAINER (box), 6); + + tab = gtk_table_new (9, 2, FALSE); + gtk_container_set_border_width (GTK_CONTAINER (tab), 6); + gtk_table_set_row_spacings (GTK_TABLE (tab), 2); + gtk_table_set_col_spacings (GTK_TABLE (tab), 3); + gtk_container_add (GTK_CONTAINER (box), tab); + + setup_create_header (tab, 0, N_("Text Colors")); + + label = gtk_label_new (_("mIRC colors:")); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (tab), label, 2, 3, 1, 2, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); + + for (i = 0; i < 16; i++) + setup_create_color_button (tab, i, 1, i+3); + + label = gtk_label_new (_("Local colors:")); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (tab), label, 2, 3, 2, 3, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); + + for (i = 16; i < 32; i++) + setup_create_color_button (tab, i, 2, (i+3) - 16); + + setup_create_other_color (_("Foreground:"), COL_FG, 3, tab); + setup_create_other_colorR (_("Background:"), COL_BG, 3, tab); + + setup_create_header (tab, 5, N_("Marking Text")); + + setup_create_other_color (_("Foreground:"), COL_MARK_FG, 6, tab); + setup_create_other_colorR (_("Background:"), COL_MARK_BG, 6, tab); + + setup_create_header (tab, 8, N_("Interface Colors")); + + setup_create_other_color (_("New data:"), COL_NEW_DATA, 9, tab); + setup_create_other_colorR (_("Marker line:"), COL_MARKER, 9, tab); + setup_create_other_color (_("New message:"), COL_NEW_MSG, 10, tab); + setup_create_other_colorR (_("Away user:"), COL_AWAY, 10, tab); + setup_create_other_color (_("Highlight:"), COL_HILIGHT, 11, tab); + + return box; +} + +/* === GLOBALS for sound GUI === */ + +static GtkWidget *sndprog_entry; +static GtkWidget *sndfile_entry; +static GtkWidget *snddir_entry; +static int ignore_changed = FALSE; + +extern struct text_event te[]; /* text.c */ +extern char *sound_files[]; + +static void +setup_snd_apply (void) +{ + strcpy (setup_prefs.sounddir, GTK_ENTRY (snddir_entry)->text); + strcpy (setup_prefs.soundcmd, GTK_ENTRY (sndprog_entry)->text); +} + +static void +setup_snd_populate (GtkTreeView * treeview) +{ + GtkListStore *store; + GtkTreeIter iter; + GtkTreeSelection *sel; + GtkTreePath *path; + int i; + + sel = gtk_tree_view_get_selection (treeview); + store = (GtkListStore *)gtk_tree_view_get_model (treeview); + + for (i = NUM_XP-1; i >= 0; i--) + { + gtk_list_store_prepend (store, &iter); + if (sound_files[i]) + gtk_list_store_set (store, &iter, 0, te[i].name, 1, sound_files[i], 2, i, -1); + else + gtk_list_store_set (store, &iter, 0, te[i].name, 1, "", 2, i, -1); + if (i == last_selected_row) + { + gtk_tree_selection_select_iter (sel, &iter); + path = gtk_tree_model_get_path (GTK_TREE_MODEL (store), &iter); + if (path) + { + gtk_tree_view_scroll_to_cell (treeview, path, NULL, TRUE, 0.5, 0.5); + gtk_tree_view_set_cursor (treeview, path, NULL, FALSE); + gtk_tree_path_free (path); + } + } + } +} + +static int +setup_snd_get_selected (GtkTreeSelection *sel, GtkTreeIter *iter) +{ + int n; + GtkTreeModel *model; + + if (!gtk_tree_selection_get_selected (sel, &model, iter)) + return -1; + + gtk_tree_model_get (model, iter, 2, &n, -1); + return n; +} + +static void +setup_snd_row_cb (GtkTreeSelection *sel, gpointer user_data) +{ + int n; + GtkTreeIter iter; + + n = setup_snd_get_selected (sel, &iter); + if (n == -1) + return; + last_selected_row = n; + + ignore_changed = TRUE; + if (sound_files[n]) + gtk_entry_set_text (GTK_ENTRY (sndfile_entry), sound_files[n]); + else + gtk_entry_set_text (GTK_ENTRY (sndfile_entry), ""); + ignore_changed = FALSE; +} + +static void +setup_snd_add_columns (GtkTreeView * treeview) +{ + GtkCellRenderer *renderer; + GtkTreeModel *model; + + /* event column */ + renderer = gtk_cell_renderer_text_new (); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview), + -1, _("Event"), renderer, + "text", 0, NULL); + + /* file column */ + renderer = gtk_cell_renderer_text_new (); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview), + -1, _("Sound file"), renderer, + "text", 1, NULL); + + model = GTK_TREE_MODEL (gtk_list_store_new (3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT)); + gtk_tree_view_set_model (GTK_TREE_VIEW (treeview), model); + g_object_unref (model); +} + +static void +setup_autotoggle_cb (GtkToggleButton *but, GtkToggleButton *ext) +{ + if (but->active) + { + setup_prefs.soundcmd[0] = 0; + gtk_entry_set_text (GTK_ENTRY (sndprog_entry), ""); + gtk_widget_set_sensitive (sndprog_entry, FALSE); + } else + { + gtk_widget_set_sensitive (sndprog_entry, TRUE); + } +} + +static void +setup_snd_filereq_cb (GtkWidget *entry, char *file) +{ + if (file) + { + if (file[0]) + gtk_entry_set_text (GTK_ENTRY (entry), file); + } +} + +static void +setup_snd_browse_cb (GtkWidget *button, GtkEntry *entry) +{ + gtkutil_file_req (_("Select a sound file"), setup_snd_filereq_cb, entry, NULL, 0); +} + +static void +setup_snd_play_cb (GtkWidget *button, GtkEntry *entry) +{ + sound_play (entry->text, FALSE); +} + +static void +setup_snd_changed_cb (GtkEntry *ent, GtkTreeView *tree) +{ + int n; + GtkTreeIter iter; + GtkListStore *store; + GtkTreeSelection *sel; + + if (ignore_changed) + return; + + sel = gtk_tree_view_get_selection (tree); + n = setup_snd_get_selected (sel, &iter); + if (n == -1) + return; + + /* get the new sound file */ + if (sound_files[n]) + free (sound_files[n]); + sound_files[n] = strdup (GTK_ENTRY (ent)->text); + + /* update the TreeView list */ + store = (GtkListStore *)gtk_tree_view_get_model (tree); + gtk_list_store_set (store, &iter, 1, sound_files[n], -1); + + gtk_widget_set_sensitive (cancel_button, FALSE); +} + +static GtkWidget * +setup_create_sound_page (void) +{ + GtkWidget *vbox1; + GtkWidget *vbox2; + GtkWidget *table2; + GtkWidget *label2; + GtkWidget *label3; + GtkWidget *radio_external; + GSList *radio_group = NULL; + GtkWidget *radio_auto; + GtkWidget *label4; + GtkWidget *entry3; + GtkWidget *scrolledwindow1; + GtkWidget *sound_tree; + GtkWidget *table1; + GtkWidget *sound_label; + GtkWidget *sound_browse; + GtkWidget *sound_play; + GtkTreeSelection *sel; + + vbox1 = gtk_vbox_new (FALSE, 0); + gtk_container_set_border_width (GTK_CONTAINER (vbox1), 6); + gtk_widget_show (vbox1); + + vbox2 = gtk_vbox_new (FALSE, 0); + gtk_widget_show (vbox2); + gtk_container_add (GTK_CONTAINER (vbox1), vbox2); + + table2 = gtk_table_new (4, 3, FALSE); + gtk_widget_show (table2); + gtk_box_pack_start (GTK_BOX (vbox2), table2, FALSE, TRUE, 8); + gtk_table_set_row_spacings (GTK_TABLE (table2), 2); + gtk_table_set_col_spacings (GTK_TABLE (table2), 4); + + label2 = gtk_label_new (_("Sound playing method:")); + gtk_widget_show (label2); + gtk_table_attach (GTK_TABLE (table2), label2, 0, 1, 0, 1, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment (GTK_MISC (label2), 0, 0.5); + + label3 = + gtk_label_new_with_mnemonic (_("External sound playing _program:")); + gtk_widget_show (label3); + gtk_table_attach (GTK_TABLE (table2), label3, 0, 1, 2, 3, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment (GTK_MISC (label3), 0, 0.5); + + sndprog_entry = gtk_entry_new (); + if (setup_prefs.soundcmd[0] == 0) + gtk_widget_set_sensitive (sndprog_entry, FALSE); + else + gtk_entry_set_text (GTK_ENTRY (sndprog_entry), setup_prefs.soundcmd); + gtk_widget_show (sndprog_entry); + gtk_table_attach (GTK_TABLE (table2), sndprog_entry, 1, 3, 2, 3, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + radio_external = + gtk_radio_button_new_with_mnemonic (NULL, _("_External program")); + gtk_widget_show (radio_external); + gtk_table_attach (GTK_TABLE (table2), radio_external, 1, 3, 1, 2, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_radio_button_set_group (GTK_RADIO_BUTTON (radio_external), + radio_group); + radio_group = + gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio_external)); + + radio_auto = gtk_radio_button_new_with_mnemonic (NULL, _("_Automatic")); + g_signal_connect (G_OBJECT (radio_auto), "toggled", + G_CALLBACK (setup_autotoggle_cb), radio_external); + gtk_widget_show (radio_auto); + gtk_table_attach (GTK_TABLE (table2), radio_auto, 1, 3, 0, 1, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_radio_button_set_group (GTK_RADIO_BUTTON (radio_auto), + radio_group); + radio_group = + gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio_auto)); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio_auto), setup_prefs.soundcmd[0] == 0); + + label4 = gtk_label_new_with_mnemonic (_("Sound files _directory:")); + gtk_widget_show (label4); + gtk_table_attach (GTK_TABLE (table2), label4, 0, 1, 3, 4, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment (GTK_MISC (label4), 0, 0.5); + + snddir_entry = entry3 = gtk_entry_new (); + gtk_entry_set_text (GTK_ENTRY (entry3), setup_prefs.sounddir); + gtk_widget_show (entry3); + gtk_table_attach (GTK_TABLE (table2), entry3, 1, 3, 3, 4, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL); + gtk_widget_show (scrolledwindow1); + gtk_container_add (GTK_CONTAINER (vbox2), scrolledwindow1); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow1), + GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow1), + GTK_SHADOW_IN); + + sound_tree = gtk_tree_view_new (); + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (sound_tree)); + gtk_tree_selection_set_mode (sel, GTK_SELECTION_SINGLE); + setup_snd_add_columns (GTK_TREE_VIEW (sound_tree)); + setup_snd_populate (GTK_TREE_VIEW (sound_tree)); + g_signal_connect (G_OBJECT (sel), "changed", + G_CALLBACK (setup_snd_row_cb), NULL); + gtk_widget_show (sound_tree); + gtk_container_add (GTK_CONTAINER (scrolledwindow1), sound_tree); + gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (sound_tree), TRUE); + + table1 = gtk_table_new (2, 3, FALSE); + gtk_widget_show (table1); + gtk_box_pack_start (GTK_BOX (vbox2), table1, FALSE, TRUE, 8); + gtk_table_set_row_spacings (GTK_TABLE (table1), 2); + gtk_table_set_col_spacings (GTK_TABLE (table1), 4); + + sound_label = gtk_label_new_with_mnemonic (_("Sound file:")); + gtk_widget_show (sound_label); + gtk_table_attach (GTK_TABLE (table1), sound_label, 0, 1, 0, 1, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment (GTK_MISC (sound_label), 0, 0.5); + + sndfile_entry = gtk_entry_new (); + g_signal_connect (G_OBJECT (sndfile_entry), "changed", + G_CALLBACK (setup_snd_changed_cb), sound_tree); + gtk_widget_show (sndfile_entry); + gtk_table_attach (GTK_TABLE (table1), sndfile_entry, 0, 1, 1, 2, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + sound_browse = gtk_button_new_with_mnemonic (_("_Browse...")); + g_signal_connect (G_OBJECT (sound_browse), "clicked", + G_CALLBACK (setup_snd_browse_cb), sndfile_entry); + gtk_widget_show (sound_browse); + gtk_table_attach (GTK_TABLE (table1), sound_browse, 1, 2, 1, 2, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + +#ifdef GTK_STOCK_MEDIA_PLAY + sound_play = gtk_button_new_from_stock (GTK_STOCK_MEDIA_PLAY); +#else + sound_play = gtk_button_new_with_mnemonic (_("_Play")); +#endif + g_signal_connect (G_OBJECT (sound_play), "clicked", + G_CALLBACK (setup_snd_play_cb), sndfile_entry); + gtk_widget_show (sound_play); + gtk_table_attach (GTK_TABLE (table1), sound_play, 2, 3, 1, 2, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + gtk_label_set_mnemonic_widget (GTK_LABEL (label3), sndprog_entry); + gtk_label_set_mnemonic_widget (GTK_LABEL (label4), entry3); + setup_snd_row_cb (sel, NULL); + + return vbox1; +} + +static void +setup_add_page (const char *title, GtkWidget *book, GtkWidget *tab) +{ + GtkWidget *oframe, *frame, *label, *vvbox; + char buf[128]; + + /* frame for whole page */ + oframe = gtk_frame_new (NULL); + gtk_frame_set_shadow_type (GTK_FRAME (oframe), GTK_SHADOW_IN); + + vvbox = gtk_vbox_new (FALSE, 0); + gtk_container_add (GTK_CONTAINER (oframe), vvbox); + + /* border for the label */ + frame = gtk_frame_new (NULL); + gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_OUT); + gtk_box_pack_start (GTK_BOX (vvbox), frame, FALSE, TRUE, 0); + + /* label */ + label = gtk_label_new (NULL); + snprintf (buf, sizeof (buf), "<b><big>%s</big></b>", _(title)); + gtk_label_set_markup (GTK_LABEL (label), buf); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_misc_set_padding (GTK_MISC (label), 2, 1); + gtk_container_add (GTK_CONTAINER (frame), label); + + gtk_container_add (GTK_CONTAINER (vvbox), tab); + + gtk_notebook_append_page (GTK_NOTEBOOK (book), oframe, NULL); +} + +static const char *const cata[] = +{ + N_("Interface"), + N_("Text box"), + N_("Input box"), + N_("User list"), + N_("Channel switcher"), + N_("Colors"), + NULL, + N_("Chatting"), + N_("Alerts"), + N_("General"), + N_("Logging"), + N_("Sound"), +/* N_("Advanced"),*/ + NULL, + N_("Network"), + N_("Network setup"), + N_("File transfers"), + NULL, + NULL +}; + +static GtkWidget * +setup_create_pages (GtkWidget *box) +{ + GtkWidget *book; + + book = gtk_notebook_new (); + + setup_add_page (cata[1], book, setup_create_page (textbox_settings)); + setup_add_page (cata[2], book, setup_create_page (inputbox_settings)); + setup_add_page (cata[3], book, setup_create_page (userlist_settings)); + setup_add_page (cata[4], book, setup_create_page (tabs_settings)); + setup_add_page (cata[5], book, setup_create_color_page ()); + setup_add_page (cata[8], book, setup_create_page (alert_settings)); + setup_add_page (cata[9], book, setup_create_page (general_settings)); + setup_add_page (cata[10], book, setup_create_page (logging_settings)); + setup_add_page (cata[11], book, setup_create_sound_page ()); + setup_add_page (cata[14], book, setup_create_page (network_settings)); + setup_add_page (cata[15], book, setup_create_page (filexfer_settings)); + + gtk_notebook_set_show_tabs (GTK_NOTEBOOK (book), FALSE); + gtk_notebook_set_show_border (GTK_NOTEBOOK (book), FALSE); + gtk_container_add (GTK_CONTAINER (box), book); + + return book; +} + +static void +setup_tree_cb (GtkTreeView *treeview, GtkWidget *book) +{ + GtkTreeSelection *selection = gtk_tree_view_get_selection (treeview); + GtkTreeIter iter; + GtkTreeModel *model; + int page; + + if (gtk_tree_selection_get_selected (selection, &model, &iter)) + { + gtk_tree_model_get (model, &iter, 1, &page, -1); + if (page != -1) + { + gtk_notebook_set_current_page (GTK_NOTEBOOK (book), page); + last_selected_page = page; + } + } +} + +static gboolean +setup_tree_select_filter (GtkTreeSelection *selection, GtkTreeModel *model, + GtkTreePath *path, gboolean path_selected, + gpointer data) +{ + if (gtk_tree_path_get_depth (path) > 1) + return TRUE; + return FALSE; +} + +static void +setup_create_tree (GtkWidget *box, GtkWidget *book) +{ + GtkWidget *tree; + GtkWidget *frame; + GtkTreeStore *model; + GtkTreeIter iter; + GtkTreeIter child_iter; + GtkTreeIter *sel_iter = NULL; + GtkCellRenderer *renderer; + GtkTreeSelection *sel; + int i, page; + + model = gtk_tree_store_new (2, G_TYPE_STRING, G_TYPE_INT); + + i = 0; + page = 0; + do + { + gtk_tree_store_append (model, &iter, NULL); + gtk_tree_store_set (model, &iter, 0, _(cata[i]), 1, -1, -1); + i++; + + do + { + gtk_tree_store_append (model, &child_iter, &iter); + gtk_tree_store_set (model, &child_iter, 0, _(cata[i]), 1, page, -1); + if (page == last_selected_page) + sel_iter = gtk_tree_iter_copy (&child_iter); + page++; + i++; + } while (cata[i]); + + i++; + + } while (cata[i]); + + tree = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model)); + g_object_unref (G_OBJECT (model)); + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree)); + gtk_tree_selection_set_mode (sel, GTK_SELECTION_BROWSE); + gtk_tree_selection_set_select_function (sel, setup_tree_select_filter, + NULL, NULL); + g_signal_connect (G_OBJECT (tree), "cursor_changed", + G_CALLBACK (setup_tree_cb), book); + + renderer = gtk_cell_renderer_text_new (); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree), + -1, _("Categories"), renderer, "text", 0, NULL); + gtk_tree_view_expand_all (GTK_TREE_VIEW (tree)); + + frame = gtk_frame_new (NULL); + gtk_container_add (GTK_CONTAINER (frame), tree); + gtk_box_pack_start (GTK_BOX (box), frame, 0, 0, 0); + gtk_box_reorder_child (GTK_BOX (box), frame, 0); + + if (sel_iter) + { + gtk_tree_selection_select_iter (sel, sel_iter); + gtk_tree_iter_free (sel_iter); + } +} + +static void +setup_apply_entry_style (GtkWidget *entry) +{ + gtk_widget_modify_base (entry, GTK_STATE_NORMAL, &colors[COL_BG]); + gtk_widget_modify_text (entry, GTK_STATE_NORMAL, &colors[COL_FG]); + gtk_widget_modify_font (entry, input_style->font_desc); +} + +static void +setup_apply_to_sess (session_gui *gui) +{ +#ifdef USE_GTKSPELL + GtkSpell *spell; +#endif + + mg_update_xtext (gui->xtext); + + if (prefs.style_namelistgad) + gtk_widget_set_style (gui->user_tree, input_style); + + if (prefs.style_inputbox) + { + extern char cursor_color_rc[]; + char buf[256]; + sprintf (buf, cursor_color_rc, + (colors[COL_FG].red >> 8), + (colors[COL_FG].green >> 8), + (colors[COL_FG].blue >> 8)); + gtk_rc_parse_string (buf); + + setup_apply_entry_style (gui->input_box); + setup_apply_entry_style (gui->limit_entry); + setup_apply_entry_style (gui->key_entry); + setup_apply_entry_style (gui->topic_entry); + } + + if (prefs.userlistbuttons) + gtk_widget_show (gui->button_box); + else + gtk_widget_hide (gui->button_box); + +#ifdef USE_GTKSPELL + spell = gtkspell_get_from_text_view (GTK_TEXT_VIEW (gui->input_box)); + if (prefs.gui_input_spell) + { + if (!spell) + gtkspell_new_attach (GTK_TEXT_VIEW (gui->input_box), NULL, NULL); + } + else + { + if (spell) + gtkspell_detach (spell); + } +#endif + +#ifdef USE_LIBSEXY + sexy_spell_entry_set_checked ((SexySpellEntry *)gui->input_box, prefs.gui_input_spell); +#endif +} + +static void +unslash (char *dir) +{ + if (dir[0]) + { + int len = strlen (dir) - 1; +#ifdef WIN32 + if (dir[len] == '/' || dir[len] == '\\') +#else + if (dir[len] == '/') +#endif + dir[len] = 0; + } +} + +void +setup_apply_real (int new_pix, int do_ulist, int do_layout) +{ + GSList *list; + session *sess; + int done_main = FALSE; + + /* remove trailing slashes */ + unslash (prefs.dccdir); + unslash (prefs.dcc_completed_dir); + + mkdir_utf8 (prefs.dccdir); + mkdir_utf8 (prefs.dcc_completed_dir); + + if (new_pix) + { + if (channelwin_pix) + g_object_unref (channelwin_pix); + channelwin_pix = pixmap_load_from_file (prefs.background); + } + + input_style = create_input_style (input_style); + + list = sess_list; + while (list) + { + sess = list->data; + if (sess->gui->is_tab) + { + /* only apply to main tabwindow once */ + if (!done_main) + { + done_main = TRUE; + setup_apply_to_sess (sess->gui); + } + } else + { + setup_apply_to_sess (sess->gui); + } + + log_open_or_close (sess); + + if (do_ulist) + userlist_rehash (sess); + + list = list->next; + } + + mg_apply_setup (); + tray_apply_setup (); + + if (do_layout) + menu_change_layout (); +} + +static void +setup_apply (struct xchatprefs *pr) +{ + int new_pix = FALSE; + int noapply = FALSE; + int do_ulist = FALSE; + int do_layout = FALSE; + + if (strcmp (pr->background, prefs.background) != 0) + new_pix = TRUE; + +#define DIFF(a) (pr->a != prefs.a) + + if (DIFF (paned_userlist)) + noapply = TRUE; + if (DIFF (lagometer)) + noapply = TRUE; + if (DIFF (throttlemeter)) + noapply = TRUE; + if (DIFF (showhostname_in_userlist)) + noapply = TRUE; + if (DIFF (tab_small)) + noapply = TRUE; + if (DIFF (tab_sort)) + noapply = TRUE; + if (DIFF (use_server_tab)) + noapply = TRUE; + if (DIFF (style_namelistgad)) + noapply = TRUE; + if (DIFF (truncchans)) + noapply = TRUE; + if (DIFF (tab_layout)) + do_layout = TRUE; + + if (color_change || (DIFF (away_size_max)) || (DIFF (away_track))) + do_ulist = TRUE; + + if ((pr->tab_pos == 5 || pr->tab_pos == 6) && + pr->tab_layout == 2 && pr->tab_pos != prefs.tab_pos) + fe_message (_("You cannot place the tree on the top or bottom!\n" + "Please change to the <b>Tabs</b> layout in the <b>View</b>" + " menu first."), + FE_MSG_WARN | FE_MSG_MARKUP); + + memcpy (&prefs, pr, sizeof (prefs)); + + setup_apply_real (new_pix, do_ulist, do_layout); + + if (noapply) + fe_message (_("Some settings were changed that require a" + " restart to take full effect."), FE_MSG_WARN); + +#ifndef WIN32 + if (prefs.autodccsend == 1) + { + if (!strcmp ((char *)g_get_home_dir (), prefs.dccdir)) + { + fe_message (_("*WARNING*\n" + "Auto accepting DCC to your home directory\n" + "can be dangerous and is exploitable. Eg:\n" + "Someone could send you a .bash_profile"), FE_MSG_WARN); + } + } +#endif +} + +#if 0 +static void +setup_apply_cb (GtkWidget *but, GtkWidget *win) +{ + /* setup_prefs -> xchat */ + setup_apply (&setup_prefs); +} +#endif + +static void +setup_ok_cb (GtkWidget *but, GtkWidget *win) +{ + setup_snd_apply (); + gtk_widget_destroy (win); + setup_apply (&setup_prefs); + save_config (); + palette_save (); +} + +static GtkWidget * +setup_window_open (void) +{ + GtkWidget *wid, *win, *vbox, *hbox, *hbbox; + + win = gtkutil_window_new (_("XChat: Preferences"), "prefs", 0, 0, 3); + + vbox = gtk_vbox_new (FALSE, 5); + gtk_container_set_border_width (GTK_CONTAINER (vbox), 6); + gtk_container_add (GTK_CONTAINER (win), vbox); + + hbox = gtk_hbox_new (FALSE, 4); + gtk_container_add (GTK_CONTAINER (vbox), hbox); + + setup_create_tree (hbox, setup_create_pages (hbox)); + + hbox = gtk_hbox_new (FALSE, 0); + gtk_box_pack_end (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); + + /* prepare the button box */ + hbbox = gtk_hbutton_box_new (); + gtk_box_set_spacing (GTK_BOX (hbbox), 4); + gtk_box_pack_end (GTK_BOX (hbox), hbbox, FALSE, FALSE, 0); + + /* standard buttons */ + /* GNOME doesn't like apply */ +#if 0 + wid = gtk_button_new_from_stock (GTK_STOCK_APPLY); + g_signal_connect (G_OBJECT (wid), "clicked", + G_CALLBACK (setup_apply_cb), win); + gtk_box_pack_start (GTK_BOX (hbbox), wid, FALSE, FALSE, 0); +#endif + + cancel_button = wid = gtk_button_new_from_stock (GTK_STOCK_CANCEL); + g_signal_connect (G_OBJECT (wid), "clicked", + G_CALLBACK (gtkutil_destroy), win); + gtk_box_pack_start (GTK_BOX (hbbox), wid, FALSE, FALSE, 0); + + wid = gtk_button_new_from_stock (GTK_STOCK_OK); + g_signal_connect (G_OBJECT (wid), "clicked", + G_CALLBACK (setup_ok_cb), win); + gtk_box_pack_start (GTK_BOX (hbbox), wid, FALSE, FALSE, 0); + + wid = gtk_hseparator_new (); + gtk_box_pack_end (GTK_BOX (vbox), wid, FALSE, FALSE, 0); + + gtk_widget_show_all (win); + + return win; +} + +static void +setup_close_cb (GtkWidget *win, GtkWidget **swin) +{ + *swin = NULL; + + if (font_dialog) + { + gtk_widget_destroy (font_dialog); + font_dialog = NULL; + } +} + +void +setup_open (void) +{ + static GtkWidget *setup_window = NULL; + + if (setup_window) + { + gtk_window_present (GTK_WINDOW (setup_window)); + return; + } + + memcpy (&setup_prefs, &prefs, sizeof (prefs)); + + color_change = FALSE; + setup_window = setup_window_open (); + + g_signal_connect (G_OBJECT (setup_window), "destroy", + G_CALLBACK (setup_close_cb), &setup_window); +} diff --git a/xchat-2.8.8/src/fe-gtk/sexy-spell-entry.c b/xchat-2.8.8/src/fe-gtk/sexy-spell-entry.c new file mode 100644 index 0000000..d67ffe2 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/sexy-spell-entry.c @@ -0,0 +1,1329 @@ +/* + * @file libsexy/sexy-icon-entry.c Entry widget + * + * @Copyright (C) 2004-2006 Christian Hammond. + * Some of this code is from gtkspell, Copyright (C) 2002 Evan Martin. + * + * 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 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., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <gtk/gtk.h> +#include "sexy-spell-entry.h" +#include <string.h> +#include <glib/gi18n.h> +#include <sys/types.h> +/*#include "gtkspell-iso-codes.h" +#include "sexy-marshal.h"*/ + +/* + * Bunch of poop to make enchant into a runtime dependency rather than a + * compile-time dependency. This makes it so I don't have to hear the + * complaints from people with binary distributions who don't get spell + * checking because they didn't check their configure output. + */ +struct EnchantDict; +struct EnchantBroker; + +typedef void (*EnchantDictDescribeFn) (const char * const lang_tag, + const char * const provider_name, + const char * const provider_desc, + const char * const provider_file, + void * user_data); + +static struct EnchantBroker * (*enchant_broker_init) (void); +static void (*enchant_broker_free) (struct EnchantBroker * broker); +static void (*enchant_broker_free_dict) (struct EnchantBroker * broker, struct EnchantDict * dict); +static void (*enchant_broker_list_dicts) (struct EnchantBroker * broker, EnchantDictDescribeFn fn, void * user_data); +static struct EnchantDict * (*enchant_broker_request_dict) (struct EnchantBroker * broker, const char *const tag); + +static void (*enchant_dict_add_to_personal) (struct EnchantDict * dict, const char *const word, ssize_t len); +static void (*enchant_dict_add_to_session) (struct EnchantDict * dict, const char *const word, ssize_t len); +static int (*enchant_dict_check) (struct EnchantDict * dict, const char *const word, ssize_t len); +static void (*enchant_dict_describe) (struct EnchantDict * dict, EnchantDictDescribeFn fn, void * user_data); +static void (*enchant_dict_free_suggestions) (struct EnchantDict * dict, char **suggestions); +static void (*enchant_dict_store_replacement) (struct EnchantDict * dict, const char *const mis, ssize_t mis_len, const char *const cor, ssize_t cor_len); +static char ** (*enchant_dict_suggest) (struct EnchantDict * dict, const char *const word, ssize_t len, size_t * out_n_suggs); +static gboolean have_enchant = FALSE; + +struct _SexySpellEntryPriv +{ + struct EnchantBroker *broker; + PangoAttrList *attr_list; + gint mark_character; + GHashTable *dict_hash; + GSList *dict_list; + gchar **words; + gint *word_starts; + gint *word_ends; + gboolean checked; +}; + +static void sexy_spell_entry_class_init(SexySpellEntryClass *klass); +static void sexy_spell_entry_editable_init (GtkEditableClass *iface); +static void sexy_spell_entry_init(SexySpellEntry *entry); +static void sexy_spell_entry_finalize(GObject *obj); +static void sexy_spell_entry_destroy(GtkObject *obj); +static gint sexy_spell_entry_expose(GtkWidget *widget, GdkEventExpose *event); +static gint sexy_spell_entry_button_press(GtkWidget *widget, GdkEventButton *event); + +/* GtkEditable handlers */ +static void sexy_spell_entry_changed(GtkEditable *editable, gpointer data); + +/* Other handlers */ +static gboolean sexy_spell_entry_popup_menu(GtkWidget *widget, SexySpellEntry *entry); + +/* Internal utility functions */ +static gint gtk_entry_find_position (GtkEntry *entry, + gint x); +static gboolean word_misspelled (SexySpellEntry *entry, + int start, + int end); +static gboolean default_word_check (SexySpellEntry *entry, + const gchar *word); +static gboolean sexy_spell_entry_activate_language_internal (SexySpellEntry *entry, + const gchar *lang, + GError **error); +static gchar *get_lang_from_dict (struct EnchantDict *dict); +static void sexy_spell_entry_recheck_all (SexySpellEntry *entry); +static void entry_strsplit_utf8 (GtkEntry *entry, + gchar ***set, + gint **starts, + gint **ends); + +static GtkEntryClass *parent_class = NULL; + +G_DEFINE_TYPE_EXTENDED(SexySpellEntry, sexy_spell_entry, GTK_TYPE_ENTRY, 0, G_IMPLEMENT_INTERFACE(GTK_TYPE_EDITABLE, sexy_spell_entry_editable_init)); + +enum +{ + WORD_CHECK, + LAST_SIGNAL +}; +static guint signals[LAST_SIGNAL] = {0}; + +static gboolean +spell_accumulator(GSignalInvocationHint *hint, GValue *return_accu, const GValue *handler_return, gpointer data) +{ + gboolean ret = g_value_get_boolean(handler_return); + /* Handlers return TRUE if the word is misspelled. In this + * case, it means that we want to stop if the word is checked + * as correct */ + g_value_set_boolean (return_accu, ret); + return ret; +} + +static void +initialize_enchant () +{ + GModule *enchant; + gpointer funcptr; + + enchant = g_module_open("libenchant", 0); + if (enchant == NULL) + { + enchant = g_module_open("libenchant.so.1", 0); + if (enchant == NULL) + return; + } + + have_enchant = TRUE; + +#define MODULE_SYMBOL(name, func) \ + g_module_symbol(enchant, (name), &funcptr); \ + (func) = funcptr; + + MODULE_SYMBOL("enchant_broker_init", enchant_broker_init) + MODULE_SYMBOL("enchant_broker_free", enchant_broker_free) + MODULE_SYMBOL("enchant_broker_free_dict", enchant_broker_free_dict) + MODULE_SYMBOL("enchant_broker_list_dicts", enchant_broker_list_dicts) + MODULE_SYMBOL("enchant_broker_request_dict", enchant_broker_request_dict) + + MODULE_SYMBOL("enchant_dict_add_to_personal", enchant_dict_add_to_personal) + MODULE_SYMBOL("enchant_dict_add_to_session", enchant_dict_add_to_session) + MODULE_SYMBOL("enchant_dict_check", enchant_dict_check) + MODULE_SYMBOL("enchant_dict_describe", enchant_dict_describe) + MODULE_SYMBOL("enchant_dict_free_suggestions", + enchant_dict_free_suggestions) + MODULE_SYMBOL("enchant_dict_store_replacement", + enchant_dict_store_replacement) + MODULE_SYMBOL("enchant_dict_suggest", enchant_dict_suggest) + +#undef MODULE_SYMBOL +} + +static void +sexy_spell_entry_class_init(SexySpellEntryClass *klass) +{ + GObjectClass *gobject_class; + GtkObjectClass *object_class; + GtkWidgetClass *widget_class; + GtkEntryClass *entry_class; + + initialize_enchant(); + + parent_class = g_type_class_peek_parent(klass); + + gobject_class = G_OBJECT_CLASS(klass); + object_class = GTK_OBJECT_CLASS(klass); + widget_class = GTK_WIDGET_CLASS(klass); + entry_class = GTK_ENTRY_CLASS(klass); + + if (have_enchant) + klass->word_check = default_word_check; + + gobject_class->finalize = sexy_spell_entry_finalize; + + object_class->destroy = sexy_spell_entry_destroy; + + widget_class->expose_event = sexy_spell_entry_expose; + widget_class->button_press_event = sexy_spell_entry_button_press; + + /** + * SexySpellEntry::word-check: + * @entry: The entry on which the signal is emitted. + * @word: The word to check. + * + * The ::word-check signal is emitted whenever the entry has to check + * a word. This allows the application to mark words as correct even + * if none of the active dictionaries contain it, such as nicknames in + * a chat client. + * + * Returns: %FALSE to indicate that the word should be marked as + * correct. + */ +/* signals[WORD_CHECK] = g_signal_new("word_check", + G_TYPE_FROM_CLASS(object_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET(SexySpellEntryClass, word_check), + (GSignalAccumulator) spell_accumulator, NULL, + sexy_marshal_BOOLEAN__STRING, + G_TYPE_BOOLEAN, + 1, G_TYPE_STRING);*/ +} + +static void +sexy_spell_entry_editable_init (GtkEditableClass *iface) +{ +} + +static gint +gtk_entry_find_position (GtkEntry *entry, gint x) +{ + PangoLayout *layout; + PangoLayoutLine *line; + const gchar *text; + gint cursor_index; + gint index; + gint pos; + gboolean trailing; + + x = x + entry->scroll_offset; + + layout = gtk_entry_get_layout(entry); + text = pango_layout_get_text(layout); + cursor_index = g_utf8_offset_to_pointer(text, entry->current_pos) - text; + + line = pango_layout_get_lines(layout)->data; + pango_layout_line_x_to_index(line, x * PANGO_SCALE, &index, &trailing); + + if (index >= cursor_index && entry->preedit_length) { + if (index >= cursor_index + entry->preedit_length) { + index -= entry->preedit_length; + } else { + index = cursor_index; + trailing = FALSE; + } + } + + pos = g_utf8_pointer_to_offset (text, text + index); + pos += trailing; + + return pos; +} + +static void +insert_underline(SexySpellEntry *entry, guint start, guint end) +{ + PangoAttribute *ucolor = pango_attr_underline_color_new (65535, 0, 0); + PangoAttribute *unline = pango_attr_underline_new (PANGO_UNDERLINE_ERROR); + + ucolor->start_index = start; + unline->start_index = start; + + ucolor->end_index = end; + unline->end_index = end; + + pango_attr_list_insert (entry->priv->attr_list, ucolor); + pango_attr_list_insert (entry->priv->attr_list, unline); +} + +static void +get_word_extents_from_position(SexySpellEntry *entry, gint *start, gint *end, guint position) +{ + const gchar *text; + gint i, bytes_pos; + + *start = -1; + *end = -1; + + if (entry->priv->words == NULL) + return; + + text = gtk_entry_get_text(GTK_ENTRY(entry)); + bytes_pos = (gint) (g_utf8_offset_to_pointer(text, position) - text); + + for (i = 0; entry->priv->words[i]; i++) { + if (bytes_pos >= entry->priv->word_starts[i] && + bytes_pos <= entry->priv->word_ends[i]) { + *start = entry->priv->word_starts[i]; + *end = entry->priv->word_ends[i]; + return; + } + } +} + +static void +add_to_dictionary(GtkWidget *menuitem, SexySpellEntry *entry) +{ + char *word; + gint start, end; + struct EnchantDict *dict; + + if (!have_enchant) + return; + + get_word_extents_from_position(entry, &start, &end, entry->priv->mark_character); + word = gtk_editable_get_chars(GTK_EDITABLE(entry), start, end); + + dict = (struct EnchantDict *) g_object_get_data(G_OBJECT(menuitem), "enchant-dict"); + if (dict) + enchant_dict_add_to_personal(dict, word, -1); + + g_free(word); + + if (entry->priv->words) { + g_strfreev(entry->priv->words); + g_free(entry->priv->word_starts); + g_free(entry->priv->word_ends); + } + entry_strsplit_utf8(GTK_ENTRY(entry), &entry->priv->words, &entry->priv->word_starts, &entry->priv->word_ends); + sexy_spell_entry_recheck_all(entry); +} + +static void +ignore_all(GtkWidget *menuitem, SexySpellEntry *entry) +{ + char *word; + gint start, end; + GSList *li; + + if (!have_enchant) + return; + + get_word_extents_from_position(entry, &start, &end, entry->priv->mark_character); + word = gtk_editable_get_chars(GTK_EDITABLE(entry), start, end); + + for (li = entry->priv->dict_list; li; li = g_slist_next (li)) { + struct EnchantDict *dict = (struct EnchantDict *) li->data; + enchant_dict_add_to_session(dict, word, -1); + } + + g_free(word); + + if (entry->priv->words) { + g_strfreev(entry->priv->words); + g_free(entry->priv->word_starts); + g_free(entry->priv->word_ends); + } + entry_strsplit_utf8(GTK_ENTRY(entry), &entry->priv->words, &entry->priv->word_starts, &entry->priv->word_ends); + sexy_spell_entry_recheck_all(entry); +} + +static void +replace_word(GtkWidget *menuitem, SexySpellEntry *entry) +{ + char *oldword; + const char *newword; + gint start, end; + gint cursor; + struct EnchantDict *dict; + + if (!have_enchant) + return; + + get_word_extents_from_position(entry, &start, &end, entry->priv->mark_character); + oldword = gtk_editable_get_chars(GTK_EDITABLE(entry), start, end); + newword = gtk_label_get_text(GTK_LABEL(GTK_BIN(menuitem)->child)); + + cursor = gtk_editable_get_position(GTK_EDITABLE(entry)); + /* is the cursor at the end? If so, restore it there */ + if (g_utf8_strlen(gtk_entry_get_text(GTK_ENTRY(entry)), -1) == cursor) + cursor = -1; + else if(cursor > start && cursor <= end) + cursor = start; + + gtk_editable_delete_text(GTK_EDITABLE(entry), start, end); + gtk_editable_set_position(GTK_EDITABLE(entry), start); + gtk_editable_insert_text(GTK_EDITABLE(entry), newword, strlen(newword), + &start); + gtk_editable_set_position(GTK_EDITABLE(entry), cursor); + + dict = (struct EnchantDict *) g_object_get_data(G_OBJECT(menuitem), "enchant-dict"); + + if (dict) + enchant_dict_store_replacement(dict, + oldword, -1, + newword, -1); + + g_free(oldword); +} + +static void +build_suggestion_menu(SexySpellEntry *entry, GtkWidget *menu, struct EnchantDict *dict, const gchar *word) +{ + GtkWidget *mi; + gchar **suggestions; + size_t n_suggestions, i; + + if (!have_enchant) + return; + + suggestions = enchant_dict_suggest(dict, word, -1, &n_suggestions); + + if (suggestions == NULL || n_suggestions == 0) { + /* no suggestions. put something in the menu anyway... */ + GtkWidget *label = gtk_label_new(""); + gtk_label_set_markup(GTK_LABEL(label), _("<i>(no suggestions)</i>")); + + mi = gtk_separator_menu_item_new(); + gtk_container_add(GTK_CONTAINER(mi), label); + gtk_widget_show_all(mi); + gtk_menu_shell_prepend(GTK_MENU_SHELL(menu), mi); + } else { + /* build a set of menus with suggestions */ + for (i = 0; i < n_suggestions; i++) { + if ((i != 0) && (i % 10 == 0)) { + mi = gtk_separator_menu_item_new(); + gtk_widget_show(mi); + gtk_menu_shell_append(GTK_MENU_SHELL(menu), mi); + + mi = gtk_menu_item_new_with_label(_("More...")); + gtk_widget_show(mi); + gtk_menu_shell_append(GTK_MENU_SHELL(menu), mi); + + menu = gtk_menu_new(); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(mi), menu); + } + + mi = gtk_menu_item_new_with_label(suggestions[i]); + g_object_set_data(G_OBJECT(mi), "enchant-dict", dict); + g_signal_connect(G_OBJECT(mi), "activate", G_CALLBACK(replace_word), entry); + gtk_widget_show(mi); + gtk_menu_shell_append(GTK_MENU_SHELL(menu), mi); + } + } + + enchant_dict_free_suggestions(dict, suggestions); +} + +static GtkWidget * +build_spelling_menu(SexySpellEntry *entry, const gchar *word) +{ + struct EnchantDict *dict; + GtkWidget *topmenu, *mi; + gchar *label; + + if (!have_enchant) + return NULL; + + topmenu = gtk_menu_new(); + + if (entry->priv->dict_list == NULL) + return topmenu; + +#if 1 + dict = (struct EnchantDict *) entry->priv->dict_list->data; + build_suggestion_menu(entry, topmenu, dict, word); +#else + /* Suggestions */ + if (g_slist_length(entry->priv->dict_list) == 1) { + dict = (struct EnchantDict *) entry->priv->dict_list->data; + build_suggestion_menu(entry, topmenu, dict, word); + } else { + GSList *li; + GtkWidget *menu; + gchar *lang, *lang_name; + + for (li = entry->priv->dict_list; li; li = g_slist_next (li)) { + dict = (struct EnchantDict *) li->data; + lang = get_lang_from_dict(dict); + lang_name = gtkspell_iso_codes_lookup_name_for_code(lang); + if (lang_name) { + mi = gtk_menu_item_new_with_label(lang_name); + g_free(lang_name); + } else { + mi = gtk_menu_item_new_with_label(lang); + } + g_free(lang); + + gtk_widget_show(mi); + gtk_menu_shell_append(GTK_MENU_SHELL(topmenu), mi); + menu = gtk_menu_new(); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(mi), menu); + build_suggestion_menu(entry, menu, dict, word); + } + } +#endif + + /* Separator */ + mi = gtk_separator_menu_item_new (); + gtk_widget_show(mi); + gtk_menu_shell_append(GTK_MENU_SHELL(topmenu), mi); + + /* + Add to Dictionary */ + label = g_strdup_printf(_("Add \"%s\" to Dictionary"), word); + mi = gtk_image_menu_item_new_with_label(label); + g_free(label); + + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(mi), gtk_image_new_from_stock(GTK_STOCK_ADD, GTK_ICON_SIZE_MENU)); + +#if 1 + dict = (struct EnchantDict *) entry->priv->dict_list->data; + g_object_set_data(G_OBJECT(mi), "enchant-dict", dict); + g_signal_connect(G_OBJECT(mi), "activate", G_CALLBACK(add_to_dictionary), entry); +#else + if (g_slist_length(entry->priv->dict_list) == 1) { + dict = (struct EnchantDict *) entry->priv->dict_list->data; + g_object_set_data(G_OBJECT(mi), "enchant-dict", dict); + g_signal_connect(G_OBJECT(mi), "activate", G_CALLBACK(add_to_dictionary), entry); + } else { + GSList *li; + GtkWidget *menu, *submi; + gchar *lang, *lang_name; + + menu = gtk_menu_new(); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(mi), menu); + + for (li = entry->priv->dict_list; li; li = g_slist_next(li)) { + dict = (struct EnchantDict *)li->data; + lang = get_lang_from_dict(dict); + lang_name = gtkspell_iso_codes_lookup_name_for_code(lang); + if (lang_name) { + submi = gtk_menu_item_new_with_label(lang_name); + g_free(lang_name); + } else { + submi = gtk_menu_item_new_with_label(lang); + } + g_free(lang); + g_object_set_data(G_OBJECT(submi), "enchant-dict", dict); + + g_signal_connect(G_OBJECT(submi), "activate", G_CALLBACK(add_to_dictionary), entry); + + gtk_widget_show(submi); + gtk_menu_shell_append(GTK_MENU_SHELL(menu), submi); + } + } +#endif + + gtk_widget_show_all(mi); + gtk_menu_shell_append(GTK_MENU_SHELL(topmenu), mi); + + /* - Ignore All */ + mi = gtk_image_menu_item_new_with_label(_("Ignore All")); + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(mi), gtk_image_new_from_stock(GTK_STOCK_REMOVE, GTK_ICON_SIZE_MENU)); + g_signal_connect(G_OBJECT(mi), "activate", G_CALLBACK(ignore_all), entry); + gtk_widget_show_all(mi); + gtk_menu_shell_append(GTK_MENU_SHELL(topmenu), mi); + + return topmenu; +} + +static void +sexy_spell_entry_populate_popup(SexySpellEntry *entry, GtkMenu *menu, gpointer data) +{ + GtkWidget *icon, *mi; + gint start, end; + gchar *word; + + if ((have_enchant == FALSE) || (entry->priv->checked == FALSE)) + return; + + if (g_slist_length(entry->priv->dict_list) == 0) + return; + + get_word_extents_from_position(entry, &start, &end, entry->priv->mark_character); + if (start == end) + return; + if (!word_misspelled(entry, start, end)) + return; + + /* separator */ + mi = gtk_separator_menu_item_new(); + gtk_widget_show(mi); + gtk_menu_shell_prepend(GTK_MENU_SHELL(menu), mi); + + /* Above the separator, show the suggestions menu */ + icon = gtk_image_new_from_stock(GTK_STOCK_SPELL_CHECK, GTK_ICON_SIZE_MENU); + mi = gtk_image_menu_item_new_with_label(_("Spelling Suggestions")); + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(mi), icon); + + word = gtk_editable_get_chars(GTK_EDITABLE(entry), start, end); + g_assert(word != NULL); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(mi), build_spelling_menu(entry, word)); + g_free(word); + + gtk_widget_show_all(mi); + gtk_menu_shell_prepend(GTK_MENU_SHELL(menu), mi); +} + +static void +sexy_spell_entry_init(SexySpellEntry *entry) +{ + entry->priv = g_new0(SexySpellEntryPriv, 1); + + entry->priv->dict_hash = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL); + + if (have_enchant) + sexy_spell_entry_activate_default_languages(entry); + + entry->priv->attr_list = pango_attr_list_new(); + + entry->priv->checked = TRUE; + + g_signal_connect(G_OBJECT(entry), "popup-menu", G_CALLBACK(sexy_spell_entry_popup_menu), entry); + g_signal_connect(G_OBJECT(entry), "populate-popup", G_CALLBACK(sexy_spell_entry_populate_popup), NULL); + g_signal_connect(G_OBJECT(entry), "changed", G_CALLBACK(sexy_spell_entry_changed), NULL); +} + +static void +sexy_spell_entry_finalize(GObject *obj) +{ + SexySpellEntry *entry; + + g_return_if_fail(obj != NULL); + g_return_if_fail(SEXY_IS_SPELL_ENTRY(obj)); + + entry = SEXY_SPELL_ENTRY(obj); + + if (entry->priv->attr_list) + pango_attr_list_unref(entry->priv->attr_list); + if (entry->priv->dict_hash) + g_hash_table_destroy(entry->priv->dict_hash); + if (entry->priv->words) + g_strfreev(entry->priv->words); + if (entry->priv->word_starts) + g_free(entry->priv->word_starts); + if (entry->priv->word_ends) + g_free(entry->priv->word_ends); + + if (have_enchant) { + if (entry->priv->broker) { + GSList *li; + for (li = entry->priv->dict_list; li; li = g_slist_next(li)) { + struct EnchantDict *dict = (struct EnchantDict*) li->data; + enchant_broker_free_dict (entry->priv->broker, dict); + } + g_slist_free (entry->priv->dict_list); + + enchant_broker_free(entry->priv->broker); + } + } + + g_free(entry->priv); + + if (G_OBJECT_CLASS(parent_class)->finalize) + G_OBJECT_CLASS(parent_class)->finalize(obj); +} + +static void +sexy_spell_entry_destroy(GtkObject *obj) +{ + SexySpellEntry *entry; + + entry = SEXY_SPELL_ENTRY(obj); + + if (GTK_OBJECT_CLASS(parent_class)->destroy) + GTK_OBJECT_CLASS(parent_class)->destroy(obj); +} + +/** + * sexy_spell_entry_new + * + * Creates a new SexySpellEntry widget. + * + * Returns: a new #SexySpellEntry. + */ +GtkWidget * +sexy_spell_entry_new(void) +{ + return GTK_WIDGET(g_object_new(SEXY_TYPE_SPELL_ENTRY, NULL)); +} + +GQuark +sexy_spell_error_quark(void) +{ + static GQuark q = 0; + if (q == 0) + q = g_quark_from_static_string("sexy-spell-error-quark"); + return q; +} + +static gboolean +default_word_check(SexySpellEntry *entry, const gchar *word) +{ + gboolean result = TRUE; + GSList *li; + + if (!have_enchant) + return result; + + if (g_unichar_isalpha(*word) == FALSE) { + /* We only want to check words */ + return FALSE; + } + for (li = entry->priv->dict_list; li; li = g_slist_next (li)) { + struct EnchantDict *dict = (struct EnchantDict *) li->data; + if (enchant_dict_check(dict, word, strlen(word)) == 0) { + result = FALSE; + break; + } + } + return result; +} + +static gboolean +word_misspelled(SexySpellEntry *entry, int start, int end) +{ + const gchar *text; + gchar *word; + gboolean ret; + + if (start == end) + return FALSE; + text = gtk_entry_get_text(GTK_ENTRY(entry)); + word = g_new0(gchar, end - start + 2); + + g_strlcpy(word, text + start, end - start + 1); + +#if 0 + g_signal_emit(entry, signals[WORD_CHECK], 0, word, &ret); +#else + ret = default_word_check (entry, word); +#endif + + g_free(word); + return ret; +} + +static void +check_word(SexySpellEntry *entry, int start, int end) +{ + PangoAttrIterator *it; + + /* Check to see if we've got any attributes at this position. + * If so, free them, since we'll readd it if the word is misspelled */ + it = pango_attr_list_get_iterator(entry->priv->attr_list); + if (it == NULL) + return; + do { + gint s, e; + pango_attr_iterator_range(it, &s, &e); + if (s == start) { + GSList *attrs = pango_attr_iterator_get_attrs(it); + g_slist_foreach(attrs, (GFunc) pango_attribute_destroy, NULL); + g_slist_free(attrs); + } + } while (pango_attr_iterator_next(it)); + pango_attr_iterator_destroy(it); + + if (word_misspelled(entry, start, end)) + insert_underline(entry, start, end); +} + +static void +sexy_spell_entry_recheck_all(SexySpellEntry *entry) +{ + GdkRectangle rect; + GtkWidget *widget = GTK_WIDGET(entry); + PangoLayout *layout; + int length, i; + + if ((have_enchant == FALSE) || (entry->priv->checked == FALSE)) + return; + + if (g_slist_length(entry->priv->dict_list) == 0) + return; + + /* Remove all existing pango attributes. These will get readded as we check */ + pango_attr_list_unref(entry->priv->attr_list); + entry->priv->attr_list = pango_attr_list_new(); + + /* Loop through words */ + for (i = 0; entry->priv->words[i]; i++) { + length = strlen(entry->priv->words[i]); + if (length == 0) + continue; + check_word(entry, entry->priv->word_starts[i], entry->priv->word_ends[i]); + } + + layout = gtk_entry_get_layout(GTK_ENTRY(entry)); + pango_layout_set_attributes(layout, entry->priv->attr_list); + + if (GTK_WIDGET_REALIZED(GTK_WIDGET(entry))) { + rect.x = 0; rect.y = 0; + rect.width = widget->allocation.width; + rect.height = widget->allocation.height; + gdk_window_invalidate_rect(widget->window, &rect, TRUE); + } +} + +static gint +sexy_spell_entry_expose(GtkWidget *widget, GdkEventExpose *event) +{ + SexySpellEntry *entry = SEXY_SPELL_ENTRY(widget); + GtkEntry *gtk_entry = GTK_ENTRY(widget); + PangoLayout *layout; + + if (entry->priv->checked) { + layout = gtk_entry_get_layout(gtk_entry); + pango_layout_set_attributes(layout, entry->priv->attr_list); + } + + return GTK_WIDGET_CLASS(parent_class)->expose_event (widget, event); +} + +static gint +sexy_spell_entry_button_press(GtkWidget *widget, GdkEventButton *event) +{ + SexySpellEntry *entry = SEXY_SPELL_ENTRY(widget); + GtkEntry *gtk_entry = GTK_ENTRY(widget); + gint pos; + + pos = gtk_entry_find_position(gtk_entry, event->x); + entry->priv->mark_character = pos; + + return GTK_WIDGET_CLASS(parent_class)->button_press_event (widget, event); +} + +static gboolean +sexy_spell_entry_popup_menu(GtkWidget *widget, SexySpellEntry *entry) +{ + /* Menu popped up from a keybinding (menu key or <shift>+F10). Use + * the cursor position as the mark position */ + entry->priv->mark_character = gtk_editable_get_position (GTK_EDITABLE (entry)); + return FALSE; +} + +static void +entry_strsplit_utf8(GtkEntry *entry, gchar ***set, gint **starts, gint **ends) +{ + PangoLayout *layout; + PangoLogAttr *log_attrs; + const gchar *text; + gint n_attrs, n_strings, i, j; + + layout = gtk_entry_get_layout(GTK_ENTRY(entry)); + text = gtk_entry_get_text(GTK_ENTRY(entry)); + pango_layout_get_log_attrs(layout, &log_attrs, &n_attrs); + + /* Find how many words we have */ + n_strings = 0; + for (i = 0; i < n_attrs; i++) + if (log_attrs[i].is_word_start) + n_strings++; + + *set = g_new0(gchar *, n_strings + 1); + *starts = g_new0(gint, n_strings); + *ends = g_new0(gint, n_strings); + + /* Copy out strings */ + for (i = 0, j = 0; i < n_attrs; i++) { + if (log_attrs[i].is_word_start) { + gint cend, bytes; + gchar *start; + + /* Find the end of this string */ + cend = i; + while (!(log_attrs[cend].is_word_end)) + cend++; + + /* Copy sub-string */ + start = g_utf8_offset_to_pointer(text, i); + bytes = (gint) (g_utf8_offset_to_pointer(text, cend) - start); + (*set)[j] = g_new0(gchar, bytes + 1); + (*starts)[j] = (gint) (start - text); + (*ends)[j] = (gint) (start - text + bytes); + g_utf8_strncpy((*set)[j], start, cend - i); + + /* Move on to the next word */ + j++; + } + } + + g_free (log_attrs); +} + +static void +sexy_spell_entry_changed(GtkEditable *editable, gpointer data) +{ + SexySpellEntry *entry = SEXY_SPELL_ENTRY(editable); + if (entry->priv->checked == FALSE) + return; + if (g_slist_length(entry->priv->dict_list) == 0) + return; + + if (entry->priv->words) { + g_strfreev(entry->priv->words); + g_free(entry->priv->word_starts); + g_free(entry->priv->word_ends); + } + entry_strsplit_utf8(GTK_ENTRY(entry), &entry->priv->words, &entry->priv->word_starts, &entry->priv->word_ends); + sexy_spell_entry_recheck_all(entry); +} + +static gboolean +enchant_has_lang(const gchar *lang, GSList *langs) { + GSList *i; + for (i = langs; i; i = g_slist_next(i)) { + if (strcmp(lang, i->data) == 0) { + return TRUE; + } + } + return FALSE; +} + +/** + * sexy_spell_entry_activate_default_languages: + * @entry: A #SexySpellEntry. + * + * Activate spell checking for languages specified in the $LANG + * or $LANGUAGE environment variables. These languages are + * activated by default, so this function need only be called + * if they were previously deactivated. + */ +void +sexy_spell_entry_activate_default_languages(SexySpellEntry *entry) +{ +#if GLIB_CHECK_VERSION (2, 6, 0) + const gchar* const *langs; + int i; + gchar *lastprefix = NULL; + GSList *enchant_langs; + + if (!have_enchant) + return; + + if (!entry->priv->broker) + entry->priv->broker = enchant_broker_init(); + + + langs = g_get_language_names (); + + if (langs == NULL) + return; + + enchant_langs = sexy_spell_entry_get_languages(entry); + + for (i = 0; langs[i]; i++) { + if ((g_strncasecmp(langs[i], "C", 1) != 0) && + (strlen(langs[i]) >= 2) && + enchant_has_lang(langs[i], enchant_langs)) { + if ((lastprefix == NULL) || (g_str_has_prefix(langs[i], lastprefix) == FALSE)) + sexy_spell_entry_activate_language_internal(entry, langs[i], NULL); + if (lastprefix != NULL) + g_free(lastprefix); + lastprefix = g_strndup(langs[i], 2); + } + } + if (lastprefix != NULL) + g_free(lastprefix); + + g_slist_foreach(enchant_langs, (GFunc) g_free, NULL); + g_slist_free(enchant_langs); + + /* If we don't have any languages activated, use "en" */ + if (entry->priv->dict_list == NULL) + sexy_spell_entry_activate_language_internal(entry, "en", NULL); +#else + gchar *lang; + + if (!have_enchant) + return; + + lang = (gchar *) g_getenv("LANG"); + + if (lang != NULL) { + if (g_strncasecmp(lang, "C", 1) == 0) + lang = NULL; + else if (lang[0] == '\0') + lang = NULL; + } + + if (lang == NULL) + lang = "en"; + + sexy_spell_entry_activate_language_internal(entry, lang, NULL); +#endif +} + +static void +get_lang_from_dict_cb(const char * const lang_tag, + const char * const provider_name, + const char * const provider_desc, + const char * const provider_file, + void * user_data) { + gchar **lang = (gchar **)user_data; + *lang = g_strdup(lang_tag); +} + +static gchar * +get_lang_from_dict(struct EnchantDict *dict) +{ + gchar *lang; + + if (!have_enchant) + return NULL; + + enchant_dict_describe(dict, get_lang_from_dict_cb, &lang); + return lang; +} + +static gboolean +sexy_spell_entry_activate_language_internal(SexySpellEntry *entry, const gchar *lang, GError **error) +{ + struct EnchantDict *dict; + + if (!have_enchant) + return FALSE; + + if (!entry->priv->broker) + entry->priv->broker = enchant_broker_init(); + + if (g_hash_table_lookup(entry->priv->dict_hash, lang)) + return TRUE; + + dict = enchant_broker_request_dict(entry->priv->broker, lang); + + if (!dict) { + g_set_error(error, SEXY_SPELL_ERROR, SEXY_SPELL_ERROR_BACKEND, _("enchant error for language: %s"), lang); + return FALSE; + } + + entry->priv->dict_list = g_slist_append(entry->priv->dict_list, (gpointer) dict); + g_hash_table_insert(entry->priv->dict_hash, get_lang_from_dict(dict), (gpointer) dict); + + return TRUE; +} + +static void +dict_describe_cb(const char * const lang_tag, + const char * const provider_name, + const char * const provider_desc, + const char * const provider_file, + void * user_data) +{ + GSList **langs = (GSList **)user_data; + + *langs = g_slist_append(*langs, (gpointer)g_strdup(lang_tag)); +} + +/** + * sexy_spell_entry_get_languages: + * @entry: A #SexySpellEntry. + * + * Retrieve a list of language codes for which dictionaries are available. + * + * Returns: a new #GList object, or %NULL on error. + */ +GSList * +sexy_spell_entry_get_languages(const SexySpellEntry *entry) +{ + GSList *langs = NULL; + + g_return_val_if_fail(entry != NULL, NULL); + g_return_val_if_fail(SEXY_IS_SPELL_ENTRY(entry), NULL); + + if (enchant_broker_list_dicts == NULL) + return NULL; + + if (!entry->priv->broker) + return NULL; + + enchant_broker_list_dicts(entry->priv->broker, dict_describe_cb, &langs); + + return langs; +} + +/** + * sexy_spell_entry_get_language_name: + * @entry: A #SexySpellEntry. + * @lang: The language code to lookup a friendly name for. + * + * Get a friendly name for a given locale. + * + * Returns: The name of the locale. Should be freed with g_free() + */ +gchar * +sexy_spell_entry_get_language_name(const SexySpellEntry *entry, + const gchar *lang) +{ + /*if (have_enchant) + return gtkspell_iso_codes_lookup_name_for_code(lang);*/ + return NULL; +} + +/** + * sexy_spell_entry_language_is_active: + * @entry: A #SexySpellEntry. + * @lang: The language to use, in a form enchant understands. + * + * Determine if a given language is currently active. + * + * Returns: TRUE if the language is active. + */ +gboolean +sexy_spell_entry_language_is_active(const SexySpellEntry *entry, + const gchar *lang) +{ + return (g_hash_table_lookup(entry->priv->dict_hash, lang) != NULL); +} + +/** + * sexy_spell_entry_activate_language: + * @entry: A #SexySpellEntry + * @lang: The language to use in a form Enchant understands. Typically either + * a two letter language code or a locale code in the form xx_XX. + * @error: Return location for error. + * + * Activate spell checking for the language specifed. + * + * Returns: FALSE if there was an error. + */ +gboolean +sexy_spell_entry_activate_language(SexySpellEntry *entry, const gchar *lang, GError **error) +{ + gboolean ret; + + g_return_val_if_fail(entry != NULL, FALSE); + g_return_val_if_fail(SEXY_IS_SPELL_ENTRY(entry), FALSE); + g_return_val_if_fail(lang != NULL && lang != '\0', FALSE); + + if (!have_enchant) + return FALSE; + + if (error) + g_return_val_if_fail(*error == NULL, FALSE); + + ret = sexy_spell_entry_activate_language_internal(entry, lang, error); + + if (ret) { + if (entry->priv->words) { + g_strfreev(entry->priv->words); + g_free(entry->priv->word_starts); + g_free(entry->priv->word_ends); + } + entry_strsplit_utf8(GTK_ENTRY(entry), &entry->priv->words, &entry->priv->word_starts, &entry->priv->word_ends); + sexy_spell_entry_recheck_all(entry); + } + + return ret; +} + +/** + * sexy_spell_entry_deactivate_language: + * @entry: A #SexySpellEntry. + * @lang: The language in a form Enchant understands. Typically either + * a two letter language code or a locale code in the form xx_XX. + * + * Deactivate spell checking for the language specifed. + */ +void +sexy_spell_entry_deactivate_language(SexySpellEntry *entry, const gchar *lang) +{ + g_return_if_fail(entry != NULL); + g_return_if_fail(SEXY_IS_SPELL_ENTRY(entry)); + + if (!have_enchant) + return; + + if (!entry->priv->dict_list) + return; + + if (lang) { + struct EnchantDict *dict; + + dict = g_hash_table_lookup(entry->priv->dict_hash, lang); + if (!dict) + return; + enchant_broker_free_dict(entry->priv->broker, dict); + entry->priv->dict_list = g_slist_remove(entry->priv->dict_list, dict); + g_hash_table_remove (entry->priv->dict_hash, lang); + } else { + /* deactivate all */ + GSList *li; + struct EnchantDict *dict; + + for (li = entry->priv->dict_list; li; li = g_slist_next(li)) { + dict = (struct EnchantDict *)li->data; + enchant_broker_free_dict(entry->priv->broker, dict); + } + + g_slist_free (entry->priv->dict_list); + g_hash_table_destroy (entry->priv->dict_hash); + entry->priv->dict_hash = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL); + entry->priv->dict_list = NULL; + } + + if (entry->priv->words) { + g_strfreev(entry->priv->words); + g_free(entry->priv->word_starts); + g_free(entry->priv->word_ends); + } + entry_strsplit_utf8(GTK_ENTRY(entry), &entry->priv->words, &entry->priv->word_starts, &entry->priv->word_ends); + sexy_spell_entry_recheck_all(entry); +} + +/** + * sexy_spell_entry_set_active_languages: + * @entry: A #SexySpellEntry + * @langs: A list of language codes to activate, in a form Enchant understands. + * Typically either a two letter language code or a locale code in the + * form xx_XX. + * @error: Return location for error. + * + * Activate spell checking for only the languages specified. + * + * Returns: FALSE if there was an error. + */ +gboolean +sexy_spell_entry_set_active_languages(SexySpellEntry *entry, GSList *langs, GError **error) +{ + GSList *li; + + g_return_val_if_fail(entry != NULL, FALSE); + g_return_val_if_fail(SEXY_IS_SPELL_ENTRY(entry), FALSE); + g_return_val_if_fail(langs != NULL, FALSE); + + if (!have_enchant) + return FALSE; + + /* deactivate all languages first */ + sexy_spell_entry_deactivate_language(entry, NULL); + + for (li = langs; li; li = g_slist_next(li)) { + if (sexy_spell_entry_activate_language_internal(entry, + (const gchar *) li->data, error) == FALSE) + return FALSE; + } + if (entry->priv->words) { + g_strfreev(entry->priv->words); + g_free(entry->priv->word_starts); + g_free(entry->priv->word_ends); + } + entry_strsplit_utf8(GTK_ENTRY(entry), &entry->priv->words, &entry->priv->word_starts, &entry->priv->word_ends); + sexy_spell_entry_recheck_all(entry); + return TRUE; +} + +/** + * sexy_spell_entry_get_active_languages: + * @entry: A #SexySpellEntry + * + * Retrieve a list of the currently active languages. + * + * Returns: A GSList of char* values with language codes (en, fr, etc). Both + * the data and the list must be freed by the user. + */ +GSList * +sexy_spell_entry_get_active_languages(SexySpellEntry *entry) +{ + GSList *ret = NULL, *li; + struct EnchantDict *dict; + gchar *lang; + + g_return_val_if_fail(entry != NULL, NULL); + g_return_val_if_fail(SEXY_IS_SPELL_ENTRY(entry), NULL); + + if (!have_enchant) + return NULL; + + for (li = entry->priv->dict_list; li; li = g_slist_next(li)) { + dict = (struct EnchantDict *) li->data; + lang = get_lang_from_dict(dict); + ret = g_slist_append(ret, lang); + } + return ret; +} + +/** + * sexy_spell_entry_is_checked: + * @entry: A #SexySpellEntry. + * + * Queries a #SexySpellEntry and returns whether the entry has spell-checking enabled. + * + * Returns: TRUE if the entry has spell-checking enabled. + */ +gboolean +sexy_spell_entry_is_checked(SexySpellEntry *entry) +{ + return entry->priv->checked; +} + +/** + * sexy_spell_entry_set_checked: + * @entry: A #SexySpellEntry. + * @checked: Whether to enable spell-checking + * + * Sets whether the entry has spell-checking enabled. + */ +void +sexy_spell_entry_set_checked(SexySpellEntry *entry, gboolean checked) +{ + GtkWidget *widget; + + if (entry->priv->checked == checked) + return; + + entry->priv->checked = checked; + widget = GTK_WIDGET(entry); + + if (checked == FALSE && GTK_WIDGET_REALIZED(widget)) { + PangoLayout *layout; + GdkRectangle rect; + + pango_attr_list_unref(entry->priv->attr_list); + entry->priv->attr_list = pango_attr_list_new(); + + layout = gtk_entry_get_layout(GTK_ENTRY(entry)); + pango_layout_set_attributes(layout, entry->priv->attr_list); + + rect.x = 0; rect.y = 0; + rect.width = widget->allocation.width; + rect.height = widget->allocation.height; + gdk_window_invalidate_rect(widget->window, &rect, TRUE); + } else { + if (entry->priv->words) { + g_strfreev(entry->priv->words); + g_free(entry->priv->word_starts); + g_free(entry->priv->word_ends); + } + entry_strsplit_utf8(GTK_ENTRY(entry), &entry->priv->words, &entry->priv->word_starts, &entry->priv->word_ends); + sexy_spell_entry_recheck_all(entry); + } +} diff --git a/xchat-2.8.8/src/fe-gtk/sexy-spell-entry.h b/xchat-2.8.8/src/fe-gtk/sexy-spell-entry.h new file mode 100644 index 0000000..61d1b79 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/sexy-spell-entry.h @@ -0,0 +1,87 @@ +/* + * @file libsexy/sexy-spell-entry.h Entry widget + * + * @Copyright (C) 2004-2006 Christian Hammond. + * + * 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 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., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ +#ifndef _SEXY_SPELL_ENTRY_H_ +#define _SEXY_SPELL_ENTRY_H_ + +typedef struct _SexySpellEntry SexySpellEntry; +typedef struct _SexySpellEntryClass SexySpellEntryClass; +typedef struct _SexySpellEntryPriv SexySpellEntryPriv; + +#include <gtk/gtkentry.h> + +#define SEXY_TYPE_SPELL_ENTRY (sexy_spell_entry_get_type()) +#define SEXY_SPELL_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SEXY_TYPE_SPELL_ENTRY, SexySpellEntry)) +#define SEXY_SPELL_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SEXY_TYPE_SPELL_ENTRY, SexySpellEntryClass)) +#define SEXY_IS_SPELL_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SEXY_TYPE_SPELL_ENTRY)) +#define SEXY_IS_SPELL_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SEXY_TYPE_SPELL_ENTRY)) +#define SEXY_SPELL_ENTRY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), SEXY_TYPE_SPELL_ENTRY, SexySpellEntryClass)) + +#define SEXY_SPELL_ERROR (sexy_spell_error_quark()) + +typedef enum { + SEXY_SPELL_ERROR_BACKEND, +} SexySpellError; + +struct _SexySpellEntry +{ + GtkEntry parent_object; + + SexySpellEntryPriv *priv; + + void (*gtk_reserved1)(void); + void (*gtk_reserved2)(void); + void (*gtk_reserved3)(void); + void (*gtk_reserved4)(void); +}; + +struct _SexySpellEntryClass +{ + GtkEntryClass parent_class; + + /* Signals */ + gboolean (*word_check)(SexySpellEntry *entry, const gchar *word); + + void (*gtk_reserved1)(void); + void (*gtk_reserved2)(void); + void (*gtk_reserved3)(void); + void (*gtk_reserved4)(void); +}; + +G_BEGIN_DECLS + +GType sexy_spell_entry_get_type(void); +GtkWidget *sexy_spell_entry_new(void); +GQuark sexy_spell_error_quark(void); + +GSList *sexy_spell_entry_get_languages(const SexySpellEntry *entry); +gchar *sexy_spell_entry_get_language_name(const SexySpellEntry *entry, const gchar *lang); +gboolean sexy_spell_entry_language_is_active(const SexySpellEntry *entry, const gchar *lang); +gboolean sexy_spell_entry_activate_language(SexySpellEntry *entry, const gchar *lang, GError **error); +void sexy_spell_entry_deactivate_language(SexySpellEntry *entry, const gchar *lang); +gboolean sexy_spell_entry_set_active_languages(SexySpellEntry *entry, GSList *langs, GError **error); +GSList *sexy_spell_entry_get_active_languages(SexySpellEntry *entry); +gboolean sexy_spell_entry_is_checked(SexySpellEntry *entry); +void sexy_spell_entry_set_checked(SexySpellEntry *entry, gboolean checked); +void sexy_spell_entry_activate_default_languages(SexySpellEntry *entry); + +G_END_DECLS + +#endif diff --git a/xchat-2.8.8/src/fe-gtk/textgui.c b/xchat-2.8.8/src/fe-gtk/textgui.c new file mode 100644 index 0000000..604da44 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/textgui.c @@ -0,0 +1,456 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <time.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> + +#include "fe-gtk.h" + +#include <gtk/gtkbutton.h> +#include <gtk/gtkentry.h> +#include <gtk/gtkhbox.h> +#include <gtk/gtkhbbox.h> +#include <gtk/gtkliststore.h> +#include <gtk/gtkstock.h> +#include <gtk/gtkvbox.h> +#include <gtk/gtkvpaned.h> +#include <gtk/gtkvscrollbar.h> + +#include "../common/xchat.h" +#include "../common/xchatc.h" +#include "../common/cfgfiles.h" +#include "../common/outbound.h" +#include "../common/fe.h" +#include "../common/text.h" +#include "gtkutil.h" +#include "xtext.h" +#include "maingui.h" +#include "palette.h" +#include "textgui.h" + +extern struct text_event te[]; +extern char *pntevts_text[]; +extern char *pntevts[]; + +static GtkWidget *pevent_dialog = NULL, *pevent_dialog_twid, + *pevent_dialog_entry, + *pevent_dialog_list, *pevent_dialog_hlist; + +enum +{ + COL_EVENT_NAME, + COL_EVENT_TEXT, + COL_ROW, + N_COLUMNS +}; + + +/* this is only used in xtext.c for indented timestamping */ +int +xtext_get_stamp_str (time_t tim, char **ret) +{ + return get_stamp_str (prefs.stamp_format, tim, ret); +} + +static void +PrintTextLine (xtext_buffer *xtbuf, unsigned char *text, int len, int indent, time_t timet) +{ + unsigned char *tab, *new_text; + int leftlen; + + if (len == 0) + len = 1; + + if (!indent) + { + if (prefs.timestamp) + { + int stamp_size; + char *stamp; + + if (timet == 0) + timet = time (0); + + stamp_size = get_stamp_str (prefs.stamp_format, timet, &stamp); + new_text = malloc (len + stamp_size + 1); + memcpy (new_text, stamp, stamp_size); + g_free (stamp); + memcpy (new_text + stamp_size, text, len); + gtk_xtext_append (xtbuf, new_text, len + stamp_size); + free (new_text); + } else + gtk_xtext_append (xtbuf, text, len); + return; + } + + tab = strchr (text, '\t'); + if (tab && tab < (text + len)) + { + leftlen = tab - text; + gtk_xtext_append_indent (xtbuf, + text, leftlen, tab + 1, len - (leftlen + 1), timet); + } else + gtk_xtext_append_indent (xtbuf, 0, 0, text, len, timet); +} + +void +PrintTextRaw (void *xtbuf, unsigned char *text, int indent, time_t stamp) +{ + char *last_text = text; + int len = 0; + int beep_done = FALSE; + + /* split the text into separate lines */ + while (1) + { + switch (*text) + { + case 0: + PrintTextLine (xtbuf, last_text, len, indent, stamp); + return; + case '\n': + PrintTextLine (xtbuf, last_text, len, indent, stamp); + text++; + if (*text == 0) + return; + last_text = text; + len = 0; + break; + case ATTR_BEEP: + *text = ' '; + if (!beep_done) /* beeps may be slow, so only do 1 per line */ + { + beep_done = TRUE; + if (!prefs.filterbeep) + gdk_beep (); + } + default: + text++; + len++; + } + } +} + +static void +pevent_dialog_close (GtkWidget *wid, gpointer arg) +{ + pevent_dialog = NULL; + pevent_save (NULL); +} + +static void +pevent_dialog_update (GtkWidget * wid, GtkWidget * twid) +{ + int len, m; + const char *text; + char *out; + int sig; + GtkTreeIter iter; + GtkListStore *store; + + if (!gtkutil_treeview_get_selected (GTK_TREE_VIEW (pevent_dialog_list), + &iter, COL_ROW, &sig, -1)) + return; + + text = gtk_entry_get_text (GTK_ENTRY (wid)); + len = strlen (text); + + if (pevt_build_string (text, &out, &m) != 0) + { + fe_message (_("There was an error parsing the string"), FE_MSG_ERROR); + return; + } + if (m > (te[sig].num_args & 0x7f)) + { + free (out); + out = malloc (4096); + snprintf (out, 4096, + _("This signal is only passed %d args, $%d is invalid"), + te[sig].num_args & 0x7f, m); + fe_message (out, FE_MSG_WARN); + free (out); + return; + } + + store = (GtkListStore *)gtk_tree_view_get_model (GTK_TREE_VIEW (pevent_dialog_list)); + gtk_list_store_set (store, &iter, COL_EVENT_TEXT, text, -1); + + if (pntevts_text[sig]) + free (pntevts_text[sig]); + if (pntevts[sig]) + free (pntevts[sig]); + + pntevts_text[sig] = malloc (len + 1); + memcpy (pntevts_text[sig], text, len + 1); + pntevts[sig] = out; + + out = malloc (len + 2); + memcpy (out, text, len + 1); + out[len] = '\n'; + out[len + 1] = 0; + check_special_chars (out, TRUE); + + PrintTextRaw (GTK_XTEXT (twid)->buffer, out, 0, 0); + free (out); + + /* save this when we exit */ + prefs.save_pevents = 1; +} + +static void +pevent_dialog_hfill (GtkWidget * list, int e) +{ + int i = 0; + char *text; + GtkTreeIter iter; + GtkListStore *store; + + store = (GtkListStore *)gtk_tree_view_get_model (GTK_TREE_VIEW (pevent_dialog_hlist)); + gtk_list_store_clear (store); + while (i < (te[e].num_args & 0x7f)) + { + text = _(te[e].help[i]); + i++; + if (text[0] == '\001') + text++; + gtk_list_store_insert_with_values (store, &iter, -1, + 0, i, + 1, text, -1); + } +} + +static void +pevent_dialog_unselect (void) +{ + gtk_entry_set_text (GTK_ENTRY (pevent_dialog_entry), ""); + gtk_list_store_clear ((GtkListStore *)gtk_tree_view_get_model (GTK_TREE_VIEW (pevent_dialog_hlist))); +} + +static void +pevent_dialog_select (GtkTreeSelection *sel, gpointer store) +{ + char *text; + int sig; + GtkTreeIter iter; + + if (!gtkutil_treeview_get_selected (GTK_TREE_VIEW (pevent_dialog_list), + &iter, COL_ROW, &sig, -1)) + { + pevent_dialog_unselect (); + } + else + { + gtk_tree_model_get (store, &iter, COL_EVENT_TEXT, &text, -1); + gtk_entry_set_text (GTK_ENTRY (pevent_dialog_entry), text); + g_free (text); + pevent_dialog_hfill (pevent_dialog_hlist, sig); + } +} + +static void +pevent_dialog_fill (GtkWidget * list) +{ + int i; + GtkListStore *store; + GtkTreeIter iter; + + store = (GtkListStore *)gtk_tree_view_get_model (GTK_TREE_VIEW (list)); + gtk_list_store_clear (store); + + i = NUM_XP; + do + { + i--; + gtk_list_store_insert_with_values (store, &iter, 0, + COL_EVENT_NAME, te[i].name, + COL_EVENT_TEXT, pntevts_text[i], + COL_ROW, i, -1); + } + while (i != 0); +} + +static void +pevent_save_req_cb (void *arg1, char *file) +{ + if (file) + pevent_save (file); +} + +static void +pevent_save_cb (GtkWidget * wid, void *data) +{ + if (data) + { + gtkutil_file_req (_("Print Texts File"), pevent_save_req_cb, NULL, + NULL, FRF_WRITE); + return; + } + pevent_save (NULL); +} + +static void +pevent_load_req_cb (void *arg1, char *file) +{ + if (file) + { + pevent_load (file); + pevent_make_pntevts (); + pevent_dialog_fill (pevent_dialog_list); + pevent_dialog_unselect (); + prefs.save_pevents = 1; + } +} + +static void +pevent_load_cb (GtkWidget * wid, void *data) +{ + gtkutil_file_req (_("Print Texts File"), pevent_load_req_cb, NULL, NULL, 0); +} + +static void +pevent_ok_cb (GtkWidget * wid, void *data) +{ + gtk_widget_destroy (pevent_dialog); +} + +static void +pevent_test_cb (GtkWidget * wid, GtkWidget * twid) +{ + int len, n; + char *out, *text; + + for (n = 0; n < NUM_XP; n++) + { + text = _(pntevts_text[n]); + len = strlen (text); + + out = malloc (len + 2); + memcpy (out, text, len + 1); + out[len] = '\n'; + out[len + 1] = 0; + check_special_chars (out, TRUE); + + PrintTextRaw (GTK_XTEXT (twid)->buffer, out, 0, 0); + free (out); + } +} + +void +pevent_dialog_show () +{ + GtkWidget *vbox, *hbox, *tbox, *wid, *bh, *th; + GtkListStore *store, *hstore; + GtkTreeSelection *sel; + + if (pevent_dialog) + { + mg_bring_tofront (pevent_dialog); + return; + } + + pevent_dialog = + mg_create_generic_tab ("edit events", _("Edit Events"), + TRUE, FALSE, pevent_dialog_close, NULL, + 600, 455, &vbox, 0); + + wid = gtk_vpaned_new (); + th = gtk_vbox_new (0, 2); + bh = gtk_vbox_new (0, 2); + gtk_widget_show (th); + gtk_widget_show (bh); + gtk_paned_pack1 (GTK_PANED (wid), th, 1, 1); + gtk_paned_pack2 (GTK_PANED (wid), bh, 0, 1); + gtk_box_pack_start (GTK_BOX (vbox), wid, 1, 1, 0); + gtk_widget_show (wid); + + store = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_INT); + pevent_dialog_list = gtkutil_treeview_new (th, GTK_TREE_MODEL (store), NULL, + COL_EVENT_NAME, _("Event"), + COL_EVENT_TEXT, _("Text"), -1); + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (pevent_dialog_list)); + g_signal_connect (G_OBJECT (sel), "changed", + G_CALLBACK (pevent_dialog_select), store); + + pevent_dialog_twid = gtk_xtext_new (colors, 0); + gtk_xtext_set_tint (GTK_XTEXT (pevent_dialog_twid), prefs.tint_red, prefs.tint_green, prefs.tint_blue); + gtk_xtext_set_background (GTK_XTEXT (pevent_dialog_twid), + channelwin_pix, prefs.transparent); + + pevent_dialog_entry = gtk_entry_new_with_max_length (255); + g_signal_connect (G_OBJECT (pevent_dialog_entry), "activate", + G_CALLBACK (pevent_dialog_update), pevent_dialog_twid); + gtk_box_pack_start (GTK_BOX (bh), pevent_dialog_entry, 0, 0, 0); + gtk_widget_show (pevent_dialog_entry); + + tbox = gtk_hbox_new (0, 0); + gtk_container_add (GTK_CONTAINER (bh), tbox); + gtk_widget_show (tbox); + + gtk_widget_set_usize (pevent_dialog_twid, 150, 20); + gtk_container_add (GTK_CONTAINER (tbox), pevent_dialog_twid); + gtk_xtext_set_font (GTK_XTEXT (pevent_dialog_twid), prefs.font_normal); + + wid = gtk_vscrollbar_new (GTK_XTEXT (pevent_dialog_twid)->adj); + gtk_box_pack_start (GTK_BOX (tbox), wid, FALSE, FALSE, 0); + show_and_unfocus (wid); + + gtk_widget_show (pevent_dialog_twid); + + hstore = gtk_list_store_new (2, G_TYPE_INT, G_TYPE_STRING); + pevent_dialog_hlist = gtkutil_treeview_new (bh, GTK_TREE_MODEL (hstore), + NULL, + 0, _("$ Number"), + 1, _("Description"), -1); + gtk_widget_show (pevent_dialog_hlist); + + pevent_dialog_fill (pevent_dialog_list); + gtk_widget_show (pevent_dialog_list); + + hbox = gtk_hbutton_box_new (); + gtk_box_pack_end (GTK_BOX (vbox), hbox, 0, 0, 2); + /*wid = gtk_button_new_with_label (_("Save")); + gtk_box_pack_end (GTK_BOX (hbox), wid, 0, 0, 0); + gtk_signal_connect (GTK_OBJECT (wid), "clicked", + GTK_SIGNAL_FUNC (pevent_save_cb), NULL); + gtk_widget_show (wid);*/ + gtkutil_button (hbox, GTK_STOCK_SAVE_AS, NULL, pevent_save_cb, + (void *) 1, _("Save As...")); + gtkutil_button (hbox, GTK_STOCK_OPEN, NULL, pevent_load_cb, + (void *) 0, _("Load From...")); + wid = gtk_button_new_with_label (_("Test All")); + gtk_box_pack_end (GTK_BOX (hbox), wid, 0, 0, 0); + g_signal_connect (G_OBJECT (wid), "clicked", + G_CALLBACK (pevent_test_cb), pevent_dialog_twid); + gtk_widget_show (wid); + + wid = gtk_button_new_from_stock (GTK_STOCK_OK); + gtk_box_pack_start (GTK_BOX (hbox), wid, 0, 0, 0); + g_signal_connect (G_OBJECT (wid), "clicked", + G_CALLBACK (pevent_ok_cb), NULL); + gtk_widget_show (wid); + + gtk_widget_show (hbox); + + gtk_widget_show (pevent_dialog); +} diff --git a/xchat-2.8.8/src/fe-gtk/textgui.h b/xchat-2.8.8/src/fe-gtk/textgui.h new file mode 100644 index 0000000..23db584 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/textgui.h @@ -0,0 +1,2 @@ +void PrintTextRaw (void *xtbuf, unsigned char *text, int indent, time_t stamp); +void pevent_dialog_show (void); diff --git a/xchat-2.8.8/src/fe-gtk/urlgrab.c b/xchat-2.8.8/src/fe-gtk/urlgrab.c new file mode 100644 index 0000000..6e5f1e0 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/urlgrab.c @@ -0,0 +1,208 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> + +#include "fe-gtk.h" + +#include <gtk/gtkhbox.h> +#include <gtk/gtkstock.h> +#include <gtk/gtkhbbox.h> +#include <gtk/gtkscrolledwindow.h> + +#include <gtk/gtkliststore.h> +#include <gtk/gtktreeview.h> +#include <gtk/gtktreeselection.h> +#include <gtk/gtkcellrenderertext.h> + +#include "../common/xchat.h" +#include "../common/cfgfiles.h" +#include "../common/fe.h" +#include "../common/url.h" +#include "../common/tree.h" +#include "gtkutil.h" +#include "menu.h" +#include "maingui.h" +#include "urlgrab.h" + +/* model for the URL treeview */ +enum +{ + URL_COLUMN, + N_COLUMNS +}; + +static GtkWidget *urlgrabberwindow = 0; + + +static gboolean +url_treeview_url_clicked_cb (GtkWidget *view, GdkEventButton *event, + gpointer data) +{ + GtkTreeIter iter; + gchar *url; + + if (!event || + !gtkutil_treeview_get_selected (GTK_TREE_VIEW (view), &iter, + URL_COLUMN, &url, -1)) + { + return FALSE; + } + + switch (event->button) + { + case 1: + if (event->type == GDK_2BUTTON_PRESS) + fe_open_url (url); + break; + case 3: + menu_urlmenu (event, url); + break; + default: + break; + } + g_free (url); + + return FALSE; +} + +static GtkWidget * +url_treeview_new (GtkWidget *box) +{ + GtkListStore *store; + GtkWidget *view; + + store = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING); + g_return_val_if_fail (store != NULL, NULL); + + view = gtkutil_treeview_new (box, GTK_TREE_MODEL (store), NULL, + URL_COLUMN, _("URL"), -1); + g_signal_connect (G_OBJECT (view), "button_press_event", + G_CALLBACK (url_treeview_url_clicked_cb), NULL); + /* don't want column headers */ + gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (view), FALSE); + gtk_widget_show (view); + return view; +} + +static void +url_closegui (GtkWidget *wid, gpointer userdata) +{ + urlgrabberwindow = 0; +} + +static void +url_button_clear (void) +{ + GtkListStore *store; + + url_clear (); + store = GTK_LIST_STORE (g_object_get_data (G_OBJECT (urlgrabberwindow), + "model")); + gtk_list_store_clear (store); +} + +static void +url_button_copy (GtkWidget *widget, gpointer data) +{ + GtkTreeView *view = GTK_TREE_VIEW (data); + GtkTreeIter iter; + gchar *url = NULL; + + if (gtkutil_treeview_get_selected (view, &iter, URL_COLUMN, &url, -1)) + { + gtkutil_copy_to_clipboard (GTK_WIDGET (view), NULL, url); + g_free (url); + } +} + +static void +url_save_callback (void *arg1, char *file) +{ + if (file) + url_save (file, "w", TRUE); +} + +static void +url_button_save (void) +{ + gtkutil_file_req (_("Select an output filename"), + url_save_callback, NULL, NULL, FRF_WRITE); +} + +void +fe_url_add (const char *urltext) +{ + GtkListStore *store; + GtkTreeIter iter; + + if (urlgrabberwindow) + { + store = GTK_LIST_STORE (g_object_get_data (G_OBJECT (urlgrabberwindow), + "model")); + gtk_list_store_prepend (store, &iter); + gtk_list_store_set (store, &iter, + URL_COLUMN, urltext, + -1); + } +} + +static int +populate_cb (char *urltext, gpointer userdata) +{ + fe_url_add (urltext); + return TRUE; +} + +void +url_opengui () +{ + GtkWidget *vbox, *hbox, *view; + + if (urlgrabberwindow) + { + mg_bring_tofront (urlgrabberwindow); + return; + } + + urlgrabberwindow = + mg_create_generic_tab ("UrlGrabber", _("XChat: URL Grabber"), FALSE, + TRUE, url_closegui, NULL, 400, 256, &vbox, 0); + view = url_treeview_new (vbox); + g_object_set_data (G_OBJECT (urlgrabberwindow), "model", + gtk_tree_view_get_model (GTK_TREE_VIEW (view))); + + hbox = gtk_hbutton_box_new (); + gtk_button_box_set_layout (GTK_BUTTON_BOX (hbox), GTK_BUTTONBOX_SPREAD); + gtk_container_set_border_width (GTK_CONTAINER (hbox), 5); + gtk_box_pack_end (GTK_BOX (vbox), hbox, 0, 0, 0); + gtk_widget_show (hbox); + + gtkutil_button (hbox, GTK_STOCK_CLEAR, + _("Clear list"), url_button_clear, 0, _("Clear")); + gtkutil_button (hbox, GTK_STOCK_COPY, + _("Copy selected URL"), url_button_copy, view, _("Copy")); + gtkutil_button (hbox, GTK_STOCK_SAVE_AS, + _("Save list to a file"), url_button_save, 0, _("Save As...")); + + gtk_widget_show (urlgrabberwindow); + + tree_foreach (url_tree, (tree_traverse_func *)populate_cb, NULL); +} diff --git a/xchat-2.8.8/src/fe-gtk/urlgrab.h b/xchat-2.8.8/src/fe-gtk/urlgrab.h new file mode 100644 index 0000000..cc53424 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/urlgrab.h @@ -0,0 +1,2 @@ +void url_autosave (void); +void url_opengui (void); diff --git a/xchat-2.8.8/src/fe-gtk/userlistgui.c b/xchat-2.8.8/src/fe-gtk/userlistgui.c new file mode 100644 index 0000000..f040a6a --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/userlistgui.c @@ -0,0 +1,718 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> + +#include "fe-gtk.h" + +#include <gtk/gtkbox.h> +#include <gtk/gtklabel.h> +#include <gtk/gtkdnd.h> +#include <gtk/gtkentry.h> +#include <gtk/gtktreeview.h> +#include <gtk/gtktreeselection.h> +#include <gtk/gtkscrolledwindow.h> +#include <gtk/gtkcellrendererpixbuf.h> +#include <gtk/gtkcellrenderertext.h> +#include <gtk/gtkliststore.h> +#include <gdk/gdkkeysyms.h> + +#include "../common/xchat.h" +#include "../common/util.h" +#include "../common/userlist.h" +#include "../common/modes.h" +#include "../common/notify.h" +#include "../common/xchatc.h" +#include "gtkutil.h" +#include "palette.h" +#include "maingui.h" +#include "menu.h" +#include "pixmaps.h" +#include "userlistgui.h" + +#ifdef USE_GTKSPELL +#include <gtk/gtktextview.h> +#endif + + +enum +{ + COL_PIX=0, // GdkPixbuf * + COL_NICK=1, // char * + COL_HOST=2, // char * + COL_USER=3, // struct User * + COL_GDKCOLOR=4 // GdkColor * +}; + + +GdkPixbuf * +get_user_icon (server *serv, struct User *user) +{ + char *pre; + int level; + + if (!user) + return NULL; + + /* these ones are hardcoded */ + switch (user->prefix[0]) + { + case 0: return NULL; + case '@': return pix_op; + case '%': return pix_hop; + case '+': return pix_voice; + } + + /* find out how many levels above Op this user is */ + pre = strchr (serv->nick_prefixes, '@'); + if (pre && pre != serv->nick_prefixes) + { + pre--; + level = 0; + while (1) + { + if (pre[0] == user->prefix[0]) + { + switch (level) + { + case 0: return pix_red; /* 1 level above op */ + case 1: return pix_purple; /* 2 levels above op */ + } + break; /* 3+, no icons */ + } + level++; + if (pre == serv->nick_prefixes) + break; + pre--; + } + } + + return NULL; +} + +void +fe_userlist_numbers (session *sess) +{ + char tbuf[256]; + + if (sess == current_tab || !sess->gui->is_tab) + { + if (sess->total) + { + snprintf (tbuf, sizeof (tbuf), _("%d ops, %d total"), sess->ops, sess->total); + tbuf[sizeof (tbuf) - 1] = 0; + gtk_label_set_text (GTK_LABEL (sess->gui->namelistinfo), tbuf); + } else + { + gtk_label_set_text (GTK_LABEL (sess->gui->namelistinfo), NULL); + } + + if (sess->type == SESS_CHANNEL && prefs.gui_tweaks & 1) + fe_set_title (sess); + } +} + +static void +scroll_to_iter (GtkTreeIter *iter, GtkTreeView *treeview, GtkTreeModel *model) +{ + GtkTreePath *path = gtk_tree_model_get_path (model, iter); + if (path) + { + gtk_tree_view_scroll_to_cell (treeview, path, NULL, TRUE, 0.5, 0.5); + gtk_tree_path_free (path); + } +} + +/* select a row in the userlist by nick-name */ + +void +userlist_select (session *sess, char *name) +{ + GtkTreeIter iter; + GtkTreeView *treeview = GTK_TREE_VIEW (sess->gui->user_tree); + GtkTreeModel *model = gtk_tree_view_get_model (treeview); + GtkTreeSelection *selection = gtk_tree_view_get_selection (treeview); + struct User *row_user; + + if (gtk_tree_model_get_iter_first (model, &iter)) + { + do + { + gtk_tree_model_get (model, &iter, COL_USER, &row_user, -1); + if (sess->server->p_cmp (row_user->nick, name) == 0) + { + if (gtk_tree_selection_iter_is_selected (selection, &iter)) + gtk_tree_selection_unselect_iter (selection, &iter); + else + gtk_tree_selection_select_iter (selection, &iter); + + /* and make sure it's visible */ + scroll_to_iter (&iter, treeview, model); + return; + } + } + while (gtk_tree_model_iter_next (model, &iter)); + } +} + +char ** +userlist_selection_list (GtkWidget *widget, int *num_ret) +{ + GtkTreeIter iter; + GtkTreeView *treeview = (GtkTreeView *) widget; + GtkTreeSelection *selection = gtk_tree_view_get_selection (treeview); + GtkTreeModel *model = gtk_tree_view_get_model (treeview); + struct User *user; + int i, num_sel; + char **nicks; + + *num_ret = 0; + /* first, count the number of selections */ + num_sel = 0; + if (gtk_tree_model_get_iter_first (model, &iter)) + { + do + { + if (gtk_tree_selection_iter_is_selected (selection, &iter)) + num_sel++; + } + while (gtk_tree_model_iter_next (model, &iter)); + } + + if (num_sel < 1) + return NULL; + + nicks = malloc (sizeof (char *) * (num_sel + 1)); + + i = 0; + gtk_tree_model_get_iter_first (model, &iter); + do + { + if (gtk_tree_selection_iter_is_selected (selection, &iter)) + { + gtk_tree_model_get (model, &iter, COL_USER, &user, -1); + nicks[i] = g_strdup (user->nick); + i++; + nicks[i] = NULL; + } + } + while (gtk_tree_model_iter_next (model, &iter)); + + *num_ret = i; + return nicks; +} + +void +fe_userlist_set_selected (struct session *sess) +{ + GtkListStore *store = sess->res->user_model; + GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (sess->gui->user_tree)); + GtkTreeIter iter; + struct User *user; + + /* if it's not front-most tab it doesn't own the GtkTreeView! */ + if (store != (GtkListStore*) gtk_tree_view_get_model (GTK_TREE_VIEW (sess->gui->user_tree))) + return; + + if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter)) + { + do + { + gtk_tree_model_get (GTK_TREE_MODEL (store), &iter, COL_USER, &user, -1); + + if (gtk_tree_selection_iter_is_selected (selection, &iter)) + user->selected = 1; + else + user->selected = 0; + + } while (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter)); + } +} + +static GtkTreeIter * +find_row (GtkTreeView *treeview, GtkTreeModel *model, struct User *user, + int *selected) +{ + static GtkTreeIter iter; + struct User *row_user; + + *selected = FALSE; + if (gtk_tree_model_get_iter_first (model, &iter)) + { + do + { + gtk_tree_model_get (model, &iter, COL_USER, &row_user, -1); + if (row_user == user) + { + if (gtk_tree_view_get_model (treeview) == model) + { + if (gtk_tree_selection_iter_is_selected (gtk_tree_view_get_selection (treeview), &iter)) + *selected = TRUE; + } + return &iter; + } + } + while (gtk_tree_model_iter_next (model, &iter)); + } + + return NULL; +} + +void +userlist_set_value (GtkWidget *treeview, gfloat val) +{ + gtk_adjustment_set_value ( + gtk_tree_view_get_vadjustment (GTK_TREE_VIEW (treeview)), val); +} + +gfloat +userlist_get_value (GtkWidget *treeview) +{ + return gtk_tree_view_get_vadjustment (GTK_TREE_VIEW (treeview))->value; +} + +int +fe_userlist_remove (session *sess, struct User *user) +{ + GtkTreeIter *iter; +/* GtkAdjustment *adj; + gfloat val, end;*/ + int sel; + + iter = find_row (GTK_TREE_VIEW (sess->gui->user_tree), + sess->res->user_model, user, &sel); + if (!iter) + return 0; + +/* adj = gtk_tree_view_get_vadjustment (GTK_TREE_VIEW (sess->gui->user_tree)); + val = adj->value;*/ + + gtk_list_store_remove (sess->res->user_model, iter); + + /* is it the front-most tab? */ +/* if (gtk_tree_view_get_model (GTK_TREE_VIEW (sess->gui->user_tree)) + == sess->res->user_model) + { + end = adj->upper - adj->lower - adj->page_size; + if (val > end) + val = end; + gtk_adjustment_set_value (adj, val); + }*/ + + return sel; +} + +void +fe_userlist_rehash (session *sess, struct User *user) +{ + GtkTreeIter *iter; + int sel; + int do_away = TRUE; + + iter = find_row (GTK_TREE_VIEW (sess->gui->user_tree), + sess->res->user_model, user, &sel); + if (!iter) + return; + + if (prefs.away_size_max < 1 || !prefs.away_track) + do_away = FALSE; + + gtk_list_store_set (GTK_LIST_STORE (sess->res->user_model), iter, + COL_HOST, user->hostname, + COL_GDKCOLOR, (do_away) + ? (user->away ? &colors[COL_AWAY] : NULL) + : (NULL), + -1); +} + +void +fe_userlist_insert (session *sess, struct User *newuser, int row, int sel) +{ + GtkTreeModel *model = sess->res->user_model; + GdkPixbuf *pix = get_user_icon (sess->server, newuser); + GtkTreeIter iter; + int do_away = TRUE; + char *nick; + + if (prefs.away_size_max < 1 || !prefs.away_track) + do_away = FALSE; + + nick = newuser->nick; + if (prefs.gui_tweaks & 64) + { + nick = malloc (strlen (newuser->nick) + 2); + nick[0] = newuser->prefix[0]; + if (!nick[0] || nick[0] == ' ') + strcpy (nick, newuser->nick); + else + strcpy (nick + 1, newuser->nick); + pix = NULL; + } + + gtk_list_store_insert_with_values (GTK_LIST_STORE (model), &iter, row, + COL_PIX, pix, + COL_NICK, nick, + COL_HOST, newuser->hostname, + COL_USER, newuser, + COL_GDKCOLOR, (do_away) + ? (newuser->away ? &colors[COL_AWAY] : NULL) + : (NULL), + -1); + + if (prefs.gui_tweaks & 64) + free (nick); + + /* is it me? */ + if (newuser->me && sess->gui->nick_box) + { + if (!sess->gui->is_tab || sess == current_tab) + mg_set_access_icon (sess->gui, pix, sess->server->is_away); + } + +#if 0 + if (prefs.hilitenotify && notify_isnotify (sess, newuser->nick)) + { + gtk_clist_set_foreground ((GtkCList *) sess->gui->user_clist, row, + &colors[prefs.nu_color]); + } +#endif + + /* is it the front-most tab? */ + if (gtk_tree_view_get_model (GTK_TREE_VIEW (sess->gui->user_tree)) + == model) + { + if (sel) + gtk_tree_selection_select_iter (gtk_tree_view_get_selection + (GTK_TREE_VIEW (sess->gui->user_tree)), &iter); + } +} + +void +fe_userlist_move (session *sess, struct User *user, int new_row) +{ + fe_userlist_insert (sess, user, new_row, fe_userlist_remove (sess, user)); +} + +void +fe_userlist_clear (session *sess) +{ + gtk_list_store_clear (sess->res->user_model); +} + +static void +userlist_dnd_drop (GtkTreeView *widget, GdkDragContext *context, + gint x, gint y, GtkSelectionData *selection_data, + guint info, guint ttime, gpointer userdata) +{ + struct User *user; + GtkTreePath *path; + GtkTreeModel *model; + GtkTreeIter iter; + + if (!gtk_tree_view_get_path_at_pos (widget, x, y, &path, NULL, NULL, NULL)) + return; + + model = gtk_tree_view_get_model (widget); + if (!gtk_tree_model_get_iter (model, &iter, path)) + return; + gtk_tree_model_get (model, &iter, COL_USER, &user, -1); + + mg_dnd_drop_file (current_sess, user->nick, selection_data->data); +} + +static gboolean +userlist_dnd_motion (GtkTreeView *widget, GdkDragContext *context, gint x, + gint y, guint ttime, gpointer tree) +{ + GtkTreePath *path; + GtkTreeSelection *sel; + + if (!tree) + return FALSE; + + if (gtk_tree_view_get_path_at_pos (widget, x, y, &path, NULL, NULL, NULL)) + { + sel = gtk_tree_view_get_selection (widget); + gtk_tree_selection_unselect_all (sel); + gtk_tree_selection_select_path (sel, path); + } + + return FALSE; +} + +static gboolean +userlist_dnd_leave (GtkTreeView *widget, GdkDragContext *context, guint ttime) +{ + gtk_tree_selection_unselect_all (gtk_tree_view_get_selection (widget)); + return TRUE; +} + +void * +userlist_create_model (void) +{ + return gtk_list_store_new (5, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_POINTER, GDK_TYPE_COLOR); +} + +static void +userlist_add_columns (GtkTreeView * treeview) +{ + GtkCellRenderer *renderer; + + /* icon column */ + renderer = gtk_cell_renderer_pixbuf_new (); + if (prefs.gui_tweaks & 32) + g_object_set (G_OBJECT (renderer), "ypad", 0, NULL); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview), + -1, NULL, renderer, + "pixbuf", 0, NULL); + + /* nick column */ + renderer = gtk_cell_renderer_text_new (); + if (prefs.gui_tweaks & 32) + g_object_set (G_OBJECT (renderer), "ypad", 0, NULL); + gtk_cell_renderer_text_set_fixed_height_from_font (GTK_CELL_RENDERER_TEXT (renderer), 1); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview), + -1, NULL, renderer, + "text", 1, "foreground-gdk", 4, NULL); + + if (prefs.showhostname_in_userlist) + { + /* hostname column */ + renderer = gtk_cell_renderer_text_new (); + if (prefs.gui_tweaks & 32) + g_object_set (G_OBJECT (renderer), "ypad", 0, NULL); + gtk_cell_renderer_text_set_fixed_height_from_font (GTK_CELL_RENDERER_TEXT (renderer), 1); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview), + -1, NULL, renderer, + "text", 2, NULL); + } +} + +static gint +userlist_click_cb (GtkWidget *widget, GdkEventButton *event, gpointer userdata) +{ + char **nicks; + int i; + GtkTreeSelection *sel; + GtkTreePath *path; + + if (!event) + return FALSE; + + if (!(event->state & GDK_CONTROL_MASK) && + event->type == GDK_2BUTTON_PRESS && prefs.doubleclickuser[0]) + { + nicks = userlist_selection_list (widget, &i); + if (nicks) + { + nick_command_parse (current_sess, prefs.doubleclickuser, nicks[0], + nicks[0]); + while (i) + { + i--; + g_free (nicks[i]); + } + free (nicks); + } + return TRUE; + } + + if (event->button == 3) + { + /* do we have a multi-selection? */ + nicks = userlist_selection_list (widget, &i); + if (nicks && i > 1) + { + menu_nickmenu (current_sess, event, nicks[0], i); + while (i) + { + i--; + g_free (nicks[i]); + } + free (nicks); + return TRUE; + } + if (nicks) + { + g_free (nicks[0]); + free (nicks); + } + + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (widget)); + if (gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (widget), + event->x, event->y, &path, 0, 0, 0)) + { + gtk_tree_selection_unselect_all (sel); + gtk_tree_selection_select_path (sel, path); + gtk_tree_path_free (path); + nicks = userlist_selection_list (widget, &i); + if (nicks) + { + menu_nickmenu (current_sess, event, nicks[0], i); + while (i) + { + i--; + g_free (nicks[i]); + } + free (nicks); + } + } else + { + gtk_tree_selection_unselect_all (sel); + } + + return TRUE; + } + + return FALSE; +} + +static gboolean +userlist_key_cb (GtkWidget *wid, GdkEventKey *evt, gpointer userdata) +{ + if (evt->keyval >= GDK_asterisk && evt->keyval <= GDK_z) + { + /* dirty trick to avoid auto-selection */ + SPELL_ENTRY_SET_EDITABLE (current_sess->gui->input_box, FALSE); + gtk_widget_grab_focus (current_sess->gui->input_box); + SPELL_ENTRY_SET_EDITABLE (current_sess->gui->input_box, TRUE); + gtk_widget_event (current_sess->gui->input_box, (GdkEvent *)evt); + return TRUE; + } + + return FALSE; +} + +GtkWidget * +userlist_create (GtkWidget *box) +{ + GtkWidget *sw, *treeview; + static const GtkTargetEntry dnd_dest_targets[] = + { + {"text/uri-list", 0, 1}, + {"XCHAT_CHANVIEW", GTK_TARGET_SAME_APP, 75 } + }; + static const GtkTargetEntry dnd_src_target[] = + { + {"XCHAT_USERLIST", GTK_TARGET_SAME_APP, 75 } + }; + + sw = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw), + GTK_SHADOW_ETCHED_IN); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), + prefs.showhostname_in_userlist ? + GTK_POLICY_AUTOMATIC : + GTK_POLICY_NEVER, + GTK_POLICY_AUTOMATIC); + gtk_box_pack_start (GTK_BOX (box), sw, TRUE, TRUE, 0); + gtk_widget_show (sw); + + treeview = gtk_tree_view_new (); + gtk_widget_set_name (treeview, "xchat-userlist"); + gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeview), FALSE); + gtk_tree_selection_set_mode (gtk_tree_view_get_selection + (GTK_TREE_VIEW (treeview)), + GTK_SELECTION_MULTIPLE); + + /* set up drops */ + gtk_drag_dest_set (treeview, GTK_DEST_DEFAULT_ALL, dnd_dest_targets, 2, + GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_LINK); + gtk_drag_source_set (treeview, GDK_BUTTON1_MASK, dnd_src_target, 1, GDK_ACTION_MOVE); + + /* file DND (for DCC) */ + g_signal_connect (G_OBJECT (treeview), "drag_motion", + G_CALLBACK (userlist_dnd_motion), treeview); + g_signal_connect (G_OBJECT (treeview), "drag_leave", + G_CALLBACK (userlist_dnd_leave), 0); + g_signal_connect (G_OBJECT (treeview), "drag_data_received", + G_CALLBACK (userlist_dnd_drop), treeview); + + g_signal_connect (G_OBJECT (treeview), "button_press_event", + G_CALLBACK (userlist_click_cb), 0); + g_signal_connect (G_OBJECT (treeview), "key_press_event", + G_CALLBACK (userlist_key_cb), 0); + + /* tree/chanview DND */ +#ifndef WIN32 /* leaks GDI pool memory, don't enable */ + g_signal_connect (G_OBJECT (treeview), "drag_begin", + G_CALLBACK (mg_drag_begin_cb), NULL); + g_signal_connect (G_OBJECT (treeview), "drag_drop", + G_CALLBACK (mg_drag_drop_cb), NULL); + g_signal_connect (G_OBJECT (treeview), "drag_motion", + G_CALLBACK (mg_drag_motion_cb), NULL); + g_signal_connect (G_OBJECT (treeview), "drag_end", + G_CALLBACK (mg_drag_end_cb), NULL); +#endif + + userlist_add_columns (GTK_TREE_VIEW (treeview)); + + gtk_container_add (GTK_CONTAINER (sw), treeview); + gtk_widget_show (treeview); + + return treeview; +} + +void +userlist_show (session *sess) +{ + gtk_tree_view_set_model (GTK_TREE_VIEW (sess->gui->user_tree), + sess->res->user_model); +} + +void +fe_uselect (session *sess, char *word[], int do_clear, int scroll_to) +{ + int thisname; + char *name; + GtkTreeIter iter; + GtkTreeView *treeview = GTK_TREE_VIEW (sess->gui->user_tree); + GtkTreeModel *model = gtk_tree_view_get_model (treeview); + GtkTreeSelection *selection = gtk_tree_view_get_selection (treeview); + struct User *row_user; + + if (gtk_tree_model_get_iter_first (model, &iter)) + { + if (do_clear) + gtk_tree_selection_unselect_all (selection); + + do + { + if (*word[0]) + { + gtk_tree_model_get (model, &iter, COL_USER, &row_user, -1); + thisname = 0; + while ( *(name = word[thisname++]) ) + { + if (sess->server->p_cmp (row_user->nick, name) == 0) + { + gtk_tree_selection_select_iter (selection, &iter); + if (scroll_to) + scroll_to_iter (&iter, treeview, model); + break; + } + } + } + + } + while (gtk_tree_model_iter_next (model, &iter)); + } +} diff --git a/xchat-2.8.8/src/fe-gtk/userlistgui.h b/xchat-2.8.8/src/fe-gtk/userlistgui.h new file mode 100644 index 0000000..b49e2b9 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/userlistgui.h @@ -0,0 +1,8 @@ +void userlist_set_value (GtkWidget *treeview, gfloat val); +gfloat userlist_get_value (GtkWidget *treeview); +GtkWidget *userlist_create (GtkWidget *box); +void *userlist_create_model (void); +void userlist_show (session *sess); +void userlist_select (session *sess, char *name); +char **userlist_selection_list (GtkWidget *widget, int *num_ret); +GdkPixbuf *get_user_icon (server *serv, struct User *user); diff --git a/xchat-2.8.8/src/fe-gtk/xtext.c b/xchat-2.8.8/src/fe-gtk/xtext.c new file mode 100644 index 0000000..206c340 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/xtext.c @@ -0,0 +1,5452 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * ========================================================================= + * + * xtext, the text widget used by X-Chat. + * By Peter Zelezny <zed@xchat.org>. + * + */ + +#define XCHAT /* using xchat */ +#define TINT_VALUE 195 /* 195/255 of the brightness. */ +#define MOTION_MONITOR /* URL hilights. */ +#define SMOOTH_SCROLL /* line-by-line or pixel scroll? */ +#define SCROLL_HACK /* use XCopyArea scroll, or full redraw? */ +#undef COLOR_HILIGHT /* Color instead of underline? */ +/* Italic is buggy because it assumes drawing an italic string will have + identical extents to the normal font. This is only true some of the + time, so we can't use this hack yet. */ +#undef ITALIC /* support Italic? */ +#define GDK_MULTIHEAD_SAFE +#define USE_DB /* double buffer */ + +#define MARGIN 2 /* dont touch. */ +#define REFRESH_TIMEOUT 20 +#define WORDWRAP_LIMIT 24 + +#include <string.h> +#include <ctype.h> +#include <stdlib.h> +#include <time.h> +#include <unistd.h> +#include <gtk/gtkmain.h> +#include <gtk/gtksignal.h> +#include <gtk/gtkselection.h> +#include <gtk/gtkclipboard.h> +#include <gtk/gtkversion.h> +#include <gtk/gtkwindow.h> + +#ifdef XCHAT +#include "../../config.h" /* can define USE_XLIB here */ +#else +#define USE_XLIB +#endif + +#ifdef USE_XLIB +#include <gdk/gdkx.h> +#include <X11/Xlib.h> +#include <X11/Xatom.h> +#endif + +#ifdef USE_MMX +#include "mmx_cmod.h" +#endif + +#include "xtext.h" + +#define charlen(str) g_utf8_skip[*(guchar *)(str)] + +#ifdef WIN32 +#include <windows.h> +#include <gdk/gdkwin32.h> +#endif + +/* is delimiter */ +#define is_del(c) \ + (c == ' ' || c == '\n' || c == ')' || c == '(' || \ + c == '>' || c == '<' || c == ATTR_RESET || c == ATTR_BOLD || c == 0) + +#ifdef SCROLL_HACK +/* force scrolling off */ +#define dontscroll(buf) (buf)->last_pixel_pos = 0x7fffffff +#else +#define dontscroll(buf) +#endif + +static GtkWidgetClass *parent_class = NULL; + +struct textentry +{ + struct textentry *next; + struct textentry *prev; + unsigned char *str; + time_t stamp; + gint16 str_width; + gint16 str_len; + gint16 mark_start; + gint16 mark_end; + gint16 indent; + gint16 left_len; + gint16 lines_taken; +#define RECORD_WRAPS 4 + guint16 wrap_offset[RECORD_WRAPS]; + guchar mb; /* boolean: is multibyte? */ + guchar tag; + guchar pad1; + guchar pad2; /* 32-bit align : 44 bytes total */ +}; + +enum +{ + WORD_CLICK, + LAST_SIGNAL +}; + +/* values for selection info */ +enum +{ + TARGET_UTF8_STRING, + TARGET_STRING, + TARGET_TEXT, + TARGET_COMPOUND_TEXT +}; + +static guint xtext_signals[LAST_SIGNAL]; + +#ifdef XCHAT +char *nocasestrstr (const char *text, const char *tofind); /* util.c */ +int xtext_get_stamp_str (time_t, char **); +#endif +static void gtk_xtext_render_page (GtkXText * xtext); +static void gtk_xtext_calc_lines (xtext_buffer *buf, int); +#if defined(USE_XLIB) || defined(WIN32) +static void gtk_xtext_load_trans (GtkXText * xtext); +static void gtk_xtext_free_trans (GtkXText * xtext); +#endif +static char *gtk_xtext_selection_get_text (GtkXText *xtext, int *len_ret); +static textentry *gtk_xtext_nth (GtkXText *xtext, int line, int *subline); +static void gtk_xtext_adjustment_changed (GtkAdjustment * adj, + GtkXText * xtext); +static int gtk_xtext_render_ents (GtkXText * xtext, textentry *, textentry *); +static void gtk_xtext_recalc_widths (xtext_buffer *buf, int); +static void gtk_xtext_fix_indent (xtext_buffer *buf); +static int gtk_xtext_find_subline (GtkXText *xtext, textentry *ent, int line); +static char *gtk_xtext_conv_color (unsigned char *text, int len, int *newlen); +static unsigned char * +gtk_xtext_strip_color (unsigned char *text, int len, unsigned char *outbuf, + int *newlen, int *mb_ret, int strip_hidden); + +/* some utility functions first */ + +#ifndef XCHAT /* xchat has this in util.c */ + +static char * +nocasestrstr (const char *s, const char *tofind) +{ + register const size_t len = strlen (tofind); + + if (len == 0) + return (char *)s; + while (toupper(*s) != toupper(*tofind) || strncasecmp (s, tofind, len)) + if (*s++ == '\0') + return (char *)NULL; + return (char *)s; +} + +#endif + +/* gives width of a 8bit string - with no mIRC codes in it */ + +static int +gtk_xtext_text_width_8bit (GtkXText *xtext, unsigned char *str, int len) +{ + int width = 0; + + while (len) + { + width += xtext->fontwidth[*str]; + str++; + len--; + } + + return width; +} + +#ifdef WIN32 + +static void +win32_draw_bg (GtkXText *xtext, int x, int y, int width, int height) +{ + HDC hdc; + HWND hwnd; + HRGN rgn; + + if (xtext->shaded) + { + /* xtext->pixmap is really a GdkImage, created in win32_tint() */ + gdk_draw_image (xtext->draw_buf, xtext->bgc, (GdkImage*)xtext->pixmap, + x, y, x, y, width, height); + } else + { + hwnd = GDK_WINDOW_HWND (xtext->draw_buf); + hdc = GetDC (hwnd); + + rgn = CreateRectRgn (x, y, x + width, y + height); + SelectClipRgn (hdc, rgn); + + PaintDesktop (hdc); + + ReleaseDC (hwnd, hdc); + DeleteObject (rgn); + } +} + +static void +xtext_draw_bg (GtkXText *xtext, int x, int y, int width, int height) +{ + if (xtext->transparent) + win32_draw_bg (xtext, x, y, width, height); + else + gdk_draw_rectangle (xtext->draw_buf, xtext->bgc, 1, x, y, width, height); +} + +#else + +#define xtext_draw_bg(xt,x,y,w,h) gdk_draw_rectangle(xt->draw_buf, xt->bgc, \ + 1,x,y,w,h); + +#endif + +/* ========================================= */ +/* ========== XFT 1 and 2 BACKEND ========== */ +/* ========================================= */ + +#ifdef USE_XFT + +static void +backend_font_close (GtkXText *xtext) +{ + XftFontClose (GDK_WINDOW_XDISPLAY (xtext->draw_buf), xtext->font); +#ifdef ITALIC + XftFontClose (GDK_WINDOW_XDISPLAY (xtext->draw_buf), xtext->ifont); +#endif +} + +static void +backend_init (GtkXText *xtext) +{ + if (xtext->xftdraw == NULL) + { + xtext->xftdraw = XftDrawCreate ( + GDK_WINDOW_XDISPLAY (xtext->draw_buf), + GDK_WINDOW_XWINDOW (xtext->draw_buf), + GDK_VISUAL_XVISUAL (gdk_drawable_get_visual (xtext->draw_buf)), + GDK_COLORMAP_XCOLORMAP (gdk_drawable_get_colormap (xtext->draw_buf))); + XftDrawSetSubwindowMode (xtext->xftdraw, IncludeInferiors); + } +} + +static void +backend_deinit (GtkXText *xtext) +{ + if (xtext->xftdraw) + { + XftDrawDestroy (xtext->xftdraw); + xtext->xftdraw = NULL; + } +} + +static XftFont * +backend_font_open_real (Display *xdisplay, char *name, gboolean italics) +{ + XftFont *font = NULL; + PangoFontDescription *fontd; + int weight, slant, screen = DefaultScreen (xdisplay); + + fontd = pango_font_description_from_string (name); + + if (pango_font_description_get_size (fontd) != 0) + { + weight = pango_font_description_get_weight (fontd); + /* from pangoft2-fontmap.c */ + if (weight < (PANGO_WEIGHT_NORMAL + PANGO_WEIGHT_LIGHT) / 2) + weight = XFT_WEIGHT_LIGHT; + else if (weight < (PANGO_WEIGHT_NORMAL + 600) / 2) + weight = XFT_WEIGHT_MEDIUM; + else if (weight < (600 + PANGO_WEIGHT_BOLD) / 2) + weight = XFT_WEIGHT_DEMIBOLD; + else if (weight < (PANGO_WEIGHT_BOLD + PANGO_WEIGHT_ULTRABOLD) / 2) + weight = XFT_WEIGHT_BOLD; + else + weight = XFT_WEIGHT_BLACK; + + slant = pango_font_description_get_style (fontd); + if (slant == PANGO_STYLE_ITALIC) + slant = XFT_SLANT_ITALIC; + else if (slant == PANGO_STYLE_OBLIQUE) + slant = XFT_SLANT_OBLIQUE; + else + slant = XFT_SLANT_ROMAN; + + font = XftFontOpen (xdisplay, screen, + XFT_FAMILY, XftTypeString, pango_font_description_get_family (fontd), + XFT_CORE, XftTypeBool, False, + XFT_SIZE, XftTypeDouble, (double)pango_font_description_get_size (fontd)/PANGO_SCALE, + XFT_WEIGHT, XftTypeInteger, weight, + XFT_SLANT, XftTypeInteger, italics ? XFT_SLANT_ITALIC : slant, + NULL); + } + pango_font_description_free (fontd); + + if (font == NULL) + { + font = XftFontOpenName (xdisplay, screen, name); + if (font == NULL) + font = XftFontOpenName (xdisplay, screen, "sans-11"); + } + + return font; +} + +static void +backend_font_open (GtkXText *xtext, char *name) +{ + Display *dis = GDK_WINDOW_XDISPLAY (xtext->draw_buf); + + xtext->font = backend_font_open_real (dis, name, FALSE); +#ifdef ITALIC + xtext->ifont = backend_font_open_real (dis, name, TRUE); +#endif +} + +inline static int +backend_get_char_width (GtkXText *xtext, unsigned char *str, int *mbl_ret) +{ + XGlyphInfo ext; + + if (*str < 128) + { + *mbl_ret = 1; + return xtext->fontwidth[*str]; + } + + *mbl_ret = charlen (str); + XftTextExtentsUtf8 (GDK_WINDOW_XDISPLAY (xtext->draw_buf), xtext->font, str, *mbl_ret, &ext); + + return ext.xOff; +} + +static int +backend_get_text_width (GtkXText *xtext, guchar *str, int len, int is_mb) +{ + XGlyphInfo ext; + + if (!is_mb) + return gtk_xtext_text_width_8bit (xtext, str, len); + + XftTextExtentsUtf8 (GDK_WINDOW_XDISPLAY (xtext->draw_buf), xtext->font, str, len, &ext); + return ext.xOff; +} + +static void +backend_draw_text (GtkXText *xtext, int dofill, GdkGC *gc, int x, int y, + char *str, int len, int str_width, int is_mb) +{ + /*Display *xdisplay = GDK_WINDOW_XDISPLAY (xtext->draw_buf);*/ + void (*draw_func) (XftDraw *, XftColor *, XftFont *, int, int, XftChar8 *, int) = (void *)XftDrawString8; + XftFont *font; + + /* if all ascii, use String8 to avoid the conversion penalty */ + if (is_mb) + draw_func = (void *)XftDrawStringUtf8; + + if (dofill) + { +/* register GC xgc = GDK_GC_XGC (gc); + XSetForeground (xdisplay, xgc, xtext->xft_bg->pixel); + XFillRectangle (xdisplay, GDK_WINDOW_XWINDOW (xtext->draw_buf), xgc, x, + y - xtext->font->ascent, str_width, xtext->fontsize);*/ + XftDrawRect (xtext->xftdraw, xtext->xft_bg, x, + y - xtext->font->ascent, str_width, xtext->fontsize); + } + + font = xtext->font; +#ifdef ITALIC + if (xtext->italics) + font = xtext->ifont; +#endif + + draw_func (xtext->xftdraw, xtext->xft_fg, font, x, y, str, len); + + if (xtext->overdraw) + draw_func (xtext->xftdraw, xtext->xft_fg, font, x, y, str, len); + + if (xtext->bold) + draw_func (xtext->xftdraw, xtext->xft_fg, font, x + 1, y, str, len); +} + +/*static void +backend_set_clip (GtkXText *xtext, GdkRectangle *area) +{ + gdk_gc_set_clip_rectangle (xtext->fgc, area); + gdk_gc_set_clip_rectangle (xtext->bgc, area); +} + +static void +backend_clear_clip (GtkXText *xtext) +{ + gdk_gc_set_clip_rectangle (xtext->fgc, NULL); + gdk_gc_set_clip_rectangle (xtext->bgc, NULL); +}*/ + +/*static void +backend_set_clip (GtkXText *xtext, GdkRectangle *area) +{ + Region reg; + XRectangle rect; + + rect.x = area->x; + rect.y = area->y; + rect.width = area->width; + rect.height = area->height; + + reg = XCreateRegion (); + XUnionRectWithRegion (&rect, reg, reg); + XftDrawSetClip (xtext->xftdraw, reg); + XDestroyRegion (reg); + + gdk_gc_set_clip_rectangle (xtext->fgc, area); +} + +static void +backend_clear_clip (GtkXText *xtext) +{ + XftDrawSetClip (xtext->xftdraw, NULL); + gdk_gc_set_clip_rectangle (xtext->fgc, NULL); +} +*/ +#else /* !USE_XFT */ + +/* ======================================= */ +/* ============ PANGO BACKEND ============ */ +/* ======================================= */ + +static void +backend_font_close (GtkXText *xtext) +{ + pango_font_description_free (xtext->font->font); +#ifdef ITALIC + pango_font_description_free (xtext->font->ifont); +#endif +} + +static void +backend_init (GtkXText *xtext) +{ + if (xtext->layout == NULL) + { + xtext->layout = gtk_widget_create_pango_layout (GTK_WIDGET (xtext), 0); + if (xtext->font) + pango_layout_set_font_description (xtext->layout, xtext->font->font); + } +} + +static void +backend_deinit (GtkXText *xtext) +{ + if (xtext->layout) + { + g_object_unref (xtext->layout); + xtext->layout = NULL; + } +} + +static PangoFontDescription * +backend_font_open_real (char *name) +{ + PangoFontDescription *font; + + font = pango_font_description_from_string (name); + if (font && pango_font_description_get_size (font) == 0) + { + pango_font_description_free (font); + font = pango_font_description_from_string ("sans 11"); + } + if (!font) + font = pango_font_description_from_string ("sans 11"); + + return font; +} + +static void +backend_font_open (GtkXText *xtext, char *name) +{ + PangoLanguage *lang; + PangoContext *context; + PangoFontMetrics *metrics; + + xtext->font = &xtext->pango_font; + xtext->font->font = backend_font_open_real (name); + if (!xtext->font->font) + { + xtext->font = NULL; + return; + } +#ifdef ITALIC + xtext->font->ifont = backend_font_open_real (name); + pango_font_description_set_style (xtext->font->ifont, PANGO_STYLE_ITALIC); +#endif + + backend_init (xtext); + pango_layout_set_font_description (xtext->layout, xtext->font->font); + + /* vte does it this way */ + context = gtk_widget_get_pango_context (GTK_WIDGET (xtext)); + lang = pango_context_get_language (context); + metrics = pango_context_get_metrics (context, xtext->font->font, lang); + xtext->font->ascent = pango_font_metrics_get_ascent (metrics) / PANGO_SCALE; + xtext->font->descent = pango_font_metrics_get_descent (metrics) / PANGO_SCALE; + pango_font_metrics_unref (metrics); +} + +static int +backend_get_text_width (GtkXText *xtext, guchar *str, int len, int is_mb) +{ + int width; + + if (!is_mb) + return gtk_xtext_text_width_8bit (xtext, str, len); + + if (*str == 0) + return 0; + + pango_layout_set_text (xtext->layout, str, len); + pango_layout_get_pixel_size (xtext->layout, &width, NULL); + + return width; +} + +inline static int +backend_get_char_width (GtkXText *xtext, unsigned char *str, int *mbl_ret) +{ + int width; + + if (*str < 128) + { + *mbl_ret = 1; + return xtext->fontwidth[*str]; + } + + *mbl_ret = charlen (str); + pango_layout_set_text (xtext->layout, str, *mbl_ret); + pango_layout_get_pixel_size (xtext->layout, &width, NULL); + + return width; +} + +/* simplified version of gdk_draw_layout_line_with_colors() */ + +static void +xtext_draw_layout_line (GdkDrawable *drawable, + GdkGC *gc, + gint x, + gint y, + PangoLayoutLine *line) +{ + GSList *tmp_list = line->runs; + PangoRectangle logical_rect; + gint x_off = 0; + + while (tmp_list) + { + PangoLayoutRun *run = tmp_list->data; + + pango_glyph_string_extents (run->glyphs, run->item->analysis.font, + NULL, &logical_rect); + + gdk_draw_glyphs (drawable, gc, run->item->analysis.font, + x + x_off / PANGO_SCALE, y, run->glyphs); + + x_off += logical_rect.width; + tmp_list = tmp_list->next; + } +} + +static void +backend_draw_text (GtkXText *xtext, int dofill, GdkGC *gc, int x, int y, + char *str, int len, int str_width, int is_mb) +{ + GdkGCValues val; + GdkColor col; + PangoLayoutLine *line; + +#ifdef ITALIC + if (xtext->italics) + pango_layout_set_font_description (xtext->layout, xtext->font->ifont); +#endif + + pango_layout_set_text (xtext->layout, str, len); + + if (dofill) + { +#ifdef WIN32 + if (xtext->transparent && !xtext->backcolor) + win32_draw_bg (xtext, x, y - xtext->font->ascent, str_width, + xtext->fontsize); + else +#endif + { + gdk_gc_get_values (gc, &val); + col.pixel = val.background.pixel; + gdk_gc_set_foreground (gc, &col); + gdk_draw_rectangle (xtext->draw_buf, gc, 1, x, y - + xtext->font->ascent, str_width, xtext->fontsize); + col.pixel = val.foreground.pixel; + gdk_gc_set_foreground (gc, &col); + } + } + + line = pango_layout_get_lines (xtext->layout)->data; + + xtext_draw_layout_line (xtext->draw_buf, gc, x, y, line); + + if (xtext->overdraw) + xtext_draw_layout_line (xtext->draw_buf, gc, x, y, line); + + if (xtext->bold) + xtext_draw_layout_line (xtext->draw_buf, gc, x + 1, y, line); + +#ifdef ITALIC + if (xtext->italics) + pango_layout_set_font_description (xtext->layout, xtext->font->font); +#endif +} + +/*static void +backend_set_clip (GtkXText *xtext, GdkRectangle *area) +{ + gdk_gc_set_clip_rectangle (xtext->fgc, area); + gdk_gc_set_clip_rectangle (xtext->bgc, area); +} + +static void +backend_clear_clip (GtkXText *xtext) +{ + gdk_gc_set_clip_rectangle (xtext->fgc, NULL); + gdk_gc_set_clip_rectangle (xtext->bgc, NULL); +}*/ + +#endif /* !USE_PANGO */ + +static void +xtext_set_fg (GtkXText *xtext, GdkGC *gc, int index) +{ + GdkColor col; + + col.pixel = xtext->palette[index]; + gdk_gc_set_foreground (gc, &col); + +#ifdef USE_XFT + if (gc == xtext->fgc) + xtext->xft_fg = &xtext->color[index]; + else + xtext->xft_bg = &xtext->color[index]; +#endif +} + +#ifdef USE_XFT + +#define xtext_set_bg(xt,gc,index) xt->xft_bg = &xt->color[index] + +#else + +static void +xtext_set_bg (GtkXText *xtext, GdkGC *gc, int index) +{ + GdkColor col; + + col.pixel = xtext->palette[index]; + gdk_gc_set_background (gc, &col); +} + +#endif + +static void +gtk_xtext_init (GtkXText * xtext) +{ + xtext->pixmap = NULL; + xtext->io_tag = 0; + xtext->add_io_tag = 0; + xtext->scroll_tag = 0; + xtext->max_lines = 0; + xtext->col_back = XTEXT_BG; + xtext->col_fore = XTEXT_FG; + xtext->nc = 0; + xtext->pixel_offset = 0; + xtext->bold = FALSE; + xtext->underline = FALSE; + xtext->italics = FALSE; + xtext->hidden = FALSE; + xtext->font = NULL; +#ifdef USE_XFT + xtext->xftdraw = NULL; +#else + xtext->layout = NULL; +#endif + xtext->jump_out_offset = 0; + xtext->jump_in_offset = 0; + xtext->ts_x = 0; + xtext->ts_y = 0; + xtext->clip_x = 0; + xtext->clip_x2 = 1000000; + xtext->clip_y = 0; + xtext->clip_y2 = 1000000; + xtext->error_function = NULL; + xtext->urlcheck_function = NULL; + xtext->color_paste = FALSE; + xtext->skip_border_fills = FALSE; + xtext->skip_stamp = FALSE; + xtext->render_hilights_only = FALSE; + xtext->un_hilight = FALSE; + xtext->recycle = FALSE; + xtext->dont_render = FALSE; + xtext->dont_render2 = FALSE; + xtext->overdraw = FALSE; + xtext->tint_red = xtext->tint_green = xtext->tint_blue = TINT_VALUE; + + xtext->adj = (GtkAdjustment *) gtk_adjustment_new (0, 0, 1, 1, 1, 1); + g_object_ref (G_OBJECT (xtext->adj)); + g_object_ref_sink (G_OBJECT (xtext->adj)); + g_object_unref (G_OBJECT (xtext->adj)); + + xtext->vc_signal_tag = g_signal_connect (G_OBJECT (xtext->adj), + "value_changed", G_CALLBACK (gtk_xtext_adjustment_changed), xtext); + { + static const GtkTargetEntry targets[] = { + { "UTF8_STRING", 0, TARGET_UTF8_STRING }, + { "STRING", 0, TARGET_STRING }, + { "TEXT", 0, TARGET_TEXT }, + { "COMPOUND_TEXT", 0, TARGET_COMPOUND_TEXT } + }; + static const gint n_targets = sizeof (targets) / sizeof (targets[0]); + + gtk_selection_add_targets (GTK_WIDGET (xtext), GDK_SELECTION_PRIMARY, + targets, n_targets); + } + + if (getenv ("XCHAT_OVERDRAW")) + xtext->overdraw = TRUE; +} + +static void +gtk_xtext_adjustment_set (xtext_buffer *buf, int fire_signal) +{ + GtkAdjustment *adj = buf->xtext->adj; + + if (buf->xtext->buffer == buf) + { + adj->lower = 0; + adj->upper = buf->num_lines; + + if (adj->upper == 0) + adj->upper = 1; + + adj->page_size = + (GTK_WIDGET (buf->xtext)->allocation.height - + buf->xtext->font->descent) / buf->xtext->fontsize; + adj->page_increment = adj->page_size; + + if (adj->value > adj->upper - adj->page_size) + adj->value = adj->upper - adj->page_size; + + if (adj->value < 0) + adj->value = 0; + + if (fire_signal) + gtk_adjustment_changed (adj); + } +} + +static gint +gtk_xtext_adjustment_timeout (GtkXText * xtext) +{ + gtk_xtext_render_page (xtext); + xtext->io_tag = 0; + return 0; +} + +static void +gtk_xtext_adjustment_changed (GtkAdjustment * adj, GtkXText * xtext) +{ +#ifdef SMOOTH_SCROLL + if (xtext->buffer->old_value != xtext->adj->value) +#else + if ((int) xtext->buffer->old_value != (int) xtext->adj->value) +#endif + { + if (xtext->adj->value >= xtext->adj->upper - xtext->adj->page_size) + xtext->buffer->scrollbar_down = TRUE; + else + xtext->buffer->scrollbar_down = FALSE; + + if (xtext->adj->value + 1 == xtext->buffer->old_value || + xtext->adj->value - 1 == xtext->buffer->old_value) /* clicked an arrow? */ + { + if (xtext->io_tag) + { + g_source_remove (xtext->io_tag); + xtext->io_tag = 0; + } + gtk_xtext_render_page (xtext); + } else + { + if (!xtext->io_tag) + xtext->io_tag = g_timeout_add (REFRESH_TIMEOUT, + (GSourceFunc) + gtk_xtext_adjustment_timeout, + xtext); + } + } + xtext->buffer->old_value = adj->value; +} + +GtkWidget * +gtk_xtext_new (GdkColor palette[], int separator) +{ + GtkXText *xtext; + + xtext = g_object_new (gtk_xtext_get_type (), NULL); + xtext->separator = separator; + xtext->wordwrap = TRUE; + xtext->buffer = gtk_xtext_buffer_new (xtext); + xtext->orig_buffer = xtext->buffer; + + gtk_widget_set_double_buffered (GTK_WIDGET (xtext), FALSE); + gtk_xtext_set_palette (xtext, palette); + + return GTK_WIDGET (xtext); +} + +static void +gtk_xtext_destroy (GtkObject * object) +{ + GtkXText *xtext = GTK_XTEXT (object); + + if (xtext->add_io_tag) + { + g_source_remove (xtext->add_io_tag); + xtext->add_io_tag = 0; + } + + if (xtext->scroll_tag) + { + g_source_remove (xtext->scroll_tag); + xtext->scroll_tag = 0; + } + + if (xtext->io_tag) + { + g_source_remove (xtext->io_tag); + xtext->io_tag = 0; + } + + if (xtext->pixmap) + { +#if defined(USE_XLIB) || defined(WIN32) + if (xtext->transparent) + gtk_xtext_free_trans (xtext); + else +#endif + g_object_unref (xtext->pixmap); + xtext->pixmap = NULL; + } + + if (xtext->font) + { + backend_font_close (xtext); + xtext->font = NULL; + } + + if (xtext->adj) + { + g_signal_handlers_disconnect_matched (G_OBJECT (xtext->adj), + G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, xtext); + /* gtk_signal_disconnect_by_data (GTK_OBJECT (xtext->adj), xtext);*/ + g_object_unref (G_OBJECT (xtext->adj)); + xtext->adj = NULL; + } + + if (xtext->bgc) + { + g_object_unref (xtext->bgc); + xtext->bgc = NULL; + } + + if (xtext->fgc) + { + g_object_unref (xtext->fgc); + xtext->fgc = NULL; + } + + if (xtext->light_gc) + { + g_object_unref (xtext->light_gc); + xtext->light_gc = NULL; + } + + if (xtext->dark_gc) + { + g_object_unref (xtext->dark_gc); + xtext->dark_gc = NULL; + } + + if (xtext->thin_gc) + { + g_object_unref (xtext->thin_gc); + xtext->thin_gc = NULL; + } + + if (xtext->marker_gc) + { + g_object_unref (xtext->marker_gc); + xtext->marker_gc = NULL; + } + + if (xtext->hand_cursor) + { + gdk_cursor_unref (xtext->hand_cursor); + xtext->hand_cursor = NULL; + } + + if (xtext->resize_cursor) + { + gdk_cursor_unref (xtext->resize_cursor); + xtext->resize_cursor = NULL; + } + + if (xtext->orig_buffer) + { + gtk_xtext_buffer_free (xtext->orig_buffer); + xtext->orig_buffer = NULL; + } + + if (GTK_OBJECT_CLASS (parent_class)->destroy) + (*GTK_OBJECT_CLASS (parent_class)->destroy) (object); +} + +static void +gtk_xtext_unrealize (GtkWidget * widget) +{ + backend_deinit (GTK_XTEXT (widget)); + + /* if there are still events in the queue, this'll avoid segfault */ + gdk_window_set_user_data (widget->window, NULL); + + if (parent_class->unrealize) + (* GTK_WIDGET_CLASS (parent_class)->unrealize) (widget); +} + +static void +gtk_xtext_realize (GtkWidget * widget) +{ + GtkXText *xtext; + GdkWindowAttr attributes; + GdkGCValues val; + GdkColor col; + GdkColormap *cmap; + + GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED); + xtext = GTK_XTEXT (widget); + + attributes.x = widget->allocation.x; + attributes.y = widget->allocation.y; + attributes.width = widget->allocation.width; + attributes.height = widget->allocation.height; + attributes.wclass = GDK_INPUT_OUTPUT; + attributes.window_type = GDK_WINDOW_CHILD; + attributes.event_mask = gtk_widget_get_events (widget) | + GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK +#ifdef MOTION_MONITOR + | GDK_POINTER_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK; +#else + | GDK_POINTER_MOTION_MASK; +#endif + + cmap = gtk_widget_get_colormap (widget); + attributes.colormap = cmap; + attributes.visual = gtk_widget_get_visual (widget); + + widget->window = gdk_window_new (widget->parent->window, &attributes, + GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | + GDK_WA_COLORMAP); + + gdk_window_set_user_data (widget->window, widget); + + xtext->depth = gdk_drawable_get_visual (widget->window)->depth; + + val.subwindow_mode = GDK_INCLUDE_INFERIORS; + val.graphics_exposures = 0; + + xtext->bgc = gdk_gc_new_with_values (widget->window, &val, + GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW); + xtext->fgc = gdk_gc_new_with_values (widget->window, &val, + GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW); + xtext->light_gc = gdk_gc_new_with_values (widget->window, &val, + GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW); + xtext->dark_gc = gdk_gc_new_with_values (widget->window, &val, + GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW); + xtext->thin_gc = gdk_gc_new_with_values (widget->window, &val, + GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW); + xtext->marker_gc = gdk_gc_new_with_values (widget->window, &val, + GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW); + + /* for the separator bar (light) */ + col.red = 0xffff; col.green = 0xffff; col.blue = 0xffff; + gdk_colormap_alloc_color (cmap, &col, FALSE, TRUE); + gdk_gc_set_foreground (xtext->light_gc, &col); + + /* for the separator bar (dark) */ + col.red = 0x1111; col.green = 0x1111; col.blue = 0x1111; + gdk_colormap_alloc_color (cmap, &col, FALSE, TRUE); + gdk_gc_set_foreground (xtext->dark_gc, &col); + + /* for the separator bar (thinline) */ + col.red = 0x8e38; col.green = 0x8e38; col.blue = 0x9f38; + gdk_colormap_alloc_color (cmap, &col, FALSE, TRUE); + gdk_gc_set_foreground (xtext->thin_gc, &col); + + /* for the marker bar (marker) */ + col.pixel = xtext->palette[XTEXT_MARKER]; + gdk_gc_set_foreground (xtext->marker_gc, &col); + + xtext_set_fg (xtext, xtext->fgc, XTEXT_FG); + xtext_set_bg (xtext, xtext->fgc, XTEXT_BG); + xtext_set_fg (xtext, xtext->bgc, XTEXT_BG); + + /* draw directly to window */ + xtext->draw_buf = widget->window; + +#if defined(USE_XLIB) || defined(WIN32) + if (xtext->transparent) + { + gtk_xtext_load_trans (xtext); + } else +#endif + if (xtext->pixmap) + { + gdk_gc_set_tile (xtext->bgc, xtext->pixmap); + gdk_gc_set_ts_origin (xtext->bgc, 0, 0); + xtext->ts_x = xtext->ts_y = 0; + gdk_gc_set_fill (xtext->bgc, GDK_TILED); + } + +#if (GTK_MAJOR_VERSION == 2) && (GTK_MINOR_VERSION == 0) + xtext->hand_cursor = gdk_cursor_new (GDK_HAND1); + xtext->resize_cursor = gdk_cursor_new (GDK_LEFT_SIDE); +#else + xtext->hand_cursor = gdk_cursor_new_for_display (gdk_drawable_get_display (widget->window), GDK_HAND1); + xtext->resize_cursor = gdk_cursor_new_for_display (gdk_drawable_get_display (widget->window), GDK_LEFT_SIDE); +#endif + + gdk_window_set_back_pixmap (widget->window, NULL, FALSE); + widget->style = gtk_style_attach (widget->style, widget->window); + + backend_init (xtext); +} + +static void +gtk_xtext_size_request (GtkWidget * widget, GtkRequisition * requisition) +{ + requisition->width = 200; + requisition->height = 90; +} + +static void +gtk_xtext_size_allocate (GtkWidget * widget, GtkAllocation * allocation) +{ + GtkXText *xtext = GTK_XTEXT (widget); + int height_only = FALSE; + int do_trans = TRUE; + + if (allocation->width == xtext->buffer->window_width) + height_only = TRUE; + + if (allocation->x == widget->allocation.x && + allocation->y == widget->allocation.y && xtext->avoid_trans) + do_trans = FALSE; + + xtext->avoid_trans = FALSE; + + widget->allocation = *allocation; + if (GTK_WIDGET_REALIZED (widget)) + { + xtext->buffer->window_width = allocation->width; + xtext->buffer->window_height = allocation->height; + + gdk_window_move_resize (widget->window, allocation->x, allocation->y, + allocation->width, allocation->height); + dontscroll (xtext->buffer); /* force scrolling off */ + if (!height_only) + gtk_xtext_calc_lines (xtext->buffer, FALSE); + else + { + xtext->buffer->pagetop_ent = NULL; + gtk_xtext_adjustment_set (xtext->buffer, FALSE); + } +#if defined(USE_XLIB) || defined(WIN32) + if (do_trans && xtext->transparent && xtext->shaded) + { + gtk_xtext_free_trans (xtext); + gtk_xtext_load_trans (xtext); + } +#endif + if (xtext->buffer->scrollbar_down) + gtk_adjustment_set_value (xtext->adj, xtext->adj->upper - + xtext->adj->page_size); + } +} + +static void +gtk_xtext_selection_clear_full (xtext_buffer *buf) +{ + textentry *ent = buf->text_first; + while (ent) + { + ent->mark_start = -1; + ent->mark_end = -1; + ent = ent->next; + } +} + +static int +gtk_xtext_selection_clear (xtext_buffer *buf) +{ + textentry *ent; + int ret = 0; + + ent = buf->last_ent_start; + while (ent) + { + if (ent->mark_start != -1) + ret = 1; + ent->mark_start = -1; + ent->mark_end = -1; + if (ent == buf->last_ent_end) + break; + ent = ent->next; + } + + return ret; +} + +static int +find_x (GtkXText *xtext, textentry *ent, unsigned char *text, int x, int indent) +{ + int xx = indent; + int i = 0; + int rcol = 0, bgcol = 0; + int hidden = FALSE; + unsigned char *orig = text; + int mbl; + int char_width; + + while (*text) + { + mbl = 1; + if (rcol > 0 && (isdigit (*text) || (*text == ',' && isdigit (text[1]) && !bgcol))) + { + if (text[1] != ',') rcol--; + if (*text == ',') + { + rcol = 2; + bgcol = 1; + } + text++; + } else + { + rcol = bgcol = 0; + switch (*text) + { + case ATTR_COLOR: + rcol = 2; + case ATTR_BEEP: + case ATTR_RESET: + case ATTR_REVERSE: + case ATTR_BOLD: + case ATTR_UNDERLINE: + case ATTR_ITALICS: + text++; + break; + case ATTR_HIDDEN: + if (xtext->ignore_hidden) + goto def; + hidden = !hidden; + text++; + break; + default: + def: + char_width = backend_get_char_width (xtext, text, &mbl); + if (!hidden) xx += char_width; + text += mbl; + if (xx >= x) + return i + (orig - ent->str); + } + } + + i += mbl; + if (text - orig >= ent->str_len) + return ent->str_len; + } + + return ent->str_len; +} + +static int +gtk_xtext_find_x (GtkXText * xtext, int x, textentry * ent, int subline, + int line, int *out_of_bounds) +{ + int indent; + unsigned char *str; + + if (subline < 1) + indent = ent->indent; + else + indent = xtext->buffer->indent; + + if (line > xtext->adj->page_size || line < 0) + return 0; + + if (xtext->buffer->grid_dirty || line > 255) + { + str = ent->str + gtk_xtext_find_subline (xtext, ent, subline); + if (str >= ent->str + ent->str_len) + return 0; + } else + { + if (xtext->buffer->grid_offset[line] > ent->str_len) + return 0; + str = ent->str + xtext->buffer->grid_offset[line]; + } + + if (x < indent) + { + *out_of_bounds = 1; + return (str - ent->str); + } + + *out_of_bounds = 0; + + return find_x (xtext, ent, str, x, indent); +} + +static textentry * +gtk_xtext_find_char (GtkXText * xtext, int x, int y, int *off, + int *out_of_bounds) +{ + textentry *ent; + int line; + int subline; + + line = (y + xtext->pixel_offset) / xtext->fontsize; + ent = gtk_xtext_nth (xtext, line + (int)xtext->adj->value, &subline); + if (!ent) + return 0; + + if (off) + *off = gtk_xtext_find_x (xtext, x, ent, subline, line, out_of_bounds); + + return ent; +} + +static void +gtk_xtext_draw_sep (GtkXText * xtext, int y) +{ + int x, height; + GdkGC *light, *dark; + + if (y == -1) + { + y = 0; + height = GTK_WIDGET (xtext)->allocation.height; + } else + { + height = xtext->fontsize; + } + + /* draw the separator line */ + if (xtext->separator && xtext->buffer->indent) + { + light = xtext->light_gc; + dark = xtext->dark_gc; + + x = xtext->buffer->indent - ((xtext->space_width + 1) / 2); + if (x < 1) + return; + + if (xtext->thinline) + { + if (xtext->moving_separator) + gdk_draw_line (xtext->draw_buf, light, x, y, x, y + height); + else + gdk_draw_line (xtext->draw_buf, xtext->thin_gc, x, y, x, y + height); + } else + { + if (xtext->moving_separator) + { + gdk_draw_line (xtext->draw_buf, light, x - 1, y, x - 1, y + height); + gdk_draw_line (xtext->draw_buf, dark, x, y, x, y + height); + } else + { + gdk_draw_line (xtext->draw_buf, dark, x - 1, y, x - 1, y + height); + gdk_draw_line (xtext->draw_buf, light, x, y, x, y + height); + } + } + } +} + +static void +gtk_xtext_draw_marker (GtkXText * xtext, textentry * ent, int y) +{ + int x, width, render_y; + + if (!xtext->marker) return; + + if (xtext->buffer->marker_pos == ent) + { + render_y = y + xtext->font->descent; + } + else if (xtext->buffer->marker_pos == ent->next && ent->next != NULL) + { + render_y = y + xtext->font->descent + xtext->fontsize * ent->lines_taken; + } + else return; + + x = 0; + width = GTK_WIDGET (xtext)->allocation.width; + + gdk_draw_line (xtext->draw_buf, xtext->marker_gc, x, render_y, x + width, render_y); + +#if GTK_CHECK_VERSION(2,4,0) + if (gtk_window_has_toplevel_focus (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (xtext))))) +#else + if (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (xtext)))->has_focus) +#endif + { + xtext->buffer->marker_seen = TRUE; + } +} + +#ifdef USE_SHM +static int +have_shm_pixmaps(Display *dpy) +{ + int major, minor; + static int checked = 0; + static int have = FALSE; + + if (!checked) + { + XShmQueryVersion (dpy, &major, &minor, &have); + checked = 1; + } + + return have; +} +#endif + +static void +gtk_xtext_paint (GtkWidget *widget, GdkRectangle *area) +{ + GtkXText *xtext = GTK_XTEXT (widget); + textentry *ent_start, *ent_end; + int x, y; + +#if defined(USE_XLIB) || defined(WIN32) + if (xtext->transparent) + { + gdk_window_get_origin (widget->window, &x, &y); + /* update transparency only if it moved */ + if (xtext->last_win_x != x || xtext->last_win_y != y) + { + xtext->last_win_x = x; + xtext->last_win_y = y; +#ifndef WIN32 +#ifdef USE_SHM + if (xtext->shaded && !have_shm_pixmaps(GDK_WINDOW_XDISPLAY (xtext->draw_buf))) +#else + if (xtext->shaded) +#endif + { + xtext->recycle = TRUE; + gtk_xtext_load_trans (xtext); + xtext->recycle = FALSE; + } else +#endif + { + gtk_xtext_free_trans (xtext); + gtk_xtext_load_trans (xtext); + } + } + } +#endif + + if (area->x == 0 && area->y == 0 && + area->height == widget->allocation.height && + area->width == widget->allocation.width) + { + dontscroll (xtext->buffer); /* force scrolling off */ + gtk_xtext_render_page (xtext); + return; + } + + ent_start = gtk_xtext_find_char (xtext, area->x, area->y, NULL, NULL); + if (!ent_start) + { + xtext_draw_bg (xtext, area->x, area->y, area->width, area->height); + goto xit; + } + ent_end = gtk_xtext_find_char (xtext, area->x + area->width, + area->y + area->height, NULL, NULL); + if (!ent_end) + ent_end = xtext->buffer->text_last; + + /* can't set a clip here, because fgc/bgc are used to draw the DB too */ +/* backend_set_clip (xtext, area);*/ + xtext->clip_x = area->x; + xtext->clip_x2 = area->x + area->width; + xtext->clip_y = area->y; + xtext->clip_y2 = area->y + area->height; + + /* y is the last pixel y location it rendered text at */ + y = gtk_xtext_render_ents (xtext, ent_start, ent_end); + + if (y && y < widget->allocation.height && !ent_end->next) + { + GdkRectangle rect; + + rect.x = 0; + rect.y = y; + rect.width = widget->allocation.width; + rect.height = widget->allocation.height - y; + + /* fill any space below the last line that also intersects with + the exposure rectangle */ + if (gdk_rectangle_intersect (area, &rect, &rect)) + { + xtext_draw_bg (xtext, rect.x, rect.y, rect.width, rect.height); + } + } + + /*backend_clear_clip (xtext);*/ + xtext->clip_x = 0; + xtext->clip_x2 = 1000000; + xtext->clip_y = 0; + xtext->clip_y2 = 1000000; + +xit: + x = xtext->buffer->indent - ((xtext->space_width + 1) / 2); + if (area->x <= x) + gtk_xtext_draw_sep (xtext, -1); +} + +static gboolean +gtk_xtext_expose (GtkWidget * widget, GdkEventExpose * event) +{ + gtk_xtext_paint (widget, &event->area); + return FALSE; +} + +/* render a selection that has extended or contracted upward */ + +static void +gtk_xtext_selection_up (GtkXText *xtext, textentry *start, textentry *end, + int start_offset) +{ + /* render all the complete lines */ + if (start->next == end) + gtk_xtext_render_ents (xtext, end, NULL); + else + gtk_xtext_render_ents (xtext, start->next, end); + + /* now the incomplete upper line */ + if (start == xtext->buffer->last_ent_start) + xtext->jump_in_offset = xtext->buffer->last_offset_start; + else + xtext->jump_in_offset = start_offset; + gtk_xtext_render_ents (xtext, start, NULL); + xtext->jump_in_offset = 0; +} + +/* render a selection that has extended or contracted downward */ + +static void +gtk_xtext_selection_down (GtkXText *xtext, textentry *start, textentry *end, + int end_offset) +{ + /* render all the complete lines */ + if (end->prev == start) + gtk_xtext_render_ents (xtext, start, NULL); + else + gtk_xtext_render_ents (xtext, start, end->prev); + + /* now the incomplete bottom line */ + if (end == xtext->buffer->last_ent_end) + xtext->jump_out_offset = xtext->buffer->last_offset_end; + else + xtext->jump_out_offset = end_offset; + gtk_xtext_render_ents (xtext, end, NULL); + xtext->jump_out_offset = 0; +} + +static void +gtk_xtext_selection_render (GtkXText *xtext, + textentry *start_ent, int start_offset, + textentry *end_ent, int end_offset) +{ + textentry *ent; + int start, end; + + xtext->skip_border_fills = TRUE; + xtext->skip_stamp = TRUE; + + /* force an optimized render if there was no previous selection */ + if (xtext->buffer->last_ent_start == NULL && start_ent == end_ent) + { + xtext->buffer->last_offset_start = start_offset; + xtext->buffer->last_offset_end = end_offset; + goto lamejump; + } + + /* mark changed within 1 ent only? */ + if (xtext->buffer->last_ent_start == start_ent && + xtext->buffer->last_ent_end == end_ent) + { + /* when only 1 end of the selection is changed, we can really + save on rendering */ + if (xtext->buffer->last_offset_start == start_offset || + xtext->buffer->last_offset_end == end_offset) + { +lamejump: + ent = end_ent; + /* figure out where to start and end the rendering */ + if (end_offset > xtext->buffer->last_offset_end) + { + end = end_offset; + start = xtext->buffer->last_offset_end; + } else if (end_offset < xtext->buffer->last_offset_end) + { + end = xtext->buffer->last_offset_end; + start = end_offset; + } else if (start_offset < xtext->buffer->last_offset_start) + { + end = xtext->buffer->last_offset_start; + start = start_offset; + ent = start_ent; + } else if (start_offset > xtext->buffer->last_offset_start) + { + end = start_offset; + start = xtext->buffer->last_offset_start; + ent = start_ent; + } else + { /* WORD selects end up here */ + end = end_offset; + start = start_offset; + } + } else + { + /* LINE selects end up here */ + /* so which ent actually changed? */ + ent = start_ent; + if (xtext->buffer->last_offset_start == start_offset) + ent = end_ent; + + end = MAX (xtext->buffer->last_offset_end, end_offset); + start = MIN (xtext->buffer->last_offset_start, start_offset); + } + + xtext->jump_out_offset = end; + xtext->jump_in_offset = start; + gtk_xtext_render_ents (xtext, ent, NULL); + xtext->jump_out_offset = 0; + xtext->jump_in_offset = 0; + } + /* marking downward? */ + else if (xtext->buffer->last_ent_start == start_ent && + xtext->buffer->last_offset_start == start_offset) + { + /* find the range that covers both old and new selection */ + ent = start_ent; + while (ent) + { + if (ent == xtext->buffer->last_ent_end) + { + gtk_xtext_selection_down (xtext, ent, end_ent, end_offset); + /*gtk_xtext_render_ents (xtext, ent, end_ent);*/ + break; + } + if (ent == end_ent) + { + gtk_xtext_selection_down (xtext, ent, xtext->buffer->last_ent_end, end_offset); + /*gtk_xtext_render_ents (xtext, ent, xtext->buffer->last_ent_end);*/ + break; + } + ent = ent->next; + } + } + /* marking upward? */ + else if (xtext->buffer->last_ent_end == end_ent && + xtext->buffer->last_offset_end == end_offset) + { + ent = end_ent; + while (ent) + { + if (ent == start_ent) + { + gtk_xtext_selection_up (xtext, xtext->buffer->last_ent_start, ent, start_offset); + /*gtk_xtext_render_ents (xtext, xtext->buffer->last_ent_start, ent);*/ + break; + } + if (ent == xtext->buffer->last_ent_start) + { + gtk_xtext_selection_up (xtext, start_ent, ent, start_offset); + /*gtk_xtext_render_ents (xtext, start_ent, ent);*/ + break; + } + ent = ent->prev; + } + } + else /* cross-over mark (stretched or shrunk at both ends) */ + { + /* unrender the old mark */ + gtk_xtext_render_ents (xtext, xtext->buffer->last_ent_start, xtext->buffer->last_ent_end); + /* now render the new mark, but skip overlaps */ + if (start_ent == xtext->buffer->last_ent_start) + { + /* if the new mark is a sub-set of the old, do nothing */ + if (start_ent != end_ent) + gtk_xtext_render_ents (xtext, start_ent->next, end_ent); + } else if (end_ent == xtext->buffer->last_ent_end) + { + /* if the new mark is a sub-set of the old, do nothing */ + if (start_ent != end_ent) + gtk_xtext_render_ents (xtext, start_ent, end_ent->prev); + } else + gtk_xtext_render_ents (xtext, start_ent, end_ent); + } + + xtext->buffer->last_ent_start = start_ent; + xtext->buffer->last_ent_end = end_ent; + xtext->buffer->last_offset_start = start_offset; + xtext->buffer->last_offset_end = end_offset; + + xtext->skip_border_fills = FALSE; + xtext->skip_stamp = FALSE; +} + +static void +gtk_xtext_selection_draw (GtkXText * xtext, GdkEventMotion * event, gboolean render) +{ + textentry *ent; + textentry *ent_end; + textentry *ent_start; + int offset_start; + int offset_end; + int low_x; + int low_y; + int high_x; + int high_y; + int tmp; + + if (xtext->select_start_y > xtext->select_end_y) + { + low_x = xtext->select_end_x; + low_y = xtext->select_end_y; + high_x = xtext->select_start_x; + high_y = xtext->select_start_y; + } else + { + low_x = xtext->select_start_x; + low_y = xtext->select_start_y; + high_x = xtext->select_end_x; + high_y = xtext->select_end_y; + } + + ent_start = gtk_xtext_find_char (xtext, low_x, low_y, &offset_start, &tmp); + if (!ent_start) + { + if (xtext->adj->value != xtext->buffer->old_value) + gtk_xtext_render_page (xtext); + return; + } + + ent_end = gtk_xtext_find_char (xtext, high_x, high_y, &offset_end, &tmp); + if (!ent_end) + { + ent_end = xtext->buffer->text_last; + if (!ent_end) + { + if (xtext->adj->value != xtext->buffer->old_value) + gtk_xtext_render_page (xtext); + return; + } + offset_end = ent_end->str_len; + } + + /* marking less than a complete line? */ + /* make sure "start" is smaller than "end" (swap them if need be) */ + if (ent_start == ent_end && offset_start > offset_end) + { + tmp = offset_start; + offset_start = offset_end; + offset_end = tmp; + } + + /* has the selection changed? Dont render unless necessary */ + if (xtext->buffer->last_ent_start == ent_start && + xtext->buffer->last_ent_end == ent_end && + xtext->buffer->last_offset_start == offset_start && + xtext->buffer->last_offset_end == offset_end) + return; + + /* set all the old mark_ fields to -1 */ + gtk_xtext_selection_clear (xtext->buffer); + + ent_start->mark_start = offset_start; + ent_start->mark_end = offset_end; + + if (ent_start != ent_end) + { + ent_start->mark_end = ent_start->str_len; + if (offset_end != 0) + { + ent_end->mark_start = 0; + ent_end->mark_end = offset_end; + } + + /* set all the mark_ fields of the ents within the selection */ + ent = ent_start->next; + while (ent && ent != ent_end) + { + ent->mark_start = 0; + ent->mark_end = ent->str_len; + ent = ent->next; + } + } + + if (render) + gtk_xtext_selection_render (xtext, ent_start, offset_start, ent_end, offset_end); +} + +static gint +gtk_xtext_scrolldown_timeout (GtkXText * xtext) +{ + int p_y, win_height; + + gdk_window_get_pointer (GTK_WIDGET (xtext)->window, 0, &p_y, 0); + gdk_drawable_get_size (GTK_WIDGET (xtext)->window, 0, &win_height); + + if (p_y > win_height && + xtext->adj->value < (xtext->adj->upper - xtext->adj->page_size)) + { + xtext->adj->value++; + gtk_adjustment_changed (xtext->adj); + gtk_xtext_render_page (xtext); + return 1; + } + + xtext->scroll_tag = 0; + return 0; +} + +static gint +gtk_xtext_scrollup_timeout (GtkXText * xtext) +{ + int p_y; + + gdk_window_get_pointer (GTK_WIDGET (xtext)->window, 0, &p_y, 0); + + if (p_y < 0 && xtext->adj->value > 0.0) + { + xtext->adj->value--; + gtk_adjustment_changed (xtext->adj); + gtk_xtext_render_page (xtext); + return 1; + } + + xtext->scroll_tag = 0; + return 0; +} + +static void +gtk_xtext_selection_update (GtkXText * xtext, GdkEventMotion * event, int p_y, gboolean render) +{ + int win_height; + int moved; + + gdk_drawable_get_size (GTK_WIDGET (xtext)->window, 0, &win_height); + + /* selecting past top of window, scroll up! */ + if (p_y < 0 && xtext->adj->value >= 0) + { + if (!xtext->scroll_tag) + xtext->scroll_tag = g_timeout_add (100, + (GSourceFunc) + gtk_xtext_scrollup_timeout, + xtext); + return; + } + + /* selecting past bottom of window, scroll down! */ + if (p_y > win_height && + xtext->adj->value < (xtext->adj->upper - xtext->adj->page_size)) + { + if (!xtext->scroll_tag) + xtext->scroll_tag = g_timeout_add (100, + (GSourceFunc) + gtk_xtext_scrolldown_timeout, + xtext); + return; + } + + moved = (int)xtext->adj->value - xtext->select_start_adj; + xtext->select_start_y -= (moved * xtext->fontsize); + xtext->select_start_adj = xtext->adj->value; + gtk_xtext_selection_draw (xtext, event, render); +} + +static char * +gtk_xtext_get_word (GtkXText * xtext, int x, int y, textentry ** ret_ent, + int *ret_off, int *ret_len) +{ + textentry *ent; + int offset; + unsigned char *str; + unsigned char *word; + int len; + int out_of_bounds = 0; + + ent = gtk_xtext_find_char (xtext, x, y, &offset, &out_of_bounds); + if (!ent) + return 0; + + if (out_of_bounds) + return 0; + + if (offset == ent->str_len) + return 0; + + if (offset < 1) + return 0; + + /*offset--;*/ /* FIXME: not all chars are 1 byte */ + + str = ent->str + offset; + + while (!is_del (*str) && str != ent->str) + str--; + word = str + 1; + + len = 0; + str = word; + while (!is_del (*str) && len != ent->str_len) + { + str++; + len++; + } + + if (len > 0 && word[len-1]=='.') + { + len--; + str--; + } + + if (ret_ent) + *ret_ent = ent; + if (ret_off) + *ret_off = word - ent->str; + if (ret_len) + *ret_len = str - word; + + return gtk_xtext_strip_color (word, len, xtext->scratch_buffer, NULL, NULL, FALSE); +} + +#ifdef MOTION_MONITOR + +static void +gtk_xtext_unrender_hilight (GtkXText *xtext) +{ + xtext->render_hilights_only = TRUE; + xtext->skip_border_fills = TRUE; + xtext->skip_stamp = TRUE; + xtext->un_hilight = TRUE; + + gtk_xtext_render_ents (xtext, xtext->hilight_ent, NULL); + + xtext->render_hilights_only = FALSE; + xtext->skip_border_fills = FALSE; + xtext->skip_stamp = FALSE; + xtext->un_hilight = FALSE; +} + +static gboolean +gtk_xtext_leave_notify (GtkWidget * widget, GdkEventCrossing * event) +{ + GtkXText *xtext = GTK_XTEXT (widget); + + if (xtext->cursor_hand) + { + gtk_xtext_unrender_hilight (xtext); + xtext->hilight_start = -1; + xtext->hilight_end = -1; + xtext->cursor_hand = FALSE; + gdk_window_set_cursor (widget->window, 0); + xtext->hilight_ent = NULL; + } + + if (xtext->cursor_resize) + { + gtk_xtext_unrender_hilight (xtext); + xtext->hilight_start = -1; + xtext->hilight_end = -1; + xtext->cursor_resize = FALSE; + gdk_window_set_cursor (widget->window, 0); + xtext->hilight_ent = NULL; + } + + return FALSE; +} + +#endif + +/* check if we should mark time stamps, and if a redraw is needed */ + +static gboolean +gtk_xtext_check_mark_stamp (GtkXText *xtext, GdkModifierType mask) +{ + gboolean redraw = FALSE; + + if ((mask & GDK_SHIFT_MASK)) + { + if (!xtext->mark_stamp) + { + redraw = TRUE; /* must redraw all */ + xtext->mark_stamp = TRUE; + } + } else + { + if (xtext->mark_stamp) + { + redraw = TRUE; /* must redraw all */ + xtext->mark_stamp = FALSE; + } + } + return redraw; +} + +static gboolean +gtk_xtext_motion_notify (GtkWidget * widget, GdkEventMotion * event) +{ + GtkXText *xtext = GTK_XTEXT (widget); + GdkModifierType mask; + int redraw, tmp, x, y, offset, len, line_x; + unsigned char *word; + textentry *word_ent; + + gdk_window_get_pointer (widget->window, &x, &y, &mask); + + if (xtext->moving_separator) + { + if (x < (3 * widget->allocation.width) / 5 && x > 15) + { + tmp = xtext->buffer->indent; + xtext->buffer->indent = x; + gtk_xtext_fix_indent (xtext->buffer); + if (tmp != xtext->buffer->indent) + { + gtk_xtext_recalc_widths (xtext->buffer, FALSE); + if (xtext->buffer->scrollbar_down) + gtk_adjustment_set_value (xtext->adj, xtext->adj->upper - + xtext->adj->page_size); + if (!xtext->io_tag) + xtext->io_tag = g_timeout_add (REFRESH_TIMEOUT, + (GSourceFunc) + gtk_xtext_adjustment_timeout, + xtext); + } + } + return FALSE; + } + + if (xtext->button_down) + { + redraw = gtk_xtext_check_mark_stamp (xtext, mask); + gtk_grab_add (widget); + /*gdk_pointer_grab (widget->window, TRUE, + GDK_BUTTON_RELEASE_MASK | + GDK_BUTTON_MOTION_MASK, NULL, NULL, 0);*/ + xtext->select_end_x = x; + xtext->select_end_y = y; + gtk_xtext_selection_update (xtext, event, y, !redraw); + xtext->hilighting = TRUE; + + /* user has pressed or released SHIFT, must redraw entire selection */ + if (redraw) + { + xtext->force_stamp = TRUE; + gtk_xtext_render_ents (xtext, xtext->buffer->last_ent_start, + xtext->buffer->last_ent_end); + xtext->force_stamp = FALSE; + } + return FALSE; + } +#ifdef MOTION_MONITOR + + if (xtext->separator && xtext->buffer->indent) + { + line_x = xtext->buffer->indent - ((xtext->space_width + 1) / 2); + if (line_x == x || line_x == x + 1 || line_x == x - 1) + { + if (!xtext->cursor_resize) + { + gdk_window_set_cursor (GTK_WIDGET (xtext)->window, + xtext->resize_cursor); + xtext->cursor_resize = TRUE; + } + return FALSE; + } + } + + if (xtext->urlcheck_function == NULL) + return FALSE; + + word = gtk_xtext_get_word (xtext, x, y, &word_ent, &offset, &len); + if (word) + { + if (xtext->urlcheck_function (GTK_WIDGET (xtext), word, len) > 0) + { + if (!xtext->cursor_hand || + xtext->hilight_ent != word_ent || + xtext->hilight_start != offset || + xtext->hilight_end != offset + len) + { + if (!xtext->cursor_hand) + { + gdk_window_set_cursor (GTK_WIDGET (xtext)->window, + xtext->hand_cursor); + xtext->cursor_hand = TRUE; + } + + /* un-render the old hilight */ + if (xtext->hilight_ent) + gtk_xtext_unrender_hilight (xtext); + + xtext->hilight_ent = word_ent; + xtext->hilight_start = offset; + xtext->hilight_end = offset + len; + + xtext->skip_border_fills = TRUE; + xtext->render_hilights_only = TRUE; + xtext->skip_stamp = TRUE; + + gtk_xtext_render_ents (xtext, word_ent, NULL); + + xtext->skip_border_fills = FALSE; + xtext->render_hilights_only = FALSE; + xtext->skip_stamp = FALSE; + } + return FALSE; + } + } + + gtk_xtext_leave_notify (widget, NULL); + +#endif + + return FALSE; +} + +static void +gtk_xtext_set_clip_owner (GtkWidget * xtext, GdkEventButton * event) +{ + char *str; + int len; + + if (GTK_XTEXT (xtext)->selection_buffer && + GTK_XTEXT (xtext)->selection_buffer != GTK_XTEXT (xtext)->buffer) + gtk_xtext_selection_clear (GTK_XTEXT (xtext)->selection_buffer); + + GTK_XTEXT (xtext)->selection_buffer = GTK_XTEXT (xtext)->buffer; + + str = gtk_xtext_selection_get_text (GTK_XTEXT (xtext), &len); + if (str) + { +#if (GTK_MAJOR_VERSION == 2) && (GTK_MINOR_VERSION == 0) + gtk_clipboard_set_text (gtk_clipboard_get (GDK_SELECTION_CLIPBOARD), + str, len); +#else + gtk_clipboard_set_text (gtk_widget_get_clipboard (xtext, GDK_SELECTION_CLIPBOARD), + str, len); +#endif + free (str); + } + + gtk_selection_owner_set (xtext, GDK_SELECTION_PRIMARY, event->time); +} + +static void +gtk_xtext_unselect (GtkXText *xtext) +{ + xtext_buffer *buf = xtext->buffer; + + xtext->skip_border_fills = TRUE; + xtext->skip_stamp = TRUE; + + xtext->jump_in_offset = buf->last_ent_start->mark_start; + /* just a single ent was marked? */ + if (buf->last_ent_start == buf->last_ent_end) + { + xtext->jump_out_offset = buf->last_ent_start->mark_end; + buf->last_ent_end = NULL; + } + + gtk_xtext_selection_clear (xtext->buffer); + + /* FIXME: use jump_out on multi-line selects too! */ + gtk_xtext_render_ents (xtext, buf->last_ent_start, buf->last_ent_end); + + xtext->jump_in_offset = 0; + xtext->jump_out_offset = 0; + + xtext->skip_border_fills = FALSE; + xtext->skip_stamp = FALSE; + + xtext->buffer->last_ent_start = NULL; + xtext->buffer->last_ent_end = NULL; +} + +static gboolean +gtk_xtext_button_release (GtkWidget * widget, GdkEventButton * event) +{ + GtkXText *xtext = GTK_XTEXT (widget); + unsigned char *word; + int old; + + if (xtext->moving_separator) + { + xtext->moving_separator = FALSE; + old = xtext->buffer->indent; + if (event->x < (4 * widget->allocation.width) / 5 && event->x > 15) + xtext->buffer->indent = event->x; + gtk_xtext_fix_indent (xtext->buffer); + if (xtext->buffer->indent != old) + { + gtk_xtext_recalc_widths (xtext->buffer, FALSE); + gtk_xtext_adjustment_set (xtext->buffer, TRUE); + gtk_xtext_render_page (xtext); + } else + gtk_xtext_draw_sep (xtext, -1); + return FALSE; + } + + if (xtext->word_or_line_select) + { + xtext->word_or_line_select = FALSE; + xtext->button_down = FALSE; + return FALSE; + } + + if (event->button == 1) + { + xtext->button_down = FALSE; + + gtk_grab_remove (widget); + /*gdk_pointer_ungrab (0);*/ + + /* got a new selection? */ + if (xtext->buffer->last_ent_start) + { + xtext->color_paste = FALSE; + if (event->state & GDK_CONTROL_MASK) + xtext->color_paste = TRUE; + gtk_xtext_set_clip_owner (GTK_WIDGET (xtext), event); + } + + if (xtext->select_start_x == event->x && + xtext->select_start_y == event->y && + xtext->buffer->last_ent_start) + { + gtk_xtext_unselect (xtext); + xtext->mark_stamp = FALSE; + return FALSE; + } + + if (!xtext->hilighting) + { + word = gtk_xtext_get_word (xtext, event->x, event->y, 0, 0, 0); + g_signal_emit (G_OBJECT (xtext), xtext_signals[WORD_CLICK], 0, word ? word : NULL, event); + } else + { + xtext->hilighting = FALSE; + } + } + + + return FALSE; +} + +static gboolean +gtk_xtext_button_press (GtkWidget * widget, GdkEventButton * event) +{ + GtkXText *xtext = GTK_XTEXT (widget); + GdkModifierType mask; + textentry *ent; + unsigned char *word; + int line_x, x, y, offset, len; + + gdk_window_get_pointer (widget->window, &x, &y, &mask); + + if (event->button == 3 || event->button == 2) /* right/middle click */ + { + word = gtk_xtext_get_word (xtext, x, y, 0, 0, 0); + if (word) + { + g_signal_emit (G_OBJECT (xtext), xtext_signals[WORD_CLICK], 0, + word, event); + } else + g_signal_emit (G_OBJECT (xtext), xtext_signals[WORD_CLICK], 0, + "", event); + return FALSE; + } + + if (event->button != 1) /* we only want left button */ + return FALSE; + + if (event->type == GDK_2BUTTON_PRESS) /* WORD select */ + { + gtk_xtext_check_mark_stamp (xtext, mask); + if (gtk_xtext_get_word (xtext, x, y, &ent, &offset, &len)) + { + if (len == 0) + return FALSE; + gtk_xtext_selection_clear (xtext->buffer); + ent->mark_start = offset; + ent->mark_end = offset + len; + gtk_xtext_selection_render (xtext, ent, offset, ent, offset + len); + xtext->word_or_line_select = TRUE; + gtk_xtext_set_clip_owner (GTK_WIDGET (xtext), event); + } + + return FALSE; + } + + if (event->type == GDK_3BUTTON_PRESS) /* LINE select */ + { + gtk_xtext_check_mark_stamp (xtext, mask); + if (gtk_xtext_get_word (xtext, x, y, &ent, 0, 0)) + { + gtk_xtext_selection_clear (xtext->buffer); + ent->mark_start = 0; + ent->mark_end = ent->str_len; + gtk_xtext_selection_render (xtext, ent, 0, ent, ent->str_len); + xtext->word_or_line_select = TRUE; + gtk_xtext_set_clip_owner (GTK_WIDGET (xtext), event); + } + + return FALSE; + } + + /* check if it was a separator-bar click */ + if (xtext->separator && xtext->buffer->indent) + { + line_x = xtext->buffer->indent - ((xtext->space_width + 1) / 2); + if (line_x == x || line_x == x + 1 || line_x == x - 1) + { + xtext->moving_separator = TRUE; + /* draw the separator line */ + gtk_xtext_draw_sep (xtext, -1); + return FALSE; + } + } + + xtext->button_down = TRUE; + xtext->select_start_x = x; + xtext->select_start_y = y; + xtext->select_start_adj = xtext->adj->value; + + return FALSE; +} + +/* another program has claimed the selection */ + +static gboolean +gtk_xtext_selection_kill (GtkXText *xtext, GdkEventSelection *event) +{ +#ifndef WIN32 + if (xtext->buffer->last_ent_start) + gtk_xtext_unselect (xtext); +#endif + return TRUE; +} + +static char * +gtk_xtext_selection_get_text (GtkXText *xtext, int *len_ret) +{ + textentry *ent; + char *txt; + char *pos; + char *stripped; + int len; + int first = TRUE; + xtext_buffer *buf; + + buf = xtext->selection_buffer; + if (!buf) + return NULL; + + /* first find out how much we need to malloc ... */ + len = 0; + ent = buf->last_ent_start; + while (ent) + { + if (ent->mark_start != -1) + { + /* include timestamp? */ + if (ent->mark_start == 0 && xtext->mark_stamp) + { + char *time_str; + int stamp_size = xtext_get_stamp_str (ent->stamp, &time_str); + g_free (time_str); + len += stamp_size; + } + + if (ent->mark_end - ent->mark_start > 0) + len += (ent->mark_end - ent->mark_start) + 1; + else + len++; + } + if (ent == buf->last_ent_end) + break; + ent = ent->next; + } + + if (len < 1) + return NULL; + + /* now allocate mem and copy buffer */ + pos = txt = malloc (len); + ent = buf->last_ent_start; + while (ent) + { + if (ent->mark_start != -1) + { + if (!first) + { + *pos = '\n'; + pos++; + } + first = FALSE; + if (ent->mark_end - ent->mark_start > 0) + { + /* include timestamp? */ + if (ent->mark_start == 0 && xtext->mark_stamp) + { + char *time_str; + int stamp_size = xtext_get_stamp_str (ent->stamp, &time_str); + memcpy (pos, time_str, stamp_size); + g_free (time_str); + pos += stamp_size; + } + + memcpy (pos, ent->str + ent->mark_start, + ent->mark_end - ent->mark_start); + pos += ent->mark_end - ent->mark_start; + } + } + if (ent == buf->last_ent_end) + break; + ent = ent->next; + } + *pos = 0; + + if (xtext->color_paste) + { + /*stripped = gtk_xtext_conv_color (txt, strlen (txt), &len);*/ + stripped = txt; + len = strlen (txt); + } else + { + stripped = gtk_xtext_strip_color (txt, strlen (txt), NULL, &len, 0, FALSE); + free (txt); + } + + *len_ret = len; + return stripped; +} + +/* another program is asking for our selection */ + +static void +gtk_xtext_selection_get (GtkWidget * widget, + GtkSelectionData * selection_data_ptr, + guint info, guint time) +{ + GtkXText *xtext = GTK_XTEXT (widget); + char *stripped; + guchar *new_text; + int len; + gsize glen; + + stripped = gtk_xtext_selection_get_text (xtext, &len); + if (!stripped) + return; + + switch (info) + { + case TARGET_UTF8_STRING: + /* it's already in utf8 */ + gtk_selection_data_set_text (selection_data_ptr, stripped, len); + break; + case TARGET_TEXT: + case TARGET_COMPOUND_TEXT: + { + GdkAtom encoding; + gint format; + gint new_length; + +#if (GTK_MAJOR_VERSION == 2) && (GTK_MINOR_VERSION == 0) + gdk_string_to_compound_text ( +#else + gdk_string_to_compound_text_for_display ( + gdk_drawable_get_display (widget->window), +#endif + stripped, &encoding, &format, &new_text, + &new_length); + gtk_selection_data_set (selection_data_ptr, encoding, format, + new_text, new_length); + gdk_free_compound_text (new_text); + } + break; + default: + new_text = g_locale_from_utf8 (stripped, len, NULL, &glen, NULL); + gtk_selection_data_set (selection_data_ptr, GDK_SELECTION_TYPE_STRING, + 8, new_text, glen); + g_free (new_text); + } + + free (stripped); +} + +static gboolean +gtk_xtext_scroll (GtkWidget *widget, GdkEventScroll *event) +{ + GtkXText *xtext = GTK_XTEXT (widget); + gfloat new_value; + + if (event->direction == GDK_SCROLL_UP) /* mouse wheel pageUp */ + { + new_value = xtext->adj->value - (xtext->adj->page_increment / 10); + if (new_value < xtext->adj->lower) + new_value = xtext->adj->lower; + gtk_adjustment_set_value (xtext->adj, new_value); + } + else if (event->direction == GDK_SCROLL_DOWN) /* mouse wheel pageDn */ + { + new_value = xtext->adj->value + (xtext->adj->page_increment / 10); + if (new_value > (xtext->adj->upper - xtext->adj->page_size)) + new_value = xtext->adj->upper - xtext->adj->page_size; + gtk_adjustment_set_value (xtext->adj, new_value); + } + + return FALSE; +} + +static void +gtk_xtext_class_init (GtkXTextClass * class) +{ + GtkObjectClass *object_class; + GtkWidgetClass *widget_class; + GtkXTextClass *xtext_class; + + object_class = (GtkObjectClass *) class; + widget_class = (GtkWidgetClass *) class; + xtext_class = (GtkXTextClass *) class; + + parent_class = gtk_type_class (gtk_widget_get_type ()); + + xtext_signals[WORD_CLICK] = + g_signal_new ("word_click", + G_TYPE_FROM_CLASS (object_class), + G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, + G_STRUCT_OFFSET (GtkXTextClass, word_click), + NULL, NULL, + gtk_marshal_VOID__POINTER_POINTER, + G_TYPE_NONE, + 2, G_TYPE_POINTER, G_TYPE_POINTER); + object_class->destroy = gtk_xtext_destroy; + + widget_class->realize = gtk_xtext_realize; + widget_class->unrealize = gtk_xtext_unrealize; + widget_class->size_request = gtk_xtext_size_request; + widget_class->size_allocate = gtk_xtext_size_allocate; + widget_class->button_press_event = gtk_xtext_button_press; + widget_class->button_release_event = gtk_xtext_button_release; + widget_class->motion_notify_event = gtk_xtext_motion_notify; + widget_class->selection_clear_event = (void *)gtk_xtext_selection_kill; + widget_class->selection_get = gtk_xtext_selection_get; + widget_class->expose_event = gtk_xtext_expose; + widget_class->scroll_event = gtk_xtext_scroll; +#ifdef MOTION_MONITOR + widget_class->leave_notify_event = gtk_xtext_leave_notify; +#endif + + xtext_class->word_click = NULL; +} + +GType +gtk_xtext_get_type (void) +{ + static GType xtext_type = 0; + + if (!xtext_type) + { + static const GTypeInfo xtext_info = + { + sizeof (GtkXTextClass), + NULL, /* base_init */ + NULL, /* base_finalize */ + (GClassInitFunc) gtk_xtext_class_init, + NULL, /* class_finalize */ + NULL, /* class_data */ + sizeof (GtkXText), + 0, /* n_preallocs */ + (GInstanceInitFunc) gtk_xtext_init, + }; + + xtext_type = g_type_register_static (GTK_TYPE_WIDGET, "GtkXText", + &xtext_info, 0); + } + + return xtext_type; +} + +/* strip MIRC colors and other attribs. */ + +/* CL: needs to strip hidden when called by gtk_xtext_text_width, but not when copying text */ + +static unsigned char * +gtk_xtext_strip_color (unsigned char *text, int len, unsigned char *outbuf, + int *newlen, int *mb_ret, int strip_hidden) +{ + int i = 0; + int rcol = 0, bgcol = 0; + int hidden = FALSE; + unsigned char *new_str; + int mb = FALSE; + + if (outbuf == NULL) + new_str = malloc (len + 2); + else + new_str = outbuf; + + while (len > 0) + { + if (*text >= 128) + mb = TRUE; + + if (rcol > 0 && (isdigit (*text) || (*text == ',' && isdigit (text[1]) && !bgcol))) + { + if (text[1] != ',') rcol--; + if (*text == ',') + { + rcol = 2; + bgcol = 1; + } + } else + { + rcol = bgcol = 0; + switch (*text) + { + case ATTR_COLOR: + rcol = 2; + break; + case ATTR_BEEP: + case ATTR_RESET: + case ATTR_REVERSE: + case ATTR_BOLD: + case ATTR_UNDERLINE: + case ATTR_ITALICS: + break; + case ATTR_HIDDEN: + hidden = !hidden; + break; + default: + if (!(hidden && strip_hidden)) + new_str[i++] = *text; + } + } + text++; + len--; + } + + new_str[i] = 0; + + if (newlen != NULL) + *newlen = i; + + if (mb_ret != NULL) + *mb_ret = mb; + + return new_str; +} + +/* GeEkMaN: converts mIRC control codes to literal control codes */ + +static char * +gtk_xtext_conv_color (unsigned char *text, int len, int *newlen) +{ + int i, j = 2; + char cchar = 0; + char *new_str; + int mbl; + + for (i = 0; i < len;) + { + switch (text[i]) + { + case ATTR_COLOR: + case ATTR_RESET: + case ATTR_REVERSE: + case ATTR_BOLD: + case ATTR_UNDERLINE: + case ATTR_ITALICS: + case ATTR_HIDDEN: + j += 3; + i++; + break; + default: + mbl = charlen (text + i); + j += mbl; + i += mbl; + } + } + + new_str = malloc (j); + j = 0; + + for (i = 0; i < len;) + { + switch (text[i]) + { + case ATTR_COLOR: + cchar = 'C'; + break; + case ATTR_RESET: + cchar = 'O'; + break; + case ATTR_REVERSE: + cchar = 'R'; + break; + case ATTR_BOLD: + cchar = 'B'; + break; + case ATTR_UNDERLINE: + cchar = 'U'; + break; + case ATTR_ITALICS: + cchar = 'I'; + break; + case ATTR_HIDDEN: + cchar = 'H'; + break; + case ATTR_BEEP: + break; + default: + mbl = charlen (text + i); + if (mbl == 1) + { + new_str[j] = text[i]; + j++; + i++; + } else + { + /* invalid utf8 safe guard */ + if (i + mbl > len) + mbl = len - i; + memcpy (new_str + j, text + i, mbl); + j += mbl; + i += mbl; + } + } + if (cchar != 0) + { + new_str[j++] = '%'; + new_str[j++] = cchar; + cchar = 0; + i++; + } + } + + new_str[j] = 0; + *newlen = j; + + return new_str; +} + +/* gives width of a string, excluding the mIRC codes */ + +static int +gtk_xtext_text_width (GtkXText *xtext, unsigned char *text, int len, + int *mb_ret) +{ + unsigned char *new_buf; + int new_len, mb; + + new_buf = gtk_xtext_strip_color (text, len, xtext->scratch_buffer, + &new_len, &mb, !xtext->ignore_hidden); + + if (mb_ret) + *mb_ret = mb; + + return backend_get_text_width (xtext, new_buf, new_len, mb); +} + +/* actually draw text to screen (one run with the same color/attribs) */ + +static int +gtk_xtext_render_flush (GtkXText * xtext, int x, int y, unsigned char *str, + int len, GdkGC *gc, int is_mb) +{ + int str_width, dofill; + GdkDrawable *pix = NULL; + int dest_x, dest_y; + + if (xtext->dont_render || len < 1 || xtext->hidden) + return 0; + + str_width = backend_get_text_width (xtext, str, len, is_mb); + + if (xtext->dont_render2) + return str_width; + + /* roll-your-own clipping (avoiding XftDrawString is always good!) */ + if (x > xtext->clip_x2 || x + str_width < xtext->clip_x) + return str_width; + if (y - xtext->font->ascent > xtext->clip_y2 || (y - xtext->font->ascent) + xtext->fontsize < xtext->clip_y) + return str_width; + + if (xtext->render_hilights_only) + { + if (!xtext->in_hilight) /* is it a hilight prefix? */ + return str_width; +#ifndef COLOR_HILIGHT + if (!xtext->un_hilight) /* doing a hilight? no need to draw the text */ + goto dounder; +#endif + } + +#ifdef USE_DB +#ifdef WIN32 + if (!xtext->transparent) +#endif + { + pix = gdk_pixmap_new (xtext->draw_buf, str_width, xtext->fontsize, xtext->depth); + if (pix) + { +#ifdef USE_XFT + XftDrawChange (xtext->xftdraw, GDK_WINDOW_XWINDOW (pix)); +#endif + dest_x = x; + dest_y = y - xtext->font->ascent; + + gdk_gc_set_ts_origin (xtext->bgc, xtext->ts_x - x, xtext->ts_y - dest_y); + + x = 0; + y = xtext->font->ascent; + xtext->draw_buf = pix; + } + } +#endif + + dofill = TRUE; + + /* backcolor is always handled by XDrawImageString */ + if (!xtext->backcolor && xtext->pixmap) + { + /* draw the background pixmap behind the text - CAUSES FLICKER HERE!! */ + xtext_draw_bg (xtext, x, y - xtext->font->ascent, str_width, + xtext->fontsize); + dofill = FALSE; /* already drawn the background */ + } + + backend_draw_text (xtext, dofill, gc, x, y, str, len, str_width, is_mb); + +#ifdef USE_DB + if (pix) + { + GdkRectangle clip; + GdkRectangle dest; + + gdk_gc_set_ts_origin (xtext->bgc, xtext->ts_x, xtext->ts_y); + xtext->draw_buf = GTK_WIDGET (xtext)->window; +#ifdef USE_XFT + XftDrawChange (xtext->xftdraw, GDK_WINDOW_XWINDOW (xtext->draw_buf)); +#endif +#if 0 + gdk_draw_drawable (xtext->draw_buf, xtext->bgc, pix, 0, 0, dest_x, + dest_y, str_width, xtext->fontsize); +#else + clip.x = xtext->clip_x; + clip.y = xtext->clip_y; + clip.width = xtext->clip_x2 - xtext->clip_x; + clip.height = xtext->clip_y2 - xtext->clip_y; + + dest.x = dest_x; + dest.y = dest_y; + dest.width = str_width; + dest.height = xtext->fontsize; + + if (gdk_rectangle_intersect (&clip, &dest, &dest)) + /* dump the DB to window, but only within the clip_x/x2/y/y2 */ + gdk_draw_drawable (xtext->draw_buf, xtext->bgc, pix, + dest.x - dest_x, dest.y - dest_y, + dest.x, dest.y, dest.width, dest.height); +#endif + g_object_unref (pix); + } +#endif + + if (xtext->underline) + { +#ifdef USE_XFT + GdkColor col; +#endif + +#ifndef COLOR_HILIGHT +dounder: +#endif + +#ifdef USE_XFT + col.pixel = xtext->xft_fg->pixel; + gdk_gc_set_foreground (gc, &col); +#endif + if (pix) + y = dest_y + xtext->font->ascent + 1; + else + { + y++; + dest_x = x; + } + /* draw directly to window, it's out of the range of our DB */ + gdk_draw_line (xtext->draw_buf, gc, dest_x, y, dest_x + str_width - 1, y); + } + + return str_width; +} + +static void +gtk_xtext_reset (GtkXText * xtext, int mark, int attribs) +{ + if (attribs) + { + xtext->underline = FALSE; + xtext->bold = FALSE; + xtext->italics = FALSE; + xtext->hidden = FALSE; + } + if (!mark) + { + xtext->backcolor = FALSE; + if (xtext->col_fore != XTEXT_FG) + xtext_set_fg (xtext, xtext->fgc, XTEXT_FG); + if (xtext->col_back != XTEXT_BG) + xtext_set_bg (xtext, xtext->fgc, XTEXT_BG); + } + xtext->col_fore = XTEXT_FG; + xtext->col_back = XTEXT_BG; + xtext->parsing_color = FALSE; + xtext->parsing_backcolor = FALSE; + xtext->nc = 0; +} + +/* render a single line, which WONT wrap, and parse mIRC colors */ + +static int +gtk_xtext_render_str (GtkXText * xtext, int y, textentry * ent, + unsigned char *str, int len, int win_width, int indent, + int line, int left_only, int *x_size_ret) +{ + GdkGC *gc; + int i = 0, x = indent, j = 0; + unsigned char *pstr = str; + int col_num, tmp; + int offset; + int mark = FALSE; + int ret = 1; + + xtext->in_hilight = FALSE; + + offset = str - ent->str; + + if (line < 255 && line >= 0) + xtext->buffer->grid_offset[line] = offset; + + gc = xtext->fgc; /* our foreground GC */ + + if (ent->mark_start != -1 && + ent->mark_start <= i + offset && ent->mark_end > i + offset) + { + xtext_set_bg (xtext, gc, XTEXT_MARK_BG); + xtext_set_fg (xtext, gc, XTEXT_MARK_FG); + xtext->backcolor = TRUE; + mark = TRUE; + } +#ifdef MOTION_MONITOR + if (xtext->hilight_ent == ent && + xtext->hilight_start <= i + offset && xtext->hilight_end > i + offset) + { + if (!xtext->un_hilight) + { +#ifdef COLOR_HILIGHT + xtext_set_bg (xtext, gc, 2); +#else + xtext->underline = TRUE; +#endif + } + xtext->in_hilight = TRUE; + } +#endif + + if (!xtext->skip_border_fills && !xtext->dont_render) + { + /* draw background to the left of the text */ + if (str == ent->str && indent > MARGIN && xtext->buffer->time_stamp) + { + /* don't overwrite the timestamp */ + if (indent > xtext->stamp_width) + { + xtext_draw_bg (xtext, xtext->stamp_width, y - xtext->font->ascent, + indent - xtext->stamp_width, xtext->fontsize); + } + } else + { + /* fill the indent area with background gc */ + if (indent >= xtext->clip_x) + { + xtext_draw_bg (xtext, 0, y - xtext->font->ascent, + MIN (indent, xtext->clip_x2), xtext->fontsize); + } + } + } + + if (xtext->jump_in_offset > 0 && offset < xtext->jump_in_offset) + xtext->dont_render2 = TRUE; + + while (i < len) + { + +#ifdef MOTION_MONITOR + if (xtext->hilight_ent == ent && xtext->hilight_start == (i + offset)) + { + x += gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, ent->mb); + pstr += j; + j = 0; + if (!xtext->un_hilight) + { +#ifdef COLOR_HILIGHT + xtext_set_bg (xtext, gc, 2); +#else + xtext->underline = TRUE; +#endif + } + + xtext->in_hilight = TRUE; + } +#endif + + if ((xtext->parsing_color && isdigit (str[i]) && xtext->nc < 2) || + (xtext->parsing_color && str[i] == ',' && isdigit (str[i+1]) && xtext->nc < 3 && !xtext->parsing_backcolor)) + { + pstr++; + if (str[i] == ',') + { + xtext->parsing_backcolor = TRUE; + if (xtext->nc) + { + xtext->num[xtext->nc] = 0; + xtext->nc = 0; + col_num = atoi (xtext->num); + if (col_num == 99) /* mIRC lameness */ + col_num = XTEXT_FG; + else + col_num = col_num % XTEXT_MIRC_COLS; + xtext->col_fore = col_num; + if (!mark) + xtext_set_fg (xtext, gc, col_num); + } + } else + { + xtext->num[xtext->nc] = str[i]; + if (xtext->nc < 7) + xtext->nc++; + } + } else + { + if (xtext->parsing_color) + { + xtext->parsing_color = FALSE; + if (xtext->nc) + { + xtext->num[xtext->nc] = 0; + xtext->nc = 0; + col_num = atoi (xtext->num); + if (xtext->parsing_backcolor) + { + if (col_num == 99) /* mIRC lameness */ + col_num = XTEXT_BG; + else + col_num = col_num % XTEXT_MIRC_COLS; + if (col_num == XTEXT_BG) + xtext->backcolor = FALSE; + else + xtext->backcolor = TRUE; + if (!mark) + xtext_set_bg (xtext, gc, col_num); + xtext->col_back = col_num; + } else + { + if (col_num == 99) /* mIRC lameness */ + col_num = XTEXT_FG; + else + col_num = col_num % XTEXT_MIRC_COLS; + if (!mark) + xtext_set_fg (xtext, gc, col_num); + xtext->col_fore = col_num; + } + xtext->parsing_backcolor = FALSE; + } else + { + /* got a \003<non-digit>... i.e. reset colors */ + x += gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, ent->mb); + pstr += j; + j = 0; + gtk_xtext_reset (xtext, mark, FALSE); + } + } + + switch (str[i]) + { + case '\n': + /*case ATTR_BEEP:*/ + break; + case ATTR_REVERSE: + x += gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, ent->mb); + pstr += j + 1; + j = 0; + tmp = xtext->col_fore; + xtext->col_fore = xtext->col_back; + xtext->col_back = tmp; + if (!mark) + { + xtext_set_fg (xtext, gc, xtext->col_fore); + xtext_set_bg (xtext, gc, xtext->col_back); + } + if (xtext->col_back != XTEXT_BG) + xtext->backcolor = TRUE; + else + xtext->backcolor = FALSE; + break; + case ATTR_BOLD: + x += gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, ent->mb); + xtext->bold = !xtext->bold; + pstr += j + 1; + j = 0; + break; + case ATTR_UNDERLINE: + x += gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, ent->mb); + xtext->underline = !xtext->underline; + pstr += j + 1; + j = 0; + break; + case ATTR_ITALICS: + x += gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, ent->mb); + xtext->italics = !xtext->italics; + pstr += j + 1; + j = 0; + break; + case ATTR_HIDDEN: + x += gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, ent->mb); + xtext->hidden = (!xtext->hidden) & (!xtext->ignore_hidden); + pstr += j + 1; + j = 0; + break; + case ATTR_RESET: + x += gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, ent->mb); + pstr += j + 1; + j = 0; + gtk_xtext_reset (xtext, mark, !xtext->in_hilight); + break; + case ATTR_COLOR: + x += gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, ent->mb); + xtext->parsing_color = TRUE; + pstr += j + 1; + j = 0; + break; + default: + tmp = charlen (str + i); + /* invalid utf8 safe guard */ + if (tmp + i > len) + tmp = len - i; + j += tmp; /* move to the next utf8 char */ + } + } + i += charlen (str + i); /* move to the next utf8 char */ + /* invalid utf8 safe guard */ + if (i > len) + i = len; + + /* Separate the left part, the space and the right part + into separate runs, and reset bidi state inbetween. + Perform this only on the first line of the message. + */ + if (offset == 0) + { + /* we've reached the end of the left part? */ + if ((pstr-str)+j == ent->left_len) + { + x += gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, ent->mb); + pstr += j; + j = 0; + } + else if ((pstr-str)+j == ent->left_len+1) + { + x += gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, ent->mb); + pstr += j; + j = 0; + } + } + + /* have we been told to stop rendering at this point? */ + if (xtext->jump_out_offset > 0 && xtext->jump_out_offset <= (i + offset)) + { + gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, ent->mb); + ret = 0; /* skip the rest of the lines, we're done. */ + j = 0; + break; + } + + if (xtext->jump_in_offset > 0 && xtext->jump_in_offset == (i + offset)) + { + x += gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, ent->mb); + pstr += j; + j = 0; + xtext->dont_render2 = FALSE; + } + +#ifdef MOTION_MONITOR + if (xtext->hilight_ent == ent && xtext->hilight_end == (i + offset)) + { + x += gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, ent->mb); + pstr += j; + j = 0; +#ifdef COLOR_HILIGHT + if (mark) + { + xtext_set_bg (xtext, gc, XTEXT_MARK_BG); + xtext->backcolor = TRUE; + } else + { + xtext_set_bg (xtext, gc, xtext->col_back); + if (xtext->col_back != XTEXT_BG) + xtext->backcolor = TRUE; + else + xtext->backcolor = FALSE; + } +#else + xtext->underline = FALSE; +#endif + xtext->in_hilight = FALSE; + if (xtext->render_hilights_only) + { + /* stop drawing this ent */ + ret = 0; + break; + } + } +#endif + + if (!mark && ent->mark_start == (i + offset)) + { + x += gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, ent->mb); + pstr += j; + j = 0; + xtext_set_bg (xtext, gc, XTEXT_MARK_BG); + xtext_set_fg (xtext, gc, XTEXT_MARK_FG); + xtext->backcolor = TRUE; + mark = TRUE; + } + + if (mark && ent->mark_end == (i + offset)) + { + x += gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, ent->mb); + pstr += j; + j = 0; + xtext_set_bg (xtext, gc, xtext->col_back); + xtext_set_fg (xtext, gc, xtext->col_fore); + if (xtext->col_back != XTEXT_BG) + xtext->backcolor = TRUE; + else + xtext->backcolor = FALSE; + mark = FALSE; + } + + } + + if (j) + x += gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, ent->mb); + + if (mark) + { + xtext_set_bg (xtext, gc, xtext->col_back); + xtext_set_fg (xtext, gc, xtext->col_fore); + if (xtext->col_back != XTEXT_BG) + xtext->backcolor = TRUE; + else + xtext->backcolor = FALSE; + } + + /* draw background to the right of the text */ + if (!left_only && !xtext->dont_render) + { + /* draw separator now so it doesn't appear to flicker */ + gtk_xtext_draw_sep (xtext, y - xtext->font->ascent); + if (!xtext->skip_border_fills && xtext->clip_x2 >= x) + { + int xx = MAX (x, xtext->clip_x); + + xtext_draw_bg (xtext, + xx, /* x */ + y - xtext->font->ascent, /* y */ + MIN (xtext->clip_x2 - xx, (win_width + MARGIN) - xx), /* width */ + xtext->fontsize); /* height */ + } + } + + xtext->dont_render2 = FALSE; + + /* return how much we drew in the x direction */ + if (x_size_ret) + *x_size_ret = x - indent; + + return ret; +} + +#ifdef USE_XLIB + +/* get the desktop/root window */ + +static Window desktop_window = None; + +static Window +get_desktop_window (Display *xdisplay, Window the_window) +{ + Atom prop, type; + int format; + unsigned long length, after; + unsigned char *data; + unsigned int nchildren; + Window w, root, *children, parent; + + prop = XInternAtom (xdisplay, "_XROOTPMAP_ID", True); + if (prop == None) + { + prop = XInternAtom (xdisplay, "_XROOTCOLOR_PIXEL", True); + if (prop == None) + return None; + } + + for (w = the_window; w; w = parent) + { + if ((XQueryTree (xdisplay, w, &root, &parent, &children, + &nchildren)) == False) + return None; + + if (nchildren) + XFree (children); + + XGetWindowProperty (xdisplay, w, prop, 0L, 1L, False, + AnyPropertyType, &type, &format, &length, &after, + &data); + if (data) + XFree (data); + + if (type != None) + return (desktop_window = w); + } + + return (desktop_window = None); +} + +/* find the root window (backdrop) Pixmap */ + +static Pixmap +get_pixmap_prop (Display *xdisplay, Window the_window) +{ + Atom type; + int format; + unsigned long length, after; + unsigned char *data; + Pixmap pix = None; + static Atom prop = None; + + if (desktop_window == None) + desktop_window = get_desktop_window (xdisplay, the_window); + if (desktop_window == None) + desktop_window = DefaultRootWindow (xdisplay); + + if (prop == None) + prop = XInternAtom (xdisplay, "_XROOTPMAP_ID", True); + if (prop == None) + return None; + + XGetWindowProperty (xdisplay, desktop_window, prop, 0L, 1L, False, + AnyPropertyType, &type, &format, &length, &after, + &data); + if (data) + { + if (type == XA_PIXMAP) + pix = *((Pixmap *) data); + + XFree (data); + } + + return pix; +} + +/* slow generic routine, for the depths/bpp we don't know about */ + +static void +shade_ximage_generic (GdkVisual *visual, XImage *ximg, int bpl, int w, int h, int rm, int gm, int bm, int bg) +{ + int x, y; + int bgr = (256 - rm) * (bg & visual->red_mask); + int bgg = (256 - gm) * (bg & visual->green_mask); + int bgb = (256 - bm) * (bg & visual->blue_mask); + + for (x = 0; x < w; x++) + { + for (y = 0; y < h; y++) + { + unsigned long pixel = XGetPixel (ximg, x, y); + int r, g, b; + + r = rm * (pixel & visual->red_mask) + bgr; + g = gm * (pixel & visual->green_mask) + bgg; + b = bm * (pixel & visual->blue_mask) + bgb; + + XPutPixel (ximg, x, y, + ((r >> 8) & visual->red_mask) | + ((g >> 8) & visual->green_mask) | + ((b >> 8) & visual->blue_mask)); + } + } +} + +#endif + +/* Fast shading routine. Based on code by Willem Monsuwe <willem@stack.nl> */ + +#define SHADE_IMAGE(bytes, type, rmask, gmask, bmask) \ + unsigned char *ptr; \ + int x, y; \ + int bgr = (256 - rm) * (bg & rmask); \ + int bgg = (256 - gm) * (bg & gmask); \ + int bgb = (256 - bm) * (bg & bmask); \ + ptr = (unsigned char *) data + (w * bytes); \ + for (y = h; --y >= 0;) \ + { \ + for (x = -w; x < 0; x++) \ + { \ + int r, g, b; \ + b = ((type *) ptr)[x]; \ + r = rm * (b & rmask) + bgr; \ + g = gm * (b & gmask) + bgg; \ + b = bm * (b & bmask) + bgb; \ + ((type *) ptr)[x] = ((r >> 8) & rmask) \ + | ((g >> 8) & gmask) \ + | ((b >> 8) & bmask); \ + } \ + ptr += bpl; \ + } + +/* RGB 15 */ +static void +shade_ximage_15 (void *data, int bpl, int w, int h, int rm, int gm, int bm, int bg) +{ + SHADE_IMAGE (2, guint16, 0x7c00, 0x3e0, 0x1f); +} + +/* RGB 16 */ +static void +shade_ximage_16 (void *data, int bpl, int w, int h, int rm, int gm, int bm, int bg) +{ + SHADE_IMAGE (2, guint16, 0xf800, 0x7e0, 0x1f); +} + +/* RGB 24 */ +static void +shade_ximage_24 (void *data, int bpl, int w, int h, int rm, int gm, int bm, int bg) +{ + /* 24 has to be a special case, there's no guint24, or 24bit MOV :) */ + unsigned char *ptr; + int x, y; + int bgr = (256 - rm) * ((bg & 0xff0000) >> 16); + int bgg = (256 - gm) * ((bg & 0xff00) >> 8); + int bgb = (256 - bm) * (bg & 0xff); + + ptr = (unsigned char *) data + (w * 3); + for (y = h; --y >= 0;) + { + for (x = -(w * 3); x < 0; x += 3) + { + int r, g, b; + +#if (G_BYTE_ORDER == G_BIG_ENDIAN) + r = (ptr[x + 0] * rm + bgr) >> 8; + g = (ptr[x + 1] * gm + bgg) >> 8; + b = (ptr[x + 2] * bm + bgb) >> 8; + ptr[x + 0] = r; + ptr[x + 1] = g; + ptr[x + 2] = b; +#else + r = (ptr[x + 2] * rm + bgr) >> 8; + g = (ptr[x + 1] * gm + bgg) >> 8; + b = (ptr[x + 0] * bm + bgb) >> 8; + ptr[x + 2] = r; + ptr[x + 1] = g; + ptr[x + 0] = b; +#endif + } + ptr += bpl; + } +} + +/* RGB 32 */ +static void +shade_ximage_32 (void *data, int bpl, int w, int h, int rm, int gm, int bm, int bg) +{ + SHADE_IMAGE (4, guint32, 0xff0000, 0xff00, 0xff); +} + +static void +shade_image (GdkVisual *visual, void *data, int bpl, int bpp, int w, int h, + int rm, int gm, int bm, int bg, int depth) +{ + int bg_r, bg_g, bg_b; + + bg_r = bg & visual->red_mask; + bg_g = bg & visual->green_mask; + bg_b = bg & visual->blue_mask; + +#ifdef USE_MMX + /* the MMX routines are about 50% faster at 16-bit. */ + /* only use MMX routines with a pure black background */ + if (bg_r == 0 && bg_g == 0 && bg_b == 0 && have_mmx ()) /* do a runtime check too! */ + { + switch (depth) + { + case 15: + shade_ximage_15_mmx (data, bpl, w, h, rm, gm, bm); + break; + case 16: + shade_ximage_16_mmx (data, bpl, w, h, rm, gm, bm); + break; + case 24: + if (bpp != 32) + goto generic; + case 32: + shade_ximage_32_mmx (data, bpl, w, h, rm, gm, bm); + break; + default: + goto generic; + } + } else + { +generic: +#endif + switch (depth) + { + case 15: + shade_ximage_15 (data, bpl, w, h, rm, gm, bm, bg); + break; + case 16: + shade_ximage_16 (data, bpl, w, h, rm, gm, bm, bg); + break; + case 24: + if (bpp != 32) + { + shade_ximage_24 (data, bpl, w, h, rm, gm, bm, bg); + break; + } + case 32: + shade_ximage_32 (data, bpl, w, h, rm, gm, bm, bg); + } +#ifdef USE_MMX + } +#endif +} + +#ifdef USE_XLIB + +#ifdef USE_SHM + +static XImage * +get_shm_image (Display *xdisplay, XShmSegmentInfo *shminfo, int x, int y, + int w, int h, int depth, Pixmap pix) +{ + XImage *ximg; + + shminfo->shmid = -1; + shminfo->shmaddr = (char*) -1; + ximg = XShmCreateImage (xdisplay, 0, depth, ZPixmap, 0, shminfo, w, h); + if (!ximg) + return NULL; + + shminfo->shmid = shmget (IPC_PRIVATE, ximg->bytes_per_line * ximg->height, + IPC_CREAT|0600); + if (shminfo->shmid == -1) + { + XDestroyImage (ximg); + return NULL; + } + + shminfo->readOnly = False; + ximg->data = shminfo->shmaddr = (char *)shmat (shminfo->shmid, 0, 0); + if (shminfo->shmaddr == ((char *)-1)) + { + shmctl (shminfo->shmid, IPC_RMID, 0); + XDestroyImage (ximg); + return NULL; + } + + XShmAttach (xdisplay, shminfo); + XSync (xdisplay, False); + shmctl (shminfo->shmid, IPC_RMID, 0); + XShmGetImage (xdisplay, pix, ximg, x, y, AllPlanes); + + return ximg; +} + +static XImage * +get_image (GtkXText *xtext, Display *xdisplay, XShmSegmentInfo *shminfo, + int x, int y, int w, int h, int depth, Pixmap pix) +{ + XImage *ximg; + + xtext->shm = 1; + ximg = get_shm_image (xdisplay, shminfo, x, y, w, h, depth, pix); + if (!ximg) + { + xtext->shm = 0; + ximg = XGetImage (xdisplay, pix, x, y, w, h, -1, ZPixmap); + } + + return ximg; +} + +#endif + +static GdkPixmap * +shade_pixmap (GtkXText * xtext, Pixmap p, int x, int y, int w, int h) +{ + unsigned int dummy, width, height, depth; + GdkPixmap *shaded_pix; + Window root; + Pixmap tmp; + XImage *ximg; + XGCValues gcv; + GC tgc; + Display *xdisplay = GDK_WINDOW_XDISPLAY (xtext->draw_buf); + +#ifdef USE_SHM + int shm_pixmaps; + shm_pixmaps = have_shm_pixmaps(xdisplay); +#endif + + XGetGeometry (xdisplay, p, &root, &dummy, &dummy, &width, &height, + &dummy, &depth); + + if (width < x + w || height < y + h || x < 0 || y < 0) + { + gcv.subwindow_mode = IncludeInferiors; + gcv.graphics_exposures = False; + tgc = XCreateGC (xdisplay, p, GCGraphicsExposures|GCSubwindowMode, + &gcv); + tmp = XCreatePixmap (xdisplay, p, w, h, depth); + XSetTile (xdisplay, tgc, p); + XSetFillStyle (xdisplay, tgc, FillTiled); + XSetTSOrigin (xdisplay, tgc, -x, -y); + XFillRectangle (xdisplay, tmp, tgc, 0, 0, w, h); + XFreeGC (xdisplay, tgc); + +#ifdef USE_SHM + if (shm_pixmaps) + ximg = get_image (xtext, xdisplay, &xtext->shminfo, 0, 0, w, h, depth, tmp); + else +#endif + ximg = XGetImage (xdisplay, tmp, 0, 0, w, h, -1, ZPixmap); + XFreePixmap (xdisplay, tmp); + } else + { +#ifdef USE_SHM + if (shm_pixmaps) + ximg = get_image (xtext, xdisplay, &xtext->shminfo, x, y, w, h, depth, p); + else +#endif + ximg = XGetImage (xdisplay, p, x, y, w, h, -1, ZPixmap); + } + + if (!ximg) + return NULL; + + if (depth <= 14) + { + shade_ximage_generic (gdk_drawable_get_visual (GTK_WIDGET (xtext)->window), + ximg, ximg->bytes_per_line, w, h, xtext->tint_red, + xtext->tint_green, xtext->tint_blue, + xtext->palette[XTEXT_BG]); + } else + { + shade_image (gdk_drawable_get_visual (GTK_WIDGET (xtext)->window), + ximg->data, ximg->bytes_per_line, ximg->bits_per_pixel, + w, h, xtext->tint_red, xtext->tint_green, xtext->tint_blue, + xtext->palette[XTEXT_BG], depth); + } + + if (xtext->recycle) + shaded_pix = xtext->pixmap; + else + { +#ifdef USE_SHM + if (xtext->shm && shm_pixmaps) + { +#if (GTK_MAJOR_VERSION == 2) && (GTK_MINOR_VERSION == 0) + shaded_pix = gdk_pixmap_foreign_new ( + XShmCreatePixmap (xdisplay, p, ximg->data, &xtext->shminfo, w, h, depth)); +#else + shaded_pix = gdk_pixmap_foreign_new_for_display ( + gdk_drawable_get_display (xtext->draw_buf), + XShmCreatePixmap (xdisplay, p, ximg->data, &xtext->shminfo, w, h, depth)); +#endif + } else +#endif + { + shaded_pix = gdk_pixmap_new (GTK_WIDGET (xtext)->window, w, h, depth); + } + } + +#ifdef USE_SHM + if (!xtext->shm || !shm_pixmaps) +#endif + XPutImage (xdisplay, GDK_WINDOW_XWINDOW (shaded_pix), + GDK_GC_XGC (xtext->fgc), ximg, 0, 0, 0, 0, w, h); + XDestroyImage (ximg); + + return shaded_pix; +} + +#endif /* !USE_XLIB */ + +/* free transparency xtext->pixmap */ +#if defined(USE_XLIB) || defined(WIN32) + +static void +gtk_xtext_free_trans (GtkXText * xtext) +{ + if (xtext->pixmap) + { +#ifdef USE_SHM + if (xtext->shm && have_shm_pixmaps(GDK_WINDOW_XDISPLAY (xtext->draw_buf))) + { + XFreePixmap (GDK_WINDOW_XDISPLAY (xtext->pixmap), + GDK_WINDOW_XWINDOW (xtext->pixmap)); + XShmDetach (GDK_WINDOW_XDISPLAY (xtext->draw_buf), &xtext->shminfo); + shmdt (xtext->shminfo.shmaddr); + } +#endif + g_object_unref (xtext->pixmap); + xtext->pixmap = NULL; + xtext->shm = 0; + } +} + +#endif + +#ifdef WIN32 + +static GdkPixmap * +win32_tint (GtkXText *xtext, GdkImage *img, int width, int height) +{ + guchar *pixelp; + int x, y; + GdkPixmap *pix; + GdkVisual *visual = gdk_drawable_get_visual (GTK_WIDGET (xtext)->window); + guint32 pixel; + int r, g, b; + + if (img->depth <= 14) + { + /* slow generic routine */ + for (y = 0; y < height; y++) + { + for (x = 0; x < width; x++) + { + if (img->depth == 1) + { + pixel = (((guchar *) img->mem)[y * img->bpl + (x >> 3)] & (1 << (7 - (x & 0x7)))) != 0; + goto here; + } + + if (img->depth == 4) + { + pixelp = (guchar *) img->mem + y * img->bpl + (x >> 1); + if (x&1) + { + pixel = (*pixelp) & 0x0F; + goto here; + } + + pixel = (*pixelp) >> 4; + goto here; + } + + pixelp = (guchar *) img->mem + y * img->bpl + x * img->bpp; + + switch (img->bpp) + { + case 1: + pixel = *pixelp; break; + + /* Windows is always LSB, no need to check img->byte_order. */ + case 2: + pixel = pixelp[0] | (pixelp[1] << 8); break; + + case 3: + pixel = pixelp[0] | (pixelp[1] << 8) | (pixelp[2] << 16); break; + + case 4: + pixel = pixelp[0] | (pixelp[1] << 8) | (pixelp[2] << 16); break; + } + +here: + r = (pixel & visual->red_mask) >> visual->red_shift; + g = (pixel & visual->green_mask) >> visual->green_shift; + b = (pixel & visual->blue_mask) >> visual->blue_shift; + + /* actual tinting is only these 3 lines */ + pixel = ((r * xtext->tint_red) >> 8) << visual->red_shift | + ((g * xtext->tint_green) >> 8) << visual->green_shift | + ((b * xtext->tint_blue) >> 8) << visual->blue_shift; + + if (img->depth == 1) + if (pixel & 1) + ((guchar *) img->mem)[y * img->bpl + (x >> 3)] |= (1 << (7 - (x & 0x7))); + else + ((guchar *) img->mem)[y * img->bpl + (x >> 3)] &= ~(1 << (7 - (x & 0x7))); + else if (img->depth == 4) + { + pixelp = (guchar *) img->mem + y * img->bpl + (x >> 1); + + if (x&1) + { + *pixelp &= 0xF0; + *pixelp |= (pixel & 0x0F); + } else + { + *pixelp &= 0x0F; + *pixelp |= (pixel << 4); + } + } else + { + pixelp = (guchar *) img->mem + y * img->bpl + x * img->bpp; + + /* Windows is always LSB, no need to check img->byte_order. */ + switch (img->bpp) + { + case 4: + pixelp[3] = 0; + case 3: + pixelp[2] = ((pixel >> 16) & 0xFF); + case 2: + pixelp[1] = ((pixel >> 8) & 0xFF); + case 1: + pixelp[0] = (pixel & 0xFF); + } + } + } + } + } else + { + shade_image (visual, img->mem, img->bpl, img->bpp, width, height, + xtext->tint_red, xtext->tint_green, xtext->tint_blue, + xtext->palette[XTEXT_BG], visual->depth); + } + + /* no need to dump it to a Pixmap, it's one and the same on win32 */ + pix = (GdkPixmap *)img; + + return pix; +} + +#endif /* !WIN32 */ + +/* grab pixmap from root window and set xtext->pixmap */ +#if defined(USE_XLIB) || defined(WIN32) + +static void +gtk_xtext_load_trans (GtkXText * xtext) +{ +#ifdef WIN32 + GdkImage *img; + int width, height; + HDC hdc; + HWND hwnd; + + /* if not shaded, we paint directly with PaintDesktop() */ + if (!xtext->shaded) + return; + + hwnd = GDK_WINDOW_HWND (GTK_WIDGET (xtext)->window); + hdc = GetDC (hwnd); + PaintDesktop (hdc); + ReleaseDC (hwnd, hdc); + + gdk_window_get_size (GTK_WIDGET (xtext)->window, &width, &height); + img = gdk_image_get (GTK_WIDGET (xtext)->window, 0, 0, width+128, height); + xtext->pixmap = win32_tint (xtext, img, img->width, img->height); + +#else + + Pixmap rootpix; + GtkWidget *widget = GTK_WIDGET (xtext); + int x, y; + + rootpix = get_pixmap_prop (GDK_WINDOW_XDISPLAY (widget->window), GDK_WINDOW_XWINDOW (widget->window)); + if (rootpix == None) + { + if (xtext->error_function) + xtext->error_function (0); + xtext->transparent = FALSE; + return; + } + + gdk_window_get_origin (widget->window, &x, &y); + + if (xtext->shaded) + { + int width, height; + gdk_drawable_get_size (GTK_WIDGET (xtext)->window, &width, &height); + xtext->pixmap = shade_pixmap (xtext, rootpix, x, y, width+105, height); + if (xtext->pixmap == NULL) + { + xtext->shaded = 0; + goto noshade; + } + gdk_gc_set_tile (xtext->bgc, xtext->pixmap); + gdk_gc_set_ts_origin (xtext->bgc, 0, 0); + xtext->ts_x = xtext->ts_y = 0; + } else + { +noshade: +#if (GTK_MAJOR_VERSION == 2) && (GTK_MINOR_VERSION == 0) + xtext->pixmap = gdk_pixmap_foreign_new (rootpix); +#else + xtext->pixmap = gdk_pixmap_foreign_new_for_display (gdk_drawable_get_display (GTK_WIDGET (xtext)->window), rootpix); +#endif + gdk_gc_set_tile (xtext->bgc, xtext->pixmap); + gdk_gc_set_ts_origin (xtext->bgc, -x, -y); + xtext->ts_x = -x; + xtext->ts_y = -y; + } + gdk_gc_set_fill (xtext->bgc, GDK_TILED); +#endif /* !WIN32 */ +} + +#endif /* ! XLIB || WIN32 */ + +/* walk through str until this line doesn't fit anymore */ + +static int +find_next_wrap (GtkXText * xtext, textentry * ent, unsigned char *str, + int win_width, int indent) +{ + unsigned char *last_space = str; + unsigned char *orig_str = str; + int str_width = indent; + int rcol = 0, bgcol = 0; + int hidden = FALSE; + int mbl; + int char_width; + int ret; + int limit_offset = 0; + + /* single liners */ + if (win_width >= ent->str_width + ent->indent) + return ent->str_len; + + /* it does happen! */ + if (win_width < 1) + { + ret = ent->str_len - (str - ent->str); + goto done; + } + + while (1) + { + if (rcol > 0 && (isdigit (*str) || (*str == ',' && isdigit (str[1]) && !bgcol))) + { + if (str[1] != ',') rcol--; + if (*str == ',') + { + rcol = 2; + bgcol = 1; + } + limit_offset++; + str++; + } else + { + rcol = bgcol = 0; + switch (*str) + { + case ATTR_COLOR: + rcol = 2; + case ATTR_BEEP: + case ATTR_RESET: + case ATTR_REVERSE: + case ATTR_BOLD: + case ATTR_UNDERLINE: + case ATTR_ITALICS: + limit_offset++; + str++; + break; + case ATTR_HIDDEN: + if (xtext->ignore_hidden) + goto def; + hidden = !hidden; + limit_offset++; + str++; + break; + default: + def: + char_width = backend_get_char_width (xtext, str, &mbl); + if (!hidden) str_width += char_width; + if (str_width > win_width) + { + if (xtext->wordwrap) + { + if (str - last_space > WORDWRAP_LIMIT + limit_offset) + ret = str - orig_str; /* fall back to character wrap */ + else + { + if (*last_space == ' ') + last_space++; + ret = last_space - orig_str; + if (ret == 0) /* fall back to character wrap */ + ret = str - orig_str; + } + goto done; + } + ret = str - orig_str; + goto done; + } + + /* keep a record of the last space, for wordwrapping */ + if (is_del (*str)) + { + last_space = str; + limit_offset = 0; + } + + /* progress to the next char */ + str += mbl; + + } + } + + if (str >= ent->str + ent->str_len) + { + ret = str - orig_str; + goto done; + } + } + +done: + + /* must make progress */ + if (ret < 1) + ret = 1; + + return ret; +} + +/* find the offset, in bytes, that wrap number 'line' starts at */ + +static int +gtk_xtext_find_subline (GtkXText *xtext, textentry *ent, int line) +{ + int win_width; + unsigned char *str; + int indent, str_pos, line_pos, len; + + if (ent->lines_taken < 2 || line < 1) + return 0; + + /* we record the first 4 lines' wraps, so take a shortcut */ + if (line <= RECORD_WRAPS) + return ent->wrap_offset[line - 1]; + + gdk_drawable_get_size (GTK_WIDGET (xtext)->window, &win_width, 0); + win_width -= MARGIN; + +/* indent = ent->indent; + str = ent->str; + line_pos = str_pos = 0;*/ + + /* start from the last recorded wrap, and move forward */ + indent = xtext->buffer->indent; + str_pos = ent->wrap_offset[RECORD_WRAPS-1]; + str = str_pos + ent->str; + line_pos = RECORD_WRAPS; + + do + { + len = find_next_wrap (xtext, ent, str, win_width, indent); + indent = xtext->buffer->indent; + str += len; + str_pos += len; + line_pos++; + if (line_pos >= line) + return str_pos; + } + while (str < ent->str + ent->str_len); + + return 0; +} + +/* horrible hack for drawing time stamps */ + +static void +gtk_xtext_render_stamp (GtkXText * xtext, textentry * ent, + char *text, int len, int line, int win_width) +{ + textentry tmp_ent; + int jo, ji, hs; + int xsize, y; + + /* trashing ent here, so make a backup first */ + memcpy (&tmp_ent, ent, sizeof (tmp_ent)); + ent->mb = TRUE; /* make non-english days of the week work */ + jo = xtext->jump_out_offset; /* back these up */ + ji = xtext->jump_in_offset; + hs = xtext->hilight_start; + xtext->jump_out_offset = 0; + xtext->jump_in_offset = 0; + xtext->hilight_start = 0xffff; /* temp disable */ + + if (xtext->mark_stamp) + { + /* if this line is marked, mark this stamp too */ + if (ent->mark_start == 0) + { + ent->mark_start = 0; + ent->mark_end = len; + } + else + { + ent->mark_start = -1; + ent->mark_end = -1; + } + ent->str = text; + } + + y = (xtext->fontsize * line) + xtext->font->ascent - xtext->pixel_offset; + gtk_xtext_render_str (xtext, y, ent, text, len, + win_width, 2, line, TRUE, &xsize); + + /* restore everything back to how it was */ + memcpy (ent, &tmp_ent, sizeof (tmp_ent)); + xtext->jump_out_offset = jo; + xtext->jump_in_offset = ji; + xtext->hilight_start = hs; + + /* with a non-fixed-width font, sometimes we don't draw enough + background i.e. when this stamp is shorter than xtext->stamp_width */ + xsize += MARGIN; + if (xsize < xtext->stamp_width) + { + y -= xtext->font->ascent; + xtext_draw_bg (xtext, + xsize, /* x */ + y, /* y */ + xtext->stamp_width - xsize, /* width */ + xtext->fontsize /* height */); + } +} + +/* render a single line, which may wrap to more lines */ + +static int +gtk_xtext_render_line (GtkXText * xtext, textentry * ent, int line, + int lines_max, int subline, int win_width) +{ + unsigned char *str; + int indent, taken, entline, len, y, start_subline; + + entline = taken = 0; + str = ent->str; + indent = ent->indent; + start_subline = subline; + +#ifdef XCHAT + /* draw the timestamp */ + if (xtext->auto_indent && xtext->buffer->time_stamp && + (!xtext->skip_stamp || xtext->mark_stamp || xtext->force_stamp)) + { + char *time_str; + int len; + + len = xtext_get_stamp_str (ent->stamp, &time_str); + gtk_xtext_render_stamp (xtext, ent, time_str, len, line, win_width); + g_free (time_str); + } +#endif + + /* draw each line one by one */ + do + { + /* if it's one of the first 4 wraps, we don't need to calculate it, it's + recorded in ->wrap_offset. This saves us a loop. */ + if (entline < RECORD_WRAPS) + { + if (ent->lines_taken < 2) + len = ent->str_len; + else + { + if (entline > 0) + len = ent->wrap_offset[entline] - ent->wrap_offset[entline-1]; + else + len = ent->wrap_offset[0]; + } + } else + len = find_next_wrap (xtext, ent, str, win_width, indent); + + entline++; + + y = (xtext->fontsize * line) + xtext->font->ascent - xtext->pixel_offset; + if (!subline) + { + if (!gtk_xtext_render_str (xtext, y, ent, str, len, win_width, + indent, line, FALSE, NULL)) + { + /* small optimization */ + gtk_xtext_draw_marker (xtext, ent, y - xtext->fontsize * (taken + start_subline + 1)); + return ent->lines_taken - subline; + } + } else + { + xtext->dont_render = TRUE; + gtk_xtext_render_str (xtext, y, ent, str, len, win_width, + indent, line, FALSE, NULL); + xtext->dont_render = FALSE; + subline--; + line--; + taken--; + } + + indent = xtext->buffer->indent; + line++; + taken++; + str += len; + + if (line >= lines_max) + break; + + } + while (str < ent->str + ent->str_len); + + gtk_xtext_draw_marker (xtext, ent, y - xtext->fontsize * (taken + start_subline)); + + return taken; +} + +void +gtk_xtext_set_palette (GtkXText * xtext, GdkColor palette[]) +{ + int i; + GdkColor col; + + for (i = (XTEXT_COLS-1); i >= 0; i--) + { +#ifdef USE_XFT + xtext->color[i].color.red = palette[i].red; + xtext->color[i].color.green = palette[i].green; + xtext->color[i].color.blue = palette[i].blue; + xtext->color[i].color.alpha = 0xffff; + xtext->color[i].pixel = palette[i].pixel; +#endif + xtext->palette[i] = palette[i].pixel; + } + + if (GTK_WIDGET_REALIZED (xtext)) + { + xtext_set_fg (xtext, xtext->fgc, XTEXT_FG); + xtext_set_bg (xtext, xtext->fgc, XTEXT_BG); + xtext_set_fg (xtext, xtext->bgc, XTEXT_BG); + + col.pixel = xtext->palette[XTEXT_MARKER]; + gdk_gc_set_foreground (xtext->marker_gc, &col); + } + xtext->col_fore = XTEXT_FG; + xtext->col_back = XTEXT_BG; +} + +static void +gtk_xtext_fix_indent (xtext_buffer *buf) +{ + int j; + + /* make indent a multiple of the space width */ + if (buf->indent && buf->xtext->space_width) + { + j = 0; + while (j < buf->indent) + { + j += buf->xtext->space_width; + } + buf->indent = j; + } + + dontscroll (buf); /* force scrolling off */ +} + +static void +gtk_xtext_recalc_widths (xtext_buffer *buf, int do_str_width) +{ + textentry *ent; + + /* since we have a new font, we have to recalc the text widths */ + ent = buf->text_first; + while (ent) + { + if (do_str_width) + { + ent->str_width = gtk_xtext_text_width (buf->xtext, ent->str, + ent->str_len, NULL); + } + if (ent->left_len != -1) + { + ent->indent = + (buf->indent - + gtk_xtext_text_width (buf->xtext, ent->str, + ent->left_len, NULL)) - buf->xtext->space_width; + if (ent->indent < MARGIN) + ent->indent = MARGIN; + } + ent = ent->next; + } + + gtk_xtext_calc_lines (buf, FALSE); +} + +int +gtk_xtext_set_font (GtkXText *xtext, char *name) +{ + int i; + unsigned char c; + + if (xtext->font) + backend_font_close (xtext); + + /* realize now, so that font_open has a XDisplay */ + gtk_widget_realize (GTK_WIDGET (xtext)); + + backend_font_open (xtext, name); + if (xtext->font == NULL) + return FALSE; + + /* measure the width of every char; only the ASCII ones for XFT */ + for (i = 0; i < sizeof(xtext->fontwidth)/sizeof(xtext->fontwidth[0]); i++) + { + c = i; + xtext->fontwidth[i] = backend_get_text_width (xtext, &c, 1, TRUE); + } + xtext->space_width = xtext->fontwidth[' ']; + xtext->fontsize = xtext->font->ascent + xtext->font->descent; + +#ifdef XCHAT + { + char *time_str; + int stamp_size = xtext_get_stamp_str (time(0), &time_str); + xtext->stamp_width = + gtk_xtext_text_width (xtext, time_str, stamp_size, NULL) + MARGIN; + g_free (time_str); + } +#endif + + gtk_xtext_fix_indent (xtext->buffer); + + if (GTK_WIDGET_REALIZED (xtext)) + gtk_xtext_recalc_widths (xtext->buffer, TRUE); + + return TRUE; +} + +void +gtk_xtext_set_background (GtkXText * xtext, GdkPixmap * pixmap, gboolean trans) +{ + GdkGCValues val; + gboolean shaded = FALSE; + + if (trans && (xtext->tint_red != 255 || xtext->tint_green != 255 || xtext->tint_blue != 255)) + shaded = TRUE; + +#if !defined(USE_XLIB) && !defined(WIN32) + shaded = FALSE; + trans = FALSE; +#endif + + if (xtext->pixmap) + { +#if defined(USE_XLIB) || defined(WIN32) + if (xtext->transparent) + gtk_xtext_free_trans (xtext); + else +#endif + g_object_unref (xtext->pixmap); + xtext->pixmap = NULL; + } + + xtext->transparent = trans; + +#if defined(USE_XLIB) || defined(WIN32) + if (trans) + { + xtext->shaded = shaded; + if (GTK_WIDGET_REALIZED (xtext)) + gtk_xtext_load_trans (xtext); + return; + } +#endif + + dontscroll (xtext->buffer); + xtext->pixmap = pixmap; + + if (pixmap != 0) + { + g_object_ref (pixmap); + if (GTK_WIDGET_REALIZED (xtext)) + { + gdk_gc_set_tile (xtext->bgc, pixmap); + gdk_gc_set_ts_origin (xtext->bgc, 0, 0); + xtext->ts_x = xtext->ts_y = 0; + gdk_gc_set_fill (xtext->bgc, GDK_TILED); + } + } else if (GTK_WIDGET_REALIZED (xtext)) + { + g_object_unref (xtext->bgc); + val.subwindow_mode = GDK_INCLUDE_INFERIORS; + val.graphics_exposures = 0; + xtext->bgc = gdk_gc_new_with_values (GTK_WIDGET (xtext)->window, + &val, GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW); + xtext_set_fg (xtext, xtext->bgc, XTEXT_BG); + } +} + +void +gtk_xtext_save (GtkXText * xtext, int fh) +{ + textentry *ent; + int newlen; + char *buf; + + ent = xtext->buffer->text_first; + while (ent) + { + buf = gtk_xtext_strip_color (ent->str, ent->str_len, NULL, + &newlen, NULL, FALSE); + write (fh, buf, newlen); + write (fh, "\n", 1); + free (buf); + ent = ent->next; + } +} + +/* count how many lines 'ent' will take (with wraps) */ + +static int +gtk_xtext_lines_taken (xtext_buffer *buf, textentry * ent) +{ + unsigned char *str; + int indent, taken, len; + int win_width; + + win_width = buf->window_width - MARGIN; + + if (ent->str_width + ent->indent < win_width) + return 1; + + indent = ent->indent; + str = ent->str; + taken = 0; + + do + { + len = find_next_wrap (buf->xtext, ent, str, win_width, indent); + if (taken < RECORD_WRAPS) + ent->wrap_offset[taken] = (str + len) - ent->str; + indent = buf->indent; + taken++; + str += len; + } + while (str < ent->str + ent->str_len); + + return taken; +} + +/* Calculate number of actual lines (with wraps), to set adj->lower. * + * This should only be called when the window resizes. */ + +static void +gtk_xtext_calc_lines (xtext_buffer *buf, int fire_signal) +{ + textentry *ent; + int width; + int height; + int lines; + + gdk_drawable_get_size (GTK_WIDGET (buf->xtext)->window, &width, &height); + width -= MARGIN; + + if (width < 30 || height < buf->xtext->fontsize || width < buf->indent + 30) + return; + + lines = 0; + ent = buf->text_first; + while (ent) + { + ent->lines_taken = gtk_xtext_lines_taken (buf, ent); + lines += ent->lines_taken; + ent = ent->next; + } + + buf->pagetop_ent = NULL; + buf->num_lines = lines; + gtk_xtext_adjustment_set (buf, fire_signal); +} + +/* find the n-th line in the linked list, this includes wrap calculations */ + +static textentry * +gtk_xtext_nth (GtkXText *xtext, int line, int *subline) +{ + int lines = 0; + textentry *ent; + + ent = xtext->buffer->text_first; + + /* -- optimization -- try to make a short-cut using the pagetop ent */ + if (xtext->buffer->pagetop_ent) + { + if (line == xtext->buffer->pagetop_line) + { + *subline = xtext->buffer->pagetop_subline; + return xtext->buffer->pagetop_ent; + } + if (line > xtext->buffer->pagetop_line) + { + /* lets start from the pagetop instead of the absolute beginning */ + ent = xtext->buffer->pagetop_ent; + lines = xtext->buffer->pagetop_line - xtext->buffer->pagetop_subline; + } + else if (line > xtext->buffer->pagetop_line - line) + { + /* move backwards from pagetop */ + ent = xtext->buffer->pagetop_ent; + lines = xtext->buffer->pagetop_line - xtext->buffer->pagetop_subline; + while (1) + { + if (lines <= line) + { + *subline = line - lines; + return ent; + } + ent = ent->prev; + if (!ent) + break; + lines -= ent->lines_taken; + } + return 0; + } + } + /* -- end of optimization -- */ + + while (ent) + { + lines += ent->lines_taken; + if (lines > line) + { + *subline = ent->lines_taken - (lines - line); + return ent; + } + ent = ent->next; + } + return 0; +} + +/* render enta (or an inclusive range enta->entb) */ + +static int +gtk_xtext_render_ents (GtkXText * xtext, textentry * enta, textentry * entb) +{ + textentry *ent, *orig_ent, *tmp_ent; + int line; + int lines_max; + int width; + int height; + int subline; + int drawing = FALSE; + + if (xtext->buffer->indent < MARGIN) + xtext->buffer->indent = MARGIN; /* 2 pixels is our left margin */ + + gdk_drawable_get_size (GTK_WIDGET (xtext)->window, &width, &height); + width -= MARGIN; + + if (width < 32 || height < xtext->fontsize || width < xtext->buffer->indent + 30) + return 0; + + lines_max = ((height + xtext->pixel_offset) / xtext->fontsize) + 1; + line = 0; + orig_ent = xtext->buffer->pagetop_ent; + subline = xtext->buffer->pagetop_subline; + + /* used before a complete page is in buffer */ + if (orig_ent == NULL) + orig_ent = xtext->buffer->text_first; + + /* check if enta is before the start of this page */ + if (entb) + { + tmp_ent = orig_ent; + while (tmp_ent) + { + if (tmp_ent == enta) + break; + if (tmp_ent == entb) + { + drawing = TRUE; + break; + } + tmp_ent = tmp_ent->next; + } + } + + ent = orig_ent; + while (ent) + { + if (entb && ent == enta) + drawing = TRUE; + + if (drawing || ent == entb || ent == enta) + { + gtk_xtext_reset (xtext, FALSE, TRUE); + line += gtk_xtext_render_line (xtext, ent, line, lines_max, + subline, width); + subline = 0; + xtext->jump_in_offset = 0; /* jump_in_offset only for the 1st */ + } else + { + if (ent == orig_ent) + { + line -= subline; + subline = 0; + } + line += ent->lines_taken; + } + + if (ent == entb) + break; + + if (line >= lines_max) + break; + + ent = ent->next; + } + + /* space below last line */ + return (xtext->fontsize * line) - xtext->pixel_offset; +} + +/* render a whole page/window, starting from 'startline' */ + +static void +gtk_xtext_render_page (GtkXText * xtext) +{ + textentry *ent; + int line; + int lines_max; + int width; + int height; + int subline; + int startline = xtext->adj->value; + + if(!GTK_WIDGET_REALIZED(xtext)) + return; + + if (xtext->buffer->indent < MARGIN) + xtext->buffer->indent = MARGIN; /* 2 pixels is our left margin */ + + gdk_drawable_get_size (GTK_WIDGET (xtext)->window, &width, &height); + + if (width < 34 || height < xtext->fontsize || width < xtext->buffer->indent + 32) + return; + +#ifdef SMOOTH_SCROLL + xtext->pixel_offset = (xtext->adj->value - startline) * xtext->fontsize; +#else + xtext->pixel_offset = 0; +#endif + + subline = line = 0; + ent = xtext->buffer->text_first; + + if (startline > 0) + ent = gtk_xtext_nth (xtext, startline, &subline); + + xtext->buffer->pagetop_ent = ent; + xtext->buffer->pagetop_subline = subline; + xtext->buffer->pagetop_line = startline; + +#ifdef SCROLL_HACK +{ + int pos, overlap; + GdkRectangle area; + + if (xtext->buffer->num_lines <= xtext->adj->page_size) + dontscroll (xtext->buffer); + +#ifdef SMOOTH_SCROLL + pos = xtext->adj->value * xtext->fontsize; +#else + pos = startline * xtext->fontsize; +#endif + overlap = xtext->buffer->last_pixel_pos - pos; + xtext->buffer->last_pixel_pos = pos; + +#ifdef USE_DB +#ifdef WIN32 + if (!xtext->transparent && !xtext->pixmap && abs (overlap) < height) +#else + if (!xtext->pixmap && abs (overlap) < height) +#endif +#else + /* dont scroll PageUp/Down without a DB, it looks ugly */ +#ifdef WIN32 + if (!xtext->transparent && !xtext->pixmap && abs (overlap) < height - (3*xtext->fontsize)) +#else + if (!xtext->pixmap && abs (overlap) < height - (3*xtext->fontsize)) +#endif +#endif + { + /* so the obscured regions are exposed */ + gdk_gc_set_exposures (xtext->fgc, TRUE); + if (overlap < 1) /* DOWN */ + { + int remainder; + + gdk_draw_drawable (xtext->draw_buf, xtext->fgc, xtext->draw_buf, + 0, -overlap, 0, 0, width, height + overlap); + remainder = ((height - xtext->font->descent) % xtext->fontsize) + + xtext->font->descent; + area.y = (height + overlap) - remainder; + area.height = remainder - overlap; + } else + { + gdk_draw_drawable (xtext->draw_buf, xtext->fgc, xtext->draw_buf, + 0, 0, 0, overlap, width, height - overlap); + area.y = 0; + area.height = overlap; + } + gdk_gc_set_exposures (xtext->fgc, FALSE); + + if (area.height > 0) + { + area.x = 0; + area.width = width; + gtk_xtext_paint (GTK_WIDGET (xtext), &area); + } + xtext->buffer->grid_dirty = TRUE; + + return; + } +} +#endif + + xtext->buffer->grid_dirty = FALSE; + width -= MARGIN; + lines_max = ((height + xtext->pixel_offset) / xtext->fontsize) + 1; + + while (ent) + { + gtk_xtext_reset (xtext, FALSE, TRUE); + line += gtk_xtext_render_line (xtext, ent, line, lines_max, + subline, width); + subline = 0; + + if (line >= lines_max) + break; + + ent = ent->next; + } + + line = (xtext->fontsize * line) - xtext->pixel_offset; + /* fill any space below the last line with our background GC */ + xtext_draw_bg (xtext, 0, line, width + MARGIN, height - line); + + /* draw the separator line */ + gtk_xtext_draw_sep (xtext, -1); +} + +void +gtk_xtext_refresh (GtkXText * xtext, int do_trans) +{ + if (GTK_WIDGET_REALIZED (GTK_WIDGET (xtext))) + { +#if defined(USE_XLIB) || defined(WIN32) + if (xtext->transparent && do_trans) + { + gtk_xtext_free_trans (xtext); + gtk_xtext_load_trans (xtext); + } +#endif + gtk_xtext_render_page (xtext); + } +} + +static void +gtk_xtext_kill_ent (xtext_buffer *buffer, textentry *ent) +{ + if (ent == buffer->pagetop_ent) + buffer->pagetop_ent = NULL; + + if (ent == buffer->last_ent_start) + { + buffer->last_ent_start = ent->next; + buffer->last_offset_start = 0; + } + + if (ent == buffer->last_ent_end) + { + buffer->last_ent_start = NULL; + buffer->last_ent_end = NULL; + } + + if (buffer->marker_pos == ent) buffer->marker_pos = NULL; + + free (ent); +} + +/* remove the topline from the list */ + +static void +gtk_xtext_remove_top (xtext_buffer *buffer) +{ + textentry *ent; + + ent = buffer->text_first; + if (!ent) + return; + buffer->num_lines -= ent->lines_taken; + buffer->pagetop_line -= ent->lines_taken; + buffer->last_pixel_pos -= (ent->lines_taken * buffer->xtext->fontsize); + buffer->text_first = ent->next; + if (buffer->text_first) + buffer->text_first->prev = NULL; + else + buffer->text_last = NULL; + + buffer->old_value -= ent->lines_taken; + if (buffer->xtext->buffer == buffer) /* is it the current buffer? */ + { + buffer->xtext->adj->value -= ent->lines_taken; + buffer->xtext->select_start_adj -= ent->lines_taken; + } + + gtk_xtext_kill_ent (buffer, ent); +} + +static void +gtk_xtext_remove_bottom (xtext_buffer *buffer) +{ + textentry *ent; + + ent = buffer->text_last; + if (!ent) + return; + buffer->num_lines -= ent->lines_taken; + buffer->text_last = ent->prev; + if (buffer->text_last) + buffer->text_last->next = NULL; + else + buffer->text_first = NULL; + + gtk_xtext_kill_ent (buffer, ent); +} + +/* If lines=0 => clear all */ + +void +gtk_xtext_clear (xtext_buffer *buf, int lines) +{ + textentry *next; + + if (lines != 0) + { + if (lines < 0) + { + /* delete lines from bottom */ + lines *= -1; + while (lines) + { + gtk_xtext_remove_bottom (buf); + lines--; + } + } + else + { + /* delete lines from top */ + while (lines) + { + gtk_xtext_remove_top (buf); + lines--; + } + } + } + else + { + /* delete all */ + if (buf->xtext->auto_indent) + buf->indent = MARGIN; + buf->scrollbar_down = TRUE; + buf->last_ent_start = NULL; + buf->last_ent_end = NULL; + buf->marker_pos = NULL; + dontscroll (buf); + + while (buf->text_first) + { + next = buf->text_first->next; + free (buf->text_first); + buf->text_first = next; + } + buf->text_last = NULL; + } + + if (buf->xtext->buffer == buf) + { + gtk_xtext_calc_lines (buf, TRUE); + gtk_xtext_refresh (buf->xtext, 0); + } else + { + gtk_xtext_calc_lines (buf, FALSE); + } +} + +static gboolean +gtk_xtext_check_ent_visibility (GtkXText * xtext, textentry *find_ent, int add) +{ + textentry *ent; + int lines_max; + int line = 0; + int width; + int height; + + gdk_drawable_get_size (GTK_WIDGET (xtext)->window, &width, &height); + + lines_max = ((height + xtext->pixel_offset) / xtext->fontsize) + add; + ent = xtext->buffer->pagetop_ent; + + while (ent && line < lines_max) + { + if (find_ent == ent) + return TRUE; + line += ent->lines_taken; + ent = ent->next; + } + + return FALSE; +} + +void +gtk_xtext_check_marker_visibility (GtkXText * xtext) +{ + if (gtk_xtext_check_ent_visibility (xtext, xtext->buffer->marker_pos, 1)) + xtext->buffer->marker_seen = TRUE; +} + +textentry * +gtk_xtext_search (GtkXText * xtext, const gchar *text, textentry *start, gboolean case_match, gboolean backward) +{ + textentry *ent, *fent; + int line; + gchar *str, *nee, *hay; /* needle in haystack */ + + gtk_xtext_selection_clear_full (xtext->buffer); + xtext->buffer->last_ent_start = NULL; + xtext->buffer->last_ent_end = NULL; + + /* set up text comparand for Case Match or Ignore */ + if (case_match) + nee = g_strdup (text); + else + nee = g_utf8_casefold (text, strlen (text)); + + /* Validate that start gives a currently valid ent pointer */ + ent = xtext->buffer->text_first; + while (ent) + { + if (ent == start) + break; + ent = ent->next; + } + if (!ent) + start = NULL; + + /* Choose first ent to look at */ + if (start) + ent = backward? start->prev: start->next; + else + ent = backward? xtext->buffer->text_last: xtext->buffer->text_first; + + /* Search from there to one end or the other until found */ + while (ent) + { + /* If Case Ignore, fold before & free after calling strstr */ + if (case_match) + hay = g_strdup (ent->str); + else + hay = g_utf8_casefold (ent->str, strlen (ent->str)); + /* Try to find the needle in this haystack */ + str = g_strstr_len (hay, strlen (hay), nee); + g_free (hay); + if (str) + break; + ent = backward? ent->prev: ent->next; + } + fent = ent; + + /* Save distance to start, end of found string */ + if (ent) + { + ent->mark_start = str - hay; + ent->mark_end = ent->mark_start + strlen (nee); + + /* is the match visible? Might need to scroll */ + if (!gtk_xtext_check_ent_visibility (xtext, ent, 0)) + { + ent = xtext->buffer->text_first; + line = 0; + while (ent) + { + line += ent->lines_taken; + ent = ent->next; + if (ent == fent) + break; + } + while (line > xtext->adj->upper - xtext->adj->page_size) + line--; + if (backward) + line -= xtext->adj->page_size - ent->lines_taken; + xtext->adj->value = line; + xtext->buffer->scrollbar_down = FALSE; + gtk_adjustment_changed (xtext->adj); + } + } + + g_free (nee); + gtk_widget_queue_draw (GTK_WIDGET (xtext)); + + return fent; +} + +static int +gtk_xtext_render_page_timeout (GtkXText * xtext) +{ + GtkAdjustment *adj = xtext->adj; + + xtext->add_io_tag = 0; + + /* less than a complete page? */ + if (xtext->buffer->num_lines <= adj->page_size) + { + xtext->buffer->old_value = 0; + adj->value = 0; + gtk_xtext_render_page (xtext); + } else if (xtext->buffer->scrollbar_down) + { + g_signal_handler_block (xtext->adj, xtext->vc_signal_tag); + gtk_xtext_adjustment_set (xtext->buffer, FALSE); + gtk_adjustment_set_value (adj, adj->upper - adj->page_size); + g_signal_handler_unblock (xtext->adj, xtext->vc_signal_tag); + xtext->buffer->old_value = adj->value; + gtk_xtext_render_page (xtext); + } else + { + gtk_xtext_adjustment_set (xtext->buffer, TRUE); + if (xtext->indent_changed) + { + xtext->indent_changed = FALSE; + gtk_xtext_render_page (xtext); + } + } + + return 0; +} + +/* append a textentry to our linked list */ + +static void +gtk_xtext_append_entry (xtext_buffer *buf, textentry * ent, time_t stamp) +{ + unsigned int mb; + int i; + + /* we don't like tabs */ + i = 0; + while (i < ent->str_len) + { + if (ent->str[i] == '\t') + ent->str[i] = ' '; + i++; + } + + ent->stamp = stamp; + if (stamp == 0) + ent->stamp = time (0); + ent->str_width = gtk_xtext_text_width (buf->xtext, ent->str, ent->str_len, &mb); + ent->mb = FALSE; + if (mb) + ent->mb = TRUE; + ent->mark_start = -1; + ent->mark_end = -1; + ent->next = NULL; + + if (ent->indent < MARGIN) + ent->indent = MARGIN; /* 2 pixels is the left margin */ + + /* append to our linked list */ + if (buf->text_last) + buf->text_last->next = ent; + else + buf->text_first = ent; + ent->prev = buf->text_last; + buf->text_last = ent; + + ent->lines_taken = gtk_xtext_lines_taken (buf, ent); + buf->num_lines += ent->lines_taken; + + if (buf->reset_marker_pos || + ((buf->marker_pos == NULL || buf->marker_seen) && (buf->xtext->buffer != buf || +#if GTK_CHECK_VERSION(2,4,0) + !gtk_window_has_toplevel_focus (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (buf->xtext))))))) +#else + !(GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (buf->xtext))))->has_focus))) +#endif + { + buf->marker_pos = ent; + dontscroll (buf); /* force scrolling off */ + buf->marker_seen = FALSE; + buf->reset_marker_pos = FALSE; + } + + if (buf->xtext->max_lines > 2 && buf->xtext->max_lines < buf->num_lines) + { + gtk_xtext_remove_top (buf); + } + + if (buf->xtext->buffer == buf) + { +#ifdef SCROLL_HACK + /* this could be improved */ + if ((buf->num_lines - 1) <= buf->xtext->adj->page_size) + dontscroll (buf); +#endif + + if (!buf->xtext->add_io_tag) + { + /* remove scrolling events */ + if (buf->xtext->io_tag) + { + g_source_remove (buf->xtext->io_tag); + buf->xtext->io_tag = 0; + } + buf->xtext->add_io_tag = g_timeout_add (REFRESH_TIMEOUT * 2, + (GSourceFunc) + gtk_xtext_render_page_timeout, + buf->xtext); + } + } else if (buf->scrollbar_down) + { + buf->old_value = buf->num_lines - buf->xtext->adj->page_size; + if (buf->old_value < 0) + buf->old_value = 0; + } +} + +/* the main two public functions */ + +void +gtk_xtext_append_indent (xtext_buffer *buf, + unsigned char *left_text, int left_len, + unsigned char *right_text, int right_len, + time_t stamp) +{ + textentry *ent; + unsigned char *str; + int space; + int tempindent; + int left_width; + + if (left_len == -1) + left_len = strlen (left_text); + + if (right_len == -1) + right_len = strlen (right_text); + + if (right_len >= sizeof (buf->xtext->scratch_buffer)) + right_len = sizeof (buf->xtext->scratch_buffer) - 1; + + if (right_text[right_len-1] == '\n') + right_len--; + + ent = malloc (left_len + right_len + 2 + sizeof (textentry)); + str = (unsigned char *) ent + sizeof (textentry); + + memcpy (str, left_text, left_len); + str[left_len] = ' '; + memcpy (str + left_len + 1, right_text, right_len); + str[left_len + 1 + right_len] = 0; + + left_width = gtk_xtext_text_width (buf->xtext, left_text, left_len, NULL); + + ent->left_len = left_len; + ent->str = str; + ent->str_len = left_len + 1 + right_len; + ent->indent = (buf->indent - left_width) - buf->xtext->space_width; + + if (buf->time_stamp) + space = buf->xtext->stamp_width; + else + space = 0; + + /* do we need to auto adjust the separator position? */ + if (buf->xtext->auto_indent && ent->indent < MARGIN + space) + { + tempindent = MARGIN + space + buf->xtext->space_width + left_width; + + if (tempindent > buf->indent) + buf->indent = tempindent; + + if (buf->indent > buf->xtext->max_auto_indent) + buf->indent = buf->xtext->max_auto_indent; + + gtk_xtext_fix_indent (buf); + gtk_xtext_recalc_widths (buf, FALSE); + + ent->indent = (buf->indent - left_width) - buf->xtext->space_width; + buf->xtext->indent_changed = TRUE; + } + + gtk_xtext_append_entry (buf, ent, stamp); +} + +void +gtk_xtext_append (xtext_buffer *buf, unsigned char *text, int len) +{ + textentry *ent; + + if (len == -1) + len = strlen (text); + + if (text[len-1] == '\n') + len--; + + if (len >= sizeof (buf->xtext->scratch_buffer)) + len = sizeof (buf->xtext->scratch_buffer) - 1; + + ent = malloc (len + 1 + sizeof (textentry)); + ent->str = (unsigned char *) ent + sizeof (textentry); + ent->str_len = len; + if (len) + memcpy (ent->str, text, len); + ent->str[len] = 0; + ent->indent = 0; + ent->left_len = -1; + + gtk_xtext_append_entry (buf, ent, 0); +} + +gboolean +gtk_xtext_is_empty (xtext_buffer *buf) +{ + return buf->text_first == NULL; +} + +int +gtk_xtext_lastlog (xtext_buffer *out, xtext_buffer *search_area, + int (*cmp_func) (char *, void *), void *userdata) +{ + textentry *ent = search_area->text_first; + int matches = 0; + + while (ent) + { + if (cmp_func (ent->str, userdata)) + { + matches++; + /* copy the text over */ + if (search_area->xtext->auto_indent) + gtk_xtext_append_indent (out, ent->str, ent->left_len, + ent->str + ent->left_len + 1, + ent->str_len - ent->left_len - 1, 0); + else + gtk_xtext_append (out, ent->str, ent->str_len); + /* copy the timestamp over */ + out->text_last->stamp = ent->stamp; + } + ent = ent->next; + } + + return matches; +} + +void +gtk_xtext_foreach (xtext_buffer *buf, GtkXTextForeach func, void *data) +{ + textentry *ent = buf->text_first; + + while (ent) + { + (*func) (buf->xtext, ent->str, data); + ent = ent->next; + } +} + +void +gtk_xtext_set_error_function (GtkXText *xtext, void (*error_function) (int)) +{ + xtext->error_function = error_function; +} + +void +gtk_xtext_set_indent (GtkXText *xtext, gboolean indent) +{ + xtext->auto_indent = indent; +} + +void +gtk_xtext_set_max_indent (GtkXText *xtext, int max_auto_indent) +{ + xtext->max_auto_indent = max_auto_indent; +} + +void +gtk_xtext_set_max_lines (GtkXText *xtext, int max_lines) +{ + xtext->max_lines = max_lines; +} + +void +gtk_xtext_set_show_marker (GtkXText *xtext, gboolean show_marker) +{ + xtext->marker = show_marker; +} + +void +gtk_xtext_set_show_separator (GtkXText *xtext, gboolean show_separator) +{ + xtext->separator = show_separator; +} + +void +gtk_xtext_set_thin_separator (GtkXText *xtext, gboolean thin_separator) +{ + xtext->thinline = thin_separator; +} + +void +gtk_xtext_set_time_stamp (xtext_buffer *buf, gboolean time_stamp) +{ + buf->time_stamp = time_stamp; +} + +void +gtk_xtext_set_tint (GtkXText *xtext, int tint_red, int tint_green, int tint_blue) +{ + xtext->tint_red = tint_red; + xtext->tint_green = tint_green; + xtext->tint_blue = tint_blue; + + /*if (xtext->tint_red != 255 || xtext->tint_green != 255 || xtext->tint_blue != 255) + shaded = TRUE;*/ +} + +void +gtk_xtext_set_urlcheck_function (GtkXText *xtext, int (*urlcheck_function) (GtkWidget *, char *, int)) +{ + xtext->urlcheck_function = urlcheck_function; +} + +void +gtk_xtext_set_wordwrap (GtkXText *xtext, gboolean wordwrap) +{ + xtext->wordwrap = wordwrap; +} + +void +gtk_xtext_reset_marker_pos (GtkXText *xtext) +{ + xtext->buffer->marker_pos = NULL; + dontscroll (xtext->buffer); /* force scrolling off */ + gtk_xtext_render_page (xtext); + xtext->buffer->reset_marker_pos = TRUE; +} + +void +gtk_xtext_buffer_show (GtkXText *xtext, xtext_buffer *buf, int render) +{ + int w, h; + + buf->xtext = xtext; + + if (xtext->buffer == buf) + return; + +/*printf("text_buffer_show: xtext=%p buffer=%p\n", xtext, buf);*/ + + if (xtext->add_io_tag) + { + g_source_remove (xtext->add_io_tag); + xtext->add_io_tag = 0; + } + + if (xtext->io_tag) + { + g_source_remove (xtext->io_tag); + xtext->io_tag = 0; + } + + if (!GTK_WIDGET_REALIZED (GTK_WIDGET (xtext))) + gtk_widget_realize (GTK_WIDGET (xtext)); + + gdk_drawable_get_size (GTK_WIDGET (xtext)->window, &w, &h); + + /* after a font change */ + if (buf->needs_recalc) + { + buf->needs_recalc = FALSE; + gtk_xtext_recalc_widths (buf, TRUE); + } + + /* now change to the new buffer */ + xtext->buffer = buf; + dontscroll (buf); /* force scrolling off */ + xtext->adj->value = buf->old_value; + xtext->adj->upper = buf->num_lines; + if (xtext->adj->upper == 0) + xtext->adj->upper = 1; + /* sanity check */ + else if (xtext->adj->value > xtext->adj->upper - xtext->adj->page_size) + { + /*buf->pagetop_ent = NULL;*/ + xtext->adj->value = xtext->adj->upper - xtext->adj->page_size; + if (xtext->adj->value < 0) + xtext->adj->value = 0; + } + + if (render) + { + /* did the window change size since this buffer was last shown? */ + if (buf->window_width != w) + { + buf->window_width = w; + gtk_xtext_calc_lines (buf, FALSE); + if (buf->scrollbar_down) + gtk_adjustment_set_value (xtext->adj, xtext->adj->upper - + xtext->adj->page_size); + } else if (buf->window_height != h) + { + buf->window_height = h; + buf->pagetop_ent = NULL; + gtk_xtext_adjustment_set (buf, FALSE); + } + + gtk_xtext_render_page (xtext); + gtk_adjustment_changed (xtext->adj); + } else + { + /* avoid redoing the transparency */ + xtext->avoid_trans = TRUE; + } +} + +xtext_buffer * +gtk_xtext_buffer_new (GtkXText *xtext) +{ + xtext_buffer *buf; + + buf = malloc (sizeof (xtext_buffer)); + memset (buf, 0, sizeof (xtext_buffer)); + buf->old_value = -1; + buf->xtext = xtext; + buf->scrollbar_down = TRUE; + buf->indent = xtext->space_width * 2; + dontscroll (buf); + + return buf; +} + +void +gtk_xtext_buffer_free (xtext_buffer *buf) +{ + textentry *ent, *next; + + if (buf->xtext->buffer == buf) + buf->xtext->buffer = buf->xtext->orig_buffer; + + if (buf->xtext->selection_buffer == buf) + buf->xtext->selection_buffer = NULL; + + ent = buf->text_first; + while (ent) + { + next = ent->next; + free (ent); + ent = next; + } + + free (buf); +} diff --git a/xchat-2.8.8/src/fe-gtk/xtext.h b/xchat-2.8.8/src/fe-gtk/xtext.h new file mode 100644 index 0000000..fa490a6 --- /dev/null +++ b/xchat-2.8.8/src/fe-gtk/xtext.h @@ -0,0 +1,275 @@ +#ifndef __XTEXT_H__ +#define __XTEXT_H__ + +#include <gtk/gtkadjustment.h> +#ifdef USE_XFT +#include <X11/Xft/Xft.h> +#endif + +#ifdef USE_SHM +#include <X11/Xlib.h> +#include <sys/ipc.h> +#include <sys/shm.h> +#include <X11/extensions/XShm.h> +#endif + +#define GTK_TYPE_XTEXT (gtk_xtext_get_type ()) +#define GTK_XTEXT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GTK_TYPE_XTEXT, GtkXText)) +#define GTK_XTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_XTEXT, GtkXTextClass)) +#define GTK_IS_XTEXT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GTK_TYPE_XTEXT)) +#define GTK_IS_XTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_XTEXT)) +#define GTK_XTEXT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_XTEXT, GtkXTextClass)) + +#define ATTR_BOLD '\002' +#define ATTR_COLOR '\003' +#define ATTR_BLINK '\006' +#define ATTR_BEEP '\007' +#define ATTR_HIDDEN '\010' +#define ATTR_ITALICS2 '\011' +#define ATTR_RESET '\017' +#define ATTR_REVERSE '\026' +#define ATTR_ITALICS '\035' +#define ATTR_UNDERLINE '\037' + +/* these match palette.h */ +#define XTEXT_MIRC_COLS 32 +#define XTEXT_COLS 37 /* 32 plus 5 for extra stuff below */ +#define XTEXT_MARK_FG 32 /* for marking text */ +#define XTEXT_MARK_BG 33 +#define XTEXT_FG 34 +#define XTEXT_BG 35 +#define XTEXT_MARKER 36 /* for marker line */ + +typedef struct _GtkXText GtkXText; +typedef struct _GtkXTextClass GtkXTextClass; +typedef struct textentry textentry; + +typedef struct { + GtkXText *xtext; /* attached to this widget */ + + gfloat old_value; /* last known adj->value */ + textentry *text_first; + textentry *text_last; + guint16 grid_offset[256]; + + textentry *last_ent_start; /* this basically describes the last rendered */ + textentry *last_ent_end; /* selection. */ + int last_offset_start; + int last_offset_end; + + int last_pixel_pos; + + int pagetop_line; + int pagetop_subline; + textentry *pagetop_ent; /* what's at xtext->adj->value */ + + int num_lines; + int indent; /* position of separator (pixels) from left */ + + textentry *marker_pos; + + int window_width; /* window size when last rendered. */ + int window_height; + + unsigned int time_stamp:1; + unsigned int scrollbar_down:1; + unsigned int needs_recalc:1; + unsigned int grid_dirty:1; + unsigned int marker_seen:1; + unsigned int reset_marker_pos:1; +} xtext_buffer; + +struct _GtkXText +{ + GtkWidget widget; + + xtext_buffer *buffer; + xtext_buffer *orig_buffer; + xtext_buffer *selection_buffer; + +#ifdef USE_SHM + XShmSegmentInfo shminfo; +#endif + + GtkAdjustment *adj; + GdkPixmap *pixmap; /* 0 = use palette[19] */ + GdkDrawable *draw_buf; /* points to ->window */ + GdkCursor *hand_cursor; + GdkCursor *resize_cursor; + + int pixel_offset; /* amount of pixels the top line is chopped by */ + + int last_win_x; + int last_win_y; + int last_win_h; + int last_win_w; + + int tint_red; + int tint_green; + int tint_blue; + + GdkGC *bgc; /* backing pixmap */ + GdkGC *fgc; /* text foreground color */ + GdkGC *light_gc; /* sep bar */ + GdkGC *dark_gc; + GdkGC *thin_gc; + GdkGC *marker_gc; + gulong palette[XTEXT_COLS]; + + gint io_tag; /* for delayed refresh events */ + gint add_io_tag; /* "" when adding new text */ + gint scroll_tag; /* marking-scroll timeout */ + gulong vc_signal_tag; /* signal handler for "value_changed" adj */ + + int select_start_adj; /* the adj->value when the selection started */ + int select_start_x; + int select_start_y; + int select_end_x; + int select_end_y; + + int max_lines; + + int col_fore; + int col_back; + + int depth; /* gdk window depth */ + + char num[8]; /* for parsing mirc color */ + int nc; /* offset into xtext->num */ + + textentry *hilight_ent; + int hilight_start; + int hilight_end; + + guint16 fontwidth[128]; /* each char's width, only the ASCII ones */ + +#ifdef USE_XFT + XftColor color[XTEXT_COLS]; + XftColor *xft_fg; + XftColor *xft_bg; /* both point into color[20] */ + XftDraw *xftdraw; + XftFont *font; + XftFont *ifont; /* italics */ +#else + struct pangofont + { + PangoFontDescription *font; + PangoFontDescription *ifont; /* italics */ + int ascent; + int descent; + } *font, pango_font; + PangoLayout *layout; +#endif + + int fontsize; + int space_width; /* width (pixels) of the space " " character */ + int stamp_width; /* width of "[88:88:88]" */ + int max_auto_indent; + + unsigned char scratch_buffer[4096]; + + void (*error_function) (int type); + int (*urlcheck_function) (GtkWidget * xtext, char *word, int len); + + int jump_out_offset; /* point at which to stop rendering */ + int jump_in_offset; /* "" start rendering */ + + int ts_x; /* ts origin for ->bgc GC */ + int ts_y; + + int clip_x; /* clipping (x directions) */ + int clip_x2; /* from x to x2 */ + + int clip_y; /* clipping (y directions) */ + int clip_y2; /* from y to y2 */ + + /* current text states */ + unsigned int bold:1; + unsigned int underline:1; + unsigned int italics:1; + unsigned int hidden:1; + + /* text parsing states */ + unsigned int parsing_backcolor:1; + unsigned int parsing_color:1; + unsigned int backcolor:1; + + /* various state information */ + unsigned int moving_separator:1; + unsigned int word_or_line_select:1; + unsigned int button_down:1; + unsigned int hilighting:1; + unsigned int dont_render:1; + unsigned int dont_render2:1; + unsigned int cursor_hand:1; + unsigned int cursor_resize:1; + unsigned int skip_border_fills:1; + unsigned int skip_stamp:1; + unsigned int mark_stamp:1; /* Cut&Paste with stamps? */ + unsigned int force_stamp:1; /* force redrawing it */ + unsigned int render_hilights_only:1; + unsigned int in_hilight:1; + unsigned int un_hilight:1; + unsigned int recycle:1; + unsigned int avoid_trans:1; + unsigned int indent_changed:1; + unsigned int shm:1; + unsigned int color_paste:1; /* CTRL was pressed when selection finished */ + + /* settings/prefs */ + unsigned int auto_indent:1; + unsigned int thinline:1; + unsigned int transparent:1; + unsigned int shaded:1; + unsigned int marker:1; + unsigned int separator:1; + unsigned int wordwrap:1; + unsigned int overdraw:1; + unsigned int ignore_hidden:1; /* rawlog uses this */ +}; + +struct _GtkXTextClass +{ + GtkWidgetClass parent_class; + void (*word_click) (GtkXText * xtext, char *word, GdkEventButton * event); +}; + +GtkWidget *gtk_xtext_new (GdkColor palette[], int separator); +void gtk_xtext_append (xtext_buffer *buf, unsigned char *text, int len); +void gtk_xtext_append_indent (xtext_buffer *buf, + unsigned char *left_text, int left_len, + unsigned char *right_text, int right_len, + time_t stamp); +int gtk_xtext_set_font (GtkXText *xtext, char *name); +void gtk_xtext_set_background (GtkXText * xtext, GdkPixmap * pixmap, gboolean trans); +void gtk_xtext_set_palette (GtkXText * xtext, GdkColor palette[]); +void gtk_xtext_clear (xtext_buffer *buf, int lines); +void gtk_xtext_save (GtkXText * xtext, int fh); +void gtk_xtext_refresh (GtkXText * xtext, int do_trans); +int gtk_xtext_lastlog (xtext_buffer *out, xtext_buffer *search_area, int (*cmp_func) (char *, void *userdata), void *userdata); +textentry *gtk_xtext_search (GtkXText * xtext, const gchar *text, textentry *start, gboolean case_match, gboolean backward); +void gtk_xtext_reset_marker_pos (GtkXText *xtext); +void gtk_xtext_check_marker_visibility(GtkXText *xtext); + +gboolean gtk_xtext_is_empty (xtext_buffer *buf); +typedef void (*GtkXTextForeach) (GtkXText *xtext, unsigned char *text, void *data); +void gtk_xtext_foreach (xtext_buffer *buf, GtkXTextForeach func, void *data); + +void gtk_xtext_set_error_function (GtkXText *xtext, void (*error_function) (int)); +void gtk_xtext_set_indent (GtkXText *xtext, gboolean indent); +void gtk_xtext_set_max_indent (GtkXText *xtext, int max_auto_indent); +void gtk_xtext_set_max_lines (GtkXText *xtext, int max_lines); +void gtk_xtext_set_show_marker (GtkXText *xtext, gboolean show_marker); +void gtk_xtext_set_show_separator (GtkXText *xtext, gboolean show_separator); +void gtk_xtext_set_thin_separator (GtkXText *xtext, gboolean thin_separator); +void gtk_xtext_set_time_stamp (xtext_buffer *buf, gboolean timestamp); +void gtk_xtext_set_tint (GtkXText *xtext, int tint_red, int tint_green, int tint_blue); +void gtk_xtext_set_urlcheck_function (GtkXText *xtext, int (*urlcheck_function) (GtkWidget *, char *, int)); +void gtk_xtext_set_wordwrap (GtkXText *xtext, gboolean word_wrap); + +xtext_buffer *gtk_xtext_buffer_new (GtkXText *xtext); +void gtk_xtext_buffer_free (xtext_buffer *buf); +void gtk_xtext_buffer_show (GtkXText *xtext, xtext_buffer *buf, int render); +GType gtk_xtext_get_type (void); + +#endif diff --git a/xchat-2.8.8/src/fe-text/.deps/fe-text.Po b/xchat-2.8.8/src/fe-text/.deps/fe-text.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/xchat-2.8.8/src/fe-text/.deps/fe-text.Po @@ -0,0 +1 @@ +# dummy diff --git a/xchat-2.8.8/src/fe-text/Makefile b/xchat-2.8.8/src/fe-text/Makefile new file mode 100644 index 0000000..a0f66d1 --- /dev/null +++ b/xchat-2.8.8/src/fe-text/Makefile @@ -0,0 +1,599 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# src/fe-text/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + +pkgdatadir = $(datadir)/xchat +pkgincludedir = $(includedir)/xchat +pkglibdir = $(libdir)/xchat +pkglibexecdir = $(libexecdir)/xchat +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +bin_PROGRAMS = xchat-text$(EXEEXT) +subdir = src/fe-text +DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +PROGRAMS = $(bin_PROGRAMS) +am_xchat_text_OBJECTS = fe-text.$(OBJEXT) +xchat_text_OBJECTS = $(am_xchat_text_OBJECTS) +am__DEPENDENCIES_1 = +xchat_text_DEPENDENCIES = ../common/libxchatcommon.a \ + $(am__DEPENDENCIES_1) +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(xchat_text_SOURCES) +DIST_SOURCES = $(xchat_text_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run aclocal-1.11 +ALLOCA = +AMTAR = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run tar +AR = ar +AUTOCONF = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run autoconf +AUTOHEADER = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run autoheader +AUTOMAKE = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run automake-1.11 +AWK = gawk +BUILD_INCLUDED_LIBINTL = no +CATOBJEXT = .gmo +CC = gcc +CCAS = gcc +CCASDEPMODE = depmode=gcc3 +CCASFLAGS = -g -O2 +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 -Wall -pipe -Wno-pointer-sign -funsigned-char +CFLAG_VISIBILITY = -fvisibility=hidden +COMMON_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -pthread -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include +COMMON_LIBS = -lglib-2.0 -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DATADIR = ${prefix}/share +DATADIRNAME = share +DBUS_BINDING_TOOL = /usr/bin/dbus-binding-tool +DBUS_CFLAGS = -pthread -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include +DBUS_LIBS = -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0 +DBUS_SERVICES_DIR = ${prefix}/share/dbus-1/services +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/local/bin/grep -E +EXEEXT = +FGREP = /usr/local/bin/grep -F +GCONFTOOL = /usr/bin/gconftool-2 +GENCAT = gencat +GETTEXT_MACRO_VERSION = 0.17 +GETTEXT_PACKAGE = xchat +GLIBC2 = yes +GLIBC21 = yes +GLIB_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include +GLIB_GENMARSHAL = /usr/bin/glib-genmarshal +GLIB_LIBS = -lglib-2.0 +GLIB_MKENUMS = glib-mkenums +GMSGFMT = /usr/bin/msgfmt +GMSGFMT_015 = /usr/bin/msgfmt +GOBJECT_QUERY = gobject-query +GREP = /usr/local/bin/grep +GTKSPELL_CFLAGS = +GTKSPELL_LIBS = +GTK_CFLAGS = -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 +GTK_LIBS = -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype +GUI_CFLAGS = -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 +GUI_LIBS = -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype -Wl,--version-script,$(srcdir)/../version-script -lglib-2.0 -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0 +HAVE_ASPRINTF = 1 +HAVE_POSIX_PRINTF = 1 +HAVE_SNPRINTF = 1 +HAVE_VISIBILITY = 1 +HAVE_WPRINTF = 0 +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +INSTOBJEXT = .mo +INTLBISON = bison +INTLLIBS = +INTLOBJS = +INTL_LIBTOOL_SUFFIX_PREFIX = +INTL_MACOSX_LIBS = +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = -lgmodule-2.0 +LIBICONV = -liconv +LIBINTL = +LIBMULTITHREAD = -lpthread +LIBOBJS = +LIBPTH = +LIBPTH_PREFIX = +LIBS = -lX11 -lssl -lcrypto -ldl -Wl,--export-dynamic -pthread -lglib-2.0 +LIBSEXY_CFLAGS = +LIBSEXY_LIBS = +LIBTHREAD = +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBC = -lc +LTLIBICONV = -liconv +LTLIBINTL = +LTLIBMULTITHREAD = -lpthread +LTLIBOBJS = +LTLIBPTH = +LTLIBTHREAD = +MAINT = # +MAKEINFO = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run makeinfo +MKDIR_P = /bin/mkdir -p +MSGFMT = /usr/bin/msgfmt +MSGFMT_015 = /usr/bin/msgfmt +MSGMERGE = /usr/bin/msgmerge +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = xchat +PACKAGE_BUGREPORT = http://www.xchat.org/ +PACKAGE_NAME = XChat +PACKAGE_STRING = XChat 2.8.8 +PACKAGE_TARNAME = xchat +PACKAGE_URL = +PACKAGE_VERSION = 2.8.8 +PATH_SEPARATOR = : +PERL_CFLAGS = -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/lib/x86_64-linux-gnu/perl/5.26/CORE +PERL_LDFLAGS = -Wl,-E -fstack-protector-strong -L/usr/local/lib -L/usr/lib/x86_64-linux-gnu/perl/5.26/CORE -lperl -ldl -lm -lpthread -lcrypt +PKG_CONFIG = /usr/bin/pkg-config +PLUGIN_INCLUDES = -I$(top_srcdir)/plugins +POSUB = po +PRI_MACROS_BROKEN = 0 +PY_CFLAGS = -I/usr/include/python2.7 +PY_LIBS = -L/usr/lib/python2.7/config -lpython2.7 -lpthread -lutil +RANLIB = ranlib +SED = /bin/sed +SET_MAKE = +SHELL = /bin/bash +STRIP = strip +TCL_CFLAGS = -I/usr/include -I/usr/include/tcl8.6 +TCL_LIBS = -L/usr/lib/x86_64-linux-gnu -ltcl8.6 -ldl -lz -lpthread -lm +USE_INCLUDED_LIBINTL = no +USE_NLS = yes +VERSION = 2.8.8 +WINDRES = +WOE32 = no +WOE32DLL = no +XGETTEXT = /usr/bin/xgettext +XGETTEXT_015 = /usr/bin/xgettext +XGETTEXT_EXTRA_OPTIONS = +abs_builddir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/src/fe-text +abs_srcdir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/src/fe-text +abs_top_builddir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8 +abs_top_srcdir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8 +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = /usr/local +gdkpixbufcsourcepath = /usr/bin/gdk-pixbuf-csource +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +lt_ECHO = echo +mandir = ${datarootdir}/man +mkdir_p = /bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +perlpath = /usr/bin/perl +pkgconfigpath = /usr/bin/pkg-config +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +pythonpath = /usr/bin/python2 +sbindir = ${exec_prefix}/sbin +sedpath = /bin/sed +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../../ +top_builddir = ../.. +top_srcdir = ../.. +unamepath = /bin/uname +xchatlibdir = ${exec_prefix}/lib/xchat +EXTRA_DIST = README +INCLUDES = $(COMMON_CFLAGS) +xchat_text_LDADD = ../common/libxchatcommon.a $(COMMON_LIBS) +xchat_text_SOURCES = fe-text.c fe-text.h +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/fe-text/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/fe-text/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p || test -f $$p1; \ + then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +xchat-text$(EXEEXT): $(xchat_text_OBJECTS) $(xchat_text_DEPENDENCIES) + @rm -f xchat-text$(EXEEXT) + $(LINK) $(xchat_text_OBJECTS) $(xchat_text_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/fe-text.Po + +.c.o: + depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ + $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ + $(am__mv) $$depbase.Tpo $$depbase.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(COMPILE) -c -o $@ $< + +.c.obj: + depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ + $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ + $(am__mv) $$depbase.Tpo $$depbase.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: + depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ + $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ + $(am__mv) $$depbase.Tpo $$depbase.Plo +# source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic clean-libtool ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-binPROGRAMS install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am \ + uninstall-binPROGRAMS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/xchat-2.8.8/src/fe-text/Makefile.am b/xchat-2.8.8/src/fe-text/Makefile.am new file mode 100644 index 0000000..ef48203 --- /dev/null +++ b/xchat-2.8.8/src/fe-text/Makefile.am @@ -0,0 +1,9 @@ +bin_PROGRAMS = xchat-text + +EXTRA_DIST = README + +INCLUDES = $(COMMON_CFLAGS) + +xchat_text_LDADD = ../common/libxchatcommon.a $(COMMON_LIBS) +xchat_text_SOURCES = fe-text.c fe-text.h + diff --git a/xchat-2.8.8/src/fe-text/Makefile.in b/xchat-2.8.8/src/fe-text/Makefile.in new file mode 100644 index 0000000..fb8826c --- /dev/null +++ b/xchat-2.8.8/src/fe-text/Makefile.in @@ -0,0 +1,599 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +bin_PROGRAMS = xchat-text$(EXEEXT) +subdir = src/fe-text +DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +PROGRAMS = $(bin_PROGRAMS) +am_xchat_text_OBJECTS = fe-text.$(OBJEXT) +xchat_text_OBJECTS = $(am_xchat_text_OBJECTS) +am__DEPENDENCIES_1 = +xchat_text_DEPENDENCIES = ../common/libxchatcommon.a \ + $(am__DEPENDENCIES_1) +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(xchat_text_SOURCES) +DIST_SOURCES = $(xchat_text_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +COMMON_CFLAGS = @COMMON_CFLAGS@ +COMMON_LIBS = @COMMON_LIBS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DATADIRNAME = @DATADIRNAME@ +DBUS_BINDING_TOOL = @DBUS_BINDING_TOOL@ +DBUS_CFLAGS = @DBUS_CFLAGS@ +DBUS_LIBS = @DBUS_LIBS@ +DBUS_SERVICES_DIR = @DBUS_SERVICES_DIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GCONFTOOL = @GCONFTOOL@ +GENCAT = @GENCAT@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GLIB_CFLAGS = @GLIB_CFLAGS@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GLIB_LIBS = @GLIB_LIBS@ +GLIB_MKENUMS = @GLIB_MKENUMS@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GOBJECT_QUERY = @GOBJECT_QUERY@ +GREP = @GREP@ +GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ +GTKSPELL_LIBS = @GTKSPELL_LIBS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_LIBS = @GTK_LIBS@ +GUI_CFLAGS = @GUI_CFLAGS@ +GUI_LIBS = @GUI_LIBS@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBSEXY_CFLAGS = @LIBSEXY_CFLAGS@ +LIBSEXY_LIBS = @LIBSEXY_LIBS@ +LIBTHREAD = @LIBTHREAD@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBC = @LTLIBC@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTHREAD = @LTLIBTHREAD@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL_CFLAGS = @PERL_CFLAGS@ +PERL_LDFLAGS = @PERL_LDFLAGS@ +PKG_CONFIG = @PKG_CONFIG@ +PLUGIN_INCLUDES = @PLUGIN_INCLUDES@ +POSUB = @POSUB@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +PY_CFLAGS = @PY_CFLAGS@ +PY_LIBS = @PY_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TCL_CFLAGS = @TCL_CFLAGS@ +TCL_LIBS = @TCL_LIBS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WOE32 = @WOE32@ +WOE32DLL = @WOE32DLL@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gdkpixbufcsourcepath = @gdkpixbufcsourcepath@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +perlpath = @perlpath@ +pkgconfigpath = @pkgconfigpath@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pythonpath = @pythonpath@ +sbindir = @sbindir@ +sedpath = @sedpath@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +unamepath = @unamepath@ +xchatlibdir = @xchatlibdir@ +EXTRA_DIST = README +INCLUDES = $(COMMON_CFLAGS) +xchat_text_LDADD = ../common/libxchatcommon.a $(COMMON_LIBS) +xchat_text_SOURCES = fe-text.c fe-text.h +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/fe-text/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/fe-text/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p || test -f $$p1; \ + then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +xchat-text$(EXEEXT): $(xchat_text_OBJECTS) $(xchat_text_DEPENDENCIES) + @rm -f xchat-text$(EXEEXT) + $(LINK) $(xchat_text_OBJECTS) $(xchat_text_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fe-text.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic clean-libtool ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-binPROGRAMS install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am \ + uninstall-binPROGRAMS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/xchat-2.8.8/src/fe-text/README b/xchat-2.8.8/src/fe-text/README new file mode 100644 index 0000000..bb760aa --- /dev/null +++ b/xchat-2.8.8/src/fe-text/README @@ -0,0 +1,5 @@ +fe-text README +~~~~~~~~~~~~~~ + +This is an experimental text frontend for X-Chat. +If anyone wants to add ncurses support, they are welcome to. diff --git a/xchat-2.8.8/src/fe-text/fe-text.c b/xchat-2.8.8/src/fe-text/fe-text.c new file mode 100644 index 0000000..2bc2e64 --- /dev/null +++ b/xchat-2.8.8/src/fe-text/fe-text.c @@ -0,0 +1,862 @@ +/* X-Chat + * Copyright (C) 1998 Peter Zelezny. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#ifdef HAVE_STRINGS_H +#include <strings.h> +#endif +#include <sys/time.h> +#include <sys/types.h> +#include <unistd.h> +#include <ctype.h> +#include "../common/xchat.h" +#include "../common/xchatc.h" +#include "../common/outbound.h" +#include "../common/util.h" +#include "../common/fe.h" +#include "fe-text.h" + + +static GSList *tmr_list; /* timer list */ +static int tmr_list_count; +static GSList *se_list; /* socket event list */ +static int se_list_count; +static int done = FALSE; /* finished ? */ + + +static void +send_command (char *cmd) +{ + handle_multiline (sess_list->data, cmd, TRUE, FALSE); +} + +static void +read_stdin (void) +{ + int len, i = 0; + static int pos = 0; + static char inbuf[1024]; + char tmpbuf[512]; + + len = read (STDIN_FILENO, tmpbuf, sizeof tmpbuf - 1); + + while (i < len) + { + switch (tmpbuf[i]) + { + case '\r': + break; + + case '\n': + inbuf[pos] = 0; + pos = 0; + send_command (inbuf); + break; + + default: + inbuf[pos] = tmpbuf[i]; + if (pos < (sizeof inbuf - 2)) + pos++; + } + i++; + } +} + +static int done_intro = 0; + +void +fe_new_window (struct session *sess, int focus) +{ + char buf[512]; + + sess->gui = malloc (4); + + if (!sess->server->front_session) + sess->server->front_session = sess; + if (!sess->server->server_session) + sess->server->server_session = sess; + if (!current_tab) + current_tab = sess; + + if (done_intro) + return; + done_intro = 1; + + snprintf (buf, sizeof (buf), + "\n" + " \017xchat \00310"PACKAGE_VERSION"\n" + " \017Running on \00310%s \017glib \00310%d.%d.%d\n" + " \017This binary compiled \00310"__DATE__"\017\n", + get_cpu_str(), + glib_major_version, glib_minor_version, glib_micro_version); + fe_print_text (sess, buf, 0); + + fe_print_text (sess, "\n\nCompiled in Features\0032:\017 " +#ifdef USE_PLUGIN + "Plugin " +#endif +#ifdef ENABLE_NLS + "NLS " +#endif +#ifdef USE_OPENSSL + "OpenSSL " +#endif +#ifdef USE_IPV6 + "IPv6" +#endif + "\n\n", 0); + fflush (stdout); + fflush (stdin); +} + +static int +get_stamp_str (time_t tim, char *dest, int size) +{ + return strftime (dest, size, prefs.stamp_format, localtime (&tim)); +} + +static int +timecat (char *buf) +{ + char stampbuf[64]; + + get_stamp_str (time (0), stampbuf, sizeof (stampbuf)); + strcat (buf, stampbuf); + return strlen (stampbuf); +} + +/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */ +static const short colconv[] = { 0, 7, 4, 2, 1, 3, 5, 11, 13, 12, 6, 16, 14, 15, 10, 7 }; + +void +fe_print_text (struct session *sess, char *text, time_t stamp) +{ + int dotime = FALSE; + char num[8]; + int reverse = 0, under = 0, bold = 0, + comma, k, i = 0, j = 0, len = strlen (text); + unsigned char *newtext = malloc (len + 1024); + + if (prefs.timestamp) + { + newtext[0] = 0; + j += timecat (newtext); + } + while (i < len) + { + if (dotime && text[i] != 0) + { + dotime = FALSE; + newtext[j] = 0; + j += timecat (newtext); + } + switch (text[i]) + { + case 3: + i++; + if (!isdigit (text[i])) + { + newtext[j] = 27; + j++; + newtext[j] = '['; + j++; + newtext[j] = 'm'; + j++; + i--; + goto jump2; + } + k = 0; + comma = FALSE; + while (i < len) + { + if (text[i] >= '0' && text[i] <= '9' && k < 2) + { + num[k] = text[i]; + k++; + } else + { + int col, mirc; + num[k] = 0; + newtext[j] = 27; + j++; + newtext[j] = '['; + j++; + if (k == 0) + { + newtext[j] = 'm'; + j++; + } else + { + if (comma) + col = 40; + else + col = 30; + mirc = atoi (num); + mirc = colconv[mirc]; + if (mirc > 9) + { + mirc += 50; + sprintf ((char *) &newtext[j], "%dm", mirc + col); + } else + { + sprintf ((char *) &newtext[j], "%dm", mirc + col); + } + j = strlen (newtext); + } + switch (text[i]) + { + case ',': + comma = TRUE; + break; + default: + goto jump; + } + k = 0; + } + i++; + } + break; + case '\026': /* REVERSE */ + if (reverse) + { + reverse = FALSE; + strcpy (&newtext[j], "\033[27m"); + } else + { + reverse = TRUE; + strcpy (&newtext[j], "\033[7m"); + } + j = strlen (newtext); + break; + case '\037': /* underline */ + if (under) + { + under = FALSE; + strcpy (&newtext[j], "\033[24m"); + } else + { + under = TRUE; + strcpy (&newtext[j], "\033[4m"); + } + j = strlen (newtext); + break; + case '\002': /* bold */ + if (bold) + { + bold = FALSE; + strcpy (&newtext[j], "\033[22m"); + } else + { + bold = TRUE; + strcpy (&newtext[j], "\033[1m"); + } + j = strlen (newtext); + break; + case '\007': + if (!prefs.filterbeep) + { + newtext[j] = text[i]; + j++; + } + break; + case '\017': /* reset all */ + strcpy (&newtext[j], "\033[m"); + j += 3; + reverse = FALSE; + bold = FALSE; + under = FALSE; + break; + case '\t': + newtext[j] = ' '; + j++; + break; + case '\n': + newtext[j] = '\r'; + j++; + if (prefs.timestamp) + dotime = TRUE; + default: + newtext[j] = text[i]; + j++; + } + jump2: + i++; + jump: + i += 0; + } + newtext[j] = 0; + write (STDOUT_FILENO, newtext, j); + free (newtext); +} + +void +fe_timeout_remove (int tag) +{ + timerevent *te; + GSList *list; + + list = tmr_list; + while (list) + { + te = (timerevent *) list->data; + if (te->tag == tag) + { + tmr_list = g_slist_remove (tmr_list, te); + free (te); + return; + } + list = list->next; + } +} + +int +fe_timeout_add (int interval, void *callback, void *userdata) +{ + struct timeval now; + timerevent *te = malloc (sizeof (timerevent)); + + tmr_list_count++; /* this overflows at 2.2Billion, who cares!! */ + + te->tag = tmr_list_count; + te->interval = interval; + te->callback = callback; + te->userdata = userdata; + + gettimeofday (&now, NULL); + te->next_call = now.tv_sec * 1000 + (now.tv_usec / 1000) + te->interval; + + tmr_list = g_slist_prepend (tmr_list, te); + + return te->tag; +} + +void +fe_input_remove (int tag) +{ + socketevent *se; + GSList *list; + + list = se_list; + while (list) + { + se = (socketevent *) list->data; + if (se->tag == tag) + { + se_list = g_slist_remove (se_list, se); + free (se); + return; + } + list = list->next; + } +} + +int +fe_input_add (int sok, int flags, void *func, void *data) +{ + socketevent *se = malloc (sizeof (socketevent)); + + se_list_count++; /* this overflows at 2.2Billion, who cares!! */ + + se->tag = se_list_count; + se->sok = sok; + se->rread = flags & FIA_READ; + se->wwrite = flags & FIA_WRITE; + se->eexcept = flags & FIA_EX; + se->callback = func; + se->userdata = data; + se_list = g_slist_prepend (se_list, se); + + return se->tag; +} + +int +fe_args (int argc, char *argv[]) +{ + if (argc > 1) + { + if (!strcasecmp (argv[1], "--version") || !strcasecmp (argv[1], "-v")) + { + puts (PACKAGE_VERSION); + return 0; + } + } + return -1; +} + +void +fe_init (void) +{ + se_list = 0; + se_list_count = 0; + tmr_list = 0; + tmr_list_count = 0; + prefs.autosave = 0; + prefs.use_server_tab = 0; + prefs.autodialog = 0; + prefs.lagometer = 0; + prefs.slist_skip = 1; +} + +void +fe_main (void) +{ + struct timeval timeout, now; + socketevent *se; + timerevent *te; + fd_set rd, wd, ex; + GSList *list; + guint64 shortest, delay; + + if (!sess_list) + new_ircwindow (NULL, NULL, SESS_SERVER, 0); + +#ifdef ENABLE_NLS + bindtextdomain (GETTEXT_PACKAGE, PREFIX"/share/locale"); + bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); + textdomain (GETTEXT_PACKAGE); +#endif + + while (!done) + { + FD_ZERO (&rd); + FD_ZERO (&wd); + FD_ZERO (&ex); + + list = se_list; + while (list) + { + se = (socketevent *) list->data; + if (se->rread) + FD_SET (se->sok, &rd); + if (se->wwrite) + FD_SET (se->sok, &wd); + if (se->eexcept) + FD_SET (se->sok, &ex); + list = list->next; + } + + FD_SET (STDIN_FILENO, &rd); /* for reading keyboard */ + + /* find the shortest timeout event */ + shortest = 0; + list = tmr_list; + while (list) + { + te = (timerevent *) list->data; + if (te->next_call < shortest || shortest == 0) + shortest = te->next_call; + list = list->next; + } + gettimeofday (&now, NULL); + delay = shortest - ((now.tv_sec * 1000) + (now.tv_usec / 1000)); + timeout.tv_sec = delay / 1000; + timeout.tv_usec = (delay % 1000) * 1000; + + select (FD_SETSIZE, &rd, &wd, &ex, &timeout); + + if (FD_ISSET (STDIN_FILENO, &rd)) + read_stdin (); + + /* set all checked flags to false */ + list = se_list; + while (list) + { + se = (socketevent *) list->data; + se->checked = 0; + list = list->next; + } + + /* check all the socket callbacks */ + list = se_list; + while (list) + { + se = (socketevent *) list->data; + se->checked = 1; + if (se->rread && FD_ISSET (se->sok, &rd)) + { + se->callback (NULL, 1, se->userdata); + } else if (se->wwrite && FD_ISSET (se->sok, &wd)) + { + se->callback (NULL, 2, se->userdata); + } else if (se->eexcept && FD_ISSET (se->sok, &ex)) + { + se->callback (NULL, 4, se->userdata); + } + list = se_list; + if (list) + { + se = (socketevent *) list->data; + while (se->checked) + { + list = list->next; + if (!list) + break; + se = (socketevent *) list->data; + } + } + } + + /* now check our list of timeout events, some might need to be called! */ + gettimeofday (&now, NULL); + list = tmr_list; + while (list) + { + te = (timerevent *) list->data; + list = list->next; + if (now.tv_sec * 1000 + (now.tv_usec / 1000) >= te->next_call) + { + /* if the callback returns 0, it must be removed */ + if (te->callback (te->userdata) == 0) + { + fe_timeout_remove (te->tag); + } else + { + te->next_call = now.tv_sec * 1000 + (now.tv_usec / 1000) + te->interval; + } + } + } + + } +} + +void +fe_exit (void) +{ + done = TRUE; +} + +void +fe_new_server (struct server *serv) +{ + serv->gui = malloc (4); +} + +void +fe_message (char *msg, int flags) +{ + puts (msg); +} + +void +fe_close_window (struct session *sess) +{ + session_free (sess); + done = TRUE; +} + +void +fe_beep (void) +{ + putchar (7); +} + +void +fe_add_rawlog (struct server *serv, char *text, int len, int outbound) +{ +} +void +fe_set_topic (struct session *sess, char *topic, char *stripped_topic) +{ +} +void +fe_cleanup (void) +{ +} +void +fe_set_hilight (struct session *sess) +{ +} +void +fe_set_tab_color (struct session *sess, int col) +{ +} +void +fe_update_mode_buttons (struct session *sess, char mode, char sign) +{ +} +void +fe_update_channel_key (struct session *sess) +{ +} +void +fe_update_channel_limit (struct session *sess) +{ +} +int +fe_is_chanwindow (struct server *serv) +{ + return 0; +} + +void +fe_add_chan_list (struct server *serv, char *chan, char *users, char *topic) +{ +} +void +fe_chan_list_end (struct server *serv) +{ +} +int +fe_is_banwindow (struct session *sess) +{ + return 0; +} +void +fe_add_ban_list (struct session *sess, char *mask, char *who, char *when, int is_exemption) +{ +} +void +fe_ban_list_end (struct session *sess, int is_exemption) +{ +} +void +fe_notify_update (char *name) +{ +} +void +fe_notify_ask (char *name, char *networks) +{ +} +void +fe_text_clear (struct session *sess, int lines) +{ +} +void +fe_progressbar_start (struct session *sess) +{ +} +void +fe_progressbar_end (struct server *serv) +{ +} +void +fe_userlist_insert (struct session *sess, struct User *newuser, int row, int sel) +{ +} +int +fe_userlist_remove (struct session *sess, struct User *user) +{ + return 0; +} +void +fe_userlist_rehash (struct session *sess, struct User *user) +{ +} +void +fe_userlist_move (struct session *sess, struct User *user, int new_row) +{ +} +void +fe_userlist_numbers (struct session *sess) +{ +} +void +fe_userlist_clear (struct session *sess) +{ +} +void +fe_userlist_set_selected (struct session *sess) +{ +} +void +fe_dcc_add (struct DCC *dcc) +{ +} +void +fe_dcc_update (struct DCC *dcc) +{ +} +void +fe_dcc_remove (struct DCC *dcc) +{ +} +void +fe_clear_channel (struct session *sess) +{ +} +void +fe_session_callback (struct session *sess) +{ +} +void +fe_server_callback (struct server *serv) +{ +} +void +fe_url_add (const char *text) +{ +} +void +fe_pluginlist_update (void) +{ +} +void +fe_buttons_update (struct session *sess) +{ +} +void +fe_dlgbuttons_update (struct session *sess) +{ +} +void +fe_dcc_send_filereq (struct session *sess, char *nick, int maxcps, int passive) +{ +} +void +fe_set_channel (struct session *sess) +{ +} +void +fe_set_title (struct session *sess) +{ +} +void +fe_set_nonchannel (struct session *sess, int state) +{ +} +void +fe_set_nick (struct server *serv, char *newnick) +{ +} +void +fe_change_nick (struct server *serv, char *nick, char *newnick) +{ +} +void +fe_ignore_update (int level) +{ +} +int +fe_dcc_open_recv_win (int passive) +{ + return FALSE; +} +int +fe_dcc_open_send_win (int passive) +{ + return FALSE; +} +int +fe_dcc_open_chat_win (int passive) +{ + return FALSE; +} +void +fe_userlist_hide (session * sess) +{ +} +void +fe_lastlog (session * sess, session * lastlog_sess, char *sstr, gboolean regexp) +{ +} +void +fe_set_lag (server * serv, int lag) +{ +} +void +fe_set_throttle (server * serv) +{ +} +void +fe_set_away (server *serv) +{ +} +void +fe_serverlist_open (session *sess) +{ +} +void +fe_get_str (char *prompt, char *def, void *callback, void *ud) +{ +} +void +fe_get_int (char *prompt, int def, void *callback, void *ud) +{ +} +void +fe_idle_add (void *func, void *data) +{ +} +void +fe_ctrl_gui (session *sess, fe_gui_action action, int arg) +{ +} +int +fe_gui_info (session *sess, int info_type) +{ + return -1; +} +void * +fe_gui_info_ptr (session *sess, int info_type) +{ + return NULL; +} +void fe_confirm (const char *message, void (*yesproc)(void *), void (*noproc)(void *), void *ud) +{ +} +char *fe_get_inputbox_contents (struct session *sess) +{ + return NULL; +} +void fe_set_inputbox_contents (struct session *sess, char *text) +{ +} +int fe_get_inputbox_cursor (struct session *sess) +{ + return 0; +} +void fe_set_inputbox_cursor (struct session *sess, int delta, int pos) +{ +} +void fe_open_url (const char *url) +{ +} +void fe_menu_del (menu_entry *me) +{ +} +char *fe_menu_add (menu_entry *me) +{ + return NULL; +} +void fe_menu_update (menu_entry *me) +{ +} +void fe_uselect (struct session *sess, char *word[], int do_clear, int scroll_to) +{ +} +void +fe_server_event (server *serv, int type, int arg) +{ +} +void +fe_flash_window (struct session *sess) +{ +} +void fe_get_file (const char *title, char *initial, + void (*callback) (void *userdata, char *file), void *userdata, + int flags) +{ +} +void fe_tray_set_flash (const char *filename1, const char *filename2, int timeout){} +void fe_tray_set_file (const char *filename){} +void fe_tray_set_icon (feicon icon){} +void fe_tray_set_tooltip (const char *text){} +void fe_tray_set_balloon (const char *title, const char *text){} +void fe_userlist_update (session *sess, struct User *user){} diff --git a/xchat-2.8.8/src/fe-text/fe-text.h b/xchat-2.8.8/src/fe-text/fe-text.h new file mode 100644 index 0000000..b8afa28 --- /dev/null +++ b/xchat-2.8.8/src/fe-text/fe-text.h @@ -0,0 +1,29 @@ + +typedef int (*socket_callback) (void *source, int condition, void *user_data); +typedef int (*timer_callback) (void *user_data); + +struct socketeventRec +{ + socket_callback callback; + void *userdata; + int sok; + int tag; + int rread:1; + int wwrite:1; + int eexcept:1; + int checked:1; +}; + +typedef struct socketeventRec socketevent; + + +struct timerRec +{ + timer_callback callback; + void *userdata; + int interval; + int tag; + guint64 next_call; /* miliseconds */ +}; + +typedef struct timerRec timerevent; diff --git a/xchat-2.8.8/src/pixmaps/Makefile b/xchat-2.8.8/src/pixmaps/Makefile new file mode 100644 index 0000000..68d4cea --- /dev/null +++ b/xchat-2.8.8/src/pixmaps/Makefile @@ -0,0 +1,508 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# src/pixmaps/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + +pkgdatadir = $(datadir)/xchat +pkgincludedir = $(includedir)/xchat +pkglibdir = $(libdir)/xchat +pkglibexecdir = $(libexecdir)/xchat +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +subdir = src/pixmaps +DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +HEADERS = $(noinst_HEADERS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run aclocal-1.11 +ALLOCA = +AMTAR = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run tar +AR = ar +AUTOCONF = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run autoconf +AUTOHEADER = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run autoheader +AUTOMAKE = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run automake-1.11 +AWK = gawk +BUILD_INCLUDED_LIBINTL = no +CATOBJEXT = .gmo +CC = gcc +CCAS = gcc +CCASDEPMODE = depmode=gcc3 +CCASFLAGS = -g -O2 +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 -Wall -pipe -Wno-pointer-sign -funsigned-char +CFLAG_VISIBILITY = -fvisibility=hidden +COMMON_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -pthread -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include +COMMON_LIBS = -lglib-2.0 -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DATADIR = ${prefix}/share +DATADIRNAME = share +DBUS_BINDING_TOOL = /usr/bin/dbus-binding-tool +DBUS_CFLAGS = -pthread -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include +DBUS_LIBS = -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0 +DBUS_SERVICES_DIR = ${prefix}/share/dbus-1/services +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/local/bin/grep -E +EXEEXT = +FGREP = /usr/local/bin/grep -F +GCONFTOOL = /usr/bin/gconftool-2 +GENCAT = gencat +GETTEXT_MACRO_VERSION = 0.17 +GETTEXT_PACKAGE = xchat +GLIBC2 = yes +GLIBC21 = yes +GLIB_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include +GLIB_GENMARSHAL = /usr/bin/glib-genmarshal +GLIB_LIBS = -lglib-2.0 +GLIB_MKENUMS = glib-mkenums +GMSGFMT = /usr/bin/msgfmt +GMSGFMT_015 = /usr/bin/msgfmt +GOBJECT_QUERY = gobject-query +GREP = /usr/local/bin/grep +GTKSPELL_CFLAGS = +GTKSPELL_LIBS = +GTK_CFLAGS = -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 +GTK_LIBS = -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype +GUI_CFLAGS = -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 +GUI_LIBS = -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype -Wl,--version-script,$(srcdir)/../version-script -lglib-2.0 -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lgthread-2.0 -pthread -lglib-2.0 +HAVE_ASPRINTF = 1 +HAVE_POSIX_PRINTF = 1 +HAVE_SNPRINTF = 1 +HAVE_VISIBILITY = 1 +HAVE_WPRINTF = 0 +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +INSTOBJEXT = .mo +INTLBISON = bison +INTLLIBS = +INTLOBJS = +INTL_LIBTOOL_SUFFIX_PREFIX = +INTL_MACOSX_LIBS = +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = -lgmodule-2.0 +LIBICONV = -liconv +LIBINTL = +LIBMULTITHREAD = -lpthread +LIBOBJS = +LIBPTH = +LIBPTH_PREFIX = +LIBS = -lX11 -lssl -lcrypto -ldl -Wl,--export-dynamic -pthread -lglib-2.0 +LIBSEXY_CFLAGS = +LIBSEXY_LIBS = +LIBTHREAD = +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBC = -lc +LTLIBICONV = -liconv +LTLIBINTL = +LTLIBMULTITHREAD = -lpthread +LTLIBOBJS = +LTLIBPTH = +LTLIBTHREAD = +MAINT = # +MAKEINFO = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/missing --run makeinfo +MKDIR_P = /bin/mkdir -p +MSGFMT = /usr/bin/msgfmt +MSGFMT_015 = /usr/bin/msgfmt +MSGMERGE = /usr/bin/msgmerge +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = xchat +PACKAGE_BUGREPORT = http://www.xchat.org/ +PACKAGE_NAME = XChat +PACKAGE_STRING = XChat 2.8.8 +PACKAGE_TARNAME = xchat +PACKAGE_URL = +PACKAGE_VERSION = 2.8.8 +PATH_SEPARATOR = : +PERL_CFLAGS = -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/lib/x86_64-linux-gnu/perl/5.26/CORE +PERL_LDFLAGS = -Wl,-E -fstack-protector-strong -L/usr/local/lib -L/usr/lib/x86_64-linux-gnu/perl/5.26/CORE -lperl -ldl -lm -lpthread -lcrypt +PKG_CONFIG = /usr/bin/pkg-config +PLUGIN_INCLUDES = -I$(top_srcdir)/plugins +POSUB = po +PRI_MACROS_BROKEN = 0 +PY_CFLAGS = -I/usr/include/python2.7 +PY_LIBS = -L/usr/lib/python2.7/config -lpython2.7 -lpthread -lutil +RANLIB = ranlib +SED = /bin/sed +SET_MAKE = +SHELL = /bin/bash +STRIP = strip +TCL_CFLAGS = -I/usr/include -I/usr/include/tcl8.6 +TCL_LIBS = -L/usr/lib/x86_64-linux-gnu -ltcl8.6 -ldl -lz -lpthread -lm +USE_INCLUDED_LIBINTL = no +USE_NLS = yes +VERSION = 2.8.8 +WINDRES = +WOE32 = no +WOE32DLL = no +XGETTEXT = /usr/bin/xgettext +XGETTEXT_015 = /usr/bin/xgettext +XGETTEXT_EXTRA_OPTIONS = +abs_builddir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/src/pixmaps +abs_srcdir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/src/pixmaps +abs_top_builddir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8 +abs_top_srcdir = /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8 +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = /usr/local +gdkpixbufcsourcepath = /usr/bin/gdk-pixbuf-csource +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/jdaugherty/work/pkgs/xchat/xchat-2.8.8/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +lt_ECHO = echo +mandir = ${datarootdir}/man +mkdir_p = /bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +perlpath = /usr/bin/perl +pkgconfigpath = /usr/bin/pkg-config +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +pythonpath = /usr/bin/python2 +sbindir = ${exec_prefix}/sbin +sedpath = /bin/sed +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../../ +top_builddir = ../.. +top_srcdir = ../.. +unamepath = /bin/uname +xchatlibdir = ${exec_prefix}/lib/xchat +LIST = traymsgpng $(srcdir)/message.png \ + trayhilightpng $(srcdir)/highlight.png \ + trayfilepng $(srcdir)/fileoffer.png \ + bookpng $(srcdir)/book.png \ + hoppng $(srcdir)/hop.png \ + oppng $(srcdir)/op.png \ + purplepng $(srcdir)/purple.png \ + redpng $(srcdir)/red.png \ + voicepng $(srcdir)/voice.png \ + xchatpng $(srcdir)/../../xchat.png + +PNGS = message.png highlight.png fileoffer.png book.png hop.png op.png purple.png red.png voice.png +noinst_HEADERS = inline_pngs.h +CLEANFILES = $(noinst_HEADERS) +EXTRA_DIST = $(PNGS) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/pixmaps/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/pixmaps/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(HEADERS) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool ctags distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ + uninstall-am + + +inline_pngs.h: $(PNGS) + /usr/bin/gdk-pixbuf-csource --raw --build-list $(LIST) > $(srcdir)/inline_pngs.h + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/xchat-2.8.8/src/pixmaps/Makefile.am b/xchat-2.8.8/src/pixmaps/Makefile.am new file mode 100644 index 0000000..5476f9d --- /dev/null +++ b/xchat-2.8.8/src/pixmaps/Makefile.am @@ -0,0 +1,20 @@ +## Process this file with automake to produce Makefile.in + +LIST = traymsgpng $(srcdir)/message.png \ + trayhilightpng $(srcdir)/highlight.png \ + trayfilepng $(srcdir)/fileoffer.png \ + bookpng $(srcdir)/book.png \ + hoppng $(srcdir)/hop.png \ + oppng $(srcdir)/op.png \ + purplepng $(srcdir)/purple.png \ + redpng $(srcdir)/red.png \ + voicepng $(srcdir)/voice.png \ + xchatpng $(srcdir)/../../xchat.png + +PNGS = message.png highlight.png fileoffer.png book.png hop.png op.png purple.png red.png voice.png +noinst_HEADERS = inline_pngs.h +CLEANFILES = $(noinst_HEADERS) +EXTRA_DIST = $(PNGS) + +inline_pngs.h: $(PNGS) + @gdkpixbufcsourcepath@ --raw --build-list $(LIST) > $(srcdir)/inline_pngs.h diff --git a/xchat-2.8.8/src/pixmaps/Makefile.in b/xchat-2.8.8/src/pixmaps/Makefile.in new file mode 100644 index 0000000..de885b3 --- /dev/null +++ b/xchat-2.8.8/src/pixmaps/Makefile.in @@ -0,0 +1,508 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = src/pixmaps +DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +HEADERS = $(noinst_HEADERS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +COMMON_CFLAGS = @COMMON_CFLAGS@ +COMMON_LIBS = @COMMON_LIBS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DATADIRNAME = @DATADIRNAME@ +DBUS_BINDING_TOOL = @DBUS_BINDING_TOOL@ +DBUS_CFLAGS = @DBUS_CFLAGS@ +DBUS_LIBS = @DBUS_LIBS@ +DBUS_SERVICES_DIR = @DBUS_SERVICES_DIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GCONFTOOL = @GCONFTOOL@ +GENCAT = @GENCAT@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GLIB_CFLAGS = @GLIB_CFLAGS@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GLIB_LIBS = @GLIB_LIBS@ +GLIB_MKENUMS = @GLIB_MKENUMS@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GOBJECT_QUERY = @GOBJECT_QUERY@ +GREP = @GREP@ +GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ +GTKSPELL_LIBS = @GTKSPELL_LIBS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_LIBS = @GTK_LIBS@ +GUI_CFLAGS = @GUI_CFLAGS@ +GUI_LIBS = @GUI_LIBS@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBSEXY_CFLAGS = @LIBSEXY_CFLAGS@ +LIBSEXY_LIBS = @LIBSEXY_LIBS@ +LIBTHREAD = @LIBTHREAD@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBC = @LTLIBC@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTHREAD = @LTLIBTHREAD@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL_CFLAGS = @PERL_CFLAGS@ +PERL_LDFLAGS = @PERL_LDFLAGS@ +PKG_CONFIG = @PKG_CONFIG@ +PLUGIN_INCLUDES = @PLUGIN_INCLUDES@ +POSUB = @POSUB@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +PY_CFLAGS = @PY_CFLAGS@ +PY_LIBS = @PY_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TCL_CFLAGS = @TCL_CFLAGS@ +TCL_LIBS = @TCL_LIBS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WOE32 = @WOE32@ +WOE32DLL = @WOE32DLL@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gdkpixbufcsourcepath = @gdkpixbufcsourcepath@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +perlpath = @perlpath@ +pkgconfigpath = @pkgconfigpath@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pythonpath = @pythonpath@ +sbindir = @sbindir@ +sedpath = @sedpath@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +unamepath = @unamepath@ +xchatlibdir = @xchatlibdir@ +LIST = traymsgpng $(srcdir)/message.png \ + trayhilightpng $(srcdir)/highlight.png \ + trayfilepng $(srcdir)/fileoffer.png \ + bookpng $(srcdir)/book.png \ + hoppng $(srcdir)/hop.png \ + oppng $(srcdir)/op.png \ + purplepng $(srcdir)/purple.png \ + redpng $(srcdir)/red.png \ + voicepng $(srcdir)/voice.png \ + xchatpng $(srcdir)/../../xchat.png + +PNGS = message.png highlight.png fileoffer.png book.png hop.png op.png purple.png red.png voice.png +noinst_HEADERS = inline_pngs.h +CLEANFILES = $(noinst_HEADERS) +EXTRA_DIST = $(PNGS) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/pixmaps/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/pixmaps/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(HEADERS) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool ctags distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ + uninstall-am + + +inline_pngs.h: $(PNGS) + @gdkpixbufcsourcepath@ --raw --build-list $(LIST) > $(srcdir)/inline_pngs.h + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/xchat-2.8.8/src/pixmaps/book.png b/xchat-2.8.8/src/pixmaps/book.png new file mode 100644 index 0000000000000000000000000000000000000000..1f1e43015e05f9b2e35c65650323a52fee9ab436 GIT binary patch literal 841 zcmV-P1GfB$P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004XF*Lt006O% z3;baP00006VoOIv0RI600RN!9r;`8x010qNS#tmY3labT3lag+-G2N4000McNliru z(g70%0wI)oc5(m!0>(*1K~#90ZIexJTSXLxpP4(3W9L&Qu_NpdNUhMKBp^k6q(OjG zK!{4HT_J(QiVge%)~E{>`~bEr5J)T#Y$z=#P*PR2QixD7K~O1e>NIWAxW2Y;?wvay zEaIB*@k(bgqchJLz2_XkKP7-ifLS2Re`Np*IA9H^i+?2yE-bzD{jvEcXB%NNn<Sbf zNzhv3yhjLOq?Fbs9k;%A`Qz5!t@qTS$5Lgo@1K6_-G#6d6K&KnQG^LYQW+m4NU4HA zC>_U0Df)mhc?dA`#M95en9t|9+h}1-ib+$9F?jFs-s7CZ7>(0y-`w3wfUpM`E0teA z{=&<1o44)~wmT#`MQe?<=D-{QnT(>jeS>OcT)gt?$vI%?J|J6}ntrD^d4xu@g)s(` zrlj5K2kr{2j#0Mb0-ST!N<c|K0Uy2g#@nUNeo7SWqqRnBO`7Vz4U(|m+M`q$kcDDd zp8Mu(0AwUked^g03qzyh?1gQNwFf`2wpSfMc!v&e^XQRjuKrqcz$&0srBXTd%+hlY zsX#I^(2sCKMEwDMfydZ>0G#tQwysew<Vi)wt=F#BfzN?Es(NhhO_d!Oxv=~l&RMK= zSZj$BjmP%@`M^@0dYC^qZ~J>Y^|L@7XsfW*p54B_&e3woJw87#CnhGy<#G%Tj}WJh zAP9(}h~3>CR(|@KE1!K(bJm^*ZUR;Xfg)ch(_~N<9-L-oW(p}K!aJPvcsvc^SYEEN zy1HsQVPgfT0Wm<ZwYl-z+LcR%DD~MNFI_fYp1;`l%O9Kc=W=fMUP~0m9}pYYZxA*c zET8*&d*{yf8Q}N(00Hy?lfWWS$q$Xr4Ht@w8I>6;PFB_8@uf_uIPNd5Trl5$_30-@ z#~%XMx{Jl(Wm4V90HZ(|cnmnvJ>LYr0Db`Wd+p`_C4rzD!$7`!-vai4-hliCz2{L@ TGlAHS00000NkvXXu0mjfqknqO literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/src/pixmaps/fileoffer.png b/xchat-2.8.8/src/pixmaps/fileoffer.png new file mode 100644 index 0000000000000000000000000000000000000000..fb16cb22500a86ee18aa6772607e575c07891d45 GIT binary patch literal 5637 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 literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/src/pixmaps/highlight.png b/xchat-2.8.8/src/pixmaps/highlight.png new file mode 100644 index 0000000000000000000000000000000000000000..818f60f15b394a34c0ccd01f8571b56c620ddb07 GIT binary patch literal 5544 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 literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/src/pixmaps/hop.png b/xchat-2.8.8/src/pixmaps/hop.png new file mode 100644 index 0000000000000000000000000000000000000000..30a8460115f3e14d818dfabcb53c46032200a341 GIT binary patch literal 262 zcmV+h0r~!kP)<h;3K|Lk000e1NJLTq000L7000LF1^@s6#8Ow&0002ZNkl<Zc-jTQ zKT85(0Knnj`^P+b^XL=_QPiYz&~tQXYH8{VL>zqvKY-t-hHwcdmzK7+iZH}QYsle6 zjzll+-kwKzMeiW#*lQ7UDN<@qv2+C{d+))$-uCT{>=NZJc#tQ|vl*@AiQBEQQj37- z@Cs*IoGR$1A-i9LvtLA7R_K(P(D145YqB&$PMZYl3g~>9MY~9NUcmPSsQ{@2>buOV zHZh}PX!IPmzGJq^QU8P^6Ejkq=i!eCNj7Jg50B*SkM+x#$LWB(e}}|CFZwW0-2eap M07*qoM6N<$f?j}jp8x;= literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/src/pixmaps/inline_pngs.h b/xchat-2.8.8/src/pixmaps/inline_pngs.h new file mode 100644 index 0000000..cde5ce0 --- /dev/null +++ b/xchat-2.8.8/src/pixmaps/inline_pngs.h @@ -0,0 +1,1939 @@ +/* GdkPixbuf RGBA C-Source image dump */ + +#ifdef __SUNPRO_C +#pragma align 4 (traymsgpng) +#endif +#ifdef __GNUC__ +static const guint8 traymsgpng[] __attribute__ ((__aligned__ (4))) = +#else +static const guint8 traymsgpng[] = +#endif +{ "" + /* Pixbuf magic (0x47646b50) */ + "GdkP" + /* length: header (24) + pixel_data (9216) */ + "\0\0$\30" + /* pixdata_type (0x1010002) */ + "\1\1\0\2" + /* rowstride (192) */ + "\0\0\0\300" + /* width (48) */ + "\0\0\0""0" + /* height (48) */ + "\0\0\0""0" + /* pixel_data: */ + "\377\377\377\0\377\377\377\0\377\0\0\1\377\200\0\2\377f\0\5\377\216\0" + "\11\357\200\0\20\377\200\0\30\377\207\0\40\377\206\0&\377\206\0(\370" + "\206\0&\377\204\0\37\377\205\0\27\377\210\0\17\343q\0\11\377\200\0\4" + "\377\200\0\2\377\0\0\1\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\0\0\1\377\200\0\2\277\200\0\4\377\222\0" + "\7\377\211\0\15\363\206\0\25\377\204\0\35\377\207\0$\377\206\0(\377\203" + "\0'\370\207\0\"\377\200\0\32\361\200\0\22\350t\0\13\377\200\0\6\377U" + "\0\3\377\377\0\1\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\1" + "\377\200\0\2\377\231\0\5\377\200\0\12\377\216\0\22\377\210\0\36\377\205" + "\0,\373\204\0:\373\203\0D\356~\3K\373\205\0C\373\202\0""9\371\202\0+" + "\377\204\0\35\361\200\0\22\377\200\0\12\377f\0\5\377\200\0\2\377\0\0" + "\1\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\1\377\200\0\2\377" + "\200\0\4\377\200\0\10\377\210\0\17\365\200\0\32\370\203\0'\372\202\0" + "5\377\207\0@\333v\3O\373\205\0E\373\202\0=\372\205\0""0\370\200\0\"\377" + "\206\0\25\377\200\0\14\377\200\0\6\377U\0\3\377\377\0\1\377\377\377\0" + "\377\0\0\1\377\200\0\2\377\231\0\5\350t\0\13\377\200\0\24\377\203\0!" + "\377\207\0""3\377\203\0H\261c\13v5(\32\336\37\36\35\375A.\31\317\272" + "e\11o\377\203\0F\372\205\0""2\377\207\0\40\377\206\0\23\377\200\0\12" + "\377f\0\5\377\200\0\2\377\0\0\1\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\1\377\377\0\1\377" + "\200\0\4\377\200\0\10\377\200\0\20\377\200\0\34\371\202\0-\373\201\0" + "A\346z\3[U7\26\270\37\36\34\373*#\33\354}J\20\224\374\204\0M\373\202" + "\0""9\370\206\0&\377\205\0\27\377\200\0\14\377\200\0\6\377U\0\3\377\0" + "\0\1\377\200\0\2\377\231\0\5\377\200\0\12\377\200\0\24\370\203\0#\372" + "\202\0""7\374\204\0O\266d\10\201(\"\33\363\35\35\35\377\35\35\35\377" + "\35\35\35\377)#\33\362\276f\10|\374\204\0M\372\202\0""5\377\203\0!\377" + "\206\0\23\377\200\0\12\377\200\0\4\377\200\0\2\377\0\0\1\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\1\377\377\0\1\377" + "\200\0\4\377\200\0\10\377\200\0\20\366\204\0\35\372\202\0/\373\203\0" + "F\355~\3d>,\30\333\35\35\35\377\35\35\35\377\35\35\35\377\37\36\35\375" + "\207N\20\237\374\202\0V\373\202\0=\377\203\0'\377\205\0\27\377v\0\15" + "\377\200\0\6\377U\0\3\377f\0\5\377\200\0\12\362\200\0\24\377\207\0\"" + "\377\202\0""7\377\204\0Q\274g\10\204)#\33\364\35\35\35\377UM\25\377\326" + "\274\4\377SL\26\377\35\35\35\377-$\33\361\307k\6}\374\204\0O\372\207" + "\0""5\367\203\0!\362\206\0\23\377\216\0\11\377\200\0\4\377\200\0\2\377" + "\0\0\1\377\377\377\0\377\377\377\0\377\0\0\1\377\377\0\1\277\200\0\4" + "\377\200\0\10\377\210\0\17\377\211\0\34\372\202\0/\373\203\0H\362\201" + "\2gD/\27\332\35\35\35\37730\32\377\312\262\6\377\203t\17\377\35\35\35" + "\377\40\36\35\375\213O\20\244\374\204\0Y\373\204\0>\377\203\0'\377\205" + "\0\27\377\200\0\14\377\200\0\6\377\216\0\11\377\200\0\22\377\203\0!\372" + "\202\0""7\374\203\0R\275f\10\205*#\33\364\35\35\35\377UL\25\377\357\316" + "\1\377\370\325\0\377\355\314\1\377NG\27\377\35\35\35\377/%\33\357\316" + "o\6|\374\204\0O\377\204\0""4\377\207\0\40\377\200\0\22\377\216\0\11\377" + "\200\0\4\377\200\0\2\377\0\0\1\377\0\0\1\377\377\0\1\377\252\0\3\377" + "\200\0\10\377\210\0\17\366\211\0\34\377\205\0.\373\205\0G\363\177\0g" + "J2\30\327\35\35\35\377/,\33\377\325\270\5\377\370\325\0\377\370\325\0" + "\377\204s\17\377\35\35\35\377\40\36\35\375\213Q\17\245\377\204\0Y\377" + "\206\0=\370\203\0'\377\200\0\26\377\213\0\13\377\200\0\20\377\210\0\36" + "\372\204\0""4\374\204\0O\276f\10\204*#\33\364\35\35\35\377UK\25\377\357" + "\312\1\377\370\321\0\377\370\321\0\377\370\321\0\377\353\307\2\377H@" + "\27\377\35\35\35\3772'\32\355\323p\4y\374\203\0N\372\204\0""4\377\204" + "\0\37\377\200\0\22\377\216\0\11\377\200\0\4\377\200\0\2\377\200\0\2\377" + "\200\0\4\377\222\0\7\377\210\0\17\377\204\0\33\377\210\0-\377\203\0F" + "\367\202\0eO4\27\323\35\35\35\377+)\33\377\317\257\5\377\370\321\0\377" + "\370\321\0\377\370\321\0\377\370\321\0\377\204q\17\377\35\35\35\377\40" + "\36\35\375\213P\20\244\377\204\0W\373\202\0;\377\203\0#\377\206\0\23" + "\377\200\0\30\371\202\0-\374\205\0I\274f\10\200+#\33\363\35\35\35\377" + "UJ\25\377\357\306\1\377\370\315\0\377\370\315\0\377\370\315\0\377\370" + "\315\0\377\370\315\0\377\350\300\2\377C;\30\377\35\35\35\3776)\32\352" + "\335v\4u\374\204\0M\372\202\0""3\377\204\0\37\377\207\0\21\377\216\0" + "\11\377\231\0\5\377\231\0\5\377\200\0\10\377\210\0\17\366\204\0\33\371" + "\202\0-\373\205\0E\371\202\0dT7\26\317\35\35\35\377(&\33\377\312\250" + "\6\377\370\315\0\377\370\315\0\377\370\315\0\377\370\315\0\377\370\315" + "\0\377\370\315\0\377\204o\17\377\35\35\35\377\40\36\35\375\211O\20\241" + "\377\204\0Q\372\204\0""4\377\204\0\35\377\203\0!\377\206\0;\267d\11t" + "*#\33\362\35\35\35\377UI\25\377\357\302\1\377\370\311\0\377\370\311\0" + "\377\370\311\0\377\370\311\0\377\370\311\0\377\370\311\0\377\370\311" + "\0\377\345\272\3\377>7\31\377\35\35\35\3779*\31\347\342x\4r\374\203\0" + "L\372\205\0""2\377\210\0\36\377\200\0\22\352\200\0\14\377\213\0\13\377" + "\200\0\20\377\204\0\33\377\205\0,\373\203\0D\377\206\0aZ9\25\312\35\35" + "\35\377&$\34\377\305\241\7\377\370\311\0\377\370\311\0\377\370\311\0" + "\377\370\311\0\377\370\311\0\377\370\311\0\377\370\311\0\377\370\311" + "\0\377\204n\17\377\35\35\35\377\37\36\35\375\203L\21\231\373\203\0D\377" + "\203\0'\371\206\0(\373\203\0F,$\33\352\35\35\35\377UH\25\377\360\276" + "\1\377\371\305\0\377\371\305\0\377\371\305\0\377\371\305\0\377\371\305" + "\0\377\371\305\0\377\371\305\0\377\371\305\0\377\371\305\0\377\341\262" + "\3\37792\31\377\35\35\35\377=+\31\343\346x\2o\374\205\0K\372\205\0""2" + "\377\207\0\40\377\205\0\27\377\200\0\26\377\204\0\35\371\202\0-\373\203" + "\0D\372\203\0a`<\25\305\35\35\35\377#\"\34\377\300\231\10\377\371\305" + "\0\377\371\305\0\377\371\305\0\377\371\305\0\377\371\305\0\377\371\305" + "\0\377\371\305\0\377\371\305\0\377\371\305\0\377\371\305\0\377\204l\17" + "\377\35\35\35\377\37\36\35\375\263b\12g\377\210\0/\371\202\0+\273f\10" + "^\35\35\35\377\40\37\35\377\351\266\2\377\371\302\0\377\371\302\0\377" + "\371\302\0\377\371\302\0\377\371\302\0\377\371\302\0\377\371\302\0\377" + "\371\302\0\377\371\302\0\377\371\302\0\377\371\302\0\377\335\255\4\377" + "5/\32\377\35\35\35\377@-\30\340\352|\2n\377\205\0K\372\204\0""6\377\203" + "\0)\371\206\0(\377\207\0""1\373\205\0E\374\205\0`f\77\24\300\35\35\35" + "\377!\40\34\377\271\222\11\377\371\302\0\377\371\302\0\377\371\302\0" + "\377\371\302\0\377\371\302\0\377\371\302\0\377\371\302\0\377\371\302" + "\0\377\371\302\0\377\371\302\0\377\371\302\0\377\371\302\0\377NB\27\377" + "\35\35\35\377h@\24\231\372\202\0""3\377\206\0(\361\200\0I/%\33\346\35" + "\35\35\377t]\22\377\370\275\0\377\371\276\0\377\371\276\0\377\371\276" + "\0\377\371\276\0\377\371\276\0\377\371\276\0\377\371\276\0\377\371\276" + "\0\377\371\276\0\377\371\276\0\377\371\276\0\377\330\246\4\3770+\32\377" + "\35\35\35\377E/\27\334\364\200\2m\374\206\0R\373\203\0D\373\203\0B\374" + "\204\0M\372\202\0dnC\23\274\35\35\35\377\40\37\35\377\261\211\11\377" + "\371\276\0\377\371\276\0\377\371\276\0\377\371\276\0\377\371\276\0\377" + "\371\276\0\377\371\276\0\377\371\276\0\377\371\276\0\377\371\276\0\377" + "\371\276\0\377\371\276\0\377\263\213\11\377\40\37\35\377\37\36\34\374" + "\256`\12j\377\205\0""0\370\207\0\"\377\204\0<\232W\16\203\"\40\35\372" + "\35\35\35\377nW\22\377\366\270\0\377\371\272\0\377\371\272\0\377\371" + "\272\0\377\371\272\0\377\371\272\0\377\371\272\0\377\371\272\0\377\371" + "\272\0\377\371\272\0\377\371\272\0\377\371\272\0\377\323\237\5\377-)" + "\33\377\35\35\35\377L3\27\332\367\201\0v\372\205\0f\374\205\0d\375\205" + "\0oxG\22\273\35\35\35\377\37\36\35\377\252\202\12\377\371\272\0\377\371" + "\272\0\377\371\272\0\377\371\272\0\377\371\272\0\377\371\272\0\377\371" + "\272\0\377\371\272\0\377\371\272\0\377\371\272\0\377\371\272\0\377\371" + "\272\0\377\254\203\12\377!\40\35\377\35\35\35\377a<\24\262\373\203\0" + "F\371\203\0)\377\205\0\31\371\205\0.\374\205\0K\237Y\15\217$\40\34\371" + "\35\35\35\377fP\23\377\365\263\1\377\371\266\0\377\371\266\0\377\371" + "\266\0\377\371\266\0\377\371\266\0\377\371\266\0\377\371\266\0\377\371" + "\266\0\377\371\266\0\377\371\266\0\377\371\266\0\377\316\230\6\377)%" + "\33\377\35\35\35\377U7\26\333\367\201\0\215\375\205\0\212\205M\20\277" + "\35\35\35\377\36\36\35\377\242z\13\377\371\266\0\377\371\266\0\377\371" + "\266\0\377\371\266\0\377\371\266\0\377\371\266\0\377\371\266\0\377\371" + "\266\0\377\371\266\0\377\371\266\0\377\371\266\0\377\371\266\0\377\244" + "{\13\377\37\36\35\377\35\35\35\377e>\23\272\374\204\0U\372\204\0""6\367" + "\204\0\37\360x\0\21\367\200\0\40\372\204\0""6\374\203\0R\251^\13\217" + "&!\34\370\35\35\35\377_J\24\377\363\256\1\377\371\262\0\377\371\262\0" + "\377\371\262\0\377\371\262\0\377\371\262\0\377\371\262\0\377\371\262" + "\0\377\371\262\0\377\371\262\0\377\371\262\0\377\371\262\0\377\307\220" + "\6\377'$\34\377\35\35\35\377a=\24\341\225U\16\315\36\35\35\377\35\35" + "\35\377\233r\14\377\371\262\0\377\371\262\0\377\371\262\0\377\371\262" + "\0\377\371\262\0\377\371\262\0\377\371\262\0\377\371\262\0\377\371\262" + "\0\377\371\262\0\377\371\262\0\377\371\262\0\377\235s\14\377\36\36\35" + "\377\35\35\35\377nB\22\270\374\204\0[\373\204\0>\370\206\0&\377\214\0" + "\24\377\200\0\12\377\206\0\23\370\203\0#\373\202\0""9\374\203\0T\260" + "`\11\215(\"\34\366\35\35\35\377ZE\25\377\361\250\1\377\372\256\0\377" + "\372\256\0\377\372\256\0\377\372\256\0\377\372\256\0\377\372\256\0\377" + "\372\256\0\377\372\256\0\377\372\256\0\377\372\256\0\377\372\256\0\377" + "\302\211\7\377$\"\34\377\35\35\35\377\35\35\35\377\35\35\35\377\223k" + "\16\377\372\256\0\377\372\256\0\377\372\256\0\377\372\256\0\377\372\256" + "\0\377\372\256\0\377\372\256\0\377\372\256\0\377\372\256\0\377\372\256" + "\0\377\372\256\0\377\372\256\0\377\225l\15\377\35\35\35\377\36\35\35" + "\377tE\21\265\374\204\0]\377\203\0@\377\203\0)\364\200\0\30\377\200\0" + "\14\377f\0\5\377t\0\13\363\206\0\25\370\200\0$\373\202\0""9\374\204\0" + "S\271f\11\211*#\33\364\35\35\35\377S\77\26\377\356\242\1\377\372\252" + "\0\377\372\252\0\377\372\252\0\377\372\252\0\377\372\252\0\377\372\252" + "\0\377\372\252\0\377\372\252\0\377\372\252\0\377\372\252\0\377\372\252" + "\0\377\274\203\10\377\"\40\34\377\35\35\35\377\213c\17\377\372\252\0" + "\377\372\252\0\377\372\252\0\377\372\252\0\377\372\252\0\377\372\252" + "\0\377\372\252\0\377\372\252\0\377\372\252\0\377\372\252\0\377\372\252" + "\0\377\372\252\0\377\214d\16\377\35\35\35\377\36\36\35\376|I\20\257\374" + "\204\0]\373\205\0A\371\206\0*\377\205\0\31\377\211\0\15\377\200\0\6\377" + "\200\0\2\377\231\0\5\377\213\0\13\363\206\0\25\370\200\0$\372\204\0""8" + "\374\206\0R\276g\10\205-%\33\362\35\35\35\377M;\27\377\354\236\2\377" + "\372\246\0\377\372\246\0\377\372\246\0\377\372\246\0\377\372\246\0\377" + "\372\246\0\377\372\246\0\377\372\246\0\377\372\246\0\377\372\246\0\377" + "\372\246\0\377\266|\11\377\205]\17\377\372\246\0\377\372\246\0\377\372" + "\246\0\377\372\246\0\377\372\246\0\377\372\246\0\377\372\246\0\377\372" + "\246\0\377\372\246\0\377\372\246\0\377\372\246\0\377\372\246\0\377\204" + "\\\17\377\35\35\35\377\37\36\35\376\203K\17\253\374\202\0\\\377\203\0" + "@\371\206\0*\377\205\0\31\377\200\0\16\377m\0\7\377\252\0\3\377\0\0\1" + "\377\200\0\2\377\231\0\5\377\213\0\13\363y\0\25\370\203\0#\377\206\0" + "7\374\204\0Q\310k\10\201/%\33\360\35\35\35\377G6\27\377\350\227\2\377" + "\372\242\0\377\372\242\0\377\372\242\0\377\372\242\0\377\372\242\0\377" + "\372\242\0\377\372\242\0\377\372\242\0\377\372\242\0\377\372\242\0\377" + "\372\242\0\377\372\242\0\377\372\242\0\377\372\242\0\377\372\242\0\377" + "\372\242\0\377\372\242\0\377\372\242\0\377\372\242\0\377\372\242\0\377" + "\372\242\0\377\372\242\0\377\371\241\0\377|V\20\377\35\35\35\377\37\36" + "\34\375\212P\17\246\374\204\0[\377\206\0\77\377\203\0)\365\205\0\31\377" + "\211\0\15\377m\0\7\377\252\0\3\377\377\0\1\377\377\377\0\377\0\0\1\377" + "\200\0\2\377\231\0\5\377t\0\13\377\372\364\251\377\375\373\351\377\374" + "\371\353\377\373\367\356\375\370\362\362\354\353\352\375\351\351\351" + "\377\354\353\350\377\374\364\346\377\377\365\346\377\377\365\346\377" + "\377\365\346\377\377\365\346\377\377\365\346\377\377\365\346\377\377" + "\365\346\377\377\365\346\377\377\365\346\377\377\365\346\377\377\365" + "\346\377\377\365\346\377\377\365\346\377\377\365\346\377\377\365\346" + "\377\377\365\346\377\377\365\346\377\377\365\346\377\377\365\346\377" + "\377\365\346\377\376\365\346\377\361\356\350\377\351\351\351\377\351" + "\351\351\377\370\364\360\366\377\372\366\357\377\374\370\354\377\375" + "\373\352\377\370\362\253\377\211\0\15\377m\0\7\377U\0\3\377\377\0\1\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\0\0\1\377\200\0\2\377\231" + "\0\5\377\376\376\347\377\376\375\350\377\375\373\351\377\374\371\353" + "\377\373\367\356\375\370\363\362\355\354\352\375\351\351\351\377\354" + "\353\350\377\374\364\346\377\377\365\346\377\377\365\346\377\377\365" + "\346\377\377\365\346\377\377\365\346\377\377\365\346\377\377\365\346" + "\377\377\365\346\377\377\365\346\377\377\365\346\377\377\365\346\377" + "\377\365\346\377\377\365\346\377\377\365\346\377\377\365\346\377\377" + "\365\346\377\377\365\346\377\377\365\346\377\376\365\346\377\361\355" + "\350\377\351\351\351\377\352\351\351\377\371\364\360\365\377\373\366" + "\357\377\374\371\354\377\375\373\352\377\376\375\350\377\376\376\347" + "\377m\0\7\377U\0\3\377\377\0\1\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\0\0\1\377\200\0\2\377\377\376\346" + "\377\376\376\347\335}\316\350\334z\313\351\345\231\326\360\344\222\321" + "\361\333u\301\362\314l\272\375\310g\270\377\311f\266\377\332n\264\377" + "\334n\263\377\334k\263\377\333i\262\377\333g\261\377\332f\260\377\332" + "d\257\377\331a\256\377\331_\255\377\330]\254\377\330\\\253\377\327Y\252" + "\377\327W\252\377\326U\252\377\326T\251\377\326T\251\377\326T\251\377" + "\325T\251\377\307L\253\377\300H\254\377\301H\254\377\316M\261\365\323" + "O\265\357\323N\267\354\322M\270\352\322M\272\350\377\376\376\347\377" + "\377\376\347\377U\0\3\377\377\0\1\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0" + "\0\1\377\377\377\346\377\377\376\346\337\210\323\350\370\345\365\372" + "\372\355\370\374\372\355\370\374\374\363\372\375\365\327\355\373\352" + "\302\343\376\355\315\350\377\373\364\372\377\343\222\307\377\334m\263" + "\377\334k\263\377\333i\262\377\333g\261\377\332e\260\377\332c\257\377" + "\331a\256\377\331_\255\377\330]\255\377\330[\254\377\327Y\253\377\327" + "W\252\377\326U\252\377\326S\251\377\325S\251\377\306K\253\377\300H\254" + "\377\301H\254\377\317N\260\365\323O\264\357\323N\266\354\322M\270\352" + "\322M\272\350\322M\272\347\377\377\376\347\377\377\377\346\377\377\0" + "\1\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\346\377\377\377\346\336\203\321\346\346\242\334\355\335\200\316\350" + "\334|\314\352\340\213\320\356\350\243\330\365\353\262\334\371\336\240" + "\323\376\314t\276\377\311g\270\377\331m\264\377\334n\263\377\334l\263" + "\377\333j\262\377\333g\261\377\332e\261\377\332d\260\377\331b\257\377" + "\331_\256\377\330]\255\377\330\\\254\377\327Z\253\377\327X\252\377\325" + "U\252\377\306K\253\377\300H\254\377\301H\254\377\320N\257\367\323O\263" + "\361\323N\266\355\322N\270\353\322M\271\351\322M\272\347\322M\273\347" + "\377\377\377\346\377\377\377\346\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\346\377\377\377\346\337" + "\205\322\346\336\203\321\347\346\240\334\355\344\232\327\355\335~\312" + "\354\335z\306\357\335x\302\363\333u\276\370\311l\272\377\310i\271\377" + "\316j\267\377\335p\264\377\335o\264\377\334l\263\377\334j\263\377\333" + "h\262\377\333f\261\377\332e\260\377\332b\257\377\331`\256\377\331^\255" + "\377\330\\\254\377\330Z\253\377\315S\253\377\301K\255\377\300I\254\377" + "\314M\255\373\324P\261\364\323O\263\360\323N\266\355\322M\270\352\322" + "M\272\350\322M\272\347\322M\273\346\377\377\377\346\377\377\377\346\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\346\377\377\377\346\341\220\326\347\370\346\366\372\373\357" + "\371\374\373\356\370\374\374\364\372\375\366\332\357\373\361\312\346" + "\372\356\320\351\377\373\365\372\377\332\222\313\377\334t\267\377\336" + "r\266\377\335p\265\377\335n\264\377\334l\263\377\334j\263\377\333h\262" + "\377\333f\261\377\332d\260\377\332b\257\377\331`\256\377\331^\255\377" + "\330[\254\377\330Z\254\377\311R\255\377\301L\255\377\301I\255\377\317" + "N\257\367\323O\263\361\323N\266\355\322N\270\353\322M\271\351\322M\272" + "\347\322M\273\347\377\377\377\346\377\377\377\346\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\0\0\1\377\377\377\346\377\377" + "\377\346\340\213\324\347\350\251\336\356\337\210\320\351\336\205\315" + "\353\343\222\321\360\350\251\331\366\343\261\333\376\334\243\324\377" + "\321}\301\377\335w\271\377\337w\270\377\336u\267\377\336s\266\377\335" + "p\265\377\335n\264\377\334m\263\377\334k\263\377\333h\262\377\333f\261" + "\377\332d\260\377\332c\260\377\331a\257\377\331^\256\377\330\\\255\377" + "\327[\254\377\311R\255\377\301L\255\377\301J\255\377\320N\261\365\323" + "O\264\357\323N\267\354\322M\270\352\322M\272\350\322M\272\347\377\377" + "\376\346\377\377\377\346\377\0\0\1\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0" + "\0\1\377\200\0\2\377\377\377\346\377\377\376\347\341\216\324\350\340" + "\214\322\351\341\211\317\353\340\210\315\355\337\204\311\361\317{\301" + "\375\313w\300\377\315w\276\377\336|\273\377\337z\272\377\337x\271\377" + "\337v\270\377\337t\267\377\336r\266\377\336p\265\377\335n\264\377\335" + "m\263\377\334j\263\377\334h\263\377\333f\262\377\333d\261\377\332b\260" + "\377\332`\257\377\331^\256\377\331\\\255\377\327Z\254\377\311R\255\377" + "\301M\255\377\301K\255\376\320O\261\364\323N\265\356\323N\267\354\322" + "M\271\351\322M\272\350\377\376\376\347\377\377\376\346\377\200\0\2\377" + "\0\0\1\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\0\0\1\377\377\0\1\377\200\0\4\377\377\376\347\377\376\375" + "\350\341\221\326\351\342\217\323\353\341\215\317\355\340\211\313\361" + "\321\200\303\374\314|\301\377\316{\277\377\336\200\275\377\340\177\274" + "\377\340}\273\377\337{\272\377\337y\271\377\337v\270\377\341~\274\377" + "\346\224\310\377\340z\273\377\335o\265\377\335m\264\377\334k\263\377" + "\334i\263\377\333g\262\377\333d\261\377\333f\262\377\341\177\276\377" + "\342\204\301\377\341}\275\377\336v\272\377\320k\271\377\310a\267\377" + "\304R\260\376\320O\263\363\323N\265\356\323N\267\353\322M\271\351\377" + "\376\375\350\377\376\376\347\377f\0\5\377\200\0\2\377\0\0\1\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\0\0\1\377\377\0\1\377\200\0\4\377" + "\200\0\10\377\376\375\350\377\375\374\351\343\223\325\353\342\222\322" + "\355\342\217\316\360\322\205\306\374\315\200\303\377\316\200\302\377" + "\337\205\276\377\341\203\275\377\341\201\275\377\340\177\274\377\346" + "\230\311\377\362\312\344\377\373\356\366\377\375\371\374\377\370\341" + "\360\377\374\364\371\377\367\334\355\377\355\261\327\377\346\225\310" + "\377\353\251\323\377\360\300\337\377\367\333\355\377\375\370\374\377" + "\371\345\362\377\366\333\354\377\367\337\357\377\371\344\361\377\371" + "\350\363\377\371\354\366\377\374\366\373\377\354\310\346\377\330j\276" + "\365\323N\265\356\323N\267\353\377\375\373\351\377\376\375\350\377\200" + "\0\12\377\200\0\4\377\200\0\2\377\0\0\1\377\377\377\0\0\0\0\1\377\377" + "\0\1\277\200\0\4\377\200\0\10\377\210\0\17\377\376\374\351\377\375\372" + "\353\346\236\327\356\343\224\320\360\325\213\310\373\316\205\305\377" + "\320\204\304\377\340\210\300\377\343\207\277\377\342\205\276\377\342" + "\203\276\377\341\201\275\377\352\247\322\377\356\267\332\377\345\221" + "\306\377\337z\273\377\337w\271\377\340w\271\377\344\225\311\377\354\275" + "\336\377\366\331\354\377\361\304\341\377\353\252\323\377\345\216\306" + "\377\335n\267\377\333e\262\377\332c\261\377\332a\260\377\331_\257\377" + "\331]\256\377\327[\255\377\313^\263\377\327\216\313\377\310\\\263\376" + "\321Q\263\363\323O\265\356\377\374\371\353\377\375\373\351\377\206\0" + "\23\377\216\0\11\377\200\0\4\377\200\0\2\377\0\0\1\377\377\0\1\377\252" + "\0\3\377\222\0\7\377\210\0\17\377\204\0\33\377\375\372\353\377\373\370" + "\355\351\255\333\363\326\217\312\373\317\211\307\377\321\211\306\377" + "\340\215\302\377\344\214\302\377\343\212\301\377\343\207\300\377\342" + "\206\277\377\342\204\276\377\341\202\275\377\341\177\275\377\340~\274" + "\377\342\205\300\377\347\232\313\377\335\177\277\377\313n\273\377\311" + "l\272\377\324o\267\377\336p\266\377\335m\265\377\335l\264\377\335m\264" + "\377\343\205\302\377\343\211\304\377\342\202\301\377\340|\275\377\337" + "v\272\377\335p\267\377\331a\260\377\307S\256\377\302P\256\377\303O\255" + "\376\322Q\263\362\377\373\367\356\377\374\371\353\377\207\0\40\377\200" + "\0\22\377\216\0\11\377\200\0\4\377\200\0\2\377\252\0\3\377\222\0\7\377" + "\222\0\16\366\204\0\33\377\202\0-\377\373\370\355\377\372\364\360\341" + "\257\330\374\321\220\312\377\321\214\311\377\341\220\305\377\345\220" + "\304\377\344\217\303\377\344\214\302\377\343\212\301\377\343\210\300" + "\377\342\207\277\377\350\236\313\377\363\315\344\377\373\357\367\377" + "\376\371\374\377\367\343\361\377\373\364\372\377\362\334\357\377\342" + "\261\333\377\330\225\315\377\346\253\326\377\361\303\340\377\367\335" + "\356\377\376\371\374\377\371\347\362\377\367\334\355\377\370\340\360" + "\377\371\345\362\377\372\351\364\377\373\356\366\377\375\367\373\377" + "\363\314\346\377\316l\273\377\302Q\257\377\304O\257\375\375\370\363\362" + "\377\373\367\356\377\207\0""3\377\204\0\37\377\207\0\21\377\200\0\10" + "\377\200\0\4\377\200\0\6\377\211\0\15\365\205\0\31\371\202\0+\373\203" + "\0D\377\372\365\360\361\357\354\372\333\252\326\377\326\234\317\377\342" + "\225\307\377\346\224\306\377\346\222\305\377\345\220\304\377\345\216" + "\303\377\344\214\302\377\344\212\301\377\343\210\300\377\354\254\323" + "\377\357\273\333\377\347\227\310\377\334\177\277\377\314w\300\377\313" + "w\300\377\334\230\317\375\355\302\342\375\361\331\355\377\351\304\344" + "\377\346\253\326\377\346\223\310\377\337u\270\377\335l\264\377\334j\263" + "\377\334h\263\377\333f\262\377\333d\262\377\332a\261\377\334j\265\377" + "\347\227\314\377\332i\264\377\306T\257\377\302Q\257\377\355\354\352\375" + "\375\370\363\361\374\203\0L\377\207\0""1\377\204\0\35\377\210\0\17\377" + "\222\0\7\377\200\0\12\377\206\0\25\370\203\0'\373\203\0@\377\205\0^\362" + "\357\355\372\351\351\351\377\335\254\326\377\350\253\323\377\347\231" + "\307\377\347\227\306\377\346\225\306\377\346\223\305\377\345\220\304" + "\377\345\217\303\377\344\215\302\377\344\213\301\377\343\210\301\377" + "\343\206\300\377\334\203\300\377\320\205\305\377\327\231\317\377\325" + "\203\306\373\336\200\305\364\336~\304\363\326x\300\370\311o\274\377\311" + "m\273\377\323o\270\377\337t\267\377\344\212\303\377\345\216\306\377\344" + "\211\303\377\342\202\300\377\341|\276\377\337u\272\377\334h\264\377\332" + "a\260\377\332_\257\377\327[\256\377\306T\257\377\351\351\351\377\355" + "\354\352\375\340w\5q\373\203\0H\377\202\0-\377\205\0\31\377\211\0\15" + "\357\200\0\20\377\204\0\37\372\206\0""7\374\205\0V_<\25\301\351\351\351" + "\377\352\351\351\377\353\273\333\377\357\274\333\377\347\230\307\377" + "\347\230\307\377\347\227\306\377\346\224\306\377\346\222\305\377\345" + "\220\305\377\345\216\304\377\344\215\303\377\352\242\316\377\361\317" + "\346\377\371\357\367\377\375\371\374\377\366\344\362\376\375\366\373" + "\376\370\342\362\373\356\274\342\367\347\243\326\365\350\261\333\372" + "\350\303\343\377\362\335\357\377\375\371\374\377\372\347\363\377\367" + "\335\356\377\370\342\360\377\371\346\362\377\372\352\364\377\373\356" + "\367\377\375\367\373\377\364\316\347\377\337w\273\377\332^\257\377\326" + "\\\256\377\354\352\350\377\351\351\351\377:*\31\343\341x\2g\373\203\0" + "@\377\203\0%\377\206\0\23\377\206\0\25\371\206\0*\373\205\0Gb=\24\263" + "\35\35\35\377\351\351\351\377\371\355\347\377\361\303\336\377\365\322" + "\347\377\350\234\311\377\347\230\307\377\347\230\307\377\347\227\307" + "\377\347\225\306\377\346\223\306\377\346\221\305\377\345\216\304\377" + "\350\257\327\377\344\274\337\377\326\227\316\377\326\206\306\372\341" + "\211\313\360\341\211\315\356\347\245\331\361\361\311\351\366\367\337" + "\362\372\362\315\352\371\350\263\335\372\327\224\315\377\314v\277\377" + "\322o\272\377\336q\267\377\336o\266\377\335m\265\377\335j\264\377\334" + "i\263\377\336q\270\377\350\234\315\377\336o\270\377\332`\261\377\332" + "_\260\377\374\356\346\377\353\352\351\377\35\35\35\377;+\31\335\360~" + "\0T\377\202\0""1\377\211\0\32\377\200\0\32\372\205\0""2\252_\14o\37\36" + "\35\375!\36\35\377\370\355\347\377\377\357\346\377\355\262\325\377\367" + "\333\353\377\362\310\341\377\351\241\314\377\350\236\312\377\352\246" + "\317\377\355\261\325\377\357\267\330\377\355\262\326\377\346\254\325" + "\377\332\244\324\377\330\237\321\377\336\237\321\372\346\236\324\362" + "\343\223\322\356\341\211\320\353\337\210\320\352\337\206\317\352\336" + "\203\316\352\337\201\314\354\336\200\311\357\331{\303\365\312q\275\377" + "\311o\274\377\321o\272\377\337r\267\377\336p\266\377\336m\265\377\335" + "k\265\377\335j\264\377\334h\263\377\334e\263\377\333c\262\377\333a\261" + "\377\377\357\346\377\374\356\346\3772\"\32\377\35\35\35\377lB\23\237" + "\377\204\0:\367\200\0\40\366\200\0\34\372\202\0""5[:\25\247\35\35\35" + "\377b.\24\377\377\356\346\377\377\356\346\377\350\232\311\377\357\273" + "\333\377\362\306\340\377\360\275\334\377\356\266\327\377\356\266\330" + "\377\357\270\331\377\357\272\332\377\352\271\333\377\341\267\335\377" + "\342\267\335\377\350\272\337\373\356\274\342\365\355\271\342\363\354" + "\267\343\361\350\253\337\356\343\227\330\352\337\211\322\350\337\206" + "\320\351\336\204\316\352\336\202\314\354\336\200\311\357\331{\304\365" + "\312r\275\376\311p\274\377\320p\273\377\336q\270\377\336o\267\377\336" + "m\266\377\335k\265\377\335i\264\377\334g\263\377\334e\263\377\333c\262" + "\377\377\356\346\377\377\356\346\377\234<\15\377\35\35\35\377:*\31\324" + "\373\204\0>\377\200\0\"\377\211\0\32\377\205\0""2\223R\15z\35\35\35\377" + "\40\36\35\377\367\354\347\377\377\356\346\377\377\356\346\377\377\356" + "\346\377\377\356\346\377\377\356\346\377\377\356\346\377\377\356\346" + "\377\377\356\346\377\366\354\347\377\351\351\351\377\351\351\351\377" + "\365\361\356\370\377\372\365\357\377\374\370\355\377\375\372\352\377" + "\376\374\351\377\376\375\350\377\376\376\347\377\376\376\347\377\376" + "\376\347\377\376\375\350\377\375\373\352\377\374\371\354\377\373\366" + "\356\372\366\361\364\352\352\351\376\351\351\351\377\360\352\350\377" + "\376\356\346\377\377\356\346\377\377\356\346\377\377\356\346\377\377" + "\356\346\377\377\356\346\377\377\356\346\377\377\356\346\377\373\355" + "\346\3770\"\33\377\35\35\35\377Y9\26\257\373\202\0;\377\200\0\40\363" + "\200\0\26\377\206\0*\373\203\0H_;\24\265\35\35\35\377\256\255\255\377" + "\367\354\347\377\377\355\346\377\377\355\346\377\377\355\346\377\377" + "\355\346\377\377\355\346\377\377\355\346\377\365\353\347\377\351\351" + "\351\377\351\351\351\377\365\362\356\370\377\372\365\357\377\374\370" + "\354\377\375\372\352\377\376\374\351\377\376\375\347\377\377\376\347" + "\377\377\377\346\377\377\377\346\377\377\376\347\377\376\376\347\377" + "\376\375\350\377\375\373\352\377\374\371\354\377\373\366\356\373\366" + "\361\364\353\352\351\376\351\351\351\377\357\352\350\377\376\355\346" + "\377\377\355\346\377\377\355\346\377\377\355\346\377\377\355\346\377" + "\377\355\346\377\373\355\346\377\264\256\253\377\35\35\35\377<+\30\334" + "\342x\3X\372\205\0""2\366\204\0\33\377\200\0\20\367\207\0\40\372\204" + "\0""8\374\205\0Ve\77\24\274\35\35\35\377\40\36\35\377\2559\12\377\376" + "I\0\377\376I\0\377\376I\0\377\376I\0\377\2173\16\377\35\35\35\377\36" + "\36\35\376}J\20\256\374\204\0]\373\205\0A\377\206\0*\365\200\0\32\377" + "\200\0\16\377\222\0\7\377\252\0\3\377\200\0\2\377\200\0\2\377U\0\3\377" + "\200\0\6\377\213\0\13\377\206\0\25\377\207\0$\373\206\0""9\371\203\0" + "T\271f\11\211*#\33\364\35\35\35\377X(\25\377\365G\1\377\376I\0\377\376" + "I\0\377\376I\0\377\331B\5\3770\40\32\377\35\35\35\377\77,\30\336\353" + "{\3e\373\203\0@\370\200\0&\377\206\0\23\377\200\0\12\377\206\0\25\370" + "\203\0'\373\206\0\77\374\204\0]g@\24\276\35\35\35\377\40\36\35\377\255" + "6\12\377\376E\0\377\376E\0\377\2100\17\377\35\35\35\377\37\36\35\376" + "\203L\17\251\377\204\0[\373\203\0@\371\200\0*\377\205\0\31\377\200\0" + "\16\377\222\0\7\377\252\0\3\377\377\0\1\377\0\0\1\377\0\0\1\377\377\0" + "\1\377\200\0\2\377\231\0\5\377\213\0\13\377\206\0\25\370\200\0$\372\204" + "\0""8\374\206\0R\300h\10\204,$\33\362\35\35\35\377S'\26\377\362B\1\377" + "\376E\0\377\332\77\5\3771\40\32\377\35\35\35\377@-\30\337\351z\2j\377" + "\207\0F\371\202\0-\377\205\0\31\353v\0\15\377\200\0\6\353\211\0\15\377" + "\212\0\30\371\206\0*\373\203\0B\374\205\0^f\77\24\275\35\35\35\377\40" + "\36\35\377\2372\14\377v+\22\377\35\35\35\377\37\36\34\375\211O\16\243" + "\374\204\0Y\377\204\0>\371\203\0)\377\212\0\30\377\211\0\15\377m\0\7" + "\377\252\0\3\377\377\0\1\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\0\0\1\377\200\0\2\377\231\0\5\377\213\0\13\363y\0\25\370" + "\203\0#\372\206\0""7\374\206\0P\303j\10\177.%\33\357\35\35\35\377J$\27" + "\377\2635\12\3772\40\32\377\35\35\35\377A.\30\335\352{\2k\374\205\0I" + "\377\210\0/\377\211\0\34\377\210\0\17\377\222\0\7\377U\0\3\377m\0\7\377" + "\200\0\16\365\200\0\32\377\206\0*\373\201\0A\377\204\0Yb=\25\271\35\35" + "\35\377\35\35\35\377\35\35\35\377\40\36\34\374\215Q\17\230\374\203\0" + "T\373\204\0<\377\203\0'\377\200\0\30\377\211\0\15\377m\0\7\377U\0\3\377" + "\377\0\1\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\0\0\1\377\200\0\2\377\231\0\5\377t\0\13" + "\362\200\0\24\370\207\0\"\372\202\0""5\374\203\0L\311k\7u/&\33\353\35" + "\35\35\377\35\35\35\377\35\35\35\377\77-\31\331\353}\3e\373\205\0G\372" + "\205\0""0\377\204\0\35\377\200\0\20\377\200\0\10\377\200\0\4\377\377" + "\0\1\377\252\0\3\377\222\0\7\377\200\0\16\377\205\0\31\377\206\0(\373" + "\206\0;\374\203\0NjA\23\2405(\33\335:*\31\325\251^\13v\377\205\0I\372" + "\202\0""7\370\203\0%\377\213\0\26\377v\0\15\377\200\0\6\377U\0\3\377" + "\377\0\1\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\1\377\200" + "\0\2\377\231\0\5\377\200\0\12\377\206\0\23\367\200\0\40\372\202\0""1" + "\373\203\0D\334v\5^R6\26\271,$\32\347N3\26\273\350{\3X\373\203\0@\371" + "\202\0-\377\211\0\34\377\217\0\20\377\200\0\10\377\200\0\4\377\200\0" + "\2\377\377\377\0\377\377\0\1\377\252\0\3\377\222\0\7\377\211\0\15\364" + "\205\0\27\370\203\0#\372\205\0""0\373\202\0;\373\205\0A\373\203\0@\372" + "\204\0""8\377\205\0,\367\200\0\40\377\200\0\24\377\200\0\14\377\200\0" + "\6\377U\0\3\377\377\0\1\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\0\0\1\377\200\0\2\377\231\0\5\377\216\0" + "\11\377\207\0\21\366\200\0\34\377\206\0(\372\202\0""5\373\204\0>\373" + "\205\0A\373\202\0=\372\202\0""3\377\206\0&\365\200\0\32\377\210\0\17" + "\377\200\0\10\377\200\0\4\377\200\0\2\377\0\0\1\377\377\377\0\377\377" + "\377\0\377\377\0\1\377\252\0\3\377\200\0\6\377\213\0\13\377\200\0\22" + "\365\200\0\32\377\207\0\40\370\207\0$\377\203\0#\377\210\0\36\377\205" + "\0\27\377\200\0\20\377\200\0\12\377\231\0\5\377U\0\3\377\377\0\1\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\0\0\1\377\200\0\2\377\200\0\4\377\200\0" + "\10\377\200\0\16\377\206\0\25\377\211\0\34\377\200\0\"\370\207\0$\377" + "\203\0!\366\200\0\34\377\200\0\24\377\211\0\15\377\222\0\7\377\200\0" + "\4\377\200\0\2\377\0\0\1\377\377\377\0"}; + + +/* GdkPixbuf RGBA C-Source image dump */ + +#ifdef __SUNPRO_C +#pragma align 4 (trayhilightpng) +#endif +#ifdef __GNUC__ +static const guint8 trayhilightpng[] __attribute__ ((__aligned__ (4))) = +#else +static const guint8 trayhilightpng[] = +#endif +{ "" + /* Pixbuf magic (0x47646b50) */ + "GdkP" + /* length: header (24) + pixel_data (9216) */ + "\0\0$\30" + /* pixdata_type (0x1010002) */ + "\1\1\0\2" + /* rowstride (192) */ + "\0\0\0\300" + /* width (48) */ + "\0\0\0""0" + /* height (48) */ + "\0\0\0""0" + /* pixel_data: */ + "\37\327d\0\37\327d\0\377\0\0\1\377\200\0\2\377f\0\5\377\216\0\11\357" + "\200\0\20\377\200\0\30\377\207\0\40\377\206\0&\377\206\0(\370\206\0&" + "\377\204\0\37\377\205\0\27\377\210\0\17\343q\0\11\377\200\0\4\377\200" + "\0\2\377\0\0\1\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327" + "d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\377\0\0\1\377\200\0\2\277" + "\200\0\4\377\222\0\7\377\211\0\15\363\206\0\25\377\204\0\35\377\207\0" + "$\377\206\0(\377\203\0'\370\207\0\"\377\200\0\32\361\200\0\22\350t\0" + "\13\377\200\0\6\377U\0\3\377\377\0\1\37\327d\0\37\327d\0\37\327d\0\377" + "\0\0\1\377\200\0\2\377\231\0\5\377\200\0\12\377\216\0\22\377\210\0\36" + "\377\205\0,\373\204\0:\373\203\0D\356~\3K\373\205\0C\373\202\0""9\371" + "\202\0+\377\204\0\35\361\200\0\22\377\200\0\12\377f\0\5\377\200\0\2\377" + "\360\360\20\377\375\375i\377\375\375\241\377\376\376\276\377\375\375" + "\333\377\375\375\333\377\376\376\276\377\375\375\241\377\375\375i\377" + "\360\360\20\377\200\0\2\377\200\0\4\377\200\0\10\377\210\0\17\365\200" + "\0\32\370\203\0'\372\202\0""5\377\207\0@\333v\3O\373\205\0E\373\202\0" + "=\372\205\0""0\370\200\0\"\377\206\0\25\377\200\0\14\377\200\0\6\377" + "U\0\3\377\377\0\1\37\327d\0\377\0\0\1\377\200\0\2\377\231\0\5\350t\0" + "\13\377\200\0\24\377\203\0!\377\207\0""3\377\203\0H\261c\13v5(\32\336" + "\37\36\35\375A.\31\317\272e\11o\377\203\0F\372\205\0""2\377\207\0\40" + "\377\206\0\23\377\322\245\32\377\372\371\210\377\375\374\334\377\375" + "\375\346\377\375\375\346\377\375\375\346\377\375\375\346\377\375\375" + "\346\377\375\375\346\377\375\375\346\377\375\375\346\377\375\375\334" + "\377\373\372\210\377\330\261\30\377\200\0\20\377\200\0\34\371\202\0-" + "\373\201\0A\346z\3[U7\26\270\37\36\34\373*#\33\354}J\20\224\374\204\0" + "M\373\202\0""9\370\206\0&\377\205\0\27\377\200\0\14\377\200\0\6\377U" + "\0\3\377\0\0\1\377\200\0\2\377\231\0\5\377\200\0\12\377\200\0\24\370" + "\203\0#\372\202\0""7\374\204\0O\266d\10\201(\"\33\363\35\35\35\377\35" + "\35\35\377\35\35\35\377)#\33\362\276f\10|\374\204\0M\372\202\0""5\377" + "\253S.\377\371\366\301\377\374\374\347\377\375\374\346\301\324\334\346" + "p\235\261\346Q\207\237\3464s\216\3464r\214\346P\204\233\346p\230\253" + "\346\301\322\331\346\377\375\374\346\377\374\374\347\377\372\367\300" + "\371\260Z*\372\202\0/\373\203\0F\355~\3d>,\30\333\35\35\35\377\35\35" + "\35\377\35\35\35\377\37\36\35\375\207N\20\237\374\202\0V\373\202\0=\377" + "\203\0'\377\205\0\27\377v\0\15\377\200\0\6\377U\0\3\377f\0\5\377\200" + "\0\12\362\200\0\24\377\207\0\"\377\202\0""7\377\204\0Q\274g\10\204)#" + "\33\364\35\35\35\377UM\25\377\326\274\4\377SL\26\377\35\35\35\377-$\33" + "\361\307k\6}\374\220\30U\377\363\351\305\377\373\371\351\335\346\352" + "\350G\205\237\347!j\212\346\40i\211\346\40g\207\346\40f\205\346\40e\203" + "\346\37c\201\346\37b\177\346\37a}\346Ez\221\347\335\344\347\347\377\373" + "\372\351\377\364\353\303\373\220\32N\362\201\2gD/\27\332\35\35\35\377" + "30\32\377\312\262\6\377\203t\17\377\35\35\35\377\40\36\35\375\213O\20" + "\244\374\204\0Y\373\204\0>\377\203\0'\377\205\0\27\377\200\0\14\377\200" + "\0\6\377\216\0\11\377\200\0\22\377\203\0!\372\202\0""7\374\203\0R\275" + "f\10\205*#\33\364\35\35\35\377UL\25\377\357\316\1\377\370\325\0\377\355" + "\314\1\377NG\27\377\35\35\35\377/%\33\357\347\270\205\251\377\371\365" + "\356\342\347\351\353;\177\232\351\"m\216\350!l\215\347!l\213\346\40i" + "\211\346\40h\210\346\40g\206\346\40e\204\346\37d\202\346\40b\177\347" + "\40a~\3479p\210\351\341\345\347\353\377\371\365\355\372\305\216\233J" + "2\30\327\35\35\35\377/,\33\377\325\270\5\377\370\325\0\377\370\325\0" + "\377\204s\17\377\35\35\35\377\40\36\35\375\213Q\17\245\377\204\0Y\377" + "\206\0=\370\203\0'\377\200\0\26\377\213\0\13\377\200\0\20\377\210\0\36" + "\372\204\0""4\374\204\0O\276f\10\204*#\33\364\35\35\35\377UK\25\377\357" + "\312\1\377\370\321\0\377\370\321\0\377\370\321\0\377\353\307\2\377H@" + "\27\377\35\35\35\377\255\247\242\367\375\366\361\362\205\255\274\356" + "<\177\233\355$o\220\351#n\217\350!m\215\347!l\213\346\40j\211\346\40" + "h\211\346!g\207\346!f\205\347\40d\202\347\"c\177\351#b}\352\203\243\256" + "\355\377\370\362\360\275\262\247\355\35\35\35\377+)\33\377\317\257\5" + "\377\370\321\0\377\370\321\0\377\370\321\0\377\370\321\0\377\204q\17" + "\377\35\35\35\377\40\36\35\375\213P\20\244\377\204\0W\373\202\0;\377" + "\203\0#\377\206\0\23\377\200\0\30\371\202\0-\374\205\0I\274f\10\200+" + "#\33\363\35\35\35\377UJ\25\377\357\306\1\377\370\315\0\377\370\315\0" + "\377\370\315\0\377\370\315\0\377\370\315\0\377\350\300\2\377C;\30\377" + "\324\322\322\377\355\352\350\375^\225\253\362\266\320\332\371\77\201" + "\236\355$p\222\351#o\220\350!m\216\347!l\215\346!k\212\346!i\211\347" + "\"h\206\347#f\204\351$e\201\352%e~\355L|\216\360\361\355\352\372\324" + "\322\322\377(&\33\377\312\250\6\377\370\315\0\377\370\315\0\377\370\315" + "\0\377\370\315\0\377\370\315\0\377\370\315\0\377\204o\17\377\35\35\35" + "\377\40\36\35\375\211O\20\241\377\204\0Q\372\204\0""4\377\204\0\35\377" + "\203\0!\377\206\0;\267d\11t*#\33\362\35\35\35\377UI\25\377\357\302\1" + "\377\370\311\0\377\370\311\0\377\370\311\0\377\370\311\0\377\370\311" + "\0\377\370\311\0\377\370\311\0\377\345\272\3\377\341\337\333\377\351" + "\347\347\377f\232\261\375\267\320\332\372h\235\263\362&s\223\353$q\222" + "\351#o\221\350\"n\217\347!l\215\347\"l\213\350#k\210\351$i\206\352&h" + "\202\355)f\177\360;q\206\372\351\347\347\377\336\335\333\377\305\241" + "\7\377\370\311\0\377\370\311\0\377\370\311\0\377\370\311\0\377\370\311" + "\0\377\370\311\0\377\370\311\0\377\370\311\0\377\204n\17\377\35\35\35" + "\377\37\36\35\375\203L\21\231\373\203\0D\377\203\0'\371\206\0(\373\203" + "\0F,$\33\352\35\35\35\377UH\25\377\360\276\1\377\371\305\0\377\371\305" + "\0\377\371\305\0\377\371\305\0\377\371\305\0\377\371\305\0\377\371\305" + "\0\377\371\305\0\377\371\305\0\377\366\346\262\377\354\351\346\377z\246" + "\272\377\262\315\330\376\212\264\304\367(u\223\355&t\223\353$q\221\351" + "#p\222\350#n\220\350#m\215\351$l\212\352&k\207\355)j\204\360%d~\371W" + "\204\230\377\351\347\347\377\354\337\263\377\371\305\0\377\371\305\0" + "\377\371\305\0\377\371\305\0\377\371\305\0\377\371\305\0\377\371\305" + "\0\377\371\305\0\377\371\305\0\377\371\305\0\377\204l\17\377\35\35\35" + "\377\37\36\35\375\263b\12g\377\210\0/\371\202\0+\273f\10^\35\35\35\377" + "\40\37\35\377\351\266\2\377\371\302\0\377\371\302\0\377\371\302\0\377" + "\371\302\0\377\371\302\0\377\371\302\0\377\371\302\0\377\371\302\0\377" + "\371\302\0\377\371\302\0\377\374\342\213\377\374\365\344\377\216\263" + "\303\377\261\315\331\377\222\270\311\375*v\224\361(u\224\355&t\223\353" + "%r\222\352%p\221\352&o\216\353&m\213\355)m\210\357%h\203\371\40b\177" + "\377y\234\255\377\370\362\345\377\374\343\214\377\371\302\0\377\371\302" + "\0\377\371\302\0\377\371\302\0\377\371\302\0\377\371\302\0\377\371\302" + "\0\377\371\302\0\377\371\302\0\377\371\302\0\377\371\302\0\377NB\27\377" + "\35\35\35\377h@\24\231\372\202\0""3\377\206\0(\361\200\0I/%\33\346\35" + "\35\35\377t]\22\377\370\275\0\377\371\276\0\377\371\276\0\377\371\276" + "\0\377\371\276\0\377\371\276\0\377\371\276\0\377\371\276\0\377\371\276" + "\0\377\371\276\0\377\373\327e\377\376\367\344\377\256\310\306\377\253" + "\311\326\377\235\300\317\377%r\223\374+v\225\361)v\225\356'u\224\355" + "'s\222\354(r\217\356*p\214\360'k\207\370\40e\203\377\40d\201\377\251" + "\276\276\377\376\367\344\377\373\327e\377\371\276\0\377\371\276\0\377" + "\371\276\0\377\371\276\0\377\371\276\0\377\371\276\0\377\371\276\0\377" + "\371\276\0\377\371\276\0\377\371\276\0\377\263\213\11\377\40\37\35\377" + "\37\36\34\374\256`\12j\377\205\0""0\370\207\0\"\377\204\0<\232W\16\203" + "\"\40\35\372\35\35\35\377nW\22\377\366\270\0\377\371\272\0\377\371\272" + "\0\377\371\272\0\377\371\272\0\377\371\272\0\377\371\272\0\377\371\272" + "\0\377\371\272\0\377\372\312>\377\376\366\344\377\322\334\322\377\217" + "\271\304\377\253\312\327\377\"q\224\377&r\223\373-w\226\362*v\225\360" + "*u\223\360+t\220\361(n\213\370!h\210\377!g\206\377.o\202\377\321\330" + "\316\377\376\366\344\377\372\312>\377\371\272\0\377\371\272\0\377\371" + "\272\0\377\371\272\0\377\371\272\0\377\371\272\0\377\371\272\0\377\371" + "\272\0\377\371\272\0\377\254\203\12\377!\40\35\377\35\35\35\377a<\24" + "\262\373\203\0F\371\203\0)\377\205\0\31\371\205\0.\374\205\0K\237Y\15" + "\217$\40\34\371\35\35\35\377fP\23\377\365\263\1\377\371\266\0\377\371" + "\266\0\377\371\266\0\377\371\266\0\377\371\266\0\377\371\266\0\377\371" + "\266\0\377\372\275\30\377\376\366\344\377\362\360\340\377l\245\263\377" + "\267\322\332\377*x\231\377\"q\224\377's\223\373.w\225\364-v\223\364)" + "r\217\371!k\214\377!j\212\377.r\206\3776v\204\377\362\356\336\377\376" + "\366\344\377\372\275\31\377\371\266\0\377\371\266\0\377\371\266\0\377" + "\371\266\0\377\371\266\0\377\371\266\0\377\371\266\0\377\371\266\0\377" + "\244{\13\377\37\36\35\377\35\35\35\377e>\23\272\374\204\0U\372\204\0" + "6\367\204\0\37\360x\0\21\367\200\0\40\372\204\0""6\374\203\0R\251^\13" + "\217&!\34\370\35\35\35\377_J\24\377\363\256\1\377\371\262\0\377\371\262" + "\0\377\371\262\0\377\371\262\0\377\371\262\0\377\371\262\0\377\371\262" + "\0\377\376\362\327\377\376\365\344\377\\\232\251\377\270\324\333\377" + "E\213\240\377#t\227\377\"r\225\377(t\223\374,u\223\372!n\220\377!m\216" + "\377-t\212\3776y\207\377K\205\220\377\376\365\344\377\376\362\327\377" + "\371\262\0\377\371\262\0\377\371\262\0\377\371\262\0\377\371\262\0\377" + "\371\262\0\377\371\262\0\377\371\262\0\377\235s\14\377\36\36\35\377\35" + "\35\35\377nB\22\270\374\204\0[\373\204\0>\370\206\0&\377\214\0\24\377" + "\200\0\12\377\206\0\23\370\203\0#\373\202\0""9\374\203\0T\260`\11\215" + "(\"\34\366\35\35\35\377ZE\25\377\361\250\1\377\372\256\0\377\372\256" + "\0\377\372\256\0\377\372\256\0\377\372\256\0\377\372\256\0\377\376\345" + "\261\377\377\365\344\377o\244\257\377\252\313\324\377V\227\250\3772\177" + "\230\377#t\230\377\"r\226\377\"q\224\377\"p\222\377-u\217\3777{\214\377" + "7z\212\377n\232\241\377\377\365\344\377\376\345\261\377\372\256\0\377" + "\372\256\0\377\372\256\0\377\372\256\0\377\372\256\0\377\372\256\0\377" + "\372\256\0\377\225l\15\377\35\35\35\377\36\35\35\377tE\21\265\374\204" + "\0]\377\203\0@\377\203\0)\364\200\0\30\377\200\0\14\377f\0\5\377t\0\13" + "\363\206\0\25\370\200\0$\373\202\0""9\374\204\0S\271f\11\211*#\33\364" + "\35\35\35\377S\77\26\377\356\242\1\377\372\252\0\377\372\252\0\377\372" + "\252\0\377\372\252\0\377\372\252\0\377\375\330\214\377\377\365\344\377" + "\220\271\275\377\214\271\306\377c\237\257\3779\204\230\3771\200\230\377" + "\"t\231\377\"s\227\377-y\223\3778~\220\3778}\217\3777{\215\377\217\261" + "\263\377\377\365\344\377\375\330\213\377\372\252\0\377\372\252\0\377" + "\372\252\0\377\372\252\0\377\372\252\0\377\372\252\0\377\214d\16\377" + "\35\35\35\377\36\36\35\376|I\20\257\374\204\0]\373\205\0A\371\206\0*" + "\377\205\0\31\377\211\0\15\377\200\0\6\377\200\0\2\377\231\0\5\377\213" + "\0\13\363\206\0\25\370\200\0$\372\204\0""8\374\206\0R\276g\10\205-%\33" + "\362\35\35\35\377M;\27\377\354\236\2\377\372\246\0\377\372\246\0\377" + "\372\246\0\377\372\246\0\377\374\311e\377\377\364\344\377\261\313\312" + "\377v\254\274\377p\250\270\3779\205\233\3779\204\231\3771\177\231\377" + ",{\227\3778\200\224\3778\177\222\3778~\221\3778|\217\377\261\305\303" + "\377\377\364\344\377\374\311e\377\372\246\0\377\372\246\0\377\372\246" + "\0\377\372\246\0\377\372\246\0\377\204\\\17\377\35\35\35\377\37\36\35" + "\376\203K\17\253\374\202\0\\\377\203\0@\371\206\0*\377\205\0\31\377\200" + "\0\16\377m\0\7\377\252\0\3\377\0\0\1\377\200\0\2\377\231\0\5\377\213" + "\0\13\363y\0\25\370\203\0#\377\206\0""7\374\204\0Q\310k\10\201/%\33\360" + "\35\35\35\377G6\27\377\350\227\2\377\372\242\0\377\372\242\0\377\372" + "\242\0\377\373\270>\377\377\364\344\377\323\334\325\377q\253\274\377" + "|\260\300\3779\207\236\3779\206\234\3779\204\232\3778\203\230\3778\202" + "\227\3778\201\225\3778\200\223\3778~\221\377\323\331\321\377\377\364" + "\344\377\373\270>\377\372\242\0\377\372\242\0\377\372\242\0\377\371\241" + "\0\377|V\20\377\35\35\35\377\37\36\34\375\212P\17\246\374\204\0[\377" + "\206\0\77\377\203\0)\365\205\0\31\377\211\0\15\377m\0\7\377\252\0\3\377" + "\377\0\1\37\327d\0\377\0\0\1\377\200\0\2\377\231\0\5\377t\0\13\377\200" + "\0\24\377\207\0\"\377\204\0""6\374\203\0P\316o\6}1&\32\355\35\35\35\377" + "B3\30\377\345\222\3\377\372\236\0\377\372\236\0\377\372\250\31\377\377" + "\363\344\377\363\355\341\377n\252\274\377\207\267\306\3779\210\240\377" + "9\206\236\3779\205\235\3779\204\233\3779\202\231\3778\202\230\3778\201" + "\226\3778\177\224\377\363\354\340\377\377\363\344\377\372\247\30\377" + "\372\236\0\377\372\236\0\377\370\235\0\377uQ\22\377\35\35\35\377\40\37" + "\34\374\222S\16\241\374\202\0Z\377\204\0>\377\206\0(\377\200\0\30\377" + "\211\0\15\377m\0\7\377U\0\3\377\377\0\1\37\327d\0\37\327d\0\37\327d\0" + "\377\0\0\1\377\200\0\2\377\231\0\5\377\200\0\12\377\206\0\23\370\200" + "\0\"\372\204\0""6\374\204\0O\326r\6z6(\32\352\35\35\35\377=/\31\377\341" + "\213\3\377\372\232\0\377\372\232\0\377\376\363\343\377\377\363\344\377" + "m\252\275\377\205\270\307\3779\212\242\3779\210\241\3779\207\237\377" + "9\206\235\3779\204\233\3779\203\232\3778\202\230\3779\202\230\377\377" + "\363\344\377\376\363\343\377\372\232\0\377\372\232\0\377\367\230\0\377" + "mK\23\377\35\35\35\377\"\37\34\373\230V\15\235\374\204\0Y\377\206\0=" + "\371\200\0(\377\205\0\27\377v\0\15\377m\0\7\377U\0\3\377\377\0\1\37\327" + "d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\377\0\0\1\377\200\0\2\377" + "\231\0\5\377\200\0\12\377\206\0\23\377\203\0!\377\207\0""5\374\203\0" + "P\333t\4x9*\31\350\35\35\35\3778,\31\377\336\207\4\377\373\227\0\377" + "\377\361\337\377\377\363\344\377n\254\277\377\200\265\306\3779\213\245" + "\3779\212\243\3779\211\241\3779\210\240\3779\206\236\3779\205\234\377" + "9\203\232\377>\205\232\377\377\363\344\377\377\361\337\377\373\227\0" + "\377\367\225\1\377fE\23\377\35\35\35\377$\40\35\372\240Y\14\233\374\204" + "\0Y\373\206\0=\377\203\0'\377\205\0\27\377\200\0\14\377\200\0\6\377U" + "\0\3\377\377\0\1\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37" + "\327d\0\37\327d\0\377\0\0\1\377\200\0\2\377f\0\5\377\200\0\12\377\206" + "\0\23\370\207\0\"\372\204\0""8\374\203\0T\345z\4}\77,\30\347\35\35\35" + "\3774)\32\377\331\201\4\377\376\356\332\377\377\362\344\377V\236\266" + "\377\\\241\270\3779\214\247\3779\212\246\3779\212\244\3779\211\242\377" + "9\207\241\3779\206\237\3779\204\235\377B\211\237\377\377\362\344\377" + "\376\356\332\377\365\220\1\377_@\24\377\35\35\35\377%!\34\372\252^\12" + "\235\374\205\0^\373\203\0@\377\206\0(\377\205\0\27\377v\0\15\377\200" + "\0\6\377U\0\3\377\377\0\1\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37" + "\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\377\0\0\1\377\200\0\2" + "\377\231\0\5\377\213\0\13\377\213\0\26\371\206\0(\377\205\0A\372\203" + "\0c\353{\2\215G0\27\352\35\35\35\3770'\32\377\370\351\327\377\377\362" + "\344\377G\226\261\3779\217\253\3779\216\252\3779\214\250\3779\213\246" + "\3779\212\244\3779\211\242\3779\210\241\3779\206\240\377F\214\242\377" + "\377\362\344\377\375\353\326\377X;\25\377\35\35\35\377)\"\34\372\271" + "f\11\251\375\204\0n\377\205\0K\377\210\0/\377\204\0\33\377\200\0\16\377" + "m\0\7\377U\0\3\377\377\0\1\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37" + "\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\377" + "\377\0\1\277\200\0\4\377\216\0\11\377\200\0\22\370\203\0#\373\202\0;" + "\374\202\0\\\375\203\0\202\327s\6\263!\37\34\376\35\35\35\377\343\334" + "\324\377\377\362\344\377L\233\264\3779\221\256\3779\220\254\3779\216" + "\252\3779\215\251\3779\213\247\3779\212\245\3779\212\243\3779\210\241" + "\377K\221\246\377\377\362\344\377\356\341\323\377\35\35\35\377\35\35" + "\35\377\216Q\17\323\373\205\0\216\375\206\0g\377\203\0D\377\203\0)\377" + "\213\0\26\377\213\0\13\377f\0\5\377\200\0\2\377\0\0\1\37\327d\0\37\327" + "d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327" + "d\0\37\327d\0\377\0\0\1\377\200\0\2\377f\0\5\377\213\0\13\363\200\0\26" + "\377\203\0'\373\201\0A\374\205\0b\337w\4\221:*\31\361\35\35\35\377I2" + "\27\377\373\336\277\377\377\361\344\377^\245\275\377:\222\261\3779\221" + "\257\3779\217\255\3779\216\253\3779\214\252\3779\213\250\3779\212\246" + "\3779\211\244\377^\234\257\377\377\361\344\377\376\340\277\377uG\22\377" + "\35\35\35\377%!\34\374\262a\12\254\375\205\0m\374\203\0J\377\205\0.\377" + "\211\0\32\377\211\0\15\377\200\0\6\377U\0\3\377\0\0\1\37\327d\0\37\327" + "d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327" + "d\0\377\0\0\1\377\200\0\2\377\200\0\4\377\216\0\11\377\200\0\22\377\207" + "\0\40\372\204\0""6\374\206\0R\341w\4}9*\31\353\35\35\35\377D/\30\377" + "\353|\2\377\376\321\241\377\377\361\344\377z\262\304\377:\223\263\377" + ":\222\261\3779\221\257\3779\220\255\3779\216\253\3779\215\252\3779\214" + "\251\3779\212\247\377y\253\271\377\377\361\344\377\376\321\241\377\371" + "\202\0\377nB\23\377\35\35\35\377%!\34\372\261b\12\231\374\202\0\\\377" + "\206\0=\370\206\0&\377\206\0\25\377t\0\13\377\231\0\5\377\200\0\2\377" + "\0\0\1\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37" + "\327d\0\377\0\0\1\377\200\0\2\377\200\0\4\377\200\0\10\360\207\0\21\377" + "\210\0\36\372\205\0""2\374\206\0L\345x\2s<,\32\346\35\35\35\377@,\30" + "\377\351w\3\377\374\177\0\377\376\300\202\377\377\360\344\377\225\277" + "\314\377:\224\265\377:\222\263\377:\221\262\377:\221\260\3779\217\256" + "\3779\216\254\3779\214\252\3779\213\251\377\224\271\303\377\377\360\344" + "\377\376\300\202\377\374\177\0\377\371~\0\377g=\23\377\35\35\35\377'" + "\"\34\370\263b\11\217\374\204\0U\373\206\0""9\377\203\0#\377\200\0\24" + "\377\200\0\12\377f\0\5\377\200\0\2\377\0\0\1\37\327d\0\37\327d\0\37\327" + "d\0\37\327d\0\37\327d\0\377\0\0\1\377\377\0\1\377\200\0\4\377\200\0\10" + "\377\200\0\20\377\204\0\35\372\202\0""1\374\203\0J\353{\2n\77-\31\342" + "\35\35\35\377;)\31\377\344q\3\377\374{\0\377\374{\0\377\375\256c\377" + "\377\360\344\377\260\314\323\377`\252\306\377:\224\266\377:\223\264\377" + ":\222\263\377:\221\261\3779\220\257\3779\216\255\3779\215\253\377\260" + "\310\315\377\377\360\344\377\375\256c\377\374{\0\377\374{\0\377\370z" + "\1\377`9\24\377\35\35\35\377(\"\33\366\274g\11\210\371\204\0S\377\206" + "\0""7\377\207\0\"\362\200\0\24\377\200\0\12\377f\0\5\377\200\0\2\377" + "\0\0\1\37\327d\0\37\327d\0\37\327d\0\377\0\0\1\377\377\0\1\377\200\0" + "\4\377\200\0\10\377\200\0\20\366\204\0\35\372\205\0""0\374\205\0I\357" + "}\2kB.\30\336\35\35\35\3778(\32\377\341m\4\377\374w\0\377\374w\0\377" + "\374w\0\377\375\233D\377\377\360\344\377\316\333\332\377\206\300\325" + "\377>\230\271\377:\225\267\377:\223\265\377:\222\263\377:\221\262\377" + ":\220\260\3779\217\256\377\315\330\327\377\377\360\344\377\375\233D\377" + "\374w\0\377\374w\0\377\374w\0\377\366u\1\377Z6\25\377\35\35\35\377*#" + "\33\364\301i\10\204\374\204\0Q\377\204\0""6\370\200\0\"\377\206\0\23" + "\377\200\0\12\377\200\0\4\377\200\0\2\377\0\0\1\37\327d\0\0\0\0\1\377" + "\377\0\1\277\200\0\4\377\200\0\10\377\210\0\17\377\211\0\34\372\202\0" + "/\373\203\0H\363\201\2iF0\27\333\35\35\35\3772%\32\377\334g\4\377\374" + "s\0\377\374s\0\377\374s\0\377\374s\0\377\374{\16\377\377\355\337\377" + "\373\355\343\377b\255\310\377r\265\316\377:\226\271\3776\223\267\377" + "2\220\266\377:\222\263\377:\220\263\377H\226\264\377\373\355\343\377" + "\377\355\337\377\374{\16\377\374s\0\377\374s\0\377\374s\0\377\374s\0" + "\377\364p\1\377T2\26\377\35\35\35\377-%\33\362\310l\6\200\374\203\0P" + "\372\204\0""6\377\203\0!\377\206\0\23\377\216\0\11\377\200\0\4\377\200" + "\0\2\377\0\0\1\377\377\0\1\377\252\0\3\377\222\0\7\377\210\0\17\377\204" + "\0\33\377\205\0.\373\205\0G\365\177\0gJ1\27\327\35\35\35\377/$\33\377" + "\330c\5\377\374p\0\377\374p\0\377\374p\0\377\374p\0\377\374p\0\377\374" + "p\0\377\376\311\237\377\377\357\344\377\225\301\320\377\213\303\330\377" + "\77\232\300\377&\217\275\377$\215\273\3770\221\267\377:\222\264\377\224" + "\274\311\377\377\357\344\377\376\311\237\377\374p\0\377\374p\0\377\374" + "p\0\377\374p\0\377\374p\0\377\374p\0\377\361l\1\377N0\27\377\35\35\35" + "\377/%\33\360\316o\6}\374\204\0O\372\202\0""5\377\207\0\40\377\200\0" + "\22\377\216\0\11\377\200\0\4\377\200\0\2\377\252\0\3\377\222\0\7\377" + "\222\0\16\366\204\0\33\377\202\0-\373\203\0F\367\202\0eP5\27\323\35\35" + "\35\377+\"\33\377\323]\5\377\374l\0\377\374l\0\377\374l\0\377\374l\0" + "\377\374l\0\377\374l\0\377\374l\0\377\375\220\77\377\377\357\344\377" + "\367\354\342\377a\255\314\377\214\305\336\377:\233\306\377$\217\276\377" + "$\216\274\377K\235\276\377\367\353\341\377\377\357\344\377\375\220\77" + "\377\374l\0\377\374l\0\377\374l\0\377\374l\0\377\374l\0\377\374l\0\377" + "\374l\0\377\357h\2\377H,\27\377\35\35\35\3771&\32\355\323r\6z\374\203" + "\0N\377\207\0""3\377\204\0\37\377\207\0\21\377\200\0\10\377\200\0\4\377" + "\200\0\6\377\211\0\15\365\205\0\31\371\202\0+\373\203\0D\371\204\0cU" + "7\26\316\35\35\35\377(\40\33\377\316X\6\377\375h\0\377\375h\0\377\375" + "h\0\377\375h\0\377\375h\0\377\375h\0\377\375h\0\377\375h\0\377\375h\0" + "\377\376\300\226\377\372\354\345\377\334\341\344\377z\270\324\377}\276" + "\331\375o\267\323\373r\262\317\377\333\340\344\377\364\352\345\377\376" + "\300\226\377\375h\0\377\375h\0\377\375h\0\377\375h\0\377\375h\0\377\375" + "h\0\377\375h\0\377\375h\0\377\375h\0\377\354b\2\377D*\30\377\35\35\35" + "\3775(\32\352\333u\4u\374\203\0L\377\207\0""1\377\204\0\35\377\210\0" + "\17\377\222\0\7\377\200\0\12\377\206\0\25\370\203\0'\373\203\0@\377\205" + "\0^[9\26\311\35\35\35\377'\40\34\377\311T\7\377\375d\0\377\375d\0\377" + "\375d\0\377\375d\0\377\375d\0\377\375d\0\377\375d\0\377\375d\0\377\375" + "d\0\377\375d\0\377\305[\26\377\262\257\256\377\351\347\347\377\361\354" + "\351\373\377\366\357\364\377\366\357\363\367\360\354\370\351\347\347" + "\377\257\256\256\377\215I\34\377\375d\0\377\375d\0\377\375d\0\377\375" + "d\0\377\375d\0\377\375d\0\377\375d\0\377\375d\0\377\375d\0\377\375d\0" + "\377\351^\3\377@(\31\377\35\35\35\3777)\31\350\340w\5q\373\203\0H\377" + "\202\0-\377\205\0\31\377\211\0\15\357\200\0\20\377\204\0\37\372\206\0" + "7\374\205\0V_<\25\301\35\35\35\377$\37\34\377\304O\10\377\375`\0\377" + "\375`\0\377\375`\0\377\375`\0\377\375`\0\377\375`\0\377\375`\0\377\375" + "`\0\377\375`\0\377\375`\0\377\274M\11\377;75\377\204\203\203\377\335" + "\326\316\364\377\370\363\363\377\373\372\373\377\373\372\373\377\371" + "\363\362\355\340\324\352\206\204\203\376666\377~:\20\377\375`\0\377\375" + "`\0\377\375`\0\377\375`\0\377\375`\0\377\375`\0\377\375`\0\377\375`\0" + "\377\375`\0\377\375`\0\377\345Y\3\377;&\31\377\35\35\35\377:*\31\343" + "\341x\2g\373\203\0@\377\203\0%\377\206\0\23\377\206\0\25\371\206\0*\373" + "\205\0Gb=\24\263\35\35\35\377\"\36\34\377\275J\10\377\375\\\0\377\375" + "\\\0\377\375\\\0\377\375\\\0\377\375\\\0\377\375\\\0\377\375\\\0\377" + "\375\\\0\377\375\\\0\377\375\\\0\377\300d0\377\254\252\251\377\347\345" + "\345\377\362\356\352\372\377\370\362\360\377\371\365\356\377\371\366" + "\354\377\372\366\354\377\371\365\355\377\370\363\357\370\362\356\366" + "\350\346\345\377\253\252\252\377\214V6\377\374\\\0\377\375\\\0\377\375" + "\\\0\377\375\\\0\377\375\\\0\377\375\\\0\377\375\\\0\377\375\\\0\377" + "\375\\\0\377\375\\\0\377\341T\4\3777$\32\377\35\35\35\377;+\31\335\360" + "~\0T\377\202\0""1\377\211\0\32\377\200\0\32\372\205\0""2\252_\14o\37" + "\36\35\375!\36\35\377\267E\11\377\375X\0\377\375X\0\377\375X\0\377\375" + "X\0\377\375X\0\377\375X\0\377\375X\0\377\375X\0\377\375X\0\377\375X\0" + "\377\300l@\377\336\334\334\377\351\347\347\377\355\353\352\371\262\333" + "\353\360o\302\345\355Q\270\344\3537\255\341\3527\254\340\352Q\266\341" + "\352n\277\340\354\262\330\350\357\363\357\355\365\352\350\347\377\335" + "\334\334\377\217`F\377\373W\0\377\375X\0\377\375X\0\377\375X\0\377\375" + "X\0\377\375X\0\377\375X\0\377\375X\0\377\375X\0\377\375X\0\377\334O\4" + "\3772\"\32\377\35\35\35\377lB\23\237\377\204\0:\367\200\0\40\366\200" + "\0\34\372\202\0""5[:\25\247\35\35\35\377b.\24\377\375T\0\377\375T\0\377" + "\375T\0\377\375T\0\377\375T\0\377\375T\0\377\375T\0\377\375T\0\377\375" + "T\0\377\375T\0\377\265]1\377\343\341\341\377\351\347\347\377\260\327" + "\346\371\77\262\342\357.\255\342\355+\254\342\352)\253\343\351)\252\343" + "\350)\251\341\350)\250\340\351*\250\334\352,\247\331\354=\252\327\357" + "\265\330\344\365\352\350\347\376\343\341\341\377\201P8\377\371S\0\377" + "\375T\0\377\375T\0\377\375T\0\377\375T\0\377\375T\0\377\375T\0\377\375" + "T\0\377\375T\0\377\375T\0\377\234<\15\377\35\35\35\377:*\31\324\373\204" + "\0>\377\200\0\"\377\211\0\32\377\205\0""2\223R\15z\35\35\35\377\40\36" + "\35\377\255=\12\377\376P\0\377\376P\0\377\376P\0\377\376P\0\377\376P" + "\0\377\376P\0\377\376P\0\377\376P\0\377\237:\14\377\216\215\215\377\351" + "\347\347\377\264\331\347\3702\255\340\357.\255\342\355,\255\345\352*" + "\256\346\351(\255\346\350(\254\346\347(\253\345\347(\251\343\347)\250" + "\340\350*\250\335\352,\246\332\3540\246\326\356\270\331\345\364\352\350" + "\347\376\216\215\215\377e-\24\377\371O\1\377\376P\0\377\376P\0\377\376" + "P\0\377\376P\0\377\376P\0\377\376P\0\377\376P\0\377\327G\5\3770\"\33" + "\377\35\35\35\377Y9\26\257\373\202\0;\377\200\0\40\363\200\0\26\377\206" + "\0*\373\203\0H_;\24\265\35\35\35\377\40\36\35\377\255;\12\377\376L\0" + "\377\376L\0\377\376L\0\377\376L\0\377\376L\0\377\376L\0\377\2276\15\377" + "\35\35\35\377\315\313\313\377\365\360\354\370v\307\351\361j\304\352\361" + ",\255\345\352*\256\346\351)\256\347\347)\256\350\347(\256\350\346'\255" + "\346\346'\254\345\347(\253\344\347)\251\341\350*\250\337\352,\250\333" + "\354Z\267\335\356\373\364\357\364\320\316\315\375\35\35\35\377_+\25\377" + "\367K\1\377\376L\0\377\376L\0\377\376L\0\377\376L\0\377\376L\0\377\330" + "D\5\3770\40\32\377\35\35\35\377<+\30\334\342x\3X\372\205\0""2\366\204" + "\0\33\377\200\0\20\367\207\0\40\372\204\0""8\374\205\0Ve\77\24\274\35" + "\35\35\377\40\36\35\377\2559\12\377\376I\0\377\376I\0\377\376I\0\377" + "\376I\0\377\2173\16\377\35\35\35\377\36\36\35\376\352\340\327\355\377" + "\370\363\357\205\316\356\361\225\326\362\364*\256\346\351)\256\347\347" + ")\256\350\347(\256\351\346(\256\351\346(\256\351\346'\255\347\346'\254" + "\346\347(\253\344\347)\251\342\350*\250\337\352X\271\341\354\377\371" + "\364\356\366\351\335\345*#\33\364\35\35\35\377X(\25\377\365G\1\377\376" + "I\0\377\376I\0\377\376I\0\377\331B\5\3770\40\32\377\35\35\35\377\77," + "\30\336\353{\3e\373\203\0@\370\200\0&\377\206\0\23\377\200\0\12\377\206" + "\0\25\370\203\0'\373\206\0\77\374\204\0]g@\24\276\35\35\35\377\40\36" + "\35\377\2556\12\377\376E\0\377\376E\0\377\2100\17\377\35\35\35\377\37" + "\36\35\376\203L\17\251\377\335\272\255\377\372\366\354\272\343\363\352" + "\224\327\362\363l\307\356\356)\256\350\347(\256\351\346(\256\351\346" + "(\256\351\346(\256\351\346(\256\351\346(\256\351\346'\255\346\346(\254" + "\344\347+\254\343\350\272\341\361\352\377\372\367\353\376\340\277\250" + "\300h\10\204,$\33\362\35\35\35\377S'\26\377\362B\1\377\376E\0\377\332" + "\77\5\3771\40\32\377\35\35\35\377@-\30\337\351z\2j\377\207\0F\371\202" + "\0-\377\205\0\31\353v\0\15\377\200\0\6\353\211\0\15\377\212\0\30\371" + "\206\0*\373\203\0B\374\205\0^f\77\24\275\35\35\35\377\40\36\35\377\237" + "2\14\377v+\22\377\35\35\35\377\37\36\34\375\211O\16\243\374\204\0Y\377" + "\271o\\\377\372\367\344\377\374\372\350\272\344\366\350\201\317\362\357" + "\231\330\365\362\200\317\362\360Y\301\356\3534\263\352\347(\256\351\346" + "(\256\351\346(\256\351\346(\256\351\3467\262\351\346\266\342\365\347" + "\377\374\373\350\377\372\370\343\374\276vV\374\206\0P\303j\10\177.%\33" + "\357\35\35\35\377J$\27\377\2635\12\3772\40\32\377\35\35\35\377A.\30\335" + "\352{\2k\374\205\0I\377\210\0/\377\211\0\34\377\210\0\17\377\222\0\7" + "\377U\0\3\377m\0\7\377\200\0\16\365\200\0\32\377\206\0*\373\201\0A\377" + "\204\0Yb=\25\271\35\35\35\377\35\35\35\377\35\35\35\377\40\36\34\374" + "\215Q\17\230\374\203\0T\373\204\0<\377\203\0'\377\337\277K\377\375\374" + "\333\377\374\374\347\370\371\373\346\261\341\366\346\207\320\362\352" + "t\312\361\353\\\302\356\3526\263\352\346O\274\355\346l\306\357\346\257" + "\340\366\346\370\371\373\346\377\375\374\346\377\375\374\333\374\343" + "\307H\370\207\0\"\372\202\0""5\374\203\0L\311k\7u/&\33\353\35\35\35\377" + "\35\35\35\377\35\35\35\377\77-\31\331\353}\3e\373\205\0G\372\205\0""0" + "\377\204\0\35\377\200\0\20\377\200\0\10\377\200\0\4\377\377\0\1\377\252" + "\0\3\377\222\0\7\377\200\0\16\377\205\0\31\377\206\0(\373\206\0;\374" + "\203\0NjA\23\2405(\33\335:*\31\325\251^\13v\377\205\0I\372\202\0""7\370" + "\203\0%\377\213\0\26\377v\0\15\377\361\342-\377\374\374\241\377\375\375" + "\344\377\375\375\346\377\375\375\346\377\375\375\346\377\375\375\346" + "\377\375\375\346\377\375\375\346\377\375\375\346\377\375\375\346\377" + "\375\375\344\377\375\374\241\377\365\347,\377\200\0\12\377\206\0\23\367" + "\200\0\40\372\202\0""1\373\203\0D\334v\5^R6\26\271,$\32\347N3\26\273" + "\350{\3X\373\203\0@\371\202\0-\377\211\0\34\377\217\0\20\377\200\0\10" + "\377\200\0\4\377\200\0\2\37\327d\0\377\377\0\1\377\252\0\3\377\222\0" + "\7\377\211\0\15\364\205\0\27\370\203\0#\372\205\0""0\373\202\0;\373\205" + "\0A\373\203\0@\372\204\0""8\377\205\0,\367\200\0\40\377\200\0\24\377" + "\200\0\14\377\200\0\6\377U\0\3\377\377\0\1\377\377\377\34\377\375\375" + "t\377\375\375\237\377\376\376\275\377\375\375\333\377\375\375\333\377" + "\376\376\275\377\375\375\237\377\375\375t\377\377\377\34\377\0\0\1\377" + "\200\0\2\377\231\0\5\377\216\0\11\377\207\0\21\366\200\0\34\377\206\0" + "(\372\202\0""5\373\204\0>\373\205\0A\373\202\0=\372\202\0""3\377\206" + "\0&\365\200\0\32\377\210\0\17\377\200\0\10\377\200\0\4\377\200\0\2\377" + "\0\0\1\37\327d\0\37\327d\0\377\377\0\1\377\252\0\3\377\200\0\6\377\213" + "\0\13\377\200\0\22\365\200\0\32\377\207\0\40\370\207\0$\377\203\0#\377" + "\210\0\36\377\205\0\27\377\200\0\20\377\200\0\12\377\231\0\5\377U\0\3" + "\377\377\0\1\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327" + "d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\377\0" + "\0\1\377\200\0\2\377\200\0\4\377\200\0\10\377\200\0\16\377\206\0\25\377" + "\211\0\34\377\200\0\"\370\207\0$\377\203\0!\366\200\0\34\377\200\0\24" + "\377\211\0\15\377\222\0\7\377\200\0\4\377\200\0\2\377\0\0\1\37\327d\0"}; + + +/* GdkPixbuf RGBA C-Source image dump */ + +#ifdef __SUNPRO_C +#pragma align 4 (trayfilepng) +#endif +#ifdef __GNUC__ +static const guint8 trayfilepng[] __attribute__ ((__aligned__ (4))) = +#else +static const guint8 trayfilepng[] = +#endif +{ "" + /* Pixbuf magic (0x47646b50) */ + "GdkP" + /* length: header (24) + pixel_data (9216) */ + "\0\0$\30" + /* pixdata_type (0x1010002) */ + "\1\1\0\2" + /* rowstride (192) */ + "\0\0\0\300" + /* width (48) */ + "\0\0\0""0" + /* height (48) */ + "\0\0\0""0" + /* pixel_data: */ + "\37\327d\0\37\327d\0\377\0\0\1\377\200\0\2\377f\0\5\377\216\0\11\357" + "\200\0\20\377\200\0\30\377\207\0\40\377\206\0&\377\206\0(\370\206\0&" + "\377\204\0\37\377\205\0\27\377\210\0\17\343q\0\11\377\200\0\4\377\200" + "\0\2\377\0\0\1\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327" + "d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\377\0\0\1\377\200\0\2\277" + "\200\0\4\377\222\0\7\377\211\0\15\363\206\0\25\377\204\0\35\377\207\0" + "$\377\206\0(\377\203\0'\370\207\0\"\377\200\0\32\361\200\0\22\350t\0" + "\13\377\200\0\6\377U\0\3\377\377\0\1\37\327d\0\37\327d\0\37\327d\0\377" + "\0\0\1\377\200\0\2\377\231\0\5\377\200\0\12\377\216\0\22\377\210\0\36" + "\377\205\0,\373\204\0:\373\203\0D\356~\3K\373\205\0C\373\202\0""9\371" + "\202\0+\377\204\0\35\361\200\0\22\377\200\0\12\377f\0\5\377\200\0\2\377" + "\0\0\1\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37" + "\327d\0\37\327d\0\377\0\0\1\377\200\0\2\377\200\0\4\377\200\0\10\377" + "\210\0\17\365\200\0\32\370\203\0'\372\202\0""5\377\207\0@\333v\3O\373" + "\205\0E\373\202\0=\372\205\0""0\370\200\0\"\377\206\0\25\377\200\0\14" + "\377\200\0\6\377U\0\3\377\377\0\1\37\327d\0\377\0\0\1\377\200\0\2\377" + "\231\0\5\350t\0\13\377\200\0\24\377\203\0!\377\207\0""3\377\203\0H\261" + "c\13v5(\32\336\37\36\35\375A.\31\317\272e\11o\377\203\0F\372\205\0""2" + "\377\207\0\40\377\206\0\23\377\200\0\12\377f\0\5\377\200\0\2\377\0\0" + "\1\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\377\0" + "\0\1\377\377\0\1\377\200\0\4\377\200\0\10\377\200\0\20\377\200\0\34\371" + "\202\0-\373\201\0A\346z\3[U7\26\270\37\36\34\373*#\33\354}J\20\224\374" + "\204\0M\373\202\0""9\370\206\0&\377\205\0\27\377\200\0\14\377\200\0\6" + "\377U\0\3\377\0\0\1\377\200\0\2\377\231\0\5\377\200\0\12\377\200\0\24" + "\370\203\0#\372\202\0""7\374\204\0O\266d\10\201(\"\33\363\35\35\35\377" + "\35\35\35\377\35\35\35\377)#\33\362\276f\10|\374\204\0M\372\202\0""5" + "\377\203\0!\377\206\0\23\377\200\0\12\377\200\0\4\377\200\0\2\377\0\0" + "\1\37\327d\0\37\327d\0\37\327d\0\37\327d\0\377\0\0\1\377\377\0\1\377" + "\200\0\4\377\200\0\10\377\200\0\20\366\204\0\35\372\202\0/\373\203\0" + "F\355~\3d>,\30\333\35\35\35\377\35\35\35\377\35\35\35\377\37\36\35\375" + "\207N\20\237\374\202\0V\373\202\0=\377\203\0'\377\205\0\27\377v\0\15" + "\377\200\0\6\377U\0\3\377f\0\5\377\200\0\12\362\200\0\24\377\207\0\"" + "\377\202\0""7\377\204\0Q\274g\10\204)#\33\364\35\35\35\377UM\25\377\326" + "\274\4\377SL\26\377\35\35\35\377-$\33\361\307k\6}\374\204\0O\372\207" + "\0""5\367\203\0!\362\206\0\23\377\216\0\11\377\200\0\4\377\200\0\2\377" + "\0\0\1\37\327d\0\37\327d\0\377\0\0\1\377\377\0\1\277\200\0\4\377\200" + "\0\10\377\210\0\17\377\211\0\34\372\202\0/\373\203\0H\362\201\2gD/\27" + "\332\35\35\35\37730\32\377\312\262\6\377\203t\17\377\35\35\35\377\40" + "\36\35\375\213O\20\244\374\204\0Y\373\204\0>\377\203\0'\377\205\0\27" + "\377\200\0\14\377\200\0\6\377\216\0\11\377\200\0\22\377\203\0!\372\202" + "\0""7\374\203\0R\275f\10\205*#\33\364\35\35\35\377UL\25\377\357\316\1" + "\377\370\325\0\377\355\314\1\377NG\27\377\35\35\35\377/%\33\357\316o" + "\6|\374\204\0O\377\204\0""4\377\207\0\40\377\200\0\22\377\216\0\11\377" + "\200\0\4\377\200\0\2\377\0\0\1\377\0\0\1\377\377\0\1\377\352\301\14\377" + "\365\353K\377\367\361\217\377\367\360\272\377\370\361\321\377\370\362" + "\346\376\367\362\360\360\354\352\373\351\347\347\377\353\350\347\377" + "\373\366\344\377\376\371\344\377\376\371\344\377\363\357\345\377\351" + "\347\347\377\351\347\347\377\367\361\355\366\377\370\364\357\377\360" + "\340\267\370\203\0'\377\200\0\26\377\213\0\13\377\200\0\20\377\210\0" + "\36\372\204\0""4\374\204\0O\276f\10\204*#\33\364\35\35\35\377UK\25\377" + "\357\312\1\377\370\321\0\377\370\321\0\377\370\321\0\377\353\307\2\377" + "H@\27\377\35\35\35\3772'\32\355\323p\4y\374\203\0N\372\204\0""4\377\204" + "\0\37\377\200\0\22\377\216\0\11\377\200\0\4\377\200\0\2\377\364\351\26" + "\377\373\371\204\377\374\374\337\377\374\373\347\377\373\372\351\377" + "\373\370\352\377\371\365\355\377\370\362\360\360\354\352\373\351\347" + "\347\377\352\350\347\377\372\365\344\377\376\370\344\377\376\370\344" + "\377\376\370\344\377\376\370\344\377\363\357\345\377\351\347\347\377" + "\351\347\347\377\367\361\355\366\377\350\321\276\373\202\0;\377\203\0" + "#\377\206\0\23\377\200\0\30\371\202\0-\374\205\0I\274f\10\200+#\33\363" + "\35\35\35\377UJ\25\377\357\306\1\377\370\315\0\377\370\315\0\377\370" + "\315\0\377\370\315\0\377\370\315\0\377\350\300\2\377C;\30\377\35\35\35" + "\3776)\32\352\335v\4u\374\204\0M\372\202\0""3\377\204\0\37\377\207\0" + "\21\377\231\32\12\377\372\366q\377\374\374\334\377\374\374\347\377\374" + "\373\347\322\340\317\351\217\265\215\352[\222X\355Q\212K\3611p0\372\37" + "d$\377\40c$\3772o$\377\227\264\201\377\364\362\333\377\376\370\344\377" + "\376\370\344\377\375\357\266\377\373\342q\377\240\217E\377;;;\377*('" + "\375\211O\20\241\377\204\0Q\372\204\0""4\377\204\0\35\377\203\0!\377" + "\206\0;\267d\11t*#\33\362\35\35\35\377UI\25\377\357\302\1\377\370\311" + "\0\377\370\311\0\377\370\311\0\377\370\311\0\377\370\311\0\377\370\311" + "\0\377\370\311\0\377\345\272\3\377>7\31\377\35\35\35\3779*\31\347\342" + "x\4r\374\203\0L\372\205\0""2\377\253K)\377\370\363\247\377\374\373\347" + "\376\373\372\347\265\321\265\350C\213G\351Q\223T\356|\254|\364\221\267" + "\217\367Z\221Z\373\36f$\377\40f$\3779x,\377\302\321\253\377\376\370\344" + "\377\376\370\344\377\374\352\237\377\371\321&\377\370\311\0\377\370\311" + "\0\377\370\311\0\377\204n\17\377\35\35\35\377\37\36\35\375\203L\21\231" + "\373\203\0D\377\203\0'\371\206\0(\373\203\0F,$\33\352\35\35\35\377UH" + "\25\377\360\276\1\377\371\305\0\377\371\305\0\377\371\305\0\377\371\305" + "\0\377\371\305\0\377\371\305\0\377\371\305\0\377\371\305\0\377\371\305" + "\0\377\341\262\3\37792\31\377\35\35\35\377=+\31\343\346x\2o\374\227%" + "S\377\364\354\311\377\373\371\351\357\362\353\350Z\235]\350@\214D\354" + "\226\277\227\365\243\306\244\367^\231\\\364'q'\371\36j$\377\36h$\377" + "8y,\377\331\337\300\377\376\367\344\377\376\363\322\377\372\322>\377" + "\371\305\0\377\371\305\0\377\371\305\0\377\371\305\0\377\371\305\0\377" + "\371\305\0\377\204l\17\377\35\35\35\377\37\36\35\375\263b\12g\377\210" + "\0/\371\202\0+\273f\10^\35\35\35\377\40\37\35\377\351\266\2\377\371\302" + "\0\377\371\302\0\377\371\302\0\377\371\302\0\377\371\302\0\377\371\302" + "\0\377\371\302\0\377\371\302\0\377\371\302\0\377\371\302\0\377\371\302" + "\0\377\335\255\4\3775/\32\377\35\35\35\377B/\32\340\373\344\314\312\377" + "\371\365\355\333\345\324\353B\221E\353}\264\200\362\257\320\261\367n" + "\247o\363+{(\357\"r#\371\35m$\377\36l$\377/v$\377\302\322\253\377\376" + "\367\344\377\376\356\276\377\372\311\35\377\371\302\0\377\371\302\0\377" + "\371\302\0\377\371\302\0\377\371\302\0\377\371\302\0\377\371\302\0\377" + "\371\302\0\377NB\27\377\35\35\35\377h@\24\231\372\202\0""3\377\206\0" + "(\361\200\0I/%\33\346\35\35\35\377t]\22\377\370\275\0\377\371\276\0\377" + "\371\276\0\377\371\276\0\377\371\276\0\377\371\276\0\377\371\276\0\377" + "\371\276\0\377\371\276\0\377\371\276\0\377\371\276\0\377\371\276\0\377" + "\330\246\4\3770+\32\377\201\200\200\377\357\353\351\374\355\356\341\361" + "F\226F\357\224\302\225\366\237\310\240\3668\2118\360%|#\360#v#\370\35" + "p$\377\35n$\377+w\"\377\226\270\201\377\376\367\344\377\376\362\322\377" + "\372\305\35\377\371\276\0\377\371\276\0\377\371\276\0\377\371\276\0\377" + "\371\276\0\377\371\276\0\377\371\276\0\377\371\276\0\377\263\213\11\377" + "\40\37\35\377\37\36\34\374\256`\12j\377\205\0""0\370\207\0\"\377\204" + "\0<\232W\16\203\"\40\35\372\35\35\35\377nW\22\377\366\270\0\377\371\272" + "\0\377\371\272\0\377\371\272\0\377\371\272\0\377\371\272\0\377\371\272" + "\0\377\371\272\0\377\371\272\0\377\371\272\0\377\371\272\0\377\371\272" + "\0\377\326\247\31\377\341\337\335\377\351\347\347\377U\231V\373\223\302" + "\222\370\245\313\244\3713\2112\361&\200#\361#z#\370\34s$\377\34r$\377" + "+{\"\377C\2113\377\364\360\333\377\376\366\344\377\372\312>\377\371\272" + "\0\377\371\272\0\377\371\272\0\377\371\272\0\377\371\272\0\377\371\272" + "\0\377\371\272\0\377\371\272\0\377\254\203\12\377!\40\35\377\35\35\35" + "\377a<\24\262\373\203\0F\371\203\0)\377\205\0\31\371\205\0.\374\205\0" + "K\237Y\15\217$\40\34\371\35\35\35\377fP\23\377\365\263\1\377\371\266" + "\0\377\371\266\0\377\371\266\0\377\371\266\0\377\371\266\0\377\371\266" + "\0\377\371\266\0\377\371\266\0\377\371\266\0\377\371\266\0\377\374\332" + "\201\377\372\363\345\377\247\307\251\377a\245h\377\261\322\262\376]\244" + "[\367'\203#\364$~#\371\34v$\377\34v$\377)}\"\3771\202!\377\246\303\217" + "\377\376\366\344\377\375\343\237\377\371\266\0\377\371\266\0\377\371" + "\266\0\377\371\266\0\377\371\266\0\377\371\266\0\377\371\266\0\377\371" + "\266\0\377\244{\13\377\37\36\35\377\35\35\35\377e>\23\272\374\204\0U" + "\372\204\0""6\367\204\0\37\360x\0\21\367\200\0\40\372\204\0""6\374\203" + "\0R\251^\13\217&!\34\370\35\35\35\377_J\24\377\363\256\1\377\371\262" + "\0\377\371\262\0\377\371\262\0\377\371\262\0\377\371\262\0\377\371\262" + "\0\377\371\262\0\377\371\262\0\377\371\265\11\377\376\363\334\377\376" + "\365\344\377W\243N\377\254\321\257\377\254\320\257\377&\204)\374$\201" + "$\372\33z$\377\33x$\377(\177\"\3771\204!\3779\207)\377\367\361\335\377" + "\376\365\344\377\372\275&\377\371\262\0\377\371\262\0\377\371\262\0\377" + "\371\262\0\377\371\262\0\377\371\262\0\377\371\262\0\377\235s\14\377" + "\36\36\35\377\35\35\35\377nB\22\270\374\204\0[\373\204\0>\370\206\0&" + "\377\214\0\24\377\200\0\12\377\206\0\23\370\203\0#\373\202\0""9\374\203" + "\0T\260`\11\215(\"\34\366\35\35\35\377ZE\25\377\361\250\1\377\372\256" + "\0\377\372\256\0\377\372\256\0\377\372\256\0\377\372\256\0\377\372\256" + "\0\377\372\256\0\377\373\304E\377\377\365\344\377\326\341\275\377f\255" + "\\\377\264\326\261\377\225\303\231\377\32\177%\377\33}%\377\33|%\377" + "&\201#\3771\207!\3772\205!\377p\246\\\377\377\365\344\377\376\346\266" + "\377\372\256\0\377\372\256\0\377\372\256\0\377\372\256\0\377\372\256" + "\0\377\372\256\0\377\372\256\0\377\225l\15\377\35\35\35\377\36\35\35" + "\377tE\21\265\374\204\0]\377\203\0@\377\203\0)\364\200\0\30\377\200\0" + "\14\377f\0\5\377t\0\13\363\206\0\25\370\200\0$\373\202\0""9\374\204\0" + "S\271f\11\211*#\33\364\35\35\35\377S\77\26\377\356\242\1\377\372\252" + "\0\377\372\252\0\377\372\252\0\377\372\252\0\377\372\252\0\377\372\252" + "\0\377\375\326\207\377\377\365\344\377\226\304\202\377\220\304\210\377" + "\266\330\261\377\177\272|\377\32\200%\377\32\177%\377&\205#\3771\212" + "\"\3771\211\"\3771\207!\377\253\310\225\377\377\365\344\377\374\317q" + "\377\372\252\0\377\372\252\0\377\372\252\0\377\372\252\0\377\372\252" + "\0\377\372\252\0\377\214d\16\377\35\35\35\377\36\36\35\376|I\20\257\374" + "\204\0]\373\205\0A\371\206\0*\377\205\0\31\377\211\0\15\377\200\0\6\377" + "\200\0\2\377\231\0\5\377\213\0\13\363\206\0\25\370\200\0$\372\204\0""8" + "\374\206\0R\276g\10\205-%\33\362\35\35\35\377M;\27\377\354\236\2\377" + "\372\246\0\377\372\246\0\377\372\246\0\377\372\246\0\377\372\246\0\377" + "\375\342\257\377\377\364\344\377d\254R\377\250\322\242\377\266\331\261" + "\377j\257`\377)\213#\377$\206#\3770\214\"\3770\213\"\3771\212\"\3771" + "\210\"\377\317\333\267\377\377\364\344\377\373\2719\377\372\246\0\377" + "\372\246\0\377\372\246\0\377\372\246\0\377\372\246\0\377\204\\\17\377" + "\35\35\35\377\37\36\35\376\203K\17\253\374\202\0\\\377\203\0@\371\206" + "\0*\377\205\0\31\377\200\0\16\377m\0\7\377\252\0\3\377\0\0\1\377\200" + "\0\2\377\231\0\5\377\213\0\13\363y\0\25\370\203\0#\377\206\0""7\374\204" + "\0Q\310k\10\201/%\33\360\35\35\35\377G6\27\377\350\227\2\377\372\242" + "\0\377\372\242\0\377\372\242\0\377\372\242\0\377\376\352\306\377\377" + "\364\344\377T\250F\377\266\332\261\377\266\331\261\377O\242C\3770\221" + "\"\3770\217\"\3770\216\"\3770\214\"\3770\214\"\3771\212\"\377\344\346" + "\312\377\377\364\344\377\373\256\"\377\372\242\0\377\372\242\0\377\372" + "\242\0\377\371\241\0\377|V\20\377\35\35\35\377\37\36\34\375\212P\17\246" + "\374\204\0[\377\206\0\77\377\203\0)\365\205\0\31\377\211\0\15\377m\0" + "\7\377\252\0\3\377\377\0\1\37\327d\0\377\0\0\1\377\200\0\2\377\231\0" + "\5\377t\0\13\377\200\0\24\377\207\0\"\377\204\0""6\374\203\0P\316o\6" + "}1&\32\355\35\35\35\377B3\30\377\345\222\3\377\372\236\0\377\372\236" + "\0\377\372\236\0\377\376\360\333\377\377\363\344\377S\251F\377\266\332" + "\261\377\264\330\257\3775\226'\3770\222\"\3770\221\"\3770\217\"\3770" + "\216\"\3770\214\"\3770\213\"\377\367\357\334\377\377\363\344\377\372" + "\242\13\377\372\236\0\377\372\236\0\377\370\235\0\377uQ\22\377\35\35" + "\35\377\40\37\34\374\222S\16\241\374\202\0Z\377\204\0>\377\206\0(\377" + "\200\0\30\377\211\0\15\377m\0\7\377U\0\3\377\377\0\1\37\327d\0\37\327" + "d\0\37\327d\0\377\0\0\1\377\200\0\2\377\231\0\5\377\200\0\12\377\206" + "\0\23\370\200\0\"\372\204\0""6\374\204\0O\326r\6z6(\32\352\35\35\35\377" + "=/\31\377\341\213\3\377\372\232\0\377\372\232\0\377\377\363\344\377\377" + "\363\344\377V\254L\377\266\333\261\377\230\313\222\3770\225\"\3770\224" + "\"\3770\223\"\3770\221\"\3770\220\"\3770\216\"\3770\215\"\377\377\363" + "\344\377\377\363\344\377\372\232\0\377\372\232\0\377\367\230\0\377mK" + "\23\377\35\35\35\377\"\37\34\373\230V\15\235\374\204\0Y\377\206\0=\371" + "\200\0(\377\205\0\27\377v\0\15\377m\0\7\377U\0\3\377\377\0\1\37\327d" + "\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\377\0\0\1\377\200\0\2\377" + "\231\0\5\377\200\0\12\377\206\0\23\377\203\0!\377\207\0""5\374\203\0" + "P\333t\4x9*\31\350\35\35\35\3778,\31\377\336\207\4\377\373\227\0\377" + "\377\363\344\377\377\363\344\377`\263V\377\266\333\261\377k\265a\377" + "/\227\"\3770\225\"\3770\224\"\3770\223\"\3770\222\"\3770\220\"\3770\217" + "\"\377\377\363\344\377\377\363\344\377\373\227\0\377\367\225\1\377fE" + "\23\377\35\35\35\377$\40\35\372\240Y\14\233\374\204\0Y\373\206\0=\377" + "\203\0'\377\205\0\27\377\200\0\14\377\200\0\6\377U\0\3\377\377\0\1\37" + "\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\377" + "\0\0\1\377\200\0\2\377f\0\5\377\200\0\12\377\206\0\23\370\207\0\"\372" + "\204\0""8\374\203\0T\345z\4}\77,\30\347\35\35\35\3774)\32\377\331\201" + "\4\377\377\362\344\377\377\362\344\377j\270a\377\244\323\236\377:\237" + ".\377/\230\"\377/\226\"\3770\225\"\3770\223\"\3770\223\"\3770\221\"\377" + "0\220\"\377\377\362\344\377\377\362\344\377\365\220\1\377_@\24\377\35" + "\35\35\377%!\34\372\252^\12\235\374\205\0^\373\203\0@\377\206\0(\377" + "\205\0\27\377v\0\15\377\200\0\6\377U\0\3\377\377\0\1\37\327d\0\37\327" + "d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327" + "d\0\377\0\0\1\377\200\0\2\377\231\0\5\377\213\0\13\377\213\0\26\371\206" + "\0(\377\205\0A\372\203\0c\353{\2\215G0\27\352\35\35\35\3770'\32\377\373" + "\360\344\377\377\362\344\377:\243/\3772\237&\377/\233\"\377/\232\"\377" + "/\230\"\377/\227\"\377/\225\"\3770\224\"\3770\223\"\3770\222\"\377\377" + "\362\344\377\376\362\344\377X;\25\377\35\35\35\377)\"\34\372\271f\11" + "\251\375\204\0n\377\205\0K\377\210\0/\377\204\0\33\377\200\0\16\377m" + "\0\7\377U\0\3\377\377\0\1\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37" + "\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\377" + "\377\0\1\277\200\0\4\377\216\0\11\377\200\0\22\370\203\0#\373\202\0;" + "\374\202\0\\\375\203\0\202\327s\6\263!\37\34\376\35\35\35\377\357\352" + "\346\377\377\362\344\377.\237#\377.\236\"\377.\235\"\377.\234\"\377/" + "\232\"\377/\231\"\377/\227\"\377/\226\"\3770\224\"\3770\223\"\377\377" + "\362\344\377\365\355\345\377\35\35\35\377\35\35\35\377\216Q\17\323\373" + "\205\0\216\375\206\0g\377\203\0D\377\203\0)\377\213\0\26\377\213\0\13" + "\377f\0\5\377\200\0\2\377\0\0\1\37\327d\0\37\327d\0\37\327d\0\37\327" + "d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\377\0" + "\0\1\377\200\0\2\377f\0\5\377\213\0\13\363\200\0\26\377\203\0'\373\201" + "\0A\374\205\0b\337w\4\221:*\31\361\35\35\35\377I2\27\377\375\361\344" + "\377\377\361\344\377-\240#\377.\237#\377.\235\"\377.\234\"\377.\233\"" + "\377/\232\"\377/\231\"\377/\227\"\377/\226\"\377/\224\"\377\377\361\344" + "\377\377\361\344\377uG\22\377\35\35\35\377%!\34\374\262a\12\254\375\205" + "\0m\374\203\0J\377\205\0.\377\211\0\32\377\211\0\15\377\200\0\6\377U" + "\0\3\377\0\0\1\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327" + "d\0\37\327d\0\37\327d\0\37\327d\0\377\0\0\1\377\200\0\2\377\200\0\4\377" + "\216\0\11\377\200\0\22\377\207\0\40\372\204\0""6\374\206\0R\341w\4}9" + "*\31\353\35\35\35\377D/\30\377\353|\2\377\377\361\344\377\377\361\344" + "\377-\243#\377-\241#\377.\240#\377.\236\"\377.\235\"\377.\234\"\377/" + "\233\"\377/\231\"\377/\230\"\377/\226\"\377\377\361\344\377\377\361\344" + "\377\371\202\0\377nB\23\377\35\35\35\377%!\34\372\261b\12\231\374\202" + "\0\\\377\206\0=\370\206\0&\377\206\0\25\377t\0\13\377\231\0\5\377\200" + "\0\2\377\0\0\1\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327" + "d\0\37\327d\0\377\0\0\1\377\200\0\2\377\200\0\4\377\200\0\10\360\207" + "\0\21\377\210\0\36\372\205\0""2\374\206\0L\345x\2s<,\32\346\35\35\35" + "\377@,\30\377\351w\3\377\374\177\0\377\377\360\344\377\377\360\344\377" + "-\244#\377-\242#\377-\241#\377.\237#\377.\236#\377.\234\"\377.\233\"" + "\377.\232\"\377/\231\"\377/\227\"\377\377\360\344\377\377\360\344\377" + "\374\177\0\377\371~\0\377g=\23\377\35\35\35\377'\"\34\370\263b\11\217" + "\374\204\0U\373\206\0""9\377\203\0#\377\200\0\24\377\200\0\12\377f\0" + "\5\377\200\0\2\377\0\0\1\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327" + "d\0\377\0\0\1\377\377\0\1\377\200\0\4\377\200\0\10\377\200\0\20\377\204" + "\0\35\372\202\0""1\374\203\0J\353{\2n\77-\31\342\35\35\35\377;)\31\377" + "\344q\3\377\374{\0\377\374{\0\377\377\360\344\377\377\360\344\377-\245" + "#\377-\244#\377-\243#\377-\241#\377-\240#\377.\236#\377.\235\"\377.\233" + "\"\377.\233\"\377/\231\"\377\377\360\344\377\377\360\344\377\374{\0\377" + "\374{\0\377\370z\1\377`9\24\377\35\35\35\377(\"\33\366\274g\11\210\371" + "\204\0S\377\206\0""7\377\207\0\"\362\200\0\24\377\200\0\12\377f\0\5\377" + "\200\0\2\377\0\0\1\37\327d\0\37\327d\0\37\327d\0\377\0\0\1\377\377\0" + "\1\377\374\373\236\377\374\374\347\377\374\373\350\377\373\372\351\377" + "\372\370\353\377\371\365\355\376\367\362\360\357\353\351\374\351\347" + "\347\377\353\350\347\377\374\357\344\377\377\360\344\377\377\360\344" + "\377\377\360\344\377\377\360\344\377\377\360\344\377,\247#\377,\245#" + "\377-\244#\377-\243#\377-\242#\377-\240#\377.\237#\377.\235#\377.\234" + "\"\377.\233\"\377\377\360\344\377\377\360\344\377\377\360\344\377\377" + "\360\344\377\377\360\344\377\376\357\344\377\357\351\346\377\351\347" + "\347\377\353\350\350\376\374\365\360\363\377\371\364\356\377\372\367" + "\353\377\373\371\351\377\374\373\350\377\374\374\347\377\374\373\242" + "\377\200\0\2\377\0\0\1\37\327d\0\0\0\0\1\377\377\0\1\277\200\0\4\377" + "\372\370\260\377\374\373\347\377\373\372\351\377\372\370\353\377\371" + "\365\355\376\367\362\360\357\353\351\373\351\347\347\377\353\350\347" + "\377\374\356\344\377\377\357\344\377\377\357\344\377\377\357\344\377" + "\377\357\344\377\377\357\344\377\300\332\253\377,\250#\377,\246#\377" + ",\245#\377-\243#\377)\242#\377%\236$\377-\240#\377-\236#\377.\235#\377" + ".\233\"\377\302\327\253\377\377\357\344\377\377\357\344\377\377\357\344" + "\377\377\357\344\377\377\357\344\377\376\357\344\377\356\351\346\377" + "\351\347\347\377\353\351\350\376\374\365\360\363\377\371\364\356\377" + "\372\367\353\377\373\371\351\377\374\373\350\377\373\371\251\377\200" + "\0\4\377\200\0\2\377\0\0\1\377\377\0\1\377\252\0\3\377\222\0\7\377\253" + "J\25\377\362\345\215\377\372\370\352\377\371\365\355\307\351\277\360" + "1\272>\373'\2669\3775\271C\377)\265&\377*\263#\377*\262#\377+\260#\377" + "+\257#\377+\255#\377+\254#\377+\253#\377,\252#\377,\251#\377,\247#\377" + "(\243$\377\31\235&\377\27\233&\377#\237$\377-\241#\377-\237#\377.\236" + "#\377.\234\"\377.\233\"\377.\232\"\377/\231\"\377/\227\"\377/\226\"\377" + "/\224\"\377.\223\"\377\37\213$\377\32\210%\3774\223=\376\307\334\275" + "\362\377\371\365\356\377\372\367\352\377\360\341\220\377\240A\30\377" + "\216\0\11\377\200\0\4\377\200\0\2\377\252\0\3\377\222\0\7\377\222\0\16" + "\366\204\0\33\377\202\0-\375\305\207r\376\362\346\341\361\354\352\373" + "\334\344\333\377b\303m\377Y\306X\377\246\340\243\377\220\330\214\377" + "a\307\\\377/\265(\377*\261#\377+\260#\377+\256#\377+\254#\377+\254#\377" + ",\253#\377'\247$\377\27\240&\377\26\236&\377\26\235&\377\27\233&\377" + "#\237$\377-\241#\377-\240#\377.\236#\377.\235#\377.\233\"\377.\232\"" + "\377.\231\"\377/\230\"\377/\226\"\377/\225\"\377-\222\"\377h\255j\377" + "\334\341\333\377\354\351\350\375\372\356\343\345\376\301\200x\377\207" + "\0""3\377\204\0\37\377\207\0\21\377\200\0\10\377\200\0\4\377\200\0\6" + "\377\211\0\15\365\205\0\31\371\202\0+\373\203\0D\371\204\0caE'\321\243" + "\242\242\377\352\347\347\377\372\355\345\377\267\333\243\377H\277@\377" + "\220\331\215\377\264\345\261\377\251\341\246\377o\313k\3776\265/\377" + "+\257#\377+\256#\377+\254#\377&\251$\377\26\243&\377\26\242&\377\33\244" + "%\374\37\246%\372\26\235&\377\27\234&\377\"\236$\377-\241#\377-\237#" + "\377-\236#\377.\234#\377.\233\"\377.\231\"\377.\231\"\377/\227\"\377" + "<\234/\377\271\320\243\377\375\356\344\377\355\350\346\377\243\242\242" + "\377B6)\353\333u\4u\374\203\0L\377\207\0""1\377\204\0\35\377\210\0\17" + "\377\222\0\7\377\200\0\12\377\206\0\25\370\203\0'\373\203\0@\377\205" + "\0^[9\26\311\35\35\35\377'\40\34\377\332\212V\377\377\346\327\377\377" + "\356\344\377\350\350\317\377d\305X\377f\313b\377\260\343\255\377\264" + "\345\261\377\260\343\255\377|\317x\3770\262(\377%\254$\377\26\246&\377" + "\25\244&\377\32\250%\373\"\256%\364\"\255%\363\36\246%\370\26\236&\377" + "\26\234&\377!\236$\377-\241#\377-\240#\377-\236#\377.\235#\377.\233#" + "\377.\232\"\377f\257V\377\350\345\317\377\377\356\344\377\377\346\327" + "\377\360\221S\377@(\31\377\35\35\35\3777)\31\350\340w\5q\373\203\0H\377" + "\202\0-\377\205\0\31\377\211\0\15\357\200\0\20\377\204\0\37\372\206\0" + "7\374\205\0V_<\25\301\35\35\35\377$\37\34\377\304O\10\377\375`\0\377" + "\375q\33\377\376\312\253\377\377\355\344\377\376\355\343\377\242\325" + "\220\377F\277A\377\230\333\225\377\264\344\261\377\264\344\261\377\222" + "\330\223\377\37\2550\377\25\250&\377\32\253%\372\37\261%\361\35\261%" + "\360\36\260%\360\37\255%\361\35\250%\366\26\236&\377\26\235&\377\40\236" + "%\377-\241#\377-\237#\377-\236#\3773\237)\377\244\312\220\377\376\355" + "\343\377\377\355\344\377\376\312\253\377\375q\33\377\375`\0\377\345Y" + "\3\377;&\31\377\35\35\35\377:*\31\343\341x\2g\373\203\0@\377\203\0%\377" + "\206\0\23\377\206\0\25\371\206\0*\373\205\0Gb=\24\263\35\35\35\377\"" + "\36\34\377\275J\10\377\375\\\0\377\375\\\0\377\375\\\0\377\375]\2\377" + "\376\236h\377\377\352\337\377\377\355\344\377\333\343\304\377T\301J\377" + "p\315l\377\260\343\260\377\254\342\262\377\223\330\233\377*\2656\372" + "\36\265%\360\34\264&\356\32\262&\354\32\261&\354\33\260&\355\36\257%" + "\357\35\252%\366\26\237&\377\26\235&\377\40\236%\377-\241#\377U\257H" + "\377\334\340\304\377\377\355\344\377\377\352\337\377\376\236h\377\375" + "]\2\377\375\\\0\377\375\\\0\377\375\\\0\377\341T\4\3777$\32\377\35\35" + "\35\377;+\31\335\360~\0T\377\202\0""1\377\211\0\32\377\200\0\32\372\205" + "\0""2\252_\14o\37\36\35\375!\36\35\377\267E\11\377\375X\0\377\375X\0" + "\377\375X\0\377\375X\0\377\375X\0\377\375X\0\377\375s)\377\376\323\275" + "\377\377\355\344\377\372\353\340\377\204\315}\3777\273G\377\225\332\235" + "\377\257\345\263\375\242\342\246\3714\301\77\357\30\267&\353\30\266&" + "\352\30\264&\352\30\262&\352\32\261&\354\36\260%\357\35\252%\365\26\240" + "&\377\30\237(\377\177\302~\377\372\353\340\377\377\355\344\377\376\323" + "\275\377\375s)\377\375X\0\377\375X\0\377\375X\0\377\375X\0\377\375X\0" + "\377\375X\0\377\334O\4\3772\"\32\377\35\35\35\377lB\23\237\377\204\0" + ":\367\200\0\40\366\200\0\34\372\202\0""5[:\25\247\35\35\35\377b.\24\377" + "\375T\0\377\375T\0\377\375T\0\377\375T\0\377\375T\0\377\375T\0\377\375" + "T\0\377\375T\0\377\375X\6\377\376\251\177\377\366\351\344\377\351\347" + "\347\377\266\331\270\3779\277D\371u\326{\365\262\350\266\371\236\343" + "\244\366\37\275.\352\25\271&\350\26\266&\350\27\265&\351\30\263&\352" + "\32\261&\354\34\260%\3578\265>\365\267\326\267\376\351\347\347\377\360" + "\350\345\377\374\250\177\377\375X\6\377\375T\0\377\375T\0\377\375T\0" + "\377\375T\0\377\375T\0\377\375T\0\377\375T\0\377\375T\0\377\234<\15\377" + "\35\35\35\377:*\31\324\373\204\0>\377\200\0\"\377\211\0\32\377\205\0" + "2\223R\15z\35\35\35\377\40\36\35\377\255=\12\377\376P\0\377\376P\0\377" + "\376P\0\377\376P\0\377\376P\0\377\376P\0\377\376P\0\377\376P\0\377\237" + ":\14\377SRR\377\323\321\321\377\365\357\354\370\362\365\347\357m\323" + "r\355C\312P\356\242\345\251\366y\331\204\361\24\273'\347\24\271'\347" + "\25\270'\347\26\265&\350\30\264&\352n\314s\354\362\364\350\356\372\364" + "\357\364\325\322\321\376RRR\377e-\24\377\371O\1\377\376P\0\377\376P\0" + "\377\376P\0\377\376P\0\377\376P\0\377\376P\0\377\376P\0\377\327G\5\377" + "0\"\33\377\35\35\35\377Y9\26\257\373\202\0;\377\200\0\40\363\200\0\26" + "\377\206\0*\373\203\0H_;\24\265\35\35\35\377\40\36\35\377\255;\12\377" + "\376L\0\377\376L\0\377\376L\0\377\376L\0\377\376L\0\377\376L\0\377\227" + "6\15\377\35\35\35\377\36\35\35\377\201V$\270\376\345\312\275\377\371" + "\366\354\377\373\370\352\261\350\264\351/\307@\350r\327}\360\23\274'" + "\346\23\273'\346\23\272'\347%\2746\347\262\345\264\350\377\373\371\352" + "\377\372\367\354\376\347\316\272\270r\"\224(\"\34\366\35\35\35\377_+" + "\25\377\367K\1\377\376L\0\377\376L\0\377\376L\0\377\376L\0\377\376L\0" + "\377\330D\5\3770\40\32\377\35\35\35\377<+\30\334\342x\3X\372\205\0""2" + "\366\204\0\33\377\200\0\20\367\207\0\40\372\204\0""8\374\205\0Ve\77\24" + "\274\35\35\35\377\40\36\35\377\2559\12\377\376I\0\377\376I\0\377\376" + "I\0\377\376I\0\377\2173\16\377\35\35\35\377\36\36\35\376}J\20\256\374" + "\204\0]\373\205\0A\377\335\273n\377\374\371\334\377\374\373\347\347\366" + "\346\347S\317`\346\23\277(\346\23\274'\346S\315`\346\347\366\346\347" + "\377\374\374\347\377\374\372\333\377\341\302j\373\206\0""9\371\203\0" + "T\271f\11\211*#\33\364\35\35\35\377X(\25\377\365G\1\377\376I\0\377\376" + "I\0\377\376I\0\377\331B\5\3770\40\32\377\35\35\35\377\77,\30\336\353" + "{\3e\373\203\0@\370\200\0&\377\206\0\23\377\200\0\12\377\206\0\25\370" + "\203\0'\373\206\0\77\374\204\0]g@\24\276\35\35\35\377\40\36\35\377\255" + "6\12\377\376E\0\377\376E\0\377\2100\17\377\35\35\35\377\37\36\35\376" + "\203L\17\251\377\204\0[\373\203\0@\371\200\0*\377\205\0\31\377\327\256" + "(\377\374\372\256\377\375\374\346\376\375\374\346\231\342\241\346\231" + "\342\241\346\376\375\374\346\377\375\375\346\377\375\373\256\377\340" + "\273%\377\206\0\25\370\200\0$\372\204\0""8\374\206\0R\300h\10\204,$\33" + "\362\35\35\35\377S'\26\377\362B\1\377\376E\0\377\332\77\5\3771\40\32" + "\377\35\35\35\377@-\30\337\351z\2j\377\207\0F\371\202\0-\377\205\0\31" + "\353v\0\15\377\200\0\6\353\211\0\15\377\212\0\30\371\206\0*\373\203\0" + "B\374\205\0^f\77\24\275\35\35\35\377\40\36\35\377\2372\14\377v+\22\377" + "\35\35\35\377\37\36\34\375\211O\16\243\374\204\0Y\377\204\0>\371\203" + "\0)\377\212\0\30\377\211\0\15\377m\0\7\377\314f\5\377\375\373j\377\375" + "\375\341\377\375\375\346\377\375\375\346\377\375\375\341\377\373\373" + "j\377\300\200\4\377\231\0\5\377\213\0\13\363y\0\25\370\203\0#\372\206" + "\0""7\374\206\0P\303j\10\177.%\33\357\35\35\35\377J$\27\377\2635\12\377" + "2\40\32\377\35\35\35\377A.\30\335\352{\2k\374\205\0I\377\210\0/\377\211" + "\0\34\377\210\0\17\377\222\0\7\377U\0\3\377m\0\7\377\200\0\16\365\200" + "\0\32\377\206\0*\373\201\0A\377\204\0Yb=\25\271\35\35\35\377\35\35\35" + "\377\35\35\35\377\40\36\34\374\215Q\17\230\374\203\0T\373\204\0<\377" + "\203\0'\377\200\0\30\377\211\0\15\377m\0\7\377U\0\3\377\377\0\1\37\327" + "d\0\377\377\377)\377\376\376\253\377\376\376\253\377\377\377)\37\327" + "d\0\377\0\0\1\377\200\0\2\377\231\0\5\377t\0\13\362\200\0\24\370\207" + "\0\"\372\202\0""5\374\203\0L\311k\7u/&\33\353\35\35\35\377\35\35\35\377" + "\35\35\35\377\77-\31\331\353}\3e\373\205\0G\372\205\0""0\377\204\0\35" + "\377\200\0\20\377\200\0\10\377\200\0\4\377\377\0\1\377\252\0\3\377\222" + "\0\7\377\200\0\16\377\205\0\31\377\206\0(\373\206\0;\374\203\0NjA\23" + "\2405(\33\335:*\31\325\251^\13v\377\205\0I\372\202\0""7\370\203\0%\377" + "\213\0\26\377v\0\15\377\200\0\6\377U\0\3\377\377\0\1\37\327d\0\37\327" + "d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\377\0" + "\0\1\377\200\0\2\377\231\0\5\377\200\0\12\377\206\0\23\367\200\0\40\372" + "\202\0""1\373\203\0D\334v\5^R6\26\271,$\32\347N3\26\273\350{\3X\373\203" + "\0@\371\202\0-\377\211\0\34\377\217\0\20\377\200\0\10\377\200\0\4\377" + "\200\0\2\37\327d\0\377\377\0\1\377\252\0\3\377\222\0\7\377\211\0\15\364" + "\205\0\27\370\203\0#\372\205\0""0\373\202\0;\373\205\0A\373\203\0@\372" + "\204\0""8\377\205\0,\367\200\0\40\377\200\0\24\377\200\0\14\377\200\0" + "\6\377U\0\3\377\377\0\1\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327" + "d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\377\0\0\1\377\200" + "\0\2\377\231\0\5\377\216\0\11\377\207\0\21\366\200\0\34\377\206\0(\372" + "\202\0""5\373\204\0>\373\205\0A\373\202\0=\372\202\0""3\377\206\0&\365" + "\200\0\32\377\210\0\17\377\200\0\10\377\200\0\4\377\200\0\2\377\0\0\1" + "\37\327d\0\37\327d\0\377\377\0\1\377\252\0\3\377\200\0\6\377\213\0\13" + "\377\200\0\22\365\200\0\32\377\207\0\40\370\207\0$\377\203\0#\377\210" + "\0\36\377\205\0\27\377\200\0\20\377\200\0\12\377\231\0\5\377U\0\3\377" + "\377\0\1\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0" + "\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\37\327d\0\377\0\0" + "\1\377\200\0\2\377\200\0\4\377\200\0\10\377\200\0\16\377\206\0\25\377" + "\211\0\34\377\200\0\"\370\207\0$\377\203\0!\366\200\0\34\377\200\0\24" + "\377\211\0\15\377\222\0\7\377\200\0\4\377\200\0\2\377\0\0\1\37\327d\0"}; + + +/* GdkPixbuf RGBA C-Source image dump */ + +#ifdef __SUNPRO_C +#pragma align 4 (bookpng) +#endif +#ifdef __GNUC__ +static const guint8 bookpng[] __attribute__ ((__aligned__ (4))) = +#else +static const guint8 bookpng[] = +#endif +{ "" + /* Pixbuf magic (0x47646b50) */ + "GdkP" + /* length: header (24) + pixel_data (1024) */ + "\0\0\4\30" + /* pixdata_type (0x1010002) */ + "\1\1\0\2" + /* rowstride (64) */ + "\0\0\0@" + /* width (16) */ + "\0\0\0\20" + /* height (16) */ + "\0\0\0\20" + /* pixel_data: */ + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\"\0\0\0N\0\0\0U\0\0\0U\0\0\0U" + "\0\0\0U\0\0\0U\0\0\0Q\0\0\0N\0\0\0L\0\0\0\34\0\0\0\1\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\14""3;E\314\\iz\370K[k\377DTe\377=M^\3777GX\3775FW\377" + "6GX\3738IZ\3705BO\366\15\22\31\227\0\0\0\17\0\0\0\0\0\0\0\0\0\0\0\2\4" + "\5\7\216\204\231\257\377v\216\247\377Rn\214\377Gd\202\3779Vt\3772Ol\377" + "2Ol\3774Qn\3779To\377/AR\377\17\24\32\235\0\0\0#\0\0\0\0\0\0\0\0\0\0" + "\0(4<F\322\216\243\270\377c}\232\377Nj\207\377C_}\3775Rp\3771Nk\3771" + "Nk\3772Ol\3775Pi\377-;F\376\0\0\0\226\0\0\0\25\0\0\0\0\0\0\0\0\24\27" + "\33\177n|\214\377q\212\245\377Uq\217\377Gd\202\377=Yw\3772Ol\3771Nk\377" + "2Ok\3777Tp\377&8K\377QW[\377HJK\303\0\0\0\"\0\0\0\0\0\0\0\7""06=\350" + "\204\231\257\377`{\230\377Qm\213\377C_}\3778Us\3771Nk\3771Nk\3773Ol\377" + "4Nh\377*5@\375TWY\375FGH\305\0\0\0&\0\0\0\4\0\0\0\237~\220\241\377y\220" + "\252\377Vq\217\377Kg\205\377=Yw\3773Pm\3771Nk\3771Nk\3775Ql\377+AV\377" + "AGK\377fmt\377\0\0\0\310\0\0\0+\0\0\0(6<C\322\213\240\266\377g\202\236" + "\377Rn\214\377Gc\201\3779Vt\3772Ol\3771Nk\3771Nk\3776Pj\377%3\77\377" + "hjm\377:BJ\375\0\0\0\226\0\0\0%\34\34\34xnw\201\360\217\243\270\377v" + "\215\246\377h\200\231\377^v\217\377Mf\200\377Ic|\377Ic|\377Ga{\3776G" + "X\377@EI\377ckr\375\22\30\36\342\0\0\0A\0\0\0\17@EI\323r~\214\377Qbu" + "\377O`r\377L]p\377IZm\377ASg\377@Sf\377@Sf\377>Qe\377@JU\377dfi\377@" + "N[\374\2\3\3\232\0\0\0&\0\0\0\3""28=\377Z_d\377yz{\375\250\250\251\377" + "\300\300\301\377\311\311\312\377\325\327\331\377\315\322\327\377\320" + "\325\332\377\306\313\320\377\262\267\273\377v\200\212\377\13\16\22\322" + "\0\0\0U\0\0\0\12\0\0\0\0""5;A\377dq\177\377jz\213\377\272\302\313\377" + "\346\350\352\377\350\352\354\377\351\351\352\377\347\347\351\377\346" + "\347\350\377\325\326\330\377\205\212\221\377DNX\373\0\0\1\226\0\0\0+" + "\0\0\0\2\0\0\0\0\0\0\0V\2\3\6\274,9G\3446DS\355\77Qc\374ex\212\375\257" + "\271\303\374\267\300\311\376\344\350\353\377\274\300\303\377\222\226" + "\231\377*,/\345\0\0\0A\0\0\0\17\0\0\0\0\0\0\0\0\0\0\0\6\0\0\0#\0\0\0" + "\\\0\0\0x\12\15\20\245\30\37&\336\35#+\3623@O\366lz\212\373\203\220\237" + "\372HTa\366\4\6\10\233\0\0\0'\0\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\4\0\0\0\10\0\0\0\15\0\0\0\35\0\0\0""8\0\0\0b\0\0\0\245\0\0\0\265" + "\0\0\0\231\0\0\0H\0\0\0\11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\5\0\0\0\10\0\0\0\26\0\0\0\40\0\0" + "\0\40\0\0\0\23\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0"}; + + +/* GdkPixbuf RGBA C-Source image dump */ + +#ifdef __SUNPRO_C +#pragma align 4 (hoppng) +#endif +#ifdef __GNUC__ +static const guint8 hoppng[] __attribute__ ((__aligned__ (4))) = +#else +static const guint8 hoppng[] = +#endif +{ "" + /* Pixbuf magic (0x47646b50) */ + "GdkP" + /* length: header (24) + pixel_data (196) */ + "\0\0\0\334" + /* pixdata_type (0x1010002) */ + "\1\1\0\2" + /* rowstride (28) */ + "\0\0\0\34" + /* width (7) */ + "\0\0\0\7" + /* height (7) */ + "\0\0\0\7" + /* pixel_data: */ + "\10\22\10\14\2=\367d\3""0\367\251\4-\367\305\3""0\367\251\2=\367d\10" + "\22\10\14\0H\367f\2t\367\302\10\264\367n\12\330\367L\10\264\367n\2t\367" + "\302\0H\367f\1Y\367\302\22\277\367\301\35\341\367\223\40\341\367\232" + "\35\341\367\223\22\277\367\301\1Y\367\302\3r\367\355%\337\367\355D\357" + "\367\334N\363\367\332K\361\367\334$\337\367\355\3r\367\355\12\207\367" + "\320L\361\367\375\206\376\367\373\224\377\367\370\225\377\367\372N\362" + "\367\375\12\207\367\320\25z\367~m\361\367\357\264\375\367\336\322\367" + "\367\272\275\374\367\330o\362\367\357\25z\367~\0\2\367)7\246\367\206" + "k\367\367\275u\377\367\265m\370\367\267:\252\367\206\0\2\367)"}; + + +/* GdkPixbuf RGBA C-Source image dump */ + +#ifdef __SUNPRO_C +#pragma align 4 (oppng) +#endif +#ifdef __GNUC__ +static const guint8 oppng[] __attribute__ ((__aligned__ (4))) = +#else +static const guint8 oppng[] = +#endif +{ "" + /* Pixbuf magic (0x47646b50) */ + "GdkP" + /* length: header (24) + pixel_data (196) */ + "\0\0\0\334" + /* pixdata_type (0x1010002) */ + "\1\1\0\2" + /* rowstride (28) */ + "\0\0\0\34" + /* width (7) */ + "\0\0\0\7" + /* height (7) */ + "\0\0\0\7" + /* pixel_data: */ + "\0\77\0\14\14^\0d\11W\0\251\7U\0\305\11W\0\251\14^\0d\0\77\0\14\24d\0" + "f\"z\0\302.\231\0n2\256\0L.\231\0n\"z\0\302\24d\0f\36m\0\302;\237\0\301" + "E\264\0\223G\264\0\232E\264\0\223;\237\0\301\36m\0\302&y\0\355K\263\0" + "\355_\300\0\334e\304\0\332c\302\0\334J\263\0\355&y\0\3552\203\0\320d" + "\302\0\375\203\330\0\373\212\333\0\370\213\334\0\372e\303\0\3751\203" + "\0\320>}\0~v\302\0\357\234\352\0\336\256\364\0\272\241\354\0\330w\303" + "\0\357>}\0~\30+\0)W\222\0\206u\311\0\275z\336\0\265v\312\0\267Y\224\0" + "\206\30+\0)"}; + + +/* GdkPixbuf RGBA C-Source image dump */ + +#ifdef __SUNPRO_C +#pragma align 4 (purplepng) +#endif +#ifdef __GNUC__ +static const guint8 purplepng[] __attribute__ ((__aligned__ (4))) = +#else +static const guint8 purplepng[] = +#endif +{ "" + /* Pixbuf magic (0x47646b50) */ + "GdkP" + /* length: header (24) + pixel_data (196) */ + "\0\0\0\334" + /* pixdata_type (0x1010002) */ + "\1\1\0\2" + /* rowstride (28) */ + "\0\0\0\34" + /* width (7) */ + "\0\0\0\7" + /* height (7) */ + "\0\0\0\7" + /* pixel_data: */ + "%\0%\14:\0:d5\0""5\2514\0""4\3055\0""5\251:\0:d%\0%\14\77\0\77fQ\0Q\302" + "g\0gnt\0tLg\0gnQ\0Q\302\77\0\77fH\0H\302n\0n\301~\0~\223\177\0\177\232" + "~\0~\223n\0n\301H\0H\302R\0R\355\177\0\177\355\215\0\215\334\221\0\221" + "\332\217\0\217\334\177\0\177\355R\0R\355[\0[\320\217\0\217\375\246\0" + "\246\373\252\0\252\370\252\0\252\372\221\0\221\375[\0[\320[\0[~\225\0" + "\225\357\270\0\270\336\303\0\303\272\273\0\273\330\226\0\226\357[\0[" + "~\40\0\40)p\0p\206\231\0\231\275\246\0\246\265\232\0\232\267q\0q\206" + "\40\0\40)"}; + + +/* GdkPixbuf RGBA C-Source image dump */ + +#ifdef __SUNPRO_C +#pragma align 4 (redpng) +#endif +#ifdef __GNUC__ +static const guint8 redpng[] __attribute__ ((__aligned__ (4))) = +#else +static const guint8 redpng[] = +#endif +{ "" + /* Pixbuf magic (0x47646b50) */ + "GdkP" + /* length: header (24) + pixel_data (196) */ + "\0\0\0\334" + /* pixdata_type (0x1010002) */ + "\1\1\0\2" + /* rowstride (28) */ + "\0\0\0\34" + /* width (7) */ + "\0\0\0\7" + /* height (7) */ + "\0\0\0\7" + /* pixel_data: */ + "%\0\0\14:\0\0d5\0\0\2514\0\0\3055\0\0\251:\0\0d%\0\0\14\77\0\0fQ\0\0" + "\302g\0\0nt\0\0Lg\0\0nQ\0\0\302\77\0\0fH\0\0\302n\0\0\301~\0\0\223\177" + "\0\0\232~\0\0\223n\0\0\301H\0\0\302R\0\0\355\177\0\0\355\215\0\0\334" + "\221\0\0\332\217\0\0\334\177\0\0\355R\0\0\355[\0\0\320\217\0\0\375\246" + "\0\0\373\252\0\0\370\252\0\0\372\221\0\0\375[\0\0\320[\0\0~\225\0\0\357" + "\270\0\0\336\303\0\0\272\273\0\0\330\226\0\0\357[\0\0~\40\0\0)p\0\0\206" + "\231\0\0\275\246\0\0\265\232\0\0\267q\0\0\206\40\0\0)"}; + + +/* GdkPixbuf RGBA C-Source image dump */ + +#ifdef __SUNPRO_C +#pragma align 4 (voicepng) +#endif +#ifdef __GNUC__ +static const guint8 voicepng[] __attribute__ ((__aligned__ (4))) = +#else +static const guint8 voicepng[] = +#endif +{ "" + /* Pixbuf magic (0x47646b50) */ + "GdkP" + /* length: header (24) + pixel_data (196) */ + "\0\0\0\334" + /* pixdata_type (0x1010002) */ + "\1\1\0\2" + /* rowstride (28) */ + "\0\0\0\34" + /* width (7) */ + "\0\0\0\7" + /* height (7) */ + "\0\0\0\7" + /* pixel_data: */ + "\0\0\0\1\77""5\0""0A:\0\223]Q\0\277H>\0\260B:\0A\31\31\0\12FA\0/YO\0" + "\330\234}\0\230\267\217\0g\252\210\0{l]\0\34593\0PZM\0w\225\200\0\375" + "\255\204\0\336\256\203\0\304\256\203\0\323\237\200\0\372fW\0\257l]\0" + "\210\257\214\0\354\263\207\0\274\267\212\0\253\264\210\0\265\261\212" + "\0\337zf\0\275u[\0b\270\215\0\323\316\233\0\242\341\251\0\214\325\241" + "\0\230\306\235\0\306ub\0\211\0\0\0!jP\0|\322\236\0\242\377\277\0\205" + "\350\256\0\224\201`\0\216\32\26\0""9\0\0\0\11\0\0\0)ZB\0hkR\0o`H\0j\15" + "\10\0:\0\0\0\21"}; + + +/* GdkPixbuf RGBA C-Source image dump */ + +#ifdef __SUNPRO_C +#pragma align 4 (xchatpng) +#endif +#ifdef __GNUC__ +static const guint8 xchatpng[] __attribute__ ((__aligned__ (4))) = +#else +static const guint8 xchatpng[] = +#endif +{ "" + /* Pixbuf magic (0x47646b50) */ + "GdkP" + /* length: header (24) + pixel_data (9216) */ + "\0\0$\30" + /* pixdata_type (0x1010002) */ + "\1\1\0\2" + /* rowstride (192) */ + "\0\0\0\300" + /* width (48) */ + "\0\0\0""0" + /* height (48) */ + "\0\0\0""0" + /* pixel_data: */ + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\23\0\0\0\40\0" + "\0\0\17\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\17\0\0\0\40\0\0\0\23\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0,\0\0\0\177\0\0\0\233\0\0\0x\0\0\0!\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0!\0\0\0x\0\0\0\233\0\0\0\177\0" + "\0\0,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0,\0\0\0" + "\203\0\0\0\334\13\12\2\375\0\0\0\321\0\0\0{\0\0\0!\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0!\0\0\0{\0\0\0\321\13\11\2\375\0\0\0\334\0\0\0\203\0\0\0" + ",\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0,\0\0\0\203\0\0\0\334LE\4\377" + "\346\321\4\377/+\5\376\0\0\0\321\0\0\0{\0\0\0!\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0!\0\0\0{" + "\0\0\0\321/)\5\376\346\305\4\377LA\4\377\0\0\0\334\0\0\0\203\0\0\0,\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0,\0\0\0\203\0\0\0\334LE\4\377\370\342\1\377\377" + "\350\0\377\350\323\4\377)%\5\376\0\0\0\321\0\0\0{\0\0\0!\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0!\0\0\0{\0\0\0" + "\321)#\5\376\350\303\4\377\377\326\0\377\370\320\1\377L@\4\377\0\0\0" + "\334\0\0\0\203\0\0\0,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0,\0\0\0\203\0\0\0\334LE\4\377\370\340\1" + "\377\377\345\0\377\377\344\0\377\377\344\0\377\343\312\4\377\"\37\4\376" + "\0\0\0\321\0\0\0x\0\0\0\31\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\31\0\0\0x\0\0\0\321\"\35\4\376\343\274\4\377\377\322\0\377\377" + "\321\0\377\377\320\0\377\370\312\1\377L>\4\377\0\0\0\334\0\0\0\203\0" + "\0\0,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0," + "\0\0\0\203\0\0\0\334LC\4\377\370\334\1\377\377\341\0\377\377\340\0\377" + "\377\340\0\377\377\337\0\377\377\336\0\377\336\301\3\377\35\31\2\376" + "\0\0\0\305\0\0\0r\0\0\0\30\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\30\0\0\0" + "r\0\0\0\305\35\27\2\376\336\264\3\377\377\316\0\377\377\315\0\377\377" + "\314\0\377\377\314\0\377\377\313\0\377\370\305\1\377L<\4\377\0\0\0\334" + "\0\0\0\203\0\0\0,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0,\0\0" + "\0\203\0\0\0\334LB\4\377\370\330\1\377\377\335\0\377\377\334\0\377\377" + "\334\0\377\377\333\0\377\377\332\0\377\377\331\0\377\377\331\0\377\327" + "\267\5\377\30\24\4\375\0\0\0\305\0\0\0r\0\0\0\30\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\30" + "\0\0\0r\0\0\0\305\30\23\4\375\327\253\5\377\377\312\0\377\377\311\0\377" + "\377\310\0\377\377\310\0\377\377\307\0\377\377\306\0\377\377\305\0\377" + "\370\300\1\377L;\4\377\0\0\0\334\0\0\0\203\0\0\0,\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0$\0\0\0\203\0\0\0\334LA\4\377\370\324\1\377\377\331\0\377\377" + "\330\0\377\377\330\0\377\377\327\0\377\377\326\0\377\377\325\0\377\377" + "\325\0\377\377\324\0\377\377\323\0\377\317\254\7\377\23\20\4\375\0\0" + "\0\305\0\0\0r\0\0\0\27\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\27\0\0\0r\0\0\0\305\23\17\4\375\317\242\7\377" + "\377\306\0\377\377\305\0\377\377\304\0\377\377\304\0\377\377\303\0\377" + "\377\302\0\377\377\301\0\377\377\301\0\377\377\300\0\377\370\272\1\377" + "L9\4\377\0\0\0\334\0\0\0\203\0\0\0$\0\0\0\0\0\0\0\0\0\0\0N\0\0\0\305" + "G<\4\377\370\320\1\377\377\325\0\377\377\324\0\377\377\323\0\377\377" + "\323\0\377\377\322\0\377\377\321\0\377\377\321\0\377\377\320\0\377\377" + "\317\0\377\377\316\0\377\377\316\0\377\307\241\6\377\15\13\3\375\0\0" + "\0\302\0\0\0j\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\20\0\0\0j\0\0\0\302\15\13\3\375\307\230\6\377\377\302\0\377" + "\377\301\0\377\377\300\0\377\377\277\0\377\377\277\0\377\377\276\0\377" + "\377\275\0\377\377\275\0\377\377\274\0\377\377\273\0\377\377\272\0\377" + "\370\265\1\377G4\4\377\0\0\0\305\0\0\0N\0\0\0\0\0\0\0\0\0\0\0J\0\0\0" + "\270\36\31\3\375\331\263\5\377\377\320\0\377\377\317\0\377\377\317\0" + "\377\377\316\0\377\377\315\0\377\377\315\0\377\377\314\0\377\377\313" + "\0\377\377\312\0\377\377\312\0\377\377\311\0\377\377\310\0\377\276\226" + "\4\377\11\10\2\374\0\0\0\270\0\0\0h\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\20\0\0\0h\0\0\0\270\11\7\2\374\276\217\4\377\377\276\0" + "\377\377\275\0\377\377\274\0\377\377\273\0\377\377\273\0\377\377\272" + "\0\377\377\271\0\377\377\271\0\377\377\270\0\377\377\267\0\377\377\266" + "\0\377\377\266\0\377\331\234\5\377\36\26\3\375\0\0\0\270\0\0\0J\0\0\0" + "\0\0\0\0\0\0\0\0\25\0\0\0r\0\0\0\305\32\26\4\375\323\252\6\377\377\313" + "\0\377\377\312\0\377\377\311\0\377\377\310\0\377\377\310\0\377\377\307" + "\0\377\377\306\0\377\377\306\0\377\377\305\0\377\377\304\0\377\377\303" + "\0\377\377\303\0\377\266\213\7\377\7\6\2\373\0\0\0\270\0\0\0h\0\0\0\20" + "\0\0\0\0\0\0\0\0\0\0\0\20\0\0\0h\0\0\0\270\7\6\2\373\266\206\7\377\377" + "\271\0\377\377\271\0\377\377\270\0\377\377\267\0\377\377\267\0\377\377" + "\266\0\377\377\265\0\377\377\264\0\377\377\264\0\377\377\263\0\377\377" + "\262\0\377\377\262\0\377\323\225\6\377\32\23\4\375\0\0\0\305\0\0\0r\0" + "\0\0\25\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\30\0\0\0r\0\0\0\305\26\22\4\375" + "\315\240\6\377\377\305\0\377\377\304\0\377\377\304\0\377\377\303\0\377" + "\377\302\0\377\377\302\0\377\377\301\0\377\377\300\0\377\377\277\0\377" + "\377\277\0\377\377\276\0\377\377\275\0\377\255\201\10\377\5\4\2\373\0" + "\0\0\270\0\0\0g\0\0\0\13\0\0\0\13\0\0\0g\0\0\0\270\5\4\2\373\255}\10" + "\377\377\265\0\377\377\265\0\377\377\264\0\377\377\263\0\377\377\263" + "\0\377\377\262\0\377\377\261\0\377\377\260\0\377\377\260\0\377\377\257" + "\0\377\377\256\0\377\377\256\0\377\315\215\6\377\26\20\4\375\0\0\0\305" + "\0\0\0r\0\0\0\30\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\30\0\0" + "\0r\0\0\0\305\21\16\3\375\307\227\4\377\377\300\0\377\377\277\0\377\377" + "\276\0\377\377\276\0\377\377\275\0\377\377\274\0\377\377\273\0\377\377" + "\273\0\377\377\272\0\377\377\271\0\377\377\270\0\377\377\270\0\377\244" + "w\7\377\3\2\1\373\0\0\0\252\0\0\0V\0\0\0V\0\0\0\252\3\2\1\373\244t\7" + "\377\377\261\0\377\377\261\0\377\377\260\0\377\377\257\0\377\377\256" + "\0\377\377\256\0\377\377\255\0\377\377\254\0\377\377\254\0\377\377\253" + "\0\377\377\252\0\377\377\251\0\377\307\205\4\377\21\14\3\375\0\0\0\305" + "\0\0\0r\0\0\0\30\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\30\0\0\0r\0\0\0\304\15\12\2\374\277\216\6\377\377\272\0\377" + "\377\271\0\377\377\271\0\377\377\270\0\377\377\267\0\377\377\267\0\377" + "\377\266\0\377\377\265\0\377\377\264\0\377\377\264\0\377\377\263\0\377" + "\377\262\0\377\232m\5\377\2\1\1\364\0\0\0\241\0\0\0\241\2\1\1\364\232" + "j\5\377\377\255\0\377\377\255\0\377\377\254\0\377\377\253\0\377\377\252" + "\0\377\377\252\0\377\377\251\0\377\377\250\0\377\377\250\0\377\377\247" + "\0\377\377\246\0\377\377\245\0\377\277~\6\377\15\11\2\374\0\0\0\304\0" + "\0\0r\0\0\0\30\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\30\0\0\0n\0\0\0\271\13\10\2\373\267\204\10\377" + "\377\265\0\377\377\264\0\377\377\263\0\377\377\262\0\377\377\262\0\377" + "\377\261\0\377\377\260\0\377\377\260\0\377\377\257\0\377\377\256\0\377" + "\377\256\0\377\377\255\0\377\217c\11\377\1\1\0\366\1\1\0\366\217b\11" + "\377\377\251\0\377\377\250\0\377\377\250\0\377\377\247\0\377\377\246" + "\0\377\377\246\0\377\377\245\0\377\377\244\0\377\377\244\0\377\377\243" + "\0\377\377\242\0\377\377\241\0\377\267v\10\377\13\10\2\373\0\0\0\271" + "\0\0\0n\0\0\0\30\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\20\0\0\0h\0\0\0\270\10\6\2" + "\373\256{\10\377\377\257\0\377\377\256\0\377\377\256\0\377\377\255\0" + "\377\377\254\0\377\377\254\0\377\377\253\0\377\377\252\0\377\377\251" + "\0\377\377\251\0\377\377\250\0\377\377\247\0\377\204Y\12\377\204Y\12" + "\377\377\245\0\377\377\244\0\377\377\244\0\377\377\243\0\377\377\242" + "\0\377\377\242\0\377\377\241\0\377\377\240\0\377\377\237\0\377\377\237" + "\0\377\377\236\0\377\377\235\0\377\256n\10\377\10\6\2\373\0\0\0\270\0" + "\0\0h\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\20\0\0\0h\0" + "\0\0\270\5\4\2\373\245q\6\377\377\252\0\377\377\251\0\377\377\250\0\377" + "\377\250\0\377\377\247\0\377\377\246\0\377\377\245\0\377\377\245\0\377" + "\377\244\0\377\377\243\0\377\377\243\0\377\377\242\0\377\377\241\0\377" + "\377\240\0\377\377\240\0\377\377\237\0\377\377\236\0\377\377\236\0\377" + "\377\235\0\377\377\234\0\377\377\233\0\377\377\233\0\377\377\232\0\377" + "\377\231\0\377\245f\6\377\5\4\2\373\0\0\0\270\0\0\0h\0\0\0\20\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\20\0\0\0h\0\0\0\270" + "\3\2\1\373\235h\6\377\377\244\0\377\377\243\0\377\377\243\0\377\377\242" + "\0\377\377\241\0\377\377\241\0\377\377\240\0\377\377\237\0\377\377\236" + "\0\377\377\236\0\377\377\235\0\377\377\234\0\377\377\234\0\377\377\233" + "\0\377\377\232\0\377\377\231\0\377\377\231\0\377\377\230\0\377\377\227" + "\0\377\377\227\0\377\377\226\0\377\377\225\0\377\235^\6\377\3\2\1\373" + "\0\0\0\270\0\0\0h\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\20\0\0\0g\0\0\0\246\2\2\1\364\223`\10" + "\377\377\237\0\377\377\236\0\377\377\235\0\377\377\235\0\377\377\234" + "\0\377\377\233\0\377\377\232\0\377\377\232\0\377\377\231\0\377\377\230" + "\0\377\377\230\0\377\377\227\0\377\377\226\0\377\377\225\0\377\377\225" + "\0\377\377\224\0\377\377\223\0\377\377\223\0\377\377\222\0\377\377\221" + "\0\377\223W\10\377\2\1\1\364\0\0\0\246\0\0\0g\0\0\0\20\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\11\0\0\0R\0\0\0\240\1\1\1\364\206T\10\377\353\215\1\377\364" + "\222\0\377\377\227\0\377\377\227\0\377\377\226\0\377\377\226\0\377\377" + "\225\0\377\377\224\0\377\377\223\0\377\377\223\0\377\377\222\0\377\377" + "\221\0\377\377\221\0\377\377\220\0\377\377\217\0\377\377\216\0\377\377" + "\216\0\377\377\215\0\377\212P\10\377\1\1\1\364\0\0\0\240\0\0\0R\0\0\0" + "\11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5\5\5\13\5\5\5\13\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\6\0\0\0R\0\0\0\244\251\251" + "\251\376\333\333\333\377\331\305\250\377\363\214\0\377\377\222\0\377" + "\377\222\0\377\377\221\0\377\377\220\0\377\377\217\0\377\377\217\0\377" + "\377\216\0\377\377\215\0\377\377\215\0\377\377\214\0\377\377\213\0\377" + "\377\212\0\377\377\212\0\377\377\211\0\377\201H\6\377\1\1\0\364\0\0\0" + "\240\0\0\0R\0\0\0\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5\5\5\14\323\323" + "\323\316\323\323\323\316\5\5\5\14\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\3\3\3\13\5\5\5\25\6\6\6\26\6\6\6\26\6\6\6\26\6\6\6\26\6\6\6\26\5" + "\5\5\26\5\5\5\25\3\3\3\13\0\0\0\6\1\1\1^\345\345\345\377\345\345\345" + "\377\345\345\345\377\224[\23\377\352\202\0\377\351\201\0\377\351\200" + "\0\377\351\200\0\377\351\177\0\377\352\177\0\377\364\203\0\377\377\210" + "\0\377\377\207\0\377\364\201\0\377\352{\0\377\351z\0\377\351z\1\377t" + "\77\5\377\0\0\0\366\0\0\0\252\1\1\1c\4\4\4\33\4\4\4\25\3\3\3\13\0\0\0" + "\0\0\0\0\0\2\2\2\14UUU:\350\350\350\377\350\350\350\377&&&}\2\2\2\14" + "\0\0\0\0\0\0\0\0\0\0\0\0\2\2\2\14\336\336\336\316\354\354\354\377\354" + "\354\354\377\354\354\354\377\354\354\354\377\354\354\354\377\354\354" + "\354\377\354\354\354\377\354\354\354\377\337\337\337\316\2\2\2\13\3\3" + "\3\33\355\355\355\377\355\355\355\377\355\355\355\377\355\355\355\377" + "\355\355\355\377\355\355\355\377\355\355\355\377\355\355\355\377\355" + "\355\355\377\355\355\355\377\346\316\265\377\363}\0\377\363}\0\377\346" + "\316\265\377\356\356\356\377\356\356\356\377\356\356\356\377\356\356" + "\356\377\356\356\356\377\356\356\356\377\356\356\356\377\356\356\356" + "\377\356\356\356\377\341\341\341\316\2\2\2\14\2\2\2\13\341\341\341\316" + "\357\357\357\377\357\357\357\377\357\357\357\377\357\357\357\377\341" + "\341\341\316\2\2\2\13\0\0\0\0\0\0\0\0\3\3\3\26\362\362\362\377\362\362" + "\362\377\362\362\362\377\362\362\362\377\362\362\362\377\362\362\362" + "\377\362\362\362\377\362\362\362\377\362\362\362\377\306\306\306\354" + "\0\0\0i\1\1\1""7\362\362\362\377\362\362\362\377\362\362\362\377\362" + "\362\362\377\362\362\362\377\362\362\362\377\362\362\362\377\362\362" + "\362\377\363\363\363\377\363\363\363\377\363\363\363\377\222I\0\377\352" + "s\0\377\363\363\363\377\363\363\363\377\363\363\363\377\363\363\363\377" + "\363\363\363\377\363\363\363\377\363\363\363\377\363\363\363\377\363" + "\363\363\377\363\363\363\377\363\363\363\377\0\0\0m\2\2\2\13\344\344" + "\344\322\363\363\363\377\363\363\363\377\363\363\363\377\363\363\363" + "\377\307\307\307\354\0\0\0i\0\0\0\0\0\0\0\0\2\2\2\26\366\366\366\377" + "\366\366\366\377\366\366\366\377\33\33\33\263\0\0\0\245\0\0\0\245\0\0" + "\0\245\0\0\0\245\0\0\0\245\0\0\0\241\0\0\0\201\0\0\0\204\366\366\366" + "\377\366\366\366\377\366\366\366\377^8\23\377Z,\0\377Z,\0\377Z,\0\377" + "^7\23\377\366\366\366\377\366\366\366\377\366\366\366\377m4\0\377\351" + "o\0\377\367\367\367\377\367\367\367\377\367\367\367\377^6\23\377T'\1" + "\377\22\11\1\377\0\0\0\361\0\0\0\321\31\31\31\300\367\367\367\377\367" + "\367\367\377\20\20\20\231\0\0\0\1bbb1\367\367\367\377\367\367\367\377" + "\367\367\367\377\33\33\33\263\0\0\0\241\0\0\0c\0\0\0\0\0\0\0\0\1\1\1" + "\26\371\371\371\377\371\371\371\377\371\371\371\377\0\0\0\231\0\0\0\4" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0!\0\0\0{\0\0\0\322\371\371\371" + "\377\371\371\371\377\371\371\371\377f0\0\377\373x\0\377\377z\0\377\377" + "y\0\377\351m\0\377\371\371\371\377\371\371\371\377\371\371\371\377m2" + "\0\377\351j\0\377\371\371\371\377\371\371\371\377\371\371\371\377f-\0" + "\377\373o\0\377\350h\3\377(\24\5\376\0\0\0\321\0\0\0\210\371\371\371" + "\377\372\372\372\377\327\327\327\342\0\0\0\14\1\1\1\26\372\372\372\377" + "\372\372\372\377\372\372\372\377\0\0\0\231\0\0\0\4\0\0\0\0\0\0\0\0\0" + "\0\0\0\1\1\1\26\373\373\373\377\373\373\373\377\373\373\373\377\0\0\0" + "\222\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0!\0\0\0{\0\0\0\321\33\17\4" + "\376\373\373\373\377\373\373\373\377\373\373\373\377m2\0\377\377v\0\377" + "\377u\0\377\377t\0\377\351i\0\377\373\373\373\377\373\373\373\377\373" + "\373\373\377m0\0\377\351f\0\377\373\373\373\377\373\373\373\377\373\373" + "\373\377m.\0\377\377l\0\377\377l\0\377\341a\5\377!\21\5\376\0\0\0\330" + "\373\373\373\377\373\373\373\377\373\373\373\377\0\0\0n\0\0\0\26\373" + "\373\373\377\373\373\373\377\373\373\373\377\0\0\0\222\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\26\374\374\374\377\374\374\374\377\374\374\374" + "\377\36\36\36\241\0\0\0\26\0\0\0\26\0\0\0\26\0\0\0&\0\0\0\202\0\0\0\322" + "\33\16\4\376\305\\\5\377\374\374\374\377\374\374\374\377\374\374\374" + "\377m0\0\377\377q\0\377\377p\0\377\377o\0\377\351e\0\377\374\374\374" + "\377\374\374\374\377\374\374\374\377m.\0\377\351b\0\377\374\374\374\377" + "\374\374\374\377\374\374\374\377p9\23\377\351^\0\377\352^\0\377\364a" + "\0\377\332Z\5\377\33\15\4\376\375\375\375\377\375\375\375\377\375\375" + "\375\377\0\0\0\222\0\0\0\26\375\375\375\377\375\375\375\377\375\375\375" + "\377\36\36\36\241\0\0\0\14\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\26\375\375\375" + "\377\375\375\375\377\375\375\375\377\375\375\375\377\375\375\375\377" + "\375\375\375\377\375\375\375\377\375\375\375\377\375\375\375\377\302" + "\301\300\377\313[\4\377\351f\0\377\375\375\375\377\375\375\375\377\375" + "\375\375\377m.\0\377\377l\0\377\377k\0\377\377k\0\377\351a\0\377\375" + "\375\375\377\375\375\375\377\375\375\375\377m,\0\377\351]\0\377\375\375" + "\375\377\376\376\376\377\376\376\376\377\376\376\376\377\376\376\376" + "\377\376\376\376\377\361\322\300\377\364\\\0\377\307L\3\377\376\376\376" + "\377\376\376\376\377\376\376\376\377\0\0\0\227\0\0\0\26\376\376\376\377" + "\376\376\376\377\376\376\376\377\376\376\376\377\355\355\355\316\0\0" + "\0\13\0\0\0\0\0\0\0\0\0\0\0\14\356\356\356\316\376\376\376\377\376\376" + "\376\377\376\376\376\377\376\376\376\377\376\376\376\377\376\376\376" + "\377\376\376\376\377\376\376\376\377\323\310\300\377\226\77\0\377\363" + "f\0\377\361\324\300\377\376\376\376\377\323\307\300\377q.\0\377\377g" + "\0\377\377g\0\377\377f\0\377\363`\0\377\357\322\301\377\376\376\376\377" + "\302\301\300\377j)\1\377\363]\0\377\361\322\300\377\376\376\376\377\376" + "\376\376\377\376\376\376\377\376\376\376\377\376\376\376\377\323\306" + "\300\377\2266\0\377\363V\0\377\361\321\300\377\376\376\376\377\304\304" + "\304\372\0\0\0\271\0\0\0\33\355\355\355\316\376\376\376\377\376\376\376" + "\377\376\376\376\377\317\317\317\354\0\0\0i\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\20\0\0\0\215\0\0\0\245\0\0\0\245\0\0\0\253\0\0\0\313\0\0\0\347\5" + "\3\1\376H\36\2\377^&\0\377\234>\0\377\377f\0\377\357_\0\377r-\0\377^" + "%\0\377\234<\0\377\377b\0\377\377b\0\377\377a\0\377\346Z\5\377*\23\4" + "\376\0\0\0\353\0\0\0\360\36\15\3\377\346V\5\377\357V\0\377r(\0\377Z\40" + "\0\377Z\40\0\377Z\40\0\377Z\37\0\377^\40\1\377\2345\0\377\377V\0\377" + "\357P\0\377`!\3\377\6\3\2\376\1\1\1\322\0\0\0h\0\0\0\37\1\1\1\215\2\2" + "\2\245\2\2\2\245\2\2\2\241\2\2\2c\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\12\0\0\0c\0\0\0\270\12\5\2\373\276N\6\377\377c\0\377" + "\377c\0\377\377b\0\377\377a\0\377\377a\0\377\377`\0\377\377_\0\377\377" + "^\0\377\377^\0\377\377]\0\377\341U\5\377'\22\5\376\0\0\0\321\0\0\0}\0" + "\0\0}\0\0\0\321'\21\5\376\341P\5\377\377W\0\377\377V\0\377\377U\0\377" + "\377T\0\377\377T\0\377\377S\0\377\377R\0\377\377R\0\377\377Q\0\377\377" + "P\0\377\276\77\6\377\12\4\2\373\0\0\0\270\0\0\0c\0\0\0\12\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\12" + "\0\0\0]\0\0\0\254\7\3\1\372\267G\4\377\377_\0\377\377_\0\377\377^\0\377" + "\377]\0\377\377\\\0\377\377\\\0\377\377[\0\377\377Z\0\377\377Z\0\377" + "\377Y\0\377\334O\4\377!\17\5\376\0\0\0\321\0\0\0{\0\0\0!\0\0\0!\0\0\0" + "{\0\0\0\321!\16\5\376\334J\4\377\377Q\0\377\377P\0\377\377P\0\377\377" + "O\0\377\377N\0\377\377N\0\377\377M\0\377\377L\0\377\377K\0\377\377K\0" + "\377\2678\4\377\7\3\1\372\0\0\0\254\0\0\0]\0\0\0\12\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\12\0\0\0]\0\0\0\254\5\3" + "\2\371\255B\7\377\377[\0\377\377[\0\377\377Z\0\377\377Y\0\377\377X\0" + "\377\377X\0\377\377W\0\377\377V\0\377\377V\0\377\377U\0\377\326I\4\377" + "\33\13\3\376\0\0\0\321\0\0\0{\0\0\0!\0\0\0\0\0\0\0\0\0\0\0!\0\0\0{\0" + "\0\0\321\33\13\3\376\326C\4\377\377L\0\377\377K\0\377\377J\0\377\377" + "I\0\377\377I\0\377\377H\0\377\377G\0\377\377G\0\377\377F\0\377\377E\0" + "\377\2553\7\377\5\2\2\371\0\0\0\254\0\0\0]\0\0\0\12\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\11\0\0\0]\0\0\0\254\3\2\1\371\242=\11\377" + "\377W\0\377\377W\0\377\377V\0\377\377U\0\377\377T\0\377\377T\0\377\377" + "S\0\377\377R\0\377\377R\0\377\377Q\0\377\317E\6\377\27\11\3\375\0\0\0" + "\314\0\0\0{\0\0\0!\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0!\0\0\0{\0\0" + "\0\314\27\11\3\375\317>\6\377\377F\0\377\377E\0\377\377E\0\377\377D\0" + "\377\377C\0\377\377C\0\377\377B\0\377\377A\0\377\377@\0\377\377@\0\377" + "\242.\11\377\3\2\1\371\0\0\0\254\0\0\0]\0\0\0\11\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0B\0\0\0\247\1\1\1\371\2277\10\377\377S\0\377\377R\0" + "\377\377R\0\377\377Q\0\377\377P\0\377\377P\0\377\377O\0\377\377N\0\377" + "\377M\0\377\377M\0\377\310A\7\377\23\10\4\375\0\0\0\305\0\0\0r\0\0\0" + "\37\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\37\0\0\0r\0" + "\0\0\305\23\10\4\375\3109\7\377\377A\0\377\377@\0\377\377\77\0\377\377" + ">\0\377\377>\0\377\377=\0\377\377<\0\377\377<\0\377\377;\0\377\377:\0" + "\377\227(\10\377\1\1\1\371\0\0\0\247\0\0\0B\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0O\0\0\0\315U\36\5\377\377O\0\377\377N\0\377\377N\0\377\377" + "M\0\377\377L\0\377\377L\0\377\377K\0\377\377J\0\377\377I\0\377\377I\0" + "\377\301;\6\377\17\7\3\375\0\0\0\305\0\0\0r\0\0\0\30\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\30\0\0\0r\0\0" + "\0\305\17\6\3\375\3012\6\377\377;\0\377\377:\0\377\377:\0\377\3779\0" + "\377\3778\0\377\3778\0\377\3777\0\377\3776\0\377\3775\0\377\3775\0\377" + "U\26\5\377\0\0\0\315\0\0\0O\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0<\0" + "\0\0\236\2\1\1\364\2320\4\377\377J\0\377\377I\0\377\377H\0\377\377G\0" + "\377\377G\0\377\377F\0\377\377E\0\377\377E\0\377\2725\5\377\13\5\2\375" + "\0\0\0\305\0\0\0r\0\0\0\30\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\30\0\0\0r\0\0\0\305\13\4" + "\2\375\272,\5\377\3776\0\377\3775\0\377\3774\0\377\3773\0\377\3773\0" + "\377\3772\0\377\3771\0\377\3771\0\377\232!\4\377\2\1\1\364\0\0\0\236" + "\0\0\0<\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5\0\0\0R\0\0\0\240\2\1" + "\1\364\232-\4\377\377D\0\377\377C\0\377\377C\0\377\377B\0\377\377A\0" + "\377\377A\0\377\2622\6\377\10\3\2\372\0\0\0\302\0\0\0r\0\0\0\30\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\30\0\0\0r\0\0\0\302\10\3\2\372\262(\6\377" + "\3770\0\377\377/\0\377\377/\0\377\377.\0\377\377-\0\377\377-\0\377\232" + "\36\4\377\2\1\1\364\0\0\0\240\0\0\0R\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\6\0\0\0R\0\0\0\240\2\1\1\364\232*\4\377\377\77" + "\0\377\377>\0\377\377=\0\377\377<\0\377\252.\10\377\6\3\2\371\0\0\0\254" + "\0\0\0f\0\0\0\27\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\27" + "\0\0\0f\0\0\0\254\6\3\2\371\252$\10\377\377+\0\377\377*\0\377\377)\0" + "\377\377(\0\377\232\34\4\377\2\1\1\364\0\0\0\240\0\0\0R\0\0\0\6\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\6\0\0\0R\0\0" + "\0\240\2\1\1\364\232&\4\377\3779\0\377\3778\0\377\242)\7\377\5\2\2\371" + "\0\0\0\254\0\0\0]\0\0\0\12\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\12\0\0\0]\0\0\0\254\5\2\2\371\242\36\7\377\377" + "&\0\377\377%\0\377\232\32\4\377\2\1\1\364\0\0\0\240\0\0\0R\0\0\0\6\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\6\0\0\0R\0\0\0\240\2\1\1\364\231#\5\377\231$\6\377\3\1\1\371" + "\0\0\0\254\0\0\0]\0\0\0\12\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\12\0\0\0]\0\0\0\254\3\1\1\371" + "\231\33\6\377\231\32\5\377\2\1\1\364\0\0\0\240\0\0\0R\0\0\0\6\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\6\0\0\0R\0\0\0\240\0\0\0\360\0\0\0\366\0\0\0\254\0" + "\0\0]\0\0\0\12\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\12\0\0\0]\0\0\0\254\0\0" + "\0\366\0\0\0\360\0\0\0\240\0\0\0R\0\0\0\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\6\0\0\0M\0\0\0\203\0\0\0\211\0\0\0[\0\0\0\12\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\12\0\0\0[\0\0\0\211\0\0\0\203\0" + "\0\0M\0\0\0\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\1\0\0\0\20\0\0\0\22\0\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0\22\0\0\0\20\0\0\0\1\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0"}; + + diff --git a/xchat-2.8.8/src/pixmaps/message.png b/xchat-2.8.8/src/pixmaps/message.png new file mode 100644 index 0000000000000000000000000000000000000000..de09c2ae03bbbf9d574f15edd2b26ac0496665f8 GIT binary patch literal 5152 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 O0000<MNUMnLSTYVZ2J8G literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/src/pixmaps/op.png b/xchat-2.8.8/src/pixmaps/op.png new file mode 100644 index 0000000000000000000000000000000000000000..8b2f4f9f7e1ba2688cf362a68b9761086c729e80 GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^>>$j+1|*LJg<l3zdp%toLn>~u9<=Q`<iOByQGc@H zD~o@vD_ByQowUC4gxzygsj%eM6`QSVdpIvyyJ?4aL8!|X14X}@^GPk&7$=7xx*@U4 z=|i@7g#9<2rQ$|ww{?^pSe~=#wBHxG>NHn&#n8?Z{3k;v2OKz1;-SS?S*AY8)p!59 z#^o<9gpzrb&SlOq@mOo|!?ew@JL}-H)JTrR#N%DPS2VT7neIP*rM2z5y8QDQWvZ#E u>f--i$6i|F^ONJ{$Nt+7+t<Ih>^5g*u)6i;UR)H=BMhFdelF{r5}E*aO=8~w literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/src/pixmaps/purple.png b/xchat-2.8.8/src/pixmaps/purple.png new file mode 100644 index 0000000000000000000000000000000000000000..5910d3f0d22c8c5a2cf6e2c40155434daa342ec8 GIT binary patch literal 240 zcmV<M01y9(P)<h;3K|Lk000e1NJLTq000L7000LF1^@s6#8Ow&0002DNkl<Zc-jTQ zL2AN47=Y1l#($KVXh;Gk5UWBVtG37J9f}06rwei8&K{$yfOMm)QIL{_snVqHse)oS zX8iHs@!rurDb&eeKF^%jl9MkIk}@UTj2L~_)XyHjG#D)wTTYpF5mBK~uMYP+V9?#T zmEv$OF)<<GM3A<n)e03m9AdG@i0CaN3kCTDv_|(V_Dg_mpZ+`{xdsG>hGur*k^$RZ qP3=?CyTJqv&E4aFDyrR{{pugh)-(ujfPP*80000<MNUMnLSTYs@Mf3* literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/src/pixmaps/red.png b/xchat-2.8.8/src/pixmaps/red.png new file mode 100644 index 0000000000000000000000000000000000000000..cb940a33fe8f035da944092b707c653e8d75650f GIT binary patch literal 212 zcmV;_04x8AP)<h;3K|Lk000e1NJLTq000L7000LF1^@s6#8Ow&0001+Nkl<Zc-jTQ zu}VTw007W)pZ67NiV7-JC<wYl{YB6xh=jkVL%6in)+f|dh)YgS!NkQ3eVr5fTr?T} zai4P?Sf;$Ln8r&+4IW!ORaorkWsFmj@W9)EyvBRrJm>d^yDvg4aZ^W?tH|j@5~!CD zi+tC(ZBvaLkt7s~d_>I7=r-7tneXYWX=7H{k+nFal=mDmwx2w|F!=|8&nG-F_csv$ O0000<MNUMnLSTaTtXPZy literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/src/pixmaps/voice.png b/xchat-2.8.8/src/pixmaps/voice.png new file mode 100644 index 0000000000000000000000000000000000000000..8bbf7a57c6d6e8d828d8110d96090b5e6b29c119 GIT binary patch literal 267 zcmV+m0rdWfP)<h;3K|Lk000e1NJLTq000L7000LF1^@s6#8Ow&0002eNkl<Zc-jTQ zO-sUX0Knnj+`q|U%uT0)cnHHt5{5)Uc#u3ux9(m%_+dQv2|6p}ty3L31%ijb!_-3& zLPAkG@?~su_&gFI)h@7O2ek89%0Iuje#o8k!9Z?YV`nY8w^z)nr#zn(SZ+c(TaSsb zG;XRDil#u>t|$vgoF9|+eOe-EVCFOyBH&%fEOrrYGLB{?(1jW?RVC&bi?5W<_sT<a zL(E{zP<|b;)DMYWmPnoC`HLcy-V>kqkMt!#1&*3^YNkPay&-sb;qBkU*#j*jKweKc R>O24d002ovPDHLkV1iFcZ<zo9 literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/src/version-script b/xchat-2.8.8/src/version-script new file mode 100644 index 0000000..048c1f5 --- /dev/null +++ b/xchat-2.8.8/src/version-script @@ -0,0 +1,34 @@ +EXPORTED { + global: + xchat_hook_command; + xchat_hook_server; + xchat_hook_print; + xchat_hook_timer; + xchat_hook_fd; + xchat_unhook; + xchat_print; + xchat_printf; + xchat_command; + xchat_commandf; + xchat_nickcmp; + xchat_set_context; + xchat_find_context; + xchat_get_context; + xchat_get_info; + xchat_get_prefs; + xchat_list_get; + xchat_list_free; + xchat_list_fields; + xchat_list_next; + xchat_list_str; + xchat_list_int; + xchat_plugingui_add; + xchat_plugingui_remove; + xchat_emit_print; + xchat_list_time; + xchat_gettext; + xchat_send_modes; + xchat_strip; + xchat_free; + local: *; +}; diff --git a/xchat-2.8.8/stamp-h1 b/xchat-2.8.8/stamp-h1 new file mode 100644 index 0000000..4547fe1 --- /dev/null +++ b/xchat-2.8.8/stamp-h1 @@ -0,0 +1 @@ +timestamp for config.h diff --git a/xchat-2.8.8/xchat.desktop b/xchat-2.8.8/xchat.desktop new file mode 100644 index 0000000..e744cd1 --- /dev/null +++ b/xchat-2.8.8/xchat.desktop @@ -0,0 +1,23 @@ +[Desktop Entry] +Encoding=UTF-8 +Name=XChat IRC +Name[zh_TW]=網路清談 +Comment[de]=IRC-Client +Comment[es]=Aplicación de IRC +Comment[fi]=IRC-sovellus +Comment[fr]=Client IRC +Comment[hu]=IRC-kliens +Comment[lt]=IRC klientas +Comment[no]=IRC-klient +Comment[pt_BR]=Cliente de IRC +Comment[sl]=Odjemalec IRC +Comment[sv]=IRC-klient +Comment[ro]=Client de IRC +Comment[zh_TW]=X-Chat 聊天程式 +Comment=Chat with other people using Internet Relay Chat +Exec=xchat +Icon=xchat +Terminal=false +Type=Application +Categories=Network; +StartupNotify=true diff --git a/xchat-2.8.8/xchat.ico b/xchat-2.8.8/xchat.ico new file mode 100644 index 0000000000000000000000000000000000000000..e80a99dade3f642dcacd3cf1d1b3a838c9acb0c1 GIT binary patch literal 26694 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 X&4@UdU?&9LC?_!$?}~G%)%*VenU43@ literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/xchat.png b/xchat-2.8.8/xchat.png new file mode 100644 index 0000000000000000000000000000000000000000..814c899d1ddc00cbb9ca7a04b0144f82fc86f52b GIT binary patch literal 3144 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 literal 0 HcmV?d00001 diff --git a/xchat-2.8.8/xchat.spec b/xchat-2.8.8/xchat.spec new file mode 100644 index 0000000..406d986 --- /dev/null +++ b/xchat-2.8.8/xchat.spec @@ -0,0 +1,141 @@ +%define _default_patch_fuzz 2 +%define gconf_version 2.14 + +Summary: A popular and easy to use graphical IRC (chat) client +Name: xchat +Version: 2.8.8 +Release: 0%{?dist} +Epoch: 1 +Group: Applications/Internet +License: GPLv2+ +URL: http://www.xchat.org +Source: http://www.xchat.org/files/source/2.8/xchat-%{version}.tar.bz2 +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) + +# Patches 0-9 reserved for official xchat.org patches + +BuildRequires: perl perl(ExtUtils::Embed) python-devel openssl-devel pkgconfig, tcl-devel +BuildRequires: GConf2-devel +BuildRequires: dbus-devel >= 0.60, dbus-glib-devel >= 0.60 +BuildRequires: glib2-devel >= 2.10.0, gtk2-devel >= 2.10.0, bison >= 1.35 +BuildRequires: gettext /bin/sed +BuildRequires: libtool +BuildRequires: libsexy-devel +BuildRequires: desktop-file-utils >= 0.10 +# For gconftool-2: +Requires(post): GConf2 >= %{gconf_version} +Requires(preun): GConf2 >= %{gconf_version} + +# Ensure that a compatible libperl is installed +Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) + +Provides: xchat-perl = %{epoch}:%{version}-%{release} +Obsoletes: xchat-perl < %{epoch}:%{version}-%{release} +Provides: xchat-python = %{epoch}:%{version}-%{release} +Obsoletes: xchat-python < %{epoch}:%{version}-%{release} + +%description +X-Chat is an easy to use graphical IRC chat client for the X Window System. +It allows you to join multiple IRC channels (chat rooms) at the same time, +talk publicly, private one-on-one conversations etc. Even file transfers +are possible. + +This includes the plugins to run the Perl and Python scripts. + +%package tcl +Summary: Tcl script plugin for X-Chat +Group: Applications/Internet +Requires: %{name} = %{epoch}:%{version}-%{release} +%description tcl +This package contains the X-Chat plugin providing the Tcl scripting interface. + +%prep +%setup -q + +%build +# Remove CVS files from source dirs so they're not installed into doc dirs. +find . -name CVS -type d | xargs rm -rf + +export CFLAGS="$RPM_OPT_FLAGS $(perl -MExtUtils::Embed -e ccopts)" +export LDFLAGS=$(perl -MExtUtils::Embed -e ldopts) + +%configure --disable-textfe \ + --enable-gtkfe \ + --enable-openssl \ + --enable-python \ + --enable-tcl=%{_libdir} \ + --enable-ipv6 \ + --enable-spell=libsexy \ + --enable-shm + +# gtkspell breaks Input Method commit with ENTER + +make %{?_smp_mflags} + + +%install +%{__rm} -rf $RPM_BUILD_ROOT +%{__make} install DESTDIR=$RPM_BUILD_ROOT GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 + +# Get rid of libtool archives +%{__rm} -f $RPM_BUILD_ROOT%{_libdir}/xchat/plugins/*.la + +# Install the .desktop file properly +%{__rm} -f $RPM_BUILD_ROOT%{_datadir}/applications/xchat.desktop +desktop-file-install --vendor="" \ + --dir $RPM_BUILD_ROOT%{_datadir}/applications \ + --add-category=IRCClient \ + --add-category=GTK xchat.desktop + +%find_lang %{name} + +# do not Provide plugins .so +%define _use_internal_dependency_generator 0 +%{__cat} << \EOF > %{name}.prov +#!%{_buildshell} +%{__grep} -v %{_docdir} - | %{__find_provides} $* \ + | %{__sed} '/\.so\(()(64bit)\)\?$/d' +EOF +%define __find_provides %{_builddir}/%{name}-%{version}/%{name}.prov +%{__chmod} +x %{__find_provides} + + +%post +# Install schema +export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source` +gconftool-2 --makefile-install-rule /etc/gconf/schemas/apps_xchat_url_handler.schemas >& /dev/null || : + + +%pre +if [ "$1" -gt 1 ]; then + export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source` + gconftool-2 --makefile-uninstall-rule /etc/gconf/schemas/apps_xchat_url_handler.schemas >& /dev/null || : +fi + +%preun +if [ "$1" -eq 0 ]; then + export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source` + gconftool-2 --makefile-uninstall-rule /etc/gconf/schemas/apps_xchat_url_handler.schemas >& /dev/null || : +fi + +%clean +%{__rm} -rf $RPM_BUILD_ROOT + +%files -f %{name}.lang +%defattr(-,root,root) +%doc README ChangeLog +%doc plugins/plugin20.html plugins/perl/xchat2-perl.html +%{_bindir}/xchat +%dir %{_libdir}/xchat +%dir %{_libdir}/xchat/plugins +%{_libdir}/xchat/plugins/perl.so +%{_libdir}/xchat/plugins/python.so +%{_datadir}/applications/xchat.desktop +%{_datadir}/pixmaps/* +%{_sysconfdir}/gconf/schemas/apps_xchat_url_handler.schemas +%{_datadir}/dbus-1/services/org.xchat.service.service + +%files tcl +%defattr(-,root,root) +%{_libdir}/xchat/plugins/tcl.so +